[
  {
    "path": ".drone.yml",
    "content": "kind: pipeline # 定义对象类型，还有secret和signature两种类型\ntype: docker # 定义流水线类型，还有kubernetes、exec、ssh等类型\nname: cicd # 定义流水线名称\n\nclone:\n  disable: true\n  \nsteps: # 定义流水线执行步骤，这些步骤将顺序执行\n  - name: clone\n    image: alpine/git\n    pull: if-not-exists\n    environment:\n      http_proxy: \n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n    commands:\n    - git config --global core.compression 0\n    - git clone https://github.com/dataelement/bisheng.git .\n    - git checkout $DRONE_COMMIT\n\n  - name: set poetry\n    pull: if-not-exists\n    image: golang\n    environment:\n      RELEASE_VERSION: 99.99.99\n      NEXUS_PUBLIC:\n        from_secret: NEXUS_PUBLIC\n      NEXUS_PUBLIC_PASSWORD:\n        from_secret: NEXUS_PUBLIC_PASSWORD\n      REPO:\n        from_secret: PY_NEXUS\n      PROXY:\n        from_secret: APT-GET\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: bisheng-cache\n        path: /app/build/\n    commands:\n    - cd ./src/backend\n    - echo $REPO\n    - REPO2=$(echo $REPO | sed 's/http:\\\\/\\\\///g')\n    - sed  '/apt-get/ s|$| '\"$PROXY\"'|' Dockerfile\n    - sed -i.bak 's/uv cache clean.*$/ /' Dockerfile\n    - sed -i '6i\\RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - sed -i '7i\\ENV UV_PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - sed -i '8i\\ENV UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - sed -i '9i\\ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - cat Dockerfile\n\n  - name: build_docker\n    pull: if-not-exists\n    image: docker:24.0.6\n    privileged: true\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: apt-cache\n        path: /var/cache/apt/archives # 将应用打包好的Jar和执行脚本挂载出来\n      - name: socket\n        path: /var/run/docker.sock\n      - name: pro-cache\n        path: /root/.local/share/pypoetry\n      - name: uv-cache\n        path: /root/.cache/uv\n    environment:\n      http_proxy:\n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n      no_proxy: 192.168.106.8\n      version: release\n      docker_registry: http://192.168.106.8:6082\n      docker_repo: 192.168.106.8:6082/dataelement/bisheng-backend\n      docker_user:\n        from_secret: NEXUS_USER\n      docker_password:\n        from_secret: NEXUS_PASSWORD\n    commands:\n      - cd ./src/backend/\n      - docker login -u $docker_user -p $docker_password $docker_registry\n      - docker build -t $docker_repo:$version .\n      - docker push $docker_repo:$version\n\n  - name: build_docker_frontend\n    pull: if-not-exists\n    image: docker:24.0.6\n    privileged: true\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: apt-cache\n        path: /var/cache/apt/archives # 将应用打包好的Jar和执行脚本挂载出来\n      - name: socket\n        path: /var/run/docker.sock\n    environment:\n      http_proxy:\n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n      no_proxy: 192.168.106.8\n      version: release\n      docker_registry: http://192.168.106.8:6082\n      docker_repo: 192.168.106.8:6082/dataelement/bisheng-frontend\n      docker_user:\n        from_secret: NEXUS_USER\n      docker_password:\n        from_secret: NEXUS_PASSWORD\n    commands:\n      - cd ./src/frontend/\n      - docker login -u $docker_user -p $docker_password $docker_registry\n      - docker build -t $docker_repo:$version .\n      - docker push $docker_repo:$version\n\n  - name: ssh deploy\n    image: appleboy/drone-ssh\n    pull: if-not-exists\n    settings:\n      host: 192.168.106.116\n      username: root\n      password:\n        from_secret: sshpwd\n      script:\n       - echo =======找到目录=======\n       - cd /opt/server/bisheng-test\n       - echo =======直接启动=======\n       - docker compose pull\n       - docker compose up -d\n\n  - name: notify-start # notify\n    pull: if-not-exists\n    image: plugins/webhook\n    settings:\n      debug: true\n      urls: \n        from_secret: FEISHU_URL\n      content_type: application/json\n      template: |\n        {\n          \"msg_type\": \"interactive\",\n          \"card\": {\n            \"type\": \"template\",\n            \"data\": {\n              \"template_id\": \"AAqkI9bnY5FUs\",\n              \"template_variable\": {\n                \"repo_name\": \"{{ repo.name }}\",\n                \"build_branch\": \"{{build.branch}}\",\n                \"build_author\": \"{{ DRONE_COMMIT_AUTHOR }}\",\n                \"link\": \"{{build.link}}\",\n                \"commit_msg\": \"{{ trim build.message }}\",\n                \"build_tag\":\"{{build.tag}}\",\n                \"build_start\":\"{{build.started}}\",\n                \"status\": \"{{ build.status }}\"\n              }\n            }\n          }\n        }\n    when: # 成功\n      status:\n        - success\ntrigger:\n  branch:\n  - release\n  event:\n  - push\n\nvolumes:\n- name: bisheng-cache\n  host:\n    path: /opt/drone/data/bisheng/\n- name: pro-cache\n  host:\n    path: /opt/drone/data/pro/\n- name: apt-cache\n  host:\n    path: /opt/drone/data/bisheng/apt/\n- name: socket\n  host:\n    path: /var/run/docker.sock\n\n\n---\n\nkind: pipeline # 定义对象类型，还有secret和signature两种类型\ntype: docker # 定义流水线类型，还有kubernetes、exec、ssh等类型\nname: feat_cicd # 定义流水线名称\n\nclone:\n  disable: true\n\nsteps: # 定义流水线执行步骤，这些步骤将顺序执行\n  - name: clone\n    image: alpine/git\n    pull: if-not-exists\n    environment:\n      http_proxy:\n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n    commands:\n    - git config --global core.compression 0\n    - git clone https://github.com/dataelement/bisheng.git .\n    - git checkout $DRONE_COMMIT\n\n  - name: set poetry\n    pull: if-not-exists\n    image: golang\n    environment:\n      NEXUS_PUBLIC:\n        from_secret: NEXUS_PUBLIC\n      NEXUS_PUBLIC_PASSWORD:\n        from_secret: NEXUS_PUBLIC_PASSWORD\n      REPO:\n        from_secret: PY_NEXUS\n      PROXY:\n        from_secret: APT-GET\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: bisheng-cache\n        path: /app/build/\n    commands:\n    - cd ./src/backend\n    - echo $REPO\n    - REPO2=$(echo $REPO | sed 's/http:\\\\/\\\\///g')\n    - sed  '/apt-get/ s|$| '\"$PROXY\"'|' Dockerfile\n    - sed -i '6i\\RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - sed -i '7i\\RUN export UV_PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' Dockerfile\n    - cat Dockerfile\n\n  - name: build_docker\n    pull: if-not-exists\n    image: docker:24.0.6\n    privileged: true\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: apt-cache\n        path: /var/cache/apt/archives # 将应用打包好的Jar和执行脚本挂载出来\n      - name: socket\n        path: /var/run/docker.sock\n      - name: pro-cache\n        path: /root/.local/share/pypoetry\n    environment:\n      http_proxy:\n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n      no_proxy: 192.168.106.8\n      version: ${DRONE_BRANCH}\n      docker_registry: http://192.168.106.8:6082\n      docker_repo: 192.168.106.8:6082/dataelement/bisheng-backend\n      docker_user:\n        from_secret: NEXUS_USER\n      docker_password:\n        from_secret: NEXUS_PASSWORD\n    commands:\n      - echo \"old tag is $version\"\n      - version=$(echo $version | sed 's/\\\\//_/g')\n      - echo \"build image tag is $version\"\n      - cd ./src/backend/\n      - docker login -u $docker_user -p $docker_password $docker_registry\n      - docker build -t $docker_repo:$version .\n      - docker push $docker_repo:$version\n\n  - name: build_docker_frontend\n    pull: if-not-exists\n    image: docker:24.0.6\n    privileged: true\n    volumes: # 将容器内目录挂载到宿主机，仓库需要开启Trusted设置\n      - name: apt-cache\n        path: /var/cache/apt/archives # 将应用打包好的Jar和执行脚本挂载出来\n      - name: socket\n        path: /var/run/docker.sock\n    environment:\n      http_proxy:\n        from_secret: PROXY\n      https_proxy:\n        from_secret: PROXY\n      no_proxy: 192.168.106.8\n      version: ${DRONE_BRANCH}\n      docker_registry: http://192.168.106.8:6082\n      docker_repo: 192.168.106.8:6082/dataelement/bisheng-frontend\n      docker_user:\n        from_secret: NEXUS_USER\n      docker_password:\n        from_secret: NEXUS_PASSWORD\n    commands:\n      - echo \"old tag is $version\"\n      - version=$(echo $version | sed 's/\\\\//_/g')\n      - echo \"build image tag is $version\"\n      - cd ./src/frontend/\n      - docker login -u $docker_user -p $docker_password $docker_registry\n      - docker build -t $docker_repo:$version .\n      - docker push $docker_repo:$version\n\n  - name: notify-start # notify\n    pull: if-not-exists\n    image: plugins/webhook\n    settings:\n      debug: true\n      urls:\n        from_secret: FEISHU_URL\n      content_type: application/json\n      template: |\n        {\n          \"msg_type\": \"interactive\",\n          \"card\": {\n            \"type\": \"template\",\n            \"data\": {\n              \"template_id\": \"AAqkI9bnY5FUs\",\n              \"template_variable\": {\n                \"repo_name\": \"{{ repo.name }}\",\n                \"build_branch\": \"{{build.branch}}\",\n                \"build_author\": \"{{ DRONE_COMMIT_AUTHOR }}\",\n                \"link\": \"{{build.link}}\",\n                \"commit_msg\": \"{{ trim build.message }}\",\n                \"build_tag\":\"{{build.tag}}\",\n                \"build_start\":\"{{build.started}}\",\n                \"status\": \"{{ build.status }}\"\n              }\n            }\n          }\n        }\n    when: # 成功\n      status:\n        - success\ntrigger:\n  branch:\n  - add_some_branch_you_need\n  event:\n  - push\n   \nvolumes:\n- name: bisheng-cache\n  host:\n    path: /opt/drone/data/bisheng/\n- name: pro-cache\n  host:\n    path: /opt/drone/data/pro/\n- name: apt-cache\n  host:\n    path: /opt/drone/data/bisheng/apt/\n- name: socket\n  host:\n    path: /var/run/docker.sock\n"
  },
  {
    "path": ".gitattributes",
    "content": "# 默认：自动识别文本，统一用 LF 存库\n#* text=auto eol=lf\n\n# 明确常见文本文件用 LF\n*.py   text eol=lf\n*.sh   text eol=lf\n*.yml  text eol=lf\n*.yaml text eol=lf\n*.md   text eol=lf\n*.txt  text eol=lf\n*.json text eol=lf\n*.toml text eol=lf\n*.cfg  text eol=lf\n*.ini  text eol=lf\n\n# Windows 脚本保留 CRLF\n*.bat  text eol=crlf\n*.cmd  text eol=crlf\n\n# 二进制：禁止任何换行转换和 diff\n*.png  binary\n*.jpg  binary\n*.jpeg binary\n*.gif  binary\n*.ico  binary\n*.pdf  binary\n*.zip  binary\n*.tar  binary\n*.gz   binary\n*.7z   binary\n*.mp4  binary\n*.docx binary\n*.xlsx binary\n*.pptx binary\n"
  },
  {
    "path": ".github/workflows/base_ci.yml",
    "content": "name: BASE_CI\n\non:\n  push:\n    # Sequence of patterns matched against refs/tags\n    tags:\n      - \"base.v*\"\n\nenv:\n  DOCKERHUB_REPO: dataelement/\n  \nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build_bisheng_arm:\n    runs-on: ubuntu-22.04-arm\n    # if: startsWith(github.event.ref, 'refs/tags')\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}\" >> $GITHUB_ENV\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n      - name: set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n      \n      # because ibm-db driver not support linux arm64\n      - name: fix ibm-db lib error\n        run: |\n          # remove ibm-db lib\n          sed -i '/ibm-db*/d' ./src/backend/pyproject.toml\n\n      - name: Build backend arm64 and push\n        id: docker_build_backend\n        run: |\n          docker buildx build --build-arg PANDOC_ARCH=arm64 --file ./src/backend/base.Dockerfile --platform linux/arm64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 --push ./src/backend/\n  \n  build_bisheng_amd:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n      \n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}\" >> $GITHUB_ENV\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n      \n      - name: Build backend amd64 and push\n        id: docker_build_backend\n        run: |\n          docker buildx build --build-arg PANDOC_ARCH=amd64 --file ./src/backend/base.Dockerfile --platform linux/amd64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 --push ./src/backend/\n  \n  \n  combine_two_images:\n    runs-on: ubuntu-latest\n    needs: \n      - build_bisheng_amd\n      - build_bisheng_arm\n    steps:\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}\" >> $GITHUB_ENV\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n      - name: Combine Two images\n        run: |\n          docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }} ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64\n          docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n      \n      # 获取提交信息\n      - name: Process git message\n        id: process_message\n        run: |\n          value=$(echo \"${{ github.event.head_commit.message }}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\n/%0A/g')\n          value=$(echo \"${value}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\r/%0A/g')\n          echo \"message=${value}\" >> $GITHUB_ENV\n        shell: bash\n\n      # 飞书通知\n      - name: notify feishu\n        uses: fjogeleit/http-request-action@v1\n        with:\n          url: ${{ secrets.FEISHU_WEBHOOK }}\n          method: 'POST'\n          data: '{\"msg_type\":\"post\",\"content\":{\"post\":{\"zh_cn\":{\"title\": \"${{ steps.get_version.outputs.VERSION }}发布成功\",  \"content\": [[{\"tag\":\"text\",\"text\":\"基础镜像\"},{\"tag\":\"text\",\"text\":\"${{ env.message }}\"}]]}}}}'"
  },
  {
    "path": ".github/workflows/build_linux_only.yml",
    "content": "name: Build Linux Binaries (x86_64 & ARM)\n\non:\n  workflow_dispatch:\n  push:\n    tags:\n      - \"build.*\"\n\njobs:\n  build_pyc:\n    name: Build for pyc files only\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          repository: dataelement/bisheng-telemetry-search\n          token: ${{ secrets.CROSS_REPO_TOKEN }}\n          path: bisheng-telemetry-search\n\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: '3.10'\n\n      - name: Build and Clean Artifacts\n        working-directory: ./bisheng-telemetry-search/telemetry_search\n        run: |\n          # 执行构建\n          python -m compileall -b .\n          \n          # 在上传前彻底清理源代码和中间文件\n          # 即使 build_all.py 做了清理，这里再次强制清理，防止 .c 文件泄露\n          find . -name \"*.py\" -delete\n          find . -name \"__pycache__\" -exec rm -rf {} +\n          \n          # 准备输出\n          mkdir ../../build_output\n          cp -r ./* ../../build_output/\n          \n          echo \"Listing artifacts to be uploaded:\"\n          ls -R ../../build_output/\n\n      - name: Upload PYC Artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: telemetry_search\n          path: ./build_output/*\n\n  deploy_to_sso_project:\n    name: Deploy Artifacts to SSO Project\n    needs: [ build_pyc ]\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout SSO Project\n        uses: actions/checkout@v4\n        with:\n          repository: dataelement/bisheng\n          token: ${{ secrets.CROSS_REPO_TOKEN }}\n          # 使用 ref 指定分支，而不是 base\n          ref: feat/2.3.0\n          path: bisheng\n          # 确保拉取完整的历史以便正确提交\n          fetch-depth: 0\n\n      - name: Download PYC Artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: telemetry_search\n          path: ./telemetry_search\n\n      - name: Merge and Place Files\n        run: |\n          \n          find ./telemetry_search -name \"*.py\" -delete\n          \n          # 移动到目标仓库目录\n          cp -r ./telemetry_search ./bisheng/src/backend/bisheng/\n          \n          echo \"Final content of target directory:\"\n          ls -lh ./bisheng/src/backend/bisheng/telemetry_search\n\n      - name: Commit and Push changes\n        working-directory: ./bisheng\n        run: |\n          git config --global user.name \"github-actions[bot]\"\n          git config --global user.email \"github-actions[bot]@users.noreply.github.com\"\n          \n          git add .\n          \n          # 检查是否有变更，有才提交\n          if git diff --staged --quiet; then\n            echo \"No changes to commit\"\n          else\n            git commit -m \"chore: update telemetry_search build artifacts [skip ci]\"\n            git push origin feat/2.3.0\n          fi"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  push:\n    # Sequence of patterns matched against refs/tags\n    tags:\n      - \"v*\"\n\nenv:\n  DOCKERHUB_REPO: dataelement/\n  \nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n        \n  build_bisheng_backend:\n    runs-on: ubuntu-latest\n    # if: startsWith(github.event.ref, 'refs/tags')\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=1.3.1\" >> $GITHUB_ENV\n\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n          \n      # 构建 backend 并推送到 Docker hub\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v1\n\n      - name: set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Build backend and push\n        id: docker_build_backend\n        run: |\n          docker buildx build --file ./src/backend/Dockerfile --platform linux/amd64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 --push ./src/backend/\n      \n  build_backend_arm:\n    runs-on: ubuntu-22.04-arm\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=1.3.1\" >> $GITHUB_ENV\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n  \n      # - name: Set up QEMU\n      #   uses: docker/setup-qemu-action@v1\n\n      - name: set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      # because ibm-db driver not support linux arm64\n      - name: fix ibm-db lib error\n        run: |\n          # remove ibm-db lib\n          sed -i '/ibm-db*/d' ./src/backend/pyproject.toml\n\n      - name: Build backend and push\n        id: docker_build_backend\n        run: |\n          docker buildx build --file ./src/backend/Dockerfile --platform linux/arm64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 --push ./src/backend/\n\n  build_bisheng_frontend:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}\" >> $GITHUB_ENV\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n      - name: Build frontend and push\n        id: docker_build_frontend\n        run: |\n          docker buildx build --file ./src/frontend/Dockerfile --platform linux/amd64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64 --push ./src/frontend/\n\n  build_frontend_arm:\n    runs-on: ubuntu-22.04-arm\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      \n      - name: Set Environment Variable\n        run: echo \"RELEASE_VERSION=${{ steps.get_version.outputs.VERSION }}\" >> $GITHUB_ENV\n\n      # - name: Set up QEMU\n      #   uses: docker/setup-qemu-action@v1\n\n      - name: set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n      - name: Build frontend and push\n        id: docker_build_frontend\n        run: |\n          docker buildx build --file ./src/frontend/Dockerfile --platform linux/arm64 --provenance false --tag ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64 --push ./src/frontend/\n\n  notify_feishu:\n    needs:\n      - build_bisheng_backend\n      - build_backend_arm\n      - build_bisheng_frontend\n      - build_frontend_arm\n    runs-on: ubuntu-latest\n    steps:\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n\n      - name: Process git message\n        id: process_message\n        run: |\n          value=$(echo \"${{ github.event.head_commit.message }}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\n/%0A/g')\n          value=$(echo \"${value}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\r/%0A/g')\n          echo \"message=${value}\" >> $GITHUB_ENV\n        shell: bash\n\n      - name: notify feishu\n        uses: fjogeleit/http-request-action@v1\n        with:\n          url: ${{ secrets.FEISHU_WEBHOOK }}\n          method: 'POST'\n          data: '{\"msg_type\":\"post\",\"content\":{\"post\":{\"zh_cn\":{\"title\": \"${{ steps.get_version.outputs.VERSION }}-amd64镜像预发布成功\",  \"content\": [[{\"tag\":\"text\",\"text\":\"发布功能：\"},{\"tag\":\"text\",\"text\":\"${{ env.message }}\"}]]}}}}'\n  "
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: PublishRelease\n\n# 在github上新建release发行版时触发此CICD，主要是把预发布镜像的tag改为正式镜像的tag，并同步到私有镜像仓库\non:\n  release:\n    types: [published]\n\nenv:\n  DOCKERHUB_REPO: dataelement/\n  \nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  combine_publish_images:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      - name: Echo version\n        id: echo_version\n        run: |\n          echo \"this release is link version: ${{ steps.get_version.outputs.VERSION }}\"\n\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n      - name: Combine two images\n        id: combine_two_images\n        run: |\n          docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }} ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64\n          docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n\n          docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-backend:latest ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64\n          docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-backend:latest\n\n          docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }} ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64\n          docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n\n          docker manifest create ${{ env.DOCKERHUB_REPO }}bisheng-frontend:latest ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64 ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64\n          docker manifest push ${{ env.DOCKERHUB_REPO }}bisheng-frontend:latest\n  \n  sync_dataelem_repos:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      - name: Echo version\n        id: echo_version\n        run: |\n          echo \"this release is link version: ${{ steps.get_version.outputs.VERSION }}\"\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          registry: https://cr.dataelem.com/\n          username: ${{ secrets.CR_DOCKERHUB_USERNAME }}\n          password: ${{ secrets.CR_DOCKERHUB_TOKEN }}\n\n      - name: Sync images\n        id: sync_images\n        run: |\n          echo \"sync backend images\"\n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64\n          \n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-amd64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:latest\n          \n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:latest\n\n          echo \"sync frontend images\"\n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64\n\n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-amd64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:latest\n\n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:latest\n\n          echo \"sync arm image\"\n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64\n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64\n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}-arm64\n\n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64\n          docker tag ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64 cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64\n          docker push cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}-arm64\n          echo \"--- sync over ---\"\n\n  test_pull_images:\n    needs:\n      - combine_publish_images\n      - sync_dataelem_repos\n    runs-on: ubuntu-22.04\n    steps:\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n      - name: Echo version\n        id: echo_version\n        run: |\n          echo \"this release is link version: ${{ steps.get_version.outputs.VERSION }}\"\n      # 登录 cr docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          registry: https://cr.dataelem.com/\n          username: ${{ secrets.CR_DOCKERHUB_USERNAME }}\n          password: ${{ secrets.CR_DOCKERHUB_TOKEN }}\n      # 登录 docker hub\n      - name: Login to DockerHub\n        uses: docker/login-action@v1\n        with:\n          # GitHub Repo => Settings => Secrets 增加 docker hub 登录密钥信息\n          # DOCKERHUB_USERNAME 是 docker hub 账号名.\n          # DOCKERHUB_TOKEN: docker hub => Account Setting => Security 创建.\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n      - name: Test pull images\n        run: |\n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n          docker pull cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n          \n          docker pull ${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n          docker pull cr.dataelem.com/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n\n\n  notify_feishu:\n      needs:\n        - test_pull_images\n      runs-on: ubuntu-latest\n      steps:\n        - name: Get version\n          id: get_version\n          run: |\n            echo ::set-output name=VERSION::${GITHUB_REF/refs\\/tags\\//}\n        \n        - name: Process git message\n          id: process_message\n          run: |\n            value=$(echo \"${{ github.event.head_commit.message }}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\n/%0A/g')\n            value=$(echo \"${value}\" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\\r/%0A/g')\n            echo \"message=${value}\" >> $GITHUB_ENV\n          shell: bash\n\n        - name: notify feishu\n          uses: fjogeleit/http-request-action@v1\n          with:\n            url: ${{ secrets.FEISHU_WEBHOOK }}\n            method: 'POST'\n            data: '{\"msg_type\":\"post\",\"content\":{\"post\":{\"zh_cn\":{\"title\": \"${{ steps.get_version.outputs.VERSION }}镜像发布成功\",  \"content\": [[{\"tag\":\"text\",\"text\":\"发布功能：\"},{\"tag\":\"text\",\"text\":\"${{ env.message }}\"}]]}}}}'\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: test_build\n\non:\n  push:\n    # Sequence of patterns matched against refs/tags\n    branches:\n      - \"develop/*\"\n\nenv:\n  DOCKERHUB_REPO: project/\n  PY_NEXUS: 110.16.193.170:50083\n  DOCKER_NEXUS: 110.16.193.170:50080\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    #if: startsWith(github.event.ref, 'refs/tags')\n    steps:\n      - name: checkout\n        uses: actions/checkout@v2\n\n      - name: Get version\n        id: get_version\n        run: |\n          echo ::set-output name=VERSION::${GITHUB_REF/refs\\/heads\\/develop\\//}\n          echo $GITHUB_REF\n          echo $VERSION\n\n      # 构建 bisheng-langchain\n      - name: Set python version 3.8\n        uses: actions/setup-python@v1\n        with:\n          python-version: 3.8\n\n      # 发布到 私有仓库\n      - name: set insecure registry\n        run: |\n          echo \"{ \\\"insecure-registries\\\": [\\\"http://${{ env.DOCKER_NEXUS }}\\\"] }\" | sudo tee /etc/docker/daemon.json\n          sudo service docker restart\n\n      # - name: Set up QEMU\n      #   uses: docker/setup-qemu-action@v1\n\n      - name: Login Nexus Container Registry\n        uses: docker/login-action@v2\n        with:\n          registry: http://${{ env.DOCKER_NEXUS }}/\n          username: ${{ secrets.NEXUS_USER }}\n          password: ${{ secrets.NEXUS_PASSWORD }}\n\n      # 替换poetry编译为私有服务\n      - name: replace self-host repo\n        uses: snok/install-poetry@v1\n        with:\n          installer-parallel: true\n\n      - name: build lock\n        run: |\n          cd ./src/backend\n          poetry source add --priority=supplemental foo http://${{ secrets.NEXUS_PUBLIC }}:${{ secrets.NEXUS_PUBLIC_PASSWORD }}@${{ env.PY_NEXUS }}/repository/pypi-group/simple\n          poetry lock\n          cd ../../\n\n      # 构建 backend 并推送到 Docker hub\n      - name: Build backend and push\n        id: docker_build_backend\n        uses: docker/build-push-action@v2\n        with:\n          # backend 的context目录\n          context: \"./src/backend/\"\n          # 是否 docker push\n          push: true\n          # docker build arg, 注入 APP_NAME/APP_VERSION\n          build-args: |\n            APP_NAME=\"bisheng-backend\"\n            APP_VERSION=${{ steps.get_version.outputs.VERSION }}\n          # 生成两个 docker tag: ${APP_VERSION} 和 latest\n          tags: |\n            ${{ env.DOCKER_NEXUS }}/${{ env.DOCKERHUB_REPO }}bisheng-backend:${{ steps.get_version.outputs.VERSION }}\n      # 构建 Docker frontend 并推送到 Docker hub\n      - name: Build frontend and push\n        id: docker_build_frontend\n        uses: docker/build-push-action@v2\n        with:\n          # frontend 的context目录\n          context: \"./src/frontend/\"\n          # 是否 docker push\n          push: true\n          # docker build arg, 注入 APP_NAME/APP_VERSION\n          build-args: |\n            APP_NAME=\"bisheng-frontend\"\n            APP_VERSION=${{ steps.get_version.outputs.VERSION }}\n          # 生成两个 docker tag: ${APP_VERSION} 和 latest\n          tags: |\n            ${{ env.DOCKER_NEXUS }}/${{ env.DOCKERHUB_REPO }}bisheng-frontend:${{ steps.get_version.outputs.VERSION }}\n      "
  },
  {
    "path": ".gitignore",
    "content": "# This is to avoid Opencommit hook from getting pushed\nprepare-commit-msg\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\nqdrant_storage\nautogen_coding/\n\n# Mac\n.DS_Store\n\n# VSCode\n.vscode\n.vscode/settings.json\n.chroma\n.ruff_cache\n.isort.cfg\n.idea/\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n.isort.cfg\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n# *.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# Next.js build output\n.next\n\n# Nuxt.js build / generate output\n.nuxt\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and *not* Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\nnotebooks\n\n# Distribution / packaging\n.Python\nbuild/\n./third_party\ndevelop-eggs/\nconfig.dev.yaml\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Poetry\n.testenv/*\npoetry.lock\n\n.githooks/prepare-commit-msg\n.langchain.db\n\n# docusaurus\n.docusaurus/\n\nsftp-config.json\n\n/tmp/*\nsftp-config.json\n\n# Docker local files\ndocker/data/*\ndocker/mysql/data/*\ndocker/office/bisheng/*.gz\n\nCLAUDE.md\n!src/backend/bisheng/telemetry_search/**/*.pyc\n"
  },
  {
    "path": ".gitmodules",
    "content": ""
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "exclude: ^scripts|docs|docker|requirements|README.md|test|experimental\nrepos:\n  - repo: https://github.com/PyCQA/flake8.git\n    rev: 3.8.3\n    hooks:\n      - id: flake8\n        args: [\"--max-line-length=120\"]\n  - repo: https://github.com/asottile/seed-isort-config\n    rev: v2.2.0\n    hooks:\n      - id: seed-isort-config\n  - repo: https://github.com/timothycrosley/isort\n    rev: 4.3.21\n    hooks:\n      - id: isort\n        files: \\.(py|pyd)$\n        args: [\"-l 100\"]\n  - repo: https://github.com/pre-commit/mirrors-yapf\n    rev: v0.32.0\n    hooks:\n      - id: yapf\n        files: \\.(py|pyd)$\n        args: [\"--style={column_limit: 120}\"]\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v3.1.0\n    hooks:\n      - id: trailing-whitespace\n        files: \\.(py|pyd)$\n      - id: check-yaml\n      - id: end-of-file-fixer\n        files: \\.(py|pyd)$\n      - id: requirements-txt-fixer\n      - id: double-quote-string-fixer\n      - id: check-merge-conflict\n      - id: fix-encoding-pragma\n        args: [\"--remove\"]\n      - id: mixed-line-ending\n        args: [\"--fix=lf\"]\n        files: \\.(py|pyd)$\n  # - repo: https://github.com/jumanjihouse/pre-commit-hooks\n  #   rev: 2.1.4\n  #   hooks:\n  #     - id: markdownlint\n  #       args: [\"-r\", \"~MD002,~MD013,~MD029,~MD033,~MD034,~MD005\"]\n  # - repo: https://github.com/myint/docformatter\n  #   rev: v1.3.1\n  #   hooks:\n  #     - id: docformatter\n  #       args: [\"--in-place\", \"--wrap-descriptions\", \"79\"]\n  - repo: local\n    hooks:\n      - id: clang-format\n        name: clang-format\n        description: Format files with ClangFormat\n        entry: clang-format -i\n        language: system\n        files: \\.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our\ncommunity a harassment-free experience for everyone, regardless of age, body\nsize, visible or invisible disability, ethnicity, sex characteristics, gender\nidentity and expression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, caste, color, religion, or sexual\nidentity and orientation.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming,\ndiverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our\ncommunity include:\n\n* Demonstrating empathy and kindness toward other people\n* Being respectful of differing opinions, viewpoints, and experiences\n* Giving and gracefully accepting constructive feedback\n* Accepting responsibility and apologizing to those affected by our mistakes,\n  and learning from the experience\n* Focusing on what is best not just for us as individuals, but for the overall\n  community\n\nExamples of unacceptable behavior include:\n\n* The use of sexualized language or imagery, and sexual attention or advances of\n  any kind\n* Trolling, insulting or derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or email address,\n  without their explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Enforcement Responsibilities\n\nCommunity leaders are responsible for clarifying and enforcing our standards of\nacceptable behavior and will take appropriate and fair corrective action in\nresponse to any behavior that they deem inappropriate, threatening, offensive,\nor harmful.\n\nCommunity leaders have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are\nnot aligned to this Code of Conduct, and will communicate reasons for moderation\ndecisions when appropriate.\n\n## Scope\n\nThis Code of Conduct applies within all community spaces, and also applies when\nan individual is officially representing the community in public spaces.\nExamples of representing our community include using an official e-mail address,\nposting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported to the community leaders responsible for enforcement at\ncodeofconduct@globalsecuritydatabase.org.\nAll complaints will be reviewed and investigated promptly and fairly.\n\nAll community leaders are obligated to respect the privacy and security of the\nreporter of any incident.\n\n## Enforcement Guidelines\n\nCommunity leaders will follow these Community Impact Guidelines in determining\nthe consequences for any action they deem in violation of this Code of Conduct:\n\n### 1. Correction\n\n**Community Impact**: Use of inappropriate language or other behavior deemed\nunprofessional or unwelcome in the community.\n\n**Consequence**: A private, written warning from community leaders, providing\nclarity around the nature of the violation and an explanation of why the\nbehavior was inappropriate. A public apology may be requested.\n\n### 2. Warning\n\n**Community Impact**: A violation through a single incident or series of\nactions.\n\n**Consequence**: A warning with consequences for continued behavior. No\ninteraction with the people involved, including unsolicited interaction with\nthose enforcing the Code of Conduct, for a specified period of time. This\nincludes avoiding interactions in community spaces as well as external channels\nlike social media. Violating these terms may lead to a temporary or permanent\nban.\n\n### 3. Temporary Ban\n\n**Community Impact**: A serious violation of community standards, including\nsustained inappropriate behavior.\n\n**Consequence**: A temporary ban from any sort of interaction or public\ncommunication with the community for a specified period of time. No public or\nprivate interaction with the people involved, including unsolicited interaction\nwith those enforcing the Code of Conduct, is allowed during this period.\nViolating these terms may lead to a permanent ban.\n\n### 4. Permanent Ban\n\n**Community Impact**: Demonstrating a pattern of violation of community\nstandards, including sustained inappropriate behavior, harassment of an\nindividual, or aggression toward or disparagement of classes of individuals.\n\n**Consequence**: A permanent ban from any sort of public interaction within the\ncommunity.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage],\nversion [v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).\n\nCommunity Impact Guidelines were inspired by\n[Mozilla's code of conduct enforcement ladder][Mozilla CoC].\n\nFor answers to common questions about this code of conduct, see the FAQ at\n[FAQ](https://www.contributor-covenant.org/faq). Translations are available at\n[translations](https://www.contributor-covenant.org/translations)\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      the copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by the Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributors that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, the Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assuming any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your behalf and Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright © 2024 Dataelement Technologies, Inc\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "**Proudly made by Chinese，May we, like the creators of Deepseek and Black Myth: Wukong, bring more wonder and greatness to the world.**\n\n> 源自中国匠心，希望我们能像 [Deepseek]、[黑神话：悟空] 团队一样，给世界带来更多美好。\n\n<img src=\"https://dataelem.com/bs/face.png\" alt=\"Bisheng banner\">\n\n<p align=\"center\">\n    <a href=\"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"><img src=\"https://img.shields.io/badge/docs-Wiki-brightgreen\"></a>\n    <img src=\"https://img.shields.io/github/license/dataelement/bisheng\" alt=\"license\"/>\n    <a href=\"\"><img src=\"https://img.shields.io/github/last-commit/dataelement/bisheng\"></a>\n    <a href=\"https://star-history.com/#dataelement/bisheng&Timeline\"><img src=\"https://img.shields.io/github/stars/dataelement/bisheng?color=yellow\"></a> \n</p>\n<p align=\"center\">\n  <a href=\"./README_CN.md\">简体中文</a> |\n  <a href=\"./README.md\">English</a> |\n  <a href=\"./README_JPN.md\">日本語</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/717\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/717\" alt=\"dataelement%2Fbisheng | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n<div class=\"column\" align=\"middle\">\n  <!-- <a href=\"https://bisheng.slack.com/join/shared_invite/\"> -->\n    <!-- <img src=\"https://img.shields.io/badge/Join-Slack-orange\" alt=\"join-slack\"/> -->\n  </a>\n  <!-- <img src=\"https://img.shields.io/github/license/bisheng-io/bisheng\" alt=\"license\"/> -->\n  <!-- <img src=\"https://img.shields.io/docker/pulls/bisheng-io/bisheng\" alt=\"docker-pull-count\" /> -->\n</div>\n\n\nBISHENG is an open LLM application devops platform, focusing on enterprise scenarios. It has been used by a large number of industry leading organizations and Fortune 500 companies.\n\n\"Bi Sheng\" was the inventor of movable type printing, which played a vital role in promoting the transmission of human knowledge. We hope that BISHENG can also provide strong support for the widespread implementation of intelligent applications. Everyone is welcome to participate.\n\n\n## Features \n1. **Lingsight, a general-purpose agent with expert-level taste**: Through the [AGL](https://github.com/dataelement/AgentGuidanceLanguage)(Agent Guidance Language) framework, we embed domain experts’ preferences, experience, and business logic into the AI, enabling the agent to exhibit “expert-level understanding” when handling tasks.  \n<p align=\"center\"><img src=\"https://dataelem.com/bs/Linsight.png\" alt=\"sence1\"></p>   \n\n2. **Unique [BISHENG Workflow](https://dataelem.feishu.cn/wiki/R7HZwH5ZGiJUDrkHZXicA9pInif)**\n   - 🧩 **Independent and comprehensive application orchestration framework**: Enables the execution of various tasks within a single framework (while similar products rely on bot invocation or separate chatflow and workflow modules for different tasks).\n   - 🔄 **Human in the loop**: Allows users to intervene and provide feedback during the execution of workflows (including multi-turn conversations), whereas similar products can only execute workflows from start to finish without intervention.\n   - 💥 **Powerful**: Supports loops, parallelism, batch processing, conditional logic, and free combination of all logic components. It also handles complex scenarios such as multi-type input/output, report generation, content review, and more.\n   - 🖐️ **User-friendly and intuitive**: Operations like loops, parallelism, and batch processing, which require specialized components in similar products, can be easily visualized in BISHENG as a \"flowchart\" (drawing a loop forms a loop, aligning elements creates parallelism, and selecting multiple items enables batch processing).\n   <p align=\"center\"><img src=\"https://dataelem.com/bs/bisheng_workflow.png\" alt=\"sence0\"></p>\n\n3. <b>Designed for Enterprise Applications</b>: Document review, fixed-layout report generation, multi-agent collaboration, policy update comparison, support ticket assistance, customer service assistance, meeting minutes generation, resume screening, call record analysis, unstructured data governance, knowledge mining, data analysis, and more.   \nThe platform supports the construction of <b>highly complex enterprise application scenarios</b> and offers <b>deep optimization</b> \twith hundreds of components and thousands of parameters.\n<p align=\"center\"><img src=\"https://dataelem.com/bs/chat.png\" alt=\"sence1\"></p>\n\n4. <b>Enterprise-grade</b> features are the fundamental guarantee for application implementation: security review, RBAC, user group management, traffic control by group, SSO/LDAP, vulnerability scanning and patching, high availability deployment solutions, monitoring, statistics, and more.\n<p align=\"center\"><img src=\"https://dataelem.com/bs/pro.png\" alt=\"sence2\"></p>\n\n5. <b>High-Precision Document Parsing</b>: Our high-precision document parsing model is trained on a vast amount of high-quality data accumulated over past 5 years. It includes high-precision printed text, handwritten text, and rare character recognition models, table recognition models, layout analysis models, and seal models., table recognition models, layout analysis models, and seal models. You can deploy it privately for free.\n<p align=\"center\"><img src=\"https://dataelem.com/bs/ocr.png\" alt=\"sence3\"></p>\n\n6. A community for sharing best practices across various enterprise scenarios: An open repository of application cases and best practices.\n## Quick start \n\nPlease ensure the following conditions are met before installing BISHENG:\n- CPU >= 4 Virtual Cores\n- RAM >= 16 GB\n- Docker 19.03.9+\n- Docker Compose 1.25.1+\n> Recommended hardware condition: 18 virtual cores, 48G. In addition to installing BISHENG, we will also install the following third-party components by default: ES, Milvus, and Onlyoffice.\n\nDownload BISHENG\n```bash\ngit clone https://github.com/dataelement/bisheng.git\n# Enter the installation directory\ncd bisheng/docker\n\n# If the system does not have the git command, you can download the BISHENG code as a zip file.\nwget https://github.com/dataelement/bisheng/archive/refs/heads/main.zip\n# Unzip and enter the installation directory\nunzip main.zip && cd bisheng-main/docker\n```\nStart BISHENG\n```bash\ndocker compose -f docker-compose.yml -p bisheng up -d\n```\nAfter the startup is complete, access http://IP:3001 in the browser. The login page will appear, proceed with user registration. \n\nBy default, the first registered user will become the system admin. \n\nFor more installation and deployment issues, refer to:：[Self-hosting](https://dataelem.feishu.cn/wiki/BSCcwKd4Yiot3IkOEC8cxGW7nPc)\n\n## Acknowledgement \nThis repo benefits from [langchain](https://github.com/langchain-ai/langchain) [langflow](https://github.com/logspace-ai/langflow) [unstructured](https://github.com/Unstructured-IO/unstructured) and [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) . Thanks for their wonderful works.\n\n<b>Thank you to our contributors：</b>\n\n<a href=\"https://github.com/dataelement/bisheng/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=dataelement/bisheng\" />\n</a>\n\n\n\n## Community & contact \nWelcome to join our discussion group\n\n<img src=\"https://www.dataelem.com/nstatic/qrcode.png\" alt=\"Wechat QR Code\">\n\n\n<!--\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=dataelement/bisheng&type=Date)](https://star-history.com/#dataelement/bisheng&Date)\n-->\n"
  },
  {
    "path": "README_CN.md",
    "content": "<img src=\"https://dataelem.com/bs/face.png\" alt=\"Bisheng banner\">\n\n<p align=\"center\">\n    <a href=\"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"><img src=\"https://img.shields.io/badge/docs-Wiki-brightgreen\"></a>\n    <img src=\"https://img.shields.io/github/license/dataelement/bisheng\" alt=\"license\"/>\n    <img src=\"https://img.shields.io/docker/pulls/dataelement/bisheng-frontend\" alt=\"docker-pull-count\" />\n    <a href=\"\"><img src=\"https://img.shields.io/github/last-commit/dataelement/bisheng\"></a>\n    <a href=\"https://star-history.com/#dataelement/bisheng&Timeline\"><img src=\"https://img.shields.io/github/stars/dataelement/bisheng?color=yellow\"></a> \n</p>\n<p align=\"center\">\n  <a href=\"./README_CN.md\">简体中文</a> |\n  <a href=\"./README.md\">English</a> |\n  <a href=\"./README_JPN.md\">日本語</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/717\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/717\" alt=\"dataelement%2Fbisheng | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n<div class=\"column\" align=\"middle\">\n  <!-- <a href=\"https://bisheng.slack.com/join/shared_invite/\"> -->\n    <!-- <img src=\"https://img.shields.io/badge/Join-Slack-orange\" alt=\"join-slack\"/> -->\n  </a>\n  <!-- <img src=\"https://img.shields.io/github/license/bisheng-io/bisheng\" alt=\"license\"/> -->\n  <!-- <img src=\"https://img.shields.io/docker/pulls/bisheng-io/bisheng\" alt=\"docker-pull-count\" /> -->\n</div>\n\n\nBISHENG毕昇 是一款 <b>开源</b> LLM应用开发平台，主攻<b>企业场景</b>， 已有大量行业头部组织及世界500强企业在使用。\n\n“毕昇”是活字印刷术的发明人，活字印刷术为人类知识的传递起到了巨大的推动作用。我们希望“BISHENG毕昇”同样能够为智能应用的广泛落地提供有力支撑。欢迎大家一道参与。\n\n\n## 特点 \n1. **具备专家级品味的通用Agent灵思**：通过 [AGL](https://github.com/dataelement/AgentGuidanceLanguage)（Agent Guidance Language）框架，将领域专家的偏好、经验与业务逻辑融入 AI 之中，让 Agent 在处理任务时能具备 「专家级理解」。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/Linsight.png\" alt=\"sence1\"></p>  \n\n2. **独具特色的[BISHENG workflow](https://dataelem.feishu.cn/wiki/R7HZwH5ZGiJUDrkHZXicA9pInif)**\n   \n   - 🧩 **独立、完备的应用编排框架**：可在一个框架下实现各类任务（同类产品需要被 bot 调用，或划分成 chatflow 与 workflow 来完成不同类型的任务）。\n   - 🔄 **Human in the loop**：支持用户在Workflow执行的中间过程进行干预和反馈（包括多轮对话），而同类产品只能从头执行到尾。\n   - 💥 **强大**：支持成环、并行、跑批、判断逻辑以及所有逻辑的任意自由组合；支持多类型输入输出、撰写报告、内容审核等复杂场景。\n   - 🖐️ **易用、符合直觉**：如成环、并行、批量运行操作，在同类产品中用户需借助专门组件实现，在BISHENG中只需完全按照直觉连接成“流程图”即可（画圈成环、并列即并行、多选即批量）。\n   <p align=\"center\"><img src=\"https://dataelem.com/bs/bisheng_workflow.png\" alt=\"sence0\"></p>\n\n3. **专为企业应用而生**：文档审核、固定版式报告生成、多智能体协作、规范制度更新差异比对、工单问答、客服辅助、会议纪要生成、简历筛选、通话记录分析、非结构化数据治理、知识挖掘、数据分析...平台支持高复杂度企业应用场景构建，支持数百个组件与数千个参数的深度调优。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/chat.png\" alt=\"sence1\"></p>\n\n4. **企业级特性是应用落地的基本保障**：安全审查、基于角色的细颗粒度权限管理、用户组管理、分组流量控制、SSO/LDAP、漏洞扫描修复、高可用部署方案、监控、统计...\n<p align=\"center\"><img src=\"https://dataelem.com/bs/pro.png\" alt=\"sence2\"></p>\n\n5. **高精度文档解析**：5年海量数据沉淀，高精度文档解析模型支持免费私有化部署使用，包括高精度印刷体、手写体与生僻字识别模型、表格识别模型、版式分析模型、印章模型...\n<p align=\"center\"><img src=\"https://dataelem.com/bs/ocr.png\" alt=\"sence3\"></p>\n\n6. **大量企业场景落地最佳实践分享社区**：开放的应用案例与最佳实践库。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/sence.png\" alt=\"sence4\"></p>\n\n\n## 快速安装 \n\n安装BISHENG前请先确保满足以下条件：\n- CPU >= 8 Core\n- RAM >= 32 GB\n- Docker 19.03.9+\n- Docker Compose 1.25.1+\n> 除了BISHENG前后端，我们默认还会安装第三方组件ES、Milvus、Onlyoffice\n\n下载BISHENG代码\n```bash\n# 如果系统中有git命令，可以直接下载毕昇代码\ngit clone https://github.com/dataelement/bisheng.git\n# 进入安装目录\ncd bisheng/docker\n\n# 如果系统没有没有git命令，可以下载毕昇代码zip包\nwget https://github.com/dataelement/bisheng/archive/refs/heads/main.zip\n# 解压并进入安装目录\nunzip main.zip && cd bisheng-main/docker\n```\n启动BISHENG\n```bash\n# 进入bisheng/docker或bisheng-main/docker目录，执行\ndocker compose -f docker-compose.yml -p bisheng up -d\n```\n启动后，在浏览器中访问 http://IP:3001 ，出现登录页，进行用户注册。默认第一个注册的用户会成为系统admin。\n\n其他安装部署问题参考：[私有化部署](https://dataelem.feishu.cn/wiki/BSCcwKd4Yiot3IkOEC8cxGW7nPc)\n\n\n## 资源\n- [📄应用案例/场景库](https://dataelem.feishu.cn/wiki/ZfkmwLPfeiAhQSkK2WvcX87unxc)\n- [📄经验技巧](https://dataelem.feishu.cn/wiki/OWFRwknFaiIMajke4m5cFeLrnie)\n- [📄功能使用说明](https://dataelem.feishu.cn/wiki/WxH6wubbAiBkRIkSEyecmpDMnjF)\n- [📄BISHENG Blog](https://dataelem.feishu.cn/wiki/BiNowcaYWilewdksXQ5cZl3tnzy)\n\n\n## 感谢 \n\n感谢我们的贡献者：\n\n<a href=\"https://github.com/dataelement/bisheng/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=dataelement/bisheng\" />\n</a>\n\n\n<br>\nBisheng 采用了以下依赖库:\n\n- 感谢开源LLM应用开发库 [langchain](https://github.com/langchain-ai/langchain)。\n- 感谢开源langchain可视化工具 [langflow](https://github.com/logspace-ai/langflow)。\n- 感谢开源非结构化数据解析引擎 [unstructured](https://github.com/Unstructured-IO/unstructured)。\n- 感谢开源LLM微调框架 [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) 。\n\n\n## 社区与支持 \n欢迎加入我们的交流群\n\n<img src=\"https://www.dataelem.com/nstatic/qrcode.png\" alt=\"Wechat QR Code\">\n\n\n<!--\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=dataelement/bisheng&type=Date)](https://star-history.com/#dataelement/bisheng&Date)\n-->\n"
  },
  {
    "path": "README_JPN.md",
    "content": "以下は、あなたが提供したMarkdownコンテンツの日本語翻訳です。\n\n---\n\n<img src=\"https://dataelem.com/bs/face.png\" alt=\"Bisheng banner\">\n\n<p align=\"center\">\n    <a href=\"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"><img src=\"https://img.shields.io/badge/docs-Wiki-brightgreen\"></a>\n    <img src=\"https://img.shields.io/github/license/dataelement/bisheng\" alt=\"license\"/>\n    <img src=\"https://img.shields.io/docker/pulls/dataelement/bisheng-frontend\" alt=\"docker-pull-count\" />\n    <a href=\"\"><img src=\"https://img.shields.io/github/last-commit/dataelement/bisheng\"></a>\n    <a href=\"https://star-history.com/#dataelement/bisheng&Timeline\"><img src=\"https://img.shields.io/github/stars/dataelement/bisheng?color=yellow\"></a> \n</p>\n<p align=\"center\">\n  <a href=\"./README_CN.md\">简体中文</a> |\n  <a href=\"./README.md\">English</a> |\n  <a href=\"./README_JPN.md\">日本語</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/717\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/717\" alt=\"dataelement%2Fbisheng | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n<div class=\"column\" align=\"middle\">\n  <!-- <a href=\"https://bisheng.slack.com/join/shared_invite/\"> -->\n    <!-- <img src=\"https://img.shields.io/badge/Join-Slack-orange\" alt=\"join-slack\"/> -->\n  </a>\n  <!-- <img src=\"https://img.shields.io/github/license/bisheng-io/bisheng\" alt=\"license\"/> -->\n  <!-- <img src=\"https://img.shields.io/docker/pulls/bisheng-io/bisheng\" alt=\"docker-pull-count\" /> -->\n</div>\n\nBISHENGは、エンタープライズシナリオに焦点を当てたオープンなLLMアプリケーションDevOpsプラットフォームです。多くの業界リーディング企業やフォーチュン500企業で使用されています。\n\n「畢昇（Bi Sheng）」は、活版印刷の発明者であり、人類の知識の伝播に重要な役割を果たしました。我々は、BISHENGがインテリジェントアプリケーションの広範な実装に強力なサポートを提供できることを願っています。皆さんの参加を歓迎します。\n\n## 特徴\n1. **専門家級のセンスを備えた汎用エージェント「灵思」：**：[AGL](https://github.com/dataelement/AgentGuidanceLanguage)（Agent Guidance Language）フレームワークを通じて、分野の専門家の志向・経験・業務ロジックをAIに組み込み、エージェントがタスク処理時に「専門家レベルの理解」を備えられるようにします。  \n<p align=\"center\"><img src=\"https://dataelem.com/bs/Linsight.png\" alt=\"sence1\"></p>    \n\n2. **独自の特徴を持つ[BISHENG workflow](https://dataelem.feishu.cn/wiki/R7HZwH5ZGiJUDrkHZXicA9pInif)**\n   \n   - 🧩 **独立性と完備性を備えたアプリケーションオーケストレーションフレームワーク**：1つのフレームワーク内でさまざまなタスクを実現可能（類似製品では、botの呼び出しが必要だったり、chatflowとworkflowに分けて異なるタスクを処理する必要があります）。\n   - 🔄 **Human in the loop**：Workflowの実行途中でユーザーが介入やフィードバック（多ターン対話を含む）を行えます（類似製品では最初から最後まで一貫して実行されるのみ）。\n   - 💥 **強力な機能**：ループ化、並列処理、一括処理、条件分岐ロジック、さらにこれら全ての自由な組み合わせが可能です。多種類の入出力、レポート作成、コンテンツ審査といった複雑なシナリオも対応可能。\n   - 🖐️ **直感的で使いやすい**：類似製品では専用のコンポーネントを使用する必要があるループ化、並列処理、一括処理操作も、BISHENGでは直感的に「フローチャート」として接続するだけで実現可能です（円を描けばループ化、並列に配置すれば並列処理、複数選択すれば一括処理）。\n\n   <p align=\"center\"><img src=\"https://dataelem.com/bs/bisheng_workflow.png\" alt=\"sence0\"></p>\n   \n3. **エンタープライズアプリケーション向けに設計**: ドキュメントレビュー、固定レイアウトレポート生成、マルチエージェント協働、ポリシー更新比較、サポートチケット支援、カスタマーサービス支援、会議議事録生成、履歴書スクリーニング、通話記録分析、非構造化データガバナンス、知識採掘、データ分析など。プラットフォームは、**高度に複雑なエンタープライズアプリケーションシナリオの構築**をサポートし、**深い最適化**を行い、数百のコンポーネントと数千のパラメータを提供します。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/chat.png\" alt=\"sence1\"></p>\n\n4. **エンタープライズグレード**の機能は、アプリケーション実装の基本的な保証です: セキュリティレビュー、RBAC、ユーザーグループ管理、グループごとのトラフィックコントロール、SSO/LDAP、脆弱性スキャンとパッチ適用、高可用性デプロイメントソリューション、モニタリング、統計など。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/pro.png\" alt=\"sence2\"></p>\n\n5. **高精度ドキュメント解析**: 私たちの高精度ドキュメント解析モデルは、過去5年間にわたる大量の高品質データに基づいてトレーニングされています。高精度な印刷テキスト、手書きテキスト、稀少文字認識モデル、テーブル認識モデル、レイアウト解析モデル、印鑑モデルを含みます。プライベートに無料で展開することができます。\n<p align=\"center\"><img src=\"https://dataelem.com/bs/ocr.png\" alt=\"sence3\"></p>\n\n6. 様々なエンタープライズシナリオにおけるベストプラクティスを共有するコミュニティ: オープンなアプリケーションケースとベストプラクティスのリポジトリ。\n\n\n## クイックスタート\n\nBISHENGをインストールする前に、以下の条件を満たしていることを確認してください:\n- CPU >= 8 コア\n- RAM >= 32 GB\n- Docker 19.03.9以上\n- Docker Compose 1.25.1以上\n\n> BISHENGをインストールする際、デフォルトで以下のサードパーティコンポーネントもインストールされます: ES, Milvus, Onlyoffice。\n\nBISHENGのダウンロード\n```bash\ngit clone https://github.com/dataelement/bisheng.git\n# インストールディレクトリに移動\ncd bisheng/docker\n\n# システムにgitコマンドがない場合は、BISHENGのコードをzipファイルとしてダウンロードできます。\nwget https://github.com/dataelement/bisheng/archive/refs/heads/main.zip\n# 解凍してインストールディレクトリに移動\nunzip main.zip && cd bisheng-main/docker\n```\n\nBISHENGの起動\n```bash\ndocker compose -f docker-compose.yml -p bisheng up -d\n```\n\n起動完了後、ブラウザでhttp://IP:3001にアクセスします。ログインページが表示されるので、ユーザー登録を行います。\n\nデフォルトでは、最初に登録されたユーザーがシステム管理者となります。\n\n詳細なインストールおよびデプロイに関する問題は、こちらを参照してください：[私有化部署](https://dataelem.feishu.cn/wiki/BSCcwKd4Yiot3IkOEC8cxGW7nPc)\n\n## 謝辞\nこのリポジトリは [langchain](https://github.com/langchain-ai/langchain) [langflow](https://github.com/logspace-ai/langflow) [unstructured](https://github.com/Unstructured-IO/unstructured) および [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) の恩恵を受けています。素晴らしい作品に感謝します。\n\n**貢献者に感謝します：**\n\n<a href=\"https://github.com/dataelement/bisheng/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=dataelement/bisheng\" />\n</a>\n\n## コミュニティと連絡先\nディスカッショングループへの参加を歓迎します。\n\n<img src=\"https://www.dataelem.com/nstatic/qrcode.png\" alt=\"Wechat QR Code\">\n\n---\n\nこの翻訳を使用して、Markdownファイルを作成できます。\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Reporting Security Issues\n\nWe take the security of our project seriously. If you believe you have found a security vulnerability, please report it to us privately. **Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.**\n\n> **Important Note**: Any code within the `classic/` folder is considered legacy, unsupported, and out of scope for security reports. We will not address security vulnerabilities in this deprecated code.\n\nInstead, please report them via:\n- [GitHub Security Advisory](https://github.com/dataelement/bisheng/security/advisories/new)\n<!--- [Huntr.dev](https://huntr.com/repos/significant-gravitas/autogpt) - where you may be eligible for a bounty-->\n\n### Reporting Process\n1. **Submit Report**: Use one of the above channels to submit your report\n2. **Response Time**: Our team will acknowledge receipt of your report within 14 business days.\n3. **Collaboration**: We will collaborate with you to understand and validate the issue\n4. **Resolution**: We will work on a fix and coordinate the release process\n\n\n### Disclosure Policy\n- Please provide detailed reports with reproducible steps\n- Include the version/commit hash where you discovered the vulnerability\n- Allow us a 90-day security fix window before any public disclosure\n- Share any potential mitigations or workarounds if known\n\n## Supported Versions\nOnly the following versions are eligible for security updates:\n\n| Version | Supported |\n|---------|-----------|\n| Latest release on master branch | ✅ |\n| Development commits (pre-master) | ✅ |\n| Classic folder (deprecated) | ❌ |\n| All other versions | ❌ |\n\n\n\n---\nLast updated: November 2024\n"
  },
  {
    "path": "docker/bisheng/config/config.yaml",
    "content": "# 数据库配置， 当前加密串的密码是1234，\n# 密码加密参考 https://dataelem.feishu.cn/wiki/BSCcwKd4Yiot3IkOEC8cxGW7nPc#Gxitd1xEeof1TzxdhINcGS6JnXd\ndatabase_url:\n  \"mysql+pymysql://root:gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==@mysql:3306/bisheng?charset=utf8mb4\"\n\n# 缓存配置  redis://[[username]:[password]]@localhost:6379/0\n# 如果设置了密码，需要参考MySQL密码的加密逻辑对密码进行加密。eg: redis://root:gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==@redis:6379/0\n# 普通模式:\nredis_url: \"redis://redis:6379/1\"\n\n# 集群模式或者哨兵模式（只能选其一）:\n# redis_url: \n#   mode: \"cluster\"\n#   startup_nodes: \n#     - {\"host\": \"192.168.106.115\", \"port\": 6002}\n#   password: encrypt(gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==)\n#   #sentinel\n#   mode: \"sentinel\"\n#   sentinel_hosts: [(\"redis\", 6379)]\n#   sentinel_master: \"mymaster\"\n#   sentinel_password: encrypt(gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==)\n#   db: 1\n\n# celery的broken地址\ncelery_redis_url: \"redis://redis:6379/2\"\ncelery_task:\n  # 对celery熟悉的用户可以自定义配置任务的路由，启动不同类型的worker处理不同类型的异步任务。注意工作流的执行只能在一个进程内！！！\n  task_routers:\n    bisheng.worker.knowledge.*: # 知识库文件处理相关任务\n      queue: knowledge_celery\n    bisheng.worker.workflow.*: # 工作流相关任务\n      queue: workflow_celery\n\n# 知识库的milvus和es配置  支持使用 !env ${PATH} 填写环境变量的值, 若环境变量不存在则会报错\nvector_stores:\n  milvus:\n    connection_args: !env ${BS_MILVUS_CONNECTION_ARGS}\n    is_partition: !env ${BS_MILVUS_IS_PARTITION}\n    partition_suffix: !env ${BS_MILVUS_PARTITION_SUFFIX}\n  elasticsearch:\n    url: !env ${BS_ELASTICSEARCH_URL}\n    ssl_verify: !env ${BS_ELASTICSEARCH_SSL_VERIFY}\n\n\n# 对象存储， 目前只支持minio\nobject_storage:\n  type: minio\n  minio:\n    schema: !env ${BS_MINIO_SCHEMA}\n    cert_check: !env ${BS_MINIO_CERT_CHECK}\n    endpoint: !env ${BS_MINIO_ENDPOINT}\n    sharepoint: !env ${BS_MINIO_SHAREPOINT}\n    access_key: !env ${BS_MINIO_ACCESS_KEY}\n    secret_key: !env ${BS_MINIO_SECRET_KEY}\n    public_bucket: 'bisheng'  # 公共bucket，存储平台上一些需要持久化的文件。会设置为可公开访问\n    tmp_bucket: 'tmp-dir'  # 临时bucket，会对传到此bucket内的文件设置有效期\n\nenvironment:\n  env: dev\n  uns_support: ['png','jpg','jpeg','bmp','doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'html', 'pdf', 'csv', 'tiff']\n\n# 可根据loguru的文档配置不同 handlers\nlogger_conf:\n  # 默认输出到sys.stdout的日志级别, 大于等于此级别都会输出\n  level: DEBUG\n  # 默认输出格式\n  format: '<level>[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}] [{level.name} process-{process.id}-{thread.id} {name}:{line}]</level> - <level>trace={extra[trace_id]} {message}</level>'\n  # 参考loguru.add()中的参数可以配置多个handler\n  handlers:\n      # 文件路径，支持插入一些系统环境变量，若环境变量不存在则置空。例如 HOSTNAME: 主机名。后端会处理环境变量的替换\n    - sink: \"/app/data/bisheng.log\"\n      # 日志级别\n      level: INFO\n      # 日志格式化函数，extra内支持trace_id\n      format: '<level>[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}] [{level.name} process-{process.id}-{thread.id} {name}:{line}]</level> - <level>trace={extra[trace_id]} {message}</level>'\n      # 每天的几点进行切割\n      rotation: \"00:00\"\n      retention: \"3 Days\"\n      enqueue: ture\n    - sink: \"/app/data/statistic.log\"\n      level: INFO\n      # 和原生不一样，后端会将配置使用eval()执行转为函数用来过滤特定日志级别。推荐lambda\n      filter: \"lambda record: record['level'].name == 'INFO' and record['message'].startswith('k=s')\"\n      format: \"[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}]|{level}|BISHENG|{extra[trace_id]}||{process.id}|{thread.id}|||#EX_ERR:POS={name},line {line},ERR=500,EMSG={message}\"\n      rotation: \"00:00\"\n      retention: \"3 Days\"\n      enqueue: ture\n"
  },
  {
    "path": "docker/bisheng/entrypoint.sh",
    "content": "#!/bin/bash\nset -xe\n\nexport PYTHONPATH=\"./\"\n\nstart_mode=${1:-api}\n\nstart_knowledge(){\n  # 知识库解析的celery worker\n    celery -A bisheng.worker.main worker -l info -c 20 -P threads -Q knowledge_celery -n knowledge@%h\n}\n\nstart_workflow(){\n  # 工作流相关的celery worker\n    celery -A bisheng.worker.main worker -l info -c 100 -P threads -Q workflow_celery -n workflow@%h\n}\n\nstart_beat(){\n  # 定时任务调度\n    celery -A bisheng.worker.main beat -l info\n}\n\nstart_linsight(){\n  # 灵思后台任务worker\n    python bisheng/linsight/worker.py --worker_num 4 --max_concurrency 5\n}\nstart_default(){\n    # 默认其他任务的执行worker，目前是定时统计埋点数据\n    celery -A bisheng.worker.main worker -l info -c 100 -P threads -Q celery -n celery@%h\n}\n\nif [ \"$start_mode\" = \"api\" ]; then\n    echo \"Starting API server...\"\n    uvicorn bisheng.main:app --host 0.0.0.0 --port 7860 --no-access-log --workers 8\nelif [ \"$start_mode\" = \"knowledge\" ]; then\n    echo \"Starting Knowledge Celery worker...\"\n    start_knowledge\nelif [ \"$start_mode\" = \"workflow\" ]; then\n    echo \"Starting Workflow Celery worker...\"\n    start_workflow\nelif [ \"$start_mode\" = \"beat\" ]; then\n    echo \"Starting Celery beat...\"\n    start_beat\nelif [ \"$start_mode\" = \"default\" ]; then\n    echo \"Starting default celery worker...\"\n    start_default\nelif [ \"$start_mode\" = \"linsight\" ]; then\n    echo \"Starting LinSight worker...\"\n    start_linsight\nelif [ \"$start_mode\" = \"worker\" ]; then\n    echo \"Starting All worker...\"\n    # 处理知识库相关任务的worker\n    start_knowledge &\n    # 处理工作流相关任务的worker\n    start_workflow &\n    # 处理linsight相关任务的worker\n    start_linsight &\n    # 默认其他任务的执行worker，目前是定时统计埋点数据\n    start_default &\n    start_beat\n\n    echo \"All workers started successfully.\"\nelse\n    echo \"Invalid start mode. Use api、worker、knowledge、workflow、beat、default、linsight.\"\n    exit 1\nfi\n"
  },
  {
    "path": "docker/bisheng-ft/config.yaml",
    "content": "# Celery 的broker配置。存储ft指令执行结果。\n# 密码加密规则和backend一致, 暂不支持集群redis\nredis_url: \"redis://bisheng-redis:6379/5\"\n"
  },
  {
    "path": "docker/bisheng-uns/config.yaml",
    "content": "# 可根据loguru的文档配置不同 handlers\nlogger_conf:\n  # 默认输出到控制台的日志级别, 大于等于此级别都会输出\n  level: DEBUG\n  # 默认输出格式\n  format: '[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}] [{level.name} process-{process.id}-{thread.id} {name}:{line}] - trace={extra[trace_id]} {message}'\n  # 参考loguru.add()中的参数可以配置多个handler\n  handlers:\n      # 文件路径，支持插入一些系统环境变量，若环境变量不存在则置空。例如 HOSTNAME: 主机名。后端会处理环境变量的替换\n    - sink: \"/app/logs/bisheng_uns.log\"\n      # 日志级别\n      level: INFO\n      # 和原生不一样，后端会将配置使用eval()执行转为函数用来过滤特定日志级别。推荐lambda\n      # filter: \"lambda record: record['level'].name == 'INFO'\"\n      # 日志格式化函数，extra内支持trace_id\n      format: \"[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}]|{level}|BISHENG|{extra[trace_id]}|{process.id}|{thread.id}|{message}\"\n      # 每天的几点进行切割\n      rotation: \"00:00\"\n      retention: \"3 Days\"\n    - sink: \"/app/logs/err-v0-BISHENG-UNS-{HOSTNAME}.log\"\n      level: ERROR\n      filter: \"lambda record: record['level'].name == 'ERROR'\"\n      format: \"[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}]|{level}|BISHENG|{extra[trace_id]}||{process.id}|{thread.id}|||#EX_ERR:POS={name},line {line},ERR=500,EMSG={message}\"\n      rotation: \"00:00\"\n      retention: \"3 Days\"\n\n# pdf解析需要用到的模型配置, 配置了rt_server环境变量的话会替换为对应的地址\npdf_model_params:\n  layout_ep: \"http://192.168.106.12:9001/v2.1/models/elem_layout_v1/infer\"\n  cell_model_ep: \"http://192.168.106.12:9001/v2.1/models/elem_table_cell_detect_v1/infer\"\n  rowcol_model_ep: \"http://192.168.106.12:9001/v2.1/models/elem_table_rowcol_detect_v1/infer\"\n  table_model_ep: \"http://192.168.106.12:9001/v2.1/models/elem_table_detect_v1/infer\"\n  ocr_model_ep: \"http://192.168.106.12:9001/v2.1/models/elem_ocr_collection_v3/infer\"\n\n# 是否全部走ocr识别, false的话则由代码逻辑判断是否需要走ocr识别\nis_all_ocr: false\n# ocr识别需要的配置项\nocr_conf:\n  params:\n    sort_filter_boxes: true,\n    enable_huarong_box_adjust: true,\n    rotateupright: false,\n    support_long_image_segment: true,\n    split_long_sentence_blank: true\n  scene_mapping:\n    print:\n      det: general_text_det_mrcnn_v2.0\n      recog: transformer-blank-v0.2-faster\n    hand:\n      det: general_text_det_mrcnn_v2.0\n      recog: transformer-hand-v1.16-faster\n    print_recog:\n      recog: transformer-blank-v0.2-faster\n    hand_recog:\n      recog: transformer-hand-v1.16-faster\n    det:\n      det: general_text_det_mrcnn_v2.0\n"
  },
  {
    "path": "docker/docker-compose-ft.yml",
    "content": "services:\n  ft_server:\n    container_name: bisheng-ft-server\n    image: dataelement/bisheng-ft:v0.5.0\n    shm_size: \"4g\"\n    ports:\n      - \"8000:8000\"\n    environment:\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng-ft/config.yaml:/opt/bisheng-ft/sft_server/config.yaml  # 服务启动所需的配置文件地址，默认不用改\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/llm:/opt/bisheng-ft/models/model_repository # 这个是存放基座模型的目录，挂载到本机目录\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/finetune_output:/opt/bisheng-ft/finetune_output # 这个是存放微调过程的中间日志和微调训练后模型的目录，挂载到本机目录，不能与存放基座模型的目录相同\n    security_opt:\n      - seccomp:unconfined\n    command: bash start-sft-server.sh # 启动服务\n    restart: on-failure\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n      start_period: 30s\n      interval: 90s\n      timeout: 30s\n      retries: 3\n    deploy:\n      resources:\n        reservations:\n          devices:\n          - driver: nvidia\n            count: all\n            capabilities: [gpu]\n"
  },
  {
    "path": "docker/docker-compose-office.yml",
    "content": "services:\n  office:\n    container_name: bisheng-office\n    image: onlyoffice/documentserver:7.1.1\n    ports:\n      - \"8701:80\"\n    environment:\n      TZ: Asia/Shanghai\n      JWT_ENABLED: \"false\"\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/office/bisheng:/var/www/onlyoffice/documentserver/sdkjs-plugins/bisheng\n    command: bash -c \"supervisorctl restart all\"\n    restart: on-failure\n\n"
  },
  {
    "path": "docker/docker-compose-uns.yml",
    "content": "services:\n  bisheng-unstructured:\n    container_name: bisheng-unstructured\n    image: dataelement/bisheng-unstructured:v0.0.3.14\n    ports:\n      - \"10001:10001\"\n    environment:\n      # 填写ocr_sdk或rt服务的根地址\n      # server_address: bisheng-rt:9001\n      # 这里填 ocr_sdk 或 rt\n      # server_type: ocr_sdk\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng-uns/config.yaml:/opt/bisheng-unstructured/bisheng_unstructured/config/config.yaml\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:10001/health\"]\n      interval: 30s\n      timeout: 20s\n      retries: 3\n    restart: on-failure\n\n"
  },
  {
    "path": "docker/docker-compose.yml",
    "content": "services:\n  mysql:\n    container_name: bisheng-mysql\n    image: mysql:8.0\n    \n    ports:\n      - \"3306:3306\"\n    environment:\n      MYSQL_ROOT_PASSWORD: \"1234\"  # 数据库密码，如果修改需要同步修改bisheng/congfig/config.yaml配置database_url的mysql连接密码\n      MYSQL_DATABASE: bisheng\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/conf/my.cnf:/etc/mysql/my.cnf\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/data:/var/lib/mysql\n    healthcheck:\n      test: [\"CMD-SHELL\", \"exit | mysql -u root -p$$MYSQL_ROOT_PASSWORD\"]\n      start_period: 30s\n      interval: 20s\n      timeout: 10s\n      retries: 4\n    restart: on-failure\n\n  redis:\n    container_name: bisheng-redis\n    image: redis:7.0.4\n    ports:\n      - \"6379:6379\"\n    environment:\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/redis:/data\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/redis/redis.conf:/etc/redis.conf\n    command: redis-server /etc/redis.conf\n    healthcheck:\n      test: [\"CMD-SHELL\", 'redis-cli ping|grep -e \"PONG\\|NOAUTH\"']\n      interval: 10s\n      timeout: 5s\n      retries: 3\n    restart: on-failure\n\n  backend:\n    container_name: bisheng-backend\n    image: dataelement/bisheng-backend:v2.4.0-beta1-fix\n    ports:\n      - \"7860:7860\"\n    environment:\n      TZ: Asia/Shanghai\n      BS_MILVUS_CONNECTION_ARGS: '{\"host\":\"milvus\",\"port\":\"19530\",\"user\":\"\",\"password\":\"\",\"secure\":false}'\n      BS_MILVUS_IS_PARTITION: 'true'\n      BS_MILVUS_PARTITION_SUFFIX: '1'\n      BS_ELASTICSEARCH_URL: 'http://elasticsearch:9200'\n      BS_ELASTICSEARCH_SSL_VERIFY: '{}'  # 可根据自己部署的密码进行配置 '{\"basic_auth\": (\"elastic\", \"elastic\")}'\n      BS_MINIO_SCHEMA: 'false'\n      BS_MINIO_CERT_CHECK: 'false'\n      BS_MINIO_ENDPOINT: 'minio:9000'\n      BS_MINIO_SHAREPOINT: 'minio:9000'\n      BS_MINIO_ACCESS_KEY: 'minioadmin'\n      BS_MINIO_SECRET_KEY: 'minioadmin'\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/config/config.yaml:/app/bisheng/config.yaml\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/entrypoint.sh:/app/entrypoint.sh\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/bisheng:/app/data\n    security_opt:\n      - seccomp:unconfined\n    command: sh entrypoint.sh api  # 启动api服务\n    restart: on-failure\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:7860/health\"]\n      start_period: 30s\n      interval: 90s\n      timeout: 30s\n      retries: 3\n    depends_on:\n      mysql:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n  \n  backend_worker:\n    container_name: bisheng-backend-worker\n    image: dataelement/bisheng-backend:v2.4.0-beta1-fix\n    environment:\n      TZ: Asia/Shanghai\n      BS_MILVUS_CONNECTION_ARGS: '{\"host\":\"milvus\",\"port\":\"19530\",\"user\":\"\",\"password\":\"\",\"secure\":false}'\n      BS_MILVUS_IS_PARTITION: 'true'\n      BS_MILVUS_PARTITION_SUFFIX: '1'\n      BS_ELASTICSEARCH_URL: 'http://elasticsearch:9200'\n      BS_ELASTICSEARCH_SSL_VERIFY: '{}'  # 可根据自己部署的密码进行配置 '{\"basic_auth\": (\"elastic\", \"elastic\")}'\n      BS_MINIO_SCHEMA: 'false'\n      BS_MINIO_CERT_CHECK: 'false'\n      BS_MINIO_ENDPOINT: 'minio:9000'\n      BS_MINIO_SHAREPOINT: 'minio:9000'\n      BS_MINIO_ACCESS_KEY: 'minioadmin'\n      BS_MINIO_SECRET_KEY: 'minioadmin'\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/config/config.yaml:/app/bisheng/config.yaml\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/bisheng/entrypoint.sh:/app/entrypoint.sh\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/bisheng:/app/data\n    security_opt:\n      - seccomp:unconfined\n    command: sh entrypoint.sh worker  # 启动celery的异步worker服务，用来处理一些耗时的任务\n    restart: on-failure\n    depends_on:\n      mysql:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n\n\n  frontend:\n    container_name: bisheng-frontend\n    image: dataelement/bisheng-frontend:v2.4.0-beta1-fix\n    ports:\n      - \"3001:3001\"\n    environment:\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/nginx/nginx.conf:/etc/nginx/nginx.conf\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/nginx/conf.d:/etc/nginx/conf.d\n    restart: on-failure\n    depends_on:\n      - backend\n\n  elasticsearch:\n    container_name: bisheng-es\n    image: docker.io/bitnamilegacy/elasticsearch:8.12.0\n    user: root\n    ports:\n      - \"9200:9200\"\n      - \"9300:9300\"\n    environment:\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/es:/bitnami/elasticsearch/data\n    restart: on-failure\n\n  etcd:\n    container_name: bisheng-milvus-etcd\n    image: quay.io/coreos/etcd:v3.5.5\n    environment:\n      ETCD_AUTO_COMPACTION_MODE: revision\n      ETCD_AUTO_COMPACTION_RETENTION: \"1000\"\n      ETCD_QUOTA_BACKEND_BYTES: \"4294967296\"\n      ETCD_SNAPSHOT_COUNT: \"50000\"\n      TZ: Asia/Shanghai\n    volumes:\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus-etcd:/etcd\n    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd\n    restart: on-failure\n    healthcheck:\n      test: [\"CMD\", \"etcdctl\", \"endpoint\", \"health\"]\n      interval: 30s\n      timeout: 20s\n      retries: 3\n\n  minio:\n    container_name: bisheng-milvus-minio\n    image: minio/minio:RELEASE.2023-03-20T20-16-18Z\n    environment:\n      MINIO_ACCESS_KEY: minioadmin\n      MINIO_SECRET_KEY: minioadmin\n    ports:\n      - \"9100:9000\"\n      - \"9101:9001\"\n    volumes:\n      - /etc/localtime:/etc/localtime:ro\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus-minio:/minio_data\n    command: minio server /minio_data --console-address \":9001\"\n    restart: on-failure\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:9000/minio/health/live\"]\n      interval: 30s\n      timeout: 20s\n      retries: 3\n\n  milvus:\n    container_name: bisheng-milvus-standalone\n    image: milvusdb/milvus:v2.5.10\n    command: [\"milvus\", \"run\", \"standalone\"]\n    security_opt:\n    - seccomp:unconfined\n    environment:\n      ETCD_ENDPOINTS: etcd:2379\n      MINIO_ADDRESS: minio:9000\n    volumes:\n      - /etc/localtime:/etc/localtime:ro\n      - ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus:/var/lib/milvus\n    restart: on-failure\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:9091/healthz\"]\n      start_period: 90s\n      interval: 30s\n      timeout: 20s\n      retries: 3\n    ports:\n      - \"19530:19530\"\n      - \"9091:9091\"\n    depends_on:\n      - etcd\n      - minio\n"
  },
  {
    "path": "docker/mysql/conf/my.cnf",
    "content": "[client]\ndefault-character-set=utf8mb4\n\n[mysql]\ndefault-character-set=utf8mb4\n\n[mysqld]\ninit_connect='SET collation_connection = utf8mb4_unicode_ci, NAMES utf8mb4'\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_unicode_ci\n# skip-character-set-client-handshake\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\n"
  },
  {
    "path": "docker/nginx/conf.d/default.conf",
    "content": "\n# 在http区域内一定要添加下面配置, 支持websocket\nmap $http_upgrade $connection_upgrade {\n\tdefault upgrade;\n\t'' close;\n}\n\n\n\nserver {\n\tgzip on;\n\tgzip_comp_level  2;\n\tgzip_min_length  1000;\n\tgzip_types  text/xml text/css;\n\tgzip_http_version 1.1;\n\tgzip_vary  on;\n\tgzip_disable \"MSIE [4-6] \\.\";\n\n\tlisten 3001;\n\n\t location / {\n\t\troot /usr/share/nginx/html/platform;\n\t\tindex index.html index.htm;\n\t\t# 禁止浏览器缓存 index.html\n\t\tlocation = /index.html {\n\t\t\tadd_header Cache-Control \"no-store, no-cache, must-revalidate, proxy-revalidate\" always;\n\t\t\tadd_header Pragma \"no-cache\" always;\n\t\t\tadd_header Expires 0 always;\n\t\t}\n\t\ttry_files $uri $uri/ /index.html =404;\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t}\n\n\tlocation /workspace/ {\n\t\talias /usr/share/nginx/html/client/;\n\t\tindex index.html index.htm;\n\t\t# 禁止浏览器缓存 /workspace/index.html\n\t\tlocation = /workspace/index.html {\n\t\t\tadd_header Cache-Control \"no-store, no-cache, must-revalidate, proxy-revalidate\" always;\n\t\t\tadd_header Pragma \"no-cache\" always;\n\t\t\tadd_header Expires 0 always;\n\t\t}\n\t\ttry_files $uri $uri/ /workspace/index.html;\n\t}\n\n\tlocation ~ ^(/workspace)?/api(/|$) {\n\t\trewrite ^/workspace(/.*)$ $1 break;\n\t\tproxy_pass http://backend:7860;\n\t\tproxy_read_timeout 300s;\n\t\tproxy_set_header Host $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection $connection_upgrade;\n\t\tclient_max_body_size 200m;\n\t\tadd_header Access-Control-Allow-Origin $host;\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t}\n\n\tlocation ~ ^(/workspace)?/bisheng|/tmp-dir {\n\t\trewrite ^/workspace(/.*)$ $1 break;\n\t\tproxy_pass http://minio:9000;\n\t}\n}"
  },
  {
    "path": "docker/nginx/conf.d/websocket.conf",
    "content": "\n# 在http区域内一定要添加下面配置, 支持websocket\nmap $http_upgrade $connection_upgrade {\n\tdefault upgrade;\n\t'' close;\n}\n\nserver {\n\tgzip on;\n\tgzip_comp_level  2;\n\tgzip_min_length  1000;\n\tgzip_types  text/xml text/css;\n\tgzip_http_version 1.1;\n\tgzip_vary  on;\n\tgzip_disable \"MSIE [4-6] \\.\";\n\n\tlisten 8443;\n\tlocation /api {\n\t\tproxy_pass http://backend:7860;\n\t\tproxy_read_timeout 300s;\n\t\tproxy_set_header Host $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection $connection_upgrade;\n\t\tclient_max_body_size 50m;\n\t}\n}"
  },
  {
    "path": "docker/nginx/nginx.conf",
    "content": "\nuser  nginx;\nworker_processes  auto;\n\nerror_log  /var/log/nginx/error.log notice;\npid        /var/run/nginx.pid;\n\n\nevents {\n    worker_connections  1024;\n}\n\n\nhttp {\n    include       /etc/nginx/mime.types;\n    default_type  application/octet-stream;\n\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /var/log/nginx/access.log  main;\n\n    sendfile        on;\n    #tcp_nopush     on;\n\n    keepalive_timeout  65;\n\n    #gzip  on;\n\n    include /etc/nginx/conf.d/*.conf;\n}"
  },
  {
    "path": "docker/office/bisheng/all.js",
    "content": "(function (window, undefined) {\n  let selectText = ''\n\n  window.Asc.plugin.init = function (e) {\n    selectText = e\n  }\n  window.Asc.plugin.event_onClick = function () {\n    selectText = ''\n  }\n\n  window.Asc.plugin.button = function (id) {\n  }\n\n  const EventMap = {\n    sendToParent (method, data) {\n      let params = {\n        type: 'onExternalFrameMessage',\n        method,\n        data\n      }\n      window.top.postMessage(JSON.stringify(params), location.origin)\n    },\n    focusInDocument (data) {\n      window.Asc.scope.field = {\n        id: data.id,\n        fieldFlag: data.fieldFlag,\n        $index: data.$index || 1\n      }\n      window.Asc.plugin.callCommand(function () {\n        let field = Asc.scope.field || {}\n        let index = field.$index ? field.$index : 1\n        let oDoc = Api.GetDocument()\n        let flag = `{{${field.fieldFlag}}}`\n        let oRange = oDoc.Search(flag)\n        let cur = 1\n        for (let i = 0; i < oRange.length; i++) {\n          if (oRange[i].GetText() === flag) {\n            if (cur === index) {\n              oRange[i].Select()\n              break\n            }\n            cur = cur + 1\n          }\n        }\n      })\n    },\n    focusTableInDoc (data) {\n      window.Asc.scope.marker = data.marker\n      window.Asc.plugin.callCommand(function () {\n        let flag = Asc.scope.marker || ''\n        let oDoc = Api.GetDocument()\n        let oRange = oDoc.GetBookmarkRange(flag)\n        oRange.Select()\n      })\n    },\n    addMarker (data) {\n      let flag = '{{' + data.fieldFlag + '}}'\n      window.Asc.plugin.executeMethod('PasteText', [flag])\n    },\n    addBookMarker (data) {\n      window.Asc.scope.value = data\n      window.Asc.plugin.callCommand(function () {\n        let oDoc = Api.GetDocument()\n        let range = oDoc.GetRangeBySelect()\n        let params = {\n          type: 'onExternalFrameMessage',\n          method: 'addBookMarker'\n        }\n        let marker = Asc.scope.value\n        let markers = []\n        if (range) {\n          let texts = range.GetText()\n          let pars = range.GetAllParagraphs() || []\n          let txtList = []\n          for (let i = 0; i < pars.length; i++) {\n              let text = pars[i].GetText()\n              txtList.push(text)\n          }\n          let table = pars[0] ? pars[0].GetParentTable() : null\n          let count = table ? table.GetRowsCount() : 0\n          for (let i = 0; i < count; i++) {\n            let row = table.GetRow(i)\n            let firstCell = row.GetCell(0)\n            let cellText = firstCell ? firstCell.GetContent().GetElement(0).GetText() : ''\n            // 序号\n            let isNumbering = false\n            if (firstCell.GetContent().GetElement(0).GetNumbering()) {\n              isNumbering = true\n              let cellCount = row.GetCellsCount()\n              for (let j = 1; j < cellCount; j++) {\n                let cellItem = row.GetCell(j)\n                if (!cellItem.GetContent().GetElement(0).GetNumbering()) {\n                  cellText = cellItem.GetContent().GetElement(0).GetText()\n                  firstCell = cellItem\n                  break\n                }\n              }\n            }\n            if (cellText && txtList.includes(cellText)) {\n              let cRange = firstCell.Search(cellText)[0]\n              cRange.AddBookmark(marker.key + i)\n              markers.push(marker.key + i)\n            }\n          }\n          // range.AddBookmark(Asc.scope.value.key)\n          params.data = Object.assign(marker, {\n            key: markers.join(','),\n            texts\n          })\n        } else {\n          params.data = false\n        }\n        window.top.postMessage(JSON.stringify(params), location.origin)\n      })\n    },\n    deleteBookMarker (data) {\n      window.Asc.scope.value = data\n      window.Asc.plugin.callCommand(function () {\n        let oDoc = Api.GetDocument()\n        let markers = Asc.scope.value || []\n        for (let i = 0; i < markers.length; i++) {\n          oDoc.DeleteBookmark(markers[i])\n        }\n      })\n    },\n    // 批量删除循环应用内标签\n    deleteLoopApp (list) {\n      window.Asc.scope.value = list\n      window.Asc.plugin.callCommand(function () {\n        let list = window.Asc.scope.value || []\n        let oDoc = Api.GetDocument()\n        list.forEach(row => {\n          if (row.loopType === 0) {\n            oDoc.SearchAndReplace({ searchString: `{{${row.startTag}}}`, replaceString: '' }, `{{${row.startTag}}}`, '')\n            oDoc.SearchAndReplace({ searchString: `{{${row.endTag}}}`, replaceString: '' }, `{{${row.endTag}}}`, '')\n          } else if (row.loopType === 1) {\n            oDoc.DeleteBookmark(row.bookmark)\n          }\n        })\n      })\n    },\n    // 更新占位符\n    replaceMarker (data) {\n      window.Asc.scope.st = '{{' + data.newValue + '}}'\n      // 原来的值\n      if (data.oldValue) {\n        window.Asc.scope.old = '{{' + data.oldValue + '}}'\n      } else {\n        this.addMarker(data)\n        return\n      }\n      window.Asc.plugin.callCommand(function () {\n        let oDocument  = Api.GetDocument()\n        oDocument.SearchAndReplace({ searchString: Asc.scope.old, replaceString: Asc.scope.st }, Asc.scope.old, Asc.scope.st)\n      }, false)\n    },\n    // 查找并插入占位符\n    findAndInsertMarker (data) {\n      window.Asc.scope.st = '{{' + data.fieldName + '}}'\n      window.Asc.scope.searchStr = data.fieldValue\n      window.Asc.plugin.callCommand(function () {\n        let oDocument = Api.GetDocument()\n        oDocument.SearchAndReplace({ searchString: Asc.scope.searchStr, replaceString: Asc.scope.st }, Asc.scope.searchStr, Asc.scope.st)\n      }, false)\n    },\n    insertPosition (data) {\n      if (!selectText) {\n        let postData = {\n          text: selectText,\n          ...data,\n          selected: false\n        }\n        this.sendToParent('addRange', postData)\n        return false\n      }\n      window.Asc.scope.postData = data\n      window.Asc.plugin.callCommand(function() {\n        let postData = Asc.scope.postData || {}\n        let oDoc = Api.GetDocument()\n        let oRange = oDoc.GetRangeBySelect()\n        let selectText = oRange.GetText()\n        let oAllPar = oRange.GetAllParagraphs()\n        let oPar = oAllPar[oAllPar.length - 1]\n        let parText = oPar.GetText()\n        if (oAllPar.length > 1) {\n          oRange.AddText(`{{${postData.start}}}`, 'before')\n          if (selectText.includes(parText)) {\n            let newRange = oPar.GetRange(0, parText.length - 1)\n            newRange.AddText(`{{${postData.end}}}`, 'after')\n          } else {\n            oRange.AddText(`{{${postData.end}}}`, 'after')\n          }\n        } else {\n          let isEnd = parText.substr(0 - selectText.length) === selectText\n          isEnd = isEnd || selectText.includes(parText)\n          console.log('end = ', isEnd)\n          let start = Math.max(parText.indexOf(selectText), 0)\n          let end = start + Math.min(parText.length, selectText.length) - 1\n          let newRange = oPar.GetRange(start, end)\n          oRange.AddText(`{{${postData.start}}}`, 'before')\n          newRange.AddText(`{{${postData.end}}}`, 'after')\n        }\n\n        postData.selected = true\n        postData.text = selectText\n        let params = {\n          type: 'onExternalFrameMessage',\n          method: 'addRange',\n          data: postData\n        }\n        window.top.postMessage(JSON.stringify(params), location.origin)\n      })\n    },\n    deletePosition (data) {\n      window.Asc.scope.range = data\n      window.Asc.plugin.callCommand(function () {\n        let oDocument  = Api.GetDocument()\n        let { start, end } = Asc.scope.range\n        let markers = [`{{${start}}}`, `{{${end}}}`]\n        for (let j = 0; j < markers.length; j++) {\n          oDocument.SearchAndReplace({ searchString: markers[j], replaceString: '' }, markers[j], '')\n        }\n      })\n    },\n    deletePositionMarker (data) {\n      window.Asc.scope.data = data\n      window.Asc.plugin.callCommand(function () {\n        let oDocument = Api.GetDocument()\n        let markers = Asc.scope.data || []\n        for (let j = 0; j < markers.length; j++) {\n          oDocument.SearchAndReplace({ searchString: markers[j], replaceString: '' }, markers[j], '')\n        }\n      })\n    },\n    deletePositionArray (data) {\n      window.Asc.scope.data = data\n      window.Asc.plugin.callCommand(function () {\n        let oDocument = Api.GetDocument()\n        let markers = Asc.scope.data || []\n        for (let j = 0; j < markers.length; j++) {\n          oDocument.SearchAndReplace({ searchString: markers[j], replaceString: '' }, markers[j], '')\n        }\n      })\n    },\n    replaceRangePosition (data) {\n      window.Asc.scope.list = data\n      window.Asc.plugin.callCommand(function () {\n        let list = Asc.scope.list || []\n        let oDocument = Api.GetDocument()\n        list.forEach(row => {\n          oDocument.SearchAndReplace({ searchString: row.str, replaceString: row.newStr }, row.str, row.newStr)\n        })\n      })\n    },\n    delMarker (data) {\n      let fields = []\n      data.forEach(item => {\n        fields.push({\n          text: '{{' + item.fieldFlag + '}}',\n          type: 'field'\n        })\n      })\n      window.Asc.scope.st = fields\n      window.Asc.plugin.callCommand(function () {\n        let oDocument  = Api.GetDocument()\n        let markers = Asc.scope.st.slice(0)\n        for (let j = 0; j < markers.length; j++) {\n          let marker = markers[j]\n          if (marker.type === 'field') {\n            oDocument.SearchAndReplace({ searchString: marker.text, replaceString: '' })\n          }\n        }\n      })\n    },\n    delMarkerGroup (data) {\n      this.delMarker(data.fields)\n    },\n    // excel\n    insertCellName (field) {\n      window.Asc.scope.field = field\n      window.Asc.plugin.callCommand(function () {\n        let fieldItem = Asc.scope.field\n        let sheetObj = Api.GetActiveSheet()\n        let sheetName = sheetObj.GetName()\n        let oRange = Api.GetSelection()\n        let oCount = oRange.GetCount()\n        let params = {\n          type: 'onExternalFrameMessage',\n          method: 'addCellName'\n        }\n        if (oCount !== 1) {\n          params.data = false\n        } else {\n          let oAddr = oRange.GetAddress(true, true, '', false)\n          let sheetFlag = `${sheetName}!${oAddr}`\n          // let name = [fieldItem.fieldName, 'DEF', fieldItem.id].join('')\n          // let nameObj = sheetObj.GetDefName(name)\n          // console.log('inser cell before = ', name, sheetFlag, nameObj)\n          // let result = sheetObj.AddDefName(name, sheetFlag)\n          // console.log('insert cell ', name, sheetFlag, result)\n          fieldItem.fieldFlag = sheetFlag\n          fieldItem.$success = oAddr !== ''\n          params.data = fieldItem\n        }\n        window.top.postMessage(JSON.stringify(params), location.origin)\n      })\n    },\n    getFocusedCell () {\n      window.Asc.plugin.callCommand(function () {\n        let sheetObj = Api.GetActiveSheet()\n        let sheetName = sheetObj.GetName()\n        let oRange = Api.GetSelection()\n        let params = {\n          type: 'onExternalFrameMessage',\n          method: 'getFocusedCell'\n        }\n        let oAddr = oRange.GetAddress(true, true, '', false)\n        let sheetFlag = `${sheetName}!${oAddr}`\n        params.data = sheetFlag\n        window.top.postMessage(JSON.stringify(params), location.origin)\n      })\n    },\n    loadFileFlags (data) {\n      window.Asc.scope.list = data\n      window.Asc.plugin.callCommand(function () {\n        let list = Asc.scope.list || []\n        let oDocument = Api.GetDocument()\n        let oParCount = oDocument.GetElementsCount()\n        let dataMap = {}\n        for (let i = 0; i < oParCount; i++) {\n          let oPar = oDocument.GetElement(i)\n          let ctype = oPar.GetClassType()\n          if (ctype === 'table') {\n            list.forEach(row => {\n              let flag = `{{${row.fieldFlag}}}`\n              let rs = oPar.Search(flag)\n              for (let i = 0; i < rs.length; i++) {\n                let oRange = rs[i]\n                if (oRange && oRange.GetText() === flag) {\n                  if (dataMap[row.id]) {\n                    dataMap[row.id] = dataMap[row.id] + 1\n                  } else {\n                    dataMap[row.id] = 1\n                  }\n                }\n              }\n            })\n          } else if (ctype === 'paragraph') {\n            let oParText = oPar.GetText()\n            list.forEach(row => {\n              let count = oParText.split(`{{${row.fieldFlag}}}`).length - 1\n              if (dataMap[row.id]) {\n                dataMap[row.id] = dataMap[row.id] + count\n              } else {\n                dataMap[row.id] = count\n              }\n            })\n          }\n        }\n        let params = {\n          type: 'onExternalFrameMessage',\n          method: 'loadFieldFlagCount',\n          data: dataMap\n        }\n        window.top.postMessage(JSON.stringify(params), location.origin)\n      })\n    },\n    /**\n     * data.sheetName: 要聚焦的sheet名称\n     * data.cellName: 要聚焦的cell名称，如C1, D3等\n     */\n    focusCell (data) {\n      window.Asc.scope.data = data\n      window.Asc.plugin.callCommand(function () {\n        const theData = Asc.scope.data\n        const theSheet = Api.GetSheet(theData.sheetName || '')\n        if (theSheet) {\n          theSheet.SetActive()\n\n          const theCell = theSheet.GetRange(theData.cellName || '')\n          if (theCell) {\n            theCell.Select()\n          }\n        }\n      })\n    },\n\n    getSelectedText (data) {\n      window.Asc.scope.data = data\n      window.Asc.plugin.callCommand(function () {\n        const theData = Asc.scope.data\n        const oDoc = Api.GetDocument()\n        const oRange = oDoc.GetRangeBySelect()\n        if (oRange) {\n          const oParas = oRange.GetAllParagraphs()\n          // 只能选择一个段落，否则认为不成功\n          if (oParas.length === 1) {\n\n            const params = {\n              type: 'onExternalFrameMessage',\n              method: 'getSelectedText',\n              data: {\n                id: theData.id,\n                text: oRange.GetText()\n              }\n            }\n            window.top.postMessage(JSON.stringify(params), location.origin)\n          }\n        }\n      })\n    }\n  }\n\n  function receiveMessage (e) {\n    let data = e.data ? JSON.parse(e.data) : {}\n    if (data.type === 'onExternalPluginMessage') {\n      switch (data.method) {\n        case 'focus':\n          EventMap.focusInDocument(data.data)\n          break\n        case 'focusTable':\n          EventMap.focusTableInDoc(data.data)\n          break\n        case 'insert':\n          EventMap.addMarker(data.data)\n          break\n        case 'addBookMarker':\n          EventMap.addBookMarker(data.data)\n          break\n        case 'delBookMarker':\n          EventMap.deleteBookMarker(data.data)\n          break\n        case 'delLoopApp':\n          EventMap.deleteLoopApp(data.data)\n          break\n        case 'update':\n          EventMap.replaceMarker(data.data)\n          break\n        case 'findAndInsertMarker':\n          EventMap.findAndInsertMarker(data.data)\n          break\n        case 'addRange':\n          EventMap.insertPosition(data.data)\n          break\n        case 'updateRange':\n          EventMap.replaceRangePosition(data.data)\n          break\n        case 'delRange':\n          EventMap.deletePosition(data.data)\n          break\n        case 'delRangeArray':\n          EventMap.deletePositionArray(data.data)\n          break\n        case 'delQuoteGroup':\n          EventMap.deletePositionMarker(data.data)\n          break\n        case 'remove':\n          EventMap.delMarker([ data.data ])\n          break\n        case 'removeQuestion':\n          EventMap.delMarkerGroup(data.data)\n          break\n        // excel\n        case 'addCellName':\n          EventMap.insertCellName(data.data)\n          break\n        case 'loadFieldFlagCount':\n          EventMap.loadFileFlags(data.data)\n          break\n        // 聚焦到某个单元格\n        case 'focusCell':\n          EventMap.focusCell(data.data)\n          break\n        // 获取当前选中的单元格\n        case 'getFocusedCell':\n          EventMap.getFocusedCell()\n          break\n        // 获取当前选中的文字\n        case 'getSelectedText':\n          EventMap.getSelectedText(data.data)\n          break\n      }\n    }\n  }\n\n  window.addEventListener('message', receiveMessage, false)\n})(window, undefined)\n"
  },
  {
    "path": "docker/office/bisheng/bisheng.js",
    "content": "(function () {\n    window.Asc.plugin.init = function (e) {}\n    window.Asc.plugin.event_onClick = function () {}\n    window.Asc.plugin.button = function (id) {}\n\n    function onMessage(e) {\n        var data = e.data ? JSON.parse(e.data) : {}\n        if (data.action === 'insetMarker') {\n            const flag = '{{' + data.data + '}}'\n            window.Asc.plugin.executeMethod('PasteText', [flag])\n        }\n    }\n\n    window.addEventListener('message', onMessage, false)\n})()"
  },
  {
    "path": "docker/office/bisheng/config.json",
    "content": "{\n  \"name\": \"文档自动化\",\n  \"guid\": \"asc.{D2A0F3BE-CC8D-4956-BCD9-6CBEA6E8960E}\",\n  \"variations\": [\n    {\n      \"description\": \"插入label-配置\",\n      \"url\": \"index.html\",\n      \"icons\": [\n        \"icon.png\",\n        \"icon.png\",\n        \"icon.png\",\n        \"icon.png\"\n      ],\n      \"EditorsSupport\": [\n        \"word\",\n        \"cell\",\n        \"slide\"\n      ],\n      \"isViewer\": false,\n      \"isVisual\": false,\n      \"isModal\": true,\n      \"isInsideMode\": false,\n      \"isSystem\": false,\n      \"initOnSelectionChanged\": true,\n      \"hideClose\": true,\n      \"initDataType\": \"text\",\n      \"isDisplayedInViewer\": true,\n      \"isUpdateOleOnResize\": true,\n      \"events\": [\n        \"onClick\",\n        \"onTargetPositionChanged\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "docker/office/bisheng/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <script src=\"../pluginBase.js\"></script>\n    <script src=\"./bisheng.js\"></script>\n</head>\n<body>\n</body>\n</html>"
  },
  {
    "path": "docker/redis/redis.conf",
    "content": "# Redis configuration file example.\n#\n# Note that in order to read the configuration file, Redis must be\n# started with the file path as first argument:\n#\n# ./redis-server /path/to/redis.conf\n\n# Note on units: when memory size is needed, it is possible to specify\n# it in the usual form of 1k 5GB 4M and so forth:\n#\n# 1k => 1000 bytes\n# 1kb => 1024 bytes\n# 1m => 1000000 bytes\n# 1mb => 1024*1024 bytes\n# 1g => 1000000000 bytes\n# 1gb => 1024*1024*1024 bytes\n#\n# units are case insensitive so 1GB 1Gb 1gB are all the same.\n\n################################## INCLUDES ###################################\n\n# Include one or more other config files here.  This is useful if you\n# have a standard template that goes to all Redis servers but also need\n# to customize a few per-server settings.  Include files can include\n# other files, so use this wisely.\n#\n# Note that option \"include\" won't be rewritten by command \"CONFIG REWRITE\"\n# from admin or Redis Sentinel. Since Redis always uses the last processed\n# line as value of a configuration directive, you'd better put includes\n# at the beginning of this file to avoid overwriting config change at runtime.\n#\n# If instead you are interested in using includes to override configuration\n# options, it is better to use include as the last line.\n#\n# Included paths may contain wildcards. All files matching the wildcards will\n# be included in alphabetical order.\n# Note that if an include path contains a wildcards but no files match it when\n# the server is started, the include statement will be ignored and no error will\n# be emitted.  It is safe, therefore, to include wildcard files from empty\n# directories.\n#\n# include /path/to/local.conf\n# include /path/to/other.conf\n# include /path/to/fragments/*.conf\n#\n\n################################## MODULES #####################################\n\n# Load modules at startup. If the server is not able to load modules\n# it will abort. It is possible to use multiple loadmodule directives.\n#\n# loadmodule /path/to/my_module.so\n# loadmodule /path/to/other_module.so\n\n################################## NETWORK #####################################\n\n# By default, if no \"bind\" configuration directive is specified, Redis listens\n# for connections from all available network interfaces on the host machine.\n# It is possible to listen to just one or multiple selected interfaces using\n# the \"bind\" configuration directive, followed by one or more IP addresses.\n# Each address can be prefixed by \"-\", which means that redis will not fail to\n# start if the address is not available. Being not available only refers to\n# addresses that does not correspond to any network interface. Addresses that\n# are already in use will always fail, and unsupported protocols will always BE\n# silently skipped.\n#\n# Examples:\n#\n# bind 192.168.1.100 10.0.0.1     # listens on two specific IPv4 addresses\n# bind 127.0.0.1 ::1              # listens on loopback IPv4 and IPv6\n# bind * -::*                     # like the default, all available interfaces\n#\n# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the\n# internet, binding to all the interfaces is dangerous and will expose the\n# instance to everybody on the internet. So by default we uncomment the\n# following bind directive, that will force Redis to listen only on the\n# IPv4 and IPv6 (if available) loopback interface addresses (this means Redis\n# will only be able to accept client connections from the same host that it is\n# running on).\n#\n# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES\n# COMMENT OUT THE FOLLOWING LINE.\n#\n# You will also need to set a password unless you explicitly disable protected\n# mode.\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n# bind 127.0.0.1 -::1\n\n# By default, outgoing connections (from replica to master, from Sentinel to\n# instances, cluster bus, etc.) are not bound to a specific local address. In\n# most cases, this means the operating system will handle that based on routing\n# and the interface through which the connection goes out.\n#\n# Using bind-source-addr it is possible to configure a specific address to bind\n# to, which may also affect how the connection gets routed.\n#\n# Example:\n#\n# bind-source-addr 10.0.0.1\n\n# Protected mode is a layer of security protection, in order to avoid that\n# Redis instances left open on the internet are accessed and exploited.\n#\n# When protected mode is on and the default user has no password, the server\n# only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address\n# (::1) or Unix domain sockets.\n#\n# By default protected mode is enabled. You should disable it only if\n# you are sure you want clients from other hosts to connect to Redis\n# even if no authentication is configured.\nprotected-mode no\n\n# Redis uses default hardened security configuration directives to reduce the\n# attack surface on innocent users. Therefore, several sensitive configuration\n# directives are immutable, and some potentially-dangerous commands are blocked.\n#\n# Configuration directives that control files that Redis writes to (e.g., 'dir'\n# and 'dbfilename') and that aren't usually modified during runtime\n# are protected by making them immutable.\n#\n# Commands that can increase the attack surface of Redis and that aren't usually\n# called by users are blocked by default.\n#\n# These can be exposed to either all connections or just local ones by setting\n# each of the configs listed below to either of these values:\n#\n# no    - Block for any connection (remain immutable)\n# yes   - Allow for any connection (no protection)\n# local - Allow only for local connections. Ones originating from the\n#         IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets.\n#\n# enable-protected-configs no\n# enable-debug-command no\n# enable-module-command no\n\n# Accept connections on the specified port, default is 6379 (IANA #815344).\n# If port 0 is specified Redis will not listen on a TCP socket.\nport 6379\n\n# TCP listen() backlog.\n#\n# In high requests-per-second environments you need a high backlog in order\n# to avoid slow clients connection issues. Note that the Linux kernel\n# will silently truncate it to the value of /proc/sys/net/core/somaxconn so\n# make sure to raise both the value of somaxconn and tcp_max_syn_backlog\n# in order to get the desired effect.\ntcp-backlog 511\n\n# Unix socket.\n#\n# Specify the path for the Unix socket that will be used to listen for\n# incoming connections. There is no default, so Redis will not listen\n# on a unix socket when not specified.\n#\n# unixsocket /run/redis.sock\n# unixsocketperm 700\n\n# Close the connection after a client is idle for N seconds (0 to disable)\ntimeout 0\n\n# TCP keepalive.\n#\n# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence\n# of communication. This is useful for two reasons:\n#\n# 1) Detect dead peers.\n# 2) Force network equipment in the middle to consider the connection to be\n#    alive.\n#\n# On Linux, the specified value (in seconds) is the period used to send ACKs.\n# Note that to close the connection the double of the time is needed.\n# On other kernels the period depends on the kernel configuration.\n#\n# A reasonable value for this option is 300 seconds, which is the new\n# Redis default starting with Redis 3.2.1.\ntcp-keepalive 300\n\n# Apply OS-specific mechanism to mark the listening socket with the specified\n# ID, to support advanced routing and filtering capabilities.\n#\n# On Linux, the ID represents a connection mark.\n# On FreeBSD, the ID represents a socket cookie ID.\n# On OpenBSD, the ID represents a route table ID.\n#\n# The default value is 0, which implies no marking is required.\n# socket-mark-id 0\n\n################################# TLS/SSL #####################################\n\n# By default, TLS/SSL is disabled. To enable it, the \"tls-port\" configuration\n# directive can be used to define TLS-listening ports. To enable TLS on the\n# default port, use:\n#\n# port 0\n# tls-port 6379\n\n# Configure a X.509 certificate and private key to use for authenticating the\n# server to connected clients, masters or cluster peers.  These files should be\n# PEM formatted.\n#\n# tls-cert-file redis.crt\n# tls-key-file redis.key\n#\n# If the key file is encrypted using a passphrase, it can be included here\n# as well.\n#\n# tls-key-file-pass secret\n\n# Normally Redis uses the same certificate for both server functions (accepting\n# connections) and client functions (replicating from a master, establishing\n# cluster bus connections, etc.).\n#\n# Sometimes certificates are issued with attributes that designate them as\n# client-only or server-only certificates. In that case it may be desired to use\n# different certificates for incoming (server) and outgoing (client)\n# connections. To do that, use the following directives:\n#\n# tls-client-cert-file client.crt\n# tls-client-key-file client.key\n#\n# If the key file is encrypted using a passphrase, it can be included here\n# as well.\n#\n# tls-client-key-file-pass secret\n\n# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange,\n# required by older versions of OpenSSL (<3.0). Newer versions do not require\n# this configuration and recommend against it.\n#\n# tls-dh-params-file redis.dh\n\n# Configure a CA certificate(s) bundle or directory to authenticate TLS/SSL\n# clients and peers.  Redis requires an explicit configuration of at least one\n# of these, and will not implicitly use the system wide configuration.\n#\n# tls-ca-cert-file ca.crt\n# tls-ca-cert-dir /etc/ssl/certs\n\n# By default, clients (including replica servers) on a TLS port are required\n# to authenticate using valid client side certificates.\n#\n# If \"no\" is specified, client certificates are not required and not accepted.\n# If \"optional\" is specified, client certificates are accepted and must be\n# valid if provided, but are not required.\n#\n# tls-auth-clients no\n# tls-auth-clients optional\n\n# By default, a Redis replica does not attempt to establish a TLS connection\n# with its master.\n#\n# Use the following directive to enable TLS on replication links.\n#\n# tls-replication yes\n\n# By default, the Redis Cluster bus uses a plain TCP connection. To enable\n# TLS for the bus protocol, use the following directive:\n#\n# tls-cluster yes\n\n# By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended\n# that older formally deprecated versions are kept disabled to reduce the attack surface.\n# You can explicitly specify TLS versions to support.\n# Allowed values are case insensitive and include \"TLSv1\", \"TLSv1.1\", \"TLSv1.2\",\n# \"TLSv1.3\" (OpenSSL >= 1.1.1) or any combination.\n# To enable only TLSv1.2 and TLSv1.3, use:\n#\n# tls-protocols \"TLSv1.2 TLSv1.3\"\n\n# Configure allowed ciphers.  See the ciphers(1ssl) manpage for more information\n# about the syntax of this string.\n#\n# Note: this configuration applies only to <= TLSv1.2.\n#\n# tls-ciphers DEFAULT:!MEDIUM\n\n# Configure allowed TLSv1.3 ciphersuites.  See the ciphers(1ssl) manpage for more\n# information about the syntax of this string, and specifically for TLSv1.3\n# ciphersuites.\n#\n# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256\n\n# When choosing a cipher, use the server's preference instead of the client\n# preference. By default, the server follows the client's preference.\n#\n# tls-prefer-server-ciphers yes\n\n# By default, TLS session caching is enabled to allow faster and less expensive\n# reconnections by clients that support it. Use the following directive to disable\n# caching.\n#\n# tls-session-caching no\n\n# Change the default number of TLS sessions cached. A zero value sets the cache\n# to unlimited size. The default size is 20480.\n#\n# tls-session-cache-size 5000\n\n# Change the default timeout of cached TLS sessions. The default timeout is 300\n# seconds.\n#\n# tls-session-cache-timeout 60\n\n################################# GENERAL #####################################\n\n# By default Redis does not run as a daemon. Use 'yes' if you need it.\n# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.\n# When Redis is supervised by upstart or systemd, this parameter has no impact.\ndaemonize no\n\n# If you run Redis from upstart or systemd, Redis can interact with your\n# supervision tree. Options:\n#   supervised no      - no supervision interaction\n#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode\n#                        requires \"expect stop\" in your upstart job config\n#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET\n#                        on startup, and updating Redis status on a regular\n#                        basis.\n#   supervised auto    - detect upstart or systemd method based on\n#                        UPSTART_JOB or NOTIFY_SOCKET environment variables\n# Note: these supervision methods only signal \"process is ready.\"\n#       They do not enable continuous pings back to your supervisor.\n#\n# The default is \"no\". To run under upstart/systemd, you can simply uncomment\n# the line below:\n#\n# supervised auto\n\n# If a pid file is specified, Redis writes it where specified at startup\n# and removes it at exit.\n#\n# When the server runs non daemonized, no pid file is created if none is\n# specified in the configuration. When the server is daemonized, the pid file\n# is used even if not specified, defaulting to \"/var/run/redis.pid\".\n#\n# Creating a pid file is best effort: if Redis is not able to create it\n# nothing bad happens, the server will start and run normally.\n#\n# Note that on modern Linux systems \"/run/redis.pid\" is more conforming\n# and should be used instead.\npidfile /var/run/redis_6379.pid\n\n# Specify the server verbosity level.\n# This can be one of:\n# debug (a lot of information, useful for development/testing)\n# verbose (many rarely useful info, but not a mess like the debug level)\n# notice (moderately verbose, what you want in production probably)\n# warning (only very important / critical messages are logged)\nloglevel notice\n\n# Specify the log file name. Also the empty string can be used to force\n# Redis to log on the standard output. Note that if you use standard\n# output for logging but daemonize, logs will be sent to /dev/null\nlogfile \"\"\n\n# To enable logging to the system logger, just set 'syslog-enabled' to yes,\n# and optionally update the other syslog parameters to suit your needs.\n# syslog-enabled no\n\n# Specify the syslog identity.\n# syslog-ident redis\n\n# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.\n# syslog-facility local0\n\n# To disable the built in crash log, which will possibly produce cleaner core\n# dumps when they are needed, uncomment the following:\n#\n# crash-log-enabled no\n\n# To disable the fast memory check that's run as part of the crash log, which\n# will possibly let redis terminate sooner, uncomment the following:\n#\n# crash-memcheck-enabled no\n\n# Set the number of databases. The default database is DB 0, you can select\n# a different one on a per-connection basis using SELECT <dbid> where\n# dbid is a number between 0 and 'databases'-1\ndatabases 16\n\n# By default Redis shows an ASCII art logo only when started to log to the\n# standard output and if the standard output is a TTY and syslog logging is\n# disabled. Basically this means that normally a logo is displayed only in\n# interactive sessions.\n#\n# However it is possible to force the pre-4.0 behavior and always show a\n# ASCII art logo in startup logs by setting the following option to yes.\nalways-show-logo no\n\n# By default, Redis modifies the process title (as seen in 'top' and 'ps') to\n# provide some runtime information. It is possible to disable this and leave\n# the process name as executed by setting the following to no.\nset-proc-title yes\n\n# When changing the process title, Redis uses the following template to construct\n# the modified title.\n#\n# Template variables are specified in curly brackets. The following variables are\n# supported:\n#\n# {title}           Name of process as executed if parent, or type of child process.\n# {listen-addr}     Bind address or '*' followed by TCP or TLS port listening on, or\n#                   Unix socket if only that's available.\n# {server-mode}     Special mode, i.e. \"[sentinel]\" or \"[cluster]\".\n# {port}            TCP port listening on, or 0.\n# {tls-port}        TLS port listening on, or 0.\n# {unixsocket}      Unix domain socket listening on, or \"\".\n# {config-file}     Name of configuration file used.\n#\nproc-title-template \"{title} {listen-addr} {server-mode}\"\n\n################################ SNAPSHOTTING  ################################\n\n# Save the DB to disk.\n#\n# save <seconds> <changes> [<seconds> <changes> ...]\n#\n# Redis will save the DB if the given number of seconds elapsed and it\n# surpassed the given number of write operations against the DB.\n#\n# Snapshotting can be completely disabled with a single empty string argument\n# as in following example:\n#\n# save \"\"\n#\n# Unless specified otherwise, by default Redis will save the DB:\n#   * After 3600 seconds (an hour) if at least 1 change was performed\n#   * After 300 seconds (5 minutes) if at least 100 changes were performed\n#   * After 60 seconds if at least 10000 changes were performed\n#\n# You can set these explicitly by uncommenting the following line.\n#\n# save 3600 1 300 100 60 10000\n\n# By default Redis will stop accepting writes if RDB snapshots are enabled\n# (at least one save point) and the latest background save failed.\n# This will make the user aware (in a hard way) that data is not persisting\n# on disk properly, otherwise chances are that no one will notice and some\n# disaster will happen.\n#\n# If the background saving process will start working again Redis will\n# automatically allow writes again.\n#\n# However if you have setup your proper monitoring of the Redis server\n# and persistence, you may want to disable this feature so that Redis will\n# continue to work as usual even if there are problems with disk,\n# permissions, and so forth.\nstop-writes-on-bgsave-error yes\n\n# Compress string objects using LZF when dump .rdb databases?\n# By default compression is enabled as it's almost always a win.\n# If you want to save some CPU in the saving child set it to 'no' but\n# the dataset will likely be bigger if you have compressible values or keys.\nrdbcompression yes\n\n# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.\n# This makes the format more resistant to corruption but there is a performance\n# hit to pay (around 10%) when saving and loading RDB files, so you can disable it\n# for maximum performances.\n#\n# RDB files created with checksum disabled have a checksum of zero that will\n# tell the loading code to skip the check.\nrdbchecksum yes\n\n# Enables or disables full sanitization checks for ziplist and listpack etc when\n# loading an RDB or RESTORE payload. This reduces the chances of a assertion or\n# crash later on while processing commands.\n# Options:\n#   no         - Never perform full sanitization\n#   yes        - Always perform full sanitization\n#   clients    - Perform full sanitization only for user connections.\n#                Excludes: RDB files, RESTORE commands received from the master\n#                connection, and client connections which have the\n#                skip-sanitize-payload ACL flag.\n# The default should be 'clients' but since it currently affects cluster\n# resharding via MIGRATE, it is temporarily set to 'no' by default.\n#\n# sanitize-dump-payload no\n\n# The filename where to dump the DB\ndbfilename dump.rdb\n\n# Remove RDB files used by replication in instances without persistence\n# enabled. By default this option is disabled, however there are environments\n# where for regulations or other security concerns, RDB files persisted on\n# disk by masters in order to feed replicas, or stored on disk by replicas\n# in order to load them for the initial synchronization, should be deleted\n# ASAP. Note that this option ONLY WORKS in instances that have both AOF\n# and RDB persistence disabled, otherwise is completely ignored.\n#\n# An alternative (and sometimes better) way to obtain the same effect is\n# to use diskless replication on both master and replicas instances. However\n# in the case of replicas, diskless is not always an option.\nrdb-del-sync-files no\n\n# The working directory.\n#\n# The DB will be written inside this directory, with the filename specified\n# above using the 'dbfilename' configuration directive.\n#\n# The Append Only File will also be created inside this directory.\n#\n# Note that you must specify a directory here, not a file name.\ndir ./\n\n################################# REPLICATION #################################\n\n# Master-Replica replication. Use replicaof to make a Redis instance a copy of\n# another Redis server. A few things to understand ASAP about Redis replication.\n#\n#   +------------------+      +---------------+\n#   |      Master      | ---> |    Replica    |\n#   | (receive writes) |      |  (exact copy) |\n#   +------------------+      +---------------+\n#\n# 1) Redis replication is asynchronous, but you can configure a master to\n#    stop accepting writes if it appears to be not connected with at least\n#    a given number of replicas.\n# 2) Redis replicas are able to perform a partial resynchronization with the\n#    master if the replication link is lost for a relatively small amount of\n#    time. You may want to configure the replication backlog size (see the next\n#    sections of this file) with a sensible value depending on your needs.\n# 3) Replication is automatic and does not need user intervention. After a\n#    network partition replicas automatically try to reconnect to masters\n#    and resynchronize with them.\n#\n# replicaof <masterip> <masterport>\n\n# If the master is password protected (using the \"requirepass\" configuration\n# directive below) it is possible to tell the replica to authenticate before\n# starting the replication synchronization process, otherwise the master will\n# refuse the replica request.\n#\n# masterauth <master-password>\n#\n# However this is not enough if you are using Redis ACLs (for Redis version\n# 6 or greater), and the default user is not capable of running the PSYNC\n# command and/or other commands needed for replication. In this case it's\n# better to configure a special user to use with replication, and specify the\n# masteruser configuration as such:\n#\n# masteruser <username>\n#\n# When masteruser is specified, the replica will authenticate against its\n# master using the new AUTH form: AUTH <username> <password>.\n\n# When a replica loses its connection with the master, or when the replication\n# is still in progress, the replica can act in two different ways:\n#\n# 1) if replica-serve-stale-data is set to 'yes' (the default) the replica will\n#    still reply to client requests, possibly with out of date data, or the\n#    data set may just be empty if this is the first synchronization.\n#\n# 2) If replica-serve-stale-data is set to 'no' the replica will reply with error\n#    \"MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'\"\n#    to all data access commands, excluding commands such as:\n#    INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE,\n#    UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST,\n#    HOST and LATENCY.\n#\nreplica-serve-stale-data yes\n\n# You can configure a replica instance to accept writes or not. Writing against\n# a replica instance may be useful to store some ephemeral data (because data\n# written on a replica will be easily deleted after resync with the master) but\n# may also cause problems if clients are writing to it because of a\n# misconfiguration.\n#\n# Since Redis 2.6 by default replicas are read-only.\n#\n# Note: read only replicas are not designed to be exposed to untrusted clients\n# on the internet. It's just a protection layer against misuse of the instance.\n# Still a read only replica exports by default all the administrative commands\n# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve\n# security of read only replicas using 'rename-command' to shadow all the\n# administrative / dangerous commands.\nreplica-read-only yes\n\n# Replication SYNC strategy: disk or socket.\n#\n# New replicas and reconnecting replicas that are not able to continue the\n# replication process just receiving differences, need to do what is called a\n# \"full synchronization\". An RDB file is transmitted from the master to the\n# replicas.\n#\n# The transmission can happen in two different ways:\n#\n# 1) Disk-backed: The Redis master creates a new process that writes the RDB\n#                 file on disk. Later the file is transferred by the parent\n#                 process to the replicas incrementally.\n# 2) Diskless: The Redis master creates a new process that directly writes the\n#              RDB file to replica sockets, without touching the disk at all.\n#\n# With disk-backed replication, while the RDB file is generated, more replicas\n# can be queued and served with the RDB file as soon as the current child\n# producing the RDB file finishes its work. With diskless replication instead\n# once the transfer starts, new replicas arriving will be queued and a new\n# transfer will start when the current one terminates.\n#\n# When diskless replication is used, the master waits a configurable amount of\n# time (in seconds) before starting the transfer in the hope that multiple\n# replicas will arrive and the transfer can be parallelized.\n#\n# With slow disks and fast (large bandwidth) networks, diskless replication\n# works better.\nrepl-diskless-sync yes\n\n# When diskless replication is enabled, it is possible to configure the delay\n# the server waits in order to spawn the child that transfers the RDB via socket\n# to the replicas.\n#\n# This is important since once the transfer starts, it is not possible to serve\n# new replicas arriving, that will be queued for the next RDB transfer, so the\n# server waits a delay in order to let more replicas arrive.\n#\n# The delay is specified in seconds, and by default is 5 seconds. To disable\n# it entirely just set it to 0 seconds and the transfer will start ASAP.\nrepl-diskless-sync-delay 5\n\n# When diskless replication is enabled with a delay, it is possible to let\n# the replication start before the maximum delay is reached if the maximum\n# number of replicas expected have connected. Default of 0 means that the\n# maximum is not defined and Redis will wait the full delay.\nrepl-diskless-sync-max-replicas 0\n\n# -----------------------------------------------------------------------------\n# WARNING: RDB diskless load is experimental. Since in this setup the replica\n# does not immediately store an RDB on disk, it may cause data loss during\n# failovers. RDB diskless load + Redis modules not handling I/O reads may also\n# cause Redis to abort in case of I/O errors during the initial synchronization\n# stage with the master. Use only if you know what you are doing.\n# -----------------------------------------------------------------------------\n#\n# Replica can load the RDB it reads from the replication link directly from the\n# socket, or store the RDB to a file and read that file after it was completely\n# received from the master.\n#\n# In many cases the disk is slower than the network, and storing and loading\n# the RDB file may increase replication time (and even increase the master's\n# Copy on Write memory and replica buffers).\n# However, parsing the RDB file directly from the socket may mean that we have\n# to flush the contents of the current database before the full rdb was\n# received. For this reason we have the following options:\n#\n# \"disabled\"    - Don't use diskless load (store the rdb file to the disk first)\n# \"on-empty-db\" - Use diskless load only when it is completely safe.\n# \"swapdb\"      - Keep current db contents in RAM while parsing the data directly\n#                 from the socket. Replicas in this mode can keep serving current\n#                 data set while replication is in progress, except for cases where\n#                 they can't recognize master as having a data set from same\n#                 replication history.\n#                 Note that this requires sufficient memory, if you don't have it,\n#                 you risk an OOM kill.\nrepl-diskless-load disabled\n\n# Master send PINGs to its replicas in a predefined interval. It's possible to\n# change this interval with the repl_ping_replica_period option. The default\n# value is 10 seconds.\n#\n# repl-ping-replica-period 10\n\n# The following option sets the replication timeout for:\n#\n# 1) Bulk transfer I/O during SYNC, from the point of view of replica.\n# 2) Master timeout from the point of view of replicas (data, pings).\n# 3) Replica timeout from the point of view of masters (REPLCONF ACK pings).\n#\n# It is important to make sure that this value is greater than the value\n# specified for repl-ping-replica-period otherwise a timeout will be detected\n# every time there is low traffic between the master and the replica. The default\n# value is 60 seconds.\n#\n# repl-timeout 60\n\n# Disable TCP_NODELAY on the replica socket after SYNC?\n#\n# If you select \"yes\" Redis will use a smaller number of TCP packets and\n# less bandwidth to send data to replicas. But this can add a delay for\n# the data to appear on the replica side, up to 40 milliseconds with\n# Linux kernels using a default configuration.\n#\n# If you select \"no\" the delay for data to appear on the replica side will\n# be reduced but more bandwidth will be used for replication.\n#\n# By default we optimize for low latency, but in very high traffic conditions\n# or when the master and replicas are many hops away, turning this to \"yes\" may\n# be a good idea.\nrepl-disable-tcp-nodelay no\n\n# Set the replication backlog size. The backlog is a buffer that accumulates\n# replica data when replicas are disconnected for some time, so that when a\n# replica wants to reconnect again, often a full resync is not needed, but a\n# partial resync is enough, just passing the portion of data the replica\n# missed while disconnected.\n#\n# The bigger the replication backlog, the longer the replica can endure the\n# disconnect and later be able to perform a partial resynchronization.\n#\n# The backlog is only allocated if there is at least one replica connected.\n#\n# repl-backlog-size 1mb\n\n# After a master has no connected replicas for some time, the backlog will be\n# freed. The following option configures the amount of seconds that need to\n# elapse, starting from the time the last replica disconnected, for the backlog\n# buffer to be freed.\n#\n# Note that replicas never free the backlog for timeout, since they may be\n# promoted to masters later, and should be able to correctly \"partially\n# resynchronize\" with other replicas: hence they should always accumulate backlog.\n#\n# A value of 0 means to never release the backlog.\n#\n# repl-backlog-ttl 3600\n\n# The replica priority is an integer number published by Redis in the INFO\n# output. It is used by Redis Sentinel in order to select a replica to promote\n# into a master if the master is no longer working correctly.\n#\n# A replica with a low priority number is considered better for promotion, so\n# for instance if there are three replicas with priority 10, 100, 25 Sentinel\n# will pick the one with priority 10, that is the lowest.\n#\n# However a special priority of 0 marks the replica as not able to perform the\n# role of master, so a replica with priority of 0 will never be selected by\n# Redis Sentinel for promotion.\n#\n# By default the priority is 100.\nreplica-priority 100\n\n# The propagation error behavior controls how Redis will behave when it is\n# unable to handle a command being processed in the replication stream from a master\n# or processed while reading from an AOF file. Errors that occur during propagation\n# are unexpected, and can cause data inconsistency. However, there are edge cases\n# in earlier versions of Redis where it was possible for the server to replicate or persist\n# commands that would fail on future versions. For this reason the default behavior\n# is to ignore such errors and continue processing commands.\n#\n# If an application wants to ensure there is no data divergence, this configuration\n# should be set to 'panic' instead. The value can also be set to 'panic-on-replicas'\n# to only panic when a replica encounters an error on the replication stream. One of\n# these two panic values will become the default value in the future once there are\n# sufficient safety mechanisms in place to prevent false positive crashes.\n#\n# propagation-error-behavior ignore\n\n# Replica ignore disk write errors controls the behavior of a replica when it is\n# unable to persist a write command received from its master to disk. By default,\n# this configuration is set to 'no' and will crash the replica in this condition.\n# It is not recommended to change this default, however in order to be compatible\n# with older versions of Redis this config can be toggled to 'yes' which will just\n# log a warning and execute the write command it got from the master.\n#\n# replica-ignore-disk-write-errors no\n\n# -----------------------------------------------------------------------------\n# By default, Redis Sentinel includes all replicas in its reports. A replica\n# can be excluded from Redis Sentinel's announcements. An unannounced replica\n# will be ignored by the 'sentinel replicas <master>' command and won't be\n# exposed to Redis Sentinel's clients.\n#\n# This option does not change the behavior of replica-priority. Even with\n# replica-announced set to 'no', the replica can be promoted to master. To\n# prevent this behavior, set replica-priority to 0.\n#\n# replica-announced yes\n\n# It is possible for a master to stop accepting writes if there are less than\n# N replicas connected, having a lag less or equal than M seconds.\n#\n# The N replicas need to be in \"online\" state.\n#\n# The lag in seconds, that must be <= the specified value, is calculated from\n# the last ping received from the replica, that is usually sent every second.\n#\n# This option does not GUARANTEE that N replicas will accept the write, but\n# will limit the window of exposure for lost writes in case not enough replicas\n# are available, to the specified number of seconds.\n#\n# For example to require at least 3 replicas with a lag <= 10 seconds use:\n#\n# min-replicas-to-write 3\n# min-replicas-max-lag 10\n#\n# Setting one or the other to 0 disables the feature.\n#\n# By default min-replicas-to-write is set to 0 (feature disabled) and\n# min-replicas-max-lag is set to 10.\n\n# A Redis master is able to list the address and port of the attached\n# replicas in different ways. For example the \"INFO replication\" section\n# offers this information, which is used, among other tools, by\n# Redis Sentinel in order to discover replica instances.\n# Another place where this info is available is in the output of the\n# \"ROLE\" command of a master.\n#\n# The listed IP address and port normally reported by a replica is\n# obtained in the following way:\n#\n#   IP: The address is auto detected by checking the peer address\n#   of the socket used by the replica to connect with the master.\n#\n#   Port: The port is communicated by the replica during the replication\n#   handshake, and is normally the port that the replica is using to\n#   listen for connections.\n#\n# However when port forwarding or Network Address Translation (NAT) is\n# used, the replica may actually be reachable via different IP and port\n# pairs. The following two options can be used by a replica in order to\n# report to its master a specific set of IP and port, so that both INFO\n# and ROLE will report those values.\n#\n# There is no need to use both the options if you need to override just\n# the port or the IP address.\n#\n# replica-announce-ip 5.5.5.5\n# replica-announce-port 1234\n\n############################### KEYS TRACKING #################################\n\n# Redis implements server assisted support for client side caching of values.\n# This is implemented using an invalidation table that remembers, using\n# a radix key indexed by key name, what clients have which keys. In turn\n# this is used in order to send invalidation messages to clients. Please\n# check this page to understand more about the feature:\n#\n#   https://redis.io/topics/client-side-caching\n#\n# When tracking is enabled for a client, all the read only queries are assumed\n# to be cached: this will force Redis to store information in the invalidation\n# table. When keys are modified, such information is flushed away, and\n# invalidation messages are sent to the clients. However if the workload is\n# heavily dominated by reads, Redis could use more and more memory in order\n# to track the keys fetched by many clients.\n#\n# For this reason it is possible to configure a maximum fill value for the\n# invalidation table. By default it is set to 1M of keys, and once this limit\n# is reached, Redis will start to evict keys in the invalidation table\n# even if they were not modified, just to reclaim memory: this will in turn\n# force the clients to invalidate the cached values. Basically the table\n# maximum size is a trade off between the memory you want to spend server\n# side to track information about who cached what, and the ability of clients\n# to retain cached objects in memory.\n#\n# If you set the value to 0, it means there are no limits, and Redis will\n# retain as many keys as needed in the invalidation table.\n# In the \"stats\" INFO section, you can find information about the number of\n# keys in the invalidation table at every given moment.\n#\n# Note: when key tracking is used in broadcasting mode, no memory is used\n# in the server side so this setting is useless.\n#\n# tracking-table-max-keys 1000000\n\n################################## SECURITY ###################################\n\n# Warning: since Redis is pretty fast, an outside user can try up to\n# 1 million passwords per second against a modern box. This means that you\n# should use very strong passwords, otherwise they will be very easy to break.\n# Note that because the password is really a shared secret between the client\n# and the server, and should not be memorized by any human, the password\n# can be easily a long string from /dev/urandom or whatever, so by using a\n# long and unguessable password no brute force attack will be possible.\n\n# Redis ACL users are defined in the following format:\n#\n#   user <username> ... acl rules ...\n#\n# For example:\n#\n#   user worker +@list +@connection ~jobs:* on >ffa9203c493aa99\n#\n# The special username \"default\" is used for new connections. If this user\n# has the \"nopass\" rule, then new connections will be immediately authenticated\n# as the \"default\" user without the need of any password provided via the\n# AUTH command. Otherwise if the \"default\" user is not flagged with \"nopass\"\n# the connections will start in not authenticated state, and will require\n# AUTH (or the HELLO command AUTH option) in order to be authenticated and\n# start to work.\n#\n# The ACL rules that describe what a user can do are the following:\n#\n#  on           Enable the user: it is possible to authenticate as this user.\n#  off          Disable the user: it's no longer possible to authenticate\n#               with this user, however the already authenticated connections\n#               will still work.\n#  skip-sanitize-payload    RESTORE dump-payload sanitization is skipped.\n#  sanitize-payload         RESTORE dump-payload is sanitized (default).\n#  +<command>   Allow the execution of that command.\n#               May be used with `|` for allowing subcommands (e.g \"+config|get\")\n#  -<command>   Disallow the execution of that command.\n#               May be used with `|` for blocking subcommands (e.g \"-config|set\")\n#  +@<category> Allow the execution of all the commands in such category\n#               with valid categories are like @admin, @set, @sortedset, ...\n#               and so forth, see the full list in the server.c file where\n#               the Redis command table is described and defined.\n#               The special category @all means all the commands, but currently\n#               present in the server, and that will be loaded in the future\n#               via modules.\n#  +<command>|first-arg  Allow a specific first argument of an otherwise\n#                        disabled command. It is only supported on commands with\n#                        no sub-commands, and is not allowed as negative form\n#                        like -SELECT|1, only additive starting with \"+\". This\n#                        feature is deprecated and may be removed in the future.\n#  allcommands  Alias for +@all. Note that it implies the ability to execute\n#               all the future commands loaded via the modules system.\n#  nocommands   Alias for -@all.\n#  ~<pattern>   Add a pattern of keys that can be mentioned as part of\n#               commands. For instance ~* allows all the keys. The pattern\n#               is a glob-style pattern like the one of KEYS.\n#               It is possible to specify multiple patterns.\n# %R~<pattern>  Add key read pattern that specifies which keys can be read\n#               from.\n# %W~<pattern>  Add key write pattern that specifies which keys can be\n#               written to.\n#  allkeys      Alias for ~*\n#  resetkeys    Flush the list of allowed keys patterns.\n#  &<pattern>   Add a glob-style pattern of Pub/Sub channels that can be\n#               accessed by the user. It is possible to specify multiple channel\n#               patterns.\n#  allchannels  Alias for &*\n#  resetchannels            Flush the list of allowed channel patterns.\n#  ><password>  Add this password to the list of valid password for the user.\n#               For example >mypass will add \"mypass\" to the list.\n#               This directive clears the \"nopass\" flag (see later).\n#  <<password>  Remove this password from the list of valid passwords.\n#  nopass       All the set passwords of the user are removed, and the user\n#               is flagged as requiring no password: it means that every\n#               password will work against this user. If this directive is\n#               used for the default user, every new connection will be\n#               immediately authenticated with the default user without\n#               any explicit AUTH command required. Note that the \"resetpass\"\n#               directive will clear this condition.\n#  resetpass    Flush the list of allowed passwords. Moreover removes the\n#               \"nopass\" status. After \"resetpass\" the user has no associated\n#               passwords and there is no way to authenticate without adding\n#               some password (or setting it as \"nopass\" later).\n#  reset        Performs the following actions: resetpass, resetkeys, off,\n#               -@all. The user returns to the same state it has immediately\n#               after its creation.\n# (<options>)   Create a new selector with the options specified within the\n#               parentheses and attach it to the user. Each option should be\n#               space separated. The first character must be ( and the last\n#               character must be ).\n# clearselectors            Remove all of the currently attached selectors.\n#                           Note this does not change the \"root\" user permissions,\n#                           which are the permissions directly applied onto the\n#                           user (outside the parentheses).\n#\n# ACL rules can be specified in any order: for instance you can start with\n# passwords, then flags, or key patterns. However note that the additive\n# and subtractive rules will CHANGE MEANING depending on the ordering.\n# For instance see the following example:\n#\n#   user alice on +@all -DEBUG ~* >somepassword\n#\n# This will allow \"alice\" to use all the commands with the exception of the\n# DEBUG command, since +@all added all the commands to the set of the commands\n# alice can use, and later DEBUG was removed. However if we invert the order\n# of two ACL rules the result will be different:\n#\n#   user alice on -DEBUG +@all ~* >somepassword\n#\n# Now DEBUG was removed when alice had yet no commands in the set of allowed\n# commands, later all the commands are added, so the user will be able to\n# execute everything.\n#\n# Basically ACL rules are processed left-to-right.\n#\n# The following is a list of command categories and their meanings:\n# * keyspace - Writing or reading from keys, databases, or their metadata\n#     in a type agnostic way. Includes DEL, RESTORE, DUMP, RENAME, EXISTS, DBSIZE,\n#     KEYS, EXPIRE, TTL, FLUSHALL, etc. Commands that may modify the keyspace,\n#     key or metadata will also have `write` category. Commands that only read\n#     the keyspace, key or metadata will have the `read` category.\n# * read - Reading from keys (values or metadata). Note that commands that don't\n#     interact with keys, will not have either `read` or `write`.\n# * write - Writing to keys (values or metadata)\n# * admin - Administrative commands. Normal applications will never need to use\n#     these. Includes REPLICAOF, CONFIG, DEBUG, SAVE, MONITOR, ACL, SHUTDOWN, etc.\n# * dangerous - Potentially dangerous (each should be considered with care for\n#     various reasons). This includes FLUSHALL, MIGRATE, RESTORE, SORT, KEYS,\n#     CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, etc.\n# * connection - Commands affecting the connection or other connections.\n#     This includes AUTH, SELECT, COMMAND, CLIENT, ECHO, PING, etc.\n# * blocking - Potentially blocking the connection until released by another\n#     command.\n# * fast - Fast O(1) commands. May loop on the number of arguments, but not the\n#     number of elements in the key.\n# * slow - All commands that are not Fast.\n# * pubsub - PUBLISH / SUBSCRIBE related\n# * transaction - WATCH / MULTI / EXEC related commands.\n# * scripting - Scripting related.\n# * set - Data type: sets related.\n# * sortedset - Data type: zsets related.\n# * list - Data type: lists related.\n# * hash - Data type: hashes related.\n# * string - Data type: strings related.\n# * bitmap - Data type: bitmaps related.\n# * hyperloglog - Data type: hyperloglog related.\n# * geo - Data type: geo related.\n# * stream - Data type: streams related.\n#\n# For more information about ACL configuration please refer to\n# the Redis web site at https://redis.io/topics/acl\n\n# ACL LOG\n#\n# The ACL Log tracks failed commands and authentication events associated\n# with ACLs. The ACL Log is useful to troubleshoot failed commands blocked\n# by ACLs. The ACL Log is stored in memory. You can reclaim memory with\n# ACL LOG RESET. Define the maximum entry length of the ACL Log below.\nacllog-max-len 128\n\n# Using an external ACL file\n#\n# Instead of configuring users here in this file, it is possible to use\n# a stand-alone file just listing users. The two methods cannot be mixed:\n# if you configure users here and at the same time you activate the external\n# ACL file, the server will refuse to start.\n#\n# The format of the external ACL user file is exactly the same as the\n# format that is used inside redis.conf to describe users.\n#\n# aclfile /etc/redis/users.acl\n\n# IMPORTANT NOTE: starting with Redis 6 \"requirepass\" is just a compatibility\n# layer on top of the new ACL system. The option effect will be just setting\n# the password for the default user. Clients will still authenticate using\n# AUTH <password> as usually, or more explicitly with AUTH default <password>\n# if they follow the new protocol: both will work.\n#\n# The requirepass is not compatible with aclfile option and the ACL LOAD\n# command, these will cause requirepass to be ignored.\n#\n# requirepass foobared\n\n# New users are initialized with restrictive permissions by default, via the\n# equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it\n# is possible to manage access to Pub/Sub channels with ACL rules as well. The\n# default Pub/Sub channels permission if new users is controlled by the\n# acl-pubsub-default configuration directive, which accepts one of these values:\n#\n# allchannels: grants access to all Pub/Sub channels\n# resetchannels: revokes access to all Pub/Sub channels\n#\n# From Redis 7.0, acl-pubsub-default defaults to 'resetchannels' permission.\n#\n# acl-pubsub-default resetchannels\n\n# Command renaming (DEPRECATED).\n#\n# ------------------------------------------------------------------------\n# WARNING: avoid using this option if possible. Instead use ACLs to remove\n# commands from the default user, and put them only in some admin user you\n# create for administrative purposes.\n# ------------------------------------------------------------------------\n#\n# It is possible to change the name of dangerous commands in a shared\n# environment. For instance the CONFIG command may be renamed into something\n# hard to guess so that it will still be available for internal-use tools\n# but not available for general clients.\n#\n# Example:\n#\n# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52\n#\n# It is also possible to completely kill a command by renaming it into\n# an empty string:\n#\n# rename-command CONFIG \"\"\n#\n# Please note that changing the name of commands that are logged into the\n# AOF file or transmitted to replicas may cause problems.\n\n################################### CLIENTS ####################################\n\n# Set the max number of connected clients at the same time. By default\n# this limit is set to 10000 clients, however if the Redis server is not\n# able to configure the process file limit to allow for the specified limit\n# the max number of allowed clients is set to the current file limit\n# minus 32 (as Redis reserves a few file descriptors for internal uses).\n#\n# Once the limit is reached Redis will close all the new connections sending\n# an error 'max number of clients reached'.\n#\n# IMPORTANT: When Redis Cluster is used, the max number of connections is also\n# shared with the cluster bus: every node in the cluster will use two\n# connections, one incoming and another outgoing. It is important to size the\n# limit accordingly in case of very large clusters.\n#\n# maxclients 10000\n\n############################## MEMORY MANAGEMENT ################################\n\n# Set a memory usage limit to the specified amount of bytes.\n# When the memory limit is reached Redis will try to remove keys\n# according to the eviction policy selected (see maxmemory-policy).\n#\n# If Redis can't remove keys according to the policy, or if the policy is\n# set to 'noeviction', Redis will start to reply with errors to commands\n# that would use more memory, like SET, LPUSH, and so on, and will continue\n# to reply to read-only commands like GET.\n#\n# This option is usually useful when using Redis as an LRU or LFU cache, or to\n# set a hard memory limit for an instance (using the 'noeviction' policy).\n#\n# WARNING: If you have replicas attached to an instance with maxmemory on,\n# the size of the output buffers needed to feed the replicas are subtracted\n# from the used memory count, so that network problems / resyncs will\n# not trigger a loop where keys are evicted, and in turn the output\n# buffer of replicas is full with DELs of keys evicted triggering the deletion\n# of more keys, and so forth until the database is completely emptied.\n#\n# In short... if you have replicas attached it is suggested that you set a lower\n# limit for maxmemory so that there is some free RAM on the system for replica\n# output buffers (but this is not needed if the policy is 'noeviction').\n#\n# maxmemory <bytes>\n\n# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory\n# is reached. You can select one from the following behaviors:\n#\n# volatile-lru -> Evict using approximated LRU, only keys with an expire set.\n# allkeys-lru -> Evict any key using approximated LRU.\n# volatile-lfu -> Evict using approximated LFU, only keys with an expire set.\n# allkeys-lfu -> Evict any key using approximated LFU.\n# volatile-random -> Remove a random key having an expire set.\n# allkeys-random -> Remove a random key, any key.\n# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)\n# noeviction -> Don't evict anything, just return an error on write operations.\n#\n# LRU means Least Recently Used\n# LFU means Least Frequently Used\n#\n# Both LRU, LFU and volatile-ttl are implemented using approximated\n# randomized algorithms.\n#\n# Note: with any of the above policies, when there are no suitable keys for\n# eviction, Redis will return an error on write operations that require\n# more memory. These are usually commands that create new keys, add data or\n# modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE,\n# SORT (due to the STORE argument), and EXEC (if the transaction includes any\n# command that requires memory).\n#\n# The default is:\n#\n# maxmemory-policy noeviction\n\n# LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated\n# algorithms (in order to save memory), so you can tune it for speed or\n# accuracy. By default Redis will check five keys and pick the one that was\n# used least recently, you can change the sample size using the following\n# configuration directive.\n#\n# The default of 5 produces good enough results. 10 Approximates very closely\n# true LRU but costs more CPU. 3 is faster but not very accurate.\n#\n# maxmemory-samples 5\n\n# Eviction processing is designed to function well with the default setting.\n# If there is an unusually large amount of write traffic, this value may need to\n# be increased.  Decreasing this value may reduce latency at the risk of\n# eviction processing effectiveness\n#   0 = minimum latency, 10 = default, 100 = process without regard to latency\n#\n# maxmemory-eviction-tenacity 10\n\n# Starting from Redis 5, by default a replica will ignore its maxmemory setting\n# (unless it is promoted to master after a failover or manually). It means\n# that the eviction of keys will be just handled by the master, sending the\n# DEL commands to the replica as keys evict in the master side.\n#\n# This behavior ensures that masters and replicas stay consistent, and is usually\n# what you want, however if your replica is writable, or you want the replica\n# to have a different memory setting, and you are sure all the writes performed\n# to the replica are idempotent, then you may change this default (but be sure\n# to understand what you are doing).\n#\n# Note that since the replica by default does not evict, it may end using more\n# memory than the one set via maxmemory (there are certain buffers that may\n# be larger on the replica, or data structures may sometimes take more memory\n# and so forth). So make sure you monitor your replicas and make sure they\n# have enough memory to never hit a real out-of-memory condition before the\n# master hits the configured maxmemory setting.\n#\n# replica-ignore-maxmemory yes\n\n# Redis reclaims expired keys in two ways: upon access when those keys are\n# found to be expired, and also in background, in what is called the\n# \"active expire key\". The key space is slowly and interactively scanned\n# looking for expired keys to reclaim, so that it is possible to free memory\n# of keys that are expired and will never be accessed again in a short time.\n#\n# The default effort of the expire cycle will try to avoid having more than\n# ten percent of expired keys still in memory, and will try to avoid consuming\n# more than 25% of total memory and to add latency to the system. However\n# it is possible to increase the expire \"effort\" that is normally set to\n# \"1\", to a greater value, up to the value \"10\". At its maximum value the\n# system will use more CPU, longer cycles (and technically may introduce\n# more latency), and will tolerate less already expired keys still present\n# in the system. It's a tradeoff between memory, CPU and latency.\n#\n# active-expire-effort 1\n\n############################# LAZY FREEING ####################################\n\n# Redis has two primitives to delete keys. One is called DEL and is a blocking\n# deletion of the object. It means that the server stops processing new commands\n# in order to reclaim all the memory associated with an object in a synchronous\n# way. If the key deleted is associated with a small object, the time needed\n# in order to execute the DEL command is very small and comparable to most other\n# O(1) or O(log_N) commands in Redis. However if the key is associated with an\n# aggregated value containing millions of elements, the server can block for\n# a long time (even seconds) in order to complete the operation.\n#\n# For the above reasons Redis also offers non blocking deletion primitives\n# such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and\n# FLUSHDB commands, in order to reclaim memory in background. Those commands\n# are executed in constant time. Another thread will incrementally free the\n# object in the background as fast as possible.\n#\n# DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled.\n# It's up to the design of the application to understand when it is a good\n# idea to use one or the other. However the Redis server sometimes has to\n# delete keys or flush the whole database as a side effect of other operations.\n# Specifically Redis deletes objects independently of a user call in the\n# following scenarios:\n#\n# 1) On eviction, because of the maxmemory and maxmemory policy configurations,\n#    in order to make room for new data, without going over the specified\n#    memory limit.\n# 2) Because of expire: when a key with an associated time to live (see the\n#    EXPIRE command) must be deleted from memory.\n# 3) Because of a side effect of a command that stores data on a key that may\n#    already exist. For example the RENAME command may delete the old key\n#    content when it is replaced with another one. Similarly SUNIONSTORE\n#    or SORT with STORE option may delete existing keys. The SET command\n#    itself removes any old content of the specified key in order to replace\n#    it with the specified string.\n# 4) During replication, when a replica performs a full resynchronization with\n#    its master, the content of the whole database is removed in order to\n#    load the RDB file just transferred.\n#\n# In all the above cases the default is to delete objects in a blocking way,\n# like if DEL was called. However you can configure each case specifically\n# in order to instead release memory in a non-blocking way like if UNLINK\n# was called, using the following configuration directives.\n\nlazyfree-lazy-eviction no\nlazyfree-lazy-expire no\nlazyfree-lazy-server-del no\nreplica-lazy-flush no\n\n# It is also possible, for the case when to replace the user code DEL calls\n# with UNLINK calls is not easy, to modify the default behavior of the DEL\n# command to act exactly like UNLINK, using the following configuration\n# directive:\n\nlazyfree-lazy-user-del no\n\n# FLUSHDB, FLUSHALL, SCRIPT FLUSH and FUNCTION FLUSH support both asynchronous and synchronous\n# deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the\n# commands. When neither flag is passed, this directive will be used to determine\n# if the data should be deleted asynchronously.\n\nlazyfree-lazy-user-flush no\n\n################################ THREADED I/O #################################\n\n# Redis is mostly single threaded, however there are certain threaded\n# operations such as UNLINK, slow I/O accesses and other things that are\n# performed on side threads.\n#\n# Now it is also possible to handle Redis clients socket reads and writes\n# in different I/O threads. Since especially writing is so slow, normally\n# Redis users use pipelining in order to speed up the Redis performances per\n# core, and spawn multiple instances in order to scale more. Using I/O\n# threads it is possible to easily speedup two times Redis without resorting\n# to pipelining nor sharding of the instance.\n#\n# By default threading is disabled, we suggest enabling it only in machines\n# that have at least 4 or more cores, leaving at least one spare core.\n# Using more than 8 threads is unlikely to help much. We also recommend using\n# threaded I/O only if you actually have performance problems, with Redis\n# instances being able to use a quite big percentage of CPU time, otherwise\n# there is no point in using this feature.\n#\n# So for instance if you have a four cores boxes, try to use 2 or 3 I/O\n# threads, if you have a 8 cores, try to use 6 threads. In order to\n# enable I/O threads use the following configuration directive:\n#\n# io-threads 4\n#\n# Setting io-threads to 1 will just use the main thread as usual.\n# When I/O threads are enabled, we only use threads for writes, that is\n# to thread the write(2) syscall and transfer the client buffers to the\n# socket. However it is also possible to enable threading of reads and\n# protocol parsing using the following configuration directive, by setting\n# it to yes:\n#\n# io-threads-do-reads no\n#\n# Usually threading reads doesn't help much.\n#\n# NOTE 1: This configuration directive cannot be changed at runtime via\n# CONFIG SET. Also, this feature currently does not work when SSL is\n# enabled.\n#\n# NOTE 2: If you want to test the Redis speedup using redis-benchmark, make\n# sure you also run the benchmark itself in threaded mode, using the\n# --threads option to match the number of Redis threads, otherwise you'll not\n# be able to notice the improvements.\n\n############################ KERNEL OOM CONTROL ##############################\n\n# On Linux, it is possible to hint the kernel OOM killer on what processes\n# should be killed first when out of memory.\n#\n# Enabling this feature makes Redis actively control the oom_score_adj value\n# for all its processes, depending on their role. The default scores will\n# attempt to have background child processes killed before all others, and\n# replicas killed before masters.\n#\n# Redis supports these options:\n#\n# no:       Don't make changes to oom-score-adj (default).\n# yes:      Alias to \"relative\" see below.\n# absolute: Values in oom-score-adj-values are written as is to the kernel.\n# relative: Values are used relative to the initial value of oom_score_adj when\n#           the server starts and are then clamped to a range of -1000 to 1000.\n#           Because typically the initial value is 0, they will often match the\n#           absolute values.\noom-score-adj no\n\n# When oom-score-adj is used, this directive controls the specific values used\n# for master, replica and background child processes. Values range -2000 to\n# 2000 (higher means more likely to be killed).\n#\n# Unprivileged processes (not root, and without CAP_SYS_RESOURCE capabilities)\n# can freely increase their value, but not decrease it below its initial\n# settings. This means that setting oom-score-adj to \"relative\" and setting the\n# oom-score-adj-values to positive values will always succeed.\noom-score-adj-values 0 200 800\n\n\n#################### KERNEL transparent hugepage CONTROL ######################\n\n# Usually the kernel Transparent Huge Pages control is set to \"madvise\" or\n# or \"never\" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which\n# case this config has no effect. On systems in which it is set to \"always\",\n# redis will attempt to disable it specifically for the redis process in order\n# to avoid latency problems specifically with fork(2) and CoW.\n# If for some reason you prefer to keep it enabled, you can set this config to\n# \"no\" and the kernel global to \"always\".\n\ndisable-thp yes\n\n############################## APPEND ONLY MODE ###############################\n\n# By default Redis asynchronously dumps the dataset on disk. This mode is\n# good enough in many applications, but an issue with the Redis process or\n# a power outage may result into a few minutes of writes lost (depending on\n# the configured save points).\n#\n# The Append Only File is an alternative persistence mode that provides\n# much better durability. For instance using the default data fsync policy\n# (see later in the config file) Redis can lose just one second of writes in a\n# dramatic event like a server power outage, or a single write if something\n# wrong with the Redis process itself happens, but the operating system is\n# still running correctly.\n#\n# AOF and RDB persistence can be enabled at the same time without problems.\n# If the AOF is enabled on startup Redis will load the AOF, that is the file\n# with the better durability guarantees.\n#\n# Please check https://redis.io/topics/persistence for more information.\n\nappendonly no\n\n# The base name of the append only file.\n#\n# Redis 7 and newer use a set of append-only files to persist the dataset\n# and changes applied to it. There are two basic types of files in use:\n#\n# - Base files, which are a snapshot representing the complete state of the\n#   dataset at the time the file was created. Base files can be either in\n#   the form of RDB (binary serialized) or AOF (textual commands).\n# - Incremental files, which contain additional commands that were applied\n#   to the dataset following the previous file.\n#\n# In addition, manifest files are used to track the files and the order in\n# which they were created and should be applied.\n#\n# Append-only file names are created by Redis following a specific pattern.\n# The file name's prefix is based on the 'appendfilename' configuration\n# parameter, followed by additional information about the sequence and type.\n#\n# For example, if appendfilename is set to appendonly.aof, the following file\n# names could be derived:\n#\n# - appendonly.aof.1.base.rdb as a base file.\n# - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files.\n# - appendonly.aof.manifest as a manifest file.\n\nappendfilename \"appendonly.aof\"\n\n# For convenience, Redis stores all persistent append-only files in a dedicated\n# directory. The name of the directory is determined by the appenddirname\n# configuration parameter.\n\nappenddirname \"appendonlydir\"\n\n# The fsync() call tells the Operating System to actually write data on disk\n# instead of waiting for more data in the output buffer. Some OS will really flush\n# data on disk, some other OS will just try to do it ASAP.\n#\n# Redis supports three different modes:\n#\n# no: don't fsync, just let the OS flush the data when it wants. Faster.\n# always: fsync after every write to the append only log. Slow, Safest.\n# everysec: fsync only one time every second. Compromise.\n#\n# The default is \"everysec\", as that's usually the right compromise between\n# speed and data safety. It's up to you to understand if you can relax this to\n# \"no\" that will let the operating system flush the output buffer when\n# it wants, for better performances (but if you can live with the idea of\n# some data loss consider the default persistence mode that's snapshotting),\n# or on the contrary, use \"always\" that's very slow but a bit safer than\n# everysec.\n#\n# More details please check the following article:\n# http://antirez.com/post/redis-persistence-demystified.html\n#\n# If unsure, use \"everysec\".\n\n# appendfsync always\nappendfsync everysec\n# appendfsync no\n\n# When the AOF fsync policy is set to always or everysec, and a background\n# saving process (a background save or AOF log background rewriting) is\n# performing a lot of I/O against the disk, in some Linux configurations\n# Redis may block too long on the fsync() call. Note that there is no fix for\n# this currently, as even performing fsync in a different thread will block\n# our synchronous write(2) call.\n#\n# In order to mitigate this problem it's possible to use the following option\n# that will prevent fsync() from being called in the main process while a\n# BGSAVE or BGREWRITEAOF is in progress.\n#\n# This means that while another child is saving, the durability of Redis is\n# the same as \"appendfsync no\". In practical terms, this means that it is\n# possible to lose up to 30 seconds of log in the worst scenario (with the\n# default Linux settings).\n#\n# If you have latency problems turn this to \"yes\". Otherwise leave it as\n# \"no\" that is the safest pick from the point of view of durability.\n\nno-appendfsync-on-rewrite no\n\n# Automatic rewrite of the append only file.\n# Redis is able to automatically rewrite the log file implicitly calling\n# BGREWRITEAOF when the AOF log size grows by the specified percentage.\n#\n# This is how it works: Redis remembers the size of the AOF file after the\n# latest rewrite (if no rewrite has happened since the restart, the size of\n# the AOF at startup is used).\n#\n# This base size is compared to the current size. If the current size is\n# bigger than the specified percentage, the rewrite is triggered. Also\n# you need to specify a minimal size for the AOF file to be rewritten, this\n# is useful to avoid rewriting the AOF file even if the percentage increase\n# is reached but it is still pretty small.\n#\n# Specify a percentage of zero in order to disable the automatic AOF\n# rewrite feature.\n\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\n\n# An AOF file may be found to be truncated at the end during the Redis\n# startup process, when the AOF data gets loaded back into memory.\n# This may happen when the system where Redis is running\n# crashes, especially when an ext4 filesystem is mounted without the\n# data=ordered option (however this can't happen when Redis itself\n# crashes or aborts but the operating system still works correctly).\n#\n# Redis can either exit with an error when this happens, or load as much\n# data as possible (the default now) and start if the AOF file is found\n# to be truncated at the end. The following option controls this behavior.\n#\n# If aof-load-truncated is set to yes, a truncated AOF file is loaded and\n# the Redis server starts emitting a log to inform the user of the event.\n# Otherwise if the option is set to no, the server aborts with an error\n# and refuses to start. When the option is set to no, the user requires\n# to fix the AOF file using the \"redis-check-aof\" utility before to restart\n# the server.\n#\n# Note that if the AOF file will be found to be corrupted in the middle\n# the server will still exit with an error. This option only applies when\n# Redis will try to read more data from the AOF file but not enough bytes\n# will be found.\naof-load-truncated yes\n\n# Redis can create append-only base files in either RDB or AOF formats. Using\n# the RDB format is always faster and more efficient, and disabling it is only\n# supported for backward compatibility purposes.\naof-use-rdb-preamble yes\n\n# Redis supports recording timestamp annotations in the AOF to support restoring\n# the data from a specific point-in-time. However, using this capability changes\n# the AOF format in a way that may not be compatible with existing AOF parsers.\naof-timestamp-enabled no\n\n################################ SHUTDOWN #####################################\n\n# Maximum time to wait for replicas when shutting down, in seconds.\n#\n# During shut down, a grace period allows any lagging replicas to catch up with\n# the latest replication offset before the master exists. This period can\n# prevent data loss, especially for deployments without configured disk backups.\n#\n# The 'shutdown-timeout' value is the grace period's duration in seconds. It is\n# only applicable when the instance has replicas. To disable the feature, set\n# the value to 0.\n#\n# shutdown-timeout 10\n\n# When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default\n# an RDB snapshot is written to disk in a blocking operation if save points are configured.\n# The options used on signaled shutdown can include the following values:\n# default:  Saves RDB snapshot only if save points are configured.\n#           Waits for lagging replicas to catch up.\n# save:     Forces a DB saving operation even if no save points are configured.\n# nosave:   Prevents DB saving operation even if one or more save points are configured.\n# now:      Skips waiting for lagging replicas.\n# force:    Ignores any errors that would normally prevent the server from exiting.\n#\n# Any combination of values is allowed as long as \"save\" and \"nosave\" are not set simultaneously.\n# Example: \"nosave force now\"\n#\n# shutdown-on-sigint default\n# shutdown-on-sigterm default\n\n################ NON-DETERMINISTIC LONG BLOCKING COMMANDS #####################\n\n# Maximum time in milliseconds for EVAL scripts, functions and in some cases\n# modules' commands before Redis can start processing or rejecting other clients.\n#\n# If the maximum execution time is reached Redis will start to reply to most\n# commands with a BUSY error.\n#\n# In this state Redis will only allow a handful of commands to be executed.\n# For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some\n# module specific 'allow-busy' commands.\n#\n# SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not\n# yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop\n# the server in the case a write command was already issued by the script when\n# the user doesn't want to wait for the natural termination of the script.\n#\n# The default is 5 seconds. It is possible to set it to 0 or a negative value\n# to disable this mechanism (uninterrupted execution). Note that in the past\n# this config had a different name, which is now an alias, so both of these do\n# the same:\n# lua-time-limit 5000\n# busy-reply-threshold 5000\n\n################################ REDIS CLUSTER  ###############################\n\n# Normal Redis instances can't be part of a Redis Cluster; only nodes that are\n# started as cluster nodes can. In order to start a Redis instance as a\n# cluster node enable the cluster support uncommenting the following:\n#\n# cluster-enabled yes\n\n# Every cluster node has a cluster configuration file. This file is not\n# intended to be edited by hand. It is created and updated by Redis nodes.\n# Every Redis Cluster node requires a different cluster configuration file.\n# Make sure that instances running in the same system do not have\n# overlapping cluster configuration file names.\n#\n# cluster-config-file nodes-6379.conf\n\n# Cluster node timeout is the amount of milliseconds a node must be unreachable\n# for it to be considered in failure state.\n# Most other internal time limits are a multiple of the node timeout.\n#\n# cluster-node-timeout 15000\n\n# The cluster port is the port that the cluster bus will listen for inbound connections on. When set\n# to the default value, 0, it will be bound to the command port + 10000. Setting this value requires\n# you to specify the cluster bus port when executing cluster meet.\n# cluster-port 0\n\n# A replica of a failing master will avoid to start a failover if its data\n# looks too old.\n#\n# There is no simple way for a replica to actually have an exact measure of\n# its \"data age\", so the following two checks are performed:\n#\n# 1) If there are multiple replicas able to failover, they exchange messages\n#    in order to try to give an advantage to the replica with the best\n#    replication offset (more data from the master processed).\n#    Replicas will try to get their rank by offset, and apply to the start\n#    of the failover a delay proportional to their rank.\n#\n# 2) Every single replica computes the time of the last interaction with\n#    its master. This can be the last ping or command received (if the master\n#    is still in the \"connected\" state), or the time that elapsed since the\n#    disconnection with the master (if the replication link is currently down).\n#    If the last interaction is too old, the replica will not try to failover\n#    at all.\n#\n# The point \"2\" can be tuned by user. Specifically a replica will not perform\n# the failover if, since the last interaction with the master, the time\n# elapsed is greater than:\n#\n#   (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period\n#\n# So for example if node-timeout is 30 seconds, and the cluster-replica-validity-factor\n# is 10, and assuming a default repl-ping-replica-period of 10 seconds, the\n# replica will not try to failover if it was not able to talk with the master\n# for longer than 310 seconds.\n#\n# A large cluster-replica-validity-factor may allow replicas with too old data to failover\n# a master, while a too small value may prevent the cluster from being able to\n# elect a replica at all.\n#\n# For maximum availability, it is possible to set the cluster-replica-validity-factor\n# to a value of 0, which means, that replicas will always try to failover the\n# master regardless of the last time they interacted with the master.\n# (However they'll always try to apply a delay proportional to their\n# offset rank).\n#\n# Zero is the only value able to guarantee that when all the partitions heal\n# the cluster will always be able to continue.\n#\n# cluster-replica-validity-factor 10\n\n# Cluster replicas are able to migrate to orphaned masters, that are masters\n# that are left without working replicas. This improves the cluster ability\n# to resist to failures as otherwise an orphaned master can't be failed over\n# in case of failure if it has no working replicas.\n#\n# Replicas migrate to orphaned masters only if there are still at least a\n# given number of other working replicas for their old master. This number\n# is the \"migration barrier\". A migration barrier of 1 means that a replica\n# will migrate only if there is at least 1 other working replica for its master\n# and so forth. It usually reflects the number of replicas you want for every\n# master in your cluster.\n#\n# Default is 1 (replicas migrate only if their masters remain with at least\n# one replica). To disable migration just set it to a very large value or\n# set cluster-allow-replica-migration to 'no'.\n# A value of 0 can be set but is useful only for debugging and dangerous\n# in production.\n#\n# cluster-migration-barrier 1\n\n# Turning off this option allows to use less automatic cluster configuration.\n# It both disables migration to orphaned masters and migration from masters\n# that became empty.\n#\n# Default is 'yes' (allow automatic migrations).\n#\n# cluster-allow-replica-migration yes\n\n# By default Redis Cluster nodes stop accepting queries if they detect there\n# is at least a hash slot uncovered (no available node is serving it).\n# This way if the cluster is partially down (for example a range of hash slots\n# are no longer covered) all the cluster becomes, eventually, unavailable.\n# It automatically returns available as soon as all the slots are covered again.\n#\n# However sometimes you want the subset of the cluster which is working,\n# to continue to accept queries for the part of the key space that is still\n# covered. In order to do so, just set the cluster-require-full-coverage\n# option to no.\n#\n# cluster-require-full-coverage yes\n\n# This option, when set to yes, prevents replicas from trying to failover its\n# master during master failures. However the replica can still perform a\n# manual failover, if forced to do so.\n#\n# This is useful in different scenarios, especially in the case of multiple\n# data center operations, where we want one side to never be promoted if not\n# in the case of a total DC failure.\n#\n# cluster-replica-no-failover no\n\n# This option, when set to yes, allows nodes to serve read traffic while the\n# cluster is in a down state, as long as it believes it owns the slots.\n#\n# This is useful for two cases.  The first case is for when an application\n# doesn't require consistency of data during node failures or network partitions.\n# One example of this is a cache, where as long as the node has the data it\n# should be able to serve it.\n#\n# The second use case is for configurations that don't meet the recommended\n# three shards but want to enable cluster mode and scale later. A\n# master outage in a 1 or 2 shard configuration causes a read/write outage to the\n# entire cluster without this option set, with it set there is only a write outage.\n# Without a quorum of masters, slot ownership will not change automatically.\n#\n# cluster-allow-reads-when-down no\n\n# This option, when set to yes, allows nodes to serve pubsub shard traffic while\n# the cluster is in a down state, as long as it believes it owns the slots.\n#\n# This is useful if the application would like to use the pubsub feature even when\n# the cluster global stable state is not OK. If the application wants to make sure only\n# one shard is serving a given channel, this feature should be kept as yes.\n#\n# cluster-allow-pubsubshard-when-down yes\n\n# Cluster link send buffer limit is the limit on the memory usage of an individual\n# cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed\n# this limit. This is to primarily prevent send buffers from growing unbounded on links\n# toward slow peers (E.g. PubSub messages being piled up).\n# This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field\n# and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase.\n# Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single\n# PubSub message by default. (client-query-buffer-limit default value is 1gb)\n#\n# cluster-link-sendbuf-limit 0\n\n# Clusters can configure their announced hostname using this config. This is a common use case for\n# applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based\n# routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS\n# command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is\n# communicated along the clusterbus to all nodes, setting it to an empty string will remove\n# the hostname and also propagate the removal.\n#\n# cluster-announce-hostname \"\"\n\n# Clusters can advertise how clients should connect to them using either their IP address,\n# a user defined hostname, or by declaring they have no endpoint. Which endpoint is\n# shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type\n# config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how\n# the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS.\n# If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?'\n# will be returned instead.\n#\n# When a cluster advertises itself as having an unknown endpoint, it's indicating that\n# the server doesn't know how clients can reach the cluster. This can happen in certain\n# networking situations where there are multiple possible routes to the node, and the\n# server doesn't know which one the client took. In this case, the server is expecting\n# the client to reach out on the same endpoint it used for making the last request, but use\n# the port provided in the response.\n#\n# cluster-preferred-endpoint-type ip\n\n# In order to setup your cluster make sure to read the documentation\n# available at https://redis.io web site.\n\n########################## CLUSTER DOCKER/NAT support  ########################\n\n# In certain deployments, Redis Cluster nodes address discovery fails, because\n# addresses are NAT-ted or because ports are forwarded (the typical case is\n# Docker and other containers).\n#\n# In order to make Redis Cluster working in such environments, a static\n# configuration where each node knows its public address is needed. The\n# following four options are used for this scope, and are:\n#\n# * cluster-announce-ip\n# * cluster-announce-port\n# * cluster-announce-tls-port\n# * cluster-announce-bus-port\n#\n# Each instructs the node about its address, client ports (for connections\n# without and with TLS) and cluster message bus port. The information is then\n# published in the header of the bus packets so that other nodes will be able to\n# correctly map the address of the node publishing the information.\n#\n# If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set\n# to zero, then cluster-announce-port refers to the TLS port. Note also that\n# cluster-announce-tls-port has no effect if cluster-tls is set to no.\n#\n# If the above options are not used, the normal Redis Cluster auto-detection\n# will be used instead.\n#\n# Note that when remapped, the bus port may not be at the fixed offset of\n# clients port + 10000, so you can specify any port and bus-port depending\n# on how they get remapped. If the bus-port is not set, a fixed offset of\n# 10000 will be used as usual.\n#\n# Example:\n#\n# cluster-announce-ip 10.1.1.5\n# cluster-announce-tls-port 6379\n# cluster-announce-port 0\n# cluster-announce-bus-port 6380\n\n################################## SLOW LOG ###################################\n\n# The Redis Slow Log is a system to log queries that exceeded a specified\n# execution time. The execution time does not include the I/O operations\n# like talking with the client, sending the reply and so forth,\n# but just the time needed to actually execute the command (this is the only\n# stage of command execution where the thread is blocked and can not serve\n# other requests in the meantime).\n#\n# You can configure the slow log with two parameters: one tells Redis\n# what is the execution time, in microseconds, to exceed in order for the\n# command to get logged, and the other parameter is the length of the\n# slow log. When a new command is logged the oldest one is removed from the\n# queue of logged commands.\n\n# The following time is expressed in microseconds, so 1000000 is equivalent\n# to one second. Note that a negative number disables the slow log, while\n# a value of zero forces the logging of every command.\nslowlog-log-slower-than 10000\n\n# There is no limit to this length. Just be aware that it will consume memory.\n# You can reclaim memory used by the slow log with SLOWLOG RESET.\nslowlog-max-len 128\n\n################################ LATENCY MONITOR ##############################\n\n# The Redis latency monitoring subsystem samples different operations\n# at runtime in order to collect data related to possible sources of\n# latency of a Redis instance.\n#\n# Via the LATENCY command this information is available to the user that can\n# print graphs and obtain reports.\n#\n# The system only logs operations that were performed in a time equal or\n# greater than the amount of milliseconds specified via the\n# latency-monitor-threshold configuration directive. When its value is set\n# to zero, the latency monitor is turned off.\n#\n# By default latency monitoring is disabled since it is mostly not needed\n# if you don't have latency issues, and collecting data has a performance\n# impact, that while very small, can be measured under big load. Latency\n# monitoring can easily be enabled at runtime using the command\n# \"CONFIG SET latency-monitor-threshold <milliseconds>\" if needed.\nlatency-monitor-threshold 0\n\n################################ LATENCY TRACKING ##############################\n\n# The Redis extended latency monitoring tracks the per command latencies and enables\n# exporting the percentile distribution via the INFO latencystats command,\n# and cumulative latency distributions (histograms) via the LATENCY command.\n#\n# By default, the extended latency monitoring is enabled since the overhead\n# of keeping track of the command latency is very small.\n# latency-tracking yes\n\n# By default the exported latency percentiles via the INFO latencystats command\n# are the p50, p99, and p999.\n# latency-tracking-info-percentiles 50 99 99.9\n\n############################# EVENT NOTIFICATION ##############################\n\n# Redis can notify Pub/Sub clients about events happening in the key space.\n# This feature is documented at https://redis.io/topics/notifications\n#\n# For instance if keyspace events notification is enabled, and a client\n# performs a DEL operation on key \"foo\" stored in the Database 0, two\n# messages will be published via Pub/Sub:\n#\n# PUBLISH __keyspace@0__:foo del\n# PUBLISH __keyevent@0__:del foo\n#\n# It is possible to select the events that Redis will notify among a set\n# of classes. Every class is identified by a single character:\n#\n#  K     Keyspace events, published with __keyspace@<db>__ prefix.\n#  E     Keyevent events, published with __keyevent@<db>__ prefix.\n#  g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...\n#  $     String commands\n#  l     List commands\n#  s     Set commands\n#  h     Hash commands\n#  z     Sorted set commands\n#  x     Expired events (events generated every time a key expires)\n#  e     Evicted events (events generated when a key is evicted for maxmemory)\n#  n     New key events (Note: not included in the 'A' class)\n#  t     Stream commands\n#  d     Module key type events\n#  m     Key-miss events (Note: It is not included in the 'A' class)\n#  A     Alias for g$lshzxetd, so that the \"AKE\" string means all the events\n#        (Except key-miss events which are excluded from 'A' due to their\n#         unique nature).\n#\n#  The \"notify-keyspace-events\" takes as argument a string that is composed\n#  of zero or multiple characters. The empty string means that notifications\n#  are disabled.\n#\n#  Example: to enable list and generic events, from the point of view of the\n#           event name, use:\n#\n#  notify-keyspace-events Elg\n#\n#  Example 2: to get the stream of the expired keys subscribing to channel\n#             name __keyevent@0__:expired use:\n#\n#  notify-keyspace-events Ex\n#\n#  By default all notifications are disabled because most users don't need\n#  this feature and the feature has some overhead. Note that if you don't\n#  specify at least one of K or E, no events will be delivered.\nnotify-keyspace-events \"\"\n\n############################### ADVANCED CONFIG ###############################\n\n# Hashes are encoded using a memory efficient data structure when they have a\n# small number of entries, and the biggest entry does not exceed a given\n# threshold. These thresholds can be configured using the following directives.\nhash-max-listpack-entries 512\nhash-max-listpack-value 64\n\n# Lists are also encoded in a special way to save a lot of space.\n# The number of entries allowed per internal list node can be specified\n# as a fixed maximum size or a maximum number of elements.\n# For a fixed maximum size, use -5 through -1, meaning:\n# -5: max size: 64 Kb  <-- not recommended for normal workloads\n# -4: max size: 32 Kb  <-- not recommended\n# -3: max size: 16 Kb  <-- probably not recommended\n# -2: max size: 8 Kb   <-- good\n# -1: max size: 4 Kb   <-- good\n# Positive numbers mean store up to _exactly_ that number of elements\n# per list node.\n# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),\n# but if your use case is unique, adjust the settings as necessary.\nlist-max-listpack-size -2\n\n# Lists may also be compressed.\n# Compress depth is the number of quicklist ziplist nodes from *each* side of\n# the list to *exclude* from compression.  The head and tail of the list\n# are always uncompressed for fast push/pop operations.  Settings are:\n# 0: disable all list compression\n# 1: depth 1 means \"don't start compressing until after 1 node into the list,\n#    going from either the head or tail\"\n#    So: [head]->node->node->...->node->[tail]\n#    [head], [tail] will always be uncompressed; inner nodes will compress.\n# 2: [head]->[next]->node->node->...->node->[prev]->[tail]\n#    2 here means: don't compress head or head->next or tail->prev or tail,\n#    but compress all nodes between them.\n# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]\n# etc.\nlist-compress-depth 0\n\n# Sets have a special encoding in just one case: when a set is composed\n# of just strings that happen to be integers in radix 10 in the range\n# of 64 bit signed integers.\n# The following configuration setting sets the limit in the size of the\n# set in order to use this special memory saving encoding.\nset-max-intset-entries 512\n\n# Similarly to hashes and lists, sorted sets are also specially encoded in\n# order to save a lot of space. This encoding is only used when the length and\n# elements of a sorted set are below the following limits:\nzset-max-listpack-entries 128\nzset-max-listpack-value 64\n\n# HyperLogLog sparse representation bytes limit. The limit includes the\n# 16 bytes header. When an HyperLogLog using the sparse representation crosses\n# this limit, it is converted into the dense representation.\n#\n# A value greater than 16000 is totally useless, since at that point the\n# dense representation is more memory efficient.\n#\n# The suggested value is ~ 3000 in order to have the benefits of\n# the space efficient encoding without slowing down too much PFADD,\n# which is O(N) with the sparse encoding. The value can be raised to\n# ~ 10000 when CPU is not a concern, but space is, and the data set is\n# composed of many HyperLogLogs with cardinality in the 0 - 15000 range.\nhll-sparse-max-bytes 3000\n\n# Streams macro node max size / items. The stream data structure is a radix\n# tree of big nodes that encode multiple items inside. Using this configuration\n# it is possible to configure how big a single node can be in bytes, and the\n# maximum number of items it may contain before switching to a new node when\n# appending new stream entries. If any of the following settings are set to\n# zero, the limit is ignored, so for instance it is possible to set just a\n# max entries limit by setting max-bytes to 0 and max-entries to the desired\n# value.\nstream-node-max-bytes 4096\nstream-node-max-entries 100\n\n# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in\n# order to help rehashing the main Redis hash table (the one mapping top-level\n# keys to values). The hash table implementation Redis uses (see dict.c)\n# performs a lazy rehashing: the more operation you run into a hash table\n# that is rehashing, the more rehashing \"steps\" are performed, so if the\n# server is idle the rehashing is never complete and some more memory is used\n# by the hash table.\n#\n# The default is to use this millisecond 10 times every second in order to\n# actively rehash the main dictionaries, freeing memory when possible.\n#\n# If unsure:\n# use \"activerehashing no\" if you have hard latency requirements and it is\n# not a good thing in your environment that Redis can reply from time to time\n# to queries with 2 milliseconds delay.\n#\n# use \"activerehashing yes\" if you don't have such hard requirements but\n# want to free memory asap when possible.\nactiverehashing yes\n\n# The client output buffer limits can be used to force disconnection of clients\n# that are not reading data from the server fast enough for some reason (a\n# common reason is that a Pub/Sub client can't consume messages as fast as the\n# publisher can produce them).\n#\n# The limit can be set differently for the three different classes of clients:\n#\n# normal -> normal clients including MONITOR clients\n# replica -> replica clients\n# pubsub -> clients subscribed to at least one pubsub channel or pattern\n#\n# The syntax of every client-output-buffer-limit directive is the following:\n#\n# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>\n#\n# A client is immediately disconnected once the hard limit is reached, or if\n# the soft limit is reached and remains reached for the specified number of\n# seconds (continuously).\n# So for instance if the hard limit is 32 megabytes and the soft limit is\n# 16 megabytes / 10 seconds, the client will get disconnected immediately\n# if the size of the output buffers reach 32 megabytes, but will also get\n# disconnected if the client reaches 16 megabytes and continuously overcomes\n# the limit for 10 seconds.\n#\n# By default normal clients are not limited because they don't receive data\n# without asking (in a push way), but just after a request, so only\n# asynchronous clients may create a scenario where data is requested faster\n# than it can read.\n#\n# Instead there is a default limit for pubsub and replica clients, since\n# subscribers and replicas receive data in a push fashion.\n#\n# Note that it doesn't make sense to set the replica clients output buffer\n# limit lower than the repl-backlog-size config (partial sync will succeed\n# and then replica will get disconnected).\n# Such a configuration is ignored (the size of repl-backlog-size will be used).\n# This doesn't have memory consumption implications since the replica client\n# will share the backlog buffers memory.\n#\n# Both the hard or the soft limit can be disabled by setting them to zero.\nclient-output-buffer-limit normal 0 0 0\nclient-output-buffer-limit replica 256mb 64mb 60\nclient-output-buffer-limit pubsub 32mb 8mb 60\n\n# Client query buffers accumulate new commands. They are limited to a fixed\n# amount by default in order to avoid that a protocol desynchronization (for\n# instance due to a bug in the client) will lead to unbound memory usage in\n# the query buffer. However you can configure it here if you have very special\n# needs, such us huge multi/exec requests or alike.\n#\n# client-query-buffer-limit 1gb\n\n# In some scenarios client connections can hog up memory leading to OOM\n# errors or data eviction. To avoid this we can cap the accumulated memory\n# used by all client connections (all pubsub and normal clients). Once we\n# reach that limit connections will be dropped by the server freeing up\n# memory. The server will attempt to drop the connections using the most\n# memory first. We call this mechanism \"client eviction\".\n#\n# Client eviction is configured using the maxmemory-clients setting as follows:\n# 0 - client eviction is disabled (default)\n#\n# A memory value can be used for the client eviction threshold,\n# for example:\n# maxmemory-clients 1g\n#\n# A percentage value (between 1% and 100%) means the client eviction threshold\n# is based on a percentage of the maxmemory setting. For example to set client\n# eviction at 5% of maxmemory:\n# maxmemory-clients 5%\n\n# In the Redis protocol, bulk requests, that are, elements representing single\n# strings, are normally limited to 512 mb. However you can change this limit\n# here, but must be 1mb or greater\n#\n# proto-max-bulk-len 512mb\n\n# Redis calls an internal function to perform many background tasks, like\n# closing connections of clients in timeout, purging expired keys that are\n# never requested, and so forth.\n#\n# Not all tasks are performed with the same frequency, but Redis checks for\n# tasks to perform according to the specified \"hz\" value.\n#\n# By default \"hz\" is set to 10. Raising the value will use more CPU when\n# Redis is idle, but at the same time will make Redis more responsive when\n# there are many keys expiring at the same time, and timeouts may be\n# handled with more precision.\n#\n# The range is between 1 and 500, however a value over 100 is usually not\n# a good idea. Most users should use the default of 10 and raise this up to\n# 100 only in environments where very low latency is required.\nhz 10\n\n# Normally it is useful to have an HZ value which is proportional to the\n# number of clients connected. This is useful in order, for instance, to\n# avoid too many clients are processed for each background task invocation\n# in order to avoid latency spikes.\n#\n# Since the default HZ value by default is conservatively set to 10, Redis\n# offers, and enables by default, the ability to use an adaptive HZ value\n# which will temporarily raise when there are many connected clients.\n#\n# When dynamic HZ is enabled, the actual configured HZ will be used\n# as a baseline, but multiples of the configured HZ value will be actually\n# used as needed once more clients are connected. In this way an idle\n# instance will use very little CPU time while a busy instance will be\n# more responsive.\ndynamic-hz yes\n\n# When a child rewrites the AOF file, if the following option is enabled\n# the file will be fsync-ed every 4 MB of data generated. This is useful\n# in order to commit the file to the disk more incrementally and avoid\n# big latency spikes.\naof-rewrite-incremental-fsync yes\n\n# When redis saves RDB file, if the following option is enabled\n# the file will be fsync-ed every 4 MB of data generated. This is useful\n# in order to commit the file to the disk more incrementally and avoid\n# big latency spikes.\nrdb-save-incremental-fsync yes\n\n# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good\n# idea to start with the default settings and only change them after investigating\n# how to improve the performances and how the keys LFU change over time, which\n# is possible to inspect via the OBJECT FREQ command.\n#\n# There are two tunable parameters in the Redis LFU implementation: the\n# counter logarithm factor and the counter decay time. It is important to\n# understand what the two parameters mean before changing them.\n#\n# The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis\n# uses a probabilistic increment with logarithmic behavior. Given the value\n# of the old counter, when a key is accessed, the counter is incremented in\n# this way:\n#\n# 1. A random number R between 0 and 1 is extracted.\n# 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1).\n# 3. The counter is incremented only if R < P.\n#\n# The default lfu-log-factor is 10. This is a table of how the frequency\n# counter changes with a different number of accesses with different\n# logarithmic factors:\n#\n# +--------+------------+------------+------------+------------+------------+\n# | factor | 100 hits   | 1000 hits  | 100K hits  | 1M hits    | 10M hits   |\n# +--------+------------+------------+------------+------------+------------+\n# | 0      | 104        | 255        | 255        | 255        | 255        |\n# +--------+------------+------------+------------+------------+------------+\n# | 1      | 18         | 49         | 255        | 255        | 255        |\n# +--------+------------+------------+------------+------------+------------+\n# | 10     | 10         | 18         | 142        | 255        | 255        |\n# +--------+------------+------------+------------+------------+------------+\n# | 100    | 8          | 11         | 49         | 143        | 255        |\n# +--------+------------+------------+------------+------------+------------+\n#\n# NOTE: The above table was obtained by running the following commands:\n#\n#   redis-benchmark -n 1000000 incr foo\n#   redis-cli object freq foo\n#\n# NOTE 2: The counter initial value is 5 in order to give new objects a chance\n# to accumulate hits.\n#\n# The counter decay time is the time, in minutes, that must elapse in order\n# for the key counter to be divided by two (or decremented if it has a value\n# less <= 10).\n#\n# The default value for the lfu-decay-time is 1. A special value of 0 means to\n# decay the counter every time it happens to be scanned.\n#\n# lfu-log-factor 10\n# lfu-decay-time 1\n\n########################### ACTIVE DEFRAGMENTATION #######################\n#\n# What is active defragmentation?\n# -------------------------------\n#\n# Active (online) defragmentation allows a Redis server to compact the\n# spaces left between small allocations and deallocations of data in memory,\n# thus allowing to reclaim back memory.\n#\n# Fragmentation is a natural process that happens with every allocator (but\n# less so with Jemalloc, fortunately) and certain workloads. Normally a server\n# restart is needed in order to lower the fragmentation, or at least to flush\n# away all the data and create it again. However thanks to this feature\n# implemented by Oran Agra for Redis 4.0 this process can happen at runtime\n# in a \"hot\" way, while the server is running.\n#\n# Basically when the fragmentation is over a certain level (see the\n# configuration options below) Redis will start to create new copies of the\n# values in contiguous memory regions by exploiting certain specific Jemalloc\n# features (in order to understand if an allocation is causing fragmentation\n# and to allocate it in a better place), and at the same time, will release the\n# old copies of the data. This process, repeated incrementally for all the keys\n# will cause the fragmentation to drop back to normal values.\n#\n# Important things to understand:\n#\n# 1. This feature is disabled by default, and only works if you compiled Redis\n#    to use the copy of Jemalloc we ship with the source code of Redis.\n#    This is the default with Linux builds.\n#\n# 2. You never need to enable this feature if you don't have fragmentation\n#    issues.\n#\n# 3. Once you experience fragmentation, you can enable this feature when\n#    needed with the command \"CONFIG SET activedefrag yes\".\n#\n# The configuration parameters are able to fine tune the behavior of the\n# defragmentation process. If you are not sure about what they mean it is\n# a good idea to leave the defaults untouched.\n\n# Active defragmentation is disabled by default\n# activedefrag no\n\n# Minimum amount of fragmentation waste to start active defrag\n# active-defrag-ignore-bytes 100mb\n\n# Minimum percentage of fragmentation to start active defrag\n# active-defrag-threshold-lower 10\n\n# Maximum percentage of fragmentation at which we use maximum effort\n# active-defrag-threshold-upper 100\n\n# Minimal effort for defrag in CPU percentage, to be used when the lower\n# threshold is reached\n# active-defrag-cycle-min 1\n\n# Maximal effort for defrag in CPU percentage, to be used when the upper\n# threshold is reached\n# active-defrag-cycle-max 25\n\n# Maximum number of set/hash/zset/list fields that will be processed from\n# the main dictionary scan\n# active-defrag-max-scan-fields 1000\n\n# Jemalloc background thread for purging will be enabled by default\njemalloc-bg-thread yes\n\n# It is possible to pin different threads and processes of Redis to specific\n# CPUs in your system, in order to maximize the performances of the server.\n# This is useful both in order to pin different Redis threads in different\n# CPUs, but also in order to make sure that multiple Redis instances running\n# in the same host will be pinned to different CPUs.\n#\n# Normally you can do this using the \"taskset\" command, however it is also\n# possible to this via Redis configuration directly, both in Linux and FreeBSD.\n#\n# You can pin the server/IO threads, bio threads, aof rewrite child process, and\n# the bgsave child process. The syntax to specify the cpu list is the same as\n# the taskset command:\n#\n# Set redis server/io threads to cpu affinity 0,2,4,6:\n# server_cpulist 0-7:2\n#\n# Set bio threads to cpu affinity 1,3:\n# bio_cpulist 1,3\n#\n# Set aof rewrite child process to cpu affinity 8,9,10,11:\n# aof_rewrite_cpulist 8-11\n#\n# Set bgsave child process to cpu affinity 1,10,11\n# bgsave_cpulist 1,10-11\n\n# In some cases redis will emit warnings and even refuse to start if it detects\n# that the system is in bad state, it is possible to suppress these warnings\n# by setting the following config which takes a space delimited list of warnings\n# to suppress\n#\n# ignore-warnings ARM64-COW-BUG"
  },
  {
    "path": "src/backend/Dockerfile",
    "content": "FROM dataelement/bisheng-backend:base.v8\n\nWORKDIR /app\n\nCOPY ./ ./\n\n# 生成并安装依赖\nRUN uv pip compile pyproject.toml --upgrade --output-file requirements.txt && \\\n    uv pip install -r requirements.txt --system --no-cache-dir && \\\n    uv cache clean && \\\n    rm -f requirements.txt\n\n\n# patch langchain-openai lib. remove this when langchain-openai support reasoning_content\nRUN patch -p1 < /app/bisheng/patches/langchain_openai.patch /usr/local/lib/python3.10/site-packages/langchain_openai/chat_models/base.py\n\n\nCMD [\"sh entrypoint.sh\"]\n"
  },
  {
    "path": "src/backend/README.md",
    "content": "# 毕昇后端代码\n\n* Dockerfile 使用 uv 进行 Python 依赖管理\n"
  },
  {
    "path": "src/backend/alembic.ini",
    "content": "# A generic, single database configuration.\n\n[alembic]\n# path to migration scripts.\n# this is typically a path given in POSIX (e.g. forward slashes)\n# format, relative to the token %(here)s which refers to the location of this\n# ini file\nscript_location = ./bisheng/core/database/alembic\n\n# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s\n# Uncomment the line below if you want the files to be prepended with date and time\n# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file\n# for all available tokens\nfile_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s\n\n# sys.path path, will be prepended to sys.path if present.\n# defaults to the current working directory.  for multiple paths, the path separator\n# is defined by \"path_separator\" below.\nprepend_sys_path = .\n\n\n# timezone to use when rendering the date within the migration file\n# as well as the filename.\n# If specified, requires the tzdata library which can be installed by adding\n# `alembic[tz]` to the pip requirements.\n# string value is passed to ZoneInfo()\n# leave blank for localtime\n# timezone =\n\n# max length of characters to apply to the \"slug\" field\n# truncate_slug_length = 40\n\n# set to 'true' to run the environment during\n# the 'revision' command, regardless of autogenerate\n# revision_environment = false\n\n# set to 'true' to allow .pyc and .pyo files without\n# a source .py file to be detected as revisions in the\n# versions/ directory\n# sourceless = false\n\n# version location specification; This defaults\n# to <script_location>/versions.  When using multiple version\n# directories, initial revisions must be specified with --version-path.\n# The path separator used here should be the separator specified by \"path_separator\"\n# below.\n# version_locations = %(here)s/bar:%(here)s/bat:%(here)s/alembic/versions\n\n# path_separator; This indicates what character is used to split lists of file\n# paths, including version_locations and prepend_sys_path within configparser\n# files such as alembic.ini.\n# The default rendered in new alembic.ini files is \"os\", which uses os.pathsep\n# to provide os-dependent path splitting.\n#\n# Note that in order to support legacy alembic.ini files, this default does NOT\n# take place if path_separator is not present in alembic.ini.  If this\n# option is omitted entirely, fallback logic is as follows:\n#\n# 1. Parsing of the version_locations option falls back to using the legacy\n#    \"version_path_separator\" key, which if absent then falls back to the legacy\n#    behavior of splitting on spaces and/or commas.\n# 2. Parsing of the prepend_sys_path option falls back to the legacy\n#    behavior of splitting on spaces, commas, or colons.\n#\n# Valid values for path_separator are:\n#\n# path_separator = :\n# path_separator = ;\n# path_separator = space\n# path_separator = newline\n#\n# Use os.pathsep. Default configuration used for new projects.\npath_separator = os\n\n# set to 'true' to search source files recursively\n# in each \"version_locations\" directory\n# new in Alembic version 1.10\n# recursive_version_locations = false\n\n# the output encoding used when revision files\n# are written from script.py.mako\n# output_encoding = utf-8\n\n# database URL.  This is consumed by the user-maintained env.py script only.\n# other means of configuring database URLs may be customized within the env.py\n# file.\n# sqlalchemy.url =\n\n\n[post_write_hooks]\n# post_write_hooks defines scripts or Python functions that are run\n# on newly generated revision scripts.  See the documentation for further\n# detail and examples\n\n# format using \"black\" - use the console_scripts runner, against the \"black\" entrypoint\n# hooks = black\n# black.type = console_scripts\n# black.entrypoint = black\n# black.options = -l 79 REVISION_SCRIPT_FILENAME\n\n# lint with attempts to fix using \"ruff\" - use the module runner, against the \"ruff\" module\n# hooks = ruff\n# ruff.type = module\n# ruff.module = ruff\n# ruff.options = check --fix REVISION_SCRIPT_FILENAME\n\n# Alternatively, use the exec runner to execute a binary found on your PATH\n# hooks = ruff\n# ruff.type = exec\n# ruff.executable = ruff\n# ruff.options = check --fix REVISION_SCRIPT_FILENAME\n\n# Logging configuration.  This is also consumed by the user-maintained\n# env.py script only.\n[loggers]\nkeys = root,sqlalchemy,alembic\n\n[handlers]\nkeys = console\n\n[formatters]\nkeys = generic\n\n[logger_root]\nlevel = WARNING\nhandlers = console\nqualname =\n\n[logger_sqlalchemy]\nlevel = WARNING\nhandlers =\nqualname = sqlalchemy.engine\n\n[logger_alembic]\nlevel = INFO\nhandlers =\nqualname = alembic\n\n[handler_console]\nclass = StreamHandler\nargs = (sys.stderr,)\nlevel = NOTSET\nformatter = generic\n\n[formatter_generic]\nformat = %(levelname)-5.5s [%(name)s] %(message)s\ndatefmt = %H:%M:%S\n"
  },
  {
    "path": "src/backend/base.Dockerfile",
    "content": "FROM python:3.10-slim\n\nARG PANDOC_ARCH=amd64\nENV PANDOC_ARCH=$PANDOC_ARCH\nENV PATH=\"${PATH}:/root/.local/bin\"\n\nWORKDIR /app\n\n# 安装依赖（合并指令、清理缓存、禁用推荐包）\nRUN apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n    gcc g++ curl build-essential libreoffice \\\n    wget procps vim fonts-wqy-zenhei \\\n    libglib2.0-0 libsm6 libxrender1 libxext6 libgl1 \\\n    && rm -rf /var/lib/apt/lists/*\n\n# 安装 FFmpeg\nRUN apt-get update && apt-get install -y --no-install-recommends ffmpeg && rm -rf /var/lib/apt/lists/*\n\n\n# 安装 pandoc\nRUN mkdir -p /opt/pandoc && \\\n    cd /opt/pandoc && \\\n    wget https://github.com/jgm/pandoc/releases/download/3.6.4/pandoc-3.6.4-linux-${PANDOC_ARCH}.tar.gz && \\\n    tar xvf pandoc-3.6.4-linux-${PANDOC_ARCH}.tar.gz && \\\n    cp pandoc-3.6.4/bin/pandoc /usr/bin/ && \\\n    rm -rf /opt/pandoc\n\n# 安装 uv\nRUN curl -LsSf https://astral.sh/uv/install.sh | sh\n\n# 安装 Poetry\n#RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.8.2\n\n# 拷贝项目依赖文件\nCOPY ./pyproject.toml ./\n\n# 安装 Python 依赖\nRUN python -m pip install --upgrade pip && \\\n    uv pip compile pyproject.toml --output-file requirements.txt && \\\n    uv pip install -r requirements.txt --system --no-cache-dir && \\\n    uv cache clean\n\n\n\n#RUN python -m pip install --upgrade pip && \\\n#    pip install shapely==2.0.1 && \\\n#    poetry config virtualenvs.create false && \\\n#    poetry install --no-interaction --no-ansi --without dev\n\n# 安装 NLTK 数据\nRUN python -c \"import nltk; nltk.download('punkt'); nltk.download('punkt_tab'); nltk.download('averaged_perceptron_tagger'); nltk.download('averaged_perceptron_tagger_eng')\"\n\n# 安装 playwright chromium\nRUN playwright install chromium && playwright install-deps\n\nCOPY . .\n\nCMD [\"sh\", \"entrypoint.sh\"]\n\n"
  },
  {
    "path": "src/backend/bisheng/.gitignore",
    "content": "config.yaml"
  },
  {
    "path": "src/backend/bisheng/__init__.py",
    "content": "from importlib import metadata\n\nfrom bisheng.core.cache import cache_manager\nfrom bisheng.interface.custom.custom_component import CustomComponent\n\n# from bisheng.processing.process import load_flow_from_json  # noqa: E402\n\ntry:\n    # SetujuciGo to automatic modification\n    __version__ = '2.4.0-beta1-fix'\nexcept metadata.PackageNotFoundError:\n    # Case where package metadata is not available.\n    __version__ = ''\ndel metadata  # optional, avoids polluting the results of dir(__package__)\n\n__all__ = ['cache_manager', 'CustomComponent']\n"
  },
  {
    "path": "src/backend/bisheng/api/__init__.py",
    "content": "from bisheng.api.router import router, router_rpc\n\n__all__ = ['router', 'router_rpc']\n"
  },
  {
    "path": "src/backend/bisheng/api/router.py",
    "content": "# Router for base api\nfrom fastapi import APIRouter\n\nfrom bisheng.api.v1 import (assistant_router, audit_router, chat_router, component_router,\n                            endpoints_router, evaluation_router, flows_router,\n                            group_router, mark_router,\n                            report_router, skillcenter_router, tag_router,\n                            user_router, validate_router, variable_router, workflow_router,\n                            workstation_router, tool_router, invite_code_router)\nfrom bisheng.chat_session.api.router import router as session_router\nfrom bisheng.finetune.api.finetune import router as finetune_router\nfrom bisheng.finetune.api.server import router as server_router\nfrom bisheng.knowledge.api.router import qa_router, knowledge_router\nfrom bisheng.llm.api.router import router as llm_router\nfrom bisheng.open_endpoints.api.endpoints.llm import router as llm_router_rpc\nfrom bisheng.open_endpoints.api.router import (assistant_router_rpc, chat_router_rpc, flow_router,\n                                               knowledge_router_rpc, workflow_router_rpc,\n                                               filelib_router_rpc)\nfrom bisheng.share_link.api.router import router as share_link_router\nfrom bisheng.linsight.api.router import router as linsight_router\nfrom bisheng.telemetry_search.api.router import router as telemetry_search_router\n\nrouter = APIRouter(prefix='/api/v1', )\nrouter.include_router(chat_router)\nrouter.include_router(endpoints_router)\nrouter.include_router(validate_router)\nrouter.include_router(flows_router)\nrouter.include_router(skillcenter_router)\nrouter.include_router(knowledge_router)\nrouter.include_router(server_router)\nrouter.include_router(user_router)\nrouter.include_router(qa_router)\nrouter.include_router(variable_router)\nrouter.include_router(report_router)\nrouter.include_router(finetune_router)\nrouter.include_router(component_router)\nrouter.include_router(assistant_router)\nrouter.include_router(group_router)\nrouter.include_router(audit_router)\nrouter.include_router(evaluation_router)\nrouter.include_router(tag_router)\nrouter.include_router(llm_router)\nrouter.include_router(workflow_router)\nrouter.include_router(mark_router)\nrouter.include_router(workstation_router)\nrouter.include_router(linsight_router)\nrouter.include_router(tool_router)\nrouter.include_router(invite_code_router)\nrouter.include_router(session_router)\nrouter.include_router(share_link_router)\nrouter.include_router(telemetry_search_router)\n\nrouter_rpc = APIRouter(prefix='/api/v2', )\nrouter_rpc.include_router(knowledge_router_rpc)\nrouter_rpc.include_router(filelib_router_rpc)\nrouter_rpc.include_router(chat_router_rpc)\nrouter_rpc.include_router(flow_router)\nrouter_rpc.include_router(assistant_router_rpc)\nrouter_rpc.include_router(workflow_router_rpc)\nrouter_rpc.include_router(llm_router_rpc)\n"
  },
  {
    "path": "src/backend/bisheng/api/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/api/services/assistant.py",
    "content": "from datetime import datetime\nfrom typing import Any, List, Optional, Union\n\nfrom fastapi import Request\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant_agent import AssistantAgent\nfrom bisheng.api.services.assistant_base import AssistantUtils\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.v1.schemas import (AssistantInfo, AssistantSimpleInfo, AssistantUpdateReq,\n                                    StreamData)\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.assistant import (AssistantInitError, AssistantNameRepeatError,\n                                              AssistantNotEditError, AssistantNotExistsError)\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewApplicationEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache import InMemoryCache\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.assistant import (Assistant, AssistantDao, AssistantLinkDao,\n                                               AssistantStatus)\nfrom bisheng.database.models.flow import Flow, FlowDao, FlowType\nfrom bisheng.database.models.group_resource import GroupResourceDao, GroupResource, ResourceTypeEnum\nfrom bisheng.database.models.role_access import AccessType, RoleAccessDao\nfrom bisheng.database.models.session import MessageSessionDao\nfrom bisheng.database.models.tag import TagDao\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao, GptsTools\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import get_request_ip\n\n\nclass AssistantService(BaseService, AssistantUtils):\n    UserCache: InMemoryCache = InMemoryCache()\n\n    @classmethod\n    def get_assistant(cls,\n                      user: UserPayload,\n                      name: str = None,\n                      status: int | None = None,\n                      tag_id: int | None = None,\n                      page: int = 1,\n                      limit: int = 20) -> (List[AssistantSimpleInfo], int):\n        \"\"\"\n        Get list of assistants\n        \"\"\"\n        assistant_ids = []\n        if tag_id:\n            ret = TagDao.get_resources_by_tags([tag_id], ResourceTypeEnum.ASSISTANT)\n            assistant_ids = [one.resource_id for one in ret]\n            if not assistant_ids:\n                return [], 0\n\n        data = []\n        if user.is_admin():\n            res, total = AssistantDao.get_all_assistants(name, page, limit, assistant_ids, status)\n        else:\n            # Permission management visible assistant information\n            assistant_ids_extra = []\n            user_role = UserRoleDao.get_user_roles(user.user_id)\n            if user_role:\n                role_ids = [role.role_id for role in user_role]\n                role_access = RoleAccessDao.get_role_access(role_ids, AccessType.ASSISTANT_READ)\n                if role_access:\n                    assistant_ids_extra = [access.third_id for access in role_access]\n            res, total = AssistantDao.get_assistants(user.user_id, name, assistant_ids_extra, status, page, limit,\n                                                     assistant_ids)\n\n        assistant_ids = [one.id for one in res]\n        # Query groups to which the assistant belongs\n        assistant_groups = GroupResourceDao.get_resources_group(ResourceTypeEnum.ASSISTANT, assistant_ids)\n        assistant_group_dict = {}\n        for one in assistant_groups:\n            if one.third_id not in assistant_group_dict:\n                assistant_group_dict[one.third_id] = []\n            assistant_group_dict[one.third_id].append(one.group_id)\n\n        # Get assistant-associatedtag\n        flow_tags = TagDao.get_tags_by_resource(ResourceTypeEnum.ASSISTANT, assistant_ids)\n\n        for one in res:\n            one.logo = cls.get_logo_share_link(one.logo)\n            simple_assistant = cls.return_simple_assistant_info(one)\n            if one.user_id == user.user_id or user.is_admin():\n                simple_assistant.write = True\n            simple_assistant.group_ids = assistant_group_dict.get(one.id, [])\n            simple_assistant.tags = flow_tags.get(one.id, [])\n            data.append(simple_assistant)\n        return data, total\n\n    @classmethod\n    def return_simple_assistant_info(cls, one: Assistant) -> AssistantSimpleInfo:\n        \"\"\"\n        Put the database's assistantmodelSimplified After processing, it returns to the front-end format\n        \"\"\"\n        simple_dict = one.model_dump(include={\n            'id', 'name', 'desc', 'logo', 'status', 'user_id', 'create_time', 'update_time'\n        })\n        simple_dict['user_name'] = cls.get_user_name(one.user_id)\n        return AssistantSimpleInfo(**simple_dict)\n\n    @classmethod\n    async def get_assistant_info(cls, assistant_id: str, login_user: UserPayload,\n                                 share_link: Union['ShareLink', None] = None) -> AssistantInfo:\n        assistant = await AssistantDao.aget_one_assistant(assistant_id)\n        if not assistant or assistant.is_delete:\n            raise AssistantNotExistsError()\n        # Check if you have permission to access the information\n        if not await login_user.async_access_check(assistant.user_id, assistant.id, AccessType.ASSISTANT_READ):\n\n            if (share_link is None\n                    or share_link.meta_data is None\n                    or share_link.meta_data.get(\"flowId\") != assistant.id):\n                raise UnAuthorizedError()\n\n        tool_list = []\n        flow_list = []\n        knowledge_list = []\n\n        links = await AssistantLinkDao.get_assistant_link(assistant_id)\n        for one in links:\n            if one.tool_id:\n                tool_list.append(one.tool_id)\n            elif one.knowledge_id:\n                knowledge_list.append(one.knowledge_id)\n            elif one.flow_id:\n                flow_list.append(one.flow_id)\n            else:\n                logger.error(f'not expect link info: {one.model_dump()}')\n        tool_list, flow_list, knowledge_list = cls.get_link_info(tool_list, flow_list,\n                                                                 knowledge_list)\n        assistant.logo = await cls.get_logo_share_link_async(assistant.logo)\n        return AssistantInfo(**assistant.model_dump(),\n                             tool_list=tool_list,\n                             flow_list=flow_list,\n                             knowledge_list=knowledge_list)\n\n    @classmethod\n    async def get_one_assistant(cls, assistant_id: str) -> Optional[Assistant]:\n        assistant = await AssistantDao.aget_one_assistant(assistant_id)\n        return assistant\n\n    # Create Assistant\n    @classmethod\n    async def create_assistant(cls, request: Request, login_user: UserPayload, assistant: Assistant) \\\n            -> AssistantInfo:\n\n        # Check if there are any duplicate names under\n        if cls.judge_name_repeat(assistant.name, assistant.user_id):\n            raise AssistantNameRepeatError()\n\n        logger.info(f\"assistant original prompt id: {assistant.id}, desc: {assistant.prompt}\")\n\n        # Automatically replenish default model configurations\n        assistant_llm = await LLMService.get_assistant_llm()\n        if assistant_llm.llm_list:\n            for one in assistant_llm.llm_list:\n                if one.default:\n                    assistant.model_name = str(one.model_id)\n                    break\n\n        # Autogenerate Descriptions\n        assistant, _, _ = await cls.get_auto_info(assistant, login_user)\n        assistant = AssistantDao.create_assistant(assistant)\n\n        # RecordTelemetryJournal\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.NEW_APPLICATION,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=NewApplicationEventData(\n                                              app_id=assistant.id,\n                                              app_name=assistant.name,\n                                              app_type=ApplicationTypeEnum.ASSISTANT\n                                          ))\n\n        cls.create_assistant_hook(request, assistant, login_user)\n        return AssistantInfo(**assistant.model_dump(),\n                             tool_list=[],\n                             flow_list=[],\n                             knowledge_list=[])\n\n    @classmethod\n    def create_assistant_hook(cls, request: Request, assistant: Assistant, user_payload: UserPayload) -> bool:\n        \"\"\"\n        After successful creation of the assistanthook, perform some other business logic\n        \"\"\"\n        # Query the user group the user belongs to under\n        user_group = UserGroupDao.get_user_group(user_payload.user_id)\n        if user_group:\n            # Batch Insert Assistant Resources into Correlation Table\n            batch_resource = []\n            for one in user_group:\n                batch_resource.append(GroupResource(\n                    group_id=one.group_id,\n                    third_id=assistant.id,\n                    type=ResourceTypeEnum.ASSISTANT.value))\n            GroupResourceDao.insert_group_batch(batch_resource)\n\n        # Write Audit Log\n        AuditLogService.create_build_assistant(user_payload, get_request_ip(request), assistant.id)\n\n        # WritelogoCeacle\n        cls.get_logo_share_link(assistant.logo)\n        return True\n\n    # Delete Assistant\n    @classmethod\n    def delete_assistant(cls, request: Request, login_user: UserPayload, assistant_id: str) -> bool:\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        if not assistant:\n            raise AssistantNotExistsError()\n\n        # Judgment Authorization\n        if not login_user.access_check(assistant.user_id, assistant.id, AccessType.ASSISTANT_WRITE):\n            raise UnAuthorizedError()\n\n        AssistantDao.delete_assistant(assistant)\n        telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                         event_type=BaseTelemetryTypeEnum.DELETE_APPLICATION,\n                                         trace_id=trace_id_var.get())\n        cls.delete_assistant_hook(request, login_user, assistant)\n        return True\n\n    @classmethod\n    def delete_assistant_hook(cls, request: Request, login_user: UserPayload, assistant: Assistant) -> bool:\n        \"\"\" Clean up associated assistant resources \"\"\"\n        logger.info(f\"delete_assistant_hook id: {assistant.id}, user: {login_user.user_id}\")\n        # Write Audit Log\n        AuditLogService.delete_build_assistant(login_user, get_request_ip(request), assistant.id)\n\n        # Clean up associations with user groups\n        GroupResourceDao.delete_group_resource_by_third_id(assistant.id, ResourceTypeEnum.ASSISTANT)\n\n        # Update session information\n        MessageSessionDao.update_session_info_by_flow(assistant.name, assistant.desc, assistant.logo,\n                                                      assistant.id, FlowType.ASSISTANT.value)\n        return True\n\n    @classmethod\n    async def auto_update_stream(cls, assistant_id: str, prompt: str, login_user: UserPayload):\n        \"\"\" Regenerate Assistant Prompts and Tool Selection, Only call the model capability without modifying the database data \"\"\"\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        assistant.prompt = prompt\n\n        # Inisialisasillm\n        auto_agent = AssistantAgent(assistant, '', login_user.user_id)\n        await auto_agent.init_auto_update_llm()\n\n        # Streaming Generation Prompts\n        final_prompt = ''\n        async for one_prompt in auto_agent.optimize_assistant_prompt():\n            if one_prompt.content in ('```', 'markdown'):\n                continue\n            yield str(StreamData(event='message', data={'type': 'prompt', 'message': one_prompt.content}))\n            final_prompt += one_prompt.content\n        assistant.prompt = final_prompt\n        yield str(StreamData(event='message', data={'type': 'end', 'message': \"\"}))\n\n        # Generate opening remarks and opening questions\n        guide_info = auto_agent.generate_guide(assistant.prompt)\n        yield str(StreamData(event='message', data={'type': 'guide_word', 'message': guide_info['opening_lines']}))\n        yield str(StreamData(event='message', data={'type': 'end', 'message': \"\"}))\n        yield str(StreamData(event='message', data={'type': 'guide_question', 'message': guide_info['questions']}))\n        yield str(StreamData(event='message', data={'type': 'end', 'message': \"\"}))\n\n        # Automatic selection of tools and skills\n        tool_info = cls.get_auto_tool_info(assistant, auto_agent)\n        tool_info = [one.model_dump() for one in tool_info]\n        yield str(StreamData(event='message', data={'type': 'tool_list', 'message': tool_info}))\n        yield str(StreamData(event='message', data={'type': 'end', 'message': \"\"}))\n\n        flow_info = cls.get_auto_flow_info(assistant, auto_agent)\n        flow_info = [one.model_dump() for one in flow_info]\n        yield str(StreamData(event='message', data={'type': 'flow_list', 'message': flow_info}))\n\n    @classmethod\n    async def update_assistant(cls, request: Request, login_user: UserPayload, req: AssistantUpdateReq) \\\n            -> AssistantInfo:\n        \"\"\" Update Assistant Information \"\"\"\n        assistant = AssistantDao.get_one_assistant(req.id)\n        if not assistant:\n            raise AssistantNotExistsError()\n\n        cls.check_update_permission(assistant, login_user)\n\n        # Update Assistant Data\n        if req.name and req.name != assistant.name:\n            # Check if there are any duplicate names under\n            if cls.judge_name_repeat(req.name, assistant.user_id):\n                raise AssistantNameRepeatError()\n            assistant.name = req.name\n        assistant.desc = req.desc\n        assistant.logo = req.logo if req.logo else assistant.logo\n        assistant.prompt = req.prompt\n        assistant.guide_word = req.guide_word\n        assistant.guide_question = req.guide_question\n        assistant.model_name = req.model_name\n        assistant.temperature = req.temperature\n        assistant.update_time = datetime.now()\n        assistant.max_token = req.max_token\n        AssistantDao.update_assistant(assistant)\n        telemetry_service.log_event_sync(user_id=login_user.user_id, event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n                                         trace_id=trace_id_var.get())\n\n        # Update assistant association information\n        if req.tool_list is not None:\n            AssistantLinkDao.update_assistant_tool(assistant.id, tool_list=req.tool_list)\n        if req.flow_list is not None:\n            AssistantLinkDao.update_assistant_flow(assistant.id, flow_list=req.flow_list)\n        if req.knowledge_list is not None:\n            # Using Configuredflow Perform skill replenishment\n            AssistantLinkDao.update_assistant_knowledge(assistant.id,\n                                                        knowledge_list=req.knowledge_list,\n                                                        flow_id='')\n        tool_list, flow_list, knowledge_list = cls.get_link_info(req.tool_list, req.flow_list,\n                                                                 req.knowledge_list)\n        cls.update_assistant_hook(request, login_user, assistant)\n        return AssistantInfo(**assistant.model_dump(),\n                             tool_list=tool_list,\n                             flow_list=flow_list,\n                             knowledge_list=knowledge_list)\n\n    @classmethod\n    def update_assistant_hook(cls, request: Request, login_user: UserPayload, assistant: Assistant) -> bool:\n        \"\"\" Update Assistant's Hook \"\"\"\n        logger.info(f\"delete_assistant_hook id: {assistant.id}, user: {login_user.user_id}\")\n\n        # Write Audit Log\n        AuditLogService.update_build_assistant(login_user, get_request_ip(request), assistant.id)\n\n        # Write cache\n        cls.get_logo_share_link(assistant.logo)\n        return True\n\n    @classmethod\n    async def update_status(cls, request: Request, login_user: UserPayload, assistant_id: str,\n                            status: int) -> bool:\n        \"\"\" Update Assistant Status \"\"\"\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        if not assistant:\n            raise AssistantNotExistsError()\n        # Determine permissions\n        if not login_user.access_check(assistant.user_id, assistant.id, AccessType.ASSISTANT_WRITE):\n            raise UnAuthorizedError()\n        # Equal status without modification\n        if assistant.status == status:\n            return True\n\n        # Try to initializeagent, go online if initialization is successful, otherwise not go online\n        if status == AssistantStatus.ONLINE.value:\n            tmp_agent = AssistantAgent(assistant, '', login_user.user_id)\n            try:\n                await tmp_agent.init_assistant()\n            except Exception as e:\n                logger.exception('online agent init failed')\n                raise AssistantInitError(exception=e)\n        assistant.status = status\n        AssistantDao.update_assistant(assistant)\n        telemetry_service.log_event_sync(user_id=login_user.user_id, event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n                                         trace_id=trace_id_var.get())\n        cls.update_assistant_hook(request, login_user, assistant)\n        return True\n\n    @classmethod\n    def update_prompt(cls, assistant_id: str, prompt: str, user_payload: UserPayload) -> bool:\n        \"\"\" Update assistant prompts \"\"\"\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        if not assistant:\n            raise AssistantNotExistsError()\n\n        cls.check_update_permission(assistant, user_payload)\n\n        assistant.prompt = prompt\n        AssistantDao.update_assistant(assistant)\n        telemetry_service.log_event_sync(user_id=user_payload.user_id,\n                                         event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n                                         trace_id=trace_id_var.get())\n        return True\n\n    @classmethod\n    def update_flow_list(cls, assistant_id: str, flow_list: List[str],\n                         user_payload: UserPayload) -> bool:\n        \"\"\"  Update Assistant Skills List \"\"\"\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        if not assistant:\n            raise AssistantNotExistsError()\n\n        cls.check_update_permission(assistant, user_payload)\n\n        AssistantLinkDao.update_assistant_flow(assistant_id, flow_list=flow_list)\n        return True\n\n    @classmethod\n    def update_tool_list(cls, assistant_id: str, tool_list: List[int],\n                         user_payload: UserPayload) -> bool:\n        \"\"\"  Update Assistant Tool List \"\"\"\n        assistant = AssistantDao.get_one_assistant(assistant_id)\n        if not assistant:\n            raise AssistantNotExistsError()\n\n        cls.check_update_permission(assistant, user_payload)\n\n        AssistantLinkDao.update_assistant_tool(assistant_id, tool_list=tool_list)\n        return True\n\n    @classmethod\n    def check_update_permission(cls, assistant: Assistant, user_payload: UserPayload) -> Any:\n        # Determine permissions\n        if not user_payload.access_check(assistant.user_id, assistant.id, AccessType.ASSISTANT_WRITE):\n            raise UnAuthorizedError()\n\n        # Changes are not allowed when online\n        if assistant.status == AssistantStatus.ONLINE.value:\n            raise AssistantNotEditError()\n        return None\n\n    @classmethod\n    def get_link_info(cls,\n                      tool_list: List[int],\n                      flow_list: List[str],\n                      knowledge_list: List[int] = None):\n        tool_list = GptsToolsDao.get_list_by_ids(tool_list) if tool_list else []\n        flow_list = FlowDao.get_flow_by_ids(flow_list) if flow_list else []\n        knowledge_list = KnowledgeDao.get_list_by_ids(knowledge_list) if knowledge_list else []\n        return tool_list, flow_list, knowledge_list\n\n    @classmethod\n    def get_user_name(cls, user_id: int):\n        if not user_id:\n            return 'system'\n        user = cls.UserCache.get(user_id)\n        if user:\n            return user.user_name\n        user = UserDao.get_user(user_id)\n        if not user:\n            return f'{user_id}'\n        cls.UserCache.set(user_id, user)\n        return user.user_name\n\n    @classmethod\n    def judge_name_repeat(cls, name: str, user_id: int) -> bool:\n        \"\"\" Determine if the assistant name is a duplicate \"\"\"\n        assistant = AssistantDao.get_assistant_by_name_user_id(name, user_id)\n        if assistant:\n            return True\n        return False\n\n    @classmethod\n    async def get_auto_info(cls, assistant: Assistant, login_user: UserPayload) -> (Assistant, List[int], List[int]):\n        \"\"\"\n        Auto Generate Assistant'sprompt, Automatically select tools and skills\n        return: Assistant Information, ToolsIDList, SkillsIDVertical\n        \"\"\"\n        # Inisialisasiagent\n        auto_agent = AssistantAgent(assistant, '', login_user.user_id)\n        await auto_agent.init_auto_update_llm()\n\n        # Autogenerate Descriptions\n        assistant.desc = auto_agent.generate_description(assistant.prompt)\n\n        return assistant, [], []\n\n    @classmethod\n    def get_auto_tool_info(cls, assistant: Assistant, auto_agent: AssistantAgent) -> List[GptsTools]:\n        # Pagination Auto-Select Tool\n        res = []\n        page = 1\n        page_num = 50\n        while True:\n            all_tool = GptsToolsDao.get_list_by_user(assistant.user_id, page, page_num)\n            if len(all_tool) == 0:\n                break\n            logger.info(f\"auto select tools: page: {page}, number: {len(all_tool)}\")\n            tool_list = []\n            all_tool_dict = {}\n            for one in all_tool:\n                all_tool_dict[one.name] = one\n                tool_list.append({\n                    'name': one.name,\n                    'description': one.desc if one.desc else '',\n                })\n            tool_info = []\n            tool_list = auto_agent.choose_tools(tool_list, assistant.prompt)\n            for one in tool_list:\n                if all_tool_dict.get(one):\n                    tool_info.append(all_tool_dict[one])\n            res += tool_info\n            page += 1\n        return res\n\n    @classmethod\n    def get_auto_flow_info(cls, assistant: Assistant, auto_agent: AssistantAgent) -> List[Flow]:\n        # Automatically select skills, Before picking50skills to make automatic selections\n        all_flow = FlowDao.get_user_access_online_flows(assistant.user_id, 1, 50)\n        flow_dict = {}\n        flow_list = []\n        for one in all_flow:\n            flow_dict[one.name] = one\n            flow_list.append({\n                'name': one.name,\n                'description': one.description if one.description else '',\n            })\n\n        flow_list = auto_agent.choose_tools(flow_list, assistant.prompt)\n        flow_info = []\n        for one in flow_list:\n            if flow_dict.get(one):\n                flow_info.append(flow_dict[one])\n        return flow_info\n"
  },
  {
    "path": "src/backend/bisheng/api/services/assistant_agent.py",
    "content": "import json\nimport os\nimport time\nimport uuid\nfrom typing import Any, Dict, List\n\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.messages import AIMessage, HumanMessage, BaseMessage\nfrom langchain_core.runnables import RunnableConfig\nfrom langchain_core.tools import BaseTool, Tool\nfrom langchain_core.utils.function_calling import format_tool_to_openai_tool\nfrom langgraph.prebuilt import create_react_agent\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant_base import AssistantUtils\nfrom bisheng.api.utils import build_flow_no_yield\nfrom bisheng.api.v1.schemas import InputRequest\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.errcode.assistant import AssistantModelEmptyError, AssistantModelNotConfigError, \\\n    AssistantAutoLLMError\nfrom bisheng.database.models.assistant import Assistant, AssistantLink, AssistantLinkDao\nfrom bisheng.database.models.flow import FlowDao, FlowStatus\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng_langchain.gpts.assistant import ConfigurableAssistant\nfrom bisheng_langchain.gpts.auto_optimization import (generate_breif_description,\n                                                      generate_opening_dialog,\n                                                      optimize_assistant_prompt)\nfrom bisheng_langchain.gpts.auto_tool_selected import ToolInfo, ToolSelector\nfrom bisheng_langchain.gpts.prompts import ASSISTANT_PROMPT_OPT\n\n\nclass AssistantAgent(AssistantUtils):\n    # cohereThe special needs of the model prompt\n    ASSISTANT_PROMPT_COHERE = \"\"\"{preamble}|<instruct>|Carefully perform the following instructions, in order, starting each with a new line.\n    Firstly, You may need to use complex and advanced reasoning to complete your task and answer the question. Think about how you can use the provided tools to answer the question and come up with a high level plan you will execute.\n    Write 'Plan:' followed by an initial high level plan of how you will solve the problem including the tools and steps required.\n    Secondly, Carry out your plan by repeatedly using actions, reasoning over the results, and re-evaluating your plan. Perform Action, Observation, Reflection steps with the following format. Write 'Action:' followed by a json formatted action containing the \"tool_name\" and \"parameters\"\n     Next you will analyze the 'Observation:', this is the result of the action.\n    After that you should always think about what to do next. Write 'Reflection:' followed by what you've figured out so far, any changes you need to make to your plan, and what you will do next including if you know the answer to the question.\n    ... (this Action/Observation/Reflection can repeat N times)\n    Thirdly, Decide which of the retrieved documents are relevant to the user's last input by writing 'Relevant Documents:' followed by comma-separated list of document numbers. If none are relevant, you should instead write 'None'.\n    Fourthly, Decide which of the retrieved documents contain facts that should be cited in a good answer to the user's last input by writing 'Cited Documents:' followed a comma-separated list of document numbers. If you dont want to cite any of them, you should instead write 'None'.\n    Fifthly, Write 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. Do not insert any citations or grounding markup.\n    Finally, Write 'Grounded answer:' followed by a response to the user's last input in high quality natural english. Use the symbols <co: doc> and </co: doc> to indicate when a fact comes from a document in the search result, e.g <co: 4>my fact</co: 4> for a fact from document 4.\n\n    Additional instructions to note:\n    - If the user's question is in Chinese, please answer it in Chinese.\n    - When there is time information involved in a question, such as recently6Months, yesterday, last year, etc., you need to use the time tool to query the time information.\n    \"\"\"  # noqa\n\n    def __init__(self, assistant_info: Assistant, chat_id: str, invoke_user_id: int):\n        self.assistant = assistant_info\n\n        # To record the data tracking points\n        self.invoke_user_id = invoke_user_id\n\n        self.chat_id = chat_id\n        self.tools: List[BaseTool] = []\n        self.offline_flows = []\n        self.agent: ConfigurableAssistant | None = None\n        self.agent_executor_dict = {\n            'ReAct': 'get_react_agent_executor',\n            'function call': 'get_openai_functions_agent_executor',\n        }\n        self.current_agent_executor = None\n        self.llm: BaseLanguageModel | None = None\n        self.llm_agent_executor = None\n        # Knowledge Base Retrieval Related Parameters\n        self.knowledge_retriever = {'max_content': 15000, 'sort_by_source_and_index': False}\n\n    async def init_assistant(self, callbacks: Callbacks = None):\n        await self.init_llm()\n        await self.init_tools(callbacks)\n        await self.init_agent()\n\n    async def init_llm(self):\n        # Get a list of configured helper models\n        assistant_llm = await LLMService.get_assistant_llm()\n        if not assistant_llm.llm_list:\n            raise AssistantModelEmptyError()\n        default_llm = None\n        for one in assistant_llm.llm_list:\n            if str(one.model_id) == self.assistant.model_name:\n                default_llm = one\n                break\n            elif not default_llm and one.default:\n                default_llm = one\n        if not default_llm:\n            raise AssistantModelNotConfigError()\n\n        self.llm_agent_executor = default_llm.agent_executor_type\n        self.knowledge_retriever = {\n            'max_content': default_llm.knowledge_max_content,\n            'sort_by_source_and_index': default_llm.knowledge_sort_index\n        }\n\n        # Inisialisasillm\n        self.llm = await LLMService.get_bisheng_llm(model_id=default_llm.model_id,\n                                                    temperature=self.assistant.temperature,\n                                                    streaming=default_llm.streaming,\n                                                    app_id=self.assistant.id,\n                                                    app_name=self.assistant.name,\n                                                    app_type=ApplicationTypeEnum.ASSISTANT,\n                                                    user_id=self.invoke_user_id)\n\n    async def init_auto_update_llm(self):\n        \"\"\" Initialize Automatic Optimization prompt and other information.llmInstances \"\"\"\n        assistant_llm = await LLMService.get_assistant_llm()\n        if not assistant_llm.auto_llm:\n            raise AssistantAutoLLMError()\n\n        self.llm = await LLMService.get_bisheng_llm(model_id=assistant_llm.auto_llm.model_id,\n                                                    temperature=self.assistant.temperature,\n                                                    streaming=assistant_llm.auto_llm.streaming,\n                                                    app_id=self.assistant.id,\n                                                    app_name=self.assistant.name,\n                                                    app_type=ApplicationTypeEnum.ASSISTANT,\n                                                    user_id=self.invoke_user_id)\n\n    async def init_tools(self, callbacks: Callbacks = None):\n        \"\"\"Get by nametool Vertical\n           tools_name_param:: {name: params}\n        \"\"\"\n        links: List[AssistantLink] = await AssistantLinkDao.get_assistant_link(\n            assistant_id=self.assistant.id)\n        # tool\n        tools: List[BaseTool] = []\n        tool_ids = []\n        flow_links = []\n        for link in links:\n            if link.tool_id:\n                tool_ids.append(link.tool_id)\n            else:\n                flow_links.append(link)\n        if tool_ids:\n            tools = await ToolExecutor.init_by_tool_ids(tool_ids,\n                                                        app_id=self.assistant.id,\n                                                        app_name=self.assistant.name,\n                                                        app_type=ApplicationTypeEnum.ASSISTANT,\n                                                        user_id=self.invoke_user_id,\n                                                        llm=self.llm,\n                                                        callbacks=callbacks)\n\n        # flow + knowledge\n        flow_data = FlowDao.get_flow_by_ids([link.flow_id for link in flow_links if link.flow_id])\n        flow_id2data = {flow.id: flow for flow in flow_data}\n\n        for link in flow_links:\n            knowledge_id = link.knowledge_id\n            if knowledge_id:\n                knowledge_tool = await ToolExecutor.init_knowledge_tool(self.invoke_user_id, knowledge_id, llm=self.llm,\n                                                                        callbacks=callbacks,\n                                                                        **self.knowledge_retriever)\n                tools.append(knowledge_tool)\n            else:\n                tmp_flow_id = link.flow_id\n                one_flow_data = flow_id2data.get(link.flow_id)\n                tool_name = f'flow_{link.flow_id}'\n                if not one_flow_data:\n                    logger.warning('act=init_tools not find flow_id: {}', link.flow_id)\n                    continue\n                if one_flow_data.status != FlowStatus.ONLINE.value:\n                    self.offline_flows.append(tool_name)\n                    logger.warning('act=init_tools not online flow_id: {}', link.flow_id)\n                    continue\n                flow_graph_data = one_flow_data.data\n                tool_description = f'{one_flow_data.name}:{one_flow_data.description}'\n\n                try:\n                    artifacts = {}\n                    graph = await build_flow_no_yield(graph_data=flow_graph_data,\n                                                      artifacts=artifacts,\n                                                      process_file=True,\n                                                      flow_id=tmp_flow_id,\n                                                      chat_id=self.assistant.id)\n                    built_object = await graph.abuild()\n                    logger.info('act=init_flow_tool build_end')\n                    flow_tool = Tool(name=tool_name,\n                                     func=built_object,\n                                     coroutine=built_object.ainvoke,\n                                     description=tool_description,\n                                     args_schema=InputRequest,\n                                     callbacks=callbacks)\n                    tools.append(flow_tool)\n                except Exception as exc:\n                    logger.error(f'Error processing {tmp_flow_id} tweaks: {exc}')\n                    raise Exception(f'Flow Build Error: {exc}')\n        self.tools = tools\n\n    async def init_agent(self):\n        \"\"\"\n        Initialize agentagent\n        \"\"\"\n        # Introductionagentexecution parameter\n        agent_executor_type = self.llm_agent_executor\n        self.current_agent_executor = agent_executor_type\n        # Do the Conversion\n        agent_executor_type = self.agent_executor_dict.get(agent_executor_type,\n                                                           agent_executor_type)\n\n        prompt = self.assistant.prompt\n        if getattr(self.llm, 'model_name', '').startswith('command-r'):\n            prompt = self.ASSISTANT_PROMPT_COHERE.format(preamble=prompt)\n        if self.current_agent_executor == 'ReAct':\n            # Inisialisasiagent\n            self.agent = ConfigurableAssistant(agent_executor_type=agent_executor_type,\n                                               tools=self.tools,\n                                               llm=self.llm,\n                                               assistant_message=prompt)\n        else:\n            # function-callingpattern, but also add recursive constraints\n            logger.info(f'Creating LangGraph agent with {len(self.tools)} tools, llm type: {type(self.llm)}')\n            logger.info(f'LLM streaming capability: {getattr(self.llm, \"streaming\", \"unknown\")}')\n\n            self.agent = create_react_agent(self.llm, self.tools, prompt=prompt, checkpointer=False)\n            logger.info(f'LangGraph agent created: {type(self.agent)}')\n\n            # areagentAdd Recursive Limit Configuration\n            self.agent = self.agent.with_config({'recursion_limit': 100})\n            logger.info(f'Agent config applied: recursion_limit=100')\n\n    async def optimize_assistant_prompt(self):\n        \"\"\" Automatically optimize generationprompt \"\"\"\n        chain = ({\n                     'assistant_name': lambda x: x['assistant_name'],\n                     'assistant_description': lambda x: x['assistant_description'],\n                 }\n                 | ASSISTANT_PROMPT_OPT\n                 | self.llm)\n        async for one in chain.astream({\n            'assistant_name': self.assistant.name,\n            'assistant_description': self.assistant.prompt,\n        }):\n            yield one\n\n    def sync_optimize_assistant_prompt(self):\n        return optimize_assistant_prompt(self.llm, self.assistant.name, self.assistant.desc)\n\n    def generate_guide(self, prompt: str):\n        \"\"\" Generate opening dialogue and opening questions \"\"\"\n        return generate_opening_dialog(self.llm, prompt)\n\n    def generate_description(self, prompt: str):\n        \"\"\" Generate description dialog \"\"\"\n        return generate_breif_description(self.llm, prompt)\n\n    def choose_tools(self, tool_list: List[Dict[str, str]], prompt: str) -> List[str]:\n        \"\"\"\n         Choose A Tool\n         tool_list: [{name: xxx, description: xxx}]\n        \"\"\"\n        tool_list = [\n            ToolInfo(tool_name=one['name'], tool_description=one['description'])\n            for one in tool_list\n        ]\n        tool_selector = ToolSelector(llm=self.llm, tools=tool_list)\n        return tool_selector.select(self.assistant.name, prompt)\n\n    async def fake_callback(self, callback: Callbacks):\n        if not callback:\n            return\n        # False callback to call back skills that are offline to the front-end\n        for one in self.offline_flows:\n            run_id = uuid.uuid4()\n            await callback[0].on_tool_start({\n                'name': one,\n            },\n                input_str='flow is offline',\n                run_id=run_id)\n            await callback[0].on_tool_end(output='flow is offline', name=one, run_id=run_id)\n\n    async def record_chat_history(self, message: List[Any]):\n        # Record Assistant Chat History\n        if not os.getenv('BISHENG_RECORD_HISTORY'):\n            return\n        try:\n            os.makedirs('/app/data/history', exist_ok=True)\n            with open(f'/app/data/history/{self.assistant.id}_{time.time()}.json',\n                      'w',\n                      encoding='utf-8') as f:\n                json.dump(\n                    {\n                        'system': self.assistant.prompt,\n                        'message': message,\n                        'tools': [format_tool_to_openai_tool(t) for t in self.tools]\n                    },\n                    f,\n                    ensure_ascii=False)\n        except Exception as e:\n            logger.error(f'record assistant history error: {str(e)}')\n\n    async def trim_messages(self, messages: List[Any]) -> List[Any]:\n        # Dapatkanencoding\n        enc = self.cl100k_base()\n\n        def get_finally_message(new_messages: List[Any]) -> List[Any]:\n            # No more processing until only one record has been trimmed\n            if len(new_messages) == 1:\n                return new_messages\n            total_count = 0\n            for one in new_messages:\n                if isinstance(one, HumanMessage):\n                    total_count += len(enc.encode(one.content))\n                elif isinstance(one, AIMessage):\n                    total_count += len(enc.encode(one.content))\n                    if 'tool_calls' in one.additional_kwargs:\n                        total_count += len(\n                            enc.encode(json.dumps(one.additional_kwargs['tool_calls'], ensure_ascii=False))\n                        )\n                else:\n                    total_count += len(enc.encode(str(one.content)))\n            if total_count > self.assistant.max_token:\n                return get_finally_message(new_messages[1:])\n            return new_messages\n\n        return get_finally_message(messages)\n\n    async def run(self, query: str, chat_history: List = None, callback: Callbacks = None) -> List[BaseMessage]:\n        \"\"\"\n        Run Agent Conversation\n        \"\"\"\n        await self.fake_callback(callback)\n\n        if chat_history:\n            chat_history.append(HumanMessage(content=query))\n            inputs = chat_history\n        else:\n            inputs = [HumanMessage(content=query)]\n\n        # trim message\n        inputs = await self.trim_messages(inputs)\n\n        if self.current_agent_executor == 'ReAct':\n            result = await self.react_run(inputs, callback)\n        else:\n            result = await self.agent.ainvoke({'messages': inputs}, config=RunnableConfig(callbacks=callback))\n            result = result['messages']\n\n        # Record Chat History\n        await self.record_chat_history([one.to_json() for one in result])\n\n        return result\n\n    async def astream(self, query: str, chat_history: List = None, callback: Callbacks = None):\n        \"\"\"\n        Run Agent Conversation - Streaming version\n        \"\"\"\n        await self.fake_callback(callback)\n\n        if chat_history:\n            chat_history.append(HumanMessage(content=query))\n            inputs = chat_history\n        else:\n            inputs = [HumanMessage(content=query)]\n\n        # trim message\n        inputs = await self.trim_messages(inputs)\n\n        if self.current_agent_executor == 'ReAct':\n            # ReActMode temporarily does not support streaming, downgrade to non streaming\n            result = await self.react_run(inputs, callback)\n            # Record Chat History\n            await self.record_chat_history([one.to_json() for one in result])\n            yield result\n        else:\n            # Use Streaming Calls\n            config = RunnableConfig(callbacks=callback)\n            final_messages = []\n\n            logger.info(f'Using function-calling mode, starting astream...')\n\n            chunk_count = 0\n\n            try:\n                # UsemessagesPatternedLangGraph streamingattaintokenLevel of Streaming Output\n                async for chunk in self.agent.astream({'messages': inputs}, config=config, stream_mode=\"messages\"):\n                    chunk_count += 1\n\n                    # stream_mode=\"messages\" Return (message, metadata) Meta Group\n                    message = None\n                    if isinstance(chunk, tuple) and len(chunk) >= 2:\n                        message, metadata = chunk[:2]\n                    elif hasattr(chunk, 'content'):\n                        # Directly to the message object\n                        message = chunk\n\n                    if message:\n                        # stream_mode=\"messages\"Returns Independencechunk, use its content directly\n                        final_messages = [message]  # Save message for history\n                        yield [message]\n\n            except Exception as astream_error:\n                logger.exception(f'Error in astream async for loop: {str(astream_error)}')\n                raise astream_error\n\n            logger.info(f'Function calling astream completed, total chunks: {chunk_count}')\n\n            if chunk_count == 0:\n                logger.warning(f'No chunks received from agent.astream()! This indicates a streaming issue.')\n\n            # Record Chat History\n            if final_messages:\n                await self.record_chat_history([one.to_json() for one in final_messages])\n\n    async def react_run(self, inputs: List, callback: Callbacks = None):\n        \"\"\" react Mode input and execution \"\"\"\n        result = await self.agent.ainvoke({\n            'input': inputs[-1].content,\n            'chat_history': inputs[:-1],\n        }, config=RunnableConfig(callbacks=callback))\n        logger.debug(f\"react_run result: {result}\")\n        output = result['agent_outcome'].return_values['output']\n        if isinstance(output, dict):\n            output = list(output.values())[0]\n        for one in result['intermediate_steps']:\n            inputs.append(one[0])\n        inputs.append(AIMessage(content=output))\n        return inputs\n"
  },
  {
    "path": "src/backend/bisheng/api/services/assistant_base.py",
    "content": "import os\n\nfrom tiktoken.load import load_tiktoken_bpe\nfrom tiktoken.core import Encoding as TikTokenEncoding\n\n\nclass AssistantUtils:\n    # Ignore assistant configuration has been removed from the system configuration, no such method is required for now\n\n    @staticmethod\n    def cl100k_base() -> TikTokenEncoding:\n        ENDOFTEXT = \"<|endoftext|>\"\n        FIM_PREFIX = \"<|fim_prefix|>\"\n        FIM_MIDDLE = \"<|fim_middle|>\"\n        FIM_SUFFIX = \"<|fim_suffix|>\"\n        ENDOFPROMPT = \"<|endofprompt|>\"\n\n        tiktoken_file = os.path.join(os.path.dirname(__file__), \"tiktoken_file/cl100k_base.tiktoken\")\n\n        mergeable_ranks = load_tiktoken_bpe(\n            # \"https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken\",\n            tiktoken_file,\n            expected_hash=\"223921b76ee99bde995b7ff738513eef100fb51d18c93597a113bcffe865b2a7\",\n        )\n        special_tokens = {\n            ENDOFTEXT: 100257,\n            FIM_PREFIX: 100258,\n            FIM_MIDDLE: 100259,\n            FIM_SUFFIX: 100260,\n            ENDOFPROMPT: 100276,\n        }\n        return TikTokenEncoding(**{\n            \"name\": \"cl100k_base\",\n            \"pat_str\": r\"\"\"'(?i:[sdmt]|ll|ve|re)|[^\\r\\n\\p{L}\\p{N}]?+\\p{L}++|\\p{N}{1,3}+| ?[^\\s\\p{L}\\p{N}]++[\\r\\n]*+|\\s++$|\\s*[\\r\\n]|\\s+(?!\\S)|\\s\"\"\",\n            \"mergeable_ranks\": mergeable_ranks,\n            \"special_tokens\": special_tokens,\n        })\n"
  },
  {
    "path": "src/backend/bisheng/api/services/audit_log.py",
    "content": "import asyncio\nimport csv\nfrom datetime import datetime\nfrom tempfile import NamedTemporaryFile\nfrom typing import Any, List, Optional, Dict, Union, Tuple\n\nfrom loguru import logger\nfrom sqlalchemy import func\nfrom sqlmodel import col, or_, and_, select\n\nfrom bisheng.api.v1.schema.chat_schema import AppChatList\nfrom bisheng.api.v1.schema.workflow import WorkflowEventType\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync, get_minio_storage\nfrom bisheng.database.models.assistant import AssistantDao, Assistant\nfrom bisheng.database.models.audit_log import AuditLog, SystemId, EventType, ObjectType, AuditLogDao\nfrom bisheng.database.models.flow import FlowDao, Flow, FlowType\nfrom bisheng.database.models.group import Group\nfrom bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum\nfrom bisheng.database.models.message import ChatMessageDao, LikedType\nfrom bisheng.database.models.role import Role\nfrom bisheng.database.models.session import MessageSessionDao, SensitiveStatus, MessageSession\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, Knowledge\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsType\nfrom bisheng.user.domain.models.user import UserDao, User\nfrom bisheng.utils import generate_uuid\n\n\n# todo change to async or submit thread pool\nclass AuditLogService:\n\n    @classmethod\n    async def get_audit_log(cls, login_user: UserPayload, group_ids, operator_ids, start_time, end_time,\n                            system_id, event_type, page, limit) -> Any:\n        groups = group_ids\n        if not login_user.is_admin():\n            groups = [str(one.group_id) for one in await UserGroupDao.aget_user_admin_group(login_user.user_id)]\n            # Not an administrator of any user groups\n            if not groups:\n                return UnAuthorizedError.return_resp()\n            # Filter bygroup_idand administrator permissionsgroupsDoing Intersections\n            if group_ids:\n                groups = list(set(groups) & set(group_ids))\n                if not groups:\n                    return UnAuthorizedError.return_resp()\n\n        data, total = await AuditLogDao.get_audit_logs(groups, operator_ids, start_time, end_time,\n                                                       system_id,\n                                                       event_type,\n                                                       page, limit)\n        return resp_200(data={'data': data, 'total': total})\n\n    @classmethod\n    def get_all_operators(cls, login_user: UserPayload) -> List[Dict]:\n        groups = []\n        if not login_user.is_admin():\n            groups = [one.group_id for one in UserGroupDao.get_user_admin_group(login_user.user_id)]\n            # not any group admin\n            if not groups:\n                raise UnAuthorizedError()\n\n        data = AuditLogDao.get_all_operators(groups)\n        res = {}\n        for one in data:\n            if not one[1]:\n                continue\n            res[one[0]] = {'user_id': one[0], 'user_name': one[1]}\n        return list(res.values())\n\n    @classmethod\n    def _chat_log(cls, user: UserPayload, ip_address: str, event_type: EventType, object_type: ObjectType,\n                  object_id: str, object_name: str, resource_type: ResourceTypeEnum):\n        # Get the group to which the resource belongs\n        groups = GroupResourceDao.get_resource_group(resource_type, object_id)\n        group_ids = [one.group_id for one in groups]\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.CHAT.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        AuditLogDao.insert_audit_logs([audit_log])\n\n    @classmethod\n    async def _chat_log_async(cls, user: UserPayload, ip_address: str, event_type: EventType,\n                              object_type: ObjectType,\n                              object_id: str, object_name: str, resource_type: ResourceTypeEnum,\n                              group_ids: List[int] = None):\n        # Get the group to which the resource belongs\n        if group_ids is None:\n            groups = await GroupResourceDao.aget_resource_group(resource_type, object_id)\n            group_ids = [one.group_id for one in groups]\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.CHAT.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        await AuditLogDao.ainsert_audit_logs([audit_log])\n\n    @classmethod\n    def create_chat_assistant(cls, user: UserPayload, ip_address: str, assistant_id: str):\n        \"\"\"\n        New Audit Log for Assistant Session\n        \"\"\"\n        logger.info(f\"act=create_chat_assistant user={user.user_name} ip={ip_address} assistant={assistant_id}\")\n        # Getting Assistant Details\n        assistant_info = AssistantDao.get_one_assistant(assistant_id)\n        cls._chat_log(user, ip_address, EventType.CREATE_CHAT, ObjectType.ASSISTANT,\n                      assistant_id, assistant_info.name, ResourceTypeEnum.ASSISTANT)\n\n    @classmethod\n    def create_chat_flow(cls, user: UserPayload, ip_address: str, flow_id: str, flow_info=None):\n        \"\"\"\n        New Skill Session Audit Log\n        \"\"\"\n        logger.info(f\"act=create_chat_flow user={user.user_name} ip={ip_address} flow={flow_id}\")\n        if not flow_info:\n            flow_info = FlowDao.get_flow_by_id(flow_id)\n        cls._chat_log(user, ip_address, EventType.CREATE_CHAT, ObjectType.FLOW,\n                      flow_id, flow_info.name, ResourceTypeEnum.FLOW)\n\n    @classmethod\n    def create_chat_workflow(cls, user: UserPayload, ip_address: str, flow_id: str, flow_info=None):\n        \"\"\"\n        New Workflow Session Audit Log\n        \"\"\"\n        logger.info(f\"act=create_chat_workflow user={user.user_name} ip={ip_address} flow={flow_id}\")\n        if not flow_info:\n            flow_info = FlowDao.get_flow_by_id(flow_id)\n        cls._chat_log(user, ip_address, EventType.CREATE_CHAT, ObjectType.WORK_FLOW,\n                      flow_id, flow_info.name, ResourceTypeEnum.WORK_FLOW)\n\n    @classmethod\n    async def delete_chat_flow(cls, user: UserPayload, ip_address: str, flow_info: Flow):\n        \"\"\"\n        Delete Audit Log for Skill Session\n        \"\"\"\n        logger.info(f\"act=delete_chat_flow user={user.user_name} ip={ip_address} flow={flow_info.id}\")\n        await cls._chat_log_async(user, ip_address, EventType.DELETE_CHAT, ObjectType.FLOW,\n                                  flow_info.id, flow_info.name, ResourceTypeEnum.FLOW)\n\n    @classmethod\n    async def delete_chat_workflow(cls, user: UserPayload, ip_address: str, flow_info: Flow):\n        \"\"\"\n        Delete Audit Log for Skill Session\n        \"\"\"\n        logger.info(f\"act=delete_chat_workflow user={user.user_name} ip={ip_address} flow={flow_info.id}\")\n        await cls._chat_log_async(user, ip_address, EventType.DELETE_CHAT, ObjectType.WORK_FLOW,\n                                  flow_info.id, flow_info.name, ResourceTypeEnum.WORK_FLOW)\n\n    @classmethod\n    async def delete_chat_assistant(cls, user: UserPayload, ip_address: str, assistant_info: Assistant):\n        \"\"\"\n        Delete audit log for assistant session\n        \"\"\"\n        logger.info(f\"act=delete_assistant_flow user={user.user_name} ip={ip_address} assistant={assistant_info.id}\")\n        await cls._chat_log_async(user, ip_address, EventType.DELETE_CHAT, ObjectType.ASSISTANT,\n                                  assistant_info.id, assistant_info.name, ResourceTypeEnum.ASSISTANT)\n\n    @classmethod\n    def _build_log(cls, user: UserPayload, ip_address: str, event_type: EventType, object_type: ObjectType,\n                   object_id: str,\n                   object_name: str, resource_type: ResourceTypeEnum):\n        \"\"\"\n        Build Module Audit Log\n        \"\"\"\n        # Get which user groups the resource belongs to\n        groups = GroupResourceDao.get_resource_group(resource_type, object_id)\n        group_ids = [one.group_id for one in groups]\n\n        # Insert Audit Log\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.BUILD.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        AuditLogDao.insert_audit_logs([audit_log])\n\n    @classmethod\n    async def _build_log_async(cls, user: UserPayload, ip_address: str, event_type: EventType, object_type: ObjectType,\n                               object_id: str,\n                               object_name: str, resource_type: ResourceTypeEnum):\n        \"\"\"\n        Build Module Audit Log\n        \"\"\"\n        # Get which user groups the resource belongs to\n        groups = await GroupResourceDao.aget_resource_group(resource_type, object_id)\n        group_ids = [one.group_id for one in groups]\n\n        # Insert Audit Log\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.BUILD.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        await AuditLogDao.ainsert_audit_logs([audit_log])\n\n    @classmethod\n    def create_build_flow(cls, user: UserPayload, ip_address: str, flow_id: str, flow_type: Optional[int] = None):\n        \"\"\"\n        New Skill Audit Log\n        \"\"\"\n        obj_type = ObjectType.FLOW\n        rs_type = ResourceTypeEnum.FLOW\n        if flow_type == FlowType.WORKFLOW.value:\n            obj_type = ObjectType.WORK_FLOW\n            rs_type = ResourceTypeEnum.WORK_FLOW\n        logger.info(f\"act=create_build_flow user={user.user_name} ip={ip_address} flow={flow_id}\")\n        flow_info = FlowDao.get_flow_by_id(flow_id)\n        cls._build_log(user, ip_address, EventType.CREATE_BUILD, obj_type,\n                       flow_info.id, flow_info.name, rs_type)\n\n    @classmethod\n    async def update_build_flow(cls, user: UserPayload, ip_address: str, flow_id: str, flow_type: Optional[int] = None):\n        \"\"\"\n        Update Skill Audit Log\n        \"\"\"\n        obj_type = ObjectType.FLOW\n        rs_type = ResourceTypeEnum.FLOW\n        if flow_type == FlowType.WORKFLOW.value:\n            obj_type = ObjectType.WORK_FLOW\n            rs_type = ResourceTypeEnum.WORK_FLOW\n        logger.info(f\"act=update_build_flow user={user.user_name} ip={ip_address} flow={flow_id}\")\n        flow_info = await FlowDao.aget_flow_by_id(flow_id)\n        await cls._build_log_async(user, ip_address, EventType.UPDATE_BUILD, obj_type, flow_info.id, flow_info.name,\n                                   rs_type)\n\n    @classmethod\n    def delete_build_flow(cls, user: UserPayload, ip_address: str, flow_info: Flow, flow_type: Optional[int] = None):\n        \"\"\"\n        Delete Skill Audit Log\n        \"\"\"\n        obj_type = ObjectType.FLOW\n        rs_type = ResourceTypeEnum.FLOW\n        if flow_type == FlowType.WORKFLOW.value:\n            obj_type = ObjectType.WORK_FLOW\n            rs_type = ResourceTypeEnum.WORK_FLOW\n        logger.info(f\"act=delete_build_flow user={user.user_name} ip={ip_address} flow={flow_info.id}\")\n        cls._build_log(user, ip_address, EventType.DELETE_BUILD, obj_type,\n                       flow_info.id, flow_info.name, rs_type)\n\n    @classmethod\n    def create_build_assistant(cls, user: UserPayload, ip_address: str, assistant_id: str):\n        \"\"\"\n        New Assistant Audit Log\n        \"\"\"\n        logger.info(f\"act=create_build_assistant user={user.user_name} ip={ip_address} assistant={assistant_id}\")\n        assistant_info = AssistantDao.get_one_assistant(assistant_id)\n        cls._build_log(user, ip_address, EventType.CREATE_BUILD, ObjectType.ASSISTANT,\n                       assistant_info.id, assistant_info.name, ResourceTypeEnum.ASSISTANT)\n\n    @classmethod\n    def update_build_assistant(cls, user: UserPayload, ip_address: str, assistant_id: str):\n        \"\"\"\n        Update the assistant's audit log\n        \"\"\"\n        logger.info(f\"act=update_build_assistant user={user.user_name} ip={ip_address} assistant={assistant_id}\")\n        assistant_info = AssistantDao.get_one_assistant(assistant_id)\n\n        cls._build_log(user, ip_address, EventType.UPDATE_BUILD, ObjectType.ASSISTANT,\n                       assistant_info.id, assistant_info.name, ResourceTypeEnum.ASSISTANT)\n\n    @classmethod\n    def delete_build_assistant(cls, user: UserPayload, ip_address: str, assistant_id: str):\n        \"\"\"\n        Delete Audit Log for Assistant\n        \"\"\"\n        logger.info(f\"act=delete_build_assistant user={user.user_name} ip={ip_address} assistant={assistant_id}\")\n        assistant_info = AssistantDao.get_one_assistant(assistant_id)\n\n        cls._build_log(user, ip_address, EventType.DELETE_BUILD, ObjectType.ASSISTANT,\n                       assistant_info.id, assistant_info.name, ResourceTypeEnum.ASSISTANT)\n\n    @classmethod\n    async def create_chat_message(cls, user: UserPayload, ip_address: str, message: Union[str, MessageSession]):\n        \"\"\"\n        New Chat Message Audit Log for Build Module\n        \"\"\"\n        if isinstance(message, MessageSession):\n            message_session = message\n        else:\n            message_session = await MessageSessionDao.async_get_one(message)\n\n        logger.info(f\"act=create_chat_message user={user.user_name} ip={ip_address} session={message_session.chat_id}\")\n\n        user_groups = await UserGroupDao.aget_user_group(message_session.user_id)\n        group_ids = [ug.group_id for ug in user_groups]\n\n        await cls._chat_log_async(user, ip_address, EventType.CREATE_CHAT, ObjectType.WORKSTATION,\n                                  message_session.chat_id, message_session.flow_name, ResourceTypeEnum.WORKSTATION,\n                                  group_ids)\n\n    @classmethod\n    async def delete_chat_message(cls, user: UserPayload, ip_address: str, message: Union[str, MessageSession]):\n        \"\"\"\n        Delete Chat Message Audit Log for Build Module\n        \"\"\"\n        if isinstance(message, MessageSession):\n            message_session = message\n        else:\n            message_session = await MessageSessionDao.async_get_one(message)\n\n        logger.info(f\"act=delete_chat_message user={user.user_name} ip={ip_address} session={message_session.chat_id}\")\n\n        await cls._chat_log_async(user, ip_address, EventType.DELETE_CHAT, ObjectType.WORKSTATION,\n                                  message_session.chat_id, message_session.flow_name, ResourceTypeEnum.WORKSTATION)\n\n    @classmethod\n    def _knowledge_log(cls, user: UserPayload, ip_address: str, event_type: EventType, object_type: ObjectType,\n                       object_id: str, object_name: str, resource_type: ResourceTypeEnum, resource_id: str):\n        \"\"\"\n        Logs of Knowledge Base Modules\n        \"\"\"\n        # Get which user groups the resource belongs to\n        groups = GroupResourceDao.get_resource_group(resource_type, resource_id)\n        group_ids = [one.group_id for one in groups]\n\n        # Insert Audit Log\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.KNOWLEDGE.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        AuditLogDao.insert_audit_logs([audit_log])\n\n    @classmethod\n    def create_knowledge(cls, user: UserPayload, ip_address: str, knowledge_id: int):\n        \"\"\"\n        New Knowledge Base Audit Log\n        \"\"\"\n        logger.info(f\"act=create_knowledge user={user.user_name} ip={ip_address} knowledge={knowledge_id}\")\n        knowledge_info = KnowledgeDao.query_by_id(knowledge_id)\n        cls._knowledge_log(user, ip_address, EventType.CREATE_KNOWLEDGE, ObjectType.KNOWLEDGE,\n                           str(knowledge_id), knowledge_info.name, ResourceTypeEnum.KNOWLEDGE, str(knowledge_id))\n\n    @classmethod\n    def delete_knowledge(cls, user: UserPayload, ip_address: str, knowledge: Knowledge):\n        \"\"\"\n        Delete Knowledge Base Audit Log\n        \"\"\"\n        logger.info(f\"act=delete_knowledge user={user.user_name} ip={ip_address} knowledge={knowledge.id}\")\n        cls._knowledge_log(user, ip_address, EventType.DELETE_KNOWLEDGE, ObjectType.KNOWLEDGE,\n                           str(knowledge.id), knowledge.name, ResourceTypeEnum.KNOWLEDGE, str(knowledge.id))\n\n    @classmethod\n    def upload_knowledge_file(cls, user: UserPayload, ip_address: str, knowledge_id: int, file_name: str):\n        \"\"\"\n        Audit Logs for Knowledge Base Upload Files\n        \"\"\"\n        logger.info(f\"act=upload_knowledge_file user={user.user_name} ip={ip_address}\"\n                    f\" knowledge={knowledge_id} file={file_name}\")\n        cls._knowledge_log(user, ip_address, EventType.UPLOAD_FILE, ObjectType.FILE,\n                           str(knowledge_id), file_name, ResourceTypeEnum.KNOWLEDGE, str(knowledge_id))\n\n    @classmethod\n    def delete_knowledge_file(cls, user: UserPayload, ip_address: str, knowledge_id: int, file_name: str):\n        \"\"\"\n        Audit Logs for Knowledge Base Deletion Files\n        \"\"\"\n        logger.info(f\"act=delete_knowledge_file user={user.user_name} ip={ip_address}\"\n                    f\" knowledge={knowledge_id} file={file_name}\")\n        cls._knowledge_log(user, ip_address, EventType.DELETE_FILE, ObjectType.FILE,\n                           str(knowledge_id), file_name, ResourceTypeEnum.KNOWLEDGE, str(knowledge_id))\n\n    @classmethod\n    def _system_log(cls, user: UserPayload, ip_address: str, group_ids: List[int], event_type: EventType,\n                    object_type: ObjectType, object_id: str, object_name: str, note: str = ''):\n\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.SYSTEM.value,\n            event_type=event_type.value,\n            object_type=object_type.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n            note=note,\n        )\n        AuditLogDao.insert_audit_logs([audit_log])\n\n    @classmethod\n    def update_user(cls, user: UserPayload, ip_address: str, user_id: int, group_ids: List[int], note: str):\n        \"\"\"\n        Modify a user's user groups and roles\n        \"\"\"\n        logger.info(f\"act=update_system_user user={user.user_name} ip={ip_address} user_id={user_id} note={note}\")\n        user_info = UserDao.get_user(user_id)\n        cls._system_log(user, ip_address, group_ids, EventType.UPDATE_USER,\n                        ObjectType.USER_CONF, str(user_id), user_info.user_name, note)\n\n    @classmethod\n    def forbid_user(cls, user: UserPayload, ip_address: str, user_info: User):\n        \"\"\"\n        user: Action User\n        user_info: Operated by user\n        \"\"\"\n        logger.info(f\"act=forbid_user user={user.user_name} ip={ip_address} user_id={user.user_id}\")\n        # Get the group to which the user belongs\n        user_group = UserGroupDao.get_user_group(user_info.user_id)\n        user_group = [one.group_id for one in user_group]\n        cls._system_log(user, ip_address, user_group, EventType.FORBID_USER,\n                        ObjectType.USER_CONF, str(user_info.user_id), user_info.user_name)\n\n    @classmethod\n    def recover_user(cls, user: UserPayload, ip_address: str, user_info: User):\n        logger.info(f\"act=recover_user user={user.user_name} ip={ip_address} user_id={user_info.user_id}\")\n        # Get the group to which the user belongs\n        user_group = UserGroupDao.get_user_group(user_info.user_id)\n        user_group = [one.group_id for one in user_group]\n        cls._system_log(user, ip_address, user_group, EventType.RECOVER_USER,\n                        ObjectType.USER_CONF, str(user_info.user_id), user_info.user_name)\n\n    @classmethod\n    def create_user_group(cls, user: UserPayload, ip_address: str, group_info: Group):\n        logger.info(f\"act=create_user_group user={user.user_name} ip={ip_address} group_id={group_info.id}\")\n        cls._system_log(user, ip_address, [group_info.id], EventType.CREATE_USER_GROUP,\n                        ObjectType.USER_GROUP_CONF, str(group_info.id), group_info.group_name)\n\n    @classmethod\n    def update_user_group(cls, user: UserPayload, ip_address: str, group_info: Group):\n        logger.info(f\"act=update_user_group user={user.user_name} ip={ip_address} group_id={group_info.id}\")\n        # Get user group information\n        cls._system_log(user, ip_address, [group_info.id], EventType.UPDATE_USER_GROUP,\n                        ObjectType.USER_GROUP_CONF, str(group_info.id), group_info.group_name)\n\n    @classmethod\n    def delete_user_group(cls, user: UserPayload, ip_address: str, group_info: Group):\n        logger.info(f\"act=delete_user_group user={user.user_name} ip={ip_address} group_id={group_info.id}\")\n        # Get user group information\n        cls._system_log(user, ip_address, [group_info.id], EventType.DELETE_USER_GROUP,\n                        ObjectType.USER_GROUP_CONF, str(group_info.id), group_info.group_name)\n\n    @classmethod\n    def create_role(cls, user: UserPayload, ip_address: str, role: Role):\n        logger.info(f\"act=create_role user={user.user_name} ip={ip_address} role_id={role.id}\")\n\n        cls._system_log(user, ip_address, [role.group_id], EventType.CREATE_ROLE,\n                        ObjectType.ROLE_CONF, str(role.id), role.role_name)\n\n    @classmethod\n    def update_role(cls, user: UserPayload, ip_address: str, role: Role):\n        logger.info(f\"act=update_role user={user.user_name} ip={ip_address} role_id={role.id}\")\n\n        cls._system_log(user, ip_address, [role.group_id], EventType.UPDATE_ROLE,\n                        ObjectType.ROLE_CONF, str(role.id), role.role_name)\n\n    @classmethod\n    def delete_role(cls, user: UserPayload, ip_address: str, role: Role):\n        logger.info(f\"act=delete_role user={user.user_name} ip={ip_address} role_id={role.id}\")\n\n        cls._system_log(user, ip_address, [role.group_id], EventType.DELETE_ROLE,\n                        ObjectType.ROLE_CONF, str(role.id), role.role_name)\n\n    @classmethod\n    def create_tool(cls, user: UserPayload, ip_address: str, group_ids: List[int], tool_type: GptsToolsType):\n        logger.info(f\"act=create_tool user={user.user_name} ip={ip_address} tool_type_id={tool_type.id}\")\n\n        cls._system_log(user, ip_address, group_ids, EventType.ADD_TOOL, ObjectType.TOOL, str(tool_type.id),\n                        tool_type.name)\n\n    @classmethod\n    def update_tool(cls, user: UserPayload, ip_address: str, group_ids: List[int], tool_type: GptsToolsType):\n        logger.info(f\"act=update_tool user={user.user_name} ip={ip_address} tool_type_id={tool_type.id}\")\n\n        cls._system_log(user, ip_address, group_ids, EventType.UPDATE_TOOL, ObjectType.TOOL, str(tool_type.id),\n                        tool_type.name)\n\n    @classmethod\n    def delete_tool(cls, user: UserPayload, ip_address: str, group_ids: List[int], tool_type: GptsToolsType):\n        logger.info(f\"act=delete_tool user={user.user_name} ip={ip_address} tool_type_id={tool_type.id}\")\n        cls._system_log(user, ip_address, group_ids, EventType.DELETE_TOOL, ObjectType.TOOL, str(tool_type.id),\n                        tool_type.name)\n\n    @classmethod\n    def user_login(cls, user: UserPayload, ip_address: str):\n        logger.info(f\"act=user_login user={user.user_name} ip={ip_address} user_id={user.user_id}\")\n        # Get the group to which the user belongs\n        user_group = UserGroupDao.get_user_group(user.user_id)\n        user_group = [one.group_id for one in user_group]\n        cls._system_log(user, ip_address, user_group, EventType.USER_LOGIN,\n                        ObjectType.NONE, '', '')\n\n    @classmethod\n    async def _dashboard_log(cls, user: UserPayload, ip_address: str, group_ids: List[int], event_type: EventType,\n                             object_id: str, object_name: str):\n\n        audit_log = AuditLog(\n            operator_id=user.user_id,\n            operator_name=user.user_name,\n            group_ids=group_ids,\n            system_id=SystemId.DASHBOARD.value,\n            event_type=event_type.value,\n            object_type=ObjectType.DASHBOARD.value,\n            object_id=object_id,\n            object_name=object_name,\n            ip_address=ip_address,\n        )\n        await AuditLogDao.ainsert_audit_logs([audit_log])\n\n    @classmethod\n    async def create_dashboard(cls, user: UserPayload, ip_address: str, dashboard_id: str, dashboard_name: str,\n                               group_ids: List[int]):\n        logger.info(f\"act=create_dashboard user={user.user_name} ip={ip_address} dashboard_id={dashboard_id}\")\n        await cls._dashboard_log(user, ip_address, group_ids, EventType.CREATE_DASHBOARD, dashboard_id, dashboard_name)\n\n    @classmethod\n    async def update_dashboard(cls, user: UserPayload, ip_address: str, dashboard_id: str, dashboard_name: str,\n                               group_ids: List[int]):\n        logger.info(f\"act=update_dashboard user={user.user_name} ip={ip_address} dashboard_id={dashboard_id}\")\n        await cls._dashboard_log(user, ip_address, group_ids, EventType.UPDATE_DASHBOARD, dashboard_id, dashboard_name)\n\n    @classmethod\n    async def delete_dashboard(cls, user: UserPayload, ip_address: str, dashboard_id: str, dashboard_name: str,\n                               group_ids: List[int]):\n        logger.info(f\"act=delete_dashboard user={user.user_name} ip={ip_address} dashboard_id={dashboard_id}\")\n        await cls._dashboard_log(user, ip_address, group_ids, EventType.DELETE_DASHBOARD, dashboard_id, dashboard_name)\n\n    @classmethod\n    async def get_filter_flow_ids(cls, user: UserPayload, flow_ids: List[str], group_ids: List[int]) -> (bool, List):\n        \"\"\" Setujuflow_idsAndgroup_idsGet the final SkillidFilters false: Show Back to Empty List\"\"\"\n        flow_ids = [one for one in flow_ids]\n        group_admins = []\n        if not user.is_admin():\n            user_groups = await UserGroupDao.aget_user_admin_group(user.user_id)\n            # Not a user group administrator, no permissions\n            if not user_groups:\n                raise UnAuthorizedError.http_exception()\n            group_admins = [one.group_id for one in user_groups]\n        # GroupingidDoing Intersections\n        if group_ids:\n            if group_admins:\n                # Query user group not belonging to user management, return empty\n                group_admins = list(set(group_admins) & set(group_ids))\n                if len(group_admins) == 0:\n                    return False, []\n            else:\n                group_admins = group_ids\n\n        # Get all apps under groupingID\n        group_flows = []\n        if group_admins:\n            group_flows = await GroupResourceDao.get_groups_resource(group_admins,\n                                                                     resource_types=[ResourceTypeEnum.FLOW,\n                                                                                     ResourceTypeEnum.WORK_FLOW,\n                                                                                     ResourceTypeEnum.ASSISTANT,\n                                                                                     ResourceTypeEnum.WORKSTATION])\n            # User group under user management has no resources\n            if not group_flows:\n                return False, []\n            group_flows = [one.third_id for one in group_flows]\n\n        # Acquire the final skillIDRestrict to list\n        filter_flow_ids = []\n        if flow_ids and group_flows:\n            filter_flow_ids = list(set(group_flows) & set(flow_ids))\n            if not filter_flow_ids:\n                return False, []\n        elif flow_ids:\n            filter_flow_ids = flow_ids\n        elif group_flows:\n            filter_flow_ids = group_flows\n        return True, filter_flow_ids\n\n    @classmethod\n    async def get_session_list(cls, user: UserPayload, flow_ids: List[str], user_ids: List[int], group_ids: List[int],\n                               start_date: datetime, end_date: datetime,\n                               feedback: str, sensitive_status: int, page: int, page_size: int) -> Tuple[\n        List[AppChatList], int]:\n\n        if user.is_admin():\n            # Administrator: The frontend sends out what it needs to retrieve; if nothing is sent, it retrieves all (an empty list usually means there are no restrictions or the decision is made by the business logic in subsequent logic).\n            search_group_ids = group_ids or []\n        else:\n            # Regular users: Administrative privileges must be verified\n            user_managed_groups = await UserGroupDao.aget_user_admin_group(user.user_id)\n            if not user_managed_groups:\n                raise UnAuthorizedError.http_exception()\n\n            managed_group_ids = {one.group_id for one in user_managed_groups}\n\n            if group_ids:\n                # Find the intersection: the intersection of the frontend requests\n                valid_group_ids = list(set(group_ids) & managed_group_ids)\n                if not valid_group_ids:\n                    return [], 0\n                search_group_ids = valid_group_ids\n            else:\n                # Default: All managed groups\n                search_group_ids = list(managed_group_ids)\n\n        conditions = []\n\n        # Basic equality/range filtering\n        if sensitive_status:\n            conditions.append(MessageSession.sensitive_status == sensitive_status)\n\n        if user_ids:\n            conditions.append(col(MessageSession.user_id).in_(user_ids))\n\n        if start_date:\n            conditions.append(col(MessageSession.create_time) >= start_date)\n        if end_date:\n            conditions.append(col(MessageSession.create_time) <= end_date)\n\n        if flow_ids:\n            conditions.append(col(MessageSession.flow_id).in_(flow_ids))\n\n        # Process type filtering (fixed enumeration)\n        conditions.append(col(MessageSession.flow_type).in_([\n            FlowType.FLOW.value,\n            FlowType.WORKFLOW.value,\n            FlowType.ASSISTANT.value,\n            FlowType.WORKSTATION.value\n        ]))\n\n        # Feedback status filtering\n        feedback_map = {\n            'like': col(MessageSession.like) > 0,\n            'dislike': col(MessageSession.dislike) > 0,\n            'copied': col(MessageSession.copied) > 0\n        }\n        if feedback in feedback_map:\n            conditions.append(feedback_map[feedback])\n\n        # Group membership filtering\n        if search_group_ids:\n            group_filters = [\n                func.json_contains(MessageSession.group_ids, str(gid))\n                for gid in search_group_ids\n            ]\n            conditions.append(or_(*group_filters))\n\n        # build query statement\n        statement = select(MessageSession).where(and_(*conditions)).order_by(col(MessageSession.create_time).desc())\n\n        res_task = MessageSessionDao.get_statement_results(statement, page=page, limit=page_size)\n        total_task = MessageSessionDao.get_statement_count(statement)\n\n        res, total = await asyncio.gather(res_task, total_task)\n\n        if not res:\n            return [], total\n\n        target_user_ids = set()\n        target_flow_ids = set()  # Flow/Workflow\n        target_assistant_ids = set()  # Assistant\n\n        for session in res:\n            target_user_ids.add(session.user_id)\n            if session.flow_type in [FlowType.FLOW.value, FlowType.WORKFLOW.value, FlowType.WORKSTATION.value]:\n                target_flow_ids.add(session.flow_id)\n            elif session.flow_type == FlowType.ASSISTANT.value:\n                target_assistant_ids.add(session.flow_id)\n\n        target_user_ids_list = list(target_user_ids)\n\n        async def get_users_groups_map(u_ids: List[int]):\n            # get user groups for multiple users\n            if not u_ids: return {}\n            tasks = [user.get_user_groups(uid) for uid in u_ids]\n            results = await asyncio.gather(*tasks)\n            return dict(zip(u_ids, results))\n\n        users_data, flows_data, assistants_data, user_groups_map = await asyncio.gather(\n            UserDao.aget_user_by_ids(target_user_ids_list),\n            FlowDao.aget_flow_by_ids(list(target_flow_ids)),\n            AssistantDao.aget_assistants_by_ids(list(target_assistant_ids)),\n            get_users_groups_map(target_user_ids_list)\n        )\n\n        user_map = {u.user_id: u.user_name for u in users_data}\n        flow_map = {f.id: f.name for f in flows_data}\n        assistant_map = {a.id: a.name for a in assistants_data}\n\n        # Construct the return object\n        result: List[AppChatList] = []\n\n        for session in res:\n            # Determine the current name\n            current_name = session.flow_name\n            if session.flow_type in [FlowType.FLOW.value, FlowType.WORKFLOW.value, FlowType.WORKSTATION.value]:\n                current_name = flow_map.get(session.flow_id, current_name)\n            elif session.flow_type == FlowType.ASSISTANT.value:\n                current_name = assistant_map.get(session.flow_id, current_name)\n\n            # Append to the result set\n            result.append(AppChatList(\n                **session.model_dump(exclude={'flow_name'}),\n                flow_name=current_name,\n                like_count=session.like,\n                dislike_count=session.dislike,\n                copied_count=session.copied,\n                user_name=user_map.get(session.user_id, \"\"),  # get user name\n                user_groups=user_groups_map.get(session.user_id, [])\n            ))\n\n        return result, total\n\n    @classmethod\n    async def get_session_messages(cls, user: UserPayload, flow_ids: List[str], user_ids: List[int],\n                                   group_ids: List[int],\n                                   start_date: datetime, end_date: datetime, feedback: str,\n                                   sensitive_status: int) -> List[AppChatList]:\n        page = 1\n        page_size = 50\n        res = []\n        while True:\n            result, total = await cls.get_session_list(user, flow_ids, user_ids, group_ids, start_date, end_date,\n                                                       feedback,\n                                                       sensitive_status, page, page_size)\n            if not result:\n                break\n            page += 1\n            res.extend(await cls.get_chat_messages(result))\n        return res\n\n    @classmethod\n    async def export_session_messages(cls, user: UserPayload, flow_ids: List[str], user_ids: List[int],\n                                      group_ids: List[int],\n                                      start_date: datetime, end_date: datetime,\n                                      feedback: str, sensitive_status: int) -> str:\n        page = 1\n        page_size = 30\n        excel_data = [\n            ['Session ID', 'Application Name', 'Session creation time', 'Username', 'Message Role',\n             'Message sending time',\n             'Message text content',\n             'Like',\n             'Dislike', 'copy']]\n        bisheng_pro = await settings.aget_system_login_method().bisheng_pro\n        if bisheng_pro:\n            excel_data[0].append('Does it meet the content security review requirements?')\n\n        while True:\n            result, total = await cls.get_session_list(user, flow_ids, user_ids, group_ids, start_date, end_date,\n                                                       feedback,\n                                                       sensitive_status, page, page_size)\n            if not result:\n                break\n            page += 1\n            chat_list = await cls.get_chat_messages(result)\n            for chat in chat_list:\n                for message in chat.messages:\n                    message_data = [chat.chat_id, chat.flow_name, chat.create_time.strftime('%Y/%m/%d %H:%M:%S'),\n                                    chat.user_name,\n                                    'User' if message.category == 'question' else 'AI',\n                                    message.create_time.strftime('%Y/%m/%d %H:%M:%S'),\n                                    message.message,\n                                    'Yes' if message.liked == LikedType.LIKED.value else 'No',\n                                    'Yes' if message.liked == LikedType.DISLIKED.value else 'No',\n                                    'Yes' if message.copied else 'No']\n                    if bisheng_pro:\n                        message_data.append(\n                            'Yes' if message.sensitive_status == SensitiveStatus.VIOLATIONS.value else 'No')\n                    excel_data.append(message_data)\n\n        minio_client = await get_minio_storage()\n        tmp_object_name = f'tmp/session/export_{generate_uuid()}.csv'\n        with NamedTemporaryFile(mode='w', newline='') as tmp_file:\n            csv_writer = csv.writer(tmp_file)\n            csv_writer.writerows(excel_data)\n            tmp_file.seek(0)\n            await minio_client.put_object(object_name=tmp_object_name, file=tmp_file.name,\n                                          content_type='application/text',\n                                          bucket_name=minio_client.tmp_bucket)\n        return await minio_client.get_share_link(tmp_object_name, minio_client.tmp_bucket)\n\n    @classmethod\n    async def get_chat_messages(cls, chat_list: List[AppChatList]) -> List[AppChatList]:\n        chat_ids = [chat.chat_id for chat in chat_list]\n\n        chat_messages = await ChatMessageDao.get_all_message_by_chat_ids(chat_ids)\n        chat_messages_map = {}\n        for one in chat_messages:\n            if one.chat_id not in chat_messages_map:\n                chat_messages_map[one.chat_id] = []\n            chat_messages_map[one.chat_id].append(one)\n        for chat in chat_list:\n            chat_messages = chat_messages_map.get(chat.chat_id, [])\n            # remove workflow input event, because it's not show in web\n            chat.messages = [message for message in chat_messages\n                             if message.category != WorkflowEventType.UserInput.value]\n        return chat_list\n"
  },
  {
    "path": "src/backend/bisheng/api/services/base.py",
    "content": "from bisheng.core.cache import InMemoryCache\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync, get_redis_client\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync, get_minio_storage\n\n\nclass BaseService:\n    LogoMemoryCache = InMemoryCache(max_size=200, expiration_time=3600 * 24)\n\n    @classmethod\n    def get_logo_share_link(cls, logo_path: str):\n\n        redis_client = get_redis_client_sync()\n        if not logo_path:\n            return ''\n        cache_key = f'logo_cache_new:{logo_path}'\n        # Fetch from memory first\n        share_url = cls.LogoMemoryCache.get(cache_key)\n        if share_url:\n            return share_url\n\n        # Then fromredisFetch in cache\n        share_url = redis_client.get(cache_key)\n        if share_url:\n            cls.LogoMemoryCache.set(cache_key, share_url)\n            return share_url\n\n        minio_client = get_minio_storage_sync()\n        share_url = minio_client.get_share_link_sync(logo_path)\n\n        # Ceacle5Day. Temporary link is valid for7 days\n        redis_client.set(cache_key, share_url, 3600 * 120)\n        cls.LogoMemoryCache.set(cache_key, share_url)\n        return share_url\n\n    @classmethod\n    async def get_logo_share_link_async(cls, logo_path: str):\n\n        redis_client = await get_redis_client()\n        if not logo_path:\n            return ''\n        cache_key = f'logo_cache_new:{logo_path}'\n        # Fetch from memory first\n        share_url = cls.LogoMemoryCache.get(cache_key)\n        if share_url:\n            return share_url\n\n        # Then fromredisFetch in cache\n        share_url = await redis_client.aget(cache_key)\n        if share_url:\n            cls.LogoMemoryCache.set(cache_key, share_url)\n            return share_url\n\n        minio_client = await get_minio_storage()\n        share_url = await minio_client.get_share_link(logo_path)\n\n        # Ceacle5Day. Temporary link is valid for7 days\n        await redis_client.aset(cache_key, share_url, 3600 * 120)\n        cls.LogoMemoryCache.set(cache_key, share_url)\n        return share_url\n"
  },
  {
    "path": "src/backend/bisheng/api/services/chat_imp.py",
    "content": "import asyncio\nimport json\n# Pengaturan websockets Log level is NONE\nimport logging\nfrom collections import defaultdict\nfrom datetime import datetime, timedelta\n\nfrom pydantic import BaseModel\nfrom websockets import connect\n\nfrom bisheng.common.errcode.http_error import ServerError\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.message import ChatMessage\n\n# Maintain a connection pool\nconnection_pool = defaultdict(asyncio.Queue)\nlogging.getLogger('websockets').setLevel(logging.ERROR)\n\nexpire = 600  # reids 60s Overdue\n\n\nclass TimedQueue:\n\n    def __init__(self):\n        self.queue = asyncio.Queue()\n        self.last_active = datetime.now()\n\n    async def put_nowait(self, item):\n        self.last_active = datetime.now()\n        await self.queue.put(item)\n\n    async def get_nowait(self):\n        self.last_active = datetime.now()\n        return await self.queue.get()\n\n    def empty(self):\n        return self.queue.empty()\n\n    def qsize(self):\n        return self.queue.qsize()\n\n\nasync def clean_inactive_queues(queue: defaultdict, timeout_threshold: timedelta):\n    while True:\n        current_time = datetime.now()\n        for key, timed_queue in list(queue.items()):\n            # If the queue is not active beyond the set threshold time, clear the queue\n            if current_time - timed_queue.last_active > timeout_threshold:\n                while not timed_queue.empty():\n                    timed_queue.get_nowait()  # Remove task from queue\n                del queue[key]  # Delete queue\n        await asyncio.sleep(timeout_threshold.total_seconds())\n\n\n# Maintain a connection pool\nconnection_pool = defaultdict(TimedQueue)\n\n\n# clean_inactive_queues(connection_pool, timedelta(minutes=5))\n\n\nasync def get_connection(uri, identifier):\n    \"\"\"\n    DapatkanWebSocketConnections. Returns directly if there are connections available in the connection pool;\n    Otherwise, create a new connection and add it to the connection pool.\n    \"\"\"\n    if connection_pool[identifier].empty():\n        # build newWebSocketCONNECT\n        websocket = await connect(uri)\n\n        await connection_pool[identifier].put_nowait(websocket)\n\n    # Get Connection from Connection Pool\n    websocket = await connection_pool[identifier].get_nowait()\n    return websocket\n\n\nasync def release_connection(identifier, websocket):\n    \"\"\"\n    releaseWebSocketConnect and put it back into the connection pool.\n    \"\"\"\n    await connection_pool[identifier].put_nowait(websocket)\n\n\ndef comment_answer(message_id: int, comment: str):\n    with get_sync_db_session() as session:\n        message = session.get(ChatMessage, message_id)\n        if message:\n            message.remark = comment[:4096]\n            session.add(message)\n            session.commit()\n\n\nclass ContentStreamResp(BaseModel):\n    role: str\n    content: str\n\n\nclass ChoiceStreamResp(BaseModel):\n    index: int = 0\n    delta: ContentStreamResp = 0\n    session_id: str\n\n    def __str__(self) -> str:\n        jsonData = '{\"index\": \"%s\", \"delta\": %s, \"session_id\": \"%s\"}' % (\n            self.index, json.dumps(self.delta.dict(), ensure_ascii=False), self.session_id)\n        return '{\"choices\":[%s]}\\n\\n' % (jsonData)\n\n\nasync def event_stream(\n        webosocket: connect,\n        message: str,\n        session_id: str,\n        model: str,\n        streaming: bool,\n):\n    payload = {'inputs': message, 'flow_id': model, 'chat_id': session_id}\n    try:\n        await webosocket.send(json.dumps(payload, ensure_ascii=False))\n    except Exception as e:\n        yield ServerError(exception=e).to_sse_event_instance_str()\n        return\n    sync = ''\n    while True:\n        try:\n            msg = await webosocket.recv()\n        except Exception as e:\n            yield ServerError(exception=e).to_sse_event_instance_str()\n            break\n        if msg is None:\n            continue\n        # Judgingmsg of income they generate.\n        res = json.loads(msg)\n        if streaming:\n            if res.get('type') != 'end' and res.get('message'):\n                delta = ContentStreamResp(role='assistant', content=res.get('message'))\n                yield str(ChoiceStreamResp(index=0, session_id=session_id, delta=delta))\n        else:\n            # Control the following via thecloseWhether to send a message\n            if res.get('type') == 'end':\n                sync = res.get('message')\n\n        if res.get('type') == 'close':\n            if not streaming and sync:\n                delta = ContentStreamResp(role='assistant', content=sync)\n                msg = ChoiceStreamResp(index=0,\n                                       session_id=session_id,\n                                       delta=delta,\n                                       finish_reason='stop')\n                yield '{\"choices\":[%s]}' % (json.dumps(msg.dict()))\n            # Release Connection\n            elif streaming:\n                yield 'data: [DONE]'\n            await release_connection(session_id, webosocket)\n            break\n"
  },
  {
    "path": "src/backend/bisheng/api/services/component.py",
    "content": "from typing import List\n\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.component import ComponentExistError, ComponentNotExistError\nfrom bisheng.database.models.component import Component, ComponentDao\n\n\nclass ComponentService:\n    @classmethod\n    def get_all_component(cls, user: UserPayload) -> UnifiedResponseModel[List[Component]]:\n        res = ComponentDao.get_user_components(user.user_id)\n        return resp_200(data=res)\n\n    @classmethod\n    def save_component(cls, component: Component) -> UnifiedResponseModel[Component]:\n        exist_component = ComponentDao.get_component_by_name(component.user_id, component.name)\n        if exist_component:\n            return ComponentExistError.return_resp()\n        component = ComponentDao.insert_component(component)\n        return resp_200(data=component)\n\n    @classmethod\n    def update_component(cls, component: Component) -> UnifiedResponseModel[Component]:\n        exist_component = ComponentDao.get_component_by_name(component.user_id, component.name)\n        if not exist_component:\n            return ComponentNotExistError.return_resp()\n        exist_component.data = component.data\n        exist_component.description = component.description\n        exist_component.version = component.version\n        component = ComponentDao.update_component(exist_component)\n        return resp_200(data=component)\n\n    @classmethod\n    def delete_component(cls, user_id: int, name: str) -> UnifiedResponseModel[Component]:\n        exist_component = ComponentDao.get_component_by_name(user_id, name)\n        if not exist_component:\n            return ComponentNotExistError.return_resp()\n        component = ComponentDao.delete_component(exist_component)\n        return resp_200(data=component)\n"
  },
  {
    "path": "src/backend/bisheng/api/services/dataset_service.py",
    "content": "from typing import Dict, List, Optional\n\nfrom fastapi import HTTPException\n\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.v1.schema.dataset_param import CreateDatasetParam\nfrom bisheng.common.errcode.dataset import DatasetNameExistsError\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.database.models.dataset import Dataset, DatasetCreate, DatasetDao, DatasetRead\nfrom bisheng.user.domain.models.user import UserDao\n\n\nclass DatasetService(BaseService):\n\n    @classmethod\n    def build_dataset_list(cls,\n                           page: int,\n                           limit: int,\n                           keyword: Optional[str] = None) -> (List[Dict], int):\n        \"\"\"completelist DATA\"\"\"\n\n        dataset_list = DatasetDao.filter_dataset_by_ids(dataset_ids=[],\n                                                        keyword=keyword,\n                                                        page=page,\n                                                        limit=limit)\n        count_filter = []\n        if keyword:\n            count_filter.append(Dataset.name.like('%{}%'.format(keyword)))\n        total_count = DatasetDao.get_count_by_filter(count_filter)\n\n        user_ids = [one.user_id for one in dataset_list]\n        user_list = UserDao.get_user_by_ids(user_ids)\n        user_dict = {one.user_id: one for one in user_list}\n        res = [DatasetRead.model_validate(one) for one in dataset_list]\n        for one in res:\n            one.user_name = user_dict[one.user_id].user_name\n            if one.object_name:\n                one.url = one.object_name\n\n        return res, total_count\n\n    @classmethod\n    def create_dataset(cls, user_id: int, data: CreateDatasetParam):\n        \"\"\"Create Dataset\"\"\"\n        dataset_insert = DatasetCreate.validate(data)\n        dataset_insert.user_id = user_id\n        isExist = DatasetDao.get_dataset_by_name(data.name)\n        if isExist:\n            raise DatasetNameExistsError()\n        dataset = DatasetDao.insert(dataset_insert)\n        # Conditioning Documentation\n        object_name = f'/dataset/{dataset.id}/{dataset.name}'\n        if data.file_url:\n            # MinioClient().upload_minio()\n            dataset.object_name = object_name\n        if data.qa_list:\n            for qa in data.qa_list:\n                qa.dataset_id = dataset.id\n                # QADao.insert(qa)\n\n        dataset = DatasetDao.update(dataset)\n        return dataset\n\n    @classmethod\n    def delete_dataset(cls, dataset_id: int):\n        dataset = DatasetDao.get_dataset_by_id(dataset_id)\n        if not dataset:\n            raise HTTPException(status_code=404, detail='Dataset not found')\n        # <g id=\"Bold\">Medical Treatment:</g>minio\n        object_name = dataset.object_name\n        if object_name:\n            minio_client = get_minio_storage_sync()\n            minio_client.remove_object_sync(object_name=object_name)\n        DatasetDao.delete(dataset)\n        return True\n\n    @classmethod\n    async def get_one_by_object_name(cls, object_name: str) -> Optional[Dataset]:\n        dataset = await DatasetDao.aget_dataset_by_object_name(object_name)\n"
  },
  {
    "path": "src/backend/bisheng/api/services/etl4lm_loader.py",
    "content": "# flake8: noqa\n\"\"\"Loads PDF with semantic splilter.\"\"\"\nimport base64\nimport logging\nimport os\nfrom typing import List\nfrom uuid import uuid4\n\nimport aiofiles\nimport cv2\nimport fitz\nimport requests\nfrom PIL import Image\nfrom aiohttp import ClientTimeout\nfrom langchain_community.docstore.document import Document\nfrom langchain_community.document_loaders.pdf import BasePDFLoader\n\nfrom bisheng.core.external.http_client.http_client_manager import get_http_client\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\n\nlogger = logging.getLogger(__name__)\n\n\ndef get_image_tag(results, part):\n    element_id = part.get(\"element_id\", None)\n    url = results.get(element_id)\n    return f\"![]({url})\"\n\n\ndef get_image_parts(partitions):\n    page_dict = {}\n    for part in partitions:\n        label = part[\"type\"]\n        if label == \"Image\":\n            bboxes = part.get(\"metadata\", {}).get(\"extra_data\", {}).get(\"bboxes\", [])\n            page = part.get(\"metadata\", {}).get(\"extra_data\", {}).get(\"pages\", -1)\n            element_id = part.get(\"element_id\", None)\n            if len(bboxes) == 0 or page == -1 or not element_id:\n                continue\n            item = {}\n            item[\"bboxes\"] = bboxes[0]\n            item[\"element_id\"] = element_id\n            page_id = page[0]\n            if page_id not in page_dict:\n                page_dict[page_id] = []\n            page_dict[page_id].append(item)\n    return page_dict\n\n\ndef crop_image(image_file, item, cropped_imag_base_dir):\n    element_id = item.get(\"element_id\")\n    bbox = item.get(\"bboxes\")\n    img = cv2.imread(image_file)\n    x1, y1, x2, y2 = bbox\n    cropped_img = img[y1:y2, x1:x2]\n    file_name = f\"{element_id}.png\"\n    cv2.imwrite(os.path.join(cropped_imag_base_dir, file_name), cropped_img)\n    return file_name\n\n\ndef extract_pdf_images(file_name, page_dict, doc_id, knowledge_id):\n    from bisheng.api.services.knowledge_imp import put_images_to_minio\n    from bisheng.api.services.knowledge_imp import KnowledgeUtils\n    from bisheng.core.cache.utils import CACHE_DIR\n\n    result = {}\n    base_dir = f\"{CACHE_DIR}/{doc_id}\"\n    cropped_image_base_dir = f\"{base_dir}/images\"\n    pdf_page_base_dir = f\"{base_dir}/images\"\n\n    if not os.path.exists(pdf_page_base_dir):\n        os.makedirs(pdf_page_base_dir)\n    if not os.path.exists(cropped_image_base_dir):\n        os.makedirs(cropped_image_base_dir)\n\n    pdf_document = fitz.open(file_name)\n\n    minio_client = get_minio_storage_sync()\n\n    for page_number, items in page_dict.items():\n        page = pdf_document[page_number]\n        pix = page.get_pixmap()\n        image = Image.frombytes(\"RGB\", (pix.width, pix.height), pix.samples)\n        pdf_image_file_name = f\"{pdf_page_base_dir}/{page_number}.png\"\n        image.save(pdf_image_file_name)\n        for item in items:\n            cropped_image_file = crop_image(\n                pdf_image_file_name, item, cropped_image_base_dir\n            )\n            result[item[\"element_id\"]] = (\n                f\"/{minio_client.bucket}/{KnowledgeUtils.get_knowledge_file_image_dir(doc_id, knowledge_id)}/{cropped_image_file}\"\n            )\n    put_images_to_minio(cropped_image_base_dir, knowledge_id, doc_id)\n    return result\n\n\ndef pre_handle(partitions, file_name, knowledge_id):\n    doc_id = str(uuid4())\n    image_parts = get_image_parts(partitions=partitions)\n    if len(image_parts) == 0:\n        return []\n    return extract_pdf_images(file_name, image_parts, doc_id, knowledge_id)\n\n\ndef merge_partitions(file_name, partitions, knowledge_id=None):\n    # Pre-processingpdf, Extracting Images\n    pre_handle_results = pre_handle(\n        partitions=partitions, file_name=file_name, knowledge_id=knowledge_id\n    )\n    text_elem_sep = \"\\n\"\n    doc_content = []\n    is_first_elem = True\n    last_label = \"\"\n    prev_length = 0\n    metadata = dict(bboxes=[], pages=[], indexes=[], types=[])\n\n    for part in partitions:\n        label, text = part[\"type\"], part[\"text\"]\n        extra_data = part[\"metadata\"][\"extra_data\"]\n        if label == \"Image\":\n            part[\"text\"] = get_image_tag(pre_handle_results, part)\n            text = part[\"text\"]\n\n        if is_first_elem:\n            f_text = text + \"\\n\" if label == \"Title\" else text\n            doc_content.append(f_text)\n            is_first_elem = False\n        else:\n            if last_label == \"Title\" and label == \"Title\":\n                doc_content.append(\"\\n\" + text)\n            elif label == \"Title\":\n                doc_content.append(\"\\n\\n\" + text)\n            elif label == \"Table\":\n                doc_content.append(\"\\n\\n\" + text)\n            else:\n                if last_label == \"Table\":\n                    doc_content.append(text_elem_sep * 2 + text)\n                else:\n                    doc_content.append(text_elem_sep + text)\n\n        last_label = label\n        metadata[\"bboxes\"].extend(\n            list(map(lambda x: list(map(int, x)), extra_data[\"bboxes\"]))\n        )\n        metadata[\"pages\"].extend(extra_data[\"pages\"])\n        metadata[\"types\"].extend(extra_data[\"types\"])\n\n        indexes = extra_data[\"indexes\"]\n        up_indexes = [[s + prev_length, e + prev_length] for (s, e) in indexes]\n        metadata[\"indexes\"].extend(up_indexes)\n        prev_length += len(doc_content[-1])\n\n    content = \"\".join(doc_content)\n    return content, metadata\n\n\nclass Etl4lmLoader(BasePDFLoader):\n    \"\"\"Loads a PDF with pypdf and chunks at character level. dummy version\n\n    Loader also stores page numbers in metadata.\n    \"\"\"\n\n    def __init__(\n            self,\n            file_name: str,\n            file_path: str,\n            unstructured_api_key: str = None,\n            unstructured_api_url: str = None,\n            force_ocr: bool = False,\n            enable_formular: bool = True,\n            filter_page_header_footer: bool = False,\n            ocr_sdk_url: str = None,\n            timeout: int = 60,\n            knowledge_id: int = None,\n            start: int = 0,\n            n: int = None,\n            verbose: bool = False,\n            kwargs: dict = {},\n    ) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.unstructured_api_url = unstructured_api_url\n        self.unstructured_api_key = unstructured_api_key\n        self.force_ocr = force_ocr\n        self.enable_formular = enable_formular\n        self.filter_page_header_footer = filter_page_header_footer\n        self.ocr_sdk_url = ocr_sdk_url\n        self.headers = {\"Content-Type\": \"application/json\"}\n        self.file_name = file_name\n        self.timemout = timeout\n        self.start = start\n        self.n = n\n        self.extra_kwargs = kwargs\n        self.partitions = None\n        self.knowledge_id = knowledge_id\n        super().__init__(file_path)\n\n    def load(self) -> List[Document]:\n        \"\"\"Load given path as pages.\"\"\"\n        b64_data = base64.b64encode(open(self.file_path, \"rb\").read()).decode()\n        parameters = {\"start\": self.start, \"n\": self.n}\n        parameters.update(self.extra_kwargs)\n        # TODO: add filter_page_header_footer into payload when elt4llm is ready.\n        payload = dict(\n            filename=os.path.basename(self.file_name),\n            b64_data=[b64_data],\n            mode=\"partition\",\n            force_ocr=self.force_ocr,\n            enable_formula=self.enable_formular,\n            ocr_sdk_url=self.ocr_sdk_url,\n            parameters=parameters,\n        )\n        try:\n            resp = requests.post(\n                self.unstructured_api_url, headers=self.headers, json=payload, timeout=self.timemout\n            )\n        except requests.Timeout as e:\n            logger.error(f\"Request to etl4lm API timed out: {e}\")\n            raise Exception(\"etl4lm server timeout\")\n        except Exception as e:\n            if str(e).find(\"Timeout\") != -1:\n                logger.error(f\"Request to etl4lm API timed out: {e}\")\n                raise Exception(\"etl4lm server timeout\")\n            raise e\n        if resp.status_code != 200:\n            raise Exception(\n                f\"file partition {os.path.basename(self.file_name)} failed resp={resp.text}\"\n            )\n\n        resp = resp.json()\n        if 200 != resp.get(\"status_code\"):\n            logger.info(\n                f\"file partition {os.path.basename(self.file_name)} error resp={resp}\"\n            )\n            raise Exception(\n                f\"file partition error {os.path.basename(self.file_name)} error resp={resp}\"\n            )\n        partitions = resp[\"partitions\"]\n        if partitions:\n            logger.info(f\"content_from_partitions\")\n            self.partitions = partitions\n            content, metadata = merge_partitions(\n                self.file_path, partitions, self.knowledge_id\n            )\n        elif resp.get(\"text\"):\n            logger.info(f\"content_from_text\")\n            content = resp[\"text\"]\n            metadata = {\n                \"bboxes\": [],\n                \"pages\": [],\n                \"indexes\": [],\n                \"types\": [],\n            }\n        else:\n            logger.warning(f\"content_is_empty resp={resp}\")\n            content = \"\"\n            metadata = {}\n\n        logger.info(f'unstruct_return code={resp.get(\"status_code\")}')\n\n        if resp.get(\"b64_pdf\"):\n            with open(self.file_path, \"wb\") as f:\n                f.write(base64.b64decode(resp[\"b64_pdf\"]))\n\n        metadata[\"source\"] = self.file_name\n        doc = Document(page_content=content, metadata=metadata)\n        return [doc]\n\n    async def aload(self) -> List[Document]:\n        \"\"\"Asynchronously load given path as pages.\"\"\"\n        async with aiofiles.open(self.file_path, \"rb\") as f:\n            file_data = await f.read()\n        b64_data = base64.b64encode(file_data).decode()\n        parameters = {\"start\": self.start, \"n\": self.n}\n        parameters.update(self.extra_kwargs)\n        # TODO: add filter_page_header_footer into payload when elt4llm is ready.\n        payload = dict(\n            filename=os.path.basename(self.file_name),\n            b64_data=[b64_data],\n            mode=\"partition\",\n            force_ocr=self.force_ocr,\n            enable_formula=self.enable_formular,\n            ocr_sdk_url=self.ocr_sdk_url,\n            parameters=parameters,\n        )\n        try:\n\n            http_client = await get_http_client()\n\n            resp = await http_client.post(\n                url=self.unstructured_api_url, headers=self.headers, body=payload,\n                timeout=ClientTimeout(total=self.timemout)\n            )\n        except Exception as e:\n            if str(e).find(\"Timeout\") != -1:\n                logger.error(f\"Request to etl4lm API timed out: {e}\")\n                raise Exception(\"etl4lm server timeout\")\n            raise e\n        if (resp.status_code != 200) or (resp.body and resp.body.get(\"status_code\") != 200):\n            logger.info(\n                f\"file partition {os.path.basename(self.file_name)} error resp={resp}\"\n            )\n            raise Exception(\n                f\"file partition error {os.path.basename(self.file_name)} error resp={resp}\"\n            )\n\n        partitions = resp.body.get(\"partitions\")\n        if partitions:\n            logger.info(f\"content_from_partitions\")\n            self.partitions = partitions\n            content, metadata = merge_partitions(\n                self.file_path, partitions, self.knowledge_id\n            )\n        elif resp.body.get(\"text\"):\n            logger.info(f\"content_from_text\")\n            content = resp.body[\"text\"]\n            metadata = {\n                \"bboxes\": [],\n                \"pages\": [],\n                \"indexes\": [],\n                \"types\": [],\n            }\n        else:\n            logger.warning(f\"content_is_empty resp={resp.body}\")\n            content = \"\"\n            metadata = {}\n\n        logger.info(f'unstruct_return code={resp.body.get(\"status_code\")}')\n\n        if resp.body.get(\"b64_pdf\"):\n            with open(self.file_path, \"wb\") as f:\n                f.write(base64.b64decode(resp.body[\"b64_pdf\"]))\n\n        metadata[\"source\"] = self.file_name\n        doc = Document(page_content=content, metadata=metadata)\n        return [doc]\n"
  },
  {
    "path": "src/backend/bisheng/api/services/evaluation.py",
    "content": "import asyncio\nimport io\nimport json\nimport os\nfrom collections import defaultdict\nfrom copy import deepcopy\nfrom io import BytesIO\nfrom typing import List\n\nimport numpy as np\nimport pandas as pd\nfrom bisheng_ragas import evaluate\nfrom bisheng_ragas.llms.langchain import LangchainLLM\nfrom bisheng_ragas.metrics import AnswerCorrectnessBisheng\nfrom datasets import Dataset\nfrom fastapi import UploadFile, HTTPException\nfrom fastapi.encoders import jsonable_encoder\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant_agent import AssistantAgent\nfrom bisheng.api.services.flow import FlowService\nfrom bisheng.api.utils import build_flow, build_input_keys_response\nfrom bisheng.api.v1.schema.workflow import WorkflowEventType\nfrom bisheng.api.v1.schemas import (UnifiedResponseModel, resp_200)\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.core.cache import InMemoryCache\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.database.models.assistant import AssistantDao\nfrom bisheng.database.models.evaluation import (Evaluation, EvaluationDao, ExecType, EvaluationTaskStatus)\nfrom bisheng.database.models.flow import FlowDao\nfrom bisheng.database.models.flow_version import FlowVersionDao, FlowVersion\nfrom bisheng.graph.graph.base import Graph\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils import generate_uuid\nfrom bisheng.worker.workflow.redis_callback import RedisCallback\nfrom bisheng.worker.workflow.tasks import execute_workflow, continue_workflow, workflow_stateful_worker\nfrom bisheng.workflow.common.workflow import WorkflowStatus\n\nexpire = 600\n\n\nclass EvaluationService:\n    UserCache: InMemoryCache = InMemoryCache()\n\n    @classmethod\n    def get_evaluation(cls,\n                       user: UserPayload,\n                       page: int = 1,\n                       limit: int = 20) -> UnifiedResponseModel[List[Evaluation]]:\n        \"\"\"\n        Get a list of assessment tasks\n        \"\"\"\n        data = []\n        res_evaluations, total = EvaluationDao.get_my_evaluations(user.user_id, page, limit)\n\n        # SkillIDVertical\n        flow_ids = []\n        # assistantIDVertical\n        assistant_ids = []\n        # VersionIDVertical\n        flow_version_ids = []\n\n        for one in res_evaluations:\n            if one.exec_type in [ExecType.FLOW.value, ExecType.WORKFLOW.value]:\n                flow_ids.append(one.unique_id)\n                if one.version:\n                    flow_version_ids.append(one.version)\n            if one.exec_type == ExecType.ASSISTANT.value:\n                assistant_ids.append(one.unique_id)\n\n        flow_names = {}\n        flow_versions = {}\n        assistant_names = {}\n\n        if flow_ids:\n            flows = FlowDao.get_flow_by_ids(flow_ids=flow_ids)\n            flow_names = {str(one.id): one.name for one in flows}\n\n        if flow_version_ids:\n            versions = FlowVersionDao.get_list_by_ids(ids=flow_version_ids)\n            flow_versions = {one.id: one.name for one in versions}\n\n        if assistant_ids:\n            assistants = AssistantDao.get_assistants_by_ids(assistant_ids=assistant_ids)\n            assistant_names = {str(one.id): one.name for one in assistants}\n\n        redis_client = get_redis_client_sync()\n\n        for one in res_evaluations:\n            evaluation_item = jsonable_encoder(one)\n            if one.exec_type in [ExecType.FLOW.value, ExecType.WORKFLOW.value]:\n                evaluation_item['unique_name'] = flow_names.get(one.unique_id)\n            if one.exec_type == ExecType.ASSISTANT.value:\n                evaluation_item['unique_name'] = assistant_names.get(one.unique_id)\n            if one.version:\n                evaluation_item['version_name'] = flow_versions.get(one.version)\n            if one.result_score:\n                evaluation_item['result_score'] = json.loads(one.result_score) if isinstance(one.result_score,\n                                                                                             str) else one.result_score\n\n            # Processing Task Progress\n            if one.status != EvaluationTaskStatus.running.value:\n                evaluation_item['progress'] = f'100%'\n            elif redis_client.exists(EvaluationService.get_redis_key(one.id)):\n                evaluation_item['progress'] = f'{redis_client.get(EvaluationService.get_redis_key(one.id))}%'\n            else:\n                evaluation_item['progress'] = f'0%'\n\n            # Make sure the error description is returned to the front-end\n            evaluation_item['description'] = one.description or ''\n            evaluation_item['user_name'] = cls.get_user_name(one.user_id)\n            data.append(evaluation_item)\n\n        return resp_200(data={'data': data, 'total': total})\n\n    @classmethod\n    def delete_evaluation(cls, evaluation_id: int, user_payload: UserPayload) -> UnifiedResponseModel:\n        evaluation = EvaluationDao.get_user_one_evaluation(user_payload.user_id, evaluation_id)\n        if not evaluation:\n            raise HTTPException(status_code=404, detail='Evaluation not found')\n\n        EvaluationDao.delete_evaluation(evaluation)\n        return resp_200()\n\n    @classmethod\n    def get_user_name(cls, user_id: int):\n        if not user_id:\n            return 'system'\n        user = cls.UserCache.get(user_id)\n        if user:\n            return user.user_name\n        user = UserDao.get_user(user_id)\n        if not user:\n            return f'{user_id}'\n        cls.UserCache.set(user_id, user)\n        return user.user_name\n\n    @classmethod\n    def upload_file(cls, file: UploadFile):\n        minio_client = get_minio_storage_sync()\n        file_id = generate_uuid()\n        file_name = file.filename\n\n        file_ext = os.path.basename(file.filename).split('.')[-1]\n        file_path = f'evaluation/dataset/{file_id}.{file_ext}'\n        minio_client.put_object_sync(bucket_name=minio_client.bucket, object_name=file_path, file=file.file,\n                                     content_type=file.content_type)\n        return file_name, file_path\n\n    @classmethod\n    def upload_result_file(cls, df: pd.DataFrame):\n        minio_client = get_minio_storage_sync()\n        file_id = generate_uuid()\n\n        csv_buffer = io.BytesIO()\n        df.to_csv(csv_buffer, index=False)\n        csv_buffer.seek(0)\n\n        file_path = f'evaluation/result/{file_id}.csv'\n        minio_client.put_object_sync(\n            bucket_name=minio_client.bucket,\n            object_name=file_path,\n            file=csv_buffer.read(),\n            content_type='application/csv')\n        return file_path\n\n    @classmethod\n    def read_csv_file(cls, file_path: str):\n        minio_client = get_minio_storage_sync()\n        resp = minio_client.get_object_sync(bucket_name=minio_client.bucket, object_name=file_path)\n        if resp is None:\n            return None\n        return BytesIO(resp)\n\n    @classmethod\n    def parse_csv(cls, file_data: io.BytesIO):\n        df = pd.read_csv(file_data)\n        df = df.dropna(axis=0, how='all').dropna(axis=1, how='all')\n        if df.shape[1] < 2:\n            raise ValueError(\"CSV file must have at least two columns\")\n        if df.columns[0] != 'question' or df.columns[1] != 'ground_truth':\n            raise ValueError(\n                \"CSV file must have 'question' as the first column and 'ground_truth' as the second column\")\n        formatted_data = [{\"question\": row[0], \"ground_truth\": row[1]} for row in df.values]\n        return formatted_data\n\n    @classmethod\n    def get_redis_key(cls, evaluation_id: int):\n        return f'evaluation_task_progress_{evaluation_id}'\n\n    @classmethod\n    async def get_input_keys(cls, flow_id: str, version_id: int):\n        artifacts = {}\n        try:\n            version_info = FlowVersionDao.get_version_by_id(version_id)\n            if not version_info:\n                return {\"input\": \"\"}\n\n            # L1 Users, usingbuildProcess\n            try:\n                async for message in build_flow(graph_data=version_info.data,\n                                                artifacts=artifacts,\n                                                process_file=False,\n                                                flow_id=flow_id,\n                                                chat_id=None):\n                    if isinstance(message, Graph):\n                        graph = message\n\n            except Exception as e:\n                logger.error(f'evaluation task get_input_keys {e}')\n                return {\"input\": \"\"}\n\n            await graph.abuild()\n            # Now we  need to check the input_keys to send them to the client\n            input_keys_response = {\n                'input_keys': []\n            }\n            input_nodes = graph.get_input_nodes()\n            for node in input_nodes:\n                if hasattr(await node.get_result(), 'input_keys'):\n                    input_keys = build_input_keys_response(await node.get_result(), artifacts)\n                    input_keys['input_keys'].update({'id': node.id})\n                    input_keys_response['input_keys'].append(input_keys.get('input_keys'))\n                elif 'fileNode' in node.output:\n                    input_keys_response['input_keys'].append({\n                        'file_path': '',\n                        'type': 'file',\n                        'id': node.id\n                    })\n            if len(input_keys_response.get(\"input_keys\")):\n                input_item = input_keys_response.get(\"input_keys\")[0]\n                del input_item[\"id\"]\n                return input_item\n        finally:\n            pass\n        return {\"input\": \"\"}\n\n\ndef execute_workflow_get_answer(workflow_info: FlowVersion, evaluation: Evaluation, question: str) -> str:\n    # Initialize workflow\n    unique_id = generate_uuid()\n    workflow_id = evaluation.unique_id\n    chat_id = \"\"\n    user_id = evaluation.user_id\n    workflow = RedisCallback(unique_id, workflow_id, chat_id, user_id)\n    workflow.set_workflow_data(workflow_info.data)\n    workflow.set_workflow_status(WorkflowStatus.WAITING.value)\n    hash_key = generate_uuid()\n    worker_node = workflow_stateful_worker.find_task_node_sync(hash_key)\n\n    execute_workflow.apply_async([unique_id, workflow_id, chat_id, user_id], queue=worker_node)\n\n    # Listen for execution results of workflows\n    input_event = None\n    for event in workflow.sync_get_response_until_break():\n        input_event = event\n\n    status_info = workflow.get_workflow_status()\n    if status_info[\"status\"] == WorkflowStatus.FAILED.value:\n        raise Exception(status_info.get(\"reason\", \"workflow run failed\"))\n    elif status_info['status'] == WorkflowStatus.SUCCESS.value:\n        raise Exception(\"Only Q&A type workflows are currently supported\")\n    elif status_info['status'] == WorkflowStatus.INPUT.value:\n        if not input_event or input_event.message.get('input_schema', {}).get(\"tab\") == \"form_input\":\n            raise Exception(\"Only Q&A type workflows are currently supported\")\n        # Only workflows entered in dialog boxes are entered by default\n        workflow.set_user_input({input_event.message.get('node_id'): {\"user_input\": question}})\n        workflow.set_workflow_status(WorkflowStatus.INPUT_OVER.value)\n        worker_node = workflow_stateful_worker.find_task_node_sync(hash_key)\n        continue_workflow.apply_async([unique_id, workflow_id, chat_id, user_id], queue=worker_node)\n        events = []\n        for event in workflow.sync_get_response_until_break():\n            events.append(event)\n        status_info = workflow.get_workflow_status()\n        if status_info['status'] == WorkflowStatus.FAILED.value:\n            raise Exception(status_info.get(\"reason\", \"workflow run failed\"))\n        elif status_info['status'] in [WorkflowStatus.SUCCESS.value, WorkflowStatus.INPUT.value]:\n            workflow.set_workflow_stop()\n            # Get the content of the first output event as an answer, if not, report an error\n            if not events:\n                raise Exception(\"Only Q&A type workflows are currently supported\")\n            answer = None\n            for event in events:\n                if event.category in [WorkflowEventType.OutputMsg.value, WorkflowEventType.OutputWithInput.value,\n                                      WorkflowEventType.OutputWithChoose.value]:\n                    answer = event.message.get('msg', \"\")\n                    break\n                elif event.category == WorkflowEventType.StreamMsg.value and event.type != 'stream':\n                    answer = event.message.get('msg', \"\")\n                    break\n            if answer is None:\n                raise Exception(\"Only Q&A type workflows are currently supported\")\n            return answer\n        else:\n            workflow.set_workflow_stop()\n            raise Exception(f\"workflow status is unknown: {status_info}\")\n    else:\n        raise Exception(f\"workflow status is unknown: {status_info}\")\n\n\nasync def add_evaluation_task(evaluation_id: int):\n    evaluation = EvaluationDao.get_one_evaluation(evaluation_id=evaluation_id)\n    if not evaluation:\n        return\n\n    redis_key = EvaluationService.get_redis_key(evaluation_id)\n    redis_client = get_redis_client_sync()\n    try:\n        file_data = EvaluationService.read_csv_file(evaluation.file_path)\n        csv_data = EvaluationService.parse_csv(file_data)\n        progress_increment = 80 / len(csv_data)\n        current_progress = 0\n\n        if evaluation.exec_type == ExecType.FLOW.value:\n            flow_version = FlowVersionDao.get_version_by_id(version_id=evaluation.version)\n            if not flow_version:\n                raise Exception(\"Flow version not found\")\n            input_keys = await EvaluationService.get_input_keys(flow_id=evaluation.unique_id,\n                                                                version_id=evaluation.version)\n            first_key = list(input_keys.keys())[0]\n\n            logger.info(f'evaluation task run flow input_keys: {input_keys} first_key: {first_key}')\n\n            for index, one in enumerate(csv_data):\n                input_dict = deepcopy(input_keys)\n                input_dict[first_key] = one.get('question')\n                flow_index, flow_result = await FlowService.exec_flow_node(\n                    inputs=input_dict,\n                    tweaks={},\n                    index=0,\n                    versions=[flow_version])\n                one[\"answer\"] = flow_result.get(flow_version.id)\n                current_progress += progress_increment\n                redis_client.set(redis_key, round(current_progress))\n\n        elif evaluation.exec_type == ExecType.ASSISTANT.value:\n            assistant = await AssistantDao.aget_one_assistant(evaluation.unique_id)\n            if not assistant:\n                raise Exception(\"Assistant not found\")\n            gpts_agent = AssistantAgent(assistant_info=assistant, chat_id=\"\", invoke_user_id=evaluation.user_id)\n            await gpts_agent.init_assistant()\n            for index, one in enumerate(csv_data):\n                messages = await gpts_agent.run(one.get('question'))\n                if len(messages):\n                    one[\"answer\"] = messages[-1].content\n                current_progress += progress_increment\n                redis_client.set(redis_key, round(current_progress))\n        elif evaluation.exec_type == ExecType.WORKFLOW.value:\n            workflow_info = FlowVersionDao.get_version_by_id(version_id=evaluation.version)\n            if not workflow_info or workflow_info.flow_id != evaluation.unique_id:\n                raise Exception(\"workflow version info not found\")\n            for index, one in enumerate(csv_data):\n                one[\"answer\"] = await asyncio.to_thread(execute_workflow_get_answer, workflow_info, evaluation,\n                                                        one.get('question', \"\"))\n\n        _llm = await LLMService.get_evaluation_llm_object(evaluation.user_id)\n        llm = LangchainLLM(_llm)\n        data_samples = {\n            \"question\": [one.get('question') for one in csv_data],\n            \"answer\": [one.get('answer') for one in csv_data],\n            \"ground_truths\": [[one.get('ground_truth')] for one in csv_data]\n        }\n\n        dataset = Dataset.from_dict(data_samples)\n        answer_correctness_bisheng = AnswerCorrectnessBisheng(llm=llm, human_prompt=evaluation.prompt)\n        score = await asyncio.to_thread(evaluate, dataset, [answer_correctness_bisheng])\n        df = score.to_pandas()\n        result = df.to_dict(orient=\"list\")\n        logger.debug(f'evaluation id = {evaluation_id} result: {result}')\n\n        question = result.get('question', [])\n        columns = [\n            # Data field:Title:Type(1:Text 2:Numbers 3:%)\n            (\"question\", \"question\", 1),\n            (\"ground_truths\", \"ground_truth\", 1),\n            (\"answer\", \"answer\", 1),\n            (\"statements_num_gt_only\", \"statements_num_gt_only\", 2),\n            (\"statements_num_answer_only\", \"statements_num_answer_only\", 2),\n            (\"statements_num_overlap\", \"statements_num_overlap\", 2),\n            (\"answer_recall\", \"recall\", 3),\n            (\"answer_precision\", \"precision\", 3),\n            (\"answer_f1\", \"F1\", 3)\n        ]\n        row_list = []\n        tmp_dict = defaultdict(int)\n        total_dict = {}\n\n        for index, one in enumerate(question):\n            row_data = {}\n            for field, title, unit_type in columns:\n                value = result.get(field)[index]\n                if unit_type != 1:\n                    tmp_dict[field] += value\n                if unit_type == 3:\n                    value = f'{value * 100:.2f}%' if value not in [\"nan\", np.nan] else value\n                row_data[title] = value\n            row_list.append(row_data)\n\n        total_row_data = {}\n        for field, title, unit_type in columns:\n            value = tmp_dict.get(field)\n            if unit_type == 3:\n                value = f'{(value / len(row_list)) * 100:.2f}%'\n                total_dict[field] = value\n            total_row_data[title] = value\n        row_list.append(total_row_data)\n\n        df = pd.DataFrame(data=row_list, columns=[one[1] for one in columns])\n        result_file_path = EvaluationService.upload_result_file(df)\n\n        evaluation.result_score = total_dict\n        evaluation.status = EvaluationTaskStatus.success.value\n        evaluation.result_file_path = result_file_path\n        EvaluationDao.update_evaluation(evaluation=evaluation)\n        redis_client.delete(redis_key)\n        logger.info(f'evaluation task success id={evaluation_id}')\n\n    except Exception as e:\n        logger.exception(f'evaluation task failed id={evaluation_id} {str(e)}')\n        evaluation.status = EvaluationTaskStatus.failed.value\n        evaluation.description = str(e)[-500:]  # Limit the length of the error description to avoid being too long\n        EvaluationDao.update_evaluation(evaluation=evaluation)\n        redis_client.delete(redis_key)\n"
  },
  {
    "path": "src/backend/bisheng/api/services/flow.py",
    "content": "import asyncio\nimport copy\nfrom typing import List, Dict, AsyncGenerator, Optional, Union\n\nfrom fastapi import Request\nfrom fastapi.encoders import jsonable_encoder\nfrom loguru import logger\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.utils import get_L2_param_from_flow\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200, FlowVersionCreate, FlowCompareReq, resp_500, \\\n    StreamData\nfrom bisheng.chat.utils import process_node_data\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.flow import NotFoundVersionError, CurVersionDelError, VersionNameExistsError, \\\n    NotFoundFlowError, \\\n    FlowOnlineEditError, WorkFlowOnlineEditError\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao, FlowStatus, Flow, FlowType\nfrom bisheng.database.models.flow_version import FlowVersionDao, FlowVersionRead, FlowVersion\nfrom bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum, GroupResource\nfrom bisheng.database.models.role_access import RoleAccessDao, AccessType\nfrom bisheng.database.models.session import MessageSessionDao\nfrom bisheng.database.models.tag import TagDao\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.database.models.variable_value import VariableDao\nfrom bisheng.processing.process import process_graph_cached, process_tweaks\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import get_request_ip\n\n\nclass FlowService(BaseService):\n\n    @classmethod\n    def get_version_list_by_flow(cls, user: UserPayload, flow_id: str) -> UnifiedResponseModel[List[FlowVersionRead]]:\n        \"\"\"\n        By SkillID Get all versions of a skill\n        \"\"\"\n        data = FlowVersionDao.get_list_by_flow(flow_id)\n        # Include Deleted Versions\n        all_version_num = FlowVersionDao.count_list_by_flow(flow_id, include_delete=True)\n        return resp_200(data={\n            'data': data,\n            'total': all_version_num\n        })\n\n    @classmethod\n    def get_version_info(cls, user: UserPayload, version_id: int) -> UnifiedResponseModel[FlowVersion]:\n        \"\"\"\n        According to versionIDGet version details\n        \"\"\"\n        data = FlowVersionDao.get_version_by_id(version_id)\n        return resp_200(data=data)\n\n    @classmethod\n    def delete_version(cls, user: UserPayload, version_id: int) -> UnifiedResponseModel[None]:\n        \"\"\"\n        According to versionIDRemove Version\n        \"\"\"\n        telemetry_service.log_event_sync(\n            user_id=user.user_id,\n            event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n            trace_id=trace_id_var.get()\n        )\n        version_info = FlowVersionDao.get_version_by_id(version_id)\n        if not version_info:\n            return NotFoundVersionError.return_resp()\n\n        flow_info = FlowDao.get_flow_by_id(version_info.flow_id)\n        if not flow_info:\n            return NotFoundFlowError.return_resp()\n\n        atype = AccessType.FLOW_WRITE\n        if flow_info.flow_type == FlowType.WORKFLOW.value:\n            atype = AccessType.WORKFLOW_WRITE\n\n        # Determine permissions\n        if not user.access_check(flow_info.user_id, flow_info.id, atype):\n            return UnAuthorizedError.return_resp()\n\n        if version_info.is_current == 1:\n            return CurVersionDelError.return_resp()\n\n        FlowVersionDao.delete_flow_version(version_id)\n        return resp_200()\n\n    @classmethod\n    async def judge_flow_write_permission(cls, user: UserPayload, flow_id: str) -> Flow:\n        flow_info = await FlowDao.aget_flow_by_id(flow_id)\n        if not flow_info:\n            raise NotFoundFlowError.http_exception()\n\n        atype = AccessType.FLOW_WRITE\n        if flow_info.flow_type == FlowType.WORKFLOW.value:\n            atype = AccessType.WORKFLOW_WRITE\n\n        # Determine permissions\n        if not await user.async_access_check(flow_info.user_id, flow_info.id, atype):\n            raise UnAuthorizedError.http_exception()\n        return flow_info\n\n    @classmethod\n    async def change_current_version(cls, request: Request, login_user: UserPayload, flow_id: str, version_id: int) \\\n            -> UnifiedResponseModel[None]:\n        \"\"\"\n        Modify Current Version\n        \"\"\"\n        await telemetry_service.log_event(\n            user_id=login_user.user_id,\n            event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n            trace_id=trace_id_var.get()\n        )\n        flow_info = await cls.judge_flow_write_permission(login_user, flow_id)\n\n        # Skill go-live status not allowed Switch versions\n        if flow_info.status == FlowStatus.ONLINE:\n            return FlowOnlineEditError.return_resp()\n\n        # Switch versions\n        version_info = await FlowVersionDao.aget_version_by_id(version_id)\n        if not version_info:\n            return NotFoundVersionError.return_resp()\n        if version_info.is_current == 1:\n            return resp_200()\n\n        # Modify the version selected by the user for the current version\n        await FlowVersionDao.change_current_version(flow_id, version_info)\n\n        await cls.update_flow_hook(request, login_user, flow_info)\n        return resp_200()\n\n    @classmethod\n    async def create_new_version(cls, user: UserPayload, flow_id: str, flow_version: FlowVersionCreate) \\\n            -> UnifiedResponseModel[FlowVersion]:\n        \"\"\"\n        Create New Version\n        \"\"\"\n        await telemetry_service.log_event(\n            user_id=user.user_id,\n            event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n            trace_id=trace_id_var.get()\n        )\n        flow_info = await cls.judge_flow_write_permission(user, flow_id)\n\n        exist_version = FlowVersionDao.get_version_by_name(flow_id, flow_version.name)\n        if exist_version:\n            return VersionNameExistsError.return_resp()\n\n        flow_version = FlowVersion(flow_id=flow_id, name=flow_version.name, description=flow_version.description,\n                                   user_id=user.user_id, data=flow_version.data,\n                                   original_version_id=flow_version.original_version_id,\n                                   flow_type=flow_version.flow_type)\n\n        # Create New Version\n        flow_version = FlowVersionDao.create_version(flow_version)\n\n        if flow_info.flow_type == FlowType.FLOW.value:\n            # Copy the original version of the form data into the new version\n            VariableDao.copy_variables(flow_version.flow_id, flow_version.original_version_id, flow_version.id)\n            try:\n                # Refresh this version of the form data\n                if not get_L2_param_from_flow(flow_version.data, flow_version.flow_id, flow_version.id):\n                    logger.error(f'flow_id={flow_version.id} version_id={flow_version.id} extract file_node fail')\n            except:\n                pass\n        return resp_200(data=flow_version)\n\n    @classmethod\n    async def update_version_info(cls, request: Request, user: UserPayload, version_id: int,\n                                  flow_version: FlowVersionCreate) \\\n            -> UnifiedResponseModel[FlowVersion]:\n        \"\"\"\n        It updates version information.\n        \"\"\"\n        await telemetry_service.log_event(\n            user_id=user.user_id,\n            event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n            trace_id=trace_id_var.get()\n        )\n        # Contains the deleted version. If the version is deleted, revert to this version\n        version_info = await FlowVersionDao.aget_version_by_id(version_id, include_delete=True)\n        if not version_info:\n            return NotFoundVersionError.return_resp()\n        flow_info = await cls.judge_flow_write_permission(user, version_info.flow_id)\n\n        # Version is the current version, Cannot be edited if the skill is onlinedataData, names and descriptions can be edited\n        if version_info.is_current == 1 and flow_info.status == FlowStatus.ONLINE.value and flow_version.data:\n            if flow_info.flow_type == FlowType.WORKFLOW.value:\n                return WorkFlowOnlineEditError.return_resp()\n            else:\n                return FlowOnlineEditError.return_resp()\n\n        version_info.name = flow_version.name if flow_version.name else version_info.name\n        version_info.description = flow_version.description if flow_version.description else version_info.description\n        version_info.data = flow_version.data if flow_version.data else version_info.data\n        # Restore this skill version\n        version_info.is_delete = 0\n\n        flow_version = await FlowVersionDao.aupdate_version(version_info)\n\n        if flow_info.flow_type == FlowType.FLOW.value:\n            try:\n                # Refresh this version of the form data\n                if not get_L2_param_from_flow(flow_version.data, flow_version.flow_id, flow_version.id):\n                    logger.error(f'flow_id={flow_version.id} version_id={flow_version.id} extract file_node fail')\n            except:\n                pass\n        await cls.update_flow_hook(request, user, flow_info)\n        return resp_200(data=flow_version)\n\n    @classmethod\n    async def get_one_flow(cls, login_user: UserPayload, flow_id: str, share_link: Union['ShareLink', None] = None) -> \\\n            UnifiedResponseModel[Flow]:\n        \"\"\"\n        Get details on individual skills\n        \"\"\"\n        flow_info = await FlowDao.aget_flow_by_id(flow_id)\n        if not flow_info:\n            raise NotFoundFlowError()\n        atype = AccessType.FLOW\n        if flow_info.flow_type == FlowType.WORKFLOW.value:\n            atype = AccessType.WORKFLOW\n        if not await login_user.async_access_check(flow_info.user_id, flow_info.id, atype):\n            if (share_link is None\n                    or share_link.meta_data is None\n                    or share_link.meta_data.get(\"flowId\") != flow_info.id):\n                raise UnAuthorizedError()\n\n        flow_info.logo = await cls.get_logo_share_link_async(flow_info.logo)\n\n        return resp_200(data=flow_info)\n\n    @classmethod\n    def get_all_flows(cls, user: UserPayload, name: str, status: int, tag_id: int = 0, page: int = 1,\n                      page_size: int = 10, flow_type: Optional[int] = FlowType.FLOW.value) -> UnifiedResponseModel[\n        List[Dict]]:\n        \"\"\"\n        Get all the skills\n        \"\"\"\n        flow_ids = []\n        if tag_id:\n            ret = TagDao.get_resources_by_tags_batch([tag_id], [ResourceTypeEnum.FLOW, ResourceTypeEnum.WORK_FLOW])\n            flow_ids = [one.resource_id for one in ret]\n            assistant_ids = [one.resource_id for one in ret]\n            if not assistant_ids:\n                return resp_200(data={\n                    'data': [],\n                    'total': 0\n                })\n        # Get a list of skills visible to the user\n        if user.is_admin():\n            data = FlowDao.get_flows(user.user_id, \"admin\", name, status, flow_ids, page, page_size, flow_type)\n            total = FlowDao.count_flows(user.user_id, \"admin\", name, status, flow_ids, flow_type)\n        else:\n            user_role = UserRoleDao.get_user_roles(user.user_id)\n            role_ids = [role.role_id for role in user_role]\n            role_access = RoleAccessDao.get_role_access_batch(role_ids, [AccessType.FLOW, AccessType.WORKFLOW])\n            flow_id_extra = []\n            if role_access:\n                flow_id_extra = [access.third_id for access in role_access]\n            data = FlowDao.get_flows(user.user_id, flow_id_extra, name, status, flow_ids, page, page_size, flow_type)\n            total = FlowDao.count_flows(user.user_id, flow_id_extra, name, status, flow_ids, flow_type)\n\n        # Get the user information and version information corresponding to the skill list\n        # SkillIDVertical\n        flow_ids = []\n        # Skill Creation User'sIDVertical\n        user_ids = []\n        for one in data:\n            flow_ids.append(one.id)\n            user_ids.append(one.user_id)\n        # Get user information in the list\n        user_infos = UserDao.get_user_by_ids(user_ids)\n        user_dict = {one.user_id: one.user_name for one in user_infos}\n\n        # Get version information in the list\n        version_infos = FlowVersionDao.get_list_by_flow_ids(flow_ids)\n        flow_versions = {}\n        for one in version_infos:\n            if one.flow_id not in flow_versions:\n                flow_versions[one.flow_id] = []\n            flow_versions[one.flow_id].append(jsonable_encoder(one))\n\n        # Get the group to which the skill belongs\n        flow_groups = GroupResourceDao.get_resources_group(ResourceTypeEnum.FLOW, flow_ids)\n        flow_group_dict = {}\n        for one in flow_groups:\n            if one.third_id not in flow_group_dict:\n                flow_group_dict[one.third_id] = []\n            flow_group_dict[one.third_id].append(one.group_id)\n\n        # Get Skill Associatedtag\n        flow_tags = TagDao.get_tags_by_resource(ResourceTypeEnum.FLOW, flow_ids)\n\n        # Re-stitch Skills ListlistMessage\n        res = []\n        for one in data:\n            one.logo = cls.get_logo_share_link(one.logo)\n            flow_info = jsonable_encoder(one)\n            flow_info['user_name'] = user_dict.get(one.user_id, one.user_id)\n            flow_info['write'] = True if user.is_admin() or user.user_id == one.user_id else False\n            flow_info['version_list'] = flow_versions.get(one.id, [])\n            flow_info['group_ids'] = flow_group_dict.get(one.id, [])\n            flow_info['tags'] = flow_tags.get(one.id, [])\n\n            res.append(flow_info)\n\n        return resp_200(data={\n            \"data\": res,\n            \"total\": total\n        })\n\n    @classmethod\n    async def get_compare_tasks(cls, user: UserPayload, req: FlowCompareReq) -> List:\n        \"\"\"\n        Get Comparison Tasks\n        \"\"\"\n        if req.question_list is None or len(req.question_list) == 0:\n            return []\n        if req.version_list is None or len(req.version_list) == 0:\n            return []\n        if req.node_id is None:\n            return []\n\n        # Get version data\n        version_infos = FlowVersionDao.get_list_by_ids(req.version_list)\n        # Start a new event loop\n        tasks = []\n        for index, question in enumerate(req.question_list):\n            question_index = index\n            tmp_inputs = copy.deepcopy(req.inputs)\n            tmp_inputs, tmp_tweaks = cls.parse_compare_inputs(tmp_inputs, question)\n            for version in version_infos:\n                task = asyncio.create_task(cls.exec_flow_node(\n                    copy.deepcopy(tmp_inputs), tmp_tweaks, question_index, [version]))\n                tasks.append(task)\n        return tasks\n\n    @classmethod\n    def parse_compare_inputs(cls, inputs: Dict, question) -> (Dict, Dict):\n        # Under special treatmentinputs, Hold and PasswebsocketSessions are formatted consistently\n        if inputs.get('data', None):\n            for one in inputs['data']:\n                one['id'] = one['nodeId']\n                if 'InputFile' in one['id']:\n                    one['file_path'] = one['value']\n\n        # Paddingquestion and Generate Replacementtweaks\n        for key, val in inputs.items():\n            if key != 'data' and key != 'id':\n                # Default inputkey, replace the firstkey\n                logger.info(f\"replace_inputs {key} replace to {question}\")\n                inputs[key] = question\n                break\n        if 'id' in inputs:\n            inputs.pop('id')\n        # Replacement Node Parameters, GantiinputFileNodeAndVariableNodeParameters\n        tweaks = {}\n        if 'data' in inputs:\n            node_data = inputs.pop('data')\n            if node_data:\n                tweaks = process_node_data(node_data)\n        return inputs, tweaks\n\n    @classmethod\n    async def compare_flow_node(cls, user: UserPayload, req: FlowCompareReq) -> UnifiedResponseModel[Dict]:\n        \"\"\"\n        Compare nodes in two versions Output Results\n        \"\"\"\n        tasks = await cls.get_compare_tasks(user, req)\n        if len(tasks) == 0:\n            return resp_200(data=[])\n        res = [{} for _ in range(len(req.question_list))]\n        try:\n            for one in asyncio.as_completed(tasks):\n                index, answer = await one\n                if res[index]:\n                    res[index].update(answer)\n                else:\n                    res[index] = answer\n        except Exception as e:\n            return resp_500(message=\"Skill comparison error:{}\".format(str(e)))\n        return resp_200(data=res)\n\n    @classmethod\n    async def compare_flow_stream(cls, user: UserPayload, req: FlowCompareReq) -> AsyncGenerator:\n        \"\"\"\n        Compare nodes in two versions Output Results\n        \"\"\"\n        tasks = await cls.get_compare_tasks(user, req)\n        if len(tasks) == 0:\n            return\n        for one in asyncio.as_completed(tasks):\n            index, answer_dict = await one\n            for version_id, answer in answer_dict.items():\n                yield str(StreamData(event='message',\n                                     data={'question_index': index,\n                                           'version_id': version_id,\n                                           'answer': answer}))\n\n    @classmethod\n    async def exec_flow_node(cls, inputs: Dict, tweaks: Dict, index: int, versions: List[FlowVersion]):\n        # Gantianswer\n        answer_result = {}\n        # Execute two versions of the node\n        for one in versions:\n            graph_data = process_tweaks(one.data, tweaks)\n            try:\n                result = await process_graph_cached(graph_data,\n                                                    inputs,\n                                                    session_id=None,\n                                                    history_count=10,\n                                                    flow_id=one.flow_id)\n            except Exception as e:\n                logger.exception(f\"exec flow node error version_id: {one.name}\")\n                answer_result[one.id] = f\"{one.name}Version skill execution error: {str(e)}\"\n                continue\n            if isinstance(result, dict) and 'result' in result:\n                task_result = result['result']\n            elif hasattr(result, 'result') and hasattr(result, 'session_id'):\n                task_result = result.result\n            else:\n                logger.error(f\"exec flow node error version_id: {one.id}, answer: {result}\")\n                task_result = {\"answer\": \"flow exec error\"}\n\n            answer_result[one.id] = list(task_result.values())[0]\n\n        return index, answer_result\n\n    @classmethod\n    def create_flow_hook(cls, request: Request, login_user: UserPayload, flow_info: Flow, version_id,\n                         flow_type: Optional[int] = None) -> bool:\n        logger.info(f'create_flow_hook flow: {flow_info.id}, user_payload: {login_user.user_id}')\n        # Write the form required for the skill into the database\n        try:\n            if flow_info.data and not get_L2_param_from_flow(flow_info.data, flow_info.id, version_id):\n                logger.error(f'flow_id={flow_info.id} extract file_node fail')\n        except Exception:\n            pass\n        # Associate the skill to the corresponding user group\n        user_group = UserGroupDao.get_user_group(login_user.user_id)\n        if user_group:\n            batch_resource = []\n            resource_type = ResourceTypeEnum.FLOW.value\n            if flow_type and flow_type == FlowType.WORKFLOW.value:\n                resource_type = ResourceTypeEnum.WORK_FLOW.value\n\n            for one in user_group:\n                batch_resource.append(\n                    GroupResource(group_id=one.group_id,\n                                  third_id=flow_info.id,\n                                  type=resource_type))\n            GroupResourceDao.insert_group_batch(batch_resource)\n        # Write Audit Log\n        AuditLogService.create_build_flow(login_user, get_request_ip(request), flow_info.id, flow_type)\n\n        # WritelogoCeacle\n        cls.get_logo_share_link(flow_info.logo)\n        return True\n\n    @classmethod\n    async def update_flow_hook(cls, request: Request, login_user: UserPayload, flow_info: Flow) -> bool:\n        # Write Audit Log\n        await AuditLogService.update_build_flow(login_user, get_request_ip(request), flow_info.id,\n                                                flow_type=flow_info.flow_type)\n\n        # WritelogoCeacle\n        await cls.get_logo_share_link_async(flow_info.logo)\n        return True\n\n    @classmethod\n    def delete_flow_hook(cls, request: Request, login_user: UserPayload, flow_info: Flow) -> bool:\n        logger.info(f'delete_flow_hook flow: {flow_info.id}, user_payload: {login_user.user_id}')\n\n        # Write Audit Log\n        AuditLogService.delete_build_flow(login_user, get_request_ip(request), flow_info, flow_type=flow_info.flow_type)\n\n        # Delete Skills Associated Under User Group\n        GroupResourceDao.delete_group_resource_by_third_id(flow_info.id, ResourceTypeEnum.FLOW)\n\n        # Update session information\n        MessageSessionDao.update_session_info_by_flow(flow_info.name, flow_info.description, flow_info.logo,\n                                                      flow_info.id, flow_info.flow_type)\n        return True\n"
  },
  {
    "path": "src/backend/bisheng/api/services/invite_code/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/api/services/invite_code/code_validator.py",
    "content": "import random\nimport string\n\n\nclass VoucherGenerator:\n    def __init__(self, length=10):\n        self.length = length\n        # Exclude similar letters and numbers: 'I', 'l', 'O', '0', '1'\n        self.characters = ''.join(set(string.ascii_letters + string.digits) - set('IlOo01'))\n        self.weights = [7, 9, 10, 5, 8, 4, 2, 1, 3]  # Weighting Factor\n        self.check_digits = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']  # Checksum Correspondence Form\n\n    def generate_voucher(self):\n        voucher_base = ''.join(random.choices(self.characters, k=self.length - 1))\n        check_digit = self.calculate_check_digit(voucher_base)\n        return voucher_base + check_digit\n\n    def calculate_check_digit(self, voucher_base):\n        total = sum(self.weights[i] * (ord(char) - ord('A') if char.isalpha() else int(char)) for i, char in\n                    enumerate(voucher_base))\n        remainder = total % 11\n        return self.check_digits[remainder]\n\n    def validate_voucher(self, voucher):\n        if len(voucher) != 10:\n            return False, \"Invalid voucher length\"\n\n        voucher_base = voucher[:-1]\n        provided_check_digit = voucher[-1]\n\n        calculated_check_digit = self.calculate_check_digit(voucher_base)\n\n        if provided_check_digit == calculated_check_digit:\n            return True, \"Valid voucher\"\n        else:\n            return False, \"Invalid voucher\"\n\n\n# Example Usage\nif __name__ == \"__main__\":\n    generator = VoucherGenerator()\n    voucher_code = generator.generate_voucher()  # Generate a unique redemption code\n    print(f\"Generated voucher code: {voucher_code}\")\n\n    # Verify Redeem Code\n    is_valid, info = generator.validate_voucher(voucher_code)\n    print(f\"Is valid: {is_valid}, Info: {info}\")\n\n    # Try to validate an invalid redemption code\n    invalid_voucher_code = 'ABCDEFGHJK967'\n    is_valid, info = generator.validate_voucher(invalid_voucher_code)\n    print(f\"Is valid: {is_valid}, Info: {info}\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/invite_code/invite_code.py",
    "content": "from loguru import logger\n\nfrom bisheng.api.services.invite_code.code_validator import VoucherGenerator\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.linsight import InviteCodeBindError, InviteCodeInvalidError\nfrom bisheng.database.models.invite_code import InviteCode, InviteCodeDao\nfrom bisheng.utils import generate_uuid\n\n\nclass InviteCodeService:\n\n    @classmethod\n    async def use_invite_code(cls, user_id: int) -> bool:\n        \"\"\"\n        using referral code\n        :param user_id: UsersID\n        :return: Invitation code results\n        \"\"\"\n        logger.debug(f\"use_invite_code {user_id}\")\n\n        codes = await InviteCodeDao.get_user_bind_code(user_id)\n        for one in codes:\n            flag = await InviteCodeDao.use_invite_code(user_id, one.code)\n            if flag:\n                logger.debug(f\"use_invite_code {user_id}, {one.code} success\")\n                return True\n\n        return False\n\n    @classmethod\n    async def revoke_invite_code(cls, user_id: int) -> bool:\n        \"\"\"\n        Revoke Invitation Code\n        :param user_id: UsersID\n        :return: Invitation code revocation result\n        \"\"\"\n        logger.debug(f\"revoke_invite_code {user_id}\")\n\n        codes = await InviteCodeDao.get_user_all_code(user_id)\n        for one in codes:\n            # Description is a brand new invite code and has not been used\n            if one.used <= 0:\n                continue\n            flag = await InviteCodeDao.revoke_invite_code_used(user_id, one.code)\n            if flag:\n                logger.debug(f\"revoke_invite_code {user_id}, {one.code} success\")\n                return True\n\n        return False\n\n    @classmethod\n    async def create_batch_invite_codes(cls, login_user: UserPayload, name: str, num: int, limit: int) -> list[str]:\n        \"\"\"\n        Bulk create invite codes\n        :param login_user: Action user information\n        :param name: Invitation code name\n        :param num: How many codes\n        :param limit: Number of uses per invite code\n        :return: Invitation code list created\n        \"\"\"\n        generator = VoucherGenerator()\n        code_list = []\n        batch_id = generate_uuid()\n        for i in range(num):\n            code_list.append(InviteCode(\n                code=generator.generate_voucher(),\n                batch_id=batch_id,\n                batch_name=name,\n                limit=limit,\n                created_id=login_user.user_id,\n            ))\n        # Check if the generated invite code is a duplicate\n        unique_codes = []\n        for code in code_list:\n            if code.code in unique_codes:\n                raise ValueError(f\"Duplicate invite code found: {code.code}\")\n            unique_codes.append(code.code)\n\n        # Call the database operation to save the invite code\n        await InviteCodeDao.insert_invite_code(code_list)\n        return unique_codes\n\n    @classmethod\n    async def get_invite_code_num(cls, login_user: UserPayload) -> int:\n        \"\"\"\n        Get the number of times a user can use an invite code\n        :param login_user: Action user information\n        :return: Invitation code usage\n        \"\"\"\n        nums = 0\n        codes = await InviteCodeDao.get_user_bind_code(login_user.user_id)\n        for one in codes:\n            nums += one.limit - one.used\n        return nums\n\n    @classmethod\n    async def bind_invite_code(cls, login_user: UserPayload, code: str) -> bool:\n        \"\"\"\n        Binding Invitation Code\n        :param login_user: Action user information\n        :param code: Invitation Code\n        :return: Binding Results\n        \"\"\"\n        generator = VoucherGenerator()\n        flag, _ = generator.validate_voucher(code)\n        if not flag:\n            raise InviteCodeInvalidError()\n        codes = await InviteCodeDao.get_user_bind_code(login_user.user_id)\n        if codes:\n            raise InviteCodeBindError()\n\n        flag = await InviteCodeDao.bind_invite_code(login_user.user_id, code)\n        if not flag:\n            raise InviteCodeInvalidError()\n        return flag\n"
  },
  {
    "path": "src/backend/bisheng/api/services/knowledge.py",
    "content": "import json\nimport math\nimport os\nfrom datetime import datetime\nfrom typing import Any, Dict, List\n\nfrom fastapi import BackgroundTasks, Request\nfrom loguru import logger\nfrom pymilvus import Collection\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.knowledge_imp import (\n    KnowledgeUtils,\n    decide_vectorstores,\n    delete_knowledge_file_vectors,\n    process_file_task,\n    async_read_chunk_text,\n)\nfrom bisheng.api.v1.schema.knowledge import KnowledgeFileResp\nfrom bisheng.api.v1.schemas import (\n    FileChunk,\n    FileProcessBase,\n    KnowledgeFileOne,\n    KnowledgeFileProcess,\n    UpdatePreviewFileChunk, ExcelRule, KnowledgeFileReProcess,\n)\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError, UnAuthorizedError, ServerError\nfrom bisheng.common.errcode.knowledge import (\n    KnowledgeChunkError,\n    KnowledgeExistError,\n    KnowledgeNoEmbeddingError, KnowledgeNotQAError, KnowledgeFileFailedError,\n)\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewKnowledgeBaseEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync, get_redis_client\nfrom bisheng.core.cache.utils import file_download, async_file_download\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync, get_minio_storage\nfrom bisheng.database.models.group_resource import (\n    GroupResource,\n    GroupResourceDao,\n    ResourceTypeEnum,\n)\nfrom bisheng.database.models.role_access import AccessType, RoleAccessDao\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import (\n    Knowledge,\n    KnowledgeCreate,\n    KnowledgeDao,\n    KnowledgeRead,\n    KnowledgeTypeEnum,\n    KnowledgeUpdate, KnowledgeState,\n)\nfrom bisheng.knowledge.domain.models.knowledge_file import (\n    KnowledgeFile,\n    KnowledgeFileDao,\n    KnowledgeFileStatus, ParseType,\n)\nfrom bisheng.llm.domain.const import LLMModelType\nfrom bisheng.llm.domain.models import LLMDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import generate_uuid, generate_knowledge_index_name\nfrom bisheng.utils import get_request_ip\n\n\nclass KnowledgeService(KnowledgeUtils):\n\n    @classmethod\n    async def get_knowledge(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_type: KnowledgeTypeEnum,\n            name: str = None,\n            sort_by: str = \"update_time\",\n            page: int = 1,\n            limit: int = 10,\n    ) -> (List[KnowledgeRead], int):\n        if not login_user.is_admin():\n            knowledge_id_extra = []\n            user_role = await UserRoleDao.aget_user_roles(login_user.user_id)\n            if user_role:\n                role_ids = [role.role_id for role in user_role]\n                role_access = await RoleAccessDao.aget_role_access(role_ids, AccessType.KNOWLEDGE)\n                if role_access:\n                    knowledge_id_extra = [\n                        int(access.third_id) for access in role_access\n                    ]\n            res = await KnowledgeDao.aget_user_knowledge(\n                login_user.user_id,\n                knowledge_id_extra,\n                knowledge_type,\n                name,\n                sort_by,\n                page,\n                limit,\n            )\n            total = await KnowledgeDao.acount_user_knowledge(\n                login_user.user_id, knowledge_id_extra, knowledge_type, name\n            )\n        else:\n            res = await KnowledgeDao.aget_all_knowledge(\n                name, knowledge_type, sort_by, page=page, limit=limit\n            )\n            total = await KnowledgeDao.acount_all_knowledge(name, knowledge_type)\n\n        result = cls.convert_knowledge_read(login_user, res)\n        return result, total\n\n    @classmethod\n    def convert_knowledge_read(\n            cls, login_user: UserPayload, knowledge_list: List[Knowledge]\n    ) -> List[KnowledgeRead]:\n        db_user_ids = {one.user_id for one in knowledge_list}\n        db_user_info = UserDao.get_user_by_ids(list(db_user_ids))\n        db_user_dict = {one.user_id: one.user_name for one in db_user_info}\n        res = []\n\n        for one in knowledge_list:\n            res.append(\n                KnowledgeRead(\n                    **one.model_dump(),\n                    user_name=db_user_dict.get(one.user_id, str(one.user_id)),\n                    copiable=login_user.access_check(\n                        one.user_id, str(one.id), AccessType.KNOWLEDGE_WRITE\n                    ),\n                )\n            )\n        return res\n\n    @classmethod\n    def get_knowledge_info(\n            cls, request: Request, login_user: UserPayload, knowledge_id: List[int]\n    ) -> List[KnowledgeRead]:\n        db_knowledge = KnowledgeDao.get_list_by_ids(knowledge_id)\n        filter_knowledge = db_knowledge\n        if not login_user.is_admin():\n            filter_knowledge = []\n            for one in db_knowledge:\n                # Determine if the user has permission\n                if login_user.access_check(\n                        one.user_id, str(one.id), AccessType.KNOWLEDGE\n                ):\n                    filter_knowledge.append(one)\n        if not filter_knowledge:\n            return []\n\n        return cls.convert_knowledge_read(login_user, filter_knowledge)\n\n    @classmethod\n    def create_knowledge(\n            cls, request: Request, login_user: UserPayload, knowledge: KnowledgeCreate\n    ) -> Knowledge:\n\n        # Determine if the Knowledge Base is Renamed\n        repeat_knowledge = KnowledgeDao.get_knowledge_by_name(\n            knowledge.name, login_user.user_id\n        )\n        if repeat_knowledge:\n            raise KnowledgeExistError.http_exception()\n\n        db_knowledge = Knowledge.model_validate(knowledge)\n\n        # CorrectionembeddingModels\n        if not db_knowledge.model:\n            raise KnowledgeNoEmbeddingError.http_exception()\n        embed_info = LLMDao.get_model_by_id(int(db_knowledge.model))\n        if not embed_info:\n            raise KnowledgeNoEmbeddingError.http_exception()\n        if embed_info.model_type != LLMModelType.EMBEDDING.value:\n            raise KnowledgeNoEmbeddingError.http_exception()\n\n        # generate index_name and collection_name\n        db_knowledge.index_name = generate_knowledge_index_name()\n        db_knowledge.collection_name = db_knowledge.index_name\n\n        # Insert into Database\n        db_knowledge.user_id = login_user.user_id\n        db_knowledge = KnowledgeDao.insert_one(db_knowledge)\n\n        try:\n            vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(login_user.user_id,\n                                                                                knowledge=db_knowledge,\n                                                                                metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n            es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge=db_knowledge,\n                                                                        metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n            es_client._store._create_index_if_not_exists()\n        except Exception as e:\n            logger.exception(\"create knowledge index name error\")\n\n        # Handling the next steps in creating a Knowledge Base\n        cls.create_knowledge_hook(request, login_user, db_knowledge)\n        return db_knowledge\n\n    @classmethod\n    def create_knowledge_hook(\n            cls, request: Request, login_user: UserPayload, knowledge: Knowledge\n    ):\n        # Query the user group the user belongs to under\n        user_group = UserGroupDao.get_user_group(login_user.user_id)\n        if user_group:\n            # Batch Insert Knowledge Base Resources into Associated Tables\n            batch_resource = []\n            for one in user_group:\n                batch_resource.append(\n                    GroupResource(\n                        group_id=one.group_id,\n                        third_id=knowledge.id,\n                        type=ResourceTypeEnum.KNOWLEDGE.value,\n                    )\n                )\n            GroupResourceDao.insert_group_batch(batch_resource)\n\n        # Log Audit Logs\n        AuditLogService.create_knowledge(\n            login_user, get_request_ip(request), knowledge.id\n        )\n\n        telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                         event_type=BaseTelemetryTypeEnum.NEW_KNOWLEDGE_BASE,\n                                         trace_id=trace_id_var.get(),\n                                         event_data=NewKnowledgeBaseEventData(\n                                             kb_id=knowledge.id,\n                                             kb_name=knowledge.name,\n                                             kb_type=knowledge.type\n                                         ))\n\n        return True\n\n    @classmethod\n    def update_knowledge(\n            cls, request: Request, login_user: UserPayload, knowledge: KnowledgeUpdate\n    ) -> KnowledgeRead:\n        db_knowledge = KnowledgeDao.query_by_id(knowledge.knowledge_id)\n        if not db_knowledge:\n            raise NotFoundError.http_exception()\n\n        # judge access\n        if not login_user.access_check(\n                db_knowledge.user_id, str(db_knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        if knowledge.name and knowledge.name != db_knowledge.name:\n            repeat_knowledge = KnowledgeDao.get_knowledge_by_name(\n                knowledge.name, db_knowledge.user_id\n            )\n            if repeat_knowledge and repeat_knowledge.id != db_knowledge.id:\n                raise KnowledgeExistError.http_exception()\n            db_knowledge.name = knowledge.name\n        db_knowledge.description = knowledge.description\n        db_knowledge = KnowledgeDao.update_one(db_knowledge)\n        user = UserDao.get_user(db_knowledge.user_id)\n        res = KnowledgeRead(\n            **db_knowledge.model_dump(),\n            user_name=user.user_name if user else db_knowledge.user_id,\n        )\n        return res\n\n    @classmethod\n    def delete_knowledge(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            only_clear: bool = False,\n    ):\n        knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge:\n            raise NotFoundError.http_exception()\n\n        if not login_user.access_check(\n                knowledge.user_id, str(knowledge_id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        # Cleaned vectorData in\n        cls.delete_knowledge_file_in_vector(knowledge)\n\n        # CleanedminioData\n        cls.delete_knowledge_file_in_minio(knowledge_id)\n\n        # DeletemysqlDATA\n        KnowledgeDao.delete_knowledge(knowledge_id, only_clear)\n\n        telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                         event_type=BaseTelemetryTypeEnum.DELETE_KNOWLEDGE_BASE,\n                                         trace_id=trace_id_var.get())\n\n        if not only_clear:\n            cls.delete_knowledge_hook(request, login_user, knowledge)\n        return True\n\n    @classmethod\n    def delete_knowledge_file_in_vector(cls, knowledge: Knowledge, del_es: bool = True):\n        # <g id=\"Bold\">Medical Treatment:</g>vector\n        embeddings = FakeEmbedding()\n        vector_client = decide_vectorstores(\n            knowledge.collection_name, \"Milvus\", embeddings\n        )\n        if isinstance(vector_client.col, Collection):\n            logger.info(\n                f\"delete_vector col={knowledge.collection_name} knowledge_id={knowledge.id}\"\n            )\n            if knowledge.collection_name.startswith(\"col\"):\n                # Singularcollection, simply delete it\n                vector_client.col.drop()\n            else:\n                # partitionMode requires partition key deletion\n                pk = vector_client.col.query(\n                    expr=f'knowledge_id==\"{knowledge.id}\"', output_fields=[\"pk\"]\n                )\n                vector_client.col.delete(f\"pk in {[p['pk'] for p in pk]}\")\n                # Judgingmilvus Are there any moreentity\n                if vector_client.col.is_empty:\n                    vector_client.col.drop()\n        if del_es:\n            # <g id=\"Bold\">Medical Treatment:</g> es\n            index_name = knowledge.index_name or knowledge.collection_name  # Compatible with older versions\n            es_client = decide_vectorstores(index_name, \"ElasticKeywordsSearch\", embeddings)\n            res = es_client.client.indices.delete(index=index_name, ignore=[400, 404])\n            logger.info(f\"act=delete_es index={index_name} res={res}\")\n\n    @classmethod\n    def delete_knowledge_hook(\n            cls, request: Request, login_user: UserPayload, knowledge: Knowledge\n    ):\n        logger.info(\n            f\"delete_knowledge_hook id={knowledge.id}, user: {login_user.user_id}\"\n        )\n\n        # Delete Knowledge Base Audit Log\n        AuditLogService.delete_knowledge(login_user, get_request_ip(request), knowledge)\n\n        # Purge resources under user groups\n        GroupResourceDao.delete_group_resource_by_third_id(\n            str(knowledge.id), ResourceTypeEnum.KNOWLEDGE\n        )\n\n    @classmethod\n    def delete_knowledge_file_in_minio(cls, knowledge_id: int):\n        # <g id=\"Bold\">Qn,</g>1000records to deleteminioDoc.\n        count = KnowledgeFileDao.count_file_by_knowledge_id(knowledge_id)\n        if count == 0:\n            return\n        page_size = 1000\n        page_num = math.ceil(count / page_size)\n\n        minio_client = get_minio_storage_sync()\n\n        for i in range(page_num):\n            file_list = KnowledgeFileDao.get_file_simple_by_knowledge_id(\n                knowledge_id, i + 1, page_size\n            )\n            for file in file_list:\n                minio_client.remove_object_sync(object_name=str(file[0]))\n                if file[1]:\n                    minio_client.remove_object_sync(object_name=file[1])\n\n    @classmethod\n    def get_upload_file_original_name(cls, file_name: str) -> str:\n        \"\"\"\n        SetujuuuidFile name, get the original name of the uploaded file\n        \"\"\"\n        if not file_name:\n            raise ServerError.http_exception(\"file_name is empty\")\n        # FROMredisGet within\n        uuid_file_name = file_name.split(\".\")[0]\n        original_file_name = get_redis_client_sync().get(f\"file_name:{uuid_file_name}\") or file_name\n        return original_file_name\n\n    @classmethod\n    async def save_upload_file_original_name(cls, original_file_name: str) -> str:\n        \"\"\"\n        Save the original name of the uploaded file toredisGenerate oneuuidFile name\n        \"\"\"\n        if not original_file_name:\n            raise ServerError.http_exception(\"original_file_name is empty\")\n        file_ext = original_file_name.split(\".\")[-1]\n        # Generate a uniqueuuidas akey\n        uuid_file_name = generate_uuid()\n        redis_client = await get_redis_client()\n        await redis_client.aset(f\"file_name:{uuid_file_name}\", original_file_name, expiration=86400)\n        return f\"{uuid_file_name}.{file_ext}\"\n\n    @classmethod\n    async def get_preview_file_chunk(\n            cls, request: Request, login_user: UserPayload, req_data: KnowledgeFileProcess\n    ) -> (str, str, List[FileChunk], Any):\n        \"\"\"\n        0Parse Mode: uns or local\n        1: Converted file path\n        2: After dicingchunkVertical\n        3: ocrIdentifiedbbox\n        \"\"\"\n        knowledge = await KnowledgeDao.aquery_by_id(req_data.knowledge_id)\n        if not await login_user.async_access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        file_path = req_data.file_list[0].file_path\n        excel_rule = req_data.file_list[0].excel_rule\n        cache_key = cls.get_preview_cache_key(req_data.knowledge_id, file_path)\n\n        redis_client = await get_redis_client()\n\n        # Attempt to fetch from cache\n        if req_data.cache:\n            if cache_value := await cls.async_get_preview_cache(cache_key):\n                parse_type = await redis_client.aget(f\"{cache_key}_parse_type\")\n                file_share_url = await redis_client.aget(f\"{cache_key}_file_path\")\n                partitions = await redis_client.aget(f\"{cache_key}_partitions\")\n                res = []\n\n                # Sort by segment order\n                cache_value = dict(sorted(cache_value.items(), key=lambda x: int(x[0])))\n\n                for key, val in cache_value.items():\n                    res.append(FileChunk(text=val[\"text\"], metadata=val[\"metadata\"]))\n                return parse_type, file_share_url, res, partitions\n\n        filepath, file_name = await async_file_download(file_path)\n        file_ext = file_name.split(\".\")[-1].lower()\n        file_name = cls.get_upload_file_original_name(file_name)\n\n        # Split text\n        texts, metadatas, parse_type, partitions = await async_read_chunk_text(\n            login_user.user_id,\n            filepath,\n            file_name,\n            req_data.separator,\n            req_data.separator_rule,\n            req_data.chunk_size,\n            req_data.chunk_overlap,\n            knowledge_id=req_data.knowledge_id,\n            force_ocr=req_data.force_ocr,\n            enable_formula=req_data.enable_formula,\n            filter_page_header_footer=req_data.filter_page_header_footer,\n            retain_images=req_data.retain_images,\n            excel_rule=excel_rule,\n            no_summary=True,\n        )\n        if len(texts) == 0:\n            raise ValueError(\"File resolution is empty\")\n        res = []\n        cache_map = {}\n        for index, val in enumerate(texts):\n            metadata_dict = metadatas[index].model_dump()\n            cache_map[index] = {\"text\": val, \"metadata\": metadata_dict}\n            res.append(FileChunk(text=val, metadata=metadata_dict))\n\n        # Default is the address of the source file\n        file_share_url = file_path\n        if file_ext in ['doc', 'ppt', 'pptx']:\n            file_share_url = ''\n            new_file_name = KnowledgeUtils.get_tmp_preview_file_object_name(filepath)\n            minio_client = await get_minio_storage()\n            if await minio_client.object_exists(minio_client.tmp_bucket, new_file_name):\n                file_share_url = await minio_client.get_share_link(\n                    new_file_name, minio_client.tmp_bucket\n                )\n\n        # Deposit Cache\n        await cls.async_save_preview_cache(cache_key, mapping=cache_map)\n        await redis_client.aset(f\"{cache_key}_parse_type\", parse_type)\n        await redis_client.aset(f\"{cache_key}_file_path\", file_share_url)\n        await redis_client.aset(f\"{cache_key}_partitions\", partitions)\n        return parse_type, file_share_url, res, partitions\n\n    @classmethod\n    async def update_preview_file_chunk(\n            cls, request: Request, login_user: UserPayload, req_data: UpdatePreviewFileChunk\n    ):\n        knowledge = await KnowledgeDao.aquery_by_id(req_data.knowledge_id)\n        if not await login_user.async_access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        cache_key = cls.get_preview_cache_key(req_data.knowledge_id, req_data.file_path)\n        chunk_info = await cls.async_get_preview_cache(cache_key, req_data.chunk_index)\n        if not chunk_info:\n            raise NotFoundError.http_exception()\n        chunk_info[\"text\"] = req_data.text\n        chunk_info[\"metadata\"][\"bbox\"] = req_data.bbox\n        await cls.async_save_preview_cache(\n            cache_key, chunk_index=req_data.chunk_index, value=chunk_info\n        )\n\n    @classmethod\n    def delete_preview_file_chunk(\n            cls, request: Request, login_user: UserPayload, req_data: UpdatePreviewFileChunk\n    ):\n        knowledge = KnowledgeDao.query_by_id(req_data.knowledge_id)\n        if not login_user.access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        cache_key = cls.get_preview_cache_key(req_data.knowledge_id, req_data.file_path)\n        cls.delete_preview_cache(cache_key, chunk_index=req_data.chunk_index)\n\n    @classmethod\n    def save_knowledge_file(\n            cls, login_user: UserPayload, req_data: KnowledgeFileProcess\n    ):\n        \"\"\"Process uploaded files, Uploaded to onlyminioAndmysql\"\"\"\n        knowledge = KnowledgeDao.query_by_id(req_data.knowledge_id)\n        if not knowledge:\n            raise NotFoundError.http_exception()\n        if not login_user.access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n        failed_files = []\n        # Process each file\n        process_files = []\n        preview_cache_keys = []\n        split_rule_dict = req_data.model_dump(include=set(list(FileProcessBase.model_fields.keys())))\n        for one in req_data.file_list:\n            # Upload source files, create data records\n            db_file = cls.process_one_file(login_user, knowledge, one, split_rule_dict)\n            # Duplicate file data using asynchronous tasks to execute\n            if db_file.status != KnowledgeFileStatus.FAILED.value:\n                # Get a preview cache of this filekey\n                cache_key = cls.get_preview_cache_key(\n                    req_data.knowledge_id, one.file_path\n                )\n                preview_cache_keys.append(cache_key)\n                process_files.append(db_file)\n            else:\n                failed_file_info = db_file.model_dump()\n                failed_file_info[\"file_path\"] = one.file_path\n                failed_files.append(failed_file_info)\n        return knowledge, failed_files, process_files, preview_cache_keys\n\n    @classmethod\n    def process_knowledge_file(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            background_tasks: BackgroundTasks,\n            req_data: KnowledgeFileProcess,\n    ) -> List[KnowledgeFile]:\n        from bisheng.worker.knowledge import file_worker\n\n        \"\"\"Process uploaded files\"\"\"\n        knowledge, failed_files, process_files, preview_cache_keys = (\n            cls.save_knowledge_file(login_user, req_data)\n        )\n\n        # Asynchronous processing of file parsing and warehousing, To voters if approvedcache_keyIf data can be obtained, use thecachefor inbound operations\n        for index, one in enumerate(process_files):\n            file_worker.parse_knowledge_file_celery.delay(one.id, preview_cache_keys[index], req_data.callback_url)\n\n        cls.upload_knowledge_file_hook(request, login_user, knowledge, process_files)\n        return failed_files + process_files\n\n    @classmethod\n    def sync_process_knowledge_file(\n            cls, request: Request, login_user: UserPayload, req_data: KnowledgeFileProcess\n    ) -> List[KnowledgeFile]:\n        \"\"\"Sync uploaded files\"\"\"\n        knowledge, failed_files, process_files, preview_cache_keys = (\n            cls.save_knowledge_file(login_user, req_data)\n        )\n\n        if process_files:\n            process_file_task(\n                knowledge,\n                process_files,\n                req_data.separator,\n                req_data.separator_rule,\n                req_data.chunk_size,\n                req_data.chunk_overlap,\n                req_data.callback_url,\n                req_data.extra,\n                preview_cache_keys,\n            )\n\n            process_files = KnowledgeFileDao.select_list([f.id for f in process_files])\n\n        cls.upload_knowledge_file_hook(request, login_user, knowledge, process_files)\n        return failed_files + process_files\n\n    @classmethod\n    async def rebuild_knowledge_file(cls, request: Request,\n                                     login_user: UserPayload,\n                                     req_data: KnowledgeFileReProcess):\n        \"\"\"\n        Rebuild Knowledge Base Files\n        :param request:\n        :param login_user:\n        :param req_data:\n        :return:\n        \"\"\"\n        from bisheng.worker.knowledge import file_worker\n\n        knowledge = await KnowledgeDao.async_query_by_id(req_data.knowledge_id)\n        if not knowledge:\n            raise NotFoundError.http_exception()\n        if not login_user.access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        db_file = await KnowledgeFileDao.query_by_id(req_data.kb_file_id)\n\n        if not db_file:\n            raise NotFoundError.http_exception()\n\n        split_rule_dict = req_data.model_dump(include=set(list(FileProcessBase.model_fields.keys())))\n        if req_data.excel_rule is not None:\n            split_rule_dict[\"excel_rule\"] = req_data.excel_rule.model_dump()\n        db_file.split_rule = json.dumps(split_rule_dict)\n        db_file.status = KnowledgeFileStatus.WAITING.value  # Parsing\n        db_file.updater_id = login_user.user_id\n        db_file.updater_name = login_user.user_name\n        db_file = await KnowledgeFileDao.async_update(db_file)\n\n        preview_cache_key = cls.get_preview_cache_key(req_data.knowledge_id, file_path=req_data.file_path)\n        file_worker.retry_knowledge_file_celery.delay(db_file.id, preview_cache_key, req_data.callback_url)\n\n        return db_file.model_dump()\n\n    @classmethod\n    def retry_files(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            background_tasks: BackgroundTasks,\n            req_data: dict,\n    ):\n        from bisheng.worker.knowledge import file_worker\n\n        db_file_retry = req_data.get(\"file_objs\")\n        if not db_file_retry:\n            return []\n        id2input = {file.get(\"id\"): file for file in db_file_retry}\n        file_ids = list(id2input.keys())\n        db_files: List[KnowledgeFile] = KnowledgeFileDao.select_list(file_ids=file_ids)\n        if not db_files:\n            return []\n        knowledge = KnowledgeDao.query_by_id(db_files[0].knowledge_id)\n        if not knowledge:\n            raise NotFoundError.http_exception()\n        if not login_user.access_check(\n                knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n        res = []\n\n        req_data[\"knowledge_id\"] = knowledge.id\n\n        minio_client = get_minio_storage_sync()\n\n        for file in db_files:\n            input_file = id2input.get(file.id)\n\n            # file exist\n            file.object_name = input_file.get(\"object_name\", file.object_name)\n            file_preview_cache_key = KnowledgeUtils.get_preview_cache_key(\n                file.knowledge_id, input_file.get(\"file_path\", \"\")\n            )\n\n            if file.object_name.startswith('tmp'):\n                # Moving Temporary Files to the Official Directory\n                new_object_name = KnowledgeUtils.get_knowledge_file_object_name(file.id, file.object_name)\n                minio_client.copy_object_sync(source_object=file.object_name, dest_object=new_object_name,\n                                              source_bucket=minio_client.tmp_bucket,\n                                              dest_bucket=minio_client.bucket)\n                file.object_name = new_object_name\n            file.file_name = input_file.get(\"file_name\", None) or file.file_name\n            file.remark = \"\"\n            file.split_rule = input_file[\"split_rule\"]\n            file.status = KnowledgeFileStatus.WAITING.value  # Parsing\n            file.updater_id = login_user.user_id\n            file.updater_name = login_user.user_name\n\n            file = KnowledgeFileDao.update(file)\n            res.append([file, file_preview_cache_key])\n        tmp = []\n        for one_file in res:\n            file_worker.retry_knowledge_file_celery.delay(one_file[0].id, one_file[1], None)\n            tmp.append(one_file[0])\n        cls.upload_knowledge_file_hook(request, login_user, knowledge, tmp)\n        return []\n\n    @classmethod\n    def upload_knowledge_file_hook(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge: Knowledge,\n            file_list: List[KnowledgeFile],\n    ):\n        logger.info(\n            f\"act=upload_knowledge_file_hook user={login_user.user_name} knowledge_id={knowledge.id}\"\n        )\n        if file_list:\n            KnowledgeDao.update_knowledge_update_time(knowledge)\n        # Log Audit Logs\n        file_name = \"\"\n        for one in file_list:\n            file_name += \"\\n\\n\" + one.file_name\n        AuditLogService.upload_knowledge_file(\n            login_user, get_request_ip(request), knowledge.id, file_name\n        )\n\n    @classmethod\n    def process_one_file(\n            cls,\n            login_user: UserPayload,\n            knowledge: Knowledge,\n            file_info: KnowledgeFileOne,\n            split_rule: Dict,\n    ) -> KnowledgeFile:\n        \"\"\"Process uploaded files\"\"\"\n        # download original file\n        filepath, file_name = file_download(file_info.file_path)\n        md5_ = os.path.splitext(os.path.basename(filepath))[0].split(\"_\")[0]\n\n        # Get file size inbytes）\n        file_size = os.path.getsize(filepath)\n\n        file_extension_name = file_name.split(\".\")[-1]\n        original_file_name = cls.get_upload_file_original_name(file_name)\n        # Does it contain duplicate files?\n        content_repeat = KnowledgeFileDao.get_file_by_condition(\n            md5_=md5_, knowledge_id=knowledge.id\n        )\n        name_repeat = KnowledgeFileDao.get_file_by_condition(\n            file_name=original_file_name, knowledge_id=knowledge.id\n        )\n\n        if not file_info.excel_rule:\n            file_info.excel_rule = ExcelRule()\n        split_rule[\"excel_rule\"] = file_info.excel_rule.model_dump()\n        str_split_rule = json.dumps(split_rule)\n        minio_client = get_minio_storage_sync()\n\n        if content_repeat or name_repeat:\n            db_file = content_repeat[0] if content_repeat else name_repeat[0]\n            old_name = db_file.file_name\n            file_type = file_name.rsplit(\".\", 1)[-1]\n            obj_name = f\"tmp/{db_file.id}.{file_type}\"\n            db_file.object_name = obj_name\n            db_file.remark = json.dumps({\n                \"new_name\": original_file_name,\n                \"old_name\": old_name}, ensure_ascii=False)\n            # Uploaded tominio, do not modify the database, it is up to the front-end to decide whether to overwrite or not. If it is overwritten, the retry interface\n            with open(filepath, \"rb\") as file:\n                minio_client.put_object_tmp_sync(db_file.object_name, file.read())\n            db_file.status = KnowledgeFileStatus.FAILED.value\n            db_file.split_rule = str_split_rule\n            # Update file size information\n            db_file.file_size = file_size\n            return db_file\n\n        # Insert new data, upload the original file tominio\n        db_file = KnowledgeFile(\n            knowledge_id=knowledge.id,\n            file_name=original_file_name,\n            file_size=file_size,\n            md5=md5_,\n            split_rule=str_split_rule,\n            user_id=login_user.user_id,\n            user_name=login_user.user_name,\n            updater_id=login_user.user_id,\n            updater_name=login_user.user_name,\n        )\n        db_file = KnowledgeFileDao.add_file(db_file)\n        telemetry_service.log_event_sync(\n            user_id=login_user.user_id,\n            event_type=BaseTelemetryTypeEnum.NEW_KNOWLEDGE_FILE,\n            trace_id=trace_id_var.get(),\n        )\n        # Saving original files\n        db_file.object_name = KnowledgeUtils.get_knowledge_file_object_name(db_file.id, db_file.file_name)\n        minio_client.put_object_sync(bucket_name=minio_client.bucket, object_name=db_file.object_name,\n                                     file=filepath)\n        logger.info(\"upload_original_file path={}\", db_file.object_name)\n        KnowledgeFileDao.update(db_file)\n        return db_file\n\n    @classmethod\n    def get_knowledge_files_title(cls, db_knowledge: Knowledge, files: List[KnowledgeFile]) -> Dict[str, str]:\n        \"\"\"Adoption of documentsidGet file title\"\"\"\n        if not files:\n            return {}\n        files = [one for one in files if one.status == KnowledgeFileStatus.SUCCESS.value]\n        if not files:\n            return {}\n        file_title_map: Dict[str, str] = {}\n        try:\n            embeddings = FakeEmbedding()\n            es_client = decide_vectorstores(\n                db_knowledge.index_name, \"ElasticKeywordsSearch\", embeddings\n            )\n            search_data = {\n                \"size\": len(files),\n                \"sort\": [\n                    {\n                        \"metadata.chunk_index\": {\n                            \"order\": \"asc\",\n                            \"missing\": 0,\n                            \"unmapped_type\": \"long\",\n                        }\n                    }\n                ],\n                \"post_filter\": {\n                    \"terms\": {\"metadata.document_id\": [one.id for one in files]}\n                },\n                \"collapse\": {\"field\": \"metadata.document_id\"},\n            }\n            es_res = es_client.client.search(\n                index=db_knowledge.index_name, body=search_data\n            )\n            for one in es_res[\"hits\"][\"hits\"]:\n                file_title_map[str(one[\"_source\"][\"metadata\"][\"document_id\"])] = one[\"_source\"][\"metadata\"][\"abstract\"]\n        except Exception as e:\n            # maybe es index not exist so ignore this error\n            logger.warning(f\"act=get_knowledge_files error={str(e)}\")\n            pass\n        return file_title_map\n\n    @classmethod\n    def get_knowledge_files(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            file_name: str = None,\n            status: List[int] = None,\n            page: int = 1,\n            page_size: int = 10,\n            file_ids: List[int] = None,\n    ) -> (List[KnowledgeFileResp], int, bool):\n        db_knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not db_knowledge:\n            raise NotFoundError.http_exception()\n\n        if not login_user.access_check(\n                db_knowledge.user_id, str(knowledge_id), AccessType.KNOWLEDGE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        res = KnowledgeFileDao.get_file_by_filters(\n            knowledge_id, file_name, status, page, page_size, file_ids\n        )\n        total = KnowledgeFileDao.count_file_by_filters(knowledge_id, file_name, status)\n\n        # get file title from es\n        finally_res = []\n        file_title_map = cls.get_knowledge_files_title(db_knowledge, res)\n        timeout_files = []\n        for index, one in enumerate(res):\n            finally_res.append(KnowledgeFileResp(**one.model_dump()))\n            # Parsing more than one day, setting status to failed\n            if one.status in [KnowledgeFileStatus.PROCESSING.value, KnowledgeFileStatus.WAITING.value] and (\n                    datetime.now() - one.update_time).total_seconds() > 86400:\n                timeout_files.append(one.id)\n                continue\n            finally_res[index].title = file_title_map.get(str(one.id), \"\")\n        if timeout_files:\n            KnowledgeFileDao.update_file_status(timeout_files, KnowledgeFileStatus.TIMEOUT,\n                                                KnowledgeFileFailedError(\n                                                    data={\"exception\": 'Parsing time exceeds 24 hours'}).to_json_str())\n\n        return (\n            finally_res,\n            total,\n            login_user.access_check(\n                db_knowledge.user_id, str(knowledge_id), AccessType.KNOWLEDGE_WRITE\n            ),\n        )\n\n    @classmethod\n    def delete_knowledge_file(\n            cls, request: Request, login_user: UserPayload, file_ids: List[int]\n    ):\n        from bisheng.worker.knowledge import file_worker\n\n        knowledge_file = KnowledgeFileDao.select_list(file_ids)\n        if not knowledge_file:\n            raise NotFoundError.http_exception()\n        db_knowledge = KnowledgeDao.query_by_id(knowledge_file[0].knowledge_id)\n        if not login_user.access_check(\n                db_knowledge.user_id, str(db_knowledge.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        # <g id=\"Bold\">Medical Treatment:</g>vectordb\n        delete_knowledge_file_vectors(file_ids)\n        KnowledgeFileDao.delete_batch(file_ids)\n        telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                         event_type=BaseTelemetryTypeEnum.DELETE_KNOWLEDGE_FILE,\n                                         trace_id=trace_id_var.get())\n\n        # Delete Audit Log for Knowledge Base Files\n        cls.delete_knowledge_file_hook(\n            request, login_user, db_knowledge.id, knowledge_file\n        )\n\n        # 5Minutes to check if the file was actually deleted\n        file_worker.delete_knowledge_file_celery.apply_async(args=(file_ids, knowledge_file[0].knowledge_id, True),\n                                                             countdown=300)\n\n        return True\n\n    @classmethod\n    def delete_knowledge_file_hook(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            file_list: List[KnowledgeFile],\n    ):\n        logger.info(\n            f\"act=delete_knowledge_file_hook user={login_user.user_name} knowledge_id={knowledge_id}\"\n        )\n        # Log Audit Logs\n        # Log Audit Logs\n        file_name = \"\"\n        for one in file_list:\n            file_name += \"\\n\\n\" + one.file_name\n        AuditLogService.delete_knowledge_file(\n            login_user, get_request_ip(request), knowledge_id, file_name\n        )\n\n    @classmethod\n    def judge_knowledge_access(cls, login_user: UserPayload, knowledge_id: int, access_type: AccessType) -> Knowledge:\n        db_knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not db_knowledge:\n            raise NotFoundError.http_exception()\n\n        if not login_user.access_check(\n                db_knowledge.user_id, str(knowledge_id), access_type\n        ):\n            raise UnAuthorizedError.http_exception()\n        return db_knowledge\n\n    @classmethod\n    def get_knowledge_chunks(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            file_ids: List[int] = None,\n            keyword: str = None,\n            page: int = None,\n            limit: int = None,\n    ) -> (List[FileChunk], int):\n        db_knowledge = cls.judge_knowledge_access(login_user, knowledge_id, AccessType.KNOWLEDGE)\n\n        es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(db_knowledge)\n\n        search_data = {\n            \"from\": (page - 1) * limit,\n            \"size\": limit,\n            \"sort\": [\n                {\n                    \"metadata.document_id\": {\n                        \"order\": \"desc\",\n                        \"missing\": 0,\n                        \"unmapped_type\": \"long\",\n                    }\n                },\n                {\n                    \"metadata.chunk_index\": {\n                        \"order\": \"asc\",\n                        \"missing\": 0,\n                        \"unmapped_type\": \"long\",\n                    }\n                },\n            ],\n        }\n        if file_ids:\n            search_data[\"post_filter\"] = {\"terms\": {\"metadata.document_id\": file_ids}}\n        if keyword:\n            search_data[\"query\"] = {\"match_phrase\": {\"text\": keyword}}\n        try:\n            res = es_client.client.search(index=db_knowledge.index_name, body=search_data)\n        except Exception as e:\n            logger.warning(f\"act=get_knowledge_chunks error={str(e)}\")\n            raise KnowledgeChunkError.http_exception()\n\n        # Query the file information corresponding to the next block\n        file_ids = set()\n        result = []\n        for one in res[\"hits\"][\"hits\"]:\n            file_ids.add(one[\"_source\"][\"metadata\"][\"document_id\"])\n        file_map = {}\n        if file_ids:\n            file_list = KnowledgeFileDao.get_file_by_ids(list(file_ids))\n            file_map = {one.id: one for one in file_list}\n        for one in res[\"hits\"][\"hits\"]:\n            file_id = one[\"_source\"][\"metadata\"][\"document_id\"]\n            file_info = file_map.get(file_id, None)\n            # Filter document summary contents of file names and summaries\n            result.append(\n                FileChunk(\n                    text=KnowledgeUtils.split_chunk_metadata(one[\"_source\"][\"text\"]),\n                    metadata=one[\"_source\"][\"metadata\"],\n                    parse_type=file_info.parse_type if file_info else None,\n                )\n            )\n        return result, res[\"hits\"][\"total\"][\"value\"]\n\n    @classmethod\n    def update_chunk_updater_info(cls, vector_client, es_client, db_knowledge, file_id, login_user):\n        # Product Requirements！！！！！！！\n        logger.debug(f\"start update_milvus_chunk_updater_info user={login_user.user_name}\")\n        output_fields = [s.name for s in vector_client.col.schema.fields]\n        iterator = vector_client.col.query_iterator(\n            expr=f\"document_id == {file_id}\",\n            output_fields=output_fields,\n            timeout=10,\n        )\n        update_time = int(datetime.now().timestamp())\n        while True:\n            result = iterator.next()\n            if not result:\n                iterator.close()\n                break\n            for record in result:\n                if not record.get(\"pk\") or not record.get(\"vector\"):\n                    raise ValueError(\"milvus chunk pk field or vector field is None\")\n                record[\"updater\"] = login_user.user_name\n                record[\"update_time\"] = update_time\n                vector_client.col.upsert(record)\n        logger.debug(f\"update_milvus_chunk_updater_info over\")\n\n        res = es_client.client.update_by_query(\n            index=db_knowledge.index_name,\n            body={\n                \"query\": {\n                    \"bool\": {\n                        \"must\": {\"match\": {\"metadata.document_id\": file_id}},\n                    }\n                },\n                \"script\": {\n                    \"source\": \"ctx._source.metadata.updater=params.updater;ctx._source.metadata.update_time=params.update_time;\",\n                    \"params\": {\"updater\": login_user.user_name, \"update_time\": update_time},\n                },\n            },\n            conflicts=\"proceed\",\n        )\n        logger.debug(f\"update_es_chunk_updater_info: {res}\")\n\n    @classmethod\n    def update_knowledge_chunk(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            file_id: int,\n            chunk_index: int,\n            text: str,\n            bbox: str,\n    ):\n        db_knowledge = cls.judge_knowledge_access(login_user, knowledge_id, AccessType.KNOWLEDGE_WRITE)\n\n        logger.info(\n            f\"act=update_vector knowledge_id={knowledge_id} document_id={file_id} chunk_index={chunk_index}\"\n        )\n        vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(login_user.user_id, db_knowledge)\n        # search metadata\n        output_fields = [s.name for s in vector_client.col.schema.fields if s.name != \"vector\"]\n        res = vector_client.col.query(\n            expr=f\"document_id == {file_id} && chunk_index == {chunk_index}\",\n            output_fields=output_fields,\n            timeout=10,\n        )\n        metadata = []\n        pk = []\n        for one in res:\n            pk.append(one.pop(\"pk\"))\n            metadata.append(one)\n        if not metadata:\n            raise ValueError(\"chunk not found in vector db\")\n        # insert data\n        logger.info(f\"act=add_vector {knowledge_id}\")\n        new_metadata = metadata[0]\n        new_metadata[\"bbox\"] = bbox\n        new_text = KnowledgeUtils.aggregate_chunk_metadata(text, new_metadata)\n        res = vector_client.add_texts([new_text], [new_metadata], timeout=10)\n        # delete data\n        logger.info(f\"act=delete_vector pk={pk}\")\n        res = vector_client.col.delete(f\"pk in {pk}\", timeout=10)\n        logger.info(f\"act=update_vector_over {res}\")\n\n        logger.info(\n            f\"act=update_es knowledge_id={knowledge_id} document_id={file_id} chunk_index={chunk_index}\"\n        )\n        es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(db_knowledge)\n        res = es_client.client.update_by_query(\n            index=db_knowledge.index_name,\n            body={\n                \"query\": {\n                    \"bool\": {\n                        \"must\": {\"match\": {\"metadata.document_id\": file_id}},\n                        \"filter\": {\"match\": {\"metadata.chunk_index\": chunk_index}},\n                    }\n                },\n                \"script\": {\n                    \"source\": \"ctx._source.text=params.text;ctx._source.metadata.bbox=params.bbox;\",\n                    \"params\": {\"text\": new_text, \"bbox\": bbox},\n                },\n            },\n        )\n        logger.info(f\"act=update_es_chunk_over {res}\")\n\n        # update metadata updater and update_time\n        cls.update_chunk_updater_info(vector_client, es_client, db_knowledge, file_id, login_user)\n\n        KnowledgeFileDao.update_file_updater(file_id, login_user.user_id, login_user.user_name)\n\n        return True\n\n    @classmethod\n    def delete_knowledge_chunk(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            knowledge_id: int,\n            file_id: int,\n            chunk_index: int,\n    ):\n        db_knowledge = cls.judge_knowledge_access(login_user, knowledge_id, AccessType.KNOWLEDGE_WRITE)\n\n        logger.info(\n            f\"act=delete_vector knowledge_id={knowledge_id} document_id={file_id} chunk_index={chunk_index}\"\n        )\n        vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(login_user.user_id, db_knowledge)\n        res = vector_client.col.delete(\n            expr=f\"document_id == {file_id} && chunk_index == {chunk_index}\",\n            timeout=10,\n        )\n        logger.info(f\"act=delete_vector_over {res}\")\n\n        logger.info(\n            f\"act=delete_es knowledge_id={knowledge_id} document_id={file_id} chunk_index={chunk_index} res={res}\"\n        )\n        es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(db_knowledge)\n        res = es_client.client.delete_by_query(\n            index=db_knowledge.index_name,\n            query={\n                \"bool\": {\n                    \"must\": {\"match\": {\"metadata.document_id\": file_id}},\n                    \"filter\": {\"match\": {\"metadata.chunk_index\": chunk_index}},\n                }\n            },\n            conflicts=\"proceed\",\n        )\n        logger.info(f\"act=delete_es_over {res}\")\n\n        cls.update_chunk_updater_info(vector_client, es_client, db_knowledge, file_id, login_user)\n\n        KnowledgeFileDao.update_file_updater(file_id, login_user.user_id, login_user.user_name)\n\n        return True\n\n    @classmethod\n    def get_file_share_url(cls, file_id: int) -> (str, str):\n        \"\"\" Get the original download address of the file And Corresponding preview file download address \"\"\"\n        file = KnowledgeFileDao.get_file_by_ids([file_id])\n        if not file:\n            raise NotFoundError()\n        file = file[0]\n        minio_client = get_minio_storage_sync()\n        # 130File parsing prior to version\n        if file.parse_type in [ParseType.LOCAL.value, ParseType.UNS.value]:\n            original_url = minio_client.get_share_link_sync(cls.get_knowledge_file_object_name(file.id, file.file_name))\n            preview_url = minio_client.get_share_link_sync(str(file.id))\n        else:\n            original_url = cls.get_file_share_url_with_empty(file.object_name)\n            preview_url = \"\"\n            # 130After the version of the file parsing logic, only the source file and preview file are no longer transferredpdfSettings Updated. what double check raws pls\n            if file.file_name.endswith(('.doc', '.ppt', '.pptx')):\n                preview_object_name = KnowledgeUtils.get_knowledge_preview_file_object_name(file.id, file.file_name)\n                preview_url = cls.get_file_share_url_with_empty(preview_object_name)\n        return original_url, preview_url\n\n    @classmethod\n    def get_file_share_url_with_empty(cls, object_name: str) -> str:\n        \"\"\"\n        Get a shared link to a file\n        :param object_name: Files inminioObject name in\n        :return: File sharing link\n        \"\"\"\n        minio_client = get_minio_storage_sync()\n        if minio_client.object_exists_sync(minio_client.bucket, object_name):\n            return minio_client.get_share_link_sync(object_name)\n        return \"\"\n\n    @classmethod\n    def get_file_bbox(\n            cls, request: Request, login_user: UserPayload, file_id: int\n    ) -> Any:\n        file_info = KnowledgeFileDao.select_list([file_id])\n        file_info = file_info[0]\n        if not file_info.bbox_object_name:\n            return None\n\n        minio_client = get_minio_storage_sync()\n\n        # download bbox file\n        resp = minio_client.get_object_sync(bucket_name=minio_client.bucket, object_name=file_info.bbox_object_name)\n        return json.loads(resp.decode(\"utf-8\"))\n\n    @classmethod\n    async def copy_knowledge(\n            cls,\n            request,\n            background_tasks: BackgroundTasks,\n            login_user: UserPayload,\n            knowledge: Knowledge,\n            knowledge_name: str = None,\n    ) -> Any:\n        from bisheng.worker.knowledge import file_worker\n\n        await KnowledgeDao.async_update_state(knowledge.id, KnowledgeState.COPYING, update_time=knowledge.update_time)\n        knowldge_dict = knowledge.model_dump()\n        knowldge_dict.pop(\"id\")\n        knowldge_dict.pop(\"create_time\")\n        knowldge_dict.pop(\"update_time\", None)\n        knowldge_dict[\"user_id\"] = login_user.user_id\n        knowldge_dict[\"index_name\"] = generate_knowledge_index_name()\n        knowldge_dict[\"collection_name\"] = knowldge_dict[\"index_name\"]\n        knowldge_dict[\"name\"] = f\"{knowledge.name} Copy\"[:200] if not knowledge_name else knowledge_name[:200]\n\n        knowldge_dict[\"state\"] = KnowledgeState.UNPUBLISHED.value\n        knowledge_new = Knowledge(**knowldge_dict)\n        target_knowlege = await KnowledgeDao.async_insert_one(knowledge_new)\n        # celery not yetok\n        params = {\n            \"source_knowledge_id\": knowledge.id,\n            \"target_id\": target_knowlege.id,\n            \"login_user_id\": login_user.user_id,\n        }\n        cls.create_knowledge_hook(request, login_user, target_knowlege)\n        file_worker.file_copy_celery.delay(params)\n        return target_knowlege\n\n    @classmethod\n    async def copy_qa_knowledge(\n            cls,\n            request,\n            login_user: UserPayload,\n            qa_knowledge: Knowledge,\n            knowledge_name: str = None,\n    ) -> Any:\n        await KnowledgeDao.async_update_state(qa_knowledge.id, KnowledgeState.COPYING,\n                                              update_time=qa_knowledge.update_time)\n        qa_knowldge_dict = qa_knowledge.model_dump()\n        qa_knowldge_dict.pop(\"id\")\n        qa_knowldge_dict.pop(\"create_time\")\n        qa_knowldge_dict.pop(\"update_time\", None)\n        qa_knowldge_dict[\"user_id\"] = login_user.user_id\n        qa_knowldge_dict[\"index_name\"] = generate_knowledge_index_name()\n        qa_knowldge_dict[\"collection_name\"] = qa_knowldge_dict[\"index_name\"]\n        qa_knowldge_dict[\"name\"] = f\"{qa_knowledge.name} Copy\"[:200] if not knowledge_name else knowledge_name[:200]\n        qa_knowldge_dict[\"state\"] = KnowledgeState.UNPUBLISHED.value\n        qa_knowledge_new = Knowledge(**qa_knowldge_dict)\n        target_qa_knowlege = await KnowledgeDao.async_insert_one(qa_knowledge_new)\n\n        cls.create_knowledge_hook(request, login_user, target_qa_knowlege)\n\n        from bisheng.worker.knowledge.qa import copy_qa_knowledge_celery\n        copy_qa_knowledge_celery.delay(source_knowledge_id=qa_knowledge.id, target_knowledge_id=target_qa_knowlege.id,\n                                       login_user_id=login_user.user_id)\n\n        return target_qa_knowlege\n\n    @classmethod\n    def judge_qa_knowledge_write(\n            cls, login_user: UserPayload, qa_knowledge_id: int\n    ) -> Knowledge:\n        db_knowledge = KnowledgeDao.query_by_id(qa_knowledge_id)\n        # Query the current knowledge base, whether there are write permissions\n        if not db_knowledge:\n            raise NotFoundError()\n        if not login_user.access_check(\n                db_knowledge.user_id, str(qa_knowledge_id), AccessType.KNOWLEDGE\n        ):\n            raise UnAuthorizedError.http_exception()\n\n        if db_knowledge.type != KnowledgeTypeEnum.QA.value:\n            raise KnowledgeNotQAError()\n        return db_knowledge\n"
  },
  {
    "path": "src/backend/bisheng/api/services/knowledge_imp.py",
    "content": "import asyncio\nimport json\nimport os\nimport re\nimport time\nfrom pathlib import Path\nfrom typing import Any, Dict, List, Optional, Union\n\nimport aiofiles\nimport requests\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.schema.document import Document\nfrom langchain.text_splitter import CharacterTextSplitter\nfrom langchain.vectorstores.base import VectorStore\nfrom langchain_community.document_loaders import (\n    BSHTMLLoader,\n    PyPDFLoader,\n    TextLoader,\n    UnstructuredPowerPointLoader,\n    UnstructuredWordDocumentLoader,\n)\nfrom loguru import logger\nfrom pymilvus import Collection\nfrom sqlalchemy import func, or_\nfrom sqlmodel import select\n\nfrom bisheng.api.services.etl4lm_loader import Etl4lmLoader\nfrom bisheng.api.services.libreoffice_converter import (\n    convert_doc_to_docx,\n    convert_ppt_to_pdf, convert_ppt_to_pptx,\n)\nfrom bisheng.api.services.md_from_pdf import is_pdf_damaged\nfrom bisheng.api.services.patch_130 import (\n    convert_file_to_md,\n    combine_multiple_md_files_to_raw_texts,\n)\nfrom bisheng.api.v1.schemas import ExcelRule\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.knowledge import KnowledgeSimilarError, KnowledgeFileDeleteError, KnowledgeFileEmptyError, \\\n    KnowledgeFileChunkMaxError, KnowledgeLLMError, KnowledgeFileDamagedError, KnowledgeFileNotSupportedError, \\\n    KnowledgeEtl4lmTimeoutError, KnowledgeFileFailedError, KnowledgeExcelChunkMaxError, KnowledgeRecommendQuestionError\nfrom bisheng.common.schemas.telemetry.event_data_schema import FileParseEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync, get_redis_client\nfrom bisheng.core.cache.utils import file_download\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync, get_minio_storage\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.interface.importing.utils import import_vectorstore\nfrom bisheng.interface.initialize.loading import instantiate_vectorstore\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao\nfrom bisheng.knowledge.domain.models.knowledge_file import (\n    KnowledgeFile,\n    KnowledgeFileDao,\n    KnowledgeFileStatus,\n    ParseType,\n    QAKnoweldgeDao,\n    QAKnowledge,\n    QAKnowledgeUpsert,\n    QAStatus,\n)\nfrom bisheng.knowledge.domain.schemas.knowledge_rag_schema import Metadata\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils import md5_hash, util\nfrom bisheng.utils.exceptions import EtlException, FileParseException\nfrom bisheng_langchain.rag.extract_info import extract_title, async_extract_title\nfrom bisheng_langchain.text_splitter import ElemCharacterTextSplitter\n\nfiletype_load_map = {\n    \"txt\": TextLoader,\n    \"pdf\": PyPDFLoader,\n    \"html\": BSHTMLLoader,\n    \"md\": TextLoader,\n    \"docx\": UnstructuredWordDocumentLoader,\n    \"pptx\": UnstructuredPowerPointLoader,\n}\n\n\nclass KnowledgeUtils:\n    # Used to distinguishchunkand automated production summary content  Format e.g. Filename\\nDocument Summary\\n--------\\n chunkContents\n    chunk_split = \"\\n----------\\n\"\n\n    @classmethod\n    def get_preview_cache_key(cls, knowledge_id: int, file_path: str, md5_value=None) -> str:\n        if not md5_value:\n            md5_value = md5_hash(file_path)\n        return f\"preview_file_chunk:{knowledge_id}:{md5_value}\"\n\n    @classmethod\n    def aggregate_chunk_metadata(cls, chunk: str, metadata: dict) -> str:\n        # Video Wall ProcessingchunkAndmetadatadata in to get a newchunk\n        res = f\"{{<file_title>{metadata.get('document_name', '')}</file_title>\\n\"\n        if metadata.get(\"abstract\", \"\"):\n            res += f\"<file_abstract>{metadata.get('abstract', '')}</file_abstract>\\n\"\n        res += f\"<paragraph_content>{chunk}</paragraph_content>}}\"\n        return res\n\n    @classmethod\n    def chunk2promt(cls, chunk: str, metadata: dict) -> str:\n        # Video Wall ProcessingchunkAndmetadatadata in to get a newchunk\n        res = f\"[file name]:{metadata.get('source', '')}\\n[file content begin]\\n{chunk}[file content end]\\n\"\n        return res\n\n    @classmethod\n    def split_chunk_metadata(cls, chunk: str) -> str:\n        # After stitching fromchunkis isolated from the originalchunk\n\n        # Instructions are old stitching rules\n        if not chunk.startswith(\"{<file_title>\"):\n            return chunk.split(cls.chunk_split)[-1]\n\n        chunk = chunk.split(\"<paragraph_content>\")[-1]\n        chunk = chunk.split(\"</paragraph_content>\")[0]\n        return chunk\n\n    @classmethod\n    async def async_save_preview_cache(\n            cls, cache_key, mapping: dict = None, chunk_index: int = 0, value: dict = None\n    ):\n        redis_client = await get_redis_client()\n        if mapping:\n            for key, val in mapping.items():\n                mapping[key] = json.dumps(val, ensure_ascii=False)\n            await redis_client.ahset(cache_key, mapping=mapping)\n        else:\n            await redis_client.ahset(\n                cache_key, key=chunk_index, value=json.dumps(value, ensure_ascii=False)\n            )\n\n    @classmethod\n    def delete_preview_cache(cls, cache_key, chunk_index: int = None):\n        redis_client = get_redis_client_sync()\n        if chunk_index is None:\n            redis_client.delete(cache_key)\n            redis_client.delete(f\"{cache_key}_parse_type\")\n            redis_client.delete(f\"{cache_key}_file_path\")\n            redis_client.delete(f\"{cache_key}_partitions\")\n        else:\n            redis_client.hdel(cache_key, chunk_index)\n\n    @classmethod\n    def get_preview_cache(cls, cache_key, chunk_index: int = None) -> dict:\n        redis_client = get_redis_client_sync()\n        if chunk_index is None:\n            all_chunk_info = redis_client.hgetall(cache_key)\n            for key, value in all_chunk_info.items():\n                all_chunk_info[key] = json.loads(value)\n            return all_chunk_info\n        else:\n            chunk_info = redis_client.hget(cache_key, chunk_index)\n            if chunk_info:\n                chunk_info = json.loads(chunk_info)\n            return chunk_info\n\n    @classmethod\n    async def async_get_preview_cache(cls, cache_key, chunk_index: int = None) -> dict:\n        redis_client = await get_redis_client()\n        if chunk_index is None:\n            all_chunk_info = await redis_client.ahgetall(cache_key)\n            for key, value in all_chunk_info.items():\n                all_chunk_info[key] = json.loads(value)\n            return all_chunk_info\n        else:\n            chunk_info = await redis_client.ahget(cache_key, chunk_index)\n            if chunk_info:\n                chunk_info = json.loads(chunk_info)\n            return chunk_info\n\n    @classmethod\n    def get_knowledge_file_image_dir(cls, doc_id: str, knowledge_id: int = None) -> str:\n        \"\"\"Get file image atminioStorage directory for\"\"\"\n        if knowledge_id:\n            return f\"knowledge/images/{knowledge_id}/{doc_id}\"\n        else:\n            return f\"tmp/images/{doc_id}\"\n\n    @classmethod\n    def get_knowledge_file_object_name(cls, file_id: int, file_name: str) -> str:\n        \"\"\"Get Knowledge Base Source Files atminioStorage Path for\"\"\"\n        file_ext = file_name.split(\".\")[-1]\n        return f\"original/{file_id}.{file_ext}\"\n\n    @classmethod\n    def get_knowledge_bbox_file_object_name(cls, file_id: int) -> str:\n        \"\"\"Get the corresponding knowledge base filebboxFiles inminioStorage Path for\"\"\"\n        return f\"partitions/{file_id}.json\"\n\n    @classmethod\n    def get_knowledge_preview_file_object_name(\n            cls, file_id: int, file_name: str\n    ) -> Optional[str]:\n        \"\"\"Get the preview file corresponding to the knowledge base file atminioStorage Path for This path is stored in the officialbucketand within\"\"\"\n        file_ext = file_name.split(\".\")[-1]\n        if file_ext == \"doc\":\n            return f\"preview/{file_id}.docx\"\n        elif file_ext in [\"ppt\", \"pptx\"]:\n            return f\"preview/{file_id}.pdf\"\n        # No preview required for other file types\n        return None\n\n    @classmethod\n    def get_tmp_preview_file_object_name(cls, file_path: str) -> Optional[str]:\n        \"\"\"Get a temporary preview file atminioStorage Path for This path is stored in a temporarybucket\"\"\"\n        file_name = os.path.basename(file_path)\n        file_name_no_ext, file_ext = file_name.rsplit(\".\", 1)\n        if file_ext == \"doc\":\n            return f\"preview/{file_name_no_ext}.docx\"\n        elif file_ext in [\"ppt\", \"pptx\"]:\n            return f\"preview/{file_name_no_ext}.pdf\"\n        # No preview required for other file types\n        return None\n\n\ndef put_images_to_minio(local_image_dir, knowledge_id, doc_id):\n    if not os.path.exists(local_image_dir):\n        return\n\n    minio_client = get_minio_storage_sync()\n\n    files = [f for f in os.listdir(local_image_dir)]\n    for file_name in files:\n        local_file_name = f\"{local_image_dir}/{file_name}\"\n        object_name = f\"{KnowledgeUtils.get_knowledge_file_image_dir(doc_id, knowledge_id)}/{file_name}\"\n        with open(local_file_name, \"rb\") as file_obj:\n            minio_client.put_object_sync(\n                object_name=object_name, file=file_obj.read(), bucket_name=minio_client.bucket\n            )\n\n\nasync def async_images_to_minio(local_image_dir, knowledge_id, doc_id):\n    if not os.path.exists(local_image_dir):\n        return\n\n    minio_client = await get_minio_storage()\n\n    files = [f for f in os.listdir(local_image_dir)]\n    for file_name in files:\n        local_file_name = f\"{local_image_dir}/{file_name}\"\n        object_name = f\"{KnowledgeUtils.get_knowledge_file_image_dir(doc_id, knowledge_id)}/{file_name}\"\n        async with aiofiles.open(local_file_name, \"rb\") as file_obj:\n            await minio_client.put_object(\n                object_name=object_name, file=await file_obj.read(), bucket_name=minio_client.bucket\n            )\n\n\ndef process_file_task(\n        knowledge: Knowledge,\n        db_files: List[KnowledgeFile],\n        separator: List[str],\n        separator_rule: List[str],\n        chunk_size: int,\n        chunk_overlap: int,\n        callback_url: str = None,\n        extra_metadata: Dict = None,\n        preview_cache_keys: List[str] = None,\n        retain_images: int = 1,\n        enable_formula: int = 1,\n        force_ocr: int = 0,\n        filter_page_header_footer: int = 0,\n):\n    \"\"\"Working with Knowledge Files Tasks\"\"\"\n    try:\n        index_name = knowledge.index_name or knowledge.collection_name\n        addEmbedding(\n            knowledge.collection_name,\n            index_name,\n            knowledge.id,\n            knowledge.model,\n            separator,\n            separator_rule,\n            chunk_size,\n            chunk_overlap,\n            db_files,\n            callback_url,\n            extra_metadata,\n            preview_cache_keys=preview_cache_keys,\n            retain_images=retain_images,\n            enable_formula=enable_formula,\n            force_ocr=force_ocr,\n            filter_page_header_footer=filter_page_header_footer,\n        )\n    except Exception as e:\n        logger.exception(\"process_file_task error\")\n        new_files = KnowledgeFileDao.select_list([file.id for file in db_files])\n        new_files_map = {file.id: file for file in new_files}\n        for file in db_files:\n            if new_files_map[file.id].status == KnowledgeFileStatus.PROCESSING.value:\n                file.status = KnowledgeFileStatus.FAILED.value\n                file.remark = KnowledgeFileFailedError(exception=e).to_json_str()\n                KnowledgeFileDao.update(file)\n        logger.info(\"update files failed status over\")\n        raise e\n\n\ndef delete_vector_files(file_ids: List[int], knowledge: Knowledge) -> bool:\n    \"\"\" Delete vector data andesDATA \"\"\"\n    if not file_ids:\n        return True\n    logger.info(f\"delete_files file_ids={file_ids} knowledge_id={knowledge.id}\")\n    logger.info(\"start init Milvus\")\n    vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(0, knowledge=knowledge,\n                                                                        metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n    logger.info(\"start init ES\")\n    es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge=knowledge,\n                                                                metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n    # Automatically close purchase order aftercollectionIf it does not exist, it will not\n    if vector_client.col:\n        vector_client.col.delete(expr=f\"document_id in {file_ids}\", timeout=10)\n    logger.info(f\"delete_milvus file_ids={file_ids}\")\n\n    if es_client.client.indices.exists(index=knowledge.index_name):\n        res = es_client.client.delete_by_query(\n            index=knowledge.index_name,\n            query={\"terms\": {\"metadata.document_id\": file_ids}},\n        )\n        logger.info(f\"act=delete_es file_ids={file_ids} res={res}\")\n\n    return True\n\n\ndef delete_minio_files(file: KnowledgeFile):\n    \"\"\"Delete Knowledge Base Files inminioStorage on\"\"\"\n\n    minio_client = get_minio_storage_sync()\n\n    # Delete source file\n    if file.object_name:\n        minio_client.remove_object_sync(bucket_name=minio_client.bucket, object_name=file.object_name)\n\n    # DeletebboxDoc.\n    if file.bbox_object_name:\n        minio_client.remove_object_sync(bucket_name=minio_client.bucket, object_name=file.bbox_object_name)\n\n    # Delete ConvertedpdfDoc.\n    minio_client.remove_object_sync(bucket_name=minio_client.bucket, object_name=f\"{file.id}\")\n\n    # Delete preview file\n    preview_object_name = KnowledgeUtils.get_knowledge_preview_file_object_name(\n        file.id, file.file_name\n    )\n    if preview_object_name:\n        minio_client.remove_object_sync(bucket_name=minio_client.bucket, object_name=preview_object_name)\n    return True\n\n\ndef delete_knowledge_file_vectors(file_ids: List[int], clear_minio: bool = True):\n    \"\"\"Delete Knowledge File Information\"\"\"\n    knowledge_files = KnowledgeFileDao.select_list(file_ids=file_ids)\n\n    knowledge_ids = [file.knowledge_id for file in knowledge_files]\n    knowledges = KnowledgeDao.get_list_by_ids(knowledge_ids)\n    if len(knowledges) > 1:\n        raise KnowledgeFileDeleteError()\n    knowledge = knowledges[0]\n    delete_vector_files(file_ids, knowledge)\n\n    if clear_minio:\n        for file in knowledge_files:\n            delete_minio_files(file)\n    return True\n\n\ndef decide_vectorstores(\n        collection_name: str, vector_store: str, embedding: Embeddings, knowledge_id: int = None\n) -> Union[VectorStore, Any]:\n    \"\"\" vector db if used by query, must have knowledge_id\"\"\"\n    param: dict = {\"embedding\": embedding}\n\n    if vector_store == \"ElasticKeywordsSearch\":\n        vector_config = settings.get_vectors_conf().elasticsearch.model_dump()\n        if not vector_config:\n            # No related configurations\n            raise RuntimeError(\"vector_stores.elasticsearch not find in config.yaml\")\n        param[\"index_name\"] = collection_name\n        if isinstance(vector_config[\"ssl_verify\"], str):\n            vector_config[\"ssl_verify\"] = eval(vector_config[\"ssl_verify\"])\n\n    elif vector_store == \"Milvus\":\n        if knowledge_id and collection_name.startswith(\"partition\"):\n            param[\"partition_key\"] = knowledge_id\n        vector_config = settings.get_vectors_conf().milvus.model_dump()\n        if not vector_config:\n            # No related configurations\n            raise RuntimeError(\"vector_stores.milvus not find in config.yaml\")\n        param[\"collection_name\"] = collection_name\n        vector_config.pop(\"partition_suffix\", \"\")\n        vector_config.pop(\"is_partition\", \"\")\n    else:\n        raise RuntimeError(\"unknown vector store type\")\n\n    param.update(vector_config)\n    class_obj = import_vectorstore(vector_store)\n    return instantiate_vectorstore(vector_store, class_object=class_obj, params=param)\n\n\ndef decide_knowledge_llm(invoke_user_id: int) -> Any:\n    \"\"\"Get a summary of the knowledge basechunkright of privacy llmObjects\"\"\"\n    # DapatkanllmConfigure\n    knowledge_llm = LLMService.get_knowledge_llm()\n    if not knowledge_llm.extract_title_model_id:\n        # No related configurations\n        return None\n\n    # DapatkanllmObjects\n    return LLMService.get_bisheng_llm_sync(\n        model_id=knowledge_llm.extract_title_model_id,\n\n        app_id=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n        app_name=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n        app_type=ApplicationTypeEnum.KNOWLEDGE_BASE,\n        user_id=invoke_user_id)\n\n\nasync def async_decide_knowledge_llm(invoke_user_id: int) -> Any:\n    \"\"\"Get a summary of the knowledge basechunkright of privacy llmObjects\"\"\"\n    # DapatkanllmConfigure\n    knowledge_llm = await LLMService.aget_knowledge_llm()\n    if not knowledge_llm.extract_title_model_id:\n        # No related configurations\n        return None\n\n    # DapatkanllmObjects\n    return await LLMService.get_bisheng_llm(\n        model_id=knowledge_llm.extract_title_model_id,\n\n        app_id=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n        app_name=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n        app_type=ApplicationTypeEnum.KNOWLEDGE_BASE,\n        user_id=invoke_user_id)\n\n\ndef addEmbedding(\n        collection_name: str,\n        index_name: str,\n        knowledge_id: int,\n        model: str,\n        separator: List[str],\n        separator_rule: List[str],\n        chunk_size: int,\n        chunk_overlap: int,\n        knowledge_files: List[KnowledgeFile],\n        callback: str = None,\n        extra_meta: Dict = None,\n        preview_cache_keys: List[str] = None,\n        retain_images: int = 1,\n        enable_formula: int = 1,\n        force_ocr: int = 0,\n        filter_page_header_footer: int = 0,\n):\n    \"\"\"Adding Files to Vector SumsesCunene\"\"\"\n\n    logger.info(\"start init Milvus\")\n    vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(knowledge_files[0].updater_id,\n                                                                        knowledge_id=knowledge_id,\n                                                                        metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n    logger.info(\"start init ES\")\n    es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge_id=knowledge_id,\n                                                                metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n    minio_client = get_minio_storage_sync()\n    for index, db_file in enumerate(knowledge_files):\n        # Try to get chunks of a file from the cache\n        preview_cache_key = None\n        if preview_cache_keys:\n            preview_cache_key = (\n                preview_cache_keys[index] if index < len(preview_cache_keys) else None\n            )\n        status = 'failed'\n        try:\n            logger.info(\n                f\"process_file_begin file_id={db_file.id} file_name={db_file.file_name}\"\n            )\n            add_file_embedding(\n                vector_client,\n                es_client,\n                minio_client,\n                db_file,\n                separator,\n                separator_rule,\n                chunk_size,\n                chunk_overlap,\n                extra_meta=extra_meta,\n                preview_cache_key=preview_cache_key,\n                # Added parameters\n                retain_images=retain_images,\n                knowledge_id=knowledge_id,\n                enable_formula=enable_formula,\n                force_ocr=force_ocr,\n                filter_page_header_footer=filter_page_header_footer,\n            )\n            db_file.status = KnowledgeFileStatus.SUCCESS.value\n            status = 'success'\n        except FileParseException as e:\n            logger.exception(\n                f\"process_file_fail file_id={db_file.id} file_name={db_file.file_name}\"\n            )\n            db_file.status = KnowledgeFileStatus.FAILED.value\n            if str(e).find(\"etl4lm server timeout\") != -1:\n                db_file.remark = KnowledgeEtl4lmTimeoutError(exception=e).to_json_str()\n            else:\n                db_file.remark = KnowledgeFileFailedError(exception=e).to_json_str()\n            status = 'parse_failed'\n        except BaseErrorCode as e:\n            db_file.status = KnowledgeFileStatus.FAILED.value\n            db_file.remark = e.to_json_str()\n            status = 'failed'\n        except Exception as e:\n            logger.exception(\n                f\"process_file_fail file_id={db_file.id} file_name={db_file.file_name}\"\n            )\n            db_file.status = KnowledgeFileStatus.FAILED.value\n            db_file.remark = KnowledgeFileFailedError(exception=e).to_json_str()\n            status = 'failed'\n        finally:\n            logger.info(\n                f\"process_file_end file_id={db_file.id} file_name={db_file.file_name}\"\n            )\n            KnowledgeFileDao.update(db_file)\n            telemetry_service.log_event_sync(user_id=db_file.user_id,\n                                             event_type=BaseTelemetryTypeEnum.FILE_PARSE,\n                                             trace_id=trace_id_var.get(),\n                                             event_data=FileParseEventData(\n                                                 parse_type=db_file.parse_type,\n                                                 status=status,\n                                                 app_type=ApplicationTypeEnum.KNOWLEDGE_BASE\n                                             ))\n\n            if callback:\n                inp = {\n                    \"file_name\": db_file.file_name,\n                    \"file_status\": db_file.status,\n                    \"file_id\": db_file.id,\n                    \"error_msg\": db_file.remark,\n                }\n                requests.post(url=callback, json=inp, timeout=3)\n\n\ndef add_file_embedding(\n        vector_client,\n        es_client,\n        minio_client,\n        db_file: KnowledgeFile,\n        separator: List[str],\n        separator_rule: List[str],\n        chunk_size: int,\n        chunk_overlap: int,\n        extra_meta: Dict = None,\n        preview_cache_key: str = None,\n        knowledge_id: int = None,\n        retain_images: int = 1,\n        enable_formula: int = 1,\n        force_ocr: int = 0,\n        filter_page_header_footer: int = 0,\n):\n    # download original file\n    logger.info(\n        f\"start download original file={db_file.id} file_name={db_file.file_name}\"\n    )\n\n    file_url = minio_client.get_share_link_sync(db_file.object_name, clear_host=False)\n    filepath, _ = file_download(file_url)\n    file_ext = Path(db_file.file_name).suffix.lower()\n\n    # Convert split_rule string to dict if needed\n    excel_rule = ExcelRule()\n    if db_file.split_rule and isinstance(db_file.split_rule, str):\n        split_rule = json.loads(db_file.split_rule)\n        if \"excel_rule\" in split_rule:\n            excel_rule = ExcelRule(**split_rule[\"excel_rule\"])\n    # # extract text from file\n    try:\n        texts, metadatas, parse_type, partitions = read_chunk_text(\n            db_file.user_id,\n            filepath,\n            db_file.file_name,\n            separator,\n            separator_rule,\n            chunk_size,\n            chunk_overlap,\n            knowledge_id=knowledge_id,\n            retain_images=retain_images,\n            enable_formula=enable_formula,\n            force_ocr=force_ocr,\n            filter_page_header_footer=filter_page_header_footer,\n            excel_rule=excel_rule,\n        )\n    except EtlException as e:\n        db_file.parse_type = ParseType.ETL4LM.value\n        raise FileParseException(str(e)) from e\n    except BaseErrorCode as e:\n        raise e\n    except Exception as e:\n        raise FileParseException(str(e)) from e\n\n    if len(texts) == 0:\n        raise KnowledgeFileEmptyError()\n    # If there is data in the cache, the data in the cache is used to go to the warehouse because the user edited it in the interface.\n    if preview_cache_key:\n        all_chunk_info = KnowledgeUtils.get_preview_cache(preview_cache_key)\n        if all_chunk_info:\n            logger.info(\n                f\"get_preview_cache file={db_file.id} file_name={db_file.file_name}\"\n            )\n            texts, metadatas = [], []\n            for key, val in all_chunk_info.items():\n                texts.append(val[\"text\"])\n                metadatas.append(Metadata(**val[\"metadata\"]))\n    for index, one in enumerate(texts):\n        if len(one) > 10000:\n            if file_ext in (\".xlsx\", \".xls\", \".csv\"):\n                raise KnowledgeExcelChunkMaxError()\n            raise KnowledgeFileChunkMaxError()\n        # On Inbound Stitching file names and document summaries\n        texts[index] = KnowledgeUtils.aggregate_chunk_metadata(one, metadatas[index].model_dump())\n\n    db_file.parse_type = parse_type\n    # StorageocrIdentifiedpartitions<g id=\"Bold\">Result</g>\n    if partitions:\n        partition_data = json.dumps(partitions, ensure_ascii=False).encode(\"utf-8\")\n        db_file.bbox_object_name = KnowledgeUtils.get_knowledge_bbox_file_object_name(\n            db_file.id\n        )\n        minio_client.put_object_sync(\n            bucket_name=minio_client.bucket,\n            object_name=db_file.bbox_object_name,\n            file=partition_data, content_type=\"application/json\",\n        )\n\n    logger.info(\n        f\"chunk_split file={db_file.id} file_name={db_file.file_name} size={len(texts)}\"\n    )\n    uploader = UserDao.get_user(user_id=db_file.user_id).user_name\n    if db_file.updater_id:\n        updater = UserDao.get_user(user_id=db_file.updater_id).user_name\n    else:\n        updater = uploader\n    for metadata in metadatas:\n        metadata.document_id = db_file.id\n        metadata.knowledge_id = db_file.knowledge_id\n        if extra_meta:\n            metadata.user_metadata = metadata.user_metadata.update(extra_meta)\n        metadata.upload_time = int(db_file.create_time.timestamp())\n        metadata.update_time = int(db_file.update_time.timestamp())\n        metadata.uploader = uploader\n        metadata.updater = updater\n\n    metadatas = [metadata.model_dump() for metadata in metadatas]\n    logger.info(f\"add_vectordb file={db_file.id} file_name={db_file.file_name}\")\n    # Depositmilvus\n    vector_client.add_texts(texts=texts, metadatas=metadatas)\n\n    logger.info(f\"add_es file={db_file.id} file_name={db_file.file_name}\")\n    # Deposites\n    es_client.add_texts(texts=texts, metadatas=metadatas)\n\n    logger.info(f\"add_complete file={db_file.id} file_name={db_file.file_name}\")\n\n    if preview_cache_key:\n        KnowledgeUtils.delete_preview_cache(preview_cache_key)\n\n    if file_ext in (\".doc\", \".ppt\", \".pptx\"):\n        tmp_preview_file = KnowledgeUtils.get_tmp_preview_file_object_name(filepath)\n\n        preview_object_name = KnowledgeUtils.get_knowledge_preview_file_object_name(\n            db_file.id, db_file.file_name\n        )\n        logger.info(\n            f\"upload_preview_file_to_minio file={db_file.id} tmp_object_name={tmp_preview_file}, preview_object_name={preview_object_name}\"\n        )\n        if minio_client.object_exists_sync(minio_client.tmp_bucket, tmp_preview_file):\n            minio_client.copy_object_sync(\n                source_object=tmp_preview_file,\n                dest_object=preview_object_name,\n                source_bucket=minio_client.tmp_bucket,\n                dest_bucket=minio_client.bucket,\n            )\n        logger.info(\n            f\"upload_preview_file_over file={db_file.id} tmp_object_name={tmp_preview_file}, preview_object_name={preview_object_name}\"\n        )\n    elif file_ext == \".docx\":\n        # special logic for docx replace original file\n        filepath_dir = os.path.dirname(filepath)\n        docx_fixed_path = os.path.join(filepath_dir, \"tmp\")\n        docx_fixed_path = os.path.join(docx_fixed_path, os.path.basename(filepath))\n        if os.path.exists(docx_fixed_path):\n            # replace original docx file\n            minio_client.put_object_sync(\n                bucket_name=minio_client.bucket,\n                object_name=db_file.object_name,\n                file=docx_fixed_path)\n\n\ndef add_text_into_vector(\n        vector_client,\n        es_client,\n        db_file: KnowledgeFile,\n        texts: List[str],\n        metadatas: List[dict],\n):\n    logger.info(f\"add_vectordb file={db_file.id} file_name={db_file.file_name}\")\n    # Depositmilvus\n    vector_client.add_texts(texts=texts, metadatas=metadatas)\n\n    logger.info(f\"add_es file={db_file.id} file_name={db_file.file_name}\")\n    # Deposites\n    es_client.add_texts(texts=texts, metadatas=metadatas)\n\n\ndef parse_partitions(partitions: List[Any]) -> Dict:\n    \"\"\"Resolve BuildbboxCorrespondence with text\"\"\"\n    if not partitions:\n        return {}\n    res = {}\n    for part_index, part in enumerate(partitions):\n        bboxes = part[\"metadata\"][\"extra_data\"][\"bboxes\"]\n        indexes = part[\"metadata\"][\"extra_data\"][\"indexes\"]\n        pages = part[\"metadata\"][\"extra_data\"][\"pages\"]\n        text = part[\"text\"]\n        for index, bbox in enumerate(bboxes):\n            key = f\"{pages[index]}-\" + \"-\".join([str(int(one)) for one in bbox])\n            if index == len(bboxes) - 1:\n                val = text[indexes[index][0]:]\n            else:\n                val = text[indexes[index][0]:indexes[index][1]]\n            res[key] = {\"text\": val, \"type\": part[\"type\"], \"part_id\": part_index}\n    return res\n\n\ndef upload_preview_file_to_minio(original_file_path: str, preview_file_path: str):\n    if (\n            os.path.basename(original_file_path).split(\".\")[0]\n            != os.path.basename(preview_file_path).split(\".\")[0]\n    ):\n        logger.error(\n            f\"Original and preview file paths do not match: {original_file_path} vs {preview_file_path}\"\n        )\n\n    minio_client = get_minio_storage_sync()\n    object_name = KnowledgeUtils.get_tmp_preview_file_object_name(original_file_path)\n    with open(preview_file_path, \"rb\") as file_obj:\n        # Upload preview file tominio\n        minio_client.put_object_tmp_sync(\n            object_name=object_name, file=file_obj.read()\n        )\n    return object_name\n\n\nasync def async_upload_preview_file_to_minio(\n        original_file_path: str, preview_file_path: str\n):\n    if (\n            os.path.basename(original_file_path).split(\".\")[0]\n            != os.path.basename(preview_file_path).split(\".\")[0]\n    ):\n        logger.error(\n            f\"Original and preview file paths do not match: {original_file_path} vs {preview_file_path}\"\n        )\n\n    minio_client = await get_minio_storage()\n    object_name = KnowledgeUtils.get_tmp_preview_file_object_name(original_file_path)\n    async with aiofiles.open(preview_file_path, \"rb\") as file_obj:\n        # Upload preview file tominio\n        await minio_client.put_object_tmp(\n            object_name=object_name, file=await file_obj.read()\n        )\n    return object_name\n\n\ndef parse_document_title(title: str) -> str:\n    \"\"\"\n    Parse document titles, removing special characters and extra spaces\n    :param title: Original title\n    :return: Post-processing title\n    \"\"\"\n    # Removing the Thinking Model'sthinkChange Content\n    title = re.sub(\"<think>.*</think>\", \"\", title, flags=re.S).strip()\n\n    # If there is amd The code fast marker removes the code block marker\n    if final_title := extract_code_blocks(title):\n        title = \"\\n\".join(final_title)\n    return title\n\n\ndef read_chunk_text(\n        invoke_user_id: int,\n        input_file: str,\n        file_name: str,\n        separator: Optional[List[str]],\n        separator_rule: Optional[List[str]],\n        chunk_size: int,\n        chunk_overlap: int,\n        knowledge_id: Optional[int] = None,\n        retain_images: int = 1,\n        enable_formula: int = 1,\n        force_ocr: int = 1,\n        filter_page_header_footer: int = 0,\n        excel_rule: ExcelRule = None,\n        no_summary: bool = False,\n) -> (List[str], List[dict], str, Any):  # type: ignore\n    \"\"\"\n    0：chunks text\n    1：chunks metadata\n    2：parse_type: etl4lm or un_etl4lm\n    3: ocr bbox data: maybe None\n    \"\"\"\n    # Gets the title of the document summaryllm\n    llm = None\n    if not no_summary:\n        try:\n            llm = decide_knowledge_llm(invoke_user_id)\n            knowledge_llm = LLMService.get_knowledge_llm()\n        except Exception as e:\n            logger.exception(\"knowledge_llm_error:\")\n            raise KnowledgeLLMError()\n\n    text_splitter = ElemCharacterTextSplitter(\n        separators=separator,\n        separator_rule=separator_rule,\n        chunk_size=chunk_size,\n        chunk_overlap=chunk_overlap,\n        is_separator_regex=True,\n    )\n    # Load document content\n    logger.info(f\"start_file_loader file_name={file_name}\")\n    parse_type = ParseType.UN_ETL4LM.value\n    # excel File processing comes out separately\n    partitions = []\n    texts = []\n    etl_for_lm_url = settings.get_knowledge().etl4lm.url\n    file_extension_name = file_name.split(\".\")[-1].lower()\n\n    if file_extension_name in [\"xls\", \"xlsx\", \"csv\"]:\n        # set default values.\n        if not excel_rule:\n            excel_rule = ExcelRule()\n\n        # convert excel contents to markdown\n        md_files_path, local_image_dir, doc_id = convert_file_to_md(\n            file_name=file_name,\n            input_file_name=input_file,\n            header_rows=[\n                excel_rule.header_start_row - 1,  # convert to 0-based index\n                excel_rule.header_end_row - 1,\n            ],\n            data_rows=excel_rule.slice_length,\n            append_header=excel_rule.append_header,\n            retain_images=bool(retain_images),\n        )\n\n        # skip following processes and return splited values.\n        texts, documents = combine_multiple_md_files_to_raw_texts(path=md_files_path)\n\n    elif file_extension_name in [\"doc\", \"docx\", \"html\", \"mhtml\", \"ppt\", \"pptx\"]:\n\n        if file_extension_name == \"doc\":\n            # convert doc to docx\n            input_file = convert_doc_to_docx(input_doc_path=input_file)\n            if not input_file:\n                raise Exception(\n                    f\"failed to convert {file_name} to docx, please check backend log\"\n                )\n        elif file_extension_name == \"ppt\":\n            input_file = convert_ppt_to_pptx(input_path=input_file)\n            if not input_file:\n                raise Exception(\"failed convert ppt to pptx, please check backend log\")\n\n        md_file_name, local_image_dir, doc_id = convert_file_to_md(\n            file_name=file_name,\n            input_file_name=input_file,\n            knowledge_id=knowledge_id,\n            retain_images=bool(retain_images),\n        )\n\n        if not md_file_name:\n            raise Exception(f\"failed to parse {file_name}, please check backend log\")\n\n        # save images to minio\n        if local_image_dir and retain_images == 1:\n            put_images_to_minio(\n                local_image_dir=local_image_dir,\n                knowledge_id=knowledge_id,\n                doc_id=doc_id,\n            )\n        # will bepptxSave as preview file to\n        if file_extension_name in [\"ppt\", \"pptx\"]:\n            ppt_pdf_path = convert_ppt_to_pdf(input_path=input_file)\n            if ppt_pdf_path:\n                upload_preview_file_to_minio(input_file, ppt_pdf_path)\n        elif file_extension_name == \"doc\":\n            upload_preview_file_to_minio(\n                input_file.replace(\".docx\", \".doc\"), input_file\n            )\n\n        # Handle it the same way you didmdDoc.\n        loader = filetype_load_map[\"md\"](file_path=md_file_name, autodetect_encoding=True)\n        documents = loader.load()\n\n    elif file_extension_name in [\"txt\", \"md\"]:\n        loader = filetype_load_map[file_extension_name](file_path=input_file, autodetect_encoding=True)\n        documents = loader.load()\n    else:\n        if etl_for_lm_url:\n            if file_extension_name in [\"pdf\"]:\n                # Determine if the document is damaged\n                if is_pdf_damaged(input_file):\n                    raise KnowledgeFileDamagedError()\n            etl4lm_settings = settings.get_knowledge().etl4lm\n            parse_type = ParseType.ETL4LM.value\n            try:\n                loader = Etl4lmLoader(\n                    file_name,\n                    input_file,\n                    unstructured_api_url=etl4lm_settings.url,\n                    ocr_sdk_url=etl4lm_settings.ocr_sdk_url,\n                    force_ocr=bool(force_ocr),\n                    enable_formular=bool(enable_formula),\n                    timeout=etl4lm_settings.timeout,\n                    filter_page_header_footer=bool(filter_page_header_footer),\n                    knowledge_id=knowledge_id,\n                )\n                documents = loader.load()\n            except Exception as e:\n                raise EtlException(str(e)) from e\n            partitions = loader.partitions\n            partitions = parse_partitions(partitions)\n        else:\n            if file_extension_name in ['pdf']:\n                md_file_name, local_image_dir, doc_id = convert_file_to_md(\n                    file_name=file_name,\n                    input_file_name=input_file,\n                    knowledge_id=knowledge_id,\n                    retain_images=bool(retain_images),\n                )\n                if not md_file_name: raise Exception(f\"failed to parse {file_name}, please check backend log\")\n\n                # save images to minio\n                if local_image_dir and retain_images == 1:\n                    put_images_to_minio(\n                        local_image_dir=local_image_dir,\n                        knowledge_id=knowledge_id,\n                        doc_id=doc_id,\n                    )\n                    # Handle it the same way you didmdDoc.\n                loader = filetype_load_map[\"md\"](file_path=md_file_name)\n                documents = loader.load()\n            else:\n                if file_extension_name not in filetype_load_map:\n                    raise KnowledgeFileNotSupportedError()\n                loader = filetype_load_map[file_extension_name](file_path=input_file)\n                documents = loader.load()\n\n    logger.info(f\"start_extract_title file_name={file_name}\")\n    if llm:\n        t = time.time()\n        for one in documents:\n            # Configured correlationllmIf so, summarize the document\n            title = extract_title(\n                llm=llm,\n                text=one.page_content,\n                abstract_prompt=knowledge_llm.abstract_prompt,\n            )\n            # remove <think>.*</think> tag content\n            one.metadata[\"title\"] = parse_document_title(title)\n        logger.info(\"file_extract_title=success timecost={}\", time.time() - t)\n\n    if file_extension_name in [\"xls\", \"xlsx\", \"csv\"]:\n        for one in texts:\n            one.metadata[\"title\"] = documents[0].metadata.get(\"title\", \"\")\n    else:\n        logger.info(f\"start_split_text file_name={file_name}\")\n        texts = text_splitter.split_documents(documents)\n\n    raw_texts = [t.page_content for t in texts]\n    logger.info(f\"start_process_metadata file_name={file_name}\")\n    metadatas = [\n\n        Metadata(\n            bbox=json.dumps({\"chunk_bboxes\": t.metadata.get(\"chunk_bboxes\", \"\")}),\n            page=(\n                t.metadata[\"chunk_bboxes\"][0].get(\"page\")\n                if t.metadata.get(\"chunk_bboxes\", None)\n                else t.metadata.get(\"page\", 0)\n            ),\n            document_name=file_name,\n            abstract=t.metadata.get(\"title\", \"\"),\n            chunk_index=t_index,\n            user_metadata={}\n        )\n        for t_index, t in enumerate(texts)\n    ]\n    logger.info(f\"file_chunk_over file_name=={file_name}\")\n    return raw_texts, metadatas, parse_type, partitions\n\n\nasync def async_read_chunk_text(\n        invoke_user_id: int,\n        input_file: str,\n        file_name: str,\n        separator: Optional[List[str]],\n        separator_rule: Optional[List[str]],\n        chunk_size: int,\n        chunk_overlap: int,\n        knowledge_id: Optional[int] = None,\n        retain_images: int = 1,\n        enable_formula: int = 1,\n        force_ocr: int = 1,\n        filter_page_header_footer: int = 0,\n        excel_rule: ExcelRule = None,\n        no_summary: bool = False,\n) -> (List[str], List[Metadata], str, Any):  # type: ignore\n    \"\"\"Asynchronous version of read_chunk_text\"\"\"\n    llm = None\n    if not no_summary:\n        try:\n            llm = await async_decide_knowledge_llm(invoke_user_id)\n            knowledge_llm = await LLMService.aget_knowledge_llm()\n        except Exception as e:\n            logger.exception(\"knowledge_llm_error:\")\n            raise Exception(\n                f\"Documentation Knowledge Base Summary Model is no longer valid, please go to Model Management-Configure in System Model Settings.{str(e)}\"\n            )\n\n    text_splitter = ElemCharacterTextSplitter(\n        separators=separator,\n        separator_rule=separator_rule,\n        chunk_size=chunk_size,\n        chunk_overlap=chunk_overlap,\n        is_separator_regex=True,\n    )\n    # Load document content\n    logger.info(f\"start_file_loader file_name={file_name}\")\n    parse_type = ParseType.UN_ETL4LM.value\n    # excel File processing comes out separately\n    partitions = []\n    texts = []\n    etl_for_lm_url = (await settings.async_get_knowledge()).etl4lm.url\n    file_extension_name = file_name.split(\".\")[-1].lower()\n\n    if file_extension_name in [\"xls\", \"xlsx\", \"csv\"]:\n        # set default values.\n        if not excel_rule:\n            excel_rule = ExcelRule()\n\n        # convert excel contents to markdown\n        md_files_path, local_image_dir, doc_id = await util.sync_func_to_async(convert_file_to_md)(\n            file_name=file_name,\n            input_file_name=input_file,\n            header_rows=[\n                excel_rule.header_start_row - 1,  # convert to 0-based index\n                excel_rule.header_end_row - 1,\n            ],\n            data_rows=excel_rule.slice_length,\n            append_header=excel_rule.append_header,\n            retain_images=bool(retain_images),\n        )\n\n        # skip following processes and return splited values.\n        texts, documents = await util.sync_func_to_async(combine_multiple_md_files_to_raw_texts)(path=md_files_path)\n\n    elif file_extension_name in [\"doc\", \"docx\", \"html\", \"mhtml\", \"ppt\", \"pptx\"]:\n\n        if file_extension_name == \"doc\":\n            # convert doc to docx\n            input_file = await util.sync_func_to_async(convert_doc_to_docx)(input_doc_path=input_file)\n            if not input_file:\n                raise Exception(\n                    f\"failed to convert {file_name} to docx, please check backend log\"\n                )\n        elif file_extension_name == \"ppt\":\n            input_file = await asyncio.to_thread(convert_ppt_to_pptx, input_path=input_file)\n            if not input_file:\n                raise Exception(\"failed convert ppt to pptx, please check backend log\")\n        md_file_name, local_image_dir, doc_id = await util.sync_func_to_async(convert_file_to_md)(\n            file_name=file_name,\n            input_file_name=input_file,\n            knowledge_id=knowledge_id,\n            retain_images=bool(retain_images),\n        )\n\n        if not md_file_name:\n            raise Exception(f\"failed to parse {file_name}, please check backend log\")\n\n        # save images to minio\n        if local_image_dir and retain_images == 1:\n            await async_images_to_minio(\n                local_image_dir=local_image_dir,\n                knowledge_id=knowledge_id,\n                doc_id=doc_id,\n            )\n        # will bepptxSave as preview file to\n        if file_extension_name in [\"ppt\", \"pptx\"]:\n            ppt_pdf_path = await util.sync_func_to_async(convert_ppt_to_pdf)(input_path=input_file)\n            if ppt_pdf_path:\n                await async_upload_preview_file_to_minio(input_file, ppt_pdf_path)\n        elif file_extension_name == \"doc\":\n            await async_upload_preview_file_to_minio(\n                input_file.replace(\".docx\", \".doc\"), input_file\n            )\n\n        # Handle it the same way you didmdDoc.\n        loader = filetype_load_map[\"md\"](file_path=md_file_name, autodetect_encoding=True)\n        documents = await loader.aload()\n\n    elif file_extension_name in [\"txt\", \"md\"]:\n        loader = filetype_load_map[file_extension_name](file_path=input_file, autodetect_encoding=True)\n        documents = await loader.aload()\n    else:\n        if etl_for_lm_url:\n            if file_extension_name in [\"pdf\"]:\n                # Determine if the document is damaged\n                if is_pdf_damaged(input_file):\n                    raise Exception('The file is damaged.')\n            etl4lm_settings = (await settings.async_get_knowledge()).etl4lm\n            loader = Etl4lmLoader(\n                file_name,\n                input_file,\n                unstructured_api_url=etl4lm_settings.url,\n                ocr_sdk_url=etl4lm_settings.ocr_sdk_url,\n                force_ocr=bool(force_ocr),\n                enable_formular=bool(enable_formula),\n                timeout=etl4lm_settings.timeout,\n                filter_page_header_footer=bool(filter_page_header_footer),\n                knowledge_id=knowledge_id,\n            )\n            documents = await loader.aload()\n            parse_type = ParseType.ETL4LM.value\n            partitions = loader.partitions\n            partitions = parse_partitions(partitions)\n        else:\n            if file_extension_name in ['pdf']:\n                md_file_name, local_image_dir, doc_id = await util.sync_func_to_async(convert_file_to_md)(\n                    file_name=file_name,\n                    input_file_name=input_file,\n                    knowledge_id=knowledge_id,\n                    retain_images=bool(retain_images),\n                )\n                if not md_file_name: raise Exception(f\"failed to parse {file_name}, please check backend log\")\n\n                # save images to minio\n                if local_image_dir and retain_images == 1:\n                    await async_images_to_minio(\n                        local_image_dir=local_image_dir,\n                        knowledge_id=knowledge_id,\n                        doc_id=doc_id,\n                    )\n                    # Handle it the same way you didmdDoc.\n                loader = filetype_load_map[\"md\"](file_path=md_file_name)\n                documents = await loader.aload()\n            else:\n                if file_extension_name not in filetype_load_map:\n                    raise Exception(\"Type not supported\")\n                loader = filetype_load_map[file_extension_name](file_path=input_file)\n                documents = await loader.aload()\n\n    logger.info(f\"start_extract_title file_name={file_name}\")\n    if llm:\n        t = time.time()\n        for one in documents:\n            # Configured correlationllmIf so, summarize the document\n            title = await async_extract_title(\n                llm=llm,\n                text=one.page_content,\n                abstract_prompt=knowledge_llm.abstract_prompt,\n            )\n            # remove <think>.*</think> tag content\n            one.metadata[\"title\"] = parse_document_title(title)\n        logger.info(\"file_extract_title=success timecost={}\", time.time() - t)\n\n    if file_extension_name in [\"xls\", \"xlsx\", \"csv\"]:\n        for one in texts:\n            one.metadata[\"title\"] = documents[0].metadata.get(\"title\", \"\")\n    else:\n        logger.info(f\"start_split_text file_name={file_name}\")\n        texts = text_splitter.split_documents(documents)\n\n    raw_texts = [t.page_content for t in texts]\n    logger.info(f\"start_process_metadata file_name={file_name}\")\n    metadatas = [\n\n        Metadata(\n            bbox=json.dumps({\"chunk_bboxes\": t.metadata.get(\"chunk_bboxes\", \"\")}),\n            page=(\n                t.metadata[\"chunk_bboxes\"][0].get(\"page\")\n                if t.metadata.get(\"chunk_bboxes\", None)\n                else t.metadata.get(\"page\", 0)\n            ),\n            document_name=file_name,\n            abstract=t.metadata.get(\"title\", \"\"),\n            chunk_index=t_index,\n            user_metadata={}\n        )\n        for t_index, t in enumerate(texts)\n    ]\n    logger.info(f\"file_chunk_over file_name=={file_name}\")\n    return raw_texts, metadatas, parse_type, partitions\n\n\ndef text_knowledge(\n        db_knowledge: Knowledge, db_file: KnowledgeFile, documents: List[Document]\n):\n    \"\"\"Usetext Importknowledge\"\"\"\n    embeddings = LLMService.get_bisheng_knowledge_embedding_sync(model_id=int(db_knowledge.model),\n                                                                 invoke_user_id=db_file.user_id)\n    vectore_client = decide_vectorstores(\n        db_knowledge.collection_name, \"Milvus\", embeddings\n    )\n    logger.info(\"vector_init_conn_done milvus={}\", db_knowledge.collection_name)\n    index_name = db_knowledge.index_name or db_knowledge.collection_name\n    es_client = decide_vectorstores(index_name, \"ElasticKeywordsSearch\", embeddings)\n\n    separator = \"\\n\\n\"\n    chunk_size = 1000\n    chunk_overlap = 100\n\n    text_splitter = CharacterTextSplitter(\n        separator=separator,\n        chunk_size=chunk_size,\n        chunk_overlap=chunk_overlap,\n        add_start_index=True,\n    )\n\n    texts = text_splitter.split_documents(documents)\n\n    logger.info(f\"chunk_split knowledge_id={db_knowledge.id} size={len(texts)}\")\n\n    # Storage mysql\n    file_name = documents[0].metadata.get(\"source\")\n    db_file.file_name = file_name\n    with get_sync_db_session() as session:\n        session.add(db_file)\n        session.commit()\n        session.refresh(db_file)\n    result = db_file.model_dump()\n    try:\n        metadata = [\n            {\n                \"file_id\": db_file.id,\n                \"knowledge_id\": f\"{db_knowledge.id}\",\n                \"page\": doc.metadata.pop(\"page\", 1),\n                \"source\": doc.metadata.pop(\"source\", \"\"),\n                \"bbox\": doc.metadata.pop(\"bbox\", \"\"),\n                \"extra\": json.dumps(doc.metadata, ensure_ascii=False),\n                \"title\": \"\",\n                \"chunk_index\": index,\n            }\n            for index, doc in enumerate(documents)\n        ]\n        vectore_client.add_texts(\n            texts=[t.page_content for t in texts], metadatas=metadata\n        )\n\n        # Storagees\n        if es_client:\n            es_client.add_texts(\n                texts=[t.page_content for t in texts], metadatas=metadata\n            )\n        db_file.status = 2\n        result[\"status\"] = 2\n        with get_sync_db_session() as session:\n            session.add(db_file)\n            session.commit()\n    except Exception as e:\n        logger.error(e)\n        setattr(db_file, \"status\", 3)\n        setattr(db_file, \"remark\", str(e)[:500])\n        with get_sync_db_session() as session:\n            session.add(db_file)\n            session.commit()\n        result[\"status\"] = 3\n        result[\"remark\"] = str(e)[:500]\n    return result\n\n\ndef delete_vector(collection_name: str, partition_key: str):\n    try:\n        embeddings = FakeEmbedding()\n        vectore_client = decide_vectorstores(collection_name, 'Milvus', embeddings)\n        if isinstance(vectore_client.col, Collection):\n            if partition_key:\n                pass\n            else:\n                res = vectore_client.col.drop(timeout=1)\n                logger.info('act=delete_milvus col={} res={}', collection_name, res)\n    except Exception as e:\n        # Handle situations where a collection does not exist or where there are other errors\n        logger.warning(f'act=delete_milvus_failed col={collection_name} error={str(e)}')\n        # Even an error is considered a successful deletion as the goal is to ensure that there is no dirty data\n\n\ndef delete_es(index_name: str):\n    try:\n        embeddings = FakeEmbedding()\n        esvectore_client = decide_vectorstores(index_name, 'ElasticKeywordsSearch', embeddings)\n\n        if esvectore_client:\n            res = esvectore_client.client.indices.delete(index=index_name, ignore=[400, 404])\n            logger.info(f'act=delete_es index={index_name} res={res}')\n    except Exception as e:\n        # Dealing with non-existent indexes or other errors\n        logger.warning(f'act=delete_es_failed index={index_name} error={str(e)}')\n        # Even an error is considered a successful deletion as the goal is to ensure that there is no dirty data\n\n\ndef QA_save_knowledge(db_knowledge: Knowledge, QA: QAKnowledge):\n    \"\"\"Usetext Importknowledge\"\"\"\n\n    questions = QA.questions\n    answer = json.loads(QA.answers)[0]\n    extra = {}\n    if QA.extra_meta:\n        extra = json.loads(QA.extra_meta) or {}\n    extra.update({\"answer\": answer, \"main_question\": questions[0]})\n    docs = [Document(page_content=question, metadata=extra) for question in questions]\n    try:\n        embeddings = LLMService.get_bisheng_knowledge_embedding_sync(invoke_user_id=QA.user_id,\n                                                                     model_id=int(db_knowledge.model))\n        vector_client = decide_vectorstores(\n            db_knowledge.collection_name, \"Milvus\", embeddings\n        )\n        es_client = decide_vectorstores(\n            db_knowledge.index_name, \"ElasticKeywordsSearch\", embeddings\n        )\n        logger.info(\n            f\"vector_init_conn_done col={db_knowledge.collection_name} index={db_knowledge.index_name}\"\n        )\n        # Unificationdocument\n        metadata = [\n            {\n                \"file_id\": QA.id,\n                \"knowledge_id\": f\"{db_knowledge.id}\",\n                \"page\": doc.metadata.pop(\"page\", 1),\n                \"source\": doc.metadata.pop(\"source\", \"\"),\n                \"bbox\": doc.metadata.pop(\"bbox\", \"\"),\n                \"title\": doc.metadata.pop(\"title\", \"\"),\n                \"chunk_index\": index,\n                \"extra\": json.dumps(doc.metadata, ensure_ascii=False),\n            }\n            for index, doc in enumerate(docs)\n        ]\n        vector_client.add_texts(\n            texts=[t.page_content for t in docs], metadatas=metadata\n        )\n        logger.info(f\"qa_save_knowledge add vector over\")\n        es_client.add_texts(texts=[t.page_content for t in docs], metadatas=metadata)\n        logger.info(f\"qa_save_knowledge add es over\")\n\n        QA.status = QAStatus.ENABLED.value\n        KnowledgeFileDao.update(QA)\n    except Exception as e:\n        logger.error(e)\n        setattr(QA, \"status\", QAStatus.FAILED.value)\n        setattr(QA, \"remark\", KnowledgeFileFailedError(exception=e).to_json_str())\n        KnowledgeFileDao.update(QA)\n\n    return QA\n\n\ndef add_qa(db_knowledge: Knowledge, data: QAKnowledgeUpsert) -> QAKnowledge:\n    \"\"\"Usetext ImportQAknowledge\"\"\"\n    if db_knowledge.type != 1:\n        raise Exception(\"knowledge type error\")\n    try:\n        # Similar question unified insertion\n        questions = data.questions\n        if questions:\n            if data.id:\n                qa_db = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(data.id)\n                qa_db.questions = questions\n                qa_db.answers = data.answers\n                qa = QAKnoweldgeDao.update(qa_db)\n                # Needs to be deleted before insertion\n                delete_vector_data(db_knowledge, [data.id])\n            else:\n                qa = QAKnoweldgeDao.insert_qa(data)\n                telemetry_service.log_event_sync(\n                    user_id=qa.user_id,\n                    event_type=BaseTelemetryTypeEnum.NEW_KNOWLEDGE_FILE,\n                    trace_id=trace_id_var.get()\n                )\n\n            # Right.questionTo be performedembedding, and then enter the Knowledge Base\n            qa = QA_save_knowledge(db_knowledge, qa)\n            return qa\n    except Exception as e:\n        logger.exception(e)\n        raise e\n\n\ndef qa_status_change(qa_db: QAKnowledge, target_status: int, db_knowledge: Knowledge):\n    \"\"\"QA State toggle\"\"\"\n\n    if qa_db.status == target_status:\n        logger.info(\"qa status is same, skip\")\n        return\n    if target_status == QAStatus.DISABLED.value:\n        delete_vector_data(db_knowledge, [qa_db.id])\n        qa_db.status = target_status\n        QAKnoweldgeDao.update(qa_db)\n    else:\n        qa_db.status = QAStatus.PROCESSING.value\n        QAKnoweldgeDao.update(qa_db)\n        QA_save_knowledge(db_knowledge, qa_db)\n    return qa_db\n\n\nasync def list_qa_by_knowledge_id(\n        knowledge_id: int,\n        page_size: int = 10,\n        page_num: int = 1,\n        question: Optional[str] = None,\n        answer: Optional[str] = None,\n        keyword: Optional[str] = None,\n        status: Optional[int] = None,\n) -> list[Any] | tuple[Any, Any]:\n    \"\"\"Get all under knowledge baseqa\"\"\"\n    if not knowledge_id:\n        return []\n\n    count_sql = select(func.count(QAKnowledge.id)).where(\n        QAKnowledge.knowledge_id == knowledge_id\n    )\n    list_sql = select(QAKnowledge).where(QAKnowledge.knowledge_id == knowledge_id)\n\n    if status:\n        count_sql = count_sql.where(QAKnowledge.status == status)\n        list_sql = list_sql.where(QAKnowledge.status == status)\n\n    if question:\n        count_sql = count_sql.where(QAKnowledge.questions.like(f\"%{question}%\"))\n        list_sql = list_sql.where(QAKnowledge.questions.like(f\"%{question}%\"))\n\n    if answer:\n        count_sql = count_sql.where(QAKnowledge.answers.like(f\"%{answer}%\"))\n        list_sql = list_sql.where(QAKnowledge.answers.like(f\"%{answer}%\"))\n\n    if keyword:\n        count_sql = count_sql.where(\n            or_(\n                QAKnowledge.questions.like(f\"%{keyword}%\"),\n                QAKnowledge.answers.like(f\"%{keyword}%\"),\n            )\n        )\n        list_sql = list_sql.where(\n            or_(\n                QAKnowledge.answers.like(f\"%{keyword}%\"),\n                QAKnowledge.questions.like(f\"%{keyword}%\"),\n            )\n        )\n\n    list_sql = (\n        list_sql.order_by(QAKnowledge.update_time.desc())\n        .limit(page_size)\n        .offset((page_num - 1) * page_size)\n    )\n    count = await QAKnoweldgeDao.total_count(count_sql)\n    list_qa = await QAKnoweldgeDao.query_by_condition(list_sql)\n\n    return list_qa, count\n\n\ndef delete_vector_data(knowledge: Knowledge, file_ids: List[int]):\n    \"\"\"Delete vector data, Want to make a general purpose that can be dockedlangchainright of privacyvectorDB\"\"\"\n    # embeddings = FakeEmbedding()\n    # vectore_config_dict: dict = settings.get_knowledge().get('vectorstores')\n    # if not vectore_config_dict:\n    #     raise Exception('Vector database must be configured')\n    # elastic_index = knowledge.index_name or knowledge.collection_name\n    # vectore_client_list = [\n    #     decide_vectorstores(elastic_index, db, embeddings) if db == 'ElasticKeywordsSearch' else\n    #     decide_vectorstores(knowledge.collection_name, db, embeddings)\n    #     for db in vectore_config_dict.keys()\n    # ]\n    # logger.info('vector_init_conn_done col={} dbs={}', knowledge.collection_name,\n    #             vectore_config_dict.keys())\n\n    # for vectore_client in vectore_client_list:\n    # Inquiryvector primary key\n    embeddings = FakeEmbedding()\n    collection_name = knowledge.collection_name\n    # <g id=\"Bold\">Medical Treatment:</g>vectordb\n    vectore_client = decide_vectorstores(collection_name, \"Milvus\", embeddings)\n    try:\n        if isinstance(vectore_client.col, Collection):\n            pk = vectore_client.col.query(\n                expr=f\"file_id in {file_ids}\", output_fields=[\"pk\"], timeout=10\n            )\n        else:\n            pk = []\n    except Exception:\n        # Want to try that again?\n        logger.error(\"timeout_except\")\n        vectore_client.close_connection(vectore_client.alias)\n        vectore_client = decide_vectorstores(collection_name, \"Milvus\", embeddings)\n        pk = vectore_client.col.query(\n            expr=f\"file_id in {file_ids}\", output_fields=[\"pk\"], timeout=10\n        )\n    logger.info(\"query_milvus pk={}\", pk)\n    if pk:\n        res = vectore_client.col.delete(f\"pk in {[p['pk'] for p in pk]}\", timeout=10)\n        logger.info(f\"act=delete_vector file_id={file_ids} res={res}\")\n    vectore_client.close_connection(vectore_client.alias)\n\n    # elastic\n    index_name = knowledge.index_name or collection_name\n    esvectore_client = decide_vectorstores(\n        index_name, \"ElasticKeywordsSearch\", embeddings\n    )\n\n    if esvectore_client:\n        res = esvectore_client.client.delete_by_query(\n            index=index_name, body={\"query\": {\"terms\": {\"metadata.file_id\": file_ids}}}\n        )\n    logger.info(f\"act=delete_es  res={res}\")\n    return True\n\n\ndef recommend_question(invoke_user_id: int, question: str, answer: str, number: int = 3) -> List[str]:\n    from langchain.chains.llm import LLMChain\n    from langchain_core.prompts.prompt import PromptTemplate\n\n    prompt = \"\"\"- Role: Problem Generation Specialist\n        - Background: Users want to generate similar questions based on given questions and answers through artificial intelligence models in order to expand the knowledge base or for educational and testing purposes.\n        - Profile: You are a professional data analyst and language modeler who specializes in extracting patterns from existing data and generating new relevant questions.\n        - Constrains: Ensure that the generated questions are semantically similar to the original questions, while maintaining diversity and avoiding duplication.\n        - Workflow:\n        1. Analyze questions and answers entered by users and extract keywords and topics.\n        2. Create similar questions based on extracted keywords and topics.\n        3. Verify that the generated questions are semantically similar to the original questions and ensure diversity.\n        - Examples:\n        Question:\"What is the capital of France?\"\n        Answers:\"Paris\"\n        Buat3similar questions:\n        - \"What is the name of the capital of France?\"\n        - \"Which city is the capital of France?\"\n        - \"What country's capital is Paris?\"\n\n        Please usejson Return\n        {{\"questions\": Generated Question List}}\n\n        Here are the questions and answers provided by the user:\n        Question:{question}\n        Answers:{answer}\n\n        You generated{number}similar questions:\n    \"\"\"\n    llm = LLMService.get_knowledge_similar_llm(invoke_user_id)\n    if not llm:\n        raise KnowledgeSimilarError.http_exception()\n\n    llm_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt))\n    gen_question = llm_chain.predict(question=question, answer=answer, number=number)\n    try:\n        code_ret = extract_code_blocks(gen_question)\n        if code_ret:\n            question_dict = json.loads(code_ret[0])\n            return question_dict[\"questions\"]\n        elif gen_question:\n            question_dict = json.loads(gen_question)\n            return question_dict.get(\"questions\", [])\n        else:\n            logger.info(\"md_code_extract_error {}\", gen_question)\n        return []\n    except Exception as exc:\n        logger.error(\"recommend_question json.loads error:{}\", gen_question)\n        raise KnowledgeRecommendQuestionError(exception=exc, message=gen_question)\n\n\ndef extract_code_blocks(markdown_code_block: str):\n    # Define regular expression patterns\n    pattern = r\"```\\w*\\s*(.*?)```\"\n\n    # Use re.DOTALL letting . Ability to match line breaks\n    matches = re.findall(pattern, markdown_code_block, re.DOTALL)\n\n    # Remove whitespace at both ends of each code block\n    return [match.strip() for match in matches]\n"
  },
  {
    "path": "src/backend/bisheng/api/services/libreoffice_converter.py",
    "content": "import os\nimport shutil  # For checking if the executable is in PATH\nimport subprocess\nimport tempfile\n\nfrom loguru import logger\n\n\ndef get_libreoffice_path():\n    \"\"\"\n    Tries to find the LibreOffice executable.\n    prerequisites:\n\n    1. install libreoffice\n    2. linux:\n        sudo apt-get install libreoffice\n        sudo yum install libreoffice-headless\n    3. macos:\n        brew install libreoffice\n    \"\"\"\n    if shutil.which(\"soffice\"):\n        return \"soffice\"\n    if shutil.which(\"libreoffice\"):\n        return \"libreoffice\"\n    # Common Windows paths\n    windows_paths = [\n        r\"C:\\Program Files\\LibreOffice\\program\\soffice.exe\",\n        r\"C:\\Program Files (x86)\\LibreOffice\\program\\soffice.exe\",\n    ]\n    for path in windows_paths:\n        if os.path.exists(path):\n            return path\n    return None\n\n\ndef _convert_file_extension(input_path, convert_extension, output_dir=None, except_file_ext=None):\n    if not os.path.isabs(input_path):\n        input_path = os.path.abspath(input_path)\n    if not os.path.exists(input_path):\n        logger.debug(f\"Error: Input file not found at '{input_path}'\")\n        return None\n    if output_dir is None:\n        output_dir = os.path.dirname(input_path)\n    else:\n        if not os.path.isabs(output_dir):\n            output_dir = os.path.abspath(output_dir)\n        if not os.path.exists(output_dir):\n            try:\n                os.makedirs(output_dir, exist_ok=True)\n                logger.debug(f\"Created output directory: '{output_dir}'\")\n            except OSError as e:\n                logger.debug(f\"Error creating output directory '{output_dir}': {e}\")\n                return None\n    # Check if libreoffice_exec is in PATH if it's not a full path\n    soffice_path = get_libreoffice_path()\n    if not soffice_path:\n        logger.debug(\n            \"Error: LibreOffice (soffice) command not found. Please install LibreOffice and ensure it's in your PATH, or adjust 'get_libreoffice_path()'.\"\n        )\n        return False\n\n    base_name = os.path.basename(input_path)\n    file_name_no_ext = os.path.splitext(base_name)[0]\n    output_path = os.path.join(output_dir, f\"{file_name_no_ext}.{except_file_ext}\")\n\n    try:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            command = [\n                soffice_path,\n                \"--headless\",  # Run in headless mode (no GUI)\n                \"-env:SingleAppInstance=false\",\n                f\"-env:UserInstallation=file://{tmp_dir}\",\n                \"--convert-to\",\n                convert_extension,\n                \"--outdir\",\n                output_dir,  # Specify the output directory\n                input_path,  # The input file\n            ]\n            logger.debug(f\"Executing command: {' '.join(command)}\")\n            process = subprocess.run(\n                command, check=True, capture_output=True, text=True, timeout=180\n            )  # 120 seconds timeout\n        logger.debug(f\"LibreOffice STDOUT: {process.stdout}\")\n        if process.stderr:  # LibreOffice sometimes logger.debugs info to stderr even on success\n            logger.debug(f\"LibreOffice STDERR: {process.stderr}\")\n\n        # Check if the file was actually created\n        # LibreOffice creates the file with the correct name in the output_dir\n        if os.path.exists(output_path):\n            # If output_docx_path is different (it shouldn't be with this logic, but for safety)\n            logger.debug(f\"Successfully converted '{input_path}' to '{output_path}'\")\n            return output_path\n        else:\n            # This case should ideally not happen if subprocess.run didn't raise an error\n            # and LibreOffice worked as expected.\n            logger.debug(\n                f\"Error: Conversion command seemed to succeed, but output file '{output_path}' not found.\"\n            )\n            return None\n\n    except FileNotFoundError:\n        logger.debug(\n            f\"Error: The LibreOffice executable '{soffice_path}' was not found.\"\n        )\n        logger.debug(\n            \"Ensure LibreOffice is installed and the command is in your PATH or provide the full path.\"\n        )\n        return None\n    except subprocess.CalledProcessError as e:\n        logger.debug(f\"Error during LibreOffice conversion for '{input_path}':\")\n        logger.debug(f\"Command: {' '.join(e.cmd)}\")\n        logger.debug(f\"Return code: {e.returncode}\")\n        logger.debug(f\"STDOUT: {e.stdout}\")\n        logger.debug(f\"STDERR: {e.stderr}\")\n        return None\n    except subprocess.TimeoutExpired:\n        logger.debug(f\"Error: LibreOffice conversion for '{input_path}' timed out.\")\n        return None\n    except Exception as e:\n        logger.debug(\n            f\"An unexpected error occurred during conversion of '{input_path}': {e}\"\n        )\n        return None\n\n\ndef convert_doc_to_docx(input_doc_path, output_dir=None):\n    \"\"\"\n    Converts a .doc file to .docx using LibreOffice/soffice command line.\n\n    Args:\n        input_doc_path (str): The absolute path to the input .doc file.\n        output_dir (str, optional): The directory to save the converted .docx file.\n                                    If None, saves in the same directory as the input file.\n        libreoffice_exec (str, optional): The command name or full path of the\n                                          LibreOffice executable (e.g., 'libreoffice',\n                                          'soffice', or '/opt/libreoffice7.x/program/soffice').\n\n    Returns:\n        str: The path to the converted .docx file if successful, None otherwise.\n    \"\"\"\n    if not input_doc_path.lower().endswith((\".doc\", \".docx\")):\n        logger.debug(f\"Error: Input file '{input_doc_path}' is not a .doc file.\")\n        return None\n    return _convert_file_extension(input_doc_path, \"docx:Office Open XML Text\", output_dir, except_file_ext=\"docx\")\n\n\ndef convert_ppt_to_pdf(input_path, output_dir=None):\n    \"\"\"\n    Converts .ppt or .pptx to PDF using LibreOffice soffice command.\n\n    Args:\n        input_path (str): Path to the .ppt or .pptx file.\n        output_dir (str, optional): Directory to save the PDF.\n                                    Defaults to the same directory as the input file.\n    \"\"\"\n    if not input_path.lower().endswith((\".ppt\", \".pptx\")):\n        logger.debug(f\"Error: {input_path} is not a .ppt or .pptx file.\")\n        return False\n\n    return _convert_file_extension(input_path, \"pdf\", output_dir, except_file_ext=\"pdf\")\n\n\ndef convert_ppt_to_pptx(input_path, output_dir=None):\n    \"\"\"\n    Converts .ppt to .pptx using LibreOffice soffice command.\n\n    Args:\n        input_path (str): Path to the .ppt file.\n        output_dir (str, optional): Directory to save the .pptx.\n                                    Defaults to the same directory as the input file.\n    \"\"\"\n    if not input_path.lower().endswith(\".ppt\"):\n        logger.debug(f\"Error: {input_path} is not a .ppt file.\")\n        return False\n    return _convert_file_extension(input_path, \"pptx\", output_dir, except_file_ext=\"pptx\")\n\n\nif __name__ == \"__main__\":\n    file_name = \"/Users/tju/Resources/docs/docx/resume.doc\"\n    convert_doc_to_docx(file_name, output_dir=\"/Users/tju/Resources/docs/docx\")\n    logger.debug(f\"{os.path.basename(file_name)}/x\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_from_docx.py",
    "content": "import os\nfrom pathlib import Path\nfrom uuid import uuid4\n\nimport pypandoc\nfrom loguru import logger\n\nfrom bisheng.api.services.libreoffice_converter import convert_doc_to_docx\n\ntry:\n    # Try checking pandoc version, try to download if it fails\n    pandoc_path = pypandoc.get_pandoc_path()\n    logger.debug(f\"Pandoc found at: {pandoc_path}\")\nexcept OSError:  # OSError Yes  get_pandoc_path Thrown when not found\n    logger.debug(\"Pandoc not found. Attempting to download pandoc...\")\n    try:\n        pypandoc.download_pandoc()  # This will download to pypandoc in the package directory of\n        logger.debug(\"Pandoc downloaded successfully by pypandoc.\")\n        # You may need to re-fetch the path or pypandoc After that, it will be automatically found\n    except Exception as e_download:\n        logger.debug(f\"Failed to download pandoc using pypandoc: {e_download}\")\n        exit()  # Exit if unable to download\n\n\ndef convert_doc_to_md_pandoc_high_quality(\n        doc_path_str: str, output_md_str: str, image_dir_name: str = \"media\", retry_convert_docx: bool = True,\n):\n    \"\"\"\n    Use Pandoc will be .doc OR .docx Convert files with high quality to Markdown, and extract the image.\n\n    Parameters:\n    doc_path_str (str): Entered Word Document path\n    output_md_str (str): Output Markdown FilePath\n    image_dir_name (str): The subdirectory name used to store the extracted image. This directory will be created in Markdown Next to the file.\n    \"\"\"\n    doc_path = Path(doc_path_str)\n    output_md_path = Path(output_md_str)\n\n    if not doc_path.exists():\n        logger.debug(f\"Error: Input file {doc_path} %s does not exist.\")\n        return\n\n    # Ensure Output Markdown The file's parent directory exists\n    output_md_path.parent.mkdir(parents=True, exist_ok=True)\n\n    # Pandoc Output Format Options (gfm Often a good choice)\n    pandoc_format_to = \"gfm\"\n\n    # Pandoc Extra arguments\n    # --extract-media=Directory name: told Pandoc Extracts all media files, such as pictures, to the specified subdirectory.\n    #                         Pandoc will automatically create this directory and Markdown The image link in points to this directory.\n    # --atx-headers: If your Pandoc version support, this option will use '#' The title of the style.\n    #                If you previously reported an error due to a version issue and you did not upgrade Pandoc, you can comment out this line.\n    extra_args = [\n        \"--wrap=none\",\n        # '--atx-headers', # Automatically close purchase order after Pandoc Older version causes this option to report an error, please comment it out or upgrade Pandoc\n        f\"--extract-media={image_dir_name}\",  # Key: Extract images to specified subdirectories\n    ]\n\n    # Images will be extracted to output_md_path Under the sibling directory image_dir_name In subdirectories\n    # For example: if output_md_path Yes  \"output/document.md\" Dan image_dir_name Yes  \"images\",\n    # Images will be stored in \"output/images/\" Under the directory, the link would be \"images/image1.png\"\n\n    try:\n        pypandoc.convert_file(\n            source_file=str(doc_path),\n            to=pandoc_format_to,\n            outputfile=str(output_md_path),\n            extra_args=extra_args,\n        )\n        logger.debug(f\"Pandoc Conversion Complete: {output_md_path}\")\n\n    except RuntimeError as e:  # Pandoc Often thrown when an error is not found or executed RuntimeError\n        if \"Unknown option --atx-headers\" in str(e):\n            logger.debug(\n                \"   error message '--atx-headers' The option is unknown, which usually means your Pandoc Older version.\"\n            )\n    except Exception as e:  # Other potential errors\n        logger.debug(f\"Convert File {doc_path} An unknown error occurred while: {e}\")\n\n    # If the conversion fails, try todocxConvert to StandarddocxTry Again\n    if not os.path.exists(output_md_path):\n        if retry_convert_docx:\n            output_dir = os.path.dirname(doc_path_str)\n            output_dir = os.path.join(output_dir, \"tmp\")\n            output_docx_path = convert_doc_to_docx(doc_path_str, output_dir)\n            if not output_docx_path:\n                raise RuntimeError(\"convert to docx failed\")\n            convert_doc_to_md_pandoc_high_quality(doc_path_str=output_docx_path, output_md_str=output_md_str,\n                                                  image_dir_name=image_dir_name, retry_convert_docx=False)\n            return\n        raise RuntimeError(\"convert to md failed\")\n\n\ndef handler(cache_dir, file_name):\n    \"\"\"\n    The main function that handles file conversions.\n\n    Parameters:\n    file_name (str): Entered Word Document path\n    knowledge_id (str): Knowledge ID, which is used to generate the output file name.\n    \"\"\"\n    doc_id = str(uuid4())\n    md_file_name = f\"{cache_dir}/{doc_id}.md\"\n    local_image_dir = f\"{cache_dir}/{doc_id}\"\n    convert_doc_to_md_pandoc_high_quality(\n        doc_path_str=file_name,\n        output_md_str=md_file_name,\n        image_dir_name=local_image_dir,\n    )\n    return md_file_name, f\"{local_image_dir}/media\", doc_id\n\n\nif __name__ == \"__main__\":\n    # Define test parameters\n    test_cache_dir = \"/Users/tju/Desktop\"\n    test_file_name = \"/Users/tju/Resources/docs/docx/resume.docx\"\n    # test_file_name = \"/Users/tju/Resources/docs/docx/2307.09288.docx\"\n\n    # Recall handler Function is tested\n    md_file_name, image_dir, doc_id = handler(\n        cache_dir=test_cache_dir,\n        file_name=test_file_name,\n    )\n\n    # Output Results\n    print(f\"Markdown FilePath: {md_file_name}\")\n    print(f\"Picture directory path: {image_dir}\")\n    print(f\"Documentation ID: {doc_id}\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_from_excel.py",
    "content": "import math\nimport os\nfrom typing import List\nfrom uuid import uuid4\n\nimport openpyxl\nimport pandas as pd\nfrom loguru import logger\n\n\ndef xls_to_xlsx(xls_path):\n    if not xls_path.lower().endswith(\".xls\"):\n        return None\n\n    if not os.path.exists(xls_path):\n        return None\n\n    try:\n        xls_file = pd.ExcelFile(xls_path)\n        sheets_to_write = {}\n\n        # 2. Iterate through all worksheets, check if empty, and save non-empty content to the dictionary\n        for sheet_name in xls_file.sheet_names:\n            df = xls_file.parse(sheet_name)\n            # df.empty will judge DataFrame No data (the number of rows is0）\n            if not df.empty:\n                sheets_to_write[sheet_name] = df\n            else:\n                #  Discard Blank Sheet\n                pass\n\n        # 3. Do not create a new file if there are any non-empty worksheets\n        if not sheets_to_write:\n            return None\n\n        # 4. Write a new file if a non-empty worksheet exists\n        xlsx_path = os.path.splitext(xls_path)[0] + \".xlsx\"\n        with pd.ExcelWriter(xlsx_path, engine=\"openpyxl\") as writer:\n            for sheet_name, df in sheets_to_write.items():\n                df.to_excel(writer, sheet_name=sheet_name, index=False)\n\n        return xlsx_path\n\n    except Exception as e:\n        logger.exception(f'xls_to_xlsx error: ')\n        return None\n\n\ndef remove_characters(s, chars_to_remove=[\"\\n\", \"\\r\"]):\n    \"\"\"\n    Removes the specified character from the string.\n    \"\"\"\n    if not isinstance(s, str):\n        return s\n    for char in chars_to_remove:\n        s = s.replace(char, \"\")\n    return s.strip()\n\n\ndef unmerge_and_read_sheet(sheet_obj):\n    \"\"\"\n    read out openpyxl Sheet object, unmerge cells by populating the top-left value of the merge range into all cells in the range.\n    and returns the data as a list of lists.\n    \"\"\"\n    if sheet_obj.max_row == 0 or sheet_obj.max_column == 0:\n        return []\n    max_row = sheet_obj.max_row\n    max_column = sheet_obj.max_column\n    data_grid = [\n        [None for _ in range(max_column)] for _ in range(max_row)\n    ]\n\n    # Berturut-turut50Row Blank Row Stop Reading Content\n    empty_row_num = 0\n    max_empty_rows = 50\n    empty_row_end = 0\n    for r_idx, row in enumerate(sheet_obj.iter_rows()):\n        if empty_row_num > max_empty_rows:\n            break\n        row_empty = True\n        for c_idx, cell in enumerate(row):\n            data_grid[r_idx][c_idx] = cell.value\n            if cell.value:\n                row_empty = False\n        if row_empty:\n            empty_row_num += 1\n        else:\n            empty_row_num = 0\n    if empty_row_num > 0:\n        data_grid = data_grid[:-empty_row_num]\n\n    merged_cell_ranges = list(sheet_obj.merged_cells.ranges)\n    for merged_range in merged_cell_ranges:\n        min_col, min_row, max_col, max_row = merged_range.bounds\n        top_left_cell_value = sheet_obj.cell(row=min_row, column=min_col).value\n        # ignore empty rows\n        if min_row > len(data_grid):\n            continue\n        for r in range(min_row, max_row + 1):\n            for c in range(min_col, max_col + 1):\n                data_grid[r - 1][c - 1] = top_left_cell_value\n\n    return data_grid\n\n\ndef generate_markdown_table_string(\n        header_rows_list_of_lists,\n        data_rows_list_of_lists,\n        num_columns,\n        separator_placement_index=1,\n):\n    \"\"\"\n    Generate from new rulesMarkdownTable String\n    Automatically close purchase order afterheader_rows_list_of_listsIf empty, no headers and delimiters are generated.\n    \"\"\"\n    md_lines = []\n\n    # Handle headers and delimiters only if a header row is provided\n    if header_rows_list_of_lists:\n        pre_separator_header = header_rows_list_of_lists[:separator_placement_index]\n        for row_values in pre_separator_header:\n            md_lines.append(\n                \"| \"\n                + \" | \".join(\n                    remove_characters(str(v)) if v is not None else \"\"\n                    for v in row_values\n                )\n                + \" |\"\n            )\n\n        # Insert below the header in the first rowMarkdownSeparator\n        if num_columns > 0:\n            md_lines.append(\"|\" + \"---|\" * num_columns)\n\n        post_separator_header = header_rows_list_of_lists[separator_placement_index:]\n        for row_values in post_separator_header:\n            md_lines.append(\n                \"| \"\n                + \" | \".join(\n                    remove_characters(str(v)) if v is not None else \"\"\n                    for v in row_values\n                )\n                + \" |\"\n            )\n\n    # Always process data rows\n    for row_values in data_rows_list_of_lists:\n        md_lines.append(\n            \"| \"\n            + \" | \".join(\n                remove_characters(str(v)) if v is not None else \"\" for v in row_values\n            )\n            + \" |\"\n        )\n\n    return \"\\n\".join(md_lines)\n\n\ndef process_dataframe_to_markdown_files(\n        df,\n        sheet_index: str,\n        num_header_rows,\n        rows_per_markdown,\n        output_dir,\n        append_header=True,\n):\n    \"\"\"\n    - append_header=True: Tekan num_header_rows Separate the header and data.\n    - append_header=False: All content is treated as data, table header is empty, ignored num_header_rows。\n    \"\"\"\n    if df.empty:\n        logger.warning(f\"  feed '{sheet_index}' DataDataFrameEmpty, skippingMarkdownBuat\")\n        return\n\n    num_columns = df.shape[1]\n    rows = df.shape[0]\n\n    if rows == 0 or num_columns == 0:\n        return\n\n    header_block_df = pd.DataFrame()\n    start_header_idx, end_header_idx = num_header_rows[0], num_header_rows[1]\n    if start_header_idx >= rows:\n        append_header = False\n\n    # --- Core Logic Modified: According to append_header Decide how to split the data ---\n    if append_header:\n        # Handle header index outliers based on user rules\n        if start_header_idx >= rows:\n            logger.warning(\n                f\"Table Header Start Row {start_header_idx} Total lines exceeded {rows}. The first row will be used as the table header.\")\n            start_header_idx, end_header_idx = 0, 0\n        elif end_header_idx >= rows:\n            logger.warning(\n                f\"Table Header End Row {end_header_idx} Total lines exceeded {rows}. will be truncated to the last line.\")\n            end_header_idx = rows - 1\n\n        # Make sure the index is legitimate\n        if start_header_idx < 0: start_header_idx = 0\n        if end_header_idx < start_header_idx: end_header_idx = start_header_idx\n\n        try:\n            header_slice = slice(start_header_idx, end_header_idx + 1)\n            header_block_df = df.iloc[header_slice]\n            data_block_df = df.drop(df.index[header_slice]).reset_index(drop=True)\n            header_rows_as_lists = header_block_df.values.tolist()\n        except Exception as e:\n            logger.error(\n                f\"  At Source '{sheet_index}' Index by header in [{start_header_idx}, {end_header_idx}] Error Splitting Data: {e}Skip\")\n            return\n    else:\n        # when append_header are False , everything is treated as data and the header list is empty\n        header_rows_as_lists = []\n        data_block_df = df.reset_index(drop=True)\n\n    # --- Subsequent pagination logic ---\n    if data_block_df.empty:\n        if append_header and not header_block_df.empty:\n            markdown_content = generate_markdown_table_string(\n                header_rows_as_lists, [], num_columns\n            )\n            # BUG FIX: Use zfill for proper padding. This is file '000' for the sheet.\n            file_name = f\"{str(sheet_index).zfill(2)}000.md\"\n            file_path = os.path.join(output_dir, file_name)\n            try:\n                with open(file_path, \"w\", encoding=\"utf-8\") as f:\n                    f.write(markdown_content)\n                logger.debug(f\"  Header-only files saved:'{file_path}'\")\n            except Exception as e:\n                logger.debug(f\"  Save file '{file_path}' Error during: {e}\")\n        return\n\n    num_data_rows_total = len(data_block_df)\n    num_files_to_create = math.ceil(num_data_rows_total / rows_per_markdown) if rows_per_markdown > 0 else (\n        1 if num_data_rows_total > 0 else 0)\n\n    for i in range(num_files_to_create):\n        start_idx = i * rows_per_markdown\n        end_idx = min(start_idx + rows_per_markdown, num_data_rows_total)\n        current_data_chunk_as_lists = data_block_df.iloc[start_idx:end_idx].values.tolist()\n\n        final_header_for_chunk = header_rows_as_lists\n        final_data_for_chunk = current_data_chunk_as_lists\n\n        # If no real header is attached and the current data block is not empty, the first row of data is used as the “pseudo header” to generate the delimiter\n        if not append_header and current_data_chunk_as_lists:\n            final_header_for_chunk = [current_data_chunk_as_lists[0]]\n            final_data_for_chunk = current_data_chunk_as_lists[1:]\n\n        markdown_content = generate_markdown_table_string(\n            final_header_for_chunk, final_data_for_chunk, num_columns\n        )\n\n        # BUG FIX: Use zfill for proper 2-digit sheet and 3-digit file padding.\n        file_name = f\"{str(sheet_index).zfill(2)}{str(i).zfill(3)}.md\"\n        file_path = os.path.join(output_dir, file_name)\n\n        try:\n            with open(file_path, \"w\", encoding=\"utf-8\") as f:\n                f.write(markdown_content)\n            logger.debug(\n                f\"  Sudah disimpan'{file_path}' (incl.  {len(current_data_chunk_as_lists)} Row Raw Data)\"\n            )\n        except Exception as e:\n            logger.debug(f\"  Save file '{file_path}' Error during: {e}\")\n\n\ndef is_list_of_lists_empty(data_list):\n    \"\"\"\n    Determine if a 2D list is empty or contains only empty values (None, '')。\n    \"\"\"\n    if not data_list:\n        return True\n    # Use any() and generator expressions for efficient judgment\n    # any(row) Check for non-empty lines\n    # any(cell is not None and cell != '' for cell in row) Check if there are non-empty cells in the row\n    return not any(any(cell is not None and str(cell).strip() != '' for cell in row) for row in data_list)\n\n\ndef excel_file_to_markdown(\n        excel_path, num_header_rows, rows_per_markdown, output_dir, append_header=True\n):\n    logger.debug(f\"\\nStart ProcessingExcelDocumentation:'{excel_path}'\")\n    try:\n        workbook = openpyxl.load_workbook(excel_path, data_only=True, read_only=False)\n    except Exception as e:\n        logger.debug(f\"Error: Unable to loadExcelDoc. '{excel_path}'Reason: {e}\")\n        return\n\n    sheet_index = 0\n    for sheet_name in workbook.sheetnames:\n        logger.debug(f\"\\n  (In work)ExcelWorksheet'{sheet_name}'...\")\n        sheet_obj = workbook[sheet_name]\n        unmerged_data_list_of_lists = unmerge_and_read_sheet(sheet_obj)\n        logger.debug(f\"\\n  <read all data>Excel<UNK>'{sheet_name}'...{len(unmerged_data_list_of_lists)}\")\n\n        # Using the new decision function\n        if is_list_of_lists_empty(unmerged_data_list_of_lists):\n            logger.debug(f\"  Worksheet '{sheet_name}' Empty or no valid data, skipping.\")\n            continue\n\n        df = pd.DataFrame(unmerged_data_list_of_lists)\n        df.fillna(\"\", inplace=True)\n        if df.empty:\n            logger.debug(f\"  Worksheet '{sheet_name}' Empty after processingDataFrameSkip\")\n            continue\n\n        process_dataframe_to_markdown_files(\n            df,\n            str(sheet_index),\n            num_header_rows,\n            rows_per_markdown,\n            output_dir,\n            append_header=append_header,\n        )\n        sheet_index += 1\n\n    if workbook:\n        workbook.close()\n    logger.debug(f\"\\nExcelDoc. '{excel_path}' Process Completed.\")\n\n\ndef csv_file_to_markdown(\n        csv_path,\n        num_header_rows,\n        rows_per_markdown,\n        output_dir,\n        csv_encoding=\"utf-8\",\n        csv_delimiter=\",\",\n        append_header=True,\n):\n    logger.debug(f\"\\nStart ProcessingCSVDocumentation:'{csv_path}'\")\n    try:\n        df = pd.read_csv(\n            csv_path,\n            header=None,\n            dtype=str,\n            encoding=csv_encoding,\n            sep=csv_delimiter,\n            keep_default_na=False,\n        )\n        df.fillna(\"\", inplace=True)\n\n    except pd.errors.EmptyDataError:\n        logger.debug(f\"Error: CSVDoc. '{csv_path}' Empty\")\n        return\n    except FileNotFoundError:\n        logger.debug(f\"Error: CSVDoc. '{csv_path}' Nothing found.\")\n        return\n    except Exception as e:\n        logger.debug(f\"Error: UnreadableCSVDoc. '{csv_path}'Reason: {e}\")\n        return\n\n    if df.empty:\n        logger.debug(f\"CSVDoc. '{csv_path}' Empty or empty after processing, skipping.\")\n        return\n\n    process_dataframe_to_markdown_files(\n        df,\n        \"0\",\n        num_header_rows,\n        rows_per_markdown,\n        output_dir,\n        append_header,\n    )\n    logger.debug(f\"\\nCSVDoc. '{csv_path}' Process Completed.\")\n\n\ndef convert_file_to_markdown(\n        input_file_path,\n        num_header_rows,\n        rows_per_markdown,\n        base_output_dir=\"output_markdown_files\",\n        csv_encoding=\"utf-8\",\n        csv_delimiter=\",\",\n        append_header=True,\n):\n    \"\"\"\n    will be Excel OR CSV Convert files to multiple Markdown files.\n    \"\"\"\n    if not os.path.exists(input_file_path):\n        logger.debug(f\"Error: Input file '{input_file_path}' Nothing found.\")\n        return\n\n    if not os.path.exists(base_output_dir):\n        os.makedirs(base_output_dir)\n        logger.debug(f\"To create an output directory:'{base_output_dir}'\")\n\n    _, file_extension = os.path.splitext(input_file_path)\n    file_extension = file_extension.lower()\n    if file_extension == \".xls\":\n        input_file_path = xls_to_xlsx(input_file_path)\n\n    if file_extension in [\".xlsx\", \".xls\"]:\n        excel_file_to_markdown(\n            input_file_path,\n            num_header_rows,\n            rows_per_markdown,\n            base_output_dir,\n            append_header,\n        )\n    elif file_extension == \".csv\":\n        csv_file_to_markdown(\n            input_file_path,\n            num_header_rows,\n            rows_per_markdown,\n            base_output_dir,\n            csv_encoding,\n            csv_delimiter,\n            append_header,\n        )\n    else:\n        logger.debug(\n            f\"Error: Unsupported file type '{file_extension}'Please provide user. Excel (.xlsx, .xls) OR CSV (.csv) files.\"\n        )\n\n\ndef handler(\n        cache_dir,\n        file_name: str,\n        header_rows: List[int] = [0, 1],\n        data_rows: int = 12,\n        append_header=True,\n):\n    \"\"\"\n    The main function that handles file conversions.\n    \"\"\"\n    doc_id = uuid4()\n    md_file_name = f\"{cache_dir}/{doc_id}\"\n\n    convert_file_to_markdown(\n        input_file_path=file_name,\n        base_output_dir=md_file_name,\n        num_header_rows=header_rows,\n        rows_per_markdown=data_rows,\n        append_header=append_header,\n    )\n    return md_file_name, None, doc_id\n\n\nif __name__ == \"__main__\":\n    # Define test parameters\n    test_cache_dir = \"/Users/zhangguoqing/Downloads/tmp\"\n    test_file_name = \"/Users/zhangguoqing/Downloads/124327.xlsx\"\n    # Test append_header=True and the index is out of bounds\n    test_header_rows = [0, 0]  # start_header_index Out of Scope\n    test_data_rows = 2\n    test_append_header = True\n\n    # Recall handler Function\n    print(\"--- Test Scenarios: append_header=True, Table header index out of bounds ---\")\n    handler(\n        cache_dir=test_cache_dir,\n        file_name=test_file_name,\n        header_rows=test_header_rows,\n        data_rows=test_data_rows,\n        append_header=test_append_header,\n    )\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_from_html.py",
    "content": "import requests\nfrom bs4 import BeautifulSoup, Comment\nfrom markdownify import markdownify as md\nimport os\nimport re\nimport base64\nfrom urllib.parse import urljoin, urlparse\nfrom uuid import uuid4\nfrom loguru import logger\nimport shutil\nfrom pathlib import Path\n\n# Configure logger\n\nUSER_AGENT = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\"\n\n\nclass HTML2MarkdownConverter:\n    def __init__(\n        self,\n        output_dir=\"output\",\n        media_download_timeout=60,\n    ):\n        self.output_dir = output_dir\n        self.MEDIA_DOWNLOAD_TIMEOUT = media_download_timeout\n        os.makedirs(self.output_dir, exist_ok=True)\n\n        self.current_image_absolute_path = None\n        self.current_video_absolute_path = None\n        self.base_url = None\n        # mhtml_resources is kept for cid processing in case it's used by other parts, but parsing is removed.\n        self.mhtml_resources = {}\n        self.source_html_filepath = None\n\n    def _clean_html(self, html_content):\n        logger.debug(\"Starting HTML cleaning (refined logic).\")\n        soup = BeautifulSoup(html_content, \"html.parser\")\n        for D_tag in soup.find_all([\"script\", \"style\", \"link\", \"meta\"]):\n            D_tag.decompose()\n        for comment in soup.find_all(string=lambda text: isinstance(text, Comment)):\n            comment.extract()\n        potentially_problematic_container_tags = [\"header\", \"footer\", \"nav\", \"aside\"]\n        non_content_patterns = re.compile(\n            r\"adsbygoogle|ad-slot|advertisement|promo(tion)?|banner-ad|popup-ad|cookie-notice|gdpr-banner|newsletter-signup|social-share-buttons|flyout-menu\",\n            re.IGNORECASE,\n        )\n        non_content_roles = [\n            \"banner\",\n            \"navigation\",\n            \"search\",\n            \"complementary\",\n            \"contentinfo\",\n            \"dialog\",\n            \"menubar\",\n            \"toolbar\",\n            \"directory\",\n            \"log\",\n            \"status\",\n            \"timer\",\n        ]\n        media_tags_to_check = [\"img\", \"video\", \"picture\", \"figure\", \"svg\", \"audio\"]\n        for tag in list(soup.find_all(True)):\n            if not tag.parent:\n                continue\n            decomposed_this_iteration = False\n            if tag.name in potentially_problematic_container_tags:\n                if not tag.find_all(media_tags_to_check):\n                    tag.decompose()\n                    decomposed_this_iteration = True\n            if decomposed_this_iteration:\n                continue\n            if tag.name not in media_tags_to_check:\n                class_match = any(\n                    non_content_patterns.search(cls) for cls in tag.get(\"class\", [])\n                )\n                id_match = (\n                    non_content_patterns.search(tag.get(\"id\", \"\"))\n                    if tag.get(\"id\")\n                    else False\n                )\n                role_match = tag.get(\"role\", \"\") in non_content_roles\n                if class_match or id_match or role_match:\n                    if not tag.find_all(media_tags_to_check):\n                        tag.decompose()\n                        decomposed_this_iteration = True\n            if decomposed_this_iteration:\n                continue\n        form_elements_to_remove = [\n            \"form\",\n            \"button\",\n            \"input\",\n            \"select\",\n            \"textarea\",\n            \"fieldset\",\n            \"legend\",\n        ]\n        for tag_name_to_remove in form_elements_to_remove:\n            for form_tag in list(soup.find_all(tag_name_to_remove)):\n                if not form_tag.parent:\n                    continue\n                if not form_tag.find_all(media_tags_to_check):\n                    form_tag.decompose()\n        for tag in soup.find_all(True):\n            if not tag.parent and tag.name not in [\"html\", \"head\", \"body\"]:\n                continue\n            attrs_to_remove = [\n                attr for attr in tag.attrs if attr.startswith(\"on\") or attr == \"style\"\n            ]\n            for attr in attrs_to_remove:\n                del tag.attrs[attr]\n        logger.debug(\"HTML cleaning (refined logic) finished.\")\n        return str(soup)\n\n    def _download_media_file(\n        self,\n        media_url,\n        base_url_for_relative,\n        media_absolute_save_dir,\n        markdown_relative_media_folder,\n        media_type_prefixes=(\"image/\", \"video/\", \"audio/\"),\n    ):\n        if not media_absolute_save_dir:\n            logger.error(\n                f\"Absolute path for saving media (media_absolute_save_dir) is not set for URL: {media_url}\"\n            )\n            return None, media_url\n        original_media_url_for_error_logger = media_url\n        try:\n            parsed_media_url = urlparse(media_url)\n            if media_url.startswith(\"data:\"):\n                if not any(\n                    prefix in media_url\n                    for prefix in media_type_prefixes\n                    if prefix == \"image/\"\n                ):\n                    return None, media_url\n                try:\n                    header, encoded = media_url.split(\",\", 1)\n                    media_data = base64.b64decode(encoded)\n                    ext_match = re.search(\n                        r\"data:(?P<type>image|video|audio)/(?P<ext>[a-zA-Z0-9+]+);\",\n                        header,\n                    )\n                    ext = ext_match.group(\"ext\").lower() if ext_match else \"png\"\n                    if ext == \"svg+xml\":\n                        ext = \"svg\"\n                    elif ext == \"jpeg\":\n                        ext = \"jpg\"\n\n                    if not ext or len(ext) > 5 or not ext.isalnum():\n                        ext = \"png\"\n                    unique_filename = f\"media_{uuid4().hex}.{ext}\"\n                    absolute_filepath = os.path.join(\n                        media_absolute_save_dir, unique_filename\n                    )\n                    markdown_path = os.path.join(\n                        markdown_relative_media_folder, unique_filename\n                    )\n                    with open(absolute_filepath, \"wb\") as f:\n                        f.write(media_data)\n                    logger.info(f\"Data URI media saved to {absolute_filepath}\")\n                    return markdown_path, media_url\n                except Exception as e:\n                    logger.error(f\"Failed to decode/save data URI media: {e}\")\n                    return None, media_url\n\n            actual_media_url_str = media_url\n            if not parsed_media_url.scheme or not parsed_media_url.netloc:\n                if not base_url_for_relative:\n                    logger.warning(\n                        f\"Cannot resolve relative media URL {actual_media_url_str} without a base URL.\"\n                    )\n                    return None, actual_media_url_str\n                actual_media_url_str = urljoin(\n                    base_url_for_relative, actual_media_url_str\n                )\n\n            parsed_actual_url = urlparse(actual_media_url_str)\n\n            ext = None\n            path_part_for_ext = parsed_actual_url.path\n            filename_from_url_for_ext = os.path.basename(path_part_for_ext)\n            if \".\" in filename_from_url_for_ext:\n                candidate_ext = filename_from_url_for_ext.split(\".\")[-1].lower()\n                if (\n                    len(candidate_ext) <= 5\n                    and candidate_ext.isalnum()\n                    and candidate_ext\n                    in [\n                        \"jpg\",\n                        \"jpeg\",\n                        \"png\",\n                        \"gif\",\n                        \"svg\",\n                        \"webp\",\n                        \"bmp\",\n                        \"tiff\",\n                        \"mp4\",\n                        \"webm\",\n                        \"ogg\",\n                        \"mov\",\n                        \"avi\",\n                        \"mkv\",\n                        \"mp3\",\n                        \"wav\",\n                        \"aac\",\n                    ]\n                ):\n                    ext = candidate_ext\n\n            if parsed_actual_url.scheme == \"file\":\n                local_file_path_str = parsed_actual_url.path\n                if (\n                    os.name == \"nt\"\n                ):  # Windows: remove leading '/' if path starts like /C:/...\n                    if (\n                        len(local_file_path_str) > 2\n                        and local_file_path_str[0] == \"/\"\n                        and local_file_path_str[2] == \":\"\n                    ):\n                        local_file_path_str = local_file_path_str[1:]\n\n                local_file_to_copy = Path(local_file_path_str)\n\n                if local_file_to_copy.exists() and local_file_to_copy.is_file():\n                    if not ext:\n                        ext = (\n                            local_file_to_copy.suffix[1:].lower() or \"dat\"\n                        )  # Get ext from local file if not from URL\n                    unique_filename = f\"media_{uuid4().hex}.{ext}\"\n                    absolute_filepath_dest = os.path.join(\n                        media_absolute_save_dir, unique_filename\n                    )\n                    markdown_path = os.path.join(\n                        markdown_relative_media_folder, unique_filename\n                    )\n                    shutil.copy(str(local_file_to_copy), absolute_filepath_dest)\n                    logger.info(\n                        f\"Local media file '{local_file_to_copy}' copied to '{absolute_filepath_dest}'\"\n                    )\n                    return (\n                        markdown_path,\n                        media_url,\n                    )  # Return original media_url for consistency\n                else:\n                    logger.warning(\n                        f\"Local file '{local_file_to_copy}' referenced by '{actual_media_url_str}' not found or not a file.\"\n                    )\n                    return None, media_url\n\n            elif parsed_actual_url.scheme in [\"http\", \"https\"]:\n                response = requests.get(\n                    actual_media_url_str,\n                    headers={\"User-Agent\": USER_AGENT},\n                    timeout=self.MEDIA_DOWNLOAD_TIMEOUT,\n                    stream=True,\n                )\n                response.raise_for_status()\n                content_type = response.headers.get(\"Content-Type\", \"\").lower()\n                if not ext:  # Try to get extension from Content-Type if not from URL\n                    if any(\n                        content_type.startswith(prefix)\n                        for prefix in media_type_prefixes\n                    ):\n                        type_part = content_type.split(\";\")[0]\n                        candidate_ext_ct = type_part.split(\"/\")[-1]\n                        if candidate_ext_ct == \"svg+xml\":\n                            ext = \"svg\"\n                        elif candidate_ext_ct == \"jpeg\":\n                            ext = \"jpg\"\n                        elif candidate_ext_ct in [\n                            \"png\",\n                            \"gif\",\n                            \"webp\",\n                            \"bmp\",\n                            \"tiff\",\n                            \"mp4\",\n                            \"webm\",\n                            \"ogg\",\n                            \"mov\",\n                            \"avi\",\n                            \"mkv\",\n                            \"mp3\",\n                            \"wav\",\n                            \"aac\",\n                        ]:\n                            ext = candidate_ext_ct\n\n                ext = ext if ext else \"dat\"  # Final fallback extension\n                unique_filename = f\"media_{uuid4().hex}.{ext}\"\n                absolute_filepath = os.path.join(\n                    media_absolute_save_dir, unique_filename\n                )\n                markdown_path = os.path.join(\n                    markdown_relative_media_folder, unique_filename\n                )\n                with open(absolute_filepath, \"wb\") as f:\n                    for chunk in response.iter_content(chunk_size=81920):\n                        f.write(chunk)\n                logger.info(\n                    f\"HTTP/S media {actual_media_url_str} downloaded to {absolute_filepath}\"\n                )\n                return (\n                    markdown_path,\n                    actual_media_url_str,\n                )  # Return resolved URL for HTTP/S\n            else:\n                logger.warning(\n                    f\"Skipping download for unsupported scheme: {actual_media_url_str}\"\n                )\n                return None, actual_media_url_str\n\n        except requests.exceptions.Timeout:\n            logger.error(\n                f\"Timeout processing media {original_media_url_for_error_logger}\"\n            )\n        except requests.exceptions.HTTPError as e:\n            logger.error(\n                f\"HTTP error {e.response.status_code} processing media {original_media_url_for_error_logger}: {e.response.reason}\"\n            )\n        except requests.exceptions.RequestException as e:\n            logger.error(\n                f\"RequestException processing media {original_media_url_for_error_logger}: {e}\"\n            )\n        except IOError as e:\n            logger.error(\n                f\"IOError processing media {original_media_url_for_error_logger}: {e}\"\n            )\n        except Exception as e:\n            logger.error(\n                f\"Unexpected error processing media {original_media_url_for_error_logger}: {e}\"\n            )\n        return None, original_media_url_for_error_logger\n\n    def _process_images_in_html(\n        self, html_content, base_url_for_relative, markdown_relative_image_folder\n    ):\n        logger.debug(\n            f\"Starting image processing. MD relative image folder: {markdown_relative_image_folder}\"\n        )\n        soup = BeautifulSoup(html_content, \"html.parser\")\n        for img_tag in soup.find_all(\"img\"):\n            original_src = img_tag.get(\"src\")\n            alt_text = img_tag.get(\"alt\", \"\").strip()\n            if not original_src:\n                img_tag.decompose()\n                continue\n            original_src = original_src.strip()\n            if not original_src:\n                img_tag.decompose()\n                continue\n            if original_src.startswith(\"cid:\"):\n                cid = original_src[4:]\n                if hasattr(self, \"mhtml_resources\") and cid in self.mhtml_resources:\n                    media_data, resource_filename_ext = self.mhtml_resources[cid]\n                    ext_from_mhtml = \"png\"\n                    if \".\" in resource_filename_ext:\n                        candidate_ext = resource_filename_ext.split(\".\")[-1].lower()\n                        if len(candidate_ext) <= 5 and candidate_ext.isalnum():\n                            ext_from_mhtml = candidate_ext\n                    unique_filename = f\"image_{uuid4().hex}.{ext_from_mhtml}\"\n                    absolute_filepath = os.path.join(\n                        self.current_image_absolute_path, unique_filename\n                    )\n                    markdown_path = os.path.join(\n                        markdown_relative_image_folder, unique_filename\n                    )\n                    try:\n                        with open(absolute_filepath, \"wb\") as f:\n                            f.write(media_data)\n                        img_tag[\"src\"] = markdown_path\n                        if not alt_text:\n                            alt_text = f\"Embedded image {unique_filename}\"\n                        img_tag[\"alt\"] = alt_text\n                    except IOError as e:\n                        img_tag.decompose()\n                else:\n                    img_tag.decompose()\n                continue\n            markdown_image_path, _ = self._download_media_file(\n                original_src,\n                base_url_for_relative,\n                self.current_image_absolute_path,\n                markdown_relative_image_folder,\n                media_type_prefixes=(\"image/\",),\n            )\n            if markdown_image_path:\n                img_tag[\"src\"] = markdown_image_path\n                if not alt_text:\n                    alt_text = (\n                        f\"Downloaded image {os.path.basename(markdown_image_path)}\"\n                    )\n                img_tag[\"alt\"] = alt_text\n            else:\n                img_tag.decompose()\n        logger.debug(\"Image processing finished.\")\n        return str(soup)\n\n    def _process_videos_in_html(\n        self,\n        html_content,\n        base_url_for_relative,\n        markdown_relative_video_folder,\n        markdown_relative_image_folder_for_poster,\n    ):\n        logger.debug(\n            f\"Starting video processing. MD video folder: {markdown_relative_video_folder}, MD poster folder: {markdown_relative_image_folder_for_poster}\"\n        )\n        soup = BeautifulSoup(html_content, \"html.parser\")\n        for video_tag in soup.find_all(\"video\"):\n            original_poster_src = video_tag.get(\"poster\")\n            if original_poster_src:\n                original_poster_src = original_poster_src.strip()\n                if original_poster_src:\n                    logger.info(f\"Processing poster for video: {original_poster_src}\")\n                    if (\n                        self.current_image_absolute_path\n                    ):  # Ensure image path is set for saving posters\n                        poster_md_path, _ = self._download_media_file(\n                            original_poster_src,\n                            base_url_for_relative,\n                            self.current_image_absolute_path,  # Save posters in the image asset directory\n                            markdown_relative_image_folder_for_poster,  # Use the image folder's relative path for MD link\n                            media_type_prefixes=(\"image/\",),\n                        )\n                        if poster_md_path:\n                            video_tag[\"poster\"] = poster_md_path\n                        else:\n                            if \"poster\" in video_tag.attrs:\n                                del video_tag[\"poster\"]\n                    else:\n                        logger.warning(\n                            f\"Cannot process poster {original_poster_src} as image asset path is not initialized.\"\n                        )\n            source_tags = video_tag.find_all(\"source\")\n            processed_source_successfully = False\n            if source_tags:\n                for source_tag in source_tags:\n                    original_src = source_tag.get(\"src\")\n                    if original_src:\n                        original_src = original_src.strip()\n                        if not original_src:\n                            continue\n                        if original_src.startswith(\"cid:\"):\n                            cid = original_src[4:]\n                            if (\n                                hasattr(self, \"mhtml_resources\")\n                                and cid in self.mhtml_resources\n                            ):\n                                media_data, resource_filename_ext = (\n                                    self.mhtml_resources[cid]\n                                )\n                                ext_from_mhtml = \"mp4\"\n                                if \".\" in resource_filename_ext:\n                                    candidate_ext = resource_filename_ext.split(\".\")[\n                                        -1\n                                    ].lower()\n                                    if (\n                                        len(candidate_ext) <= 5\n                                        and candidate_ext.isalnum()\n                                    ):\n                                        ext_from_mhtml = candidate_ext\n                                unique_filename = (\n                                    f\"video_{uuid4().hex}.{ext_from_mhtml}\"\n                                )\n                                absolute_filepath = os.path.join(\n                                    self.current_video_absolute_path, unique_filename\n                                )\n                                markdown_path = os.path.join(\n                                    markdown_relative_video_folder, unique_filename\n                                )\n                                try:\n                                    with open(absolute_filepath, \"wb\") as f:\n                                        f.write(media_data)\n                                    source_tag[\"src\"] = markdown_path\n                                    processed_source_successfully = True\n                                except IOError as e:\n                                    source_tag.decompose()\n                            else:\n                                source_tag.decompose()\n                            continue\n                        markdown_video_path, _ = self._download_media_file(\n                            original_src,\n                            base_url_for_relative,\n                            self.current_video_absolute_path,\n                            markdown_relative_video_folder,\n                            media_type_prefixes=(\"video/\", \"application/octet-stream\"),\n                        )\n                        if markdown_video_path:\n                            source_tag[\"src\"] = markdown_video_path\n                            processed_source_successfully = True\n                        else:\n                            source_tag.decompose()\n            original_video_src_attr = video_tag.get(\"src\")\n            if original_video_src_attr and not processed_source_successfully:\n                original_video_src_attr = original_video_src_attr.strip()\n                if original_video_src_attr:\n                    if original_video_src_attr.startswith(\"cid:\"):\n                        cid = original_video_src_attr[4:]\n                        if (\n                            hasattr(self, \"mhtml_resources\")\n                            and cid in self.mhtml_resources\n                        ):\n                            media_data, resource_filename_ext = self.mhtml_resources[\n                                cid\n                            ]\n                            ext_from_mhtml = \"mp4\"\n                            if \".\" in resource_filename_ext:\n                                candidate_ext = resource_filename_ext.split(\".\")[\n                                    -1\n                                ].lower()\n                                if len(candidate_ext) <= 5 and candidate_ext.isalnum():\n                                    ext_from_mhtml = candidate_ext\n                            unique_filename = f\"video_{uuid4().hex}.{ext_from_mhtml}\"\n                            absolute_filepath = os.path.join(\n                                self.current_video_absolute_path, unique_filename\n                            )\n                            markdown_path = os.path.join(\n                                markdown_relative_video_folder, unique_filename\n                            )\n                            try:\n                                with open(absolute_filepath, \"wb\") as f:\n                                    f.write(media_data)\n                                video_tag[\"src\"] = markdown_path\n                                processed_source_successfully = True\n                            except IOError as e:\n                                if \"src\" in video_tag.attrs:\n                                    del video_tag[\"src\"]\n                        else:\n                            if \"src\" in video_tag.attrs:\n                                del video_tag[\"src\"]\n                    else:\n                        markdown_video_path, _ = self._download_media_file(\n                            original_video_src_attr,\n                            base_url_for_relative,\n                            self.current_video_absolute_path,\n                            markdown_relative_video_folder,\n                            media_type_prefixes=(\"video/\", \"application/octet-stream\"),\n                        )\n                        if markdown_video_path:\n                            video_tag[\"src\"] = markdown_video_path\n                            processed_source_successfully = True\n                        else:\n                            if \"src\" in video_tag.attrs:\n                                del video_tag[\"src\"]\n\n            # If no video source was successfully processed, remove the entire video tag.\n            if not processed_source_successfully:\n                logger.warning(\n                    f\"Decomposing video tag as no downloadable sources were found.\"\n                )\n                video_tag.decompose()\n\n        logger.debug(\"Video processing finished.\")\n        return str(soup)\n\n    def _cleanup_markdown(self, markdown_text):\n        logger.debug(\"Starting Markdown cleanup.\")\n        markdown_text = re.sub(r\"\\[\\s*\\]\\(\\s*\\)\", \"\", markdown_text)\n        markdown_text = re.sub(r\"!\\[(.*?)\\]\\s+\\((.*?)\\)\", r\"![\\1](\\2)\", markdown_text)\n        markdown_text = re.sub(r\"\\[(.*?)\\]\\s+\\((.*?)\\)\", r\"[\\1](\\2)\", markdown_text)\n        markdown_text = re.sub(r\"\\n([*-+])(\\S)\", r\"\\n\\1 \\2\", markdown_text)\n        markdown_text = re.sub(r\"\\n(\\d+\\.)(\\S)\", r\"\\n\\1 \\2\", markdown_text)\n        markdown_text = re.sub(r\"!\\[\\s*\\]\\((.*?)\\)\", r\"![Image](\\1)\", markdown_text)\n        markdown_text = re.sub(r\"\\n{3,}\", \"\\n\\n\", markdown_text)\n        lines = markdown_text.splitlines()\n        stripped_lines = [line.strip() for line in lines]\n        markdown_text = \"\\n\".join(stripped_lines)\n        logger.debug(\"Markdown cleanup finished.\")\n        return markdown_text.strip()\n\n    def convert(self, source, output_filename_stem=None):\n        html_content = None\n        self.base_url = None\n        self.mhtml_resources = {}\n        self.source_html_filepath = None\n\n        if not output_filename_stem:\n            stem = os.path.splitext(os.path.basename(source))[0]\n            output_filename_stem = (\n                stem if stem else f\"file_conversion_{uuid4().hex[:8]}\"\n            )\n\n        logger.info(\n            f\"Starting conversion. Source: {source}, Type: html_file, Output stem: {output_filename_stem}\"\n        )\n\n        self.source_html_filepath = os.path.abspath(\n            source\n        )  # Store absolute path of source HTML\n        try:\n            with open(\n                self.source_html_filepath, \"r\", encoding=\"utf-8\", errors=\"replace\"\n            ) as f:\n                html_content = f.read()\n            self.base_url = (\n                Path(self.source_html_filepath).parent.as_uri() + \"/\"\n            )  # file:///path/to/containing_directory/\n        except FileNotFoundError:\n            logger.error(f\"HTML file not found: {source}\")\n            return None\n        except IOError as e:\n            logger.error(f\"Could not read HTML file {source}: {e}\")\n            return None\n        except Exception as e:\n            logger.error(f\"Unexpected error reading HTML file {source}: {e}\")\n            return None\n\n        if not html_content:\n            logger.error(f\"No HTML content to process from {source}.\")\n            return None\n\n        md_img_rel_folder = f\"{output_filename_stem}\"\n        self.current_image_absolute_path = os.path.join(\n            self.output_dir, md_img_rel_folder\n        )\n        md_vid_rel_folder = f\"{output_filename_stem}\"\n        self.current_video_absolute_path = os.path.join(\n            self.output_dir, md_vid_rel_folder\n        )\n        try:\n            os.makedirs(self.current_image_absolute_path, exist_ok=True)\n            os.makedirs(self.current_video_absolute_path, exist_ok=True)\n        except OSError as e:\n            logger.error(f\"Could not create asset directories: {e}\")\n            return None\n\n        logger.info(\"Cleaning HTML...\")\n        cleaned_html = self._clean_html(html_content)\n\n        logger.info(\"Processing and downloading images...\")\n        html_after_images = self._process_images_in_html(\n            cleaned_html, self.base_url, md_img_rel_folder\n        )\n        logger.info(\"Processing and downloading videos...\")\n        # Pass md_img_rel_folder for posters\n        html_after_videos = self._process_videos_in_html(\n            html_after_images, self.base_url, md_vid_rel_folder, md_img_rel_folder\n        )\n\n        logger.info(\"Converting HTML to Markdown...\")\n        try:\n            markdown_output = md(\n                html_after_videos,\n                heading_style=\"atx\",\n                bullets=\"-\",\n                default_title=False,\n                strip=[],\n            )\n        except Exception as e:\n            logger.error(f\"Error during Markdown conversion for {source}: {e}.\")\n            try:\n                markdown_output = md(\n                    html_after_images,\n                    heading_style=\"atx\",\n                    bullets=\"-\",\n                    default_title=False,\n                    strip=[],\n                )  # Fallback\n            except Exception as e2:\n                debug_html_path = os.path.join(\n                    self.output_dir, f\"{output_filename_stem}_debug_processed.html\"\n                )\n                try:\n                    with open(debug_html_path, \"w\", encoding=\"utf-8\") as f_debug:\n                        f_debug.write(html_after_videos)\n                except IOError:\n                    pass\n                return None\n\n        logger.info(\"Cleaning Markdown...\")\n        final_markdown = self._cleanup_markdown(markdown_output)\n        output_md_path = os.path.join(self.output_dir, f\"{output_filename_stem}.md\")\n        try:\n            with open(output_md_path, \"w\", encoding=\"utf-8\") as f:\n                f.write(final_markdown)\n            logger.info(f\"Markdown file saved to {output_md_path}\")\n            for asset_path in [\n                self.current_image_absolute_path,\n                self.current_video_absolute_path,\n            ]:\n                if os.path.exists(asset_path) and not os.listdir(asset_path):\n                    try:\n                        os.rmdir(asset_path)\n                    except OSError as e_rmdir:\n                        logger.warning(\n                            f\"Could not remove empty asset folder {asset_path}: {e_rmdir}\"\n                        )\n            return output_md_path\n        except IOError as e:\n            logger.error(f\"Could not write Markdown file {output_md_path}: {e}\")\n            return None\n        except Exception as e:\n            logger.error(\n                f\"Unexpected error writing Markdown file {output_md_path}: {e}\"\n            )\n            return None\n\n\ndef html_handler(input_file_name, doc_id, converter):\n    if os.path.exists(input_file_name):\n        md_path_local_html = converter.convert(\n            input_file_name,\n            output_filename_stem=doc_id,\n        )\n        if not md_path_local_html:\n            logger.warning(f\"Failed to convert local HTML: {input_file_name}\")\n    else:\n        logger.debug(f\"\\nLocal HTML test file not found at '{input_file_name}'.\")\n\n\ndef handler(cache_dir, file_or_url: str):\n    output_dir = f\"{cache_dir}\"\n\n    converter = HTML2MarkdownConverter(\n        output_dir=output_dir,\n        media_download_timeout=60,\n    )\n\n    doc_id = str(uuid4())\n\n    if file_or_url.endswith((\".html\", \".htm\")):\n        html_handler(file_or_url, doc_id, converter)\n    else:\n        logger.error(\n            f\"Unsupported file type: {file_or_url}. Only .html and .htm files are supported.\"\n        )\n        return None, None, None\n\n    return f\"{cache_dir}/{doc_id}.md\", f\"{cache_dir}/{doc_id}\", doc_id\n\n\nif __name__ == \"__main__\":\n\n    output_dir = \"/Users/tju/Library/Caches/bisheng\"\n    input_file = \"/Users/tju/Resources/docs/html/f.html\"\n\n    output_md, asset_dir, doc_id = handler(output_dir, input_file)\n    if output_md and os.path.exists(output_md):\n        print(f\"Markdown saved to: {output_md}\")\n    else:\n        print(\"Conversion failed.\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_from_pdf.py",
    "content": "import os\nimport threading\nfrom uuid import uuid4\n\nimport fitz\nfrom loguru import logger\n\npymu_lock = threading.Lock()\n\n\ndef convert_pdf_to_md(output_dir, pdf_path, doc_id):\n    \"\"\"\n    will specify the PDF Convert file to Markdown files and keep the contents in their original order.\n\n    This function extracts PDF Text, tables and pictures in and based on what they are on the page\n    Vertical position to sort and then consolidate to one Markdown in the file.\n    The image is saved as a separate file in the specified output directory.\n\n    Args:\n        pdf_path (str): Entered PDF FilePath\n        output_dir (str): SAVING Markdown A directory of files and pictures.\n    \"\"\"\n    # Make sure the output directory exists\n    if not os.path.exists(output_dir):\n        os.makedirs(output_dir)\n\n    md_filename = f\"{doc_id}.md\"\n    md_filepath = os.path.join(output_dir, md_filename)\n\n    img_dir = os.path.join(output_dir, f\"images\")\n    if not os.path.exists(img_dir):\n        os.makedirs(img_dir)\n\n    doc = None\n\n    try:\n        doc = fitz.open(pdf_path)\n    except Exception as e:\n        raise Exception('The file is damaged.')\n    try:\n        md_content = \"\"\n        image_counter = 1\n\n        for page_num in range(len(doc)):\n            with pymu_lock:\n                page = doc.load_page(page_num)\n\n                page_elements = []\n\n                tables = page.find_tables()\n                if tables.tables:\n                    for tab in tables.tables:\n                        if not tab.to_pandas().empty:\n                            md_table = tab.to_pandas().to_markdown(index=False)\n                            table_bbox = fitz.Rect(tab.bbox)\n                            page_elements.append(\n                                {\n                                    \"type\": \"table\",\n                                    \"bbox\": table_bbox,\n                                    \"content\": md_table,\n                                }\n                            )\n\n                image_info_list = page.get_image_info(xrefs=True)\n                if image_info_list:\n                    for img_info in image_info_list:\n                        xref = img_info[\"xref\"]\n                        if xref == 0:\n                            continue\n\n                        base_image = doc.extract_image(xref)\n                        if not base_image:\n                            continue\n\n                        image_bytes = base_image[\"image\"]\n                        image_ext = base_image[\"ext\"]\n\n                        img_filename = f\"image_{page_num + 1}_{image_counter}.{image_ext}\"\n                        img_path = os.path.join(img_dir, img_filename)\n\n                        with open(img_path, \"wb\") as img_file:\n                            img_file.write(image_bytes)\n\n                        md_image = f\"![{img_filename}]({img_dir}/{img_filename})\"\n\n                        image_bbox = fitz.Rect(img_info[\"bbox\"])\n                        page_elements.append(\n                            {\"type\": \"image\", \"bbox\": image_bbox, \"content\": md_image}\n                        )\n                        image_counter += 1\n\n                table_bboxes = (\n                    [fitz.Rect(tab.bbox) for tab in tables.tables]\n                    if tables.tables\n                    else []\n                )\n\n                text_blocks = page.get_text(\"blocks\")\n                for b in text_blocks:\n                    block_rect = fitz.Rect(b[:4])\n                    block_text = b[4].strip()\n\n                    is_in_table = False\n                    for table_bbox in table_bboxes:\n                        if block_rect.intersects(table_bbox):\n                            is_in_table = True\n                            break\n\n                    if block_text and not is_in_table:\n                        page_elements.append(\n                            {\"type\": \"text\", \"bbox\": block_rect, \"content\": block_text}\n                        )\n\n            page_elements.sort(key=lambda el: el[\"bbox\"].y0)\n\n            for elem in page_elements:\n                md_content += elem[\"content\"] + \"\\n\\n\"\n\n        with open(md_filepath, \"w\", encoding=\"utf-8\") as md_file:\n            md_file.write(md_content)\n\n    except Exception as e:\n        logger.exception(f\"Error processing pdf: {e}\")\n        raise Exception(f\"Document parsing failed: {str(e)[-100:]}\")  # Capture last100characters to avoid overly long error messages\n    finally:\n        with pymu_lock:\n            if doc:\n                doc.close()\n\n\ndef is_pdf_damaged(pdf_path: str) -> bool:\n    \"\"\"\n    Others PDF Whether the file is corrupt.\n\n    Args:\n        pdf_path (str): PDF Path of file\n\n    Returns:\n        bool: If the file is damaged, go back True; otherwise go back to False。\n    \"\"\"\n    try:\n        doc = fitz.open(pdf_path)\n        doc.close()\n        return False\n    except Exception as e:\n        logger.error(f\"PDF file is damaged: {e}\")\n        return True\n\n\ndef handler(cache_dir, file_or_url: str):\n    doc_id = uuid4()\n    ouput_dir = f\"{cache_dir}/{doc_id}\"\n    convert_pdf_to_md(ouput_dir, file_or_url, doc_id)\n    return f\"{ouput_dir}/{doc_id}.md\", f\"{ouput_dir}/images\", doc_id\n\n\ndef exec_thread_safe():\n    pdf_path = \"/Users/tju/Documents/Resources/pdf/bisheng/chen4.pdf\"\n    output_directory = \"/Users/tju/Desktop/output\"\n    md_file, local_image, doc_id = handler(output_directory, pdf_path)\n\n\nif __name__ == \"__main__\":\n    import multiprocessing\n\n    processes = []\n    for _ in range(10):\n        process = multiprocessing.Process(target=exec_thread_safe)\n        processes.append(process)\n        process.start()\n\n    for process in processes:\n        process.join()\n\n    threads = []\n    for i in range(4):\n        thread = threading.Thread(target=exec_thread_safe, name=f\"Thread-{i}\")\n        threads.append(thread)\n        thread.start()\n\n    for thread in threads:\n        thread.join()\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_from_pptx.py",
    "content": "from bisheng.pptx2md import convert, ConversionConfig\nfrom pathlib import Path\nfrom uuid import uuid4\n\n\ndef parser_pptx2md(\n    pptx_file: str,\n    md_file: str,\n    image_dir: str = None,\n):\n    \"\"\"\n    Convert a PowerPoint file to Markdown format.\n    Args:\n        pptx_file (str): Path to the PowerPoint file.\n        md_file (str): Path to the output Markdown file.\n        image_dir (str, optional): Directory to save images. Defaults to None\n    \"\"\"\n    # Basic usage\n    convert(\n        ConversionConfig(\n            pptx_path=Path(pptx_file),\n            output_path=Path(md_file),\n            image_dir=Path(image_dir),\n            disable_notes=True,\n        )\n    )\n\n\ndef handler(\n    cache_dir,\n    file_name,\n):\n    doc_id = str(uuid4())\n    md_file_name = f\"{cache_dir}/{doc_id}.md\"\n    image_dir = f\"{cache_dir}/{doc_id}\"\n    parser_pptx2md(\n        pptx_file=file_name,\n        md_file=md_file_name,\n        image_dir=image_dir,\n    )\n    # Image,Can be used asynchronously\n    # GantimdPicture path in file\n    return md_file_name, image_dir, doc_id\n\n\nif __name__ == \"__main__\":\n    pptx_file = \"/Users/tju/Resources/docs/ppt/you-lian.pptx\"\n    cache_dir = \"/Users/tju/Desktop\"\n\n    md_file_name, image_dir, doc_id = handler(cache_dir, pptx_file)\n    print(f\"Markdown file: {md_file_name}\")\n    print(f\"Image directory: {image_dir}\")\n    print(f\"Document ID: {doc_id}\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/md_post_processing.py",
    "content": "import html\nimport os\nimport re\n\nfrom bs4 import BeautifulSoup\n\n\ndef post_processing(file_path, retain_images=True):\n    \"\"\"\n    (Final full version)\n    Comprehensively combine oneMarkdownin the fileHTMLConvert tags to standardMarkdownFormat and process the picture correctly according to the parameters.\n    \"\"\"\n    try:\n        with open(file_path, \"r\", encoding=\"utf-8\") as file:\n            content = file.read()\n\n        # Step 1: Image Handling (Top Priority Execution)\n        if not retain_images:\n            # If the image is not preserved, delete the image in all formats globally before any conversion\n            content = re.sub(r\"<img[^>]*>\", \"\", content, flags=re.IGNORECASE)\n            content = re.sub(\n                r\"\\[!\\[.*?\\]\\(.*?\\)\\]\\(.*?\\)\", \"\", content, flags=re.DOTALL\n            )\n            content = re.sub(r\"!\\[.*?\\]\\(.*?\\)\", \"\", content, flags=re.DOTALL)\n        else:\n            # Convert only if image is preservedHTMLright of privacyimgTaggedMarkdownFormat\n            # Use a helper function to extractsrcAndalt\n            def _img_to_md(match):\n                img_tag = match.group(0)\n                src_match = re.search(r'src=\"([^\"]+)\"', img_tag, re.IGNORECASE)\n                alt_match = re.search(r'alt=\"([^\"]*)\"', img_tag, re.IGNORECASE)\n                src = src_match.group(1) if src_match else \"\"\n                alt = alt_match.group(1) if alt_match else \"\"\n                return f\"![{alt}]({src})\"\n\n            content = re.sub(r\"<img[^>]*>\", _img_to_md, content, flags=re.IGNORECASE)\n\n        # Step 2: ComplexityHTMLBlock Level Element Conversion (UseBeautifulSoupSupport)\n        def _table_to_md(match):\n            soup = BeautifulSoup(match.group(0), \"html.parser\")\n            headers = [\n                th.get_text(strip=True).replace(\"|\", r\"\\|\")\n                for th in soup.find_all(\"th\")\n            ]\n            if not headers:  # If no evidence of   microbial<th>, Try putting the first line<td>As table header\n                first_row = soup.find(\"tr\")\n                if not first_row:\n                    return \"\"\n                headers = [\n                    td.get_text(strip=True).replace(\"|\", r\"\\|\")\n                    for td in first_row.find_all(\"td\")\n                ]\n                rows_html = soup.find_all(\"tr\")[1:]\n            else:\n                rows_html = (\n                    soup.find(\"tbody\").find_all(\"tr\")\n                    if soup.find(\"tbody\")\n                    else soup.find_all(\"tr\")[1:]\n                )\n\n            if not headers:\n                return \"\"  # Empty forms\n\n            md_table = [\"| \" + \" | \".join(headers) + \" |\", \"|\" + \"---|\" * len(headers)]\n            for row in rows_html:\n                cols = [\n                    td.get_text(strip=True).replace(\"\\n\", \" \").replace(\"|\", r\"\\|\")\n                    for td in row.find_all(\"td\")\n                ]\n                # Fill the cell to match the header length\n                while len(cols) < len(headers):\n                    cols.append(\"\")\n                md_table.append(\"| \" + \" | \".join(cols) + \" |\")\n            return \"\\n\\n\" + \"\\n\".join(md_table) + \"\\n\\n\"\n\n        content = re.sub(\n            r\"<table[^>]*>.*?</table>\",\n            _table_to_md,\n            content,\n            flags=re.IGNORECASE | re.DOTALL,\n        )\n\n        # Step 3: Other block level and inlineHTMLTag transformation (Mainly using regular)\n\n        # Vertical (Simplify processing byul/ol/liConvert to unordered list)\n        content = re.sub(\n            r\"<li[^>]*>(.*?)</li>\", r\"\\n- \\1\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        content = re.sub(r\"</?(ul|ol)[^>]*>\", \"\", content, flags=re.IGNORECASE)\n        # Title h1-h6\n        content = re.sub(\n            r\"<h([1-6]).*?>(.*?)</h\\1>\",\n            lambda m: \"\\n\" + \"#\" * int(m.group(1)) + \" \" + m.group(2).strip() + \"\\n\",\n            content,\n            flags=re.IGNORECASE | re.DOTALL,\n        )\n        # Cite\n        content = re.sub(\n            r\"<blockquote[^>]*>(.*?)</blockquote>\",\n            lambda m: \"\\n> \" + m.group(1).strip().replace(\"\\n\", \"\\n> \") + \"\\n\",\n            content,\n            flags=re.IGNORECASE | re.DOTALL,\n        )\n        # Links\n        content = re.sub(\n            r'<a\\s+href=\"([^\"]+)\"[^>]*>(.*?)</a>',\n            r\"[\\2](\\1)\",\n            content,\n            flags=re.IGNORECASE | re.DOTALL,\n        )\n        # bolded\n        content = re.sub(\n            r\"<(strong|b)>(.*?)</\\1>\",\n            r\"**\\2**\",\n            content,\n            flags=re.IGNORECASE | re.DOTALL,\n        )\n        # Italic\n        content = re.sub(\n            r\"<(em|i)>(.*?)</\\1>\", r\"*\\2*\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        # Strikethrough\n        content = re.sub(\n            r\"<(del|s)>(.*?)</\\1>\", r\"~~\\2~~\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        # Subscript and superscript/Subscript\n        content = re.sub(\n            r\"<sup>(.*?)</sup>\", r\"^\\1^\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        content = re.sub(\n            r\"<sub>(.*?)</sub>\", r\"~\\1~\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        # Inline code\n        content = re.sub(\n            r\"<code>(.*?)</code>\", r\"`\\1`\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n        # Horizontal Line\n        content = re.sub(r\"<hr[^>]*>\", \"\\n---\\n\", content, flags=re.IGNORECASE)\n        # Line Wrap\n        content = re.sub(r\"<br\\s*/?>\", \"  \\n\", content, flags=re.IGNORECASE)\n        # Paragraphs (Convert to Line Break)\n        content = re.sub(r\"</p>\", \"\\n\", content, flags=re.IGNORECASE)\n        content = re.sub(r\"<p[^>]*>\", \"\\n\", content, flags=re.IGNORECASE)\n        # Span (Remove tags, keep content)\n        content = re.sub(\n            r\"<span[^>]*>(.*?)</span>\", r\"\\1\", content, flags=re.IGNORECASE | re.DOTALL\n        )\n\n        # Step 4: Final cleanup\n        content = html.unescape(content)  # Code BreakingHTMLEntity\n        content = re.sub(r\"\\n{3,}\", \"\\n\\n\", content.strip())  # Normalize Blank Rows\n\n        with open(file_path, \"w\", encoding=\"utf-8\") as file:\n            file.write(content)\n\n    except FileNotFoundError:\n        raise Exception(f\"Error-free: Doc. {file_path} Nothing found.\")\n    except Exception as e:\n        raise Exception(f\"Error processing file: {e}\")\n\n\nif __name__ == \"__main__\":\n    # --- Methods Used ---\n    # Please replace the path below with the one you want to process.mdActual path of the file\n    # markdown_file_to_process = \"/path/to/your/markdown_file.md\"\n    markdown_file_to_process = (\n        \"/Users/tju/Desktop/d40c526e-2081-49c3-9603-83132ce88978.md\"  # Example, please replace\n    )\n\n    if os.path.exists(markdown_file_to_process):\n        # Examples1: TukarHTMLand keep the image\n        post_processing(markdown_file_to_process, retain_images=True)\n\n        # Examples2: TukarHTMLand remove all images\n        # post_processing_revised(markdown_file_to_process, retain_images=False)\n    else:\n        print(f\"Please refer to the 'your_markdown_file.md' Replace with the real file path before running.\")\n"
  },
  {
    "path": "src/backend/bisheng/api/services/patch_130.py",
    "content": "import os\n\nfrom langchain_core.documents import Document\n\nfrom bisheng.api.services.md_from_docx import handler as docx_handler\nfrom bisheng.api.services.md_from_excel import handler as excel_handler\nfrom bisheng.api.services.md_from_html import handler as html_handler\nfrom bisheng.api.services.md_from_pdf import handler as pdf_handler\nfrom bisheng.api.services.md_from_pptx import handler as pptx_handler\nfrom bisheng.api.services.md_post_processing import post_processing\nfrom bisheng.core.cache.utils import CACHE_DIR\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\n\n\ndef combine_multiple_md_files_to_raw_texts(\n        path,\n) -> tuple[list[Document], list[Document]]:\n    \"\"\"\n    combine multiple md file to raw texts including meta-data list.\n    Args:\n        path: the directory containing the md files.\n    Returns:\n        0: split raw texts, each text is a Document object.\n        1: a single Document object containing all the texts combined.\n    \"\"\"\n\n    files = sorted([f for f in os.listdir(path)])\n    raw_texts = []\n\n    # A file corresponds to only one complete Document Objects, texts It is only after cuttingchunkContents\n    documents = [Document(page_content=\"\", metadata={})]\n\n    for file_name in files:\n        full_file_name = f\"{path}/{file_name}\"\n        with open(full_file_name, \"r\", encoding=\"utf-8\") as f:\n            content = f.read()\n            raw_texts.append(Document(page_content=content, metadata={}))\n            documents[0].page_content += content\n    return raw_texts, documents\n\n\ndef convert_file_to_md(\n        file_name,\n        input_file_name,\n        header_rows=[0, 1],\n        data_rows=10,\n        append_header=True,\n        knowledge_id=None,\n        retain_images=True,\n):\n    \"\"\"\n    The main function that handles file conversions.\n    Args:\n        file_name:\n        input_file_name:\n        header_rows:\n        data_rows:\n        append_header:\n        knowledge_id:\n    \"\"\"\n    file_name = file_name.lower()\n    md_file_name = None\n    local_image_dir = None\n    include_cache_dir = True\n    doc_id = None\n    if file_name.endswith(\".docx\") or file_name.endswith(\".doc\"):\n        md_file_name, local_image_dir, doc_id = docx_handler(CACHE_DIR, input_file_name)\n    elif file_name.endswith(\".pptx\") or file_name.endswith(\".ppt\"):\n        md_file_name, local_image_dir, doc_id = pptx_handler(CACHE_DIR, input_file_name)\n        include_cache_dir = False\n    elif (\n            file_name.endswith(\".xlsx\")\n            or file_name.endswith(\".xls\")\n            or file_name.endswith(\".csv\")\n    ):\n        md_file_name, local_image_dir, doc_id = excel_handler(\n            CACHE_DIR, input_file_name, header_rows, data_rows, append_header\n        )\n        local_image_dir = None\n        return md_file_name, local_image_dir, doc_id\n    elif (\n            file_name.endswith(\".html\")\n            or file_name.endswith(\".htm\")\n            or file_name.endswith(\".mhtml\")\n    ):\n        (\n            md_file_name,\n            local_image_dir,\n            doc_id,\n        ) = html_handler(CACHE_DIR, input_file_name)\n        include_cache_dir = False\n    elif file_name.endswith(\"pdf\"):\n        md_file_name, local_image_dir, doc_id = pdf_handler(CACHE_DIR, input_file_name)\n        include_cache_dir = True\n    else:\n        raise ValueError(f\"unsupported file type {file_name} for conversion to markdown.\")\n\n    return replace_image_url(\n        md_file_name,\n        local_image_dir,\n        doc_id,\n        include_cache_dir,\n        knowledge_id=knowledge_id,\n        retain_images=retain_images,\n    )\n\n\ndef replace_image_url(\n        md_file_name,\n        local_image_dir,\n        doc_id,\n        include_cache_dir,\n        knowledge_id=None,\n        retain_images=True,\n):\n    \"\"\"\n    Usage:\n        user the same bucket as origin file located.\n    Args:\n        md_file_name:\n        local_image_dir:\n        doc_id:\n        knowledge_id:\n            if the knowledge_id is None, this process will be interrupted,\n            because the image files wouldn't be put into minio\n    \"\"\"\n    from bisheng.api.services.knowledge_imp import KnowledgeUtils\n\n    minio_image_path = f\"/{get_minio_storage_sync().bucket}/{KnowledgeUtils.get_knowledge_file_image_dir(doc_id, knowledge_id)}\"\n    url_for_replacement = local_image_dir\n    if not include_cache_dir:\n        url_for_replacement = doc_id\n\n    if md_file_name and local_image_dir and doc_id:\n        with open(md_file_name, \"r\", encoding=\"utf-8\") as f:\n            content = f.read()\n        content = content.replace(url_for_replacement, minio_image_path)\n\n        with open(md_file_name, \"w\", encoding=\"utf-8\") as f:\n            f.write(content)\n    post_processing(md_file_name, retain_images)\n    return md_file_name, local_image_dir, doc_id\n"
  },
  {
    "path": "src/backend/bisheng/api/services/role_group_service.py",
    "content": "import asyncio\nimport json\nfrom datetime import datetime\nfrom typing import List, Any, Dict, Optional\n\nfrom fastapi import Request, HTTPException\nfrom fastapi.encoders import jsonable_encoder\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant import AssistantService\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.errcode.user import UserGroupNotDeleteError, AdminUserUpdateForbiddenError\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.database.constants import AdminRole\nfrom bisheng.database.models.assistant import AssistantDao\nfrom bisheng.database.models.flow import FlowDao, FlowType\nfrom bisheng.database.models.group import Group, GroupCreate, GroupDao, GroupRead, DefaultGroup\nfrom bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum\nfrom bisheng.database.models.role import RoleDao\nfrom bisheng.database.models.user_group import UserGroupCreate, UserGroupDao, UserGroupRead\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.telemetry_search.domain.services.dashboard import DashboardService\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao\nfrom bisheng.user.domain.models.user import User, UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import get_request_ip\n\n\nclass RoleGroupService():\n\n    def get_group_list(self, group_ids: List[int]) -> List[GroupRead]:\n        \"\"\"Get the full amountgroupVertical\"\"\"\n\n        # Inquirygroup\n        if group_ids:\n            groups = GroupDao.get_group_by_ids(group_ids)\n        else:\n            groups = GroupDao.get_all_group()\n        # Inquiryuser\n        user_admin = UserGroupDao.get_groups_admins([group.id for group in groups])\n        users_dict = {}\n        if user_admin:\n            user_ids = [user.user_id for user in user_admin]\n            users = UserDao.get_user_by_ids(user_ids)\n            users_dict = {user.user_id: user for user in users}\n\n        groupReads = [GroupRead.validate(group) for group in groups]\n        for group in groupReads:\n            group.group_admins = [\n                users_dict.get(user.user_id).model_dump() for user in user_admin\n                if user.group_id == group.id\n            ]\n        return groupReads\n\n    def create_group(self, request: Request, login_user: UserPayload, group: GroupCreate) -> Group:\n        \"\"\"Add Usergroup\"\"\"\n        group_admin = group.group_admins\n        group.create_user = login_user.user_id\n        group.update_user = login_user.user_id\n        group = GroupDao.insert_group(group)\n        if group_admin:\n            logger.info('set_admin group_admins={} group_id={}', group_admin, group.id)\n            self.set_group_admin(request, login_user, group_admin, group.id)\n        self.create_group_hook(request, login_user, group)\n        return group\n\n    def create_group_hook(self, request: Request, login_user: UserPayload, group: Group) -> bool:\n        \"\"\" New User Group Post Action \"\"\"\n        logger.info(f'act=create_group_hook user={login_user.user_name} group_id={group.id}')\n        # Log Audit Logs\n        AuditLogService.create_user_group(login_user, get_request_ip(request), group)\n        return True\n\n    def update_group(self, request: Request, login_user: UserPayload, group: Group) -> Group:\n        \"\"\"Update User\"\"\"\n        exist_group = GroupDao.get_user_group(group.id)\n        if not exist_group:\n            raise ValueError('User group does not exist')\n        exist_group.group_name = group.group_name\n        exist_group.remark = group.group_name\n        exist_group.update_user = login_user.user_id\n        exist_group.update_time = datetime.now()\n\n        group = GroupDao.update_group(exist_group)\n        self.update_group_hook(request, login_user, group)\n        return group\n\n    def update_group_hook(self, request: Request, login_user: UserPayload, group: Group):\n        logger.info(f'act=update_group_hook user={login_user.user_name} group_id={group.id}')\n        # Log Audit Logs\n        AuditLogService.update_user_group(login_user, get_request_ip(request), group)\n\n    def delete_group(self, request: Request, login_user: UserPayload, group_id: int):\n        \"\"\"Can delete existing usergroups\"\"\"\n        if group_id == DefaultGroup:\n            raise HTTPException(status_code=500, detail='Default group cannot be deleted')\n        group_info = GroupDao.get_user_group(group_id)\n        if not group_info:\n            return resp_200()\n\n        # Determine if there are still users in the group\n        user_group_list = UserGroupDao.get_group_user(group_id)\n        if user_group_list:\n            return UserGroupNotDeleteError.return_resp()\n        GroupDao.delete_group(group_id)\n        self.delete_group_hook(request, login_user, group_info)\n        return resp_200()\n\n    def delete_group_hook(self, request: Request, login_user: UserPayload, group_info: Group):\n        logger.info(f'act=delete_group_hook user={login_user.user_name} group_id={group_info.id}')\n        # Log Audit Logs\n        AuditLogService.delete_user_group(login_user, get_request_ip(request), group_info)\n        # Move resources under a group to the default user group\n        # Get all resources under a group\n        all_resource = GroupResourceDao.get_group_all_resource(group_info.id)\n        need_move_resource = []\n        for one in all_resource:\n            # Getting resources belongs to several groups,If you belong to more than one group, you don't have, Otherwise, transfer the resource to the default user group\n            resource_groups = GroupResourceDao.get_resource_group(ResourceTypeEnum(one.type), one.third_id)\n            if len(resource_groups) > 1:\n                continue\n            else:\n                one.group_id = DefaultGroup\n                need_move_resource.append(one)\n        if need_move_resource:\n            GroupResourceDao.update_group_resource(need_move_resource)\n        GroupResourceDao.delete_group_resource_by_group_id(group_info.id)\n        # Delete role list under user group\n        RoleDao.delete_role_by_group_id(group_info.id)\n        # Delete administrators of user groups\n        UserGroupDao.delete_group_all_admin(group_info.id)\n        # Send delete event toredisQueued\n        delete_message = json.dumps({\"id\": group_info.id})\n        redis_client = get_redis_client_sync()\n        redis_client.rpush('delete_group', delete_message, expiration=86400)\n        redis_client.publish('delete_group', delete_message)\n\n    def get_group_user_list(self, group_id: int, page_size: int, page_num: int) -> List[User]:\n        \"\"\"Get the full amountgroupVertical\"\"\"\n\n        # Inquiryuser\n        user_group_list = UserGroupDao.get_group_user(group_id, page_size, page_num)\n        if user_group_list:\n            user_ids = [user.user_id for user in user_group_list]\n            return UserDao.get_user_by_ids(user_ids)\n\n        return None\n\n    def insert_user_group(self, user_group: UserGroupCreate) -> UserGroupRead:\n        \"\"\"Insert User Group\"\"\"\n\n        user_groups = UserGroupDao.get_user_group(user_group.user_id)\n        if user_groups and user_group.group_id in [ug.group_id for ug in user_groups]:\n            raise ValueError('Duplicate setup user group')\n\n        return UserGroupDao.insert_user_group(user_group)\n\n    def replace_user_groups(self, request: Request, login_user: UserPayload, user_id: int, group_ids: List[int]):\n        \"\"\" Overwrite the user group the user belongs to \"\"\"\n        # Determine if the Operated User is a Super Admin\n        user_role_list = UserRoleDao.get_user_roles(user_id)\n        if any(one.role_id == AdminRole for one in user_role_list):\n            raise AdminUserUpdateForbiddenError()\n\n        # Get all previous groupings of users\n        old_group = UserGroupDao.get_user_group(user_id)\n        old_group = [one.group_id for one in old_group]\n        if not login_user.is_admin():\n            # Get Operator Managed Groups\n            admin_group = UserGroupDao.get_user_admin_group(login_user.user_id)\n            admin_group = [one.group_id for one in admin_group]\n            # Filter the group where the operator is located, only groups with permission management are processed\n            old_group = [one for one in old_group if one in admin_group]\n            # Describe this user Not in a user group administered by this user group administrator\n            if not old_group:\n                raise UnAuthorizedError()\n        need_delete_group = old_group.copy()\n        need_add_group = []\n        for one in group_ids:\n            if one not in old_group:\n                # User groups to join\n                need_add_group.append(one)\n            else:\n                # Remaining in the old user group is the user group to be moved out\n                need_delete_group.remove(one)\n        if need_delete_group:\n            UserGroupDao.delete_user_groups(user_id, need_delete_group)\n        if need_add_group:\n            UserGroupDao.add_user_groups(user_id, need_add_group)\n\n        # Log Audit Logs\n        group_infos = GroupDao.get_group_by_ids(old_group + group_ids)\n        group_dict: Dict[int, str] = {}\n        for one in group_infos:\n            group_dict[one.id] = one.group_name\n        note = \"Pre-edit user groups:\"\n        for one in old_group:\n            note += f'{group_dict.get(one, one)}、'\n        note = note.rstrip('、')\n        note += \"Post-edit user groups:\"\n        for one in group_ids:\n            note += f'{group_dict.get(one, one)}、'\n        note = note.rstrip('、')\n        AuditLogService.update_user(login_user, get_request_ip(request), user_id, list(group_dict.keys()), note)\n        return None\n\n    def get_user_groups_list(self, user_id: int) -> List[GroupRead]:\n        \"\"\"Get a list of user groups\"\"\"\n        user_groups = UserGroupDao.get_user_group(user_id)\n        if not user_groups:\n            return []\n        group_ids = [ug.group_id for ug in user_groups]\n        return GroupDao.get_group_by_ids(group_ids)\n\n    def set_group_admin(self, request: Request, login_user: UserPayload, user_ids: List[int], group_id: int):\n        \"\"\"Set up user group administrators\"\"\"\n        # Get the list of administrators of the current user group\n        user_group_admins = UserGroupDao.get_groups_admins([group_id])\n        res = []\n        need_delete_admin = []\n        need_add_admin = user_ids\n        if user_group_admins:\n            for user in user_group_admins:\n                if user.user_id in need_add_admin:\n                    res.append(user)\n                    need_add_admin.remove(user.user_id)\n                else:\n                    need_delete_admin.append(user.user_id)\n        if need_add_admin:\n            # Users who are not in the group can be assigned as administrators. Do user creation\n            for user_id in need_add_admin:\n                res.append(UserGroupDao.insert_user_group_admin(user_id, group_id))\n        if need_delete_admin:\n            UserGroupDao.delete_group_admins(group_id, need_delete_admin)\n        # Modified by the most recent modifier for the user group\n        GroupDao.update_group_update_user(group_id, login_user.user_id)\n\n        group_info = GroupDao.get_user_group(group_id)\n        self.update_group_hook(request, login_user, group_info)\n        return res\n\n    def set_group_update_user(self, login_user: UserPayload, group_id: int):\n        \"\"\"Set up user group administrators\"\"\"\n        GroupDao.update_group_update_user(group_id, login_user.user_id)\n\n    async def get_group_resources(self, group_id: int, resource_type: ResourceTypeEnum, name: str,\n                                  page_size: int, page_num: int) -> (List[Any], int):\n        \"\"\" Get resources under user \"\"\"\n        if resource_type.value == ResourceTypeEnum.FLOW.value:\n            return await asyncio.to_thread(self.get_group_flow, group_id, name, page_size, page_num)\n        elif resource_type.value == ResourceTypeEnum.KNOWLEDGE.value:\n            return await asyncio.to_thread(self.get_group_knowledge, group_id, name, page_size, page_num)\n        elif resource_type.value == ResourceTypeEnum.WORK_FLOW.value:\n            return await asyncio.to_thread(self.get_group_flow, group_id, name, page_size, page_num, FlowType.WORKFLOW)\n        elif resource_type.value == ResourceTypeEnum.ASSISTANT.value:\n            return await asyncio.to_thread(self.get_group_assistant, group_id, name, page_size, page_num)\n        elif resource_type.value == ResourceTypeEnum.GPTS_TOOL.value:\n            return await asyncio.to_thread(self.get_group_tool, group_id, name, page_size, page_num)\n        elif resource_type.value == ResourceTypeEnum.DASHBOARD.value:\n            return await self.get_group_dashboards(group_id, name, page_size, page_num)\n        logger.warning('not support resource type: %s', resource_type)\n        return [], 0\n\n    def get_user_map(self, user_ids: set[int]):\n        user_list = UserDao.get_user_by_ids(list(user_ids))\n        user_map = {user.user_id: user.user_name for user in user_list}\n        return user_map\n\n    async def aget_user_map(self, user_ids: set[int]):\n        user_list = await UserDao.aget_user_by_ids(list(user_ids))\n        user_map = {user.user_id: user.user_name for user in user_list}\n        return user_map\n\n    def get_group_flow(self, group_id: int, keyword: str, page_size: int, page_num: int,\n                       flow_type: Optional[FlowType] = None) -> (List[Any], int):\n        \"\"\" Get a list of knowledge bases under user groups \"\"\"\n        # Query skills under user groupsIDVertical\n        rs_type = ResourceTypeEnum.FLOW\n        if flow_type == FlowType.WORKFLOW:\n            rs_type = ResourceTypeEnum.WORK_FLOW\n        resource_list = GroupResourceDao.get_group_resource(group_id, rs_type)\n        if not resource_list:\n            return [], 0\n        res = []\n        flow_ids = [resource.third_id for resource in resource_list]\n        flow_type_value = flow_type.value if flow_type else FlowType.FLOW.value\n        data, total = FlowDao.filter_flows_by_ids(flow_ids, keyword, page_num, page_size, flow_type_value)\n        db_user_ids = {one.user_id for one in data}\n        user_map = self.get_user_map(db_user_ids)\n        for one in data:\n            one_dict = jsonable_encoder(one)\n            one_dict[\"user_name\"] = user_map.get(one.user_id, one.user_id)\n            res.append(one_dict)\n\n        return res, total\n\n    def get_group_knowledge(self, group_id: int, keyword: str, page_size: int, page_num: int) -> (List[Any], int):\n        \"\"\" Get a list of knowledge bases under user groups \"\"\"\n        # Query Knowledge Base under User GroupsIDVertical\n        resource_list = GroupResourceDao.get_group_resource(group_id, ResourceTypeEnum.KNOWLEDGE)\n        if not resource_list:\n            return [], 0\n        res = []\n        knowledge_ids = [int(resource.third_id) for resource in resource_list]\n        # Query Knowledge Base\n        data, total = KnowledgeDao.filter_knowledge_by_ids(knowledge_ids, keyword, page_num, page_size)\n        db_user_ids = {one.user_id for one in data}\n        user_map = self.get_user_map(db_user_ids)\n        for one in data:\n            one_dict = jsonable_encoder(one)\n            one_dict[\"user_name\"] = user_map.get(one.user_id, one.user_id)\n            res.append(one_dict)\n        return res, total\n\n    def get_group_assistant(self, group_id: int, keyword: str, page_size: int, page_num: int) -> (List[Any], int):\n        \"\"\" Get a list of helpers under a user group \"\"\"\n        # Query Assistant under User GroupsIDVertical\n        resource_list = GroupResourceDao.get_group_resource(group_id, ResourceTypeEnum.ASSISTANT)\n        if not resource_list:\n            return [], 0\n        res = []\n        assistant_ids = [resource.third_id for resource in resource_list]  # Query Assistant\n        data, total = AssistantDao.filter_assistant_by_id(assistant_ids, keyword, page_num, page_size)\n        for one in data:\n            simple_one = AssistantService.return_simple_assistant_info(one)\n            res.append(simple_one)\n        return res, total\n\n    def get_group_tool(self, group_id: int, keyword: str, page_size: int, page_num: int) -> (List[Any], int):\n        \"\"\" Get a list of tools under user groups \"\"\"\n        # Query Tools under User GroupsIDVertical\n        resource_list = GroupResourceDao.get_group_resource(group_id, ResourceTypeEnum.GPTS_TOOL)\n        if not resource_list:\n            return [], 0\n        res = []\n        tool_ids = [int(resource.third_id) for resource in resource_list]\n        # Query Tools\n        data, total = GptsToolsDao.filter_tool_types_by_ids(tool_ids, keyword, page_num, page_size)\n        db_user_ids = {one.user_id for one in data}\n        user_map = self.get_user_map(db_user_ids)\n        for one in data:\n            one_dict = jsonable_encoder(one)\n            one_dict[\"user_name\"] = user_map.get(one.user_id, one.user_id)\n            res.append(one_dict)\n        return res, total\n\n    async def get_group_dashboards(self, group_id: int, keyword: str, page_size: int, page_num: int) -> (List[Any],\n                                                                                                         int):\n\n        \"\"\" Get a list of dashboards under a user group \"\"\"\n        # Query the dashboard under the user groupIDVertical\n        resource_list = await GroupResourceDao.aget_group_resources(group_id=group_id,\n                                                                    resource_type=ResourceTypeEnum.DASHBOARD)\n        if not resource_list:\n            return [], 0\n        res = []\n        dashboard_ids = [int(resource.third_id) for resource in resource_list]\n        # Query Dashboard\n        data = await DashboardService.get_simple_dashboards(keyword=keyword, filter_ids=dashboard_ids)\n\n        user_map = await self.aget_user_map(set([one.user_id for one in data]))\n        for one in data:\n            one_dict = one.model_dump(exclude={\"layout_config\", \"style_config\"})\n            one_dict[\"name\"] = one.title\n            one_dict[\"user_name\"] = user_map.get(one.user_id, one.user_id)\n            res.append(one_dict)\n        if page_size and page_num:\n            start_index = (page_num - 1) * page_size\n            end_index = start_index + page_size\n            paged_res = res[start_index:end_index]\n            return paged_res, len(res)\n        return res, len(res)\n\n    async def get_manage_resources(self, login_user: UserPayload, keyword: str, page: int, page_size: int) -> (list, int):\n        \"\"\" Get a list of apps under a user group managed by a user Contains skills, assistants, workflows\"\"\"\n        groups = []\n        if not login_user.is_admin():\n            groups = [str(one.group_id) for one in await UserGroupDao.aget_user_admin_group(login_user.user_id)]\n            if not groups:\n                return [], 0\n\n        resource_ids = []\n        # Description is a user group administrator, need to filter to get the resources under the corresponding group\n        if groups:\n            group_resources = await GroupResourceDao.get_groups_resource(groups, resource_types=[ResourceTypeEnum.FLOW,\n                                                                                           ResourceTypeEnum.ASSISTANT,\n                                                                                           ResourceTypeEnum.WORK_FLOW])\n            if not group_resources:\n                return [], 0\n            resource_ids = [one.third_id for one in group_resources]\n\n        return await FlowDao.aget_all_apps(keyword, id_list=resource_ids, page=page, limit=page_size)\n"
  },
  {
    "path": "src/backend/bisheng/api/services/tag.py",
    "content": "import json\nfrom typing import List\n\nfrom fastapi import Request\nfrom loguru import logger\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError\nfrom bisheng.common.errcode.tag import TagExistError, TagNotExistError\nfrom bisheng.common.models.config import ConfigDao, ConfigKeyEnum, Config\nfrom bisheng.database.models.assistant import AssistantDao\nfrom bisheng.database.models.flow import FlowDao\nfrom bisheng.database.models.group_resource import ResourceTypeEnum, GroupResourceDao\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.database.models.tag import TagDao, Tag, TagLink\n\n\nclass TagService:\n\n    @classmethod\n    def get_all_tag(cls,\n                    request: Request,\n                    login_user: UserPayload,\n                    keyword: str = None, page: int = 0, limit: int = 10) -> (List[Tag], int):\n        \"\"\" Get all tags \"\"\"\n        result = TagDao.search_tags(keyword, page, limit)\n        return result, TagDao.count_tags(keyword)\n\n    @classmethod\n    def create_tag(cls,\n                   request: Request,\n                   login_user: UserPayload,\n                   name: str) -> Tag:\n        # Query if there is a renaming of the label name\n        exist_tag = TagDao.get_tag_by_name(name)\n        if exist_tag:\n            raise TagExistError.http_exception()\n        new_tag = Tag(name=name, user_id=login_user.user_id)\n        new_tag = TagDao.insert_tag(new_tag)\n        return new_tag\n\n    @classmethod\n    def update_tag(cls,\n                   request: Request,\n                   login_user: UserPayload,\n                   tag_id: int,\n                   name: str) -> Tag:\n        tag_info = TagDao.get_tag_by_id(tag_id)\n        if not tag_info:\n            raise TagNotExistError.http_exception()\n        # Query if there is a renaming of the label name\n        exist_tag = TagDao.get_tag_by_name(name)\n        if exist_tag and exist_tag.id != tag_id:\n            raise TagExistError.http_exception()\n\n        tag_info.name = name\n        new_tag = TagDao.insert_tag(tag_info)\n        return new_tag\n\n    @classmethod\n    def delete_tag(cls,\n                   request: Request,\n                   login_user: UserPayload,\n                   tag_id: int) -> bool:\n        \"\"\" NO NAME SPACE NO KEY VALUE!! \"\"\"\n        return TagDao.delete_tag(tag_id)\n\n    @classmethod\n    def check_tag_link_permission(cls,\n                                  request: Request,\n                                  login_user: UserPayload,\n                                  resource_id: str,\n                                  resource_type: ResourceTypeEnum) -> bool:\n        \"\"\" Check if labeling of resources is allowed \"\"\"\n        if login_user.is_admin():\n            return True\n        resource_info = None\n        access_type: AccessType\n        if resource_type == ResourceTypeEnum.ASSISTANT:\n            resource_info = AssistantDao.get_one_assistant(resource_id)\n            access_type = AccessType.ASSISTANT_WRITE\n        elif resource_type == ResourceTypeEnum.FLOW:\n            resource_info = FlowDao.get_flow_by_id(resource_id)\n            access_type = AccessType.FLOW_WRITE\n        elif resource_type == ResourceTypeEnum.WORK_FLOW:\n            resource_info = FlowDao.get_flow_by_id(resource_id)\n            access_type = AccessType.WORKFLOW_WRITE\n        else:\n            raise NotFoundError()\n        if not resource_info:\n            raise NotFoundError()\n\n        if login_user.access_check(resource_info.user_id, resource_id, access_type):\n            return True\n\n        # Get user groups to which the resource belongs\n        resource_groups = GroupResourceDao.get_resource_group(resource_type, resource_id)\n        resource_groups = [int(one.group_id) for one in resource_groups]\n        # Determine if the operator under is an administrator of a user group\n        if not login_user.check_groups_admin(resource_groups):\n            raise UnAuthorizedError()\n\n        return True\n\n    @classmethod\n    def create_tag_link(cls,\n                        request: Request,\n                        login_user: UserPayload,\n                        tag_id: int,\n                        resource_id: str,\n                        resource_type: ResourceTypeEnum) -> TagLink:\n        \"\"\" Associate resources with tags \"\"\"\n        cls.check_tag_link_permission(request, login_user, resource_id, resource_type)\n\n        new_link = TagLink(tag_id=tag_id, resource_id=resource_id, resource_type=resource_type.value,\n                           user_id=login_user.user_id)\n        try:\n            new_link = TagDao.insert_tag_link(new_link)\n        except Exception as e:\n            logger.error(f'tag_link_error: {e}')\n            raise TagExistError.http_exception()\n        return new_link\n\n    @classmethod\n    def delete_tag_link(cls,\n                        request: Request,\n                        login_user: UserPayload,\n                        tag_id: int,\n                        resource_id: str,\n                        resource_type: ResourceTypeEnum) -> bool:\n        \"\"\" Remove association of resources and tags \"\"\"\n        cls.check_tag_link_permission(request, login_user, resource_id, resource_type)\n\n        return TagDao.delete_resource_tag(tag_id, resource_id, resource_type)\n\n    @classmethod\n    def get_home_tag(cls,\n                     request: Request,\n                     login_user: UserPayload) -> List[Tag]:\n        \"\"\" Get a list of tags to show on the homepage \"\"\"\n        home_tags = ConfigDao.get_config(ConfigKeyEnum.HOME_TAGS)\n        if not home_tags:\n            return []\n        home_tags = json.loads(home_tags.value)\n        tags = TagDao.get_tags_by_ids(home_tags)\n\n        tags = sorted(tags, key=lambda x: home_tags.index(x.id))\n        return tags\n\n    @classmethod\n    def update_home_tag(cls,\n                        request: Request,\n                        login_user: UserPayload,\n                        tag_ids: List[int]) -> bool:\n        \"\"\" Update the list of tags displayed on the homepage \"\"\"\n        home_tags = ConfigDao.get_config(ConfigKeyEnum.HOME_TAGS)\n        if not home_tags:\n            home_tags = Config(key=ConfigKeyEnum.HOME_TAGS.value, value=json.dumps(tag_ids))\n        else:\n            home_tags.value = json.dumps(tag_ids)\n\n        ConfigDao.insert_config(home_tags)\n        return True\n"
  },
  {
    "path": "src/backend/bisheng/api/services/tiktoken_file/cl100k_base.tiktoken",
    "content": "IQ== 0\nIg== 1\nIw== 2\nJA== 3\nJQ== 4\nJg== 5\nJw== 6\nKA== 7\nKQ== 8\nKg== 9\nKw== 10\nLA== 11\nLQ== 12\nLg== 13\nLw== 14\nMA== 15\nMQ== 16\nMg== 17\nMw== 18\nNA== 19\nNQ== 20\nNg== 21\nNw== 22\nOA== 23\nOQ== 24\nOg== 25\nOw== 26\nPA== 27\nPQ== 28\nPg== 29\nPw== 30\nQA== 31\nQQ== 32\nQg== 33\nQw== 34\nRA== 35\nRQ== 36\nRg== 37\nRw== 38\nSA== 39\nSQ== 40\nSg== 41\nSw== 42\nTA== 43\nTQ== 44\nTg== 45\nTw== 46\nUA== 47\nUQ== 48\nUg== 49\nUw== 50\nVA== 51\nVQ== 52\nVg== 53\nVw== 54\nWA== 55\nWQ== 56\nWg== 57\nWw== 58\nXA== 59\nXQ== 60\nXg== 61\nXw== 62\nYA== 63\nYQ== 64\nYg== 65\nYw== 66\nZA== 67\nZQ== 68\nZg== 69\nZw== 70\naA== 71\naQ== 72\nag== 73\naw== 74\nbA== 75\nbQ== 76\nbg== 77\nbw== 78\ncA== 79\ncQ== 80\ncg== 81\ncw== 82\ndA== 83\ndQ== 84\ndg== 85\ndw== 86\neA== 87\neQ== 88\neg== 89\new== 90\nfA== 91\nfQ== 92\nfg== 93\noQ== 94\nog== 95\now== 96\npA== 97\npQ== 98\npg== 99\npw== 100\nqA== 101\nqQ== 102\nqg== 103\nqw== 104\nrA== 105\nrg== 106\nrw== 107\nsA== 108\nsQ== 109\nsg== 110\nsw== 111\ntA== 112\ntQ== 113\ntg== 114\ntw== 115\nuA== 116\nuQ== 117\nug== 118\nuw== 119\nvA== 120\nvQ== 121\nvg== 122\nvw== 123\nwA== 124\nwQ== 125\nwg== 126\nww== 127\nxA== 128\nxQ== 129\nxg== 130\nxw== 131\nyA== 132\nyQ== 133\nyg== 134\nyw== 135\nzA== 136\nzQ== 137\nzg== 138\nzw== 139\n0A== 140\n0Q== 141\n0g== 142\n0w== 143\n1A== 144\n1Q== 145\n1g== 146\n1w== 147\n2A== 148\n2Q== 149\n2g== 150\n2w== 151\n3A== 152\n3Q== 153\n3g== 154\n3w== 155\n4A== 156\n4Q== 157\n4g== 158\n4w== 159\n5A== 160\n5Q== 161\n5g== 162\n5w== 163\n6A== 164\n6Q== 165\n6g== 166\n6w== 167\n7A== 168\n7Q== 169\n7g== 170\n7w== 171\n8A== 172\n8Q== 173\n8g== 174\n8w== 175\n9A== 176\n9Q== 177\n9g== 178\n9w== 179\n+A== 180\n+Q== 181\n+g== 182\n+w== 183\n/A== 184\n/Q== 185\n/g== 186\n/w== 187\nAA== 188\nAQ== 189\nAg== 190\nAw== 191\nBA== 192\nBQ== 193\nBg== 194\nBw== 195\nCA== 196\nCQ== 197\nCg== 198\nCw== 199\nDA== 200\nDQ== 201\nDg== 202\nDw== 203\nEA== 204\nEQ== 205\nEg== 206\nEw== 207\nFA== 208\nFQ== 209\nFg== 210\nFw== 211\nGA== 212\nGQ== 213\nGg== 214\nGw== 215\nHA== 216\nHQ== 217\nHg== 218\nHw== 219\nIA== 220\nfw== 221\ngA== 222\ngQ== 223\ngg== 224\ngw== 225\nhA== 226\nhQ== 227\nhg== 228\nhw== 229\niA== 230\niQ== 231\nig== 232\niw== 233\njA== 234\njQ== 235\njg== 236\njw== 237\nkA== 238\nkQ== 239\nkg== 240\nkw== 241\nlA== 242\nlQ== 243\nlg== 244\nlw== 245\nmA== 246\nmQ== 247\nmg== 248\nmw== 249\nnA== 250\nnQ== 251\nng== 252\nnw== 253\noA== 254\nrQ== 255\nICA= 256\nICAgIA== 257\naW4= 258\nIHQ= 259\nICAgICAgICA= 260\nZXI= 261\nICAg 262\nb24= 263\nIGE= 264\ncmU= 265\nYXQ= 266\nc3Q= 267\nZW4= 268\nb3I= 269\nIHRo 270\nCgo= 271\nIGM= 272\nbGU= 273\nIHM= 274\naXQ= 275\nYW4= 276\nYXI= 277\nYWw= 278\nIHRoZQ== 279\nOwo= 280\nIHA= 281\nIGY= 282\nb3U= 283\nID0= 284\naXM= 285\nICAgICAgIA== 286\naW5n 287\nZXM= 288\nIHc= 289\naW9u 290\nZWQ= 291\naWM= 292\nIGI= 293\nIGQ= 294\nZXQ= 295\nIG0= 296\nIG8= 297\nCQk= 298\ncm8= 299\nYXM= 300\nZWw= 301\nY3Q= 302\nbmQ= 303\nIGlu 304\nIGg= 305\nZW50 306\naWQ= 307\nIG4= 308\nYW0= 309\nICAgICAgICAgICA= 310\nIHRv 311\nIHJl 312\nLS0= 313\nIHs= 314\nIG9m 315\nb20= 316\nKTsK 317\naW0= 318\nDQo= 319\nICg= 320\naWw= 321\nLy8= 322\nIGFuZA== 323\ndXI= 324\nc2U= 325\nIGw= 326\nZXg= 327\nIFM= 328\nYWQ= 329\nICI= 330\nY2g= 331\ndXQ= 332\naWY= 333\nKio= 334\nIH0= 335\nZW0= 336\nb2w= 337\nICAgICAgICAgICAgICAgIA== 338\ndGg= 339\nKQo= 340\nIHsK 341\nIGc= 342\naWc= 343\naXY= 344\nLAo= 345\nY2U= 346\nb2Q= 347\nIHY= 348\nYXRl 349\nIFQ= 350\nYWc= 351\nYXk= 352\nICo= 353\nb3Q= 354\ndXM= 355\nIEM= 356\nIHN0 357\nIEk= 358\ndW4= 359\ndWw= 360\ndWU= 361\nIEE= 362\nb3c= 363\nICc= 364\nZXc= 365\nIDw= 366\nYXRpb24= 367\nKCk= 368\nIGZvcg== 369\nYWI= 370\nb3J0 371\ndW0= 372\nYW1l 373\nIGlz 374\ncGU= 375\ndHI= 376\nY2s= 377\n4oA= 378\nIHk= 379\naXN0 380\nLS0tLQ== 381\nLgoK 382\naGU= 383\nIGU= 384\nbG8= 385\nIE0= 386\nIGJl 387\nZXJz 388\nIG9u 389\nIGNvbg== 390\nYXA= 391\ndWI= 392\nIFA= 393\nICAgICAgICAgICAgICAg 394\nYXNz 395\naW50 396\nPgo= 397\nbHk= 398\ndXJu 399\nICQ= 400\nOwoK 401\nYXY= 402\ncG9ydA== 403\naXI= 404\nLT4= 405\nbnQ= 406\nY3Rpb24= 407\nZW5k 408\nIGRl 409\nMDA= 410\naXRo 411\nb3V0 412\ndHVybg== 413\nb3Vy 414\nICAgICA= 415\nbGlj 416\ncmVz 417\ncHQ= 418\nPT0= 419\nIHRoaXM= 420\nIHdo 421\nIGlm 422\nIEQ= 423\ndmVy 424\nYWdl 425\nIEI= 426\naHQ= 427\nZXh0 428\nPSI= 429\nIHRoYXQ= 430\nKioqKg== 431\nIFI= 432\nIGl0 433\nZXNz 434\nIEY= 435\nIHI= 436\nb3M= 437\nYW5k 438\nIGFz 439\nZWN0 440\na2U= 441\ncm9t 442\nIC8v 443\nY29u 444\nIEw= 445\nKCI= 446\ncXU= 447\nbGFzcw== 448\nIHdpdGg= 449\naXo= 450\nZGU= 451\nIE4= 452\nIGFs 453\nb3A= 454\ndXA= 455\nZ2V0 456\nIH0K 457\naWxl 458\nIGFu 459\nYXRh 460\nb3Jl 461\ncmk= 462\nIHBybw== 463\nOw0K 464\nCQkJCQ== 465\ndGVy 466\nYWlu 467\nIFc= 468\nIEU= 469\nIGNvbQ== 470\nIHJldHVybg== 471\nYXJ0 472\nIEg= 473\nYWNr 474\naW1wb3J0 475\ndWJsaWM= 476\nIG9y 477\nZXN0 478\nbWVudA== 479\nIEc= 480\nYWJsZQ== 481\nIC0= 482\naW5l 483\naWxs 484\naW5k 485\nZXJl 486\nOjo= 487\naXR5 488\nICs= 489\nIHRy 490\nZWxm 491\naWdodA== 492\nKCc= 493\nb3Jt 494\ndWx0 495\nc3Ry 496\nLi4= 497\nIiw= 498\nIHlvdQ== 499\neXBl 500\ncGw= 501\nIG5ldw== 502\nIGo= 503\nICAgICAgICAgICAgICAgICAgIA== 504\nIGZyb20= 505\nIGV4 506\nIE8= 507\nMjA= 508\nbGQ= 509\nIFs= 510\nb2M= 511\nOgo= 512\nIHNl 513\nIGxl 514\nLS0tLS0tLS0= 515\nLnM= 516\newo= 517\nJyw= 518\nYW50 519\nIGF0 520\nYXNl 521\nLmM= 522\nIGNo 523\nPC8= 524\nYXZl 525\nYW5n 526\nIGFyZQ== 527\nIGludA== 528\n4oCZ 529\nX3Q= 530\nZXJ0 531\naWFs 532\nYWN0 533\nfQo= 534\naXZl 535\nb2Rl 536\nb3N0 537\nIGNsYXNz 538\nIG5vdA== 539\nb2c= 540\nb3Jk 541\nYWx1ZQ== 542\nYWxs 543\nZmY= 544\nKCk7Cg== 545\nb250 546\naW1l 547\nYXJl 548\nIFU= 549\nIHBy 550\nIDo= 551\naWVz 552\naXpl 553\ndXJl 554\nIGJ5 555\naXJl 556\nIH0KCg== 557\nLnA= 558\nIHNo 559\naWNl 560\nYXN0 561\ncHRpb24= 562\ndHJpbmc= 563\nb2s= 564\nX18= 565\nY2w= 566\nIyM= 567\nIGhl 568\nYXJk 569\nKS4= 570\nIEA= 571\naWV3 572\nCQkJ 573\nIHdhcw== 574\naXA= 575\ndGhpcw== 576\nIHU= 577\nIFRoZQ== 578\naWRl 579\nYWNl 580\naWI= 581\nYWM= 582\ncm91 583\nIHdl 584\namVjdA== 585\nIHB1YmxpYw== 586\nYWs= 587\ndmU= 588\nYXRo 589\nb2lk 590\nID0+ 591\ndXN0 592\ncXVl 593\nIHJlcw== 594\nKSk= 595\nJ3M= 596\nIGs= 597\nYW5z 598\neXN0 599\ndW5jdGlvbg== 600\nKioqKioqKio= 601\nIGk= 602\nIHVz 603\ncHA= 604\nMTA= 605\nb25l 606\nYWls 607\nPT09PQ== 608\nbmFtZQ== 609\nIHN0cg== 610\nIC8= 611\nICY= 612\nYWNo 613\nZGl2 614\neXN0ZW0= 615\nZWxs 616\nIGhhdmU= 617\nZXJy 618\nb3VsZA== 619\ndWxs 620\ncG9u 621\nIEo= 622\nX3A= 623\nID09 624\naWdu 625\nU3Q= 626\nLgo= 627\nIHBs 628\nKTsKCg== 629\nZm9ybQ== 630\ncHV0 631\nb3VudA== 632\nfQoK 633\nZGQ= 634\naXRl 635\nIGdldA== 636\ncnI= 637\nb21l 638\nIOKA 639\nYXJhbQ== 640\nY2M= 641\nICov 642\nRVI= 643\nSW4= 644\nbGVz 645\nX3M= 646\nb25n 647\naWU= 648\nIGNhbg== 649\nIFY= 650\nZXJ2 651\ncHI= 652\nIHVu 653\ncm93 654\nYmVy 655\nIGRv 656\nbGw= 657\nIGVs 658\nIHNlbGY= 659\nYXRlZA== 660\nYXJ5 661\nIC4= 662\nJ10= 663\ndWQ= 664\nIGVu 665\nIFRo 666\nICAgICAgICAgICAgICAgICAgICAgICA= 667\ndGU= 668\nX2M= 669\ndWN0 670\nIGFi 671\nb3Jr 672\nLmdldA== 673\nICM= 674\nYXc= 675\ncmVzcw== 676\nb2I= 677\nTmFtZQ== 678\nMjAx 679\nYXBw 680\nWyc= 681\nIGFsbA== 682\nb3J5 683\naXRpb24= 684\nYW5jZQ== 685\nZWFy 686\nIGNvbnQ= 687\ndmVudA== 688\naWE= 689\nIHdpbGw= 690\nSU4= 691\nICAgICAgICAg 692\ncmV0dXJu 693\nIDwv 694\nZGF0YQ== 695\nKQoK 696\nUmU= 697\ncGxl 698\naWxk 699\ndGhlcg== 700\nIHlvdXI= 701\nIgo= 702\nKCQ= 703\nIG91dA== 704\nKSw= 705\nIGhhcw== 706\nU3RyaW5n 707\nc28= 708\nIHVw 709\nYXg= 710\nIGRlZg== 711\nIGJv 712\nZ2U= 713\nYWxzZQ== 714\nT04= 715\ncGVy 716\nMTI= 717\naWNo 718\nIGJ1dA== 719\nIAo= 720\nIF8= 721\nX20= 722\nYWRk 723\ncXVlc3Q= 724\nb2RlbA== 725\nc2VsZg== 726\nZXJ5 727\nZnQ= 728\nZW5z 729\nLy8vLw== 730\nYWtl 731\nLkM= 732\nIGdv 733\nIGZ1bmN0aW9u 734\nIEs= 735\naXZhdGU= 736\nIGlt 737\nIGNvbnN0 738\nLnQ= 739\nICovCg== 740\nKTsNCg== 741\nIHZvaWQ= 742\nIHNldA== 743\nIFN5c3RlbQ== 744\nY3Jp 745\nKCkK 746\nbGk= 747\nCWlm 748\nLm0= 749\nYWxseQ== 750\nc2V0 751\nZXA= 752\n4oCZcw== 753\nYm8= 754\nZGVm 755\nJywK 756\nIG1l 757\nICE= 758\nYXRjaA== 759\nIj4= 760\nIiwK 761\nZWM= 762\nIElu 763\ncGg= 764\nIHw= 765\nX2Y= 766\nIHZhcg== 767\nZW5jZQ== 768\nSWQ= 769\ncmVl 770\naW5r 771\nbGVjdA== 772\ndWc= 773\nZXRo 774\nIGVsc2U= 775\nLS0tLS0tLS0tLS0tLS0tLQ== 776\nMTk= 777\nY29udA== 778\nIHNv 779\nYXRpYw== 780\nIGxv 781\ncHJv 782\ndG9u 783\nc3M= 784\nb3du 785\nYWJlbA== 786\nb2ludA== 787\nb3Vz 788\nZWxk 789\nU1Q= 790\nVGhl 791\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 792\nUkU= 793\nIjo= 794\nb2xvcg== 795\ndHA= 796\nZWc= 797\na2V5 798\ndWRl 799\nIFN0 800\nb3VuZA== 801\nIGFy 802\nIik7Cg== 803\nZW5lcg== 804\nc2Vy 805\nMTE= 806\nYmplY3Q= 807\nZXNzYWdl 808\nZmVy 809\nIG1vcmU= 810\nYXRpb25z 811\nZW50cw== 812\nIGhpcw== 813\nIHRoZXk= 814\nLlM= 815\nIFk= 816\ndXNl 817\nbmU= 818\naXNo 819\nb2xk 820\nX2Q= 821\naW8= 822\naWVsZA== 823\nIHBlcg== 824\nQ29udA== 825\naW5ncw== 826\nIyMjIw== 827\nIGRhdGE= 828\nIHNh 829\nZWY= 830\nZm8= 831\nIG9uZQ== 832\nZW5n 833\nIGRpcw== 834\nQVQ= 835\nIG5hbWU= 836\nIHRydWU= 837\ndmFs 838\nbGVk 839\nLmY= 840\nIG5l 841\nIGVuZA== 842\nMzI= 843\nLlQ= 844\nMTY= 845\nY3Jl 846\nYXJr 847\nbG9n 848\nRXg= 849\nZXJyb3I= 850\nX2lk 851\ndXJyZQ== 852\nYW5nZQ== 853\nIG51bGw= 854\ncnJheQ== 855\nIG15 856\ncGFu 857\naWN0 858\nYXRvcg== 859\nVmlldw== 860\nTGlzdA== 861\nCXJldHVybg== 862\n4oCd 863\nIHByZQ== 864\nIHg= 865\nY2x1ZGU= 866\nYXJn 867\nMTU= 868\nb3Y= 869\nLmg= 870\nID4= 871\nIHRoZWly 872\nJyk= 873\naXJzdA== 874\naWNr 875\nZ2g= 876\nTEU= 877\nT1I= 878\nIHByaXZhdGU= 879\ndGVt 880\nDQoNCg== 881\ndXNlcg== 882\nICk= 883\nY29t 884\nLkE= 885\nIjsK 886\nIGlk 887\ncmVhZA== 888\nIHdobw== 889\nX2I= 890\nIj4K 891\nIHRpbWU= 892\nIG1hbg== 893\ncnk= 894\nPT09PT09PT0= 895\ncm91cA== 896\ncm9w 897\ncHVibGlj 898\ndmVs 899\ndW1iZXI= 900\nYmxl 901\nIHdoaWNo 902\nKioqKioqKioqKioqKioqKg== 903\nIGFueQ== 904\nIGZhbHNl 905\nd2U= 906\nIHZhbHVl 907\nIGxp 908\nIik= 909\nbmRlcg== 910\nZ3I= 911\nIG5v 912\ncGFyYW0= 913\nMjU= 914\nZmln 915\nLmNvbQ== 916\nIGFwcA== 917\nX2w= 918\naW9ucw== 919\nLkQ= 920\nIENo 921\nIGFib3V0 922\nIGFkZA== 923\nIHN1 924\nIHN0cmluZw== 925\nSUQ= 926\nIG92ZXI= 927\nc3RyaW5n 928\nLmw= 929\nb3VyY2U= 930\nMDAw 931\nX0M= 932\nXQo= 933\nIHF1 934\nIFN0cmluZw== 935\nY2E= 936\nU0U= 937\nIHJv 938\nc2g= 939\ndWFs 940\nVHlwZQ== 941\nc29u 942\nbmV3 943\nZXJu 944\nIGFn 945\nQVI= 946\nXTsK 947\nXS4= 948\nID8= 949\naWNhbA== 950\nIGRlcw== 951\ndXRo 952\naXg= 953\nYXlz 954\nIHR5cGU= 955\nJ3Q= 956\nYXVsdA== 957\nIGludGVy 958\ndmFy 959\nLmI= 960\nIHBhcnQ= 961\nLmQ= 962\ndXJyZW50 963\nSVQ= 964\nRU4= 965\nMzA= 966\nZW5j 967\nKGY= 968\ncmE= 969\ndmFsdWU= 970\nY2hv 971\nMTg= 972\ndXR0b24= 973\nb3Nl 974\nMTQ= 975\nICE9 976\nYXRlcg== 977\nw6k= 978\ncmVhdGU= 979\nb2xs 980\ncG9z 981\neWxl 982\nbmc= 983\nQUw= 984\ndXNpbmc= 985\nYW1lcw== 986\nIHsNCg== 987\nYXRlcw== 988\nZWx5 989\nIHdvcms= 990\nIGVt 991\naW5hbA== 992\nIHNw 993\nIHdoZW4= 994\nLnNldA== 995\nICAgICAg 996\nKToK 997\ndG8= 998\ncXVpcmU= 999\naW5kb3c= 1000\nbGVtZW50 1001\ncGVjdA== 1002\nYXNo 1003\nW2k= 1004\nIHVzZQ== 1005\nLkY= 1006\ncGVj 1007\nIGFk 1008\nb3Zl 1009\nY2VwdGlvbg== 1010\nZW5ndGg= 1011\naW5jbHVkZQ== 1012\nYWRlcg== 1013\nICAgICAgICAgICAgICAgICAgICAgICAgICAg 1014\nYXR1cw== 1015\nVGg= 1016\naXRsZQ== 1017\ncml0 1018\ndm9pZA== 1019\nKCku 1020\nKAo= 1021\nIG9mZg== 1022\nIG90aGVy 1023\nICYm 1024\nJzsK 1025\nbXM= 1026\nIGJlZW4= 1027\nIHRl 1028\nbWw= 1029\nY28= 1030\nbmM= 1031\nMTM= 1032\nZXJ2aWNl 1033\nICU= 1034\nKioK 1035\nYW5u 1036\nYWRl 1037\nCgoKCg== 1038\nbG9jaw== 1039\nY29uc3Q= 1040\nMTAw 1041\ncG9uc2U= 1042\nIHN1cA== 1043\nKys= 1044\nZGF0ZQ== 1045\nIGFjYw== 1046\nIGhhZA== 1047\nIGJ1 1048\nMjAw 1049\nIFJl 1050\nIHdlcmU= 1051\nIGZpbGU= 1052\nIHdvdWxk 1053\nIOKAnA== 1054\ndmVu 1055\naXNz 1056\nIG91cg== 1057\nY2xhc3M= 1058\ncmF3 1059\nIHllYXI= 1060\nRGF0YQ== 1061\nIHZhbA== 1062\nIHNvbWU= 1063\nZnRlcg== 1064\neXM= 1065\nIC8vLw== 1066\ncm91bmQ= 1067\ndmlldw== 1068\nIHBl 1069\nIHRoZXJl 1070\nIHNhaWQ= 1071\nZHU= 1072\nb2Y= 1073\nbGluZQ== 1074\nLyo= 1075\nZHVjdA== 1076\nIGhlcg== 1077\nICAgICAgICAgICAgIA== 1078\nUmVz 1079\nIGNv 1080\nIGNvbW0= 1081\naXNl 1082\nbWlu 1083\nICAgIAo= 1084\nI2luY2x1ZGU= 1085\nZXRob2Q= 1086\nLlA= 1087\ndXRl 1088\nIGFzcw== 1089\nSW50 1090\nYXNr 1091\nbG9j 1092\nIGxpa2U= 1093\nb2R5 1094\nIGxldA== 1095\nbG9hZA== 1096\nIGFt 1097\ncm9s 1098\nIGdy 1099\neXA= 1100\nIGFsc28= 1101\nIEl0 1102\ndXJs 1103\naWZpYw== 1104\nb3Jz 1105\nX1A= 1106\nX24= 1107\naWdo 1108\nIHRoYW4= 1109\nQ29t 1110\nQU4= 1111\nVUw= 1112\nYXRpbmc= 1113\nMTc= 1114\nIFRoaXM= 1115\ncmVm 1116\nX1M= 1117\nIHN0YXRpYw== 1118\ncm9sbA== 1119\nIGp1c3Q= 1120\nIHJlc3VsdA== 1121\naWFu 1122\naWR0aA== 1123\nIHRoZW0= 1124\nKSk7Cg== 1125\nZGVy 1126\ncmVhaw== 1127\nQ29u 1128\nOi8v 1129\ndWxl 1130\nLi4u 1131\nYXJjaA== 1132\nZW1lbnQ= 1133\nIDw8 1134\nNTA= 1135\ndXNo 1136\nZW5zZQ== 1137\nYXJy 1138\nIGludG8= 1139\nY2Vzcw== 1140\nYW1w 1141\naWVk 1142\ndW1lbnQ= 1143\nIFw= 1144\nXSw= 1145\nd28= 1146\nYWxz 1147\nIHdoYXQ= 1148\nYW5j 1149\nVmFsdWU= 1150\nPSc= 1151\nb2x1bQ== 1152\nIHBvcw== 1153\nYWdlcw== 1154\nYXllcg== 1155\nIHNj 1156\ndWVz 1157\nIikK 1158\nX1Q= 1159\nIGxpc3Q= 1160\nKHM= 1161\nIGNhc2U= 1162\nQ2g= 1163\nCQkJCQk= 1164\nLy8vLy8vLy8= 1165\ncG9uZW50 1166\nIHo= 1167\nIGtu 1168\nbGV0 1169\nREU= 1170\ncmVk 1171\nIGZl 1172\nIH0sCg== 1173\nICw= 1174\nKHQ= 1175\nIGZpcnN0 1176\nJyk7Cg== 1177\nd29yZA== 1178\nIGltcG9ydA== 1179\nIGFjdA== 1180\nIGNoYXI= 1181\nQ1Q= 1182\nIFRy 1183\nb3BsZQ== 1184\nPXs= 1185\nCWY= 1186\nMjQ= 1187\naWVudA== 1188\nY2VudA== 1189\nLmo= 1190\nbGVjdGlvbg== 1191\nKSkK 1192\nIG9ubHk= 1193\nIHByaW50 1194\nbWVy 1195\nLlc= 1196\nb2Nr 1197\nIC0t 1198\nVGV4dA== 1199\nIG9w 1200\nYW5r 1201\nIGl0cw== 1202\nIGJhY2s= 1203\nWyI= 1204\nIG5lZWQ= 1205\nIGNs 1206\nIHN1Yg== 1207\nIGxh 1208\nKCg= 1209\nLiI= 1210\nT2JqZWN0 1211\nIHN0YXJ0 1212\nZmlsZQ== 1213\nKHNlbGY= 1214\nbmVy 1215\nZXk= 1216\nIHVzZXI= 1217\nIGVudA== 1218\nIENvbQ== 1219\naXRz 1220\nIENvbg== 1221\nb3VibGU= 1222\nb3dlcg== 1223\naXRlbQ== 1224\ndmVyeQ== 1225\nIFdl 1226\nNjQ= 1227\nbGljaw== 1228\nIFE= 1229\ncGhw 1230\ndHRw 1231\nJzo= 1232\naWNz 1233\nIHVuZGVy 1234\nICoK 1235\nLkw= 1236\nKTs= 1237\naWNlcw== 1238\nIHJlZw== 1239\nKQ0K 1240\nCXB1YmxpYw== 1241\nU1M= 1242\nIHRoZW4= 1243\ncmVhdA== 1244\naW91cw== 1245\nLkc= 1246\nZWs= 1247\naXJlY3Q= 1248\naGVjaw== 1249\nY3JpcHQ= 1250\nbmluZw== 1251\nIFVu 1252\nIG1heQ== 1253\nIFdo 1254\nQm8= 1255\nSXRlbQ== 1256\nc3RydWN0 1257\nLnN0 1258\ncmVhbQ== 1259\naWJsZQ== 1260\nbG9hdA== 1261\nIG9yZw== 1262\ndW5k 1263\nc3Vt 1264\nX2lu 1265\nLi4v 1266\nX00= 1267\nIGhvdw== 1268\ncml0ZQ== 1269\nJwo= 1270\nVG8= 1271\nNDA= 1272\nd3c= 1273\nIHBlb3BsZQ== 1274\naW5kZXg= 1275\nLm4= 1276\naHR0cA== 1277\nKG0= 1278\nZWN0b3I= 1279\nIGluZA== 1280\nIGphdg== 1281\nXSwK 1282\nIEhl 1283\nX3N0 1284\nZnVs 1285\nb2xl 1286\nKXsK 1287\nIHNob3VsZA== 1288\nb3B5 1289\nZWxw 1290\naWVy 1291\nX25hbWU= 1292\nZXJzb24= 1293\nSU9O 1294\nb3Rl 1295\nIHRlc3Q= 1296\nIGJldA== 1297\ncnJvcg== 1298\ndWxhcg== 1299\n44A= 1300\nINA= 1301\nYnM= 1302\ndGluZw== 1303\nIG1ha2U= 1304\nVHI= 1305\nIGFmdGVy 1306\nYXJnZXQ= 1307\nUk8= 1308\nb2x1bW4= 1309\ncmM= 1310\nX3Jl 1311\nZGVmaW5l 1312\nMjI= 1313\nIHJpZ2h0 1314\ncmlnaHQ= 1315\nZGF5 1316\nIGxvbmc= 1317\nW10= 1318\nKHA= 1319\ndGQ= 1320\nY29uZA== 1321\nIFBybw== 1322\nIHJlbQ== 1323\ncHRpb25z 1324\ndmlk 1325\nLmc= 1326\nIGV4dA== 1327\nIF9f 1328\nJykK 1329\ncGFjZQ== 1330\nbXA= 1331\nIG1pbg== 1332\nc3RhbmNl 1333\nYWly 1334\nYWN0aW9u 1335\nd2g= 1336\ndHlwZQ== 1337\ndXRpbA== 1338\nYWl0 1339\nPD8= 1340\nSUM= 1341\ndGV4dA== 1342\nIHBo 1343\nIGZs 1344\nLk0= 1345\nY2Nlc3M= 1346\nYnI= 1347\nZm9yZQ== 1348\nZXJzaW9u 1349\nKSwK 1350\nLnJl 1351\nYXRlZw== 1352\nIGxvYw== 1353\naW5z 1354\nLXM= 1355\ndHJpYg== 1356\nIEludA== 1357\nIGFycmF5 1358\nLCI= 1359\nUHJv 1360\nKGM= 1361\nZXNzaW9u 1362\nPgoK 1363\nIHNoZQ== 1364\nIl0= 1365\nYXBo 1366\nIGV4cA== 1367\nZXJ0eQ== 1368\nIFNl 1369\nIHBhcg== 1370\ndW5j 1371\nRVQ= 1372\nIHJlYWQ= 1373\ncHJpbnQ= 1374\nIHJlbA== 1375\nIGZvcm0= 1376\nIGRy 1377\nRXhjZXB0aW9u 1378\naW5wdXQ= 1379\nIHRyYW5z 1380\nIyMjIyMjIyM= 1381\nb3JkZXI= 1382\nQnk= 1383\nIGF3 1384\naXRpZXM= 1385\ndWZm 1386\ncGxheQ== 1387\nLmFkZA== 1388\nIOKAkw== 1389\nIHdhbnQ= 1390\nIGNvbXA= 1391\nbWVudHM= 1392\nIHx8 1393\nYXo= 1394\nYmU= 1395\nIG51bWJlcg== 1396\nIHJlcXVpcmU= 1397\nIEV4 1398\nNjA= 1399\nIGNvbA== 1400\nIGtleQ== 1401\nZW1iZXI= 1402\nIHR3bw== 1403\nIHNpemU= 1404\nIHdoZXJl 1405\nVVQ= 1406\ncmVzdWx0 1407\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 1408\nb3VnaA== 1409\nb3JsZA== 1410\nb29k 1411\ndWNo 1412\nYXRpdmU= 1413\nZ2Vy 1414\nYXJlbnQ= 1415\nIC8q 1416\nIGFyZw== 1417\nIHdoaWxl 1418\nMjM= 1419\nKHRoaXM= 1420\nIHJlYw== 1421\nIGRpZg== 1422\nU3RhdGU= 1423\nIHNwZWM= 1424\ncmlkZQ== 1425\nX0Y= 1426\nIGxvb2s= 1427\nQU0= 1428\naWxpdHk= 1429\nZXRlcg== 1430\n4oCZdA== 1431\nCgoK 1432\nYXlvdXQ= 1433\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 1434\nYWdlcg== 1435\nIGNvdWxk 1436\nIGJy 1437\nZW5kcw== 1438\ndXJlcw== 1439\nIGtub3c= 1440\nZXRz 1441\nIElm 1442\nIFNo 1443\nLnc= 1444\nYmFjaw== 1445\nIHNlcg== 1446\nICs9 1447\nIGZy 1448\nKCkpOwo= 1449\nIGhhbmQ= 1450\nSW5k 1451\nVUxM 1452\nSW0= 1453\nKCk7Cgo= 1454\nIG1vc3Q= 1455\nIHRyeQ== 1456\nIG5vdw== 1457\ncm91Z2g= 1458\nPg0K 1459\nYWNrYWdl 1460\nIGhpbQ== 1461\nLl8= 1462\naWZ5 1463\nIGJyZWFr 1464\nICk7Cg== 1465\ncmVu 1466\nI2RlZmluZQ== 1467\naXR0 1468\nIGFw 1469\nCWM= 1470\nKG4= 1471\nIFlvdQ== 1472\nOgoK 1473\nLW0= 1474\nIGV2ZXJ5 1475\ndXN0b20= 1476\nbGllbnQ= 1477\nb2N1bWVudA== 1478\nY3JpcHRpb24= 1479\nRXJyb3I= 1480\nLWI= 1481\n0L4= 1482\nXVs= 1483\nOTk= 1484\ndHJhbnM= 1485\nIHBvaW50 1486\nIHN0ZA== 1487\nIGZpbA== 1488\nVGltZQ== 1489\nODA= 1490\nIG1vZA== 1491\nIC0+ 1492\nIGVycm9y 1493\nYWg= 1494\nIHRleHQ= 1495\ncm9sbGVy 1496\nbG9zZQ== 1497\ncWw= 1498\nIHBvbA== 1499\nPjwv 1500\nIHNob3c= 1501\nVXNlcg== 1502\nYXNlZA== 1503\nIHsKCg== 1504\nIGZpbmQ= 1505\n0LA= 1506\nRUQ= 1507\nc3Bhbg== 1508\nZW51 1509\nIGN1cnJlbnQ= 1510\nIHVzZWQ= 1511\nY2VwdA== 1512\nY2x1ZA== 1513\nIHBsYXk= 1514\nIGxvZw== 1515\ndXRpb24= 1516\nZmw= 1517\nIHNlZQ== 1518\naW5kb3dz 1519\nIGhlbHA= 1520\nIHRoZXNl 1521\nIHBhc3M= 1522\nIGRvd24= 1523\nIGV2ZW4= 1524\nYXNvbg== 1525\ndWlsZA== 1526\nZnJvbQ== 1527\nKGQ= 1528\nIGJs 1529\nbGFiZWw= 1530\nZWxzZQ== 1531\n0LU= 1532\nICgh 1533\naXplZA== 1534\nKCks 1535\nIG9i 1536\nIGl0ZW0= 1537\ndW1w 1538\nVVI= 1539\nb3Ju 1540\nIGRvbg== 1541\nU2U= 1542\nbWFu 1543\nMjc= 1544\nYW1wbGU= 1545\ndG4= 1546\nPT09PT09PT09PT09PT09PQ== 1547\nSGU= 1548\nZ3JhbQ== 1549\nIGRpZA== 1550\nd24= 1551\nX2g= 1552\naXZlcg== 1553\nIHNt 1554\nIHRocm91Z2g= 1555\nIEFu 1556\nY2hl 1557\nIGludg== 1558\nb3VzZQ== 1559\nIGVz 1560\nIE5ldw== 1561\nZXhwb3J0 1562\nbWFyeQ== 1563\ndXRv 1564\nbGVy 1565\nIGxhc3Q= 1566\nIGV2ZW50 1567\ndHJ5 1568\n77w= 1569\naWx5 1570\naWduZWQ= 1571\naW5lcw== 1572\nb2xsb3c= 1573\naWNlbnNl 1574\nc29sZQ== 1575\nbGVhcg== 1576\nKGludA== 1577\nIGFnYWlu 1578\nIGhpZ2g= 1579\naHRtbA== 1580\nSW5kZXg= 1581\ndXRob3I= 1582\nIC8qKgo= 1583\nIGxpbmU= 1584\nRXZlbnQ= 1585\nX0Q= 1586\nIGRvZXM= 1587\naXRpYWw= 1588\nIGNy 1589\nYXJz 1590\nMjg= 1591\nIHRlbQ== 1592\nY2F1c2U= 1593\nZmFjZQ== 1594\nIGA= 1595\nX0E= 1596\nQnV0dG9u 1597\nYXR1cmU= 1598\nZWN0ZWQ= 1599\nRVM= 1600\naXN0ZXI= 1601\nCQo= 1602\nIGJlZm9yZQ== 1603\nYWxl 1604\nb3RoZXI= 1605\nIGJlY2F1c2U= 1606\ncm9pZA== 1607\nIGVk 1608\naWs= 1609\ncmVn 1610\nIERl 1611\nIGRpc3Q= 1612\nfSwK 1613\nIHN0YXRl 1614\nIGNvbnM= 1615\ncmludA== 1616\nYXR0 1617\nIGhlcmU= 1618\naW5lZA== 1619\nIGZpbmFs 1620\nICIi 1621\nS2V5 1622\nTE8= 1623\nIGRlbA== 1624\ncHR5 1625\ndGhpbmc= 1626\nMjY= 1627\nIEFuZA== 1628\nIHJ1bg== 1629\nIFg= 1630\neW0= 1631\nLmFwcA== 1632\nIHZlcnk= 1633\nY2Vz 1634\nX04= 1635\nYXJlZA== 1636\nd2FyZA== 1637\nbGlzdA== 1638\naXRlZA== 1639\nb2xvZw== 1640\naXRjaA== 1641\nQm94 1642\naWZl 1643\nMzM= 1644\nIGFj 1645\nIG1vZGVs 1646\nIG1vbg== 1647\nIHdheQ== 1648\nbGV0ZQ== 1649\nIGNhbGw= 1650\nIGF0dA== 1651\nIGNhbA== 1652\ndmVydA== 1653\nIGRlYw== 1654\nbGVhc2U= 1655\nb3Vu 1656\nIH0pOwo= 1657\nZnI= 1658\nZm9ybWF0aW9u 1659\nZXRhaWw= 1660\nIG51bQ== 1661\nYWo= 1662\ncXVlcnk= 1663\nIHdlbGw= 1664\nIG9iamVjdA== 1665\nIEFz 1666\nIHllYXJz 1667\nQ29sb3I= 1668\nSVM= 1669\nIGRlZmF1bHQ= 1670\nV2g= 1671\nIGlucw== 1672\nYWludA== 1673\nIGphdmE= 1674\nIHNpbQ== 1675\nIEFy 1676\nbW9u 1677\ndGls 1678\nKCk7DQo= 1679\nKTo= 1680\nU2V0 1681\nMjk= 1682\nYXR0ZXI= 1683\nIHZpZXc= 1684\nIHByZXM= 1685\nYXJyYXk= 1686\nV2U= 1687\nQXQ= 1688\nIGJlbA== 1689\nIG1hbnk= 1690\nMjE= 1691\nTWFu 1692\nZW5kZXI= 1693\nIGJlaW5n 1694\nIGdvb2Q= 1695\nCQkJCQkJ 1696\nYXRpb25hbA== 1697\nd2FyZQ== 1698\nLmxvZw== 1699\new0K 1700\nIHVzaW5n 1701\nX0I= 1702\nIDo9 1703\nX3c= 1704\naXN0cw== 1705\nbGlzaA== 1706\nIHN0dWQ= 1707\nIEFs 1708\nIGd1 1709\nY29uZmln 1710\ndXJpbmc= 1711\ndGltZQ== 1712\nb2tlbg== 1713\nYW1lc3BhY2U= 1714\nIHJlcXVlc3Q= 1715\nIGNoaWxk 1716\nIMM= 1717\nbG9i 1718\nIHBhcmFt 1719\nIH0NCg== 1720\nMDE= 1721\nIGVjaG8= 1722\nZnVuY3Rpb24= 1723\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 1724\ncHM= 1725\nRWxlbWVudA== 1726\nYWxr 1727\nbGljYXRpb24= 1728\nYnk= 1729\nU2l6ZQ== 1730\ncmF3aW5n 1731\nIHBlcnNvbg== 1732\nICAgICAgICAgICAgICAgICA= 1733\nXG4= 1734\nb2JqZWN0 1735\naW5jZQ== 1736\nRW4= 1737\nRmlsZQ== 1738\ndWY= 1739\nZmZlY3Q= 1740\nQUM= 1741\nIHN0eWxl 1742\nc3VtbWFyeQ== 1743\nIHF1ZQ== 1744\nX3I= 1745\nICgk 1746\nTW9kZWw= 1747\naWRlbnQ= 1748\nIG1ldGhvZA== 1749\nSUw= 1750\nb3R0 1751\nbGVzcw== 1752\nSU5H 1753\nICgp 1754\nIGV4cGVjdA== 1755\neW5j 1756\ncGFja2FnZQ== 1757\nMzU= 1758\ndXJz 1759\nIHByb3Q= 1760\nLi8= 1761\ncHJl 1762\nICkK 1763\nbWE= 1764\nIHN1cg== 1765\nIGZvdW5k 1766\nSW5mbw== 1767\ncGFy 1768\naW1lcw== 1769\nLmU= 1770\nYWlucw== 1771\nIHBvc3Q= 1772\nLWQ= 1773\nNDU= 1774\nb2xlYW4= 1775\nIHNs 1776\nUEU= 1777\nIHN1Y2g= 1778\nc2VsZWN0 1779\nYWluZXI= 1780\nIHRoaW5r 1781\nIGRpZmZlcg== 1782\nLnI= 1783\nLyoqCg== 1784\nRkY= 1785\nb29s 1786\ncGxhdGU= 1787\ncXVhbA== 1788\nIEZvcg== 1789\nIG11Y2g= 1790\ndWM= 1791\nKG5ldw== 1792\nb2R1bGU= 1793\nIHNvbQ== 1794\nIGh0dHA= 1795\nIExpc3Q= 1796\nIGNvdW50 1797\nIGluc3Q= 1798\nY2hhcg== 1799\nbWl0 1800\nLmlk 1801\nYWtpbmc= 1802\nIGdlbmVy 1803\ncHg= 1804\ndmljZQ== 1805\nMzc= 1806\nX2RhdGE= 1807\nIE5VTEw= 1808\nfQ0K 1809\naWRk 1810\n44CC 1811\nIG1lZA== 1812\nb3Jn 1813\naWRlcg== 1814\nYWNoZQ== 1815\nd29yaw== 1816\nIGNoZWNr 1817\nd2Vlbg== 1818\nICgo 1819\ndGhl 1820\nYW50cw== 1821\nPjw= 1822\nLkI= 1823\nLWM= 1824\nIG9wZW4= 1825\nIGVzdA== 1826\nICAgICAgICAK 1827\nIG5leHQ= 1828\nSU0= 1829\n0YI= 1830\nT1Q= 1831\nw7M= 1832\nIGZvbGxvdw== 1833\nY29udGVudA== 1834\nICAgICAgICAgICAg 1835\nIGluY2x1ZA== 1836\nSEU= 1837\nIFJlcw== 1838\nIGhyZWY= 1839\n0Lg= 1840\nIGNhcg== 1841\neXBlcw== 1842\naW1hZ2U= 1843\nVW4= 1844\nIGJvb2w= 1845\nQUQ= 1846\nIGdhbWU= 1847\nLkZvcm0= 1848\ncm93cw== 1849\nKi8= 1850\ndmVsb3A= 1851\nLkRyYXdpbmc= 1852\nIHBhdGg= 1853\naXNpb24= 1854\nIGVhY2g= 1855\nIFBs 1856\nX3R5cGU= 1857\nUGF0aA== 1858\nbmVjdGlvbg== 1859\nIGF2 1860\nJyku 1861\nIHN1cHBvcnQ= 1862\nRU5U 1863\ncmVt 1864\nIiku 1865\nIG93bg== 1866\nIGNvcg== 1867\nY291bnQ= 1868\nbWlzcw== 1869\ndWFsbHk= 1870\nIG1lbQ== 1871\nc3Rk 1872\naWVuY2U= 1873\nc2VhcmNo 1874\nIgoK 1875\nRm9ybQ== 1876\nIHNleA== 1877\nZW5hbWU= 1878\nIHNpZ24= 1879\nIGV0 1880\nICAgICAgICAgIA== 1881\nJywn 1882\nIEFwcA== 1883\nIHRob3Nl 1884\nb2Zm 1885\nIGVycg== 1886\nIHN5c3RlbQ== 1887\nIGJlc3Q= 1888\nY29kZQ== 1889\nIHNhbWU= 1890\nIGRp 1891\ndXNz 1892\nIGNyZWF0ZQ== 1893\nYXRoZXI= 1894\nQXJyYXk= 1895\nLmlu 1896\nZmU= 1897\nU2VydmljZQ== 1898\nVU4= 1899\nYXRz 1900\nIFo= 1901\nYWx0aA== 1902\nIG1hZGU= 1903\ndHJ1ZQ== 1904\nQUI= 1905\nIG1hcms= 1906\ncmlk 1907\naWZpZWQ= 1908\nLA0K 1909\neW4= 1910\ncHJlc3M= 1911\nIGdyb3Vw 1912\nIGZpbg== 1913\nIExpY2Vuc2U= 1914\nRmllbGQ= 1915\nZWdlcg== 1916\nIHdvcmxk 1917\naW5lc3M= 1918\ndHk= 1919\nIHByb2Nlc3M= 1920\nKGI= 1921\nIGNyZQ== 1922\nYXJu 1923\naXZlcw== 1924\nIG1haW4= 1925\naWRlbw== 1926\nMzY= 1927\nX2c= 1928\nQUc= 1929\ndmFsaWQ= 1930\naW1n 1931\nUEk= 1932\nIGNvbG9y 1933\nIHJlcG9ydA== 1934\nIHRha2U= 1935\ncmli 1936\nT00= 1937\nIGRheQ== 1938\nUmVxdWVzdA== 1939\nIHNr 1940\nYmVycw== 1941\nCXM= 1942\nLkFkZA== 1943\nb290 1944\nSW1hZ2U= 1945\nIGNvbXBsZQ== 1946\nb2xsZWN0aW9u 1947\nIHRvcA== 1948\nIGZyZWU= 1949\nQVM= 1950\nRGU= 1951\nIE9u 1952\nSUc= 1953\nOTA= 1954\nZXRh 1955\nRGF0ZQ== 1956\nIGFjdGlvbg== 1957\nMzQ= 1958\nT3Zlcg== 1959\naXRvcg== 1960\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 1961\nbm90 1962\nIGluZGV4 1963\naGVy 1964\naWNvbg== 1965\nT24= 1966\nOw0KDQo= 1967\naXZpdHk= 1968\nbWFuZA== 1969\nLldpbmRvd3M= 1970\nT0w= 1971\nIHJlYWw= 1972\nIG1heA== 1973\nbGFuZA== 1974\nLi4uLg== 1975\ncmFwaA== 1976\nIGJ1aWxk 1977\nbGVn 1978\nYXNzd29yZA== 1979\nPwoK 1980\n4oCm 1981\nb29r 1982\ndWNr 1983\nIG1lc3NhZ2U= 1984\ndGVzdA== 1985\naXZlcnM= 1986\nMzg= 1987\nIGlucHV0 1988\nIGFydA== 1989\nIGJldHdlZW4= 1990\nR2V0 1991\nZW50ZXI= 1992\nZ3JvdW5k 1993\nZW5l 1994\nw6E= 1995\nLmxlbmd0aA== 1996\nTm9kZQ== 1997\nKGk= 1998\nQ2xhc3M= 1999\nZm9y 2000\nIOKAlA== 2001\ndGVu 2002\nb2lu 2003\nIGtl 2004\ndWk= 2005\nIElO 2006\nIHRhYmxl 2007\nc3Vi 2008\nIExl 2009\nIGhlYWQ= 2010\nIG11c3Q= 2011\nLy8vLy8vLy8vLy8vLy8vLw== 2012\nLnV0aWw= 2013\nQ29udGV4dA== 2014\nIG9yZGVy 2015\nIG1vdg== 2016\nb3Zlcg== 2017\nIGNvbnRpbg== 2018\nIHNheQ== 2019\nc3RhdGlj 2020\nLlRleHQ= 2021\nIGNsYXNzTmFtZQ== 2022\ncGFueQ== 2023\nIHRlcg== 2024\naGVhZA== 2025\ncmc= 2026\nIHByb2R1Y3Q= 2027\nVGhpcw== 2028\nLuKAnQ== 2029\nIEJ1dA== 2030\nNzA= 2031\nbG95 2032\nIGRvdWJsZQ== 2033\nc2c= 2034\nIHBsYWNl 2035\nLng= 2036\nbWVzc2FnZQ== 2037\nIGluZm9ybWF0aW9u 2038\ncHJpdmF0ZQ== 2039\nIG9wZXI= 2040\nY2Vk 2041\nZGI= 2042\nIj48Lw== 2043\nUGFyYW0= 2044\naWNsZQ== 2045\nIHdlZWs= 2046\nIHByb3A= 2047\ndGFibGU= 2048\naWRnZXQ= 2049\ncGxhY2U= 2050\nUHJvcA== 2051\nIEFsbA== 2052\nZWxz 2053\nYm94 2054\nLgoKCgo= 2055\nLlI= 2056\nIFRv 2057\naXRlcg== 2058\nU2g= 2059\ndXJhdGlvbg== 2060\nb2xkZXI= 2061\nX2xpc3Q= 2062\nY29tZQ== 2063\nIHN3 2064\naXphdGlvbg== 2065\nCWZvcg== 2066\nYmw= 2067\nIHByb2dyYW0= 2068\nKGU= 2069\nYXBl 2070\nY2hlY2s= 2071\nLkZvcm1z 2072\nIHVuZA== 2073\nYXRlZ29yeQ== 2074\nNzU= 2075\nYWdz 2076\nIHJlc3BvbnNl 2077\nVVM= 2078\ncmVxdWVzdA== 2079\nIHN0cnVjdA== 2080\nZXNjcmlwdGlvbg== 2081\nIGNvZGU= 2082\nX0g= 2083\ndWZmZXI= 2084\nIHdpdGhvdXQ= 2085\nbG9iYWw= 2086\nTWFuYWdlcg== 2087\naWx0ZXI= 2088\nUE8= 2089\nCXRoaXM= 2090\nb3B0aW9u 2091\nIHNvbA== 2092\nID09PQ== 2093\nYWtlcw== 2094\nQ29udHJvbGxlcg== 2095\nNDQ= 2096\nTWVzc2FnZQ== 2097\nIHJlZg== 2098\nZXZlcg== 2099\nIFNv 2100\nYWluaW5n 2101\nLmFwcGVuZA== 2102\nIHN0aWxs 2103\nIHByb3ZpZA== 2104\nIGFzc2VydA== 2105\nbWVk 2106\nIGNhcA== 2107\ndXNpbmVzcw== 2108\nIHJlcA== 2109\ndGluZ3M= 2110\ndmVk 2111\nLk4= 2112\nYXBp 2113\nT0Q= 2114\nIGZpZWxk 2115\naXZlbg== 2116\nb3Rv 2117\n4oCc 2118\nY29s 2119\nKHg= 2120\nZ2h0 2121\nUmVzdWx0 2122\nQ29kZQ== 2123\nLmlz 2124\nbGluaw== 2125\nIGNvdXI= 2126\nQW4= 2127\nIHRlYW0= 2128\nCWludA== 2129\naWZ0 2130\nNTU= 2131\nIHNlY29uZA== 2132\nIGdvaW5n 2133\nIHJhbmdl 2134\nX0U= 2135\nbmVzcw== 2136\nMzk= 2137\nIGZhbQ== 2138\nIG5pbA== 2139\nIENvbnQ= 2140\nYWlsYWJsZQ== 2141\ndXRlcw== 2142\nYXRhYg== 2143\nIGZhY3Q= 2144\nIHZpcw== 2145\nKCY= 2146\nIEFO 2147\nMzE= 2148\nQWw= 2149\ndGl0bGU= 2150\nIGFuZHJvaWQ= 2151\nQ0U= 2152\nXCI= 2153\naXJ0 2154\nIHdyaXQ= 2155\n0L0= 2156\nCW0= 2157\nZnR3YXJl 2158\nb25k 2159\nIHJldA== 2160\nb3NpdGlvbg== 2161\nIGhvbWU= 2162\nIGxlZnQ= 2163\nYXJncw== 2164\nbWVyaWM= 2165\nNDg= 2166\nIGRpcmVjdA== 2167\nb2Np 2168\nUGw= 2169\nQXM= 2170\ncmV0 2171\nYWRv 2172\nT2Y= 2173\nY2hu 2174\nIEdldA== 2175\nZWU= 2176\ncm9zcw== 2177\nKCk7 2178\nX19fXw== 2179\nLnBo 2180\nSXQ= 2181\nb3V0ZQ== 2182\nIGV4cGVy 2183\nY2hvb2w= 2184\nd3d3 2185\nfSw= 2186\nIGFsbG93 2187\nIMI= 2188\nKCkp 2189\nc2l6ZQ== 2190\naXNt 2191\nYWk= 2192\ndHJhY3Q= 2193\nYW5l 2194\nLi4uCgo= 2195\nY29udGV4dA== 2196\nIGJlZw== 2197\nQ0g= 2198\nIHBhZ2U= 2199\naGlw 2200\nbm8= 2201\nY29yZQ== 2202\nc3A= 2203\nIGRpZmZlcmVudA== 2204\naWFibGU= 2205\nIE1l 2206\nX0lO 2207\nYnV0dG9u 2208\nIElz 2209\nZXJ2aWNlcw== 2210\nIGNh 2211\nIGFyb3VuZA== 2212\nQXBw 2213\ncmF0aW9u 2214\nIHJlY2U= 2215\nIHJlYWxseQ== 2216\nIGltYWdl 2217\nIHRhcmdldA== 2218\nIGRlcA== 2219\nb3B5cmlnaHQ= 2220\ndHJh 2221\naW5nbGU= 2222\naXRhbA== 2223\nTGF5b3V0 2224\nIGJvdGg= 2225\nT3ZlcnJpZGU= 2226\nYXJt 2227\nPT4= 2228\nYXRlcmlhbA== 2229\naWxlZA== 2230\nIHB1dA== 2231\nUXU= 2232\n0YA= 2233\ndW5n 2234\nbWFw 2235\nCQkJCQkJCQk= 2236\nIGxldmVs 2237\nQ29tcG9uZW50 2238\nYm9vaw== 2239\nY3JlZW4= 2240\nX1JF 2241\nIGNvbmZpZw== 2242\n44E= 2243\nT3I= 2244\nLmRhdGE= 2245\nIGRvY3VtZW50 2246\nIiwi 2247\ndHJpYnV0ZQ== 2248\ndXg= 2249\nTG9n 2250\nZmVyZW5jZQ== 2251\ncG9zdA== 2252\nX2U= 2253\nIGxvY2Fs 2254\nYW5kb20= 2255\nYXNzZXJ0 2256\nVmFs 2257\nbGVjdGVk 2258\naW5h 2259\nYXRhYmFzZQ== 2260\nQWRk 2261\nIGNvbnRlbnQ= 2262\nLnByaW50 2263\nc2lnbmVk 2264\ncmlj 2265\nLiIKCg== 2266\nIGZh 2267\nIQoK 2268\nLWY= 2269\naXZlZA== 2270\nIHF1ZXN0 2271\nLmV4 2272\nIGZsb2F0 2273\nIGRldmVsb3A= 2274\n0L7Q 2275\nTWFw 2276\nYWRpbmc= 2277\nIHBvc3M= 2278\nVUU= 2279\nbmFtZXNwYWNl 2280\nX08= 2281\nCWI= 2282\nLkdldA== 2283\nPig= 2284\nanNvbg== 2285\nZXRhaWxz 2286\nNjY= 2287\nIHRvbw== 2288\nIGV4dGVuZHM= 2289\nIE5vbmU= 2290\nIGZvcmU= 2291\nKFN0cmluZw== 2292\nZm9ybWF0 2293\nIGdyZWF0 2294\naW50ZXI= 2295\nY2FsZQ== 2296\n0YE= 2297\ncm9u 2298\naXZpbmc= 2299\nRW50 2300\nZW5jeQ== 2301\neHQ= 2302\nb3k= 2303\nMDU= 2304\nIG1vbnRo 2305\nIGhhcHA= 2306\nIHN1cGVy 2307\nYmFy 2308\nZGVmYXVsdA== 2309\nX2Rl 2310\nb3Jkcw== 2311\nbG4= 2312\nKHsK 2313\nIEluZA== 2314\nYXNlcw== 2315\nIHRpdGxl 2316\nIGNvbnRleHQ= 2317\nMDg= 2318\nb2g= 2319\nLXA= 2320\nRW0= 2321\nIG1ldA== 2322\nVGVzdA== 2323\nIGxpZmU= 2324\nX3Y= 2325\nIFVT 2326\nVUk= 2327\nb2NhdGlvbg== 2328\nbWQ= 2329\nIFsK 2330\nIF0= 2331\nc3c= 2332\nIGluY3Jl 2333\nc2NyaXB0 2334\nZW50aWFs 2335\nd2F5cw== 2336\nLmRl 2337\nIHNyYw== 2338\nIGNhdGNo 2339\nIEFtZXJpYw== 2340\nLy8K 2341\nICAgICAgICAgICAgICA= 2342\nIHBheQ== 2343\ncGxpdA== 2344\n4oCU 2345\nIGNvdW4= 2346\nb2Jq 2347\nLnBocA== 2348\nIGNoYW5nZQ== 2349\nZXRoaW5n 2350\nJ3Jl 2351\nYXN0ZXI= 2352\nbG9z 2353\nbGF0aW9u 2354\nICAK 2355\nTGU= 2356\nw6Q= 2357\nKHs= 2358\ncmVhZHk= 2359\nIE5v 2360\nIHBvc2l0aW9u 2361\nIG9sZA== 2362\nIGJvb2s= 2363\nYWJsZWQ= 2364\nYnVn 2365\nMjAy 2366\nSGFuZA== 2367\nfTsKCg== 2368\naXNwbGF5 2369\nYXZpbmc= 2370\nMDQ= 2371\nIGdvdmVy 2372\nIHZlcnNpb24= 2373\nU3lzdGVt 2374\nbmVjdA== 2375\ncmVzcG9uc2U= 2376\nU3R5bGU= 2377\nVXA= 2378\nYW5ndQ== 2379\nIHRocmVl 2380\naW5pdA== 2381\nZXJv 2382\nIGxhdw== 2383\nZW5kaWY= 2384\nIGJhc2U= 2385\nZW1haWw= 2386\nKGw= 2387\nX1Y= 2388\nIGNvbmY= 2389\nQVRF 2390\nIGR1cmluZw== 2391\ndGVz 2392\nIGNvbnNvbGU= 2393\nIFBy 2394\nIHNwZQ== 2395\ndmVz 2396\nNjU= 2397\ncGF0aA== 2398\naWFsb2c= 2399\nZGl0aW9u 2400\nX3Rv 2401\nYXJkcw== 2402\nIGFnYWluc3Q= 2403\nZXR3b3Jr 2404\nIFBo 2405\nX0w= 2406\nY3Vy 2407\naW1pdA== 2408\nV2l0aA== 2409\nIHBvd2Vy 2410\naXVt 2411\nJzsKCg== 2412\nIHdvbQ== 2413\nbGVmdA== 2414\nb3VyY2Vz 2415\nYXRyaQ== 2416\nIElt 2417\nIE1hbg== 2418\nb3J0aA== 2419\nJHs= 2420\nODg= 2421\ncXVhbHM= 2422\nZXNl 2423\nX3NpemU= 2424\nIGlzcw== 2425\nb3RhbA== 2426\nLWc= 2427\naXF1ZQ== 2428\ncmFtZQ== 2429\nIHdpZHRo 2430\nZXJn 2431\nKSg= 2432\naXR0bGU= 2433\nVFI= 2434\nIFRoZXk= 2435\nZW5jZXM= 2436\nMDI= 2437\ncmw= 2438\nb25z 2439\nIGxhYmVs 2440\nLnk= 2441\nLXQ= 2442\ndXBkYXRl 2443\nYW5lbA== 2444\nc2M= 2445\nLnRv 2446\nIHByb2plY3Q= 2447\nw7w= 2448\nIGVsZW1lbnQ= 2449\nIHN1Y2Nlc3M= 2450\nCQkK 2451\nLnNo 2452\ncmFt 2453\nY2hlZA== 2454\nKCkpCg== 2455\nICgK 2456\nIGRhdGU= 2457\nIHRvdA== 2458\nX1NU 2459\nQWxs 2460\naWZpY2F0aW9u 2461\nCXZhcg== 2462\nIHRyaQ== 2463\nY2hlbQ== 2464\nbXk= 2465\nIGJpZw== 2466\nIEFk 2467\nIEF0 2468\nb3Rz 2469\nbnVt 2470\nQWN0 2471\nIG1hcA== 2472\nZXJh 2473\nY29wZQ== 2474\nLiQ= 2475\nLOKAnQ== 2476\nIHBvcA== 2477\nIGZldw== 2478\nIGxlbg== 2479\ndWlk 2480\nZXRlcnM= 2481\ndWxlcw== 2482\nw60= 2483\nc291cmNl 2484\naHR0cHM= 2485\nIGRlbQ== 2486\nIGVhcg== 2487\nIyMjIyMjIyMjIyMjIyMjIw== 2488\nIG1hdGNo 2489\nb3JpZXM= 2490\nNDk= 2491\nYWNlcw== 2492\nIENs 2493\nIG5vZGU= 2494\nNzg= 2495\naXJj 2496\nbG9jYWw= 2497\ndW5pdHk= 2498\nfTsK 2499\nIGFub3RoZXI= 2500\nPDw= 2501\nb2dsZQ== 2502\nIHNpdA== 2503\nZXdvcms= 2504\nVEU= 2505\nLkk= 2506\nTlM= 2507\nb2xvZ3k= 2508\nb3VnaHQ= 2509\nLkNvbnQ= 2510\nPj4= 2511\nIGNhcmU= 2512\nc3RhdGU= 2513\nCXByaXZhdGU= 2514\nIGVmZmVjdA== 2515\nKysp 2516\nX2ZpbGU= 2517\nZW5kaW5n 2518\nTGluZQ== 2519\nRm9y 2520\naW9y 2521\nIFNj 2522\nIGZ1bg== 2523\nLlNpemU= 2524\nCWVsc2U= 2525\nXSk= 2526\nc3RhcnQ= 2527\ndmlvdXM= 2528\nIH0s 2529\nb3Vycw== 2530\nIGxlZw== 2531\nIHNlcnZpY2U= 2532\nIHNpbmNl 2533\naXJvbg== 2534\nTGFiZWw= 2535\nIG5vbg== 2536\nIGxvcw== 2537\naWN0aW9u 2538\nIGZ1bGw= 2539\nYWN0ZXI= 2540\nYm9hcmQ= 2541\nZ3Jlc3M= 2542\nIHR1cm4= 2543\naXRoZXI= 2544\nMDk= 2545\nLnNpemU= 2546\nIGJvZHk= 2547\ncmVzaA== 2548\nZXR1cm4= 2549\nMTk5 2550\nKF8= 2551\neWxlcw== 2552\nb3JtYWw= 2553\ncGk= 2554\nIHNvbWV0aGluZw== 2555\nIS0t 2556\ndWludA== 2557\nIHByb2R1 2558\nIHN0YW5k 2559\nIHByb2JsZQ== 2560\nIGF2YWlsYWJsZQ== 2561\nbXQ= 2562\nIEJs 2563\nIC4uLg== 2564\nIGJsb2Nr 2565\nSW5wdXQ= 2566\nIGtlZXA= 2567\nQ291bnQ= 2568\nb3Blbg== 2569\nIFsn 2570\nIHRocm93 2571\ndWlsZGVy 2572\nQWN0aW9u 2573\nIHRoaW5ncw== 2574\nVHJ1ZQ== 2575\nIHVybA== 2576\nIEJv 2577\ncHJpbnRm 2578\nIHJlZA== 2579\nanM= 2580\nLmNyZWF0ZQ== 2581\nIE9y 2582\nU3RhdHVz 2583\nSW5zdGFuY2U= 2584\nIGNvbnRyb2w= 2585\nIGNvbWU= 2586\nIGN1c3RvbQ== 2587\nbG9jYXRpb24= 2588\nMDc= 2589\nbW9kZWw= 2590\nIA0K 2591\nIHNvdXJjZQ== 2592\nIGVhcw== 2593\nLm91dA== 2594\nXQoK 2595\nb25leQ== 2596\nIGF3YWl0 2597\nIHBhcnRpYw== 2598\nQVA= 2599\ndWJsaXNo 2600\nb2Rlcw== 2601\nX3Bybw== 2602\ncGx5 2603\ncml0ZXI= 2604\nIHByb3Y= 2605\nIG1pbGw= 2606\nSFQ= 2607\nXSkK 2608\nIGNoYW5n 2609\nIGFzaw== 2610\nICAgICAgICAgICAgICAgICAgICAg 2611\nIG91dHB1dA== 2612\nIGVtYWls 2613\nNjg= 2614\nLnB1c2g= 2615\nIH0NCg0K 2616\naW5hdGlvbg== 2617\nNDc= 2618\nYXRyaXg= 2619\nVGFibGU= 2620\ndWNjZXNz 2621\nXSk7Cg== 2622\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 2623\nIGRpc2M= 2624\nKFs= 2625\nIGJ1c2luZXNz 2626\naGVpZ2h0 2627\nLmh0bWw= 2628\ndGE= 2629\nZmllbGQ= 2630\nIHJlcXVpcmVk 2631\nX1I= 2632\nIGdvdmVybg== 2633\nfQ0KDQo= 2634\nbGV4 2635\nNTAw 2636\nLiw= 2637\nIFNldA== 2638\ndXJjaA== 2639\nLy8v 2640\ndHM= 2641\nYWY= 2642\nIG1pZ2h0 2643\naXN0b3J5 2644\nU3Ry 2645\nIG5ldmVy 2646\nUmVzcG9uc2U= 2647\nYXJzZQ== 2648\nYWRh 2649\nIEhvdw== 2650\nICop 2651\nIDs= 2652\nIGhhcmQ= 2653\nQWQ= 2654\nIGludGVybg== 2655\ndXNlZA== 2656\nKGRhdGE= 2657\nbW9k 2658\nYW5uZWw= 2659\nIG5w 2660\ndWdn 2661\nIC8+Cg== 2662\nIGNhbGxlZA== 2663\nYm9keQ== 2664\nIGNobw== 2665\nKHI= 2666\nX3NldA== 2667\naXJk 2668\nID49 2669\nIH07Cg== 2670\nIG9wdGlvbnM= 2671\nIEdlbmVy 2672\nIGhlaWdodA== 2673\nUG9pbnQ= 2674\nWW91 2675\nZXR5 2676\nQ2xpY2s= 2677\nIHNtYWxs 2678\nIGlkZQ== 2679\nIGFjY2Vzcw== 2680\nYW5ndWFnZQ== 2681\nIHByb3RlY3RlZA== 2682\nIGpvYg== 2683\nIFRoZXJl 2684\nRGVm 2685\nIGFkZHJlc3M= 2686\nIHVpbnQ= 2687\nTm90 2688\nb28= 2689\nYXBz 2690\nPGRpdg== 2691\nYWluZWQ= 2692\nYXR1cg== 2693\nIHN1bQ== 2694\nLXc= 2695\nIERhdGU= 2696\nIGxpdHRsZQ== 2697\nIGZyaQ== 2698\nWVBF 2699\nIHBvcnQ= 2700\nZWg= 2701\ncHJpbmc= 2702\nX3BhdGg= 2703\nIHN0YXR1cw== 2704\nMDY= 2705\nYWlt 2706\nYm9vbA== 2707\nIGFwcGU= 2708\nIG9z 2709\nLm5hbWU= 2710\nZW5zaW9u 2711\nX0c= 2712\nIHVwZGF0ZQ== 2713\nQ29uZmln 2714\nYWZm 2715\nRVJS 2716\nIDw9 2717\nYXRlbHk= 2718\nI2lm 2719\ndWN0aW9u 2720\nOTU= 2721\nIFRl 2722\nIGxpbms= 2723\nIFVzZXI= 2724\nLmZpbmQ= 2725\nLm9yZw== 2726\nbWU= 2727\nIGdpdmVu 2728\nT3V0 2729\nI2VuZGlm 2730\nIGJldHRlcg== 2731\nUGFnZQ== 2732\nIGZlZWw= 2733\nZW5u 2734\nTUw= 2735\nIGFscmVhZHk= 2736\nIGluY2x1ZGluZw== 2737\nb29nbGU= 2738\ncnU= 2739\naWNhbGx5 2740\ncHJvcA== 2741\nbGVhbg== 2742\nb3V0ZXI= 2743\nIGFsd2F5cw== 2744\nb3JkaW5n 2745\nSWY= 2746\nb3JhZ2U= 2747\nIHBhcmVudA== 2748\ndmlz 2749\nCQkJCQkJCQ== 2750\nIGdvdA== 2751\nc3RhbmQ= 2752\nIGxlc3M= 2753\nL3M= 2754\nIEFzcw== 2755\nYXB0 2756\naXJlZA== 2757\nIEFkZA== 2758\nIGFjY291bnQ= 2759\ncGxveQ== 2760\nIGRlcg== 2761\ncmVzZW50 2762\nIGxvdA== 2763\nIHZhbGlk 2764\nCWQ= 2765\nIGJpdA== 2766\ncG9uZW50cw== 2767\nIGZvbGxvd2luZw== 2768\nX2V4 2769\nU09O 2770\nIHN1cmU= 2771\nb2NpYWw= 2772\nIHByb20= 2773\nZXJ0aWVz 2774\naGVhZGVy 2775\nLnBybw== 2776\nIGJvb2xlYW4= 2777\nIHNlYXJjaA== 2778\na2Vu 2779\nIG9yaWc= 2780\nIGVy 2781\nRWQ= 2782\nRU0= 2783\nYXV0 2784\nbGluZw== 2785\nYWxpdHk= 2786\nQnlJZA== 2787\nYmVk 2788\nCWNhc2U= 2789\nNDY= 2790\nZXRoZXI= 2791\ncG9zaXQ= 2792\nIGludmVzdA== 2793\nIE9S 2794\nIHNheXM= 2795\nbWlzc2lvbg== 2796\nQU1F 2797\nIHRlbXA= 2798\nb2Fk 2799\nIHJlc3Q= 2800\naW5mbw== 2801\nIGludGVyZXN0 2802\nQXJn 2803\nIHBlcmZvcm0= 2804\ncG9ucw== 2805\nIFZpZXc= 2806\nIHZlcg== 2807\nbGli 2808\nKGNvbnN0 2809\nVXRpbA== 2810\nTGlzdGVuZXI= 2811\nYXJnZQ== 2812\nNzc= 2813\nIG11bHQ= 2814\nIGRpZQ== 2815\nIHNpdGU= 2816\nLi4vLi4v 2817\nRUw= 2818\nIHZhbHVlcw== 2819\nIH0pCg== 2820\ncGVu 2821\nTm8= 2822\naWNybw== 2823\nIGJlaA== 2824\nICcuLw== 2825\nYWN5 2826\ncmVj 2827\nKCktPg== 2828\nCSAgIA== 2829\nIikp 2830\nQ29udGVudA== 2831\nX1c= 2832\ncGxlbWVudA== 2833\nIHdvbg== 2834\nIHZpZGVv 2835\nYWRp 2836\ncG9pbnQ= 2837\nJSU= 2838\nMDM= 2839\nIGds 2840\nZXJ2ZWQ= 2841\ndmlyb24= 2842\nSUY= 2843\ndXRlZA== 2844\n44M= 2845\nJ20= 2846\nIGNlcnQ= 2847\nIHByb2Y= 2848\nIGNlbGw= 2849\nYXJp 2850\nIHBsYXllcg== 2851\nYWlz 2852\nIGNvc3Q= 2853\nIGh1bQ== 2854\nKFI= 2855\nIG9mZmlj 2856\na3M= 2857\nLnRleHQ= 2858\nYXR1cmVz 2859\nIHRvdGFs 2860\nICovCgo= 2861\nb3Bl 2862\nIHN0YXQ= 2863\nVU0= 2864\nIGxvYWQ= 2865\naWdodHM= 2866\nIGNsZWFy 2867\ndXJv 2868\nIHRlY2hu 2869\ndXBwb3J0 2870\nSVI= 2871\nIHJvdw== 2872\nIHNlZW0= 2873\nIHE= 2874\nIHNob3J0 2875\nIE5vdA== 2876\naXBw 2877\nR3JvdXA= 2878\nc2VjdGlvbg== 2879\nbWF4 2880\naXJs 2881\nIG92ZXJyaWRl 2882\nIGNvbXBhbnk= 2883\nIGRvbmU= 2884\nIik7DQo= 2885\nIGdyZQ== 2886\nLlJl 2887\nIGJlbGll 2888\ncmlzdA== 2889\nIGhlYWx0aA== 2890\nQU5U 2891\nKCkKCg== 2892\nIEJl 2893\nLnZhbHVl 2894\nIEdy 2895\nb3R0b20= 2896\nIGFyZ3M= 2897\nUFQ= 2898\nc3RhdHVz 2899\nZnVuYw== 2900\ndW1lbnRz 2901\nLWg= 2902\nTnVtYmVy 2903\nOg0K 2904\nIExvZw== 2905\nZXJ2ZXI= 2906\nICksCg== 2907\nYW1lbnQ= 2908\nIG9iag== 2909\naW5j 2910\nIGNoaWxkcmVu 2911\naWN5 2912\nSVo= 2913\nYW5kcw== 2914\nYWJseQ== 2915\nIGRpc3RyaWI= 2916\nIGN1cg== 2917\nZXJpYWw= 2918\nIGRheXM= 2919\ncmVhdGVk 2920\ncmVjdA== 2921\nLWw= 2922\naXJt 2923\naWRkZW4= 2924\nb21i 2925\nIGluaXRpYWw= 2926\nLmpz 2927\nIOI= 2928\nUXVlcnk= 2929\nIG9ubGluZQ== 2930\naW1hbA== 2931\nLmNvbg== 2932\nYXU= 2933\nVXJs 2934\nY29udHJvbA== 2935\naXJlY3Rpb24= 2936\nIGluc3RhbmNl 2937\nT1JU 2938\nIEZy 2939\nd2hlcmU= 2940\nIGphdmF4 2941\nIG9yZ2Fu 2942\nYXB0ZXI= 2943\nIHJlYXNvbg== 2944\nb3B0aW9ucw== 2945\nNTk= 2946\nIE1hcg== 2947\nKGE= 2948\nIHdpdGhpbg== 2949\nLuKAnQoK 2950\nT0RF 2951\nX0RF 2952\nYWRtaW4= 2953\nZW5kZWQ= 2954\nIGRlc2lnbg== 2955\nIERhdGE= 2956\ndW5l 2957\nIEZpbGU= 2958\ncm9vdA== 2959\nIGNlbnQ= 2960\nIGFycg== 2961\nX2FkZA== 2962\nbGVu 2963\ncGFnZQ== 2964\nLCc= 2965\nX3N0cg== 2966\nIGJybw== 2967\nYWJpbGl0eQ== 2968\nb3V0aA== 2969\nNTg= 2970\nL2M= 2971\ncG9zZQ== 2972\naXJ0dWFs 2973\nZWFyY2g= 2974\nX3VybA== 2975\nYXJnaW4= 2976\nSHR0cA== 2977\nIHNjaG9vbA== 2978\nYXZh 2979\nIGNvbnNpZGVy 2980\nLmxhYmVs 2981\nIEFycmF5 2982\nNDI= 2983\nd2Vi 2984\nb3B0 2985\nLnByaW50bG4= 2986\ndWxhdGlvbg== 2987\nIGZ1bmM= 2988\nUEw= 2989\nICJc 2990\nIFRleHQ= 2991\nYWN0b3J5 2992\nKGZ1bmN0aW9u 2993\nbnVsbA== 2994\nIGVuZw== 2995\nZG93bg== 2996\nIGluY2x1ZGU= 2997\nIEVu 2998\nIERy 2999\nIGRi 3000\nISE= 3001\nc2lkZQ== 3002\nIGluaXQ= 3003\ncXVpcmVk 3004\nIFNoZQ== 3005\nQ29sdW1u 3006\ncmVhY3Q= 3007\nIGFubg== 3008\nIHN0b3A= 3009\nIGxhdGVy 3010\nIFRoYXQ= 3011\nZW50aW9u 3012\nZGY= 3013\nVUc= 3014\nSUxF 3015\nIGNsaWVudA== 3016\ncmFmdA== 3017\nZmZlcg== 3018\nUE9TVA== 3019\nZWxwZXI= 3020\nIGxvdmU= 3021\ncXVvdGU= 3022\nb3Vk 3023\nIGpzb24= 3024\nIGFibGU= 3025\nIG1lbg== 3026\nQVg= 3027\nIENvcHlyaWdodA== 3028\nw7Y= 3029\nYXZpZw== 3030\ncmVx 3031\nQ2xpZW50 3032\nfSk7Cg== 3033\nLkNvbQ== 3034\nZXJj 3035\naWx0 3036\ncGVjaWFs 3037\nX2NvbQ== 3038\ncm9vbQ== 3039\nLk5hbWU= 3040\nIGdpdmU= 3041\nYW1i 3042\naWtl 3043\nIGNvbmRpdGlvbg== 3044\nY2xpZW50 3045\nYXRvcnM= 3046\nOiI= 3047\nIGNvcHk= 3048\ndXR1cmU= 3049\naXZlcnNpdHk= 3050\nZXJuYWw= 3051\ne3s= 3052\nIENhbg== 3053\nb3VuYw== 3054\nZG8= 3055\nIG9jYw== 3056\nIGFwcHJv 3057\ndGhlcnM= 3058\nemU= 3059\nIGVpdGhlcg== 3060\nIEZs 3061\nIGltcG9ydGFudA== 3062\nIGxlYWQ= 3063\nYXR0cg== 3064\nQVJU 3065\nRXF1YWw= 3066\nIGRh 3067\nZXRjaA== 3068\nZW50aXR5 3069\nIGZhbWlseQ== 3070\nYWRkaW5n 3071\nIG9wdGlvbg== 3072\nIGV4aXN0 3073\naWNh 3074\nIE9iamVjdA== 3075\nNjk= 3076\nJ3Zl 3077\ndmVycw== 3078\naXRpb25hbA== 3079\nNjc= 3080\nb3V0cHV0 3081\nIFRydWU= 3082\nIE9G 3083\nX3RpbWU= 3084\nIG9mZmVy 3085\nIH0pOwoK 3086\nSEVS 3087\nZWdpbg== 3088\nIiI= 3089\nIHdhdGVy 3090\nIGNoZQ== 3091\nIE15 3092\nb3JlZA== 3093\nIHN0ZXA= 3094\nYW5jZXM= 3095\nQ0s= 3096\nQVk= 3097\n4Lg= 3098\nc3RydWN0aW9u 3099\nKEM= 3100\nMzAw 3101\nb3VjaA== 3102\nU3RyZWFt 3103\nYWN0aXZl 3104\nYW1h 3105\nRW50aXR5 3106\ncHJvZHVjdA== 3107\nKCl7Cg== 3108\nIGdvdmVybm1lbnQ= 3109\nIElE 3110\nYWpvcg== 3111\nQW5k 3112\nIGRpc3BsYXk= 3113\n0Ls= 3114\nIHRpbWVz 3115\nIGZvdXI= 3116\nIGZhcg== 3117\nIHByZXNlbnQ= 3118\nIE5T 3119\nIFwK 3120\ndWVzdA== 3121\nIGJhcw== 3122\nZWNobw== 3123\nY2hpbGQ= 3124\naWZpZXI= 3125\nSGFuZGxlcg== 3126\nIGxpYg== 3127\nUHJvcGVydHk= 3128\ndHJhbnNsYXRpb24= 3129\nIHJvb20= 3130\nIG9uY2U= 3131\nIFtd 3132\nY2VudGVy 3133\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 3134\nIHJlc3VsdHM= 3135\nIGNvbnRpbnVl 3136\nIHRhbGs= 3137\nX2dldA== 3138\nIGdyb3c= 3139\nLnN3 3140\nZWI= 3141\nIFB1YmxpYw== 3142\nT1A= 3143\nZWN1dGU= 3144\nb2xz 3145\nICoq 3146\nIik7Cgo= 3147\nIG1hc3M= 3148\ndXJlZA== 3149\nLmNsYXNz 3150\nb21pYw== 3151\nIG1lYW4= 3152\naXBz 3153\nIGF1dA== 3154\nKTsNCg0K 3155\nIHVudGls 3156\nIG1hcmtldA== 3157\nIGFyZWE= 3158\ndWl0 3159\nIGxlbmd0aA== 3160\nIFdpdGg= 3161\nc3RydWN0b3I= 3162\nZXZlbnQ= 3163\nIj48 3164\nIFNw 3165\nSVY= 3166\nIG11cw== 3167\naWZm 3168\nIGtpbmQ= 3169\nYXV0aG9y 3170\nb3VuZHM= 3171\nbWI= 3172\nX2tleQ== 3173\nNDE= 3174\nd2lkdGg= 3175\ncG9zaXRvcnk= 3176\nIGxpZ2h0 3177\ndWs= 3178\nUm93 3179\nb2hu 3180\nYWxm 3181\ndmlyb25tZW50 3182\nYXBwZXI= 3183\nb2xsZWN0aW9ucw== 3184\nIHNpZGU= 3185\nX2luZm8= 3186\nIGV4YW1wbGU= 3187\naW1hcnk= 3188\nIHdy 3189\nIGNhbXA= 3190\nY3JpYmU= 3191\nMjU1 3192\nIi8= 3193\nIG1pc3M= 3194\nd2F5 3195\nIGJhc2Vk 3196\nIHBsYW4= 3197\nVmlz 3198\nb21haW4= 3199\ndW5r 3200\nIGF3YXk= 3201\nVVA= 3202\nPFQ= 3203\nT1M= 3204\naW9k 3205\nIE1vbg== 3206\n4oCZcmU= 3207\nIGxpaw== 3208\nw6c= 3209\naXZlbHk= 3210\nLnY= 3211\naW1lcg== 3212\naXplcg== 3213\nU3Vi 3214\nIGJ1dHRvbg== 3215\nIFVw 3216\nIGV4cGVyaWVuY2U= 3217\nQ0w= 3218\nIHJlbmRlcg== 3219\nX3ZhbHVl 3220\nIG5lYXI= 3221\nVVJM 3222\nYWx0 3223\nIGNvdW50cnk= 3224\naWJpbGl0eQ== 3225\nNTc= 3226\nKCksCg== 3227\nZWFk 3228\nIGF1dGhvcg== 3229\nIHNwZWNpZmlj 3230\nYmFzZQ== 3231\nKG5hbWU= 3232\nb25lcw== 3233\nIERv 3234\nIGFsb25n 3235\neWVhcg== 3236\nIGV4cHJlc3M= 3237\nLic= 3238\nZW52 3239\nIGJlZ2lu 3240\nIHNvZnR3YXJl 3241\nIGltcA== 3242\nIHdpbg== 3243\nw7Nu 3244\nIHRoaW5n 3245\nVHJhbnM= 3246\nIFRIRQ== 3247\nIDw/ 3248\nIHdoeQ== 3249\nIGRvZXNu 3250\naWo= 3251\nZ2luZw== 3252\nCWc= 3253\nIHNpbmdsZQ== 3254\nb2Zmc2V0 3255\nYXJuaW5n 3256\nb2dyYXBo 3257\nbGV5 3258\nX2NvdW50 3259\nIGFuYWw= 3260\nY3JlYXRl 3261\nL20= 3262\nIFJlZw== 3263\nOTg= 3264\ndW5jaA== 3265\nPSQ= 3266\naXNr 3267\nIHJpZ2h0cw== 3268\nKE0= 3269\nICIiIgo= 3270\nYXBlcg== 3271\nLm1vZGVs 3272\nIHBv 3273\nZW1wdHk= 3274\nYXJ0bWVudA== 3275\nIGFudA== 3276\nIFdoZW4= 3277\nIHdvbWVu 3278\nIEVk 3279\nIHNlYXNvbg== 3280\nIGRlc3Q= 3281\nw6M= 3282\nKGg= 3283\nIHBvc3NpYmxl 3284\nIHNldmVy 3285\nIGJ0bg== 3286\nIGRpZG4= 3287\nIHNlbnQ= 3288\nIGVuYw== 3289\nIGNvbW1hbmQ= 3290\nIF0sCg== 3291\nX3g= 3292\nIHJlY2VudA== 3293\nb2x1dGlvbg== 3294\ndmVjdG9y 3295\nIEJ5 3296\nIE1heQ== 3297\nIEFjdA== 3298\nu78= 3299\nIG1vbmV5 3300\nSU5U 3301\nYnNpdGU= 3302\nCXA= 3303\nLg0K 3304\n77u/ 3305\nc2w= 3306\nYXR0ZXJu 3307\nIENsYXNz 3308\nIHRvbGQ= 3309\ndWRpbw== 3310\nY3VycmVudA== 3311\nIGVxdQ== 3312\nIGF1dG8= 3313\nIFN0YXRl 3314\nZGE= 3315\nbXNn 3316\nKSk7Cgo= 3317\nIHdvcmtpbmc= 3318\nIHF1ZXJ5 3319\nIEJy 3320\nIHdpbmRvdw== 3321\nYXV0aA== 3322\nb25seQ== 3323\nCXQ= 3324\nIGxlYXN0 3325\nYWdu 3326\nIGV4cGw= 3327\naXR0ZXI= 3328\nYXJpbmc= 3329\nIGNvbHVtbg== 3330\nIEdlbmVyYWw= 3331\nIjoi 3332\nZXJhbA== 3333\ncmlvcg== 3334\nIHJlY29yZA== 3335\nSUI= 3336\nRVg= 3337\nIGRhdA== 3338\nIG1ha2luZw== 3339\ndWVk 3340\nIENhcg== 3341\nZW1w 3342\nIi4= 3343\nIE1lZA== 3344\nIGNsb3Nl 3345\nIHBlcmNlbnQ= 3346\nIHBhc3Q= 3347\nKGc= 3348\nOig= 3349\nIHdyaXRl 3350\nIG1vdmU= 3351\nIHBhdA== 3352\nQ29udHJvbA== 3353\nLlRv 3354\nIHZp 3355\nKi8K 3356\naW5hdGU= 3357\nJ2xs 3358\nYWdlZA== 3359\nTnVsbA== 3360\nIHNwZWNpYWw= 3361\nSVpF 3362\nIGNpdHk= 3363\nLyoK 3364\nIEVuZw== 3365\naXhlZA== 3366\naW5hcnk= 3367\ncHk= 3368\nIGVmZg== 3369\nYXJpbw== 3370\nIHRlbGw= 3371\nYXZvcg== 3372\nIHNlbGVjdA== 3373\nbGV2ZWw= 3374\naW11bQ== 3375\nb3Blcg== 3376\nQnVpbGRlcg== 3377\nSVA= 3378\nJyksCg== 3379\nZXNj 3380\nIGZvbnQ= 3381\nIjsKCg== 3382\nIEFt 3383\naXNoZWQ= 3384\naWxscw== 3385\nSW50ZXI= 3386\nT1c= 3387\nIGNvdXJzZQ== 3388\nIGxhdGU= 3389\naWRkbGU= 3390\nNDM= 3391\nIGFtb3VudA== 3392\nIGFzeW5j 3393\naW5v 3394\nY3Vs 3395\nIOw= 3396\nYW5kbGU= 3397\nX3VzZXI= 3398\nIGJlbg== 3399\nIENhbA== 3400\nICRf 3401\nIFJlcA== 3402\nIGVub3VnaA== 3403\nVG9rZW4= 3404\nLnVzZXI= 3405\nKGo= 3406\nU2M= 3407\nV2lkdGg= 3408\nbm93 3409\nYXRmb3Jt 3410\nIGxvb2tpbmc= 3411\nIGhvbGQ= 3412\nTW9kdWxl 3413\nSVRZ 3414\ndm8= 3415\naXNvbg== 3416\nLkRhdGE= 3417\neWM= 3418\nIHBvdA== 3419\nIFRydW1w 3420\naWR1YWw= 3421\naWRlcw== 3422\ncnQ= 3423\nIHByb3BlcnR5 3424\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 3425\nYW1ld29yaw== 3426\nZ28= 3427\nIGxvdw== 3428\nIHBhcmE= 3429\nIHByaWNl 3430\ndXJ5 3431\nIHRvZGF5 3432\ncm95 3433\nICcv 3434\nIHBvbGl0 3435\nICcn 3436\neW1i 3437\nUGg= 3438\nIGFkdg== 3439\nIGF0dGFjaw== 3440\nIFN0ZQ== 3441\nUk9N 3442\nNDAw 3443\nYW5h 3444\nIG1lYW5z 3445\nIHN0b3J5 3446\naWRz 3447\nYWtlbg== 3448\nIG1lZXQ= 3449\nIG1vbQ== 3450\nIOKAmA== 3451\nID8+ 3452\nIGRlbg== 3453\nb2JpbGU= 3454\nY2hhbmdl 3455\nICAgICAgICAgICAgCg== 3456\naWNp 3457\nbmE= 3458\nIEZvcm0= 3459\nIHNvcnQ= 3460\nU2VsZWN0 3461\ncGFyZQ== 3462\nIHRob3VnaHQ= 3463\nX2Nvbg== 3464\nIHRhc2s= 3465\nb2N1cw== 3466\nIERF 3467\nIE1pbg== 3468\nIG9wdA== 3469\nCWJyZWFr 3470\ndW1lcg== 3471\nS0U= 3472\ndGhlbg== 3473\nIGRldA== 3474\nIFRlc3Q= 3475\ncG9ydHM= 3476\nIHJldmlldw== 3477\nKCcv 3478\nbW92ZQ== 3479\nIHN3aXRjaA== 3480\nRVJU 3481\ncGF0Y2g= 3482\nYW5ub3Q= 3483\n44I= 3484\nIGFib3Zl 3485\naXRpdmU= 3486\nNTY= 3487\nIHF1ZXN0aW9u 3488\nIFF1 3489\n44CCCgo= 3490\nZ2xl 3491\nIHdvcmQ= 3492\nIHByb3ZpZGU= 3493\nIFJldHVybg== 3494\nIHJlc2VhcmNo 3495\nw6Nv 3496\ndXN0cg== 3497\nIHB1Ymxpc2g= 3498\nY2hlbWE= 3499\nfX0= 3500\nIENPTg== 3501\nLWlu 3502\nYWxsYmFjaw== 3503\nIGNvdmVy 3504\nXFw= 3505\nY29sb3I= 3506\nIElT 3507\nIHdoZXRoZXI= 3508\naW1hdGU= 3509\naXNj 3510\nQmFy 3511\nIGRpdg== 3512\nQmU= 3513\nb3Vybg== 3514\nIGhhdmluZw== 3515\nbGVt 3516\ncGxheWVy 3517\nYWJz 3518\nYW1lcmE= 3519\nbmV5 3520\nIGV4Yw== 3521\nZ2V0aGVy 3522\ncGxpZWQ= 3523\nYW8= 3524\nWyQ= 3525\nICsr 3526\naXBl 3527\nc2hvdw== 3528\nL2Q= 3529\nWzo= 3530\nYWdlbWVudA== 3531\nbGV2 3532\nX0lE 3533\nOTc= 3534\ncmFyeQ== 3535\nYWRlcw== 3536\nX3Nl 3537\nYXVzZQ== 3538\nIGVtcGxveQ== 3539\nICovDQo= 3540\nIGZyZQ== 3541\nICdA 3542\nIGNvbXBsZXQ= 3543\nIGxhcmdl 3544\ncmFs 3545\nXHg= 3546\nIGZhYw== 3547\nPFN0cmluZw== 3548\nIGNyZWF0ZWQ= 3549\ndXBlcg== 3550\nLnN0YXRl 3551\nIGhvc3Q= 3552\nZW5lcmlj 3553\nL2I= 3554\nKCE= 3555\nd2hpbGU= 3556\naWFz 3557\nQlVH 3558\nICk7Cgo= 3559\nIHJvbGU= 3560\nUmVn 3561\nIENvbG9y 3562\nU3RhcnQ= 3563\nIHBvcm4= 3564\ndG9w 3565\nIHdlYg== 3566\nIGRldg== 3567\nIGRlYWw= 3568\nKyspCg== 3569\nSW50ZWdlcg== 3570\ncG9zaXRpb24= 3571\nLm9u 3572\nICgi 3573\n5Lg= 3574\nIHByb2JsZW0= 3575\nc3Y= 3576\nIHByZXNz 3577\nQUJMRQ== 3578\nQVRJT04= 3579\nIFNlZQ== 3580\nYW5jaA== 3581\nIHRob3VnaA== 3582\nbGVlcA== 3583\nIDwhLS0= 3584\nIHBvaW50cw== 3585\nICAgICAgICAgICAgICAgICAgICAgICAgIA== 3586\nLko= 3587\nIDo6 3588\ncHRy 3589\nREI= 3590\nKys7Cg== 3591\nLnBuZw== 3592\nbm9kZQ== 3593\nc29mdA== 3594\ncG9uZA== 3595\nIGV2ZXI= 3596\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 3597\nTWVudQ== 3598\nKCcj 3599\nIHNlcnZpY2Vz 3600\ncGc= 3601\nfSkK 3602\ncGFyYW1z 3603\nIGFjdHVhbGx5 3604\nICIv 3605\nRW1wdHk= 3606\nTWV0aG9k 3607\nIGlkZW50 3608\ndW5pYw== 3609\nIG1pbGxpb24= 3610\nIGFmZg== 3611\nc3R5bGU= 3612\nIGNvbmM= 3613\naW9z 3614\naWdubWVudA== 3615\nVUxU 3616\nUHI= 3617\nIjsNCg== 3618\nIHVuZGVyc3RhbmQ= 3619\ndWFyeQ== 3620\nIGhhcHBlbg== 3621\nIHNlcnZlcg== 3622\nIENv 3623\nU0M= 3624\nIGxlcw== 3625\nIGZpbGVz 3626\nR3JpZA== 3627\nc3Fs 3628\nIG9mdGVu 3629\nIGluZm8= 3630\nX3Ry 3631\nc3Jj 3632\nb255 3633\nIHNwYWNl 3634\ndW1i 3635\nIHBhc3N3b3Jk 3636\nIHN0b3Jl 3637\nLAoK 3638\nIFdoYXQ= 3639\nZ2Vk 3640\nIEZhbHNl 3641\nVXM= 3642\nc3dlcg== 3643\nX2luZGV4 3644\nIGZvcm1hdA== 3645\nbW9zdA== 3646\nc20= 3647\nTmV3 3648\nIGRldGFpbHM= 3649\nIHByb2I= 3650\nIEFORA== 3651\nKCkNCg== 3652\naWxhcg== 3653\nICR7 3654\ncnlwdA== 3655\nLkNvbGxlY3Rpb25z 3656\nJHRoaXM= 3657\nIEZyZWU= 3658\nX29m 3659\nKGZhbHNl 3660\nZGF0ZWQ= 3661\nID4+ 3662\nIGZhY2U= 3663\nQ1RJT04= 3664\nIHNhdmU= 3665\nIHR5cA== 3666\nZGV2 3667\nKCIj 3668\nQUdF 3669\nY29udGFpbmVy 3670\nZWRpdA== 3671\nUUw= 3672\nIGl0ZW1z 3673\nIHNvY2lhbA== 3674\naWVu 3675\nIFJlYWN0 3676\nKS4KCg== 3677\nIG1hcg== 3678\nIHJlZHU= 3679\nIFJF 3680\nLnB1dA== 3681\nIG1ham9y 3682\nQ2VsbA== 3683\nbmV4dA== 3684\nIGV4cGVjdGVk 3685\nIHlldA== 3686\nIGluZGl2 3687\ndHJpYnV0ZXM= 3688\nYXRpcw== 3689\nYW1lZA== 3690\nIGZvb2Q= 3691\nU291cmNl 3692\nKHN0cmluZw== 3693\nICsK 3694\naXRlcw== 3695\nZHI= 3696\nIG1lbWJlcnM= 3697\nIGNvbWI= 3698\naXRlbXM= 3699\nIFBlcg== 3700\nVEg= 3701\nPVRydWU= 3702\nIGJhcg== 3703\nX1NF 3704\nY29tbQ== 3705\nKHc= 3706\nKQoKCg== 3707\nIHNlbmQ= 3708\nIGluYw== 3709\ndW5zaWduZWQ= 3710\nRkE= 3711\nIHBhcmFtcw== 3712\nYXBwaW5n 3713\ncm9z 3714\ndWdpbg== 3715\nZmE= 3716\nIGNvbm5lY3Rpb24= 3717\nIH07Cgo= 3718\nIGJlY29tZQ== 3719\nTW9kZQ== 3720\nIGV2 3721\nIGRpZmY= 3722\nIFVuaXRlZA== 3723\nSGVpZ2h0 3724\nZnVsbHk= 3725\naW1hZ2Vz 3726\nIG1ha2Vz 3727\nIGdsb2JhbA== 3728\nIGNvbnRhY3Q= 3729\nJzoK 3730\nIGFicw== 3731\n0LDQ 3732\nZmxvYXQ= 3733\nIGV4Y2VwdA== 3734\nIFBvbA== 3735\nQ2hpbGQ= 3736\ndHlw 3737\nIGNlcnRhaW4= 3738\nacOzbg== 3739\nT1VU 3740\nIGltcHJv 3741\naWxlcw== 3742\nIC0tPgo= 3743\nIFBhcnQ= 3744\ndmFsdWVz 3745\nb3Nz 3746\nLyoq 3747\naWxpdA== 3748\nIEV2ZW50 3749\nY3VyaXR5 3750\nc3Rlcg== 3751\nIGNoYXJhY3Rlcg== 3752\nMTk4 3753\nIG5ld3M= 3754\nICIs 3755\nIGRldmljZQ== 3756\nY2Vs 3757\nbG9naW4= 3758\naGVldA== 3759\nRGVmYXVsdA== 3760\nQCI= 3761\nCSA= 3762\nY2xpY2s= 3763\nKHZhbHVl 3764\nIEFi 3765\nIHByZXZpb3Vz 3766\nRVJST1I= 3767\nb2NhbA== 3768\nIG1hdGVyaWFs 3769\nIGJlbG93 3770\nIENocmlzdA== 3771\nIG1lZGlh 3772\nY292ZXI= 3773\nIFVJ 3774\nIGZhaWw= 3775\nIGJsYWNr 3776\nIGNvbXBvbmVudA== 3777\nIEFtZXJpY2Fu 3778\nIGFkZGVk 3779\nIGJ1eQ== 3780\nc3RpdA== 3781\nIGNhbWU= 3782\nIGRlbGV0ZQ== 3783\ncHJvcGVydHk= 3784\nb2Rpbmc= 3785\nIGNhcmQ= 3786\ncm9wcw== 3787\nIGh0dHBz 3788\nIHJvb3Q= 3789\nIGhhbmRsZQ== 3790\nQ0M= 3791\nQmFjaw== 3792\nZW1wbGF0ZQ== 3793\nIGdldHRpbmc= 3794\nX2J5 3795\nbWFpbA== 3796\nX3No 3797\nLmFzc2VydA== 3798\nIERlYw== 3799\nKHRydWU= 3800\nIGNvbXB1dA== 3801\nIGNsYWlt 3802\nJz0+ 3803\nIFN1Yg== 3804\nIGFpcg== 3805\nb3Bz 3806\nbmF2 3807\nZW1lbnRz 3808\nKGlk 3809\nIGVudGVy 3810\nYW5nZWQ= 3811\nRW5k 3812\nIGxvY2F0aW9u 3813\nIG5pZ2h0 3814\nIGRvaW5n 3815\nIFJlZA== 3816\nbGlu 3817\nfQoKCg== 3818\ndmlkZXI= 3819\nIHBpY2s= 3820\nIHdhdGNo 3821\nZXNzYWdlcw== 3822\nIGh1bWFu 3823\nIGRhbQ== 3824\ncGVuZA== 3825\nZGly 3826\nIHRheA== 3827\nIGdpcmw= 3828\ncmVldA== 3829\nIGJveA== 3830\nIHN0cm9uZw== 3831\nKHY= 3832\ncmVs 3833\nIGludGVyZmFjZQ== 3834\nIG1zZw== 3835\nZmVjdA== 3836\nX2F0 3837\nIGhvdXNl 3838\nIHRyYWNr 3839\nJyk7Cgo= 3840\namU= 3841\nIEpvaG4= 3842\naXN0cg== 3843\nKFM= 3844\ndWJl 3845\nIGNl 3846\naXR0ZWQ= 3847\nVkVS 3848\nKik= 3849\ncGFyZW50 3850\nIGFwcGxpY2F0aW9u 3851\nYW55 3852\nLnN3aW5n 3853\nIHBhY2s= 3854\nXHU= 3855\nIHByYWN0 3856\nIHNlY3Rpb24= 3857\nY3R4 3858\nIHVuc2lnbmVk 3859\nLlBvaW50 3860\nIE9uZQ== 3861\nxLE= 3862\naXBsZQ== 3863\nYWlk 3864\n0YM= 3865\nVmVjdG9y 3866\nYnl0ZQ== 3867\nIHdhaXQ= 3868\nIMOg 3869\nw6U= 3870\nIHRvZ2V0aGVy 3871\nIHRocm93cw== 3872\nRk8= 3873\nJykp 3874\naG9zdA== 3875\naXNpbmc= 3876\nLnZpZXc= 3877\nIHRlcm1z 3878\nZnJhbWV3b3Jr 3879\nLXI= 3880\nIGFwcGx5 3881\nIHNlc3Npb24= 3882\nT3B0aW9ucw== 3883\ndWdnZXN0 3884\nIG90aGVycw== 3885\nd2l0dGVy 3886\nIGZ1bmQ= 3887\nSW5pdA== 3888\nX18o 3889\nZW5zb3I= 3890\nR0VU 3891\nIHNldmVyYWw= 3892\naWk= 3893\nW2o= 3894\nSU8= 3895\nIHRlbXBsYXRl 3896\nUG9zaXRpb24= 3897\nIGVjb24= 3898\nYWNoaW5l 3899\nIGls 3900\nLnNwcmluZw== 3901\nbWFpbg== 3902\nZWx0 3903\naW1lbnQ= 3904\nUmVj 3905\nbW0= 3906\nIFVuaXZlcnNpdHk= 3907\ndXJzb3I= 3908\nICAgICAgICAgICAgICAgICAgICA= 3909\nR0w= 3910\naWN0dXJl 3911\naXRodWI= 3912\nY2Vy 3913\nY2FzdA== 3914\nRnJvbQ== 3915\nYWxlcw== 3916\nIHN1YmplY3Q= 3917\ncGFzc3dvcmQ= 3918\nbnk= 3919\nIGVzYw== 3920\nLndyaXRl 3921\n77yM 3922\nV2hhdA== 3923\nLkg= 3924\nIGhpc3Rvcnk= 3925\nIEZl 3926\nIGluZGl2aWR1YWw= 3927\ndW5pdA== 3928\nIC0tPg== 3929\nIGR1 3930\nSVNU 3931\nIHVzZXJz 3932\nZnM= 3933\nZmFsc2U= 3934\ndW50 3935\nVGl0bGU= 3936\nIG1vdA== 3937\nIGZ1dHVyZQ== 3938\nYWNoZWQ= 3939\nIHN0YXJ0ZWQ= 3940\nIG1vZGU= 3941\nICc8 3942\nX2FycmF5 3943\nIGF4 3944\nJ107Cg== 3945\naXJlcw== 3946\nVGhlcmU= 3947\ndWdodA== 3948\ndG1s 3949\ncG9zZWQ= 3950\naWN1bHQ= 3951\nIHRvb2s= 3952\nIGdhbWVz 3953\nIH19 3954\nID8+Cg== 3955\nIHByb2R1Y3Rz 3956\nSXM= 3957\nIGJhZA== 3958\nIERlcw== 3959\nLnBhdGg= 3960\nJwoK 3961\nIFBvc3Q= 3962\nYXZlbA== 3963\nKDo= 3964\nMTUw 3965\nIG5lZWRz 3966\nIGtub3du 3967\nRmw= 3968\nIGV4ZWM= 3969\nIHNlZW4= 3970\nNTE= 3971\ndW1l 3972\nIGJvcmRlcg== 3973\nIGxpdmU= 3974\ndGVtcA== 3975\nUGVy 3976\nIHZhcmlhYmxl 3977\naWV0 3978\nIERlZg== 3979\nIGdl 3980\nZW1l 3981\nX2JhY2s= 3982\nZmlyc3Q= 3983\nIHByb3ZpZGVk 3984\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 3985\nIGZpbGVuYW1l 3986\nIGhvcGU= 3987\ndWx5 3988\nYXV0bw== 3989\nZmluZA== 3990\nX3N0cmluZw== 3991\nYnRu 3992\naXR1ZGU= 3993\nQXR0cmlidXRl 3994\nIHlvdW5n 3995\nLnR4dA== 3996\nIHdlYnNpdGU= 3997\nIFByb3A= 3998\nIGV5 3999\nPigpOwo= 4000\naW9uYWw= 4001\nQVJS 4002\naWN0aW9uYXJ5 4003\ndXJ0aGVy 4004\nLjwv 4005\nQUxM 4006\nIHN0dWR5 4007\naWxp 4008\nIG5ldHdvcms= 4009\neWw= 4010\naXN0YW5jZQ== 4011\nT0s= 4012\nTlU= 4013\ncmVzdA== 4014\nIFNU 4015\naWNyb3NvZnQ= 4016\nIGxpbWl0 4017\nIGN1dA== 4018\nKCk6Cg== 4019\nIGNvdQ== 4020\nb2du 4021\nIHNpemVvZg== 4022\naXZhbA== 4023\nIHdlbnQ= 4024\nLno= 4025\nTGluaw== 4026\nIGZpcmU= 4027\nIGFjcm9zcw== 4028\nIGNvbW11bml0eQ== 4029\ncmVnaW9u 4030\nTkU= 4031\nUmVm 4032\nIG9mZmljaWFs 4033\nIHZpc2l0 4034\nb2x2ZQ== 4035\nIHJlY2VpdmVk 4036\nIHRva2Vu 4037\nIG1vbnRocw== 4038\nIGFuaW0= 4039\nIHBhcnRpY3VsYXI= 4040\nc3R5bGVz 4041\naWNv 4042\nIGVzcw== 4043\nODc= 4044\nLkNvbnRyb2w= 4045\nIMOp 4046\nYmFsbA== 4047\nIGxlYXJu 4048\naW5kaW5n 4049\nVmFy 4050\nIGRlY2w= 4051\nKGVycg== 4052\nTEVDVA== 4053\nT25l 4054\ncGhh 4055\nIH4= 4056\nZm9ydA== 4057\nYXN1cmU= 4058\nIG1pbmQ= 4059\nIEVuZA== 4060\nQ2hlY2s= 4061\nIHF1aWNr 4062\nIiks 4063\nQU5E 4064\ndXRpb25z 4065\nQmFzZQ== 4066\nX19fX19fX18= 4067\nIGNvbW1lbnQ= 4068\nSU5F 4069\n4oCZdmU= 4070\nQnV0 4071\nIEVs 4072\nIFVz 4073\nIGFkbWlu 4074\nbWFyaw== 4075\nIE5hbWU= 4076\nYAo= 4077\nIFR5cGU= 4078\nYW1pYw== 4079\ncGM= 4080\nbG9vcg== 4081\nRlQ= 4082\nIG9wcA== 4083\nY2tldA== 4084\nKS0+ 4085\ndHg= 4086\nIHB1cg== 4087\ndWVs 4088\neW1ib2w= 4089\ndWF0aW9u 4090\nYW5nZXI= 4091\nIGJhY2tncm91bmQ= 4092\nZWNlc3M= 4093\nZWZpbmVk 4094\nLi4uLi4uLi4= 4095\nIGRlc2NyaXB0aW9u 4096\nIHJlcHJlc2VudA== 4097\nIikpOwo= 4098\ncHJlc3Npb24= 4099\ncm93c2Vy 4100\nIHNlcmllcw== 4101\nd2FyZHM= 4102\nNTI= 4103\nKCRf 4104\nYWlzZQ== 4105\nIGhvdA== 4106\nYWNpdHk= 4107\ncmllcw== 4108\nYWN0aW9ucw== 4109\nQ3JlYXRl 4110\nYWRpbw== 4111\nYW1wbGVz 4112\nIG9yaWdpbmFs 4113\nZW5zaXZl 4114\nZm9udA== 4115\nc3RyZWFt 4116\n77u/dXNpbmc= 4117\nLnNwcmluZ2ZyYW1ld29yaw== 4118\nMDAx 4119\nc2VydmVy 4120\nIGJpbGw= 4121\nQUNL 4122\naWxlbmFtZQ== 4123\nIGZyYW1l 4124\nID0K 4125\nRWRpdA== 4126\nYWRpdXM= 4127\nIGRyYXc= 4128\nYW5rcw== 4129\nIGRldGVy 4130\nIGNvbWVz 4131\nX2ludA== 4132\nIGZvcmVhY2g= 4133\nYW5nbGU= 4134\nIGVsZWN0 4135\ncGVjdGVk 4136\nSGVhZGVy 4137\naXN0cmF0aW9u 4138\nRmFsc2U= 4139\nIEdhbWU= 4140\nIGZpbHRlcg== 4141\nQWN0aXZpdHk= 4142\nIGxhcmc= 4143\naW5pdGlvbg== 4144\nICI8 4145\nMjU2 4146\naXNlZA== 4147\nIHJlbW92ZQ== 4148\nIFRyYW5z 4149\nbWV0 4150\nc2Vl 4151\nRm9ybWF0 4152\nQ29tbWFuZA== 4153\nIEVY 4154\nTm9uZQ== 4155\nIGZyb250 4156\nQVNF 4157\nIFJlYw== 4158\nb3VuZGF0aW9u 4159\nIHZv 4160\nOTY= 4161\nPVwi 4162\nKCo= 4163\nQ2hhbmdl 4164\nLldyaXRl 4165\nZ3JvdXA= 4166\naWVudHM= 4167\ndXk= 4168\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 4169\nIGRpZw== 4170\naHI= 4171\nKC0= 4172\nIGdlbg== 4173\nbnVtYmVy 4174\ndmVj 4175\ndXJvcGU= 4176\nZW50cnk= 4177\nTEw= 4178\nIHN0ZQ== 4179\nVmFsaWQ= 4180\nJ10s 4181\nX3BhcmFt 4182\nIHNlbGVjdGVk 4183\nIGFjY29yZGluZw== 4184\nIERpcw== 4185\nIHV0aWw= 4186\nQnVmZmVy 4187\nX2Vycm9y 4188\nIGFzc29jaQ== 4189\nX1NJWkU= 4190\nIHdvcg== 4191\nIHByaW50Zg== 4192\ncmFn 4193\nwqA= 4194\nREQ= 4195\nIFZhbA== 4196\nIGFjdGl2 4197\nRW5n 4198\nZXRpbWU= 4199\nIHZpcnR1YWw= 4200\nYWlnbg== 4201\nYXVy 4202\nIFByZXM= 4203\nIEV4Y2VwdGlvbg== 4204\nIGFueXRoaW5n 4205\nIE9mZg== 4206\nIGhvdXJz 4207\nIHdhcg== 4208\nQXJncw== 4209\nYWdpbmc= 4210\nIG1vZGVscw== 4211\nIFRpbWU= 4212\nT2I= 4213\nYW1z 4214\nam95 4215\nIGVhcmx5 4216\nLnJlYWQ= 4217\nODY= 4218\nIGNlbnRlcg== 4219\nIEluaXRpYWw= 4220\nIGxhbmd1YWdl 4221\nbGVuZ3Ro 4222\neHk= 4223\nIHNu 4224\nIGluZg== 4225\nUG9zdA== 4226\nIGFnbw== 4227\nIGVhc3k= 4228\nX2NvZGU= 4229\nIEFOWQ== 4230\nX2No 4231\nIGRvd25sb2Fk 4232\nKFQ= 4233\nYXZlZA== 4234\n4oCT 4235\nIHN0dWRlbnRz 4236\nIGZpZw== 4237\nbGlnaHQ= 4238\neHg= 4239\nIGJ1ZmZlcg== 4240\nIERlcA== 4241\nIE1hdGg= 4242\nSVRI 4243\nIHZhcmk= 4244\nIGR1ZQ== 4245\nRmFjdG9yeQ== 4246\nIHBvcg== 4247\nIGVw 4248\nb3R5cGU= 4249\nIGNhbm5vdA== 4250\nIHdoaXRl 4251\nPGludA== 4252\ndGVybg== 4253\nIHJlZ2lzdGVy 4254\nIHByZWQ= 4255\nY2x1cw== 4256\nX2RhdGU= 4257\nIC8qKg== 4258\nIGF1dGg= 4259\nIFtdCg== 4260\nIHBlcmlvZA== 4261\nbm93bg== 4262\nIHZvdA== 4263\nIHNjcmVlbg== 4264\nJ2Q= 4265\nVHlwZXM= 4266\nIHRtcA== 4267\n0LXQ 4268\ndXJhbA== 4269\nIGJlbmVm 4270\nX3k= 4271\nIG5ldA== 4272\nIFN0YXRlcw== 4273\nJ11bJw== 4274\nIE5l 4275\nIE5PVA== 4276\nIG5lZw== 4277\nMTAy 4278\nIGNvbW1vbg== 4279\nc2NvcGU= 4280\nIGNyZWQ= 4281\nZ2Vz 4282\nX1RZUEU= 4283\nIHN1Z2dlc3Q= 4284\nb29t 4285\nLgoKCg== 4286\nIGFjY2VwdA== 4287\nIHJhbmRvbQ== 4288\nZXJt 4289\nIFZlY3Rvcg== 4290\nd2l0aA== 4291\nVEVS 4292\nKHN0cg== 4293\nIHJlc3BvbnM= 4294\nIGhpdA== 4295\nLlNldA== 4296\nZ3JpZA== 4297\ncmlh 4298\nIGNsaWNr 4299\ndW5kbGU= 4300\nQ2FzZQ== 4301\naW5zZXJ0 4302\nVXRpbHM= 4303\nICIiIg== 4304\nIGltcGxlbWVudA== 4305\nYXRhbA== 4306\ndGVtcHQ= 4307\ndGVtcGxhdGU= 4308\nb2Ny 4309\ncmV0dXJucw== 4310\nIHBsYXllcnM= 4311\ndXNlcnM= 4312\nZWRlZg== 4313\nIFRoZXNl 4314\nIGFtb25n 4315\nIGRlYg== 4316\naGE= 4317\nLmdldEVsZW1lbnQ= 4318\nIGNpcmM= 4319\nIGFuc3dlcg== 4320\nIHdhbGs= 4321\nIHRyZWF0 4322\nIEdl 4323\nIENyZWF0ZQ== 4324\nIGFnZQ== 4325\nIHJlcQ== 4326\nT1NU 4327\nYW5ndWxhcg== 4328\n0Y8= 4329\nIGZpdmU= 4330\nNTM= 4331\nIGRpc3RyaWJ1dGVk 4332\nIGZyaWVuZA== 4333\nVFA= 4334\nIGNsZWFu 4335\nb3dz 4336\nLkNvbnRyb2xz 4337\nZGlz 4338\nIHdvcmRz 4339\nLmlv 4340\nenk= 4341\nIGhlYWRlcg== 4342\nIENoZWNr 4343\n4oCZbQ== 4344\nanVzdA== 4345\naG9sZGVy 4346\nPSI8Pw== 4347\nIEdOVQ== 4348\nIENvbA== 4349\naW1lc3Q= 4350\nZW50aWM= 4351\newoK 4352\nIHRyZQ== 4353\nbGFzdA== 4354\nbGE= 4355\nIFlvcms= 4356\nTG8= 4357\nIGRpc2N1c3M= 4358\nIEdvZA== 4359\nIGlzc3Vl 4360\ncmV3 4361\nV2luZG93 4362\nIGxhbmQ= 4363\nMTIw 4364\nIHN0cmVhbQ== 4365\nIFBhcg== 4366\nIHF1YWxpdHk= 4367\nUGFy 4368\nX251bQ== 4369\nNTQ= 4370\nIHNhbA== 4371\nZWx2ZXM= 4372\nT1JE 4373\nKHVzZXI= 4374\nIHdvcmtz 4375\nIGhhbGY= 4376\nZW5zZXM= 4377\ndmFz 4378\nIHBvbGljZQ== 4379\nKCIv 4380\ndWE= 4381\nIHNpbXBsZQ== 4382\nQWRkcmVzcw== 4383\nIGVtcHR5 4384\nZXNo 4385\nMTI4 4386\nVXBkYXRl 4387\nIENyZWF0ZWQ= 4388\nKCcu 4389\nKS4K 4390\nICAgICAgICAgICAgICAgICAg 4391\nIGFncmU= 4392\nIEZST00= 4393\nIGNvb2s= 4394\nIGV2ZXJ5dGhpbmc= 4395\naWxpdGllcw== 4396\nLnN0YXR1cw== 4397\nIHJlbGF0aW9ucw== 4398\nZXh0ZXJu 4399\nIG5vdGhpbmc= 4400\nIHJ1bm5pbmc= 4401\nCXZvaWQ= 4402\nUkk= 4403\nX2E= 4404\nX0NPTg== 4405\ncG9y 4406\nLnN1Yg== 4407\ncmVxdWlyZQ== 4408\nIENpdHk= 4409\nIFdlc3Q= 4410\nIG1vcg== 4411\nc3RvcmU= 4412\nRXF1YWxz 4413\nb2Rlcg== 4414\nIG5h 4415\nIFtb 4416\nICgn 4417\nIERvbg== 4418\nRVJT 4419\nL3A= 4420\nLmpzb24= 4421\nYWJvcg== 4422\nIHNvbWVvbmU= 4423\nX3RleHQ= 4424\nLmNzcw== 4425\nLlRhYg== 4426\nIFNvbWU= 4427\nYXRv 4428\nZG91Ymxl 4429\nIHNoYXJl 4430\nKHZvaWQ= 4431\nX2Rpcg== 4432\nIHVy 4433\nU3RhY2s= 4434\nIFdvcmxk 4435\nLlg= 4436\nc3RyYWN0 4437\nSG93 4438\nLkdlbmVyaWM= 4439\naWNsZXM= 4440\nIGVudHJ5 4441\nIGNoYW5nZXM= 4442\nIHBlcnNvbmFs 4443\nKEE= 4444\nIG9mZnNldA== 4445\nX3B0cg== 4446\nIHBpZQ== 4447\nIEphbg== 4448\nLWdyb3Vw 4449\nbW9kdWxl 4450\nSXRlbXM= 4451\nIEhvd2V2ZXI= 4452\ndmVyYWdl 4453\nLkZvbnQ= 4454\nIGV2ZW50cw== 4455\nLm1pbg== 4456\nIGludm9s 4457\nemE= 4458\nIHdob2xl 4459\nIG5lZWRlZA== 4460\nIGxpa2VseQ== 4461\ncmllZg== 4462\nT1JN 4463\ndmVyc2lvbg== 4464\nIGZpZ2h0 4465\nIGVpbg== 4466\nRnJhbWU= 4467\nMTk3 4468\nZ2Vu 4469\nIE91dA== 4470\nYXZpZ2F0aW9u 4471\nTGVuZ3Ro 4472\naWxsZWQ= 4473\ncXVlbmNl 4474\nICE9PQ== 4475\nIFNvZnR3YXJl 4476\nIHdyaXRpbmc= 4477\nIHJhdGU= 4478\nJ10sCg== 4479\nUGFuZWw= 4480\naW5uZXI= 4481\nIFsi 4482\nIHR3 4483\nY2Q= 4484\nIDsK 4485\nX3N0YXRl 4486\nIFNt 4487\nIE1hcms= 4488\nKSkKCg== 4489\ncHJvdA== 4490\nIE1y 4491\nbWV0aG9k 4492\ndXN0b21lcg== 4493\nSWNvbg== 4494\nIGNvcnJlY3Q= 4495\nKG9iamVjdA== 4496\nIE1vcmU= 4497\nIGZhbGw= 4498\nIHZvbA== 4499\nIGRldmVsb3BtZW50 4500\nZW50bHk= 4501\nIHNp 4502\nbWVkaQ== 4503\ndmluZw== 4504\nUFA= 4505\nYWtlcg== 4506\nIGluZHU= 4507\nIGVsaWY= 4508\nIHByZXQ= 4509\nIGJlbGlldmU= 4510\nbnM= 4511\nb21ldA== 4512\nMTIz 4513\nIEludGVybg== 4514\nUmVjdA== 4515\nU28= 4516\nLmVycm9y 4517\nUmVhZA== 4518\nIGZlYXR1cmVz 4519\nIG1pbnV0ZXM= 4520\nLS0t 4521\nYXNpbmc= 4522\nY3JldA== 4523\nIj4NCg== 4524\nLmFubm90 4525\nIGNvbGxlY3Rpb24= 4526\nJy4= 4527\nIHNpbWlsYXI= 4528\nIHRha2Vu 4529\nKCIl 4530\nT3JkZXI= 4531\nJ10K 4532\nLW1k 4533\nIFRI 4534\nYWNlZA== 4535\nIGlzbg== 4536\nL2o= 4537\nIHNvbg== 4538\nZ3JhcGg= 4539\nIEludGVnZXI= 4540\nIG5lY2Vzcw== 4541\ncmVlbg== 4542\nIHVt 4543\nIFw8 4544\nIG1vbWVudA== 4545\nIGJyaW5n 4546\nIGluZGlj 4547\neXNpcw== 4548\nTGV2ZWw= 4549\ndmVyc2U= 4550\ndXJyZW5j 4551\nX3Rlc3Q= 4552\nIGVudGlyZQ== 4553\nRG93bg== 4554\nIH0KCgo= 4555\nKHJlc3VsdA== 4556\nIFJlYWQ= 4557\nw6g= 4558\nTW9k 4559\nIHRyeWluZw== 4560\nIiksCg== 4561\nIG1lbWJlcg== 4562\nIENvcg== 4563\nT0RP 4564\nLWNvbnRyb2w= 4565\ndW50aW1l 4566\nIFNpbQ== 4567\nRGlhbG9n 4568\ncGxvdA== 4569\nX29u 4570\nIHBoeXM= 4571\nfS8= 4572\nIG5hbWVzcGFjZQ== 4573\nCQ0K 4574\nYWNj 4575\nUGxheWVy 4576\nQVJF 4577\nODk= 4578\nIGZvb3Q= 4579\nIGJvYXJk 4580\ncGFydA== 4581\nIHN1cw== 4582\nd2lzZQ== 4583\nIE1j 4584\nIHB1c2g= 4585\nQVRB 4586\nIHBsZWFzZQ== 4587\ncmllZA== 4588\nd2VldA== 4589\nYml0 4590\naWRlZA== 4591\nVkU= 4592\nIFN3 4593\nVUI= 4594\nIHR5cGVz 4595\nZWRpYQ== 4596\nIGNsb3M= 4597\nYWNlYm9vaw== 4598\nV2hlbg== 4599\nIGVkaXQ= 4600\naWdnZXI= 4601\nIGVuZXJn 4602\nQ29udGFpbmVy 4603\nIHBob3Q= 4604\nIENvdW50 4605\nIEV1cm9wZQ== 4606\nLklz 4607\nIFJ1c3M= 4608\ncGVlZA== 4609\nIFN0cg== 4610\nIHB5 4611\nIGN1bHQ= 4612\nIGRlZmluZWQ= 4613\nY2NvdW50 4614\nIG9idA== 4615\nLkxvY2F0aW9u 4616\nIHRocmVhZA== 4617\naWxsZQ== 4618\nIGluc3RlYWQ= 4619\nc3Ryb25n 4620\nIFNlYw== 4621\nVVJF 4622\nIGlkZWE= 4623\nLnNl 4624\nZW15 4625\nc2VsZWN0ZWQ= 4626\nQ29ubmVjdGlvbg== 4627\nYWNpbmc= 4628\ndGhyZWFk 4629\nLm5leHQ= 4630\nIGNvbGw= 4631\nIGZpbG0= 4632\naXN0aWM= 4633\nIGNvbXBldA== 4634\nIGNvbm4= 4635\ndGhvdWdo 4636\nIGNvbXBhbg== 4637\nb2NrZXQ= 4638\nIHRlYWNo 4639\nPSg= 4640\nIHBob25l 4641\nIGFjdGl2ZQ== 4642\nNzk= 4643\nZGVsZXRl 4644\nMTAx 4645\ndHJpZXM= 4646\nIG1v 4647\nIGRlYXRo 4648\nfSk7Cgo= 4649\nb2NvbA== 4650\nV2lkZ2V0 4651\nIGFydGljbGU= 4652\ncm9kdQ== 4653\nYW5kaWQ= 4654\n0Ys= 4655\nIENy 4656\na2E= 4657\nKCk6 4658\nbG9vZA== 4659\nCQkJCg== 4660\nIGFsbW9zdA== 4661\nIHNlbGw= 4662\nZXJ2bGV0 4663\ncmlw 4664\nVW5pdA== 4665\nIGFwcGxpYw== 4666\nIGNvbm5lY3Q= 4667\nIGZlYXR1cmU= 4668\nIHZpYQ== 4669\nJyks 4670\nIGxpbQ== 4671\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 4672\nIEd1 4673\nRW5naW5l 4674\nIGVucw== 4675\nIGVudmlyb25tZW50 4676\nYmxvY2s= 4677\nSEVSRQ== 4678\nTlVMTA== 4679\nZ3k= 4680\ndGFn 4681\nKSku 4682\nZXhw 4683\nIGNvbXBs 4684\nIGluc3RhbGw= 4685\nIGNvbXBsZXRl 4686\ncXVldWU= 4687\nYXR1cmFs 4688\nIGdlbmVyYWw= 4689\ndGhvbg== 4690\nIGFza2Vk 4691\nb3Jlcw== 4692\nKHJlcw== 4693\nIHJlc2VydmVk 4694\nU1A= 4695\nIOKApg== 4696\nxYI= 4697\nIHNpZ25pZmlj 4698\nT2Zm 4699\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 4700\nIEFn 4701\nIEp1c3Q= 4702\nIEVycm9y 4703\nIGluZmw= 4704\nYWRhdGE= 4705\nIGljb24= 4706\nYXNrcw== 4707\nJyc= 4708\nX0xP 4709\nPy4= 4710\nYWNjb3VudA== 4711\nICgq 4712\nJykKCg== 4713\ncmFw 4714\nX3Zhcg== 4715\nIEZPUg== 4716\nIHBhcnR5 4717\nIFlvdXI= 4718\nY2F0 4719\nc3RyeQ== 4720\nLm5ldw== 4721\nYm9vdA== 4722\nIE5vdg== 4723\nIHZlY3Rvcg== 4724\nIG5vcm1hbA== 4725\nIGZ1cnRoZXI= 4726\nUmVwb3NpdG9yeQ== 4727\nODAw 4728\nIGRhdGFiYXNl 4729\nYXR0bGU= 4730\nIG11c2lj 4731\nIHNwZWVk 4732\nIGRvYw== 4733\ncHJvY2Vzcw== 4734\nSUdIVA== 4735\nLnBhcnNl 4736\nIHRha2luZw== 4737\nIHZpb2w= 4738\nY2VlZA== 4739\nIEFmdGVy 4740\nIGZvcndhcmQ= 4741\nIGNyaXQ= 4742\nIi8+Cg== 4743\ncm90 4744\nIGZhaWxlZA== 4745\nZWZvcmU= 4746\nIGNvbmNlcm4= 4747\nb2U= 4748\nYmE= 4749\nIHNlbmRlcg== 4750\nIHRlcm0= 4751\naGFz 4752\nPSIj 4753\nIHBvdGVudGlhbA== 4754\nTnVt 4755\nIHB1Ymxpc2hlZA== 4756\nLmNsb3Nl 4757\nIEltYWdl 4758\nc3RyYWludA== 4759\nVUQ= 4760\nIE9i 4761\nIHByb2JhYmx5 4762\nbGlt 4763\nIjoK 4764\nb2x1bWU= 4765\nIGNvbnN1bQ== 4766\nNzY= 4767\nYWd1ZQ== 4768\nZW5zaW9ucw== 4769\nIGludmVzdGln 4770\nLXllYXI= 4771\nJyk7 4772\nLXNt 4773\nIGVuam95 4774\nb3JpZw== 4775\nZXJpbmc= 4776\nY3A= 4777\nbGVhc2Vk 4778\ncGxlbWVudHM= 4779\nIHJldHVybnM= 4780\ncGF0 4781\nQk8= 4782\nIEhvdXNl 4783\nLkxhYmVs 4784\nIHdlaWdodA== 4785\naWdoYg== 4786\nIGNvbmRpdGlvbnM= 4787\nIGV4Y2VwdGlvbg== 4788\nZGVzY3JpcHRpb24= 4789\nIHRyYWQ= 4790\nLXRv 4791\nIHt9 4792\nIG1vZHVsZQ== 4793\nRU5E 4794\nLmFw 4795\nLnByb3Bz 4796\nIGNvbnN0cnVjdG9y 4797\nYXZlcw== 4798\nIGZhdm9y 4799\nIE5vdw== 4800\nO2k= 4801\nIE1haW4= 4802\nX2s= 4803\nZXJpZXM= 4804\n4oCZbGw= 4805\ndHJhbnNmb3Jt 4806\naW1lc3RhbXA= 4807\nUHJl 4808\nIG1lcg== 4809\nLnJlcw== 4810\nc3RhbnQ= 4811\nTG9jYXRpb24= 4812\nX05BTUU= 4813\nIGxvc3M= 4814\nIAoK 4815\nbmV0 4816\nIGVuZ2luZQ== 4817\nQmxvY2s= 4818\nIGlzc3Vlcw== 4819\nIHBhcnNl 4820\nIEJhcg== 4821\nIHN0YXk= 4822\nIEpTT04= 4823\nIGRvbQ== 4824\nYWlycw== 4825\nd25lcg== 4826\nIGxvd2Vy 4827\nIiwNCg== 4828\nIERlbQ== 4829\ndWZhY3Q= 4830\nIHBz 4831\nIHBlcmZlY3Q= 4832\nUkw= 4833\nIGVkdWM= 4834\nbHM= 4835\nZW1vcnk= 4836\nQVJSQU5U 4837\ndWdl 4838\nIGV4YWN0 4839\nLmtleQ== 4840\nYWxsZWQ= 4841\nZWNo 4842\naWVm 4843\nXC8= 4844\nb2tl 4845\nIGZvcm1lcg== 4846\nYWxsb2M= 4847\nIHNpeA== 4848\naWRh 4849\nIG1hcmdpbg== 4850\nIGhlYXJ0 4851\nYWxk 4852\ncGFjaw== 4853\nLmdldEVsZW1lbnRCeUlk 4854\nIFdBUlJBTlQ= 4855\nIHJhdGhlcg== 4856\nIGJ1aWxkaW5n 4857\nZXJtYW4= 4858\nbGljZQ== 4859\nIHF1ZXN0aW9ucw== 4860\naXplcw== 4861\nbGVnZQ== 4862\naXJlY3Rvcnk= 4863\nIGpl 4864\nIGNhcw== 4865\ncHJvcHM= 4866\ndXRm 4867\nIHNlY3VyaXR5 4868\nIGhvd2V2ZXI= 4869\nd2VpZ2h0 4870\nIGluc2lkZQ== 4871\nIHByZXNpZGVudA== 4872\nQ2hhcg== 4873\nIFdJVEg= 4874\nLm1hcA== 4875\nIGdyYXBo 4876\nIHRhZw== 4877\nX3N0YXR1cw== 4878\nIGF0dGVtcHQ= 4879\nb3Bw 4880\ndXNlcw== 4881\nCWNvbnN0 4882\nIHJvdW5k 4883\nLCQ= 4884\nIGZyaWVuZHM= 4885\nRW1haWw= 4886\nPz4= 4887\nUmVzb3VyY2U= 4888\nS0VZ 4889\nb3Nw 4890\nLnF1ZXJ5 4891\nIE5vcnRo 4892\nYWJsZXM= 4893\naXN0cmli 4894\nX2NsYXNz 4895\nZWxsbw== 4896\nVGhhdA== 4897\n0Lo= 4898\ncGVjaWFsbHk= 4899\nIFByZXNpZGVudA== 4900\nIGNhbXBhaWdu 4901\nIGFsdA== 4902\nYXJlYQ== 4903\nIGNoYWxs 4904\nIG9wcG9ydA== 4905\nLkNvbg== 4906\nIGVuZXJneQ== 4907\nbGlrZQ== 4908\nLnN0cmluZw== 4909\naW5ndG9u 4910\nKSo= 4911\neXk= 4912\nIHByb2Zlc3Npb24= 4913\naXJ0aA== 4914\nIHNlZw== 4915\n5pw= 4916\nIGhvcg== 4917\naWVycw== 4918\nY2Fu 4919\nIGJlaGluZA== 4920\nUHJvZHVjdA== 4921\nZmc= 4922\nIFNr 4923\nLmpwZw== 4924\nPzo= 4925\nXTsKCg== 4926\nIGNhbGxiYWNr 4927\nIEh0dHA= 4928\n0Yw= 4929\nbG9uZw== 4930\nTVM= 4931\nQVRI 4932\nIHJhaXNl 4933\nIHdhbnRlZA== 4934\ncm93bg== 4935\ndXRvcg== 4936\nbHQ= 4937\nXT0= 4938\nZWxpbmU= 4939\nTUE= 4940\nIHNlcGFy 4941\nY3M= 4942\nc2VtYg== 4943\nRGlz 4944\nYnNlcnY= 4945\nIFdpbGw= 4946\nIHBvbGljeQ== 4947\nIHRoaXJk 4948\ncGhvbmU= 4949\nIGJlZA== 4950\nL2c= 4951\nLl9f 4952\nIEluYw== 4953\naXppbmc= 4954\nLnJlbW92ZQ== 4955\naW5zdGFuY2U= 4956\nLnR5cGU= 4957\nIHNlcnY= 4958\nRWFjaA== 4959\nIGhhcg== 4960\nIE1lc3NhZ2U= 4961\nKGtleQ== 4962\nU0VMRUNU 4963\nUG9z 4964\nKSk7DQo= 4965\nIHJlY29tbQ== 4966\nIHRyYWluaW5n 4967\nIEVudA== 4968\nIENoYXI= 4969\naWNodA== 4970\nKGZpbGU= 4971\nIHByaW9y 4972\nR2FtZQ== 4973\nIGV4aXQ= 4974\nUGFyYW1z 4975\nLmNvcmU= 4976\nUEM= 4977\nbmVz 4978\nYW5jZWQ= 4979\nKHJlcXVlc3Q= 4980\nUGFzc3dvcmQ= 4981\nfT4K 4982\nIG1hZw== 4983\nIHJlbGVhc2U= 4984\nIHNoYWxs 4985\ndWRlbnQ= 4986\nIFNvdXRo 4987\nYW5kbw== 4988\nOic= 4989\nLlRhYkluZGV4 4990\nc2s= 4991\nYW5uZXI= 4992\naXNzZXQ= 4993\nIG91dHNpZGU= 4994\nbGVkZ2U= 4995\nIOU= 4996\nIFJvYg== 4997\nIGltbQ== 4998\nIQo= 4999\nIFdlYg== 5000\nRGVz 5001\nQkM= 5002\nYW5jaWFs 5003\nUm91dGU= 5004\nRGVj 5005\nZmVyZW5jZXM= 5006\nIHB1cmNo 5007\nIE1vZGVs 5008\nY3Rvcg== 5009\nZ24= 5010\nX3N0YXJ0 5011\nX3Vu 5012\nLio= 5013\naXNlcw== 5014\nIGdyb3VuZA== 5015\nIHVuaXF1ZQ== 5016\nIGJlYXV0 5017\neyI= 5018\nIHBvdXI= 5019\nIE9jdA== 5020\nIHRyZWU= 5021\nc2V0cw== 5022\nX3Jlcw== 5023\nJyktPg== 5024\nX3JlZw== 5025\nKCJc 5026\nIGJ5dGU= 5027\nQmw= 5028\nIGRhdGluZw== 5029\nIG1hdHRlcg== 5030\nIFJlbQ== 5031\nICcuLi8= 5032\nIEF1Zw== 5033\nIExh 5034\nICQo 5035\nb3VybmFs 5036\nMTEx 5037\naWFt 5038\nIHNob3dz 5039\nd3JpdGU= 5040\nIGJhbGw= 5041\nIHNpbXBseQ== 5042\nIGZhc3Q= 5043\nIG1lbW9yeQ== 5044\nQVNT 5045\nIE9m 5046\nb3ZlZA== 5047\nYW50ZQ== 5048\nYXVs 5049\naXN0cnk= 5050\nKSkpOwo= 5051\nIGZpdA== 5052\nPHN0cmluZw== 5053\nIHBvbGl0aWNhbA== 5054\nYW5jZWw= 5055\nXy4= 5056\nY2FyZA== 5057\nLmN1cnJlbnQ= 5058\nb2No 5059\nX2ltYWdl 5060\nXHQ= 5061\nIwo= 5062\nKEw= 5063\nIGluZHVzdHJ5 5064\nY29taW5n 5065\nIGV4dHJh 5066\nNjAw 5067\nIHJlcG9ydGVk 5068\nLnN0YXJ0 5069\nIHJlc291cmNlcw== 5070\nIGltZw== 5071\nZmxvdw== 5072\nX0VY 5073\nKG51bGw= 5074\nIFByZQ== 5075\nIHdyb25n 5076\naW50ZXJmYWNl 5077\nUGFyYW1ldGVy 5078\nbmVycw== 5079\n4bs= 5080\ndHVyZQ== 5081\nZXJzaXN0 5082\nb3VudHJ5 5083\nIHNlZW1z 5084\nYWxhbmNl 5085\nZGVzdA== 5086\nCVN0cmluZw== 5087\nIG1haW50 5088\nIHVuaXQ= 5089\nYWN0ZXJz 5090\nIFRS 5091\naWZ1bA== 5092\nZXhwb3J0cw== 5093\ncHJvamVjdA== 5094\nQXBwbGljYXRpb24= 5095\nbGVnYXRl 5096\nIHRha2Vz 5097\ndGVybQ== 5098\nIGV0Yw== 5099\ndXN0ZXI= 5100\nIGFwcGVhcg== 5101\nYWRkcmVzcw== 5102\nIGZlbQ== 5103\naHM= 5104\nIGhvbQ== 5105\nLC0= 5106\nIGRpZmZpY3VsdA== 5107\nIGNvbWluZw== 5108\nT3Blbg== 5109\nIHNldHRpbmdz 5110\nIFdhcg== 5111\nIFRoZW4= 5112\nIGF1dG9t 5113\nIEZvdW5kYXRpb24= 5114\nIHF1aXRl 5115\nRGVzY3JpcHRpb24= 5116\nIGJsb2c= 5117\naXF1 5118\nUFM= 5119\nMTEw 5120\nX2ZpZWxk 5121\nSnNvbg== 5122\nU1NJT04= 5123\nIFNjaA== 5124\nIExP 5125\nIGRlc2NyaQ== 5126\nIGV2ZXJ5b25l 5127\nIHByZXR0eQ== 5128\nIGxvbmdlcg== 5129\nIG1lbnU= 5130\nIGN1cnJlbnRseQ== 5131\nc2Vj 5132\nIHJlbGF0aW9uc2hpcA== 5133\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= 5134\nIE1hcA== 5135\nYXNldA== 5136\nIHBhcmFtZXRlcnM= 5137\nIGNydXNo 5138\nIg0K 5139\nSUxJVFk= 5140\naWdyYXRpb24= 5141\nIGNvdXQ= 5142\ndG90YWw= 5143\nIG5hbWVz 5144\nbmRlZg== 5145\nIik7 5146\ncmllbmQ= 5147\neW5hbWlj 5148\nIGVmZm9ydA== 5149\nIGFjdHVhbA== 5150\nIGZpZWxkcw== 5151\nT1VO 5152\ndGVycw== 5153\nMjUw 5154\nIGZpeA== 5155\nX21vZGVs 5156\nIGNhc2Vz 5157\nQ0E= 5158\nTXk= 5159\nSW50ZXJmYWNl 5160\nIFNF 5161\nMTk2 5162\nXV0= 5163\nYWxsZQ== 5164\nIE5hdGlvbmFs 5165\nIEFycmF5TGlzdA== 5166\naW5saW5l 5167\nLlY= 5168\nYXJh 5169\ncmVmaXg= 5170\nYXNj 5171\nUmVhZGVy 5172\nINC/ 5173\nYXN0aWM= 5174\nKCgp 5175\nQ2w= 5176\nLmFubm90YXRpb24= 5177\nIHBlcmZvcm1hbmNl 5178\nYWlseQ== 5179\nLnRvU3RyaW5n 5180\nLm5ldA== 5181\ndmlld3M= 5182\nLmVuZA== 5183\nYXllcnM= 5184\nbGF0ZQ== 5185\nIEFwcg== 5186\nZWRlcmFs 5187\nJ10p 5188\nLmJvZHk= 5189\nIGhpZ2hlcg== 5190\nX2Zs 5191\nY3I= 5192\nYWxlcnQ= 5193\nX25vZGU= 5194\nIEdvb2dsZQ== 5195\nIGl0c2VsZg== 5196\nQXV0aA== 5197\ndXJyZW5jeQ== 5198\nIHNpZ25pZmljYW50 5199\nYXBwZW5k 5200\nIHJlc3BlY3Q= 5201\nc3RyYXA= 5202\nIHVuYQ== 5203\ncml0ZXJpYQ== 5204\nUE9SVA== 5205\nLmFwYWNoZQ== 5206\nT3V0cHV0 5207\nIHByb2dyZXNz 5208\nIG1pZA== 5209\nIE1pY3Jvc29mdA== 5210\nIHJlc291cmNl 5211\nYWJsaXNo 5212\nIGRpbQ== 5213\nLmxvYWQ= 5214\nLkFwcA== 5215\nIGRpcmVjdGlvbg== 5216\nIGFkZGl0aW9uYWw= 5217\nICAgICAgICAgICAgICAgICAgICAgICAg 5218\nIG51bWJlcnM= 5219\nIGNvbXBhbmllcw== 5220\nLlRo 5221\nIHNvdW5k 5222\ndXNlcm5hbWU= 5223\nIHN0YXRlbWVudA== 5224\nIGFsZXJ0 5225\nIGNvbnRyYWN0 5226\naG9tZQ== 5227\nX2xlbmd0aA== 5228\nLkNvbXBvbmVudA== 5229\nZXY= 5230\nLkV4 5231\n77ya 5232\nIjs= 5233\nIEhpZ2g= 5234\nICkKCg== 5235\nIFBvaW50 5236\nb3Bo 5237\nIGxpbmVz 5238\nLT5f 5239\nIikKCg== 5240\nb3g= 5241\nYXBwbGljYXRpb24= 5242\nIF0K 5243\nCgoKCgoK 5244\nMTgw 5245\nIHNvb24= 5246\nY3Rpb25z 5247\naW5nZXI= 5248\nIGpvaW4= 5249\nIFBl 5250\nIOs= 5251\nIGxhcw== 5252\nLkU= 5253\nY3Nz 5254\nL29y 5255\nIFN0YXJ0 5256\nIFRP 5257\nIHN1YnM= 5258\nY29ubg== 5259\nY29tcG9uZW50cw== 5260\nREVCVUc= 5261\ncXVhcmU= 5262\nRnVuY3Rpb24= 5263\nZW5kYXI= 5264\nLmluZGV4 5265\nIGZpbGw= 5266\nxJk= 5267\nIGNob29zZQ== 5268\naG93 5269\nIEFtZXJpY2E= 5270\nYXNzZXRz 5271\nLS0tLS0tLS0tLS0t 5272\nIFZhbHVl 5273\nIG9mZmljZQ== 5274\nIHZlaA== 5275\nIHRyYW5zZm9ybQ== 5276\nIEFydA== 5277\nIGluZGU= 5278\nIGZu 5279\nIGltcGxlbWVudHM= 5280\nYW5nbw== 5281\ncGxldGU= 5282\nKyI= 5283\ndG1w 5284\nYW1pbHk= 5285\nIGhhc2g= 5286\nbWlzc2lvbnM= 5287\nRVNU 5288\nZ3Q= 5289\nUHJvdmlkZXI= 5290\nICAgICAgICAgICAgICAgICAgICAgIA== 5291\nIGZsYWc= 5292\nIHBhcnRpY2lw 5293\nZGVu 5294\nIFJldHVybnM= 5295\nIG5vdGU= 5296\nw7xy 5297\ncG0= 5298\naWRlb3M= 5299\nIHNwZWNpZmllZA== 5300\nIEVO 5301\nZXN0ZXI= 5302\nb2xpZA== 5303\nIHVwb24= 5304\nKHN0ZA== 5305\nCXY= 5306\nICdc 5307\ndXo= 5308\nIHZlcnQ= 5309\nIHZpY3Q= 5310\nCXNlbGY= 5311\nICIk 5312\nODU= 5313\nLms= 5314\nIGdyb3Vwcw== 5315\nZ2l0aHVi 5316\nbGFuZw== 5317\nIG11dA== 5318\nVE8= 5319\nIHZl 5320\nIFBsZWFzZQ== 5321\nOwoKCg== 5322\nYWNjZXNz 5323\nIHsi 5324\ncmVh 5325\nIHJpc2s= 5326\naWNrZXI= 5327\nb2dnbGU= 5328\nCXdoaWxl 5329\nQU5H 5330\nLnNlbmQ= 5331\nNzI= 5332\nIHdvbWFu 5333\nIGdldHM= 5334\nIGlnbg== 5335\nIElk 5336\nX2xvZw== 5337\nT05F 5338\nIGV2aWQ= 5339\nIEhhcg== 5340\nX3N1Yg== 5341\nIGVuZGw= 5342\nIGluY2x1ZGVk 5343\nKCkpOwoK 5344\nIEFw 5345\naWdy 5346\nIHNlbQ== 5347\nIEJsYWNr 5348\nZG9j 5349\nX3RhYmxl 5350\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 5351\nLXVw 5352\nIGNhdXNl 5353\nIC4u 5354\nIHZhbg== 5355\nX2RpY3Q= 5356\nIGZvY3Vz 5357\nSU5E 5358\nQ0VTUw== 5359\nLkxvZw== 5360\nIG11bHRpcGxl 5361\naWRv 5362\nIHJlZ2FyZA== 5363\nLU0= 5364\nYW5kbGVy 5365\nb3Vyc2U= 5366\nIGRlZw== 5367\nLlU= 5368\nIGFkZGl0aW9u 5369\nIHZhcmlvdXM= 5370\nIHJlY2VpdmU= 5371\n0LXQvQ== 5372\nIEhU 5373\nT2Jq 5374\nREY= 5375\nIGluY3JlYXNl 5376\nIE9wZW4= 5377\nXTs= 5378\nIGNvbW1pdA== 5379\nPwo= 5380\nYXRlZ29yaWVz 5381\nYXRvcnk= 5382\nc2hpcA== 5383\nIE1pY2g= 5384\nIGh0bWw= 5385\ncm9taXNl 5386\nIGxlYXZl 5387\nIHN0cmF0ZWc= 5388\nYXZlbg== 5389\nIENvbnNvbGU= 5390\na25vd24= 5391\nLW4= 5392\nX0xF 5393\nLmNvbXBvbmVudA== 5394\nIGJyZQ== 5395\nU2Vzc2lvbg== 5396\naWFuY2U= 5397\nIGFsaWdu 5398\ndHlwZWRlZg== 5399\nX3Jlc3VsdA== 5400\nIFdIRVJF 5401\nLnNwbGl0 5402\nIHJlYWRpbmc= 5403\nRkFVTFQ= 5404\nIGNsbw== 5405\nIG5vdGljZQ== 5406\nX3By 5407\nYXJ0ZXI= 5408\nIGxvY2s= 5409\nIHN0YW5kYXJk 5410\nZXRpYw== 5411\nZWxsb3c= 5412\nIHBhZGRpbmc= 5413\nIEhpcw== 5414\nIHN0YXRlcw== 5415\nX2Nhc3Q= 5416\nKFA= 5417\nYWE= 5418\nIGludGVybmFs 5419\nZWFu 5420\nIFBSTw== 5421\nIEtleQ== 5422\nIGVzcGVjaWFsbHk= 5423\nbWluZw== 5424\nIGNyb3Nz 5425\nIG5hdGlvbmFs 5426\nX29iamVjdA== 5427\nZmlsdGVy 5428\nIHNjcmlwdA== 5429\nLnVwZGF0ZQ== 5430\nX2k= 5431\nIEFzc2VydA== 5432\nL2NvcmU= 5433\nJSUlJQ== 5434\nIHByb2JsZW1z 5435\naXN0b3I= 5436\nIC49 5437\nIGFyY2g= 5438\nIHdyaXR0ZW4= 5439\nIG1pbGl0 5440\nTUVOVA== 5441\nLmNo 5442\nY2FwZQ== 5443\nIE11cw== 5444\nX2NvbmZpZw== 5445\nIEFQSQ== 5446\nZm9vdA== 5447\nIGltYWdlcw== 5448\nZW5kbA== 5449\nLklu 5450\nRmlyc3Q= 5451\nIHBsYXRmb3Jt 5452\nLnByb3Q= 5453\nT3B0aW9u 5454\nc3Rl 5455\nIFRPRE8= 5456\nIGZvcmNl 5457\nLmNvbnQ= 5458\nCWVjaG8= 5459\nIERhdg== 5460\nUHRy 5461\nKEI= 5462\nUlQ= 5463\nIEJhc2U= 5464\nXVsn 5465\nIGFubm91bmM= 5466\nY29uc29sZQ== 5467\nIFB5 5468\nZHM= 5469\nLmFz 5470\nIHByZXZlbnQ= 5471\nYXBhbg== 5472\nIHsn 5473\nfTwv 5474\nIFNlcnZpY2U= 5475\nIFNlbg== 5476\nYWRvcg== 5477\ncHJvZmlsZQ== 5478\nVG9w 5479\nIGl0ZXI= 5480\ncG8= 5481\nSUVT 5482\nSlNPTg== 5483\nSUU= 5484\naWFudA== 5485\n44CB 5486\nX2o= 5487\nIFNlcHQ= 5488\nX21hcA== 5489\nYnVt 5490\nKGNvbnRleHQ= 5491\nIEhvbWU= 5492\naWFucw== 5493\nR0I= 5494\nNjM= 5495\nIGxpdmluZw== 5496\nIHBhdHRlcm4= 5497\nKGlucHV0 5498\naWNpZW50 5499\nOTk5 5500\nQ29yZQ== 5501\nIGVudGl0eQ== 5502\nIGludGVn 5503\nQ2hhbmdlZA== 5504\nIHVzZWZ1bA== 5505\nLmluZm8= 5506\nIHRvb2w= 5507\nKGl0ZW0= 5508\nIG9r 5509\nIGZlZWQ= 5510\nSVg= 5511\nw6lz 5512\nIE5ld3M= 5513\ncmVtb3Zl 5514\nZXJyeQ== 5515\nCQkJCQkJCQkJ 5516\naXBtZW50 5517\nYXJlcw== 5518\nRG8= 5519\nQ3VycmVudA== 5520\nLmNvbnRlbnQ= 5521\nLkdyb3Vw 5522\ndXN0cmFs 5523\nINGB 5524\nfSk= 5525\nIHBvcHVsYXI= 5526\nIHN0cmU= 5527\nIG1ldGhvZHM= 5528\nX0VSUk9S 5529\nTGVmdA== 5530\nY2Fs 5531\nYnNw 5532\nLlRvU3RyaW5n 5533\nIGRpcg== 5534\nIGFsbG93ZWQ= 5535\nIGltcGFjdA== 5536\nIildCg== 5537\nNjI= 5538\nLmNvbmZpZw== 5539\nIGVsZW1lbnRz 5540\nIHByb3Rl 5541\nIHRyYWlu 5542\nLnRy 5543\ncnM= 5544\nIFJlcHVibGlj 5545\nIFRhc2s= 5546\nNjE= 5547\nYXJpZXM= 5548\nKEQ= 5549\nKGdldA== 5550\n4oCmCgo= 5551\nIHJlbGF0ZWQ= 5552\nIHZlcnM= 5553\nIHNpbA== 5554\nICIiOwo= 5555\nIGNtZA== 5556\nIHRlY2hub2xvZ3k= 5557\nLndpZHRo 5558\nRmxvYXQ= 5559\nIFVzZQ== 5560\nQm9keQ== 5561\nc2hvdWxk 5562\nLmpvaW4= 5563\nRm9udA== 5564\nbGx1bQ== 5565\neWNsZQ== 5566\nIEJyaXQ= 5567\nIG1pdA== 5568\nIHNjYWxl 5569\nIChf 5570\nZXJuZWw= 5571\nIikpCg== 5572\nIHNjb3Jl 5573\nL3Y= 5574\nIHN0dWRlbnQ= 5575\nVUM= 5576\nLnNob3c= 5577\nIGF2ZXJhZ2U= 5578\nRW5hYmxlZA== 5579\nKGV4 5580\nY29tbW9u 5581\naW1hdGlvbg== 5582\nOkAi 5583\nY2hpZQ== 5584\nIC4uLgoK 5585\ncml2ZXI= 5586\nIE1hcmNo 5587\nY2F0ZWdvcnk= 5588\nZmlu 5589\nIGNvdXJ0 5590\n0LI= 5591\nU2VydmVy 5592\nIGNvbnRhaW5lcg== 5593\nLXN0 5594\nX2Zvcg== 5595\nIHBhcnRz 5596\nIGRlY2lzaW9u 5597\nb2Jz 5598\nb3Vi 5599\nbWl0dGVk 5600\nICQoJyM= 5601\nIHNhdw== 5602\nIGFwcHJvYWNo 5603\nSUNF 5604\nIHNheWluZw== 5605\nIGFueW9uZQ== 5606\nbWV0YQ== 5607\nU0Q= 5608\nIHNvbmc= 5609\nZGlzcGxheQ== 5610\nT3Blcg== 5611\nb3V0ZXM= 5612\nIGNoYW5uZWw= 5613\nIGNoYW5nZWQ= 5614\nw6o= 5615\nIGZpbmFsbHk= 5616\nX251bWJlcg== 5617\nUGxlYXNl 5618\n4KQ= 5619\nb3Jpbmc= 5620\nLXJl 5621\nIGtpbGw= 5622\nIGRydWc= 5623\nd2luZG93 5624\nIGNvbnZlcnQ= 5625\nb21icmU= 5626\nIHdheXM= 5627\nSGVscGVy 5628\nIEZpcnN0 5629\nKF9f 5630\ndXJpdHk= 5631\nIFdpbmRvd3M= 5632\nZWVz 5633\nIG1hdA== 5634\ncmFwcGVy 5635\nIHBsdXM= 5636\nYW5nZXM= 5637\nIl0u 5638\nYXpvbg== 5639\nL3Q= 5640\nbGF0 5641\nYXN0ZQ== 5642\nIHByb2ZpbGU= 5643\nIHJlYWR5 5644\nI2lmbmRlZg== 5645\ncm90ZQ== 5646\nIHNlbnNl 5647\nR2VuZXI= 5648\nIENvbmZpZw== 5649\nb215 5650\nIEp1bmU= 5651\nIGxhdGVzdA== 5652\nIHNhZg== 5653\nIHJlZ2lvbg== 5654\nIGRlZXA= 5655\nd2l0Y2g= 5656\nIFBhcms= 5657\nfWA= 5658\nIEZyb20= 5659\nSUk= 5660\nIGN2 5661\nIHJlYWNo 5662\nIGNvdW50ZXI= 5663\nIFdvcms= 5664\nIFVSTA== 5665\nIFVwZGF0ZQ== 5666\nJywNCg== 5667\nIGltbWVkaQ== 5668\nY2xvc2U= 5669\nYWRvcw== 5670\nZmVycmVk 5671\nIHdlZWtz 5672\ndXJn 5673\nIGRhbWFnZQ== 5674\nIGxvc3Q= 5675\nYW5p 5676\nX2xv 5677\nIGhpbXNlbGY= 5678\nIGRvZw== 5679\nKV0K 5680\n778= 5681\ncGly 5682\ndHQ= 5683\nIHBhcGVy 5684\nIHRoZW1z 5685\nc2Vjb25k 5686\nIHN0YWZm 5687\nIElucHV0 5688\nIis= 5689\nIEZhY2Vib29r 5690\nIGFsbG9j 5691\nIHNjaGVk 5692\nQUNF 5693\nIHRoZW1zZWx2ZXM= 5694\nIENvbXBvbmVudA== 5695\nIGRyaXZlcg== 5696\namE= 5697\nKHBhdGg= 5698\nIGNhdGVnb3J5 5699\nYWxscw== 5700\ncHU= 5701\nbGx1bWluYXRl 5702\nIEFjdGlvbg== 5703\nLmJ1dHRvbg== 5704\nIEdM 5705\naXN0aWNz 5706\nIG9pbA== 5707\nIHN0b2Nr 5708\nPic= 5709\nIGRlYWQ= 5710\nVkFM 5711\nUVVF 5712\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 5713\nIGNoYXJn 5714\nUmV0dXJu 5715\nIGZ1bA== 5716\nZG9t 5717\nIHJ1bGVz 5718\nIG1vZGlmeQ== 5719\nIGV2YWw= 5720\naGFt 5721\nYXRlbWVudA== 5722\nXDw= 5723\ndWxh 5724\nPUZhbHNl 5725\nUkE= 5726\nIGNvbnRhaW5z 5727\nNzQ= 5728\nIHN0YWNr 5729\nbWFy 5730\nIHt9Cg== 5731\nIHVuZGVmaW5lZA== 5732\nQXNz 5733\nIENoaW5h 5734\ndmV5 5735\nKgo= 5736\nIHBsYXlpbmc= 5737\nKS8= 5738\nYWN0b3I= 5739\nIGJvdHRvbQ== 5740\nbGllcg== 5741\nIE51bWJlcg== 5742\nIGNvdXBsZQ== 5743\nREM= 5744\nIFNP 5745\nZ29y 5746\nLnNldFRleHQ= 5747\nc3VjY2Vzcw== 5748\nY29tbWFuZA== 5749\nRmlsdGVy 5750\nIE91cg== 5751\nX2l0ZW0= 5752\nIGN0eA== 5753\nIHJvYWQ= 5754\nVmVyc2lvbg== 5755\nY2FzZQ== 5756\ndXJ0 5757\nYXZpb3I= 5758\neWNo 5759\nc2VtYmx5 5760\nIFByb2R1Y3Q= 5761\nIGhlbGQ= 5762\nYWZl 5763\nIGluY2x1ZGVz 5764\nPHF1b3Rl 5765\nIGF2b2lk 5766\nIEZpbg== 5767\nIE1vZA== 5768\nIHRhYg== 5769\nYW5v 5770\nw7E= 5771\naXBwaW5n 5772\nLWU= 5773\nIGluc2VydA== 5774\ndGFyZ2V0 5775\nY2hhbg== 5776\nLk1vZGVs 5777\nSU1F 5778\nXAo= 5779\nIG1hY2hpbmU= 5780\nYXZ5 5781\nIE5P 5782\nIEludGVy 5783\nIG9wZXJhdGlvbg== 5784\nbW9kYWw= 5785\nVGFn 5786\nXTo= 5787\nIHByb2R1Y3Rpb24= 5788\nIGFyZWFz 5789\nIHJlbg== 5790\nX2Zyb20= 5791\nbmJzcA== 5792\nIG9wZXJhdG9y 5793\nbWVu 5794\nYXBwZWQ= 5795\nX3Blcg== 5796\nemVu 5797\nKCIu 5798\nLnNhdmU= 5799\nPSJ7ew== 5800\nIHRvcg== 5801\nKHJlc3BvbnNl 5802\nIGNhbmRpZA== 5803\nIGNvbnY= 5804\nYWlsZWQ= 5805\nIExpYg== 5806\nY29tcA== 5807\ndXJh 5808\n77+9 5809\nIEhlcmU= 5810\nIGFyZ3VtZW50 5811\naG9vZA== 5812\nIGVzdGFibGlzaA== 5813\nb2dyYXBoeQ== 5814\nIG9uQ2xpY2s= 5815\nYW1iZGE= 5816\nIHNjaA== 5817\nIG1vdmll 5818\nIHNlYw== 5819\nIGFjdGl2aXR5 5820\n2Kc= 5821\nIHNxbA== 5822\nX2FsbA== 5823\naW5jaXA= 5824\nIHByb3ZpZGVz 5825\nIHN5cw== 5826\nYWNrZXQ= 5827\nIHdhc24= 5828\nIHVzZXM= 5829\nIEZ1bmN0aW9u 5830\nLmdvb2dsZQ== 5831\nIFJlc3VsdA== 5832\nODQ= 5833\nVmlzaWJsZQ== 5834\nYWdtYQ== 5835\nZWxjb21l 5836\nIFN5 5837\nIENlbnQ= 5838\nQUxTRQ== 5839\nYWNpw7Nu 5840\nRVhU 5841\nIGxpY2Vuc2U= 5842\nIExvbmc= 5843\nIGFjY29t 5844\nIGFiaWxpdHk= 5845\nLmhlaWdodA== 5846\nQWN0aXZl 5847\nb2xvZ2ljYWw= 5848\nb2x5 5849\nKSks 5850\nLlNl 5851\nIHBhcmFtZXRlcg== 5852\ncHJpdGU= 5853\nQUJJTElUWQ== 5854\nLnNlcnZpY2U= 5855\nIEdyb3Vw 5856\nX3F1ZXJ5 5857\nIEl0ZW0= 5858\naW5pbmc= 5859\nIGp1ZA== 5860\naW1z 5861\nZml4 5862\naW5kZXI= 5863\nYWdyYW0= 5864\nIGZ1bmN0aW9ucw== 5865\nIGV4cGVyaQ== 5866\nIEVt 5867\nIHJvdA== 5868\nIHBlbg== 5869\nLmJ0bg== 5870\nIEFT 5871\nI2lmZGVm 5872\nIGNob2ljZQ== 5873\nIFBhZ2U= 5874\nX1BSTw== 5875\nUVU= 5876\n5Y8= 5877\nYW50aXR5 5878\nwq0= 5879\nd29yZHM= 5880\nIHJlYWRvbmx5 5881\nIGZsZXg= 5882\ncHJvdGVjdGVk 5883\nIEFueQ== 5884\nIGNoYXJhY3RlcnM= 5885\nZW5jZWQ= 5886\nIEp1bHk= 5887\naWxlcg== 5888\nQ2FyZA== 5889\ndXJhbmNl 5890\nIHJldg== 5891\nLmV2ZW50 5892\nYWx5 5893\nMTMw 5894\nIHdvbmRlcg== 5895\nIFBvcnQ= 5896\nIGxlZ2Fs 5897\ncm9sZQ== 5898\nIHRlbg== 5899\nIGdvZXM= 5900\nTVA= 5901\nd2hpdGU= 5902\nKToNCg== 5903\nKSkNCg== 5904\nIHJlZmVyZW5jZQ== 5905\nIG1pcw== 5906\nIFByb2plY3Q= 5907\naWNrcw== 5908\nPiY= 5909\nQ09O 5910\nIHJlcGw= 5911\nIHJlZ3VsYXI= 5912\nU3RvcmFnZQ== 5913\ncmFtZXdvcms= 5914\nIGdvYWw= 5915\nIHRvdWNo 5916\nLndpZGdldA== 5917\nIGJ1aWx0 5918\nZGVz 5919\nUGFydA== 5920\nKHJl 5921\nIHdvcnRo 5922\naGli 5923\nZ2FtZQ== 5924\nOTE= 5925\nMTky 5926\nINCy 5927\nYWNpb24= 5928\nIFdoaXRl 5929\nKHR5cGU= 5930\nKGA= 5931\nODE= 5932\nIG5hdHVyYWw= 5933\nIGluag== 5934\nIGNhbGN1bA== 5935\nIEFwcmls 5936\nLkxpc3Q= 5937\nIGFzc29jaWF0ZWQ= 5938\nCVN5c3RlbQ== 5939\nfn4= 5940\nPVs= 5941\nIHN0b3JhZ2U= 5942\nIGJ5dGVz 5943\nIHRyYXZlbA== 5944\nIHNvdQ== 5945\nIHBhc3NlZA== 5946\nIT0= 5947\nYXNjcmlwdA== 5948\nLm9wZW4= 5949\nIGdyaWQ= 5950\nIGJ1cw== 5951\nIHJlY29nbg== 5952\nQWI= 5953\nIGhvbg== 5954\nIENlbnRlcg== 5955\nIHByZWM= 5956\nYnVpbGQ= 5957\nNzM= 5958\nSFRNTA== 5959\nIFNhbg== 5960\nIGNvdW50cmllcw== 5961\nYWxlZA== 5962\ndG9rZW4= 5963\na3Q= 5964\nIHF1YWw= 5965\nTGFzdA== 5966\nYWRvdw== 5967\nIG1hbnVmYWN0 5968\naWRhZA== 5969\namFuZ28= 5970\nTmV4dA== 5971\neGY= 5972\nLmE= 5973\nIHBvcm5v 5974\nIFBN 5975\nZXJ2ZQ== 5976\naXRpbmc= 5977\nX3Ro 5978\nY2k= 5979\nPU5vbmU= 5980\nZ3M= 5981\nIGxvZ2lu 5982\nYXRpdmVz 5983\nJ10pOwo= 5984\nxIU= 5985\nIGlsbA== 5986\nSUE= 5987\nY2hpbGRyZW4= 5988\nRE8= 5989\nIGxldmVscw== 5990\nIHt7 5991\nIGxvb2tz 5992\nICIj 5993\nVG9TdHJpbmc= 5994\nIG5lY2Vzc2FyeQ== 5995\nICAgCg== 5996\nY2VsbA== 5997\nRW50cnk= 5998\nICcj 5999\nIGV4dHJlbQ== 6000\nU2VsZWN0b3I= 6001\nIHBsYWNlaG9sZGVy 6002\nTG9hZA== 6003\nIHJlbGVhc2Vk 6004\nT1JF 6005\nRW51bWVy 6006\nIFRW 6007\nU0VU 6008\naW5x 6009\nUHJlc3M= 6010\nIERlcGFydG1lbnQ= 6011\nIHByb3BlcnRpZXM= 6012\nIHJlc3BvbmQ= 6013\nU2VhcmNo 6014\nYWVs 6015\nIHJlcXU= 6016\nIEJvb2s= 6017\nLwo= 6018\nKHN0 6019\nIGZpbmFuY2lhbA== 6020\naWNrZXQ= 6021\nX2lucHV0 6022\nIHRocmVhdA== 6023\nKGlu 6024\nU3RyaXA= 6025\n7J0= 6026\nw6fDo28= 6027\nNzE= 6028\nIGV2aWRlbmNl 6029\nKSk7 6030\nIEJybw== 6031\nIFtdOwo= 6032\nIG91 6033\nYnVm 6034\nU2NyaXB0 6035\nZGF0 6036\nIHJ1bGU= 6037\nI2ltcG9ydA== 6038\nPSIv 6039\nU2VyaWFs 6040\nIHN0YXJ0aW5n 6041\nW2luZGV4 6042\nYWU= 6043\nIGNvbnRyaWI= 6044\nc2Vzc2lvbg== 6045\nX25ldw== 6046\ndXRhYmxl 6047\nb2Jlcg== 6048\nICIuLw== 6049\nIGxvZ2dlcg== 6050\nIHJlY2VudGx5 6051\nIHJldHVybmVk 6052\nDQ0K 6053\nKSkpCg== 6054\naXRpb25z 6055\nIHNlZWs= 6056\nIGNvbW11bmlj 6057\nICIu 6058\nIHVzZXJuYW1l 6059\nRUNU 6060\nRFM= 6061\nIG90aGVyd2lzZQ== 6062\nIEdlcm1hbg== 6063\nLmF3 6064\nQWRhcHRlcg== 6065\naXhlbA== 6066\nIHN5c3RlbXM= 6067\nIGRyb3A= 6068\nODM= 6069\nIHN0cnVjdHVyZQ== 6070\nICQoIiM= 6071\nZW5jaWVz 6072\nYW5uaW5n 6073\nIExpbms= 6074\nIFJlc3BvbnNl 6075\nIHN0cmk= 6076\nxbw= 6077\nIERC 6078\n5pc= 6079\nYW5kcm9pZA== 6080\nc3VibWl0 6081\nb3Rpb24= 6082\nOTI= 6083\nKEA= 6084\nLnRlc3Q= 6085\nODI= 6086\nCgoKCgoKCgo= 6087\nXTsNCg== 6088\nIGRpcmVjdGx5 6089\nICIl 6090\ncmlz 6091\nZWx0YQ== 6092\nQUlM 6093\nKXsNCg== 6094\nbWluZQ== 6095\nICAgICAgICAgICAgICAgICAgICAgICAgICA= 6096\nKGs= 6097\nYm9u 6098\nYXNpYw== 6099\ncGl0ZQ== 6100\nX19f 6101\nTWF4 6102\nIGVycm9ycw== 6103\nIFdoaWxl 6104\nIGFyZ3VtZW50cw== 6105\nIGVuc3VyZQ== 6106\nUmlnaHQ= 6107\nLWJhc2Vk 6108\nV2Vi 6109\nIC09 6110\nIGludHJvZHU= 6111\nIEluc3Q= 6112\nIFdhc2g= 6113\nb3JkaW4= 6114\nam9pbg== 6115\nRGF0YWJhc2U= 6116\nIGdyYWQ= 6117\nIHVzdWFsbHk= 6118\nSVRF 6119\nUHJvcHM= 6120\nPz4K 6121\nIEdv 6122\nQE92ZXJyaWRl 6123\nUkVG 6124\nIGlw 6125\nIEF1c3RyYWw= 6126\nIGlzdA== 6127\nVmlld0J5SWQ= 6128\nIHNlcmlvdXM= 6129\nIGN1c3RvbWVy 6130\nLnByb3RvdHlwZQ== 6131\nb2Rv 6132\nY29y 6133\nIGRvb3I= 6134\nIFdJVEhPVVQ= 6135\nIHBsYW50 6136\nIGJlZ2Fu 6137\nIGRpc3RhbmNl 6138\nKCkpLg== 6139\nIGNoYW5jZQ== 6140\nIG9yZA== 6141\nY2FtZQ== 6142\ncHJhZ21h 6143\nIHByb3RlY3Q= 6144\ncmFnbWVudA== 6145\nIE5vZGU= 6146\nZW5pbmc= 6147\n0Yc= 6148\nIHJvdXRl 6149\nIFNjaG9vbA== 6150\naGk= 6151\nIG5laWdoYg== 6152\nQWZ0ZXI= 6153\nbGljaXQ= 6154\nIGNvbnRy 6155\nIHByaW1hcnk= 6156\nQUE= 6157\nLldyaXRlTGluZQ== 6158\ndXRpbHM= 6159\nIGJp 6160\nUmVk 6161\nLkxpbnE= 6162\nLm9iamVjdA== 6163\nIGxlYWRlcnM= 6164\ndW5pdGllcw== 6165\nIGd1bg== 6166\nb250aA== 6167\nIERldg== 6168\nRklMRQ== 6169\nIGNvbW1lbnRz 6170\nX2xlbg== 6171\nYXJyb3c= 6172\nYW1vdW50 6173\nUmFuZ2U= 6174\nc2VydA== 6175\nR3JpZFZpZXc= 6176\nIHVwZGF0ZWQ= 6177\nIE1v 6178\nIGluZm9ybQ== 6179\nb2NpZXR5 6180\nYWxh 6181\nQWNjZXNz 6182\nIGhhYg== 6183\nIGNyZWF0 6184\nX2FyZw== 6185\nIEphbnVhcnk= 6186\nIERheQ== 6187\nIikNCg== 6188\ndXBsZQ== 6189\nZG9jdW1lbnQ= 6190\nZ29yaXRo 6191\nbWVudQ== 6192\nIE92ZXI= 6193\nYmI= 6194\nLnRpdGxl 6195\nX291dA== 6196\nIGxlZA== 6197\ndXJp 6198\nID8+PC8= 6199\nZ2w= 6200\nIGJhbms= 6201\nYXltZW50 6202\nCXByaW50Zg== 6203\nTUQ= 6204\nIHNhbXBsZQ== 6205\nIGhhbmRz 6206\nIFZlcnNpb24= 6207\ndWFyaW8= 6208\nIG9mZmVycw== 6209\naXR5RW5naW5l 6210\nIHNoYXBl 6211\nIHNsZWVw 6212\nX3BvaW50 6213\nU2V0dGluZ3M= 6214\nIGFjaGll 6215\nIHNvbGQ= 6216\nb3Rh 6217\nLmJpbmQ= 6218\nQW0= 6219\nIHNhZmU= 6220\nU3RvcmU= 6221\nIHNoYXJlZA== 6222\nIHByaXY= 6223\nX1ZBTA== 6224\nIHNlbnM= 6225\nKXs= 6226\nIHJlbWVtYmVy 6227\nc2hhcmVk 6228\nZWxlbWVudA== 6229\nIHNob290 6230\nVmVydA== 6231\nY291dA== 6232\nIGVudg== 6233\nX2xhYmVs 6234\nID4K 6235\ncnVu 6236\nIHNjZW5l 6237\nKGFycmF5 6238\nZGV2aWNl 6239\nX3RpdGxl 6240\nYWdvbg== 6241\nXQ0K 6242\nYWJ5 6243\nIGJlY2FtZQ== 6244\nYm9vbGVhbg== 6245\nIHBhcms= 6246\nIENvZGU= 6247\ndXBsb2Fk 6248\ncmlkYXk= 6249\nIFNlcHRlbWJlcg== 6250\nRmU= 6251\nIHNlbg== 6252\nY2luZw== 6253\nRkw= 6254\nQ29s 6255\ndXRz 6256\nX3BhZ2U= 6257\naW5u 6258\nIGltcGxpZWQ= 6259\nYWxpbmc= 6260\nIHlvdXJzZWxm 6261\nLkNvdW50 6262\nY29uZg== 6263\nIGF1ZA== 6264\nX2luaXQ= 6265\nLik= 6266\nIHdyb3Rl 6267\nMDAz 6268\nTkc= 6269\nLkVycm9y 6270\n5Ls= 6271\nLmZvcg== 6272\nIGVxdWFs 6273\nIFJlcXVlc3Q= 6274\nIHNlcmlhbA== 6275\nIGFsbG93cw== 6276\nWFg= 6277\nIG1pZGRsZQ== 6278\nY2hvcg== 6279\nMTk1 6280\nOTQ= 6281\nw7g= 6282\nZXJ2YWw= 6283\nLkNvbHVtbg== 6284\ncmVhZGluZw== 6285\nIGVzY29ydA== 6286\nIEF1Z3VzdA== 6287\nIHF1aWNrbHk= 6288\nIHdlYXA= 6289\nIENH 6290\ncm9wcmk= 6291\naG8= 6292\nIGNvcA== 6293\nKHN0cnVjdA== 6294\nIEJpZw== 6295\nIHZz 6296\nIGZyZXF1 6297\nLlZhbHVl 6298\nIGFjdGlvbnM= 6299\nIHByb3Blcg== 6300\nIGlubg== 6301\nIG9iamVjdHM= 6302\nIG1hdHJpeA== 6303\nYXZhc2NyaXB0 6304\nIG9uZXM= 6305\nLmdyb3Vw 6306\nIGdyZWVu 6307\nIHBhaW50 6308\nb29scw== 6309\neWNs 6310\nZW5jb2Rl 6311\nb2x0 6312\nY29tbWVudA== 6313\nLmFwaQ== 6314\nRGly 6315\nIHVuZQ== 6316\naXpvbnQ= 6317\nLnBvc2l0aW9u 6318\nIGRlc2lnbmVk 6319\nX3ZhbA== 6320\nYXZp 6321\naXJpbmc= 6322\ndGFi 6323\nIGxheWVy 6324\nIHZpZXdz 6325\nIHJldmU= 6326\ncmFlbA== 6327\nIE9O 6328\ncmljcw== 6329\nMTYw 6330\nbnA= 6331\nIGNvcmU= 6332\nKCkpOw0K 6333\nTWFpbg== 6334\nIGV4cGVydA== 6335\nCQkNCg== 6336\nX2Vu 6337\nIC8+ 6338\ndXR0ZXI= 6339\nSUFM 6340\nYWlscw== 6341\nIEtpbmc= 6342\nKi8KCg== 6343\nIE1ldA== 6344\nX2VuZA== 6345\nYWRkcg== 6346\nb3Jh 6347\nIGly 6348\nTWlu 6349\nIHN1cnBy 6350\nIHJlcGU= 6351\nIGRpcmVjdG9yeQ== 6352\nUFVU 6353\nLVM= 6354\nIGVsZWN0aW9u 6355\naGFwcw== 6356\nLnByZQ== 6357\nY20= 6358\nVmFsdWVz 6359\nICIK 6360\nY29sdW1u 6361\naXZpbA== 6362\nTG9naW4= 6363\naW51ZQ== 6364\nOTM= 6365\nIGJlYXV0aWZ1bA== 6366\nIHNlY3JldA== 6367\nKGV2ZW50 6368\nIGNoYXQ= 6369\ndW1z 6370\nIG9yaWdpbg== 6371\nIGVmZmVjdHM= 6372\nIG1hbmFnZW1lbnQ= 6373\naWxsYQ== 6374\ndGs= 6375\nIHNldHRpbmc= 6376\nIENvdXI= 6377\nIG1hc3NhZ2U= 6378\nCWVuZA== 6379\nIGhhcHB5 6380\nIGZpbmlzaA== 6381\nIGNhbWVyYQ== 6382\nIFZlcg== 6383\nIERlbW9jcg== 6384\nIEhlcg== 6385\nKFE= 6386\nY29ucw== 6387\naXRh 6388\nICcu 6389\ne30= 6390\nCUM= 6391\nIHN0dWZm 6392\nMTk0 6393\nIDoK 6394\nIEFS 6395\nVGFzaw== 6396\naGlkZGVu 6397\nZXJvcw== 6398\nSUdO 6399\nYXRpbw== 6400\nIEhlYWx0aA== 6401\nb2x1dGU= 6402\nRW50ZXI= 6403\nJz4= 6404\nIFR3aXR0ZXI= 6405\nIENvdW50eQ== 6406\nc2NyaWJl 6407\nID0+Cg== 6408\nIGh5 6409\nZml0 6410\nIG1pbGl0YXJ5 6411\nIHNhbGU= 6412\ncmVxdWlyZWQ= 6413\nbm9u 6414\nYm9vdHN0cmFw 6415\naG9sZA== 6416\ncmlt 6417\nLW9sZA== 6418\nIERvd24= 6419\nIG1lbnRpb24= 6420\nY29udGFjdA== 6421\nX2dyb3Vw 6422\nb2RheQ== 6423\nIHRvd24= 6424\nIHNvbHV0aW9u 6425\ndWF0ZQ== 6426\nZWxsaW5n 6427\nXS0+ 6428\nb3Rlcw== 6429\nZW50YWw= 6430\nb21lbg== 6431\nb3NwaXRhbA== 6432\nIFN1cA== 6433\nX0VO 6434\nIHNsb3c= 6435\nU0VTU0lPTg== 6436\nIGJsdWU= 6437\nYWdv 6438\nIGxpdmVz 6439\nIF4= 6440\nLnVu 6441\naW5zdA== 6442\nZW5nZQ== 6443\nIGN1c3RvbWVycw== 6444\nIGNhc3Q= 6445\ndWRnZXQ= 6446\n77yB 6447\naWNlbnM= 6448\nIGRldGVybWlu 6449\nU2VsZWN0ZWQ= 6450\nX3Bs 6451\ndWV1ZQ== 6452\nIGRhcms= 6453\nLy8KCg== 6454\nc2k= 6455\ndGhlcm4= 6456\nIEphcGFu 6457\nL3c= 6458\nUFU= 6459\nIEVhc3Q= 6460\nb3ZpZQ== 6461\nIHBhY2thZ2U= 6462\nIG5vcg== 6463\nIGFwaQ== 6464\nYm90 6465\nIl07Cg== 6466\nX3Bvc3Q= 6467\ndWxhdGU= 6468\nIGNsdWI= 6469\nJykpOwo= 6470\nIGxvb3A= 6471\nUElP 6472\naW9uZQ== 6473\nc2hvdA== 6474\nSW5pdGlhbA== 6475\nIHBsYXllZA== 6476\ncmVnaXN0ZXI= 6477\ncm91Z2h0 6478\nX21heA== 6479\nYWNlbWVudA== 6480\nbWF0Y2g= 6481\ncmFwaGljcw== 6482\nQVNU 6483\nIGV4aXN0aW5n 6484\nIGNvbXBsZXg= 6485\nREE= 6486\nLkNo 6487\nLmNvbW1vbg== 6488\nbW8= 6489\nICcuLi8uLi8= 6490\naXRv 6491\nIGFuYWx5c2lz 6492\nIGRlbGl2ZXI= 6493\nICAgICAgICAgICAgICAgIAo= 6494\naWR4 6495\nw6A= 6496\nb25nbw== 6497\nIEVuZ2xpc2g= 6498\nPCEtLQ== 6499\nIGNvbXB1dGVy 6500\nRU5TRQ== 6501\nIHBhcw== 6502\nIHJhaXM= 6503\nSGFzaA== 6504\nIG1vYmlsZQ== 6505\nIG93bmVy 6506\nRklH 6507\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 6508\ndGhlcw== 6509\nIGF0dHI= 6510\nd2Q= 6511\nLnRpbWU= 6512\nYXdu 6513\nIHRyZWF0bWVudA== 6514\nIEFj 6515\nLlZpZXc= 6516\naW1wbA== 6517\nbW9yZQ== 6518\ncGFzcw== 6519\nIGhh 6520\nLmZyb20= 6521\nIGxlYWRpbmc= 6522\nRkZGRg== 6523\nKGVycm9y 6524\nLnVp 6525\nYXRhcg== 6526\nYWRlcnM= 6527\nZGF0ZXM= 6528\nIHp1 6529\nIGZsb3c= 6530\nVGFyZ2V0 6531\nIGludm9sdmVk 6532\nIGlv 6533\ncGFyc2U= 6534\nJF8= 6535\naGVzdA== 6536\nLmludA== 6537\nLWl0ZW0= 6538\nYXN5 6539\nU3A= 6540\nIHNoaWZ0 6541\nTlQ= 6542\nIHRm 6543\nX1RS 6544\nLndlYg== 6545\nQ1M= 6546\nIH0p 6547\nIGV5ZXM= 6548\nMTI1 6549\nMTA1 6550\nX3o= 6551\nJyk7DQo= 6552\naWZvcm4= 6553\nIHtA 6554\nIG5pY2U= 6555\nLmxpc3Q= 6556\nICAgIA0K 6557\nIGZsb29y 6558\nIHJlZGlyZWN0 6559\nIFVL 6560\nKFsn 6561\nIHdpc2g= 6562\nIGNhcHQ= 6563\nbGVnYWw= 6564\nIElP 6565\nIHN0YWdl 6566\nLlN0cmluZw== 6567\nIEFmcg== 6568\naWdlbg== 6569\nIFNI 6570\nRGVsZXRl 6571\nZWxscw== 6572\nIHNvbGlk 6573\nIG1lZXRpbmc= 6574\nIHdvcmtlZA== 6575\nIGVkaXRvcg== 6576\naW55 6577\n0Lw= 6578\nX3JlYWQ= 6579\nLklk 6580\nZWZm 6581\nT2Zmc2V0 6582\nY2hh 6583\nVVNFUg== 6584\nCQkgICA= 6585\naXBwZWQ= 6586\nIGRpY3Q= 6587\nIFJ1bg== 6588\nLmhwcA== 6589\nIGFuZw== 6590\neG1s 6591\naW1wbGU= 6592\nIG1lZGljYWw= 6593\nX3Rva2Vu 6594\nY29ubmVjdA== 6595\nIGhvdXI= 6596\nIGNvbnRyb2xsZXI= 6597\nX21lc3NhZ2U= 6598\nVUlE 6599\nR3I= 6600\nYW5kZWQ= 6601\nX0NI 6602\nIGJvb2tz 6603\nIHNwZWFr 6604\nYW1pbmc= 6605\nIG1vdW50 6606\nUmVjb3Jk 6607\nCXN0cnVjdA== 6608\nLldlYg== 6609\nb25kb24= 6610\nIC8vCg== 6611\nIGZlbHQ= 6612\nLkF1dG8= 6613\naWRnZQ== 6614\nX3Bvcw== 6615\nUFI= 6616\nIG1vZGVybg== 6617\nQ29sbGVjdGlvbg== 6618\nX21zZw== 6619\nQ0Q= 6620\nIExv 6621\nIHNlY29uZHM= 6622\naWJseQ== 6623\nLmVxdWFscw== 6624\nIGludGVybmF0aW9uYWw= 6625\nI3ByYWdtYQ== 6626\nb290aA== 6627\nV3JpdGVy 6628\naWF0ZQ== 6629\nIGNlbGU= 6630\nIEJpdA== 6631\naXZv 6632\naXZlcnk= 6633\ncmQ= 6634\nSEVDSw== 6635\nIGNhY2hl 6636\nLmNvdW50 6637\nIHJvbGw= 6638\nLlJlYWQ= 6639\nMTA4 6640\nUkVE 6641\nIHNldHVw 6642\naXpvbnRhbA== 6643\nbW9kZWxz 6644\nYXJndg== 6645\nIGNvbnNpZGVyZWQ= 6646\nPSIuLi8= 6647\nc2V0dGluZ3M= 6648\nIFJlbA== 6649\nIGdyb3d0aA== 6650\nIG1peA== 6651\nIFdhc2hpbmd0b24= 6652\nIHBsdA== 6653\nIElN 6654\n4bo= 6655\nIHR1cm5lZA== 6656\nIERhdGVUaW1l 6657\nIFdlZA== 6658\nKHVybA== 6659\nICIt 6660\nIGxldHRlcg== 6661\nQXN5bmM= 6662\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 6663\nIE9jdG9iZXI= 6664\nX2xpbmU= 6665\nIGF0dGVudGlvbg== 6666\nIGNvbGxlY3Q= 6667\nIEhhc2g= 6668\nIGltYWc= 6669\nVHJlZQ== 6670\nIHNpdHVhdGlvbg== 6671\nZXR0ZQ== 6672\nX25v 6673\nSVZF 6674\nIHZvbg== 6675\nLnRhcmdldA== 6676\nIGtub3dsZWRnZQ== 6677\nIGRyaXZl 6678\nLnBvc3Q= 6679\nIGJsb29k 6680\nIGNpdA== 6681\ncHJpbWFyeQ== 6682\nIGNvbmZpZ3VyYXRpb24= 6683\ndGVl 6684\nIHBob3Rv 6685\naXNvZGU= 6686\nVHJhY2U= 6687\nIGdhdmU= 6688\nIHNob3Q= 6689\nIEFpcg== 6690\nIG1vdGhlcg== 6691\ncHJpY2U= 6692\nIG1vcm5pbmc= 6693\nKSl7Cg== 6694\nLXg= 6695\nIHRyYWRl 6696\nIGRlc2M= 6697\nICYmCg== 6698\nIHBhcmVudHM= 6699\nQXBp 6700\n5Yg= 6701\ndGVk 6702\nd2Vy 6703\nIOY= 6704\nIHN5 6705\nIEtl 6706\nUGFyc2Vy 6707\n5YU= 6708\nYW5jeQ== 6709\nIHBpZWNl 6710\naWZvcm5pYQ== 6711\ndG9TdHJpbmc= 6712\ncmFu 6713\naWRpbmc= 6714\nUFRJT04= 6715\nY29tZXM= 6716\nL2xpYw== 6717\nLmNsaWVudA== 6718\nRWw= 6719\nTG9uZw== 6720\nIHByb2Zlc3Npb25hbA== 6721\ncnVwdA== 6722\ndmE= 6723\nIGNvbXBsZXRlbHk= 6724\nIHByYWN0aWNl 6725\nMDAy 6726\nIHNlbGVjdGlvbg== 6727\nUmVt 6728\naW5p 6729\nIGNhbQ== 6730\nUkVF 6731\nIHNpdGVz 6732\ncGE= 6733\nQVRVUw== 6734\n0YHRgg== 6735\nYXJyYW50 6736\nKig= 6737\nX0tFWQ== 6738\nIEJ1dHRvbg== 6739\nIEZyaWRheQ== 6740\nc2VxdQ== 6741\nIHJlYWRlcg== 6742\nIG1lc3NhZ2Vz 6743\n6K8= 6744\nIGJ1Zg== 6745\nS2U= 6746\nIG5vdg== 6747\nSFA= 6748\nTXNn 6749\nYWxpZ24= 6750\nYXJpbHk= 6751\nICcs 6752\nX3dpdGg= 6753\nIGRhcw== 6754\nIGhlYXJk 6755\nYXRvbWlj 6756\ncmlhbA== 6757\nKVs= 6758\nIGRpc2U= 6759\nQGVuZA== 6760\nIGdvbGQ= 6761\nIGZhaXI= 6762\nIHNhbGVz 6763\nLkJ1dHRvbg== 6764\nc3RyaWN0 6765\nc2F2ZQ== 6766\nIG1lYXN1cmU= 6767\nICIr 6768\nZWNhdXNl 6769\nVmlld0NvbnRyb2xsZXI= 6770\nIFRhYmxl 6771\nLnBhcmFt 6772\nIGRlY2lkZWQ= 6773\nKCgo 6774\nSU5GTw== 6775\nIG9wcG9ydHVuaXR5 6776\nVGU= 6777\nSUNFTlNF 6778\nY2NvcmRpbmc= 6779\na2k= 6780\nIFVO 6781\nIGNvbnRhaW4= 6782\nIG1hbmFnZXI= 6783\nIHBhaW4= 6784\nIEZpcmU= 6785\ncm9tZQ== 6786\nIHBsYW5z 6787\nRm91bmQ= 6788\nbGF5 6789\nIERlY2VtYmVy 6790\nIGluZmx1 6791\nw7o= 6792\ncmVuY2g= 6793\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 6794\nYXppbmc= 6795\nYnJpZWY= 6796\nY2FsbA== 6797\nd29vZA== 6798\nIGxvYWRlZA== 6799\nIGdyYW5k 6800\nL2Y= 6801\naW1w 6802\nX1U= 6803\nMTI3 6804\nU1RS 6805\n4oCi 6806\nIGNyZWRpdA== 6807\nLkNvbG9y 6808\nb3JnZQ== 6809\nUVVFU1Q= 6810\nIGRpZmZlcmVuY2U= 6811\nIFBD 6812\nd2FyZ3M= 6813\nIHB1Yg== 6814\ndW5kYXk= 6815\nIGZyYQ== 6816\nLm1heA== 6817\nIHRyaWVk 6818\nYW5uZWxz 6819\nc2VuZA== 6820\nIHJlcG9ydHM= 6821\nIGFkdWx0 6822\n5Lo= 6823\nIGNvbnNpc3Q= 6824\nIFN0cmVldA== 6825\nIFByb2dyYW0= 6826\nU1FM 6827\nTWF0cml4 6828\nb3VuY2ls 6829\nLUE= 6830\nCXc= 6831\nIHdob3Nl 6832\nIHJlbGln 6833\nIFNleA== 6834\nIGdpdmVz 6835\nbm9uZQ== 6836\nLm1lc3NhZ2U= 6837\nKEc= 6838\nLmF3dA== 6839\nLXJpZ2h0 6840\nIE5vdmVtYmVy 6841\nZWxsaWc= 6842\nMzYw 6843\ndXRpdmU= 6844\nxIM= 6845\nb3Zlcm4= 6846\nIGVhc2lseQ== 6847\nIGlkZWFz 6848\nMTA0 6849\nINC9 6850\nL2Nzcw== 6851\nbHlpbmc= 6852\nZWxsZQ== 6853\nQ2Fu 6854\nX2NvbG9y 6855\n0L7Qsg== 6856\nIHBhaXI= 6857\nbmd0aA== 6858\nIHNwbGl0 6859\nMTQw 6860\nZHJvcA== 6861\nYXJ0eQ== 6862\nb25h 6863\nIGNhcGl0YWw= 6864\nIGhlYXI= 6865\nIGV4aXN0cw== 6866\nCWxvZw== 6867\nZW1v 6868\nUnVu 6869\nb2k= 6870\nIHBhcnNlcg== 6871\nIE1ldGhvZA== 6872\nIGVkdWNhdGlvbg== 6873\nW2s= 6874\nIGxpYnJhcnk= 6875\nPiI7Cg== 6876\nX1VO 6877\nCXN0ZA== 6878\nb2RlZA== 6879\nIGNhbGxz 6880\naGVyZQ== 6881\nUmVs 6882\nIGJyYW5k 6883\nYmFja2dyb3VuZA== 6884\nZ2E= 6885\nX2FkZHJlc3M= 6886\nX3BhcmFtcw== 6887\nQ2F0ZWdvcnk= 6888\nMTAz 6889\nIEluZGlh 6890\nX2V2ZW50 6891\nIGluZw== 6892\nUmVuZGVy 6893\nLmNs 6894\ndW1weQ== 6895\nIHBldA== 6896\nRkM= 6897\nIEFudA== 6898\nRXh0 6899\nIGNoYXJnZQ== 6900\nZW5lZA== 6901\nZ3JhZA== 6902\nRU8= 6903\nIGRlcGVuZA== 6904\nIC4KCg== 6905\nZnJhbWU= 6906\nIGRm 6907\nIGh1Z2U= 6908\nIFBBUlQ= 6909\nZWRz 6910\nOzs= 6911\nIEFN 6912\nIGJhc2lj 6913\nIExldA== 6914\nbGljaA== 6915\nIGFybQ== 6916\nIHN0YXI= 6917\nIGZlZGVyYWw= 6918\nV29yaw== 6919\nIGNhcnJ5 6920\nIElzcmFlbA== 6921\nKG9iag== 6922\nPXt7 6923\nIHNhdmVk 6924\nIHN5bg== 6925\nIGNvbnN0YW50 6926\nVkVOVA== 6927\nIHBvc2l0aXZl 6928\nIGNvbmR1Y3Q= 6929\nIHNraW4= 6930\nIGVhcmxpZXI= 6931\nIGxheW91dA== 6932\nIElQ 6933\nT1VS 6934\nIHRpbQ== 6935\nc3R5bGVzaGVldA== 6936\nX2Ns 6937\nIENhcmQ= 6938\nKyspewo= 6939\nIHRlbXBlcg== 6940\nIERhdmlk 6941\nCXRyeQ== 6942\nLmRhcnQ= 6943\nIHdhbnRz 6944\nIHBpY3R1cmU= 6945\nIHZpZGVvcw== 6946\nIENvbW0= 6947\naXNpb25z 6948\nX01BWA== 6949\nTWFwcGluZw== 6950\nLWNvbnRlbnQ= 6951\nIEVhcg== 6952\nLWRl 6953\nIHByZW0= 6954\nYnJ1YXJ5 6955\nIGNvbXBvbmVudHM= 6956\nIHRocm91Z2hvdXQ= 6957\nIHB1bGw= 6958\nIHBhZ2Vz 6959\nZW50ZQ== 6960\ncmVzcG9uZA== 6961\nIGdhcw== 6962\nY3JpcHRvcg== 6963\nIGVkZ2U= 6964\nIGJvdW5k 6965\nQUNU 6966\nKioqKioq 6967\nIGNyZWF0aW5n 6968\nIENI 6969\nIG51bGxwdHI= 6970\nQnI= 6971\nKyc= 6972\nLmNv 6973\nPjo6 6974\nIGxlYXJuaW5n 6975\nLkxlbmd0aA== 6976\nX1NI 6977\nIHBhdGllbnRz 6978\nQUlO 6979\nIGtpZHM= 6980\nIGNvbWZvcnQ= 6981\nIHNob3du 6982\ndWdpbnM= 6983\nIEJhY2s= 6984\nZWxsYQ== 6985\nX0NM 6986\nIGxhdA== 6987\nIGRpc3BhdGNo 6988\nIGNsYXNzZXM= 6989\nLmF0 6990\nLmJlZ2lu 6991\nIHN1Y2Nlc3NmdWw= 6992\nYmFu 6993\nIG9idGFpbg== 6994\nIFNs 6995\nIGxhY2s= 6996\naXRlcmF0b3I= 6997\nVGhyZWFk 6998\nKHNpemU= 6999\nIG5vbmU= 7000\nLmhhcw== 7001\nX1g= 7002\nc29ydA== 7003\nbmFw 7004\ncGV0 7005\nYmlu 7006\nNzAw 7007\nIENhbmFkYQ== 7008\nVGhleQ== 7009\nIGRhbnM= 7010\nIE1hdA== 7011\nPHRk 7012\nIGhhaXI= 7013\nICcnLAo= 7014\nIGN1 7015\nIGxhd3M= 7016\nbGV0ZWQ= 7017\ncGVk 7018\nIHBvdw== 7019\nIGtuZXc= 7020\nX0NPTQ== 7021\nXyw= 7022\nIE1hZw== 7023\naWRlbnRz 7024\nKHJlcQ== 7025\nICks 7026\nLWNlbnRlcg== 7027\nMTkw 7028\nIHdpZGU= 7029\nIEF1dGhvcg== 7030\nc3RhbnRz 7031\nIGpvYnM= 7032\nIG1hdGg= 7033\nZXRpbWVz 7034\nQm9vbGVhbg== 7035\nIHNjb3Bl 7036\nX2lz 7037\nIG1lYXM= 7038\nIGtleXM= 7039\nZWxheQ== 7040\nIGV4YWN0bHk= 7041\nJz0+Jw== 7042\nIFBhdWw= 7043\nbWFz 7044\nCXByaW50 7045\nKGxlbg== 7046\nZmQ= 7047\nICk7 7048\nLkV2ZW50 7049\ncWxp 7050\naXJpdA== 7051\naWVsZHM= 7052\nb21hbg== 7053\nIFRvcA== 7054\nIHZvdGU= 7055\nIG1hc2s= 7056\nIHRoZW1l 7057\nLQo= 7058\nIHByb3Bz 7059\nIGZpbmU= 7060\nIHdyaXRlcg== 7061\nX29mZnNldA== 7062\nY2Fy 7063\nIGFsdGVybg== 7064\nIGNvcHlyaWdodA== 7065\nIGRlc3Ryb3k= 7066\ncHBlcg== 7067\nIGdlbmVyYXRl 7068\ncHBlZA== 7069\n4oCZZA== 7070\nICAgICAgCg== 7071\nbWFrZQ== 7072\nIFNob3c= 7073\nIGJyb3dzZXI= 7074\nIGZhdm9yaXRl 7075\nIGNhcmVlcg== 7076\nIGhhcHBlbmVk 7077\nKGNoYXI= 7078\nIHJlY29tbWVuZA== 7079\nIGxpdGVy 7080\nLmZpbHRlcg== 7081\nZ3JhZGU= 7082\nIMKj 7083\nUGhvbmU= 7084\nb21z 7085\nIG5hbWVk 7086\nLWxhYmVs 7087\naXBv 7088\nIE90aGVy 7089\nIHBhbmVs 7090\nIHJvY2s= 7091\nU2NhbGU= 7092\nCWFzc2VydA== 7093\n0LQ= 7094\nIHRydXN0 7095\nZnJvbnQ= 7096\nIGRlbW9u 7097\nQXI= 7098\nTmV0 7099\nIGVjb25vbWlj 7100\nZm9vdGVy 7101\nIHJhY2U= 7102\nKG5vZGU= 7103\nIE9wdGlvbg== 7104\nc3BsaXQ= 7105\nIHBoeXNpY2Fs 7106\naWZlc3Q= 7107\nIHJlbW92ZWQ= 7108\nLmh0dHA= 7109\nKSksCg== 7110\nIGxvb2tlZA== 7111\nJzs= 7112\nZGluZw== 7113\nZ2VzdA== 7114\nYXR1cmRheQ== 7115\nL2xpY2Vuc2Vz 7116\nUHJpY2U= 7117\nIGRybw== 7118\nIHRvd2FyZHM= 7119\nIHVucw== 7120\nIENM 7121\nCXN0YXRpYw== 7122\nIHJvd3M= 7123\nIGRlZmluZQ== 7124\nLnJlcGxhY2U= 7125\nIGZhdGhlcg== 7126\nIERlc2lnbg== 7127\nYXNzaWdu 7128\nbXV0 7129\nRGV2aWNl 7130\nRGlk 7131\nJykpCg== 7132\nb21ldHJ5 7133\nYXlsb2Fk 7134\nIGhpc3Rvcg== 7135\nIFBhcmFt 7136\nIEJvb2xlYW4= 7137\nIG5hdHVyZQ== 7138\nIGpz 7139\nIG5hdGlvbg== 7140\naWg= 7141\nIGRpc2NvdmVy 7142\nc2Vt 7143\nSGFuZGxl 7144\nCXI= 7145\nIFRlY2hu 7146\nIHdhbGw= 7147\neyQ= 7148\nQHByb3BlcnR5 7149\nICIuLi8= 7150\nIGV4YW0= 7151\nLmRyYXc= 7152\nb3BwaW5n 7153\nIG5lYXJseQ== 7154\nIGNvb2w= 7155\nIGluZGVwZW5k 7156\nUkVT 7157\nIGhhbmRsZXI= 7158\nIE1vbmRheQ== 7159\nIHN1bg== 7160\nU3R5bGVz 7161\nb3VzbHk= 7162\nIAk= 7163\ndmVzdA== 7164\nRGlzcGxheQ== 7165\nKHk= 7166\nYXRpY2FsbHk= 7167\nIHByZWRpY3Q= 7168\neWluZw== 7169\nIHNvbWV0aW1lcw== 7170\nIl0K 7171\nIGRyaW5r 7172\nIGJ1bA== 7173\naWZpY2F0aW9ucw== 7174\nLmluc2VydA== 7175\nLnJlZw== 7176\nIHRlc3Rz 7177\nQWxpZ25tZW50 7178\nIGFsbGVn 7179\nIGF0dHJpYnV0ZQ== 7180\nIE5vdGU= 7181\nIG15c2VsZg== 7182\nYXJ0cw== 7183\nTm93 7184\nIGludGVyZXN0aW5n 7185\nbGllbnRz 7186\nIHBvcHVsYXRpb24= 7187\nIENhbGlmb3JuaWE= 7188\nIkk= 7189\n5bk= 7190\nIGdyZWF0ZXI= 7191\ndWVzZGF5 7192\nIHRob3Vz 7193\nIGNvc3Rz 7194\nIGxhdW5jaA== 7195\nXEh0dHA= 7196\na2Vy 7197\nYmFuZA== 7198\nIFBsYXk= 7199\nIGJhbmQ= 7200\nLnNoYXBl 7201\nZXNvbWU= 7202\nYXJ0aWNsZQ== 7203\nLnJm 7204\nIHdlcg== 7205\nw6Fz 7206\nZW1iZXJz 7207\ndXNy 7208\nQkE= 7209\naWNhbg== 7210\nZXR0 7211\ndmFsaWRhdGU= 7212\ndWx0aQ== 7213\nIGltbWVkaWF0ZWx5 7214\nemVy 7215\nIGZpZ3VyZQ== 7216\nb2Vz 7217\nZWxsZXI= 7218\naXJjbGU= 7219\nIFNpZ24= 7220\nLmRi 7221\nIHJhbms= 7222\nQnl0ZXM= 7223\nIHByb2plY3Rz 7224\nX3JlYw== 7225\nVUxBUg== 7226\nQVBJ 7227\nIExpbmU= 7228\nUG9ydA== 7229\nIHBvbGw= 7230\nIGdpdmluZw== 7231\naWRlbmNl 7232\nLS0K 7233\nIHBsb3Q= 7234\naWNpYWw= 7235\nIHdhcnJhbnQ= 7236\nSVRJT04= 7237\nIERvdWJsZQ== 7238\nIGJpbGxpb24= 7239\nZ29yaXRobQ== 7240\nIGVxdWlwbWVudA== 7241\nREFURQ== 7242\nIEAi 7243\nRUU= 7244\nIHBsZQ== 7245\naWF0aW9u 7246\nIGhlYWRlcnM= 7247\nIHByb2NlZA== 7248\nLkNvbXBvbmVudE1vZGVs 7249\nIE9iYW1h 7250\nIHBh 7251\nIEJlc3Q= 7252\naW1hdGVseQ== 7253\nLmdldFN0cmluZw== 7254\nLlw= 7255\nbXBsb3k= 7256\nIHJhdw== 7257\nX2Jsb2Nr 7258\ndW5kcmVk 7259\nIn0sCg== 7260\nMTEy 7261\nLkdyb3VwTGF5b3V0 7262\nIGJyb3VnaHQ= 7263\nTlNTdHJpbmc= 7264\ndGhyb3c= 7265\nY3JlYXRlZA== 7266\nLk5ldw== 7267\nX3ZpZXc= 7268\nQ1A= 7269\nZXBz 7270\nT3A= 7271\nIGdyYXRpcw== 7272\nICci 7273\nIGludGVydmlldw== 7274\nIiIiCg== 7275\nIHBhcnRpYWw= 7276\nIGFyaWE= 7277\nYmluZw== 7278\nQXV0aG9y 7279\nQm9vaw== 7280\nIFBhdA== 7281\ndW1hbg== 7282\nVXNlcnM= 7283\ncGx1cw== 7284\nMTkz 7285\nIERpcmVjdA== 7286\ndmVudWU= 7287\nYWxwaGE= 7288\nVUNDRVNT 7289\nIENhbGw= 7290\nICk7DQo= 7291\naW1hdGVk 7292\nIHJlbWFpbg== 7293\nIGFudGk= 7294\nIExvbmRvbg== 7295\nIHNhZmV0eQ== 7296\nUE9TRQ== 7297\nb2xlcw== 7298\nY29udHJvbGxlcg== 7299\nQnl0ZQ== 7300\nIENvdXJ0 7301\nIFBoaWw= 7302\nIEFzc29jaQ== 7303\nZW5h 7304\n5ZA= 7305\nX1NUUg== 7306\nY29pbg== 7307\ncmVzaG9sZA== 7308\nIGJhdGNo 7309\nX0NsaWNr 7310\nZW50aWNhdGlvbg== 7311\nPic7Cg== 7312\nZW50eQ== 7313\nIGJlZ2lubmluZw== 7314\nIHplcm8= 7315\nIENvbnZlcnQ= 7316\nIHRlcnI= 7317\nIHBhaWQ= 7318\nIGluY3JlYXNlZA== 7319\nY2F0Y2g= 7320\nLXNpemU= 7321\nMTE1 7322\nYWN0aXZpdHk= 7323\nZXF1YWxz 7324\nIHF1ZXVl 7325\nICIn 7326\nIEludGVybmF0aW9uYWw= 7327\nIGbDvHI= 7328\ndXJzZGF5 7329\nIHNjaWVudA== 7330\nYWxsb3c= 7331\nYXhpcw== 7332\nIGFwcHJvcHJp 7333\nZWRnZQ== 7334\nIGlkeA== 7335\nU3VjY2Vzcw== 7336\nZW50aWZpZXI= 7337\nOlw= 7338\neGlz 7339\nIG1heGltdW0= 7340\nYXJrcw== 7341\nIGJpcnRo 7342\nKGluZGV4 7343\nIG1heWJl 7344\nLnB5 7345\nZmlsZXM= 7346\nIGxpbWl0ZWQ= 7347\nX2NoZWNr 7348\nbG9vaw== 7349\ncGxpZXM= 7350\nIG1vdmVtZW50 7351\nJ10u 7352\nIGJyb2Fk 7353\nIEJF 7354\nIFVuaXR5RW5naW5l 7355\nLmNwcA== 7356\nIEV2ZXJ5 7357\nQWRtaW4= 7358\nIGZhbnM= 7359\ncGFyZWQ= 7360\nCiAgICAK 7361\nIGZvcmVpZ24= 7362\nIHBhbg== 7363\nIHRvdXI= 7364\nIE9yZGVy 7365\nIG1vdmluZw== 7366\nIGF1Zg== 7367\nQ2FsbA== 7368\nY2I= 7369\nxZ8= 7370\ndmVudG9yeQ== 7371\nIFNxbA== 7372\nIGZ1bGx5 7373\nQ2xpY2tMaXN0ZW5lcg== 7374\nV09SRA== 7375\nIGFubm91bmNlZA== 7376\nKQ0KDQo= 7377\nIGFncmVlZA== 7378\ncmll 7379\nIGVhcm4= 7380\nX2xpbms= 7381\nLmFycmF5 7382\nKHRleHQ= 7383\nIG1hdGVyaWFscw== 7384\nLHA= 7385\nZmZmZg== 7386\ndmc= 7387\nIMKp 7388\nIHVubGVzcw== 7389\nYWpheA== 7390\nTE9H 7391\nIHNleHVhbA== 7392\nIFwi 7393\nLXRpbWU= 7394\nIGNvYWNo 7395\nIHN1cHBvcnRlZA== 7396\nIHBob3Rvcw== 7397\naWZvcm0= 7398\nLkNyZWF0ZQ== 7399\nKV0= 7400\ncmllcg== 7401\nIGRpYWxvZw== 7402\nYXZlcg== 7403\naWdl 7404\nKSs= 7405\nX2lkeA== 7406\nOls= 7407\nX21pbg== 7408\nIENvbmc= 7409\nIHByZXNzdXJl 7410\nIHRlYW1z 7411\nU2lnbg== 7412\nYmVnaW4= 7413\ncmlhbg== 7414\nTkVTUw== 7415\nTFM= 7416\nIGltcHJvdmU= 7417\nIFN1bmRheQ== 7418\nIGRlZmluaXRpb24= 7419\naWdlcg== 7420\ncm9sbGVycw== 7421\nIHRoaW5raW5n 7422\nVGVtcGxhdGU= 7423\nLUY= 7424\nIGVtZXJn 7425\ncGxhdGVz 7426\nIFVTQQ== 7427\nLnNldFN0YXRl 7428\nIEFsc28= 7429\ncmV2 7430\nIGVuYWJsZQ== 7431\nIENP 7432\nUEVDVA== 7433\nIGNvbmNlcHQ= 7434\nKS0= 7435\nIOKAog== 7436\nIHNldHM= 7437\nIG1lYW5pbmc= 7438\nZW1vbg== 7439\nIENvbnM= 7440\nY21w 7441\nZWRlcg== 7442\nYW5uZWQ= 7443\naWNlbnNlZA== 7444\nIFN1cGVy 7445\nIGRhaWx5 7446\nIG11bHRp 7447\nX3U= 7448\nIGNoYWxsZW5n 7449\nX21vZGU= 7450\nIFByb21pc2U= 7451\nIHN0cmljdA== 7452\nam8= 7453\naW50b24= 7454\nKGxpc3Q= 7455\nT25seQ== 7456\nPns= 7457\nIHZlaGljbGU= 7458\n7ZU= 7459\nIFBsYXllcg== 7460\nMTA2 7461\nIERlbA== 7462\nIHBvb2w= 7463\nLnVybA== 7464\nbmVzZGF5 7465\nKCk7DQoNCg== 7466\nOTAw 7467\nICIpOwo= 7468\nTG9jYWw= 7469\nLiIpOwo= 7470\nIG9yZ2FuaXphdGlvbg== 7471\ncmVuZGVy 7472\nIEFwcGxpY2F0aW9u 7473\nIHN1bW1lcg== 7474\nZXhwZWN0ZWQ= 7475\nTkE= 7476\nIHJhcA== 7477\nX29iag== 7478\nIHN1cmZhY2U= 7479\nIFBVUg== 7480\nIH0sCgo= 7481\nIHZhcmlhYmxlcw== 7482\nKG1lc3NhZ2U= 7483\nIG9waW4= 7484\nLmJhY2s= 7485\n0LDQvQ== 7486\nIHdvcmtlcnM= 7487\ndm0= 7488\nQ28= 7489\ndWdodGVy 7490\nIG1hc3Rlcg== 7491\nICIiLA== 7492\nIHN0b3JpZXM= 7493\nLlVzZXI= 7494\nIGNlbGVicg== 7495\naW5lc2U= 7496\nQlM= 7497\nIENvbW1hbmQ= 7498\nYXNoYm9hcmQ= 7499\nIG9n 7500\na2c= 7501\nLmltYWdl 7502\nLnN0eWxl 7503\nIHN0ZXBz 7504\nIEJlbg== 7505\nKGFyZ3M= 7506\nNDA0 7507\nIFBlcnNvbg== 7508\nLHk= 7509\nIG9mZmljaWFscw== 7510\nfAo= 7511\nIHNraWxscw== 7512\ndmM= 7513\nIGJ1aWxkZXI= 7514\nIGdhcg== 7515\nQWNjb3VudA== 7516\nIEF1dGg= 7517\n55Q= 7518\nJ10pCg== 7519\nIEFU 7520\nbm4= 7521\nLkludA== 7522\nU1NFUlQ= 7523\nIGVmZmVjdGl2ZQ== 7524\nTEVURQ== 7525\nIHRvb2xz 7526\nQVJE 7527\nIGRpZ2l0YWw= 7528\nMTkx 7529\nRG91Ymxl 7530\nIEZpbmQ= 7531\nUkM= 7532\nIGlubGluZQ== 7533\nL3I= 7534\nQVJBTQ== 7535\nQVNL 7536\nIGludGVudA== 7537\nYWlnaHQ= 7538\nX2FkZHI= 7539\nIHJlcXVlc3Rz 7540\nLmZpcnN0 7541\nIGRlYnVn 7542\nIHNwZW50 7543\nKCkpKTsK 7544\nxZs= 7545\nIHByaW5jaXA= 7546\nTG9nZ2Vy 7547\nY2x1ZGVz 7548\nLnVzZQ== 7549\nIHN1cnY= 7550\nbWVkaWE= 7551\nIEZlYnJ1YXJ5 7552\nIE1hYw== 7553\nIG1pc3Npbmc= 7554\nIHdpZmU= 7555\nIHRhbGtpbmc= 7556\nIE1ha2U= 7557\nIGNhcnQ= 7558\nIGxvY2F0ZWQ= 7559\nRW5j 7560\nLWE= 7561\nY2hyb24= 7562\nIGNhcmRz 7563\nIGd1eQ== 7564\nIHBlcnM= 7565\nIFllcw== 7566\nYXRldmVy 7567\nIEFuZw== 7568\nb2xhcg== 7569\nIEV2ZW4= 7570\nIGFjY3Vy 7571\nIFBvd2Vy 7572\nIEdvbGQ= 7573\nY2xlYXI= 7574\nUHJvY2Vzcw== 7575\nIHJlY29yZHM= 7576\nIGtpbGxlZA== 7577\nLmNsZWFy 7578\nIFdBUlJBTlRJRVM= 7579\nIHB1cnBvc2U= 7580\ncGFuZWw= 7581\nSkVDVA== 7582\nw61h 7583\nIGV4ZXJj 7584\nV1M= 7585\nL0w= 7586\nLmV4cG9ydHM= 7587\nIF9fXw== 7588\nIHNpbg== 7589\nU2VydmxldA== 7590\nIGTDqQ== 7591\nLmRlbGV0ZQ== 7592\ncm9rZQ== 7593\nU2w= 7594\ndWdo 7595\nZWFycw== 7596\nIHBvaW50ZXI= 7597\nIGhvcA== 7598\nYWxsZXJ5 7599\nIG9icw== 7600\nY292ZXJ5 7601\nCWNoYXI= 7602\nCQkJCQkJCQkJCQ== 7603\nCWRlZg== 7604\nb2NpdHk= 7605\naXRjaGVu 7606\ndWxhdGlvbnM= 7607\nIEZJVA== 7608\nICku 7609\nc3RyYWludHM= 7610\ndmVudGlvbg== 7611\nIHJlcXVpcmVz 7612\nIE9wZXI= 7613\nTUU= 7614\nT1VOVA== 7615\nYWxsZXQ= 7616\nIG5vcm0= 7617\nSVJF 7618\nZXhhcw== 7619\nIHByb2dyYW1z 7620\nIHdlYWs= 7621\nJy4k 7622\ndWluZw== 7623\nCSAgICAgICA= 7624\nIG1pbA== 7625\nIGZpcm0= 7626\naW5pdGVseQ== 7627\nX1ZBTFVF 7628\nYXBzZQ== 7629\nYXRpc2Y= 7630\nIGRlbWFuZA== 7631\nX21vZA== 7632\nIGRlc2NyaWJlZA== 7633\nIHBsYWNlcw== 7634\nVklE 7635\nIGFsb25l 7636\nIGV4cG9ydA== 7637\nIHZlYw== 7638\nIE1heA== 7639\nIGFjdGl2aXRpZXM= 7640\naWN0dXJlcw== 7641\nZ2VuZXI= 7642\nIG1h 7643\ngqw= 7644\nIGV4cHJlc3Npb24= 7645\nQ2FsbGJhY2s= 7646\nX2NvbnRlbnQ= 7647\nIE1vc3Q= 7648\nIHRlc3Rpbmc= 7649\nRUM= 7650\nQ0hBTlQ= 7651\nIGFkanVzdA== 7652\nLlRocmVhZGluZw== 7653\nKGN0eA== 7654\nIGFncmVl 7655\naWdoZXN0 7656\nIHVp 7657\nIExhdw== 7658\nLlk= 7659\nPjw/ 7660\nIHBvZA== 7661\nLWxn 7662\n4oCdCgo= 7663\nIGRlc2NyaWJl 7664\nIEV1cm9wZWFu 7665\nLXNo 7666\nIFBVUlBPU0U= 7667\nT1JZ 7668\nIGNvbnZlcnM= 7669\nIElsbHVtaW5hdGU= 7670\nIEF2 7671\nKGNo 7672\nPyI= 7673\nY2hlbg== 7674\naW1h 7675\nRG9jdW1lbnQ= 7676\nIG9wZXJhdGlvbnM= 7677\nd2lu 7678\nCWZ1bmN0aW9u 7679\nLkltYWdl 7680\nIHNjZW4= 7681\nL2g= 7682\nIFND 7683\nIGV4cGxv 7684\nOiU= 7685\nLyoqDQo= 7686\nTkFNRQ== 7687\n5og= 7688\nKHZhcg== 7689\nIGRpcmVjdG9y 7690\nT05H 7691\nIHlpZWxk 7692\nIGZlZXQ= 7693\nIFNlYXJjaA== 7694\nIEls 7695\nIHJlc3RhdXI= 7696\nZHVj 7697\nIGludGVnZXI= 7698\nMTA3 7699\nICcnOwo= 7700\nIGhpZ2hseQ== 7701\nY2hlY2tlZA== 7702\nIFBBUlRJQw== 7703\nRVJDSEFOVA== 7704\n77yJ 7705\nIG9wdGlt 7706\nUXVldWU= 7707\nIExJ 7708\naXRhdGlvbg== 7709\nIHRyYW5zcG9ydA== 7710\naXNzaW9u 7711\nZmlsbA== 7712\ndXNpb24= 7713\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 7714\nCWJvb2w= 7715\nLXRo 7716\ndXB0 7717\nIGVzc2VudGlhbA== 7718\nYW50ZWQ= 7719\nIGJlbmVmaXRz 7720\nCVM= 7721\nJzsNCg== 7722\naWtp 7723\nIGdpcmxz 7724\naWNlZA== 7725\nYnVmZmVy 7726\nXSs= 7727\nIHNvY2tldA== 7728\nIHByaWNlcw== 7729\nIEZyZQ== 7730\nIHNhdA== 7731\nIHdvb2Q= 7732\nTWVudUl0ZW0= 7733\nQVJH 7734\nIEFkbWlu 7735\nT1dO 7736\nZGs= 7737\nIHJlc2V0 7738\nIGZvcm1z 7739\nINC4 7740\n5pY= 7741\nIFR1ZXNkYXk= 7742\nMTA5 7743\nIEluaXRpYWxpemVk 7744\nX3RyYWlu 7745\nb3Jhcnk= 7746\nYXRlZ29y 7747\nIGR0 7748\nVG90YWw= 7749\nY29uc3RydWN0 7750\naWxpZXM= 7751\nIGd1eXM= 7752\n0LXRgA== 7753\nIGluc3RydWN0aW9u 7754\nMDEw 7755\neWxlZA== 7756\nIGludGVybmV0 7757\nZXRhZGF0YQ== 7758\nYWR5 7759\nZmFjZXM= 7760\namVjdGlvbg== 7761\nIEphY2s= 7762\nIHJlY3Q= 7763\nWy0= 7764\nIExlZw== 7765\nIGRldmljZXM= 7766\nT0M= 7767\nICoNCg== 7768\nb3JhdGlvbg== 7769\nZXJ0YWlu 7770\nIGd1YXJk 7771\nb3N0cmVhbQ== 7772\nIGVudW0= 7773\nLmxheW91dA== 7774\nICI7Cg== 7775\ndm9rZQ== 7776\nIE9r 7777\nSG9tZQ== 7778\nKHRy 7779\nRVRI 7780\nIGRlbGF5 7781\nIHB1cmNoYXNl 7782\nZGM= 7783\nIGFyZW4= 7784\nX29uY2U= 7785\nCQkJCQo= 7786\ncm9y 7787\nZHJhdw== 7788\nLnJ1bg== 7789\nKG1vZGVs 7790\nVGltZW91dA== 7791\nbGlr 7792\nIEFyZw== 7793\nLmVu 7794\nIGZpc2g= 7795\nY3B5 7796\nX2Zl 7797\nRVJDSEFOVEFCSUxJVFk= 7798\nKFg= 7799\nX291dHB1dA== 7800\nPz8= 7801\nIGpv 7802\nYW5kYXJk 7803\nIGRvbGw= 7804\nZXJyb3Jz 7805\nX2Jhc2U= 7806\nIFBBUlRJQ1VMQVI= 7807\nIGxlYWRlcg== 7808\nIGNvbXBhcg== 7809\nIGRvdWI= 7810\nIFZpcw== 7811\nU3RhY2tUcmFjZQ== 7812\nLUM= 7813\nIFN0dWQ= 7814\nc3RpdHV0ZQ== 7815\nTW9yZQ== 7816\nIERlc2NyaXB0aW9u 7817\nV0FSRQ== 7818\nYWRz 7819\nINC6 7820\nYmluZA== 7821\nPXNlbGY= 7822\nZW1wbG95 7823\nW24= 7824\nLmFsbA== 7825\nLUI= 7826\nJiY= 7827\nYWxt 7828\nIGN1bHR1cmU= 7829\naG91c2U= 7830\nIHN1ZmZlcg== 7831\nICcl 7832\nIHN0cmFpZ2h0 7833\nIFN0YXI= 7834\ndWRv 7835\nIGRlZA== 7836\nIENPTQ== 7837\nIGNvbmZpcm0= 7838\nIEdvb2Q= 7839\nLnNj 7840\nX19fX19fX19fX19fX19fXw== 7841\nRFI= 7842\nQ29uZmlndXJhdGlvbg== 7843\nRGF0ZVRpbWU= 7844\nIGFkdmVydA== 7845\nIGNvdWxkbg== 7846\nYXN5bmM= 7847\nc3RhY2s= 7848\nJykNCg== 7849\nS2l0 7850\nIGhvdXM= 7851\nIG1lY2hhbg== 7852\ncmF0ZQ== 7853\nMjA0 7854\nIGF1ZGlv 7855\nCWNvdXQ= 7856\nY29yZXM= 7857\nIHNwb3Q= 7858\nIGluY3JlYXNpbmc= 7859\nICMj 7860\nKSkp 7861\ncG9pbnRz 7862\nIGNvbXBhcmVk 7863\nbGln 7864\nIGJlaGF2aW9y 7865\nIEJZ 7866\nIEF0dA== 7867\nY3JhZnQ= 7868\naGVhZGVycw== 7869\nZXRl 7870\nZW5kcmVnaW9u 7871\nIGRldGFpbA== 7872\nVUxF 7873\nIENvbW1vbg== 7874\nCXByb3RlY3RlZA== 7875\nc3Rvbg== 7876\nIEZJVE5FU1M= 7877\nIGZyZXNo 7878\nIj4KCg== 7879\nLmV4YW1wbGU= 7880\nYmVyZw== 7881\nIG1vdmVk 7882\nCWU= 7883\nIFNhdHVyZGF5 7884\nIHBheWxvYWQ= 7885\nxIc= 7886\nKToKCg== 7887\nIGJleQ== 7888\ndXJlcg== 7889\nPHNjcmlwdA== 7890\nIHN5bWJvbA== 7891\nIGFzc3Vt 7892\nIHB1bA== 7893\nRWZmZWN0 7894\nIGh1bmRyZWQ= 7895\nVG9vbA== 7896\nYWtlZA== 7897\nY29ubmVjdGlvbg== 7898\nIHZvaWNl 7899\nIHBk 7900\nIHRyYW5zYWN0aW9u 7901\nIGxpbmtz 7902\nRXJy 7903\nIEluZGlhbg== 7904\nVEM= 7905\nYXRhbG9n 7906\nbmk= 7907\nc2lnbg== 7908\nPDwi 7909\namk= 7910\neWE= 7911\nIGRlbW9uc3Ry 7912\ndWxhdGVk 7913\nLlN0 7914\nIGluc3RpdA== 7915\nIGJvb3N0 7916\nIGNlbGxz 7917\nb2xpYw== 7918\nLlBybw== 7919\nOjwv 7920\nRXZlbnRMaXN0ZW5lcg== 7921\naWZ5aW5n 7922\nIERp 7923\nb3Jyb3c= 7924\nLmV4ZWN1dGU= 7925\nIGNvbGxlZ2U= 7926\nWW91cg== 7927\nIGxhcmdlc3Q= 7928\nLmRpcw== 7929\nIHF1aQ== 7930\nIGluZGl2aWR1YWxz 7931\nX2J1ZmZlcg== 7932\nIG5n 7933\nU0E= 7934\nIENvbnRyb2w= 7935\nIHNpbmc= 7936\nIHN1aXQ= 7937\nICAgIAk= 7938\nU0c= 7939\nIGp1bXA= 7940\nIHNtYXJ0 7941\nb21h 7942\nIEV4cA== 7943\nICct 7944\nIGFzc2lzdA== 7945\nIHN1Y2Nlc3NmdWxseQ== 7946\nc3lz 7947\nIENyZQ== 7948\nX3JlZg== 7949\nIFRodXJzZGF5 7950\nIGJ1cg== 7951\nINC0 7952\nIGJleW9uZA== 7953\nIG5vZGVz 7954\nRGV0YWlscw== 7955\naW5jdA== 7956\nIEphbWVz 7957\nIGFmZmVjdA== 7958\nZXhjZXB0aW9u 7959\nIHR5cGVvZg== 7960\nKA0K 7961\nLXNl 7962\nIGZldGNo 7963\nYCw= 7964\nIGNydXNoZXI= 7965\nfS4= 7966\nIEJP 7967\nU2hvdw== 7968\nIHJhdGVz 7969\nIGJvbg== 7970\nLWljb24= 7971\nIE1lZGlh 7972\nUkVTUw== 7973\nIFZhbGlk 7974\n0L7Quw== 7975\nIGZ1Y2s= 7976\nYWNrcw== 7977\nIHN0dWRpZXM= 7978\nTWU= 7979\nIG93bmVycw== 7980\nfWVsc2U= 7981\nIGdyb3dpbmc= 7982\nVmFyaWFibGU= 7983\nIEJlbA== 7984\nLnJhbmRvbQ== 7985\ndmVtZW50 7986\nb255bQ== 7987\nKEY= 7988\nIEZBTFNF 7989\nIHRvcmNo 7990\nKHJvdw== 7991\naWdv 7992\nc3RydWN0dXJl 7993\nMTIx 7994\nIGNlcnRhaW5seQ== 7995\nRGVw 7996\nIEdyZWVu 7997\ncXVlc3Rpb24= 7998\nIGFkZGluZw== 7999\nIERldmVsb3A= 8000\nX2RlZg== 8001\nIG1hY2g= 8002\nPSU= 8003\nCQkg 8004\nY29uZHM= 8005\nUHJvamVjdA== 8006\nIHJlamVjdA== 8007\nIM4= 8008\nIHBvb3I= 8009\nIGF3YXJl 8010\nMTE0 8011\nIEJ1aWxk 8012\nIEJyaXRpc2g= 8013\nIE5F 8014\nIG51bWVy 8015\ncmVlcw== 8016\nY2xhaW0= 8017\nIG1vY2s= 8018\nIG9t 8019\nIHNjcmU= 8020\nT0xE 8021\nLnBs 8022\nZWxlcg== 8023\nIGNvcnJlc3BvbmQ= 8024\nX0hF 8025\nIGJpbmFyeQ== 8026\nMTE2 8027\nX29yZGVy 8028\nIFNRTA== 8029\nIGFkdmFudA== 8030\nIHByZXY= 8031\nLls= 8032\nLmFzc2VydEVxdWFs 8033\ncGxpZXI= 8034\nYXJw 8035\nIGNsb3NlZA== 8036\nIGVuY291cg== 8037\nIFFTdHJpbmc= 8038\nYXVk 8039\nIGRldmVsb3BlZA== 8040\nIHBlcm1pc3Npb24= 8041\nLmRlYnVn 8042\nb3BlcmF0b3I= 8043\nICcK 8044\nIHN5bQ== 8045\nYXRpdmVseQ== 8046\nw6ll 8047\nLWNvbG9y 8048\nIEdFVA== 8049\na3k= 8050\nIGFsdGhvdWdo 8051\nX3JlcXVlc3Q= 8052\nX2VsZW1lbnQ= 8053\nLi4uLi4uLi4uLi4uLi4uLg== 8054\nX0RBVEE= 8055\nIGFtYXppbmc= 8056\nIHNi 8057\nIERlZmF1bHQ= 8058\nRXZlbnRz 8059\nIGZhaWx1cmU= 8060\nYWNsZQ== 8061\nUHJvcGVydGllcw== 8062\nIGRyZWFt 8063\nIGRpc3Ry 8064\nIGF1 8065\nIGdlbmVyYXRlZA== 8066\n5pU= 8067\nIFRlYW0= 8068\nVVNF 8069\nIGluY29tZQ== 8070\nIGV5ZQ== 8071\nX25vdA== 8072\nIl0s 8073\nX2Zvcm0= 8074\nU3VwcG9ydA== 8075\nb3JkZXJz 8076\nLlByaW50 8077\ndmlsbGU= 8078\nIFdlZG5lc2RheQ== 8079\nb2x2ZXI= 8080\nIG9wcG9z 8081\naXNhdGlvbg== 8082\nb2xh 8083\nQ2xvc2U= 8084\nPHA= 8085\nX3dpZHRo 8086\nSW52YWxpZA== 8087\neGI= 8088\nIHN0cnVnZw== 8089\nX2FjdGlvbg== 8090\nIHR4dA== 8091\nIFBhdGg= 8092\nYWxhcg== 8093\nIE1FUkNIQU5UQUJJTElUWQ== 8094\nc2VydmljZQ== 8095\nIE1pY2hhZWw= 8096\nYWJsZVZpZXc= 8097\nRGVidWc= 8098\nb2tlcw== 8099\nU2hl 8100\nIGd1ZXNz 8101\nIEphdmE= 8102\nX1BBVEg= 8103\nIHBhcnRpY3VsYXJseQ== 8104\nIElJ 8105\nIGRvbWFpbg== 8106\n5bm0 8107\nIHJlZHVjZQ== 8108\nLWxlZnQ= 8109\ncmVhbA== 8110\nIGFwcGVhcnM= 8111\nIGNvbW8= 8112\nIFVuaXQ= 8113\nIEdvdmVybg== 8114\nYWxp 8115\nYWxsZWw= 8116\nIEpldw== 8117\nX0k= 8118\nIGNvcw== 8119\nLmNvbG9y 8120\nIEdsb2JhbA== 8121\nIHRlbGU= 8122\nYmVu 8123\nX3RyYW5z 8124\nIHJlYXNvbnM= 8125\nIGVtYg== 8126\nZW5zaXR5 8127\nbGluZXM= 8128\nb21pbg== 8129\nU2NyZWVu 8130\n0LDRgg== 8131\ncGVjdHM= 8132\nY2xpcA== 8133\nZm9v 8134\ncmVudA== 8135\nIGFm 8136\nIGRhbmdlcg== 8137\naWxpbmc= 8138\nTmFtZXM= 8139\nT3Vy 8140\nIGRpc3RyaWJ1dGlvbg== 8141\nV2hpbGU= 8142\nU0w= 8143\nV3JpdGU= 8144\nIGdvdG8= 8145\nIGNvbG9ycw== 8146\nIHBvd2VyZnVs 8147\na2lu 8148\nIGRlcHRo 8149\nZXJjaWFs 8150\nIENvbmdyZXNz 8151\nIE1hcmtldA== 8152\nRGI= 8153\ndW5kZXI= 8154\nIExhc3Q= 8155\nw58= 8156\nZ3JlZw== 8157\nIHBvc3Rz 8158\nX1VSTA== 8159\nb3Rvcw== 8160\nRG9u 8161\nIG1pY3Jv 8162\nIGFycmVzdA== 8163\n0L8= 8164\nIChA 8165\nIEhvdA== 8166\nIEluZGV4 8167\nOyY= 8168\nIyE= 8169\nIE5vcg== 8170\nIENhcA== 8171\nLSg= 8172\nIGludGVyZXN0ZWQ= 8173\ncGVhcg== 8174\nIHJlbnQ= 8175\nIGFsYnVt 8176\nb2xpY3k= 8177\nLmxhbmc= 8178\nLnRyYW5z 8179\nLmZvcm1hdA== 8180\nIHsNCg0K 8181\ncGhlcmU= 8182\nIGF4aXM= 8183\nIEJ1c2luZXNz 8184\nZXJzaXN0ZW5jZQ== 8185\ndXJy 8186\nIG1pbmltdW0= 8187\nZW5kb3I= 8188\nIFNE 8189\nMTEz 8190\nIEludGVybmV0 8191\n5aQ= 8192\nRXhw 8193\naXZlcnNl 8194\nTU0= 8195\nIG9idmlvdXM= 8196\nIGJhc2lz 8197\nIHNjaWVuY2U= 8198\nIGJ1ZGdldA== 8199\naXphdGlvbnM= 8200\nUEE= 8201\nIGZsYWdz 8202\ncHJldA== 8203\nTE9DSw== 8204\nIHZhcmlldHk= 8205\nIHRydXRo 8206\nZHQ= 8207\nIGdvbmU= 8208\nIGJhdHRsZQ== 8209\nPHN0ZA== 8210\nIFNpbA== 8211\ncmY= 8212\ndWRh 8213\nIGVyb3Q= 8214\nIENhbQ== 8215\nIHN0YXRpb24= 8216\nICc8Lw== 8217\nY2hlbWU= 8218\nIFN1bg== 8219\nIGZpbmlzaGVk 8220\nIHNob3A= 8221\nIEtvcmU= 8222\nIGVpZ2h0 8223\nX1JFRw== 8224\nTkQ= 8225\nPiw= 8226\nIj48Pw== 8227\nKG51bQ== 8228\nCWlubGluZQ== 8229\nVHJhbnNhY3Rpb24= 8230\nLk9u 8231\nIG1haWw= 8232\ncmV5 8233\ncmVzdWx0cw== 8234\nIG5hdg== 8235\nSU1JVA== 8236\nX2lkcw== 8237\nTWFrZQ== 8238\n5Yo= 8239\nTW9kYWw= 8240\nIExPRw== 8241\nIFN1cg== 8242\nIGluc3RhbmNlb2Y= 8243\nIG92ZXJhbGw= 8244\nIEluZm9ybWF0aW9u 8245\nIGNvbnN0cnVjdGlvbg== 8246\nX0ZJTEU= 8247\nYnV0 8248\nIG1lZGlj 8249\nIGR1cmF0aW9u 8250\naXRuZXNz 8251\nYWdlbnQ= 8252\nQVY= 8253\nIHNldmVu 8254\nb2xm 8255\nIH19Cg== 8256\nIl0sCg== 8257\nMTcw 8258\nMTIy 8259\nIGNhbGxpbmc= 8260\nIGFucw== 8261\ndGhyb3dz 8262\nb3Jpem9udGFs 8263\nIHVzZVN0YXRl 8264\nLmZs 8265\nIFN0YXR1cw== 8266\nIE9ubGluZQ== 8267\nUlI= 8268\nIFJpY2g= 8269\nIEhpbGw= 8270\nIGJyYWlu 8271\nIGZvbGxvd2Vk 8272\nMjQw 8273\nZW1pYw== 8274\nIHNsaWdodA== 8275\nIGluc3VyYW5jZQ== 8276\nLkFycmF5 8277\nIGFic3RyYWN0 8278\nIFN1bQ== 8279\ncmVkaXJlY3Q= 8280\nb3duZXI= 8281\nKG1zZw== 8282\nIENsaW50b24= 8283\nTm9u 8284\nCWV4 8285\nIHZvbHVtZQ== 8286\nIEV2ZW50QXJncw== 8287\nLUw= 8288\nIERpbQ== 8289\nIE1hcnQ= 8290\nIGN1cnNvcg== 8291\nIGltcGxlbWVudGF0aW9u 8292\ndXJyZWQ= 8293\nIGxhcmdlcg== 8294\nKTsKCgo= 8295\nJys= 8296\nLnRyYW5zZm9ybQ== 8297\nIHVwbG9hZA== 8298\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 8299\nRHJhdw== 8300\nbmVs 8301\nCWZsb2F0 8302\ncXJ0 8303\nIE5ldHdvcms= 8304\nIHRpdA== 8305\nQXhpcw== 8306\nLmFuZHJvaWQ= 8307\nIGNvbXBsZXRlZA== 8308\nIG11cg== 8309\nIGNvbHVtbnM= 8310\neGM= 8311\nIHN1cHBseQ== 8312\naW1pbmFs 8313\nIHNwcg== 8314\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== 8315\nIHVuaXRz 8316\nKHU= 8317\nbWk= 8318\ncmVwbGFjZQ== 8319\nW2tleQ== 8320\n4Lk= 8321\nYW50aWM= 8322\nIHBheW1lbnQ= 8323\nLEI= 8324\nIEFwcGxl 8325\nZ2lu 8326\nUmVxdWlyZWQ= 8327\nIys= 8328\nbGFuZHM= 8329\nIHNxdQ== 8330\nIGZhY3Rvcg== 8331\nZGVj 8332\nIHN0cmVuZ3Ro 8333\nIGJveQ== 8334\nIGJhbGFuY2U= 8335\nIHNvdXJjZXM= 8336\nc2NyZWVu 8337\nLXRvcA== 8338\nIEFtYXpvbg== 8339\nIGhpZGRlbg== 8340\n0LXRgg== 8341\nX2NsaWVudA== 8342\nIGVhdA== 8343\nLmRpc3BsYXk= 8344\nIMK7 8345\nIHRyaWdnZXI= 8346\nYW5hZ2Vy 8347\nIHRybw== 8348\nIGNsYWltcw== 8349\nZm9yZA== 8350\nIENvbXBhbnk= 8351\nIGdpZnQ= 8352\nLDo= 8353\nX2FwcA== 8354\naGFuZGxl 8355\nIHByb2R1Y2U= 8356\nL2xpYg== 8357\nNTEy 8358\nIC0q 8359\nCXNldA== 8360\nJ107 8361\nYXJj 8362\nYW5kZXI= 8363\nIEVuZ2luZQ== 8364\nIGF0dHJpYnV0ZXM= 8365\ndGFzaw== 8366\nPD0= 8367\nKE4= 8368\nIHdhcm0= 8369\nd2hpY2g= 8370\nIEZvcmU= 8371\nYWdub3N0 8372\nbXlz 8373\nIHRhbA== 8374\nIFNhbA== 8375\nZ2k= 8376\nIFByaW50 8377\nIFRSVUU= 8378\nINC+ 8379\nLlVJ 8380\nIGZsYXNo 8381\ncm9wZXJ0eQ== 8382\nLmxvY2F0aW9u 8383\nIE1pbGw= 8384\nYmk= 8385\nY29udHI= 8386\nLnJlcXVlc3Q= 8387\nIFNhbQ== 8388\nIG5lZ2F0aXZl 8389\na2l0 8390\nIHNldHQ= 8391\nLnByaW50U3RhY2tUcmFjZQ== 8392\nYWJl 8393\nCWk= 8394\nIGJ1cm4= 8395\nIHNvY2lldHk= 8396\nQ2FjaGU= 8397\nIFNlY3VyaXR5 8398\nLm1vZGVscw== 8399\nIFdBUlJBTlRZ 8400\nX3Vw 8401\nY2VpdmU= 8402\nIGNsaWVudHM= 8403\nLlRy 8404\nIHByb3ZpZGluZw== 8405\nIHJvdXQ= 8406\nbWF0ZXJpYWw= 8407\nIHx8Cg== 8408\nIFNlcg== 8409\nIE9mZmljZQ== 8410\nRlRXQVJF 8411\nICck 8412\nIGZvYw== 8413\nIGV4Y2VsbA== 8414\nIGNhdA== 8415\nbm9ybWFs 8416\nIGRldGVybWluZQ== 8417\nCXVpbnQ= 8418\nUGFuZQ== 8419\nIGVtcGxveWVlcw== 8420\nIFRleGFz 8421\nIHRyYWZm 8422\nIFJlcG9ydA== 8423\nYW50YQ== 8424\nIEJveA== 8425\nIGRqYW5nbw== 8426\nIHBhcnRuZXI= 8427\nRUI= 8428\nTElORQ== 8429\nIGZlZWxpbmc= 8430\nIGNpdmls 8431\nKGZsb2F0 8432\nU3Fs 8433\nIHdvdWxkbg== 8434\nLmluaXQ= 8435\nLmxlZnQ= 8436\nLXY= 8437\nX2xldmVs 8438\nJ30= 8439\nQUY= 8440\nIGxvYWRpbmc= 8441\nIE9ubHk= 8442\nIGNvb2tpZXM= 8443\nIEds 8444\nQ08= 8445\nIHN0cmF0ZWd5 8446\nKCcuLw== 8447\nIHNoaXA= 8448\ncG9zZXM= 8449\nIHNpZ25hbA== 8450\nIGFscGhh 8451\nLnBvcA== 8452\nUmFkaXVz 8453\nIHJlcGxhY2U= 8454\nX0RJUg== 8455\nY291bnRlcg== 8456\nYnNlcnZhYmxl 8457\nZWxh 8458\nV2VpZ2h0 8459\naGFzaA== 8460\nYm9zZQ== 8461\nZng= 8462\nIEVtYWls 8463\nIHJlZmVy 8464\nbG9jYWxob3N0 8465\nX1JP 8466\naXF1ZXM= 8467\nU3RlcA== 8468\nIGFoZWFk 8469\nKFZpZXc= 8470\nIFNlcnZpY2Vz 8471\nIEpzb24= 8472\nZXNzb3I= 8473\nIHB1bg== 8474\nIGFwcHJvcHJpYXRl 8475\nYWtlcnM= 8476\nb3Nlbg== 8477\ncG9zaW5n 8478\nIGFnZW50 8479\nZmM= 8480\nIHRyYW5zZmVy 8481\nIGludmFsaWQ= 8482\nIFJlc2VhcmNo 8483\nVmVydGV4 8484\nIGdheQ== 8485\nIGpvdXJuYWw= 8486\nW3g= 8487\nICIiLAo= 8488\nIFdlbGw= 8489\nLlRhc2tz 8490\nU3BlYw== 8491\nIG9s 8492\nIHNwZW5k 8493\nIEF1c3RyYWxpYQ== 8494\nTWF0Y2g= 8495\nLmp1bml0 8496\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 8497\nIE1BWA== 8498\naXphYmxl 8499\nY2x1c2l2ZQ== 8500\nX3ZhbGlk 8501\nIHF1YXJ0ZXI= 8502\neWFu 8503\nMDA1 8504\nIEVkaXQ= 8505\nYXJkZW4= 8506\nPW5ldw== 8507\nIGZyYWc= 8508\nQml0 8509\nemk= 8510\nYWluZQ== 8511\ndWRk 8512\nLk9iamVjdA== 8513\nZGVidWc= 8514\nIGNhc2g= 8515\nX0lN 8516\nIGVlbg== 8517\nIGNvbW1lcmNpYWw= 8518\nIFZpZGVv 8519\nbG9hZGVy 8520\nIGZpeGVk 8521\nIGFwcGxpY2F0aW9ucw== 8522\nIF8s 8523\nIFJ1c3NpYQ== 8524\naXRlY3Q= 8525\nXyg= 8526\nIEJsb2Nr 8527\nIHNhbg== 8528\nIFRvbQ== 8529\nIHBlcmhhcHM= 8530\nIHNpZw== 8531\nbGV2YW50 8532\nIGNvcnBvcg== 8533\nYXRhc2V0 8534\ncm9uaWM= 8535\neGU= 8536\nIGV0aA== 8537\nU29tZQ== 8538\ncG9w 8539\nX09L 8540\nIHRlbmQ= 8541\nLlJlcw== 8542\nX2FuZA== 8543\nIHJldmlld3M= 8544\nIHdpbGQ= 8545\nMTE3 8546\nIGRlZ3JlZQ== 8547\nLk8= 8548\nLm9iamVjdHM= 8549\nX2FyZ3M= 8550\nbmls 8551\nIGRpc2FibGVk 8552\nUGFyZW50 8553\nIG5vdGVz 8554\nICIiCg== 8555\nKHN0YXRl 8556\naXN0cmljdA== 8557\nIGxvZ2dpbmc= 8558\nLklP 8559\nIE1hbA== 8560\nRE0= 8561\nIHhtbA== 8562\nIFJvYmVydA== 8563\nZWxlbg== 8564\nbGF5b3V0 8565\nZm9s 8566\nJ10pKQ== 8567\nLGI= 8568\nIEplcg== 8569\nZmlsZW5hbWU= 8570\nIGZhbg== 8571\nIEN1c3RvbQ== 8572\nPSIi 8573\nIERpZQ== 8574\nQnVuZGxl 8575\nLnV0aWxz 8576\nIHRyaXA= 8577\nTUI= 8578\nIHNvZnQ= 8579\nX01PREU= 8580\nIGFwcGxpY2FibGU= 8581\nIHVwcGVy 8582\nRVJWRVI= 8583\nX2Fs 8584\nX0xPRw== 8585\nSGVyZQ== 8586\nd3A= 8587\nIFNlcnZlcg== 8588\nIENsaWVudA== 8589\nIGNoZW0= 8590\nU2Nyb2xs 8591\nIGhpZ2hlc3Q= 8592\nIFNlbGVjdA== 8593\nICJA 8594\nIFdoeQ== 8595\nU2Vj 8596\naGVlbA== 8597\nT3BlcmF0aW9u 8598\nIGNvbm5lY3RlZA== 8599\naXJtZWQ= 8600\nIGNpdGl6 8601\nIENoZQ== 8602\nIGZvcmNlcw== 8603\nIHd3dw== 8604\nUm9vdA== 8605\nQU5DRQ== 8606\nTWFueQ== 8607\naWNpcA== 8608\ncmdhbg== 8609\nMjIw 8610\nIFRvcg== 8611\nIFByZXNz 8612\nIE1vcg== 8613\nLWxpbmU= 8614\ndWxlZA== 8615\nPlw= 8616\nIHRodXM= 8617\nIFJlZ2lzdGVy 8618\naG9s 8619\nIENoaW5lc2U= 8620\nIHBvc3RlZA== 8621\nIG1hZ24= 8622\nYWJpbGl0aWVz 8623\nIGRpc2Vhc2U= 8624\nIHJlbWFpbnM= 8625\nIFByb2Y= 8626\nLWZvcm0= 8627\nIGNpbg== 8628\nb3JnYW4= 8629\naWNhdGU= 8630\nIHN0cmVzcw== 8631\nXSo= 8632\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 8633\nX2NvbnRleHQ= 8634\nb3JyeQ== 8635\nIGRpZWQ= 8636\nbWF0 8637\nIHN0YXJ0cw== 8638\nLk1lc3NhZ2U= 8639\nIHJ1bnM= 8640\nIGd1aWRl 8641\nIHdhcnJhbnR5 8642\nZW50aWFscw== 8643\nZGljdA== 8644\nIFNpemU= 8645\ndWxlcg== 8646\nIHJlc3BvbnNpYmxl 8647\nX1NFVA== 8648\nIGNvbnRhaW5pbmc= 8649\nIFByaWNl 8650\nfHw= 8651\nMzUw 8652\nRlM= 8653\nIGVtcA== 8654\nX2J1dHRvbg== 8655\nKHVpbnQ= 8656\nIHN1ZmY= 8657\ncHRo 8658\nIGRlZmluaXRlbHk= 8659\ncHV0ZQ== 8660\nIG1hcmtldGluZw== 8661\nIFdI 8662\nIFNpZQ== 8663\nKz0= 8664\nT0xPUg== 8665\nIGNvbnN1bHQ= 8666\nIHNpZ25lZA== 8667\nIHNlcXVlbmNl 8668\nbGVl 8669\nIHJlcXVpcmVtZW50cw== 8670\naHk= 8671\nRXhwcmVzcw== 8672\nTVQ= 8673\nc2V5 8674\nIHVsdA== 8675\n5a4= 8676\nZWxsaWdlbmNl 8677\nIGFuYWx5 8678\nIGRyZXNz 8679\nZW5naW5l 8680\nIEdyZWF0 8681\nIEFuZHJvaWQ= 8682\nIEFsZXg= 8683\nbW9kZQ== 8684\nRGljdGlvbmFyeQ== 8685\nLkRhdGU= 8686\n5L0= 8687\nVklDRQ== 8688\nIGZhbWlsaWVz 8689\nIFJ1c3NpYW4= 8690\nIFRpbWVz 8691\nLmNhbGw= 8692\nJCg= 8693\nUHJvZmlsZQ== 8694\nIGZvbGRlcg== 8695\nY2hlcw== 8696\nIGxlZ2lz 8697\nX3Jvdw== 8698\ndW5lcw== 8699\n2YQ= 8700\nIH0pLg== 8701\nQXNzZXJ0 8702\nYWdlbg== 8703\nIEhhbmQ= 8704\nSXRlcg== 8705\nIGJpZ2dlc3Q= 8706\nb3JlYWNo 8707\nIHBvbGlj 8708\nIHBlcm1pc3Npb25z 8709\nIHNob3dlZA== 8710\nIEVsZW1lbnQ= 8711\nIHRvcGlj 8712\n4oCU4oCU 8713\ncm9hZA== 8714\nIEJhbms= 8715\ncmVjb3Jk 8716\nIHBhcnRuZXJz 8717\nIFJlZg== 8718\nZXNzaW9ucw== 8719\nIGFzc2Vzcw== 8720\nVVNU 8721\nIFBhcnR5 8722\ncHJvZHU= 8723\nTEM= 8724\nIHVs 8725\nLmZvcm0= 8726\naGlkZQ== 8727\nY29weQ== 8728\nVVRG 8729\nIFNPRlRXQVJF 8730\nDQoNCg0K 8731\nIExpbg== 8732\ndW5h 8733\ndWdhcg== 8734\nIGFkbWluaXN0cmF0aW9u 8735\nIG9wZW5pbmc= 8736\nIHNjYW4= 8737\nIGNvbnRpbnVlZA== 8738\nY29tcG9uZW50 8739\nLnNw 8740\nIGhhcHBlbnM= 8741\ndW1teQ== 8742\nIFBS 8743\nLkZpbGU= 8744\nIERvd25sb2Fk 8745\nTG9hZGluZw== 8746\nZGk= 8747\nIHdhaXRpbmc= 8748\nX0FERA== 8749\nVGFi 8750\nLnF1ZXJ5U2VsZWN0b3I= 8751\nIGVjb25vbXk= 8752\nIEZyZW5jaA== 8753\ndHh0 8754\nIGZhbnQ= 8755\nXzsK 8756\nSG9sZGVy 8757\nU0g= 8758\nMDA0 8759\nIG51bXB5 8760\nIHN0cmVldA== 8761\nIG1hbGU= 8762\nXE1vZGVs 8763\nYW5naW5n 8764\nMzMz 8765\nIEJpbGw= 8766\nIHByZXZpb3VzbHk= 8767\nQkk= 8768\nIFNlY3JldA== 8769\nIG1pc3Q= 8770\nIEZpZWxk 8771\ndXBz 8772\nIFByb2Nlc3M= 8773\nIGtlcHQ= 8774\nIE9U 8775\nIHRyYWRpdGlvbmFs 8776\nLmk= 8777\nYW1pbg== 8778\nIGhlbHBz 8779\nQW55 8780\nb3JpZ2lu 8781\naWx0ZXJz 8782\nanU= 8783\nZGVzYw== 8784\nIEFjY291bnQ= 8785\nICkNCg== 8786\na3RvcA== 8787\nb2xseQ== 8788\nIGZz 8789\nIOo= 8790\nIHV0 8791\nIGNlbnRyYWw= 8792\nKHRlc3Q= 8793\nLkFu 8794\nIHNhdGlzZg== 8795\nR1I= 8796\nIEZ1bGw= 8797\nIGhlYXQ= 8798\naWJlcg== 8799\nIG9udG8= 8800\nbW9z 8801\nU2NoZW1h 8802\nIGZhY3Rvcnk= 8803\nIi4k 8804\nYXdz 8805\nU3RhdGVtZW50 8806\nKHRhcmdldA== 8807\nCW5ldw== 8808\nLmJl 8809\nIGd1ZXN0 8810\nIG1hbA== 8811\nQVJZ 8812\nIHJlYWNoZWQ= 8813\nIG1vdXNl 8814\nIGNoYWxsZW5nZQ== 8815\nCWRvdWJsZQ== 8816\nIFRlbQ== 8817\nIHRlcnJvcg== 8818\nIGV4dHJhY3Q= 8819\nX1RP 8820\nIHNlcGFyYXRl 8821\nIG1pcg== 8822\naGVscA== 8823\nIGNhcGFjaXR5 8824\nIFByb3BlcnR5 8825\na2Fu 8826\nX2NyZWF0ZQ== 8827\nIExpZ2h0 8828\nLnBhcmVudA== 8829\nIHVuZGVyc3RhbmRpbmc= 8830\nIGVhc2llcg== 8831\nIHw9 8832\nIGVuaA== 8833\nIGZhdA== 8834\nIHByb3Rlc3Q= 8835\nYW1t 8836\nX0FU 8837\nLW9m 8838\naWxz 8839\nIE9o 8840\nIHBzeWNo 8841\nICQu 8842\naW5kcw== 8843\nIHJlbGF0aXZl 8844\nc2hvcA== 8845\nc2hvcnQ= 8846\nIFNhbmQ= 8847\nMjEw 8848\ndWVzdGlvbg== 8849\nIGZlYXI= 8850\nLwoK 8851\nLmNvbnRleHQ= 8852\nIHNjaG9vbHM= 8853\nIHNlcnZl 8854\nem9uZQ== 8855\nX2Ri 8856\nIG1ham9yaXR5 8857\nZXhhbXBsZQ== 8858\nIGxhbmc= 8859\nCSAg 8860\nUmVnaXN0ZXI= 8861\nZW5kbw== 8862\nIHByb2Nlc3Npbmc= 8863\nX3RlbXBsYXRl 8864\nLXVzZXI= 8865\nIGVn 8866\nQ09N 8867\nIEJsdWU= 8868\naXJv 8869\nIHJlbW90ZQ== 8870\nIElU 8871\nIyEv 8872\nIHJlZGlzdHJpYg== 8873\nMTI0 8874\ncmF6 8875\nIFNpbmNl 8876\nIFR1cg== 8877\nMTM1 8878\nQmFja2dyb3VuZA== 8879\nPT09 8880\nIHJlZmxlY3Q= 8881\nIHByb3M= 8882\nY21k 8883\nIHdob20= 8884\nQ29tcGF0 8885\nIEFyZQ== 8886\nSWRlbnRpZmllcg== 8887\nIFRob20= 8888\nX3BvcnQ= 8889\nZ3U= 8890\nIG1vbml0b3I= 8891\ncm0= 8892\nIHBhdGllbnQ= 8893\ndmVydGVy 8894\nIGdhaW4= 8895\nLXVp 8896\nSW5zdA== 8897\nIGRpZXM= 8898\nMTE4 8899\nQXJlYQ== 8900\nX2ZpbHRlcg== 8901\nIGdyYXQ= 8902\nIHJlYWxpdHk= 8903\nb3JkaW5hdGU= 8904\nb2x2ZWQ= 8905\nQ29udGFjdA== 8906\nIGNvbXBsaWFuY2U= 8907\nX29y 8908\nIFZhcg== 8909\nZGw= 8910\nIGFwcGVuZA== 8911\nR0VS 8912\nKG1heA== 8913\nLnJlbmRlcg== 8914\nIGR5bmFtaWM= 8915\nb3JkaW5hdGVz 8916\nX29wdGlvbnM= 8917\nX2NvbHVtbg== 8918\nIGJhdHRlcg== 8919\nc3BhY2U= 8920\nTGE= 8921\nIFNvdXJjZQ== 8922\nL2Jpbg== 8923\nIGRvcw== 8924\nIEJvYXJk 8925\nIFRocmVhZA== 8926\nIEFM 8927\nKGNvbmZpZw== 8928\nMTQ0 8929\nIE1lcg== 8930\nIG1pbGVz 8931\nX2hlYWRlcg== 8932\nRVRIT0Q= 8933\naXp6 8934\nIGJlbmVmaXQ= 8935\nIGludGVncg== 8936\nKGN1cnJlbnQ= 8937\ndWxv 8938\nLmRlZmF1bHQ= 8939\nIERpdg== 8940\nIHRvbg== 8941\nb3Ro 8942\nZXJ2YXRpb24= 8943\nZWRvbQ== 8944\nIGJhYnk= 8945\nY2VpdmVk 8946\nLnRvcA== 8947\ncmlvcml0eQ== 8948\nIExvY2Fs 8949\ncmlhZ2U= 8950\nIGF0dGFja3M= 8951\nIGhvc3BpdGFs 8952\nMTY4 8953\nIGZlbWFsZQ== 8954\nIExvZ2lu 8955\nIEZsb3I= 8956\nIGNoYWlu 8957\nYXNoaW9u 8958\nVGV4dHVyZQ== 8959\nU2F2ZQ== 8960\nIGZhcm0= 8961\nLmNvbnRhaW5z 8962\nLlRlc3Q= 8963\nIGtub3dz 8964\nIGdlbmVyYWxseQ== 8965\naXBlbGluZQ== 8966\nIG1lYW50 8967\nZW5jaWE= 8968\nIG5pY2h0 8969\nIGNvbnRlbnRz 8970\nUE0= 8971\nY2hlZHVsZQ== 8972\nKGxpbmU= 8973\nQ0c= 8974\nam9i 8975\nIFJlYWw= 8976\ndWVy 8977\nZmlybQ== 8978\nINg= 8979\nZXRybw== 8980\nImAK 8981\nIHNwZWVjaA== 8982\nIHRocg== 8983\nZm9yZWFjaA== 8984\nIHdhcm4= 8985\nCWw= 8986\nIGhlYXZ5 8987\nPGxp 8988\nTmU= 8989\nIGludmVzdGlnYXRpb24= 8990\nTWF0aA== 8991\nLXRpdGxl 8992\nIGNodXJjaA== 8993\nIGRlc3BpdGU= 8994\nY2hhaW4= 8995\nIHdoYXRldmVy 8996\nYXJpYW4= 8997\nZm4= 8998\nIG1ldGE= 8999\nfSkKCg== 9000\nVUZG 9001\nIHJlZ2FyZGluZw== 9002\nX1NVQ0NFU1M= 9003\nbWVz 9004\nIEludGVudA== 9005\nIHJlc29sdmU= 9006\ncG9zcw== 9007\naXJh 9008\nZm9yY2U= 9009\nb2ljZQ== 9010\nw6I= 9011\nIHBt 9012\nIHVwZGF0ZXM= 9013\nQXJy 9014\nINE= 9015\ndGVzdGluZw== 9016\nIHRvd2FyZA== 9017\nbnRheA== 9018\n64s= 9019\nIGxpc3Rlbg== 9020\nIGdvYWxz 9021\nSW5zdGFuY2VTdGF0ZQ== 9022\nRHI= 9023\nIHJhcmU= 9024\nIHRyYWls 9025\nS2V5cw== 9026\nQ2Fs 9027\nQ2Fy 9028\nIFBlb3BsZQ== 9029\nCWxvY2Fs 9030\nY2xhc3Nlcw== 9031\nUmVmZXJlbmNl 9032\nLmZvckVhY2g= 9033\nZW1i 9034\nYWN0aXY= 9035\nIHByaW0= 9036\ncmVkaWN0 9037\nIHJhZA== 9038\n5pWw 9039\nLkJhY2s= 9040\nIHNwcmVhZA== 9041\nIGNsb2Nr 9042\nIHZpcg== 9043\nZWRpdG9y 9044\nIGVmZm9ydHM= 9045\nIGJyYW5jaA== 9046\nIGluZHVzdA== 9047\nIG1vdG9y 9048\nIGFtYg== 9049\nIGRhdGV0aW1l 9050\nIHJlbmNvbnQ= 9051\nIENocmlzdGlhbg== 9052\nIEFtZXJpY2Fucw== 9053\nZnVsbA== 9054\nIGZtdA== 9055\nLm1haW4= 9056\nIGNhdXNlZA== 9057\nX3VwZGF0ZQ== 9058\nIENvbnRlbnQ= 9059\nQVRDSA== 9060\nIGJhdGg= 9061\nIEVhY2g= 9062\nIHJhZGlv 9063\nYWNobWVudA== 9064\ndXp6 9065\nU3VibWl0 9066\nIHJlc3RyaWN0 9067\nYWJpbg== 9068\nIExvYWQ= 9069\nIGV4dGVuc2lvbg== 9070\nIGVzc2F5 9071\nIGhhdA== 9072\nYXZpb3Vy 9073\ndG9CZQ== 9074\nIjpb 9075\nIG9mZmVyZWQ= 9076\nIHZpbGw= 9077\nKGRvdWJsZQ== 9078\nMTE5 9079\n5pel 9080\nYmM= 9081\nX2ZyZWU= 9082\nIE1pc3M= 9083\nIEJlcg== 9084\nIOg= 9085\nIExpa2U= 9086\nIGhlbHBlZA== 9087\nLmdldE5hbWU= 9088\nX0FM 9089\nIHNwaXJpdA== 9090\nIEFwYWNoZQ== 9091\nd3M= 9092\nIHRoZXJlZm9yZQ== 9093\nKHBhcmFtcw== 9094\nX2ltZw== 9095\nIHBlYWNl 9096\nIGluY29y 9097\nIEVYUEVDVA== 9098\nIG1pbm9y 9099\naXBlcw== 9100\nCWRhdGE= 9101\nc2VsZWN0b3I= 9102\nY2l0eQ== 9103\ndHJpZQ== 9104\nLmJhc2U= 9105\nX2ZyYW1l 9106\nIG9wZW5lZA== 9107\nL2pzb24= 9108\nTFk= 9109\nbnU= 9110\nLkRl 9111\ndGY= 9112\nbWFyZ2lu 9113\nLlBhcnNl 9114\nIHBp 9115\nIGVx 9116\nYmQ= 9117\nRmllbGRz 9118\nIFRyZWU= 9119\nIGJhbg== 9120\naXN0YW4= 9121\nCiAgICAgICAgCg== 9122\nCWds 9123\nIHByb2R1Y2Vk 9124\nc3lzdGVt 9125\nTWFyaw== 9126\nX2hhc2g= 9127\nIGJn 9128\nIGNvbnN0aXQ= 9129\nIExlYWd1ZQ== 9130\nIG1pc3Npb24= 9131\nX2Zvcm1hdA== 9132\nKFsK 9133\nY2x1c2lvbg== 9134\nISI= 9135\n0Lc= 9136\nYnJlYWs= 9137\nCXN3aXRjaA== 9138\nIHRoZXI= 9139\nVHJhbnNmb3Jt 9140\nIGZvb3RiYWxs 9141\nLWxpbms= 9142\ncm91dGU= 9143\nLmF1dGg= 9144\nIGJhZw== 9145\nb3ZlcnM= 9146\nIGVuYWJsZWQ= 9147\nIHJhYw== 9148\nKEk= 9149\nQ1I= 9150\nYW5jaW5n 9151\nIG1hbmFnZWQ= 9152\nX3E= 9153\nTkdUSA== 9154\nIG1hYw== 9155\nIEF1dG8= 9156\nYW1lbnRl 9157\nICcnLA== 9158\nLkFwcGVuZA== 9159\nIHBpbg== 9160\nLml0ZW0= 9161\nYWNraW5n 9162\nIG9jY2Fz 9163\ncGVyc29u 9164\nIHRp 9165\nLlJlZw== 9166\nIGhhdmVu 9167\nIGdsYXNz 9168\nICI8Lw== 9169\nIFNpbXBsZQ== 9170\nUHJpbnQ= 9171\nIHN1cnJvdW5k 9172\nTk8= 9173\n44CCCg== 9174\nICAgICAgICANCg== 9175\nIE1hbnk= 9176\nICJf 9177\nIHdlZWtlbmQ= 9178\nIHNvbWV3 9179\nLnBhcmFtcw== 9180\nc21hbGw= 9181\nQVRFRA== 9182\nIHBsdWdpbg== 9183\nZmllbGRz 9184\nIEluaXRpYWxpemU= 9185\nb29u 9186\nYXRpbGU= 9187\neWU= 9188\nIHZvdXM= 9189\nTEFH 9190\nIG9sZGVy 9191\nIGdhbQ== 9192\nIGV4dHJlbWVseQ== 9193\nIGhldA== 9194\nZW51bQ== 9195\nIFNFVA== 9196\neGZm 9197\nIHRpbWVy 9198\nL2luZGV4 9199\nIGNyaXRpY2Fs 9200\nUm93cw== 9201\nX2FyZ3VtZW50 9202\nIGV4ZWN1dGU= 9203\nIHNob3dpbmc= 9204\nLnhtbA== 9205\nLWxpc3Q= 9206\nUm9sZQ== 9207\ndHlwZW5hbWU= 9208\nX21ldGhvZA== 9209\ndGhhdA== 9210\nY2hlcg== 9211\nIOKG 9212\nWFQ= 9213\nIHRob3VzYW5kcw== 9214\nCW4= 9215\nIHJlc3A= 9216\nX3ByaWNl 9217\nb2x1dA== 9218\nQWc= 9219\nIFR3bw== 9220\nIGJlY29tZXM= 9221\nIGh1cw== 9222\nLlVzZQ== 9223\ndGhlbWU= 9224\ndXJi 9225\nIC8qCg== 9226\nZXJpYWxpemU= 9227\nQVJO 9228\nIGxvc2U= 9229\nTG93ZXI= 9230\nIHZlbA== 9231\nIGRlZmVuc2U= 9232\nY29uZGl0aW9u 9233\nIGJlcw== 9234\nIGRyeQ== 9235\nIHNjcm9sbA== 9236\nLlNob3c= 9237\nSUVM 9238\n0L7RgA== 9239\nIFJlc3Q= 9240\nV2hlcmU= 9241\nb29kcw== 9242\nIEplcw== 9243\nIHdpcmU= 9244\nX0lORk8= 9245\nIHN0cmluZ3M= 9246\nZ21lbnQ= 9247\nIG1hdGNoZXM= 9248\nIGVsZWN0cmlj 9249\nIGV4Y2VsbGVudA== 9250\nIENvdW5jaWw= 9251\naWRhZGU= 9252\nIHd4 9253\ncHVzaA== 9254\nX2VudHJ5 9255\nIHRhc2tz 9256\nIHJpY2g= 9257\nc2E= 9258\nIFNtaXRo 9259\nVU5DVElPTg== 9260\nUG9pbnRlcg== 9261\ncGVjdGl2ZQ== 9262\nMTMx 9263\nIHdpZGdldA== 9264\naXN0YQ== 9265\nIGFnZW5jeQ== 9266\nIHNpY2g= 9267\nb2xvZ2llcw== 9268\nIHRyaWFs 9269\nYWx5c2lz 9270\nLmNoZWNr 9271\nQVJL 9272\nIG9uQ2hhbmdl 9273\nYWJvdXQ= 9274\nJywk 9275\nKHZhbA== 9276\nIHBsYWNlZA== 9277\nX05P 9278\nIGRhbg== 9279\nLmVxdWFs 9280\nCSAgICAg 9281\nIHdlYXRoZXI= 9282\nLmdhbWU= 9283\nIGRlc3RpbmF0aW9u 9284\nX1VTRVI= 9285\naWVjZQ== 9286\nIHByb3ZpZGVy 9287\nLmxhc3Q= 9288\ncGxleA== 9289\nTm90ZQ== 9290\nL2pz 9291\nIHDDpQ== 9292\nIHBsYW5uaW5n 9293\nYXR0cmlidXRl 9294\nUFJP 9295\nYXRjaGVz 9296\nIDwt 9297\nIHNlZWluZw== 9298\nIGNhbmNlbA== 9299\nX2luZA== 9300\nLmtleXM= 9301\nIHZpc3VhbA== 9302\nIEN1cnJlbnQ= 9303\nIENvbGxlZ2U= 9304\nIFJvY2s= 9305\nIGFncmVlbWVudA== 9306\nIFN0b3Jl 9307\nb3Zpbmc= 9308\nIGNvcm5lcg== 9309\nYW1waW9ucw== 9310\nSVNF 9311\nRmlu 9312\nIHByb3RlY3Rpb24= 9313\nIGZp 9314\nUGxheQ== 9315\ncGx1Z2lu 9316\nKX0= 9317\nLmZyYW1l 9318\nLXo= 9319\nIHRyYW5zaXRpb24= 9320\naWdpbg== 9321\nIGNhbmRpZGF0ZQ== 9322\nIFVuaW9u 9323\nX3ZhbHVlcw== 9324\nKG1hcA== 9325\nY2xl 9326\nIHRyZW5k 9327\nd2lkZQ== 9328\nYXJlbg== 9329\nTG9j 9330\nVVRI 9331\nIEJheQ== 9332\nIHNtYWxsZXI= 9333\naXVz 9334\nMTQx 9335\nd2VsbA== 9336\nIGNyaW1pbmFs 9337\nIGNvbmZsaWM= 9338\nYmVydA== 9339\nX0lOVA== 9340\nIGludmVzdG1lbnQ= 9341\nY3VzdG9t 9342\nIFNlc3Npb24= 9343\nX3dyaXRl 9344\nYW5pYQ== 9345\nIE1hc3M= 9346\nX0VR 9347\nX05PVA== 9348\nIHZpb2xlbmNl 9349\nQXJndW1lbnQ= 9350\nX2VtYWls 9351\nIGJlbG9uZw== 9352\nX2Z1bmN0aW9u 9353\nIGVuZW15 9354\nZW1h 9355\nIEFkZHJlc3M= 9356\nLmVtcHR5 9357\nIGlubmVy 9358\nIENvbnRhY3Q= 9359\nTG9hZGVy 9360\nPGlucHV0 9361\nIENB 9362\nbG90 9363\nIHBpY3R1cmVz 9364\nIFN1cHBvcnQ= 9365\nX25hbWVz 9366\nMTg4 9367\nTGF5ZXI= 9368\nIENsaWNr 9369\nU3Vt 9370\nw6Y= 9371\nIExvb2s= 9372\ndW91cw== 9373\nTGli 9374\nRmxhZ3M= 9375\ndGVhbQ== 9376\nRVA= 9377\nMTg5 9378\naGF0 9379\nb3ZlcnJpZGU= 9380\nYXBzZWQ= 9381\nIGxhYmVscw== 9382\ncXVpcw== 9383\nIFN0cmVhbQ== 9384\nX2RldmljZQ== 9385\nIENvbW1pdA== 9386\nKHJvb3Q= 9387\nIn0= 9388\nLmlzRW1wdHk= 9389\nMTI2 9390\nCU0= 9391\nIGFuZ2xl 9392\nIEJlY2F1c2U= 9393\nJSUlJSUlJSU= 9394\nIGFpbQ== 9395\nIHN0aWNr 9396\nc3RtdA== 9397\nYWdyYXBo 9398\nYW5zd2Vy 9399\nIGNsaW4= 9400\nIElzbA== 9401\nLmV4dA== 9402\nIElOVA== 9403\nIHN0eWxlcw== 9404\nIGJvcm4= 9405\nIHNjcg== 9406\nIGV4cGFuZA== 9407\nIHJhaXNlZA== 9408\nVGV4dEJveA== 9409\nSUxM 9410\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 9411\nSFRUUA== 9412\nMTMy 9413\nPik= 9414\nX2NoYXI= 9415\ncmVzb3VyY2U= 9416\nIGVwaXNvZGU= 9417\nICdf 9418\nIEVz 9419\nIEVhcnRo 9420\nwqDCoA== 9421\nVVBEQVRF 9422\nMTMz 9423\nIFNvdQ== 9424\ndWlz 9425\ndHlwZXM= 9426\nIG1hcw== 9427\nIGZhdg== 9428\nIGNvbnN0cnVjdA== 9429\nX3JhdGU= 9430\nZXJhcw== 9431\nIHwK 9432\ncm9wZXJ0aWVz 9433\nIGV4dGVybmFs 9434\nIGFwcGxpZWQ= 9435\nIHByZWZpeA== 9436\nb3RlZA== 9437\nbGVycw== 9438\nIGNvbGQ= 9439\nIFNQ 9440\nIENodXJjaA== 9441\nIE91dHB1dA== 9442\nbG9zZWQ= 9443\n55o= 9444\naWZpY2F0ZQ== 9445\nb3BlcmF0aW9u 9446\naGVyaXQ= 9447\neEZG 9448\nLmVudg== 9449\nX2Vycg== 9450\nb3No 9451\nRGlyZWN0aW9u 9452\nQ2FuY2Vs 9453\nIEZyYW5r 9454\nIGZpbmRpbmc= 9455\nLikKCg== 9456\nIHJvdXRlcg== 9457\n44O7 9458\nc2Vz 9459\nIGNyb3c= 9460\nPT0n 9461\nIHNhbmQ= 9462\nIHJpZA== 9463\naXR1cmU= 9464\nIGVudHJl 9465\nIG9ic2Vydg== 9466\nIHZhYw== 9467\n8J8= 9468\nLVQ= 9469\nQXJ0 9470\nbmlnaHQ= 9471\nLnNlYXJjaA== 9472\nIGV4Y2hhbmdl 9473\nIGRpc3RyaWN0 9474\nLm9z 9475\nIGRlcGFydG1lbnQ= 9476\nIGRvY3VtZW50cw== 9477\nIGNlbnR1cnk= 9478\nIE5leHQ= 9479\nSG9zdA== 9480\nIEtJTkQ= 9481\nIHN1c3A= 9482\nLVA= 9483\ncmVuZA== 9484\nLmVt 9485\ndWl0ZQ== 9486\naXN0ZXJz 9487\nKGpzb24= 9488\nIEFubg== 9489\nd3Q= 9490\nYXRp 9491\nIEhUTUw= 9492\nd2hlbg== 9493\nRGlyZWN0b3J5 9494\nIHNodXQ= 9495\nPGE= 9496\nZWR5 9497\nIGhlYWx0aHk= 9498\nIHRlbXBlcmF0dXJl 9499\nIEdlbg== 9500\nIG1ldGFs 9501\nIHN1Ym1pdA== 9502\nIERP 9503\nIGF0dHJhY3Q= 9504\nIHt9Owo= 9505\nIFdvcmQ= 9506\nIGxs 9507\nIHNlZW1lZA== 9508\na28= 9509\nSUVE 9510\nIGxhYm9y 9511\nLkNvbnRleHQ= 9512\nIGFzc2V0 9513\neW91 9514\nIGNhcnM= 9515\nIENvbHVtbg== 9516\nIHLDqQ== 9517\nIHNxdWFyZQ== 9518\nIE5TU3RyaW5n 9519\n4oCdLA== 9520\nYXBlcw== 9521\nLi4uCg== 9522\nIHRoYW5rcw== 9523\nKHByb3Bz 9524\nIHRpY2s= 9525\nIGV4cGVyaW1lbnQ= 9526\nIHByaXNvbg== 9527\ndHJlZQ== 9528\nLXRleHQ= 9529\nIElPRXhjZXB0aW9u 9530\nLXdpZHRo 9531\nX1NUQVRVUw== 9532\nZmFzdA== 9533\nLWJvZHk= 9534\nLWhlYWRlcg== 9535\nIGd1YXI= 9536\nY3JldGU= 9537\nIFRpbQ== 9538\nIGNsZWFybHk= 9539\nIFJlcHVibGljYW4= 9540\nIGp1c3RpZnk= 9541\n0LjRgg== 9542\nCSAgICA= 9543\nY2FjaGU= 9544\nOy8v 9545\nIHByZXNlbmNl 9546\nIGZhY3RvcnM= 9547\nIGVtcGxveWVl 9548\nXSkp 9549\nTWVtYmVy 9550\nIHNlbGVjdG9y 9551\nYm9y 9552\nIE1leA== 9553\n55qE 9554\ndXRleA== 9555\nX3RhZw== 9556\nYWlsdXJl 9557\nIE5ldA== 9558\nIHJlbGk= 9559\nRUc= 9560\nIGZwcmludGY= 9561\nIHRlZW4= 9562\nbG9zcw== 9563\nIGxlYXZpbmc= 9564\nMTM0 9565\nRGVsZWdhdGU= 9566\nIGJlYXQ= 9567\nIG1pbnV0ZQ== 9568\nc3Vic2NyaWJl 9569\nIHJlZGlzdHJpYnV0ZQ== 9570\nQ29uc3RhbnRz 9571\nIGNhbmNlcg== 9572\nL3s= 9573\nQkw= 9574\nIHNwYW4= 9575\nIENoaWxk 9576\nQ2VudGVy 9577\nIGVhcnRo 9578\nWVM= 9579\nIExldmVs 9580\nIHNlYQ== 9581\nLnN1cHBvcnQ= 9582\nLmlubmVy 9583\nLkl0ZW0= 9584\naWxsaW5n 9585\nICAgIAogICAgCg== 9586\nIExhYmVs 9587\nMzIw 9588\nIEVzdA== 9589\nKGFyZw== 9590\nMTQ1 9591\nYm9Cb3g= 9592\nCWZvcmVhY2g= 9593\nY29z 9594\nRmFpbGVk 9595\nc3dlcnM= 9596\nRWRpdG9y 9597\ncm9udA== 9598\nIE1Q 9599\nZXhwcg== 9600\nIExpZmU= 9601\nID8/ 9602\nw7Zy 9603\nIGF0dGVuZA== 9604\nIFF1ZQ== 9605\nIHNwZWNpZXM= 9606\nLUQ= 9607\nIGF1cw== 9608\nU3RydWN0 9609\nIGFkdmFudGFnZQ== 9610\nb3N0b24= 9611\nLWJsb2Nr 9612\naW5pdGlhbA== 9613\nQ1JF 9614\nIHRydWx5 9615\nIGNvbXBhcmU= 9616\nb3JuZXk= 9617\nIHNwZWN0 9618\nRnVsbA== 9619\nYmVz 9620\nIHZpc2libGU= 9621\nIG1lc3M= 9622\nc3RhbmNlcw== 9623\nIGNsb3Vk 9624\nX3ZlcnNpb24= 9625\nIGZ1cm4= 9626\naWNhZ28= 9627\nTE9X 9628\nIHRyYWZmaWM= 9629\nIGZvbA== 9630\ncnlwdG8= 9631\nIGRlY2xhcg== 9632\nIHNsb3Q= 9633\nIEV4dA== 9634\nIEVuZ2xhbmQ= 9635\nIFVuZGVy 9636\nIHRh 9637\nbGV0dGVy 9638\nMjAz 9639\nIG9mZmljZXI= 9640\nIERvbmFsZA== 9641\nWWVz 9642\nX2pzb24= 9643\nSVRhYmxlVmlldw== 9644\nIFVTRQ== 9645\nbXBsb3llZQ== 9646\nIG9waW5pb24= 9647\nIEF1dA== 9648\nYm9yZGVy 9649\nIGFkdmljZQ== 9650\nIGF1dG9tYXRpY2FsbHk= 9651\naXNjbw== 9652\nIG1t 9653\nLnZpcw== 9654\nYW1s 9655\nIGluaXRpYWxpemU= 9656\nICh7 9657\nIDsKCg== 9658\nIGdlbmVyYXRpb24= 9659\nIGJpdHM= 9660\nY2xpcHNl 9661\nIHVuZg== 9662\ndXRvcnM= 9663\ncGx0 9664\nIGRlbHRh 9665\nZXN0cm95 9666\naXNpcw== 9667\nPGJy 9668\nIGxpbWl0YXRpb25z 9669\nIGVuZGVk 9670\nIE1hZA== 9671\naWxt 9672\nVGhlc2U= 9673\nMTg3 9674\nIE1pbmlzdGVy 9675\nIGNoYXJ0 9676\nRnJhZ21lbnQ= 9677\nIGluZGVwZW5kZW50 9678\nWWVhcg== 9679\nIGluc3Ry 9680\nIHRhZ3M= 9681\nQVZF 9682\nIEFyY2g= 9683\nc3RvcA== 9684\nUHJvZ3Jlc3M= 9685\nIG1p 9686\nIGxlYXJuZWQ= 9687\nR2U= 9688\nIGhvdGVs 9689\nMTUx 9690\nU00= 9691\nVFlQRQ== 9692\nIGN5 9693\nRVJTSU9O 9694\ndW5hdGVseQ== 9695\nbGltaXQ= 9696\nc2Vs 9697\nIG1vdmllcw== 9698\nIHN0ZWVs 9699\nb3o= 9700\nZ2I= 9701\nIENhbXA= 9702\nc2l0ZQ== 9703\nIExvZ2dlcg== 9704\nUExF 9705\n0L7QtA== 9706\nLnJpZ2h0 9707\nIENvcmU= 9708\nIG1peGVk 9709\nc3RlcA== 9710\nIHB1dHM= 9711\nc3VwZXI= 9712\nUm91dGVy 9713\nMTg2 9714\nLkh0dHA= 9715\nMjIy 9716\nbHlwaA== 9717\nIENvbG9ycw== 9718\nIGFuZHJvaWR4 9719\nLnN0cg== 9720\nIGlubm92 9721\nIGRlY2s= 9722\nJz4K 9723\nYXBlcnM= 9724\nXSg= 9725\nY29udGludWU= 9726\nc3BlYw== 9727\nIFJvYWQ= 9728\nQVNI 9729\naWxpYXI= 9730\nIGNvbnRpbnVlcw== 9731\nIGFwcG9pbnQ= 9732\nICMK 9733\nIFZpcg== 9734\nID8+Ig== 9735\nIGJpbg== 9736\nfSIs 9737\nZ29pbmc= 9738\nZWFjaA== 9739\nQkQ= 9740\nMTg1 9741\nIEFjY2Vzcw== 9742\nRG9j 9743\nIE1hbmFnZW1lbnQ= 9744\nQkVS 9745\nYXNrZXQ= 9746\nLmdldEluc3RhbmNl 9747\nMTI5 9748\nIGVzdGFibGlzaGVk 9749\nc29ja2V0 9750\nSU5T 9751\nCXZpcnR1YWw= 9752\nCXJlc3VsdA== 9753\nUkVBRA== 9754\nX2hlaWdodA== 9755\nMTUy 9756\nIEZvbnQ= 9757\nICgpOwo= 9758\nX2h0bWw= 9759\nIG5laWdoYm9y 9760\nbG9y 9761\nIGdhdGhlcg== 9762\nIH0pCgo= 9763\nIGlkZW50aXR5 9764\nIGZhYg== 9765\ncGFkZGluZw== 9766\nIFJvdXRl 9767\nRW51bWVyYWJsZQ== 9768\nw7Q= 9769\nIGZvcmNlZA== 9770\nL2pxdWVyeQ== 9771\nLgoKCgoKCg== 9772\ncmVzZW50cw== 9773\nX2xlZnQ= 9774\nLlBhcmFt 9775\nCXRocm93 9776\nIEhhbQ== 9777\nIGV2ZW50dWFsbHk= 9778\nYWNlcg== 9779\ncHVi 9780\nIHRyYQ== 9781\ndW5pcXVl 9782\nZGVs 9783\nIEZsb3JpZGE= 9784\nIENsZWFu 9785\neGE= 9786\nIMK3 9787\nIHZhbGlkYXRl 9788\nVmlzdWFs 9789\nRXhwcmVzc2lvbg== 9790\nX2Z1bmM= 9791\nbWVtYmVy 9792\nCWg= 9793\ndHJs 9794\nMTM2 9795\nCUc= 9796\nbmFwc2hvdA== 9797\nIFByb3BUeXBlcw== 9798\ndmlu 9799\nMTUz 9800\nXSkKCg== 9801\nb3ds 9802\naWZpZXM= 9803\nICQoJy4= 9804\nIENvbnRleHQ= 9805\nIFRvYXN0 9806\nLktleQ== 9807\nIG9mZmljZXJz 9808\nL24= 9809\nc24= 9810\ndW5kZWZpbmVk 9811\nLml0ZW1z 9812\ndXRvdw== 9813\nYW1hZ2U= 9814\nIGFjY291bnRz 9815\nb29raWU= 9816\nU2VjdGlvbg== 9817\naWNpYW5z 9818\nIGFkdmlz 9819\nKGlz 9820\nWzos 9821\nIEZyYW5jZQ== 9822\nRnVuYw== 9823\naWNpb3Vz 9824\nIHRvaw== 9825\nQ2hhbm5lbA== 9826\nIEFE 9827\nX05VTQ== 9828\nIHRpbWVvdXQ= 9829\nbGVtbWE= 9830\ncmVtZQ== 9831\ndWo= 9832\nLkFs 9833\ndWNsZWFy 9834\nKG9z 9835\nKCI8 9836\nWwo= 9837\nZmV0Y2g= 9838\nIGJhbA== 9839\nIGd1aWQ= 9840\nLWFsaWdu 9841\nIFdyaXRl 9842\nIE9uY2U= 9843\ndXRvd2lyZWQ= 9844\nT0RVTEU= 9845\nIHBpdGNo 9846\nQ0Y= 9847\nYnl0ZXM= 9848\nIENvbW1pc3Npb24= 9849\nIGluY3JlZA== 9850\nUEVS 9851\nX3Jlc3BvbnNl 9852\nIExvcw== 9853\ncGFyc2Vy 9854\nIGFzc3VtZQ== 9855\nLlJlcXVlc3Q= 9856\nIFRva2Vu 9857\nX3Bvc2l0aW9u 9858\nIG5vbQ== 9859\nLXRlcm0= 9860\nIHJlbWFpbmluZw== 9861\naW9zdHJlYW0= 9862\nIHBpZWNlcw== 9863\nYXB5 9864\nIExlc3M= 9865\ncmFuZ2U= 9866\ndW1ibg== 9867\ncHJpc2U= 9868\nX29wdGlvbg== 9869\nMjMw 9870\nSW1wbA== 9871\na3dhcmdz 9872\nIGJ1c2luZXNzZXM= 9873\nQWxlcnQ= 9874\nIHBhcnRpZXM= 9875\nIENvbnRhaW5lcg== 9876\nIFByaXZhdGU= 9877\nIFBsYW4= 9878\nIHJlZ2lzdGVyZWQ= 9879\nIGpvdXI= 9880\nYWNrZXI= 9881\n0LXQvdC4 9882\nLz4= 9883\nY2hhdA== 9884\nc2VjdA== 9885\nIGNyZWF0aW9u 9886\nb2x1dGVseQ== 9887\nIGluc3RhbnQ= 9888\nIGRlbGl2ZXJ5 9889\naWNrZW4= 9890\neWVz 9891\nMTYz 9892\nIEZyYW5j 9893\nYmxpbmc= 9894\nZW5kYQ== 9895\nWyg= 9896\nX3Jhbmdl 9897\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 9898\nIHNjaGVkdWxl 9899\nQ29ubg== 9900\nIHRoYW5r 9901\neGQ= 9902\nIGhvb2s= 9903\nIGRvY3VtZW50YXRpb24= 9904\nUGFyYW1ldGVycw== 9905\nSGVsbG8= 9906\ndnQ= 9907\nIGFydGljbGVz 9908\nIHdlc3Q= 9909\nZGVmaW5lZA== 9910\nLnNlbGVjdA== 9911\nb2tlbnM= 9912\nIFZBTA== 9913\nLmZpbGU= 9914\ncmVzZXQ= 9915\nIG15cw== 9916\nIE1B 9917\nXSks 9918\nIGNpdGllcw== 9919\ncmVsYXRlZA== 9920\n5Zs= 9921\nIGFwcGVhcmVk 9922\nIHdpZA== 9923\nLnBhbmVs 9924\nIElucw== 9925\nLmVudGl0eQ== 9926\nIGRlY3Jl 9927\nIExvdQ== 9928\nKHRpbWU= 9929\nIFRoYW5r 9930\nLmNyZWF0ZUVsZW1lbnQ= 9931\nIG1lbnRpb25lZA== 9932\nb3VuY2U= 9933\nIFRyeQ== 9934\nIFdhbGw= 9935\nL2ltYWdlcw== 9936\nIE1lbnU= 9937\nJw0K 9938\nIEVy 9939\nIGNyaXRpYw== 9940\nIFllYXI= 9941\nKHBhcmFt 9942\nIGZsbw== 9943\nTk4= 9944\nb290ZXI= 9945\nIF07Cg== 9946\nIEFmZg== 9947\nImdpdGh1Yg== 9948\ncm9vbXM= 9949\nIGh5cA== 9950\nZ2xvYmFs 9951\nIGF2ZWM= 9952\n5pyI 9953\nIGNvbXBsZXRpb24= 9954\nIGNvbmQ= 9955\nb255bW91cw== 9956\nKHRlbXA= 9957\nIHN0YXJz 9958\nIHJlbGV2YW50 9959\nIGNvdmVyZWQ= 9960\nIGVsaW0= 9961\nX3R5cGVz 9962\nKGJvb2w= 9963\nIHR1 9964\nX2V4aXN0cw== 9965\nIHNlY3VyZQ== 9966\nIHN0b3JlZA== 9967\nXS8= 9968\neEY= 9969\nIENvbnRyb2xsZXI= 9970\nIG1pZ3I= 9971\nTUk= 9972\nIERlbg== 9973\nIGFubnVhbA== 9974\nVUlM 9975\nLWFuZA== 9976\nIGNyaW1l 9977\nYmVs 9978\nIGtpdGNoZW4= 9979\nQGc= 9980\nX3Bo 9981\nb3VybmFtZW50 9982\nIFNvY2lhbA== 9983\nIFNwZWNpYWw= 9984\nbG9nZ2Vy 9985\nIHRhaWw= 9986\nIHVua25vd24= 9987\nZGVk 9988\nIGFwcHJlYw== 9989\nKGRi 9990\nY2Y= 9991\nMTU1 9992\nIGFzc2lnbg== 9993\nLW91dA== 9994\nIE1vbnQ= 9995\nZHA= 9996\nd2lkZ2V0 9997\nIHN0b25l 9998\nLXByaW1hcnk= 9999\nLmdyaWQ= 10000\nUmVzdWx0cw== 10001\nYXp6 10002\nIGRhdWdodGVy 10003\nIGN1cnI= 10004\nMTc1 10005\nIGxpbg== 10006\nIHNvdXRo 10007\nZm9ybXM= 10008\nIE9VVA== 10009\nbGV0dGU= 10010\nYWtz 10011\naWd1cmU= 10012\nIEVV 10013\ndmFyaWFibGU= 10014\nIGJyaWVm 10015\nIFNjb3R0 10016\nIGNvbmZlcmVuY2U= 10017\nYW5kYQ== 10018\nX2xvY2s= 10019\nb3JhbA== 10020\nIGVpbmU= 10021\nT1JT 10022\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== 10023\nZXNzbw== 10024\nIHJpcw== 10025\nIGdlbmRlcg== 10026\nZXN0aWM= 10027\nTGljZW5zZQ== 10028\nKG91dA== 10029\nIG1z 10030\nU2Vl 10031\nIHdpbGxpbmc= 10032\nYXpl 10033\nIHNwb3J0cw== 10034\nIHllcw== 10035\nbHU= 10036\nIHB1cnM= 10037\nL2phdmFzY3JpcHQ= 10038\nLXBybw== 10039\nbmF2YmFy 10040\nX3Byb2R1Y3Q= 10041\nL2Jvb3RzdHJhcA== 10042\nIGRyaXZpbmc= 10043\nIMQ= 10044\nIHByb3Bvcw== 10045\ndWx0aXA= 10046\ndXBsaWM= 10047\nLmVtYWls 10048\nIGFwcHJveA== 10049\nKGNs 10050\nIHdlYXI= 10051\nIHJlcGx5 10052\nYXNzZXQ= 10053\nIGljZQ== 10054\nIHR4 10055\na3I= 10056\nIEdlcm1hbnk= 10057\nIEdlb3JnZQ== 10058\nIGNi 10059\nCWVycg== 10060\nTW92ZQ== 10061\nIHBvbHk= 10062\ndm9pY2U= 10063\nfSI= 10064\nIGFuaW1hbA== 10065\nQXY= 10066\nIExvY2F0aW9u 10067\nIG5hdGl2ZQ== 10068\nXVsi 10069\nPGRvdWJsZQ== 10070\nIG1haXM= 10071\nLGludA== 10072\nIHByZXBhcg== 10073\nIGludGVydmFs 10074\ncGxlbWVudGF0aW9u 10075\nX0VSUg== 10076\nIGJ1Zw== 10077\nPiI= 10078\nc3RhdA== 10079\nIH0sDQo= 10080\nPHNwYW4= 10081\nIGZhaXRo 10082\nIHJvbQ== 10083\ncHJldg== 10084\nIEVsZWN0 10085\nRmluZA== 10086\nIGdvZA== 10087\nb3Rvcg== 10088\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 10089\nb3JpZ2luYWw= 10090\nQ3Bw 10091\nIFNlbmF0ZQ== 10092\nIHBvc2l0aW9ucw== 10093\nIHdlYXBvbnM= 10094\nIGNvZmY= 10095\nIHB1cnBvc2Vz 10096\ncG9s 10097\nIGltcHJlc3M= 10098\nIGFuaW1hbHM= 10099\nLkVudGl0eQ== 10100\nKG5w 10101\nIG11cmRlcg== 10102\nIGBg 10103\nZmxhZw== 10104\nIHNvbHV0aW9ucw== 10105\nIEFjdGl2ZQ== 10106\nIGJyaWdodA== 10107\nLmRhdGU= 10108\nIHNpdHU= 10109\n77yI 10110\nLklE 10111\nIHNpZQ== 10112\nKSwNCg== 10113\nYWt0 10114\nU3BhY2U= 10115\nLmRhdA== 10116\nLmluZGV4T2Y= 10117\naGFu 10118\nYXppbmU= 10119\nIFpl 10120\nIGNyYXNo 10121\nKC8= 10122\nPj0= 10123\n0LE= 10124\nMTM5 10125\naXZh 10126\nLkF1dG9TaXpl 10127\nIExhdA== 10128\nX2V4dA== 10129\nSW5pdGlhbGl6ZQ== 10130\nLnJlZ2lzdGVy 10131\nMTU2 10132\nT1BZ 10133\nIHJldmVyc2U= 10134\nX2Rpcw== 10135\nJ11b 10136\nIHByb21wdA== 10137\nb250bw== 10138\nIEpvdXJuYWw= 10139\ncm91dGVy 10140\nIG15c3FsaQ== 10141\nI2Vsc2U= 10142\nKSI= 10143\nLXhz 10144\nbGV0cw== 10145\ncGhhbg== 10146\nLkxF 10147\nMTM3 10148\nV2lsbA== 10149\nIGFmZm9yZA== 10150\nIHNraWxs 10151\nLXRvZ2dsZQ== 10152\nTkM= 10153\nQmluZA== 10154\nVFM= 10155\nSnVzdA== 10156\naXRlcmFs 10157\nWVA= 10158\nCXVuc2lnbmVk 10159\nIHdpbmQ= 10160\nMTQ5 10161\nKSk6Cg== 10162\nIHdhcm5pbmc= 10163\nIFdhdGVy 10164\nIGRyYWZ0 10165\nIGNt 10166\nIHNhbQ== 10167\nIGhvbGRpbmc= 10168\nemlw 10169\nIFNjaWVuY2U= 10170\nIHN1cHBvc2Vk 10171\nR2Vu 10172\nIGRpZXQ= 10173\nPGg= 10174\nIFBhc3M= 10175\ndmk= 10176\nIGh1c2JhbmQ= 10177\n77+977+9 10178\nbm90ZQ== 10179\nIEFib3V0 10180\nIEluc3RpdHV0ZQ== 10181\nIGNsaW1hdGU= 10182\nLkZvcm1hdA== 10183\nIG51dA== 10184\nZXN0ZWQ= 10185\nIGFwcGFyZW50 10186\nIGhvbGRz 10187\nZmk= 10188\nbmV3cw== 10189\nQ00= 10190\ndmlkZW8= 10191\nJzon 10192\nRElUSU9O 10193\ncGluZw== 10194\nIHNlbmlvcg== 10195\nd2E= 10196\nLS0+Cg== 10197\nX2RlZmF1bHQ= 10198\nIERhdGFiYXNl 10199\ncmVw 10200\nRVNT 10201\nbmVyZ3k= 10202\nLkZpbmQ= 10203\nX21hc2s= 10204\nIHJpc2U= 10205\nIGtlcm5lbA== 10206\nOjok 10207\nLlE= 10208\nIG9mZmVyaW5n 10209\nZGVjbA== 10210\nIENT 10211\nIGxpc3RlZA== 10212\nIG1vc3RseQ== 10213\nZW5nZXI= 10214\nIGJsb2Nrcw== 10215\nb2xv 10216\nIGdvdmVybmluZw== 10217\nXEY= 10218\nIGNvbmNlbnQ= 10219\nLmdldFRleHQ= 10220\nIG1i 10221\nIG9jY3VycmVk 10222\nIGNoYW5naW5n 10223\nU2NlbmU= 10224\nX0NPREU= 10225\nQmVo 10226\nIlRoZQ== 10227\nIHRpbGU= 10228\nIEFzc29jaWF0aW9u 10229\nCVA= 10230\nYWx0eQ== 10231\nX2Fk 10232\nb2RpZXM= 10233\naWF0ZWQ= 10234\nIHByZXBhcmVk 10235\ncG9zc2libGU= 10236\nIG1vcnQ= 10237\nVEVTVA== 10238\nMTQy 10239\nIGlnbm9yZQ== 10240\nIGNhbGM= 10241\nIHJz 10242\nIGFzc2VydEVxdWFscw== 10243\nIHN6 10244\nIFRISVM= 10245\nLiIK 10246\nIGNhbnZhcw== 10247\namF2YQ== 10248\nIGR1dA== 10249\nVkFMSUQ= 10250\nLnNxbA== 10251\nLmlucHV0 10252\nIGF1eA== 10253\nU3Vw 10254\nIGFydGlzdA== 10255\nVmVj 10256\nX1RJTUU= 10257\nLnN0cmluZ2lmeQ== 10258\nZXR3ZWVu 10259\nIENhdGVnb3J5 10260\nIFst 10261\nIERldkV4cHJlc3M= 10262\nIEp1bA== 10263\nIHJpbmc= 10264\nLmVk 10265\nWVk= 10266\nTGV0 10267\nVGV4dEZpZWxk 10268\nIGZsYXQ= 10269\nX3ByaW50 10270\nIE9USEVS 10271\nYWRpYW4= 10272\nIGNoZWNrZWQ= 10273\nZWxl 10274\nQWxpZ24= 10275\nc3RhbmRpbmc= 10276\nIFtdLA== 10277\nIGxhYg== 10278\ndWNreQ== 10279\nIENocmlzdG1hcw== 10280\nKGltYWdl 10281\nLm1vZHVsZQ== 10282\nIGxvdHM= 10283\nIHNsaWdodGx5 10284\nKGZpbmFs 10285\nZXJnZQ== 10286\n6L8= 10287\nMTQ3 10288\nIFBvbGljZQ== 10289\nMTQz 10290\nIFJpZ2h0 10291\nIGF3YXJk 10292\nIE9T 10293\nIHt9Cgo= 10294\nIHB0cg== 10295\nb3Zlcw== 10296\naWNhdGVk 10297\n0LXQvA== 10298\nIG1hbmFnZQ== 10299\nb2xpZGF5 10300\nQW1vdW50 10301\nb29sU3RyaXA= 10302\ndGJvZHk= 10303\nTmF2 10304\nd3JhcA== 10305\nQkI= 10306\nIHdhdGNoaW5n 10307\nYXJpb3M= 10308\nIG9wdGlvbmFs 10309\nX0s= 10310\nIExpY2Vuc2Vk 10311\nLk1hcA== 10312\nVGltZXI= 10313\nIEFQ 10314\nIFJldg== 10315\nKG8= 10316\nLGM= 10317\ndW1pbg== 10318\nZXRhaWxlZA== 10319\nIEh5 10320\nIGJsYW5r 10321\nYWdnZXI= 10322\nIFNlbGY= 10323\nKClb 10324\nLm1ha2U= 10325\nZWFybg== 10326\nY2hhbm5lbA== 10327\nPHByZQ== 10328\nYmxlbQ== 10329\nX3Bhc3N3b3Jk 10330\nX3Nw 10331\naWNpbmc= 10332\nZXo= 10333\nIHRoZW9yeQ== 10334\nIFRlcg== 10335\nMTg0 10336\nLG4= 10337\nbG9nbw== 10338\nIEhUVFA= 10339\nKCkpKQ== 10340\nLmhhbmRsZQ== 10341\nPjsK 10342\nV29ybGQ= 10343\nIHB5dGhvbg== 10344\nIGxpZg== 10345\nIHRyYXY= 10346\nIGNvbnZlbg== 10347\nY29tcGFueQ== 10348\nIENsdWI= 10349\nMTM4 10350\nVmVy 10351\nQnRu 10352\nIHpvbmU= 10353\ncHJvZHVjdHM= 10354\nIEVkdWM= 10355\nIHZlcmlmeQ== 10356\nIE1pbA== 10357\nb25v 10358\nXSk7Cgo= 10359\nRU5DRQ== 10360\nIHBhY2tldA== 10361\nIGNlcg== 10362\nIGVudW1lcg== 10363\nIHBhcnM= 10364\nZm9ybWVk 10365\nIG9jY3Vw 10366\ndHJl 10367\nIGV4ZXJjaXNl 10368\nRGF5 10369\nX3N1bQ== 10370\nIGFza2luZw== 10371\nYXB0aW9u 10372\nIG9yZGVycw== 10373\nIHNwZW5kaW5n 10374\nIEVSUg== 10375\nLkRpcw== 10376\nIFV0aWw= 10377\n4oCcSQ== 10378\nXCc= 10379\nPyk= 10380\nLz4K 10381\nIGVtb3Q= 10382\nIGluZmx1ZW5jZQ== 10383\nIEFmcmljYQ== 10384\nYXR0ZXJz 10385\n2YU= 10386\nLnNlc3Npb24= 10387\nIGNoaWVm 10388\nCQkJCQkJCQkJCQk= 10389\nIHRvbQ== 10390\nY2x1ZGVk 10391\nc2VyaWFs 10392\nX2hhbmRsZXI= 10393\nLlR5cGU= 10394\nYXBlZA== 10395\nIHBvbGljaWVz 10396\nLWV4 10397\nLXRy 10398\nYmxhbms= 10399\nbWVyY2U= 10400\nIGNvdmVyYWdl 10401\nIHJj 10402\nX21hdHJpeA== 10403\nX2JveA== 10404\nIGNoYXJnZXM= 10405\nIEJvc3Rvbg== 10406\nUGU= 10407\nIGNpcmN1bQ== 10408\nIGZpbGxlZA== 10409\nMTQ4 10410\nIG5vcnRo 10411\naWN0dXJlQm94 10412\nCXJlcw== 10413\n6K4= 10414\nIHRlcm1pbg== 10415\nIFvigKY= 10416\nSVJFQ1Q= 10417\nIGJlcg== 10418\nICIuLi8uLi8= 10419\ncmV0Y2g= 10420\nLmNvZGU= 10421\nX2NvbA== 10422\nIEdvdmVybm1lbnQ= 10423\nIGFyZ3Y= 10424\nIExvcmQ= 10425\nYXNp 10426\nRXhlYw== 10427\nCWxldA== 10428\ndmVydGlz 10429\nIGRpc2N1c3Npb24= 10430\nZW5hbmNl 10431\nb3V0dWJl 10432\ndHlwZW9m 10433\nIHNlcnZlZA== 10434\nIFB1dA== 10435\nCXg= 10436\nIHN3ZWV0 10437\nQmVmb3Jl 10438\nYXRlZ3k= 10439\nLm9m 10440\nIE1hdGVyaWFs 10441\nU29ydA== 10442\nT05U 10443\naWdpdGFs 10444\nV2h5 10445\nIHN1c3Q= 10446\nIOc= 10447\nYWJldA== 10448\nIHNlZ21lbnQ= 10449\nIFtdLAo= 10450\nIE11c2xpbQ== 10451\nIGZpbmRWaWV3QnlJZA== 10452\nY3V0 10453\nX1RFWFQ= 10454\nIE1hcnk= 10455\nIGxvdmVk 10456\nIGxpZQ== 10457\nIEpP 10458\nIGlzc2V0 10459\nbW9udGg= 10460\nIHByaW1l 10461\ndGk= 10462\nIENhcm9s 10463\nVXNl 10464\nMTQ2 10465\nIFBvcA== 10466\nIFNhdmU= 10467\nSW50ZXJ2YWw= 10468\nZXhlY3V0ZQ== 10469\nZHk= 10470\nIElyYW4= 10471\nX2NvbnQ= 10472\nCVQ= 10473\nIHBoYXNl 10474\nY2hlY2tib3g= 10475\nd2Vlaw== 10476\nIGhpZGU= 10477\nIHRpbA== 10478\nIGp1 10479\nQ3VzdG9t 10480\nYnVyZw== 10481\nL00= 10482\nVE9O 10483\nIHF1YW50 10484\nIHJ1Yg== 10485\naXhlbHM= 10486\nIGluc3RhbGxlZA== 10487\nIGR1bXA= 10488\nIHByb3Blcmx5 10489\nKExpc3Q= 10490\nIGRlY2lkZQ== 10491\nYXBwbHk= 10492\nSGFz 10493\nIGtlZXBpbmc= 10494\nIGNpdGl6ZW5z 10495\nIGpvaW50 10496\ncG9vbA== 10497\nU29ja2V0 10498\nX29w 10499\nIHdlYXBvbg== 10500\nZ25vcmU= 10501\nIEV4ZWM= 10502\nb3R0ZW4= 10503\nIE1T 10504\nICgt 10505\nIFJldmlldw== 10506\nIGV4YW1wbGVz 10507\nIHRpZ2h0 10508\nISg= 10509\nRFA= 10510\nIE1lc3NhZ2VCb3g= 10511\nIHBob3RvZ3JhcGg= 10512\nMTY0 10513\nVVJJ 10514\nw6l0 10515\nbG93 10516\nIEdyYW5k 10517\nLnBlcnNpc3RlbmNl 10518\nIG1haW50YWlu 10519\nIG51bXM= 10520\nIHppcA== 10521\naWFscw== 10522\nIEdldHM= 10523\ncGVn 10524\nIEJ1ZmZlcg== 10525\nfn5+fg== 10526\ncmFzdHJ1Y3R1cmU= 10527\nIFBM 10528\ndWVu 10529\nb2JieQ== 10530\nc2l6ZW9m 10531\nIHBpYw== 10532\nIHNlZWQ= 10533\nIGV4cGVyaWVuY2Vk 10534\nIG9kZA== 10535\nIGtpY2s= 10536\nIHByb2NlZHVyZQ== 10537\nYXZpZ2F0b3I= 10538\nLW9u 10539\nLGo= 10540\nIEFsdGhvdWdo 10541\nIHVzZXJJZA== 10542\nYWNjZXB0 10543\nQmx1ZQ== 10544\nSUNvbG9y 10545\nbGF5ZXI= 10546\nYXZhaWxhYmxl 10547\nIGVuZHM= 10548\nLnRhYmxl 10549\nIGRhdGFzZXQ= 10550\nYnVz 10551\nIGV4cGxhaW4= 10552\nKHBybw== 10553\nIENvbW1pdHRlZQ== 10554\nIG5vdGVk 10555\nXToK 10556\nRGlt 10557\nc3RkaW8= 10558\nMTU0 10559\nLiIsCg== 10560\nX3NvdXJjZQ== 10561\nMTgx 10562\nIFdlZWs= 10563\nIEVkZ2U= 10564\nIG9wZXJhdGluZw== 10565\nIGVzdGU= 10566\naXBs 10567\nMzMw 10568\nYWdpbmF0aW9u 10569\nIHByb2NlZWQ= 10570\nIGFuaW1hdGlvbg== 10571\nLk1vZGVscw== 10572\nIFdhdGNo 10573\naWF0 10574\nIG9wcG9u 10575\nL0E= 10576\nUmVwb3J0 10577\nIHNvdW5kcw== 10578\nX2J1Zg== 10579\nSUVMRA== 10580\nIGJ1bmQ= 10581\nCWdldA== 10582\nLnBy 10583\nKHRtcA== 10584\nIGtpZA== 10585\nPgoKCg== 10586\nIHlhbmc= 10587\nTm90Rm91bmQ= 10588\n0YY= 10589\nbWF0aA== 10590\nQGdtYWls 10591\nIExJTUlU 10592\ncmVkaWVudHM= 10593\nIHZlbnQ= 10594\nYXZpZ2F0ZQ== 10595\nTG9vaw== 10596\nIHJlbGlnaW91cw== 10597\nIHJhbmQ= 10598\ncmlv 10599\nKEdM 10600\nX2lw 10601\ndWFu 10602\naWNpZW5jeQ== 10603\nIENoYW5nZQ== 10604\nPg0KDQo= 10605\nIEVudGl0eQ== 10606\nIHJlbmNvbnRyZQ== 10607\nIFJldA== 10608\ncGxhbg== 10609\nw6lu 10610\nQk9PTA== 10611\ndXJpZXM= 10612\ndHJhaW4= 10613\nRGVmaW5pdGlvbg== 10614\nPT09PT09PT09PT09 10615\neno= 10616\nNDUw 10617\nQW5pbWF0aW9u 10618\nIE9L 10619\nX21lbnU= 10620\nLmJs 10621\nX3Njb3Jl 10622\nIGFjYWQ= 10623\nKFN5c3RlbQ== 10624\nIHJlZnJlc2g= 10625\nJz0+JA== 10626\nLkdyYXBoaWNz 10627\nYW1lbnRv 10628\ncGlk 10629\ndGM= 10630\nIHRpcHM= 10631\nIGhvbWVz 10632\nIGZ1ZWw= 10633\n4pY= 10634\nX2hlbHBlcg== 10635\nICANCg== 10636\nIFJvb20= 10637\nLkNsb3Nl 10638\nX2F0dHI= 10639\nIE1vdW50 10640\nIEV2 10641\nYXJzZXI= 10642\nX3RvcA== 10643\nZWFo 10644\nIERlbGV0ZQ== 10645\n44CN 10646\ndWtl 10647\nIHVzYWdl 10648\nYXJpYQ== 10649\nX2Rldg== 10650\nIHRleHR1cmU= 10651\nIGNvbnZlcnNhdGlvbg== 10652\nZXBlcg== 10653\nQmVhbg== 10654\nZG9uZQ== 10655\nbm9uYXRvbWlj 10656\nIFNlY29uZA== 10657\nIHNob290aW5n 10658\nX3ByZQ== 10659\nQ29tcG9uZW50cw== 10660\nIF0KCg== 10661\nX18s 10662\nc3RpdHV0aW9u 10663\nLkNoYXI= 10664\nPigpOwoK 10665\nIHByZXNlbnRlZA== 10666\nIHdh 10667\nb2tlcg== 10668\nLQoK 10669\naW5lcg== 10670\nIGJlY29taW5n 10671\nIGluY2lkZW50 10672\nQXR0 10673\nMTYy 10674\nIHJldmVhbGVk 10675\nZm9yYw== 10676\nIGJvb3Q= 10677\nLnBhZ2U= 10678\nRW51bWVyYXRvcg== 10679\nMTY1 10680\nXy0+ 10681\nUGhvdG8= 10682\nIHNwcmluZw== 10683\nLiIs 10684\nIERpY3Rpb25hcnk= 10685\nQkpFQ1Q= 10686\nIGxvY2F0aW9ucw== 10687\nIHNhbXBsZXM= 10688\nSW5wdXRTdHJlYW0= 10689\nIEJyb3du 10690\nIHN0YXRz 10691\ncXVhbGl0eQ== 10692\n0YU= 10693\nLWRpcw== 10694\nIGhlbHBpbmc= 10695\nIHBlZA== 10696\nMjI0 10697\nKHNl 10698\nIFdobw== 10699\nYWxpYW4= 10700\naW50ZXJuYWw= 10701\nIGZ0 10702\nPigpLg== 10703\nLT57 10704\nIG1pbmU= 10705\nIHNlY3Rvcg== 10706\nIGdybw== 10707\nIG9wcG9ydHVuaXRpZXM= 10708\nIMO8 10709\nIG1w 10710\nIGFsbGVnZWQ= 10711\nIGRvdWJ0 10712\nTW91c2U= 10713\nQWJvdXQ= 10714\nX3BhcnQ= 10715\nIGNoYWly 10716\nIHN0b3BwZWQ= 10717\nMTYx 10718\nbG9vcA== 10719\nZW50aXRpZXM= 10720\nIGFwcHM= 10721\nYW5zaW9u 10722\nIG1lbnRhbA== 10723\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 10724\nRlI= 10725\nIGRlZmVuZA== 10726\nY2FyZQ== 10727\nIGlkZWFs 10728\nL2FwaQ== 10729\ndXJmYWNl 10730\nMDEx 10731\nIGVsZQ== 10732\ndWxhdG9y 10733\nIFJpZ2h0cw== 10734\nYW5ndWFnZXM= 10735\nIGZ1bmRz 10736\nIGFkYXB0 10737\nQXR0cmlidXRlcw== 10738\nIGRlcGxveQ== 10739\nb3B0cw== 10740\nIHZhbGlkYXRpb24= 10741\nIGNvbmNlcm5z 10742\ndWNl 10743\nLm51bQ== 10744\ndWx0dXJl 10745\naWxh 10746\nIGN1cA== 10747\nIHB1cmU= 10748\nLkZvcmU= 10749\nMTgz 10750\nIEhhc2hNYXA= 10751\nLnZhbHVlT2Y= 10752\nYXNt 10753\nTU8= 10754\nIGNz 10755\nIHN0b3Jlcw== 10756\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 10757\nIGNvbW11bmljYXRpb24= 10758\nbWVt 10759\nLkV2ZW50SGFuZGxlcg== 10760\nLlN0YXR1cw== 10761\nX3JpZ2h0 10762\nLnNldE9u 10763\nU2hlZXQ= 10764\nIGlkZW50aWZ5 10765\nZW5lcmF0ZWQ= 10766\nb3JkZXJlZA== 10767\nICJb 10768\nIHN3ZQ== 10769\nQ29uZGl0aW9u 10770\nIEFjY29yZGluZw== 10771\nIHByZXBhcmU= 10772\nIHJvYg== 10773\nUG9vbA== 10774\nIHNwb3J0 10775\ncnY= 10776\nIFJvdXRlcg== 10777\nIGFsdGVybmF0aXZl 10778\nKFtd 10779\nIENoaWNhZ28= 10780\naXBoZXI= 10781\naXNjaGU= 10782\nIERpcmVjdG9y 10783\na2w= 10784\nIFdpbA== 10785\na2V5cw== 10786\nIG15c3Fs 10787\nIHdlbGNvbWU= 10788\na2luZw== 10789\nIE1hbmFnZXI= 10790\nIGNhdWdodA== 10791\nKX0K 10792\nU2NvcmU= 10793\nX1BS 10794\nIHN1cnZleQ== 10795\naGFi 10796\nSGVhZGVycw== 10797\nQURFUg== 10798\nIGRlY29y 10799\nIHR1cm5z 10800\nIHJhZGl1cw== 10801\nZXJydXB0 10802\nQ29y 10803\nIG1lbA== 10804\nIGludHI= 10805\nKHE= 10806\nIEFD 10807\nYW1vcw== 10808\nTUFY 10809\nIEdyaWQ= 10810\nIEplc3Vz 10811\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 10812\nLkRF 10813\nIHRz 10814\nIGxpbmtlZA== 10815\nZnJlZQ== 10816\nIFF0 10817\nIC8qKg0K 10818\nIGZhc3Rlcg== 10819\nY3Ry 10820\nX0o= 10821\nRFQ= 10822\nLkNoZWNr 10823\nIGNvbWJpbmF0aW9u 10824\nIGludGVuZGVk 10825\nLXRoZQ== 10826\nLXR5cGU= 10827\nMTgy 10828\nZWN0b3Jz 10829\nYW1p 10830\ndXRpbmc= 10831\nIHVtYQ== 10832\nWE1M 10833\nVUNU 10834\nQXA= 10835\nIFJhbmRvbQ== 10836\nIHJhbg== 10837\nLnNvcnQ= 10838\nIHNvcnRlZA== 10839\nLlVu 10840\nNDAx 10841\nX1BFUg== 10842\naXRvcnk= 10843\nIHByaW9yaXR5 10844\nIEdhbA== 10845\nIE9sZA== 10846\naG90 10847\nIERpc3BsYXk= 10848\nKHN1Yg== 10849\nX1RI 10850\nX1k= 10851\nIENhcmU= 10852\nbG9hZGluZw== 10853\nS2luZA== 10854\nX2hhbmRsZQ== 10855\nLCw= 10856\ncmFzZQ== 10857\nX3JlcGxhY2U= 10858\nLmFkZEV2ZW50TGlzdGVuZXI= 10859\nIFJU 10860\nMTcy 10861\nIGVudGVyZWQ= 10862\nZ2Vycw== 10863\nIGljaA== 10864\nKHN0YXJ0 10865\nMjA1 10866\nL2FwcA== 10867\nIGJyb3RoZXI= 10868\nTWVtb3J5 10869\nT3V0bGV0 10870\nIHV0Zg== 10871\ncHJlYw== 10872\nIG5hdmlnYXRpb24= 10873\nT1JL 10874\nIGRzdA== 10875\nRGV0YWls 10876\nIGF1ZGllbmNl 10877\nIGR1cg== 10878\nIGNsdXN0ZXI= 10879\ndW5jaGVk 10880\nIF0s 10881\nIGNvbWZvcnRhYmxl 10882\nLnZhbHVlcw== 10883\nIFRvdGFs 10884\nIHNuYXA= 10885\nIHN0YW5kYXJkcw== 10886\nIHBlcmZvcm1lZA== 10887\naGFuZA== 10888\nKCJA 10889\n5a0= 10890\nIHBoaWw= 10891\naWJy 10892\ndHJpbQ== 10893\nIGZvcmdldA== 10894\nMTU3 10895\nIGRvY3Rvcg== 10896\nLlRleHRCb3g= 10897\nMzc3 10898\naWNvbnM= 10899\nLHM= 10900\nIE9w 10901\nU20= 10902\nU3RvcA== 10903\nCUxpc3Q= 10904\nCXU= 10905\nQ29tbWVudA== 10906\nX1ZFUlNJT04= 10907\nLlh0cmE= 10908\nUGVyc29u 10909\ncmI= 10910\nTE9C 10911\nICAgICAgICAgICAgICAgICAgICAK 10912\nIENlbnRyYWw= 10913\nMjcw 10914\nSUNL 10915\ncmFx 10916\nIHB1dHRpbmc= 10917\nIG1k 10918\nIExvdmU= 10919\nUHJvZ3JhbQ== 10920\nQm9yZGVy 10921\nb29y 10922\nIGFsbG93aW5n 10923\nYWZ0ZXI= 10924\nIGVudHJpZXM= 10925\nIE1heWJl 10926\nXSku 10927\nIFNob3J0 10928\nKVw= 10929\nLm5vdw== 10930\nZnJpZW5k 10931\nIHByZWZlcg== 10932\nIEdQSU8= 10933\nb3Npcw== 10934\nIEdhbWVPYmplY3Q= 10935\nIHNraXA= 10936\nIGNvbXBldGl0aW9u 10937\nX21hdGNo 10938\nbGljYXRpb25z 10939\nX0NPTlQ= 10940\nLmdyb3VwQm94 10941\nIGFscw== 10942\nNjY2 10943\nIldl 10944\nX2Vx 10945\nbGFu 10946\nX3NlYXJjaA== 10947\nIE11c2lj 10948\nYXNpcw== 10949\nIGJpbmQ= 10950\nIElzbGFuZA== 10951\ncnVt 10952\nKEU= 10953\nIHNlYXQ= 10954\nVmlkZW8= 10955\nIGFjaw== 10956\ncmVlaw== 10957\nPXsoKQ== 10958\nIHJhdGluZw== 10959\nIHJlc3RhdXJhbnQ= 10960\nNDU2 10961\nREVY 10962\nKGJ1Zg== 10963\ncHBpbmc= 10964\ndWFsaXR5 10965\nIGxlYWd1ZQ== 10966\nMTc2 10967\nIGZvY3VzZWQ= 10968\nYXBvbg== 10969\nJGRhdGE= 10970\nQ0xVRA== 10971\nQ0xVRElORw== 10972\nIGFic29sdXRl 10973\nKHF1ZXJ5 10974\nIHRlbGxz 10975\nQW5n 10976\nIGNvbW11bml0aWVz 10977\nIGhvbmVzdA== 10978\nb2tpbmc= 10979\nIGFwYXJ0 10980\nYXJpdHk= 10981\nLyQ= 10982\nX21vZHVsZQ== 10983\nIEVuYw== 10984\nLmFu 10985\nLkNvbmZpZw== 10986\nQ3Jl 10987\nIHNob2Nr 10988\nIEFyYWI= 10989\nSUVOVA== 10990\nL3Jl 10991\nIHJldHJpZQ== 10992\neWNsZXI= 10993\naXNh 10994\nIE9yZ2Fu 10995\nLmdyYXBo 10996\nIO0= 10997\nIEJBUw== 10998\nRW51bQ== 10999\nIHBvc3NpYmx5 11000\n0YDQsNA= 11001\nIEphcGFuZXNl 11002\nIGNyYWZ0 11003\nIFBsYWNl 11004\nIHRhbGVudA== 11005\nIGZ1bmRpbmc= 11006\nIGNvbmZpcm1lZA== 11007\nIGN5Y2xl 11008\nL3g= 11009\nR0U= 11010\nIGhlYXJpbmc= 11011\nIHBsYW50cw== 11012\nIG1vdXRo 11013\ncGFnZXM= 11014\nb3JpYQ== 11015\nIFJlbW92ZQ== 11016\nX3RvdGFs 11017\nIG9k 11018\nb2xsYXBzZQ== 11019\nZG9vcg== 11020\nIGJvdWdodA== 11021\nIGFkZHI= 11022\nQVJDSA== 11023\nX2RpbQ== 11024\nZGRlbg== 11025\nIGRlY2FkZXM= 11026\nUkVRVUVTVA== 11027\nIHZlcnNpb25z 11028\nZmlyZQ== 11029\nMDA2 11030\nIG1vdmVz 11031\nZmI= 11032\nIGNvZmZlZQ== 11033\nLmNvbm5lY3Q= 11034\nIFJvdw== 11035\nIHNjaGVtYQ== 11036\nU2NvcGU= 11037\nLVR5cGU= 11038\nIGZpZ2h0aW5n 11039\nIHJldGFpbA== 11040\nIG1vZGlmaWVk 11041\nVEY= 11042\nRmlsZXM= 11043\nbmll 11044\nX2NvbW1hbmQ= 11045\nc3RvbmU= 11046\nINGC 11047\nX3RocmVhZA== 11048\nIGJvbmQ= 11049\nIERldmVsb3BtZW50 11050\nIHB0 11051\nRk9STQ== 11052\ncGxldA== 11053\nIGlkZW50aWZpZWQ= 11054\nY3Bw 11055\nMjA2 11056\nMjI1 11057\nIGNvZGluZw== 11058\nb2tlZA== 11059\nIE1hc3Rlcg== 11060\nSURUSA== 11061\nIHJlc2lkZW50cw== 11062\ncmVkaXQ= 11063\nIFBob3Rv 11064\nPS0= 11065\ndW50ZQ== 11066\nYXRldXI= 11067\nMTU5 11068\nX1NUQVRF 11069\nIFNpbmc= 11070\nIHNoZWV0 11071\nLnZhbA== 11072\nb3JzZQ== 11073\nIGhlcnM= 11074\nIGRldGVybWluZWQ= 11075\nQ29tbW9u 11076\nIHdlZA== 11077\nX3F1ZXVl 11078\nUEg= 11079\nIEF0bA== 11080\nY3JlZA== 11081\nL0xJQ0VOU0U= 11082\nIG1lcw== 11083\nIGFkdmFuY2Vk 11084\nLmphdmE= 11085\nLlNo 11086\nR28= 11087\na2lsbA== 11088\nZnA= 11089\nX3NldHRpbmdz 11090\nIHBhbA== 11091\nIHRydWNr 11092\nIGNvbWJpbmVk 11093\nICIkew== 11094\nIENvcnBvcg== 11095\nIGpvaW5lZA== 11096\nIEpvc2U= 11097\nIEN1cA== 11098\ndW5z 11099\nZXN0aXZhbA== 11100\nbGV2aXNpb24= 11101\nIGJyb2tlbg== 11102\nIG1hcnJpYWdl 11103\nIFdlc3Rlcm4= 11104\nIHJlcHJlc2VudHM= 11105\nIFRpdGxl 11106\nIHNz 11107\nLkFzcw== 11108\nb25nb29zZQ== 11109\naWVudG8= 11110\nPD4oKTsK 11111\nIGFic29sdXRlbHk= 11112\nIHNtb290aA== 11113\nVEVSTg== 11114\nIFVubGVzcw== 11115\nV29yZA== 11116\nIG1lcmdl 11117\naWdhbg== 11118\nIFZvbA== 11119\nIG5u 11120\nLmdldElk 11121\nINC3 11122\nMTcx 11123\nIHNleHk= 11124\nIHNlZWtpbmc= 11125\nU2luZ2xl 11126\nLnRoaXM= 11127\nMTc5 11128\nIGtvbQ== 11129\nYm91bmQ= 11130\nOyI= 11131\nIGZvbnRTaXpl 11132\nX2Rm 11133\nIGluanVyeQ== 11134\nKEg= 11135\nIGlzc3VlZA== 11136\nX0VORA== 11137\nOnNlbGY= 11138\nMDIw 11139\nIHBhdGNo 11140\nIGxlYXZlcw== 11141\nIGFkb3B0 11142\nRmlsZU5hbWU= 11143\n44CQ 11144\nIGV4ZWN1dGl2ZQ== 11145\nIEJ5dGU= 11146\nXSkpCg== 11147\nIG51 11148\nb3V0aW5n 11149\nY2x1ZGluZw== 11150\nLVI= 11151\nLm9wdGlvbnM= 11152\nIHN1YnN0YW50 11153\nYXZheA== 11154\nIEJVVA== 11155\nIHRlY2huaWNhbA== 11156\nIHR3aWNl 11157\nIG3DoXM= 11158\nIHVuaXZlcnM= 11159\neXI= 11160\nIGRyYWc= 11161\nIERD 11162\nIHNlZA== 11163\nIGJvdA== 11164\nIFBhbA== 11165\nIEhhbGw= 11166\nZm9yY2VtZW50 11167\nIGF1Y2g= 11168\nLm1vZA== 11169\nbm90YXRpb24= 11170\nX2ZpbGVz 11171\nLmxpbmU= 11172\nX2ZsYWc= 11173\nW25hbWU= 11174\nIHJlc29sdXRpb24= 11175\nIGJvdHQ= 11176\nKCJb 11177\nZW5kZQ== 11178\nKGFycg== 11179\nRnJlZQ== 11180\nKEAi 11181\nIERpc3RyaWN0 11182\nUEVD 11183\nOi0= 11184\nUGlja2Vy 11185\nIEpv 11186\nICAgICAK 11187\nIFJpdmVy 11188\nX3Jvd3M= 11189\nIGhlbHBmdWw= 11190\nIG1hc3NpdmU= 11191\nLS0tCg== 11192\nIG1lYXN1cmVz 11193\nMDA3 11194\nIFJ1bnRpbWU= 11195\nIHdvcnJ5 11196\nIFNwZWM= 11197\nCUQ= 11198\n44CR 11199\nICl7Cg== 11200\nIHdvcnNl 11201\nKGZpbGVuYW1l 11202\nIGxheQ== 11203\nIG1hZ2lj 11204\nIFRoZWly 11205\nb3Vs 11206\nc3Ryb3k= 11207\nIFdoZXJl 11208\nMjgw 11209\nIHN1ZGRlbg== 11210\nIGRlZmU= 11211\nIGJpbmRpbmc= 11212\nIGZsaWdodA== 11213\nIE9uSW5pdA== 11214\nIFdvbWVu 11215\nIFBvbGljeQ== 11216\nIGRydWdz 11217\naXNoaW5n 11218\nKCcuLi8= 11219\nIE1lbA== 11220\ncGVhdA== 11221\ndG9y 11222\nIHByb3Bvc2Vk 11223\nIHN0YXRlZA== 11224\nX1JFUw== 11225\nIGVhc3Q= 11226\nMjEy 11227\nIENPTkRJVElPTg== 11228\nX2Rlc2M= 11229\nIHdpbm5pbmc= 11230\nZm9saW8= 11231\nTWFwcGVy 11232\nIFBhbg== 11233\nIEFuZ2U= 11234\nLnNlcnZsZXQ= 11235\nIGNvcGllcw== 11236\nTE0= 11237\nIHZt 11238\n5Y0= 11239\nIGRpY3Rpb25hcnk= 11240\nU2Vn 11241\nMTc3 11242\nZWxpbmVz 11243\nIFNlbmQ= 11244\nIGlyb24= 11245\nIEZvcnQ= 11246\nMTY2 11247\nLmRvbWFpbg== 11248\nIGRlYmF0ZQ== 11249\nTm90TnVsbA== 11250\nZXE= 11251\nYWNoZXI= 11252\nbGY= 11253\nCWZtdA== 11254\nIGxhd3k= 11255\nMTc4 11256\nxJ8= 11257\nIE1lbg== 11258\nIHRyaW0= 11259\nKE5VTEw= 11260\nICEh 11261\nIHBhZA== 11262\nIGZvbGxvd3M= 11263\nIl1bIg== 11264\ncmVxdQ== 11265\nIEVw 11266\nLmdpdGh1Yg== 11267\nKGltZw== 11268\nZXRv 11269\nKCdc 11270\nU2VydmljZXM= 11271\ndW1ibmFpbA== 11272\nX21haW4= 11273\ncGxldGVk 11274\nZm9ydHVuYXRlbHk= 11275\nIHdpbmRvd3M= 11276\nIHBsYW5l 11277\nIENvbm5lY3Rpb24= 11278\nLmxvY2Fs 11279\ndWFyZA== 11280\nfVw= 11281\nPT0i 11282\nYW5kb24= 11283\nIFJveQ== 11284\nd2VzdA== 11285\nMTU4 11286\naWdpbmFs 11287\nZW1pZXM= 11288\naXR6 11289\nJyk6Cg== 11290\nIFBldGVy 11291\nIHRvdWdo 11292\nIHJlZHVjZWQ= 11293\nIGNhbGN1bGF0ZQ== 11294\nIHJhcGlk 11295\nY3VzdG9tZXI= 11296\nIGVmZmljaWVudA== 11297\nIG1lZGl1bQ== 11298\nIGZlbGw= 11299\nLnJlZg== 11300\nIENhcw== 11301\nIGZlZWRiYWNr 11302\nU3BlZWQ= 11303\nKG91dHB1dA== 11304\nYWpl 11305\nIGNhdGVnb3JpZXM= 11306\nIGZlZQ== 11307\nfTs= 11308\nIGRlbGV0ZWQ= 11309\ncmVo 11310\nIHByb29m 11311\nRGVzYw== 11312\nQnVpbGQ= 11313\nIHNpZGVz 11314\nLkFycmF5TGlzdA== 11315\nLSU= 11316\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 11317\n2LE= 11318\nLm1hdGNo 11319\n0LvQuA== 11320\nIGZlZWxz 11321\nIGFjaGlldmU= 11322\nIGNsaW0= 11323\nX09O 11324\nIENE 11325\nIHRlYWNoZXI= 11326\nX2N1cnJlbnQ= 11327\nYm4= 11328\nX1BM 11329\naXN0aW5n 11330\nRW5hYmxl 11331\nR0VO 11332\nIHR2 11333\nIHNvY2s= 11334\nIHBsYXlz 11335\nIGRpc2NvdW50 11336\nIEtF 11337\nIERlYnVn 11338\nRm9yZQ== 11339\nIElyYXE= 11340\nIGFwcGVhcmFuY2U= 11341\nTW9u 11342\nIHN0eWxlZA== 11343\nIEh1bWFu 11344\naW90 11345\nIEhpc3Rvcnk= 11346\nIHNhYw== 11347\nIENvbGxlY3Rpb24= 11348\nIHJlY29tbWVuZGVk 11349\nLlNlbGVjdGVk 11350\nIG9yZ2FuaXphdGlvbnM= 11351\nIGRpc2NvdmVyZWQ= 11352\nY29ob2w= 11353\nYWRhcw== 11354\nIFRob21hcw== 11355\nTWF5 11356\nIGNvbnNlcnY= 11357\nIGRvbWlu 11358\nIEZvbGxvdw== 11359\nIFNlY3Rpb24= 11360\nIFRoYW5rcw== 11361\nVXNlcm5hbWU= 11362\nIHJlY2lwZQ== 11363\nIHdvbmRlcmZ1bA== 11364\nLnNsZWVw 11365\nX2lm 11366\nCQoJCg== 11367\nb3Jubw== 11368\nIHJ1 11369\nX3RhcmdldA== 11370\nLiIi 11371\n4KY= 11372\nRXZlbnRBcmdz 11373\nIGlucHV0cw== 11374\nIGZpZg== 11375\nIHZpc2lvbg== 11376\nY3k= 11377\nIFNlcmllcw== 11378\nKSgoKA== 11379\nIHRyYWRpbmc= 11380\nIG1hcmtlcg== 11381\nQmVnaW4= 11382\nIHR5cGljYWxseQ== 11383\nIGNhdXNlcw== 11384\nZHJvcGRvd24= 11385\nX0RFQlVH 11386\nMjYw 11387\nIGRldGVjdA== 11388\nY291bnRyeQ== 11389\nISIpOwo= 11390\nCVI= 11391\nYXBweQ== 11392\nIGNyZWY= 11393\nKCc8 11394\nIj0+ 11395\nIExF 11396\ncmVhZGVy 11397\nIGFkbWluaXN0cg== 11398\nw7U= 11399\ndWNrZXQ= 11400\nIGZhc2hpb24= 11401\nLmNoYXI= 11402\naXphcg== 11403\nIGRpc2FibGU= 11404\nIHN1Yw== 11405\nIExpdmU= 11406\naXNzdWU= 11407\nIG1ldGFkYXRh 11408\nZmxhZ3M= 11409\nIPCf 11410\nIGNvbW1pdHRlZA== 11411\nIHZh 11412\nIHJvdWdo 11413\nICcnJwo= 11414\nIGhpZ2hsaWdodA== 11415\nX3ZhcnM= 11416\nVk8= 11417\nIGVuY29kaW5n 11418\nLVo= 11419\nX3NpZ24= 11420\nJCgiIw== 11421\nIHJhaW4= 11422\ncmVhdGVzdA== 11423\nIEVORA== 11424\nU2VsZWN0aW9u 11425\nIGNhbmRpZGF0ZXM= 11426\nIHNhdg== 11427\nLkVtcHR5 11428\nIGRlY2lzaW9ucw== 11429\nIGNvbGxhYm9y 11430\ncmlkZ2U= 11431\nZmVlZA== 11432\ncmVzc2lvbg== 11433\nIHBlcnNvbnM= 11434\nVk0= 11435\nMDA4 11436\nZWdh 11437\nX0JJVA== 11438\nQWNjb3JkaW5n 11439\nYWNrZWQ= 11440\nIGRvbGxhcnM= 11441\nX2xvc3M= 11442\nIENvc3Q= 11443\nfSIK 11444\nTm90aWZpY2F0aW9u 11445\nIHByb3N0aXQ= 11446\nIGF1dGhvcml0eQ== 11447\nLnJlYw== 11448\nIHNwb2tlcw== 11449\nIFRvZGF5 11450\naXN0YW50 11451\nIEhlYWQ= 11452\n4oCdLg== 11453\nZXJ0YWlubWVudA== 11454\nY2Vhbg== 11455\nY3VsYXRl 11456\nIHZlbg== 11457\nSG93ZXZlcg== 11458\nX2Fycg== 11459\nIHRva2Vucw== 11460\nR3JhcGg= 11461\nIEp1ZA== 11462\nIFZpcmdpbg== 11463\nIFNlcmlhbA== 11464\ndW5uaW5n 11465\nTXV0YWJsZQ== 11466\nYWdlcnM= 11467\nLmNzdg== 11468\nIGRldmVsb3Bpbmc= 11469\nIGluc3RydWN0aW9ucw== 11470\nIHByb21pc2U= 11471\nIHJlcXVlc3RlZA== 11472\nX2VuY29kZQ== 11473\nLyI= 11474\nIEljb24= 11475\ndWlsdA== 11476\nLWRheQ== 11477\nIGludGVsbGlnZW5jZQ== 11478\nLklT 11479\nIE9ic2VydmFibGU= 11480\nIEhhcmQ= 11481\nQm9vbA== 11482\nMjEx 11483\naWRlbnRpYWw= 11484\nLkFuY2hvcg== 11485\nIHNlbGxpbmc= 11486\nQ0k= 11487\nQUdFUw== 11488\ndGxl 11489\nYnVy 11490\nVUZGRVI= 11491\nUlk= 11492\nIGJpZ2dlcg== 11493\nIHJhdA== 11494\nIGZhbW91cw== 11495\nIHR5cGVuYW1l 11496\nIGV4cGxhaW5lZA== 11497\nfX0K 11498\nIG51Y2xlYXI= 11499\nLU4= 11500\nIGNyaXNpcw== 11501\nIEVudGVy 11502\nIGFuc3dlcnM= 11503\nLyR7 11504\nL3Bs 11505\nIHNlcXU= 11506\nX25leHQ= 11507\nbWFzaw== 11508\nIHN0YW5kaW5n 11509\nIHBsZW50eQ== 11510\nIENyb3Nz 11511\nCXJldA== 11512\nZHJv 11513\nIENhc3Q= 11514\nMTY3 11515\nPXRydWU= 11516\nIENocmlz 11517\naWNpbw== 11518\nIE1pa2U= 11519\nRGVjaW1hbA== 11520\nYWRkQ29tcG9uZW50 11521\nTGVu 11522\nIGNvY2s= 11523\nICN7 11524\nVVJO 11525\nPHRy 11526\nIGF1dGhvcml0aWVz 11527\nUmVzb3VyY2Vz 11528\nLUg= 11529\nQm90dG9t 11530\nMDEy 11531\nX3F1 11532\ncHV0ZXI= 11533\nZXN0ZXJkYXk= 11534\nRGlzcGF0Y2g= 11535\nc2luY2U= 11536\nIGZhbWlsaWFy 11537\nLGk= 11538\nVkM= 11539\nIG1lbnQ= 11540\nLEM= 11541\nIGZyZWVkb20= 11542\nIHJvdXRlcw== 11543\nIEJ1eQ== 11544\nIGNvbW1hbmRz 11545\nIG1lc2g= 11546\nL0M= 11547\nIFNldHRpbmdz 11548\nLXN0eWxl 11549\nIHdpdG5lc3M= 11550\nIGNsZQ== 11551\nIHVuaW9u 11552\nZWZhdWx0 11553\nYXJldA== 11554\nIHRob3VnaHRz 11555\nIC0tLS0= 11556\nX3Byb2Nlc3M= 11557\nX3Vz 11558\naW5nbHk= 11559\nVUVT 11560\nVG91Y2g= 11561\nINC8 11562\nX29wZW4= 11563\nIFZlYw== 11564\nIHJld2FyZA== 11565\nLkNsaWNr 11566\nLzo= 11567\nIG5pZQ== 11568\nQ2hhbmdlcw== 11569\nTW9udGg= 11570\n77yf 11571\nIGV4ZWN1dGlvbg== 11572\nIGJlYWNo 11573\nKEludGVnZXI= 11574\nCWE= 11575\nLyc= 11576\nLkZvbnRTdHlsZQ== 11577\nIGFib3J0 11578\nIFNpbmdsZQ== 11579\nKGlzc2V0 11580\nIGRw 11581\nIH19PC8= 11582\nIE1h 11583\nMjE0 11584\nLlJvd3M= 11585\nIFBldA== 11586\nJSk= 11587\ncmFuZA== 11588\n6YA= 11589\nUnVsZQ== 11590\nIGhlbA== 11591\nMDIx 11592\nUklURQ== 11593\nIHF1aWV0 11594\nIHJhdGlv 11595\nIENPTkRJVElPTlM= 11596\nb3NvcGg= 11597\nIElM 11598\nIGFkdmVudA== 11599\nY2Fw 11600\nOzwv 11601\nIFVTQg== 11602\nRHJpdmVy 11603\nIG91cnM= 11604\nIEpvaG5zb24= 11605\nLks= 11606\nX2RlbGV0ZQ== 11607\nLnE= 11608\nCXN0cg== 11609\nL2NvbW1vbg== 11610\nCXN0cmluZw== 11611\nIFBERg== 11612\nYWN0cw== 11613\nLkFjdGlvbg== 11614\nIFF1ZXJ5 11615\nLnJlc3BvbnNl 11616\nIEdpcmw= 11617\nIHByb2Nlc3Nlcw== 11618\nPEludGVnZXI= 11619\naW1v 11620\nIGFkZHM= 11621\nIGVudGlyZWx5 11622\nIHdhc2g= 11623\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 11624\nIGFuaW1hdGVk 11625\nIHByb2ZpdA== 11626\nZW5jaW5n 11627\nL1M= 11628\nIFN5bQ== 11629\nIG1hbnVhbA== 11630\nRG93bmxvYWQ= 11631\nICghJA== 11632\nIG1vdGlvbg== 11633\nd2VicGFjaw== 11634\nLWJvdHRvbQ== 11635\nIGdyYXR1aXQ= 11636\nUEc= 11637\nKDos 11638\nIGVyYQ== 11639\nIGhv 11640\nIEppbQ== 11641\ncXVpcg== 11642\nIEJBU0lT 11643\nw6Fu 11644\nREVS 11645\nIGV4cGVuc2l2ZQ== 11646\nX2Nv 11647\nQm91bmRz 11648\nV2VsbA== 11649\nIERlbW9jcmF0aWM= 11650\nIOKGkg== 11651\nLlJlbQ== 11652\nX1NZ 11653\nbmFtZXM= 11654\nIFZp 11655\nIGlzaW5zdGFuY2U= 11656\nXCI+ 11657\nICo9 11658\nIFBT 11659\nIGRhbmdlcm91cw== 11660\nW3A= 11661\nT01F 11662\nT3RoZXI= 11663\nIFN0cmluZ0J1aWxkZXI= 11664\nUG9pbnRz 11665\naGVhZGluZw== 11666\nIGN1cnJlbmN5 11667\nIHBlcmNlbnRhZ2U= 11668\nX0FQSQ== 11669\nIGNsYXNzaWM= 11670\ndGhlYWQ= 11671\nIE1P 11672\nRkU= 11673\nSWR4 11674\nYXdhaXQ= 11675\nIMOo 11676\nIGFjY2lkZW50 11677\nIHZhcmlhbnQ= 11678\nIG15c3Q= 11679\nIExhbmQ= 11680\nIEJyZQ== 11681\nIGhhcm0= 11682\nIEFjYw== 11683\nIGNoYXJnZWQ= 11684\naW9uZXM= 11685\nVmlzaWJpbGl0eQ== 11686\nYXJyeQ== 11687\nIExhbmd1YWdl 11688\nIHdhbGtpbmc= 11689\nIi4KCg== 11690\naWZlcg== 11691\nIGxlYWRlcnNoaXA= 11692\nLkZyb20= 11693\neW5hbQ== 11694\nIHRpbWVzdGFtcA== 11695\naXB0 11696\nIEhhcw== 11697\nUkVGRVI= 11698\nIEl0cw== 11699\nIGxpc3RlbmVy 11700\nVVRF 11701\nMjEz 11702\nX2Rlc2NyaXB0aW9u 11703\nIGV4cGVyaWVuY2Vz 11704\nIGNyZWF0ZXM= 11705\nUlM= 11706\nY2FydA== 11707\nYmxhY2s= 11708\nIGNob2ljZXM= 11709\nd2Fy 11710\nNzUw 11711\nICcnJw== 11712\nIG9yZGVyZWQ= 11713\nIGV2ZW5pbmc= 11714\nIHBpbA== 11715\nIHR1bg== 11716\nIEJhZA== 11717\nKGFwcA== 11718\ncmFuZG9t 11719\nIGV4cGxpY2l0 11720\nIGFycml2ZWQ= 11721\nIGZseQ== 11722\nIGVjb25vbQ== 11723\nLW1haWw= 11724\nIGxpc3Rz 11725\nIGFyY2hpdGVjdA== 11726\nMjM0 11727\nIFBheQ== 11728\nIGRz 11729\nIFNvbA== 11730\nIHZlaGljbGVz 11731\nSHo= 11732\nLWNvbQ== 11733\nIGtpbmc= 11734\nX2VxdWFs 11735\nIEhlbHA= 11736\nIGFidXNl 11737\nNDgw 11738\nMTY5 11739\nLS07Cg== 11740\nIGV4dHI= 11741\nIGNoZW1pY2Fs 11742\n5L8= 11743\nIG9yaWVudA== 11744\nIGJyZWF0aA== 11745\nIFNwYWNl 11746\nKGVsZW1lbnQ= 11747\nd2FpdA== 11748\nREVE 11749\naWdtYQ== 11750\nIGVudHI= 11751\nIHNvYg== 11752\nLW5hbWU= 11753\nIGFmZmVjdGVk 11754\naWth 11755\nIGNvYWw= 11756\nX3dvcms= 11757\nIGh1bmRyZWRz 11758\nIHBvbGl0aWNz 11759\nc3ViamVjdA== 11760\nIGNvbnN1bWVy 11761\nQU5HRQ== 11762\nIHJlcGVhdGVk 11763\nU2VuZA== 11764\nICNb 11765\nIHByb3RvY29s 11766\nIGxlYWRz 11767\ndXNldW0= 11768\nRXZlcnk= 11769\nODA4 11770\nMTc0 11771\nSW1wb3J0 11772\nKGNvdW50 11773\nIGNoYWxsZW5nZXM= 11774\nIG5vdmVs 11775\nIGRlcGFydA== 11776\nYml0cw== 11777\nLkN1cnJlbnQ= 11778\nIGAkew== 11779\nb3Rpbmc= 11780\nKFw= 11781\nIGNyZWF0aXZl 11782\nIGJ1ZmY= 11783\nIGludHJvZHVjZWQ= 11784\ndXNpYw== 11785\nbW9kdWxlcw== 11786\nQXJl 11787\nLWRvYw== 11788\nbGFuZ3VhZ2U= 11789\nX2NhY2hl 11790\nIHRvZA== 11791\nPz48Lw== 11792\nb21ldGhpbmc= 11793\nIGh1bg== 11794\n5bo= 11795\nYXRlcnM= 11796\nSW50ZW50 11797\nIGltcGxlbWVudGVk 11798\nIENhc2U= 11799\nQ2hpbGRyZW4= 11800\nIG5vdGlmaWNhdGlvbg== 11801\nUmVuZGVyZXI= 11802\nV3JhcHBlcg== 11803\nT2JqZWN0cw== 11804\ndGw= 11805\nLkNvbnRhaW5z 11806\nUGx1Z2lu 11807\nLnJvdw== 11808\nIGZvcmc= 11809\nIHBlcm1pdA== 11810\nIHRhcmdldHM= 11811\nIElG 11812\nIHRpcA== 11813\nc2V4 11814\nIHN1cHBvcnRz 11815\nIGZvbGQ= 11816\ncGhvdG8= 11817\nfSwNCg== 11818\nIGdvb2dsZQ== 11819\nJCgnIw== 11820\nIHNoYXJpbmc= 11821\nIGdvb2Rz 11822\ndnM= 11823\nIERhbg== 11824\nUmF0ZQ== 11825\nIE1hcnRpbg== 11826\nIG1hbm5lcg== 11827\nbGll 11828\nLlRoZQ== 11829\nSW50ZXJuYWw= 11830\nIENPTlRS 11831\nTW9jaw== 11832\nUklHSFQ= 11833\nICd7 11834\nIGNvbnRyb2xz 11835\nTWF0 11836\nIG1hbmQ= 11837\nIGV4dGVuZGVk 11838\nT2s= 11839\nIGVtYmVk 11840\nIHBsYW5ldA== 11841\nIE5vbg== 11842\nLWNo 11843\nKSIs 11844\nZXBhcg== 11845\nIGJlbGlldmVk 11846\nIEVudmlyb25tZW50 11847\nIEZyaWVuZA== 11848\nLXJlcw== 11849\nIGhhbmRsaW5n 11850\nbmlj 11851\nLWxldmVs 11852\nc2NyaQ== 11853\nWG1s 11854\nQkU= 11855\ndW5nZW4= 11856\nIGFsdGVy 11857\nW2lkeA== 11858\nUG9w 11859\nY2Ft 11860\nICgoKA== 11861\nIHNoaXBwaW5n 11862\nIGJhdHRlcnk= 11863\naWRkbGV3YXJl 11864\nTUM= 11865\nIGltcGw= 11866\nb3RhdGlvbg== 11867\nIExhYg== 11868\nPGZvcm0= 11869\nCW5hbWU= 11870\nIEdhbWVz 11871\ncmF5 11872\nRXh0cmE= 11873\nVHdv 11874\nKHBsYXllcg== 11875\nIExlcw== 11876\nwrA= 11877\nIGNoYXJzZXQ= 11878\nIGpvdXJuZXk= 11879\nZXRpbmc= 11880\n5pg= 11881\n4pQ= 11882\n55So 11883\nIGRpbg== 11884\nIHBlcm1hbg== 11885\nIHNvbHZl 11886\nIGxhdW5jaGVk 11887\nIG5pbmU= 11888\nIHNlbmRpbmc= 11889\nIHRlbGxpbmc= 11890\nLnBhc3N3b3Jk 11891\nIE1hdHJpeA== 11892\nZXJpYw== 11893\nIGdyYWI= 11894\nLnU= 11895\nIExpYnJhcnk= 11896\nIGRlYnQ= 11897\nSU5L 11898\nLmZpbmRWaWV3QnlJZA== 11899\nIGZyZXF1ZW5jeQ== 11900\nLmFk 11901\nX1RFU1Q= 11902\nIG5lZ290 11903\nIEFmcmljYW4= 11904\nc2VuZGVy 11905\nxaE= 11906\nR2xvYmFs 11907\nMTcz 11908\nIGV4cGVydHM= 11909\nKyspDQo= 11910\nIGRlcGVuZGluZw== 11911\nZ3JheQ== 11912\nIGp1ZGdl 11913\nIHNlbnRlbmNl 11914\nbG9zdXJl 11915\nQWM= 11916\nIHRyYWNl 11917\nRWRnZQ== 11918\nIGZyaWVuZGx5 11919\nIGNvbmNlcm5lZA== 11920\nYmxvZw== 11921\nIGNsYWltZWQ= 11922\nfSc= 11923\naW50ZWdlcg== 11924\nX3RyZWU= 11925\nCWNvbnRpbnVl 11926\neGk= 11927\nIGFjY2VwdGVk 11928\nX29uZQ== 11929\nIEVkdWNhdGlvbg== 11930\ndWJsaXNoZWQ= 11931\nZ29u 11932\nYXBwb2ludA== 11933\nb3V0cw== 11934\nIG1pbmluZw== 11935\nIHNvbmdz 11936\nIGhlcnNlbGY= 11937\nIGdyYW50ZWQ= 11938\nIHBhc3Npb24= 11939\nIExha2U= 11940\nIGxvYW4= 11941\ndWVudA== 11942\nY2hhbnQ= 11943\nIGRldGFpbGVk 11944\nZXhjZXB0 11945\nX2NtZA== 11946\nIEhF 11947\nUmVsYXRlZA== 11948\nenQ= 11949\nJ30sCg== 11950\nIHNwZWNpZmljYWxseQ== 11951\nU3RhdGlj 11952\nIGNhcnJpZWQ= 11953\nQU5T 11954\nXCI6 11955\nQ3JlYXRlZA== 11956\nIGN1bA== 11957\nXS0= 11958\nX2FwaQ== 11959\nRlA= 11960\nIHNpdHRpbmc= 11961\nICIiKQ== 11962\nCWdvdG8= 11963\nIEVxdQ== 11964\nIGFzc2F1bHQ= 11965\na2lucw== 11966\nYW5jZXI= 11967\nb2dlbg== 11968\nIHZvdGVycw== 11969\nIFByb3Q= 11970\nRGVzY3JpcHRvcg== 11971\n44O8 11972\nLkFzc2VydA== 11973\nYnNpdGVz 11974\nb3N0ZXI= 11975\nLW1lbnU= 11976\nIGFybXM= 11977\nLkNsaWVudA== 11978\nLmJhY2tncm91bmQ= 11979\nYXZpdHk= 11980\nIHZ1bA== 11981\nX01BU0s= 11982\nIGhvdXNpbmc= 11983\nIGJlYXI= 11984\nX2l0ZXI= 11985\ncGlyZWQ= 11986\nIG1hcmtldHM= 11987\nIFN0dWRlbnQ= 11988\nIHRpY2tldA== 11989\nIG1pbGxpb25z 11990\nZmxhdGVy 11991\nKT0= 11992\nIHJlY292ZXI= 11993\nIEZvcmNl 11994\nIEJvdGg= 11995\nIHZpY3RpbQ== 11996\nIERpc2M= 11997\ncmVwb3J0 11998\nIGZvdXJ0aA== 11999\nIEFzc2VtYmx5 12000\nL3VzZXI= 12001\nTnVsbE9y 12002\ndGV4dGFyZWE= 12003\nIGF0aA== 12004\nIChb 12005\nIGNoYW5uZWxz 12006\nIEp1c3RpY2U= 12007\nY2hvaWNl 12008\nTE9CQUw= 12009\nZXhlYw== 12010\nZW1hbGU= 12011\nIGVsZW0= 12012\nX2xl 12013\nIHJlc3BvbnNpYmlsaXR5 12014\nIFR3 12015\nSUNBVElPTg== 12016\nIGVsc2VpZg== 12017\nIGZv 12018\nYXN0cw== 12019\nIHRyZWF0ZWQ= 12020\nc2Vu 12021\nIFZpY3Q= 12022\nc3VtZXI= 12023\nX0JBU0U= 12024\nIGFzdA== 12025\nPnt7 12026\nIFJlc291cmNl 12027\nIFN0YW5kYXJk 12028\nIFByZW0= 12029\ndXBkYXRlZA== 12030\naXZhbGVudA== 12031\nIGFzc2V0cw== 12032\nX3RlbXA= 12033\nIGludGVyZXN0cw== 12034\nIGhhcmR3YXJl 12035\nIFJvbQ== 12036\nIFNoYXJl 12037\nICcnCg== 12038\nICos 12039\nIFRha2U= 12040\nIEltYWdlcw== 12041\nX0NIRUNL 12042\nKHR5cGVvZg== 12043\nIEp1bg== 12044\nXDxe 12045\nIGxpcXU= 12046\nIHdvcnN0 12047\neW1ib2xz 12048\nCQkJICAg 12049\nIGRyaXZlcnM= 12050\nIERvY3VtZW50 12051\nZW5v 12052\nIFRlY2hub2xvZ3k= 12053\nIGFwcHJvdmVk 12054\ndW1wcw== 12055\nIHNub3c= 12056\nZm9ybWFuY2U= 12057\nX0FTU0VSVA== 12058\ndWl0cw== 12059\nMjA3 12060\n2YY= 12061\nIGRpZmZlcmVuY2Vz 12062\nLlZpc2libGU= 12063\nCQkJDQo= 12064\nIFBz 12065\nX2ZldGNo 12066\nIHRvZG8= 12067\nLicsCg== 12068\nIHNlbA== 12069\ndXJlcnM= 12070\naW52YWxpZA== 12071\nIHR3ZWV0 12072\nVkVM 12073\nIHJlc2VhcmNoZXJz 12074\nIHNwcmludGY= 12075\nIFJP 12076\nIHBlbA== 12077\nLlRyYW5z 12078\nIGlsbGVnYWw= 12079\nZGlhbG9n 12080\nc21hcnR5 12081\nbGc= 12082\nX01JTg== 12083\nIGhlcm8= 12084\nZmluYWw= 12085\nIHBw 12086\nLkxl 12087\nIGNp 12088\nCVJU 12089\nIHN1Z2dlc3RlZA== 12090\ncGRm 12091\nYWNoaW5n 12092\nIFJv 12093\nIFByb3BlcnRpZXM= 12094\nIFNp 12095\nIGJ1eWluZw== 12096\nIG11 12097\nIGxhbmRz 12098\naWZpZXJz 12099\nIEZJTEU= 12100\nUk9VUA== 12101\nIGhvbGRlcg== 12102\nIFNvbg== 12103\nIHN5bXB0 12104\nLnJvdXRl 12105\nKT8= 12106\nIGFyZ2M= 12107\nIGZvcnQ= 12108\nIGNhc2lubw== 12109\nX2NhdGVnb3J5 12110\nIGZvcnVt 12111\nMjE1 12112\ncHJlZml4 12113\nYXB0dXJl 12114\nVHViZQ== 12115\nZW1z 12116\naW1pemU= 12117\nIG51ZQ== 12118\nYXVz 12119\nY291cnNl 12120\nQVRPUg== 12121\nKCkpLA== 12122\nQWR2ZXJ0aXM= 12123\nSU5HUw== 12124\nIGFja25vdw== 12125\nIEtvcmVh 12126\ncGxpbmc= 12127\nIHdvcmtlcg== 12128\nUExJRUQ= 12129\naGFs 12130\nIFJpY2hhcmQ= 12131\nRWxlbWVudHM= 12132\nCQkJIA== 12133\nc3Rhcg== 12134\nIHJlbGF0aW9uc2hpcHM= 12135\nIGNoZWFw 12136\nQUNI 12137\nIFhNTA== 12138\nLCY= 12139\nIExvdWlz 12140\nIHJpZGU= 12141\nX0ZBSUw= 12142\nIGNodW5r 12143\nW3M= 12144\nX09VVA== 12145\nIGNob3Nlbg== 12146\nX1s= 12147\nLyg= 12148\nIEplZmY= 12149\nX3Ns 12150\ncHJpdg== 12151\nIENhbmFkaWFu 12152\nIHVuYWJsZQ== 12153\nX0ZMQUc= 12154\nIG5vcw== 12155\naGlnaA== 12156\nIGxpZnQ= 12157\nZnVu 12158\nKCl7 12159\nZWxseQ== 12160\neWNsZXJWaWV3 12161\nX2Fz 12162\nX0xJU1Q= 12163\nIHJhZGk= 12164\nLmdldFZhbHVl 12165\nMzA0 12166\nIEFuZ2VsZXM= 12167\nIFNwYW4= 12168\nX2luc3RhbmNl 12169\naXRvcnM= 12170\nMjA4 12171\nIG1pZ3JhdGlvbg== 12172\nQUs= 12173\nT2g= 12174\nwq4= 12175\nLnNlbGVjdGVk 12176\nIEdU 12177\nIGFkdmFuY2U= 12178\nIFN0eWxl 12179\nLkRhdGFHcmlkVmlldw== 12180\nZWN0aW9u 12181\n0Y4= 12182\ncGlv 12183\ncm9n 12184\nIHNob3BwaW5n 12185\nIFJlY3Q= 12186\nSWxsdW1pbmF0ZQ== 12187\nT1U= 12188\nCWFycmF5 12189\nIHN1YnN0YW50aWFs 12190\nIHByZWdu 12191\nIHByb21vdGU= 12192\nSUVX 12193\nLkxheW91dA== 12194\nIHNpZ25z 12195\nLy4= 12196\nIGxldHRlcnM= 12197\nQm9hcmQ= 12198\nY3RybA== 12199\nIlw= 12200\nIEpvbmVz 12201\nIHZlcnRleA== 12202\nIGph 12203\nIGFmZmlsaQ== 12204\nIHdlYWx0aA== 12205\nCWRlZmF1bHQ= 12206\nIHNpZ25pZmljYW50bHk= 12207\nIGVj 12208\nIHhz 12209\nYWN0dWFs 12210\nLnBlcg== 12211\nX3N0ZXA= 12212\nYW52YXM= 12213\nbWFj 12214\nIHRyYW5zbA== 12215\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 12216\nSXRlcmF0b3I= 12217\nIG9jaA== 12218\nYWdub3N0aWM= 12219\nIER1cmluZw== 12220\nIERFRkFVTFQ= 12221\nIHRpbGw= 12222\nIHNpZ25hdHVyZQ== 12223\nIGJpcmQ= 12224\nIE9s 12225\nMzEw 12226\nIEly 12227\nSFM= 12228\nYXZhdGFy 12229\nRVNTQUdF 12230\nIGVsZXY= 12231\nIG10 12232\nIE5hdg== 12233\nIHJlbGF4 12234\nIHBsYXRl 12235\nSVRFTQ== 12236\nKGRhdGU= 12237\nLm5vdA== 12238\nIGdyYWRl 12239\nIH0pLAo= 12240\nPyIKCg== 12241\naWVuY2Vz 12242\nSGlnaA== 12243\nIERJUw== 12244\nMjMx 12245\nZGlzYWJsZWQ= 12246\nUVVJ 12247\nIG5vaXNl 12248\nYXV4 12249\nIFVQ 12250\nODg4 12251\nb3Nh 12252\nIHZvYw== 12253\nICkp 12254\nb2NvbQ== 12255\nX09GRg== 12256\nIERi 12257\nTG9jaw== 12258\nLmVjbGlwc2U= 12259\nLGQ= 12260\nIERyYXc= 12261\nICIo 12262\nIHZpc2l0ZWQ= 12263\nIOKI 12264\nIHN1Y2NlZWQ= 12265\nIGltcG9zc2libGU= 12266\nYWlyZQ== 12267\nIFR1cm4= 12268\nIGRpc2g= 12269\nRkc= 12270\nIHNlbnNvcg== 12271\nQU5O 12272\nYWJh 12273\nIHN1cmc= 12274\nXSk7DQo= 12275\nIGZw 12276\nX2Fu 12277\nLUo= 12278\nLUc= 12279\nIEpvYg== 12280\nQ29udmVydA== 12281\nIEtFWQ== 12282\nIGF1dGhvcnM= 12283\nX3NlcnZlcg== 12284\nXHI= 12285\nIC0qLQ== 12286\nZmxleA== 12287\nIHNvYw== 12288\nUmV0 12289\nIHNhbHQ= 12290\nIOKApgoK 12291\nIENsZWFy 12292\nKHBhZ2U= 12293\nLWRhbmdlcg== 12294\nIHJvb21z 12295\nY29udg== 12296\nI3s= 12297\nLm9w 12298\nIEFyZWE= 12299\nX1ND 12300\naGVu 12301\nIGJlZ2lucw== 12302\nLXk= 12303\nIGV4Y2l0ZWQ= 12304\nIGlnbm9yZWQ= 12305\nIGJvbnVz 12306\nc3R1ZGVudA== 12307\nIE1lbWJlcg== 12308\nIHJlbGF0aXZlbHk= 12309\nIExvdw== 12310\nIFByb2R1 12311\nYXRld2F5 12312\ncG9zdXJl 12313\nIHRoaWNr 12314\nYW5pZWw= 12315\nKHZpZXc= 12316\nIENydXNo 12317\nRXh0ZW5zaW9u 12318\nSWw= 12319\nZWVk 12320\nTE9D 12321\nLmlt 12322\nLkl0ZW1z 12323\nIGNvbmZsaWN0 12324\nLnByZXZlbnQ= 12325\nMjUy 12326\nIG9uQ3JlYXRl 12327\ndXY= 12328\naXNlcg== 12329\nIHdhdmU= 12330\nTWFy 12331\nIENvbW11bml0eQ== 12332\naWNoZQ== 12333\nIE5vdGhpbmc= 12334\nW20= 12335\nIExlZQ== 12336\ncmllbmRz 12337\nMjMy 12338\nw6hyZQ== 12339\nISEh 12340\nYW56 12341\nLnJlc3VsdA== 12342\nIFNL 12343\nX1BBUkFN 12344\nIGRlbW9jcg== 12345\nQmFja0NvbG9y 12346\nLmV4aXN0cw== 12347\nIkl0 12348\nKG9wdGlvbnM= 12349\ncmF6eQ== 12350\nYXNlcg== 12351\nXERhdGFiYXNl 12352\nYWxlbmRhcg== 12353\nX2Fzcw== 12354\nO30K 12355\ndmVydGV4 12356\naW5lY3JhZnQ= 12357\nV2FybmluZw== 12358\nYXJnbw== 12359\nIGFjdG9y 12360\nIEluc3RlYWQ= 12361\nIFVzaW5n 12362\nU2VsZg== 12363\nQGludGVyZmFjZQ== 12364\nIHNwZWFraW5n 12365\nIFBhcmlz 12366\nIExJQ0VOU0U= 12367\nLm5vZGU= 12368\nIEZvb2Q= 12369\nRUlG 12370\nIEJp 12371\nLlN0YXJ0 12372\nIElC 12373\nIHVuaXZlcnNpdHk= 12374\nMjU0 12375\nIEhlYWRlcg== 12376\nLnByb2R1Y3Q= 12377\nNDA5 12378\nQ29weQ== 12379\nZXRj 12380\ncmljYWw= 12381\nID4+Pg== 12382\nYm9va3M= 12383\nIGFsZ29yaXRobQ== 12384\nICdfXw== 12385\nKGphdmF4 12386\nIG51bWVyb3Vz 12387\nU2hhcmU= 12388\nSGF2ZQ== 12389\nIHJlY3J1 12390\nIHByb3Zl 12391\nLnN1YnN0cmluZw== 12392\naGVhbHRo 12393\n0LXQuw== 12394\nIGRlY2ltYWw= 12395\nIGNvbW1pc3Npb24= 12396\nc2NyaXB0aW9u 12397\neEM= 12398\nIHN1bW1hcnk= 12399\nYXR0ZWQ= 12400\nIGNsb3Nlcg== 12401\nZmluaXNoZWQ= 12402\nKCkpewo= 12403\nIFdvb2Q= 12404\nMzAx 12405\nX2ZpZWxkcw== 12406\na3U= 12407\nX2l0ZW1z 12408\nRmxhZw== 12409\nIGNvbmZpZGVuY2U= 12410\nIEZlZGVyYWw= 12411\nZHV4 12412\nIGNvbXBhdA== 12413\nIHZlcnRpY2Fs 12414\n0Lk= 12415\nw6hz 12416\nOyI+Cg== 12417\nX21hbmFnZXI= 12418\nKCkpKQo= 12419\nSURF 12420\nOiIs 12421\nMjM1 12422\nX18K 12423\nIFdheQ== 12424\nMjIx 12425\n0Yg= 12426\nVGVtcA== 12427\nIFNUUg== 12428\ncml0dGVu 12429\nU3luYw== 12430\nIEFW 12431\nIENFTw== 12432\nIEd1aWQ= 12433\nIGVudmlyb25tZW50YWw= 12434\nIGNvcnJlc3BvbmRpbmc= 12435\nCWNvbnNvbGU= 12436\nIGp1c3RpY2U= 12437\nIEpT 12438\nIGxpdmVk 12439\nZ2Fy 12440\nIEdyYXBo 12441\nIFN0YXQ= 12442\nIGlQaG9uZQ== 12443\nLmFs 12444\nIEhE 12445\nIG9jY3Vy 12446\nIHRocmVzaG9sZA== 12447\nNTA5 12448\nIG9uY2xpY2s= 12449\nUkVH 12450\nLkdyYXBoaWNzVW5pdA== 12451\nTWV0YQ== 12452\nxb4= 12453\nIGN1bQ== 12454\nLmdudQ== 12455\nw6s= 12456\nIG9idGFpbmVk 12457\nIGNvbXBsYWludA== 12458\nIGVhdGluZw== 12459\nIHRhcg== 12460\nX3Rhc2s= 12461\nIG9wdHM= 12462\nMjE2 12463\nKHRv 12464\nUGFzcw== 12465\nIHBsYXN0aWM= 12466\ndGlsaXR5 12467\nIFdpbg== 12468\nLnByZXZlbnREZWZhdWx0 12469\ncGlsZQ== 12470\nIEdhcg== 12471\nIHF1YW50aXR5 12472\nX2xhc3Q= 12473\nIGdyZWF0ZXN0 12474\nRGFv 12475\nX0RJUw== 12476\nIFVzZWQ= 12477\nIEhQ 12478\ncml0aW5n 12479\nU0lPTg== 12480\nYmx1ZQ== 12481\nZG9tYWlu 12482\nIHNjb3Jlcw== 12483\nTm9ybWFs 12484\nX2FkbWlu 12485\nIEFTU0VSVA== 12486\nVGhlbg== 12487\nKioq 12488\nZGlzdA== 12489\nbG9u 12490\nIGhhdGU= 12491\nc2hhbA== 12492\nSW1hZ2VWaWV3 12493\nZGF0YWJhc2U= 12494\nIHBhbmQ= 12495\nIGxvZ2lj 12496\nPWZhbHNl 12497\nYmc= 12498\nIENvbmZpZ3VyYXRpb24= 12499\nIG51cg== 12500\nT0c= 12501\nIG1hcnJpZWQ= 12502\nOis= 12503\nIGRyb3BwZWQ= 12504\nMDQw 12505\nIHJlZ2lzdHJhdGlvbg== 12506\n0L7QvA== 12507\ndWx0aXBsZQ== 12508\naXplcnM= 12509\nc2hhcGU= 12510\nLmNvcHk= 12511\nIHdlYXJpbmc= 12512\nIENhdGg= 12513\nIGRlZGljYXRlZA== 12514\nIC4uLgo= 12515\nIGFkdm9j 12516\nIEZhbWlseQ== 12517\nIHN0YXRlbWVudHM= 12518\nZW1hdGlj 12519\nYW1waW9uc2hpcA== 12520\nIG1vdGl2 12521\nIEhhdmU= 12522\nIGJsb3c= 12523\nSm9i 12524\nY2VydA== 12525\nX3ZlY3Rvcg== 12526\naW5zdGFsbA== 12527\nIENPUFk= 12528\nZW1iZWQ= 12529\nRElS 12530\nIFNwcmluZw== 12531\nIGV4aGli 12532\nMjIz 12533\nY2Ru 12534\nIENvbW1lbnQ= 12535\nIE9wdGlvbmFs 12536\nLnBsYXllcg== 12537\nIERhcms= 12538\nKHBvcw== 12539\nIFNob3VsZA== 12540\nIGNlbnRyZQ== 12541\nIEd1YXJk 12542\nw7N3 12543\nIHRyb3VibGU= 12544\nRU5FUg== 12545\nKHVuc2lnbmVk 12546\nX3NlcnZpY2U= 12547\nIG5z 12548\ndWxpbmc= 12549\nIE1leGljbw== 12550\nIE5Z 12551\nbXlzcWw= 12552\nIGxpYw== 12553\n5Zw= 12554\nTXI= 12555\nLWZs 12556\nIEN1c3RvbWVy 12557\naWRp 12558\nID8+Cgo= 12559\ncmlibGU= 12560\nINC/0YA= 12561\nIHNpemVz 12562\nX1NUUklORw== 12563\ndmFsaWRhdGlvbg== 12564\nIEpvbg== 12565\nKEh0dHA= 12566\nYWRkQ2xhc3M= 12567\nTm9kZXM= 12568\nIGZyYWdtZW50 12569\nIHNwb2tl 12570\nIHdhc3Rl 12571\nSm9pbg== 12572\nIGlsbHVzdHI= 12573\nZWxp 12574\nY2llbnQ= 12575\nIGFpZA== 12576\nIHByb3NlYw== 12577\nJyl7Cg== 12578\nIHBhc3Npbmc= 12579\nIGZhY2Vz 12580\nU2hhcGU= 12581\nX1o= 12582\naXRp 12583\nIGFsbGU= 12584\nIHJvYm90 12585\nICAgICAgIAo= 12586\nIFNwZQ== 12587\nIHJlY2VpdmluZw== 12588\nIERldGFpbHM= 12589\nICIp 12590\nbWc= 12591\nX1JFRg== 12592\nIGNvbXBhcmlzb24= 12593\nKiw= 12594\nIEZvdW5k 12595\nX3Nlc3Npb24= 12596\nKFU= 12597\nL0Y= 12598\nIHh4eA== 12599\nTmV0d29yaw== 12600\nZGVycw== 12601\nIGNhcHR1cmU= 12602\nIGNvcnJl 12603\nIEx0ZA== 12604\nIEFkdg== 12605\nW0A= 12606\nIGNsaXA= 12607\nTWlsbA== 12608\nIFByb2ZpbGU= 12609\nIGVuZGlm 12610\nIG9ibGln 12611\nZGVzY3JpYmU= 12612\nLmVsZW1lbnQ= 12613\ncml0ZXJpb24= 12614\nTEQ= 12615\nZXJlZA== 12616\nIGZhdm91cg== 12617\nc2NvcmU= 12618\nIEZpbHRlcg== 12619\nYXR0cmlidXRlcw== 12620\nIGNoZWNrcw== 12621\nSW5mbGF0ZXI= 12622\nIFBsdXM= 12623\nIHNjaWVudGlmaWM= 12624\nIHByaXZhY3k= 12625\nSGVhZA== 12626\nIGZlYXQ= 12627\nIGRlZ3JlZXM= 12628\nIFBhbGU= 12629\nOyI+ 12630\nIGZpbG1z 12631\nIEF1ZGlv 12632\nIFRhZw== 12633\nIEVuZXJneQ== 12634\naXRhcg== 12635\ncGFyYXRvcg== 12636\nIGZlbGxvdw== 12637\nIGV2dA== 12638\nIFRyaQ== 12639\nIERBTQ== 12640\nY2xvdWQ= 12641\nIFBhc3N3b3Jk 12642\nIERlbW9jcmF0cw== 12643\nIEFjYWQ= 12644\nJGxhbmc= 12645\nIHJlYg== 12646\nKCkpCgo= 12647\n0L3Riw== 12648\nIEJ1cg== 12649\ncmVhZGNy 12650\nIGhleA== 12651\nMjA5 12652\nQ29uc29sZQ== 12653\nY3Rs 12654\nb3VzZWw= 12655\nIFdpbGxpYW0= 12656\nIGF6 12657\nX1BPUlQ= 12658\nIHByYWN0aWNlcw== 12659\nIGFueXdoZXJl 12660\nIFBvc2l0aW9u 12661\nIC0+Cg== 12662\naWFtcw== 12663\nLnVzZXJuYW1l 12664\ncGxhY2Vob2xkZXI= 12665\nIG9kZXI= 12666\nIFNlY3JldGFyeQ== 12667\nIGlU 12668\nbW9uZA== 12669\nZXZlbnRz 12670\nP+KAnQ== 12671\nLlN1Yg== 12672\nIGF0dGFjaGVk 12673\nIG7Do28= 12674\nIGVzdGF0ZQ== 12675\nMzY1 12676\nLmFjdGlvbg== 12677\nIGZpZ3VyZXM= 12678\nIH0pOw0K 12679\nIHN1YnNjcmk= 12680\nLnRhZw== 12681\nbmFt 12682\nLnBsb3Q= 12683\nbm9vbg== 12684\nbGlhbWVudA== 12685\nQ2hhcmFjdGVy 12686\nLnRhYg== 12687\nIHdpbnRlcg== 12688\nIFZhcmlhYmxl 12689\nIHRyZWVz 12690\nIHByb3Vk 12691\nKFY= 12692\nX2xvYWQ= 12693\nIGhpZXI= 12694\nIEVjb24= 12695\nIGZk 12696\nIHZpY3RpbXM= 12697\nUmVzdA== 12698\naWFuYQ== 12699\nIGZha2U= 12700\nLlByaW50bG4= 12701\nIHN0cmxlbg== 12702\nIHNhZA== 12703\nIGJsZQ== 12704\nUHJvdA== 12705\nIGJ1dHRvbnM= 12706\nIHRlbGV2aXNpb24= 12707\nIGxvZ28= 12708\nZXh0ZW5zaW9u 12709\nCWo= 12710\nc3RlaW4= 12711\nYWNpb25lcw== 12712\nICIiIgoK 12713\nIHNpbXA= 12714\nIHJlY29yZGVk 12715\nIGJyaW5ncw== 12716\nIHByaW5jaXBhbA== 12717\nIGZlZXM= 12718\nKHNvdXJjZQ== 12719\na2Rpcg== 12720\nIHV0aWxz 12721\nIGNvcnJlY3RseQ== 12722\nZmls 12723\nIHdlbA== 12724\nUGFpcg== 12725\nLWJ1dHRvbg== 12726\nc2NhbGU= 12727\ndmVyaWZ5 12728\nW2M= 12729\nIC0tLQ== 12730\nIGVzY2FwZQ== 12731\naWtlcw== 12732\nTG93ZXJDYXNl 12733\naWNpYW4= 12734\nIGNoYXB0ZXI= 12735\nIFRZUEU= 12736\nIHNoYWRvdw== 12737\nIGF3ZXNvbWU= 12738\nV0U= 12739\nZWxpZg== 12740\nIGxhbWJkYQ== 12741\nIGRpc3RpbmN0 12742\nIGJhcmU= 12743\nLW9mZg== 12744\nIGNvbG91cg== 12745\nLmFwcGVuZENoaWxk 12746\nb2xlYw== 12747\nYWdh 12748\nLmZpbGw= 12749\nCXN1cGVy 12750\nIGFkag== 12751\nKHBvc2l0aW9u 12752\nLmdldEl0ZW0= 12753\nMjQy 12754\nU2hvcnQ= 12755\nIHRvdGFsbHk= 12756\nVkQ= 12757\nIFRyZQ== 12758\nX2Vw 12759\ndmVtZW50cw== 12760\nIFNvbHV0aW9u 12761\nIGZ1bmRhbWVudA== 12762\nRm9sbG93 12763\nIGZhY2lsaXR5 12764\nIGhhcHBlbmluZw== 12765\nT0Y= 12766\nLnRleHRCb3g= 12767\nU3Bhbg== 12768\nIMKr 12769\naWRlbg== 12770\nIGV4Y2VlZA== 12771\nKHBhcmVudA== 12772\nIGNw 12773\n57s= 12774\nIGhhc24= 12775\nIHByaQ== 12776\nIGNvbnNlcXU= 12777\nbmVu 12778\nIElOVE8= 12779\nSWdub3Jl 12780\nIEZ1dHVyZQ== 12781\nIGNhcmJvbg== 12782\nIFN0ZWVs 12783\nZm10 12784\nb2tpZQ== 12785\nIHNwbA== 12786\nKHRpdGxl 12787\nLWluZm8= 12788\nIGRlYWxz 12789\nIGZpeHR1cmU= 12790\nZWE= 12791\nRGl2 12792\nIHRlc3RlZA== 12793\nX3JldHVybg== 12794\nKQoKCgo= 12795\ndXBwb3J0ZWQ= 12796\nIENvb2s= 12797\nIHBheWluZw== 12798\nIElsbA== 12799\nIGFycmVzdGVk 12800\nIFByaW1l 12801\nX2NhbGxiYWNr 12802\nPiwK 12803\nZHJpdmVy 12804\nT25jZQ== 12805\nYWJi 12806\nX2J5dGVz 12807\nIFNldHM= 12808\nKE9iamVjdA== 12809\nIGNj 12810\nIHNoZWxs 12811\nYWxv 12812\nKTsvLw== 12813\nKGxvZw== 12814\nMjY0 12815\nY3RvcnM= 12816\nKTwv 12817\nIG5laWdoYm9yaG9vZA== 12818\nNDIw 12819\nYWlsYWJpbGl0eQ== 12820\ndm9s 12821\nIHlvdXRo 12822\nIHRlY2huaXF1ZXM= 12823\nIFNjaGVtYQ== 12824\ndWg= 12825\nbWVudGU= 12826\nIHJlcG9zaXRvcnk= 12827\naW1t 12828\nIGNvb2tpZQ== 12829\nSlM= 12830\nb3ZpZXM= 12831\nOns= 12832\nQ29tcGxldGU= 12833\nU2luY2U= 12834\nIGxhdWdo 12835\nX0JP 12836\nZW5hYmxl 12837\nIERvZXM= 12838\nIFdhbGs= 12839\nd2hhdA== 12840\na2Vz 12841\nIG11bHRpcA== 12842\naW1lbnRz 12843\nZXVy 12844\nIHZpY3Rvcnk= 12845\nR2VuZXJhdG9y 12846\nIE1vcw== 12847\ncm92ZXJz 12848\nIGNvbXB1dGU= 12849\nIHByb3ZpZGVycw== 12850\nIE1lZGlj 12851\nTFA= 12852\nX0NPTkZJRw== 12853\nIHZldGVy 12854\nc3RlcnM= 12855\nX3dpbmRvdw== 12856\ndW1lcmlj 12857\nCQkJCQkK 12858\nLlJlc3BvbnNl 12859\nIHJlcGxhY2Vk 12860\nLnJvb3Q= 12861\nLWZyZWU= 12862\nLWNvbnRhaW5lcg== 12863\nIG1hdGNoaW5n 12864\nIEVkaXRvcg== 12865\nPSR7 12866\nIFNhZg== 12867\nIHNpbmQ= 12868\nKGJ1ZmZlcg== 12869\n5Yc= 12870\nLmVkdQ== 12871\nKV07Cg== 12872\nIE5GTA== 12873\nYXlh 12874\nIGRvZ3M= 12875\nIGRlc2lyZQ== 12876\nIE1pZGRsZQ== 12877\nQ2FydA== 12878\nMzA2 12879\nVGhlbWU= 12880\nIG1vYg== 12881\nIGRpc3BsYXllZA== 12882\naWdpdA== 12883\nIGFkdWx0cw== 12884\nIiIi 12885\nIGRlbGl2ZXJlZA== 12886\ndmlzaWJsZQ== 12887\nIjp7Cg== 12888\nPDw8 12889\nIEdP 12890\nc2Nyb2xs 12891\neEU= 12892\nIGFzc2lnbmVk 12893\nIEJvb2w= 12894\nIHdw 12895\nIGNvbWJhdA== 12896\nIEhhdw== 12897\nLi0= 12898\nIHN1cHBvcnRpbmc= 12899\nLkNvbnRlbnQ= 12900\nMzQ1 12901\naXJjcmFmdA== 12902\nIHNwaW4= 12903\nIENS 12904\nLm15 12905\n4KU= 12906\ndHBs 12907\nIHNwYWNlcw== 12908\nPyw= 12909\nMzg0 12910\nIFN5cmlh 12911\nIHBhdHRlcm5z 12912\nLWJveA== 12913\nIGZyYW1ld29yaw== 12914\nLyU= 12915\nKGxvbmc= 12916\nIHRlYWNoaW5n 12917\nQVJOSU5H 12918\nX2tleXM= 12919\nIHRhYmxlcw== 12920\nVU5D 12921\naW5hdGlvbnM= 12922\nLXdlaWdodA== 12923\ncmFkaW8= 12924\nIFBhYw== 12925\nLnNlcnZlcg== 12926\nLkNoYXJGaWVsZA== 12927\ncmluZw== 12928\nIHF1b3Rl 12929\nYW5uYQ== 12930\nIHdlcmRlbg== 12931\nIGNyZWFt 12932\nIG1hY2hpbmVz 12933\nLWs= 12934\nMzc1 12935\nIHN0aW0= 12936\nIFN0b2Nr 12937\ncmljaw== 12938\nIGltcG9ydGFuY2U= 12939\ncng= 12940\nw7Vlcw== 12941\n2Yg= 12942\nIHN0cm9rZQ== 12943\nYWdyYQ== 12944\nIHRhc3Rl 12945\nIERFQlVH 12946\nVGhhbmtz 12947\nIFJlcXVpcmVk 12948\nb3Zh 12949\nTWVkaWE= 12950\nIHNpxJk= 12951\nKGJhc2U= 12952\ncG9zdHM= 12953\nIGZpbGVOYW1l 12954\nQ2hlY2tlZA== 12955\nIGludGVycnVwdA== 12956\nICgpCg== 12957\ncHl0aG9u 12958\ncGFpcg== 12959\nIGNpcmNsZQ== 12960\nIGluaXRp 12961\nX3N0cmVhbQ== 12962\nIGNvbXByZWg= 12963\nbGVhcm4= 12964\nUHVibGlj 12965\nIGh1bWFucw== 12966\nIGJyaW5naW5n 12967\nb2dyYXBoaWM= 12968\nX2xheWVy 12969\nLWxpa2U= 12970\ndXBwb3J0SW5pdGlhbGl6ZQ== 12971\naWRlYmFy 12972\nIHZvdGVz 12973\nIGRlc2lyZWQ= 12974\nTWFzaw== 12975\nIHJlbGF0aW9u 12976\nLkluc3RhbmNl 12977\nSGVscA== 12978\nIGluc3Bpcg== 12979\nIE1vbm8= 12980\nVmlld01vZGVs 12981\nb21ldGltZXM= 12982\nIGJhY2tncm91bmRDb2xvcg== 12983\nIHJvdGF0aW9u 12984\nIG1hcmk= 12985\nL3Rlc3Q= 12986\nSU5TRVJU 12987\nU3Rhcg== 12988\ncGh5 12989\nSWRz 12990\nX0dFVA== 12991\nIGluY3JlYXNlcw== 12992\nX2Nsb3Nl 12993\nMjMz 12994\nX0ZPUk0= 12995\nIFvigKZdCgo= 12996\nYXph 12997\nVEVYVA== 12998\nIMOk 12999\nIFZhbg== 13000\nIGxpZ2h0cw== 13001\nIEd1aWRl 13002\nIGRhdGVz 13003\nLkNvbW1hbmQ= 13004\nYW1hbg== 13005\nIHBhdGhz 13006\nLmVkaXQ= 13007\nCWFkZA== 13008\nZHg= 13009\nIHJlYWN0aW9u 13010\nIEJlYWNo 13011\nLmdldE1lc3NhZ2U= 13012\nRW52aXJvbm1lbnQ= 13013\naW50ZXJlc3Q= 13014\nIG1pbmlzdGVy 13015\nIHJlYWRlcnM= 13016\nCUY= 13017\nIGRvbWVzdGlj 13018\nIGZpbGVk 13019\nQ2l0eQ== 13020\nIG1hcHBpbmc= 13021\nIERFUw== 13022\nIHJlcGFpcg== 13023\ndGljcw== 13024\naXh0dXJl 13025\nIG5vbWJyZQ== 13026\nLklTdXBwb3J0SW5pdGlhbGl6ZQ== 13027\nem8= 13028\nLklzTnVsbE9y 13029\nIENhcm9saW5h 13030\nIERlcg== 13031\nIEVWRU5U 13032\nIGdlc3Q= 13033\nIGhpc3Q= 13034\ncmVzb3VyY2Vz 13035\nIG9ycGhhbg== 13036\nLkFyZQ== 13037\nIEludmVzdA== 13038\nUkVGRVJSRUQ= 13039\nLkxvZ2dlcg== 13040\nIFJvbWFu 13041\nIGN1bHR1cmFs 13042\nZmVhdHVyZQ== 13043\ncHRz 13044\nYnQ= 13045\nIGRvdA== 13046\nIGRpYW0= 13047\ndXNwZW5k 13048\nX2FjY2Vzcw== 13049\nKCl7DQo= 13050\nIHN1cnByaXNl 13051\nYWJpbA== 13052\nIHZpcnQ= 13053\nIGJvbWI= 13054\nYXJvbg== 13055\nX0lT 13056\nIHZhc3Q= 13057\nUmVhbA== 13058\nZXBlbmQ= 13059\naWN0ZWQ= 13060\nIHBpY2tlZA== 13061\nIEZM 13062\nIFJlcHVibGljYW5z 13063\nLnplcm9z 13064\nUHJlc3NlZA== 13065\nc3Vw 13066\nLkNvcmU= 13067\nTWljcm9zb2Z0 13068\nc2VydmljZXM= 13069\nYWdpYw== 13070\naXZlbmVzcw== 13071\nIHBkZg== 13072\nIHJvbGVz 13073\nNDAz 13074\ncmFz 13075\nIGluZHVzdHJpYWw= 13076\nIGZhY2lsaXRpZXM= 13077\nMjQ1 13078\n6KE= 13079\nIG5p 13080\nIGJh 13081\nIGNscw== 13082\nCUI= 13083\nQ3VzdG9tZXI= 13084\nIGltYWdpbmU= 13085\nIGV4cG9ydHM= 13086\nT3V0cHV0U3RyZWFt 13087\nIG1hZA== 13088\nKGRl 13089\nKXsKCg== 13090\nIGZybw== 13091\naHVz 13092\nIGNvbW1pdHRlZQ== 13093\n7J20 13094\nLHg= 13095\nIGRpdmlzaW9u 13096\nKGNsaWVudA== 13097\nKGphdmE= 13098\nb3B0aW9uYWw= 13099\nLkVxdWFs 13100\nIFBoeXM= 13101\naW5ndQ== 13102\nMDMz 13103\nNzIw 13104\nIHN5bmM= 13105\nIE5h 13106\nfX08Lw== 13107\nT0xVTQ== 13108\naXTDqQ== 13109\nIGlkZW50aWZpZXI= 13110\nb3dlZA== 13111\nIGV4dGVudA== 13112\nIGh1cg== 13113\nVkE= 13114\nY2xhcg== 13115\nIGVkZ2Vz 13116\nQ3JpdGVyaWE= 13117\nIGluZGVlZA== 13118\naW5oZXJpdA== 13119\nIE5pZ2h0 13120\nMzAy 13121\nIHJlcG9ydGluZw== 13122\nIGVuY291bnRlcg== 13123\nIGtpbmRz 13124\nX3ByZWQ= 13125\nIGNvbnNpZGVyaW5n 13126\nLig= 13127\nIHByb3RlaW4= 13128\nVHlw 13129\nZ3JpY3VsdA== 13130\nIEJhbGw= 13131\nQENvbXBvbmVudA== 13132\nIEVzcw== 13133\nIFJ1Yg== 13134\nODAy 13135\ndWxw 13136\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 13137\naXR1ZA== 13138\nLmF0dHI= 13139\naWVudGU= 13140\nIHNwZWxs 13141\nIEpvZQ== 13142\nRU5URVI= 13143\nX2hvc3Q= 13144\naXRhbg== 13145\nIG1hdHRlcnM= 13146\nIGVtZXJnZW5jeQ== 13147\ndWF0ZWQ= 13148\nIENoYXQ= 13149\nPXsn 13150\nY29udHJp 13151\nYXJrZXI= 13152\n5oiQ 13153\naXBlcg== 13154\nIHNjaGVtZQ== 13155\nKHN0ZGVycg== 13156\nICoo 13157\nY2VpdmVy 13158\nLmNvbHVtbg== 13159\nIG1hcmtlZA== 13160\nX0FUVFI= 13161\nIGJvZGllcw== 13162\nIElNUExJRUQ= 13163\nR2Fw 13164\nIFBPU1Q= 13165\nIGNvcnBvcmF0ZQ== 13166\nIGRpbWVuc2lvbg== 13167\nIGNvbnRyYXN0 13168\nZXJ2aWV3 13169\nIEVSUk9S 13170\nIGNhcGFibGU= 13171\nIGFkdmVydGlzaW5n 13172\ndXJjaGFzZQ== 13173\nIFBB 13174\nIEZyYW5jaXNjbw== 13175\nIGZhY2luZw== 13176\n44CM 13177\nZ2l0 13178\nIGJlZXI= 13179\nIHNreQ== 13180\nZG93bmxvYWQ= 13181\nIEN1cg== 13182\nbWM= 13183\nYW5ueQ== 13184\nLmZsb29y 13185\nIGNyaXRlcmlh 13186\nIHBhcnNlSW50 13187\nYCwK 13188\nIGFzcGVjdA== 13189\nIGJ1bmRsZQ== 13190\nQ291bGQ= 13191\nIHRhbms= 13192\nLWlk 13193\nIGh1cnQ= 13194\nIGJyb2FkY2FzdA== 13195\nT0tFTg== 13196\nb3dudA== 13197\nbnVsbGFibGU= 13198\nQ2Fw 13199\nIGFsY29ob2w= 13200\nIENvbGw= 13201\nIEhlbHBlcg== 13202\nIEFm 13203\nLm1ldGhvZA== 13204\nIHBsYW5uZWQ= 13205\ncGxlcg== 13206\nIFNpdGU= 13207\nIHJlc2M= 13208\nb21lbnQ= 13209\nIEphdmFTY3JpcHQ= 13210\nU0VSVkVS 13211\nIHJocw== 13212\nZXJlcw== 13213\nKCIs 13214\naWZp 13215\nLmZpZWxkcw== 13216\nIHBhcmtpbmc= 13217\nIGlzbGFuZA== 13218\nIHNpc3Rlcg== 13219\nXwo= 13220\nQ29uc3RyYWludHM= 13221\nIEF1c3Q= 13222\nZGlt 13223\nX3BvaW50cw== 13224\nIGdhcA== 13225\nX2FjdGl2ZQ== 13226\nIHZvb3I= 13227\nIFBP 13228\nQmFn 13229\nLXNjYWxl 13230\nbGFtYmRh 13231\nLkRpc3Bvc2U= 13232\ncnVsZQ== 13233\nIG93bmVk 13234\nIE1lZGljYWw= 13235\nMzAz 13236\nZW50cmllcw== 13237\nIHNvbGFy 13238\nIHJlc3VsdGluZw== 13239\nIGVzdGltYXRlZA== 13240\nIGltcHJvdmVk 13241\nRHVyYXRpb24= 13242\nZW1wbG95ZWU= 13243\nJC4= 13244\nQWN0aW9ucw== 13245\nTGlrZQ== 13246\nLCg= 13247\nKFJlcXVlc3Q= 13248\nJXM= 13249\nLk9wZW4= 13250\nKSIK 13251\nIHBpeGVs 13252\nIGFkYXB0ZXI= 13253\nIHJldmVudWU= 13254\nb2dyYW0= 13255\nIExB 13256\nIE1hY2hpbmU= 13257\nINin 13258\nIGZsZQ== 13259\nIGJpa2U= 13260\nSW5zZXRz 13261\nIGRpc3A= 13262\nIGNvbnNpc3RlbnQ= 13263\nYcOnw6Nv 13264\nZ2VuZGVy 13265\nIFRob3Nl 13266\ncGVyaWVuY2U= 13267\nLkJhY2tDb2xvcg== 13268\nLnBsYXk= 13269\nIHJ1c2g= 13270\nIGF4aW9z 13271\nIG5lY2s= 13272\nX21lbQ== 13273\nLlBSRUZFUlJFRA== 13274\nX2ZpcnN0 13275\nQ0I= 13276\nIFdpZGdldA== 13277\nIHNlcQ== 13278\naGFy 13279\nIGhpdHM= 13280\nIOKCrA== 13281\nIGNvbnRhaW5lZA== 13282\ncmllbnQ= 13283\nd2F0ZXI= 13284\nTE9BRA== 13285\nIFZpcmdpbmlh 13286\nIEFybQ== 13287\nIC4v 13288\nwrs= 13289\nX3Jvb3Q= 13290\nIGFzc2lzdGFuY2U= 13291\nW10s 13292\nc3luYw== 13293\nIHZlZ2V0 13294\nZXNjYXBl 13295\naWNlcg== 13296\nYm9vc3Q= 13297\nIEZsb2F0 13298\nLVc= 13299\nKi8NCg== 13300\nKj4= 13301\nMjE4 13302\nICQoIi4= 13303\nLnBvcw== 13304\nIGJveXM= 13305\nIHdlZGRpbmc= 13306\nIGFnZW50cw== 13307\nPSJf 13308\nIEFybXk= 13309\nIGhpbnQ= 13310\ndmlzaW9u 13311\nIHRlY2g= 13312\nIENvbm5lY3Q= 13313\nIGxlZ2VuZA== 13314\nIEJldA== 13315\nLkJhc2U= 13316\nU3ViamVjdA== 13317\nIGxpdA== 13318\nUmVtb3Zl 13319\nICI6 13320\nIEZpbmFs 13321\ncGVhcmFuY2U= 13322\nIGlUdW5lcw== 13323\nIHBhcnRpY2lwYW50cw== 13324\nIFB5dGhvbg== 13325\nIGJ1c3k= 13326\naWVs 13327\ndmVydGljZXM= 13328\nIHRlbXBsYXRlVXJs 13329\nIENsb3Nl 13330\nSW1n 13331\nIENvcnBvcmF0aW9u 13332\ndGltZXN0YW1w 13333\nIGV4dGVuZA== 13334\nIHdlYnNpdGVz 13335\nIHBvc3NpYmlsaXR5 13336\n0L7Rgg== 13337\nIGvDtg== 13338\nIG1lYXQ= 13339\nIHJlcHJlc2VudGF0aW9u 13340\nMjQx 13341\nIAkJ 13342\nX1NUQVJU 13343\nLmFwcGx5 13344\nIFZhbGxleQ== 13345\nIFN1Y2Nlc3M= 13346\nSGk= 13347\nIG5vYg== 13348\nIElFbnVtZXJhYmxl 13349\nX3NlbGVjdA== 13350\nZ2Vv 13351\nLiIpCg== 13352\nIHR1cm5pbmc= 13353\nIGZhYnJpYw== 13354\nKCIiKTsK 13355\nIHBlcnNwZWN0aXZl 13356\n6Zc= 13357\nIFNu 13358\nVGhhbms= 13359\nO2o= 13360\nLlBhcmFtZXRlcnM= 13361\nCSAgICAgICAgICAg 13362\nIGZhY3Rz 13363\nMzA1 13364\nIHVudA== 13365\nLmluc3RhbmNl 13366\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 13367\nLWVuZA== 13368\nIEpPSU4= 13369\nIEhlbg== 13370\nIHVyaQ== 13371\n5ZCN 13372\nINC90LA= 13373\nIEluZm8= 13374\nIGNvbmR1Y3RlZA== 13375\nIMOl 13376\nT1VSQ0U= 13377\nIHdpbmU= 13378\nSm9obg== 13379\nLkVycm9yZg== 13380\nIEFnZQ== 13381\nb3VuZGVk 13382\nIHJlYWxpemU= 13383\nMzEy 13384\nIF07 13385\nIHN1YnNlcXU= 13386\nLG0= 13387\nKFVzZXI= 13388\naWFubw== 13389\nIGFjY29tcGw= 13390\naXNw 13391\nLnN0ZA== 13392\n6Yc= 13393\nIEJlZA== 13394\nLnNldEF0dHJpYnV0ZQ== 13395\nQlI= 13396\na2VlcA== 13397\nIEFMTA== 13398\nIGlzb2w= 13399\nYW1tYQ== 13400\nUGFja2FnZQ== 13401\nIG9jY2FzaW9u 13402\nLXN1Y2Nlc3M= 13403\n0LXQtA== 13404\nIExJTUlURUQ= 13405\nc3RyaXA= 13406\nKCkKCgo= 13407\naXN0cmlidXRpb24= 13408\nQ29sb3Jz 13409\nICs6Kw== 13410\nRGlkTG9hZA== 13411\nYWxlcg== 13412\nIHRpZA== 13413\nIExFRA== 13414\nIExpbmtlZA== 13415\nIENhcnQ= 13416\nKCkpDQo= 13417\nX1JFQUQ= 13418\nIGtpbGxpbmc= 13419\nIFBIUA== 13420\nZmVjdGlvbg== 13421\nIGluc3RhbmNlcw== 13422\nY3Y= 13423\nIi8+ 13424\nIHNm 13425\nIHRheGVz 13426\nX2xvY2F0aW9u 13427\nIEJpdGNvaW4= 13428\ndWFibGU= 13429\ncmFuaw== 13430\naWdub3Jl 13431\ndHJhY2s= 13432\n0LrQsA== 13433\nIHNob3VsZG4= 13434\nIE9Q 13435\nPT57Cg== 13436\nIGtt 13437\nIGhlbHBlcg== 13438\nX2hlYWQ= 13439\nIFdoZXRoZXI= 13440\nb2Nv 13441\nX2Js 13442\nIHN0YXRpc3RpY3M= 13443\nIGJlYXV0eQ== 13444\nIHRvZw== 13445\ndGlw 13446\n64uk 13447\nIGNzdg== 13448\nKHNxbA== 13449\nc3RkbGli 13450\nd2Vhaw== 13451\nIGxpa2Vz 13452\nxI0= 13453\nIHJlcGVhdA== 13454\nIGFwYXJ0bWVudA== 13455\nIGVtcGg= 13456\nX2VkaXQ= 13457\nIHZpdA== 13458\nCXR5cGU= 13459\nMjE3 13460\nRXZlbg== 13461\ndXRlbg== 13462\nIGNpcmN1bXN0YW5jZXM= 13463\nYmlhbg== 13464\nIHN1Z2Fy 13465\nV2luZG93cw== 13466\n7J4= 13467\nIG9ic2VydmVk 13468\nL2RhdGE= 13469\nIGNhbGVuZGFy 13470\nIHN0cmlrZQ== 13471\nIFJFUw== 13472\nX3Nj 13473\nZm9ueQ== 13474\nb3JlbQ== 13475\nKHo= 13476\ncG93ZXI= 13477\nZXRlY3Q= 13478\nIFNhdA== 13479\nLmRlc2NyaXB0aW9u 13480\nIGdhbmc= 13481\nIFNwb3J0cw== 13482\nb25ncw== 13483\nIEJ1bmRsZQ== 13484\nLnN1bQ== 13485\nb25jZQ== 13486\nIGFjY3VzZWQ= 13487\nIGV4cGxvcmU= 13488\nIGFwcHJveGltYXRlbHk= 13489\nIGxvc2luZw== 13490\ndGhlc2lz 13491\nIEZ1bmQ= 13492\nIGRpYWdu 13493\nQXV0b3dpcmVk 13494\ncHJvcGVydGllcw== 13495\nIF8u 13496\nIGNudA== 13497\nY2VkdXJl 13498\nIHl5 13499\nIGdyYW50 13500\nc29jaw== 13501\nLmlubmVySFRNTA== 13502\nIF0pOwo= 13503\nIENPTkZJRw== 13504\nPSck 13505\nNTUw 13506\nXV07Cg== 13507\nVU5E 13508\nIGdsb2I= 13509\nIGRpcmU= 13510\ndWZmbGU= 13511\nX01FTQ== 13512\nIGF1dGhlbnRpYw== 13513\nPigi 13514\nIGRlY2FkZQ== 13515\nIEltcG9ydA== 13516\nIG9yaWdpbmFsbHk= 13517\nIGpRdWVyeQ== 13518\nIGluZGljYXRl 13519\nIG91cnNlbHZlcw== 13520\nU3c= 13521\nLmxibA== 13522\nZW5lcmF0ZQ== 13523\nIGJhc2ljYWxseQ== 13524\nIEhvbQ== 13525\nICsjKw== 13526\nIEJyaXRhaW4= 13527\nIEthcg== 13528\ndG9FcXVhbA== 13529\nLnN0b3A= 13530\nIG1vZGFs 13531\naXNp 13532\nIHN1Z2dlc3Rz 13533\nIGR0eXBl 13534\nIHR1cg== 13535\nYmY= 13536\nIGNvbm5lY3Rpb25z 13537\nIEJlZm9yZQ== 13538\naXN0ZWQ= 13539\nbW91c2U= 13540\nIHB1bGxlZA== 13541\nLmJ1aWxk 13542\nIGxlZ2lzbGF0aW9u 13543\nIGZvcnRo 13544\ncGFk 13545\nZWdv 13546\nLk5vdw== 13547\nIGV4Y2l0aW5n 13548\nfQoKCgo= 13549\nIGNvbXBy 13550\nIHNoYXJlcw== 13551\nIHJpZw== 13552\nZ3JlZW4= 13553\nX3ZlYw== 13554\nIGVudW1lcmF0ZQ== 13555\nQXV0bw== 13556\naWNhdG9y 13557\nIFJheQ== 13558\nYXNzZQ== 13559\nIGhvbGlkYXk= 13560\nIG51bGxhYmxl 13561\nZ3Vu 13562\nX2RldGFpbHM= 13563\nIHdyYXBwZXI= 13564\nc2Vx 13565\nIFlvdW5n 13566\nanVhbmE= 13567\nICJfXw== 13568\nbGljZW5zZQ== 13569\nc2VydmU= 13570\nXig= 13571\naWRlcnM= 13572\nLlJlbW92ZQ== 13573\ncm9wZG93bg== 13574\nJ1M= 13575\ncGlu 13576\nKHRva2Vu 13577\nLkRlZmF1bHQ= 13578\nIHJlYXNvbmFibGU= 13579\nYW1waW9u 13580\nIFNvY2lldHk= 13581\nIGJlaQ== 13582\nZXJ2ZXM= 13583\ncmFk 13584\nIEZveA== 13585\nX2ltYWdlcw== 13586\nIHdoZWVs 13587\nJylb 13588\nIGNmZw== 13589\nKEJ5 13590\nQ29uc3RydWN0b3I= 13591\nIHZhcnk= 13592\nLnN3aWZ0 13593\nIHByb3h5 13594\nCUg= 13595\nIEFub3RoZXI= 13596\nIFBlbg== 13597\nIGNoZWNraW5n 13598\nIGplc3Q= 13599\nbWFuYWdlcg== 13600\nT3JpZ2lu 13601\ndWdz 13602\nb2ly 13603\nPjwhLS0= 13604\nIGV4cHJlc3NlZA== 13605\nIG1vZGVy 13606\nIGFnZW5jaWVz 13607\nIGlo 13608\nLWhpZGRlbg== 13609\naW91c2x5 13610\nIFJvZA== 13611\nIHNvbGU= 13612\nTWVk 13613\nLkFueQ== 13614\nIHBj 13615\nYmFs 13616\nRXhhbXBsZQ== 13617\nIFNhbGU= 13618\nIHN0cmlw 13619\nIENvbXA= 13620\nIHByZXNpZGVudGlhbA== 13621\nTW9zdA== 13622\ncHV0YXRpb24= 13623\nKHJlZg== 13624\nIEZvdXI= 13625\nX2ZpbGVuYW1l 13626\nIGVuZm9yY2VtZW50 13627\n2K8= 13628\nIEdlb3Jn 13629\nd2VpZ2h0cw== 13630\nL2w= 13631\nIGFnZ3Jlc3M= 13632\nIGRyYXdpbmc= 13633\nYW5keQ== 13634\nPEk= 13635\nLWo= 13636\nYWth 13637\naHJlZg== 13638\nIHRlYWNoZXJz 13639\nX1E= 13640\nKGl0 13641\nIE1C 13642\nIHRlbXBvcmFyeQ== 13643\naXJlYmFzZQ== 13644\nc3RyYQ== 13645\n5pe2 13646\n6LQ= 13647\nKGxhYmVs 13648\nb3Vw 13649\nIHRvcGljcw== 13650\nIHBvcnRpb24= 13651\naWRvcw== 13652\nIEpld2lzaA== 13653\nIHJlY292ZXJ5 13654\nNjUw 13655\nIHN0YW5kcw== 13656\nI1s= 13657\nIGFmdGVybm9vbg== 13658\nIEFydGljbGU= 13659\nX2F0dA== 13660\nIGV4cGxhbg== 13661\nIFBhaw== 13662\nLnNldE9uQ2xpY2tMaXN0ZW5lcg== 13663\nLmNoaWxkcmVu 13664\nIGlr 13665\nKyg= 13666\nbGFn 13667\nIGRpc2s= 13668\nIGNvbnRyb3ZlcnM= 13669\nIj4m 13670\nYXNw 13671\nIHdpZQ== 13672\nIEF1c3RyYWxpYW4= 13673\nIFlvdVR1YmU= 13674\nQXR0cg== 13675\nY29udGFpbnM= 13676\nZHVjZQ== 13677\nIE1hdHQ= 13678\nMzQw 13679\nYXRlcm4= 13680\nIHZvbHVudGU= 13681\nIG5ld3Nw 13682\nVlA= 13683\nb2x0aXA= 13684\nIGRlbGVnYXRl 13685\nX21ldGE= 13686\nIGFjY3VyYXRl 13687\nIEV4YW1wbGU= 13688\nJSw= 13689\nIERhaWx5 13690\nIGNhYmlu 13691\nIFNX 13692\nIGxpbWl0cw== 13693\na2lw 13694\nIGFybXk= 13695\nIGVuZGluZw== 13696\nIGJvc3M= 13697\nIERpYWxvZw== 13698\nQWxzbw== 13699\nPSIjIg== 13700\nb3JkYW4= 13701\ncm93c2U= 13702\nLW1pbg== 13703\nICIm 13704\nX2xvYw== 13705\nVVg= 13706\nIGRldmVsb3BlcnM= 13707\nIGFjY3VyYWN5 13708\nIG1haW50ZW5hbmNl 13709\nIGhlYXY= 13710\nIGZpbHRlcnM= 13711\nLlRvb2xTdHJpcA== 13712\nIG5hcnI= 13713\nIEVtcA== 13714\nT1JERVI= 13715\nIE1vYmlsZQ== 13716\nLlNlcmlhbA== 13717\nLm91dHB1dA== 13718\nMjQ0 13719\nLmNvbA== 13720\nTWF0ZXJpYWw= 13721\ndW1h 13722\nIGNvbnN1bWVycw== 13723\nc2hpZnQ= 13724\nIHB1ZWQ= 13725\nIG1pbmk= 13726\nY29sbGVjdGlvbg== 13727\nIGthbg== 13728\nLmNlbnRlcg== 13729\nSGlzdG9yeQ== 13730\nIGJlbmNo 13731\nKCkpOw== 13732\naXRvcmllcw== 13733\nIGNyb3dk 13734\nX2NhbGw= 13735\nIHBvd2Vycw== 13736\nLUU= 13737\nIGRpc21pc3M= 13738\nIHRhbGtz 13739\nIENoYW5uZWw= 13740\nZm9yd2FyZA== 13741\nX2NvbnRyb2w= 13742\nL3NyYw== 13743\naWVzdA== 13744\nKioqKioqKioqKioqKioqKioqKioqKioq 13745\nIGJldGE= 13746\nKGNvbG9y 13747\nX09CSkVDVA== 13748\nIEFwaQ== 13749\nIGVmZmVjdGl2ZWx5 13750\nQ2FtZXJh 13751\nc2Q= 13752\ndXNzeQ== 13753\nMjkw 13754\nRGljdA== 13755\nIEVmZmVjdA== 13756\naWJpbGl0aWVz 13757\nIHJldHVybmluZw== 13758\nIEZhcg== 13759\nICcnKQ== 13760\nIG1vZHVsZXM= 13761\nMjE5 13762\naWxhdGlvbg== 13763\nICgl 13764\nVFJHTA== 13765\nIHN0b3Jt 13766\nb25uYQ== 13767\nIEVYUA== 13768\nIHNwb25z 13769\nIGRpc3Bs 13770\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 13771\nZmFsbA== 13772\n5Yw= 13773\naWduS2V5 13774\nX1VT 13775\nZXRyaWNz 13776\nIGhhbmRsZXM= 13777\nVEw= 13778\nX2Ftb3VudA== 13779\nb3dh 13780\nYnJhbmQ= 13781\nIFRvb2w= 13782\nIHVzdWFs 13783\nLlo= 13784\nY3JlbWVudA== 13785\nYWRpdW0= 13786\nc3RvY2s= 13787\nIHNlcnZpbmc= 13788\nIEJvbg== 13789\nIGxpbmVhcg== 13790\nIFRhcmdldA== 13791\nIFJhZGlv 13792\nSEw= 13793\nU2hhZGVy 13794\nb21hdGlj 13795\nYWd1ZXM= 13796\naW5pdHk= 13797\nZGlmZg== 13798\nX2l0ZXJhdG9y 13799\ncXVvdA== 13800\nICwK 13801\nY2FsbGJhY2s= 13802\nIHN5bXB0b21z 13803\nW18= 13804\nIEJ1bA== 13805\nIEZlYg== 13806\ndW5kbw== 13807\nX2FjY291bnQ= 13808\nIHR5cGVkZWY= 13809\n0LjRgQ== 13810\ndHJhcw== 13811\nVXNlcklk 13812\nIFBlbm4= 13813\nIFN1cHJlbWU= 13814\nfT4= 13815\ndXNlcklk 13816\nMzI3 13817\nIEtpbQ== 13818\nIGdh 13819\nIGFydGlzdHM= 13820\n5bg= 13821\nIEFic3RyYWN0 13822\nb2tlbW9u 13823\nIGhhbQ== 13824\nb3ZhbA== 13825\nIGNoYQ== 13826\nYXRlbg== 13827\n5YY= 13828\nRml4ZWQ= 13829\nIHZ1bG5lcg== 13830\nIFBhcmFtZXRlcnM= 13831\ncXVhbnRpdHk= 13832\nLkNsZWFy 13833\nU2VydmxldFJlcXVlc3Q= 13834\nIHlh 13835\nIHNvdWw= 13836\nMDgw 13837\ndHJhbnNhY3Rpb24= 13838\nIHNvbG8= 13839\nIHBhaXJz 13840\n5pQ= 13841\nIEdyZQ== 13842\nX3dvcmQ= 13843\nIEND 13844\nIGdp 13845\nemll 13846\nIHNjaGVkdWxlZA== 13847\ncm90YXRpb24= 13848\nZ3lwdA== 13849\ndWxvdXM= 13850\nOjpf 13851\nIEVsbA== 13852\nPCE= 13853\nCQkgIA== 13854\nbHA= 13855\nYWhh 13856\nQ29weXJpZ2h0 13857\nMDA5 13858\nIGRyYW0= 13859\nMjUx 13860\nIGRpYWdyYW0= 13861\nIE1lbQ== 13862\nIGdhcmRlbg== 13863\nQ29tcA== 13864\nIGF0dGVtcHRz 13865\ndWZmaXg= 13866\nPigp 13867\nIHBoaWxvc29waA== 13868\nX3JlbA== 13869\n5bw= 13870\nIHN2 13871\nLnNlY29uZA== 13872\nYW50bw== 13873\nLkpzb24= 13874\nIFRlbGU= 13875\nX2xvY2Fs 13876\nX3NlbmQ= 13877\nIGFzcGVjdHM= 13878\n7Jc= 13879\nSUJMRQ== 13880\nIHJhaWw= 13881\nIHdpZGVseQ== 13882\nYXNoZWQ= 13883\naWFy 13884\naW5m 13885\ndXBwZXI= 13886\nZGphbmdv 13887\nX3Jlc3VsdHM= 13888\naXNzaW5n 13889\nIGVxdWl2YWxlbnQ= 13890\nT1VORA== 13891\nIHR5 13892\nIHBvdGVudGlhbGx5 13893\nQWR2ZXJ0aXNlbWVudA== 13894\nMjM4 13895\nIFJlY29yZA== 13896\nMzgw 13897\ncmVzZW50YXRpb24= 13898\nX3dpZGdldA== 13899\nb3VuZGluZw== 13900\nIHJlbGlnaW9u 13901\nIGNvbnNj 13902\nIExpbQ== 13903\nLmFt 13904\nSHRtbA== 13905\nICc6 13906\nUEFUSA== 13907\nX3NwZWM= 13908\nb3J0ZWQ= 13909\naWRhZGVz 13910\nX3NoYXBl 13911\nIGtlZXBz 13912\nLlNhdmU= 13913\nIExvYw== 13914\nb3Jp 13915\nIFRFU1Q= 13916\ndW5pY2lw 13917\nIHJlZ2lvbnM= 13918\nIGJlbGlldmVz 13919\nL2Vu 13920\ncG9zaXRl 13921\neyc= 13922\ncHJlcGFyZQ== 13923\nX2NvbnN0 13924\nc2FtcGxl 13925\nIFdpbGxpYW1z 13926\nIHN0cnQ= 13927\nX0dldA== 13928\nIEFuZHJldw== 13929\nLmFjdGl2ZQ== 13930\nIGxheWVycw== 13931\nVmlzdWFsU3R5bGU= 13932\nYXp5 13933\nIEtu 13934\nIGFjaWQ= 13935\nIEFzaWE= 13936\nIGV4Y2Vzcw== 13937\nCW15 13938\nIGtleWJvYXJk 13939\nZW5zdXM= 13940\nIGNyZXc= 13941\nIG1pc3NlZA== 13942\nbWFzdGVy 13943\nIFdpbGQ= 13944\nIG5ld2x5 13945\nIHdpbm5lcg== 13946\nIHN0dWI= 13947\naWNvZGU= 13948\nLm1vdmU= 13949\nRG9tYWlu 13950\nIFNhcg== 13951\nIGZvcmVzdA== 13952\nTEVE 13953\nY2xhaW1lcg== 13954\nLmV4aXQ= 13955\nIFdpbmRvdw== 13956\nIHJlc2lzdGFuY2U= 13957\nIENIRUNL 13958\nKCIt 13959\nIFJ5YW4= 13960\nIHBpcGU= 13961\nIGNvYXN0 13962\nREVG 13963\nLy8h 13964\nX29mZg== 13965\nZXhpdA== 13966\nIHVsdGltYXRlbHk= 13967\naW1pdGl2ZQ== 13968\nIEtlZXA= 13969\nIGhpc3RvcmljYWw= 13970\nIGFueXdheQ== 13971\nIEphY2tzb24= 13972\nb2NrZXI= 13973\nRVJO 13974\nIFVJTlQ= 13975\neW50YXg= 13976\nRVJZ 13977\naXNtcw== 13978\nIGNu 13979\nIG9jY3Vycw== 13980\nIDs7 13981\nVGV4dFZpZXc= 13982\nQUU= 13983\nL2ltZw== 13984\nIHllc3RlcmRheQ== 13985\nLWRlZmF1bHQ= 13986\nIHRpbnk= 13987\nIHByb2M= 13988\nIGFsaXZl 13989\nIFJFRw== 13990\nLnRo 13991\nZWFyaW5n 13992\nLmdldExvZ2dlcg== 13993\nPGxpbms= 13994\nX2xvZ2lu 13995\nRm9sZGVy 13996\nYWJj 13997\nbHlwaGljb24= 13998\n0L3Qvg== 13999\nIG5vdGljZWQ= 14000\nb2RpZ28= 14001\nIGVkaXRpb24= 14002\naW1hdG9y 14003\nLkVuYWJsZWQ= 14004\nLnBhcnNlSW50 14005\nIHlhcmRz 14006\nCQkJCQkJCQkJCQkJ 14007\nIHZlcmJvc2U= 14008\n0LvRjw== 14009\nX0JZ 14010\nLmxvZ2lu 14011\nLio7Cg== 14012\nIE1pZA== 14013\nw6llcw== 14014\nIGdsbw== 14015\nIGJ1aWxkaW5ncw== 14016\nIHpl 14017\nIEl0ZXI= 14018\nIHR1YmU= 14019\nIFBvdA== 14020\nXE0= 14021\nMjUz 14022\nPHRo 14023\nYnJpZGdl 14024\nIFNjcmlwdA== 14025\nIE1vZHVsZQ== 14026\nIHZhY2M= 14027\nIGluc3RhbGxhdGlvbg== 14028\ndnk= 14029\nVmlzdWFsU3R5bGVCYWNrQ29sb3I= 14030\nIFNN 14031\nLnRvdGFs 14032\nNjQw 14033\nYmF0 14034\nIGZpbmRz 14035\nIGF0bW9z 14036\nU3Vidmlldw== 14037\naXphcmQ= 14038\nIHJlcGxhY2VtZW50 14039\nbGljYXRlZA== 14040\nYXBpcw== 14041\nIGxvZ2dlZA== 14042\nIExlZnQ= 14043\nR3Vp 14044\nX1R5cGU= 14045\ndG0= 14046\nUGFk 14047\nIGhvdXNlaG9sZA== 14048\nIHJlbGU= 14049\nIHByb3Bvc2Fs 14050\nX0NMQVNT 14051\nMjQz 14052\nOjo6Og== 14053\nIGluZnJhc3RydWN0dXJl 14054\nSW5qZWN0 14055\nL2h0bWw= 14056\nMjI2 14057\nIGFkcw== 14058\naXp6YQ== 14059\nIG1n 14060\nY3RyaW5l 14061\nJQo= 14062\nPGh0bWw= 14063\nLWltYWdl 14064\nIGF0dG9ybmV5 14065\nPG0= 14066\nKCcs 14067\nIGNhbm4= 14068\nIHByaW50bG4= 14069\nb29zZQ== 14070\nIHllbGxvdw== 14071\nLmV4cA== 14072\ncGF5bWVudA== 14073\nIHRhYmxlVmlldw== 14074\nYXdheQ== 14075\nIG9wcG9zaXRpb24= 14076\nIEFnYWlu 14077\nIEhhbmRsZQ== 14078\nIGV4Y2x1c2l2ZQ== 14079\naW5hcg== 14080\nw6ly 14081\n0L7QsQ== 14082\nIENPREU= 14083\nZW1wb3Jhcnk= 14084\nIHJlYWN0 14085\ncGlwZQ== 14086\nMjM2 14087\nY3o= 14088\nLmFjdGl2aXR5 14089\nIGxhcmdlbHk= 14090\nIGRpc3M= 14091\nYXh5 14092\nZXNpcw== 14093\nIFJlbg== 14094\nIGNvcm4= 14095\nLlVzZVZpc3VhbFN0eWxlQmFja0NvbG9y 14096\nZGF5cw== 14097\nIGZydWl0 14098\nSW5zZXJ0 14099\nX2VuYw== 14100\nRXN0 14101\nX2RlYw== 14102\nIEx1Yw== 14103\nIMO8YmVy 14104\ncGFyYW1ldGVycw== 14105\nUEVSVA== 14106\nZXhwcmVzcw== 14107\nX3Byb2ZpbGU= 14108\nVW5rbm93bg== 14109\nIHJldm9sdXRpb24= 14110\nLmFkZHJlc3M= 14111\nX3JlcXVpcmU= 14112\nIHVuaWZvcm0= 14113\nIFBhY2s= 14114\nbGFy 14115\nIFVJVGFibGVWaWV3 14116\nIGRlcGVuZHM= 14117\nVmFsaWRhdGlvbg== 14118\nY29uZmlybQ== 14119\nT3duZXI= 14120\nIHRyaWI= 14121\naGV0 14122\nIElkZQ== 14123\nYW5zYXM= 14124\nMjQ3 14125\nTGFuZ3VhZ2U= 14126\ndWV0 14127\nIFBv 14128\nIFN0ZXZl 14129\nIGNvbnRlc3Q= 14130\nX0RFRkFVTFQ= 14131\nIGFwcGFyZW50bHk= 14132\nUkVFTg== 14133\nIGZyZXF1ZW50bHk= 14134\nIHRyYWRpdGlvbg== 14135\nb2NvbGF0ZQ== 14136\nU0k= 14137\nIEFyZ3VtZW50 14138\nRm9jdXM= 14139\nZXJ0ZQ== 14140\nIExheW91dA== 14141\nIGR4 14142\nIGdlbmVyYXRvcg== 14143\nIFdhaXQ= 14144\nUG9saWN5 14145\nbGlnaHRz 14146\nLkV4ZWN1dGU= 14147\nNTU1 14148\nUHk= 14149\nIGJlZHJvb20= 14150\nZWRh 14151\ncmFpZA== 14152\nCXNpemU= 14153\nIGFuY2llbnQ= 14154\nIHB1bXA= 14155\nIGR3 14156\nICghKA== 14157\nIHNwZWNpZnk= 14158\nKHN0YXR1cw== 14159\nIEZCSQ== 14160\nLmV4Y2VwdGlvbg== 14161\nIHJlbWFyaw== 14162\nbHltcA== 14163\nYW50ZWU= 14164\nVXBsb2Fk 14165\nZXJuZXQ= 14166\n6aE= 14167\naW5lbnQ= 14168\nIFJlbmRlcg== 14169\nZG0= 14170\nIE1lbW9yeQ== 14171\ncmljaA== 14172\nIFRvb2xz 14173\nIGtuZQ== 14174\nIHBlcm0= 14175\nYmFk 14176\nIGRpbm5lcg== 14177\nLnJlc2V0 14178\nIGpMYWJlbA== 14179\nRmVhdHVyZQ== 14180\nLlNlcnZpY2U= 14181\nICh7Cg== 14182\nIHJlZmVycmVk 14183\nLmNsYXNzTGlzdA== 14184\nMjQ4 14185\nIGluaXRXaXRo 14186\nIFRleHRWaWV3 14187\nIG5laXRoZXI= 14188\nIGNvdW50eQ== 14189\nICJ7 14190\n56c= 14191\nIHRhY2s= 14192\nY2xhc3NOYW1l 14193\nIFVTRVI= 14194\nIHJlbmV3 14195\nYGA= 14196\nZ2V0TmFtZQ== 14197\nIGJyb3du 14198\nRXJyb3Jz 14199\nZXJ0bw== 14200\nIHN1c3RhaW4= 14201\nU08= 14202\nbGV0ZXM= 14203\nIEludmFsaWQ= 14204\nMjQ2 14205\nMjI3 14206\nIGVuZW1pZXM= 14207\ndW5nZQ== 14208\nIGV4aXN0ZW5jZQ== 14209\nZXJyYQ== 14210\nCiAgCg== 14211\ndXRvcmlhbA== 14212\nI2E= 14213\ncGF5 14214\nY2hhcmdl 14215\nIElyZQ== 14216\nYXRlc3Q= 14217\nIGV4cGxvcw== 14218\nIGZpcmVk 14219\nTkVS 14220\nIFR5 14221\naWNpb24= 14222\nVXJp 14223\nIG9idmlvdXNseQ== 14224\nIENvbHVt 14225\nICcr 14226\nIERldmljZQ== 14227\nLXJlbGF0ZWQ= 14228\nX0FSRw== 14229\nIHZvcg== 14230\nIExlc3Nlcg== 14231\nX09Q 14232\nU2VyaWFsaXplcg== 14233\nIHVwZ3JhZGU= 14234\nTGlnaHQ= 14235\nIGNvZGVz 14236\nKys7DQo= 14237\nIHdyaXRlcw== 14238\nZm9vZA== 14239\nIMOpdA== 14240\nQHNlY3Rpb24= 14241\nIHRyYWNrcw== 14242\nIHNlcmlvdXNseQ== 14243\nY2h0 14244\nNDMw 14245\nKHNpemVvZg== 14246\nIGltbWVkaWF0ZQ== 14247\nIHNjaWVudGlzdHM= 14248\nIHsk 14249\nX25l 14250\nLkFuY2hvclN0eWxlcw== 14251\nIGFjY29tbW9k 14252\nIEhhcnJ5 14253\nIHNpZ2h0 14254\nIFBhbGVzdA== 14255\nZXJzaXN0ZW50 14256\nINGD 14257\nLWlucHV0 14258\nIGNvb3JkaW5hdGVz 14259\nwrc= 14260\nMjI4 14261\nV2VsY29tZQ== 14262\nLmNvbmY= 14263\nIGdyZXc= 14264\nIGJvbGQ= 14265\nIENQVQ== 14266\nKG15 14267\nIHBlcmZlY3RseQ== 14268\nIG1vbWVudHM= 14269\nIE1vdmll 14270\nLWRhdGE= 14271\neXN0YWw= 14272\nX1dJRFRI 14273\nMjYy 14274\nIFNjcmVlbg== 14275\n5p0= 14276\nIGRpc2Fw 14277\nIHJlZHVjdGlvbg== 14278\nLkdldENvbXBvbmVudA== 14279\nX01PRFVMRQ== 14280\nIGdlbmVyaWM= 14281\nIGR5 14282\nYWxsZXI= 14283\nIGN1cmw= 14284\nIEJvZHk= 14285\nIGJhbmtz 14286\nLHQ= 14287\nYXZn 14288\nIGV2aWw= 14289\nIG1hbnVmYWN0dXJlcg== 14290\nIHJlY2VpdmVy 14291\nQ29sdW1ucw== 14292\nIGluZ3JlZGllbnRz 14293\nCW91dA== 14294\ncXVlcw== 14295\nLkxvYWQ= 14296\nIHNsb3dseQ== 14297\nIFRvd24= 14298\nIENlbGw= 14299\nX25vcm1hbA== 14300\nX3ByZWZpeA== 14301\nIEFsZXJ0 14302\nKCJ7 14303\nw6Ry 14304\n4oCcVGhl 14305\nIE1E 14306\nIGNvdXJzZXM= 14307\nYXRoYW4= 14308\n6Zk= 14309\nb2Nj 14310\nIFNFUg== 14311\nZXNpZ24= 14312\nQWRkcg== 14313\nPVsn 14314\nKCIuLw== 14315\nXX0= 14316\nLmZvbnQ= 14317\nIEluc3RhZ3JhbQ== 14318\nIEJvcmRlcg== 14319\nb2Rh 14320\nIGhhbGw= 14321\nIHJ1bQ== 14322\nX2JpdA== 14323\nIHNhdmluZw== 14324\nX2Rvd24= 14325\nUmFuZG9t 14326\nX3JlZ2lzdGVy 14327\nKENvbnRleHQ= 14328\nIG9wcG9zaXRl 14329\nUm9vbQ== 14330\nWUVT 14331\n0LDQvdC4 14332\nIGVuam95ZWQ= 14333\nX3J1bg== 14334\nQ2xlYXI= 14335\n4oCY 14336\nIEZvcmQ= 14337\nb25pYw== 14338\nb3N0ZW4= 14339\nIl0p 14340\nX2F1dGg= 14341\nLy8NCg== 14342\nIHN1ZmZpY2llbnQ= 14343\nTEVT 14344\nIHBoZW4= 14345\nIG9o 14346\nX2Nzdg== 14347\nIHJvdXRpbmU= 14348\nLkFyZUVxdWFs 14349\nYXlsb3I= 14350\nIGJhc2tldA== 14351\nX0NPTU0= 14352\ncnlwdGVk 14353\nU2lt 14354\nIFNob3A= 14355\nIHN0dWRpbw== 14356\nYXRvcw== 14357\nKFc= 14358\nW3N0cmluZw== 14359\nw6R0 14360\nb2dh 14361\nIHNocg== 14362\nIHNpY2s= 14363\nQW5vdGhlcg== 14364\nIGRvb3Jz 14365\nX05F 14366\nIFRIUkVF 14367\nLm9yZGVy 14368\ncmF6aWw= 14369\nIG1hcHM= 14370\nX1RSVUU= 14371\ndHJhbnNsYXRl 14372\nIG5lYXJieQ== 14373\nMjY1 14374\nIG5hY2g= 14375\nTE9BVA== 14376\nYmF0Y2g= 14377\nMjI5 14378\nIGx1eA== 14379\nYXNoZXM= 14380\nYW5nZXJz 14381\n4oCm4oCm 14382\nX0VWRU5U 14383\nX1VQ 14384\nIGFjdHM= 14385\naW52 14386\nX01FVEhPRA== 14387\nY2Npb24= 14388\nIHJldGFpbg== 14389\ndXRjaA== 14390\nINCx 14391\nIGtub3dpbmc= 14392\nIHJlcHJlc2VudGluZw== 14393\nTk9U 14394\ncG5n 14395\nQ29udHJhY3Q= 14396\nIHRyaWNr 14397\nIEVkaXRpb24= 14398\ndXBsaWNhdGU= 14399\nIGNvbnRyb2xsZWQ= 14400\nY2Zn 14401\namF2YXNjcmlwdA== 14402\nIG1pbGs= 14403\nV2hpdGU= 14404\nU2VxdWVuY2U= 14405\nYXdh 14406\nIGRpc2N1c3NlZA== 14407\nNTAx 14408\nIEJ1c2g= 14409\nIFlFUw== 14410\nLmZhY3Rvcnk= 14411\ndGFncw== 14412\nIHRhY3Q= 14413\nIHNpZA== 14414\nJCQ= 14415\nIEVudW0= 14416\nMjc1 14417\nIGZyYW1lcw== 14418\nfSk7 14419\nIHJlZ3Vs 14420\nJ107DQo= 14421\nUmVnaW9u 14422\nMzIx 14423\nZmZm 14424\nIGNybw== 14425\nKGNvbQ== 14426\nPSIr 14427\nU3R1ZGVudA== 14428\nIGRpc2FwcG9pbnQ= 14429\nUkVTVUxU 14430\nQ291bnRlcg== 14431\nIGJ1dHRlcg== 14432\nIEhh 14433\nIERpZ2l0YWw= 14434\nIGJpZA== 14435\nIj57ew== 14436\naW5nZXJz 14437\nIENvdW50cnk= 14438\nX3RwbA== 14439\nIl0pCg== 14440\nL2s= 14441\nZGF0aW5n 14442\nOiM= 14443\nIERBVEE= 14444\neW5jaHJvbg== 14445\nX2JvZHk= 14446\nb2xseXdvb2Q= 14447\nIHZhbG9y 14448\naXBpZW50 14449\nb2Z0 14450\nVUJM 14451\nZG9jcw== 14452\nIHN5bmNocm9u 14453\nIGZvcm1lZA== 14454\ncnVwdGlvbg== 14455\nIGxpc3Rh 14456\nUmVxdWVzdE1hcHBpbmc= 14457\nIHZpbGxhZ2U= 14458\nIGtub2Nr 14459\nb2Nz 14460\nIns= 14461\nX2ZsYWdz 14462\nIHRyYW5zYWN0aW9ucw== 14463\nIGhhYml0 14464\nIEpl 14465\nZWRlbg== 14466\nIGFpcmNyYWZ0 14467\naXJr 14468\nIEFC 14469\nIGZhaXJseQ== 14470\nLmludGVy 14471\nLkFjdA== 14472\nIGluc3RydW1lbnQ= 14473\ncmVtb3ZlQ2xhc3M= 14474\nLmNvbW1hbmQ= 14475\n0Yk= 14476\nCW1lbQ== 14477\nKG1pbg== 14478\nIG90 14479\nIGNvbGxl 14480\nPXM= 14481\ndGltZW91dA== 14482\nIGlkcw== 14483\nIE1hdGNo 14484\naWpu 14485\nemVybw== 14486\nNDEw 14487\nIG5ldHdvcmtz 14488\nLmdvdg== 14489\nIGludGVs 14490\nIHNlY3Rpb25z 14491\nb3V0aW5l 14492\nKGNtZA== 14493\nKGRpcg== 14494\nIExJQUJJTElUWQ== 14495\nIEJsb2c= 14496\nIGJyaWRnZQ== 14497\nMzA4 14498\nIENW 14499\nY29udmVydA== 14500\nICIpCg== 14501\nIEJlcm4= 14502\nX1BP 14503\nZXZhbA== 14504\nKHNldA== 14505\ndG9vbA== 14506\nIHBheW1lbnRz 14507\nQmVoYXZpb3Vy 14508\nIGNvbmNyZXRl 14509\nIGVsaWc= 14510\nIGFjY2VsZXI= 14511\nIGhvbGU= 14512\nX28= 14513\nVEVHRVI= 14514\nIGdyYXBoaWNz 14515\nT3du 14516\nRm9ybWF0dGVy 14517\nb25kZXI= 14518\nIHBhY2thZ2Vz 14519\nL2E= 14520\nIEtub3c= 14521\nT3JEZWZhdWx0 14522\nIGR1dHk= 14523\nV2FpdA== 14524\n0L3QsA== 14525\nX3JlY29yZA== 14526\nW3Q= 14527\nTWVzaA== 14528\nIG9uZ29pbmc= 14529\nLmJlYW5z 14530\nIHRhbg== 14531\nIGludGVycHJldA== 14532\nYXN0ZXJz 14533\nUVVBTA== 14534\nIGxlZ3M= 14535\nXFJlcXVlc3Q= 14536\nLWZpbGU= 14537\nX211dGV4 14538\nIFNhaW50 14539\nLy8j 14540\nIHByb2hpYg== 14541\nKGluZm8= 14542\nOj0= 14543\nbGludXg= 14544\nIGJsbw== 14545\nb3RpYw== 14546\nCWZpbmFs 14547\nX2V4cA== 14548\nIFN0b3A= 14549\nYXBpbmc= 14550\nKHNhdmVk 14551\nX3B1c2g= 14552\nIGVhc2U= 14553\nX0ZS 14554\ncG9uc2l2ZQ== 14555\nc3RyY21w 14556\nOgoKCgo= 14557\n5Lu2 14558\nb2xp 14559\nIGV4dHJlbWU= 14560\nIHByb2Zlc3Nvcg== 14561\nSW1hZ2Vz 14562\nLklPRXhjZXB0aW9u 14563\nIGFkZHJlc3Nlcw== 14564\ncGxlbWVudGVk 14565\nIGluY29ycG9y 14566\nIHVzZUVmZmVjdA== 14567\nX09G 14568\nIERh 14569\nbm9tYnJl 14570\nSVJTVA== 14571\nIGRpc2NyaW0= 14572\nIGNvbXBlbnM= 14573\nZ3JlZ2F0ZQ== 14574\nYW5jZWxs 14575\nYWNoZXM= 14576\nIENyaXRlcmlh 14577\nJHJlc3VsdA== 14578\nRGVzdHJveQ== 14579\nIHNlY29uZGFyeQ== 14580\nV2F0Y2g= 14581\nIFNlbQ== 14582\nIE1jQw== 14583\nIGFjYWRlbWlj 14584\nVXBwZXI= 14585\nOjp+ 14586\ndXRyYWw= 14587\nIERvZw== 14588\nYWRlZA== 14589\nMjM3 14590\nVmFsaWRhdG9y 14591\nIGRlcml2ZWQ= 14592\nIHNldFRpbWVvdXQ= 14593\nIEtlbg== 14594\nIHR5cGljYWw= 14595\nIEJvYg== 14596\nIGJvdW5kcw== 14597\nIFNlYXNvbg== 14598\nIGNyYXp5 14599\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 14600\nLXJvdXRlcg== 14601\naXR0ZXN0 14602\nIE1pcg== 14603\nIGVtb3Rpb25hbA== 14604\nLHY= 14605\nY24= 14606\nL3N0 14607\n5b0= 14608\nb25vbQ== 14609\nIGRlY2xhcmVk 14610\nPi4= 14611\nYWlsaW5n 14612\nIC8qPDw8 14613\nIG5vcm1hbGx5 14614\nKE1l 14615\nZXZpbg== 14616\nbGlrZWx5 14617\nIHBvaW50ZWQ= 14618\nIFN0YWNr 14619\nIHdhbGxz 14620\nLlZlY3Rvcg== 14621\nbWVhbg== 14622\nXV0K 14623\nIGxpc3RlbmluZw== 14624\nYWR2 14625\nIHN3YXA= 14626\nSUZU 14627\n2Ko= 14628\nLmFyZ3Y= 14629\ndWxz 14630\nPG9wdGlvbg== 14631\nbm90YXRpb25z 14632\nIGVtYWlscw== 14633\nIFVrcg== 14634\nYXN0YQ== 14635\nIFRodXM= 14636\nIFN0b25l 14637\nIGFwcGVhbA== 14638\nLuKAmQ== 14639\nIHJlZ3VsYXRpb25z 14640\nUHJlZmVyZW5jZXM= 14641\nIFBob25l 14642\ndWxm 14643\nIERS 14644\nIHRlY2hub2xvZ2llcw== 14645\nIHBhcmFncmFwaA== 14646\nIG5lY2Vzc2FyaWx5 14647\nMzcw 14648\nMDMw 14649\nLmVhY2g= 14650\nPGZsb2F0 14651\ncmVzYQ== 14652\nIHVuZGVyc3Q= 14653\nIGZpbmdlcg== 14654\ncHJlc3NlZA== 14655\nLWJ5 14656\naWZmZXI= 14657\nd2F0Y2g= 14658\nIEJh 14659\nQUlN 14660\nIHdlaWdodHM= 14661\nIFJvbg== 14662\nJyl9fQ== 14663\nW3NlbGY= 14664\nLS0tLS0tLS0tLQo= 14665\ncGVyaW1lbnQ= 14666\nIHRvU3RyaW5n 14667\neGlj 14668\nIENhbWVyYQ== 14669\nIQoKCgo= 14670\nYXVyYW50 14671\nUHJlZml4 14672\nIGluc3RpdHV0aW9ucw== 14673\nOmludA== 14674\nIGV4cG9zdXJl 14675\ncGF0dGVybg== 14676\nIExpbnV4 14677\nLm51bWJlcg== 14678\ncmVkaWVudA== 14679\nQXJndW1lbnRFeGNlcHRpb24= 14680\nIENoaWVm 14681\nIn0s 14682\nIGVsZWN0cm9uaWM= 14683\ncm9uZw== 14684\nZXJk 14685\nc3BOZXQ= 14686\ncmFpdA== 14687\nLycs 14688\nIE9oaW8= 14689\nQ29udHJvbGxlcnM= 14690\nIGNvbnRpbnVpbmc= 14691\nIFRlbXBsYXRl 14692\nIEV0aA== 14693\nc3o= 14694\nL2Vudg== 14695\nRW52 14696\nJS4= 14697\nYXJ0ZXJz 14698\nKSgo 14699\nIFRBQkxF 14700\nIMOu 14701\ncGVyYXR1cmU= 14702\ncHJvZ3Jlc3M= 14703\nUHJlcw== 14704\n6rA= 14705\naW1wbGVtZW50YXRpb24= 14706\nIGJpZW4= 14707\nIHN0cmVldHM= 14708\nX01TRw== 14709\nTmV3cw== 14710\nIyMj 14711\nOi8= 14712\nIGN1dHRpbmc= 14713\neEI= 14714\ncmVzc2Vk 14715\nX0VOQUJMRQ== 14716\nbGFi 14717\nIGNhdXNpbmc= 14718\nXSkpOwo= 14719\nYnJh 14720\neEZGRkY= 14721\naWxseQ== 14722\ncGxldGlvbg== 14723\nd2lsbA== 14724\nX2Jhcg== 14725\nIHN0cnVjdHVyZXM= 14726\nIEltcA== 14727\n24w= 14728\nIDw+ 14729\nIC0tLS0tLS0tLS0tLS0tLS0= 14730\nX0JVRkZFUg== 14731\nLmRpcg== 14732\nIHBsYWlu 14733\nIHBlZXI= 14734\nMjQ5 14735\nZ2c= 14736\nb2ludHM= 14737\nIHNvbWV3aGF0 14738\nIHdldA== 14739\nIGVtcGxveW1lbnQ= 14740\nIHRpY2tldHM= 14741\naXJtcw== 14742\nIHR1cGxl 14743\nc2lz 14744\nJHNxbA== 14745\ncmln 14746\nIGNvbnZlcnNpb24= 14747\nIGdlcw== 14748\nIGNvbmZpZ3VyZQ== 14749\nZWdy 14750\nIENh 14751\nIF9fKCc= 14752\nb3VzdG9u 14753\nLnRva2Vu 14754\nQmxhY2s= 14755\nIG1hZ2F6aW5l 14756\nQVc= 14757\nLklO 14758\nb3Npbmc= 14759\nIGJyb2tl 14760\nIENydQ== 14761\nREVMRVRF 14762\nIGRlc3Ryb3llZA== 14763\nKE1hdGg= 14764\nIGFwcHJvdmFs 14765\nLWRvbQ== 14766\nIElJSQ== 14767\ndGFibGVWaWV3 14768\nIGRlc2lnbnM= 14769\nIGNydXNoaW5n 14770\nIGNvbnNlbnQ= 14771\nZGlybmFtZQ== 14772\nb21w 14773\nIGNyeXB0 14774\nPyg= 14775\nb3JvdWdo 14776\nMzA3 14777\nLm8= 14778\nCWxpc3Q= 14779\nYW1zdW5n 14780\nLiIiIgo= 14781\nZXJyaW5n 14782\nR29vZ2xl 14783\nX3BhaXI= 14784\nX0lOSVQ= 14785\ncmVtYXJrcw== 14786\nIGdlYXI= 14787\nRmlsbA== 14788\nbGlmZQ== 14789\nfSIpCg== 14790\nIHN1aXRhYmxl 14791\nIHN1cnByaXNlZA== 14792\nX1JFUVVFU1Q= 14793\nIG1hbmlmZXN0 14794\nYXR0ZW4= 14795\nIGZydXN0cg== 14796\nb3ZlbWVudA== 14797\nLmNsaWNr 14798\nIGlp 14799\nIGV4cGFuc2lvbg== 14800\naWdz 14801\nUGFyc2U= 14802\nLlJlZ3VsYXI= 14803\nUm9i 14804\nX2xheW91dA== 14805\n7KA= 14806\nIHRyYW5zbGF0aW9u 14807\nIEJlYXV0 14808\nQmVzdA== 14809\nX0NPTE9S 14810\nPGxhYmVs 14811\nIGxpcXVpZA== 14812\nSVRT 14813\nIHByb2Q= 14814\nMjM5 14815\nIG9wZXJhdGU= 14816\nVUlLaXQ= 14817\nIG5hdHVy 14818\nYXJndW1lbnQ= 14819\nX2RldGFpbA== 14820\nIENlbnRyZQ== 14821\nICItLQ== 14822\nIH19Ig== 14823\nbG9jYWxl 14824\nLnR2 14825\nX3NlcQ== 14826\nIHVwY29taW5n 14827\nQ2hhcnQ= 14828\nIERpdmlzaW9u 14829\nIGNsaW5pY2Fs 14830\nQ29tcGFueQ== 14831\nU2VwYXI= 14832\nbGFz 14833\nIEh1bg== 14834\nOnM= 14835\nIGhlYWRpbmc= 14836\n0L7Qsw== 14837\nICIiKTsK 14838\nW2lk 14839\nYmlh 14840\nIHN0cmV0Y2g= 14841\naWNpZGU= 14842\nIHJlcHJvZHU= 14843\nLnByb2plY3Q= 14844\nbGVnZW5k 14845\nZW5kZXJz 14846\nIHJlc3BvbnNlcw== 14847\nIG9udA== 14848\ncml0aWNhbA== 14849\nIHJlZnVnZQ== 14850\nIExp 14851\nIDoKCg== 14852\nIFRocmVl 14853\nLmNvbnRyb2xsZXI= 14854\nX0lOREVY 14855\nX0ZPUg== 14856\nXE1vZGVscw== 14857\namF4 14858\nCWV4aXQ= 14859\nIOKW 14860\nIGNvdmVycw== 14861\nCXk= 14862\nLS4= 14863\nSU5ET1c= 14864\nIGZhaWxz 14865\naW5jbHVkZXM= 14866\nIGZhdWx0 14867\nNDQw 14868\nIGx5 14869\nNDQ0 14870\nw7Fv 14871\nLnNsaWNl 14872\nSUxFRA== 14873\nIFB1cg== 14874\nIEFzaWFu 14875\nX2JhdGNo 14876\nLk1heA== 14877\ndmw= 14878\nIENPUFlSSUdIVA== 14879\nIGdpYW50 14880\nIE1hbnVhbA== 14881\nIENvcHk= 14882\nQ2xhc3NOYW1l 14883\nSGVhbHRo 14884\nQ3Vyc29y 14885\nSUJPdXRsZXQ= 14886\nIHR3ZQ== 14887\n5rM= 14888\nX2xhYmVscw== 14889\nIGNvbGxlY3RlZA== 14890\nIGZ1cm5pdHVyZQ== 14891\nIGRlYWxpbmc= 14892\nQ29udHJvbHM= 14893\nIEhvdGVs 14894\nY2tz 14895\nIGNob3Nl 14896\n4pSA 14897\nb2Rk 14898\nU1I= 14899\n2Yo= 14900\n7IQ= 14901\nIGFjY29yZA== 14902\nIE1vdmU= 14903\nIE1vZGU= 14904\nIE1vY2s= 14905\nIHRocmVhZHM= 14906\nKysrKw== 14907\nIE9wdGlvbnM= 14908\nUmVmcmVzaA== 14909\nIERpZA== 14910\nJ10tPg== 14911\ndWNj 14912\nX2NoYW5uZWw= 14913\nLmFicw== 14914\nIHt9LAo= 14915\nIFdhbA== 14916\nZXJpb3I= 14917\nIG1haW5seQ== 14918\nIERyaXZlcg== 14919\nTm90Rm91bmRFeGNlcHRpb24= 14920\nIGNvdW50cw== 14921\nZWFt 14922\nICY9 14923\nUXVlc3Rpb24= 14924\nIEFsaQ== 14925\nIGFueW1vcmU= 14926\nZGV0YWls 14927\ndGFpbA== 14928\nIG1pbGU= 14929\nIEZhaXI= 14930\nIHNvcnJ5 14931\nIHN1cnJvdW5kaW5n 14932\nIGFkbQ== 14933\nRGV2 14934\nIG1hcmlqdWFuYQ== 14935\nIFNvdW5k 14936\nIEFzaA== 14937\nRkQ= 14938\nVGVhbQ== 14939\nLnBvcnQ= 14940\nIFtdCgo= 14941\ndWJibGU= 14942\nIGFzYw== 14943\nIGludGVudGlvbg== 14944\nQWNj 14945\nY2hp 14946\ndXN0ZXJz 14947\nIGluc3BpcmVk 14948\nc2Vn 14949\nQ0xV 14950\nIG1hbmlw 14951\nTWV0YWRhdGE= 14952\nQ29ubmVjdA== 14953\nIEJlaA== 14954\nIGZpbmRpbmdz 14955\nIGFzc2VtYmx5 14956\nd29ybGQ= 14957\nIHJlbWFpbmVk 14958\nIHVpZA== 14959\nKC4= 14960\nIG14 14961\nTG9vcA== 14962\nCgoKCgo= 14963\nIGZhbnRhc3RpYw== 14964\nd2hv 14965\nYWtp 14966\nIEJhc2lj 14967\nIFlldA== 14968\nIFVzZXJz 14969\naWtpcA== 14970\nIGhlYWRz 14971\nIE1pY2hpZ2Fu 14972\nX2l0 14973\nIFRvcm9udG8= 14974\nIHJlY29yZGluZw== 14975\nIHN1Ym1pdHRlZA== 14976\nX3ZhcmlhYmxl 14977\nbWVkaWF0ZQ== 14978\nLmdyYXBoaWNz 14979\nIHN0b29k 14980\nIHJlYXI= 14981\ndmVsb2NpdHk= 14982\nX01FU1NBR0U= 14983\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 14984\ncm9sZXM= 14985\nIFRvdXI= 14986\nX3llYXI= 14987\nZW5kbWVudA== 14988\nYW1wcw== 14989\nIElyZWxhbmQ= 14990\nbWFs 14991\nIHlvdW5nZXI= 14992\nIHN0cnVnZ2xl 14993\nIGNhYmxl 14994\nIFNETA== 14995\nKCct 14996\nYW5lcw== 14997\nIE5lZWQ= 14998\nLlJvdw== 14999\nUG9s 15000\nIFBI 15001\nX3NjcmlwdA== 15002\nYWdlbQ== 15003\nIEJhcw== 15004\nX3NwYWNl 15005\nLmxvYw== 15006\nOmk= 15007\nYWRy 15008\nIGVuZ2luZWVyaW5n 15009\naXRlbg== 15010\nKSY= 15011\nIHVr 15012\nIExpdHRsZQ== 15013\nX0NPVU5U 15014\neEE= 15015\nQXJyYXlMaXN0 15016\n5o0= 15017\nICIiKQo= 15018\nQW5jaG9y 15019\nIGhhbmc= 15020\ndHdpdHRlcg== 15021\nIGNvbXBldGl0aXZl 15022\nLnNyYw== 15023\n44GX 15024\nIHRyYW5zbGF0ZQ== 15025\nIENyZWF0ZXM= 15026\nb29rcw== 15027\nIFJvbGw= 15028\nJycnCg== 15029\nL3No 15030\nc29tZQ== 15031\nRW5jb2Rpbmc= 15032\nLnJlc29sdmU= 15033\nIGRlc2lnbmVy 15034\nIFN0b3JhZ2U= 15035\nIHph 15036\nIE5ldmVy 15037\nIHNvbWV3aGVyZQ== 15038\nIGJveGVz 15039\nLnNvdXJjZQ== 15040\nIHB5Z2FtZQ== 15041\nIGdyb3du 15042\nLnR3 15043\nKCkpLAo= 15044\nJyxbJw== 15045\nIG9wcG9uZW50 15046\nKHNyYw== 15047\nLmxheWVy 15048\nQVBQ 15049\nIEFjdGl2 15050\nIGd1ZXN0cw== 15051\nIFZBTFVFUw== 15052\nfTsKCgo= 15053\nLm5hdGl2ZQ== 15054\nIGFtb3VudHM= 15055\nLlJF 15056\nIGNsb25l 15057\nIHdlcmVu 15058\nICI8PA== 15059\nX2Fj 15060\nIGJyZWFraW5n 15061\nIHJlbGlhYmxl 15062\nLlBPU1Q= 15063\nIFNreQ== 15064\nICcm 15065\nIHNhdmVkSW5zdGFuY2VTdGF0ZQ== 15066\nYXN0aW5n 15067\naWxsaW9u 15068\nY29tbWVudHM= 15069\ndWx0eQ== 15070\nLm1lbnU= 15071\nL2NvbmZpZw== 15072\nIAoKCg== 15073\nVE9ETw== 15074\nIHB1cmNoYXNlZA== 15075\nX2Nvcg== 15076\nCWF1dG8= 15077\nQ29tcGF0QWN0aXZpdHk= 15078\nY29tcGxldGU= 15079\nX2dyYXBo 15080\naXNvZGVz 15081\nIHNpdHVhdGlvbnM= 15082\nIEhvcg== 15083\nUmVjZWl2ZQ== 15084\n4oCcV2U= 15085\nIGVudGl0aWVz 15086\nLmFzc2VydEVxdWFscw== 15087\n0L7Qug== 15088\nIFNhbnM= 15089\ndmluY2U= 15090\ncm9tcHQ= 15091\nPQo= 15092\nIC8u 15093\nLlNlbGVjdA== 15094\neWx2 15095\nIGJhdHQ= 15096\nQXVkaW8= 15097\nIGluY3JlYXNpbmdseQ== 15098\nLkJ1bmRsZQ== 15099\nIGV4cGxhaW5z 15100\nMDYw 15101\ndGhlYXN0 15102\nLm9mZnNldA== 15103\nIGhhbA== 15104\nIHRlY2huaXF1ZQ== 15105\nX2xpbWl0 15106\nIGRyYXdu 15107\nQVlFUg== 15108\nIGZlYXR1cmVk 15109\neXl5eQ== 15110\nYXRpbg== 15111\ncGhlbg== 15112\nYWNoZWw= 15113\nIVw= 15114\nbG93ZXI= 15115\nIEdS 15116\nIHBhZw== 15117\nIFBhcnNl 15118\nIHRvdQ== 15119\n5LiA 15120\nRGlzdGFuY2U= 15121\nSW5kZXhQYXRo 15122\nIGhlbGw= 15123\nc2lt 15124\nVVRUT04= 15125\nVXNhZ2U= 15126\nZWxlbml1bQ== 15127\nIEZhbGw= 15128\nICIuJA== 15129\nIE11 15130\nIGNydWM= 15131\nIHNvbnQ= 15132\nUkVGSVg= 15133\nMzEx 15134\nIGludGVyaW9y 15135\nIE9seW1w 15136\nLkF1dG9TY2FsZQ== 15137\ncGFyYQ== 15138\nQXhpc0FsaWdubWVudA== 15139\nIHJpdmVy 15140\nRHRv 15141\nIHdpdGhkcmF3 15142\nUmVhY3Q= 15143\nLWNsYXNz 15144\nYmVmb3Jl 15145\nX2FsbG9j 15146\nQ29udGVudHM= 15147\nIFdhcw== 15148\nSUNU 15149\nIGZvcm11bGE= 15150\nIGluZGljYXRlcw== 15151\nICAgIAoK 15152\nX3N0b3Jl 15153\naXR0aW5n 15154\nIEl0YWxpYW4= 15155\nX1NldA== 15156\nX3JlcG9ydA== 15157\nIHBpZA== 15158\nX1ZFUg== 15159\nIHdpbnM= 15160\nIENsb3Vk 15161\nIil7Cg== 15162\nY2hlc3Rlcg== 15163\nIGRlbmllZA== 15164\nIHdpcmQ= 15165\nIFN0ZXA= 15166\nIGludmVzdG9ycw== 15167\nYm9sZA== 15168\nX2Rpc3BsYXk= 15169\nb3V2ZXI= 15170\nb3Jlcg== 15171\nUmVzZXQ= 15172\nIHN1cmdlcnk= 15173\nIHN0cmF0ZWdpZXM= 15174\nL21hdGVyaWFs 15175\nX3VuaXQ= 15176\nIGNvdW5jaWw= 15177\nLlBlcg== 15178\nIOKAng== 15179\nIHJlZm9ybQ== 15180\nRnJhbWV3b3Jr 15181\nIGxpc3Rpbmc= 15182\nX2J0bg== 15183\nIGJpcw== 15184\nJWQ= 15185\nZWdhcw== 15186\nIHN1ZGRlbmx5 15187\nX1NFUg== 15188\nMzE1 15189\nIGFv 15190\nX2RpcmVjdG9yeQ== 15191\nZmFz 15192\nIHByZW1pdW0= 15193\nIHRyYWNraW5n 15194\nIEJM 15195\nIG1hdHVyZQ== 15196\nIGJhdGhyb29t 15197\nICcvJw== 15198\nIMSR 15199\nUGVyZm9ybWVk 15200\nIHNvbGRpZXJz 15201\nYXJuaW5ncw== 15202\nIHdhbGtlZA== 15203\nLWNvbg== 15204\nYm90dG9t 15205\nIHN1cnByaXNpbmc= 15206\nIGdlbmU= 15207\nVXN1YXJpbw== 15208\nLkRFRkFVTFQ= 15209\nIE1JVA== 15210\nQ09ERQ== 15211\nIEVneXB0 15212\ncGlja2Vy 15213\neXNxbA== 15214\nQVRVUkU= 15215\nZGV0YWlscw== 15216\nIENvbmZlcmVuY2U= 15217\nSW5mb3JtYXRpb24= 15218\nIE1haWw= 15219\nLWRvd24= 15220\ncmFyaWVz 15221\nYnJv 15222\nIHN1YmplY3Rz 15223\nICcq 15224\n6K+3 15225\nb3JpZW50 15226\nOkA= 15227\ndmVyYm9zZQ== 15228\nRUY= 15229\nIHRvbGVy 15230\nMzEz 15231\nZW5nZXJz 15232\nIGVuZHBvaW50 15233\nIHN0cmFuZ2U= 15234\nIGNvbG9u 15235\nIHByZWZlcnJlZA== 15236\nZGVw 15237\nIEVW 15238\nQVJSQVk= 15239\nIHdoZQ== 15240\nIHB1cA== 15241\nX25vZGVz 15242\nIHRhbGtlZA== 15243\nIGluc3RpdHV0aW9u 15244\nZGJj 15245\nIGV4cG9zZWQ= 15246\ndGVlbg== 15247\nIEZyb250 15248\nVFQ= 15249\nX05PTkU= 15250\nXC9cLw== 15251\ncHJvZ3JhbQ== 15252\nIGVuY291cmFnZQ== 15253\nLmA= 15254\nc2hpcmU= 15255\nIElzbGFt 15256\nMzI1 15257\nZWVu 15258\nTkk= 15259\nJyI= 15260\nLldpZHRo 15261\nIGxpa2Vk 15262\nIHsuLi4= 15263\nIFN5c3RlbXM= 15264\nIHZvdHJl 15265\nIG1hbnVmYWN0dXJpbmc= 15266\nQ29udmVydGVy 15267\nIEluZg== 15268\n7Jo= 15269\nRFRP 15270\nIGluY2hlcw== 15271\nIOCk 15272\nw7k= 15273\nIENoYXJsZXM= 15274\nQlU= 15275\nIikpOwoK 15276\nIExhYm9y 15277\ndW5u 15278\nIGVzdGlt 15279\nbW9iaWxl 15280\nIExlYXJu 15281\nMjgx 15282\nX0NBTEw= 15283\n4oQ= 15284\nIGluZGljZXM= 15285\nIHR1Yg== 15286\nMjg4 15287\naWtpcGVkaWE= 15288\nQ29zdA== 15289\ncm93YWJsZQ== 15290\n66E= 15291\nZ2FnZQ== 15292\nIGZ1bmN0aW9uYWxpdHk= 15293\ndXp6bGU= 15294\nZW1vcw== 15295\nLmxpYg== 15296\nIGRhc3M= 15297\n0LXQug== 15298\nZW5uYQ== 15299\nIHNob3Rz 15300\nIHJlc3RvcmU= 15301\nL0Q= 15302\nRm9yS2V5 15303\nXSxb 15304\nYWxpYXM= 15305\nbGludA== 15306\nLnN0cmVhbQ== 15307\n5qA= 15308\nX0ZPUk1BVA== 15309\nIHNpbHZlcg== 15310\nLnJlcG9zaXRvcnk= 15311\nIGxlZ2lzbA== 15312\nLkJvcmRlcg== 15313\nX2ZlYXR1cmVz 15314\nUGVybWlzc2lvbg== 15315\nIGhvdXNlcw== 15316\nIFdhcnM= 15317\nX0NPTVA= 15318\nIGluanVyaWVz 15319\nIGNvbnN0YW50bHk= 15320\nZmx1dHRlcg== 15321\nRU5V 15322\nIENvbmY= 15323\nIHJlY29nbml6ZWQ= 15324\nIHByYWN0aWNhbA== 15325\nIGRlY2VudA== 15326\nQko= 15327\nXSk7 15328\nYXN0eQ== 15329\nIEFjdGl2aXR5 15330\nLW1vZGU= 15331\nIHNsaWRl 15332\nLklzTnVsbE9yRW1wdHk= 15333\nIFlPVQ== 15334\nUG93ZXI= 15335\naW5kaWNlcw== 15336\nIHF1YWxpZmllZA== 15337\nIHRocm93bg== 15338\naGVsbG8= 15339\nMzE2 15340\nIE5pY2s= 15341\nbGFo 15342\nYXNzZW1ibHk= 15343\nIFNtYWxs 15344\nb2xkaW5n 15345\nU2hvdWxk 15346\nIFNpbHZlcg== 15347\nKHNhdmVkSW5zdGFuY2VTdGF0ZQ== 15348\nIHRvZ2dsZQ== 15349\nLk5vdA== 15350\nQ3RybA== 15351\nOm5pbA== 15352\nIENvbnRpbnVl 15353\nIEJvb3Q= 15354\n5ok= 15355\nIE11cg== 15356\nZG9u 15357\nIEZB 15358\nU25hcHNob3Q= 15359\nIGFzc29jaWF0aW9u 15360\nZm94 15361\nLGE= 15362\nYXppb25l 15363\nXSkNCg== 15364\nQ1RZUEU= 15365\nIGZhZGU= 15366\nIERhcg== 15367\nLm5hdmlnYXRpb24= 15368\nIGx1Y2s= 15369\nU0NSSQ== 15370\nIERlYWQ= 15371\nIHRlcm1pbmFs 15372\nX0xFTkdUSA== 15373\nIGVmZmljaWVuY3k= 15374\nIHVudw== 15375\nIG5hcnJvdw== 15376\naW1lbnRv 15377\nKENvbG9y 15378\nIFNlYQ== 15379\nX2FyZWE= 15380\nLEE= 15381\nX29wdA== 15382\nIEhpbGxhcnk= 15383\nLnRhc2s= 15384\nIEphYw== 15385\nYXN0ZWQ= 15386\nIEFkYW0= 15387\nIElsbGVnYWw= 15388\nIHNlYXJjaGluZw== 15389\nSW5zdGFuY2VPZg== 15390\nSmF2YQ== 15391\nIEZvcm1hdA== 15392\nIHJlYWxpemVk 15393\nIENoaWxkcmVu 15394\nIGtpbA== 15395\nKGZyYW1l 15396\n4oCdLgoK 15397\nIHNjZW5hcmlv 15398\nIl0pOwo= 15399\nIGluY3JlZGlibGU= 15400\nbGl4 15401\nSU9FeGNlcHRpb24= 15402\nIFF1ZXN0 15403\naWx0eQ== 15404\nIHVubG9jaw== 15405\n4oKs 15406\nIHJlZmVyZW5jZXM= 15407\nIFZlcnQ= 15408\nQmluZGluZw== 15409\nZWdhdGl2ZQ== 15410\nIHdyYXA= 15411\nLmRhdGFiYXNl 15412\nKGNvbnRlbnQ= 15413\nQnVm 15414\nIFRyYWQ= 15415\nIEF1ZA== 15416\ndHJhY2U= 15417\nLm1vY2s= 15418\nIHRoZXJhcHk= 15419\nCUw= 15420\nLlRvSW50 15421\nIEtpbmdkb20= 15422\nQnVz 15423\naGF1c3Q= 15424\nIiIiCgo= 15425\nKGVuZA== 15426\nLmRyYXdhYmxl 15427\nW107Cg== 15428\nIEhvc3BpdGFs 15429\nIHBoYXJt 15430\nLS0tLS0= 15431\nIEFH 15432\nw6lk 15433\nPiIpOwo= 15434\nIHdhbGxldA== 15435\nYXRhYmxl 15436\nKSQ= 15437\nIG1vbnRobHk= 15438\nIGRpYWdub3N0aWM= 15439\nU3ltYm9s 15440\nIGl0ZXJhdG9y 15441\ndW5maW5pc2hlZA== 15442\nIGltbWlncmF0aW9u 15443\nc3I= 15444\nUk9X 15445\nKGdhbWU= 15446\nIGNsb3RoZXM= 15447\nIFVudA== 15448\nIGFjdGl2YXRpb24= 15449\nX0Nvbg== 15450\nMjcz 15451\nLmhhc2g= 15452\nIGluaXRpYWxseQ== 15453\nLkhhc2g= 15454\nIGN1dHM= 15455\nZm91bmQ= 15456\nIFN0b3J5 15457\n0YbQuA== 15458\nYWNhbw== 15459\nX1RZUA== 15460\ncHJvdG8= 15461\nZXN0cg== 15462\nLXBhZ2U= 15463\nYWhy 15464\nIGluY29ycmVjdA== 15465\nIEpvc2VwaA== 15466\nVGV4dEJveENvbHVtbg== 15467\nX3N0eWxl 15468\nIERhbmllbA== 15469\nc2hlZXQ= 15470\nIGxpdg== 15471\nbGluZWQ= 15472\nIHJh 15473\nUnVudGltZQ== 15474\nX2VtcHR5 15475\nc2x1Zw== 15476\nX3N0cnVjdA== 15477\n64o= 15478\nbXU= 15479\nIHBlcm1pdHRlZA== 15480\nIHJlZ2lvbmFs 15481\nIHNvYnJl 15482\nIFN1Y2g= 15483\nIFtf 15484\nIHJvb2Y= 15485\nLkFsaWdubWVudA== 15486\ndGltZXM= 15487\nLm1zZw== 15488\nIGNoZXN0 15489\nIFRhYg== 15490\nIGVzdGE= 15491\nw6Ru 15492\nIHN1YnNjcmlwdGlvbg== 15493\nKGNvbW1hbmQ= 15494\nc3BlY2lhbA== 15495\nIG1lYWw= 15496\nIik6Cg== 15497\nX2N0eA== 15498\nIGNsb3NlbHk= 15499\nMzA5 15500\nZXRyeQ== 15501\nLWJl 15502\nYWRlbA== 15503\nIFJhbQ== 15504\naWdlc3Q= 15505\nIFNwYW5pc2g= 15506\nIGNvbW1pdG1lbnQ= 15507\nIHdha2U= 15508\nKj4o 15509\nUEhQ 15510\nX3s= 15511\nY2tlcg== 15512\nPExpc3Q= 15513\nX251bGw= 15514\nMzkw 15515\nIFJlc2VydmVk 15516\nIGluaGVy 15517\nLkNvbHVtbnM= 15518\nLkFzcE5ldA== 15519\nX0lOVkFMSUQ= 15520\nIFBhcmFtZXRlcg== 15521\nIGV4cHI= 15522\nfXs= 15523\nQ2VsbFN0eWxl 15524\nIHZhbHVhYmxl 15525\nIGZ1bm55 15526\nSW52 15527\nIHN0YWJsZQ== 15528\nKnQ= 15529\nIHBpbGw= 15530\nMjk5 15531\ncGxpZXJz 15532\nIENTUw== 15533\nIENvbmRpdGlvbg== 15534\nIFNwZWVk 15535\ndWJsaXNoZXI= 15536\nMjU5 15537\nIG9mZmVuc2l2ZQ== 15538\nY2VzdA== 15539\naWNhcw== 15540\nIHNwYXJr 15541\nIFByb3Rl 15542\nc2V0dXA= 15543\nSUZZ 15544\nIFRheA== 15545\nV2hv 15546\nRmFtaWx5 15547\nLWZvcg== 15548\nLnVr 15549\nIGZhc2M= 15550\nc3Zn 15551\nIikpLg== 15552\nIGJpcnRoZGF5 15553\n4paI 15554\ndmVo 15555\nZWxsZWQ= 15556\nIGltcG9ydHM= 15557\nIElzbGFtaWM= 15558\nVEE= 15559\nIFN0YW4= 15560\nd2VhdGhlcg== 15561\nIHN1c3BlY3Q= 15562\nZWF0dXJl 15563\nZW5uZXM= 15564\nV00= 15565\nLm1pbmVjcmFmdA== 15566\nYXZpZA== 15567\n6L0= 15568\nLnNlY3VyaXR5 15569\naW5vcw== 15570\nR29vZA== 15571\nIG1hcmNo 15572\nNjU1 15573\nMjU3 15574\nIHBvc3Nlc3M= 15575\ndXN1YXJpbw== 15576\nQ29ucw== 15577\nYW1iZXI= 15578\nY2hlZHVsZXI= 15579\nIGhvcnNl 15580\n570= 15581\nKGJvZHk= 15582\nIFRyYW5zZm9ybQ== 15583\nX2RlY29kZQ== 15584\nLnN2Zw== 15585\nIGZvbw== 15586\nIGRlbGxh 15587\nZXh0ZW5kcw== 15588\nYW1lcg== 15589\nIHByb2Nlc3NlZA== 15590\nIEhhcnI= 15591\nIEFJ 15592\nIGtv 15593\nQ0hBUg== 15594\nKCU= 15595\nIHRhcA== 15596\nKHsn 15597\nY3JvbGw= 15598\nRE9N 15599\nIHRlYQ== 15600\nIHJlaW4= 15601\nMjYx 15602\nIHdvcmxkd2lkZQ== 15603\nX2Zu 15604\nc2hh 15605\nIGJpcg== 15606\nw6fDtWVz 15607\nPSIjIj4= 15608\nIHJlcHJlc2VudGVk 15609\naWxsZXI= 15610\nKGV4cGVjdGVk 15611\nIGRhbmNl 15612\nIHZpc2l0b3Jz 15613\nLmNvbmNhdA== 15614\nLWJpdA== 15615\nVVJSRQ== 15616\nIFJvZw== 15617\ndnA= 15618\naXBo 15619\nIExMQw== 15620\naXRsZWQ= 15621\naWFtaQ== 15622\nQ29sbA== 15623\nX3JlYWw= 15624\nX3Nob3c= 15625\nX2ZvbGRlcg== 15626\nIGRhcg== 15627\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 15628\nIGxhdHRlcg== 15629\nYXJjaHk= 15630\nIGJvdw== 15631\nIG91dGNvbWU= 15632\nNTEw 15633\nIFBvc3RlZA== 15634\nIHJpc2tz 15635\nIFRoZXJlZm9yZQ== 15636\nIG93bmVyc2hpcA== 15637\nIHBhcmFsbGVs 15638\nIHBlbmRpbmc= 15639\nZ2VvbWV0cnk= 15640\nIHJlY29nbml6ZQ== 15641\nU1RFTQ== 15642\nIENQ 15643\nIGltbWlncg== 15644\nSVRMRQ== 15645\nICAgIAkJ 15646\nY29ubmVjdGVk 15647\nIHNtaWxl 15648\nKGRvY3VtZW50 15649\nXENvbXBvbmVudA== 15650\ndmVydGljYWw= 15651\nIGNvbnN1bXB0aW9u 15652\nIHNob2Vz 15653\nLmltcGw= 15654\ndW5rcw== 15655\nLiI7Cg== 15656\nIGZvb2Rz 15657\nXyk7Cg== 15658\nLmFzc2VydFRydWU= 15659\nIHBpcGVsaW5l 15660\nIGNvbGxlY3Rpb25z 15661\nIGVhcm5lZA== 15662\nIENlcnQ= 15663\nIHBhcnRuZXJzaGlw 15664\nKGFjdGlvbg== 15665\nMjYz 15666\nIGNk 15667\nIFZlcnk= 15668\nT3B0aW9uYWw= 15669\nIHNjcmVlbnM= 15670\nIHRpdGxlcw== 15671\nZW5lcmF0b3I= 15672\nIGFiYW5kb24= 15673\na2luZA== 15674\nSUxURVI= 15675\nIGNsb3Npbmc= 15676\nbGljYQ== 15677\nX2ludGVy 15678\nIGNhbXB1cw== 15679\nc2V0dGluZw== 15680\nU3ByaXRl 15681\n44Gv 15682\nX3JlcGx5 15683\nVG9MaXN0 15684\nOlwvXC8= 15685\nZWRl 15686\nIGZvbGtz 15687\nIGJvYXQ= 15688\nKGFyZ3Y= 15689\nIHBlcm1hbmVudA== 15690\nIGNhcnJ5aW5n 15691\nIGNvbnNlcnZhdGl2ZQ== 15692\naW1wb3J0YW50 15693\nLmltZw== 15694\nIEltbQ== 15695\nIGRpbWVuc2lvbnM= 15696\nYWxhbmQ= 15697\nc2luZ2xl 15698\nRXhpdA== 15699\nLS0tLS0tLS0tLQ== 15700\nYXJpYW50 15701\ndGVybmFs 15702\nU2Vjb25kcw== 15703\nIEl0YWx5 15704\nb3RsaW4= 15705\nLlJlc3VtZQ== 15706\nPSci 15707\nKT09 15708\nY2VwdG9y 15709\nIHNjYQ== 15710\nL21haW4= 15711\nU2VjdXJpdHk= 15712\nX2RhdA== 15713\nIGxldHM= 15714\nIGFxdQ== 15715\nIHdoZW5ldmVy 15716\nYmVycnk= 15717\nIGFjdGluZw== 15718\nYW50aQ== 15719\ncGQ= 15720\nJmd0 15721\n5q0= 15722\nWm9uZQ== 15723\nVG9kYXk= 15724\nIS4= 15725\nMzIz 15726\nVG9Qcm9wcw== 15727\nYWJpcw== 15728\naXRhYmxl 15729\nIGdhbA== 15730\nXXs= 15731\naXpvbmE= 15732\nIGluY29udHJp 15733\nTkVU 15734\nLy8vCg== 15735\nW2lu 15736\nX3NhdmU= 15737\nIGV4ZW0= 15738\nIEtlbm4= 15739\nIGV2b2x1dGlvbg== 15740\nMjcy 15741\ndmFycw== 15742\nX3N0YXRz 15743\nLW9ubHk= 15744\nIENvbG9yYWRv 15745\nIHdhdGNoZWQ= 15746\nYm91cg== 15747\nIHNldmVyZQ== 15748\nIHByb2Zlc3Npb25hbHM= 15749\ncG9ydGlvbg== 15750\nIGd1YXJhbnRl 15751\n0LM= 15752\nIHB1c2hlZA== 15753\nIEdp 15754\n770= 15755\nIHR1bQ== 15756\nIEF6 15757\nIEVkZ2VJbnNldHM= 15758\nIikpOw0K 15759\naXNzZQ== 15760\nLmFj 15761\nU2V0dGluZw== 15762\nIGFwcHJlY2lhdGU= 15763\nIFZhbHVlRXJyb3I= 15764\nIHN1cnZl 15765\nIFJvbGU= 15766\nLkludGVy 15767\ncGxvdGxpYg== 15768\namV0 15769\nZGFt 15770\nIHBsYXRmb3Jtcw== 15771\ndGVsZQ== 15772\nVVRP 15773\nIEludGVybmFs 15774\nKzo= 15775\nfTsNCg== 15776\nR2VuZXJhbA== 15777\nXEVudGl0eQ== 15778\nIGxhd3llcg== 15779\ncXVpdg== 15780\nIFBvc3Rz 15781\naXNv 15782\nIGFjY3Vt 15783\nb2Jl 15784\nIG1hcmtz 15785\nIF07Cgo= 15786\nCXRleHQ= 15787\nLnN1Y2Nlc3M= 15788\nY3Vycg== 15789\nYXNh 15790\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 15791\nIHRoaW4= 15792\nX292ZXI= 15793\nMDE2 15794\nYXJlc3Q= 15795\nIE9z 15796\nKGFkZHJlc3M= 15797\nIHZlbG9jaXR5 15798\nIFtdOwoK 15799\nPSIuLi8uLi8= 15800\nIFByaXY= 15801\nYm93 15802\nIGd1YXJhbnRlZQ== 15803\nJQoK 15804\nMzIy 15805\nIGV2YWx1YXRl 15806\nLkxFTkdUSA== 15807\nIGludmVudG9yeQ== 15808\ncWE= 15809\nX2RlYnVn 15810\nLk9uQ2xpY2tMaXN0ZW5lcg== 15811\nIGxpZXM= 15812\nIGFzc2Vzc21lbnQ= 15813\nZGF0ZXRpbWU= 15814\nLmJhY2tncm91bmRDb2xvcg== 15815\nICovDQoNCg== 15816\ncmFm 15817\ndW53cmFw 15818\nIEZvb3Q= 15819\nIG5vdGlmeQ== 15820\nIGxvd2VzdA== 15821\nRE9DVFlQRQ== 15822\nIGxhbmd1YWdlcw== 15823\nZXh0cmE= 15824\nLWJhY2s= 15825\nIGVpbmVu 15826\ndGVtcGxhdGVz 15827\nMjcx 15828\nX3Bhc3M= 15829\nNTIw 15830\nNzc3 15831\nIE11c3Q= 15832\nIGVzdMOh 15833\nX2NvcmU= 15834\nIFNjb3Q= 15835\nQUk= 15836\nIGJpYXM= 15837\nYXRpb25zaGlw 15838\nQ29uc3RhbnQ= 15839\nIHByb2dyYW1taW5n 15840\nSW5z 15841\ndXNwZW5kTGF5b3V0 15842\nIFBST1ZJRA== 15843\nYW50ZXM= 15844\nIHNoaXJ0 15845\naW5hdGVk 15846\nLk9L 15847\nW2E= 15848\nIHRoaW5rcw== 15849\nPwoKCgo= 15850\nIHJlZ2FyZGxlc3M= 15851\nIE1hZ2lj 15852\ndWxhdGluZw== 15853\nCWNsYXNz 15854\nYWRkR3JvdXA= 15855\nUkVBVEU= 15856\nIFNV 15857\nIHNpbXBs 15858\nY29weXJpZ2h0 15859\nIGJ1bmNo 15860\nIHVuaXZlcnNl 15861\nOTUw 15862\nIEVycg== 15863\nIHByZXNlbnRhdGlvbg== 15864\nY2F0ZWdvcmllcw== 15865\nIGF0dGFjaA== 15866\nLnNpZ24= 15867\nX0FD 15868\nIGRpc2NpcGw= 15869\nIHJlZ3VsYXJseQ== 15870\nIHByaW1hcmlseQ== 15871\naW5rcw== 15872\nW1s= 15873\nLnJhbmQ= 15874\nLnNob3VsZA== 15875\nb3dudG93bg== 15876\nPSIn 15877\nIHNhbnM= 15878\nIHN1cHBvcnRlcnM= 15879\nc2VxdWVuY2U= 15880\nR08= 15881\nLi4KCg== 15882\nIFNwcg== 15883\nIGNhcmVmdWxseQ== 15884\nVUlDb2xvcg== 15885\nZGVzdHJveQ== 15886\nIHRvZG9z 15887\nIE9SREVS 15888\nb3R0ZWQ= 15889\nIGRvbnQ= 15890\nYXVkaQ== 15891\nX3BsYXllcg== 15892\nZ3Jl 15893\nNjI1 15894\nIE9pbA== 15895\nPGJvZHk= 15896\nX3N0YWNr 15897\nLlBhZGRpbmc= 15898\nIFByb2R1Y3Rz 15899\nIHByaXZpbGU= 15900\nMDE0 15901\nIGluanVyZWQ= 15902\nIEZ1cnRoZXI= 15903\nIGFsaWFz 15904\nLlJlc3VtZUxheW91dA== 15905\nX0xFTg== 15906\nIHNlcw== 15907\nJ107Cgo= 15908\nY3JlZW5z 15909\nIGRpcmVjdGVk 15910\nLlN1c3BlbmRMYXlvdXQ= 15911\nb2RnZQ== 15912\nLkF0 15913\nbWFya3M= 15914\nIFVuaXZlcnM= 15915\nZXJ0cw== 15916\nIEVzYw== 15917\nIG5hdmJhcg== 15918\nIHV0aWxpdHk= 15919\nYWdub3N0aWNz 15920\nIGluamVjdA== 15921\nIEROQQ== 15922\nICIsIg== 15923\nYW1hcg== 15924\nIGV1 15925\nIHJlc3RhdXJhbnRz 15926\nX3B1dA== 15927\ndXRlcnM= 15928\nVG9vbFN0cmlw 15929\ndHc= 15930\naXN0cm8= 15931\nIHpvb20= 15932\nIGxlZ2l0 15933\ncGVjaWZpYw== 15934\nMjg1 15935\nIENvbWU= 15936\nIGxvY2FsU3RvcmFnZQ== 15937\nIGFic29y 15938\nLlBhbmVs 15939\nIERlc2lnbmVy 15940\nIG93 15941\nSUNBTA== 15942\nX3VyaQ== 15943\nKGZpZWxk 15944\nIHN1cGVydg== 15945\nRXhpc3Rz 15946\nIHJlc3BlY3RpdmVseQ== 15947\nIFN0YW5k 15948\nQ29uZg== 15949\ndXNzaWFu 15950\nMzY0 15951\nIGFyYw== 15952\nIG5k 15953\ndWNrcw== 15954\nIHJlc3Ry 15955\nIHNlYXNvbnM= 15956\nIENoYXB0ZXI= 15957\nIFN3aXRjaA== 15958\ncGlj 15959\nIGhp 15960\nbG9hZGVk 15961\nIGZsdWlk 15962\nLWJ0bg== 15963\nIHJ1bnRpbWU= 15964\nLml0 15965\nMjU4 15966\nQk4= 15967\nT3BhY2l0eQ== 15968\nYXNhbnQ= 15969\ncnlwdGlvbg== 15970\nLW5hdGl2ZQ== 15971\nIHRhdWdodA== 15972\n5a8= 15973\nYWdtZW50 15974\nIG11bA== 15975\nUmVnaXN0cnk= 15976\nX2dyaWQ= 15977\nIEJyb29r 15978\nOlNldA== 15979\nIG1vbmdvb3Nl 15980\nQU1FUw== 15981\naW5uZXJIVE1M 15982\nIHNvY2k= 15983\nIEludGVs 15984\nZ2V0SWQ= 15985\nQ21k 15986\nIGFjY2Vzc2libGU= 15987\ncmFtZXM= 15988\nbGV0b24= 15989\nIF9fKA== 15990\nCWRlbGV0ZQ== 15991\nIFNxdWFyZQ== 15992\nIgoKCg== 15993\nIGJ1Y2tldA== 15994\nYXZvcml0ZQ== 15995\nIEJyZWFr 15996\nKytd 15997\nIGJydXNo 15998\nMjY2 15999\nIHRlbnNvcg== 16000\nL2h0dHA= 16001\nVGlsZQ== 16002\nIGZ1bmN0aW9uYWw= 16003\nICIq 16004\nd2hlbA== 16005\nIHRlbnQ= 16006\nIENoYXJhY3Rlcg== 16007\nIHNlZXM= 16008\nLlNU 16009\nQmln 16010\nIGV4dGVybg== 16011\nVXJscw== 16012\nKSkpKSw= 16013\nIEpy 16014\nLkJ1aWxkZXI= 16015\nLjs= 16016\nbmw= 16017\nX0luaXQ= 16018\nIEhFUg== 16019\nxbxl 16020\nbXlzcWxp 16021\nX2ljb24= 16022\ndmFu 16023\nIGZlZWxpbmdz 16024\nIGxlYW4= 16025\nIGhvcGluZw== 16026\nVFY= 16027\nPSI8Pz0= 16028\nIGN1cnZl 16029\nX3N0ZA== 16030\nX0xJTkU= 16031\nZHN0 16032\nIG1vcmFs 16033\nZW1lcw== 16034\nb2d5 16035\nIHVyYmFu 16036\nMDE1 16037\nIGFzaWRl 16038\nIGVkaXRpbmc= 16039\nQURE 16040\nU2Vjb25k 16041\nVHJhY2s= 16042\nIHZvdGluZw== 16043\nIGhvbm9y 16044\nLics 16045\nZWxsZW4= 16046\nQ2hhdA== 16047\nIGltcHJvdmVtZW50 16048\nJ10KCg== 16049\noIE= 16050\nIHBhcnNlZA== 16051\nICAgICAgICAgCg== 16052\nIGxhenk= 16053\nIGZhbGxpbmc= 16054\nU2VyaWFsaXpl 16055\nIFBh 16056\nX2dy 16057\nIGZvcmV2ZXI= 16058\nLndoaXRl 16059\nLlF1ZXJ5 16060\nQmVk 16061\nIER1 16062\nIHJlc3VtZQ== 16063\nIHBhcGVycw== 16064\nIEluaXQ= 16065\nIHN1ZmZlcmluZw== 16066\n4oCL 16067\nIGRlY2xhcmF0aW9ucw== 16068\nKCkt 16069\nIGV4ZWN1dGVk 16070\nIEhvbA== 16071\nLmJsb2Nr 16072\n44Oz 16073\nU0s= 16074\nIHN0dWNr 16075\nIExvY2s= 16076\naW5jaXBhbA== 16077\nTnVsbGFibGU= 16078\nIHNlc3Npb25z 16079\ndW5p 16080\nIGNvdXA= 16081\nYXBwcm8= 16082\nZ2hhbg== 16083\nX3Bvb2w= 16084\nMjgz 16085\nCWlk 16086\nIHNsb3Rz 16087\nIG1lZGljaW5l 16088\nIGdsYWQ= 16089\nIE1vbm9CZWhhdmlvdXI= 16090\nYXRyZQ== 16091\nICQoJw== 16092\nbWVyaWNhbg== 16093\nYWdn 16094\nIGthbm4= 16095\nX2Nvbm5lY3Q= 16096\nIGJyYW5kcw== 16097\nIHNrZQ== 16098\nIGRpZ2l0 16099\nPG4= 16100\nIGJhY2t1cA== 16101\nIHBlcnNvbmFsbHk= 16102\nLlByb3BlcnR5 16103\nMzE0 16104\nLmNvbW1pdA== 16105\nIGNyeQ== 16106\nX2NvdW50ZXI= 16107\nIG1hbGxvYw== 16108\nIGdyYW4= 16109\nIERyb3A= 16110\ncGxhdGZvcm0= 16111\ncmVkZW50aWFscw== 16112\naW5raW5n 16113\nIFVJTA== 16114\ndWJz 16115\nIG1s 16116\nbGVzc2x5 16117\nR2VuZXJhdGVk 16118\nZXJlb3R5cGU= 16119\nIGJhdA== 16120\nTGF5b3V0UGFuZWw= 16121\nTE9U 16122\nIik7DQoNCg== 16123\nIG11c2NsZQ== 16124\nIGNlcnRpZmljYXRl 16125\nQU5ETEU= 16126\nIGhhcmRlcg== 16127\nIHBpeGVscw== 16128\nKSIsCg== 16129\nLkhlYWRlcg== 16130\nIGRldmVsb3Blcg== 16131\nIExhcw== 16132\nZWdhbg== 16133\nLjw= 16134\nIGV4cGxvZGU= 16135\nIHBhcnRpY2lwYXRl 16136\nUGF0dGVybg== 16137\nKHRhYmxl 16138\nIFRFWFQ= 16139\nY29uc3RhbnRz 16140\neEQ= 16141\ndGhldw== 16142\nfSwKCg== 16143\n44Gu 16144\nX2Rlcw== 16145\nIHN1YnN0cg== 16146\nIFNtYXJ0 16147\nIHNjYWxh 16148\nZ2VudA== 16149\nLWJhcg== 16150\nZXNzaW9uYWw= 16151\ndW1icw== 16152\nLmV4ZWM= 16153\nJ1w= 16154\nVEs= 16155\ndW5pc3Q= 16156\ncHJvb2Y= 16157\nY2lhbA== 16158\ncHJvYw== 16159\nPXsi 16160\nLmhyZWY= 16161\nPSQo 16162\nIGx1bmNo 16163\naXNjYWw= 16164\nIEVudHJ5 16165\nIG91dGRvb3I= 16166\nc2VtYmxl 16167\nIGVzc2VudGlhbGx5 16168\nL0c= 16169\nW10p 16170\nJSI= 16171\nc3Rlbg== 16172\nVVNFRA== 16173\nIGR1c3Q= 16174\n5bA= 16175\nCQoK 16176\nIHJldGlyZQ== 16177\nIGZpYg== 16178\nQWx0aG91Z2g= 16179\nIGxvdmVz 16180\nIHJlYWRz 16181\neWNsZXM= 16182\nIEhlbA== 16183\nX3VpbnQ= 16184\nICcuJA== 16185\nX2luaXRpYWw= 16186\nTmFtZWQ= 16187\nIGZ1bmRhbWVudGFs 16188\nQURJTkc= 16189\nIHRvdw== 16190\nIEFERA== 16191\nIEFjYWRlbXk= 16192\nMDUw 16193\nOlN0cmluZw== 16194\nIGNvbXByZWhlbnNpdmU= 16195\nLnNjYWw= 16196\nIE1ldGE= 16197\nTWVzc2FnZXM= 16198\nLmFubm90YXRpb25z 16199\nXFJlc3BvbnNl 16200\nIGFja25vd2xlZA== 16201\nIEFSRQ== 16202\nXT09 16203\nIGNsZWFuaW5n 16204\n6L4= 16205\nRW50aXRpZXM= 16206\nIFNhbGVz 16207\nIFdpcw== 16208\nLmV4dGVuZA== 16209\nYWxsZW5nZQ== 16210\nIGdhbWluZw== 16211\nJHF1ZXJ5 16212\nSUNFUw== 16213\nRVRDSA== 16214\nSG9yaXpvbnRhbA== 16215\ncXVlbnRpYWw= 16216\nODUw 16217\nQkFDSw== 16218\nZGV2ZWxvcA== 16219\naXNvcg== 16220\nKGNvZGU= 16221\nLUs= 16222\nX1BJTg== 16223\ncmVxdWVuY3k= 16224\nIFF1ZXN0aW9u 16225\nX2NvbnRhaW5lcg== 16226\nX21vZHVsZXM= 16227\nIEplcnNleQ== 16228\nX2RpZmY= 16229\nLmVs 16230\nICooKA== 16231\nY250 16232\nIFNh 16233\nQ1BQ 16234\naW5pdGU= 16235\nIHVudXM= 16236\nLXdoaXRl 16237\nZXRhcnk= 16238\nIGludm9sdmluZw== 16239\nID8+DQo= 16240\nYmVzdA== 16241\nYWxsYXM= 16242\nZW50ZWQ= 16243\nICAgICAgICAgICAgICAgICAgICAgICAgCg== 16244\nX2Nvbm5lY3Rpb24= 16245\nIHJlcG8= 16246\nZW5hYmxlZA== 16247\n0LDQug== 16248\nIHNoYQ== 16249\nIG1lbWJlcnNoaXA= 16250\nU3RhdHVzQ29kZQ== 16251\naW5hdGluZw== 16252\nX3Nt 16253\nX2N1c3RvbQ== 16254\nX3dlaWdodA== 16255\nIGNzcw== 16256\nU3RhdA== 16257\nX2Vudg== 16258\nbGlua3M= 16259\nVFJM 16260\nIEhpdA== 16261\nLHI= 16262\ndXBpZA== 16263\nIG9wZW5z 16264\nIGdlbnQ= 16265\nX3Zpcw== 16266\nIGpveQ== 16267\nPHc= 16268\nX2Nvc3Q= 16269\nIFB5T2JqZWN0 16270\ncmVuY2U= 16271\nIEdlb3JnaWE= 16272\nIEJyb2Fk 16273\nbW1h 16274\n4oI= 16275\ncGY= 16276\nICJcIg== 16277\nICgm 16278\nb21v 16279\nIGxpdGVyYWxseQ== 16280\niJg= 16281\nbWV0cmlj 16282\nIGJhcnM= 16283\nemVk 16284\nKHdpbmRvdw== 16285\nIElzcmFlbGk= 16286\nIGZvcm1hbA== 16287\naWRlbnRpZmllcg== 16288\nLmRhbw== 16289\nIERlYXRo 16290\nJTsK 16291\nIGRlY2xhcmU= 16292\nYXJtcw== 16293\nUkVBTQ== 16294\nUEVSVFk= 16295\nIGNvbnNlcXVlbmNlcw== 16296\ndG9vbHM= 16297\nUGVvcGxl 16298\nIFdoaWNo 16299\nPigpOw0K 16300\nLmRlY29kZQ== 16301\nX0FDVA== 16302\nQnV0dG9ucw== 16303\nLmZsb2F0 16304\nLkZpcnN0 16305\n66U= 16306\nIFBvbGl0 16307\nIFhDVA== 16308\nVGFncw== 16309\nIENHRmxvYXQ= 16310\nPXN0cg== 16311\nIGxlYWY= 16312\nLWNoZWNr 16313\nIElzcw== 16314\nLnN5c3RlbQ== 16315\nbG9nb3V0 16316\nYWNodA== 16317\nQW5nbGU= 16318\nc2lu 16319\nY2hhcnQ= 16320\nSU5URVI= 16321\nIE5VTQ== 16322\nQmFzaWM= 16323\nLlByb3BlcnRpZXM= 16324\n5Lit 16325\nX2NoYW5nZQ== 16326\nIEJyYXppbA== 16327\nQWJzdHJhY3Q= 16328\nIDorOg== 16329\nX3VzZQ== 16330\n0LDQuw== 16331\nMjY4 16332\nIEx5 16333\nSUJVVA== 16334\nIG91dGVy 16335\nIC0tPg0K 16336\nIHJlbGllZg== 16337\nbGFw 16338\ncXVlcg== 16339\nX3BhcmVudA== 16340\naGVhcA== 16341\nTE9TRQ== 16342\nIGNvbWJpbmU= 16343\nIFJvc2U= 16344\nb3dlcnM= 16345\nIHByb2NlZHVyZXM= 16346\nIFNvcnQ= 16347\nYW5pbQ== 16348\ndmFyaWFudA== 16349\nZWhpY2xl 16350\nIHNpZ25pbmc= 16351\nUHJpbWFyeQ== 16352\nY3VycmVuY3k= 16353\nIHNleGU= 16354\nb2Vu 16355\ndGhldGE= 16356\nZW1hbg== 16357\nIGltcHJlc3NpdmU= 16358\nKCdf 16359\nCVU= 16360\nIFRleHRTdHlsZQ== 16361\nX2NudA== 16362\nIHNsaWNl 16363\nKCc6 16364\nIHVuZGVyc3Rvb2Q= 16365\nSGlz 16366\nMjc3 16367\nMDEz 16368\nIGluZm9ybWVk 16369\nIG5pY2s= 16370\nNDI5 16371\nKFRBRw== 16372\naGQ= 16373\nIGVsZWN0aW9ucw== 16374\nZXN0dXJl 16375\nIFNhbnRh 16376\nIENvYXN0 16377\nLnBkZg== 16378\naW5jaXBsZQ== 16379\nLmNsb25l 16380\nYm9ybg== 16381\ndXRh 16382\nIGxpY2Vuc2Vk 16383\nQ3I= 16384\nIGJyZWFk 16385\nIEhvdXN0b24= 16386\nIG5vZA== 16387\nIGhvcGVz 16388\nIENHUmVjdA== 16389\nIGd1aWx0eQ== 16390\nLmdpZg== 16391\nIHJvc2U= 16392\nLkNvbW1vbg== 16393\nVGlw 16394\nQU5L 16395\nIEZD 16396\nRHVyaW5n 16397\nIFN5bWZvbnk= 16398\nIGRlZmVuc2l2ZQ== 16399\na20= 16400\nKT4= 16401\nYXJjaGl2ZQ== 16402\nIFVSSQ== 16403\neWNsaW5n 16404\nLW8= 16405\nIFdlYnNpdGU= 16406\nQU1Q 16407\nNDA1 16408\naXNobWVudA== 16409\nIGRvY3RvcnM= 16410\nRGlyZWN0 16411\nQVJJ 16412\nIFJlZGlyZWN0 16413\naWVyZW4= 16414\nOTYw 16415\nX2Rpc3Q= 16416\neW8= 16417\nIFByb2dyZXNz 16418\nIHp1bQ== 16419\nIG1lbW9y 16420\nIEVE 16421\nIGp1cg== 16422\n5o2u 16423\nX1RBQkxF 16424\nIHV1aWQ= 16425\nRXhwcg== 16426\nLmhlYWQ= 16427\nKCcl 16428\ncG9pbnRlcg== 16429\nIGVzdGltYXRl 16430\nIEdyZWc= 16431\nIGxvYWRlcg== 16432\nIGlPUw== 16433\nIG1lbnM= 16434\nW3k= 16435\nIHJlZnVzZWQ= 16436\nIHByZWNpc2lvbg== 16437\naXNjaA== 16438\nIEFDVElPTg== 16439\nQ2xvdWQ= 16440\nc1dpdGg= 16441\nKHJldA== 16442\nMjky 16443\nX0FERFI= 16444\nX2NvbmY= 16445\nKGRm 16446\nIGxvY2tlZA== 16447\nIHJpc2luZw== 16448\n44O744O7 16449\nIE1z 16450\nIHNjZW5lcw== 16451\nX0VYVA== 16452\nX3Jhdw== 16453\nX3RoZQ== 16454\ncGVvcGxl 16455\nIHJlY29u 16456\nIEZ1bg== 16457\nIGJsZXNz 16458\nIFVwZGF0ZWQ= 16459\nNDIy 16460\nw7xu 16461\nICAgICAgICAgICAgDQo= 16462\ncGVjdGlvbg== 16463\nUmVsZWFzZQ== 16464\nLmxvZ2dlcg== 16465\nIFNZ 16466\nIGNvdW5zZWw= 16467\ndXJk 16468\nX3RydWU= 16469\nIGV2ZXJ5Ym9keQ== 16470\naXZvdA== 16471\nIGhlbmNl 16472\nIE5BUw== 16473\nNzg5 16474\nIG9wcG9zZWQ= 16475\ndW5rbm93bg== 16476\nIERFU0M= 16477\nIENoYWly 16478\nZmFpbGVk 16479\nIElOQ0xVRElORw== 16480\nMzg2 16481\nMzUy 16482\nIHdyaXRlcnM= 16483\ne30K 16484\nw610 16485\nX2NvcHk= 16486\nfTo= 16487\nIEJhdA== 16488\nIGNvbnZlcnRlZA== 16489\nZWRpbmc= 16490\ncGxhY2VtZW50 16491\nIEhvc3Q= 16492\nU291bmQ= 16493\n0LjQvA== 16494\nIHNvdWdodA== 16495\nNDAy 16496\nbWlk 16497\nIHNhbGFyeQ== 16498\nb2dn 16499\n4oSi 16500\nYnVs 16501\nIHdpcg== 16502\ndmFsaWRhdG9y 16503\nX1NUQVQ= 16504\nLnN0b3Jl 16505\nIEJhdHRsZQ== 16506\nxLFu 16507\nIC0tPgoK 16508\nVHJ1bXA= 16509\nZG90 16510\nIENPTlQ= 16511\nLmZldGNo 16512\nIGNvbnRpbnU= 16513\nd2Fz 16514\nIGZyYXVk 16515\nX3RtcA== 16516\nbWl0dGVy 16517\nLnBpY3R1cmVCb3g= 16518\nR0E= 16519\nIHRvdXJuYW1lbnQ= 16520\nLklucHV0 16521\nMzQz 16522\nW3I= 16523\nZXhpb24= 16524\nY2VudGFnZQ== 16525\nIEtvcmVhbg== 16526\ndW5kZWY= 16527\nIEF2YWlsYWJsZQ== 16528\ncmVzaGFwZQ== 16529\nIGtpdA== 16530\nIFN0cnVjdA== 16531\nIFNVQg== 16532\nQW5zd2Vy 16533\nX2xpYg== 16534\nLnR3aXR0ZXI= 16535\nIG9yZQ== 16536\nIERyYWdvbg== 16537\nLkV4dA== 16538\nLGs= 16539\nIGV4cGxhbmF0aW9u 16540\ncmVmcw== 16541\nIERyaXZl 16542\nIFRyYWluaW5n 16543\nMjgy 16544\nLkhhcw== 16545\nMzQx 16546\naW50YWdl 16547\nYmln 16548\nb2xvZ2lzdA== 16549\nZW5uaXM= 16550\nNDYw 16551\n2Yc= 16552\nIGNoaWNrZW4= 16553\nICAgICAgICAgIAo= 16554\n55s= 16555\n44Gn 16556\nIHBlYWs= 16557\nIGRyaW5raW5n 16558\nIGVuY29kZQ== 16559\nIE5FVw== 16560\nbWFsbG9j 16561\nCWZwcmludGY= 16562\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 16563\naW5jbHVkaW5n 16564\nIHByaW5jaXBsZXM= 16565\nIE1haA== 16566\nMjY3 16567\nc3RvcmFnZQ== 16568\nLWtleQ== 16569\nIGtleXdvcmQ= 16570\nJTs= 16571\nIHRyYWluZWQ= 16572\nLmNvbnRyaWI= 16573\nIGt2 16574\nX18nOgo= 16575\nIEJveQ== 16576\ncGFyYW1ldGVy 16577\nIHN1aXRl 16578\nIHRob3VzYW5k 16579\nIGNvb3JkaW5hdGU= 16580\nLWdlbmVyYXRlZA== 16581\n7ZWY 16582\nZ2VuZXJhdGVk 16583\nIGFkbWl0dGVk 16584\nIHB1c3N5 16585\nI3c= 16586\nIHN3aW0= 16587\ndW5pb24= 16588\nTmE= 16589\nMjc0 16590\nIFJveWFs 16591\nLmNoYW5uZWw= 16592\nVXBkYXRlZA== 16593\nX1JPT1Q= 16594\nIHZpdGFs 16595\nMzM1 16596\ncmFjdGlvbg== 16597\nIENydXNoZXI= 16598\nIHByZWNlZA== 16599\nIGhvcml6b250YWw= 16600\nQmx1ZXByaW50 16601\nIGF0dHJz 16602\nIHNtb2tl 16603\n0JI= 16604\nLkVxdWFscw== 16605\nRkI= 16606\nIFJlc291cmNlcw== 16607\ncm9sbGluZw== 16608\nIHBhc3Nlcw== 16609\nIE51bQ== 16610\ncm90YXRl 16611\nZXR5cGU= 16612\nXCIs 16613\nIHNlbnNpdGl2ZQ== 16614\nIHRhbGw= 16615\nP+KAnQoK 16616\nUHJveHk= 16617\naXk= 16618\nX3NlY3Rpb24= 16619\n4oCU4oCU4oCU4oCU 16620\nYnJpZA== 16621\nIGNpcmN1aXQ= 16622\nYXRhbg== 16623\nRU5D 16624\nIGRyaXZlbg== 16625\nIHZvdGVk 16626\nIGVkdWNhdGlvbmFs 16627\nIGludGVyYWN0aW9u 16628\nYWJldGVz 16629\nIHRvbmU= 16630\nIEluaXRpYWxpemVDb21wb25lbnQ= 16631\nIG1lcmVseQ== 16632\nIOye 16633\nY29va2ll 16634\nX2Rpdg== 16635\nIFVJTGFiZWw= 16636\ndmVseQ== 16637\nfSk7DQo= 16638\nX0VOVA== 16639\nIysjKw== 16640\nYXJ0aWNsZXM= 16641\nIFNvdXRoZXJu 16642\nIHN0cm9uZ2Vy 16643\nIEdpdmVu 16644\nIEVyaWM= 16645\nIElS 16646\nYWJzdHJhY3Q= 16647\nVW5kZXI= 16648\nbmFibGU= 16649\nIGluY3JlbWVudA== 16650\nb3Zlbg== 16651\nIGNvaW4= 16652\nX3RpbWVy 16653\nIHN1ZmZlcmVk 16654\nIEZSRUU= 16655\nJ10uIg== 16656\nIFF1ZWVu 16657\nc3RhdHM= 16658\nIG1lZXRpbmdz 16659\nMjc2 16660\nIGVudGVyaW5n 16661\nIGFsb25nc2lkZQ== 16662\nKHNlc3Npb24= 16663\naXRhbHM= 16664\nIGZvdW5kYXRpb24= 16665\nIENyZWRpdA== 16666\nLmRpdg== 16667\nX0FMTA== 16668\ncGNpb24= 16669\nX3N0YXQ= 16670\naWNraW5n 16671\nRGVmYXVsdHM= 16672\nX3NyYw== 16673\nIG91dHB1dHM= 16674\nL0I= 16675\nIGVudGh1cw== 16676\nLWJs 16677\nLkZvcmVDb2xvcg== 16678\nCXRlbXA= 16679\nRmFjZQ== 16680\nIGludGVyYWN0 16681\nIHdlaXJk 16682\nTW91bnQ= 16683\ncmVsbA== 16684\ndWRlbnRz 16685\nIHJlcXVpcmVtZW50 16686\nIFN1cw== 16687\nSUVS 16688\nIGVsZWN0ZWQ= 16689\ncmVmZXJlbmNl 16690\nIE1F 16691\nIHNlcnZlcnM= 16692\nLndhaXQ= 16693\nIHNuYXBzaG90 16694\naWx0b24= 16695\nIHRyaWVz 16696\nIHRpcG8= 16697\nLlRpbWU= 16698\nPnc= 16699\nIG1vdW50YWlu 16700\nIHBvdW5kcw== 16701\nIFsuLi4= 16702\nZXhpc3Rz 16703\nIG5nT24= 16704\nX01BUA== 16705\nIGZseWluZw== 16706\nMzMx 16707\neGlldHk= 16708\nCXZhbHVl 16709\nX0RC 16710\ndW5v 16711\nIHNlYXRz 16712\nVFVSTg== 16713\nLmF1dGhvcg== 16714\nISk= 16715\nb3JjZQ== 16716\nIGluZGljYXRlZA== 16717\nMzE3 16718\nLnNpbg== 16719\nIGFzc2lnbm1lbnQ= 16720\naW1pZW50bw== 16721\nIEZyYW1l 16722\nMzI0 16723\nX2dlbg== 16724\naW5lcnk= 16725\nXyk= 16726\nbWVzc2FnZXM= 16727\nLnNldHRpbmdz 16728\nIE1lYW4= 16729\nIE11c2V1bQ== 16730\naXJx 16731\nYXR0YWNo 16732\nIFBhbGVzdGlu 16733\nX1FV 16734\nX3RhZ3M= 16735\nIGNhc3VhbA== 16736\nZW1lbg== 16737\nQVNTV09SRA== 16738\nNDMy 16739\nJHM= 16740\nIENpcmM= 16741\n0L7QuQ== 16742\nZXRyaWM= 16743\nL1A= 16744\nMDE4 16745\nIGVwb2No 16746\nPGhlYWQ= 16747\nX0NNRA== 16748\nIGdpdA== 16749\nIHBlbmFsdHk= 16750\nb3JwaA== 16751\nX3VzZXJz 16752\nb3Vyc2Vz 16753\nLkRhdGVUaW1l 16754\nYXRlcm5pb24= 16755\nX3Byb2plY3Q= 16756\nIHN1cGVyaW9y 16757\nIERhbQ== 16758\nIFNlYXR0bGU= 16759\nWFk= 16760\nPlRoZQ== 16761\nIEFr 16762\nIGdyYXNz 16763\nLyoNCg== 16764\nKGRpcw== 16765\nIGd1bnM= 16766\nIHRi 16767\nIEtldmlu 16768\nLmFyZ3M= 16769\nIEFo 16770\nb3BlZA== 16771\nKEo= 16772\nY29sdW1ucw== 16773\nYXJndW1lbnRz 16774\nIFdpdGhFdmVudHM= 16775\nX2Z1bGw= 16776\nIERlZmVuc2U= 16777\nU2ltcGxl 16778\nIGRlYXRocw== 16779\nMjk1 16780\nIGV4dGVuc2l2ZQ== 16781\nIFN0aWxs 16782\nIEV4cHJlc3Npb24= 16783\nIEFnZW5jeQ== 16784\nIHBlcmZvcm1pbmc= 16785\nRlg= 16786\nIHVzdWFyaW8= 16787\nVUFM 16788\nU2lkZQ== 16789\nb2Rvcw== 16790\nYXB0b3A= 16791\nIGNyZWRlbnRpYWxz 16792\nX2NhcA== 16793\nYXRpZW50 16794\nIERpc25leQ== 16795\nIGFp 16796\nIGNoaXA= 16797\nIHZvbHQ= 16798\nLm1ha2VUZXh0 16799\nJSUlJSUlJSUlJSUlJSUlJQ== 16800\nIGJlbGllZg== 16801\nX0xPQw== 16802\nIENpdmls 16803\nTmF2aWdhdGlvbg== 16804\nIHJldmVhbA== 16805\nIHZpb2xlbnQ= 16806\nIEZpbA== 16807\nIGNhdGFsb2c= 16808\nZW1lZA== 16809\nc2Nhbg== 16810\nLmNvbnRyb2w= 16811\nIGNvbnN0aXR1dGlvbg== 16812\nQ291bnRyeQ== 16813\nU2VwYXJhdG9y 16814\nX0FQUA== 16815\ndG9waWM= 16816\ndWV0b290aA== 16817\nTUlO 16818\nIGRlc2NyaXB0b3I= 16819\neXQ= 16820\nRVRIRVI= 16821\nIGRpc3RyaWJ1dGU= 16822\nJ30K 16823\nLnRyaW0= 16824\nLkxpbmU= 16825\nIGxibA== 16826\nYXNzZXJ0RXF1YWxz 16827\nIERldA== 16828\nb21ib2s= 16829\nKHdpZHRo 16830\nIHRvcnQ= 16831\nIEVYUFJFU1M= 16832\nYWNv 16833\nVXNpbmc= 16834\nIEJyYW5k 16835\nd2FsbA== 16836\nRU1FTlQ= 16837\nIENvbW11bmlj 16838\nPHVpbnQ= 16839\nIEdVSQ== 16840\nRUdJTg== 16841\nIFJhbmdl 16842\nL2k= 16843\nIFRheWxvcg== 16844\nY29zdA== 16845\nIHJlc3BvbmRlZA== 16846\nIFRoZW1l 16847\nbmNl 16848\nSVNI 16849\nIGZlYXR1cmluZw== 16850\nUmV0dXJucw== 16851\nIEty 16852\nIC4K 16853\nIG5hbQ== 16854\nX2Ni 16855\nVGVzdGluZw== 16856\nIHt9LA== 16857\neWFs 16858\nLmZpZWxk 16859\nIC89 16860\nX1NIT1JU 16861\nbWF0ZXM= 16862\nVGVzdENhc2U= 16863\nYWlubGVzcw== 16864\nIGV2YWx1YXRpb24= 16865\nX0lURU0= 16866\nIFBhY2lmaWM= 16867\nCWs= 16868\nIGNhbnQ= 16869\nIFJvcw== 16870\nKXM= 16871\nIGZldA== 16872\nU1RSSU5H 16873\nMzE5 16874\nIERpc3Bvc2U= 16875\nZ2Fs 16876\nIEpvaW4= 16877\nIFBvcm4= 16878\nIENhdGhvbGlj 16879\nQVJHRVQ= 16880\nY3B1 16881\n56CB 16882\nLnNjcm9sbA== 16883\nMzI4 16884\nSVNJTkc= 16885\naWZlc3R5bGU= 16886\nYW5jZW1lbnQ= 16887\nIG1lcmM= 16888\nIEJyb3dzZXI= 16889\nZXRlcm1pbg== 16890\nIG92ZXJmbG93 16891\nQXZhaWxhYmxl 16892\nIGJvdHRsZQ== 16893\nOlVJ 16894\naWZpY2lhbA== 16895\nIGNvb3Jk 16896\nY2xhcmF0aW9u 16897\nIGNvbmo= 16898\nR0xPQkFM 16899\nb2t1 16900\nIGt3YXJncw== 16901\nY29uZGl0aW9ucw== 16902\ndWx1bQ== 16903\nIGdlbnU= 16904\nIEhlcm8= 16905\n5Y4= 16906\nIHVuZXhwZWN0ZWQ= 16907\nIERBTUFHRVM= 16908\nIGth 16909\nIENvdWxk 16910\nVVBQT1JU 16911\nIFBob3Rvcw== 16912\nIGNvbmZpZGVudA== 16913\nIGRldGVjdGVk 16914\nZGVn 16915\ncmdi 16916\nIHN0cm9uZ2x5 16917\nIH07DQo= 16918\nICk6 16919\nIGxlY3Q= 16920\ndXJzaXZl 16921\nUk9M 16922\nIFdlaWdodA== 16923\nIGVudGVydGFpbm1lbnQ= 16924\nICkpOwo= 16925\nIGdvbm5h 16926\nIGJi 16927\nLmRv 16928\nR1M= 16929\nIG1pc3Rha2U= 16930\nREw= 16931\nIFBST1ZJREVE 16932\nZWFybmluZw== 16933\nTGltaXQ= 16934\naXNzaW9ucw== 16935\nW3Y= 16936\n5LiN 16937\naXJ0eQ== 16938\nRGVs 16939\nIHVuZGVybHlpbmc= 16940\ncHJlbmU= 16941\nIGphdw== 16942\nIERJ 16943\ncGVlcg== 16944\nIG9iamVjdGl2ZQ== 16945\nIGRlcG9zaXQ= 16946\nIGtvbg== 16947\nIGVzcA== 16948\nMjc4 16949\nLnNldFZpc2liaWxpdHk= 16950\nL2xvZ2lu 16951\nPHR5cGVuYW1l 16952\nIGZyYW5jaA== 16953\nL2U= 16954\nMjY5 16955\nUGFyYWxsZWw= 16956\nIHNjb3JlZA== 16957\nIEhvbg== 16958\nIFZpbGw= 16959\naWdh 16960\nIGFudGljaXA= 16961\nX2Fzc2VydA== 16962\nIE9wdA== 16963\nIGRlc2NyaWJlcw== 16964\nd2Fu 16965\nbW91bnQ= 16966\nIG1vbml0b3Jpbmc= 16967\nIHRvdXQ= 16968\n64qU 16969\nfSx7 16970\nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4= 16971\nPWludA== 16972\nIGN1c3Q= 16973\nLS0tLS0t 16974\nIGF0bW9zcGhlcmU= 16975\nUEFS 16976\nb3J0ZQ== 16977\nSVNJQkxF 16978\nIElyb24= 16979\nIE5vdGlmaWNhdGlvbg== 16980\nLmxvZ2dpbmc= 16981\nIEJPT0w= 16982\nLXBvaW50 16983\nIGFmcmFpZA== 16984\nZW50YQ== 16985\nIHRvbW9ycm93 16986\nQGltcGxlbWVudGF0aW9u 16987\nIGVuZ2FnZQ== 16988\nIEFudGg= 16989\nIEZsb29y 16990\nIFVs 16991\nVG9vbHM= 16992\nIGJhYg== 16993\nIGNhcmVmdWw= 16994\n44GE 16995\nIGNydWNpYWw= 16996\nIGNhbGN1bGF0ZWQ= 16997\nIFNB 16998\nIHd5 16999\nOTEx 17000\nRFg= 17001\nX1RBRw== 17002\naW5kZWQ= 17003\nIGpldA== 17004\nIEVuZ2luZWVyaW5n 17005\nLk1BWA== 17006\nZW56 17007\ndmQ= 17008\nIHB1YmxpY2F0aW9u 17009\nICMjIw== 17010\nIGZhY2Vk 17011\ncmFoYW0= 17012\nIENhcHQ= 17013\nMzM2 17014\nQXNzZXQ= 17015\nIENvbnN0YW50cw== 17016\nIGxvYW5z 17017\nX0lQ 17018\nIEZpc2g= 17019\nUmVkdWM= 17020\nX21hdA== 17021\nRGF0ZUZvcm1hdA== 17022\nX21l 17023\nW11bXQ== 17024\nIGludGVncml0eQ== 17025\nIENvdXJzZQ== 17026\nbG9iYWxz 17027\nIGZhY2lsaXQ= 17028\nIGVtYnI= 17029\nIE5n 17030\nLlN5c3RlbQ== 17031\nIG1hbnVmYWN0dXJlcnM= 17032\nIHByb3Zlbg== 17033\nLm9uQ3JlYXRl 17034\nIGFsYXJt 17035\nIMKn 17036\nIGNvbW1vbmx5 17037\naWNvcw== 17038\n5paw 17039\nIFN0YXRpb24= 17040\nfSku 17041\nIEZpbG0= 17042\nd2k= 17043\n54k= 17044\nIGVuZ2FnZWQ= 17045\nU3RhdHM= 17046\nIGdvdmVybm1lbnRz 17047\nNTQw 17048\nIGFmZm9yZGFibGU= 17049\nX3Byb3BlcnR5 17050\nIGFnZXM= 17051\nKCctLQ== 17052\nIGbDtnI= 17053\nIFByb2Zlc3Nvcg== 17054\nIGh5ZHJv 17055\nUHVzaA== 17056\nIG9yZ2FuaXplZA== 17057\nMjg0 17058\nQWNjZXB0 17059\nw6lt 17060\nX2NlbGw= 17061\nIG5i 17062\ncGI= 17063\nQXJ0aWNsZQ== 17064\nIHJlbW92YWw= 17065\nIGF1dGhlbnRpY2F0aW9u 17066\nIEZS 17067\nbGlkZQ== 17068\nIHBsZWFzdXJl 17069\nYXBvbA== 17070\nIHBhcnRpdGlvbg== 17071\nIFNpZGU= 17072\nIGNyaW1lcw== 17073\nIGRlbW8= 17074\naG9sZGVycw== 17075\nIFBha2lzdGFu 17076\nSW5zdHJ1Y3Rpb24= 17077\nIGV4cGVjdGF0aW9ucw== 17078\nMzMy 17079\nLnNjZW5l 17080\nICcp 17081\naGVz 17082\naW5vaXM= 17083\nX1Bybw== 17084\nIG1vbGVj 17085\nYW5kYWw= 17086\nX3Nob3J0 17087\nIGRlZmF1bHRz 17088\nIG5hdGlvbnM= 17089\naW5lbg== 17090\nIHJ0 17091\nT0NL 17092\nUGFja2V0 17093\nU0I= 17094\nIFNIQUxM 17095\nX2NvbnRlbnRz 17096\naXNlY29uZHM= 17097\ndmVydHk= 17098\nw6F0 17099\nR3VpZA== 17100\nbm9t 17101\nIGNvbmNsdXNpb24= 17102\nLlVwZGF0ZQ== 17103\nIGxvdmVseQ== 17104\nIGVtaXQ= 17105\nYmVj 17106\nCQkJCSA= 17107\nIGludGVsbGVjdA== 17108\nIGJyZXc= 17109\nZWN5Y2xl 17110\nRmlyZQ== 17111\nMzU4 17112\nIGFkbWl0 17113\nIGFyYml0 17114\nIGFycmFuZw== 17115\nIE1JTg== 17116\nTWFpbA== 17117\nIE5hdGl2ZQ== 17118\nQ3Vy 17119\nIGNvbnZlbnQ= 17120\nLlJ1bnRpbWU= 17121\nIn0K 17122\nLlJ1bg== 17123\nIHByaW50ZWQ= 17124\nIGNvbnZlbmllbnQ= 17125\nLmFy 17126\nbW9jaw== 17127\nIEFkbWluaXN0cmF0aW9u 17128\n44G+ 17129\nIGVsZWN0cm9u 17130\nZmxhdGU= 17131\nIGxvbWJvaw== 17132\nIGphdmFmeA== 17133\nbmg= 17134\nIHN1cHBsaWVz 17135\nIHZpc2l0aW5n 17136\nYWhs 17137\nIHBvd2Rlcg== 17138\nIHVsdGltYXRl 17139\nIG9yaWVudGF0aW9u 17140\ndXRhcw== 17141\nX3NjYWxl 17142\nQ29uZmlybQ== 17143\ncGhvbmVz 17144\nIE9wZXJhdGlvbg== 17145\nL1Q= 17146\nNDQz 17147\nX0lOVEVS 17148\nIGFpcnBvcnQ= 17149\nIG1ldHJpY3M= 17150\nIHBoZW5vbWVu 17151\nYXVkaW8= 17152\nMzM0 17153\nIG1haQ== 17154\nKEs= 17155\naHU= 17156\nYWxsaW5n 17157\ncm9kdWN0aW9u 17158\nIFRyYW5zcG9ydA== 17159\nIE5PVEU= 17160\n5paH 17161\nIGZld2Vy 17162\nX1RJTQ== 17163\n7Kc= 17164\n0LrQuA== 17165\nQWdl 17166\nRklO 17167\nMjk0 17168\nIOyd 17169\nIEF0dHJpYnV0ZQ== 17170\nZ3JvdXBz 17171\nZXJr 17172\nYXR0bw== 17173\nLmRlZmluZQ== 17174\nLkFzcE5ldENvcmU= 17175\nYXRlZ29yaWE= 17176\nIFNpcg== 17177\nKGZvcm0= 17178\nPFVzZXI= 17179\nLnJvdW5k 17180\nX2RheQ== 17181\nLkFsbA== 17182\nU2VydmxldFJlc3BvbnNl 17183\nLk5v 17184\nbGFyZ2U= 17185\nSUdI 17186\ncXVlbnQ= 17187\nIHZpcnVz 17188\nIHJldHJv 17189\nIGltcGVy 17190\nQml0bWFw 17191\nIHZpY2U= 17192\nIG9mZmVuc2U= 17193\naXN0ZQ== 17194\nIEFVVEg= 17195\nIOqw 17196\nVG9vbFN0cmlwTWVudUl0ZW0= 17197\nR3U= 17198\nIHJhcGU= 17199\nIERhdmlz 17200\nIG92ZXJ3aGVs 17201\nOmZsdXR0ZXI= 17202\nLXRhYmxl 17203\nIENvbnN0cnVjdG9y 17204\nUHJpdmF0ZQ== 17205\nZXZlbg== 17206\nY2hy 17207\nIGFwcGxpZXM= 17208\nX2F0dHJpYnV0ZQ== 17209\nIGNvbnRyaWJ1dGU= 17210\nRVZFUg== 17211\nMjg5 17212\nTGluZXM= 17213\nIEFmZ2hhbg== 17214\nVmlzaXRvcg== 17215\nIFNM 17216\nc2Vhc29u 17217\nQ1U= 17218\nIGludHJvZHVjdGlvbg== 17219\nIG1hdHBsb3RsaWI= 17220\nxZE= 17221\nIG5ld3NwYXBlcg== 17222\n4oCUYW5k 17223\nPHRhZw== 17224\nIGluaQ== 17225\nIGRpdmVyc2U= 17226\nSWdub3JlQ2FzZQ== 17227\nMzUz 17228\nIFVy 17229\nQWdlbnQ= 17230\nIGJ1bGw= 17231\nLmVtaXQ= 17232\nKEV4Y2VwdGlvbg== 17233\nYXJMYXlvdXQ= 17234\nIGluY3JlZGlibHk= 17235\nIFRydXN0 17236\nPXso 17237\nLW5hdg== 17238\nIGVxdWFscw== 17239\nIGxhZHk= 17240\nIFBvZA== 17241\nZGlzYw== 17242\nYWxhbQ== 17243\nIElW 17244\n4pk= 17245\naXZpZHVhbA== 17246\ncGhp 17247\nMDE3 17248\nYWRkZWQ= 17249\nIGRpZmZpY3VsdHk= 17250\nIGNvbXBhY3Q= 17251\nNTMw 17252\nIEFjdGlvblJlc3VsdA== 17253\nY2Vycw== 17254\nX2NsYXNzZXM= 17255\nTm9uTnVsbA== 17256\nIHF1aXQ= 17257\nIHBvdQ== 17258\nU3dpdGNo 17259\naXJz 17260\nLXRlc3Q= 17261\nIEtpbmQ= 17262\nIENhbGVuZGFy 17263\nNDA2 17264\nIHN0cmVhbWluZw== 17265\nfScs 17266\nMjc5 17267\nU1c= 17268\nIHN0ZWFk 17269\nb2Nh 17270\nIHByb3ZpbmNl 17271\nOTc4 17272\nIGNvbHNwYW4= 17273\nIHBlcnNvbm5lbA== 17274\nIEVtcGxveWVl 17275\nIHByb2R1Y2Vy 17276\nIGV2ZXJ5d2hlcmU= 17277\nb2Ri 17278\n0J8= 17279\nYnNvbHV0ZQ== 17280\nYWN0aXZhdGU= 17281\nIGdyaW5kaW5n 17282\nIEJ1aWxkaW5n 17283\nIFNhbmRlcnM= 17284\nKHNj 17285\nIE9mZnNldA== 17286\nLy8vLy8vLy8vLy8v 17287\nfTsNCg0K 17288\nKHsi 17289\nIHNjYW5m 17290\nIFlZ 17291\nCWRlZmVy 17292\nIGpldw== 17293\nIHJlc3RyaWN0aW9ucw== 17294\nLm1w 17295\nW2w= 17296\n5LiL 17297\nbGFiZWxz 17298\ncmVkaWNhdGU= 17299\nYXdlc29tZQ== 17300\nIHdhdmVz 17301\nIGNvbmZyb250 17302\nIG1lYXN1cmVk 17303\nIGRhdGFz 17304\nX2V4aXQ= 17305\nMzU1 17306\nb3R0b24= 17307\nIHNob3VsZGVy 17308\nYXNrYQ== 17309\nKyM= 17310\nICAgICAgICAKICAgICAgICAK 17311\nIHRyb29wcw== 17312\nMjkz 17313\nIFVuZA== 17314\nX2NhcmQ= 17315\nd2ljaA== 17316\nIG5vdXM= 17317\nICIvIg== 17318\nc2I= 17319\nIGNvbW11bmljYXRpb25z 17320\nRXhwb3J0 17321\nIGRlY29kZQ== 17322\ndGhz 17323\naW50ZXJwcmV0 17324\nQnlOYW1l 17325\nIFNwaXJpdA== 17326\nZWRnZXM= 17327\nT0xF 17328\nIEVN 17329\ndGl0 17330\nIFRocm91Z2g= 17331\nIGJpbw== 17332\nIFBhY2thZ2U= 17333\nb3JuZQ== 17334\nMjkx 17335\nIH0u 17336\nNDEx 17337\nYDsK 17338\nIG9rYXk= 17339\nIFplYWxhbmQ= 17340\naWRlbnRpdHk= 17341\nKG5leHQ= 17342\nIEJhbmc= 17343\nTGlicmFyeQ== 17344\nIGhlYXZpbHk= 17345\naWxvbg== 17346\nIGRpcGw= 17347\nIHJvdGF0ZQ== 17348\ncHV0cw== 17349\nKScsCg== 17350\nIERhdGFUYWJsZQ== 17351\nIG1heW9y 17352\nLnRvTG93ZXJDYXNl 17353\nIHNvbWVob3c= 17354\nIE5vcnRoZXJu 17355\nYWxj 17356\nIGNhcGFiaWxpdGllcw== 17357\nIHZpYnI= 17358\nKwo= 17359\nIFN1 17360\nMjg2 17361\nIFJlc2V0 17362\nX21lYW4= 17363\nIGNpZw== 17364\nLmNsb3Vk 17365\nIEJhbmQ= 17366\nIEZhY3Rvcnk= 17367\nIEFyaXpvbmE= 17368\nX2lv 17369\nb3BoZXI= 17370\nIGNvbnNjaW91cw== 17371\nIMO2 17372\nXENvbnRyb2xsZXJz 17373\nX3NwZWVk 17374\nIEZhYw== 17375\nX0NvbQ== 17376\nIEJpYmxl 17377\nd2Vu 17378\nRURJVA== 17379\nIHVubg== 17380\nIFN0YWZm 17381\nIElubg== 17382\nIG1lY2hhbmlzbQ== 17383\nIE1lbWJlcnM= 17384\nIG1pZ3JhdGlvbkJ1aWxkZXI= 17385\nJ10uJw== 17386\nLmdldEludA== 17387\nPHZvaWQ= 17388\nCWZyZWU= 17389\nb2lkcw== 17390\nXFN1cHBvcnQ= 17391\nIGF1dG9tYXRpYw== 17392\nIGNoYW5jZXM= 17393\n0LY= 17394\nIGNvbXBsaWNhdGVk 17395\nW3Jvdw== 17396\nYWhvbw== 17397\nIH0KCgoK 17398\nTW9kZWxz 17399\nV2lu 17400\nIHRhcGU= 17401\naXJ1cw== 17402\naXpvbg== 17403\nb25vbXk= 17404\nKCJf 17405\nOi4= 17406\nLnN0ZXJlb3R5cGU= 17407\nMjk2 17408\nKGVudg== 17409\nX3JlY3Q= 17410\nKHdpdGg= 17411\nIGFzc2VydFRoYXQ= 17412\nIGNvbnN0cmFpbnRz 17413\ncHV0eQ== 17414\nRW1wbG95ZWU= 17415\nNjIw 17416\nVEQ= 17417\nIGd1aXRhcg== 17418\nODc1 17419\nIEpld3M= 17420\nLnByb2Nlc3M= 17421\nIGZpY3Rpb24= 17422\nIFNoYXJlZA== 17423\n4pSA4pSA 17424\nIHByb3BhZw== 17425\nLk5ldA== 17426\nIGFjaGlldmVk 17427\nCVE= 17428\nIG51cnM= 17429\nU2hhcmVk 17430\nX0ZBSUxVUkU= 17431\nIGJlaGF2aW91cg== 17432\nIGNvbHM= 17433\naXNtbw== 17434\nIGZlbWlu 17435\nIGNoYWxsZW5naW5n 17436\nIHBvc3Rpbmc= 17437\nZW5jaWw= 17438\nIGNhcHR1cmVk 17439\nIERvdQ== 17440\nKHdvcmQ= 17441\nIFR1cmtleQ== 17442\ncGFuaWVz 17443\nIHJlcHV0YXRpb24= 17444\nT1JNQUw= 17445\nIGVsaWdpYmxl 17446\ncHJvdG9jb2w= 17447\nNDE0 17448\naWRhcw== 17449\nKGZyb20= 17450\nMzQ0 17451\nIGZpbmFuY2U= 17452\nLXBlcg== 17453\nIGdvdHRlbg== 17454\nSEE= 17455\nZHVyYXRpb24= 17456\nIFBhcmVudA== 17457\nNjc4 17458\nIGludmVudA== 17459\nIHJlc3RhcnQ= 17460\n0L7Qu9GM 17461\ncml0aW9u 17462\nKHJz 17463\nPGJvb2w= 17464\naWVydA== 17465\nIG1vZGlmaWNhdGlvbg== 17466\nIFRY 17467\ncmVhZGNydW1i 17468\nYmFuaw== 17469\nMzI2 17470\nJC8= 17471\nIE1pbGxlcg== 17472\nXSksCg== 17473\nLkNoZWNrZWQ= 17474\nIHNhY3I= 17475\nc2VjdXJpdHk= 17476\nIHBvc2U= 17477\nIEJyYWQ= 17478\nIGZpdG5lc3M= 17479\nIGFubm91bmNlbWVudA== 17480\nYXRpb25Ub2tlbg== 17481\nIHNlcnZlcw== 17482\nbmVlZA== 17483\nIGdlb21ldHJ5 17484\nQVJT 17485\n5oA= 17486\nYW5kaWRhdGU= 17487\nIHNwcml0ZQ== 17488\nX3NwbGl0 17489\nV2Vlaw== 17490\nYWRpZXM= 17491\nPigK 17492\nPz4i 17493\nIC8vLwo= 17494\nIGVpbmVy 17495\nIHdlZWtseQ== 17496\nCWxvZ2dlcg== 17497\nX3BvcA== 17498\nX21hbg== 17499\nIG1pZ3JhdGlvbnM= 17500\nIGFza3M= 17501\nIGJz 17502\nIGZhbGxz 17503\nLldoZXJl 17504\nLWhlaWdodA== 17505\nX2ZlYXR1cmU= 17506\nLk1pbg== 17507\nIGh5cGVy 17508\nIHZvbGF0aWxl 17509\nIHR3ZW50eQ== 17510\nVHlwb2dyYXBoeQ== 17511\nVW5hYmxl 17512\nRGV0 17513\nLGY= 17514\nLW1vZA== 17515\nIHNldHRsZW1lbnQ= 17516\nIGNvbnRyYWN0cw== 17517\nbm9tZQ== 17518\nQmFk 17519\nIEJyaWFu 17520\nNzY4 17521\nKHVzZXJuYW1l 17522\nISEhIQ== 17523\nIGhhY2s= 17524\nLkZpZWxk 17525\nSFI= 17526\nIEpvcmRhbg== 17527\naXph 17528\nIMKg 17529\nIFNoZXI= 17530\nLmhlYWRlcg== 17531\nKG90aGVy 17532\nIER1Yg== 17533\nKG9w 17534\nIFJvdW5k 17535\nIHZpZQ== 17536\nIGFwcGw= 17537\nCUo= 17538\nIEluc2VydA== 17539\nIExQ 17540\ncmVnb24= 17541\nIE1QSQ== 17542\nIGFuY2hvcg== 17543\nYWNh 17544\nw7hy 17545\nIGFkZQ== 17546\nYW5jaG9y 17547\ncXVlZQ== 17548\nIFRyZWVOb2Rl 17549\nIHRhcmdldGVk 17550\nIGxhaWQ= 17551\nQUJFTA== 17552\ndmV0 17553\nIE9yaWdpbg== 17554\nQW50 17555\nLicpOwo= 17556\nZXhwZWN0 17557\nZWRSZWFkZXI= 17558\nIE1ham9y 17559\nIGluY2g= 17560\nQ29tcGFy 17561\nIHByZXZpZXc= 17562\nIGlsbG5lc3M= 17563\nIENPTlRSQUNU 17564\nIEluZGVwZW5k 17565\ndXVpZA== 17566\nIG5vbWU= 17567\nIHRj 17568\nIEF2ZW51ZQ== 17569\naXNhbg== 17570\nIHBocmFzZQ== 17571\nX21vdmU= 17572\nIilb 17573\nNDEy 17574\nIHByb3Zpc2lvbg== 17575\nIGNvbmNlbnRy 17576\nX0lS 17577\nIFV0 17578\nKCkr 17579\nIG5hcw== 17580\nISw= 17581\nIFJvYmlu 17582\naWF0aW9ucw== 17583\nYXRpdHVkZQ== 17584\nIHB4 17585\nIFdpdGhvdXQ= 17586\nL2Jhc2g= 17587\nZWt0 17588\ncmVlbWVudA== 17589\nMzQy 17590\nT2JzZXJ2ZXI= 17591\nMzE4 17592\nIFJlZ2lvbg== 17593\nVUJMSUM= 17594\nIHsvLw== 17595\nS04= 17596\n5bc= 17597\nR2FtZU9iamVjdA== 17598\n5b4= 17599\nZW5jb2Rpbmc= 17600\nICoqKg== 17601\ncHJvamVjdHM= 17602\nIHRr 17603\nIGNoZWVzZQ== 17604\nRU1QTA== 17605\nYXJv 17606\nINin2YQ= 17607\nNjEw 17608\nMzM3 17609\nIGNvbnNpc3Rz 17610\ncmVmcmVzaA== 17611\ndXJlYXU= 17612\nIFNjYW5uZXI= 17613\nIHNvaWw= 17614\nIGZsYXZvcg== 17615\nRGF0YVNvdXJjZQ== 17616\nRXhlY3V0ZQ== 17617\n0LXQvdC40LU= 17618\nIHNoaXQ= 17619\n5YiG 17620\nPGFueQ== 17621\nIHJldHJpZXZl 17622\nIGJlbG9uZ3M= 17623\nLnN0cmlw 17624\nYWJzb2x1dGU= 17625\nIGV4cGFuZGVk 17626\nYm95 17627\nKTot 17628\nIHJlc2N1ZQ== 17629\nLkpMYWJlbA== 17630\nIHJlbHk= 17631\nIGFsaWdubWVudA== 17632\nLWZhbWlseQ== 17633\nIHJlbmQ= 17634\nT0xVTU4= 17635\nIGJvcnJvdw== 17636\nIHF1b3Rlcw== 17637\nIExldw== 17638\nIHNob3dlcg== 17639\nIERFTEVURQ== 17640\nX2xvb3A= 17641\nISIKCg== 17642\nCXJl 17643\nIGF0dGVtcHRlZA== 17644\nYXZlcmFnZQ== 17645\nIFBhaW50 17646\ncXVpc2l0aW9u 17647\nb2xlbg== 17648\nIGxpdGVyYXR1cmU= 17649\nIFJlZmVyZW5jZQ== 17650\nX1RFWFRVUkU= 17651\nIFNlZw== 17652\nIEluZHVzdA== 17653\nY3R5cGU= 17654\nRFVDVA== 17655\nX0hPU1Q= 17656\nIFRyYWRl 17657\nIHBsdWdpbnM= 17658\nIGJyZWFzdA== 17659\ndWxzZQ== 17660\nIGNyZWF0dXJl 17661\nMzcy 17662\n44GZ 17663\nIFdp 17664\nIHN1cHBsaWVk 17665\nY29sbA== 17666\nISgi 17667\nIGZ1Y2tpbmc= 17668\nIENocm9tZQ== 17669\nIFVyaQ== 17670\nIE5hdGlvbg== 17671\nIHZlcnRpY2Vz 17672\nVEhF 17673\nIE9yaWdpbmFs 17674\nb25kZQ== 17675\nIHNoYXJw 17676\nIGNvb2tpbmc= 17677\nMzQ3 17678\nIHsvKg== 17679\nIFBzeWNo 17680\nIEhvbGx5d29vZA== 17681\nPSRf 17682\nLkRvY2s= 17683\nIGdlcg== 17684\nIGJvbmU= 17685\nX2Nvbm4= 17686\nX3NlYw== 17687\neXNpY3M= 17688\nID0i 17689\nMjk4 17690\nU2Fs 17691\nc2Y= 17692\nIGRlZXBseQ== 17693\nYW5nbGVz 17694\nVGVybQ== 17695\nYmVsbA== 17696\nIFF1aWNr 17697\nNTYw 17698\nZW5lcmF0aW9u 17699\nYWRpb0J1dHRvbg== 17700\n5YWl 17701\nfQ0KDQoNCg== 17702\nIGNhcHRpb24= 17703\nbGM= 17704\nIEVM 17705\nLFs= 17706\nICAgICAgDQo= 17707\ncmV0dA== 17708\nKG1ldGhvZA== 17709\nIEZsYXNo 17710\nNDcw 17711\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 17712\nV0lTRQ== 17713\nLnNjYWxl 17714\nIHJvdWdobHk= 17715\nX2NoaWxk 17716\nbWVtb3J5 17717\nYXlpbmc= 17718\nIGluaXRpYWxpemVk 17719\naW5hdG9y 17720\n0LDRgA== 17721\nIHNjYWxhcg== 17722\nIEhv 17723\nYWlyZXM= 17724\nKGNvbHVtbg== 17725\nLmRlc3Ryb3k= 17726\nUEFDSw== 17727\nIGhlbQ== 17728\nYW5nZWw= 17729\nX1NVQg== 17730\nLnF1 17731\nINc= 17732\nREVGQVVMVA== 17733\ncG9zaXRvcmllcw== 17734\nNTAz 17735\nIExlbmd0aA== 17736\nIEZhc3Q= 17737\nIHNpZ25hbHM= 17738\nIC8vJA== 17739\ncmllcnM= 17740\nIGR1bW15 17741\nQU5Z 17742\nIHBlcnNvbmFsaXR5 17743\nIGFncmljdWx0 17744\nUGxhdGZvcm0= 17745\nRVJP 17746\nIFRyYQ== 17747\nIGVub3Jt 17748\nCVc= 17749\nQWN0aW9uUmVzdWx0 17750\nIGF2ZXI= 17751\nW3N0cg== 17752\nICctLQ== 17753\nLlNwcmludGY= 17754\nIGRlYnV0 17755\nINGH 17756\naGV4 17757\nX3V0aWxz 17758\nIHBi 17759\nVUlUYWJsZVZpZXc= 17760\nIHp1cg== 17761\nLmVuY29kZQ== 17762\nNDE2 17763\nIHZhZw== 17764\nLmVycm9ycw== 17765\n0L7QvQ== 17766\nIG1y 17767\nIEF3YXJk 17768\nIGNwdQ== 17769\nIHByZXNzZWQ= 17770\nJ2VzdA== 17771\nIEZlc3RpdmFs 17772\nJ1Q= 17773\nIGFr 17774\ncmVzb2x2ZQ== 17775\nMDQz 17776\nLm1l 17777\nIG5pYw== 17778\nIGdlbnJl 17779\nIGF0dHJpYg== 17780\nIE1vb24= 17781\nIGFycml2ZQ== 17782\nIERhdGluZw== 17783\nIHRt 17784\nLkNvbmZpZ3VyYXRpb24= 17785\nNTA1 17786\nLnJlZA== 17787\nIGdsbQ== 17788\nIHN0YXRpb25z 17789\nc3dpdGNo 17790\nIHRpZWQ= 17791\n5Lq6 17792\nIC8+PC8= 17793\nUXVhbnRpdHk= 17794\ncXVpcnk= 17795\nX3RhYg== 17796\nIGFsZw== 17797\nVG9hc3Q= 17798\ncmVzaXpl 17799\ncXVlc3Rpb25z 17800\nc2NoZW1h 17801\nTGl0ZXJhbA== 17802\nKGVudGl0eQ== 17803\nTkVDVElPTg== 17804\nY2hhbmdlZA== 17805\nX0ZJRUxE 17806\nX0hFSUdIVA== 17807\nIG9yZ2FuaWM= 17808\nUFJF 17809\nIENhdA== 17810\nLkRyYXc= 17811\nRXM= 17812\nIGxvdWQ= 17813\nNjgw 17814\nICAgICAgICAJ 17815\nIEthdA== 17816\nIGhlYXA= 17817\n4oCcSXQ= 17818\nMDcw 17819\nZXRy 17820\nIHVubGlrZWx5 17821\nZXJhbHM= 17822\nL2F1dGg= 17823\nNTAy 17824\ndG9kbw== 17825\nUGxhY2U= 17826\nUG9zdGVk 17827\nQ29tbWVudHM= 17828\nIFRlY2g= 17829\nIEZpbmFsbHk= 17830\nZWdyYXRpb24= 17831\nIG1pbmltYWw= 17832\nIEZpbGVz 17833\nIHRhbWI= 17834\n66Gc 17835\nIFJlbGVhc2U= 17836\nNDI1 17837\nLnJlc2l6ZQ== 17838\nIM8= 17839\nY29sbGVjdA== 17840\nPXA= 17841\nIExJQUJMRQ== 17842\nIHByb2R1Y2luZw== 17843\nLXdyYXBwZXI= 17844\nIHNpbmdsZXM= 17845\nIE5CQQ== 17846\nb3Jy 17847\nZXJlbg== 17848\nLmFkZEFjdGlvbg== 17849\nIHRoZXNpcw== 17850\nZG4= 17851\nUFRZ 17852\nLmRlcw== 17853\nIGJhY3Rlcg== 17854\nIEV4cHJlc3M= 17855\nICopCg== 17856\n5ZE= 17857\nL2FkbWlu 17858\nc2Vjb25kcw== 17859\n5Yqf 17860\ndXNzaW9u 17861\nYWJldGg= 17862\nIENvbXB1dGVy 17863\nIHJ1bGluZw== 17864\nKCIuLi8= 17865\nLkdFVA== 17866\nIE1lZGFs 17867\naXRpb25hbGx5 17868\nY29tbWl0 17869\nZm9jdXM= 17870\nX0xFVkVM 17871\naW5kYQ== 17872\nRmFjdA== 17873\nPW5w 17874\nPSIiPgo= 17875\nIHN1YnNlcXVlbnQ= 17876\ncG9zYWJsZQ== 17877\nLWZsdWlk 17878\nIHRob3JvdWdo 17879\nIHB1YmxpY2x5 17880\nYXB0ZXJz 17881\nIFdpbHNvbg== 17882\nX1BSRQ== 17883\neWFyZA== 17884\n5Lw= 17885\nCWlu 17886\nMzM5 17887\nIHJldmVycw== 17888\nIGJ1bGxldA== 17889\nY3JpYmVk 17890\nbmVzb3Rh 17891\nICgkXw== 17892\nYW5ub24= 17893\nY3Vyc29y 17894\nIGNsb3RoaW5n 17895\nIE11bHRp 17896\nMjg3 17897\nOics 17898\nIHZlc3M= 17899\nb3JkaW5hdG9y 17900\nIGVpbmVt 17901\nQ2Fubm90 17902\nIGFybWVk 17903\nCVY= 17904\n5LiK 17905\nLkZsYXQ= 17906\nIFNlcA== 17907\nIFN1YmplY3Q= 17908\nX2ZvbnQ= 17909\nIGNoYXJhY3RlcmlzdGljcw== 17910\nRG9uZQ== 17911\nZWxu 17912\nIyMjIyMjIyMjIyMj 17913\nUE9T 17914\nIGRlbnNpdHk= 17915\nIFBsYXRmb3Jt 17916\nLWl0ZW1z 17917\nIG92ZXJz 17918\nIHB1c2hpbmc= 17919\n56Q= 17920\nLkNvbm5lY3Rpb24= 17921\nX3Rlcm0= 17922\nIGluaXRpYWxpemF0aW9u 17923\nX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18= 17924\n56w= 17925\nLmRvY3VtZW50 17926\nbGVzaA== 17927\nCWRvY3VtZW50 17928\nIFBpbg== 17929\nw6dh 17930\nIGRlZmluaXRpb25z 17931\nLlBhdGg= 17932\nX1dSSVRF 17933\nIAkK 17934\nPz4KCg== 17935\nIHRlcnJpYmxl 17936\nYmVhbg== 17937\naWNrZXRz 17938\nIFNW 17939\nQnV5 17940\nKHRhc2s= 17941\nIHJlZ2ltZQ== 17942\nZ29vZ2xl 17943\nIGNyYWNr 17944\nLnZpc2l0 17945\nTlVN 17946\nZW5lcmd5 17947\nIHN0cnVjaw== 17948\nX3NhbXBsZQ== 17949\nLnBheWxvYWQ= 17950\nIHJldmlz 17951\nIFNjZW5l 17952\nIHBn 17953\nIGJyZWFrZmFzdA== 17954\nVVJSRU5U 17955\nLmNoYXJBdA== 17956\nX2V4Y2VwdGlvbg== 17957\nIEFudG9u 17958\nIGd1aWRlbGluZXM= 17959\nIGV4aGF1c3Q= 17960\nIEZpbmFuY2lhbA== 17961\nIGluZGVudA== 17962\nIGRlc2t0b3A= 17963\nSGlkZGVu 17964\nRmFpbHVyZQ== 17965\nIHByaW5jaXBsZQ== 17966\nIGl2 17967\nIHNla3M= 17968\nbmV0d29yaw== 17969\nIG51bWJlck9m 17970\nIEFsYmVydA== 17971\nCWxvbmc= 17972\nODAx 17973\nLC4= 17974\nIHplcm9z 17975\nZmFkZQ== 17976\nIFR5cA== 17977\nIFRlcm0= 17978\nIEFydHM= 17979\nLkFwcGxpY2F0aW9u 17980\nIGJlaGFsZg== 17981\n5oi3 17982\nIG1lcmU= 17983\nKGAkew== 17984\nIGF3YXJlbmVzcw== 17985\nZWxwZXJz 17986\nZmxpeA== 17987\nIHdlaWdo 17988\nIGVzdGltYXRlcw== 17989\nLmNoaWxk 17990\nL08= 17991\nIEJpdG1hcA== 17992\nLmJvdHRvbQ== 17993\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 17994\nRXhwZWN0 17995\nZW50bw== 17996\nIEZvcnVt 17997\ndmVyYWw= 17998\nIGphaWw= 17999\nIGFiaWxpdGllcw== 18000\nIEhPTEQ= 18001\nIENpdA== 18002\nIGR5bmFt 18003\nIGdyYXk= 18004\nCQkJCQkJCQkJCQkJCQ== 18005\nLm5leHRJbnQ= 18006\nYW50bHk= 18007\nIEFSSVNJTkc= 18008\nKHByaXZhdGU= 18009\nIHJlamVjdGVk 18010\nIE5pYw== 18011\nIGxlYXRoZXI= 18012\nPXsK 18013\nYWx5dGljcw== 18014\ndGhldGlj 18015\nLlRvcA== 18016\nMzcz 18017\nLlBhZ2U= 18018\nPXtg 18019\nIDsNCg== 18020\nZGVwdGg= 18021\nbWFubg== 18022\nV0Q= 18023\nIFNvbQ== 18024\nLlJpZ2h0 18025\nICl9Cg== 18026\nIHRyYWl0 18027\nw5c= 18028\naWFj 18029\nIHJ2 18030\nU2FtcGxl 18031\nLlhtbA== 18032\nb3BwZWQ= 18033\nINGE 18034\nbGlzdHM= 18035\nIHRlYXI= 18036\naXZlcnNhcnk= 18037\nLmNvbGxlY3Rpb24= 18038\nIENvbnN0aXR1dGlvbg== 18039\nIEh0dHBSZXNwb25zZQ== 18040\nIGJyaWxs 18041\nIFByb20= 18042\naG92ZXI= 18043\nMzY2 18044\nIE1pYW1p 18045\nIGFyZ3Vl 18046\nX2Zsb2F0 18047\nNTA0 18048\nIOOC 18049\nIG5hdA== 18050\nIFRhbA== 18051\nIGludGVncmF0aW9u 18052\nKGN1cg== 18053\nIHJlbW92aW5n 18054\nIGNvZWZm 18055\nIFRob3VnaA== 18056\nIGZvcmVjYXN0 18057\nNDA4 18058\nIFZlZ2Fz 18059\nU2l0ZQ== 18060\nMzQ2 18061\nIHRyYWI= 18062\nIEhlbnJ5 18063\nLWk= 18064\nIGludm9sdmVz 18065\nQlQ= 18066\nIHNsbw== 18067\nSW52b2tl 18068\nIGx1Y2t5 18069\nMDI1 18070\ncmF0 18071\nID8K 18072\nIGhhbmRsZWQ= 18073\nKGZk 18074\nY29udGVudHM= 18075\nIE9GRg== 18076\nUkY= 18077\nIHN0eQ== 18078\nIE1vdG9y 18079\ndGVyeQ== 18080\ndGF4 18081\nTUFQ 18082\nIE1ycw== 18083\nIHBob25lcw== 18084\nIFVJVmlldw== 18085\nIikpKTsK 18086\nKGRldg== 18087\nIElyaXNo 18088\nMDE5 18089\nIHdz 18090\nREk= 18091\nX09GRlNFVA== 18092\nIEV2ZW50cw== 18093\nIHN0YWdlcw== 18094\nIH0vLw== 18095\nIGhhYmVu 18096\nU1RBTkNF 18097\nIFNpbg== 18098\nIE1vbmV5 18099\nKHRvcA== 18100\nIGFwcG9pbnRtZW50 18101\nVkVSU0lPTg== 18102\nbWV0YWRhdGE= 18103\nX2NvbW1lbnQ= 18104\nIGNvbGxlYWd1ZXM= 18105\nbWFwcw== 18106\n4pg= 18107\nCgkK 18108\nKGFs 18109\nX3JlcQ== 18110\nIGZ1dA== 18111\nIGFyY2hpdGVjdHVyZQ== 18112\nMzUx 18113\nIFdIRVRIRVI= 18114\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 18115\nX3NjcmVlbg== 18116\nIHN0eWxlVXJscw== 18117\nIG1vbnN0ZXI= 18118\nLnVw 18119\ncGhpYQ== 18120\nIHByb2Nlc3Nvcg== 18121\nIFRlcnI= 18122\nPScs 18123\nIE1hbnVmYWN0 18124\nIE5U 18125\na2Vs 18126\naWJlcm4= 18127\nCWZpbGU= 18128\nQWxp 18129\ncmllbnRhdGlvbg== 18130\nIC8vIQ== 18131\nYXBvcmU= 18132\nYW5lb3Vz 18133\nIENyZWF0 18134\nZm9sZGVy 18135\nNDE1 18136\nIGhheQ== 18137\nU3VwcHJlc3M= 18138\nKGxlZnQ= 18139\nIGV1cm8= 18140\nIGRpc2NsYWltZXI= 18141\ndXN0cnk= 18142\nc2hpcHM= 18143\nX2Zk 18144\nIEZh 18145\nX2luc2VydA== 18146\nIHJvbA== 18147\naWZ0aW5n 18148\nIENvbW1lbnRz 18149\nX2Jy 18150\nIGxvc3Nlcw== 18151\nIEFkZGVk 18152\nY2hhcmc= 18153\nINC/0L4= 18154\nX3N5c3RlbQ== 18155\nIFNvbWV0aW1lcw== 18156\nIFNwYWlu 18157\nKGdyb3Vw 18158\naWFsaXM= 18159\nIGRvbGxhcg== 18160\nIEFyZ3M= 18161\nNDk5 18162\nMjk3 18163\ncXVpcmVz 18164\nIFRlbg== 18165\nLnNjc3M= 18166\nIHN1cnZpdmU= 18167\ndXNhZ2U= 18168\nIGp1bg== 18169\naW1pdGVy 18170\n77yBCgo= 18171\nIGZpZnRo 18172\ndG9nZ2xl 18173\nIGRlY2xpbmU= 18174\nKCQi 18175\nKExvbmc= 18176\naW5nZQ== 18177\nIHBpbG90 18178\nLWxpZ2h0 18179\nLXJhZGl1cw== 18180\nIHBvZGNhc3Q= 18181\nIG5hdHVyYWxseQ== 18182\nUGFnZXM= 18183\n5Li6 18184\nIERlc3BpdGU= 18185\nIGxpZ2h0aW5n 18186\nIGNyYXRl 18187\nIEJpbmFyeQ== 18188\nIHJlZHVjaW5n 18189\nIGVsZWc= 18190\nIE1vdXNl 18191\nIFRlc3RCZWQ= 18192\nIGJlZm9yZUVhY2g= 18193\nX0FSUkFZ 18194\nUmVkaXJlY3Q= 18195\nMzI5 18196\nIGZsb29k 18197\nIHNoaXBz 18198\nMzYz 18199\nIGVsZWN0cmljaXR5 18200\nKSoo 18201\n6rg= 18202\nIFZpZXQ= 18203\naGVybw== 18204\nIGRpYQ== 18205\nIEtlbnQ= 18206\naGVhcnQ= 18207\nIHRocmVhdHM= 18208\nX2FjYw== 18209\nIHN5bWJvbHM= 18210\naXNjaGVu 18211\nX2luc3Q= 18212\nQ3JpdGVyaW9u 18213\nIFRJTQ== 18214\nLkhlaWdodA== 18215\nNTgw 18216\nIOKAmQ== 18217\nKCk7CgoK 18218\nUHJvZHVjdHM= 18219\nX1NQ 18220\nIEN5 18221\nIGRlcGVuZGVudA== 18222\nZXN0ZQ== 18223\nIGRhdG9z 18224\nZGl0 18225\n0LDQsg== 18226\nSUdOQUw= 18227\nIGxlc3Nvbg== 18228\nIj4n 18229\nIENvdmVy 18230\nIEhvcGU= 18231\nIFRpbWVy 18232\nIGRhZA== 18233\ndmlkZXJz 18234\nIFBob3Q= 18235\nLz8= 18236\ncm9weQ== 18237\nb21pbmc= 18238\nYXNpb24= 18239\nIFwo 18240\nIEVU 18241\nIFJlYWRpbmc= 18242\nIGVwaXNvZGVz 18243\nbG0= 18244\nNDIx 18245\nZWNoYQ== 18246\nIG5ldXJv 18247\nODIw 18248\nIGhhcm1vbg== 18249\nIGxpYmVyYWw= 18250\nLWluZA== 18251\nMzkz 18252\nREFUQQ== 18253\nIGV2ZXJ5ZGF5 18254\nIGRpdmlkZWQ= 18255\nIEFjdGl2ZVJlY29yZA== 18256\nZmlndXJl 18257\nVUE= 18258\n5Lk= 18259\ncmllbmRseQ== 18260\ndGVjaA== 18261\nNjAx 18262\nLmdhbWVPYmplY3Q= 18263\n0LjRgtGM 18264\nMzc0 18265\nIG1vb24= 18266\nZnRpbWU= 18267\nIG5vY2g= 18268\nIFRPUlQ= 18269\nIFZN 18270\nLmluaXRpYWw= 18271\nKGNoaWxk 18272\nIG11c2ljYWw= 18273\nIG9j 18274\nYmFz 18275\nIEhheQ== 18276\nMzYx 18277\nX2xvbmc= 18278\nIG1lbXNldA== 18279\naWxleQ== 18280\nYWRlbHBoaWE= 18281\nU1Y= 18282\ncm9hdA== 18283\nX3R4 18284\nIGxvbg== 18285\nIG5nT25Jbml0 18286\nYnA= 18287\nIEdvbGRlbg== 18288\nQUNIRQ== 18289\nIHdvcnJpZWQ= 18290\nYXpp 18291\nRWFy 18292\nVGFrZQ== 18293\nKGZw 18294\nYnVyZ2g= 18295\nX0RhdGE= 18296\nZ3Jlcw== 18297\nIE9udA== 18298\ncHVz 18299\nIHRyYW5zcGFyZW50 18300\nIHBvY2tldA== 18301\nIHJhbQ== 18302\naWdyYXRpb25z 18303\nLg0KDQo= 18304\nIFso 18305\nIGFkb3B0ZWQ= 18306\nIHJlcG9ydGVkbHk= 18307\nIERyZWFt 18308\nIH0pKTsK 18309\nbG9zaW5n 18310\nIHRlZXRo 18311\nIEJvb2tz 18312\nIiwm 18313\nZW5ueQ== 18314\nTEVNRU5U 18315\nIGdlbA== 18316\nIFBsYW50 18317\nNDM3 18318\nIeKAnQ== 18319\nLmhvc3Q= 18320\nIFJlcGx5 18321\nMzc2 18322\ncmVuZ3Ro 18323\nIHJlY29nbml0aW9u 18324\nIH19Pgo= 18325\nTEE= 18326\nIG1pcnJvcg== 18327\nIGFzc2lzdGFudA== 18328\nKGRldmljZQ== 18329\nIHNwaXJpdHVhbA== 18330\nYnVpbGRlcg== 18331\nwqc= 18332\nIG91dHI= 18333\nIHR0 18334\nIFBFUg== 18335\nIHJhZGljYWw= 18336\nTWV0aG9kcw== 18337\nIHBhY2U= 18338\ndWR5 18339\nIGd1dA== 18340\nIEdyZWVr 18341\nIG5vbmF0b21pYw== 18342\nIFBhcGVy 18343\nX0dQSU8= 18344\nIG9ic3Q= 18345\nLkFk 18346\ndmlyb25tZW50cw== 18347\nIFNvdg== 18348\nMzU2 18349\nKGNvbg== 18350\nIFRyYW5zYWN0aW9u 18351\nLmFzc2lnbg== 18352\nCWNhdGNo 18353\nZWx0ZXI= 18354\nIGJpdGNvaW4= 18355\nX0dS 18356\nIDw/PQ== 18357\nX2xhbmc= 18358\n7J2E 18359\nQnJvd3Nlcg== 18360\nIGNvbnNpZGVyYXRpb24= 18361\nIEV4ZWN1dGl2ZQ== 18362\n6Ze0 18363\nO1w= 18364\nIEpTT05PYmplY3Q= 18365\nIEJlbGw= 18366\nIHNwb2tlc21hbg== 18367\nfn5+fn5+fn4= 18368\nb2NrZXk= 18369\nIEdybw== 18370\nIEF3 18371\nQ29uc3RyYWludA== 18372\nIFByYWN0 18373\nIEV2ZXI= 18374\ncHJpbQ== 18375\nOnsK 18376\nX2lt 18377\nUE4= 18378\nTWlsbGlz 18379\nVU1FTlQ= 18380\nIGJhZ3M= 18381\nw6Vy 18382\nQU5ORUw= 18383\nMzU0 18384\nIGlj 18385\nIHRyYW5zcG9ydGF0aW9u 18386\nIFNhdWRp 18387\naGFuZGxlcg== 18388\nRHJhZw== 18389\nIGhk 18390\nY29sbGFwc2U= 18391\nX1BI 18392\nIHVi 18393\nQVJN 18394\nIEFQUA== 18395\nIHRvbmlnaHQ= 18396\nIGRpbmluZw== 18397\nUmVjb2du 18398\nIGJj 18399\naWd0 18400\nKG51bWJlcg== 18401\nQm9vdA== 18402\nIGVsc2V3aGVyZQ== 18403\nIGFycm93 18404\nYXJnYQ== 18405\nIGRlbGljaW91cw== 18406\nIFNO 18407\nV1I= 18408\nVmFsaWRhdGU= 18409\nIFF1YWxpdHk= 18410\nKGVtYWls 18411\nIGludGVycHJl 18412\naWdhdGlvbg== 18413\nIGNob2NvbGF0ZQ== 18414\nNTI1 18415\nX2VkZ2U= 18416\nIHN0b3Bz 18417\nOmZ1bmN0aW9u 18418\nKXw= 18419\nIHRoYWk= 18420\nIExvYWRpbmc= 18421\nU3Rvcnk= 18422\nVHJpZ2dlcg== 18423\nYnJhbmNo 18424\nIHRk 18425\nZW50aWNhdGVk 18426\nIGFkdmVudHVyZQ== 18427\nIGJsb2NrY2hhaW4= 18428\nRXZlbnRIYW5kbGVy 18429\nIHNxcnQ= 18430\nLlBy 18431\nTG5n 18432\nQmVjYXVzZQ== 18433\nIHZpdg== 18434\nIG9jZWFu 18435\neWx2YW5pYQ== 18436\n0LDRgQ== 18437\nIFV0aWxz 18438\nIGRlc3Blcg== 18439\nIGRlZmVy 18440\nCXJlcXVpcmU= 18441\naGw= 18442\nUmVxdWlyZQ== 18443\nXVw= 18444\nIGRpcmVjdGlvbnM= 18445\nX3Jlc291cmNl 18446\nIHN1YnNjcmliZQ== 18447\nIMO6 18448\nIEhlYXJ0 18449\nZXN0cw== 18450\nLXN1Yg== 18451\nIFJo 18452\nZm9yRWFjaA== 18453\nIGRlbGlnaHQ= 18454\nIHRlcnJpdG9yeQ== 18455\nLmNvbmN1cnJlbnQ= 18456\nICgr 18457\nanBn 18458\nIHByZXBhcmF0aW9u 18459\nIHJvdW5kZWQ= 18460\nQ29tbQ== 18461\nLkxlZnQ= 18462\nIG9waW5pb25z 18463\nIE5hdmlnYXRpb24= 18464\nKGZpcnN0 18465\nIiwk 18466\nIGhpcmU= 18467\nIGRldGVjdGlvbg== 18468\nLmdldEVsZW1lbnRz 18469\nIGVwcw== 18470\nIHNrbGVhcm4= 18471\nIGN6 18472\nIC8+DQo= 18473\nbWV0aWM= 18474\nIHRyYW5zZm9ybWF0aW9u 18475\n5Y+3 18476\nIHJnYg== 18477\naXN0cmlidXRpb25z 18478\nIGltcGxpY2l0 18479\nL2lu 18480\nZGVzdGluYXRpb24= 18481\n0LDRgtGM 18482\nWmVybw== 18483\nIHVuc2V0 18484\nOTIw 18485\nLndoZXJl 18486\nLmdv 18487\nIGZvcm1hdGlvbg== 18488\nIGRlY2xhcmF0aW9u 18489\nKCkNCg0K 18490\nIEV4cGw= 18491\nCQkJICA= 18492\nL3Bybw== 18493\nLkpTT04= 18494\nNDQx 18495\nIGRlc2s= 18496\nLnN1YnN0cg== 18497\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 18498\nbHlu 18499\ncHNvbg== 18500\nNDA3 18501\nZGlzYWJsZQ== 18502\nIEZ1bmM= 18503\nCUFzc2VydA== 18504\nIE1BUks= 18505\nIGRlZmVhdA== 18506\nIGJsaW5k 18507\nIGNvbnN0YW50cw== 18508\nMzYy 18509\nLmhlYWRlcnM= 18510\nVUlMRA== 18511\nIGV4cGVuc2Vz 18512\nUGl4ZWw= 18513\nIGhy 18514\nIGZlbA== 18515\nIEVhc3Rlcm4= 18516\nNDI0 18517\nNDkw 18518\nX2RlbA== 18519\nMzU3 18520\nIEN1Yg== 18521\nIHNx 18522\nCWNvdW50 18523\nIERpcmVjdG9yeQ== 18524\nIGV4Y2x1cw== 18525\nIGhpc3Rvcmlj 18526\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 18527\nIGNvbXBvc2l0aW9u 18528\nIGRhdGFHcmlkVmlldw== 18529\nIEJ1cm4= 18530\nIEJD 18531\nTWFzdGVy 18532\nIHNwYXdu 18533\nIGJlYXJpbmc= 18534\nLlNldEFjdGl2ZQ== 18535\naWxv 18536\nIGdhbGxlcnk= 18537\nIGZvdW5kZWQ= 18538\nIGF2YWlsYWJpbGl0eQ== 18539\nLnNxcnQ= 18540\nIHBlcw== 18541\nIERPTQ== 18542\nbWF0ZQ== 18543\nT2N0 18544\nIG1hdGNoZWQ= 18545\naXRpdml0eQ== 18546\nIGFueGlldHk= 18547\nLnByaWNl 18548\nIEluc3RhbnQ= 18549\n7Io= 18550\nIHR1dA== 18551\nSUNvbGxlY3Rpb24= 18552\nLnNoYXJlZA== 18553\nX3NxbA== 18554\ndGJs 18555\nbGlicmFyeQ== 18556\nX2Rlc3Ryb3k= 18557\nZXJtYWw= 18558\nIE5vdGVz 18559\nIEVpbg== 18560\nIHNvdXRoZXJu 18561\nIE9USEVSV0lTRQ== 18562\nIG1hY3Jv 18563\nLmxvd2Vy 18564\nY2xz 18565\nQ29udGVudFZpZXc= 18566\nLmxpbms= 18567\nY29uc3RhbnQ= 18568\nIEJlcw== 18569\nIHNvbWVib2R5 18570\nbmI= 18571\nMzk5 18572\nIj57 18573\nKGxvY2Fs 18574\nLi4uLi4= 18575\nIE51bGw= 18576\nbXg= 18577\nIMOn 18578\nIHBhdXNl 18579\nLS0tLS0tLS0tLS0= 18580\nX01P 18581\nIENN 18582\nIGZvcktleQ== 18583\nIERWRA== 18584\nIGNsb3Nlc3Q= 18585\nX0RFVklDRQ== 18586\nIFN0ZXBoZW4= 18587\nIEJCQw== 18588\nIFRyYXZlbA== 18589\nUGFpbnQ= 18590\nIFJlc3VsdHM= 18591\nIFJ1bGU= 18592\nIHRw 18593\nIHJhdGluZ3M= 18594\nY2lu 18595\nY3N2 18596\nPi8= 18597\nIEdPUA== 18598\nbGFk 18599\nINGA 18600\nIGluZGV4UGF0aA== 18601\nbWF0cml4 18602\nPWY= 18603\nYXJzZWQ= 18604\nIH0pOw== 18605\nIENvcw== 18606\nIFNjb3Jl 18607\nIHRhaw== 18608\nIEVTUA== 18609\nIElOQw== 18610\nX05VTEw= 18611\nLWZsZXg= 18612\nIl1b 18613\naW50bw== 18614\nZWxhbmQ= 18615\nQXV0aG9yaXphdGlvbg== 18616\nX0ZBTFNF 18617\nIGdhdGU= 18618\nIHZpZA== 18619\naXN0ZW50 18620\nVElNRQ== 18621\nIHJld3JpdGU= 18622\nIHRpZQ== 18623\nIGFyY2hpdmU= 18624\nNTEx 18625\nLmV2ZW50cw== 18626\nLmdldFBhcmFtZXRlcg== 18627\nIFBlcm1pc3Npb24= 18628\nIHByb2dyYW1tZQ== 18629\nIOk= 18630\nanVk 18631\nIGNhbWVyYXM= 18632\nMzM4 18633\nMzQ5 18634\nKHN5cw== 18635\nIFN5cmlhbg== 18636\nIGltcHJvdmVtZW50cw== 18637\nIGhpcA== 18638\nIHN1aWNpZGU= 18639\nIHNjaG9sYXI= 18640\nIGNvbXBhdGlibGU= 18641\nMDIy 18642\ncmVtb3Rl 18643\nLmRvd24= 18644\nRlVOQ1RJT04= 18645\nIG1hbmFnaW5n 18646\nIFVJS2l0 18647\nLnJhdw== 18648\nPj4+Pg== 18649\nMzcx 18650\nIGRlbWFuZHM= 18651\nZWxsaXRl 18652\nIGRlbnQ= 18653\nIE1pY3Jv 18654\n5Y+W 18655\nJ11bJA== 18656\nIElF 18657\naW1lbnNpb24= 18658\nIHRyZW0= 18659\nNjMw 18660\nIGdhaW5lZA== 18661\nLndpdGg= 18662\nLm9r 18663\naG91 18664\nIGJvbQ== 18665\nYW1wYWlnbg== 18666\nIGpvaW5pbmc= 18667\nZmlzaA== 18668\nIGFkZFN1YnZpZXc= 18669\nODYw 18670\nIG5vcnRoZXJu 18671\nLmNvcg== 18672\nb3JldA== 18673\nRGll 18674\naW5pc2g= 18675\nX2NvbXA= 18676\nIGF0dGVuZGVk 18677\nIGNvbGxhcHNl 18678\nIFNT 18679\nYWNlbnQ= 18680\nX0VRVUFM 18681\nIERlZXA= 18682\nUkdC 18683\nCXRlc3Q= 18684\nb2x2ZXM= 18685\ndXNldA== 18686\nVW5pdHlFbmdpbmU= 18687\nd3JpdGVy 18688\nUmVzb2x2ZXI= 18689\nLCU= 18690\naWZmZXJlbmNl 18691\nX3JlbW92ZQ== 18692\nb25kYQ== 18693\nIGZlbW1l 18694\nMzg1 18695\nZGVjb2Rl 18696\nQnJhbmNo 18697\nIGZsdXNo 18698\nIGlubm92YXRpdmU= 18699\nVGVzdHM= 18700\nIFsnLi8= 18701\nIGNvdmVyaW5n 18702\nLmFkbWlu 18703\ndWx0aXBhcnQ= 18704\nKGxhbWJkYQ== 18705\n77u/bmFtZXNwYWNl 18706\nIFNwb3J0 18707\nICEo 18708\nYWNsZXM= 18709\nIGRlcHJlc3Npb24= 18710\nIEtvbmc= 18711\nNTcw 18712\nIHBlcnQ= 18713\nIENvbm4= 18714\nIE90aGVyd2lzZQ== 18715\nL2hvbWU= 18716\nc3VwcG9ydGVk 18717\nIHBpbms= 18718\nIGludml0ZWQ= 18719\nw7Fvcw== 18720\nX2VuYWJsZWQ= 18721\nIC0K 18722\nRlc= 18723\nZW5lcnM= 18724\nIE1Z 18725\nIHN1Z2dlc3Rpb25z 18726\nQ2FudmFz 18727\nIGZlcg== 18728\nIE1hcmtldGluZw== 18729\nQFRlc3Q= 18730\ndW50dQ== 18731\nIFZlbg== 18732\nIENvdQ== 18733\naXZhbHM= 18734\nRG9uYWxk 18735\nbGltaXRlZA== 18736\nCQkJCQkJCg== 18737\nIGFuYWx5c3Q= 18738\nKGVudHJ5 18739\nIHJlcHJlc2VudGF0aXZl 18740\nX2F0dHJpYnV0ZXM= 18741\nIGZ1cg== 18742\nLmhpZGU= 18743\ncmVzcA== 18744\nYWRvcmVz 18745\ncmlkZXM= 18746\nIEpvc2g= 18747\ncm9ib3Q= 18748\nIE5BVA== 18749\nIHNlc3Nv 18750\nIGludGVncmF0ZWQ= 18751\nOnRydWU= 18752\ncGFydHM= 18753\nIHN0dXBpZA== 18754\nOmV2ZW50 18755\nQGVuZHNlY3Rpb24= 18756\nIHB1 18757\nLlRhYmxl 18758\nIFlpaQ== 18759\nYDsKCg== 18760\nIGNsYW5n 18761\nPSIiPg== 18762\nZW5nYW4= 18763\nX3BhcmFtZXRlcnM= 18764\nLmludGVybmFs 18765\nIE1vZGVybg== 18766\nIG1ldHJpYw== 18767\nIHNlbWk= 18768\nPXt7Cg== 18769\nNzA3 18770\nLmFtYXpvbg== 18771\nIEJC 18772\nYWludHk= 18773\ndmlld3BvcnQ= 18774\nMzY3 18775\nIHN0YXJ0QWN0aXZpdHk= 18776\nZGlzcGF0Y2g= 18777\nKioqKio= 18778\nIGZsYXY= 18779\naWZmZXJlbnQ= 18780\nMzgy 18781\nW3RoaXM= 18782\nIHN0YWtl 18783\nIGFyZ3VlZA== 18784\ndmlvdXNseQ== 18785\nLndvcms= 18786\nIE9haw== 18787\nT2xk 18788\nKGFzeW5j 18789\nbm90ZXM= 18790\nIGZsaXA= 18791\nIGRpc2Fn 18792\nIFRF 18793\nCWVycm9y 18794\nPCc= 18795\nIMK7Cgo= 18796\nIGZpbHRlcmVk 18797\nIE1hY2g= 18798\nIGh1bmc= 18799\nX2R1bXA= 18800\nX3NhbXBsZXM= 18801\nLWRpc21pc3M= 18802\nIHJheQ== 18803\nSW1wbGVtZW50ZWQ= 18804\nREs= 18805\nIGplZA== 18806\nMDkw 18807\nIGJyZWFrcw== 18808\nIGZpdHM= 18809\nLmdy 18810\nIFplcm8= 18811\nb3Jv 18812\nIGVxdWFsbHk= 18813\nICdb 18814\nIGNvbmNlcm5pbmc= 18815\nPG1ldGE= 18816\ncGxheWVycw== 18817\nX1BPUw== 18818\nX3NpbQ== 18819\nSmFu 18820\nIHlvdXJz 18821\nCU4= 18822\nIHNwaXI= 18823\nIGNoYW1waW9u 18824\nIEFuYWx5c2lz 18825\nYXBh 18826\nIE5TTG9n 18827\nX2xpbmVz 18828\nw7Fh 18829\nCQkgICAgICAg 18830\nODE5 18831\nLlNj 18832\nUmVw 18833\nZXRyb2l0 18834\ndXJhYmxl 18835\nTUlU 18836\nY29tcGF0 18837\nb3duZWQ= 18838\nX2luZGljZXM= 18839\nXSwNCg== 18840\nIGRpc2NvdmVyeQ== 18841\nIERpZWdv 18842\nb2Jp 18843\nLkluZGV4 18844\nIHRyZW5kcw== 18845\nUExBWQ== 18846\nLm5v 18847\nIGxlbnM= 18848\nX2NmZw== 18849\nIGFubm8= 18850\nYWdhbg== 18851\nIHBlcmlvZHM= 18852\ndGVybXM= 18853\neXo= 18854\nIGF0dGFja2Vk 18855\naWJyYXRpb24= 18856\nUEVDSUFM 18857\nX2dyYWQ= 18858\nIGFjY29yZGFuY2U= 18859\nLlJlYWRMaW5l 18860\nLmRldmljZQ== 18861\ncml4 18862\nLmNvbnRhaW5lcg== 18863\nbWF5 18864\nZXJjaXNl 18865\nIEx1 18866\nIHJn 18867\nINGB0YI= 18868\nCQkKCQkK 18869\nKHVu 18870\nVEVSTkFM 18871\nIGxlc3NvbnM= 18872\nIGFsbGVnYXRpb25z 18873\nIHRyYW5zbWlzc2lvbg== 18874\nLlJlZg== 18875\nTW9iaWxl 18876\nIFRvdXJuYW1lbnQ= 18877\nIE51dA== 18878\nIEdh 18879\nIENhcGl0YWw= 18880\nZGVmaW5pdGlvbg== 18881\nLWV4cA== 18882\nY2xlYW4= 18883\nIGZhbnRhc3k= 18884\nIGVuaGFuY2U= 18885\nZW50ZW5jZQ== 18886\nMDMx 18887\nJ106Cg== 18888\nYWNrZXRz 18889\nIGNlbGVicmF0ZQ== 18890\nQCIs 18891\nU2VyaWFsaXplRmllbGQ= 18892\nIGFycmF5cw== 18893\ndGI= 18894\nCXN0 18895\nW2Fzc2VtYmx5 18896\nKHJlZw== 18897\nLmNhdGVnb3J5 18898\nIGltcHJvdmluZw== 18899\nIHNhbG9wZQ== 18900\nQnl0ZUFycmF5 18901\nT3JpZ2luYWw= 18902\nIFt7Cg== 18903\n5Zue 18904\nIENsaW4= 18905\nb2VuaXg= 18906\nIFNhbXN1bmc= 18907\nIG1haW50YWluZWQ= 18908\nIGFnZW5kYQ== 18909\nZmFpbA== 18910\nIHByZXNlbnRz 18911\nIHRpbWluZw== 18912\nLm1hcms= 18913\nJz48 18914\nIHByb21vdA== 18915\nIGluY2w= 18916\nX29ubHk= 18917\n66W8 18918\nIEF0dG9ybmV5 18919\nLWRhdGU= 18920\nIGxhbmRzY2FwZQ== 18921\nIGZ1 18922\nU1k= 18923\nLnByb3A= 18924\nIEFycg== 18925\ncGFn 18926\nUGFyYWxsZWxHcm91cA== 18927\nJzoNCg== 18928\nIGxvZ3M= 18929\nYXVuY2g= 18930\ndW5jaQ== 18931\nbmFtYQ== 18932\nVGFibGVDZWxs 18933\naXNzdWVz 18934\nLns= 18935\nZWN1cml0eQ== 18936\nX2V4ZWM= 18937\nb2xkcw== 18938\nIGhvc3Rz 18939\nIHByb3Rv 18940\nX2ltcG9ydA== 18941\nX3NvcnQ= 18942\nIEJvdw== 18943\nIE5vcm1hbA== 18944\nIEZhcm0= 18945\nLmNyZWF0ZVBhcmFsbGVsR3JvdXA= 18946\nUm90YXRpb24= 18947\nLmVycg== 18948\nIHBsZWFzZWQ= 18949\naXRhZ2U= 18950\nLldo 18951\nCQkgICAg 18952\nTVI= 18953\nIE1PUkU= 18954\nIE5hdHVyYWw= 18955\nX3RyYW5zZm9ybQ== 18956\nQkFTRQ== 18957\nZW5lcmFs 18958\ndXRkb3du 18959\nLmNvbW1vbnM= 18960\nV1Q= 18961\nIGFhbg== 18962\nLlJlc3VsdA== 18963\nZG9n 18964\nIGNsaWNraW5n 18965\nKSwKCg== 18966\nI2xpbmU= 18967\nT3BlcmF0b3I= 18968\nIGNpdg== 18969\nIG1lcmc= 18970\nb2J1Zg== 18971\nbmd0aGVu 18972\nIFt7 18973\nIGNhbmNlbGw= 18974\ndHJpZ2dlcg== 18975\nLjo= 18976\nV09SSw== 18977\nZGVjbGFyZQ== 18978\nIGRlY3JlYXNl 18979\nxZtjaQ== 18980\nbG9vbQ== 18981\nLk5vbmU= 18982\nIE1J 18983\nIEphc29u 18984\nIGhlYWx0aGNhcmU= 18985\naWFtb25k 18986\nc3lsdmFuaWE= 18987\nKng= 18988\nIFJh 18989\nW2I= 18990\nIHByaW50aW5n 18991\ncGhhYmV0 18992\nIExhYm91cg== 18993\nb3BwZXI= 18994\nIHppam4= 18995\nLXRhcmdldA== 18996\nX0ZVTkNUSU9O 18997\nIG9jdA== 18998\n0LXQvdC40Y8= 18999\n5Zyo 19000\nIHdlc3Rlcm4= 19001\nIGNvbXB1dGVycw== 19002\nIFJFVA== 19003\nSGFzaE1hcA== 19004\nW1N0cmluZw== 19005\nZ2V0VmFsdWU= 19006\nX0RBVEU= 19007\nLk5leHQ= 19008\nIEZpZg== 19009\nw6ls 19010\naWNrZWQ= 19011\n5o4= 19012\nLU1N 19013\nIHsKCgo= 19014\nIGNvbnRhY3Rz 19015\nIGRpZ2l0cw== 19016\nUHJvZHU= 19017\nIHVudXN1YWw= 19018\nIHJhcGlkbHk= 19019\ndHVyZXM= 19020\nIGFuZ3J5 19021\nY2FuY2Vs 19022\neHh4eA== 19023\nX3BhcnNlcg== 19024\naWRpdHk= 19025\nX1BSRUZJWA== 19026\nNzEw 19027\nIG1laHI= 19028\nIHJhcmVseQ== 19029\nZXRoZQ== 19030\nb3Blcw== 19031\nICUu 19032\nd29ya3M= 19033\nIHRoZXRh 19034\nIGNvbnRyaWJ1dGlvbg== 19035\nIFRvbnk= 19036\nIHNxdWFk 19037\nNTM3 19038\n0LDQuQ== 19039\nIMOubg== 19040\ndGhlcmU= 19041\nb3V0ZWQ= 19042\nCXE= 19043\nmYI= 19044\nZ29vZA== 19045\nTEk= 19046\n6aG1 19047\nIExpdmluZw== 19048\naXphYmV0aA== 19049\nIGt0 19050\nIERhbGxhcw== 19051\nXV0sCg== 19052\nIC8+Cgo= 19053\nIHJhaXNpbmc= 19054\nL3JvdXRlcg== 19055\nX2dhbWU= 19056\nMzY4 19057\nIENVUg== 19058\nemVucw== 19059\nLmVz 19060\nIGZvbnRXZWlnaHQ= 19061\nKGZ1bmM= 19062\nbm90aWZpY2F0aW9u 19063\nICcuLi8uLi8uLi8= 19064\nIGJsYW1l 19065\n44CCCgoKCg== 19066\nYW5jbw== 19067\nOTgw 19068\nSWRlbnRpdHk= 19069\nZm9sbG93 19070\nIGFydHM= 19071\neHM= 19072\nIG9mZmljaWFsbHk= 19073\nIFN0dWRpbw== 19074\nIHJlY29tbWVuZGF0aW9ucw== 19075\nIGxvY2FsZQ== 19076\nIGFtYXRldXI= 19077\nIEVuYWJsZQ== 19078\nIGNhcHM= 19079\nLkVuZA== 19080\nMzg4 19081\nLWFkZA== 19082\nX2dzaGFyZWQ= 19083\nIENU 19084\nRm9yY2U= 19085\nCiAgICAgICAgICAgIAo= 19086\nIG9yYW5nZQ== 19087\nIGxw 19088\nIGFuc3dlcmVk 19089\nLkdyaWQ= 19090\nIGR1YWw= 19091\nIHN0cmF0ZWdpYw== 19092\nIG5vYm9keQ== 19093\nIGZhdGFs 19094\nX2VzdA== 19095\nKGVs 19096\nIOyg 19097\nIEJ1ZGQ= 19098\nQUlU 19099\nX2ZhY3Rvcg== 19100\nLW9uZQ== 19101\nIEhBVkU= 19102\nIg0KDQo= 19103\nNzYw 19104\nUHJvZg== 19105\nIMOkcg== 19106\nc3RyaW5ncw== 19107\nIGRpcnR5 19108\nIEZhY2U= 19109\nIEJlZ2lu 19110\nIEJ1cw== 19111\nIHdpcw== 19112\n5a2X 19113\nIHNwZWFrZXI= 19114\nIGNhcnJpZXI= 19115\nIE9t 19116\nIGhhZG4= 19117\nQWxsb3c= 19118\nOjpfXw== 19119\nIHZlcmI= 19120\nIENvbXBsZXRl 19121\nIEVhc3k= 19122\nIGJpbGxz 19123\nICAKCg== 19124\nVmVydGljYWw= 19125\nIHByb24= 19126\nIERlZmluZQ== 19127\nIGxvb2t1cA== 19128\ndmFyaWFibGVz 19129\nIHBhbmRhcw== 19130\ndW1lcw== 19131\nIGlubm9j 19132\nIHNldFVw 19133\nIENoYW1waW9uc2hpcA== 19134\nYXJ0aXN0 19135\nIENUeXBl 19136\nRm91bmRhdGlvbg== 19137\n4LmI 19138\nIFNldHVw 19139\nNDI4 19140\nIHJlY2lwZXM= 19141\nIFVJQ29sb3I= 19142\nIEZpZ2h0 19143\nIGF1dGhvcml6ZWQ= 19144\nX2NsaWNr 19145\nOTkw 19146\nX3N1Y2Nlc3M= 19147\nYW5nYW4= 19148\nIE1vdW50YWlu 19149\nIERvY3Rvcg== 19150\nIGVnZw== 19151\nIE1lZGljaW5l 19152\nY2xlcw== 19153\nYC4K 19154\nW2ludA== 19155\nZGFzaGJvYXJk 19156\nIEFwcHJv 19157\nLWRy 19158\nIHByb2R1Y2Vz 19159\nIHJlbnRhbA== 19160\nIHJlbG9hZA== 19161\nMzgx 19162\nIGFycml2YWw= 19163\nc3BvdA== 19164\nIHVuZGVydA== 19165\nMzc4 19166\nIGVxdWlwcGVk 19167\nIHByb3ZlZA== 19168\nIGNlbnRlcnM= 19169\nIGRlZmluZXM= 19170\nYWxzbw== 19171\nIG9wYWNpdHk= 19172\nIFVuZm9ydHVuYXRlbHk= 19173\nIElsbGlub2lz 19174\nINC90LU= 19175\nIFRlbXBsZQ== 19176\nIFRyYWls 19177\nIEtlbGx5 19178\nIG1lYXN1cmVtZW50 19179\nIHNlcGFyYXRlZA== 19180\nLWNpcmNsZQ== 19181\nSGV5 19182\nIFJFQUQ= 19183\naWdpdHM= 19184\nIGli 19185\nIE1PRA== 19186\nYXR0ZXJ5 19187\n0LDQtw== 19188\nIHZlbmQ= 19189\n0LXQvdGC 19190\nIEh0dHBDbGllbnQ= 19191\nMzU5 19192\nc2FmZQ== 19193\nX0FTUw== 19194\naWNpdA== 19195\nIENvbnN0cnVjdA== 19196\nIENsbw== 19197\nIFNpeA== 19198\nX1RPS0VO 19199\nKGJsb2Nr 19200\nIHdhcm5lZA== 19201\nLyoh 19202\nITwv 19203\nYWNhZGVz 19204\nIG1hcmc= 19205\nZXJhc2U= 19206\nIGRpc3BsYXlz 19207\naXN0cmF0b3I= 19208\nZ2V0cw== 19209\nIGd0aw== 19210\nX0dFTkVS 19211\nbmVk 19212\nXyU= 19213\nIGZhdm91cml0ZQ== 19214\nIEJydQ== 19215\nIMOh 19216\nc2Vjb25kYXJ5 19217\nIG1hc3Q= 19218\nIHNvcGg= 19219\nIFNhZmV0eQ== 19220\naGFyZA== 19221\nMDYy 19222\ncmFpc2U= 19223\nIEV4Y2hhbmdl 19224\nIGNvbnRlbXBvcmFyeQ== 19225\nIGRyZWFtcw== 19226\nIHRlbA== 19227\nIG5laWdoYm9ycw== 19228\nIEhvbHk= 19229\nMzgz 19230\nLm1lYW4= 19231\nODEw 19232\nZW1pdA== 19233\nIE1lc3M= 19234\nQ2FzdA== 19235\nTkVDVA== 19236\ncGx1Z2lucw== 19237\nIHJi 19238\nd3I= 19239\nIGh1Yg== 19240\nIFN0dWRpZXM= 19241\nNTYy 19242\nIHBvc3Nlc3Npb24= 19243\nJCgnLg== 19244\nZW5zaXRpdmU= 19245\nIGFkZENyaXRlcmlvbg== 19246\nX18u 19247\nIGV4cGVydGlzZQ== 19248\nQXJjaA== 19249\nIGN1Yg== 19250\nZXJ2ZXJz 19251\nIHBhcnRpY2xlcw== 19252\ndWFy 19253\nIGJvdW5kYXJ5 19254\nKScs 19255\nYWpv 19256\nIHByZWY= 19257\nOmA= 19258\nIGhhcmFzcw== 19259\naXU= 19260\nIHJlYWNoaW5n 19261\nIG1lZw== 19262\nIHpv 19263\nKElE 19264\nX3JlcXVpcmVk 19265\nIHPDqQ== 19266\nIFF1ZXVl 19267\nQU8= 19268\nIGdlbQ== 19269\nODEy 19270\ncHRvbg== 19271\nODgw 19272\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 19273\nNjYw 19274\naWpr 19275\nKHsNCg== 19276\nIGNvbGxpc2lvbg== 19277\nIFVrcmFpbmU= 19278\nIC0qLQo= 19279\nTlNJbnRlZ2Vy 19280\nX0JMT0NL 19281\nNTY3 19282\nIFRleHR1cmU= 19283\nIGRlY2xpbmVk 19284\nbmFu 19285\nX3dhaXQ= 19286\nIHBvbGl0aWNpYW5z 19287\nNDEz 19288\nIGNvaW5z 19289\nIGRlcml2 19290\naGVscGVy 19291\nIFBlcmhhcHM= 19292\nLnJlY3Q= 19293\nIFBvbHk= 19294\nYWJsaW5n 19295\nfS8+Cg== 19296\nIGlubm92YXRpb24= 19297\nXyI= 19298\nICk7DQoNCg== 19299\nIHNwb3Rz 19300\nIGNob29zaW5n 19301\nLmNz 19302\nIGZsZXhpYmxl 19303\nVUludA== 19304\nNDM1 19305\nOTMw 19306\nIHNjcmF0Y2g= 19307\nLWFs 19308\nIGZlc3RpdmFs 19309\nIG91dHN0YW5kaW5n 19310\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 19311\nTWVhbg== 19312\nIE9yZWdvbg== 19313\nc3ltYm9s 19314\nLmFjY291bnQ= 19315\nZG5leQ== 19316\nJycn 19317\nISIs 19318\nOTAx 19319\nIHBhcnRpY2xl 19320\nw4M= 19321\nW01BWA== 19322\nSVZFUg== 19323\nRVJFTkNF 19324\nTlNNdXRhYmxl 19325\nIENvbHVtYmlh 19326\nXwoK 19327\nLmZy 19328\nIGNvZ24= 19329\nVlI= 19330\nIE1ldGhvZHM= 19331\nIE1hZGU= 19332\nIEJS 19333\nIEVsc2U= 19334\nIGVnZ3M= 19335\nIHN3aW5n 19336\nIEludg== 19337\nIGRpc2Vhc2Vz 19338\nIGZpcm1z 19339\nIGxlbW1h 19340\nfWApOwo= 19341\nbGluZ3M= 19342\nIGd5bQ== 19343\ndW1pbnVt 19344\nLlRyaW0= 19345\nTWVt 19346\nIGNyaXRpY2lzbQ== 19347\naWJlcm5hdGU= 19348\nX1RY 19349\naW9uaQ== 19350\nIGd1aWRhbmNl 19351\nIHJlcGVhdGVkbHk= 19352\nIHN1cHBsaWVy 19353\nIHBhaW50aW5n 19354\nODY0 19355\nLkZyYWdtZW50 19356\nZWRFeGNlcHRpb24= 19357\nIHdpcmluZw== 19358\nIGNvdXJ0cw== 19359\nV0VC 19360\n5pyJ 19361\nXC4= 19362\naWxsYW5jZQ== 19363\nIGJyb3dz 19364\nIFBhdHRlcm4= 19365\nUExJQ0FUSU9O 19366\nIFN1bW1lcg== 19367\nQ2hhaW4= 19368\nIGN1dGU= 19369\nbWVyY2lhbA== 19370\nIGRpbA== 19371\nIEZyYW5rbGlu 19372\nCWdsb2JhbA== 19373\nSU5DTFVESU5H 19374\naGlzdG9yeQ== 19375\nIGxzdA== 19376\nUXQ= 19377\nU0RM 19378\nYWxpYQ== 19379\naWVyZQ== 19380\nKC4uLg== 19381\nCWNpbg== 19382\naWZmcw== 19383\ndmVsb3Bl 19384\nIFJvb3Q= 19385\nY2x1c3Rlcg== 19386\nVXNlck5hbWU= 19387\naWduZQ== 19388\nPFM= 19389\nIGZlc3Q= 19390\nNDE5 19391\nIGluZGljYXRpbmc= 19392\na2VlcGVy 19393\nIGNhZGE= 19394\nw6ln 19395\nY29uc2lu 19396\nIEdC 19397\nIGxi 19398\nZW1vbnk= 19399\nLWljb25z 19400\nX2RvYw== 19401\nQWN0b3I= 19402\nZWxlbQ== 19403\nLkRlbGV0ZQ== 19404\nIGluZmVjdGlvbg== 19405\nIFByaXZhY3k= 19406\nIGdyZWF0bHk= 19407\nIFBvcw== 19408\nIFRyZWF0 19409\nRmxvdw== 19410\nIGF0dHJhY3RpdmU= 19411\nIE1hcmM= 19412\nc3Vkbw== 19413\ndGVzeQ== 19414\nLWFu 19415\nOTk4 19416\nYWJhbWE= 19417\nIFdvdWxk 19418\nIHN1Y2s= 19419\naW5kZXhQYXRo 19420\nIEV0 19421\nVGltZXM= 19422\nNzgw 19423\nIGNsdWJz 19424\nX2Fzc29j 19425\nIGFjcXVpcmVk 19426\nKCI6 19427\nIGludGVuc2U= 19428\nLm1hcHM= 19429\nRXhwZWN0ZWQ= 19430\nVG9nZ2xl 19431\nIGF5 19432\nIGxpZmVzdHlsZQ== 19433\nLWNhbGxlZA== 19434\nIFNub3c= 19435\nVm9sdW1l 19436\nIGNhbm5hYmlz 19437\nIERpcmVjdGlvbg== 19438\nIExpbWl0ZWQ= 19439\nLXNwZWNpZmlj 19440\nIGRvd250b3du 19441\nL2ljb25z 19442\nIHJldmVu 19443\nTGVn 19444\nODg1 19445\nPW51bGw= 19446\nNDk2 19447\nS2V5Ym9hcmQ= 19448\nJykpLg== 19449\nICIiOw0K 19450\nIGF0dGl0dWRl 19451\nLm5hdmlnYXRl 19452\nLWVycm9y 19453\nQU1QTEU= 19454\nIEpheQ== 19455\ndnI= 19456\nY293 19457\nLmNvbXBpbGU= 19458\nIG1lbW9yaWVz 19459\nX21hcms= 19460\nIE1pbm5lc290YQ== 19461\nIGtvc3Rlbg== 19462\nIHByb2JhYmlsaXR5 19463\nd2FybmluZw== 19464\nIGdlbmV0aWM= 19465\nRml4dHVyZQ== 19466\nIEhhc2hTZXQ= 19467\nTm9tYnJl 19468\nX21vbnRo 19469\nxrA= 19470\nLXN0YXJ0 19471\neHlnZW4= 19472\nCWZ0 19473\naWFnbm9zdGljcw== 19474\nIE1hdHRoZXc= 19475\nIGNvbmNlcHRz 19476\nIGNvbnN0cg== 19477\nLlN0YXRl 19478\n0LjQvQ== 19479\nTm92 19480\nzrE= 19481\nIFBhbmVs 19482\n5Liq 19483\nY29tcGFyZQ== 19484\nPigpCg== 19485\nIGFwcGx5aW5n 19486\nIHByb21pc2Vk 19487\nIG94 19488\nbmNpYQ== 19489\nIFZhbGlkYXRpb24= 19490\nb3J0cw== 19491\nX2N1cg== 19492\nZWxlY3Q= 19493\nZXll 19494\nKERhdGE= 19495\nIHJlcG9ydGVy 19496\nIEJ1ZmY= 19497\nMzk1 19498\nIHNy 19499\nICI7 19500\naWNreQ== 19501\nIHRlbXBvcg== 19502\nU04= 19503\nIHJlc2lkZW50 19504\ncGlyZXM= 19505\neXNpY2Fs 19506\nIGVuZG9yc2U= 19507\nIFNvbmc= 19508\naXNFbXB0eQ== 19509\nbGVldA== 19510\nX3V0aWw= 19511\nIGRpc3Rpbmd1 19512\nIFRhbGs= 19513\nIE1vdA== 19514\nKGRlZmF1bHQ= 19515\nLkFyZw== 19516\nZ29yaXRobXM= 19517\nX3dvcmRz 19518\naW1tZXI= 19519\nX3Jlc2V0 19520\nZmFtaWx5 19521\nV1c= 19522\nIHNhdmluZ3M= 19523\nIOKAnQ== 19524\nX2VuYWJsZQ== 19525\nc2lkZWJhcg== 19526\nUnVubmluZw== 19527\nIGFsaQ== 19528\nIHRlc3RpbQ== 19529\nIHdhcm5pbmdz 19530\nIENoZW0= 19531\nIEV4aXQ= 19532\nIGZvdW5kZXI= 19533\ncGVjdG9y 19534\nIHJt 19535\nX2RhdGFzZXQ= 19536\nIERhcw== 19537\nIGhhbg== 19538\nR2V0dHk= 19539\nw6Fs 19540\nIG55 19541\nIHBvdmVydHk= 19542\nIHJlc3VsdGVk 19543\nLmJ5 19544\nIFZpc2l0 19545\nIG9idGFpbmluZw== 19546\nLycuJA== 19547\nICAgICAgICAgICAK 19548\nc2hhbGw= 19549\nX0xFRlQ= 19550\nVUlJbWFnZQ== 19551\nX05hbWU= 19552\naGF2ZQ== 19553\nIE5vYg== 19554\nbHI= 19555\nLWZvb3Rlcg== 19556\nIG5ha2Vk 19557\nIEdhcmRlbg== 19558\nXEZhY2FkZXM= 19559\nIGdyYWR1YXRl 19560\nNDE3 19561\nIGZyYW5jaGlzZQ== 19562\ncGxhbmU= 19563\nIGNvbnRyaWJ1dGlvbnM= 19564\nIHN0cmluZ1dpdGg= 19565\nIGNyeXB0bw== 19566\nIG1vdmVtZW50cw== 19567\nYXRoZXJz 19568\nIGxpZmV0aW1l 19569\nIGNvbW11bmljYXRl 19570\namFy 19571\nIEZyYWdtZW50 19572\nX0lG 19573\nIE5hdnk= 19574\nIEZpZ3VyZQ== 19575\nIHNpbXVsYXRpb24= 19576\nX3N0b3A= 19577\nIHJlcG9ydGVycw== 19578\nIHZlcnN1cw== 19579\nYWph 19580\nIM6x 19581\nIGdvdmVybm9y 19582\nTGlzdEl0ZW0= 19583\nIHNlYWxlZA== 19584\nLkJhY2tncm91bmQ= 19585\nZWRp 19586\nYXNoaW5n 19587\nIGxpcA== 19588\nIElo 19589\nbWVyZ2U= 19590\nIG5lYw== 19591\nMDI0 19592\nZWxvY2l0eQ== 19593\nQVRFRw== 19594\nIHNlZWRz 19595\nIGZsb2F0aW5n 19596\nNzAx 19597\nX0ZB 19598\nd2Fsaw== 19599\nCXVzZXI= 19600\nX2RlcHRo 19601\nIHdhZ2U= 19602\nQGFwcA== 19603\nTmls 19604\nKFsi 19605\nKHZlY3Rvcg== 19606\nIHNlY3JldGFyeQ== 19607\nNDYx 19608\nIGpQYW5lbA== 19609\ndmV6 19610\nwqDCoMKgwqA= 19611\nZGlyZWN0aW9u 19612\nIEVQ 19613\nIGh1bnQ= 19614\nMzk2 19615\nSnNvblByb3BlcnR5 19616\nIFBPUlQ= 19617\nXSIs 19618\n0LDQvw== 19619\nIEZvcmVpZ24= 19620\ncGFuaWM= 19621\nIHRyaWFscw== 19622\nIEFsZQ== 19623\nIHJ1cmFs 19624\nLXZhbHVl 19625\nYXV0aG9yaXplZA== 19626\nIFNjb3RsYW5k 19627\nLmRyb3A= 19628\nIE1U 19629\n57E= 19630\nMzkx 19631\ncm93dGg= 19632\nNTE1 19633\nRmlsZVBhdGg= 19634\nIHJlY2FsbA== 19635\naWZsZQ== 19636\nIGNlbA== 19637\nIFNFTEVDVA== 19638\na24= 19639\nX2Nhc2U= 19640\nIGNyb3A= 19641\nNTQz 19642\nc3VyZQ== 19643\ncG90 19644\nSUNT 19645\nIHN0ZW0= 19646\nIGluZHVzdHJpZXM= 19647\nUHV0 19648\nIGFiZXI= 19649\ncm9hZGNhc3Q= 19650\nSWNvbnM= 19651\nKSIpCg== 19652\n5oiQ5Yqf 19653\nZ3Vp 19654\nIGFzc3VtZWQ= 19655\nIHJ4 19656\nRUE= 19657\n6Kc= 19658\nRUxM 19659\nIGRvc2U= 19660\nIGluZQ== 19661\nIGRlZXBlcg== 19662\nbGlkZXI= 19663\nIG9yZGluYXJ5 19664\nIGdvbGY= 19665\nNjA1 19666\nX0lNQUdF 19667\nIE5BTUU= 19668\nKG1vZHVsZQ== 19669\nIGF0b20= 19670\nIGJlbHQ= 19671\nIG9mZmljZXM= 19672\nNTA2 19673\nYmV0YQ== 19674\nIHBoaWxvc29waHk= 19675\nKEpTT04= 19676\nLWZpZWxk 19677\nIGludHJvZHVjZQ== 19678\nIGNvbnZlbmllbmNl 19679\nb3B0aW0= 19680\nPiIK 19681\nYXRoeQ== 19682\nIGVtcGxveWVy 19683\ncXVhdGU= 19684\nIGVkaXRlZA== 19685\nQXJndW1lbnRz 19686\nIE5hdGlvbnM= 19687\nX18p 19688\nIG5vc2U= 19689\nIFNhbXBsZQ== 19690\nJykKCgo= 19691\nIGNha2U= 19692\nLmdldEF0dHJpYnV0ZQ== 19693\nSEQ= 19694\nMzky 19695\nTW9kaWZpZWQ= 19696\nNDQ1 19697\nIHByZWRpY3RlZA== 19698\nxYQ= 19699\nYW5pZQ== 19700\nU29ycnk= 19701\nKGRvYw== 19702\nd2luZA== 19703\naWV2ZQ== 19704\nIHByb3Zpc2lvbnM= 19705\nQVRFUg== 19706\nT1RF 19707\nTVk= 19708\nLkF1dG93aXJlZA== 19709\nIEJhdGg= 19710\nNDIz 19711\nLkJvb2xlYW4= 19712\nIGJhY2tlbmQ= 19713\nLk1vdXNl 19714\nYXRlcmFs 19715\ncGFwZXI= 19716\nQ29uc3Q= 19717\nIFZS 19718\nX2VudGl0eQ== 19719\nX0NUUkw= 19720\nIFByb3RlY3Rpb24= 19721\nIEdN 19722\nIFN0dWR5 19723\nIHNvdXA= 19724\nb3RpbWU= 19725\nJ3VzZQ== 19726\nXSI= 19727\nL3VzZXJz 19728\nYXVn 19729\nIEhvbmc= 19730\nX25vcm0= 19731\n44Go 19732\nIHNlY3Jl 19733\nKEJ1aWxk 19734\nIENvbnRyYWN0 19735\nb2xhcw== 19736\nIHNhdWNl 19737\nIGFnZ3Jlc3NpdmU= 19738\nIHJhY2lhbA== 19739\nY2hhcmFjdGVy 19740\nQEA= 19741\nIGNvbXBpbGU= 19742\nIFZvaWQ= 19743\nX3JlbQ== 19744\nX21lbW9yeQ== 19745\nMzQ4 19746\na2s= 19747\nIG1pYw== 19748\nU2FtZQ== 19749\nVXRpbGl0eQ== 19750\nIEh0bWw= 19751\nIFhtbA== 19752\nUmVhZHk= 19753\nIGdhbGw= 19754\nIGFsbGVnZWRseQ== 19755\nCQkJCSAgIA== 19756\nIE1ldGFs 19757\nIFBlcnNvbmFs 19758\nIGJvcmRlclJhZGl1cw== 19759\ncnhqcw== 19760\nb2JqZWN0cw== 19761\nIHdhbnRpbmc= 19762\nIGJvd2w= 19763\ndmVuZG9y 19764\nb2Zmc2V0b2Y= 19765\nIFJz 19766\nIFJhdGluZw== 19767\nIHJhbGx5 19768\nX05PREU= 19769\nNDE4 19770\nIE1peA== 19771\nIGFkdmVydGlz 19772\nNDg1 19773\nNjY3 19774\nIG5hcnJhdGl2ZQ== 19775\nc2Fs 19776\nIG1j 19777\nU0Vycm9y 19778\nIGZpbmdlcnM= 19779\nIGFjY29tcGFueQ== 19780\nIHRpcmVk 19781\nIHN0cmlkZQ== 19782\nIGd1aQ== 19783\nZWxpc3Q= 19784\nTG9jYWxl 19785\nIHJlbGVhc2Vz 19786\naWtpbmc= 19787\nIGFuZ2Vy 19788\nKSkpCgo= 19789\nYWxsZXN0 19790\nU3VtbWFyeQ== 19791\nKE8= 19792\nKGZvcg== 19793\nIGJhc2tldGJhbGw= 19794\nIHJvYWRz 19795\nIEluc3RhbGw= 19796\nIEZhYg== 19797\naXRtYXA= 19798\nNDc1 19799\nICkpCg== 19800\nIGludGVyc2VjdGlvbg== 19801\naWdoYm9y 19802\nIEJyeQ== 19803\nIEhFUkU= 19804\nU29mdHdhcmU= 19805\nZWxmYXJl 19806\nYWNz 19807\nNjIy 19808\nIHRyYWlsZXI= 19809\nLmdldENsYXNz 19810\nY2hhcnM= 19811\nIHJlZ3VsYXRpb24= 19812\nIHJlZmVycw== 19813\nIGRlc3RydWN0aW9u 19814\nIGNvbnRpbnVvdXM= 19815\nIEF1c3Rpbg== 19816\n6aI= 19817\nYWthbg== 19818\nLndpbmRvdw== 19819\nIFRlbXBsYXRlcw== 19820\nIGFic2VuY2U= 19821\nOm4= 19822\nIGRpc29yZGVy 19823\nZmxhc2g= 19824\nIGRlbGV0 19825\nYm9hcmRz 19826\nICAJ 19827\nUk9Q 19828\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 19829\nIGFjcXU= 19830\nIGxhd3N1aXQ= 19831\nIFJldmlld3M= 19832\nIGdhcmFnZQ== 19833\ndGltZXI= 19834\nIGVq 19835\nIFJlY3RhbmdsZQ== 19836\nIGZsb3dlcnM= 19837\nMzk4 19838\naWxzdA== 19839\nIEluc3RhbmNl 19840\nU3VwZXI= 19841\nZGV0 19842\nZGlzcG9zaW5n 19843\nIEVT 19844\nIElD 19845\ndmVyZQ== 19846\nU2s= 19847\nX2NoYW5uZWxz 19848\ncHV0ZWQ= 19849\nL251bGw= 19850\nbm5lbg== 19851\nNDMx 19852\nIEdhbGxlcnk= 19853\nX2dsb2JhbA== 19854\nQXV0aGVudGljYXRpb24= 19855\nIFJhbms= 19856\nIGJsb2NrZWQ= 19857\nIGNhbG0= 19858\nbWFya2V0 19859\nCXZhbA== 19860\nIGF1Zw== 19861\ncGVyaW9k 19862\nIENvbnN0YW50 19863\nID8+Ij4K 19864\nIGxvYmJ5 19865\ncGFs 19866\nMzc5 19867\nIHNpbms= 19868\nNTA4 19869\naWFo 19870\n0KE= 19871\ndXJuYW1l 19872\nIGNvbnZlcg== 19873\nIGludmVzdGlnYXRl 19874\nQ2hyaXN0 19875\nSHVi 19876\nIElORA== 19877\nIFBlZA== 19878\ndXJhcw== 19879\nCXVybA== 19880\nIFRybw== 19881\nIHByZWZlcmVuY2Vz 19882\nIGd1YXJhbnRlZWQ= 19883\nYAoK 19884\nIHBvcnRpb25z 19885\nIGV2YWx1 19886\nJz48Lw== 19887\nKCl7Cgo= 19888\nZW5jb2RlZA== 19889\nemlsbGE= 19890\nLkNsYXNz 19891\nICpf 19892\nXyc= 19893\nIHZpZXdlZA== 19894\nIFBoaWxhZGVscGhpYQ== 19895\nLnJvd3M= 19896\nQWRkZWQ= 19897\nIFRvdWNo 19898\nODQw 19899\nLmRlbGVnYXRl 19900\ncXVlZXpl 19901\nc2xpZGU= 19902\nIFNlbmlvcg== 19903\nKHRhZw== 19904\nIGludGVydmlld3M= 19905\nIHN1YQ== 19906\nYXRhcw== 19907\nQAoK 19908\nZGlzdGFuY2U= 19909\nIHNlaW4= 19910\nbGF0ZXN0 19911\nIFByaW5jZQ== 19912\nIGx1eHVyeQ== 19913\nIHJlZnI= 19914\nIEtpdGNoZW4= 19915\n0YQ= 19916\nKGF0 19917\nRmluYWw= 19918\nw7xjaw== 19919\nX3plcm8= 19920\nIEFCQw== 19921\nIE1hbmNoZXN0ZXI= 19922\nIGNvdw== 19923\nQ09M 19924\nX05VTUJFUg== 19925\nY2hhbmdlcw== 19926\nZ2VuZXJhdGU= 19927\nLlByaW50Zg== 19928\nMzY5 19929\nc2hhcmU= 19930\nU3RvY2s= 19931\nIFBU 19932\nQW5pbQ== 19933\nYW5nYQ== 19934\nIGln 19935\ndXBsb2Fkcw== 19936\nIHBhY2tlZA== 19937\nIH1dOwo= 19938\nKHNlbmRlcg== 19939\nIFdpcmU= 19940\naXNvbnM= 19941\nIHBsYXlvZmY= 19942\nXEU= 19943\nNjA4 19944\nL1I= 19945\nIGhlYWRlZA== 19946\nQWxwaGE= 19947\nKG9yZGVy 19948\nIG9wcG9uZW50cw== 19949\nYWNrc29u 19950\nX21lbWJlcg== 19951\nVHVybg== 19952\nIFNvdmlldA== 19953\n7JeQ 19954\nYXVnZQ== 19955\nNDQ4 19956\nIGluY29taW5n 19957\nIGphaw== 19958\nLWdhbWU= 19959\nIE1hbGU= 19960\nIE1vbnRo 19961\nU3RhZ2U= 19962\nLmV4ZQ== 19963\nT3duUHJvcGVydHk= 19964\nLnNldEl0ZW0= 19965\nIGRj 19966\n5L2c 19967\nIGJydXQ= 19968\nIGF0dGVtcHRpbmc= 19969\nLmxlbg== 19970\nIGp1ZGdtZW50 19971\nIHNhYg== 19972\nIGNhZA== 19973\nIEl0ZW1z 19974\nY29tZm9ydA== 19975\nZWxpemU= 19976\nL2xvZw== 19977\nIGVudHJlcHJlbmU= 19978\nIGNvbXBpbGVy 19979\nX3ZhbGlkYXRpb24= 19980\ncmV2aWV3 19981\nIHRleHRCb3g= 19982\nIGZyYWN0aW9u 19983\nIEJhbA== 19984\nPjsKCg== 19985\nLkF1dG9TY2FsZU1vZGU= 19986\nIGNhdHM= 19987\nNDY1 19988\nIHJlZ2lzdHJ5 19989\ndWx1cw== 19990\nRkk= 19991\ncGF5bG9hZA== 19992\nLXNlYXJjaA== 19993\nIHN0YXlpbmc= 19994\nYWNpb3Vz 19995\nRGVjb3JhdGlvbg== 19996\nUmV2aWV3 19997\nSW5m 19998\nS2VlcA== 19999\naXRpcw== 20000\nLFN0cmluZw== 20001\nQ29vcmQ= 20002\nIHBlcm8= 20003\nU2V4 20004\nIEF0bGFudGE= 20005\ndWVzdGE= 20006\nQXJnYg== 20007\nPio= 20008\nfV8= 20009\nRm9vdGVy 20010\nIGVtcGxveWVk 20011\nX2JvdW5k 20012\ndmlkZQ== 20013\nLmZ1bmM= 20014\nJHNjb3Bl 20015\nIHNwbw== 20016\nIEFuYWw= 20017\nb3VuY2Vk 20018\nYXJvdW5k 20019\nIHJlc3RyaWN0aW9u 20020\nIHNob3Bz 20021\n5YA= 20022\nIExhdGlu 20023\nLWNvbA== 20024\nIGJhcmVseQ== 20025\nIEV1cm8= 20026\nRXI= 20027\nIGZhaXJl 20028\nX2Rpc3RhbmNl 20029\nX3VubG9jaw== 20030\nUXVvdGU= 20031\nSVZBVEU= 20032\nIOWI 20033\nIGFpbWVk 20034\nIFJldHJpZQ== 20035\nLml0ZXI= 20036\nIHdyYXBwZWQ= 20037\nIGFncmVlbWVudHM= 20038\nc3RydW1lbnQ= 20039\nKHByb2R1Y3Q= 20040\nIHN0dWRpZWQ= 20041\nLnNldFZhbHVl 20042\nIHll 20043\nIENhY2hl 20044\nTUJPTA== 20045\nIHF1YXJ0ZXJiYWNr 20046\nIHN5bnRheA== 20047\nLmdldEVsZW1lbnRzQnk= 20048\nLnZlcnNpb24= 20049\nd2Vic2l0ZQ== 20050\nUnVubmVy 20051\nX3NpbmdsZQ== 20052\nYXRpdg== 20053\nIEFsdGVybg== 20054\nIEJlYXV0aWZ1bA== 20055\ncmlnaHRhcnJvdw== 20056\nIGRpdmVyc2l0eQ== 20057\ncGxhc2g= 20058\nKGNv 20059\nLkZpbGw= 20060\nIHR5cGluZw== 20061\nMzg3 20062\nMDIz 20063\nIGNsYXI= 20064\nSGl0 20065\nT08= 20066\nYWNjbw== 20067\nNTA3 20068\nd29ydGg= 20069\nIHNjcmlwdHM= 20070\nIE11c2xpbXM= 20071\nIExM 20072\nZXJ2aW5n 20073\nKGJvb2xlYW4= 20074\nIGJhc2ViYWxs 20075\nIENBTg== 20076\nMzk0 20077\nMDQ0 20078\nTUFJTA== 20079\nZGVwZW5k 20080\nIHJlc3BlY3RpdmU= 20081\nIGNvbnN0ZXhwcg== 20082\nLio7Cgo= 20083\nJ10pKQo= 20084\nIHlhcmQ= 20085\nIGlkZW50aWNhbA== 20086\naWZlY3ljbGU= 20087\nVVNI 20088\ndXBpdGVy 20089\nLnZhbGlkYXRl 20090\nY2xp 20091\nSVNURVI= 20092\nSW5kaWNhdG9y 20093\nRmFpbA== 20094\nIGRlbW9jcmFjeQ== 20095\nLnZhcg== 20096\nIHNhdGlzZmllZA== 20097\nLS0tLS0tLS0tLS0tLQ== 20098\nZW5jZXI= 20099\naG9y 20100\nIHJvdW5kcw== 20101\nREFP 20102\nb2E= 20103\nIGZsYXNr 20104\nPWM= 20105\nW10K 20106\nL2Rpc3Q= 20107\nIHBhcnRl 20108\nIGNvbmZpcm1hdGlvbg== 20109\nZXJvbg== 20110\nYXdhcmU= 20111\nPD8+ 20112\nIGRlcGVuZGVuY2llcw== 20113\nIFZpZGVvcw== 20114\nLXJvdw== 20115\nICoqLwo= 20116\nIG5vdQ== 20117\nIGhvdmVy 20118\n5p4= 20119\nIG5pbg== 20120\nIFVTRA== 20121\nTWFj 20122\nX0xvYWQ= 20123\nIG91dGNvbWVz 20124\nX3NvY2tldA== 20125\nIHF1ZXJpZXM= 20126\nd20= 20127\nNTky 20128\nIGhpdHRpbmc= 20129\naW51eA== 20130\nTWljaA== 20131\ndWRnZQ== 20132\nQVRBQg== 20133\nIHZ1bG5lcmFibGU= 20134\n5L4= 20135\nIHBvcnRmb2xpbw== 20136\nOllFUw== 20137\nCW1hcA== 20138\nQm91bmQ= 20139\nIGl0ZXJhdGlvbg== 20140\naW5jZXNz 20141\nIGFjdG9ycw== 20142\nIFF1YWw= 20143\nX2NsZWFu 20144\n44CR44CQ 20145\nTVNH 20146\nR3JlZW4= 20147\nIE9mZmljZXI= 20148\nIHNtb2tpbmc= 20149\nPics 20150\nIEZsbw== 20151\nKys7 20152\nNDMz 20153\nb2x5Z29u 20154\nIGJ1bGs= 20155\nIGRyYW1h 20156\nIGV4Y2VwdGlvbnM= 20157\nb3NlZA== 20158\nICsNCg== 20159\nIGxlZ2FjeQ== 20160\nQ1Y= 20161\nIGNvbnRyaWJ1dGVk 20162\nIFRlcm1z 20163\nIGJ0 20164\nNDM0 20165\nIHVudHVr 20166\nIGFsaWVu 20167\nPT09Cg== 20168\nCVZlY3Rvcg== 20169\nIGxz 20170\nT25saW5l 20171\nLmZhY2Vib29r 20172\nbnVtZXJpYw== 20173\nb2NrZXRz 20174\nQXV0 20175\nYnVyeQ== 20176\nLXJlZHV4 20177\nIFJlZGlzdHJpYnV0aW9ucw== 20178\nR0xPQkFMUw== 20179\ndXJyZW5jaWVz 20180\nIHRvbnM= 20181\n4oCZLA== 20182\nIMOq 20183\nKGNvbA== 20184\nIFN5bWJvbA== 20185\nIHN0YXllZA== 20186\nIE1M 20187\nIG11bmljaXA= 20188\nIHNleG8= 20189\nU2Vu 20190\nbnI= 20191\nIGdhaW5z 20192\nIHNob3J0bHk= 20193\nLk1lbnU= 20194\nw70= 20195\nS05PV04= 20196\nIG9wZXJhdG9ycw== 20197\nLVY= 20198\nIFBhdHJpY2s= 20199\nL2FkZA== 20200\nX0NP 20201\naXJhdGlvbg== 20202\nKHBvc3Q= 20203\nUG9zdHM= 20204\nL18= 20205\nIHBsdWc= 20206\nIGludGVsbGVjdHVhbA== 20207\nIG1ldGFi 20208\nIHByZWduYW5jeQ== 20209\nIFByZW1pZXI= 20210\nbm0= 20211\nIHByZWRpY3Rpb24= 20212\nNjA2 20213\nIE1pbmlzdHJ5 20214\nVGhyZWU= 20215\ndmFsdWF0ZQ== 20216\nIE1pbmk= 20217\nYnU= 20218\n0L7Qtw== 20219\nPHVs 20220\nIGRk 20221\nb2x2aW5n 20222\nIEN1dA== 20223\nNjAy 20224\nIHNjaGVt 20225\nLnRyYWlu 20226\naXRhdGU= 20227\nIHJpY2U= 20228\nIGJpcmRz 20229\n44Gr 20230\nbWlkZGxl 20231\nc3RydWN0aW9ucw== 20232\nIG5lcnY= 20233\nYXF1ZQ== 20234\nNDUz 20235\nIGZsdQ== 20236\nIHN1cnZpdmFs 20237\nIEdhbGF4eQ== 20238\nIEZhbnQ= 20239\nLk9yZGVy 20240\nQXR0cmli 20241\naXJ0cw== 20242\nw6lj 20243\nTW92aWU= 20244\nIGNvbmNl 20245\ncXVhcnRlcnM= 20246\nIG1vb2Q= 20247\nLkFkZFJhbmdl 20248\nOTQy 20249\nIHJlc29sdmVk 20250\n44OI 20251\nIGJ1cm5pbmc= 20252\nNzAy 20253\nCQkJCQ0K 20254\nIFdF 20255\nIGhvc3Rpbmc= 20256\nTEFC 20257\nIG1hbmFnZXJz 20258\nIHN0cmVuZ3RoZW4= 20259\nPGNvbnN0 20260\nIEZpcmViYXNl 20261\nb25lZA== 20262\nIEplYW4= 20263\nJzwv 20264\nIDo9Cg== 20265\nYWxnb3JpdGht 20266\nIEFyYw== 20267\nIGZyb3plbg== 20268\nX2V2ZW50cw== 20269\nIG92ZXJzZQ== 20270\nZ29vZHM= 20271\nIGZhaXQ= 20272\nIHZpYWdyYQ== 20273\nb3Nlcw== 20274\nOTIy 20275\nIGNvbXBpbGVk 20276\nIEF0aA== 20277\nIHN1YnN0YW5jZQ== 20278\nYW5pbWF0ZWQ= 20279\nUEY= 20280\ncHJldmlvdXM= 20281\nIHJvb3Rz 20282\nKGZpbHRlcg== 20283\nb2x1bWVz 20284\nIGludHJv 20285\nKGV2dA== 20286\nIEJhZw== 20287\nIERlZmluaXRpb24= 20288\nIEZlYXR1cmVz 20289\nQW5ub3RhdGlvbg== 20290\nIGF2Zw== 20291\nKHN1bQ== 20292\nUVVJUkU= 20293\nIHJlbmRlcmVy 20294\nIEZpeA== 20295\nLmRhdGV0aW1l 20296\nPWRldmljZQ== 20297\nU3Bl 20298\nZ2V0SW5zdGFuY2U= 20299\nIGV4dGVuc2lvbnM= 20300\nX25ldA== 20301\nIFBhcmxpYW1lbnQ= 20302\nIGNvbWlj 20303\nNDY4 20304\nIFBpY2s= 20305\nYXJtYQ== 20306\nCW1vZGVs 20307\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 20308\nIG1lbmc= 20309\nbWFudWFs 20310\nYWRhcHRlcg== 20311\nfS0= 20312\nZWRiYWNr 20313\nIGVsZWN0cmljYWw= 20314\nIENvdW50ZXI= 20315\nQXBwbGljYXRpb25Db250ZXh0 20316\nX2J5dGU= 20317\nKGJ5dGU= 20318\nIEF1dG9t 20319\nIHRlcnJvcmlzdA== 20320\n55A= 20321\ndGhyb3VnaA== 20322\nIGZpc2NhbA== 20323\nb25pbmc= 20324\nNDU1 20325\nIHNwZWN0cnVt 20326\nIGJpdG1hcA== 20327\nIHNsZQ== 20328\ncHJvZA== 20329\nIGFnZWQ= 20330\nIGJlbmU= 20331\nIFNwaQ== 20332\nIGJyaWxsaWFudA== 20333\nIHN0YWJpbGl0eQ== 20334\nIGRpYWJldGVz 20335\nIGNvbmZpZ3VyZWQ= 20336\nYm9uZQ== 20337\nNzQ4 20338\nNDg0 20339\nb3VzZXM= 20340\nLmdvb2dsZWFwaXM= 20341\nRkFDRQ== 20342\nIGluc3BpcmF0aW9u 20343\nIERldHJvaXQ= 20344\nZW5jaA== 20345\n0YDRgw== 20346\ndmVoaWNsZQ== 20347\nU3RhdGlvbg== 20348\nIGhvbGVz 20349\nIGR1cmNo 20350\nLk1lZGlh 20351\nIENOTg== 20352\naW5uaW5n 20353\nNjA0 20354\nIFBlbm5zeWx2YW5pYQ== 20355\nIGVtb3Rpb24= 20356\nU2VjcmV0 20357\nw6FyaW8= 20358\nIFJhdGU= 20359\nNDUx 20360\nRGVwdGg= 20361\nIG1vZGVz 20362\nNDI2 20363\nKGlkeA== 20364\nIGhlcw== 20365\nIGdyZXk= 20366\nU3RhbmRhcmQ= 20367\nUXVlc3Q= 20368\nYnV5 20369\nc3Vy 20370\nIFRyYWNr 20371\nb21t 20372\nLmds 20373\nIChc 20374\ndHdv 20375\nX0lP 20376\nb3NleA== 20377\nX3JvbGU= 20378\n56S6 20379\ncm91dGVz 20380\nU2hvcA== 20381\nIEFTQw== 20382\nIG1lbWNweQ== 20383\nZGlyZWN0 20384\nNDQ2 20385\nICoKCg== 20386\nIEJN 20387\nIFBvcg== 20388\nX2hpc3Rvcnk= 20389\nIFJlc3BvbnNlRW50aXR5 20390\nLnNldEZvbnQ= 20391\nIGVuZ2FnZW1lbnQ= 20392\nLGg= 20393\nIFdvcmRQcmVzcw== 20394\nZmVjaGE= 20395\nIGVudHJhbmNl 20396\nRGVzcGl0ZQ== 20397\nSURFTlQ= 20398\nIHNhbml0 20399\nIEdlbmVyYXRl 20400\nKCIiLA== 20401\nX3ZpZGVv 20402\nU3RyYXRlZ3k= 20403\nX29r 20404\nIHRpZXM= 20405\nIGxvZ2ljYWw= 20406\nIEJyb24= 20407\nKEZpbGU= 20408\nIE1vaA== 20409\nLlNwbGl0 20410\nLlRyeQ== 20411\nIEhpbmQ= 20412\nIHNjb3Jpbmc= 20413\nIGFwcHJvYWNoZXM= 20414\nIGZsb3Vy 20415\nVlJU 20416\nODA0 20417\nVVNUT00= 20418\nNDY3 20419\nc2NyaXB0cw== 20420\nIEVwaXNvZGU= 20421\nMzg5 20422\nIEFtYg== 20423\nX09S 20424\nIGZyYXVlbg== 20425\nIHVubGlrZQ== 20426\nIHJpZGluZw== 20427\nIHBpdA== 20428\nIHRyYW5zZg== 20429\nYXJ0ZQ== 20430\n4LmJ 20431\ncmFwZQ== 20432\ncmV0dmFs 20433\nX2FmdGVy 20434\nIjw8 20435\nNzAz 20436\nIEJlcmxpbg== 20437\nIHRpc3N1ZQ== 20438\nLkludGVudA== 20439\nINC00LvRjw== 20440\nIHN0dW5uaW5n 20441\nIEhhbA== 20442\nLkludGVnZXI= 20443\nIHdoZXJlYXM= 20444\nIGRlbGVn 20445\nIHVzZXJOYW1l 20446\nIGZvcm1hdHM= 20447\nIGNvbXBlbnNhdGlvbg== 20448\nIEh1bQ== 20449\nYXJyaW5n 20450\nIHVuc2FmZQ== 20451\nUGlu 20452\nY2x1Yg== 20453\na2V5d29yZA== 20454\nX3RoZW1l 20455\nIGNhbGxlcg== 20456\nIGdob3N0 20457\nIGVudGl0bGVk 20458\nIE1hcw== 20459\nNTYx 20460\nIGRlbW9uc3RyYXRl 20461\nIEhvd2FyZA== 20462\nRHJvcA== 20463\nI3VuZGVm 20464\nNDI3 20465\nIGludm9rZQ== 20466\nIEJyaWRnZQ== 20467\nZW5kZW4= 20468\naWJsaW5n 20469\nU2xvdA== 20470\nQVRBQkFTRQ== 20471\nIHRlbXBlcmF0dXJlcw== 20472\nc2VyaWVz 20473\nIFJlbWVtYmVy 20474\nQ2FsZW5kYXI= 20475\nQkY= 20476\nPT8= 20477\nMDY0 20478\nIEFG 20479\nKGh0dHA= 20480\nbWFrZXJz 20481\nZmluaXR5 20482\ncHJlY2F0ZWQ= 20483\nV0g= 20484\nb2xpZGF5cw== 20485\nLXVu 20486\naWFsZQ== 20487\nXFVzZXI= 20488\ncmVhc29u 20489\nJywKCg== 20490\nT1dFUg== 20491\nIHByZWRpY3Rpb25z 20492\ncHJvYg== 20493\nLm5u 20494\nICc7Cg== 20495\nLkZyb21Bcmdi 20496\nX0xPTkc= 20497\nIHRyb3Vi 20498\nIHVuaXR0ZXN0 20499\nZWxpaG9vZA== 20500\nCWlz 20501\nNDQy 20502\nIGNvbnNlYw== 20503\nTEVBU0U= 20504\nIGNsaWNrZWQ= 20505\nIHRlbXBsYXRlcw== 20506\nQlk= 20507\ncGVybQ== 20508\nbWF0Y2hlcw== 20509\nbGF3 20510\nKHRm 20511\nX3JhdGlv 20512\naXRlbXB0eQ== 20513\nIGNyZWF0b3I= 20514\nQml0cw== 20515\nRW5jb2Rlcg== 20516\nKi4= 20517\nIFVJVA== 20518\nIE1hc2s= 20519\nY3VybA== 20520\nLWdv 20521\nIE9jYw== 20522\nY29ycmVjdA== 20523\nIEdlcg== 20524\nKGxheW91dA== 20525\ndW5jdA== 20526\nLmRpc3BhdGNo 20527\nO2FtcA== 20528\nLmlzUmVxdWlyZWQ= 20529\nCWRv 20530\nbWly 20531\nIHB0aHJlYWQ= 20532\nLWF1dG8= 20533\nIEljZQ== 20534\nIHZpb2xhdGlvbg== 20535\nIGNvbmNsdWRlZA== 20536\nIHZhcnM= 20537\nY2FudmFz 20538\nIFRlbXA= 20539\nIFBoaWxpcHA= 20540\niOuLpA== 20541\nY3JlYXNl 20542\nIGZpc2hpbmc= 20543\nYWJiaXQ= 20544\nIGNvbmNlbnRyYXRpb24= 20545\naXJ0aGRheQ== 20546\nIGdyb3Nz 20547\nIGtp 20548\nIEhhbmRsZXI= 20549\nIGltbWlncmFudHM= 20550\n6IA= 20551\nVW5k 20552\ncG4= 20553\ncmFj 20554\nNDU0 20555\nIENvbnN1bHQ= 20556\nZm9sZA== 20557\nIHN0cnVnZ2xpbmc= 20558\naGVhdA== 20559\nR2VuZXJpYw== 20560\nIHJpZGlj 20561\nIENPVklE 20562\nb21pdGVtcHR5 20563\nX09QVElPTg== 20564\n6rCA 20565\nIGNyZWF0dXJlcw== 20566\nX1BBR0U= 20567\nZWk= 20568\nKGhvc3Q= 20569\nX0hQUA== 20570\nNTE2 20571\nIFhYWA== 20572\nIGF3aw== 20573\nYXNjYWRl 20574\nIHByZWc= 20575\ncHJvdmlkZXI= 20576\nUGFs 20577\nZWdlbg== 20578\nY2xvbmU= 20579\nLlJlZ2lzdGVy 20580\nIGF0dGFjaG1lbnQ= 20581\nYmVpdA== 20582\ndGhlbGVzcw== 20583\nKERhdGU= 20584\nIEZvcmVzdA== 20585\nQ0dSZWN0 20586\nIGNoaWxkaG9vZA== 20587\nYW1pbmU= 20588\nYXhlcw== 20589\nJ109 20590\nTmF2aWdhdG9y 20591\nIHJlcGxpZWQ= 20592\nX2ludg== 20593\nLFQ= 20594\nIEZlYXR1cmU= 20595\nNDM4 20596\ney0= 20597\nTEFORw== 20598\nIGNvbnZleQ== 20599\n55So5oi3 20600\nIFNlcmlm 20601\nIEF1cw== 20602\nbGljaGU= 20603\nIHVudXNlZA== 20604\nIG1vbnQ= 20605\nbm9kZXM= 20606\nIHNldQ== 20607\nLmNsYXNzTmFtZQ== 20608\nbm9ybQ== 20609\nX1NFUlZFUg== 20610\nIHdpbmc= 20611\naW54 20612\nUmF3 20613\nIEphbQ== 20614\nNTkw 20615\nIGluc2lnaHQ= 20616\nNDcx 20617\nNTM1 20618\nIE5H 20619\nIEludGVyZmFjZQ== 20620\nIHN0bXQ= 20621\nIG5hbg== 20622\nY3VsYXRvcg== 20623\nLWFwcA== 20624\nKEJ1bmRsZQ== 20625\nTWVzc2FnZUJveA== 20626\n4K4= 20627\nIG1lZXRz 20628\ndWJ5 20629\nT3B0aW9uUGFuZQ== 20630\naXRhcmlhbg== 20631\nIGNvbGxhYm9yYXRpb24= 20632\nbW92aWU= 20633\nIGFybW9y 20634\nX2JpdHM= 20635\nIEhhdmluZw== 20636\nIG51ZGU= 20637\nIFNldHRpbmc= 20638\nIHN1Y2M= 20639\nRGVsYXk= 20640\nLmNvbXBvbmVudHM= 20641\nYWNodXNldA== 20642\nIEFsZXhhbmRlcg== 20643\nwqk= 20644\nIG1ldGVycw== 20645\nIHByZXBhcmluZw== 20646\nIGluY2VudA== 20647\n5ZM= 20648\nIGvDtm5uZW4= 20649\nIENvbnNlcnY= 20650\nIG51bWVybw== 20651\nYWNodXNldHRz 20652\nLWludA== 20653\nIGVtcGhhcw== 20654\nbGF5b3V0cw== 20655\nRXhjZWw= 20656\nSUJBY3Rpb24= 20657\nIHJlc2lkZW50aWFs 20658\nZWxpbmc= 20659\nIE5D 20660\nIEFsbGVu 20661\nIGNldHRl 20662\nIG1pbmRz 20663\nLnJlcXVpcmVk 20664\n2LM= 20665\nIEdpcmxz 20666\nIH07 20667\nIHN0cmluZ1dpdGhGb3JtYXQ= 20668\nIGFkZHJlc3NlZA== 20669\ndGhleQ== 20670\nIEJsb29k 20671\ncG9zZXI= 20672\nIGphbQ== 20673\nyJk= 20674\n5pWw5o2u 20675\nIHN0ZG91dA== 20676\nIFVURg== 20677\nQ2xhc3Nlcw== 20678\nPiI7DQo= 20679\nIFNhdg== 20680\nLkJvbGQ= 20681\nIGVuYWJsZXM= 20682\nCXRtcA== 20683\nIG1hbnVhbGx5 20684\nIFNxdQ== 20685\ndXNlcmlk 20686\nLmZ1bmN0aW9u 20687\nLmNhY2hl 20688\nTE9QVA== 20689\nLlNlcnZpY2Vz 20690\nNTg4 20691\nZGRpdA== 20692\ndGlt 20693\nPGltZw== 20694\nIFRoaW5ncw== 20695\nIEV2ZXJ5dGhpbmc= 20696\nIGFwdA== 20697\nMzk3 20698\nZW1hbmQ= 20699\nIHJvbGxpbmc= 20700\n66Y= 20701\nLmxldmVs 20702\nIHN0b20= 20703\nIFdpbnRlcg== 20704\nIHZpZXdpbmc= 20705\nKHZhbHVlcw== 20706\nb2NvbXBsZXRl 20707\ndmlh 20708\ndXBv 20709\nIGFib3J0aW9u 20710\nNTMy 20711\nacOocmU= 20712\n77yR 20713\nX0JVVFRPTg== 20714\nX2RvbWFpbg== 20715\nIGJyYQ== 20716\nIEFzdA== 20717\naW5hcw== 20718\nIHN0YXRpc3Q= 20719\nY29k 20720\nTFI= 20721\nIGRyaXZlcw== 20722\nIGZvbGxvd2Vycw== 20723\nIGFsbGllcw== 20724\nCWN1cnJlbnQ= 20725\nZWNlc3Nhcnk= 20726\nIGRhbWFnZWQ= 20727\nX3B0 20728\nYW5kbGVz 20729\nb3VudHJpZXM= 20730\nIHNpbXVsdA== 20731\nZXU= 20732\nIGNvbnRyb3ZlcnNpYWw= 20733\nX0dST1VQ 20734\nIHJpYg== 20735\nLkluZm8= 20736\nOm1t 20737\nLm5vcm1hbA== 20738\nX0FERFJFU1M= 20739\nIO2V 20740\nYWRkbGU= 20741\nIER1cg== 20742\nLkVsZW1lbnQ= 20743\nNjU2 20744\nV2FybmluZ3M= 20745\nIGNyZWRpdHM= 20746\nIGluaGli 20747\nIGVtaXNzaW9ucw== 20748\nNTQ1 20749\nIGhheg== 20750\nLnlvdXR1YmU= 20751\ndWdnZWQ= 20752\nIGJvdGhlcg== 20753\nIEthbnNhcw== 20754\nIEZpeGVk 20755\nIFRlc3Rz 20756\nIEZJWA== 20757\nNTc2 20758\nVW5pZm9ybQ== 20759\nIGtvbnQ= 20760\nPj4+ 20761\nc3RhdGlvbg== 20762\nbG9yZQ== 20763\nYXR5cGU= 20764\naXNob3A= 20765\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 20766\nNTIx 20767\nQ29tYm9Cb3g= 20768\nIHZhY2F0aW9u 20769\nIGluaXRpYXRpdmU= 20770\nIGRlZmF1bHRWYWx1ZQ== 20771\nNzcw 20772\nY29uY2F0 20773\nIEto 20774\nNjMy 20775\nIFdlbGNvbWU= 20776\naXplZE5hbWU= 20777\nTWlncmF0aW9u 20778\nIGdyYWRpZW50 20779\nSG90 20780\nIGhhcmRseQ== 20781\nZWxv 20782\nIFN0dWRlbnRz 20783\nIGxvb3Nl 20784\nNzMw 20785\nYXR6 20786\nLlNlbmQ= 20787\nJy8= 20788\nIHVuaXZlcnNhbA== 20789\nIGVudGVycHJpc2U= 20790\nIHJlZ2V4 20791\nIHZpc2l0b3I= 20792\nIEZseQ== 20793\nU2Vx 20794\n4LiZ 20795\nIFZpc3VhbA== 20796\nIGxpYnJhcmllcw== 20797\nYXRvZXM= 20798\nUGF5bWVudA== 20799\nNDQ3 20800\nIHBlbnQ= 20801\nIGdhdGhlcmVk 20802\nVlJUWA== 20803\nIERN 20804\nU3BsaXQ= 20805\nIGxldHRpbmc= 20806\n0J0= 20807\nX2Vycm9ycw== 20808\nZXBvY2g= 20809\nUEFSQU0= 20810\nY3U= 20811\n0YHRgtCy 20812\nb2x1dGlvbnM= 20813\nRWRpdGluZw== 20814\nZm9udHM= 20815\nIGFsbG9jYXRlZA== 20816\nIEJhc2Vk 20817\nKFk= 20818\nIEp1ZGdl 20819\nIGJyb3RoZXJz 20820\nRklMRVM= 20821\nw6dv 20822\nNTMx 20823\nd2I= 20824\nX1BJ 20825\nJ14= 20826\nIHN3b3Jk 20827\nLnNlcnZpY2Vz 20828\nIG5s 20829\nVGlt 20830\naWdn 20831\nIE1vb3Jl 20832\nIGNyeXB0b2M= 20833\n5Ye6 20834\nX3Bvc3Rz 20835\nb3RhdGU= 20836\nPyc= 20837\nLi4uLgoK 20838\nIGts 20839\nPSIk 20840\nIGRlY29yYXRpb24= 20841\n4bqh 20842\nIERJUkVDVA== 20843\nR1VJ 20844\nKT0+ewo= 20845\nIG5ld3NsZXR0ZXI= 20846\nIHByZWNpcw== 20847\nKHBvaW50 20848\nIEVxdWlwbWVudA== 20849\ndXR5 20850\nIERhdmU= 20851\nIHBhcnRpY2lwYXRpb24= 20852\ndWFyaW9z 20853\neGl0 20854\nLkFz 20855\nRVRFUg== 20856\nb3JvdXM= 20857\nIHNoaWVsZA== 20858\nW10+ 20859\naWxpdGFyeQ== 20860\nLm9yaWdpbg== 20861\nIHByb21vdGlvbg== 20862\nVW50 20863\nIGN0 20864\nVFJB 20865\nNTU2 20866\nVmlld0hvbGRlcg== 20867\nIHNpZ21h 20868\nZGVsdGE= 20869\nYXJlaG91c2U= 20870\nY29udHJhY3Q= 20871\nKFZlY3Rvcg== 20872\nNzIx 20873\nIGNvbXBldGU= 20874\nL2Zvcm0= 20875\nL2NvbXBvbmVudHM= 20876\nIG5y 20877\nIEluZG9uZXM= 20878\nINC+0YI= 20879\nIFZvbHVtZQ== 20880\nLmZpbGVz 20881\nKHJlc3A= 20882\nL21vZGVscw== 20883\nIHN1cmY= 20884\nc3RhbmRhcmQ= 20885\nL28= 20886\nIFhDVEFzc2VydA== 20887\nVklDRVM= 20888\nLkNvZGU= 20889\nU0VE 20890\nIGFjdGl2YXRl 20891\nRGVsdGE= 20892\nIGxpbWl0YXRpb24= 20893\ncmlq 20894\nIHByZWduYW50 20895\nOl4o 20896\nIHNvdXI= 20897\ncGll 20898\nODAz 20899\nIGV4cGVuc2U= 20900\naWNhdGlvbg== 20901\nIExhcmdl 20902\nIMKx 20903\nIEJvd2w= 20904\nKG1vZGVscw== 20905\nL04= 20906\nODU3 20907\nUGE= 20908\nLnJlbG9hZA== 20909\nIHdvbmRlcmluZw== 20910\nNDYy 20911\nRXhlY3V0aW9u 20912\nCSAgICAgIA== 20913\nIEdyYXBoaWNz 20914\nIENvbnRpbg== 20915\nX2pvYg== 20916\nIGdldE5hbWU= 20917\nIE1hZ24= 20918\nIERXT1JE 20919\nbWFk 20920\nIG5o 20921\nZmVhdHVyZXM= 20922\nfSIpOwo= 20923\naGVldHM= 20924\nKHRyYWlu 20925\nem4= 20926\nIHJlY3J1aXQ= 20927\nLmNvbm5lY3Rpb24= 20928\nIGJhcnJlbA== 20929\nIHN0ZWFt 20930\nX3NldHRpbmc= 20931\nIGFuZ3VsYXI= 20932\nYW5lb3VzbHk= 20933\nIGJpbA== 20934\nIE5vcm0= 20935\nNTIy 20936\nKCEk 20937\naWJ0 20938\nJSg= 20939\nIHBvc2l0 20940\nIEZhdGhlcg== 20941\naW50ZW5kbw== 20942\nNTY1 20943\nTGl2ZQ== 20944\nMDQx 20945\nIHBvcnRz 20946\nIG1lag== 20947\nIGxhbmRpbmc= 20948\ncG9uZGVy 20949\nIGNvZA== 20950\nX0hFQURFUg== 20951\nLk1hcmdpbg== 20952\nIGJhbGxz 20953\nIGRpc2N1c3Npb25z 20954\nIGJsZW5k 20955\nSGV4 20956\nIGZhcm1lcnM= 20957\nIG1haW50YWluaW5n 20958\nICAgDQo= 20959\nc3lu 20960\nW1Q= 20961\ncnVz 20962\nNDM5 20963\ndWZmZXJz 20964\nIGNvbnRyaWJ1dG9ycw== 20965\nX3N5cw== 20966\nLkRlYnVn 20967\nIGNvbnN0cnVjdGVk 20968\nb21lcw== 20969\nP2lk 20970\nc2xpZGVy 20971\nIHN1cHBsaWVycw== 20972\nNjEx 20973\nc2NyaWJlcg== 20974\ncGVz 20975\n0J4= 20976\nIjoNCg== 20977\nXENvbnRyb2xsZXI= 20978\nKSkKCgo= 20979\nIGx1YQ== 20980\nTXVsdGk= 20981\nRU5T 20982\nU3Jj 20983\nIHBldGl0aW9u 20984\nIHNsYXZl 20985\nbG9va2luZw== 20986\nVkVSVA== 20987\nCXZlY3Rvcg== 20988\nU3BlY2lhbA== 20989\naGg= 20990\nYW5uZQ== 20991\nIE5pZ2Vy 20992\nL3ZpZXdz 20993\nemluZw== 20994\nZW5kYW50 20995\nPEM= 20996\nc3BlZWQ= 20997\nNTE0 20998\nIHt9OwoK 20999\nQmVnaW5Jbml0 21000\nIGZvcGVu 21001\nQFJlcXVlc3RNYXBwaW5n 21002\nRW5kSW5pdA== 21003\nIHB1bmNo 21004\nU2VuZGVy 21005\nNjAz 21006\n6ZQ= 21007\nZ2V0TWVzc2FnZQ== 21008\nL3R5cGVz 21009\nLlBJ 21010\nKCcnKTsK 21011\nb2N1c2Vk 21012\nKGFsbA== 21013\nIGRyb3Bkb3du 21014\nKS5fXw== 21015\nIFZpbg== 21016\nLkZvcmVpZ25LZXk= 21017\nNjEy 21018\nY2FuZg== 21019\nb3VyZWQ= 21020\nIE9yZ2FuaXphdGlvbg== 21021\nINCw 21022\nIEN1bHR1cmU= 21023\nKGNscw== 21024\nLF8= 21025\nOTAy 21026\ncmdiYQ== 21027\n7J2Y 21028\nLmRhdGFHcmlkVmlldw== 21029\nIGRvemVu 21030\nIEdlcw== 21031\nODA1 21032\nNDY0 21033\nX3NoYXJlZA== 21034\nbmljaw== 21035\nIGhvc3A= 21036\nb21ldGVy 21037\nNDk1 21038\nIGNsYWltaW5n 21039\nMDMy 21040\naWJsZXM= 21041\ncmlr 21042\n5piv 21043\nZW5hcmlv 21044\nIGRlbmdhbg== 21045\nb2Ji 21046\nbW9udA== 21047\nX3Jhbms= 21048\nKCcvJyw= 21049\nIGFwb2xvZw== 21050\nUHM= 21051\nX3Bvd2Vy 21052\nIEdyZWU= 21053\nIGZ1bGZpbGw= 21054\nIGZpcmViYXNl 21055\nOTEw 21056\nIGZhcmU= 21057\nIEhpbQ== 21058\nIGJlYW4= 21059\n4oCmLg== 21060\nIFNQSQ== 21061\nX1JY 21062\nIHBlcmNlcHRpb24= 21063\ncmVsYXRpdmU= 21064\nY29tcGlsZQ== 21065\ndXVt 21066\ndXRvcw== 21067\nYXVj 21068\nIEFzaw== 21069\nIGluZGljYXRvcg== 21070\nL3Ro 21071\nLnNldFN0cmluZw== 21072\nIFdpc2NvbnNpbg== 21073\nLkRvbWFpbg== 21074\nIGFydGlmaWNpYWw= 21075\nRGV2ZWxvcA== 21076\nIFNhcmFo 21077\nIGx5aW5n 21078\nKHNlYXJjaA== 21079\nIEVtcGlyZQ== 21080\ndXJyaW5n 21081\n5pe26Ze0 21082\nPSIkew== 21083\nIGdldElk 21084\nIFBheW1lbnQ= 21085\ndHJhbnNpdGlvbg== 21086\nIF0u 21087\naXhpbg== 21088\nVlQ= 21089\nLXNlbGVjdA== 21090\nIGRlbW9uc3RyYXRlZA== 21091\nIGxhc3ROYW1l 21092\nZW1wbG95bWVudA== 21093\nLmdldFByb3BlcnR5 21094\nIGZvdWdodA== 21095\nZmlsZU5hbWU= 21096\nIFBlcnM= 21097\nNDUy 21098\nLWNhcmQ= 21099\nYXN0cg== 21100\nYXR0cnM= 21101\nIHByb21pbmVudA== 21102\nRGVzaWdu 21103\nYW5jb3V2ZXI= 21104\n44GX44E= 21105\nYXJkbw== 21106\nc2VjcmV0 21107\nIHJhZw== 21108\nIHBvaXNvbg== 21109\nLW1hbg== 21110\nLG9taXRlbXB0eQ== 21111\nNzQw 21112\nCXVu 21113\naXR6ZXI= 21114\nIENhc2lubw== 21115\nIFJvc3M= 21116\nLWZvb3Q= 21117\nKHJlc3VsdHM= 21118\nUGxhbg== 21119\nIGxhc2Vy 21120\n6riw 21121\nX0RS 21122\nNTIz 21123\nRmFjZWJvb2s= 21124\nNDQ5 21125\nIGJvYXJkcw== 21126\nc3Rh 21127\nXV0s 21128\nNjc1 21129\nIHRpbGVz 21130\nU0laRQ== 21131\nID1+ 21132\nOTcw 21133\nIHByZW1pZXI= 21134\nb2NhYg== 21135\nIGVuY29kZWQ= 21136\nIHJlc2VydmU= 21137\nNjA5 21138\nIEFmZ2hhbmlzdGFu 21139\nIExpc3ROb2Rl 21140\ndXJscw== 21141\nIHN1Ym1pc3Npb24= 21142\nIG5ldQ== 21143\nNDc3 21144\nICMrIw== 21145\nX1BPU1Q= 21146\nIG1vaXN0 21147\nZWxsaQ== 21148\nZWxsaWdlbnQ= 21149\nLmFsZXJ0 21150\nw7Nk 21151\nYnJl 21152\nIENvbGxlY3Q= 21153\nIGdyYXBoaWM= 21154\nIGxvbmdpdHVkZQ== 21155\nIFByb3ZpZA== 21156\nIENhbGN1bGF0ZQ== 21157\neGZmZmY= 21158\nY3JpdGVyaWE= 21159\nIHdhdGVycw== 21160\ncm9jaw== 21161\nbG9xdWVudA== 21162\nIFRyaWI= 21163\nNTEz 21164\nIGJ1cnN0 21165\nIHN1ZmZpeA== 21166\nLkV4dGVuc2lvbnM= 21167\naXNoZXM= 21168\naXZlbA== 21169\nIExJS0U= 21170\nIEdldHR5 21171\nLkFjdGlvbkV2ZW50 21172\nLnNsZg== 21173\nIEhBTA== 21174\ndXBhbA== 21175\nRUFS 21176\nNTI0 21177\ndWRp 21178\nX3RpbWVvdXQ= 21179\nVUY= 21180\nIFNpbmdhcG9yZQ== 21181\nIEFkdmVudA== 21182\nX2ludGVydmFs 21183\nY2hhZnQ= 21184\nIEVtZXI= 21185\nIHRlbGVwaG9uZQ== 21186\nIFR1cms= 21187\nX2ludGVyZmFjZQ== 21188\nIE93bg== 21189\nIGVuY291cmFnZWQ= 21190\nPE9iamVjdA== 21191\nX1RleHQ= 21192\nIE9udGFyaW8= 21193\nIEFwcGx5 21194\nLmZpcmViYXNl 21195\nIGFudGli 21196\nUHJpb3JpdHk= 21197\nZW5leg== 21198\nRGF5cw== 21199\nY2lk 21200\ndXJyZW5jZQ== 21201\nOy8= 21202\naW5uZWQ= 21203\n0YHRjw== 21204\nIHZleg== 21205\nZnc= 21206\nLy8k 21207\nYXR0YWNr 21208\nNDU4 21209\nIHN0YXJ0dXA= 21210\nYWluZXJz 21211\nLmZyYWdtZW50 21212\nb3BhY2l0eQ== 21213\nKGNvbm4= 21214\naGVpbQ== 21215\nLm5ldHdvcms= 21216\nKHN0cmVhbQ== 21217\nNjcw 21218\nIE5PTg== 21219\ndG9s 21220\nODMw 21221\nIFhib3g= 21222\nIERT 21223\nIGNhY2hlZA== 21224\nIHByb3N0aXR1dGFz 21225\nIEJhbHQ= 21226\nKCdb 21227\nNTc1 21228\nIG5vZXhjZXB0 21229\nIic= 21230\nIHNk 21231\nLnZhbGlk 21232\nX2Fn 21233\nIHJhY2Vz 21234\nNDgx 21235\nIHJvZA== 21236\naXR1ZGVz 21237\nPD4o 21238\nNTQ0 21239\nLlByb2R1Y3Q= 21240\nRm9ybXM= 21241\nTkVX 21242\nUGF5 21243\nCWJvb2xlYW4= 21244\nX2NvbnRhY3Q= 21245\nIEVsZWN0cmlj 21246\nc2tpcA== 21247\nIHd1cg== 21248\nIGNocm9uaWM= 21249\nX2RyaXZlcg== 21250\nOTQw 21251\nIFNhYg== 21252\nIFVsdA== 21253\nIFJhZA== 21254\nU1RBVFVT 21255\nIExld2lz 21256\nT0I= 21257\nIGdpZnRz 21258\nLlJlYw== 21259\nVFJVRQ== 21260\nIGludGVuc2l0eQ== 21261\nTWFya2Vy 21262\nLmNvbXBhcmU= 21263\nZmZpYw== 21264\nQ29va2ll 21265\nIEJhYnk= 21266\nIEJpZ0RlY2ltYWw= 21267\naWxldA== 21268\nIEhPTERFUlM= 21269\nIExhZHk= 21270\nIGx1bmc= 21271\nIEFsYWJhbWE= 21272\nIGRlc3M= 21273\nYCk7Cg== 21274\nIEJ1aWxkZXI= 21275\nX3JlZ2lvbg== 21276\nIG5ldXRyYWw= 21277\nOTA5 21278\nQm90aA== 21279\nIGhw 21280\nIGhvcm4= 21281\nIHNlZ21lbnRz 21282\nIEVD 21283\nIj0+Ig== 21284\nKHJlYw== 21285\nIFBp 21286\nR00= 21287\nIGxhcHRvcA== 21288\nU2NhbGFy 21289\nNDYz 21290\naXNk 21291\nLWRpYWxvZw== 21292\nIEFuZGVyc29u 21293\nIG1pc3Rha2Vz 21294\nNzA4 21295\nIEhhbg== 21296\namVz 21297\nZXN0aW5hdGlvbg== 21298\nNDM2 21299\nIHByb21pc2Vz 21300\nYmlk 21301\nIFNjaWVudA== 21302\nR0lO 21303\nIFBlcmZvcm1hbmNl 21304\nYmFnZQ== 21305\nLnVzZXJz 21306\nbGVhZGluZw== 21307\nIG9yYWw= 21308\nR3JhcGhpY3M= 21309\nNDg4 21310\nX1BUUg== 21311\nNTE4 21312\naGFuZw== 21313\nIGluZXY= 21314\ncHJvY2Vzc2luZw== 21315\nRmFjdG9y 21316\nIE5B 21317\nJHN0cmluZw== 21318\nIGdyb3VuZHM= 21319\nLlNhdmVDaGFuZ2Vz 21320\nY2xvY2s= 21321\nOTQx 21322\nY3JpcGNpb24= 21323\nIE5ld3Rvbg== 21324\nZ2M= 21325\nLmluY2x1ZGVz 21326\nIGJsYXN0 21327\nICctJw== 21328\nIHB1ZWRl 21329\nNDY5 21330\nLlNlc3Npb24= 21331\nIGdyZXA= 21332\nX2ZpbmFs 21333\nIEdheQ== 21334\nIEdpdmU= 21335\naXJp 21336\nLXN0YXI= 21337\nIFVJSW1hZ2U= 21338\nX2Vwb2No 21339\ndWJi 21340\nZW50aA== 21341\nIGVsaXRl 21342\nIGNhbXBhaWducw== 21343\nIFBvcm5v 21344\nX2Fzc2lnbg== 21345\nUHJvdG9jb2w= 21346\nIEJlaW5n 21347\nIEFpcnBvcnQ= 21348\nIGNvbnZlbnRpb25hbA== 21349\nIFdhdA== 21350\nIENJ 21351\nRVRB 21352\nIEFudGhvbnk= 21353\nIHRhYmxldA== 21354\nKGZvcm1hdA== 21355\nIGNvbnNpc3RlbnRseQ== 21356\nIElvd2E= 21357\nNDc0 21358\nIGF2YXRhcg== 21359\nMDI3 21360\nLmN1cnNvcg== 21361\nIVs= 21362\nIGhhbmdpbmc= 21363\nSGVy 21364\nU3VjaA== 21365\nJzsKCgo= 21366\nb3JnZW91cw== 21367\nKCk9PQ== 21368\nIHZpZXdNb2RlbA== 21369\nIOOD 21370\nIGVscw== 21371\nIEFnZW50 21372\nRmV0Y2g= 21373\nYXBvcg== 21374\nIGN4 21375\ncHJlYWQ= 21376\nIFBpZXI= 21377\nb2VmZg== 21378\nNjE2 21379\nU24= 21380\nODkw 21381\nIFZpcnR1YWw= 21382\nQXBy 21383\nLldoaXRl 21384\nNjE1 21385\nX01PRA== 21386\nIFBvaW50cw== 21387\n5aSx 21388\nIGdlbmVz 21389\nIHZlbmRvcg== 21390\nIG1haW5zdHJlYW0= 21391\nPHNyYw== 21392\nIEVsaXphYmV0aA== 21393\nRGVjb2Rlcg== 21394\nLXN0YXRl 21395\nIEdsYXNz 21396\nbmN5 21397\nYWRpYW5z 21398\nX21vbg== 21399\nIFJlbW90ZQ== 21400\nIHdpcmVsZXNz 21401\nIE1p 21402\n5Yk= 21403\nNDY2 21404\n6KGo 21405\nc3RhZ2U= 21406\nIFRpbGU= 21407\nbGxpYg== 21408\nVmFyaWFudA== 21409\nPT0K 21410\nIGdvbGRlbg== 21411\nKFFTdHJpbmc= 21412\nLnB1dEV4dHJh 21413\nIERvbQ== 21414\nIEFuaW1hdGlvbg== 21415\nIGludGVyYWN0aXZl 21416\naWZhY3Q= 21417\n6Zmk 21418\nTEVU 21419\nIGZyZXF1ZW50 21420\nIDw+Cg== 21421\nRmlsZW5hbWU= 21422\nIHNuZQ== 21423\nIEZvb3RiYWxs 21424\nIHJpdmFs 21425\nIGRpc2FzdGVy 21426\naW9uaWM= 21427\nIERhbWFnZQ== 21428\nLlJlc291cmNl 21429\nLWVu 21430\nIFR5cGVz 21431\nZ2V0U3RyaW5n 21432\nKGJvYXJk 21433\nIGJvbA== 21434\ncGxhaW4= 21435\nenlt 21436\n4Liy 21437\nIHNjYW5uZXI= 21438\naWxkZXI= 21439\nX21zZ3M= 21440\n5o8= 21441\nKGludGVudA== 21442\nIGRlc3RydWN0 21443\nIGJ1c3Q= 21444\nIEVtcGxveQ== 21445\nb25p 21446\nIFVJVmlld0NvbnRyb2xsZXI= 21447\nIG9kZHM= 21448\nZWFyZXI= 21449\nR2VvbWV0cnk= 21450\nIHlpaQ== 21451\nX0VYUE9SVA== 21452\nIEF0dGFjaw== 21453\nIG5pZXQ= 21454\nIGltcHJlc3Npb24= 21455\nIEdpbA== 21456\nX3Byb2I= 21457\nNTI4 21458\nIENG 21459\nIEV4cGVyaWVuY2U= 21460\nL3BsdWdpbnM= 21461\nLk1ldGhvZA== 21462\nIGJlbGllZnM= 21463\nTmF0aXZl 21464\nX2J1aWxk 21465\nIHZpZw== 21466\nIHJhbmtz 21467\nY292ZXJlZA== 21468\nNzA1 21469\nc3VjaA== 21470\nR3VhcmQ= 21471\nLnBhY2s= 21472\nYWRkZXI= 21473\nODA5 21474\naXZpYQ== 21475\nbG5n 21476\nINCy0Ys= 21477\nNTUy 21478\nVGltZXN0YW1w 21479\nX25vdw== 21480\nIHBva2Vy 21481\nIHVuYw== 21482\nIHNoYXBlcw== 21483\nLXR5cGVz 21484\nX3BlcmlvZA== 21485\ncGs= 21486\nIHZldGVyYW4= 21487\nIHNvbm8= 21488\nIGFwcG9pbnRlZA== 21489\nb3ZlcmZsb3c= 21490\nLmRyaXZlcg== 21491\nX2NhdA== 21492\ndXR0 21493\ncGxhbnQ= 21494\naW1i 21495\nIEFjY2VwdA== 21496\nIGNvbmNlcnQ= 21497\nCW5vZGU= 21498\nCXo= 21499\nPz4NCg== 21500\nIGJhbm5lZA== 21501\nCSAgICAgICAgICAgICAgIA== 21502\nIHRveGlj 21503\nIGRpc2FwcGU= 21504\nNDcz 21505\nyJs= 21506\nIGdyYWNl 21507\nYXRlZnVs 21508\nUmVwbHk= 21509\nIENydXo= 21510\nNDg2 21511\nIHNjcmFw 21512\nIGtleXdvcmRz 21513\nc2ltcA== 21514\nIG1vcnRnYWdl 21515\nIGN5YmVy 21516\nIEV4ZWN1dGU= 21517\nIGxhdGl0dWRl 21518\naWZ1 21519\nLkNPTQ== 21520\nZGJv 21521\nIHNvcnRz 21522\nIEdhcw== 21523\nb21pYWw= 21524\nLkxvY2Fs 21525\nQ2VsbHM= 21526\nLlJlcGxhY2U= 21527\nU3RyaW5ncw== 21528\nLmZpdA== 21529\nIFRoaXJk 21530\nJSIsCg== 21531\nIHt9Ii4= 21532\nIFNvbnk= 21533\nIFs6 21534\nNTg1 21535\nIGZhbGxlbg== 21536\nLicpCg== 21537\naW5o 21538\nIE1D 21539\nIHJlZGlz 21540\nQ29kZXM= 21541\nIHByb2ZpbGVz 21542\naG9vaw== 21543\nUmVkdWNlcg== 21544\nX0ZVTkM= 21545\nIG5hdmlnYXRl 21546\nc3RybGVu 21547\nIGhvcm0= 21548\n4Z4= 21549\nIFNS 21550\nLmJvb3Q= 21551\nIGRpZ2VzdA== 21552\nCWhlYWRlcg== 21553\nLmZpbmRPbmU= 21554\n5oE= 21555\nRGJUeXBl 21556\nbmlh 21557\nX21lcmdl 21558\nIGRvbm5l 21559\nL0dldHR5 21560\nX0NIQVI= 21561\nIGJhbmRz 21562\nLlVSTA== 21563\nYXJ0aWFs 21564\nIGZyZXE= 21565\nIHNpc3Q= 21566\nTmc= 21567\nIHJlbmRlcmluZw== 21568\nXENvcmU= 21569\nV2lkZ2V0cw== 21570\nIFZB 21571\nIGFjdGl2aXN0cw== 21572\nU3Rl 21573\nPV8= 21574\nYWxsYQ== 21575\nU3RhbXA= 21576\nIGxvYWRz 21577\nIHh4 21578\nIExlYXJuaW5n 21579\nLk12Yw== 21580\ndWly 21581\nKCIk 21582\nIGNvbm5lY3Rpbmc= 21583\nUmVhZE9ubHk= 21584\ndXJ1 21585\nIEVhZw== 21586\nQklU 21587\nX0RFTA== 21588\n5ac= 21589\nYXJyYXNz 21590\nZXh0ZXJuYWw= 21591\nIFlPVVI= 21592\nIEJyZXc= 21593\nIEZpdmU= 21594\nIHJlc2l6ZQ== 21595\naWdpZA== 21596\nZXJhdGlvbg== 21597\nNjUz 21598\nINGN 21599\nNTM2 21600\n5Yqg 21601\nMDM5 21602\nIENhdGNo 21603\n2YE= 21604\nIExlb24= 21605\nYW1pbA== 21606\nLkJvZHk= 21607\nQ2xpcA== 21608\nL2xpc3Q= 21609\nLmJy 21610\nRWRpdFRleHQ= 21611\nCWRi 21612\nLkdhbWU= 21613\nKEJ1aWxkQ29udGV4dA== 21614\nYmFja2VuZA== 21615\nLlJlZA== 21616\nZmFjZWJvb2s= 21617\nNTI5 21618\nLnVybHM= 21619\nbXI= 21620\ncm9sbGVk 21621\nLS0tLS0tLQ== 21622\nIGludGVydmVudGlvbg== 21623\nIHJldGlyZW1lbnQ= 21624\nIEtpdA== 21625\nIFBSRQ== 21626\nVXBwZXJDYXNl 21627\nIFNvY2tldA== 21628\nIDot 21629\nIHN0dWR5aW5n 21630\nIE1ldHJv 21631\nYXJkZWQ= 21632\nIGNvbnZlcnNhdGlvbnM= 21633\nQ2FsbGVk 21634\nIGV4YW1pbmU= 21635\nZXJ0aWZpY2F0ZQ== 21636\nLmd6 21637\nLXJlc3BvbnNpdmU= 21638\nIHJlZnVuZA== 21639\nX25ldHdvcms= 21640\nMDI2 21641\nYWxsb3dlZA== 21642\nZW1wdA== 21643\nIG1lYWxz 21644\nQ2F0ZWdvcmllcw== 21645\nIHRyYXZlbGluZw== 21646\nIGtn 21647\nIHNoYW1l 21648\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 21649\nIGV4cGxpY2l0bHk= 21650\nIG1hdGhlbWF0aWM= 21651\nIFN1aXRl 21652\nIFJHQg== 21653\nKioqKioqLw== 21654\nIG1peHR1cmU= 21655\nbGVhcm5pbmc= 21656\nLnRlbXBsYXRl 21657\nYXR0cw== 21658\nd3g= 21659\nCWN0eA== 21660\nLnByb3BlcnRpZXM= 21661\nIGRyaW5rcw== 21662\nIEVpdGhlcg== 21663\nc2V0VGV4dA== 21664\nLmdldERhdGE= 21665\nLnppcA== 21666\nIHJldmVhbHM= 21667\nPHRhYmxl 21668\nLkhhc2hNYXA= 21669\nIEh1cg== 21670\nKSIpOwo= 21671\nLmZyYW1ld29yaw== 21672\nIFNUQVJU 21673\nZmVlZGJhY2s= 21674\nNDU3 21675\nIHNhZmVseQ== 21676\nLmljb24= 21677\nY29uZmlndXJl 21678\nLmxvY2s= 21679\nLmxheWVycw== 21680\nLz4uCg== 21681\nIHJhbmtlZA== 21682\nX2ltcGw= 21683\nIEhhbmRsZXM= 21684\nIGhvc3RlZA== 21685\nIHVwZGF0aW5n 21686\nYWxidW0= 21687\n6Z0= 21688\nIHNoYWRlcg== 21689\nRWRpdG9ycw== 21690\nLXJvdW5k 21691\nW117 21692\nIHNlcA== 21693\nIEhp 21694\nVEVN 21695\nbG9va3Vw 21696\nLm1hbg== 21697\nX0lOUFVU 21698\nIHRocmVhdGVuZWQ= 21699\nX0lNUE9SVA== 21700\nIGRyb3Bz 21701\ncnVpdA== 21702\nc2lk 21703\nYm90aA== 21704\nIEV4Y2Vs 21705\nIGplcg== 21706\nb3JkaW5hcnk= 21707\n0LXQuQ== 21708\nVklFVw== 21709\ncmVwbHk= 21710\nICk6Cg== 21711\nY29sb3Jz 21712\ndmVyaWZpZWQ= 21713\nX1Ry 21714\nX3BhcnNl 21715\nIGNvbmdyZXNz 21716\nNjE3 21717\nUHJvbWlzZQ== 21718\naW50cw== 21719\nIE1vdGhlcg== 21720\nLkFwaQ== 21721\nIER1cmF0aW9u 21722\nIGZpcnN0TmFtZQ== 21723\naW5oZXJpdGRvYw== 21724\nIE1hcnM= 21725\nIGFwcg== 21726\nT0RZ 21727\nIHZpc2l0cw== 21728\nNjMx 21729\nIGhlYWxpbmc= 21730\nbGV0dGVycw== 21731\nKSkpOw0K 21732\nZnV0dXJl 21733\nLkZyYW1ld29yaw== 21734\nIGtpc3M= 21735\nIGludm9sdmU= 21736\nIHNpbGVudA== 21737\nYWRvd3M= 21738\nIGFueWJvZHk= 21739\nc2No 21740\nNjkw 21741\nIHNvbGVseQ== 21742\nLWltZw== 21743\nIHByb3ByaQ== 21744\nIGluc3RydWN0 21745\nIGxpY2Vuc2Vz 21746\nIG1ldGg= 21747\nIGNvbmRlbQ== 21748\nIERvbWFpbg== 21749\nIEhhcnJpcw== 21750\nIHPDpQ== 21751\nQ0VQVA== 21752\nQmF0Y2g= 21753\nQGV4dGVuZHM= 21754\nIENPTlRSSUJVVA== 21755\nLkRhdGFGcmFtZQ== 21756\nNDcy 21757\nX3BhY2tldA== 21758\ncmVjaXNpb24= 21759\nIGZvY3VzaW5n 21760\nLmh0 21761\nX18iOgo= 21762\nOkdldA== 21763\nIEtD 21764\nIHBhc3NhZ2U= 21765\nU2VnbWVudA== 21766\nX2NlbnRlcg== 21767\nLXpB 21768\nX0JM 21769\nIGNvbnZpbg== 21770\nIGNsYXNzaWZpZWQ= 21771\nIE5TTXV0YWJsZQ== 21772\nX2Fw 21773\ndGlsZQ== 21774\nUmVjdGFuZ2xl 21775\nNDky 21776\nKG51bXM= 21777\ndmVucw== 21778\nIFVJQnV0dG9u 21779\nIEZlZGVy 21780\nYW1v 21781\nIG91dGxpbmU= 21782\nIFBhcnNlcg== 21783\nIOKJ 21784\nIFdvcmtz 21785\nLlNjaGVtYQ== 21786\nIGVuZ2luZXM= 21787\nNjM3 21788\nNTYz 21789\nX2NvbW1vbg== 21790\nNTQy 21791\nX29sZA== 21792\nIHNldENvbnRlbnRWaWV3 21793\nIC8vLzw= 21794\nIEJU 21795\nZm0= 21796\nIGRpdmVycw== 21797\nX3dlaWdodHM= 21798\nZW1hcms= 21799\nIEFDVA== 21800\nIHByb3BvcnRpb24= 21801\nb3ZlcmxheQ== 21802\nLmRpcm5hbWU= 21803\nIEdpdA== 21804\nX1JFRkVSRU5DRQ== 21805\nPD4= 21806\nbGI= 21807\nX3J1bGU= 21808\n6LSl 21809\nIFB1dGlu 21810\nIHNsZWVwaW5n 21811\nKCk6DQo= 21812\nIHByZXNlcnZl 21813\nIHBhcmxpYW1lbnQ= 21814\nIExvb2tpbmc= 21815\nIHBpY2tpbmc= 21816\nIERpc3BhdGNo 21817\nIHNsaXA= 21818\n65M= 21819\nIEx5bg== 21820\nX3NpZ25hbA== 21821\nY29uZmlndXJhdGlvbg== 21822\nIFBpdHQ= 21823\nNDkx 21824\nYWRlbg== 21825\ncHJvY2VkdXJl 21826\nIGVudGh1c2k= 21827\nZmlnaHQ= 21828\nIENvbnNpZGVy 21829\nIHRvcm4= 21830\nQ29ubmVjdGVk 21831\nLmNvcw== 21832\nX2dyb3Vwcw== 21833\nIFRoaW5r 21834\nIGRlbGliZXI= 21835\nIHJlc2lk 21836\nd29ya2luZw== 21837\nLmNvbHVtbnM= 21838\nIENhbGxlZA== 21839\nIGVzbGludA== 21840\nPiIs 21841\nX0RPV04= 21842\naGlzdA== 21843\nIEFkdmFuY2Vk 21844\nIHJld2FyZHM= 21845\nYWN0b3Jz 21846\nIHNpbGVuY2U= 21847\nNDc5 21848\nIG15dGg= 21849\nIG5ldXI= 21850\nNTE5 21851\nIGF1Y3Rpb24= 21852\nLkdldFN0cmluZw== 21853\nZWtz 21854\nKHByb2plY3Q= 21855\nNTk4 21856\nCW1zZw== 21857\nCW91dHB1dA== 21858\nIGNvbXBsYWludHM= 21859\nNTUx 21860\nLFM= 21861\nIHRibA== 21862\nICwKCg== 21863\ncmlvcnM= 21864\nYWhyZW4= 21865\nIGxhd3llcnM= 21866\ncmVkdXg= 21867\nX3N5bWJvbA== 21868\nb2ZmZWU= 21869\nX1JFU1VMVA== 21870\nKE5hbWU= 21871\nVVRD 21872\nLmN1cnJlbnRUaW1l 21873\nIG9yZ2FuaXM= 21874\nLmFyZw== 21875\nNTMz 21876\nIG1pbmlt 21877\nd2ljaw== 21878\nIHJlY2VpdmVz 21879\nQmFsYW5jZQ== 21880\nIHNwZWFrcw== 21881\nIERheXM= 21882\nIEJlbG93 21883\nNDgz 21884\ndGlwbw== 21885\nUHJlc2VudA== 21886\nIHJlc2Vydg== 21887\naHA= 21888\nIHJpdA== 21889\nX1JJR0hU 21890\nLS0p 21891\nIGNoYWlybWFu 21892\nNzgx 21893\nRElT 21894\nIEJPT1NU 21895\nIGV4cGVyaW1lbnRz 21896\nNjg3 21897\nX18pOwo= 21898\nIHN0YW1w 21899\nIGZlcnQ= 21900\nIGZvbmQ= 21901\nVGVy 21902\nZWx2ZQ== 21903\ndXJlbg== 21904\nK2k= 21905\nZW5kZW5jeQ== 21906\nIHZpcnR1YWxseQ== 21907\nLi4uIg== 21908\n772e 21909\nOTI1 21910\nLWNlbnQ= 21911\nX3VuaXF1ZQ== 21912\nIHByaWNpbmc= 21913\nbWlj 21914\nUkVTSA== 21915\nIDo6Og== 21916\nIGFubm90YXRpb24= 21917\nIENpcmNsZQ== 21918\nb25nb2Ri 21919\naXRhcw== 21920\nICUo 21921\nKGNvbXBvbmVudA== 21922\nINC+0LE= 21923\nKHBvcnQ= 21924\nLWhvdXI= 21925\nLm9iag== 21926\nTEJM 21927\nIGp1cnk= 21928\nR0JU 21929\nIHNweQ== 21930\nIFByb2Zlc3Npb25hbA== 21931\nICIiOwoK 21932\nIHN0cmlraW5n 21933\nIGRpc2NyaW1pbmF0aW9u 21934\nIHBheXM= 21935\nOTM3 21936\nbGljdA== 21937\nZW50ZXM= 21938\nIHRocm93aW5n 21939\nIFBsdWdpbg== 21940\nKGRlZg== 21941\nIFJ1bnRpbWVFeGNlcHRpb24= 21942\nIE1pZ3JhdGlvbg== 21943\nNTk5 21944\nIGRpYw== 21945\nYmFn 21946\nb25pYQ== 21947\nIGNvcnJ1cHRpb24= 21948\nNzA0 21949\nKE1hcA== 21950\nIHByeg== 21951\nLmR0bw== 21952\nIGFjcXVpcmU= 21953\nU3RhdGVUb1Byb3Bz 21954\nIGxvdmluZw== 21955\n0L7Qtg== 21956\nX3BhdHRlcm4= 21957\nIGVtb3Rpb25z 21958\nIHB1Ymxpc2hlcg== 21959\nX2Jl 21960\nIGNvdXBsZXM= 21961\nNDk4 21962\nb2o= 21963\nIENoYXJ0 21964\nIHRyb3A= 21965\nLnRvb2w= 21966\nIGVzdGFibGlzaG1lbnQ= 21967\nIGRvbA== 21968\nNjU0 21969\nIHRvd2Vy 21970\nIGxhbmU= 21971\nIFN5ZG5leQ== 21972\nIGZpbGxpbmc= 21973\nY2xhaW1lZA== 21974\nNjQ0 21975\nIGRpYWxvZ3Vl 21976\nIGNvbnZlbnRpb24= 21977\nYm9va2luZw== 21978\ncGFyZW5jeQ== 21979\n5rE= 21980\nIEdlbmVyaWM= 21981\nNzE4 21982\nXFNjaGVtYQ== 21983\nNDgy 21984\nNjE4 21985\nIHJhbmdlcw== 21986\nL2No 21987\nIHBhbmVscw== 21988\nIHJ1bGVk 21989\n55Sf 21990\nLnRz 21991\nX3NldHM= 21992\nIGNsZWFudXA= 21993\nUHJldmlvdXM= 21994\nIEFuaW1hbA== 21995\nNjA3 21996\nKCQo 21997\nIEF2ZQ== 21998\nb2xsYXI= 21999\nMDI4 22000\nX2V2YWw= 22001\nCU5hbWU= 22002\nKHRyZWU= 22003\nICJd 22004\nNTcx 22005\nIGR1dGllcw== 22006\nPScv 22007\nQ2xpY2tlZA== 22008\nIGRpZmZlcmVudGx5 22009\nIENsYXJr 22010\nIGRpdA== 22011\nb2xvZ2lzdHM= 22012\nIHN5bmQ= 22013\nIHNlbmRz 22014\nLWtub3du 22015\na2I= 22016\nIE1vZGFs 22017\naXRhdGl2ZQ== 22018\nIHJhY2luZw== 22019\nIGhpZ2hsaWdodHM= 22020\nIFNpbW9u 22021\nIENhcHRhaW4= 22022\n5L+h 22023\nIENC 22024\nY29udGlu 22025\nYXJhbg== 22026\nIHBoeXNpY3M= 22027\ncmV0dHk= 22028\nZXRhbA== 22029\nLm1k 22030\nYXhpb3M= 22031\nIHNwZWFrZXJz 22032\nIHByZXA= 22033\nIGF3YXJkZWQ= 22034\n7KeA 22035\nIENvcm4= 22036\nIE5hdHVyZQ== 22037\nVURJTw== 22038\nNzM3 22039\nIHByb2o= 22040\nLXByZQ== 22041\nW3U= 22042\nRmVhdHVyZXM= 22043\nIGlzRXF1YWw= 22044\nQmluYXJ5 22045\nc2ln 22046\nIGNvbmZ1c2lvbg== 22047\nNTQ2 22048\nNTY4 22049\nIEhhdA== 22050\nIGt0w7M= 22051\nLmNvbmZpZ3VyZQ== 22052\nTU9O 22053\nNDk0 22054\nL2VkaXQ= 22055\nX0FkZA== 22056\nLHRydWU= 22057\nNTQx 22058\nIGNsaQ== 22059\nRXJyb3JNZXNzYWdl 22060\nLWxvYWRlcg== 22061\nRGltZW5zaW9ucw== 22062\ndWx0aXBseQ== 22063\nIHshIQ== 22064\nIFNxbENvbW1hbmQ= 22065\nIHNwb2tlbg== 22066\nIHBpY3M= 22067\nIHRveQ== 22068\nKEtleQ== 22069\nIExvb3A= 22070\n2Kg= 22071\nRUFUVVJF 22072\naW5jdGlvbg== 22073\nX3NldHVw 22074\nd3JhcHBlcg== 22075\nIHRvbmc= 22076\nY3VsYXI= 22077\nT3B0 22078\nLlBs 22079\nPSIs 22080\nKGxlbmd0aA== 22081\ndW1u 22082\nIGNocm9t 22083\nIHNldmVudA== 22084\nIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbg== 22085\nNDc4 22086\nCXN0YXJ0 22087\nIGJlZ3Vu 22088\nQ0VQVElPTg== 22089\nZGF0YXNldA== 22090\nODI1 22091\nIEZhaWxlZA== 22092\nY29scw== 22093\nNDU5 22094\nIGtuZWU= 22095\naW1vcmU= 22096\nLnNwbGljZQ== 22097\nc2hlbGw= 22098\naWdnZXJz 22099\nIHRoZW1lcw== 22100\nOTk1 22101\nIERK 22102\nIEFzc2lzdGFudA== 22103\nLSQ= 22104\nTWF5YmU= 22105\nIG9yZGVyaW5n 22106\nIEludGVsbGlnZW5jZQ== 22107\nIE1hc3NhY2h1c2V0dHM= 22108\nIGZhaWxpbmc= 22109\nZWxzb24= 22110\nR3JlYXQ= 22111\nPWk= 22112\nLnJlc3Q= 22113\nIGludml0ZQ== 22114\nLWRpc2FibGU= 22115\nLkdyb3VwQm94 22116\n4oCZZXN0 22117\nIHRhY2tsZQ== 22118\nZ3Y= 22119\nZXR0ZXI= 22120\nICksDQo= 22121\nX3J1bGVz 22122\nLndhcm4= 22123\nZnVuY3Rpb25z 22124\nIENocmlzdGlhbnM= 22125\nIGJhY2tlZA== 22126\nIHNsaWRlcg== 22127\nIGVuam95aW5n 22128\nbmVzdA== 22129\nIGhpag== 22130\nX21z 22131\nLy8q 22132\nQW5ub3RhdGlvbnM= 22133\nIFZhcmlhYmxlcw== 22134\nPFY= 22135\nKHNlcnZlcg== 22136\nIE9yYWNsZQ== 22137\nZWxlbWVudHM= 22138\nIG9yZ2FuaXNhdGlvbg== 22139\nX3BvaW50ZXI= 22140\nIEhlYWRlcnM= 22141\nW2Q= 22142\nIGRlYWRsaW5l 22143\naXNzYQ== 22144\nIGtuaWZl 22145\nIE5BU0E= 22146\nIEhlaWdodA== 22147\nNzg0 22148\nIEFzeW5j 22149\nIHZlbnVl 22150\nLmRvbQ== 22151\nYm91cm5l 22152\nIEhhd2Fp 22153\nIG1lbW8= 22154\naWN0aW9ucw== 22155\nIHN1cnZlaWxsYW5jZQ== 22156\nb21p 22157\nL2Fzc2V0cw== 22158\nNTg3 22159\nIGVkdQ== 22160\nxJs= 22161\nIHJvc3Rlcg== 22162\nIGhpcmVk 22163\nIFRvaw== 22164\nIHBsYWNlbWVudA== 22165\ndXJhdGlvbnM= 22166\nIHNldFN0YXRl 22167\nIE1hZ2F6aW5l 22168\nIGhvcnJvcg== 22169\nVHJ5 22170\nIGxhZw== 22171\nIEV2ZXJ5b25l 22172\ndGh1cg== 22173\nKSk7DQoNCg== 22174\nLnJldHVybg== 22175\nIHN5bXA= 22176\n4paI4paI 22177\nIG5pZ2h0cw== 22178\nd29ya2Vy 22179\nIGFsZQ== 22180\nZW5uZXNzZWU= 22181\nLnN0ZXA= 22182\nIHN5bmNocm9uaXplZA== 22183\nNDg3 22184\nb3VyaQ== 22185\nRG9lcw== 22186\nLmNoYW5nZQ== 22187\nZm9u 22188\nLnNldEJhY2tncm91bmQ= 22189\naXJjdWxhcg== 22190\nNDc2 22191\nKy0= 22192\nIENJQQ== 22193\nNzI5 22194\nIEphbmU= 22195\nIFNpbWlsYXI= 22196\nLUk= 22197\nbGV2ZWxhbmQ= 22198\nIHByb3NwZWN0 22199\nX2ZvdW5k 22200\nCWNvbG9y 22201\nLkRpYWdub3N0aWNz 22202\nIGFubm91bmNl 22203\nIGFzc3VtZXM= 22204\nL3Ry 22205\nIGJk 22206\nOTg3 22207\nIENhcmJvbg== 22208\nIGFuYWx5cw== 22209\nNTY0 22210\nLmRlc3Q= 22211\nbmlr 22212\nIExpZQ== 22213\nLWluZGV4 22214\nRHJhd2FibGU= 22215\nIFRBRw== 22216\nIHRyaWFuZ2xl 22217\nX0ZMT0FU 22218\nCQkgICAgIA== 22219\nLmJsYWNr 22220\ndnVl 22221\nY3VyYWN5 22222\nIGFmZmVjdHM= 22223\nOTA2 22224\nIHN1cmVseQ== 22225\nU2xpZGVy 22226\ndWtp 22227\nY2VyeQ== 22228\nIHVudGVy 22229\nLnByb2ZpbGU= 22230\nb3Jkb24= 22231\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 22232\nbGVhdmU= 22233\nIHNtYXJ0cGhvbmU= 22234\nZ2ll 22235\nIGNvbnNwaXI= 22236\nIHR1dG9yaWFs 22237\n57G7 22238\nIGNhYg== 22239\nNzY1 22240\nIFN1bW1hcnk= 22241\nKgoK 22242\nw6Ro 22243\nIlRoaXM= 22244\nIHNsaWRlcw== 22245\nIjwv 22246\nLmRldg== 22247\nJzw= 22248\nIFJpbmc= 22249\nxYJh 22250\nIGtvdGxpbg== 22251\nLmR1bXBz 22252\nIGJhc3M= 22253\n7Is= 22254\nUE9JTlQ= 22255\nIHV0dGVy 22256\nIMOpcw== 22257\nLmZ1bGw= 22258\nT0xM 22259\nIGNlcmVtb255 22260\nc2xvdA== 22261\nIGFpbXM= 22262\ndG9vbHRpcA== 22263\nLnNjb3Jl 22264\nLWRk 22265\nNjQy 22266\nIHByb3g= 22267\nUmVjb2duaXplcg== 22268\nZHluYW1pYw== 22269\nw6RuZA== 22270\nL3N0ZA== 22271\nRFU= 22272\nIE5vdEltcGxlbWVudGVk 22273\nKCItLQ== 22274\nUkFX 22275\nNjM1 22276\nIGV0aG5pYw== 22277\nYW5ubw== 22278\nIGNoYW1waW9uc2hpcA== 22279\nLHNlbGY= 22280\nIGFjY2VwdGFibGU= 22281\nIFNwcml0ZQ== 22282\nW3R5cGU= 22283\nw7xo 22284\nIFZL 22285\nKGpQYW5lbA== 22286\nNTQ4 22287\naXRy 22288\n66A= 22289\nYXVyYQ== 22290\nIGZhY3VsdHk= 22291\nYXZlcnM= 22292\nIFJlY29yZHM= 22293\nLlNlY3VyaXR5 22294\nIGNvbnN0cmFpbnQ= 22295\nLkJs 22296\nVWludA== 22297\nYmFsYW5jZQ== 22298\nIGNvbW1l 22299\nIE5paw== 22300\nU3VwcHJlc3NXYXJuaW5ncw== 22301\nIE9jZWFu 22302\nNTU0 22303\nX0lk 22304\nRGF0YVNldA== 22305\nIGluc2VydGVk 22306\nIjsNCg0K 22307\n4oCz 22308\naXBwZXQ= 22309\nIGFubml2ZXJzYXJ5 22310\nIHJldGlyZWQ= 22311\nb3JjaA== 22312\nIHBlcnBldA== 22313\nXEZvcm0= 22314\nIGludm9sdmVtZW50 22315\nX3VzZXJuYW1l 22316\nYWxlbQ== 22317\nX1NFUlZJQ0U= 22318\nIEluZGlhbmE= 22319\nIGNpZ2FyZXQ= 22320\nYXJ0eg== 22321\nIFJD 22322\nIG1lYXN1cmVtZW50cw== 22323\n572u 22324\nIGFmZmlsaWF0ZQ== 22325\nYWNpb25hbA== 22326\nLXNlY3Rpb24= 22327\nX2NvbnRyb2xsZXI= 22328\ndmFyZA== 22329\nX2Vs 22330\nIFRveQ== 22331\nPFA= 22332\nTWFjaGluZQ== 22333\nw7ptZXI= 22334\nIFllYWg= 22335\nIllvdQ== 22336\nIG1vbA== 22337\nLkNs 22338\nY29udHJvbGxlcnM= 22339\nIHN1c3BlbmRlZA== 22340\nKys7Cgo= 22341\nQVRU 22342\nIHByb2plY3Rpb24= 22343\nUGFkZGluZw== 22344\nNTg2 22345\nLm1hdGg= 22346\nNjg2 22347\nZmFjdG9yeQ== 22348\nMDQy 22349\nIGdhbW1h 22350\nKCk+ 22351\nY3ljbGU= 22352\nIEJ1bGw= 22353\ncGF0aHM= 22354\nIHVucA== 22355\nIHZpZXdEaWRMb2Fk 22356\nX01vZGVs 22357\nIGFzc2VydFRydWU= 22358\nIHJhdGVk 22359\nRGVjbA== 22360\ndmVydGVk 22361\nIERhdA== 22362\nYnJldw== 22363\nIHBvaW50aW5n 22364\nTXM= 22365\nIFBvaW50ZXI= 22366\nKSc= 22367\nX25vbg== 22368\nNTI3 22369\nIFNFQw== 22370\nIHllYWg= 22371\nZ2VuY3k= 22372\naW5pdGlhbGl6ZQ== 22373\nZmx5 22374\nNzEx 22375\nW3Bvcw== 22376\nLGc= 22377\nVGVsZQ== 22378\nMDM0 22379\nIGpva2U= 22380\nIGNsYXVzZQ== 22381\nLmZpbmRCeUlk 22382\nZW5lcw== 22383\nKGluc3RhbmNl 22384\nNjI2 22385\nwqM= 22386\nOTE1 22387\nIHNsaWM= 22388\nX2hvbWU= 22389\nICovfQo= 22390\nX3BhZ2Vz 22391\nKHNlcnZpY2U= 22392\nOTA1 22393\nUlA= 22394\nIEFtb25n 22395\nLmdldEN1cnJlbnQ= 22396\nODA2 22397\n44K5 22398\nIHNsZWU= 22399\nPTw/ 22400\nX3Byb3A= 22401\nZmx1c2g= 22402\nIE1N 22403\nQmVs 22404\nTm90ZXM= 22405\nICovCgoK 22406\nMDM1 22407\nIHJo 22408\nVGFibGVz 22409\nIEp1 22410\nIFwNCg== 22411\nbGljaGVu 22412\nIEluc3VyYW5jZQ== 22413\nXQoKCg== 22414\nIGNvb3Blcg== 22415\n4oCUdGhl 22416\nLm1hdA== 22417\nNDg5 22418\nIGZvaQ== 22419\nKGF1dG8= 22420\nTWFyZ2lu 22421\nNjM2 22422\nIHJlc2lkZW5jZQ== 22423\nNTU5 22424\nIEhpc3Rvcg== 22425\nIH49 22426\nRGk= 22427\nICcpCg== 22428\nIGV4Y2x1ZGU= 22429\nLkRyb3A= 22430\nJyI7Cg== 22431\nIGNvYw== 22432\nX3VwbG9hZA== 22433\nSGlkZQ== 22434\nIFVua25vd24= 22435\nIG5vcm1hbGl6ZQ== 22436\nX3JldA== 22437\nLicKCg== 22438\nLm5vZGVz 22439\nODcw 22440\nLkRhdGFTb3VyY2U= 22441\nYmxlbXM= 22442\nIGdlbnRsZQ== 22443\nOiQ= 22444\nJykpOwoK 22445\nLlJlc291cmNlcw== 22446\n4og= 22447\nIFRhaQ== 22448\nVkVE 22449\nIEd1bg== 22450\nbGVhbnM= 22451\nIERvYw== 22452\nLlZvaWQ= 22453\nIEFtZW5kbWVudA== 22454\nODY2 22455\nZXNzZWQ= 22456\nNzA2 22457\nIHJlY2lwaWVudA== 22458\nLk5vZGU= 22459\nb3Zv 22460\nIGFsaWduSXRlbXM= 22461\nIFVuaXR5 22462\nIFJvbWU= 22463\nYnVybg== 22464\nIHZvbHRhZ2U= 22465\nIFNIQQ== 22466\nNTM0 22467\nNTcy 22468\nIEdPT0Q= 22469\naGVscGVycw== 22470\nLyoqKi8= 22471\nIGVsaW1pbmF0ZQ== 22472\nd2Fw 22473\nX2FuZ2xl 22474\nIHJlZnVnZWVz 22475\nCWFzc2VydEVxdWFscw== 22476\nIHByb2Jl 22477\nKCcuLi8uLi8= 22478\neW91cg== 22479\nIG1lcmNo 22480\nVUJMRQ== 22481\nCXJlc3BvbnNl 22482\nX0RFRg== 22483\nIGVudmlyb25tZW50cw== 22484\nb3VzaW5n 22485\nIHJlc3RyaWN0ZWQ= 22486\nIENPTlRSSUJVVE9SUw== 22487\nNjIx 22488\nIGNvbXBhbmlvbg== 22489\n4bqj 22490\ncG93 22491\ndXJ0bGU= 22492\nYmll 22493\nLlBlcmZvcm0= 22494\nPW4= 22495\ncmVkaXM= 22496\nIGRpdmlkZQ== 22497\nIGNvbGxlY3RpdmU= 22498\nRGlmZg== 22499\nRHluYW1pYw== 22500\naXNTZWxlY3RlZA== 22501\nYXN0eXBl 22502\nIExvdA== 22503\nIFN0YXRlbWVudA== 22504\naWNpcGFudA== 22505\nYWto 22506\nNTE3 22507\nIHNlcmlhbGl6ZXI= 22508\nX0NGRw== 22509\nYXZhbA== 22510\nIHZpZXdlcnM= 22511\nIEZP 22512\nT2Nj 22513\nIHJvYnVzdA== 22514\nIE1pdA== 22515\nX0FORA== 22516\nVHJhbnNpdGlvbg== 22517\ndW5hdGU= 22518\nIHByaWRl 22519\nIGRyYW1hdGlj 22520\nIFBhZ2Vz 22521\nX3R1cGxl 22522\nIGNvcGllZA== 22523\nbW4= 22524\nIG91Z2h0 22525\nIGVxdWFsaXR5 22526\nX2hhcw== 22527\nX1dS 22528\nNTcz 22529\nZW1p 22530\nIHN1cmdl 22531\naWxsbw== 22532\nKCl9 22533\nMDgx 22534\nIHBlcmY= 22535\nOTIx 22536\ndWxr 22537\nIGludmVzdG1lbnRz 22538\nNzg1 22539\nIGdlbmVyYXRpb25z 22540\nIHJlc29ydA== 22541\nIHRydXN0ZWQ= 22542\nX2ZyZXE= 22543\nIGZvcm1h 22544\nQVRJT05T 22545\nIEh1 22546\nIEdyYWQ= 22547\nX2NwdQ== 22548\nICIsCg== 22549\ncmVzc2U= 22550\nKCoq 22551\nIGhlcmVieQ== 22552\nIGxha2U= 22553\nX1NUQUNL 22554\nIEJ1cmVhdQ== 22555\nIHN1c3RhaW5hYmxl 22556\nIFBF 22557\nIGRlaQ== 22558\nIEFuc3dlcg== 22559\nUGx1cw== 22560\nL3dlYg== 22561\nIHN0ZXI= 22562\nIG1vdW50ZWQ= 22563\nX2NsZWFy 22564\nZm9ubw== 22565\naWFuY2Vz 22566\nX2ZpbmQ= 22567\nIGNvbmZ1c2Vk 22568\nX2Jpbg== 22569\nREVDTA== 22570\nIGluc3RhbnRseQ== 22571\nVUlU 22572\nX0RP 22573\nU2V0dXA= 22574\na2Vl 22575\nX3ByaW50Zg== 22576\nX3N0bXQ= 22577\nIFN0ZWFt 22578\ncHJvZg== 22579\nbHY= 22580\nIHNvbHZpbmc= 22581\nbGF0b3I= 22582\nb3R5cGVz 22583\nQW5kcm9pZA== 22584\nX2VzY2FwZQ== 22585\nTGVhdmU= 22586\nLmdldFRpbWU= 22587\nODEx 22588\naWZz 22589\nIGNvdg== 22590\nIENsYXNzaWM= 22591\nLWRhcms= 22592\nNTI2 22593\nRGlzcGF0Y2hlcg== 22594\nLWdyYXk= 22595\nIFBhbGVzdGluaWFu 22596\nLmRlZXA= 22597\nIEluamVjdA== 22598\nIHJlZmxlY3Rpb24= 22599\nNTM4 22600\nIGh5cG8= 22601\nY29uc3RydWN0b3I= 22602\nLmFwcGxpY2F0aW9u 22603\neXN0ZXI= 22604\n4pU= 22605\nc2Nob29s 22606\nIENvdw== 22607\nNTkz 22608\nIGZvb3RhZ2U= 22609\nLWlucw== 22610\nIC8qKjw= 22611\nYXRvbQ== 22612\nIHByb2ZpdHM= 22613\nOTIz 22614\nIGJvb2tpbmc= 22615\nX3RocmVzaG9sZA== 22616\nIExpdmVy 22617\nIGNpdGl6ZW4= 22618\nYng= 22619\nIFN0b3Jt 22620\nIENvcnA= 22621\nIHdpZGVy 22622\nIikpewo= 22623\nX0FDVElPTg== 22624\naW9ycw== 22625\nYWlzZXM= 22626\nOm5vbmU= 22627\nIGNpdGVk 22628\nImZtdA== 22629\nQXVn 22630\nY29tYg== 22631\nIHdoaXRlcw== 22632\nIHNlc3M= 22633\nXl4= 22634\naWdodGg= 22635\nIHRhbmc= 22636\nX0NBUA== 22637\nNjE0 22638\nIGludGVyYWN0aW9ucw== 22639\nNDk3 22640\nIGdhcmQ= 22641\nNjQ2 22642\nIHByaXpl 22643\nNjQ3 22644\nYWZrYQ== 22645\nVHJp 22646\nXEVsb3F1ZW50 22647\nIER5bmFtaWM= 22648\n55CG 22649\nZ3A= 22650\nIHJlYWxt 22651\nIE5p 22652\nIEVkd2FyZA== 22653\nIGlkZW50aWZpY2F0aW9u 22654\nIHBoeXNpY2FsbHk= 22655\n5pys 22656\nIHBpY2tz 22657\nLWZyaWVuZGx5 22658\nPGk= 22659\naWZpY2U= 22660\nX0FQ 22661\nTG9nZ2Vk 22662\nNTUz 22663\nfSIu 22664\nL3V0aWxz 22665\nIC4uLi4= 22666\nRU5USUFM 22667\nKEFjdGlvbg== 22668\nJ10pOwoK 22669\nIHByb3Rlc3Rz 22670\nb2xpbmU= 22671\nX1JFVFVSTg== 22672\nIHBvcHVsYXRpb25z 22673\nIFJhaW4= 22674\nZHVw 22675\nb3JpYWw= 22676\nIEF1dGhvcml0eQ== 22677\nX2V4cHI= 22678\nMDc1 22679\nLnVz 22680\nIGNvcnJ1cHQ= 22681\nCWltcG9ydA== 22682\nPGNoYXI= 22683\nIExFRlQ= 22684\nIGNhYmluZXQ= 22685\nIG5laWdoYm91cg== 22686\nIFNxbFBhcmFtZXRlcg== 22687\nYXR0ZXJlZA== 22688\nZW1pYQ== 22689\nIHJldmlld2Vk 22690\nIEhlbGxv 22691\nYmxvY2tz 22692\nKHByb2Nlc3M= 22693\nOTk3 22694\nIG9ic2VydmF0aW9u 22695\ncmF0aW5n 22696\nLmdsb2JhbA== 22697\nIHByZWZlcmVuY2U= 22698\nLnByZXBhcmU= 22699\nIGRvemVucw== 22700\nV29ya2Vy 22701\nIGNhbGN1bGF0aW9u 22702\nIFRvd2Vy 22703\nYWlyeQ== 22704\nIElTTw== 22705\nIGh1bWFuaXR5 22706\nLmFzSW5zdGFuY2VPZg== 22707\nNzEy 22708\nIGR5cw== 22709\nIHBpZXI= 22710\naWd1ZQ== 22711\nIGFzc29jaWF0ZQ== 22712\nIGludGlt 22713\nbm90aWZ5 22714\nKHt9LA== 22715\nODI4 22716\nIFJlcHJlc2VudA== 22717\ncGhldA== 22718\nc2V1ZG8= 22719\n64uI64uk 22720\nLlBvc2l0aW9u 22721\nIGNsb3N1cmU= 22722\nKGNsYXNz 22723\nCXRpbWU= 22724\nIE9yYW5nZQ== 22725\nX29wcw== 22726\nIHBvcHVw 22727\nIEltcHJv 22728\nX3NlY3JldA== 22729\nIEV1 22730\nLnNldExheW91dA== 22731\ndWxseQ== 22732\nIHNjcmV3 22733\nIFNpemVk 22734\nIENPTVA= 22735\nIG5vdGlmaWNhdGlvbnM= 22736\nVHJhbnNmZXI= 22737\nRW1pdHRlcg== 22738\nKG9sZA== 22739\nbGV0aWM= 22740\nNDkz 22741\nIC0KCg== 22742\nIHBhbmlj 22743\nNzE1 22744\nIExDRA== 22745\ncnVsZXM= 22746\nIGFmZmFpcnM= 22747\nIEZpbGw= 22748\nX0lSUQ== 22749\nOTEy 22750\nYXR0YWNobWVudA== 22751\nIHZvbQ== 22752\nPGJ1dHRvbg== 22753\nNTk1 22754\nIHRleHRz 22755\nIGFjdGl2YXRlZA== 22756\nLmFjY2Vzcw== 22757\nKHJlYWRlcg== 22758\nVGVt 22759\nIGNvcm9u 22760\ncm9waA== 22761\nRE1JTg== 22762\nIGVtZXJnZWQ= 22763\nIGluZmxhdGVy 22764\nIEluZGVwZW5kZW50 22765\nb3Jpb3Vz 22766\nIERlbGhp 22767\nNjcy 22768\nIGdseXBoaWNvbg== 22769\nIENhcmw= 22770\nU2k= 22771\nIGV4cGVyaW1lbnRhbA== 22772\nLmJhcg== 22773\nSUFO 22774\nIHNxbGl0ZQ== 22775\nY2Npw7Nu 22776\nOTA0 22777\nX0JBQ0s= 22778\nLG5hbWU= 22779\naG9ydA== 22780\nIHRlbnM= 22781\nNTQ5 22782\n6rM= 22783\ndXNpdmU= 22784\nIGdlbnVpbmU= 22785\nIGJ1Y2s= 22786\nL2Rpdg== 22787\nLnJvb20= 22788\nX05FVw== 22789\nZXN0YWRv 22790\nIEFyaw== 22791\nb2NvbHM= 22792\nLmdlbmVyYXRl 22793\ndG91Y2g= 22794\nZml4ZWQ= 22795\nICco 22796\nIHJlZmVycmluZw== 22797\nIG92ZXJ3aGVsbWluZw== 22798\nKGxldA== 22799\nIGZ1ZQ== 22800\nNjIz 22801\nX0VOVg== 22802\nd29tYW4= 22803\nRmlndXJl 22804\nYW5pbWF0ZQ== 22805\nIE1vcnQ= 22806\nIGxvbmdlc3Q= 22807\nY29sbg== 22808\nVE0= 22809\nOl8= 22810\ncmllbA== 22811\nLE4= 22812\nIFJBTQ== 22813\nIGp1c3RpZnlDb250ZW50 22814\nIGFjdGl2ZWx5 22815\nL3B1YmxpYw== 22816\nIOuw 22817\nR2l2ZW4= 22818\nT1RBTA== 22819\n5aSx6LSl 22820\nU2VxdWVudGlhbA== 22821\nIHN1cHBsZW1lbnQ= 22822\nLmFi 22823\nIGNhdGVnb3I= 22824\nfX0sCg== 22825\nYWhhbg== 22826\nJ3Vu 22827\nb3NpdHk= 22828\nIGFjY29tcGxpc2g= 22829\nVXRpbGl0aWVz 22830\nLnZpZXdz 22831\nLmNu 22832\nY2VpbA== 22833\nIENCRA== 22834\nIFJG 22835\nUEVH 22836\nIEdpZnQ= 22837\nQVlT 22838\nIFdJTg== 22839\ncGFuaWVk 22840\nIMWf 22841\nIG9ic2VydmVy 22842\nIHNtZWxs 22843\nIHs6 22844\nTGlua2Vk 22845\nPlsK 22846\nb2xlcg== 22847\nIGxpYmVydA== 22848\nIGAK 22849\nIHdlbm4= 22850\nbGF0ZWQ= 22851\nIGltbXVuZQ== 22852\nKE5vZGU= 22853\nIFByb2JsZW0= 22854\nIEFicw== 22855\nbG9ncw== 22856\nIC4uLw== 22857\nIEFEQw== 22858\nIH19Ij4K 22859\nPicpOwo= 22860\nPWI= 22861\nIFdpbmQ= 22862\nbGFob21h 22863\nIGFsbG9jYXRl 22864\nb3JpYW4= 22865\nIHByZXNjcmlwdGlvbg== 22866\nLXF1YWxpdHk= 22867\nIE1heW9y 22868\nODU1 22869\naW5lbHk= 22870\nZW5kZm9yZWFjaA== 22871\nIENvbXBsZXg= 22872\na29t 22873\nNzA5 22874\nVFk= 22875\nNzkw 22876\nXV0u 22877\nLlN0eWxl 22878\nX21hbnk= 22879\nJywnJA== 22880\nIGJhcnJpZXI= 22881\nIEZldGNo 22882\nIE1hcnZlbA== 22883\nIHJlc2lzdA== 22884\n0L7Qs9C+ 22885\nYmlkZGVu 22886\nIFJ1bm5hYmxl 22887\nOmZhbHNl 22888\nODk5 22889\nIGJ1aWxkcw== 22890\nIFN0YWdl 22891\nIGR1Yg== 22892\nZW1wbw== 22893\nLnNpdGU= 22894\nNTU4 22895\nOwoKCgo= 22896\nOTk0 22897\nIERlbnZlcg== 22898\nIHJldmVs 22899\nIHRyaWdnZXJlZA== 22900\nIGRpY2U= 22901\nX2ZhaWw= 22902\nIGdj 22903\nODMz 22904\nNTg5 22905\nCVg= 22906\nIFRocm93YWJsZQ== 22907\nNzc1 22908\nLnJvdXRlcg== 22909\nIFJldm9sdXRpb24= 22910\n0YDQsA== 22911\nX05PTg== 22912\nMDU1 22913\nn6U= 22914\nNTc4 22915\nIGVsZGVy 22916\nIGFicm9hZA== 22917\nINC1 22918\nIEFkdWx0 22919\nYmxy 22920\nZ2x5cGhpY29u 22921\nNjEz 22922\nIHByb21vdGluZw== 22923\nIGl6 22924\nIFNvbGlk 22925\nNjQ1 22926\nX2xvYWRlcg== 22927\nZWFybHk= 22928\nLmVuYWJsZWQ= 22929\nLWVkaXQ= 22930\nIFVM 22931\nX3BsYXk= 22932\nIEludGVycnVwdA== 22933\nIGFkdmFudGFnZXM= 22934\ndWNsZQ== 22935\nIG1lY2hhbmljYWw= 22936\nLnRhYmxlTGF5b3V0UGFuZWw= 22937\nIFdvcmtpbmc= 22938\nIGFub255bW91cw== 22939\nUmF0aW5n 22940\naWdpb3Vz 22941\nX3Bob25l 22942\nLmFkZEFjdGlvbkxpc3RlbmVy 22943\nIGZyYW4= 22944\ndW5kZW4= 22945\nICopJg== 22946\nX2Jvb2w= 22947\ndWxhdGl2ZQ== 22948\nIGNvbmU= 22949\nIE11bHQ= 22950\nIG3Dtg== 22951\nIEZvcndhcmQ= 22952\nXSk6Cg== 22953\nIGNvbnZpbmNlZA== 22954\nYWN0ZWQ= 22955\nNjQz 22956\n44GT 22957\nIENvbmZpZ3VyZQ== 22958\nIGNlaWxpbmc= 22959\nRGVy 22960\nIHBhc3NlbmdlcnM= 22961\nR3JvdXBz 22962\nIHNvY2Nlcg== 22963\nL1c= 22964\nYXZpb3Jz 22965\nc3dpdGg= 22966\nIFpvbmU= 22967\nLk9wdGlvbnM= 22968\nIE1vbQ== 22969\naWVkZXI= 22970\nQXJyYXlz 22971\nIHRyZWF0bWVudHM= 22972\nIHByb3RlY3Rpbmc= 22973\nZmFj 22974\nIHBpY2tsZQ== 22975\nQnV0dG9uSXRlbQ== 22976\nNzEz 22977\nIGJsb2NraW5n 22978\nc3RyYXI= 22979\nw7I= 22980\nIEV4cG9ydA== 22981\nIHRocmV3 22982\nb3R0YQ== 22983\nIEJBU0U= 22984\nLndz 22985\nLkxFQURJTkc= 22986\nb3JkZXJCeQ== 22987\nX2RlbGF5 22988\nIFB1 22989\nLmRsbA== 22990\nIENob29zZQ== 22991\nOTky 22992\nUG9saWNl 22993\nIEJFR0lO 22994\nYm94ZXM= 22995\nIGRpYW1vbmQ= 22996\nLGw= 22997\nIAkJCQ== 22998\nIGN1cmlvdXM= 22999\nNjI0 23000\ndHY= 23001\nIGVyb3Rpc2NoZQ== 23002\nYWNrYWdlcw== 23003\nCVNldA== 23004\nVGljaw== 23005\nLmJvcmRlcg== 23006\nc3RhdGljbWV0aG9k 23007\nIGNoZXI= 23008\naW52b2ljZQ== 23009\nIGNydQ== 23010\nIGRlZmVjdA== 23011\nX21ldGFkYXRh 23012\ncmVsYXRpb24= 23013\naWthbg== 23014\nW04= 23015\nKFF0 23016\nKEJhc2U= 23017\n5oGv 23018\nYmVhdA== 23019\nIEVtcHR5 23020\nCW8= 23021\nX3NoaWZ0 23022\nIHJlZ3JldA== 23023\nNzIy 23024\nVGhvc2U= 23025\nQ2VudA== 23026\nIFBvcnR1Zw== 23027\nIElzbGFuZHM= 23028\nIFRJTUU= 23029\nTWFuYWdlbWVudA== 23030\nOTk2 23031\nLXNw 23032\nNTM5 23033\nw6ptZQ== 23034\nIG5vdGlvbg== 23035\ndW5pZnU= 23036\nUEs= 23037\nODI2 23038\n6KGM 23039\nIENVUkxPUFQ= 23040\nXCJc 23041\nVVY= 23042\n57o= 23043\nZHJh 23044\nY291 23045\nPWA= 23046\nIERlc3Ryb3k= 23047\ncnA= 23048\nLmNhbmNlbA== 23049\nR0c= 23050\ncnVudGltZQ== 23051\nIFZ1ZQ== 23052\nIHByb2dyZXNzaXZl 23053\nL3NlcnZpY2Vz 23054\nIHJ1bm5lcg== 23055\nX0ZSQU1F 23056\nLlRvb2xTdHJpcE1lbnVJdGVt 23057\nICcsJw== 23058\nZGVsYXk= 23059\nPXV0Zg== 23060\nIHNjcmVlbmluZw== 23061\nIHB1bGxpbmc= 23062\nb21hcw== 23063\nIGFudGg= 23064\nLW5ldw== 23065\nL2xvY2Fs 23066\nIGlQYWQ= 23067\nIHR3aXR0ZXI= 23068\nIGR5aW5n 23069\nIGhlYXZlbg== 23070\nIFVJbnQ= 23071\nIFNlbmF0b3I= 23072\nIHByZXN1bQ== 23073\nIFdhbGtlcg== 23074\nIG92ZXJjb21l 23075\nZXRlY3Rpb24= 23076\nIGVtYmFycmFzcw== 23077\nQ2hpbmE= 23078\nNjM5 23079\nSW5jbHVkZQ== 23080\nUk9MTA== 23081\nIGRhdGFUeXBl 23082\nRGF2aWQ= 23083\n4Lij 23084\nbG9w 23085\nLW1vbnRo 23086\nIHNjYXI= 23087\nIFNhZmU= 23088\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 23089\nIGFjY2Vzc29yaWVz 23090\nIHJhbXA= 23091\nX1VTRQ== 23092\nIGNvbnRyYWQ= 23093\nKSldCg== 23094\nIHByZXN0 23095\nIEhS 23096\nIFJhcA== 23097\nIHVzaXpl 23098\nIGNhcGFiaWxpdHk= 23099\nIGNvcnQ= 23100\nLW5leHQ= 23101\nMDc3 23102\nNjI3 23103\nIGJ1cmRlbg== 23104\nODIy 23105\nX3JlYWRlcg== 23106\nIEBA 23107\ncmVndWxhcg== 23108\nIEth 23109\nMDM2 23110\nTUFO 23111\nIGFzdHI= 23112\nICcnKQo= 23113\nIGZlZA== 23114\nIHBhcnNpbmc= 23115\nIFllYXJz 23116\nIGJyb2tlcg== 23117\nIjp7Ig== 23118\nIGFrdA== 23119\nSW52ZW50b3J5 23120\nYWJlbGVk 23121\nIGFyZ3BhcnNl 23122\nKioqKioqKgo= 23123\ndmVyc2F0aW9u 23124\nIGNvcmQ= 23125\nIFRp 23126\nIGhvcGVmdWxseQ== 23127\nIGFo 23128\ndmVyYg== 23129\nIHN0b2xlbg== 23130\nLkVudHJ5 23131\nIGV4cGVjdGluZw== 23132\nT3JpZW50YXRpb24= 23133\nIHBvd2VyZWQ= 23134\nIHBlcnNpc3Q= 23135\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 23136\nJ10pOw== 23137\nJykpLAo= 23138\nIENhc2g= 23139\nCWl0ZW0= 23140\nODE4 23141\nZ3JhZGVz 23142\ncm9wb2w= 23143\nYmFzaWM= 23144\nICIpOw0K 23145\nIGF3YXJkcw== 23146\nKHJhbmdl 23147\nLWFsbA== 23148\nIElCT3V0bGV0 23149\nIEluZGVlZA== 23150\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 23151\nIHN0b21hY2g= 23152\nIGZsb3dlcg== 23153\nIHNldw== 23154\nX3RpbWVz 23155\nYXZpcw== 23156\nUVN0cmluZw== 23157\nIFJvdXRlcw== 23158\nX3Byb3Q= 23159\nIGNvbWVkeQ== 23160\nIGxvZ291dA== 23161\nIHdvb2Rlbg== 23162\nIHBvc3Rlcg== 23163\ncGllY2U= 23164\nLkpvaW4= 23165\nIFBvaw== 23166\nY2Vsb25h 23167\nbXV0ZXg= 23168\nOw0KDQoNCg== 23169\nIHN0cmlrZXM= 23170\nNzg3 23171\nTG9hZGVk 23172\nKWFyZw== 23173\nZXNh 23174\nVW5pdGVk 23175\nRXA= 23176\nUEVMTA== 23177\nODA3 23178\nIEF0bGFudGlj 23179\ndWxsZXQ= 23180\nNjUy 23181\nYXBwbGU= 23182\nIHNldHRsZWQ= 23183\nYWNvbg== 23184\nIHByaW50ZXI= 23185\nIEdD 23186\n5a6a 23187\nIHJlbmRlcmVk 23188\nLOKAmQ== 23189\naGVpdA== 23190\nc29jaWFs 23191\nLmdl 23192\nNzE0 23193\nIFJpY2s= 23194\nIFV0YWg= 23195\nZ290 23196\nb25pY2Fs 23197\nIFNjcm9sbA== 23198\nIFNjaWVuY2Vz 23199\nIGp1Zw== 23200\nIGFtcGw= 23201\nZW50aQ== 23202\nTEVGVA== 23203\nIHRhYnM= 23204\nIGVub3Jtb3Vz 23205\nLmdldEtleQ== 23206\nbG9jYXRl 23207\nLkVY 23208\nLnN0b3JhZ2U= 23209\nLldl 23210\nIHRvYXN0 23211\nIEFkZGl0aW9uYWxseQ== 23212\nODgy 23213\nIE5PVw== 23214\nNTQ3 23215\nX1VQREFURQ== 23216\nIHRyYW5zZmVycmVk 23217\ndGhh 23218\nLkRpc3BsYXk= 23219\nX3Vp 23220\nSURFTw== 23221\nIG1lYW5pbmdmdWw= 23222\nIE1vc2Nvdw== 23223\nLHRoaXM= 23224\nIFZpY3Rvcmlh 23225\n5pS5 23226\nINCf 23227\nLnN0YWNr 23228\nIEJhcm4= 23229\ncGFyZWRTdGF0ZW1lbnQ= 23230\nOnN0cmluZw== 23231\nIGJpag== 23232\nIFNUQVRF 23233\nIGVtcGxveWVycw== 23234\nCWlucHV0 23235\nKHw= 23236\nIGxleA== 23237\naW52b2tl 23238\nCW51bQ== 23239\nKyss 23240\nYXRpYWw= 23241\nb3JzZXM= 23242\nIGZvcms= 23243\nX3R4dA== 23244\nIEFudG9uaW8= 23245\nICg8 23246\nYXZlcnNl 23247\nIGRldmFzdA== 23248\n44CA 23249\nLkRlYw== 23250\nIEdhcmQ= 23251\nL3Vp 23252\nLiU= 23253\ndHJp 23254\nIHJvbGxlZA== 23255\nVmFsdWVQYWly 23256\naXR0ZW4= 23257\nIFRoZXI= 23258\nIHZyb3U= 23259\nIEZsb3c= 23260\nIEZpbmFuY2U= 23261\nIENvbWI= 23262\nSEM= 23263\nLnNldFZpc2libGU= 23264\naXNs 23265\nIHBr 23266\nNzcz 23267\nIHVwc2V0 23268\nKHJhdw== 23269\nIFZpY2U= 23270\nZWF0dXJlcw== 23271\nIExhbmc= 23272\nMDI5 23273\nTG9va2luZw== 23274\nNzY3 23275\nIEFTVA== 23276\nIHRyaXBz 23277\nIEp1c3Rpbg== 23278\nYnJvd3Nlcg== 23279\nPSInLiQ= 23280\nLnZlcnRpY2Vz 23281\nODIx 23282\nLWNv 23283\nfS97 23284\nID8s 23285\nIERvbWlu 23286\nIEJlbGc= 23287\nIjw= 23288\nIHN1cHBvc2U= 23289\nYWRkeQ== 23290\nIHdhbGtz 23291\nNjg4 23292\nRVJSVQ== 23293\nX2ZpbHRlcnM= 23294\nUHJlZmVycmVk 23295\nc2NlbmU= 23296\n0LXRgQ== 23297\nIEFmZmFpcnM= 23298\nICIjew== 23299\nIG9uU3VibWl0 23300\nIHN0b2Nrcw== 23301\nL3ZpZXc= 23302\nZ3JlZQ== 23303\nLWdldA== 23304\nOTAz 23305\naGl0 23306\nSm8= 23307\nLmdldEM= 23308\nNzI1 23309\nSW5pdGlhbGl6ZWQ= 23310\n0YLQuA== 23311\nY3V0cw== 23312\nKFR5cGU= 23313\nIEFncmVlbWVudA== 23314\nIFZpZXRuYW0= 23315\nIC8qIQ== 23316\nIHBpenph 23317\nLXZpZXc= 23318\nX2Vt 23319\nIGxocw== 23320\nIG11eQ== 23321\nIElkZW50 23322\nIEZyaWVuZHM= 23323\nMDYx 23324\nIGFidW5k 23325\nX0FE 23326\nLnRpbWVzdGFtcA== 23327\nLSc= 23328\nIGR1cGxpY2F0ZQ== 23329\nIGh1bnRpbmc= 23330\nIHJlZ3VsYXRvcnk= 23331\naWFv 23332\nYW1vdXM= 23333\nIEVudGVydGFpbm1lbnQ= 23334\nW0E= 23335\naWF0cmlj 23336\nX0NMSUVOVA== 23337\nIEtpZHM= 23338\nL3BrZw== 23339\nQnJlYWs= 23340\nKSkpOwoK 23341\nIFNoYXBl 23342\nIHJlbGF0aW5n 23343\nSW50ZXJydXB0 23344\nYWJsZU9wYWNpdHk= 23345\nZW1icmU= 23346\nIG15c3Rlcnk= 23347\nIGpvdXJuYWxpc3Rz 23348\ncml0YWJsZQ== 23349\nLkxpbms= 23350\nIHN0b3BwaW5n 23351\nQ1JFVA== 23352\nLkRC 23353\nIHBvcHVsYXJpdHk= 23354\nIGdldw== 23355\nIGltcHI= 23356\nc2V0VmFsdWU= 23357\nRkxBRw== 23358\nCW1heA== 23359\nIGJha2U= 23360\nd3k= 23361\nIEVjb25vbWlj 23362\nIGVuY29udHI= 23363\nIGZuYW1l 23364\nL2Rl 23365\nUmFuaw== 23366\nIGJ1Z3M= 23367\nLnNt 23368\nIG1lZGlhbg== 23369\nRE9XTg== 23370\nIFN1cmU= 23371\nQXRJbmRleA== 23372\nIERpY2s= 23373\nIChfXw== 23374\nLmRlbHRh 23375\nRnI= 23376\nIHN1Z2dlc3Rpbmc= 23377\nIFJlY3ljbGVyVmlldw== 23378\nLGU= 23379\nU1RBUlQ= 23380\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 23381\neGZvcmQ= 23382\nIHJlY2VpcHQ= 23383\nQ0xBSU0= 23384\ncmVhZG9ubHk= 23385\nOTY4 23386\nIGVuZ2FnaW5n 23387\nNjE5 23388\nQ2E= 23389\nYXNtYQ== 23390\nIGVuc3VyaW5n 23391\nRW5nbGlzaA== 23392\nIFZhbmNvdXZlcg== 23393\naHl0aA== 23394\nIHB1cmNoYXNpbmc= 23395\nIFBJ 23396\nLndvcmQ= 23397\nKHNw 23398\nLmhvbWU= 23399\nOmRlZg== 23400\nIGdpZw== 23401\nNTc0 23402\nNjcx 23403\nIFZl 23404\nZm9ydW0= 23405\nIE1pdGNo 23406\nQmF5 23407\nX0ZM 23408\nNjUx 23409\nIHNvbGw= 23410\nNTc3 23411\nX2NvbHVtbnM= 23412\nIG1pbm9yaXR5 23413\nYmlyZA== 23414\nIGhhbmRlZA== 23415\nU1NM 23416\nU1RBVA== 23417\nIG5lcnZvdXM= 23418\ng70= 23419\nIGZpbGVQYXRo 23420\nQ1JFQVRF 23421\nQXc= 23422\nIHBlbnM= 23423\nODM1 23424\nc2VlZA== 23425\nIENvbXB1dGU= 23426\nb2xr 23427\nNTk0 23428\nIEFzc2V0 23429\ncmVhY2g= 23430\nJyksDQo= 23431\nbmF2aWdhdGlvbg== 23432\nTEY= 23433\nL3V0aWw= 23434\nIFB1Yg== 23435\nIOKU 23436\nY2lvbg== 23437\nIyMK 23438\nMDcy 23439\nSUlJ 23440\nVGFnTmFtZQ== 23441\nIGFtaWQ= 23442\ncGVybWlzc2lvbg== 23443\naWZpYWJsZQ== 23444\neEZGRkZGRkZG 23445\n0L3QuA== 23446\nLkJ1ZmZlcg== 23447\nX2lycQ== 23448\nZGFyaw== 23449\nIHJldHZhbA== 23450\nLmZpcmU= 23451\ncHJvZHVjdGlvbg== 23452\nLmxpc3Rlbg== 23453\nIFdlYXRoZXI= 23454\nIGJ1eWVycw== 23455\nLm5l 23456\nZXJw 23457\nIFBlbnQ= 23458\nNjk5 23459\nIHdlbGZhcmU= 23460\nIHBhZ2VTaXpl 23461\nIFN0YWRpdW0= 23462\nZXJ0YQ== 23463\nIGxldg== 23464\nYW1wYQ== 23465\nUGFnZXI= 23466\nNjY1 23467\nIGNoYXJnaW5n 23468\nIE5ldGZsaXg= 23469\nfG51bGw= 23470\nX3JhbmRvbQ== 23471\nLnhwYXRo 23472\nIHN0ZXJl 23473\nIElTSVM= 23474\ncG9uc2Vz 23475\nKGxvYw== 23476\nNTY2 23477\nZXlvbmQ= 23478\nIE9mZmljaWFs 23479\nNjU3 23480\nIE1hcnlsYW5k 23481\nRGF0YVR5cGU= 23482\nX3Bhcg== 23483\ne30s 23484\nIEVuam95 23485\nNzI3 23486\nX1NISUZU 23487\nIEF3YXJkcw== 23488\nX0VOVFJZ 23489\nIHNlZW1pbmdseQ== 23490\nZW50aWNhdGU= 23491\nIGhlYXJ0cw== 23492\nNTgz 23493\nXzsKCg== 23494\nIEhJVg== 23495\nIGluZGl2aWQ= 23496\nIEZsYWc= 23497\nX2N0cmw= 23498\nIENhbGxiYWNr 23499\nLHo= 23500\nIEdQVQ== 23501\nCW9iag== 23502\nIFBob2VuaXg= 23503\nIEJVUw== 23504\nOTA3 23505\nIHJ1YmJlcg== 23506\nX0FVVEg= 23507\nIFNvbHV0aW9ucw== 23508\nKGxvY2F0aW9u 23509\nVmFyaWFibGVz 23510\nLnNldEVuYWJsZWQ= 23511\nX2hpZ2g= 23512\nV08= 23513\nR2VzdHVyZQ== 23514\nIHJldHJ5 23515\nIG9iamVjdEZvcktleQ== 23516\nYWxsb3dlZW4= 23517\nIG1vcw== 23518\nIENlbGU= 23519\nIGlra2U= 23520\nKGNlbGw= 23521\nIE1PREU= 23522\ncmVuYQ== 23523\nIGRlc2NyaWJpbmc= 23524\nNjQx 23525\nIHBoaQ== 23526\nIHJk 23527\nIGRlc2VydmU= 23528\nIHdoZWVscw== 23529\n5biC 23530\nIGNyaXRpY3M= 23531\nNzU1 23532\nTmFtZXNwYWNl 23533\nIEZyYQ== 23534\nIAoKCgo= 23535\nIGFsbGE= 23536\nIHJlcXVpcmluZw== 23537\n5pyf 23538\ndXRhdGlvbg== 23539\nIGRlbGF5ZWQ= 23540\nIGFkbWluaXN0cmF0aXZl 23541\nIGJheQ== 23542\nLmhpZGRlbg== 23543\nVGV4 23544\nMDUx 23545\nIGJvdW5kYXJpZXM= 23546\nIF0pOwoK 23547\nIEZvbGxvd2luZw== 23548\nfi8= 23549\nRmk= 23550\nX2NvbnY= 23551\nX1RJVExF 23552\nIGRlc2Rl 23553\nSUNvbGxlY3Rpb25WaWV3 23554\nQWxpYXM= 23555\nIGJpdGU= 23556\ncGF0aWVudA== 23557\nX0NPTU1BTkQ= 23558\nQ29tcGxldGVk 23559\nCWVsaWY= 23560\nKDw= 23561\nQnVzaW5lc3M= 23562\nIFBvb2w= 23563\nIHB1cnN1ZQ== 23564\nIEJhbg== 23565\nX3N0ZXBz 23566\nX0RFQ0w= 23567\ndW1ibGU= 23568\nIGNvbWJv 23569\nIExheWVy 23570\nLnhy 23571\nIGR1cA== 23572\nLS0tLS0tLS0t 23573\nNjI4 23574\nIG1vZGlmaWVy 23575\ncm9i 23576\ncmV6 23577\nNjk2 23578\nIGF0aGxldGVz 23579\nVXNlZA== 23580\nd2Vhcg== 23581\nODE1 23582\nIGxlZ2l0aW1hdGU= 23583\nICIKCg== 23584\nIGh2 23585\nU3Rk 23586\nMDM3 23587\nIEhvbGQ= 23588\nIHN1cnZpdg== 23589\nIEFsbGlhbmNl 23590\nIEVhcmx5 23591\nNzc4 23592\nQmVoYXZpb3I= 23593\nKGZvbnQ= 23594\nL2xpYnM= 23595\nIHJlY3RhbmdsZQ== 23596\nIHNpbmdlcg== 23597\nIGFtcA== 23598\nRXF1YWxUbw== 23599\nICIuIg== 23600\nIGdpcmxmcmllbmQ= 23601\n5bE= 23602\nbGluZWFy 23603\nb2JzZXJ2 23604\nIHBpw7k= 23605\nIGNvbXBsZW1lbnQ= 23606\nV2l0aFZhbHVl 23607\nKHBhc3N3b3Jk 23608\ndGFrZQ== 23609\nQmxhbms= 23610\nIENvbXBhcg== 23611\nJyIs 23612\nX3BvbGljeQ== 23613\nbW9uZ29vc2U= 23614\nX0ZBSUxFRA== 23615\nLnJlcG9ydA== 23616\nUmF0aW8= 23617\nLlBlcmZvcm1MYXlvdXQ= 23618\nNzQ3 23619\ndXNhYmxl 23620\nbWVycw== 23621\nX3JlbmRlcg== 23622\nUEVFRA== 23623\nNzcy 23624\nIGxlc2I= 23625\nCUU= 23626\nX3Rvb2w= 23627\nIGxhZGllcw== 23628\nOTA4 23629\n0L7RgQ== 23630\nKSkpKQo= 23631\nOzs7Ow== 23632\nLmRvdA== 23633\nIG5lc3Q= 23634\ncGVhaw== 23635\ndWtraXQ= 23636\nZWNh 23637\nX1NX 23638\nICYo 23639\nIE9rbGFob21h 23640\nIGJhbmtpbmc= 23641\nNTY5 23642\nIE5pbnRlbmRv 23643\nNzUy 23644\nIHJlcHJvZHVjZQ== 23645\nX2VsZW1lbnRz 23646\nX21hYw== 23647\ncHJveHk= 23648\nIHJlbWFya2FibGU= 23649\nfS8kew== 23650\nIG91dHM= 23651\nLmhhc05leHQ= 23652\nTU9ERQ== 23653\nNjU4 23654\nIGFuaW1l 23655\nLmNvbm4= 23656\nVW5pcXVl 23657\nRG9t 23658\nIGltcG9ydGFudGx5 23659\naXR0eQ== 23660\nIGp1aWNl 23661\nVHc= 23662\nIFBhcnRuZXJz 23663\nIGF0dGFja2luZw== 23664\nIHBvcnRhYmxl 23665\nYW1pZW50bw== 23666\nLlBpY3R1cmVCb3g= 23667\nLmdlbg== 23668\nIG9wdGltYWw= 23669\nNTgy 23670\nIHJlY3Jl 23671\nIGpvdXJuYWxpc3Q= 23672\nIEV4dHJhY3Q= 23673\nIE1vcmVvdmVy 23674\nIG1hcmdpblRvcA== 23675\nLkFw 23676\nIGZpcmluZw== 23677\nTmFO 23678\nCXRlbXBsYXRl 23679\n0LDQtA== 23680\nLkVu 23681\nIGRlZmVuY2U= 23682\nIFRlbA== 23683\naWxlbg== 23684\namFu 23685\nPWRhdGE= 23686\nIFVybA== 23687\nIFJldXRlcnM= 23688\nKHRvdGFs 23689\nIEZpZnRo 23690\nIGVzc2F5cw== 23691\nIGludGVycHJldGF0aW9u 23692\nIGNoYXJpdHk= 23693\nIFJ1bGVz 23694\nIHN1YnNlY3Rpb24= 23695\nc3R5bGVk 23696\nYXplcg== 23697\nbGFncw== 23698\nTElTVA== 23699\nIHVwbG9hZGVk 23700\nIHRyYXNo 23701\nIHJlZ2lzdHI= 23702\nIHNlbGxlcg== 23703\nPic7DQo= 23704\nIHN0YXJ0VGltZQ== 23705\n55k= 23706\nc3k= 23707\nKEh0dHBTZXJ2bGV0UmVxdWVzdA== 23708\nIHRyYXA= 23709\nR0M= 23710\nIGVtYmVkZGVk 23711\nIHN1cnJvdW5kZWQ= 23712\nODE2 23713\naW1pdHM= 23714\nVFg= 23715\neWxpbmRlcg== 23716\nNjg1 23717\nIEZhbA== 23718\nIHNlbnRlbmNlcw== 23719\nIEph 23720\nSUZJQ0FUSU9O 23721\nd2VhcG9u 23722\nb3ZhdGlvbg== 23723\nIGNvYXQ= 23724\nIGludGVycG9s 23725\nIGxpcHM= 23726\nIEt5 23727\nIHZlY3RvcnM= 23728\nX2Ft 23729\nIGludGFrZQ== 23730\nLndvcmxk 23731\nIGluYm94 23732\nIE1BQw== 23733\nX2Fi 23734\nKG5hbWVvZg== 23735\nNjMz 23736\nIGVudGVydA== 23737\nIGdhdGhlcmluZw== 23738\nIFNJTQ== 23739\nKysu 23740\nbnlh 23741\nJ319 23742\nIFVQREFURQ== 23743\nIHBhYw== 23744\nKGh0bWw= 23745\nIFNhbnQ= 23746\naWF0aW5n 23747\nIElkZWFz 23748\nIHNwcmF5 23749\nIEhhcnQ= 23750\nIHZlcmlmaWNhdGlvbg== 23751\nYWRlc2g= 23752\nL21vZHVsZXM= 23753\nIE1pbmQ= 23754\nIFNpemVkQm94 23755\nIHNoZWx0ZXI= 23756\nIGhlcm9lcw== 23757\nYXR0eQ== 23758\nIGNlcnRpZmllZA== 23759\nc2o= 23760\nIMOqdHJl 23761\nxYJv 23762\nIHB1Ymxpc2hpbmc= 23763\nIE1hbGF5cw== 23764\nLmdldFVzZXI= 23765\nIFByb3ZpZGVy 23766\nIExpbmtlZExpc3Q= 23767\nIEJvcg== 23768\nUk9VTkQ= 23769\nZGlk 23770\ndGFpbg== 23771\ncGlyZQ== 23772\nIEplbm4= 23773\ndGVs 23774\nYW5kZQ== 23775\nNzU3 23776\nX2Zyb250 23777\nIE1jRw== 23778\nVGVzdE1ldGhvZA== 23779\n4Lit 23780\nIG9jY2FzaW9uYWxseQ== 23781\nIFdhbGVz 23782\nIGV4ZXJjaXNlcw== 23783\nINCS 23784\nMDQ1 23785\nLXBsdXM= 23786\nIHZhbGlkYXRvcg== 23787\nIHByYXllcg== 23788\nTEFURUQ= 23789\nX2F1dGhvcg== 23790\nIGxhYm91cg== 23791\nKysK 23792\nLWVxdWl2 23793\nIEdQTA== 23794\nIGZhY2Vib29r 23795\nc2ltcGxl 23796\nZ2x5 23797\nUHJvY2Vzc29y 23798\naXB5 23799\nNzQ0 23800\nICo+ 23801\nNjQ4 23802\nIGNsZWFyZWQ= 23803\nIFB1c2g= 23804\nODU4 23805\nIHBlbmlz 23806\nU3RydWN0dXJl 23807\nbGlq 23808\nIE1vcmdhbg== 23809\nIGhhbmRmdWw= 23810\nIi4K 23811\nOTg0 23812\nfFw= 23813\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 23814\nIEFxdQ== 23815\nNTg0 23816\nX0lD 23817\nLmxvYWRz 23818\nIG1ldGVy 23819\nIE1hcmluZQ== 23820\nOjp7 23821\nIFRT 23822\nNzc2 23823\nIEFycmF5cw== 23824\nLlRpdGxl 23825\nR1JBTQ== 23826\ndGVybWlu 23827\nIGNvaW5j 23828\nRWxzZQ== 23829\nX3N0YXRlcw== 23830\nLXJ1bg== 23831\nbWVtYmVycw== 23832\nNzgy 23833\nYXN0cm8= 23834\nMDY2 23835\nIG9uUHJlc3M= 23836\nIGJlaW5ncw== 23837\nIGFiYW5kb25lZA== 23838\nIHRheHA= 23839\nb3duZXJz 23840\nLm1vZGU= 23841\nIGRpYWdub3Npcw== 23842\nIF8K 23843\nIEtuaWdodA== 23844\nCUE= 23845\nIG9ic2VydmU= 23846\nKSwn 23847\nODIz 23848\nISIpCg== 23849\nIFBhcmE= 23850\nIHZhcmlhdGlvbg== 23851\nKEZhbHNl 23852\nIEFudGk= 23853\nIGdyaQ== 23854\nIGhvbWVsZXNz 23855\nP3Y= 23856\nIGJleg== 23857\nLlNlcnZlcg== 23858\ncmVsZWFzZQ== 23859\nIFBhdHJp 23860\nIGNoYXJz 23861\nIHJhbmtpbmc= 23862\nYWN0aXZhdGlvbg== 23863\nNTgx 23864\nIHdpZGVz 23865\ncXI= 23866\nLlNxbA== 23867\nYWN1bGFy 23868\nIEJvdA== 23869\nX3N5bmM= 23870\nIGhhcHBpbmVzcw== 23871\nIHZvbHVudGVlcnM= 23872\nODc3 23873\nIHNpdHM= 23874\nLzw= 23875\nW2U= 23876\nKGZpbGVOYW1l 23877\nIGNhcGFj 23878\nODMy 23879\nIE1hcmlh 23880\nZmF0aGVy 23881\nIGdyYW0= 23882\nKmk= 23883\nIGNhc28= 23884\nX2RyYXc= 23885\nIFJhdw== 23886\nIEl0ZXJhdG9y 23887\nNjY0 23888\nIFBhZGRpbmc= 23889\nOTI0 23890\nUEQ= 23891\nQk9Y 23892\nIFNQRUNJQUw= 23893\nIGZlY2hh 23894\nIHZpZGU= 23895\nIExlYWRlcg== 23896\n5Lul 23897\nJCgiLg== 23898\nIGRpYW1ldGVy 23899\nIG1pbGQ= 23900\nNzQ1 23901\nIHJvY2tz 23902\nYXBwaW5ncw== 23903\nMDQ4 23904\nZGlyZWN0b3J5 23905\nNTU3 23906\nLmZsdXNo 23907\nIEplc3M= 23908\nVU5JVA== 23909\nIFBlYXI= 23910\nIG1hbmRhdG9yeQ== 23911\nU3Vy 23912\ncXQ= 23913\nIHN0cmVhbXM= 23914\nIGNvb3BlcmF0aW9u 23915\nIFNhYw== 23916\nIGNoZWFwZXI= 23917\nCWNo 23918\nYW5pbWF0aW9u 23919\nZmFyZQ== 23920\nKGhlaWdodA== 23921\nKFRydWU= 23922\nTlk= 23923\nIHdyZXN0 23924\nIHBvbGxz 23925\nIGVuY291bnRlcmVk 23926\nIE1hcmtldGFibGU= 23927\nX1BBU1NXT1JE 23928\nNzE2 23929\nX1NFTEVDVA== 23930\nIEFyYWJpYQ== 23931\nX2Nsb2Nr 23932\nIHZveQ== 23933\nINC40Lc= 23934\nIHN0aXI= 23935\naXNpYmxl 23936\nLWVmZmVjdA== 23937\nLmNyZWF0ZWQ= 23938\nIHRveXM= 23939\nIFRyYWRhYmxl 23940\nIHJ1c3Q= 23941\nIHN0cmNweQ== 23942\nX3RpbWVzdGFtcA== 23943\nIHRhbGVudGVk 23944\nLG51bGw= 23945\nIEpvYnM= 23946\nIFBvcnRsYW5k 23947\nIHdlYWtuZXNz 23948\nVGhyb3c= 23949\nIEFuZ2Vs 23950\n5L+u 23951\nNzU0 23952\nIHVuY2VydA== 23953\n77yJCg== 23954\nIOydtA== 23955\nV2hpY2g= 23956\nIFstXTo= 23957\nU29tZXRoaW5n 23958\nIGNvbnZpY3RlZA== 23959\na2xl 23960\nZWRpdW0= 23961\nIGJyYW5jaGVz 23962\nIGJhc2Vz 23963\n564= 23964\nIGNvbXBsZXhpdHk= 23965\nIEZpZw== 23966\nLnJlc2hhcGU= 23967\nJGRi 23968\nNzM2 23969\nX0NPTlNU 23970\nIFRlcw== 23971\nLnJ1bnRpbWU= 23972\nIGRlbnk= 23973\nIEJTRA== 23974\nIGty 23975\naGF0dA== 23976\nIFN0YXRpYw== 23977\nIHVuaXZlcnNpdGllcw== 23978\nUmVwbGFjZQ== 23979\nIGRyb3Zl 23980\nIGFkb2xlcw== 23981\nX3BsdWdpbg== 23982\nIExHQlQ= 23983\nIHRleA== 23984\nZHVjdGlvbg== 23985\nNzUx 23986\nNzk5 23987\nRURJ 23988\nIFRlZA== 23989\nX1VSSQ== 23990\nIHJlY2VwdGlvbg== 23991\nYXJ0ZW4= 23992\nLlNpbmdsZQ== 23993\ncmljZQ== 23994\nc2Npb3Vz 23995\nODQz 23996\nX2Jn 23997\nIHdhZ2Vz 23998\nIFNlcnZsZXQ= 23999\nVUlMYXlvdXQ= 24000\nIGZvcm1hdHRlZA== 24001\nLk1vZA== 24002\nPGNsYXNz 24003\naXNlbg== 24004\nIHJlcHJlc2VudGF0aXZlcw== 24005\nIl09 24006\nIHBvcnRhbA== 24007\nIEh1bnRlcg== 24008\nIGhpcmluZw== 24009\nX18pCg== 24010\ncmljdWx1bQ== 24011\ndW8= 24012\nbGllc3Q= 24013\nIHRlYXJz 24014\nTGF0 24015\nIGxpdGVyYWw= 24016\nLkluc2VydA== 24017\nIGN1cnM= 24018\nIENvbXB1dA== 24019\nIHRlcnJvcmlzbQ== 24020\nIHN3ZWVw 24021\nIFtdDQo= 24022\nIHBhc3Nlbmdlcg== 24023\nIGVhc3Rlcm4= 24024\nIHR3ZWV0cw== 24025\nIG9wZXJhdGVk 24026\nd25k 24027\nIFN5bg== 24028\nLnRvb2xz 24029\nIFdN 24030\ndWxhdGVz 24031\nIGJhY3Rlcmlh 24032\nKGJ5dGVz 24033\nLnNldERhdGE= 24034\nIHZpc2liaWxpdHk= 24035\nLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 24036\nZWxt 24037\nIGdlbmVyYXRpbmc= 24038\nIG12 24039\nIGto 24040\namVu 24041\nL3NlYXJjaA== 24042\nIGFjY291bnRpbmc= 24043\nc2VnbWVudA== 24044\nYWN0aWM= 24045\nLmlw 24046\nIGRlcGxveW1lbnQ= 24047\nIGZvb3Rlcg== 24048\nPicsCg== 24049\nIGV4cGFuZGluZw== 24050\nIEhhbWlsdG9u 24051\nIENvbnRyaWI= 24052\nLlRhYmxlcw== 24053\nNzI4 24054\nQWN0aXY= 24055\nSEg= 24056\nb2NvbW1lcmNl 24057\nXzs= 24058\nIGFtb25nc3Q= 24059\nb3dpbmc= 24060\nODU5 24061\nIENvbGQ= 24062\nQVBI 24063\nIHBzeWNob2xvZ2ljYWw= 24064\nX3RlbnNvcg== 24065\nIHBhY2thZ2luZw== 24066\nIFN3ZWRlbg== 24067\nIHBhcmU= 24068\nIGFnZ3JlZ2F0ZQ== 24069\nIG1vZGVyYXRl 24070\nODYy 24071\nX2hhbmQ= 24072\nIGRlc2lnbmF0ZWQ= 24073\nIGRydW0= 24074\nIGdldFVzZXI= 24075\nIENyZWVr 24076\nX3Njb3Bl 24077\nIFRyYW5zZmVy 24078\nIE1hcmc= 24079\nIGZpZ2h0ZXJz 24080\nV25k 24081\nIFNlbA== 24082\nIExhdW5jaA== 24083\nIGVtZXJnaW5n 24084\naWZyYW1l 24085\nIEFkZGl0aW9uYWw= 24086\nIGZlYXJz 24087\nIHNhdGVsbGl0ZQ== 24088\nXzo= 24089\nIGRpc3Bvc2luZw== 24090\nR2V0VmFsdWU= 24091\nSHR0cFBvc3Q= 24092\nQVRJVkU= 24093\ndWxhcnk= 24094\nVmlld3M= 24095\nIGF0dGVuZGluZw== 24096\nIFRlbm5lc3NlZQ== 24097\nIE1pc3Npb24= 24098\nIG1lZGljYXRpb24= 24099\nIFd5 24100\nIEFubmE= 24101\n2Lk= 24102\nIFZlcnRleA== 24103\nLnR5cGVz 24104\nT3JnYW4= 24105\nLkRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= 24106\nIFJT 24107\nIHRlbXBv 24108\nKEFwcA== 24109\nODky 24110\nVmVyc2lvblVJRA== 24111\nLnBvaW50 24112\nIER1dGNo 24113\nSG91cnM= 24114\nTFU= 24115\nIHF1b3RlZA== 24116\nLmJ1aWxkZXI= 24117\nIFBlcmZlY3Q= 24118\nIEFsd2F5cw== 24119\nX3R3bw== 24120\nIGV4Y2x1c2l2ZWx5 24121\nIENyYQ== 24122\naWZpY2Fy 24123\nIEFXUw== 24124\naW5naGFt 24125\nY29tcGxleA== 24126\na2VybmVs 24127\nIGdyYXZpdHk= 24128\nIHdp 24129\nMDUy 24130\nIG92ZXJ2aWV3 24131\nNjYx 24132\nIFdhbnQ= 24133\nIFdQ 24134\nKHNo 24135\nLnJvdGF0aW9u 24136\nU3RhdGVz 24137\nIFRlZW4= 24138\nX2NvbXBvbmVudHM= 24139\n7IiY 24140\nUmVjZWl2ZWQ= 24141\nIGx5cmljcw== 24142\ncml0ZXM= 24143\nCQkJCQkg 24144\nLUFtZXJpY2Fu 24145\nW251bQ== 24146\nL3B5dGhvbg== 24147\nIFVBUlQ= 24148\nIGFwcGxl 24149\nIEpvbmF0aGFu 24150\nIG1vbWVudHVt 24151\n4Lix 24152\ngrk= 24153\nIG1pY2g= 24154\nYW5kcmE= 24155\nIGJpb2xvZ2ljYWw= 24156\nIE1lbnM= 24157\nICUl 24158\nZWxzZWE= 24159\nIE1leGljYW4= 24160\nLnJhbmRpbnQ= 24161\nIHRhbGU= 24162\nIFZhbGlkYXRl 24163\nIGRlZmVhdGVk 24164\nLmh0bQ== 24165\nIGNvcHBlcg== 24166\nPS8= 24167\nY29zeXN0ZW0= 24168\nIHJpcA== 24169\nZGVjaW1hbA== 24170\nLlZJU0lCTEU= 24171\nIFRh 24172\nCQkJCQkJCQkJCQkJCQk= 24173\nIGRvd25sb2FkZWQ= 24174\nZW52aXJvbm1lbnQ= 24175\nIG5vbWluZQ== 24176\nYnVpbGRpbmc= 24177\nIFNwb3Q= 24178\naXBoZXJhbA== 24179\nIGFsdG8= 24180\ncXVldA== 24181\nIEZU 24182\nL2dldA== 24183\nL21hc3Rlcg== 24184\nV0lO 24185\n5YWD 24186\nNjc2 24187\nV2VzdA== 24188\nYXJnYw== 24189\nIHByb2R1Y2Vycw== 24190\nIE11Y2g= 24191\nX3N0b3JhZ2U= 24192\nY3JlZGl0 24193\nQ09OVA== 24194\nIHZldA== 24195\nIHZvaWNlcw== 24196\nKCcnLA== 24197\nIGluc3RydW1lbnRz 24198\nNjYy 24199\nIE1TRw== 24200\nZXNzZQ== 24201\ncmVwb3NpdG9yeQ== 24202\nb21pY3M= 24203\nIGRlYWxlcg== 24204\nU3RpbGw= 24205\nIGJhbm5lcg== 24206\nYXNjaWk= 24207\nIHJlbWFya3M= 24208\nW2pz 24209\nIHNob3J0ZXI= 24210\nZ3VscA== 24211\nIG15c3Rlcg== 24212\nIGt1bg== 24213\nIEJpcmQ= 24214\nIHRpZW5l 24215\nNzg4 24216\nbnV0 24217\nIFVt 24218\nIHdpc2U= 24219\nWWVhaA== 24220\nSU5FU1M= 24221\nMDQ2 24222\nX2JlZ2lu 24223\nLWhlYWRpbmc= 24224\nQ291cnNl 24225\nIA0KDQo= 24226\nb21iaWU= 24227\nZ3JhZGVk 24228\nIEdQUw== 24229\nIMW8ZQ== 24230\nRml0 24231\nY2FwdGlvbg== 24232\nw7Zu 24233\nL2ltYWdl 24234\nbGlh 24235\nKG1vZA== 24236\nIGxlYWs= 24237\nZW56YQ== 24238\nNjI5 24239\nL0g= 24240\nIEhhcHB5 24241\nOTkz 24242\nRGlzdA== 24243\nbng= 24244\nIEdvdmVybm9y 24245\nKGxhc3Q= 24246\ndGVhY2hlcg== 24247\nIFNlbnQ= 24248\nc3VwcG9ydA== 24249\nODM4 24250\namVjdG9yeQ== 24251\nINmF 24252\nUmVnaXN0cmF0aW9u 24253\nMDYz 24254\nIEdyYXk= 24255\nLGZhbHNl 24256\nIGFkanVzdGVk 24257\nKHNldHRpbmdz 24258\nPFI= 24259\nIE1hZ2U= 24260\nIHBsYWludA== 24261\nXykK 24262\nCWl0 24263\nb21ldHJpYw== 24264\nLmJvb3RzdHJhcA== 24265\nIGNhcnJpZXM= 24266\nSXA= 24267\nICEk 24268\nIHN3aW1taW5n 24269\nIE1hcmlv 24270\nIFF1ZXN0aW9ucw== 24271\nUEFDRQ== 24272\n5pa5 24273\nZW9y 24274\nfX0i 24275\nIG92ZW4= 24276\nIEtvbg== 24277\nIHdpc2RvbQ== 24278\nIGFjcXVpc2l0aW9u 24279\nZXNzbWVudA== 24280\nYWdpbmU= 24281\nIGV4cHJlc3Npb25z 24282\nU2VxdWVudGlhbEdyb3Vw 24283\nRnJvbnQ= 24284\ndWxwdA== 24285\nYXdr 24286\nJ10pCgo= 24287\nODEz 24288\nNzMy 24289\nX0FS 24290\nIGFuYWxvZw== 24291\ndWxpbg== 24292\nX1BSSU5U 24293\nIExH 24294\nIGJsb2I= 24295\nIEZ1cnRoZXJtb3Jl 24296\nX2NvbXBvbmVudA== 24297\nIENvbGU= 24298\nTEFO 24299\nU0NSSVBUSU9O 24300\nIGxhcA== 24301\naWNlbnNpbmc= 24302\nX1RJTUVPVVQ= 24303\nIEZybw== 24304\nIGxpYWJpbGl0eQ== 24305\nIGNvbXBvc2Vk 24306\nNjM0 24307\nLmNyZWF0ZVNlcXVlbnRpYWxHcm91cA== 24308\nX3BlcnNvbg== 24309\nIGJlYW0= 24310\nCSAgICAgICAg 24311\nIE5vdEZvdW5k 24312\nNjg0 24313\nLicK 24314\nw61z 24315\nLlRleHRWaWV3 24316\nUERG 24317\nIGthcg== 24318\nX18oJw== 24319\nICI6Ig== 24320\nX21lc3NhZ2Vz 24321\nIGhhcnZlc3Q= 24322\nLmhpc3Rvcnk= 24323\nPicK 24324\nLWZvbGQ= 24325\n5oo= 24326\nIEJldHRlcg== 24327\nICJcPA== 24328\nc3BhY2luZw== 24329\nIGZ1cm5pc2hlZA== 24330\nOTEz 24331\nb3Nlcg== 24332\nXX0K 24333\nICQi 24334\ncHVsbA== 24335\nLlBvc3Q= 24336\nOTE5 24337\nKGlw 24338\nl48= 24339\nLmZyb250 24340\nbnRl 24341\nIEZN 24342\nZ3VpZA== 24343\nODQ0 24344\nIG5lZ290aWF0aW9ucw== 24345\nYWdvbmFs 24346\nOTM0 24347\nIHRyZW1lbmQ= 24348\ndW5nZW9u 24349\nQWR2 24350\nY2Fyb3VzZWw= 24351\nw59l 24352\nX0RFU0M= 24353\nIGhhbW1lcg== 24354\n4bqt 24355\nICAgICAgICAKCg== 24356\nLWNvcmU= 24357\nLXNlcnZpY2U= 24358\nIGNvcm5lcnM= 24359\nIFNG 24360\ncHJlZA== 24361\nPkE= 24362\nIEpMYWJlbA== 24363\nIHJvbWFudGlj 24364\nIHRlc3RpbW9ueQ== 24365\nb3Nj 24366\nIEdlbmVyYXRpb24= 24367\nYXN1cmVz 24368\nX2ludGVybmFs 24369\nIHByaW50cw== 24370\nIF0pCg== 24371\nIENsZXZlbGFuZA== 24372\ncmVwbw== 24373\nRGlzYw== 24374\nNjc3 24375\nNzYy 24376\nICI+Cg== 24377\n77+977+977+977+9 24378\nIG5lYXJlc3Q= 24379\nNTkx 24380\nX3Ri 24381\nKHJlcXVpcmU= 24382\nRU9G 24383\nLWNoaWxk 24384\nIGJ1ZGQ= 24385\nLlh0cmFFZGl0b3Jz 24386\nYWx0aWVz 24387\nNzIz 24388\nXCI6XCI= 24389\nV29yZHM= 24390\nOTE3 24391\nIGxvY2FsbHk= 24392\nIHB1cmNoYXNlcw== 24393\nNjk1 24394\nRHJhd2Vy 24395\nZXh0cmFjdA== 24396\nIGV4ZWN1dA== 24397\nfScu 24398\ndXNlcmRhdGE= 24399\nIGZvY3VzZXM= 24400\nLW1pbnV0ZQ== 24401\nNzY0 24402\nIFB1Ymxpc2g= 24403\nb2dv 24404\nIG1vdW50YWlucw== 24405\nQm90 24406\nfT57 24407\nIHRlbnNpb24= 24408\ncm9k 24409\nbWVzaA== 24410\nIHRyYW5zZm9ybWVk 24411\nLFI= 24412\nKCl9Cg== 24413\nLmxvbmc= 24414\nIGdvcmdlb3Vz 24415\nIFNjaGVkdWxl 24416\nIG9sZGVzdA== 24417\nIHN1YnByb2Nlc3M= 24418\nKElO 24419\neWVjdA== 24420\nIENvb3Blcg== 24421\nYXJuZXNz 24422\nIE1vbml0b3I= 24423\nLnBhcnQ= 24424\nOTcy 24425\nIE5CQw== 24426\nNjY4 24427\nIGNvdHRvbg== 24428\nIGhvbA== 24429\nNzI2 24430\nIHJnYmE= 24431\nIEJpbw== 24432\nQ29udGludWU= 24433\nUG9k 24434\nIHBhcnRpY2lwYXRpbmc= 24435\nY2x1c2lvbnM= 24436\nKEJ5VmFs 24437\nNzM0 24438\nw6w= 24439\nIEhPVw== 24440\nX3NldG9wdA== 24441\nIGFjY29tcGFueWluZw== 24442\nMDkx 24443\nYXRvbg== 24444\nIC9c 24445\nIEF1dGhlbnRpY2F0aW9u 24446\nacOpbg== 24447\nIEJhcmFjaw== 24448\nLyou 24449\nIGVhZ2Vy 24450\nIENhbmNlbA== 24451\nPGxlbW1h 24452\nZXBo 24453\nCXdpbmRvdw== 24454\nIGluY2lkZW50cw== 24455\nNzU2 24456\nKSwo 24457\nLkRlcw== 24458\naWJl 24459\nIEZ1bmN0aW9ucw== 24460\nIGhvc3BpdGFscw== 24461\nMDM4 24462\nIG94eWdlbg== 24463\ncm9vdFNjb3Bl 24464\nIGRyZXc= 24465\nCXJlcXVlc3Q= 24466\nbm90aWNl 24467\nYWt1 24468\nYW1lbnRz 24469\nZmFy 24470\nOTcz 24471\nNzc0 24472\nIHByZWNpc2U= 24473\nX3dyYXBwZXI= 24474\nIGxpc3RlbmVycw== 24475\nQVo= 24476\nLmJvdW5kcw== 24477\nIEF2ZXJhZ2U= 24478\nZmllbGRzZXQ= 24479\nX2F4aXM= 24480\nIGV4YW1pbmF0aW9u 24481\nJy4K 24482\nbW9ucw== 24483\nKyspew0K 24484\nIEZvcm1z 24485\n7ZWc 24486\nOTE2 24487\nQ3BwTWV0aG9k 24488\nX3RyYWNl 24489\nIGVuZ2luZWVy 24490\nNjYz 24491\nIEZsYXQ= 24492\nIHJldmlzaW9u 24493\nIGhlYXRpbmc= 24494\nNjM4 24495\nL3Byb2ZpbGU= 24496\nLnJ1 24497\ncHJpb3JpdHk= 24498\nIGluZmVy 24499\nX1NUUkVBTQ== 24500\nICopKA== 24501\nPiQ= 24502\nT0xFQU4= 24503\nT0tJRQ== 24504\nSUJJTElUWQ== 24505\nVUFHRQ== 24506\nIFN1cnZleQ== 24507\nMDcx 24508\nIHJlc2lnbg== 24509\nd2luZw== 24510\nIHNlY3JldHM= 24511\nIGNoaXBz 24512\nSlNPTk9iamVjdA== 24513\nRGVza3RvcA== 24514\nNTk2 24515\nX1NZTUJPTA== 24516\nKHJlc291cmNl 24517\nIDwvPgo= 24518\nIG5ld2VzdA== 24519\ndWxp 24520\nIGRlc2VydA== 24521\nIGRpcA== 24522\nIFBvdw== 24523\nIGVxdWF0aW9u 24524\nIHBvc3NpYmlsaXRpZXM= 24525\nIEZlZA== 24526\nb3NwaA== 24527\nIFsl 24528\nIGJ1YmJsZQ== 24529\nZXRoZXJsYW5kcw== 24530\nNzkz 24531\nIGNlbWVudA== 24532\nLmF1dG8= 24533\nX0FO 24534\n4oCZLg== 24535\nc2VsZWN0aW9u 24536\nIEJvbmQ= 24537\nOTg4 24538\nRGVu 24539\nLU8= 24540\nLmdldFR5cGU= 24541\nODk2 24542\nLldpbmRvdw== 24543\ncHJlcw== 24544\nIHN3aW5nZXI= 24545\nIn0pCg== 24546\nIHBpcA== 24547\nIG1pY2U= 24548\nIGNvbXBvdW5k 24549\nLXBsdWdpbg== 24550\naWtv 24551\nIGNlbnR1cmllcw== 24552\naWN1bGFy 24553\nLWlubGluZQ== 24554\nCWtleQ== 24555\nPlw8 24556\nRU5TSU9O 24557\nIFsNCg== 24558\nIHByZWNpc2VseQ== 24559\nIMOpdMOp 24560\nIFBhc3Q= 24561\nIENhbWJyaWRnZQ== 24562\nLWZ1bGw= 24563\nIGFuYWx5emU= 24564\nIFN0ZXZlbg== 24565\nIG5lbQ== 24566\nZHVl 24567\nb3Jlbg== 24568\nIG11c2NsZXM= 24569\naWppbmc= 24570\nODUy 24571\nLy0= 24572\nIEtlbm5lZHk= 24573\nNTk3 24574\nUk0= 24575\nb3NzaWJsZQ== 24576\nIGFjdHJlc3M= 24577\nIGRvbG9y 24578\nOTE0 24579\n5b2V 24580\nTmVlZA== 24581\nLnRvZ2dsZQ== 24582\nIFJhY2U= 24583\nd2Vycw== 24584\nLm1hdGVyaWFs 24585\nIER1ZQ== 24586\nIFBlbA== 24587\nI3ByaW50 24588\nIGluZGVwZW5kZW5jZQ== 24589\nZXh1cw== 24590\nU2hhZG93 24591\nIGVuY29kZXI= 24592\nKGxldmVs 24593\nIFN3aWZ0 24594\nLmRvYw== 24595\nX3NlbGVjdGlvbg== 24596\nOTUy 24597\nIHNlcmlhbFZlcnNpb25VSUQ= 24598\nOTQ1 24599\nTGFiZWxz 24600\nIHBlcmZvcm1hbmNlcw== 24601\nLlRhZw== 24602\nIE5ITA== 24603\naXplbg== 24604\nL1VJS2l0 24605\nOTkx 24606\nX0NPTlRST0w= 24607\nIGVhcm5pbmdz 24608\nOTc1 24609\nIEFsdA== 24610\nX0hBTkRMRQ== 24611\nQ3R4 24612\nIHBlcnN1 24613\nIHRyYW4= 24614\n56g= 24615\nX0NIQU5ORUw= 24616\nIHNhdGlzZmFjdGlvbg== 24617\nIEdQ 24618\nNzY5 24619\naW94 24620\nbWl0dA== 24621\nbGFuZG8= 24622\nIHBpZw== 24623\naW5hbHM= 24624\nw6puY2lh 24625\nNzMx 24626\nU3VyZmFjZQ== 24627\nIFVVSUQ= 24628\nIGJlbmVmaWNpYWw= 24629\nIHNlcXVlbmNlcw== 24630\nCW1lbXNldA== 24631\nIG1hZ2ljYWw= 24632\nwqs= 24633\nIHdvcm4= 24634\nQVND 24635\ncG9wdXA= 24636\nQ09NUA== 24637\nX2JlZm9yZQ== 24638\nZW5lc3M= 24639\nVWk= 24640\nTGVz 24641\nLnJlcXVpcmU= 24642\nLlNlcmlhbGl6YWJsZQ== 24643\nYWRkR2Fw 24644\nIGF1dGhvcml6YXRpb24= 24645\nMDg1 24646\nLnB5cGxvdA== 24647\ndXJyYXk= 24648\nbGF0aXR1ZGU= 24649\nODQ1 24650\nZnJhbWVz 24651\nYWpz 24652\nIGNvbXBhc3M= 24653\nIG9ic2VydmF0aW9ucw== 24654\nX3N1cA== 24655\nLmVudmlyb24= 24656\nIHRyaXBsZQ== 24657\nIFJ1Ynk= 24658\nIGRyYWlu 24659\nX0ZJTFRFUg== 24660\nU2Fu 24661\nVU1Q 24662\nTnVsbEV4Y2VwdGlvbg== 24663\nIEdhYg== 24664\nb3dl 24665\nIFR1cmtpc2g= 24666\nX3NlcXVlbmNl 24667\nIEdyYW50 24668\ndWVsYQ== 24669\nIHdv 24670\nIGN1YmU= 24671\naXE= 24672\nIGRpc29yZGVycw== 24673\nIGV4dHJhb3JkaW5hcnk= 24674\nIGN0cmw= 24675\nIFNlcQ== 24676\nZW50cg== 24677\nODY1 24678\nIHNhbmN0aW9ucw== 24679\nOTQ5 24680\ndXRzY2g= 24681\nUmVwb3J0cw== 24682\nIGluaGVyaXQ= 24683\nUGVyaW9k 24684\nIHBob3RvZ3JhcGh5 24685\nIEZyYW1ld29yaw== 24686\nIHNwZWNpYWxpc3Q= 24687\nID8KCg== 24688\nX3NlbGVjdGVk 24689\nLlBsYXllcg== 24690\nIGFsbG9jYXRpb24= 24691\nKGFjY291bnQ= 24692\nIHN0cnVjdHVyYWw= 24693\ndmFibGU= 24694\nLW9mZnNldA== 24695\nLkFwcENvbXBhdEFjdGl2aXR5 24696\n0LDQvA== 24697\nLkFkZFdpdGhWYWx1ZQ== 24698\nIGljb25z 24699\nIHNodXRkb3du 24700\nX2xvdw== 24701\nIENvbXBhcmU= 24702\nIENl 24703\nPWhlYWQ= 24704\nbGFt 24705\nLnByZWRpY3Q= 24706\nX0RFQw== 24707\nIFNsZWVw 24708\nIEdyYXRpcw== 24709\nIHN1Z2dlc3Rpb24= 24710\nIERFTA== 24711\nY2FmZg== 24712\nYXZpcnVz 24713\nTm90aGluZw== 24714\nnos= 24715\nIHdpZGVzcHJlYWQ= 24716\nIG1lY2hhbmlzbXM= 24717\nIHRleHRBbGlnbg== 24718\nb2NjdXA= 24719\nIFJhaWw= 24720\nOk5T 24721\nIGZpYmVy 24722\nIG1r 24723\nIHZpbnRhZ2U= 24724\nLWxvbmc= 24725\nLnJlZHVjZQ== 24726\nLkVudGl0aWVz 24727\nKHJlY29yZA== 24728\nIHBsZWFzYW50 24729\nRlJJTkc= 24730\nLkNlbGxz 24731\nT1RU 24732\nCWVsc2VpZg== 24733\nNjQ5 24734\nNzI0 24735\nX2NvbmZpcm0= 24736\nIFZpZXdHcm91cA== 24737\nc3lt 24738\nIHByYXk= 24739\nIHN1c3BlY3RlZA== 24740\nQ29udGFpbnM= 24741\nOTgz 24742\nIGJvcmRlcnM= 24743\nIGNvbXBvbmVudERpZA== 24744\nQVNTRVJU 24745\nIGluZmluaXRl 24746\nLW9yZGVy 24747\nIGhlbGxv 24748\nIEdyYWRl 24749\nLmN1cnJlbnRUaW1lTWlsbGlz 24750\nYXBvbGlz 24751\nemg= 24752\nCU9iamVjdA== 24753\nOlxc 24754\nSE8= 24755\ndmFsdWF0aW9u 24756\nIHZvY2Fi 24757\nNzE5 24758\nIGNvdXBvbg== 24759\nYXRhYmFzZXM= 24760\nLkdldFR5cGU= 24761\nTGVhcm4= 24762\nNzky 24763\nXT0i 24764\nIEdhcnk= 24765\nb3RpdmU= 24766\nIGFzaA== 24767\nIGJpYg== 24768\nWFhYWA== 24769\nIGJhbGFuY2Vk 24770\nVkFMVUU= 24771\nIE5hdA== 24772\nX0Fk 24773\nPEU= 24774\n5Yy6 24775\nIE1ldGhvZEluZm8= 24776\nODk3 24777\nTElC 24778\nIGNvbnNpZGVyYWJsZQ== 24779\nIEluZHVzdHJ5 24780\ndGVzdHM= 24781\nLnNldFRpdGxl 24782\nIEJsdWV0b290aA== 24783\nIG1hcHBlZA== 24784\nIEJydWNl 24785\nIE1haW5XaW5kb3c= 24786\nCXN0YXR1cw== 24787\nIHJheg== 24788\nIE1hbmQ= 24789\nIGNsYXNzaWZpY2F0aW9u 24790\nUGVybWlzc2lvbnM= 24791\nOTY5 24792\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 24793\nIGNvbnRhaW5lcnM= 24794\nOnNldA== 24795\nX3htbA== 24796\nIHdoaWxzdA== 24797\nVGhyb3VnaA== 24798\nIHZhbGlnbg== 24799\nIHdvcmxkcw== 24800\nQ09SRA== 24801\nRURJQQ== 24802\n0YDQvtCy 24803\nIHNwYXJl 24804\nIEhhZA== 24805\nIERFRg== 24806\nKHB0cg== 24807\nIHdhcm1pbmc= 24808\nODk4 24809\n4KS+ 24810\nIGNvbnNlbnN1cw== 24811\nYWduZQ== 24812\nQ1RM 24813\nIOyV 24814\nLk1haW4= 24815\nd2ViRWxlbWVudA== 24816\nIHBpc3Q= 24817\nRmxhc2g= 24818\nQXBwZW5k 24819\nLnR3aW1n 24820\nVGFw 24821\nIHZlZ2V0YWJsZXM= 24822\nYWxn 24823\nMDU4 24824\nLnNhbXBsZQ== 24825\nIGNvYWNoaW5n 24826\nKGluZA== 24827\nQ2VsbFZhbHVl 24828\nQ2hlY2tCb3g= 24829\nIEhlbGw= 24830\nUk9PVA== 24831\nNzk2 24832\nIHN0YWRpdW0= 24833\nIGludmVzdGlnYXRpbmc= 24834\nKSU= 24835\nc3RlZA== 24836\nOTY1 24837\nIFdyaXRpbmc= 24838\nIOqy 24839\nIHVubw== 24840\nIHt7LS0= 24841\nIGNvb3Jkcw== 24842\nIHVuc2Vy 24843\nb3JnYW5pemF0aW9u 24844\nIENyaW1l 24845\nIERlbW9jcmF0 24846\nNTc5 24847\nIHZpbg== 24848\nL2ZpbGU= 24849\nMDc4 24850\nLWFwaQ== 24851\nIEF5 24852\nIGZ1bmRlZA== 24853\nIEJyZXhpdA== 24854\nIEdo 24855\nZW50aW5h 24856\nY2FzZXM= 24857\nIGRhc2g= 24858\nICEhfQo= 24859\nSEk= 24860\nT2ZmaWNl 24861\nIGNhcHRhaW4= 24862\nIHdvcnNoaXA= 24863\nXEM= 24864\nNzMz 24865\nODUx 24866\nIGdsb2Jl 24867\nX2JvYXJk 24868\nIGJhYmllcw== 24869\nODc2 24870\nIGNvbnNlY3V0aXZl 24871\nIGVuaGFuY2Vk 24872\nZXJldW0= 24873\nIEFkdmlz 24874\nIGdyYWlu 24875\nNzcx 24876\nIGNyYXc= 24877\nYW5jZWxsYXRpb25Ub2tlbg== 24878\nLmFscGhh 24879\nX1dJVEg= 24880\nIE90dA== 24881\nIENvb2w= 24882\nLmJhdGNo 24883\nIHZlcmlmaWVk 24884\nKGNhbGxiYWNr 24885\nIHJlZ2FyZHM= 24886\nNjgz 24887\nIEludFB0cg== 24888\nb3VjaGVy 24889\nIGtpbg== 24890\nIHRvdWNoZWQ= 24891\naXTDoA== 24892\nYXRob24= 24893\nIGFkamFjZW50 24894\nIGFjY29tcGFuaWVk 24895\nTEVBUg== 24896\nIGltcGxpZXM= 24897\nIGhpbGw= 24898\nIEJhbHRpbW9yZQ== 24899\nPSIt 24900\nRmluYWxseQ== 24901\nODgz 24902\nU2Ft 24903\naWNvcHQ= 24904\nIHNvZA== 24905\nIG1hag== 24906\nIFNoaXBwaW5n 24907\nIGdldEFsbA== 24908\nIGNvYWNoZXM= 24909\nIGRvbmF0aW9ucw== 24910\naWxvdA== 24911\nIFRhcg== 24912\nY2Vycg== 24913\nIGJhZGdl 24914\nIG1hcmtlcnM= 24915\nIFJhbmQ= 24916\nYWlzZWQ= 24917\naXNzYW5jZQ== 24918\nIGV4cGxvcmluZw== 24919\nODI3 24920\ndWNlZA== 24921\nIEluZG9uZXNpYQ== 24922\nIGJlbmVhdGg= 24923\nIG1hZ25ldGlj 24924\nIG11c2V1bQ== 24925\nbWF0Y2hDb25kaXRpb24= 24926\nIGRpc3J1cHQ= 24927\nIHJlbWluZA== 24928\nIFRN 24929\nIC8+PA== 24930\nIGZvb2w= 24931\nIGVzaw== 24932\nLk51bGw= 24933\nIERpZXM= 24934\nX09VVFBVVA== 24935\nX1RZUEVE 24936\nIHBhaW50ZWQ= 24937\nNjcz 24938\nNzM1 24939\nIHNvcGhpc3RpYw== 24940\nIEJlYXI= 24941\nKm4= 24942\nX1BBQ0s= 24943\nIGRlbGl2ZXJpbmc= 24944\nIENPVU5U 24945\n5Y2V 24946\nIGplZw== 24947\nLWNhcg== 24948\nZm5hbWU= 24949\nIHJhbmdpbmc= 24950\nODQ4 24951\nIE5lZw== 24952\nLyoqKioqKi8= 24953\nIENIQVI= 24954\nIHVsdHJh 24955\nR3JhZA== 24956\nPXQ= 24957\nIGp1ZGdlcw== 24958\nIERpc2U= 24959\nYW5uZXJz 24960\nOTg1 24961\nODkx 24962\nODYx 24963\nIHNjYWw= 24964\nX2NhbA== 24965\nIENPTk5FQ1RJT04= 24966\nX2VtYmVk 24967\nKGZu 24968\nIENyYWZ0 24969\nMDQ3 24970\nIFBhcw== 24971\nIiktPg== 24972\nLmNvbnZlcnQ= 24973\nLnJlc291cmNl 24974\nIFNUQVRVUw== 24975\nw7RuZw== 24976\nIFRpdA== 24977\nIGNsYXNzcm9vbQ== 24978\nIEFyY2hpdGVjdA== 24979\nIEtpbmdz 24980\nIHN0ZWFkeQ== 24981\nLyohCg== 24982\nIEdlbmU= 24983\nKSI7Cg== 24984\naWNpYQ== 24985\nc3Rhbg== 24986\nIENvbnN0cnVjdGlvbg== 24987\ndW1wZXI= 24988\nOTUx 24989\nd2M= 24990\nIENCUw== 24991\naW5naW5n 24992\nLXBhcnR5 24993\nKGRyaXZlcg== 24994\nTUFSSw== 24995\nMDgy 24996\nIG5lc3RlZA== 24997\nZXdhcmQ= 24998\nIGRlcGVuZGVuY3k= 24999\nIG1hbGVz 25000\nOTI4 25001\nIE9ORQ== 25002\nIFByb2R1Y3Rpb24= 25003\nXVsk 25004\n44O844M= 25005\nX0xPQUQ= 25006\nIEJvbA== 25007\nZWxyeQ== 25008\nODMx 25009\noOmZpA== 25010\nIFJlcXVpcmU= 25011\nIHBsYWNpbmc= 25012\neHh4 25013\nQ0FMRQ== 25014\nIHRodW1i 25015\nODI0 25016\nQ2hvb3Nl 25017\nIHByb3RvdHlwZQ== 25018\nVk9JRA== 25019\nIGxlc2JpYW4= 25020\nNzQx 25021\nIHRyYWl0cw== 25022\nU2hhcnA= 25023\nIGNvbnN1bWU= 25024\nVHJ1dGg= 25025\nIGFjdGlvblBlcmZvcm1lZA== 25026\nIEVudmlyb25tZW50YWw= 25027\nIERlYW4= 25028\nIGVzdGFkbw== 25029\nc2FtZQ== 25030\nIG51bWVyaWM= 25031\nIHRyYW5zaXQ= 25032\nLkVtYWls 25033\nLXNpZGU= 25034\nX1JVTg== 25035\nIFZpbGxhZ2U= 25036\nX09QRU4= 25037\n6KY= 25038\nLnJlbQ== 25039\nLXdhcm5pbmc= 25040\nYW55YQ== 25041\nUHJvcGVydHlDaGFuZ2Vk 25042\nICghXw== 25043\nKGNoZWNr 25044\naWxpYQ== 25045\nIFNvZnQ= 25046\nc3RlcHM= 25047\nIE1hZHJpZA== 25048\nTWVtb3J5V2FybmluZw== 25049\nIGhhbmRsZXJz 25050\nIGV4cGVyaWVuY2luZw== 25051\nIGluc3BlY3Q= 25052\nYnV0dG9ucw== 25053\nUmVjZWl2ZU1lbW9yeVdhcm5pbmc= 25054\nY2hlbXk= 25055\nTGlua3M= 25056\nIHVybGxpYg== 25057\nLlN5c3RlbUNvbG9ycw== 25058\nIEVpZ2Vu 25059\nIHB1bmlzaG1lbnQ= 25060\nOlVJQ29udHJvbA== 25061\nYmFyYQ== 25062\nLXNldA== 25063\nIH0NCg0KDQo= 25064\nIHRvbGVyYW5jZQ== 25065\nIGludGVyZmFjZXM= 25066\nLnJlZGlyZWN0 25067\naWdoYm9ycw== 25068\nY3NyZg== 25069\nX2JhY2tncm91bmQ= 25070\nLlV0aWxz 25071\nX0hU 25072\nNjky 25073\nIEludGVyZXN0 25074\naW1vcw== 25075\nIGdyYW50cw== 25076\nMDgz 25077\nIGV4YW1pbmVk 25078\n0JQ= 25079\nIGNm 25080\nZm9yZ2U= 25081\nYmFja3M= 25082\nIE9iamVjdHM= 25083\nX3NlbnQ= 25084\nLmVudHJ5 25085\nIFRIRU4= 25086\nZWxsaWRv 25087\nY2lh 25088\nLHJlcw== 25089\nNjU5 25090\nNjgx 25091\nL3N0ZGM= 25092\nLm5k 25093\nKEludA== 25094\nIEF1dGhvcnM= 25095\nIEFwcENvbXBhdEFjdGl2aXR5 25096\nJ3s= 25097\nIG1lZGk= 25098\nTXVzaWM= 25099\naWdt 25100\nY2VpcHQ= 25101\nIGF1c3M= 25102\nIHRhcmdldGluZw== 25103\nIEtleXM= 25104\naG4= 25105\nOl0K 25106\nIG1pbmVyYWw= 25107\nw64= 25108\nLmNh 25109\nNzYx 25110\nb21lZA== 25111\nIHNoZWV0cw== 25112\nIGNhbWI= 25113\nIGRlYWRseQ== 25114\nLmluamVjdA== 25115\nKHVuaXQ= 25116\nIFNlbGVjdGlvbg== 25117\nLmdtcw== 25118\nKGNvbm5lY3Rpb24= 25119\nICQoIg== 25120\nw6ltb24= 25121\nIEN1cnJlbnRseQ== 25122\ncHRl 25123\nX3BhdGhz 25124\nODQ3 25125\nbGVhZg== 25126\nIGltcGxpY2F0aW9ucw== 25127\ncG9zYWw= 25128\n5L2N 25129\nWy8= 25130\nYW5jaWE= 25131\n6Zs= 25132\nbXVs 25133\nY2ll 25134\nIGdlaWxl 25135\nNjc5 25136\naW1hbHM= 25137\nVUlWaWV3 25138\nIHN1cnJl 25139\nc2VyaWFsaXpl 25140\nSVNP 25141\nIGFyYml0cmFyeQ== 25142\nIHNvY2thZGRy 25143\nLmZu 25144\nIE1lcmM= 25145\nIGNhc3Rpbmc= 25146\nS2V5RG93bg== 25147\nIG5ld1ZhbHVl 25148\nb3BlbnM= 25149\nNzE3 25150\nVG9kbw== 25151\nIGZsZXhpYmlsaXR5 25152\nCQkJCSAg 25153\nVmVsb2NpdHk= 25154\nw7pu 25155\ncm93aW5n 25156\nIGNvbXB1dGVk 25157\nYCkK 25158\nc3RhdGVtZW50 25159\nIHJp 25160\nX2NhcnQ= 25161\nTG93 25162\ndHJhbnNmZXI= 25163\nLm5hdg== 25164\nIGdyYXZl 25165\nIERvb3I= 25166\nCWFsZXJ0 25167\nNjkx 25168\nNjk4 25169\nLnN1YnNjcmliZQ== 25170\nLXByb2ZpbGU= 25171\nCWJhc2U= 25172\nIOKIkg== 25173\nX18KCg== 25174\nIGVuZ2luZWVycw== 25175\nIGV4cGxvc2lvbg== 25176\nIGRhcmk= 25177\nNjgy 25178\nCUxvZw== 25179\nb25hbA== 25180\nIGlzb2xhdGVk 25181\ne2k= 25182\nIE1zZw== 25183\nRnV0dXJl 25184\nIHJhY2lzdA== 25185\nLXdyYXA= 25186\nIFZlcnM= 25187\nYm9yZw== 25188\nSVNJT04= 25189\nINGA0LDQ 25190\nIFlhbg== 25191\nODM2 25192\naW5pdFdpdGg= 25193\nIG5vbWlu 25194\nKGVtcHR5 25195\nw61u 25196\n44Kk 25197\nCXdpZHRo 25198\nIGNoYW1iZXI= 25199\nL2FqYXg= 25200\nRU1Q 25201\nMDkz 25202\nIG5lY2Vz 25203\naXZvcw== 25204\nbG9naWM= 25205\nKikm 25206\nY3JpcHRz 25207\nOTc2 25208\nUm93QXQ= 25209\nMDUz 25210\naWJsaW5ncw== 25211\nIGVhcnM= 25212\nIGNvbXB1dGluZw== 25213\nIG1ha2Vy 25214\nIE5laXRoZXI= 25215\nYnJlYWRjcnVtYg== 25216\nIHNlcmlhbGl6ZQ== 25217\nIFdpdGhpbg== 25218\nIGRlbGw= 25219\nX1RSQUNF 25220\nMDky 25221\nPWE= 25222\nIHdpc2hlcw== 25223\nLWluY2g= 25224\nIERvcg== 25225\nIGlubm9jZW50 25226\nIERvbA== 25227\nIGludGVucw== 25228\nZm9yY2Vk 25229\nMDU0 25230\nIEJJVA== 25231\nIHBob3RvZ3JhcGhz 25232\nIGNhc2E= 25233\nIExlbg== 25234\nXEZyYW1ld29yaw== 25235\nLlNpbXBsZQ== 25236\nIGRlYXI= 25237\nODk1 25238\nKS8o 25239\naXBwaQ== 25240\nIG93bnM= 25241\nUGxheWVycw== 25242\nIHByb3Bvc2Fscw== 25243\nLnBp 25244\ndXNhbGVt 25245\nRGFtYWdl 25246\nIGNhbG9yaWVz 25247\nIENyZWF0aXZl 25248\nIFsk 25249\nIC8vDQo= 25250\nNzg2 25251\nQW5kVmlldw== 25252\nw6htZQ== 25253\nLmN1c3RvbQ== 25254\nX2ZhY3Rvcnk= 25255\nY29tbWFuZHM= 25256\nX2xvb2s= 25257\nIHN0cmNtcA== 25258\nWU4= 25259\nYWlyZWQ= 25260\nIGF1ZGl0 25261\n0L7RgdGC 25262\nIFJldmVyc2U= 25263\ncm9wcmlhdGU= 25264\nZXRpY3M= 25265\nPHZlY3Rvcg== 25266\nLnNlbGVuaXVt 25267\nLm9y 25268\nIHByZWRpY2F0ZQ== 25269\nIGZpbmlzaGluZw== 25270\nIGtsZQ== 25271\nIFJlcG9z 25272\nIEtoYW4= 25273\nIE1ha2luZw== 25274\nIEZT 25275\nIHB1dGU= 25276\nCXN0YXRl 25277\nX1NVUFBPUlQ= 25278\nJy0= 25279\nb3JpZW50YXRpb24= 25280\nIGV4aXN0ZWQ= 25281\nYXR1cmE= 25282\nIGV4cGVjdHM= 25283\nIFNoYWRvdw== 25284\nOTY2 25285\nIG9yZ2FuaXo= 25286\n5Z6L 25287\nIHN1c3BlbnNpb24= 25288\nNjY5 25289\nIHVpdA== 25290\nIHNpbXVsdGFuZW91c2x5 25291\nIEFmZmVybw== 25292\nOiIpOwo= 25293\nIHJvY2tldA== 25294\nY2Fz 25295\nZXRlcm1pbmU= 25296\nYWNldXQ= 25297\nNjkz 25298\neGw= 25299\nIEFNRA== 25300\nKGdyYXBo 25301\nNzU4 25302\nODcy 25303\nYXNzb2Np 25304\nX0NS 25305\nLmFyYW5nZQ== 25306\nMDQ5 25307\nKGpMYWJlbA== 25308\nIGJlZWY= 25309\nUXVpY2s= 25310\nLmNhcmQ= 25311\nXSk6 25312\nLWdy 25313\nNzk3 25314\nLkdPTkU= 25315\nX0NMT1NF 25316\nIE5ldg== 25317\nw61hcw== 25318\nIHN0ZXBwZWQ= 25319\nIEZyZWVkb20= 25320\nIFdS 25321\nTlNBcnJheQ== 25322\nX3J4 25323\nX2RpYWxvZw== 25324\nIGhvdGVscw== 25325\nOTUz 25326\nIChcPA== 25327\nIERpYW1vbmQ= 25328\nIGFzc3VtcHRpb24= 25329\ndW1p 25330\nKGl0ZW1z 25331\nDQ0NCg== 25332\n5rOV 25333\nIG5lbA== 25334\nQm9va3M= 25335\n5Y6/ 25336\ndXNi 25337\nIEZJTg== 25338\nODgx 25339\n5qw= 25340\nIGNvcnBvcmF0aW9ucw== 25341\nVVNB 25342\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 25343\nOTI5 25344\nLnByb3BlcnR5 25345\nZXdpc2U= 25346\nX3Bsb3Q= 25347\nIj4nOwo= 25348\nIHBlcHBlcg== 25349\nOTg5 25350\nIHNoZWQ= 25351\nIE1lZGl1bQ== 25352\nIENvb2tpZQ== 25353\nODg5 25354\nIG92ZXJzZWFz 25355\nZWRvcg== 25356\nYXN1cmVtZW50 25357\nNzY2 25358\n5a2Y 25359\nICcuJw== 25360\nIHBocA== 25361\nIFBST0M= 25362\nIGV4Y2VwdGlvbmFs 25363\nKHRo 25364\nIEpldA== 25365\nIG9jY3VwaWVk 25366\nLnNldEltYWdl 25367\nIFJlbGF0ZWQ= 25368\ndWNrZXI= 25369\nTWVtYmVycw== 25370\nUFJJTlQ= 25371\nIEdsbw== 25372\nX1ZJRVc= 25373\nfSIsCg== 25374\nIGFkb3B0aW9u 25375\nW10pCg== 25376\nODQy 25377\nIE1pc3NvdXJp 25378\nIExpbmNvbG4= 25379\nZXJhbGQ= 25380\nUG9wdXA= 25381\nIGZhdGU= 25382\nLWJvb3RzdHJhcA== 25383\nZmVjdGlvbnM= 25384\nIFBvbGw= 25385\nX0FSR1M= 25386\naW5hbmNl 25387\nNjk3 25388\nLWhvbWU= 25389\nLiks 25390\nX2RvbmU= 25391\nNjk0 25392\nOgoKCg== 25393\nIGRpc2N1c3Npbmc= 25394\nIFNRTEV4Y2VwdGlvbg== 25395\nIGVsZWN0cm8= 25396\nCXJlcQ== 25397\nIHp3 25398\nODg2 25399\nIGx1aQ== 25400\nOTMy 25401\nIG92ZXJuaWdodA== 25402\nJHVzZXI= 25403\nIFdBWQ== 25404\nIGFsbGVyZw== 25405\nIGRpc2FwcG9pbnRlZA== 25406\nIHJhZGlhdGlvbg== 25407\nIGltcHJlc3NlZA== 25408\naWZpY2F0ZXM= 25409\nIHRvYg== 25410\nQ0xBU1M= 25411\nIGN1ZGE= 25412\nX2RldA== 25413\nLXBvc3Q= 25414\ndWx1 25415\nVHJhbnNsYXRpb24= 25416\nLWhhbmQ= 25417\nLnllYXI= 25418\nIE1vbmdv 25419\nIHVuY2xlYXI= 25420\nLmVuZ2luZQ== 25421\nV0VCUEFDSw== 25422\ncmljZXM= 25423\nX0FDQ0VTUw== 25424\nIGhvbGlkYXlz 25425\ncGVyY2VudA== 25426\nLklkZW50aXR5 25427\nIEdvdg== 25428\nIHBhc3Npb25hdGU= 25429\nISEu 25430\nIEdyZWVjZQ== 25431\ncGx1c3BsdXM= 25432\nJykpOw== 25433\nR1A= 25434\nIGV4Y2l0 25435\nLnRhYlBhZ2U= 25436\nX2NvbmQ= 25437\nIHNwb25zb3I= 25438\nTU9EVUxF 25439\nX3Byb2M= 25440\nICQK 25441\nIHJhdGlvbmFs 25442\nLlRvb2w= 25443\nIGlocg== 25444\nY2Nh 25445\n5ZOB 25446\nIEVzdGF0ZQ== 25447\nSUJVVEU= 25448\nQWN0aW9uUGVyZm9ybWVk 25449\nIFNvbGFy 25450\npoI= 25451\nIGVxdWl0eQ== 25452\ndGlk 25453\nOTM4 25454\nIHJlY2lw 25455\nLnNpbXBsZQ== 25456\nbWs= 25457\nNjg5 25458\nIEx1a2U= 25459\nIEd1YXJkaWFu 25460\nIGVuY3J5cHRlZA== 25461\nIGRvbWluYW50 25462\nLnBsYWNl 25463\nIE5W 25464\nODM5 25465\nIHRvbmd1ZQ== 25466\nKEdldA== 25467\nIHN0YWlubGVzcw== 25468\nLlBsYXk= 25469\nIGVi 25470\nYWNp 25471\nLmJ1ZmZlcg== 25472\ncmVhZGNydW1icw== 25473\nIHZhY2NpbmU= 25474\ncHJvbQ== 25475\nOTc5 25476\nIHVzZXJJbmZv 25477\nIHNsdWc= 25478\nU2VyaWFsaXplZE5hbWU= 25479\nLXdpZGU= 25480\nIHJlYWN0aW9ucw== 25481\nIFlhbmc= 25482\nIEFkZHM= 25483\nKHVzZXJJZA== 25484\nIHBsYXRlcw== 25485\nIE1FTQ== 25486\nIGJhaWw= 25487\nSW5zaWRl 25488\nZXRlZA== 25489\nIGVsc2lm 25490\nIHNha2U= 25491\nIGN5Y2xlcw== 25492\nIOyX 25493\nCUk= 25494\nLWNvbGxhcHNl 25495\nODQx 25496\nIEdNVA== 25497\nODE0 25498\nRGVjbGFyYXRpb24= 25499\nIGdyb3M= 25500\nIHJlYWNoZXM= 25501\nIGN1c3RvZHk= 25502\nVW50aWw= 25503\nNzUz 25504\nODU2 25505\ndHU= 25506\nIENoZW4= 25507\nIG54 25508\nKGFkZHI= 25509\nIE9mZmVy 25510\nIGNvbGxlZw== 25511\nYXNzYWRvcg== 25512\nNjc0 25513\nIG1hcHBlcg== 25514\nODU0 25515\nIFNJR05BTA== 25516\nIEJsb29t 25517\nIEhvbGw= 25518\nIEltcGVy 25519\nLWRlcw== 25520\nX3NpdGU= 25521\nUHJvYw== 25522\nRXF1 25523\nIGF0b21pYw== 25524\nIFdvbWFu 25525\nc2VudA== 25526\nNzM4 25527\nODE3 25528\nc2Nhcg== 25529\nIGludGVsbGlnZW50 25530\nIEdldHRpbmc= 25531\nIFJlZ2lzdHJhdGlvbg== 25532\nIFBoaWxs 25533\nIGtpbGxlcg== 25534\ndW5pY29kZQ== 25535\nCgkJCg== 25536\nIEphY29i 25537\nIENvbnN0 25538\nIGxvY2F0ZQ== 25539\nIGNhdXM= 25540\nNzQ5 25541\nIFNjaG9sYXI= 25542\nIGNvbnN0aXR1dGlvbmFs 25543\nIGluZmxhdGlvbg== 25544\nIEdvdA== 25545\nPWFycmF5 25546\nZW5kdW0= 25547\nIHRyYW5zbGF0ZWQ= 25548\nIGRpdm9yY2U= 25549\nRW50cmllcw== 25550\nIHNvcg== 25551\nIFF1b3Rl 25552\naXJsaW5lcw== 25553\nVUs= 25554\nIGV4Y2Vs 25555\nKG9wdA== 25556\nIEFEVg== 25557\nLDos 25558\nIGNvbnRhY3RlZA== 25559\nNzQy 25560\nIERB 25561\nIHJpbmdz 25562\nIEluZHVzdHJpYWw= 25563\nLmdldENvbnRleHQ= 25564\nIGZvcmdvdHRlbg== 25565\nIFRhbg== 25566\nIHBhbnRz 25567\nIG92 25568\nIGRlY29kZXI= 25569\nIFBhcnRpYWw= 25570\nIHZj 25571\nIGJhdHRsZXM= 25572\nQXJpYWw= 25573\nRlJJTkdFTUVOVA== 25574\naXJhdGVz 25575\nLHc= 25576\nYWludGVuYW5jZQ== 25577\nIE9k 25578\nIFRlY2hub2xvZ2llcw== 25579\n5YmN 25580\nIENhcnRlcg== 25581\nLmZpbmRBbGw= 25582\nTm9tZQ== 25583\nQmVu 25584\nIFVzYWdl 25585\nIFBpY3R1cmU= 25586\nIGJhZGx5 25587\nX3BhbmVs 25588\nIHBhdGVudA== 25589\nIFByb3RvY29s 25590\nbG90dGU= 25591\nCXBsYXllcg== 25592\namVjdGlvbnM= 25593\nNzQ2 25594\nIGRvdQ== 25595\nX3JlbGVhc2U= 25596\ndXJuaXR1cmU= 25597\nX3RheA== 25598\nIEZpZWxkcw== 25599\nLmRhdGFzZXQ= 25600\nX21hc3Rlcg== 25601\nQ0xVREU= 25602\nIFBoYXJt 25603\nYnN0 25604\nIG9wZXJhdGlvbmFs 25605\nLmNlbGw= 25606\nIGlkZW50aWZ5aW5n 25607\nIGp3dA== 25608\ndHVwbGU= 25609\nIFRD 25610\nIENybw== 25611\nOTM2 25612\naXhtYXA= 25613\nLWNvbXBvbmVudHM= 25614\nZ2VuZXJhbA== 25615\nIG96 25616\nX0Rl 25617\nX2RvdWJsZQ== 25618\nIFRvbw== 25619\nMDg4 25620\nLlZpZXdHcm91cA== 25621\nODc5 25622\nZ2F0ZQ== 25623\nZGluZ3M= 25624\ncGhvdG9z 25625\nIGdyYW5kZQ== 25626\nb2xsZWN0 25627\nX2xpbg== 25628\nIGF3ZnVs 25629\nZmlsdGVycw== 25630\nIGFsdGVybmF0ZQ== 25631\nZXNw 25632\nIGNvbXByZXNz 25633\nZW8= 25634\nIFNjYWxl 25635\nIGluZGlyZWN0 25636\nIGludm9pY2U= 25637\nCgoKCgoKCgoKCgoKCgoKCg== 25638\nU3RhcnRpbmc= 25639\nIFBsYXllcnM= 25640\naWVsZQ== 25641\nLnRoZW4= 25642\nOTgx 25643\nT3Jk 25644\nIFR1cGxl 25645\nIGJvdXQ= 25646\nIFN0YXRpc3RpY3M= 25647\nUHJldmlldw== 25648\nIHB1enpsZQ== 25649\nIFdpZHRo 25650\nU1RBVEU= 25651\nIG92ZXJsYXk= 25652\nCW9u 25653\nIGluZnI= 25654\nIHNtYWxsZXN0 25655\nbG9ja2Vk 25656\n0YLQvg== 25657\nc3Ns 25658\nNzc5 25659\nIGRlZW1lZA== 25660\nIHNjbw== 25661\ncmVjaw== 25662\nIGpCdXR0b24= 25663\nIG1pc3Npb25z 25664\nODcx 25665\n56ew 25666\nLlNlbGVjdGVkSW5kZXg= 25667\nVEFCTEU= 25668\nU2VwdA== 25669\nIGFja25vd2xlZGdl 25670\nIHN0cnRvdGltZQ== 25671\nIFRlbGw= 25672\nIERhaw== 25673\nIGFsdW1pbnVt 25674\nIGZlbmNl 25675\nIFN0YXJz 25676\nQ09ORklH 25677\nIHJldHJvZml0 25678\nIGVtcGhhc2lz 25679\nL2hlYWRlcg== 25680\nIFNvbWV0aGluZw== 25681\naW5pc2hlZA== 25682\nPSciLiQ= 25683\nIFZhbGlkYXRvcnM= 25684\nIHBvbGFy 25685\nc2VjdGlvbnM= 25686\nOTQ0 25687\nLmFzcHg= 25688\nIGFzcGly 25689\nLk1vY2s= 25690\nQ29kZUdlbg== 25691\nIHBldXQ= 25692\nOTcx 25693\nIGFjY2VwdGluZw== 25694\nIGJhY2tpbmc= 25695\nUGljdHVyZQ== 25696\nL2Fw 25697\n0LXQsw== 25698\nX1NFQw== 25699\nLXVzZQ== 25700\nYW5ub3RhdGlvbg== 25701\nIGNvZ25pdGl2ZQ== 25702\nIGdyaXA= 25703\naG91cg== 25704\nIExlZ2Fs 25705\nIGVwaWM= 25706\nLnRvb2xTdHJpcA== 25707\nLm5vdGlmeQ== 25708\nLkxhc3Q= 25709\nT1JJWg== 25710\nTWlkZGxld2FyZQ== 25711\nY3JpcHRpb25z 25712\nbGFzaA== 25713\nX0ZPVU5E 25714\nIExpdmVycG9vbA== 25715\nIHt9Iiw= 25716\nOTMx 25717\nSW5zdGFsbA== 25718\nIG5pdA== 25719\nIGZpZ3VyZWQ= 25720\nW2xlbg== 25721\nLldpbg== 25722\nLnBsYXRmb3Jt 25723\nODUz 25724\nIGdhbWJsaW5n 25725\nKGR0 25726\nYXZlcnk= 25727\nCWluY2x1ZGU= 25728\nV2hldGhlcg== 25729\nUm91dGluZw== 25730\nIHRoZXJhcA== 25731\nUmVtb3Rl 25732\nIExvc3M= 25733\neWxs 25734\nIGFwcHJvYWNoZWQ= 25735\nIFZlaGljbGU= 25736\nIEFscGhh 25737\nIHZvY8Oq 25738\nYW5zd2Vycw== 25739\nTlNEaWN0aW9uYXJ5 25740\nOTU0 25741\nY29uc2lkZXI= 25742\ndW51c2Vk 25743\nIEZhbg== 25744\nb3JhYmxl 25745\nZnJl 25746\nODcz 25747\nIERJU0NMQUlN 25748\nIEFjdG9y 25749\nLl0= 25750\ndG9IYXZl 25751\nLnVzZXJJZA== 25752\nIHNwZWVkcw== 25753\nZXdheQ== 25754\nIHJlY3Vycw== 25755\nINCz 25756\nX3ByaXY= 25757\nIeKAnQoK 25758\nQ2hvaWNl 25759\nIHNldHRsZQ== 25760\nIHBsYW5lcw== 25761\nJ30s 25762\nVG9t 25763\nSVRFUg== 25764\nISIK 25765\n5bs= 25766\nYWNoZWxvcg== 25767\nIHNlcGFyYXRpb24= 25768\nIGRhbA== 25769\nYWRq 25770\nIHJlZ2lzdGVycw== 25771\ncml6 25772\nIE5vdGljZQ== 25773\nIGx1 25774\nIGNvdXJhZ2U= 25775\nIGF4ZXM= 25776\nY2VsbGVudA== 25777\nLmFzeW5j 25778\nMDcz 25779\nIGNvbXBhdGliaWxpdHk= 25780\n56s= 25781\nICEKCg== 25782\nCXRpdGxl 25783\nWUxF 25784\nCW1lc3NhZ2U= 25785\nVVVJRA== 25786\nT0xERVI= 25787\nIEhI 25788\nIFN0eWxlU2hlZXQ= 25789\nIGFjY2Vzc2Vk 25790\nLnZhbGlkYXRpb24= 25791\ndGFza3M= 25792\nIHBvbGx1dGlvbg== 25793\nLmNhbnZhcw== 25794\nIGluZ3JlZGllbnQ= 25795\nIENhYmlu 25796\nQWg= 25797\nb2xkb3du 25798\nIE5PSQ== 25799\nIMOX 25800\nW2Y= 25801\nZWR1Yw== 25802\neWFsdHk= 25803\nKG5vdA== 25804\nX1N0YXRl 25805\nOTMz 25806\nYW1lbg== 25807\nNzk1 25808\nNzM5 25809\nIGRhbw== 25810\ndWRhZA== 25811\nZWxsZXJz 25812\nfSY= 25813\nbGljaXR5 25814\nX1dJTkRPVw== 25815\nIHRhdHRv 25816\ndmFsb3I= 25817\nLlJhbmdl 25818\nIHJlZmVyZW5jZWQ= 25819\nIFJlc2VydmU= 25820\nTW9uZXk= 25821\nODc0 25822\nU0NSSVBU 25823\nL3Byb2R1Y3Q= 25824\nY2hvaWNlcw== 25825\nIHRpbg== 25826\n44KT 25827\nOTE4 25828\nIHNlcGFyYXRvcg== 25829\nIHBrZw== 25830\nYW1tZWQ= 25831\nIE1BVA== 25832\nISEKCg== 25833\nIHJhaWQ= 25834\nIG1vdGl2YXRpb24= 25835\nIFhQ 25836\nIEJhY2tncm91bmQ= 25837\nIFF1YXRlcm5pb24= 25838\nLmRlZmluZVByb3BlcnR5 25839\naWtlcg== 25840\nCXBhcmVudA== 25841\nIE9yaWdpbmFsbHk= 25842\nYW50YWdl 25843\nIEhhbnM= 25844\nIHRpbWVsaW5l 25845\nLmN1cg== 25846\nb3BpYw== 25847\nIFNlcXU= 25848\nbXVzdA== 25849\nIENvYWw= 25850\nIGZvcm1hdHRlcg== 25851\nX1JHQg== 25852\nIF8oIg== 25853\nJ30pLAo= 25854\nID09PT09PT09PT09PT09PT09 25855\nIEZVTkNUSU9O 25856\nIGxuZw== 25857\naWNhdGVz 25858\nbGl2ZQ== 25859\nX2VuZ2luZQ== 25860\nIHRvd25z 25861\nODY4 25862\nJykpCgo= 25863\nIFBL 25864\nKGFwaQ== 25865\nCXNjYW5m 25866\nMDg5 25867\ncGFja2V0 25868\nLnBob25l 25869\n4YA= 25870\nIEFuZHk= 25871\nX05BTUVT 25872\nOTgy 25873\nUExZ 25874\nOTU1 25875\nIG1pbnM= 25876\naW1p 25877\nIGJyaWNr 25878\nIGJsYWRl 25879\nLnN0ZG91dA== 25880\nfWA7Cg== 25881\nU2hpZnQ= 25882\nCXNi 25883\nIENoZWNrcw== 25884\nIHBoZW5vbWVub24= 25885\nQXZhdGFy 25886\nIG1pbmlzdHJ5 25887\ncm9zZQ== 25888\nCUZpbGU= 25889\nODc4 25890\nIHRpdGxlZA== 25891\nKExPRw== 25892\nIGdhbg== 25893\nZGVzaWdu 25894\nKCksDQo= 25895\nIGJvbmVz 25896\nc3Rt 25897\nxZvEhw== 25898\nIElucHV0U3RyZWFt 25899\nIHZvbHVudA== 25900\nIFNlcmlhbGl6YWJsZQ== 25901\nIGZpZ2h0ZXI= 25902\nIERyYWc= 25903\nVHdpdHRlcg== 25904\nIHN1YnNpZA== 25905\n57w= 25906\nIGZvcnVtcw== 25907\nLmxvYWRpbmc= 25908\nbG9nZ2Vk 25909\nX3RoaXM= 25910\nIHRlcnJhaW4= 25911\nIGlycmU= 25912\nIEluZw== 25913\nIENO 25914\nX29iamVjdHM= 25915\nLnVpZA== 25916\nIGNvbnNjaW91c25lc3M= 25917\nVElOR1M= 25918\nIEdhbGw= 25919\nIHBvcnRyYXk= 25920\nMDU2 25921\nIERldmVsb3Blcg== 25922\nIHBhcnRpY2lwYW50 25923\nICI7DQo= 25924\nL21vZGVs 25925\nNzk0 25926\nIE9wZXJhdGlvbnM= 25927\nXlw= 25928\nIExhdGVy 25929\nIHJhaXNlcw== 25930\nLW5vbmU= 25931\nLm1ldGE= 25932\nPScuJA== 25933\nRmluaXNoZWQ= 25934\nIHJlcGxhY2luZw== 25935\nIHNhbXBsaW5n 25936\nIEplbg== 25937\nIlRoZXJl 25938\nUkVBTA== 25939\nQUxF 25940\n7Iqk 25941\nT3JkZXJz 25942\nX3BhcmFtZXRlcg== 25943\nIE9seW1waWM= 25944\nIHRyw6hz 25945\nIGFyZW5h 25946\naW9s 25947\nOz8+ 25948\nIGltcGFjdHM= 25949\nIFdT 25950\nOmdldA== 25951\nIGZsaWdodHM= 25952\nIFJ1c3NlbGw= 25953\nY2FtZXJh 25954\nRm4= 25955\nc2lnbWE= 25956\nIGZvcmNpbmc= 25957\nIGxvY2Fscw== 25958\nIGRlcGFydHVyZQ== 25959\nIGNlbGVicmF0aW9u 25960\nIFNheQ== 25961\nODg0 25962\n77yS 25963\nIEhpbGxz 25964\nLmhhc093blByb3BlcnR5 25965\nIHR5cGluZ3M= 25966\nLkFQSQ== 25967\nIGRvbmF0aW9u 25968\nT3BlcmF0aW9uRXhjZXB0aW9u 25969\nLkFjdGl2aXR5 25970\nY3BsdXNwbHVz 25971\nIENoYXJsaWU= 25972\nIGltcG9ydGVk 25973\nIGRhbm4= 25974\nIG9jY2FzaW9ucw== 25975\nIGltcGxlbWVudGluZw== 25976\nIHB1cnBsZQ== 25977\nLmRpYWxvZw== 25978\nU1FMRXhjZXB0aW9u 25979\nZXJubw== 25980\nIHdhcnM= 25981\nIHBhc3Rl 25982\nIGRlY3JlYXNlZA== 25983\nIGhhcnNo 25984\nIGVsYWJvcg== 25985\naW5wdXRz 25986\nIFZpZXdz 25987\nIGVycm9yTWVzc2FnZQ== 25988\nX211bA== 25989\nCXdyaXRl 25990\nIENvcA== 25991\nIEFubnVhbA== 25992\nKGJ1dHRvbg== 25993\nIHZpZGE= 25994\nYmFycw== 25995\nIEhhcnZhcmQ= 25996\nCWV4cGVjdA== 25997\nIGluZGV4ZXM= 25998\nIGRvY3VtZW50YXJ5 25999\nIGZsZXNo 26000\nT1JMRA== 26001\nIERlbHRh 26002\nTUFORA== 26003\nQnJ1c2g= 26004\nLWNvbHVtbg== 26005\nIGRldmVsb3BtZW50cw== 26006\nOTc0 26007\nNzgz 26008\nbWV0aG9kVmlzaXRvcg== 26009\nc2xpY2U= 26010\nIFBETw== 26011\nIGludmVzdGluZw== 26012\nODY3 26013\naXJhYmxl 26014\nIHhtbG5z 26015\n77yb 26016\nYXJ0YQ== 26017\nIHRoZW9yaWVz 26018\nX2NpdHk= 26019\nICRfXw== 26020\nQ3JlYXRpbmc= 26021\nKHBy 26022\nRHJvcGRvd24= 26023\naXNtYXRjaA== 26024\nIE5FVA== 26025\nOTI2 26026\nJ10pKXsK 26027\nIFZhbHVlcw== 26028\nIFNFTw== 26029\nIFNUQVQ= 26030\nIGVjb3N5c3RlbQ== 26031\nIHRlbXB0 26032\nIFxc 26033\nIC8vewo= 26034\nIENocmlzdG9waGVy 26035\nIEtlbnR1Y2t5 26036\nIEh0dHBTZXJ2bGV0UmVzcG9uc2U= 26037\nIGh5YnJpZA== 26038\neW9u 26039\nIGZlZWRpbmc= 26040\nIEV4dHJh 26041\nTm9ybQ== 26042\nSVRDSA== 26043\nIFNlYW4= 26044\nIFVwbG9hZA== 26045\nbXVu 26046\ncHVy 26047\nIHBlcnNpc3RlbnQ= 26048\nIElEQw== 26049\nIFBlcmZvcm0= 26050\nODYz 26051\nLm1lcmdl 26052\nX3Jvb20= 26053\nTWVhbndoaWxl 26054\nIT0n 26055\nIFdlbA== 26056\nQXJnc0NvbnN0cnVjdG9y 26057\nODg3 26058\nLkRhdGFiYXNl 26059\nIGNvdW50aW5n 26060\nKCkq 26061\nlOWbng== 26062\nIFRPUA== 26063\nbWlsbA== 26064\nIERU 26065\nSUdORUQ= 26066\nOTU2 26067\nIEtC 26068\nIGNvbXBseQ== 26069\nU291dGg= 26070\nX2NvbGxlY3Rpb24= 26071\nQ2hhcHRlcg== 26072\nIGV4cGxhaW5pbmc= 26073\nX0FN 26074\nX3Rz 26075\nY2FyZHM= 26076\nIHF1ZWw= 26077\nIHBvbGU= 26078\nIHRvdWNoZG93bg== 26079\nIE90aGVycw== 26080\nIHBlZXJz 26081\nIFR5cGVFcnJvcg== 26082\nNzYz 26083\nIHNpeHRo 26084\nIGNoZWVy 26085\nIGRpc3B1dGU= 26086\nOTYz 26087\nODkz 26088\ndXNj 26089\nKV0s 26090\ndGh1bWI= 26091\nIGhpZGluZw== 26092\nIFNJRw== 26093\nbGlrZXM= 26094\nIFBBR0U= 26095\nLlJlZmxlY3Rpb24= 26096\nIGhlYWRxdWFydGVycw== 26097\nVElORw== 26098\nIEdob3N0 26099\nTUxF 26100\nJAo= 26101\nIGNvbnRyYXJ5 26102\nZXh0ZW5k 26103\nJ10pLg== 26104\nRkZFQ1Q= 26105\nIFBpbnRlcmVzdA== 26106\nw7ptZXJv 26107\ncmljYW5l 26108\nCXNlc3Npb24= 26109\nIGNyeXN0YWw= 26110\nLUNvbnRyb2w= 26111\nb3Zlcm5tZW50 26112\nb2dyYWY= 26113\nOTYx 26114\nLWFjdGlvbg== 26115\ndm9sdW1l 26116\nZnRlbg== 26117\nIHVuY29u 26118\nIGFuaW1hdGU= 26119\nIGxlYXNl 26120\nc2Ny 26121\nIHJlZnVzZQ== 26122\n44CL 26123\nZnRw 26124\naW5mb3JtYXRpb24= 26125\nIGV2YWx1YXRlZA== 26126\nIGluamVjdGlvbg== 26127\nIGphY2s= 26128\nIHdvcmtzaG9w 26129\n5rOo 26130\nUFRI 26131\nIFRz 26132\nb2ZmZXI= 26133\nCW9z 26134\nIGtpbmdkb20= 26135\nTWlzc2luZw== 26136\nIGxhd21ha2Vycw== 26137\nZXh0RmllbGQ= 26138\nIHNpbmdpbmc= 26139\nYWJp 26140\nL2NsaWVudA== 26141\nLm1lZGlh 26142\nQVRFR09SWQ== 26143\nU2lnbmF0dXJl 26144\nJScsCg== 26145\nIEZ1Y2s= 26146\nXVs6 26147\nIHNlbnNvcnM= 26148\nL2NvbQ== 26149\nIFByaW1hcnk= 26150\nLlNRTA== 26151\nX3Byb2dyYW0= 26152\nIHBpbGxz 26153\nIGludGVncmFs 26154\nIGZsZWV0 26155\nIGRyb3BwaW5n 26156\nLnNs 26157\nQmVlbg== 26158\nIHBldHM= 26159\nIGFkdmlzZWQ= 26160\nIGRyYWdvbg== 26161\nX0VESVQ= 26162\nKGlt 26163\nOTM5 26164\nRkVS 26165\nIERydWc= 26166\nKHJhbmRvbQ== 26167\nIGNvbXByZXNzaW9u 26168\nb3VzdA== 26169\nWyU= 26170\nIGJ1eWVy 26171\naG9w 26172\nUm9sZXM= 26173\nbWFuYWdl 26174\nIHBhaW5mdWw= 26175\nIEJyYW5jaA== 26176\nLW1vZGFs 26177\nZW5hbnQ= 26178\nIE1lc2g= 26179\nL2ZvbnQ= 26180\nIEdyYWhhbQ== 26181\nIOKY 26182\nIG5j 26183\nIEZyYW5jaXM= 26184\nIHNwZWNpZmljYXRpb24= 26185\nIGRhbWFnZXM= 26186\nLWNvbmZpZw== 26187\nIHRoZW9yZXQ= 26188\nc2VjdXJl 26189\nX211bHRp 26190\nYWNldXRpY2Fs 26191\nIGRlbWFuZGluZw== 26192\nZW5uZQ== 26193\nSVNUUw== 26194\nMDk0 26195\nKCkpKTsKCg== 26196\nUmVhc29u 26197\nUmVjZW50 26198\ncGhhc2U= 26199\nIHBzeQ== 26200\nX01BTg== 26201\nIHZvbHVudGVlcg== 26202\n5b8= 26203\naXN0cmlidXRlZA== 26204\nbGlv 26205\nIHByb2R1Y3Rpdml0eQ== 26206\nX2NvbW0= 26207\nU3ByaW5n 26208\nbmlz 26209\nLndlaWdodA== 26210\nIENhbmNlcg== 26211\nQWxsb2M= 26212\nIFR3ZWV0 26213\nIHNlcGFyYXRlbHk= 26214\nCWNoZWNr 26215\nX3Byb3BlcnRpZXM= 26216\nLlVuaXQ= 26217\nODI5 26218\nX0NMSw== 26219\nIGd0 26220\nICgpOwoK 26221\nIGhhbmR5 26222\nODM0 26223\nIFRob21wc29u 26224\nIHVubmVjZXNzYXJ5 26225\nIFJlYWRlcg== 26226\nODk0 26227\nR04= 26228\nPXJlcXVlc3Q= 26229\nIFV0aWxpdHk= 26230\nLlJlcG9zaXRvcnk= 26231\nIEF4 26232\naHlkcg== 26233\nNzkx 26234\naWV1 26235\nIHRoeQ== 26236\nIGx0 26237\nX21haWw= 26238\n5L+u5pS5 26239\nYWlsYW5k 26240\nIFBoaWxpcA== 26241\nIGJpdHRlcg== 26242\nIGJldHRpbmc= 26243\nODM3 26244\nIHRpbWVk 26245\nb2Nrcw== 26246\nMDc2 26247\nJ2E= 26248\nIGFsZ29yaXRobXM= 26249\nIHJlaW50ZXJwcmV0 26250\nIHRvc3M= 26251\ncm9nZW4= 26252\nIGhvcGVk 26253\nKHNlbGVjdGVk 26254\nIHZlbnR1cmU= 26255\nVEVY 26256\nIExlYXZl 26257\nLlN1YnN0cmluZw== 26258\nIGdyYXRlZnVs 26259\nNzQz 26260\ndWth 26261\nIENvbnN1bWVy 26262\nIGFnZ3JlZw== 26263\nQ2lyY2xl 26264\n4LiB 26265\nX2Jsb2Nrcw== 26266\nIGxlZ2FsbHk= 26267\nICJ8 26268\n44OD 26269\nLmJvYXJk 26270\nLkFi 26271\nRnVuY3Rpb25z 26272\ncmVjaXBl 26273\n6Ic= 26274\nIE94Zm9yZA== 26275\nIHdob2xlcw== 26276\nLkJ1aWxk 26277\nX2NoYW5nZWQ= 26278\naGFp 26279\nIGRlcGFydG1lbnRz 26280\nOTY0 26281\nSW1w 26282\nIGNvYWxpdGlvbg== 26283\nSU5GUklOR0VNRU5U 26284\nIGVtcG93ZXI= 26285\naXRjaGVz 26286\nTm9ydGg= 26287\nIGluZmxhbW0= 26288\nT05TRQ== 26289\nIG1pc3NpbGU= 26290\nIFJhag== 26291\nIElzc3Vl 26292\nIGF0b2k= 26293\nY2FsZWQ= 26294\nLkNvbnRyb2xsZXJz 26295\nIFdvbGY= 26296\nIGNydXNoZXJz 26297\n4buH 26298\nLkF1dGg= 26299\nLmFkZEF0dHJpYnV0ZQ== 26300\naGlz 26301\nIGJvb3Rz 26302\nLmNsZWFu 26303\nY2FtcA== 26304\nIHRlbmFudA== 26305\nIHR1bmU= 26306\nIHt9Jy4= 26307\nIHdvcmtvdXQ= 26308\nUmVwbw== 26309\nIHBhcnRpYWxseQ== 26310\nTUlTU0lPTg== 26311\namFtaW4= 26312\nIFNC 26313\nIGRldGVybWluYXRpb24= 26314\nICcnKTsK 26315\nIEJlbmc= 26316\nIHZvcw== 26317\nIGluaGFi 26318\nL2xhbmc= 26319\nc2J1cmdo 26320\nRXhlY3V0b3I= 26321\naG9uZQ== 26322\nIENoYWxsZW5nZQ== 26323\nX2xpbmtz 26324\nLkxldmVs 26325\nIHVuZGVyZ3JvdW5k 26326\nLWNvZGU= 26327\nOTU5 26328\nIG9wdGltaXphdGlvbg== 26329\nbG9nZ2luZw== 26330\nX2Rlc3Q= 26331\nIHNuYWtl 26332\nIGNoZW1pY2Fscw== 26333\nX0lNUE9SVEVE 26334\nYWRvb3A= 26335\nIFRIQVQ= 26336\nbWFuYWdlZA== 26337\nIHJlZHVjZXM= 26338\nIFJFQUw= 26339\nIEd1eQ== 26340\nX0dFTkVSSUM= 26341\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 26342\nLmFtb3VudA== 26343\nIGRlcmU= 26344\nZ2V0VGltZQ== 26345\nIHBhbnQ= 26346\nYW5vbnltb3Vz 26347\nIGhhcm1vbnk= 26348\nIEFsYW4= 26349\nIHNjZW5hcmlvcw== 26350\nIGRpcnQ= 26351\naHRhZ3M= 26352\nTWM= 26353\nU2hlbGw= 26354\ncmlu 26355\new0KDQo= 26356\nLnBvdw== 26357\nCWNsaWVudA== 26358\nIGNvbnNwaXJhY3k= 26359\nIGFkbWlzc2lvbg== 26360\nIFJlZ2lvbmFs 26361\nIFZpZXdDb250cm9sbGVy 26362\nIFBoaWxpcHBpbmVz 26363\nIGRlcG9z 26364\nIHBhcA== 26365\nOTYy 26366\nIFBhZA== 26367\nUGF1bA== 26368\nLkNvbWJvQm94 26369\nIHR1dG9y 26370\nIFJlY2lwZQ== 26371\nd3JpdGluZw== 26372\nIGNvbnRyaWJ1dG9y 26373\nT1RI 26374\nU21hbGw= 26375\nVkk= 26376\nIGhhY2Vy 26377\nZXF1 26378\nIEV4YW1wbGVz 26379\naHVtYW4= 26380\nLm1lc3NhZ2Vz 26381\nCXR5cA== 26382\nICgNCg== 26383\nIFNTTA== 26384\nTEVO 26385\nIFJvbW5leQ== 26386\nKGdyaWQ= 26387\nCW1pbg== 26388\nID4KCg== 26389\nIGZydWl0cw== 26390\nIHZvdGVy 26391\nSW5saW5l 26392\ncGFuZQ== 26393\nIENvbGxlY3Rpb25z 26394\nY2hhcnNldA== 26395\nIHNwYW0= 26396\nemI= 26397\naXRlbWFw 26398\nIHN1Y2NlZWRlZA== 26399\nX0NPTA== 26400\nIGVsYXBzZWQ= 26401\naW1ldGVy 26402\nIHJlY292ZXJlZA== 26403\nVGVuc29y 26404\naGF0dGFu 26405\nLnNldHVw 26406\naXN0bw== 26407\nKGhlYWQ= 26408\nOTc3 26409\nIFNJWkU= 26410\nIHRhY3RpY3M= 26411\nIGRpc3R1cg== 26412\nIHByZXZhbA== 26413\naWNpb3M= 26414\nKFZhbHVl 26415\nX2NvbHM= 26416\nIEZhdA== 26417\nIHNlYWw= 26418\nIHNvbnM= 26419\nIGVuc3VyZXM= 26420\nMDk1 26421\nIHByZXNzaW5n 26422\nPSY= 26423\naWdlbm91cw== 26424\nIGhhcmFzc21lbnQ= 26425\nX0pTT04= 26426\nIGlnbm9y 26427\neW5vbWlhbA== 26428\nb21lcg== 26429\nX3N0YXRpYw== 26430\nIHNpZ25pZmljYW5jZQ== 26431\nIGNpcmNsZXM= 26432\nX1N5c3RlbQ== 26433\nIGRpc2NpcGxpbmU= 26434\nIGRyZXNzZWQ= 26435\nIHNwaGVyZQ== 26436\nOTI3 26437\nIGNsaW1i 26438\nNzU5 26439\nX2FjdGlvbnM= 26440\nIEJhYg== 26441\nICc9Jyw= 26442\nX3NjaGVtYQ== 26443\nInVzZQ== 26444\nIHVuZGVycw== 26445\nIGN1cHM= 26446\nLnNjcmVlbg== 26447\nL25ldw== 26448\nIGFwcGVhcmluZw== 26449\nVE9Q 26450\ndmlzZWQ= 26451\nY2xhbmc= 26452\nIGludmVzdGlnYXRvcnM= 26453\nIG15c3RlcmlvdXM= 26454\nIHByb21pc2luZw== 26455\nIHF1YWxpZnk= 26456\nIGNhdmU= 26457\nIGVxdWlw 26458\nPXg= 26459\nR1Q= 26460\nKGxpbms= 26461\nLnZlbG9jaXR5 26462\nLmVyYXNl 26463\nb3Rlcg== 26464\nKysrKysrKys= 26465\ncHJvZml0 26466\nIHpvbmVz 26467\nX3VpZA== 26468\nLXNlcg== 26469\nIG9iamVjdGl2ZXM= 26470\nIG1pbGY= 26471\nd2Via2l0 26472\nKG1hdGNo 26473\nbmVo 26474\nIEFzc29jaWF0ZWQ= 26475\nIFRvZG8= 26476\nPWQ= 26477\nMDY1 26478\nQ2Ft 26479\nIHZvY2Fs 26480\nIHN1ZG8= 26481\nKEVY 26482\nIHRyb3U= 26483\nQUJD 26484\nLmJlYW4= 26485\nIEdyb3VuZA== 26486\nIFJFU1Q= 26487\nd2VldHM= 26488\nSW5n 26489\naW1vbg== 26490\nOTQ2 26491\nX2J1cw== 26492\nIENPTE9S 26493\ndW50bw== 26494\nIGZvc3M= 26495\nIExpbmtz 26496\nODY5 26497\nw6RuZw== 26498\nL2Zvcm1z 26499\ncHJpc2Vz 26500\nIGFjaGlldmVtZW50 26501\nQ0FMTA== 26502\n0LXQu9GM 26503\nIFZlcmlmeQ== 26504\nX1NPVVJDRQ== 26505\nYXB0Y2hh 26506\nSURE 26507\nX3JlZmVyZW5jZQ== 26508\nR29sZA== 26509\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= 26510\nOTQ3 26511\nUmVjZWl2ZXI= 26512\nMDk5 26513\nIGFq 26514\nX2RpcmVjdGlvbg== 26515\nfV0= 26516\nIENvbXBldA== 26517\nIGJhbmc= 26518\nNzk4 26519\nIENhc3M= 26520\nLXVybA== 26521\ndGVjaG4= 26522\nIEplcnVzYWxlbQ== 26523\nbG9uZ2l0dWRl 26524\nJyk7DQoNCg== 26525\nIHdpbm5lcnM= 26526\nVGFza3M= 26527\nIERNQQ== 26528\nIHRvb2x0aXA= 26529\njrc= 26530\nIEJyYQ== 26531\nX2R1cmF0aW9u 26532\nY3VyeQ== 26533\ncGFyZW50cw== 26534\nLS0tLTwv 26535\nIHBhc3Nwb3J0 26536\nODQ5 26537\nV0M= 26538\nINC7 26539\nY2Vzc2lvbg== 26540\nIFllbGxvdw== 26541\nIGVuY3J5cHRpb24= 26542\nJwoKCg== 26543\nIGxpc3Rpbmdz 26544\nIENvbW11bmljYXRpb25z 26545\nLl8K 26546\nICIiIg0K 26547\nIGZi 26548\nIHN0cmljdGx5 26549\nIExpdGVy 26550\nIEVudGVycHJpc2U= 26551\nX2JvdHRvbQ== 26552\nQUtF 26553\na2V0 26554\nIHRhbQ== 26555\nQmV0d2Vlbg== 26556\nX1RPUA== 26557\nRGlzYWJsZQ== 26558\nIGZpbGluZw== 26559\nIENocm9u 26560\nU0VRVQ== 26561\nICZfX18= 26562\nODQ2 26563\nIGZhbA== 26564\nIFNMT1Q= 26565\nRW1iZWQ= 26566\ndXRoZXI= 26567\nIFJlc3RhdXJhbnQ= 26568\nIHJlYWxpc3RpYw== 26569\nIScpOwo= 26570\nIERFQUw= 26571\nIFBlcmlvZA== 26572\nLmdldFg= 26573\nIHNlaHI= 26574\nIl0nKS4= 26575\nOTQz 26576\nZXNzYQ== 26577\nCW1lbWNweQ== 26578\nIGFja25vd2xlZGdlZA== 26579\nc2VuYWw= 26580\nIFVuaXZlcnNhbA== 26581\nICcnOwoK 26582\nL3dpa2k= 26583\naWVubmU= 26584\nIE5TQXJyYXk= 26585\nIGFjY2VwdGFuY2U= 26586\nIGxpdmVy 26587\nIHRvb3Ro 26588\nIGFjY3Vz 26589\nCUxPRw== 26590\ndmFsdQ== 26591\n5YC8 26592\nIHNlY3RvcnM= 26593\ncGVyaW1lbnRhbA== 26594\nL2NsYXNz 26595\nX2dv 26596\nTWljaGFlbA== 26597\nb2xhdGlsZQ== 26598\nIFBST0Y= 26599\nIGNvbXByb20= 26600\nc3BlY2lhbGNoYXJz 26601\nIOKc 26602\nIGlzRXF1YWxUb1N0cmluZw== 26603\nIEh1bmc= 26604\nLmFzTGlzdA== 26605\nL2dv 26606\nPj4o 26607\nIEtpcg== 26608\nIGludHJvcw== 26609\nIHNrZXRjaA== 26610\nIHNraWxsZWQ= 26611\nIGltbWVy 26612\nIGFkZXF1YXRl 26613\nX3JlcA== 26614\nKGhlYWRlcg== 26615\nX2xpa2U= 26616\nIHBlcmNlaXZlZA== 26617\nc3No 26618\nIGFzc3VtaW5n 26619\nIGZm 26620\nX3V1aWQ= 26621\ndWxhcw== 26622\nIGRlbW9jcmF0aWM= 26623\nLmVudGl0aWVz 26624\nU2VyaWVz 26625\nYXBob3Jl 26626\nIG5ld2Vy 26627\nfSg= 26628\nU0VD 26629\nYWlybw== 26630\nIGNvbW1vZA== 26631\nIHByaXZpbGVnZQ== 26632\nIGRldXg= 26633\nIEhvcA== 26634\nLicv 26635\nY3RpYw== 26636\nLic7Cg== 26637\nPD89 26638\nIFVU 26639\nZXRpZXM= 26640\nX0NPTlRFTlQ= 26641\nLnJlbGVhc2U= 26642\nLmRpc21pc3M= 26643\nIGZj 26644\nb3VuZ2U= 26645\ncHdk 26646\nX3ByZXY= 26647\nTWdy 26648\nIEJ1ZmZlcmVkUmVhZGVy 26649\nd3JpdHRlbg== 26650\nIEVi 26651\nICkKCgo= 26652\ndWl0bw== 26653\nIGNvbnRyb3ZlcnN5 26654\nIGRpc3Bvc2Vk 26655\nIGZvdG8= 26656\nTGlzdFZpZXc= 26657\nL2NyZWF0ZQ== 26658\nIENPTA== 26659\nY29tbXVuaWM= 26660\nMDY4 26661\nIGZyZWVseQ== 26662\ndW5hbA== 26663\nb3ZpZA== 26664\nCXRy 26665\ncGFnaW5hdGlvbg== 26666\nIENvbW1vbnM= 26667\nRWxlbQ== 26668\nIFJFTQ== 26669\nIGNvcnJlbGF0aW9u 26670\nKCkrIg== 26671\nIEhpZGU= 26672\nYW5kaW5n 26673\nKHZlYw== 26674\naXRvcw== 26675\nIEN1bHQ= 26676\nIG51dHJpdGlvbg== 26677\ndmFscw== 26678\nIGRldGVybWluaW5n 26679\nbG9yZA== 26680\nIHNjYW5kYWw= 26681\nIHNoYWxsb3c= 26682\nb2Rhc2g= 26683\nX3NlcmlhbA== 26684\nIFNsbw== 26685\nIGRpc3Bvbg== 26686\nUGxvdA== 26687\naWNrbGU= 26688\nIGVsbA== 26689\nIHVuZW1wbG95bWVudA== 26690\nRk0= 26691\ncm9ucw== 26692\nbMSx 26693\nTW8= 26694\nRXhpc3Q= 26695\nSURT 26696\nQ2hv 26697\nIEtleWJvYXJk 26698\nLnBhcnNlcg== 26699\nLkdldE9iamVjdA== 26700\nIHNwZWxscw== 26701\nIGdlc2No 26702\nIG1hZ25pdHVkZQ== 26703\nX1NM 26704\naXNkaWN0aW9u 26705\nICcpOwo= 26706\naWxpYW5z 26707\nIHNoYXI= 26708\nIFByb2I= 26709\ndWlsdGlu 26710\nIHR1bm5lbA== 26711\nPkM= 26712\nIFdhcnJlbg== 26713\nIG9wdGltaXplcg== 26714\nIFNFUlZJQ0VT 26715\nX29wZXI= 26716\nZ2V0QXR0cmlidXRl 26717\nIE1jSw== 26718\nX3NlbGY= 26719\nMDg0 26720\nLnJz 26721\nIikKCgo= 26722\nR2V0Q29tcG9uZW50 26723\nZXJjZQ== 26724\nIHRvdXM= 26725\ndW5pdHM= 26726\nJ10pOw0K 26727\nWm9vbQ== 26728\nL0U= 26729\nIG9ic2M= 26730\nIGZhc3Rlc3Q= 26731\nb25saW5l 26732\nIHBlYWNlZnVs 26733\nZmZlbg== 26734\nIGNhcmdv 26735\nCXBy 26736\nIHNlZWtz 26737\nenU= 26738\nMDc0 26739\nVHJpbQ== 26740\nIHdhcmQ= 26741\nIHZlcmQ= 26742\nIGJsb2dz 26743\nLmV4Y2VwdGlvbnM= 26744\nIFByZW1pdW0= 26745\nIE5ldGhlcmxhbmRz 26746\nU2FmZQ== 26747\nRmluaXNo 26748\nIEFsYnVt 26749\nX0FDQw== 26750\nPXRoaXM= 26751\ndmlydHVhbA== 26752\nXT4= 26753\nX0xBQkVM 26754\nIE5pY2g= 26755\nX3dpbg== 26756\nIEFhcm9u 26757\nV1A= 26758\nOyQ= 26759\nYWltcw== 26760\nIEltYWdlVmlldw== 26761\nIGVuZGxlc3M= 26762\nRVJB 26763\nX0RJU0FCTEU= 26764\nIGNhbmNlbGxlZA== 26765\nLXVz 26766\nIGluc3BlY3Rpb24= 26767\nZW1pbg== 26768\nIEdyZXk= 26769\nLW9wZW4= 26770\nIGl0ZXJhdGlvbnM= 26771\nLm93bmVy 26772\nIGtlcmFz 26773\nLlBhc3N3b3Jk 26774\nIFJ5 26775\nIElOUw== 26776\nQWly 26777\nIFNldmVyYWw= 26778\nLlRhYlN0b3A= 26779\nSU5HTEU= 26780\nIEhhaXI= 26781\nIENhbnZhcw== 26782\nQUFBQQ== 26783\nIGZsYXc= 26784\nY2VkZXM= 26785\nLlJlcG9ydA== 26786\n7Yo= 26787\nIFRpcHM= 26788\nY3JpcHRvcnM= 26789\nLnRyYW5zYWN0aW9u 26790\nLlNwcmluZw== 26791\nIHZpZXdlcg== 26792\nIGluc2lnaHRz 26793\n6L6T 26794\nb3JkaW9u 26795\nVUlOVA== 26796\nc2Vlaw== 26797\nIEF1Zg== 26798\n7J6Q 26799\nIHN0cmFpbg== 26800\nVG9vbHRpcA== 26801\nIGR6 26802\naWduYWw= 26803\nYWR0 26804\nIHVj 26805\nZmluaXRl 26806\nIG5t 26807\nLmNtZA== 26808\nIE15U3Fs 26809\nW2RhdGE= 26810\nLmphY2tzb24= 26811\nLnRyZWU= 26812\nUmVxdWVzdFBhcmFt 26813\nX2FnZW50 26814\nIildDQo= 26815\nIGFzc2Fzcw== 26816\nKENvbnN0YW50cw== 26817\nOnNz 26818\nIE1BTg== 26819\nKy0rLQ== 26820\nIEJvdHRvbQ== 26821\ncHJpbnRz 26822\nIFNhbWU= 26823\nQEF1dG93aXJlZA== 26824\nc3dhcA== 26825\naWNpw7Nu 26826\nIHByb3Rlc3RlcnM= 26827\nIGhvbmV5 26828\nIFZldGVy 26829\nKENhbGVuZGFy 26830\nLWFk 26831\nIEJyb29rbHlu 26832\nTGlmZQ== 26833\nX1ZBUg== 26834\nemVjaA== 26835\nIENBTEw= 26836\nX0NBU1Q= 26837\nIEVsZWN0aW9u 26838\nIHRoaWNrbmVzcw== 26839\nVmVyeQ== 26840\nX0lOVEVHRVI= 26841\nLWRldg== 26842\nKSkpKQ== 26843\nYXBhdA== 26844\nb29vbw== 26845\nZGVtbw== 26846\nIHBhcnNlRmxvYXQ= 26847\nIFJhdGhlcg== 26848\nU1RJVA== 26849\nbWFrZXI= 26850\nW2N1cnJlbnQ= 26851\nY2hyb25v 26852\nIGNocmlzdA== 26853\n44Gq 26854\nIERldGFpbA== 26855\nxrDhuw== 26856\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 26857\nIHN1bA== 26858\naWRlbmN5 26859\nUXVl 26860\nIGVsZWdhbnQ= 26861\nYXBvbnM= 26862\nIGRpc2hlcw== 26863\nIGludGVnZXJz 26864\nKHJlYWQ= 26865\nMDU3 26866\nZmluZFZpZXdCeUlk 26867\nIEFtb3VudA== 26868\nIFNraXA= 26869\nIGhhYml0cw== 26870\nKiko 26871\nIG1vbnN0ZXJz 26872\nTUFD 26873\nOmVuZA== 26874\nIGZyYW5r 26875\nQXNzZW1ibHk= 26876\nIGRmcw== 26877\nIG5ldXQ= 26878\nX1RZUEVT 26879\nZXF1YWw= 26880\nbG95ZA== 26881\nKHVyaQ== 26882\nIGNoaQ== 26883\nIGRlZmVuZGFudA== 26884\nIGNvbmZsaWN0cw== 26885\nIHZpbA== 26886\nLWpz 26887\nIFBlYWNl 26888\nIG11dGFibGU= 26889\nKXNlbmRlcg== 26890\nIEZvY3Vz 26891\n5bu6 26892\nIGFwcHJlY2lhdGVk 26893\nc2xlZXA= 26894\nIFJFRA== 26895\nQ3VsdHVyZQ== 26896\nIGRlc2lnbmVycw== 26897\nX2dlbmVyYXRvcg== 26898\nY29kZXM= 26899\nL2V4 26900\nLkdldFZhbHVl 26901\ndW1ibGVk 26902\nLnNjYWxhanM= 26903\ncGVyb3I= 26904\nIHZldGVyYW5z 26905\nIH0pDQo= 26906\nIHVuZm9ydHVuYXRlbHk= 26907\nX0NSRUFURQ== 26908\nTWFzcw== 26909\nIENMQUlN 26910\nIE1lZXQ= 26911\nX3N1cHBvcnQ= 26912\nQmFuaw== 26913\nKCkuCg== 26914\nRGFyaw== 26915\nX0xPVw== 26916\nIE1pbmluZw== 26917\nIE93bmVy 26918\naWVyYQ== 26919\nQ2xpZW50ZQ== 26920\nIGVuY291cmFnaW5n 26921\nPlM= 26922\nIGJveWZyaWVuZA== 26923\nIEhhbGY= 26924\nIEFDQw== 26925\nQWZm 26926\nX2Fy 26927\nLWxpZmU= 26928\nY3g= 26929\nLkpCdXR0b24= 26930\naXphZG8= 26931\nLnplcm8= 26932\nLm9wZW5xYQ== 26933\nb3Rvbg== 26934\nLnRleHRDb250ZW50 26935\nIHRvbGw= 26936\nYXRpZQ== 26937\nIGJhbGxvdA== 26938\nLW51bWJlcg== 26939\nLkV4Y2VwdGlvbg== 26940\nCXBhcmFtcw== 26941\nY2lyY2xl 26942\nLW1hcA== 26943\nIG5hcA== 26944\nIFJvYm90 26945\nIEljaA== 26946\ncmVnaXN0cmF0aW9u 26947\nQW1hem9u 26948\ncm9sbG1lbnQ= 26949\nKGV4cA== 26950\nIHRhbmtz 26951\nIEdvcmRvbg== 26952\nIG1hY2hpbmVyeQ== 26953\nIGJhc2VsaW5l 26954\n5os= 26955\nMDg2 26956\n2Kk= 26957\nIENvbnZlbnRpb24= 26958\nCWNvbmZpZw== 26959\nb29raWVz 26960\nbXVsdA== 26961\nUmVjb3Jkcw== 26962\nIEVTVA== 26963\nIGdhcmJhZ2U= 26964\nIGNvbmZvcm0= 26965\naWRhbA== 26966\nIGJhcmc= 26967\nIHN1cnZpdmVk 26968\nIGludmVzdGlnYXRpb25z 26969\nOTM1 26970\nLmNvbnRhaW5zS2V5 26971\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 26972\nb3J0aW9u 26973\nIGhvcnI= 26974\nX2h0dHA= 26975\nIG1hbnQ= 26976\nXTsNCg0K 26977\nYmluYXJ5 26978\nOTQ4 26979\nZW1wbA== 26980\nIGlucXVpcnk= 26981\nIE1lYW53aGlsZQ== 26982\nMDk4 26983\nIGNvbGxlY3Rpbmc= 26984\nLkVudGl0eUZyYW1ld29yaw== 26985\nIiwKCg== 26986\nIFBpYw== 26987\nQEluamVjdA== 26988\naWNrbmVzcw== 26989\nIEJpbmRpbmc= 26990\nIGNvbnRyb2xsaW5n 26991\ncmV2ZXJzZQ== 26992\nIGNoYWlycw== 26993\nc2VtYmxlZA== 26994\nKGFkZA== 26995\nRGlzYWJsZWQ= 26996\nYW5hcw== 26997\nLnRyYW5zbGF0ZQ== 26998\nLS0tLS0tLS0tLS0K 26999\nIHJlZmxlY3RlZA== 27000\nIl0KCg== 27001\nRXh0ZXJuYWw= 27002\nQXJyb3c= 27003\nU2luZ2xldG9u 27004\nJXg= 27005\nIMU= 27006\nIGFuY2VzdA== 27007\nIE9ybGVhbnM= 27008\nCWNtZA== 27009\nIHByb2hpYml0ZWQ= 27010\naXRobWV0aWM= 27011\nKGNoYW5uZWw= 27012\nX2Nzcw== 27013\nRm9yd2FyZA== 27014\nLnNvY2tldA== 27015\nIGx1Yw== 27016\n4oY= 27017\nIEZpcmVmb3g= 27018\nIE1vdmllcw== 27019\nKV8= 27020\nLmVuZHM= 27021\nKHNoYXBl 27022\nIGRlYWx0 27023\nIHNhdmVz 27024\nIGdsb3J5 27025\nIG1lam9y 27026\nIGJyZWF0aGluZw== 27027\nIGVsbGVy 27028\nZ2V0RGF0YQ== 27029\nIGFuZ2xlcw== 27030\nIHRvb2xiYXI= 27031\nIHNwYWNpbmc= 27032\nMDU5 27033\nSVBT 27034\nIGZsb29ycw== 27035\nX0FDVElWRQ== 27036\nIHNodWZmbGU= 27037\nL3NoYXJlZA== 27038\nIEVsZQ== 27039\nZWRpc2g= 27040\nIHdlYmNhbQ== 27041\nLmV4cGVjdA== 27042\naWxvYw== 27043\nIEluY2x1ZGVz 27044\nIHR3ZWV0ZWQ= 27045\nIDop 27046\nIEVzc2F5 27047\nRml4 27048\nLWJldHdlZW4= 27049\nX3dlYg== 27050\nLmNvbnY= 27051\nIHJhY2lzbQ== 27052\nIHJlZmxlY3Rz 27053\ndW1t 27054\n0LjRgtC1 27055\nX2Zvb3Rlcg== 27056\nL2RvY3M= 27057\nIFBvdXI= 27058\nTmdNb2R1bGU= 27059\nLmluaXRpYWxpemU= 27060\ncGF0dGVybnM= 27061\nX0lu 27062\nIEFiYg== 27063\nKg0K 27064\nIHNlbnRpbWVudA== 27065\nYnVmZg== 27066\nX2NvdW50cw== 27067\nIHJldXNl 27068\nY2h1bms= 27069\nIGltcG9zZWQ= 27070\nUHJpbWFyeUtleQ== 27071\nRm9yZWdyb3VuZA== 27072\nIGNvbnN1bWVk 27073\nPyE= 27074\nIGRpY2s= 27075\nIGNocm9u 27076\nIEZlcm4= 27077\nIHJlc3BvbnNpdmU= 27078\nOTU4 27079\nIGluc2VjdA== 27080\naWN1bHR5 27081\nIHJ3 27082\nIGFsaWtl 27083\nIHN1YnNldA== 27084\nIENvb2tpZXM= 27085\nIFBhaXI= 27086\nIHRpZXI= 27087\nSUZP 27088\nYXZvdXI= 27089\nIFFV 27090\nLHNpemVvZg== 27091\nIG1lcmdlZA== 27092\nbXY= 27093\naXRvbA== 27094\neWxvbg== 27095\nIGp1bXBlZA== 27096\nLnJvbGU= 27097\nZW5zYWpl 27098\nUnVsZXM= 27099\nIGJyb3dzZQ== 27100\nQW5pbWF0b3I= 27101\nIHlvZ2E= 27102\nIHZhcmlhbnRz 27103\nIGNvdXJ0ZXN5 27104\ndXJhbg== 27105\ncGJz 27106\nZWxzZWlm 27107\nQWx0 27108\nIExhbmU= 27109\nQ0xL 27110\nSU1BUlk= 27111\nX1BST1BFUlRZ 27112\n77yQ 27113\nIGNoYW4= 27114\nIGdyYWR1YWxseQ== 27115\nIHNoYWtl 27116\nIGJsb25kZQ== 27117\nLi4uIik7Cg== 27118\nLXNleA== 27119\nIGdhbWVwbGF5 27120\nYWNpZXM= 27121\nLnJlZnJlc2g= 27122\nVVNC 27123\nIFBsb3Q= 27124\nV2Fz 27125\naXNzaXBwaQ== 27126\nIFRlbnNvcg== 27127\nIGNyeXB0b2N1cnJlbmN5 27128\nIGRpZmZpY3VsdGllcw== 27129\nRGVsZXRlZA== 27130\nV2l0aG91dA== 27131\nX2FwcGVuZA== 27132\nX3Zlcg== 27133\nOTY3 27134\nIikpDQo= 27135\nIGhvbmVzdGx5 27136\nIHBpdm90 27137\nIHRlbXBz 27138\nX3Bz 27139\nIFVubGlrZQ== 27140\nWzot 27141\nVlM= 27142\nX2luZg== 27143\nIGp1bmlvcg== 27144\nIGFuaW1hdGlvbnM= 27145\nIGZpbGVwYXRo 27146\nPzwv 27147\nW1w= 27148\nIG9wZXJhdGVz 27149\nX3JlZA== 27150\nIEJvb3RzdHJhcA== 27151\nbGVhZA== 27152\nZWZmZWN0 27153\nwr0= 27154\nIFN0ZXI= 27155\nIEJ1Y2s= 27156\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 27157\nIGRlcHV0eQ== 27158\nVGhhbg== 27159\n4bq/ 27160\nT05FTlQ= 27161\nIEhlYXQ= 27162\nZXRoZWxlc3M= 27163\nXSl7Cg== 27164\nIGtvc3Rlbmxvcw== 27165\nKCk7Ly8= 27166\nIGRlcGxveWVk 27167\nPnt7JA== 27168\nIHVuaWNvZGU= 27169\ncGxhY2Vz 27170\nIENvZmZlZQ== 27171\nLlNF 27172\nIFBBUg== 27173\nKHR4dA== 27174\nZ2VicmE= 27175\nIGZpcmVz 27176\nTWFpbldpbmRvdw== 27177\nbWVkaXVt 27178\nICjigJw= 27179\nIGxn 27180\nIGNtcA== 27181\nL2Jhc2U= 27182\nX2xheWVycw== 27183\nX2VudHJpZXM= 27184\nIGFkbWluaXN0ZXI= 27185\nIFNVQ0g= 27186\nQlA= 27187\nIFNjb3R0aXNo 27188\nCQ0KCQ0K 27189\nZ3VhcmQ= 27190\nIFN0cm9uZw== 27191\nSW5zbg== 27192\nIENBUA== 27193\nYXN1cnk= 27194\nIFNFRQ== 27195\nQ2xvY2s= 27196\nZXJpZQ== 27197\nXG1vZGVscw== 27198\nICQk 27199\nIENhYg== 27200\nIHd1cmRl 27201\nIHNvbGRpZXI= 27202\nIGNsaXBz 27203\nIGFycmFuZ2VtZW50 27204\nIFdvbmRlcg== 27205\nIEhvcm4= 27206\nIHNjYXJlZA== 27207\nIGN1cmU= 27208\nbWtkaXI= 27209\nIGFsaWduZWQ= 27210\nIFBpbms= 27211\nIGxhbmRlZA== 27212\nRGltZW5zaW9u 27213\nU2Nyb2xsUGFuZQ== 27214\nLmNoYXQ= 27215\nLldpdGg= 27216\nIFRyYWlu 27217\nXS4K 27218\nIHRoaXJ0eQ== 27219\nIGR1cmFibGU= 27220\nIGxk 27221\nIGxhdGVpbml0 27222\nIGNoYXJ0cw== 27223\nIGluc3VsdA== 27224\nLkZhdGFs 27225\nX2N0 27226\nIG1hc2tz 27227\nQ0xVREVE 27228\nUHJlc2lkZW50 27229\nIGNvbG91cnM= 27230\nZ21lbnRz 27231\nLmF0dHJpYnV0ZXM= 27232\nIEZsZXg= 27233\nIENsb2Nr 27234\nw61jdWw= 27235\naW1lbg== 27236\nSk8= 27237\nIFJlZ2V4 27238\nX0xJTks= 27239\nIGNvdWNo 27240\nIElOUFVU 27241\nIGJlYXRpbmc= 27242\nYnVzaW5lc3M= 27243\ncHJlY2Vk 27244\nLnVuaXQ= 27245\nIEZlbA== 27246\nTmV2ZXI= 27247\nb3NwZWw= 27248\nLnN0YXJ0c3dpdGg= 27249\nIEVQQQ== 27250\nLm9ubHk= 27251\nIHByZXZlbnRpbmc= 27252\neWVy 27253\nQ29sdW1uTmFtZQ== 27254\nIGVsZXZhdGlvbg== 27255\nZmx1 27256\naWN5Y2xl 27257\nIG9mZmxpbmU= 27258\nVG9vbGJhcg== 27259\nIGNvbXBldGluZw== 27260\nKV0u 27261\nIG1vZw== 27262\nIGlzVmFsaWQ= 27263\nQXNr 27264\nX2F2 27265\nX2xhdA== 27266\nQU5D 27267\nIEpvaA== 27268\na2Vycw== 27269\nIGd1YXJkcw== 27270\nIGNoYWlucw== 27271\nIFNpbXBsZURhdGVGb3JtYXQ= 27272\nLnN0YXRpYw== 27273\nIHZlc3NlbA== 27274\nIG11ZA== 27275\nIHN0YWJpbA== 27276\nIHN0cmV0 27277\nZ20= 27278\nYW1hdGlvbg== 27279\n55w= 27280\nLXdpdGg= 27281\nIHJvcw== 27282\nX1BB 27283\nIHJlc3VsdGFkbw== 27284\nIGNvbmZpZGVudGlhbA== 27285\nIFRva3lv 27286\nCXVzaW5n 27287\nIE1hdGhm 27288\nb21iaW5l 27289\nIEVTUE4= 27290\nIGRlYWxlcnM= 27291\nIGRpc21pc3NlZA== 27292\nVFJZ 27293\nIHRlZW5z 27294\ncmVjb3Jkcw== 27295\nIHdpbmdz 27296\nZ2FsbGVyeQ== 27297\nYWNjb3VudHM= 27298\nX0xJQg== 27299\nIGphY2tldA== 27300\nIE5TT2JqZWN0 27301\nIHN0b25lcw== 27302\nIERlbGl2ZXJ5 27303\nIERpZXQ= 27304\nL3dhdGNo 27305\nIHRvaWxldA== 27306\nIEd1ZXN0 27307\nLmRheQ== 27308\nMDY3 27309\nIGludHZhbA== 27310\nMDg3 27311\nVmlzaXQ= 27312\nIGludmVzdGlnYXRlZA== 27313\nIHBlbnRydQ== 27314\nIFRoZWF0cmU= 27315\nYW5kaWRhdGVz 27316\nTGFuZw== 27317\nIFNlcnY= 27318\nIGNvbnRyb2xsZXJz 27319\nIHNldFRpdGxl 27320\nTlA= 27321\nYW15 27322\nZmxhdA== 27323\nKHVp 27324\nMDY5 27325\nX2RvY3VtZW50 27326\n6IO9 27327\nIENvaW4= 27328\nIEFkYW1z 27329\ncHRpYw== 27330\nIHByb2R1Y3RpdmU= 27331\nIGFjY29tcGxpc2hlZA== 27332\nDQoNCg0KDQo= 27333\nIGRlZmVycmVk 27334\naWVudGVz 27335\nIHNpbmM= 27336\nb2xhcnM= 27337\nUmlnaHRhcnJvdw== 27338\nIHZhcmlhdGlvbnM= 27339\nKG9mZnNldA== 27340\nOTU3 27341\nLkxheW91dEluZmxhdGVy 27342\nIHN1c3BlbmQ= 27343\nIHByZXZlbnRpb24= 27344\nX3ByaXZhdGU= 27345\nX2pz 27346\n4piF 27347\nIHdpZWRlcg== 27348\nYXR1bQ== 27349\nkow= 27350\nIGFwcGVhcmFuY2Vz 27351\nLkRvY3VtZW50 27352\nIHZhbGlkYXRlcw== 27353\nY2FsZW5kYXI= 27354\nfSI7Cg== 27355\nLmRlbW8= 27356\nY29udXQ= 27357\nIGNvcnJlY3Rpb24= 27358\nIERlYWw= 27359\nIGJhdHRlcmllcw== 27360\nLmR1cmF0aW9u 27361\nLFw= 27362\nX21hcmtlcg== 27363\nbXVsdGk= 27364\nIGhhbHQ= 27365\nIGNtcw== 27366\nIHNoYXBlZA== 27367\nQnJv 27368\ncmVkdWNl 27369\nICMjIyM= 27370\nQ1RPUg== 27371\nIEJlbmVm 27372\nIGljb25pYw== 27373\nIHBpYW5v 27374\nIGVmZmVjdGl2ZW5lc3M= 27375\nfC4K 27376\nIGFqYXg= 27377\nIHZvbHVtZXM= 27378\n4Lih 27379\nIGNsanM= 27380\nICAgICAgICAgICAgICAK 27381\nYXRocw== 27382\ncmFpdHM= 27383\n5aSn 27384\n0ZY= 27385\nX211bHQ= 27386\nIGZhc2NpbmF0aW5n 27387\nQXZlcmFnZQ== 27388\nIHByw6k= 27389\nIENoYWlybWFu 27390\nLmZpbmRFbGVtZW50 27391\nX3Bpbg== 27392\nIGNvbXBhcmluZw== 27393\nIGRhcmtuZXNz 27394\nLUZp 27395\nLXNlcnZlcg== 27396\nIHNlbGVjdGluZw== 27397\nc3RlcmRhbQ== 27398\nIFBhcnRz 27399\nRk9STUFUSU9O 27400\nIG5vdGluZw== 27401\nIHBpbGU= 27402\nb2dz 27403\nIHBhbGV0dGU= 27404\nX2Rv 27405\naXRpemU= 27406\nMDc5 27407\nKCko 27408\nIGRlZmluaW5n 27409\nIHJlbWFpbmRlcg== 27410\nVW5pdHM= 27411\nX1RBU0s= 27412\nSHR0cENsaWVudA== 27413\nU29jaWFs 27414\nIGZ1bmRyYQ== 27415\nTlI= 27416\nY2hlc3Q= 27417\nQ3VycmVuY3k= 27418\nLmFkYXB0ZXI= 27419\nIGRvcA== 27420\ndW50aW5n 27421\nQU5HVUFHRQ== 27422\nIkhl 27423\nCWluZGV4 27424\nX3BhY2thZ2U= 27425\nLkljb24= 27426\nIHJlcGV0 27427\nbWFzcw== 27428\nPSIuJA== 27429\nIFN1ZA== 27430\nIGxpZA== 27431\ncHJvdmluY2U= 27432\n7Jw= 27433\nR1BJTw== 27434\n0Jo= 27435\nIE15U1FM 27436\nIGRvY3M= 27437\nIEdB 27438\nIGlwc3Vt 27439\nS2VybmVs 27440\nIGFjY2VwdHM= 27441\nIGZpdHRpbmc= 27442\nIGN1YW5kbw== 27443\nIGR1cGxpYw== 27444\nIEJyb3RoZXI= 27445\nIEtsZQ== 27446\nbnVtcw== 27447\nIG1vcnBo 27448\nICMjIyMjIyMj 27449\nIENHUG9pbnQ= 27450\nPHVuc2lnbmVk 27451\n5L6L 27452\nIER1a2U= 27453\nLnNldEJvdW5kcw== 27454\ncXM= 27455\nb3JpYw== 27456\namVy 27457\nIHJlZ2FyZGVk 27458\nSHR0cFJlcXVlc3Q= 27459\nIGJvbmRz 27460\nIHRob3JvdWdobHk= 27461\nZW5jZW50 27462\nIGhpZ2hsaWdodGVk 27463\nIGFjcmVz 27464\nIHdvcmtwbGFjZQ== 27465\nIEx1eA== 27466\nIHF1b3Q= 27467\nOTg2 27468\nLmluZmxhdGU= 27469\nIGRvY3VtZW50ZWQ= 27470\nIGFkZGljdGlvbg== 27471\nIG11dGF0aW9u 27472\nLmNpdHk= 27473\nIGJvdHRsZXM= 27474\nIFJlcG9zaXRvcnk= 27475\nb25u 27476\nZXJybm8= 27477\nQVJJQUJMRQ== 27478\n5bqm 27479\nX0JFR0lO 27480\nZ2xhcw== 27481\nJ30pCg== 27482\nIE1hc3NhZ2U= 27483\nIFdoaXQ= 27484\ncmVnZXg= 27485\nV0E= 27486\nIG91dGxldA== 27487\nLWhlYWQ= 27488\nIGV4cGlyZWQ= 27489\nIFRoYWk= 27490\nL2luY2x1ZGU= 27491\nZ3JhZGllbnQ= 27492\nc2NhbmY= 27493\nIHNlYW0= 27494\nd2Fs 27495\nCWJ1Zg== 27496\nQmVhcmVy 27497\nIHByZWNpb3Vz 27498\naWZhY3Rz 27499\nY29vcmQ= 27500\nIGV4cGxvcmF0aW9u 27501\nLmdldFk= 27502\nKGhhbmRsZQ== 27503\nVG9waWM= 27504\nIFZlbnQ= 27505\ncmhz 27506\nLS0tLS0tCg== 27507\nIEJyaWdodA== 27508\nIGd1aWxk 27509\nbW90aGVy 27510\nc3Rvcm0= 27511\nIG11bmljaXBhbA== 27512\nIGluaw== 27513\nLlRZUEU= 27514\nd2w= 27515\nLi4uPC8= 27516\nX0RFVg== 27517\nPSIuLw== 27518\nX2Jvb2s= 27519\ndGh5 27520\naXR6ZXJsYW5k 27521\nb3BsZXM= 27522\ndHJhY3Rpb24= 27523\nIENhbWVyb24= 27524\nIEFuZHJl 27525\nLnJlc3VsdHM= 27526\nIGNocm9tZQ== 27527\nIHNlY3VyZWQ= 27528\nIHN1cmZhY2Vz 27529\nKTw= 27530\nIHRvYmFjY28= 27531\nCXNwcmludGY= 27532\nIGVzY2Fs 27533\nIHN0ZGVycg== 27534\nIE1lbGJvdXJuZQ== 27535\nIGRpc3RyaWN0cw== 27536\nIG1hdHQ= 27537\nb2hlbg== 27538\nIGRhdGFHcmlkVmlld0NlbGxTdHlsZQ== 27539\nKE1vZGVs 27540\nIHNlbnNpdGl2aXR5 27541\nS0E= 27542\ndHJhbnNwb3J0 27543\nLmdldERhdGU= 27544\nIHN1YnRsZQ== 27545\nVUdJTg== 27546\nLm1vdXNl 27547\nIGFsdGVybmF0aXZlcw== 27548\nIGVsbGU= 27549\nY29yYXRpb24= 27550\ncmVhdGlvbg== 27551\n5ps= 27552\nX05PUk1BTA== 27553\nRGlzcGxheU5hbWU= 27554\nIGZhbmN5 27555\nSVNFRA== 27556\nTU9E 27557\nLlJlYWRPbmx5 27558\nIFVi 27559\nIEN1 27560\naWNvbA== 27561\nIE5lbHNvbg== 27562\nIENPUg== 27563\nYW56YQ== 27564\nIFNwYXJr 27565\nICJcXA== 27566\nLS0KCg== 27567\nd29vY29tbWVyY2U= 27568\nIHJlbWVtYmVyZWQ= 27569\ndmVyaXR5 27570\nIEV4dGVuc2lvbg== 27571\nIFBE 27572\nIHNlYXJjaGVz 27573\nLnNv 27574\nIEZvb3Rlcg== 27575\nID0n 27576\nIFdBUk5JTkc= 27577\nLWxv 27578\nCXRhYmxl 27579\nIGRyYXdlcg== 27580\ncGljdHVyZQ== 27581\nIEZhbnRhc3k= 27582\nc3Rvcnk= 27583\nIG3Dqm1l 27584\nIwoK 27585\nX3NsaWNl 27586\nb2x0YWdl 27587\nSGFy 27588\nL3k= 27589\nIEVS 27590\nZGll 27591\nIFBPUw== 27592\nLmFjdGlvbnM= 27593\nKE1haW4= 27594\nZXdhcnQ= 27595\nYXBldXQ= 27596\nIFNURQ== 27597\naWRkaW5n 27598\nLnJlYWRMaW5l 27599\nIHNlYXJjaGVk 27600\nV2Vk 27601\nLmZpZ3VyZQ== 27602\ndWdodGVycw== 27603\nKCkuX18= 27604\nIG9yYml0 27605\nc2hpcHBpbmc= 27606\nIGZyaWVuZHNoaXA= 27607\nIFNoaWZ0 27608\nLW9y 27609\ncXVv 27610\nV0hFUkU= 27611\nIEVzcA== 27612\nLmZvcndhcmQ= 27613\nb2ZmaWNl 27614\nIGnDpw== 27615\nIENoZWxzZWE= 27616\nSXRlbVNlbGVjdGVk 27617\nYWNoZXJz 27618\nZGVsZXRlZA== 27619\ncm91cw== 27620\nICItIg== 27621\nIEdyYW4= 27622\nIPCfmA== 27623\nLXBvd2Vy 27624\nZXR0YQ== 27625\nIHJlbWluZGVy 27626\nZW5zb3Jz 27627\nIEFsbG93 27628\nxJlk 27629\nX3RlYW0= 27630\nIGNyb3du 27631\ndGlja2V0 27632\nIGNvbGxlY3Rpb25WaWV3 27633\nbGFjZQ== 27634\nIGZpeGVz 27635\nIEh1Yg== 27636\nY2F0YWxvZw== 27637\nIElkZW50aXR5 27638\nIGV4Y2Vzc2l2ZQ== 27639\nIE5hdmlnYXRvcg== 27640\nX0JS 27641\nLXBsYXk= 27642\nIENhbXBhaWdu 27643\nICAgICAgICAgICAgICAgCg== 27644\nYXNpdmU= 27645\nIHdj 27646\nIEJlaWppbmc= 27647\nL3d3dw== 27648\nIG1ha2V1cA== 27649\nIGRpc3RhbmNlcw== 27650\nIHNhdGlzZnk= 27651\nQ09ORA== 27652\nIHdvdW5k 27653\nKCld 27654\nIHZpb2xhdGlvbnM= 27655\nIHN0YXlz 27656\nLyM= 27657\naWxpbmU= 27658\nXEV4Y2VwdGlvbg== 27659\nIE1vdGlvbg== 27660\nIGhlYWw= 27661\nX3BsYW4= 27662\ncmFzZXM= 27663\nKG1haW4= 27664\nQXBwbGU= 27665\nIGNvbXBsZXRpbmc= 27666\nIGRldGVybWluZXM= 27667\nU2Nhbg== 27668\nIHN0ZWFs 27669\nIFNvYw== 27670\nQW5hbHlzaXM= 27671\nIGZhdm9yaXRlcw== 27672\nIGNhbXBv 27673\nb25lcg== 27674\nIEZsaWdodA== 27675\nLi4uCgoKCg== 27676\nKSkpKSk7Cg== 27677\nLWNvdW50 27678\nIHB3 27679\nQXNTdHJpbmc= 27680\nIHNleHVhbGx5 27681\nRmlyc3ROYW1l 27682\nIEVzY29ydA== 27683\nY2FsYw== 27684\nIFdpa2lwZWRpYQ== 27685\nIGRvY2tlcg== 27686\nIFN3ZWV0 27687\nJ2lk 27688\nSW50bw== 27689\nIEh1bnQ= 27690\nLmVxdWFsVG8= 27691\nIGxhYm9yYXRvcnk= 27692\nIEJVU0lORVNT 27693\nRmlsZURpYWxvZw== 27694\nVHJlZU5vZGU= 27695\nLkVuYw== 27696\nIE1heGltdW0= 27697\nIG1vdGhlcnM= 27698\n5rU= 27699\nIGZyYWN0 27700\nLnN0YXJ0c1dpdGg= 27701\nIGhhcmRjb3Jl 27702\nLm9i 27703\n5aeL 27704\nID48Lw== 27705\nX3Jv 27706\nKCgq 27707\nPz8/Pw== 27708\nX3ZlcnRleA== 27709\na2VpdA== 27710\nIEhhbGxvd2Vlbg== 27711\nVEk= 27712\nIFZh 27713\nX2Nhcg== 27714\nPSJ7eyQ= 27715\nIHJhbmRvbWx5 27716\n0LDQvdC40LU= 27717\nIHNob2NrZWQ= 27718\nIFBva8OpbW9u 27719\nc2lnbmFs 27720\nIFNESw== 27721\nbWlkZGxld2FyZQ== 27722\nIHRyZWF0aW5n 27723\nIGJ1cm5lZA== 27724\nRGVwYXJ0bWVudA== 27725\nIFNwZWN0 27726\nIGNsaWVudGU= 27727\nIFJlZGRpdA== 27728\nX2F2Zw== 27729\nIGluc3RhbGxpbmc= 27730\nX2FscGhh 27731\nLGRhdGE= 27732\nIHNldElk 27733\nIExpc3RWaWV3 27734\nKHByb3BlcnR5 27735\nIGNyb3NzaW5n 27736\nIE9iag== 27737\nIFdhcmQ= 27738\nIFJlZGlyZWN0VG8= 27739\nIFByZXNlbnQ= 27740\nIGRyYXdz 27741\nY2hlZHVsZWQ= 27742\nIGxlZ2lzbGF0aXZl 27743\nIHR3aXN0 27744\nIFN0cmE= 27745\nIEFGUA== 27746\nIENoYXA= 27747\nLXBy 27748\nOkNHUmVjdA== 27749\nIGNlcw== 27750\nUm91dGVz 27751\nbm9m 27752\nIHZpc2E= 27753\nIFRDUA== 27754\nIEVWRU4= 27755\naXZpYWw= 27756\nIExldHRlcg== 27757\nUkFZ 27758\nIGltcGxvZGU= 27759\nLmVx 27760\nPScr 27761\nIG1vdGl2YXRlZA== 27762\nLnZpc2libGU= 27763\nLnNob3J0 27764\nPm1hbnVhbA== 27765\nIFRlY2huaWNhbA== 27766\nIGNvcnBvcmF0aW9u 27767\nIEhX 27768\nYW5rYQ== 27769\nVEFJTA== 27770\naXN0YXM= 27771\nIHBlcmZvcm1z 27772\nIEJlaGF2aW9y 27773\nLkZvcg== 27774\nX09SREVS 27775\nIEtpY2s= 27776\nIGNhbGxiYWNrcw== 27777\nX2Ry 27778\ndWVnbw== 27779\naHVi 27780\ndWZmaWNpZW50 27781\nc2t5 27782\nIGJw 27783\naHRhYmxl 27784\nIE9OTFk= 27785\nIEFVVEhPUlM= 27786\nLkFyZ3VtZW50 27787\nIn07Cg== 27788\nIFRodW5kZXI= 27789\nIEtvbQ== 27790\nLlNob3VsZA== 27791\nQVVUSA== 27792\nYWh1 27793\nX3BheW1lbnQ= 27794\nIHN0YXJ0ZXI= 27795\n7ISc 27796\n7Jqp 27797\nQmxvZw== 27798\nLnBhdGNo 27799\nIGdvdmVybmVk 27800\nYXNzeQ== 27801\nLWZvdW5k 27802\nIHRoZWF0ZXI= 27803\nIEZvbnRXZWlnaHQ= 27804\nIEJhdG1hbg== 27805\nIklm 27806\nLlJhbmRvbQ== 27807\nX2RlbHRh 27808\nIENF 27809\nQXV0aGVudGljYXRlZA== 27810\nIGRyb25l 27811\nIGNvdXM= 27812\ncmFkaXVz 27813\nTWVy 27814\nKE5vbmU= 27815\nIE5K 27816\nX2hlYWRlcnM= 27817\nIGFtZXI= 27818\ncHl0ZXN0 27819\nIEFjdGlvbnM= 27820\nCQkJICAgIA== 27821\nIGV0dA== 27822\nIGhvbHk= 27823\nIHVuY29tZm9ydA== 27824\nIE5pbg== 27825\nIERlY2ltYWw= 27826\nIE1lc3NhZ2Vz 27827\nLnNlbmRlcg== 27828\nXV0pCg== 27829\nIGVtYnJhY2U= 27830\nVGhvdWdo 27831\nL3Nw 27832\nIGN1bHR1cmVz 27833\nIGhpZ2h3YXk= 27834\ndGFy 27835\nLmZhaWw= 27836\nX2hpZGRlbg== 27837\nIGNvbXBvbmVudERpZE1vdW50 27838\nIFdyaWdodA== 27839\nIGphZw== 27840\nX2ls 27841\nLi4vLi4vLi4v 27842\naWd1 27843\nRm9vZA== 27844\nIGFjZQ== 27845\nIGHDsW9z 27846\nVVNE 27847\nIG11dHVhbA== 27848\nTG9naWM= 27849\nIHRlbXBsZQ== 27850\nIGJyaWVmbHk= 27851\nIFRyaXA= 27852\nY2xhc3NtZXRob2Q= 27853\nZGVmYXVsdHM= 27854\nIGNodW5rcw== 27855\nLCwsLA== 27856\nIFJlYXNvbg== 27857\nJGlk 27858\nLXVwcw== 27859\nIGRhbW4= 27860\nIHRydWNrcw== 27861\nIHVubGltaXRlZA== 27862\nIHNjdWxwdA== 27863\nIENhcmRz 27864\nIGF1dG9y 27865\nIFRlc3Rpbmc= 27866\nIGRpZXNl 27867\nc2hvcHM= 27868\n57Q= 27869\nKHBheWxvYWQ= 27870\nIFBBVEg= 27871\nIE1lbW9yaWFs 27872\nIHJpZGljdWxvdXM= 27873\nZWdyZWU= 27874\nLXdpbm5pbmc= 27875\nIHJlaGFi 27876\nIHNvcGhpc3RpY2F0ZWQ= 27877\nd3BkYg== 27878\nCXBhdGg= 27879\nISI7Cg== 27880\nX1NZUw== 27881\nLnNwZWVk 27882\nIHNvYXA= 27883\nc3VmZml4 27884\nV3JhcA== 27885\nIGVuaGFuY2VtZW50 27886\nw4k= 27887\nw7pi 27888\nIHBsYXlsaXN0 27889\nIG1peGluZw== 27890\nYW50aWRhZA== 27891\nPSIiOwo= 27892\nIFJldmlzaW9u 27893\nIEJlYXQ= 27894\nLmluYw== 27895\nLXdheQ== 27896\nZW5jaWFz 27897\ndWxlcnM= 27898\nQ2F0 27899\naWRlbA== 27900\nIFNoaXA= 27901\nLnNldENvbG9y 27902\nIHRocmVhdGVuaW5n 27903\nLm1vZHVsZXM= 27904\nIGFmdGVyd2FyZHM= 27905\nIERhc2hib2FyZA== 27906\nCiAK 27907\nU2lnbmFs 27908\nIHByaW1lcg== 27909\nb3JuZXlz 27910\naWNpYXJ5 27911\nIGxpZ25l 27912\nX3ByZWRpY3Q= 27913\nIGFlc3Q= 27914\nX2h0dHBz 27915\nPjo= 27916\nIExleA== 27917\nIHJlbmNvbnRyZXM= 27918\nZWdyYWw= 27919\nc2NhbGE= 27920\nX2ZhbWlseQ== 27921\nw59lbg== 27922\nX3N5bQ== 27923\nIHVuY2VydGFpbnR5 27924\nIFZBTFVF 27925\nIH07DQoNCg== 27926\nIGJyb2FkZXI= 27927\nIGhvcnNlcw== 27928\n44Gd 27929\nIEthbA== 27930\nb2Jh 27931\nX0lORVQ= 27932\nIEtpbGw= 27933\nanF1ZXJ5 27934\nYW1pbmF0aW9u 27935\nW0Ai 27936\nIG11ag== 27937\nIyMjCg== 27938\nRmlyc3RPckRlZmF1bHQ= 27939\ndGhlblJldHVybg== 27940\nQ2hl 27941\nL2Zvb3Rlcg== 27942\nIHBhcmtz 27943\nYXNqZQ== 27944\nIEd1bGY= 27945\nIG1vZGVzdA== 27946\nLkluaXQ= 27947\n77yfCgo= 27948\nIHByb3NwZWN0cw== 27949\nIHN2Zw== 27950\nIOWP 27951\nLkRpYWxvZw== 27952\nX05FVA== 27953\nICgoJA== 27954\nIGVr 27955\nIFdhcm5pbmc= 27956\nIE1L 27957\nPExN 27958\nICcNCg== 27959\naWVt 27960\naGV0aWM= 27961\nIGl4 27962\ndGhpbms= 27963\nLXNoYWRvdw== 27964\nIEVsZA== 27965\nIE5ldmFkYQ== 27966\nIExlYWY= 27967\nIEdST1VQ 27968\nIHByb21v 27969\nZW50aW5l 27970\nCU1hcA== 27971\nIE1vZGVscw== 27972\nIEtyaXN0 27973\nX2tlcm5lbA== 27974\nLW1hZGU= 27975\nIGNlcnI= 27976\nQXNzZXRz 27977\nZWxsYXI= 27978\nIGludm9rZWQ= 27979\nLnZ1ZQ== 27980\nIGN1bHRpdg== 27981\nQ2xvc2Vk 27982\nIGdlbmVyYXRlcw== 27983\nZmZmZmZm 27984\ndGhlc2l6ZQ== 27985\nc3FydA== 27986\nIENhc3RsZQ== 27987\nLmNhcg== 27988\nIGtlZW4= 27989\ndW5kYQ== 27990\nIENyb3c= 27991\nIFNpbmdo 27992\neXRob24= 27993\nIGJlYW5z 27994\nbGFyZw== 27995\n5paH5Lu2 27996\nQXdlc29tZQ== 27997\ndW5jYXRl 27998\nUGF0aHM= 27999\nb2pp 28000\nKGN1cnI= 28001\nQ09ORFM= 28002\nIG1pbQ== 28003\nIHNob3VsZGVycw== 28004\nSGFyZA== 28005\nYXN0ZXM= 28006\n0LDQtdGC 28007\nIGNvbnZpbmNl 28008\nZGVjZXNz 28009\nbWFkZQ== 28010\nIENNRA== 28011\nLklt 28012\nIGNoYW9z 28013\nZW5zaXZlbHk= 28014\nIGNvb2xpbmc= 28015\nIGJ1cmllZA== 28016\nKCdA 28017\nX1Nl 28018\nCQkJCQkJCQkJCQkJCQkJCQ== 28019\nLmNvbXBhbnk= 28020\nLnN1Ym1pdA== 28021\ncGhhbnQ= 28022\nIGJvb3RzdHJhcA== 28023\nX2hlbHA= 28024\n4Kc= 28025\nLmR1bXA= 28026\nIGRpZmVy 28027\nX21hcHBpbmc= 28028\nIGNpcmN1bGFy 28029\nIGVzY29ydHM= 28030\nIGJlcmU= 28031\nIGdyYWR1 28032\nIExlZ2VuZA== 28033\naW1lZGlh 28034\nIEJhcmNlbG9uYQ== 28035\nIGJlZHM= 28036\n5Yiw 28037\n44CK 28038\nX3ZvbHVtZQ== 28039\nIHRyZW1lbmRvdXM= 28040\nIHNjYWxpbmc= 28041\nIHBpbnM= 28042\nZW5hcw== 28043\ndHlwZXBhcmFt 28044\nRGFzaGJvYXJk 28045\ncmVuZGVyZXI= 28046\nIHNwaQ== 28047\nICYk 28048\nIFNraW4= 28049\nYWxtYXJ0 28050\nIGhvY2tleQ== 28051\nICciLiQ= 28052\nIGVycm5v 28053\nIGJldw== 28054\nRm9sbG93aW5n 28055\nLk1vZHVsZQ== 28056\nZXJhYmxl 28057\nIE1pbGl0YXJ5 28058\nIFJpbw== 28059\nX2F2YWlsYWJsZQ== 28060\nIFN1cmZhY2U= 28061\nIHN0YWI= 28062\nSUZJRVI= 28063\nIExJU1Q= 28064\nIGRhc2hib2FyZA== 28065\nIGNsdXN0ZXJz 28066\nLnBsdWdpbg== 28067\nIGpvdQ== 28068\nIERlY29y 28069\nRm91cg== 28070\nIGRlbGxl 28071\nKioqKioqLwo= 28072\naWF6 28073\naW5kZQ== 28074\nY2hpbmc= 28075\nIGdldEl0ZW0= 28076\nLkFkZHJlc3M= 28077\nbWVudGVk 28078\nQW1lcmlj 28079\nUGxhaW4= 28080\nIHVzYg== 28081\nIFByYWN0aWNl 28082\nX21lbnQ= 28083\nLmJsdWU= 28084\nSGludA== 28085\n0YDQsNCy 28086\nIGNvbm5lY3Rvcg== 28087\nIGluaGVyaXRlZA== 28088\n0LjQsg== 28089\nIGludGVydmFscw== 28090\nIGNlcmU= 28091\nIHVk 28092\nIGluY29u 28093\nLkV4aXN0cw== 28094\nIE1pYw== 28095\nRks= 28096\nKGNhcmQ= 28097\nLlNldHRpbmdz 28098\nIGV4aGliaXRpb24= 28099\nIG9uUHJlc3NlZA== 28100\nIHJlc3RvcmVk 28101\nZW5ndQ== 28102\nLmRlZg== 28103\nIHJlY3Y= 28104\nLiIpOw0K 28105\nZW5jb2Rlcg== 28106\nYXRoZXJpbmU= 28107\nKGRlc3Q= 28108\nYXplZA== 28109\nI2VuZHJlZ2lvbg== 28110\nc2VtYmw= 28111\nLE0= 28112\nb2J5 28113\nINC/0LXRgA== 28114\nLkNhbGw= 28115\nIGF0dGVuZGFuY2U= 28116\nLWJvcmRlcg== 28117\nIGFkZHJlc3Npbmc= 28118\nw6pu 28119\nIExldg== 28120\nIGJhc2g= 28121\nYmVuY2g= 28122\nQ3JlZGVudGlhbHM= 28123\nU3BhY2luZw== 28124\nKG9m 28125\nX1JFU0VU 28126\naWd1b3Vz 28127\nIGNydWVs 28128\nIGNyb3NzZWQ= 28129\nIGxldXI= 28130\nIEdvbGY= 28131\nb3JyZWN0 28132\nIHBhY2tldHM= 28133\nIERhdGFTZXQ= 28134\nIHBhcnRseQ== 28135\nU0VRVUVOVElBTA== 28136\nIGluZGljYXRpb24= 28137\nIFNhbHQ= 28138\nYWNpYQ== 28139\nICopOwo= 28140\nCWluZm8= 28141\nIFZpZXdCYWc= 28142\nb256 28143\nIGVkaXRvcmlhbA== 28144\nIEFyZW5h 28145\nIHNpcg== 28146\nX1N0YXRpYw== 28147\nKHNvY2tldA== 28148\nc3U= 28149\nY2hvb3Nl 28150\nLm1vbnRo 28151\nLk15 28152\nMDk2 28153\nw6lyaQ== 28154\nO2ZvbnQ= 28155\nZG9lcw== 28156\nIGNvbnZlcnRlcg== 28157\nIHNhbHY= 28158\nIGxy 28159\nIGluZmx1ZW5jZWQ= 28160\nKGZlYXR1cmU= 28161\nIFF1ZWVucw== 28162\nbGV0dA== 28163\nX01PTg== 28164\nJmFtcA== 28165\nVG91Y2hhYmxlT3BhY2l0eQ== 28166\nT0ZG 28167\nIG1ldGFib2w= 28168\nKGl0ZXI= 28169\nIHZpdGFtaW4= 28170\nIElORElSRUNU 28171\nYXV0b20= 28172\nX3B1YmxpYw== 28173\nIGFkanVzdG1lbnQ= 28174\nIHNwZWNpYWxpemVk 28175\nd2luZG93cw== 28176\nLmFkZEFsbA== 28177\nIGFjY29yZGluZ2x5 28178\nIEpPcHRpb25QYW5l 28179\nIGNlbGxzcGFjaW5n 28180\nIHF1YWQ= 28181\nIGNyZWVw 28182\nIG91dGxldHM= 28183\nfWApCg== 28184\nIHByaWVzdA== 28185\nX1RIUkVBRA== 28186\nIE1hcng= 28187\nIEJ5VmFs 28188\nIGN1YWw= 28189\n6Z2i 28190\nIHRlbXBvcmFyaWx5 28191\nQW5u 28192\na2VsZXRvbg== 28193\n5aU= 28194\nIExPQw== 28195\nYXVlcg== 28196\nZGVyaXZl 28197\nIGJlaGF2aW9ycw== 28198\nYXNlbmFtZQ== 28199\nIENlbnR1cnk= 28200\nIGhvcnJpYmxl 28201\nTUVTUw== 28202\nX0xpc3Q= 28203\nd2Vp 28204\nUGF0 28205\nIENob2ljZQ== 28206\nX0ZST00= 28207\nCWxpbmU= 28208\nLmludm9rZQ== 28209\nLkJvdHRvbQ== 28210\nIG5vd2hlcmU= 28211\nLiIKCgoK 28212\nX2V4cG9ydA== 28213\nIHN0cnVnZ2xlZA== 28214\nLkFwcGVhcmFuY2U= 28215\nIEpCdXR0b24= 28216\nIEplcmVteQ== 28217\nKFtb 28218\nIGtpY2tlZA== 28219\nbWFyc2hhbA== 28220\nc3RhZmY= 28221\nZXNpdHk= 28222\nIHF1aXo= 28223\nX2VmZmVjdA== 28224\nIH0pKTsKCg== 28225\nbWVs 28226\nYmFubmVy 28227\nIFBJTg== 28228\nIGludmVudGlvbg== 28229\nIGNvbnNvbGlk 28230\nIG9wcw== 28231\nIEJldHdlZW4= 28232\namFjaw== 28233\nZXJuYXRpb25hbA== 28234\nIHNhY3JpZmljZQ== 28235\nYWdhdGlvbg== 28236\nIEpveQ== 28237\nIGFtZW5kbWVudA== 28238\nIFNvbGQ= 28239\nIHByaXNvbmVycw== 28240\n0LDQvdC90Ys= 28241\nRG9jdW1lbnRz 28242\nKV0pCg== 28243\ndXN0ZWQ= 28244\nIExpbmVhckxheW91dA== 28245\nb3Nv 28246\nX0VN 28247\nLnNlbGY= 28248\nLk1pZGRsZQ== 28249\nKS8v 28250\nIFwn 28251\nIGZ1Y2tlZA== 28252\nIE11cnJheQ== 28253\nIHByb2ZvdW5k 28254\nX0VMRU1FTlQ= 28255\ndWx0YQ== 28256\naWxlcnM= 28257\ncG9ydGZvbGlv 28258\nSnVuZQ== 28259\ndGNw 28260\nbW9kaWZpZWQ= 28261\nIFRyYWNl 28262\nIEtlbA== 28263\nYWx5emVy 28264\nKT0+ 28265\nIFJlcGFpcg== 28266\nX0JF 28267\nQnJhbmQ= 28268\ndWFydA== 28269\ncHJldmlldw== 28270\nIGluaXRpYXRpdmVz 28271\ncnVubmluZw== 28272\nYmFuZw== 28273\nCXVwZGF0ZQ== 28274\nIENvYWNo 28275\nUmljaA== 28276\nIHlvdXR1YmU= 28277\nIHJpdHVhbA== 28278\nYXBwYQ== 28279\nIFJvYmluc29u 28280\ncHJlY2lzaW9u 28281\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== 28282\nPVtdCg== 28283\nIGNlbGVicmF0ZWQ= 28284\nT1RP 28285\nIGluY2x1c2lvbg== 28286\nSlA= 28287\nJzsNCg0K 28288\nIG5vdGFibGU= 28289\nKF8u 28290\nTWFuYWdlZA== 28291\nIGd1aWRlcw== 28292\nJm5ic3A= 28293\nYXRlZFJvdXRl 28294\nIEFkanVzdA== 28295\nIGNvbG9yZWQ= 28296\nX3Njb3Jlcw== 28297\nIFRlc2xh 28298\nX3Byb2dyZXNz 28299\nLmluc3Q= 28300\nWydf 28301\nLmZsYWdz 28302\nIGZjbG9zZQ== 28303\nX09QRVI= 28304\nxbx5 28305\nX25vdGU= 28306\nIHRyYW5zZ2VuZGVy 28307\n5ZU= 28308\nUklQVA== 28309\nIGFic2VudA== 28310\nIGFtZXQ= 28311\nIG9wZXJhbmQ= 28312\n66k= 28313\nIGhvb2Q= 28314\ndG9Mb3dlckNhc2U= 28315\nYXZv 28316\nIENpcmN1aXQ= 28317\nIExpbmQ= 28318\nLS19fQo= 28319\nPW0= 28320\nIHN1cHByZXNz 28321\nIE1BUA== 28322\naWFuZw== 28323\nLWFkbWlu 28324\nIHNpZGViYXI= 28325\nIEJ1 28326\nIEhleA== 28327\nLEY= 28328\nIFNpZ25hbA== 28329\nIHRyYW5zcGFyZW5jeQ== 28330\nIEZlZGVyYXRpb24= 28331\nL1Y= 28332\nUmVx 28333\nIHB1bHNl 28334\nIHRlbmRz 28335\nTnVtYmVycw== 28336\nJSc= 28337\nIGRlcG9ydA== 28338\nZGF0YXM= 28339\nX1VJTlQ= 28340\nX3RyYQ== 28341\nb2tv 28342\nICI/ 28343\nY29tcGV0 28344\nc29sZXRl 28345\ndW5kcnk= 28346\nIG92ZXJsYXA= 28347\nfWAsCg== 28348\nLmx5 28349\nX3N1bW1hcnk= 28350\nIExvc3Q= 28351\nLkNlbnRlcg== 28352\nIGRpc2FiaWxpdHk= 28353\nLlNlcmlhbGl6YXRpb24= 28354\nIGdlb20= 28355\nID86 28356\nIFdv 28357\nIHNoaXBwZWQ= 28358\nguaVsA== 28359\nIHVnbHk= 28360\nIGV4Y2l0ZW1lbnQ= 28361\nIGV4dGVyaW9y 28362\nIGNoZWNrb3V0 28363\nIGt1cg== 28364\nLEQ= 28365\nIEFsYXNrYQ== 28366\nIHN5bnRoZXRpYw== 28367\nIEJ1ZGdldA== 28368\nIFN1YnNjcmliZQ== 28369\nICYK 28370\nyJlp 28371\nIFl1 28372\nCXF1ZXJ5 28373\nfS4K 28374\nIHRyYWdlZA== 28375\nYXNzZW4= 28376\nIGFjY29tbW9kYXRpb24= 28377\nIHBoeXNpY2lhbg== 28378\nIHJlbmFtZWQ= 28379\nIHRpZGFr 28380\nesSF 28381\nIG1pbnVz 28382\nbnljaA== 28383\nMDk3 28384\nX0VYQ0VQVElPTg== 28385\ndGhyZWFkcw== 28386\nIHRpcmU= 28387\nX2NyZWF0ZWQ= 28388\nZW5zdXJl 28389\nIHdvcnRoeQ== 28390\nIGV4Y3VzZQ== 28391\nIGNsb3Ro 28392\nLnBhcmVudE5vZGU= 28393\nL3BsYXRmb3Jt 28394\nIFVGQw== 28395\nIEd0aw== 28396\ndW5ueQ== 28397\nIGdpYnQ= 28398\na2VsZXk= 28399\naHVt 28400\nKHR4 28401\nCWRldg== 28402\nIG91dGZpdA== 28403\nZG9vcnM= 28404\nIGZvbg== 28405\naWN1dA== 28406\ndm9sYXRpbGU= 28407\nIGhvbW9zZXg= 28408\nTWF4aW11bQ== 28409\nIGV4cGVuZA== 28410\nIH0pOwoKCg== 28411\nRXE= 28412\nb25kZXJz 28413\nZGVwYXJ0bWVudA== 28414\nIFBoeXNpY3M= 28415\nIn0pOwo= 28416\nIHBhcmFk 28417\nLlN0cg== 28418\nIHNlbGU= 28419\nSUZJRUQ= 28420\nIGRlbGl2ZXJz 28421\naXZhbg== 28422\nIHJlc3BvbnNpYmlsaXRpZXM= 28423\nIGFkdm9jYXRlcw== 28424\n6LU= 28425\nIFJJRA== 28426\nLnBhcmFtZXRlcnM= 28427\nTWV0cmljcw== 28428\ncm9uaWNz 28429\nIFVJVGFibGVWaWV3Q2VsbA== 28430\nQWJzb2x1dGU= 28431\naXBzZQ== 28432\neWx1bQ== 28433\nTUxFbGVtZW50 28434\nX1ZBTElE 28435\nPHRpdGxl 28436\nRGxn 28437\ncGFjZXM= 28438\nIHN5bmRyb21l 28439\nYmVhbnM= 28440\nX2RhdGFiYXNl 28441\nb3ppbGxh 28442\nIE1lZw== 28443\nREJH 28444\nIGx1Yg== 28445\nQmFnQ29uc3RyYWludHM= 28446\nYWJhZA== 28447\nIHByb2plY3RlZA== 28448\nX0JZVEU= 28449\nLlNpemVG 28450\nc3RyZWV0 28451\nCgoKCgoKCgoKCg== 28452\nIExPU1M= 28453\nIGRpcmVjdG9ycw== 28454\nL25ld3M= 28455\nIG51cnNpbmc= 28456\nIERvbmU= 28457\nLkhUVFA= 28458\nZGlzY291bnQ= 28459\nIFJvdA== 28460\nVG9NYW55 28461\nIGVuYWJsaW5n 28462\nIGF1c3Np 28463\nb3N0YQ== 28464\nICAgICAgICAgICAgICAgIA0K 28465\n6L29 28466\nIGhlbGljb3B0 28467\nIEluc2lkZQ== 28468\n5L+h5oGv 28469\naXNwZXI= 28470\nIEFsbGFo 28471\nQVJDSEFS 28472\nIHJvbGxz 28473\nQ29tcGFyZQ== 28474\nWFA= 28475\nSW5kZXhPZg== 28476\nU1VN 28477\nIGFzc3VyZWQ= 28478\nIFBoeXNpY2Fs 28479\nRW5kcG9pbnQ= 28480\nLkdsb2JhbA== 28481\nLmRldGFpbA== 28482\nIHRoZWZ0 28483\nLmp1cGl0ZXI= 28484\nIGh1bW9y 28485\nLlJlbmRlcg== 28486\nQWxleA== 28487\nLmNhcA== 28488\nIGJ1ZmZlcnM= 28489\nIGRpc3Bvc2U= 28490\ndGlvbg== 28491\nLnByZXNlbnQ= 28492\nemVs 28493\nLFA= 28494\nIGRlc3BlcmF0ZQ== 28495\nLmdldENvbHVtbg== 28496\nIHR3aW4= 28497\n7JY= 28498\nLmNhbg== 28499\nIGZsZWU= 28500\nIElyYW5pYW4= 28501\nIHN0aWNreQ== 28502\nIFVUQw== 28503\nTFQ= 28504\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v 28505\nIGxpY2Vuc2luZw== 28506\nX1BPSU5U 28507\nIE1hcHM= 28508\nIGxvbA== 28509\nPW1vZGVscw== 28510\nLXRhYg== 28511\nIE5hc2g= 28512\nX2xvZ2dlcg== 28513\ndG9yY2g= 28514\nIENPTlNFUVVFTlRJQUw= 28515\nTm90RW1wdHk= 28516\nL3JlYWN0 28517\nIHBm 28518\nIGFzc2VydGlvbg== 28519\nIHN1YnNlcXVlbnRseQ== 28520\nX2Nhbg== 28521\nIHBhbmRlbWlj 28522\nb2d1ZQ== 28523\nIisK 28524\nX2VudA== 28525\nX1BhcmFt 28526\nLgoKCgoKCgoK 28527\nUmVzZWFyY2g= 28528\nQ2FwdHVyZQ== 28529\nIGJlbG92ZWQ= 28530\nZGVt 28531\nIGV4dHJhY3RlZA== 28532\nIGZpZ2h0cw== 28533\nRVJD 28534\nKGF1dGg= 28535\ncG9zaXRpb25z 28536\nIHJldmVyc2Vk 28537\nKHN0YWNr 28538\nIF8p 28539\ndXRvZmY= 28540\nX2Zsb3c= 28541\n54K5 28542\nKEdhbWU= 28543\nIGV4Y2x1ZGVk 28544\nIENTVg== 28545\nY2c= 28546\nIFRpdGFu 28547\ncGF1c2U= 28548\nIGNlcmNh 28549\nIGR1bXBzdGVy 28550\nTGVzcw== 28551\nIGtvdGxpbng= 28552\nYXN0ZXJ4bWw= 28553\nIHBvaW50ZXJz 28554\nIGZsb3dz 28555\nIFR1bg== 28556\nIE1haW5BY3Rpdml0eQ== 28557\nIGRpc2NyZXQ= 28558\nIGNvbWJpbmF0aW9ucw== 28559\ndmlzaXQ= 28560\nX2JpbmQ= 28561\nb290aW5n 28562\nZGF0ZXI= 28563\nX2xvb2t1cA== 28564\nLm5pbw== 28565\nIHN3ZWF0 28566\nIFJk 28567\nIHNjaWVudGlzdA== 28568\nIFBpeGVs 28569\nQE5nTW9kdWxl 28570\nUGxheWluZw== 28571\nIHVuZm9sZA== 28572\nVHJhbnNsYXRl 28573\nIExhd3JlbmNl 28574\nIEZJWE1F 28575\nQmlsbA== 28576\nIFJJR0hU 28577\nIHdoZXJldmVy 28578\nIG9vaw== 28579\ndmlkZW5jZQ== 28580\nIF1dOw== 28581\nIFNraWxs 28582\ndW5pc3Rk 28583\nIPCfmYI= 28584\nIGZlbWFsZXM= 28585\nLS0pCg== 28586\njrflj5Y= 28587\nIEZyZWQ= 28588\nT3ZlcmFsbA== 28589\n2YI= 28590\nIGVzc2VuY2U= 28591\nIHRoZXJlYnk= 28592\nIHdvdW5kZWQ= 28593\nIERPV04= 28594\nbGVzc29u 28595\ndGV4dHVyZQ== 28596\nUm91bmQ= 28597\nIGF1dG9tYXRlZA== 28598\nINCh 28599\nIFVwZGF0ZXM= 28600\nIHNoYWRl 28601\ncHVibGlzaA== 28602\nIEdlYXI= 28603\nPWxhbWJkYQ== 28604\nIGxldmVy 28605\nKSsi 28606\naGlsbA== 28607\nIHJhZGFy 28608\ncnlpbmc= 28609\nICIpLg== 28610\nZmlsbGVk 28611\nIGxpbmV1cA== 28612\nIGRs 28613\nIHdvcmtzcGFjZQ== 28614\nVm8= 28615\nX2R0 28616\n67I= 28617\nX0l0ZW0= 28618\nTlNVUkw= 28619\nLnZlcmlmeQ== 28620\nIEhhd2FpaQ== 28621\nR29k 28622\nTWFyY2g= 28623\nIFvigKZd 28624\nIHBlbG8= 28625\ndXJpb3Vz 28626\nIFBpdHRzYnVyZ2g= 28627\nLkl0 28628\nQ2xlYW4= 28629\nPlw8Xg== 28630\nIGlvcw== 28631\nc291bmQ= 28632\nIl07 28633\nIGZyZWVk 28634\ncm90dGxl 28635\nIExvd2Vy 28636\nW2NvdW50 28637\n5Z0= 28638\nIHBhbGU= 28639\nIFdheW5l 28640\nZWFydGg= 28641\nX2NhdGVnb3JpZXM= 28642\nVUNL 28643\nLm1ldGFkYXRh 28644\nIHN1bW1vbg== 28645\nSE9NRQ== 28646\n0L7Qu9GM0Lc= 28647\nIG1hbnVmYWN0dXJlZA== 28648\nIGRvY2s= 28649\nIGNvbXBldGl0b3Jz 28650\nX01PREVM 28651\nb2tpYQ== 28652\nIEhleQ== 28653\nzr8= 28654\nIGJhY2t3YXJk 28655\nIFBPU1M= 28656\ncm9wYQ== 28657\nIGNyaQ== 28658\nX09CSg== 28659\nVHJhbnNwb3J0 28660\nLWhpZ2g= 28661\nIGVyb3Rpaw== 28662\nX3Nsb3Q= 28663\nIGFydGlj 28664\nX2ZyYW1ld29yaw== 28665\nLXNlcmlm 28666\nIFNxbERiVHlwZQ== 28667\nJyko 28668\nKyIv 28669\nIHdvcmU= 28670\nU2ls 28671\nIHN0b3Jpbmc= 28672\nIFBoYXNl 28673\ndWFudA== 28674\nIGJ1bXA= 28675\naW5obw== 28676\nIGRpZ24= 28677\nIGJhY2tz 28678\ncXE= 28679\nKGhhc2g= 28680\nIGdlbw== 28681\nIHRlbmRlcg== 28682\nTG9nbw== 28683\nISkK 28684\nIE1Y 28685\nIEFydGh1cg== 28686\nZXNzb2E= 28687\nX0No 28688\nIGJlZHJvb21z 28689\nPSIjIj48 28690\nIHRocm9hdA== 28691\naW5zaWM= 28692\nLmludGVnZXI= 28693\nIHByaW1pdGl2ZQ== 28694\nVHJ1dGh5 28695\nIGZhY2lsaXRhdGU= 28696\nIGNyZWF0aXZpdHk= 28697\nIEROUw== 28698\nIGdyYQ== 28699\ndWV6 28700\nIGNvdW50bGVzcw== 28701\nIFBvbGFuZA== 28702\nJ00= 28703\nIERpc3Q= 28704\nIHZlc3Q= 28705\nIGNlcnRpZmljYXRpb24= 28706\n4buR 28707\naGVsZA== 28708\nZXh0ZW5zaW9ucw== 28709\nKHN0YXRpYw== 28710\nIGdyYWRlcw== 28711\nIFViZXI= 28712\n44Gf 28713\nIFtdKQo= 28714\nZGF0b3M= 28715\nIGdldERhdGE= 28716\nIENoYXJn 28717\nIEJT 28718\nLm1pY3Jvc29mdA== 28719\nLnZpZGVv 28720\nLmRpcmVjdGlvbg== 28721\nLT57Jw== 28722\nbHVh 28723\nYXBlc3Q= 28724\nIGJvaWxlcg== 28725\nZXJlaw== 28726\nIGRlY2lkZXM= 28727\nLmphcg== 28728\nSVND 28729\nIFdvcmRz 28730\nKENPTg== 28731\nRU1QTEFURQ== 28732\ncmVlemU= 28733\nc2hvdHM= 28734\nYXBwcw== 28735\ndW50ZWQ= 28736\nLnNldE5hbWU= 28737\nOjo8 28738\nLWJvbGQ= 28739\n6rI= 28740\n5a+G 28741\nTG9uZ3JpZ2h0YXJyb3c= 28742\nIHVuZmFpcg== 28743\nIGVhcm5pbmc= 28744\nIHNoZWxm 28745\nVVJFTUVOVA== 28746\nIGlkbGU= 28747\nX01FTlU= 28748\nLkN1c3RvbQ== 28749\nQUdFUg== 28750\nLSI= 28751\nX3N3aXRjaA== 28752\nYmVjYXVzZQ== 28753\nKXZpZXc= 28754\nbWFyZQ== 28755\nX2NvbmRpdGlvbg== 28756\nIFN0YXJ0aW5n 28757\nTXZj 28758\nKHByZQ== 28759\nZHVtcA== 28760\nX0xPQ0s= 28761\nYXRldGltZQ== 28762\nLmNhbGxiYWNr 28763\nIENlcg== 28764\nb3BvbA== 28765\naWJyYXJ5 28766\nIHJlc2VydmF0aW9u 28767\nCQkJCQkJCQo= 28768\nbGVjdG9y 28769\nZ3JhZHVhdGU= 28770\nIGdlbmVyb3Vz 28771\nIGlvbg== 28772\ncmljYW8= 28773\nbXE= 28774\nX2NvbXBsZXRl 28775\nKGN1cnNvcg== 28776\nIEZvcm1Db250cm9s 28777\nOmNlbnRlcg== 28778\nIHN1YnN0aXR1dGU= 28779\nIFBsYW5uaW5n 28780\nIHBlbnNpb24= 28781\nIHJlY29tbWVuZGF0aW9u 28782\nIFRhZ3M= 28783\nIGdlZg== 28784\nIGFsYnVtcw== 28785\nIHdhc2hpbmc= 28786\ncm9j 28787\nIHRyYWlucw== 28788\nYXRpbmdz 28789\nIGV4cG9uZW50 28790\nYWNrYmFy 28791\nLWxu 28792\nw6Fn 28793\nLkRhdGFBbm5vdGF0aW9ucw== 28794\nIEVJRg== 28795\nIE1hbGF5c2lh 28796\nCVBPUlQ= 28797\nb251cw== 28798\nIGNsZXZlcg== 28799\nIHBldQ== 28800\nPgoKCgo= 28801\nIEFyZ3VtZW50cw== 28802\nIGRlYnVnZ2luZw== 28803\nKHJpZ2h0 28804\nJ0Q= 28805\nY29tcHV0ZQ== 28806\nIGZpbmVzdA== 28807\nT1JBR0U= 28808\nIHNwZWN0YWN1bGFy 28809\ncGhyYXNl 28810\nIGluZGlh 28811\nIGxlZ2VuZGFyeQ== 28812\nYmlydGg= 28813\nIGNvbXBvc2l0ZQ== 28814\nIGdyb3dz 28815\nIFRE 28816\nIGVwaWQ= 28817\nIGxhdW5jaGluZw== 28818\nXV1b 28819\nTWludXRlcw== 28820\nIENoYQ== 28821\nIGNsZWFuZWQ= 28822\nIHdpdG5lc3Nlcw== 28823\ndWthbg== 28824\nCVR5cGU= 28825\nIGhhYmU= 28826\ncGFyYWdyYXBo 28827\nIEpQYW5lbA== 28828\nIEhhbm4= 28829\nIHZhcmllZA== 28830\nIFBva2Vtb24= 28831\nIE1VU1Q= 28832\n5Yqo 28833\nLnZpc2liaWxpdHk= 28834\nb3B1cA== 28835\nXls= 28836\nLmV4cGFuZA== 28837\nICInLA== 28838\nLmZhc3RlcnhtbA== 28839\nX2F1dG8= 28840\nIFNoZWV0 28841\nbWFya2Vy 28842\nUGFyY2Vs 28843\nZXdz 28844\nIFN0cmF0ZWd5 28845\nLW1ha2luZw== 28846\nIHVudmU= 28847\nIHRyYWlsaW5n 28848\nIGNsaWNrcw== 28849\nIEdldENvbXBvbmVudA== 28850\nCWNvbnRlbnQ= 28851\nSUdFTkNF 28852\nRVJORUw= 28853\nTlNNdXRhYmxlQXJyYXk= 28854\nIGJyZWF0 28855\nIGhhcm1mdWw= 28856\ntog= 28857\nIGJlc2lkZXM= 28858\nIGJvcmluZw== 28859\nIGJydXRhbA== 28860\ndmFuZw== 28861\nKHBhcnNl 28862\ncXVpY2s= 28863\nIHB5dGVzdA== 28864\nIHN3aXRjaGluZw== 28865\nKCldCg== 28866\nIOyE 28867\nTEVS 28868\nCWZvbnQ= 28869\nIG5ldHQ= 28870\nKV0KCg== 28871\nKC9c 28872\n5p6c 28873\ndG9BcnJheQ== 28874\nIGJyZWVk 28875\nIENBUg== 28876\nIFdlYXBvbg== 28877\nQWJz 28878\ndG90 28879\nIHNldE5hbWU= 28880\nYXB0aXZl 28881\nIDos 28882\nIGVzY2FwZWQ= 28883\nb3JkZW4= 28884\nIFByaQ== 28885\ndGh1bWJuYWls 28886\nIGRlc2NyaXB0aW9ucw== 28887\nL3N0eWxlcw== 28888\nIFBDSQ== 28889\nIGFscGhhYmV0 28890\nYXN0aWNzZWFyY2g= 28891\nTk9URQ== 28892\nIGNpYWxpcw== 28893\nIEdyaWZm 28894\nIHBvcnF1ZQ== 28895\nIHByb3RlaW5z 28896\ncGxheXM= 28897\nIHN0YXRpbmc= 28898\nIGltYWdpbmF0aW9u 28899\nIGZhY2lhbA== 28900\nIE1lY2hhbg== 28901\nIGFycmFuZ2Vk 28902\nX3VzZWQ= 28903\nIGFycmFuZ2VtZW50cw== 28904\nIFBpcGU= 28905\naG9zdG5hbWU= 28906\nIHByb3ZpbmM= 28907\nVGl0 28908\nLkZsYXRTdHlsZQ== 28909\nIFNwbGl0 28910\nIExvYWRlcg== 28911\nLmNj 28912\nIGNsaW5pYw== 28913\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 28914\nIGJha2luZw== 28915\nIEVOVA== 28916\nbmVhdGg= 28917\n44CBCgo= 28918\nQU5F 28919\nLkVudGl0eUZyYW1ld29ya0NvcmU= 28920\nYXBwZXJz 28921\nLmlj 28922\nIE5nTW9kdWxl 28923\nIEZPUk0= 28924\nICc7 28925\nLXByb2ZpdA== 28926\naHc= 28927\nZW5lbXk= 28928\nIEV5ZQ== 28929\nIGNhdXRpb24= 28930\ndG93bg== 28931\nIHVyZ2Vk 28932\nIEppbW15 28933\neW5jaHJvbm91cw== 28934\nLXNpemVk 28935\nbWFraW5n 28936\nLHs= 28937\nXScs 28938\nX09iamVjdA== 28939\nYWhvbWE= 28940\nIGFjdGl2aXN0 28941\nSU5WQUw= 28942\nIENvbW1lcmNpYWw= 28943\nIE9ybGFuZG8= 28944\nKHRhYg== 28945\nINio 28946\nQWxnb3JpdGht 28947\nIGhlcml0YWdl 28948\nR2V0TWFwcGluZw== 28949\nIGZhaWx1cmVz 28950\ncmlvcw== 28951\nYXRpdmE= 28952\nIHRldA== 28953\nIGNhcnBldA== 28954\nKFo= 28955\ndGhyZWU= 28956\nIGRpc2Nsb3N1cmU= 28957\nLkVSUk9S 28958\nX2NhbGxlZA== 28959\nIGRpYWw= 28960\nIG9jY2FzaW9uYWw= 28961\nLkVycg== 28962\nIGZ1bmNpb24= 28963\nY2FmZm9sZA== 28964\nIHJlbGVhc2luZw== 28965\n77yJCgo= 28966\nX1ZhbHVl 28967\nIFZhcmk= 28968\neWVsbG93 28969\nIHN0cnVnZ2xlcw== 28970\nLmNhbA== 28971\nIERha290YQ== 28972\nCWNsb3Nl 28973\nIHNhbmR3aWNo 28974\nIGFuYWx5dGljcw== 28975\nICoqKQ== 28976\nJiM= 28977\nIEpvcw== 28978\nIHBhc3NpdmU= 28979\nQVRUUg== 28980\nVGhyb3dhYmxl 28981\nIE11bg== 28982\nIFVpbnQ= 28983\nKGRpc3Bvc2luZw== 28984\nYXJhaw== 28985\nIExlYWRlcnM= 28986\nIGFmZmVjdGluZw== 28987\nIGl0ZW1WaWV3 28988\nIGVjb25vbWljcw== 28989\nZnY= 28990\n4LmA 28991\nLnJi 28992\nIE92ZXJhbGw= 28993\nIHdlYWx0aHk= 28994\nIGV2b2x2ZWQ= 28995\nbmRh 28996\nIEh1cw== 28997\ncmVzdHJpY3Q= 28998\ndW1lbg== 28999\nIEFncmljdWx0 29000\nIQoKCg== 29001\nIGV4cGlyZXM= 29002\nIHNwb2tlc3BlcnNvbg== 29003\naW50ZXJ2YWw= 29004\nIMOi 29005\nIHF1ZWVu 29006\nKG5pbA== 29007\naW5nbw== 29008\nSGVhcA== 29009\n2Y4= 29010\nIGNvbXBsYWlu 29011\nU3lt 29012\nIENsb25l 29013\nIFJ1 29014\nIFdJTEw= 29015\nIENyeXN0YWw= 29016\nL2NvbnRlbnQ= 29017\naW5nZW4= 29018\nb2ludG1lbnQ= 29019\nTGFzdE5hbWU= 29020\nYXZpY29u 29021\nIElCTQ== 29022\nIERpbWVuc2lvbg== 29023\nYW5o 29024\naWNpcGFudHM= 29025\nIEFubmU= 29026\nLnByb2dyZXNz 29027\nIGFsZ28= 29028\nb2JpbA== 29029\nIFZvaWNl 29030\nIEZF 29031\nIGdsaQ== 29032\nIHZlZA== 29033\nIHByZXZlbnRz 29034\nXENvbHVtbg== 29035\nIGZvbGs= 29036\nZXR0aQ== 29037\nIG1u 29038\nIENMQVNT 29039\nIGRpc3BsYXlpbmc= 29040\nIEts 29041\nIEZlcnI= 29042\nZHV0bw== 29043\nLmli 29044\nIGRhZG9z 29045\nJ25hbWU= 29046\nLXNwYWNl 29047\nIGl0YWxpYW4= 29048\nIGludmVyc2U= 29049\nIGRlbnNl 29050\ndXRlcg== 29051\nIElFbnVtZXJhdG9y 29052\nLXNpZ24= 29053\nIG5hdGlvbndpZGU= 29054\nIHBlcnNvbmE= 29055\nIHNvbHZlZA== 29056\nIGRyYW1hdGljYWxseQ== 29057\nTG9nb3V0 29058\nIGdyYXY= 29059\nIGFuYWx5c2Vz 29060\nb2xsbw== 29061\nIGxhbXA= 29062\nLnRlYW0= 29063\nIEVyb3Q= 29064\nPVsi 29065\nIGRhbmNpbmc= 29066\nID8+Lw== 29067\nIGNhdGVy 29068\nZmZl 29069\nIFNoYQ== 29070\nIEJvcw== 29071\nIFJFUVVJUkU= 29072\nIE1vbnN0ZXI= 29073\nIFJC 29074\nIElERQ== 29075\nIHN1aXRz 29076\nIGZvcm1EYXRh 29077\nKHRoZXRh 29078\nIHNwYXRpYWw= 29079\nPU5VTEw= 29080\nIFNxbENvbm5lY3Rpb24= 29081\nIOA= 29082\nIFZlbmV6 29083\nIE1vcm5pbmc= 29084\nIHB1YmxpY2F0aW9ucw== 29085\nIE5PTklORlJJTkdFTUVOVA== 29086\nZmlyc3ROYW1l 29087\ndWRz 29088\nV291bGQ= 29089\nX0hFQUQ= 29090\nIGludmVzdGVk 29091\nc3RhYmxl 29092\nZnJlZA== 29093\nIGNvbW1hbmRlcg== 29094\nU0VT 29095\n4oCUYQ== 29096\nYW5jaGU= 29097\nIE1vdmVtZW50 29098\n67M= 29099\nU3VpdGU= 29100\nIGp1cmlzZGljdGlvbg== 29101\n66as 29102\nIEJldGg= 29103\nalF1ZXJ5 29104\nIElzYQ== 29105\nIGRlbnRhbA== 29106\nLCo= 29107\nIExpbWl0 29108\naWxpYXRpb24= 29109\nPSJ7 29110\nYmFzdA== 29111\nIHR1cmI= 29112\naXN5 29113\nT09L 29114\nIGFkdm9jYXRl 29115\naW1hZw== 29116\nTEVDVElPTg== 29117\n0LvRjA== 29118\nKGNhdGVnb3J5 29119\nLmRlYw== 29120\nIHVuaXF1 29121\nX3Nu 29122\nIGF0dHJhY3RlZA== 29123\nIMOJ 29124\nIFJ1bm5pbmc= 29125\nX2VkZ2Vz 29126\nIERpc2FibGU= 29127\nX0FT 29128\n5Zu+ 29129\nIG5ldHdvcmtpbmc= 29130\nX2JyYW5jaA== 29131\nSGF2aW5n 29132\ndG9CZVRydXRoeQ== 29133\nR0k= 29134\nIGNhbXBz 29135\nc2Vw 29136\nLXBhcnQ= 29137\nICkKCgoKCgoKCg== 29138\ndXN0cmFsaWE= 29139\nIFJlcG9ydHM= 29140\ncml0bw== 29141\nIHdhaXN0 29142\nX3BsdXM= 29143\nIFdX 29144\nLXBlcnNvbg== 29145\nQXByaWw= 29146\nIHNhcg== 29147\nLnRhcg== 29148\nIGFncmljdWx0dXJhbA== 29149\ndGlj 29150\nIHRjcA== 29151\nIHNldFZhbHVl 29152\nYWdlbnRv 29153\nIEFwcGU= 29154\ncGlsZXI= 29155\nQ0FERQ== 29156\nIGFuY2hl 29157\nYXRjaGVy 29158\nIGNvbWljcw== 29159\nIGxicw== 29160\nX3NlZ21lbnQ= 29161\nJ109JA== 29162\naXR0ZXJz 29163\naWNoZXI= 29164\nR0lORQ== 29165\nIHV0aWxpemU= 29166\nIEN1cnNvcg== 29167\nX2V4cHJlc3Npb24= 29168\nIGRhZw== 29169\nPGxvbmc= 29170\nIHJoeXRo 29171\n5o+Q 29172\nIGNvbnN1bHRhdGlvbg== 29173\nWWV0 29174\nIikpCgo= 29175\nX01BQw== 29176\nY291bGQ= 29177\nICdcXA== 29178\nIFZv 29179\nCWh0dHA= 29180\nIGdz 29181\ncGhlcg== 29182\nLWdyaWQ= 29183\nSmFtZXM= 29184\nSnVs 29185\nIHNjaG9u 29186\nIHRlbnNvcmZsb3c= 29187\nIExPR0dFUg== 29188\nYW1hcw== 29189\nIHNjaXB5 29190\nIGNvbnZpY3Rpb24= 29191\nLmFn 29192\nIGFkbWluaXN0cmF0b3I= 29193\nKSl7DQo= 29194\nIG51bg== 29195\nImdyb3Vw 29196\nUG9y 29197\nIG51cnNl 29198\nZXhwcmVzc2lvbg== 29199\nYWt5 29200\nIEhlYXZ5 29201\nLm9wdA== 29202\nLmdldEFsbA== 29203\nIG92ZXJs 29204\nLyIs 29205\nX2NvdW50cnk= 29206\n544= 29207\nIEdFTkVS 29208\nX3JvdXRl 29209\nIERhbA== 29210\nwrQ= 29211\nb2xvYWQ= 29212\nIHVuY29tZm9ydGFibGU= 29213\nKG1lbnU= 29214\nIGhvc3RuYW1l 29215\nJyIpOwo= 29216\nIGNhbGN1bGF0aW9ucw== 29217\nLWNsaWNr 29218\nIHByb3RlY3RpdmU= 29219\n44Kv 29220\nX0Zvcm0= 29221\ndW5ncw== 29222\nQWN0dWFs 29223\nbWY= 29224\nIFByb2Nlc3Npbmc= 29225\nIEludmVudG9yeQ== 29226\nKG1hdHJpeA== 29227\nYXBwcm9wcmlhdGU= 29228\nd2Vn 29229\naWph 29230\nIGNocg== 29231\nIHJpZmxl 29232\nLXdzag== 29233\na2Fy 29234\nIGluZGVwZW5kZW50bHk= 29235\nSU9T 29236\nIGNvbnNpc3RlbmN5 29237\ndm4= 29238\nL3N5c3RlbQ== 29239\nIENoYW5nZXM= 29240\nIGV4cG9zZQ== 29241\naWNpZW50cw== 29242\nIHJlbGF0ZQ== 29243\nCW5leHQ= 29244\n6Kg= 29245\ndWRlcw== 29246\nIGdsYXNzZXM= 29247\nRlhNTA== 29248\nLi4uLi4u 29249\nIFBkZg== 29250\nIGFwcHJvdmU= 29251\nIHtc 29252\nIGV4aXN0ZQ== 29253\nKSko 29254\nQVJFTlQ= 29255\n0L7Qvw== 29256\nIExhdGVzdA== 29257\nIE5pZ2VyaWE= 29258\nLkludGVyZmFjZXM= 29259\nIHJlbW92ZXM= 29260\nRW5lbXk= 29261\nIGVuZm9yY2U= 29262\ndmVydHM= 29263\nCXBvcw== 29264\nX3RleHR1cmU= 29265\nV0FSRA== 29266\nIElOQ0lERU5U 29267\nKGNvbnRhaW5lcg== 29268\nIGRlZmVuZGluZw== 29269\nIFJY 29270\nIEhvb2s= 29271\nYnJpcw== 29272\nIEZsYXNr 29273\nR3JheQ== 29274\nLikK 29275\ndmlzaWJpbGl0eQ== 29276\nIFJlZGlyZWN0VG9BY3Rpb24= 29277\nZXJyYWw= 29278\nX2VsZW0= 29279\nIHJlc29u 29280\nZnJvbnRlbmQ= 29281\nX3ZhcmlhYmxlcw== 29282\nYXRlcmlh 29283\nICsi 29284\nYXZlbGVk 29285\nUklY 29286\nIGRlZmljaXQ= 29287\nX0NoZWNr 29288\nWVlZWQ== 29289\nVG9PbmU= 29290\nc3B5 29291\nIHVuaXRlZA== 29292\nZW5kZW50 29293\nIHBvZGU= 29294\n44GM 29295\nQ0FU 29296\nKGZtdA== 29297\nIEJvbnVz 29298\nIHJlY2s= 29299\nwro= 29300\nTW9kdWxlcw== 29301\nIHZhY3V1bQ== 29302\nUmFkaW8= 29303\nIERBTUFHRQ== 29304\nUGVu 29305\nIFBhcmtlcg== 29306\nOzsK 29307\nIFJlYWxseQ== 29308\nX25lZw== 29309\ncGVuZGluZw== 29310\nIG5vbWluZWU= 29311\nIENhdGVnb3JpZXM= 29312\nIFVsdHJh 29313\nV2VhcG9u 29314\nIGRlZmVuZGVy 29315\nSXNz 29316\nIEdlbmRlcg== 29317\nIERyZXNz 29318\nIGltcHJpc29u 29319\nIGJhbmtydXB0 29320\naW1lbnNpb25hbA== 29321\nUEhB 29322\nIFN0cmF0ZWc= 29323\nIFBST0ZJVFM= 29324\nIHBhdHJp 29325\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 29326\nZGVsZWdhdGU= 29327\nIGZvclN0YXRl 29328\nIGRldm90ZWQ= 29329\nX21ha2U= 29330\nIHRlcnJvcmlzdHM= 29331\nIFNuYXA= 29332\nX25hdg== 29333\nIEFB 29334\nIElhbg== 29335\nCWFwcA== 29336\nUGxhY2VtZW50 29337\nX2hkcg== 29338\nPEs= 29339\nIHNhbmc= 29340\nc3Ryb2tl 29341\nLVE= 29342\nPjw/PQ== 29343\nLW1vZGVs 29344\nYXZhbmE= 29345\nIFdhbmc= 29346\nICAgICAgICAgICAgIAo= 29347\nCWluaXQ= 29348\nIGVudHJlcHJlbmV1cg== 29349\nYXRpdm8= 29350\nTG92ZQ== 29351\nLW92ZXI= 29352\nV2F0ZXI= 29353\nIG1vZHM= 29354\nZ2VuY2U= 29355\nVGVjaG4= 29356\nPng= 29357\nLlRhc2s= 29358\nbW9uZXk= 29359\naWJhYmE= 29360\nJ30pOwo= 29361\nIFNwZWNpZmlj 29362\nIExpbmVhcg== 29363\nX09QVA== 29364\nSGFzaENvZGU= 29365\nKFBsYXllcg== 29366\nLkNvbnRhaW5zS2V5 29367\nIGNvbGxhcHNlZA== 29368\ndHJhbnNwYXJlbnQ= 29369\nX1JBTkdF 29370\nVmlld2Vy 29371\nKGNmZw== 29372\nIHNvcnRpbmc= 29373\nIGluZmVjdGVk 29374\nIE5hY2g= 29375\nIGFjY29tbW9kYXRl 29376\nLmVsZW1lbnRz 29377\nX1BBUlQ= 29378\nIFNleHk= 29379\nPWdldA== 29380\nKHllYXI= 29381\nIHhocg== 29382\nOl0= 29383\nb3dza2k= 29384\nIHN1bW1hcg== 29385\nIMK/ 29386\nIGludGU= 29387\nIHdvcmtmbG93 29388\nIFRhaXdhbg== 29389\ndmVyc2lvbnM= 29390\n5Y+R 29391\nIHN1cnByaXNpbmdseQ== 29392\nIG9wdGljYWw= 29393\nIHByb2Nlcw== 29394\nIGRpc2FncmVl 29395\nIG51ZXZv 29396\nIENBTQ== 29397\nc29ydGVk 29398\nbGVhc2Vz 29399\naXN0bGU= 29400\nSWRlbnQ= 29401\nCWV2ZW50 29402\namVjdGVk 29403\nQ2h1bms= 29404\nVmFycw== 29405\nLnByb3ZpZGVy 29406\nIHByb2NlZWRpbmdz 29407\nIGluY2x1c2l2ZQ== 29408\nIGFydHdvcms= 29409\nZW5kYW50cw== 29410\n77yaCg== 29411\nc2Vlbg== 29412\nIGxpZw== 29413\nIG1ha2Vycw== 29414\nX2Z1bg== 29415\nIGxlbmd0aHM= 29416\nUGF0aFZhcmlhYmxl 29417\nW2l0ZW0= 29418\n4Li1 29419\nRGVhZA== 29420\nRkZGRkZG 29421\nIFVyYmFu 29422\ndXBsZXM= 29423\naWNoZW4= 29424\nKG51bGxwdHI= 29425\nLnNwZWM= 29426\nLFN5c3RlbQ== 29427\nVVJBVElPTg== 29428\nKGpvYg== 29429\n5byP 29430\nIHRyYWNrZXI= 29431\nxZk= 29432\nIE1S 29433\nIFNRTGl0ZQ== 29434\nIGR0bw== 29435\nIDs7Cg== 29436\nIG1pbnQ= 29437\nIEludHJvZHVjdGlvbg== 29438\nY2Fv 29439\nIHF1ZXN0aW9uZWQ= 29440\nIGZpdHRlZA== 29441\ncmV2aXNpb24= 29442\nc3E= 29443\nIG1pZw== 29444\nX3VuaXRz 29445\nX2FzeW5j 29446\nIGZsaWNr 29447\nfSk7CgoK 29448\nIG5vdHJl 29449\nfWAs 29450\nRmlsdGVycw== 29451\nIG11bmRv 29452\nX2RheXM= 29453\nIGZybQ== 29454\ndXRj 29455\nIHZhbHM= 29456\nZXdpZHRo 29457\nIEdlbmVyYXRvcg== 29458\nIEFydGlzdA== 29459\nIElEcw== 29460\nIEFydGljbGVz 29461\ncmVhdGVy 29462\nIENvbXBvbmVudEZpeHR1cmU= 29463\nLj0= 29464\nIHJvdQ== 29465\nLW5v 29466\nLmJ1a2tpdA== 29467\nZWdn 29468\nIERpZmY= 29469\nYXRpY3M= 29470\n0YPRhw== 29471\n4oCUCgo= 29472\nIENoYXJsb3R0ZQ== 29473\nYnll 29474\nIH0pOw0KDQo= 29475\nIFZpaw== 29476\nIEJyb3c= 29477\nIGx2 29478\nIEdpYg== 29479\nLXdpbmc= 29480\nR0xJR0VOQ0U= 29481\nKEls 29482\nIEVuZ2luZWVy 29483\nLldhaXQ= 29484\nIFBpY3R1cmVz 29485\nIHJoZXQ= 29486\nIHRoZXJtYWw= 29487\nIHByYWlzZQ== 29488\nPD4oKTsKCg== 29489\nIFNwaWRlcg== 29490\nUGF1c2U= 29491\nIEJha2Vy 29492\nIHNsb3dlcg== 29493\nIH1dCg== 29494\nX2VucXVldWU= 29495\nIGRpc2FwcGVhcmVk 29496\nIFRpY2tldA== 29497\nSU5VWA== 29498\nX0xPQ0FM 29499\n0LDRgdGB 29500\nQEluamVjdGFibGU= 29501\nY29tbXVuaXR5 29502\nR2VzdHVyZVJlY29nbml6ZXI= 29503\n5Zu9 29504\nIHNjYWxlcw== 29505\nIC0o 29506\nLycr 29507\nIFNpdA== 29508\nIGV4ZWN1dGl2ZXM= 29509\nYXJkaW5n 29510\nIGFkdmVycw== 29511\nIGJhY2t3YXJkcw== 29512\nCWNvbnRleHQ= 29513\nIEhhbXA= 29514\nIFBG 29515\nIERlY2s= 29516\nIENyYWln 29517\nQW1lcmljYW4= 29518\nIGJlbGw= 29519\nIHByb2w= 29520\ndWZlbg== 29521\nIHJuZw== 29522\nYXJzaGFs 29523\nIFNpbXBseQ== 29524\nZmlyc3RuYW1l 29525\nc2hvcmU= 29526\nSnVseQ== 29527\nIG1vcnRhbGl0eQ== 29528\nIOKGkgoK 29529\nSGVscGVycw== 29530\nIGJlbmNobWFyaw== 29531\nZW1hZGU= 29532\nIG9yZ2FuaXNhdGlvbnM= 29533\nLmdzb24= 29534\nIFRleHRGaWVsZA== 29535\nIGNpdmlsaWFucw== 29536\nLkFycmF5cw== 29537\nIE1pc3Npc3NpcHBp 29538\nIGludGVybWVkaWF0ZQ== 29539\nZ2V0VXNlcg== 29540\nX2NsdXN0ZXI= 29541\nUmVsYXRpdmU= 29542\nZm9yZWlnbg== 29543\nLnF1ZXJ5U2VsZWN0b3JBbGw= 29544\nRm9yZWlnbktleQ== 29545\nIHJlYXNvbmFibHk= 29546\nLS0tLS0tLS0tCg== 29547\nQ2FyZHM= 29548\nIEthbQ== 29549\nIFRob3I= 29550\nIHJvbGxlcg== 29551\nLWVsZW1lbnQ= 29552\nIEN1cnJlbmN5 29553\nZGRpZQ== 29554\nQUxMWQ== 29555\nIFJB 29556\nIHBlcm1ldA== 29557\nYWFhYQ== 29558\nIGhvbWV3b3Jr 29559\nIFZpdA== 29560\nIG1vbGQ= 29561\nIEZlcg== 29562\nW3N0YXJ0 29563\nIHN0YXRpc3RpY2Fs 29564\nIHNjYXJ5 29565\nX0hPTUU= 29566\nLkJlZ2lu 29567\nQ29uc3RydWN0 29568\nb2dlbmlj 29569\nIERFQUxJTkdT 29570\nIHRhbWJpw6lu 29571\naXhvbg== 29572\nLmluZA== 29573\nYWNyZQ== 29574\nIHRyYW5zZm9ybXM= 29575\nIE5hcA== 29576\nLkJsb2Nr 29577\ndXNzaWE= 29578\ncGlyYXRpb24= 29579\ndWxlbnQ= 29580\nIGNlaWw= 29581\nQ2xhdXNl 29582\nbmFpcmU= 29583\nVEVT 29584\nIG5lYXQ= 29585\nU1RE 29586\nIFJlZ0V4cA== 29587\ncGVyZm9ybQ== 29588\nOik= 29589\nIHVuaW9ucw== 29590\nIHN1YmxpYw== 29591\nIHdpbmRz 29592\nbG9hdGluZw== 29593\nZ2xpY2g= 29594\nIHBhZ2luYXRpb24= 29595\nU2tpbGw= 29596\nQXBwbHk= 29597\nIE9wZXJhdG9y 29598\naXN0b2dyYW0= 29599\nIHF1YWxpdGllcw== 29600\nQ3Jvc3M= 29601\nIGRlY29t 29602\nXSwi 29603\nIEp1YW4= 29604\nLm1vZGFs 29605\nLkNoaWxk 29606\nIFJvZ2Vy 29607\nU1RJVFVURQ== 29608\nOkNHUmVjdE1ha2U= 29609\nYWxldHRl 29610\nIHN0YQ== 29611\nYXNpZGU= 29612\nIGJsdXI= 29613\nIFdh 29614\naWZldGltZQ== 29615\ncmVlZA== 29616\nY29udHJvbHM= 29617\nIGJpbnM= 29618\nINC/0L7Quw== 29619\nKi8sCg== 29620\nVUlT 29621\nIFJvdQ== 29622\nIERlbW8= 29623\nLWF3ZXNvbWU= 29624\nIENoYWlu 29625\nIGhhc3Rh 29626\nIEJhcnQ= 29627\nLktFWQ== 29628\nIHZlbmRvcnM= 29629\nbm9mb2xsb3c= 29630\nIERlc3Q= 29631\nX2J1aWxkZXI= 29632\nIGFyZ3Vlcw== 29633\nX2Fuc3dlcg== 29634\nZ290bw== 29635\nIFJFU1VMVA== 29636\nIE1PTg== 29637\nIHBvZGVy 29638\nb29ucw== 29639\nX0NBU0U= 29640\nIHJlcGxpYw== 29641\nIGZpbmFuY2luZw== 29642\nIERBVEU= 29643\nY2Vybg== 29644\nX3RyYWNr 29645\ndGllcw== 29646\nL2xvZ28= 29647\nIE5FR0xJR0VOQ0U= 29648\nZ2V0VHlwZQ== 29649\nPlQ= 29650\nYmV0 29651\nZ2lybA== 29652\nIElOQ0lERU5UQUw= 29653\nLXNpdGU= 29654\nLnRyaWdnZXI= 29655\nIExpc2E= 29656\nX2lucHV0cw== 29657\nIHJlbGF0aXZlcw== 29658\nTG9nZ2VkSW4= 29659\nQ29uZmlndXJl 29660\nSUs= 29661\nLmFjY2VwdA== 29662\nUmVzdW1l 29663\nIERyYWZ0 29664\nICo+KA== 29665\nIFdB 29666\nZWRpYW4= 29667\nZXJuZXNz 29668\nIExheW91dEluZmxhdGVy 29669\nKi8NCg0K 29670\nb3RoeQ== 29671\nIG9ibGlnYXRpb24= 29672\nU3Vic2NyaWJl 29673\nIHRodW1ibmFpbA== 29674\nZXhpc3Q= 29675\nIGluc2lzdGVk 29676\nIFVJQ29sbGVjdGlvblZpZXc= 29677\nIEFuZ3VsYXI= 29678\nIHRhYmxldHM= 29679\nIEltcGFjdA== 29680\n44CNCgo= 29681\nYWhv 29682\nIGNoYXJhY3RlcmlzdGlj 29683\nZ2Q= 29684\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 29685\nb3VydA== 29686\nYC4= 29687\nQXBwcm8= 29688\nQ29vcmRpbmF0ZQ== 29689\nUmVtZW1iZXI= 29690\nIG1hcmluZQ== 29691\nXT09Jw== 29692\nIEFkbWluaXN0cmF0b3I= 29693\nLmdldERlZmF1bHQ= 29694\nIGZvcmdvdA== 29695\nIFN0cnVjdHVyZQ== 29696\nVnVl 29697\nYXJzaW5n 29698\nbW9tZW50 29699\na3c= 29700\nX2N1cnNvcg== 29701\nQXR0YWNr 29702\nIGF0aGxldGlj 29703\nIGRpYWdub3NlZA== 29704\nIGVuZGU= 29705\n5Yig6Zmk 29706\nSG91c2U= 29707\nIFBBUkFN 29708\nIHdpa2k= 29709\nIE9wcA== 29710\nIGNvbnNlcnZhdGlvbg== 29711\nIHNuZA== 29712\nX3RlbQ== 29713\nc3Vic3Ry 29714\nIENhcGU= 29715\nLnNpbQ== 29716\nVVRJT04= 29717\nYW5hbg== 29718\n4oCZdW4= 29719\nIGd5 29720\nLXdvcms= 29721\nIGNvbXBlbGxpbmc= 29722\nPScj 29723\nCXN1Yg== 29724\nIGRpcmVjdG9yaWVz 29725\n7Yq4 29726\nIHRvdWNoZXM= 29727\nb3V0aW5lcw== 29728\nLkNvbGxlY3Rpb24= 29729\nc2NoZWR1bGU= 29730\nLmxhdA== 29731\nIERvY3RyaW5l 29732\nQ0FB 29733\nIFJlZmVy 29734\nIHNoaWZ0cw== 29735\nIGxpa2VsaWhvb2Q= 29736\ncHJldGVy 29737\nIEZlbWFsZQ== 29738\nIGludGVyY2VwdA== 29739\nIGxvdQ== 29740\n55m7 29741\nIHJ1Zw== 29742\nIENyb3du 29743\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 29744\nLXByb2R1Y3Q= 29745\nIHByb21wdGVk 29746\ndW5nbGU= 29747\nZG9ja2Vy 29748\nIFR1 29749\nIFVuaXF1ZQ== 29750\nX0Vycm9y 29751\ndWxvcw== 29752\nIOKE 29753\nIChg 29754\nR2V0dGluZw== 29755\nX3NjYWw= 29756\nIEVuaA== 29757\nw7x0 29758\nIHN1c3RhaW5lZA== 29759\nIHBhdGNoZXM= 29760\nIHByb3NwZXI= 29761\nIEdhemE= 29762\nX2xpZ2h0 29763\nIGluY29ucw== 29764\nLS0tLS0tLS0K 29765\nCQkgICAgICA= 29766\nU0Y= 29767\nQ04= 29768\nOiI7Cg== 29769\nIENvbGxpbnM= 29770\nKCop 29771\nIGNvbXBpbGF0aW9u 29772\nJ10NCg== 29773\nIGNvbnNlcXVlbmNl 29774\nLC4uLg== 29775\nIGRt 29776\nIEJMT0NL 29777\nQ2x1c3Rlcg== 29778\nIHNraQ== 29779\nKGFyZ2M= 29780\nVHVwbGU= 29781\nIGpvaW5z 29782\nIFNoZXJpZmY= 29783\nV2Fy 29784\naW5kaQ== 29785\nIGNvbW1lbnRlZA== 29786\nSE9TVA== 29787\nIGludml0YXRpb24= 29788\nYXBhbmVzZQ== 29789\nIHBlcm1pdHM= 29790\ncHJlY2VkZW50ZWQ= 29791\nX3pvbmU= 29792\nIEFteQ== 29793\nX1JE 29794\nTWluaW11bQ== 29795\nIGludm9jYXRpb24= 29796\nLmVuYWJsZQ== 29797\naWNodGVu 29798\nLW93bmVk 29799\nImlk 29800\nX1BPSU5URVI= 29801\nRmFj 29802\nIHNwZWNpZmljYXRpb25z 29803\nIG5vbWluYXRpb24= 29804\nIGdw 29805\nPCg= 29806\nIHJvYm90cw== 29807\nIEplcnJ5 29808\nIGhvbGRlcnM= 29809\nIHdhbmQ= 29810\nY21z 29811\nIH0pKQo= 29812\nLlRvYXN0 29813\nIElMaXN0 29814\nQmFzZWQ= 29815\nem9vbQ== 29816\nL3N0eWxl 29817\nIEJlY2s= 29818\nTWVu 29819\nIGNvbnRyaWJ1dGluZw== 29820\nIHVuZG8= 29821\nIE9I 29822\nIGFkZE9iamVjdA== 29823\nIGVpZ2Vu 29824\nc2lnbnVw 29825\n6ZSZ 29826\nIGRpc3RhbnQ= 29827\nUEFSQVRPUg== 29828\nIE1hcmk= 29829\nIG3DoQ== 29830\nRW1w 29831\nw7Nz 29832\nIOyImA== 29833\nZXZ0 29834\nK2o= 29835\ncGFyaw== 29836\nIFN0YXk= 29837\nIER1bg== 29838\nIHNveQ== 29839\nPiU= 29840\nYXppbmVz 29841\nIHRpZW1wbw== 29842\nKG1l 29843\ncHJlc2VudA== 29844\nLlRoaXM= 29845\nIGVkaXRvcnM= 29846\nRklFTEQ= 29847\nLldvcms= 29848\nIFVuaXZlcnNl 29849\nIGRydW5r 29850\nLnRpbWVy 29851\nIGFsdGVyZWQ= 29852\nIE5hcg== 29853\n66Cl 29854\nLkFjdGl2ZQ== 29855\naWRvcg== 29856\n560= 29857\nLmRlbHRhVGltZQ== 29858\nIGF3a3dhcmQ= 29859\nJnF1b3Q= 29860\nIFNhZmFyaQ== 29861\nIHRyaWNrcw== 29862\nTUVOVFM= 29863\nZGl2aXNpb24= 29864\nIHZhcnlpbmc= 29865\nIEhpZ2h3YXk= 29866\nIHBob3RvZ3JhcGhlcg== 29867\nIFN0ZXdhcnQ= 29868\nIGxhc3Rpbmc= 29869\nLlByZQ== 29870\nLmFtYXpvbmF3cw== 29871\nIEx1Y2s= 29872\nLkRlc2NyaXB0aW9u 29873\nIE5heg== 29874\nbmVn 29875\nIGPDsw== 29876\nPDwiXA== 29877\nIFN1cnY= 29878\nIFVuYw== 29879\nUmVjaXBl 29880\nLkJvcmRlclN0eWxl 29881\nIG1vZGlmaWNhdGlvbnM= 29882\nLWF0 29883\nQVRGT1JN 29884\naGRy 29885\nYWtv 29886\nIHN1YmxpY2Vuc2U= 29887\nIEp1bXA= 29888\nIGJlaW0= 29889\nIE1hbmhhdHRhbg== 29890\nLmJvb2w= 29891\nX2h3 29892\n0YLRjA== 29893\nQmlu 29894\nIGdhdGV3YXk= 29895\nIiI6 29896\nIFVJUw== 29897\nOiIr 29898\nLWRlZg== 29899\nIFJlZ3VsYXI= 29900\nL3Rlc3Rpbmc= 29901\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 29902\nc3RyaW5nc3RyZWFt 29903\nIGRpc3Bhcg== 29904\nIG1vYmls 29905\nLXJlYWQ= 29906\nIEFkYXB0ZXI= 29907\nIENoYW1waW9ucw== 29908\nIHNjaGVkdWxlcg== 29909\nIGtpbGxz 29910\nIE11bHRpcGxl 29911\naXJyb3I= 29912\nIGdvZHM= 29913\nQURP 29914\nYWt0ZQ== 29915\nIFVzdWFyaW8= 29916\nLmNpcmN1bGFy 29917\nIHJlY2VwdA== 29918\nIEV4cHI= 29919\nIGVsZGVybHk= 29920\nIG5pY2VseQ== 29921\nIGJlc3Rl 29922\nV2FudA== 29923\nIGNsYXNzaWNhbA== 29924\nLnNwcml0ZQ== 29925\nb2JqYw== 29926\nIE1hc29u 29927\nIHNpc3RlbWE= 29928\nLkJsYWNr 29929\nZXNv 29930\nIFplaXQ= 29931\nIGRpdmlk 29932\nIGVudGVycw== 29933\nX3N1YmplY3Q= 29934\nIFBsYW5ldA== 29935\nLndhcm5pbmc= 29936\nIEdyYW0= 29937\nX3Rva2Vucw== 29938\nIGhvdXNlaG9sZHM= 29939\nX2N1c3RvbWVy 29940\ndXNlck5hbWU= 29941\nY3Jvc3M= 29942\nIHBpb25l 29943\nIGFzc2lzdHM= 29944\nX1NN 29945\naWJv 29946\nIGxveWFs 29947\nIHVzZWxlc3M= 29948\nI2VsaWY= 29949\nIFVsdGltYXRl 29950\nQ29tZQ== 29951\nZ2Vs 29952\nIGRpY2g= 29953\neHl6 29954\naWtlbA== 29955\nb2JyYQ== 29956\nX3NjYW4= 29957\nIEludGVyaW9y 29958\nIE5pY2U= 29959\nIHBsYWM= 29960\nCXRhcmdldA== 29961\nIHZpcmFs 29962\nYXNzbw== 29963\nKCkv 29964\ndW5kZQ== 29965\nIEFkb2Jl 29966\nT3M= 29967\ndmlzaXRlZA== 29968\nIE9X 29969\nIEZlZWQ= 29970\nIFNlcXVlbmNl 29971\nIG1hbmFnZXM= 29972\naW5zb24= 29973\nIExvdWlzaWFuYQ== 29974\ne30p 29975\nIEhhYg== 29976\nIExE 29977\nIGJpcA== 29978\ncHJpdGVz 29979\nKGVsZW0= 29980\nLmhpYmVybmF0ZQ== 29981\nw6lsw6k= 29982\nIG9obmU= 29983\nX3RyYW5zYWN0aW9u 29984\nIGFubnVuY2k= 29985\nUHVibGlzaGVk 29986\nIEhvbmRh 29987\nIFRhbQ== 29988\nIFBhY2tldA== 29989\nX3NlbGVjdG9y 29990\nIGNoYWxsZW5nZWQ= 29991\nUHJvY2Vzc2luZw== 29992\nLWhvdmVy 29993\nIHRyYWluZXI= 29994\nX2NhbmNlbA== 29995\nIE5TRGljdGlvbmFyeQ== 29996\nYWJyaWM= 29997\nIE1MUw== 29998\nX3NlbnNvcg== 29999\nIHNocmluaw== 30000\nIEZY 30001\ndGhyZXNob2xk 30002\nCUhY 30003\nLW1hcms= 30004\nYC5g 30005\nU2NoZW1l 30006\nKGZ1bGw= 30007\nX3dyaXRlcg== 30008\nIFN5cw== 30009\nIGZsZWQ= 30010\nIENpbg== 30011\nLXdpZGdldA== 30012\nIFByZXZpb3Vz 30013\nR2VuZGVy 30014\nX3F1ZXN0aW9u 30015\nRmVlZA== 30016\nIHNjcnV0 30017\nKHByZWZpeA== 30018\n44CC44CC 30019\nIGluZmVjdGlvbnM= 30020\nUGFydHM= 30021\nIGhpZXJhcmNoeQ== 30022\nX0RFTEVURQ== 30023\nIFBhdGllbnQ= 30024\nX3BheQ== 30025\nIHByb21vdGVk 30026\nIOyL 30027\nIGNpdmlsaWFu 30028\nIGFncmljdWx0dXJl 30029\nIFBpZWNl 30030\nIHN0YW5jZQ== 30031\ndXRzY2hl 30032\nQXNzaWdu 30033\nLkFDVElPTg== 30034\nRmln 30035\nX3JhZGl1cw== 30036\nIFN5bmM= 30037\nZHVjZXI= 30038\nZmFpbHVyZQ== 30039\nZW5zZWQ= 30040\ncHRpbWU= 30041\nQk0= 30042\nX2RhdGV0aW1l 30043\ncXVpdm8= 30044\nUVVFVUU= 30045\n6ICF 30046\nQXBwZWFy 30047\nIHN1bW1pdA== 30048\nOnZvaWQ= 30049\nIHZpbmU= 30050\n6K6k 30051\nb25uZQ== 30052\nX1RSQU5T 30053\nLmdyZWVu 30054\nX2Nj 30055\nIGh1bmdyeQ== 30056\nICI+ 30057\nKCkpOw0KDQo= 30058\nRXh0cmFjdA== 30059\naXplbnM= 30060\nIHNvbHZlcg== 30061\nTm90aWZ5 30062\nIGVuZ2xpc2g= 30063\nIFNob3BwaW5n 30064\naW50ZXJmYWNlcw== 30065\nUkVR 30066\nIGlsbGVn 30067\nIFVJSW1hZ2VWaWV3 30068\nIGRpc2Nvbm5lY3Q= 30069\nIFVudGls 30070\nIENvbnNlcnZhdGl2ZQ== 30071\nQENvbHVtbg== 30072\nIHNoaWZ0ZWQ= 30073\nIDoNCg== 30074\nIGZpY2g= 30075\nIGRsYQ== 30076\nIHNob2U= 30077\nIiksDQo= 30078\ndWxhcml0eQ== 30079\nX1JFU1A= 30080\nV2VhdGhlcg== 30081\nVUlBcHBsaWNhdGlvbg== 30082\nLml0ZXJhdG9y 30083\nIGFnaW5n 30084\nLlBhcmVudA== 30085\nb3dpZQ== 30086\nKGVxdWFs 30087\nIENvbnY= 30088\nL2RlZmF1bHQ= 30089\nIG1lYXN1cmluZw== 30090\nLnByZXY= 30091\nLklzVmFsaWQ= 30092\nLkZhdA== 30093\nIHPEgw== 30094\na2V5d29yZHM= 30095\nd2l0aG91dA== 30096\nIHNvdmVyZQ== 30097\nIGV4Y2hhbmdlcw== 30098\nIG1lbHQ= 30099\nIGlzbGFuZHM= 30100\nIEludGVncg== 30101\nIGp1bXBpbmc= 30102\nIGdsZQ== 30103\nIGpvdXJuYWxpc20= 30104\nIGRhdGVk 30105\nTG9jYWxpemVk 30106\nIFJlZnJlc2g= 30107\nUGFydGljbGU= 30108\nIGFh 30109\nIFNUUklDVA== 30110\nIGJvZA== 30111\nLlByb2Nlc3M= 30112\nX0FVVE8= 30113\nIFB1Ymxpc2hlZA== 30114\nZXZlcnk= 30115\nIHRlY2hub2xvZ2ljYWw= 30116\nbHN4 30117\nIGlycml0 30118\nQWRkaXRpb25hbA== 30119\nIGRlbGltaXRlcg== 30120\nX2xhbmd1YWdl 30121\nLWFyZWE= 30122\nYm95cw== 30123\nIFR1YmU= 30124\nIHdhdA== 30125\nIG1lY2hhbmljcw== 30126\nX293bmVy 30127\nU3BlbGw= 30128\nIFN0b3JpZXM= 30129\nLkFwcGVuZExpbmU= 30130\nVGFibGVWaWV3 30131\naGVt 30132\nc3RpY2s= 30133\nb2xsb3dlcg== 30134\nSUZG 30135\nIFVW 30136\nb2xsaXNpb24= 30137\nU1VC 30138\nIGNvbXBhcmFibGU= 30139\nIGRvbmRl 30140\nc2FsZXM= 30141\nbGx2bQ== 30142\nIH1dLAo= 30143\nT1RUT00= 30144\nIFB1cnBvc2U= 30145\nTGFi 30146\nIGludGVydmlld2Vk 30147\nb2lz 30148\nYXNpbA== 30149\nLnNldElk 30150\nIEluc3RydWN0aW9u 30151\nLS0+ 30152\nIE1vZGlmaWVk 30153\nYXRpb25hbGx5 30154\nIE1lZXRpbmc= 30155\n6K+v 30156\nI3JlZ2lvbg== 30157\nIHJvdXRpbmc= 30158\nLmZvY3Vz 30159\nIFlvdXRo 30160\nPEQ= 30161\nIE5hZw== 30162\nY29udGFjdHM= 30163\nIGZvcm1pbmc= 30164\nIG1pZQ== 30165\nJyxbJy4uLw== 30166\nIEJQ 30167\nIGFwcGV0 30168\nIFRlYWNoZXI= 30169\nIFRQ 30170\nIGFubnVhbGx5 30171\nb3V0ZWRFdmVudEFyZ3M= 30172\nIFNwZWFrZXI= 30173\nIHJlbmFtZQ== 30174\nQ0ZH 30175\nKCIvLw== 30176\n5o6l 30177\nL3BhZ2Vz 30178\nIHByw6lz 30179\nIFNwZWxs 30180\nLkFsbG93 30181\nIElOVEVSUlU= 30182\nICgj 30183\n4oCZCgo= 30184\nX0dlbmVyaWM= 30185\nLmltc2hvdw== 30186\nX3RpbQ== 30187\nLWZhY2U= 30188\nKCYo 30189\nYXRpbnVt 30190\nIHJldm9sdXRpb25hcnk= 30191\nIEhvdXJz 30192\ncmFpbg== 30193\nIGFueXRpbWU= 30194\nIGFiYg== 30195\nLmpzcA== 30196\nU2Nyb2xsVmlldw== 30197\nIFRydXRo 30198\nIGFudGljaXBhdGVk 30199\nIGFjY2VudA== 30200\nLmNoZWNrZWQ= 30201\nIHNwZWNpZmllcw== 30202\nIGNhZg== 30203\nIGNlbGxwYWRkaW5n 30204\nIGNvb2tlZA== 30205\nIEh1Z2g= 30206\ncGVlaw== 30207\nX1JBVEU= 30208\nIGRvcm0= 30209\nLw0K 30210\nSVZJVFk= 30211\nLkNvbnRyb2xsZXI= 30212\nKHBhcnQ= 30213\nLmNvbnN0cmFpbnQ= 30214\nIGludmFzaW9u 30215\nTU9WRQ== 30216\nIGdsdWM= 30217\nbGVuYW1l 30218\nIGFtZW4= 30219\nZW5nbGlzaA== 30220\nIFN3aXR6ZXJsYW5k 30221\nIjsKCgo= 30222\ncGVzdA== 30223\nLmNvbGxlY3Q= 30224\nTmli 30225\nIERpY3Q= 30226\nIEVtYg== 30227\nKHN1YmplY3Q= 30228\nIG91dHJhZ2U= 30229\nIGRlY2lkaW5n 30230\nIHNlbnRlbmNlZA== 30231\nRmVjaGE= 30232\nIkE= 30233\nIHF1ZXI= 30234\nIGZvbnRGYW1pbHk= 30235\nIHF1YWRy 30236\nLVk= 30237\nX0NBQ0hF 30238\nIGFuYWx5emVk 30239\nIGdhaW5pbmc= 30240\nIEFnYWluc3Q= 30241\nIFNvdWw= 30242\ndGF1 30243\nIGxpZ2h0d2VpZ2h0 30244\nIFRG 30245\nIEVmZmVjdHM= 30246\nLlR5cGVz 30247\nLmFkZENsYXNz 30248\nIHZlZ2Fu 30249\n6YE= 30250\nLici 30251\nIEV4cGxvcmVy 30252\nLmRldGVjdA== 30253\nLnNoaWZ0 30254\nIG9ibGlnYXRpb25z 30255\nbGFzdE5hbWU= 30256\nIGFzc29jaWF0aW9ucw== 30257\nIFRpbWVTcGFu 30258\ndW50ZXI= 30259\nIEZyZXNo 30260\nQ29tcGF0aWJsZQ== 30261\nUHVi 30262\naWRnZXM= 30263\nLm9wdGlvbg== 30264\ndmFyaQ== 30265\nLmhhc2hDb2Rl 30266\nIGdlYg== 30267\nLnNlY3Rpb24= 30268\nLW5vdA== 30269\nIFN1Ym1pdA== 30270\nVE4= 30271\ncmVnaXN0cnk= 30272\nX21lZGlh 30273\nIG5hag== 30274\nZmZ0 30275\nIG1hdGU= 30276\nLXRoaXJk 30277\nIHBvY2tldHM= 30278\nZXN0YQ== 30279\nIGJlbnQ= 30280\nIE5vcmQ= 30281\nIHJldGFpbGVycw== 30282\nIE1vcnJpcw== 30283\nLiIiIgoK 30284\nV3Jvbmc= 30285\nIMWb 30286\nUmF5 30287\nLmVj 30288\nIEJpbmQ= 30289\nX0hBTkQ= 30290\nKG5vbg== 30291\naXNWYWxpZA== 30292\nIHNpbWlsYXJseQ== 30293\nX0xJTUlU 30294\nIGR5bmFtaWNz 30295\nIGRpc3RpbmN0aW9u 30296\n44GG 30297\nPE4= 30298\nIG9ydGg= 30299\nIFRveW90YQ== 30300\nIEthdGU= 30301\nIExT 30302\nb3JpZQ== 30303\nIFNwcmluZ3M= 30304\nIGZyZWFr 30305\nbGFzdG5hbWU= 30306\nX01VTFQ= 30307\nLXN0ZXA= 30308\nIig= 30309\nQUREUg== 30310\nIGVudGVydGFpbmluZw== 30311\nX0NPTkY= 30312\nIGRlY29kZWQ= 30313\nIHN0cmVhaw== 30314\nIHdhaXRlZA== 30315\nIG5vdGlmaWVk 30316\ncm9kdWNlZA== 30317\ndmlzdWFs 30318\nLkxheW91dFBhcmFtcw== 30319\n5rA= 30320\nZXNpYW4= 30321\nZml0cw== 30322\nc3ByaW5n 30323\nIEJlcm5pZQ== 30324\nVXNlckRlZmF1bHRz 30325\nIHBlZGVzdA== 30326\nQXBwZWFyYW5jZQ== 30327\nIFdpa2k= 30328\nIE5PVElDRQ== 30329\nIHNzaA== 30330\nIGR1cmFudGU= 30331\nIFppcA== 30332\nxLFy 30333\nIE5BVE8= 30334\nIHR3ZWx2ZQ== 30335\nIHJveWFs 30336\n77g= 30337\nIG1lcmNoYW50 30338\nIEZ1cm5pdHVyZQ== 30339\nJ10pLAo= 30340\nLFg= 30341\nIGZvbGRlcnM= 30342\nIEdhdGU= 30343\nCWZ1bmM= 30344\ncGljaw== 30345\nX3VzdWFyaW8= 30346\nIFZlcm0= 30347\nbWVudGlvbg== 30348\ndXJwb3Nl 30349\nIGFsZXJ0cw== 30350\neGlvdXM= 30351\nX3NpZw== 30352\nIEZ1 30353\nICg6 30354\nIGR1bWI= 30355\n5YWz 30356\nIGFjY3VyYXRlbHk= 30357\n6YeN 30358\nUkI= 30359\nLXNjcmVlbg== 30360\nIFZFUg== 30361\nam91cg== 30362\nIHJvbWFuY2U= 30363\ndWNjZWVk 30364\nLmNob2ljZQ== 30365\nIGFkaXA= 30366\nX2RpbXM= 30367\nU2VyaWFsaXphYmxl 30368\n44KL 30369\nLmpvYg== 30370\nIHByb2c= 30371\ndWNoYXI= 30372\nIGdlbnRseQ== 30373\nIFJTUw== 30374\naWN0dXJlZA== 30375\nX0VOQUJMRUQ= 30376\nCWxhYmVs 30377\nYXdrcw== 30378\nIEVuc3VyZQ== 30379\ncmVtZW1iZXI= 30380\n7KCV 30381\nIHRyYW5zbWl0 30382\ne3sk 30383\nLlRyYW5zYWN0aW9u 30384\ndXJzZQ== 30385\nX3JlbGF0aXZl 30386\nIHNpemVk 30387\nIFhY 30388\nIFByaW5jZXNz 30389\nIExhcnJ5 30390\nIHByw7M= 30391\nINGB0YLRgA== 30392\nIHNpc3RlcnM= 30393\nZXN0cnVjdA== 30394\nIGNoZWNrcG9pbnQ= 30395\nOmxlbmd0aA== 30396\nIENhcmxvcw== 30397\nL2ljb24= 30398\nX1RBUkdFVA== 30399\nVG9rZW5z 30400\nIHBhdGllbmNl 30401\nIFNlbGVjdGVk 30402\ncXR5 30403\nLnNob3dNZXNzYWdl 30404\nIHdpbGRsaWZl 30405\nIFByb3Bz 30406\nYm0= 30407\nLWFycm93 30408\nIHBhcmNlbA== 30409\nZmlyZWJhc2U= 30410\nIEJlbmphbWlu 30411\nY2Vzc28= 30412\nLnRpbQ== 30413\nIEdhcmM= 30414\nLmFueQ== 30415\nIEhPV0VWRVI= 30416\nIEtv 30417\nIGdyYWJiZWQ= 30418\nX2ZyYW1lcw== 30419\nIG9iamVjdEF0SW5kZXg= 30420\nIEFEVklTRUQ= 30421\nIHN1YnVy 30422\nCUdM 30423\nIH0pfQo= 30424\nLWxlbmd0aA== 30425\n7Iuc 30426\nIFBvdHRlcg== 30427\nX2J1ZmY= 30428\nLmd1aQ== 30429\nIEVuY29kaW5n 30430\nRWxlY3Q= 30431\nLW1lc3NhZ2U= 30432\nIO+/vQ== 30433\nIMiZaQ== 30434\nIEFyZ3VtZW50TnVsbEV4Y2VwdGlvbg== 30435\n0LDRhtC4 30436\nIG1pbmltaXpl 30437\nIHJlc3BvbmRpbmc= 30438\nJF9bJw== 30439\nIEluZGl2aWR1YWw= 30440\nw6Fj 30441\nIElOVEVS 30442\nIG1hc3R1cmI= 30443\nIEJpbg== 30444\nKCck 30445\n65Oc 30446\nIG9wZW5seQ== 30447\nID48 30448\nIHVudG8= 30449\nb2xvZ2ljYWxseQ== 30450\nIE11bA== 30451\nVklESUE= 30452\nIHNsaW0= 30453\nIENvbW1pc3Npb25lcg== 30454\nKG9u 30455\nIHVuZGVybmVhdGg= 30456\nL2Ri 30457\ndm90ZQ== 30458\nKE1lc3NhZ2U= 30459\nIFBvcGU= 30460\nRGVmaW5lZA== 30461\nIHN3aWZ0 30462\ndXJm 30463\nIGFkYXB0ZWQ= 30464\nU0VM 30465\nIHJldmVudWVz 30466\nIGRpdmluZQ== 30467\nPXk= 30468\nR3JhZGllbnQ= 30469\nX2FjdA== 30470\nIC8qITw= 30471\nIHBvbHlnb24= 30472\nIEZEQQ== 30473\nIENhcnI= 30474\nYXRhYmxlcw== 30475\nKHN0ZG91dA== 30476\nIHJlZnJpZ2Vy 30477\nIGNvb3JkaW4= 30478\nYXZvcml0ZXM= 30479\n0YjQuA== 30480\nIGNvbXBhc3Npb24= 30481\nIFBPU1NJQklMSVRZ 30482\nLXNlY29uZGFyeQ== 30483\ndXJhY3k= 30484\nIGNvbXByb21pc2U= 30485\nX0FW 30486\nX29z 30487\nIGJlc2lkZQ== 30488\ng50= 30489\nIGxu 30490\nLnBsdWdpbnM= 30491\nQ2FwYWNpdHk= 30492\nYWxhaA== 30493\nLmJpbg== 30494\nIENSQw== 30495\nX2JhbGFuY2U= 30496\nIGZsZXhEaXJlY3Rpb24= 30497\nIGFtYml0 30498\nIG5pY2tuYW1l 30499\nIEZvcmNlcw== 30500\nQ0xF 30501\nIFNoZWxs 30502\nIHNhaWw= 30503\nIFdyaXRlcg== 30504\nIEFsaWNl 30505\nZHc= 30506\nIEluZGlhbnM= 30507\nIE1hcnNoYWxs 30508\nX1NSQw== 30509\nIG5vcm1hbGl6ZWQ= 30510\nIEphZw== 30511\n44KS 30512\nemVpdA== 30513\ncnBj 30514\nw61j 30515\nLmlubGluZQ== 30516\nIHRyYXZlcnM= 30517\nX251bWVyaWM= 30518\nIHV0aWxpdGllcw== 30519\nIGV2YWM= 30520\nSU5QVVQ= 30521\nCXJlZ2lzdGVy 30522\nTVg= 30523\nIENhbXBiZWxs 30524\nIGRhdGFzZXRz 30525\nIGRlbWFuZGVk 30526\nIGluaXRpYWxTdGF0ZQ== 30527\nZ2Fu 30528\nIGVp 30529\nVW5leHBlY3RlZA== 30530\nLXdlYg== 30531\ndHJhaXQ= 30532\nLFk= 30533\nIFRvZGQ= 30534\nIHNrZWxldG9u 30535\nIG9wdGltaXpl 30536\n56ys 30537\nIFVwb24= 30538\nIFN0T2JqZWN0 30539\nIGFwbGlj 30540\nLic8Lw== 30541\nQUND 30542\nYWxvdXM= 30543\nIGhhc2hDb2Rl 30544\nIEJpYg== 30545\nSU5BTA== 30546\nIGludmlzaWJsZQ== 30547\nIGhldGVy 30548\nIHNhZmVy 30549\nfS8v 30550\nLnRoZW1l 30551\nLm5hdmlnYXRpb25Db250cm9sbGVy 30552\nX21lc2g= 30553\nc2tpbGw= 30554\nIFZpb2w= 30555\nwrI= 30556\nIEVPRg== 30557\nIEtp 30558\neW1tZXRyaWM= 30559\nIG1heGxlbmd0aA== 30560\nxaM= 30561\nZnJpZW5kcw== 30562\nIEV2YW5z 30563\nIGxlbW9u 30564\nICgu 30565\nU2xpZGU= 30566\nIFRoYWlsYW5k 30567\nIENhbm4= 30568\nIGFtZW5k 30569\nIGNpcg== 30570\nIHNpbGx5 30571\nZXNpbWFs 30572\nX3BpYw== 30573\ncHJvY2Vzc29y 30574\nSmF2YVNjcmlwdA== 30575\nIGV2aWRlbnQ= 30576\nX2Rp 30577\nPlA= 30578\ndnJvbg== 30579\nLlVO 30580\nIHBhaW50ZXI= 30581\naXphcnJl 30582\nIGxhdg== 30583\nIHBvbQ== 30584\ncHJlZw== 30585\nPWZ1bmN0aW9u 30586\nKHNlcmlhbA== 30587\naWZpY2E= 30588\ndW1pbmc= 30589\n5Zyw 30590\n44GC 30591\nLW9w 30592\nVUNI 30593\nIEhlbmQ= 30594\nLnByb3BUeXBlcw== 30595\nIHlv 30596\nIHJvdXRpbmVz 30597\nIGNhcmluZw== 30598\nU2Vt 30599\nIHJlc2VydmVz 30600\nIHByaW9yaXRpZXM= 30601\ncmVkaXRz 30602\nSVNUUg== 30603\nQ29udGVudFR5cGU= 30604\nIFNjaHc= 30605\nL21lZGlh 30606\nIGVzdHI= 30607\nIGNsaW1iaW5n 30608\nLXdlZWs= 30609\nY2hlcmNoZQ== 30610\nc2Vuc29y 30611\nVG9BcnJheQ== 30612\nIE1vbnRyZWFs 30613\nIGNsb3Vkcw== 30614\nIEluamVjdGFibGU= 30615\nIFJpY2U= 30616\nIHByb3BhZ2FuZGE= 30617\nX3Byb3ZpZGVy 30618\nIGluZG9vcg== 30619\nIGluYXVn 30620\nIGRpcGxvbQ== 30621\nIG1lc3NhZ2luZw== 30622\nX211dA== 30623\n5aaC 30624\nIGt3 30625\nT05T 30626\nYXJpYW5z 30627\nUlBD 30628\nKV0NCg== 30629\nLXJheQ== 30630\nIFNvcg== 30631\nbWFsbA== 30632\nIG1hcmtldHBsYWNl 30633\nIHZ0aw== 30634\nTWE= 30635\nb2dhbg== 30636\naWdp 30637\nIHNwb25zb3JlZA== 30638\nIERhbmk= 30639\nLlNFVkVS 30640\nPicuJA== 30641\nbXVsdGlwYXJ0 30642\nIFdvbA== 30643\nIHRhYmxlTmFtZQ== 30644\nIFVzZXJuYW1l 30645\nQmFja2dyb3VuZENvbG9y 30646\nIGZyaWdodA== 30647\nX0VNQUlM 30648\nU2VwdGVtYmVy 30649\nX3ZhbHM= 30650\nb3BpYQ== 30651\nIHNwb3R0ZWQ= 30652\nLUNo 30653\nIGRhdGFTb3VyY2U= 30654\nLyIK 30655\n0LXQutGC 30656\nIFJlcXVlc3RNZXRob2Q= 30657\nIFJlcGxhY2U= 30658\nLWRv 30659\nYWhu 30660\nIFBoRA== 30661\nXS4KCg== 30662\nTk9O 30663\nZ2VtZW50 30664\nIFRocg== 30665\nIHF1aWV0bHk= 30666\nIHRvcnR1cmU= 30667\nIHRlYXM= 30668\nIENZ 30669\nIGF0cg== 30670\nZGV2ZWxvcG1lbnQ= 30671\nLWRldGFpbA== 30672\nIGxpZ2h0ZXI= 30673\nIGFyZ3Vpbmc= 30674\nIGRlc2VydmVz 30675\nIGN1cnJpY3VsdW0= 30676\nX0NPTlRFWFQ= 30677\nxYJ5 30678\nSElURQ== 30679\nCUlE 30680\nL3VwbG9hZHM= 30681\nIHRpdHM= 30682\ncmVv 30683\nX2Ryb3A= 30684\nLlVURg== 30685\nIHBpY2t1cA== 30686\nIGdyb2Nlcnk= 30687\nIFB1cmU= 30688\nIGVhc2llc3Q= 30689\nUGhpbA== 30690\nLmZlYXR1cmU= 30691\nKCIq 30692\nIGludmVzdG9y 30693\ndG9r 30694\nIGphcg== 30695\nTG9z 30696\n4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU 30697\nLnF1ZXVl 30698\nLXNwZWVk 30699\nTWFs 30700\ndW1ibHI= 30701\nIENPTlNU 30702\nIEhSRVNVTFQ= 30703\nIERhbmNl 30704\nKGZpbGVQYXRo 30705\nIGF0dHJpYnV0ZWQ= 30706\n4KWN 30707\nIEJ1bmQ= 30708\nY29pbnM= 30709\nIHPDo28= 30710\nIHBpcg== 30711\ncGVyc29uYWw= 30712\nIHByZWxpbQ== 30713\nIHByb3Bvc2U= 30714\nIFRM 30715\nXV0p 30716\nIFN1YnNjcmlwdGlvbg== 30717\nIEtyZQ== 30718\nLGxlbg== 30719\nLkZpcnN0T3JEZWZhdWx0 30720\nKS0t 30721\nX3Byb2R1Y3Rz 30722\nLkdldEJ5dGVz 30723\nU2hpcA== 30724\nIGVuY3J5cHQ= 30725\nIFNH 30726\nIE15c3Q= 30727\naGly 30728\nIGl0ZXJhdGU= 30729\nIGludGVuZA== 30730\nLm1vY2tpdG8= 30731\nIGNoYXB0ZXJz 30732\nKGFuZ2xl 30733\nIFZsYWQ= 30734\n6K6+ 30735\nJy4KCg== 30736\nUmVzcG9uc2VCb2R5 30737\nIEFiZA== 30738\nZGVhbA== 30739\nIGJhcnJpZXJz 30740\nLW91dGxpbmU= 30741\nYmlsbA== 30742\nIEZhbGxz 30743\nX3NlY29uZA== 30744\nLmluY2x1ZGU= 30745\nLmNlaWw= 30746\nIG9jY3VwYXRpb24= 30747\ncGhvbnk= 30748\nLm1vdmVUbw== 30749\nIEplbm5pZmVy 30750\nQVNURVI= 30751\nOyI+PA== 30752\nIEVuYWJsZWQ= 30753\nIHRlcm1pbmF0ZQ== 30754\nIElv 30755\nbGF0aW9ucw== 30756\nIFRIRU9SWQ== 30757\nIGVhcmxpZXN0 30758\nIHJhY2s= 30759\nIFNjYXI= 30760\nc2hha2U= 30761\nY2hpcA== 30762\nIHV2 30763\nIGFsbGlhbmNl 30764\n0L/QuNGB 30765\nIEdPT0RT 30766\nemlvbmU= 30767\nIFZJ 30768\nIHst 30769\nIGZpbHRlcmluZw== 30770\nIG1pc2Nvbg== 30771\nLkRvY2tTdHlsZQ== 30772\nIGJ1c2g= 30773\nIGp1bms= 30774\n5ow= 30775\nIFFVRQ== 30776\nIGhvb2tz 30777\nIGZpcm13YXJl 30778\nIG1pZGRsZXdhcmU= 30779\nZGlj 30780\nIE9ha2xhbmQ= 30781\nIGFycml2ZXM= 30782\nUGF5bG9hZA== 30783\ncGl4ZWw= 30784\nXXw= 30785\nIHN0YXJ0RGF0ZQ== 30786\nLlBSTw== 30787\nX2F1ZGlv 30788\nIG1pZGZpZWxk 30789\naWdpZGJvZHk= 30790\nIFN3aXNz 30791\nIENsaXA= 30792\nIER1bXA= 30793\nIFRleHRCb3g= 30794\nIGdlaA== 30795\neWllbGQ= 30796\nb2Rz 30797\nIHJlZmVyZW5kdW0= 30798\nQmFja2VuZA== 30799\nIENyZWFt 30800\nIGRvbWluYXRlZA== 30801\nIEFyY2hpdmU= 30802\nIHJpZGVycw== 30803\nLnByZXBhcmVTdGF0ZW1lbnQ= 30804\nIHF1YW5kbw== 30805\nIGNoZWY= 30806\nd2lraQ== 30807\naW5lbA== 30808\nYW1wbGluZw== 30809\nKCJcXA== 30810\nIHNhZw== 30811\nX3Byb3h5 30812\n44GV 30813\ncGRv 30814\nLmdldEVsZW1lbnRzQnlUYWdOYW1l 30815\nIGRlbW9uc3RyYXRpb24= 30816\nIE5QQw== 30817\nIGFyY2hpdm8= 30818\nZW5kYW5jZQ== 30819\nIGVmZmljaWVudGx5 30820\nKGFjdHVhbA== 30821\nLnRhYmxlVmlldw== 30822\nIG11c2g= 30823\nIGJlYXJz 30824\nX3RocmVhZHM= 30825\namFz 30826\nYWh1bg== 30827\nIG5ldXJhbA== 30828\nIGRlc2lnbmluZw== 30829\nIEdEUA== 30830\nIGxpZnRlZA== 30831\n55uu 30832\nIEpvaW50 30833\nIEluY2x1ZGU= 30834\nIEdpYW50cw== 30835\nIHdpdGhkcmF3YWw= 30836\nIFJlbnQ= 30837\nbmF0aXZl 30838\nIFNlZWs= 30839\nZ3Jlc3Npb24= 30840\nX0NQVQ== 30841\nXFM= 30842\nIFNoaWVsZA== 30843\nIHNvbGlj 30844\nIGJvb20= 30845\neWVjdG8= 30846\nIG1hbnVmYWN0dXJl 30847\nIOKAiw== 30848\nIGJib3g= 30849\nIGVhcnRocXU= 30850\nb2xsZWN0b3Jz 30851\nOkAiJQ== 30852\nIGxvb3Bz 30853\nSmU= 30854\nYWxraW5n 30855\nIFdoYXRz 30856\nIEJveXM= 30857\nLmJvb2s= 30858\nQVJHRQ== 30859\nX3BpeGVs 30860\nIHN1c3BlY3Rz 30861\nzrk= 30862\ndXNw 30863\nIEJNVw== 30864\naWVjZXM= 30865\nKHBlcnNvbg== 30866\n5byA 30867\n6bs= 30868\nIFBvZGNhc3Q= 30869\nIGJvdQ== 30870\nKEl0ZW0= 30871\nw7s= 30872\nKElucHV0 30873\nSHR0cEdldA== 30874\nIGJ1cmc= 30875\nKV4= 30876\nQk9BUkQ= 30877\nKi8s 30878\nIGd1bHA= 30879\nIEJlbm4= 30880\nIGRlY2tz 30881\nLnN0YXR1c0NvZGU= 30882\nIGFjdXRl 30883\nIGh1Zw== 30884\ndWd1 30885\nIHBsZWQ= 30886\nLCIl 30887\naGFwZQ== 30888\nINC30LDQvw== 30889\nIE1haW5l 30890\nLnJlYWw= 30891\nIGRhbGFt 30892\nIE1pbm9y 30893\nLkZsb2F0 30894\nZGlzcA== 30895\nIHRs 30896\nIGVuY291bnQ= 30897\nPT4k 30898\nIGZn 30899\ndGVlcw== 30900\nIFJlY29tbQ== 30901\nw6Rs 30902\nIGNoZW1pc3RyeQ== 30903\nQmxvY2tz 30904\nT0lE 30905\nIGZvcmV4 30906\nIEFwcGVuZA== 30907\nIHsq 30908\nIFN1cHBseQ== 30909\nQ0dGbG9hdA== 30910\nKGJs 30911\nIGF0ZQ== 30912\nYWRvcmE= 30913\nIGd1c3Q= 30914\nQXNzb2Np 30915\nPi4K 30916\nRkVUQ0g= 30917\nLnNlcmlhbA== 30918\nd2lkZ2V0cw== 30919\nYXJkbGVzcw== 30920\naWVmcw== 30921\nX0ZVTEw= 30922\nZXJuZXRlcw== 30923\nIFByZWQ= 30924\n2K0= 30925\n5LqL 30926\ndWJlcm5ldGVz 30927\nIExhdXJh 30928\nIGxhYmVsZWQ= 30929\nSGlnaGxpZ2h0 30930\nIGFubm95aW5n 30931\nL3VwZGF0ZQ== 30932\nKGRlc2NyaXB0aW9u 30933\nIGludGltaWQ= 30934\nJGM= 30935\nIikpKQo= 30936\nLkFQ 30937\nIFtdKg== 30938\nIEVYSVQ= 30939\nLkhvc3Q= 30940\nIE9QRU4= 30941\nLnNlbmRNZXNzYWdl 30942\nX2NhbWVyYQ== 30943\nX3RpbGU= 30944\nIHRoZXJt 30945\nb25vbW91cw== 30946\nIGRpc2Fkdg== 30947\nIG5hYXI= 30948\naW5kZXhPZg== 30949\nIFBQ 30950\nLnByb3RvY29s 30951\nQUZF 30952\nIHRleHR1cmVz 30953\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 30954\ndW1iYWk= 30955\nLnN0YXRz 30956\nIEdF 30957\nIGll 30958\nIFNURA== 30959\nIE1hbm4= 30960\nLnJlZmxlY3Q= 30961\nS0I= 30962\nIGRpdmU= 30963\nLndhdg== 30964\nLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 30965\nL3NldHRpbmdz 30966\nLmxpZmVjeWNsZQ== 30967\nIGRhdWdodGVycw== 30968\nb3J1cw== 30969\ndWJlcg== 30970\nTklORw== 30971\nc3RyaQ== 30972\nIFRpcA== 30973\nIHpu 30974\nIHN3aXRjaGVk 30975\naW5ldA== 30976\ndWZmeQ== 30977\nIFRyYW5zcG9ydGF0aW9u 30978\nKGNvbmY= 30979\nZnJpY2E= 30980\nIFhM 30981\nIExlYWQ= 30982\nX3BlcmNlbnQ= 30983\nPE1hcA== 30984\nIHRocnVzdA== 30985\nb3Ji 30986\naWtr 30987\nIHRyYXVtYQ== 30988\nQWNjZXNzb3I= 30989\nIEZpdA== 30990\nIFN0cmluZ0J1ZmZlcg== 30991\nZXhwbA== 30992\nKHNjcmVlbg== 30993\nIGF1ZGllbmNlcw== 30994\nIE9QVElPTg== 30995\nX3JvdW5k 30996\nW25vZGU= 30997\nYmVo 30998\nLT5fXw== 30999\ncGVybWlzc2lvbnM= 31000\nIERldGVybWluZQ== 31001\nLk1hbg== 31002\nIGFkdmFuY2Vz 31003\nLklucHV0U3RyZWFt 31004\nIHN0cm9uZ2VzdA== 31005\nIGVCYXk= 31006\nICMt 31007\nIGRpcm5hbWU= 31008\nIFNNUw== 31009\nIG1lZGljYXRpb25z 31010\nIGFtZW5kZWQ= 31011\nIGNodXJjaGVz 31012\nIEltcGVyaWFs 31013\nJHJvdw== 31014\nIE1hZGlzb24= 31015\nIEluc3A= 31016\nIGFmZmFpcg== 31017\nIHBzeWNob2xvZ3k= 31018\ndmg= 31019\nIHNldmVyaXR5 31020\n4oCQ 31021\nIHN0cmlwcw== 31022\nQUg= 31023\ndmVydGlzaW5n 31024\nIGNvbnNl 31025\nSU1BR0U= 31026\nIFN0YXRz 31027\nCXNj 31028\nLkN1cnNvcg== 31029\nIGZyZWV6ZQ== 31030\nc3Nvbg== 31031\nKHhtbA== 31032\nIFN1c2Fu 31033\nLnRpbGU= 31034\nZWRlZA== 31035\nICAgIAkJCQ== 31036\ndWVsbGU= 31037\nIE1pdGNoZWxs 31038\nYmFzZWQ= 31039\nT3BlcmFuZA== 31040\nveaVsA== 31041\nIEZG 31042\nCXN0cmNweQ== 31043\nb3VuY2Vz 31044\naWxkbw== 31045\nLmV4ZWN1dGVRdWVyeQ== 31046\nIGFwcHJvYWNoaW5n 31047\nIFNldmVu 31048\nIG51dHM= 31049\nIHJpYw== 31050\nYXNzaWdubWVudA== 31051\nIGNhbGN1bGF0b3I= 31052\nIE11cnBoeQ== 31053\nIEJvdQ== 31054\n7YQ= 31055\nIGJ1dHQ= 31056\nIHRpY2tz 31057\nUHJvamVjdHM= 31058\naWxpYg== 31059\nLnRleHRDb2xvcg== 31060\nbW92 31061\nX2xvZ28= 31062\nKHRlbXBsYXRl 31063\nIElOSVQ= 31064\nIGltYWdlVmlldw== 31065\nc2NyaXB0aW9ucw== 31066\nT1JJVFk= 31067\nQ29uc3VtZXI= 31068\nIHVucHJlY2VkZW50ZWQ= 31069\nIHRvdXJpc3Q= 31070\nIGJyb24= 31071\nIGNvbnRyYWN0b3I= 31072\nIGxpY2VuY2U= 31073\nIE5hbQ== 31074\n5q8= 31075\nKHRyYW5zZm9ybQ== 31076\nX0FUVA== 31077\nUHJlZg== 31078\nIEdhbQ== 31079\nIHZlc3NlbHM= 31080\nIGhhdg== 31081\nTGF0ZXI= 31082\nLlRvTG93ZXI= 31083\nIHVybHM= 31084\nIGJyZWFrZG93bg== 31085\nIHBlbmFsdGllcw== 31086\nIGZvc3Rlcg== 31087\nIFVF 31088\nIGNsdWU= 31089\nY29tZWQ= 31090\n5ZCN56ew 31091\nLW1haW4= 31092\nIHB0cw== 31093\nIGNvdW50ZWQ= 31094\naWN0cw== 31095\nL3Bvc3Q= 31096\nIGdldGF0dHI= 31097\nIHBpbmc= 31098\nQU5DRUw= 31099\nIHBlYw== 31100\n0YXQvtC0 31101\nYW50b20= 31102\nIEJsdWVwcmludA== 31103\nIEV2ZW50RW1pdHRlcg== 31104\nIGzDpA== 31105\n5rI= 31106\nIHN0cmF3 31107\nKGNvbXA= 31108\nJ3VuZQ== 31109\nPk4= 31110\nLWNsaWVudA== 31111\nZXNNb2R1bGU= 31112\nLWJhc2U= 31113\nIHJldHJlYXQ= 31114\nX3NpbXBsZQ== 31115\nCQkJCQkJIA== 31116\nZmVl 31117\nJykNCg0K 31118\nQ29udHJvbEl0ZW0= 31119\nIHN1YnNjcmliZXJz 31120\ncGxlYXNl 31121\nIEVmZg== 31122\nIHBvdW5k 31123\nIEJ5dGVz 31124\nIFRlYQ== 31125\nX2FjdGl2aXR5 31126\nIG1heGlt 31127\nIG9wY29kZQ== 31128\nQlNE 31129\nLmNvbnN0YW50 31130\nO30= 31131\nb21icmVz 31132\nIGNhcmVlcnM= 31133\nKS4KCgoK 31134\nIHNwcmVhZGluZw== 31135\nLWV4cGFuZGVk 31136\nIE9yZA== 31137\nYW1hcmlu 31138\nIG1vYmlsaXR5 31139\nVW5mb3J0dW5hdGVseQ== 31140\nYWtr 31141\nTkw= 31142\nX3JlZGlyZWN0 31143\nIFBH 31144\nIFNlbnNvcg== 31145\nYm9s 31146\ndGFw 31147\nX01FTU9SWQ== 31148\nIFVJQWxlcnQ= 31149\ncGxpdHVkZQ== 31150\nV2Vic2l0ZQ== 31151\nIExvZ28= 31152\nbG92ZQ== 31153\nW2luZA== 31154\nIGFsdG9nZXRoZXI= 31155\nIHdvbmRlcmVk 31156\nIGVzcGVy 31157\nIExpYmVyYWw= 31158\nIG9zcw== 31159\nIGVsaXQ= 31160\nIHN0aWZm 31161\nb2RveA== 31162\nX21lbnRpb25z 31163\nIERvdWdsYXM= 31164\nX3BpZA== 31165\nIENL 31166\nIGluaXRXaXRoRnJhbWU= 31167\nLmJsb2c= 31168\ncGtn 31169\nYW5naGFp 31170\nUVVJUkVE 31171\ndXU= 31172\nIG1rZGly 31173\nQVRBTA== 31174\nIHVuaA== 31175\naW5jZXM= 31176\nc3Ro 31177\nIGh5cG90aGVzaXM= 31178\nIGNhdGE= 31179\nIFRC 31180\nIENsYXI= 31181\nIHByZWRlY2Vzcw== 31182\nIHNpdHVhdGVk 31183\nLXdvcmxk 31184\nKSkv 31185\nIGhlYWRsaW5lcw== 31186\nLnN0YXQ= 31187\nIG91dGJyZWFr 31188\nc3BhdGg= 31189\nX0ZMQUdT 31190\nIFNlcnZsZXRFeGNlcHRpb24= 31191\nU3Vu 31192\nRlJPTQ== 31193\nIERpcg== 31194\n44O744O744O7 31195\nX2Nvb3Jk 31196\nIE9wdGlt 31197\nTW9uaXRvcg== 31198\nLmJpdA== 31199\nWFhY 31200\nIHRvZGFz 31201\nZmVsZA== 31202\n0YDQuA== 31203\naW1pcg== 31204\nIHBvbGl0aWNhbGx5 31205\nIG1vbGVjdWxhcg== 31206\nIHRyYWRlZA== 31207\nIHt7JA== 31208\nIFN3ZWRpc2g= 31209\nICdALw== 31210\nX1JFQUw= 31211\nIHdhcmVob3VzZQ== 31212\ndG9kYXk= 31213\nLEw= 31214\nb3Jw 31215\nPHNlY3Rpb24= 31216\nLWJy 31217\neW1l 31218\nIFVzZXJTZXJ2aWNl 31219\nIGxpYmVydHk= 31220\nIG1vbWVudG8= 31221\nKEltYWdl 31222\nPHNpemU= 31223\nU2No 31224\nIGpvZw== 31225\naW9sb2d5 31226\nYXJlbnRseQ== 31227\nIHF1YW50dW0= 31228\nIEFidQ== 31229\nIHJpbQ== 31230\nIG1hbmE= 31231\nRm9udFNpemU= 31232\nQnVpbGRpbmc= 31233\nc3RhaXJz 31234\nQUlMQUJMRQ== 31235\nICYn 31236\nIHNlY3Q= 31237\nIHNpZ2g= 31238\nKGJhdGNo 31239\nLklDb250YWluZXI= 31240\ncG9sbA== 31241\nIENvcnBz 31242\nzrU= 31243\nYXJ1 31244\nIEtheQ== 31245\nLnJhbmdl 31246\nX2NsaWNrZWQ= 31247\nIFJvYmVydHM= 31248\nLk5ldHdvcms= 31249\nZmluaXNo 31250\nLU1hbg== 31251\nIGNvbGxlZ2Vz 31252\nIEZpbmU= 31253\nIikpLAo= 31254\nZmlsbQ== 31255\nIHJlbWluZGVk 31256\nIGdlc3R1cmU= 31257\nb3V0aWw= 31258\nIHRocmVhZGluZw== 31259\nIG9iamV0 31260\nIHRvdXJz 31261\nYWN0aXZhdGVk 31262\nLm1rZGly 31263\nPXVzZXI= 31264\nIHJlZGU= 31265\nZsO8 31266\nX1NZU1RFTQ== 31267\ncHY= 31268\nIGNvbmdy 31269\nIG1hc3Nhc2pl 31270\nIHByYWN0aXRpb24= 31271\nVW5pdmVyc2l0eQ== 31272\nIHRhYmluZGV4 31273\n0Jg= 31274\nU2V0cw== 31275\nIGNvdW50aWVz 31276\nZ3Vlc3Q= 31277\nZmFu 31278\nIHdvcmRlbg== 31279\nLmRp 31280\n0L3QsNGH 31281\nwr8= 31282\naWdEZWNpbWFs 31283\nIHNob3Jl 31284\nIGfDtg== 31285\nIHJlcGFpcnM= 31286\nIGhlbHBlcnM= 31287\nIGNlbnRlcmVk 31288\nT0xMT1c= 31289\nIG1hcFN0YXRlVG9Qcm9wcw== 31290\nIGNlbnRz 31291\nPEE= 31292\nIGV4cGVjdGF0aW9u 31293\nT2N0b2Jlcg== 31294\nIGJnY29sb3I= 31295\nY2FsZXM= 31296\nLkNPTg== 31297\nIFZlbA== 31298\nIGNyeWluZw== 31299\nLXNlYXNvbg== 31300\nIGZ1bmN0aW9uaW5n 31301\nX0xPQ0FUSU9O 31302\nw7xzcw== 31303\nYmVyeQ== 31304\nUGFyYQ== 31305\nb21pbmF0b3I= 31306\nLWxl 31307\nIGV0aGljYWw= 31308\naGFzaHRhZ3M= 31309\nZW1wbG8= 31310\nIG7Dum1lcm8= 31311\nKGFjdGl2aXR5 31312\nLlN0b3A= 31313\nLnN0cmZ0aW1l 31314\nSUxE 31315\nIHRvZQ== 31316\nCU5vZGU= 31317\nIikNCg0K 31318\nIFB1ZXJ0bw== 31319\nIGV4ZWN1dGluZw== 31320\nIEdVSUQ= 31321\nIG9wcG9zaW5n 31322\nYWxwaA== 31323\nIGV4aGliaXQ= 31324\nX2ZsYXNo 31325\nIG1laWxsZQ== 31326\nIGpzb25PYmplY3Q= 31327\nSGVybw== 31328\nYWludGVk 31329\nX0RPTQ== 31330\nIHdpbA== 31331\nIHNsb3Bl 31332\nIG3DpQ== 31333\nIElyYXFp 31334\nIG9yZ2FuaXpl 31335\nCWpRdWVyeQ== 31336\nSFVE 31337\nc2hpbmU= 31338\nLndl 31339\nIFNraWxscw== 31340\ncG9uc29y 31341\nIGNvbmNsdXNpb25z 31342\nIHJlZm9ybXM= 31343\nIHJlbHVjdA== 31344\nbmFtZWQ= 31345\nIE9saXZlcg== 31346\nIC8vfQo= 31347\nLWxvb2tpbmc= 31348\nIGZvZw== 31349\nIEhP 31350\nIEZyaWVk 31351\nIGluZXZpdGFibGU= 31352\nIERhdGFHcmlkVmlldw== 31353\nSG91cg== 31354\naWxsZXM= 31355\nbG9naWNhbA== 31356\nIGNvbm5lY3Rpdml0eQ== 31357\nLnR3aWc= 31358\nIEt5bGU= 31359\nKGRzdA== 31360\nLVNo 31361\nIFN0dWRpb3M= 31362\nKExldmVs 31363\nLmpldA== 31364\nX1BST1RP 31365\nLWRlY29yYXRpb24= 31366\nT1RIRVI= 31367\nIHJlYWRpbHk= 31368\nLlBhcmFtZXRlcg== 31369\nIG11bHRpcGx5 31370\nIExJQg== 31371\nYXJtZWQ= 31372\nIHNvb25lcg== 31373\n5oQ= 31374\nX0VT 31375\nIGZvc3NpbA== 31376\nIEFuYw== 31377\n4oCcVGhpcw== 31378\nbG9kYXNo 31379\nUHl0aG9u 31380\nIGhpc3RvZ3JhbQ== 31381\nd2VzdGVybg== 31382\nIGluZmFudA== 31383\nIGNvb3JkaW5hdG9y 31384\nIG5pYg== 31385\nOm0= 31386\nIHJlc3BlY3RlZA== 31387\nIGRlZmluaXQ= 31388\nJlQ= 31389\nX3BhZA== 31390\nIFRyaWdnZXI= 31391\ndGhhbA== 31392\nIGltYWdlTmFtZWQ= 31393\nIGJlYXRlbg== 31394\nCXJj 31395\nIFBhbGFjZQ== 31396\nIGhhemFyZA== 31397\nIGlzb2xhdGlvbg== 31398\nX3Jj 31399\nY29udHJl 31400\nT1VUUFVU 31401\nIHJlaWdu 31402\nIFBsYXRl 31403\nQVRFUw== 31404\nIGZsdXg= 31405\nIHBhY2tz 31406\nLmdldFNlbGVjdGVk 31407\nIHBhcnRpY2lwYXRlZA== 31408\nIG5lZWRsZQ== 31409\nLWRlcHRo 31410\nOjo6Ojo6 31411\nLWxhdw== 31412\naW5zcGFjZQ== 31413\nb25pdG9y 31414\nPW5v 31415\nIEF0b21pYw== 31416\nIEJyYWlu 31417\nRWRpdGFibGU= 31418\nLXNj 31419\ncmVkZW50aWFs 31420\nIFBlcnJ5 31421\na2ll 31422\nIC0tLS0tLS0tLS0K 31423\nLnN0cm9rZQ== 31424\nKEludGVudA== 31425\nIHVuaXR5 31426\ndW1sYWg= 31427\nRnVydGhlcg== 31428\nIHByemU= 31429\nIHPDuA== 31430\n44KK 31431\nIFBST0NVUkVNRU5U 31432\nIEhvdXNpbmc= 31433\nIGF0dG9ybmV5cw== 31434\nIGNvbXBvc2U= 31435\nYXR0ZXJpbmc= 31436\nIldoYXQ= 31437\nZHJhdWw= 31438\nIHN0cmFpZ2h0Zm9yd2FyZA== 31439\nSW5zdGFudA== 31440\nLkpUZXh0RmllbGQ= 31441\nIHRyYWRlcw== 31442\n0LvQsA== 31443\nIHsh 31444\nIGxhdGVseQ== 31445\nSU1H 31446\nIEFsZA== 31447\nIElOTkVS 31448\nIGNhcnRvb24= 31449\nLlNvdXJjZQ== 31450\nRkFMU0U= 31451\nIGRvdWdo 31452\nZmVu 31453\nKHJlY3Q= 31454\nRGF0YVRhYmxl 31455\nTmljaw== 31456\nIEJ1dHRlcg== 31457\ncmVhZHM= 31458\nX2NvbW1lbnRz 31459\nRU5W 31460\nIENvbm5lY3RpY3V0 31461\nLUZJUlNU 31462\nCQkJICAgICA= 31463\nYWNoaQ== 31464\nLk1zZw== 31465\ncmVjdGlvbg== 31466\nIHJlbGF4ZWQ= 31467\nIHNoYWZ0 31468\nIGVm 31469\nIEFkZGluZw== 31470\nIGJyZWFjaA== 31471\nIO+8mg== 31472\ncmFtYQ== 31473\nIGNvbmR1Y3Rpbmc= 31474\nICg7 31475\nKGds 31476\nIENBVVNFRA== 31477\nYXNoaQ== 31478\nIEZMQUc= 31479\nIENvbW1lcmNl 31480\nIElOVEVHRVI= 31481\naG91cnM= 31482\nIFNjaG9vbHM= 31483\nIG51Y2xl 31484\nQWdhaW4= 31485\ncHJvag== 31486\nIHNldmVudGg= 31487\nRU1QTEFSWQ== 31488\nKG1vY2s= 31489\nJ10sDQo= 31490\nX1NQRUVE 31491\nPmZhbHNl 31492\nIHNwYQ== 31493\nIE5lYXI= 31494\n7JU= 31495\nIGludHJpZw== 31496\nX21lbWJlcnM= 31497\nd2F2ZQ== 31498\nIGFuYWx5c3Rz 31499\nX09T 31500\nZWRpbg== 31501\nIEZyaQ== 31502\nIHJldHJpZXZlZA== 31503\nUmVndWxhcg== 31504\nX29icw== 31505\nRVhQT1JU 31506\nJyl9fSI= 31507\nImNsYXNz 31508\nX18oKA== 31509\nYnVja2V0 31510\nIHN0cm8= 31511\nIFBhdGNo 31512\neXN0aWNr 31513\nZnVsbmVzcw== 31514\nYXBvcw== 31515\nRGE= 31516\nCQkJCQkgICA= 31517\nIGVucmljaA== 31518\ndW5vcmRlcmVk 31519\naG9sZQ== 31520\nQ29uZw== 31521\nPFByb2R1Y3Q= 31522\nIEN1cnQ= 31523\nKHRoZQ== 31524\nX2xvd2Vy 31525\nIGF2b2lkaW5n 31526\nIGJ1eno= 31527\nIHZpYWJsZQ== 31528\ndWJh 31529\nLWlz 31530\nYXJlbA== 31531\nIGFjdGVk 31532\nLWRldGFpbHM= 31533\n4LiH 31534\nIFRoZW9yeQ== 31535\nIFB1bg== 31536\nIEFub255bW91cw== 31537\nLi4uIgo= 31538\nw6hyZXM= 31539\n5Y+v 31540\nIFZpc2lvbg== 31541\nX3NlbQ== 31542\nYXNoYQ== 31543\nIGNlbGVicml0eQ== 31544\nIGVuZERhdGU= 31545\nIHBvcHVsYXRl 31546\nIGN1aXM= 31547\ncXVhbnQ= 31548\nZmxvb3I= 31549\nIGdsb2JhbGx5 31550\nIGNydWlzZQ== 31551\nIFN0YW5sZXk= 31552\nIGJpa2Vz 31553\nLmdldENvbm5lY3Rpb24= 31554\nIHBvb3JseQ== 31555\nX290aGVy 31556\nYW1waW5n 31557\nLiIpOwoK 31558\nb2Rp 31559\nX0FETUlO 31560\nLmNvbG9ycw== 31561\nIEdhbWluZw== 31562\nPic7Cgo= 31563\nU1RSVUNU 31564\nUVI= 31565\nSURz 31566\nKGFyZ3VtZW50cw== 31567\nX2F1eA== 31568\nKEV2ZW50 31569\nX1BSSVZBVEU= 31570\nIFRyZWs= 31571\nIGRvd25sb2Fkcw== 31572\nbXV0YWJsZQ== 31573\nX1NUUlVDVA== 31574\nKHd4 31575\nIGRvbWFpbnM= 31576\nanNweA== 31577\nIFZpYWdyYQ== 31578\nQ29tbWFuZHM= 31579\nSnM= 31580\nLmNmZw== 31581\nQ29udGVudFBhbmU= 31582\nIEVkaXRUZXh0 31583\n4KWN4KQ= 31584\nQXR0YWNo 31585\nIEFSTQ== 31586\ncG9zaXRpdmU= 31587\nIEdlbmVyYXRlZA== 31588\nIHNlaXplZA== 31589\nPTo= 31590\nIGVsZWN0cm9uaWNz 31591\nIEFwcENvbXBvbmVudA== 31592\nLycsCg== 31593\nLmVxdWFsc0lnbm9yZUNhc2U= 31594\nRG9jdHJpbmU= 31595\nZGlzaw== 31596\nIFBvbGl0aWNhbA== 31597\nQ0hP 31598\nPEY= 31599\nCWhlaWdodA== 31600\nIEJ1Zw== 31601\nLmxl 31602\naWto 31603\nIG1pbGxpc2Vjb25kcw== 31604\nIGNvbnN0aXR1 31605\nbWFn 31606\nLm5s 31607\nLXJhbmdl 31608\nYW5nZ2Fs 31609\nJyxb 31610\ncm9wb2xpdGFu 31611\nIMOc 31612\nIFVD 31613\nLmRlc2M= 31614\nLUxBU1Q= 31615\nZnN0cmVhbQ== 31616\naWJpbA== 31617\nIGZpZXI= 31618\nVkVSWQ== 31619\nIOuz 31620\nSVJU 31621\nX1VJ 31622\nKGFicw== 31623\nIGtuZWVz 31624\nIHJvb2tpZQ== 31625\nIFZhYw== 31626\nYXJlbmE= 31627\nY29tbWVuZA== 31628\nLVw= 31629\nIFNVQlNUSVRVVEU= 31630\nU29mdA== 31631\nIHBhcnRpcg== 31632\nd2VhbHRo 31633\n6KaB 31634\nKGRhdGFzZXQ= 31635\nIENsaW1hdGU= 31636\nLXNob3c= 31637\nIHJlbGlhYmlsaXR5 31638\nX2NodW5r 31639\n5Luj 31640\nX3N0b2Nr 31641\nIEVYRU1QTEFSWQ== 31642\n77iP 31643\nIHbDrQ== 31644\nIHNtaWxlZA== 31645\nIGRyaWxs 31646\nLkZ1bmN0aW9u 31647\nIFNJ 31648\nIHJlZ3Jlc3Npb24= 31649\nLVg= 31650\nIEphcg== 31651\ncHJlZg== 31652\nCXN1Y2Nlc3M= 31653\nIEhpdGxlcg== 31654\nIGluc3RpbmN0 31655\nIGZlbW1lcw== 31656\nIGxvdmVy 31657\nPAo= 31658\nIG11bHRpcGxpZXI= 31659\ncmls 31660\nUmVzaXpl 31661\nIEF1dGhvcml6YXRpb24= 31662\nIEthbg== 31663\nRGlzcGF0Y2hUb1Byb3Bz 31664\nIGNyb3Bz 31665\ndG9rZW5z 31666\nZWNu 31667\nZW50aWFsbHk= 31668\nIElOVEVSUlVQVElPTg== 31669\nZmFrZQ== 31670\nVW5kZWZpbmVk 31671\nIEFL 31672\nIFRlc3RDYXNl 31673\nIHJhYg== 31674\nIHRvcnJlbnQ= 31675\nIE90 31676\nQmFycw== 31677\nIGxlY3R1cmU= 31678\nIGVuam8= 31679\nIHJlc3BvbmRz 31680\nIGluZGV4ZWQ= 31681\nT2ZXb3Jr 31682\nX2NoYWlu 31683\nKSktPg== 31684\nIEJlYXV0eQ== 31685\nIGA8 31686\nIHRvdWNoaW5n 31687\nIHwtLQ== 31688\nCWZsYWc= 31689\nbm9ybWFsaXpl 31690\nIHRyYXBwZWQ= 31691\nIGVzdGFibGlzaGluZw== 31692\nL2J1aWxk 31693\nQUo= 31694\nZnk= 31695\nLXJlYWN0 31696\nYXZu 31697\nUklQVElPTg== 31698\nIGt1dA== 31699\nIEZhc2hpb24= 31700\nIEluZm9ybQ== 31701\nY3VyaXRpZXM= 31702\nPGJ5dGU= 31703\nIFVrcmFpbg== 31704\nIHN1Zw== 31705\nIGNvbnNpc3Rpbmc= 31706\nb29kbGU= 31707\nLmN0eA== 31708\nLlRvTGlzdA== 31709\nIGNvbW1lbnRhcnk= 31710\nIHRyYW5zZmVycw== 31711\nIG5vc3Q= 31712\naWhhZA== 31713\nIFVwcGVy 31714\nIGNvbmZ1c2luZw== 31715\nbWlzc2luZw== 31716\nLWNs 31717\nIGJvdW5kaW5n 31718\nIGNvbmdyZXNzaW9uYWw= 31719\nIHJldmVhbGluZw== 31720\nZGg= 31721\ncnVw 31722\nIHRyZXM= 31723\ncmVwZWF0 31724\nLAoKCgo= 31725\nX3RhYw== 31726\nIGV4cGVk 31727\nR2lybA== 31728\naG9yaXpvbnRhbA== 31729\nICIuLi8uLi8uLi8= 31730\nKG9wdGlvbg== 31731\nIHdlaXRlcg== 31732\nCXNxbA== 31733\nID0+ewo= 31734\nIGdhcmxpYw== 31735\nIHJlcHI= 31736\nIHJlcGxpZXM= 31737\nKHByb3A= 31738\nIHNwaXJpdHM= 31739\nIGluc3BpcmU= 31740\nIGJhc2VtZW50 31741\nLnJlamVjdA== 31742\nIGhpbnRz 31743\nIHBvbGxpbmc= 31744\nCSAK 31745\nX3JhdGluZw== 31746\nIGNhdGg= 31747\nYXZpZXI= 31748\nIGNvbXByZXNzZWQ= 31749\nIFZT 31750\nXSc= 31751\nIGp1ZGljaWFs 31752\nIFRyZW5k 31753\ndHJhaW5pbmc= 31754\nRVNUQU1Q 31755\nb2duaXRpb24= 31756\nxIE= 31757\nU0VOVA== 31758\ndmVudGlvbnM= 31759\nIGNvbnN1bHRhbnQ= 31760\ndW1waA== 31761\nIHVzZXJTZXJ2aWNl 31762\nLE5VTEw= 31763\na2g= 31764\nRGVhcg== 31765\nX0JBRA== 31766\naXRhdGlvbnM= 31767\nIG1ldGFwaA== 31768\nJ8Op 31769\nYW5kaXNl 31770\nLWZvbnQ= 31771\nLmNoYXJ0 31772\nIHNn 31773\nX0NvbnRyb2xsZXI= 31774\nLmpwZWc= 31775\nIFVMT05H 31776\nCWdhbWU= 31777\nKHNz 31778\nIE1hag== 31779\nCWdv 31780\nIFNhZA== 31781\nIEJlcmc= 31782\nIE1pbmU= 31783\nUGFjaw== 31784\nIHJlc2lzdGFudA== 31785\nIFJPTQ== 31786\nIHBlZw== 31787\nIFN0YW5mb3Jk 31788\nIFlhaG9v 31789\nIHNjYWxlZA== 31790\nIGxhbg== 31791\nPVtd 31792\nIi8+PC8= 31793\nIHBsb3Rz 31794\nLioK 31795\nIHRyYXZlbGVk 31796\nIE9zY2Fy 31797\nVkw= 31798\nIGxpbmtpbmc= 31799\nIHRpcmVz 31800\nICcqJw== 31801\nIEJ1ZmZlcmVk 31802\nZXJp 31803\nICoqKio= 31804\nIG92ZXJsb29r 31805\nLk5vbg== 31806\nIHLDqXM= 31807\nIGVneQ== 31808\n5bCP 31809\nIGF0dGFja2Vy 31810\nCQkJCQkJCQkJCQkJCQkJ 31811\nLnN5bmM= 31812\nQVNDQURF 31813\nR3JvdW5k 31814\nIGRlY2F5 31815\nIFRvbg== 31816\nIGpld2Vscnk= 31817\nIGJ5cGFzcw== 31818\nIG1lbWJy 31819\nUk5B 31820\nPFN5c3RlbQ== 31821\nIE1lZGljYXJl 31822\nKG5ldA== 31823\nb3Np 31824\nSEI= 31825\nREVD 31826\ne0VJRg== 31827\nX2ZpbGw= 31828\nIHRyYXZlbGxpbmc= 31829\nb2JzZXJ2ZXI= 31830\nIGNvbnN1bHRpbmc= 31831\nUkVBVA== 31832\nUGhhc2U= 31833\nKGlp 31834\nIFNVTQ== 31835\nPg0NCg== 31836\nIHN1ZA== 31837\nCWJhY2tncm91bmQ= 31838\nIHNjaG9sYXJz 31839\nLW11dGVk 31840\nYXLDoQ== 31841\nID09PT09 31842\nIF9fX18= 31843\nQ3JlYXQ= 31844\nZW5ldmVy 31845\nL3dw 31846\nIFZQTg== 31847\nRXJyb3JDb2Rl 31848\nKV0sCg== 31849\nKGJ1aWxkZXI= 31850\nIEVuZW15 31851\nU2Vuc29y 31852\ndXNh 31853\nIHRyaWdnZXJz 31854\nIHBsYXlvZmZz 31855\nX1JFUQ== 31856\nICh+ 31857\nIEJhcnJ5 31858\nIHBlcm1hbmVudGx5 31859\nIFJVTg== 31860\nIGJ1cmU= 31861\nLkZhdGFsZg== 31862\nIGNoaWNr 31863\nCXBhbmlj 31864\ncHNp 31865\nb2th 31866\n6YCJ 31867\nPls= 31868\nIHVuZGVyc3RhbmRz 31869\nIEp1bmlvcg== 31870\nIElORk8= 31871\nPW15c3FsaQ== 31872\ndXN0YWlu 31873\nLXNvdXJjZQ== 31874\nc2Vydg== 31875\nIENSRUFURQ== 31876\nLmF1 31877\nIHNlbGxz 31878\nICAKICAK 31879\nRXVyb3Bl 31880\nenc= 31881\ncHJlaA== 31882\nIE5TQQ== 31883\nIHh5 31884\n4Li0 31885\nIEJleW9uZA== 31886\nSW5zdGVhZA== 31887\nTm9uUXVlcnk= 31888\nIGFyaXNl 31889\nIGF2b2lkZWQ= 31890\nLmVtcGxhY2U= 31891\nX21vZGVscw== 31892\nfSksCg== 31893\nIGhpZA== 31894\nICZf 31895\nLnBvaW50cw== 31896\nLmdldFdpZHRo 31897\nLkV4ZWM= 31898\nIC8vLy8= 31899\nIFNlc3Npb25z 31900\nLi4uXA== 31901\nIENvbG9tYg== 31902\nIGFjY2VsZXJhdGlvbg== 31903\ncmVzdG9yZQ== 31904\nIGlsZQ== 31905\nb2JpYw== 31906\nPE5vZGU= 31907\nIERY 31908\nIEJlc2lkZXM= 31909\nLmFnZQ== 31910\nIENvbnRhaW5z 31911\nTmF0aW9uYWw= 31912\nIEltcGxlbWVudGF0aW9u 31913\nIGVmZmlj 31914\nIFJN 31915\nSHk= 31916\nIFdlZGRpbmc= 31917\nb2tpZXM= 31918\nIHJlY3Vyc2l2ZQ== 31919\nIHByb3NlY3V0b3Jz 31920\nLlNlbGVjdGlvbg== 31921\nIEZvcm11bGE= 31922\nQmVlbkNhbGxlZA== 31923\nW2lp 31924\nIEZyYW4= 31925\nIHRyYWdlZHk= 31926\nX0ZFQVRVUkU= 31927\nmag= 31928\nY29tcGFzcw== 31929\nIEJo 31930\nPwoKCg== 31931\nLndyaXRlcg== 31932\nIEhvdXI= 31933\nRGJDb250ZXh0 31934\naW92 31935\nYW1vbg== 31936\ncmVwcg== 31937\n6YM= 31938\nCWZp 31939\nJ11d 31940\nIERyeQ== 31941\nLnJv 31942\nIE9ic2Vydg== 31943\n5qCH 31944\nRm9ybWVy 31945\nIEJhbGFuY2U= 31946\nCWpzb24= 31947\nIHByenk= 31948\nSVNT 31949\nKHNvY2s= 31950\nIExJTkU= 31951\nIGRlY2U= 31952\nIGFsbHk= 31953\nIHRlbmRlbmN5 31954\nRnVu 31955\nIHNjaGVtZXM= 31956\nIGludGVydmVu 31957\n5piO 31958\nIGFkdmVyc2U= 31959\ncXVvdGVsZXY= 31960\nIHNhY3JpZmlj 31961\nX3NpZGU= 31962\nIG11dGV4 31963\nQUdJQw== 31964\nIG9jY3VycmluZw== 31965\nIENvbW11bmljYXRpb24= 31966\ndW1hcg== 31967\n57yW 31968\nIFRyZWF0bWVudA== 31969\nLnBlcnNvbg== 31970\nIExD 31971\nIGVjaA== 31972\nKCgi 31973\nIERpc2Vhc2U= 31974\nw6Rk 31975\nIEFa 31976\nLkFjY291bnQ= 31977\nIGNvbnRpbnVvdXNseQ== 31978\nRU5ESU5H 31979\nIFJFVFVSTg== 31980\nLXN0cmluZw== 31981\nLmZpbGVuYW1l 31982\nc3ludGhlc2l6ZQ== 31983\nUmVzcG9uZGVy 31984\nKG9wdHM= 31985\ncmVncw== 31986\nIG51ZXN0 31987\nUGVlcg== 31988\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 31989\nIGdhdWdl 31990\nIEtpbg== 31991\nLnNjaGVtYQ== 31992\nIGFycmFuZ2U= 31993\nIEJsYWtl 31994\nX1R5cGVJbmZv 31995\nQ292ZXI= 31996\nIEhhbXBzaGlyZQ== 31997\nUGFwZXI= 31998\nLWlubmVy 31999\ndXRpbGl0eQ== 32000\nIGNyb3Nzb3JpZ2lu 32001\nRk9S 32002\nIGlnbm9yaW5n 32003\nIERE 32004\nYXZhbg== 32005\nIHRyYWRpdGlvbnM= 32006\nIGdldFN0cmluZw== 32007\nIGV0aGljcw== 32008\nIE1hdGVyaWFscw== 32009\nREVTQw== 32010\nIGVuenlt 32011\naW9sZXQ= 32012\nIENoaXA= 32013\nIE1jRG9uYWxk 32014\nIG5lcnZl 32015\n54Q= 32016\nIild 32017\n5rGC 32018\nIFN1Z2Fy 32019\nX1NJTQ== 32020\nanBlZw== 32021\nIGRpc2NyZXRpb24= 32022\nIFRO 32023\nYm92ZQ== 32024\nIE1pbmltdW0= 32025\nIEZvcm1Hcm91cA== 32026\nIHdvcmtmb3JjZQ== 32027\nIEV4ZWN1dGlvbg== 32028\nZXJyZXI= 32029\nCSAgICAJ 32030\nIHByZXNjcmliZWQ= 32031\nLlRleHRBbGlnbg== 32032\nT1BFTg== 32033\nIFBC 32034\naW1pdHk= 32035\nIEV4dGVybmFs 32036\nwrBD 32037\nIEFwcGxpY2F0aW9uQ29udHJvbGxlcg== 32038\nIGJhcnI= 32039\naW1wbGljaXQ= 32040\nX2RvdA== 32041\nIENvbG9u 32042\nQ09MT1I= 32043\nLlByb2plY3Q= 32044\nKjwv 32045\nLXhs 32046\nIG9zYw== 32047\nKHBhdHRlcm4= 32048\nJyl9Cg== 32049\nc3VjY2Vzc2Z1bA== 32050\nYWxvZw== 32051\nU3R1ZGVudHM= 32052\nXXN0cmluZw== 32053\nYW50b24= 32054\nYXR0aQ== 32055\nY2hlbWljYWw= 32056\nLmluZg== 32057\nKGRy 32058\nOlVJQ29udHJvbFN0YXRl 32059\ndG9JbnQ= 32060\nXTwv 32061\n0LDQtdC8 32062\nIMW+ 32063\nLkFjdGlvbkxpc3RlbmVy 32064\nLlNFVkVSRQ== 32065\nIFNhbHY= 32066\nX1RSQU4= 32067\nL2ludGVybmFs 32068\nIHdlbGNvbWVk 32069\nLmNvbW1lbnQ= 32070\nbXV0YXRpb24= 32071\nIEZBUQ== 32072\nLm9uZQ== 32073\nIExBQg== 32074\nIn19 32075\nIFJvbA== 32076\naWV2ZWQ= 32077\nIGFkdmVudHVyZXM= 32078\nIGZ1bmVyYWw= 32079\nIHNwb3VzZQ== 32080\nKG9wZW4= 32081\nIFJlYWR5 32082\nIHRvdXJpc20= 32083\nYWRpbg== 32084\nX2ZhY2U= 32085\n4oKB 32086\nIG1pZ3JhbnRz 32087\nIFB1cmNoYXNl 32088\nY29yZA== 32089\nIE9VVFBVVA== 32090\nKSkNCg0K 32091\nU2VndWU= 32092\ndGFicw== 32093\nIGRvdHM= 32094\nIG5haWw= 32095\nYm9ybmU= 32096\nIGRlc2lyZXM= 32097\nIHByZXZlbnRlZA== 32098\nJ109PQ== 32099\nIHRpbWVseQ== 32100\nSUNB 32101\nU2Nhbm5lcg== 32102\nIEx1Y2Fz 32103\nIGdpdGh1Yg== 32104\nJ11bXQ== 32105\nZGlh 32106\nY29ub21pYw== 32107\nIGRpZXNlcg== 32108\ndW5kZXJz 32109\nLkhhbmRsZXI= 32110\nPyIs 32111\nLmRhdGFi 32112\nIGFkdmlzZQ== 32113\nLmFuaW1hdGlvbg== 32114\nIG92ZXJoZWFk 32115\nIG9ic3RhY2xlcw== 32116\nX2pvaW4= 32117\nIG3DqQ== 32118\nRmxhdA== 32119\nLmRpc3Bvc2U= 32120\nIEV4cGVjdGVk 32121\nIGZsZXc= 32122\nIGVtYm9k 32123\nX3NsdWc= 32124\nIG5hbWVseQ== 32125\nIHdpdG5lc3NlZA== 32126\nc29saWQ= 32127\nLmxlZ2VuZA== 32128\nUXVhbA== 32129\nX3N1cmZhY2U= 32130\n44Op 32131\nQW1lcmljYQ== 32132\nIGFmZmlsaWF0ZXM= 32133\nIFByb3M= 32134\nX2V4dGVuc2lvbg== 32135\nYmluZGluZw== 32136\nU1RBTEw= 32137\nLnJlYWR5 32138\nIGNvcHlpbmc= 32139\nIEhlbmNl 32140\nIGRpc2NvcmQ= 32141\nX3NoaXA= 32142\nUHJvcGVydHlOYW1l 32143\nCQkgICAgICAgICAgIA== 32144\nIGFjaGlldmluZw== 32145\nIEJlYw== 32146\nWmlw 32147\nU29tZXRpbWVz 32148\n44GL 32149\nIGNvbnRyYQ== 32150\nIHB1bmlzaA== 32151\nIGluc3VsaW4= 32152\nIGRpc2FwcGVhcg== 32153\nX2VudW0= 32154\nLmF1dA== 32155\nIGhhc2F0dHI= 32156\nYWZmZWN0ZWQ= 32157\nc2hl 32158\nJHRhYmxl 32159\na3Np 32160\nIGxhY2tpbmc= 32161\nIGRpc2NvdW50cw== 32162\nU3RtdA== 32163\nIEFyZ2VudGluYQ== 32164\nIHVucGFjaw== 32165\nIFJvdXRlZEV2ZW50QXJncw== 32166\nICc/ 32167\naW50ZXJvcA== 32168\nIHNvZmE= 32169\nIGR5bg== 32170\nIEdyYWNl 32171\nIGludGVncmF0ZQ== 32172\n2YM= 32173\nIGRlbGF5cw== 32174\nIEltcGxlbWVudA== 32175\nUHJvb2Y= 32176\nIGFwcGxpY2FudHM= 32177\nIExlYXRoZXI= 32178\n7Ja0 32179\nIGVuam95YWJsZQ== 32180\nU3Bpbm5lcg== 32181\nL3o= 32182\nIGZvYW0= 32183\nIExhYm9yYXRvcnk= 32184\nIHJlc2VhcmNoZXI= 32185\nIENocmlzdGlhbml0eQ== 32186\nIGN1c3RvbWl6ZQ== 32187\nIGNpcGhlcg== 32188\nIGRvZA== 32189\nIHPDsw== 32190\nQEVudGl0eQ== 32191\nT05MWQ== 32192\naW52ZW50b3J5 32193\nIGNvbmNsdWRl 32194\nIGN1ZW50YQ== 32195\nIENvaGVu 32196\nLWluY29tZQ== 32197\nbWJI 32198\nbWVudGF0aW9u 32199\nIHZlcnc= 32200\ndWRw 32201\nQU1M 32202\nLmNvbWJvQm94 32203\nZmg= 32204\nam9icw== 32205\nRmlsZVN5bmM= 32206\nIEJhcmJhcmE= 32207\nIFNjYW4= 32208\nY3JlZW5zaG90 32209\nIE9ydGg= 32210\nLnZpZXdEaWRMb2Fk 32211\nIEFSUkFZ 32212\nLEA= 32213\nL2ludA== 32214\nR2VuZXJhdGU= 32215\nIGRlbW9uc3RyYXRlcw== 32216\nIFplbmQ= 32217\n5YiX 32218\nCXZvbGF0aWxl 32219\nPXI= 32220\nIGZt 32221\nCWJ1ZmZlcg== 32222\nZW5hdGU= 32223\nLkNvbWJpbmU= 32224\nIG1pc2M= 32225\nY2hlbWFz 32226\nIHB1cmVseQ== 32227\nIGdsVmVydGV4 32228\nLlJlc3Q= 32229\nIHJlY2FsbGVk 32230\nIGZyZWVs 32231\nIHNxdWU= 32232\nVHJhY2tlcg== 32233\nIFBocA== 32234\nIERpc3RhbmNl 32235\nIGJlYXN0 32236\nQ29tcGxleA== 32237\nIGNvbnNpZGVycw== 32238\n572R 32239\ndHJpYnV0aW9u 32240\nIGNvbXBsaW1lbnQ= 32241\nX2xpbmVubw== 32242\nIE11dGFibGU= 32243\nIHVuZGVm 32244\nIEdlbQ== 32245\nIGNvbXBvdW5kcw== 32246\nLnV1aWQ= 32247\nIGFub255bQ== 32248\nIHN0YWlycw== 32249\nIERiU2V0 32250\nd29ydA== 32251\nIFNlbnM= 32252\nLkJlZm9yZQ== 32253\nIGVuZGZvcmVhY2g= 32254\nIFRvZ2V0aGVy 32255\nYXRpbGl0eQ== 32256\nIG1vaXN0dXJl 32257\nLSR7 32258\nKFRlc3Q= 32259\nVEI= 32260\nbXVzaWM= 32261\nIGluc2lzdA== 32262\nIGhlYWRsaW5l 32263\nLkFuZA== 32264\nUEFUQ0g= 32265\nIFByZXBhcmU= 32266\nIHN3aXRjaGVz 32267\nKnA= 32268\nIFll 32269\nX2Ficw== 32270\nLmhhbmRsZXI= 32271\nIGFzc2lnbm1lbnRz 32272\nUHJlZmVyZW5jZQ== 32273\nRU5USVRZ 32274\nIHBpcGVz 32275\nIEFsZXJ0RGlhbG9n 32276\nb2dyYXBoaWNhbA== 32277\nIHBhdGlv 32278\nIHdlYnBhY2s= 32279\nYnBz 32280\nTmF2TGluaw== 32281\nLk51bWJlcg== 32282\nIEFybW9y 32283\nIFBldGVycw== 32284\nIERlc2M= 32285\nZHVpbm8= 32286\nIEljb25z 32287\nLmdldEhlaWdodA== 32288\nIHRleHRWaWV3 32289\nCU5VTEw= 32290\nYWxsb2NhdGU= 32291\nfSR7 32292\nIFByaXpl 32293\nLW51bQ== 32294\nLk1vdmU= 32295\n6L6T5YWl 32296\nLmNhbWVyYQ== 32297\nUHJvYmxlbQ== 32298\nCXR5cGVkZWY= 32299\nKHN0b3Jl 32300\nIERJU0NMQUlNRUQ= 32301\nIHN1YnN0YW50aWFsbHk= 32302\nRkZG 32303\nIGVwc2lsb24= 32304\nIGluZXF1YWxpdHk= 32305\nX2NoaWxkcmVu 32306\n5LiH 32307\ncmVsdQ== 32308\nUGllY2U= 32309\nYW50cnk= 32310\nYmFiZWw= 32311\ndmV0aWNh 32312\nIHN1cnZleXM= 32313\nIGRldGVjdG9y 32314\nCWFyZ3M= 32315\nLlNlbGVjdGVkVmFsdWU= 32316\nIGludGVyZmVyZW5jZQ== 32317\nLi4uKQo= 32318\nLlNUUklORw== 32319\nIFR5bGVy 32320\nIENhdGFsb2c= 32321\nVmVydGljZXM= 32322\nIFByb2plY3Rz 32323\nIExlYmFu 32324\nLiIpCgo= 32325\nLmtlcm5lbA== 32326\nIHJpZGVz 32327\nIE11dA== 32328\nYW50aA== 32329\n0L7RgNC8 32330\nZW5uaWFs 32331\nLnRhc2tz 32332\nLnNldFByb3BlcnR5 32333\nYXRlZ29yaQ== 32334\n5pyA 32335\nL2Nvbg== 32336\nYnJhY2U= 32337\nIE5TRXJyb3I= 32338\nJ10pKTsK 32339\nbGlzdGVk 32340\nIFByZXZpZXc= 32341\nQWN0aXZhdGU= 32342\nIGN5Y2w= 32343\nLWFjdGl2ZQ== 32344\naGFk 32345\nVG9v 32346\nIHJlZ2lzdA== 32347\nbGljYWw= 32348\nIHBvZXRyeQ== 32349\nSW1wb3J0cw== 32350\n77yB77yB 32351\nOjw= 32352\nIGNoYXJt 32353\nIENvdW4= 32354\nb2xsaWRlcg== 32355\nIGh3 32356\nfWAK 32357\nPWFyZ3M= 32358\nIE5ldXJv 32359\naXRpY2Fs 32360\naWVuZW4= 32361\nIERvdA== 32362\nX09OTFk= 32363\nRE4= 32364\nIFBsYXlTdGF0aW9u 32365\nIHN0ZWVw 32366\nIHByYWN0aWNhbGx5 32367\nIGFwcGxpY2FudA== 32368\nIGFyb20= 32369\nYW5pYw== 32370\nCWRpc3BsYXk= 32371\nIHRlcm1pbmF0ZWQ= 32372\nIGNsYXJpdHk= 32373\nIE1lbnVJdGVt 32374\nIEt1cg== 32375\naWpl 32376\nX3dlZWs= 32377\nKGRpY3Q= 32378\nX3JlY29yZHM= 32379\nIENvc3Rh 32380\nIGtldA== 32381\nRXh0ZW5zaW9ucw== 32382\nIG5ldWtlbg== 32383\naW5zaQ== 32384\nX2luYw== 32385\nIOaW 32386\nIGVpbmY= 32387\nIFJpc2s= 32388\nIGVsZXZhdGVk 32389\ncGVycw== 32390\nVURB 32391\nIEtO 32392\nIGxpbmVk 32393\nIE1vcm0= 32394\nKTsKCgoK 32395\nPn0K 32396\ncGxhaW50 32397\nZ2V0VGV4dA== 32398\nIGluZGl2aWR1YWxseQ== 32399\nIGNoZWNrYm94 32400\nVVk= 32401\nIExhbWI= 32402\nIGR5c2Z1bmN0aW9u 32403\nIExhcg== 32404\n4LA= 32405\nIENyZWF0aW5n 32406\nJyk7CgoK 32407\nIlRoZXk= 32408\nbG9jYXRpb25z 32409\nX0NPUkU= 32410\nSW50ZXJhY3Rpb24= 32411\ndW1ibmFpbHM= 32412\nIFBhcnRuZXI= 32413\nYnJpdA== 32414\nIGxlc3Nlcg== 32415\nIFNsb3Q= 32416\nc2V0QXR0cmlidXRl 32417\nIFdhdmU= 32418\nLnBv 32419\nL3N0b3Jl 32420\nIGJyb3dzaW5n 32421\nX3Bk 32422\nc3VtZQ== 32423\nc2Vk 32424\nQ3VydmU= 32425\nIHBsYXNtYQ== 32426\nIHN1c3BpY2lvdXM= 32427\n7J24 32428\nIEJhaA== 32429\nIEV4cGxpY2l0 32430\nX0ND 32431\nLkNsaWVudFNpemU= 32432\nXFZpZXc= 32433\nIHN1YnN0aXQ= 32434\nbG9vbg== 32435\nIEdBTUU= 32436\nIEJyaWQ= 32437\nm+W7ug== 32438\nX1VzZXI= 32439\nIHNxdWFyZXM= 32440\nZm9uZQ== 32441\nIHNhY3JlZA== 32442\ndWdocw== 32443\nXWludGVyZmFjZQ== 32444\nIFRocm93 32445\nIEtpcms= 32446\nIGVtcGlyZQ== 32447\nIGFzc2Vzc2Vk 32448\nVGF4 32449\nIEhlYXZlbg== 32450\nLWJ1ZmZlcg== 32451\nX1NUQVRJQw== 32452\nw6luw6k= 32453\nLWJvcmRlcmVk 32454\nIHB1bmN0 32455\nKG1vZGU= 32456\nIGtlaW5l 32457\nU2VudA== 32458\nIENhbGN1bA== 32459\nIEV2ZQ== 32460\nIHN0eWxpc2g= 32461\nIG9pbHM= 32462\nLlRlc3RDYXNl 32463\nIHRyYWRlbWFyaw== 32464\nIGxpdGVyYXJ5 32465\nIGNvbmNlbnRyYXRpb25z 32466\nIFJlbGF0aW9ucw== 32467\nKENsYXNz 32468\nIHN0ZGlu 32469\nIHbDpg== 32470\nYmFja3Vw 32471\nLlZFUlNJT04= 32472\nLkF1dG9TY2FsZURpbWVuc2lvbnM= 32473\nc3RhcnRlcg== 32474\nVHJhbnNhY3Rpb25hbA== 32475\nLXBhbmVs 32476\nU3R1ZGlv 32477\na2M= 32478\nIENoYW1iZXI= 32479\nIFNwaWVs 32480\nIHJobw== 32481\n2KfZhA== 32482\nISc= 32483\nLkF0dHJpYnV0ZXM= 32484\nIG11cmRlcmVk 32485\nYXBldXRpYw== 32486\nIGludGltYXRl 32487\nIHRleHRGaWVsZA== 32488\nIEJ1ZmZhbG8= 32489\nZHVtbXk= 32490\nIiU= 32491\nIExpYmVydHk= 32492\nb2Jhcg== 32493\nIFRhbms= 32494\nIFBvcHVsYXI= 32495\nZXJ2aXNvcg== 32496\nIEluaXRp 32497\nIE1hbGw= 32498\nIFByaW9y 32499\nQ0FQ 32500\nIENsYXk= 32501\nIENlcnRpZmljYXRl 32502\nLkxvY2s= 32503\nLXN0cmlw 32504\nLWRyaXZlbg== 32505\nL2FsbA== 32506\nIE1lc3NhZ2VCb3hCdXR0b25z 32507\nX1NFQ1JFVA== 32508\nX3Bi 32509\nIHJhdHM= 32510\n4KS+4KQ= 32511\nIG50 32512\nLlJvdXRlcg== 32513\nX3RvcGlj 32514\nIHRlbm5pcw== 32515\nIFBVQkxJQw== 32516\nIEFjdGl2YXRlZFJvdXRl 32517\nICcsCg== 32518\nIGNvc3R1bWU= 32519\nIGpva2Vz 32520\nLkhhbmRsZQ== 32521\nCWJ5dGU= 32522\nIGZsYXZvcnM= 32523\nKGNj 32524\nIHBlcnNvbmFz 32525\nCWltYWdl 32526\nIE5hemk= 32527\nIGdyYW1tYXI= 32528\nIMO6bHQ= 32529\nIHZhbHZl 32530\nIHZpYw== 32531\nIFJhY2hlbA== 32532\nX2ludmFsaWQ= 32533\nUHJlZnM= 32534\nc3RkaW50 32535\nKHJvdXRl 32536\nIGh0bWxzcGVjaWFsY2hhcnM= 32537\nIHBlb3BsZXM= 32538\ncGxpbmU= 32539\nIG52 32540\nIFF1YW50 32541\nb3BwZXJz 32542\nIGN1cnJlbnRVc2Vy 32543\nIENhdGFs 32544\nIHJlY29uYw== 32545\nIGNvbmp1bmN0aW9u 32546\nbHg= 32547\nYW1idXJn 32548\nIGluZmx1ZW50aWFs 32549\nZGFuZ2Vy 32550\naW5kZXJz 32551\nICVAIiw= 32552\nLmNvbmZpZ3VyYXRpb24= 32553\nb3NvbWU= 32554\nLmlkZW50aXR5 32555\nIHBpY2tlcg== 32556\nbm9zdA== 32557\nIERJWQ== 32558\nQXVndXN0 32559\nYWJsbw== 32560\nTGVhZg== 32561\nIFJlY28= 32562\nY2tv 32563\nRE9D 32564\nIEhlcm0= 32565\nOmFueQ== 32566\nIEludGVydmlldw== 32567\nIFRleA== 32568\neGZl 32569\nKHdvcms= 32570\nIGxlYXA= 32571\nSGVhZGluZw== 32572\nIHF1YXJ0ZXJz 32573\nXEJ1bmRsZQ== 32574\ncmVi 32575\nUGVyaGFwcw== 32576\nIEdtYkg= 32577\nQmlydGg= 32578\nCXN1bQ== 32579\nIFdhdHNvbg== 32580\nLm5pbA== 32581\n56E= 32582\ne30KCg== 32583\naWNhaWQ= 32584\nR2V0dGVy 32585\nIm5hbWU= 32586\nICINCg== 32587\nX25vbmU= 32588\nem0= 32589\nYWN1dGU= 32590\ndWVzdG8= 32591\nIHNvdXM= 32592\nIHJlYnVpbGQ= 32593\nIG5ld3NwYXBlcnM= 32594\nIEhheg== 32595\nIGtpdHM= 32596\naWZv 32597\nQmx1cg== 32598\nIHN1aXRlZA== 32599\nLUlu 32600\n4K8= 32601\nIEtlaXRo 32602\nIE5vcndheQ== 32603\nSU5JVA== 32604\naXJlY2Npb24= 32605\naWV0aWVz 32606\nX3VzYWdl 32607\nIERvdWc= 32608\ncmlzZQ== 32609\nIHRyaWxsaW9u 32610\naW1pdGVk 32611\nIFJFTA== 32612\nYWxpYw== 32613\nIGNyaXRpY2l6ZWQ= 32614\ndGhlb3JlbQ== 32615\nIGNlYXNl 32616\nIHNpZGV3 32617\nIFRlcnJ5 32618\nIHN1YnNpZGk= 32619\nIGZpcm1seQ== 32620\nIGF3cw== 32621\nIGhvdHQ= 32622\nIGRyZXNzaW5n 32623\nYmFkZ2U= 32624\nIEFwcGxpY2F0aW9ucw== 32625\n6L+U5Zue 32626\nIGxhdWdoZWQ= 32627\nIGhvYmJ5 32628\nIG11c2ljaWFucw== 32629\nICou 32630\nLnBsYWNlaG9sZGVy 32631\nIGNvdW50ZXJz 32632\nIENhcGl0b2w= 32633\nU0RL 32634\nIGhlbG1ldA== 32635\nYW5kYm94 32636\ncXVpdA== 32637\nIGNyaW1pbmFscw== 32638\nIHRlZW5hZ2Vy 32639\nKHVwZGF0ZQ== 32640\nR2w= 32641\nLnNlbGVjdGlvbg== 32642\nIGRpc2NoYXJnZQ== 32643\nIHByZXNlbnRpbmc= 32644\ndWZhY3R1cmVy 32645\nX1VOS05PV04= 32646\nIHN0cmVzc2Vk 32647\n5Zmo 32648\nUHJvdG8= 32649\nX2NvcnJlY3Q= 32650\naGF1cw== 32651\nIHJlbm92 32652\nIGZpcmVhcm1z 32653\nIHRlY2huaWNhbGx5 32654\nLWJyb3dzZXI= 32655\nIGNhbmR5 32656\nU3Ryb2tl 32657\nIGV4ZWN1dG9y 32658\nIG9jY3VycmVuY2U= 32659\nIElQdg== 32660\nX0lOVEVSRkFDRQ== 32661\nIFJldHJpZXZl 32662\nLmJhZA== 32663\nRXhjaGFuZ2U= 32664\nTmF2YmFy 32665\nIEtpZA== 32666\nKGdldEFwcGxpY2F0aW9uQ29udGV4dA== 32667\nX1NUT1A= 32668\nIEJvc3M= 32669\nTGlzdGVuZXJz 32670\nIHNob290ZXI= 32671\nIEFsYg== 32672\nw6RjaA== 32673\nIHBpeA== 32674\nLmtleUNvZGU= 32675\nYWxvbmU= 32676\nIGFic3VyZA== 32677\nIEN1bQ== 32678\nIE5ld3RvbnNvZnQ= 32679\naWt0 32680\nIGxhdWdoaW5n 32681\nIGNhcGl0YWxpc20= 32682\ncmVlTm9kZQ== 32683\nVHg= 32684\nX1FVRVJZ 32685\nLlNsZWVw 32686\nKGxvZ2lu 32687\nV2ViRWxlbWVudA== 32688\nIGNlbGVicmF0aW5n 32689\nIGRlcHJlY2F0ZWQ= 32690\nIG1hYXI= 32691\nIGFydGlzdGlj 32692\nX0FTU09D 32693\nIEJvcmRlclJhZGl1cw== 32694\nCXdw 32695\nIHN1cnZpdm9ycw== 32696\nSW5uZXI= 32697\nLXJlZA== 32698\nIHByb3NlY3V0aW9u 32699\nX3Bw 32700\nKCI8Lw== 32701\nIF49 32702\nIGxhbQ== 32703\nIFRyYWRpbmc= 32704\nZmxhcmU= 32705\nRGV0ZWN0b3I= 32706\nTUY= 32707\nIEVtZXJnZW5jeQ== 32708\nIEVhZ2xlcw== 32709\ncXVhZA== 32710\nIEluY3Jl 32711\ncGxpYW5jZQ== 32712\nXE1pZ3JhdGlvbg== 32713\nIHVwZ3JhZGVz 32714\nQ1BV 32715\nYWdnaQ== 32716\nZnByaW50Zg== 32717\naWdpb24= 32718\nIGJlYXV0aWZ1bGx5 32719\nIGRyaWVk 32720\nX0hJR0g= 32721\nIGdwaW8= 32722\nTVND 32723\nIERlcHV0eQ== 32724\nIERlY2w= 32725\nIHRyZWFzdXJl 32726\nc2dpdmluZw== 32727\nX3NpZGViYXI= 32728\nIGFwYXJ0bWVudHM= 32729\nIFdy 32730\nIGJvYXRz 32731\nIGJvcg== 32732\nLmxhbmd1YWdl 32733\nIFVp 32734\nbGl0 32735\nZnJt 32736\nYW5jaWVz 32737\nIG1hc3Nlcw== 32738\nIEFzc2lnbg== 32739\nIFBPTA== 32740\nIG1hcERpc3BhdGNoVG9Qcm9wcw== 32741\nIGJyYWNrZXQ= 32742\nIFBhcA== 32743\nIENp 32744\nIEludG8= 32745\nIHRlYW1tYXRlcw== 32746\nIGZvcmFsbA== 32747\ndWx1aQ== 32748\nIENhcm4= 32749\nX0lOUw== 32750\nYXppb25p 32751\nY2Vw 32752\nIHRvdXJpc3Rz 32753\nLWJsdWU= 32754\nIExlZA== 32755\nIHBlbmV0 32756\nIEZv 32757\nIGltYWdpbmc= 32758\ncHJh 32759\nIHNsYXZlcw== 32760\nb2xlcmFuY2U= 32761\nIGluY29ycG9yYXRlZA== 32762\nJiw= 32763\ndWFibHk= 32764\nIEthcA== 32765\nWG1sRWxlbWVudA== 32766\nIE11ZWxsZXI= 32767\nQ2hhbmdlTGlzdGVuZXI= 32768\nIEhvbGlkYXk= 32769\nCSAgICAgICAgIA== 32770\nRmxleA== 32771\nCVVzZXI= 32772\nIl0pKQ== 32773\nX3N1Ym1pdA== 32774\nLmJvbGQ= 32775\nIGxvY2tz 32776\nIEN1YmE= 32777\ndWRzb24= 32778\nSG9vaw== 32779\nIFdhcm5lcg== 32780\nX3N0YXI= 32781\nIj0+JA== 32782\nIGNvbW1h 32783\ndW5jaGVja2Vk 32784\nZ3JhcGhpY3M= 32785\ncm9ycw== 32786\nR1JPVU5E 32787\nKHB1YmxpYw== 32788\nIGN1c3RvbWl6ZWQ= 32789\nIEFya2Fuc2Fz 32790\nIFJldw== 32791\nIGV4cGlyYXRpb24= 32792\n15U= 32793\nIEN1bA== 32794\nIG5vbnM= 32795\nLkZpbHRlcg== 32796\nIHNlbmF0b3I= 32797\nX2RlZmluaXRpb24= 32798\nYXNoaW5ndG9u 32799\neW1waA== 32800\nL0o= 32801\nIGZ1c2U= 32802\ncmFtaWQ= 32803\nIFN1cHBsaWVy 32804\nIGF1dG9jb21wbGV0ZQ== 32805\nIH0pLA== 32806\nLiIKCgo= 32807\nX2Z1bmN0aW9ucw== 32808\nCXRv 32809\nLmV2YWw= 32810\nIFRPYmplY3Q= 32811\nUmVmZXJlbmNlcw== 32812\nIGhlYXRlZA== 32813\nSEFM 32814\nICkpfQo= 32815\nfSQ= 32816\nIEJhcnI= 32817\nX1VOSVQ= 32818\nKyQ= 32819\nIGdldFZhbHVl 32820\naXBlZA== 32821\nY2hpZWQ= 32822\nKHZt 32823\nY3Vl 32824\nX2ludGVnZXI= 32825\nX2NvdXJzZQ== 32826\ndGhpcmQ= 32827\nIHJldmlzZWQ= 32828\nKiovCg== 32829\nX0RJUkVDVA== 32830\nT3V0T2Y= 32831\nKCIo 32832\nIEZlZWw= 32833\nIHJlYXNz 32834\nIHN1YnRpdGxl 32835\ncGVyaQ== 32836\nbmY= 32837\nIGVuam95cw== 32838\nIHRyZWF0cw== 32839\nKXRoaXM= 32840\nLXRhYnM= 32841\nYW5jZXJz 32842\nIGNvbnRpbmVudA== 32843\nIGNhcmRpbw== 32844\nU2Vy 32845\nLnF1ZXN0aW9u 32846\nIHBocmFzZXM= 32847\nVmFsaWRhdG9ycw== 32848\nIHBvcHVs 32849\nIGzDrQ== 32850\nc29uZw== 32851\nX0lOVEVSTkFM 32852\nIGFkdmlzZXI= 32853\nIHB1eno= 32854\nIGFtYml0aW91cw== 32855\nIFRvYg== 32856\nIERQ 32857\nIHByZXNpZGVuY3k= 32858\nIHN1cnJlbmRlcg== 32859\nIHdhdGNoZXM= 32860\nX2JpbmFyeQ== 32861\nIFNvb24= 32862\nIGNhbmFkYQ== 32863\nKCIiKQo= 32864\nXT0n 32865\nIEJyYW5kb24= 32866\nZXBzaWxvbg== 32867\ncnc= 32868\nLmFkZENoaWxk 32869\nLkNvcHk= 32870\nUHJpbmNpcGFs 32871\nUGhvdG9z 32872\nIG1hcmdpbmFs 32873\nIGJhc2ljcw== 32874\nZWluZw== 32875\nTXVzdA== 32876\nX1N0cmluZw== 32877\nIG9sZQ== 32878\nTWFnZW50bw== 32879\nLmN1c3RvbWVy 32880\nKHByZXY= 32881\n4Lil 32882\nIGxveWFsdHk= 32883\nQ29n 32884\nIHByb3RvY29scw== 32885\nIENvbXBhbmllcw== 32886\nIHRoZW9yZXRpY2Fs 32887\nIGFjY2Vzc2luZw== 32888\nIFplbg== 32889\nLm9uZXM= 32890\nYXR0aWNl 32891\nX3dvcmxk 32892\nemVz 32893\nIHRhdHRvbw== 32894\nIG1lbm9z 32895\nIGludGVyc2VjdA== 32896\nIl07Cgo= 32897\nYmVsaWU= 32898\nIGluYWN0aXZl 32899\nLnJlYWRsaW5l 32900\nLWxhYmVsbGVk 32901\nLmRvbmU= 32902\nbGlja3I= 32903\nIFdPUks= 32904\nIGRlcml2YXRpdmU= 32905\nIGRhdGFiYXNlcw== 32906\n4oKC 32907\nIHN4 32908\nLmlzQXJyYXk= 32909\nIHlz 32910\nIHBhZGE= 32911\nIEJ1bGxldA== 32912\nKGAv 32913\naXNBY3RpdmU= 32914\nIENHU2l6ZQ== 32915\nKGVxdWFsVG8= 32916\nIENvbHVtYnVz 32917\nIG1hcnJ5 32918\nREVW 32919\nX2xpbWl0cw== 32920\ncm9uZXM= 32921\nSUFT 32922\nIHRhdQ== 32923\nbWlubw== 32924\nX1dyaXRl 32925\nIFdpbmU= 32926\nIFtbJw== 32927\nIFB1bGw= 32928\ncml0ZXJz 32929\ncmllbnRz 32930\nIHNoaWZ0aW5n 32931\ndXBw 32932\nX1RJTUVS 32933\nIENvbmRpdGlvbnM= 32934\n4bql 32935\nIE9yZGVycw== 32936\nIFN0cmVuZ3Ro 32937\n5omA 32938\nIHZhbGlkaXR5 32939\nIGZvdA== 32940\nZXR1cg== 32941\nIGJvbHQ= 32942\n5YaF 32943\nIEFsb25n 32944\nb3NoaQ== 32945\nIGFzc3VtcHRpb25z 32946\nIG1hZ2F6aW5lcw== 32947\nX1NQSQ== 32948\nIHB1bnQ= 32949\nX1BST0RVQ1Q= 32950\nIHJlbGF5 32951\nIEphdmFzY3JpcHQ= 32952\nLnRl 32953\nLWVz 32954\nIHdpZGdldHM= 32955\nKGZz 32956\nPEl0ZW0= 32957\nX2V4dHJh 32958\nIHJlY3J1aXRpbmc= 32959\nRXQ= 32960\nIG5lY2Vzc2l0eQ== 32961\ncHc= 32962\nIG5vdmVscw== 32963\ndXNzZWxz 32964\nQ3JlYXRvcg== 32965\nIE1WUA== 32966\nIE9D 32967\ndGhvb2Q= 32968\nY2xpZW50cw== 32969\nKSkq 32970\nIGNoYXJhY3Rlcml6ZWQ= 32971\nX1NFTkQ= 32972\ndXRp 32973\nVHk= 32974\nLmZyb21Kc29u 32975\nQFNlcnZpY2U= 32976\n44KC 32977\nQ2hyaXM= 32978\nX0lz 32979\nIEpvaG5ueQ== 32980\nIGNsZWFuZXI= 32981\nIEluaXRpYWxpemVz 32982\nVU5L 32983\nKGF4aXM= 32984\n0LXQtw== 32985\naWV2YWw= 32986\nIFdhcnJpb3Jz 32987\nfSko 32988\nRE1J 32989\n4pmA 32990\nIFRyZWFzdXJ5 32991\nIGZlYXM= 32992\nIHNsYQ== 32993\nX0VOVU0= 32994\nbGhz 32995\nIEluc3RpdA== 32996\naXBwZXJz 32997\nTGluZWFy 32998\nUmVhZGluZw== 32999\ncXVpcmllcw== 33000\nLWNlbGw= 33001\nY2hyb21l 33002\nLlNlYXJjaA== 33003\nSU5B 33004\n57G75Z6L 33005\nIAogCg== 33006\nIFNhbXVlbA== 33007\nIG1pbGxz 33008\nIGRvbmF0ZQ== 33009\nIEdlbw== 33010\nKHJvd3M= 33011\nIHNoZWVw 33012\nIMOpbA== 33013\n5L2T 33014\nIGJlbQ== 33015\nX1VOVVNFRA== 33016\nIFJDQw== 33017\nIGludHJvZHVjaW5n 33018\nYXR0YQ== 33019\nIFByaW9yaXR5 33020\nIEZC 33021\nIFNlcmdl 33022\nPiI7 33023\nYXRjaGluZw== 33024\nIEtub3dsZWRnZQ== 33025\nCVRoZQ== 33026\nO21hcmdpbg== 33027\nbGVzc25lc3M= 33028\nb3BhcmQ= 33029\ndW1hdGlj 33030\nKCkpKTsNCg== 33031\nIGZhbHM= 33032\nKGNhY2hl 33033\nVHlwZUlk 33034\n6YCa 33035\nX2Nob2ljZQ== 33036\nIEdvdGg= 33037\nIFNpdGVz 33038\nTUc= 33039\nX2JvcmRlcg== 33040\nSW5kaWNlcw== 33041\nQ29tcGFyZXI= 33042\nIFJlZGlzdHJpYnV0aW9u 33043\nIGNsb3NldA== 33044\nIHZlcnNhdGlsZQ== 33045\nSW5wdXRz 33046\nKioqKioqKioqKioqKioqKioqKio= 33047\nIG9iZXNpdHk= 33048\ncXVpeg== 33049\nZ3Jh 33050\nKGdsb2JhbA== 33051\n5Yqh 33052\nIGNvbGxlY3Rvcg== 33053\nIGtvcg== 33054\nb3ZhYmxl 33055\nQURD 33056\nIEV2ZW50SGFuZGxlcg== 33057\nLm5j 33058\nIHBsYXliYWNr 33059\naWVudG9z 33060\nX3Blcm0= 33061\nX1dBUk5JTkc= 33062\nIE9seW1waWNz 33063\nLm5vcm0= 33064\nIEJyb2FkY2FzdA== 33065\nX3NtYWxs 33066\nZHJpdmU= 33067\nLmlsb2M= 33068\nIHR5cGVk 33069\nTUVN 33070\nX2NvbnM= 33071\nRE1FVEhPRA== 33072\nIGx1bg== 33073\nLmRpc3RhbmNl 33074\nKHBhcg== 33075\ncG9vbg== 33076\nIGJhc3Q= 33077\nYWN0aXZpdGllcw== 33078\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 33079\nOg0KDQo= 33080\nU0VS 33081\nKSYm 33082\nX2xzdA== 33083\nIFBvbGlzaA== 33084\nIGtub2NrZWQ= 33085\nIGZydXN0cmF0aW9u 33086\nYXVrZWU= 33087\nIHBob3NwaA== 33088\naXF1aWQ= 33089\nX2NvZWZm 33090\n5q2k 33091\nTGF0ZXN0 33092\nIER1c3Q= 33093\nVGlwbw== 33094\nIG1haW50YWlucw== 33095\nIG1hcnNo 33096\naW5jaW5u 33097\nbGJs 33098\nQ2FyZQ== 33099\nIG5laWdoYm9yaG9vZHM= 33100\nX2dwaW8= 33101\nIEFyc2VuYWw= 33102\nRGVt 33103\nIFdoZQ== 33104\nX2hvb2s= 33105\nIGxkYw== 33106\nIEhhcnBlcg== 33107\nIEJlcmtlbGV5 33108\nIGdyYWR1YXRlZA== 33109\nUGVyY2VudA== 33110\nIGFycml2aW5n 33111\nIEFkdmVudHVyZQ== 33112\nKHNjb3Bl 33113\nKCcq 33114\ncXVhcnRlcg== 33115\nIE1hcmll 33116\nU3BlYWtpbmc= 33117\nX2NvZGVnZW4= 33118\nIGltbXVu 33119\nY2FzdGVy 33120\n44KM 33121\n5ZWG 33122\nIERpbWVuc2lvbnM= 33123\nLnJlY29yZA== 33124\nIHRleHRv 33125\nIE1pY2hlbGxl 33126\nUGVuZGluZw== 33127\nKGJ5 33128\nX1BBUg== 33129\ndWNodA== 33130\nYmVl 33131\nLlRocmVhZA== 33132\nYW1waXJl 33133\na25vdw== 33134\nIENsaW5pY2Fs 33135\nIG1hcmdpbkJvdHRvbQ== 33136\nIGRpc3Rpbmd1aXNo 33137\nLkZ1bGw= 33138\nLnVuZGVmaW5lZA== 33139\nIFNlcXVlbGl6ZQ== 33140\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 33141\nIGVkdWNhdGVk 33142\nX09WRVI= 33143\n5bqP 33144\nIMKgIMKg 33145\nX2VhY2g= 33146\nIHVyZ2U= 33147\nZGVwYXJ0 33148\nIGRvbm9ycw== 33149\nIEF1 33150\nIGJpbGxpb25z 33151\nIGJlbG9uZ2luZw== 33152\nX2FnZQ== 33153\nX0ludA== 33154\nIHN1YnN0YW5jZXM= 33155\nbWFjaGluZQ== 33156\nISEhCgo= 33157\nIGpzb25pZnk= 33158\naWJiZWFu 33159\nIENhZA== 33160\nIGVuZFRpbWU= 33161\nIGN5Y2xpbmc= 33162\nIFVJVGV4dEZpZWxk 33163\nIGxldmVyYWdl 33164\nIHZhbmlsbGE= 33165\nZWF0 33166\nTGF1bmNo 33167\nKHB0 33168\nc3RhdGVz 33169\nIENvbnRyb2xz 33170\nIFJlc3BvbnM= 33171\nIEpha2U= 33172\nIGFzbGVlcA== 33173\nZm9ydHVuYXRl 33174\nLm5leHRMaW5l 33175\nU2l6ZU1vZGU= 33176\n7J28 33177\nVGVzdGluZ01vZHVsZQ== 33178\nR2VybWFu 33179\nIEludmVzdGln 33180\nLnJldmVyc2U= 33181\nIEJBQ0s= 33182\nKERhdGVUaW1l 33183\nIG5vbnByb2ZpdA== 33184\nIEV4cGVjdA== 33185\nIHRhbnRv 33186\nJ10pLA== 33187\nCXRoZQ== 33188\nTXVsdGlwbGU= 33189\nKGdldEFjdGl2aXR5 33190\nX1dBSVQ= 33191\nIGrDoQ== 33192\nZGVjb3I= 33193\nbGV2YW5jZQ== 33194\nIEdpdEh1Yg== 33195\nbWluYXRpb24= 33196\nX3F1YW50aXR5 33197\nLlNjYW5uZXI= 33198\nIExpb24= 33199\n6ZSZ6K+v 33200\nIGRyZQ== 33201\nIHRhbnRyYQ== 33202\nIGNvbnRlbnRUeXBl 33203\nIGZpZA== 33204\nX2FsdA== 33205\nTlNJbmRleFBhdGg= 33206\nLXBs 33207\n5YyW 33208\nIGFudGliaW90 33209\ndGFibGVz 33210\nYWNpYWw= 33211\nIFJlZ2lzdHJ5 33212\nIG9saXZl 33213\naWdlcnM= 33214\nIHN1YnNjcmliZXI= 33215\nX3ByZXM= 33216\nIFN5bnRheA== 33217\nIGxvdmVycw== 33218\nLkJ5dGU= 33219\nb2xkZXJz 33220\nX2ZvcndhcmQ= 33221\nYWx3YXlz 33222\nQ2FwdGlvbg== 33223\nUHJpdg== 33224\nIFRhbXBh 33225\naXNhdGV1cg== 33226\nLWxhYmVsbGVkYnk= 33227\nIFRvU3RyaW5n 33228\nIOyCrA== 33229\nIGluaXRpYXRlZA== 33230\nV0Y= 33231\nIGluc3RpdHV0aW9uYWw= 33232\naW5qZWN0 33233\nIFNjcg== 33234\nIGRvY3RyaW5l 33235\nIHNwYWNpb3Vz 33236\naXN1cmU= 33237\nIEFuYQ== 33238\nInRpbWU= 33239\nZXNzYWdpbmc= 33240\nIGNpZA== 33241\nIE5hbg== 33242\nIGluY29tcGxldGU= 33243\nVEFH 33244\nLWJ1aWxk 33245\nRGVjZW1iZXI= 33246\nIHJlc2lkdWFs 33247\nKFBETw== 33248\nIExpc3Rlbg== 33249\nIGdseXBo 33250\nIGdhcHM= 33251\nbmVh 33252\nLlJlY3Q= 33253\nIHNhdQ== 33254\nIFBob3RvZ3JhcGg= 33255\nIGV4ZWN1dGFibGU= 33256\nIEV4cGVydA== 33257\nQ29yb3V0aW5l 33258\nX3NpemVz 33259\nIE5M 33260\nLmlzVmFsaWQ= 33261\nKTt9Cg== 33262\nLXJlZw== 33263\nIGNpdGluZw== 33264\nY3dk 33265\nIE90dGF3YQ== 33266\nIEJhdHQ= 33267\nIHJlbmV3YWJsZQ== 33268\nIHByZWxpbWluYXJ5 33269\nIGFzeWx1bQ== 33270\nIHdyaXN0 33271\nIHV0aWxpeg== 33272\nIGRldGVudGlvbg== 33273\nRmFzdA== 33274\nIGFuZ2U= 33275\naW5jaW5uYXRp 33276\nIHN0ZWVyaW5n 33277\nIE5hTg== 33278\naW9zaXR5 33279\nL3BhZ2U= 33280\nIOi/ 33281\nc3Rlcm9s 33282\nIGRpc2c= 33283\nKERC 33284\nIERFU0NSSVBUSU9O 33285\nIF8k 33286\nIG9ic3RhY2xl 33287\nIGJpemFycmU= 33288\nIGV4dHJhY3Rpb24= 33289\nX2V4cGVjdGVk 33290\nIGxvc2Vz 33291\nIENlbGVicg== 33292\nIGh0bWxGb3I= 33293\nIGV4cGxvaXQ= 33294\n0L7Qu9GM0LfQvtCy 33295\nWFla 33296\nIG1hZ25ldA== 33297\nYW1wZWQ= 33298\nIGF0b21z 33299\nU291cmNlcw== 33300\ncGVjdGl2ZXM= 33301\n0YHQu9C4 33302\nID0NCg== 33303\nIGRhcmU= 33304\nIFdhbHRlcg== 33305\nIGJyaWdodG5lc3M= 33306\nIGFubm90YXRpb25z 33307\n648= 33308\naXNrZQ== 33309\nU2NoZWR1bGU= 33310\nLmltYWdlcw== 33311\ncm9zc28= 33312\nICIuLg== 33313\nZ2FtbWE= 33314\nIGluc3RydWN0b3I= 33315\nIG92ZXJ3cml0ZQ== 33316\nLWFt 33317\nIGRldmFzdGF0aW5n 33318\nIFNhaW50cw== 33319\nIGhz 33320\nIGJvbnVzZXM= 33321\nJG91dHB1dA== 33322\naWpk 33323\nKEFjdGlvbkV2ZW50 33324\nbW9uaXRvcg== 33325\nIG1hdHRyZXNz 33326\nSmFudWFyeQ== 33327\nLmpw 33328\nIGNhcmFjdGVy 33329\nIGltcG9zZQ== 33330\nX3Jlc3Q= 33331\nIFNpZ25hdHVyZQ== 33332\nIGNvcm9uYXZpcnVz 33333\n44GK 33334\nX2NvbXBhcmU= 33335\nTWVhc3VyZQ== 33336\naXRhdGVk 33337\nZWxpams= 33338\naWdvcw== 33339\nZXNhcg== 33340\nIHJ1c2hlZA== 33341\nbWV0cnk= 33342\nX1NFUEFSQVRPUg== 33343\nX1dF 33344\nX0FUVFJJQlVURQ== 33345\nIHlhbWw= 33346\nIHNwZWNz 33347\nIFJhaA== 33348\ncGhlcmlj 33349\nIEludmVzdG1lbnQ= 33350\nw6RsbA== 33351\nIGFwcGVhbGluZw== 33352\nIHZpZXdwb3J0 33353\n56k= 33354\nIG1hcmdpbkxlZnQ= 33355\nIHN1YnRyYWN0 33356\nIEVESVQ= 33357\nCUFycmF5TGlzdA== 33358\nZ3JhZGluZw== 33359\nIEZhaWx1cmU= 33360\nYXNwZXI= 33361\nRUVL 33362\nKG5vdw== 33363\nPG9iamVjdA== 33364\nIEFsaWdubWVudA== 33365\ncGxlYWRv 33366\ncXR0 33367\nKEVSUk9S 33368\nIElOVkFMSUQ= 33369\nIHVzZXJpZA== 33370\ncmFpc2Vz 33371\nSURJ 33372\nIHZhcmlhbmNl 33373\nIE5pbA== 33374\nL2RlbGV0ZQ== 33375\nX01BSU4= 33376\nLlRva2Vu 33377\nLkNhdGVnb3J5 33378\nPikK 33379\nQ29sbGlzaW9u 33380\nIEdyZWF0ZXI= 33381\nIFJhY2luZw== 33382\nYWxhbg== 33383\nIG1vbmV0YXJ5 33384\nLG5ldw== 33385\nIFNvcnJ5 33386\nLkVuYWJsZQ== 33387\nIEluc3RhbnRpYXRl 33388\nb2xsZW4= 33389\n66m0 33390\nIENhbGxpbmc= 33391\nX2hvdXI= 33392\nQURB 33393\nIHNoeQ== 33394\nKSoq 33395\nID09Pg== 33396\nIGVzcGVjaWFs 33397\nIGludGVycHJldGVk 33398\nIT0i 33399\nIHBoYXJtYWN5 33400\nLnNpbmdsZQ== 33401\nIENpYWxpcw== 33402\nIHBhcmFz 33403\nLnRvVXBwZXJDYXNl 33404\nIERlbW9u 33405\nUHJpbWU= 33406\nIHJhbmtpbmdz 33407\nQWRkaW5n 33408\nX0hBU0g= 33409\nIEV4YW0= 33410\n2qk= 33411\nIFZpY3Rvcg== 33412\nT2theQ== 33413\nIl07DQo= 33414\nIGZvcnR1bmU= 33415\nIEZFVENI 33416\nZXhwYW5k 33417\nLkludGVyb3A= 33418\nIGJhcm4= 33419\n5raI 33420\ndWV2bw== 33421\nIHNwZWN1bGF0aW9u 33422\n4pSA4pSA4pSA4pSA 33423\nIE51 33424\nIEJsdWVz 33425\nKGZuYW1l 33426\nIGluaGFiaXQ= 33427\nIFwiJQ== 33428\nQ0VT 33429\ndWxhcmlv 33430\nX2Ny 33431\nIHZhbGlkYXRlZA== 33432\nIG1pZG5pZ2h0 33433\nYW5raW5n 33434\nIGluY29ycG9yYXRl 33435\nIHB1cnN1aXQ= 33436\nRVhQ 33437\ncHJpbWU= 33438\nUGlk 33439\nLVVT 33440\nIE51cnM= 33441\nIFdoZWVs 33442\n6Zg= 33443\nIGlucA== 33444\nIHN1cHBvcnRpdmU= 33445\nLm1lbWJlcg== 33446\nIFNob3Q= 33447\nLkNoZWNrQm94 33448\nIGFmZmlybQ== 33449\nVG9y 33450\nRnVsbFllYXI= 33451\nIGNvbnNpZGVyYWJseQ== 33452\nY3JlZGVudGlhbHM= 33453\nX29wdHM= 33454\nUm9sbA== 33455\nKHJvdW5k 33456\nIGNvbWVudA== 33457\nX1VBUlQ= 33458\nIGV4dGVuZGluZw== 33459\nUkc= 33460\ncmVzdWx0YWRv 33461\naXR1 33462\nLmdldFNlc3Npb24= 33463\nIGF0dHJhY3Rpb24= 33464\nJkQ= 33465\nJGh0bWw= 33466\nIEplc3NpY2E= 33467\nIEFzc29jaWF0ZQ== 33468\nYcOx 33469\nX2Vk 33470\nIExhZw== 33471\nIG9yaWdpbnM= 33472\nKCkpLT4= 33473\nYWRkRXZlbnRMaXN0ZW5lcg== 33474\nSUFMT0c= 33475\n5ZCm 33476\nLkNvbXBhcmU= 33477\nQWxidW0= 33478\nIEt1 33479\nPFE= 33480\nYXJnZXN0 33481\nIHByb2xvbmc= 33482\nIGNvbmZpZ3VyYXRpb25z 33483\nIGFjY2lkZW50YWxseQ== 33484\nX3Bob3Rv 33485\nICcnOw0K 33486\nIHZlcnNl 33487\nQm9i 33488\nIGZhcm1pbmc= 33489\nZGVsaXZlcnk= 33490\nIE1hY2s= 33491\nIHVzZVNlbGVjdG9y 33492\nLmJvb3RzdHJhcGNkbg== 33493\na2VlcGluZw== 33494\nZW55 33495\nLnVwbG9hZA== 33496\nIE1FVEhPRA== 33497\nY3JlYXRvcg== 33498\nPF8= 33499\nIEVhc3Rlcg== 33500\nLi0t 33501\nVUlCdXR0b24= 33502\n44KJ 33503\nb21ldGVycw== 33504\nIHNoaW5l 33505\nIGhvZ3k= 33506\nXHM= 33507\nIGhhcm5lc3M= 33508\nLkNlbGw= 33509\nIGxpZnRpbmc= 33510\nIGNvbWJpbmVz 33511\nIE9jY3Vw 33512\nZXhjbHVkZQ== 33513\ncGF0aWFs 33514\nIHJlc3Bpcg== 33515\nX2ZpdA== 33516\nIGZpZnR5 33517\nIE1vbA== 33518\nIHR1bmVk 33519\nLWRpbWVuc2lvbmFs 33520\nIHFz 33521\nIHRvcHM= 33522\nPiI7Cgo= 33523\ncXVpc2l0ZQ== 33524\nY2hhbm5lbHM= 33525\nL3Jlcw== 33526\nIEFuYWx5dGljcw== 33527\nLmFwcGNvbXBhdA== 33528\nL3Rv 33529\nIG9uRXJyb3I= 33530\nKGF0dHI= 33531\nSVJN 33532\nIHJhZ2F6 33533\nLWFz 33534\nLlNlY29uZA== 33535\nb3JpZW50ZWQ= 33536\nIGRvbm4= 33537\nIGxpZ2h0bmluZw== 33538\nZmlk 33539\nIFBsZQ== 33540\n44G+44GZ 33541\ndHJv 33542\nLlRydWU= 33543\nT2JzZXJ2YWJsZQ== 33544\n15k= 33545\ndW1iaW5n 33546\nIHByb3NwZWN0aXZl 33547\nLWZpbHRlcg== 33548\nIHB1cnN1YW50 33549\nKHBvaW50cw== 33550\nLkJpbmQ= 33551\nIHBhbG0= 33552\nY2xlYXJmaXg= 33553\nw7Zz 33554\nIEdvbno= 33555\nIHdlYWtlbg== 33556\nRHJpdmU= 33557\nZW5pZG8= 33558\nbGxk 33559\nb2JveA== 33560\nYW5lYW4= 33561\nR290 33562\n5L+d 33563\nUmVnZXg= 33564\n5oM= 33565\nIHNhbGFk 33566\nYXNzaXM= 33567\nIm5ldA== 33568\naW5oZXJpdERvYw== 33569\nIFJW 33570\ncXVpZXI= 33571\nIGNsYXp6 33572\nxLHFnw== 33573\nb3N0ZXJvbmU= 33574\nIGFpcmxpbmU= 33575\nLmxpc3RkaXI= 33576\nIGRvd25sb2FkaW5n 33577\nIFBhbG0= 33578\nd2F1a2Vl 33579\nJmx0 33580\nLkJM 33581\nX0lOTElORQ== 33582\nb2Zmcw== 33583\nPDwo 33584\nX25ld3M= 33585\nIGNoYXNl 33586\nLz48 33587\nIGV1cm9z 33588\nIEVneXB0aWFu 33589\nIFN0YWlubGVzcw== 33590\nX0JPT0w= 33591\nIEd1aWxk 33592\nIER5bmFt 33593\nW2luZGV4UGF0aA== 33594\nIO8= 33595\nIG1lbW9yYWJsZQ== 33596\nIENoYW1waW9u 33597\nUmVzb3VyY2VNYW5hZ2Vy 33598\nLkxvZ2lu 33599\nIEZvcm1lcg== 33600\neXBlZA== 33601\nIGxsZWc= 33602\nOyIs 33603\nRFdPUkQ= 33604\nIHRheGk= 33605\nIGJvbWJz 33606\ncmFo 33607\nLnRhZ3M= 33608\nX3Rlc3Rz 33609\nc3RvbmVz 33610\n4oCdKQ== 33611\nW2c= 33612\ncnR5cGU= 33613\nIHZ1 33614\nIGhvc3RpbGU= 33615\nQ2hhcnM= 33616\nIFBhdHJpb3Rz 33617\nL3N0YXR1cw== 33618\nPEI= 33619\nIEluY29tZQ== 33620\nIERhZA== 33621\nIHBhdHJvbA== 33622\nX0NIQU5HRQ== 33623\nIHVwZ3JhZGVk 33624\nIGNoaW5h 33625\nc2V0cQ== 33626\nU3RhcnRlZA== 33627\nLlVuZGVm 33628\nIGNoZWNrc3Vt 33629\nIGZydXN0cmF0ZWQ= 33630\ne28= 33631\nIGVuZg== 33632\nIHdvb2Rz 33633\nIEFueW9uZQ== 33634\nRW5jb2Rl 33635\nIFF0V2lkZ2V0cw== 33636\nYXJlYXM= 33637\nIHNoZWVy 33638\nc2tp 33639\nZW5kcG9pbnQ= 33640\nX1Rlc3Q= 33641\nU291cA== 33642\nfn5+fn5+fn5+fn5+fn5+fg== 33643\nKGZpbGVz 33644\nCQkJCQkNCg== 33645\nLnNwYXJr 33646\nIHZhbHVlZA== 33647\nICUK 33648\nLmNvbnRyb2xz 33649\nIFhDVEFzc2VydEVxdWFs 33650\nIGZhbWU= 33651\nIFJpYw== 33652\nRE9U 33653\nIEFsYmVydGE= 33654\n5L2/ 33655\nb3NhbA== 33656\nLldlYkNvbnRyb2xz 33657\nIC0tLS0tLS0tLS0tLQ== 33658\nIE1pcw== 33659\nIFNZUw== 33660\nTm9ubnVsbA== 33661\nPWl0ZW0= 33662\nIGV4cGlyZQ== 33663\nRGVjb2Rl 33664\nX29wZXJhdGlvbg== 33665\nIFZhbGlkYXRvcg== 33666\nLkNFTlRFUg== 33667\ndWZmcw== 33668\nKm0= 33669\nIGF2YW50 33670\n5qyh 33671\n4oCcWW91 33672\nLnBlcm1pc3Npb24= 33673\nLi4uKQ== 33674\nIExpYw== 33675\nX2Nvb3Jkcw== 33676\nLm5vbWJyZQ== 33677\nY2xv 33678\nLkludGVybmFs 33679\nIENobw== 33680\nX3N3 33681\nCUls 33682\nY2xr 33683\nIGNhc3RsZQ== 33684\nKGxheWVy 33685\ncGl0 33686\nIGd1aWRlZA== 33687\nIOKWiA== 33688\nIHN1cGVyYg== 33689\nIHN1cHBsZW1lbnRz 33690\nX2NlbnQ= 33691\nIHBlZWs= 33692\nSU5BUlk= 33693\nLkNvbnRlbnRBbGlnbm1lbnQ= 33694\nZmFsbHM= 33695\nIikpOw== 33696\nV2FsbA== 33697\nKS4NCg== 33698\nIERhbm55 33699\naXJtaW5naGFt 33700\nSUFMSVo= 33701\nKGNyZWF0ZQ== 33702\nIklu 33703\nU2VydmljZVByb3ZpZGVy 33704\nIHByaWNlZA== 33705\nbWFjcm8= 33706\nYW1hYw== 33707\nLmJveA== 33708\nLS0tLQo= 33709\n44Or 33710\nIFN1aXQ= 33711\ndXJzdA== 33712\nYnJ1 33713\nb3VybmFscw== 33714\nbnVtZXJv 33715\nX18oKQo= 33716\nRGFz 33717\nIE1pdHQ= 33718\ndWRlcg== 33719\nP1w= 33720\nZnU= 33721\nW0I= 33722\nIDopCgo= 33723\nKGludGVy 33724\nYnJhaW5z 33725\nIGF0dGl0dWRlcw== 33726\nVmVyaWZ5 33727\nIHNpZ25hdHVyZXM= 33728\nYWNrQmFy 33729\nIGdk 33730\nSmFjaw== 33731\nLmNhdA== 33732\nIHp6 33733\nd2FyZg== 33734\nRlRFUg== 33735\nIik7CgoK 33736\nQWxpdmU= 33737\nSUNMRQ== 33738\nIFdoYXRldmVy 33739\nIG91dGxpbmVk 33740\nc3ByaXRl 33741\n0LXQsg== 33742\nX0FC 33743\nX0RFUFRI 33744\nIGNydXNoZWQ= 33745\nYWFh 33746\nKGV2 33747\n5py6 33748\nQW50aQ== 33749\nSUNP 33750\naXNFcXVhbFRv 33751\nLnN1bg== 33752\naWN1bG8= 33753\nc2FsZQ== 33754\nX2hleA== 33755\nIFZr 33756\nYXB0b3I= 33757\nVW5pb24= 33758\nIERpc2NvdW50 33759\nbGlzdGE= 33760\nLlVuZGVmT3I= 33761\nIGF1dG9tYXRpb24= 33762\nTm9y 33763\n5a+5 33764\n5Y+C5pWw 33765\nIHJlZmxleA== 33766\nIExhdXJl 33767\nLnNob3dNZXNzYWdlRGlhbG9n 33768\nLnRlbXA= 33769\nIGFrYW4= 33770\nIF9fX19fXw== 33771\nLklzVHJ1ZQ== 33772\nQVJFRA== 33773\nYWdsZQ== 33774\nRW5lcmd5 33775\nIHF1YW50aXRpZXM= 33776\n4oCZw6k= 33777\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 33778\nIGNpdGl6ZW5zaGlw 33779\nbW91dGg= 33780\nIGluYXBwcm9wcmlhdGU= 33781\nIE91dGRvb3I= 33782\nV2hpdGVTcGFjZQ== 33783\nQW5vbnltb3Vz 33784\nbG9hZHM= 33785\nd2ViRWxlbWVudFByb3BlcnRpZXM= 33786\nVGVu 33787\nIGFjY2lkZW50cw== 33788\nIGFkdmVydGlzZW1lbnQ= 33789\nIFllbWVu 33790\nKGNhbGw= 33791\nIHNsYXZlcnk= 33792\n0YHQvw== 33793\nIExhbQ== 33794\nX0JJVFM= 33795\nb21lZ2E= 33796\nIE9sZQ== 33797\nIGtpZG4= 33798\nX0Fu 33799\nIFJhaWQ= 33800\nQ3JlYXRpb24= 33801\nc2F2ZWQ= 33802\nIHByb3BvcnQ= 33803\nV0FSTklORw== 33804\nXFA= 33805\nIHB3ZA== 33806\nRGF0YVJlYWRlcg== 33807\naXNjaGVy 33808\nYWRlb24= 33809\nIFByZWRpY3Q= 33810\nIHJlYXNvbmluZw== 33811\nIGRlc3Ryb3lpbmc= 33812\nSGVs 33813\nKmQ= 33814\nIExlZ2lzbA== 33815\nX1By 33816\nCQkJICAgICAgIA== 33817\nIHN5bXBhdGg= 33818\nIGNoZXNz 33819\nIG1hbQ== 33820\nOmhvdmVy 33821\nIGNvbnZlcnRz 33822\nIHBlbGE= 33823\nIHByb2dyZXNzaW9u 33824\nICJfIg== 33825\nIEdpbGw= 33826\nCXNob3c= 33827\nIHN1cHBvc2VkbHk= 33828\nYWNjdXJhY3k= 33829\nZWxpbg== 33830\nIHVuZm9sZGluZw== 33831\nIEh5cGVy 33832\nIHdhbm5h 33833\nIHVwcw== 33834\nKCM= 33835\nIENyaW1pbmFs 33836\nKFBvaW50 33837\nYXRMbmc= 33838\nYWN0bHk= 33839\nIGNvbnRyYWN0b3Jz 33840\nJ119 33841\nZHJhdWxpYw== 33842\nw7NkaWdv 33843\nIFRU 33844\nIFdpZGU= 33845\nIEFSRw== 33846\nX2lj 33847\nRkxBR1M= 33848\nU2Nob29s 33849\nIGNsZWFyaW5n 33850\nLWJlaW5n 33851\nPXtb 33852\nLGNvbnN0 33853\nbWFuZW50 33854\nT3ZlcmxheQ== 33855\nKCci 33856\n6YeP 33857\nIFRpbWVzdGFtcA== 33858\nIG1haWxpbmc= 33859\nIENha2U= 33860\nLlRoYXQ= 33861\nIG1lZGl0YXRpb24= 33862\ncXA= 33863\nIGVtcHJlc2E= 33864\nIExpb25z 33865\nIHdlbGQ= 33866\nIExpbmtlZElu 33867\nIGN1c2g= 33868\nIGdlbm9tZQ== 33869\nLkluZGV4T2Y= 33870\nYWdhaW4= 33871\nIGZhbGxiYWNr 33872\nIGNhbXBpbmc= 33873\ncmVkZA== 33874\nLXN0cmlwZWQ= 33875\nIGR2 33876\nRmVicnVhcnk= 33877\nIFByb3h5 33878\ndXNr 33879\nIGRpZXNlbA== 33880\nV1JJVEU= 33881\nUkVBSw== 33882\nTG9yZW0= 33883\nLkludm9rZQ== 33884\nLWRpdg== 33885\nSW50ZXJjZXB0b3I= 33886\nIERI 33887\naWFsZXM= 33888\nIHZpbGxhZ2Vz 33889\n2LQ= 33890\nIEVOVg== 33891\nU3lz 33892\nLlhS 33893\nIHBvZW0= 33894\nw4I= 33895\nY2FkZQ== 33896\ncGxvdHM= 33897\nIHso 33898\nLmdpdA== 33899\nL3N2Zw== 33900\nbmNtcA== 33901\nIMSN 33902\nYWluZXM= 33903\n5Ye95pWw 33904\nICgpCgo= 33905\nb3BzaXM= 33906\nIFJlbGF0aW9uc2hpcA== 33907\nX2F1dA== 33908\nIEJvbWI= 33909\nCWNvbQ== 33910\nKnNpemVvZg== 33911\nb2ZmaWNpYWw= 33912\nX3BheWxvYWQ= 33913\nCQkJCQkgIA== 33914\nLm1hbmFnZXI= 33915\nIEFyb3VuZA== 33916\nCXNlbmQ= 33917\nIEV4ZXJjaXNl 33918\nIEJpbGx5 33919\naXZp 33920\nIG5lZWRpbmc= 33921\nX3VybHM= 33922\nX3Rhc2tz 33923\nIEhlbQ== 33924\nIHRlYXJEb3du 33925\nZW5jcnlwdA== 33926\nLnRpZQ== 33927\nIGFzbQ== 33928\nSUNI 33929\nIENHUmVjdE1ha2U= 33930\n7ISx 33931\ndWxvbmc= 33932\nIGl0cg== 33933\nIEdTVA== 33934\nIG9mZmVyaW5ncw== 33935\ncm9iZQ== 33936\nRUVF 33937\nb3BlcmF0b3Jz 33938\nX1BST1A= 33939\naW5kZW50 33940\nQURF 33941\nb3Jm 33942\n65A= 33943\nIGJsZXNzZWQ= 33944\ndmFzY3VsYXI= 33945\nIGNvbm9j 33946\nSGFwcHk= 33947\nQnJpZGdl 33948\naWxpdGF0aW9u 33949\nam9pbnQ= 33950\nIEFkbWluaXN0cg== 33951\nLXRyYW5zZm9ybQ== 33952\nIG1lYW50aW1l 33953\nL0s= 33954\nIEJlZHJvb20= 33955\nIHJpZ2lk 33956\nIGJyb3dzZXJz 33957\nRU1QVFk= 33958\nLlNlcmlhbGl6ZQ== 33959\nX0VE 33960\nIHN0aXRjaA== 33961\nIGphbg== 33962\nZWxsdA== 33963\nIGJyYWNl 33964\nIHRyYWlscw== 33965\ncHVibGlzaGVk 33966\n5a+G56CB 33967\nfScpCg== 33968\nIGFjaWRz 33969\nICEhIQ== 33970\nX2RpcmVjdA== 33971\nPigpKTsK 33972\nYWrEhQ== 33973\nX09DQw== 33974\nIHBsYW5ldHM= 33975\n5p+l 33976\nIER1Ymxpbg== 33977\nIHNlcmll 33978\nLnByaW50Zg== 33979\nZGVlcA== 33980\nYCk= 33981\nIFwk 33982\nIM68 33983\nX1ZJREVP 33984\nZW5kb3Jz 33985\nIENyeXB0bw== 33986\nRmFy 33987\nLlRyYW5zcGFyZW50 33988\nLlRS 33989\naWFzbQ== 33990\nX3RyYWluaW5n 33991\nIHRlYWNoZXM= 33992\nIEJlbHQ= 33993\nIGxpbWl0aW5n 33994\nIEthdGg= 33995\nIEluZGV4UGF0aA== 33996\nIGFjaGlldmVtZW50cw== 33997\nIHNlcsOh 33998\naW50ZXJvcFJlcXVpcmU= 33999\nIGRpc3Nl 34000\nLklm 34001\nYXJtaW5n 34002\ndWxzaW9u 34003\nUG8= 34004\nX0RFVEFJTA== 34005\nUHJvdG90eXBl 34006\nIENBTA== 34007\nIGFncmVlcw== 34008\nLnZv 34009\nLkV4ZWN1dGVOb25RdWVyeQ== 34010\nIFRvcGlj 34011\nICd7fQ== 34012\nQXJt 34013\nIGVjYw== 34014\nTWFn 34015\nIHNlcmlhbGl6ZWQ= 34016\nCWNvbm4= 34017\nY2FjaGVk 34018\nPXRm 34019\nIEJ5dGVBcnJheQ== 34020\ncHJvdG9idWY= 34021\ndmFyY2hhcg== 34022\nCUFTU0VSVA== 34023\nIGxpc3Rl 34024\nX3RyaWdnZXI= 34025\nt7g= 34026\nRmVlbA== 34027\nVGFob21h 34028\nIExpaw== 34029\nIHN0cnVjdHVyZWQ= 34030\nZXJndXM= 34031\nLkluaXRpYWw= 34032\nX2dl 34033\nY2xqcw== 34034\nLmNvbnRhY3Q= 34035\nIGFuZGVyZQ== 34036\nJHN0bXQ= 34037\nX0NVUlJFTlQ= 34038\nIERpc2NvdmVy 34039\nJHJlcw== 34040\nZm9ybWF0dGVy 34041\nSGE= 34042\ndmFuZ3N0 34043\nIGVtZXJnZQ== 34044\n44CC4oCd 34045\nIENhYmluZXQ= 34046\nLXNxdWFyZQ== 34047\n6YOo 34048\nIHJhZ2U= 34049\nIEFK 34050\nIFZU 34051\nc2hhZG93 34052\nIEZhaXRo 34053\nZW5hbWVz 34054\ncHJldHR5 34055\naGFzaWw= 34056\ncGFydHk= 34057\nIHZhcmNoYXI= 34058\nIGZvdG9z 34059\nIGFsdW0= 34060\nIEJlbGdpdW0= 34061\nLnlsYWJlbA== 34062\nIGRlag== 34063\nX251bWJlcnM= 34064\nIGh1 34065\nLnNldEFkYXB0ZXI= 34066\nIFVzdWFsbHk= 34067\nKHNhbXBsZQ== 34068\nLlNoYXJlZA== 34069\nIGJvb2tlZA== 34070\nID4+PQ== 34071\nIG1pbmVyYWxz 34072\nIj48Pz0= 34073\nIGFkanVzdG1lbnRz 34074\nIERM 34075\nIHZpYnJhbnQ= 34076\nIERlcGVuZGVuY3k= 34077\nIHphcA== 34078\nL1g= 34079\nIGZvbnRz 34080\ndHJpcA== 34081\n0LjRhw== 34082\nIHR1YmVz 34083\nY2xhbWF0aW9u 34084\nIOun 34085\nIHByb3RhZ29u 34086\nb3Vwb24= 34087\nIEJydXNo 34088\nKHByZWQ= 34089\nb3VybmV5 34090\nJ10pLT4= 34091\ncHJvZw== 34092\nYm9v 34093\nX21k 34094\nX3BhY2s= 34095\nKGV4cHJlc3M= 34096\ndXR6 34097\nXEF1dGg= 34098\nLGlk 34099\nIENoaWxl 34100\nYWN0aWNl 34101\nIHJlY3J1aXRtZW50 34102\nIHBvc2Vz 34103\nIHZ1bG5lcmFiaWxpdHk= 34104\naW5zdGFuYw== 34105\nb3J1bQ== 34106\nZGVzcw== 34107\nIHhs 34108\nJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSU= 34109\nKGZpZw== 34110\nIGRlbGV0aW5n 34111\nLmRlbA== 34112\nKScpCg== 34113\nIFdlZWtseQ== 34114\nPz8/ 34115\nKHN0cmNtcA== 34116\nc21pdGg= 34117\nIHB1cnN1aW5n 34118\nLXNv 34119\nIEFwcHM= 34120\nLycK 34121\nIGRlY2lz 34122\nRk9SRQ== 34123\nRXZlcnlvbmU= 34124\nIGxhbmVz 34125\nVmlydHVhbA== 34126\nLmF0dGFjaA== 34127\nKExvZw== 34128\nIE1lZGljYWlk 34129\nKFBhdGg= 34130\nIFR1cm5lcg== 34131\nL2FwcGxpY2F0aW9u 34132\nIHBvcnRyYWl0 34133\nIG9wcG9zZQ== 34134\nY2hlY2tvdXQ= 34135\nIGZpbmlzaGVz 34136\nX01F 34137\nQmFycmllcg== 34138\nU29uZw== 34139\nVkFS 34140\nRWFybGllcg== 34141\ncmVsbGE= 34142\nIGhhc3Q= 34143\nYXphcg== 34144\nIHB1bGxz 34145\nbmd4 34146\nIGluc3BpcmluZw== 34147\n0YPRjg== 34148\nLWRpcmVjdGlvbg== 34149\nIGV4cGxvc2l2ZQ== 34150\nIGNyZWF0ZWRBdA== 34151\nc3Rv 34152\nIHdoZWF0 34153\nIEJ1aWx0 34154\nJ2Fp 34155\nIHRyYWNrZWQ= 34156\naGFtbWFk 34157\nUm93QXRJbmRleFBhdGg= 34158\nX2hlYXA= 34159\nRHVl 34160\nIGNvbm5lY3Rz 34161\nLnB1Ymxpc2g= 34162\nZW11 34163\nIGJ1bGxldHM= 34164\nQkFS 34165\nb2xhdGU= 34166\nIGludGVybmFsbHk= 34167\nIGNhdGNoaW5n 34168\nLXBhc3N3b3Jk 34169\nb3VjaGVk 34170\n5oCn 34171\nZW91cw== 34172\nIHhyYW5nZQ== 34173\nUXVhbGl0eQ== 34174\ndnY= 34175\nTWFuYWdl 34176\nKCgk 34177\nYWNlbWVudHM= 34178\nIEJyb3RoZXJz 34179\nIEhFQUQ= 34180\nIFVuc3VwcG9ydGVk 34181\nc2Fu 34182\nZXNp 34183\nKioqCg== 34184\nIGFkYXB0YXRpb24= 34185\nIFdvcmtlcg== 34186\nJ10v 34187\nLnNhdmVmaWc= 34188\nKHRyYW5z 34189\n2Kw= 34190\nbmVl 34191\nQ29ycmVjdA== 34192\nLi4uIikK 34193\nIHN1Ym1pdHRpbmc= 34194\nLXBhdGg= 34195\nCWxhc3Q= 34196\naXNzYW4= 34197\nLnhsYWJlbA== 34198\nIFNlcGFy 34199\nL25v 34200\nX2Jlc3Q= 34201\nIE1pbGxz 34202\nX3NvY2s= 34203\nKGZsYWc= 34204\nIGRlc3RpbmF0aW9ucw== 34205\nZW1wdGlvbg== 34206\nIEZBSUw= 34207\n5ZKM 34208\nIHJw 34209\nZmFjdA== 34210\nCWxlbg== 34211\nREFZ 34212\nIHNlaXo= 34213\nX2RzdA== 34214\nbGlw 34215\nLkxpbmVhcg== 34216\nIEJhc2tldA== 34217\nJHQ= 34218\nJGk= 34219\nLWJyYW5k 34220\nIE5laWw= 34221\nIEVx 34222\nIHRob3U= 34223\nb2dlbmU= 34224\nIHNjaG9sYXJzaGlw 34225\n5pu0 34226\nIHN3bw== 34227\nYWdpbmF0b3I= 34228\nZW5p 34229\nKGJvb2s= 34230\nIGJsaW5r 34231\ndGh1cw== 34232\nIGNhbmNlbGxhdGlvblRva2Vu 34233\nIFBhbGVzdGluaWFucw== 34234\nIHByb2ZpdGFibGU= 34235\nIGJhY2twYWNr 34236\nZW5zb24= 34237\nPExvbmc= 34238\nIHBvb2xz 34239\nIHN0aWNrcw== 34240\nIHNwb2tlc3dvbWFu 34241\nQmVpbmc= 34242\nIEhlcml0YWdl 34243\nIE5pa2U= 34244\nU0hB 34245\nIE5vdEltcGxlbWVudGVkRXhjZXB0aW9u 34246\nJGNvcmU= 34247\nIFJpY28= 34248\nL2xhdGVzdA== 34249\nIEN6ZWNo 34250\nbmVyUmFkaXVz 34251\nKGxpbmVz 34252\nIHNlbWVzdGVy 34253\nIHdvdW5kcw== 34254\nUHJvY2VkdXJl 34255\nLm1haWw= 34256\nKCkpOgo= 34257\nIGNvcnJpZA== 34258\ndGVyZWQ= 34259\nIE5DQUE= 34260\nIGdhbGF4eQ== 34261\nX2tpbmQ= 34262\naWxr 34263\nIHRyYXM= 34264\nX1BPTA== 34265\nIEhldA== 34266\nIHJlZnVnZWU= 34267\nIHRlZW5hZ2U= 34268\nLmJpbmRpbmc= 34269\ncG9zdGFs 34270\nIGnDp2lu 34271\nIERhdGFUeXBl 34272\n6ZY= 34273\neWNsZXJ2aWV3 34274\nLHZhbHVl 34275\nX2lkZW50aWZpZXI= 34276\nPGI= 34277\nIG91dGZpbGU= 34278\nDQogICAgDQo= 34279\nIGNyw6k= 34280\nIHJlc3BvbmRlbnRz 34281\nIEJlYXN0 34282\nY2VsZWQ= 34283\nIGludGVyZg== 34284\nLXRoZW1l 34285\nZ2lm 34286\nIFJhbmdlcnM= 34287\nSVRBTA== 34288\nIGF1dGhlbnRpY2F0ZQ== 34289\nQ29tcGxldGlvbg== 34290\ndXJzb3Jz 34291\nIGNpbmVtYQ== 34292\nIGRpc2NvdXI= 34293\nIEphdw== 34294\nT0NLRVQ= 34295\nIHByYXllcnM= 34296\nIEx1aXM= 34297\nZnJhZw== 34298\nPVsK 34299\nIGJyYXZl 34300\nX3Bvc2U= 34301\nQ2VydGlmaWNhdGU= 34302\nLWZl 34303\naWZlcmF5 34304\nIEZsYWdz 34305\nQ29udGFpbmVyR2Fw 34306\nIENyaXQ= 34307\nUmVzdWx0U2V0 34308\nCWN1cg== 34309\nIGNvcnJlc3BvbmRz 34310\nU3RhZmY= 34311\nLkh0dHBTZXJ2bGV0UmVxdWVzdA== 34312\nIG5ldXJvbnM= 34313\nIE1haW5BeGlzQWxpZ25tZW50 34314\nZWRhcg== 34315\nIGdhZA== 34316\nX3BhcnRz 34317\nIM6y 34318\nIGZ4 34319\nL2ZpbGVz 34320\nIEJyb3M= 34321\naGlwcw== 34322\nIGdsdWNvc2U= 34323\nIGZhcm1z 34324\nIG1lbnRhbGx5 34325\ncmVzdGF1cmFudA== 34326\nVGFibGVOYW1l 34327\nIE1lcmNlZGVz 34328\nLlZpc3VhbA== 34329\nIGFuY2g= 34330\naW5hbGc= 34331\nX3J1bnRpbWU= 34332\nIHByb3ByaWV0YXJ5 34333\nIGludGVudGlvbnM= 34334\naXpp 34335\nU2xpY2U= 34336\nOyI+PC8= 34337\nX1dPUkQ= 34338\nXE1pZ3JhdGlvbnM= 34339\nIEVOQUJMRQ== 34340\nX1BBUkFNRVRFUg== 34341\nIEJpc2hvcA== 34342\nLnN1YmplY3Q= 34343\naWxsYXM= 34344\nLm1hdHJpeA== 34345\ndXJyZW5jZXM= 34346\nKnk= 34347\nIGNvc3RseQ== 34348\nIENodWNr 34349\nIGNsb3Nlcw== 34350\nIE1pZ2h0 34351\nLXN0b3Jl 34352\nIG1hbGw= 34353\naWV0ZW4= 34354\nLkFicw== 34355\nIGNvdXBsZWQ= 34356\nLmJhc2lj 34357\nIDo6Ojo6Ojo6 34358\nTWFrZXI= 34359\nY2Fubm90 34360\nIGFjaA== 34361\nIEVsaQ== 34362\n4oiS 34363\nb3JuYQ== 34364\nIGNwcw== 34365\nIHRoZXJlb2Y= 34366\nIEB7 34367\nIE5TTXV0YWJsZUFycmF5 34368\nzr0= 34369\ncHJvZHVjdGl2ZQ== 34370\nU3F1YXJl 34371\ndGVtcHRz 34372\nIGVsaW1pbmF0ZWQ= 34373\nPE0= 34374\nIGNvbnNlcnZhdGl2ZXM= 34375\nIFN1cmc= 34376\nLnBhcg== 34377\nIEJ1Y2g= 34378\nKmI= 34379\nRm9ydA== 34380\nQ29sb3Vy 34381\nIENoaQ== 34382\nZWRpYw== 34383\nPnRydWU= 34384\nIE5ZQw== 34385\nIGJvcmVk 34386\nIERldGVjdA== 34387\nIGFwcGFy 34388\nIGplYW5z 34389\nIFRhaw== 34390\nSU9E 34391\nIEhvcnNl 34392\nKEZJTEU= 34393\nKD8= 34394\ncmlxdWU= 34395\nb3B0aW1pemVy 34396\nbmF0 34397\nbG95cw== 34398\nCVRva2Vu 34399\nb3VidGVk 34400\ndWVzcw== 34401\nb2NvYQ== 34402\nRGF0YU1lbWJlcg== 34403\nX1BPV0VS 34404\nY2xhc3NMaXN0 34405\nUHVzaEJ1dHRvbg== 34406\nIFdpRmk= 34407\nLlN0cmVhbQ== 34408\nLmd1aWxk 34409\nIG5vZw== 34410\nIFBvcnR1Z2Fs 34411\nIFVudGVy 34412\nUHJpbWl0aXZl 34413\nYm9zcw== 34414\nIERldXRzY2g= 34415\nIGVyb3RpYw== 34416\nIHN0cmNvbnY= 34417\nLlRyeVBhcnNl 34418\nIGdyYW1z 34419\nLlN1Y2Nlc3M= 34420\nX3Br 34421\nIEhhcnZleQ== 34422\nLW1pbmRlZA== 34423\nLmNvdW50cnk= 34424\nW10i 34425\nIGFuZ2Vs 34426\nIGJlYXRz 34427\nIFZvcg== 34428\naWxpbw== 34429\nLm1hc3Rlcg== 34430\nc29tZXRoaW5n 34431\nIFBBQ0s= 34432\nKGlm 34433\nUmVxdWVzdEJvZHk= 34434\nIGFudGVz 34435\nL3dpZGdldA== 34436\nIG1vZG8= 34437\nIEFX 34438\nZmluZGVy 34439\nIG9wdGltaXplZA== 34440\nIG1pc3NpbGVz 34441\nTkI= 34442\nCWludGVybmFs 34443\ndGV4 34444\nIFNyaQ== 34445\nIGRhbWFnaW5n 34446\nIE1haXM= 34447\nLUFsbG93 34448\nIFpo 34449\nLWFsdA== 34450\nICkpOwoK 34451\n6Ik= 34452\nIGluZmx1ZW5jZXM= 34453\nIGNhdGFs 34454\nX1JFR0lTVEVS 34455\nIEFQSXM= 34456\nLWNlbnR1cnk= 34457\nIGJpb2xvZ3k= 34458\nIEFjdHVhbA== 34459\nIGhlZWxz 34460\nVFJBQ0U= 34461\nX0RJRw== 34462\nRGF0YXNldA== 34463\nIE1hdHRlcg== 34464\nIGNsYXNzaWZpZXI= 34465\nLndpa2lwZWRpYQ== 34466\nIFJvZ2Vycw== 34467\nIGRvbmF0ZWQ= 34468\ncmF3bGVy 34469\nZW5lbg== 34470\nIGNhc2lub3M= 34471\nb3J0YWw= 34472\nIHByaXZl 34473\nc3Bl 34474\nZHVjZXJz 34475\nLmVw 34476\nIGdyYXNw 34477\nYWNqaQ== 34478\nIGRhaXJ5 34479\nIGJ1c2Vz 34480\nLmNvbW0= 34481\nLmlucw== 34482\nIElSUw== 34483\nIEJlZXI= 34484\nYWRj 34485\nb2FyZA== 34486\nX01FVA== 34487\nICcrJw== 34488\ncmFucw== 34489\nIGtpbmRh 34490\nIOKUgg== 34491\nIE1hdXI= 34492\n0LDQsw== 34493\nIGJhbmR3aWR0aA== 34494\naWJ1cw== 34495\nIERpZmZlcmVudA== 34496\nKG1hdA== 34497\nIFJlc3VtZQ== 34498\nX1VOUw== 34499\nZXN0YWJsaXNo 34500\nIGZvbmN0aW9u 34501\nU3Vic2NyaXB0aW9u 34502\nX2NvbXBhbnk= 34503\nIGxpZ2h0bHk= 34504\nLmNvbmZpcm0= 34505\nLnlhbWw= 34506\nIEJvb3N0 34507\nQ29tbWVyY2U= 34508\nLXRlbXBsYXRl 34509\nX0RFTEFZ 34510\nIEhJ 34511\nIG5hdmln 34512\nKFNlbmRlcg== 34513\nIEhT 34514\nXyIr 34515\nIFJFUVVFU1Q= 34516\nIHdpZmk= 34517\nPSIiCg== 34518\nXSktPg== 34519\nIHJvcGU= 34520\nIHZpb2xhdGVk 34521\nIGdsYW5jZQ== 34522\nIEt1cmQ= 34523\nIOiu 34524\nZGVjaw== 34525\nIElTQk4= 34526\nIGluZmVjdA== 34527\nIEZvbw== 34528\nIGdldHRlcg== 34529\nIHRlbmVy 34530\nYXBwZQ== 34531\nLmho 34532\nX2hvdA== 34533\nPEFN 34534\ncG9seQ== 34535\nISIsCg== 34536\nIGNvbnZlcnRpbmc= 34537\nIFdXRQ== 34538\nUk9T 34539\nKCd7 34540\nQ29tbWl0 34541\nKUw= 34542\nIE9yZQ== 34543\nIHNwYXJzZQ== 34544\nIGRpc3Bvc2Fs 34545\nIGNhbmNlbGVk 34546\n5ZCO 34547\nIGFlcg== 34548\nIHZpbnls 34549\n4buD 34550\ncmVjb2du 34551\nYXJraW5n 34552\nIHRyaWNreQ== 34553\nKnM= 34554\nIHByb2NlZWRz 34555\nIGlzbw== 34556\nIGNvY29udXQ= 34557\nIGNyYWZ0ZWQ= 34558\nSUVMRFM= 34559\nIHF1ZXN0bw== 34560\nIGNvbW11bg== 34561\nX0NPTk5FQ1Q= 34562\nIHRyYWZmaWNraW5n 34563\nRGVlcA== 34564\nYcOnw7Vlcw== 34565\nY29kaWdv 34566\ndmVhdQ== 34567\nIGJldHJheQ== 34568\naW50YQ== 34569\nVEVE 34570\nw6Zy 34571\nbWFydA== 34572\nX0JVUw== 34573\nL3Nj 34574\naWFsbHk= 34575\nIGNpZ2FyZXR0ZXM= 34576\n6K+B 34577\nKG5u 34578\nIG1vZGVsaW5n 34579\nL3Byb2R1Y3Rz 34580\nd2Fybg== 34581\nIG1ldHJv 34582\nIEl2 34583\nJik= 34584\nIENhYmxl 34585\nzrs= 34586\nQ29tcGFyaXNvbg== 34587\nZ2FyeQ== 34588\nIEJB 34589\nUEFSVA== 34590\nIHB2 34591\nX3VwZGF0ZWQ= 34592\nQ3JlZGl0 34593\nb3J0aHk= 34594\nb2JzZXJ2YWJsZQ== 34595\nIHRoZWF0cmU= 34596\nQkxF 34597\nO30KCg== 34598\nbGF1bmNo 34599\nX3N0cmluZ3M= 34600\ndWdv 34601\nIFJQRw== 34602\nLWF1dGg= 34603\n0KA= 34604\naG9sbQ== 34605\nIFBhbmQ= 34606\nVWlk 34607\nIGltcGx5 34608\n7Jy8 34609\nJ109Jw== 34610\nL1VzZXI= 34611\nIHN0cmNhdA== 34612\n0L3Ri9C5 34613\nRGF0YUFkYXB0ZXI= 34614\nIGxhbmRzYw== 34615\nIGRpcGxvbWF0aWM= 34616\n77yT 34617\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 34618\nIENoaWNrZW4= 34619\nIGJjcnlwdA== 34620\nLkluZg== 34621\nW2NvbA== 34622\nIFF1YW50aXR5 34623\nLXBvc2l0aW9u 34624\nIGRpZXRhcnk= 34625\nIGZpbG1t 34626\nSXNyYWVs 34627\nUHJldg== 34628\nIE1pbGxpb24= 34629\nIHJlbWVk 34630\nIGJpbGxpbmc= 34631\nIG91dGRvb3Jz 34632\nLnRt 34633\nIG5hZA== 34634\nRm9yZw== 34635\nWlo= 34636\nIHNzbA== 34637\nXSwn 34638\nS1Q= 34639\nZnJlcQ== 34640\nPWRvY3VtZW50 34641\nYmx1cg== 34642\nrLg= 34643\nIEplZmZlcnNvbg== 34644\nQ3M= 34645\nKHNhdmU= 34646\nIHN0cmFw 34647\nSW5kaWE= 34648\nIGlkZW9sb2d5 34649\nQk9TRQ== 34650\nIEZQ 34651\nKGFucw== 34652\nIGZldmVy 34653\nIFlhbQ== 34654\nS2luZw== 34655\n4LI= 34656\nQVRJTkc= 34657\nYm9oeWRy 34658\ncm9sbGJhY2s= 34659\nIG5ld05vZGU= 34660\nIE5WSURJQQ== 34661\nIGhvbm91cg== 34662\nIENvbmZpcm0= 34663\neGJk 34664\nIHN1Y2Nlc3Nvcg== 34665\nL3U= 34666\nbGl2 34667\nb3VybmFtZW50cw== 34668\nQXR0YWNobWVudA== 34669\nIGdydXA= 34670\nIHRyaWJl 34671\nIGNhcmVz 34672\nZWZ0 34673\nX3NhbWU= 34674\nJ2xhYmVs 34675\nIOOAkA== 34676\nTW90b3I= 34677\nIGluZXhw 34678\nICIoIg== 34679\nX1BPU0lUSU9O 34680\nIHZhbGxleQ== 34681\nIFJlc3VsdFNldA== 34682\nIHByZXNlcnZlZA== 34683\nIG11dGF0aW9ucw== 34684\nIHF1ZXN0aW9uaW5n 34685\nbXVuaXRpb24= 34686\ncGFyc2VJbnQ= 34687\nIFNy 34688\nIE1ldGFkYXRh 34689\n4oCd77yM 34690\ndGltZXN0YW1wcw== 34691\nIHRyYW5zaXRpb25z 34692\n7Zk= 34693\n0Yo= 34694\naW9t 34695\nLkRv 34696\nIHBpbmU= 34697\nIGZ1bmc= 34698\nIHRyYW5zbWl0dGVk 34699\nY3RpbWU= 34700\nIEZhbQ== 34701\nUmV2aXNpb24= 34702\nQmFz 34703\nVVBFUg== 34704\nRGVzdGluYXRpb24= 34705\ndG9IYXZlQmVlbkNhbGxlZA== 34706\nIHVuZm9ydHVuYXRl 34707\nSU5FUw== 34708\nX3Byb2Y= 34709\nQW1vbmc= 34710\nIEN5YmVy 34711\nIEJhdHRlcnk= 34712\nZ2VucmU= 34713\nIFZpZXdNb2RlbA== 34714\nLT0= 34715\nIHV0aWxpemVk 34716\ncGFpbnQ= 34717\nLkludGVnZXJGaWVsZA== 34718\nZXJuaXR5 34719\nY29tcGlsZXI= 34720\n4oCLCgo= 34721\nIE1hc3RlcnM= 34722\nLlRvQXJyYXk= 34723\nIHN0cnRvbA== 34724\nIFVrcmFpbmlhbg== 34725\nfSkpOwo= 34726\nIHNoZW1hbGU= 34727\nIlRoYXQ= 34728\nZm9yYWxs 34729\nL2Rvd25sb2Fk 34730\nIHJoZXRvcmlj 34731\nLmxhdGl0dWRl 34732\nIFdIRU4= 34733\nIHNob2NraW5n 34734\nSUZJQw== 34735\nLk5vcm1hbA== 34736\nX0ZPTERFUg== 34737\nIGRyaWZ0 34738\nIG1vdW50aW5n 34739\nLWJvb2s= 34740\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK 34741\nIFdpcmVsZXNz 34742\nPiIuJA== 34743\nIHJlbGllcw== 34744\nKENvbnNvbGU= 34745\nSW50ZXJuYXRpb25hbA== 34746\nLT57JA== 34747\nTWlk 34748\nIGRpc3NlcnQ= 34749\nZGRz 34750\nIGRlcG9zaXRz 34751\nCWRyaXZlcg== 34752\nI2dh 34753\ncHJpc2luZw== 34754\ncHJpbnRsbg== 34755\nIHByZXNlbnRlcg== 34756\nIG1pbmVz 34757\nQ1NT 34758\nIER1YWw= 34759\nKCEo 34760\nIGthbQ== 34761\nIGlzTG9hZGluZw== 34762\nIFByb3RlY3Q= 34763\nLnVwcGVy 34764\nYXJpdW0= 34765\nXToKCgo= 34766\nWWlp 34767\nLXNoaXJ0 34768\nIElNQUdF 34769\nX2NvbG9ycw== 34770\nIHVyZ2VudA== 34771\nLkNvbnRhaW5lcg== 34772\nISgK 34773\nU2F0dXJkYXk= 34774\nIHNvY2lldGllcw== 34775\nIFRoYW4= 34776\nIENvZA== 34777\nPUA= 34778\nIGF0dGFjaG1lbnRz 34779\nLm1vYmlsZQ== 34780\nIHNwaXRl 34781\nIGJvdW5jZQ== 34782\ncmF3bA== 34783\naW5zdGFuY2V0eXBl 34784\nIFRydWNr 34785\nIG1hbmlwdWxhdGlvbg== 34786\nKENvbmZpZw== 34787\nLWluc3Q= 34788\nIHN0b3I= 34789\naXR1dGlvbg== 34790\nUHJlZmVycmVkR2Fw 34791\nIG1haW5BeGlzQWxpZ25tZW50 34792\nIGxpc3RlbmVk 34793\nJycnCgo= 34794\nb3R0YWdl 34795\nLXByb2plY3Q= 34796\nLkFQUExJQ0FUSU9O 34797\nCXJvb3Q= 34798\nIHdoaXQ= 34799\nIGJpbGRlcg== 34800\nIGtlcg== 34801\nIGFwcGxpYW5jZXM= 34802\ncm93YXZl 34803\n7J2A 34804\nZW1hdGljcw== 34805\nIE9yZw== 34806\nb3Bpbmc= 34807\nX1NFQVJDSA== 34808\nIGNoYW0= 34809\nYWRkQ29udGFpbmVyR2Fw 34810\nICgpLg== 34811\nIEFycm93 34812\nSWxsZWdhbA== 34813\nQ3VycmVudGx5 34814\nIHVzYQ== 34815\nIHBhc3N3b3Jkcw== 34816\nIHJlbm93bg== 34817\nYXZlcm4= 34818\nIEV2aWw= 34819\nIGNvbmNhdA== 34820\nIGR1bw== 34821\nIHZhbGU= 34822\nIEJlYW4= 34823\nIGluZGljYXRvcnM= 34824\nY21hdGg= 34825\nIFB1bXA= 34826\nTm92ZW1iZXI= 34827\naWZpY2FudA== 34828\nX0RPTUFJTg== 34829\ncmVnYXI= 34830\nIFBvcnRhbA== 34831\nIiQ= 34832\nIGZvcm1lcmx5 34833\nIl06Cg== 34834\nIFZpc2liaWxpdHk= 34835\nLmdldEVsZW1lbnRzQnlDbGFzc05hbWU= 34836\nX1JFRA== 34837\nIGNoYW1waW9ucw== 34838\n4LQ= 34839\nVmFsb3I= 34840\nX2Vz 34841\nKmE= 34842\nLXJlcGVhdA== 34843\nQmFuZA== 34844\nLnN0YWdl 34845\nIGJ1cmVhdWM= 34846\nQ250 34847\nZXRlbg== 34848\nLWZ1bmN0aW9u 34849\nIG11aXRv 34850\nUElE 34851\nX2VkaXRvcg== 34852\nIGNyYXNoZWQ= 34853\nZGVhZA== 34854\na2F0 34855\nYWdo 34856\nIEVYVA== 34857\nYXNzZXI= 34858\nLXNtYWxs 34859\nIHJlYWxpeg== 34860\nKEVudGl0eQ== 34861\nw7pz 34862\nIEFjdHVhbGx5 34863\nIEVsaXRl 34864\nIGhlbG0= 34865\nKG5vbmF0b21pYw== 34866\nYXNoZXI= 34867\nQ29tbXVuaXR5 34868\nYWxsZW5n 34869\naXJ5 34870\nIEdyb3d0aA== 34871\nIHN1ZQ== 34872\nIGZyZXF1ZW5jaWVz 34873\nX2Rlc2NyaXB0b3I= 34874\nLkF0dHJpYnV0ZQ== 34875\nIHJlY2lwaWVudHM= 34876\nX05T 34877\nLyIr 34878\naWJhbg== 34879\nIGF0aGxldGU= 34880\nIElnbg== 34881\nX0RNQQ== 34882\nKGRz 34883\nIFJlcXVpcmVtZW50cw== 34884\nQURJ 34885\nZXJleg== 34886\nXEFkbWlu 34887\nYnJhc2th 34888\nIFJ1c3Q= 34889\nUmVsYXRpb24= 34890\nQ09E 34891\nIFZFUlNJT04= 34892\nZW1tYQ== 34893\nKSl7 34894\nLkR1cmF0aW9u 34895\nIENhbWI= 34896\nLWxvZ28= 34897\nIHJlYWRhYmxl 34898\nIGNyZWF0b3Jz 34899\nKCldOwo= 34900\nVXBEb3du 34901\nLWhhbGY= 34902\nLmdldE1vbnRo 34903\nKHNm 34904\nUGlj 34905\nIGh1bmdlcg== 34906\nLnR4 34907\nIGV4Y2VlZGVk 34908\nX3NlZWQ= 34909\nKF4= 34910\nX3Nr 34911\nLnBlcmZvcm0= 34912\nID46Og== 34913\nIG1vbmdv 34914\nPWZsb2F0 34915\nYmluZFBhcmFt 34916\nU21hcnQ= 34917\naWZh 34918\nIHNlY3VyaXRpZXM= 34919\nIHByZWp1ZA== 34920\nICwi 34921\nIGNvcnBz 34922\nIHZyYQ== 34923\nYW1hY2FyZQ== 34924\naXRlcnI= 34925\nKE1lZGlh 34926\ndWNoZQ== 34927\nIGNvYg== 34928\nIGxpYmVy 34929\nLmdlb21ldHJ5 34930\nTG9jYXRvcg== 34931\nIHNsaWRpbmc= 34932\nIHN1cmdpY2Fs 34933\nX0NVUg== 34934\nIGNvbnNlY3Q= 34935\nWyo= 34936\nIFJlc29ydA== 34937\nU3R1Yg== 34938\nX0RPVUJMRQ== 34939\nIFNvcGg= 34940\nIGVsZWN0b3JhbA== 34941\nX2Rpc2FibGU= 34942\nINGB0L4= 34943\nIExpZ2h0bmluZw== 34944\nIG1lbnRpb25z 34945\nb2N5 34946\nIGxlYWtlZA== 34947\nIHJlbGF4aW5n 34948\nUHJlc2VudGVy 34949\ndnNw 34950\nIGd1aWx0 34951\nPS09LQ== 34952\nLnJlcGx5 34953\nIE1pcnJvcg== 34954\nQ2FtcA== 34955\nICsjKyMrIys= 34956\nICsjKyMrIysjKyMr 34957\nLkF1dGhvcg== 34958\nIGRpcmVjdGl2ZQ== 34959\nLWhvb2s= 34960\n7YSw 34961\nfQoKCgoK 34962\nQHB5dGVzdA== 34963\nX3JhbmQ= 34964\nbWlz 34965\nIGNvbG9yZnVs 34966\ndWpl 34967\nbGFzc2Vz 34968\nIENsYXNzZXM= 34969\nLmhhdmU= 34970\nJSks 34971\n6aKY 34972\nIGRpc3R1cmJpbmc= 34973\nc3Vic3RyaW5n 34974\nIEtvaA== 34975\nSW52ZXN0 34976\ncHVyY2hhc2U= 34977\nIHJlY3ljbGluZw== 34978\nIEFSVA== 34979\naWVyYXJjaHk= 34980\nIGZwcw== 34981\nLmNoZWNrQm94 34982\n7ZW0 34983\nX21hdGVyaWFs 34984\nZHVjYXRpb24= 34985\nIGZ3 34986\ndWRpdA== 34987\nIHJldmlld2luZw== 34988\nIFNpZA== 34989\nU3ludGF4 34990\nIFdyaXR0ZW4= 34991\nYXJnYXI= 34992\nVU1F 34993\nL3E= 34994\nQ2xhc3NpZmllcg== 34995\nT2ZmaWNpYWw= 34996\nIGpheno= 34997\nIG9tZWdh 34998\nUGh5c2ljcw== 34999\nIGx1Z2Fy 35000\nX2FjY2Vzc29y 35001\nLmNvbW1hbmRz 35002\nQWJpbGl0eQ== 35003\nIEJhdGNo 35004\nUkFN 35005\nIGVuY291bnRlcnM= 35006\nLlF1 35007\nQllURQ== 35008\nIERpc3RyaWJ1dGlvbg== 35009\nIHVzbw== 35010\nIFJlY292ZXJ5 35011\nYXBwcm92ZWQ= 35012\nIGRlbmlhbA== 35013\nL3NoYXJl 35014\nTGlua2VkTGlzdA== 35015\nKQ0KDQoNCg== 35016\ndWRkeQ== 35017\nIGZpbmVz 35018\nIHJ5 35019\nVW5pY29kZQ== 35020\nCXJlbmRlcg== 35021\nIHByZW1pc2Vz 35022\nIHBvbg== 35023\nYWxpYXNlcw== 35024\nL0ZvdW5kYXRpb24= 35025\nY3VkYQ== 35026\nIENvY2s= 35027\nLDop 35028\nKGZvbGRlcg== 35029\nIG3DqWQ= 35030\nZHJhZw== 35031\nIHRhbGVudHM= 35032\nICAgCgo= 35033\n0LXRgdGC0LI= 35034\nbW9i 35035\nLnltbA== 35036\nIGFzdGVy 35037\nIGRpc2NyZQ== 35038\nZ29hbA== 35039\nIEdUWA== 35040\nIFNVQ0NFU1M= 35041\nIExPTkc= 35042\nKGZpbmQ= 35043\nIHNpbmd1bGFy 35044\nX3N6 35045\nIEV0aGVyZXVt 35046\nLi4K 35047\nIGlycmVz 35048\nJykpewo= 35049\nIG1pbmlzdGVycw== 35050\nU3RlcHM= 35051\naXZlcnNhbA== 35052\nIE5ldmVydGhlbGVzcw== 35053\nLWxlZA== 35054\nICglKQ== 35055\n56Gu 35056\nIHRpbWV6b25l 35057\nIHN0cmFuZ2Vy 35058\nKHJlbmRlcg== 35059\nIHNodXRpbA== 35060\nIG1waA== 35061\nIHRyaW8= 35062\ncHB5 35063\nIHByZWRvbWlu 35064\nIGVuZG9ycw== 35065\nIFJ1c3NpYW5z 35066\nCXJvdw== 35067\nIHdpemFyZA== 35068\nLnNlcmlhbGl6ZQ== 35069\nIGNvbXBsYWluZWQ= 35070\nIHNpZG8= 35071\nIGRlbGlnaHRlZA== 35072\nLW1l 35073\nIFJhdg== 35074\nSHVtYW4= 35075\nYWRheXM= 35076\ncmVjdg== 35077\nV29ya2luZw== 35078\nSnVtcA== 35079\nIMOlcg== 35080\nIEF1dG9tYXRpYw== 35081\nX0Jhc2U= 35082\n5qC8 35083\nYXVyYW50cw== 35084\nwq8= 35085\n5rg= 35086\nKENUeXBl 35087\nSUZJ 35088\nKGFtb3VudA== 35089\nIGJlbGlldmluZw== 35090\nPW15c3Fs 35091\nIGZpcg== 35092\nIHJlc3RvcmF0aW9u 35093\nZXJlY28= 35094\n0KI= 35095\nXycr 35096\nIGVib29r 35097\nIGRlYnJpcw== 35098\nKGlucHV0cw== 35099\nQVlPVVQ= 35100\nIHNjcmVhbWluZw== 35101\nYXZpYQ== 35102\nbGFuZGVy 35103\nIGRpc3RyZXNz 35104\nIGFzc2VtYmxlZA== 35105\nIEF2b2lk 35106\nKHRocmVhZA== 35107\nIFJQQw== 35108\nX0VYSVQ= 35109\nKHF1ZXVl 35110\n0LjRgdGC 35111\nRGxs 35112\nIHNrdWxs 35113\nX3B1Yg== 35114\nY2hleg== 35115\nbWluYXRl 35116\nZW5zZW4= 35117\nIGluc2FuZQ== 35118\nYm91bmRz 35119\nIFJvc2Vu 35120\nIGNvbmRpdGlvbmluZw== 35121\ncHJvY2Vzc2Vk 35122\ndmlkZW9z 35123\nZm91cg== 35124\nLkNvbnY= 35125\nfDsK 35126\nUGVyc29uYWw= 35127\nY2VycHQ= 35128\nOlVJQ29udHJvbFN0YXRlTm9ybWFs 35129\nIGRvc2Vz 35130\nIEthcmw= 35131\nIEZyZXF1 35132\nLkJBU0U= 35133\nIFZvdGU= 35134\nIGNvbmN1cnJlbnQ= 35135\nIE1lc3NhZ2VCb3hJY29u 35136\nIMOW 35137\nIER1YmFp 35138\nIFJldGFpbA== 35139\nOm51bWJlcg== 35140\nIE9ic2VydmVy 35141\nIEJpZ0ludGVnZXI= 35142\nX29yaWdpbg== 35143\nX1dPUks= 35144\nRnJhbWVz 35145\nIG5vdGFibHk= 35146\nLuKAnA== 35147\nIHRyb3BpY2Fs 35148\nIG5pY2hl 35149\nYW1pbmE= 35150\nLnN5cw== 35151\nKHRva2Vucw== 35152\nbW9kaWZ5 35153\nb3NpdA== 35154\nc3Ryb20= 35155\nIENvbWljcw== 35156\nT1BUSU9O 35157\nVGlja2V0 35158\nIGZhY3Rvcmllcw== 35159\nIGRpc3B1dA== 35160\nX0ZpbGU= 35161\nIEZpbm4= 35162\nZWVl 35163\nIERpc2NvcmQ= 35164\nX21vbmV5 35165\nLnRwbA== 35166\nX3NhZmU= 35167\nTEI= 35168\nIGdsdXQ= 35169\nSks= 35170\nLmZsb3c= 35171\nLWNvbnQ= 35172\nZ29z 35173\nIGhvcml6b24= 35174\nIFJ1c2g= 35175\nOjoq 35176\nUGlwZQ== 35177\ndWxsYQ== 35178\nYm9yb3VnaA== 35179\naGVpbWVy 35180\nKG1vdmU= 35181\nKFRleHQ= 35182\nfSk7DQoNCg== 35183\nd2VsY29tZQ== 35184\nIENvbXBvbmVudHM= 35185\nIGdvdmVybmFuY2U= 35186\nY2xvc2Vk 35187\nCW1hcmdpbg== 35188\nIGxhdW5kcnk= 35189\nIFRlcm1pbmFs 35190\naXphcmRz 35191\nLuKAlA== 35192\nLnJlbW90ZQ== 35193\nLnJhZGl1cw== 35194\nIFF1ZWJlYw== 35195\nIGRo 35196\nVGVjaA== 35197\nIE1pc3Q= 35198\nc2VsbGVy 35199\nX2xpdGVyYWw= 35200\nIGdlbml1cw== 35201\nIGJyYWlucw== 35202\nZ2Vt 35203\nIE1lYXN1cmU= 35204\nIGNhdGFzdA== 35205\ncmFuY2U= 35206\nLlRleHRGaWVsZA== 35207\nIGNvbnN1bWluZw== 35208\nICdcJyc= 35209\nb3VidGVkbHk= 35210\nIENlcnRhaW4= 35211\nRXY= 35212\nZXJ0aQ== 35213\nYmVpbmc= 35214\nRXhwZXJpZW5jZQ== 35215\nIC8vWw== 35216\nIEFyYWJpYw== 35217\nIENyaXN0 35218\nIEF6dXJl 35219\nIGhvcmE= 35220\nbGFkZXNo 35221\nXEJsdWVwcmludA== 35222\nZGFy 35223\nLnJlbA== 35224\nIHN1cHJlbQ== 35225\nIFJlYWdhbg== 35226\nIEF0dHJpYnV0ZXM= 35227\nLXNpZGViYXI= 35228\nIHVzZVN0eWxlcw== 35229\nIEFpcmxpbmVz 35230\nIGhpbGxz 35231\nL3hodG1s 35232\ndmluYw== 35233\nX21vY2s= 35234\nCiAgICAgICAgICAgICAgICAK 35235\nIFBpbGw= 35236\nLkxheW91dFN0eWxl 35237\nIENvbW1hbmRlcg== 35238\nXTw= 35239\nc2lnbmF0dXJl 35240\nIHt9DQo= 35241\nIGhhdHJlZA== 35242\nIOuL 35243\nb2xlc3Rlcm9s 35244\nICoqKioqKioq 35245\nYW5jZWxsb3I= 35246\nY3JvcA== 35247\nVElN 35248\nCQkKCg== 35249\neXNxbGk= 35250\ndWl0aXZl 35251\nCXVuc2V0 35252\nX3NlbA== 35253\nIG1lbnVz 35254\ndGljaw== 35255\nIGNvbnN0aXR1dGU= 35256\nIEVsZW1lbnRz 35257\nIFJlZGlz 35258\nYWdnaW8= 35259\nX2Zw 35260\nX2RlcGVuZA== 35261\nZW1hcw== 35262\nQ0FTVA== 35263\nb3Jhbmdl 35264\nam9u 35265\nIEVtaWx5 35266\nIHBvdGF0b2Vz 35267\nIHJlY2VwdG9y 35268\nIEVsZWN0cm9uaWM= 35269\nIExpZ2h0cw== 35270\nIGNvbWJpbmluZw== 35271\nIFNvbWVvbmU= 35272\nICMjIyMjIyMjLg== 35273\nIFRPRA== 35274\nL3Nob3c= 35275\nWGQ= 35276\nLiIn 35277\nYWZ4 35278\nIHRyYWdpYw== 35279\nU3R5bGVk 35280\nIE1hcmNv 35281\nR2FsbGVyeQ== 35282\nZGFsZQ== 35283\nLuKAnQoKCgo= 35284\nw6lyaWU= 35285\nL3NlcnZpY2U= 35286\n5LqG 35287\nIGFtYmllbnQ= 35288\nX1NFVFRJTkdT 35289\nLkFkYXB0ZXI= 35290\nbGVuZQ== 35291\nIHRyYXZlbHM= 35292\nTm90aWNl 35293\nIGNsZWFucw== 35294\nIEZlbQ== 35295\nY2hhaXI= 35296\n0YPQvQ== 35297\nL215 35298\nX2JhZA== 35299\nIEVjb25vbWljcw== 35300\nSVNB 35301\nX0NOVA== 35302\nKE1lbnU= 35303\n5LqO 35304\nIFJpZGdl 35305\nIGxlbmd0aHk= 35306\nRG90 35307\nIGp1bXBz 35308\nIGhleQ== 35309\nJHBkZg== 35310\nIHdvcm0= 35311\nIHN1dA== 35312\nIHNoZXI= 35313\naWFtbw== 35314\nIENhbGM= 35315\ndHJpZXZl 35316\nIGNvcHM= 35317\nIENocm9t 35318\nIHJlZ3VsYXRlZA== 35319\ncmVhdG1lbnQ= 35320\nIEhpZ2hlcg== 35321\nb2tz 35322\nIGRlemU= 35323\nTE9DQVRJT04= 35324\nb25nc1Rv 35325\nIGZpbml0ZQ== 35326\nIHZhcmllcw== 35327\nIHBvc2l0aW9uZWQ= 35328\nJ2ls 35329\n6YeR 35330\nIGhpa2U= 35331\nKGRvbmU= 35332\ncGxheWxpc3Q= 35333\nIGFkYQ== 35334\nIGNvYXN0YWw= 35335\nIE5hbmN5 35336\nLkRhdGVUaW1lRmllbGQ= 35337\nQ3BwQ29kZUdlbg== 35338\nIFNpbWlsYXJseQ== 35339\ncmV1cg== 35340\nIENvbnRy 35341\nIEhpZGRlbg== 35342\nIEJldGE= 35343\nYXRjaGVk 35344\nX2luc3RhbGw= 35345\nLk91dHB1dA== 35346\nTG9va3Vw 35347\nIFJpY2htb25k 35348\ncXVhcmVk 35349\nIG1hbmdh 35350\nLWNvbnRyb2xz 35351\nIEJlcm5hcmQ= 35352\nTGFyZ2U= 35353\nIHNsaWNlcw== 35354\nIG9mZmVuY2U= 35355\nIE1lZ2E= 35356\nIGVzdGFy 35357\nIGpvaW50cw== 35358\nIHN1bW0= 35359\nX3BsYXRmb3Jt 35360\nQnVmZg== 35361\nLmFkZFN1YnZpZXc= 35362\nIHJldGFpbmVk 35363\nTGV0dGVy 35364\nLmRpbQ== 35365\nIGVzc2VyZQ== 35366\nIFNjYWZmb2xk 35367\nRVhQRUNU 35368\nCVJF 35369\nLmxvbmdpdHVkZQ== 35370\nw7xuZA== 35371\nIHN0YXR1ZQ== 35372\nLmFkZFdpZGdldA== 35373\nIENhcmliYmVhbg== 35374\nYWRkUHJlZmVycmVkR2Fw 35375\naWxkZQ== 35376\nVUlMYWJlbA== 35377\nIE9wcG9ydA== 35378\nIGltcGVyaWFs 35379\ndXJzaW9u 35380\nIG1hbmRhdGU= 35381\nIHByb21vdGlvbmFs 35382\nIHZr 35383\naWHFgg== 35384\nIHB5bA== 35385\nIENyZWF0aW9u 35386\n0L7Qt9C0 35387\nIHNpbXBsZXI= 35388\nLndoYXQ= 35389\nIFJlY2VudA== 35390\nU3Rvcm0= 35391\nLnF1YW50aXR5 35392\nIExvdg== 35393\nIi0= 35394\ndWJibGVz 35395\nX25vdGlmaWNhdGlvbg== 35396\nKHdvcmxk 35397\ndXJnZXI= 35398\nKigt 35399\nOiIK 35400\naG0= 35401\nYW5zaGlw 35402\nIEFsbW9zdA== 35403\nIG1vdG9yY3ljbGU= 35404\nX2ZlZQ== 35405\nIGFic29yYg== 35406\nIFZpbmNlbnQ= 35407\nIHNvdW5kZWQ= 35408\nw61zdA== 35409\nIHBoYXJtYWNldXRpY2Fs 35410\naHRhZw== 35411\nIEtpbmRsZQ== 35412\naXRhbGl6ZQ== 35413\nIEVtcGVyb3I= 35414\nb3VzdGlj 35415\nIHNwZWNpYWxpc3Rz 35416\n5YWs 35417\nQm9yZGVyU3R5bGU= 35418\nL1w= 35419\nUkVMQVRFRA== 35420\nKCcsJyw= 35421\nKGV4cHI= 35422\nIGh0 35423\n5Y2I 35424\nX0NyZWF0ZQ== 35425\nIHNwZWNpYWxseQ== 35426\nIFtdOw0K 35427\nIGhlZWw= 35428\nIHNlcHQ= 35429\nX2FyY2g= 35430\nKGluaXRpYWw= 35431\nJS4KCg== 35432\nXCIsXCI= 35433\nIGRpc2N1c3Nlcw== 35434\nIHVwdA== 35435\nIFsm 35436\nIG1hbnVz 35437\nLmhhbmQ= 35438\nIE1BSU4= 35439\nIERlbm1hcms= 35440\nIF0sDQo= 35441\nIGNyeXN0 35442\nIG5hY2s= 35443\nQ29vcmRz 35444\nX2lubmVy 35445\nIG1pZHN0 35446\nIGF3YWtl 35447\nINCe 35448\nLWJyZWFr 35449\nw612ZWw= 35450\nX1BBU1M= 35451\nIFBhcmFtcw== 35452\nIGRldHI= 35453\nIHNwaWRlcg== 35454\nIENvbmNlcHQ= 35455\nIHByZW5k 35456\nQ0hFRA== 35457\nLkV4aXQ= 35458\nIHBvcHVsYXRlZA== 35459\nIHZpcnR1ZQ== 35460\nX1NFU1NJT04= 35461\nIG5vdXZlbA== 35462\nb2F1dGg= 35463\nINC00LDQvdC90Ys= 35464\ncmluaw== 35465\nLkhlYWRlclRleHQ= 35466\nYXR1cmF0ZWQ= 35467\nIGVyc3Q= 35468\nIOWF 35469\n4KWH 35470\nX3Zpc2libGU= 35471\nZXllcg== 35472\nIGxpYWJsZQ== 35473\nIGRlYmU= 35474\nIGJ3 35475\ney0j 35476\nX1dJTg== 35477\nZGZz 35478\nSG92ZXI= 35479\nIFBVVA== 35480\nLWFuZ2xl 35481\nIG5vYmxl 35482\nIHRyYWNlcw== 35483\nZW5jdg== 35484\nIHVzZXJEYXRh 35485\nX2lucw== 35486\nIFN1eg== 35487\nIG5ld3NsZXR0ZXJz 35488\nIE1vZGk= 35489\nIGVudHJlcHJlbmV1cnM= 35490\nIHRyaWJ1dGU= 35491\nIHJ1bW9ycw== 35492\nIHJy 35493\nIFF1YXJ0ZXI= 35494\n6rOg 35495\nIGZlZWRz 35496\nw7Nn 35497\nIGVudmVsb3Bl 35498\nIGxlYXI= 35499\nIGvDuA== 35500\nZGV2ZWxvcGVy 35501\nU2ltaWxhcg== 35502\nOiIpCg== 35503\nc3Vic2NyaXB0aW9u 35504\nTW9kaWZpZXI= 35505\naXRhbGlj 35506\nIG5hc3R5 35507\nIHRlcm1pbmF0aW9u 35508\nIGNoYXJtaW5n 35509\nIOKf 35510\ndG9ucw== 35511\nLnRyYWNl 35512\naG90cw== 35513\nIFVS 35514\nTW9udA== 35515\nIGp1c3RpZmllZA== 35516\nIEdhbmc= 35517\naW5lYQ== 35518\nIGJvZw== 35519\nKGFw 35520\nXyQ= 35521\nIGNvbnRhbWlu 35522\nLkRvdA== 35523\nCURlYnVn 35524\nKGV4cG9ydHM= 35525\nIHBhaXJlZA== 35526\nIEFzc2lnbm1lbnQ= 35527\nIGF1dG9tb2JpbGU= 35528\nk40= 35529\nIHBoYXNlcw== 35530\ndnc= 35531\nQFN1cHByZXNzV2FybmluZ3M= 35532\nPVw= 35533\ncmFudA== 35534\nLWVk 35535\nCWF3YWl0 35536\nIGNlcnRpZmljYXRlcw== 35537\nJz4i 35538\nIGludGFjdA== 35539\nQ1RSTA== 35540\nTWlrZQ== 35541\nZ3JlZ2F0aW9u 35542\nQVRURVJO 35543\nIHJlcHVibGlj 35544\nX3VwcGVy 35545\naWxpYXJ5 35546\nIGNvbXB1dGF0aW9u 35547\naGlyZQ== 35548\nIFNoaW4= 35549\nX0FOWQ== 35550\nIE1hbnVmYWN0dXJlcg== 35551\nIENhcm0= 35552\nIGJlYXJpbmdz 35553\nX2NvbWI= 35554\nY2Fk 35555\ndXJpc3RpYw== 35556\nIHdob2xlc2FsZQ== 35557\nIGRvbm9y 35558\nLmludGVyZmFjZXM= 35559\ncHJlc3Nv 35560\nIEJydW4= 35561\nLWNsb3Nl 35562\ncHJvdmU= 35563\nX1NL 35564\nCWZyYW1l 35565\nZXRyb3M= 35566\nIFBhaW4= 35567\nX0VYUA== 35568\nIExU 35569\nX2Zz 35570\nLmRhdGFz 35571\nCXNz 35572\ndm9pcg== 35573\nIEF4aXM= 35574\nTWFqb3I= 35575\nPSI8 35576\nW2g= 35577\nIHByb2Zlc3M= 35578\naWdyYXRl 35579\nKHNjb3Jl 35580\nS2V5d29yZA== 35581\nIm9z 35582\nICAgIAkK 35583\nYW5hbHlzaXM= 35584\nIHJlcGxheQ== 35585\nLnBhc3M= 35586\nXGQ= 35587\ndGxz 35588\nIHNhbmN0 35589\nLmxpZ2h0 35590\nX21vYmlsZQ== 35591\n0YHRgtGM 35592\nCXRvdGFs 35593\ndWl0eQ== 35594\nIHBhdXNlZA== 35595\nTkFT 35596\nIGVuY29yZQ== 35597\nbG9l 35598\nIC0qLQoK 35599\nLmhpZ2g= 35600\nYW1wbGVy 35601\nIFNlY3VyZQ== 35602\nIGZyYWdtZW50cw== 35603\nX3ZlbA== 35604\naWxsYXJ5 35605\nIFN0ZWlu 35606\nIERhd24= 35607\nIG1heGltaXpl 35608\n4Lii 35609\nIC9e 35610\nIGNvbnRpbnVhbGx5 35611\nIHNoYWRvd3M= 35612\nCSAgICAgICAgICAgICAgICAgICA= 35613\nIElBY3Rpb25SZXN1bHQ= 35614\nIGluZm9ybWFjacOzbg== 35615\nQ0hFQ0s= 35616\nLlNlbGVjdGVkSXRlbQ== 35617\nYnVuZGxl 35618\nb2xsZXk= 35619\nPEludA== 35620\nQUlORVI= 35621\nIFdpbmc= 35622\ndGl0bGVz 35623\nb3VudGFpbg== 35624\nQ1k= 35625\nIExvY2FsZQ== 35626\nZm9ybWVy 35627\nPGNvbnRleHQ= 35628\nUmFkaW9CdXR0b24= 35629\nX3NjaGVkdWxl 35630\nIGZhYnVsb3Vz 35631\nUm9iZXJ0 35632\nX1BST0ZJTEU= 35633\nIGdhdGVz 35634\nSU1Q 35635\nIFBlbnRhZ29u 35636\nZ29sZA== 35637\nYmFjaA== 35638\nZW1wbG95ZWVz 35639\nUm90YXRl 35640\nIGNoYW1w 35641\nIHNlbGJzdA== 35642\nQWx0ZXJu 35643\nIGNvbnZlcnRWaWV3 35644\nLyw= 35645\nIH4o 35646\nU3RyZWV0 35647\nX3BsYWNl 35648\nIHBlcnNvbmFsaXplZA== 35649\nUHVibGlzaGVy 35650\nIFNPQ0s= 35651\nX05BTUVTUEFDRQ== 35652\nIFN0YW5kYXJkcw== 35653\nc29ldmVy 35654\nX0NFTlRFUg== 35655\nSW50ZXJlc3Q= 35656\nw7R0 35657\ndGVtcGVyYXR1cmU= 35658\nVmlld3BvcnQ= 35659\nZ2V0UmVzb3VyY2U= 35660\nIGVhdGVu 35661\nIHNlbXByZQ== 35662\nIGFibm9ybWFs 35663\nIGN5bGluZGVy 35664\nIHRyb3VibGVz 35665\nbm9k 35666\n0YvQsg== 35667\nZ2FtZXM= 35668\nX2ds 35669\nUGxhbmU= 35670\nZ3JleQ== 35671\nX3RibA== 35672\nLkNvbXBvbmVudFBsYWNlbWVudA== 35673\nIENoYXNl 35674\nTG9nZ2luZw== 35675\nbWFueQ== 35676\n7IY= 35677\nIGZsYW1l 35678\nPSI8Pz0k 35679\nIEdyb3Vwcw== 35680\nLVU= 35681\n0YDQsNC9 35682\nCgoKCgoKCg== 35683\nIHZhdWx0 35684\nb21vbg== 35685\ncHJvYmxlbQ== 35686\nIHRyYWRlcnM= 35687\nIHBlcmlwaGVyYWw= 35688\nIGhvbWVwYWdl 35689\nKGRlcw== 35690\nIFN1Y2Nlc3NmdWxseQ== 35691\nIHJlYm9vdA== 35692\nIGNlbGx1bGFy 35693\naWlp 35694\nIFBsYW5z 35695\nbGlzdGluZw== 35696\nCWRpcw== 35697\nIFJlZmxlY3Q= 35698\nCWV4Y2VwdA== 35699\nIiko 35700\nIHRhbWLDqW0= 35701\nVmVoaWNsZQ== 35702\nYWNjaQ== 35703\nbHVzaA== 35704\nT3JkZXJCeQ== 35705\nIGltYWdpbmVk 35706\nY29kZWM= 35707\nIGRhdGVUaW1l 35708\nTWljcm8= 35709\nIHJlbWluZHM= 35710\nIGZydXN0cmF0aW5n 35711\nIFZpc3Rh 35712\nVHJhaW4= 35713\nINCy0YE= 35714\nIG1vbGVjdWxlcw== 35715\nYXZpbg== 35716\nIGRvdWJsZWQ= 35717\nIGJyYWtl 35718\nIGNhbGNpdW0= 35719\nRnJpZGF5 35720\nIElkZW50aWZpZXI= 35721\n5Z8= 35722\n0YvQuQ== 35723\nIEphaA== 35724\nUmVu 35725\nIHNjYW0= 35726\nIERlbm5pcw== 35727\nLnNldEludA== 35728\n4p8= 35729\nIGFwcGVhbHM= 35730\nIEF1cg== 35731\nIHNwbGFzaA== 35732\nZXF1YWxzSWdub3JlQ2FzZQ== 35733\nd2h5 35734\nIHNhcA== 35735\nU3VwcG9ydGVk 35736\nIHNlcmE= 35737\nIDoi 35738\nIFZlcm1vbnQ= 35739\nIHJldW4= 35740\nIE5vdmE= 35741\nICAgICAgICAgICAgCiAgICAgICAgICAgIAo= 35742\nUmF0ZWQ= 35743\nIGxheWluZw== 35744\nIEthcmVu 35745\nLkRlc2VyaWFsaXpl 35746\nIGNvZGVj 35747\nIHRheHBheWVycw== 35748\nOyIpOwo= 35749\nIGNydWRl 35750\nIG1vbGU= 35751\nIHVzZUNvbnRleHQ= 35752\nCXJlc3A= 35753\nIHBrdA== 35754\nIENhbm5vdA== 35755\nUGlwZWxpbmU= 35756\n5YaG 35757\ndGljYWw= 35758\nQWN0aW9uQmFy 35759\nYWVkYQ== 35760\nIENyaXRpY2Fs 35761\nIE5hZA== 35762\nIGJsZWVkaW5n 35763\nIGxsdm0= 35764\nL2N1c3RvbQ== 35765\nIFNpbXBzb24= 35766\nU3k= 35767\naXRhYmx5 35768\nIFN1bW1pdA== 35769\nKCkpKS4= 35770\nRUxMT1c= 35771\nJCcs 35772\nTWV0 35773\nSW52b2ljZQ== 35774\nb2xpc3Q= 35775\nIHNwaW5l 35776\nYXV0aWZ1bA== 35777\ncGFpZA== 35778\nIGxvY2tlcg== 35779\nX2FybQ== 35780\nXCI+PA== 35781\nIHRyYWplY3Rvcnk= 35782\nX3Jpbmc= 35783\nIGh5ZHJvZ2Vu 35784\ndHJvbg== 35785\nIHN0YXR1dGU= 35786\nIGNvbmRpdGlvbmFs 35787\nIHRyYXk= 35788\nLXNjaG9vbA== 35789\nKHdpZGdldA== 35790\nJGNvbmZpZw== 35791\nIHJlcXVlc3Rpbmc= 35792\nLnVpbnQ= 35793\nZXRvbg== 35794\nYnJpdGllcw== 35795\nT2ZUeXBl 35796\nQURNSU4= 35797\ncHJlZGljdA== 35798\nIGdlZ2Vu 35799\nIEhhcHA= 35800\nT0NVTUVOVA== 35801\nIEFwYXJ0 35802\nIC0tLS0t 35803\ncm9l 35804\ndWlkZQ== 35805\nanVzdGlmeQ== 35806\nIFNxdWFk 35807\nIHByb2Zlcw== 35808\nLmJvdA== 35809\nX2N1cnJlbmN5 35810\naW5uZW4= 35811\nIE11bWJhaQ== 35812\nIE51bWJlcnM= 35813\nYXZhbmF1Z2g= 35814\nYWduaXR1ZGU= 35815\n4oCcVGhlcmU= 35816\nPWh0dHA= 35817\n54mH 35818\nIHZi 35819\nKyc8Lw== 35820\nIG9yZ2FuaXppbmc= 35821\nYW5pdW0= 35822\nSW5TZWN0aW9u 35823\nLmFuZA== 35824\nIGV0ZXJuYWw= 35825\nIHNvdWxz 35826\nX09ORQ== 35827\nX25z 35828\nX2Jhc2lj 35829\nIHJldFZhbA== 35830\nLXNoYXBlZA== 35831\naWZkZWY= 35832\nIE1vemlsbGE= 35833\nIGVpZw== 35834\nY29tcGxldGVk 35835\nTm90aWZpY2F0aW9ucw== 35836\nVEVDVA== 35837\ncmllbg== 35838\nY29vcmRpbmF0ZXM= 35839\nIHByZXRlbmQ= 35840\ncG9uc29yZWQ= 35841\nLnN0ZGVycg== 35842\nIGdhbWVycw== 35843\nIGRlZmVuZGVk 35844\nVG9vbFRpcA== 35845\ndWl0YXI= 35846\nIGZyYW5jYQ== 35847\nIFdvb2Rz 35848\nIGlocmU= 35849\nIHBzZXVkbw== 35850\nIGNyb3dkcw== 35851\nIFNZU1RFTQ== 35852\nbGVj 35853\nLmtlcmFz 35854\nIGNpcmN1bGF0aW9u 35855\nZWVy 35856\nLmNi 35857\ndXp6eQ== 35858\n7Zg= 35859\nLnJlYWRlcg== 35860\nIHNlcXVlbA== 35861\nU2V2ZXJhbA== 35862\nLnBvcnRhbA== 35863\nLS0tLS0K 35864\naXN0cmFy 35865\n77u/Ly8= 35866\nUGk= 35867\nIFwiIg== 35868\nIGN1c3RvbXM= 35869\nIGRpc3BsYXlOYW1l 35870\nIG5vdGljZXM= 35871\nIGNhcmI= 35872\nLl8KCg== 35873\nIHByb2R1Y3Rv 35874\nINGB0Ls= 35875\nIG51bWVyaWNhbA== 35876\nIHVuaW50 35877\nIGNvZGlnbw== 35878\nT3JkaW5hbA== 35879\nU3RyaW5nVXRpbHM= 35880\nIGTDqWM= 35881\nIExhbg== 35882\nIHNob3djYXNl 35883\nIGFyaXRobWV0aWM= 35884\nLXNjcm9sbA== 35885\nX1RFTVBMQVRF 35886\nIFJvdXRlck1vZHVsZQ== 35887\nIFNoYWRlcg== 35888\nINCd 35889\ncG9saWN5 35890\nUGVyZm9ybWFuY2U= 35891\nCWJvcmRlcg== 35892\nKGZpbGVwYXRo 35893\n56m6 35894\nX2VuZXJneQ== 35895\nX0NT 35896\nVGhlaXI= 35897\nLnNwYWNpbmc= 35898\nKGRw 35899\nIExBTkdVQUdF 35900\nIGhpc3RvcmljYWxseQ== 35901\nIj57eyQ= 35902\nIGlub2Rl 35903\nc2ls 35904\nIGhhY2U= 35905\nIHNldmVyZWx5 35906\nIE92ZXJ2aWV3 35907\nIHNwcmF3 35908\nIGJlYWNoZXM= 35909\nOmxlZnQ= 35910\nt7s= 35911\nKCR7 35912\nIEZJUlNU 35913\nIFNwYQ== 35914\nLWFzcw== 35915\nIGJhaXNl 35916\nIE5PREU= 35917\nIFBpenph 35918\nUGV0 35919\nKHNlcQ== 35920\nXCI+Cg== 35921\nQ3BwTWV0aG9kUG9pbnRlcg== 35922\nIHZw 35923\nIGlh 35924\nX3NlY29uZHM= 35925\nZW1ldA== 35926\nL2Jsb2I= 35927\nX1RIUkVTSA== 35928\nLi4uDQo= 35929\nRGVzdA== 35930\nIE5I 35931\nLmRhdGFTb3VyY2U= 35932\naXTDqXM= 35933\nIEphaw== 35934\nc2VsbA== 35935\nIHdvcmtzaG9wcw== 35936\nPHU= 35937\nIHJpdmFscw== 35938\nIEVYSVNUUw== 35939\naG9t 35940\nLXRva2Vu 35941\nY29tcGF0aWJsZQ== 35942\nLkpQYW5lbA== 35943\nIHBoeXNpY2lhbnM= 35944\nYXJ0aW4= 35945\nIGRlc2lyYWJsZQ== 35946\nIGRpc3RpbmN0aXZl 35947\nLkRlcA== 35948\nZ2lk 35949\naWxpYXRl 35950\nLG1heA== 35951\nIHByZW1pZXJl 35952\nIHFEZWJ1Zw== 35953\nIGFkdm9jYWN5 35954\nIHdoaXNwZXI= 35955\nUHQ= 35956\nIHVuY2hhbmdlZA== 35957\nX3F0eQ== 35958\n6K+35rGC 35959\nU2Vhc29u 35960\nYXZlbGVuZ3Ro 35961\nIFB1bA== 35962\nIGTDrWE= 35963\nJ11dXSwK 35964\nYWxpcw== 35965\nKCIm 35966\nYm9ybw== 35967\nIGJt 35968\nIFJhZGk= 35969\nd3Jvbmc= 35970\nIEdvaW5n 35971\naW1lVHlwZQ== 35972\naWpp 35973\nLWZlZWRiYWNr 35974\nIE5hbWVz 35975\nIEJhcHQ= 35976\nIHByb2JhYmxl 35977\nIEV0aGVy 35978\nIFBvbGl0aWNz 35979\nX3Byb3RvY29s 35980\nbGluaW5n 35981\nU2F0 35982\nIGNvcnJlbA== 35983\nLlByaW1hcnk= 35984\nKG51bGxhYmxl 35985\nUklPUklUWQ== 35986\nIGNvbG9yaW5n 35987\nIHV0aWxpemluZw== 35988\nZGFz 35989\nIGV4cG9ydGVk 35990\nIGNhcnJpZXJz 35991\nQ29udg== 35992\nLmVkaXRvcg== 35993\nacOz 35994\nKGhhbmRsZXM= 35995\nIGFwcHJlY2lhdGlvbg== 35996\nLmltcG9ydA== 35997\nIEF1c3RyaWE= 35998\nIFN0cmlw 35999\naWxpZ2h0 36000\nIGFwcHJvcHJpYXRlbHk= 36001\nIFByZXN0 36002\nIFdpcg== 36003\nIFVJQXBwbGljYXRpb24= 36004\nYWxjaGVteQ== 36005\nIE1vYg== 36006\nIERldGVybWlu 36007\nZXJndXNvbg== 36008\ncmVnaXN0ZXJlZA== 36009\nX2NvbnZlcnQ= 36010\nIFZsYWRpbWly 36011\nLlNob3dEaWFsb2c= 36012\ncmVmbGVjdA== 36013\nIHNob29r 36014\nIGFzc3VyZQ== 36015\nIE9mdGVu 36016\nIGNpdmlsaXphdGlvbg== 36017\nIHZvY2FidWxhcnk= 36018\nZm9yZWdyb3VuZA== 36019\nIFNjb3Bl 36020\nIHVud2FudGVk 36021\nYWN0aW5n 36022\nIChbXQ== 36023\nIG1hcmtpbmc= 36024\nLm9yaWdpbmFs 36025\nIE1PVkU= 36026\nIHNwb3J0aW5n 36027\nY2VwdGlvbnM= 36028\nTlNOdW1iZXI= 36029\nU2l6ZXM= 36030\nIHByb3ZpbmNpYWw= 36031\nX1RyYW5z 36032\nIHByb2JsZW1hdGlj 36033\nZGlnaXQ= 36034\nIEVtbWE= 36035\nbG9ja3M= 36036\nIENyZXc= 36037\naWJh 36038\nJyk6 36039\naXNoYQ== 36040\nIG1hbW0= 36041\nIG9jY3VyZWQ= 36042\nd2Nz 36043\nKHJ1bGU= 36044\nIG1lcmNoYW5kaXNl 36045\nZXNwZWNpYWxseQ== 36046\nIFR3aW4= 36047\nIG5hbWluZw== 36048\nIHNsb2c= 36049\nIGltcHJvdmVz 36050\nIGFkaGVy 36051\nOnRleHQ= 36052\nLmhhZG9vcA== 36053\nX0hUVFA= 36054\nLnRvTGlzdA== 36055\nLmRpc2FibGVk 36056\nIGxlbnNlcw== 36057\nLmluaQ== 36058\nIFJhcmU= 36059\nIFVidW50dQ== 36060\nIHNjcmFt 36061\nb2xhdGlvbg== 36062\ndGl0dWxv 36063\nRXZlcnl0aGluZw== 36064\nIG5vZGRlZA== 36065\naWNodGln 36066\nX2NvbnN0YW50 36067\nemM= 36068\nbGlmdA== 36069\nIE5vdGlmeQ== 36070\nb25kbw== 36071\nIElORg== 36072\nKCIr 36073\nIEtheg== 36074\nIGRyZWFk 36075\nLm1hcHBlcg== 36076\nbGV1cg== 36077\nIENvbWV5 36078\nIE5C 36079\naWNlcnM= 36080\nLlB1c2g= 36081\nIEhhY2s= 36082\nIEJyYXppbGlhbg== 36083\nX3Byb2Q= 36084\nIC8vCgo= 36085\nIGJpY3ljbGU= 36086\nIHVuYXZhaWxhYmxl 36087\nIGFkb2xlc2NlbnQ= 36088\nYmxr 36089\nIG1pdGln 36090\nX2JsdWU= 36091\n7Jg= 36092\nZmFkZUlu 36093\nIFV0aWxpdGllcw== 36094\nIE1O 36095\nO2s= 36096\nPHN0eWxl 36097\nLXN0YXR1cw== 36098\naW5kbw== 36099\nIGlubmluZ3M= 36100\nIGdq 36101\nIHx8PQ== 36102\nLmV1 36103\nOk51bWJlcg== 36104\nIGN1aXNpbmU= 36105\nIFVSTHM= 36106\naWVr 36107\nIHdpcmVz 36108\nCXBz 36109\naWVn 36110\nLm1r 36111\nc29hcA== 36112\nIHNvbWV0aW1l 36113\nIHN0YXA= 36114\nX3Nlcmllcw== 36115\nLlRhcmdldA== 36116\n5ro= 36117\nLmRlc3RpbmF0aW9u 36118\nT1VOVEVS 36119\nUmFpc2Vz 36120\nJkE= 36121\nIHNtYXJ0cGhvbmVz 36122\nTklFbnY= 36123\nLnNkaw== 36124\nIGhlbGljb3B0ZXI= 36125\nIGltcGU= 36126\nIEJpcnRo 36127\nQVU= 36128\nYnJlYWRjcnVtYnM= 36129\nY29vcmRz 36130\nIGV4cGxvcmVk 36131\nIGxvZA== 36132\nIElw 36133\nZ2FibGU= 36134\naWFuZQ== 36135\nIGFydGlmYWN0cw== 36136\nQm94TGF5b3V0 36137\n2KfYsQ== 36138\nbGlzdGVuZXI= 36139\nLmNhcnQ= 36140\nIEh1ZmY= 36141\nIEhpbmR1 36142\nIERhdGFUeXBlcw== 36143\nIERydXBhbA== 36144\nSUdOT1JF 36145\nIG9mZnNldHM= 36146\nIFJUQw== 36147\nLWxvZ2lu 36148\n5q4= 36149\nIFFPYmplY3Q= 36150\nIHByb3NlY3V0b3I= 36151\nUm9jaw== 36152\nX2NoYXQ= 36153\nV2F5 36154\n7LI= 36155\nIG5lZ2xpZw== 36156\nIGR1ZGU= 36157\nOzw= 36158\nIGRlbGVnYXRlcw== 36159\nX2ZhaWxlZA== 36160\nL2Rldg== 36161\nL3dvcms= 36162\nKE5ldw== 36163\nZXRhYmxl 36164\nKCki 36165\nKEljb25z 36166\nIHBvcms= 36167\nIE1vZGVsQW5kVmlldw== 36168\nIFZJUA== 36169\nIEtvcg== 36170\nbWl4 36171\nIG94aWQ= 36172\nIFNDUkVFTg== 36173\nIEZvdXJ0aA== 36174\nLyIsCg== 36175\nIHRlZQ== 36176\nIFN0ZXZlbnM= 36177\ndGlja3M= 36178\nIHBsZWRnZQ== 36179\naWJib24= 36180\nIExvYW4= 36181\nIG5lbw== 36182\nbnVtcHk= 36183\nIFNoYXJlZFByZWZlcmVuY2Vz 36184\nLW9yaWVudGVk 36185\nIExvZ2dlckZhY3Rvcnk= 36186\nIEdyYXBoUUw= 36187\nemVuaWE= 36188\nIl8= 36189\nV29tZW4= 36190\nLmNhc3Q= 36191\nIGRlbGliZXJhdGVseQ== 36192\nK2I= 36193\nIEFybg== 36194\nZm9udFNpemU= 36195\nIG1hemU= 36196\nIGJsYW1lZA== 36197\nLm1hcw== 36198\nfSkNCg== 36199\nZWxlcmlr 36200\nIHNjYW5uaW5n 36201\nIFdvcmtzaG9w 36202\nIGZpbmRlbg== 36203\nIGNhdXQ= 36204\nVUlGb250 36205\nKHJldHVybg== 36206\nYWxpbg== 36207\nY2FzdGxl 36208\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v 36209\nIGluY2VudGl2ZQ== 36210\nb3BhdGg= 36211\nYmxvYg== 36212\nIGNpZ2FyZXR0ZQ== 36213\nIGZlcnRpbA== 36214\nKi8KCgo= 36215\nIFNoYXI= 36216\nCiAgICAgIAo= 36217\nIHVuY2VydGFpbg== 36218\nIFN0b24= 36219\nT3BlcmF0aW9ucw== 36220\nIFNwZW5jZXI= 36221\nIGRlZmlu 36222\nIFNvbG8= 36223\nb25lc3Q= 36224\nt7vliqA= 36225\nIHVvbW8= 36226\nR2l2ZQ== 36227\nIGRlbnRybw== 36228\nO3BhZGRpbmc= 36229\nZW50YWk= 36230\nIENhcnM= 36231\nIGVudGh1c2lhc20= 36232\nIE9wZXJhdGluZw== 36233\nU2tpcA== 36234\ncGFyYXRpb24= 36235\nIHByb3RlY3Rz 36236\nIHJldmVy 36237\nZGc= 36238\nIENpbmNpbm5hdGk= 36239\nIGNvbnNlY3RldHVy 36240\nIG11c3M= 36241\nZW1wbG95ZWQ= 36242\nYXVzZXM= 36243\naW5rbGU= 36244\nLlZhbHVlcw== 36245\no7w= 36246\nbG92 36247\nX1dBUk4= 36248\nIGJvb2ttYXJr 36249\nIEFwb2xsbw== 36250\nLmF4aXM= 36251\nIG3DqXQ= 36252\nIG9wZW5lcg== 36253\nIHR1bW9y 36254\nZGFu 36255\nIGVsZW1lbnRhcnk= 36256\nIHNraXBwZWQ= 36257\nIEtlcg== 36258\nYXNpYQ== 36259\nX3Jlc3A= 36260\nIGRlbW9s 36261\nIENhbmFkaWFucw== 36262\nIHRhc3Rlcw== 36263\nVUludGVnZXI= 36264\nICckew== 36265\nLmF3cw== 36266\nUk9JRA== 36267\ncmlhbnM= 36268\nTVE= 36269\nb3JkYWJsZQ== 36270\nIGNvdXNpbg== 36271\nUHJvcGFnYXRpb24= 36272\nKFNlc3Npb24= 36273\ncGhhbHQ= 36274\nVUxE 36275\nIFNjYWxhcg== 36276\nIGJsb29keQ== 36277\nIOCm 36278\nLm1hc2s= 36279\nLHE= 36280\nIFVuaXRz 36281\nIGNlbnRyZXM= 36282\nIFByaW0= 36283\nLl0KCg== 36284\nIFNoYXc= 36285\nUHJvbQ== 36286\nIFRob3VnaHQ= 36287\nQ2hlY2tlcg== 36288\nX291dHB1dHM= 36289\nKGNoYW4= 36290\nRUlOVkFM 36291\nIGJvYg== 36292\nX2NtcA== 36293\nUGVk 36294\nIG1hdHJpY2Vz 36295\nIHZyb3V3ZW4= 36296\nIGdlbnVpbmVseQ== 36297\naGlnaGxpZ2h0 36298\nKGRpc3BsYXk= 36299\nKSE9 36300\nIGRlbGljYXRl 36301\nIEx1dGhlcg== 36302\nIE1pbGVz 36303\nIHVzZXJJRA== 36304\nJT0= 36305\nYXRldXJz 36306\nX0JVRg== 36307\nLS0tLS0tLQo= 36308\naW1pdGl2ZXM= 36309\nIHNoZWx2ZXM= 36310\nc2xvdw== 36311\nX2luZm9ybWF0aW9u 36312\nTEVH 36313\nV3I= 36314\nLmZvcm1z 36315\nY2VsYW5k 36316\nL3Vu 36317\nOiY= 36318\nLuKAmQoK 36319\nPSIl 36320\nIHByb3N0 36321\nIGZvbnRzaXpl 36322\ndWNpw7Nu 36323\nZ2V0aWM= 36324\nYW10 36325\nPSIu 36326\nRGVjb3I= 36327\nQnJpdA== 36328\nICIiKS4= 36329\nIGZvdW5kaW5n 36330\nLkZpbGVOYW1l 36331\nIFRpZXI= 36332\nIGRpc2Nsb3Nl 36333\nw6Ft 36334\nLnN5bg== 36335\nLlZpZXdIb2xkZXI= 36336\nbGljYW50 36337\nX3N0YWdl 36338\nTW9uZGF5 36339\nIGRlc2VyaWFsaXpl 36340\ndGFsaw== 36341\nIHRyYWRpdGlvbmFsbHk= 36342\n5oCB 36343\n2K4= 36344\nTEVY 36345\nIGVo 36346\nCVJPTQ== 36347\nIHt9KQo= 36348\nUXVlc3Rpb25z 36349\nbmNweQ== 36350\nIGZpeGluZw== 36351\n0LrRgw== 36352\nX0tleQ== 36353\nOng= 36354\nIFNUUklORw== 36355\nINGE0LDQuQ== 36356\nCWxlZnQ= 36357\nIEJlbmNo 36358\nZWxsaWo= 36359\nVVJSRUQ= 36360\nIERpYWdyYW0= 36361\nfWNhdGNo 36362\nL3RpbWU= 36363\nIE1pc3Npbmc= 36364\nZGJuYW1l 36365\nIHNvcmU= 36366\nIFdhbHQ= 36367\ndWdnaW5n 36368\ncmVwcmVzZW50 36369\nIEdT 36370\nbmV5cw== 36371\nCXBhZ2U= 36372\nIHZvbGNhbg== 36373\nKGJ0bg== 36374\nIGV4Y2VlZHM= 36375\nIGVyZw== 36376\nIHBpbG90cw== 36377\nIFNlZA== 36378\nZXJzaW9ucw== 36379\nIHBhdHJvbg== 36380\nUlY= 36381\nL3RvcA== 36382\nLmFzc2V0 36383\nX2Nyb3Nz 36384\nLkVkaXRvcg== 36385\nLnRi 36386\nIHdlbGNvbWluZw== 36387\nU0NSRUVO 36388\nKWZpbmRWaWV3QnlJZA== 36389\nQ29kZXI= 36390\nPElBY3Rpb25SZXN1bHQ= 36391\nX1FVRVVF 36392\n4YM= 36393\nIGhlaWdodHM= 36394\nUmVxdWVzdHM= 36395\nIHN5bWJvbGlj 36396\nDQ0KDQ0K 36397\nIGNvdXBvbnM= 36398\nLWZpdmU= 36399\nIERlc2t0b3A= 36400\nIG1pc21hdGNo 36401\nICdfJw== 36402\nX0RJVg== 36403\nQVNPTg== 36404\nLnRyYW5zcG9zZQ== 36405\nKG1hc2s= 36406\nIENlbHQ= 36407\nLkhhbmQ= 36408\nYXR1 36409\nasSZ 36410\nIHt9KTsK 36411\nTWlzcw== 36412\nIHByaW1h 36413\nbXVuZA== 36414\nb2x2 36415\nIFByZXR0eQ== 36416\nIHJlYmVs 36417\nIEZE 36418\nYXN0aWNhbGx5 36419\nT0xU 36420\nLWF4aXM= 36421\ndXhl 36422\nIGVpbmZhY2g= 36423\nIENoZW1pY2Fs 36424\nX3NlZw== 36425\nbGVldGNvZGU= 36426\nbG9wZQ== 36427\nX29yaWc= 36428\nICAJCQ== 36429\nKERvdWJsZQ== 36430\nIFBheVBhbA== 36431\nLkJhY2tncm91bmRJbWFnZQ== 36432\nIGhvbWVtYWRl 36433\nLiku 36434\nKHBhcnNlcg== 36435\nYXRybw== 36436\nYWNjb3JkaW9u 36437\nRGVmaW5l 36438\nIOyeiA== 36439\nIEFVVE8= 36440\nLnN1bW1hcnk= 36441\nc2NhbGFy 36442\nIEhvb2Q= 36443\ncXVpbg== 36444\nX2Rlcg== 36445\nIEdlc2No 36446\nLmNvbXB1dGU= 36447\nRmVlZGJhY2s= 36448\nIHBoYXJtYWM= 36449\nIMWfaQ== 36450\nIGdsb3Nz 36451\nIEZJTFRFUg== 36452\nSU5TVEFOQ0U= 36453\nIGthbA== 36454\nLlBM 36455\nX0ZSRUU= 36456\nR3JhZGU= 36457\nIOKZ 36458\nLm1ldHJpY3M= 36459\nIGNhZ2U= 36460\nLlh0cmFHcmlk 36461\nX2Rz 36462\nemln 36463\naW50ZXJvcFJlcXVpcmVEZWZhdWx0 36464\nLnJlbW92ZUNsYXNz 36465\nPT09PT09PT09PT09PQ== 36466\nIG1hc3RlcnM= 36467\nU3RhdGVFeGNlcHRpb24= 36468\naWxsZXJ5 36469\nIEJyYWR5 36470\nIGxpbmluZw== 36471\nX2Nz 36472\naW5zdWxh 36473\nIH06 36474\nW3Bvc2l0aW9u 36475\nIFJ4 36476\nIEJZVEU= 36477\nIFN0cmlrZQ== 36478\nINCa 36479\nIENsdXN0ZXI= 36480\nLmRvd25sb2Fk 36481\nQWxsb3dlZA== 36482\nIGFtZW5pdGllcw== 36483\nIG9uVGFw 36484\nZnVsV2lkZ2V0 36485\nIHN0cmVuZ3Rocw== 36486\ndHdlZXQ= 36487\nIGFzY2VuZGluZw== 36488\nIGRpc2Nsb3NlZA== 36489\nZ3Jhdg== 36490\nZGlzdHJpY3Q= 36491\nKTw8 36492\nKSwi 36493\nKGRlZnVu 36494\nX3w= 36495\nIGdhemU= 36496\n0LDRjw== 36497\nIGZvcnR5 36498\nPT09PT09PT09PT0= 36499\nU2NpZW5jZQ== 36500\nc2VtYmxlcg== 36501\nCWJvZHk= 36502\nX3RyYW5zZmVy 36503\nIGxvbmd0aW1l 36504\nIGNvbXBsaWNhdGlvbnM= 36505\nIGJvb3Ro 36506\nVkVSUg== 36507\nIHlpZWxkcw== 36508\nIG5hdmlnYXRvcg== 36509\nOjpfKCc= 36510\nRUNUT1I= 36511\nX0NvbmZpZw== 36512\nIGxhc3RlZA== 36513\ndXNhbA== 36514\n55m75b2V 36515\nIGdsb3Zlcw== 36516\nIGJlbGx5 36517\nU2FsZXM= 36518\nKE1ldGhvZA== 36519\nKG1lbWJlcg== 36520\nIFJlZWQ= 36521\ncGFzc2Vk 36522\nU2lnbklu 36523\nLG51bQ== 36524\nVUxPTkc= 36525\nIExFRw== 36526\nbmVscw== 36527\nIG1lbnRvcg== 36528\nKHJj 36529\nIE9idmlvdXNseQ== 36530\nLmlm 36531\nIEZyZWRlcg== 36532\nSEVBRA== 36533\nQGF1dGhvcg== 36534\nQ29uZGl0aW9ucw== 36535\nIGdhcmRlbnM= 36536\nIFJpcA== 36537\nKHVzZXJz 36538\nIE9rYXk= 36539\nIHdyZXN0bGluZw== 36540\naW1lc3RvbmU= 36541\nIENlcnRpZmllZA== 36542\nIHZlcmRpY3Q= 36543\nYWlkYQ== 36544\nLmlubmVyVGV4dA== 36545\naWNhc3Q= 36546\nCWF0 36547\nIHByZXN1bWFibHk= 36548\nIEZVTg== 36549\nYWplcw== 36550\n0Jc= 36551\nPiIsCg== 36552\nX1Bpbg== 36553\ndWVzZQ== 36554\nIG92ZXJyaWRlcw== 36555\nX3JlYWR5 36556\nQWR2YW5jZWQ= 36557\nIG9waQ== 36558\nLWNhcnQ= 36559\nKCIvIiw= 36560\nIERlYg== 36561\nQ1JZ 36562\nIFZlcnRpY2Fs 36563\nIE9WRVI= 36564\nIENvcnBvcmF0ZQ== 36565\nICIiOw== 36566\nIHN0ZXBwaW5n 36567\nZWo= 36568\nIGFjY3VzYXRpb25z 36569\nIG9yYXo= 36570\nX3RhaWw= 36571\nIGluZHVjZWQ= 36572\nIGVsYXN0aWM= 36573\nIGJsb3du 36574\nLC8v 36575\nIGJhY2tncm91bmRz 36576\n4oCZdW5l 36577\nLXNkaw== 36578\nIHNldEludGVydmFs 36579\nIGluY2VudGl2ZXM= 36580\nIHZlZ2V0YWJsZQ== 36581\nX09u 36582\nZXhwYW5kZWQ= 36583\ncGl4 36584\nX3NoYWRlcg== 36585\nIFNQRFg= 36586\nQGV4YW1wbGU= 36587\nIFdyYXBwZXI= 36588\nLlplcm8= 36589\nUG9zaXRpdmU= 36590\nIHNwaW5uZXI= 36591\nIGludmVudGVk 36592\nIEdhdGVz 36593\n0L7RgtC+0YA= 36594\nIGNvbXBhcmlzb25z 36595\n6Lc= 36596\nLnByaW1hcnk= 36597\nZGF0YVByb3ZpZGVy 36598\nYWRkaXRpb25hbA== 36599\nCW9wdGlvbnM= 36600\nc25hcHNob3Q= 36601\nLnNldEhvcml6b250YWw= 36602\nICJ7fQ== 36603\nIEZpc2hlcg== 36604\naGFsdGVu 36605\nPFR5cGU= 36606\nIG1heExlbmd0aA== 36607\nIE10 36608\nIOqwgA== 36609\nLmpldGJyYWlucw== 36610\nIGlkZW50aWZpZXM= 36611\nIGZsb3dpbmc= 36612\nIERpc2N1c3Npb24= 36613\nYXRzYnk= 36614\nIHNjaHc= 36615\ndWdodHk= 36616\nIHJpdmVycw== 36617\nLnVuaXF1ZQ== 36618\nX1BIWQ== 36619\nZWRyYWw= 36620\nKGxs 36621\nIGNzcmY= 36622\ncHBlcnM= 36623\nw7xs 36624\nIEVzcGVjaWFsbHk= 36625\ncG9ydGVk 36626\nIEhhcnJpc29u 36627\nKioqKioqKi8K 36628\nVGV4dENvbG9y 36629\n7Iq1 36630\nd2lyZQ== 36631\nIHN0YXR1c0NvZGU= 36632\nIEZpbmlzaA== 36633\nY2VuY2U= 36634\nIE1jQ2Fpbg== 36635\nIFdvcg== 36636\nKGF3YWl0 36637\nICktPg== 36638\nIFJlZ2lzdGVyZWQ= 36639\nSU5FRA== 36640\na2Fs 36641\ncGFyaXNvbg== 36642\nIG9iamV0bw== 36643\nVmk= 36644\nbWFuZGE= 36645\nIHJlbmV3ZWQ= 36646\nIFNvZg== 36647\nZXNzZWw= 36648\nLm5kYXJyYXk= 36649\nIGNyYXA= 36650\n566h 36651\nLmFic3BhdGg= 36652\nKHVw 36653\nIGNsZWFyYW5jZQ== 36654\nIFRX 36655\nX0NPUFk= 36656\nICAgICAgICAgICAgCQ== 36657\nIGZvcmVzdHM= 36658\nIGFyZ3VhYmx5 36659\nIEFTUw== 36660\naGV5 36661\nYW1lbA== 36662\nX2ZvcmU= 36663\nIFNvdXRoZWFzdA== 36664\nIGFidXNlZA== 36665\nIHByYWN0aWNpbmc= 36666\nYWtlZGlycw== 36667\n5Li7 36668\nX3Jlc291cmNlcw== 36669\nIHBvbmQ= 36670\nLkZpeGVk 36671\nTGFzdEVycm9y 36672\nIFBzeWNob2xvZ3k= 36673\nICIvLw== 36674\nITo= 36675\nUmV1c2FibGU= 36676\nIG1lbnNhamU= 36677\nIHJvc3B5 36678\nIGJvdXI= 36679\nIHZhcmlldGllcw== 36680\nIGVtcGF0aA== 36681\nKCh7 36682\nX29yZw== 36683\nIE1lcw== 36684\nIE1hZ2VudG8= 36685\nSVNUT1JZ 36686\nVW5sZXNz 36687\nIGhq 36688\nIER1dHk= 36689\nSnVu 36690\nLHNpemU= 36691\nIHBhaW50aW5ncw== 36692\nIGRpc3BlbnM= 36693\nZGFydA== 36694\nIGJlaGF2aW9yYWw= 36695\nIHJwYw== 36696\nY2FsY3VsYXRl 36697\nZnJ1aXQ= 36698\nX21t 36699\nCXB0aHJlYWQ= 36700\nTWF4TGVuZ3Ro 36701\nIGN1cnJlbmNpZXM= 36702\nX2NhcGFjaXR5 36703\nIE96 36704\nIGZpcmVhcm0= 36705\nIGNvZWZmaWNpZW50 36706\nIGJhbmtydXB0Y3k= 36707\nd2FydA== 36708\nIGZhdGlndWU= 36709\nQVZB 36710\nIGVzcGE= 36711\nX3Bj 36712\nIFF1b3Rlcw== 36713\nX0xJR0hU 36714\nIFRpY2tldHM= 36715\nIHJlbGF0ZXM= 36716\nIHB1Ymxpc2hlcnM= 36717\nIHVubG9ja2Vk 36718\nIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 36719\nIEludGVycnVwdGVkRXhjZXB0aW9u 36720\nIG91dGxvb2s= 36721\ncm4= 36722\nIHJlYmVscw== 36723\nV3JpdHRlbg== 36724\nIGFzaWFu 36725\nb3R0bw== 36726\nIAkJCQk= 36727\nX2dwdQ== 36728\nVHh0 36729\nLkltYWdlVmlldw== 36730\nIHN1aXM= 36731\nX3RhYmxlcw== 36732\nLlJlY3ljbGVyVmlldw== 36733\nIHdoYXRzb2V2ZXI= 36734\n6IE= 36735\nXSsrOwo= 36736\nYXNzZXJ0VHJ1ZQ== 36737\nX3ZlcmlmeQ== 36738\nIFJpdmVycw== 36739\nIF1b 36740\nSmV0 36741\naWRpYW4= 36742\nU2libGluZw== 36743\nIGdlbnJlcw== 36744\nLkFjY2Vzcw== 36745\nT1BT 36746\nIHRyaXZpYWw= 36747\n4Liq 36748\nYWxlbg== 36749\n0LLQtdC0 36750\nIFN3b3Jk 36751\nIHNjcnV0aW55 36752\nKGNi 36753\nIGNvbW1lcmNl 36754\nIGd1YXJhbnRlZXM= 36755\nX2Fkdg== 36756\nIExFVA== 36757\ncmVjaW8= 36758\nIGhpbGFy 36759\nIGJhY2t5YXJk 36760\n44CP 36761\nIGlsbHVzdHJhdGVk 36762\nL3ZlbmRvcg== 36763\nLlV0aWw= 36764\nIHdvdw== 36765\nTE9Z 36766\nIE1hcnNoYWw= 36767\nIj4nLiQ= 36768\nIEJhaw== 36769\nIG1vZGlmaWVycw== 36770\nZGljdGlvbmFyeQ== 36771\nIFN0cmU= 36772\nbXVsdGlwbGU= 36773\nIikpLA== 36774\nIENvcnQ= 36775\nJ10iKS4= 36776\nKGFkbWlu 36777\nIENyZWF0b3I= 36778\nSW50ZXJuZXQ= 36779\nKG1z 36780\nbG9neQ== 36781\nREVDTEFSRQ== 36782\nIE1hcmN1cw== 36783\nPDw8PA== 36784\n44Gg 36785\nX215 36786\nKGluc3Q= 36787\nIHNjaWVuY2Vz 36788\nTkRFUg== 36789\nLmVudGVy 36790\nIGl0dQ== 36791\nIGJlaGF2ZQ== 36792\nUGFu 36793\nb21iaWVz 36794\nPSc8 36795\nJykpOw0K 36796\nIE1FTlU= 36797\nIFdvcmtlcnM= 36798\nLk5vRXJyb3I= 36799\nIGJpbmRpbmdz 36800\nIGRpc2FiaWxpdGllcw== 36801\ne1w= 36802\nIE11bmljaXA= 36803\nIGNvcmVz 36804\ndXJwbGU= 36805\nIE5va2lh 36806\ndXNpb25z 36807\nIEZpdG5lc3M= 36808\nLmhhbmRsZUNoYW5nZQ== 36809\nIGphdmFzY3JpcHQ= 36810\n7JqU 36811\nKGRlYw== 36812\nIHBhY2tpbmc= 36813\nLWRlcGVuZA== 36814\nIHRyYW5zY3JpcHQ= 36815\nemVyb3M= 36816\nX2FsZXJ0 36817\nPyIsCg== 36818\nbGlicw== 36819\nsdC+0YI= 36820\nIHwKCg== 36821\ndHJhaW5lZA== 36822\nIEdlbnQ= 36823\nIFJhYg== 36824\neHA= 36825\nX2NvbmZpZ3VyYXRpb24= 36826\n5aSp 36827\nX2FjY2VwdA== 36828\nLnJlY3ljbGVydmlldw== 36829\nOnVybA== 36830\nIE11aGFtbWFk 36831\nIHByaXZpbGVnZXM= 36832\nX2Jhbms= 36833\ndWt1 36834\nd2FsbGV0 36835\nIFJPT1Q= 36836\nIGVuY3VlbnQ= 36837\nP2ZhbWlseQ== 36838\nCXBvc2l0aW9u 36839\nIGNn 36840\nIHByZWNpcA== 36841\nbWV0aG9kcw== 36842\nX2Zhc3Q= 36843\naW5jcmVtZW50 36844\nIFRpZ2Vy 36845\nX09DQ1VSUkVE 36846\ncXVpcA== 36847\nIEhBUw== 36848\nX2RvbQ== 36849\nIHdyZWNr 36850\nYmo= 36851\nIGRlcm4= 36852\nIG9yZ2Fucw== 36853\nLmVudHJpZXM= 36854\nIF8oJw== 36855\ncmFtZW50bw== 36856\nIEphbWll 36857\nIHB1bms= 36858\nSVBQ 36859\nIHByb2dyYW1h 36860\nIGF0dGFpbg== 36861\nIHByb3Zlcw== 36862\nL3NpZ24= 36863\nIGFuc3dlcmluZw== 36864\nIGxhZGRlcg== 36865\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 36866\nIFdhbG1hcnQ= 36867\nIENPTlRFTlQ= 36868\nZHVjdG9y 36869\nIHZlcmJhbA== 36870\nIFBJRA== 36871\nY3J5cHRv 36872\nX0NBTExCQUNL 36873\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== 36874\nIHBvdGVudA== 36875\nIHNob3J0cw== 36876\nLlVyaQ== 36877\nLnVuaWZvcm0= 36878\nO2JvcmRlcg== 36879\nIFdlcg== 36880\nIGhlcmVpbg== 36881\nbGxh 36882\nIElocg== 36883\nUGl4bWFw 36884\nbGl0ZXJhbA== 36885\nISkKCg== 36886\nZ2VuZXJpYw== 36887\ncnVzdA== 36888\nX3NjcmlwdHM= 36889\nb3N0bw== 36890\naXR1cw== 36891\nIENvYWxpdGlvbg== 36892\nIHJlbW90 36893\nZGVwbG95 36894\nIEVhZ2xl 36895\n44CB44CM 36896\nIGltcG9ydGFudGU= 36897\nCW9iamVjdA== 36898\nIHNlYXNvbmFs 36899\nbmVq 36900\nYWlkdQ== 36901\nQmluZFZpZXc= 36902\nIFNpZXJyYQ== 36903\nLWJn 36904\nIG1ha2VTdHlsZXM= 36905\nW29mZnNldA== 36906\nR2FtZXM= 36907\nIGhvcm1vbmU= 36908\nQVJJTw== 36909\naGVhZHM= 36910\nKHNlbGVjdA== 36911\nIFN0YXJ0ZWQ= 36912\nQHBhcmFt 36913\nX2RlY2w= 36914\nX2Jsb2c= 36915\nIGHDsW8= 36916\nXEFwaQ== 36917\nIE1pbHdhdWtlZQ== 36918\nUHJvdmlk 36919\nQW5pbWF0ZWQ= 36920\nIGNvb2xlcg== 36921\nIFNlZWQ= 36922\nLkVkaXQ= 36923\nz4Q= 36924\nIFRha2luZw== 36925\nIGJvcmRlckNvbG9y 36926\nLWZvdW5kZXI= 36927\nLkxvZ2dlckZhY3Rvcnk= 36928\nICIiCgo= 36929\nQUxU 36930\nIExhdGU= 36931\nRURJQVRF 36932\nICk7CgoK 36933\nYWZh 36934\nIGNhbmNlbGxhdGlvbg== 36935\nQXRvbQ== 36936\nIEJpcm1pbmdoYW0= 36937\nZW1wcmVzYQ== 36938\nSEVNQQ== 36939\nYXNjYWw= 36940\nIHVwc2lkZQ== 36941\nLlZlcnNpb24= 36942\nIEZvbGRlcg== 36943\nIEVpZ2h0 36944\nIFZpbnRhZ2U= 36945\nIEFwcERlbGVnYXRl 36946\nIFByZXZlbnRpb24= 36947\nLnNlcGFyYXRvcg== 36948\nU1RN 36949\nKHJvb20= 36950\nZ2VuZXJhdG9y 36951\nIGNhdHRsZQ== 36952\nCVo= 36953\nIFBhcnRpY2xl 36954\nJ307Cg== 36955\nIG5laWdoYm91cnM= 36956\nIFN0YXRlbGVzcw== 36957\nIGFsdGl0dWRl 36958\nIHNhaW50 36959\n0L7QsdCw0LI= 36960\nIGNvbnZpbmM= 36961\nIENvbnRlbnRz 36962\nIGpldW5l 36963\nKHRz 36964\nU2VyaWFsaXphdGlvbg== 36965\nKGNvbGxlY3Rpb24= 36966\nIEpheno= 36967\nIERvZA== 36968\nIFJvY2g= 36969\nYWNpbw== 36970\nY29tbWVuZGVk 36971\nREVGSU5F 36972\nLm9ubG9hZA== 36973\nIHNwZWNpYWx0eQ== 36974\nUExBQ0U= 36975\nX01PVkU= 36976\nIGFjY291bnRhYmxl 36977\nUmV1dGVycw== 36978\nIGZpY2tlbg== 36979\nIGRlcHI= 36980\nV293 36981\nVm9pZA== 36982\nLnNwYWNl 36983\n4LiX 36984\nIHRx 36985\nIFBldHM= 36986\nPCQ= 36987\nKEN1cnJlbnQ= 36988\nYmVycmllcw== 36989\ncGxhbmF0aW9u 36990\nIGxpc3RPZg== 36991\nIFRodQ== 36992\nIFBSSU5U 36993\nIG1pc21v 36994\nIGRvaQ== 36995\nY2hr 36996\nIFVuaWNvZGU= 36997\nKHJvbGU= 36998\nIHZpcmdpbg== 36999\nPFBvaW50 37000\nX1JFU1BPTlNF 37001\nLWhvdXNl 37002\nIFZlbmV6dWVsYQ== 37003\nRU1BSUw= 37004\nIHDDumI= 37005\nX2V4aXN0 37006\nQmFsbA== 37007\nLkNM 37008\ncmVmZXJlbmNlcw== 37009\nIEJlYXV0aWZ1bFNvdXA= 37010\nCUV4cGVjdA== 37011\nVEhJUw== 37012\n0YPQtA== 37013\nYmFuZQ== 37014\nIHRlbXBvcmFs 37015\nRVJJQw== 37016\nZXRhcw== 37017\nIHJlZnJlc2hpbmc= 37018\nIHNlY3VsYXI= 37019\nQHN5bnRoZXNpemU= 37020\nYWNjdXI= 37021\nIG5lbGxh 37022\nIFNPTA== 37023\nLnBpcGU= 37024\nQ2hhbm5lbHM= 37025\n6Ieq 37026\nIGluc2VydGlvbg== 37027\n4buL 37028\nZWxpYQ== 37029\nIGFkanVzdGFibGU= 37030\nQ2FuYWRh 37031\nIElURU0= 37032\nIGN1cnZlcw== 37033\nIENoZWFw 37034\nbGV0aW5n 37035\nIG9wdGltaXN0aWM= 37036\nYWxsbw== 37037\nIHBvbGl0aWNpYW4= 37038\nX2Rvd25sb2Fk 37039\nPWVkZ2U= 37040\nT1JUSA== 37041\nIG1vZGVsbw== 37042\nYXJ0bw== 37043\nLnJvdGF0ZQ== 37044\nIHNlbGVuaXVt 37045\n5oiR 37046\nX2FsaWFz 37047\nIHJlbm93bmVk 37048\nLicu 37049\nIGN6eQ== 37050\nIGFsbGVz 37051\nLkNvbXBpbGVy 37052\nIEJhc3M= 37053\nQ29ubmVjdG9y 37054\nLlJvbGU= 37055\nTElOSw== 37056\nIGNyaXRlcmlvbg== 37057\nbGVtZXRyeQ== 37058\nU3VjY2Vzc2Z1bGx5 37059\nL3BuZw== 37060\nIGV5ZWI= 37061\nYXNwYmVycnk= 37062\nKGdy 37063\nIGRhbmdlcnM= 37064\nIGNvcnJlY3RlZA== 37065\nIGdsb3c= 37066\nIGVsYWJvcmF0ZQ== 37067\nIEJlYXJz 37068\nYXdhaQ== 37069\nPSInKw== 37070\nIHByb21vdGlvbnM= 37071\nIG1hdGhlbWF0aWNhbA== 37072\nICJg 37073\nX0dlbmVyaWNDbGFzcw== 37074\nIENoZWY= 37075\nLlNvcnQ= 37076\ndGFibGVOYW1l 37077\nUklD 37078\nIHZvbHVudGFyeQ== 37079\nIEJsYWRl 37080\nLWVsZWN0 37081\nIENvbWJhdA== 37082\nIEFiaWxpdHk= 37083\nIGFiZG9t 37084\nIGR1Y2s= 37085\nVG1w 37086\n5YWo 37087\nIGVyYXNl 37088\nLlBo 37089\nIERlZmF1bHRz 37090\ncGFydG1lbnQ= 37091\nX1VTQg== 37092\nw6p0ZQ== 37093\nOyc= 37094\nIHBhZHM= 37095\nIE9iYW1hY2FyZQ== 37096\nLlRvdGFs 37097\nIGRpdmVydA== 37098\nIGNyaWNrZXQ= 37099\nIHJlY3JlYXRpb25hbA== 37100\nKHJlZA== 37101\nIENsZQ== 37102\nUlU= 37103\nIG1pc3Rha2Vu 37104\nIE1vbnRhbmE= 37105\nIHN0cml2ZQ== 37106\nX3NsaWRlcg== 37107\nIFBsYXN0aWM= 37108\nIGRlY29yYXRlZA== 37109\nIFZQ 37110\nbGljbw== 37111\nCWZhbHNl 37112\nIHByZWZz 37113\nKFwi 37114\nX2ZhbHNl 37115\naWVuZG8= 37116\nIEAk 37117\nQnVja2V0 37118\nYWN0aWNhbA== 37119\nIFpoYW5n 37120\nLmNvbHM= 37121\nLkJpbmRpbmc= 37122\nIHdheA== 37123\nX1NUT1JBR0U= 37124\nIGxhd24= 37125\nIHJm 37126\nLlNjZW5l 37127\nIENhbGN1bGF0b3I= 37128\nLmRlc2lnbg== 37129\nIHJlc2ls 37130\n0LvQtdC8 37131\nRW1wbG95 37132\nIFByaWNlcw== 37133\nIFBXTQ== 37134\nYWdp 37135\nLmV2YWx1YXRl 37136\nCXBhcmFt 37137\nIGJyYXNz 37138\nYmJlbg== 37139\nIGluZmxhbW1hdGlvbg== 37140\ndWxsaXZhbg== 37141\nIGFubm90 37142\nIHBI 37143\naWFtZXRlcg== 37144\nIEJUQw== 37145\nKGJveA== 37146\nU3Rvcnlib2FyZA== 37147\nIGNsYXk= 37148\nLmFzc2VydFJhaXNlcw== 37149\nfHN0cmluZw== 37150\nLkFwcGx5 37151\nIG1hdGNoZXI= 37152\ndW5kZWQ= 37153\nIHNhdGlzZnlpbmc= 37154\nIOyglQ== 37155\nUmVuZGVyaW5n 37156\nX2FwcHJv 37157\naW5kcm9tZQ== 37158\nQU5FTA== 37159\nX2ZpeA== 37160\nYnJ1c2g= 37161\nLk1hdGNo 37162\nIHNtaWxpbmc= 37163\nb25hdXQ= 37164\nU3VuZGF5 37165\nIGRlbGV0aW9u 37166\nIGVuY291cmFnZXM= 37167\nUHVsbA== 37168\nIHJldmVuZ2U= 37169\nIHF1YXJyeQ== 37170\ndHJhZGU= 37171\nIGNhYmxlcw== 37172\nKGRlbHRh 37173\naXRlc3BhY2U= 37174\nIGZo 37175\nLmJ1bmlmdQ== 37176\nIHZpZWw= 37177\nX0lOQ0xVREVE 37178\nIFRhaWw= 37179\nYWRhcg== 37180\nb2Zz 37181\nIG1ldGFscw== 37182\nZ29t 37183\nX21ldGhvZHM= 37184\nIG5q 37185\nLlN0ZA== 37186\nKHdpbg== 37187\nJCgn 37188\nIHR1cnRsZQ== 37189\ndXJvbg== 37190\nIGVucm9sbGVk 37191\nIEh6 37192\nIEJveERlY29yYXRpb24= 37193\nIHBvbnQ= 37194\ncmVsYXRpb25zaGlw 37195\nQmk= 37196\ns7s= 37197\nIG1hc2N1bA== 37198\nIHNoYWRlcw== 37199\nIHZy 37200\nIExvZ2lj 37201\nIGFpbg== 37202\nIERJU1Q= 37203\nIGNvbGxhcg== 37204\nInByb2ZpbGU= 37205\nR2VuZXJhdGVkVmFsdWU= 37206\nIFBvc3NpYmxl 37207\nIGVpbmVz 37208\ng4E= 37209\nLnRpbWVvdXQ= 37210\nIEVj 37211\nIGplcnNleQ== 37212\nLkRvdWJsZQ== 37213\nIHF1YWxpZnlpbmc= 37214\ndm9y 37215\nQ1JFRU4= 37216\nX0FwcA== 37217\nX3JlY3Y= 37218\nIGFsaWVucw== 37219\nSXRz 37220\nRXNj 37221\naWF0b3I= 37222\nIEVjbGlwc2U= 37223\nIGdo 37224\nVmljdA== 37225\nCWh0bWw= 37226\ndG9v 37227\nLmNvbnN0 37228\nIGFudGVyaW9y 37229\nIFd1 37230\nKGtleXM= 37231\nIHVsdHI= 37232\nX3BvbHk= 37233\nIFRhcA== 37234\nIEJ1ZA== 37235\nQVdT 37236\nIGNyYXNoZXM= 37237\nX3RvdA== 37238\nQ29udGlu 37239\nLWhhbmRlZA== 37240\nYWx0aG91Z2g= 37241\n4Lia 37242\naWZpY2VudA== 37243\nIGRldmU= 37244\ndXRvcnk= 37245\nIFdvcnRo 37246\nX01T 37247\nIGZsb29yaW5n 37248\nIHNlbGxlcnM= 37249\nIFRoYW5rc2dpdmluZw== 37250\nIHBuZw== 37251\nIHZhbG9yZXM= 37252\nIHNsZWV2ZQ== 37253\nIGZpbGxl 37254\n0JA= 37255\nIGFwcG9pbnRtZW50cw== 37256\nIHZpbQ== 37257\nVXNlckluZm8= 37258\nQk9PU1Q= 37259\nIHBvc2Vk 37260\naW5pdGlhbGl6ZWQ= 37261\nLnByb2R1Y3Rz 37262\nIExlYWRlcnNoaXA= 37263\nbWFudWVs 37264\nJyU= 37265\nZW1hcmtz 37266\nUGVyY2VudGFnZQ== 37267\nKGRpc3Q= 37268\nLmF2YXRhcg== 37269\nKGhPYmplY3Q= 37270\n5LuK 37271\nX2lmZg== 37272\naWNvbmU= 37273\nOyk= 37274\nX25pbA== 37275\nIGFib2w= 37276\n0LXRgdGC 37277\nIHZlbnVlcw== 37278\nLkNvbnZlcnQ= 37279\nIScpCg== 37280\nLkJpdG1hcA== 37281\nc2tpbg== 37282\nX0NPTFVNTg== 37283\nUmV2 37284\nR1JFU1M= 37285\nZ293 37286\nIHdpc2hlZA== 37287\ndHJhY3Rz 37288\nLmFzc2VydEZhbHNl 37289\nIHNjcmVlbnNob3Q= 37290\nIGZvaXM= 37291\nQ29tYg== 37292\nTGluZVdpZHRo 37293\nIEdyYWI= 37294\nIGludGVuc2l2ZQ== 37295\nCXNo 37296\nKyk= 37297\nLmZpcnN0TmFtZQ== 37298\nX1BST0NFU1M= 37299\nIHRpbHQ= 37300\naXRvcmVk 37301\nLkxPRw== 37302\nIGJhaw== 37303\nIGludGVudGlvbmFsbHk= 37304\nLnBsYXllcnM= 37305\nKGNhbnZhcw== 37306\nKSkpDQo= 37307\nLlByb3ZpZGVy 37308\nX1BVQkxJQw== 37309\nVGFsaw== 37310\nIExpdg== 37311\nY2hlZHVsZXJz 37312\nIGxj 37313\nYWRpYw== 37314\nZmVhdHVyZWQ= 37315\nLnJlc291cmNlcw== 37316\nRnVsbE5hbWU= 37317\nIG1lYW53aGlsZQ== 37318\nQnVmZmVycw== 37319\nIHJlc29sdmVy 37320\nIFNBUA== 37321\nX1RF 37322\nR05V 37323\nIEZvcm1zTW9kdWxl 37324\nX3do 37325\nIFN3ZQ== 37326\nLndpZGdldHM= 37327\nIGNhYmluZXRz 37328\nIHN1c2NlcHQ= 37329\nIEJvdHQ= 37330\nYWN0aXZleA== 37331\nYXZhcg== 37332\nYW50aWNz 37333\nICI9Ig== 37334\nX2t3YXJncw== 37335\nIGdhbWVPYmplY3Q= 37336\nIEFuZ2xl 37337\nLkl0ZXI= 37338\nbWFyc2g= 37339\nIEJpcnRoZGF5 37340\nIENNUw== 37341\ncmVxdWVzdHM= 37342\nIFBlYXJs 37343\nX0VPTA== 37344\nIGxpbnV4 37345\nKG9yZw== 37346\nX01vdXNl 37347\nLmNvbnN0cnVjdG9y 37348\nIHpk 37349\nIGtpY2tz 37350\nYXJ0aXNhbg== 37351\nIGVheA== 37352\nS24= 37353\ncG9uZ2U= 37354\nIEZpbmxhbmQ= 37355\nIG1ldHJlcw== 37356\nIEFzc2Vzc21lbnQ= 37357\ncGFydG5lcg== 37358\nL3ByZQ== 37359\nIScsCg== 37360\nW0ludA== 37361\nIG9zbG8= 37362\nZGF0ZXBpY2tlcg== 37363\nL1N0cmluZw== 37364\nb3BsYXk= 37365\nIEhlYnJldw== 37366\nLGRvdWJsZQ== 37367\nIHRyYWJhbA== 37368\nKyJc 37369\nCUVJRg== 37370\nL3RleHQ= 37371\nX0ZJUlNU 37372\nIFBldGU= 37373\nIGVnbw== 37374\nIGV4dHJhcw== 37375\nUERP 37376\nIHJlZ3VsYXRl 37377\nIFFXaWRnZXQ= 37378\nc3Rz 37379\nIFNob3dz 37380\nIE5IUw== 37381\nLmNvdXJzZQ== 37382\ncHRocmVhZA== 37383\nIEZ1ZWw= 37384\nLnRpbWVz 37385\nIMKw 37386\nIHN0cmlkZXM= 37387\nKCQoJyM= 37388\nKHdvcmRz 37389\nIHJoeXRobQ== 37390\nIHNwb250 37391\nIHNlbnNhdGlvbg== 37392\nIHNwaWtl 37393\nQ2xvc2luZw== 37394\n6aG16Z2i 37395\nTnVtZXJpYw== 37396\nIGJyZWF0aGU= 37397\nIGZpbmFsZQ== 37398\nX0ZBQ1Q= 37399\naW5pb24= 37400\nIGNoaWxs 37401\nIGZvcm1hbGx5 37402\nQU5HRUQ= 37403\nICc6Jw== 37404\nINC/0YDQuA== 37405\nYXE= 37406\nIEZhYnJpYw== 37407\nKGxhdA== 37408\nIFByaW5jaXBhbA== 37409\nIGVycm8= 37410\nb2NhbGU= 37411\nTm9t 37412\nIGZvc3Q= 37413\nX0NVU1RPTQ== 37414\nLmludGVsbGlq 37415\nZXJ0b29scw== 37416\nIGNsYXNzZQ== 37417\nYWRpZW50cw== 37418\nIGZ1bmRyYWlzaW5n 37419\nRU5F 37420\nX09QVElPTlM= 37421\nX29i 37422\nLy99Cg== 37423\nIHByb3RlY3Rpb25z 37424\nLnNlZWQ= 37425\nTlY= 37426\ndGVybWluYWw= 37427\nOzs7 37428\nUHJlZGljYXRl 37429\nIOy2 37430\nIGJvbWJpbmc= 37431\nR0Y= 37432\nIGNoZXc= 37433\nKSkpLg== 37434\ncXVhbGlmaWVk 37435\nXT17 37436\nbGlzdGVu 37437\nQ0VOVA== 37438\nZGlnZXN0 37439\nRWFzdA== 37440\nIGRpdmVy 37441\nIGVuZHBvaW50cw== 37442\nIGVl 37443\nIGNvbGxlYWd1ZQ== 37444\nIGRpc3NlcnRhdGlvbg== 37445\nX2NvbW1pdA== 37446\nX0RBVA== 37447\nLnJj 37448\nIGJyZWFzdHM= 37449\nIFJ1Zw== 37450\nIFBpbA== 37451\nQ29udHJhY3Rz 37452\nIEJyeWFu 37453\nV2ViVmlldw== 37454\nIGNvbmNlbnRyYXRl 37455\nIElubmVy 37456\nICd8 37457\nc3Rkb3V0 37458\nX1N1Yg== 37459\nPi0tPgo= 37460\nVm9s 37461\nIFNTRA== 37462\nKSkpLA== 37463\nLk9wdGlvbmFs 37464\nIG51cnNlcw== 37465\nIG9yYg== 37466\nX3Bl 37467\nKTsNCg0KDQo= 37468\ncGxhY2Vk 37469\nZXNzZXI= 37470\nIHRoZXJhcGV1dGlj 37471\nIHdoaXRlc3BhY2U= 37472\nIGFzdG9u 37473\nU3VjY2Vzc2Z1bA== 37474\nIHByYWlzZWQ= 37475\nIFdlcw== 37476\nIGVpZ2h0aA== 37477\naXJhbA== 37478\nIHZyb3V3 37479\nIGZhY3Rpb24= 37480\nX2JpYXM= 37481\nIHdpdGNo 37482\nIG5wYw== 37483\nKHNi 37484\nIFJvZHJpZw== 37485\nX2JpZw== 37486\nRGVwZW5kZW5jeQ== 37487\nIEFicmFoYW0= 37488\nYXJkaQ== 37489\nQ0FS 37490\nbm9z 37491\nIGFidW5kYW5jZQ== 37492\nIG51dHJpZW50cw== 37493\naW5zdGVpbg== 37494\nLlZlcnQ= 37495\nIElTUw== 37496\nPFU= 37497\nIHN1bXM= 37498\nX2hpc3Q= 37499\nIGZhcm1lcg== 37500\nIEFicg== 37501\nU2hvdA== 37502\nIEJhZFJlcXVlc3Q= 37503\nIGhhc3M= 37504\nIFJhaWxz 37505\nIGFmZmlsaWF0ZWQ= 37506\n5p2l 37507\nIGVyZg== 37508\nSU5G 37509\nIFZpZXdIb2xkZXI= 37510\nbWluaQ== 37511\nIFJvdGg= 37512\nIGZhaXRoZnVs 37513\nIFBoaWxsaXBz 37514\nQU5ET00= 37515\nXS5b 37516\nX1BBWQ== 37517\nIEFyY3RpYw== 37518\nZmFrZXI= 37519\nRGlnaXQ= 37520\nTWFsZQ== 37521\nc3RkZXJy 37522\nc2V5cw== 37523\nIMWh 37524\nX3JlbW90ZQ== 37525\nbGlxdWU= 37526\nIGluZGVm 37527\nIEluZHVzdHJpZXM= 37528\naXRyYQ== 37529\nX3BhaXJz 37530\nPGlvc3RyZWFt 37531\nIHNhbGFyaWVz 37532\naWtlbg== 37533\nLkZyYW1l 37534\nUExJQw== 37535\nX1NQRUM= 37536\nIE1lZGl0ZXJy 37537\nIHN5c3RlbWF0aWM= 37538\nIGludGVycm9n 37539\nSWNvbkJ1dHRvbg== 37540\nc2Vh 37541\naW50cm8= 37542\nIElzc3Vlcw== 37543\nZW5jcnlwdGVk 37544\nIGludGVybmF0aW9uYWxseQ== 37545\nIHNucHJpbnRm 37546\nIHBhc3Rh 37547\nIEJyYWRsZXk= 37548\nX1N0YXR1cw== 37549\nQUxL 37550\nX1BBRA== 37551\nLmxhdW5jaA== 37552\nPHNlbGVjdA== 37553\nIGhhcmRlc3Q= 37554\nIHBoeQ== 37555\nICgoKg== 37556\nLXNsaWRl 37557\nIE5vYm9keQ== 37558\nU3U= 37559\nIGFzw60= 37560\nY2xvc2VzdA== 37561\nX2luaXRpYWxpemVy 37562\nIHN1cHBvcnRlcg== 37563\nLWdlbg== 37564\nIHRhbGVz 37565\nIGNvcnA= 37566\nX2Z1 37567\nc2F0 37568\nbmVpZ2hib3I= 37569\nLk1pZ3JhdGlvbnM= 37570\nIGFsZ3Vu 37571\nIHNpbm9u 37572\nLlNwZWM= 37573\nPywK 37574\nLkdM 37575\nbWFsZQ== 37576\nIG1vbml0b3Jz 37577\neWxhbg== 37578\nLUxpY2Vuc2U= 37579\nLm1hdGNoZXM= 37580\nIEFCUw== 37581\nIE1hc3Q= 37582\nIFdhbGxldA== 37583\nKCQoIiM= 37584\nRGlydHk= 37585\nIGNvcGU= 37586\nIGludGVycG9sYXRpb24= 37587\nb3VzZWQ= 37588\nIEpldHM= 37589\nLkZMQUc= 37590\nLkNhbmNlbA== 37591\nLkV2ZW50cw== 37592\nbmV2ZXI= 37593\nIE1Ieg== 37594\nPkQ= 37595\nIHNlcnZsZXQ= 37596\nYmFzdGlhbg== 37597\nID4m 37598\nU0lE 37599\nX2Nsaw== 37600\nIGRpdmlzaW9ucw== 37601\nfScsCg== 37602\nIGRpbGRv 37603\nIHBhcmFkZQ== 37604\nbWFqb3I= 37605\nIGFib2FyZA== 37606\nOysr 37607\nIGZ1c2lvbg== 37608\nIn0seyI= 37609\nIERpYWxvZ1Jlc3VsdA== 37610\nCWFycg== 37611\nLWVt 37612\nX25y 37613\nKGhhbmRsZXI= 37614\nLk5FVA== 37615\nLlh0cmFSZXBvcnRz 37616\nIFNoYWg= 37617\nIEJyaWVm 37618\nLSw= 37619\nIHByZWNpbw== 37620\nCQkJICAgICAg 37621\nIHRhbnQ= 37622\nIEdyYW5kZQ== 37623\nL3htbA== 37624\nX0lDT04= 37625\nIFJldHJv 37626\ndW5xdWU= 37627\nIG5hZw== 37628\ndG9GaXhlZA== 37629\nWEw= 37630\nIGRlY2xhcmluZw== 37631\nIENvbmNyZXRl 37632\nIEFtYXppbmc= 37633\nCXByaW50aw== 37634\nIGRlYmF0ZXM= 37635\nREFURUQ= 37636\nIGFlc3RoZXRpYw== 37637\nZW1ldGVyeQ== 37638\nUm91dGluZ01vZHVsZQ== 37639\nIE5hc2h2aWxsZQ== 37640\nV0FZUw== 37641\nIHdvbGY= 37642\nIG9ic2VydmVycw== 37643\nT1RB 37644\nYW5zb24= 37645\nIGVh 37646\nIGdyZWVuaG91c2U= 37647\nk43kvZw= 37648\nIHN0YWly 37649\nIGltbWlncmFudA== 37650\nX2FwcGx5 37651\ncGVhcmU= 37652\nIEJsb29tYmVyZw== 37653\nX1BMQVlFUg== 37654\nUmVzcA== 37655\n5q2j 37656\nQ2hvb3Nlcg== 37657\nIElDb2xsZWN0aW9u 37658\nUGV0ZXI= 37659\nRXJybw== 37660\nLmRldGVjdENoYW5nZXM= 37661\nTWFwcw== 37662\nIHNxdWVlemU= 37663\nIEhvbWVz 37664\nd2VnaWFu 37665\nIGZvcm1hdHRpbmc= 37666\nIG5lZ290aWF0ZQ== 37667\ndWxk 37668\nIE5lcA== 37669\nIFFC 37670\nIGVjb25vbWllcw== 37671\nICovLA== 37672\nIHJlZHVuZA== 37673\nIEFiZXI= 37674\nLklzTnVsbE9yV2hpdGVTcGFjZQ== 37675\neWNsZWQ= 37676\nICAgICAgICAgICAgICAgICAgCg== 37677\nX1No 37678\nIHNrZXB0 37679\nIHJlY3JlYXRlZA== 37680\nIGdldFR5cGU= 37681\nIG1hcmdpbnM= 37682\nIGNvbG9uaWFs 37683\nY2hhcnRz 37684\nLy9A 37685\nIHByb2Nlc3NvcnM= 37686\n6K+0 37687\nYmF0aXM= 37688\n5oSP 37689\nYXRvcmlv 37690\nbWVudGlvbmVk 37691\nUGF0aWVudA== 37692\nIHByZXk= 37693\nQ2hlY2tib3g= 37694\nX3hwYXRo 37695\nLnNraXA= 37696\nIE1vcm1vbg== 37697\nIE1lbW9yeVN0cmVhbQ== 37698\nQ1JFTUVOVA== 37699\nIGt1 37700\nbWVsZA== 37701\nXERhdGE= 37702\nIEtlcm5lbA== 37703\naWx0cg== 37704\n6YCB 37705\nKHByb2ZpbGU= 37706\nQ2FyYm9u 37707\nUk9MRQ== 37708\nKHBs 37709\nXSoo 37710\nLm1lbW9yeQ== 37711\nIG1lZGFs 37712\nIGFkdmlzb3I= 37713\naXTDpHQ= 37714\nIGhkcg== 37715\naWVydW5n 37716\nIFByb3ZpZGVz 37717\nKGFscGhh 37718\nIHRlZW5hZ2Vycw== 37719\nLXBhcnNlcg== 37720\nLkxhdExuZw== 37721\nXSgpCg== 37722\nIGZlbG9ueQ== 37723\nCQkJCgkJCQo= 37724\nQk9PSw== 37725\nIHNsYXNo 37726\nIGNsZWFyZml4 37727\nIFByb3BoZXQ= 37728\n5a65 37729\ncmlnaHRuZXNz 37730\nLWZp 37731\nLmtpbmQ= 37732\nZXJ0b24= 37733\nSmlt 37734\nIG1hbmlwdWxhdGU= 37735\nIHdvcmtzaGVldA== 37736\nb2xpbg== 37737\nc3RhcnM= 37738\nIGFydGlmYWN0 37739\nX0VNUFRZ 37740\nCW1haW4= 37741\nLS0tLS0tLS0tLS0tLTwv 37742\nL3N0YXRpYw== 37743\nSVRJRVM= 37744\nIENvdW5zZWw= 37745\nIFdD 37746\nIEJMQUNL 37747\nLXN5c3RlbQ== 37748\nIFRyaXBsZQ== 37749\nLmJ0 37750\nc29mdHdhcmU= 37751\nXScpLg== 37752\nSW5qZWN0aW9u 37753\nX25vdGlmeQ== 37754\nIGZpZnRlZW4= 37755\nIGFtYmFzc2Fkb3I= 37756\nYnJlYWtpbmc= 37757\nVVJJQ29tcG9uZW50 37758\nIFByb3Rlc3Q= 37759\nLlJlc2V0 37760\nIE1Qcw== 37761\ndnJv 37762\nLmdldFN0YXR1cw== 37763\nX21vcmU= 37764\nY3Vw 37765\nIEtlbnlh 37766\n5bey 37767\nIGFtbXVuaXRpb24= 37768\n15XX 37769\nIERhc2g= 37770\nIHVuZGVyZ28= 37771\nIGJ1ZGR5 37772\n0YLQvtGA 37773\nZXRpY2FsbHk= 37774\nX091dA== 37775\nIEJyb2Fkd2F5 37776\nqow= 37777\nIEZpdHo= 37778\nIHN0cmlwcGVk 37779\nLWNhY2hl 37780\nIHVtYg== 37781\nIGFub20= 37782\nIHNpYmxpbmdz 37783\nb2N1bWVudGVk 37784\nSW50ZXJydXB0ZWRFeGNlcHRpb24= 37785\nIHBlbmc= 37786\nbHN0 37787\nX0FMSUdO 37788\nLWNhcA== 37789\nUkQ= 37790\nY2VsbHM= 37791\nIE1vdG9ycw== 37792\nIHRyYW5zbGF0aW9ucw== 37793\ndXN0ZXJpbmc= 37794\n6Zo= 37795\nIGxlYWtz 37796\nZmlsZVBhdGg= 37797\nIG91dGdvaW5n 37798\nX2VuZHBvaW50 37799\nX0dM 37800\nLmxpZmVyYXk= 37801\ncmljaHQ= 37802\nIE9wZW5HTA== 37803\nLmpwYQ== 37804\nIGFmZmVjdGlvbg== 37805\nZmx1eA== 37806\nIGdseQ== 37807\nIGJ1ZA== 37808\nPic7 37809\nIGV4cHJlc3Npbmc= 37810\nIElR 37811\nIEZhY3Q= 37812\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK 37813\nX21hc3M= 37814\nKSk6 37815\nIGNvbmRvbQ== 37816\nIGNyZWF0ZVN0YXRl 37817\nb21ldG93bg== 37818\nIGlycg== 37819\nID4o 37820\nPkI= 37821\naXRlcmF0aW9u 37822\n44Oq 37823\nIHNoaXJ0cw== 37824\nb3VudHk= 37825\nLT4k 37826\nX1NJR04= 37827\nIERhbGU= 37828\nIGpq 37829\nRWFzeQ== 37830\nRnJl 37831\nIE55 37832\nIGNobG9y 37833\nbWF0Y2hlZA== 37834\nIEdlcm0= 37835\nLVVB 37836\nIE5hdGhhbg== 37837\nZWR1Y2F0aW9u 37838\nLXlhcmQ= 37839\nLWNoZQ== 37840\naG91c2Vz 37841\ncml0aW9uYWw= 37842\nIHByb3hpbWl0eQ== 37843\nIGRpZXNlbQ== 37844\n4bqtcA== 37845\nIGRyb3VnaHQ= 37846\nLmF1ZGlv 37847\nIExlbw== 37848\nIGZhdm9yYWJsZQ== 37849\naW5jaA== 37850\nIERhdw== 37851\ncmlibHk= 37852\nX3N0dWRlbnQ= 37853\naWRhYmxl 37854\nT1ZF 37855\nIGxhY2tz 37856\nb3VuY2luZw== 37857\nLmJ1c2luZXNz 37858\nIHJlb3Blbg== 37859\nbWF5YmU= 37860\nX0dMT0JBTA== 37861\nIGRyZXNzZXM= 37862\nIEVkd2FyZHM= 37863\nZW5zaWJsZQ== 37864\nIEhhcmR3YXJl 37865\nIEV4Y2VsbGVudA== 37866\nIFRpbWVVbml0 37867\nQ1RJT05T 37868\nIHNjaGVkdWxlcw== 37869\nIHNlZ3Vl 37870\nT3BlbnM= 37871\nYW1tZW4= 37872\nLUlkZW50aWZpZXI= 37873\nIHN0YXJpbmc= 37874\nIGhhcHBpbHk= 37875\nIEhvYg== 37876\nJ18= 37877\nICIpOw== 37878\nYW1lbnRvcw== 37879\nZXRjaGVk 37880\nIC8+fQo= 37881\nLlVzZXJz 37882\nIGludGVycnVwdGVk 37883\nQ29udGFjdHM= 37884\nIHJlZ2lzdHJv 37885\naW5idXJnaA== 37886\nQ0hB 37887\nX2ltcA== 37888\ncGhpcw== 37889\nc2F5 37890\nIHJldGFpbGVy 37891\nLk5PREU= 37892\nL21hcHM= 37893\nX0xBU1Q= 37894\nIENoYXJnZQ== 37895\nX2d1YXJk 37896\nQ29sbGlkZXI= 37897\nIFN0YXRlbGVzc1dpZGdldA== 37898\nIjpbIg== 37899\nKCIuLi8uLi8= 37900\naW94aWRl 37901\nIFN1bmQ= 37902\nICcnOw== 37903\ndW5zZXQ= 37904\nYWRkV2lkZ2V0 37905\n0LvRjg== 37906\nZWxsZXM= 37907\nYWxrZXI= 37908\nQXJj 37909\nIGRlZHVjdA== 37910\nR1VJTGF5b3V0 37911\nIFZpbGxh 37912\nIGZvcmJpZGRlbg== 37913\nX3doZXJl 37914\nIFwv 37915\nIFRpYg== 37916\nX0FY 37917\nXQ0KDQo= 37918\nIEJpcg== 37919\nIGJlbmQ= 37920\nIE1BS0U= 37921\nIE1FVA== 37922\nIGZ1dHVyZXM= 37923\nIHdlaWdodGVk 37924\nIiIiDQo= 37925\nIGF1dGhvcml6ZQ== 37926\nKHByb2dyYW0= 37927\nfSx7Ig== 37928\nIGNvZWZmaWNpZW50cw== 37929\nw6pz 37930\nUGVyUGFnZQ== 37931\nIEJhdGhyb29t 37932\nIFB1Ymxpc2hpbmc= 37933\nR1BM 37934\nIHN1Ym1pc3Npb25z 37935\nIE5VTUJFUg== 37936\nasSF 37937\nIGFkZGl0aW9uYWxseQ== 37938\nZW1wcmU= 37939\nIFNoZWw= 37940\nb3R5cA== 37941\nU29sdXRpb24= 37942\nIHRodW5kZXI= 37943\nX2Vj 37944\nIAogICAgCg== 37945\nIEZlbGxvdw== 37946\nIGtheQ== 37947\nIG5ld1N0YXRl 37948\nT05UQUw= 37949\nSW1wbGVtZW50YXRpb24= 37950\nLkxvb2s= 37951\nIGVudHM= 37952\nIGxvcnM= 37953\nIEJJRw== 37954\nZmFi 37955\nIGF2ZXJhZ2Vk 37956\nIEZlZWRiYWNr 37957\nIFdlbGxz 37958\nIG1hcnRpYWw= 37959\nIGluZHVs 37960\nIENvbW11bmlzdA== 37961\nIEZvcmV4 37962\nIEFncmljdWx0dXJl 37963\nIls= 37964\nIHF1YXI= 37965\nIEtvbnQ= 37966\nCXZpZXc= 37967\nLkJ5dGVz 37968\nZGVza3RvcA== 37969\nIE1ha2Vz 37970\nYWtlc3BlYXJl 37971\nLk51bGxhYmxl 37972\nIHNwb3RsaWdodA== 37973\nVkI= 37974\nb3d5 37975\nKHRvcmNo 37976\ndHJpZGdl 37977\nX2JvdW5kcw== 37978\nIGFwb2xvZ2l6ZQ== 37979\nLmFkZEl0ZW0= 37980\nYW50ZA== 37981\nKik7Cg== 37982\nLHU= 37983\nKGdlbg== 37984\n57uT 37985\ncmVhdG9y 37986\nIENvcmQ= 37987\nb3VwcGVy 37988\nLm1ldHJv 37989\nIGV3 37990\nIFdPUkQ= 37991\nLkFmdGVy 37992\nIGRldGFpbmVk 37993\nIEhhbW1lcg== 37994\nZXhpc3Rpbmc= 37995\nIG9zdA== 37996\nIG1vbnVtZW50 37997\nLWN1c3RvbQ== 37998\nVXNlcklE 37999\nIE5vbQ== 38000\nIHJlamVjdGlvbg== 38001\nKGRpbQ== 38002\nIHNpbmdsZXRvbg== 38003\nCWRpZQ== 38004\nYXJpYW5jZQ== 38005\ncmVwb3J0cw== 38006\nXSE9 38007\nZWxkYQ== 38008\nIHByZXZhbGVuY2U= 38009\nX3JlZ3M= 38010\nLiIu 38011\nIGZlbWluaXN0 38012\nQ29kZWM= 38013\nICoqCg== 38014\nKGxhYmVscw== 38015\nX01BUks= 38016\nRkFJTEVE 38017\nIGFkbWluaXN0ZXJlZA== 38018\nV04= 38019\nICAgICAgICAJCQ== 38020\nIG5vdW4= 38021\nd2ln 38022\nIGdvdHRh 38023\nIHJpZg== 38024\nLWlt 38025\nIFBhdWxv 38026\nIENvbW1hbmRUeXBl 38027\nXSkpCgo= 38028\nLXplcm8= 38029\nVHJhaW5pbmc= 38030\nIGxvcmQ= 38031\nX2FydA== 38032\ncmVkZGl0 38033\nQ2VydA== 38034\nIHBlc28= 38035\nUm90 38036\nIGVuZGFuZ2Vy 38037\nLmRy 38038\ndXNlckluZm8= 38039\ndW50cw== 38040\nbnY= 38041\nIFRyYWlsZXI= 38042\nLWZpcnN0 38043\nKG1ha2U= 38044\nIGJlbmVmaWNp 38045\nLWJsYWNr 38046\nacOf 38047\nIHVuZG91YnRlZGx5 38048\nIG1leA== 38049\nIEFuY2llbnQ= 38050\nKGFz 38051\nIGRlc2NlbnQ= 38052\nUGljaw== 38053\nIHJlcGxpY2E= 38054\nJG9iag== 38055\nw6Rocg== 38056\nIGFycm93cw== 38057\nZnR5 38058\nIExpYnlh 38059\ndWdh 38060\nY2hhcmdlZA== 38061\nVHVy 38062\nIGhvbWlj 38063\naXNzZW4= 38064\nIEZha2U= 38065\nIGJlZXJz 38066\nIHNjYXR0ZXJlZA== 38067\nKFRpbWU= 38068\nVVRJTA== 38069\nIGJ1cmVhdWNy 38070\nL3BsYWlu 38071\nIHN0aWNraW5n 38072\nRkFJTA== 38073\nIENvdmlk 38074\nVGhpcmQ= 38075\nX3ByZXNlbnQ= 38076\nIFBpZXJyZQ== 38077\nIOuq 38078\nIFsuLi5dCgo= 38079\nUHJvYg== 38080\nIFRyYWZmaWM= 38081\naWNhbw== 38082\nZG9jdG9y 38083\nICksCgo= 38084\nVGFicw== 38085\nYWx1 38086\n77ya4oCc 38087\nIGluaGVyZW50 38088\nX05v 38089\ncml0aXM= 38090\nIFByb29m 38091\nLmJhc2VuYW1l 38092\n5Lya 38093\nIGNoaW0= 38094\nIFByb3RlY3RlZA== 38095\nY3JpdA== 38096\nIHByb25l 38097\nINC60L7QvQ== 38098\nIEhlcm9lcw== 38099\nIGFueGlvdXM= 38100\nIGFub3M= 38101\nIHdlZWtlbmRz 38102\nIHNleHQ= 38103\nIHJlZHVjZXI= 38104\nPVVURg== 38105\naGFsZg== 38106\nIFNhdw== 38107\nLm1t 38108\nIG51ZXZh 38109\nLmN1cnJlbnRUYXJnZXQ= 38110\nLmx1YQ== 38111\nX0VYVEVOU0lPTg== 38112\nCXJlZw== 38113\nIEN0cmw= 38114\nX2FsaWdu 38115\nYWNjZXB0YWJsZQ== 38116\nIHJ1c2hpbmc= 38117\nZnJhYw== 38118\nIGJvYXN0cw== 38119\nRml2ZQ== 38120\nwrE= 38121\nIFRlbXBlcmF0dXJl 38122\nPik6 38123\nIGNoYXJ0ZXI= 38124\nUkVBVEVE 38125\nIHN1YmplY3RlZA== 38126\nIG9wYw== 38127\naGVhbHRoeQ== 38128\n5L2/55So 38129\nIFNjaWVudGlmaWM= 38130\nIGZyYXU= 38131\ncmlhZ2Vz 38132\n4LiU 38133\nLmludmVudG9yeQ== 38134\nYXRpb25hbGU= 38135\nTWFk 38136\nbWludXRlcw== 38137\nPj4oKTsK 38138\nIEVudg== 38139\nIHJlY29yZGluZ3M= 38140\nIHN1c3BpY2lvbg== 38141\nc3FsaXRl 38142\nCXJlYWQ= 38143\n44Gm 38144\nIHdvcnJpZXM= 38145\nLnB1dFN0cmluZw== 38146\nIFNoYW5naGFp 38147\nKHVpZA== 38148\ncmVy 38149\nIHbDrWRl 38150\nIik6 38151\nIG1ldGhvZG9sb2d5 38152\nINC60L7RgtC+0YA= 38153\nY2Nj 38154\nYXZhZA== 38155\nIGluZHVjdGlvbg== 38156\nCVRocmVhZA== 38157\nLHN0cmluZw== 38158\n4bqhaQ== 38159\nbmVobWVu 38160\ndWl0aW9u 38161\nICpfXw== 38162\nLmVtZg== 38163\nIOyc 38164\nL3RoZW1lcw== 38165\nIE5pbmU= 38166\nLk9uZQ== 38167\nIEVtYmVk 38168\nIGZheg== 38169\ndWF0aW9ucw== 38170\nIHByaXZhdGVseQ== 38171\nIGxpbmc= 38172\nW0Y= 38173\ndXNoaQ== 38174\nIGxhdW5jaGVz 38175\nKEtFWQ== 38176\nR01U 38177\nIGFpbWluZw== 38178\ncGF0aWJsZQ== 38179\nIEJpZGVu 38180\naXc= 38181\nIERlZ3JlZQ== 38182\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 38183\nICQoJzw= 38184\nw6FyaW9z 38185\ndG9VcHBlckNhc2U= 38186\n7KCc 38187\nIEVVUg== 38188\nIG92ZXJzaWdodA== 38189\nIHRhYmxlc3A= 38190\nVXBkYXRlcw== 38191\nLm1ha2VkaXJz 38192\nIGh1bWlkaXR5 38193\nL3RlbXBsYXRl 38194\nQWx3YXlz 38195\nKElT 38196\nX2NlcnQ= 38197\nRGln 38198\nIHVuZGVyd2F5 38199\nb3J0b24= 38200\nIEh1cnJpY2FuZQ== 38201\nIHNwZW5kcw== 38202\nIFNlZ21lbnQ= 38203\nIGZsaWVz 38204\nIFRvZ2dsZQ== 38205\nIEx5bmNo 38206\nIHNlbnNlcw== 38207\nIEtvcw== 38208\nc2V0RW5hYmxlZA== 38209\naXN0aWNhbGx5 38210\nIHRlc3Rlcg== 38211\nIGFkbWluaXN0cmF0b3Jz 38212\nIHRhZ2dlZA== 38213\n0JM= 38214\nIHNob3J0Y3V0 38215\nIFJlc29sdXRpb24= 38216\nIHN1cGVydmlzaW9u 38217\nIEFzaGxleQ== 38218\nVHJhY2tpbmc= 38219\ndWxhdG9yeQ== 38220\nYW5kZWw= 38221\naXN0ZW4= 38222\nIHVucmU= 38223\nKGRpZmY= 38224\nQU5UUw== 38225\nIHJpZGVy 38226\nIHPEhQ== 38227\nLlNlcmllcw== 38228\nX29yZGVycw== 38229\nT1JJWk9OVEFM 38230\nIHJldGVudGlvbg== 38231\n44CCPC8= 38232\nLlRlc3Rz 38233\nU3lu 38234\nLnBhcnNlRG91Ymxl 38235\na29kZQ== 38236\nemVudA== 38237\nR2VuZXJhdGlvbg== 38238\nIGFkbWl0cw== 38239\nIExlYWs= 38240\nIGFrYQ== 38241\nUk9XUw== 38242\nIEFuZ2VsYQ== 38243\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 38244\nIG5vb24= 38245\nIHN0YXJr 38246\nIGRyYWdnZWQ= 38247\n44O844I= 38248\nIHJlY3ljbGVyVmlldw== 38249\nIFNpbGljb24= 38250\nX3N1ZmZpeA== 38251\nSm9u 38252\nY29jaw== 38253\nIFByb2JhYmx5 38254\nSW50cm9kdWN0aW9u 38255\nIFRlcnJvcg== 38256\nKFRoaXM= 38257\nIEJhc2ViYWxs 38258\nIGplbnRlcg== 38259\nY2hlc3RyYQ== 38260\nLm5hbg== 38261\nPWc= 38262\nIGNsYXJpZnk= 38263\neWlp 38264\ncm9vdHM= 38265\nIG5vdGVib29r 38266\nIEV4Y2VwdA== 38267\nIHJpc2Vz 38268\nIEJydXNzZWxz 38269\nYXRvcmllcw== 38270\nLlVTRVI= 38271\ncm9zc292ZXI= 38272\nL3VwbG9hZA== 38273\nIEV2ZW50dWFsbHk= 38274\nQ29uc2lkZXI= 38275\nIEJvdW5k 38276\nLmlkZW50aWZpZXI= 38277\nKHVuaXR0ZXN0 38278\nIGluZmVyaW9y 38279\nIGNyYw== 38280\nIGF1dGlzbQ== 38281\nVUlBbGVydA== 38282\nIEthdmFuYXVnaA== 38283\naW5lbWVudA== 38284\ncXVldWVSZXVzYWJsZQ== 38285\nU2tpbg== 38286\nLmJhY2tlbmQ= 38287\nLmdldFN0YXRl 38288\ndW5kaW5n 38289\nIHN1YmNsYXNz 38290\nIHJlZmluZWQ= 38291\nIGFubm95 38292\nIHJuZA== 38293\nRGlyZWN0b3I= 38294\nIOuC 38295\nYmVjY2E= 38296\nbW9uZ29kYg== 38297\nIENvbW1vbndlYWx0aA== 38298\nQXo= 38299\nIFRoaW5n 38300\nIHJlY29t 38301\ndW5pbmc= 38302\nCWNvbg== 38303\nCSAgICAK 38304\nZW1pY3M= 38305\nZWNk 38306\nIGhvcm55 38307\nQVRSSVg= 38308\nIG1pc2xlYWRpbmc= 38309\nIEJldw== 38310\nL25vZGU= 38311\nY3N0ZGlv 38312\n4Lin 38313\nIGFkZGl0aW9ucw== 38314\ncmly 38315\nX3JlcXVlc3Rz 38316\nIHJlY2hlcmNoZQ== 38317\nc3R1ZGVudHM= 38318\nX3Bvc2l0aW9ucw== 38319\nZXJ0ZXh0 38320\nIEV2b2x1dGlvbg== 38321\nYW5kZXo= 38322\nIGRpc3R1cmI= 38323\na2V5dXA= 38324\nIEJ1dGxlcg== 38325\nLnJlYWRsaW5lcw== 38326\nX3N0ZGlv 38327\nIGJlZQ== 38328\nIEFyY2hpdmVz 38329\nIG5ldmVydGhlbGVzcw== 38330\nVVJJVFk= 38331\nIGRyb25lcw== 38332\ndXJpdGllcw== 38333\nIOKYhQ== 38334\nIj4NCg0K 38335\nIGRpYWdvbmFs 38336\nIENhbmNlbGxhdGlvblRva2Vu 38337\nX0ludGVybmFs 38338\nIHJ1aW4= 38339\nLlF0 38340\nb2NyYXRpYw== 38341\nVGVs 38342\nIEFuc3dlcnM= 38343\nbWF0aWM= 38344\nIHhw 38345\nYXRlbQ== 38346\nX2pvYnM= 38347\nX2FueQ== 38348\nIHNlbmlvcnM= 38349\nIGxhbmRtYXJr 38350\nIFFMaXN0 38351\nIG1hbmV1 38352\nb3RpZnk= 38353\nLyI7Cg== 38354\nL3NlcnZlcg== 38355\nIFBoaWxvc29waA== 38356\ndXRlbmFudA== 38357\nKGlv 38358\naHo= 38359\nIGF1dGhlbnRpY2F0ZWQ= 38360\nZHY= 38361\nLUNvbXBhdGlibGU= 38362\nT3JpZ2luYWxseQ== 38363\nLGZ1bmN0aW9u 38364\n44CCDQo= 38365\nIFJlcHJlc2VudGF0aXZl 38366\nYXNpbHk= 38367\naXJjdWl0 38368\nLmR0 38369\nKG1hdGg= 38370\nLk1hcnNoYWw= 38371\nWyw= 38372\nIENpdGllcw== 38373\nX3R1cm4= 38374\nfCkK 38375\nIGNhbnRpZGFk 38376\nYWx0ZXI= 38377\nCXVp 38378\nIE5lYnJhc2th 38379\nIHNraXJ0 38380\nLmJn 38381\nU2hhcmVkUHJlZmVyZW5jZXM= 38382\nKHN0eWxl 38383\nIGdyaWVm 38384\nZ2V3 38385\nIHNhZmVn 38386\nb2xhbmc= 38387\nX2xpc3Rz 38388\n7Js= 38389\nIGdyYW5pdGU= 38390\nIGhvdHRlc3Q= 38391\nLmpkYmM= 38392\nLkN1c3RvbWVy 38393\nIOKJpA== 38394\nIHdhYXI= 38395\nX3NjZW5l 38396\nKycv 38397\nIEpUZXh0RmllbGQ= 38398\nIHNlYXRpbmc= 38399\nIHdlYXJz 38400\nIGAv 38401\nQ2FzZXM= 38402\nIFlvdXR1YmU= 38403\nxLFt 38404\nIGJhbGNvbg== 38405\nLEc= 38406\nTWV0YURhdGE= 38407\nLXByaWNl 38408\nU0NS 38409\nVW5pdHk= 38410\nIHRydW5r 38411\nPXtgJHs= 38412\nIGVhcnRocXVha2U= 38413\nUGFydGlhbA== 38414\nIHN1YnN0 38415\nIGVsaW1pbg== 38416\nPSInLg== 38417\nLy8qW0A= 38418\nIHN1cGVydmlzb3I= 38419\ndnJvbGV0 38420\nX2FydGljbGU= 38421\nIHBhbmU= 38422\nYmlv 38423\nIG1vdG9ycw== 38424\nTk0= 38425\nRnJhbms= 38426\nIG9uaW9u 38427\nLXdvcmQ= 38428\nSXRlbUNsaWNrTGlzdGVuZXI= 38429\nIGJyaXQ= 38430\nZW5kZW5jaWVz 38431\nQ29tcHV0ZXI= 38432\nX3J1bm5pbmc= 38433\nKGRheQ== 38434\nLWhl 38435\nKG5hbWVk 38436\nIFNhY2g= 38437\n0L7Rhw== 38438\nY2FtcGFpZ24= 38439\nLkFic3RyYWN0 38440\nKHdyYXBwZXI= 38441\nLnBheQ== 38442\nIHV3 38443\nR2Vv 38444\ncmFpbHM= 38445\nL3NlbGVjdA== 38446\naWNodGU= 38447\nc29ucw== 38448\nRVZFTlQ= 38449\nIGFsaW1lbnQ= 38450\nUHJvdmlkZXJz 38451\nQXdhaXQ= 38452\nX0lOVEVSVkFM 38453\nLm9mZg== 38454\nIGdsdXRlbg== 38455\nX2Nsb3Vk 38456\nIHdlbg== 38457\nLmV4dHJhY3Q= 38458\nCWJ1dHRvbg== 38459\nL01N 38460\nUGFydHk= 38461\nIGRlbW9ncmFwaGlj 38462\nX2Vycm5v 38463\nIGhpa2luZw== 38464\nKCcnKQo= 38465\nIixAIg== 38466\nIHdpdA== 38467\ncsOh 38468\nb2xvZ2ll 38469\nIFN0eWxlcw== 38470\nIEJyb3dzZXJNb2R1bGU= 38471\nLlJlcXVlc3RNYXBwaW5n 38472\naWNhbnM= 38473\nUEFHRQ== 38474\nY3JlYXRpb24= 38475\nIEZlcmd1c29u 38476\ndWRlZA== 38477\nbnVtYmVycw== 38478\nIEdUSw== 38479\nIHByZXNlbnRhdGlvbnM= 38480\nIEJvYmJ5 38481\nX3NwYW4= 38482\nZXN0eWxl 38483\nIGlsbGVnYWxseQ== 38484\nYWJlbGE= 38485\nIGJhdHRsZWZpZWxk 38486\nY2FwYWNpdHk= 38487\ndGVycm9y 38488\nXSIpOwo= 38489\nIHdhcnJpb3I= 38490\nbGVhZGVy 38491\nIERCRw== 38492\nIFJldmVudWU= 38493\nIHZpZ2ls 38494\nIGNvdW50ZXJwYXJ0cw== 38495\nKEVycm9y 38496\nQUNURVI= 38497\nIGhlZWZ0 38498\nIHNlbGVjdGlvbnM= 38499\nemV1Zw== 38500\ndG9t 38501\nLXR3bw== 38502\nLjsK 38503\nX3N0YXRlbWVudA== 38504\nIEFpZA== 38505\nIFZ1bA== 38506\nX3JnYg== 38507\nIHByaXplcw== 38508\nIGVkaXRhYmxl 38509\nCWZvcm0= 38510\nxLFuxLE= 38511\nLmRlY29y 38512\nRGVtbw== 38513\nbGljZXM= 38514\nIGVuY3R5cGU= 38515\ncmF0dWxhdGlvbnM= 38516\nIFJPUw== 38517\nX2NoYXJz 38518\nIEphaHI= 38519\ncGFydGlhbA== 38520\n0YPRgg== 38521\nIFJlY2VpdmU= 38522\nIExhbmRz 38523\nQVBURVI= 38524\nIGNob3BwZWQ= 38525\nLi4i 38526\nIEFuYWx5 38527\nIFVJRA== 38528\nIFJhZGVvbg== 38529\nIEJlZQ== 38530\nIHVubQ== 38531\nPk0= 38532\nLmZpbmRhbGw= 38533\nVG9rZW5pemVy 38534\nIFdIQVQ= 38535\nIHNq 38536\nRHJhd2luZw== 38537\nRXNz 38538\nT05E 38539\nirY= 38540\nKHBhY2tldA== 38541\n4oCUYnV0 38542\nSW52b2NhdGlvbg== 38543\nIE51Y2xlYXI= 38544\nPzsK 38545\nIGdyYW5kZXM= 38546\nIENyeXB0 38547\ncmVtYXJr 38548\nICcuLi8uLi8uLi8uLi8= 38549\nIGluYWJpbGl0eQ== 38550\nbWFnaWM= 38551\nY2F0cw== 38552\nIHNpbXVsYXRl 38553\nOiR7 38554\naW5mbGF0ZQ== 38555\nIGVuZXI= 38556\nOk5P 38557\naXBsZXM= 38558\nIG1lcml0 38559\nIFJhdGVk 38560\nIGdsdWU= 38561\nL2Jsb2c= 38562\nIGdyZW4= 38563\nIHRocmlsbGVk 38564\nLkNI 38565\ndW5jYW4= 38566\nIFBSSU1BUlk= 38567\nIHBlcnNlYw== 38568\nIGZlYXJlZA== 38569\nLk1JTg== 38570\nIFRoZWF0ZXI= 38571\n6ZI= 38572\nYXRlZ29yaWU= 38573\n5q61 38574\nIGFwcGV0aXRl 38575\nc3F1YXJl 38576\nIEFsZXhhbmQ= 38577\nLlVzZXJJZA== 38578\nX2d0 38579\nX2VudGVy 38580\nIGdyYWR1YXRlcw== 38581\nRnJhZ21lbnRNYW5hZ2Vy 38582\nQXV0aG9yaXpl 38583\nLU5MUw== 38584\nKE15 38585\nIHRyaXVtcGg= 38586\ndXN0aW5n 38587\nX1BBUkFNUw== 38588\nQ2hhcmFjdGVycw== 38589\nKDosOiw= 38590\nX0JVSUxE 38591\nTUh6 38592\nIHdhc2hlZA== 38593\nIHVuY2xl 38594\nU3RldmU= 38595\nYXJkb3du 38596\nPHN0ZGlv 38597\nX3Rlcm1z 38598\nIE1BUg== 38599\nIGhvc2U= 38600\ndWN1cw== 38601\nIENsYWlt 38602\nIFJhbXM= 38603\nIG1vZGVsQnVpbGRlcg== 38604\nIG7DqQ== 38605\ndXNlcklE 38606\nPWpzb24= 38607\nLlJlc3BvbnNlV3JpdGVy 38608\nmOiupA== 38609\nIGdydXBv 38610\nLWl0 38611\nIEtP 38612\nLU1haWw= 38613\nIGNvbmZlcmVuY2Vz 38614\nSUZB 38615\nIEFzc2Fk 38616\nIHByb25vdW5jZWQ= 38617\nIGFuY2VzdG9ycw== 38618\nIFRSQUNF 38619\nIEdlRm9yY2U= 38620\nIHByaXZhdA== 38621\ncGVsbA== 38622\nZW1vamk= 38623\nINmI 38624\nR2VucmU= 38625\nIGNvbmNlbnRyYXRlZA== 38626\namFuZw== 38627\nTU9URQ== 38628\nIFpvb20= 38629\ndG9vbGJhcg== 38630\nIHV0dGVybHk= 38631\nIGVuY29tcGFzcw== 38632\nIFNvY2Nlcg== 38633\nIGV1cm9wZQ== 38634\nLWFpcg== 38635\nLmFuaW0= 38636\nX0NUTA== 38637\naGVyZW50 38638\ncmV4 38639\naW50ZXJhY3RpdmU= 38640\n44Gn44GZ 38641\nIEthcw== 38642\nIGRlc3BlcmF0ZWx5 38643\nKGFy 38644\nIGJpaw== 38645\nIHRyYXZlcnNl 38646\nZXVycw== 38647\nUmVjeWNsZXJWaWV3 38648\nIE1hcmdhcmV0 38649\nIGhvcGVmdWw= 38650\nIE1pZw== 38651\nX01FTUJFUg== 38652\ncmVjZWl2ZXI= 38653\nTWF0Y2hlcg== 38654\nZGVwZW5kZW50 38655\nIGV4Y2VsbGVuY2U= 38656\n0LDQtg== 38657\nTE9T 38658\nQXNwZWN0 38659\nIGFkYWxhaA== 38660\nIEVjb25vbXk= 38661\ndWxvdXNseQ== 38662\nIGV2YWx1YXRpbmc= 38663\nIGRldmlhdGlvbg== 38664\nZXh0ZXI= 38665\nL2RhdA== 38666\nQ29scw== 38667\nIFBva2Vy 38668\nYm9hcmRpbmc= 38669\nLkNoaWxkcmVu 38670\nQU5HTEU= 38671\nw68= 38672\nIFlvZ2E= 38673\nIGhhdGVk 38674\nQWRhbQ== 38675\nIEZDQw== 38676\nSU1BTA== 38677\nIGZhaW50 38678\nX0RJU1BMQVk= 38679\nIGV2b2x2ZQ== 38680\nIGZyaWRnZQ== 38681\nIHLDqWc= 38682\nIGVtb3Rpb25hbGx5 38683\n4oCcSWY= 38684\nYXdlaQ== 38685\nZXJlc2E= 38686\nJywi 38687\nQkVHSU4= 38688\nIFZBUkNIQVI= 38689\nIHhp 38690\nZmFjdG9y 38691\ndHo= 38692\nX3BoYXNl 38693\nU0VR 38694\nKHJhbmQ= 38695\nIG1hdGhlbWF0aWNz 38696\nIGNvbnRleHRz 38697\nLWFj 38698\nIEZJRw== 38699\nIENhcHRpb24= 38700\nIFdhaXRGb3I= 38701\nLXdlc3Q= 38702\nIGZpcmVmaWdodA== 38703\nX0xFRA== 38704\nZWN0aW9ucw== 38705\nCXRocm93cw== 38706\nIFRha2Vz 38707\nb2JyZQ== 38708\nIEF2YXRhcg== 38709\nIElubm92YXRpb24= 38710\nIGNhbGlicmF0aW9u 38711\nOnRoaXM= 38712\nX2VuY29kaW5n 38713\nIGNhbGN1bGF0aW5n 38714\nICMjIyMjIyMjIyMjIyMjIyM= 38715\nIFByb2dyYW1z 38716\nIEhJR0g= 38717\nLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGU= 38718\nUG9seWdvbg== 38719\nX0RCRw== 38720\nIl0sDQo= 38721\n0LDQsQ== 38722\nIHNpbWlsYXJpdHk= 38723\nIHByemV6 38724\nIEZpcm0= 38725\nIG1pc3VuZGVy 38726\nIE1vdmluZw== 38727\nIE1PVg== 38728\nIHJlYWN0b3I= 38729\nUmVxdWVzdGVk 38730\nZXhwZWN0cw== 38731\nIGVyZWN0 38732\nbGljaHQ= 38733\nb3VsZGVy 38734\nSURHRVQ= 38735\nIGRldmls 38736\nIHByb2dyYW1tZXM= 38737\nIENvbW1vbk1vZHVsZQ== 38738\nICInIg== 38739\nKEF1dGg= 38740\n44CC77yM 38741\nIFN0YXRlZnVsV2lkZ2V0 38742\n6K6h 38743\nL29wZW4= 38744\naW5hbGx5 38745\nLlJvdW5k 38746\nIFdpc2g= 38747\nIGh1bWFuaXRhcmlhbg== 38748\nQWNjZXNzVG9rZW4= 38749\nIFNPQw== 38750\nIHBva2Vtb24= 38751\nIHZhcG9y 38752\nX2FkZGVk 38753\nCUdldA== 38754\nc3BlbGw= 38755\nIEluaXRpYXRpdmU= 38756\nIEhFTA== 38757\nYWlycm8= 38758\nYmxlZA== 38759\nINCx0Ys= 38760\nIHNlbnNpYmxl 38761\nIEx1YQ== 38762\nfCgK 38763\nIGZpeHR1cmVz 38764\nIG9yZ2FzbQ== 38765\nQ3V0 38766\ndWt0 38767\nZ3Vl 38768\nIGNyZWRpYmlsaXR5 38769\nOmltYWdl 38770\nIENQUA== 38771\nLnNu 38772\nKGRlc2M= 38773\nIFJlaWQ= 38774\nLWRlZ3JlZQ== 38775\nX3NvdW5k 38776\nQ2xvbmU= 38777\n4buZ 38778\nYWtzaQ== 38779\nPiR7 38780\nX2NvbmZpcm1hdGlvbg== 38781\nIHRyb3BoeQ== 38782\nV29ya3M= 38783\nIEVsZWN0cm9uaWNz 38784\nIE1lZGl0ZXJyYW5lYW4= 38785\nX21ldHJpY3M= 38786\nIGFubm91bmNpbmc= 38787\nIERBWQ== 38788\nX3Byb3Rv 38789\nIHBlYXI= 38790\nYmFzZVVybA== 38791\nCQkJCQkJCQkK 38792\nIGNvb3JkaW5hdGlvbg== 38793\nOk4= 38794\nLmFuaW1hdGU= 38795\nIENvdHRvbg== 38796\nX2hpdA== 38797\n4pw= 38798\nIGpldHp0 38799\naWZ0ZXI= 38800\nKGZpZWxkcw== 38801\nb3dubG9hZA== 38802\naWZpY2FjaW9u 38803\nLmN1ZGE= 38804\nIExpdQ== 38805\nPmVxdWFscw== 38806\nIEFjZQ== 38807\n0YDQsNC8 38808\nIFN1cGVybWFu 38809\nIEdhcmNpYQ== 38810\nIGFycmVzdHM= 38811\nYWdhcg== 38812\nIHt9KQ== 38813\nIG1hY3Jvcw== 38814\ncm91cGU= 38815\nw6p0cmU= 38816\nIHR3aXN0ZWQ= 38817\nc3RydW1lbnRz 38818\nXygi 38819\nX3ZlcnRpY2Vz 38820\nIFRyYW5zaXRpb24= 38821\n0LjQug== 38822\nW21heA== 38823\nbWluZA== 38824\nIGFjY2Vzc1Rva2Vu 38825\nIHVubGU= 38826\nbXVz 38827\nY29w 38828\nIEZhY3Rvcg== 38829\nIGNvbmNlZA== 38830\nIHJldHI= 38831\nLmxpbmFsZw== 38832\nLXNsaWRlcg== 38833\nb2Js 38834\nX1N0YXRpY0ZpZWxkcw== 38835\nIHpvbWJpZQ== 38836\nc2VsbGluZw== 38837\nIGNoYXA= 38838\nIHNoYWtpbmc= 38839\nIFRyYW5zbGF0ZQ== 38840\nIEFtc3RlcmRhbQ== 38841\nIEVUSA== 38842\nX0VYVEVSTg== 38843\na2Q= 38844\nX2Rpc2M= 38845\nIHByZWNlZGluZw== 38846\nIHByaXg= 38847\nT2JqZWN0TmFtZQ== 38848\nX21vZGlmaWVk 38849\nYXJkd2FyZQ== 38850\nID8+Ij4= 38851\nIERX 38852\nYCR7 38853\nID8+Ij48Pw== 38854\ndXllbg== 38855\nIGRvbm5h 38856\nIHhzaQ== 38857\nICQiew== 38858\nIERyYXdpbmc= 38859\nLG5pbA== 38860\nIG9uZGVy 38861\nQkc= 38862\nT2JzZXJ2 38863\nIGNvbnNpZGVyYXRpb25z 38864\nYm9hdA== 38865\nIEJhbmtz 38866\nIGluZGljdA== 38867\nLEk= 38868\nIEJsdQ== 38869\nKHZlcnNpb24= 38870\nY2xpZW50ZQ== 38871\nb2xhbg== 38872\nTEVTUw== 38873\nYXNzZXJ0U2FtZQ== 38874\nX3ZvaWQ= 38875\nIFdBUw== 38876\nCWVudW0= 38877\nIG1peGVy 38878\nRVc= 38879\nYWZmZQ== 38880\nIGJsb3dqb2I= 38881\ndGV4dEZpZWxk 38882\nIGltbWVuc2U= 38883\nX3JlcG8= 38884\nIGdsb2JhbHM= 38885\nYW50YWdlcw== 38886\nLnRvZGF5 38887\nVGh1cnNkYXk= 38888\nIEJyaWc= 38889\ne30pCg== 38890\nIEltYWdpbmU= 38891\nKEdQSU8= 38892\nIGVzdG8= 38893\nIFByb3ZpbmNl 38894\nIE1lbnRhbA== 38895\nX2NlbGxz 38896\nIEp1bGlhbg== 38897\nLlNjcmVlbg== 38898\nIGNhbmRsZQ== 38899\nIG1vbmRl 38900\nIHZlcmc= 38901\naXRlcmFscw== 38902\nLWxheW91dA== 38903\nR3Vlc3Q= 38904\nIHZpbmQ= 38905\nIEVjaG8= 38906\nJyl9 38907\nIG1hbm4= 38908\nX0JPT0xFQU4= 38909\naGFw 38910\nIG5pZ2h0bWFyZQ== 38911\nVUdI 38912\nIG5vbmV0aGVsZXNz 38913\nIGF0aGU= 38914\nIEhvbGxhbmQ= 38915\nIEJvcm4= 38916\nXE9STQ== 38917\nYW51dA== 38918\nX2xldmVscw== 38919\nIHBldGl0ZQ== 38920\nLWFydA== 38921\nX1NIT1c= 38922\nbnVtYmVyT2Y= 38923\nX3RodW1ibmFpbA== 38924\nYW1pbnM= 38925\nIERlZmluZXM= 38926\nICI9 38927\nLlN0YXR1c0NvZGU= 38928\nIGRpZ25pdHk= 38929\nIEJpa2U= 38930\nLk5ld0xpbmU= 38931\nIEdsYXM= 38932\nKGxvZ2dlcg== 38933\nIGNhdGNoZXM= 38934\ndm90ZXM= 38935\nIGV4YW1pbmluZw== 38936\nL3JlZ2lzdGVy 38937\nIHNwZWNpZnlpbmc= 38938\nX2ZpeGVk 38939\nIGRyYXdpbmdz 38940\nVGhyZXNob2xk 38941\nQXg= 38942\nIEFyY2hpdGVjdHVyZQ== 38943\nKHBpZA== 38944\nV2lyZQ== 38945\nKGNvbnQ= 38946\nbGFuZQ== 38947\nTGlzdHM= 38948\nIHNwcmludA== 38949\nIGdyYW5kZmF0aGVy 38950\nX0FH 38951\nIHNjaGVkdWxpbmc= 38952\nQ0xVUw== 38953\nYXR1cml0eQ== 38954\nIGxvY2tpbmc= 38955\nW3NpemU= 38956\nX3N0eWxlcw== 38957\nIHdi 38958\nLS0+Cgo= 38959\nIHNwaW5uaW5n 38960\nX3BlbmRpbmc= 38961\nTWF0Y2hlcnM= 38962\nLktleXM= 38963\nIFBW 38964\nZW51cw== 38965\nYW50aXM= 38966\nIGRpc2NhcmQ= 38967\nIGhhdWw= 38968\nIGVtcGly 38969\nIHBhdGh3YXk= 38970\nIG9haw== 38971\n0LzQtdC9 38972\nLWluZHVjZWQ= 38973\nIGltcGFpcg== 38974\nIENhbGdhcnk= 38975\nLmlzSGlkZGVu 38976\nZHo= 38977\nX2luY2x1ZGU= 38978\nIGdt 38979\nICcoJw== 38980\nUFk= 38981\ndWdnZXN0aW9ucw== 38982\nIGNvbW1vZGl0eQ== 38983\nY3Jv 38984\nL3N1Yg== 38985\nIGdldEluc3RhbmNl 38986\nIExlZ2FjeQ== 38987\nIEtpbA== 38988\nQmFs 38989\nKHNob3J0 38990\nSW5mb3Jt 38991\nK3g= 38992\nKnI= 38993\nIEhvcGVmdWxseQ== 38994\nb3JhdGU= 38995\nIG1hY2hlbg== 38996\nIHRyZWF0eQ== 38997\nIE9yaQ== 38998\nLnB1YmxpYw== 38999\nLWhvcml6b250YWw= 39000\nIHRhY3RpYw== 39001\nIGJvcmQ= 39002\nd2FyZXM= 39003\nIGFtbW8= 39004\nIExpc3Rz 39005\nIGVxdWF0aW9ucw== 39006\nL2hlcg== 39007\nIE5TVw== 39008\nQm91bmRpbmc= 39009\nX0NvbGxlY3Rpb25z 39010\nIGF2YWls 39011\nLkRyb3BEb3du 39012\n6LA= 39013\nIGho 39014\nIGzDoA== 39015\nLnBi 39016\nIG1lbW9yaWFs 39017\nIEFUVFI= 39018\nIGV4aGF1c3RlZA== 39019\nIHRzcA== 39020\nCXJlZGlyZWN0 39021\nIGxpa2V3aXNl 39022\nU1RFUg== 39023\nTGphdmE= 39024\nIGNvbmRlbW5lZA== 39025\nb2NhdXN0 39026\nKHN0cmljdA== 39027\nIGV4ZW1wdA== 39028\nIHNtcw== 39029\nIGV4YWdnZXI= 39030\nU1lT 39031\nIGxvdW5nZQ== 39032\nOl4= 39033\nIHRvZGQ= 39034\nZGVi 39035\nYXRvcmlhbA== 39036\nIFBvcnRlcg== 39037\nIHR1aXRpb24= 39038\nIGV4ZW1wbA== 39039\nIHBhcmVu 39040\nLmxpbmVUbw== 39041\nIGtpZG5leQ== 39042\nIMOnYQ== 39043\nIGN1aQ== 39044\n77yM6K+3 39045\nWEM= 39046\nIG1vxbw= 39047\nIG5vbWluYXRlZA== 39048\nbHVuZw== 39049\nSW1HdWk= 39050\nIEJ1eno= 39051\nIHN0ZXJlbw== 39052\ncG9ydGFs 39053\ncmVzYXM= 39054\nIGtsYXNz 39055\nIGRyYWZ0ZWQ= 39056\nIHByb2plY3RpbGU= 39057\nL2dwbA== 39058\nKHBhcmFtZXRlcnM= 39059\nKikK 39060\nIGFzc2lzdGVk 39061\nIE5TSW50ZWdlcg== 39062\nc2l0ZW1hcA== 39063\nOm50aA== 39064\nLlZpZXdz 39065\nLkFyZ3VtZW50UGFyc2Vy 39066\nIG1lZXI= 39067\nemllcg== 39068\nIERpZw== 39069\nPD89JA== 39070\nX3Blcm1pc3Npb24= 39071\nCUFkZA== 39072\nb2xvZ2lh 39073\nIHNjaQ== 39074\nIGZpbmFuY2lhbGx5 39075\nIHNjcm9sbGluZw== 39076\nLmRpc3Q= 39077\nX0hBUw== 39078\ndWJ1bnR1 39079\nLnBhZ2Vz 39080\nSW5jcmU= 39081\nYnVyc2U= 39082\nIEFtYXRldXI= 39083\n5rqQ 39084\nQmxvYg== 39085\nIGNob2xlc3Rlcm9s 39086\nREVT 39087\nbWluaW11bQ== 39088\nIHJlZnVzaW5n 39089\ndW5uZWQ= 39090\n0Jw= 39091\nIFJE 39092\nLlNlcnZsZXQ= 39093\nICovOwo= 39094\ndWRkZW4= 39095\nIHZpZXdCb3g= 39096\nIG1ldGFib2xpc20= 39097\nIHN0ZWFsaW5n 39098\nIEJldmVy 39099\nYWduZXRpYw== 39100\nVkVSUklERQ== 39101\nX0FVRElP 39102\n0YDRiw== 39103\nIGFyY2hpdmVz 39104\nLmxpbmVhcg== 39105\nPXs8 39106\ndW5jYXRlZA== 39107\nQWNjZXNzRXhjZXB0aW9u 39108\nIHBpY3R1cmVCb3g= 39109\nCXNlbGVjdA== 39110\nTGF0aXR1ZGU= 39111\ndmlzb3I= 39112\ncmVpYg== 39113\nIHBhaw== 39114\nSG9wZQ== 39115\nIEl0ZXJhYmxl 39116\nLnJlc3BvbnNlVGV4dA== 39117\nIFF1YWQ= 39118\nIEJyb29rcw== 39119\nIFRvdA== 39120\nT1BU 39121\nZWxvbmc= 39122\nIGNvY2FpbmU= 39123\nIGFubw== 39124\nRGFu 39125\nIHBzaQ== 39126\n0LDQu9GM 39127\nLmdldENoaWxk 39128\nIFJFRg== 39129\nLWFi 39130\nIFRyaWFuZ2xl 39131\nPFRleHQ= 39132\nIENvbG9tYmlh 39133\naW5reQ== 39134\n6Imy 39135\nKX0+Cg== 39136\nIHBsYWc= 39137\ncGluZQ== 39138\nIGJsYW5rZXQ= 39139\nIDo8Lw== 39140\nIFRyYW5zbGF0aW9u 39141\nbm92 39142\nIHBlcmZlY3Rpb24= 39143\nIENvbmZlZGVy 39144\nLnN0dWI= 39145\nLkludGVyb3BTZXJ2aWNlcw== 39146\nLlN0b3Jl 39147\nIGVucm9sbG1lbnQ= 39148\nIGRlZXI= 39149\nTW92ZW1lbnQ= 39150\nLWZyb20= 39151\naGM= 39152\nIGV2YW5nZWw= 39153\nIElsbHVzdHI= 39154\nIHRydW1w 39155\nX1N0YXJ0 39156\ncGxhbmVz 39157\nIEJpbA== 39158\nSW5mb3M= 39159\nLXRyYW5z 39160\nIHJhbmNo 39161\nIExpbmRh 39162\nX21hcg== 39163\nUkVU 39164\nL25ldA== 39165\nTGF3 39166\nTkY= 39167\nIFByZXZlbnQ= 39168\nIGNyaWVk 39169\nIGVkdWNhdGU= 39170\nYXN0aWNz 39171\neWk= 39172\nLkxpbmVhckxheW91dA== 39173\nTUVUSE9E 39174\nIEVn 39175\nbWFwcGVy 39176\n5pmC 39177\nLmFzYXJyYXk= 39178\nz4E= 39179\nacOnw6Nv 39180\nUmV1c2U= 39181\nX3Jldg== 39182\nIFBST0RVQ1Q= 39183\nX0NvZGU= 39184\nICAgICANCg== 39185\nIFNFUlZJQ0U= 39186\nX2NvdmVy 39187\nLiwK 39188\nLkV4ZWN1dGVSZWFkZXI= 39189\nIERpbmluZw== 39190\nLmFyY2g= 39191\nIG90cm8= 39192\nIERpc2NvdmVyeQ== 39193\nIEtleUVycm9y 39194\nIEJlbmVmaXRz 39195\nX1NIQQ== 39196\nLlVubWFyc2hhbA== 39197\nSEVBREVS 39198\nTXV0ZXg= 39199\nQU1B 39200\nIGluaXRpYXRl 39201\nU3RheQ== 39202\nTGl0dGxl 39203\nICgpLA== 39204\nIGRlY2VudHJhbA== 39205\nUmVzb2x1dGlvbg== 39206\nLmhlYWx0aA== 39207\nCWZjbG9zZQ== 39208\n5Lqk 39209\nIHN0YWtlaG9sZGVycw== 39210\nIGFyY2hhZQ== 39211\nRGlnaXRhbA== 39212\nbGVzY29wZQ== 39213\nX3Blbg== 39214\nIEl0ZW1TdGFjaw== 39215\nIENhbm9u 39216\nIEtlbmQ= 39217\nIMO4 39218\nX2FqYXg= 39219\naW5ncmVkaWVudHM= 39220\nRGVsaXZlcnk= 39221\nU2VjdGlvbnM= 39222\nIGRpc2FwcG9pbnRpbmc= 39223\nIEdyZW4= 39224\nLHJl 39225\nIGRlY3J5cHQ= 39226\nb2xvZ2lj 39227\nX2ZtdA== 39228\nIFNsaWRlcg== 39229\nbmFo 39230\nV2FzaGluZ3Rvbg== 39231\nenVuZw== 39232\nINGG 39233\neWN6 39234\naWV2ZXM= 39235\nLkRFQlVH 39236\nIFRJ 39237\nIGhhY2tpbmc= 39238\nIGNlbnRy 39239\nZmxvd3M= 39240\nIGRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n 39241\nIGFjY291bnRhYmlsaXR5 39242\nQ09VTlQ= 39243\n0LvQtdC80LXQvdGC 39244\nYmxv 39245\nL2lk 39246\nIFNsb3c= 39247\naXp6YXJk 39248\nLnJlbW92ZUV2ZW50TGlzdGVuZXI= 39249\nIOyehQ== 39250\nL0k= 39251\naXNtYQ== 39252\nIEh1ZHNvbg== 39253\nfX0s 39254\ndW1lZA== 39255\nIHJlYWxpc2U= 39256\ndW5zYWZl 39257\nIHp1cw== 39258\nIHNob3J0YWdl 39259\nb2xpYQ== 39260\nX3ByaW9yaXR5 39261\nIGZsb29kaW5n 39262\nb3BlcmF0aW9ucw== 39263\nUG9seQ== 39264\nYWJhbg== 39265\nW2N1cg== 39266\nIGVza29ydGU= 39267\nX0RFU0NSSVBUSU9O 39268\nX25hdA== 39269\nIG1hbGljaW91cw== 39270\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 39271\nIFBhcmtz 39272\nIHRheHBheWVy 39273\nIEZvc3Rlcg== 39274\nIHNleHVhbGl0eQ== 39275\n57O7 39276\n67A= 39277\nXA0K 39278\nLnNlZWs= 39279\n0LDQvdC40Y8= 39280\nL2FydGljbGU= 39281\n6L+H 39282\nIFVocg== 39283\nIGdyYW5kbW90aGVy 39284\nIEJsZQ== 39285\nZnVydA== 39286\nYW1iYWg= 39287\nbm90aWZpY2F0aW9ucw== 39288\nZGVwcmVjYXRlZA== 39289\nIHVpbnRwdHI= 39290\nb2tp 39291\nKEFycmF5 39292\nIGF1dG9ub21vdXM= 39293\nIG9icg== 39294\nwq/Crw== 39295\nIGJhc2VuYW1l 39296\nIHVudmVpbGVk 39297\nc29s 39298\nIE5vdEltcGxlbWVudGVkRXJyb3I= 39299\nIGRlcHJlc3M= 39300\nXycuJA== 39301\nIFVOSVQ= 39302\nJScs 39303\nLXRhZw== 39304\nZ3JlcA== 39305\nIE1haW50ZW5hbmNl 39306\nIHdhcmZhcmU= 39307\nX1JFU09VUkNF 39308\nKHNwZWM= 39309\nKGN2 39310\nIG5hZGE= 39311\n55S1 39312\nIGNyb3dkZWQ= 39313\nQmVsb3c= 39314\nIFphY2g= 39315\nRXN0YWRv 39316\nX3ByaW1l 39317\nIHRyYWJham8= 39318\nIGluZm9ybWF0aXZl 39319\nU2NvdHQ= 39320\nIHNlcmlhbGl6ZXJz 39321\nIE5hcw== 39322\nVGh1bms= 39323\nIG1lcmN5 39324\nLC4uLgoK 39325\nIGFkZGljdA== 39326\nLmNvbnN0YW50cw== 39327\nIGRhdGFmcmFtZQ== 39328\nX3JlYXNvbg== 39329\nZ29tZXJ5 39330\n7Iq164uI64uk 39331\nIG5lZ2xlY3Q= 39332\nIExpbmVz 39333\nIG1lbWI= 39334\nX0VYRUM= 39335\nYXNzYWdl 39336\nIFlhcmQ= 39337\ne30nLg== 39338\nIGxvdHRlcnk= 39339\ndGVpbg== 39340\nX2NhbGM= 39341\naWt1 39342\nX1JFQ09SRA== 39343\nV2Fybg== 39344\nIGhlYWx0aGllcg== 39345\ndXJlbWVudA== 39346\nIHlhcm4= 39347\nIENvcm5lcg== 39348\nKHppcA== 39349\nKGluaXQ= 39350\nIExpdA== 39351\nSFc= 39352\nc3Vic2V0 39353\nIE1G 39354\nRVRFUlM= 39355\nX3JvdA== 39356\nIGVyZQ== 39357\nIE92ZXJyaWRl 39358\nV2FsbGV0 39359\nX3Jld2FyZA== 39360\nIHNhZ2U= 39361\nc2V0VmlzaWJsZQ== 39362\nIEpzb25SZXNwb25zZQ== 39363\nSUNZ 39364\n6K+i 39365\nVmFyQ2hhcg== 39366\nYWF0 39367\nLWdyZWVu 39368\nIGlycQ== 39369\nYW5pdHk= 39370\nIHdob2V2ZXI= 39371\nX3NoYXJl 39372\nIGZvdXQ= 39373\ncm9sbHM= 39374\nIHdpbGxpbmduZXNz 39375\nLmNvbXBvbmVudEluc3RhbmNl 39376\nIGhvbm9yZWQ= 39377\ndXJ2ZXk= 39378\nQmVy 39379\nIHJ1bm5lcnM= 39380\nIGxpZXU= 39381\nb3Jwb3I= 39382\nX3N0cnVjdHVyZQ== 39383\nQmFyQnV0dG9uSXRlbQ== 39384\nYWR4 39385\nIEJlbm5ldHQ= 39386\nIGRpbGln 39387\nIGZsdWN0 39388\nSURERU4= 39389\nX1NlbGVjdGVk 39390\nKGRpdg== 39391\nIHF1aWNrZXI= 39392\nYWxvbmc= 39393\nZ3JhcGhxbA== 39394\naW5leg== 39395\nIGNpdGU= 39396\nIEluc3RydWN0aW9ucw== 39397\nIGluc2VydGluZw== 39398\nLmNsb3VkZmxhcmU= 39399\nY291cG9u 39400\nZWRMaXN0 39401\nIFN0b3Jlcw== 39402\nX21hbGxvYw== 39403\n56ym 39404\nIEF3ZXNvbWU= 39405\nIGxhbWI= 39406\nUkVTVA== 39407\nIGludGVzdA== 39408\nIE5hdmJhcg== 39409\nLmZlYXR1cmVz 39410\nSW5jcmVtZW50 39411\nIFBvbQ== 39412\nIGluc3VmZmljaWVudA== 39413\nX0xPR0lO 39414\nUExFTUVOVA== 39415\nIE9BdXRo 39416\nLklORk8= 39417\nIGV4b3RpYw== 39418\nIENBU0U= 39419\nCSAgCg== 39420\nIEdhbmQ= 39421\ndGhlc2Vz 39422\nIG5vdm8= 39423\nIERlbGw= 39424\n4oCm4oCm4oCm4oCm 39425\nX3NvZnQ= 39426\nIGFncmVlaW5n 39427\nY2VudHM= 39428\nbG9hbg== 39429\nJyIsCg== 39430\nIFJhbg== 39431\nREVM 39432\nIG9yZ2FuaXNlZA== 39433\nK24= 39434\nIEhlYWx0aGNhcmU= 39435\nIGRldGVyaW9y 39436\nIGltcGxlbWVudGF0aW9ucw== 39437\nIGNhcm4= 39438\nICwn 39439\nIExPQUQ= 39440\nIHBsYW50ZWQ= 39441\n5pyq 39442\nRm9ybUNvbnRyb2w= 39443\nX21hdGNoZXM= 39444\nIHBlcmlvZGlj 39445\nX1Rv 39446\nIEpvZWw= 39447\nIGFua2xl 39448\nIG1pbGl0YW50cw== 39449\nIFdpdGNo 39450\ndW5pZm9ybQ== 39451\ndWVudGE= 39452\nT2ZXZWVr 39453\nIHBlcnBldHI= 39454\nIGludGVydmVudGlvbnM= 39455\nKHdyaXRlcg== 39456\nYW50aW5l 39457\nUHJvZ3Jlc3NCYXI= 39458\nIGxlYWd1ZXM= 39459\nY29tcHJlc3M= 39460\naXppb25l 39461\nIEVB 39462\nIl09Ig== 39463\nIFN0ZXBoYW4= 39464\nbWludXM= 39465\nc3N0cmVhbQ== 39466\nX2xlZA== 39467\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 39468\nIldoZW4= 39469\nQWxyZWFkeQ== 39470\nIGNvbnRlbXBs 39471\nIGF0YXU= 39472\nIENvbmdyZXNzaW9uYWw= 39473\nIHJhcHBvcnQ= 39474\nIEJvdXI= 39475\naXNoaQ== 39476\nIHR5bQ== 39477\nIEFybWVu 39478\nINGA0LDQtw== 39479\nLWZvcm1hdA== 39480\nX1JlYWQ= 39481\nKGNvbHVtbnM= 39482\nIG5ldWU= 39483\nX2JveGVz 39484\nIFNhbmR5 39485\nXywK 39486\nIFdpemFyZA== 39487\nIG9yZGVu 39488\nIGZpbGVzeXN0ZW0= 39489\nZmxpZ2h0 39490\nIHdzeg== 39491\nYW5jZWxlZA== 39492\nIGRhd24= 39493\nIEdzb24= 39494\nX3dhcm5pbmc= 39495\nIEljZWxhbmQ= 39496\nIHNsdXQ= 39497\nIHNldElz 39498\nX2lkZW50 39499\nIG9mZnNob3Jl 39500\nIFNrZXRjaA== 39501\nOyU= 39502\nIHRyaWJlcw== 39503\nX1NQQUNF 39504\nIG90cm9z 39505\nQ29tcGlsZXI= 39506\nCUVuZA== 39507\nIF0pLAo= 39508\nR3Jhdml0eQ== 39509\nIHRlbnNpb25z 39510\nIHNtb290aGx5 39511\nS25vdw== 39512\nb290aGluZw== 39513\nIFN0YXJ0dXA= 39514\nIEh5cA== 39515\nIGFtYXpvbg== 39516\nIFJlY2VpdmVk 39517\nemVuaWU= 39518\n654= 39519\nIENob2NvbGF0ZQ== 39520\nIMSw 39521\nIk5v 39522\nIEFMUw== 39523\nIFByb2dyYW1taW5n 39524\nIERvZ3M= 39525\nIGdvb2RuZXNz 39526\nKGVycm5v 39527\nL2Vz 39528\nIHJlbW90ZWx5 39529\nIEhvb2tz 39530\nVXVpZA== 39531\nIG92ZXJseQ== 39532\nIOWQ 39533\nIGdwdQ== 39534\nIHN0aW11bHVz 39535\nKHN0ZXA= 39536\nLllvdQ== 39537\nIGJpb20= 39538\nSU5D 39539\nLmJpdHM= 39540\nKG1Db250ZXh0 39541\nIGFtZXJpY2Fu 39542\nIHRlcnJpdG9yaWVz 39543\nIE5E 39544\nXSIK 39545\nIE1hcHBpbmc= 39546\nIHByb2NlZWRpbmc= 39547\nLmF4 39548\nIHN1YnN0cmluZw== 39549\nQlVUVE9O 39550\nIEln 39551\nLXBhbmU= 39552\nIEFucw== 39553\nIGdyYWR1YXRpb24= 39554\nIHBlcnNwZWN0aXZlcw== 39555\nTWl4aW4= 39556\nX21pbnVz 39557\nCQkJCSAgICA= 39558\nIikpKQ== 39559\nbm9ybWFsaXplZA== 39560\nLmxhc3ROYW1l 39561\nIGNsYW4= 39562\nQXNpYQ== 39563\nKE1vdXNl 39564\ncGFnaW5hdGU= 39565\nIGdpZg== 39566\nZWxpZw== 39567\nIHBvc3RlcnM= 39568\nbmluZ3M= 39569\nIM+E 39570\nIGFwb3N0 39571\nIElocmU= 39572\nRGxsSW1wb3J0 39573\nIEVxdWFs 39574\nIGRpc3Rpbmd1aXNoZWQ= 39575\nbmVhcG9saXM= 39576\nIGJhY2tkcm9w 39577\nIEFsdGVybmF0aXZlbHk= 39578\nL21vZA== 39579\nIGxlbmQ= 39580\nIFNIT1c= 39581\nX2NvZGVz 39582\nIGF0w6k= 39583\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 39584\nLWNhc2U= 39585\nY2h0ZQ== 39586\nIGRvbmM= 39587\nOmFkZA== 39588\nTmVnYXRpdmU= 39589\nZmF2b3JpdGU= 39590\nIGF0dHJhY3Rpb25z 39591\naW50Q29sb3I= 39592\nIFBpcg== 39593\nQ29ubmVsbA== 39594\nTWFuaWZlc3Q= 39595\ndGVhbXM= 39596\nIH07CgoK 39597\nIHBsdXJhbA== 39598\nIG92ZXJ0aW1l 39599\nIEV1cm9wYQ== 39600\nIEJhbmdsYWRlc2g= 39601\nKGFu 39602\nIGxpbmd1 39603\naXRpbWU= 39604\naW5zdG9u 39605\nLnNoYWRvdw== 39606\n56iL 39607\nIFVTUw== 39608\nU2VydmVyRXJyb3I= 39609\nSVZFUlM= 39610\nIEppbg== 39611\nIGh1bWJsZQ== 39612\nYXV0b2xvYWQ= 39613\nYXJleg== 39614\n4oCy 39615\nIEFzdHI= 39616\naWNvbG9u 39617\nLlZpZXdNb2RlbHM= 39618\nb2Jv 39619\nIHN3aXBl 39620\nIHJlY2Vzc2lvbg== 39621\n6ZU= 39622\nIOyY 39623\nbmVyZw== 39624\naW5ncmVkaWVudA== 39625\nbWFpbHRv 39626\nIEZhbWU= 39627\nUHJpbnRpbmc= 39628\nUGl4ZWxz 39629\nIEJhc2g= 39630\ncG9zdGE= 39631\nX0pP 39632\nIGluZmFtb3Vz 39633\nIExhbmM= 39634\nKGxvY2FsU3RvcmFnZQ== 39635\nLmJsaXQ= 39636\nIHlvdW5nZXN0 39637\nIGZpZWxkTmFtZQ== 39638\nIGNvbnRpbmc= 39639\nIHdvb2w= 39640\nIEltR3Vp 39641\nIE5TVA== 39642\nLnByZWZpeA== 39643\nVG9JbnQ= 39644\nIFNveA== 39645\nIGhhYml0YXQ= 39646\nKCJ8 39647\nPSciKw== 39648\nSU5HVE9O 39649\nX3dyYXA= 39650\ndWNrZXRz 39651\nIFdSSVRF 39652\nIG1lZGljaW5lcw== 39653\nIG1lbWJyYW5l 39654\nIEpUZXh0 39655\nIHJlcHJvZHVjdGlvbg== 39656\nX3JlY2VpdmU= 39657\nVGFibGVSb3c= 39658\ncXVldWVSZXVzYWJsZUNlbGw= 39659\naG9va3M= 39660\nIHJlbHlpbmc= 39661\nIGRyaWxsaW5n 39662\nX0ls 39663\nKGV4Y2VwdGlvbg== 39664\nIGR1cmFiaWxpdHk= 39665\nIGhlc2l0YXRl 39666\nIGNvbXBhcnQ= 39667\nSUxJTkc= 39668\nIEVsZGVy 39669\nIGNhZmZl 39670\nIGRldmVsb3Bz 39671\naXNoZXI= 39672\nIHBseQ== 39673\nIHRvbA== 39674\nX1BMQVk= 39675\nIGZyaWN0aW9u 39676\nKGFsd2F5cw== 39677\nIGluZGlnZW5vdXM= 39678\nIE9wZXJh 39679\nIENhbXB1cw== 39680\nYW5jZW1lbnRz 39681\nIGxpdHRlcg== 39682\nLmxpbWl0 39683\nKFRva2Vu 39684\nZW5pcw== 39685\nIGhpZ2hsaWdodGluZw== 39686\nIEF1Yg== 39687\nIHZhbGlkYXRvcnM= 39688\nLWhvc3Q= 39689\nd2hlZWw= 39690\nPHs= 39691\nKSkr 39692\nIE5ld3NsZXR0ZXI= 39693\nX2F2ZXJhZ2U= 39694\nIHNvZGl1bQ== 39695\nIEhpbA== 39696\nIE1pbGU= 39697\nIEF1dGhTZXJ2aWNl 39698\nU3RhdGlzdGljcw== 39699\nIE51dHJpdGlvbg== 39700\nIHNwb25zb3Jz 39701\nb3ZlbmFudA== 39702\nPT09PT09PT09PT09PT0= 39703\nLkFic29sdXRl 39704\nIGbDpQ== 39705\nSGFuZGxpbmc= 39706\nIC0tLS0tLS0K 39707\nKGRpcmVjdG9yeQ== 39708\nIikuCg== 39709\nYW5vbA== 39710\nLmJyb3dzZXI= 39711\nIEdyaW5kaW5n 39712\nIGNr 39713\nRnJlcXVlbmN5 39714\nKClbJw== 39715\nQWRqdXN0 39716\nY3Jldw== 39717\nYWZldHk= 39718\nIGdu 39719\nIHdpdmVz 39720\nb29v 39721\nIHByb3N0aXR1 39722\nIG/DuQ== 39723\naWZ0eQ== 39724\nIGxpdGlnYXRpb24= 39725\nIEV6 39726\nSmVmZg== 39727\nLnBr 39728\nIFNob2Vz 39729\nY29ybg== 39730\neXl2c3A= 39731\nIGFkYXA= 39732\nPXU= 39733\nQ09ORg== 39734\nQU5EQVJE 39735\nIGVsZXZhdG9y 39736\nYmlsbGluZw== 39737\nIGNhbmQ= 39738\nIGNhcnA= 39739\nW2ZpZWxk 39740\nLWxpYg== 39741\nc2VxdWVudGx5 39742\nPi0= 39743\nIGxjZA== 39744\nLS0tLS0tLS0tLS0tLS0t 39745\nKCIi 39746\nIHRhY3RpY2Fs 39747\nIFJvbmFsZA== 39748\nZXh0cg== 39749\nIEZlc3Q= 39750\nIGZ1ZXI= 39751\nLW5hdmlnYXRpb24= 39752\nIGti 39753\nZ2hvc3Q= 39754\nIGhhbmRsZUNoYW5nZQ== 39755\nX2Nscw== 39756\nKCkhPQ== 39757\nQ29tcGFyYXRvcg== 39758\nLnZt 39759\nIENveA== 39760\nX3Jldmlldw== 39761\nL0A= 39762\nX2Nvb2tpZQ== 39763\nIHJlY29nbmlzZWQ= 39764\nbGRhcA== 39765\nVGhyZWFkcw== 39766\nIFNleHVhbA== 39767\nIEJlYXJpbmc= 39768\nKFNRTA== 39769\nIHhy 39770\nIHRoaWdo 39771\nVVJMQ29ubmVjdGlvbg== 39772\nIFNVVg== 39773\nIG1Db250ZXh0 39774\nIGluY2lkZW5jZQ== 39775\nIEVzdGU= 39776\nLnN1cA== 39777\nX3Rl 39778\nKEVYSVQ= 39779\nQ01E 39780\nLyI+ 39781\nQWxtb3N0 39782\nIFVuZQ== 39783\nIGFuZGVyZW4= 39784\nIFNpbmdsZXRvbg== 39785\nIGJvcmU= 39786\nVGhpbms= 39787\nIG5hcmM= 39788\nXWluaXRXaXRo 39789\nX3Nob3A= 39790\nKHN0cmF0ZWd5 39791\nIScs 39792\naGVyaXRz 39793\nIERlc2s= 39794\nX21hY2hpbmU= 39795\nLm5ldHR5 39796\nxLFuZGE= 39797\nPTw= 39798\nIFFS 39799\nIFNpZGViYXI= 39800\nLnNwbGl0Q29udGFpbmVy 39801\nIG9uU3VjY2Vzcw== 39802\nIG1vbmtleQ== 39803\nRW5qb3k= 39804\nKG5vZGVz 39805\ncGVjdHJ1bQ== 39806\nICgqKA== 39807\nCVVJTlQ= 39808\nLGhlaWdodA== 39809\nIE5ldHdvcmtz 39810\nLnRhaWw= 39811\nLmxpbnNwYWNl 39812\nICIuLi4= 39813\nTGlzdGVu 39814\nxqE= 39815\nLkNoYW5uZWw= 39816\nLWRlZmluZWQ= 39817\nUmVwZWF0 39818\nYWRqdXN0 39819\nRVJN 39820\nX2FwcGxpY2F0aW9u 39821\nLmFzc2VydE5vdE51bGw= 39822\nLXN0cmVhbQ== 39823\nIHJhYmJpdA== 39824\nIHBvc2l0aW9uaW5n 39825\nIHdva2U= 39826\nIGZpbmc= 39827\nIG11bHRpcGxheWVy 39828\nIHJlZ2lzdGVyaW5n 39829\ndW50aWw= 39830\nw6Vu 39831\nKDo6 39832\ndXNzaW9ucw== 39833\nIHBvdGF0bw== 39834\nIEVxdWFscw== 39835\nLlN1cA== 39836\nL2FwYWNoZQ== 39837\nICg9 39838\nLiIp 39839\nLnB0cg== 39840\nIFNwZWVjaA== 39841\nLmNsaXA= 39842\nIEdhYnJpZWw= 39843\nIG11c2ljaWFu 39844\nL2lzc3Vlcw== 39845\nLnNob3A= 39846\nIEhpZXI= 39847\nX1JFVA== 39848\nX2J1Y2tldA== 39849\n44Oh 39850\nYXZz 39851\nIHJveg== 39852\nZmxvd2Vy 39853\nV3JpdGVCYXJyaWVy 39854\nIE1pbGFu 39855\nIGxlZ2lzbGF0dXJl 39856\nIERvbGw= 39857\nIHByb3Zpbmc= 39858\nLmNvbmNhdGVuYXRl 39859\n4pWQ 39860\nIGdjaGFy 39861\nY2RuanM= 39862\nYmxlcw== 39863\nIExpc3Rpbmc= 39864\n0LvQvg== 39865\nLnhyTGFiZWw= 39866\nIFNhaw== 39867\nanVzdGljZQ== 39868\nIFZhbGVudGluZQ== 39869\ndW5sZXNz 39870\nIHBpZ2Vy 39871\nKHJ1bg== 39872\nIHRlc3RpZmllZA== 39873\nQU5B 39874\nIFJlbW92ZXM= 39875\nKSkpKTsK 39876\ncmVjYXRlZA== 39877\nIFJ1bnRpbWVNZXRob2Q= 39878\nIGNvbnF1 39879\n44Ki 39880\nIHRpc3N1ZXM= 39881\nYWlsZXI= 39882\nw6l0w6k= 39883\nLVN0YXI= 39884\nIGZsYW1lcw== 39885\nLnNldEljb24= 39886\nIHN1cGVybg== 39887\nIHZhZ2luYQ== 39888\nLXZhcmlhYmxl 39889\nIHdlbGxuZXNz 39890\nQ1VS 39891\nIGJlbGxl 39892\nLmdldFJlcXVlc3Q= 39893\nIHBvY28= 39894\nYmVuaA== 39895\nYWdlbnM= 39896\nIHNwaWxs 39897\nIEp1cg== 39898\nIGRpc3BhdGNoZXI= 39899\n0L3QvtCz0L4= 39900\nZW1vbmlj 39901\nKGRpcm5hbWU= 39902\nINCU 39903\nIHBhc3Nl 39904\nIGdhbno= 39905\ncmljaW5n 39906\nRVU= 39907\nIG11amVyZXM= 39908\nZXNzZW4= 39909\nLmF0dHJpYnV0ZQ== 39910\namo= 39911\nCQkgCg== 39912\nW14= 39913\nIHN0cnRvbG93ZXI= 39914\nbGV4ZXI= 39915\nZWN0YXI= 39916\naG90ZWw= 39917\nLnNxdWFyZQ== 39918\nIHJhbGw= 39919\nIGxvd2VyZWQ= 39920\naGFuZGxlZA== 39921\nTWFya2V0 39922\nIFVzZXM= 39923\naXZhcw== 39924\nLkJ1c2luZXNz 39925\n44GX44Gm 39926\nRElW 39927\nIHdhc3RlZA== 39928\nIGF2b2ly 39929\nw6pt 39930\nX0FDQ09VTlQ= 39931\nLmV0 39932\nCVNETA== 39933\na2Fw 39934\nIGZveA== 39935\ndXBwZXQ= 39936\ne30sCg== 39937\nIiwn 39938\nRmF2b3JpdGU= 39939\nUEVORA== 39940\nIEFFUw== 39941\nfSks 39942\nIGRlZHVjdGlvbg== 39943\nIHBvbMOtdA== 39944\nIGNvbXBvbmVudFdpbGw= 39945\nIFRlbGVyaWs= 39946\nX1NFTEY= 39947\nIG11c2U= 39948\nQ3JhZnQ= 39949\nIGRlbnM= 39950\n4KS/ 39951\nKHRw 39952\nIHRhc3R5 39953\nIGJhbGFuY2Vz 39954\nIGRlZGljYXRpb24= 39955\nIFdhbGxhY2U= 39956\nIHVubGF3 39957\nXCI+XA== 39958\nIG11bQ== 39959\nLXVwZGF0ZQ== 39960\nZW1lbnRl 39961\nIHNvZGE= 39962\nUmVwdWJsaWM= 39963\nYXNtaW5l 39964\nw6lyaWM= 39965\nKFN0YXR1cw== 39966\nIEpzb25Db252ZXJ0 39967\nIERpc2s= 39968\nLlJlZGlyZWN0 39969\nIGZpbG1pbmc= 39970\nL21vbA== 39971\nUm8= 39972\nIHZpbGxl 39973\nIHRyYWJhag== 39974\nIHN5bnRoZXNpcw== 39975\ncmVnYQ== 39976\nIHJs 39977\nU2NoZWR1bGVy 39978\nSVNIRUQ= 39979\nY3VycmVudFVzZXI= 39980\nKGVycm9ycw== 39981\nJ2g= 39982\nX2JvdA== 39983\neGltbw== 39984\nIFVTQVJU 39985\nX3N1cGVy 39986\nX0RFQ1JFRg== 39987\n0L3QvtC5 39988\nX1JPVw== 39989\nIHByb21vdGVz 39990\nIFRB 39991\nIGhvcmFz 39992\nIFJlcHJlc2VudHM= 39993\nIG5hbWVvZg== 39994\nIEV4Yw== 39995\nIEdhcmFnZQ== 39996\nIHNlaW5l 39997\nLCM= 39998\nIGhlcmI= 39999\nL3Jlc291cmNlcw== 40000\nIHBsZWFkZWQ= 40001\nLnJhZGlvQnV0dG9u 40002\nIOaY 40003\nT3Bz 40004\nIE5lc3Q= 40005\nY3N0cmluZw== 40006\nIERlZmVuY2U= 40007\nIHJlZmVyZQ== 40008\nX2xlYWY= 40009\nIHJldmVsYXRpb24= 40010\n66c= 40011\nLmV4ZWN1dGVVcGRhdGU= 40012\nX1dPUkxE 40013\nIGV4cGFucw== 40014\nKCJcIg== 40015\namFi 40016\nIGRvdWJ0cw== 40017\nIEdlb21ldHJ5 40018\nIGludHJvZHVjZXM= 40019\nIHNlbmF0b3Jz 40020\nIGNhbmFs 40021\nLmhlbHBlcg== 40022\nIEJpb2xvZ3k= 40023\nX1NFTlM= 40024\nLnByZXZpb3Vz 40025\nLXRvdWNo 40026\nYWJpdA== 40027\nIGltcGFjdGVk 40028\nIGJyYWNrZXRz 40029\nLmRpcmVjdA== 40030\nYWNjdW0= 40031\nIHRlc3Rvc3Rlcm9uZQ== 40032\nCWFjdGlvbg== 40033\nIENoYW5jZQ== 40034\nIHBlYWtz 40035\nQ3BwQ29kZUdlbldyaXRlQmFycmllcg== 40036\nIHVuYmVsaWU= 40037\nX3ByZXNz 40038\nLlJlbA== 40039\nYW5nbGVk 40040\nL3RlbXBsYXRlcw== 40041\nLS0+DQo= 40042\nbGltZQ== 40043\nIHN1ZmZpY2llbnRseQ== 40044\nX250 40045\nRXhwYW5k 40046\nLmlzZmlsZQ== 40047\nIGlzRW1wdHk= 40048\nIHF0 40049\nIG11bGhlcg== 40050\nYWNvYg== 40051\nR2Vvcmdl 40052\n5bi4 40053\nIGFzc2lt 40054\nYXNv 40055\nIGNvbXByaXNlZA== 40056\nT1Y= 40057\nKENPTkZJRw== 40058\nCXdyaXRlcg== 40059\nIGRlc3A= 40060\nIHRlbnVyZQ== 40061\nKGNy 40062\nLnBvb2w= 40063\nIEJyZW5k 40064\nIGNlbnNvcg== 40065\nKHRpbWVvdXQ= 40066\nIHBsZWE= 40067\nLldyYXA= 40068\nIHRpZ2h0bHk= 40069\nIFdlcmU= 40070\nIElnbm9yZQ== 40071\nYWJlaQ== 40072\nIGJyaWRnZXM= 40073\nIGNvbmRlbW4= 40074\nIHNpbXBsaWNpdHk= 40075\nIHJvdXRpbmVseQ== 40076\nIGJsYWNrcw== 40077\namI= 40078\nIFBpdA== 40079\nVXRm 40080\nIC8K 40081\ncmVsb2Fk 40082\nIHNldE9iamVjdA== 40083\nL2dsb2JhbA== 40084\nIGZhdHR5 40085\nIHNvY2tz 40086\nQ291bGRu 40087\nIGVyb3Rpc2s= 40088\n5p2h 40089\nIFByZXNzdXJl 40090\nIE1heg== 40091\nbnBvcw== 40092\ndG9sb3dlcg== 40093\nIEVR 40094\ndXRldXI= 40095\nIE1vbWVudA== 40096\nIGV0YQ== 40097\ne3stLQ== 40098\nIGdyYXBocw== 40099\nIEd1YXI= 40100\ncmluZQ== 40101\nKC0t 40102\nIEh0dHBTdGF0dXM= 40103\nKHN0dWRlbnQ= 40104\nKm5w 40105\nIHJhaWx3YXk= 40106\nIGFzeW5jaHJvbm91cw== 40107\nX3Zt 40108\nJ10sJw== 40109\nLHRleHQ= 40110\nbWVyY2hhbnQ= 40111\nKEd1aWQ= 40112\nIEdyYQ== 40113\naXhlcg== 40114\nZmV0Y2hBbGw= 40115\nLmFkZExpc3RlbmVy 40116\nZmxpcA== 40117\nKiQ= 40118\nPigpLA== 40119\nIHN1bmxpZ2h0 40120\nYXNzaWduZWQ= 40121\nIGFiYw== 40122\nIENPTFVNTg== 40123\nIPCfmYIKCg== 40124\nKS4uLg== 40125\nIGVuc2VtYmxl 40126\nIG5ld2xpbmU= 40127\nX1NJTkdMRQ== 40128\naWVkYWQ= 40129\nIGRhcmtlcg== 40130\nb3JtYXA= 40131\nIGxpb24= 40132\ncGxpdHM= 40133\nIGlsbHVzdHJhdGlvbg== 40134\nIElFRUU= 40135\nIHZpc3Rh 40136\nb3VzYW5kcw== 40137\nKioqKioqKg== 40138\nIFRvbW15 40139\nIGh1ZQ== 40140\nU2Vs 40141\nIGF1cmE= 40142\nIFRoZXJhcHk= 40143\nIGFuaW1hdG9y 40144\nLmNvbnN0cmFpbnRz 40145\nIHZhZ3Vl 40146\nKCIiKQ== 40147\nIHZpbGxhaW4= 40148\nIGJsZXNzaW5n 40149\nIHN0cmluZ0J1aWxkZXI= 40150\nIE1pc2M= 40151\nIERJUg== 40152\nZmF4 40153\nLW5vZGU= 40154\nIFdhbGtpbmc= 40155\nIEFV 40156\nc2Vzcw== 40157\nIGdyaWxs 40158\nVkVSVElTRQ== 40159\nIEZvb2Rz 40160\nIHRvdXJuYW1lbnRz 40161\nw5M= 40162\nIE1hcnNo 40163\nIHdvbmRlcnM= 40164\nTG9uZ2l0dWRl 40165\nLkNvbW1hbmRUZXh0 40166\nPWlucHV0 40167\nX2VuY29kZXI= 40168\ncGFnZVNpemU= 40169\nIGdldFN0YXRl 40170\nPj4K 40171\nLmdyZXk= 40172\ncG9k 40173\nIHJlYWRpbmdz 40174\nIHJlY29uc2lkZXI= 40175\nU3RhcnR1cA== 40176\nIGV4Y2Vy 40177\nLmJhbGFuY2U= 40178\nX2N5Y2xl 40179\nX1RpbWU= 40180\nTE9DQUw= 40181\nIEVGSQ== 40182\nIFJleW4= 40183\nLnNldEZvcmVncm91bmQ= 40184\nYnlu 40185\nIGRpc2Nvbm5lY3RlZA== 40186\nQUNUSVZF 40187\nIGVtYmVkZGluZw== 40188\naWNrZXJz 40189\nIHN1cnJvdW5kaW5ncw== 40190\nKmM= 40191\nIGdhcmFudA== 40192\nIGJm 40193\nIHdpcGU= 40194\nIOS4iw== 40195\nX1RSQQ== 40196\nYWRveA== 40197\n55U= 40198\nIHN1Y2tz 40199\nIFNvbmdz 40200\nIEFzc29jaWF0ZXM= 40201\nIEJhbGQ= 40202\nIEJyZXR0 40203\ndmVuaWxl 40204\nIHZ0 40205\nIGluYWRl 40206\nIHJlc2lnbmVk 40207\nIEdsZW5u 40208\nLnBhdHRlcm4= 40209\nLkRhdGFCaW5k 40210\n0YPQvA== 40211\nTGF5b3V0SW5mbGF0ZXI= 40212\nY2hldA== 40213\nIFRlc3RhbWVudA== 40214\nLm1z 40215\nIHBhdg== 40216\nIFJlYWN0RE9N 40217\ndXJkeQ== 40218\nQURBVEE= 40219\nTXU= 40220\nL2FjdGlvbnM= 40221\nIEpz 40222\nX2V4dHJhY3Q= 40223\nIEJyaW5n 40224\nOmlk 40225\nc3RydA== 40226\naXZhdGlvbg== 40227\nIG91dHJpZ2h0 40228\nYXp1 40229\nbG95bWVudA== 40230\n0LjRjw== 40231\nYWxkbw== 40232\nIFB1Ymxpc2hlcg== 40233\nRWR1Y2F0aW9u 40234\nUGFsZXR0ZQ== 40235\nX2Rydg== 40236\nICgkKA== 40237\nIEFuZGE= 40238\nIHJlbWVkeQ== 40239\nIGluY29uc2lzdGVudA== 40240\ndGVjdGlvbg== 40241\nIHJlZ3VsYXRvcnM= 40242\nIHNob3J0ZXN0 40243\nKHBhaXI= 40244\nIEluc3RhbGxhdGlvbg== 40245\nIGRlZmVuZGFudHM= 40246\nICgpOw== 40247\nLWxhcmdl 40248\nTWVs 40249\nIHRocmVhdGVu 40250\n0L3Rjw== 40251\nIGZldGlzaA== 40252\nb3RpbmU= 40253\nX2RpYw== 40254\nIDwk 40255\nIHN0YWdnZXI= 40256\nc3Bp 40257\nJHJlc3BvbnNl 40258\nU2Vydg== 40259\nLWJvcm4= 40260\nam9z 40261\nCWltZw== 40262\nCVdIRVJF 40263\nX2x0 40264\n5b2T 40265\nLmNvc3Q= 40266\nIFR1ZQ== 40267\nLmxhYmVscw== 40268\nIExW 40269\nd2Nzc3RvcmU= 40270\nIEplc3Nl 40271\n4Lir 40272\nVHJhZGU= 40273\nIHByZWRlY2Vzc29y 40274\n64I= 40275\nZmluYWxseQ== 40276\nX2dlbmVyYWw= 40277\nb2dnbGVy 40278\nX1JFR0lPTg== 40279\nbmVtZW50 40280\nIGJsb2dnZXI= 40281\nIEhhcmJvcg== 40282\nIERhdGFzZXQ= 40283\nW3c= 40284\nIGF0dGVuZGVlcw== 40285\nLmljbw== 40286\nbWF4aW11bQ== 40287\nLlVubG9jaw== 40288\nX1NZTkM= 40289\nw6FnaW5h 40290\nIGRvd25z 40291\nIFdpaQ== 40292\nXSkv 40293\nIGtpY2tpbmc= 40294\ndW5pY2F0aW9u 40295\nIERBQw== 40296\nIElEUw== 40297\nIFJlbnRhbA== 40298\nIGN1cnJlbnRUaW1l 40299\nIHZhY2NpbmVz 40300\nIERldmls 40301\nIG5vcnM= 40302\nX21vdXNl 40303\ndXJyZWN0aW9u 40304\nKG5v 40305\nID4NCg== 40306\nIGFnZ3Jlc3Npb24= 40307\nIGJyZWVkaW5n 40308\nLnN5bWJvbA== 40309\naW1hbg== 40310\nQWJzb2x1dGVQYXRo 40311\nIFdITw== 40312\nX2ZsdXNo 40313\nLXJvb3Q= 40314\nYXJuYQ== 40315\nJk0= 40316\nIGZhdGhlcnM= 40317\nIFJvY2tldA== 40318\naXZlYXU= 40319\nIHdhbmRlcg== 40320\nIGNvbXBvcw== 40321\nIFdhcnJpb3I= 40322\nIFNlYXQ= 40323\nIENsaW5pYw== 40324\nX2ludm9pY2U= 40325\nKGRpc3BhdGNo 40326\nUHJvZHVjdG8= 40327\nYXR1cmluZw== 40328\nb3NzaWVy 40329\nIE1BWQ== 40330\nIGRhZ2dlcg== 40331\nIHNhbml0aXplZA== 40332\nIFJGQw== 40333\nIHByb3Bo 40334\nIHVyaW5l 40335\nIGdyaW5k 40336\nIEV4cGFuZGVk 40337\nZGVzY3JpcGNpb24= 40338\nLWZ3 40339\nIEtlcnJ5 40340\nPW5hbWU= 40341\nIGNoaw== 40342\nIG5hdGlvbmFsbHk= 40343\nIHRoZWU= 40344\nSW5j 40345\nID8+Pg== 40346\nLlJhZGlvQnV0dG9u 40347\nLkh0dHBTZXJ2bGV0UmVzcG9uc2U= 40348\nL1k= 40349\nCWZpZWxk 40350\nIGhvbW1l 40351\neXBlcg== 40352\nUGh5c2ljYWw= 40353\nPXY= 40354\nIGRyaXY= 40355\nIEVycm9ycw== 40356\nIGPEgw== 40357\nRGVhdGg= 40358\nIFdJTkRPVw== 40359\nIHBvZXQ= 40360\nIFNoYXJw 40361\nIEltbXV0YWJsZQ== 40362\nCWNyZWF0ZQ== 40363\nIGdlaHQ= 40364\nIFJlZm9ybQ== 40365\nYWlzZXI= 40366\nIEluaXRpYWxpemF0aW9u 40367\nIGltbXVuaXR5 40368\nLmNvbXBvc2U= 40369\nIGxhdGVuY3k= 40370\nIExlYmFub24= 40371\nIFBhcmFk 40372\nIGZ1ZWxz 40373\nIEV4aGli 40374\nY29o 40375\nJSI+Cg== 40376\nIENMSQ== 40377\nKWluaXRXaXRo 40378\nLVph 40379\nX0NMRUFS 40380\ncmVnbg== 40381\nIGZpbmFuY2Vz 40382\nLnN0YW5kYXJk 40383\nX0NBVEVHT1JZ 40384\nLmxpYnJhcnk= 40385\nIHRyYXZlbGVycw== 40386\nX3dw 40387\nIEV2YWx1YXRpb24= 40388\nc3RhcnRpbmc= 40389\nICkpLAo= 40390\nZXBpc29kZQ== 40391\nIFZhcmlhbnQ= 40392\nIGRhZW1vbg== 40393\nIEp1bGlh 40394\nIE5S 40395\nIGRvdWJsZXM= 40396\nPHY= 40397\nL3J1bnRpbWU= 40398\nIGludGVycHJldGVy 40399\nIElOREVY 40400\nIEhvbG1lcw== 40401\nX0RJTQ== 40402\nIHBhZGRsZQ== 40403\nX2V4YW1wbGU= 40404\nIGZvcmVncm91bmQ= 40405\nLnJvdXRlcw== 40406\nIHNvd2ll 40407\nU1VDQ0VTUw== 40408\nIENEQw== 40409\nIEJE 40410\nXy0= 40411\nYXN1cmVk 40412\nV3JpdGluZw== 40413\nIGN1cnJlbnRQYWdl 40414\nKGFuc3dlcg== 40415\nIEFTQ0lJ 40416\n4Kg= 40417\nIHNvY2lhbGx5 40418\neXl5 40419\nIFNwZWNpYWxpc3Q= 40420\nKGN1c3RvbWVy 40421\naXN0YW5p 40422\na2VzdA== 40423\nIE1haw== 40424\nIHRobw== 40425\nLnB0 40426\nKGNvbW1lbnQ= 40427\nIENvbnZlcnRlcg== 40428\nZ2Ft 40429\nYmlucw== 40430\nLnRlbGU= 40431\nIFZldGVyYW5z 40432\nX0FMTE9D 40433\n0L7Qu9GM0LfQvtCy0LDRgg== 40434\naW5uYW1vbg== 40435\nO3dpZHRo 40436\nb2hs 40437\nIGZhbnRhcw== 40438\nIHN1bmc= 40439\nCUs= 40440\nKEpzb24= 40441\nIG5laWdoYm91cmhvb2Q= 40442\nIHZvdw== 40443\nIHNpbnM= 40444\nb25hY2Np 40445\nIGVwb2Nocw== 40446\naW1hZ2Vu 40447\nLkNoYW5nZQ== 40448\nLm15YmF0aXM= 40449\nU2Vlaw== 40450\nV0VS 40451\n566h55CG 40452\nIGludGVyZXNz 40453\nX0V2ZW50 40454\nZWRlcmxhbmQ= 40455\nIHRlcnJpdG9y 40456\nIGNpdWRhZA== 40457\ndWNrZWQ= 40458\nIHNuYWNr 40459\nIHRyYW5zcG9ydGVk 40460\nIE1hbmlmZXN0 40461\nIERBVA== 40462\nX3RoZXRh 40463\nIHdvbnQ= 40464\nLgoKCgoKCgoKCgo= 40465\nirbmgIE= 40466\nIEVwaWM= 40467\nRGVjaw== 40468\nbHRyYQ== 40469\nX1pFUk8= 40470\nIFtdOw== 40471\nL3NjcmlwdHM= 40472\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 40473\n5oOF 40474\nIHdlZWQ= 40475\nTkJD 40476\nIHJhcGVk 40477\nIEdhdGV3YXk= 40478\nW00= 40479\nIFRpbWVvdXQ= 40480\nZW5jaG1hcms= 40481\nLlZpZXdNb2RlbA== 40482\nIHBvcm5vcw== 40483\nIFlh 40484\ndGhyaXRpcw== 40485\nIEZseW5u 40486\nIG1lZ2E= 40487\nYWNpbg== 40488\nIHRyaWJhbA== 40489\nLmFwcGxl 40490\nIEJsbw== 40491\nw6Ju 40492\naWJp 40493\ncm92 40494\nIExpdmVz 40495\nXi4= 40496\nZ2V0UmVxdWVzdA== 40497\nIEVzdGFibGlzaA== 40498\nY29udGFpbmVycw== 40499\nIHN0YXJyaW5n 40500\nIGNlbGVicml0aWVz 40501\nIFJlbGF0aXZl 40502\nIEhlaWdodHM= 40503\nIHRxZG0= 40504\nIE5vcnRod2VzdA== 40505\naXZpYw== 40506\nCWNs 40507\nIGF1dG9tb3RpdmU= 40508\nZW50cmlj 40509\nIGZvcnR1bmF0ZQ== 40510\nIGZpcmVwbGFjZQ== 40511\nc2V1ZA== 40512\nbmlja25hbWU= 40513\nO3M= 40514\nX0NBTA== 40515\naGFsdA== 40516\nKG5z 40517\nX2RlbGV0ZWQ= 40518\nRGV2ZWxvcG1lbnQ= 40519\nbW92aWVz 40520\nIGlkZW50aXRpZXM= 40521\nIHByb21wdGx5 40522\n2KfZhg== 40523\nIGFudGU= 40524\nICInLCc= 40525\n5Y+j 40526\naW1wc2U= 40527\nIHlhcA== 40528\nVHlwZU5hbWU= 40529\nIGJpdGNo 40530\nIGFzc29jaWF0ZXM= 40531\nSEVNRQ== 40532\nLWVtcHR5 40533\nINiq 40534\nb2x2ZXJz 40535\nIHBpc3RvbA== 40536\nU2NvcGVk 40537\nYWduZXI= 40538\nJ109PSc= 40539\nIElNUA== 40540\nZXhj 40541\nIG9taXR0ZWQ= 40542\nIG1pbmRzZXQ= 40543\nIFtdKA== 40544\nIG9ybg== 40545\nX0NBTQ== 40546\nQXZn 40547\nTG9jYWxpemVkU3RyaW5n 40548\nIE5hdHVy 40549\nIGNvbXBvc2Vy 40550\nIFBsYXlpbmc= 40551\nIG92ZXJk 40552\nX3V0Zg== 40553\nLnNr 40554\nIEZvbA== 40555\nJHBhZ2U= 40556\nLE9iamVjdA== 40557\nIGJlZXM= 40558\nYWxhcnk= 40559\nYnVsbGV0 40560\nX2xpYnJhcnk= 40561\nT2ZmZXI= 40562\nbG9jYXRlZA== 40563\nIChfLA== 40564\n4oCcSGU= 40565\nIE93bmVycw== 40566\nKSkuCg== 40567\nIGJyaQ== 40568\nLkFkbWlu 40569\na3Rpb24= 40570\n0LvRjtGH 40571\nIGVyb3RpY2k= 40572\nQ2FuY2VsbGVk 40573\nIGFncg== 40574\ncmV2aWV3cw== 40575\nX2RtYQ== 40576\nUklDVA== 40577\nIGdmeA== 40578\nbXBp 40579\ncHBv 40580\nIC8vQA== 40581\nIHVwcGVyY2FzZQ== 40582\nIGNvbW1pdHRpbmc= 40583\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 40584\nVXNlckRhdGE= 40585\nIHZhaQ== 40586\nCXNvcnQ= 40587\nIGNvbmdyYXQ= 40588\nIGRpb3hpZGU= 40589\n0LTQsA== 40590\nLmFyZWE= 40591\nIEpvc2h1YQ== 40592\nIEtvY2g= 40593\nX2JyZWFr 40594\nYXp1cmU= 40595\naXN0aWNhbA== 40596\nX0FMUEhB 40597\nX3ZpZXdz 40598\nIGVsaW1pbmF0aW5n 40599\nT01C 40600\nZW51bWVy 40601\nIEh5ZHJv 40602\nKCoo 40603\nRVJUSUNBTA== 40604\nIGluZXZpdGFibHk= 40605\nIHN0b2xl 40606\nLWVhc3Q= 40607\naWVyb24= 40608\nIGxpbmdlcg== 40609\nL2RvYw== 40610\nxbo= 40611\nIEFscmVhZHk= 40612\nYXNpbw== 40613\nIC0tCg== 40614\nIGFiYnJldg== 40615\nIEF0b20= 40616\naGlt 40617\nIElOU0VSVA== 40618\nc3Vu 40619\n4pmq 40620\nQ09OTkVDVA== 40621\nZXJhdG9y 40622\nIE1hbm5pbmc= 40623\nIDoo 40624\nZ2Fz 40625\nPT4n 40626\nIHF1ZXJ5c2V0 40627\nO30NCg== 40628\nIFBvcHVsYXRpb24= 40629\ndXRlZFN0cmluZw== 40630\ncmVzaWRlbnQ= 40631\nX0ZPTlQ= 40632\nIFJlc3BvbmQ= 40633\nIG9ic2N1cmU= 40634\nIG9ic2VydmFibGU= 40635\nIENvbnRyaWJ1dG9ycw== 40636\na29u 40637\nIE11c2s= 40638\nZXhhbw== 40639\nIFR1Yg== 40640\nQm9vdEFwcGxpY2F0aW9u 40641\nU09S 40642\nLkhvcml6b250YWw= 40643\nLmZpbmRCeQ== 40644\nLnBvd2Vy 40645\nIHBvc2l0aXZlbHk= 40646\ndmVuaWVuY2U= 40647\nIEpvbmc= 40648\nIHdoaXN0bGU= 40649\nINC30L3QsNGH 40650\nIGxlbmRpbmc= 40651\nIGRlc3RydWN0aXZl 40652\nIG9uRGVsZXRl 40653\nYXV0aG9yaXphdGlvbg== 40654\nKCk7Pz4= 40655\nX29yaWdpbmFs 40656\nc2NpZW5jZQ== 40657\nYXRyYQ== 40658\nPyw/LA== 40659\nIEFzYw== 40660\nIGNvbnZpbmNpbmc= 40661\nJGE= 40662\nb3JnZW4= 40663\nX0RhdGU= 40664\nIFByb3ZpZGU= 40665\nIGxvbmVseQ== 40666\nKScK 40667\nZXhjaGFuZ2U= 40668\nOz8+Cg== 40669\nLmZhc3Q= 40670\nU2FtcGxlcw== 40671\nTG9uZG9u 40672\nJ10pDQo= 40673\nIElvbmlj 40674\nIHBlc3Nv 40675\nIEtuaWdodHM= 40676\nIFJhZg== 40677\nX2F0dHJz 40678\nIHJlcGVhbA== 40679\nPk1haW4= 40680\nIE9yZGVyZWQ= 40681\nX05ldw== 40682\nPSIiPjwv 40683\ndXJscGF0dGVybnM= 40684\nQVRJT05BTA== 40685\ncGVlY2g= 40686\nIElkYWhv 40687\nIHByaW5jZXNz 40688\nIEN1c3RvbWVycw== 40689\nYXdheXM= 40690\nYWRi 40691\nIEJyeWFudA== 40692\nbm9uY2U= 40693\nIGFkdWw= 40694\nIGBgKA== 40695\nIGFmdGVybWF0aA== 40696\nPWRpY3Q= 40697\ndGV4dEJveA== 40698\nIHNwZXJt 40699\nIGNvdWdo 40700\nSG9y 40701\n4oCZUw== 40702\nLkNvbXBvbmVudFJlc291cmNlTWFuYWdlcg== 40703\nIHJlZ3VsYXRvcg== 40704\nIHBhcnRuZXJzaGlwcw== 40705\nL3Byb2plY3Rz 40706\ndHJ5cw== 40707\nIExhc2Vy 40708\n4p+p 40709\nIEZ1bms= 40710\nIHVuY29uc2Npb3Vz 40711\nIGNydXN0 40712\nIFRlYW1z 40713\nIEJhbm5lcg== 40714\nIEhvbmV5 40715\nbGVtcw== 40716\nIG1heFdpZHRo 40717\nUG9pbnRlckV4Y2VwdGlvbg== 40718\nZmFkZU91dA== 40719\nLVN0 40720\nIHN0cmFuZ2Vycw== 40721\nX0dP 40722\nV3JpdGFibGU= 40723\nX0luZm8= 40724\nLk5vbk51bGw= 40725\nYW5ub3RhdGlvbnM= 40726\nIEdE 40727\nIGVuZG9yc2Vk 40728\nCVRva2VuTmFtZQ== 40729\nIERlcGVuZGluZw== 40730\nWU5BTQ== 40731\nIE1ldGVvcg== 40732\nIEluY3JlYXNl 40733\nLk1hbnk= 40734\nPT0o 40735\nLlVVSUQ= 40736\nX0tFUk5FTA== 40737\nIHZpZMOp 40738\nIHBx 40739\nIFF0R3Vp 40740\nIFZhcmlvdXM= 40741\nIGpvaG4= 40742\nX3BhdGNo 40743\nIHRvdXRlcw== 40744\nIEZhaWw= 40745\nIHN1cnZpdmluZw== 40746\nKCIkew== 40747\nICAgICAgIA0K 40748\nIGltYWdlVXJs 40749\nLndvcmRwcmVzcw== 40750\nc291cmNlcw== 40751\nCWdsVmVydGV4 40752\n4oCZYQ== 40753\nIGVzY29s 40754\nUkFSWQ== 40755\nIFNuYWtl 40756\nIHF1aW50 40757\nIGxhc3Rz 40758\nIEhhcm1vbg== 40759\nIGNvaWw= 40760\nIGV4cGxvaXRhdGlvbg== 40761\nbGVlbg== 40762\nJz4iOwo= 40763\nIFNFUlZFUg== 40764\nIEhFQURFUg== 40765\nX3ZlbG9jaXR5 40766\nIEludm9rZQ== 40767\nLnRpbWVzdGFtcHM= 40768\nIHN1bGY= 40769\nSVFVRQ== 40770\nIGluaGFiaXRhbnRz 40771\ncGhpbnM= 40772\nYXp6bw== 40773\nIG1vbm8= 40774\nTGVnZW5k 40775\nIG5vbmNl 40776\nSUZF 40777\nOyI7Cg== 40778\nLWNyZWF0ZQ== 40779\nIiIsCg== 40780\ncGVybWl0 40781\nIEltbWlncmF0aW9u 40782\nIHBhdGhuYW1l 40783\nZmZlY3RpdmU= 40784\n4pmA4pmA 40785\nIGV4YW1z 40786\nLWV2ZW50 40787\nIFRpbGw= 40788\nW21pZA== 40789\nRklY 40790\nO2NvbG9y 40791\nKE9yZGVy 40792\nX3RyYWl0cw== 40793\nIG9yZGVyQnk= 40794\nIHN1bnQ= 40795\nIE5pY2hvbGFz 40796\n2LI= 40797\nIHN1bm55 40798\naW5lcnM= 40799\nIGFjY2Vzc2liaWxpdHk= 40800\nIEhC 40801\nLmNvbXA= 40802\nCW9w 40803\nIG1pbm9yaXRpZXM= 40804\nZXRoZXVz 40805\nIGNvbGxhYm9yYXRpdmU= 40806\ncHJpdA== 40807\nSElS 40808\nIHdyYXBz 40809\nCWRyYXc= 40810\nZ29k 40811\nIElY 40812\nLmFwcHM= 40813\nIE5N 40814\nIGlycmVsZXZhbnQ= 40815\nIFRpZ2Vycw== 40816\nIGRpYWc= 40817\nR1Y= 40818\nIEFjY2Vzc29yaWVz 40819\na29udA== 40820\nIHNpbXBsaWZ5 40821\nIEZhdm9yaXRl 40822\nX3Rvb2xz 40823\nKFtdKTsK 40824\nIHRvd2Vycw== 40825\nQmVz 40826\nIGh1bnRlcg== 40827\nIHNhbG9u 40828\nKGJ1ZmY= 40829\nCWRlYnVn 40830\nIG1hbHdhcmU= 40831\nTW92aW5n 40832\nLW9wdGlvbnM= 40833\nKSsn 40834\nIExPVkU= 40835\nX1NPQ0tFVA== 40836\nX2Zpbg== 40837\nIERlbGF3YXJl 40838\nIHNoZXJpZmY= 40839\nLWludmFsaWQ= 40840\nIEZVTEw= 40841\nINC/0L7QtA== 40842\nZWxhcw== 40843\nInN0cmluZ3M= 40844\nIFJlcHJlc2VudGF0aXZlcw== 40845\nc3VyZmFjZQ== 40846\ncmVzb2x2ZWQ= 40847\naHRkb2Nz 40848\nKSk6DQo= 40849\nIHByZXNzdXJlcw== 40850\nIG5vcm1z 40851\nIHBsYQ== 40852\nIHN1cm5hbWU= 40853\nIHBvc3RhbA== 40854\nIERlcGFydA== 40855\nIHNsYXVnaHRlcg== 40856\nb3JpZGE= 40857\nIGhlYmJlbg== 40858\nIGRlc2Fy 40859\nY29tcGFjdA== 40860\nX0xBTkc= 40861\n5ZCI 40862\nb3BvbHk= 40863\nX3JhZA== 40864\nIFNURE1FVEhPRA== 40865\nTGF6eQ== 40866\nICAgCQ== 40867\nLi4uLA== 40868\nKHdlYg== 40869\nIFBvbnQ= 40870\nIGV0d2Fz 40871\nIHVwd2FyZA== 40872\nX2hhdA== 40873\nIF0sCgo= 40874\nIGJhc2VVcmw= 40875\nIHdvcnJ5aW5n 40876\nLWFkZG9u 40877\nKGdldENsYXNz 40878\nU1BJ 40879\nIGNhcHR1cmluZw== 40880\nKX0sCg== 40881\nRWZmZWN0cw== 40882\nIGNvbXBldGVudA== 40883\nIGZvdWw= 40884\nIHN1YnNjcmliaW5n 40885\nIE9CSkVDVA== 40886\nSVhFTA== 40887\nYnVja3M= 40888\nKGVkZ2U= 40889\nKHBhc3M= 40890\nIFBldGVyc29u 40891\nIGJvb2Jz 40892\nIERlbGF5 40893\nX3NxdWFyZQ== 40894\nZWxpbQ== 40895\nb3RlcnM= 40896\nX1BD 40897\nJUU= 40898\nb25jbGljaw== 40899\nIFNWRw== 40900\nIHRvcHBlZA== 40901\nIGZpc3Q= 40902\nc21hcnQ= 40903\nIFJhbHBo 40904\nKG93bmVy 40905\nam91cnM= 40906\nIGJyb256ZQ== 40907\nIEFyZ3VtZW50RXhjZXB0aW9u 40908\nKG9yaWdpbmFs 40909\nX1NDQUxF 40910\nX2Nw 40911\nIHJlY29tbWVuZHM= 40912\nLnNldFN0eWxl 40913\nU3VyZQ== 40914\nTEFORA== 40915\nIHJlcGVhdGluZw== 40916\nTWF0dA== 40917\nLlZpc2liaWxpdHk= 40918\nIGVudGVycHJpc2Vz 40919\nLlNldHVw 40920\nKHNjZW5l 40921\nIFJlYWN0aXZl 40922\ndXJnZQ== 40923\nYnc= 40924\nLlB1dA== 40925\ncGVyc2lzdA== 40926\nLmNvb2tpZQ== 40927\nIEF1ZGk= 40928\nYHM= 40929\nc3VwcGxpZXI= 40930\nKEZvcm0= 40931\nwqE= 40932\nX3Nv 40933\njIA= 40934\nIExlZ2lvbg== 40935\ndHRl 40936\nTmQ= 40937\nTG9zcw== 40938\nKGF0dHJz 40939\nLnNjYXR0ZXI= 40940\nIGdyb29t 40941\nIGdsaW1wc2U= 40942\nIG5haWxz 40943\nIGN1bXVsYXRpdmU= 40944\nIGZhemVy 40945\nX3NlcnZpY2Vz 40946\nLk51bQ== 40947\naWJpbGl0 40948\nX3Jlc29sdXRpb24= 40949\nIFR4 40950\ndW1pbml1bQ== 40951\nb3Bh 40952\nLnNjaGVkdWxl 40953\nc210cA== 40954\n4LiV 40955\ndXJyeQ== 40956\nw7xr 40957\nZ29vZw== 40958\nX3NpZ25hdHVyZQ== 40959\nLmludG8= 40960\nIFN0ZXBz 40961\nIGhvbWVvd25lcnM= 40962\nIE5TVVJM 40963\nIFBBQw== 40964\nICAgICAgICAgICAgCgo= 40965\nPicpCg== 40966\nZW5o 40967\nIGluY2Fw 40968\nJE1FU1M= 40969\nIG1vaW5z 40970\nIEZp 40971\nIG9mZnNlYXNvbg== 40972\ncHJlc3Npb25z 40973\nPi48Lw== 40974\nIE1hcmtlcg== 40975\nIG9uQ2xvc2U= 40976\nTEVWRUw= 40977\nIGludGVyZmVyZQ== 40978\nIENvbGlu 40979\nIFJlc2lzdGFuY2U= 40980\nRGlzY291bnQ= 40981\nIFdlYkVsZW1lbnQ= 40982\nIGJhdGhyb29tcw== 40983\nbGVnYWN5 40984\nIENhcHR1cmU= 40985\nIGFyaXNpbmc= 40986\nICIpOwoK 40987\n0YjQuNCx 40988\nIEluZmluaXR5 40989\nQWR2ZXJ0aXNlbWVudHM= 40990\nIENvbWluZw== 40991\nIFBST0pFQ1Q= 40992\nX1BST1RPQ09M 40993\nIHVzZURpc3BhdGNo 40994\nLmNoYW5uZWxz 40995\nIENpdGl6ZW5z 40996\nZW50cmU= 40997\nX21w 40998\nLkNvbnN0YW50cw== 40999\nIFNlcmlhbGl6ZQ== 41000\nX0lOQw== 41001\nKGx1YQ== 41002\nIGNsYXNo 41003\nX3dpdGhvdXQ= 41004\nLmtleVNldA== 41005\nIHJlY2VpdmVycw== 41006\n5pa55rOV 41007\nKG1lbQ== 41008\nIEhvcml6b250YWw= 41009\nIGNvY2t0YWls 41010\nIGNob29zZXM= 41011\nLklubmVy 41012\nIHJlbGllZA== 41013\nb3VudGVy 41014\nICJe 41015\nIHRlbmFudHM= 41016\nImA= 41017\nX1BN 41018\nZXJzZWQ= 41019\nIH19Ij48Lw== 41020\nIHByb3ZpbmNlcw== 41021\nX1JBVw== 41022\nXEFwcA== 41023\nIHByb3N0aXR1ZXI= 41024\nX2dhaW4= 41025\nLnRlbmNlbnQ= 41026\nZmZlY3Rz 41027\nKHBr 41028\nc2t1 41029\nIHVzYWJsZQ== 41030\nRVJWRUQ= 41031\nIGFudGVubmE= 41032\naGVh 41033\ncGxpc3Q= 41034\nX1BMVUdJTg== 41035\n0YHQuw== 41036\nLmxvb2t1cA== 41037\n4buB 41038\nIGVubGFyZw== 41039\nIHBpc3M= 41040\nSGFt 41041\naW1hcA== 41042\nIGludmFsaWRhdGU= 41043\nIHNpbGs= 41044\nPSIjIj4K 41045\nIEdyYXNz 41046\nIEdvYWw= 41047\nX3BkZg== 41048\nSGFuZGxlcnM= 41049\nIHN0YWNrcw== 41050\nLmdldEZ1bGxZZWFy 41051\nPVtdOwo= 41052\n6L2m 41053\nLFY= 41054\nKHNwbGl0 41055\n0YPQvdC6 41056\nIGJha2VjYQ== 41057\nIH4vLg== 41058\ncGV6 41059\ndGFpbHM= 41060\nIEdsZW4= 41061\nIHNldEltYWdl 41062\nIENvbWlj 41063\nQkxPQ0s= 41064\nCVRoaXM= 41065\nb2FkZXI= 41066\nIGNhcGl0YWxpc3Q= 41067\nX1NURVA= 41068\nKEJvb2xlYW4= 41069\nIENvcnJlY3Q= 41070\ncmluYQ== 41071\nIGNvbmNhdGVu 41072\n5a6e 41073\nKCk6Cgo= 41074\nIHVuYW5pbQ== 41075\nbGxp 41076\nYWxhcnM= 41077\nLW5l 41078\nIGRpdm9y 41079\nIEtpY2tzdGFydGVy 41080\nXS5f 41081\nPG51bWJlcg== 41082\nL21lbnU= 41083\nR1JBUEg= 41084\ndmlzaXRvcg== 41085\nIGltcHJvcGVy 41086\nX05FWFQ= 41087\nIGJpc2E= 41088\nYmFja2dyb3VuZENvbG9y 41089\nL2lucHV0 41090\nIG1vaQ== 41091\nR29hbA== 41092\nbGlxdQ== 41093\nIG1pc2NvbmR1Y3Q= 41094\nIGNvbXByaXNlcw== 41095\nYXducw== 41096\nIFBpZQ== 41097\ncmFpcw== 41098\ncm9sZXVt 41099\nIGN1cnNl 41100\neXU= 41101\nX3BvbGw= 41102\nLmN1cnJlbnRVc2Vy 41103\nRVNI 41104\nXSlb 41105\nIHN0b3J5dA== 41106\nKT87Cg== 41107\nKj0= 41108\nIEJ1cmc= 41109\nL2xheW91dA== 41110\nX2JhY2tlbmQ= 41111\nOz8+PC8= 41112\nIFdoYXRzQXBw 41113\nIE1vdW50YWlucw== 41114\ndmlzaW9ucw== 41115\nZmx1ZW5jZQ== 41116\nLmNyZWF0ZUNvbXBvbmVudA== 41117\nIFBzeQ== 41118\nZm9yZ2V0 41119\nc3J2 41120\nX0NPTVBPTkVOVA== 41121\nIE5leHVz 41122\nICl7 41123\nZW5kaQ== 41124\nSU1VTQ== 41125\nIEdG 41126\n57uE 41127\n4oCUdGhhdA== 41128\nYms= 41129\nTW96aWxsYQ== 41130\nIGRlZmVuZGVycw== 41131\nLXNldHRpbmdz 41132\naW1taW5n 41133\nIE9QVA== 41134\nIENX 41135\nIHRoYXRz 41136\nIE9wZW5pbmc= 41137\nUmVsZWFzZWQ= 41138\nbnBt 41139\nIGhycw== 41140\nIGdyb3VwZWQ= 41141\nLyIuJA== 41142\nIEhpc3RvcmljYWw= 41143\nKCQiew== 41144\nb3ZpYw== 41145\nKHNpZ24= 41146\nIFBob3RvZ3JhcGh5 41147\nIHNpZ251cA== 41148\nX0FSQ0g= 41149\nLnRlc3RuZw== 41150\nL2FuZ3VsYXI= 41151\nUmVzdENvbnRyb2xsZXI= 41152\nc2hpdA== 41153\ndWxsZQ== 41154\nLnBhdXNl 41155\nKFtdLA== 41156\nKHF1ZXN0aW9u 41157\naWxvZ3k= 41158\nIEV1Zw== 41159\nLWxvY2Fs 41160\nIGt2aW4= 41161\nIHJlc2VydmF0aW9ucw== 41162\nb2JpYQ== 41163\nIHN1YnNpZGlhcnk= 41164\nIGFjY3VtdWxhdGVk 41165\nIFFWYXJpYW50 41166\nIEJKUA== 41167\nIE5vcm1hbg== 41168\nIEludGVncmF0aW9u 41169\nLlZhcmlhYmxl 41170\nKFJlc291cmNl 41171\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 41172\nRXhwb3Nl 41173\nICd9 41174\nLkNPTE9S 41175\nINGH0LjRgQ== 41176\nQWpheA== 41177\nIHRocnU= 41178\nTW92aWVz 41179\nIHByb3Bvc2l0aW9u 41180\nL3RoZW1l 41181\nTW9kZWxQcm9wZXJ0eQ== 41182\nIEF3cw== 41183\nIEFuZHJlYQ== 41184\nIE1lcmdl 41185\nLmZpbmlzaA== 41186\nKHJlcXVpcmVk 41187\nIFByZWw= 41188\nZWxlZA== 41189\n5pON5L2c 41190\nLlRSQQ== 41191\nTUFT 41192\nIHJlYWxpc2Vk 41193\ncm9pZHM= 41194\nCWZu 41195\ncmg= 41196\nLiI8Lw== 41197\ndmlkaWE= 41198\nIGRlcHVpcw== 41199\nIEJW 41200\nTG4= 41201\nIGx1c3Q= 41202\nQXNj 41203\nCQkJCQkJCSA= 41204\naXNsZQ== 41205\nLWNhcmU= 41206\nX0lOVg== 41207\nIERyZXc= 41208\nIHdoYXRz 41209\nIENhcGFjaXR5 41210\nUGFybQ== 41211\nX21vbml0b3I= 41212\nLnN0dWRlbnQ= 41213\nIFJOQQ== 41214\nLmVuZHN3aXRo 41215\nYmlo 41216\nIE1MQg== 41217\nL3Byb2plY3Q= 41218\nIHJlc3Rpbmc= 41219\nc2VwYXJhdG9y 41220\neWQ= 41221\nZXJ0aWE= 41222\nIG1vbml0b3JlZA== 41223\nIj4qPC8= 41224\nLkZD 41225\nIE5FV1M= 41226\nIENhbGxz 41227\nIGFkZXF1 41228\nQ2hlY2tpbmc= 41229\nZXN0aW1hdGU= 41230\nIHJlY2FsbHM= 41231\nX2ZyZXF1ZW5jeQ== 41232\nIHVzZVJlZg== 41233\nIEdyb3Zl 41234\nIFhpYQ== 41235\nIMOt 41236\nZXNzZW5nZXI= 41237\nLWNvc3Q= 41238\nLmZj 41239\nIEt1bWFy 41240\nLkZvY3Vz 41241\nZWxsYW5lb3Vz 41242\nLkFsZXJ0 41243\nZWF4 41244\nIG9yY2g= 41245\nLnBt 41246\nIGxhbmRsb3Jk 41247\nKHBvcA== 41248\nX2FjdHVhbA== 41249\nIExC 41250\nR3JhbmQ= 41251\nLnJlbmRlcmVy 41252\nIGxvYg== 41253\nY3VzdG9tZXJz 41254\nIGNhcHR1cmVz 41255\nV0lORE9X 41256\nIGRvY2g= 41257\nIGFwb2xvZ3k= 41258\nIEphbWE= 41259\nQFs= 41260\nLnRha2U= 41261\nbm9vcA== 41262\nIGx1bQ== 41263\nIGRpZmZlcmVudGlhbA== 41264\nIGVmZmljYWN5 41265\nCUlO 41266\nX0JPWA== 41267\nX3Nk 41268\nX3J0 41269\nY29kZXI= 41270\nb3VuY2VtZW50 41271\naGFzQ2xhc3M= 41272\nIHJpc2t5 41273\nIEVzdGFkbw== 41274\nLURE 41275\nIENhcnNvbg== 41276\nU3VmZml4 41277\nIHRvZGE= 41278\nIFRyYWNrZXI= 41279\nIERlbGVnYXRl 41280\nYCxg 41281\nIFBhcmtpbmc= 41282\nIG5lcg== 41283\nYXpv 41284\nIEZpbGVJbnB1dFN0cmVhbQ== 41285\nIHJlY291bnQ= 41286\ncWk= 41287\nY2tlbg== 41288\nIHNvY2lhbGlzdA== 41289\nIEludm9pY2U= 41290\nINC/0YDQvg== 41291\nJSIs 41292\nZW5uZW4= 41293\nIHZpdm8= 41294\nIG9yZ2FuaXphdGlvbmFs 41295\nIHVuY29tbW9u 41296\ndXRhcg== 41297\nIGh1bGw= 41298\nVHVlc2RheQ== 41299\nIGFzc2Vzc21lbnRz 41300\nKGFwcGxpY2F0aW9u 41301\nIHByZW1pc2U= 41302\nU3RhcnRUaW1l 41303\nIGRr 41304\nIGludGVyZmVy 41305\nIFF1ZWVuc2xhbmQ= 41306\nIGNyZWRlbnRpYWw= 41307\nIGxlaXN1cmU= 41308\nWVo= 41309\nIENtZA== 41310\nQlVT 41311\ndXNhbg== 41312\nCXZlYw== 41313\naW9sb2dpY2Fs 41314\nIExvdHM= 41315\nIGVubGlnaHQ= 41316\nIGZyZXNobWFu 41317\nIENPTU1BTkQ= 41318\nIEFjdGlvbkxpc3RlbmVy 41319\ndXRt 41320\nYXJpdXM= 41321\nVHdpZw== 41322\nIHN3ZXB0 41323\nLXRvb2w= 41324\nxJA= 41325\nY2hhcHRlcg== 41326\nLWdyYWRl 41327\nIGN1cmlvc2l0eQ== 41328\nIHN1c3RhaW5hYmlsaXR5 41329\nIE1pbmVjcmFmdA== 41330\nd2VuZA== 41331\nSWZFeGlzdHM= 41332\nIEN1bHR1cmFs 41333\nIFNhY3JhbWVudG8= 41334\nTGF5ZXJz 41335\nU3Vic2NyaWJlcg== 41336\nLkdyYXBo 41337\nIGxt 41338\nZXN0eQ== 41339\nYWR2ZXJ0 41340\nJHA= 41341\nIEhvY2tleQ== 41342\nIERFVA== 41343\nc2V0VGl0bGU= 41344\neWFuZw== 41345\nIGJhYmU= 41346\nZWxzaXVz 41347\nVHJhdmVs 41348\nIG1lc21v 41349\nKG1hcFN0YXRlVG9Qcm9wcw== 41350\nX1NFTA== 41351\nLXBvcA== 41352\nIGVtaXNzaW9u 41353\n4oCZLgoK 41354\nLnN3aXRjaA== 41355\nb3Rpb25z 41356\nLnBob3Rv 41357\nTFY= 41358\nYW1vZGVs 41359\nIHdvcmR0 41360\nSUdHRVI= 41361\nIFRPREFZ 41362\nT0xT 41363\nX0lERU5U 41364\nIGNvbW1lbnRpbmc= 41365\nRGF0b3M= 41366\nIGhpbGFyaW91cw== 41367\nKGFueQ== 41368\nIGRhbXA= 41369\nLWNvbnRyb2xsZWQ= 41370\nICI8Pw== 41371\nX2JsYWNr 41372\nTmV0QmFy 41373\nLnNldFNlbGVjdGVk 41374\nQ3Nz 41375\nIHF1YXJ0 41376\nIG93bmluZw== 41377\nIEZJRUxE 41378\nLnJlbHU= 41379\nIGxpcw== 41380\n7Jqw 41381\nLlJFTEFURUQ= 41382\nIGxvaw== 41383\nIEZsaXA= 41384\nIHByZXN0aWdpb3Vz 41385\nIGRn 41386\nIElucHV0U3RyZWFtUmVhZGVy 41387\nIHVzdQ== 41388\nIGdpcg== 41389\nIGFuYQ== 41390\nX3B5 41391\ndW5uZWw= 41392\nCXN5c3RlbQ== 41393\nIGNvYXRpbmc= 41394\nIEdlbnJl 41395\nZXJybw== 41396\nIENMSUVOVA== 41397\nIHN0cmV0Y2hlZA== 41398\nLkhhc1ZhbHVl 41399\nOzs7Ozs7Ozs= 41400\n54mI 41401\nIGZpbmFscw== 41402\nLmdldENoaWxkcmVu 41403\nIC0tfX0K 41404\nIENvd2JveXM= 41405\nIEVkaW5idXJnaA== 41406\nIFBsYXph 41407\nYWJlbg== 41408\nQXJ0aXN0 41409\nVVJB 41410\nIEh1Z2hlcw== 41411\nb2JiaWVz 41412\nX25vaXNl 41413\nLk9iamVjdHM= 41414\nRXhwcmVzc2lvbnM= 41415\nIGFudGhyb3A= 41416\nJykpDQo= 41417\nKS4i 41418\nY3JpcHRpdmU= 41419\nIHNhbG1vbg== 41420\nIHdhc3Q= 41421\ncmhv 41422\nLnRpY2s= 41423\nIGV4cGxvcmVz 41424\nIEFsZ29yaXRobQ== 41425\nQ2hhckFycmF5 41426\n4LiE 41427\nX1BBQ0tFVA== 41428\nSkU= 41429\nIl1dOwo= 41430\nLm5vdGU= 41431\nQmFja2luZw== 41432\nIEhvbGRlcg== 41433\ncmVpY2g= 41434\nIFppb24= 41435\nL2dy 41436\nICAgICAgICAgICAgICAgICAgIAo= 41437\nTW90aW9u 41438\nIFRyaWJ1bmU= 41439\nIGNyaXRpY2FsbHk= 41440\nIENSTQ== 41441\nIGJsb3dpbmc= 41442\nIGNvbW1pc3Npb25lcg== 41443\nSm9l 41444\nIFRlbGV2aXNpb24= 41445\nCXByZQ== 41446\nIFRSQU4= 41447\nIFZpa2luZ3M= 41448\nIEJFVA== 41449\nd291bGQ= 41450\nLkNhcHRpb24= 41451\nIGJhY29u 41452\naG1h 41453\nbWVyZ2Vk 41454\nIHN1YnNjcmlwdGlvbnM= 41455\nb2NjdXBpZWQ= 41456\nTGl2ZURhdGE= 41457\nIGFsbG93YW5jZQ== 41458\ncmlnZXNpbWFs 41459\nZGRk 41460\nLmxvZ291dA== 41461\nIFRhbmc= 41462\nIHdhcm10aA== 41463\nTW9kZWxJbmRleA== 41464\nIFByYQ== 41465\nIHNjZW50 41466\nIGhhY2tlcnM= 41467\nIGlsbHVzdHJhdGU= 41468\nSWNo 41469\nIGRpYXM= 41470\nQ0FTRQ== 41471\nIFNjaQ== 41472\nJHVybA== 41473\nIE1PRFVMRQ== 41474\ndXNob3J0 41475\nbGllcnM= 41476\nIERldmljZXM= 41477\nbWluc3Rlcg== 41478\ndW5hbWU= 41479\nIHVucg== 41480\nRXhhbXBsZXM= 41481\nIHJpc2Vu 41482\nLmFp 41483\nY2hyb20= 41484\nX3dvcmtlcg== 41485\nIGFsaWFzZXM= 41486\nTW91c2VFdmVudA== 41487\nIHNldHRlcg== 41488\nIFB1cnBsZQ== 41489\nSm9pbkNvbHVtbg== 41490\nPWU= 41491\nVEhPT0s= 41492\nIFRvdw== 41493\nIENydXNoaW5n 41494\nIEplZGk= 41495\nIEdyaWZmaW4= 41496\nIGtvcw== 41497\nX0ZT 41498\naW5nZXM= 41499\nc29sZXM= 41500\nKG5hbWVz 41501\nIEJpZA== 41502\nLXBvd2VyZWQ= 41503\nTXVsdA== 41504\nYW1pbGlhcg== 41505\nLmNsZWFuZWQ= 41506\nIFppbW1lcg== 41507\nCWNsZWFy 41508\nIHVuc3VwcG9ydGVk 41509\nQ2FsbGFibGU= 41510\nIHJlcHM= 41511\nYWx0ZXJu 41512\nX1JFUE9SVA== 41513\nLmdldENvbHVtbkluZGV4 41514\nX1NUT1JF 41515\nIHN1Y2h0 41516\nc3VidGl0bGU= 41517\nIHBlcmQ= 41518\nq5g= 41519\nLk5PVA== 41520\nfT48Lw== 41521\nOmQ= 41522\nbWRp 41523\nYmluZFZhbHVl 41524\nIERlY2lzaW9u 41525\nUmV0dXJuVmFsdWU= 41526\nLGluZGV4 41527\neGZj 41528\nIHNlcnVt 41529\nZ2V0RmllbGQ= 41530\nQ29ubmVjdGlvblN0cmluZw== 41531\nLW9iamVjdA== 41532\nLnJlY3Y= 41533\nIHVuZGVyZ3JhZHVhdGU= 41534\nLkluZnJhc3RydWN0dXJl 41535\nIEthYg== 41536\nIGFkdmlzb3J5 41537\nLXRyZWU= 41538\nIG11ZQ== 41539\naW5mb3Jt 41540\nLmVtYmVk 41541\nIGVycm9yQ29kZQ== 41542\nbWljcm8= 41543\nIHNwYXJrZWQ= 41544\nIGltYWdlcnk= 41545\nY29uYw== 41546\nX21pc3Npbmc= 41547\nIHN1cnBsdXM= 41548\nS1M= 41549\nCVJUSE9PSw== 41550\nVGVsbA== 41551\ncml1bQ== 41552\nIFJhZGl1cw== 41553\ncmlrYQ== 41554\nbG9zaW9u 41555\nIEhlcm4= 41556\nR2FtbWE= 41557\nIEZlZQ== 41558\nIE5hbWVk 41559\nIENhbnlvbg== 41560\nIEpTT05BcnJheQ== 41561\nIHp3ZWk= 41562\nIFNTSA== 41563\nIHNlcnZhbnQ= 41564\nY29hbA== 41565\nIGRlbnlpbmc= 41566\nIHNwbGl0cw== 41567\nSW5jb3JyZWN0 41568\nIHRveA== 41569\nIEFuYWx5c3Q= 41570\nIGFjY3JlZA== 41571\ndWJsZQ== 41572\nIHd0 41573\nIFRyaWFs 41574\nLmV4dGVuc2lvbg== 41575\nIENhcmVlcg== 41576\nIHNlY3VyaW5n 41577\nIExpbA== 41578\nIHByb2plY3Rpb25z 41579\nIHllYXN0 41580\nTWFkZQ== 41581\nIGZvdW5kYXRpb25z 41582\nYWNpZmlj 41583\nLnZvbHVtZQ== 41584\nIG1pcnJvcnM= 41585\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= 41586\nIHZpb2xhdGU= 41587\nYXJzZXJz 41588\nIHNvY2lv 41589\nIHRraW50ZXI= 41590\nIExJTks= 41591\nLmdldFNpemU= 41592\nIFdob2xl 41593\nKXZpZXdEaWRMb2Fk 41594\nCWRvbmU= 41595\ndWRlYXU= 41596\nXCI+PC8= 41597\nQW5kcmV3 41598\nZXJi 41599\nIGbDtg== 41600\nLmNsdXN0ZXI= 41601\nIGRpc2NvdXJzZQ== 41602\nX0RFRklO 41603\nIHB1ZWRlbg== 41604\nIExPVw== 41605\nLmF2 41606\nIHByZWNh 41607\nIHF1bw== 41608\nIHZlbG9j 41609\nLCcn 41610\nIHh5eg== 41611\nCXBhZGRpbmc= 41612\nIHRvbWF0b2Vz 41613\nIEJlbnQ= 41614\nX2N1cnI= 41615\nTlNEYXRl 41616\nIGdldEN1cnJlbnQ= 41617\nIFtg 41618\nV2VkbmVzZGF5 41619\nLkJhcg== 41620\nIFZvdXM= 41621\naW56 41622\nIFF1aW5u 41623\nZXhjZWw= 41624\nZG9z 41625\nIG91dGRhdGVk 41626\nT1VUSA== 41627\nIE1ha2Vy 41628\nZXBlbmRlbmN5 41629\nIGR1bGw= 41630\nIFdpbm4= 41631\nb2dl 41632\nY2xhdmU= 41633\nIG5vdmE= 41634\nIGF2YWw= 41635\nQ2FwdA== 41636\nIFNwb3RpZnk= 41637\nIGp1bA== 41638\nKXRhYmxlVmlldw== 41639\nIGZpbGVuYW1lcw== 41640\nIGVza29ydA== 41641\n5ZGo 41642\nIHNrZXc= 41643\ndGVyaW9y 41644\nIGZpbmFuYw== 41645\nIHRhYmxh 41646\nIFVJQg== 41647\nICgpOg== 41648\nIERvY2tlcg== 41649\ncGVyY2VudGFnZQ== 41650\nTWVldA== 41651\naWNoaQ== 41652\nIGludGVyaW0= 41653\nICc9Jw== 41654\nLkpTT05PYmplY3Q= 41655\nKGZpZA== 41656\nIGRvd250 41657\nIHRyYW5zaWVudA== 41658\nIFN0ZXBo 41659\nIGlnbm9yYW5jZQ== 41660\nIENvZGVz 41661\nPScnLA== 41662\nIElDRQ== 41663\nIHRyYW5xdQ== 41664\nIEV4dGVuZGVk 41665\nIG11bmQ= 41666\nIEhPTUU= 41667\nIGtpbG9tZXRlcnM= 41668\nIGltYWdlbg== 41669\nb3V4 41670\nKHN6 41671\nWW91bmc= 41672\ndWZmZWQ= 41673\nIFdha2U= 41674\nIGFpZGU= 41675\nUFJPQw== 41676\nIFJhdA== 41677\nIExpdGg= 41678\nYmFydA== 41679\nIEFycmFuZ2U= 41680\ncHJvbXB0 41681\n0KM= 41682\nKGN0 41683\nIEludGVydmFs 41684\nZGVwdA== 41685\nRGFuaWVs 41686\nIGZpbGxz 41687\nLnRlbnNvcg== 41688\nKHRyaW0= 41689\nIGplYWxvdXM= 41690\nRmVi 41691\nXENvbW1vbg== 41692\nIGFtZW5kbWVudHM= 41693\nX29wZXJhdG9y 41694\nX2N1c3RvbWl6ZQ== 41695\nIF1d 41696\nIGJu 41697\nIGRpc2FwcG9pbnRtZW50 41698\nIG1pbGxlbm4= 41699\nLndoZW4= 41700\nIG9iZXk= 41701\nIG9mZmVuZGVycw== 41702\nV2lsZA== 41703\nIGNlbGxGb3I= 41704\nIGFwcGFyYXR1cw== 41705\nLmFmdGVy 41706\nIEVQUw== 41707\nIGFkb3JhYmxl 41708\nb3BlcmFuZA== 41709\nKGxpc3RlbmVy 41710\ndmVhbA== 41711\nICko 41712\nIGNhcmRpb3Zhc2N1bGFy 41713\ndXBsaWNhdGVz 41714\ncmlzdG9s 41715\nIHJlZnVzZXM= 41716\nKFFXaWRnZXQ= 41717\nIGVsZW1lbnRv 41718\nTnVtYmVyT2Y= 41719\nLmRlbGF5 41720\nLmdyb3Vwcw== 41721\nIj4nKw== 41722\n5Z2A 41723\nYWNlbmN5 41724\nKFVSTA== 41725\nX2hhbGY= 41726\nPWw= 41727\nIGxpc3RWaWV3 41728\nKHNlY3Rpb24= 41729\nLnRvQXJyYXk= 41730\nKy8= 41731\nIFJvZHJpZ3Vleg== 41732\naXN0cmVhbQ== 41733\nIGVsaWdpYmlsaXR5 41734\nOjot 41735\nLm5ld0luc3RhbmNl 41736\nUEI= 41737\nIEFzc2V0cw== 41738\nIENvbXBvc2l0ZQ== 41739\nIExhYnM= 41740\nIEhhbWFz 41741\nKyspOwo= 41742\nIGJsaw== 41743\nIE5lbw== 41744\nTHVj 41745\nQGxvZ2lu 41746\nIHVuYXdhcmU= 41747\nLm1ldA== 41748\nX1JFTEVBU0U= 41749\nKFNU 41750\nQU1JTA== 41751\ncmlrZQ== 41752\nICgpewo= 41753\nKHNwcmludGY= 41754\nIEFjY291bnRz 41755\nIFZJRVc= 41756\nIEFq 41757\n44Kw 41758\nIHdoaXNr 41759\nIGlkaQ== 41760\nIHJvZGU= 41761\nIGlobg== 41762\nIEVsZW1lbnRhcnk= 41763\nUXR5 41764\nIGludHJpZ3Vpbmc= 41765\nIOWk 41766\nSm9icw== 41767\nCW9mZnNldA== 41768\nIEFobWVk 41769\nIFRhbGliYW4= 41770\nIOiOt+WPlg== 41771\nIGluamVjdGVk 41772\nLkF1dGhlbnRpY2F0aW9u 41773\nX2xpbmVhcg== 41774\nLkRlY2ltYWw= 41775\nIGFwcGxlcw== 41776\nIHNoYXJlaG9sZGVycw== 41777\nIGJha2Vk 41778\nLmRpZmY= 41779\nIEVkZGll 41780\nb2tlcnM= 41781\nIGNvbmZyb250ZWQ= 41782\ndm9pY2Vz 41783\nIHR1cw== 41784\nIFNwaW4= 41785\nTk9ERQ== 41786\nX1Vu 41787\nQ1RY 41788\nL2dvb2dsZQ== 41789\nVGVtcGVyYXR1cmU= 41790\nICcnKS4= 41791\nIG1hZ25pZmljZW50 41792\nIHN0YXJ0SW5kZXg= 41793\nc2VtYmxlcw== 41794\nQW55b25l 41795\nems= 41796\nZWhlbg== 41797\nIERhbWU= 41798\nLnN0cmljdA== 41799\nIHJlcGxhY2Vz 41800\nIGxpbmViYWNr 41801\nIHB1c2hlcw== 41802\nIGNoZWVr 41803\nIFNoaQ== 41804\nX0JZVEVT 41805\nUkVB 41806\n4bqjbg== 41807\nX0NPTk5FQ1RJT04= 41808\nR2F0ZXdheQ== 41809\nIFRyYXZpcw== 41810\nIEFY 41811\nIEJhc2ljYWxseQ== 41812\nIFVwZ3JhZGU= 41813\n4Ko= 41814\ndGhlbWVz 41815\nZXJtbw== 41816\na29y 41817\nRmVtYWxl 41818\nX2F0dGFjaA== 41819\nIOyCrOyaqQ== 41820\nIHBveg== 41821\nPT09PT09PT09PT09PT0K 41822\nKHN5bWJvbA== 41823\nIFNlY3Rvcg== 41824\nX18pCgo= 41825\nX3BhZGRpbmc= 41826\n77yaIg== 41827\nIGZhYnM= 41828\nIHJhbmdlZA== 41829\nc2V0TmFtZQ== 41830\nIHBlcnJvcg== 41831\n4pc= 41832\nIEZpbGVSZWFkZXI= 41833\nIGZ1bGZpbGxlZA== 41834\nX0N1cnJlbnQ= 41835\nIGRvbWluYXRl 41836\nIHNtdWdn 41837\nUG9zdE1hcHBpbmc= 41838\nX2ZvcmNl 41839\nIGJsb2M= 41840\nIEdpYW50 41841\nKHZpZGVv 41842\nIENV 41843\nU3lzdGVtU2VydmljZQ== 41844\nIGVsZg== 41845\nIGtvbnRha3Q= 41846\n66o= 41847\na2Vlcw== 41848\nZ3Rr 41849\nIHBhcmFtSW50 41850\nIG1hcmt1cA== 41851\ndWFsZXM= 41852\nIGFjY291bnRlZA== 41853\nIGdhbmdiYW5n 41854\nUllQVA== 41855\nIFdyb25n 41856\nIGNyZWRpdGVk 41857\nIE1FU1NBR0U= 41858\nIGZsYXdz 41859\nIGJidw== 41860\nIG1ldGFib2xpYw== 41861\nIE9FTQ== 41862\nL2V2ZW50 41863\nKENvbGxlY3RvcnM= 41864\nbW9udG9u 41865\nYXBwZWFy 41866\nIG9wdGVk 41867\nIGNoZWF0 41868\nIGRhdg== 41869\nIFByb2NlZWQ= 41870\nIOq4 41871\nYW5rZWQ= 41872\n0LjQtw== 41873\nYW5zaw== 41874\nIEhhbmc= 41875\nIENsZXI= 41876\nIGRpc2d1 41877\nIGNtYXA= 41878\nLmNsanM= 41879\nIGF1bWVudA== 41880\nbGV6 41881\nIEpvaW5lZA== 41882\nX3JlY2VpdmVk 41883\nIGFlcmlhbA== 41884\nb3RlbA== 41885\nIGdyZWV0 41886\nInM= 41887\nIEdlbmVzaXM= 41888\nIENhbGlm 41889\ncGFuaW9u 41890\nIHRhaWxvcmVk 41891\nbWFwcGluZw== 41892\nYW5kRXhwZWN0 41893\nLnRyYWNr 41894\nYXRvbXk= 41895\nIE93 41896\ndWxsYWg= 41897\nLlllcw== 41898\nIFNpbXBsZU5hbWU= 41899\nZGJo 41900\nJ2Vu 41901\nIG5vbnNlbnNl 41902\nIHBoaWxvc29waGljYWw= 41903\nKGdldENvbnRleHQ= 41904\nIGlzc28= 41905\nIEFDRQ== 41906\nc3RhcnREYXRl 41907\nIGLEmWQ= 41908\nIEFVVEhPUg== 41909\nIEdsb2Jl 41910\nIGluc2VjdHM= 41911\nX0Fs 41912\ndXNoaW5n 41913\n6K6w 41914\nL0hvbWU= 41915\nIExvY2FsRGF0ZQ== 41916\nbmVlZGVk 41917\naGVzaXZl 41918\nIGlsbHVzaW9u 41919\n5LqM 41920\nIHRyYXQ= 41921\neG8= 41922\nL2RldGFpbA== 41923\nX01BVENI 41924\nIGJyb2FkYmFuZA== 41925\nIHdhbA== 41926\nIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbg== 41927\nSVJFQ1RJT04= 41928\nIG5vcnRoZWFzdA== 41929\nZXNpdW0= 41930\nIENsaWVudGU= 41931\ndWxhbmNl 41932\nbnR5 41933\nIHRlY24= 41934\nRGV2aWNlcw== 41935\nIGdyYWlucw== 41936\nIE9n 41937\nIFNFTA== 41938\ndWRpYW50 41939\nICsrOwo= 41940\nIGV4cGxhbmF0aW9ucw== 41941\nb2Njbw== 41942\nIGRpZXRz 41943\nIGNvaG9ydA== 41944\nKGNvbnRyb2xsZXI= 41945\nLkl0ZXJhdG9y 41946\nLXJpY2g= 41947\ncm9jZXNz 41948\nR0Q= 41949\nIGNhcmJvaHlkcg== 41950\nIGZyaWVk 41951\nIEVtcGxveW1lbnQ= 41952\n7J6l 41953\nIExlb25hcmQ= 41954\nXyR7 41955\ncXVhcmVz 41956\nIGNvbXBhbmlvbnM= 41957\nIHBhcmlz 41958\nIHN0aW11bGF0aW9u 41959\nIFpvbw== 41960\nIHJlbGV2YW5jZQ== 41961\nIENvbG91cg== 41962\nIHNwZWFy 41963\nb3Rpb25hbA== 41964\nIExpdGU= 41965\nIEtvc3Rlbg== 41966\nIMOz 41967\nX2F0dGFjaG1lbnQ= 41968\nb3JwaGlj 41969\nIGRhbWl0 41970\nIGRsZw== 41971\nIHRocml2ZQ== 41972\nQ0hBTkdF 41973\nIEFwcGFyZW50bHk= 41974\nIGF0dWFs 41975\nIHJvb3RlZA== 41976\nKGltYWdlcw== 41977\nYXdp 41978\nYXJpYXQ= 41979\nIGNoZXJyeQ== 41980\nU1RBVElD 41981\nbW50 41982\nIFVzZXJJZA== 41983\naWxsZXQ= 41984\nIEhpc3Bhbmlj 41985\nIG5haw== 41986\nIGNlbnRybw== 41987\nIGRpbXM= 41988\nX2luaXRpYWxpemU= 41989\nxLFr 41990\nIENlbnRlcnM= 41991\nUkVO 41992\nIGV2b2x1dGlvbmFyeQ== 41993\nIFRvcGljcw== 41994\nX2RhbWFnZQ== 41995\nZW1lcg== 41996\nIHJ1bmQ= 41997\nIHB1bmlzaGVk 41998\nIGN1Ymlj 41999\nZmFpcg== 42000\nW107Cgo= 42001\nIGluc3RhbnRpYXRl 42002\nIG92ZXJzZWU= 42003\nLWRlbGV0ZQ== 42004\ndW50ZWVy 42005\nc3RhcnRUaW1l 42006\nIFBpcGVsaW5l 42007\nX0dBTUU= 42008\nIENpcg== 42009\nCU51bGw= 42010\nLkZvcm1hdHRpbmc= 42011\ndWN1bWJlcg== 42012\nIFJpZGU= 42013\nIHpvbw== 42014\nIGNoZWNrZXI= 42015\n5ZCM 42016\nPUM= 42017\nIGdyaXQ= 42018\nIik7Ly8= 42019\nX3h5 42020\nIERlY2xhcmF0aW9u 42021\nIGNhbGxhYmxl 42022\nRm9v 42023\nIExpc3RJdGVt 42024\nIGluYWNjdXI= 42025\nbWxpbg== 42026\nCURhdGE= 42027\nIGV2b2x2aW5n 42028\nYXdhbg== 42029\nIGNhZmU= 42030\nZm9saw== 42031\nX0lEWA== 42032\nIEFueXRoaW5n 42033\nIFBhbGVzdGluZQ== 42034\nIEdyaWRWaWV3 42035\nIGNvbG9ueQ== 42036\nIEdlcm1hbnM= 42037\nKCs= 42038\nLnBpZA== 42039\nLmpzeA== 42040\nIFN1cGVyaW9y 42041\nQ2hyaXN0aWFu 42042\nIExlY3Q= 42043\nCUdhbWU= 42044\nIGluc3RydW1lbnRhbA== 42045\nQW5pbWF0aW9ucw== 42046\n0LTQsNC7 42047\nIE1vc2Vz 42048\nCQkNCgkJDQo= 42049\nenM= 42050\na3Rl 42051\n5Lia 42052\nX0RJU1Q= 42053\nYml0bWFw 42054\nZEI= 42055\nIHBlcnNpc3RlbmNl 42056\n0YDQvtGB 42057\nJGw= 42058\nQnJvbg== 42059\nIHt8 42060\nX2NoYXJ0 42061\nIENvbnN1bQ== 42062\nIGhlbXA= 42063\nICIpKQo= 42064\nIGF0dGFja2Vycw== 42065\nIGtub3dsZWRnZWFibGU= 42066\nIGNldA== 42067\nIHZpcnVzZXM= 42068\nJ0k= 42069\nIHBpdGNoZXI= 42070\nIHN3ZWVwaW5n 42071\nPWxpc3Q= 42072\nYXB0b3Bz 42073\nLmRlcHRo 42074\nIGluc3RydWN0ZWQ= 42075\nIFJ1cw== 42076\nYmVuaGF2bg== 42077\nINC40L0= 42078\nU3BvcnRz 42079\nIG9uc2V0 42080\n5p2D 42081\nLlJFRA== 42082\nX3Np 42083\nIFBTVA== 42084\nLm9uQ2hhbmdl 42085\nPnRhZw== 42086\nIFJvaA== 42087\nX2NoYXJhY3Rlcg== 42088\nIExhd3M= 42089\nIEJhY2hlbG9y 42090\nX3N3YXA= 42091\nLnJlYWN0aXZleA== 42092\nIHJld2FyZGluZw== 42093\nTWVkaXVt 42094\nLVs= 42095\nIFJlY2VudGx5 42096\nSm9pbnQ= 42097\ncGFydGl0aW9u 42098\nIE1pbnV0ZXM= 42099\nIGluZG8= 42100\nIGFic29yYmVk 42101\nIEdO 42102\nX0lORA== 42103\nIHNhYmVy 42104\nU3Bhd24= 42105\nb3V0cHV0cw== 42106\nIEplZmZyZXk= 42107\nIG1lZGlldmFs 42108\naGVk 42109\nR3VpZGU= 42110\nIHBzeWNobw== 42111\nIGdsYW0= 42112\nRWxpbQ== 42113\nw6RkY2hlbg== 42114\nX3BsYWlu 42115\nIFNhdQ== 42116\nLWZvdXI= 42117\nIGFuYWx5emluZw== 42118\nUVVFUlk= 42119\nIHRvbWF0bw== 42120\nX2J1dHRvbnM= 42121\nVkVO 42122\nLnNldFN0YXR1cw== 42123\nLlVybA== 42124\nKwoK 42125\nIGNvbXBsYWluaW5n 42126\nZGVncmVl 42127\nY29uZmlybWVk 42128\nIHN1YnQ= 42129\ncGFyc2Vk 42130\nIHRvcnF1ZQ== 42131\nIHRyb3VibGVk 42132\nIFRBUkdFVA== 42133\nIHRyYWRlbWFya3M= 42134\nIENvb3JkaW5hdGU= 42135\nIFZpdg== 42136\nIC8vfQoK 42137\nIGFwcsOocw== 42138\nLmdldFBvc2l0aW9u 42139\nKEtleUNvZGU= 42140\nIFNpbHZh 42141\nIG1ldGVvcg== 42142\nIGVuZG9yc2VtZW50 42143\nT3ZlcnZpZXc= 42144\nIFBvc3M= 42145\nLkluamVjdA== 42146\nIGV2ZW5seQ== 42147\nIHZpc3VhbGl6YXRpb24= 42148\nIHdjaGFy 42149\nIEhETUk= 42150\nIGZ1bmN0 42151\naWNrbmFtZQ== 42152\nJywnJywn 42153\nIGZvcndhcmRz 42154\nTWFuYWdlZE9iamVjdA== 42155\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 42156\nCXNlcnZlcg== 42157\nIE91dGxvb2s= 42158\nIENocm9uaWNsZQ== 42159\nIGR1YmJlZA== 42160\nIGRvaw== 42161\nIFdlYXI= 42162\nLkFM 42163\ncGFyZW4= 42164\nLkludGVyZmFjZQ== 42165\nSW50ZXJmYWNlcw== 42166\nLmNvZA== 42167\nIGRpYg== 42168\nLkdsb2JhbGl6YXRpb24= 42169\nIEFjYWRlbWlj 42170\nIGFzc21z 42171\nQXV0b20= 42172\nIGx3 42173\nIE5X 42174\nICYmDQo= 42175\nIHByb2JsZW1h 42176\nIE1hbnVmYWN0dXJpbmc= 42177\nbGltaXRz 42178\nLW1vYmlsZQ== 42179\nIGZpbG1l 42180\nL21hcA== 42181\nIGRvaXQ= 42182\nIEluaw== 42183\nIHN1ZWQ= 42184\nLmFycg== 42185\nIHVuZGVybWlu 42186\nIFByb2M= 42187\nY3JvbGxWaWV3 42188\nX18k 42189\nIHNpZGV3YWxr 42190\nKHRoYXQ= 42191\n4Li3 42192\nW3E= 42193\nZ3JhbW1hcg== 42194\nIHTDqw== 42195\ncXVpdG8= 42196\nIHNwaXJhbA== 42197\nZXh0ZW5kZWQ= 42198\nIGZvY2Fs 42199\nIGRpZ2dpbmc= 42200\ncGFz 42201\nIFRhbGw= 42202\nLnByb3h5 42203\naXR1cmVz 42204\nVFJBQ1Q= 42205\nIFJlYWxt 42206\nIGZlZGVy 42207\nIG9yaWVudGVk 42208\nIEFsdGVybmF0aXZl 42209\nIG93ZQ== 42210\nIHNvdXJjZWQ= 42211\naW5rZXI= 42212\nLmRldA== 42213\nU2Vw 42214\nIFF1aQ== 42215\nIFBhbG1lcg== 42216\nKF8s 42217\nc2FtcGxlcw== 42218\nb3llcg== 42219\ndWxsYW4= 42220\ncXVleg== 42221\nRWRnZXM= 42222\nIHNob3V0 42223\nIEFjaGll 42224\nIGhhYXI= 42225\nX0NvbnN0cnVjdA== 42226\nIHByZW1hdHVyZQ== 42227\nIHJldmVydA== 42228\nJykuCg== 42229\nIHNjaG4= 42230\nZmlsdGVyZWQ= 42231\nbnVsbHB0cg== 42232\nU2F2ZWQ= 42233\naXRlY3R1cmU= 42234\nQ0xB 42235\nIHZs 42236\nc3RlbGw= 42237\nCU1l 42238\nIExpcA== 42239\nbmF0aW9uYWw= 42240\nIHdob2xseQ== 42241\nIHNwcmluZ3M= 42242\nLlRpbWVy 42243\nCXNyYw== 42244\nZWxzZW4= 42245\n5YW2 42246\nIGNvbW11bmljYXRpbmc= 42247\nIFF1aXo= 42248\nIHRlbmc= 42249\nIGdleg== 42250\nIE91dHNpZGU= 42251\nLlNpZ24= 42252\nKGNz 42253\nIGRpc3B1dGVz 42254\nIFdlaXNz 42255\nYW5uZXM= 42256\nPk5v 42257\nIEJhY2g= 42258\nLnJlbW92ZUFsbA== 42259\ncmVmZXI= 42260\nL2Rhc2hib2FyZA== 42261\nIEFqYXg= 42262\nSW5kZXhDaGFuZ2Vk 42263\nIFdlYWs= 42264\nJyIK 42265\nIHNpZ2h0cw== 42266\nYWNjZXNzVG9rZW4= 42267\nIEpvaQ== 42268\nKGRvbWFpbg== 42269\nCWN2 42270\nIGNvbnRpbnVhdGlvbg== 42271\nIHBsdW0= 42272\nYWRpcg== 42273\nLnNldE1lc3NhZ2U= 42274\nIO+8jA== 42275\nIHN3YWxsb3c= 42276\nIExhbXA= 42277\nIHF3 42278\nIHV1 42279\nQ29pbg== 42280\ndWJpYw== 42281\nIERlYWxz 42282\ncmFjZQ== 42283\nIGRpY3RhdG9y 42284\nIG1lbWU= 42285\ndHVybmVk 42286\nIEp1bGll 42287\nLmdyaWRDb2x1bW4= 42288\nIHB1cHB5 42289\nIHBhbQ== 42290\nICl7DQo= 42291\nIGludml0aW5n 42292\nIGZyZW5jaA== 42293\ndmlt 42294\nIHdyYXBwaW5n 42295\nICMtfQo= 42296\nKFst 42297\nRWFybHk= 42298\nIHNoaW55 42299\nLmZhY2Vz 42300\nIHJlYmVsbA== 42301\nYWJjZGVm 42302\nw6RsdA== 42303\nIGVzdGltYXRpb24= 42304\ncGh5cw== 42305\nbG9zdXJlcw== 42306\nX1JFTA== 42307\nIGV4Y2x1c2lvbg== 42308\nIFNreXBl 42309\nd2Vpc2U= 42310\nLXN0b3A= 42311\nbm90aGluZw== 42312\nIEVnZw== 42313\naXNvcnM= 42314\nUmljaGFyZA== 42315\nIGNvdW5zZWxpbmc= 42316\nIGNvbW1lbQ== 42317\nIFFNZXNzYWdlQm94 42318\nIFN5bmQ= 42319\nIEZyb3N0 42320\nIENvbXBldGl0aW9u 42321\nIEF3YWtl 42322\nIHRlZA== 42323\naWNpb25lcw== 42324\nIERldkNvbXBvbmVudHM= 42325\nVkVSVElTRU1FTlQ= 42326\nb3R0aQ== 42327\nLnJ1bm5lcg== 42328\nIHVuaXF1ZWx5 42329\nLmZsYWc= 42330\nCXJz 42331\nX2dlbmVyaWM= 42332\nIGBgYAo= 42333\nQUNISU5F 42334\nIG1laW4= 42335\nKEFwcGxpY2F0aW9u 42336\nKGJy 42337\nIHJhdGlvcw== 42338\nOiw= 42339\nIFhDVGVzdA== 42340\ndXN0YWluYWJsZQ== 42341\nLXd3dw== 42342\naXRsZXM= 42343\nX1RFTVA= 42344\nIHN5c3Q= 42345\ndW1lcmljVXBEb3du 42346\nCWFzc2VydFRydWU= 42347\nIHdm 42348\nLnBlZWs= 42349\nIEJ1bGc= 42350\nIHRlcnJpZnlpbmc= 42351\nLk1PREU= 42352\nIEdX 42353\nw6Fy 42354\nIGZpYw== 42355\nIGNvbW1pdG1lbnRz 42356\nLXRlY2g= 42357\nIExpcXVpZA== 42358\nb3Bleg== 42359\nemhlaW1lcg== 42360\nYcOxYQ== 42361\nLW1lZGlh 42362\nKGFuaW1hdGVk 42363\nX2dvYWw= 42364\nIGd1bQ== 42365\neXN0b25l 42366\nLlNFVA== 42367\nIFdlbmQ= 42368\nc2V0Q2VsbFZhbHVl 42369\nIG1zZ3M= 42370\nY2FzaA== 42371\nQUxMT0M= 42372\nL2F3cw== 42373\nIG1pY3Jvd2F2ZQ== 42374\nLlBvaW50ZXI= 42375\nCUNvbnNvbGU= 42376\nX3NvcnRlZA== 42377\nIEZpbGlw 42378\nUHJvZA== 42379\nIC8vITw= 42380\naW5ncm91cA== 42381\nIGtz 42382\nX1RSSQ== 42383\nIHRlYXNwb29u 42384\nIEFUVA== 42385\nIHJlY292ZXJpbmc= 42386\nIEdMT0JBTA== 42387\nLlBhcg== 42388\nIC8+Owo= 42389\nIG1hcmJsZQ== 42390\ndWxhdG9ycw== 42391\nIEN5Y2xl 42392\nIGhlcmJz 42393\nX21ldHJpYw== 42394\nKSE= 42395\nX0NMT0NL 42396\nX0J1dHRvbg== 42397\nSGFycnk= 42398\n6L+b 42399\nIHN0cmFpbnM= 42400\nIEFwcEJhcg== 42401\nIENoYW4= 42402\nL3ZpZGVv 42403\nIGJhbQ== 42404\nLlByb2dyZXNz 42405\nJGY= 42406\nbGVtZW4= 42407\nIGlycmVndWxhcg== 42408\nIER1bmNhbg== 42409\nIE1pbnQ= 42410\nLXZpZGVv 42411\n4Ka+ 42412\nw7N3bg== 42413\nIEVNUFRZ 42414\nIHN0YWNrZWQ= 42415\nIEhB 42416\nX2N1dA== 42417\nIHdoZXJlaW4= 42418\nIFdheXM= 42419\nKGNvdW50ZXI= 42420\n6K+V 42421\nRm9ybUdyb3Vw 42422\nIGJsZXc= 42423\nY291cnNlcw== 42424\nIHByb2R1Y3Rvcw== 42425\ncnlz 42426\nIFJlc3Ry 42427\nIHN0eWxpbmc= 42428\nPnM= 42429\nIHBpdg== 42430\nIGl0ZXJ0b29scw== 42431\nZ2V0UmVwb3NpdG9yeQ== 42432\nIElr 42433\nX2RldmljZXM= 42434\nbGF5dWk= 42435\nIGhhbGZ3YXk= 42436\nIGZyYW7Dpw== 42437\nIHR1bmluZw== 42438\nT0E= 42439\nX05vZGU= 42440\nYXJkZQ== 42441\nIGZpZXJjZQ== 42442\nbGljdGVk 42443\nIw0K 42444\nIGJyZWFrdGhyb3VnaA== 42445\nIEVyaWs= 42446\nIGJyaWRl 42447\nIC4i 42448\nY3VsdXM= 42449\naW5zaWRl 42450\nIEluZGlhbmFwb2xpcw== 42451\nIEVF 42452\nIHlvZw== 42453\ndXJyZXQ= 42454\nLmZz 42455\nLmdyYWQ= 42456\nX2NhcmRz 42457\nX2FjY3VyYWN5 42458\nX2VwaQ== 42459\ncXVlZGE= 42460\nL29yZw== 42461\n6aqM 42462\nIGNvbXB0ZQ== 42463\nKSlb 42464\nT3V0c2lkZQ== 42465\nR3JlYXRlcg== 42466\nIFJlbmRlcmVy 42467\nLmFjdG9y 42468\nQWNjb3VudHM= 42469\nSWRsZQ== 42470\nX2hvdXJz 42471\nZXJuZXI= 42472\nSm9pbmVk 42473\nIG1lbmo= 42474\ncmVxdWlyZXM= 42475\nIE9QRVI= 42476\nLnJlbW92ZUNoaWxk 42477\nCXNw 42478\nIGVzc2U= 42479\ncmlmdA== 42480\neEZF 42481\nIFNoYWtlc3BlYXJl 42482\nX19fX19fX19fX19f 42483\nIGJ1ZGdldHM= 42484\nTW9kZWxTdGF0ZQ== 42485\nZmlsbGFibGU= 42486\nLWNvbXBvbmVudA== 42487\nb2Nvcw== 42488\nIEJVVFRPTg== 42489\nL2lv 42490\nLG91dA== 42491\nc21z 42492\nVGhvbWFz 42493\nIEFybWVk 42494\ncmVzdW1l 42495\nIHJvdGF0aW5n 42496\nIFZhdWx0 42497\nIHNldXM= 42498\nLigq 42499\nIGFtaW5v 42500\nIFtdKTsKCg== 42501\nIHByb3ZvYw== 42502\nbm94 42503\nLkdldEVudW1lcmF0b3I= 42504\nPT09PT09PQo= 42505\n5paZ 42506\nX3Njcm9sbA== 42507\nIGZpbG1lZA== 42508\nIFNvY2k= 42509\nZ2Fw 42510\nZ3Jv 42511\nVm90ZQ== 42512\nIkJ1dA== 42513\nX1JD 42514\nQW5pbWFs 42515\nwoA= 42516\naWJpbGU= 42517\nIGF3YWtlbg== 42518\nb3Jlc3Q= 42519\naW5qYQ== 42520\nIEl2YW4= 42521\nKENvbW1hbmQ= 42522\nICoqKioq 42523\nzrc= 42524\nIGt2aW5kZXI= 42525\nL2hlbHBlcnM= 42526\nX2Nhc2Vz 42527\ndGc= 42528\n7IS4 42529\nUmVnaXN0ZXJlZA== 42530\nCXBhc3M= 42531\nX2RpZ2l0cw== 42532\nIGNvbnRvdXI= 42533\nIGluZmFudHM= 42534\nIGp1c3RpZmljYXRpb24= 42535\nIEZvcnR1bmF0ZWx5 42536\nQ29udHI= 42537\nIG9uQ3JlYXRlVmlldw== 42538\nX1NBTVBMRQ== 42539\nIGFsbG93TnVsbA== 42540\nIG51ZA== 42541\nIGZldGNoZWQ= 42542\nX2VxdQ== 42543\nIFVuYWJsZQ== 42544\nPVwiIg== 42545\nPnsK 42546\nIGNvbW1pdHRlZXM= 42547\naXN0ZW1h 42548\nKyIu 42549\nw61hbg== 42550\nbWFudA== 42551\nIHNvdXRoZWFzdA== 42552\n77yMCg== 42553\nZGlhbG9ncw== 42554\nUFJPSkVDVA== 42555\nY2hhcmdlcg== 42556\nLXBvcnQ= 42557\nKHV1aWQ= 42558\nLmV4cG9ydA== 42559\nU2l4 42560\nIFJQ 42561\nUHJlbQ== 42562\nIGNvbnNjaWVuY2U= 42563\nIG1hcmdpblJpZ2h0 42564\nX2Rpc3RyaWJ1dGlvbg== 42565\neWFtbA== 42566\ncmVzaXppbmc= 42567\nRG9jaw== 42568\nIExvY2F0aW9ucw== 42569\nR1k= 42570\nU2VlZA== 42571\nQlVGRkVS 42572\nb3NzaXA= 42573\ndWxsZW4= 42574\nVGhpbmdz 42575\nLXNlbGY= 42576\nLnBvbGw= 42577\nUExBWUVS 42578\nIOWu 42579\nR1JPVVA= 42580\nIEF3YXk= 42581\nIGdvc3BlbA== 42582\neGZk 42583\nTWFyeQ== 42584\nIFBvcnRhYmxl 42585\nVFVSRQ== 42586\nIHV0aWxpcw== 42587\nIHNlaXQ= 42588\nIHN0cmFuZA== 42589\nIHRyYW5zYw== 42590\nIChe 42591\nIEFsZnJlZA== 42592\nLm1lbQ== 42593\nLmNpcmNsZQ== 42594\nIH4v 42595\nZm9yY2luZw== 42596\nIHJpb3Q= 42597\ncHJveA== 42598\nVEhPTg== 42599\naXphY2nDs24= 42600\nIE5J 42601\ncm9zdA== 42602\nIGRpc3Bybw== 42603\nX2luc3RhbmNlcw== 42604\n77yM4oCc 42605\nb2dyYXBoZXI= 42606\nZW5kYXM= 42607\nIElzYWFj 42608\nIFBpbmU= 42609\nL2Rpcw== 42610\nIGNvbG9yV2l0aA== 42611\naXRlcmF0ZQ== 42612\nX3N0cmlkZQ== 42613\nIHB1bnRv 42614\nLkV2ZW50QXJncw== 42615\nKGNlbnRlcg== 42616\nIG5laWdoYm9yaW5n 42617\nIFByaXNvbg== 42618\nIE1lc3Nlbmdlcg== 42619\nIGVwaWRlbWlj 42620\nZGFv 42621\nX2NvbXBsZXg= 42622\nIGdyYXZlbA== 42623\nX0RJUA== 42624\nw6ltZW50 42625\nIEFyaQ== 42626\nX2JpdG1hcA== 42627\nLnF1aXQ= 42628\nKHZhbGlk 42629\nIHBlbmQ= 42630\nIHJlc3BpcmF0b3J5 42631\nIHJlYm91bmQ= 42632\nRGVmYXVsdFZhbHVl 42633\n44Ot 42634\nIGNvbW1pdHM= 42635\nLnRlc3Rz 42636\nX2Zy 42637\naXRldA== 42638\nLnNm 42639\nIHNwYWNlY3JhZnQ= 42640\nY3JpdGljYWw= 42641\nIGRlcHJlc3NlZA== 42642\nIEFueU9iamVjdA== 42643\nIHVuYg== 42644\nIGRpc2Nlcm4= 42645\nKG15c3Fs 42646\nTGF0aW4= 42647\nIEJvZw== 42648\nIFdpbGRsaWZl 42649\nVG9GaWxl 42650\naW94aWQ= 42651\nQFJlc3RDb250cm9sbGVy 42652\nICIkKA== 42653\nIDw8Ig== 42654\nIGRlZmVjdHM= 42655\nIGRhdHVt 42656\naGlu 42657\nIHJlYWxpemFy 42658\nYW55YWh1 42659\nIFNpZw== 42660\nQERhdGE= 42661\nYWRhcHRpdmU= 42662\nIENhdGhlcmluZQ== 42663\nLmNy 42664\nIENPT0tJRQ== 42665\nIHBpY3R1cmVk 42666\nIEZpZ2h0ZXI= 42667\nUXVlcnlhYmxl 42668\nIEFueXdheQ== 42669\nIEdMRlc= 42670\nX25hbWVzcGFjZQ== 42671\nX2Z0 42672\nIF0p 42673\nT3JnYW5pemF0aW9u 42674\nIGNvbnN0aXR1dGVz 42675\nIHF1YW5k 42676\nKGNodW5r 42677\nIi8+DQo= 42678\nIExha2Vz 42679\nbWFpbndpbmRvdw== 42680\nQ2FydGh5 42681\nc3Bpbg== 42682\nKGNzdg== 42683\nOnJlZA== 42684\nLWNvbW1lcmNl 42685\n4Li5 42686\nIGRpc2NvdmVyaW5n 42687\nIGVjbw== 42688\nX2ZhYw== 42689\naW5jZXRvbg== 42690\nIEdyZWVucw== 42691\nand0 42692\n2LU= 42693\nIEJyb25jb3M= 42694\nIEdvb2Rz 42695\nKEdUSw== 42696\nIHJldHVyblZhbHVl 42697\nIHNpZW1wcmU= 42698\nIG5ldXRy 42699\nd2VudA== 42700\nIE5hdGFs 42701\nIGVudGh1c2lhc3RpYw== 42702\n4buN 42703\nRk4= 42704\nL2RhdGFiYXNl 42705\nQ2F0YWxvZw== 42706\nIGJydW4= 42707\nIEthc2g= 42708\nX1Bs 42709\naXNjcmlt 42710\nLHdpZHRo 42711\nIGlubWF0ZXM= 42712\nQXNzaWdubWVudA== 42713\nIEhhdmVu 42714\nIHBsYXlncm91bmQ= 42715\nZXhhbQ== 42716\nQENvbnRyb2xsZXI= 42717\ndWxpYXI= 42718\nLmdldFBhcmVudA== 42719\nICI7Cgo= 42720\nOnNpemU= 42721\naXNzb3Jz 42722\nIGZpcw== 42723\nIGFsYw== 42724\nZW5zYXRpb24= 42725\nIE5peG9u 42726\nIG1pZ2h0eQ== 42727\nLXN0cg== 42728\nX3NwZWNpYWw= 42729\nX0FEQw== 42730\nIFR3aWc= 42731\ndW1ibGluZw== 42732\nLWFkZHJlc3M= 42733\nIGhlcm9pbg== 42734\nWVRF 42735\nICAgICAgICAgICAgICAgICAK 42736\nRnJpZW5k 42737\nIGF2ZQ== 42738\nIFBORw== 42739\nIEt1cmRpc2g= 42740\nRGF0YVNldENoYW5nZWQ= 42741\nIGJsYWRlcw== 42742\nYnJhbA== 42743\nU3RlYW0= 42744\nIHNpZ3U= 42745\nSVJUVUFM 42746\nYWNvcw== 42747\nVURQ 42748\nKGRhdGFiYXNl 42749\naGVj 42750\nIFN0cmluZ3M= 42751\nX3NjYWxhcg== 42752\nCWRlc2M= 42753\nIFRMUw== 42754\nOyIK 42755\nIENvcmJ5bg== 42756\nU2ltcGxlTmFtZQ== 42757\ndWVsbA== 42758\nIEVudHJl 42759\nZWxsaXRlcw== 42760\nLXBsYWNl 42761\nIGZyYW5rbHk= 42762\nIEVyZg== 42763\nQ0VM 42764\nIHBhw61z 42765\nIGhlZGdl 42766\nIGxhdGVudA== 42767\nIElSUQ== 42768\nIEhlcmFsZA== 42769\nIFByZWM= 42770\n67O0 42771\nLlRFWFQ= 42772\nU2FsYXJ5 42773\nIGF1dHVtbg== 42774\nIHRyYXZhaWw= 42775\nLlN1bQ== 42776\nIGNhcmVk 42777\nTW9y 42778\nIGludHVpdGl2ZQ== 42779\nIGpvdXJuYWxz 42780\nX0lU 42781\nIFRyb3U= 42782\n5Lyg 42783\nSGFzQ29sdW1uTmFtZQ== 42784\nQ29tcG9zaXRl 42785\nIHNwaWNl 42786\nX2Rpc2s= 42787\nX0NPREVT 42788\nIEludHJvZHVjZWQ= 42789\naW9uYQ== 42790\nIG51ZXN0cmE= 42791\nb2N0 42792\nICAgIAogICAgCiAgICAK 42793\nKHBhcmFtZXRlcg== 42794\nIHN0dWRpb3M= 42795\nIHByb2plY3RJZA== 42796\nIGJkc20= 42797\nLlNxbENsaWVudA== 42798\naW1pemVy 42799\nIENBUkQ= 42800\nK3Q= 42801\nYWFu 42802\nLnNvbA== 42803\nX0FkanVzdA== 42804\nIHJpZ2h0ZW91cw== 42805\nIExvZ2dpbmc= 42806\nLmZpbHRlcnM= 42807\nX1RBQg== 42808\nCXN5cw== 42809\ncm9waGlj 42810\nb3RoZXJhcHk= 42811\nIEJyb3dzZQ== 42812\na2V5Ym9hcmQ= 42813\nUk9O 42814\nK1w= 42815\ncm9wcGVk 42816\nIGV4dGVuc2l2ZWx5 42817\nZms= 42818\nIGxpbWU= 42819\neWVhcnM= 42820\nRXhj 42821\nIHNwaA== 42822\nIGNoZWF0aW5n 42823\nYW5kcm8= 42824\nw61v 42825\nIHByaW5jZQ== 42826\nb2lyZQ== 42827\nIERlc3RpbmF0aW9u 42828\nIENvbnZlcnRz 42829\nIHVwc3RyZWFt 42830\nb2xlZA== 42831\nIHNlcnZhbnRz 42832\nIHNlbWFudGlj 42833\nIGNydW5jaA== 42834\nIGV2ZW50dWFs 42835\ncnVubmVy 42836\nL2Vycm9y 42837\nU3Bpbg== 42838\nIHNlY3JldGx5 42839\nIGFzc2VtYmxl 42840\nLlBlcnNvbg== 42841\nZW5kZXJyb3I= 42842\nXzw= 42843\nIHBlbmRhbnQ= 42844\nU2xlZXA= 42845\nIENoZW1pc3RyeQ== 42846\nIGJvc3Nlcw== 42847\nbGs= 42848\nKSkpLAo= 42849\nQmxvY2tseQ== 42850\nREVWSUNF 42851\nIHJlZmxlY3Rpbmc= 42852\nIGFtcGxl 42853\nTWlsbGlzZWNvbmRz 42854\nIFByZXNpZGVudGlhbA== 42855\nIHVzdWFyaW9z 42856\nIE5a 42857\nIFNhbGFyeQ== 42858\nIEFtYW5kYQ== 42859\nX25w 42860\nanVyeQ== 42861\nIGvDtm4= 42862\nIHRoZXJhcGlzdA== 42863\nIGhvbW9zZXh1YWw= 42864\nIERyYWtl 42865\nLXdpbmRvdw== 42866\nIExvY2F0ZWQ= 42867\nLkRyaXZlcg== 42868\nIFZJREVP 42869\nIG1lcmNoYW50cw== 42870\nIENoZXN0 42871\nLWxvY2s= 42872\nL3BocA== 42873\nIG1pbGFubw== 42874\nX1NUWUxF 42875\nYXJnZXI= 42876\naWRlYQ== 42877\nR1VJRA== 42878\nYWR2YW5jZWQ= 42879\nbWVhbA== 42880\nT3B0aW9uc0l0ZW1TZWxlY3RlZA== 42881\nPScl 42882\nIENoYW0= 42883\nOmRhdGE= 42884\nKHN0YXQ= 42885\nV2lsbEFwcGVhcg== 42886\nIGluZm9ybWFs 42887\nYWpp 42888\nIHJlcHJvZHVjdGl2ZQ== 42889\nIENBUw== 42890\n44Gj 42891\nRlVOQw== 42892\nIFJ1dGg= 42893\nKSso 42894\nQ09OU1Q= 42895\nIEZhbnM= 42896\nIGdyb3VwSWQ= 42897\neGZmZmZmZmZm 42898\nIHNhbXBsZXI= 42899\nIH19Ij4= 42900\nLnRoZQ== 42901\nIGhvbGxvdw== 42902\nV0FZ 42903\nIEZhY3VsdHk= 42904\nQXR0cmlidXRlZFN0cmluZw== 42905\nIExvb2tz 42906\nIFJleA== 42907\nams= 42908\nIE1JTA== 42909\nIGJhcmQ= 42910\nLkxvbmc= 42911\nIGxpdmVzdA== 42912\nIHNrYWw= 42913\naWNpc20= 42914\nTUFJTg== 42915\nIG11Y2hv 42916\nQk9EWQ== 42917\nIGVzZQ== 42918\nCXVzZQ== 42919\nRm9vdA== 42920\nLlNRTEV4Y2VwdGlvbg== 42921\nIGluaGVyaXRhbmNl 42922\ncmVjZWl2ZWQ= 42923\nIHB1dGFz 42924\nZWRpcw== 42925\nYWxzYQ== 42926\nIEVycm9yTWVzc2FnZQ== 42927\nQm9va2luZw== 42928\nIHRyYWN0 42929\nYWN6 42930\nIENhbnQ= 42931\nX3JlZ2V4 42932\nIGlkZW9sb2dpY2Fs 42933\nIGppaGFk 42934\naG9z 42935\nL3N5cw== 42936\nY29sbQ== 42937\nKHBvb2w= 42938\nIGVzdMOhbg== 42939\nIFBlbmRpbmc= 42940\nZW3DoXM= 42941\nIGt0w7NyeQ== 42942\nKSk7CgoK 42943\ndHJhbnNhY3Rpb25z 42944\nIHdpZWxk 42945\naXRlcmU= 42946\nZXJ0dXJl 42947\nX3Nz 42948\nIHN0cmV0Y2hpbmc= 42949\nIHByaXNvbmVy 42950\nLlJlYWRBbGw= 42951\nIGJlc2No 42952\nLS07DQo= 42953\nIGNyaXNw 42954\nX1NDQU4= 42955\nIGFl 42956\nU3RyaWN0 42957\nIE1pbm5lYXBvbGlz 42958\nIEJvZWluZw== 42959\nYXJpcw== 42960\ncmVr 42961\nX3BpcGU= 42962\nIHByaWVzdHM= 42963\nKEVJRg== 42964\nZWhpY2xlcw== 42965\nIEludGVyYWN0aXZl 42966\nYmV0d2Vlbg== 42967\nCU51bGxDaGVjaw== 42968\nIEJsYWly 42969\nIEx0 42970\nX2lubGluZQ== 42971\nZXRoeWw= 42972\nwrw= 42973\nX3BhY2thZ2Vz 42974\nIGJhcnJlbHM= 42975\nX2hl 42976\nIHJlZ2V4cA== 42977\nX3B0cw== 42978\nX0hhbmRsZXI= 42979\naW5ndWxhcg== 42980\nIE5pc3Nhbg== 42981\nIFJhbmNo 42982\nIHBlcmNo 42983\nVW5zdXBwb3J0ZWQ= 42984\nU21pdGg= 42985\nIExlZ2VuZHM= 42986\nTWk= 42987\nIGdm 42988\nc3RlZGVy 42989\nIGFjcXVpcmluZw== 42990\nIHNpbXVsYXRvcg== 42991\nKCksIg== 42992\ncmVjZWl2ZQ== 42993\nIGlucGxhY2U= 42994\nQUNUSU9O 42995\nIFdlYkRyaXZlcg== 42996\nZmlsZXN5c3RlbQ== 42997\nPE9yZGVy 42998\nbG9wZW4= 42999\nIEhFSUdIVA== 43000\nLnNldEJvcmRlcg== 43001\njbA= 43002\nX19bIg== 43003\nIGNsYW1w 43004\nU2Vnb2U= 43005\nYmFuZHM= 43006\ndG9MaXN0 43007\nYW1iYQ== 43008\nPicrCg== 43009\nIGNyZWRpYmxl 43010\nYW1hdA== 43011\ncGxheWluZw== 43012\nLnNldEltYWdlUmVzb3VyY2U= 43013\ncXVlbA== 43014\nIHBvZHI= 43015\nZ2VvbQ== 43016\nRWs= 43017\nIFFhdGFy 43018\nIGdlbGQ= 43019\nPycsCg== 43020\nIGN5bA== 43021\nKGF4 43022\nIFdJ 43023\ndXJhbGx5 43024\nIEJyYXNpbA== 43025\nIHNlbnph 43026\nYWxleQ== 43027\nb25lbg== 43028\nIGJhaA== 43029\nIG1vbGVjdWxl 43030\nUmFk 43031\n6L+w 43032\nQU5DSA== 43033\nLWJhY2tncm91bmQ= 43034\nLWFnZW50 43035\nIHByb2xpZmVy 43036\nOmJvb2xlYW4= 43037\nIHRpZGU= 43038\nZXJpYWxpemVy 43039\nXzsNCg== 43040\nRmVl 43041\nKiop 43042\nZXJneQ== 43043\nIEhvbm9y 43044\nLkxvZ2dpbmc= 43045\naXJpcw== 43046\nIHVuZGVybWluZQ== 43047\nIER5 43048\nIHR5cg== 43049\nIGRlcXVl 43050\nIGRhbWVy 43051\nKFtdKQo= 43052\nLmxheW91dENvbnRyb2xJdGVt 43053\ncGVhdGVk 43054\nQ0FO 43055\ncmFnbWVudHM= 43056\nTGFuZA== 43057\nKV0pOwo= 43058\nIFNhaA== 43059\nIERFQ0w= 43060\nV2l0aGlu 43061\nIE5hbWVzcGFjZQ== 43062\nYW5vdGhlcg== 43063\nc2VtYmxpbmc= 43064\nLmRlc2NyaWJl 43065\nQ29uc3Vt 43066\nIEZlYXI= 43067\nZ2l2ZW4= 43068\nT3Jhbmdl 43069\nPGJvb2xlYW4= 43070\nIHN0ZWFkaWx5 43071\ncGFSZXBvc2l0b3J5 43072\nIHJlc3VsdFNldA== 43073\nX0VOVEVS 43074\nX3JlcGVhdA== 43075\nIHRvbmVz 43076\nIFBST1A= 43077\nbmFs 43078\ncGFydGljbGU= 43079\nIHNpZ25hbGluZw== 43080\nIGFjY2Vzc29yeQ== 43081\nCQkJCQkJICA= 43082\nIHZpZWxl 43083\nIE5vYWg= 43084\nLWFn 43085\nIG11cmRlcnM= 43086\nIGFpcmVk 43087\nIFBMQVk= 43088\nIFN1bGxpdmFu 43089\nX0NvcmU= 43090\nIHVsb25n 43091\nIGJsb2dnaW5n 43092\nPlRoaXM= 43093\nIGRhdGFJbmRleA== 43094\nIHByaW50YWJsZQ== 43095\nIEV5ZXM= 43096\nX3RhcmdldHM= 43097\nKFB5 43098\nLm92ZXI= 43099\nIGJydQ== 43100\nYW1wdG9u 43101\nIHBsYWludGlmZg== 43102\nPEtleQ== 43103\nYnVsbA== 43104\nIOKfqA== 43105\nSXNzdWU= 43106\nLmNvcm5lclJhZGl1cw== 43107\nQ3JpdGljYWw= 43108\nX3BoaQ== 43109\nLmFuZ2xl 43110\nIGR5bmFtaWNhbGx5 43111\nISIpOw0K 43112\nPik7Cg== 43113\naW52ZXN0 43114\nLioKCg== 43115\nIHTDqWzDqQ== 43116\nIHN1cGVyZg== 43117\nIGNhc2NhZGU= 43118\nRFRE 43119\nIHZpdmlk 43120\nIHN1YnNpZGllcw== 43121\nIEhhc3M= 43122\nIGNvbGxhcHM= 43123\nIGNlcmFtaWM= 43124\ne30iLg== 43125\nIExlYWthZ2U= 43126\nLXRyYXNo 43127\nY29sbGFwc2Vk 43128\nLXNvY2lhbA== 43129\nIENoYWQ= 43130\nIGluY2xpbmVk 43131\nIHN0bw== 43132\nIHN0b3J5Ym9hcmQ= 43133\nLnBheW1lbnQ= 43134\nc3RhY2tvdmVyZmxvdw== 43135\nIFJhaWRlcnM= 43136\nICMn 43137\nb2xpY2llcw== 43138\n7Jy866Gc 43139\nZW1hcA== 43140\nIGtq 43141\nIHF1b3Rh 43142\nIEdhcmRlbnM= 43143\n67KI 43144\nIEFuZ2Vscw== 43145\nIG9mdA== 43146\nIGxvd2VyY2FzZQ== 43147\nIGlQYXJhbQ== 43148\nIGNoZWFwZXN0 43149\ndW50YQ== 43150\nX3BrdA== 43151\naWNhdG9ycw== 43152\nIGxldXJz 43153\nIGRlY3JlYXNlcw== 43154\nCWRlZmluZQ== 43155\nUFJFQw== 43156\nYW1tZXJz 43157\nIFByZXBhcmVkU3RhdGVtZW50 43158\nKGRpcmVjdGlvbg== 43159\nIGNyZXdz 43160\nYXJrZWQ= 43161\nIE1lbXBoaXM= 43162\nIFNlbGw= 43163\nR1RL 43164\nIG1haWQ= 43165\nOmRpc2FibGU= 43166\n6ZuG 43167\nIFBm 43168\nIGFsYmVpdA== 43169\nb3Blbmg= 43170\nPz4iPgo= 43171\nLmdldFNvdXJjZQ== 43172\nKHNjYWxl 43173\nRHU= 43174\nIFBJTA== 43175\nX3JlZnJlc2g= 43176\nIGJldHM= 43177\nKGNhcg== 43178\nIFZvbg== 43179\nfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== 43180\nIEdyYXQ= 43181\nTXVjaA== 43182\nKERpYWxvZw== 43183\nLnN0b3BQcm9wYWdhdGlvbg== 43184\nIHRlaw== 43185\nIGV4aXRz 43186\nJ10sJA== 43187\nIHBob25lTnVtYmVy 43188\ndWNz 43189\nZWNpbWFs 43190\nLS0tLS0tLS0tLS0tLS0= 43191\naW5w 43192\nLnBvam8= 43193\nIGNvcnB1cw== 43194\nIHByYWN0aXRpb25lcnM= 43195\nLnBpYw== 43196\nInRlc3Rpbmc= 43197\nIHN0cmluZ0J5 43198\nLk5vdE51bGw= 43199\nIHJhbmc= 43200\nLkR5bmFtaWM= 43201\nX1JlbmRlcg== 43202\n0LDRgtCw 43203\nV2FpdGluZw== 43204\nIFdpaw== 43205\nIG92ZXJ3aGVsbWVk 43206\nJSI+ 43207\nIEFF 43208\nfX0+Cg== 43209\ndXc= 43210\nX3R5cA== 43211\nIGJ1Y2tldHM= 43212\nIGdyZWV0aW5n 43213\nIGxhdWdodGVy 43214\nIGFudGFnb24= 43215\ndWdnZXN0aW9u 43216\nLWVtYWls 43217\nCXRvcA== 43218\nIGVyb3M= 43219\nX3RyaQ== 43220\nIGlzc3Vpbmc= 43221\nIGjDoQ== 43222\nIGlzb2xhdGU= 43223\nT3ZlcmZsb3c= 43224\nLEU= 43225\nIG51dHJpdGlvbmFs 43226\nIEFiYm90dA== 43227\nIG5m 43228\nLnRvdWNo 43229\nLmZldGNoYWxs 43230\nX3ppcA== 43231\nIil9Cg== 43232\nIGFtYXQ= 43233\nIENpc2Nv 43234\nIG7DpQ== 43235\nUExFWA== 43236\nIHNlaQ== 43237\nZm90bw== 43238\nLnRvSnNvbg== 43239\n5aSa 43240\nIEtsZWlu 43241\nIGxpYmM= 43242\nIG1pbmVycw== 43243\n5aI= 43244\nLXByaW50 43245\nIFByaWRl 43246\nVG9kb3M= 43247\nIG1hc2tlZA== 43248\nIHNldERhdGE= 43249\nIHRlbGVmb24= 43250\nIHVuaGFwcHk= 43251\nIFRhYmxlcw== 43252\nZ2Vi 43253\nKGRlYnVn 43254\nX2FsbG93ZWQ= 43255\nLWFjY2Vzcw== 43256\nIGxvZ2lzdGljcw== 43257\nIGdlbXM= 43258\nIE1hdHVyZQ== 43259\nIHJzcA== 43260\nIEFsbGU= 43261\nLmdldEJ5dGVz 43262\nXHdlYg== 43263\neW5jaHJvbml6ZWQ= 43264\nUGFyYWdyYXBo 43265\nIHRocm90dGxl 43266\nLnNxbGl0ZQ== 43267\nY29uc3VsdGE= 43268\nIFNlYWg= 43269\nQ2U= 43270\nIHN1Ym1hcg== 43271\nRVJF 43272\nVm91cw== 43273\nIHJlZGRpdA== 43274\nIHNxbGFsY2hlbXk= 43275\nLW1pbGU= 43276\nb2NpZGU= 43277\nUG91cg== 43278\nfX0iPgo= 43279\nc3RlYWQ= 43280\nIEAo 43281\nIFtdKQ== 43282\nIEFkcw== 43283\nIG92ZXJsb2Fk 43284\ncmlkZGVu 43285\nIERlc2VydA== 43286\nIFdyYXA= 43287\nIFBvcnR1Z3Vlc2U= 43288\nZXR6 43289\nCWZpcnN0 43290\nIG1pbGVzdG9uZQ== 43291\n5peg 43292\n0YPRiQ== 43293\nKHN1Y2Nlc3M= 43294\nPFZlY3Rvcg== 43295\nY29vbA== 43296\nIFtdKTsK 43297\nZXJ2YWxz 43298\nIGludmVydA== 43299\nImlv 43300\nY3Vyc28= 43301\nZnJhZ21lbnQ= 43302\nIGZlYXNpYmxl 43303\nLnNldFBvc2l0aW9u 43304\nIGVsbQ== 43305\nIGltYWdpbg== 43306\nQFNwcmluZw== 43307\nIGJhdHM= 43308\ncHXDqXM= 43309\nZ2FsZW1lbnQ= 43310\nbnNpYw== 43311\nZ2llbmU= 43312\nZWxsYXRpb24= 43313\nIEJhaWxleQ== 43314\nU2hhcg== 43315\nIFR1bA== 43316\nIEhL 43317\nIGZyZWV6aW5n 43318\nZ2xt 43319\nY2VhbnM= 43320\nLWN1dA== 43321\nX2NpcmNsZQ== 43322\n5ZGY 43323\nbmVnYXRpdmU= 43324\nIGluZGlhbg== 43325\nc2FsdA== 43326\nIHRpbmc= 43327\nCW1vZA== 43328\nIHNpbnQ= 43329\nYWtpbg== 43330\ndW1s 43331\nIFRleHRJbnB1dA== 43332\nIHBvcHBlZA== 43333\nVE1Q 43334\nIHBhcmtlZA== 43335\n15nX 43336\nIEZ1c2lvbg== 43337\nIGhlYXRlcg== 43338\nRVRG 43339\ncm96ZW4= 43340\naGFsbA== 43341\nIE1paw== 43342\nbGV2YXJk 43343\nLWhlYXJ0 43344\nCW9yZGVy 43345\nTWFraW5n 43346\nIHBsZWRnZWQ= 43347\nIGRpcnM= 43348\nJHBvc3Q= 43349\nIEhlcnI= 43350\nc3RhbnRpYXRl 43351\nLCIK 43352\nLmdldENvbG9y 43353\nIFNBVA== 43354\nIHRpbWVkZWx0YQ== 43355\nIE1haQ== 43356\nCW1ldGhvZA== 43357\nIGlkaW90 43358\nIFRyYXY= 43359\naWRlbnRpZmllZA== 43360\nIERpdmluZQ== 43361\nLmdldFBhdGg= 43362\nRGFzaA== 43363\nIGluZmlsdHI= 43364\nIGhhbmRsZVN1Ym1pdA== 43365\nYnJvb2s= 43366\nLmdlbmVyaWM= 43367\nLnNob3J0Y3V0cw== 43368\nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg== 43369\nIGRhdGluZ3M= 43370\nIE1W 43371\n77u/Iw== 43372\nfSIKCg== 43373\nIGltcHJpc29ubWVudA== 43374\nYXNvbmlj 43375\ncm91ZA== 43376\ndWNpb24= 43377\n5oql 43378\nIGRpYWxlY3Q= 43379\nIG9uTW91c2U= 43380\nY29uc3RleHBy 43381\nLmxhYmVsQ29udHJvbA== 43382\nIHdlYWtlcg== 43383\nIG1hbmtpbmQ= 43384\nIFJFQ0U= 43385\nIGRpeg== 43386\nIGFwcEJhcg== 43387\nIHF1w6k= 43388\nZnJh 43389\nX2RlZmF1bHRz 43390\nIGFsaXF1 43391\nX2F0b20= 43392\nOmluZGV4UGF0aA== 43393\nIG1pc3Nlcw== 43394\nIHZpc3VhbGx5 43395\nIEhhbmRz 43396\nU1RSVQ== 43397\naWF0ZXM= 43398\nX2Fzc2V0 43399\nRmluZGVy 43400\nbWlkdA== 43401\nIHNuYWNrcw== 43402\nKF9fKCc= 43403\nLnVyaQ== 43404\nIEluc3RydW1lbnQ= 43405\ndmVuaXI= 43406\nKCRfXw== 43407\nLkRvdE5ldEJhcg== 43408\nIGNvbmZpZ3M= 43409\nIGd1ZXNzZWQ= 43410\n4KS/4KQ= 43411\nIGluaXRpYWxpemVy 43412\nID8iLA== 43413\nIFZlcml6b24= 43414\nbWFuaWZlc3Q= 43415\nZ2ViZW4= 43416\nLmRldGFpbHM= 43417\nR2F0ZQ== 43418\ncG9uc2libGU= 43419\nIEVsaW0= 43420\nLHN0cg== 43421\nIHdyaXRpbmdz 43422\nIERlcmVr 43423\nIENvb3JkaW5hdG9y 43424\nIHBpbGxvdw== 43425\nIG5vdGljZWFibGU= 43426\nUnM= 43427\nIGR1cGxpY2F0ZXM= 43428\nZXJuZWxz 43429\na0o= 43430\nLnp6 43431\nb2xsYW5k 43432\nIFNFQ1RJT04= 43433\nX2ZuYW1l 43434\ndWZmbGVk 43435\nJ10uJzwv 43436\nX0NN 43437\nIHly 43438\ncGxhdA== 43439\nb2JvZHk= 43440\nbmRl 43441\nKEVsZW1lbnQ= 43442\nIEF0bGFz 43443\nIO+8iA== 43444\nIG5pdmVs 43445\nIGluc2lzdHM= 43446\nW1A= 43447\nIGVudGh1c2lhc3Rz 43448\nIOyeheugpQ== 43449\nIGJldmVyYWdl 43450\ne30iLA== 43451\nOnJpZ2h0 43452\nIG5vdXZlYXU= 43453\nIENvbXBsZQ== 43454\nIFBhZw== 43455\nb3ducw== 43456\nIHJlbWVtYmVycw== 43457\nIFByYWRlc2g= 43458\nIGNoYWxr 43459\nIExhdXJlbg== 43460\nXFNlcnZpY2U= 43461\nX0dFTg== 43462\nPiIpCg== 43463\nIERvbGxhcg== 43464\nIGVtb2pp 43465\nQ2Fyb3VzZWw= 43466\nLXBsYXllcg== 43467\nIGFkanVzdGluZw== 43468\nIGp1Z2E= 43469\nYWxsZW5nZXM= 43470\nZ2VuZQ== 43471\nKGJvZHlQYXJzZXI= 43472\nbG9wZWRpYQ== 43473\nIEJlaGluZA== 43474\nIHNsZWV2ZXM= 43475\nIGRyYWdnaW5n 43476\nIENoZXZyb2xldA== 43477\nIGJpeg== 43478\naXZpdGllcw== 43479\nIEZyZXF1ZW5jeQ== 43480\nLGNoYXI= 43481\nLldISVRF 43482\nX3ByZXZpZXc= 43483\nKSc7Cg== 43484\nX2F4 43485\nSU9OUw== 43486\nLmNwdQ== 43487\nLmlucHV0cw== 43488\nVUJF 43489\nX2ZlZWQ= 43490\nIFN1cHBsZW1lbnQ= 43491\nISku 43492\nZXN1cw== 43493\nIFVEUA== 43494\nIG1pY3JvcGhvbmU= 43495\nIGNvbmZpcm1z 43496\nLmlzTm90RW1wdHk= 43497\nIjoiIiwK 43498\nX1NDUkVFTg== 43499\nCWV4cGVjdGVk 43500\nKy0rLSstKy0= 43501\nIEhhaXQ= 43502\nZmFzdGNhbGw= 43503\nIGRlcGljdA== 43504\ndmI= 43505\nX3BpY3R1cmU= 43506\nCWRlc2NyaXB0aW9u 43507\nIFdpZmU= 43508\ndWNp 43509\nIHZpY2lvdXM= 43510\n5LuW 43511\ndWViYQ== 43512\nIHNldFVzZXI= 43513\n44Gh 43514\nIGRpdmluZw== 43515\nIG9wZXJh 43516\ndXNlcmNvbnRlbnQ= 43517\nYXJhaA== 43518\nKX0s 43519\neXVu 43520\ndmVsdA== 43521\nIHVuY292ZXJlZA== 43522\nIGhpcHM= 43523\nIG9zY2lsbA== 43524\nIGFzc2VydGluZw== 43525\nIFhp 43526\nLnJlc3RvcmU= 43527\na2Vh 43528\nIHNwZWxsaW5n 43529\nIGRlcml2ZQ== 43530\nYWJ3ZQ== 43531\nIERvdw== 43532\nLnNldFR5cGU= 43533\nX3Zz 43534\nIGNvenk= 43535\nLmNhdGVnb3JpZXM= 43536\nT3Jn 43537\nX21ncg== 43538\nIGR1bmdlb24= 43539\nY29sbGVjdGlvblZpZXc= 43540\nIEJsYW5r 43541\nYWNpYXM= 43542\nw6TDpA== 43543\nX2NsZWFudXA= 43544\nX0FDVElWSVRZ 43545\nIHRyaWFuZ2xlcw== 43546\nLk1lbnVJdGVt 43547\nIGlwaG9uZQ== 43548\nIFdvbg== 43549\nXV0KCg== 43550\nIENvbXBhcmlzb24= 43551\nLkRvYw== 43552\nIGNhbm9uaWNhbA== 43553\nIFN1ZGFu 43554\nJyl7 43555\nVXBJbnNpZGU= 43556\nYnVpbHRpbg== 43557\nRU5DWQ== 43558\neGJl 43559\nIGNodWNr 43560\nIGNvbnRyYWRpY3Q= 43561\nIG51ZXN0cm8= 43562\nIGFyY2hpdGVjdHVyYWw= 43563\nIEZpYg== 43564\nIGNvbXBhcmVz 43565\nKms= 43566\nQ2Zn 43567\n54Sh 43568\nbnRlbg== 43569\nTWF0Y2hlcw== 43570\nIERPV05MT0FE 43571\nX0hBTkRMRVI= 43572\nbWFuYWdlbWVudA== 43573\nW1M= 43574\nRU5H 43575\nwoDC 43576\nZmFuZw== 43577\nIHNsaXBwZWQ= 43578\nIExhbmth 43579\nZXNjYXBpbmc= 43580\nIHRhY2tsZXM= 43581\nIFBlZHJv 43582\nLlByb3A= 43583\nLicn 43584\nLkdlbmVyYXRlZA== 43585\nLk5ld0d1aWQ= 43586\nYXRyaWdlc2ltYWw= 43587\naWxsb24= 43588\nIHN0YXRpc3RpYw== 43589\nc3BlY2llcw== 43590\naG9sZGluZw== 43591\nRHJ1cGFs 43592\nIGZ1bmRhbWVudGFsbHk= 43593\nIGJvbmRhZ2U= 43594\nIHJlc29sdXRpb25z 43595\nSW5saW5lRGF0YQ== 43596\nXFR5cGU= 43597\nZXN0aW9u 43598\nLndyYXA= 43599\nIHdhcnJpb3Jz 43600\nIExPQ0FM 43601\nQXJjaGl2ZQ== 43602\nIGVtYnJhY2Vk 43603\n4bun 43604\nLlZlcg== 43605\nIEFmZm9yZGFibGU= 43606\nb2xlc2FsZQ== 43607\nIEFwcGxpZWQ= 43608\nIENvbnZlcnNpb24= 43609\nbWVnYQ== 43610\nX2NhbQ== 43611\nIGNlcmVtb24= 43612\nYXVydXM= 43613\nIFZvbGs= 43614\nLm9wZW5z 43615\nL2Fib3V0 43616\nIFN0ZA== 43617\nam91cm5hbA== 43618\nKCkpew0K 43619\nLCJc 43620\nKEFycmF5cw== 43621\nIERlbnNl 43622\nYXNlw7Fh 43623\nw6RubmVy 43624\nL3N0YXQ= 43625\ndXNlckRhdGE= 43626\nIGdlcm1hbg== 43627\nIHR6 43628\nd29ydGh5 43629\nRm9ybWF0RXhjZXB0aW9u 43630\ncGhlcmQ= 43631\nIHNtaWxlcw== 43632\nIFdoZW5ldmVy 43633\nKGFkYXB0ZXI= 43634\nLmJhZGxvZ2lj 43635\nIGJyaWVmaW5n 43636\nLkdyaWRDb2x1bW4= 43637\nLWNoYXI= 43638\nZGltZW5zaW9u 43639\nIENvcHBlcg== 43640\nIG5pbnRo 43641\nICd7ew== 43642\nIHJhdg== 43643\nX1RhYmxl 43644\nIGRlcml2YXRpdmVz 43645\nIFJhaXNl 43646\nIEZ1dA== 43647\nYXJtb3I= 43648\nLXBhZGRpbmc= 43649\nIHJlbWlu 43650\nCXN0eWxl 43651\nIE1lbWJlcnNoaXA= 43652\nIHNwcmVhZHM= 43653\nIGdhbGxlcmllcw== 43654\nIENsYXJrZQ== 43655\nIGNvbmNlcHRpb24= 43656\nbWludXRl 43657\nIGFidXNpdmU= 43658\nX2Fkag== 43659\nIHRlcnJpZmlj 43660\nIG92ZXJ0 43661\nb3VyY2luZw== 43662\nIGVudHJhZGE= 43663\nbGV2ZWxz 43664\nIGNyaXRpcXVl 43665\nIHJlc3BlY3Rz 43666\nIE1NQQ== 43667\naWVuZQ== 43668\nIGVuY2Fwcw== 43669\nIFJheW1vbmQ= 43670\nRGl2aWRlcg== 43671\naXZhYmxl 43672\nYmF6 43673\nIEBfOwo= 43674\nIENsYWlyZQ== 43675\nIHVyZ2luZw== 43676\nQ0VF 43677\nIHRyYW5zZm9ybWVy 43678\nZGlzY29yZA== 43679\nIEpvdXJuZXk= 43680\ndG9z 43681\nIGNvbXBldGl0aW9ucw== 43682\nIE9CSg== 43683\nIEJpcw== 43684\nIHJlbGF4YXRpb24= 43685\naWR5 43686\nX0lOU1RBTkNF 43687\nIFByZWY= 43688\nZGFkb3M= 43689\naWNpZW5jaWVz 43690\nIE1lZGlhUXVlcnk= 43691\nIEN1YmU= 43692\nIFN0cmFuZ2U= 43693\nZ3B1 43694\nKGRheXM= 43695\nX0luaXRTdHJ1Y3Q= 43696\nIGZpbmdlcnByaW50 43697\nZW1hdA== 43698\nIEdlY2tv 43699\nIHJhaWxz 43700\nIEx1bQ== 43701\nc3RyYWN0aW9u 43702\naWd1bmc= 43703\nKG1vdmll 43704\nX2RpY3Rpb25hcnk= 43705\nX2ludGVycnVwdA== 43706\nIFFD 43707\naWtlZA== 43708\nYXBwZW5kQ2hpbGQ= 43709\ncmVjaXBpZW50 43710\ncsOp 43711\nVmU= 43712\nIHRvd2Vs 43713\nLmxhc3RJbmRleE9m 43714\nIHBsYWNlYm8= 43715\nIFdpZQ== 43716\nLmVzcA== 43717\nKERlYnVn 43718\nb3BlcmF0aXZl 43719\nIGRlY2Vhc2Vk 43720\nJmlk 43721\nCW11dGV4 43722\nZWxpYw== 43723\nIGJhcHQ= 43724\nCQ0KDQo= 43725\nIGZhcnRoZXI= 43726\nSGFsZg== 43727\nLmRpc2FibGU= 43728\nLm1lbnVTdHJpcA== 43729\nbGVjY2lvbg== 43730\nIHJlc3VsdENvZGU= 43731\nIGNhbnM= 43732\nLWVsZWN0aW9u 43733\nZmVtYWxl 43734\nX0ZJWA== 43735\nYXVzaWJsZQ== 43736\nIFBPV0VS 43737\nIHJlY29uc3RydWN0aW9u 43738\nIHNjYW5z 43739\nLlh0cmFCYXJz 43740\n4oCYcw== 43741\nUmVtb3ZlZA== 43742\nIHBhcmFncmFwaHM= 43743\nX21hcmdpbg== 43744\nIGx5bXBo 43745\nIGJvcw== 43746\nbGluZ3Rvbg== 43747\nIEJhcHRpc3Q= 43748\nIGFkdmVydGlzZW1lbnRz 43749\nIE1hbmFnZQ== 43750\nL3l5eXk= 43751\nSU9VUw== 43752\nRU5DRVM= 43753\nIEZpY3Rpb24= 43754\nCW1lbnU= 43755\nIEZpbGVPdXRwdXRTdHJlYW0= 43756\nb3Zhbg== 43757\nIEZlbmc= 43758\nIHNraXBwaW5n 43759\nZ2V0Q2xhc3M= 43760\nYW5uaQ== 43761\nIHJlYm91bmRz 43762\nIHB1YmxpY2l0eQ== 43763\nIGluZ3Jlcw== 43764\ndXNlbWVudA== 43765\nIHRob3VnaHRmdWw= 43766\nLkNoYXJ0 43767\nIGhhdHRl 43768\ncGFzc3BvcnQ= 43769\nIGhvb2tlZA== 43770\nIExlbnM= 43771\nIGZsYWdzaGlw 43772\nIHN0aXA= 43773\nIEdFTg== 43774\nIGNsdWVz 43775\naXB2 43776\nIFJpc2U= 43777\nIEdldw== 43778\ndGFibGVuYW1l 43779\nIGZvcmVtb3N0 43780\nX3ZhbGlkYXRl 43781\nX2FuYWx5c2lz 43782\nb2xsYQ== 43783\nIHF1YWxpZmljYXRpb25z 43784\nIGRpc3RyaWJ1dGlvbnM= 43785\nIEZsb3dlcg== 43786\nIHRlbnNl 43787\nIHRoYW5rZnVs 43788\nIGNsdXRjaA== 43789\nIHVuaWZpZWQ= 43790\ncm9hZHM= 43791\nIHNpdGk= 43792\nIHN0YWxs 43793\nX1BSSU9SSVRZ 43794\nY3N0ZGxpYg== 43795\nX1VTRVJOQU1F 43796\nLmJ5dGVz 43797\nP3BhZ2U= 43798\nZXJtYWxpbms= 43799\nIFZlZ2V0 43800\nL3ZuZA== 43801\nLWF1dGhvcg== 43802\nLk5PTkU= 43803\nIENvbmN1cnJlbnQ= 43804\nIENyeQ== 43805\nIHN0YXJ0ZXJz 43806\nIEludGVyYWN0aW9u 43807\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 43808\nIExFVkVM 43809\nRWxs 43810\nIGNvbWJvQm94 43811\nIFRoZXJlc2E= 43812\ndGVr 43813\nX0hhbmRsZQ== 43814\nIGFieQ== 43815\nLmdkeA== 43816\nLGVuZA== 43817\nKExvY2Fs 43818\nT2w= 43819\na25pZmU= 43820\nYXJpYWw= 43821\nIEhvZmY= 43822\nIHByb3N0aXR1ZXJhZGU= 43823\nRG9jdG9y 43824\nSW5zdGFuY2Vz 43825\nLlNldFZhbHVl 43826\nCWZyb20= 43827\nIGx1eHVyaW91cw== 43828\nSW5kZW50 43829\nQWxsb2NhdG9y 43830\nX0RSQVc= 43831\nKCIsIiw= 43832\nIEZyYW5jZXM= 43833\nIGdyb3VwQm94 43834\nKHNjaGVtYQ== 43835\nUHJpbnRm 43836\nT1JJRVM= 43837\nLWdyYWRpZW50 43838\nIHJlcHV0 43839\nYXJpbg== 43840\nX0RPTkU= 43841\naW5jcmU= 43842\naWdudHk= 43843\nIGV4ZXJ0 43844\nIC0u 43845\nL0FwcA== 43846\nLXRocm91Z2g= 43847\nIGRlY2xpbmluZw== 43848\nIGRlc3NlcnQ= 43849\nIGluY3VtYg== 43850\nIGRlc2lnbmF0aW9u 43851\nLlBPUlQ= 43852\nLHN0cm9uZw== 43853\nIHNhbmRib3g= 43854\nIHdpbmVz 43855\nIFBhdg== 43856\nJHN0cg== 43857\nYXNrZWxs 43858\nIGjDtg== 43859\nIFBZ 43860\nR2V0SW5zdGFuY2U= 43861\nVGV4dElucHV0 43862\nZ2FtZU9iamVjdA== 43863\nL2V2ZW50cw== 43864\nY3JlYXRlZEF0 43865\nIGxvY2FsVmFy 43866\nIFdISVRF 43867\ncGVyZWQ= 43868\naWxlZ2U= 43869\nZWZmaWNpZW50 43870\nLGNvbG9y 43871\nY2F0ZQ== 43872\nIENhZmU= 43873\nIHNpbWlsYXJpdGllcw== 43874\nIHB1bXBz 43875\nIEh1bmdhcnk= 43876\nLlVzZXJuYW1l 43877\nIHNrYXRl 43878\nIHRvdWNoZG93bnM= 43879\nIGFjY2VsZXJhdGU= 43880\nIEhlbGVu 43881\nT01FTQ== 43882\nIEt1bg== 43883\nX3ZvbA== 43884\nIGZpbmRBbGw= 43885\nIE1lbnNjaGVu 43886\nYWhlYWQ= 43887\nKTsi 43888\na29tbWVu 43889\nIHBvc3Nlc3NlZA== 43890\nLmFyZ21heA== 43891\nLnRyYW5zaXRpb24= 43892\nQVJQ 43893\nT0xVTUU= 43894\nKHNjcmlwdA== 43895\nINCY 43896\nIEZpbmRpbmc= 43897\nb25jZXM= 43898\nSW8= 43899\nQm9sZA== 43900\nIHJlbmV3YWw= 43901\nX0RJQUxPRw== 43902\nIGRpc3JlZw== 43903\nSU5URVJO 43904\nIHRvdXRl 43905\nIGVsZWN0cg== 43906\nIEdyb3Nz 43907\nCXRydWU= 43908\nLkZpZWxkcw== 43909\nIFdJRFRI 43910\nIERlbnQ= 43911\nIMOB 43912\nTlNOb3RpZmljYXRpb24= 43913\nIGFvcw== 43914\nIG1lbGVl 43915\nLlZhbGlkYXRpb24= 43916\nIERFQw== 43917\nLWRlcGVuZGVudA== 43918\nIHN1aWM= 43919\nVHJhaXRz 43920\nJG1lc3NhZ2U= 43921\nIERlYXI= 43922\nCUZJTEU= 43923\nbGFuZ3VhZ2Vz 43924\nLlByb3Q= 43925\nLmFkZHI= 43926\nLWdlbmVyYXRpb24= 43927\nSUNPTg== 43928\nIHRyYW5zcGxhbnQ= 43929\nLWRlc2NyaXB0aW9u 43930\nIGNoYXNpbmc= 43931\nIGNoZWVz 43932\nIH0qLwo= 43933\nVHJhZA== 43934\ncXVlcmllcw== 43935\nL3dpZGdldHM= 43936\nc3VicGFja2FnZQ== 43937\nIGVzcGVj 43938\nIGNyYWNrZWQ= 43939\nIGNvbXBldGl0b3I= 43940\nUHVyY2hhc2U= 43941\nLXRlYW0= 43942\nb2xlY3VsYXI= 43943\nb3JUaHVuaw== 43944\nJlA= 43945\nIHJlbGVudA== 43946\nLyN7 43947\nIHByb2R1Y3RJZA== 43948\nIOi+ 43949\nIExhdg== 43950\nIEFsdGVy 43951\nLk1vZGU= 43952\nQURJTw== 43953\nZ3Jw 43954\n5re75Yqg 43955\nUXVpdA== 43956\nIGRlcHRocw== 43957\nLWNhdGVnb3J5 43958\nIERBVEFCQVNF 43959\nU1BFTEw= 43960\nIEZhbGNvbg== 43961\nIFFTdHJpbmdMaXN0 43962\nICcnLg== 43963\nIEluc3RpdHV0aW9u 43964\nZGFtYWdl 43965\nYXpvcg== 43966\nYmVsb25nc1Rv 43967\ndmVyYWdlcw== 43968\nIE5PTkU= 43969\naXBwZXRz 43970\nLFwK 43971\nIGZvb3RwcmludA== 43972\nX2FyY2hpdmU= 43973\nbmFr 43974\nLmdldEZpZWxk 43975\nIFJlZmxlY3Rpb24= 43976\nICdd 43977\nIEhCTw== 43978\nX2Rpc2NvdW50 43979\nIGluY2VzdA== 43980\nIERvZGdl 43981\nIFdhZGU= 43982\nLk5P 43983\nImVuY29kaW5n 43984\nIEJsb2NrY2hhaW4= 43985\nIGxhd3N1aXRz 43986\nIE1haW50 43987\nY2h0ZW4= 43988\nIMOpdGFpdA== 43989\nIGt0w7NyZQ== 43990\nX2N0bA== 43991\nKHRpbWVy 43992\nQmF0dGxl 43993\naXpv 43994\nYXllZA== 43995\nSU9S 43996\nIEdsYXNnb3c= 43997\nIHN5bnRo 43998\nX2xvZ3M= 43999\nLnBvc2U= 44000\nX0FkanVzdG9yVGh1bms= 44001\nKCgm 44002\nIHVuc3VyZQ== 44003\neXN0YXRl 44004\n7ZWY64qU 44005\nT1VMRA== 44006\nLm5n 44007\nIGRlZmF1bHRkaWN0 44008\nd29ya3NwYWNl 44009\nIHNlbGVjdGl2ZQ== 44010\nUGlja2VyQ29udHJvbGxlcg== 44011\nWU5BTUlD 44012\nLm1ldGhvZHM= 44013\nIHBhdGh3YXlz 44014\nIEZldw== 44015\nS0c= 44016\nQ1JZUFQ= 44017\nZm9sbG93aW5n 44018\nIERMQw== 44019\nIFNhcmE= 44020\nIHByZXNldA== 44021\nZXN0cnVjdG9y 44022\nIEt1cnQ= 44023\nIGFpcnBsYW5l 44024\nIG9tcA== 44025\nIFBhcmVudHM= 44026\nIE1hcnRpbmV6 44027\nLmNvbXBsZXRl 44028\nIGJyb2FkbHk= 44029\nIHNjYXJl 44030\nIE3DqQ== 44031\nIGVsaW1pbmF0aW9u 44032\nIHBvdXJlZA== 44033\nL3N3 44034\nIGNvbXVu 44035\nIG1hc2M= 44036\nIE9yZ2FuaWM= 44037\nIFN0cmluZ1V0aWxz 44038\naWxhdGVyYWw= 44039\nIHJlbHVjdGFudA== 44040\nLWFnZQ== 44041\nIG56 44042\nLiJc 44043\nIHBhc3Rvcg== 44044\nYWxleg== 44045\nIGVmZWN0 44046\ncHJvdg== 44047\nL2luaXQ= 44048\nIHBlbm4= 44049\ndW5kcw== 44050\nIHNzaXpl 44051\nIFByb2o= 44052\nYmFzZW5hbWU= 44053\nIHNoZWxscw== 44054\nIE5lY2s= 44055\nIEVuZm9yY2VtZW50 44056\ndmlkZWQ= 44057\nc3Rvd24= 44058\nU3BoZXJl 44059\nJHI= 44060\ndXNzZW4= 44061\nYWZpbA== 44062\nIFRlbGVncmFt 44063\nIGFuYWx5dGljYWw= 44064\n0L3Ri9C1 44065\ndXN1YWxseQ== 44066\neG4= 44067\nIGhpc3Rvcmlhbg== 44068\nIEdyZWdvcnk= 44069\nb2xwaA== 44070\nIFVuYQ== 44071\nIGNvbnRyaWJ1dGVz 44072\nJS0= 44073\nYW50aWFnbw== 44074\n0YDQtdC0 44075\nLnJlZ2lvbg== 44076\nIGFicnVwdA== 44077\nIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9u 44078\nIFRBU0s= 44079\nX2ZpbmlzaA== 44080\nIG5vdG9yaW91cw== 44081\nIFZz 44082\nIE1R 44083\nIHN1bnNldA== 44084\nIHVuYWNjZXB0YWJsZQ== 44085\nYXJjZXI= 44086\nIGlsbHVtaW4= 44087\nIE9yYg== 44088\nIGJo 44089\nRXN0ZQ== 44090\nX2Rpc3BhdGNo 44091\nIHJpcHBlZA== 44092\nIHRvdWpvdXJz 44093\nIFBhcmNlbA== 44094\nX2xs 44095\nLnVzZXJOYW1l 44096\nLmNsYXNzZXM= 44097\nU09VUkNF 44098\nKE51bWJlcg== 44099\n0LXQu9GP 44100\nIGhlYWRwaG9uZXM= 44101\nKHNpZGU= 44102\nY29uc3RpdHV0aW9u 44103\nYW5uYWg= 44104\nDQogICAgICAgIA0K 44105\nIGNsaWZm 44106\nLXJlZg== 44107\nIG1vc3RyYXI= 44108\nIFBvd2VsbA== 44109\nK3k= 44110\nIEJH 44111\nX2ZyYWdtZW50 44112\nLlBvcnQ= 44113\nIHJlYWxpemluZw== 44114\ncGFyYW1yZWY= 44115\nIGhvbWV0b3du 44116\nQFRhYmxl 44117\nKyI8Lw== 44118\nb21pZA== 44119\nIGR1Zw== 44120\nCWJ0bg== 44121\nIHN1YmplY3RpdmU= 44122\nL2Jyb3dzZXI= 44123\nIHVzaG9ydA== 44124\nIE1vbnRnb21lcnk= 44125\nLXJhdGU= 44126\nCXB1dHM= 44127\nbGV0aWNz 44128\nb3Jucw== 44129\n4oCcV2hhdA== 44130\nZWVwZXI= 44131\nLkludmFyaWFudA== 44132\nIGNvbmNlYWxlZA== 44133\nX251bXB5 44134\nPT09PT09PT09 44135\nKHBz 44136\nTG9jYXRpb25z 44137\nLmFzdHlwZQ== 44138\nIENIQU5HRQ== 44139\nLk9yZGVyQnk= 44140\nO2hlaWdodA== 44141\nIGdlbnRl 44142\nIGdydW50 44143\nIFBsYW5l 44144\nIHNhZGx5 44145\nIExvZ2Fu 44146\nX3VzZWM= 44147\nLmRndg== 44148\nIHNpbmNlcg== 44149\nIHBu 44150\nCWd0aw== 44151\nIGluc3RhbGxlcg== 44152\nIGRpc3BsYWNlbWVudA== 44153\nIGJ1cm5z 44154\n0YPRgQ== 44155\naXZlcmVk 44156\nOl0pCg== 44157\nc2VhdA== 44158\nYW5pbmc= 44159\nfSkKCgo= 44160\nX3JvbGVz 44161\nYXRpY2Fu 44162\nIGdlbmVyYXRvcnM= 44163\nIGh1cnRz 44164\nIHNuaXBwZXQ= 44165\nIGdzb24= 44166\nIHNlZ3JlZw== 44167\nIGRpc3RyaWJ1dG9y 44168\nIGFkdmFuY2luZw== 44169\ncG9zdGdyZXM= 44170\nIHVzcg== 44171\nIExpcw== 44172\nLmFzc2VydElz 44173\nX2Nk 44174\nIGh5ZHJhdWxpYw== 44175\nLmNvdW50ZXI= 44176\nIEluZGVwZW5kZW5jZQ== 44177\nIGRpZmbDqQ== 44178\nVW5saWtl 44179\nIHRvbWI= 44180\ndmlr 44181\ncG9zdGVk 44182\nd2Y= 44183\nIGRlc2NlbmRpbmc= 44184\nZHlu 44185\nYW1lbnRhbA== 44186\nIEZydWl0 44187\nIFlv 44188\nLmRvdWJsZQ== 44189\nIElB 44190\naWV2 44191\naWJyYXRl 44192\nIFJlbGlnaW9u 44193\nTWFueVRvT25l 44194\nLVRh 44195\nIGJhbmFuYQ== 44196\nIEF2ZW5nZXJz 44197\nIEhvbG9jYXVzdA== 44198\nIGdldEM= 44199\nIGNvbmRv 44200\nIEdvdGhpYw== 44201\nIHByb3NwZXJpdHk= 44202\nVFJBTlM= 44203\nIGRvZXNudA== 44204\nIENoYW9z 44205\nSVRU 44206\nIENVUlJFTlQ= 44207\nXGhlbHBlcnM= 44208\nX1NBVkU= 44209\nYXZpdA== 44210\nY29tcHV0ZXI= 44211\nX3NoZWV0 44212\nIEJyZXdpbmc= 44213\nIHJvYmJlcnk= 44214\nIOqyvQ== 44215\nINC60L7QvA== 44216\nIG7DpA== 44217\nLnJlZ2V4 44218\nIGRpc3J1cHRpb24= 44219\nIFNpbXVsYXRpb24= 44220\nYXBpZA== 44221\nIHN1cHJlbWU= 44222\nzrw= 44223\nIGNvbW1pc3Npb25lZA== 44224\nIGFic29ycHRpb24= 44225\nIE5ld2Nhc3RsZQ== 44226\nCWNvbnN0cnVjdG9y 44227\nVGVybXM= 44228\nIHJpdg== 44229\nIHJlbGlnaW9ucw== 44230\nV2l0aFRhZw== 44231\nLkh0bWw= 44232\nbGlua2Vk 44233\nQ29tcG91bmQ= 44234\nIE1hbnM= 44235\nIGxha2Vz 44236\naXp6bGU= 44237\nLnNldFNpemU= 44238\nYWJlcg== 44239\nIE5lZWRz 44240\ncGFja2FnZXM= 44241\nLlRhYlBhZ2U= 44242\nIHJlZnM= 44243\nIGlvdXRpbA== 44244\nIERvaW5n 44245\nICJcKA== 44246\nIHBoZW5vbWVuYQ== 44247\nLkdldEludA== 44248\nQUxUSA== 44249\nIHBhcmxpYW1lbnRhcnk= 44250\nIHJlZnVzYWw= 44251\nIGluZXhwZW5zaXZl 44252\nIH0KCgoKCg== 44253\nIHNvbGlkYXJpdHk= 44254\nCXB1c2g= 44255\naGF1bA== 44256\nIEJlcmU= 44257\nU2l6ZXI= 44258\nSW5kaXZpZHVhbA== 44259\nIGFuY2U= 44260\nIGRpbGU= 44261\nIFBlYWs= 44262\nKGhy 44263\nRWRpdGluZ0NvbnRyb2xsZXI= 44264\nSE4= 44265\nX1BFUklPRA== 44266\nRVRT 44267\nQmFubmVy 44268\nZXJyb3JNZXNzYWdl 44269\nLkNBU0NBREU= 44270\nLWlnbm9yZQ== 44271\nIFNJR04= 44272\nIE9C 44273\nX2Rk 44274\nKERFRkFVTFQ= 44275\nIHNvbw== 44276\nIFZpY3Rvcmlhbg== 44277\nIGN1cnQ= 44278\nIGRpc2NyZXRl 44279\ncnlsaWM= 44280\naW1iYWJ3ZQ== 44281\nLnRvRml4ZWQ= 44282\nbMOk 44283\nLnN0ZGlu 44284\nIHF0eQ== 44285\nUk9MTEVS 44286\nbWVkaWF0ZWx5 44287\nIHBsdW1iaW5n 44288\nIFByb3BlcnR5Q2hhbmdlZA== 44289\nYXJyYW50eQ== 44290\nIEJyZWFrZmFzdA== 44291\nLnNldEhlYWRlcg== 44292\nLnB5dGhvbg== 44293\nY29tbWVyY2U= 44294\nb3BlbmN2 44295\nPi0tfX0K 44296\nRnJlbmNo 44297\nRW50aXR5TWFuYWdlcg== 44298\nIFBsYWlu 44299\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 44300\nwrM= 44301\nKFJF 44302\nY2FwdA== 44303\nIG9yZ2FuaXNtcw== 44304\nIGpldHM= 44305\nb2xvY2F0aW9u 44306\nIEFwcFJvdXRpbmdNb2R1bGU= 44307\nIGdsb3Jpb3Vz 44308\n5pyN 44309\nIGRpc2NhcmRlZA== 44310\nCQkJCSAgICAg 44311\nIEFybm9sZA== 44312\nbHVn 44313\nIHBhcmw= 44314\nIGhvcm1vbmVz 44315\nIG1haA== 44316\nIFNvbmlj 44317\nIG9yZ2FuaXplcnM= 44318\nX1BMQVRGT1JN 44319\nLmludg== 44320\nIGNob3Jk 44321\ndmVudGlvbmFs 44322\nCW9m 44323\nRXBpc29kZQ== 44324\nLkVudW0= 44325\ndW5rdA== 44326\nIERo 44327\nIEphcmVk 44328\nIE5haw== 44329\nIGludGVuZHM= 44330\nRW5kaWFu 44331\nIGF1c3RyYWxpYQ== 44332\nX2N2 44333\nKHJlc29sdmU= 44334\nIGNsaW5pY3M= 44335\nbGlrZWQ= 44336\nQVNISU5HVE9O 44337\naW5oYQ== 44338\nJyo= 44339\nIE5Q 44340\nX2JlaA== 44341\nIGhm 44342\nIHfDvHI= 44343\nY2F0ZWdvcmlh 44344\nJGZvcm0= 44345\nIHN1YndheQ== 44346\nIGlzQWN0aXZl 44347\ncG9wdWxhcg== 44348\nQ291cg== 44349\nIGNvb2xkb3du 44350\nIGFpbnNp 44351\nIEdMdWludA== 44352\nZXJlYWw= 44353\nIGFycmF5T2Y= 44354\nIGhhdGNo 44355\nPT09PT09PT09PQ== 44356\ncmVzc2Vz 44357\nX1BQ 44358\nLl4= 44359\nX2RlY2F5 44360\nIEJsZXNz 44361\nbWV0cmljcw== 44362\nIENPUFlJTkc= 44363\nIER1bXBzdGVy 44364\nIEpvc8Op 44365\nIERlc2lnbnM= 44366\nPFZvaWQ= 44367\n57q/ 44368\nID8+PA== 44369\nICJ9Cg== 44370\ndGltZXpvbmU= 44371\nIGVlcg== 44372\nbWF4Y2Ru 44373\nIEVTQw== 44374\naWdhcmV0 44375\nX2Nvbm5lY3RlZA== 44376\nX3JldmVyc2U= 44377\nIHF1ZXN0aW9uYWJsZQ== 44378\nIFVTQw== 44379\nIHR1dHRp 44380\nIGRyb3BvdXQ= 44381\nIEFjdGl2aXRpZXM= 44382\nIFdpbmRz 44383\nJykpKTsK 44384\nIGNvbmdlc3Q= 44385\nxJ/EsQ== 44386\nIHByb2xvbmdlZA== 44387\n6L+Z 44388\nIENyb3NzQXhpc0FsaWdubWVudA== 44389\nTEVFUA== 44390\nIFZBTElE 44391\nIEdheg== 44392\nIGRlcGVuZGVuY2U= 44393\nIFByaXg= 44394\nLkNvbXBpbGVyU2VydmljZXM= 44395\nanVtcA== 44396\nIHN0cmF0 44397\nY2lyYw== 44398\nIENVU1RPTQ== 44399\neGFh 44400\nIGJtcA== 44401\nIGJ1cmVhdQ== 44402\nIHdhcmVu 44403\nTlg= 44404\nKFdpbmRvdw== 44405\nIENocmlzdGll 44406\nX0ZF 44407\nIHRu 44408\nIE9tZWdh 44409\nY29tbXVuaWNhdGlvbnM= 44410\nSG9tZVBhZ2U= 44411\nY29tcGxldGlvbg== 44412\nIHN1cHBseWluZw== 44413\nWVBFUw== 44414\nw6F2ZWw= 44415\n5Yi2 44416\nKGNsaWNr 44417\nXENvbnRyYWN0cw== 44418\nL3F1ZXN0aW9ucw== 44419\nIGV6 44420\nQU1T 44421\nLm1lc2g= 44422\nICc8Pw== 44423\nasOg 44424\nSW5p 44425\nLiM= 44426\nIENhcmRpbmFscw== 44427\ncGNpw7Nu 44428\nQ3ViZQ== 44429\nIFBhdGllbnRz 44430\nX3ByZWY= 44431\nQWN0aW9uQnV0dG9u 44432\nKGJ1aWxk 44433\nIFZpc2E= 44434\nb3ZlbA== 44435\nKEFycmF5TGlzdA== 44436\nSWdu 44437\nIHJlaGFiaWxpdGF0aW9u 44438\nIHBhbGFjZQ== 44439\nIHNwZWVjaGVz 44440\nfScK 44441\nSHR0cFJlc3BvbnNl 44442\nCWNvZGU= 44443\nRHVtbXk= 44444\nIGFjYWRlbXk= 44445\nLm1vdmll 44446\nIGluY29ycmVjdGx5 44447\nIGN5Yw== 44448\nKFVuaXR5RW5naW5l 44449\nCWNhbGxiYWNr 44450\nIFNhdGFu 44451\nIEZVTkM= 44452\nIGNoYW50 44453\nIEhlYWx0aHk= 44454\nOicsCg== 44455\nU2hpcHBpbmc= 44456\nX21j 44457\nIER5bGFu 44458\nIFByb2R1Y2Vy 44459\nIHJlc3B1ZXN0YQ== 44460\nIHBvbGlzaGVk 44461\nQnJvYWRjYXN0 44462\nIGJhbGFuY2luZw== 44463\nIFNsaWRl 44464\nIENhcHM= 44465\nc3RpbGw= 44466\nIGhhcHBpZXI= 44467\nIEdvc3BlbA== 44468\ndHJhbg== 44469\nLnBhdGhuYW1l 44470\nQWN0aXZlU2hlZXQ= 44471\nIENoYW5n 44472\nPlwK 44473\nUm9ib3Q= 44474\nSnNvbk9iamVjdA== 44475\nIERG 44476\nIFByb2Nlc3Nvcg== 44477\nX3Nob3VsZA== 44478\nLnByb3RvYnVm 44479\nLXVzZXJz 44480\nIGVtYnJ5 44481\nRk9OVA== 44482\nIHN0YXJ0dXBz 44483\nIERhdGFTb3VyY2U= 44484\nKSM= 44485\ndXJvcw== 44486\nX0NvbG9y 44487\nIHN0YW5kYWxvbmU= 44488\nfVs= 44489\namQ= 44490\nIGZvcmdpdmU= 44491\nIG5neA== 44492\nIEdlbmVyYWxseQ== 44493\nIGNvbmZpZ3VyYWJsZQ== 44494\nL29yZGVy 44495\nIHZhcw== 44496\nJykiOwo= 44497\nIFJS 44498\nIFRyb3k= 44499\nIGNvbXByb21pc2Vk 44500\nIFN3YW4= 44501\naW50ZW5kZW50 44502\nQ2VudHJhbA== 44503\nX2tlZXBlcg== 44504\nIGFycXVpdm8= 44505\nIFJlYWRPbmx5 44506\nX2N1cnZl 44507\na3Y= 44508\nZW50aW4= 44509\n6LE= 44510\nIEV5 44511\nLmltcmVhZA== 44512\nIFBhbQ== 44513\naWZmZQ== 44514\nYXRpdml0eQ== 44515\neGJj 44516\nIGdyaW0= 44517\nLWZpbGxlZA== 44518\nbmFtZXNl 44519\nJ106 44520\nIGF1cg== 44521\nIEdpYnNvbg== 44522\nLk1vdXNlRXZlbnQ= 44523\nIGxhZG8= 44524\nYXZhZG9j 44525\nIGZhbWls 44526\nIE1vZGVy 44527\nZnBz 44528\n44CA44CA 44529\nLWV4YW1wbGU= 44530\nIEFsemhlaW1lcg== 44531\nIFV0Zg== 44532\nX2FyZ3VtZW50cw== 44533\nQ29uY2x1c2lvbg== 44534\ndGV4dENvbnRlbnQ= 44535\ncmVtYWluaW5n 44536\nIGludGVycnVwdHM= 44537\nIEJhY2t1cA== 44538\nIE1vbmc= 44539\nIHJlY2VwdG9ycw== 44540\naGlzdG9y 44541\nLmNvcm91dGluZXM= 44542\nIHNob3V0ZWQ= 44543\nQWxhcm0= 44544\nIGNvbWJ1c3Q= 44545\nIGdyb3Rl 44546\ndWx0dXJhbA== 44547\nKGlkcw== 44548\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 44549\naXBsaW5hcnk= 44550\nT3B0cw== 44551\nIFlhbGU= 44552\nbG9jYWxTdG9yYWdl 44553\nIGVxdWl2YWw= 44554\nIEZsZWV0 44555\nXGI= 44556\nKnBp 44557\nIFFMYWJlbA== 44558\n5qE= 44559\nIHZ4 44560\nIEFDTA== 44561\nIHN1Y2Vzc28= 44562\nIHBlcmM= 44563\nIE5vdHJl 44564\nIGFuYXJjaA== 44565\nUmluZw== 44566\nc3Bi 44567\nIHN0cnBvcw== 44568\nc3RvcmVz 44569\nIE1hcGxl 44570\nKE1haW5BY3Rpdml0eQ== 44571\nKCIiKSk= 44572\nIHZpZXdIb2xkZXI= 44573\nUXVhZA== 44574\nIGlndWFs 44575\nb3JzY2hl 44576\nLm1hcmdpbg== 44577\nIGluZGll 44578\nIGZyYW5j 44579\nIEZvcm1CdWlsZGVy 44580\nIFBhcnRpY2lw 44581\nLmZsYXNo 44582\nIHN0b3Jtcw== 44583\nVWx0 44584\nIGZlbg== 44585\nW25ldw== 44586\nRXZlcg== 44587\nPSIK 44588\nIGxvY2FsaXplZA== 44589\nX2ZvbGxvdw== 44590\nIG5hdmU= 44591\nIGRvbWluYW5jZQ== 44592\nKHRpbGU= 44593\nSm91cm5hbA== 44594\nIFZD 44595\nIHBlbmV0cmF0aW9u 44596\n77yV 44597\nIGNvbXBhcnRtZW50 44598\nIGJpZHM= 44599\nRm9ybWF0dGVk 44600\nKioqKioqLwoK 44601\nKGNpdHk= 44602\n4oCUaXQ= 44603\nW0M= 44604\nIHVzZUNhbGxiYWNr 44605\nYXVi 44606\nKT8u 44607\nIFZBUg== 44608\nIFNlYmFzdGlhbg== 44609\nIE1vc3M= 44610\nIGFidW5kYW50 44611\nR3JlZw== 44612\n0YLQsA== 44613\nX2Np 44614\nIGJpYmxp 44615\nQ1JN 44616\nIEF0dGVtcHQ= 44617\naXNtZQ== 44618\nZGFzaA== 44619\n44CO 44620\nX211 44621\nLkZvcm1hdHRpbmdFbmFibGVk 44622\nSW5kZWVk 44623\nLWRpcmVjdA== 44624\nIHN1Y2tpbmc= 44625\nIHBuZQ== 44626\nb2NhYnVsYXJ5 44627\nIFBhY2tlcnM= 44628\nLk5hdmlnYXRpb24= 44629\nIHBpZWQ= 44630\nY3JpYmluZw== 44631\nIFN0dWFydA== 44632\nLlRvRG91Ymxl 44633\nIFNlY29uZGFyeQ== 44634\nU2F2aW5n 44635\nIER1dA== 44636\nIE1hZGQ= 44637\nTWFnaWM= 44638\nLEg= 44639\nLmRvY3VtZW50RWxlbWVudA== 44640\nIEJTVA== 44641\nIGRpZmZlcnM= 44642\nIG1vcmVvdmVy 44643\nX25k 44644\nU0VBUkNI 44645\n0L/RgNCw0LI= 44646\n5rQ= 44647\ndG9NYXRjaA== 44648\nIGRlY3JlYXNpbmc= 44649\nLW1lbWJlcg== 44650\nYW1wdXM= 44651\nKGJvb3N0 44652\nRGFpbHk= 44653\nRGF0YUdyaWRWaWV3 44654\nIEh0dHBDb250ZXh0 44655\nIGhpcHA= 44656\nX3dvcmtlcnM= 44657\nLWxhbmd1YWdl 44658\n6ZM= 44659\nIGNvbnNpc3RlZA== 44660\nYXRoaW5n 44661\nIE1lcmN1cnk= 44662\nJGNvbnRlbnQ= 44663\nIHByYWN0aWNlZA== 44664\nIE1vZHVsZXM= 44665\nX0RBWQ== 44666\nIHdlYWtuZXNzZXM= 44667\nIExvZGdl 44668\nIG5hcg== 44669\nIE1hdGU= 44670\nIGpw 44671\nIEh0dHBIZWFkZXJz 44672\nIHNtbw== 44673\nIFRPS0VO 44674\nXSko 44675\nIGFxdWk= 44676\nc3dhZ2Vu 44677\nIHNydg== 44678\nCWFucw== 44679\nQXJvdW5k 44680\nIE1hbnVlbA== 44681\nIGZpY3Rpb25hbA== 44682\nIElNRw== 44683\nIC4n 44684\nIEJlcnJ5 44685\nIHdhbGxwYXBlcg== 44686\nc2V4dWFs 44687\naWVybw== 44688\nIOeahA== 44689\n7IaM 44690\nQmFja2luZ0ZpZWxk 44691\nIEFkcmlhbg== 44692\nQkFTRVBBVEg= 44693\nIHJlcGVhdHM= 44694\nIGJsdWVz 44695\nIHVucHJlZGljdA== 44696\nX2NvbGw= 44697\nc3RhY2xl 44698\nIFR1bWJscg== 44699\nIEVsZg== 44700\nIGFzc3VyYW5jZQ== 44701\nIGNlbnN1cw== 44702\nIElNUE9SVA== 44703\nRU5ERVI= 44704\nYW5vcw== 44705\nID0o 44706\nIEVsbGlz 44707\nIgoKCgo= 44708\nLndpbg== 44709\nIEFib3Zl 44710\nYWxvbg== 44711\nX3RpY2s= 44712\nIHJlcHJlc2VudGF0aW9ucw== 44713\nIOaV 44714\nd2lk 44715\nIEFybXM= 44716\nTGlzdGE= 44717\nX2ZhaWx1cmU= 44718\nX2Nt 44719\nLkZsYXRBcHBlYXJhbmNl 44720\nIHRocm9uZQ== 44721\nUGF0Y2g= 44722\nIFZveQ== 44723\nZW5nbA== 44724\nIG5lZ290aWF0aW5n 44725\nPmA= 44726\nIHNob290cw== 44727\nIEZQUw== 44728\nLlllYXI= 44729\nIEtpc3M= 44730\nZW5jacOzbg== 44731\ncmVldGluZw== 44732\nRnJvbUZpbGU= 44733\nIHJlc2lnbmF0aW9u 44734\n2Lc= 44735\nIHR3aW5z 44736\nxrDhu6M= 44737\nIGdlYnJ1 44738\nLmdldENvbnRlbnQ= 44739\nLlRyZWU= 44740\nIEVtcGxveWVlcw== 44741\nIEZJRkE= 44742\nIGNlcnRhaW50eQ== 44743\nKENs 44744\nIHRvdGFscw== 44745\nZWRpdGFibGU= 44746\n4KWA 44747\nLlJlcG9ydGluZw== 44748\nTWFz 44749\ncXVpZXQ= 44750\nLnJ1bGVz 44751\nIFZP 44752\nY29uZXhpb24= 44753\nLEs= 44754\nIGFsbG9jYXRvcg== 44755\nIFBvd2Rlcg== 44756\nXFJlcG9zaXRvcnk= 44757\nQmVhdA== 44758\nX3RpcG8= 44759\nIFsnJyw= 44760\nX0lOVFI= 44761\nIDw8PA== 44762\nPGhy 44763\nIik9PQ== 44764\ndWdnYWdl 44765\nIENyYXc= 44766\nIMOpZ2FsZW1lbnQ= 44767\nIGdpbmdlcg== 44768\nIHByaW1lcmE= 44769\nIHByb2R1dG8= 44770\nbHRr 44771\nLlVzZXJOYW1l 44772\nIHN0cmVycm9y 44773\nbWl0aA== 44774\nX25i 44775\nIGRpc2NvbWZvcnQ= 44776\nJ107Pz48Lw== 44777\nUVQ= 44778\nIGVydXB0 44779\nIERhbmlzaA== 44780\nXEFjdGl2ZQ== 44781\nX2FkYXB0ZXI= 44782\nIGJ1YmJsZXM= 44783\ncm9sbG8= 44784\nb3Jnb3Q= 44785\n0L3Ri9GF 44786\nVkVDVE9S 44787\nb2NvZGU= 44788\nIEJ1bGxz 44789\nIGJvaWw= 44790\nPiIpOw0K 44791\nZHJvcElmRXhpc3Rz 44792\nIEJlZw== 44793\nX0hBTA== 44794\nIGNyb3NzQXhpc0FsaWdubWVudA== 44795\nIEV2aWRlbmNl 44796\nIHBlY3VsaWFy 44797\nIGluc3RpdHV0ZQ== 44798\ndmVpcw== 44799\nIGZmdA== 44800\nw4E= 44801\nIHpvZWt0 44802\nYW5hbHk= 44803\nIEhvbWVsYW5k 44804\nIHBlbmV0cg== 44805\ndWRkZW5seQ== 44806\nCWVsZW1lbnQ= 44807\nIEJyZW4= 44808\nIFRydWRlYXU= 44809\nIEN1YmFu 44810\namFt 44811\ndXNsaW0= 44812\nX2V2 44813\nIHN0ZW1z 44814\nfSU= 44815\nneWniw== 44816\nIGJyYW5kaW5n 44817\nIGNvcnJlc3BvbmRlbmNl 44818\nLmpxdWVyeQ== 44819\nouWNlQ== 44820\nIFJlYWRz 44821\nKEh0dHBTdGF0dXNDb2Rl 44822\nYXNzaW4= 44823\nKHNsb3Q= 44824\nIEdyYWR1YXRl 44825\nLy8vPA== 44826\nIGluZm9ybWF0aW9ucw== 44827\nRU5BQkxF 44828\nIHB1aXM= 44829\nIGZpbmRlcg== 44830\nIEJyaXM= 44831\nIG5ldHRzdGVkZXI= 44832\nX21pZA== 44833\nIG9ncw== 44834\nIFN0ZXJsaW5n 44835\nIGFycm9n 44836\nc3RyZnRpbWU= 44837\nfAoK 44838\nIHZveA== 44839\nIFJlZ2FyZGxlc3M= 44840\nIGVzbw== 44841\nIENvbWZvcnQ= 44842\nLkJvb2xlYW5GaWVsZA== 44843\nIHVo 44844\nQUNZ 44845\nIHNxdWVleg== 44846\nIFZpYw== 44847\nY29udHJv 44848\nLmxv 44849\nIGlyZQ== 44850\nIENvbWVkeQ== 44851\n67Y= 44852\nIG9yaWdpbmF0ZWQ= 44853\nIHNoaXBtZW50 44854\nfG1heA== 44855\nX2d1aWQ= 44856\nbGV2YXRpb24= 44857\n0L3QsNGP 44858\nKHVuZGVmaW5lZA== 44859\nIEREUg== 44860\nIHNob290aW5ncw== 44861\nIExhdGlubw== 44862\nRU5ET1I= 44863\nIGF2ZXJhZ2luZw== 44864\nIGdyZWV0ZWQ= 44865\nIHRoZWF0ZXJz 44866\n0L7QtQ== 44867\nIGRC 44868\nIGdzdA== 44869\nIGRlZmluaXRl 44870\nLlN0b3JhZ2U= 44871\nLmhlcg== 44872\nIGFmb3Jl 44873\nIFJlYWxpdHk= 44874\nIEdvZHM= 44875\ndmVyc2Vk 44876\nIGhhbmRzb21l 44877\nIGV4Y2x1ZGluZw== 44878\nKGFk 44879\nUXVvdGVz 44880\nIFNjaGVtZQ== 44881\nP3E= 44882\nIFRhbWls 44883\nVGlja3M= 44884\nIHBlc3Q= 44885\nJ24= 44886\nIHBvcm5vZ3JhcGh5 44887\nX21vZGFs 44888\nIC0tLS0tLS0tLS0= 44889\nIGRpc3Bvc2FibGU= 44890\nRlJFRQ== 44891\nIHNoYXJr 44892\nQ0hF 44893\nIGRlcGljdGVk 44894\nIGRlbW9uc3RyYXRpb25z 44895\nIEtpbGxlZA== 44896\nIFJVTEU= 44897\nIG9ic2Vzc2Vk 44898\nIHNpbXBsaWZpZWQ= 44899\nUG9zdGFs 44900\nIGNvbmNlcHR1YWw= 44901\nIHBzdA== 44902\nTGFz 44903\nX1BST0pFQ1Q= 44904\ndWNjZWVkZWQ= 44905\nb2x1 44906\nxJ9p 44907\nIHBlcnNvbmFsaXRpZXM= 44908\nIHJlc2hhcGU= 44909\nIGVuY2xvc2Vk 44910\nCXB0cg== 44911\nIHR1dG9yaWFscw== 44912\nIGV4cGxvZGVk 44913\nX0RJUkVDVE9SWQ== 44914\n5YaF5a65 44915\nIGNhbm9u 44916\nIHJlY29nbmlzZQ== 44917\nUEFE 44918\nIEFwcHJveA== 44919\nIFJlc3RvcmU= 44920\nIEltcG9ydGFudA== 44921\nIGhlYXZpZXI= 44922\nLlNlcXVlbnRpYWw= 44923\nRWFydGg= 44924\nIE1pbGs= 44925\nLnNldFJlcXVlc3Q= 44926\nLnRlbQ== 44927\nIHJlY29uc3RydWN0 44928\nIHNrZXB0aWNhbA== 44929\nX1ByaXZhdGU= 44930\nQlVG 44931\ncXVh 44932\nOmE= 44933\nIHNlaw== 44934\nIGR3ZWxs 44935\nb3NzYQ== 44936\nIHJld2FyZGVk 44937\n0LjQuQ== 44938\nKHRvcGlj 44939\nX3BhcnRpdGlvbg== 44940\nIF9fX19fX19fX19fX19fX19fXw== 44941\nS2V5d29yZHM= 44942\nIEZyYW5jbw== 44943\nTGl0ZQ== 44944\nIG5ha2Vu 44945\nINC30LA= 44946\nT0JKRUNU 44947\nIGNyYWZ0cw== 44948\nIFN3YXA= 44949\nLlhuYQ== 44950\nLkNvbm5lY3Q= 44951\nIGJhbGNvbnk= 44952\nKHJlYWw= 44953\nIEJhcm5lcw== 44954\nYmly 44955\nIFR3ZW50eQ== 44956\nYXlhbg== 44957\nYXRhcnM= 44958\nIFByb3BlbA== 44959\nIElobmVu 44960\nVXBncmFkZQ== 44961\nIGN1cmI= 44962\nLXNlY29uZA== 44963\nIG5lcGg= 44964\nLnByZXM= 44965\n7J6F 44966\nLnNlcQ== 44967\nIHBhZGRlZA== 44968\nIj8= 44969\namw= 44970\n44Os 44971\nJyk8Lw== 44972\nIGNpdmlj 44973\nZ29ucw== 44974\nPmE= 44975\nQ29vcmRpbmF0ZXM= 44976\nIGVuYWN0ZWQ= 44977\nRU5UUw== 44978\nIGxhYw== 44979\nLmZpbmFs 44980\nIFBocFN0b3Jt 44981\nY2FsbGVk 44982\nIGlucXVpcmllcw== 44983\nLm1pZGRsZXdhcmU= 44984\nIERvd250b3du 44985\nLyc7Cg== 44986\nIGtpbG9tZXQ= 44987\nYWNjZWw= 44988\nIHF1aWVu 44989\nd3N0cmluZw== 44990\nc2V0RGF0YQ== 44991\nIG1hbmVyYQ== 44992\nIG1vZHVsYXI= 44993\ncmltcA== 44994\nIHRhcmlmZnM= 44995\n4oCZaWw= 44996\nX1RIUk9X 44997\nL2NvbG9y 44998\nIEhUTUxFbGVtZW50 44999\nIGNhcnJv 45000\nIHByZXJl 45001\nIHBsb3R0aW5n 45002\nIFBvc2l0aXZl 45003\nIE1hY2hpbmVz 45004\nT1RFUw== 45005\n4bub 45006\ncGxlYXNhbnQ= 45007\nIGFsdGU= 45008\nIGFpbmRh 45009\ndGhlc2U= 45010\nIGNvcnM= 45011\naXBheQ== 45012\nIEFkdmlzb3J5 45013\nIFJ1Ymlv 45014\nanE= 45015\nIGxpbWVzdG9uZQ== 45016\nIGRldGFjaGVk 45017\n6K6+572u 45018\ndGVuYW50 45019\nIERlcHRo 45020\nYWxvcmU= 45021\nINGB0YLRgNC+0Lo= 45022\nIEZPUkU= 45023\nIExheQ== 45024\ncHJlc2VudGF0aW9u 45025\nKScpOwo= 45026\nLnN1YnBsb3Rz 45027\nz4M= 45028\nTk9X 45029\nR2Fy 45030\naGFuZGxlcw== 45031\nYWJyYQ== 45032\ncHV0aWVz 45033\nIEVsZWN0cmljYWw= 45034\nTWlkZGxl 45035\ncm9waWM= 45036\nIEpE 45037\nIER5bg== 45038\nIEJyaXN0b2w= 45039\nIE1jQ2FydGh5 45040\nIHN0cmlrZXI= 45041\nIGVudW1lcmFibGU= 45042\nIEV2YW4= 45043\nLmRlZmF1bHRz 45044\ncXVlbmNlcw== 45045\nKXx8 45046\nCXRva2Vu 45047\n4peP 45048\nLWRyb3Bkb3du 45049\nU1RPUkU= 45050\nIEdyYXBoaWM= 45051\nKHBw 45052\nRXhwbA== 45053\nIHVwd2FyZHM= 45054\nIERpc3RyaWJ1dGVk 45055\nIFdFQg== 45056\nSmVy 45057\naXNOYU4= 45058\n55Sf5oiQ 45059\nPlI= 45060\nw7xzc2Vu 45061\nZWZz 45062\nIHVuY292ZXI= 45063\nIGx1ZA== 45064\nLmNhbGN1bGF0ZQ== 45065\nIGludHB0cg== 45066\nIG1pZGZpZWxkZXI= 45067\nLkhlYWRlcnM= 45068\nIG1m 45069\nZXJlZg== 45070\nLk1ldHJv 45071\nIFNwZWFraW5n 45072\nOmI= 45073\nIGNyeXB0b2N1cnJlbmNpZXM= 45074\nIGRlbW9ucw== 45075\nCUVYUEVDVA== 45076\nIHdpY2tlZA== 45077\neW91dHViZQ== 45078\nOkludA== 45079\nIEhpbmRp 45080\nIENBVA== 45081\nINi5 45082\ncmFy 45083\nb21vcmU= 45084\nL3Blcg== 45085\nL2xpY2Vuc2U= 45086\nIHJlaW0= 45087\nIGF3YWl0aW5n 45088\nIGxldGhhbA== 45089\nIEVG 45090\ncm91bmRlZA== 45091\nIFBsYXRpbnVt 45092\nINCy0YHQtQ== 45093\nLmNvb3Jkcw== 45094\nLkRldmljZQ== 45095\nL2l0ZW0= 45096\nIFdlbm4= 45097\nY29tcGlsZUNvbXBvbmVudHM= 45098\nIEtpbmRlcg== 45099\nLnJlbW92ZUl0ZW0= 45100\nIGFuZGE= 45101\nYm5i 45102\nIHByYQ== 45103\nKHRyYW5zYWN0aW9u 45104\nIGVtYmFycmFzc2luZw== 45105\nCUJPT0w= 45106\nLmNvbnRlbnRWaWV3 45107\nIGV2ZW50ZGF0YQ== 45108\nYXRvcmU= 45109\nIHByb3ZpZGVkSW4= 45110\naXJtYQ== 45111\nIHpvbmE= 45112\nX0hX 45113\n5pk= 45114\nIHN0b3Zl 45115\nIGNvdW50ZXJwYXJ0 45116\nX1Byb2R1Y3Q= 45117\nX01BTkFHRVI= 45118\nIGluZnJpbmc= 45119\nIEVSQQ== 45120\nX3BhcnR5 45121\n0ZE= 45122\nIGluaWNp 45123\nX1JlcXVlc3Q= 45124\nIG1pcmFjbGU= 45125\nIGNhbmNlbEJ1dHRvbg== 45126\nU3B5 45127\nYXTDsw== 45128\nIHBvbGlzaA== 45129\nIE5pY29sZQ== 45130\nLmRpc3BsYXlOYW1l 45131\nXFJlcXVlc3Rz 45132\nIHVzZUhpc3Rvcnk= 45133\nUm91dGVyTW9kdWxl 45134\nIHN0YXJlZA== 45135\nSURFUg== 45136\n0YPQvdC60YbQuA== 45137\nIG5vdGE= 45138\nJGFycg== 45139\ncGVjaWZpZWQ= 45140\nIHRvcHA= 45141\nX0RSSVZFUg== 45142\nL25n 45143\n5aA= 45144\nX3Rt 45145\nJXRpbWVvdXQ= 45146\nPHM= 45147\nICgqKQ== 45148\nIEh0dHBSZXF1ZXN0 45149\nX1RSQUNL 45150\nKG5vdGU= 45151\nIEV4cGxvcmU= 45152\nX3NlcnY= 45153\nIOe7 45154\nQmluZGVy 45155\nKyIs 45156\nLmF0dA== 45157\nIEV0aGk= 45158\nIGPDs2RpZ28= 45159\nPSdc 45160\nLmxpbmVz 45161\nKE9m 45162\n5bCG 45163\nbWlzc2libGU= 45164\nIHbDqQ== 45165\nIGFjb3VzdGlj 45166\nIGNyYWZ0aW5n 45167\nbml0 45168\nLmJh 45169\nIEx1Y3k= 45170\nIGlQb2Q= 45171\nIHB1cGlscw== 45172\nLW1heA== 45173\nX3dy 45174\nKGNw 45175\nIFJFUE9SVA== 45176\nIGRucw== 45177\nIFJlZmVyZW5jZXM= 45178\nIHVuZGVydGFrZW4= 45179\nIGvDuGJlbmhhdm4= 45180\nIGNoYWk= 45181\nIENyb2F0 45182\nX0xvZw== 45183\ncm93bmVk 45184\nX21lZA== 45185\nCWRhdGU= 45186\nI19f 45187\nIGNvc3R1bWVz 45188\nIFJlcXVpcmVz 45189\nYWZmbGU= 45190\n54q25oCB 45191\nLVNlbWl0 45192\nZWxhaWRl 45193\n0LXRgtC+0LQ= 45194\nIHBlc3RpYw== 45195\nIGRyYQ== 45196\nRE9DVU1FTlQ= 45197\nIC4uLg0K 45198\nfWB9Cg== 45199\nIEF1Y3Rpb24= 45200\nIERvY2s= 45201\neHh4eHh4eHg= 45202\nKGdldFN0cmluZw== 45203\nhY0= 45204\nIGJvcmRlcldpZHRo 45205\nIE1hY2hpbmVyeQ== 45206\nIHByZWRpY3RhYmxl 45207\nLlNI 45208\nIGFtcGxpdHVkZQ== 45209\nLmZvclJvb3Q= 45210\nSU5hdmlnYXRpb24= 45211\nVGFibGVNb2RlbA== 45212\nYXR0cmli 45213\nIG1hbmV1dmVy 45214\nIGV4Y2F2 45215\nQkVSUw== 45216\nIGRhcGF0 45217\nIGluc3RhbGxhdGlvbnM= 45218\nLkFzeW5j 45219\nIHJheXM= 45220\nPeKAnQ== 45221\nOw0NCg== 45222\nLmNyeXB0bw== 45223\nX2RiZw== 45224\nIEVudW1lcmFibGU= 45225\nT2ZTaXpl 45226\nX2Vwb2Nocw== 45227\nbXc= 45228\nTUVOVQ== 45229\nb3V0bGluZQ== 45230\nIFBhcGVycw== 45231\nPT09PT09PT09PT09Cg== 45232\nIHVuaWZvcm1z 45233\nIEdpZw== 45234\nLXBhY2thZ2U= 45235\nIEplbmtpbnM= 45236\nIEhvbWVQYWdl 45237\nLmlzU2VsZWN0ZWQ= 45238\nIG1lY2hhbmlj 45239\nTUs= 45240\nIFNvdW5kcw== 45241\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 45242\nIHJlc2VhcmNoaW5n 45243\nIGluZm9z 45244\nb2dyYXBoaWNz 45245\nZXJzZXQ= 45246\nKFsnLw== 45247\nIFRpbWJlcg== 45248\nLmFnZW50 45249\nLnRvSlNPTg== 45250\nX2NvbW1hbmRz 45251\ncGFyaW5n 45252\nX2FkanVzdA== 45253\nLm5vbWU= 45254\nKGdsbQ== 45255\nU3RhdHVzQmFy 45256\nZmlsZXBhdGg= 45257\nP+KAmQ== 45258\nIGRldGVjdGl2ZQ== 45259\nIHVuc2VyZXI= 45260\nIFRpYmV0 45261\nRU5ERUQ= 45262\nKHNlZWQ= 45263\nIHNuZWFr 45264\nIGFtb3I= 45265\nPSIvLw== 45266\nIFBhbnRoZXJz 45267\nYWxsYXg= 45268\nIExJVkU= 45269\nCURXT1JE 45270\nXT0t 45271\nIHRvcm5hZG8= 45272\nL21pbg== 45273\nIGx1bmdz 45274\nLWN1cnJlbnQ= 45275\nIEJvb2tpbmc= 45276\n5YiX6KGo 45277\nIGVuam95bWVudA== 45278\n4KSw 45279\nSkE= 45280\ndHlwZWQ= 45281\nLkJ0bg== 45282\nZmF0 45283\ndWdhbA== 45284\nIFNoYXJlcw== 45285\nIGRpc2dy 45286\nIEJBUg== 45287\nIEZPWA== 45288\nT3Bjb2Rl 45289\nIFN6 45290\na2V5ZG93bg== 45291\naWN0aW9uYXJpZXM= 45292\nIGRldGFpbGluZw== 45293\nfSkpCg== 45294\nIHBvaw== 45295\nIGRlbW9uc3RyYXRpbmc= 45296\nIG5vdGF0aW9u 45297\nbGF5ZXJz 45298\nQGlm 45299\nIE5QUg== 45300\nLnN0cmljdEVxdWFs 45301\nIFJlY2lwZXM= 45302\nLlRlbnNvcg== 45303\nIGxpcXVvcg== 45304\nIGRlYnRz 45305\nLmVuZHNXaXRo 45306\nV2hlZWw= 45307\nLlBvcw== 45308\nQ1NW 45309\nJGFyaXR5 45310\nIHVuc3RhYmxl 45311\nKGxvc3M= 45312\nRU5TT1I= 45313\nIGVsZXZlbg== 45314\nIExvcGV6 45315\nIEhvcGtpbnM= 45316\nY29ub20= 45317\nIFNldGg= 45318\nIHBvZW1z 45319\nUXVhbnQ= 45320\nIGdzbA== 45321\nIHN5cnVw 45322\nIHNpYmxpbmc= 45323\nIGNhc3M= 45324\nLXZvdXM= 45325\nw7Z0 45326\nX1BBVFRFUk4= 45327\nX1NFQ1RJT04= 45328\nZXN0aW1hdGVk 45329\ndXBncmFkZQ== 45330\nLm1vbmdvZGI= 45331\nIEJvYXQ= 45332\nX0NUWA== 45333\nIGZldGNoaW5n 45334\ndXN0aW4= 45335\ncGllbA== 45336\nTWFyZw== 45337\nUmVmbGVjdGlvbg== 45338\nIGR1Y3Q= 45339\nIE11bmljaXBhbA== 45340\nIGJ4 45341\nLkdldEN1cnJlbnQ= 45342\nbWxpbms= 45343\nIEFjY291bnRpbmc= 45344\nIEdlbmV2YQ== 45345\nX1Bvcw== 45346\nIHBhc3Nlcg== 45347\nIGhlYXJpbmdz 45348\nY29tcGFu 45349\nIGZyYWdpbGU= 45350\nSW5pdGlhbGl6ZXI= 45351\nd2Fsa2Vy 45352\nLk1hdGVyaWFs 45353\nIEh1bnRpbmc= 45354\ndHJ5c2lkZQ== 45355\nIGthdA== 45356\nIGNsZXJr 45357\n4Z8= 45358\nZG9pbmc= 45359\nCWdyb3Vw 45360\nIHNhbmN0aW9u 45361\nLmxi 45362\nIExhenk= 45363\nIENvbnN0cmFpbnQ= 45364\nUGFnaW5hdGlvbg== 45365\nIHBvdXZleg== 45366\nIEluZGljYXRlcw== 45367\nTUVS 45368\nIGNvdXJz 45369\nIHllYXJseQ== 45370\nIGdyb3NzZQ== 45371\nYWJicmV2 45372\nIERPTg== 45373\nIHByb2NlZWRlZA== 45374\nZW50bGljaA== 45375\nIHByb3BlcnR5TmFtZQ== 45376\nIFRlYWNoaW5n 45377\nc3RhZHQ= 45378\nIGN1dG9mZg== 45379\nb3JuZXJz 45380\nIGFmcmljYQ== 45381\nIHJlbmRlcnM= 45382\nIFlhbmtlZXM= 45383\nIFRvb2xiYXI= 45384\nc3BhY2Vz 45385\nLmZpbGxTdHlsZQ== 45386\nIHNlZ3VuZG8= 45387\nX3N0cmxlbg== 45388\nLkZpcmViYXNl 45389\n5aSE 45390\nIG1lbnRpb25pbmc= 45391\nXCg= 45392\nIFZhbHZl 45393\nU2V0dGVy 45394\nIHNwYW5z 45395\nIEFsY29ob2w= 45396\nIExldHRlcnM= 45397\nXHhl 45398\nIFRL 45399\nX0JMRQ== 45400\nLmdldFJlc3VsdA== 45401\nPFBsYXllcg== 45402\nIFBhdHQ= 45403\nIGVhc2luZw== 45404\nIHR1cmtleQ== 45405\nIEZlbg== 45406\nJyki 45407\nIGNvbmZpbmVk 45408\nIGluY2x1cw== 45409\nU3VwZXJ2aWV3 45410\nKHdpdGhJZGVudGlmaWVy 45411\nZW5jaWFs 45412\nIHN0dWZmZWQ= 45413\nVGhldGE= 45414\nIGVjb25vbWlzdHM= 45415\nfSkpOwoK 45416\nY29va2llcw== 45417\nIFJvb3Nl 45418\nIENoZWVzZQ== 45419\nIGZpY2hpZXI= 45420\nIGVuZm9yY2Vk 45421\nQUJC 45422\nbm/Fm2Np 45423\nX0FMTE9X 45424\nIHJlY3J1aXRlZA== 45425\nIGV4cGVuZGl0dXJl 45426\nLW5pZ2h0 45427\nIGFzc2VydE5vdE51bGw= 45428\nX2V4ZWN1dGU= 45429\nINiv 45430\nSU5ERVg= 45431\nX0ZNVA== 45432\nIHJlc2N1ZWQ= 45433\nIE1vbnRobHk= 45434\nIENvbnNlcnZhdGlvbg== 45435\nIEdlYg== 45436\nT2JhbWE= 45437\nRXBvY2g= 45438\naWNpZXM= 45439\nIE9ydA== 45440\nIHNvaXQ= 45441\nKGljb24= 45442\nRnJpZW5kcw== 45443\nbW9s 45444\nIGdyb3VuZGVk 45445\nIENhdXNl 45446\nYWRlbmE= 45447\nV0VFTg== 45448\nIEx1bg== 45449\nSVRJVkU= 45450\nLmxvb3A= 45451\nX3VudGls 45452\nIGNvcnI= 45453\nLmVkZ2Vz 45454\nIGh5cG90aA== 45455\nY2hlZHVsaW5n 45456\ndHJhbnNsYXRvcg== 45457\nINCc 45458\nUm9t 45459\n44CRCgo= 45460\nIFhhbWFyaW4= 45461\nIHZpb2xhdGluZw== 45462\nLmFuY2hvcg== 45463\nLS0tCgo= 45464\nIHRyYWRlcg== 45465\nQURWRVJUSVNFTUVOVA== 45466\nIHVuc2VyZQ== 45467\nIERBTw== 45468\nIGJsb25k 45469\nIFBBVA== 45470\nLmdsb2I= 45471\nIOi+kw== 45472\nIHNwbGl0dGluZw== 45473\nIHVuc3Vic2NyaWJl 45474\nIGF0bW9zcGhlcmlj 45475\nIFRyaW0= 45476\nIGNpdGF0aW9u 45477\nIGluZmVyZW5jZQ== 45478\nIEZ0 45479\nIERhcndpbg== 45480\nZmluZE9uZQ== 45481\nIEdlbA== 45482\nKENvbnZlcnQ= 45483\nIGFjY2Vzc29y 45484\nO3RleHQ= 45485\nKHNvcnRlZA== 45486\nIGp1ZGdlZA== 45487\nKTtc 45488\nOnA= 45489\nIG1laW5l 45490\nIFNsaW0= 45491\nLkNvbW1hbmRz 45492\nIHBlcmNlaXZl 45493\nY29ob2xpYw== 45494\nPERhdGE= 45495\nLmVudHJ5U2V0 45496\nIGFzc2VydEZhbHNl 45497\nIFBhdHJvbA== 45498\nZW5zZW0= 45499\nxYLEhQ== 45500\nqKE= 45501\nV0lEVEg= 45502\nIFJlc2N1ZQ== 45503\nIFVJRg== 45504\nX1RIUkVTSE9MRA== 45505\nIE1pY2hlbA== 45506\nQVRFUklBTA== 45507\nb3BlbnNvdXJjZQ== 45508\nIERpYW5h 45509\nIGludml0ZXM= 45510\nX0JPRFk= 45511\nIHJlc2Vydm9pcg== 45512\nIHJvaQ== 45513\nY3VzdA== 45514\nKHRj 45515\n77yBIik7Cg== 45516\nIGZlc3RpdmFscw== 45517\nIHBlcmZvcm1lcnM= 45518\nIGNsaW1iZWQ= 45519\nIGp1bmdsZQ== 45520\nU3RyaW5nTGVuZ3Ro 45521\nIHVubGF3ZnVs 45522\naWVycmU= 45523\ndmVydGlzZW1lbnQ= 45524\nIHN0YWtlcw== 45525\nIGhhdHM= 45526\nTW9kaWZ5 45527\nIExFVFRFUg== 45528\nLkhpZGU= 45529\nIHN0YXR1dG9yeQ== 45530\nX3doaXRl 45531\nIFBlcmw= 45532\ndXRlbmJlcmc= 45533\nZW1wbGU= 45534\nLldvcmxk 45535\nIG92ZXJsb29rZWQ= 45536\nIGNvbmNsdWRlcw== 45537\nLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 45538\nLXdpc2U= 45539\nCXN0cmVhbQ== 45540\ncG9wdWxhdGlvbg== 45541\nIGV2ZW50bw== 45542\nIGlsbHVzdHJhdGlvbnM= 45543\nZnRz 45544\nIGF1dG9m 45545\nIFByb2NlZHVyZQ== 45546\nIGRlc2VydmVk 45547\nLXRpbWVz 45548\nIGdvbA== 45549\nTlNFcnJvcg== 45550\nY3Jlc3Q= 45551\nIFBha2lzdGFuaQ== 45552\nYW55Y2g= 45553\nZ2V0Q3VycmVudA== 45554\nIGxhcg== 45555\nbnRs 45556\nIFJlYmVjY2E= 45557\nIG1hdGVyaWE= 45558\nIGZpbmRCeQ== 45559\nL2Fk 45560\nQ2FsbGJhY2tz 45561\nIEFscw== 45562\nIEthdGll 45563\nIE9ic2VydmFibGVDb2xsZWN0aW9u 45564\nIERvY3VtZW50YXRpb24= 45565\nVHlwZWQ= 45566\nIEN1bHR1cmVJbmZv 45567\nIFRpbW90aHk= 45568\nIGxhdGVyYWw= 45569\nInR5cGU= 45570\nIHVuYXV0aG9yaXplZA== 45571\nIHRlYWNoaW5ncw== 45572\nIGRlYnVnZ2Vy 45573\nW3ZhbHVl 45574\nIGFsb3Jz 45575\nIHV6 45576\nIHNjYXR0ZXI= 45577\nIGRvd253YXJk 45578\nIG1pZ2xp 45579\nc3RhdHVzQ29kZQ== 45580\nICgpKQ== 45581\nIE1X 45582\nINC80L7Qtg== 45583\nUk9TUw== 45584\nLmJ1Zg== 45585\nIGZhaXJ5 45586\nIEluZnJhc3RydWN0dXJl 45587\nPT4i 45588\ndGxlbWVudA== 45589\nJCgi 45590\nRnJvbVN0cmluZw== 45591\nIEJpbGQ= 45592\nIGNvbnZlbnRpb25z 45593\nX25hdGl2ZQ== 45594\nIEluc3BlY3Rvcg== 45595\nIFBpc3Q= 45596\ndWJhcg== 45597\nIHJlZ3M= 45598\nIFBpbG90 45599\nVGh1cw== 45600\nPicr 45601\nIGNlbGE= 45602\nLm5ld3M= 45603\nKFByb2R1Y3Q= 45604\nTGl2aW5n 45605\nUnVzc2lh 45606\nIGZhY2V0 45607\nZXRpY2Fs 45608\nIFsnJA== 45609\nL1s= 45610\nIERpcmU= 45611\nIGdhc2Vz 45612\nIElORk9STUFUSU9O 45613\nIEVhdA== 45614\nIEZvcnVtcw== 45615\nIENoYXJhY3RlcnM= 45616\nX21ldA== 45617\nIOyLnA== 45618\nIGtpbmdz 45619\nYWNoaWU= 45620\nIExhbWJkYQ== 45621\nIHRpbWVycw== 45622\nIExpZ2h0aW5n 45623\nIENhc2V5 45624\nYWRkaXI= 45625\nYW5kZXg= 45626\nLmFuc3dlcg== 45627\nIEhpcA== 45628\nIFByaW5jaXA= 45629\nU3RhcnREYXRl 45630\nIOOAjA== 45631\ndHJlcw== 45632\nICYj 45633\nLk1heFZhbHVl 45634\nIFByb2JsZW1z 45635\nIGxhdGV4 45636\nT2ZDbGFzcw== 45637\nIEx5bm4= 45638\nLy8n 45639\nIHZveWFnZQ== 45640\nIHNodXR0bGU= 45641\nIFJvbGxlcg== 45642\nIFJ1bnRpbWVFcnJvcg== 45643\ndXlh 45644\nRGlj 45645\nCWJ1aWxkZXI= 45646\nIGJ1bGx5aW5n 45647\nIHNpbXBsZXN0 45648\nLmNhbGxlZA== 45649\nIExS 45650\nIG1vcmFsaXR5 45651\nIHN0dXJkeQ== 45652\ndHJhY2tpbmc= 45653\nLnN3YWdnZXI= 45654\nX0JJTkQ= 45655\nSVRPUg== 45656\nLXVybGVuY29kZWQ= 45657\nINGF 45658\nIFRyaW5pdHk= 45659\nIHRyYXBz 45660\nIHwt 45661\nIHNldFRleHQ= 45662\nIGJhcmdhaW4= 45663\nIGJyYWtlcw== 45664\nLmdldENvZGU= 45665\nIG1pZ3JhdGU= 45666\nIHJpYmJvbg== 45667\nKXJldHVybg== 45668\nIGNoYXJnZXI= 45669\nYWNvbQ== 45670\nQURJVVM= 45671\nIEFtYmFzc2Fkb3I= 45672\nLWFmdGVy 45673\nIGFubmk= 45674\nCXNwaW4= 45675\nQ29uY2VwdA== 45676\nIEhlbmRlcnNvbg== 45677\nIEhPU1Q= 45678\nLnJhbms= 45679\nIE5vcnRoZWFzdA== 45680\nIGJlcmxpbg== 45681\nIHJlcXVpcw== 45682\nLmZlZWQ= 45683\nIHNvdXJjZU1hcHBpbmc= 45684\nIFJlbmNvbnRyZQ== 45685\nLmFqYXg= 45686\nbmVzdGpz 45687\nIHRyZWs= 45688\nIE5hY2lvbmFs 45689\nICZb 45690\nIHBheWFibGU= 45691\nb3J0ZXg= 45692\nIGRlcHQ= 45693\nZmllbGROYW1l 45694\nIGNvbXBsZXRlcw== 45695\nIFJWQQ== 45696\nIG9uaW9ucw== 45697\nYWxpZ25tZW50 45698\nRm9ybWF0cw== 45699\nICd7JA== 45700\nSGFzaFNldA== 45701\nIEJvZA== 45702\nLkludmFyaWFudEN1bHR1cmU= 45703\nIHNldHRsZW1lbnRz 45704\nIGh5ZHI= 45705\nLnVwZGF0ZWQ= 45706\ndmVudGg= 45707\nKHNlY29uZHM= 45708\nPSIvIg== 45709\nIHdlYnBhZ2U= 45710\nKAoK 45711\nIHRpcg== 45712\nIHRvZXM= 45713\nIEJyaWNr 45714\nIGFtYml0aW9u 45715\nUG90 45716\nPW1heA== 45717\nRVRJTUU= 45718\nIGRlcG90 45719\nY2FsbHM= 45720\nIE5vcndlZ2lhbg== 45721\nYDo= 45722\nIGJ1cmdlcg== 45723\nIHByb2Zlc3NvcnM= 45724\nIEFsbG9jYXRl 45725\nLXRoaXJkcw== 45726\nLWNoYXJ0 45727\nIGZvcmQ= 45728\nKk4= 45729\nLmtvdGxpbg== 45730\nIHBhcGVyd29yaw== 45731\nIERFVklDRQ== 45732\nJUAiLA== 45733\ncmVzcGVjdA== 45734\nKG1w 45735\n6auY 45736\nLWlm 45737\nIGN1c2hpb24= 45738\nb2JvdA== 45739\nIHBhcmM= 45740\nU1BBQ0U= 45741\nIE5ldGFueWFodQ== 45742\nIHNlbGZpc2g= 45743\nZmVhdA== 45744\nIGNsaWVudGVz 45745\nLXRvb2xz 45746\nIHBvcmNo 45747\nIGpx 45748\nLnZlcmJvc2U= 45749\nIGxpYmVyYWxz 45750\nXSkKCgo= 45751\ncGllcw== 45752\nTm90Qmxhbms= 45753\nKHRlcm0= 45754\nyJtp 45755\nX1BhcmFtcw== 45756\nLm5vcm1hbGl6ZQ== 45757\nQnVsbGV0 45758\nQVNJQw== 45759\nKGhleA== 45760\nX2NsaWVudGU= 45761\nKyw= 45762\nX0RJ 45763\nIGZvcnRoY29taW5n 45764\nfSIpXQo= 45765\nc2Vv 45766\nVW0= 45767\nPk5hbWU= 45768\nIGNvbWZvcnRhYmx5 45769\naXJlY3Rpb25hbA== 45770\nV0lUSA== 45771\nL3By 45772\nIFBvb3I= 45773\nIFZpdGFtaW4= 45774\ndmlj 45775\nR0g= 45776\nIHByaW9yaXQ= 45777\nIE5O 45778\nIENsb3NlZA== 45779\npO0= 45780\nIGlzT3Blbg== 45781\nXENvbnNvbGU= 45782\nQW5kRmVlbA== 45783\nLlNVQ0NFU1M= 45784\nX09QRVJBVElPTg== 45785\ncG9sYXRpb24= 45786\nIFRhcw== 45787\ncHN6 45788\nPicu 45789\nQ1VSUkVOVA== 45790\nVmVuZG9y 45791\naG9zdHM= 45792\nIEVyZA== 45793\nPnRhZ2dlcg== 45794\nIHNvdXJjZU1hcHBpbmdVUkw= 45795\nIG1hcmF0aG9u 45796\nX2Nsb3NlZA== 45797\nIGV4ZW1wdGlvbg== 45798\nIHJlY29nbml6ZXM= 45799\naWRlc2hvdw== 45800\nJyQ= 45801\nKCcvJyk7Cg== 45802\nbWl0cw== 45803\nd2Fyeg== 45804\nIENoZXJyeQ== 45805\ntaw= 45806\nbm9y 45807\ncG9ydGU= 45808\nIHds 45809\nX2JhY2t1cA== 45810\nLmdldEJvb2xlYW4= 45811\nLmdldFJlc291cmNl 45812\nIGRlZmluaXRpdmU= 45813\nLkVkaXRUZXh0 45814\nIHPDrQ== 45815\nLkNPTlQ= 45816\nIFBMQVlFUg== 45817\nLmNhcmRz 45818\nIFNob3Jl 45819\nKCcvJykK 45820\nY2x1aXI= 45821\nV2ViRHJpdmVy 45822\nKG1vbnRo 45823\nLXJlbGVhc2U= 45824\nIGluc3BlY3Rvcg== 45825\n5aM= 45826\nIE5G 45827\nX2NsaXA= 45828\n5a2Q 45829\nIGludGVyYWN0aW5n 45830\nLnRtcA== 45831\nICcnJwoK 45832\nIGRlZQ== 45833\nIGZyb3N0 45834\nIl0pKQo= 45835\nIFBsYWNlcw== 45836\nVGhyb3dz 45837\nZm9yaw== 45838\nL2RheQ== 45839\naVBob25l 45840\nIE1JQw== 45841\nIGZvbGRpbmc= 45842\nIGNyb3Jl 45843\nIENoaWVmcw== 45844\ncGhlcmljYWw= 45845\nKHByaWNl 45846\nLldyaXRlU3RyaW5n 45847\nIGV4aXRpbmc= 45848\nXScsCg== 45849\naWdodGluZw== 45850\nSW5ncmVkaWVudA== 45851\nKHZlcnRleA== 45852\nIHNjcm9sbFZpZXc= 45853\naGY= 45854\nOm5ldw== 45855\nU0VO 45856\nc2VjdG9y 45857\nIHNwaW5z 45858\nIFNjaGVkdWxlcg== 45859\nb3RlY2hu 45860\nc2VtaWNvbG9u 45861\nRm9udE9mU2l6ZQ== 45862\nIFNwZWNpZmljYWxseQ== 45863\nZmxhbW0= 45864\nLk9iamVjdElk 45865\nIGNvbnRh 45866\nX3Blcm1pc3Npb25z 45867\nCUZST00= 45868\nSUNPREU= 45869\nL2tn 45870\nIEhvdGVscw== 45871\nLW1lZA== 45872\nIERpbg== 45873\nIG5hdnk= 45874\nZ2V0UGFyYW0= 45875\nIG1lbmQ= 45876\nIHBvcnRyYXllZA== 45877\nIE1ldHJvcG9saXRhbg== 45878\nUGFpbnRlcg== 45879\nIHJlZmVycmFs 45880\nX2dvb2Q= 45881\nIG1hcnZlbA== 45882\nb3NhaWM= 45883\nPigm 45884\nLnVy 45885\nIGVzdG9z 45886\nV2lsbGlhbQ== 45887\nIHRpbWJlcg== 45888\nIHF1ZWxxdWVz 45889\nIERvY3VtZW50cw== 45890\nLlhhbWw= 45891\nIGJhdGNoZXM= 45892\n6YGT 45893\nIFJlbGVhc2Vk 45894\nVGFpbA== 45895\nQ09PS0lF 45896\naGVpZA== 45897\nX3N0YXRpb24= 45898\nIFZpYQ== 45899\nU2FsZQ== 45900\nIFJlcGVhdA== 45901\nIHByb21pbg== 45902\nIFpv 45903\nLWZvcndhcmQ= 45904\nIElvbg== 45905\naXRhcnk= 45906\nIGp1cw== 45907\nLXJlcXVlc3Q= 45908\nIHByb3VkbHk= 45909\nIFN0cmVhbWluZw== 45910\nKE1vdXNlRXZlbnQ= 45911\nIFNwcmludA== 45912\nX3JvdGF0aW9u 45913\nUmVwb3NpdG9yaWVz 45914\nIHRhcnQ= 45915\nINGB0LI= 45916\nIG1hcHBpbmdz 45917\n6Ko= 45918\nQ3U= 45919\nQ3ljbGU= 45920\nIGJ1bg== 45921\nCWx1YQ== 45922\n44OJ 45923\nICgoIQ== 45924\nIGNvbGxlY3RpdmVseQ== 45925\nIENvbmQ= 45926\nIHdzenlzdA== 45927\nKGxpYg== 45928\nb3BlbmhhZ2Vu 45929\nX3NraXA= 45930\nLkNvbHVtbkhlYWRlcg== 45931\n6YI= 45932\ncGVyaWVuY2Vk 45933\nj+i/sA== 45934\nX3Byb3Bz 45935\nIGNvbnRyYWNl 45936\nIG1hdGNodXA= 45937\nYWJldGlj 45938\nLm1lbWJlcnM= 45939\nUkVDVA== 45940\nKGRhdA== 45941\nIHNvZw== 45942\ncmVub20= 45943\nX01ldGhvZA== 45944\nQ3VzdG9tZXJz 45945\nZnVsbG5hbWU= 45946\nWk4= 45947\ncmV0cnk= 45948\nIGthcA== 45949\nIE5ldQ== 45950\n6Io= 45951\nYWRkQ2hpbGQ= 45952\nd2lsbFJldHVybg== 45953\nX3Blcm1hbGluaw== 45954\nIGVuZXJnZXRpYw== 45955\nIFdldA== 45956\nIE1vcnI= 45957\nIGdjZA== 45958\nY291bnRz 45959\nLHR5cGU= 45960\nZGln 45961\nKExvZ2lu 45962\nIGNyYWNrcw== 45963\nIGJhY3RlcmlhbA== 45964\nIE1lYXQ= 45965\nIEFybXN0cm9uZw== 45966\nIEJyb256ZQ== 45967\nIGFwcHJveGltYXRl 45968\nX2RpcnM= 45969\nbGlnYQ== 45970\nxYJhZA== 45971\nIGtpbmRuZXNz 45972\nIGNvbnRyZQ== 45973\nIEVWRVJZ 45974\nTUVU 45975\nIGFubm91bmNlbWVudHM= 45976\nZ3Bpbw== 45977\nIFdhaXRGb3JTZWNvbmRz 45978\nIFBob3Rvc2hvcA== 45979\nIGRpc2NvbnRpbg== 45980\nL2Rk 45981\nIHRvcG9sb2d5 45982\nYW5pY2Fs 45983\nLmludGVyZmFjZQ== 45984\nYXVjb3Vw 45985\nLkhhc2hTZXQ= 45986\nQVJJQU5U 45987\nKHJvdXRlcw== 45988\nIFRlaA== 45989\nIGh5cGU= 45990\nXSIpLg== 45991\nIHNsYW0= 45992\nIGJyb3Ro 45993\nLWludGVy 45994\nIFJpZA== 45995\nLW1hbmFnZXI= 45996\nQ2FuY2VsYXI= 45997\nIFBhZ2luYXRpb24= 45998\nIHNvdW5kdHJhY2s= 45999\nIHBvc3Rlcmlvcg== 46000\nIHNjcnVi 46001\nY3JlYXRpbmc= 46002\nLSo= 46003\naXJ0ZWVu 46004\nLmR5 46005\nLnN5bW1ldHJpYw== 46006\nICIiLg== 46007\nPT09PT09PT09PT09PT09 46008\nIGNoYXNzaXM= 46009\nIG51bWJlck9mUm93cw== 46010\nRGV2ZWxvcGVy 46011\nX2JpbnM= 46012\nIE9VUg== 46013\ncmllYg== 46014\nUHJvcw== 46015\nIHdpxJk= 46016\nImQ= 46017\nIGFzeW5jaW8= 46018\nemVpZ2Vu 46019\nX3NwaQ== 46020\nLkFMTA== 46021\nIHNjcmV3cw== 46022\nQ2hpbmVzZQ== 46023\nIGFwaUtleQ== 46024\nIHVuc3VjY2Vzc2Z1bA== 46025\nIFNlYWhhd2tz 46026\nT1JH 46027\n56ug 46028\nIHByb2Zlc3Npb25hbGx5 46029\nIENvdXBvbg== 46030\n5a2X5q61 46031\nQ29udmVudGlvbg== 46032\nIHBvbHlt 46033\n5omL 46034\nIHNhbHZhdGlvbg== 46035\nIGVuZ2luZWVyZWQ= 46036\nIFdyZXN0 46037\nIEdDQw== 46038\nIHdhcm1lcg== 46039\nTGF5b3V0Q29uc3RyYWludA== 46040\nIGFnZ3Jhdg== 46041\nU2NyaXB0cw== 46042\ndmVudHVyZQ== 46043\nIHJlZnJpZ2VyYXRvcg== 46044\nIGlubm92YXRpb25z 46045\nIFJ1bm5lcg== 46046\nTklD 46047\nIFJvbGxpbmc= 46048\nQ29udHJvbEV2ZW50cw== 46049\nIGxvb3M= 46050\ncGFj 46051\nCXBhbmVs 46052\nZWZl 46053\nIEJ1ZGRoYQ== 46054\nLS0tLS0tLS0tLS0tLS0K 46055\n5bqT 46056\nKGZvcktleQ== 46057\nIGx1bWlu 46058\nICg/ 46059\nIEFJRFM= 46060\nLHVzZXI= 46061\naW1pZW50b3M= 46062\nY29udGVudFR5cGU= 46063\nYW50bHI= 46064\n6aY= 46065\nIFdlbHQ= 46066\nUHJvZHVjdGlvbg== 46067\nbWlnaHQ= 46068\nIFZJSQ== 46069\nIiwo 46070\nIG9ic2VydmluZw== 46071\nIGRlbGliZXJhdGU= 46072\nKGNvbnRyb2w= 46073\nIHdpdGhk 46074\nIHNlbWFuYQ== 46075\nU1RBQ0s= 46076\ndWNoZW4= 46077\nTmljZQ== 46078\nIERldXRzY2hsYW5k 46079\nIFNwZWNpZmllcw== 46080\nZG1h 46081\naXppbw== 46082\nIEZhY3Rz 46083\nX3BvcHVw 46084\nIERpcmVjdG9ycw== 46085\nezo= 46086\nW1I= 46087\nINGN0LvQtdC80LXQvdGC 46088\nIHBsYXQ= 46089\nIGRpcmVjdGluZw== 46090\n5LiJ 46091\nIEdpbGJlcnQ= 46092\n4oCmLgoK 46093\nLnFtbA== 46094\nIHRoZXJlYWZ0ZXI= 46095\nIGRpc3Bvc2l0aW9u 46096\nZHJhZnQ= 46097\nIHN1cmdlb24= 46098\nIEluc2lkZXI= 46099\nQmxlbmQ= 46100\nIFRyZXY= 46101\ndHJpbnNpYw== 46102\nVG9waWNz 46103\ncmlldmU= 46104\nX0ZJTEVOQU1F 46105\nIGF1dHJlcw== 46106\nSm9zZQ== 46107\nUHJvZHVjZXI= 46108\nZXJ1cw== 46109\nIHBldGl0 46110\nIE5FWFQ= 46111\nIEZpbHRlcnM= 46112\nIHJlcGxpY2F0ZQ== 46113\nIl0pLg== 46114\nIGxlbmRlcnM= 46115\nXSIsCg== 46116\nO2NoYXJzZXQ= 46117\nQ3BwT2JqZWN0 46118\nIGZsb3JhbA== 46119\nIFRpcG8= 46120\nIGNpcmN1aXRz 46121\nZWFzeQ== 46122\nKCYk 46123\naXR0YQ== 46124\nZXJ5bA== 46125\nX0NPTU1PTg== 46126\nJ319Pgo= 46127\nLWJhY2tlZA== 46128\nKHZhcmlhYmxl 46129\nKEluZGV4 46130\nIHZvaXI= 46131\nX2xvY2F0aW9ucw== 46132\nKyspew== 46133\nIExvdWlzdmlsbGU= 46134\nIGdyYXRpdHVkZQ== 46135\nLk1vY2tpdG8= 46136\nIFBvd2Vycw== 46137\naWV1cnM= 46138\nIGdlb2dyYXBoaWM= 46139\ncmFsZQ== 46140\nIGNyYQ== 46141\nIFNwdXJz 46142\naXBoZXJ0ZXh0 46143\nQUNJT04= 46144\nLWNvbW1vbg== 46145\nIHZpY3Rvcmllcw== 46146\nIEZpbmFscw== 46147\nLnNodWZmbGU= 46148\nLW1pbGxpb24= 46149\nX1BST0M= 46150\nYXNzdW1l 46151\nIGlscw== 46152\nREJD 46153\nQm9vdFRlc3Q= 46154\nIGxhdm9y 46155\nLnRlc3Rpbmc= 46156\nLmFzdA== 46157\nIl0v 46158\nbW9pZA== 46159\nIHF1YWxpZmljYXRpb24= 46160\nZ2VzY2g= 46161\nCXB1dA== 46162\nIGFpcnBvcnRz 46163\nSkk= 46164\nVGVhY2hlcg== 46165\nX3VuaWZvcm0= 46166\nIG5hbWE= 46167\nIEJhc3Q= 46168\nZXJ0eXBl 46169\nY2FwdHVyZQ== 46170\nZ2V0QWxs 46171\nIFJleW5vbGRz 46172\nb29sZWQ= 46173\nLmNvbW1lbnRz 46174\nIGNoaW4= 46175\nKS4q 46176\nINC40LvQuA== 46177\ndGds 46178\ndWRvcw== 46179\nIGTDrWFz 46180\nY2hhaQ== 46181\nLnByb2dyYW0= 46182\nIHBzeg== 46183\nCWljb24= 46184\ncGhpbA== 46185\nZW50cmFs 46186\nX1dSQVA= 46187\nb3Zp 46188\nIG5vc3RhbGc= 46189\nSW5maW5pdHk= 46190\nCXlpZWxk 46191\nIHZpdGFtaW5z 46192\nUXVhdGVybmlvbg== 46193\nU2luaw== 46194\nX2dvb2Rz 46195\nIC4uLi4uLi4u 46196\nIFdpbmdz 46197\ndXJpZGFk 46198\nLXN0b3J5 46199\nIl0pCgo= 46200\naWRlbGl0eQ== 46201\nVHlwZURlZg== 46202\nR3Rr 46203\nIO2M 46204\nX01haW4= 46205\nIGNoZXo= 46206\nIFJhdmVu 46207\nIHBheXJvbGw= 46208\nIGZyZWVsYW5jZQ== 46209\nTExV 46210\nIE1lbmQ= 46211\nZWRheQ== 46212\nQXBpTW9kZWxQcm9wZXJ0eQ== 46213\nLkZvcm1Cb3JkZXJTdHlsZQ== 46214\nIGVjb25vbWlzdA== 46215\nc3RhbmJ1bA== 46216\nIGZyZWlnaHQ= 46217\nLUFnZW50 46218\nKG1ldGE= 46219\nIHN5bW1ldHJ5 46220\nICcuLg== 46221\nLkNhbGVuZGFy 46222\nLWF1dA== 46223\nZ2Y= 46224\ncGVudA== 46225\neWNsb3BlZGlh 46226\nIHdpc2hpbmc= 46227\nCgoKCgoKCgoKCgoK 46228\nIGdlbnRsZW1hbg== 46229\nIOqz 46230\nPSM= 46231\nIGxlY3R1cmVz 46232\n4oCcSW4= 46233\nICFf 46234\nIGhi 46235\nIFZlbmRvcg== 46236\nUmVjZW50bHk= 46237\nX25vdGVz 46238\n5o+Q56S6 46239\nIk15 46240\nSGVhZGVyc0hlaWdodA== 46241\nX1NP 46242\nIHVud2lsbGluZw== 46243\nIHN1cGVyaGVybw== 46244\nZ2lv 46245\ncHN5 46246\nIFBlZXI= 46247\namF2YXg= 46248\nJmFwb3M= 46249\nIENyaXNpcw== 46250\nb3JkaW5hbA== 46251\nTWVtY3B5 46252\nKysrKysrKysrKysrKysrKw== 46253\nLXZhbA== 46254\nIHdvcmtib29r 46255\nLWFw 46256\nPWs= 46257\nIG1ldGFsbGlj 46258\nX3BlZXI= 46259\nQnlQcmltYXJ5S2V5 46260\nX1NE 46261\ndWF0b3I= 46262\nX1NIQURFUg== 46263\nKU1hdGg= 46264\nLlRyYW5zZm9ybQ== 46265\nIGNvd3M= 46266\nUGhp 46267\nIENsZW0= 46268\nKF8oIg== 46269\nIEx1ZA== 46270\nLWRlbGF5 46271\nIFNlY3VyaXRpZXM= 46272\nIE9ydGhvZG94 46273\nU3ltZm9ueQ== 46274\nKHJlcG9ydA== 46275\nIGVudGVydGFpbg== 46276\nRVBT 46277\naXpvcGg= 46278\nZXh1YWw= 46279\nSVJE 46280\n5LuO 46281\nIGxpdGg= 46282\nIHNhbml0aXpl 46283\nIGZlbWluaW5l 46284\nSVNCTg== 46285\nLmF1dGhlbnRpY2F0aW9u 46286\nX3BpcGVsaW5l 46287\nL2NvbnN0YW50cw== 46288\nIENPTkY= 46289\nIGx1Y3I= 46290\ncmljaWE= 46291\nLnR0Zg== 46292\nLnNldENvbnRlbnQ= 46293\nIHN0YW4= 46294\nb3JlYW4= 46295\nIExsb3lk 46296\nLnJhd1ZhbHVl 46297\nIGdvcg== 46298\nIEJyb3ducw== 46299\nUmVncmVzc2lvbg== 46300\nIGxvd2VyaW5n 46301\nbmFpc3NhbmNl 46302\nIGJsb3dz 46303\nIGFtYXplZA== 46304\nIHVucmVsYXRlZA== 46305\nUmV2aWV3cw== 46306\nIHJ1Ynk= 46307\nIE1vZGlmaWVy 46308\nIGdpYW50cw== 46309\nLnRocmVhZA== 46310\nIGNvbnRhaW5tZW50 46311\nIFN0YXJ0Q29yb3V0aW5l 46312\ndW1hdA== 46313\nb3JlbGVhc2U= 46314\nIFJhbmR5 46315\nQGVuZGlm 46316\nRGlnZXN0 46317\nIHN1YnVyYmFu 46318\nPSIpOwo= 46319\nIGFubm9uY2U= 46320\nLnZhcmlhYmxl 46321\nXEZvdW5kYXRpb24= 46322\nIGFjcmU= 46323\nVmFu 46324\nIHR1cGxlcw== 46325\nZG5z 46326\nIFN0YW5kaW5n 46327\nX2xhcmdl 46328\nIGJveGluZw== 46329\nU3VwcG9ydEFjdGlvbkJhcg== 46330\nIEZvcnR1bmU= 46331\nIFJ1bQ== 46332\nX211bHRpcGxl 46333\nYXJjaGljYWw= 46334\nIGZ3cml0ZQ== 46335\nX3F1b3Rl 46336\nIGZvb2xpc2g= 46337\nIGNvbXByaXNpbmc= 46338\nINC+0L8= 46339\nLXNlbGVjdGVk 46340\ndmY= 46341\nbWFpZA== 46342\nTmFtYQ== 46343\nKGRhdGV0aW1l 46344\nIGluZGlyZWN0bHk= 46345\nZ2FydA== 46346\nZml4dHVyZXM= 46347\nY2hvcw== 46348\nIEhhbG8= 46349\nIHJlY3VycmluZw== 46350\nLW5ld3M= 46351\ndmls 46352\nIE51cnNpbmc= 46353\nLXByb2R1 46354\nIEhR 46355\nXEh0dHBGb3VuZGF0aW9u 46356\nZW5jaQ== 46357\nYXVlbg== 46358\nIHZ5 46359\nb2NyYWN5 46360\nIGRlbGVnYXRpb24= 46361\nIGFzcGhhbHQ= 46362\nIHNldFNlbGVjdGVk 46363\na29r 46364\nL3Jlc3Q= 46365\nbWV0aWNz 46366\nIE5TRGF0ZQ== 46367\nIHRyYXZlbGxlZA== 46368\nIHJlY2li 46369\nIG1pbWU= 46370\nQ0xJRU5U 46371\nIEdV 46372\nIEhBTkRMRQ== 46373\nL1E= 46374\nW3o= 46375\nIGJvdGhlcmVk 46376\nIEJCUQ== 46377\nw6dhcw== 46378\nX2V4YW1wbGVz 46379\nX0ZJTg== 46380\nIHdoaXRlQ29sb3I= 46381\nIGFzdHJvbm9t 46382\nLWRpcg== 46383\nIHNvdmVyZWlnbg== 46384\nIGJyZWV6ZQ== 46385\nIGlubmluZw== 46386\nIEVkbW9udG9u 46387\nZ2xp 46388\nLmJsb2dzcG90 46389\nanN4 46390\nIHZlcnNh 46391\nIE1vaGFtbWVk 46392\nLkpvYg== 46393\nLXRvZ2dsZXI= 46394\nINC/0L7Qu9GM0LfQvtCy0LDRgg== 46395\nYXJkb24= 46396\nIG5ld2Jvcm4= 46397\nIG5hdmFs 46398\nbm90ZXE= 46399\nIHR1bWJscg== 46400\nIGhlbnRhaQ== 46401\nIFR5cGljYWxseQ== 46402\nIGxvb3Q= 46403\nLlNwcml0ZQ== 46404\nRmxpZ2h0 46405\nIHdhdmVsZW5ndGg= 46406\nLXNr 46407\nIEVsbGU= 46408\nX2V4cG9ydHM= 46409\nINGP 46410\nIElI 46411\naXpvcGhyZW4= 46412\nIO2B 46413\nX3ByaW1hcnk= 46414\nIG1vaXM= 46415\nIEJO 46416\nIHN5c3RlbWlj 46417\nIGRpZmVyZW50ZXM= 46418\nSU5DVA== 46419\nICcnCgo= 46420\nJHE= 46421\nV2lkZ2V0SXRlbQ== 46422\nY2xpZGU= 46423\nJGZpbGU= 46424\nTGVtbWE= 46425\nL3RhYmxl 46426\nYWdyaWQ= 46427\nIE1vbmdvREI= 46428\naW50ZQ== 46429\nIGFwcHJlbnQ= 46430\nwq1pbmc= 46431\nLkRi 46432\nIMOC 46433\naGFtbWVy 46434\nPScnOwo= 46435\nIGJyb2tlcnM= 46436\naXRsZW1lbnQ= 46437\nc2VtYmxpZXM= 46438\nRWxl 46439\ne3g= 46440\nIGxhc3RuYW1l 46441\nPC0= 46442\nIGZsYXR0ZW4= 46443\nX2JhbmQ= 46444\nLlJvb3Q= 46445\nLnJlYWRGaWxlU3luYw== 46446\nPT09PT09 46447\nLnJ4 46448\nPw0K 46449\nIG1ldGFwaG9y 46450\nVGk= 46451\nY29udGU= 46452\nIGRlYml0 46453\nIGNvbnRlbXB0 46454\nQ3BwVHlwZQ== 46455\n5pSv 46456\nRm9ybUZpZWxk 46457\ncmF0aW8= 46458\nb3NvcGhlcg== 46459\nIGltcGxhbnQ= 46460\nUFVSRQ== 46461\nIGFsdGE= 46462\nX21hbmFnZW1lbnQ= 46463\nIHJlZmluZQ== 46464\nIENoZWNrQm94 46465\nIENoYXJs 46466\nLXZlcnNpb24= 46467\nY29uZGl0aW9uYWw= 46468\ndmVudWVz 46469\nIHJpZmxlcw== 46470\nIG9mZnNwcmluZw== 46471\nIG1pbGxpbmc= 46472\nIHNoYXJwbHk= 46473\nIHVuZGVyd2F0ZXI= 46474\nKG9yaWdpbg== 46475\nX0NvbnRyb2w= 46476\nIC4k 46477\nUGx1Z2lucw== 46478\nIGRyeWluZw== 46479\nIGlsbHVzdHJhdGVz 46480\nLXU= 46481\nIHZlZ2V0YXJpYW4= 46482\nbnBj 46483\nSGVhcnQ= 46484\nOycsCg== 46485\nY29tbWE= 46486\ndGVlbnRo 46487\nYXNhbg== 46488\nL3NwZWM= 46489\nX21vdmVz 46490\nLW1hcmdpbg== 46491\nIGluZ2Vu 46492\nwqDCoMKg 46493\nIHByb2pldA== 46494\nIG90cmE= 46495\nIGJyYXM= 46496\nLnV0Yw== 46497\nIHNsZXB0 46498\nPXN1Yg== 46499\nYWJpbGl0 46500\ncG9zdGVy 46501\nIHNkaw== 46502\nb3VuY2lsbA== 46503\nIHdk 46504\nUHJlcGFyZWRTdGF0ZW1lbnQ= 46505\nIERydW0= 46506\nKGF0dHJpYnV0ZQ== 46507\nIEV0aGVybmV0 46508\nCURC 46509\nQ2FsaWZvcm5pYQ== 46510\nY3ViZQ== 46511\nW0k= 46512\nLkNyZWF0ZWQ= 46513\nIEhN 46514\nIHRyYWNpbmc= 46515\nRm9ybXNNb2R1bGU= 46516\nLXlvdQ== 46517\nLmN1cnJlbmN5 46518\nZmVlZGluZw== 46519\nIHRib2R5 46520\nTGk= 46521\nYWNjaW9u 46522\nbmFz 46523\nIHRyb3V2ZXI= 46524\nTk9ORQ== 46525\nIn0sDQo= 46526\nIGZ0cA== 46527\nV2l0aElkZW50aWZpZXI= 46528\ncG9sYXRl 46529\nRmlsZUluZm8= 46530\nIHB1cnN1ZWQ= 46531\nICAgIA0KICAgIA0K 46532\nREVTQ1JJUFRJT04= 46533\nfSovCg== 46534\nRnJvbU5pYg== 46535\nIGRlY29yYXRpdmU= 46536\nX1NTTA== 46537\nKGNoYXQ= 46538\nVExT 46539\nIHN1cnByaXNlcw== 46540\nYWxjdWxhdGU= 46541\nIFNwbGFzaA== 46542\nKENvbmZpZ3VyYXRpb24= 46543\nIFNFTQ== 46544\naW1zb24= 46545\nL2xpYnJhcnk= 46546\nPERvdWJsZQ== 46547\nLnJvYm90 46548\nwqDCoMKgwqDCoMKgwqDCoA== 46549\nIENQRg== 46550\nIFVuZGVyc3RhbmRpbmc= 46551\nIGNvc21ldGlj 46552\nIFh0 46553\ndGlwcw== 46554\nK2s= 46555\nKCIn 46556\nIFBEVA== 46557\nV0FS 46558\nLmdldE9iamVjdA== 46559\nIFRyYWRpdGlvbmFs 46560\nLnNsdWc= 46561\nIERpcGw= 46562\nPSIiLA== 46563\nIEZpbG1z 46564\nIEFuaW0= 46565\nLmhlbHA= 46566\nIGVtYmFzc3k= 46567\nIEJvb3Rz 46568\nIGJ1bms= 46569\nLXJpc2s= 46570\nIHBjaQ== 46571\nIC9cLg== 46572\nIElQVA== 46573\nIGNyYXNoaW5n 46574\nIGlwdg== 46575\nX2tl 46576\nIFJFU1A= 46577\nLkxvZ0Vycm9y 46578\nIGluYWRlcXVhdGU= 46579\nSW9u 46580\nIEbDvHI= 46581\ncmljdWxh 46582\nIHNob3VsZEJl 46583\nYWxyZWFkeQ== 46584\nJ10uIjwv 46585\nIFN0dWZm 46586\nRGlnaXRl 46587\nIHRyYW5zbGF0b3I= 46588\nX3Nwcml0ZQ== 46589\nbGV0YWw= 46590\nIG1haW9y 46591\nIFNleGU= 46592\ndGhhbmtz 46593\nIENvbXBsZXRlZA== 46594\nIGdhc29saW5l 46595\nLmF0dHJz 46596\nYmFnYWk= 46597\nIE9yaWc= 46598\nOl0s 46599\nLmxvY2FsZQ== 46600\nIFJvbWE= 46601\nw61m 46602\nIGZhdm9yZWQ= 46603\nIHZhaW4= 46604\nIHNwb29u 46605\nIEphaHJlbg== 46606\nIG5pbmc= 46607\nV1dX 46608\nLGZsb2F0 46609\nX0RBVEFCQVNF 46610\nQm9vdHN0cmFw 46611\nIENCQw== 46612\nIENodW5r 46613\nX2ludG8= 46614\nIEtvbA== 46615\nIGRlZmVuc2Vz 46616\nb3JlZFByb2NlZHVyZQ== 46617\nYmFsbHM= 46618\nVGV4dENoYW5nZWQ= 46619\nIHNoYXBpbmc= 46620\nIH19Pg== 46621\nR0VE 46622\nZmFx 46623\nIG9wdGlvbmFsbHk= 46624\nX0Rpcw== 46625\nIFN1Y2Nlc3NmdWw= 46626\nIENlbnN1cw== 46627\nIGluY2FyY2Vy 46628\nX0NBUkQ= 46629\nIGF2aWF0aW9u 46630\nIEd5bQ== 46631\nQXV0aG9yaXR5 46632\nLkJlYW4= 46633\nc2hhZGVy 46634\nTm90RXhpc3Q= 46635\nX1RleHRDaGFuZ2Vk 46636\nIFNUT1A= 46637\nKHRlYW0= 46638\nIkg= 46639\nd2c= 46640\nIGdyaW5kZXI= 46641\nIHN0cmlwZQ== 46642\nIHByZXNlcnZhdGlvbg== 46643\nQ2xhaW0= 46644\nYXZlcnNhbA== 46645\nd2FyZWhvdXNl 46646\ndGFyZ2V0cw== 46647\nVHJ1c3Q= 46648\nIGFsbGV2 46649\nLHd3dw== 46650\nb3Vzc2U= 46651\nX2NoYW4= 46652\nX1NpemU= 46653\nc3lzdGVtcw== 46654\nIG9iamVjdGlvbg== 46655\nIEthbmU= 46656\nIGNvcnJvcw== 46657\nIERTTA== 46658\nIHVh 46659\nIE1I 46660\nIFN0cmF0ZWdpYw== 46661\nX3RjcA== 46662\nIOqwkg== 46663\nIGJvcnJvd2Vk 46664\nIEFjaA== 46665\nCWNvbW1hbmQ= 46666\nIGdwcw== 46667\nbGVzdG9u 46668\naWNoZXZlcg== 46669\nIFVB 46670\nIGFzc2F1bHRlZA== 46671\nIHNwZWNpYWxpemVz 46672\nCXNlYXJjaA== 46673\nSG90ZWw= 46674\nICAgICAgICAgICAgICAgICAgICANCg== 46675\nIFBpdGNo 46676\nINmB 46677\nUkVBRFk= 46678\nIHBhcmVudGFs 46679\nIGfDqW7DqQ== 46680\nIGRvbm7DqWVz 46681\nIGRldGFpbg== 46682\nVEFSR0VU 46683\nIHByb3RhZ29uaXN0 46684\nIGNsZWFySW50ZXJ2YWw= 46685\nIEljb25CdXR0b24= 46686\nIEdldEFsbA== 46687\nVHlwZUluZm8= 46688\nRUg= 46689\n4oCcVGhleQ== 46690\nIHtb 46691\nIGdhZw== 46692\nINqp 46693\nIERyb3Bkb3du 46694\nLmZyZWU= 46695\nZ29uZQ== 46696\naW1lbnM= 46697\nIGluc3RhbA== 46698\nCWN1cmw= 46699\nX0NBTg== 46700\nIEJvbmU= 46701\n77yU 46702\nb255bXM= 46703\nLWdvdmVybm1lbnQ= 46704\nLmJpbmRpbmdOYXZpZ2F0b3I= 46705\nIERhbnM= 46706\nIE1jTA== 46707\nKGVu 46708\nPihf 46709\n0JLRiw== 46710\nLio7DQo= 46711\nPWo= 46712\nLWNvcg== 46713\nU29u 46714\nLlRvb2xTdHJpcEl0ZW0= 46715\nLWFyb3VuZA== 46716\nX1hNTA== 46717\nZW5kRGF0ZQ== 46718\nIHNsYWNr 46719\nIHJvdGF0ZWQ= 46720\nIG5vcWE= 46721\nIGNvdHRhZ2U= 46722\nIGVuY29udHJhcg== 46723\nX3NraWxs 46724\naG91ZXR0ZQ== 46725\nIQ0K 46726\nLndlYXRoZXI= 46727\nIGVtcGhhc2l6ZWQ= 46728\n5a62 46729\nINGB0L/QuNGB 46730\nIENvbXBpbGVy 46731\nKGFuZHJvaWQ= 46732\nIOKAug== 46733\nLnR1cm4= 46734\nIHN1cHByZXNzaW9u 46735\nX2NhbGxz 46736\nICpA 46737\nKHN0cmxlbg== 46738\nLmhleA== 46739\nIEJpbGxz 46740\nIFJTQQ== 46741\nz4I= 46742\nIEVzY2FwZQ== 46743\nZW1lbnRpYQ== 46744\nIGZyb250ZW5k 46745\nIHBpbnQ= 46746\nX2V4Yw== 46747\nenpv 46748\nW10sCg== 46749\nICInLCci 46750\nLkVudmlyb25tZW50 46751\nIGFmb3JlbWVudGlvbmVk 46752\nIGVuZHVyZQ== 46753\ncHJvdG90eXBl 46754\ndGhlcmFweQ== 46755\nc3Np 46756\nRGVn 46757\nX3BsdWdpbnM= 46758\nLnVzZXJJbmZv 46759\nUHJpbnRlcg== 46760\nIFBST0dSQU0= 46761\nIHJ1aW5z 46762\nIGVtcGlyaWNhbA== 46763\nIGNyYXds 46764\nIEJvaWxlcg== 46765\nLWNvbW1lbnQ= 46766\nLnN1YnBsb3Q= 46767\nX2V0 46768\nICcuJyw= 46769\nbWlub3I= 46770\nIEN1c3RvbXM= 46771\nIHlhdw== 46772\ndW5kZXJsaW5l 46773\nIENvbW8= 46774\nKCgn 46775\nKG1lYW4= 46776\nIGNoYXF1ZQ== 46777\nIEJsb2Nrcw== 46778\nLnJhZA== 46779\naWxpYnJpdW0= 46780\nIHdlYmRyaXZlcg== 46781\nIG1lbGhvcg== 46782\nZGFuYQ== 46783\nIEFidXNl 46784\nIFNvdXRod2VzdA== 46785\nIFBhcmVu 46786\nUEVSVElFUw== 46787\nCUlM 46788\nIHNjcmVhbQ== 46789\ndnU= 46790\nIGluY29tZXM= 46791\nIG5pbQ== 46792\nIGxhY2U= 46793\nIGNvbXBlbnNhdGU= 46794\nUmV2ZXJzZQ== 46795\nRGF0 46796\nX2F0dGFjaw== 46797\nIG5vdXI= 46798\nYWNoZW4= 46799\nY2Vr 46800\nPEZ1bmM= 46801\nd2ll 46802\nY29tcHJlc3NlZA== 46803\nLW1hdGNo 46804\nKCIiKV0K 46805\naW1pemVk 46806\nLm9yaWVudGF0aW9u 46807\nLmNvbXBhcmVUbw== 46808\nIG1hc3NhZ2dp 46809\nIOychA== 46810\nIGVsYm93 46811\nIGFudGlveGlk 46812\ndW5kcmVkcw== 46813\nL3Rvb2xz 46814\nIFJPVw== 46815\nYW5tYXI= 46816\nIFdvdw== 46817\nX3RpY2tldA== 46818\nUHJvZ3JhbW1pbmc= 46819\nIHRoZW9y 46820\nLXJldmlldw== 46821\nKCkpKSk7Cg== 46822\nIFJpY2hhcmRzb24= 46823\nIFBvY2tldA== 46824\nXVtd 46825\nYW1wcA== 46826\nX2hlYWx0aA== 46827\nIFBPUA== 46828\nIE5hdmFs 46829\nR3Vlc3M= 46830\nIGFuY2VzdG9y 46831\nLkdldEFsbA== 46832\nLmxvY2FsU2NhbGU= 46833\nIE1hcHBlcg== 46834\nIGFjY3VtdWxhdGlvbg== 46835\nIHNpbXVsYXRlZA== 46836\nIERyaXZlcnM= 46837\nIGTDqXM= 46838\nY3VycmluZw== 46839\nIGVsZXBoYW50 46840\nIGFkdmVydGlzZWQ= 46841\nIG1haWxib3g= 46842\nU0hJRlQ= 46843\nIE1vbmljYQ== 46844\nIGFuYw== 46845\nIHdhcmRyb2Jl 46846\nSW5ncmVkaWVudHM= 46847\nIHx8DQo= 46848\naXBweQ== 46849\nIGFudGliaW90aWNz 46850\nYXZpbmdz 46851\nKGN4 46852\nIEZlcnJhcmk= 46853\nIEFuaW1hdG9y 46854\nLmR0eXBl 46855\ncmVtb3ZlZA== 46856\nb3JkZXJieQ== 46857\nIGNyZXM= 46858\nb2PDqg== 46859\nIHB5bQ== 46860\nIENpcmN1bGFy 46861\nQGluZGV4 46862\nIFdhcm0= 46863\nU2F5 46864\nIEFzc2lzdGFuY2U= 46865\nIGN1cnRhaW4= 46866\nIE1vbnRl 46867\nSUxFUg== 46868\nIENWRQ== 46869\nIER1Y2s= 46870\nIEFsbG93cw== 46871\nX2ZpcmU= 46872\nIERlcmJ5 46873\nIHJlcG9z 46874\nIGh0dHBDbGllbnQ= 46875\nIHBzeWNoaWF0 46876\nIG5vd2FkYXlz 46877\nIGNhdXRpb3Vz 46878\nIENvbXB1dGluZw== 46879\nIGNvbXBsZXRpb25IYW5kbGVy 46880\nIFdlbHNo 46881\nIEJFU1Q= 46882\nIHN0cmVzc2Z1bA== 46883\nX1BF 46884\n5pel5pyf 46885\nIERhdGFGcmFtZQ== 46886\nCUludGVnZXI= 46887\nX1ByaW50 46888\nTW92ZXM= 46889\nIHRyYW5zZm9ybWluZw== 46890\nLkJhdGNo 46891\neWFob28= 46892\nUG9zaXRpb25z 46893\nemVq 46894\nIG5vb2Q= 46895\naW9yZXM= 46896\nXyo= 46897\nIGNsaw== 46898\nIEZsb3lk 46899\nIGhhcA== 46900\nZm9udHNpemU= 46901\nIG5heg== 46902\nLm5vdGlmaWNhdGlvbg== 46903\nIERlcHJlc3Npb24= 46904\nIGFjbmU= 46905\nKioqCgo= 46906\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== 46907\nLmNvbnRlbnRz 46908\neW50aA== 46909\nIFN0cmFpZ2h0 46910\nJyl9fSI+PC8= 46911\nIGJ1bGI= 46912\nUlg= 46913\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 46914\nIGNvbXVuaWM= 46915\nIFJO 46916\nLW1lZGl1bQ== 46917\nTEVBTg== 46918\nPWxlbg== 46919\nUGhvbmVOdW1iZXI= 46920\nZXJ2YXRpb25z 46921\nQWNjdXJhY3k= 46922\nIEFubm90YXRpb24= 46923\nX2tleXdvcmQ= 46924\nX2hpbnQ= 46925\nIEF0aGVucw== 46926\nIGFzc2lzdGluZw== 46927\nIEhD 46928\nLkluaXRpYWxpemU= 46929\nJykpKQo= 46930\ndXBh 46931\nIHN1aXY= 46932\nIElQQw== 46933\nPFRFbnRpdHk= 46934\nIGJyYW5kZWQ= 46935\nb29tbGE= 46936\nbGFyxLE= 46937\nIFhNTEh0dHBSZXF1ZXN0 46938\nIGTDqWrDoA== 46939\nIHRyYW5zY3JpcHRpb24= 46940\nIHByZXZhbGVudA== 46941\nLnBsYW4= 46942\nIHN0YXJl 46943\nIHdvcmtvdXRz 46944\nIEVkdWNhdGlvbmFs 46945\nIG1lc3N5 46946\nIE1PVA== 46947\nLkNvbW1hbmRUeXBl 46948\nUWVk 46949\nKGdjYQ== 46950\nIExpbmVhckxheW91dE1hbmFnZXI= 46951\nIEJsb3c= 46952\nIEFsdW1pbnVt 46953\nIHN3aW5nZXJjbHVi 46954\nIFRyYW5zaXQ= 46955\nIGV4cG9z 46956\ndmly 46957\nKHNlY29uZA== 46958\nIGJlbG9uZ2Vk 46959\nU3RvbmU= 46960\n6ZW/ 46961\nIFN1bA== 46962\nIGdpZA== 46963\nIGFsbG95 46964\nZXJ2YQ== 46965\naXNlY29uZA== 46966\nX1JFTkRFUg== 46967\nIGFuZ2Vscw== 46968\nIFBoaWxvc29waHk= 46969\nb3B1cw== 46970\nIG1vbw== 46971\nZW5ndWlu 46972\nX1ZBUklBQkxF 46973\nX0RFU1Q= 46974\nKGF1eA== 46975\nIGhvZQ== 46976\nIGRvYg== 46977\nYXR0YWNobWVudHM= 46978\nIGNvcnJpZG9y 46979\nIGRpdmlkZW5k 46980\nnbw= 46981\nIFRocm91Z2hvdXQ= 46982\nLm9wdGlt 46983\nJG5ldw== 46984\nIGJlcmc= 46985\nIHNwcmVhZHNoZWV0 46986\nLlRyeUdldFZhbHVl 46987\nIHBheW91dA== 46988\nIE9uRGVzdHJveQ== 46989\nYXV0aGVudGljYXRpb24= 46990\nIE1pZ3VlbA== 46991\ncnRj 46992\nIENocmlzdGluZQ== 46993\nIEFJUg== 46994\nIGp1cmlz 46995\nIGRlc3BhaXI= 46996\nIHBhdGVudHM= 46997\nLWhhcw== 46998\nJV4= 46999\n5LuY 47000\nX3N0cmR1cA== 47001\nIFJlYXI= 47002\nZXR0ZXM= 47003\nKHByb3BlcnRpZXM= 47004\nIHdyaXRhYmxl 47005\nLmlzTnVsbA== 47006\nb2xpY3M= 47007\nX2Jsb2I= 47008\nIGN1YWxxdWllcg== 47009\nYWZp 47010\nb3d5Y2g= 47011\n6I635Y+W 47012\nw4c= 47013\nIENhcmRpbmFs 47014\nIHRlbWE= 47015\nIkFuZA== 47016\nUGFnZVNpemU= 47017\n56eS 47018\nLlNpbXBsZURhdGVGb3JtYXQ= 47019\nIFdpbm5lcg== 47020\nIGNvcnJlbw== 47021\nX3dl 47022\nLmFkZE9iamVjdA== 47023\nKGNvdXJzZQ== 47024\nIGhvZw== 47025\nb3Bybw== 47026\nIHByb2JhdGlvbg== 47027\ndW5hYmxl 47028\nKGFjdGl2ZQ== 47029\n5Zu+54mH 47030\nIHBlcnRhaW5pbmc= 47031\nIGVtcGhhc2l6ZQ== 47032\nIFByaW50ZXI= 47033\nPS4= 47034\nIHVwZ3JhZGluZw== 47035\nL2NvbnRhY3Q= 47036\nPVtb 47037\nLXNhbg== 47038\nCXZhbHVlcw== 47039\nIGRvc2FnZQ== 47040\nU29saWQ= 47041\nIFJvb3NldmVsdA== 47042\n5ZWG5ZOB 47043\nIHJlY3JlYXRpb24= 47044\nIFRlcm1pbg== 47045\nLkJhZA== 47046\nIEJvbHQ= 47047\nU2t5 47048\nX0ltYWdl 47049\nIHNxdWly 47050\nIENvYg== 47051\nT1JO 47052\nIGF1Yw== 47053\nLkxFRlQ= 47054\nJ0I= 47055\nLXJlc2lzdGFudA== 47056\nPiIr 47057\nIHRva2VuaXplcg== 47058\nIHNvdmVyZWlnbnR5 47059\nIFBlbmNl 47060\nKCkiKTsK 47061\nIHBlc3NvYXM= 47062\nLkdl 47063\nIEluY2x1ZGVk 47064\nIHBhZ2luYQ== 47065\nIGV4cG9zaW5n 47066\n0LXRiA== 47067\nX1NDUklQVA== 47068\nLyQnLA== 47069\nVGh1bWJuYWls 47070\n15Q= 47071\nd2ViRWxlbWVudFg= 47072\nd2ViRWxlbWVudFhwYXRocw== 47073\ncHJlc3N1cmU= 47074\nIEN1cnJ5 47075\nX0NQ 47076\nT0xVVElPTg== 47077\nSUxFUw== 47078\ncHJvdGVjdA== 47079\nb29sYQ== 47080\nV29ya3NwYWNl 47081\ne307Cg== 47082\nIFVOUw== 47083\nIHN5bXBhdGh5 47084\ncm9rZXI= 47085\nIHJlbW9kZWw= 47086\nCWNlbGw= 47087\nIGF0b3A= 47088\nLkZ1bGxOYW1l 47089\nIGZhdXQ= 47090\nIEVhc2lseQ== 47091\nX2R5bmFtaWM= 47092\nIGZyYW1lZA== 47093\nIG1vdGl2ZQ== 47094\n6Lev 47095\nc2Ft 47096\nIG1hcmNh 47097\nIFRleHRFZGl0aW5nQ29udHJvbGxlcg== 47098\nIGRlc3RydWN0b3I= 47099\nY3JlYW0= 47100\nIHJ1ZGU= 47101\nIEJvbGQ= 47102\nIEluZGlnZW5vdXM= 47103\nIGdlbnM= 47104\nIHJlbGFjaW9u 47105\nKHN5c3RlbQ== 47106\nIFVJRm9udA== 47107\nX2NoYXJnZQ== 47108\nVVNURVI= 47109\nRVY= 47110\nLk5hbWVzcGFjZQ== 47111\nIG1lcmdlcg== 47112\nIGNhbGxvYw== 47113\nZ2FuZw== 47114\nQmFkUmVxdWVzdA== 47115\nIHNwZXI= 47116\nLWRlc2lnbg== 47117\nIOKH 47118\nQ2hhbg== 47119\nIG9yZ2FuaXNt 47120\nLCk= 47121\nPWlk 47122\nX3BsYW5l 47123\nIENhc2Vz 47124\nZWxmYXN0 47125\nIExlZ2lzbGF0dXJl 47126\nIEZha2Vy 47127\nIGludm9raW5n 47128\nLXV0aWxz 47129\nKCkuJw== 47130\nLmZhY2U= 47131\nIGd1YXJkaWFu 47132\nbXlNb2RhbA== 47133\nIGNsaXBib2FyZA== 47134\nIEFUTQ== 47135\nIHBlYXM= 47136\nIFN5bHY= 47137\nLmNhbGM= 47138\nIENvbnRhY3Rz 47139\naW50VmFsdWU= 47140\nIG1vZGlmeWluZw== 47141\nIEJhcmI= 47142\nLmxvc3M= 47143\nX3BlcmNlbnRhZ2U= 47144\nQXNrZWQ= 47145\nKGxzdA== 47146\nYXRlZ29yaWNhbA== 47147\nLWZpbGVz 47148\nIFJvbWFuaWE= 47149\nLkFj 47150\nIGhhaQ== 47151\nIEZseWluZw== 47152\nIMW8 47153\nanA= 47154\nIFRyYWluZXI= 47155\nLmFyYw== 47156\nX2RlZw== 47157\nIHRyYWNlYmFjaw== 47158\nT3JGYWls 47159\nRkxPVw== 47160\nLm9sZA== 47161\nb3lh 47162\nZ210 47163\naXNlbXB0eQ== 47164\nIHZhY2NpbmF0aW9u 47165\nIG9ic29sZXRl 47166\ncmVjb2duaXplZA== 47167\nIHJ1aW5lZA== 47168\nIFJlaW4= 47169\nIFRyYWNraW5n 47170\neGZi 47171\n2KfbjA== 47172\nIHbDpnJl 47173\nIGJyeXN0ZXI= 47174\nIElUUw== 47175\nIGRlc3Rpbnk= 47176\nIHN3ZWFy 47177\nIHJlZGVz 47178\nIGNsZg== 47179\nIGZsaXBwZWQ= 47180\nCWhlYWQ= 47181\nQmx1ZXRvb3Ro 47182\nIE92ZXJyaWRlcw== 47183\nOkJvb2xlYW4= 47184\nXz0= 47185\nX2xy 47186\nc3Bhd24= 47187\nOmluZGV4 47188\nVkFMVUVT 47189\naXNrZXk= 47190\nPyIpOwo= 47191\nLnN5bnRoZXRpYw== 47192\nIENoZWNraW5n 47193\nc3RydWN0dXJlcw== 47194\naXBpbmc= 47195\nIHZvY2Fscw== 47196\nLVVw 47197\nIE1hbnVmYWN0dXJlcnM= 47198\nIE1hcnJpYWdl 47199\n5Luj56CB 47200\nIGdhcm5lcg== 47201\nX0NsaWVudA== 47202\ncGFyYWxsZWw= 47203\nUklFTkQ= 47204\nIHZpbmVnYXI= 47205\nc2VndWU= 47206\nSkI= 47207\nIGNvbnRhY3Rpbmc= 47208\nIENhcnJvbGw= 47209\nIG91dHJlYWNo 47210\ndGVuc29y 47211\nX3ZhcmlhbnQ= 47212\nIHRoZWF0 47213\nbGljYWJsZQ== 47214\ne3w= 47215\ndGlueQ== 47216\nX2xldHRlcg== 47217\nIHBlbmNpbA== 47218\nSGVhZGVyc0hlaWdodFNpemVNb2Rl 47219\naWx0cm8= 47220\nLmF1dG9jb25maWd1cmU= 47221\nLmRyYWc= 47222\nLnVzZVN0YXRl 47223\nIEJNSQ== 47224\naGludA== 47225\nQ29tcGlsZQ== 47226\nKlw= 47227\nZW5hcnk= 47228\nIGx2bA== 47229\nLkNhY2hl 47230\nKz0i 47231\nX3R2 47232\ncnVpdG1lbnQ= 47233\nIGZyZWFk 47234\nQXJ0aWNsZXM= 47235\nZmlsYQ== 47236\nIHBhY2thZ2Vk 47237\n4piG 47238\nQVRIRVI= 47239\nIFBsYW5uZWQ= 47240\nc2NoZW1l 47241\nIGRpYXJ5 47242\nIG9mZmVuc2Vz 47243\nLzw/ 47244\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 47245\nUHJvZ3Jlc3NIVUQ= 47246\nIEdvcg== 47247\nLmdldFRpdGxl 47248\nIG1vY2tlZA== 47249\nIFRvcnk= 47250\nICIpIjsK 47251\nI2c= 47252\nIGxpZWQ= 47253\nIHN2Yw== 47254\nX2d1aQ== 47255\nRU5UUlk= 47256\nIHNlcnZpY2lv 47257\nbW91c2VvdmVy 47258\nU0FDVElPTg== 47259\n44Kz 47260\nIHJlaWZl 47261\nbGVjdHJpYw== 47262\nX2NyZWF0aW9u 47263\nUmVhbGl0eQ== 47264\nKCcr 47265\ncHJvZHVjdElk 47266\nU3VwcGxpZXI= 47267\nLUxl 47268\nLnJlcG8= 47269\ndWNraW5n 47270\nX1N0cg== 47271\nIFJlbGF5 47272\n0LjQuA== 47273\nIHBlcnY= 47274\nQ2hpY2Fnbw== 47275\nIG1haXNvbg== 47276\nIHN0aWNrZXI= 47277\nX3ByZXNzZWQ= 47278\nU3dhcA== 47279\nIElH 47280\nIHN1c2NlcHRpYmxl 47281\nb2NhZG8= 47282\nIGdpbg== 47283\nZXhl 47284\naWdoYm9yaG9vZA== 47285\nKWA= 47286\nIGRpYWdyYW1z 47287\nIGluZmxhbW1hdG9yeQ== 47288\nIHTDqQ== 47289\nIFBvcHVw 47290\nIGFwcHJlaA== 47291\nIFBvcnRmb2xpbw== 47292\nIHdvcnM= 47293\nLmVudW1z 47294\n0LXQs9C+ 47295\nL0J1dHRvbg== 47296\nIFBoYW50b20= 47297\nICM6 47298\nIGRpaw== 47299\ncGFnZXI= 47300\nZnRhcg== 47301\nIG9yZ2FuaXplcg== 47302\nKGNoaWxkcmVu 47303\nIE11bmljaA== 47304\nIHN0cmFuZw== 47305\nIFJX 47306\n44K/ 47307\nTWFo 47308\ncHRpZGU= 47309\nIGxlYXJucw== 47310\nIHJlZHVjdGlvbnM= 47311\nIFJlcGxhY2VtZW50 47312\nT1RT 47313\nYWxjb24= 47314\nKHBhcnRz 47315\nYmFzaA== 47316\nIENpdGl6ZW4= 47317\njbDsnbQ= 47318\nIEh0dHBTZXJ2bGV0 47319\nX1NDSEVNQQ== 47320\nbWVhbnM= 47321\nIGhvcnJpZmlj 47322\nVkVSSUZZ 47323\nIERDSEVDSw== 47324\nICgv 47325\nLmJlZm9yZQ== 47326\nLnRleHR1cmU= 47327\nZ2V0TW9jaw== 47328\nIFNlbnNl 47329\nSW5zcGVjdG9y 47330\nVGV4dE5vZGU= 47331\nKEFM 47332\nLmdldE5vZGU= 47333\nIGJveWM= 47334\nIEJyaXNiYW5l 47335\nIGJhdHRsaW5n 47336\nCXR4 47337\nIGxvYmJ5aW5n 47338\nYnVpbHQ= 47339\nIFNFRUs= 47340\nIHJhbmRvbWl6ZWQ= 47341\nZ25p 47342\nX2NsdXN0ZXJz 47343\nX2lkZW50aXR5 47344\nIGNhcmRpYWM= 47345\nIG5ld1VzZXI= 47346\nLlZpZGVv 47347\nZHVpdA== 47348\nXWluaXQ= 47349\nQXRs 47350\nKXZhbHVl 47351\nVGV4dFV0aWxz 47352\nINC10YHQu9C4 47353\nQ29tcHV0ZQ== 47354\nPSgn 47355\nCQkgICAgICAgICAgICAgICA= 47356\nIGFydGVy 47357\nIFRXTw== 47358\nJykpLA== 47359\nIERJVg== 47360\nIHByaXZpbGVnZWQ= 47361\nIFBhcnRuZXJzaGlw 47362\nIEhlYXRoZXI= 47363\nYmF5 47364\nYXRpc2ZpZWQ= 47365\naW5zdGFncmFt 47366\nX1NlbmQ= 47367\nIEFTRg== 47368\nJG5hbWU= 47369\nIGJvbw== 47370\nIGTDqWY= 47371\nX0ZpZWxk 47372\nIEVkdQ== 47373\nY2FuZGlkYXRl 47374\ncnVieQ== 47375\nIGFjY3VtdWxhdGU= 47376\nKEludFB0cg== 47377\nIGJ1c2luZXNzbWFu 47378\nIGVjb25vbWljYWxseQ== 47379\nIFJpbmdz 47380\nIElucHV0cw== 47381\nuYQ= 47382\nYWNpZQ== 47383\nIEFsYXJt 47384\nIExvZ291dA== 47385\nLnNlcXVlbmNl 47386\nIFZpZW5uYQ== 47387\nb3By 47388\nIGRydW1z 47389\nPWNvbmZpZw== 47390\ncXVp 47391\nIGRhdG8= 47392\nIHBvbHltZXI= 47393\nIENoYW5nZWQ= 47394\nV2ViUmVxdWVzdA== 47395\nIEFkdmFuY2U= 47396\nIHVuZGVyZ29pbmc= 47397\nLkNvbnNvbGU= 47398\nIGN1cnJlbnROb2Rl 47399\nIFdvb2w= 47400\nIHDDoWdpbmE= 47401\nUkVHSVNURVI= 47402\nIHNhZ2E= 47403\nIFlPUks= 47404\nYW1hbmhv 47405\n5a6M 47406\nIEJ1bmRlcw== 47407\nIERpYWxvZ0ludGVyZmFjZQ== 47408\nZ2VvaXM= 47409\ndW5jaWF0aW9u 47410\nPyQ= 47411\nLkFzc2VydGlvbnM= 47412\nIHNlYXRlZA== 47413\nIFNweQ== 47414\nUG9zZQ== 47415\nIkM= 47416\nIGFob3Jh 47417\nINGE0LDQudC7 47418\nIOuzgA== 47419\nIHdhcnA= 47420\nUHJvamVjdGlvbg== 47421\nIFNpbmdsZXM= 47422\nIEFkdmVydGlzaW5n 47423\nTGludXg= 47424\ndXN0eQ== 47425\nIHBlbmFs 47426\nVVNJQw== 47427\nb2RpYQ== 47428\nLm5ldGJlYW5z 47429\nIFVn 47430\nIEJyZW50 47431\nLWxvZw== 47432\nL2NhdGVnb3J5 47433\nIEN1c3RvbWl6ZQ== 47434\naXJlbg== 47435\n77yaPC8= 47436\naW5hcnM= 47437\nICgrKw== 47438\nR29pbmc= 47439\nRVhFQw== 47440\nKG1lc2g= 47441\nIHBlcmltZXRlcg== 47442\nQ2xz 47443\nY2VpdmluZw== 47444\nbWVuc2FqZQ== 47445\nKCkpKXsK 47446\nIHByb3N0YXRl 47447\nX2J1eQ== 47448\nIFJvb2Y= 47449\nLlJldHVybg== 47450\nIG1hcnJpYWdlcw== 47451\nX3RodW1i 47452\n574= 47453\n4K+N 47454\nVGV4dHVyZXM= 47455\nKFRFWFQ= 47456\nc2hvcnRjdXQ= 47457\nVHJhbnNmb3JtZXI= 47458\nQVRJQw== 47459\nIFNub3dkZW4= 47460\nc2NyaWJlcnM= 47461\nbWFya2Vk 47462\nIOKGkQ== 47463\naG9yYQ== 47464\nT1BFUg== 47465\nIEZZ 47466\nIEF1dGhlbnRpYw== 47467\nIGF1ZGk= 47468\ncmFtZXI= 47469\nIExpdGVyYXR1cmU= 47470\nIGl0ZW1JZA== 47471\nLkF0dA== 47472\nKGNudA== 47473\nIEtT 47474\nLWxpbnV4 47475\nIFBhcnRpY2lwYW50 47476\nIENydWlzZQ== 47477\naXR1bG8= 47478\ndXN0cmlhbA== 47479\nIGNsYXNl 47480\nID0k 47481\nX2RhdGVz 47482\nY3VycmVudFBhZ2U= 47483\naXhh 47484\nZXhhY3Q= 47485\nIHRzbA== 47486\nLlNv 47487\nL2RvY3VtZW50 47488\naGFydA== 47489\nX0lETEU= 47490\ne30u 47491\neWV0 47492\nSXJvbg== 47493\nIFRocm9uZXM= 47494\nc25k 47495\nXHhh 47496\nIGJldmVyYWdlcw== 47497\nX3RyYW5zcG9ydA== 47498\nIGZvaWw= 47499\nIHRhc3Rpbmc= 47500\nIGdvZWQ= 47501\nTWVtbw== 47502\nIG5pdHJvZ2Vu 47503\nLk1lbWJlcg== 47504\nLmZsYXQ= 47505\nIGlsbHVt 47506\nbWluZW50 47507\nLnpvb20= 47508\nIFB0cg== 47509\nb2Npbw== 47510\nIENvbnN1bHRpbmc= 47511\nIENvbmU= 47512\nCWl0ZW1z 47513\nIExN 47514\nIG9hdXRo 47515\nIFByb2dyYW1tZQ== 47516\nb2Nob25k 47517\nKHNlbGVjdG9y 47518\nIHdhdGVycHJvb2Y= 47519\nIE1lcmtlbA== 47520\nIHN1ZmZlcnM= 47521\nIG5wbQ== 47522\n6LGh 47523\nIExhbmRpbmc= 47524\nIExBTg== 47525\nCQkJCQkJDQo= 47526\nL2lz 47527\nIHPDqXJpZQ== 47528\nIEdVSUxheW91dA== 47529\nZ2l2ZQ== 47530\nX0NZ 47531\nQnJvd3Nl 47532\nLm11bHRpcGx5 47533\nPSIkKA== 47534\ndXNv 47535\nLXBhcmVudA== 47536\nLk1hdGg= 47537\nLm51bWJlck9m 47538\nIHRpZW5lbg== 47539\nIHJlc2VudA== 47540\nIHBpdGNoaW5n 47541\nIl0pLAo= 47542\nLlV0aWxpdGllcw== 47543\nIG11bHRpcGxpY2F0aW9u 47544\nOnR5cGU= 47545\nIHBwcmludA== 47546\naWFuaQ== 47547\n5YiZ 47548\nIGxhdW5jaGVy 47549\nIHJ1Z2J5 47550\n546w 47551\nCgkJCQo= 47552\naGlk 47553\nQW5nbGVz 47554\nIGdvb2RieWU= 47555\nIGlucHV0U3RyZWFt 47556\nLndhdGNo 47557\nR29vZHM= 47558\nIFNheXM= 47559\nPkY= 47560\nIFN0aWNr 47561\nIGNlcmM= 47562\nIFNsZWU= 47563\nCQkgICAgICAgIA== 47564\nPEltYWdl 47565\nIOiuvg== 47566\nLWVkaXRvcg== 47567\ncGllY2Vz 47568\nIERyYW1h 47569\nIC8vLy8vLy8vLy8vLy8vLy8vLw== 47570\nIFRhc2tz 47571\nQVJD 47572\nZ2F0ZXdheQ== 47573\nLmdldGN3ZA== 47574\nLk1ldGFkYXRh 47575\nIGd1ZXNzaW5n 47576\n5Zyw5Z2A 47577\nIHNtYXJ0ZXI= 47578\nIEdldEVudW1lcmF0b3I= 47579\nIGVmdGVy 47580\nL29wZXJhdG9ycw== 47581\nIEdMZmxvYXQ= 47582\nIGbDuHI= 47583\nIG9wYXF1ZQ== 47584\n5L+d5a2Y 47585\nU3ByZWFk 47586\nU1lTVEVN 47587\nIGludmVyc2lvbg== 47588\nIEJhc2tldGJhbGw= 47589\nIHNpbXVsYXRpb25z 47590\nIGRlbmllcw== 47591\nIGF2ZXo= 47592\nX2xpc3RlbmVy 47593\nIGVuaGFuY2luZw== 47594\nIE15dGg= 47595\nIExha2Vycw== 47596\nX01E 47597\nTmRFeA== 47598\nREFUQUJBU0U= 47599\nIHThuw== 47600\nYXJ0aA== 47601\nW2xlZnQ= 47602\nIGNvbnRlc3Rz 47603\nc3RpbGU= 47604\nKEtFUk4= 47605\nX2Zj 47606\nX3Bt 47607\nIHByZXNpZGVudHM= 47608\nIGhvc3BpdGFsaXR5 47609\nIGZhZGVJbg== 47610\nUk9QRVJUWQ== 47611\nX21hcHM= 47612\nIERlZmluaXRpb25z 47613\nIGFzc2Vzc2luZw== 47614\nIHVzYXI= 47615\nIHF1YW50aXRhdGl2ZQ== 47616\nbW96 47617\nQmVhdXRpZnVs 47618\nWygo 47619\nYm9ucw== 47620\nZnJlcXVlbmN5 47621\nQ29udGFpbg== 47622\nIHB1enpsZXM= 47623\nIENhc3Rybw== 47624\nIHZpbGxh 47625\nIGtpbmRseQ== 47626\nRm9udEF3ZXNvbWU= 47627\nZXJuYQ== 47628\nZXBvY2hz 47629\nX2RhdGFz 47630\nCWlw 47631\nLnBhZGRpbmc= 47632\nIENvbnRlc3Q= 47633\nIGVkaXRpb25z 47634\nIGRpc3Byb3BvcnRpb24= 47635\nIElDTw== 47636\nIGNvbWViYWNr 47637\nPXZhbHVl 47638\ncmlhZA== 47639\nLXNvcnQ= 47640\nU3VibWl0dGVk 47641\nKG5ldHdvcms= 47642\nIENlbA== 47643\nIGluc3RhbGxtZW50 47644\nbGFzaGVz 47645\nLkxpc3RWaWV3 47646\nIFZhdGljYW4= 47647\nKE1lZGlhVHlwZQ== 47648\nSVZFRA== 47649\ncmVhY2hhYmxl 47650\nOklz 47651\nIENJVFk= 47652\n5Lqs 47653\nIEhlbHBmdWw= 47654\nIGJhxZ8= 47655\nJQ0K 47656\nIHBzeWNoaWF0cmlj 47657\nIHJlY3ljbGVk 47658\nRk9STUFU 47659\nIEdyb3c= 47660\nYmluZQ== 47661\nR2l0 47662\nLnNz 47663\nIFdlYXBvbnM= 47664\nIFN0eQ== 47665\nX2Fycm93 47666\nKnNlbGY= 47667\naXJlbWVudA== 47668\nIGRlZ2xp 47669\nQXBwRGVsZWdhdGU= 47670\nX2Jhbm5lcg== 47671\nIGNvb3JkaW5hdGVk 47672\nIFdlYmNhbQ== 47673\nIGNlbGVicmF0aW9ucw== 47674\nLmFjdA== 47675\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 47676\nKHNob3c= 47677\nIHdlZWtkYXk= 47678\nIGNvbmNlcnRz 47679\n0L7Qu9C9 47680\nY2xpbg== 47681\nIGNyb24= 47682\nIE5pbQ== 47683\nLnNldFZlcnRpY2Fs 47684\nIEVsbGVu 47685\n2LPYqg== 47686\nIFNBTQ== 47687\nRWZm 47688\nZ3o= 47689\nc3RlYW0= 47690\nIGFudGlxdWU= 47691\ncGh5c2ljYWw= 47692\nIEZvcm1EYXRh 47693\nLnNldHRlcg== 47694\nIFBPSU5U 47695\nQm9u 47696\nIGZsYXZvdXI= 47697\nZXJ2ZW50aW9u 47698\nX0VOVElUWQ== 47699\nCSAgICAgICAgICAgIA== 47700\nIGludHJpbnNpYw== 47701\nIOaO 47702\nYXBwZW5kVG8= 47703\nYXJhbWVs 47704\nKV0p 47705\nIFJlY29tbWVuZA== 47706\nKW0= 47707\nT3V0T2ZSYW5nZQ== 47708\nIGtuaWdodA== 47709\nIHNhdGVsbGl0ZXM= 47710\nIFRpdGFucw== 47711\nIHdlaWdoZWQ= 47712\nIERhbmE= 47713\nZWFzZQ== 47714\nIHNpcA== 47715\nU0lN 47716\nIERldmVsb3BlcnM= 47717\nbWFsaW5r 47718\nL2NoZWNr 47719\nX1BMTA== 47720\nbnVuZw== 47721\nIGRyeWVy 47722\nPUE= 47723\nLmR3 47724\nX1NRTA== 47725\nIHN1YnBsb3Q= 47726\nRFJPUA== 47727\nIHByb3RvdHlwZXM= 47728\nIGhvdXJseQ== 47729\nZGlzcGxheU5hbWU= 47730\nIGFzaQ== 47731\nIFZpb2xlbmNl 47732\nIGFzdHJvbmF1dA== 47733\nIGRhdGF0eXBl 47734\nIGluZm9ybWF0aW9uYWw= 47735\nIGludmVzdGlnYXRpdmU= 47736\nZXRlcm1pbmVk 47737\ncmVuYWw= 47738\nOyc+ 47739\nCWNvbA== 47740\nVkc= 47741\nX2Jvb2xlYW4= 47742\ncmVjZW50 47743\nICopCgo= 47744\nIFJhaW5ib3c= 47745\nb21tZW4= 47746\nIGx1cg== 47747\nIG9wcHJlc3Npb24= 47748\nKCIsIik7Cg== 47749\nIEZhY2lsaXR5 47750\nREVGSU5FRA== 47751\nIG5lb24= 47752\nIG9mZmVuZGVy 47753\nQUZQ 47754\nIENsZWFuaW5n 47755\nW10pOg== 47756\nIHVuZG9jdW1lbnRlZA== 47757\nLlJlcG9zaXRvcmllcw== 47758\nIEd1aXRhcg== 47759\n0LDRgdGB0LjQsg== 47760\nU2tpbGxz 47761\nIHRlc3RpbW9u 47762\ncnlwdG9ncmFwaHk= 47763\nIEFtYmVy 47764\nIFN0YWxpbg== 47765\nIGxvbmU= 47766\nIGFwZW5hcw== 47767\nIGRpZXNlcw== 47768\nIEFyZHVpbm8= 47769\n6L2s 47770\nPT0t 47771\nX0FjdA== 47772\nIGNvZGVk 47773\n4pag 47774\nYW1idXJnZXI= 47775\nLWxpbmtz 47776\nIGFybW91cg== 47777\nLkhpZ2g= 47778\nZ2V0Q29udGVudA== 47779\nc3RhZw== 47780\nIGhlY2s= 47781\nIOyXhg== 47782\nIE1jQ29ubmVsbA== 47783\nIENvbmNlcnQ= 47784\nIEFsbG9j 47785\nw6RyZQ== 47786\nLnJlcGxhY2VBbGw= 47787\nIHBhcnRpdGlvbnM= 47788\ncm90dA== 47789\nIEZsZQ== 47790\nX1RSRUU= 47791\ncmVhc29uYWJsZQ== 47792\nIFJlcG9ydGluZw== 47793\nIGJpbGxpb25haXJl 47794\nc2NvcmVz 47795\nbWlucw== 47796\nLWV5ZQ== 47797\nTU9SRQ== 47798\nYWJvcnQ= 47799\nIFNXVA== 47800\nIGludmVydGVk 47801\nIFRlYWNoZXJz 47802\nO24= 47803\nIGFzdHJv 47804\n0L3QvtCy 47805\n0LDQvdC40YY= 47806\ncHJvZHVjdG8= 47807\nY291bnRyaWVz 47808\nIE93ZW4= 47809\nIGNvbnRhbWluYXRpb24= 47810\nIHZpYmU= 47811\nIEVsbGk= 47812\nLnNjcmlwdA== 47813\nIE9saXZl 47814\nRE1B 47815\ndmllcg== 47816\nOnNlbWljb2xvbg== 47817\nLW1vZHVsZQ== 47818\nZ3Jlc3NpdmU= 47819\nYWd1 47820\nX3BsYXllcnM= 47821\nIHJlc3VsdGFkb3M= 47822\nc3RhcnRlZA== 47823\nc2Nyb2xsVG9w 47824\nPT09PT0= 47825\nIHdlaWdoaW5n 47826\nIFtbWw== 47827\nemFobA== 47828\nKE5T 47829\nIEFzc2VydGlvbg== 47830\nbGVhZ3Vl 47831\nLnNldFRleHRDb2xvcg== 47832\nCU1lc3NhZ2U= 47833\nIG1vbXM= 47834\nX0FG 47835\nLndo 47836\nQUxT 47837\nIGF1dHJl 47838\nXQoKCgo= 47839\nLm9wYWNpdHk= 47840\nIEJ1ZGRoaXN0 47841\nIGRlYWY= 47842\nIE9yZ2FuaXNhdGlvbg== 47843\nKEdsb2JhbA== 47844\nZW5zY2g= 47845\nIGhlYWRhY2hl 47846\nIEFsaWVu 47847\nX2lub2Rl 47848\nIFN0YXJr 47849\nIOaJ 47850\nLWxuZA== 47851\nb3JlZg== 47852\nX2ZlYXQ= 47853\nIHBlZGVzdHJpYW4= 47854\nIG5vbWluYWw= 47855\nIGJhbGxvb24= 47856\nIHNwcml0ZXM= 47857\nUHJvdG90eXBlT2Y= 47858\nIEFwb3N0 47859\nIEZFQVRVUkU= 47860\nT0g= 47861\nIHJlY2Vzcw== 47862\nIERvbm5h 47863\nY29uc3VtZXI= 47864\nJEdMT0JBTFM= 47865\nIEdJRg== 47866\nLWZyYW1l 47867\nSW5pY2lv 47868\nIHBhc3NhZ2Vz 47869\nRGF0ZVN0cmluZw== 47870\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 47871\nLmJ5dGU= 47872\nQnVn 47873\naW5pdGlhbGl6ZXI= 47874\ncGt0 47875\nb2RpdW0= 47876\nIERFUg== 47877\nLm9wcw== 47878\nbGVyaQ== 47879\nIGdpZnRlZA== 47880\nIGRldGFjaA== 47881\ndGVycmFpbg== 47882\nZWx0ZXJz 47883\n44GP 47884\nLmxvYWRlcg== 47885\nIE5HTw== 47886\nc3RybmNtcA== 47887\nS2g= 47888\nKGZvbnRTaXpl 47889\ncm9ja2V0 47890\nIHByZWNlZGVudA== 47891\nIEF1cm9yYQ== 47892\nIEV4cGVyaW1lbnQ= 47893\naXNwaGVyZQ== 47894\nRW5jb2RlZA== 47895\nIOKAkwoK 47896\nIHB5cmFtaWQ= 47897\nIEFubml2ZXJzYXJ5 47898\nb2ZpbA== 47899\n658= 47900\nKHBsdWdpbg== 47901\nQ29lZmY= 47902\nIGNvb3BlcmF0ZQ== 47903\nIHByZWRvbWluYW50bHk= 47904\nSVNN 47905\nUGhyYXNl 47906\nX0RFRklORQ== 47907\nRmxpcA== 47908\nQU1JTFk= 47909\nIE1hcmtldHM= 47910\nIFN0cmVhbVJlYWRlcg== 47911\nIENvbWJpbmU= 47912\nIG1hbnVzY3JpcHQ= 47913\nenph 47914\nLHRw 47915\nV2hhdGV2ZXI= 47916\nSVRJQ0FM 47917\naWdoYm91cg== 47918\nRGF0YVByb3ZpZGVy 47919\nLlRleHR1cmU= 47920\ncHJpdmFjeQ== 47921\nLlNESw== 47922\nIHJlY2hhcmdl 47923\nIGNwcA== 47924\nIENGRw== 47925\nKGhvbGRlcg== 47926\nKHB5 47927\nbW90 47928\nIHNhdm9pcg== 47929\nIFJvc2E= 47930\nIFBDcw== 47931\nIO2Z 47932\nLmhlcm9rdQ== 47933\nIGZyZW4= 47934\nIFJpbGV5 47935\nYWdhdGU= 47936\nIHNvbmQ= 47937\nLnhsc3g= 47938\nIGhhY2tlZA== 47939\nc3RhZA== 47940\nR2k= 47941\nIHNhbml0eQ== 47942\nIFNxbERhdGFBZGFwdGVy 47943\nLi4uIiw= 47944\nIFB1c3N5 47945\nICoqKioqKioqKioqKioqKio= 47946\nIGhhc3NsZQ== 47947\nX1BBUkVOVA== 47948\nIFVBRQ== 47949\nIGJlZ2lubmVycw== 47950\nKENsaWVudA== 47951\nIHN0YXRpc3RpY2FsbHk= 47952\nLmhvdXI= 47953\nZWRlbHRh 47954\nIHRyYWN0aW9u 47955\ndWVsdmU= 47956\nYXJhdA== 47957\nIHNhdW5h 47958\nSU5WQUxJRA== 47959\nIGluZGljdG1lbnQ= 47960\nQUxMRQ== 47961\nIGRpc3NlbnQ= 47962\nIFR5cG9ncmFwaHk= 47963\nIGludGVudGlvbmFs 47964\nc2l0 47965\nIEFuaW1hbHM= 47966\nIGNvdW50cnlzaWRl 47967\nIHVhcnQ= 47968\nfVwi 47969\nIHNlYW1sZXNz 47970\nvuekug== 47971\nIGF1dG9z 47972\nICInIjsK 47973\nRmx1c2g= 47974\nQU5OT1Q= 47975\nIGFsZ2VicmE= 47976\nYXNzb2M= 47977\nIFdhdGVycw== 47978\nIHByZXBhcmF0aW9ucw== 47979\ncm9ueW0= 47980\nWyxd 47981\nU2Fucw== 47982\nIGFybWllcw== 47983\naXBlZw== 47984\nIGNyZWFteQ== 47985\nLmFydA== 47986\nZXRyZQ== 47987\nIEFuaW1hdGVk 47988\nIHVucGxlYXNhbnQ= 47989\nZW1lYW4= 47990\nZ3JlYXQ= 47991\nacSF 47992\nIEVhcmxpZXI= 47993\nIGNoaWM= 47994\nIHByZXNlcnZpbmc= 47995\nKGV4ZWM= 47996\nIEludmVzdGlnYXRpb24= 47997\nCUdQSU8= 47998\nIHJpZ29yb3Vz 47999\naWpv 48000\nPW51bQ== 48001\nIHRvb2xTdHJpcA== 48002\nKXNldA== 48003\nKyIm 48004\nIEFjY2VsZXI= 48005\nIGRldmVsb3BtZW50YWw= 48006\naXNwb3NhYmxl 48007\nIGZsYXdlZA== 48008\ncmVuZQ== 48009\nVXBkYXRpbmc= 48010\nIHdhdGNoZG9n 48011\nIGRlbm9taW5hdG9y 48012\nIHN1YnVyYnM= 48013\nIC4uLik= 48014\nIGNvbnZpY3Rpb25z 48015\nY2xvc3VyZQ== 48016\nLklQ 48017\nIHRyYW5zbGF0ZXM= 48018\nLnN3dA== 48019\nLlRyYWNl 48020\nIG1ldHRyZQ== 48021\nLmlzRW5hYmxlZA== 48022\nIEVmZmVjdGl2ZQ== 48023\nLnRvSW50 48024\nIGVuY2hhbnQ= 48025\nIHN0dW5uZWQ= 48026\nIHBvaQ== 48027\nL2NvZGU= 48028\nYWRt 48029\nLmRhdGFiaW5kaW5n 48030\nIExvcmVt 48031\nX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw== 48032\nIGxlZGdlcg== 48033\nIGNhcmE= 48034\nIEdpcg== 48035\nIHdhaXRz 48036\nVW5v 48037\nIGN3ZA== 48038\n6L6R 48039\nIFRSZXN1bHQ= 48040\nIHJlam8= 48041\nIGVtaXR0ZWQ= 48042\nIFdlc3RtaW5zdGVy 48043\n5LiA5Liq 48044\nbmVr 48045\nX1Rpcw== 48046\nIGVuYWN0 48047\nCXdpdGg= 48048\nb3JnaWE= 48049\nIGp1ZQ== 48050\nUGVyZm9ybQ== 48051\nU1BBVEg= 48052\nLnRvcGlj 48053\nIERhdGVu 48054\n4bqn 48055\nIHNpdGlv 48056\nX01N 48057\nIlNv 48058\nYmlhbA== 48059\nIHNjb3BlZA== 48060\nUmVxdWlyZXM= 48061\nIFRPVEFM 48062\nIENoYW5jZWxsb3I= 48063\nKGNvbnRlbnRz 48064\nIHN0ZWFsdGg= 48065\nZGV2aWNlcw== 48066\nLXBhc3M= 48067\naWxpaA== 48068\nIE1hbGNvbG0= 48069\nIERlcG90 48070\nIGNvbmZpZ3Vy 48071\nYXVzc2lhbg== 48072\nX2NvbnN0cmFpbnQ= 48073\n0LLQtdGC 48074\nR1JB 48075\nIFJhdGVz 48076\nLmRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= 48077\nIE5vYmVs 48078\naXRpY3M= 48079\nIGlnbm9yYW50 48080\nIFJlcG9ydGVy 48081\nIEVib2xh 48082\nIFNob2Nr 48083\nX3JlbGF0aW9u 48084\nIE5pbmph 48085\nKWM= 48086\nIHRpY2tlcg== 48087\nLmlzQ2hlY2tlZA== 48088\nIFN1cHBsaWVycw== 48089\nIFJhcGlk 48090\nTGV2ZWxz 48091\n4oKs4oSi 48092\nCXF1ZXVl 48093\nIGNob3A= 48094\nIFVuaXg= 48095\ncmVqZWN0 48096\nLWNhbGVuZGFy 48097\nKHNvcnQ= 48098\nw6huZQ== 48099\nZXJjaWNpbw== 48100\nIGhlY3Q= 48101\nQ0FMTFRZUEU= 48102\ncm91cG9u 48103\nIHJlbnRhbHM= 48104\nYXV0aG9ycw== 48105\ne25hbWU= 48106\nIEZJRk8= 48107\nIGxhc3Nlbg== 48108\nIE5vdXM= 48109\nIHNuYXBwZWQ= 48110\nIGZlcnRpbGl0eQ== 48111\nImxvZw== 48112\nY2xpY2tlZA== 48113\nIHBsYW50aW5n 48114\nIGdi 48115\nL291dHB1dA== 48116\nUEVBVA== 48117\nIGNhdGVnb3JpYQ== 48118\nIGJhY2g= 48119\nUHJvZmVzc29y 48120\naW50aA== 48121\nIl0NCg== 48122\nUmVjb3JkZXI= 48123\nc2VyZGU= 48124\nIFRyYW5zbWlzc2lvbg== 48125\ndHJhZA== 48126\nIHR1cmJv 48127\nX1ZFUlRFWA== 48128\nXEV2ZW50 48129\naWx2ZXI= 48130\nIGJvZGlseQ== 48131\nIFNvdXJjZXM= 48132\nIGtpbGxpbmdz 48133\nLnhyVGFibGVDZWxs 48134\nIGZvbGRlZA== 48135\nL2xlZ2Fs 48136\ndW5lcg== 48137\nIFJpZmxl 48138\nIE1JREk= 48139\nX1NlbGVjdGVkSW5kZXhDaGFuZ2Vk 48140\nLlNpemVUeXBl 48141\nIFdlYlNvY2tldA== 48142\nIHNlbGVjY2lvbg== 48143\nU2FuZA== 48144\nb3Ryb3M= 48145\nIGVudmlzaW9u 48146\nL2V0Yw== 48147\nIE1lbGlzc2E= 48148\nU3BvdA== 48149\n0L3QvtC1 48150\nX0FSTQ== 48151\nQXR0ZW1wdA== 48152\nIEJJ 48153\n44GU 48154\nIERV 48155\nIGJhY2tsYXNo 48156\nc3RyaWRl 48157\nL2NsYXNzZXM= 48158\nIHRleHRDb2xvcg== 48159\nX3N0YWZm 48160\nb2JsaW4= 48161\nYWdlbnRh 48162\nLmNvbGxlY3Rpb25z 48163\naWxsYWdl 48164\nJw0KDQo= 48165\nZmxhdHRlbg== 48166\nX3NhbGVz 48167\nX01BU1RFUg== 48168\nVFc= 48169\nX2Rh 48170\nUGl0Y2g= 48171\ncGhpZXM= 48172\nIHpvbWJpZXM= 48173\nIFZFUlk= 48174\nIFBoYXJtYWN5 48175\nIHByb2dyZXNzQmFy 48176\nIGhhc2h0YWc= 48177\nU2lkZWJhcg== 48178\nQHN0b3A= 48179\nKHBj 48180\n0L7Qu9C2 48181\nTUFLRQ== 48182\nIENvcm9u 48183\nIGt2aW5uZXI= 48184\nIE1haWQ= 48185\nYm9i 48186\nLnRpdGxlTGFiZWw= 48187\nIHN1Y2Nlc3Nlcw== 48188\nIERlbW9jcmFjeQ== 48189\nIFN1cmdlcnk= 48190\nIGNvdWdhcg== 48191\nIGN1cnNv 48192\nIGxvcm8= 48193\naXN0ZW5jeQ== 48194\nU2VuaW9y 48195\nw6Zr 48196\nIEFBQQ== 48197\nIEJPT0s= 48198\n0LrQvg== 48199\nV1NUUg== 48200\nICovLAo= 48201\nb3lhbA== 48202\nLnZlY3Rvcg== 48203\nIFNQRUM= 48204\nU1NG 48205\nIGNvbXB1bHM= 48206\nIEFwcGVhbHM= 48207\nIFdpbnN0b24= 48208\nIE1vY2tpdG8= 48209\nY29udHJpYg== 48210\nLmF2YWlsYWJsZQ== 48211\nZW50aXR5TWFuYWdlcg== 48212\nYXJpYXM= 48213\nX3NhbGU= 48214\nX3Jz 48215\nIGRlY29kaW5n 48216\nIGxvY2F0b3I= 48217\nb2xpdGg= 48218\nIGtvbA== 48219\nIGFzY2lp 48220\nIFJ1dA== 48221\nL2ludGVyZmFjZQ== 48222\nCQkJCQkJICAg 48223\nIE51bWVy 48224\nLmZsaXA= 48225\nLWRlbA== 48226\nIGJvbHN0ZXI= 48227\nb25vbWlj 48228\nIHpt 48229\nTEc= 48230\nRmluZEJ5 48231\nIGFkYXB0aXZl 48232\nbG9v 48233\nIHZ1ZQ== 48234\nKHJldmVyc2U= 48235\nX2NhbnZhcw== 48236\nLnJvbGVz 48237\naWZpY2Fkbw== 48238\ndmVuaWVudA== 48239\nIkFz 48240\nIEVudHI= 48241\nYWxpZ25lZA== 48242\nIGJlcmVpdHM= 48243\nLy8vCgo= 48244\nLmd3dA== 48245\nLmVtcGxveWVl 48246\nX2NsaQ== 48247\nIGFudGljaXBhdGU= 48248\n6ZmQ 48249\nIHBpaw== 48250\nIG11c2hyb29tcw== 48251\nKHR0 48252\nIG9tYQ== 48253\nIFNhbmNoZXo= 48254\nX2dvb2dsZQ== 48255\nLlZhbGlk 48256\nIEZpbGVOYW1l 48257\naXZhdGl2ZQ== 48258\na2Vk 48259\nLXdhcg== 48260\nIG1hdHVyaXR5 48261\n0LjQtA== 48262\nIG1pbmVy 48263\nUmVkdWNlcnM= 48264\nIExhdExuZw== 48265\nX1NURA== 48266\nRGlnaXRz 48267\nQ2FsYw== 48268\nLXVwbG9hZA== 48269\nIGhhbmRpYw== 48270\n4Li14LmI 48271\nZWdyYXRlZA== 48272\nIFNUTQ== 48273\nQ2xpZW50cw== 48274\nIFR1cmJv 48275\nU1lOQw== 48276\nIHBob3RvZ3JhcGhlcnM= 48277\nLk91dA== 48278\nLmNoYXJhY3Rlcg== 48279\nQlVJTEQ= 48280\nLnVubG9jaw== 48281\nIGFyaXNlcw== 48282\nIENvbW1hbmRz 48283\nKCIiKTsNCg== 48284\nX0ZPUkU= 48285\nOycs 48286\nKyIn 48287\nLkltYWdlcw== 48288\nIil7 48289\nIE1leWVy 48290\nIG5lZ2F0aXZlbHk= 48291\nIERMTA== 48292\nIGV4ZQ== 48293\nIGRlZmljaWVuY3k= 48294\nIHdpbGRseQ== 48295\nLXN3aXRjaA== 48296\nY29uc3RydWN0aW9u 48297\nIGV4Y2VwdGlvbmFsbHk= 48298\nIExpeg== 48299\nL2phdmE= 48300\nIHRoZWlycw== 48301\nIENvbnRlbXBvcmFyeQ== 48302\nbGlz 48303\nLmZpbGxSZWN0 48304\nIE5GQw== 48305\nIHJlaGU= 48306\nKG51bWJlcnM= 48307\nIHJhc3Rlcg== 48308\nIGZpZ3VyaW5n 48309\nIHNob3dj 48310\nIEppbGw= 48311\nIGFyY2FkZQ== 48312\nIENvbnN0cnVjdHM= 48313\nbWRs 48314\nKCd8 48315\nIGlkZW50aWZpZXJz 48316\nIHN0ZWxsYXI= 48317\nKENvbm5lY3Rpb24= 48318\nICJ7ew== 48319\neW9y 48320\nKG15c3FsaQ== 48321\nIGRvdmU= 48322\nT2ZCaXJ0aA== 48323\nLmRpc2Nvbm5lY3Q= 48324\nX2hp 48325\nIHp3aXNjaGVu 48326\nIEdydW5k 48327\naXJvcw== 48328\nX0FycmF5 48329\nLm9uY2xpY2s= 48330\nYW5zb20= 48331\nQW5zd2Vycw== 48332\nCXJlbW92ZQ== 48333\nRmE= 48334\nIGh1cnJ5 48335\nLWluZg== 48336\nIGdldENsYXNz 48337\nIFJlZ3VsYXRpb24= 48338\nIEZMQUdT 48339\nbWlzYw== 48340\nS2Vu 48341\nX2hlYWRpbmc= 48342\nR0h6 48343\nLWVudHJ5 48344\nIGJpb2dyYXBoeQ== 48345\nU2ln 48346\nLW1m 48347\nV2F0Y2hlcg== 48348\n4oCcQQ== 48349\nfXB4 48350\nIHNwaWN5 48351\nX3Nx 48352\nTG9zdA== 48353\nKHRyYWNr 48354\n0LDQu9C4 48355\nRGVzY2VuZGluZw== 48356\nPGJpdHM= 48357\ncXVpbmU= 48358\nIEFkdm9j 48359\nX1NO 48360\nIEhhbm5haA== 48361\nUE9Q 48362\nIGVtaXR0ZXI= 48363\nIGN5bg== 48364\nIENBRA== 48365\nPyku 48366\nL3NldA== 48367\nIFNpc3Rlcg== 48368\nIEVuZHBvaW50 48369\nIG1lbm9y 48370\nIGludGVycA== 48371\ncms= 48372\naWRsZQ== 48373\nIG91dGZpdHM= 48374\nLnZlcnRleA== 48375\nIGNsaWM= 48376\nQVJFTg== 48377\nIHBvc3R1cmU= 48378\nIE9wcG9ydHVuaXR5 48379\ndng= 48380\nIEZvcmJlcw== 48381\nLkRpcmVjdGlvbg== 48382\nIHJlc2lkZQ== 48383\nIHJlbWVtYmVyaW5n 48384\nbmVzdHk= 48385\nQXV0b3Jlc2l6aW5n 48386\ncHJvdmlkZXJz 48387\nIEFI 48388\nIGh1cnRpbmc= 48389\nIExpbHk= 48390\nZXZhbHVhdGU= 48391\nbGlqaw== 48392\ncGFwZXJz 48393\nIFNtYXNo 48394\nIExBU1Q= 48395\nIHdlbGxz 48396\nd2FzaGVy 48397\nX1JPTEU= 48398\nIERhbmdlcg== 48399\nKigo 48400\nX3JlcG9zaXRvcnk= 48401\nIFJlc29sdmU= 48402\nIFJvb21z 48403\nX1JH 48404\nIFFU 48405\nb29w 48406\nIEhlYXA= 48407\nIHNsb3dpbmc= 48408\nIGdyYXR1aXRl 48409\nX2NhdGFsb2c= 48410\nIHBvbHlub21pYWw= 48411\nTHk= 48412\ncGNz 48413\nRm94 48414\nIEN5cg== 48415\nIGRpbWlu 48416\nL21vbnRo 48417\nU2FsdA== 48418\nIGhpbmQ= 48419\nLlBFUg== 48420\nRm9ydW0= 48421\nY2Vu 48422\nX3BvbA== 48423\n7Zi4 48424\nIGluc2Vy 48425\nKH4= 48426\nQHRlc3Q= 48427\nIEdvbGRtYW4= 48428\nIHVwbG9hZGluZw== 48429\nRmM= 48430\nIGtvbW1lcg== 48431\nIG1pdHQ= 48432\nX2xvZ2dlZA== 48433\nIGJ1Y2tz 48434\nLWxheWVy 48435\nKX07Cg== 48436\nIE9N 48437\nIHZlZw== 48438\nY29sb3Vy 48439\nINC+0LHRig== 48440\nU3RkU3RyaW5n 48441\nX3F1ZQ== 48442\nIFRpYW4= 48443\nIHNwZWNpYWxpemU= 48444\n0LjQvw== 48445\nINC60Ls= 48446\ndHJpYWw= 48447\nLWVkZ2U= 48448\nIG1hcnM= 48449\nT0dMRQ== 48450\nIGVtcGF0aHk= 48451\nIEJvbQ== 48452\nIGNvbGxpc2lvbnM= 48453\nIGNhcnRl 48454\nIFRlaWw= 48455\nIE1QTA== 48456\nIHBvcm7DtA== 48457\nIGFpcmxpbmVz 48458\nQXdz 48459\nTnM= 48460\nIFNwYXdu 48461\nKHVzZQ== 48462\n6buY6K6k 48463\nIHlhY2M= 48464\nc3Rvcg== 48465\nIGNvbmZlc3M= 48466\nIHBlcXVl 48467\ncmFnZQ== 48468\nPyIK 48469\nL2RhdGF0YWJsZXM= 48470\nIFNob3dlcg== 48471\nX18v 48472\nIGNyeXN0YWxz 48473\nIGJ1c2Nhcg== 48474\nIEhhdXM= 48475\naXphw6fDo28= 48476\nX2VudGl0aWVz 48477\nlYw= 48478\nmow= 48479\neGNj 48480\ndmlydA== 48481\nLWNoZXZyb24= 48482\nKFJlc3VsdA== 48483\nY2FrZQ== 48484\nQ09NRQ== 48485\nIHByb2hpYml0 48486\nIENoZXNz 48487\nIGJlYXVjb3Vw 48488\nINGH0YLQvg== 48489\nUlVO 48490\nIElL 48491\nw7PFgg== 48492\nX1VwZGF0ZQ== 48493\nIHNsZWVr 48494\nIFNwZWNpZnk= 48495\nX2NyZWRlbnRpYWxz 48496\nxZ90 48497\nIFVzZXJOYW1l 48498\nCVZhbHVl 48499\nIGFycmF5TGlzdA== 48500\nIGV4Y2hhbmdlZA== 48501\naXBzaXM= 48502\nLnJlbGF0ZWQ= 48503\nIFNlaXRl 48504\nX0JBUg== 48505\nIExlbQ== 48506\nIFdBVENI 48507\nIENsaWVudHM= 48508\nIC4q 48509\nIEVhcmw= 48510\nLXJlcG9ydA== 48511\nIGZvcmVpZ25lcnM= 48512\nIHN0cmVuZ3RoZW5pbmc= 48513\nCURlc2NyaXB0aW9u 48514\nKGdv 48515\nLnRvb2xiYXI= 48516\nIGNhbGN1bGF0ZXM= 48517\nCXNvdXJjZQ== 48518\nIGN6YXM= 48519\nIHJlY2w= 48520\nYWJv 48521\nIGxvY2FsaG9zdA== 48522\nIF57Cg== 48523\nLlBvcA== 48524\nIERlc2lnbmVk 48525\nXEFic3RyYWN0 48526\nSG9sZA== 48527\nIEd1aWRlbGluZXM= 48528\naXBsaW5l 48529\nIGNhY2hpbmc= 48530\nLlJlYWRlcg== 48531\nX2V4dGVybmFs 48532\nLnN0cnB0aW1l 48533\nIFdlZWtlbmQ= 48534\nLU1hcg== 48535\nIEJlaQ== 48536\nIHsqfQ== 48537\nIFJ1ZA== 48538\nIGV4cGxvcg== 48539\nIEJvdWxldmFyZA== 48540\nQ2FzaA== 48541\nIHByZXBhcmVz 48542\nIHNlcmlhbGl6YXRpb24= 48543\nZXdhdGVy 48544\nIGFkYw== 48545\nOgoKCgoKCg== 48546\nUmVmZXI= 48547\nIHNjYW5uZWQ= 48548\nfX0KCg== 48549\nIEZ1bA== 48550\nIHRvdXJpbmc= 48551\n44OD44Kv 48552\nPigo 48553\nc3VydmV5 48554\nIO2Y 48555\nLi4uJykK 48556\nIERpdmlkZXI= 48557\nb3Ns 48558\nX0NBTkNFTA== 48559\nX3ByZXBhcmU= 48560\nc3Rpbg== 48561\nIEhlYXRo 48562\nLlByaW1hcnlLZXk= 48563\nIOKGkA== 48564\nIExvY2FsRGF0ZVRpbWU= 48565\nIGNvb3BlcmF0aXZl 48566\nTGVhcm5pbmc= 48567\nLmVucXVldWU= 48568\nIGdvb2c= 48569\nIFJlZ3Jlc3Npb24= 48570\naW1hdGVz 48571\nIHZveWV1cg== 48572\nIERyaW5r 48573\ncGx1Zw== 48574\nIGxlbmRlcg== 48575\nbWFuYQ== 48576\nIHBlcnNvbm5lcw== 48577\neXBzZQ== 48578\nIHVubGluaw== 48579\nIFJhdmVucw== 48580\nIGh1cmQ= 48581\nIHBlcmlvZGljYWxseQ== 48582\nQVJHUw== 48583\nIEdI 48584\nY2hhcmFjdGVycw== 48585\nLi4uIgoK 48586\nLWVzdGFibGlzaA== 48587\nIGRu 48588\nKGNvbmRpdGlvbg== 48589\nIEdyYXZpdHk= 48590\nIGVzdGFz 48591\nX2ZvY3Vz 48592\nQ3JlYXR1cmU= 48593\nKHNpdGU= 48594\nIGNhcnI= 48595\nIFJM 48596\nIFJJ 48597\nIE1vdG8= 48598\nQVNG 48599\nIEx1Y2tpbHk= 48600\nCVJvdXRl 48601\nIGVudHJvcHk= 48602\nKCIsIg== 48603\nQ29sbGVjdA== 48604\nKGNvbnRhY3Q= 48605\nIEZsb3JlbmNl 48606\nIHByZW1pdW1z 48607\nIGxpZmVjeWNsZQ== 48608\nIGJhbnM= 48609\neGVm 48610\nV2ViS2l0 48611\nIEZsb2F0aW5n 48612\nIGNvc2E= 48613\nU3BlY2lmaWM= 48614\nIExvYW5z 48615\nYnJlYWQ= 48616\nIGRlc2NyaXB0b3Jz 48617\nIHs6Lg== 48618\nVEhSRUFE 48619\nIFRyZW50 48620\nIHNjb3A= 48621\nUUE= 48622\nIEFudGFy 48623\ncGVs 48624\nX2RpZmZlcmVuY2U= 48625\nX2NoYW5nZXM= 48626\nKC4uLik= 48627\nIFJvdGF0aW9u 48628\nIExHUEw= 48629\nIEpVU1Q= 48630\nKFRhc2s= 48631\nX3N1YnNldA== 48632\nIFRSQU5T 48633\n5Yqb 48634\nIFNjb3V0 48635\nLXBvcHVw 48636\nIHNtb2tlZA== 48637\nX0NsYXNz 48638\nIHR1cm5vdmVy 48639\nYnJha2s= 48640\nIFJvY2t5 48641\ndGFz 48642\nLlJlZ3VsYXJFeHByZXNzaW9ucw== 48643\nIEVsbGlvdHQ= 48644\nIFNwaW5uZXI= 48645\nRFVDVElPTg== 48646\nIGxpYnJl 48647\nIG1vbHRv 48648\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 48649\nIEZUUA== 48650\nbXBlZw== 48651\nKGZlYXR1cmVz 48652\nIGJhbGQ= 48653\nIFZpZA== 48654\nIHNob3V0aW5n 48655\nTGludA== 48656\nIHNvY2tldHM= 48657\nIHByb3c= 48658\nIG5vdXZlbGxl 48659\naXNjYXJk 48660\nIFNwb25zb3I= 48661\nIGNvbnN1bHRh 48662\nKSkpOw== 48663\nSW5kaWFu 48664\nIFJhc3BiZXJyeQ== 48665\nIHRlYW1tYXRl 48666\nIEpXVA== 48667\nIEdoYW5h 48668\nIGNha2Vz 48669\ncHJpbWVy 48670\nZm9ybWE= 48671\nZXJnYXJ0ZW4= 48672\nX01hbmFnZXI= 48673\nIHByZXNlYXNvbg== 48674\nR0FNRQ== 48675\nfCI= 48676\nIEJyb2Nr 48677\nIG9jY3VweQ== 48678\nIGRlY29yYXRpb25z 48679\nw6FuZA== 48680\nIGNvdA== 48681\nIHBhcmFu 48682\nRGlzaw== 48683\ncmVtYWlu 48684\nPj8= 48685\nU3Ryb25n 48686\nIGZyYW5jZQ== 48687\nIEVyYQ== 48688\nLWNy 48689\nLkJ1ZmZlcmVkUmVhZGVy 48690\nIFBhcmFkaXNl 48691\nIFZBVA== 48692\nIEFuZGVycw== 48693\nIGxpbWI= 48694\nYW1wb28= 48695\nIGltcGVyYXRpdmU= 48696\nVVRJTElUWQ== 48697\nIFJlY29nbml0aW9u 48698\nIHJhZ2F6emU= 48699\nIHBvcHM= 48700\neXByZXNz 48701\nIGVtYmFyZ28= 48702\nLy97Cg== 48703\nIHN5bGw= 48704\nUFRS 48705\n5a2Y5Zyo 48706\nIGRpZG50 48707\nTWFpbGVy 48708\nIGFjYWRlbWljcw== 48709\nIEZyYXVlbg== 48710\nbmVpZGVy 48711\nLXJlbA== 48712\nIHJhaW5ib3c= 48713\nKElu 48714\nIHNsaWNlZA== 48715\nPT09PT09PT09PT09PQo= 48716\nKHNlbmQ= 48717\nTlNNdXRhYmxlRGljdGlvbmFyeQ== 48718\ndm9z 48719\nKHBhY2thZ2U= 48720\nIG9yZGluYW5jZQ== 48721\ndmlld2Vy 48722\nIFNhbnRvcw== 48723\nLXNlbGxpbmc= 48724\nIGdvdg== 48725\nZXR0bGU= 48726\nIGZvdW5kZXJz 48727\nIHdha2luZw== 48728\nc2xhc2hlcw== 48729\nLXBvdW5k 48730\ncmVjaHQ= 48731\n2KfYqg== 48732\nLm9uQ2xpY2s= 48733\nIG5vcmQ= 48734\nc3TDpG5k 48735\nX3doZW4= 48736\nVVRFUlM= 48737\naWNj 48738\nIGNhcHN1bGU= 48739\nIFdpZA== 48740\nTWFyYw== 48741\n4Li4 48742\ncm9yZWQ= 48743\nVUdF 48744\nTE9VRA== 48745\nIEF1ZGl0 48746\naXBpZW50cw== 48747\nb3BpYW4= 48748\nIFN1ZQ== 48749\nIHd1cmRlbg== 48750\nLkhlbHBlcnM= 48751\nIGZhY3Rpb25z 48752\nW25w 48753\nLXRoYW4= 48754\nIHJlY28= 48755\nIGthcw== 48756\nIGNtZHM= 48757\nL25ldHdvcms= 48758\neGJm 48759\nZ2V0Q29sb3I= 48760\nIGJpYXNlZA== 48761\nIExhaw== 48762\nRGF0YXM= 48763\ndmVudHM= 48764\nIOuy 48765\nX1BT 48766\nLlZhbGlkYXRl 48767\nSW52b2tlcg== 48768\nIG5ldWVu 48769\nIGp1dmVuaWxl 48770\nVklTSU9O 48771\nIGRldm90ZQ== 48772\nIGxpbmhh 48773\nIGRpc2NvdW50ZWQ= 48774\nXENvbmZpZw== 48775\nIHdvcnRod2hpbGU= 48776\nIHNraW5ueQ== 48777\nIENvdXJzZXM= 48778\nbGV5cw== 48779\nIE1vcnRnYWdl 48780\nS2V2aW4= 48781\nIGFubm91bmNlcw== 48782\nXSkq 48783\ncmVzZXJ2YXRpb24= 48784\nIOaVsA== 48785\nIHByZWp1ZGljZQ== 48786\nIFN0cmluZ0NvbXBhcmlzb24= 48787\nIGJlYXJk 48788\nLXdpbg== 48789\nIFPDo28= 48790\nCW1z 48791\namFs 48792\nIEVhcm4= 48793\nX3BvcnRz 48794\nIE5vbWJyZQ== 48795\nX0NPUg== 48796\nIEJVSUxE 48797\nLnNvdW5k 48798\nWWVsbG93 48799\nIGxpbmViYWNrZXI= 48800\nIGNoYXJpdGFibGU= 48801\nanVn 48802\nX05PTk5VTEw= 48803\nIERlbnRhbA== 48804\nIj4kew== 48805\nCW1hdGNo 48806\nUnVzc2lhbg== 48807\nIHZlcnNjaA== 48808\nIHBpbm5lZA== 48809\nIGFkb3B0aW5n 48810\nT3B0aW9uc01lbnU= 48811\nUGFn 48812\nIHBhaXJpbmc= 48813\nIHRyZWFk 48814\nZXJjaXNlcw== 48815\nIFNwcmVhZA== 48816\nKWk= 48817\nIEJBRA== 48818\nX3Rm 48819\nVUlJbWFnZVZpZXc= 48820\ncG9wdWxhdGU= 48821\nYmFi 48822\nIM+D 48823\nWysr 48824\nIG9waW9pZA== 48825\nICMjCg== 48826\nZHR5cGU= 48827\nIFN0YXJ0cw== 48828\nKCcvJyk= 48829\nIHBlcnNvbmFscw== 48830\nLW1hcmtldA== 48831\nIHJlZHVuZGFudA== 48832\nIEVzc2VudGlhbA== 48833\nIHNjcmFweQ== 48834\nINC40Lw= 48835\nYWNs 48836\nIGNyZWFy 48837\nIEJlbmQ= 48838\nIHJlbGlldmU= 48839\nLXJvb20= 48840\nd2lmZQ== 48841\nIHbDoA== 48842\nIFFQb2ludA== 48843\nIHF1YXNp 48844\nIG1ldGhvZE5hbWU= 48845\nXHhj 48846\nIFBlcnU= 48847\nL1RoZQ== 48848\nLm9ybQ== 48849\nIHZpeg== 48850\nL3BkZg== 48851\nTG9jYXRlZA== 48852\nIGNvbmZyb250YXRpb24= 48853\nIENoYW1waW9uc2hpcHM= 48854\nIGh5cGVydA== 48855\nIGRq 48856\nIFVzZXJJbmZv 48857\nIOWIm+W7ug== 48858\nXHhi 48859\nKHNpbQ== 48860\nID09Cg== 48861\nIHN0YWdpbmc= 48862\nIGRyYXN0aWNhbGx5 48863\n5a2m 48864\nbG9yZHM= 48865\nLmxlc3M= 48866\n0LLQtdC00LjRgtC1 48867\nIEJ1Y2tldA== 48868\nIE1hbQ== 48869\nLnRlcm0= 48870\nX3Bp 48871\nY3p5 48872\nLnB1Yg== 48873\ncHJlY2lv 48874\nIFZpcnQ= 48875\nIHJvbWFu 48876\naXRhdA== 48877\nTGV4 48878\nX2luZm9z 48879\nxLA= 48880\nLm90aGVy 48881\nVkVMTw== 48882\nIHBvbmRlcg== 48883\nIGhhbm5v 48884\nKFBhZ2U= 48885\nZG9p 48886\nIHBvbGl0ZQ== 48887\nIHByb2dyYW1tZXI= 48888\nRGllcw== 48889\nJGQ= 48890\nIHJlcGxpY2F0aW9u 48891\nYWRkQ29sdW1u 48892\nZnJpY2Fu 48893\nIGxlbmc= 48894\nYmVlcg== 48895\nb2l0 48896\nIHdhc3Rpbmc= 48897\neWxpbQ== 48898\nbWVhc3VyZQ== 48899\nTmVn 48900\nIHBhcnRpZQ== 48901\nLmNvbnNvbGU= 48902\nIEd1aW5lYQ== 48903\nVEVM 48904\nX2ZhY3Q= 48905\nLmNodW5r 48906\nIGxlbnQ= 48907\nIGFsbGVy 48908\nIOCklQ== 48909\nX2lkbGU= 48910\nIGFkbWlzc2lvbnM= 48911\nSlNPTkFycmF5 48912\nIHZpYnJhdGlvbg== 48913\nLmhlbHBlcnM= 48914\n5aSW 48915\nIGhlbg== 48916\nam9obg== 48917\nIOyDnQ== 48918\nIGp1ZGdlbWVudA== 48919\nIGdlZW4= 48920\ndGVycmE= 48921\nXns= 48922\nIEl6 48923\nIGPDog== 48924\naW5zdGFuY2Vz 48925\nIHRocmVhdGVucw== 48926\nIG3DvHNzZW4= 48927\nS2luZE9mQ2xhc3M= 48928\nIHN0b3J5dGVsbGluZw== 48929\nX2RlbW8= 48930\ncmlhcw== 48931\nUHJpdmFjeQ== 48932\naGlmdA== 48933\nIFlp 48934\nZXNvcg== 48935\n7ZWg 48936\nZW5zaXRpdml0eQ== 48937\nLldyaXRlcg== 48938\n4LiC 48939\nRGlzdHJpY3Q= 48940\nLmdldEpTT05PYmplY3Q= 48941\nSW1wcm8= 48942\nKGdldFJlc291cmNlcw== 48943\nIFNQRUxM 48944\ncm9kdWNl 48945\nIHNsb3dlZA== 48946\nIGxpbmV3aWR0aA== 48947\nIGhvbmVzdHk= 48948\nIENvb3Jk 48949\nIEZvcms= 48950\nIERpc3BhdGNoUXVldWU= 48951\nIENsaWZm 48952\nIFdpcmluZw== 48953\nX1RJTUVTVEFNUA== 48954\nb2xsYWg= 48955\nYXZvaWQ= 48956\nKytdOwo= 48957\nc2VtYW50aWM= 48958\nLWNzcw== 48959\nIHZldG8= 48960\nIE1lcnI= 48961\nIGxlZ2lzbGF0b3Jz 48962\nQ0VFREVE 48963\nIHF1ZXN0aW9ubmFpcmU= 48964\nIFBpbGxz 48965\nQ2FsY3VsYXRl 48966\nKGNvcmU= 48967\nJ2U= 48968\nIGRpc2xpa2U= 48969\nIFByZWZlcmVuY2Vz 48970\nX0VYVEVSTkFM 48971\n6LCD 48972\nIGRvZGdl 48973\n5pyN5Yqh 48974\nLm5hbWVz 48975\nLmRyYXdJbWFnZQ== 48976\nX3Byb20= 48977\ndWNrbGFuZA== 48978\nIDwkPg== 48979\nxLF6 48980\nL3NpdGU= 48981\n6aG5 48982\ncm9waGU= 48983\nIGNvbXBlbGxlZA== 48984\nIGxhcHRvcHM= 48985\nIHVuaQ== 48986\nQ0xPU0U= 48987\nIGNhc3VhbHRpZXM= 48988\nIFVuaWZvcm0= 48989\nVGVybWluYWw= 48990\nLiIsIg== 48991\nREFU 48992\nKFRyZWVOb2Rl 48993\nIEdhbmRoaQ== 48994\nKHN0bXQ= 48995\nQVhC 48996\nKk0= 48997\nIHVtYnJlbGxh 48998\nYW5pbWFs 48999\nIGdycGM= 49000\nIHdoZXJlYnk= 49001\nIGZsb2F0cw== 49002\nCWFyZw== 49003\nIGRiZw== 49004\nIGV4Y2VlZGluZw== 49005\nRXZlbnRUeXBl 49006\nLlNhdmVDaGFuZ2VzQXN5bmM= 49007\nIHt7ew== 49008\nIG93ZWQ= 49009\nYWhyZW5oZWl0 49010\nIOyn 49011\nIGVxdWlwbw== 49012\ndXJhaQ== 49013\nIGlkb2w= 49014\nXSIpCg== 49015\nX21ham9y 49016\nIGVudGlyZXR5 49017\naW5nZXJwcmludA== 49018\nw6dvcw== 49019\nL2FjY291bnQ= 49020\nCXJpZ2h0 49021\ndXJzb3M= 49022\nIEVEVA== 49023\nX0lOU0VSVA== 49024\nIHNoaW5pbmc= 49025\nIDw6 49026\nRWRnZUluc2V0cw== 49027\nIGNvbG9uaWVz 49028\nLklN 49029\nCSAJ 49030\nUk9BRA== 49031\nQ0NDQw== 49032\ncGxhY2luZw== 49033\nIGdldEFjdGl2aXR5 49034\nZW1hY3M= 49035\nJyUo 49036\nLmNsaWNrZWQ= 49037\nIFRoZW0= 49038\naXNpYQ== 49039\nQnVzY2Fy 49040\nLnJlbmFtZQ== 49041\nIG9hdGg= 49042\nIGFmdGVyd2FyZA== 49043\nIFVGTw== 49044\nQVBT 49045\nIEphY2tzb252aWxsZQ== 49046\nLnNvbWU= 49047\nQ29uZmlybWVk 49048\nLnNjYW4= 49049\naWdJbnRlZ2Vy 49050\nRGVjb3JhdG9y 49051\nc2hpZWxk 49052\ncmVzc2l2ZQ== 49053\nLmRpZA== 49054\n6K+36L6T5YWl 49055\nIHNodXR0ZXI= 49056\nRGFt 49057\nIHBhcmVudGluZw== 49058\nZXllZA== 49059\nJGl0ZW0= 49060\nLWRldmVsb3A= 49061\nIGV4dHJhY3Rz 49062\nIGRlY2VudHJhbGl6ZWQ= 49063\nIEVsc2E= 49064\nX3NwaW4= 49065\nXSkr 49066\nLWluaXRpYWw= 49067\nIG11bHRpdHVkZQ== 49068\nIHNlbnNvcnk= 49069\nIE1PREVM 49070\nIHNhZmVndWFyZA== 49071\n7Lk= 49072\nIGh1bnRlcnM= 49073\nIFRpbnk= 49074\nSU5P 49075\nZGVjb3JhdGU= 49076\nIE5vU3VjaA== 49077\nSG8= 49078\nKFJlc3BvbnNl 49079\nIHJ1bGVy 49080\nCXNob3J0 49081\nIGNhc3Rlcg== 49082\nIGNsaWVudElk 49083\nIHBkYg== 49084\n64+E 49085\naXRpYw== 49086\nIEdhbWVTdGF0ZQ== 49087\nIG5ld0l0ZW0= 49088\nKQoKCgoKCg== 49089\nb3Vpcw== 49090\nbm9j 49091\nLkJMQUNL 49092\nX1ZFQ1RPUg== 49093\nLS0tLS0tLS0tLTwv 49094\nIGV4YW1pbmVz 49095\nCWJsb2Nr 49096\nIGFkZG9u 49097\nIHN1cnZleWVk 49098\nIExpc3RlbmVy 49099\nIGZyb250aWVy 49100\nIGxhY2tlZA== 49101\nSlVTVA== 49102\nINGN0YI= 49103\nIHRpbnQ= 49104\nIE15c3Rlcnk= 49105\nZGF0ZVRpbWU= 49106\nIFR1dG9yaWFs 49107\nIGZ1bGxOYW1l 49108\nIERyYWdvbnM= 49109\nX0ZJTEVT 49110\nIFByaW50V3JpdGVy 49111\nIGJlZXQ= 49112\nIExhZGllcw== 49113\nX3RpcA== 49114\nIEphaHJl 49115\nb3JhbWE= 49116\nIGluc3VsYXRpb24= 49117\nKEVudmlyb25tZW50 49118\nX2FzdA== 49119\nYmVyZ2Vy 49120\nbGVuYQ== 49121\nb2dlbmVvdXM= 49122\nX01PTlRI 49123\nLXByZXNlbnQ= 49124\nIGZyYW1ld29ya3M= 49125\nUVE= 49126\nUEhQRXhjZWw= 49127\nIGNvdW50ZG93bg== 49128\nIEZX 49129\nKGNsdXN0ZXI= 49130\nOmM= 49131\nIG9raHR0cA== 49132\nb2JzZXJ2ZQ== 49133\nW3BsYXllcg== 49134\nLmhl 49135\nIFBhbmFtYQ== 49136\nQXVzdHJhbGlh 49137\nIG91bmNlcw== 49138\nIGFnZ3Jlc3NpdmVseQ== 49139\nIHdhcm5z 49140\nIGN1c3RvbWl6YXRpb24= 49141\nX1F1ZXJ5 49142\nd2lz 49143\nIGludmFs 49144\nQUZG 49145\nKGNhbWVyYQ== 49146\nV2ly 49147\nIG5lZ290aWF0aW9u 49148\nCU8= 49149\nIHJlc3BlY3RmdWw= 49150\nIGRpYW1vbmRz 49151\nJ2F2 49152\nYXBwcm94 49153\nL2Ry 49154\nIGdyYWJz 49155\nIGFjY29tcGFuaWVz 49156\nY29uc3RyYWludA== 49157\nIHJleg== 49158\nKHJlZ2lvbg== 49159\nIGJhaXQ= 49160\ndGVybWluYXRl 49161\nIEJlbGdpYW4= 49162\nYXNzaXVt 49163\nIF0NCg== 49164\nU3lzdGVtcw== 49165\nb3VzZWRvd24= 49166\nLmJ1cw== 49167\nU2V0VmFsdWU= 49168\nIFByZXA= 49169\nIGNvbnZlbmllbnRseQ== 49170\nLm1pZA== 49171\nY2FzZWNtcA== 49172\nTnVtZXJv 49173\nZGFpbHk= 49174\nIENvZGluZw== 49175\nKGRlc3RpbmF0aW9u 49176\nIyQ= 49177\ndWrEhQ== 49178\nIGVtZXJnZW5jZQ== 49179\nX3BhcmE= 49180\nX0lOQ0xVREU= 49181\nIzo= 49182\nIHJlY29nbml6aW5n 49183\nIGZ1Zw== 49184\nIn19LAo= 49185\nIGJ1aWxkZXJz 49186\nIFRlcnJpdG9yeQ== 49187\nIGluaGVyZW50bHk= 49188\nIGRlcml2aW5n 49189\nLmV0aA== 49190\nIERpbm5lcg== 49191\nLnNldE9iamVjdE5hbWU= 49192\nIGNlbGVicmF0ZXM= 49193\nIHF1ZXVlcw== 49194\nIE1hcmtz 49195\nQUxURVI= 49196\nIERhcnQ= 49197\ncG9rZQ== 49198\nX0NIQU5HRUQ= 49199\nIHBhYXI= 49200\nbGllcw== 49201\nLnZvbGxleQ== 49202\nIE1lYW5pbmc= 49203\nIE9GRlNFVA== 49204\nZW5zaW5n 49205\nIGZyw6Vu 49206\nLmxvY2FsU3RvcmFnZQ== 49207\nIOup 49208\nKHt9KTsK 49209\nZGVjb2Rlcg== 49210\nIHJvdWxldHRl 49211\nIGRpc21hbnQ= 49212\nSXI= 49213\nIGluc3VyZw== 49214\nICcnOgo= 49215\nLuKAnQo= 49216\nIGJydW5ldHRl 49217\nLmFzc2V0cw== 49218\nX05FVFdPUks= 49219\n4LiK 49220\nbnlt 49221\nX1NvdXJjZQ== 49222\nXFRlc3Rz 49223\nRXNjYXBl 49224\nY3J5cHQ= 49225\nLlhNTA== 49226\nIHNvdW5kaW5n 49227\nb3Bjb2Rl 49228\nIGNsYXNzaWZ5 49229\nIGVtYmFycmFzc2Vk 49230\nIExPR0lO 49231\nIHJlc2lkdWU= 49232\nIE5FRUQ= 49233\nLmRlZXBFcXVhbA== 49234\ncGVyYw== 49235\nLWNhbA== 49236\nUmVkaXM= 49237\nVHJh 49238\nKF8p 49239\nYXNrZXRz 49240\nZ3JhZGF0aW9u 49241\nIGVuenltZQ== 49242\nIFN0ZXBoYW5pZQ== 49243\nLkludmFsaWQ= 49244\nJ10/Pjwv 49245\nIGRpc3BsYWNlZA== 49246\nIGVsZW1lbnRvcw== 49247\nKGR1cmF0aW9u 49248\ncm93Q291bnQ= 49249\nIEZTdGFy 49250\nbGV0YQ== 49251\nL3BvcHBlcg== 49252\nIHN0YXRv 49253\nIHBlcmZvcm1lcg== 49254\nIGRpc2NpcGxpbmVz 49255\nIEZ1bGx5 49256\naWN1bGFybHk= 49257\nIGVyc3Rlbg== 49258\nIFBvbHlnb24= 49259\nIGRpc2NpcGxlcw== 49260\nLmlzZGly 49261\nIHRlc3RpZnk= 49262\nX1NS 49263\ncHJpc2luZ2x5 49264\nIEdMaW50 49265\nIHdpcGVk 49266\nIGNhcnZlZA== 49267\nIERpc2g= 49268\nLmhlcm9rdWFwcA== 49269\nc3RpdGlhbA== 49270\nIE1BVENI 49271\nY2xhaXI= 49272\nIERheXRvbg== 49273\nLycpCg== 49274\nSURETEU= 49275\nIGluZnJh 49276\nIGxpdmVseQ== 49277\nIGRlcHM= 49278\nIFsuLi5d 49279\nCQkJCQkJCQkJCQkJCQkJCQk= 49280\nIExvbg== 49281\nRXh0cmFz 49282\nVHJhbnNpZW50 49283\n0LLQtdGA 49284\nL21vZHVsZQ== 49285\nIGVuZHVyYW5jZQ== 49286\nX3RleA== 49287\nICJ+Lw== 49288\nX3lsYWJlbA== 49289\nIG9iZWQ= 49290\nL2dhbWU= 49291\nb3BzeQ== 49292\nIGZpcnN0bmFtZQ== 49293\nLmZvcmNl 49294\nIG1hcnQ= 49295\nXENsaWVudA== 49296\nIGxlZ2l0aW0= 49297\nLmZsYXR0ZW4= 49298\nIics 49299\nb3NleHVhbA== 49300\nIGpvdXJz 49301\nTUg= 49302\nZXhwaXJlcw== 49303\nIHN0eWw= 49304\nLmludGVydmFs 49305\nS25vd24= 49306\nIGZvbGxvd2Vy 49307\nIGRhbGxh 49308\ncGlyeQ== 49309\nX3NzbA== 49310\naXNobGlzdA== 49311\nIFJleQ== 49312\nIHN1cGVybWFya2V0 49313\nT2J2aW91c2x5 49314\nLWVudGVy 49315\nIHByb2JhYmlsaXRpZXM= 49316\nIEhW 49317\nIENpbmVtYQ== 49318\nIGN0eXBlcw== 49319\nIEJDTQ== 49320\nX1RBQw== 49321\nO2E= 49322\nLmJ1dHRvbnM= 49323\nIHJldHJpZXZpbmc= 49324\naWxhcml0eQ== 49325\nIHVuZGVydGFraW5n 49326\nCXN0YWNr 49327\nIGtlbA== 49328\nIFhlbg== 49329\nKHBoaQ== 49330\nIHRvdWdoZXI= 49331\nIFNlbGxlcg== 49332\nY2Fwcw== 49333\nIEVtYmVy 49334\nIENoaW4= 49335\nIGxhdWdocw== 49336\nQ29udmVyc2lvbg== 49337\nLmxpc3RlbmVy 49338\nJkI= 49339\nIHBhcmFkaWdt 49340\nIGp1bmN0aW9u 49341\nJC8sCg== 49342\nW28= 49343\nIENvbnNlcnZhdGl2ZXM= 49344\nz4A= 49345\nbGF0ZXM= 49346\nX0V4Y2VwdGlvbg== 49347\nIG1laWxsZXVy 49348\nIHN0cmFwcw== 49349\ncXVpc2l0ZXM= 49350\nCXNu 49351\nIG1hc3NhY3Jl 49352\nb3R0ZXM= 49353\nX2dyZWVu 49354\nVGl0bGVz 49355\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 49356\nIFJlZ3VsYXRpb25z 49357\nYXJs 49358\nX3Nob3J0Y29kZQ== 49359\nIERyYXdlcg== 49360\nIHBhcm9sZQ== 49361\nIHdpbGRlcm5lc3M= 49362\naXNzb24= 49363\nIEFGVEVS 49364\nQ3JlZGVudGlhbA== 49365\nQmxvY2tpbmc= 49366\nIEhUQw== 49367\nU2lu 49368\nKGF1dGhvcg== 49369\nIGNvcnRleA== 49370\nJyl7DQo= 49371\n77yJ77yM 49372\nIGR1bXBlZA== 49373\nIFNodXQ= 49374\nIEtleUV2ZW50 49375\nCVBsYXllcg== 49376\nLmdldFBsYXllcg== 49377\nIGlnbm9yZXM= 49378\ndG9nZ2xlQ2xhc3M= 49379\nIEV4Y2x1c2l2ZQ== 49380\nPigpOw== 49381\nLmdldFA= 49382\nYW55ZQ== 49383\nIG5ldXJvbg== 49384\naWZvbGQ= 49385\nIEtub3du 49386\nQml0Y29pbg== 49387\nQW55d2F5 49388\nYXlldHRl 49389\nICdbJw== 49390\nw6BuaA== 49391\nbWdy 49392\nIGNvcnJlbGF0ZWQ= 49393\nIG5hdXNl 49394\nIG1lbnRhbGl0eQ== 49395\naGFzTWFueQ== 49396\nIEZH 49397\nYW1waWU= 49398\nSVRV 49399\nRnM= 49400\nLlNw 49401\nX2JldHdlZW4= 49402\nRGVwZW5kZW5jaWVz 49403\nb3Vn 49404\nUGxhY2Vob2xkZXI= 49405\nPXRleHQ= 49406\nIE1hbmFnaW5n 49407\nb2NhbHlwc2U= 49408\n5YyX 49409\nX21hZw== 49410\nZmxk 49411\n4pE= 49412\nQ0FN 49413\nIEhlbHBlcnM= 49414\nIGRvc3Q= 49415\nL291dA== 49416\nIGFzc2Fzc2luYXRpb24= 49417\nLmdldEltYWdl 49418\nIEtlbm55 49419\nLicpCgo= 49420\nKXsvLw== 49421\nIFJhbmdlcg== 49422\nIGdlaw== 49423\nIHNpbmNlcmU= 49424\nPFZhbHVl 49425\nIERPVA== 49426\nIFZpY3Rvcnk= 49427\nIGxlZ2VuZHM= 49428\nIHByaXNvbnM= 49429\nKGV4cHJlc3Npb24= 49430\nIFJhYmJpdA== 49431\nX3NlbnRlbmNl 49432\nIGJpdGVz 49433\nIG9uRmFpbHVyZQ== 49434\nIOKIiA== 49435\nS2lt 49436\nLmdlbmRlcg== 49437\nIM67 49438\nIFsu 49439\nIl0pOw== 49440\nbGFuZGluZw== 49441\nLWRpZ2l0 49442\nVEVNUA== 49443\nCWVudHJ5 49444\nIHN0cnRvaw== 49445\nIGRlc2NlbmRhbnRz 49446\ndW1ubw== 49447\nIGxlYW5pbmc= 49448\nIHNwZWNpZmljcw== 49449\ncW4= 49450\nIFNwYXJ0 49451\nIHBvcnI= 49452\nRURJQVRFSw== 49453\nIHNlcGVy 49454\nJ2F1dA== 49455\nIFNURVA= 49456\nIEJvcmRlckxheW91dA== 49457\nIHJldHJvcw== 49458\nIFNhbHZhZG9y 49459\nIEVOR0lORQ== 49460\neGRj 49461\nVHdlZXQ= 49462\ndms= 49463\nIOyy 49464\nXTw8 49465\naGV0aWNz 49466\nY29kaW5n 49467\nUmVhY2g= 49468\nLnJlcQ== 49469\nZ3VpZGU= 49470\nLnNjb3Bl 49471\nc2hpcnQ= 49472\ncm9nYXRl 49473\nU0VUVElORw== 49474\nIFByb3RlaW4= 49475\nIGVpbmc= 49476\nLkVNUFRZ 49477\nLmRm 49478\nIGNsZWFyZXI= 49479\nIGNyb3Nzb3Zlcg== 49480\nIFRveXM= 49481\nIGNvYXRlZA== 49482\nLk1vbnRo 49483\nIEF0dGFjaA== 49484\nL3J1bg== 49485\nLnRhYnM= 49486\nIG9nc8Ol 49487\nQnJvd24= 49488\nLkRBVEU= 49489\nIGZvcw== 49490\n5a2X56ym 49491\nV29vZA== 49492\nLXRocmVl 49493\naGVyaXRlZA== 49494\nIHJvcA== 49495\nKGFj 49496\nIGVtYm9kaW1lbnQ= 49497\nIEtlbm5ldGg= 49498\nIGNhbm5vbg== 49499\nIGJpZGRpbmc= 49500\nPElFbnVtZXJhYmxl 49501\nCXNldFRpbWVvdXQ= 49502\nX2RpZ2l0 49503\nIGVsaW1pbmFy 49504\nKG5l 49505\nYnVkZ2V0 49506\nQ1NJ 49507\nIOyVhA== 49508\nIEFTUA== 49509\nR3JvdXBJZA== 49510\nX0NPVU5URVI= 49511\nY29uc3VsdA== 49512\nIGlmcmFtZQ== 49513\nbGVnZW4= 49514\nX0RFQ0xBUkU= 49515\nU2hhcnBlcg== 49516\nIEZyaWVuZGx5 49517\ndWxldA== 49518\nLWNvbW1hbmQ= 49519\nINCg 49520\nY3ljbGVz 49521\nIFdhc3Rl 49522\nIHRhcHBlZA== 49523\nCUJ1ZmZlcg== 49524\n4oCUaW4= 49525\nIAogIAo= 49526\nIElkZWFs 49527\nIENhbmR5 49528\nX1N5bnRheA== 49529\nw6p0 49530\n7J2M 49531\nYWJvdmU= 49532\nIE5hemlz 49533\nIGZzdA== 49534\nc2Vpbg== 49535\nIGt1bm5lbg== 49536\nd2lr 49537\nIFNhdmluZw== 49538\nLmV4dGVuc2lvbnM= 49539\nIERlc2VyaWFsaXpl 49540\nb3VyZw== 49541\nLmF0dHJpYg== 49542\n77yaCgo= 49543\nIFdpbnM= 49544\nLmVxbA== 49545\nUnlhbg== 49546\nX2Fjaw== 49547\nT1VSQ0VT 49548\nIG9ucw== 49549\nZ3Jlc2U= 49550\nYWZpYQ== 49551\nTW9kZXJu 49552\nIGFkaGVyZQ== 49553\nIGJpb3M= 49554\nKGFjYw== 49555\na2Jk 49556\nVGhyb3du 49557\nqeuLiOuLpA== 49558\nCUh0dHA= 49559\nCXhtbA== 49560\nRW5kRGF0ZQ== 49561\nKHBhcnNlZA== 49562\nLmdldGVudg== 49563\ncmVnaXN0cg== 49564\nbmVsbA== 49565\naW9uYXJpbw== 49566\nLmlubmVyV2lkdGg= 49567\ncnRs 49568\nUFY= 49569\nX3BpZWNl 49570\nIERlcG9zaXQ= 49571\neWVycw== 49572\nIE5TTnVtYmVy 49573\nIGdpbnQ= 49574\nZW5zZW1ibGU= 49575\nIG5ld2NvbQ== 49576\nIFZpZXRuYW1lc2U= 49577\nX2hw 49578\nIGFjY3VzaW5n 49579\nIHF1aXM= 49580\nIGludmVzdGlnYXRvcg== 49581\nZXNzZW50aWFs 49582\nIENY 49583\nLmZvck5hbWU= 49584\nZGVmcw== 49585\nIGFuYWx5c2U= 49586\nX2FuaW1hdGlvbg== 49587\nIHRoYQ== 49588\ndGFib29sYQ== 49589\nIFRIQw== 49590\nw61jdWxv 49591\nIGdsb3dpbmc= 49592\nIGhvbm9ycw== 49593\nYnN0cmFjdA== 49594\na3A= 49595\nSVRFUw== 49596\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= 49597\nI2dldA== 49598\nL0Rlc2t0b3A= 49599\nCWdsbQ== 49600\nIHppbmM= 49601\nw6F0aWNh 49602\nIDw8Cg== 49603\nVk1M 49604\nIFVubGltaXRlZA== 49605\ndnJl 49606\nLWJlZA== 49607\nX25vbmNl 49608\nIEdJ 49609\ndHJhdmVs 49610\nIGlzS2luZE9mQ2xhc3M= 49611\nIGFub255bWl0eQ== 49612\nRmlyZXN0b3Jl 49613\nIGVtYWlsZWQ= 49614\nX0ZMQVNI 49615\nIGbDpXI= 49616\n4piF4piF 49617\nIDpd 49618\nSHVt 49619\nLnJlc2VydmU= 49620\nw7xt 49621\nIGtvc3Rlbmxvc2U= 49622\nIFNDUA== 49623\ndXRhbg== 49624\nIEdvcmU= 49625\nIGNoYXRz 49626\nLz4NCg== 49627\nLmdldFJlc291cmNlcw== 49628\nIGx1bXA= 49629\nX2NvbnN0cw== 49630\nKGV4dA== 49631\nCWRpcg== 49632\n4p0= 49633\nIHBhZGRpbmdUb3A= 49634\nIG9ic2Vzc2lvbg== 49635\nIGJhbm5pbmc= 49636\nIEFwcE1vZHVsZQ== 49637\nIHBhcnRpc2Fu 49638\nIGNhdGFsb2d1ZQ== 49639\nIG1pbm9ycw== 49640\nIHBpdGNoZXM= 49641\nd2VlcA== 49642\nIHVuZGVydGFrZQ== 49643\nIHRoZW1lZA== 49644\nYXVkaXQ= 49645\nLnNjcm9sbFRvcA== 49646\nIHJlcg== 49647\nIHN5bXB0b20= 49648\nIG9wZW5pbmdz 49649\nLmJsb2Nrcw== 49650\nb3Blbmlk 49651\nIGFzc2g= 49652\nLXNhdmU= 49653\nIFBpZw== 49654\nIHJlZ2Fpbg== 49655\nIGluaWNpYWw= 49656\nL2Zhdmljb24= 49657\nCWV4cA== 49658\nIHNwaWNlcw== 49659\naXNrYQ== 49660\nY2xhaW1z 49661\nbWFr 49662\nZGVmaW5pdGlvbnM= 49663\nIGNvcnJlc3BvbmRlbnQ= 49664\nIENhbm5hYmlz 49665\nX18sCg== 49666\nIEx1Y2t5 49667\nIEdhdXNzaWFu 49668\nIE5lYXJseQ== 49669\nQ0FE 49670\nJ11dCg== 49671\nIGFkZXF1YXRlbHk= 49672\nIFRJVExF 49673\nY29uc3RpdHV0aW9uYWw= 49674\nLW1t 49675\nX292ZXJyaWRl 49676\nIGJsYXM= 49677\nLnJlYWR5U3RhdGU= 49678\nIHJlbWluaXM= 49679\nIHJlaW5mb3JjZWQ= 49680\nIENvbGxhYm9y 49681\nIGRlY29yYXRpbmc= 49682\nIGJhY2hlbG9y 49683\nRVJSVVBU 49684\nIHVwcmlnaHQ= 49685\naXBhdGlvbg== 49686\nIE5vYmxl 49687\nIHZhbHVlRm9yS2V5 49688\nIHNldExvYWRpbmc= 49689\nLklnbm9yZQ== 49690\n5YE= 49691\nR2xvYmFscw== 49692\nIE1lbnQ= 49693\nQVNTRVM= 49694\nIGxpbWJz 49695\nIEhVRA== 49696\naW5jaQ== 49697\nLml2 49698\nIFFNb2RlbEluZGV4 49699\nRnVzZQ== 49700\nIHBlZGFs 49701\nX0ZSRVE= 49702\nKHZlcmJvc2U= 49703\nIGxvbmdpdHVk 49704\nIENoYXJ0ZXI= 49705\n6re4 49706\nIGJ1bmRsZXM= 49707\nLmlnbm9yZQ== 49708\ndW1ibw== 49709\nRU1B 49710\nLi4uLi4uLg== 49711\nc3g= 49712\nLkNhcmQ= 49713\nIGhldXRl 49714\nIHN0ZWVy 49715\nanVtbGFo 49716\nIHtf 49717\nX0NoZWNrZWQ= 49718\nIGZheA== 49719\nIEd1c3Q= 49720\naXRjaGVucw== 49721\nICkpCgo= 49722\nIHJlbWFya2FibHk= 49723\nL1hNTA== 49724\nLXJlbW92ZQ== 49725\nX2J0 49726\nIGluY3Vi 49727\nLnBhY2thZ2U= 49728\nLmN1cnJlbnRUaHJlYWQ= 49729\nIEhpZ2hsYW5kZXI= 49730\nLnNpZGU= 49731\nc3BsYXNo 49732\nIGljaQ== 49733\nPUQ= 49734\nIHB1Y2s= 49735\nIGJhbGxvdHM= 49736\nIGh1Z2VseQ== 49737\nY29lZmY= 49738\nIHBEYXRh 49739\nLkNPTFVNTg== 49740\nIEhlYWxpbmc= 49741\nIG9yZGlu 49742\nISks 49743\nICcnLA0K 49744\nKG1k 49745\nIFNhc2s= 49746\nPHN0cm9uZw== 49747\nIHN1cnZpdm9y 49748\nLnNlcmllcw== 49749\nIGNhZmZlaW5l 49750\nIGAo 49751\nLlRSQUlMSU5H 49752\nX0lucHV0 49753\nKCJe 49754\nemQ= 49755\nJik7Cg== 49756\nIFBpbmc= 49757\nIHZvdWNoZXI= 49758\nLnJhdGluZw== 49759\nLXNoaXJ0cw== 49760\nIFJldHJpZXZlcw== 49761\nLmFsaWJhYmE= 49762\nT3JhY2xl 49763\nX01PVg== 49764\nT2xkRGF0YQ== 49765\nIC8qDQo= 49766\nIGdib29sZWFu 49767\nID0+DQo= 49768\nIHLDoQ== 49769\nIGJsdW50 49770\nIEltYWdlSWNvbg== 49771\naWZpaw== 49772\nUlRD 49773\nIGZpYmVycw== 49774\nIHRvaWxl 49775\nLnNlbnQ= 49776\nIFB5UXQ= 49777\nJGFwcA== 49778\nIG1lZGlv 49779\nIGdyYW50aW5n 49780\nIHRzbGludA== 49781\nIE3Dtg== 49782\nKGZpZ3NpemU= 49783\nIGh1cnJpY2FuZQ== 49784\nIGxpZmVz 49785\nIMOE 49786\ncm9jZXNzaW5n 49787\nX3N0YW5kYXJk 49788\nLW9wdGlvbg== 49789\nJykpKQ== 49790\nIHZhY2FudA== 49791\n5bel 49792\nIEhvbGxvdw== 49793\naGFuZGxlQ2hhbmdl 49794\nIGRpdmlkZXI= 49795\nIEVuZ2luZWVycw== 49796\nIHN2ZW5z 49797\nIGNvbXBsaWFudA== 49798\ndGFuZ2dhbA== 49799\nIENyZWRpdHM= 49800\nIEVtaXJhdGVz 49801\nUnVsZUNvbnRleHQ= 49802\nIHJlYWxpemF0aW9u 49803\nIGRpc3RyYWN0ZWQ= 49804\nXSs9 49805\nIGF1Z21lbnQ= 49806\nIER3 49807\nb3Rw 49808\nb3JyZW50 49809\nRWRpdGFy 49810\nLnN0b2Nr 49811\nU3R1ZHk= 49812\ncGVjdGlvbnM= 49813\nIEdhbWVNYW5hZ2Vy 49814\nPWN1dA== 49815\nIGZsb2Nr 49816\nIFJvbWFucw== 49817\ndGhlbQ== 49818\nLWhvcA== 49819\nIHNjcmVlbnNob3Rz 49820\nIC8qIQo= 49821\nIGNvbnZlcnNpb25z 49822\nIG5vcm1hbGl6YXRpb24= 49823\nKGNvbmZpZ3VyYXRpb24= 49824\nIGFlcm9z 49825\nX3NlY3VyaXR5 49826\nIScK 49827\nQm9udXM= 49828\nIERSSVZFUg== 49829\nCURhdGU= 49830\ndGll 49831\nIFd5b21pbmc= 49832\nU3RhbmQ= 49833\naXRyZQ== 49834\nIHNob3BwZXJz 49835\nIGRpc2FkdmFudGFnZQ== 49836\nIGxpa2luZw== 49837\n56yR 49838\nIHVuZGVyc3RhbmRhYmxl 49839\nU0VF 49840\nIGhveQ== 49841\nIG5pbmV0ZQ== 49842\nIGNvbmZlcg== 49843\nIG5vd3JhcA== 49844\nIFZlcm4= 49845\nLA0KDQo= 49846\naW1lc3RlcA== 49847\nTGF5b3V0TWFuYWdlcg== 49848\n4Lc= 49849\nCXdhaXQ= 49850\nUExFVEVE 49851\nSmFwYW4= 49852\nIGluZHVjZQ== 49853\nIOWv 49854\n0L7Qt9Cy 49855\nX0VORFBPSU5U 49856\nLmhvcml6b250YWw= 49857\nIGFjY2VsZXJhdGVk 49858\ncmltb24= 49859\nSVZFUw== 49860\nVHJhbnNhY3Rpb25z 49861\nTGVhbg== 49862\nIFNPVVI= 49863\nd2hldGhlcg== 49864\neWc= 49865\nIG9pZA== 49866\nIEVudGl0eU1hbmFnZXI= 49867\nT1VOVFJZ 49868\nIGZpbGE= 49869\nT0xVTU5T 49870\nSU5VRQ== 49871\nIEFuY2hvcg== 49872\nVFJBTg== 49873\nd29v 49874\nYmxvY2txdW90ZQ== 49875\nIE51cnNl 49876\nIENhcnA= 49877\nIHJlZGVlbQ== 49878\nLnRyeQ== 49879\nIEpQ 49880\nIHRpbWVzdGFtcHM= 49881\nID8+Ij48 49882\nIFJFTU9WRQ== 49883\nIFN0YXJidWNrcw== 49884\nUmVhbGx5 49885\nIGZsb29kZWQ= 49886\nLkNhbGxiYWNr 49887\nRHJvcERvd24= 49888\naXBybw== 49889\nIHRlbmRlZA== 49890\nbHRl 49891\nIHByb3BvcnRpb25z 49892\nLXRl 49893\nIFJlbmE= 49894\nbGljYXRl 49895\nZm9yY2Vz 49896\nLmV4dHJh 49897\nLmF1dGhlbnRpY2F0ZQ== 49898\n0LLQvtC0 49899\nobA= 49900\nIGZvckNvbnRyb2xFdmVudHM= 49901\nIHNlbmhh 49902\nIGtlaW4= 49903\nIG1pbmlzdA== 49904\nIFByZWZlcmVuY2U= 49905\nIFRlbGVncmFwaA== 49906\n0YPQvw== 49907\nc3RycG9z 49908\nIGlsbG5lc3Nlcw== 49909\nIHBpZ3M= 49910\nIGdldEludGVudA== 49911\nU29s 49912\nIMKh 49913\nKGNwdQ== 49914\nW3Byb3A= 49915\nc2NyZWVucw== 49916\nJyk7Pz4= 49917\nIEFjdHM= 49918\nIHN0cmR1cA== 49919\nIGF2ZXJhZ2Vz 49920\nYW5hbA== 49921\nIENhc3VhbA== 49922\nR3JvdXBCb3g= 49923\nIEhhbmRib29r 49924\nL2NvbW1lbnRz 49925\nIG51bWJlcmVk 49926\nIGJyb2FkY2FzdGluZw== 49927\n55uR 49928\nLm5hdGl2ZUVsZW1lbnQ= 49929\nLm11 49930\nIHVwZGF0ZWRBdA== 49931\nIERvZXNu 49932\nLkFD 49933\nLmNvbGw= 49934\nIHJlY29yZGVy 49935\nX3NoYQ== 49936\nQmc= 49937\nYmls 49938\nIGJvbHRz 49939\nIOes 49940\nIGltcG9zaW5n 49941\nIEluZm9ybWF0aW9uZW4= 49942\nX2ZsYXNoZGF0YQ== 49943\nZWNvbm9taWM= 49944\nUmVtYXJr 49945\ndWNhcw== 49946\nIE9mZmljZXJz 49947\nIFRFUg== 49948\nV2Fsaw== 49949\nIG1lcmNhZG8= 49950\nX2dlbmVyYXRl 49951\nSFk= 49952\nQ2FsbGluZw== 49953\nc25hcA== 49954\nc2NyaXB0SWQ= 49955\nLm9wZXJhdGlvbg== 49956\nIEZsYW1l 49957\nbGluZXNz 49958\nIHJlbnRlZA== 49959\nX3RvZ2dsZQ== 49960\nLWNoYW5naW5n 49961\nIFRZ 49962\nJ3V0aWw= 49963\nRUVQ 49964\nIGdyYXBocWw= 49965\nIFVuaQ== 49966\nIGltcHVsc2U= 49967\nLkJhc2lj 49968\nIGVuZXJnaWVz 49969\nTUFSWQ== 49970\nIE1hcmNlbA== 49971\nIG1vcnRhbA== 49972\nIGZyZXM= 49973\nbWVucw== 49974\nbW90aW9u 49975\nIHNhbXBsZWQ= 49976\n4oCcVGhhdA== 49977\naWRheQ== 49978\ncXVpcG1lbnQ= 49979\nZ2V0SW50 49980\nIEFic29sdXRl 49981\nLCci 49982\ndW5lZA== 49983\nLnNoYXJl 49984\nIH0pKA== 49985\nbW1t 49986\nIFJpc2luZw== 49987\n5Lu7 49988\nIHVuZW1wbG95ZWQ= 49989\neGZh 49990\nLmZvbGxvdw== 49991\nCQkJCSAgICAgIA== 49992\nc2x0 49993\nLlBob25l 49994\nIGtuaXZlcw== 49995\nIGV2ZQ== 49996\nb25DbGljaw== 49997\nXSkpDQo= 49998\nIFdpdG5lc3M= 49999\nCU5T 50000\nIEVPUw== 50001\nIFN0ZWZhbg== 50002\nIFByaWVzdA== 50003\n4oCUd2hpY2g= 50004\nR2V0U3RyaW5n 50005\nLkJ5 50006\nIHVwc3RhaXJz 50007\nIGRldHJpbWVudA== 50008\nYnJva2Vu 50009\nZW1icm8= 50010\nIG5pY290aW5l 50011\naWxpb24= 50012\nIGFzdG9uaXNoaW5n 50013\nX2FmZg== 50014\nIExlc3Nvbg== 50015\nIGFjY2lkZW50YWw= 50016\nb2Rvcg== 50017\nIGRlY2ly 50018\nIG5ld05hbWU= 50019\nKy4= 50020\n55u4 50021\naWdzbGlzdA== 50022\nIEdpdGh1Yg== 50023\nIHN1Y2Nlc3NpdmU= 50024\ncmFjaWFs 50025\nIGVudmlyb24= 50026\n6aqM6K+B 50027\nIHJlZGlyZWN0ZWQ= 50028\nVE9UQUw= 50029\nIGdyYWJiaW5n 50030\nIExhbmNl 50031\nIGZvcmZl 50032\nX0NC 50033\n5b6u 50034\nRWxhcHNlZA== 50035\nX3dheQ== 50036\nKERpYWxvZ0ludGVyZmFjZQ== 50037\nX21lYXN1cmU= 50038\neGJi 50039\nRG9n 50040\nRGVwYXJ0 50041\nLXNyYw== 50042\ncmVzb2x2ZXI= 50043\nd2l0aHN0YW5kaW5n 50044\nX3NoZWxs 50045\nIExhc3ROYW1l 50046\nIEF2aWF0aW9u 50047\nIGJlZ2lubmVy 50048\nKCIlLg== 50049\nKHRvb2w= 50050\nINC90L7Qsg== 50051\nOmluaXQ= 50052\nKEFQSQ== 50053\nIE1vcnJpc29u 50054\ndnRDb2xvcg== 50055\nIHN0YXBsZQ== 50056\nL0lORk8= 50057\nIHN1cGVybmF0dXJhbA== 50058\nIHN0ZWFr 50059\ndGltZWxpbmU= 50060\nenpsZQ== 50061\nImAKCg== 50062\nU2Vjb25kYXJ5 50063\nIE5lcGFs 50064\nLlN0cmluZ1V0aWxz 50065\nIGFkYW0= 50066\nICguLi4= 50067\nIHN1YnN0aXR1dGlvbg== 50068\nIGJvYXJkaW5n 50069\nIEtleXdvcmQ= 50070\nIEFzc2F1bHQ= 50071\nZGJjVGVtcGxhdGU= 50072\nIG9yZGVySWQ= 50073\nKGVuZ2luZQ== 50074\nLmFzc2VydFRoYXQ= 50075\nIFZlbnVz 50076\nIGhvbWljaWRl 50077\nIEF2YWw= 50078\nIGd1dHRlcg== 50079\nIFN1cHBvcnRlZA== 50080\nL3BhcnQ= 50081\nIGFjY2xhaW1lZA== 50082\nSGlzdG9y 50083\nIG1lc2Vz 50084\nw7xiZXI= 50085\nIFJlbmV3 50086\nIGdyYXM= 50087\nIEVr 50088\nIGluZmlsZQ== 50089\naW5keQ== 50090\nLm11c2lj 50091\nLlNjcm9sbA== 50092\nIEFnZXM= 50093\nIE5hcnV0bw== 50094\nIEdhdGhlcg== 50095\nIGNvbmZpcm1pbmc= 50096\nPSgi 50097\nIHBpdGNoZWQ= 50098\nb2xleQ== 50099\nRnJhbmNl 50100\nKyci 50101\nJHRvdGFs 50102\nIG9uZGU= 50103\nIGRpdGNo 50104\nX3NpZ21h 50105\nIGNvbnRpbnVpdHk= 50106\ncmV3YXJk 50107\nLWxvYWQ= 50108\nIHByb2Nlc28= 50109\nTG9ja2Vk 50110\nc3Rhdw== 50111\nIHNwaW5hbA== 50112\nbGF6eQ== 50113\nIT09 50114\namVzdA== 50115\nIGR1bg== 50116\nIFJvZGdlcnM= 50117\nCWdyaWQ= 50118\nIGxvZ29z 50119\nIEJlbmdhbA== 50120\nLnN1cGVy 50121\nUHJvdmlkZXM= 50122\nIG51dHJpZW50 50123\nLlRpbWVzdGFtcA== 50124\nSVpBVElPTg== 50125\n5YaM 50126\nIGZhdHM= 50127\nIFh4eA== 50128\nY3RpY2E= 50129\nVGFyZ2V0cw== 50130\nIGNvbnRvdXJz 50131\nIHJlb3JkZXJlZA== 50132\nOkFycmF5 50133\nIHRvbGVyYXRl 50134\nVmly 50135\nIHRlcnJpYmx5 50136\nIGJyaWNrcw== 50137\nKCZf 50138\naGI= 50139\nUG9ydGFs 50140\nIEJyZWFk 50141\nLndoaWNo 50142\nwq10 50143\nYXNJbnN0YW5jZU9m 50144\nIGpvYmplY3Q= 50145\nCWxlbmd0aA== 50146\nX01U 50147\nOyI+DQo= 50148\nX0VYSVNU 50149\nIG1hdGVybmFs 50150\nUkVM 50151\nIOqyveyasA== 50152\naGVl 50153\nIGxheW91dHM= 50154\nIExhcA== 50155\nYWlzeQ== 50156\nIHN0dW1ibGVk 50157\nIFVJRw== 50158\nIFNjbw== 50159\nIGltcGFpcmVk 50160\nUkVTU0VE 50161\nIGFidXNlcw== 50162\nVkY= 50163\nQVJC 50164\nLk5BTUU= 50165\ncmNo 50166\ncHJpbWly 50167\nX2NvbXBsZXRlZA== 50168\nIHBlbm55 50169\nQ2hyb21l 50170\nKGJlZ2lu 50171\nZXJuZW4= 50172\nLWNoZWNrYm94 50173\nUGxhaW5PbGREYXRh 50174\nIExQQw== 50175\ncmFkZQ== 50176\nc3Bpcg== 50177\nIGNvbmNlaXZlZA== 50178\nVGlwcw== 50179\nIElvVA== 50180\nIEdhbg== 50181\n6IGU 50182\nIGJpYXNlcw== 50183\nIGNvbnN1bHRhbnRz 50184\ncGxlZA== 50185\nX2h0 50186\nYXNzb2NpYXRlZA== 50187\nXSwKCg== 50188\nIGRlbGlnaHRmdWw= 50189\nINGC0LXQug== 50190\nSGVsdmV0aWNh 50191\nKGxvYWQ= 50192\nLWV4cGFuZA== 50193\nX1dJREdFVA== 50194\ndG9h 50195\nIEFrdA== 50196\nIG9tbg== 50197\nIGNsYXVzZXM= 50198\nSW50ZWw= 50199\nKi99Cg== 50200\nX3JlZ2lzdHJhdGlvbg== 50201\nIG9sZFZhbHVl 50202\nIHJlc3RvcmluZw== 50203\nIHVucmVhbA== 50204\nT1ZFUg== 50205\nCQoJCgkK 50206\nQVRT 50207\nX3Byb2Jl 50208\nIGRpdmlzb3I= 50209\nLnVwZGF0ZUR5bmFtaWM= 50210\n5bmz 50211\nUHJvZHVjZXM= 50212\nc3RhbXA= 50213\nLmpib3Nz 50214\nCXRhc2s= 50215\nISg6 50216\nIHBzeWNoaWM= 50217\nQGNsYXNz 50218\nTWFydGlu 50219\nIFBhc3NlZA== 50220\nY2xhcmF0aW9ucw== 50221\naGVs 50222\n0LDRhw== 50223\nCWNvcHk= 50224\nLWJpbg== 50225\nemFu 50226\naWdyYW0= 50227\n4Ka+4KY= 50228\nKHNpZw== 50229\nIENhdmFs 50230\nXyMj 50231\nICU9 50232\nb3V0bGluZWQ= 50233\nIEFjaWQ= 50234\nIHVucHJlZGljdGFibGU= 50235\nLWRhc2hib2FyZA== 50236\nSGV4U3RyaW5n 50237\nK2M= 50238\nLlB1YmxpYw== 50239\n4bqp 50240\nIGNvbnZleW9y 50241\nIEVC 50242\nIHNlbGVjdHM= 50243\nIGtub2NraW5n 50244\nIENlYw== 50245\nSUJVVEVT 50246\nb3dhxIc= 50247\nZ2F0c2J5 50248\nKnY= 50249\nZW50cm9weQ== 50250\nIGRpc3BhdGNoZWQ= 50251\nIGNhbWVs 50252\nIFNhdHVybg== 50253\nIG92ZXJ3ZWlnaHQ= 50254\nKHBob25l 50255\ncGFyYWJsZQ== 50256\nJUI= 50257\nX3ZlY3RvcnM= 50258\nIGJyZXdpbmc= 50259\nIFRr 50260\nIERvd25sb2Fkcw== 50261\nIFNhdmVk 50262\nLlByaWNl 50263\nIGN1cnZlZA== 50264\nIFBhcmVudGhvb2Q= 50265\n6LY= 50266\nLnBubA== 50267\ncGxldGVseQ== 50268\nLkRheQ== 50269\nIGFkdmVydGlzZXJz 50270\nIGVqZWM= 50271\nIHByemVk 50272\n668= 50273\nISc7Cg== 50274\nIEt1c2g= 50275\nIFRBQg== 50276\nIHF1ZXN0cw== 50277\nIGNvaW5jaWRlbmNl 50278\ndW1taWVz 50279\nIEthc2htaXI= 50280\nIEV0aGljcw== 50281\nX2dyb3d0aA== 50282\nIGFrdGl2 50283\nIGdyb3VwaW5n 50284\n5aKe 50285\nX3RydXRo 50286\n5ZCs 50287\ndG9kb3M= 50288\naXNldA== 50289\nVGV4Q29vcmQ= 50290\nw6R0dA== 50291\nIFp1cg== 50292\ncm95cw== 50293\nX01BR0lD 50294\nIGJyZXdlcnk= 50295\nKFN0YXRl 50296\nIFNNQUxM 50297\nIFBsYW50cw== 50298\naXRiYXJ0 50299\nZWFjaGVy 50300\nIEFkZWxhaWRl 50301\nTHU= 50302\nIGZpY2s= 50303\ndW5kbGVz 50304\nX2xvYWRlZA== 50305\n0LjQtQ== 50306\nUG9sbA== 50307\ncml0aWM= 50308\nRUxZ 50309\nICsn 50310\nIFByb2Zlc3Npb24= 50311\nIHN0YW1wcw== 50312\nIFNldw== 50313\nc2Nyb2xsVmlldw== 50314\nIGNvbW11bmlzdA== 50315\nL3Byb2JsZW1z 50316\nfQ0KDQoNCg0K 50317\nLG8= 50318\nIHVkcA== 50319\nIG9iZXNl 50320\nYXBwcm92ZQ== 50321\nYW5jZWxsYXRpb24= 50322\nX0dhbWU= 50323\nIEhhc2h0YWJsZQ== 50324\nYWRhcHRpdmVTdHlsZXM= 50325\nIHBvc3Nlc3Nlcw== 50326\nLm1hdGNoZXI= 50327\nZnVuY3Rpb25hbA== 50328\nTXJz 50329\nCXNhdmU= 50330\nIERiVHlwZQ== 50331\nIGtlbg== 50332\nZ2V0Q29udGV4dA== 50333\nIG1hbnM= 50334\nKHJlbA== 50335\nIEJyb3RoZXJob29k 50336\nKWAK 50337\n6Kej 50338\nLkluZm9ybWF0aW9u 50339\nT3V0T2ZSYW5nZUV4Y2VwdGlvbg== 50340\nIFNlaw== 50341\nQ2Fz 50342\nIGJsb2dnZXJz 50343\nRWl0aGVy 50344\nKCIiIg== 50345\nIHBpbmNo 50346\nIGNvYXJzZQ== 50347\nKXA= 50348\nIFB1bHNl 50349\nIGxlYXJudA== 50350\nIGRlbnRpc3Q= 50351\nIG9uY2hhbmdl 50352\nIGRpcmVjdGl2ZXM= 50353\nKGFjdGlvbnM= 50354\nbnlkZXI= 50355\nIFNoaXI= 50356\nVHJhaXQ= 50357\nX2RlcA== 50358\nIFBFVA== 50359\nIFJFUA== 50360\nLkFwcFNldHRpbmdz 50361\nY3VhZG9y 50362\naWRlbmF2 50363\nIGVudmk= 50364\nIHNsYW1tZWQ= 50365\nIFNob290 50366\nIGRhdGVGb3JtYXQ= 50367\nLmpvZGE= 50368\ndmV5cw== 50369\nICkuCgo= 50370\nIGNhcmVn 50371\nIFBhcmFsbGVs 50372\nX3RyYW5zbGF0aW9u 50373\nLmZ1bmN0aW9ucw== 50374\nLm9icw== 50375\nUnVudGltZUV4Y2VwdGlvbg== 50376\nW109 50377\nb3ZlcnZpZXc= 50378\nIFNjaGw= 50379\nIG5vaXN5 50380\nIE9uUHJvcGVydHlDaGFuZ2Vk 50381\nU2VuZGluZw== 50382\nIHVuZmFtaWxpYXI= 50383\nVXBvbg== 50384\nIFByaW50cw== 50385\nLnR5cA== 50386\nIGZsZWVpbmc= 50387\nCW1vdmU= 50388\nKFVu 50389\nIHFy 50390\n15w= 50391\nX2JldGE= 50392\nIHNraWVz 50393\nCW1l 50394\nV05E 50395\nIHN0aWNrZXJz 50396\nYmxhcw== 50397\nIGluc2VydHM= 50398\nIHZlcnNlcw== 50399\nIERldw== 50400\nIHRhbmdpYmxl 50401\nIGhlY2hv 50402\nUE9M 50403\nIHRlYXJkb3du 50404\nb21uaWE= 50405\nSUJF 50406\nLmNvdmVy 50407\nX3N0cmF0ZWd5 50408\nXi0= 50409\nc2V0UG9zaXRpb24= 50410\ndWFsZQ== 50411\nU2lnbmVk 50412\nIGlmYWNl 50413\nYXNlbGluZQ== 50414\nLnNldFRpbWU= 50415\nIE1pbmVyYWw= 50416\nIEZpZ2h0aW5n 50417\nc2tpbnM= 50418\nIGRpc2NyaW1pbg== 50419\nIGRhbnNr 50420\nIFByaW5jZXRvbg== 50421\nYWNpc3Q= 50422\nICgpKTsK 50423\ndHJhY2tz 50424\naW1vbmlhbA== 50425\nYWRlY2ltYWw= 50426\nRVBST00= 50427\ndWdnbGU= 50428\nLk5vdGlmaWNhdGlvbg== 50429\nJG1haWw= 50430\nY2FudGlkYWQ= 50431\nIEp1bmc= 50432\nIHNlZWtlcnM= 50433\nIHBsYXVzaWJsZQ== 50434\ndGllcg== 50435\n0LXQtg== 50436\nIHJhcHBlcg== 50437\nIE1hbmE= 50438\nIEh0dHBTdGF0dXNDb2Rl 50439\nIGJ1cm50 50440\nbG9zZXM= 50441\nIEZvdG8= 50442\nIEpzb25PYmplY3Q= 50443\nSW5zdGFncmFt 50444\nIHN5c2NhbGw= 50445\nIHJlYWxpdGllcw== 50446\nIE1BVExBQg== 50447\nOl57Cg== 50448\nVEVSTQ== 50449\nIENiZA== 50450\nIFBhcmFncmFwaA== 50451\nIHRyYXbDqXM= 50452\nIGNvbnN0cnVjdGluZw== 50453\nIHN3YWw= 50454\nIHBpZ2U= 50455\nTExMTA== 50456\nLWV4aXN0aW5n 50457\nR2V0cw== 50458\nIG1lbHRlZA== 50459\nIG1pdGlnYXRl 50460\nSGVu 50461\nIGht 50462\naW1hcw== 50463\nIEFv 50464\nIFBlcmV6 50465\nIERBTA== 50466\nIOuLpA== 50467\nIGRpdmlz 50468\nU3Rvcnlib2FyZFNlZ3Vl 50469\nIE1vZGlmeQ== 50470\nIMOcYmVy 50471\nX09WRVJSSURF 50472\nLnBlbQ== 50473\ndW50b3M= 50474\nIGVzcGHDsQ== 50475\nIHs/ 50476\nIFBBWQ== 50477\nX2lwdg== 50478\nIEZ1cnk= 50479\nX18uX18= 50480\nZWxvdw== 50481\nLWNlbnRlcmVk 50482\nY2hlY2tz 50483\nX1JlZw== 50484\nLUphdmFkb2M= 50485\nCWxvYWQ= 50486\nIExpa2V3aXNl 50487\n2KfZhQ== 50488\nVU5F 50489\nLnNlbQ== 50490\neGNi 50491\nIENhdmU= 50492\nX3NsZWVw 50493\nIHNpbGVudGx5 50494\nIEV4dHJlbWU= 50495\nLlRvVXBwZXI= 50496\nCUNIRUNL 50497\nIGN1ZQ== 50498\nIFFCeXRlQXJyYXk= 50499\nIGNvcnJ1cHRlZA== 50500\nIETDqQ== 50501\nIGltcGVk 50502\nR2V0TmFtZQ== 50503\nIGluYWNjdXJhdGU= 50504\nIHNvYmVy 50505\n0LXQtQ== 50506\nIGJhcmNvZGU= 50507\nLS0pewo= 50508\naW5raQ== 50509\nIMOpcA== 50510\nIGRyaQ== 50511\nIEFMVA== 50512\nPj4+Pj4+Pj4= 50513\nb250YQ== 50514\nW0w= 50515\nIGludGVyZXM= 50516\ndmVydGluZw== 50517\nIGRpYWdub3N0aWNz 50518\ncGRldg== 50519\n6Kk= 50520\nIEludGVncmF0ZWQ= 50521\nKS4n 50522\nX2dj 50523\nJHRleHQ= 50524\nLmdhbWVz 50525\nIFRlcnJh 50526\nJ1Jl 50527\nLnRyYW5zZmVy 50528\nX0ZJRk8= 50529\nZ2V0TW9kZWw= 50530\nIGJsYW5k 50531\nIENvbGVtYW4= 50532\nIHByaW1lcw== 50533\nIOaI 50534\nIGNyb3NzZXM= 50535\nbms= 50536\nR0lORw== 50537\nICde 50538\nIEJsb2I= 50539\nIGludGVyY291cnNl 50540\nIEJsdmQ= 50541\nIHdlaWdocw== 50542\nX3JlZ3VsYXI= 50543\nIFBlcnRo 50544\nIHNlcGFyYXRpbmc= 50545\nIGJpbGxlZA== 50546\nLnRhYkNvbnRyb2w= 50547\nIHB1cHBldA== 50548\nIHV0aWxpemF0aW9u 50549\nIOKWoA== 50550\nIHN1Y2Nlcw== 50551\nIGxhbXBz 50552\nX3Byb2o= 50553\nRXJpYw== 50554\nIHJlbm92YXRpb24= 50555\nIEZhbWlsaWVz 50556\nIEJpdHM= 50557\ncGFydGlhbHM= 50558\nLU1lbg== 50559\nc29sdXRpb24= 50560\nIGR3YXJm 50561\nLklOVEVHRVI= 50562\nIExPQ0s= 50563\nLmN0 50564\nIGV4Y2VycHQ= 50565\nIFBpeA== 50566\nIEZpcnN0TmFtZQ== 50567\nQU5URUQ= 50568\nIEFkbWly 50569\nLWhlbHA= 50570\nUHJpb3I= 50571\nIEFsaWdu 50572\nLklOU1RBTkNF 50573\nTGluZUVkaXQ= 50574\nKCcvOg== 50575\nIGluZXQ= 50576\nb2R1cw== 50577\nLnBrbA== 50578\nIEtZ 50579\ndXBlcnQ= 50580\nIG5lcnZlcw== 50581\nX2dyYWRpZW50 50582\nfScsJw== 50583\nX3VucmVm 50584\nIHNhdHVyYXRlZA== 50585\nIENvbm5lY3RlZA== 50586\nIEZO 50587\nRVhJVA== 50588\nIHRlbGVwb3J0 50589\nIGF2YWl0 50590\nUGFnZVJvdXRl 50591\nIGRpdm9yY2Vk 50592\nKGxhbmc= 50593\nZnN0 50594\nIFR5cg== 50595\nIG1lc3Nlbmdlcg== 50596\naWZzdHJlYW0= 50597\nWFM= 50598\nIEJhbmtpbmc= 50599\nIGluZmVjdGlvdXM= 50600\nIE1vbnM= 50601\nX0xPT1A= 50602\nIHp1csO8Y2s= 50603\nIG9idGVuZXI= 50604\nL3JlcG9z 50605\nVmVs 50606\nYWNybw== 50607\nIHVzZXJSZXBvc2l0b3J5 50608\nc3R5bGVUeXBl 50609\nIFNSQw== 50610\nVk1MSU5VWA== 50611\ncmVjdXJzaXZl 50612\nL2Jhcg== 50613\nX2NoaXA= 50614\nb21pbmF0ZWQ= 50615\nIE5pdA== 50616\n4oCUdG8= 50617\nIEJ1ZGRo 50618\n0L7QvNC10YA= 50619\nIE1BRw== 50620\nIENIRQ== 50621\nX2Rlbg== 50622\nLnJhaXNlcw== 50623\nX2RlZ3JlZQ== 50624\nIHB1bXBraW4= 50625\nX3RlbXBsYXRlcw== 50626\nX01FRElB 50627\nIFRpbWVsaW5l 50628\nIGJvdHM= 50629\nT2JqZWN0VHlwZQ== 50630\nIGJ1eXM= 50631\nLnBvc3Rz 50632\nQ0FM 50633\nd2FpdGluZw== 50634\nIERhbmllbHM= 50635\nIGRhYmVp 50636\nIFNpZ21h 50637\naWxvcg== 50638\naWdlbA== 50639\nLFc= 50640\nQURT 50641\nKHBhbmVs 50642\n7LK0 50643\naXRhdGluZw== 50644\nLnBhbGV0dGU= 50645\nIG1vc3F1aXRv 50646\nIHRlZ28= 50647\nKHBhcnNlSW50 50648\nIGRlc3B1w6lz 50649\ncHJvbWlzZQ== 50650\nIHdpag== 50651\ndHlwZXNjcmlwdA== 50652\nIFR2 50653\nX0lERU5USUZJRVI= 50654\nKS4KCgo= 50655\nX2ZsYXQ= 50656\naXRzdQ== 50657\nVVNS 50658\nZXhwZXJpZW5jZQ== 50659\nLWZpdA== 50660\ncGhpbng= 50661\nX3RocmVzaA== 50662\nIGlkZWFsbHk= 50663\nIEZyZWVtYW4= 50664\nLERC 50665\nX3J3 50666\n562J 50667\nVWI= 50668\nX3N0YXRpc3RpY3M= 50669\nPSIiPjw= 50670\nIGNob3Jl 50671\nIHlvcms= 50672\naW5zdGFsbGVk 50673\nQWRkaXRpb25hbGx5 50674\nIHBzdG10 50675\neWxrbw== 50676\nOjoK 50677\nRm9yZXN0 50678\nIGhlYWRzZXQ= 50679\nIGdhbGxvbg== 50680\n0YDQtdC8 50681\nIHdpdGhkcmF3bg== 50682\nIENhbmRpZGF0ZQ== 50683\nIG1lbHRpbmc= 50684\nIGZyZWV6ZXI= 50685\nIGhs 50686\nX0hFTFA= 50687\nbWltZQ== 50688\nKC8q 50689\nIHRoaXJzdA== 50690\nJHJldHVybg== 50691\nbWVtYmVyb2Y= 50692\n0LXQsQ== 50693\nIEh0dHBTZXJ2bGV0UmVxdWVzdA== 50694\nKG9i 50695\nX1Jlc3VsdA== 50696\nIGFzc2VydGVk 50697\nIGZ1bGZpbGxpbmc= 50698\nIHN0cmV0Y2hlcw== 50699\ncGFyYXRlZA== 50700\nLWZ1bmRlZA== 50701\nIOWb 50702\naW5nbGVz 50703\nX2Nh 50704\nLmNvbmRpdGlvbg== 50705\nIERpc3BsYXlz 50706\nIG9yYW5n 50707\nIENSRQ== 50708\nIGdsQmluZA== 50709\nIFNlbGVjdG9y 50710\nL3R5cGU= 50711\nIEFsZXhh 50712\nY2hlZHVsZXM= 50713\nIFBlbmluc3VsYQ== 50714\nIHBhcml0eQ== 50715\nCWRlc3Q= 50716\nIERvb3Jz 50717\nDQoJDQo= 50718\nX2RpbWVuc2lvbg== 50719\nIGFsb2Fk 50720\nLlN0b3JlZFByb2NlZHVyZQ== 50721\nKHBhcmVu 50722\nIEJ1cmtl 50723\nJyldCg== 50724\nLWVuZ2luZQ== 50725\nIHF1aXI= 50726\nIEh5YnJpZA== 50727\nIERvZQ== 50728\nIG91dGxpbmVz 50729\nIFRyZW5kcw== 50730\nX05W 50731\ncGVyaW1lbnRz 50732\nIEhpbg== 50733\nPycs 50734\nCVRleHQ= 50735\nRlVM 50736\nIHNtZWxscw== 50737\nIHNsaWNr 50738\nIG1pc2VyYWJsZQ== 50739\nIEFycmF5QWRhcHRlcg== 50740\nIHBhcmFtU3RyaW5n 50741\nSG9t 50742\nX2xpdGVyYWxz 50743\ndXN1YXJpb3M= 50744\nIHByb21wdGluZw== 50745\nX2xhenk= 50746\nIEFjdGl2YXRpb24= 50747\nX29j 50748\nV2Vhaw== 50749\nIGFuZWNk 50750\nIFVDTEE= 50751\nPXJl 50752\naXNzZW1lbnQ= 50753\nIEVzY29ydHM= 50754\nRXhjZWxsZW50 50755\nIFBhdXNl 50756\nIHJlcG9zaXRvcmllcw== 50757\nVE9S 50758\nYXJpYXRl 50759\nX2lzbw== 50760\ndXBkYXRlcw== 50761\naGFsYg== 50762\ndWRpYW50ZQ== 50763\n66Gd 50764\nIG5haXZl 50765\nIFBlZw== 50766\nIExvdW5nZQ== 50767\nQVJHSU4= 50768\nKGJpbg== 50769\nT25DbGlja0xpc3RlbmVy 50770\nIEZBSUxFRA== 50771\nIGxpdGU= 50772\nIGR6aWU= 50773\nIExpdGVyYWw= 50774\naXZvcg== 50775\nZmNudGw= 50776\nIGVhdHM= 50777\nIHFlZA== 50778\nVW5sb2Nr 50779\ncmlkaW5n 50780\ndW5kYWk= 50781\nPU0= 50782\nQVRURVI= 50783\nQ29uZmlndXJlQXdhaXQ= 50784\naWNpYXM= 50785\ndXN0b21lZA== 50786\nIHN1Y2Nlc3Npb24= 50787\nZW5kVGltZQ== 50788\nIEp1cGl0ZXI= 50789\nIGp1ZGdpbmc= 50790\nZHJhdGlvbg== 50791\nX2RvY3M= 50792\nLm1v 50793\nIGVkdWNhdG9ycw== 50794\nIFZpbmU= 50795\nQ29uZA== 50796\nW291dA== 50797\ncWI= 50798\nXFZhbGlkYXRvcg== 50799\nIG1lYW5pbmdz 50800\nIHByZXNlbnRseQ== 50801\nIGRpdmlkaW5n 50802\nb3R0ZW5oYW0= 50803\nYXNjdWxhcg== 50804\nIHRyYWlsZXJz 50805\nIENMT1NF 50806\n0LDQvNC4 50807\n4oCZYWk= 50808\nIEdhaW4= 50809\nd29y 50810\nIHBsYW5uZXI= 50811\nIGRpc3RyaWJ1dGluZw== 50812\ndmF0 50813\nbW9udGhz 50814\neGxhYmVs 50815\nSEY= 50816\nVmlvbA== 50817\nLkJBU0VMSU5F 50818\n0LXRgtGB0Y8= 50819\nIFJvdGF0ZQ== 50820\nIHR4bg== 50821\nOmJvbGQ= 50822\nIGJsb3Nz 50823\nRm9yZ2VyeQ== 50824\nKGVtYmVk 50825\nIGpha28= 50826\nc3ByaW50Zg== 50827\ndGhlaXI= 50828\nIGV4aGliaXRz 50829\nLXN0YXRpYw== 50830\naGVjeQ== 50831\nZ2V0QWN0aXZlU2hlZXQ= 50832\nLmNsaWVudHM= 50833\n44GN 50834\nX2hpZGU= 50835\nW3dvcmQ= 50836\nQ2I= 50837\nYWRkSXRlbQ== 50838\nYXhl 50839\nX3JhZGlv 50840\nYWxpb24= 50841\nbW9kaWZpZXI= 50842\nIHNhdHVyYXRpb24= 50843\nIGRlbm9t 50844\nX3BpeGVscw== 50845\nbWVzcw== 50846\nKGZs 50847\nYXRpZg== 50848\nIHNlY3M= 50849\nIHByb3N0aXR1dGlvbg== 50850\nIGdyYW5kY2hpbGRyZW4= 50851\nIHBhcmFkaXNl 50852\nIEZlbGQ= 50853\nX0JJTkFSWQ== 50854\naXRvdXM= 50855\n4LmE 50856\nIGZsYXNoaW5n 50857\nLXNpZGVk 50858\nIGNvbnRyYWRpY3Rpb24= 50859\nLyoKCg== 50860\neWxhYmVs 50861\nIFRldA== 50862\nIGFkbWlyZQ== 50863\ncmVzbw== 50864\nIGxldHo= 50865\nIFNFQVJDSA== 50866\nc2xvdHM= 50867\nIFJld2FyZHM= 50868\nIEhvZw== 50869\nIE5TRGF0YQ== 50870\nc3Rhc2g= 50871\nRmFsbA== 50872\nIEFtZXI= 50873\nTGluZWFyTGF5b3V0 50874\nL3Bob3Rvcw== 50875\nIGZlYXRoZXI= 50876\nIHwNCg== 50877\nRG93bmxvYWRz 50878\nLlN0YXJ0c1dpdGg= 50879\nIC8vIw== 50880\naW5lVHJhbnNmb3Jt 50881\nIGFmZmlk 50882\nVnRibA== 50883\nIFJvZ3Vl 50884\nc2NyaWJlZA== 50885\nIGZhdWM= 50886\nIE1vbnJvZQ== 50887\nIGRlY2xhcmVz 50888\nbW9kZXJu 50889\ncmVvbg== 50890\nYXliZQ== 50891\nUEFTUw== 50892\nZmVycw== 50893\nX01VTFRJ 50894\nIE1hdGhlbWF0aWNz 50895\nIHN1ZGFo 50896\nX0FUVEFDSA== 50897\nIG51bWJlcldpdGg= 50898\nIFNvbG9tb24= 50899\namlu 50900\nb2dyYWZpYQ== 50901\nw7Zs 50902\nX2Rlc2lnbg== 50903\nY3VsYXRlZA== 50904\nIEx1bmE= 50905\naWVzeg== 50906\nID0+Jw== 50907\nIHJldmVsYXRpb25z 50908\nQWxvbmc= 50909\nKGVk 50910\nIEZpbGVuYW1l 50911\nIHlsYWJlbA== 50912\nU2VjdXJl 50913\nIGJ1c2Nh 50914\nYWdub3Npcw== 50915\nX1JFQ0U= 50916\nIG92ZXJsYXBwaW5n 50917\nRXh0ZW50 50918\nIGFudGljaXBhdGlvbg== 50919\nQ2hlY2tz 50920\nIEFMU08= 50921\nb3Jj 50922\naWxpbmd1YWw= 50923\naXRhdGlvbmFs 50924\nIGFkdmFuY2VtZW50 50925\nb3Vybw== 50926\nIFByZWRpY2F0ZQ== 50927\n5b6X 50928\nZXJpYQ== 50929\nIFBpZXJjZQ== 50930\nb3Jpbw== 50931\nIG1lcml0cw== 50932\nIHBlYW51dA== 50933\nLlBhY2thZ2U= 50934\nIENvbmR1Y3Q= 50935\nX1NFTlNPUg== 50936\nIGJvaWxpbmc= 50937\nIGludHJh 50938\nIElHTg== 50939\nIEZ1cg== 50940\nLlJlZnJlc2g= 50941\nIFJlYWNo 50942\nX2RlY29kZXI= 50943\nLkV4cA== 50944\nINGC0LDQug== 50945\ncGlsbA== 50946\nLFE= 50947\nIEdyaWxs 50948\nIHBvcHBpbmc= 50949\nLkFn 50950\nIHByb3llY3Rv 50951\nIG1pbGVhZ2U= 50952\nIGVjb2xvZ2ljYWw= 50953\nXV0pOwo= 50954\nIMKt 50955\nc3VicGxvdA== 50956\nYWNhZA== 50957\nIFRyeWluZw== 50958\ncmVjaXBlcw== 50959\nJGNyaXRlcmlh 50960\nIFBlcnNpYW4= 50961\nLWJvdW5k 50962\nTUFTSw== 50963\nIEdlc3R1cmU= 50964\nIGtr 50965\nIFBWQw== 50966\nIHByb2hpYml0aW9u 50967\nIGNvbWFuZG8= 50968\nIExPT0s= 50969\nU2hvcHBpbmc= 50970\nIGRpc3RvcnRpb24= 50971\nPEJvb2xlYW4= 50972\nLkdldExlbmd0aA== 50973\ndW1wdA== 50974\nXFByb2R1Y3Q= 50975\nZWxsZXJ5 50976\nIGZpcmV3YWxs 50977\nZm9ybWF0dGVk 50978\nLnJlZGlz 50979\nIGVzYQ== 50980\nIFJob2Rl 50981\nU29t 50982\nLm5vbg== 50983\nICcpLg== 50984\nIGdldFZpZXc= 50985\n4bqhbg== 50986\ncHJ1cw== 50987\nTWF0dGhldw== 50988\nIHNpYQ== 50989\nIEZvcnM= 50990\nR1BV 50991\naWVudHJhcw== 50992\nX0lOU1Q= 50993\nIG9sYXJhaw== 50994\nIGltcG9ydGluZw== 50995\nVENQ 50996\nLyIpOwo= 50997\nZWl0aGVy 50998\nIGZyZXNobHk= 50999\nY2FzY2FkZQ== 51000\nKGNoYXJhY3Rlcg== 51001\nIEplZXA= 51002\nb3RpY3M= 51003\nX1VUSUw= 51004\nLlh0cmFQcmludGluZw== 51005\nLmZpcnN0Q2hpbGQ= 51006\nIEV4Y2VsbA== 51007\nIGR2ZA== 51008\nIHRhbGxlcg== 51009\nIHJhcw== 51010\neXBhc3M= 51011\nIGFzc2lnbnM= 51012\nIGdyaWV2 51013\nLW1vcmU= 51014\nSkQ= 51015\nIEJ1cm5z 51016\nJz4NCg== 51017\nLkRlcGVuZGVuY3k= 51018\nLlF1ZXJ5U3RyaW5n 51019\nLk93bmVy 51020\nIGV4cGlyeQ== 51021\nVGh1 51022\nKFZlYw== 51023\nIGhhemFyZG91cw== 51024\nIHJwbQ== 51025\nQVBPTg== 51026\nIGFkZFRhcmdldA== 51027\nc3ZpbGxl 51028\ncE5ldA== 51029\nIEltZw== 51030\nIFRJTUVS 51031\nLkFuaW1hdGlvbg== 51032\nIGJlaw== 51033\nIGFzc29ydA== 51034\nIGxlYmlo 51035\nIGJvZHlQYXJzZXI= 51036\nIHZpYnJhdGluZw== 51037\nSURM 51038\nIGJ1dHRlcmtuaWZl 51039\naW50ZXJz 51040\nIHBlcnN1YWRl 51041\nIExHQlRR 51042\n6Is= 51043\nLnNvZnQ= 51044\nIGJlYW1z 51045\nX3N1cg== 51046\nLkRlZg== 51047\nIGxhYnM= 51048\nCXBsdA== 51049\nIHNraW5z 51050\nIHRyYW5zZmVycmluZw== 51051\nIGltYWdpbmFyeQ== 51052\nX0VuZA== 51053\nO2JhY2tncm91bmQ= 51054\nIGxhcHM= 51055\nX0NPTU1FTlQ= 51056\nKFNETA== 51057\nb25kcw== 51058\nLlJlY29yZA== 51059\nIEltcGxlbWVudHM= 51060\nX3RpY2tz 51061\nKCkpKQoK 51062\nIGFyb3Nl 51063\nXT8= 51064\nIE1w 51065\nIElDb21tYW5k 51066\nIHNjdWxwdHVyZQ== 51067\nIGNvbnRyYWN0ZWQ= 51068\nPEhUTUw= 51069\nIGNhbGVuZA== 51070\nYXR5 51071\nL1N1Yg== 51072\nIGt2aW5u 51073\nX0lHTk9SRQ== 51074\nIFNoYW5l 51075\nTUxT 51076\nIHN0aW11bGF0ZQ== 51077\nUGFydGl0aW9u 51078\nIG11bg== 51079\nw7Nt 51080\nZXJhbGE= 51081\nLWFjY291bnQ= 51082\nLkJpbmFyeQ== 51083\nY8Op 51084\nIHNlaXpl 51085\nY29ubmVjdGlvbnM= 51086\nIAogICAgICAgIAo= 51087\nIERpYWdub3N0aWM= 51088\nVklTSUJMRQ== 51089\nIFJ1bnM= 51090\nIGltcHJlc3Npb25z 51091\nc3VpdGU= 51092\nb2JsZQ== 51093\nfi0= 51094\nYWt1a2Fu 51095\nPFBlcnNvbg== 51096\nIE5vcw== 51097\nIEd1aQ== 51098\nLndhaXRGb3I= 51099\nUkVTRVQ= 51100\nIHBvc3Rwb24= 51101\nRGlzY292ZXI= 51102\nYXJyaXNvbg== 51103\nc2hhdw== 51104\nYmxvb2Q= 51105\nQUpPUg== 51106\n5pu05paw 51107\nIE11c2U= 51108\n5pS2 51109\nIHJldGFpbmluZw== 51110\nb3R0ZQ== 51111\nIG1vc3F1ZQ== 51112\nIFNuZQ== 51113\nIHN0YW5kYXJkaXplZA== 51114\nIG1haW5sYW5k 51115\nX3RocmVl 51116\ndW5nZW9ucw== 51117\nZ2V0RG9jdHJpbmU= 51118\nIHdoYWxl 51119\nIGFnZw== 51120\nIFBvcnNjaGU= 51121\nbm93bGVk 51122\nbGF0ZW50 51123\nIFJlbGF0aW9u 51124\nIC8vJw== 51125\nIHNodXR0aW5n 51126\nIFJlbWl4 51127\nX2Nvdg== 51128\nIHNhaWxpbmc= 51129\nIHZvd2Vk 51130\nIHBvdHM= 51131\nb3V0dQ== 51132\nIGhhaXJ5 51133\nY2FzdHM= 51134\nUmVsb2Fk 51135\nIHJlY29ubmVjdA== 51136\ndGVyYQ== 51137\nLmNoaWxkTm9kZXM= 51138\nIFJhY2s= 51139\nIGN1cnJlbnRJbmRleA== 51140\nIGFsbGVu 51141\nIOeUqOaItw== 51142\nIEN1YnM= 51143\nW1g= 51144\nX1NFUQ== 51145\nX1JFTU9WRQ== 51146\nLmdldEFjdGlvbg== 51147\nKC9e 51148\nZXJyYXI= 51149\nIGV0aGVy 51150\nY3VydmU= 51151\nIHNsYXA= 51152\nIHVvbQ== 51153\nT3RoZXJz 51154\nIGVuZ3I= 51155\nRGlzcG9zaXRpb24= 51156\nIHN0YWdlZA== 51157\nRXll 51158\nIEF1eA== 51159\nYXV0aGVudGljYXRl 51160\nICQ/ 51161\nIEFuZHJlYXM= 51162\nIHNldHc= 51163\nLkFydA== 51164\nIGZvcmVjYXN0cw== 51165\nIGF1bnQ= 51166\nLW1pZGRsZQ== 51167\nIG1pc2Q= 51168\nZGVzaw== 51169\nIGVzY29ydGU= 51170\nIENhc2E= 51171\ncm9waWNhbA== 51172\nIGV4ZW1wbGU= 51173\ncGxhbmV0 51174\nKFVJTlQ= 51175\nIHdoaXA= 51176\nIFBDQg== 51177\nY2xpZGVhbg== 51178\nPSJc 51179\nIG94aWRl 51180\nIHN1Y2NlZWRz 51181\nZGVyaXZlZA== 51182\nIEVjb25vbQ== 51183\nX2Nvb3JkaW5hdGVz 51184\naXJhcw== 51185\nRHJhZnQ= 51186\nIHZpc3VhbGl6ZQ== 51187\nQnJpYW4= 51188\nX0FTU1VNRQ== 51189\nIE9iamVjdElk 51190\nIHRyYWluZXJz 51191\nX0ZPUkNF 51192\nIGNvbnNvbGVz 51193\nLXByb2Nlc3M= 51194\nbGljaGVy 51195\nIFNpbW1vbnM= 51196\nVGFraW5n 51197\nIENsYWltcw== 51198\nIGRpZmbDqXJlbnQ= 51199\nQWN0aXZpdHlSZXN1bHQ= 51200\nIHNucw== 51201\n6YCJ5os= 51202\nIENydXM= 51203\nIGxsYW0= 51204\ncmFi 51205\nIEpvYW4= 51206\nQUFB 51207\nCWZpbHRlcg== 51208\naXNob3Bz 51209\nZ2V0dGluZw== 51210\n4LU= 51211\nIHF1YW50bw== 51212\nUGFzdA== 51213\nb3ZpY2g= 51214\nIGluanVzdGljZQ== 51215\nIEZMT0FU 51216\nIGFscmlnaHQ= 51217\nXERC 51218\nKEdhbWVPYmplY3Q= 51219\ndWlzaA== 51220\nKGJvdA== 51221\nIGdhbGxvbnM= 51222\nIFLDqQ== 51223\nIFNhaWQ= 51224\nIFNURE1FVEhPRENBTExUWVBF 51225\nYWlzaW5n 51226\nX3Byb2Nlc3Nvcg== 51227\nZWxsaWRvcw== 51228\ndGVyZGFt 51229\nIEJlYW0= 51230\nVGV4dEFyZWE= 51231\nIHJldG9ybm8= 51232\nLk1ha2U= 51233\nICQoIjw= 51234\nIGxvY2tkb3du 51235\nIHJlbWVkaWVz 51236\nIHZlZWw= 51237\neGVl 51238\nZG9jdHlwZQ== 51239\nRmls 51240\nIEV4cGFuZA== 51241\nIGVtcGxveXM= 51242\nIHNlc3Npb25TdG9yYWdl 51243\nUGhw 51244\nUHVibGlzaA== 51245\nIHJldGFs 51246\nZmFicw== 51247\neW5hbWljcw== 51248\nIHRvc3NlZA== 51249\nIG51bWJlck9mUm93c0luU2VjdGlvbg== 51250\neHBhdGg= 51251\nXG1vZHVsZXM= 51252\nIGRpc2FzdHI= 51253\nIE1VTFQ= 51254\nLk1lc2g= 51255\nLXN0YWdl 51256\nIHNkZg== 51257\naXR1bmc= 51258\ndWdlcw== 51259\nID8+Ij48Lw== 51260\nX2luZGV4ZXM= 51261\nIHZhbHVhdGlvbg== 51262\nIGxpZmVsb25n 51263\nIGV4cGVkaXRpb24= 51264\nKFlpaQ== 51265\nIHBhaW5z 51266\nIFBSSQ== 51267\nIE1peGVk 51268\nIENoYW5naW5n 51269\nR2VybWFueQ== 51270\nY29tbXVuaWNhdGlvbg== 51271\nLm9yZ2Fu 51272\nIE1hcmF0aG9u 51273\nZ2V0UGF0aA== 51274\nIEFjY3VyYWN5 51275\nIEdsb2JhbHM= 51276\nJyl9fTwv 51277\nIE9XTkVS 51278\n4oCm4oCd 51279\nIHN0YWJiZWQ= 51280\nIHNjaGl6b3BocmVu 51281\nIEZu 51282\nIENPUkU= 51283\nIERhdGFSb3c= 51284\nIExURA== 51285\nIG15dGhz 51286\nIGZhbW91c2x5 51287\nfCwK 51288\nIFNlb3Vs 51289\nU2ly 51290\nIEJlcms= 51291\nUmVnRXhw 51292\nLmdldFJvdw== 51293\nIERlY29kZQ== 51294\nUk4= 51295\nIG1hbmc= 51296\nIGVtcGxveWluZw== 51297\nX25vbWJyZQ== 51298\nPFRhc2s= 51299\nIEd1eXM= 51300\nIEFydGlrZWw= 51301\nQmVycnk= 51302\nenVyZQ== 51303\nIHZhbGV1cg== 51304\naGl0cw== 51305\nIGx1Y3JhdGl2ZQ== 51306\nIGluZm9ybWF0 51307\nQ2xpbnRvbg== 51308\nIHRlcw== 51309\nIENlcnRpZmljYXRpb24= 51310\nX3dz 51311\nIG9mZmVuY2Vz 51312\nZWJyYQ== 51313\nIEF4aW9z 51314\ncmVzdGFydA== 51315\nTE4= 51316\nLkVuY29kZQ== 51317\nbWl1bQ== 51318\nIEZlYXR1cmVk 51319\n0YjQuNCx0LrQsA== 51320\nIERlcHQ= 51321\nOyYj 51322\nIE15ZXJz 51323\nCXRyYW5zZm9ybQ== 51324\nVGV4YXM= 51325\n16g= 51326\nIFlvcmtzaGlyZQ== 51327\nbG5hbWU= 51328\nQnJl 51329\n44GT44Gu 51330\nIHNjZW5lcnk= 51331\nIGbDvGg= 51332\nCQkJCSAgICAgICA= 51333\nIERvb20= 51334\nIEFETUlO 51335\nKGVz 51336\nINC80LDRgdGB0LjQsg== 51337\nX2FzY2lp 51338\nL0RhdGE= 51339\nbGVzaG9vdGluZw== 51340\nQmFu 51341\nIG1lbW9pcg== 51342\nINmG 51343\nIEF1c3M= 51344\nKXBhcmVu 51345\nIGd1aWRpbmc= 51346\nIGJheg== 51347\nw7h5 51348\nQURN 51349\nIGRtYQ== 51350\nLlF1ZXVl 51351\nIFN1cHBsaWVz 51352\nIE1jRA== 51353\nIEFnZW50cw== 51354\nX2Ji 51355\nc2xhc2g= 51356\nIGhhc2hlcw== 51357\nIGNyYW5r 51358\nIFJhZw== 51359\nIGF1dG9ub215 51360\nw610dWxv 51361\nIHJlY3Vyc2lvbg== 51362\nIENyYXp5 51363\nX3RyYWNrZXI= 51364\nIE1i 51365\nX3BoeQ== 51366\nZm9vYmFy 51367\nCXNwZWVk 51368\nIGNhbXBvcw== 51369\nIG1vdWxk 51370\nIGNoYXJpdGllcw== 51371\nSEVJR0hU 51372\nIGVhdXRv 51373\nX3NvbHV0aW9u 51374\nIERH 51375\nbWFydmlu 51376\nWWVzdGVyZGF5 51377\nIEJlY29tZQ== 51378\nPGxs 51379\nb3Jpcw== 51380\nW25leHQ= 51381\nIGluY3VtYmVudA== 51382\nIER1cA== 51383\nCW92ZXJyaWRl 51384\n5a6J 51385\nCWNmZw== 51386\nIHPDtg== 51387\nIGRlc2U= 51388\nLWRp 51389\nIG9udHZhbmdzdA== 51390\nIGRlY2lzaXZl 51391\n5Lu3 51392\nX2tlZXA= 51393\nKERhdGFiYXNl 51394\nXy8= 51395\nIENMTA== 51396\nLW1ldGhvZA== 51397\nCVBvaW50 51398\nIEJ5dGVCdWZmZXI= 51399\nIHRyYWNlZA== 51400\nYWRkVG8= 51401\n7IS47JqU 51402\nYW55YWs= 51403\nIGVtcHJlc2Fz 51404\nKHJlcG9zaXRvcnk= 51405\nLmNyZWF0ZVN0YXRlbWVudA== 51406\nIGVsYQ== 51407\nRm9yZ2VyeVRva2Vu 51408\nIGlzZW1wdHk= 51409\nYXNpbg== 51410\nIExvb2t1cA== 51411\n0LXQvdCw 51412\nIHZpb2xhdGVz 51413\nIFNtYXJ0eQ== 51414\nIHphaw== 51415\nKCQu 51416\nU0hPVw== 51417\nINCi 51418\nYXJ1cw== 51419\nKFRFU1Q= 51420\ncGFja2Vk 51421\nIGhpc3Rvcmlh 51422\nIGNhbmNlcnM= 51423\nIEtyZW1saW4= 51424\nUmVkdWNl 51425\nL2hvdw== 51426\nIMSQ 51427\nVElUTEU= 51428\nLmxvY2FsUG9zaXRpb24= 51429\nbGlhYmxl 51430\nIOesrA== 51431\nIGZyYW5jYWlz 51432\nCWhhc2g= 51433\nIGluaWNpbw== 51434\nIENyYXNo 51435\nIHsu 51436\nIGNsb2Nrcw== 51437\nZHVjdG9yeQ== 51438\nIFB2 51439\n6528 51440\nIGRvaXM= 51441\nXC0= 51442\nIGphYXI= 51443\nIE1heWE= 51444\nbW96aWxsYQ== 51445\nCXJlc291cmNl 51446\nISEK 51447\nYXlzY2FsZQ== 51448\nICctJyw= 51449\n5Y+W5raI 51450\nIHN0YWxl 51451\nQ29ybmVy 51452\nw6hsZQ== 51453\naXRpdmVz 51454\nemFz 51455\naWNvcm4= 51456\nLkV4cHJlc3Npb24= 51457\nw7N0 51458\nQXBwbGljYXRpb25z 51459\nUmVzdHI= 51460\nX0luZGV4 51461\njbDsnbTthLA= 51462\nIEpGcmFtZQ== 51463\nc2l4 51464\nX0lNRw== 51465\n6JeP 51466\nIE51bWVyaWM= 51467\nIHdpcms= 51468\nX1NVTQ== 51469\nPERhdGVUaW1l 51470\nIHB5bGludA== 51471\nIGxhbWVudA== 51472\nIFBvc2U= 51473\nX2VudHJvcHk= 51474\nIGVuY291cmFnZW1lbnQ= 51475\nIGxhaW4= 51476\n5Yib5bu6 51477\nLWZy 51478\nIGNvcnJlY3Rpb25z 51479\ncGhhcw== 51480\ndXVy 51481\nYXRlZ29yaWFz 51482\nIGNhdGFseXN0 51483\nLmFsdA== 51484\nIEZlcm5hbmRv 51485\nLkRhdGFHcmlkVmlld0NlbGxTdHlsZQ== 51486\nIGhlcmJhbA== 51487\nIFJH 51488\nU1RFUA== 51489\nSUZu 51490\nIFRvbmc= 51491\nxb5l 51492\nIElOQ0xVREU= 51493\nIGhj 51494\ndHJhY2tlcg== 51495\nCVN0cmluZ0J1aWxkZXI= 51496\nIERlc3Rpbnk= 51497\nIHNvcGhvbW9yZQ== 51498\nIERlZA== 51499\nIFBBUkE= 51500\naXpvbnRhbGx5 51501\nLWNoYW5nZQ== 51502\nZW5kaWQ= 51503\n6YCJ5oup 51504\naWprZQ== 51505\nIEF0aGxldGlj 51506\nYmFp 51507\nZ2V0UG9zaXRpb24= 51508\nLm5hbWVzcGFjZQ== 51509\n6K6i5Y2V 51510\nUkFDVA== 51511\nIHJlbGlldmVk 51512\nIHBvdXJpbmc= 51513\nIGl5 51514\ncm92ZQ== 51515\nIGFkb2xlc2NlbnRz 51516\nIGF3ZQ== 51517\ncmVhcw== 51518\nQW50aUZvcmdlcnlUb2tlbg== 51519\ncm93bmluZw== 51520\nIFVuY2xl 51521\nLkNvbm4= 51522\nIE1lZGlhVHlwZQ== 51523\nLm9yYWNsZQ== 51524\nSU5URVJOQUw= 51525\nLGFuZA== 51526\nIGZhdXg= 51527\naXBtYXA= 51528\nJG1vZGVs 51529\nIEdlb2Zm 51530\nX0FYSVM= 51531\nKCgpKQo= 51532\nIG5lZ2xlY3RlZA== 51533\nIHF1YXJ0ZXJseQ== 51534\nIGRpZXNlbg== 51535\nIGRyYWdvbnM= 51536\nTmlnaHQ= 51537\nL1dlYg== 51538\nPFZlYw== 51539\nCSAgICAgICAgICAgICAgICAgICAgICAg 51540\nIE9icw== 51541\nYmRk 51542\nIGhlaXI= 51543\nLWFuZ3VsYXI= 51544\nTWVudVN0cmlw 51545\nICciPic= 51546\na2luc29u 51547\nINC60L7Quw== 51548\nb2duaXRpdmU= 51549\nX2xp 51550\nIGltbWluZW50 51551\nIGFmZmluaXR5 51552\nLnNpZ25hbA== 51553\nIG5vdGNo 51554\nIFN0ZWVsZXJz 51555\nbWF4bGVuZ3Ro 51556\nS0s= 51557\nIEV1Z2VuZQ== 51558\nX1BXTQ== 51559\ncm9p 51560\nIOKXjw== 51561\nIEhhbWJ1cmc= 51562\nLk11c3Q= 51563\nIGF4ZQ== 51564\nZW5lZg== 51565\nIGFtYml0aW9ucw== 51566\nIFNwZWNpZXM= 51567\nIFN0cmVzcw== 51568\nIGF3aGlsZQ== 51569\nINCx0YPQtA== 51570\nIHdpdGhzdGFuZA== 51571\nIERlY29kZXI= 51572\nX2ludmVudG9yeQ== 51573\nIHsNDQo= 51574\nIHRndA== 51575\nIHJhaWxyb2Fk 51576\nV0FTSElOR1RPTg== 51577\nIG5lZ290aWF0ZWQ= 51578\nTlNU 51579\nLXBob25l 51580\nLFU= 51581\nIGV4ZXJjaXNpbmc= 51582\n4bul 51583\nX1BJWEVM 51584\nYXZvcnM= 51585\naXRlcmF0ZWQ= 51586\nIHZhbXBpcmU= 51587\nYWRhbA== 51588\nSW5ncmVzZQ== 51589\nIHVuZw== 51590\namVjdGl2ZQ== 51591\nLmNlbGxz 51592\nIG5hbm8= 51593\nIG1hcmtkb3du 51594\nX1JVTEU= 51595\nKGV2ZW50cw== 51596\nIGx1Z2dhZ2U= 51597\nTUVTU0FHRQ== 51598\naWdrZWl0 51599\nJGNvdW50 51600\nQXR0cmlidXRlTmFtZQ== 51601\nSUdJTkFM 51602\nX0VudA== 51603\nIEJG 51604\nIENPTU1FTlQ= 51605\nX2luaQ== 51606\nIEV1cm9wZWFucw== 51607\nIEJlbGxl 51608\n5ZG9 51609\nKVsn 51610\n5bqU 51611\nIFVzZWZ1bA== 51612\nLnJlZmVyZW5jZQ== 51613\nKCkiLA== 51614\nX2dyYWRl 51615\nIEthdw== 51616\nIHNlbnRlbmNpbmc= 51617\nIHNvY2lhbGlzbQ== 51618\nbW9uc3Rlcg== 51619\nX0xBWUVS 51620\nIGRlZXBlc3Q= 51621\nd2s= 51622\nIE5vaXNl 51623\nIyMjCgo= 51624\nIHByw6lj 51625\nb3RsZQ== 51626\n0YLQtQ== 51627\nYXVm 51628\naWJhbA== 51629\nIGNvbnF1ZXI= 51630\nPkVtYWls 51631\nIGFtYnVsYW5jZQ== 51632\nT0FE 51633\nICgiJQ== 51634\nIEZJ 51635\nLmZpeHR1cmU= 51636\nIHRlcnNl 51637\nICAgIAkJCQk= 51638\nIHNhbmN0dWFyeQ== 51639\ndWdp 51640\nIENvbXBhcmF0b3I= 51641\nRGVmaW5pdGlvbnM= 51642\nIGFzdGhtYQ== 51643\nIGxhY3Q= 51644\nIGhhcmR3b29k 51645\nLmNsb2Nr 51646\nIGF0dHJhY3Rpbmc= 51647\nIE1vdXI= 51648\nKGRpc3RhbmNl 51649\naWNpdHM= 51650\nIGJvbm5l 51651\nIEFDQ0VTUw== 51652\nLkRlc2VyaWFsaXplT2JqZWN0 51653\nIFR5cGVk 51654\nIGpldQ== 51655\nIGFwcElk 51656\nIENsYXJh 51657\nIEhG 51658\nIFJlaWNo 51659\naXBwbGVz 51660\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 51661\nX2RlbGl2ZXJ5 51662\nZXJpYWxpemF0aW9u 51663\nIHBsYWludGlmZnM= 51664\nU2NpZW50 51665\nc2hvcHBpbmc= 51666\nIER1bW15 51667\nIFdhbGQ= 51668\nR3JvdXBOYW1l 51669\nIGluc2NyaXB0aW9u 51670\nZWxvZw== 51671\nOjo6Ojo6Ojo= 51672\nX2xk 51673\nQmFja1ByZXNzZWQ= 51674\nLlJhdw== 51675\nIE9uVHJpZ2dlcg== 51676\nIG11c2V1bXM= 51677\nIEJlZW4= 51678\nIEFkdmVudHVyZXM= 51679\nIHNsYXRl 51680\nIGxldHQ= 51681\nIHN1bmQ= 51682\nIEdpbg== 51683\nIE1lY2hhbmljYWw= 51684\nLnNoaXA= 51685\nQXBwQ29tcG9uZW50 51686\nIGRlc3RpbmVk 51687\nIGR3ZWxsaW5n 51688\nUHJvZmlsZXI= 51689\nUHJlcGFyZQ== 51690\nemVpY2g= 51691\nIHNpbGljb24= 51692\nKGhhcw== 51693\nICMl 51694\nVklERU8= 51695\nIGNvbGxhYm9yYXRl 51696\nTGlu 51697\nIHNjb3Blcw== 51698\nKGNsYXNzTmFtZQ== 51699\nKHNk 51700\nYW5kaW4= 51701\nLmhhbQ== 51702\nU2VydmljZUltcGw= 51703\nLWRlc2NyaWJlZA== 51704\nIGlyb255 51705\nc3RpYWw= 51706\nIEh1YXdlaQ== 51707\nKHJlcG8= 51708\nIHVuZXhwZWN0ZWRseQ== 51709\nIEthaQ== 51710\nLmluc3RhbGw= 51711\nXHhm 51712\nIGV4aGliaXRlZA== 51713\nX1RDUA== 51714\nIE94 51715\nX0NITw== 51716\nIHByb3N0aXR1ZXJ0ZQ== 51717\nIHbDpA== 51718\nIHNpdG8= 51719\nIGNvbnN0aXR1ZW50cw== 51720\nIENvbnRpbnVlZA== 51721\nIFNBVkU= 51722\ncnNz 51723\nL21lc3NhZ2U= 51724\ndWJlcw== 51725\nIG1pc2RlbWVhbg== 51726\nIHRheGF0aW9u 51727\nIHN0b3J5bGluZQ== 51728\naGFpcg== 51729\nIEZpbmRz 51730\nU0lH 51731\ndmVyaWZpY2F0aW9u 51732\nfj0= 51733\nLmhw 51734\nSXRlcmFibGU= 51735\n0YvQtQ== 51736\nYXRvcmk= 51737\nIGN0cg== 51738\nUng= 51739\nXyk7Cgo= 51740\nZGFn 51741\nLnBpbg== 51742\nIHBzZXVk 51743\nIGludm8= 51744\n0YHRgtGA 51745\nX3BpeA== 51746\n5Li656m6 51747\nIHN3b3Ju 51748\n4oCUb3I= 51749\nX3JlZ2lzdHJ5 51750\nIGRpc2FzdGVycw== 51751\nIFJPSQ== 51752\nIOKAlQ== 51753\nYWt0dQ== 51754\nZm9yZXN0 51755\nYmVpdGVu 51756\n4oCUSQ== 51757\ndWV2YQ== 51758\nZWd0 51759\nIHNwaWtlcw== 51760\nVVJFUw== 51761\nIFJlY29tbWVuZGVk 51762\nIGV4cGxvaXRlZA== 51763\nIEZyZWRlcmljaw== 51764\nX0NPTVBMRVRF 51765\nIERydWdz 51766\nISEhISEhISE= 51767\nIFJpdg== 51768\nU1RPUA== 51769\nUk9PTQ== 51770\nIFBBU1NXT1JE 51771\nQ29va2llcw== 51772\nLkVs 51773\n4but 51774\nIEJlcnQ= 51775\nIGhhc2hlZA== 51776\naWNlc3Rlcg== 51777\nIGRlY29yYXRvcg== 51778\nIHF1ZXJ5U3RyaW5n 51779\nOjsK 51780\nICJbIg== 51781\nb3RvcGU= 51782\nLUFtZXJpYw== 51783\nIE1hdHRoZXdz 51784\nVVJBTA== 51785\n4oCcLA== 51786\nU3VtbWVy 51787\nZm9z 51788\nX0NPTlRBSU5FUg== 51789\nX0FDSw== 51790\nIGZpbHRy 51791\nX2Rpc3A= 51792\nX1Jl 51793\nIGZhY2lsZQ== 51794\n0LDRiA== 51795\nIOyVig== 51796\nIGViZW4= 51797\nIHNwcmluaw== 51798\nIFF1aW50 51799\nPlY= 51800\nIGhpc3RvcmlhbnM= 51801\nb3VybWV0 51802\nIE1vbml0b3Jpbmc= 51803\nbGVkZ2Vy 51804\nY290dA== 51805\nIHdhcmU= 51806\nR0dMRQ== 51807\nY2Fycw== 51808\nIE1FRElBVEVL 51809\nIHZvbHVwdA== 51810\nX1ZpZXc= 51811\nSEVM 51812\nKGNvcHk= 51813\nKHN0YXRz 51814\nIGNocm9tb3NvbWU= 51815\nIEN1cnRpcw== 51816\nLWNvbmY= 51817\nKGFzc2V0 51818\nIGh2b3I= 51819\nRmlsZVN5c3RlbQ== 51820\nPD4oKTsNCg== 51821\nb2NvZGVy 51822\nIENhbm5vbg== 51823\nKXg= 51824\nIFNtb290aA== 51825\nIFNBUw== 51826\nX2Nl 51827\nCXByZXY= 51828\nX21vdmll 51829\nRWM= 51830\nX3dhbGw= 51831\nPEJ1dHRvbg== 51832\nIEZBU1Q= 51833\nIG9uVmlldw== 51834\ndWxhbg== 51835\nIFNVUFBPUlQ= 51836\nIGdlc2NoaWNodGVu 51837\nIFNvbnM= 51838\nSW1t 51839\nJElGbg== 51840\nIGZhaXJuZXNz 51841\nIGRwaQ== 51842\nYXRzdQ== 51843\nSm9zaA== 51844\nRXF1YWxpdHk= 51845\nIH0oKQo= 51846\nX2xlc3M= 51847\nIFJhdGlv 51848\nIENhdHM= 51849\nIFN0ZXJu 51850\nTW9uc3Rlcg== 51851\nIG1lcmN1cnk= 51852\nw7xocg== 51853\nIHBsdXNpZXVycw== 51854\nLmRlc2VyaWFsaXpl 51855\nc2NvcHk= 51856\nLkZhbHNl 51857\nKWFuaW1hdGVk 51858\nIEV4cGVydHM= 51859\nICIiKXsK 51860\nLldoZW4= 51861\nc2VlYWxzbw== 51862\nLnVucGFjaw== 51863\nTEVN 51864\nLnNlbGVjdEFsbA== 51865\nIHBlcmNlcHRpb25z 51866\ndWRpbmc= 51867\naXJsaW5n 51868\nIFByaW50aW5n 51869\nZ3JhbXM= 51870\nIEZpbGVTdHJlYW0= 51871\nZXJ2aWxsZQ== 51872\naWxvZw== 51873\naWNtcA== 51874\nX0NvdW50 51875\nIGxpdmVzdG9jaw== 51876\nLWNh 51877\nZG9jdW1lbnRz 51878\nIHBvbGVz 51879\nCXdhbnQ= 51880\nIGZsdW9yZXM= 51881\nIHN0YW5kcG9pbnQ= 51882\nIEh1Z2U= 51883\nIHJhZGlhbnM= 51884\nIFVJQmFy 51885\nRURJVU0= 51886\nIEhpc3Rvcmlj 51887\nX2hvbGRlcg== 51888\nIE1hcmluZXM= 51889\nIHTDpA== 51890\nLkxpZ2h0 51891\ncXVpcmVy 51892\nYXNvbnJ5 51893\nZGl2aWRlcg== 51894\nIEZsdXR0ZXI= 51895\nX2Zi 51896\ncmVzdHJpY3RlZA== 51897\nIEV2ZXJ5Ym9keQ== 51898\nTsOjbw== 51899\nIGtub3Q= 51900\nIFR3aXRjaA== 51901\nIGhhbGx3YXk= 51902\nKENvbGxpZGVy 51903\nSW5wdXRFbGVtZW50 51904\nPykK 51905\nL29mZg== 51906\nLyk= 51907\ncGxheWVk 51908\nW09G 51909\nIGJhdHRpbmc= 51910\nX2Rs 51911\nIGNvbWVkaWFu 51912\nIMOpdg== 51913\nIERFTQ== 51914\nIEVkZW4= 51915\nOndoaXRl 51916\nJycs 51917\nQ29uc3RydWN0aW9u 51918\nYWNlcmI= 51919\nIHRhc2tlZA== 51920\nLm1hbmFnZQ== 51921\nUmVsYXRpb25zaGlw 51922\nIHBob24= 51923\nbno= 51924\nX0JHUg== 51925\nVmFsaWRhdGVBbnRpRm9yZ2VyeVRva2Vu 51926\nX2Fpcg== 51927\n4oCcV2hlbg== 51928\nIGdsZnc= 51929\nIENvbnZlcnNhdGlvbg== 51930\nX1RPVEFM 51931\nLFo= 51932\nIGdyYXo= 51933\nIGl0ZXJhYmxl 51934\nIFBBU1M= 51935\nIGFkdmVydGlzZQ== 51936\nIG3DtmdsaWNo 51937\nL3RyYWlu 51938\nIFZvbGtzd2FnZW4= 51939\nIGNyZWVweQ== 51940\nICIpDQo= 51941\nUVVFTkNF 51942\nIGFsdGFy 51943\nIGVkaXRz 51944\nY29tcGlsZWQ= 51945\nYXduaW5n 51946\nIER1bmdlb24= 51947\nIG9zZw== 51948\nTmF2aWdhdGlvbkJhcg== 51949\nIHRyZW5kaW5n 51950\nIEVjbw== 51951\nb2dnbGVz 51952\nY2RvdA== 51953\nfC0= 51954\nU2ll 51955\nZWNyZXQ= 51956\nIE5lZ2F0aXZl 51957\nIExpbmc= 51958\nIERJTQ== 51959\nIENXRQ== 51960\nIENhcnJpZXI= 51961\nIGNhcnRyaWRnZQ== 51962\nX3VzYg== 51963\nPW9z 51964\nIEphY2tpZQ== 51965\nIG90cmFz 51966\nIGNvbW1vZGl0aWVz 51967\nIFByZXNlbnRhdGlvbg== 51968\nKSYmKA== 51969\nIE1hcnRoYQ== 51970\nIENhdGhvbGljcw== 51971\nIE1vbmQ= 51972\n0L7QsdGL 51973\nX2Fic29sdXRl 51974\nIGFzaGFtZWQ= 51975\ncG9uc29ycw== 51976\ndGFs 51977\nIHNhZG5lc3M= 51978\nIHB1w7I= 51979\nRmFkZQ== 51980\nLXByZXZpZXc= 51981\nIFJlcXVlc3Rz 51982\nIENhbHZpbg== 51983\naG9ybg== 51984\nUmV1c2VJZGVudGlmaWVy 51985\nKHByb3ZpZGVy 51986\nL2FwcHM= 51987\naW1lbw== 51988\nCUNsYXNz 51989\nU2Ftc3VuZw== 51990\nIFdPUkxE 51991\nIGNpbm5hbW9u 51992\nZG90ZW52 51993\nIElVc2Vy 51994\nIERFVg== 51995\nX0NoYXI= 51996\nLmliYXRpcw== 51997\nZXRp 51998\nL21l 51999\nc3N0 52000\nLnN5bQ== 52001\nIFJ1Z2J5 52002\nLW1hc3Rlcg== 52003\nYWphcg== 52004\nIFlFQVI= 52005\nIG9kcA== 52006\nIFJvbGVz 52007\nIGJpcGFydGlzYW4= 52008\nYWlsbGU= 52009\nIGJsb2NrZXI= 52010\nIGdyZWVucw== 52011\nLlNFQ09ORFM= 52012\nIGJlbGlldmVycw== 52013\nIExpa2Vz 52014\nRkxPQVQ= 52015\nIG1haw== 52016\nIGdjYw== 52017\n4pWQ4pWQ 52018\nKCJ+Lw== 52019\nU0NSSVBUT1I= 52020\nIHRvbm5lcw== 52021\nIFNhbmc= 52022\nIHRyYW5zcG9zZQ== 52023\nZW5uYWk= 52024\nUHJlZA== 52025\nIHNvbGx0ZQ== 52026\nLmdpdGh1YnVzZXJjb250ZW50 52027\nKHByaW50 52028\nIEhvbGU= 52029\n55yL 52030\nYWRnZXQ= 52031\nIHByb21wdHM= 52032\nIGdlbmV0aWNhbGx5 52033\nIEhvZA== 52034\nIHZlcnRpY2FsbHk= 52035\nX2NvbnRyb2xz 52036\n0YHRgtCw0L0= 52037\nIil7DQo= 52038\nJHRpdGxl 52039\nIH0pLAoK 52040\nIHN0YXRld2lkZQ== 52041\nIENvcnJlc3BvbmQ= 52042\nIEF0dHI= 52043\naXRhbnQ= 52044\nRWxlbWVudFR5cGU= 52045\nIG91dHdhcmQ= 52046\nIGZhbWlsaWE= 52047\nKGFydGljbGU= 52048\nIGJsYXQ= 52049\nwqAK 52050\nIGdsR2V0 52051\nIFJlY2VpdmVy 52052\nICUt 52053\nYWRhbQ== 52054\nV2lubmVy 52055\nIHRhaWxvcg== 52056\nX3B3ZA== 52057\nZXJ0ZW4= 52058\nU3Rhbg== 52059\nCWFsbA== 52060\nYWxpdmU= 52061\nc3RydG90aW1l 52062\n77+9cw== 52063\nc2Vzc2lvbnM= 52064\nJGNvbm4= 52065\nYXNzaXN0 52066\nIGNoYXR0aW5n 52067\nIE1hbnQ= 52068\nICVA 52069\nICIiKTsKCg== 52070\nIGRndg== 52071\nIO2VqA== 52072\nLnJlcGVhdA== 52073\nX01lc3NhZ2U= 52074\nIGFkdmlzZXJz 52075\nL3BhdGg= 52076\nIGtlcw== 52077\nKX08Lw== 52078\nTWlzYw== 52079\nIGJzb24= 52080\nIHRyaW1tZWQ= 52081\nIEFjaw== 52082\nVmVydGV4QXR0cmli 52083\n57Si 52084\ndWF0ZXM= 52085\nLm15c3Fs 52086\nIGRlc3Rpbg== 52087\nIHByb2Js 52088\nKENvbnN0YW50 52089\nYXNzZXM= 52090\nLWltYWdlcw== 52091\nX0FSRUE= 52092\nX18qLw== 52093\nW10o 52094\nIHNpZ25Jbg== 52095\nxJE= 52096\neHI= 52097\nYWhpcg== 52098\nLmZpcmVzdG9yZQ== 52099\nIHNlcXVlbnRpYWw= 52100\nIElkZWE= 52101\nLWJhc2lj 52102\nX3BhZw== 52103\nIGluc3RhZ3JhbQ== 52104\nb3Ryb24= 52105\nX2FsaWdubWVudA== 52106\nXFxcXA== 52107\nLkZhY3Rvcnk= 52108\nLnJ1bGU= 52109\nLmNoZGly 52110\nIGxpYnJv 52111\nKGdhbWVPYmplY3Q= 52112\nLlRvb2xTdHJpcEJ1dHRvbg== 52113\nIGRpc2NvdmVycw== 52114\nLkFyZ3M= 52115\nZG9i 52116\nIHZu 52117\n4oaS 52118\nIGTDvA== 52119\nIFhN 52120\nIGFsdW1uaQ== 52121\nIGhvbmU= 52122\nIHNlY3VyZWx5 52123\nX2Ryb3Bkb3du 52124\nRGlzY2xhaW1lcg== 52125\nIGR6aQ== 52126\nKHRpbWVzdGFtcA== 52127\nJyld 52128\nIGN1bHRpdmF0aW9u 52129\nLi4uCgoK 52130\nIFRyZWF0eQ== 52131\nIERpc3M= 52132\nIGNvbmZsaWN0aW5n 52133\nLmdldFNlbGVjdGlvbg== 52134\nIHBsYXlhYmxl 52135\nIFNpbGs= 52136\nIEVxdWFsaXR5 52137\nIG1veQ== 52138\nIGZsYXR0 52139\nIG1vdGl2ZXM= 52140\nUGVyZmVjdA== 52141\nLmV4aXN0 52142\nIHR3ZWFr 52143\nIG9taXQ= 52144\nIFR3aWxpZ2h0 52145\nIGtpc3Npbmc= 52146\nIGNocmlzdGlhbg== 52147\nKFNF 52148\nX2RlZmluZQ== 52149\nIFBlbmc= 52150\nU29ydGVk 52151\nJ2lu 52152\nTG9ncw== 52153\n4buHbg== 52154\nIG55bG9u 52155\nRHVtcA== 52156\nSW1hZ2luZQ== 52157\ncmVuYW1l 52158\nIGJlZm9yZWhhbmQ= 52159\ncHlnYW1l 52160\nIGJweQ== 52161\nIERq 52162\nIHRpdHVsbw== 52163\nIG5sdGs= 52164\nIFNjaG1pZHQ= 52165\nIENhdg== 52166\nKG9uZQ== 52167\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 52168\nLmdldE1vZGVs 52169\nIFB0 52170\nYXRvaQ== 52171\nLmxvY2Fscw== 52172\nYnVyc2VtZW50 52173\nUHJvdmluY2U= 52174\nIEFwcHJvdmVk 52175\nKCk8PA== 52176\nw7NyaWE= 52177\ndXNjaA== 52178\nIEplbm55 52179\nYXJyYW50cw== 52180\nIExpYmVydA== 52181\nTG9yZA== 52182\nIFJlbW92ZWQ= 52183\nX2NvZGVj 52184\nLmJ1bmRsZQ== 52185\nIEdvbnphbGV6 52186\nb3BlcnM= 52187\nneWni+WMlg== 52188\nZXR0aW5n 52189\nIGdvZGRlc3M= 52190\ncmlwZQ== 52191\nIG11c2N1bGFy 52192\nCQkJCQkJCQkg 52193\nIEh1Z28= 52194\nIG1lam9yZXM= 52195\nbG9pZA== 52196\ncml0ZWxu 52197\nZ2lz 52198\nYWRkb24= 52199\nICgoKCg= 52200\nYXBwb2ludG1lbnQ= 52201\ncmVzZXJ2ZWQ= 52202\nCWZyaWVuZA== 52203\nX2F2YXRhcg== 52204\nQk9PTEU= 52205\nYWhp 52206\nLUVORA== 52207\nIGlmZg== 52208\nw7Ni 52209\nIEJydW5v 52210\ncm93c2FibGU= 52211\nIFBvaXNvbg== 52212\nKGZsYWdz 52213\ndXJ0bGVz 52214\nIEFuaW1l 52215\nIG1pZ3JhbnQ= 52216\nCXN0cmNhdA== 52217\nKHJlcGx5 52218\nIFJlZnVnZQ== 52219\nIEJX 52220\nZWZ1bA== 52221\nJHZhbHVl 52222\nZmVk 52223\nICAgICAgICAgICAgICAgICAgICAgICAK 52224\n6LWE 52225\nKGNt 52226\nIHZ1bG5lcmFiaWxpdGllcw== 52227\nIFsoJw== 52228\nIHVuYmVsaWV2YWJsZQ== 52229\nc3RyaWN0aW9u 52230\nZW50aWV0aA== 52231\nIHByYXlpbmc= 52232\nQ2xhaW1z 52233\nIGthdWZlbg== 52234\nbsOp 52235\nIHBvaXNvbmluZw== 52236\nY29sbGVjdGlvbnM= 52237\nIGluaXRTdGF0ZQ== 52238\nIFNldmVyaXR5 52239\nIGNvbnRlbnRpb24= 52240\nIAoJCg== 52241\nLmNvbnRyb2xsZXJz 52242\nc3RydWN0dXJlZA== 52243\naWN0aW0= 52244\nIE9iZXI= 52245\nIC8qI19f 52246\nX09U 52247\nIEFtZXJpY2Fz 52248\nIEFkYQ== 52249\nUHJvZHV0bw== 52250\nLm11bHRp 52251\nIGdyYXBl 52252\nYmVn 52253\n5p+l6K+i 52254\nIHF1YXJ0eg== 52255\nIFJvbWFuY2U= 52256\nIE1pZHdlc3Q= 52257\nIGhvdXNlZA== 52258\nIGZ1cm5pc2g= 52259\naWNvbnQ= 52260\nLnVuc2hpZnQ= 52261\nb3RyZQ== 52262\nIMO6bg== 52263\naXBwbGU= 52264\nIHN1YnVyYg== 52265\ndWFsaQ== 52266\nVm9pY2U= 52267\nLklzQW55 52268\nLGNvbHVtbg== 52269\nIFByb3NlYw== 52270\nSURB 52271\nCXBvc3Q= 52272\ncHRvbXM= 52273\ndsOp 52274\nIEluZ3JlZGllbnRz 52275\nw7ZmZg== 52276\nLm9wZXJhdG9y 52277\nIDw8PQ== 52278\nbGFzdGlj 52279\nIHJlc2VtYmxl 52280\nVW5hdXRob3JpemVk 52281\nIHR1dHRv 52282\nX1NXSVRDSA== 52283\nX1JFQURZ 52284\nfT0= 52285\nbm93bGVkZ2U= 52286\nIGFwcGVuZGVk 52287\ndW5nYW4= 52288\n4oCZZW4= 52289\nIExvcmVu 52290\ncHVibGlzaGVy 52291\nIE1H 52292\nfSwi 52293\nIFdhbHNo 52294\nVGVtcGxhdGVz 52295\nX3NvY2lhbA== 52296\nIHBhcmlzaA== 52297\nIFNwbA== 52298\nbWluYXRlZA== 52299\nKEZBTFNF 52300\nIGZvcmVmcm9udA== 52301\nbW9kaXR5 52302\nIGJpbGF0ZXJhbA== 52303\nIGNvbXBldGl0 52304\nIGNhbmRsZXM= 52305\nLmRw 52306\nIGNvbGxlY3Rz 52307\ndGVsZWZvbm8= 52308\nIGF0dGVudA== 52309\nIExlbW9u 52310\naXphZGE= 52311\nIHRoZXJhcGllcw== 52312\nIHBhcmFkb3g= 52313\nIHRhcw== 52314\nLXN1Ym1pdA== 52315\nZWtlcg== 52316\nSU5hdmlnYXRpb25Db250cm9sbGVy 52317\nIG1ldGF2YXI= 52318\nIHNld2luZw== 52319\nIFppbWJhYndl 52320\nIGxhd2Z1bA== 52321\nIGxvcmU= 52322\nIExvYWRz 52323\nINGB0L7Qt9C0 52324\nLnByb21pc2U= 52325\nIEZhY2Vz 52326\nLlBsYXRmb3Jt 52327\nLmdldExvY2F0aW9u 52328\nIHRyb3VibGluZw== 52329\nIHbDrWRlbw== 52330\nIEZlYXR1cmluZw== 52331\n5Lqn 52332\ncWVk 52333\nIG9uQmluZA== 52334\nIHRvZGRsZXI= 52335\nQ2xv 52336\nRGl2aXNpb24= 52337\nLWdhbGxlcnk= 52338\nIEdlbGQ= 52339\nc3BlY2lmaWM= 52340\nRmllbGROYW1l 52341\nX2V4Y2Vs 52342\nXGh0ZG9jcw== 52343\nIERW 52344\nICY6 52345\nIHR3aWc= 52346\nIENvbmNlcm4= 52347\nIHNob3RndW4= 52348\nIG5pY2tlbA== 52349\nIEx1eHVyeQ== 52350\nX0tFWVM= 52351\nLm5weQ== 52352\nxa8= 52353\nIGZvcmVoZWFk 52354\nzrI= 52355\nIGVuZGFuZ2VyZWQ= 52356\nL3RoZQ== 52357\ncGlwZWxpbmU= 52358\nxbE= 52359\nbmVv 52360\nRXhwbG9yZQ== 52361\nU3BlY1dhcm4= 52362\nIGludGVyY2hhbmdl 52363\nKHBp 52364\nYmlydGhkYXk= 52365\nRGF0YVJvdw== 52366\nIFNQUg== 52367\nIG9zdGU= 52368\nICJ+ 52369\nYXRpc2ZhY3Rpb24= 52370\nTkg= 52371\nb3Jkbw== 52372\nLWZvY3VzZWQ= 52373\nJ0E= 52374\nlok= 52375\nLmJlc3Q= 52376\nIFNwZWNpZmljYXRpb24= 52377\nLz4uCgo= 52378\nb2dlbmVzaXM= 52379\nIE9QVElPTlM= 52380\ndXB0b29scw== 52381\nIG1pbGl0YW50 52382\nIGV4aXRlZA== 52383\naWdhcg== 52384\nIENPTU0= 52385\nIERpc3Bvc2FibGU= 52386\nYXljYXN0 52387\nIHJvd3NwYW4= 52388\nIHN5bnRoZXM= 52389\nIHNvbmRlcm4= 52390\nIDwhLS08 52391\nIEVuZGU= 52392\nLnZhcmlhYmxlcw== 52393\nIGNvbnNlcXVlbnRseQ== 52394\nc2Rr 52395\nU3VwcGx5 52396\ncmVzcG9uc2l2ZQ== 52397\nT3BlbmluZw== 52398\ncGhvdA== 52399\nIH1c 52400\nIGJ1bGxzaGl0 52401\nIGJlYWNvbg== 52402\nX3NhdA== 52403\nIHNuYXBz 52404\nIEdIeg== 52405\nTE9ORw== 52406\nPHBhaXI= 52407\nIFsKCg== 52408\nIFZlcmc= 52409\nIEVpbmU= 52410\nL3Bvc3Rz 52411\nIGFyYWI= 52412\nIHN1bWE= 52413\n44Oz44OI 52414\nIHNjYXJj 52415\nIG9sZWg= 52416\nID8/Pw== 52417\nIE9mZmVycw== 52418\neGVk 52419\nIGZ1bGxXaWR0aA== 52420\nLWFjdGlvbnM= 52421\nT3V0ZXI= 52422\nIEV4cG8= 52423\nw6lyZXI= 52424\nLkhl 52425\nREg= 52426\nIGhpbA== 52427\nIE1pbGxlbm4= 52428\n0LXQvdGM 52429\nSWNl 52430\nX2dyYXk= 52431\nINC/0L7Qu9GD0Yc= 52432\nIFB1bms= 52433\nIHRpbWV2YWw= 52434\nIGlzYQ== 52435\nIENIdG1s 52436\nLkRhdGFQcm9wZXJ0eU5hbWU= 52437\nIGRpeQ== 52438\ndG91cg== 52439\nIGpUZXh0RmllbGQ= 52440\nIGplbGx5 52441\nIGFra2E= 52442\nLWVyYQ== 52443\nRGVwcmVjYXRlZA== 52444\nX0lNUEw= 52445\nIE1vbnRocw== 52446\nX0lURVI= 52447\nIGFydGU= 52448\nIEhlYWRpbmc= 52449\nIEJvaA== 52450\nIHByYWc= 52451\nIGRvd25zdHJlYW0= 52452\nIEJPQVJE 52453\nX2tleXdvcmRz 52454\nIE1ldHJvRnJhbWV3b3Jr 52455\nKS0o 52456\nPEV2ZW50 52457\n4bqldA== 52458\nIFByZWNpc2lvbg== 52459\nIE1SSQ== 52460\naGVyZW5jZQ== 52461\naXhv 52462\nKSkpewo= 52463\nKCk/Pg== 52464\nIHNhYXQ= 52465\nIFdhcmVob3VzZQ== 52466\nX2F0b21pYw== 52467\nIHZvaWNlZA== 52468\nSXRlbUNsaWNr 52469\nICAgICAgCQ== 52470\nLlJlc3VsdFNldA== 52471\nL3BsdWdpbg== 52472\nIGhhbGxz 52473\nPWZvcm0= 52474\nIFdhZ25lcg== 52475\nZW1haWxz 52476\nJSUK 52477\nVU5LTk9XTg== 52478\nIFJpbQ== 52479\ndWludHB0cg== 52480\nIExpYmVyYWxz 52481\nIHRlcnJpdG9yaWFs 52482\nIE11cmRlcg== 52483\nIExhZGVu 52484\nIHByZXNpZGVudGU= 52485\nKGNhcA== 52486\nIH0sewo= 52487\nYXZvdXJpdGU= 52488\nZmluZEFsbA== 52489\nIGFwcGxhdWQ= 52490\nIOuplA== 52491\nL3Bob3Rv 52492\nX3N5bg== 52493\nLndhbGs= 52494\nIHN1bnNoaW5l 52495\nIHN0dWJib3Ju 52496\nIGRvd25zaWRl 52497\nIExURQ== 52498\nLWJ1aWxkaW5n 52499\nUXVlcnlCdWlsZGVy 52500\nX2Rpc2FibGVk 52501\nVGVycg== 52502\nYWtyYQ== 52503\nUmVmcmVzaGluZw== 52504\nX3Byb2Jz 52505\nIGZvbGw= 52506\nPmI= 52507\nIGNvbGxhdGVyYWw= 52508\nJGVycm9y 52509\nIGFjb21wYW4= 52510\nX2l2 52511\nK2Q= 52512\nYWp1 52513\nIOKd 52514\nc3VybmFtZQ== 52515\nLmFydGljbGU= 52516\nIGJpY3k= 52517\nIjoKCg== 52518\nPjw/PSQ= 52519\n0LrQu9GO0Yc= 52520\nZWNvbWU= 52521\nRmluZGluZw== 52522\nKHBk 52523\nIHJlY3Rhbmd1bGFy 52524\nZXN0bw== 52525\naWhpbA== 52526\nPScnKQo= 52527\nIG1hbnNpb24= 52528\nX2ZpbHRlcmVk 52529\nYW5lZA== 52530\nUFJPRFVDVA== 52531\nTE9HWQ== 52532\nX2ly 52533\nLlJlbW90ZQ== 52534\nIGV4ZWN1dGVz 52535\nb3RlY2hub2xvZ3k= 52536\nIFBST0NFU1M= 52537\nIHJvd0luZGV4 52538\nZ2V0WA== 52539\nTXV0 52540\naW5za3k= 52541\nKHN0cmluZ3M= 52542\nIE1veg== 52543\nRmxvb3I= 52544\nLlN0cnVjdA== 52545\nX3ByZWRpY3Rpb24= 52546\nIGNhcnJpYWdl 52547\nIGNvbGxlY3RvcnM= 52548\nIFdoZWVscw== 52549\nIGJ1bmRsZWQ= 52550\nYXhlZA== 52551\na29s 52552\nX2Nyb3A= 52553\nIGJsb29t 52554\nQmVzaWRlcw== 52555\nIG92ZXJyaWRkZW4= 52556\nIHN1Ym5ldA== 52557\naWVuaWE= 52558\nKj46Og== 52559\nIFByaW1pdGl2ZQ== 52560\nIOag 52561\nLkNoYXJhY3Rlcg== 52562\n6KGo56S6 52563\nIEFESEQ= 52564\nUk9Z 52565\nSmFwYW5lc2U= 52566\nT1VT 52567\nOlVJQ29udHJvbEV2ZW50 52568\nIFBBTA== 52569\naXphY2lvbg== 52570\nIGNoZXJjaGU= 52571\nb3J0aW5n 52572\nIG9yZ2Fz 52573\nLlV0Yw== 52574\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 52575\nXERvbWFpbg== 52576\nT1JB 52577\nIHRlcnJhY2U= 52578\nIHByaXM= 52579\nCQkJCQkJCQkJCg== 52580\nIHJhaWRz 52581\nX2luY3JlbWVudA== 52582\nIHVuanVzdA== 52583\nJG9wdGlvbnM= 52584\nb25DaGFuZ2U= 52585\nQmxvb2Q= 52586\nRmlsbQ== 52587\nIGhhbmRpbmc= 52588\nIG11Zw== 52589\nU09MRQ== 52590\n44OV 52591\naWNvbmR1Y3Rvcg== 52592\nIElzbGFtaXN0 52593\nICIiKTsNCg== 52594\nLW92ZXJsYXk= 52595\nLGNvbA== 52596\n6Zw= 52597\nYXJyaW5ncw== 52598\nX2NvbnRyYWN0 52599\nCWxs 52600\ncGlw 52601\nX2VtYmVkZGluZw== 52602\nIHBlcm1pdGU= 52603\nIG1vZGVt 52604\nIHRyaWdnZXJpbmc= 52605\nKGh3bmQ= 52606\nLiIpXQo= 52607\nIHNhbnQ= 52608\nIGV4dGluY3Rpb24= 52609\nIGNsYXNoZXM= 52610\nLkF1ZGlv 52611\nIHN1bw== 52612\nLm11bHQ= 52613\nIHNlYXNvbmVk 52614\nLlZhckNoYXI= 52615\ncG93ZXJlZA== 52616\nImNvbnRleHQ= 52617\nIG1lbmM= 52618\nKEdyYXBoaWNz 52619\nJHdoZXJl 52620\nIHJlY3VwZXI= 52621\nYWNrbGU= 52622\nIG5ld0RhdGE= 52623\nIEJyZWFraW5n 52624\nZXJnZWQ= 52625\nIENQUFVOSVQ= 52626\nIE11bGw= 52627\nIGtvbW10 52628\nIExlZWRz 52629\nJywnPQ== 52630\nLm5leHRUb2tlbg== 52631\nIFJpZw== 52632\nUkVUVVJO 52633\nCXRpbWVy 52634\nfV97 52635\nIE1hcmluYQ== 52636\nIHNsb2dhbg== 52637\nSVpFRA== 52638\nT3BlbkdM 52639\nX1BhZ2U= 52640\nYXRpdmFz 52641\nIGhhemFyZHM= 52642\nJ3ZhbHVl 52643\nIGNvcnBzZQ== 52644\nIEZsb3dlcnM= 52645\nX29ubGluZQ== 52646\nZGFs 52647\nIENvbGxpc2lvbg== 52648\nw6BuZw== 52649\nIGZlcnJ5 52650\nIHBva2U= 52651\nIFRvdXJpc20= 52652\naW5lcmFyeQ== 52653\nL1NldA== 52654\nLkVtcGxveWVl 52655\nPkA= 52656\nLHZhbA== 52657\nIE1pbGY= 52658\nYXZleg== 52659\nUmV0cnk= 52660\nLiIv 52661\nIHJvdW5kaW5n 52662\nLXBsYWNlbWVudA== 52663\nIGNlcnY= 52664\nTWV4 52665\nIE1zZ0JveA== 52666\nX3Npbms= 52667\nbWFuaWE= 52668\nX2NyZWRpdA== 52669\nR3VhcmRhcg== 52670\nIHZhbml0eQ== 52671\nIGltbXV0YWJsZQ== 52672\nIGNvbnRhbWluYXRlZA== 52673\n0LrQsNC3 52674\n5Liy 52675\nYWNoYQ== 52676\nIGhhdGg= 52677\nIGVudW1lcmF0aW9u 52678\nLmdldEJ5 52679\n4bq/dA== 52680\nIERhbw== 52681\nb2JpZXJubw== 52682\nIEd1dA== 52683\nX1BJUEU= 52684\nLmFkdg== 52685\nIEd1dGVuYmVyZw== 52686\nYWRo 52687\n66y4 52688\nZnVzYw== 52689\nLlZL 52690\ncHRh 52691\nIEVNUA== 52692\nLkZpcnN0TmFtZQ== 52693\nIHJlYWxpemVz 52694\nLmNn 52695\nIHVuaXRl 52696\nUExJVA== 52697\nIEFiZHVs 52698\nIE1FRA== 52699\nUkFJTlQ= 52700\nIHF1ZXN0YQ== 52701\nc3RkaW4= 52702\nIGNhbG9yaWU= 52703\nCWdsQmluZA== 52704\nIGFybWE= 52705\neWxsYW5k 52706\nT01Q 52707\nLXE= 52708\nIEtoYWw= 52709\nc2FsYXJ5 52710\nCUFORA== 52711\nc2dp 52712\nX3RoYW4= 52713\nLWJ1aWx0 52714\nICsvLQ== 52715\nIG5hcmdz 52716\nX2xhdW5jaA== 52717\nIFNR 52718\nem9u 52719\nIEJlbmVk 52720\nX3VuaW9u 52721\nPigpOw0KDQo= 52722\nIFNpbXM= 52723\nIERhdGVz 52724\nCUNvbm5lY3Rpb24= 52725\nIFBlcmM= 52726\nZ3JhbnQ= 52727\nYW1waWw= 52728\nIGFnZ3JlZ2F0aW9u 52729\nZXNlbGVjdA== 52730\nX1NVUA== 52731\nKHsKCg== 52732\nLm9t 52733\nIHdt 52734\nLmNvbnRyYWN0 52735\nLU9yaWdpbg== 52736\nIGdlbWU= 52737\nZnJlZXpl 52738\nTlVNQkVS 52739\nLmN1cnI= 52740\nIEdsYWQ= 52741\nc2xh 52742\nIFJlYg== 52743\n0LXRgdGC0LLQvg== 52744\nYXJib24= 52745\nL2NvbnRyb2xsZXJz 52746\nU2xvdHM= 52747\nLmRlZXBjb3B5 52748\nRlVMTA== 52749\ndWlyZQ== 52750\nQHN0dWRlbnQ= 52751\n4LmJ4Lit 52752\nVHJhbnNsYXRvcg== 52753\nIHByZWZlcmFibHk= 52754\nY2hlbWlzdHJ5 52755\nIEphY29icw== 52756\nbmFy 52757\nICgiXA== 52758\nbmVhcg== 52759\naWZpcXVl 52760\nCWNvbHVtbg== 52761\nIG1pbnV0b3M= 52762\naWdlcw== 52763\nIGVzdGFibGU= 52764\nLWRpc2M= 52765\nKENoYXI= 52766\na292 52767\nZXhhbXBsZXM= 52768\nX18oIg== 52769\nINC60LDQug== 52770\nIEJvcmlz 52771\nKGR4 52772\nc3By 52773\nIG92ZXJoYXVs 52774\nYXRvb24= 52775\nIEhhcmxleQ== 52776\naWNhbWVudGU= 52777\n4paI4paI4paI4paI 52778\nZXZpdHk= 52779\ndXNoZXI= 52780\nLlZpc3VhbFN0dWRpbw== 52781\nV2F2ZQ== 52782\nIE5vcm1hbGx5 52783\nc3Rvb2Q= 52784\nb3JuaW5ncw== 52785\nIGhhbmRtYWRl 52786\nKGxvZ2dpbmc= 52787\nIGNhcmNpbg== 52788\nYWNqYQ== 52789\nIHN1cGVycw== 52790\nIHNpZWdl 52791\nCUlm 52792\nIElMb2dnZXI= 52793\nVUFSVA== 52794\nQW5pbWF0aW9uRnJhbWU= 52795\nIHRhcGVz 52796\nIGFpZHM= 52797\nIENvbG9uZWw= 52798\ndmVlZG9y 52799\nIG1kbA== 52800\ncGhvbg== 52801\nRGlzbWlzcw== 52802\nQXZhaWxhYmlsaXR5 52803\nVW5pZm9ybUxvY2F0aW9u 52804\nIGlkZWFscw== 52805\ncXVldHRl 52806\na2VpdGVu 52807\nIEVNQUlM 52808\nIE5lYg== 52809\nIHN1bW1vbmVk 52810\nIGdvdmVybm1lbnRhbA== 52811\nIEhvcnJvcg== 52812\nY2hhbmdpbmc= 52813\nIEFjdGl2YXRl 52814\nSWxs 52815\nPHRib2R5 52816\nY3JlYXRpdmU= 52817\nIEJMRQ== 52818\nIG1hZG5lc3M= 52819\nT3JOaWw= 52820\nIGhpbg== 52821\nxZM= 52822\nLkdldEtleQ== 52823\nX2NvbnNvbGU= 52824\nIk91cg== 52825\nIGd1aW50 52826\nIGFtaQ== 52827\nIHJlZmxlY3RpdmU= 52828\nIGNyYWNraW5n 52829\nIFJp 52830\nUkFM 52831\ndXJzZWQ= 52832\ncHVyZQ== 52833\nIHJlcGFpcmVk 52834\nIHRpZ2Vy 52835\nIE5pY29sYXM= 52836\nVnM= 52837\nbnRo 52838\nLmV4cHJlc3Npb24= 52839\nIHNlYXM= 52840\nX0FDQ0VQVA== 52841\nIGZvcmM= 52842\nIEZyYXU= 52843\nIHRocmVzaA== 52844\nIM+A 52845\nKEJBU0U= 52846\nX09wZW4= 52847\nV3VudXNlZA== 52848\nIERvbWVzdGlj 52849\nKHByaXY= 52850\nZ3Vlc3M= 52851\nLy8hCg== 52852\nZ2V0SXRlbQ== 52853\nKCkpCgoK 52854\nbXV0YXRpb25z 52855\nIHN0cw== 52856\nIGRlbWVudGlh 52857\nc3Bva2Vu 52858\nJHBhcmFtcw== 52859\nIHBhdHJvbnM= 52860\nIHJ1bndheQ== 52861\nIEJVWQ== 52862\nLldhcm5pbmc= 52863\nIG5ldXRyYWxpdHk= 52864\nemhvdQ== 52865\n0YDQsNGJ 52866\nYWt0ZXI= 52867\nIENvbnN0cnVjdG9ycw== 52868\nw5NO 52869\nIFByb2dyZXNzaXZl 52870\nIEJ1cmdlcg== 52871\nIGluY3VycmVk 52872\nIGltcGxpY2l0bHk= 52873\nX2Vudmlyb25tZW50 52874\nIGV4YWNlcmI= 52875\nIGVuZHVyaW5n 52876\nc2lj 52877\nIFBhcnRpY2lwYW50cw== 52878\nX0Jsb2Nr 52879\nIGVucm9sbA== 52880\nX2VtcGxveWVl 52881\nIFBlcHBlcg== 52882\nbGF1Z2h0ZXI= 52883\n44OW 52884\nJ107Pz4= 52885\nPScu 52886\nKHJlbmFtZQ== 52887\nIHNoZWx0ZXJz 52888\nIEFNQQ== 52889\nX2dhcA== 52890\nIFJFVVRFUlM= 52891\neGFtcHA= 52892\nT01JQw== 52893\nIHBlZGlkbw== 52894\nIGTDqXZlbG9w 52895\nX18oLyoh 52896\nX29k 52897\nd2VyZQ== 52898\nX051bWJlcg== 52899\nX211bHRpcGxpZXI= 52900\nS0VFUA== 52901\nIHNob3dlcnM= 52902\nIG1hZ2U= 52903\nIHNpbm8= 52904\nY3Jvdw== 52905\nLmlkeA== 52906\nX25vdGljZQ== 52907\ndWVpbA== 52908\nIG15cmlhZA== 52909\nIEF2YWlsYWJpbGl0eQ== 52910\nY2VudHJhbA== 52911\nIEFCT1VU 52912\nIGluY29ycG9yYXRpbmc= 52913\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== 52914\nX3dpZGdldHM= 52915\nIHN5c3RlbUZvbnRPZlNpemU= 52916\nw7ZydA== 52917\nL2pwZWc= 52918\nIFNNVFA= 52919\nKGJyb3dzZXI= 52920\nZ3Vucw== 52921\nc2V0dw== 52922\nX0FWQUlMQUJMRQ== 52923\nIGluY29ycG9yYXRlcw== 52924\nL2FuZHJvaWQ= 52925\neXg= 52926\n5biD 52927\nX2xhYg== 52928\nIGxlYWtpbmc= 52929\nIEhpbnQ= 52930\nw7xuY2hlbg== 52931\nLlNjYWxl 52932\nIGZpcmV3b3Jrcw== 52933\nIGxQYXJhbQ== 52934\nYnNk 52935\nYXhvbg== 52936\nKHByZWRpY3Q= 52937\nQ29uZ3JhdHVsYXRpb25z 52938\nIFNwZWN0cnVt 52939\nSVJD 52940\nIEFkbWluaXN0cmF0aXZl 52941\nIGltcHJpc29uZWQ= 52942\nUlNwZWM= 52943\nIHJldGFpbnM= 52944\nIHNldHRsaW5n 52945\nIGNpdGF0aW9ucw== 52946\nIFdvcmxkcw== 52947\nc3RyY29udg== 52948\nb3VzYW5k 52949\nIEJlZ2lubmluZw== 52950\nIEFuZHJld3M= 52951\nIFNoYXJvbg== 52952\nRXhlY3V0aW5n 52953\nZ3JvdXBJZA== 52954\nYWRkRmllbGQ= 52955\nIGV4cGFuZHM= 52956\nIGtpbG9tZXRyZXM= 52957\nbGlua3k= 52958\nIGdycA== 52959\nSU5BVElPTg== 52960\nQnJpdGlzaA== 52961\nIGNvbXBvcnQ= 52962\nLkRhdGFHcmlkVmlld0NvbHVtbg== 52963\nIFByb2R1Y3Rpb25z 52964\naWxkZW4= 52965\nIHVuaXg= 52966\nX2dhbGxlcnk= 52967\nX1BST1ZJRA== 52968\nb3JkZXJpbmc= 52969\nX2Fubg== 52970\nYmg= 52971\nLkRlc2lnbg== 52972\nIHRyZWZmZW4= 52973\nIHVuZGVybGluZQ== 52974\nX251bXM= 52975\n7ZWc64uk 52976\nKXY= 52977\ndXNpemU= 52978\nIGRpc2FwcGVhcmFuY2U= 52979\nVG9Cb3VuZHM= 52980\nIHBjbA== 52981\nIFdpbm5pcGVn 52982\nIFNoZXJtYW4= 52983\nX2xhbWJkYQ== 52984\nbmFudA== 52985\nIHJvb3RWaWV3 52986\nLkZsYWdz 52987\nIGNlbnNvcnNoaXA= 52988\nc2VudGVuY2U= 52989\nLnJlYWRJbnQ= 52990\nX2Fzc2lnbm1lbnQ= 52991\nIHZlcnNjaGllZA== 52992\nIEZyYWN0aW9u 52993\nIG5hdGlvbmFsaXN0 52994\nIGp1ZWdv 52995\nIERlYWxlcg== 52996\nIHByZWRpY3Rpbmc= 52997\nYXVwdA== 52998\naGVsbQ== 52999\nX1BSSUNF 53000\nX0RT 53001\nKCIjew== 53002\nbGlmdGluZw== 53003\nIHBvc2luZw== 53004\nIE5TTXV0YWJsZURpY3Rpb25hcnk= 53005\nIHNtYXNo 53006\nIGFraW4= 53007\nIGNhbXB1c2Vz 53008\nIE91dGxpbmU= 53009\nIEVsYXN0aWM= 53010\nX0NoZWNrZWRDaGFuZ2Vk 53011\nKElFbnVtZXJhYmxl 53012\nc3F1ZWV6ZQ== 53013\ncHR1bmU= 53014\nX0ZST05U 53015\nbWg= 53016\nIOyDneyEsQ== 53017\nUnVuV2l0aA== 53018\nIHR1cm5vdXQ= 53019\nc2libGluZ3M= 53020\nKWU= 53021\nX0FSR1VNRU5U 53022\nIEdyaWRCYWdDb25zdHJhaW50cw== 53023\nX1BPT0w= 53024\nLlJJR0hU 53025\naWdnaW5z 53026\ndGVsZXBob25l 53027\nXEV4dGVuc2lvbg== 53028\nIEFyaXN0 53029\naXR1cg== 53030\nIGZyaWVz 53031\nX2R1cA== 53032\nRXhwYW5kZWQ= 53033\nLXJv 53034\nIFdvcmxkd2lkZQ== 53035\nIENvcms= 53036\nw7Ns 53037\nTGlt 53038\nIGRlbm4= 53039\nUHJldHR5 53040\nIGZ5 53041\nVHJpYW5nbGU= 53042\nRmVhdHVyZWQ= 53043\nKENvbW1vbg== 53044\nX2VmZg== 53045\nICIiDQo= 53046\n4bubaQ== 53047\nX0xJTkVBUg== 53048\nIFJpY2E= 53049\nIGNhZsOp 53050\nIGFwcGVsbA== 53051\nIG5pdmVhdQ== 53052\nICYs 53053\nIGZhYnJpY3M= 53054\nX1BsYXllcg== 53055\nIGh5Z2llbmU= 53056\nIGRpc2FzdHJvdXM= 53057\nIHNoYXJlZEluc3RhbmNl 53058\nX3BpdGNo 53059\ncno= 53060\nZW5tZW50 53061\nTmVhcg== 53062\nX1NUQVRT 53063\nIHN0YWlu 53064\nIEROQw== 53065\nIGlzc3U= 53066\nXks= 53067\nCXRyZWU= 53068\nX2Jsaw== 53069\nc2V6 53070\nbGFpbg== 53071\nYW11 53072\nX293bmVk 53073\nVVNBUlQ= 53074\nLmhhc0NsYXNz 53075\nSVNPTg== 53076\nIGZvZQ== 53077\ndXNoZWQ= 53078\nX1VOU0lHTkVE 53079\nIGluZGV4aW5n 53080\nIEZpcmViYXNlQXV0aA== 53081\nIGxpdGVyYWN5 53082\nIFNVUg== 53083\nIENvbHRz 53084\nYmVjdWU= 53085\nIEludHJv 53086\nIGNoYW90aWM= 53087\nIGFuaQ== 53088\nIEFubmll 53089\nxrDhu50= 53090\nLmR4 53091\nZGlzY29ubmVjdA== 53092\nIGFyY2hpdmVk 53093\nW0xpc3Q= 53094\nPU4= 53095\nLnByZXNlbnRhdGlvbg== 53096\nUmVzdGF1cmFudA== 53097\nIHJvY2tldHM= 53098\nPWh0dHBz 53099\nL29w 53100\nIHB1cnNl 53101\nIEtyaXM= 53102\nIGNvcmFs 53103\nc2V0UGFyYW1ldGVy 53104\nIGlycmln 53105\nUXVlZW4= 53106\nTlNEYXRh 53107\nIHZhc3RseQ== 53108\nLkZpbGVz 53109\nIGZlbWluaXNt 53110\nKFN0cmVhbQ== 53111\nIGF0cmli 53112\nIGxpcXVpZGl0eQ== 53113\nPEZpbGU= 53114\ndHJhZw== 53115\nW2NvbnRhaW5z 53116\nIGhpbmRp 53117\nCWNw 53118\naG9tZXBhZ2U= 53119\nIHN1cnBhc3M= 53120\nIGRheWxpZ2h0 53121\nYXV0aG9yaXpl 53122\nIENvbnNlcXVlbnRseQ== 53123\nQXN5bmNSZXN1bHQ= 53124\nIERpYXJ5 53125\nLlBhdHRlcm4= 53126\nLiovCg== 53127\nZW5zY2hhZnQ= 53128\nIEp1ZGljaWFyeQ== 53129\nQWR1bHQ= 53130\nKCY6 53131\nIGplb3BhcmQ= 53132\nIEJsaXp6YXJk 53133\nIGdn 53134\nIjsvLw== 53135\nWEhS 53136\nIHBhc3N3ZA== 53137\nPn0= 53138\nJyksJw== 53139\nIGNvbXBhcmF0b3I= 53140\nLmNoYWlu 53141\nIGluc3VyZWQ= 53142\nX0VER0U= 53143\nIHR5bGtv 53144\nX01BSk9S 53145\nd2F2 53146\nXEZpbGU= 53147\nRW50cg== 53148\nJ2FwcA== 53149\nIGZvcmdpdmVuZXNz 53150\nCWRzdA== 53151\nIjot 53152\nLm1vbg== 53153\nICgKCg== 53154\nIGNhcGl0YQ== 53155\nIGluaXRDb21wb25lbnRz 53156\nIHN3b3Jkcw== 53157\nIE91dHB1dFN0cmVhbQ== 53158\nIGhlYXJz 53159\nIFNQQUNF 53160\nLWluc3BpcmVk 53161\nX2Jvb3Q= 53162\nLm5vbmU= 53163\nLmdldElucHV0U3RyZWFt 53164\nIGRldmlzZQ== 53165\nIHBlZGlhdHJpYw== 53166\nYW5zaQ== 53167\nX3BhcnRpYWw= 53168\nIHNoYXJk 53169\nIGZ1cmlvdXM= 53170\nIGRyYXdhYmxl 53171\nJSku 53172\nKGVt 53173\nIEJha2U= 53174\nCXBlcnJvcg== 53175\nIFJlbGlnaW91cw== 53176\nLSIr 53177\nCQkJICAgICAgICAgICA= 53178\nIFNlY3JldHM= 53179\nKG5vcm1hbA== 53180\nQUNFUw== 53181\nIFN0b2NraG9sbQ== 53182\nLW5vcm1hbA== 53183\nIGFjY3VzdG9tZWQ= 53184\nIGJvdXRpcXVl 53185\nIFN3aW5n 53186\nIGZpbQ== 53187\nIFBV 53188\nLlNvY2tldA== 53189\nICciJw== 53190\nYW5q 53191\nTWFudWFs 53192\nIG11amVy 53193\nIHBoeXNpb2xvZ2ljYWw= 53194\nY29udGFpbg== 53195\nTWVyZ2U= 53196\nIHN1YXM= 53197\nICd7Ig== 53198\nbmVnbw== 53199\nIHN1YnNjcmliZWQ= 53200\ndG9hc3Q= 53201\nX1ZFUkJPU0U= 53202\nIGtuaXQ= 53203\nIEFydGlzdHM= 53204\nIGhlYXJ0YmVhdA== 53205\nIGZpcmVmaWdodGVycw== 53206\nc3Nh 53207\nW3s= 53208\nIHVuZGVyc2NvcmU= 53209\nIGhpc3Rvcmllcw== 53210\naWdtb2lk 53211\nRmllbGRWYWx1ZQ== 53212\nVG9BZGQ= 53213\nLkNv 53214\nIEhhcm9sZA== 53215\nQXZvaWQ= 53216\naWdoYm91cnM= 53217\nb3JkZQ== 53218\nIHRydXRocw== 53219\nL2Fs 53220\nIHdpcmVk 53221\nIEl0YWxpYQ== 53222\nIHNlcnZpY2lvcw== 53223\nIEFVRElP 53224\nICciKw== 53225\nIHB1bXBpbmc= 53226\nIENsZW1lbnQ= 53227\nw4NP 53228\n5Y6f 53229\nPm4= 53230\nIHN0clNxbA== 53231\namRiYw== 53232\n4oE= 53233\nCVNFVA== 53234\nIEJVRkZFUg== 53235\nOi8vIg== 53236\nIGNpcmN1bXN0YW5jZQ== 53237\nVUlUYWJsZVZpZXdDZWxs 53238\nLnZlcnRpY2Fs 53239\nIEpvaG5z 53240\ndG9saXN0 53241\nIGRyaXZld2F5 53242\nIGxlYXJuZXJz 53243\ndG9iZXI= 53244\nd2lubmVy 53245\nLXlvdXI= 53246\nLnN0YXRlcw== 53247\nSE0= 53248\nIGdyYWRpZW50cw== 53249\nIHNlaXp1cmU= 53250\nIG1hdGVy 53251\nIGRldGFs 53252\nIFJlZHVjZQ== 53253\nKG1vdXNl 53254\nIFJlU2hhcnBlcg== 53255\nLXJvdXRpbmc= 53256\nINi0 53257\nIGpvaW50bHk= 53258\nIEZhbWls 53259\nPE1lc3NhZ2U= 53260\nZXhwaXJl 53261\nX3RyYWRl 53262\n4oCmLi4= 53263\nIEZVTkNUSU9OUw== 53264\nIHhlbg== 53265\nIHt9Ow== 53266\nRmFi 53267\nIGZlYXN0 53268\nKERi 53269\nRmlyc3RSZXNwb25kZXI= 53270\nxLFsxLE= 53271\nIG1heFZhbHVl 53272\nIC06 53273\nYXB0aWM= 53274\nLkdzb24= 53275\nIFJvdmVy 53276\nX2Nu 53277\nbG91ZA== 53278\nIGNoYW1iZXJz 53279\nINC30LDQtA== 53280\nLmZvcmVhY2g= 53281\nLmdldEVtYWls 53282\n55+l 53283\nLk5vZGVz 53284\nIFZX 53285\nIFdhaXRpbmc= 53286\nKFF0Q29yZQ== 53287\nIHPDs2xv 53288\ncnE= 53289\nYW5ndWFyZA== 53290\nIHJlc2VtYmxlcw== 53291\nOltb 53292\nIGdlZA== 53293\nX0VQ 53294\nKEFjdGl2aXR5 53295\nIElzbg== 53296\nIENydXNoZXJz 53297\nX1JVTlRJTUU= 53298\nCW9wZW4= 53299\nIEhpZ2hsaWdodHM= 53300\nw6lyYXRpb24= 53301\nIHllbGxpbmc= 53302\nIExJR0hU 53303\nUGhvdA== 53304\ndmVuZ2U= 53305\nIFN1c3A= 53306\nIENocg== 53307\nLkRpc3RhbmNl 53308\nYXJzaW1w 53309\nbGljYXM= 53310\nLk1vbg== 53311\nIHN1Y2tlZA== 53312\ncHJpbnRlZA== 53313\nbXV0ZQ== 53314\nIHNldEVycm9y 53315\nLk9wdGlvbg== 53316\nIGltcGFpcm1lbnQ= 53317\nbm9pc2U= 53318\nIHBhcnRuZXJlZA== 53319\nw40= 53320\nZGVucw== 53321\naWN6 53322\nIHdhaXRGb3I= 53323\nIG92ZXJsb29raW5n 53324\nIEZPUk1BVA== 53325\nIFRTdHJpbmc= 53326\nIHJlbnRpbmc= 53327\nCWNvbXBvbmVudA== 53328\nLkZyZWU= 53329\nIExhdW5jaGVy 53330\nPWRhdGU= 53331\nIFBvZHM= 53332\nQUdNRU5U 53333\nQ29kaWdv 53334\nQml0RmllbGRz 53335\nIHViaXF1 53336\nLWNhcm91c2Vs 53337\nIFNpbXVsYXRvcg== 53338\naW5vZGU= 53339\nJ10pewo= 53340\nIEJhZ2hk 53341\nIG5vcnRod2VzdA== 53342\naHRha2luZw== 53343\nPCY= 53344\nIHRyYW0= 53345\nIGZvcndhcmRlZA== 53346\nIGVycm9yTXNn 53347\nX0FTU0lHTg== 53348\nIEVudGl0aWVz 53349\nLlBhcnQ= 53350\ncmVhdHVyZQ== 53351\nKFVyaQ== 53352\nIERyaXZpbmc= 53353\nIGludmFzaXZl 53354\naWdyYXRpb25CdWlsZGVy 53355\nb3NhdXJz 53356\nCXBvcnQ= 53357\nIGJyYW4= 53358\naXR0aW5ncw== 53359\nRG9vcg== 53360\nIHsl 53361\nKGxpbWl0 53362\nIHNxdWFyZWQ= 53363\nIERJU1BMQVk= 53364\nLkFjY2VwdA== 53365\nLmJhc2VVcmw= 53366\nLkVudGVy 53367\nIC4uLikK 53368\nIG93bA== 53369\nIHNsYXRlZA== 53370\nLmZlY2hh 53371\nX1NFRw== 53372\nPXsk 53373\nIE9OTElORQ== 53374\nT05Z 53375\nINC00LDQvdC90YvRhQ== 53376\nb250ZQ== 53377\nX0NMSUNL 53378\nU2E= 53379\nSW1wb3J0YW50 53380\nIGNhcm91c2Vs 53381\nIGFwcGVhbGVk 53382\nIE5pZQ== 53383\nL2Jvb2s= 53384\nW10+KA== 53385\nIHhtYXg= 53386\nIGxhbmdl 53387\nLlN1cHByZXNz 53388\nIFRoaW5raW5n 53389\nQWRkcmVzc2Vz 53390\nIFNhbGx5 53391\nLVRW 53392\nIENoYXJsZXN0b24= 53393\nKSIKCg== 53394\nIHRhbGx5 53395\nIHVsbA== 53396\nIGxvY2FsZXM= 53397\nZXdhbg== 53398\nIGluY3JlbWVudGFs 53399\n65Cc 53400\nIGNhcmV0 53401\nanVyZQ== 53402\nIGRvcg== 53403\nIGxvY2FsaXphdGlvbg== 53404\nIHNlYWZvb2Q= 53405\nIFJ1YmJlcg== 53406\nLlRoZXJl 53407\nIEZpc2hpbmc= 53408\nWVlZ 53409\nbWFnZQ== 53410\nIEZsZXhpYmxl 53411\nIEdFTkVSQUw= 53412\nZWth 53413\nIHRocml2aW5n 53414\nIHNpcw== 53415\nIGJvdXJnZW9pcw== 53416\nRmFrZQ== 53417\nLFwi 53418\nINC+0LQ= 53419\nQ09S 53420\nLWVmZmVjdGl2ZQ== 53421\nIHNrdQ== 53422\nZWRseQ== 53423\nIyMKCg== 53424\nIEhvbGx5 53425\nIEZMQVNI 53426\nL1RS 53427\nLm5z 53428\ncHJvYmU= 53429\nZ2lmdA== 53430\nb3dpdHo= 53431\nLW5hdmJhcg== 53432\nIHNhY2s= 53433\n57qn 53434\nIFRocmVhdA== 53435\nWkE= 53436\nWE0= 53437\nJyksCgo= 53438\nIExMVk0= 53439\nYXN6 53440\nRWRpdGVk 53441\nV2l0aFN0cmluZw== 53442\nU2lsdmVy 53443\neW5h 53444\nX3JlbmRlcmVy 53445\nCURFQlVH 53446\nKG9wZXJhdGlvbg== 53447\nIFNsb3Rz 53448\nIEF1YnVybg== 53449\neGVj 53450\nIGhvbW9zZXh1YWxpdHk= 53451\nLlJlc3RDb250cm9sbGVy 53452\nZXJzaXZl 53453\nIHByb2ZpbA== 53454\nIE15YW5tYXI= 53455\ncm9zc2U= 53456\nX0lSUW4= 53457\nIHNlbmRNZXNzYWdl 53458\nIHRlY2huaWNpYW5z 53459\nIG1hbmU= 53460\nY29tbW9ucw== 53461\nIHNocmVkZA== 53462\nQm9vc3Q= 53463\nIHN5bXBhdGhldGlj 53464\nLWVmZg== 53465\nIENlcnRhaW5seQ== 53466\nIHfDpGg= 53467\nIFJvY2hlc3Rlcg== 53468\ndWNjaQ== 53469\ndXJt 53470\nZW1wb3I= 53471\nICIiOgo= 53472\nLXNwYWNpbmc= 53473\nIHNpeHR5 53474\nIOKckw== 53475\nX3JlcG9ydGluZw== 53476\nV2ls 53477\nb3lv 53478\nIGRpZFNlbGVjdA== 53479\nLmdldExvbmc= 53480\nLnNldEVycm9y 53481\nX25j 53482\nIERvbmc= 53483\nCWFzeW5j 53484\nIEhpZ2hseQ== 53485\nXToNCg== 53486\nTGVha3M= 53487\nLC4uLgo= 53488\ndmFsdWF0b3I= 53489\nZGljdGlvbnM= 53490\nb3hlbA== 53491\nIGdlc3R1cmVz 53492\nPSI/ 53493\nYmFncw== 53494\nIFJlbGllZg== 53495\nc3Vic2V0ZXE= 53496\nKG5hbWVzcGFjZQ== 53497\nfXw= 53498\nIG1pY3JvYmk= 53499\nIHB1cml0eQ== 53500\nY2hpbw== 53501\nfT8= 53502\nX01VVA== 53503\nX2FjdGl2YXRpb24= 53504\nIFBpcmF0ZXM= 53505\nICUj 53506\naWZpY2FjacOzbg== 53507\n5Ys= 53508\nIE5SQQ== 53509\nw6dvbg== 53510\nfSkoKTsK 53511\nIENoZXN0ZXI= 53512\n4oCT4oCT 53513\nZ2V0Q29ubmVjdGlvbg== 53514\nLmFyZ3VtZW50cw== 53515\nRmV0Y2hpbmc= 53516\nIEZyeQ== 53517\nIERpdA== 53518\nIHppY2g= 53519\ncGFzdA== 53520\nLWxpYnJhcnk= 53521\nIEhheWVz 53522\nIGJvdW50eQ== 53523\nIFNwcmluZ2ZpZWxk 53524\nUE9S 53525\nIEFQUg== 53526\nIEVtYmFzc3k= 53527\nUVVFU1RJT04= 53528\nIFNvbGRpZXI= 53529\nZXJ0YXM= 53530\nIE5PUk1BTA== 53531\nIGR1cw== 53532\nYm9sdA== 53533\nIGRvcnQ= 53534\nIExpZnQ= 53535\nIGdldFJhbmRvbQ== 53536\nLlJ1bldpdGg= 53537\nLCksCg== 53538\nIHZhcmFyZ2lu 53539\nIGhhbmRsZUNsaWNr 53540\nXEh0bWw= 53541\nIGhvbW1lcw== 53542\nY2lkYWRl 53543\nKGVw 53544\nSmE= 53545\nL2RpYWxvZw== 53546\nLnJhdGU= 53547\nIFdlaQ== 53548\nZnVsbHNjcmVlbg== 53549\nIE5Vbml0 53550\nLm1lYXN1cmU= 53551\nVmFscw== 53552\nIFNpZ25lZA== 53553\nIHJ1cw== 53554\nIHJhZnQ= 53555\nIEJsb25kZQ== 53556\nIG5ldHM= 53557\nIE1ldHJpYw== 53558\naWNoVGV4dEJveA== 53559\nIHVyZQ== 53560\nIGludGVycmFjaWFs 53561\nICd9Cg== 53562\nKHN0b3JhZ2U= 53563\nSW50ZWdyYXRpb24= 53564\nIGJhbmNv 53565\nQVNZ 53566\nIGppbnQ= 53567\nIGRlZ3JhZGF0aW9u 53568\nIEhBTkQ= 53569\ndWVyZG8= 53570\nPScn 53571\nIHN0cm9rZXM= 53572\ncmV3cml0ZQ== 53573\nKFNldA== 53574\nIE1hdERpYWxvZw== 53575\nIGRvc3NpZXI= 53576\nCWFuZA== 53577\nQURESU5H 53578\nIG11dHVhbGx5 53579\nIHByZWNlZGVk 53580\nfX07Cg== 53581\nIHN1YnR5cGU= 53582\nIHJlc29sdmluZw== 53583\nIGdlb21ldHJpYw== 53584\nW2NvbHVtbg== 53585\nIENUUkw= 53586\nIEhM 53587\nIGRhaA== 53588\nICg7Ow== 53589\nUmFpbHM= 53590\nw5w= 53591\nIEdlbmVyYXRlcw== 53592\nLUxlbmd0aA== 53593\ncGVkbw== 53594\nb2dlbm91cw== 53595\nIFJvYmVydHNvbg== 53596\nLkJvb2w= 53597\nb2RlcnM= 53598\nX0FHRU5U 53599\ncGFzc3dk 53600\nIE5vZGVz 53601\nLmJp 53602\nIFdC 53603\nIHByb3BoZXQ= 53604\nc2xhdmU= 53605\nIOW8 53606\nIHdlaWw= 53607\nJTwv 53608\nIGNhcmJz 53609\n5rC0 53610\nIGV4cHJlc3NseQ== 53611\nXHhk 53612\nLWV5ZWQ= 53613\nIENyZWF0dXJl 53614\nY29udGFpbmVk 53615\nKFNJRw== 53616\nIEVuaGFuY2VtZW50 53617\nIENvcnM= 53618\nR2Fs 53619\nX1NJR05BTA== 53620\ncmVpbnRlcnByZXQ= 53621\nIFFQdXNoQnV0dG9u 53622\nX05vbmU= 53623\nIGdlbm9jaWRl 53624\nIFNlYWw= 53625\n5LiK5Lyg 53626\nKHBlcg== 53627\n0LvRjNGC 53628\nIMOgcw== 53629\nLlRlbXBsYXRl 53630\nICkNCg0K 53631\nLnNpbmdsZXRvbg== 53632\nCXNsZWVw 53633\nIHNwYXduZWQ= 53634\nIHBvc3Nlc3Npb25z 53635\nZ2V0Q29uZmln 53636\nIHRhaQ== 53637\nbHVkZQ== 53638\nIE1ldGVy 53639\nIGJpYmxpY2Fs 53640\nbWFyc2hhbGxlcg== 53641\nLlRvb2xraXQ= 53642\nIExlc2JpYW4= 53643\nLnNtYXJ0 53644\nIGJveWNvdHQ= 53645\nIGZyeQ== 53646\nLWRlc2M= 53647\nX1NlcnZpY2U= 53648\nIG1hY2h0 53649\nIENhaXJv 53650\nw6Bp 53651\nX3ByZXZpb3Vz 53652\nLnRyYW5zcG9ydA== 53653\nTWVkaWNhbA== 53654\nQ0dQb2ludA== 53655\nUVVBUkU= 53656\nIGJyaWdodGVy 53657\nIGNoZWNrQm94 53658\nIEZPVU5E 53659\nLmJyYW5jaA== 53660\nIGJsYWg= 53661\nIFByZWx1ZGU= 53662\nT2ZmbGluZQ== 53663\nTGlzdGluZw== 53664\nLyoqLyou 53665\nIEpS 53666\ncGhhbnRz 53667\nZ2V0WQ== 53668\nLkZpbmRDb250cm9s 53669\nIi4uLg== 53670\n0LrQtQ== 53671\nSFJFU1VMVA== 53672\nIGNoZWNrbGlzdA== 53673\nKGFzdA== 53674\nIGJvcnJvd2luZw== 53675\n4oCmYW5k 53676\nINCX 53677\nIHByb2N1cmVtZW50 53678\nLXRhc2s= 53679\nX2hhbA== 53680\nUGxheWxpc3Q= 53681\nLnN0YXI= 53682\nX1NVUFBPUlRFRA== 53683\nQVNN 53684\nJUE= 53685\ncmVzdHJpYWw= 53686\nINC40YHQvw== 53687\nIHBhZ2Vy 53688\nIERpYWJldGVz 53689\nIE1haGFy 53690\ndGFu 53691\nQWN0dWFsbHk= 53692\nPi8v 53693\nIFhW 53694\n4KeN 53695\nIHNlamE= 53696\nLnZpc3VhbA== 53697\na2tlcg== 53698\nXTsKCgo= 53699\nIHR5cGVOYW1l 53700\nLkJ1dA== 53701\nQ2xpZW50UmVjdA== 53702\naWNhbHM= 53703\nIERqYW5nbw== 53704\nIFJhcGU= 53705\nIHBheWRheQ== 53706\nKHJlc291cmNlcw== 53707\nLmJpeg== 53708\ndG9p 53709\nKFJ1bnRpbWU= 53710\nIER5bmFtaWNz 53711\nIEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24= 53712\nKHR5cGVz 53713\nIFRhYnM= 53714\nLk1pZGRsZUxlZnQ= 53715\neGFi 53716\nIF8o 53717\nIERyZWFtcw== 53718\nX0dyb3Vw 53719\nKGNvcg== 53720\nTGVhZGVy 53721\nIGdyYWR1YWw= 53722\nKEJpZ0RlY2ltYWw= 53723\nIHRleHRhcmVh 53724\nbGV0aW9u 53725\nIEZpbmlzaGVk 53726\nIFBvbGU= 53727\nIHRhcHBpbmc= 53728\nJig= 53729\nIGZsaXJ0 53730\nIHRlcnJpZmllZA== 53731\nIHBhZHk= 53732\nZXJlZw== 53733\nZWxkb20= 53734\nIHN0YXRpb25hcnk= 53735\nIHBvbnk= 53736\nIFJFR0lTVEVS 53737\nX2FjY2Vs 53738\nIEhlcno= 53739\nIG1hdHJpeg== 53740\nIENhZg== 53741\neGFj 53742\nYXNjdXM= 53743\nIGVubGFyZ2U= 53744\nQUNIRUQ= 53745\neXl2YWw= 53746\nIHNpYw== 53747\nIENhbmFs 53748\nOnY= 53749\nPT8s 53750\nIEltcHJvdmVtZW50 53751\nP30iLA== 53752\nTlNPYmplY3Q= 53753\nIGVzY2FwaW5n 53754\nIE51bGxhYmxl 53755\nIGjDpA== 53756\nd2FudA== 53757\nRWxpbWluYXI= 53758\nIENMTG9jYXRpb24= 53759\nIHJldXNlSWRlbnRpZmllcg== 53760\nQnVmZmVyU2l6ZQ== 53761\nw59lcg== 53762\nIEFza2Vk 53763\nJ11dLAo= 53764\nIHNoaWVsZHM= 53765\nZ3JhbmQ= 53766\nIFRvd25zaGlw 53767\nIFB1Yk1lZA== 53768\nZWN0bA== 53769\nZml2ZQ== 53770\nIFJlYWN0aXZlRm9ybXNNb2R1bGU= 53771\nIEdMZW51bQ== 53772\nRGFy 53773\naWZhY2U= 53774\nLWluZGVudA== 53775\nRm9ybXVsYQ== 53776\nLnNuYXBzaG90 53777\nQ09NUEFSRQ== 53778\nIGJlbHRz 53779\nCWNhY2hl 53780\nbGRhdGE= 53781\nIGVkYWQ= 53782\nIEJPWA== 53783\nKGNhcnQ= 53784\nX0xBWU9VVA== 53785\nIGZmbHVzaA== 53786\nIExPUw== 53787\nIFNvcnRlZA== 53788\nLnNsaWRl 53789\nIHRpamQ= 53790\nIFRleGFucw== 53791\nIFB1cmNo 53792\nIExldmVscw== 53793\nIHNlbWFudGljcw== 53794\nIFRlaHJhbg== 53795\nYm1w 53796\nLnVybGVuY29kZWQ= 53797\nX3hsYWJlbA== 53798\nKGd1bHA= 53799\nIEJ1dHRvbnM= 53800\nIEJyb2tlcg== 53801\n55uR5ZCs 53802\nJGVtYWls 53803\n2ZA= 53804\nIGNsYXNzaWNz 53805\nY29tcG9zZQ== 53806\nKGJz 53807\nIHVuaGVhbHRoeQ== 53808\nRXhlcmNpc2U= 53809\nY3JldHM= 53810\nIFBhcnM= 53811\nIERldGVybWluZXM= 53812\nYWZvcnQ= 53813\nKG9icw== 53814\nIG5hc3Q= 53815\nIGlocmVu 53816\nIHJveWFsdHk= 53817\nc2VyaWFsaXplcg== 53818\naWV1eA== 53819\nICAgICAgICAgICAgICAgICAgICAgIAo= 53820\nZXhlY3V0aW9u 53821\nIHZpZXdDb250cm9sbGVy 53822\nIHJlcHJv 53823\nLnBl 53824\nIGNhcGl0YWxpemU= 53825\n5Ye7 53826\nIHR1bm5lbHM= 53827\nLkRBVEE= 53828\ncGlyaXQ= 53829\nQ29sbGVjdGlvbnM= 53830\nKX19 53831\nIE9E 53832\nIGZ1enp5 53833\nSW1tZWRpYXRl 53834\nbGo= 53835\nOz8+Ig== 53836\nW3Zhcg== 53837\nIHZvbGF0aWxpdHk= 53838\ncmVnbG8= 53839\nIHByb2xpZmVyYXRpb24= 53840\nIG9yYWNsZQ== 53841\nIEN2 53842\nIG51bmNh 53843\nUFJJTlRG 53844\nIGJyZWFrcG9pbnQ= 53845\nLkVO 53846\nIGJlc3Rlbg== 53847\nIHJlYmVsbGlvbg== 53848\nUGF1c2Vk 53849\nIGZsb3du 53850\nIHZpY2luaXR5 53851\nd3JpZ2h0 53852\nLGNw 53853\naXNjaW5n 53854\nb3VjaGVycw== 53855\nQXNo 53856\neWFy 53857\nIEVq 53858\ncmVwcmVzZW50ZWQ= 53859\nb2RpYw== 53860\nLmNyb3Nz 53861\nIGNyZWF0aW9ucw== 53862\nIFBhYmxv 53863\nZmVzdA== 53864\nIEhpbHRvbg== 53865\nUmVwb3J0ZXI= 53866\nIERpbA== 53867\naWxlbmFtZXM= 53868\nIGV4cGVuZGl0dXJlcw== 53869\nX0VESVRPUg== 53870\nIEFyaWFs 53871\nIHBsdW5n 53872\nIHVubmFtZWQ= 53873\nT3JFbHNl 53874\nIHJlY3JlYXRl 53875\nIEhlYXJ0cw== 53876\nPmFsZXJ0 53877\nLmdldFBhc3N3b3Jk 53878\nIE11c3Rhbmc= 53879\nVks= 53880\nIGFjY29tcGxpc2htZW50cw== 53881\nQXBwZW5kaW5n 53882\nIENheQ== 53883\nIFVzZXJNb2RlbA== 53884\nIHN1YnN5c3RlbQ== 53885\nTGVnYWw= 53886\neW5jaHJvbml6ZQ== 53887\nX1BFUk1JU1NJT04= 53888\nIEFwYXJ0bWVudA== 53889\nbGlnZQ== 53890\nIGFmZmlsaWF0aW9u 53891\nKERFQlVH 53892\nVHM= 53893\nIENvbG9yaW5n 53894\nIFdvaG4= 53895\nbmljZQ== 53896\nKGxpc3Rh 53897\n4LE= 53898\ncGxveW1lbnQ= 53899\n44G+44Gf 53900\n5aW9 53901\nc3Vic3Q= 53902\nJ11dWyc= 53903\nYWJvbA== 53904\nPSdf 53905\n4KeN4KY= 53906\nb3JwaGlzbQ== 53907\nLmxpdGVyYWw= 53908\nIFBsdWc= 53909\nIG13 53910\nb21hbA== 53911\nICInIiw= 53912\ndXNp 53913\nIHNpZ2hlZA== 53914\naWN1bHR1cmFs 53915\nLios 53916\nIFByb3N0aXQ= 53917\nKGNvbnNvbGU= 53918\nSVBMRQ== 53919\nIFRyYXA= 53920\nWFI= 53921\nIEVkaXRvckdVSUxheW91dA== 53922\nX3ZvY2Fi 53923\nIGluY29tcGF0aWJsZQ== 53924\nIHVuY29uc3RpdHV0aW9uYWw= 53925\nLWxh 53926\nIGVyb3RpcXVl 53927\nIGRlcHV0aWVz 53928\ncXVpc2l0aW9ucw== 53929\nbmV3VmFsdWU= 53930\nYWRpYQ== 53931\nIGh3bmQ= 53932\nZ2luZ3M= 53933\nIFZhcw== 53934\nIEluY3JlbWVudA== 53935\nIEZsaW50 53936\nYW1iaWE= 53937\nX1BvaW50 53938\nLWRpc3BsYXk= 53939\nIEZ1bm55 53940\nLnRvYXN0 53941\nLmRhcms= 53942\nQmluZGluZ3M= 53943\nIGRlc2NyaXB0aXZl 53944\nYXJlbmQ= 53945\nLlJldA== 53946\nIHJlY3Vyc2l2ZWx5 53947\nIE1r 53948\nIFRJTEU= 53949\nLmNyZWF0ZVRleHROb2Rl 53950\nIFJBVw== 53951\nIGluZmx1eA== 53952\n54mp 53953\nVG9r 53954\nLWJvYXJk 53955\nUmVjb3JkaW5n 53956\nU3RyZW5ndGg= 53957\nIHJhaW5mYWxs 53958\nKGRk 53959\nLmZ4bWw= 53960\nbmV0cw== 53961\nLkltYWdpbmc= 53962\nIEJJT1M= 53963\nXSsi 53964\nT0U= 53965\nIHJlc2lkZW5jeQ== 53966\nWkU= 53967\nV0I= 53968\nLnNwYW4= 53969\nX2RlZmluZWQ= 53970\nQk9U 53971\nPm51bGw= 53972\nZm9ybURhdGE= 53973\nQ3BwTWV0aG9kSW5pdGlhbGl6ZWQ= 53974\nX1VTRVJT 53975\nIE5vdmVs 53976\naW5za2k= 53977\nPntA 53978\nZXR0bw== 53979\nbmF0dXJhbA== 53980\nIFN0cmljdA== 53981\nOnc= 53982\nLnNhZmU= 53983\nIHRvd2Vscw== 53984\n4bqtdA== 53985\nLmdzdWI= 53986\n66M= 53987\naW5xdQ== 53988\nIGFpZGVz 53989\nIGluY29t 53990\nZ2V0dGVy 53991\nIHdhc2hlcg== 53992\nYWN0b3JpZXM= 53993\nIGdldHRlcnM= 53994\nbWl0ZQ== 53995\nX3NvdXJjZXM= 53996\nIGhhcm1sZXNz 53997\nIHVub3M= 53998\ncHJlaGVuc2l2ZQ== 53999\nIG5vZG8= 54000\nIGdlb2dyYXBoaWNhbA== 54001\nIFNlbGVjdExpc3Q= 54002\nLlNjcmlwdA== 54003\nLkVudW1z 54004\nIEVOVEVS 54005\nd2FsZA== 54006\nIEJhcm9u 54007\nIHBhcnRpY3Vs 54008\nLmN1cnJlbnRQYWdl 54009\nQFRyYW5zYWN0aW9uYWw= 54010\nW2xpbmU= 54011\nCWRlcw== 54012\nSmFzb24= 54013\nLmdldENvdW50 54014\nIFBlbm55 54015\nIFBheWxvYWQ= 54016\nc2hhcnA= 54017\nW3JpZ2h0 54018\ndmVudGE= 54019\nIGFwbA== 54020\nIHByb2R1aXRz 54021\nIG90dA== 54022\nVHJhY2tz 54023\nLkFuZHJvaWQ= 54024\nIHNpbGljb25l 54025\nIEVMU0U= 54026\nYW5pbWF0aW9ucw== 54027\ndWx0dXJlSW5mbw== 54028\nIGJsdWVwcmludA== 54029\nb2ZzdHJlYW0= 54030\nIFtdW10= 54031\nIFNlcnZl 54032\nIHRyaWc= 54033\nCXNlcnZpY2U= 54034\nIFN0cmF0 54035\nIFNhdmFnZQ== 54036\nIG9ianM= 54037\nIE5vdGlmaWNhdGlvbnM= 54038\nLHBvcw== 54039\nVGhpbmc= 54040\nIFJCSQ== 54041\nb3BhdGh5 54042\nIG5hdWdodHk= 54043\nbGJz 54044\nZXByb20= 54045\nPiIu 54046\nIHBpb25lZXI= 54047\nIGphcGFuZXNl 54048\nQXVk 54049\nIGFsbGV5 54050\nIFBldHNj 54051\nJ10/Pg== 54052\nIEtpbGxlcg== 54053\nLmdldEFic29sdXRlUGF0aA== 54054\nX2NhcHM= 54055\nxas= 54056\nIHN1YnN0cmF0ZQ== 54057\nLmFzc2VydElu 54058\n7JWE 54059\nIHRoeXJvaWQ= 54060\nIERlbHV4ZQ== 54061\nIGZhY3RvcmlhbA== 54062\nIHByZXNzZXM= 54063\nIEFjY29t 54064\nPW9wZW4= 54065\nLmdldFM= 54066\nIGV4cGxvcmVy 54067\nIHJlc2lkZXM= 54068\nQXNzb2NpYXRlZA== 54069\nIHRyYW5zZm9ybWF0aW9ucw== 54070\nVHU= 54071\nIFJpY2hhcmRz 54072\nX2JpcnRo 54073\nPSN7 54074\nLXNwZQ== 54075\nKG5k 54076\nIHZpc3VhbHM= 54077\nX3N0YW1w 54078\nIHRlcm1pbmFscw== 54079\ncm91dGluZQ== 54080\nKioqLwo= 54081\nIEphYg== 54082\nS0w= 54083\nQ29udHJpYg== 54084\nIHNvdXRod2VzdA== 54085\nIFBlcA== 54086\nCWVudGl0eQ== 54087\nIGxpbmVy 54088\nLlN0YXR1c09L 54089\nIFNjaHVs 54090\nKENM 54091\nIG1pam4= 54092\nYXN0b3M= 54093\nX2RpZ2VzdA== 54094\nIHBlcnNpc3RlZA== 54095\nLWNvbnRhY3Q= 54096\nIG9kb3I= 54097\nIGRpc2NvdmVyaWVz 54098\nX0ZJRUxEUw== 54099\nRmx5 54100\nIHJ6 54101\nIExpc3Rh 54102\nUmVzZXJ2ZWQ= 54103\ndGF4b25vbXk= 54104\nKXNlY3Rpb24= 54105\nLyIpCg== 54106\nL3JlcXVlc3Q= 54107\nIHNvbWVkYXk= 54108\nY2l0aWVz 54109\nL2ZpcmU= 54110\nIG9iamVjdGlvbnM= 54111\nCURFQ0xBUkU= 54112\nLm5hdmlnYXRpb25JdGVt 54113\nLnNldGRlZmF1bHQ= 54114\ncmV0dXJuVmFsdWU= 54115\nVUNDRUVERUQ= 54116\nIG9ibGlnZWQ= 54117\nIFFhZWRh 54118\nIGh5c3Rlcg== 54119\nZXN0aGVz 54120\nZGlzdGluY3Q= 54121\nw6B5 54122\nIENvbWJv 54123\nCXNm 54124\nIOKK 54125\nIGRpc2NyZXBhbg== 54126\nIGluc2lnbg== 54127\nIFJFU1VMVFM= 54128\nIFZhbGlkYXRpb25FcnJvcg== 54129\nIEh0dHBSZXNwb25zZVJlZGlyZWN0 54130\nCVFTdHJpbmc= 54131\nIGF1dG9mb2N1cw== 54132\nRHVy 54133\nIFJFTEVBU0U= 54134\nLWRvbGxhcg== 54135\nLkNvbW1pdA== 54136\nIGtow7RuZw== 54137\nIGxhdW5kZXI= 54138\nLj0i 54139\nIOaWhw== 54140\nIGJ5ZQ== 54141\nLkdldEtleURvd24= 54142\nIGdpbw== 54143\nX3NpZA== 54144\nIGdxbA== 54145\nLmNt 54146\nX1NMT1Q= 54147\nLkdldEluc3RhbmNl 54148\ncmV1c2U= 54149\nLnNodXRkb3du 54150\nIGplcnNleXM= 54151\nX01Q 54152\ncGF0aWJpbGl0eQ== 54153\nIOiuvue9rg== 54154\nIHJlcGxhY2VtZW50cw== 54155\nIHByZWNlZGVuY2U= 54156\nIGJ1ZmZlcmVk 54157\nLmJz 54158\nX0dSRUVO 54159\nYnJhaW4= 54160\nw6FjaA== 54161\nYXZhaWxhYmlsaXR5 54162\nIEVURg== 54163\nIGZyZXQ= 54164\naXN0aW5l 54165\nIGxpZnRz 54166\nRXhpc3Rpbmc= 54167\nIHN0ZXJlb3R5cGVz 54168\nIGVtcHQ= 54169\nbW9uZ28= 54170\nLnRyYWluaW5n 54171\nYWxpc3Q= 54172\nLklzRW5hYmxlZA== 54173\nICIh 54174\nPD8K 54175\ndWlkbw== 54176\nIGludFZhbHVl 54177\nLmVsYXN0aWNzZWFyY2g= 54178\nTE9HSU4= 54179\nIHJlbGlhbmNl 54180\nIHZpZXdUeXBl 54181\nIGRpbWluaXNoZWQ= 54182\nU2FyYWg= 54183\nIEFwcHJvYWNo 54184\nX1dFQg== 54185\nIGRybQ== 54186\nIGNvbHVtbmlzdA== 54187\nTWFya3Vw 54188\nIGFxdcOt 54189\nIERpYW5l 54190\nIGN3 54191\nIFRpY2s= 54192\nLm9ic2VydmU= 54193\nSVJPTg== 54194\nSW5CYWNrZ3JvdW5k 54195\nIGVib255 54196\nIENvdXJ0ZXN5 54197\nOm51bGw= 54198\nKioqKioqKi8KCg== 54199\nL3Jlc291cmNl 54200\nSXRlcmF0aW9u 54201\nZGVmYXVsdFZhbHVl 54202\nYXR0ZW50aW9u 54203\nINGA0LDQsdC+0YI= 54204\nIHdhaXZlcg== 54205\nIHByb2R1aXQ= 54206\nIEdyYWRpZW50 54207\nIHBlcmNlbnRhZ2Vz 54208\nIFNBTA== 54209\nIE1k 54210\nKHNuYXBzaG90 54211\nCWlv 54212\naWtlcnM= 54213\nV2VicGFjaw== 54214\nIHNldFBhc3N3b3Jk 54215\nIGRlZmVhdGluZw== 54216\nIEplZw== 54217\nZWxhcHNlZA== 54218\naG9sZHM= 54219\nX3NoYWRvdw== 54220\nIG9mZmVuZGVk 54221\nIFBhbnQ= 54222\nIENhbGxhYmxl 54223\nX0lORk9STUFUSU9O 54224\nZmZlZQ== 54225\nKGVtcGxveWVl 54226\nIFlBTUw= 54227\ncG9zc2libHk= 54228\nIG1heGltYWw= 54229\nZWxsdWxhcg== 54230\nIFNueWRlcg== 54231\nZGVzY3JpcHRvcg== 54232\nIFBMRUFTRQ== 54233\nRGxnSXRlbQ== 54234\nIGFydGlsbGVyeQ== 54235\nYH0K 54236\ncG9zaXVt 54237\nIGxlZXI= 54238\nJWM= 54239\nIGRpc3Bvcw== 54240\nLm11bA== 54241\nIGdlb2dyYXBoeQ== 54242\nIGdyYXBoaWNhbA== 54243\nIGRyYW5r 54244\nIG1vdGlvbnM= 54245\nIHJ1dGg= 54246\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 54247\nIHByb2R1Y3Rpb25z 54248\nIGNyZWF0ZVRpbWU= 54249\nIFNjcmlwdHVyZQ== 54250\nYmJi 54251\ndWNocw== 54252\n5LiN6IO9 54253\nLkJpZ0RlY2ltYWw= 54254\nc2l6ZXM= 54255\nX3NvbHZlcg== 54256\nX0Zyb20= 54257\nX2pvaW50 54258\nIHBhdGhsaWI= 54259\nIGdlYXJz 54260\nINGE0L7RgNC8 54261\nIGNvbmNlYWw= 54262\nIGRpZmZlcmVudGlhdGU= 54263\nPEdhbWVPYmplY3Q= 54264\nIGplZGVu 54265\nIGFsbw== 54266\nZ2xvYmFscw== 54267\nZXJ2YXRpdmU= 54268\nIHBhZGQ= 54269\nIFBseQ== 54270\nX3R5 54271\nIHByZXNlbnRl 54272\nIHByb3ByaWV0 54273\nX2xz 54274\nIFB1bmNo 54275\nIENyYXdmb3Jk 54276\nYmVsb3c= 54277\nQ3BwR2VuZXJpYw== 54278\nIENPTlRST0w= 54279\nIG9jZWFucw== 54280\nIFJPVVQ= 54281\nIHJhbmRpbnQ= 54282\nCWFkZHI= 54283\nIEhvbmVzdA== 54284\nIGVudmVsb3A= 54285\nIHRyYXVtYXRpYw== 54286\nIExBVA== 54287\nIHRn 54288\n7Iqk7Yq4 54289\nRXh0ZW5kZWQ= 54290\nIHVuY2hlY2tlZA== 54291\nIG9ic3RydWN0 54292\nX3RpbWV6b25l 54293\nUGVyc2lzdGVudA== 54294\nIGxsZXY= 54295\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= 54296\nIEZsYQ== 54297\nLnBoeXNpY3M= 54298\nIGZvcmdlZA== 54299\nIExhdXI= 54300\nIG1vbm9wb2x5 54301\nIGNocmlzdG1hcw== 54302\nZ292 54303\nIFNtb2tl 54304\nW2Rm 54305\nIGJpc2hvcA== 54306\nbG9jYWxPYmplY3Q= 54307\nb3JyaA== 54308\nb250dmFuZ3N0 54309\nZHJ5 54310\nIGVyZm9s 54311\nLWNl 54312\nIE9yZGVyZWREaWN0 54313\nIGh4 54314\nIFJFU0VU 54315\nU3Vj 54316\nIHJlY2tsZXNz 54317\nYWxhbWF0 54318\nQmlnSW50ZWdlcg== 54319\nIGJ1bGJz 54320\nIG11dGU= 54321\n5pS+ 54322\nLlVsdHJh 54323\nTG9u 54324\nIGNsZWFyVGltZW91dA== 54325\nPFJpZ2lkYm9keQ== 54326\nc3dpcGVy 54327\nIENvbWVz 54328\nXGRi 54329\nCW1w 54330\nIHJlc3Rz 54331\nTW92ZWQ= 54332\nIExvcmU= 54333\nLkRpbWVuc2lvbg== 54334\nIE1hbml0 54335\nLmh4eA== 54336\nPT09PT09PQ== 54337\ncGl0Y2g= 54338\nZmZpZWxk 54339\nc2tpbGxz 54340\nX2FsYnVt 54341\ndHJhbnNsYXRlZA== 54342\nIFhJ 54343\nIHZlaW4= 54344\nIERhdmlkc29u 54345\nIEF1Y2tsYW5k 54346\neXNzZXk= 54347\nIGF1dGhlbnRpY2l0eQ== 54348\nIEFzc2lzdA== 54349\nIGNvbXByaXNl 54350\nQ3JlYXRlVGltZQ== 54351\nIHRyZW5jaA== 54352\nLndlZWs= 54353\nLS07 54354\nIFVJQWxlcnRDb250cm9sbGVy 54355\nX3JlbGF0ZWQ= 54356\nQ01T 54357\ncmVtZWx5 54358\nIGxleGVy 54359\naXJtd2FyZQ== 54360\nRWxlbWVudHNCeQ== 54361\nLXVwcGVy 54362\nIHN0YWdu 54363\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 54364\nX3NuYXBzaG90 54365\nL1hNTFNjaGVtYQ== 54366\nX09yZGVy 54367\nIGFubmV4 54368\nX0VOQ09E 54369\nIEFsdG8= 54370\nYXJpb3Vz 54371\nREo= 54372\nIGFib3J0aW9ucw== 54373\nQ29tYmF0 54374\nIExpY2VuY2U= 54375\ndWdnZXN0ZWQ= 54376\nW0s= 54377\nLCkpCg== 54378\nKCcvLw== 54379\nLkNhbg== 54380\nc2Vjcw== 54381\ncXVvdGVz 54382\nX3RyeQ== 54383\nIFNhZ2U= 54384\nIE1vdg== 54385\nJ29u 54386\ncmVnaXN0 54387\nIFdyaXRlcw== 54388\nIERpZ2VzdA== 54389\nCWNvbnRhaW5lcg== 54390\nLXByb2dyZXNz 54391\nIGdvYXQ= 54392\nX3NjaGVtZQ== 54393\nLkdldENoaWxk 54394\nIGFzeW0= 54395\nLm15YmF0aXNwbHVz 54396\nYXRpY2E= 54397\ncGdzcWw= 54398\nX2Fzc2V0cw== 54399\nPks= 54400\nIGFmaW4= 54401\nTlNT 54402\nIE5BVg== 54403\nKCcuJyw= 54404\nIGAi 54405\nIGF1ZGl0b3I= 54406\nX01PVVNF 54407\nIHdhbGxldHM= 54408\nIG1vdQ== 54409\ncnVucw== 54410\nZXRlcmFuZ2Fu 54411\nIFJlc2VydmF0aW9u 54412\nIGV4cGVyaWVuY2lh 54413\nCXByb2Nlc3M= 54414\nLWltcG9ydA== 54415\nX1JldHVybg== 54416\nIE1hY3Jv 54417\nIFBlbmlz 54418\ncGl4ZWxz 54419\nIHNldEVtYWls 54420\nKE1pZ3JhdGlvbkJ1aWxkZXI= 54421\nKHhz 54422\nIEVzdG9u 54423\nIEJ1YmJsZQ== 54424\nQUxMT1c= 54425\nCWhhbmRsZXI= 54426\nJHJldA== 54427\nIGNvbXBsaW1lbnRhcnk= 54428\nLWNpdHk= 54429\nIGVsbG9z 54430\nIFNPVVJDRQ== 54431\nIEFkdmlzb3I= 54432\nb2xvZ8OtYQ== 54433\nIGZhZGVk 54434\nLnBj 54435\nX1JHQkE= 54436\nQUZY 54437\nIHJlcGF5 54438\nIEZhbGNvbnM= 54439\nX2lzc3Vl 54440\nb21pZG91 54441\nLmJhb21pZG91 54442\nIGluZnJpbmdlbWVudA== 54443\ndXJuaW5n 54444\nL3N0b3JhZ2U= 54445\nX3F1YW50 54446\nIFF0Q29yZQ== 54447\nIG1lbGw= 54448\nX2RlbnNpdHk= 54449\nIEtub3g= 54450\nIFN1cnZpdmFs 54451\nLmdldFVzZXJuYW1l 54452\nIGNvbW1lcmNpYWxseQ== 54453\nZ3Jhc3M= 54454\nIG1laXM= 54455\n5Lq/ 54456\nIFBlcm1pc3Npb25z 54457\nX1FVT1RFUw== 54458\naXBob25l 54459\nIExPVA== 54460\nIHRocmlsbGVy 54461\nIENoYXBlbA== 54462\nIFJpcw== 54463\nPmk= 54464\nLUlE 54465\nIHJpZ2h0bHk= 54466\nQ3J5cHQ= 54467\nIElzdGFuYnVs 54468\ncmVkcw== 54469\nX3Jlc2l6ZQ== 54470\nUG9wdWxhdGlvbg== 54471\nKGZldGNo 54472\nIEhPVA== 54473\nOmZpcnN0 54474\nIGdhZGdldHM= 54475\nUHlPYmplY3Q= 54476\nIG1lcmdpbmc= 54477\nZHVjZWQ= 54478\nbGVnYXRlcw== 54479\ndWJlY3Rs 54480\nJS8= 54481\nYWxsZWU= 54482\nIHp1c2FtbWVu 54483\nLlByb3BUeXBlcw== 54484\nYXN0bw== 54485\nOio= 54486\ncmVjZQ== 54487\nUmVzcG9uc2VUeXBl 54488\nL2dyb3Vw 54489\nIGJhcmJhcg== 54490\nIENhcm9saW5l 54491\nb3VyY2Vk 54492\n57uP 54493\nIGx1YnJpYw== 54494\naW5zcGVjdGlvbg== 54495\nYW1tYWQ= 54496\nCUltYWdl 54497\nIGllcnI= 54498\nIGN1cnRhaW5z 54499\nX0FSQg== 54500\nIE9yYWw= 54501\nIGFsbGllZA== 54502\nIFN0YXR1c0NvZGU= 54503\nIENsZWFybHk= 54504\nUHJlZmVycmVkU2l6ZQ== 54505\ncXVpbmE= 54506\nIHNwb3M= 54507\nIG9wdGltaXNt 54508\nIGNvbXByYXI= 54509\nIGx1Zw== 54510\nIEJvb20= 54511\nY29uZmlybWF0aW9u 54512\nX0RVUkFUSU9O 54513\nX2Jyb3dzZXI= 54514\nIHJlcGV0aXRpb24= 54515\nIGtlZXBlcg== 54516\nIGFkZFRv 54517\nKGpz 54518\nLlN0YXQ= 54519\nLkNvbmQ= 54520\nIEhlcm5hbmRleg== 54521\ncGFxdWU= 54522\nIHZvbHVudGFyaWx5 54523\nIGplcms= 54524\nIExleQ== 54525\nIGRvY3VtZW50bw== 54526\nX2RlYWQ= 54527\nIFRFQ0g= 54528\nIGluY2VwdGlvbg== 54529\nKCJ7fQ== 54530\nIG9uTG9hZA== 54531\neGRk 54532\nIElTUA== 54533\nc3BlY2lmaWVk 54534\nIOusuA== 54535\nUFJPQ0VTUw== 54536\nKGFsZXJ0 54537\nLk1N 54538\nIGNyZWF0ZVN0b3Jl 54539\nKHVuaXF1ZQ== 54540\nLmdldEJsb2Nr 54541\n656Y 54542\ndW5vcw== 54543\nIHRyb3BoaWVz 54544\nX2hvdmVy 54545\nIERhZGR5 54546\nLk1l 54547\nIENPVVI= 54548\nT0JK 54549\nYXRlbWFsYQ== 54550\nIFBzaQ== 54551\nIG5vcm1hbHM= 54552\nYWNpZXI= 54553\nIE1CQQ== 54554\nIHBhd24= 54555\nz4U= 54556\nIHNwb250YW5lb3Vz 54557\nIGF1eGlsaWFyeQ== 54558\nIGluYXVndXJhbA== 54559\nIGZhc3Rpbmc= 54560\nIEZpbGVTeXN0ZW0= 54561\nIHplbg== 54562\nX0JMVUU= 54563\nIHN1YnRyZWU= 54564\nIHByZXByb2Nlc3M= 54565\nLXRyYWNr 54566\nQ2hhcmxlcw== 54567\nIGRlcG9zaXRlZA== 54568\nIHF1ZXJ5UGFyYW1z 54569\n0L7Qu9GM0LrQvg== 54570\naWVtYnJl 54571\nIHByYXc= 54572\neEZD 54573\nIHBhbmM= 54574\nX25vbQ== 54575\naGVyb2Vz 54576\nLmphdg== 54577\nOjokXw== 54578\nINin2YTZhQ== 54579\nU0dsb2JhbA== 54580\n5o+P6L+w 54581\nPXRlbXA= 54582\nZXN0aQ== 54583\nIGNvbnN0cnVjdGl2ZQ== 54584\nIFNoaW0= 54585\nIERpcmVjdGlvbnM= 54586\nIEJpbmc= 54587\nZGlydHk= 54588\nLXJ1bm5pbmc= 54589\nX2ZpbGVwYXRo 54590\nb3JkZXJJZA== 54591\nZ2FyZA== 54592\nX29yaWVudA== 54593\nIHNjb3V0 54594\nIHBzeWNob2xvZ2lzdA== 54595\n7LY= 54596\nIOWt 54597\nZGVxdWU= 54598\nIEhlcm1pb25l 54599\nIFBvd2VyUG9pbnQ= 54600\nIGVsbGE= 54601\nIFVJQmFyQnV0dG9uSXRlbQ== 54602\nU3Vidmlld3M= 54603\nQFJlcG9zaXRvcnk= 54604\nIiIiCgoK 54605\nIHJldG91cg== 54606\nIGNpcmNh 54607\nR3JhcGhpYw== 54608\nIEdyYXR1aXQ= 54609\nZGR5 54610\nIHRlY2huaWNpYW4= 54611\nIENsZWFudXA= 54612\nIHBlcnNvbm5l 54613\nIHJlc2lu 54614\nLk11bHQ= 54615\nJG0= 54616\nIE9yY2hlc3RyYQ== 54617\nIHdoZWVsY2hhaXI= 54618\nLlND 54619\nCUdhbWVPYmplY3Q= 54620\nIG1vxbxl 54621\nT3BlbmVk 54622\nIGNoaWNrZW5z 54623\nb3Rhcw== 54624\nX3RlbXBlcmF0dXJl 54625\nIGRldGVjdGluZw== 54626\nIGFjcXVhaW50 54627\nIDw/PSQ= 54628\nPl0= 54629\nIG1lbnN0cg== 54630\nIGR5ZQ== 54631\nUm9ib3Rv 54632\nLnVuaXRz 54633\nIFZpbnls 54634\nY3VyYQ== 54635\ncnlwdG9u 54636\nZWRk 54637\nPXRlc3Q= 54638\nIHRyb3Y= 54639\nQ29uZmlybWF0aW9u 54640\nIHRoZW9sb2d5 54641\nIEhvbGRpbmdz 54642\ndWF0aW5n 54643\nUHJlZGljdA== 54644\nW3VzZXI= 54645\nIDon 54646\nIFNlc3Nv 54647\ncGFyZW50SWQ= 54648\nQ29kZUF0 54649\nYWJibw== 54650\nIFRyZXZvcg== 54651\nIFF1aXQ= 54652\nX3NoaXBwaW5n 54653\nX1JB 54654\nIGtsZWluZQ== 54655\n56Y= 54656\nX0xhYmVs 54657\nIE9tYXI= 54658\nIEdSRUVO 54659\nLykK 54660\ncm9r 54661\nIHJvYXN0ZWQ= 54662\nX1JU 54663\nIOKAjg== 54664\nQFJ1bldpdGg= 54665\nPk5O 54666\nIHRhbmQ= 54667\nKycu 54668\nY3J1ZA== 54669\nLmtleWJvYXJk 54670\nYXN0ZXJ5 54671\nQkFE 54672\nIENvbHVtbnM= 54673\nLkNvbXBhbnk= 54674\nIHNlbWluYXI= 54675\nIGdldENvbnRlbnRQYW5l 54676\nIGNhdGFzdHJvcGhpYw== 54677\nIGVtYnJvaWQ= 54678\naWF0aXZl 54679\nIGNydWVsdHk= 54680\nYmlz 54681\nIGluc2U= 54682\nIEJyb2tlbg== 54683\nCWZz 54684\nIG1WaWV3 54685\n0LDRhtC40Lg= 54686\nLWZhY2Vib29r 54687\nIGNhY2hlcw== 54688\n44CC44CCCgo= 54689\nIE9STQ== 54690\nIERpc3RyaWI= 54691\nIFNjZW5lTWFuYWdlcg== 54692\nX3RyYW5zaXRpb24= 54693\nb21leg== 54694\nIFNIRQ== 54695\nIHdvcmtsb2Fk 54696\nU3VwcG9ydGVkRXhjZXB0aW9u 54697\nIHJpZXM= 54698\nIOWc 54699\nKGNhdA== 54700\nSGFzTWF4TGVuZ3Ro 54701\nQXBwcw== 54702\nLlRBQkxF 54703\nIEtleVZhbHVlUGFpcg== 54704\nZWRpZG8= 54705\nLlJlbmRlcmluZw== 54706\nIGVsZWN0cm9t 54707\nIGFyYml0cmF0aW9u 54708\nIHZhcmlhYmlsaXR5 54709\nYXBvbGxv 54710\nIHV0bW9zdA== 54711\nb3BlbnNzbA== 54712\nIGjDpQ== 54713\nKCcm 54714\nLlN0YW5kYXJk 54715\nIGRpc3RyYWN0aW9u 54716\naWZheA== 54717\nIOuVjA== 54718\ndGhvc2U= 54719\naXNwZW5z 54720\ndmFr 54721\nIFNVUA== 54722\nIElzUGxhaW5PbGREYXRh 54723\nLGtleQ== 54724\nZnJhZ2lzdGljcw== 54725\nIEpveWNl 54726\nIEZpYmVy 54727\nLlNlcnZsZXRFeGNlcHRpb24= 54728\nX0FsbA== 54729\nIGJhY2tlcnM= 54730\nIEF0dHJpYnV0ZUVycm9y 54731\newoKCg== 54732\nQHlhaG9v 54733\nLWRpcmVjdG9yeQ== 54734\nIHVuaW5zdGFsbA== 54735\nIGZsdW9y 54736\nbGlxdWlk 54737\nIGzDoQ== 54738\nIGZyaWdodGVuaW5n 54739\nYWRhbg== 54740\nIEFVVA== 54741\nIHRhdHRvb3M= 54742\nIHByb3BhZ2F0aW9u 54743\nLnRyYW5zbGF0aW9u 54744\n0J/RgA== 54745\nX3NjaGVkdWxlcg== 54746\n44CC4oCc 54747\nIGNhaXJv 54748\nIEh0dHBDbGllbnRNb2R1bGU= 54749\nIE5EUA== 54750\nIEhpdHM= 54751\nIFRyYW5zZm9ybWF0aW9u 54752\nIENhZXNhcg== 54753\nc3RpbQ== 54754\nIEJ1cnRvbg== 54755\nd3lu 54756\nIGNvbW1hbmRlZA== 54757\nIENsb3RoaW5n 54758\nIFJ1bnRpbWVPYmplY3Q= 54759\ncmVhbGx5 54760\nY2xh 54761\nLnNh 54762\nIFNoYW5ub24= 54763\nIGNvbW1pc3Npb25z 54764\nIEphbmV0 54765\nIGRpc2d1c3Rpbmc= 54766\nIG9wdGltdW0= 54767\nX3NvbA== 54768\ndXJvbnM= 54769\nIFNIQVJF 54770\nQXR0cnM= 54771\nIFNjaGU= 54772\nIEJpZ051bWJlcg== 54773\nIGNpZ2Fy 54774\nKGRlcHRo 54775\nIGZyYWM= 54776\nIEN1cnZl 54777\nTEFTVA== 54778\nIFNDUklQVA== 54779\n6rO8 54780\nTWFsbG9j 54781\nLmdyb3VwYnk= 54782\nIExlc2xpZQ== 54783\nIHdoaWNoZXZlcg== 54784\nU21hcnR5 54785\nL3dl 54786\nIEFtcA== 54787\nLGlu 54788\nbG9wcw== 54789\nZGVwZW5kZW5jeQ== 54790\nY2VkdXJlcw== 54791\nIGB7 54792\neGljbw== 54793\nQ29sbGVjdG9y 54794\nIGhhYw== 54795\nIERhcmtuZXNz 54796\nZmZmZmZmZmY= 54797\nJz0+Ig== 54798\nIHBsZWFzaW5n 54799\nY29ubmVjdG9y 54800\nem9z 54801\nUENJ 54802\ndmFj 54803\nIEluY29ycG9y 54804\nIG5lZA== 54805\nX0ZBQ1RPUg== 54806\nLmZi 54807\nIG91bmNl 54808\nX3NhdmVk 54809\nINix 54810\nIGRlZWRz 54811\nIERvbHBoaW5z 54812\nIGJ1ZW4= 54813\nRVND 54814\nLHRpbWU= 54815\nX0FVVA== 54816\nZWNz 54817\nIFNlbmF0b3Jz 54818\nLm91dGVy 54819\nIFNlbGxpbmc= 54820\nIHJpbg== 54821\nPmAK 54822\nLm9ic2VydmFibGU= 54823\nIGNvc3Rpbmc= 54824\nREc= 54825\nIHdpbmRpbmc= 54826\nIHNrYQ== 54827\nIGNpcmN1bGF0aW5n 54828\nIGZvcm1pZGFibGU= 54829\nYW1wbw== 54830\nIFJhaXNlZA== 54831\nIHZlZ2V0YXRpb24= 54832\nVUZGSVg= 54833\nS2lsbA== 54834\ncHRpdmU= 54835\nKHJ2 54836\nIENvdW50cmllcw== 54837\nIE5ha2Vk 54838\nIEpB 54839\nKSkiCg== 54840\ndWRhcw== 54841\nIGJhcms= 54842\nCWxldmVs 54843\nIGZvZXM= 54844\nPkFkZA== 54845\nWW91VHViZQ== 54846\nO3Q= 54847\nTkNZ 54848\nQ2x1Yg== 54849\nRWlu 54850\nLS0NCg== 54851\nIGNvbnN0cmFpbmVk 54852\nRVR3aXR0ZXI= 54853\nWUc= 54854\nRGVzY3JpcGNpb24= 54855\nVU5DSA== 54856\nIGVucXVldWU= 54857\nIGRpc2tz 54858\nIFdlbnQ= 54859\nIG11aXQ= 54860\nCWxvY2F0aW9u 54861\nIHJldmlzaW9ucw== 54862\nIEFDSw== 54863\nLWZpeGVk 54864\ndHJhc291bmQ= 54865\nXFRlc3Q= 54866\nU3RhcnRQb3NpdGlvbg== 54867\nLWh0bWw= 54868\nIHByb2JsZW1hcw== 54869\nX0lOVEVSUlVQVA== 54870\nIFNUT1JF 54871\n5qih 54872\naWxpYXRlZA== 54873\nIFJQTQ== 54874\nW3RlbXA= 54875\nYWNodGVu 54876\nIGNpYw== 54877\nIEF1dG9tYXRpb24= 54878\nIGhpZ2hz 54879\nLyg/ 54880\nOicpCg== 54881\nc3Bhcms= 54882\ncmVscw== 54883\nCW1vdg== 54884\nVVRFUw== 54885\nLkF1dGhvcml6YXRpb24= 54886\nIFNjaG5laWRlcg== 54887\nIGNoZWVrcw== 54888\nYWRkcmVzc2Vz 54889\nYXJkaW4= 54890\nIHJlbW92YWJsZQ== 54891\nLkJhZFJlcXVlc3Q= 54892\naWNpb25hcg== 54893\nIERpZXNlbA== 54894\ndGhhbg== 54895\nL34= 54896\nIGRhenU= 54897\nUmVnaXN0cm8= 54898\nZmZp 54899\nX0RMTA== 54900\nIG5pZXU= 54901\nIG1vaXN0dXI= 54902\nLWV2ZW50cw== 54903\nIHRocmlsbA== 54904\nLmdldEVudGl0eQ== 54905\nIHRvZ2c= 54906\nIHdhdg== 54907\nKWRpZA== 54908\nYXRr 54909\nKHN1YnN0cg== 54910\nIEluamVjdGlvbg== 54911\nX21i 54912\nLkRpdg== 54913\nIGVuZGVhdm9y 54914\nICjCow== 54915\nIGNsdXR0ZXI= 54916\nIHVyZ2VuY3k= 54917\nIGluc3RydWN0b3Jz 54918\nLScs 54919\nLXN0YW5kYXJk 54920\nY2Vt 54921\nCWhhbmRsZQ== 54922\nLmZ0 54923\nU3RlcGhlbg== 54924\nUm9u 54925\n44GZ44KL 54926\nc2Np 54927\nIEF0bW9z 54928\nIGNhdGVyaW5n 54929\nIGZpYXQ= 54930\nLlBlcmNlbnQ= 54931\nIENvbmdv 54932\neGRm 54933\nLm1vemlsbGE= 54934\nIHNlaGVu 54935\nLnNob3dUb2FzdA== 54936\nT09U 54937\nLXJlc3VsdA== 54938\nzIE= 54939\nIGdob3N0cw== 54940\nIEJ1ZW4= 54941\nIFJpZGVy 54942\nIERvY3RvcnM= 54943\nIHVyYW5pdW0= 54944\nIGxvdWRseQ== 54945\nIHBvaXNlZA== 54946\nIGZhdm9ycw== 54947\nKEFQ 54948\nTEVZ 54949\nIHNpY2tuZXNz 54950\nIGNoYXR0ZQ== 54951\nIGludGVncmF0aW5n 54952\nIFl1cA== 54953\nQ2xvc3VyZQ== 54954\nIFRhbGVz 54955\nIGxpbmVh 54956\nIGV5ZWw= 54957\nLkNyeXB0b2dyYXBoeQ== 54958\ndW5leHBlY3RlZA== 54959\nYWxlbWVudA== 54960\nY2l0 54961\nZXRBZGRyZXNz 54962\nTGVhZA== 54963\neGNk 54964\nX25lZ2F0aXZl 54965\nX2NvcnI= 54966\naWdyYXBo 54967\nLWNoYW5uZWw= 54968\nIGRpc2Nv 54969\nU2VlZGVy 54970\nYmVhbQ== 54971\nX2Rw 54972\nQ0ND 54973\nIFByb3ZpZGVk 54974\nIGpzb25EYXRh 54975\nX1dI 54976\nRklORQ== 54977\nQlg= 54978\nLkRhdGFBY2Nlc3M= 54979\nIHRlbXB0ZWQ= 54980\nIGZpbmVk 54981\naXNDaGVja2Vk 54982\nIGZyYXVkdWxlbnQ= 54983\nRnJp 54984\nIGRvbWlj 54985\nUXVpeg== 54986\nIFVuZGVyZ3JvdW5k 54987\nYWJyYXM= 54988\nIElEaXNwb3NhYmxl 54989\nIFBlcnNvbmE= 54990\nIHJvZ3Vl 54991\nIEJleQ== 54992\nZ2V0Q2xpZW50 54993\nZWtlbg== 54994\nICcnJw0K 54995\nV2lraQ== 54996\nKEh0dHBTdGF0dXM= 54997\nU3RyZXRjaA== 54998\nIEdlc3Q= 54999\nIO2VmA== 55000\nIGVudGl0bGVtZW50 55001\nIGRvZW4= 55002\nYmxvZ3M= 55003\nIHZpdHJv 55004\nIk9o 55005\nIFN1bW1vbg== 55006\nIEJhY2tib25l 55007\nIGfDvA== 55008\nZ2V0Q29sdW1u 55009\nIFdJTkFQSQ== 55010\nCXZh 55011\nX1JFUVVJUkVE 55012\nLnRocm93 55013\nIHNldEN1cnJlbnQ= 55014\nZHVjdGVk 55015\nKEZ1bmN0aW9u 55016\nZWxzaW5raQ== 55017\nX1Blcg== 55018\nZmxpZXM= 55019\nIGluY29tcGV0 55020\nIGp1xbw= 55021\nKCkl 55022\nIC0tLQo= 55023\ndW1hcw== 55024\nIE9sZGVy 55025\nIGRpc3B1dGVk 55026\nX1JFUVVJUkU= 55027\nLm1hdG11bA== 55028\ndW5rZW4= 55029\n5LmL 55030\n44GL44KJ 55031\nIHR0bA== 55032\ndW5kZXJzY29yZQ== 55033\nIFBhdHJpY2lh 55034\nIHRhcGVy 55035\nIHNlaW5lcg== 55036\nIHNheWE= 55037\n5Y+w 55038\naWVyaQ== 55039\nLnNlY3JldA== 55040\nIHhvcg== 55041\nIG1pdG9jaG9uZA== 55042\nIGNhcmRib2FyZA== 55043\nfWB9 55044\nLUJFR0lO 55045\nIGRhdmlk 55046\nb3Vsb3M= 55047\nIFBldGVyc2J1cmc= 55048\nICIiLA0K 55049\nc2hlbGY= 55050\nLXdhdGVy 55051\nLWJ5dGU= 55052\nINC+0LHRitC10LrRgg== 55053\nIHN0aXJyaW5n 55054\n7Je0 55055\nIGNvbXB0 55056\nIFBvdGVudGlhbA== 55057\nUkFGVA== 55058\nIGVhcHBseQ== 55059\nIHN3aW5naW5n 55060\nIGZlYw== 55061\nQVJB 55062\nIHdhbmRlcmluZw== 55063\nIHByZWZlcnM= 55064\nSmVzdXM= 55065\nIHBpcmF0ZQ== 55066\nIElzaXM= 55067\nLk1pbmltdW0= 55068\nIFZhbGU= 55069\nX0JU 55070\ncmVuY2hlZA== 55071\nY29ycw== 55072\nKGl0ZW1WaWV3 55073\nIGfDpQ== 55074\nLkNvbnRhY3Q= 55075\nVmlld0NoaWxk 55076\naW5kc2F5 55077\nY29uZmlncw== 55078\nRHVwbGljYXRl 55079\n4oCmSQ== 55080\nenlzdA== 55081\nKHRvZG8= 55082\nLlJlbW92ZUF0 55083\nX0RJRkY= 55084\nIEJvdHRsZQ== 55085\nIHZvbHRh 55086\ndHJhZmZpYw== 55087\nTGVl 55088\nIOyk 55089\nIHR1bmVz 55090\nIEVjdWFkb3I= 55091\nIFl1bg== 55092\nIHVuZGVyd2VudA== 55093\naWNvbQ== 55094\nICcnKXsK 55095\nLXBvbA== 55096\nZmxhbW1hdG9yeQ== 55097\nTXV0YXRpb24= 55098\nIHJlY2Fw 55099\nX3ZlcnQ= 55100\nT1RJT04= 55101\nQ0RBVEE= 55102\naWNpbmU= 55103\nX2JvdW5kYXJ5 55104\nU2NhbGFycw== 55105\nIFVsdGltYXRlbHk= 55106\nRVE= 55107\nbWV0YWw= 55108\na3Nlcw== 55109\nbXBs 55110\nIGNvbnRlbg== 55111\nU29sZA== 55112\nRVNTQUdFUw== 55113\nIGJpbmRlcg== 55114\nIGxpbmVu 55115\nIE15QXBw 55116\nLW1ldGE= 55117\nCXJhaXNl 55118\nb3VsdHJ5 55119\nCW1vZHVsZQ== 55120\n5pi+56S6 55121\nbsOt 55122\nIHlycw== 55123\nIHBoeXNpYw== 55124\nLXBsYXRmb3Jt 55125\nIHN3aW5nZXJz 55126\nKGhlYWRlcnM= 55127\nLicp 55128\nIEJV 55129\nIEluY29udHJp 55130\nU2NlbmFyaW8= 55131\nQW1i 55132\nIHByZW1pw6hyZQ== 55133\nL2FydGljbGVz 55134\nIE1ham9yaXR5 55135\nQ0xVU0lWRQ== 55136\nb25vcg== 55137\nIGhhYsOtYQ== 55138\n5bee 55139\nIG1pZGk= 55140\nIExhYw== 55141\nLmZpbmRJbmRleA== 55142\nIFBhaW50aW5n 55143\nLmJvcmRlckNvbG9y 55144\nKmo= 55145\nIGNvbmdlc3Rpb24= 55146\nX0RJQ1Q= 55147\nb2xsZQ== 55148\nYXJuYXRpb24= 55149\nKHRleHR1cmU= 55150\nIHVm 55151\nIEVpbnN0ZWlu 55152\nKFRocmVhZA== 55153\nIGluZG9vcnM= 55154\nc2NyYXRjaA== 55155\nIG1ha2Vu 55156\nLlNUQVJU 55157\nIEp1ZHk= 55158\nZm9ydW1z 55159\nCgoKCgoKCgoK 55160\nQklMRQ== 55161\nIHZvdQ== 55162\nTVlTUUw= 55163\nIGdlcm5l 55164\nIEltcG9ydEVycm9y 55165\nIFN1cnJl 55166\nPG5hdg== 55167\nIERpZXNl 55168\nZXdhcmU= 55169\nIOuqqA== 55170\naW1wbGVtZW50ZWQ= 55171\nU0lHTg== 55172\nICd7QA== 55173\ncnpl 55174\nLm1pbmVjcmFmdGZvcmdl 55175\nLmlubmVySGVpZ2h0 55176\nYmVjaw== 55177\nIGN1cnJ5 55178\nIGZvcm11bGFz 55179\nYWdvZw== 55180\nZW5kZXQ= 55181\nIFBhaWQ= 55182\nIFJvYmVydG8= 55183\nIHVucGFpZA== 55184\nPWhlYWRlcnM= 55185\nLlBvd2Vy 55186\nIGJyZWQ= 55187\nb3JFbHNl 55188\nb3hpZGU= 55189\nIGZpbmFsaXpl 55190\nc2V0Q29sb3I= 55191\nIFN0YWR0 55192\nKCdcXA== 55193\naXNtaWM= 55194\nIGhlbGU= 55195\nLlByb3RvY29s 55196\nLkhvc3Rpbmc= 55197\nX01lbnU= 55198\nX2NvbmRpdGlvbnM= 55199\nIHB1cmdl 55200\nLnhhbWw= 55201\nYmFyZQ== 55202\nRlJBTUU= 55203\nIGN1YmVz 55204\nIEpvaGFubmVz 55205\nb2NyYXRz 55206\nLkRpcmVjdG9yeQ== 55207\nKWE= 55208\nPyk6 55209\nX0xJQlJBUlk= 55210\nIGdldFRva2Vu 55211\nIGVjaG9lZA== 55212\nPWg= 55213\nX3NvYw== 55214\nIEV2YWx1YXRl 55215\nIOq4sA== 55216\nIERlbGV0ZWQ= 55217\nRXU= 55218\nIGNsb25lZA== 55219\nc3RhdGlzdGljcw== 55220\nLkNhbnZhcw== 55221\nIGhhY2tlcg== 55222\nIGdhbmdz 55223\nLnJlc3VtZQ== 55224\ncGVhY2U= 55225\n0JLQstC10LTQuNGC0LU= 55226\nIFByb2NlZWRpbmdz 55227\n56U= 55228\nIGphcGFu 55229\nID8+Pgo= 55230\nICR7KHs= 55231\nLnJlY3RhbmdsZQ== 55232\nZ3c= 55233\nIE9yaWVudGF0aW9u 55234\nJW0= 55235\nLiIpKTsK 55236\nIExpZXV0ZW5hbnQ= 55237\nLnRydWU= 55238\nIGVsdA== 55239\nIERJUkVDVE9SWQ== 55240\nzq8= 55241\nLmRheXM= 55242\ndXR0Z2FydA== 55243\nIHVuZGVyd2Vhcg== 55244\nLCkK 55245\nQ0lE 55246\naW1lbGluZQ== 55247\nIEJsZW5k 55248\ncGhhc2lz 55249\nIHBlcnNl 55250\nIGdsaXR0ZXI= 55251\nIHVuaXE= 55252\nIENvbWJvQm94 55253\nIHNlc3Npb25JZA== 55254\ndXN0ZXJpdHk= 55255\nSURHRQ== 55256\n0L7QsdGJ 55257\n0KQ= 55258\ncmVuZGVycw== 55259\nX3Bvc2l0aXZl 55260\nX3Nsb3Rz 55261\nYnJvYWRjYXN0 55262\nIE1vbGQ= 55263\nL0NvcmU= 55264\nIEJhbm5vbg== 55265\nVG9vbEJhcg== 55266\nYWJlbGxl 55267\nX2F3 55268\nb2xlY3VsZQ== 55269\nIGRlbGV0ZXM= 55270\nIMOhcmVh 55271\nIHByb3BvcnRpb25hbA== 55272\nTVc= 55273\nIHdhcnk= 55274\nIGludGVybWVkaQ== 55275\nICoqKioqKioqKioqKioqKioqKioqKioqKg== 55276\nLlNUQVRVUw== 55277\nX3R3 55278\nIGFyb21h 55279\nIGFjdGl2aXNt 55280\nLklzTm90TnVsbA== 55281\ndWF0 55282\nIHBvc3REYXRh 55283\nIHBlbQ== 55284\nX2N0b3I= 55285\nIFJhcGlkcw== 55286\nLW9mZnNldG9m 55287\nIGluZWZmZWN0aXZl 55288\nIG9uRGVzdHJveQ== 55289\nIE1ldHJpY3M= 55290\nIHBhZGRpbmdMZWZ0 55291\nLWVuYWJsZWQ= 55292\nIEdvYWxz 55293\neW5jaHJvbm91c2x5 55294\nIHllcg== 55295\nSXRlbUF0 55296\nIE1ZU1FM 55297\nY2Vzbw== 55298\nLktpbmQ= 55299\ndGVj 55300\nKGJ1bmRsZQ== 55301\nIHJlZmVyZWU= 55302\nLiI7DQo= 55303\nIGNvbmV4 55304\nIGJpa2luaQ== 55305\nX0FQUExJQ0FUSU9O 55306\nIHN3ZWxsaW5n 55307\nIGJlYWRz 55308\nIGJhcmdhaW5pbmc= 55309\nLS0tLS0tLS0tLS0KCg== 55310\nIGtpdGE= 55311\nKmZ0 55312\nTWluaQ== 55313\nIFRvbmlnaHQ= 55314\nIG1hbmlwdWxhdGVk 55315\nTWlycm9y 55316\nIFBvc3RhbA== 55317\nIG1hcmU= 55318\nRFc= 55319\nIGNvbXBpbGluZw== 55320\nIGZvcmVuc2lj 55321\nLmdldFZpZXc= 55322\nZXBpbmc= 55323\nQ29z 55324\nIGFjY3JlZGl0ZWQ= 55325\nIG9iamV0aXZv 55326\nY2FyZXQ= 55327\nUGFpcnM= 55328\nKT4+ 55329\nIHNlw7E= 55330\nIHF1b3RhdGlvbg== 55331\nIEJyYW5kcw== 55332\ndWJp 55333\neXB5 55334\nIElubGluZQ== 55335\naW1ldGVycw== 55336\nV2ludmFsaWQ= 55337\nCWxpbms= 55338\nIEJlbGZhc3Q= 55339\nIE1lYXN1cmVtZW50 55340\nX05PVElGSUNBVElPTg== 55341\nIHJveQ== 55342\nIENHQ29udGV4dA== 55343\nIHdlZGRpbmdz 55344\nVVJOUw== 55345\nIHBvZGNhc3Rz 55346\nIFNlcmc= 55347\nIOuNsOydtO2EsA== 55348\nIGVhcm5lc3Q= 55349\nY292ZXJhZ2U= 55350\naXRlRGF0YWJhc2U= 55351\nRW1wbG95ZWVz 55352\nIERlbWFuZA== 55353\nIGNvbnRlbmlkbw== 55354\nIFFWZWN0b3I= 55355\nIiwiXA== 55356\nIEdlcmFsZA== 55357\nKClg 55358\nIGdyaWRCYWdDb25zdHJhaW50cw== 55359\nUkVTT1VSQ0U= 55360\nIFNhZw== 55361\nYWJpbGlkYWQ= 55362\nIGNvZXJj 55363\nb3VuY2VtZW50cw== 55364\nIElzbGU= 55365\nLmVkZ2U= 55366\nIGV4dGVy 55367\nKV1b 55368\nIFBsYXlsaXN0 55369\nIEJsaW5k 55370\nIFZpdGFs 55371\nIGxhdHRpY2U= 55372\ncmF0ZWQ= 55373\nZGVwZW5kZW5jaWVz 55374\nIGBgYA== 55375\nIEthbmc= 55376\nbWFjaA== 55377\nLmZhZGU= 55378\nIEd1ZXNz 55379\nKls= 55380\nTmF0dXJhbA== 55381\nLk9r 55382\nIFJlbmFpc3NhbmNl 55383\nIHRodWlz 55384\nIGxpa2Vu 55385\nKmg= 55386\nXCcs 55387\nLWNsb2Nr 55388\nIE9iamVjdGl2ZQ== 55389\nZmluZE9yRmFpbA== 55390\nIERpcnR5 55391\nIHNjYW5k 55392\nIFZBUklBQkxF 55393\nIGNvbXBhcmF0aXZl 55394\neXBhZA== 55395\nKFNvdXJjZQ== 55396\nZWNv 55397\nIGp1c3F1 55398\nCWFwaQ== 55399\nQnVpbHQ= 55400\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 55401\nIGxhYmVsaW5n 55402\nIGhlYWRhY2hlcw== 55403\nIG11ZmY= 55404\nIE9yY2g= 55405\nIGhhdGVz 55406\nLWJyZWFraW5n 55407\nL2J1dHRvbg== 55408\nIEJ1eWluZw== 55409\nTWV0cmlj 55410\nIHVuc3BlY2lmaWVk 55411\nL2hlYWQ= 55412\nIHN0aW5n 55413\nIHJlaW5mb3JjZQ== 55414\nIENvbVZpc2libGU= 55415\nYmxpbms= 55416\nIEFobWFk 55417\nZGJn 55418\nX2xibA== 55419\nIGh0dA== 55420\n7JuQ 55421\ncm9wb2xpcw== 55422\nICgoX18= 55423\nIHBlcm1l 55424\nIGFwcGFyZWw= 55425\nU1RSRUFN 55426\nY2h0cw== 55427\nIHNlaW5z 55428\nZmlsbFR5cGU= 55429\n7KO8 55430\nUk9XU0VS 55431\ndW1waW5n 55432\nIE5pZ2VyaWFu 55433\n4oCUaXM= 55434\nX2xvZ2lj 55435\nLk9yZGluYWw= 55436\nbG9zdA== 55437\nL3Vzcg== 55438\nQWY= 55439\nIEl0ZXJhdGU= 55440\naWJz 55441\nYWFs 55442\nIHN5bW1ldHJpYw== 55443\nLGlucHV0 55444\nIFBMTA== 55445\ndXppb25l 55446\nY2FwdGNoYQ== 55447\nIFRhbGU= 55448\nRXhwaXJlZA== 55449\nIE9iamVjdE1hcHBlcg== 55450\nY2lkbw== 55451\nLmdldE5leHQ= 55452\nIG1lbmphZGk= 55453\nOnNlbGVjdGVk 55454\nIHJpZW4= 55455\nX3NlbmRlcg== 55456\nUHdk 55457\nIEZsaWNrcg== 55458\nLkphdmE= 55459\nX3ZvdGU= 55460\nX01vZGU= 55461\nLiR7 55462\nIGZ1Y2tz 55463\nIEFsaWJhYmE= 55464\nIGluc2lkZXI= 55465\nYWNpbWllbnRv 55466\nIGZyYW7Dp2Fpcw== 55467\nSlNPTkV4Y2VwdGlvbg== 55468\nIEp3dA== 55469\nTWl0 55470\nbGVpY2g= 55471\nIHByYWN0aXRpb25lcg== 55472\nL3NvdXJjZQ== 55473\nIG9nbmk= 55474\nIHBoaWxvc29waGVy 55475\nU25hY2tCYXI= 55476\nc3RlbGx1bmc= 55477\nKGJpdG1hcA== 55478\nIGFzdGVyb2lk 55479\nIG1hcGxl 55480\ndWNoYQ== 55481\naXRlbUlk 55482\nIHN0ZWh0 55483\nT3JkZXJlZA== 55484\nZW5idXJn 55485\nL3Rva2Vu 55486\n6YWN 55487\nIFdlYmI= 55488\nb3dhbmll 55489\nIFdBSVQ= 55490\nIEhEUg== 55491\nIEV2YQ== 55492\nQVRUTEU= 55493\nKG1hc3Rlcg== 55494\nIGVycw== 55495\nYWxvYWQ= 55496\nIHNtdHA= 55497\ndW5pcQ== 55498\nIGd1aXQ= 55499\nIFJhZmFlbA== 55500\nImlu 55501\nKFVJ 55502\nKExheW91dEluZmxhdGVy 55503\nb3Jhbg== 55504\nIHNlcnZp 55505\nbmV6 55506\nIFRvcnJlcw== 55507\nLk1pZGRsZUNlbnRlcg== 55508\nIG1vbGw= 55509\nIFRleHRBbGlnbg== 55510\nX3VwbG9hZGVk 55511\nIE1laHI= 55512\nIGhvbW8= 55513\nLWxpbmtlZA== 55514\ndW5uZXI= 55515\nX2xlbmd0aHM= 55516\nIGRpZmZ1c2U= 55517\nIEF1dG9tb3RpdmU= 55518\nWWVhcnM= 55519\nIGxpZW4= 55520\nW2NvdW50ZXI= 55521\na2xhc3M= 55522\n0YHRgtC4 55523\nLkVuZ2luZQ== 55524\nIG1lbnk= 55525\ndWx0eg== 55526\nIGluZmFudHJ5 55527\nVmlh 55528\nc2VjdHM= 55529\nLmRhc2hib2FyZA== 55530\nIHNwb25zb3JzaGlw 55531\nLk1vZGlmaWVk 55532\nOy0= 55533\nIFZlbG9jaXR5 55534\ndHJhY3RlZA== 55535\nKG1ldGFkYXRh 55536\nIHBsYWd1ZQ== 55537\nTlNVc2VyRGVmYXVsdHM= 55538\nYXBwcm92YWw= 55539\ncHJvYmFibHk= 55540\nLXNpeA== 55541\nX1ZJUw== 55542\nOicnLAo= 55543\nLmVuYw== 55544\nLk1lc3NhZ2Vz 55545\nX1BST0dSRVNT 55546\nIG5lY2tsYWNl 55547\nIFRlbXBvcmFyeQ== 55548\nX21hcmt1cA== 55549\nIEZ1bmN0aW9uYWw= 55550\nIEpp 55551\nIHRlc3RDYXNl 55552\nICgpOw0K 55553\nX0NlbGw= 55554\nIFJlc2lkZW50aWFs 55555\nIFJhaWx3YXk= 55556\nKCgmX19f 55557\nIGRlZmF1bHRzdGF0ZQ== 55558\nIGVpbm1hbA== 55559\nLmZhYw== 55560\nKmY= 55561\nIHBpY25pYw== 55562\nKGV2YWw= 55563\nIGZ1cm5hY2U= 55564\nYXNzb2NpYXRpb24= 55565\neyEh 55566\nIENvbXBpbGU= 55567\neGVi 55568\nRXZhbA== 55569\ngOyepQ== 55570\nKGNhbA== 55571\nIG1hcmtldGVycw== 55572\nX2hlbHBlcnM= 55573\nbG9jYWxjdHg= 55574\nIHlvZ3VydA== 55575\nIHZpdGE= 55576\nLGxlbmd0aA== 55577\nIElucHV0RGVjb3JhdGlvbg== 55578\nIGludGVydmVuZQ== 55579\nIGNvbXB1dGF0aW9uYWw= 55580\nRGVuaWVk 55581\nL2Vudmlyb25tZW50 55582\naWlk 55583\nLkJveA== 55584\nLVRpbWU= 55585\nIGV4Y3VzZXM= 55586\ndHJhbnNwb3Nl 55587\nIG91dHJhZ2VvdXM= 55588\nKFNlcnZlcg== 55589\nZGltcw== 55590\nIl0pOw0K 55591\nkJw= 55592\nIEVpc2Vu 55593\nKE9w 55594\nIGhhc2hsaWI= 55595\nKGxp 55596\nfiw= 55597\nxLFuZA== 55598\nIFNwaGVyZQ== 55599\nIEJlbGxh 55600\nLXRyYW5zaXRpb24= 55601\nLnJlYWRTdHJpbmc= 55602\naGVhcmQ= 55603\nIFp1Y2tlcg== 55604\nIHdhbm4= 55605\nIGphaWxlZA== 55606\nIFRhbGVudA== 55607\nb3Bob2JpYQ== 55608\nwrY= 55609\nIG9wZXJhbmRz 55610\nU29tZW9uZQ== 55611\nIExpYnJhcmllcw== 55612\ncHJpbWFyeUtleQ== 55613\n16o= 55614\nVXI= 55615\nIG1hdGVz 55616\nINGI 55617\nLWR1dHk= 55618\ncG91cg== 55619\nPEVudGl0eQ== 55620\nPllvdQ== 55621\nQ3JlYXRvcnM= 55622\nV2l0aE5hbWU= 55623\nJ2ludA== 55624\nIFJhdGlvbmFs 55625\nPUI= 55626\nLkF1dG9GaWVsZA== 55627\nIEZvdW5kZXI= 55628\nIE1lZ2Fu 55629\nLmltYWdlVmlldw== 55630\nYm93cw== 55631\nIHdpdGhSb3V0ZXI= 55632\nIGxpYmVyYXRpb24= 55633\nIGZvcmFt 55634\nIGNpdGFz 55635\nb2NoZW4= 55636\nLnN3YXA= 55637\nIC4uCg== 55638\nLmN2dENvbG9y 55639\nIEF3YXJl 55640\nIHF1ZWVy 55641\n5aSE55CG 55642\nIEluZmluaXRl 55643\nL3N0cmluZw== 55644\nIGJsZW5kZWQ= 55645\nLUNvbA== 55646\nIHd5cw== 55647\nIHNpY2hlcg== 55648\nLkxhc3ROYW1l 55649\nX3dhdGVy 55650\nX1JlbQ== 55651\nIGFydGhyaXRpcw== 55652\nLkFQUA== 55653\nIEV4cGFuc2lvbg== 55654\neGRi 55655\nZXN0cm8= 55656\nZmF2aWNvbg== 55657\nVmVyaWZpZWQ= 55658\nIGRlbGl2ZXJpZXM= 55659\nYXJrZXQ= 55660\nIGdldEltYWdl 55661\nIEpQRUc= 55662\nIFRSSQ== 55663\nIEVsZXY= 55664\nZnVzaW9u 55665\nIGpwZWc= 55666\nY29sbGlzaW9u 55667\nIGRlc2NlbmQ= 55668\nLmZvcmU= 55669\nIExvZ3M= 55670\nIHBvbGljaW5n 55671\ndW50YXM= 55672\nLmhvc3RuYW1l 55673\nYWNjZXB0ZWQ= 55674\n4KWL 55675\nIFdlbmR5 55676\nLnJlYWRGaWxl 55677\nIFNhbnRpYWdv 55678\nIEdvbA== 55679\ncmliYm9u 55680\nc3RyYXRpb24= 55681\nIHB1ZGQ= 55682\nIC8vXw== 55683\naXNMb2FkaW5n 55684\nX1NFUklBTA== 55685\nIGluc3RhbnRpYXRlZA== 55686\nIHBvZHM= 55687\nIHdhcnJhbnRz 55688\nIGFkbWl0dGluZw== 55689\nCWNvbm5lY3Rpb24= 55690\nX2J1ZmZlcnM= 55691\nIEluY2g= 55692\nIFpFUk8= 55693\nd2VydA== 55694\nIENsYW4= 55695\nCWls 55696\nKHNoYWRlcg== 55697\nIHBpbGdy 55698\nIOWK 55699\nRHN0 55700\nX2JhcmFuZw== 55701\nOicj 55702\nQnV0dG9uVGV4dA== 55703\ndGVyZQ== 55704\nX2FtdA== 55705\nIEZvcmV2ZXI= 55706\nLkxpbmtlZExpc3Q= 55707\ndWFyZHM= 55708\ndXJvdXM= 55709\nIFNlbmRlcg== 55710\ndmFyaWFudHM= 55711\nX21hZ2lj 55712\nIGFjY29tbW9kYXRpb25z 55713\nYXBHZXN0dXJlUmVjb2duaXplcg== 55714\nUHJvbXB0 55715\nID8+DQoNCg== 55716\nIHJlcHJvZHVjZWQ= 55717\nX3ByZWNpc2lvbg== 55718\nIHJ1dA== 55719\nbW9uZHM= 55720\nO3g= 55721\nIH0sDQoNCg== 55722\n55S7 55723\nIFZpdGE= 55724\nIHByb3Bvc2Vz 55725\nIFBhcnRpdGlvbg== 55726\nSElORw== 55727\nICN7QA== 55728\nIGVzc2E= 55729\nKGJhcg== 55730\nIFplbGRh 55731\nLmNhdGNo 55732\nX2V4Y2VwdA== 55733\nIG92ZXJ3aGVsbWluZ2x5 55734\nCVRFU1Q= 55735\nX0NPTlRBQ1Q= 55736\nX187 55737\nIFNlbWk= 55738\nIHRyYWJhbGhv 55739\ncmFkb3Vybw== 55740\nX3NxdWFyZWQ= 55741\n4LY= 55742\nJUQ= 55743\nIHByYXQ= 55744\naXRleg== 55745\nKGVsZW1lbnRz 55746\nUGxhbnQ= 55747\nYWd1YQ== 55748\nIGlocmVy 55749\nLkNvbA== 55750\nIE1jTg== 55751\nIENvcmV5 55752\nT05FWQ== 55753\nQ2VsZQ== 55754\ncmVtZW50 55755\nIG1hbHQ= 55756\nIEx1aw== 55757\n57uf 55758\nUE1FTlQ= 55759\nIGFuYWx5emVy 55760\nIEhhbms= 55761\nX3VuaWNvZGU= 55762\nIGJ1cmlhbA== 55763\nIENlbHRpYw== 55764\nRUZG 55765\nTG90 55766\nd29u 55767\nIE51ZGU= 55768\nIE5hdGU= 55769\nIFNpbmdlcg== 55770\nIFNJVEU= 55771\nKGJpdA== 55772\nYml6 55773\nIGRldG9u 55774\nUkVBRE1F 55775\nOkFkZA== 55776\nIEhvbGRpbmc= 55777\ne3JldHVybg== 55778\nbmNpYXM= 55779\nPg0KDQoNCg== 55780\ncnVwdGlvbnM= 55781\nLnJlYWN0 55782\ndXJzYWw= 55783\n4Lib 55784\nIERPTkU= 55785\naXZhdGVk 55786\nLm5vdGVz 55787\nIHN0cmlwZXM= 55788\ncmlwcA== 55789\naXJhbg== 55790\nIHNsYWI= 55791\nIEJ1cm5pbmc= 55792\nKGVudA== 55793\nLnNlYw== 55794\nR1U= 55795\nX2dvbGQ= 55796\nXSkpLg== 55797\nZWxpbmVzcw== 55798\n0L7QsdGA0LDQ 55799\nIOKIgA== 55800\nIGNvc21pYw== 55801\nJ10pOgo= 55802\nY2Npb25lcw== 55803\nY2lzaW9u 55804\nY29tcGFyaXNvbg== 55805\nIEV2YW5nZWw= 55806\nIFNoaXJ0 55807\nbGFnZW4= 55808\nIGnFnw== 55809\nIGZpbGxlcg== 55810\nLnByb2Q= 55811\nIAkJCQkJ 55812\nINGE0YPQvdC60YbQuA== 55813\nIFplcm9Db25zdHJ1Y3Rvcg== 55814\nQXRB 55815\nXSkNCg0K 55816\nIGNvbnN0cnVjdG9ycw== 55817\nX1NIQVJFRA== 55818\nCWRldmljZQ== 55819\nIEFkdmljZQ== 55820\nOkAiJUA= 55821\nPn0n 55822\nLklzRW1wdHk= 55823\nIGludHM= 55824\nbW9zdGF0 55825\nIFNpZ251cA== 55826\nZ2Vhcg== 55827\nKHBhdGhz 55828\nLHsi 55829\nL0RvY3VtZW50cw== 55830\nPENhdGVnb3J5 55831\nVUVTVA== 55832\nIGdldERlc2NyaXB0aW9u 55833\nICJ7XCI= 55834\nIEpvZXk= 55835\nb2Rlbg== 55836\nX2d1ZXNz 55837\nRVVS 55838\nIGhlcnI= 55839\nIHNlZGFu 55840\nIHJlYWN0ZWQ= 55841\nX2Nsb25l 55842\nIFJldmVs 55843\nIGZvcmI= 55844\nUmVtYWluaW5n 55845\nXFNlcnZpY2Vz 55846\nIGF2aXM= 55847\nYmF0aW0= 55848\nemVwdA== 55849\nIERCTnVsbA== 55850\nQ29ubmVjdGlvbnM= 55851\nIGRpc3BvbmlibGU= 55852\ncGhpbg== 55853\nIHN0dQ== 55854\nIHNjaG9sYXJzaGlwcw== 55855\nLXNoYXJpbmc= 55856\nZm9ybWluZw== 55857\nIEJyaQ== 55858\nVmFySW5zbg== 55859\nL3Nlc3Npb24= 55860\nIGFtYmlndW91cw== 55861\nIGFwcmVzZW50 55862\nX3Jk 55863\nc2l0ZXM= 55864\nL2FjdGlvbg== 55865\ndHJhY3Rvcg== 55866\nIGRpbGVtbWE= 55867\nIFNY 55868\nXS0tPgo= 55869\nIEphY2tldA== 55870\nUkFUSU9O 55871\nLmdldFNlbGVjdGVkSXRlbQ== 55872\nLWluaXQ= 55873\nIFJlZ2lzdGVycw== 55874\nX3NlcA== 55875\nIFRvb2xraXQ= 55876\nLmRpY3Q= 55877\nIHhsYWJlbA== 55878\nXFRhYmxl 55879\ndG9j 55880\nX2NvbWJv 55881\nIENvbXBhY3Q= 55882\nIHJ1Z2dlZA== 55883\n4KWH4KQ= 55884\nLW1hbmFnZW1lbnQ= 55885\nJyl9fSI+Cg== 55886\nIFN0YW1w 55887\nxLFs 55888\ncm94 55889\nIGxhbmRzY2FwZXM= 55890\nX05PVEU= 55891\nbW9uYXJ5 55892\nY2Fi 55893\nIG1vZXQ= 55894\neGFm 55895\ncmNvZGU= 55896\nLWNsaQ== 55897\nX2dhdGU= 55898\nW2V2ZW50 55899\nU1BPUlQ= 55900\nZ2lh 55901\nIFNVUEVS 55902\nL0xvZ2lu 55903\nX3NodXRkb3du 55904\naW50ZXJydXB0 55905\nIHByZXRlbmRpbmc= 55906\nIGZyaW5nZQ== 55907\nIFJlZHM= 55908\nIENVREE= 55909\nIFVOSVg= 55910\ndml0 55911\nIGJyaWc= 55912\nZHJ2 55913\nIENvbm5lY3Rvcg== 55914\nVGhlcmVmb3Jl 55915\nIGxpYQ== 55916\nRGV0ZWN0aW9u 55917\nX2FjdG9y 55918\nIHRlbXBmaWxl 55919\nIGVjY2VudHJpYw== 55920\nLXJvbGU= 55921\nIHBhZHg= 55922\nZGVudA== 55923\nV2VzdGVybg== 55924\nIOq3uA== 55925\nIEFwcGxpY2F0aW9uUmVjb3Jk 55926\nIGNhbXBhaWduaW5n 55927\nX3J1bm5lcg== 55928\nIENpdmlj 55929\nYWxlaWdo 55930\nIGRpcmVrdA== 55931\nLnN1bA== 55932\nICAJCQk= 55933\nYW50ZW4= 55934\nIGlzc3Vlcg== 55935\nIGFzc2VydGlvbnM= 55936\nKG9yaWc= 55937\nQVRJTw== 55938\nIGxlYW5lZA== 55939\nw6Rz 55940\nLkRUTw== 55941\nZXhwbG9kZQ== 55942\nLk9ic2VydmFibGU= 55943\nIHN0YWdnZXJpbmc= 55944\nIGtpZG5hcHBlZA== 55945\nIHByb2dyYW1tZXJz 55946\nIElubm92 55947\nLnBhcmFtZXRlcg== 55948\nIGRvbWluYXRpb24= 55949\nIHNrZXB0aWM= 55950\nIOaYrw== 55951\nIGF2b2lkcw== 55952\nLlZlcmlmeQ== 55953\ndWJieQ== 55954\nIEFTTg== 55955\nIGZvcm1hdG8= 55956\nIEJlYXRsZXM= 55957\nX2JyYW5k 55958\nIGluc2V0 55959\neW91dHU= 55960\nIHRvYw== 55961\nLWZpbmFs 55962\nU2hvd2luZw== 55963\nIERvdWI= 55964\nIE1lc2E= 55965\nQWRq 55966\nX21lZGl1bQ== 55967\nQ3JlYXRlcw== 55968\nKGVuZHBvaW50 55969\nCVVQ 55970\nYmJpZQ== 55971\nIHN0YWxr 55972\nLmRhdGFiaW5k 55973\nLlNjYW4= 55974\nYWdlbnRz 55975\nJCw= 55976\naW5kaXZpZHVhbA== 55977\nKykv 55978\nCXZt 55979\nKG5vdGlmaWNhdGlvbg== 55980\nIGluZXg= 55981\nIENsYXNzaWZpY2F0aW9u 55982\ncmVubw== 55983\nIG9saWc= 55984\nLXJhdGVk 55985\nIGZvcm11bGF0aW9u 55986\nJyx7 55987\nIGFjZXB0 55988\nX3VucGFjaw== 55989\nX0NB 55990\nLlBvdw== 55991\nCWlt 55992\nIGFsdW1pbml1bQ== 55993\nQU5P 55994\nIHhu 55995\nIGPDs21v 55996\nIEluZ3JlZGllbnQ= 55997\nIHNlaXp1cmVz 55998\n5YWx 55999\naWZpY2Fkb3I= 56000\nIHNpZ3VpZW50ZQ== 56001\nIEluZnJhZ2lzdGljcw== 56002\nIGR1cGxpY2F0ZWQ= 56003\nIERlZQ== 56004\nIG7DuA== 56005\nIEFDQ0VQVA== 56006\nKGNyYXRl 56007\n0LjRgtC10LvRjA== 56008\nLWxlc3M= 56009\nIGluZmluaXR5 56010\nQW5hbHl6ZXI= 56011\nLURheQ== 56012\ncml0dA== 56013\nKGNpbg== 56014\nIEd5 56015\nIG11bHRpcGxpZWQ= 56016\ndWNoaQ== 56017\nIEJhbGR3aW4= 56018\nL2lw 56019\nIHNob3J0Y3V0cw== 56020\nLkFERA== 56021\nIHZpZ29y 56022\nX2luc3RydWN0aW9u 56023\nKDs= 56024\nX2V0YQ== 56025\n6L+e 56026\ndXRvcmlhbHM= 56027\nIGJvb3N0aW5n 56028\nYnY= 56029\nIGFja25vd2xlZGdlcw== 56030\nTGlzdGVuaW5n 56031\nRkFR 56032\nO2I= 56033\nKCgt 56034\nIGFyY2hpdGVjdHM= 56035\nIHp3ZQ== 56036\nIHB1bHM= 56037\nIGdldENvdW50 56038\ndmVyYnM= 56039\n44Cc 56040\nKENvbGxlY3Rpb24= 56041\na3Jl 56042\nIGp1cmlzZGljdGlvbnM= 56043\nX2JyaWRnZQ== 56044\nIENyYWNr 56045\nIERpZmZpY3VsdHk= 56046\nS08= 56047\nUmVzZXJ2YXRpb24= 56048\nX3JlcXVpcmVz 56049\nVG91cg== 56050\n44GX44Gf 56051\nLnNldEN1cnJlbnQ= 56052\nIGt5 56053\nIEFsYmFueQ== 56054\nIOin 56055\nbGxlcg== 56056\nYWduYQ== 56057\nd29ya2Vycw== 56058\nLmJsYW5r 56059\nIFByYXllcg== 56060\nTUlD 56061\nIHJlc2lsaWVuY2U= 56062\nVGVY 56063\nIExhbmd1YWdlcw== 56064\nc3R1ZHk= 56065\nCWN1cnI= 56066\nIGVuenltZXM= 56067\nU2x1Zw== 56068\nIO2MjA== 56069\nc3RyYWw= 56070\nIHR1bW9ycw== 56071\nIHNlZ3VuZGE= 56072\nPSd7 56073\naW5zdHJ1Y3Rpb24= 56074\nIExpc3A= 56075\nL2luZm8= 56076\nICJ7JA== 56077\nLDopLA== 56078\nIGd2 56079\nKEVycm9yTWVzc2FnZQ== 56080\nICc9 56081\nfS0kew== 56082\nLkRvY3VtZW50cw== 56083\nIldlbGw= 56084\nIHJlbWluaXNjZW50 56085\nIGdheg== 56086\naXJvcHI= 56087\nZWhy 56088\nIHN1cHByZXNzZWQ= 56089\nZXJzaA== 56090\nLnNjcm9sbFRv 56091\nIGNhZGVuYQ== 56092\nIGdhbWVTdGF0ZQ== 56093\nw61t 56094\nKGNvbnY= 56095\nIFRvbW9ycm93 56096\nIENDVA== 56097\nTW9uZ28= 56098\ndWxn 56099\nLkNhbWVyYQ== 56100\nLmhhbmRsZXJz 56101\nbXBo 56102\nIHN0aw== 56103\nIGdlbmV0aWNz 56104\nQUNJTkc= 56105\nVHJpdmlh 56106\nIEJhbQ== 56107\nKG1hcmtlcg== 56108\nLlN0cmV0Y2g= 56109\nIFN1bm5p 56110\nIEJldHR5 56111\nLnRvbGlzdA== 56112\ndW5saWtlbHk= 56113\nLlJlY3RhbmdsZQ== 56114\nb2Jzb2xldGU= 56115\nSUxPTg== 56116\naW5uZXJUZXh0 56117\nZW1ib3VyZw== 56118\nYU4= 56119\nIFZlaGljbGVz 56120\ndW5sb2Nr 56121\nOnV0Zg== 56122\nbm9i 56123\nIFNlZWluZw== 56124\nIE5FVkVS 56125\nIHRscw== 56126\nIGZpbGxlcw== 56127\nIGJlbmVmaXRlZA== 56128\nIENsaW50 56129\nKi8pLA== 56130\nLmZvbGQ= 56131\nIHBvc2libGU= 56132\nQURFRA== 56133\ndGhvdXNl 56134\nLkRBTA== 56135\nIE9kZA== 56136\ncm9rZXM= 56137\nIFN1bm55 56138\nIFBhcnRpYWxFcQ== 56139\nX0J1ZmZlcg== 56140\nIExldmk= 56141\nbG9uZ3JpZ2h0YXJyb3c= 56142\nZWxkb24= 56143\nZ2FnZXM= 56144\nX3dhcm4= 56145\nLkNyZWF0ZVRhYmxl 56146\nIERpcA== 56147\nX3F1ZXN0aW9ucw== 56148\nLmxvZ2lj 56149\nICMi 56150\nPXsoKT0+ 56151\nIHRlcA== 56152\nIGp1aWN5 56153\n7IKs 56154\nZW5rbw== 56155\naWFsZWN0 56156\n2Yk= 56157\nIG9uYm9hcmQ= 56158\nIOaP 56159\nCXJ0 56160\nX1VURg== 56161\nIFFBY3Rpb24= 56162\n4oCe 56163\nKENvbXBvbmVudA== 56164\nKGF1ZGlv 56165\nLmhpdA== 56166\nZ3Rl 56167\nIHByb2dyYW1tZWQ= 56168\nc3RhdGVQYXJhbXM= 56169\nIHBvbHllc3Rlcg== 56170\nZmlyZXM= 56171\nYnlzcw== 56172\nXT0o 56173\nX3F1YWxpdHk= 56174\nT2ZEYXk= 56175\nIEZhaXJ5 56176\nIHllbGxlZA== 56177\nb3Bs 56178\nKHVzZXJOYW1l 56179\nIERpZmZlcmVuY2U= 56180\nIGV2YWx1YXRpb25z 56181\naWZmYW55 56182\nIGN5Y2xpc3Rz 56183\nIGNpZGFkZQ== 56184\nIHRleHRib29r 56185\nIHByb2ZpbGluZw== 56186\nX18pLA== 56187\nZGVh 56188\nLmFjdGl2YXRl 56189\nIGluZGljYXRpb25z 56190\n0JU= 56191\nVG91Y2hVcEluc2lkZQ== 56192\nIGludmFsdWFibGU= 56193\nIE1BU0s= 56194\nIGNvbnRlbmQ= 56195\nRnJlcQ== 56196\nIHJlY3J1aXRz 56197\nKGludGVydmFs 56198\nIFVzZXJQcm9maWxl 56199\nICcuLy4uLw== 56200\nZWR1 56201\nX0NhbGxiYWNr 56202\nIGFuYWxvZ3k= 56203\nIFRyb3BoeQ== 56204\nYXBwaGlyZQ== 56205\nVmlkZW9z 56206\nIENoZXI= 56207\nIEhhdg== 56208\n4oCmIg== 56209\nLnZhbGlkYXRvcg== 56210\nZ2Z4 56211\nIFVPYmplY3Q= 56212\nY2xhc3NuYW1lcw== 56213\ndHJpYW5nbGU= 56214\nIEVuY29kZXI= 56215\nLnNweQ== 56216\nIHByZWRhdG9ycw== 56217\nPXN0YXR1cw== 56218\nLXNhZmU= 56219\nOiIsCg== 56220\nIEluY2x1ZGluZw== 56221\nIHt9Ow0K 56222\nKmNvcw== 56223\nIGVuZHVyZWQ= 56224\nLnN1bGFrZQ== 56225\nIG51cnNlcnk= 56226\nIGZyYWdyYW5jZQ== 56227\nIHJlYnVpbGRpbmc= 56228\nIG50aA== 56229\nIEZyYXNlcg== 56230\nLnNldERhdGU= 56231\nIFZpbmNl 56232\nX1JFU1Q= 56233\nIHZlbnRpbGF0aW9u 56234\n5rW3 56235\nY3JpYmVz 56236\nLmFzbQ== 56237\nbHBWdGJs 56238\nIEFiZQ== 56239\ndWlzaW5l 56240\nLGFycmF5 56241\nCWNsYXNzTmFtZQ== 56242\nZXJyYWxz 56243\nICcKCg== 56244\nQ2hlY2tvdXQ= 56245\nIHNvbGljaXQ= 56246\nQXV4 56247\nX2NhcHR1cmU= 56248\nIHJpYnM= 56249\ncmFnb24= 56250\ndmlvbA== 56251\ndG9waWNz 56252\nRnVuY3Rpb25GbGFncw== 56253\nIE1hcnR5 56254\nYmlrZQ== 56255\nIFR1Y2tlcg== 56256\nKGtlcm5lbA== 56257\nIE9wcw== 56258\nQ2xvc2VPcGVyYXRpb24= 56259\nL2RlbW8= 56260\naWxkYQ== 56261\nIGzDrW5lYQ== 56262\nQVBQSU5H 56263\nIHN1aXRlcw== 56264\nLnZpc2l0VmFySW5zbg== 56265\ndXJ1cw== 56266\nIE1pbnV0ZQ== 56267\nKG1hbmFnZXI= 56268\nIGJ1dHRlcmZseQ== 56269\nIGFwYXJl 56270\nIHdvbHZlcw== 56271\nSldU 56272\nIFNhbG9u 56273\nCWRlbGF5 56274\nLWVzbGludA== 56275\naXNhdGlvbnM= 56276\nLnJwYw== 56277\nKXwo 56278\nIFNuYXBjaGF0 56279\nL21t 56280\nTU4= 56281\nY2VyaWVz 56282\nLnRleHRBbGlnbm1lbnQ= 56283\nIEZyYW5rZnVydA== 56284\nIGFkbw== 56285\nKG5ld1ZhbHVl 56286\nKGFjY2Vzcw== 56287\nKEV4cHJlc3Npb24= 56288\nIFNpZ25Jbg== 56289\nIEhhaXRp 56290\nX3Rw 56291\nLnNldFBhcmFtZXRlcg== 56292\nTWludXRl 56293\nIG1hbnVhbHM= 56294\ncmljYW5lcw== 56295\nIFBUUg== 56296\nIE91dGVy 56297\nIGdldGxpbmU= 56298\nb2NhdGlvbnM= 56299\nX0NE 56300\nIEx5b24= 56301\nL2d1aQ== 56302\nX2xpdmU= 56303\naWRhbg== 56304\nLmdlb20= 56305\nIGJvcmRlckJvdHRvbQ== 56306\naW11dGg= 56307\nX2NoZWNrcG9pbnQ= 56308\nIG1ldQ== 56309\nIElydmluZw== 56310\nIHBldXZlbnQ= 56311\nKE1BWA== 56312\nIEFSQ0g= 56313\nIHBvdg== 56314\nLnNvdXJjZWZvcmdl 56315\nIGphbWFpcw== 56316\nIGFyaw== 56317\nIEJhZ2hkYWQ= 56318\nIENMRUFS 56319\nTWVudUJhcg== 56320\nIHRyb2lz 56321\nQ0hFRFVMRQ== 56322\nICMNCg== 56323\nKENhbGw= 56324\nJG9yZGVy 56325\nKE1hdGVyaWFs 56326\nIGVuY29udHJhZG8= 56327\nJGxpc3Q= 56328\nIE1FVEhPRFM= 56329\nLmJlZ2luVHJhbnNhY3Rpb24= 56330\nX01BRw== 56331\nU3R5bGVTaGVldA== 56332\nIG1ham9ycw== 56333\nIGluZGVmaW5pdGVseQ== 56334\nY2xlYW51cA== 56335\nIGhvbWVsYW5k 56336\nKGR0bw== 56337\nRGF0ZXM= 56338\nUHJlc2VudGF0aW9u 56339\nIERL 56340\nPXtgLw== 56341\nCUtleQ== 56342\nKEJsb2Nr 56343\nX2NoZWNrYm94 56344\nbmVlZHM= 56345\nIG9uQ29tcGxldGU= 56346\ncmljbw== 56347\nIGdsZWljaA== 56348\nIHht 56349\nT09E 56350\nQmV0dGVy 56351\nIFNRTElURQ== 56352\nLkJvb2s= 56353\neGFk 56354\nIEdvbmU= 56355\nCWRw 56356\nIGRldm90aW9u 56357\nIHN0bQ== 56358\nIG9ic2Vzcw== 56359\nIEJhY2tlbmQ= 56360\nUXVlcmllcw== 56361\nSWs= 56362\nLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 56363\nIGRpdmlkZW5kcw== 56364\nLnBhcmVudEVsZW1lbnQ= 56365\nfSIpCgo= 56366\nIE1hdGVyaWFsUGFnZVJvdXRl 56367\nOm51bQ== 56368\nIGV4cGxpYw== 56369\nIE9M 56370\nbGVhc3Q= 56371\nT29wcw== 56372\naW1lbnRvcw== 56373\nIGluc3VyZXJz 56374\nIGhlcm9pYw== 56375\nCWZpZWxkcw== 56376\nLmltZ3Vy 56377\nLmJ0bkNhbmNlbA== 56378\nIERldGVjdGl2ZQ== 56379\nKHNt 56380\nIE11dGFibGVMaXZlRGF0YQ== 56381\nLmxhYg== 56382\nKChb 56383\nIGhhaXJzdA== 56384\nIFRyYW5zYWN0aW9ucw== 56385\n5byA5aeL 56386\nIHN0ZENsYXNz 56387\ndWVudG8= 56388\nR0lT 56389\nX2NvZA== 56390\nSW5zdHJ1Y3Rpb25z 56391\nQ2FsbHM= 56392\nUG9pbnRlclR5cGU= 56393\nIFJ3 56394\nIGFzc29ydG1lbnQ= 56395\nIERJRw== 56396\nK3I= 56397\nX0NFUlQ= 56398\nIGluc3RhYmlsaXR5 56399\nIHZpYg== 56400\nb25hcw== 56401\nIHJva3U= 56402\nYXBlbGxpZG8= 56403\nIGFuZ2w= 56404\ncHJlbmV1cg== 56405\nIGZsdWlkcw== 56406\naXNlYXNl 56407\nIGRlZWQ= 56408\ncXVpc3Q= 56409\nX0NPTlNUQU5U 56410\nIGVxdWlsaWJyaXVt 56411\nX2RlbGVnYXRl 56412\nIFF1YW50dW0= 56413\ncmVp 56414\nQ2FwYWJpbGl0aWVz 56415\ncmVjdGFuZ2xl 56416\nPz48 56417\nYWxpZW4= 56418\nIEp1Zw== 56419\nRE5B 56420\nVGlja2V0cw== 56421\nT2NjdXJz 56422\nIEhhd2s= 56423\nLnNldEhvcml6b250YWxHcm91cA== 56424\nXENvbGxlY3Rpb24= 56425\nZmZpdGk= 56426\nIHJlYXJy 56427\nLnNldFZlcnRpY2FsR3JvdXA= 56428\nIGNhdml0eQ== 56429\nIGFkdWx0ZQ== 56430\nRmFjYWRl 56431\nLXdo 56432\nIExPTA== 56433\n2LA= 56434\nIGdyYW5kcGFyZW50cw== 56435\nU3dpZnQ= 56436\nCXd4 56437\n5omA5pyJ 56438\naWZlbg== 56439\nZmZzZXQ= 56440\nQmV5b25k 56441\nLy99Cgo= 56442\nIHdhZ2Vy 56443\nIGJ1cnk= 56444\nIGNvbW1lbmNl 56445\ncmVnaXN0cm8= 56446\nc2NpZW50 56447\nIFBlcmNlbnQ= 56448\nINC00L7Qu9C2 56449\nKGlkZW50aWZpZXI= 56450\nLnNldE1vZGVs 56451\nIHNlbGRvbQ== 56452\nbnRvbg== 56453\nIGFwcGxpYW5jZQ== 56454\nYW11cw== 56455\ncnlzbGVy 56456\nIHBhbnRpZXM= 56457\nZW5ndWlucw== 56458\nIG1pbWlj 56459\nIG9uQ2hhbmdlZA== 56460\nIGFsY29ob2xpYw== 56461\nLnJlbG9hZERhdGE= 56462\nQ2hhcmdl 56463\nIEZheA== 56464\nIGpTY3JvbGxQYW5l 56465\nRW1wcmVzYQ== 56466\nIHNoYXR0ZXJlZA== 56467\neGJh 56468\nRm9udHM= 56469\nP3M= 56470\nIHBvc3RzZWFzb24= 56471\ncmV0YWlu 56472\nX3JhdGVz 56473\nIHJlcXVlc3RDb2Rl 56474\nLnRvZG8= 56475\nwrRz 56476\nQ0hL 56477\nIEtlZXBpbmc= 56478\nZW5nZWFuY2U= 56479\nIHZzY29kZQ== 56480\nSVBQSU5H 56481\nRGVmYXVsdENsb3NlT3BlcmF0aW9u 56482\nX3JhaXNl 56483\nIE9jdWx1cw== 56484\nb2dyYW1z 56485\ncmFq 56486\ncGNp 56487\nIGNvcnJvc2lvbg== 56488\nLmhhbmRsZVN1Ym1pdA== 56489\nQWNjZXNzaWJsZQ== 56490\nIFBpYW5v 56491\nbGl0dGxl 56492\nQUNM 56493\nxIdl 56494\nLnVud3JhcA== 56495\nIENvbnZlcnM= 56496\nIExlYmVu 56497\naW9uZWVy 56498\nIE1lcmNoYW50 56499\nIEpvcmdl 56500\nIGVtYnJhY2luZw== 56501\nIHZlbnRh 56502\nw6FzdA== 56503\nIHZpZW5l 56504\nPFFTdHJpbmc= 56505\nIGV4cGxvc2lvbnM= 56506\nIGRpc3R1cmJlZA== 56507\nLiI8 56508\nbWVtbw== 56509\nIEFib3JpZ2luYWw= 56510\nIGNvbXBsZXRv 56511\nVGV4UGFyYW1ldGVy 56512\nIHVvbWluaQ== 56513\nKGFnZW50 56514\n0YPRgA== 56515\nIFdob2xlc2FsZQ== 56516\nL2Ft 56517\nIEJvb2ttYXJr 56518\nZHJhZ29u 56519\nIGdsb3Zl 56520\nICIiKSk7Cg== 56521\naXZhcmlhdGU= 56522\nbm93cmFw 56523\nSW5DaGlsZHJlbg== 56524\nLkJy 56525\nIGNvbmV4aW9u 56526\nIGJhY2tib25l 56527\nIGVjbGlwc2U= 56528\nIHBlcnNlY3V0aW9u 56529\nJzoKCg== 56530\nL2xpbms= 56531\nIFBlcm8= 56532\nYW5kYXM= 56533\nIFRlaw== 56534\nLiIpOw== 56535\nLWFuYWx5c2lz 56536\nIGVyYWQ= 56537\nTWFyc2hhbA== 56538\nIGFuY2hvcnM= 56539\nb2dlcg== 56540\nIGNvbnZlcmdlbmNl 56541\nc3RpY2t5 56542\nIG5hdmVn 56543\naW50ZXJu 56544\nX0RFU0NSSVBUT1I= 56545\nIENvbnN1bHRhbnQ= 56546\nICAgICAgICAgICAgICAgICAgICAgCg== 56547\nIEF1Y2g= 56548\nIGVycmU= 56549\nxZtsaQ== 56550\nIEhvcml6b24= 56551\nY29sYQ== 56552\nSW5zdGFsbGF0aW9u 56553\naG90bWFpbA== 56554\nQ05O 56555\nLkNvbGxlY3RvcnM= 56556\nY2hz 56557\nKHRyYWNl 56558\nIEVuY3J5cHQ= 56559\nIC0tLS0tLQ== 56560\nIEJhc2VDb250cm9sbGVy 56561\nIGFndWE= 56562\nIHJlYWN0aXZl 56563\naWRs 56564\nIGNsYXNzTmFtZXM= 56565\nCVNlc3Npb24= 56566\nIERvZGdlcnM= 56567\nSGFk 56568\nX2x2 56569\nSXNWYWxpZA== 56570\nIEhFTFA= 56571\ndXR0bw== 56572\nIFZlcmlmaWNhdGlvbg== 56573\nIGdldGVudg== 56574\nX3Bh 56575\nLmJtcA== 56576\nOmY= 56577\nIExvdWlzZQ== 56578\nKCc7 56579\nL3NvY2tldA== 56580\nR3JhbnRlZA== 56581\nLmNhbGVuZGFy 56582\nKElQ 56583\nIFBY 56584\nLlJvb20= 56585\nIHByb2dyYW1t 56586\nZW5zaQ== 56587\nIHRhYmxlc3Bvb25z 56588\nIGxldmU= 56589\nIG1vc3Ry 56590\nLnRpcG8= 56591\nL2Fu 56592\nKGRp 56593\nIGJpb2Q= 56594\nIGRiQ29udGV4dA== 56595\nIEpTWA== 56596\nCXJlc3VsdHM= 56597\nLkVORA== 56598\naHRl 56599\nbGlmeQ== 56600\nUHJlY2lzaW9u 56601\n6IqC 56602\nQVJTRVI= 56603\nKWRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n 56604\nYXR0ZW1wdA== 56605\nSVNQ 56606\nJmE= 56607\nX1BPUA== 56608\nIFRhYw== 56609\nIHByZXBhcmVkU3RhdGVtZW50 56610\nINC30LDQv9C40YE= 56611\nIG93aW5n 56612\nLHN0YXJ0 56613\nIHJldmlld2Vy 56614\nIHJzdA== 56615\nIHByb3BUeXBlcw== 56616\nIHJvY2t5 56617\nX2xvY2FsZQ== 56618\nIFN0cmF0ZWdpZXM= 56619\nIFdlYmVy 56620\nLkNhc2NhZGU= 56621\nX2VxdWFsVG8= 56622\nIGNvc2Fz 56623\nIERlbGV0ZXM= 56624\nIE1heGlt 56625\nIHNocmltcA== 56626\ncmV0cmlldmU= 56627\nLkluY2x1ZGU= 56628\nSUdJTg== 56629\nIE9F 56630\nXSk7DQoNCg== 56631\nLmVudW1lcg== 56632\nIGNvZWY= 56633\nX051bGw= 56634\nUmE= 56635\ndHlhcmQ= 56636\nIFNoYXdu 56637\na2VlcGVycw== 56638\nIHFx 56639\nX3Ni 56640\nb21lbnM= 56641\nIEV4ZWN1dGVz 56642\nIyI= 56643\nVFRZ 56644\nIFZhbHVlVHlwZQ== 56645\nKTsqLwo= 56646\nIEFic29sdXRlbHk= 56647\nIFRvdHRlbmhhbQ== 56648\nL2FydA== 56649\nIGJsZXNzaW5ncw== 56650\nIHN3aWZ0bHk= 56651\nYnVzdGVy 56652\nIGF2aWQ= 56653\nQ09NTQ== 56654\nLHRlbXA= 56655\nIH0/Pgo= 56656\nLWdyb3dpbmc= 56657\nIGRlZXBjb3B5 56658\nQWNr 56659\nZWdnaWVz 56660\nIF9fKCI= 56661\nIG5vaXI= 56662\ndGVycm9yaXNt 56663\nIGFudGhlbQ== 56664\nYWdlbmN5 56665\nX1BBQ0tBR0U= 56666\nIENsb3N1cmU= 56667\nLnJlZ2lzdHJ5 56668\nIG1hbW1hbHM= 56669\nPEw= 56670\nVUlDb2xsZWN0aW9uVmlldw== 56671\nIExFRHM= 56672\nIHZvbGxleQ== 56673\nKEJ1ZmZlcg== 56674\nX05BVElWRQ== 56675\nbGliYw== 56676\naW1wbG9kZQ== 56677\nU2Nyb2xsQmFy 56678\nIE1hcmlvbg== 56679\nLkNvbnRyYWN0cw== 56680\nX0F0 56681\nIFdlaW5zdGVpbg== 56682\nY29tcGFyZVRv 56683\nIEhvc2U= 56684\nZW5pdHk= 56685\nLmNyZWF0ZVF1ZXJ5 56686\nX3JvdXRlcg== 56687\nIHN0aW11bGk= 56688\nICsrKQ== 56689\nIENoYW1w 56690\nIEJheWVybg== 56691\nYXNzYQ== 56692\nLnZh 56693\nIGRpc3RyaWJ1dG9ycw== 56694\nIGZpbGVwcml2YXRl 56695\nIGRlcGFydGVk 56696\nY2NjYw== 56697\nQGNsaWNr 56698\nIEx1bmNo 56699\nPkw= 56700\nIGJsdWV0b290aA== 56701\nLkRlZXA= 56702\nLXN0YW5kaW5n 56703\nw6FjaWw= 56704\nIHJvb2Z0 56705\nIFBhdGhz 56706\nX2l0ZXJhdGlvbnM= 56707\nSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u 56708\nLnNwaQ== 56709\nIFVJQWxlcnRBY3Rpb24= 56710\ndXll 56711\nc2lnbmlu 56712\nLnByaW9yaXR5 56713\nIEVzc2F5cw== 56714\nPSd7JA== 56715\nIOi/lOWbng== 56716\nX3NpZ25lZA== 56717\nLnBlcnNpc3Q= 56718\nIHJlZGVzaWdu 56719\nVG9Mb3dlcg== 56720\nIE5ld21hbg== 56721\nPXN0YXJ0 56722\nIElzcmFlbGlz 56723\nYXNpc3dh 56724\nU3BlZWNo 56725\nIG51bWVyb3M= 56726\naGFuZGxlcnM= 56727\nIFdvbmc= 56728\nINC80LXRgtC+0LQ= 56729\nV2VpZ2h0cw== 56730\nIEd1amFy 56731\ndGVpbA== 56732\nIE5vbmV0aGVsZXNz 56733\nX0VGRkVDVA== 56734\nIHZlY3Q= 56735\nIE9zYw== 56736\nIGNvYXRz 56737\nIFdoZWF0 56738\nIGdlZWs= 56739\nIFBST1BFUlRZ 56740\nd29ybQ== 56741\nX2NvbnN0YW50cw== 56742\nIEJvdWxkZXI= 56743\nIFBhcm0= 56744\nY29sZQ== 56745\nIGRlZmF1bHRDZW50ZXI= 56746\nIFJvdWdl 56747\nOkE= 56748\neGNm 56749\nIFZlbmljZQ== 56750\nbWVkaWFu 56751\nIHJlZGVtcHRpb24= 56752\nRnJlc2g= 56753\nIGNvc20= 56754\nIGZpZ3Vy 56755\nIHJlZnVyYg== 56756\nQ09QRQ== 56757\nLmNk 56758\nIGNob3Jkcw== 56759\nIFNndA== 56760\nxY0= 56761\nVlBO 56762\nIFNFTkQ= 56763\nYWluZW4= 56764\nX2FjY291bnRz 56765\nIHRlbnRo 56766\nIGRpc3NvbHZlZA== 56767\nPEFwcA== 56768\nIENvdmVyYWdl 56769\ndXNlU3RhdGU= 56770\nw6lybw== 56771\nLi48 56772\nIOyjvA== 56773\nIGRyZWFtaW5n 56774\nIEZvcmVjYXN0 56775\nLkN1cnNvcnM= 56776\nIHZpc2Fz 56777\nL3NjcmlwdA== 56778\nX3N0YXJ0ZWQ= 56779\nIGdhc3Ry 56780\nKFBSTw== 56781\nXTsvLw== 56782\nLlRpbGU= 56783\nKnNpbg== 56784\nKEFkYXB0ZXI= 56785\nIFNhbmRyYQ== 56786\nX1NJRw== 56787\nYXJkYXNo 56788\nIE92YWw= 56789\nIGRlc2NyaXBjaW9u 56790\nKHNs 56791\nIERlc2NyaXB0b3I= 56792\nIGAk 56793\nL2ZyZWU= 56794\nIEtleXdvcmRz 56795\nIHR1ZG8= 56796\naW9uYWxl 56797\nKGZvdW5k 56798\nLnh5eg== 56799\nIEdlbmVyYXRpb25UeXBl 56800\nX0RJU0FCTEVE 56801\nKGFyZWE= 56802\nIGVsaXRlcw== 56803\nIGhvbWJyZQ== 56804\nKG1lc3NhZ2Vz 56805\nIFJhYw== 56806\nIGV4dGluZ3U= 56807\nIEVzdGE= 56808\nb3Bv 56809\nLnZlbA== 56810\nbW91c2VvdXQ= 56811\nIGNvbnZvbHV0aW9u 56812\nIEhhbmRsaW5n 56813\nIGNlaWxpbmdz 56814\nVGVr 56815\nIEFyZWFz 56816\nLndyaXRlcm93 56817\nPFZpZXc= 56818\nIENvcm5lbGw= 56819\nX0JJTg== 56820\nLmludmFsaWQ= 56821\nJycnDQo= 56822\naWXFvA== 56823\nX1Bvc2l0aW9u 56824\nIGtpZGRpbmc= 56825\nUENPREU= 56826\nIHdhdGNoZXI= 56827\nbG94 56828\nIOKX 56829\nRGF2ZQ== 56830\nX2FsbG93 56831\nIGJpc2V4dWFs 56832\nIHVub3JkZXJlZA== 56833\nIFNjaHdl 56834\nX3NlZ21lbnRz 56835\nIHRlYXJpbmc= 56836\nSU5MSU5F 56837\nIHVuZGVz 56838\nLmdvb2Rz 56839\nLmNhbQ== 56840\nIExX 56841\nCXdoZXJl 56842\nQ2FsY3VsYXRvcg== 56843\nLXRocmVhdA== 56844\nLWFsZXJ0 56845\nIFN1enVraQ== 56846\nIElQQQ== 56847\nIEF0dGFjaG1lbnQ= 56848\nQUNDRVNT 56849\nKGR0eXBl 56850\nT3Bw 56851\nX3N5bWJvbHM= 56852\nIGRhbnNrZQ== 56853\nbGFnZQ== 56854\nb3JnZXQ= 56855\ncmVzb2x1dGlvbg== 56856\n0LXRhw== 56857\nIFFDb2xvcg== 56858\nIEJhcnJldHQ= 56859\n0LDRhtC40Y8= 56860\nPVwn 56861\nIE5hdkNvbnRyb2xsZXI= 56862\nL3JlZg== 56863\nKGNvdW50cnk= 56864\nX0hEUg== 56865\nIHRlcnNlYnV0 56866\ncGV0aXRpb24= 56867\nIHN1Zg== 56868\nY3JlZGl0cw== 56869\n4LmM 56870\neG0= 56871\nIERhdmllcw== 56872\nLnJlZGRpdA== 56873\nIHdvdmVu 56874\nIE9ibA== 56875\nIEtN 56876\nIENvbnNpZGVyaW5n 56877\nZW5zb3JlZA== 56878\nLnBlcmlvZA== 56879\nIGRkbA== 56880\nJHdw 56881\nIGV4dHJlbWlzdA== 56882\nO1wK 56883\nIGtpbQ== 56884\nYWxlcnM= 56885\nIHNwYW5uaW5n 56886\nIGNvaGVyZW50 56887\nIGNvbnNlZ3U= 56888\nLnRleHRMYWJlbA== 56889\nLmdlbmVyYWw= 56890\nX2Rhc2hib2FyZA== 56891\n0LvQtdC90LjQtQ== 56892\na2ljaw== 56893\nX1BJRA== 56894\nIEV4dGVuc2lvbnM= 56895\ncmVnZXhw 56896\nIENsYXVzZQ== 56897\nX21vdg== 56898\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 56899\nIFJld2FyZA== 56900\nIExFR08= 56901\nQWs= 56902\nPS09LT0tPS0= 56903\nCXBhcnNlcg== 56904\nIG9uemU= 56905\n6YCA 56906\n4oCd44CC 56907\nX2JhbGw= 56908\nKHJocw== 56909\nIGNob3J1cw== 56910\nPGNvdW50 56911\nYXN1cmFibGU= 56912\nIHdpcmtsaWNo 56913\nIEVyaW4= 56914\nIE1TTkJD 56915\nIGV0dGVy 56916\nIENyb24= 56917\nX0ZMT1c= 56918\nICwNCg== 56919\nIGNhbGlkYWQ= 56920\nIEZpbGVXcml0ZXI= 56921\nCXN0bXQ= 56922\nKEJ5dGU= 56923\nX3BhdA== 56924\nIHRlbGVzY29wZQ== 56925\nIGdyZWVk 56926\nIFRvcnQ= 56927\nKHdyaXRl 56928\nXGFwcGxpY2F0aW9u 56929\nCVJUTFI= 56930\nIENvbmZpZ3VyYXRpb25NYW5hZ2Vy 56931\nVW5peA== 56932\nRW5kVGltZQ== 56933\nSW5jbHVkZXM= 56934\nIEhhcnZlc3Q= 56935\nZW5iZXJn 56936\nIEF1c3RyYWxpYW5z 56937\nIOuT 56938\nIHJu 56939\nIHJlcHV0YWJsZQ== 56940\nIGJsZW5kaW5n 56941\nVUxBVElPTg== 56942\nIEJyZW5kYW4= 56943\nZGFk 56944\nIG3DuA== 56945\nIFdvbw== 56946\nX2Rj 56947\nVW5l 56948\nIHJ1ZQ== 56949\nd2l0aGlu 56950\nYW5nZXA= 56951\nIHBvdWNo 56952\nXCIiLA== 56953\nIFNpYw== 56954\n4oCdKSw= 56955\nYWx5emU= 56956\nIEdlZg== 56957\nY292ZXJz 56958\nIGRibw== 56959\ncmVwbGFjZUFsbA== 56960\nCUxvZ2dlcg== 56961\nVHJ5aW5n 56962\nW3N0YXRl 56963\nLXBpZWNl 56964\n6ZaT 56965\nYmVoYXZpb3I= 56966\nYWxsb3dz 56967\nbHJ0 56968\nX3B5dGhvbg== 56969\nZXJ0dXJh 56970\nLWNvdW50cnk= 56971\nIFRH 56972\nLlVJTWFuYWdlcg== 56973\nYmVucw== 56974\nYWxleA== 56975\nIEJyZWl0YmFydA== 56976\nYmFj 56977\nIHByZWRpY3Rz 56978\nIGdhYg== 56979\nIGNhcmRpbmFs 56980\nLlRpbWVVbml0 56981\nIFZpc2l0b3I= 56982\nIE1pbmc= 56983\nIGxpdnJl 56984\nIHBhcmVudElk 56985\ncG9ydHVu 56986\nIGRpbWVuc2lvbmFs 56987\nIFZlc3Q= 56988\nZW5pYw== 56989\n4LM= 56990\nINmH 56991\nIEJMVUU= 56992\nIGl0ZW1Db3VudA== 56993\nIGZlYXRoZXJz 56994\nCXBzdG10 56995\nIFBvbGFy 56996\ney8v 56997\ndW5kaQ== 56998\n0YPQtg== 56999\nemFy 57000\nRXJyb3JSZXNwb25zZQ== 57001\n7IOB 57002\nUmVwcmVzZW50YXRpb24= 57003\nKl8= 57004\nK10= 57005\ncHJlcGVuZA== 57006\nICc+ 57007\nIGxlZ2l0aW1hY3k= 57008\nIG9v 57009\nU2xpbmt5 57010\nIG5hdGlvbmFscw== 57011\nLndvcmRz 57012\nO3A= 57013\ndHJhcA== 57014\nb21hbmlw 57015\nIGN1ZXM= 57016\nIGdyYWR1YXRpbmc= 57017\nIHNlbWFwaG9yZQ== 57018\nIl0pOwoK 57019\nYWNleQ== 57020\nUkVFVA== 57021\nR3JhYg== 57022\nIEZlbGl4 57023\nKElk 57024\nX25laWdoYm9ycw== 57025\nIG1lYW5pbmdsZXNz 57026\nKGRlbA== 57027\nIGplZGVy 57028\nIENvbnRlbnRWYWx1ZXM= 57029\nLmFic29sdXRl 57030\nL2Ns 57031\nIHhi 57032\nZGF0dW0= 57033\nIHRvcnR1cmVk 57034\nIHJ1YmJpbmc= 57035\nU2NvcmVz 57036\nIPCfmIk= 57037\nIGF2b25z 57038\nIGFtc3RlcmRhbQ== 57039\nRU9T 57040\nSGFs 57041\nIHRydXN0d29ydGh5 57042\nIz0= 57043\nLkVYVFJB 57044\nIG1hbm8= 57045\naXNpY2luZw== 57046\nLXN1cHBvcnQ= 57047\nCWN1cnNvcg== 57048\nIFNwbw== 57049\nYWltYXNzYWdl 57050\nTWlzc2lvbg== 57051\nW117Ig== 57052\nIHByaW50ZXJz 57053\nR1JFRU4= 57054\nIHRlZw== 57055\nIGFiZG9taW5hbA== 57056\nIQoKCgoKCg== 57057\nLlNob3J0 57058\n0LDQt9Cy 57059\nIEdpZnRz 57060\nfSIp 57061\nKGJpbmRpbmc= 57062\neGNl 57063\n4oCR 57064\naW5mb3M= 57065\nRm9ybURhdGE= 57066\nIGRhcnQ= 57067\nIGVsZW1z 57068\nKGludg== 57069\nWUw= 57070\ndGlu 57071\nR0VORVI= 57072\n4buv 57073\nIFRha2Vu 57074\ndWNrbGU= 57075\nOmU= 57076\nIHNwZWN0cmFs 57077\nLmJhaWR1 57078\nLycpOwo= 57079\nIGdyZWVkeQ== 57080\nZXNpb24= 57081\nLCwsLCwsLCw= 57082\nIC8+LAo= 57083\nSW50ZXJuYWxTZXJ2ZXJFcnJvcg== 57084\nTlNOb3RpZmljYXRpb25DZW50ZXI= 57085\nIEFp 57086\nIHNwaXQ= 57087\nIGF1Z21lbnRlZA== 57088\nIHN0YW5kYXJkVXNlckRlZmF1bHRz 57089\nRklOSVRZ 57090\nUmFjZQ== 57091\nOkM= 57092\nIFJFQ09SRA== 57093\nIEhpZ2hsaWdodA== 57094\nICdg 57095\nIGRlZmljaXRz 57096\nIG5laQ== 57097\nIHJlc2VhcmNoZWQ= 57098\nVGE= 57099\nIGNvcHA= 57100\nLkdldEhhc2hDb2Rl 57101\nKToNCg0K 57102\nT25DbGljaw== 57103\nIFdlbGxpbmd0b24= 57104\nIHJldml2YWw= 57105\n5q+U 57106\n6Zeu 57107\nIE5TUw== 57108\nIGZvcm4= 57109\nIGludMOp 57110\nIEt1d2FpdA== 57111\nX2ZsaXA= 57112\nX2Jv 57113\nX1w= 57114\nIG9jY3VycmVuY2Vz 57115\nIFNjaWVudGlzdHM= 57116\nU1JD 57117\nb2dlbnM= 57118\naWdyYW50 57119\nUkVNT1RF 57120\nIFNJRA== 57121\nLm9wdHM= 57122\ndXZl 57123\nKCldKQo= 57124\nIGxpYmVydGFyaWFu 57125\nIEdsaWRl 57126\nbGVzZW4= 57127\nIGZvcm1l 57128\nb3dhbmlh 57129\nIGFubm95ZWQ= 57130\nRGVmcw== 57131\nIEV4ZWN1dG9y 57132\nIGNhc3Rz 57133\nLnNldENoZWNrZWQ= 57134\nIFNoYXJpbmc= 57135\nLlNlcmlhbGl6ZU9iamVjdA== 57136\nIHNlbGVjdG9ycw== 57137\nX09USEVS 57138\n66+4 57139\nKHN1cGVy 57140\nKE9T 57141\nX1ZFUklGWQ== 57142\naWR1bnQ= 57143\nPGhlYWRlcg== 57144\nIC8+JzsK 57145\nIHZpZMOpbw== 57146\nIE5lZ3Jv 57147\nIExvcmRz 57148\nIFRvdXJz 57149\nIHNvZnRseQ== 57150\nLnJlY2VpdmU= 57151\nIEVSQw== 57152\nIGRhdGFTZXQ= 57153\nQmFkZ2U= 57154\nCUV2ZW50 57155\nIHBlcmw= 57156\nIHt9XA== 57157\nKHNlbnRlbmNl 57158\nT3JVcGRhdGU= 57159\nIGRpbWluaXNo 57160\nUElO 57161\nKGRyYXc= 57162\nLlRvRGF0ZVRpbWU= 57163\nLkVxdWFsVG8= 57164\nKHBpbg== 57165\nLXBlbmNpbA== 57166\nbHVlbnQ= 57167\nIENhbGxlcg== 57168\nIHBsYXlmdWw= 57169\nLScr 57170\neGNh 57171\nc3dpY2s= 57172\nKXt9Cg== 57173\nfTokew== 57174\nIE1ldGg= 57175\nLmdldENlbGw= 57176\nLmJyZWFr 57177\nIHltYXg= 57178\nPSc8Pw== 57179\nLWpzb24= 57180\nIHByaW1laXJv 57181\nIGluZGljZQ== 57182\n44Kj 57183\nIFVOSVRZ 57184\nKGFi 57185\n0YbQuNC4 57186\nX0hBVkU= 57187\nLXllYXJz 57188\nIEVyZG9nYW4= 57189\nLXN0YWNr 57190\nIGRpc2NoYXJnZWQ= 57191\nIGJyZWF0aHRha2luZw== 57192\nIGdyYXNzcm9vdHM= 57193\nIEFzaWRl 57194\naGVsbA== 57195\nIHNuYWtlcw== 57196\nL2xvZ291dA== 57197\nIG1pbldpZHRo 57198\nIEhlYXI= 57199\nIFN0b25lcw== 57200\nIFdpc2RvbQ== 57201\nIEV2ZW5pbmc= 57202\nX2JsYW5r 57203\nIFByb21vdGlvbg== 57204\nIE1NTQ== 57205\nIEJhcnM= 57206\n44K3 57207\nbmo= 57208\nX1RJ 57209\nIFNvY2lhbGlzdA== 57210\nIEVH 57211\nLW9wdA== 57212\nPVwiJA== 57213\nKGRpYWxvZw== 57214\nIGJlaG9sZA== 57215\nIGludHJpY2F0ZQ== 57216\nIGVyZWN0aWxl 57217\nRXh0cmFjdG9y 57218\nIHNjbA== 57219\nIGNsYXM= 57220\nKGhpc3Rvcnk= 57221\naWRlbnRhbGx5 57222\nIHBuZXVt 57223\nUmFuZA== 57224\nIExhcHRvcA== 57225\nY2FsbGVy 57226\nIEZsb29k 57227\nb3BlbmVk 57228\ndWRkZXI= 57229\nIEdldHRlcg== 57230\nX3dhbGs= 57231\nKHdlaWdodA== 57232\nIEFsZXhhbmRyaWE= 57233\nIHRhYmxlYXU= 57234\nVmFyaQ== 57235\nIC0tLS0tLS0t 57236\n6Iez 57237\nZXdvcnRoeQ== 57238\nU3BlY2lmaWNhdGlvbg== 57239\nIHRocmVzaG9sZHM= 57240\nKCIiKTsKCg== 57241\nX2ZvdXI= 57242\nIFNhZGx5 57243\nIChfKQ== 57244\naXNtYXRpYw== 57245\nIEphaWw= 57246\ndG9IYXZlQmVlbkNhbGxlZFdpdGg= 57247\nLm1hcg== 57248\nIHByZXZpZXdz 57249\nIHNjYWZm 57250\naW5kaWNhdG9y 57251\nIGNvZGVjcw== 57252\nIGF1dG9j 57253\nKHJ0 57254\nLmdldEhvdXJz 57255\nIFJI 57256\nIFN1cmdl 57257\naXZhbWVudGU= 57258\nIGNvbnRlbmRlcg== 57259\nQ3BwR2VuZXJpY0NsYXNz 57260\nIDs7Xg== 57261\nOjoqOwo= 57262\nLXJlY29yZA== 57263\nIG1hbWE= 57264\nIGltZ3M= 57265\nLmlzTG9hZGluZw== 57266\nIG5lZWRsZXM= 57267\nIGVuY3VlbnRyYQ== 57268\nb2RhdGE= 57269\nIEJ1ZmZlcmVkSW1hZ2U= 57270\nCWphdmE= 57271\nIFRvbWI= 57272\nVU5JVFk= 57273\nIGxpbmdlcmll 57274\nIEphbWFpY2E= 57275\nYnVncw== 57276\nKioKCg== 57277\nIE1hbw== 57278\nLmJlZ2luUGF0aA== 57279\nIHByb3N0aXR1dA== 57280\nIFBoaWxpcHBpbmU= 57281\nX3Nm 57282\nX3Bvdw== 57283\nIFNjaG8= 57284\neGRl 57285\nJ8OpdA== 57286\n4oCZYXV0 57287\nYWlzb24= 57288\nIEZpbGVJbmZv 57289\ndHVybnN0aWxl 57290\nZHJlYW0= 57291\nIGlWYXI= 57292\nc3ludGF4 57293\naWxsaXNlY29uZHM= 57294\ncHJvZmlsZXM= 57295\nX1JFR0VY 57296\nINC00L4= 57297\nIENvbW11bg== 57298\nQmV0 57299\naXB6aWc= 57300\nIE1lbW8= 57301\nLmlkcw== 57302\nIHBob3RvZ3JhcGhlZA== 57303\nIGFwcHJveGltYXRpb24= 57304\nOnZhcmlhYmxlcw== 57305\nIG1vZGlmaWNhcg== 57306\nX1NNQUxM 57307\nIEhlbXA= 57308\nIGRpc3Jlc3BlY3Q= 57309\nIGNvbnRlc3RlZA== 57310\nIGlubm9jZW5jZQ== 57311\naWxsaXM= 57312\nU3ltYm9scw== 57313\nIGluc3BpcmF0aW9uYWw= 57314\nIGRpc2NpcGxpbmFyeQ== 57315\nIFBlcm1hbmVudA== 57316\nIGRlc2Ny 57317\nIFVOREVS 57318\n0YHRiw== 57319\ncHJlc3Nvcg== 57320\nSU1FUg== 57321\nIG1vdW50cw== 57322\nIG1vcmFsbHk= 57323\nX1NFQ09ORA== 57324\nLmZpbGVOYW1l 57325\n44OX 57326\nIGNvbnN0cnVjdHM= 57327\nIFNVTg== 57328\nRVNQ 57329\nRmluYW5jaWFs 57330\nIE51cg== 57331\nw7RsZQ== 57332\ncmljdWxhcg== 57333\nIFVzZXJNYW5hZ2Vy 57334\naWJpbGlkYWQ= 57335\nIG9uUmVzcG9uc2U= 57336\nIGZpbG1tYWtlcg== 57337\nIGFsb3Q= 57338\nX1RIUkVBRFM= 57339\nIGVudmlyb25tZW50YWxseQ== 57340\nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u 57341\nIHJhc2g= 57342\nIEx5cmljcw== 57343\nIGlwYWlycw== 57344\nQmFja3Vw 57345\nU2lnbnVw 57346\nIEB7Cg== 57347\nSlVuaXQ= 57348\nd29ya2Zsb3c= 57349\nIENvbXBsZXRpb24= 57350\nIGludHVpdGlvbg== 57351\n8J0= 57352\nIG1pYQ== 57353\nIFNuYWNrYmFy 57354\nIFRpbg== 57355\nCWluc3RhbmNl 57356\nIE11c2ljYWw= 57357\nIHdlbGNvbWVz 57358\nIHJlZHJhdw== 57359\nX2NvbG91cg== 57360\nX1JFQUxUWVBF 57361\nX3NpbmNl 57362\nIEJ5dGVBcnJheU91dHB1dFN0cmVhbQ== 57363\nLWRlbWFuZA== 57364\nYXJldGg= 57365\nLnBhZA== 57366\nc2Vr 57367\nJywuLi4K 57368\nLWZpcmU= 57369\nLnw= 57370\nIG51bWI= 57371\nIERPVUJMRQ== 57372\nQU1BR0U= 57373\nY2htb2Q= 57374\nLWls 57375\nIGFsYXJtaW5n 57376\nQ29w 57377\n5aSH 57378\naW52aXRl 57379\nX0lURU1T 57380\nIGxldWs= 57381\nIHJlZWw= 57382\nIGZ1bGZpbGxtZW50 57383\nUmVzdG9yZQ== 57384\nX3Jy 57385\nKGNsYXNzZXM= 57386\nIHBhZ2luZw== 57387\neW1heA== 57388\ncmFwcGVk 57389\n7ZmU 57390\nfWB9Pgo= 57391\nIEhpcm8= 57392\nKFRSVUU= 57393\nYXN1cmVy 57394\nIGN1ZXI= 57395\nVWJlcg== 57396\nLk9wZXJhdGlvbg== 57397\nIG9sYW4= 57398\nIHRocmlsbGluZw== 57399\nPFJlc3BvbnNl 57400\nIEZlbWlu 57401\nIHRyYXZlcnNhbA== 57402\nIHBvYw== 57403\nIHNldFN0YXR1cw== 57404\nZGVjbGFy 57405\nc3RkYWZ4 57406\nIGFkZGljdGl2ZQ== 57407\nIEJ0bg== 57408\nIGV4cGxvc2l2ZXM= 57409\nIENvb2tpbmc= 57410\nIFBsYWludA== 57411\nIGFjY3VtdWxhdG9y 57412\nIEFwcG9pbnRtZW50 57413\nLHBhc3N3b3Jk 57414\nIEZBUg== 57415\nbHVldA== 57416\nRnVydGhlcm1vcmU= 57417\nZGVjbHNwZWM= 57418\nX1N0YXRpY3M= 57419\nLkRpY3Rpb25hcnk= 57420\nIj4nLg== 57421\nCXZhbGlk 57422\nIiIs 57423\nSW5zdHJ1bWVudA== 57424\nPko= 57425\nIG5vc3Ry 57426\nIFJpZnQ= 57427\nX1BvcnQ= 57428\nIHZlY2Vz 57429\nW1sn 57430\nIHJhbGxpZXM= 57431\nLXNlcmllcw== 57432\nIHZ2 57433\nLnVj 57434\nIHJ0bg== 57435\nU3RhdGVDaGFuZ2Vk 57436\nKGlucw== 57437\nIENsYQ== 57438\nLS0tLS0tLS0tLS0tCg== 57439\nY3Vz 57440\nIFJlbG9hZA== 57441\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 57442\nLnNlY29uZHM= 57443\nX2Rlc3RpbmF0aW9u 57444\nIHNjcmV3ZWQ= 57445\nPmM= 57446\nVGhpY2tuZXNz 57447\nRGVzaWduZXI= 57448\nIGdyaWRz 57449\nbsSF 57450\nKGNvb2tpZQ== 57451\nVHJpcA== 57452\nLU1vYmlsZQ== 57453\nIHZvbGw= 57454\nIGdlbml0YWw= 57455\nIGNvbmZpc2M= 57456\nIENvbmZlZGVyYXRl 57457\nIHdlYlZpZXc= 57458\nIG1pc2U= 57459\nIGNsZXI= 57460\nKHNlbGVjdGlvbg== 57461\nJGRhdGU= 57462\nIHNoYXJwZW4= 57463\ncmFnZW4= 57464\nQW5kVXBkYXRl 57465\nIHJlbWl4 57466\nIGh0b25z 57467\nUlc= 57468\nTVBJ 57469\nIHJldHJpZXZhbA== 57470\nIHJpY2hlc3Q= 57471\nLkRlY29kZQ== 57472\nOmluaXRDb21wb25lbnRz 57473\nIFRWYWx1ZQ== 57474\nU2FpbnQ= 57475\nQGluY2x1ZGU= 57476\nIFBFUlNPTg== 57477\nLnNlcA== 57478\nIExEQVA= 57479\nZ2Jh 57480\nIGdyb8OfZQ== 57481\nIHJlbGlhYmx5 57482\nIERGUw== 57483\nLmdldEl0ZW1JZA== 57484\nIHByw6lzZW50 57485\nLmdldFRva2Vu 57486\nIGNoaW5lc2U= 57487\nIE1lYWw= 57488\nWU9V 57489\nIj48Pz0k 57490\nKGNob2ljZQ== 57491\nIHBoZW5vbWVuYWw= 57492\nIFN0ZWVsZQ== 57493\nwqI= 57494\nIFBhY2thZ2VNYW5hZ2Vy 57495\nIFN5bmRyb21l 57496\nRGlyZWN0b3JpZXM= 57497\naXZhcg== 57498\nLnVuc3Vic2NyaWJl 57499\nbGllw58= 57500\nbW9ubw== 57501\nX2Nvbm5lY3Rpb25z 57502\nX3ByZXNlbmNl 57503\neW55 57504\nS25pZmU= 57505\nIGdyb292ZQ== 57506\nIHNjb29w 57507\nVEVNUEw= 57508\nYXNha2k= 57509\nLmhhbWNyZXN0 57510\nIGhhcmJvcg== 57511\nY292 57512\nKno= 57513\nIFh1 57514\nIHByb3Bvc2luZw== 57515\nIEZSQU1F 57516\nQ2hpcA== 57517\nIEVlbg== 57518\nIOyghA== 57519\nIHNtYXNoZWQ= 57520\nVW5zaWduZWQ= 57521\nKC4u 57522\nX2ZpbmlzaGVk 57523\nIGdldFN0YXR1cw== 57524\nIGZpYnJl 57525\nQXhlcw== 57526\nICcvJyw= 57527\neWFyZHM= 57528\nTURC 57529\nLWJz 57530\naW50ZW50 57531\nIGJvb3N0ZXI= 57532\nLmRzdA== 57533\nLkRpYWxvZ1Jlc3VsdA== 57534\nIE1ldHM= 57535\nIGJlYXN0cw== 57536\naW5jcmVtZW50cw== 57537\nLmthZmth 57538\nVUlBbGVydEFjdGlvbg== 57539\nLWV2ZXI= 57540\nX2JhbA== 57541\nIGhlbHQ= 57542\nIGZyZW9wZW4= 57543\nIFJlY3J1aXRtZW50 57544\nbGljdHM= 57545\nZm9yZ2V0dGFibGU= 57546\nRGlzcGxheWVk 57547\nX1ZFTkRPUg== 57548\nQ29sbGVnZQ== 57549\nQVNDSUk= 57550\nIFNpbms= 57551\nIE1hY2Vk 57552\nIGN0b3I= 57553\nIGVzdMOjbw== 57554\nIFdpbmRzb3I= 57555\nX2NoZWNrZWQ= 57556\nX2RldGVjdA== 57557\nYXR0ZW5k 57558\nIHhtaW4= 57559\nIGluZGlzcGVucw== 57560\nL3BlcnNvbg== 57561\nX0RFVEFJTFM= 57562\nUkVESVQ= 57563\nSGF5 57564\nYWJvbGlj 57565\nIGZ1bmN0b29scw== 57566\naWFpcw== 57567\nRlRQ 57568\nX1JlY3Q= 57569\nIEluZHk= 57570\nLXB1YmxpYw== 57571\nb2hhbg== 57572\nX21hbmFnZQ== 57573\nQ29tcHV0ZWQ= 57574\n7JeQ7ISc 57575\nIFNsaWNl 57576\nIGdheXM= 57577\nIGFsZXg= 57578\nYWl0cw== 57579\nIHJlY2VpcHRz 57580\nU1BFQw== 57581\nIEJFRk9SRQ== 57582\nIFByZWZpeA== 57583\nX3Zpc2l0 57584\nIHNwdW4= 57585\nTEVURUQ= 57586\nIGRvdw== 57587\nIGxlZ2FsaXphdGlvbg== 57588\nYWJiYWdl 57589\nIGNsYXc= 57590\nIFRjbA== 57591\neGltYQ== 57592\nIGNvdmVydA== 57593\nTmk= 57594\nIHRoYW5rZWQ= 57595\nIGFsbGVyZ2lj 57596\nbG92ZXI= 57597\nIEJyZWFzdA== 57598\nLmlzQWN0aXZl 57599\nIGdlYmVu 57600\nVkVSU0U= 57601\nWk9ORQ== 57602\nCVJlc3VsdA== 57603\nJykuJw== 57604\nIGdlZQ== 57605\nIFNlcmlvdXNseQ== 57606\ncHVycGxl 57607\nIEVzcGHDsWE= 57608\naWZpZQ== 57609\nLXBhY2s= 57610\nUGFydGljbGVz 57611\nICcvLi4v 57612\nIG11bHRpbWVkaWE= 57613\nYXV0b2NvbXBsZXRl 57614\nIFRIUkVBRA== 57615\nIHJlZmVyZW5jaW5n 57616\ncmVldGluZ3M= 57617\nIHF1b3Rpbmc= 57618\nIGFzc2lzdGFudHM= 57619\namVuaXM= 57620\naGFwcHk= 57621\nIGxheXM= 57622\nbGliZnQ= 57623\neGRh 57624\nIGZvdQ== 57625\ncGlhcg== 57626\nUmVjb21tZW5kZWQ= 57627\nIEJpcmRz 57628\nIFdhcnJhbnR5 57629\nw7xybGljaA== 57630\nLklOVklTSUJMRQ== 57631\nX2FuY2hvcg== 57632\n4oCdOg== 57633\nRmFudA== 57634\nX2RlZnM= 57635\nIGRyZWFtZWQ= 57636\nIF9fX19fX18s 57637\ncGxh 57638\nw6RmdA== 57639\nb2RrYQ== 57640\nxLFz 57641\nIGRhZGR5 57642\nc2NoZW1hcw== 57643\nPXplcm9z 57644\nIHJhdHQ= 57645\nCQkgICAgCQ== 57646\naWVq 57647\nIGRyaWxscw== 57648\nLTw/ 57649\nQUJB 57650\nLmxpbmtz 57651\nIERlcGVuZGVuY3lQcm9wZXJ0eQ== 57652\nLmxvdw== 57653\naGVlZA== 57654\nX0JMQUNL 57655\nL0FkbWlu 57656\nIGFtaWdvcw== 57657\naW5nZWQ= 57658\nIE1pY2tleQ== 57659\nLkdldEF4aXM= 57660\nIE5lZWRlZA== 57661\nIEVuY29kZQ== 57662\nw6lyaWV1cg== 57663\nIE1hbmlsYQ== 57664\nIENvbGxlZw== 57665\nYWRhc3Rybw== 57666\nIGNoaWNhcw== 57667\n5L2g 57668\nIG9uZXNlbGY= 57669\neGVh 57670\nZHVr 57671\nIGd3 57672\ndXJnaWNhbA== 57673\nIENlbnRybw== 57674\nIGFlcw== 57675\nZmVlbA== 57676\nIHRyb3Q= 57677\nIGVsZWN0cm9ucw== 57678\nIHJpdHVhbHM= 57679\nIEJpbGRlcg== 57680\nIGRlY29yYXRl 57681\nIFRva2VuVHlwZQ== 57682\nIGx1cmU= 57683\nQXBpQ2xpZW50 57684\nZ3JwYw== 57685\nIE9yYw== 57686\nQ29udGV4dE1lbnU= 57687\nUFJFRklY 57688\nLXRoZW1lZA== 57689\nX2ZpZm8= 57690\nLklucHV0U3RyZWFtUmVhZGVy 57691\nX3NwZWNpZmlj 57692\nIERTUA== 57693\nPXN1YnByb2Nlc3M= 57694\nL3NoZQ== 57695\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= 57696\nIGRhdW50aW5n 57697\nIGNsZWFycw== 57698\nIE1vdmVz 57699\nIG15c3Rlcmllcw== 57700\nLWJlc3Q= 57701\nIFZ1 57702\nb2xpYg== 57703\nIElzaA== 57704\nIGNhcmFjdA== 57705\nKExhYmVs 57706\nIERlYmlhbg== 57707\nIEV4cGVyaW1lbnRhbA== 57708\nIGNhdg== 57709\nLlRvRGVjaW1hbA== 57710\nIFJob2Rlcw== 57711\nIEhhd2tz 57712\nIGZvdW50YWlu 57713\nX1BFTkRJTkc= 57714\nX1NV 57715\nIHd4U3RyaW5n 57716\nIFBldw== 57717\nLmNsaQ== 57718\n0YTQvtGA0Lw= 57719\nLndlYmtpdA== 57720\nX0NO 57721\nIDs7PQ== 57722\nCW5hbWVzcGFjZQ== 57723\nIHdQYXJhbQ== 57724\nIHB1cHBpZXM= 57725\nIHRlcm1pbm9sb2d5 57726\nIGFkZGljdGVk 57727\nIGZvcmdl 57728\nIEdhcmRuZXI= 57729\nIHBlc3NvYQ== 57730\nCVJlc3VsdFNldA== 57731\nIGF0dGVudQ== 57732\nYW5nZW1lbnQ= 57733\nX2luZHM= 57734\nQ2hp 57735\nYXJpdGg= 57736\nRW5jb2RpbmdFeGNlcHRpb24= 57737\nbW91c2Vkb3du 57738\nIEJFVFdFRU4= 57739\nd2VpZ2g= 57740\nIkZvcg== 57741\nLmRk 57742\naXRlbA== 57743\nWU8= 57744\nIERpY2U= 57745\ndW5peA== 57746\nIE9idA== 57747\nIENlZGFy 57748\nIHNwZWNpbWVucw== 57749\ncG9ybg== 57750\nIHVub2ZmaWNpYWw= 57751\n6buR 57752\nc29tZXRpbWVz 57753\nIEJ1bGxk 57754\ndHJ1c3Q= 57755\nZ2V0UmVzdWx0 57756\nIHNtb2tlcnM= 57757\nIHNhbmR3aWNoZXM= 57758\nIGV4aA== 57759\nIEZhZGU= 57760\nX0RD 57761\nIG1hc3R1cmJhdGlvbg== 57762\nZm9ydGF3ZXNvbWU= 57763\nVEhJTkc= 57764\nX2FuZHJvaWQ= 57765\nIGRlZGlj 57766\nLXNlbnNpdGl2ZQ== 57767\nIG5hY2t0 57768\nTElCSU5U 57769\nIGFnb24= 57770\nIERJU0FCTEU= 57771\nb25lc2lh 57772\nYmllcw== 57773\nIFpJUA== 57774\nIGhhdW50ZWQ= 57775\nIGN1aWQ= 57776\nL2NhcnQ= 57777\na29z 57778\nCVJUTFU= 57779\nIGhpbmRlcg== 57780\nIGFkaXBpc2ljaW5n 57781\nSUVOQ0U= 57782\nLmJhbms= 57783\nIEN5cHJ1cw== 57784\nbWl4ZWQ= 57785\nLmN5 57786\nLXNpbmdsZQ== 57787\nPGxlbg== 57788\nQ29taW5n 57789\nIGZhdWx0cw== 57790\nIGZvcmVzZWU= 57791\nZ2V0bGluZQ== 57792\nImE= 57793\nIGJyYWc= 57794\nIGRpc2Nz 57795\nIHJpcGU= 57796\nIG7DpnI= 57797\nIEdH 57798\nU0hPVA== 57799\nZGVyYWJhZA== 57800\nKGVkaXQ= 57801\nVG9MZWZ0 57802\nW10pOwo= 57803\nIGRvR2V0 57804\ndmF0dXJl 57805\nTmVlZGVk 57806\nIENoZW5n 57807\nY2Np 57808\nRUZJ 57809\nIGZldWQ= 57810\nIGx1bmFy 57811\nLlNoYXBl 57812\nTm9ib2R5 57813\nX1RSSUdHRVI= 57814\nQ3k= 57815\nZ3JvdW5kQ29sb3I= 57816\nIFJlbW92YWw= 57817\nKGJvdHRvbQ== 57818\nJG1zZw== 57819\nU0NJSQ== 57820\ncml0eg== 57821\nIGZyZW50ZQ== 57822\nIGNvbXBvc3Q= 57823\nYW5zd2VyZWQ= 57824\nIFJvZHI= 57825\nX0hUTUw= 57826\nIHNpbGhvdWV0dGU= 57827\nIFFVRVNU 57828\nIENhdGhlZHJhbA== 57829\nLkNvbW1lbnQ= 57830\nIE1u 57831\nLW5ldHdvcms= 57832\nLmdldEZpbGU= 57833\nLmdlbmVyYXRvcg== 57834\nIENoZWNrb3V0 57835\nX3pvb20= 57836\nIGVuY29kZVVSSUNvbXBvbmVudA== 57837\nX1RD 57838\nc29t 57839\nIFNlcmll 57840\nIGJhc2VVUkw= 57841\nCXJ1bg== 57842\nIGh1aA== 57843\nLnNlbGVjdGVkSW5kZXg= 57844\nIFNUQVI= 57845\nfi1+LQ== 57846\nYWJjZGVmZ2g= 57847\nLm1hcHBpbmc= 57848\nPWRhdGV0aW1l 57849\nQ29vbA== 57850\nbmlt 57851\nIERpcmVjdGl2ZQ== 57852\nRmVkZXJhbA== 57853\nIG1lbnVJdGVt 57854\nINCQ 57855\nQW5uYQ== 57856\nIFJlY3JlYXRpb24= 57857\ncnlhbg== 57858\nLWFnZWQ= 57859\nemVyYmFp 57860\n4oCm4oCdCgo= 57861\nY2FtcG8= 57862\nIG1pbmlhdHVyZQ== 57863\nZGV0YWNo 57864\nbWVhbmluZw== 57865\nX2VtcA== 57866\nUGVhaw== 57867\nIGJjbQ== 57868\nIEh1bmdhcmlhbg== 57869\nIENhc2NhZGU= 57870\nIHNhY2tz 57871\nIHRydW5jYXRl 57872\nIOKWiOKWiA== 57873\nIHdoYWxlcw== 57874\nIHNvcnRhYmxl 57875\nIGFzc2VydHM= 57876\nIHNlYWxz 57877\nb2N5dGVz 57878\nXSkpKQo= 57879\nYWxhcm0= 57880\ncmVzc2luZw== 57881\nKHNpZ25hbA== 57882\nIGVtcGVyb3I= 57883\nCU9O 57884\nY29tbWl0dGVl 57885\nIHRyaWxvZ3k= 57886\nLlRyYW5zYWN0aW9uYWw= 57887\nR3Jvdw== 57888\nX3VhcnQ= 57889\nIHN3aW5ncw== 57890\nIHNwZWN0YWNsZQ== 57891\n4oCZYXY= 57892\nIFNlbnRpbmVs 57893\nINmE 57894\nIFRvdQ== 57895\nIHdpZG93 57896\nZ2VyYWxk 57897\nLHVpbnQ= 57898\nIHVudXN1YWxseQ== 57899\nPENhcmQ= 57900\nIFJlc3RhcnQ= 57901\nbW9y 57902\n44GC44KK 57903\naXhlZFJlYWxpdHk= 57904\nIGhhbmRndW4= 57905\n4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 57906\nIGxpdGhpdW0= 57907\nUmVzb2x2ZQ== 57908\nZ2V0Qnl0ZXM= 57909\nL2Z1bmN0aW9ucw== 57910\nIHRhY2tsaW5n 57911\nT3V0bGluZWQ= 57912\nIH08Lw== 57913\nIFNleG8= 57914\nIEFuaw== 57915\nIHJhdGlvbmFsZQ== 57916\ncmVtb3ZlQXR0cg== 57917\nIG11bmljaXBhbGl0eQ== 57918\nIGFzc2F1bHRz 57919\nQ0hPT0w= 57920\nIFJlZQ== 57921\nIGJhdWQ= 57922\npqw= 57923\nIGVuaGFuY2Vz 57924\nINC/0YDQtdC0 57925\nIGNvbmNlc3M= 57926\nLmluc3RhZ3JhbQ== 57927\nLmdldFJlc3BvbnNl 57928\nc2VnbWVudHM= 57929\nIHdlbGxiZWluZw== 57930\nfTsKCgoK 57931\naHVuZw== 57932\n44OG 57933\nIHJlbm92YXRlZA== 57934\nLmV4cGVjdGVk 57935\nIHJhZGlhbA== 57936\nIGNvbW11bmFs 57937\ndXNlck1hbmFnZXI= 57938\nK2E= 57939\nIGZ1bmRhbWVudGFscw== 57940\nLlRI 57941\n6II= 57942\nIHJhbnQ= 57943\nIFN0cmF3 57944\nIE9sZURi 57945\nYXppbw== 57946\nIGhhbWJ1cmc= 57947\nIHBhaW50cw== 57948\nIHRodW1icw== 57949\nIE51bGxQb2ludGVyRXhjZXB0aW9u 57950\nIGdyb3VwZQ== 57951\nIEhvbWVDb21wb25lbnQ= 57952\nIGJhbGxv 57953\nIElOSVRJQUw= 57954\nX2FyZQ== 57955\nIFBlcw== 57956\ndXJzZXM= 57957\nIGJhcmR6bw== 57958\nLmdldExlbmd0aA== 57959\nYW1vdG8= 57960\nLm5vdGlmeURhdGFTZXRDaGFuZ2Vk 57961\naWVuZXM= 57962\nZW56aWU= 57963\nX2VtYg== 57964\ndW1uaQ== 57965\nc21vb3Ro 57966\nIERybw== 57967\ncGFzdGU= 57968\nIE5hcnI= 57969\nLS0tLQoK 57970\nz4k= 57971\nIEF1dG9y 57972\nIG91dHJvcw== 57973\nIExBQkVM 57974\nLnBh 57975\nLlN0dWRlbnQ= 57976\nKFhtbA== 57977\nIGV0aG5pY2l0eQ== 57978\nIEl2eQ== 57979\n44KI 57980\nX2Zha2U= 57981\nPyg6 57982\ndXBsb2FkZWQ= 57983\nZ2V0TWFuYWdlcg== 57984\nLVFhZWRh 57985\nb2RpYWM= 57986\nQ29ubm9y 57987\naWhhbg== 57988\nTUFU 57989\nKG1pZA== 57990\nIEFsYmFu 57991\nIHNvaXI= 57992\nQ29tYm8= 57993\nIFB1YmxpY2F0aW9u 57994\nb3BvdWxvcw== 57995\ncGlz 57996\nIHRlbXBsZXM= 57997\nb25neWFuZw== 57998\nX2NsaWVudHM= 57999\nIHJvZHM= 58000\nIHhj 58001\naWprZW4= 58002\nIHJlYXA= 58003\nIOS4i+WNiA== 58004\nCWNvbm5lY3Q= 58005\nRm9jdXNlZA== 58006\nLGNvdW50 58007\naWV0ZXQ= 58008\nIGhhY2lh 58009\nX2FsbG9jYXRvcg== 58010\nIHRveGljaXR5 58011\nKHNlcXVlbmNl 58012\nIG51ZXN0cm9z 58013\nIFByaW5jaXBsZXM= 58014\nIGxsZQ== 58015\nYWxhcmlh 58016\nLndyaXRlU3RyaW5n 58017\nIEFGTA== 58018\naWZuZGVm 58019\nIERvcw== 58020\nxZtjaWU= 58021\nIEFnZ3JlZ2F0ZQ== 58022\nIHNhY3JpZmljZXM= 58023\nX29mZnNldHM= 58024\nbGRi 58025\nIGxhdGNo 58026\nIGZ1bGxzY3JlZW4= 58027\nbWlzc2l2ZQ== 58028\nT1BUSU9OUw== 58029\nIFRlbGVwaG9uZQ== 58030\nIGFyc2VuYWw= 58031\namVqZXI= 58032\nIEhvc3A= 58033\nIGZhdm91cml0ZXM= 58034\ncml2ZQ== 58035\nLmluY3JlbWVudA== 58036\nIGJ2 58037\nIEZhbnRhc3RpYw== 58038\nLnNheQ== 58039\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 58040\nIG1lZGljaW5hbA== 58041\nIERST1A= 58042\nIHBpdHk= 58043\nbWV0aXM= 58044\nIHdvbGxlbg== 58045\nIGJlZg== 58046\nX0Js 58047\nID4+Cgo= 58048\nYm93ZXI= 58049\nIHN3YXBwZWQ= 58050\nL2luc3RhbGw= 58051\nIHNpbmtz 58052\nZXRyaXpl 58053\nIGRlY2xpbmVz 58054\nCW15c3Fs 58055\nIENTdHJpbmc= 58056\nIE1vdGlvbkV2ZW50 58057\nLkxhbmd1YWdl 58058\nUm9hZA== 58059\n0YLQtdGA 58060\nYXNjaW1lbnRv 58061\nJykpLT4= 58062\nLmFib3V0 58063\nKGVkaXRvcg== 58064\nIFJhdGluZ3M= 58065\naW5jb21l 58066\nxaFl 58067\nLmRlcXVldWVSZXVzYWJsZUNlbGw= 58068\nIEF1c3RyaWFu 58069\nIHN1bGxh 58070\nIFRyaWJ1bmFs 58071\nIERpZG4= 58072\n0L7QstCw0YA= 58073\nIGluc3BlY3Rpb25z 58074\nQm9zcw== 58075\nIGNvY2t0YWlscw== 58076\nIGFwb2xvZ2l6ZWQ= 58077\nX3N1YnBsb3Q= 58078\nb3BhbA== 58079\nKz0o 58080\nIHJlc29uYW5jZQ== 58081\naWJ1 58082\nIOumrA== 58083\ncm9tYQ== 58084\ncmVzZXJ2ZQ== 58085\ncGxz 58086\nIFRhaA== 58087\nYXhpZXM= 58088\nT1BMRQ== 58089\nIERhcnJlbg== 58090\nIFpvbWJpZQ== 58091\nX01hcA== 58092\nIF0pCgo= 58093\nIFFp 58094\nIFNhaWw= 58095\nIHJlc3RyaWN0aXZl 58096\nIGVyb3Npb24= 58097\nLXBhcg== 58098\nV0hJVEU= 58099\nIG9sZHU= 58100\nIGFwZXJ0dXJl 58101\nIGJpdGNvaW5z 58102\ndGV4dG8= 58103\nIENvbWNhc3Q= 58104\nIHRpbWVsZXNz 58105\nZW5raW5z 58106\nIGZlZWRlcg== 58107\nL3RtcA== 58108\ncmVzZGVu 58109\nKydf 58110\nLkRlc3Ryb3k= 58111\nIMOnb2s= 58112\nIERPQ1VNRU5U 58113\nLmxuZw== 58114\nLnRhZ05hbWU= 58115\nIGt1bGxhbg== 58116\nZWdyYXRl 58117\nICgqLg== 58118\n57yW6L6R 58119\nIGhhbmRzaGFrZQ== 58120\nc29j 58121\nX2dlb21ldHJ5 58122\nIERhbWFzY3Vz 58123\nTWlub3I= 58124\nIEthZmth 58125\n7Jes 58126\nRmxvcmlkYQ== 58127\nX2NvbXB1dGU= 58128\nLmV4cHI= 58129\nIHBhcmFsbGU= 58130\nIERpYXo= 58131\nY2ly 58132\nW3RhcmdldA== 58133\nIGpva2luZw== 58134\nIGdsb3I= 58135\nKHNldHE= 58136\nX2hhbmRsZXJz 58137\nSGFuZw== 58138\nIGZlcnI= 58139\ncmltaW5hbA== 58140\nCSAgICAJCQ== 58141\nZW50aWVz 58142\nZGVmaW5lcw== 58143\nLXRheA== 58144\nanNvbnA= 58145\nIFVQUw== 58146\nbWV0cm8= 58147\nX187Cg== 58148\nIFVnYW5kYQ== 58149\nXSkpOgo= 58150\nX3Rk 58151\neGFl 58152\nbHc= 58153\nLk9T 58154\nIExvZ2dlZA== 58155\nYWNpZA== 58156\nIE1heW8= 58157\nYXNwZWN0 58158\nIHZhZ2luYWw= 58159\nIGluaXRpYWxpemluZw== 58160\nIHN0ZXJvaWRz 58161\nZmljdGlvbg== 58162\nR1JF 58163\nZ2VuZA== 58164\nIGxpYWJpbGl0aWVz 58165\nIExldHM= 58166\nTWVjaA== 58167\nKG5j 58168\nKGNoYW5nZQ== 58169\nIGNvbm5lY3RvcnM= 58170\nOms= 58171\nIHRhc3Q= 58172\nISIpOwoK 58173\ndGhpbmdz 58174\ncm9waHk= 58175\nbHVldG9vdGg= 58176\nIFNpZ25VcA== 58177\nLmN0cmw= 58178\nIHRoZXJlaW4= 58179\nb3JkYQ== 58180\nLmVzY2FwZQ== 58181\naWdhdG9y 58182\nIHBldHJvbA== 58183\nIHNwZWNpbWVu 58184\nIGRlYnV0ZWQ= 58185\nLVBybw== 58186\nIGNyaXNlcw== 58187\nLmFkZFZpZXc= 58188\n64+Z 58189\nLWRvb3I= 58190\nIG1vbmV0 58191\nIG1pbGxpcw== 58192\nIHZpZXI= 58193\nSW50ZXJuYWxFbnVtZXJhdG9y 58194\nIGFkbWlucw== 58195\nIExhaXI= 58196\nemlu 58197\nZ2V0UXVlcnk= 58198\ndW1ibGVz 58199\nTElNSVQ= 58200\nIFZpZw== 58201\nX3Nvbmc= 58202\nPENoYXJhY3Rlcg== 58203\nOjou 58204\nX2hvbQ== 58205\nX2Jw 58206\nIFN1cGVydmlzb3I= 58207\nc3VibWlzc2lvbg== 58208\nYWJpbGU= 58209\nIG5vaQ== 58210\nT3JDcmVhdGU= 58211\nIHBlZWw= 58212\nIG9uU3RhcnQ= 58213\nIHNlbnRpbWVudHM= 58214\ndmVoaWNsZXM= 58215\nIGNsYXNzcm9vbXM= 58216\nIHN6ZXI= 58217\nIGJlbmRpbmc= 58218\nIGxvbmdldml0eQ== 58219\nIGFjbA== 58220\nIEFsZXBwbw== 58221\nIFVN 58222\nIFJpY2h0 58223\nIG11bHRpcHJvY2Vzc2luZw== 58224\nRE9NQUlO 58225\nIiwiKw== 58226\nX1lFQVI= 58227\nIHNjcmFwZQ== 58228\nIHNvbGl0YXJ5 58229\nICJdIjsK 58230\nL2Vycm9ycw== 58231\n7J6s 58232\nnOugpQ== 58233\nYmV0dGVy 58234\nCW51bWJlcg== 58235\nIExG 58236\nIEFjcm9zcw== 58237\nUHViTWVk 58238\nXCIi 58239\nIEV4Y2VsbGVuY2U= 58240\nIHVzYW5kbw== 58241\nIFVJUA== 58242\nQWN0aXZpdHlJbmRpY2F0b3I= 58243\nX1ZPSUQ= 58244\nIGJyZWVkcw== 58245\n772l 58246\ndWVzdGFz 58247\nIFRyZWFzdXJl 58248\ndXN0cmFsaWFu 58249\nKGZhY2U= 58250\nIFRlbm5pcw== 58251\nCUludA== 58252\nIEhhbnNlbg== 58253\n57U= 58254\nOkk= 58255\nIOKclA== 58256\nR1JBWQ== 58257\nT1VTRQ== 58258\nIGhlcGF0 58259\noO0= 58260\nQUlS 58261\nw7PFvA== 58262\nIHF1ZXVlZA== 58263\ndmluY2lh 58264\nIENocm9taXVt 58265\nIGNvbXBldGVuY2U= 58266\ndW5nYWw= 58267\naWxsaQ== 58268\nIGdldEJ5 58269\nIEZpbmRlcg== 58270\nIGluY2FwYWJsZQ== 58271\nIHNhZGQ= 58272\nIGNpdGVz 58273\nIENodXJjaGlsbA== 58274\nU2Rr 58275\nTW9yZW92ZXI= 58276\nQXNwTmV0 58277\nKEZsb2F0 58278\nJHBhc3N3b3Jk 58279\nIENvbm5vcg== 58280\nLXNlc3Npb24= 58281\nX2Rt 58282\nKikp 58283\nIGRldXRzY2g= 58284\nIE5Y 58285\nIHBlcmtz 58286\nX1NPUlQ= 58287\nX1RPT0w= 58288\nX1ZJU0lCTEU= 58289\nLmFzcA== 58290\n5oiW 58291\nIEJyZWF0aA== 58292\nRGV0ZWN0 58293\nIER1ZWw= 58294\nLmNtYg== 58295\nW2l0 58296\nLlNldEJvb2w= 58297\nIG5hcmNpc3M= 58298\nIGFiaWRl 58299\nIGVqZW1wbG8= 58300\nIOKElQ== 58301\nIG1vcm5pbmdz 58302\nIGNvbXB1dGVz 58303\nLnNzbA== 58304\nanQ= 58305\nIG11Y2hvcw== 58306\nX1NT 58307\nW2VuZA== 58308\nIGJhc2lu 58309\nIGFsZ3Vub3M= 58310\nIENyb2F0aWE= 58311\nbGluZXdpZHRo 58312\nKHRhZ3M= 58313\nKGhpZGRlbg== 58314\nw61jaW8= 58315\nIGFwYXI= 58316\nINC2 58317\n5LiO 58318\nLmZvb2Q= 58319\nIFJ1cmFs 58320\nIGJyZWFkdGg= 58321\n5b2x 58322\nKHNlc3M= 58323\nKyIp 58324\nIFBhc3Rl 58325\nIHNlcnZpZG9y 58326\nIEJpdFNldA== 58327\nIFRyYW4= 58328\nbGF1cw== 58329\ndmV0dGU= 58330\nZXllcw== 58331\nIENMSUNL 58332\nIFZJSUk= 58333\nIFR1cm5z 58334\nIExlQnJvbg== 58335\nIE11ag== 58336\nIERlZw== 58337\nIEFkdWx0cw== 58338\nX3N1aXRl 58339\ncHJvY2Vzc2FibGU= 58340\nIFBIWQ== 58341\nZ2hlc3Q= 58342\nLkZhaWw= 58343\nIFNsYWNr 58344\nY2Vq 58345\nXENhcmJvbg== 58346\nIHN1cGVyc3Rhcg== 58347\nIGhvbGRpbmdz 58348\nKGZvcm1z 58349\nICcjJw== 58350\nTXVsdGlw 58351\nKCJbJQ== 58352\nLXNvbGlk 58353\nL3VybA== 58354\nLXRpZXI= 58355\nW2xlbmd0aA== 58356\nIFN0cmVhbVdyaXRlcg== 58357\nIE1hcmtldHBsYWNl 58358\nZ2V0dGV4dA== 58359\nX1RJQ0s= 58360\nIEZvcmdl 58361\nIGJsYWNramFjaw== 58362\nIERPRVM= 58363\nIE1hdHRlcnM= 58364\nd2F2ZXM= 58365\nIHdoaXNwZXJlZA== 58366\nIGx1c2g= 58367\n7Jik 58368\nZGlnaXRhbA== 58369\nIHdyaW5r 58370\nIEhvZ2Fu 58371\nIHJ1c3RpYw== 58372\nLkFwcGx5UmVzb3VyY2Vz 58373\nIEhhcmR5 58374\nb3NvbWVz 58375\nQVVU 58376\nLlNUQVRF 58377\nIG5hcnJhdGl2ZXM= 58378\nCXN0b3Jl 58379\nYmli 58380\nCVNjYW5uZXI= 58381\nIENvZHk= 58382\nXFJlcG9zaXRvcmllcw== 58383\nIHJldW5pb24= 58384\nYW5kdW0= 58385\n4oCZaA== 58386\nIHNuaWZm 58387\nTlNCdW5kbGU= 58388\nIGNvbXByZWhlbmQ= 58389\nX1VTQUdF 58390\nX29jYw== 58391\nVVJSRU5DWQ== 58392\nSk5J 58393\nIHNwZWNpYWxpemluZw== 58394\nIHZpc2lvbnM= 58395\nIGRvbG9yZQ== 58396\nIHbDoQ== 58397\nIENoZXZ5 58398\nIFN0eWxlZA== 58399\naW1wYWN0 58400\nYWxsZW4= 58401\nIGthcnQ= 58402\nIFRhYmxldA== 58403\nc3R1ZmY= 58404\ncmVlc29tZQ== 58405\n0LDRgtC+0YA= 58406\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 58407\nX0FkbWlu 58408\nIGNlbGxwaG9uZQ== 58409\nIGF1dG9wbGF5 58410\nIGNhbWJpbw== 58411\nIG1hcml0aW1l 58412\nX0JPT1Q= 58413\nLXF1YXJ0ZXI= 58414\nIGxhdGluYQ== 58415\nIEFKQVg= 58416\nZXF1aXY= 58417\nIEZyb250aWVy 58418\nIFhZ 58419\nfV0K 58420\nIFJvdWdo 58421\nLnByb3Rv 58422\nIGNvcnJlY3RuZXNz 58423\nIGZhY2ls 58424\nIFJlYWNoZWQ= 58425\n44Gd44Gu 58426\nVklT 58427\nLnBz 58428\nIHN0cm5jcHk= 58429\nIGRpZmZ1c2lvbg== 58430\nLnN0YXJ0QWN0aXZpdHk= 58431\n77+977+977+9 58432\nIGFjY29tcA== 58433\nQU1FU1BBQ0U= 58434\naW1vbmlhbHM= 58435\nIEJsYXN0 58436\nYWJ5cmlu 58437\nIGRvbWU= 58438\nIGV4dHJhdg== 58439\nIHllbg== 58440\nIGN1bGluYXJ5 58441\nUFJJ 58442\nIENvbW11bml0aWVz 58443\nbmlk 58444\nX29wZXJhdGlvbnM= 58445\nLmhz 58446\nIE1pbHRvbg== 58447\nIG5vaXNlcw== 58448\nQXV0b3Jlc2l6aW5nTWFzaw== 58449\nKGNpZA== 58450\nfQoKCgoKCg== 58451\nXX0sCg== 58452\nIERldGVjdGlvbg== 58453\ndGFibGE= 58454\nIGxpYmVydGllcw== 58455\nX0RZTkFNSUM= 58456\nd2dldA== 58457\nIFTDvHI= 58458\nIFBhc2NhbA== 58459\nVHJhbnNwYXJlbnQ= 58460\nRGVsYXllZA== 58461\nXSgp 58462\nIEhlcmJlcnQ= 58463\nPEFjdGlvblJlc3VsdA== 58464\nY2hhbGxlbmdl 58465\nIG11c2hyb29t 58466\nLmluc2VydEJlZm9yZQ== 58467\nIFJpbg== 58468\nIGh1bW91cg== 58469\nIGbDuA== 58470\nYXBpS2V5 58471\nYWxsb2NhdGVk 58472\nIGNvbmZlc3Npb24= 58473\nLiIsDQo= 58474\nCWFzc2VydFRoYXQ= 58475\nIFNPUlQ= 58476\nIExPUkQ= 58477\nIGV4cG9ydGVy 58478\nLnNldExldmVs 58479\ncG9rZW1vbg== 58480\nYXNodHJh 58481\nIGbDqQ== 58482\ndXJhdG9y 58483\nKE1TRw== 58484\nIHR1cA== 58485\nIEh1bGw= 58486\nIHlpZWxkZWQ= 58487\nLlN1YmplY3Q= 58488\nXFJvdXRl 58489\nIT8= 58490\nINGD0LTQsNC7 58491\nXFNlY3VyaXR5 58492\nLWFy 58493\nIGFsbGVnYXRpb24= 58494\nKFNldHRpbmdz 58495\nw6RuZGVy 58496\nIGVsbGlwc2U= 58497\nIFJldHJvZml0 58498\nIHJlZ3VsYXRpbmc= 58499\nIE1vbGx5 58500\nIExvaw== 58501\nX0N1c3RvbQ== 58502\nIFByb21v 58503\naXNpbg== 58504\nIHJlc3VtZWQ= 58505\nIG1ldHJvcG9saXRhbg== 58506\nLmVycm9yTWVzc2FnZQ== 58507\nOi0tLS0tLS0tLS0tLS08Lw== 58508\nLm1s 58509\nc2NvcGlj 58510\nLnJlZnM= 58511\nYXB0b3Jz 58512\nIEluc3RydW1lbnRz 58513\nIHByb3BhZ2F0ZQ== 58514\nfS0+ 58515\nIHBhc2Fkbw== 58516\ndGhhbms= 58517\nX0RlbGV0ZQ== 58518\nIEJyaWdodG9u 58519\nLHVuc2lnbmVk 58520\n5L2c6ICF 58521\nIGFzcGlyYXRpb25z 58522\nLWhvdw== 58523\nUm9zZQ== 58524\nPSgo 58525\nX25lZWRlZA== 58526\nX3BsdXJhbA== 58527\nPEFwcGxpY2F0aW9u 58528\nIFdFRUs= 58529\nIFVubG9jaw== 58530\nIFRFTVA= 58531\nU291 58532\nIHNjaGl6b3BocmVuaWE= 58533\nIHRyb2xs 58534\nIGNvbXBsZW1lbnRhcnk= 58535\nIE5FVFdPUks= 58536\nIGJsaXI= 58537\nIHByb2dyZXNzRGlhbG9n 58538\nIiUo 58539\nIEF0dHJpYnV0ZVNldA== 58540\nCXRz 58541\nLml0ZXJpdGVtcw== 58542\n6K+d 58543\nIGVzY3JpdA== 58544\ndm91cw== 58545\nX3BsYWNlcw== 58546\nSEs= 58547\nIHNlZ3Vpcg== 58548\nX2Z3 58549\nIFJvdW5kZWQ= 58550\nIGRpc3Bvc2l0 58551\n6KeG 58552\ncGFybQ== 58553\nd293 58554\nU1RSVUNUSU9O 58555\nLmFsbG93 58556\nIENoYXJTZXF1ZW5jZQ== 58557\nCWV4dGVybg== 58558\nIHByb3NlY3V0ZWQ= 58559\nIG1vcnRhcg== 58560\nIEp1ZGE= 58561\nLW1zZw== 58562\nIGVzdHVk 58563\nLmdldERlc2NyaXB0aW9u 58564\nIHNvdw== 58565\nYW1icmU= 58566\nIHJvbWE= 58567\nRW5o 58568\nYm9udXM= 58569\nIHNxdWF0 58570\nIGRpc3RyYQ== 58571\nZWRJbWFnZQ== 58572\nIHBlcHBlcnM= 58573\nLXBlcmZvcm1hbmNl 58574\nLAoKCg== 58575\nLGZpbGU= 58576\nIE1JTUU= 58577\nX2NvbmNhdA== 58578\nQUJT 58579\nLWZhc2hpb24= 58580\nIHVuZGVyY292ZXI= 58581\nT25lVG9NYW55 58582\nIHJlY2xhaW0= 58583\nQ09QWQ== 58584\nIGJpbmRz 58585\nIFRhcGU= 58586\nIGdvc3NpcA== 58587\nIEVxdWl0eQ== 58588\nL0NhcmQ= 58589\nLmFjdGl2 58590\nJ2Ft 58591\nIGRyYWluYWdl 58592\nPFNjYWxhcnM= 58593\nIG9uQmluZFZpZXdIb2xkZXI= 58594\nKCk/Lg== 58595\nIHNvcnJvdw== 58596\nIEli 58597\ndXB5 58598\nX1VVSUQ= 58599\nIENoYXJt 58600\nIEVsZWN0aW9ucw== 58601\nLm9uRGVzdHJveQ== 58602\nIEludGVyZXN0aW5nbHk= 58603\nb3VuZGluZ0JveA== 58604\nX2RldGVjdGlvbg== 58605\nLWhlbGQ= 58606\nX3Vua25vd24= 58607\nIHJlZnJhaW4= 58608\nIG3DqXRvZG8= 58609\nIGVCb29r 58610\nRU5PTUVN 58611\nIGRhbmc= 58612\nUHJvZmVzc2lvbmFs 58613\nIGRpY3Rpb25hcmllcw== 58614\nL215c3Fs 58615\nIFNUVUQ= 58616\nIG1hc3Nl 58617\nc2NhcGU= 58618\nIGRyZWk= 58619\nOm5hbWU= 58620\nLmxvZ28= 58621\nU2lnblVw 58622\nIHRhaHVu 58623\nKHRoZW1l 58624\nIEZlbW1l 58625\nIGJvbWJlcg== 58626\nIEphZGU= 58627\nIFRheQ== 58628\nIHN1Ym1hcmluZQ== 58629\nX2NsYXVzZQ== 58630\nenljaA== 58631\nIHNpbXVsdGFuZW91cw== 58632\nIGNhc29z 58633\nLmJvb2xlYW4= 58634\nKGxocw== 58635\nIGNvbnRpbmVudGFs 58636\nLXNhbGU= 58637\nCWVudg== 58638\nIEN1dGU= 58639\nIEZhY3RvcnlHaXJs 58640\nYWJ1cw== 58641\nL3ZhbHVl 58642\nIGphZHg= 58643\nIHN0ZXJu 58644\nPj4KCg== 58645\nIHN1cmZhY2Vk 58646\nIOyggOyepQ== 58647\ncGxhdHo= 58648\nCWVtYWls 58649\nY2VwdG9ycw== 58650\nIj4o 58651\nIGVwaWxl 58652\n6K+7 58653\nIERlYnQ= 58654\n5ZGK 58655\nTk9Q 58656\nImh0dHBz 58657\nOmo= 58658\nRm9ybUl0ZW0= 58659\nX0xJQ0VOU0U= 58660\nLmdldERvdWJsZQ== 58661\nIEFnZW5kYQ== 58662\nCWZpbmFsbHk= 58663\nKGZpbHRlcnM= 58664\nKGF2 58665\n576O 58666\nQVBFUg== 58667\nIGxhdmE= 58668\n0LXRgNC2 58669\nKSkpKQoK 58670\nIGZhdWx0eQ== 58671\nX25t 58672\nIHRyYXZh 58673\nKEJpdG1hcA== 58674\nIHNwZWVkaW5n 58675\nPicpLg== 58676\nIHNjcmVlbmVk 58677\nX3JvbGw= 58678\nIE1hY0Jvb2s= 58679\nIEFVRA== 58680\nIGRpYWdub3Nl 58681\nLkdlbmVyYXRl 58682\nIF5e 58683\nIHN0cnM= 58684\nW1Rlc3Q= 58685\nIHJhbnNvbQ== 58686\nIERIQ1A= 58687\nZWxkZW4= 58688\nIGludGVycHJldGF0aW9ucw== 58689\nKCldLg== 58690\nZmxhdE1hcA== 58691\nIGxpbmVIZWlnaHQ= 58692\nX21vdW50 58693\nIFdpemFyZHM= 58694\nIHNsdXRz 58695\nZWhsZXI= 58696\nb2RhbA== 58697\nIG1pbGl0aWE= 58698\n5bI= 58699\nZWFybmVk 58700\nIG1pc2VyeQ== 58701\naW50dmFs 58702\nZnVuZA== 58703\nIGhpZGVz 58704\nIGRpYXJy 58705\nIFdlc2xleQ== 58706\nIHhtbQ== 58707\nIHF1ZW0= 58708\nIEFyYWJz 58709\naWZ0aA== 58710\nYXRlZ29yaXplZA== 58711\nRGlzcG9zYWJsZQ== 58712\nUHVyZQ== 58713\nX05PVElGWQ== 58714\nc25pcHBldA== 58715\nIEdhcnJldHQ= 58716\nLnJ1bm5pbmc= 58717\nLndlaWdodHM= 58718\nICgtLQ== 58719\nIGludmFyaWFudA== 58720\n5LqL5Lu2 58721\nIEFsbG93ZWQ= 58722\nZGlycw== 58723\nIHBhc3Npb25z 58724\nIGxhZA== 58725\nIEZsdXNo 58726\nbWVudXM= 58727\nOmJsb2Nr 58728\nIGNvbXByYQ== 58729\nLmNob21w 58730\nYWxsb2NhdG9y 58731\nIGN1cmF0ZWQ= 58732\nIEtub3dpbmc= 58733\nIFBhdHRlcnNvbg== 58734\nIHRlbGFo 58735\nJ2V4 58736\nIGRvb21lZA== 58737\nIHBoaWxhbnRo 58738\nb3R0eQ== 58739\nLnN0eWxlcw== 58740\nT3duZWQ= 58741\nIGFsbGVyZ2llcw== 58742\nPXBhcmFtcw== 58743\nb2Nlc2U= 58744\naXRlbGlzdA== 58745\nIFNlbmRpbmc= 58746\nYmVm 58747\nb3JyYXI= 58748\nIE7Do28= 58749\nIEZhcmdv 58750\nIEx1Yg== 58751\nIENvbWJpbmVk 58752\nX2dpdmVu 58753\nCQkJCQkgICAg 58754\nIHJlY29uY2lsaWF0aW9u 58755\nUGF0dGVybnM= 58756\nYXphcmQ= 58757\nIGJpb21hc3M= 58758\nIEhvdXNlcw== 58759\ncmVzcHVlc3Rh 58760\nY2Nv 58761\nL3RvcGljcw== 58762\nIFl1aw== 58763\nIHdlYWtlbmVk 58764\nX2NhbGVuZGFy 58765\nIG11bGhlcmVz 58766\nIE1hcmw= 58767\nIHNpbmU= 58768\nIFRpbA== 58769\nIFNvdWxz 58770\nIERldXRzY2hl 58771\nIEZPTExPVw== 58772\nIHBpcGVsaW5lcw== 58773\nIEJldmVybHk= 58774\nX0RJUFNFVFRJTkc= 58775\nIiM= 58776\nIFByb3Rv 58777\nLmJpZw== 58778\nIFNhdmluZ3M= 58779\nIFRhbno= 58780\nanVu 58781\nIEdhbW1h 58782\nIFNhZGQ= 58783\nIGFkdmlzb3Jz 58784\nIHJvYXN0 58785\nIHVudGVycw== 58786\ndWRpZXM= 58787\nX2xvbg== 58788\nLXBvaW50ZXI= 58789\nIEVsZW1lbnRSZWY= 58790\nXEJ1aWxkZXI= 58791\nZXhhbXBsZUlucHV0 58792\nLndlYmRyaXZlcg== 58793\nZGF0YVR5cGU= 58794\nIFF1aXRl 58795\nIENlbHRpY3M= 58796\ndWls 58797\nLWRlZmVuc2U= 58798\nYmlzaA== 58799\nIFVJV2luZG93 58800\nIFN1ZGRlbmx5 58801\nLmhvdA== 58802\nLnJlYXNvbg== 58803\nIGfDtnI= 58804\nQU1E 58805\nLk11bHRp 58806\nYXV0aGVudGljYXRlZA== 58807\ncmVnaW9ucw== 58808\nOyg= 58809\n0LDRgNCw0Lw= 58810\nIEtpcmJ5 58811\nJHJvdXRl 58812\nUFJFQ0FURUQ= 58813\nIER1cmhhbQ== 58814\nb3dv 58815\nIFBlcmZvcm1z 58816\nIGRpc3JlZ2FyZA== 58817\nbnN0 58818\nIFBvbHM= 58819\nIGdldFA= 58820\nIl06 58821\nLWNvbG9yZWQ= 58822\nKEtleXM= 58823\nIEFsbGVn 58824\nX21vZGlmeQ== 58825\nX2xvYWRpbmc= 58826\nc3RyYWluZWQ= 58827\nIGF0cm9j 58828\nX3Bocg== 58829\nPFNwcml0ZQ== 58830\nIHNhdGlzZmFjdG9yeQ== 58831\nbWFuc2hpcA== 58832\nLnBpcGVsaW5l 58833\nVG9ueQ== 58834\nIHRoaWVm 58835\ncG9sYXRvcg== 58836\nKGxvY2s= 58837\nYnVyc3Q= 58838\nIE9wdGltaXphdGlvbg== 58839\nIHN1cmZpbmc= 58840\nIlllcw== 58841\nIGRlc2NlbmRlZA== 58842\n5pI= 58843\nX0NsZWFy 58844\nIGNyaWVz 58845\nIEZyb3plbg== 58846\nRElSRUNU 58847\nLUNvbg== 58848\nIExlaWNlc3Rlcg== 58849\n5aWz 58850\nT09N 58851\nPWRi 58852\nIGdldE1lc3NhZ2U= 58853\nPFN0dWRlbnQ= 58854\nX2JhdGNoZXM= 58855\nLk1hc2s= 58856\nX2V0aA== 58857\nXCk= 58858\nIHNvbWE= 58859\nQ2F0Y2g= 58860\nW2No 58861\nT3duZXJz 58862\naW5kbGU= 58863\nOmF1dG8= 58864\nLnZlcnQ= 58865\naXZy 58866\nLnNldExvY2F0aW9u 58867\nIGZsdWVudA== 58868\nX0VORElBTg== 58869\nIENhcmxv 58870\nY2VwdHM= 58871\nYWRkQWN0aW9u 58872\nLm9hdXRo 58873\nPFVuaXR5RW5naW5l 58874\ncmVlbWVudHM= 58875\nLlNraXA= 58876\nPykKCg== 58877\nLmRlZmF1bHRQcm9wcw== 58878\nIGNhYmU= 58879\nIFNoZW4= 58880\nZXJvc2lz 58881\nIFByb2ZpdA== 58882\nIHBvaXM= 58883\nX0NSRUFURUQ= 58884\nIHJlbW92ZUZyb20= 58885\nKHdz 58886\nP2FjdGlvbg== 58887\nKEZpZWxk 58888\nIGVycm9uZQ== 58889\nLm1pbmltdW0= 58890\nIFJldHJpZXZlZA== 58891\nIGRhZG8= 58892\nIFBSSVZBVEU= 58893\nLXNwZWM= 58894\nIGd6aXA= 58895\ncGRhdGE= 58896\nIHBvc1k= 58897\nKGxvdw== 58898\nIHF1YWxxdWVy 58899\nL2Nsb3Vk 58900\n6rKM 58901\nKGNvbW1vbg== 58902\nIEFyYmVpdA== 58903\nb3JnYW5pc2F0aW9u 58904\nIHRpZHk= 58905\nIFJvbGFuZA== 58906\nKHBo 58907\nLnpvbmU= 58908\nIGdlbnRsZW1lbg== 58909\nxrDhu6Nj 58910\n5bGx 58911\nIGVuY2xvc3VyZQ== 58912\nIE1hbmFmb3J0 58913\nCUNvbG9y 58914\nU3RlbmNpbA== 58915\nTmlj 58916\nIHRoZW9yZW0= 58917\nIFZH 58918\nIGNvbG91cmVk 58919\nVkJveExheW91dA== 58920\ndWxzaXZl 58921\nRHJhZ29u 58922\nY2Zm 58923\nZXRlc3Q= 58924\nZW5zYQ== 58925\nb2ZkYXk= 58926\nLkF6dXJl 58927\nOlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZQ== 58928\nX3VwZGF0ZXM= 58929\nIHRyZW5keQ== 58930\ndWdhcw== 58931\nd2Vha1NlbGY= 58932\nIHJpZGdl 58933\naWJyaQ== 58934\nIOy2lA== 58935\nKENH 58936\nIE1vbmtleQ== 58937\nLndyaXRlSW50 58938\nLnRpbWVkZWx0YQ== 58939\nVmlld0NvbnRyb2xsZXJBbmltYXRlZA== 58940\nIFByb3ZpZGVuY2U= 58941\n44GI 58942\nIGJsZW5kcw== 58943\nL1N1YnRocmVzaG9sZA== 58944\nIEFwcGw= 58945\nIGF0YW4= 58946\nIHJlbG9hZERhdGE= 58947\ndW1ib3Ryb24= 58948\nc3TDvHQ= 58949\nT0F1dGg= 58950\nIEdpdmluZw== 58951\nIOyEpA== 58952\nIEZpbm5pc2g= 58953\nY2hlY2tpbmc= 58954\nLkVtYmVk 58955\nc2VxdWVsaXpl 58956\nIGluaXRpYWxpemVz 58957\nIE9zbG8= 58958\n2LY= 58959\nZ2V0RXh0ZW5zaW9u 58960\nX0FMVA== 58961\nKGJsYW5r 58962\nIGZhdGFsRXJyb3I= 58963\nIGRlbWlzZQ== 58964\nKioqKioK 58965\nIFhT 58966\nKEFG 58967\nIEVucw== 58968\nYW50aGE= 58969\nIFBPUg== 58970\nIG5pY2g= 58971\nLk5hbWVk 58972\nIGdpZ2FudGlj 58973\nIE9ic2VydmF0b3J5 58974\nLlJlc29sdmU= 58975\nIFBheW1lbnRz 58976\nZ3VpbGQ= 58977\nIGN1cnJlbnRTdGF0ZQ== 58978\nPT09PT09PT09PT09PT09Cg== 58979\nIFNleQ== 58980\ncERhdGE= 58981\nIGRlYWRsaW5lcw== 58982\nIGNlbnRyYWxpemVk 58983\nIFNjaG9sYXJzaGlw 58984\nX3N1cHBvcnRlZA== 58985\nLmNocm9tZQ== 58986\nKCldKTsK 58987\nIGN5YW4= 58988\nIENhZ2U= 58989\nQXV0aG9ycw== 58990\nXw0K 58991\nL29z 58992\na2lt 58993\nZGVl 58994\nLnRleA== 58995\nIHlvdXJzZWx2ZXM= 58996\nIG1ncg== 58997\nIGFsaw== 58998\nLWluc3RhbGw= 58999\nIGRyYWZ0aW5n 59000\nIHJ1bW9y 59001\nIHN0YXR1ZXM= 59002\nUG9vbGluZw== 59003\nb2xpbmE= 59004\nQUFBQUFBQUE= 59005\nLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 59006\nIGV4dHJlbWlzdHM= 59007\nQ2FsY3Vs 59008\naWdodGhvdXNl 59009\nSW5zZXQ= 59010\nKElOUFVU 59011\nIHN5bmNocm9uaXphdGlvbg== 59012\naXZpcnVz 59013\nLmF4ZXM= 59014\nIEdhcA== 59015\nLUFu 59016\nX1RlbXBsYXRl 59017\nIGdhbWVy 59018\nIENyaWNrZXQ= 59019\nIGxpbnQ= 59020\nIGF1dGhvcml0YXJpYW4= 59021\nTlNVSW50ZWdlcg== 59022\nIHJlZG8= 59023\nIGFkaXBpc2Npbmc= 59024\nX0ZFVENI 59025\nY2hlaWQ= 59026\nIEZhbmc= 59027\nLmluZGljZXM= 59028\ndG9uZQ== 59029\n0LTQtdC7 59030\nIHt7LS08 59031\nYnJhaGlt 59032\nIHNhbGE= 59033\nZ2V0Q29kZQ== 59034\nIGNvbW11bmljYXRlZA== 59035\nc3RhcnRzV2l0aA== 59036\nZXJ0eg== 59037\nUmVhZGFibGU= 59038\nSXRlbUlk 59039\nb3JlZmVycmVy 59040\nY3JlZGlibGU= 59041\nw6FyaWE= 59042\nIGNvbWJpbmVSZWR1Y2Vycw== 59043\nKiovCgo= 59044\nIGJsaXNz 59045\nIGFkb3Ju 59046\nZGVwZW5kcw== 59047\nIFJPT00= 59048\nIGZyYW1pbmc= 59049\nID8nLA== 59050\nYXV0eQ== 59051\nX3BvdA== 59052\nX3RhYnM= 59053\nRXhhY3Q= 59054\nLCIs 59055\nICd9JzsK 59056\nIGFyYml0cg== 59057\nYWhyYWlu 59058\nLmdldFN0cmluZ0V4dHJh 59059\nICRc 59060\nIG91dHB1dFN0cmVhbQ== 59061\nIGNvbW1lbmM= 59062\nYW51cw== 59063\nY2h5 59064\nPEVtcGxveWVl 59065\nIGhleGF0cmlnZXNpbWFs 59066\nIG5hY2lvbmFs 59067\nKHNlcmlhbGl6ZXJz 59068\nX3B1dGNoYXI= 59069\nX1NBRkU= 59070\nZW50aWFsQWN0aW9u 59071\nSXRlbVNlbGVjdGVkTGlzdGVuZXI= 59072\nLkRpc3BhdGNo 59073\nQ29uZmxpY3Q= 59074\nX2Fib3V0 59075\nb3NhdXI= 59076\nQm91bmRhcnk= 59077\nIGNsZWFyQ29sb3I= 59078\nKExvY2F0aW9u 59079\nIE1PTlRI 59080\nIFRhc3Rl 59081\nLUdlbmVyYWw= 59082\nIFdBUg== 59083\nIGVyaGFsdGVu 59084\nLXNhdmluZw== 59085\nIGNvdXBsaW5n 59086\nLXRyaWdnZXI= 59087\nbW90b3I= 59088\nIHl5eXk= 59089\nIFBhdGVudA== 59090\ncHRv 59091\nIG1pc2RlbWVhbm9y 59092\ndmFzaW9u 59093\nIEFkbWlyYWw= 59094\n4LmJ4Liy 59095\nX1BXUg== 59096\nIGRldmFzdGF0ZWQ= 59097\nZm9saW9z 59098\nSVRVREU= 59099\ndXJyZWN0 59100\nIHJvYm90aWM= 59101\nIFNhbmN0 59102\nIEhhd2FpaWFu 59103\nLlJvdXRl 59104\nLWNvbmRpdGlvbg== 59105\nIHJr 59106\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK 59107\nY3JlYXRlRWxlbWVudA== 59108\nIEtvcA== 59109\naWduYW50 59110\nLnJvbGxiYWNr 59111\nIHNhbHVk 59112\nXycs 59113\nIEFOU0k= 59114\nRXhjZXB0 59115\nIERyYXdhYmxl 59116\nLlV0Y05vdw== 59117\nIjpbewo= 59118\nIGtvbGU= 59119\nTHVh 59120\nIEJlbGlldmU= 59121\nQ29tcHV0 59122\nIGhhbGx1Yw== 59123\nIFNpZ25z 59124\ncnN0 59125\nLmh1 59126\nIEtOT1c= 59127\nV2k= 59128\nIEJyYXNz 59129\nIFJhcw== 59130\nQGhvdG1haWw= 59131\nIHNlZGltZW50 59132\nIGFwaw== 59133\nIOyDgQ== 59134\nX3JlZ2lvbnM= 59135\nIHBvZGl1bQ== 59136\nPEJvb2s= 59137\n0LbQtQ== 59138\nIHNpeHRlZW4= 59139\nIEFsaWFz 59140\nIGluZnJhcmVk 59141\nIFZhbmRlcg== 59142\nIExlYWRpbmc= 59143\ndWNpbmc= 59144\nLDosOg== 59145\nX2hvcg== 59146\nd2F0 59147\nIGTDqWNvdQ== 59148\nX1dpZGdldA== 59149\nU291bmRz 59150\nX25hdmlnYXRpb24= 59151\nIHNjaG5lbGw= 59152\nKGdlbmVyYXRvcg== 59153\ndWNlbmU= 59154\nIHJlbWFrZQ== 59155\nSVB2 59156\nIHLDqWFs 59157\nX0lOQ1JFTUVOVA== 59158\nIGh5cG90aGV0aWNhbA== 59159\nX2FuZw== 59160\nIG9mcw== 59161\nICEK 59162\nLmNvbXBsZXRlZA== 59163\nR2V0VHlwZQ== 59164\nIGtvbW1lbg== 59165\nw6FsaWRv 59166\nYWRkT24= 59167\nIHrFgg== 59168\nVUxB 59169\nX2luZGljYXRvcg== 59170\nJ10KCgo= 59171\nYXBhY2hl 59172\nX1NlbGVjdA== 59173\nIEdyZWVuZQ== 59174\nV2hhdHM= 59175\nX2FuaW0= 59176\nIHJlcGV0aXRpdmU= 59177\nbXVjaA== 59178\nIFRocmVzaG9sZA== 59179\nIGxm 59180\nKENhdGVnb3J5 59181\nY29uZQ== 59182\nTWl4 59183\nX01FVEFEQVRB 59184\nYXlzaWE= 59185\nTmVpZ2hib3Jz 59186\nCQoJCQo= 59187\nSVBIRVI= 59188\nIEZyYWc= 59189\nIENlbGxz 59190\nIG5hbWVzcGFjZXM= 59191\nKGJhY2s= 59192\nIFJlc3RhdXJhbnRz 59193\nc3Zj 59194\nINC70Lg= 59195\nb3RlY2g= 59196\nLXNs 59197\npb8= 59198\nIFdU 59199\nIFJlZHVjdGlvbg== 59200\nIGRvdHRlZA== 59201\nCWZvdW5k 59202\nIFRFQU0= 59203\nQm9ybg== 59204\nIE11c2g= 59205\nIENvbXBhcmFibGU= 59206\nIGhpdGNo 59207\nQVRP 59208\nIG1heEhlaWdodA== 59209\nYmVnaW5UcmFuc2FjdGlvbg== 59210\nw612 59211\nX2Ju 59212\nIGhlcmQ= 59213\nIHJldmVyc2Fs 59214\nIEhvbmQ= 59215\nZGVsaW1pdGVy 59216\nIGNvbmZ1c2U= 59217\nIGhvcHM= 59218\nIGNlbnRyb2lk 59219\nIGNvdXJ0cm9vbQ== 59220\nLmRlY29yYXRvcnM= 59221\nIG1waQ== 59222\nIEltcHJvdmVk 59223\nSU5ORVI= 59224\nIEJhbmdhbG9yZQ== 59225\nIFRhbWI= 59226\nIGJvYXN0 59227\nKCkpKQ0K 59228\nIGlsbGljaXQ= 59229\nIE1vcm9jY28= 59230\nZ3JlZ2F0b3I= 59231\nX3Jlc3VtZQ== 59232\nIGNyYWNrZG93bg== 59233\nIHBvcnRyYWl0cw== 59234\nL2hpZ2g= 59235\nKFwn 59236\nIGF5dWQ= 59237\nX2ZlZWRiYWNr 59238\nIGNhdGU= 59239\nL2F2YXRhcg== 59240\nIGhlYg== 59241\nUG9pbnRDbG91ZA== 59242\nIOWSjA== 59243\nIDwhWw== 59244\nIGdldFJlc291cmNlcw== 59245\nfTp7 59246\nT3BlcmF0aW5n 59247\nIEZvZw== 59248\nCXRhYg== 59249\nIFJlc2VhcmNoZXJz 59250\nIGZhYnJpY2F0aW9u 59251\nLmRhdGFzZXRz 59252\nIENhbXBv 59253\nIEthdWY= 59254\nIGRsbA== 59255\nbGlndA== 59256\nXSkpOwoK 59257\nc3RlbGxlbg== 59258\nQUNLRVQ= 59259\nbHZs 59260\nIEdsb3J5 59261\nLmRhdGVUaW1l 59262\nIGNvbW11dGU= 59263\nIG9uQ3JlYXRlVmlld0hvbGRlcg== 59264\nIFhFbGVtZW50 59265\nIFRva2Vucw== 59266\nPHRoZWFk 59267\nX3BpY2s= 59268\n7KQ= 59269\ndm9u 59270\nZGVwYXJ0dXJl 59271\nKHJlbmRlcmVy 59272\ncGhvbmVOdW1iZXI= 59273\nKFBlcnNvbg== 59274\nZ2VuZXM= 59275\nIExhcnM= 59276\nICl7Cgo= 59277\nIEpzb25SZXN1bHQ= 59278\nIG1ldG9kbw== 59279\nVk9LRQ== 59280\nLmdldFVzZXJJZA== 59281\nQWNjZWxlcg== 59282\nCXJlcXVpcmVk 59283\nIGNoYW1waW9uc2hpcHM= 59284\nQnVpbGRDb250ZXh0 59285\nL3Rhc2s= 59286\nL3JlbGVhc2Vz 59287\nQ2F0ZWdvcmlh 59288\nX292ZXJsYXk= 59289\nIHNjYXJjZQ== 59290\nX2xpbQ== 59291\nbmdy 59292\nYWhsZW4= 59293\nIEFydGlmaWNpYWw= 59294\nc3ByZWFk 59295\nIGJvd2xpbmc= 59296\nLmFuYWx5c2lz 59297\nU01UUA== 59298\nCXBhc3N3b3Jk 59299\nIGJhdGhz 59300\nXSkpewo= 59301\nY3VycmVudGx5 59302\nYWNpZW50ZQ== 59303\nX3NlcGFyYXRvcg== 59304\nIGRlYmVy 59305\nIERpc2FibGVk 59306\nacOocmVz 59307\nIOKV 59308\nX3Byb2Nlc3Npbmc= 59309\nIHByb3Rlc3Rpbmc= 59310\nIFJPVA== 59311\nZ3JhYg== 59312\nINC30LDQug== 59313\nIHByb2FjdGl2ZQ== 59314\nd29yZHByZXNz 59315\nIFNldmVy 59316\naW5kZW4= 59317\nIHdpa2lwZWRpYQ== 59318\nKXsNCg0K 59319\nX3dpbmRvd3M= 59320\naXNsYXRpb24= 59321\nIHVucmVzdA== 59322\nIGRpc21pc3NhbA== 59323\nLk5VTQ== 59324\nX0ZBU1Q= 59325\naXNzdWVk 59326\nIEZBQ0U= 59327\nX3VuZGVy 59328\nIHBsdWdnZWQ= 59329\nIOWw 59330\nIGLEmWR6aWU= 59331\nIElDQw== 59332\nIGNvbWJ1c3Rpb24= 59333\nIGtpc3NlZA== 59334\nIHN0YXJyZWQ= 59335\nIFdhdHRz 59336\nIHNwaWVsZW4= 59337\nLXB1cnBvc2U= 59338\nIEV2YWw= 59339\nYXJnZXM= 59340\nLHJlc3VsdA== 59341\ndGVjaG5vbG9neQ== 59342\nIG5hdGlvbmFsaXR5 59343\naWN1cw== 59344\nIE51Zw== 59345\nINGC0L4= 59346\nCQkJCQkJCSAg 59347\nY29sbw== 59348\nIGdhc3Rybw== 59349\nYW50ZWVk 59350\nT0xJRA== 59351\nLmJpYXM= 59352\nX3RlbGU= 59353\nLmluc3BlY3Q= 59354\nIHZlaWw= 59355\nLmZvb3Rlcg== 59356\nIG5lZ2xpZ2VuY2U= 59357\nIGp1ZGdtZW50cw== 59358\nUm9vbXM= 59359\neW5u 59360\nCWNvdW50ZXI= 59361\nb2NjdXBhdGlvbg== 59362\nIOeUnw== 59363\ndW5hcw== 59364\nICheKSg= 59365\nTGFtYmRh 59366\nZmVs 59367\nLlBhcmFtcw== 59368\nINC00L7QsdCw0LI= 59369\nc2V0TGF5b3V0 59370\nIGRlcG9ydGF0aW9u 59371\nIGxvY2FsT2JqZWN0 59372\nIFBoYXJtYWNldXRpY2Fs 59373\nY2VwdGl2ZQ== 59374\nIE5vbWU= 59375\nRXF1aXBtZW50 59376\nRmFu 59377\nVW5pdmVyc2Fs 59378\nCXNvY2tldA== 59379\nIGdyaW4= 59380\nIGV4cG9zZXM= 59381\nIGhhYmVy 59382\nIHNpbmNlcmVseQ== 59383\nIGNhbXM= 59384\nIG3DvA== 59385\nZW5pYQ== 59386\nRW1lcg== 59387\nQ3J5cHRv 59388\nU2xvdw== 59389\nKHhocg== 59390\nIT0o 59391\nLXNlcnZpY2Vz 59392\nIFBX 59393\nIHByZW5kcmU= 59394\nIG3DpGRjaGVu 59395\nZW1vbnM= 59396\n0L7Qt9Cy0YDQsNGJ 59397\nLk1hbmFnZXI= 59398\n7Jk= 59399\nIGdyYWY= 59400\nLXJh 59401\nbWV0cmljYWw= 59402\nL2Zs 59403\nIGNlbWV0ZXJ5 59404\nZ2Vucw== 59405\nIHDFmQ== 59406\nIE15U3FsQ29tbWFuZA== 59407\nLVRv 59408\nIHbDpQ== 59409\nIGFpcnN0 59410\nb21lbnR1bQ== 59411\nIHNlcnZv 59412\nbWlsbGlvbg== 59413\nIE1pcmFuZGE= 59414\nIlNoZQ== 59415\nIGFkdm9jYXRpbmc= 59416\nLWNhcHRpb24= 59417\nIEF0dHJpYnV0aW9u 59418\nIHdlbGNoZQ== 59419\nX3ZlbmRvcg== 59420\nCVN0YXR1cw== 59421\nYXJyaXM= 59422\nIHByaW50aw== 59423\nIiwiIw== 59424\nIHJlbGF0aXY= 59425\naWZmZXJlbmNlcw== 59426\naXp6ZXM= 59427\nIGRlY2ltYWxz 59428\nIFByb3Y= 59429\nLm1heGltdW0= 59430\nQXJu 59431\nIGhlbGljb3B0ZXJz 59432\nX0JPVFRPTQ== 59433\nY2h1cmU= 59434\nb2Rpbmdz 59435\nJyg= 59436\nIikpKTsNCg== 59437\nKGJlYW4= 59438\nLmZk 59439\nRnVuZA== 59440\nIGhhbmdz 59441\nYXBwaWQ= 59442\nL2tlcm5lbA== 59443\nLnBvaQ== 59444\nLk1pblZhbHVl 59445\nLXZhbGlkYXRpb24= 59446\nTHVrZQ== 59447\nY2Rm 59448\nIEZ1bmVyYWw= 59449\nIFNhbXBsZXM= 59450\nCWRl 59451\nIHRvYXN0cg== 59452\nIHRheGFibGU= 59453\nIGNsdXN0ZXJpbmc= 59454\nICdcJw== 59455\nIHJlc3RyYWludA== 59456\nZWNlZA== 59457\nY2hhaW5z 59458\n44CC77yI 59459\nX0dSQVBI 59460\nIGZ1ZWxlZA== 59461\n6ZyA 59462\nSHA= 59463\n5aSN 59464\nVGlsZXM= 59465\nIGF1bnF1ZQ== 59466\nSkM= 59467\nIGhvc3RhZ2U= 59468\nIEVzaw== 59469\nIG1hdg== 59470\nIGdlc3Rpb24= 59471\nIGJhbm5lcnM= 59472\nfXsk 59473\nLmludFZhbHVl 59474\nLiciCgo= 59475\nX01BVFJJWA== 59476\nIGNlYXNlZA== 59477\nIEdPRA== 59478\nX0NBTUVSQQ== 59479\nLkFsbG93VXNlcg== 59480\ndHJhY2tlZA== 59481\nQ29vaw== 59482\nYmFpcnJv 59483\nKGNvbXBhbnk= 59484\nIHZpZXdwb2ludA== 59485\nLmdldFdyaXRlcg== 59486\nIE5ldHM= 59487\nd2l2ZXM= 59488\nICgpKQo= 59489\nZXhhbXBsZU1vZGFs 59490\nCWNoaWxk 59491\nIG15dGhvbG9neQ== 59492\nIC8vIg== 59493\nX2F4ZXM= 59494\naWJvbGQ= 59495\nLkRhcms= 59496\nIE1heHdlbGw= 59497\nIGdwb2ludGVy 59498\nb2xpY2l0dWQ= 59499\nQmF0 59500\ndWxuZXI= 59501\nYmFsYW5jZWQ= 59502\nbWFpbGVy 59503\nIGNvbnRlbXBvcg== 59504\n5omL5py6 59505\nKCJfXw== 59506\nICIpIg== 59507\ncmVhcg== 59508\nIEh1YW5n 59509\nXScpCg== 59510\n16k= 59511\nRlRB 59512\nIENhbGxpbmdDb252ZW50aW9u 59513\nIE91dHB1dHM= 59514\nUGs= 59515\nLlJlZmVyZW5jZQ== 59516\nbGVjdHVhbA== 59517\nICk6Cgo= 59518\nIGJyYWNlbGV0 59519\ndWdlcg== 59520\nCUVycm9y 59521\nU3dlZXQ= 59522\nKCIvIik7Cg== 59523\naHg= 59524\nIHVucmVhc29uYWJsZQ== 59525\nSW50ZXJwcmV0ZXI= 59526\nIGxvZnQ= 59527\nX3Byb2R1Y3Rv 59528\nIHNvY2lldGFs 59529\nLlBhcnNlcg== 59530\nIEFkYXB0 59531\nLmZvbw== 59532\nKHdoZXJl 59533\nLkZlYXR1cmU= 59534\nIFlhbWFoYQ== 59535\nZ2xhc3M= 59536\nRm9yZ2U= 59537\nIHByb2hpYml0cw== 59538\nIGNhcGFjaXRpZXM= 59539\nIO2VqOyImA== 59540\nIHBlcm11dGF0aW9u 59541\nIGlobQ== 59542\nRmxk 59543\nZWxpYWw= 59544\nPT09PT09PT09PT0K 59545\nQENvbmZpZ3VyYXRpb24= 59546\nIGdlYXJlZA== 59547\naW9zbw== 59548\naWVzdGE= 59549\ndHJhbnNsYXRpb25z 59550\nSW5wdXRDaGFuZ2U= 59551\nUG9wdWxhcg== 59552\nIFBMVVM= 59553\nIHZm 59554\nX0ZyZWU= 59555\nYmJveA== 59556\nIGNhdXNhbA== 59557\nUElMRQ== 59558\nIHNjaMO2 59559\nIGlyb25pYw== 59560\nTWly 59561\nLkA= 59562\n5Y2X 59563\nIOiH 59564\nUmV3 59565\ndWxlbmNl 59566\nZmxlbg== 59567\nIGNhbkFjdGl2YXRl 59568\nLXJlc3BvbnNl 59569\nIGFjY2VudHM= 59570\naWdub3JlZA== 59571\nwrBG 59572\nLkRlcGVuZGVuY3lJbmplY3Rpb24= 59573\nCXBvaW50 59574\nIGNvbnRpbmdlbnQ= 59575\nIHNxdWFzaA== 59576\nIHBhcm1z 59577\nIENlbWV0ZXJ5 59578\nIGRlbHRhVGltZQ== 59579\nIERPUw== 59580\nIHZhbmlzaGVk 59581\n0LDRgNCw0LzQtdGC 59582\nIERQUw== 59583\ndGZvb3Q= 59584\nIFp1cw== 59585\nX0lOU1RBTEw= 59586\nR0FO 59587\nIGFyYg== 59588\nIG11bmljaXBhbGl0aWVz 59589\nSW50b0NvbnN0cmFpbnRz 59590\nQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cw== 59591\nLGltYWdl 59592\nX2lnbm9yZQ== 59593\nIGRhbmdlcm91c2x5 59594\ncXVpc2E= 59595\ncGx1Y2s= 59596\nIGhhcnVz 59597\ndXBwZQ== 59598\nSHR0cEV4Y2VwdGlvbg== 59599\nQnJhY2tldA== 59600\nLicnCgo= 59601\nIFRvbA== 59602\nIFZpZXdlcg== 59603\nemJvbGxhaA== 59604\nLkNvZGVBbmFseXNpcw== 59605\nw6xuaA== 59606\nIGNvcnJlY3RhbWVudGU= 59607\nLmRh 59608\nIEFsZ2Vy 59609\n15A= 59610\nYmF1bQ== 59611\nIFBhbnRoZXI= 59612\ncGFydGljaXBhbnQ= 59613\n5b+F 59614\nLXN1cA== 59615\nIGVtdWxhdG9y 59616\nIGZhZGluZw== 59617\nIFdvbHZlcg== 59618\nY3JlYXRlcw== 59619\nIGJvb2tpbmdz 59620\nLlF1ZXN0aW9u 59621\np+ihjA== 59622\nIHN0cmVzc2Vz 59623\nIHJld3JpdHRlbg== 59624\nLlBJUEU= 59625\nZWRlcw== 59626\nIGNiZA== 59627\nIjoiLw== 59628\nIGVuaGFuY2VtZW50cw== 59629\nX3N5 59630\nQklO 59631\nIFNsaXA= 59632\nSW5zcGVjdA== 59633\nIFdlZw== 59634\nIGNvbmdyZWdhdGlvbg== 59635\nIF86 59636\nX3Jt 59637\nRnJhbWVidWZmZXI= 59638\nICcmIw== 59639\nIEZhbGxvdXQ= 59640\nSXNSZXF1aXJlZA== 59641\nIFBlYXJzb24= 59642\nIEZBQ1Q= 59643\nIHJlbGll 59644\nCWJveA== 59645\nIFNoZXBoZXJk 59646\nIFdpa2lMZWFrcw== 59647\nIENvbGxlY3Rvcg== 59648\nIHJlc2l6ZWQ= 59649\nbWV0aG9kTmFtZQ== 59650\nIGV2ZW50VHlwZQ== 59651\nIEF0aGVu 59652\nRGVzY3JpcHRvcnM= 59653\nIGJlcnM= 59654\nLW9wZXI= 59655\nIEluaXRpYWxseQ== 59656\n5aE= 59657\nX0JUTg== 59658\nICAgICAgICAgDQo= 59659\nw6Fi 59660\nX2NhbXBhaWdu 59661\nX3dhdGNo 59662\nRm9yZA== 59663\nLWRhdGVwaWNrZXI= 59664\nIHZpc2M= 59665\nIHNhdHU= 59666\nX3Ntcw== 59667\nIGNvbnRhZG9y 59668\nLXN2Zw== 59669\nIERPSQ== 59670\nJGFyZ3M= 59671\nIGtub2I= 59672\nLkJPTEQ= 59673\nIGRlYmF0ZWQ= 59674\naW1ncw== 59675\nc29ja29wdA== 59676\ndHJ1dGg= 59677\nIEZlZXM= 59678\nIGhXbmQ= 59679\nX2Zvb2Q= 59680\nIGFicmFz 59681\nIG5vdGlvbnM= 59682\nIFRvZA== 59683\nOmNyZWF0ZQ== 59684\nIENvbmZsaWN0 59685\nVXN1YXJpb3M= 59686\nT1RPUw== 59687\nIG1zbQ== 59688\nS0hUTUw= 59689\nKFso 59690\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 59691\nIH1d 59692\nd2l6YXJk 59693\nIG1pZW50cmFz 59694\nIGRhdGFMaXN0 59695\nIGVtZXJnZXM= 59696\nxINuZw== 59697\nLlJlYWRJbnQ= 59698\nUEdB 59699\nSUxMSVNF 59700\nSUVudW1lcmF0b3I= 59701\nKHR1cGxl 59702\nQ2hyaXN0bWFz 59703\nTG9va0FuZEZlZWw= 59704\nb2dlbmVyYXRlZA== 59705\nICMKCg== 59706\nY29udHJvbGxlZA== 59707\nIGV4cXVpc2l0ZQ== 59708\nIGFjZXN0 59709\nUmVhZFdyaXRl 59710\nR2Fpbg== 59711\n44CN44CM 59712\nIGNvcHlyaWdodGVk 59713\nIGRvb20= 59714\nLlRhYmxlTGF5b3V0UGFuZWw= 59715\nIERvcnQ= 59716\nIGNoaWxp 59717\nIHdlcms= 59718\nIEVWRU5UUw== 59719\nIEJlYWNvbg== 59720\nIHNoaXBtZW50cw== 59721\nIHNlYmFnYWk= 59722\ndXBvbg== 59723\ndXRvbQ== 59724\nLmNvbnZlcnRlcg== 59725\nLkRyb3BUYWJsZQ== 59726\nPXt9Cg== 59727\nZmlj 59728\nfgoK 59729\nIGxlc2JpYW5z 59730\nX25h 59731\nRm9yZWlnbg== 59732\nCXRoZW4= 59733\nL21z 59734\nIG9yaQ== 59735\nZ2V0UHJvcGVydHk= 59736\nCXNucHJpbnRm 59737\naGVzaW9u 59738\n44Gk 59739\nIn0sIg== 59740\nIGFjcnlsaWM= 59741\nUGVycw== 59742\nQEVuYWJsZQ== 59743\nSXNs 59744\nKENhcmQ= 59745\nLlN0YWNr 59746\nTGljZW5zZWQ= 59747\nX0dVSUQ= 59748\nOnRpdGxl 59749\nIGh1c3Q= 59750\nIHByaW5jaXBhbFRhYmxl 59751\nYW5pdGl6ZQ== 59752\nL2VtYmVk 59753\nIGVuc3VyZWQ= 59754\nIEVHTA== 59755\n2YjYsQ== 59756\nIOWIhg== 59757\nLywK 59758\nIGZ1bmRyYWlzZXI= 59759\nS2V5TmFtZQ== 59760\nIG1hcmNoZWQ= 59761\nX1ZBTFVFUw== 59762\nIFNjZW5hcmlv 59763\nIG1ldGlj 59764\nX2Fzc29jaQ== 59765\nIFBhc3Rvcg== 59766\nCQkJCQkJCQkJCQkJCQkJCQkJ 59767\nZXJhdGU= 59768\nIGludml0YXRpb25z 59769\ncXVvaXNl 59770\nIGJsYW1pbmc= 59771\nIGRhcmluZw== 59772\nVU1NWQ== 59773\nIHJpY2hlcg== 59774\nZW1ha2Vy 59775\nIElkZW50aWZpY2F0aW9u 59776\nIOyduA== 59777\nIEJpbmRpbmdGbGFncw== 59778\nY2hhcw== 59779\nIHJlc2lsaWVudA== 59780\nX3Bn 59781\nIHJlbGVn 59782\nIElSQQ== 59783\nU1RF 59784\nIHRyYWN0b3I= 59785\nLWxvYWRpbmc= 59786\nIFByZXZpb3VzbHk= 59787\nIFZhY2M= 59788\nL2Jl 59789\nIG7DpXI= 59790\nIHVybGVuY29kZQ== 59791\nIE5vcmZvbGs= 59792\nLlJlbGVhc2U= 59793\nIE5ldXRyYWw= 59794\n5Lit5Zu9 59795\nIEFybGluZ3Rvbg== 59796\nIGFsbGVnZXM= 59797\nIFdyaXRlcnM= 59798\nVGVzdGVy 59799\nIFJhbGx5 59800\nIGPDoQ== 59801\nCVByaW50 59802\nIOKHkg== 59803\nIFVzZXJDb250cm9sbGVy 59804\nIFNlZWtpbmc= 59805\nLlZBTA== 59806\nTGlzdE5vZGU= 59807\nX2Zm 59808\nIFBoaWxsaXA= 59809\nRkFDVA== 59810\nIGNhcmFtZWw= 59811\nIE11bHRpcA== 59812\nIENvbXBhcmVk 59813\nIFNlcmJpYQ== 59814\nn7M= 59815\nIHJldml2ZQ== 59816\nIEthbnll 59817\nIHZlcmdl 59818\nIEJ1bGdhcmlh 59819\nZ2V0Qm9keQ== 59820\nIHw+ 59821\nY2VwaA== 59822\nLkRhdGVUaW1lUGlja2Vy 59823\nLiI7Cgo= 59824\nIFRpZQ== 59825\nLGl0ZW0= 59826\nIG1lbm4= 59827\nR2Fz 59828\nb2NoYQ== 59829\nX3ZpcnR1YWw= 59830\nIG1hc3RlcnBpZWNl 59831\nX3NlcXVlbmNlcw== 59832\nTFRF 59833\nIFN1Ym1pc3Npb24= 59834\nQ2FsbGVy 59835\nJFw= 59836\nU3BvcnQ= 59837\nYWd1cw== 59838\nQ29uc3RyYWludE1ha2Vy 59839\nIGNvbG9j 59840\nIHdpZw== 59841\nINCj 59842\nCUFycmF5 59843\nTG9va3M= 59844\nIEdUQQ== 59845\nLnN0ZXBz 59846\nYXRjaGV3YW4= 59847\nX3Jhbmdlcw== 59848\nZXh0QWxpZ25tZW50 59849\nIEJyZW5uYW4= 59850\nIGFic3RyYWN0aW9u 59851\ndWxlckFuZ2xlcw== 59852\nLm1pc2M= 59853\nIGFudGlib2RpZXM= 59854\nIGV4cG9uZW50aWFs 59855\nIENIQU5ORUw= 59856\nZXhwZW5zZQ== 59857\nJ3k= 59858\nIGRldGVjdGl2ZXM= 59859\nIHB1cnBvcnRlZA== 59860\nWVNURU0= 59861\nIHJhZGlvYWN0aXZl 59862\nIExhdGluYQ== 59863\nLkVuY29kaW5n 59864\nLlRBRw== 59865\neGlu 59866\nRGVncmVl 59867\ndXJhY2lvbg== 59868\ncHJpY2Vz 59869\nIFJlZmVyZW50aWFsQWN0aW9u 59870\nIHJhcml0eQ== 59871\nIHBpbGVz 59872\nZ2VuZGU= 59873\nX3Byb2plY3Rz 59874\nX2dsb2JhbHM= 59875\nLnN0YXJ0VGltZQ== 59876\nIOq1rA== 59877\nU0VDVElPTg== 59878\nX3B1Ymxpc2g= 59879\nRmF1bHQ= 59880\nRERM 59881\nX3ByaW9y 59882\nTW9t 59883\nIHRoaWNrZXI= 59884\nIHNlcXVlbGl6ZQ== 59885\nIGVzc2VudGlhbHM= 59886\nc3RyYXM= 59887\naW50cg== 59888\nPigoKQ== 59889\nLm1hbmFnZW1lbnQ= 59890\nZWls 59891\n6Zet 59892\nQXdhcmU= 59893\nLkNpdHk= 59894\nIEFyYml0 59895\nX0RN 59896\nX2tleWJvYXJk 59897\nTE9iamVjdA== 59898\nLXdlYnBhY2s= 59899\nIE5ld3BvcnQ= 59900\nIHByaW5jaXBhbENvbHVtbg== 59901\nbGVnYW50 59902\nIHBhbGxldA== 59903\nIGZyYWN0dXJl 59904\nIGdtYWls 59905\nLk1ldGE= 59906\nQWJvdmU= 59907\nLktleUV2ZW50 59908\naml0 59909\nX21hY3Jv 59910\nX1BVU0g= 59911\n4bup 59912\nL2NvbnRyb2xsZXI= 59913\n5Yqg6L29 59914\nIHN1cGVyZmljaWFs 59915\nZXh0ZXJpdHk= 59916\nIG1lbnNhZ2Vt 59917\nV2luZA== 59918\naXN0b24= 59919\nLm9wZW5hcGk= 59920\n0LjRgNC+0LI= 59921\nIFNlcmlhbGl6ZXI= 59922\ndWN0aXZl 59923\nIHphcg== 59924\nUGxhY2Vz 59925\nLlN0YXRpYw== 59926\nQmE= 59927\nIGluYWR2ZXJ0 59928\nIEluZG9uZXNpYW4= 59929\nX0lQVg== 59930\nKGhvcml6b250YWw= 59931\nIGdldFRpdGxl 59932\naWRlcHJlc3M= 59933\nIENvbnNvbGVDb2xvcg== 59934\naXBlcnM= 59935\nJG91dA== 59936\nIGZlc3RpdmU= 59937\nIGV2ZW5pbmdz 59938\nLkdldERhdGE= 59939\ndWl0a2E= 59940\nIE1hbnVhbHM= 59941\ndXNzZWQ= 59942\nX01heA== 59943\nLkNoYXQ= 59944\nIEFpcmNyYWZ0 59945\nPWNvbQ== 59946\nRk9VTkQ= 59947\nYXBybw== 59948\nIHRyZWFzdXJlcw== 59949\nX2FsaXZl 59950\nIGdhZGdldA== 59951\nZWtpbmc= 59952\nQnV0dG9uRG93bg== 59953\nQnJvd3NhYmxl 59954\nLlBFUk1JU1NJT04= 59955\nUEFTU1dPUkQ= 59956\nIEhBU0g= 59957\nZsOp 59958\nXFRlc3RDYXNl 59959\nTE9TUw== 59960\nb3RoZXJz 59961\nLEo= 59962\nIGFzc2hvbGU= 59963\nd2Vyaw== 59964\nIG3Dow== 59965\nLmll 59966\nZXZpbA== 59967\na29udGFrdGU= 59968\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K 59969\nPXN5cw== 59970\nCWxvY2s= 59971\nLS07Cgo= 59972\nX0ZVTg== 59973\nRmlsbENvbG9y 59974\nw7Nh 59975\ncHJlbmQ= 59976\nIGNvbXByZXNzb3I= 59977\nTW90aGVy 59978\nIEFyY2hlcg== 59979\nLmdvdG8= 59980\nIHfDvHJkZQ== 59981\nIGJhbWJvbw== 59982\n77yO 59983\nIFRyZWVz 59984\nIGJ1bXBlcg== 59985\nIHNhdXNhZ2U= 59986\nIEVsYXN0aWNzZWFyY2g= 59987\nIGhvcml6b250YWxseQ== 59988\nIEd1bA== 59989\nSW1tdXRhYmxl 59990\nIGxvc2Vy 59991\nIGFib3J0ZWQ= 59992\nLWRlbW8= 59993\nIEhhdGNo 59994\nIHVuZGU= 59995\nIHByb2Nlc3Nv 59996\nLWNhbGw= 59997\nSW5jb21l 59998\n5YM= 59999\nX3JldHVybnM= 60000\nJ10uIic= 60001\nKHN3 60002\nQ0JT 60003\nYW1pbGllcw== 60004\nIFlvdXJzZWxm 60005\nIEhvbHQ= 60006\nLk1PTg== 60007\n4KeH 60008\n0YjQtQ== 60009\nYW5vbg== 60010\nIEZvbnRBd2Vzb21l 60011\ncHJvZHVjZXI= 60012\nanI= 60013\nIG1hdQ== 60014\nCWludGVy 60015\nIGRpc2hvbmVzdA== 60016\nIG1hZ25h 60017\nIENvbGxlY3RpdmU= 60018\nIHZyYWltZW50 60019\nIGNob2l4 60020\nc3RheQ== 60021\nIHdlbGRpbmc= 60022\ncmlzaW5n 60023\nLG1pbg== 60024\nIEZhdGU= 60025\nZ2xvYg== 60026\nUkdCQQ== 60027\nIGRldHRl 60028\nVmVu 60029\nIGVtYmFycmFzc21lbnQ= 60030\nLkRFTEVURQ== 60031\nZ3JlZ2Fy 60032\nLXJlbmRlcg== 60033\nKGJ1Y2tldA== 60034\nIj4KCgo= 60035\nLndhaXRLZXk= 60036\nQnVzeQ== 60037\nIGRpZmZlcmVudGlhdGlvbg== 60038\nIENTVA== 60039\nLkNvbnN0YW50 60040\nIGxpbmVOdW1iZXI= 60041\nKG1hdGNoZXM= 60042\nIHdlYnNvY2tldA== 60043\nIGJhcnJlZA== 60044\nIHB1ZWRlcw== 60045\nTW9ubw== 60046\nQ09SRQ== 60047\nSUlE 60048\nICAgIA0KDQo= 60049\nIHDDumJsaWNv 60050\nbGVhbmluZw== 60051\nIGNsZWFuc2luZw== 60052\nIGNyaXM= 60053\nIERldmlscw== 60054\nX1NFVFRJTkc= 60055\ndW50YXJ5 60056\nLik7Cg== 60057\nCiAgIAo= 60058\nW2N1cnI= 60059\ndHN5 60060\nIEFsZXhpcw== 60061\ncml0ZWw= 60062\nIHBldHJvbGV1bQ== 60063\nLnByZXByb2Nlc3Npbmc= 60064\nbWF0dGVy 60065\nRm9yUmVzdWx0 60066\nLWxpY2Vuc2U= 60067\nIHRyYXZlbGxlcnM= 60068\nIERpc3BhdGNoZXI= 60069\nZW5uaWZlcg== 60070\nIGRpZ2VzdGl2ZQ== 60071\nUEVE 60072\naGliaXRpb24= 60073\nTUFTQ29uc3RyYWludE1ha2Vy 60074\nIFdhdHQ= 60075\nQmVuZWY= 60076\nLnNldFZpZXc= 60077\nZHRv 60078\nVEVF 60079\nIFBlbG9zaQ== 60080\nX0VYVFJB 60081\nIG1lZGFscw== 60082\neGhy 60083\nZm9yZWNhc3Q= 60084\nIG5hcmdpbg== 60085\nb3Vucw== 60086\nLWZpbGw= 60087\nX0NVUlNPUg== 60088\nIHN1cGVydmlzZWQ= 60089\nIHR1cmY= 60090\nIEVkZ2Fy 60091\nUE9TSVRJT04= 60092\nIGNhdGVnb3J5SWQ= 60093\n4ok= 60094\nX0VS 60095\n4bunYQ== 60096\nU2hvd24= 60097\nLmxs 60098\nX1BPTElDWQ== 60099\nKCksJw== 60100\nIFByZXY= 60101\nIFN0cmluZ0ZpZWxk 60102\nCUdsb2JhbA== 60103\nYXNzZWQ= 60104\nVGhyb3VnaG91dA== 60105\nb3N0cmluZ3N0cmVhbQ== 60106\nLmF3dGV4dHJh 60107\nIHNsb3Blcw== 60108\nIFNlcXVlbnRpYWw= 60109\nIGdpb3Ju 60110\nIHplbGY= 60111\nIHZlcnNhdGlsaXR5 60112\nbGVuZWNr 60113\nLmNnaQ== 60114\nIGRvdWJsaW5n 60115\nIEJhbmdrb2s= 60116\nIGJ1dXJ0 60117\nIHVzdcOhcmlv 60118\nc3R1ZGlv 60119\nIGpldW5lcw== 60120\nIG11dGVk 60121\nIGlwcw== 60122\nX2ZyYWN0aW9u 60123\nJiYo 60124\nIHN0dW50 60125\nJyk7Pz48Lw== 60126\nIExpZ2E= 60127\nIHF1YWxpdMOp 60128\nQXNzaWduYWJsZQ== 60129\nIHdvcmthcm91bmQ= 60130\nIHNwdXI= 60131\nIHNsZXc= 60132\nX0dF 60133\nIEFncmljdWx0dXJhbA== 60134\nIHJlbGVudGxlc3M= 60135\nKFF1ZXJ5 60136\nIFNlY3Rpb25z 60137\nIHJldmlld2Vycw== 60138\nUmFpbg== 60139\nZGxn 60140\nYXNzZXJ0RmFsc2U= 60141\nIG5vbWluZWVz 60142\nX18pLg== 60143\nLmR5bmFtaWM= 60144\nIFBCUw== 60145\nQ2hhbmdpbmc= 60146\nIHNsaWdodGVzdA== 60147\nIE1hbmc= 60148\nfT4NCg== 60149\nIGV2YXBvcg== 60150\nYmFibGU= 60151\nIFBSSUNF 60152\nIOaz 60153\nbHVjZW50 60154\nIHZhbXA= 60155\nIFRlY2huaWNpYW4= 60156\nIHVuaXF1ZW5lc3M= 60157\nTWVz 60158\ndXJiYW4= 60159\nLnBhcmFtZXRyaXpl 60160\nIFJlcGxheQ== 60161\nU2Vzc2lvbnM= 60162\nZW1icg== 60163\nLUFtZXJpY2Fucw== 60164\nX1BST1hZ 60165\nIHBpYW4= 60166\nIHRyaWU= 60167\nIERlc3RydWN0b3I= 60168\nR2FtZVN0YXRl 60169\nIElNRg== 60170\nY2hpbg== 60171\nIHBvcnRl 60172\nIFN3YWw= 60173\n5Z+O 60174\nU3Vic3RyaW5n 60175\naW1pbmc= 60176\nL0xpYnJhcnk= 60177\nIGZyaWdodGVuZWQ= 60178\nd3JpdGVz 60179\nIHJlY3Vyc29z 60180\nYXJSZXN1bHQ= 60181\nX0lOSVRJQUxJWg== 60182\nIEJhZGdl 60183\nX2NyYw== 60184\nRWlnaHQ= 60185\nIERJU1RJTkNU 60186\nIHRocm8= 60187\nQFhtbA== 60188\nIExlZ2VuZGFyeQ== 60189\nLXR3aXR0ZXI= 60190\nX2Vhc3k= 60191\nICsrKw== 60192\nKERBVEE= 60193\nLkxvY2FsZQ== 60194\nIGvDpA== 60195\nIG51cnQ= 60196\nIGNydWlz 60197\nX2lvcw== 60198\nIHNlbnNpbmc= 60199\nX0xpbmU= 60200\nCiAgICAgICAgICAgICAgICAgICAgCg== 60201\ncG9uZw== 60202\nb2xlb24= 60203\nIHdpbGRjYXJk 60204\n55So5oi35ZCN 60205\nIGJlZ2dpbmc= 60206\nUm9k 60207\nIMOO 60208\nX0NFTEw= 60209\nUmVzZWFyY2hlcnM= 60210\nLnNlbGVjdG9y 60211\nX2luZw== 60212\nIGFzcGlyaW5n 60213\nIGltbW9ydGFs 60214\nIHltaW4= 60215\nX3JvYm90 60216\nIHBsdXI= 60217\nQlRD 60218\nIERJRA== 60219\nIHBpZXJjaW5n 60220\nKnU= 60221\nX0RFRklORUQ= 60222\nIFRoaQ== 60223\naXRhaXJl 60224\nKG1lZGlh 60225\nLW9ucw== 60226\nIGNoZWZz 60227\nICIqLg== 60228\nL0FQ 60229\nIHJhem9y 60230\nIHNlYXJjaERhdGE= 60231\nID0m 60232\nIOOAgg== 60233\nIG1vdXJu 60234\ndGluZ2hhbQ== 60235\nIG9saQ== 60236\nIFZlcm5vbg== 60237\nX1JT 60238\nnuaApw== 60239\nIGbDoWNpbA== 60240\nYW5nZW4= 60241\nY2VsYWlu 60242\nIGFpbA== 60243\nbGVzdA== 60244\nIFFDT01QQVJF 60245\nZ2Fpbg== 60246\nIM61 60247\nIEtvYg== 60248\nIEZhdWx0 60249\nX2NvbmZpZ3M= 60250\n57uT5p6c 60251\nLis= 60252\nY2FsYXI= 60253\nKGNvbG9ycw== 60254\nTXVs 60255\nX0FSVA== 60256\nIGV4cGVyaW1lbnRpbmc= 60257\nZXJtZW4= 60258\nIEFuZ2xv 60259\nLkZpeGVkU2luZ2xl 60260\nU2Vh 60261\nIGN0eHQ= 60262\nLnNsaWRlcg== 60263\nQ29sbGFwc2U= 60264\nR3JleQ== 60265\nIGZsZA== 60266\nLXByb29m 60267\nLmNhcGFjaXR5 60268\nZ2V0UGFyZW50 60269\nIENvbXBsaWFuY2U= 60270\nIGJ1cmds 60271\nLXJlYw== 60272\nIG92ZXJ3cml0dGVu 60273\nTVU= 60274\nIHJvdXRlcnM= 60275\nCU1vZGVs 60276\nIGZhbnRhc2llcw== 60277\nYXZpYW4= 60278\nX3ByZWM= 60279\nIFNjYW5kaW4= 60280\nIC8vPA== 60281\nL29jdA== 60282\nIGNlcmVtb25pZXM= 60283\nTW9udGhz 60284\ndW5keQ== 60285\nIHF1ZWQ= 60286\nIE5vdQ== 60287\nIFZpYnI= 60288\nLnJnYg== 60289\nIGNpdHJ1cw== 60290\nIGJyYWNlcw== 60291\nLXVwcGVyY2FzZQ== 60292\nZ2V0VGFibGU= 60293\nIGRvcG8= 60294\nIEtlcnI= 60295\nX0NISUxE 60296\nLWNsb3Vk 60297\nCU1hdHJpeA== 60298\nIGdhcmRlbmluZw== 60299\nU2luZw== 60300\nYWxtb3N0 60301\nUmVxdWlyZW1lbnRz 60302\ndWd1YXk= 60303\nKFByb3BlcnR5 60304\nc3Vic2NyaWJlcg== 60305\nRkFTVA== 60306\ncmVhY3Rpb24= 60307\nKGxw 60308\nKX0pCg== 60309\nYCku 60310\nLndhbGxldA== 60311\nX2V4Y2hhbmdl 60312\nLk1heGltdW0= 60313\nIFZlcmI= 60314\n4pSB 60315\nKCk8 60316\n77ybCg== 60317\nUk9U 60318\nQ0FSRA== 60319\ndWJpdA== 60320\ne0A= 60321\nX2tlbA== 60322\nIFRvb2x0aXA= 60323\nTXlTUUw= 60324\nTWFpbkFjdGl2aXR5 60325\nYXJm 60326\nIG1hbGlnbg== 60327\nIHNlaW5lbg== 60328\nYXBpc3Q= 60329\nIDwl 60330\nTWV0aG9kSW1wbA== 60331\nTWls 60332\nIE1pY2s= 60333\nLmRlcGVuZA== 60334\nPElE 60335\nIHByZWRpY3RpdmU= 60336\nIEFQUExJQ0FUSU9O 60337\nbGVm 60338\nZGltZW5zaW9ucw== 60339\nIGNvbm9jZXI= 60340\nL2NvbmY= 60341\nIFRyYWN5 60342\nRm90bw== 60343\nX3JlbWFpbmluZw== 60344\nPWZpbGU= 60345\nIHBhZ2VJbmRleA== 60346\nIFBhcmlzaA== 60347\nIHRleGFz 60348\nIE1BR0lD 60349\nIEhldw== 60350\nZGlmZmVyZW5jZQ== 60351\nIGFsdHVyYQ== 60352\nY3Vt 60353\nCWRhdGFUeXBl 60354\nIGNhcmFjdGVyZXM= 60355\nYXZpb3Vycw== 60356\nIFZPSUQ= 60357\n6L+R 60358\nUFVCTElD 60359\nQmlv 60360\nIHN0cmluZ0J5QXBwZW5kaW5n 60361\nUGFyc2VFeGNlcHRpb24= 60362\nIFN1ZmY= 60363\nIE5vcnRvbg== 60364\nL2RldGFpbHM= 60365\nLm51bGw= 60366\nPj4m 60367\nCW9r 60368\nLWxvdw== 60369\nLnVzdWFyaW8= 60370\nbmVzdGVk 60371\nWEI= 60372\nT1VSUw== 60373\nLkJvcmRlckNvbG9y 60374\nIGJyb3c= 60375\nINCV 60376\nY29ycg== 60377\nIFJlZHNraW5z 60378\nLmdldFRhZw== 60379\nLmdldFRyYW5zYWN0aW9u 60380\nIHN0aWdtYQ== 60381\naGFyZHQ= 60382\nIFBsYXllclByZWZz 60383\nYWxzeQ== 60384\ndWNzb24= 60385\nTGFuZ3VhZ2Vz 60386\nIE9saXZpYQ== 60387\nIHRhYw== 60388\nIGJsaQ== 60389\nIGNhdmFs 60390\nIGNvbnNvbGlkYXRlZA== 60391\nIHBlcmls 60392\nIGRlbGU= 60393\nIGZvcm11bGF0ZWQ= 60394\nIGhpZ2h3YXlz 60395\nLnNwYXdu 60396\nPT0k 60397\nIE5pZXQ= 60398\nIHZlZ2dpZXM= 60399\neXBv 60400\nLXJ1bGU= 60401\nIFZpZQ== 60402\nL2VwbA== 60403\nIGVuZmFudHM= 60404\nc3RyaW5nTGl0ZXJhbA== 60405\nIHRvdWdoZXN0 60406\nYnV5ZXI= 60407\nIGNvdmFyaWFuY2U= 60408\nIGlsaQ== 60409\nIFNvcGhpZQ== 60410\nIEJBQg== 60411\nICIpLA== 60412\nIFVr 60413\nY3VycmVudEluZGV4 60414\nX3VzZXJkYXRh 60415\nLmNvZGVj 60416\nIFB1bmphYg== 60417\nIFNOUA== 60418\nbG9s 60419\nYWR2YW5jZQ== 60420\nIGNvbWZ5 60421\nSnNvbklnbm9yZQ== 60422\nIGZhc2hpb25hYmxl 60423\nIElDT04= 60424\nIG9yYQ== 60425\nIFByaWNpbmc= 60426\nPG51bQ== 60427\nIElSQw== 60428\nRVJW 60429\nIE1laW4= 60430\nIElEaWN0aW9uYXJ5 60431\nQURPVw== 60432\naXNOZXc= 60433\nIERldm9u 60434\nYXRs 60435\nKHJlcXVlc3RDb2Rl 60436\nCVByZXBhcmVkU3RhdGVtZW50 60437\nSU1QT1JU 60438\nIG1hcml0YWw= 60439\nX1NFTEVDVEVE 60440\nZ2V0UmVzcG9uc2U= 60441\nYXJEb3du 60442\nQlY= 60443\naWJOYW1l 60444\nIFBBVENI 60445\nw6TDpG4= 60446\nIGRhYXI= 60447\nIEZpbGVNb2Rl 60448\nIG1hcnR5 60449\nLlNwcmluZ0FwcGxpY2F0aW9u 60450\nY2VuZQ== 60451\nYW1wb2xpbmU= 60452\nZ2V0U2l6ZQ== 60453\nUmVzdGFydA== 60454\n5pWI 60455\nLnByb2plY3Rz 60456\nIEV0aGlvcGlh 60457\nIHN0YXR1c2Vz 60458\nVElPTg== 60459\nKGJn 60460\nIFh1bml0 60461\nVGVtcG9yYXJ5 60462\nIEVuZ2FnZW1lbnQ= 60463\nIHhm 60464\nIHByb3hpZXM= 60465\nIGdlbmVzaXM= 60466\nUGFnZXJBZGFwdGVy 60467\nIFNsYXZl 60468\nIHN1bmdsYXNzZXM= 60469\nIENobG9l 60470\nIGtvamk= 60471\nYWRlbQ== 60472\nCUpTT05PYmplY3Q= 60473\nzrM= 60474\nIGhvcnM= 60475\nKnc= 60476\nw7Ny 60477\nZXNjaA== 60478\nIGNyaXRpY2lzZWQ= 60479\nemlhbA== 60480\nIFNhbGVt 60481\nLlZlcnRpY2Fs 60482\nIFJhc2g= 60483\nPkU= 60484\ndGVyaW5n 60485\nL3NjcmVlbnM= 60486\nIGhlaWdodGVuZWQ= 60487\n0LDRgNGC 60488\nQXV0aG9yaXRpZXM= 60489\nX2Jib3g= 60490\nw7xuc3Q= 60491\nLmZvbnRTaXpl 60492\nIEJPT0xFQU4= 60493\nZGl2aWRl 60494\nIFNsb3Zlbg== 60495\ndWNlcg== 60496\n2ZI= 60497\nc3R1Yg== 60498\nIG5hdmlnYXRpbmc= 60499\nOmFuaW1hdGVk 60500\nX05PVw== 60501\nX3ZlY3Q= 60502\nfXsK 60503\nQCg= 60504\nIHRlbGVjb20= 60505\nIGNvbnRyYWN0aW5n 60506\nIEFzc2FuZ2U= 60507\nIGV4dHJhY3Rpbmc= 60508\nIGdyw7Y= 60509\nY29icmE= 60510\nLkRJUw== 60511\nIGNyYWI= 60512\nIHR3aXRjaA== 60513\nIHZlcnRz 60514\nIHJlamVjdHM= 60515\nCWZvcm1hdA== 60516\nIHJlZ2VuZXJhdGlvbg== 60517\nLlN5cw== 60518\nc29sdmU= 60519\nCWRpYWxvZw== 60520\nc2hp 60521\nbWV0ZXI= 60522\nKGJlc3Q= 60523\ndmFsaWRhdG9ycw== 60524\nIG9ud2FyZHM= 60525\nIGd1cnU= 60526\nIG1vZGVyYXRvcg== 60527\nb3dpZWQ= 60528\nZXhwZXJpbWVudA== 60529\ncnVi 60530\nIG1xdHQ= 60531\nIENhdWNhcw== 60532\nIG5hdGlvbmFsaXNt 60533\nIG1hbmdl 60534\nCUltR3Vp 60535\nL0VkaXQ= 60536\nIGluaA== 60537\nIGludGVsbGln 60538\nZXJva2Vl 60539\nCWV4cG9ydA== 60540\nIGRpc2NyaW1pbmF0ZQ== 60541\nc3VidHJhY3Q= 60542\nIE1vb2RsZQ== 60543\nZW5zZXI= 60544\nIEd1aWRlcw== 60545\nUkFQ 60546\nLWhvdA== 60547\nX2dycA== 60548\nLnBpY3R1cmU= 60549\nWEE= 60550\nIGluaXRWaWV3 60551\nX0NvbW0= 60552\nIG92ZXJkb3Nl 60553\nICsKCg== 60554\nIFNpbGVudA== 60555\nc2hvd3M= 60556\nIGludGVycG9sYXRl 60557\nRm9ybWF0aW9u 60558\nIGJpc2M= 60559\nbWFya2V0cw== 60560\nKFND 60561\nWmU= 60562\nIE5ldHdvcmtpbmc= 60563\nIGFkcmVuYWw= 60564\nIEd1bnM= 60565\nZXRlb3I= 60566\nRGVjbGFyZWQ= 60567\nb3JnZXRvd24= 60568\nIGthcmVuYQ== 60569\nL3Bhc3N3b3Jk 60570\nX2FkZHJlc3Nlcw== 60571\nSVRFUkFM 60572\nQnV6eg== 60573\nIENvbndheQ== 60574\nKGNhc2U= 60575\nUFdE 60576\naGVpcm8= 60577\nKGFjdA== 60578\nKioNCg== 60579\nKCkpOwoKCg== 60580\nIGFudg== 60581\nIC4uCgo= 60582\nKE1lbnVJdGVt 60583\nKG1haWw= 60584\nX3NlY3Rpb25z 60585\nCW5ldA== 60586\nIHBsdXQ= 60587\nIHdyZW5jaA== 60588\nL29iamVjdA== 60589\nIElzdA== 60590\nIFZJUw== 60591\nL3B1Yg== 60592\nYWx0ZW4= 60593\nIGd1aXRhcnM= 60594\nIGFudGliaW90aWM= 60595\n77yW 60596\nwrk= 60597\nICIrIg== 60598\nZm9ybXVsYQ== 60599\nIGJhYmVz 60600\nIFByb21wdA== 60601\nIGVuaW0= 60602\nL3BsYXllcg== 60603\nCXJlZg== 60604\nIGJ5xIc= 60605\nIGNvbnN1bWVz 60606\nIEhhc3Q= 60607\nIFRhbw== 60608\nICcpKQo= 60609\nIGNsYW0= 60610\nIHRoaWdocw== 60611\nIG1vdGlm 60612\nQXBpT3BlcmF0aW9u 60613\nIFdM 60614\nZ2V0Qw== 60615\nCWZsYWdz 60616\nb2ludG1lbnRz 60617\nIGVjb25vbWljYWw= 60618\nbmVlZGxl 60619\neGxz 60620\ncHJhY3RpY2U= 60621\ndXR6ZXI= 60622\ndGltZW9mZGF5 60623\nLW91dHB1dA== 60624\nIGZpbmRCeUlk 60625\nIEJ1ZGR5 60626\n0J7Rgg== 60627\nU2V2ZW4= 60628\nIEJhcms= 60629\nIGVudm95 60630\nX2FsZ29yaXRobQ== 60631\n5Yip 60632\nIGJhbGxpc3RpYw== 60633\n56e7 60634\ncmFkZXM= 60635\nCWRvYw== 60636\ncm9kdWNpbmc= 60637\nIEVhdGluZw== 60638\nVW5tb3VudA== 60639\nL2RhdGFUYWJsZXM= 60640\nX2JvbnVz 60641\nIGxpdHQ= 60642\ncHBz 60643\nKWxvY2FsT2JqZWN0 60644\ncGVyZg== 60645\nIEhlbHZldGljYQ== 60646\nc2h1dGRvd24= 60647\nL21s 60648\nLnRva2Vucw== 60649\nIEhhcmRjb3Jl 60650\nLHJvdw== 60651\nL2Jn 60652\nU2NhbGVy 60653\n4oCUYXM= 60654\nX2xvZ2l0cw== 60655\n4oCZaW50 60656\nCUFwcA== 60657\nSW1wbGljaXQ= 60658\nLkZwcmludGY= 60659\nRVRP 60660\nIHRlcnJh 60661\nIHBvc3Nlc3Npbmc= 60662\nLnJzdHJpcA== 60663\nLCks 60664\nPXllcw== 60665\nIFN0cmlwZQ== 60666\nPz0= 60667\nbmV1dHJhbA== 60668\nLmdvb2Q= 60669\nIGtlbm5lbg== 60670\nIFN1bmc= 60671\nZmF1bHQ= 60672\neXN0YXRlY2hhbmdl 60673\nQ2FuYWRpYW4= 60674\nJywnIi4k 60675\nIE1pdHM= 60676\nw6ZuZA== 60677\nIFNUUlVDVA== 60678\nIFVSTFdpdGhTdHJpbmc= 60679\nIENvbXBhc3M= 60680\nIC0tCgo= 60681\nIE5TTGF5b3V0Q29uc3RyYWludA== 60682\nfG1pbg== 60683\nLWFkanVzdA== 60684\nIHJlYnVpbHQ= 60685\nTElHSFQ= 60686\nL3Nl 60687\nLW1vdW50 60688\ndnBu 60689\ndmFsaWRhdGVk 60690\nKFFPYmplY3Q= 60691\nIGlnbml0aW9u 60692\nIENoYXJnZXJz 60693\nUllQVE8= 60694\nXWluaXRXaXRoRnJhbWU= 60695\nIEZsdWlk 60696\nIGNhZHJl 60697\nIG5vbWluYXRpb25z 60698\nTmVpbGw= 60699\nIEhvdQ== 60700\nIGN1cnJlbnRz 60701\nX2dlbmU= 60702\nKGlucA== 60703\nUGFyaXM= 60704\nesSZ 60705\nYWdncmVnYXRl 60706\nIGFzc29j 60707\nd2VldGVk 60708\nZXJyYXQ= 60709\n4oCTCgo= 60710\nICcvJywK 60711\nZml4dHVyZQ== 60712\nIEhpZ2hlc3Q= 60713\nYW1iaWVudA== 60714\nIGNobW9k 60715\nIGNvbnRl 60716\nIHNlbnN1YWw= 60717\nIGdhcm1lbnQ= 60718\nemVycw== 60719\nIFBvd2VyZWQ= 60720\nZG9tYWlucw== 60721\nUmV3YXJk 60722\naW9tYW5pcA== 60723\nIGNvY2twaXQ= 60724\nb3V0ZmlsZQ== 60725\nIGJ1aWx0aW4= 60726\nIGluc2lzdGluZw== 60727\nLnZhcnM= 60728\nemlwY29kZQ== 60729\nIO+/ve+/ve+/ve+/vQ== 60730\nZmFpbHM= 60731\nIGNvbnNvbGlkYXRpb24= 60732\nX29pZA== 60733\nUGxhbmV0 60734\nID0iLA== 60735\nCWVs 60736\nVUlMVA== 60737\nw6R0eg== 60738\nYWZhcmk= 60739\nIE1jQ2w= 60740\nVGltZWxpbmU= 60741\nRXN0YQ== 60742\nIGZyYW0= 60743\nWUU= 60744\nIGNlcmVicmFs 60745\nT2ZNb250aA== 60746\nIFByZWdu 60747\nINC60LvQsNGB0YE= 60748\nICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCg== 60749\nIEZyZXM= 60750\nQXBwcm92ZWQ= 60751\nLlNwZWNpYWw= 60752\nIFByb3Rlc3RhbnQ= 60753\nIGFsbGVyZ3k= 60754\nX3BjbQ== 60755\nCUNvcHlyaWdodA== 60756\nIHN1cGVyQ2xhc3M= 60757\nInN0cmNvbnY= 60758\nIE1vaGFtZWQ= 60759\nICcvLw== 60760\nRm9yZUNvbG9y 60761\nQXJ0aHVy 60762\nIEp1bmdsZQ== 60763\nIHZlaW5z 60764\nU2Fk 60765\nIGJhY2t1cHM= 60766\nIE9waW5pb24= 60767\nw7t0 60768\nIGludGVybWl0dA== 60769\nb2R5bg== 60770\nIENocmlzdGluYQ== 60771\nIGFuZHJl 60772\nIGV2YWN1YXRpb24= 60773\ncGFsZXR0ZQ== 60774\naG9yc2U= 60775\nIFJlc2lkZW50 60776\nIEhhc3Nhbg== 60777\nLk5pbA== 60778\nIGFpc2xl 60779\nIEdyb3dpbmc= 60780\nIGJsb2dpbmZv 60781\nL3NxbA== 60782\nX2lvY3Rs 60783\nU2NhbGluZw== 60784\nIE1vbmFk 60785\nX2NwcA== 60786\nIEh1dGNo 60787\nIEFwcGxlV2ViS2l0 60788\nRXhwZW5zZQ== 60789\nX0pPQg== 60790\nIHBvaW50bGVzcw== 60791\nRnJvbUJvZHk= 60792\nYW50YWw= 60793\nIGRlcGljdGluZw== 60794\nIENFTEw= 60795\nIHJlZmlu 60796\nIENOQw== 60797\n7LmY 60798\nX2RpbWVuc2lvbnM= 60799\nIFNBTg== 60800\nIGFmdA== 60801\nIGZvb3RzdGVwcw== 60802\nY2NvbGk= 60803\nX1BIT05F 60804\nL21hdGg= 60805\nLWtpbmQ= 60806\nIE1lYW5z 60807\naWNoYWVs 60808\nLmd1bmE= 60809\nIGluYXVndXJhdGlvbg== 60810\nLWRyaXZpbmc= 60811\nKGRlbGV0ZQ== 60812\nIHRvdGFsQ291bnQ= 60813\nX01D 60814\nLkV4dGVuc2lvbg== 60815\nQ29tbWVyY2lhbA== 60816\nIHpJbmRleA== 60817\nPEN1c3RvbWVy 60818\nImc= 60819\nLXNoYXJl 60820\nIHBhY3Q= 60821\nYWdhcmE= 60822\nIFNJTA== 60823\nX21vZGVz 60824\nIE1vbGVjdWxhcg== 60825\nIHN5c3RlbWF0aWNhbGx5 60826\nPEc= 60827\nX3Njcg== 60828\nIE9ybw== 60829\nYXNlcnM= 60830\nIGJpYw== 60831\nIGRlc3Ryb3lz 60832\nUElQRQ== 60833\nLlN0YXJ0UG9zaXRpb24= 60834\nIGPhu6dh 60835\naXJleg== 60836\nLkJ1bmlmdQ== 60837\nX0Z1bmN0aW9u 60838\nIHPDvA== 60839\nX2Z1dHVyZQ== 60840\nIFdlYWx0aA== 60841\nIE5hdHVyYWxseQ== 60842\n5oC7 60843\nX3llcw== 60844\nIGFicnVwdGx5 60845\nU3RyaW5nRW5jb2Rpbmc= 60846\nIENHUG9pbnRNYWtl 60847\nIHpo 60848\nIGltcGVyc29u 60849\nIHBpdm90YWw= 60850\nIFNvbWFsaWE= 60851\nIHNlZ21lbnRhdGlvbg== 60852\nX0FOQUw= 60853\nIExvZ2luQ29tcG9uZW50 60854\nQ29uc3VsdA== 60855\nIHRydW5jYXRlZA== 60856\nXSI7Cg== 60857\nLmdldENvbmZpZw== 60858\nIGludGVybnNoaXA= 60859\nQmFieQ== 60860\n6rCc 60861\nIHN0cmVuZ3RoZW5lZA== 60862\nX01J 60863\nYmFza2V0 60864\nIG5pY2h0cw== 60865\nIFRWcw== 60866\nIFNoYW4= 60867\n44K1 60868\ncmFjdXNl 60869\nLlJlTFU= 60870\nL2ludGVyZmFjZXM= 60871\nIGdldEl0ZW1Db3VudA== 60872\nIHJldGlyaW5n 60873\nIHNwZWNpYWxz 60874\nIGVudGl0eU1hbmFnZXI= 60875\nYmVsaWVm 60876\nIHNvbGRlcg== 60877\nZGF1Z2h0ZXI= 60878\naWprbA== 60879\nIHV0aWxpemVz 60880\nLmZpeGVk 60881\nU1U= 60882\nIGRyYXN0aWM= 60883\nIGhhY2tz 60884\nZ3J1bmQ= 60885\nIE1V 60886\nIFN0YXJ0ZXI= 60887\nLkNvbXBvbmVudHM= 60888\nX21vdG9y 60889\nR29sZGVu 60890\nIGxvZGdl 60891\nICkpOw== 60892\nIENvcmludGg= 60893\n0LjRh9C10YHRgtCy0L4= 60894\nw7NuaWNv 60895\nZ3JlU1FM 60896\nIEZsdWVudA== 60897\nIG1hcmM= 60898\nLkxvYWRTY2VuZQ== 60899\nLkdyb3Vwcw== 60900\nIGVyaA== 60901\nIEF1dHVtbg== 60902\nU3RvcHBlZA== 60903\nIGl0YWxpYW5v 60904\nIG1pbmlvbnM= 60905\nIEFzc2VydGlvbnM= 60906\nIG11eA== 60907\nQnU= 60908\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 60909\nCXVw 60910\ncmVhZHlzdGF0ZWNoYW5nZQ== 60911\nX01ldGE= 60912\nIGN1cnJlbnREYXRl 60913\nIENoYXBtYW4= 60914\nVW5kbw== 60915\nU2Vhbg== 60916\nYXBy 60917\nIHBhcm0= 60918\nX2ljb25z 60919\nIFN0YQ== 60920\nw6F6 60921\nIHN1YmRpdmlzaW9u 60922\nIGFsdGVyaW5n 60923\nUE5H 60924\ncG9uZW50aWFs 60925\nIHBvc3RncmVz 60926\nIEJEUw== 60927\nLWV4aXN0ZW50 60928\nIEJyYWRmb3Jk 60929\nIE9NWA== 60930\nX1dISVRF 60931\nX1BST0dSQU0= 60932\ncWM= 60933\nIHR5cGluZ3NTbGlua3k= 60934\nIFBpY3M= 60935\nX01FVEE= 60936\nSVRURVI= 60937\nX3N1YnNjcmlwdGlvbg== 60938\nSVJPTk1FTlQ= 60939\nIEh5dW5kYWk= 60940\nKCk7CgoKCg== 60941\nINiz 60942\nIGphYw== 60943\nIGVsaW1pbmF0ZXM= 60944\nKX0pOwo= 60945\nIGNvbXByZW5k 60946\nCWluc2VydA== 60947\nX2ZhY2Vz 60948\nIj4k 60949\nIGViYXk= 60950\nIGNhcHRpdmU= 60951\ncGxpYW50 60952\nIENhbGN1bGF0ZXM= 60953\nb2x0YQ== 60954\nZXN0aW5n 60955\nX3JldmlzaW9u 60956\nIG3DunM= 60957\nK20= 60958\nIiwiIiwi 60959\nV0hBVA== 60960\nIGNvbXBhc3Npb25hdGU= 60961\naGFyZ2E= 60962\nW3JhbmRvbQ== 60963\nIG1vZHVsbw== 60964\nKHNu 60965\nIG9jY3VwYXRpb25z 60966\nLy8vLwo= 60967\nCWJvYXJk 60968\nIEJhbGs= 60969\nd2nEhQ== 60970\nIFdpZmk= 60971\nLlByb2ZpbGU= 60972\nOm1hag== 60973\nCW1hdA== 60974\nTE9DS1M= 60975\nKGpCdXR0b24= 60976\nICgnJA== 60977\nTXVy 60978\n5oyJ 60979\nYmJsZQ== 60980\nIGZyb2c= 60981\nLWhpZGU= 60982\nIGJyb2FkY2FzdGVy 60983\n4Lie 60984\naGFsZWQ= 60985\nIGFtdXNpbmc= 60986\nX3ByZWRpY3Rpb25z 60987\nX2ludHI= 60988\nIGVhZ2xl 60989\n0LDRgtC10LvRjA== 60990\nIGdldExpc3Q= 60991\ncHNpbG9u 60992\nIGNoYXJhY3Rlcml6YXRpb24= 60993\nQVJEUw== 60994\nIHJlbG9jYXRpb24= 60995\nIHJ1bGVycw== 60996\nUEFZ 60997\nIERlZmluaXRlbHk= 60998\nX0FjdGlvbg== 60999\nIGNsb3N1cmVz 61000\nIGZhY3R1YWw= 61001\nb2R5bmFtaWM= 61002\nIHByZWNhdXRpb25z 61003\nbmllag== 61004\nIFBhcnRpZXM= 61005\nIFN1YmFydQ== 61006\nIGNvdXNpbnM= 61007\nYXJiZWl0 61008\nLm1vbmV5 61009\nZ3VudGE= 61010\nKGFuZA== 61011\nZ2V0aXRlbQ== 61012\nLlN0eWxlUHJpb3JpdHk= 61013\nIHNsaWQ= 61014\nc2luZ2xldG9u 61015\nIGdhcm4= 61016\nIFBBUw== 61017\nIGRheno= 61018\nYcW8 61019\nIGJvZ3Vz 61020\nIE1vZw== 61021\nIHJpdmFscnk= 61022\naXNvbA== 61023\nIGxhbmRtYXJrcw== 61024\nw7Fhcw== 61025\nQmVybg== 61026\nIFNhY2hz 61027\nICIpCgo= 61028\nIGhvc3RpbGl0eQ== 61029\nX21leA== 61030\nbWVyZQ== 61031\nTW90 61032\ncGljdHVyZUJveA== 61033\nRGVmZW5zZQ== 61034\nIGFmZmlkYXZpdA== 61035\nb3RoZXJ3aXNl 61036\nLmRpcmVjdG9yeQ== 61037\nX1VuaXR5RW5naW5l 61038\nLWJsb2c= 61039\nLnNraW4= 61040\ncGhlbQ== 61041\nQXBlbGxpZG8= 61042\nZXJjaGFudA== 61043\nW2NsYXNz 61044\nIHdhcnQ= 61045\nLiJb 61046\nYWxldXI= 61047\nL2JhY2s= 61048\nICAgIAkgICA= 61049\nIHByZWNpcGl0YXRpb24= 61050\nIG9ic3RydWN0aW9u 61051\nIHBPYmo= 61052\nIHJ1cHQ= 61053\nVUNLRVQ= 61054\nYXll 61055\n5o6S 61056\nZ3g= 61057\nIGVjbA== 61058\nIHNlY3JlY3k= 61059\nL0hlYWRlcg== 61060\nIExlc2I= 61061\nIGxlaQ== 61062\nIEJ1bGxldGlu 61063\nIGdpdmVhd2F5 61064\nLkhvbWU= 61065\nX1JPT00= 61066\nIlc= 61067\nIGNvd29yaw== 61068\nX3Jh 61069\nIEN5Y2xpbmc= 61070\nIFBhdw== 61071\nIHB1cGls 61072\nL2FyY2g= 61073\nIEZpbGVVdGlscw== 61074\n6aaW 61075\ncnNw 61076\nIGZyZWVkb21z 61077\nIExlYXI= 61078\nfWApLg== 61079\nIGJvd2xz 61080\nL2Jsb2Nr 61081\nX2xvZ2dpbmc= 61082\nIG1ldGhhbmU= 61083\nIGhvcm5z 61084\nIHdvbmRlcmZ1bGx5 61085\nIGFsdGVyYXRpb25z 61086\nIGV4aWxl 61087\nbHNlbg== 61088\nX3BhdXNl 61089\nX0xBTkdVQUdF 61090\nIFVTREE= 61091\nX215c3Fs 61092\nX0FNT1VOVA== 61093\nIExJRkU= 61094\nIHlvdW5nc3RlcnM= 61095\nIHJpb3Rz 61096\nW0U= 61097\nIHVuZm9yZ2V0dGFibGU= 61098\nLH0sCg== 61099\nRGlzcG9zZWQ= 61100\nIEFzc2Fzc2lu 61101\nVU5H 61102\nIE5ld3Nw 61103\nVXNlclNlcnZpY2U= 61104\nOmFsb2Fk 61105\nKycs 61106\nIHNldHRsZXJz 61107\nIHNjcmVhbXM= 61108\nIGluY29udmVuaWVuY2U= 61109\nLlJvdGF0ZQ== 61110\nIGphcnM= 61111\nIFB1enpsZQ== 61112\nIG1lc3Q= 61113\nYXJzaQ== 61114\nIFNoYXJtYQ== 61115\nfCg= 61116\nLmRz 61117\nIFNhY3JlZA== 61118\nX2V2dA== 61119\nIGV4cHJlc3Nlcw== 61120\nIGhvY2g= 61121\nIER1Y2g= 61122\nLmNhbGxz 61123\ndGhy 61124\nIFNoZWZmaWVsZA== 61125\nLkFsZXJ0RGlhbG9n 61126\nIHJhZGljYWxseQ== 61127\nIHRyb3Vz 61128\nIHByZXZhaWxpbmc= 61129\nIFdXSUk= 61130\n4oCZbg== 61131\nZW5zZWx5 61132\nIFllc3RlcmRheQ== 61133\nIFNpcml1cw== 61134\nIGtpbGxlcnM= 61135\nIEZGVA== 61136\nIG92YWw= 61137\nJyk6DQo= 61138\nIOygleuztA== 61139\nb3VyYWdl 61140\nIENoZWNrYm94 61141\nV29ya2Jvb2s= 61142\nLmRlZmVy 61143\nX2Zsb29y 61144\nIGNvdW5jaWxs 61145\nIG5vcnNrZQ== 61146\nbW9pbA== 61147\nb3JlYQ== 61148\nIG1hcmtldGVk 61149\nX1NVUg== 61150\neEFB 61151\nIHN0YWluZWQ= 61152\nZXV0 61153\nIE1lbmc= 61154\nIGllZWU= 61155\nLmV4dGVybg== 61156\nZWdpZQ== 61157\nIHJhcHA= 61158\nIFB5b25neWFuZw== 61159\nJ2NsYXNz 61160\nTW9i 61161\nIGluaXRpYWxWYWx1ZQ== 61162\nX3dhdmU= 61163\nIGphYg== 61164\nIG1hc2N1bGluZQ== 61165\nIGFtcGxpZmllcg== 61166\nIHR0eQ== 61167\nUGF0aENvbXBvbmVudA== 61168\nX3h0 61169\nIEdGUA== 61170\nL3NlYw== 61171\nCWRpc3BhdGNo 61172\nbWFya2Rvd24= 61173\nIFNjaG4= 61174\nYm9sZQ== 61175\nwrfCtw== 61176\nbW91c2Vtb3Zl 61177\nIGVyck1zZw== 61178\nIGFzaWdu 61179\nX21vbm8= 61180\nVG9TZWxlY3Rvcg== 61181\nIFp1 61182\nKFJlY3Q= 61183\nIEVycm9yQ29kZQ== 61184\nbGF0aW4= 61185\nYW5naWJsZQ== 61186\ndnRr 61187\nQ0dTaXpl 61188\nUG9rZW1vbg== 61189\nIGNsYXNzbWF0ZXM= 61190\nIGF0dHJhY3Rz 61191\nIFRhdHRv 61192\ndWx0YW4= 61193\nb2zDs2c= 61194\nIGhhbHRlZA== 61195\n4KSo 61196\nIEthcnQ= 61197\nIHVl 61198\nX0luaXRTdHJ1Y3R1cmU= 61199\nVGVzdENsYXNz 61200\nIEFpcmJuYg== 61201\nXyIs 61202\nIGNoYXJjb2Fs 61203\nIGlwYw== 61204\nIFN0cmV0Y2g= 61205\nLmdsaWRl 61206\nbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz 61207\nIHBvdGlvbg== 61208\nSVRUTEU= 61209\nIGNvdW50ZXJ0 61210\nX2hk 61211\ncHJlcGFyZWQ= 61212\nQWRz 61213\nIFZhbXBpcmU= 61214\ncm9ib3Rz 61215\nLkNyZWF0ZUluZGV4 61216\nU3RhdHVzTGFiZWw= 61217\nIHR1Y2tlZA== 61218\nYWbDvHI= 61219\nVXQ= 61220\nIHN3ZWF0ZXI= 61221\nX0ZO 61222\nICAgICAgICAgICAgICAgIAk= 61223\nYXRha2E= 61224\nIGV5ZWJyb3dz 61225\nYWNvZXM= 61226\ndWRlbg== 61227\nLkxpbmVhckxheW91dE1hbmFnZXI= 61228\nIHN3YXk= 61229\nIG11bHRpbg== 61230\nKCkpKSkK 61231\nIE5TVUludGVnZXI= 61232\nIE15QmFzZQ== 61233\nUGFydG5lcg== 61234\ndXRzY2hlbg== 61235\nIENhdGVy 61236\nLnNldEJhY2tncm91bmRDb2xvcg== 61237\nIGFjY29tcGxpc2htZW50 61238\nX3Byb2JsZW0= 61239\nLmR0ZA== 61240\nIHBhZ2VOdW1iZXI= 61241\nIGphY2tldHM= 61242\nIGNyb3BwZWQ= 61243\ndWVscw== 61244\nIEhlcA== 61245\nIGNhcHBlZA== 61246\nKk1hdGg= 61247\nX2NhbGxiYWNrcw== 61248\nIHB1YmI= 61249\nIEJydW5zd2ljaw== 61250\nLnJlc3BvbmQ= 61251\nWyJf 61252\nIGJlZGRpbmc= 61253\naHl0aG0= 61254\nT1g= 61255\nKHNwZWVk 61256\nIHBlc3RpY2lkZXM= 61257\nIC0tLS0tLS0= 61258\nLkJsdWU= 61259\nIG5vb2RsZXM= 61260\nIEdvZXM= 61261\nIHNhdmVy 61262\nb3h5 61263\nX2NvbXBsZXRpb24= 61264\nIFN3aW5nZXI= 61265\nIGdldERhdGU= 61266\nIG1pbmRlZA== 61267\naW50ZWdyYXRpb24= 61268\nIExvdHVz 61269\nKHN0b3A= 61270\nKCcsJyk7Cg== 61271\nIGZsb29kcw== 61272\nIFdvcmtmbG93 61273\nIGVydXB0ZWQ= 61274\nTWFjcm8= 61275\nIFNhdWNl 61276\nIGV2ZW50TmFtZQ== 61277\nXElucHV0 61278\nQnJlYWtpbmc= 61279\nCXdoZW4= 61280\nX3B3 61281\nSU5ERVI= 61282\nIFdlbGxuZXNz 61283\nIHZveGVs 61284\nIE1lbGw= 61285\nIE1FRElB 61286\nU0VOUw== 61287\nIEZ1bmRz 61288\nIE1pbGQ= 61289\nPEFycmF5 61290\nLXRoaXM= 61291\ndW1wZWQ= 61292\nL2Z3 61293\nIERiQ29udGV4dA== 61294\nV0k= 61295\nZ2lybHM= 61296\nSE9X 61297\nJyk7Pz4K 61298\nIHRlbXB0aW5n 61299\nIHRlc3RhbWVudA== 61300\nIGJpYmxl 61301\nIGNvbnN1bHRlZA== 61302\nIEluZGV4RXJyb3I= 61303\n6KiY 61304\nIGtleXBhZA== 61305\naXp6bw== 61306\nKG9r 61307\nIHdoYXRzYXBw 61308\nIFJlbW90ZUV4Y2VwdGlvbg== 61309\nIHRlYW1lZA== 61310\n4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU 61311\nwrss 61312\nIGdldFRpbWU= 61313\nZGlhZw== 61314\naXNzeQ== 61315\nIGhlZA== 61316\nIGtub3Rz 61317\nam9t 61318\nIGZ1bm5lbA== 61319\nLW1haWxz 61320\nIGV4cG9ydGluZw== 61321\nIFZM 61322\nIEthcm4= 61323\nIEJ1ZGRoaXNt 61324\nIEFsbGFu 61325\nX1JBRElVUw== 61326\nIHdvcmRpbmc= 61327\nIEZvcmdldA== 61328\nIENvcm9uYQ== 61329\naXBoeQ== 61330\nIGxpbWJ1cmc= 61331\ndWdneQ== 61332\nIFVzZXJSZXBvc2l0b3J5 61333\naW1pbg== 61334\nKGVsZQ== 61335\nIGxhYmVsbGVk 61336\n56S+ 61337\nIEhlcm1hbg== 61338\nLnFx 61339\nICIpKTsK 61340\naWViZXI= 61341\nLlRyYW5zbGF0ZQ== 61342\ncnlu 61343\nIGRlc2Vudg== 61344\ndW1k 61345\nU2ltcGx5 61346\nCW1vZGU= 61347\nUnBj 61348\nIFZhbGVuY2lh 61349\nIHN0YWZmZXJz 61350\nIHNlbHY= 61351\nIFNwaWtl 61352\nIGRlbGlj 61353\nIGVydQ== 61354\nX0RU 61355\nSnVkZ2U= 61356\n4buV 61357\nIEJhc2lu 61358\nLm11dGFibGU= 61359\nInVybA== 61360\nIHRhcmlmZg== 61361\nIFNsZWV2ZQ== 61362\nIGZsYXJl 61363\nLmRyb3BvdXQ= 61364\nIGJyaWRlcw== 61365\nKSksDQo= 61366\nX2NvbnN0cmFpbnRz 61367\nZGVzdHJ1Y3Q= 61368\nT3V0bGluZQ== 61369\nIGRpc2FwcGVhcnM= 61370\nX2xvY2tlZA== 61371\nIE5TTG9jYWxpemVkU3RyaW5n 61372\nY2tl 61373\nCW51bGw= 61374\nYWRyZXNzZQ== 61375\nIHRvcHBpbmc= 61376\nIEpva2Vy 61377\nYmlzaG9w 61378\n0L3QvtGB0YLRjA== 61379\nYW5kZXJpbmc= 61380\nX2FtcA== 61381\nPXRpbWU= 61382\nX1NwYWNl 61383\nX1BVTEw= 61384\nJz0= 61385\nIGFudGlxdQ== 61386\nIGNhY2g= 61387\nX19fCgo= 61388\nT05FUw== 61389\n0L7Rjw== 61390\nIHVucmVhZA== 61391\nLnBvbGljeQ== 61392\nb29vb29vb28= 61393\n65+s 61394\nIHVzdGVk 61395\nIFJlY2U= 61396\nIGFsbGVt 61397\n44O844K5 61398\nIFRob3VnaHRz 61399\ndmVpbGxhbmNl 61400\naXN0cmF0ZQ== 61401\nX2xhbmU= 61402\nIGZhbWVk 61403\nLkdldE5hbWU= 61404\nIHNtb290aGVy 61405\nIFF1YWxpZmllZA== 61406\nYXplcnM= 61407\nX2dlbw== 61408\nRmF4 61409\nIE1pbmRz 61410\nIFJhaXNlcw== 61411\nIHRyYW5zY3JpcHRz 61412\nQ29udmVyc2F0aW9u 61413\nIHJlbWFya2Vk 61414\n64KY 61415\nZGxpbmc= 61416\nIGRlcGxveWluZw== 61417\nIHNoYXJlZEFwcGxpY2F0aW9u 61418\nIGtw 61419\nRm9udEF3ZXNvbWVJY29u 61420\nX2R1bW15 61421\ncmVpYmVu 61422\nIEphbmVpcm8= 61423\nRGlyZWN0aW9ucw== 61424\nLmdldEJlYW4= 61425\nc2Fzcw== 61426\nIGNvbW1hbmRlcnM= 61427\ndmF0aW9u 61428\nZXJyb3JDb2Rl 61429\nIEFsbG95 61430\nLmxvY2FsaXplZA== 61431\n0JE= 61432\nIGRpc2h3YXNoZXI= 61433\nIFNvdXA= 61434\nTnU= 61435\nX0RlZmF1bHQ= 61436\nIHVuZXZlbg== 61437\nIC8+IjsK 61438\nLUJhc2Vk 61439\nIHNlYW1sZXNzbHk= 61440\nLW51bGw= 61441\nIFhD 61442\nIHN0ZXc= 61443\nKGRlbGF5 61444\nQVRPUlM= 61445\nIFdoZWVsZXI= 61446\nIjw/ 61447\nIENoYW5kbGVy 61448\nIHJldGFsaWF0aW9u 61449\nIGJ1ZGRpZXM= 61450\nLXNpemluZw== 61451\nIEVpbnM= 61452\nIC4uLiw= 61453\ncXVldGU= 61454\nIERPQw== 61455\nIGZhbHNlbHk= 61456\nIGZsYXRz 61457\nTklDQUxM 61458\nIGxpYnI= 61459\nQmVOdWxs 61460\naW11bGF0aW9u 61461\nCVF1ZXJ5 61462\nX3V0 61463\nIHBsYXF1ZQ== 61464\nYmlsZA== 61465\nIHNjcmVhbWVk 61466\nLm12Yw== 61467\nLldpZGdldA== 61468\nIGRpZmZlcmluZw== 61469\nL3N1cHBvcnQ= 61470\nX1ZPTFVNRQ== 61471\nLm5vZGVUeXBl 61472\nCVdyaXRl 61473\nIHLDs3du 61474\nYm9va21hcms= 61475\nX0NPTk4= 61476\nIENyZWVk 61477\nIGluaGliaXRpb24= 61478\nIFJlaGFi 61479\ndXZyZQ== 61480\nIGR1bXBz 61481\nb3dlag== 61482\nX3BsYWNlaG9sZGVy 61483\nIEhXTkQ= 61484\nIGRlcm1hdA== 61485\nLmRldGFjaA== 61486\nIGZpbmFsaXplZA== 61487\nZ2VyaWVz 61488\naWRhaw== 61489\nX3Byb2c= 61490\nIHVwZGF0ZVVzZXI= 61491\nbHlz 61492\nLkdvb2dsZQ== 61493\nIGx1ZWdv 61494\nIGFudHM= 61495\n5qCH6aKY 61496\nIERSTQ== 61497\n0LvQtdC9 61498\nLWRi 61499\nZXJyaWNr 61500\nX2xu 61501\nLi5c 61502\naWtpdA== 61503\nIERpZW4= 61504\nIHBhcmFtZXRyb3M= 61505\na2V5cHJlc3M= 61506\nIEtlcmFsYQ== 61507\nIGRyYWluZWQ= 61508\nZsO8Zw== 61509\nIGNhcGl0 61510\nX2F1Zw== 61511\ndGFudA== 61512\nTmF2QmFy 61513\nIHJvbGxiYWNr 61514\nIGxleQ== 61515\n4LiI 61516\nIEJTUA== 61517\nIFByZWRpY3Rvcg== 61518\nIHdhZ29u 61519\nICJ8Ig== 61520\nU2VydmU= 61521\nLkRvbmU= 61522\nIER1cmNo 61523\nUHJvdmlkZQ== 61524\nCXNjb3Jl 61525\nX09E 61526\nLndlYXBvbg== 61527\nIHVuaXZlcnNhbGx5 61528\nIGluanVuY3Rpb24= 61529\nX1NDUk9MTA== 61530\nLk1hdHJpeA== 61531\nIE1vbmdvQ2xpZW50 61532\nYnVmZmVycw== 61533\nIGJhZGdlcw== 61534\nIHNoYXJrcw== 61535\nIFNoYXJr 61536\nTU9ERUw= 61537\nLlJFQUQ= 61538\nCXRhZw== 61539\nIHN0cnRvdXBwZXI= 61540\nRVJHWQ== 61541\nYmlhcw== 61542\nIGFjY291bnRJZA== 61543\nIEVtbWFudWVs 61544\nIHJlc29ydHM= 61545\nIHN2bg== 61546\nd2FybmluZ3M= 61547\nX0lF 61548\nTEFT 61549\nIG51bGxh 61550\nCWFz 61551\nIGRlbWVhbg== 61552\n4oCcQXM= 61553\nQXV0aG9yaXplZA== 61554\nIHRlbmRlbmNpZXM= 61555\nLXNldHRpbmc= 61556\nIHByZWxvYWQ= 61557\nIGNubg== 61558\n4oCcTm8= 61559\nJSkKCg== 61560\nPVQ= 61561\ndXN0bw== 61562\nIEZJUkU= 61563\ncmVzZWFyY2g= 61564\nINCT 61565\nIExlc3NvbnM= 61566\nLkFwcGVuZEZvcm1hdA== 61567\nIGluaXRpYXRpb24= 61568\nIENvdXM= 61569\nYXJlcg== 61570\ncHJvamVjdGlvbg== 61571\nIFNoZWV0cw== 61572\nIEZvbGQ= 61573\nUmVkZGl0 61574\nRGVsZXRpbmc= 61575\nIHphbQ== 61576\nIE5ldXJhbA== 61577\nIEZlY2hh 61578\nIMKu 61579\nIHRhc3RlZA== 61580\nIEVuZW1pZXM= 61581\nIEpvaG5zdG9u 61582\nIGRhbmNlcnM= 61583\nIGRpc2FibGluZw== 61584\nIHBldHR5 61585\nIFdlbGQ= 61586\nLy0t 61587\nKHNwcml0ZQ== 61588\nSUdP 61589\nYXJnb3V0 61590\nIHF1YXJ0ZXJiYWNrcw== 61591\nZGlzcGF0Y2hlcg== 61592\nIFN1c3RhaW5hYmxl 61593\nZW5hcmlvcw== 61594\nIFNraQ== 61595\nIGZhY3Rv 61596\naWxsaW4= 61597\nX2V4dGVuc2lvbnM= 61598\nybU= 61599\nPkg= 61600\nZWFzdA== 61601\nLmFpcg== 61602\n4oCcQnV0 61603\nT2JqZWN0Q29udGV4dA== 61604\nc3VjY2Vzc2Z1bGx5 61605\nX2xhbmQ= 61606\nIGZvbGRz 61607\nX0NPT1JE 61608\nIHN1YnBv 61609\nLmdldEFkZHJlc3M= 61610\naW5zdHI= 61611\nTWF0ZXJpYWxz 61612\n0YPRgdGC 61613\nZGVwb3NpdA== 61614\nLWxhc3Q= 61615\nX0dSQVk= 61616\nPWZpbmQ= 61617\nIG11dGFudA== 61618\nIGxlc2JpZW5uZQ== 61619\nbGV0Y2hlcg== 61620\nUk9VR0g= 61621\ndXJla2E= 61622\nLmNhcHR1cmU= 61623\nIGVubg== 61624\nIChbWw== 61625\nIEZsdQ== 61626\nIHRhc2tJZA== 61627\nIEh1c3NlaW4= 61628\nLmZvbGRlcg== 61629\nIGF1c3Rlcml0eQ== 61630\nSVNUUkFUSU9O 61631\nX0ltcGw= 61632\n5rOo5oSP 61633\nIGRlY3JlZQ== 61634\nLWNoYXQ= 61635\nIGltcGxpY2F0aW9u 61636\nIGd1ZXNzZXM= 61637\ndWxrYW4= 61638\nQW5hbHl0aWNz 61639\nLnBsdXM= 61640\nQ09NTUFORA== 61641\n0LXQu9C4 61642\nwrsKCg== 61643\nX1NJVEU= 61644\nIGVxdWFsVG8= 61645\nU3VwcG9ydEZyYWdtZW50TWFuYWdlcg== 61646\nIFJlY29yZGluZw== 61647\n5a6M5oiQ 61648\nIGJhZ2dhZ2U= 61649\nIHBpdGNoZXJz 61650\nIEVo 61651\nb3F1ZQ== 61652\nCWNudA== 61653\nID0+JA== 61654\nL2Zvbw== 61655\nSVJB 61656\nIFNhdGVsbGl0ZQ== 61657\nYm9yYWg= 61658\nIH19Igo= 61659\nIEVuZHM= 61660\nIFNwcmF5 61661\nLHBhcmFt 61662\nLkNocm9tZQ== 61663\nKnE= 61664\ndGhvdWdodA== 61665\naWJyYXRlZA== 61666\nIHRoaWV2ZXM= 61667\nIGJlbmVmaWNpYXJpZXM= 61668\nRW50ZXJlZA== 61669\nb3R0ZXN2aWxsZQ== 61670\nIHZldGVyaW4= 61671\nQnlJRA== 61672\ncXVpcGU= 61673\ndW1wdGlvbg== 61674\nLXVuaXQ= 61675\nRXhlY3V0aW9uQ29udGV4dA== 61676\nQHM= 61677\nIEdpb3Y= 61678\nLlRvb2xUaXA= 61679\nX2ZyaWVuZA== 61680\nKGF0dHJpYnV0ZXM= 61681\nIGR1bXBpbmc= 61682\nIEpD 61683\nX0RPQ1VNRU5U 61684\nIEFybW91cg== 61685\nKGluc2VydA== 61686\nLkhvcml6b250YWxBbGlnbm1lbnQ= 61687\nIFFlZA== 61688\n44GE44G+44GZ 61689\nL2dpdA== 61690\nIFlZWVk= 61691\nIENhcmRpZmY= 61692\nIGFwYQ== 61693\nb3JnYW5pYw== 61694\nIFdoZXJlYXM= 61695\nIOad 61696\nIE1pYQ== 61697\nIGRlbW9saXRpb24= 61698\nIHNjYXJz 61699\nIHBhaQ== 61700\nIHJldHJpZXM= 61701\nIHJx 61702\nIERlbmlz 61703\nKFV0aWxz 61704\nIGFsbGV2aWF0ZQ== 61705\nIFBJQw== 61706\naWR1ZQ== 61707\nIGFja25vd2xlZGdpbmc= 61708\nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 61709\n56Gu5a6a 61710\nxKs= 61711\nXEpzb24= 61712\nLmJpbmFyeQ== 61713\nIHh0eXBl 61714\nc2lnbmFscw== 61715\nIEFwcGVhcmFuY2U= 61716\nJnI= 61717\nfXM= 61718\nQ2k= 61719\nIElsbHVt 61720\ncG9yYXRl 61721\naG9n 61722\nIGluZGV4T2Y= 61723\nXENvbW1hbmQ= 61724\nX3BhcmFsbGVs 61725\nIFNoZXJsb2Nr 61726\n7YM= 61727\nICIiKQ0K 61728\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v 61729\nIGNyaXRpY2l6ZQ== 61730\nIFNvYXA= 61731\nIE1hdGNoZXI= 61732\nIGdyaWxsZWQ= 61733\nKlQ= 61734\nIGFkb3Jl 61735\ndWxsaW5n 61736\nIGplZG9jaA== 61737\nX3JlZnM= 61738\nbGVhbnVw 61739\nIEpBWEI= 61740\nIHJvc2Vz 61741\nIExpYW0= 61742\nc2l6ZWk= 61743\nIGdldGNoYXI= 61744\nIHRhcmRl 61745\nLXRvb2x0aXA= 61746\nIHF1YWxpZmllcg== 61747\nIEludGVybWVkaWF0ZQ== 61748\nX1dpbmRvdw== 61749\nIE1hbHRh 61750\nRGlzY29ubmVjdA== 61751\nZXdoZXJl 61752\nQ2FtcG8= 61753\nIGlycmF0aW9uYWw= 61754\nbGVkbw== 61755\nIERO 61756\nQVJHVg== 61757\nIG91dHJv 61758\nIHRoaXJ0ZWVu 61759\nSm9zZXBo 61760\nTUFS 61761\nL2ds 61762\nSmVzcw== 61763\nIFBzeWNoaWF0 61764\nIHBhZGRpbmdCb3R0b20= 61765\nLWxvb3A= 61766\nL2ZvbnRz 61767\nX3NlZW4= 61768\nVGVhbXM= 61769\nUmVhY3RET00= 61770\nKG1hbg== 61771\nKHhwYXRo 61772\nLmdldFNpbXBsZU5hbWU= 61773\nPigq 61774\nIFB2dA== 61775\nIGVsZGVycw== 61776\nIHBpZXM= 61777\nLnVzZXJBZ2VudA== 61778\nLXJlZ2lvbg== 61779\nIEdyZWVrcw== 61780\nKGZyYWdtZW50 61781\nc3R1 61782\nIGNvdW5jaWxz 61783\nIHN0YW1pbmE= 61784\nIEdvZGRlc3M= 61785\n6KW/ 61786\nIHBoaWxvc29waGVycw== 61787\nIHBlcnNvbmU= 61788\nIExvc2U= 61789\nIENMUg== 61790\nIERvY3M= 61791\nIHNvYWs= 61792\nIEhPTERFUg== 61793\nIGJlbGxz 61794\naGFzaENvZGU= 61795\nUkFURQ== 61796\nX1dFSUdIVA== 61797\naW5vdXM= 61798\nZW5kcmE= 61799\nb3Bob2JpYw== 61800\nIHByb3Nl 61801\nIGZpbmVseQ== 61802\nL29hdXRo 61803\nKHNwYWNl 61804\nYWRnZQ== 61805\nIE1hbWE= 61806\nIHN0cmluZ0J1ZmZlcg== 61807\nIHN0aW50 61808\nIG1pc21h 61809\nIHZpbGxhaW5z 61810\nIENyaW1lYQ== 61811\nIGRpcGxvbWE= 61812\nINC/0L7RgdC7 61813\nIEJlYQ== 61814\nKGpvaW4= 61815\nIO2VtA== 61816\nQ0hBVA== 61817\ncGVyaW5n 61818\nIENyb3M= 61819\nIG1vbmtleXM= 61820\nIHByZWRz 61821\neWxh 61822\nLCws 61823\nIHZpYnJhdG9y 61824\nIE5V 61825\n5YWI 61826\nZmFudA== 61827\nemV0 61828\nIGJpZXRldA== 61829\ndW5mdA== 61830\nc3dvcnRo 61831\nLkZsb3c= 61832\nIHBzeWNoZWQ= 61833\nIENvbnRpbmVudGFs 61834\nPnQ= 61835\nIHF1aWx0 61836\nLlVQ 61837\nIGV4cGFuc2l2ZQ== 61838\nRGlzcG9zZQ== 61839\nKGxhbmd1YWdl 61840\nQ2Fwcw== 61841\nX1pPTkU= 61842\nIHJlY3ljbGU= 61843\nIE1hbmFnZWQ= 61844\nY3VycmVudENvbG9y 61845\nLmJyb2FkY2FzdA== 61846\nc2lnbklu 61847\nLnByb20= 61848\nbGx1 61849\ndWVibG8= 61850\nIHB1bmNoZXM= 61851\nIGF1dG9tYXQ= 61852\nIGFzc2lnbmluZw== 61853\nIGNyZWF0ZVVzZXI= 61854\nIEFsbGllZA== 61855\nIGNvbmR1Y3Rvcg== 61856\ngqg= 61857\nIHNhZGRsZQ== 61858\nIGRuaQ== 61859\nb21lZGljYWw= 61860\nLVdlc3Q= 61861\nUG9zaXRpdmVCdXR0b24= 61862\nIGl0YWxpYw== 61863\nP1s= 61864\nKHRyaWdnZXI= 61865\nIGVsZXBoYW50cw== 61866\nIjoiIiwi 61867\nIGNhbGliZXI= 61868\ncmFmdGVk 61869\nZGlnaXRz 61870\nIG1hcnNoYWw= 61871\nbWlsbGlzZWNvbmRz 61872\nbWFya2Vycw== 61873\nbW9t 61874\nL3BsYWNl 61875\nIGhvbGlzdGlj 61876\nOnQ= 61877\nIyw= 61878\nIGJvdG8= 61879\nIG5hdXNlYQ== 61880\nIFNob290aW5n 61881\naXRlY2g= 61882\nIHRleHRTdGF0dXM= 61883\nPENsYXNz 61884\nIERlc2NyaWJl 61885\nIGJ1ZmZldA== 61886\nZ2ls 61887\nIGxvZ2l0cw== 61888\nc3RkY2FsbA== 61889\nbW9kcw== 61890\nIFNrdWxs 61891\nIEJhcmU= 61892\naG9wZQ== 61893\nIEludHI= 61894\nRmFpcg== 61895\nCXB0 61896\nIGFjb21wYW5o 61897\nIGZraw== 61898\nX3JwYw== 61899\nSW5zdGFsbGVk 61900\nX2Fucw== 61901\nLmdldE1pbnV0ZXM= 61902\n4oCmIgoK 61903\nLXRocmVhZA== 61904\nIHByZXNjaG9vbA== 61905\nQUlMUw== 61906\nIGRpZmZpYw== 61907\nKGNvbnZlcnQ= 61908\nIE5hdGg= 61909\nIERPSg== 61910\nIHJlZ2ltZXM= 61911\nIGVudGh1c2lhc3Q= 61912\nIHdhcnJhbnRpZXM= 61913\nIGZhc2NpbmF0ZWQ= 61914\nX2JpbmRpbmc= 61915\nX05vdA== 61916\nb2Z0ZW4= 61917\nX1JX 61918\nL21haWw= 61919\nIHRpdGxlTGFiZWw= 61920\nIHZpbGxhZ2Vycw== 61921\nIEppYW5n 61922\nIHN3YWdnZXI= 61923\nLlJvd0luZGV4 61924\nX2ltZ3M= 61925\ncmFweQ== 61926\nVkVSQUdF 61927\nLlVw 61928\nIG5vb3A= 61929\nY2lv 61930\nCVNU 61931\nIGRlY3JlbWVudA== 61932\nIG1hZ25lc2l1bQ== 61933\nX3JvdGF0ZQ== 61934\nU2l0 61935\nIG5pZXV3ZQ== 61936\nIHRlcm1lZA== 61937\n7ZWp64uI64uk 61938\nIHVyZw== 61939\nX3RvdWNo 61940\nIHN3YXJt 61941\nIGNsYXZl 61942\ndGhlc3Q= 61943\nIExhZg== 61944\nSFg= 61945\nIEh1bGs= 61946\nIHBsYWludGV4dA== 61947\nIFNvZmE= 61948\nZ2V0U2Vzc2lvbg== 61949\nTGVk 61950\nIGVjb3N5c3RlbXM= 61951\naGVp 61952\nIEtpbGxz 61953\nIGh1c2JhbmRz 61954\n0YXRgNCw0L0= 61955\nKGRvbQ== 61956\nX3RpbGVz 61957\nTmliTmFtZQ== 61958\nIGRvbmF0aW5n 61959\nLmFjYw== 61960\nIGxpZmVzcGFu 61961\nLmJu 61962\nX1JHQ1RY 61963\n5qU= 61964\nYW5zZW4= 61965\nIG1vZGVsbGluZw== 61966\nTGF5b3V0UGFyYW1z 61967\nIG9uQ2hhbmdlVGV4dA== 61968\ncnNh 61969\nLWxvY2F0aW9u 61970\nLlBl 61971\nKGJ1cw== 61972\nKHNvbmc= 61973\nIHByb2R1aw== 61974\nIFNIT1VMRA== 61975\nIENK 61976\nIHNvcw== 61977\nIEhvbWVDb250cm9sbGVy 61978\nLmxvYWRlZA== 61979\nKERvY3VtZW50 61980\nLnNvY2lhbA== 61981\ndGlsZXM= 61982\nIGxhbWU= 61983\nPWRm 61984\nLnBhcnNlTG9uZw== 61985\nIHByYWM= 61986\nIGRldG94 61987\nIFZF 61988\nIHB1bnRvcw== 61989\nIGRvY3Ry 61990\nIGFuY29y 61991\nQ0FQRQ== 61992\nIGNtYg== 61993\n54S2 61994\nKiki 61995\nOi8vLw== 61996\nVmFsdWVUeXBl 61997\nIG1vcnRnYWdlcw== 61998\nO3E= 61999\nIFJvY2tldHM= 62000\nc3BvcnQ= 62001\nVUdD 62002\nY3Rz 62003\n44KB 62004\naWV1cg== 62005\nIEFwcGVhbA== 62006\nKG5i 62007\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 62008\nSU1BVElPTg== 62009\nIENyZXM= 62010\nIE1hbmlw 62011\nQ2F1c2U= 62012\nYXR5cGVz 62013\nbWFudWZhY3R1cmVy 62014\nIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 62015\nIHNwb3I= 62016\nZXNvbg== 62017\nIHB1bmNoZWQ= 62018\nIGJvb2ttYXJrcw== 62019\nIEJ1bGs= 62020\nQ29tcGxldGVMaXN0ZW5lcg== 62021\nIFRhbGtpbmc= 62022\nIEVybmVzdA== 62023\nIHJ1YmJpc2g= 62024\na2lsbHM= 62025\nIERFRklO 62026\nIG5laWdoYm91cmluZw== 62027\nYXJsbw== 62028\nIFBDQQ== 62029\nCW1hdHJpeA== 62030\nbG9r 62031\nIGF0bGFz 62032\nIEd1cg== 62033\nIHd5bg== 62034\nLW5lZ2F0aXZl 62035\nIHR1bA== 62036\nIHJlbGlj 62037\nIFZvbHRhZ2U= 62038\nIFByZWlz 62039\nIEpOSUNBTEw= 62040\nIFBNSUQ= 62041\nYWtldA== 62042\nCWF0dHI= 62043\nIGV0aXF1 62044\nIE1K 62045\nIEdtYWls 62046\nY2xy 62047\nX2V4ZWN1dGlvbg== 62048\n6ZSu 62049\ncG9zaXRvcg== 62050\nLmFm 62051\nTnI= 62052\nR2VvcmdpYQ== 62053\nVG9wb2xvZ3k= 62054\nIHBlcmNow6k= 62055\nIG11c2xpbQ== 62056\nIGVwaWRlbWk= 62057\nIHNhYm90 62058\nYWN0dXM= 62059\nIOuMgA== 62060\nIElPRXJyb3I= 62061\nLmVzdA== 62062\ncHJlZnM= 62063\nIEtyaXNo 62064\nLlJlYWRLZXk= 62065\nTkFTQQ== 62066\ndcOnw6Nv 62067\nX0Ri 62068\ndW1lcmF0b3I= 62069\nV2lkZQ== 62070\nKHN0YXRlbWVudA== 62071\nLmVuZHBvaW50 62072\nLi4uLi4uLi4u 62073\nIFsq 62074\nc3RyZWFtcw== 62075\nbXRpbWU= 62076\nUHg= 62077\nYXRy 62078\nIHRwbA== 62079\nUm9tYW4= 62080\nIHNjZW5pYw== 62081\nLm56 62082\nIFNlY29uZHM= 62083\nc3VibWVudQ== 62084\nIOyLpO0= 62085\nX2J1bmRsZQ== 62086\nIGRlxJ8= 62087\nIFNpc3RlcnM= 62088\ncHJlZmVyZW5jZXM= 62089\nIHBvcnRh 62090\nQWR2aXNvcg== 62091\nbWF4TGVuZ3Ro 62092\nIEdSRUFU 62093\nX18oCg== 62094\nb2xlc3Q= 62095\nIExhYmVscw== 62096\nIGVuZmVy 62097\nICAgICAgCgo= 62098\nIFRoZWZ0 62099\nX0ZJTEw= 62100\nIFdpc2U= 62101\nKWFwcGxpY2F0aW9u 62102\ndW5hbWk= 62103\nPigpKQo= 62104\nQUREUkVTUw== 62105\nQlNU 62106\nZXR6dA== 62107\nIFFncw== 62108\nU2Vuc2U= 62109\nRXhjZXB0aW9uSGFuZGxlcg== 62110\nIENodQ== 62111\nLmdldE93blByb3BlcnR5 62112\nIGV4ZXJjaXNlZA== 62113\naW90aWM= 62114\nIFJlbGVhc2Vz 62115\nIHBpbnRlcmVzdA== 62116\nb2xpZQ== 62117\naXNvZnQ= 62118\nIHNlcXVlbmNpbmc= 62119\nIHBhZHJl 62120\nXSkpOw0K 62121\nKHJhZGl1cw== 62122\nLm1lZA== 62123\nYWludGllcw== 62124\nLk9iamVjdE1vZGVs 62125\nIGVtcGxl 62126\nIHNlZ3Vybw== 62127\nU3RhcnM= 62128\nIHF1YWxpdGF0aXZl 62129\nbGVtbg== 62130\n4bux 62131\nPiIpLg== 62132\nIGd4 62133\nLWNlcnQ= 62134\nIEFTVE0= 62135\nIGZ1bGxuYW1l 62136\nIHRlbGVtZXRyeQ== 62137\nIENhbWJvZGlh 62138\nX3Vs 62139\nIENsYXJl 62140\nQ1VTVE9N 62141\nUUM= 62142\nIFVucw== 62143\nIEhUVFBT 62144\nIFBhcmtpbnNvbg== 62145\nYW5jeWJveA== 62146\nJywnLg== 62147\nVHVl 62148\nLmdldExhc3Q= 62149\nIGFiaQ== 62150\nxIVk 62151\nQXN0 62152\nIEVkaXRpbmc= 62153\nLlVuaXR5 62154\nam1w 62155\nIG1hdHM= 62156\nIHNoYXJlZFByZWZlcmVuY2Vz 62157\nQ2FwdGFpbg== 62158\nLnBhZ2VTaXpl 62159\nIHJ0bA== 62160\nIGFubWVsZA== 62161\nUnVudGltZU9iamVjdA== 62162\nIGRlbWFuZGU= 62163\nKCI7 62164\nc2VpdGU= 62165\nLWhlYWRlZA== 62166\nIEtyYQ== 62167\nIEZPTlQ= 62168\nYFw= 62169\nQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbg== 62170\nLmF2Zw== 62171\nYXRpY2Fs 62172\nQWo= 62173\nIHBlcm1pdHRpbmc= 62174\nUHJvag== 62175\nRVJSUQ== 62176\nIGNyZWFtcGll 62177\nIEJ1eWVy 62178\nLW1vZHVsZXM= 62179\nIFN1bmRheXM= 62180\nfGAK 62181\nIGRheXRpbWU= 62182\nICso 62183\nIGdsaXRjaA== 62184\nIE9wZXJhbmQ= 62185\nIHRveGlucw== 62186\naW55YQ== 62187\nRE5T 62188\nIFNhcw== 62189\nQ2FrZQ== 62190\nIE5hdGlvbmFscw== 62191\nLmFkZFRv 62192\nIHNpbmtpbmc= 62193\nIGNvbXByZWhlbnNpb24= 62194\nIHNjb3I= 62195\nYWdlbWVudHM= 62196\nIHRhcmQ= 62197\nIG1hcmNoaW5n 62198\nIE1UVg== 62199\nIHNhbmU= 62200\nQ3JlYXRlSW5mbw== 62201\n4bqv 62202\nIGVuZEluZGV4 62203\nCWxheW91dA== 62204\nIOWQjQ== 62205\nU0lURQ== 62206\nIFRIRVJF 62207\nIFt7Jw== 62208\nb3BhdGhpYw== 62209\nIHRyYW5zbWl0dGVy 62210\nL2JvZHk= 62211\nIHB1bmQ= 62212\nIENsb3Npbmc= 62213\nIHNldGF0dHI= 62214\nIGJvdW5kZWQ= 62215\nQXRsYXM= 62216\nc3VtaW5n 62217\nKHRpbWVz 62218\ncGFyZXI= 62219\neW5vbQ== 62220\nZmVpdA== 62221\nIGZyZW0= 62222\nLWxlZw== 62223\nIEJyYXM= 62224\nPiM= 62225\nIOy2nOugpQ== 62226\nIElOU1RBTkNF 62227\nIENvdWNo 62228\nX2hvc3Rz 62229\nbGlrZWxpaG9vZA== 62230\nLk1hcmtlcg== 62231\nIE1hc2tz 62232\nIGNlcmVhbA== 62233\ndXRpbGl0aWVz 62234\nIGVsZW1lbnRhbA== 62235\nIGRpc3RvcnRlZA== 62236\naW5hY3RpdmU= 62237\nY3J5 62238\nV0w= 62239\nVVBQT1JURUQ= 62240\nLlRocm93cw== 62241\nL3NjaGVtYQ== 62242\nc2VyaWU= 62243\nLiInLA== 62244\nIEJlbmVkaWN0 62245\nLXBpY2tlcg== 62246\naWdncw== 62247\nIFBpcmF0ZQ== 62248\n5ZGo5pyf 62249\nIFRoZW1h 62250\nIFNvdXRoYW1wdG9u 62251\nIGFycmF5V2l0aA== 62252\nIFBhdWxh 62253\nIHByZWRpY3Rvcg== 62254\nLUFzcw== 62255\nLnVzZXJpZA== 62256\nIHBlcmk= 62257\nIGV4YWdnZXJhdGVk 62258\ndXJhdGU= 62259\nYXJzZWlsbGU= 62260\nIENvbmNlbnQ= 62261\nIFBpaw== 62262\nIEBfOwoK 62263\nIGZvcm1hdGlvbnM= 62264\nIGRlbm9taW4= 62265\nIi8+Lgo= 62266\nZW5kZWRvcg== 62267\nIHBhbmNyZQ== 62268\nIGFtdA== 62269\nIG9uUmVzdW1l 62270\nb25EZWxldGU= 62271\nIEJDSA== 62272\nKSgi 62273\nbW92ZW1lbnQ= 62274\nIHBvdGFzc2l1bQ== 62275\nPCEtLVs= 62276\nIG1lbWVz 62277\nX1NFVFVQ 62278\nX2dhbW1h 62279\nIGNvbG9yV2l0aFJlZA== 62280\nIGdyYXZlcw== 62281\nIHN0YXR1dGVz 62282\nIGFxdWFyaXVt 62283\nIExhbWFy 62284\nIHhBeGlz 62285\nV2VicGFja1BsdWdpbg== 62286\nX2ZvbGQ= 62287\nLmdlbw== 62288\nIEZlZXQ= 62289\nLXNwZWFraW5n 62290\n6aKd 62291\nX2Nvcw== 62292\nIEF2ZWM= 62293\nYW5zdA== 62294\nIEVFUFJPTQ== 62295\nIGRlYWxlcnNoaXA= 62296\nIFVudGVybmVobWVu 62297\nLEludGVnZXI= 62298\nIMOqdGVz 62299\nLmB8YAo= 62300\ndmluZQ== 62301\nIEtuaWZl 62302\nX3ZlcnRpY2Fs 62303\nLkRvd25sb2Fk 62304\nIG92ZXJzaXplZA== 62305\nbGlk 62306\nIHBpbGxhcg== 62307\nY2F1Z2h0 62308\nIGZsYWdnZWQ= 62309\nKHJvdXRlcg== 62310\nKFJFRw== 62311\nIGJhcmJlY3Vl 62312\nYnJvd3Nl 62313\nIEZpdHpnZXJhbGQ= 62314\nINC/0YDQvtCy 62315\naXJpZQ== 62316\nIGVyc3Rl 62317\nZWxpYg== 62318\nX1BSRVNT 62319\nIGhlYWxlZA== 62320\nIGhhdXQ= 62321\nPnhwYXRo 62322\nIFdlbg== 62323\nZ3J1bnQ= 62324\nLktleXdvcmQ= 62325\nLWhhc3BvcHVw 62326\nbnc= 62327\nU1o= 62328\nZ2FiZQ== 62329\nSW50ZXJhY3Rpb25FbmFibGVk 62330\ncHJlY2g= 62331\nIHByaW1v 62332\nc3RyaXBl 62333\nYWx0ZWQ= 62334\nX0JPUkRFUg== 62335\nZmluZEJ5 62336\nX2Fubm90YXRpb24= 62337\nV2ViU29ja2V0 62338\nQnVy 62339\nIGRpcGxvbWFjeQ== 62340\nKHRk 62341\nIFNpbXBs 62342\nZGV0ZWN0 62343\ncGVyZm9ybWFuY2U= 62344\nIGNhcmJvaHlkcmF0ZXM= 62345\nL2lvdXRpbA== 62346\nLS0tLS0tKw== 62347\nX3Ny 62348\nbWVldGluZw== 62349\nIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 62350\nX1Zhcg== 62351\nIHJvdmVy 62352\nIGNhc2k= 62353\nIE1hdGNoZXM= 62354\ncXJ5 62355\nX0JPT0s= 62356\nIHByZXN1bWVk 62357\nIE3DqXQ= 62358\nL2l0ZW1z 62359\nIENyZWRlbnRpYWxz 62360\nXSkuCg== 62361\nIEthcmRhc2g= 62362\nQWRtaW5pc3Ry 62363\nIFNsb3Zhaw== 62364\nKCcsJykK 62365\nIGNvbnF1ZXN0 62366\nUGVyc2lzdA== 62367\nIERyYWlu 62368\nYmlq 62369\nIGRvdg== 62370\nIHPDuGdlcg== 62371\nV29uZGVy 62372\nQVNFVA== 62373\nW21pbg== 62374\nZ3VuYQ== 62375\nZ3Jvd24= 62376\nIH0pCgoK 62377\nQVVE 62378\nIGJlbGlldmVy 62379\naXNlcnM= 62380\nKHNlbnQ= 62381\nSmFja3Nvbg== 62382\nIHBhaXM= 62383\nIGN1ZGFNZW1jcHk= 62384\nIGZsYXNoZXM= 62385\nYmVyZQ== 62386\nIG11bHRpZg== 62387\nIENhcmdv 62388\nRWxlbWVudHNCeVRhZ05hbWU= 62389\nKGVwb2No 62390\nIEt1bmRlbg== 62391\nUmVjb2duaXRpb24= 62392\nIFNldFZhbHVl 62393\nIFN1bnNoaW5l 62394\nQUNQ 62395\nOnN0cg== 62396\nIGFtYmlndQ== 62397\nIO2VnA== 62398\nLWxpbmVhcg== 62399\nIFdPVw== 62400\nKGN1c3RvbQ== 62401\nIGlzRW5hYmxlZA== 62402\nQkFU 62403\nX2RpYWc= 62404\nX0dVSQ== 62405\nSGVhdA== 62406\nIGFzc2VtYmxpZXM= 62407\nIENldHRl 62408\nL2NhcmQ= 62409\nIERlY2xhcmU= 62410\nIHVwaGVsZA== 62411\nIENsYXVk 62412\nLWZsb3c= 62413\nIGhvb2t1cA== 62414\nSVJR 62415\nRmF0aGVy 62416\nRGVsZXRlcw== 62417\nKSk7Ly8= 62418\nIFBUU0Q= 62419\nKTsNDQo= 62420\nZWdhbA== 62421\nLmFycm93 62422\nIE1QVQ== 62423\nw7Nq 62424\nIG1vdGl2YXRl 62425\nIEthdGhlcmluZQ== 62426\nLmZyYW1lcw== 62427\nIHRoaQ== 62428\nPFJlc3VsdA== 62429\nLmdyYXk= 62430\nIEt1c2huZXI= 62431\nIENlbWVudA== 62432\nIEJ1cmw= 62433\nSW50ZXJ2aWV3 62434\nPSciLg== 62435\nUE9XRVI= 62436\nIENEcw== 62437\nIFsmXSg= 62438\nIGNoYW5nZXI= 62439\nPj4sCg== 62440\nLXdl 62441\nIENMSw== 62442\nIEFkcmk= 62443\nIGNpbA== 62444\nPVg= 62445\nIHNlbmRv 62446\nIENlbHNpdXM= 62447\nYmxvY2tlZA== 62448\nT3V0T2ZCb3VuZHM= 62449\nLiE= 62450\nb3Byb2plY3Q= 62451\nYW5kZXM= 62452\nZWRpdGluZw== 62453\nIHB1bXBlZA== 62454\nKCk7fQo= 62455\n4Ka/ 62456\nX0VWRU5UUw== 62457\nIEZyaWVkbWFu 62458\nID4v 62459\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 62460\nIHRlbXB0YXRpb24= 62461\nIElwc3Vt 62462\nIENlcw== 62463\nIG5vdGljaW5n 62464\nX2VsZQ== 62465\nQWNjZW50 62466\nIE52aWRpYQ== 62467\nIGFtdXNlbWVudA== 62468\nIGludHJvZHVjdG9yeQ== 62469\nCXJldHZhbA== 62470\nIGxpbA== 62471\naXJpbQ== 62472\nZW5xdWV1ZQ== 62473\nLWhpc3Rvcnk= 62474\nIGNvdW5zZWxvcg== 62475\nVFJBTlNGRVI= 62476\nX1ZlY3Rvcg== 62477\nY2F0ZWdvcnlJZA== 62478\ncGVyeQ== 62479\nRklMVEVS 62480\nKHJlbW90ZQ== 62481\nIHNlcGFyYXQ= 62482\nIEVtYmVkZGVk 62483\nIEJhY29u 62484\ndGVycmFmb3Jt 62485\nIHJlc3BlY3RhYmxl 62486\naWNoYQ== 62487\nYWlj 62488\nKydc 62489\nIHN0cmF5 62490\n0LXQvdC40Lk= 62491\nIEF1ZGl0b3I= 62492\nZW50aWNhdG9y 62493\nIGNsb2Fr 62494\nIFVOS05PV04= 62495\nIEFtZW4= 62496\ndm94 62497\nYXN0cmVldA== 62498\nLi4uXQ== 62499\nIGAl 62500\nLXByb3BlcnR5 62501\nIFF1YWxjb21t 62502\nZWRpdGVk 62503\nIGRpc2NyZWV0 62504\nLU11c2xpbQ== 62505\nLnJlY2lwZQ== 62506\nIHZhbmRhbA== 62507\nIHXFvHk= 62508\nc2VuaGE= 62509\nLGlz 62510\nIFBvbXBl 62511\nIEtuaWNrcw== 62512\nKCknLA== 62513\nKHRi 62514\nIEhJRA== 62515\nIHBldw== 62516\nIGNhcnJvdHM= 62517\nIHBvbGljeW0= 62518\nLmxp 62519\nIHR3ZW50aWV0aA== 62520\nX3Byb21wdA== 62521\nc2NlbmFyaW8= 62522\nLkpGcmFtZQ== 62523\nIE1RVFQ= 62524\nIEluZGl2aWR1YWxz 62525\ndG9NYXRjaFNuYXBzaG90 62526\nw61zdGljYXM= 62527\nIkQ= 62528\nIGZvZA== 62529\nIHJpY2h0 62530\nIFphcg== 62531\nIHJlc3VycmVjdGlvbg== 62532\nIG1pbGl0YXI= 62533\nIE1hbmFnZXJz 62534\nX0dSSUQ= 62535\nbm9ubnVsbA== 62536\nQkVSVA== 62537\nT3V0cHV0cw== 62538\nICAgIAoKCg== 62539\nIHByZWRlY2Vzc29ycw== 62540\nIGlzU2VsZWN0ZWQ= 62541\nIGN5YmVyc2VjdXJpdHk= 62542\n5YaZ 62543\nLm1j 62544\nUXVp 62545\nIGFsbGVnaW5n 62546\nIHRpYw== 62547\nTWFudWZhY3R1cmVy 62548\nIEVuaGFuY2Vk 62549\nIEJpeg== 62550\nIHJlYWRPbmx5 62551\nw7Ru 62552\nIGx1bWJlcg== 62553\nYWVk 62554\nIHJhaW5z 62555\ncHJvdmlkZQ== 62556\nTGF0ZQ== 62557\nIHBlZGVzdHJpYW5z 62558\namF2 62559\nQWN0aXZhdGlvbg== 62560\nJ0JyaWVu 62561\nIHZhY2FuY3k= 62562\nLy8t 62563\nIGJsYWRkZXI= 62564\nIGFnaWxl 62565\nIHN0ZWFscw== 62566\nIHJlZ2lzdHJhcg== 62567\nIGVsZWN0b3JhdGU= 62568\nR292ZXJubWVudA== 62569\nJ109Ig== 62570\nYWxidW1z 62571\nZWxlY3Rpb24= 62572\nYWJs 62573\nIE9yaWVudA== 62574\nIHBpcmF0ZXM= 62575\nIGxvb3Bo 62576\nCXJlYWRlcg== 62577\nIMO6bHRpbW8= 62578\nIFBldHJv 62579\nINGB0YLRgNCw0L3QuNGG 62580\nIHNhbXA= 62581\naW52ZXJzZQ== 62582\nLmdyYWRsZQ== 62583\nIERvbnQ= 62584\neG9u 62585\nIGNyZWFk 62586\nZXJ0aWxpdHk= 62587\ncmdjdHg= 62588\nIHBvbMOtdGljYQ== 62589\nVmFsdWVDaGFuZ2Vk 62590\nQXBpUmVzcG9uc2U= 62591\nY29tYm8= 62592\nIFVY 62593\nIGRhaGE= 62594\nJ2Fu 62595\nLW15 62596\n4oCcTXk= 62597\ncGVl 62598\nbGF0bG9uZw== 62599\nXEJhc2U= 62600\nLndpaw== 62601\nIFBPVA== 62602\nIHB1bmN0dWF0aW9u 62603\ncXVz 62604\naW55aW4= 62605\nPW1pbg== 62606\nIG51Y2xldXM= 62607\nIGNvbmNlc3Npb25z 62608\nLmF2ZXJhZ2U= 62609\ndXNlcmluZm8= 62610\nIHRhYmxlc3Bvb24= 62611\nIE5laWdoYm9yaG9vZA== 62612\nKFRocm93YWJsZQ== 62613\nPnY= 62614\nb3Z5 62615\nWFhYWFhYWFg= 62616\naXN0aQ== 62617\nIGJhcnQ= 62618\n77u/Cg== 62619\nRW5jcnlwdA== 62620\nPWVuZA== 62621\nIGluY3Vy 62622\nIHBlcnRpbmVudA== 62623\nX01JTk9S 62624\nKSI+Cg== 62625\nY2hpZWY= 62626\nIHZk 62627\nKGAK 62628\ndXJneQ== 62629\nYWJ5cmludGg= 62630\nIFNoYXBlcw== 62631\nIHZhZ3k= 62632\nLmRkcw== 62633\nbWVtY21w 62634\nCUl0 62635\nc2VtZXN0ZXI= 62636\nIEVtaXQ= 62637\nIGluc2Fu 62638\nIGJydXNoZWQ= 62639\nX0ZBVEFM 62640\nImVycm9ycw== 62641\nIGRpc3J1cHRpdmU= 62642\nJW4= 62643\nIGNvbXBvc2l0aW9ucw== 62644\nIGJhY2hlY2E= 62645\nIGRpc2FncmVlbWVudA== 62646\nUHJvdGVjdA== 62647\nTElLRQ== 62648\nLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbg== 62649\nIHdlaXRlcmU= 62650\nIE1vbmFjbw== 62651\nXzw/ 62652\nIG1vZGVsZWQ= 62653\nc3RlZWw= 62654\nZWVudGg= 62655\nIFtdKS4= 62656\nKHJlZ2V4 62657\nZW5pZQ== 62658\nLkZsdXNo 62659\nLnBvcHVw 62660\nIE92ZXJz 62661\nLkRlYnVnZ2Vy 62662\nPmA7Cg== 62663\nbml0ZQ== 62664\nLnF1b3Rl 62665\nIGNvZw== 62666\nIHdha2Vz 62667\nIFdyZXN0bGluZw== 62668\nSW50cm8= 62669\nIHNlcmRl 62670\nIHJldXNhYmxl 62671\nIENvbXBvdW5k 62672\nSW1wbE9wdGlvbnM= 62673\nCUl0ZW0= 62674\nIG51bU9m 62675\nIENIUg== 62676\nIEJvbHRvbg== 62677\nUExVUw== 62678\nYm91bmRpbmc= 62679\nKCsr 62680\nICIsIjsK 62681\nIEd1ZXN0cw== 62682\nIGRlcHJpdmVk 62683\nIG1lbG9keQ== 62684\nWklQ 62685\nPj4oKQ== 62686\nIGNvbmNlZGVk 62687\nX2RpZQ== 62688\nIGpveXN0aWNr 62689\nIGFuYXRvbXk= 62690\nIFRvb2xTdHJpcA== 62691\nIEVub3VnaA== 62692\nIio= 62693\naW50b3No 62694\naGFiaQ== 62695\nIFN5cmFjdXNl 62696\nIEluY3JlYXNlZA== 62697\nTXVz 62698\nLnBhdGllbnQ= 62699\nIGluY3JlbWVudHM= 62700\nIFBJWA== 62701\nIGJvb3R5 62702\nLnByaXZhdGU= 62703\nZXJ0b2lyZQ== 62704\nIGN1dHRlcg== 62705\nIGJla2Fu 62706\nIGRyYXdlcnM= 62707\nX0FMSUFT 62708\nQW5pbWF0aW5n 62709\nX2Fuc3dlcnM= 62710\nLmF0dGFjaw== 62711\nd3JpdGVycw== 62712\nIGdhYW4= 62713\naWtvbg== 62714\nCWNvbnRyb2xsZXI= 62715\nIGZhY2FkZQ== 62716\nk+WQjQ== 62717\nLHN0YXR1cw== 62718\nLmZl 62719\nIHBvc3Rwb25lZA== 62720\nIEZvbnRz 62721\nIEJlbmNobWFyaw== 62722\naWRlbnRhbA== 62723\nIGNoaWxsaW5n 62724\nIEtpZXY= 62725\nIGJydXNoZXM= 62726\nLXdoZWVs 62727\nIEhpcmU= 62728\nKHByb2M= 62729\nIGNoZW1vdGhlcmFweQ== 62730\nINCx0YvRgtGM 62731\nIE5vbGFu 62732\nKGllcnI= 62733\nIEp1ZGU= 62734\nLUF1Zw== 62735\ndW1ub3M= 62736\nY29udmVyc2F0aW9u 62737\nIEJlaGF2aW9yU3ViamVjdA== 62738\nYmF1Z2g= 62739\nIGd1aXRhcmlzdA== 62740\nLm9mZmVy 62741\nIGFjY3VzZQ== 62742\ncGFyZA== 62743\ncmVmZg== 62744\nLlJlYWN0 62745\nIHVjaGFy 62746\nIG9mZnNldG9m 62747\nJHN0YXR1cw== 62748\nL2VtYWls 62749\nLmNvbm5lY3RlZA== 62750\nLys= 62751\nQHFx 62752\nYXJhdmVs 62753\nIGZ2 62754\nLlBlcnNpc3RlbnQ= 62755\nZW5zdGVpbg== 62756\nLi4uXQoK 62757\nLmdyaWRWaWV3 62758\nIEpPQg== 62759\nLScuJA== 62760\nLmxheW91dENvbnRyb2w= 62761\nIGNhcmc= 62762\nIEtvdA== 62763\nX2VxdWFscw== 62764\nIHdpdGhkcmV3 62765\nQVRFU1Q= 62766\nLWJ1dHRvbnM= 62767\nCVVQUk9QRVJUWQ== 62768\nIFVJR3JhcGhpY3M= 62769\nIFB1YmxpY2F0aW9ucw== 62770\nIElOVEVSTg== 62771\nIGV0aGFub2w= 62772\nw6RuZ2Vy 62773\nU0VORA== 62774\nCXNsb3Q= 62775\n0LvQtdC90LjRjw== 62776\nIHBhc28= 62777\nX2V4dGVuZGVk 62778\nb3J0aGFuZA== 62779\nKHNoZWV0 62780\nIHByb2NlZHVyYWw= 62781\nIGtpZG5hcHBpbmc= 62782\nLy8tLS0tLS0tLS0tLS0tLS0t 62783\nW21zZw== 62784\nT2NjdXJyZWQ= 62785\nQWxpY2U= 62786\nIENBU1Q= 62787\nIGthdGE= 62788\n5rOo5YaM 62789\nY2hlYXA= 62790\naWNpdHk= 62791\nIHJlYWRpbmVzcw== 62792\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 62793\nIFNZTg== 62794\nIE1hZ2dpZQ== 62795\ncmljYQ== 62796\nIHlp 62797\nIFR3ZQ== 62798\naWdub24= 62799\nYW5kZW4= 62800\nIGpxdWVyeQ== 62801\nIHN0YXJ0WQ== 62802\nIGF2ZW51ZQ== 62803\nQW50aA== 62804\nX2NhcHRpb24= 62805\nIFJvd3M= 62806\nwq/Cr8Kvwq8= 62807\nc2VxdWVuY2Vz 62808\n0LjRhA== 62809\nKCIvIikK 62810\nY3JhdGU= 62811\nIFNhZ2E= 62812\nSnVk 62813\nIGZhY2V0cw== 62814\nX3NjYWxlZA== 62815\nUnVieQ== 62816\nIFBR 62817\nIGNydXM= 62818\nSXJhbg== 62819\nLnNxdWVlemU= 62820\nCWZk 62821\nIHBlcmNl 62822\nIGRhdGFw 62823\nXl5eXg== 62824\nX1NDT1BF 62825\nIFNhbG1vbg== 62826\nIHRhaWxsZQ== 62827\nIFZhbG9y 62828\nQUdFTUVOVA== 62829\nUnA= 62830\nIEd1YXJkaWFucw== 62831\nIHJlYWRGaWxl 62832\nIG5lZ3Jv 62833\nIG9icmE= 62834\nLlBhcmNlbA== 62835\nQ0FDSEU= 62836\ncmV0Y2hlZA== 62837\nY3Jt 62838\ncXJzdA== 62839\nb3VmbA== 62840\n7ZqM 62841\nLm5vbQ== 62842\nc3NpZA== 62843\nIHNhZmVzdA== 62844\nLkVycm9ycw== 62845\nX3BuZw== 62846\nQ29udmVydGVyRmFjdG9yeQ== 62847\nPFNlbGY= 62848\nIHNlcGFyYXRlcw== 62849\nX2pCdXR0b24= 62850\nIG1pc3VzZQ== 62851\nZXhjZXB0aW9ucw== 62852\nIFt7Ig== 62853\nIFBBRA== 62854\n562+ 62855\na0h6 62856\nPWVu 62857\nIGjDoG5n 62858\nSFo= 62859\nIFhhdmllcg== 62860\ne2lk 62861\nIHN0YWlyY2FzZQ== 62862\ndGV4dGZpZWxk 62863\nL2RvY2tlcg== 62864\nKHRhYmxlTmFtZQ== 62865\nIHRlbGVjb21tdW5pY2F0aW9ucw== 62866\nb25zbw== 62867\nb2Ns 62868\nUGFyZW50cw== 62869\nL3BhcnNlcg== 62870\nLWRyb3A= 62871\nKHN0eWxlcw== 62872\nX21vZGlmaWVy 62873\nUmVxdWVzdElk 62874\nLmJyYW5k 62875\nIENvaW5z 62876\nIGt1bnQ= 62877\nLkdy 62878\nIEhJU1RPUlk= 62879\nKGRyb3A= 62880\nQnJhZA== 62881\nIHNla3Np 62882\nX3Nkaw== 62883\nIGluc3BlY3RlZA== 62884\ncHJlZGljYXRl 62885\nLmZp 62886\nR09S 62887\nIGNvY29h 62888\nIElRdWVyeWFibGU= 62889\nLS0tPC8= 62890\nIGRlcm5pZXI= 62891\nIFVzZXJEZWZhdWx0cw== 62892\nX1RT 62893\nIGVvcw== 62894\nIGJsZW5kZXI= 62895\nIGxvdWRlcg== 62896\nU3BhbmlzaA== 62897\nbGluZXI= 62898\nXHdpZGdldHM= 62899\nIHNjaGVtYXM= 62900\nX0NBUFRVUkU= 62901\nLm1pY3Jv 62902\n44Kt 62903\nIPCfkQ== 62904\nIGFuZGVy 62905\nYWx0dW5n 62906\nID09Jw== 62907\nIGVuZm9yY2luZw== 62908\nIEV4aXN0 62909\ndXZ3 62910\naXJ0c2NoYWZ0 62911\nIEdyZWF0ZXN0 62912\nIE1vc3Vs 62913\nX3Bv 62914\nIHNpbW1lcg== 62915\nIHByb2dyZXNzZWQ= 62916\nIHJvdGFyeQ== 62917\nIG50bw== 62918\nTm9pc2U= 62919\nIGNoYXNlZA== 62920\nIGluc3RpbmN0cw== 62921\nUHVibGljS2V5 62922\nIHNuYXBzaG90cw== 62923\nIFN1cGVydg== 62924\nLm1hYw== 62925\nIEJpYmxp 62926\nLi4uKQoK 62927\nCW9sZA== 62928\nS0VO 62929\nIENsaW0= 62930\nIFByb2dyZXNzRGlhbG9n 62931\nbGljYW50cw== 62932\nX3NsaWRl 62933\nK2g= 62934\nIGVtcG93ZXJlZA== 62935\nSW5qZWN0b3I= 62936\nIGluZmx1ZW56YQ== 62937\nIHBsYW5ldGFyeQ== 62938\nV2lsbGlhbXM= 62939\nIG1vbmQ= 62940\nZW5hbg== 62941\nLnJhbmRvbVVVSUQ= 62942\nKFBvc2l0aW9u 62943\nIGhvbWJyZXM= 62944\nIGluc2VjdXJl 62945\nIHZlcmJz 62946\nX3JlY3RhbmdsZQ== 62947\nSU5TVEFMTA== 62948\nIFBhcnNlRXhjZXB0aW9u 62949\nX1RB 62950\nJGZpZWxk 62951\nLkltYWdlSWNvbg== 62952\nIEd1amFyYXQ= 62953\nLWxpdmVk 62954\nX3NvbWU= 62955\nIGNsaXBwaW5n 62956\nLmdldENvbXBvbmVudA== 62957\nLmNsb3Nlc3Q= 62958\nLmxpdmU= 62959\nIGluY2lk 62960\nDQoJCQ0K 62961\nIHByb2R1dG9z 62962\nX211c2lj 62963\nU3FsQ29ubmVjdGlvbg== 62964\nIFByZWRpY3Rpb24= 62965\nIFhU 62966\nLW5vdGVz 62967\nIEpld2Vscnk= 62968\ncmVtZW4= 62969\nKHJlYXNvbg== 62970\nU25hcA== 62971\nQWZmaW5lVHJhbnNmb3Jt 62972\nYW5nZWxvZw== 62973\nIGRpY3RhdGU= 62974\nIHpvc3Rh 62975\nQmFyQ29udHJvbGxlcg== 62976\nL3Nob3A= 62977\nZWlk 62978\nLXN3 62979\nQ291cnNlcw== 62980\nZm9udFdlaWdodA== 62981\nIEhvZmZtYW4= 62982\nX051bQ== 62983\nS1I= 62984\nIFdpbGxpZQ== 62985\nYXJrYW4= 62986\nLXNjYWw= 62987\nIGF1ZGl0aW9u 62988\nLmRpc2M= 62989\nIHR3aXN0cw== 62990\nIGRlcGljdHM= 62991\nIGJhbnlhaw== 62992\nIEtpdHM= 62993\nIEhlemJvbGxhaA== 62994\nbm9ydGg= 62995\nIEdSRQ== 62996\nw7Zn 62997\ncXVvaQ== 62998\nLXRocmVhdGVuaW5n 62999\nIHdvcm1z 63000\nIFBO 63001\nIHNleGRhdGU= 63002\nIG1vbnVtZW50cw== 63003\nTU1D 63004\nYm90cw== 63005\nIFNETEs= 63006\nZGVhdGg= 63007\nIHBpdHM= 63008\nX2Nob2ljZXM= 63009\nKHNvbHV0aW9u 63010\nIHByb2NsYWltZWQ= 63011\nIFFpbmc= 63012\nIHNzY2FuZg== 63013\nc3RyYXRlZ3k= 63014\nZGVhdXg= 63015\nIEZpc2NoZXI= 63016\nX0lW 63017\nIGlud2FyZA== 63018\nRGF0ZVBpY2tlcg== 63019\nIHNld2Vy 63020\nIGV1cm9w 63021\nIGhvbWVsZXNzbmVzcw== 63022\nLlNwcmluZ0Jvb3RBcHBsaWNhdGlvbg== 63023\nIFNwYWNlWA== 63024\nIGluZm9ybWluZw== 63025\nICch 63026\nIHBsYXN0ZXI= 63027\nSW5pdGlhbGl6YXRpb24= 63028\nLmJldGE= 63029\nIFBlcnNvbnM= 63030\ndWdnbGluZw== 63031\nIHNoYW1wb28= 63032\nIEplaA== 63033\nIHNlcnI= 63034\nIG1heFNpemU= 63035\nIHN0aXRjaGVz 63036\nW3BhdGg= 63037\nLnJldA== 63038\nIFByZXQ= 63039\nTmVpbA== 63040\nQ29udmVydGVk 63041\nIE1hemRh 63042\nUE9TSVQ= 63043\nVG9vbGtpdA== 63044\nIFJFQURNRQ== 63045\nQ3VzdG9tQXR0cmlidXRlcw== 63046\nYXJjaGl2bw== 63047\nLlBhaW50 63048\nZ2V0T2JqZWN0 63049\nSVE= 63050\nLldlYkRyaXZlcg== 63051\nIGFudGlib2R5 63052\nIExpbWE= 63053\naW5jb3JyZWN0 63054\nRnJhY3Rpb24= 63055\nIERlYWRsaW5l 63056\nc2VuZE1lc3NhZ2U= 63057\nLk9mZnNldA== 63058\nZWRpbw== 63059\nINeQ 63060\nIHNtb290aGluZw== 63061\nLmJv 63062\nIENFTlQ= 63063\nZWxhc3RpYw== 63064\nLmNoYXJDb2RlQXQ= 63065\nUmVmcmVzaExheW91dA== 63066\nQUdFRA== 63067\nKTtcCg== 63068\nIFtdKQoK 63069\nIHRhcHM= 63070\nRFY= 63071\n4oCV 63072\nIENveQ== 63073\nIG91dHdlaWdo 63074\nJ2dj 63075\nXEV4Y2VwdGlvbnM= 63076\nIEdyYW1tYXI= 63077\nIEd1YXRlbWFsYQ== 63078\nIEd1cnU= 63079\nIHRlag== 63080\nIGZyaWVuZHNoaXBz 63081\nIGNvcGluZw== 63082\nKHVwZGF0ZWQ= 63083\nX2R4 63084\nQW5hbA== 63085\nLU1heQ== 63086\nIG1hdGNobWFraW5n 63087\nIGp1bnRv 63088\nUEFDS0FHRQ== 63089\nIHJlbnRz 63090\nIOiHqg== 63091\nY2FrZXM= 63092\n44CCJywK 63093\ncmVuZGluZw== 63094\nX0ZyYW1ld29yaw== 63095\nLSk= 63096\nKHVwbG9hZA== 63097\nIG9wb3J0dW4= 63098\nIGNhdXNh 63099\nIHByb2xpZmlj 63100\nUm93Q291bnQ= 63101\nIG5hY2t0ZQ== 63102\nIFNveQ== 63103\nU2h1dGRvd24= 63104\n6Ig= 63105\nX0VYUEk= 63106\nIEhhcmJvdXI= 63107\nIHRvcmU= 63108\nXE1lc3NhZ2U= 63109\nL1U= 63110\nT01CUkU= 63111\nLnNlZ21lbnQ= 63112\nIGNvbWVk 63113\ncm9tYW4= 63114\nIHNlZ8O6bg== 63115\nU2lnbWE= 63116\nIHNraWluZw== 63117\nIFRlcnJhaW4= 63118\nIGJlbmNobWFya3M= 63119\nIEF0dGVudGlvbg== 63120\nIH0qLwoK 63121\nIGdlaWw= 63122\nIGNhcnRvb25z 63123\nIGF0dHJpYnV0aW9u 63124\nIHJvdG9y 63125\nZW5oYQ== 63126\nIM6z 63127\nIHRyYWo= 63128\nIGPDtG5n 63129\nIHNoYWtlcw== 63130\nIENsZW1zb24= 63131\nIGJydXRhbGl0eQ== 63132\nIDsNCg0K 63133\nIGVpZ2h0ZWVu 63134\nIEF3YXJlbmVzcw== 63135\nKHJlc3Q= 63136\nIHZpb2xpbg== 63137\nX1JPVVRF 63138\nLkZpZWxkTmFtZQ== 63139\nIEFkZQ== 63140\naXppYQ== 63141\nIEhlbG0= 63142\nIHR5aW5n 63143\nIFByb2dyZXNzQmFy 63144\nYXV0b3I= 63145\nIGxvbmRvbg== 63146\nJnc= 63147\nZ29v 63148\nSVNUUlk= 63149\nL0NyZWF0ZQ== 63150\nIFVTSU5H 63151\nIEdY 63152\nIEVGRkVDVA== 63153\nRmNu 63154\nIEVuY3J5cHRpb24= 63155\nQ0VE 63156\nZmluZQ== 63157\nLWFycmF5 63158\nIHB1c2hWaWV3Q29udHJvbGxlcg== 63159\nQCQ= 63160\nVXBsb2FkZWQ= 63161\nLXdyaXRl 63162\nLmdldFBhZ2U= 63163\nX2VzdGFkbw== 63164\nQU5UTFI= 63165\nIFZpZXdEYXRh 63166\nICR7KA== 63167\nIGFsbW9uZA== 63168\nIExvZ2ljYWw= 63169\nIHNob290ZXJz 63170\nIOygnA== 63171\nIHB1ZmY= 63172\nIHVuY29tbWVudA== 63173\nIGN1c3RvbWl6YWJsZQ== 63174\nxINy 63175\nRGlyZWN0aXZl 63176\nCWlkeA== 63177\nQ2hhbGxlbmdl 63178\nIHN1bW1hcml6ZQ== 63179\nIEF2Zw== 63180\nLlVzZXJJRA== 63181\nLmRpc3BhdGNoRXZlbnQ= 63182\nIGNvb2tlcg== 63183\nIGNvbm5lY3Rpb25TdHJpbmc= 63184\nIHNocmlua2luZw== 63185\namFk 63186\nIFRoZW1lcw== 63187\nYW5kYXRvcnk= 63188\nIGR1YmlvdXM= 63189\nIGNlcA== 63190\nc3Bpbm5lcg== 63191\nIHN1YnJlZGRpdA== 63192\nIGlpaQ== 63193\nL2NhY2hl 63194\nZGVmZXI= 63195\nIHN1YnN0aXR1dGVk 63196\nIGd1bm1hbg== 63197\nY2xpbmc= 63198\nIOyw 63199\nKGN0cmw= 63200\nT3JkZXJJZA== 63201\nX2VuZw== 63202\nIGZpbG1tYWtlcnM= 63203\nIGZvcndhcmRpbmc= 63204\nIHN0cmFuZGVk 63205\nIExlYW4= 63206\nIOunjA== 63207\nKFVuaXQ= 63208\nIGRpZFNldA== 63209\nbGFrZQ== 63210\nZ3JvdW5kcw== 63211\n5Zug 63212\nIHVucmVnaXN0ZXI= 63213\nIG1pbmhh 63214\nIFZlZ2Fu 63215\nCWlWYXI= 63216\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 63217\nb3R0bGU= 63218\nSVBD 63219\nIHByYWdtYQ== 63220\nIElJRA== 63221\nX01pbg== 63222\nJTsiPgo= 63223\nX3JhbQ== 63224\nZHJpdmVycw== 63225\nIENoaWNr 63226\nIGNscg== 63227\nX0JVRkY= 63228\nINCy0YvQsQ== 63229\nTWVyYw== 63230\nanV2ZW4= 63231\nIHNoaW0= 63232\n0YvRhQ== 63233\nIHRoZW9yZXRpY2FsbHk= 63234\nL2ZvcnVt 63235\nIHNwaWRlcnM= 63236\nIGdvb3Nl 63237\nIFBob3Rvbg== 63238\nIHByb2ZpY2llbmN5 63239\nIENsZXJr 63240\nX2ZpZw== 63241\nQ29uY2Vybg== 63242\nKGNvc3Q= 63243\nIHJlZGQ= 63244\nLmVudmlyb25tZW50 63245\nQ3JvcA== 63246\nIOKJpQ== 63247\neWVjdG9z 63248\nLkJhdGNoTm9ybQ== 63249\nLWNvbXA= 63250\nJGltYWdl 63251\nIE5pa29u 63252\nIGRtZw== 63253\nWzo6LQ== 63254\nUExM 63255\ndW5jaW9z 63256\nZm9jdXNlZA== 63257\nIHR1bw== 63258\nIGh2b3JkYW4= 63259\nIGF0dGFpbmVk 63260\nIHByb3RlY3Rvcg== 63261\nIEthbnQ= 63262\nIHNob3Jlcw== 63263\nIEV0aGFu 63264\nX3NjaG9vbA== 63265\nIG5lYXRseQ== 63266\nLlNoYXBlcw== 63267\nIE5lbQ== 63268\naGNw 63269\nLicvJy4k 63270\nIE3DqXhpY28= 63271\nc3RydWN0dXJpbmc= 63272\nIGxha2g= 63273\nIGFkcmVzc2U= 63274\nJywnIw== 63275\nIEhhc2tlbGw= 63276\nX0VOR0lORQ== 63277\nIHJlcGVudA== 63278\nIGN1Y2s= 63279\nLkZJRUxE 63280\nIFNrZQ== 63281\nQEBAQA== 63282\nSGl0cw== 63283\nIGltcGxhbnRz 63284\nIENvbnN0aXR1dGlvbmFs 63285\nIFBIUFVuaXQ= 63286\nIHRvaWxldHM= 63287\nLmFsYnVt 63288\n5LiL6L29 63289\nCXNldFN0YXRl 63290\nKCItLS0tLS0tLS0tLS0tLS0t 63291\nLkFtb3VudA== 63292\nZWN0dXJl 63293\nIFRob3VzYW5kcw== 63294\nTmVpdGhlcg== 63295\nIHByZXNldHM= 63296\nIEFzc3VtZQ== 63297\nKGZhY3Rvcnk= 63298\nIGxpY2s= 63299\nIGdvYWxrZWVwZXI= 63300\nPFN0YXRl 63301\nLXNlY3VyaXR5 63302\nX2ll 63303\nZXNrdG9w 63304\nIEx2 63305\nIFN5bXBob255 63306\nLnNhbXBsZXM= 63307\nIGh5cGVydGVuc2lvbg== 63308\nxYJ1 63309\nLmp1c3Q= 63310\nTWVuc2FqZQ== 63311\nIT0t 63312\nPFRLZXk= 63313\nIHNweWluZw== 63314\nLGRhdGU= 63315\nb3JnYW5pemVk 63316\nICAgICAgICAgIA0K 63317\nKGN1ZGE= 63318\nX01ldGFkYXRh 63319\ndWJpc2hp 63320\nLUJlbno= 63321\nX0Fzcw== 63322\nIEVsc2VJZg== 63323\nIGxlc2lvbnM= 63324\nIFByZXN0b24= 63325\nVGVjaG5pY2Fs 63326\nIHBsYXRpbnVt 63327\nL3Bp 63328\nSW5kZXhlcw== 63329\nIHBhcmFwaA== 63330\nIG92ZXJ0aHJvdw== 63331\naXBhdGVk 63332\nb250b2xvZ3k= 63333\nIGRlbW9ncmFwaGljcw== 63334\nIGNhbmU= 63335\nIHByb2ZpdGFiaWxpdHk= 63336\nIGVzdGFibGlzaG1lbnRz 63337\nXSY= 63338\nOmFic29sdXRl 63339\nZW50cmFkYQ== 63340\nVHA= 63341\nIHNoYXJlaG9sZGVy 63342\nLidf 63343\n5aaC5p6c 63344\nbnBq 63345\ndnJpcg== 63346\nIEVYRUM= 63347\nIFBvbGljaWVz 63348\nIGZlbGxvd3NoaXA= 63349\nIENHUmVjdEdldA== 63350\nX3JlY2lwZQ== 63351\nX1JFQw== 63352\ndW51 63353\nIHJvYmJlZA== 63354\nIHR1cm1vaWw= 63355\nKTo6 63356\nLnN0YXJ0RGF0ZQ== 63357\nIGV2YWN1YXRlZA== 63358\nLWVxdQ== 63359\nIGZvdXJ0ZWVu 63360\nQFNwcmluZ0Jvb3RBcHBsaWNhdGlvbg== 63361\nIOaVsOaNrg== 63362\nbmFudHM= 63363\ndGhyZW4= 63364\nU29ueQ== 63365\nREZT 63366\nLWNpZ2FyZXQ= 63367\nIGFnZ3JhdmF0ZWQ= 63368\nIG5lZGVybGFuZA== 63369\nIEZ1ag== 63370\ndWNlcw== 63371\nL3VzZQ== 63372\ndW1tZXI= 63373\nKFNURA== 63374\n6rCE 63375\nKj4m 63376\nLnBlcmNlbnQ= 63377\naWFudHM= 63378\nIEN0 63379\nVkFT 63380\nX1RIRU1F 63381\nIHNuaXBlcg== 63382\nX0VM 63383\nLXdvcmtlcnM= 63384\nU25vdw== 63385\nIEF1cmE= 63386\naWVnbw== 63387\nIEdsb2I= 63388\nTmFtZWRRdWVyeQ== 63389\nX0JH 63390\nIExpdmVEYXRh 63391\nIFNlbmRNZXNzYWdl 63392\nIHJlc3BvbmRzVG9TZWxlY3Rvcg== 63393\nZW5jZXJz 63394\naW5zdHJ1Y3Rpb25z 63395\nKEl0 63396\n5ZG95ZGo5pyf 63397\nIEdvbWV6 63398\nY2hhcmdlcw== 63399\nLkdlbmVyYXRlZFZhbHVl 63400\nIE1hY3Jvbg== 63401\nKFBPUlQ= 63402\nIFByb2Nlc3Nlcw== 63403\nLm9uUmVzdW1l 63404\nIGZpZQ== 63405\nQnVpbGRlcnM= 63406\nKWdldA== 63407\nX3dhbGxldA== 63408\nIGNhbmM= 63409\nIE1vYmlsaXR5 63410\nIGFsYXJtcw== 63411\ncm9zaXM= 63412\nYW1hw7Fv 63413\nIHBpcw== 63414\nIOODuw== 63415\nU2hh 63416\nIGNvbmZlc3NlZA== 63417\nKElORk8= 63418\nKCcsJw== 63419\nX1NlcnZlcg== 63420\nIGJsYXN0ZWQ= 63421\nIEZhcm1lcnM= 63422\ncnV6 63423\nY2tlZGl0b3I= 63424\nX0lNUExFTUVOVA== 63425\nIG1vdHRv 63426\nIENBUkU= 63427\nIHlkaw== 63428\nQm9uZQ== 63429\nIGFkZW3DoXM= 63430\nKyIvIis= 63431\nUHJvcFR5cGVz 63432\nX1Na 63433\nLnBhaW50 63434\nLnBpeGVs 63435\nIE1lc3NhZ2VUeXBl 63436\nIHR3ZWFrcw== 63437\nYC4KCg== 63438\nVmVyaWZpY2F0aW9u 63439\nbmVjaw== 63440\nYmVycmE= 63441\nIG1pbmRmdWw= 63442\nU3Vydg== 63443\nIDotCg== 63444\nIGFueXdheXM= 63445\nIEFkbWlzc2lvbg== 63446\nYWNjZXNzaWJsZQ== 63447\nRmxhdEJ1dHRvbg== 63448\nICInIik7Cg== 63449\nIGhhaGE= 63450\nVG9Qb2ludA== 63451\nIGJ1cmdlcnM= 63452\nZ2V0U3RhdGU= 63453\nXEhlbHBlcg== 63454\nIEZVTkNU 63455\nIEVMRU1FTlQ= 63456\nIENFUlQ= 63457\nIEFDQ09VTlQ= 63458\nY2hhcmdpbmc= 63459\nX2NhbmRpZGF0ZQ== 63460\nX3JlY2VudA== 63461\nIEluc3RydWN0b3I= 63462\nIGRydW5rZW4= 63463\nWVNRTA== 63464\nb3JhdGl2ZQ== 63465\nIjoiIg== 63466\nIHRhZ05hbWU= 63467\nX05FRw== 63468\nIHFw 63469\nIFVuZGVmaW5lZA== 63470\nIGdyZWFzZQ== 63471\nCSAgCQ== 63472\nIGVhZ2VybHk= 63473\nVGV4UGFyYW1ldGVyaQ== 63474\nZGlzdHJpYnV0ZWQ= 63475\nQWRtaW5pc3RyYXRvcg== 63476\nRGlzdHJpYnV0aW9u 63477\nIERlY29tcA== 63478\nIFRyYW5zZm9ybWVy 63479\nLmJ0blNhdmU= 63480\nIEdvcw== 63481\nKEVudW0= 63482\nY2Fpcm8= 63483\nLWNp 63484\nL3JlcG9ydA== 63485\nIFBvc3Rlcg== 63486\nX2RlcGVuZGVuY3k= 63487\nIGV4cGxvaXRz 63488\nc2V0Rmxhc2g= 63489\nIHh0 63490\nIGpld2VsbGVyeQ== 63491\nIGRhaQ== 63492\nX1JBTQ== 63493\nIGJlcnJpZXM= 63494\nIGdyYW5ueQ== 63495\nRmF0YWw= 63496\nw6lhbA== 63497\nLW1vc3Q= 63498\nLlZpc3VhbEJhc2lj 63499\nIFBlbmQ= 63500\nYmVp 63501\namFr 63502\nOyovCg== 63503\nQm95 63504\nPlNlbGVjdA== 63505\naW5kcmljYWw= 63506\nVGVjaG5vbG9neQ== 63507\nIEFsbGlzb24= 63508\nZGF0YXR5cGU= 63509\nJ2Nsb2Nr 63510\nIGtvc3Q= 63511\nIGJham8= 63512\nLkNvdW50cnk= 63513\nWmVuZA== 63514\nLndyYXBwZXI= 63515\n4L0= 63516\nIEZpbGlwaW5v 63517\nb2NyZQ== 63518\nU1NI 63519\nIFNBTVBMRQ== 63520\nX2luaXRpYWxpemVk 63521\nKTs/Pgo= 63522\nIHBvcm5vc3Q= 63523\nZXNhbg== 63524\nIEN1dHRpbmc= 63525\nIG1peGVz 63526\nX2FnYWlu 63527\nIGZvcm11bGFyaW8= 63528\nW1Y= 63529\nIHRlbGVmb25v 63530\nL3Vz 63531\nIGxvYWREYXRh 63532\nLnJlZmVyZW5jZXM= 63533\nIG1hcFZpZXc= 63534\nKyJf 63535\nIFNRTGl0ZURhdGFiYXNl 63536\naXRvbg== 63537\nQ29sdW1uVHlwZQ== 63538\nIEV2ZXJ0b24= 63539\nLlJlc3VsdHM= 63540\nL25vdA== 63541\nIGdldEZpbGU= 63542\naGVyaXRhbmNl 63543\nIGdldEhlaWdodA== 63544\nJHVzZXJuYW1l 63545\nd2l0aGRyYXc= 63546\nXyk7DQo= 63547\nLnV0 63548\nIFFBcHBsaWNhdGlvbg== 63549\ndXJuYWw= 63550\nLWRvd25sb2Fk 63551\nYnVyZ2Vy 63552\ncHJlY2k= 63553\nIFRoYW5rZnVsbHk= 63554\nLkVWRU5U 63555\nIGdyZWF0bmVzcw== 63556\nIGxvb3NlbHk= 63557\nIG1hc2g= 63558\nIGdlaGVu 63559\nX2FudA== 63560\nIGltcGVuZGluZw== 63561\nLmlzUHJlc2VudA== 63562\nIHN0YWlucw== 63563\nSU1T 63564\nLmJhY2tlbmRz 63565\nIGlycmlnYXRpb24= 63566\nIFRhdA== 63567\nL3Rlc3Rz 63568\nIEtpbmdzdG9u 63569\nLnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz 63570\nIHZvbWl0aW5n 63571\nLXJlcXVpcmVk 63572\nIGJsYXpl 63573\nIFN0YWZmb3Jk 63574\nUklE 63575\nL2Z3bGluaw== 63576\nIGthbGU= 63577\nc29sZA== 63578\nKHByb2dyZXNz 63579\nKGNoYXJ0 63580\nIGN5c3Q= 63581\nIGRpbGlnZW5jZQ== 63582\nL21w 63583\nIGNsZXJneQ== 63584\nIEJyb3dzZXJSb3V0ZXI= 63585\nIEFQSw== 63586\nIENPTlRBQ1Q= 63587\nQmFySXRlbQ== 63588\nLURpc3Bvc2l0aW9u 63589\nIE1vdG9yb2xh 63590\nX3NhbA== 63591\nIFdvb2Rlbg== 63592\nIFRIRVk= 63593\nIGNvbW1lbnRhdG9ycw== 63594\nIGNvbW1lcmNpYWxz 63595\nPW1vZGVs 63596\nLiIpLAo= 63597\nIFBsdWdpbnM= 63598\nZGFpbg== 63599\naGVhZGVk 63600\nIENvb3JkaW5hdGVz 63601\nSmFuZQ== 63602\nIFByZWZlcnJlZA== 63603\nIHBvZGVtb3M= 63604\nLmlzQmxhbms= 63605\nIFN0YXA= 63606\nIHdzcA== 63607\nIENPTEw= 63608\nX2JpZA== 63609\nIHByb2Jlcw== 63610\ndWFuaWE= 63611\nKHN5bQ== 63612\nIGN1ZXJwbw== 63613\nIG1hbmlwdWxhdGluZw== 63614\nIGFtYXppbmdseQ== 63615\nLkRBWQ== 63616\ndW1wdGVjaA== 63617\nYWNvYmlhbg== 63618\nVGVybWluYXRl 63619\nIHN0YXRpb25lZA== 63620\nU2V0QnJhbmNo 63621\nU2NyZWVuc2hvdA== 63622\nZXN0aGVzaWE= 63623\nIHdhbGtlcg== 63624\nI2Zyb20= 63625\nY29vcmRpbmF0ZQ== 63626\nX2ludGVyZXN0 63627\nIGhlbHBsZXNz 63628\nCXB1Yg== 63629\nbmdh 63630\nX0V4 63631\nIG53 63632\nIHRleHR1YWw= 63633\nIHBsdWdz 63634\nIG1pbmlvbg== 63635\nbWFyZXM= 63636\nPD4K 63637\nQUNB 63638\nQ29tcGFueU5hbWU= 63639\nKGVj 63640\nIExhbmRzY2FwZQ== 63641\nX1BST1ZJREVS 63642\nY3c= 63643\nlIQ= 63644\nQWNjb3VudElk 63645\nJDo= 63646\nIFBlcnNvbmFsbHk= 63647\ncHJvcGVydHlOYW1l 63648\nIEt1Yg== 63649\nJ2k= 63650\nIEdpdWw= 63651\nIHByaW9yaXRpemU= 63652\nRk9STUFOQ0U= 63653\nIFBhcmFkZQ== 63654\nKVwK 63655\nc3RkYm9vbA== 63656\nIGFsZXJ0RGlhbG9n 63657\nIExlaA== 63658\nLmNhdGFsb2c= 63659\nIHdlYmluYXI= 63660\nIGltcG9ydGVy 63661\ncHJvamVjdElk 63662\nVFlQTw== 63663\nX18NCg== 63664\nR1c= 63665\nc3VtbWVy 63666\nIHNpbmlzdGVy 63667\nLmZhaWxlZA== 63668\nIGJlc29pbg== 63669\naXNtYW4= 63670\nREVTVA== 63671\nIG5o4bqtcA== 63672\nIG1vxbxuYQ== 63673\nX2luc3Ry 63674\nIHBhdmVk 63675\nIHByZWZpeGVz 63676\nIHJhbXBhbnQ= 63677\nIHlBeGlz 63678\nIOazqA== 63679\nX21pZGRsZQ== 63680\nIHNjaG9sYXJseQ== 63681\nIHByb3N0aXR1dGVz 63682\nIG1vcmFsZQ== 63683\nLnBlcm1pc3Npb25z 63684\nLmdldExpc3Q= 63685\nIHJlamVjdGluZw== 63686\nIGxvb3Bpbmc= 63687\nIFNwZWNpZmljYXRpb25z 63688\nIGltbWVuc2VseQ== 63689\nIE1lZGlhbg== 63690\nKGNoYWlu 63691\nIGNsaWNo 63692\nL2ZsdXR0ZXI= 63693\nYWNm 63694\nLnVybG9wZW4= 63695\ndXR0ZXJzdG9jaw== 63696\nIHNwZWN0cmE= 63697\nIGFkbWly 63698\nL21heA== 63699\nLkVtaXQ= 63700\nKHdlaWdodHM= 63701\nacSZ 63702\nSW5zdGFsbGluZw== 63703\nSnU= 63704\nIEZlbGw= 63705\nIEZSRQ== 63706\nLmRlbg== 63707\nIEJpZ0ludA== 63708\nIj5A 63709\nICopOwoK 63710\nIEJpb2xvZ2ljYWw= 63711\nIHBhdGVudGVk 63712\nLnBhZ2luYXRpb24= 63713\nLnJvbGw= 63714\nIER1bA== 63715\nIGRlc2Fycm9sbG8= 63716\nUmVnYXJkbGVzcw== 63717\nmOydtA== 63718\nIHJvYmU= 63719\n0J3QtQ== 63720\nIEJveWQ= 63721\nLyoqKioqKioqKioqKioqKioqKioqKioqKg== 63722\ncmVjZWlwdA== 63723\nIEFzc2lnbmVk 63724\nYXR0ZW5kYW5jZQ== 63725\nLWNob2ljZQ== 63726\nZXRzeQ== 63727\nX2Vsc2U= 63728\nLG5leHQ= 63729\nX2V4aXN0aW5n 63730\nICcnKSwK 63731\nIGxpYmVydGlu 63732\ndHJhaXRz 63733\nYXR0ZQ== 63734\nQ29tcGFyYWJsZQ== 63735\nIENvdg== 63736\nIEFkb2xlcw== 63737\nLHRoZQ== 63738\nIExvYWRlZA== 63739\nfHI= 63740\nPWluZGV4 63741\nIEdhc3Q= 63742\nIGluamVjdG9y 63743\nCXN0b3A= 63744\nLWdvb2dsZQ== 63745\nIGZldGFs 63746\nIGFsbG8= 63747\neWxlZnQ= 63748\nZ2V0UGFyYW1ldGVy 63749\n4oCd4oCU 63750\nX3NlY3Rvcg== 63751\nLlV0aWxpdHk= 63752\nb3Njb3Bl 63753\nLmVhc2U= 63754\nIE1hZ25ldGlj 63755\nQXJyYXlPZg== 63756\nIGZlYXJmdWw= 63757\nIEluZmVy 63758\nIEZ1aw== 63759\nSm9obnNvbg== 63760\nJGFycmF5 63761\nIHNhaXM= 63762\nX2NvbnRy 63763\nRGVzY3Jp 63764\nIERldGFpbGVk 63765\nX2xlYXZl 63766\nX1JPVA== 63767\nIG7DpGNo 63768\nIGthbWk= 63769\nRENBTEw= 63770\nOmVx 63771\nIG1vbms= 63772\nX29ianM= 63773\nKFNlcnZpY2U= 63774\nZmluYW5jZQ== 63775\nIHBvZGVt 63776\nX3Jlc3RvcmU= 63777\nIGRlY29yYXRvcnM= 63778\nIGFkdmlzaW5n 63779\nINC/0LDRgA== 63780\nLnBlcm0= 63781\nIEhhaQ== 63782\nIGZr 63783\ndW50ZWVycw== 63784\nIFJUV0Y= 63785\nX2l4 63786\nQUNT 63787\nIGJyZWFrb3V0 63788\nZGlyZWNjaW9u 63789\nIFN1bnNldA== 63790\nX2Z4 63791\nb2xrYXRh 63792\nLXJhZGlv 63793\nSGV0 63794\nLnV0aWxpdGllcw== 63795\nX2Jhc2lz 63796\nKGtpbmQ= 63797\nIENvbmM= 63798\nVGh1bWI= 63799\nIE1pY2hl 63800\nZGVsaXZy 63801\nIGd1dGU= 63802\nIEZpbGVQYXRo 63803\nIFRyaWJl 63804\nXCIp 63805\nX2N1ZGE= 63806\nRGlmZmVyZW5jZQ== 63807\nIE1vbnN0ZXJz 63808\nIHNldFR5cGU= 63809\nLkNvbnRlbnRUeXBl 63810\nIGR1bQ== 63811\nRW52ZWxvcGU= 63812\nYWd0 63813\nIHVubG9hZA== 63814\nX2NoZWNrZXI= 63815\nIHJlc3Rv 63816\nX3Blb3BsZQ== 63817\nUHJpY2Vz 63818\nUHJvZmlsZXM= 63819\nKClc 63820\nRlVO 63821\nICIjIg== 63822\nIFBhdHRlcm5z 63823\nIFNQRA== 63824\nX1JPV1M= 63825\nT3JpZw== 63826\nYmxhZGU= 63827\nIGzDqQ== 63828\nJWk= 63829\nKysr 63830\nTGlmZWN5Y2xl 63831\nLS0tLS0tLS0tLS0tLS0tCg== 63832\nVGFy 63833\nVGhhbk9y 63834\nJnE= 63835\nIGNyaXRpY2lzbXM= 63836\nLXBo 63837\nRWxlbWVudEV4Y2VwdGlvbg== 63838\nX2d1ZXN0 63839\nIOu2 63840\nX0Fz 63841\nIENhcnJ5 63842\nX0JJRw== 63843\nYWtldXA= 63844\nX3JldHJ5 63845\nIG7DqWNlc3M= 63846\nIE1JU1M= 63847\naXN1 63848\nIFNwaXJpdHVhbA== 63849\nXyRf 63850\nIHJlZmxlY3Rpb25z 63851\nPHQ= 63852\nIGZ1bsOnw6Nv 63853\nIG1vbmFyY2g= 63854\nIFBhdGVs 63855\nX3ZvbHRhZ2U= 63856\nIHJhaW55 63857\nY291cnQ= 63858\nIHVsdHJhc291bmQ= 63859\naU9T 63860\nX0FMV0FZUw== 63861\nV28= 63862\nX0JMRU5E 63863\nb2tzZW4= 63864\nIHRyYXZlbGVy 63865\nIGRhdGFUYWJsZQ== 63866\nc2V0Q3VycmVudA== 63867\nV29ya2Zsb3c= 63868\nLnllbGxvdw== 63869\nXSkt 63870\nQUJTUEFUSA== 63871\nX2l0ZXJhdGlvbg== 63872\n0LTRgA== 63873\nIHViaWM= 63874\nIG1lYXRz 63875\nL2Vt 63876\nIERpc29yZGVy 63877\nIGVudmlhcg== 63878\nU0VP 63879\nIGhlYXZlbnM= 63880\nX3N0dWI= 63881\nIGFkcmVzcw== 63882\nIFRyaWU= 63883\nIExpbmRzYXk= 63884\nbGVp 63885\nIHBsYXRh 63886\nLnNldHRpbmc= 63887\nIGVsZWs= 63888\nICgkew== 63889\nQXV0b21hdGlj 63890\nIGRvd25zdGFpcnM= 63891\nUElY 63892\naWNpb25hbA== 63893\nYWJhbA== 63894\nLXN0b3JhZ2U= 63895\naWNoaWVy 63896\nIEFscGhhYmV0 63897\nLGxhYmVs 63898\nQAo= 63899\nIGludGVzdGluYWw= 63900\nIHZhcmE= 63901\nLm1h 63902\nIHByb2du 63903\nIG5lcGhldw== 63904\nVGltaW5n 63905\nY2xhc3NuYW1l 63906\nIGxvY29t 63907\nIFNhbWFudGhh 63908\nIEFjY29yZGluZ2x5 63909\nIFhDVGVzdENhc2U= 63910\nIFBsYWlucw== 63911\nIExlbmlu 63912\nbm9w 63913\nIFR5c29u 63914\nIHJlbmFs 63915\nb2luZQ== 63916\nKFRlc3RDYXNl 63917\nIExvbWI= 63918\nQmFuZw== 63919\nIHZvbHVt 63920\nX2dlbmRlcg== 63921\nIGx1dA== 63922\nIO+8 63923\nQ29uZmlndXJlcg== 63924\nIHN0cm9rZVdpZHRo 63925\nLkh0dHBTZXJ2bGV0 63926\nfHg= 63927\nLkpTY3JvbGxQYW5l 63928\nIGNvbnNvcnQ= 63929\nLmJ1bXB0ZWNo 63930\ndHJpZGdlcw== 63931\nIGJlbmVmaWNpYXJ5 63932\nPXJlcXVpcmU= 63933\ncmVuYw== 63934\nIE9V 63935\nZW50YXJpbw== 63936\nIHVyZ2Vz 63937\n4oCUbm90 63938\nQ2FtcGFpZ24= 63939\nZHJl 63940\nIFJpdmVyc2lkZQ== 63941\nCXRi 63942\nIG91dHB1dEZpbGU= 63943\nIGFic3Q= 63944\nIHN0cnVjdHM= 63945\nIHJ2YWw= 63946\nXCI+Ig== 63947\nIGFjcXVpc2l0aW9ucw== 63948\nQkxBQ0s= 63949\nIHRydW5j 63950\nIGFubm90YXRlZA== 63951\nc2V0VXA= 63952\nVE9LRU4= 63953\nIENvY2E= 63954\nRGlzYXBwZWFy 63955\nOnZhbHVl 63956\nIGFpZGVk 63957\ndHRs 63958\nbHV4 63959\nIGFjdWVyZG8= 63960\nIEZpbmdlcg== 63961\nLkdlb21ldHJ5 63962\nXScpOwo= 63963\nLmdm 63964\nVFhU 63965\nIFNjb3RpYQ== 63966\nYXZyYQ== 63967\nIHZpcA== 63968\nIHdob3BwaW5n 63969\nLWdpcmw= 63970\nIGN1cnNlZA== 63971\nXVst 63972\nIGNpcmN1bGF0ZWQ= 63973\ndW5jdHVyZQ== 63974\nb3JtYW4= 63975\nIG1BZGFwdGVy 63976\nIOKAlAoK 63977\nRmlsZU1hbmFnZXI= 63978\nKGlQYXJhbQ== 63979\nSW1hZ2VCdXR0b24= 63980\nREFR 63981\nQXJtb3I= 63982\nIHNwYXQ= 63983\nLmpzZGVsaXZy 63984\nIG1pc29n 63985\nLmVjb3Jl 63986\nJ119Cg== 63987\naW1wb3J0cw== 63988\nIGRpbm9zYXVy 63989\nLUZyZWU= 63990\nIGFubm9u 63991\nIHRyaWJ1bmFs 63992\nWWE= 63993\nLmd1aWQ= 63994\nbW9zdGx5 63995\nPT09PQo= 63996\nIGltYWdlbQ== 63997\nU3VpdA== 63998\na2Fz 63999\nIENoYW5uZWxz 64000\nQnVkZ2V0 64001\nIERpdmlkZQ== 64002\namVt 64003\nIEdyaQ== 64004\nIGluZGljYXRpdmU= 64005\nXEZhY3Rvcnk= 64006\nLnJlcG9zaXRvcmllcw== 64007\nIEFNUA== 64008\nLnNucA== 64009\nIGHDpw== 64010\nIms= 64011\nIMK1 64012\nZGVjb2RlZA== 64013\nX2FyYw== 64014\nLUNsYXVzZQ== 64015\nIEFkag== 64016\nIG5ld0FycmF5 64017\nKEdFVA== 64018\nIGxhdGlu 64019\nIHd6 64020\nOnVpbnQ= 64021\n5Yir 64022\nIi4u 64023\nQ29ubmVjdGluZw== 64024\nZW5ub24= 64025\n5bm2 64026\nIFNlcw== 64027\nIGJlbG9uZ2luZ3M= 64028\nKycm 64029\nCXNldHRpbmdz 64030\nSU5W 64031\nIHDDqQ== 64032\nIGFkdWx0aG9vZA== 64033\nYW1ibGU= 64034\nX21hc2tz 64035\nLXJlc29sdXRpb24= 64036\ncmF0cw== 64037\nIO2BtA== 64038\nIHZvZw== 64039\nIFNobw== 64040\nIENvdmVuYW50 64041\nIHJlbWluZGluZw== 64042\nb3JuYWRv 64043\naWFk 64044\n5byC 64045\nQ3JlYXRpdmU= 64046\nIFNUWUxF 64047\nIGFub21hbHk= 64048\nXEFwcGxpY2F0aW9u 64049\nIG1hbmlmZXN0YXRpb24= 64050\nIE5hbm8= 64051\nTWFwVmlldw== 64052\naWRlYWw= 64053\nYWNoaW5lcnk= 64054\nIFZhdWdo 64055\ncHJpbnRlcg== 64056\nVmVyZGFuYQ== 64057\nL2NvbXBvbmVudA== 64058\nIGFkZENoaWxk 64059\nIGxlYXJuZXI= 64060\nIGRlY3J5cHRlZA== 64061\nIHRpZ2h0ZXI= 64062\n5p2f 64063\nIGplag== 64064\nIC4KCgoK 64065\nIExvYmJ5 64066\nbGVw 64067\nw6Rubg== 64068\nbGVpZ2g= 64069\nL3JvdXRlcw== 64070\nIGNhbm9weQ== 64071\nIEZpc2NhbA== 64072\nOjsi 64073\nIGJ1cmRlbnM= 64074\nL2Z1bGw= 64075\nIENTUg== 64076\nLlNoYXJlZFByZWZlcmVuY2Vz 64077\nL3RyZWU= 64078\nIGRyb2l0 64079\nSW1wbGVtZW50 64080\nR2V0Q3VycmVudA== 64081\nKHB1c2g= 64082\nJHg= 64083\n0Y/Qtw== 64084\nQUNJVFk= 64085\nPT09PT09PT09PQo= 64086\namM= 64087\nX2hyZWY= 64088\nLmdldFJvb3Q= 64089\nIEtE 64090\nKGxz 64091\nW2NudA== 64092\nIGRhbGw= 64093\nKGJw 64094\nIEVX 64095\nS2V5RXZlbnQ= 64096\nbG9iZQ== 64097\nIGh0bWxlbnRpdGllcw== 64098\nIGZhbHRh 64099\nIHZhbHZlcw== 64100\nIHNpemluZw== 64101\nUG9ybg== 64102\nIHNob3dFcnJvcg== 64103\nIEZyaWQ= 64104\nIMOH 64105\nLnJhbmRu 64106\nIHRhbnRy 64107\nIHNheA== 64108\ndXJvdmlzaW9u 64109\ndGhlb24= 64110\nX1JDQw== 64111\neEZE 64112\nSW5pdFN0cnVjdA== 64113\nIGNhbm5lZA== 64114\nIHF1YW50aWRhZGU= 64115\nLldBUk5JTkc= 64116\nIEJyaXR0 64117\nLXJlZ2lzdGVy 64118\nYWN0aXZlbHk= 64119\nIE5hdGFsaWU= 64120\n44G/ 64121\nIENPTk5FQ1Q= 64122\nemVr 64123\nIG1pbGxvbmVz 64124\nXWludA== 64125\nICcsJyw= 64126\nIHByaW4= 64127\nIjpbLQ== 64128\nIC8vLg== 64129\nIGludGltaWRhdGluZw== 64130\ncmF6aW9uZQ== 64131\nLmlibQ== 64132\nIEpha2FydGE= 64133\n0LzQtdGA 64134\nIGxvYWRDaGlsZHJlbg== 64135\nX1VQTE9BRA== 64136\nIFdlZWtz 64137\nIGdldFRleHQ= 64138\nIPCfkg== 64139\nIF1dCg== 64140\nIENvc3Rz 64141\nxJlw 64142\ncGF5bWVudHM= 64143\nLk1vdmll 64144\nbGg= 64145\ntIg= 64146\nX2NlcnRpZmljYXRl 64147\nPXE= 64148\nbGlicmFyaWVz 64149\nIEFlcg== 64150\nYXVzcw== 64151\nCWZhaWw= 64152\nT1VORFM= 64153\nc2VuZEtleXM= 64154\nIHNjYW1z 64155\nd2FydHM= 64156\nSGlzdA== 64157\nIEVzc2V4 64158\nIGZ1cnk= 64159\nIHRpdHJl 64160\nIENvcGVuaGFnZW4= 64161\nIHByZWRlZmluZWQ= 64162\nc2Nw 64163\nc2VycmF0 64164\nLmVuc3VyZQ== 64165\naWxlZQ== 64166\nTWVyaXQ= 64167\nX1VOTE9DSw== 64168\nIENvcnJlY3Rpb24= 64169\nTm9ybWFsaXphdGlvbg== 64170\nIOS/ruaUuQ== 64171\nIHN0b29s 64172\nIOWIoOmZpA== 64173\nU2hvcnRjdXQ= 64174\nY2hvc2Vu 64175\nIGJ1bGx5 64176\nIGZ1bmNpw7Nu 64177\n44O844Or 64178\nIOeUn+WRveWRqOacnw== 64179\nLmFsaWFz 64180\nPlRvdGFs 64181\nIFNURU0= 64182\ncGVuZw== 64183\nY2FsZXI= 64184\ncGVyZmVjdA== 64185\nIGJvbmRpbmc= 64186\nUGhvbmVz 64187\nIHB1bHA= 64188\n67aA 64189\nSUVXUw== 64190\nIERlZXI= 64191\nX0xDRA== 64192\nIENvbmNvcmQ= 64193\nV2l6YXJk 64194\nIG9mcmVj 64195\nIEVtZXJhbGQ= 64196\ndGVuZXNz 64197\nbmF2aWdhdG9y 64198\nVGhlb3J5 64199\nIGd1YXJkYXI= 64200\nIGZ1bGZpbA== 64201\nIFVuYXV0aG9yaXplZA== 64202\nIEJvdXQ= 64203\nCWhvc3Q= 64204\nIFJpYg== 64205\nKGZ0 64206\nRG9jcw== 64207\nLmdldEJvZHk= 64208\n5b+D 64209\nIFJpdmVyYQ== 64210\nIHdhdmluZw== 64211\nIHBlcmZpbA== 64212\nQm91bmRpbmdDbGllbnRSZWN0 64213\nLmZh 64214\ncGFnZWQ= 64215\nIEFmZmlsaWF0ZQ== 64216\nIHByb2xldA== 64217\nfS0+ew== 64218\nKHNjb3Jlcw== 64219\nIHZpdGFl 64220\ne05hbWU= 64221\nc2NoZWR1bGVy 64222\nX1NBTg== 64223\nIE5lYw== 64224\nIEJlZWY= 64225\nX3Rj 64226\nTElO 64227\nIEV2ZW50VHlwZQ== 64228\nIEJ1ZmZlcmVkV3JpdGVy 64229\nIHNvZnRlcg== 64230\nIFZvdGluZw== 64231\nIEdlc3R1cmVEZXRlY3Rvcg== 64232\nIHVuc2Vlbg== 64233\nIFNDTw== 64234\nIGVsbw== 64235\nY29tYmluZQ== 64236\nX21ha2VDb25zdHJhaW50cw== 64237\nIHVuZGVyZ29uZQ== 64238\nIE9mZmljaWFscw== 64239\nLG9wdA== 64240\nIGxheWVyZWQ= 64241\nScOTTg== 64242\nIGJhbmtlcnM= 64243\nIHNlZ3JlZ2F0aW9u 64244\nIHJ1c3NpYW4= 64245\nIHZlbnRhbmE= 64246\nZ2V0S2V5 64247\nU2FudGE= 64248\nLlRvb2xTdHJpcFNlcGFyYXRvcg== 64249\nIEFlcm9z 64250\nLnB1dEludA== 64251\nIGluZm9ybXM= 64252\nX2JpbGw= 64253\n66aE 64254\nLnNldE1heA== 64255\nIH0+Cg== 64256\nIElQUw== 64257\nIEFsaWM= 64258\nIn0KCg== 64259\nIHVzaGVy 64260\nIE5ndXllbg== 64261\nIGFic29sdXQ= 64262\nIGd1YXJkZWQ= 64263\nIFJlYmVs 64264\nIFp3 64265\nIEFubnVuY2k= 64266\nIHByw6E= 64267\nYWJjZGVmZ2hpamts 64268\nIFZlcmlmaWVk 64269\nW2l4 64270\nIHRpZXJz 64271\nw6J0 64272\nLiIpDQo= 64273\naWp1 64274\nbGl2aW5n 64275\nR1BT 64276\nLlRlc3RUb29scw== 64277\nU2l6ZVBvbGljeQ== 64278\nIG1hc3NhZ2Vz 64279\nYXNzZXJ0SW5zdGFuY2VPZg== 64280\nIHBvc3PDrXZlbA== 64281\nIGJ1c2M= 64282\nIEp1ZGFpc20= 64283\nIGluZGlzcGVuc2FibGU= 64284\nIE1vc3RseQ== 64285\nSVRB 64286\nIGdldENvbnRlbnQ= 64287\nQnJvd3NlclJvdXRlcg== 64288\nLWNvdW50ZXI= 64289\nIG9idGVu 64290\nIC8+KTsK 64291\n0LjQuw== 64292\naGVhZGxpbmU= 64293\nKGhvbWU= 64294\nYWxpY2U= 64295\nbGRyZQ== 64296\nX01vZHVsZQ== 64297\nQ29tcGFuaWVz 64298\nTlBD 64299\nIHRvcnNv 64300\nLmNvbnM= 64301\nCWFkZHJlc3M= 64302\nX3B1cmNoYXNl 64303\nIEJhcmQ= 64304\nZ3N0 64305\nLWFuaW1hdGlvbg== 64306\nX3BhaWQ= 64307\nLnNwZWNpYWw= 64308\nIGRlbGlt 64309\nIHRha2VvdmVy 64310\nKGhhbmQ= 64311\nZW51aW5l 64312\nLWdyZXk= 64313\nIEFCSQ== 64314\nU2Vzc2lvbkZhY3Rvcnk= 64315\naW5zdGFsbGVy 64316\nX0RJU1RBTkNF 64317\nIEZhdm9yaXRlcw== 64318\noIA= 64319\nJz57 64320\nIExhdXJlbnQ= 64321\n0YfQtdGC 64322\nIHN0cmlwc2xhc2hlcw== 64323\nIGVzdGFiYQ== 64324\nJnQ= 64325\nLnBhbg== 64326\nIFBBUlRZ 64327\nIEJhbGk= 64328\nY3Np 64329\nKG1lbW9yeQ== 64330\nIFRvZG9z 64331\nIFNPQVA= 64332\nYWduZXQ= 64333\nCWJlZm9yZQ== 64334\nT3B0aW9uc1Jlc29sdmVy 64335\naWJlbg== 64336\nINmF2YY= 64337\nIGFkZGl0aXZl 64338\nIE1lbGVl 64339\nIE1hbml0b2Jh 64340\nIFBlcmNlbnRhZ2U= 64341\nPSgt 64342\nLmtpbGw= 64343\nIGx4 64344\nYW5jYQ== 64345\nIGZvdG9ncmFm 64346\nIGJsYW5j 64347\nIFJlc2lkZW50cw== 64348\ncGluaw== 64349\nSEJveExheW91dA== 64350\nLnVuaW9u 64351\nIEhZ 64352\nIGNvbnRlbnRWaWV3 64353\nLWZhdA== 64354\nCWhhcw== 64355\n66OM 64356\nIHdoaXBwZWQ= 64357\ndmVuZG9ycw== 64358\ndWJyZQ== 64359\nSVRIRVI= 64360\nLmZ1bmN0aW9uYWw= 64361\nINCy0LXRgA== 64362\nQ2FuY2VsZWQ= 64363\nLWNu 64364\nSW5PdXQ= 64365\nLlJvd1N0eWxlcw== 64366\nIHRyYXRh 64367\nIEluZG9vcg== 64368\nLWZhc2hpb25lZA== 64369\nIEJvb3Ro 64370\nLkxhYmVsQ29udHJvbA== 64371\nIHBvcGU= 64372\nIENhcm5lZ2ll 64373\nbmVyZ2ll 64374\nIEJY 64375\n44CCIiwK 64376\nIFdlYnN0ZXI= 64377\nCWRpdg== 64378\nTmFycg== 64379\nIGNvbmp1Zw== 64380\na2lk 64381\nIG1vZGVyYXRpb24= 64382\nIGFteQ== 64383\nIFNvbHZl 64384\nVklD 64385\nIEVa 64386\naWxsYWM= 64387\nIENpcGhlcg== 64388\nIEFjY2VwdGVk 64389\nTEFCRUw= 64390\nIHdyYXRo 64391\nIG1pblZhbHVl 64392\nIGthxbw= 64393\nIERhdWdodGVy 64394\nKS5e 64395\nKGRj 64396\nIHJlc29sdmVz 64397\nc2Nzcw== 64398\nYWJvdXRz 64399\ndWx0aXBhcnRGaWxl 64400\nIGZlYXRz 64401\nIGxhdW5kZXJpbmc= 64402\nIGNvbXBhw7E= 64403\nIHNlZ3VyaWRhZA== 64404\nIGhvYmJpZXM= 64405\nLWZhY2luZw== 64406\nInZhbHVl 64407\nZ2V0SW1hZ2U= 64408\nU3FsU2VydmVy 64409\nIHdpdGhTdHlsZXM= 64410\nPkRhdGU= 64411\nIEV4cGVk 64412\nJGpzb24= 64413\n6ZO+ 64414\nIEFDVElPTlM= 64415\nU2Vuc2l0aXZl 64416\nYmxhc3Q= 64417\nIMO2ZmY= 64418\nZnRl 64419\nQ1RTVFI= 64420\nIExvZ0xldmVs 64421\nY29udHJhY3Rz 64422\nLmRqYW5n 64423\nIj4NDQo= 64424\nRVRZUEU= 64425\nIG9iamM= 64426\nX1NPVU5E 64427\nX3NwYWNpbmc= 64428\nX2NsYXNzaWZpZXI= 64429\nIHJvYw== 64430\nQ2xhc3NpYw== 64431\nIOuztA== 64432\nX2ludmVyc2U= 64433\nLWFjcmU= 64434\nIEZJTA== 64435\nIERWRHM= 64436\nIHN3YWxsb3dlZA== 64437\ndmlsbGE= 64438\nIFJlcGxpZXM= 64439\nRmlyZWJhc2U= 64440\nIHBoeXNpcXVl 64441\nCXRoYXQ= 64442\nIFJlc2l6ZQ== 64443\nPj4+Pj4+Pg== 64444\nTmVhcmx5 64445\nLmFydGlzdA== 64446\nLXs= 64447\nPz4NCg0K 64448\nLmxy 64449\nLmly 64450\nKFsk 64451\naWFubmU= 64452\nCW9i 64453\nLCcl 64454\nIGtuZXg= 64455\nIGNvcnJv 64456\nIE93ZW5z 64457\nPW5pbA== 64458\nbGF5cw== 64459\nYXBn 64460\nw5Y= 64461\nRU5P 64462\nSGVucnk= 64463\nSnVzdGlu 64464\nZWxlY3RyaWM= 64465\nIE5vcmRpYw== 64466\n5oyH 64467\nIGV4Y2x1ZGVz 64468\nRXVyb3BlYW4= 64469\nIHRlbnRz 64470\nKFN0cmluZ1V0aWxz 64471\nKHBlZXI= 64472\neXN0b3Jl 64473\nUG9ja2V0 64474\nZnVlbA== 64475\nZXR1cw== 64476\nIE1hcmlu 64477\n0YDRg9C6 64478\n6K+E 64479\nIFBlbnM= 64480\nIGluZWZmaWNpZW50 64481\nIGV0ZXJuaXR5 64482\nLicm 64483\nIFBhY2thZ2Vz 64484\nIEFwcENvbmZpZw== 64485\nIG11bHRpZA== 64486\nY3Vsbw== 64487\nIGJvcnJvd2Vycw== 64488\nIERlYmJpZQ== 64489\nIGZyb250cw== 64490\nSko= 64491\nICIuLi8uLi8uLi8uLi8= 64492\nICIrCg== 64493\nPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 64494\nIEdhdmlu 64495\nIG1pc2g= 64496\n4pWR 64497\nX0FUVEFDSw== 64498\nSW5kZXBlbmQ= 64499\n4K+N4K4= 64500\nw6Fm 64501\nZ2Fycw== 64502\nIFBhcnRpY2lwYXRpb24= 64503\nVmVyYm9zZQ== 64504\nU3By 64505\nU3Zn 64506\nKFZhbHVlRXJyb3I= 64507\nIHJlY29uY2lsZQ== 64508\nCURCRw== 64509\nbWVldA== 64510\nIExvZ2luUGFnZQ== 64511\nLXVudXNlZA== 64512\nIGpvbmc= 64513\nIGFuY29yYQ== 64514\nINij 64515\nPlo= 64516\nPXc= 64517\nIFJlbm8= 64518\ndmll 64519\nb3Rpb25FdmVudA== 64520\nIExpc3RUaWxl 64521\nX1J1bnRpbWU= 64522\nIHVwaG9sZA== 64523\nIE9idGFpbg== 64524\ncHJvdmlkZWQ= 64525\nIERhdGVQaWNrZXI= 64526\nIENHSQ== 64527\nIEJsYWNrQmVycnk= 64528\nYWNobw== 64529\nIElzYWlhaA== 64530\n5pW0 64531\nIEFiZHVsbGFo 64532\nIHVwcA== 64533\nIHVybHBhdHRlcm5z 64534\nCXNpemVvZg== 64535\nIHBpc3NlZA== 64536\nIHByZWZlcnJlZFN0eWxl 64537\nQVBQRVI= 64538\nIFZC 64539\nIFRlcmVzYQ== 64540\nb2duaXRv 64541\nRU1Z 64542\nIGVsZWdhbmNl 64543\nIENsYXl0b24= 64544\nYXRpdm9z 64545\nIEFuYWxvZw== 64546\nIGdhdXNzaWFu 64547\nIEhpYmVybmF0ZQ== 64548\nW11b 64549\nIHN3ZWV0bmVzcw== 64550\nIE5pZWxzZW4= 64551\nIER1dGVydGU= 64552\nKHNlbA== 64553\nLCs= 64554\nIGV4dHJhb3JkaW4= 64555\nZmxha2U= 64556\nW0RvdWJsZQ== 64557\nLy8vDQo= 64558\nIG11Y2hhcw== 64559\nIEJyb2FkY2FzdGluZw== 64560\nQXNzb2NpYXRpb24= 64561\nZXhlcmNpc2U= 64562\nLlJlbGF0aXZl 64563\nIHViaXF1aXRvdXM= 64564\nU0JBVENI 64565\nxLFuYQ== 64566\nLWZvb2Q= 64567\nIGNyeXN0YWxs 64568\n0YPQsQ== 64569\nICd+ 64570\nINCR 64571\nIGR1bms= 64572\nIHpp 64573\nIE11Zw== 64574\nIGRlY2VwdGlvbg== 64575\nIEVtYWNz 64576\nCiAgICAKICAgIAo= 64577\nIMSRxrDhu6Nj 64578\nIFdvbHZlcw== 64579\nYW1lbnRp 64580\nICcpWw== 64581\nZm9ybWF0cw== 64582\nUmVjdg== 64583\nRGV0YWlsZWQ= 64584\nKEhXTkQ= 64585\nX3RyaWFs 64586\nYWdyYW50 64587\nT20= 64588\nY29uc2Npb3Vz 64589\nIG9zcA== 64590\ncXXDqQ== 64591\nIGdvbg== 64592\nIG1lcmVrYQ== 64593\nYXJlbmRyYQ== 64594\nTWluZQ== 64595\nLmxpbmtlZGlu 64596\nIGZpZm8= 64597\nLm1vbml0b3I= 64598\nIHJ1bmU= 64599\nbW5vcA== 64600\nIHNwZWN1bGF0ZQ== 64601\nZWds 64602\nIHZhc2N1bGFy 64603\nLnRlY2g= 64604\nIG1hZ21h 64605\nIGxlc3Q= 64606\ndW1hbm4= 64607\nIERyaXZlck1hbmFnZXI= 64608\nIG9ydA== 64609\nIGxpbmdlcmluZw== 64610\nIG9zdHJlYW0= 64611\nIHNwYXJrbGluZw== 64612\nLmNvbm5lY3Rvcg== 64613\nIHRhaWxz 64614\nIGtlcm5lbHM= 64615\nVVNFUk5BTUU= 64616\nCWNj 64617\nIG9uU2VsZWN0 64618\nL01QTA== 64619\ndGFwZQ== 64620\nLmRqYW5nb3Byb2plY3Q= 64621\nR2VuZQ== 64622\n4oCZaW4= 64623\nL2ZpbHRlcg== 64624\nLWVudmVsb3Bl 64625\nIGFwcGxhdXNl 64626\nIHJlZ2lzdHJvcw== 64627\nIENvcnk= 64628\nb2ZmbGluZQ== 64629\nLXNob3Q= 64630\nbGVzYw== 64631\nb3RlbnQ= 64632\nIG51bWVyYXRvcg== 64633\nLmVmZmVjdA== 64634\ncGxhY2VtZW50cw== 64635\nIEFGQw== 64636\nLlNlcXVlbmNl 64637\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 64638\neW50aGlh 64639\nIEdyaWZmaXRo 64640\nZWxtYW4= 64641\nc2V0RGVzY3JpcHRpb24= 64642\nIE5pZ2h0cw== 64643\nLm9yZGVycw== 64644\nIGAsCg== 64645\nIFNhbGFk 64646\namlhbmc= 64647\nIHJlY3Vy 64648\nIFNUQVRJQw== 64649\nLXNwb25zb3JlZA== 64650\neWxlbmU= 64651\nLGVtYWls 64652\nX18pKQ== 64653\nKSIpLg== 64654\nQ0VMTA== 64655\nYW1tZW50 64656\nTEFZ 64657\nLHN0ZA== 64658\nLnByZWY= 64659\nLkNvcg== 64660\ncmVkbw== 64661\nIEZ1Y2tlZA== 64662\nIHJ1c3M= 64663\nIGVzdGFibGlzaGVz 64664\nbnZhcmNoYXI= 64665\nLkdldEZpbGVOYW1l 64666\nIHBlbWI= 64667\nIFNhdWQ= 64668\nX3BhY2tldHM= 64669\nLmludm9pY2U= 64670\nLmdldFRvdGFs 64671\nSG9tZUNvbnRyb2xsZXI= 64672\nIHTDtg== 64673\nYWdoZXI= 64674\nLmVudA== 64675\nLkFic29sdXRlQ29uc3RyYWludHM= 64676\nIGdlbnVz 64677\nIEJhYnlsb24= 64678\nIC4uLy4uLw== 64679\nIE1pZG5pZ2h0 64680\nIHdn 64681\nIGRhbmNlcg== 64682\nLWltbQ== 64683\nZGlyZQ== 64684\naGF6aQ== 64685\nY2VydGlmaWNhdGU= 64686\nIG1EYXRh 64687\nIGN1cmVk 64688\nc3Zu 64689\nIkI= 64690\naWJyZQ== 64691\nIGRyYWZ0cw== 64692\nQ2FwaXRhbA== 64693\nIGNvbmNpc2U= 64694\nIFBlYWNo 64695\nIHxc 64696\nIHBwbQ== 64697\nX2NvbnRhaW5z 64698\nQXV0b3I= 64699\nQXV0b1NpemU= 64700\nX2xi 64701\nIHNvbGVtbg== 64702\nIGZpbmdlcnQ= 64703\nIEluZGljYXRvcg== 64704\nIFN2 64705\nUGFyaw== 64706\nJHR5cGU= 64707\nX01JU1M= 64708\nYW5udWFs 64709\nUGFpZA== 64710\nbWFzdGVycw== 64711\nIFdE 64712\nIHZ1ZWw= 64713\nIGVqYWM= 64714\nCWdsdXQ= 64715\nIHVuZmluaXNoZWQ= 64716\nZXN0ZWVt 64717\nZ3JvdXBCb3g= 64718\nUmVtb3Zpbmc= 64719\nIGVpbmlnZQ== 64720\nIFNjcmlwdHM= 64721\nZ2V0dG8= 64722\nLkhhbmRsZUZ1bmM= 64723\nIl0pLA== 64724\nIGRpc2FkdmFudGFnZXM= 64725\nLWZyb250 64726\nPnA= 64727\nc2V0T25DbGlja0xpc3RlbmVy 64728\nIGxhbmRsb3Jkcw== 64729\nIE3DvA== 64730\nIHByZXByb2Nlc3Npbmc= 64731\nKX0+ 64732\nLWNvbnRleHQ= 64733\nLGJvb2w= 64734\nUVVJVA== 64735\nICIpIik7Cg== 64736\nIFdlYnNpdGVz 64737\nIENoYXJsb3R0ZXN2aWxsZQ== 64738\nTGF0Y2g= 64739\nLmRpcmVjdGl2ZQ== 64740\nIEh1ZmZpbmd0b24= 64741\nX2RpcnR5 64742\nZXhwaXJhdGlvbg== 64743\nIFRQTQ== 64744\nIGVkeA== 64745\nIFdlYkRyaXZlcldhaXQ= 64746\nIGFkbWlyZWQ= 64747\nIGxpc3RlbnM= 64748\nIFZpbA== 64749\nZGlmZmVyZW50 64750\nIGxpdmVsaWhvb2Q= 64751\nIFdhcmNyYWZ0 64752\nIHBvc2ljaW9u 64753\nIGltcGVhY2htZW50 64754\nSmF5 64755\nIHBvc2l0aXZlcw== 64756\nIGp1bmdl 64757\nIFNNQg== 64758\nL2luY2x1ZGVz 64759\nKCcuLi8uLi8uLi8= 64760\nQXJndW1lbnROdWxsRXhjZXB0aW9u 64761\nZGVzY3JpY2Fv 64762\nQUJDREU= 64763\nLUFB 64764\nIGludmFkZWQ= 64765\nIGFtZXJpY2E= 64766\ndWVkZQ== 64767\nIFBoYXNlcg== 64768\nIHNjb3Jlcg== 64769\nIGRpc2NvdXJhZ2Vk 64770\ndGhpbg== 64771\nIGFiZG9tZW4= 64772\nIElQUA== 64773\nIEhhbXB0b24= 64774\nL0RlbGV0ZQ== 64775\nW3NyYw== 64776\nQ1N0cmluZw== 64777\nIE51bg== 64778\nIGVwaXRo 64779\n4oC7 64780\nLnRhYmxlcw== 64781\nIEhlaW4= 64782\nIHdoaXJs 64783\nIGNsYXJpZmljYXRpb24= 64784\nIHdlZGdl 64785\nIGjDpHI= 64786\nIFRpbmE= 64787\nIHRod2FydA== 64788\nIENvc3R1bWU= 64789\naW9uYWdl 64790\nQ29k 64791\nX2FjbA== 64792\nIHJlc2g= 64793\nIE1lcmN5 64794\nIERpeG9u 64795\nIGRlc2Fycm9sbA== 64796\nVmlyZ2lu 64797\nKiopJg== 64798\nIExlbm92bw== 64799\nIGVyYXNlZA== 64800\nZW50aW9ucw== 64801\nIHNsaXBwaW5n 64802\n5Zub 64803\nIGNyYXZpbmc= 64804\ncGxhbnRz 64805\nIGdldHRleHQ= 64806\nIG1hc3NpdmVseQ== 64807\nIFJlbmFtZQ== 64808\nLmhlcm8= 64809\n44K7 64810\nIHRvbWFy 64811\nIENPU1Q= 64812\nIFByYWN0aWNlcw== 64813\nLk1lZGlhVHlwZQ== 64814\nIEZ1bmRpbmc= 64815\nRmluZQ== 64816\naWdlcmlh 64817\nVW5j 64818\nIHN3YXBwaW5n 64819\nPicuCg== 64820\naW50ZXJw 64821\nYXJ0aWZhY3Q= 64822\nIEJhZ3M= 64823\nLnZpZXdNb2RlbA== 64824\ncXVvdGVk 64825\nCUxvbmc= 64826\nX1NDT1JF 64827\nIHNhdnZ5 64828\nbmVsbGU= 64829\na2zDpA== 64830\nQ291bnRz 64831\n2q8= 64832\nRmllbGRUeXBl 64833\nb2thYmxl 64834\nIFJUTA== 64835\nI2luZGV4 64836\nICV7 64837\nIGFyaXN0 64838\nLkdldE1hcHBpbmc= 64839\nKEFkYXB0ZXJWaWV3 64840\nPSIiKQo= 64841\nIGRpc2lu 64842\nIFRvdWNoYWJsZU9wYWNpdHk= 64843\nIE1PWg== 64844\nIER1bm4= 64845\nQ2FwYWJpbGl0eQ== 64846\nYWtoc3Rhbg== 64847\nVUlWaWV3Q29udHJvbGxlcg== 64848\nKHNvY2tmZA== 64849\nIEphY3F1ZXM= 64850\nPXRr 64851\nYXJQYXJhbXM= 64852\nY29uZGE= 64853\nIGFkdm9jYXRlZA== 64854\nIHBlbmV0cmF0ZQ== 64855\nSkVDVElPTg== 64856\nIOuwmA== 64857\nIEZJTkQ= 64858\nIGVhcm5z 64859\nYXBwZW4= 64860\n6rE= 64861\nIHRocm91Z2hwdXQ= 64862\nIHBlbnNpb25z 64863\nIGZ1c3M= 64864\nSFRUUFJlcXVlc3Q= 64865\nbnV0cw== 64866\nb2NodA== 64867\nLWVzdGFibGlzaGVk 64868\nIEFMSUdO 64869\nIGpzcGI= 64870\nRGlzcA== 64871\nX2VtYmVkZGluZ3M= 64872\nIHJlcHQ= 64873\nIFlvcmtlcg== 64874\nw7JuZw== 64875\nIGpvdXJuZXlz 64876\nIEFwcHJvdmFs 64877\nCVNFTEVDVA== 64878\nKEdyYXBo 64879\n0LzQuA== 64880\nIGRvbGxz 64881\nIHNleGlzdA== 64882\nIHBhbnM= 64883\nIG1wbA== 64884\nIG9wZXJhdGl2ZQ== 64885\nIFRvcnJlbnQ= 64886\nWU0= 64887\nIFBhc3Npb24= 64888\n5pat 64889\nLmNvbXBpbGVy 64890\nCUNTdHJpbmc= 64891\nPWNvbG9y 64892\nb3JpYW5DYWxlbmRhcg== 64893\nIEtub2Nr 64894\nIGhhaWxlZA== 64895\nL3N0YXRl 64896\nIHNldHVwdG9vbHM= 64897\nIE1hcmU= 64898\nIHN5bmNocm9uaXpl 64899\nIFN3aXBl 64900\nIGdhbWJsZQ== 64901\nLCcnXV1dLAo= 64902\nIGRlZmVjdGl2ZQ== 64903\nX09CSkM= 64904\nIGRlbmlt 64905\nIHRhZA== 64906\nIEtpbWJlcg== 64907\nIG5ldXJvbG9naWNhbA== 64908\nw6puY2lhcw== 64909\nCWNi 64910\nLnNldFBhc3N3b3Jk 64911\nIFBsZWFzYW50 64912\nIFBoaQ== 64913\nLXRhZ3M= 64914\nIGNvbnRhZw== 64915\nIENvcmFs 64916\nIGRpc3RyYWN0 64917\naXRpemVy 64918\nIHN1bnJpc2U= 64919\nc2V0SWQ= 64920\nIENoZW5uYWk= 64921\nIE9ncmU= 64922\nX0hJU1RPUlk= 64923\nUFJFU1NJT04= 64924\nX1NVRkZJWA== 64925\nZHVwbGljYXRl 64926\nLmF1dGhTZXJ2aWNl 64927\nIHNwYWNlZA== 64928\nIEJlbmdhbHM= 64929\nU29sdmVy 64930\nIGJ1cmVhdWNyYWN5 64931\nX2hpdHM= 64932\nINGC0LjQvw== 64933\nIGPDqQ== 64934\nIGRpc2dyYWNl 64935\n6KeS 64936\naXNPcGVu 64937\nQ2hlbQ== 64938\nX2xpY2Vuc2U= 64939\nX2hvc3RuYW1l 64940\nX0JSRUFL 64941\nIGZpZXJ5 64942\nOkQ= 64943\nL2xpbnV4 64944\nVGl0dWxv 64945\nUmFkaWFucw== 64946\naXpvbnM= 64947\nUmFt 64948\nb2RpYW4= 64949\naWFuZ2xl 64950\nIG5pbmph 64951\nRXZlcnlib2R5 64952\nKCI+ 64953\nIHRha8W8ZQ== 64954\nIGdyb3VuZGJyZWFraW5n 64955\nIGRpcmln 64956\nSFRNTEVsZW1lbnQ= 64957\nIFVuY29tbWVudA== 64958\nY2hlaW4= 64959\nIOeUn+WRveWRqOacn+WHveaVsA== 64960\nJSIK 64961\nIHRpcG9z 64962\nQ2hhckNvZGU= 64963\nIFByb2R1Y3Rv 64964\nZmFpdA== 64965\nJ2w= 64966\nLXRodW1ibmFpbA== 64967\ndXN1 64968\nX2Zvcm11bGE= 64969\nLlRPUA== 64970\nLmJ1eQ== 64971\nIG1pZXV4 64972\nQ2VudHVyeQ== 64973\ncGVp 64974\nIHRic3A= 64975\nLVBhY2lmaWM= 64976\nb2dp 64977\nIGZhdHRv 64978\nIGZhbnRhc3Q= 64979\nIFNBTEU= 64980\nLmFkcw== 64981\nIHBpbGxhcnM= 64982\nX3RyaXA= 64983\nIHR1YQ== 64984\nIGFwZWxsaWRv 64985\nLnNldENlbGxWYWx1ZQ== 64986\nICgoXw== 64987\nIE5pbmE= 64988\nPGM= 64989\naW5pdW0= 64990\nZGZ1bmRpbmc= 64991\nLXdvcmtpbmc= 64992\nIEVzdGFkb3M= 64993\nIE1hbGk= 64994\nPGY= 64995\ndXJhbmNlcw== 64996\ncGFnaW5h 64997\nX1BL 64998\nIHVuYXJtZWQ= 64999\nb2dnbGVk 65000\nQ2FuZGlkYXRl 65001\nUmF0aGVy 65002\nIGZyYW5jaGlzZXM= 65003\nIGNvdmVuYW50 65004\nwqo= 65005\naXBwaW5lcw== 65006\nR3Vu 65007\nLWZlaXJh 65008\nIGxpbmVhZ2U= 65009\nX0dSQU5URUQ= 65010\nZ2VucmVz 65011\nLkVsYXBzZWQ= 65012\nIGxhcmdv 65013\n0Js= 65014\nLXJlYWR5 65015\nX3Byb2Nlc3NlZA== 65016\nbGFuZ3M= 65017\nw7ptZXJvcw== 65018\nZnE= 65019\nL25wbQ== 65020\nX3Nydg== 65021\nIGF0dGVuZGFudA== 65022\naXZpZA== 65023\nZXZpY2U= 65024\nQUJJ 65025\nKGJpbmFyeQ== 65026\nX1ZBTElEQVRF 65027\nIGFkZEl0ZW0= 65028\nX2NvZWY= 65029\nYWxlYg== 65030\nb2dyYXBoaWNhbGx5 65031\nQm9yZGVyQ29sb3I= 65032\nIGFzc2F5 65033\nIGNhdGNoRXJyb3I= 65034\nIENocnlzbGVy 65035\nb2do 65036\nIGtleVZhbHVl 65037\nZGVjaXNpb24= 65038\nLW9mZnM= 65039\nIGxpZWd0 65040\nKERhdGFUeXBl 65041\nIGlyaXM= 65042\nIGV1cA== 65043\ncmlnZXI= 65044\nb25pY2E= 65045\nIHJvcGVz 65046\nIG5hcnJvd2x5 65047\nIFF1YWRy 65048\nIGVwdWI= 65049\nZXN0aW5hbA== 65050\nLXR1cm4= 65051\nIGxhbmdz 65052\n55uR5ZCs6aG16Z2i 65053\nIHF1ZWxsbw== 65054\nLGFyZ3M= 65055\naWdhdGU= 65056\nIFNlZW1z 65057\nIGZvcnRl 65058\nQ0xJ 65059\nX0xPQURJTkc= 65060\nLlJ1bGU= 65061\nIHlvdXRocw== 65062\nKHh4 65063\nIEFzc3VtaW5n 65064\nYWdoZXR0aQ== 65065\nKQoKCgoK 65066\nIG9uT3B0aW9uc0l0ZW1TZWxlY3RlZA== 65067\nT2NjdXA= 65068\nIGRldHJpbWVudGFs 65069\nIGlubmF0ZQ== 65070\nIEJhcnJlbA== 65071\ndWVuY2lh 65072\nIG9uQmx1cg== 65073\nIGxpYnM= 65074\nW2xhc3Q= 65075\nIGNwZg== 65076\nLlRpbWVvdXQ= 65077\nZXN0YXRpb24= 65078\nIHdpZWw= 65079\nIHV0aWxpemFy 65080\nIGRpc2d1aXNl 65081\nIER1bQ== 65082\nT0NJ 65083\nT05HTw== 65084\nICg/LA== 65085\nIFBhdGlv 65086\nVmVydGV4QXJyYXk= 65087\nLmF1dGhvcml6YXRpb24= 65088\ncm96 65089\nIEhvcw== 65090\nLlNwYWNl 65091\nIFZpcnVz 65092\nKGtleXdvcmQ= 65093\nVE9DT0w= 65094\nX0NPTlRST0xMRVI= 65095\nIEJsb2NrZWQ= 65096\nIENob3A= 65097\nd2nEmQ== 65098\nXFJvdXRpbmc= 65099\nL3BhY2thZ2U= 65100\nIHBlcnN1YWRlZA== 65101\nYmVpdHM= 65102\nTENE 65103\nIG11Yw== 65104\nX0ZPUldBUkQ= 65105\nIG91dGxhdw== 65106\nIHphdw== 65107\nX3ZlaGljbGU= 65108\nIEplbnNlbg== 65109\nLkdyZWVu 65110\nIC8vLy8v 65111\nSVJDTEU= 65112\nLWJ1c2luZXNz 65113\nLkhpZGRlbg== 65114\nIGtvbm50ZQ== 65115\ncHE= 65116\nIHBhcmVjZQ== 65117\nIGxhbmRzY2FwaW5n 65118\nIERlY29yYXRpb24= 65119\nIEdSQQ== 65120\nX3Byb2ZpbGVz 65121\nIEZsZW0= 65122\nQ0xJQ0s= 65123\nIEZBSUxVUkU= 65124\nIGlvbnM= 65125\nX1RpbWVy 65126\nLkRvZXM= 65127\nIGJvdW5jaW5n 65128\ndXBweQ== 65129\ndWxpcw== 65130\nL2Fn 65131\nIEdhcm4= 65132\nIGh1ZA== 65133\nIHJlc3BvbmRlcg== 65134\nIHN0cmNocg== 65135\nIGNob2tl 65136\nIHN0YXNo 65137\nX2NoZWNrc3Vt 65138\nIHN0YW1wZWQ= 65139\nQEdldE1hcHBpbmc= 65140\nLkJ5dGVBcnJheQ== 65141\nIER5cw== 65142\nYXRlcm5pdHk= 65143\nKHJi 65144\nIGVkaXRUZXh0 65145\nIGVyZWN0aW9u 65146\nIGNlc3M= 65147\nX2V2ZXJ5 65148\nX2dhdGV3YXk= 65149\nICciLg== 65150\nIHN0YWZmaW5n 65151\nIGludm9pY2Vz 65152\naW5pY2lv 65153\nfV0sCg== 65154\nLHZhcg== 65155\neWNpbg== 65156\nIERpb24= 65157\nICUlCg== 65158\nJywo 65159\nLXNwYW4= 65160\nIHRow6BuaA== 65161\nIGJvcm5l 65162\nIEthdGhsZWVu 65163\n6L+e5o6l 65164\nX2N1YmU= 65165\nIGluZm9ybWHDp8O1ZXM= 65166\nbmdlcg== 65167\nL0ZpbGU= 65168\nIGRhcmE= 65169\nIG1M 65170\nKioqKioqCg== 65171\nIG1hcmtpbmdz 65172\nYmJl 65173\nIHJlY3VycmVudA== 65174\nIFJhbmtpbmc= 65175\nX2ludGVncmFs 65176\nXT4K 65177\nIHVuYW5pbW91c2x5 65178\nIGRpcGxvbWF0cw== 65179\nIElPUw== 65180\nOyI+PD8= 65181\nIE1hdHRl 65182\nIFJhbGVpZ2g= 65183\nIEltcHJvdmU= 65184\nZXhpc3RlbnQ= 65185\nIGZha2Vy 65186\nIEhpZ2hsYW5k 65187\nc3RlbQ== 65188\nLW1z 65189\nTGlzdE9m 65190\nLkxpc3RlbmVy 65191\nKHdhaXQ= 65192\nX1JTVA== 65193\nVW5h 65194\nIG9jY3VwYXRpb25hbA== 65195\nLW1lbW9yeQ== 65196\nIFN1cmY= 65197\nIGJydXRl 65198\nX0VsZW1lbnQ= 65199\nZGRkZA== 65200\nIERlY3Jl 65201\nLnBzaQ== 65202\nLWRldmVs 65203\nIE9uVHJpZ2dlckVudGVy 65204\nVG9EZWxldGU= 65205\nIGhlcmFsZA== 65206\nIHNvY2lhbGVz 65207\nIGJvb3N0ZWQ= 65208\nLkl0b2E= 65209\nKiI= 65210\nIGFudGlkZXByZXNz 65211\nIE1hdmVy 65212\nX18pKQo= 65213\nKER1cmF0aW9u 65214\nZXN0YXRl 65215\nYnJhdGU= 65216\nQ2xh 65217\nIOS4ig== 65218\n65CY 65219\ncmnDqHJl 65220\nYnJlYWtlcg== 65221\nX2xlZw== 65222\nfWVsc2VpZg== 65223\nX2Z1bmNz 65224\ndcOt 65225\nLnBhZ2VZ 65226\nY3JlYXR1cmU= 65227\nIGNhbm5hYmlu 65228\nIEFzdHJv 65229\nbG9jYWxz 65230\nIExBUw== 65231\nX2NvbnZlcnNpb24= 65232\nIENSVUQ= 65233\nLnNraWxs 65234\nIHN0cmF0ZWdpc3Q= 65235\nLnBvbA== 65236\nKHNlZ21lbnQ= 65237\nIHBlZQ== 65238\nfSIpOwoK 65239\nLnByZXZpZXc= 65240\nSmFt 65241\nIGhlZnR5 65242\naXZhdGluZw== 65243\nR3JpZENvbHVtbg== 65244\nIGN1ZGQ= 65245\nIGluamVjdGlvbnM= 65246\nIE5JTA== 65247\nLW9sZHM= 65248\nZmxhdGlvbg== 65249\nIExlYWZz 65250\nIHNwaGVyaWNhbA== 65251\nIGZhbGxvdXQ= 65252\nYW1pbmVy 65253\nIDo6PQ== 65254\nLnBvaW50ZXI= 65255\nLU1hcnQ= 65256\nIG1hdHRl 65257\nIGNvcXVpbmU= 65258\nIGRpc2NvbnRpbnVlZA== 65259\nIFJFR0lPTg== 65260\nLlJpZ2h0VG9MZWZ0 65261\nIHNxdWVlemVk 65262\nX1BPSU5UUw== 65263\nYmVzdG9z 65264\nLWxhc3Rpbmc= 65265\nKHV0aWxz 65266\nPEJhc2U= 65267\nIHBhcmRvbg== 65268\nU3RyaWRl 65269\nY2Ry 65270\nIG5hcnJhdG9y 65271\ndm9sdXRpb24= 65272\nIHVzZXJJbnB1dA== 65273\nX2NvbnRhY3Rz 65274\nKGVuZW15 65275\nIENoYW1iZXJz 65276\nemllbA== 65277\nIGJsb2NrU2l6ZQ== 65278\nQW5pbWF0aW9uc01vZHVsZQ== 65279\nIGltbWVyc2l2ZQ== 65280\nIG91dGluZw== 65281\ndWVzdG9z 65282\nVHdlZW4= 65283\nIGtlcA== 65284\nIHLDqXN1bHQ= 65285\nIEJvbGx5d29vZA== 65286\nRExM 65287\nIFN1cmVseQ== 65288\nLlJvd1N0eWxl 65289\nKHRt 65290\nX2dlbmVyYXRpb24= 65291\nIFN0aXI= 65292\nIGRhdGFTbmFwc2hvdA== 65293\nY2h1cmNo 65294\nIGNvbmZpZGVudGlhbGl0eQ== 65295\nX3N1c3BlbmQ= 65296\ndmlw 65297\nIEthdGh5 65298\n44Km 65299\nIHZpb2xlbnRseQ== 65300\ncGV0cw== 65301\nIG1lc3NlZA== 65302\nIHRleHRib29rcw== 65303\nICAgICAgICAJCQk= 65304\n5raI5oGv 65305\nIExhcmF2ZWw= 65306\nIEFyY2FkZQ== 65307\nIGVudGg= 65308\nIGJlbmlnbg== 65309\nX0RST1A= 65310\nLWVuYWJsZQ== 65311\n4oCdKS4= 65312\ndXZ3eHl6 65313\nX2xpc3Rpbmc= 65314\nIE5JQw== 65315\n44GV44GE 65316\nKCIuIiw= 65317\nLXJvdW5kZWQ= 65318\nLXBhY2Vk 65319\ncGF0cmljaw== 65320\nU2VsZQ== 65321\nLmdldEZpcnN0 65322\nLkVYSVQ= 65323\nZXRlcm1pbmF0ZQ== 65324\nR3JhbQ== 65325\nLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 65326\nLmV4dGVybmFs 65327\nIHdyb25nZG9pbmc= 65328\nIEVsbQ== 65329\nIHNhbms= 65330\nVGVlbg== 65331\nIFRob21zb24= 65332\ncHJpb3I= 65333\namV0YQ== 65334\nIEFEUw== 65335\nIFBlcnNpc3RlbmNl 65336\nIEZvbGs= 65337\ne1wi 65338\nYm9uZA== 65339\nX1NQRUNJQUw= 65340\nX0xBVA== 65341\nb25la3Np 65342\nIG1vdGhlcmJvYXJk 65343\nIHNoZWFy 65344\nRnVsbFNjcmVlbg== 65345\nKks= 65346\nKEJsdWVwcmludA== 65347\nTWV0aG9kSW5mbw== 65348\nQmVjb21l 65349\nIGhhaWw= 65350\nIERvYg== 65351\nIGdlbmVyb3NpdHk= 65352\nID8iOwo= 65353\nIHdoaXNrZXk= 65354\nIHRoaW5uZXI= 65355\nIENw 65356\nIGludGVyc2VjdGlvbnM= 65357\nQ3JpdA== 65358\ncmFpc2Fs 65359\ncmVmZmVu 65360\nV2hlbmV2ZXI= 65361\nIGNvbW1lbmNlZA== 65362\nVHJhbnNmb3JtYXRpb24= 65363\nL3dyaXRl 65364\nPSIiIg== 65365\nKGxk 65366\nIG5vcnNr 65367\nQU1FTlQ= 65368\nLnNoYXJlZEluc3RhbmNl 65369\nX2hvdXNl 65370\nIGdsRW5hYmxl 65371\n6L2v 65372\nIG5hbw== 65373\nIGRlcG9zaXRpb24= 65374\nIGRpbm9zYXVycw== 65375\nIHRpbWVTdGFtcA== 65376\nX18pOwoK 65377\nLlJpYmJvbg== 65378\nIExpbmRzZXk= 65379\nOnVzZXI= 65380\nIMOA 65381\nX2Zvcm1z 65382\nbWluYXRpbmc= 65383\nIE9saXY= 65384\nIGTDqWJ1dA== 65385\nYmFyY29kZQ== 65386\nc2ltaWxhcg== 65387\nIHBsYXRlYXU= 65388\nIGluZGVt 65389\nUmVhbG0= 65390\nIGZlcnRpbGl6ZXI= 65391\nIGNhcGU= 65392\nIGNoYW1wYWduZQ== 65393\nIHNlbGZpZQ== 65394\nIHBsYWlubHk= 65395\nIGNhdGFzdHJvcGhl 65396\nIGJldHJheWVk 65397\ndmVyc2libGU= 65398\nVXBkYXRlVGltZQ== 65399\nLk91dHB1dFN0cmVhbQ== 65400\nYmlhc2Vk 65401\nYm91bmNl 65402\nIFNwb3J0aW5n 65403\nQ29vcmRpbmF0b3I= 65404\nZGV2ZWxvcGVycw== 65405\nIHRyYWNlcg== 65406\nIG11c3RhcmQ= 65407\nU1E= 65408\nX3Rlcm1pbmFs 65409\nIGNvb2xlZA== 65410\nIGF2b2lkYW5jZQ== 65411\nTG9naWNhbA== 65412\nIHllbGw= 65413\nX3JvdXRlcw== 65414\nIGFydGVyeQ== 65415\nIEJlYXJpbmdz 65416\nLm12cA== 65417\nLkdVSQ== 65418\nVUlTY3JlZW4= 65419\neW1t 65420\naXTDpA== 65421\nKClbIg== 65422\nIEF6ZXJiYWk= 65423\nIGNvbmRpdGlvbmVy 65424\nIHdhZw== 65425\nIHNjYWxw 65426\ndmluY2lhbA== 65427\nb3dsZXI= 65428\nLicpOwoK 65429\nQkxVRQ== 65430\nIMKnwqc= 65431\nQm9zdG9u 65432\nIExpbmtlZEhhc2hNYXA= 65433\nRG9jdW1lbnRhdGlvbg== 65434\nLkxlcnA= 65435\nIGRlbm5l 65436\nIGhlc2l0YXRpb24= 65437\nIENlbGVicml0eQ== 65438\nIEh5ZGU= 65439\nIGNvbW1hbmRpbmc= 65440\nYWNlbGx1bGFy 65441\nIHBhdmVtZW50 65442\nIEhhbW1vbmQ= 65443\nYXNzaWM= 65444\nUExVR0lO 65445\nIHJldm9rZWQ= 65446\nRG9jdW1lbnRv 65447\nLnBob3Rvcw== 65448\nIFdpbGxvdw== 65449\nIFZpa2luZw== 65450\nIHVwZnJvbnQ= 65451\nIExpZmV0aW1l 65452\nICVb 65453\nRHJlYW0= 65454\n5aS0 65455\nIGFjY2VsZXJhdG9y 65456\nUGVyc29uYQ== 65457\nX3RvcGljcw== 65458\n77yJ44CB 65459\nIChfLg== 65460\nIHPDqWN1cg== 65461\nIEt3 65462\nX2Nhc2g= 65463\nIHNvb3RoaW5n 65464\nIExvdmVseQ== 65465\nIEhlcnM= 65466\nZWxvbg== 65467\nTElDRU5TRQ== 65468\nX2NhY2hlZA== 65469\nLnNoYQ== 65470\nUkZD 65471\nLkZpbGVJbnB1dFN0cmVhbQ== 65472\nLUFs 65473\nIHVzZXJMaXN0 65474\nIG7DpHI= 65475\nSGlsbGFyeQ== 65476\nIHBhZ28= 65477\nLlBsdWdpbg== 65478\nIENvdmU= 65479\nX3lhbWw= 65480\nX3JzcA== 65481\nJ3Bvc3Q= 65482\nLWR1cmF0aW9u 65483\nIHNlbnRpZG8= 65484\nIG1pbkhlaWdodA== 65485\nIHR1cnJldA== 65486\nLWVuZXJneQ== 65487\nIOeJ 65488\n0YDRg9Cz 65489\nb3RlY2E= 65490\nX3F1YWw= 65491\nU2VsZWN0aXZl 65492\nIEJFTE9X 65493\nCWFkbWlu 65494\nIH19LAo= 65495\nJ3VzZXI= 65496\nU1ZH 65497\nIGN1bG8= 65498\nKFdvcmxk 65499\nLWJpbmRpbmc= 65500\nbmJy 65501\nIFNlbmRz 65502\nIHN1cHJlbWFjeQ== 65503\nIHNrYXRpbmc= 65504\nIGNyZWVr 65505\nIGFjY3VzYXRpb24= 65506\nYXBnb2xseQ== 65507\nLklERU5USVRZ 65508\nIG1hbmRhdGVk 65509\nIGdvd24= 65510\nIHdpZHRocw== 65511\nIExTVQ== 65512\nL3ZlcnNpb24= 65513\nIFJlYWRlcnM= 65514\nIFJvbmFsZG8= 65515\nIGJhZmY= 65516\nIGA7Cg== 65517\nR0xJU0g= 65518\nKGRvdA== 65519\nIE9wZXJhdG9ycw== 65520\nLlNjZW5lTWFuYWdlbWVudA== 65521\nbWVyYw== 65522\nX3JlcG9ydHM= 65523\nLWNlbnRyaWM= 65524\nIENlaWxpbmc= 65525\nPXsh 65526\nbW9ueQ== 65527\nIEFERFJFU1M= 65528\n5a+56LGh 65529\nTWF0Y2hpbmc= 65530\nIHVuaw== 65531\nIGtleUNvZGU= 65532\nICcvJyk= 65533\nKWRhdGE= 65534\nIFZvbHVudGVlcg== 65535\nIGxheg== 65536\nIEd1YW5n 65537\nIENhbmRpZGF0ZXM= 65538\nRW5zdXJl 65539\naWFnZQ== 65540\nc3VjYw== 65541\nQ2VydGFpbg== 65542\nIGxlZnRvdmVy 65543\naW5pbg== 65544\nLWVsZW1lbnRz 65545\ncGlrZQ== 65546\nIHNsaWRlc2hvdw== 65547\nLnRvb2xTdHJpcFNlcGFyYXRvcg== 65548\nLnBoYXNl 65549\nIGVudGVydGFpbmVk 65550\nIENhcnJpZQ== 65551\nIE1vaGFtbWFk 65552\nLmxvZ2dlZA== 65553\nIHNjcm9sbFRvcA== 65554\nIEFiYmV5 65555\naW1vbnk= 65556\nKHJlc3VsdFNldA== 65557\nIGFkaGVzaXZl 65558\nX0RBTUFHRQ== 65559\nIGlvY3Rs 65560\nYnJvd24= 65561\nSU5TVA== 65562\nLkNsb25l 65563\nIGxvb21pbmc= 65564\nRGVzZXJpYWxpemU= 65565\nIGx1eg== 65566\ncXJzdHV2d3h5eg== 65567\nLmlkZW50 65568\nSGVhdnk= 65569\nIGRpbw== 65570\n5piv5ZCm 65571\nIEZ1cm4= 65572\n6YKu 65573\nemltbWVy 65574\n44O844OJ 65575\nc3BlYWtlcg== 65576\nIEdlZA== 65577\nIHVuaWRlbnRpZmllZA== 65578\nSW50ZXJmYWNlT3JpZW50YXRpb24= 65579\nIFN1cnZpdm9y 65580\nZGVlbg== 65581\nIEJvcmc= 65582\ndG9Eb3VibGU= 65583\nX2J3 65584\nIHB1Ymxpc2hlcw== 65585\nX0FMRVJU 65586\nYW5ncw== 65587\naWVyZXM= 65588\nIGhlaQ== 65589\nIElDb25maWd1cmF0aW9u 65590\nIGNvbnN0aXR1dGVk 65591\nV0FUQ0g= 65592\ncHJpdmF0aW9u 65593\nIEdyYW5pdGU= 65594\nLlRleHRBbGlnbm1lbnQ= 65595\nX2t3 65596\nOyIsCg== 65597\nY290 65598\nIE5ld2Fyaw== 65599\ncm9hY2g= 65600\nKW9iag== 65601\nQ29tcGlsYXRpb24= 65602\nQ2F0ZWdvcnlJZA== 65603\nLnNldFVzZXI= 65604\naXZ5 65605\nIEltYWdpbmc= 65606\naWdodGVk 65607\nIHdnZXQ= 65608\nIG1vdXRocw== 65609\nLmxpbg== 65610\nIFJhZGlvQnV0dG9u 65611\nLkNtZA== 65612\nc3Nl 65613\nIG1lc2hlcw== 65614\nIFNvbGU= 65615\nLnJlY29yZHM= 65616\nIGFudGlz 65617\nKG1vbg== 65618\nINGH0LjRgdC70L4= 65619\ngq0= 65620\nIOyeiOuKlA== 65621\nQWxsQXJnc0NvbnN0cnVjdG9y 65622\nIHN1cnJlYWw= 65623\nIE1hcnJpZWQ= 65624\nIHhwYXRo 65625\nXGY= 65626\nQnJpbmc= 65627\nIHlhaG9v 65628\nIEV0c3k= 65629\nX2RhaWx5 65630\nIHRocm93YWJsZQ== 65631\nIFBsYXNtYQ== 65632\nL1B1YmxpYw== 65633\naW1pemVCb3g= 65634\nIHZlcw== 65635\nIHRyb20= 65636\nX3Jocw== 65637\nLWFscGhh 65638\nIEFyYm9y 65639\nKSkt 65640\nRmlzaA== 65641\nZmVlZHM= 65642\nIGNhbGY= 65643\nIFNlcmdlYW50 65644\nKGVudW0= 65645\nIFJhbXNleQ== 65646\nIElkZW50aWZ5 65647\nLmluaXRTdGF0ZQ== 65648\nIGZsdWN0dWF0aW9ucw== 65649\nX0FUVFJJQlVURVM= 65650\nIHB3bQ== 65651\nRVNB 65652\nY3Bm 65653\nU2ltdWxhdGlvbg== 65654\nIHlvdXRoZnVs 65655\nIEluZmFudHJ5 65656\nIGdsYW5jZWQ= 65657\nIFByb3Blcg== 65658\n5LmJ 65659\nIEtyYWZ0 65660\nQ2l0 65661\nb29wcw== 65662\nPXVybA== 65663\ncG9zdGluZw== 65664\nZGVjbGFyaW5n 65665\nIHBOb2Rl 65666\nSmF2YXNjcmlwdA== 65667\nCQkJCQoJCQkJCg== 65668\nLmNvb3JkaW5hdGVz 65669\ncmlldA== 65670\nIFNx 65671\nX0NBVA== 65672\nIFBhcGE= 65673\nYW5kaQ== 65674\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v 65675\nTWVldGluZw== 65676\nIOyekA== 65677\nSW1hZ2Vu 65678\nw6lyaWVuY2U= 65679\nQWdncmVnYXRl 65680\nLnBvbHk= 65681\nIHdhdmVk 65682\nIGludmVycw== 65683\nc2VhcmNoTW9kZWw= 65684\nIHRyb2xscw== 65685\nW2xldmVs 65686\nIExvd2U= 65687\ndWxsbw== 65688\nKHBsYWNl 65689\nIE5BU0NBUg== 65690\nIG9yYml0YWw= 65691\nLnN0b3J5 65692\nIGF1dGhvcml0YXRpdmU= 65693\nLnRleHRWaWV3 65694\nIGFscGg= 65695\nX3JlZHVjZQ== 65696\nIEZyYW1lcw== 65697\nIEJyb20= 65698\ncmVkaQ== 65699\nKE1ldGhvZEltcGxPcHRpb25z 65700\nbWFjZW4= 65701\nVG90 65702\nIG1pZGQ= 65703\n2Y8= 65704\nIEJhc2VNb2RlbA== 65705\nIFZlZ2E= 65706\nID8+Igo= 65707\nIFJpZ2lkYm9keQ== 65708\nLnNldENvbnRlbnRUeXBl 65709\nYWFT 65710\nQmFzZWxpbmU= 65711\nIGJsYW5rZXRz 65712\nc2Fw 65713\nIGNhc3VhbGx5 65714\nVW5pdmVycw== 65715\nIFRyYXk= 65716\nIEFpcmVz 65717\nIG1heFk= 65718\nX1BST1BFUlRJRVM= 65719\nIGhlbG1ldHM= 65720\nwqY= 65721\nX2Rlc2Ny 65722\nc2hpbnQ= 65723\nX0NQUA== 65724\ndW1v 65725\nYWRheQ== 65726\nKHBsb3Q= 65727\nZW56eW1l 65728\nIEV4Y2VwdGlvbnM= 65729\nX3Zpc3VhbA== 65730\nOl0KCg== 65731\nKHRhcmdldEVudGl0eQ== 65732\ncGhlcmVz 65733\ndW5hbg== 65734\nIHNlbG9u 65735\nd2ls 65736\nIFJlbmRlcmluZw== 65737\nS0M= 65738\nIGNvbnN0aXR1ZW5jeQ== 65739\nU0NSSUJF 65740\nZXN5 65741\nIEZlbGxvd3NoaXA= 65742\n5Y+4 65743\nIGZ1dHVybw== 65744\nIGFybW9yZWQ= 65745\nbGlzdGU= 65746\nb3Jhcw== 65747\nbXVsdGlwbHk= 65748\nZ2VtZQ== 65749\nY29lZg== 65750\n0L7QsdGA0LDQtg== 65751\nIERlbGl2ZXI= 65752\nZW5nbw== 65753\nLnVzZXJTZXJ2aWNl 65754\nT05VUw== 65755\nLm9ucmVhZHlzdGF0ZWNoYW5nZQ== 65756\nICIvIiw= 65757\nYW1iaW8= 65758\nX1Byb2plY3Q= 65759\nJyk/Pg== 65760\nIGZsaXBwaW5n 65761\nd29tZW4= 65762\nLkNyb3Nz 65763\nIGhvbGxhbmQ= 65764\nIGNpbmVtYXRpYw== 65765\nIHdoaXN0bGVibA== 65766\nIGxpbmd1aXN0aWM= 65767\nLkdldHRlcg== 65768\nIG3DpG5uZXI= 65769\nIExlZ28= 65770\nIFNjaHVtZXI= 65771\nYXNzZXNzbWVudA== 65772\nX2Noaw== 65773\nIHJlY29tbWVuZGluZw== 65774\nLnNjYWxh 65775\nIEd1YXJhbnRlZQ== 65776\nIEBf 65777\nLkFVVEg= 65778\nIHlQb3M= 65779\nbGF0ZXg= 65780\nIEFsYmVydG8= 65781\n5q2l 65782\ndGhvcmE= 65783\n4Li34LmI 65784\nVVJMRXhjZXB0aW9u 65785\nR2hvc3Q= 65786\nLlRvb2xiYXI= 65787\nIGVuZGlhbg== 65788\n6Zeo 65789\nc3RyYWN0aW9ucw== 65790\nRmlsZU5vdEZvdW5kRXhjZXB0aW9u 65791\nIHN0aW11bGF0aW5n 65792\nYnNlcnZpY2U= 65793\nYXTDs3Jpbw== 65794\naXRpb3Vz 65795\nIGF1dGhTZXJ2aWNl 65796\nX1RSQU5TRkVS 65797\nIHJlZGlyZWN0VG8= 65798\nIG1lbnNlbg== 65799\nIFNQTA== 65800\nIMK7LA== 65801\nIGFjZXQ= 65802\nX0JhY2s= 65803\n4KSV 65804\nYWFj 65805\nIFJpb3Q= 65806\nX0ZC 65807\nIFph 65808\nUGxhdGU= 65809\nIGxhYmVsVGV4dA== 65810\nINCy0YDQtdC8 65811\naHRvbg== 65812\nIE1jQQ== 65813\nIEFwcGVuZGl4 65814\nIEtvaw== 65815\nIGludGVydmlld2luZw== 65816\nX3NwZWxs 65817\nIFN1YmplY3Rz 65818\nIGJ1cm5lcg== 65819\n5a+8 65820\naWxsaWFu 65821\nIGJ1bXBz 65822\nUGFzc2Vk 65823\nIENvbnRyaWJ1dG9y 65824\nWW8= 65825\nYmxh 65826\nIHNvdXQ= 65827\nLmV4Yw== 65828\nTm90aWZpZXI= 65829\nc2hpdg== 65830\nLlVuaXRUZXN0aW5n 65831\ndWVsbGVz 65832\nX1NMRUVQ 65833\nCW9wdHM= 65834\nIHByZXNjcmlwdGlvbnM= 65835\nIHJldmlzZQ== 65836\nRURJVE9S 65837\nIGFubsOpZXM= 65838\nX3BrZw== 65839\nIFRyYWNrcw== 65840\n4LmI4Liy 65841\nPWZvcm1z 65842\nLlJVTg== 65843\nIGFzZWc= 65844\nIHDDoQ== 65845\nIGplcw== 65846\nR3Jl 65847\nYWNy 65848\nT2ZmaWNpYWxz 65849\ndWtlcw== 65850\nY29tcGFuaWVz 65851\nXFF1ZXJ5 65852\nIFByaW50YWJsZQ== 65853\n5a6i 65854\nX1ZP 65855\nIGRlaXg= 65856\nIGRldmljZUlk 65857\nIGRpc3R1cmJhbmNl 65858\nbmlzdA== 65859\nLmlzbw== 65860\ncGFyYWxsZQ== 65861\nLWRlc2NyaWJlZGJ5 65862\nIExpZg== 65863\nIGJyZWFzdGZlZWRpbmc= 65864\nIGZlbWluaXN0cw== 65865\nbGVncm91bmQ= 65866\nIGRhbWU= 65867\nIGNvbXB1bHNvcnk= 65868\nTUVSQ0hBTlRBQklMSVRZ 65869\nLXJlc3VsdHM= 65870\nZm9ybWVkVVJMRXhjZXB0aW9u 65871\nOlsK 65872\nLWludGVyZXN0 65873\nIHPDpA== 65874\nIG5vc3RhbGdpYQ== 65875\nIGNsYXJpZmllZA== 65876\nIFBIT1RP 65877\nIHJldmlzaXQ= 65878\nIGNhcHN1bGVz 65879\nIHNoaW5lcw== 65880\nIGNyYWZ0c20= 65881\nc3ViamVjdHM= 65882\nICAgICAgICAgICANCg== 65883\n5LiN6IO95Li656m6 65884\nIFNjaHdhcnR6 65885\ncmV1 65886\nIG1hZHJpZA== 65887\nLnBlbmRpbmc= 65888\nIExJTg== 65889\nIHVuc3Q= 65890\nCW12 65891\nIHZpdmFzdHJlZXQ= 65892\nIHNwb2ls 65893\nw7hq 65894\n64u5 65895\nIGJ1ZW5h 65896\nIGRpZ2l0YWxXcml0ZQ== 65897\nc3Vicw== 65898\nIFVOSVZFUlM= 65899\nIFN1aWNpZGU= 65900\nPEd1aWQ= 65901\nLmVsZW0= 65902\nX2NvbnN0cnVjdA== 65903\nIGFtaWRzdA== 65904\nIOuP 65905\nLWVzdGVlbQ== 65906\nIEludGVncml0eQ== 65907\nLmZtbA== 65908\nT3V0T2ZCb3VuZHNFeGNlcHRpb24= 65909\nLVNlbWl0aXNt 65910\nQmV0YQ== 65911\nLWdvaW5n 65912\nU2VnbWVudHM= 65913\nIE1hZQ== 65914\nIFBlcnNvbmFsaXR5 65915\ndXJiYXRpb24= 65916\n5Y+z 65917\nIHNlcnZpY2luZw== 65918\nIGJpcG9sYXI= 65919\nX1NUQUdF 65920\nLkpQRw== 65921\nJyl9fSI+ 65922\naXNobHk= 65923\nSVZFUlk= 65924\nIEluc3BpcmVk 65925\nLnNlcnY= 65926\nKGRhdGFz 65927\nIGRpdmlkZXM= 65928\nPFJlYWw= 65929\ndmVydHVyZQ== 65930\nIG1vdGl2YXRpb25z 65931\ndmVydGU= 65932\nRU5DSA== 65933\nZmRz 65934\nIHJldm9sdA== 65935\nd2VidG9rZW4= 65936\naW5zdGVhZA== 65937\nCW9wdA== 65938\nIE1hcmlqdWFuYQ== 65939\nX2FkYw== 65940\nYmFv 65941\nW1NlcmlhbGl6ZUZpZWxk 65942\nIGdyYWZmaXRp 65943\nLWFvcw== 65944\nZW1pYWg= 65945\nIGbDrXM= 65946\nIGV0aGlj 65947\nJ2FsbA== 65948\nOmtleQ== 65949\n65Ok 65950\nIHJlc3RyaWN0aW5n 65951\nIFhIVE1M 65952\nZXJlbw== 65953\ndW5kb3M= 65954\nCWVuZGlm 65955\nWzosOiw= 65956\nIHN0ZWhlbg== 65957\nYWtoaXI= 65958\nIGp1aWNlcw== 65959\nZGF0YVNvdXJjZQ== 65960\nX21r 65961\nLmRlbGV0ZWQ= 65962\nQ29uZ3Jlc3M= 65963\naW1tZWw= 65964\nRWxlY3RyaWM= 65965\nYW9z 65966\nIE92ZXJsYXk= 65967\nIEFDTFU= 65968\ncm5k 65969\nZXNzZXM= 65970\nIEx1eGVtYm91cmc= 65971\ncGFyc2VGbG9hdA== 65972\nIGd1dHM= 65973\nY2xhc3NpZmllZA== 65974\nIGRlZlN0eWxl 65975\nIFRjcA== 65976\ncGVhdGluZw== 65977\nQ2hhcnRz 65978\nX3Vy 65979\nX2xhdGVzdA== 65980\nKSEK 65981\nY2F0aW9u 65982\nLkdldGVudg== 65983\nKGxvb3A= 65984\nIHVubA== 65985\nX2R0eXBl 65986\nemXFhA== 65987\nKEpOSUVudg== 65988\nLmZldGNob25l 65989\nIHNpZ21vaWQ= 65990\nIE9MRA== 65991\nIE1pbmlzdA== 65992\n7YE= 65993\nIEvDtg== 65994\nIGZyYWN0aW9ucw== 65995\nIHNpeg== 65996\nPT09PT0K 65997\nLlByaW50V3JpdGVy 65998\nX0FkZHJlc3M= 65999\nIEF1ZGllbmNl 66000\nQ29tbw== 66001\nIEJydWlucw== 66002\nLmFjdGl2aXRpZXM= 66003\nIGFuY2VzdHJ5 66004\n0YPQu9GM0YI= 66005\nCVJldHVybg== 66006\ncHVu 66007\nIGdyYXBlcw== 66008\nSUxvZw== 66009\nIGRpam8= 66010\nIFBlcmtpbnM= 66011\nIFZNd2FyZQ== 66012\nX2F1dGhlbnRpY2F0ZWQ= 66013\nw650cmU= 66014\nb3ZlcndyaXRl 66015\nIEhk 66016\nIGdhbGF4aWVz 66017\nYWNodQ== 66018\nSHJlZg== 66019\nW0Q= 66020\nIHBhcmNl 66021\nTGF0TG5n 66022\nX3BhdHRlcm5z 66023\nIFNIT1JU 66024\nIHJ1bW91cnM= 66025\nY291bnR5 66026\nIEdSSUQ= 66027\nIFsv 66028\nIFNreXJpbQ== 66029\nRGF0YUdyaWRWaWV3VGV4dEJveENvbHVtbg== 66030\nIGNlbg== 66031\nIGN1Y3VtYmVy 66032\nLklOVA== 66033\nX0NPTkZJUk0= 66034\nIGN0bA== 66035\ncGVybA== 66036\naWxsb3M= 66037\nIEFDQQ== 66038\nIEdlb3JnZXRvd24= 66039\nX2NhbGxhYmxl 66040\nIENyYWZ0cw== 66041\nL2Nv 66042\nIGluYm91bmQ= 66043\nIFRlY2huaXF1ZXM= 66044\nc2V0Q2hlY2tlZA== 66045\nIHBuYW1l 66046\nY29tcHV0 66047\nU3RlZWw= 66048\nIGhhbmRoZWxk 66049\nIEFsYW0= 66050\nYWJzdHJhY3RtZXRob2Q= 66051\n6aKR 66052\nSU5Z 66053\nYmF0dGxl 66054\nX0VWVA== 66055\nIGNldXg= 66056\nIGF0b2Y= 66057\nIEFieXNz 66058\nX3ZhbGlkYXRvcg== 66059\nIGhhaXJz 66060\nVmVydGV4QXR0cmliQXJyYXk= 66061\nIGNvbW1vbnM= 66062\nLWJpbmQ= 66063\nTXVp 66064\nIGNvc21ldGljcw== 66065\nIG1pcmFj 66066\nLm1hcmtlcg== 66067\nU0NBTEU= 66068\nLldvcmQ= 66069\nLXVs 66070\nIERpdmVyc2l0eQ== 66071\nIEREUw== 66072\nLmN3ZA== 66073\nX3h5eg== 66074\nIENvbXB1dGVz 66075\nKGNsaWNrZWQ= 66076\nVEVNUExBVEU= 66077\nIHpvbmluZw== 66078\nIGZpbnM= 66079\nIFBK 66080\nZXh0Vmlldw== 66081\nQ2hhcmFjdGVyaXN0aWM= 66082\naWdhdG9ycw== 66083\nIHByb2NsYWlt 66084\nIHByaXN0aW5l 66085\nIGRhdGFzdG9yZQ== 66086\nIGRpc2NvdXJhZ2U= 66087\nX25zZWM= 66088\nIG5pbmV0ZWVudGg= 66089\nIGNlbHVp 66090\nSm9uYXRoYW4= 66091\nIGFtcGg= 66092\nIENyb3NzaW5n 66093\nIEh1bWFucw== 66094\nIEJvb2tlcg== 66095\nw6JjZQ== 66096\nZ2V0UG9zdA== 66097\nIE1vbnRlcg== 66098\nIEZsYXZvcg== 66099\nTWVkaWFUeXBl 66100\nIuKAlA== 66101\nIEFyY2hhZQ== 66102\nQHJldHVybg== 66103\nLWF3YXJl 66104\nb3J1 66105\nLVRoZQ== 66106\nYW1wbGVk 66107\nS0Y= 66108\nLlRlbXA= 66109\nIERyZQ== 66110\nKHtf 66111\ncG9seWdvbg== 66112\nIMOm 66113\nIERlZmVuZGVy 66114\n77yY 66115\nXyks 66116\nLlVuc3VwcG9ydGVk 66117\nX14o 66118\nKElEQw== 66119\nJHY= 66120\nIHdvcnRobGVzcw== 66121\nIFNFRw== 66122\naWxpa2k= 66123\nTm9BcmdzQ29uc3RydWN0b3I= 66124\nIE1lcmNo 66125\nIG5vcA== 66126\nIGZvcmdldHRpbmc= 66127\nIGRvcGFtaW5l 66128\nanVhbA== 66129\nZW9u 66130\nIFJlYXNvbnM= 66131\nc29ydEJ5 66132\nKCctJyw= 66133\nLXN5bmM= 66134\nZWNlZG9y 66135\nS1A= 66136\nKGNvb3Jk 66137\nKENoYXQ= 66138\nXCQ= 66139\nZXN0cmluZw== 66140\nY2Vm 66141\nLmhhbmRsZUVycm9y 66142\n24zYrw== 66143\n0YHQug== 66144\nIGhhbmRj 66145\nZWxpamtl 66146\nIFNwaXI= 66147\nIEJ1Y2tz 66148\nIFFSZWN0 66149\nU2V0Rm9udA== 66150\nLmV4ZWNTUUw= 66151\nOjoKCg== 66152\nIHN1aWNpZGFs 66153\nc2VlaW5n 66154\nIGNpZGVy 66155\nUHJvZ3Jlc3NEaWFsb2c= 66156\nIG1vbGRpbmc= 66157\nCXRyYWNl 66158\nIGVtcGhhc2l6ZXM= 66159\nIG11bHRpcGxlcw== 66160\nX1BU 66161\nX091dHB1dA== 66162\nY2FwaXRhbA== 66163\nTmVlZHM= 66164\nX0RJUkVDVElPTg== 66165\nLmlzVmlzaWJsZQ== 66166\nIHJlc3Rl 66167\nIG92YXI= 66168\nKHNoYXJlZA== 66169\nLWNvbXBvc2U= 66170\nLmJhY2t3YXJk 66171\nCXJlY3Q= 66172\nQW1hemluZw== 66173\nLmRpZFJlY2VpdmVNZW1vcnlXYXJuaW5n 66174\nU0VSVklDRQ== 66175\nIEluanVyeQ== 66176\nQnJhaW4= 66177\nIGF1c2dl 66178\nKHBl 66179\nLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 66180\nb3JwdGlvbg== 66181\nX01BSUw= 66182\nb2hh 66183\nIHNubw== 66184\nIGJvaWxlZA== 66185\naWxkZW5hZmls 66186\nIFdlbGZhcmU= 66187\nIFF1YXJ0eg== 66188\nIGNhcHRjaGE= 66189\nIFdFU1Q= 66190\nIE1hemU= 66191\nIGdyYXBoZW5l 66192\nIHBlcms= 66193\nIG1pc3RyZXNz 66194\nLkZvcm1TdGFydFBvc2l0aW9u 66195\nIGV4cGVyaW1lbnRhdGlvbg== 66196\nKikoKA== 66197\nIGJyb2FkY2FzdHM= 66198\nIHJlbW92ZUFsbA== 66199\nCUdVSQ== 66200\n5YOP 66201\nYWJjZGVmZ2hpamtsbW5vcA== 66202\nIHVuaW5z 66203\nQVNQ 66204\nK3c= 66205\nbXVy 66206\nIGRpbmU= 66207\nIGFyb3U= 66208\nIGVzY2FwZXM= 66209\nIFRvYmFjY28= 66210\nLm5hbWVk 66211\nIFBhdHJlb24= 66212\nX0ZBQ0U= 66213\nX3NwaW5uZXI= 66214\nbW92aW5n 66215\nX3ZvdGVz 66216\nT2hpbw== 66217\nLmVuY29kaW5n 66218\nRGVncmVlcw== 66219\nIlRv 66220\nIHByZXN0aWdl 66221\nb3NwaGVyZQ== 66222\nIExhbmNhc3Rlcg== 66223\n77yX 66224\nIG9uQ2FuY2Vs 66225\nIEhJUw== 66226\n0J7RiNC40LHQutCw 66227\nIG9yY2hlc3Ry 66228\nIHJlZnJlc2hlZA== 66229\nRGF0aW5n 66230\nKG11 66231\nIEplZA== 66232\nIEVkaXRvcmlhbA== 66233\nU2V0QnJhbmNoQWRkcmVzcw== 66234\nQ3BwVHlwZURlZmluaXRpb24= 66235\nIEJyb254 66236\nIGdhdGhlcmluZ3M= 66237\nICcnDQo= 66238\ncG9zdERhdGE= 66239\nIEZyYW0= 66240\nQ2xpcGJvYXJk 66241\nIFhQYXRo 66242\ncmF5cw== 66243\nIGJha2VyeQ== 66244\nIHJvd0NvdW50 66245\nIGxvd3M= 66246\nYW5kV2hlcmU= 66247\nX3ZlcnNpb25z 66248\nIEd1bm4= 66249\nIHdlZXI= 66250\nIGNvbnRleHR1YWw= 66251\nIEtleUNvZGU= 66252\nIFNhc2thdGNoZXdhbg== 66253\nIFBoaWxseQ== 66254\nIE1vdXRo 66255\nIGRvUG9zdA== 66256\nIHBlcmNlbnRpbGU= 66257\nIGJ1ZmZlclNpemU= 66258\nKGZyZXE= 66259\nJHNtYXJ0eQ== 66260\naWVydGU= 66261\naXNzYW50 66262\nX2Zwcw== 66263\nIGludGltYWN5 66264\nX2Jvb2tpbmc= 66265\nIGRlY29tcG9zaXRpb24= 66266\ndW5pY2lwaW8= 66267\nIE5TSW5kZXhQYXRo 66268\nIEtS 66269\nIHR1cmJpbmU= 66270\nLXByb20= 66271\nX0NBUlQ= 66272\nKGNvb3Jkcw== 66273\nZWNvbQ== 66274\nIGNvd2FyZA== 66275\nIHdheXBvaW50 66276\nLUNvbGE= 66277\nIHByb2ZvdW5kbHk= 66278\nIEVSUA== 66279\nYm91bmRhcnk= 66280\nIHBvb3Jlcg== 66281\nL2V4YW1wbGU= 66282\nIHJlbmNvbnRy 66283\nIG5pY2Vy 66284\n54E= 66285\nLWNoYWlu 66286\nIEVudGl0eVN0YXRl 66287\nIGdyYWRpbmc= 66288\nQUxJR04= 66289\nIFBpY2tz 66290\nLmFr 66291\nLXZlY3Rvcg== 66292\nIEVudHJpZXM= 66293\nIFNlcmdpbw== 66294\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 66295\nT0RC 66296\nIOW9 66297\nIGNvcm9uYXJ5 66298\nIHNoYXZlZA== 66299\nIGFxdWU= 66300\nZW1wbG95ZXI= 66301\nIHBhcmNo 66302\nIG1lYXN1cmFibGU= 66303\nIGJvaXM= 66304\nam9pbmluZw== 66305\nIHZvbGNhbm8= 66306\nOk0= 66307\nLnRocmVzaG9sZA== 66308\nIERveWxl 66309\ndmVyYm9zaXR5 66310\nIOKWug== 66311\nIHNwb3VzZXM= 66312\nIHJlc3VtZXM= 66313\nTmF0 66314\nek0= 66315\nX0VuYWJsZQ== 66316\nIFVTRUQ= 66317\nIENhcmV5 66318\nCWZw 66319\nUGF0cmljaw== 66320\nIE9zdw== 66321\nUG9zc2libGU= 66322\nLmxlYWRpbmc= 66323\nYWhydW5n 66324\n4pmqCgo= 66325\nCQkJCQkJCQkJIA== 66326\n44CC44CM 66327\nLmFkZEVkZ2U= 66328\nIGVjeA== 66329\nJ0xCTA== 66330\nIFRDTA== 66331\nIGJpcnRocw== 66332\nIHRoZWF0cmljYWw= 66333\nIHBpag== 66334\nZ3JlYXRlcg== 66335\nIEZTdHJpbmc= 66336\nQkVE 66337\n7ZmY 66338\nLkNhc3Q= 66339\nQ1g= 66340\nL01haW4= 66341\ncGVhdGVy 66342\nIHBlcnN1YXNpdmU= 66343\nY29udG8= 66344\neGxzeA== 66345\nX0FCUw== 66346\nIEJ1bg== 66347\nbWFuYWdlZFR5cGU= 66348\n0LPQvg== 66349\nIFNjYWxh 66350\ncmFkb3I= 66351\nIHJlY29nbml6YWJsZQ== 66352\ndHJ1 66353\nIHRq 66354\nXE1hcHBpbmc= 66355\nX0JPQVJE 66356\nIHRvSnNvbg== 66357\nIGJvd2Vs 66358\nKWQ= 66359\nJ30p 66360\nKGhXbmQ= 66361\naHJz 66362\nY2FudA== 66363\nX18oKQoK 66364\nIGludGVycm9nYXRpb24= 66365\nbGljYXRpdmU= 66366\nCQkJCgo= 66367\nIFR3aW5z 66368\nIEFP 66369\nQmlyZA== 66370\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 66371\ncGVyaGFwcw== 66372\nb2ZpbGU= 66373\nIHBlbmM= 66374\nIHRyZWVOb2Rl 66375\nIHRvcGljYWw= 66376\nLXByaXZhdGU= 66377\n54m5 66378\nIERpc2N1c3M= 66379\nIGRlc24= 66380\nUnVh 66381\nLlZFUlRJQ0FM 66382\n44CN44Go 66383\nSUZPUk0= 66384\nIGNvdXJ0eWFyZA== 66385\nINGB0LXRgA== 66386\nICMjIwo= 66387\nIGVtcG93ZXJpbmc= 66388\nIEZhY2lsaXRpZXM= 66389\nXCIsXA== 66390\nvZQ= 66391\nOk9iamVjdA== 66392\nIFZvdGVz 66393\naXNlbA== 66394\nIGV1Y2g= 66395\nb3JzdA== 66396\nKENsb25l 66397\nLmNvb2tpZXM= 66398\nJHRtcA== 66399\nKGluZGljZXM= 66400\nZXJnZW5jeQ== 66401\nIHBsYWd1ZWQ= 66402\nIERpYQ== 66403\neWNsaWM= 66404\nfSkp 66405\n6rK9 66406\nIGR1ZWw= 66407\nIGhldGVyb3NleHVhbA== 66408\nLmFkZENvbXBvbmVudA== 66409\nU0VDUkVU 66410\nbGVybw== 66411\nY29uc3RyYWludHM= 66412\nIGdldENvbm5lY3Rpb24= 66413\nIExlYmVucw== 66414\nIFBvbg== 66415\nIENocm9uaWNsZXM= 66416\nICAgICAgICAgICAgICAgICAgICAgICAgDQo= 66417\nIE1vdXJpbmhv 66418\nIG9jY3VwYW5jeQ== 66419\nX3NsYXZl 66420\nT1JJWkVE 66421\nCVk= 66422\nLmhpZ2hsaWdodA== 66423\nX3NlbnNpdGl2ZQ== 66424\nIHNwZWN0cm8= 66425\nLmVuY3J5cHQ= 66426\nIHNwb2lsZXJz 66427\nLlNpemVNb2Rl 66428\nIHByb2Zlc3Npb25hbGlzbQ== 66429\nPklu 66430\nRXhwaXJlcw== 66431\nQXU= 66432\nIEhWQUM= 66433\ncmVsYXRpb25z 66434\nIEFUSw== 66435\nX0dFTkVSQUw= 66436\nIFNpZ2h0 66437\nIGtpdGNoZW5z 66438\nOlJlZ2lzdGVy 66439\nIGVkbQ== 66440\nIHRvbGVyYXRlZA== 66441\nIFNFU1NJT04= 66442\naWVyeg== 66443\nIElOU1Q= 66444\nLnBhdGhz 66445\nIHBlcnBldHJhdG9ycw== 66446\nZWJw 66447\ncGVjdGluZw== 66448\nZWR1Y2F0ZWQ= 66449\nIFBpb25lZXI= 66450\nX1JFVg== 66451\nIGJ1c3R5 66452\nc3RhdHVzZXM= 66453\nUmVzcG9uZA== 66454\nc2h1ZmZsZQ== 66455\nIFRpbmRlcg== 66456\nRXhhY3RseQ== 66457\naWxsaXNlY29uZA== 66458\nINC30L3QsNGH0LXQvdC40LU= 66459\nKEFjY291bnQ= 66460\nLiY= 66461\naXpy 66462\nYXNzdW1pbmc= 66463\nCU9wdGlvbmFs 66464\nU2VuaGE= 66465\nIGVucm9s 66466\ndHVy 66467\nIGFycm9nYW50 66468\nIEpPYmplY3Q= 66469\nb2xpdGhpYw== 66470\nbWFwcGVk 66471\nIHRpcHBlZA== 66472\nLlVQREFURQ== 66473\nw6htZXM= 66474\nR05VQw== 66475\nV1g= 66476\nIG1vbmtz 66477\nLmJvcmRlcldpZHRo 66478\nIFNodXRkb3du 66479\nIEhhcm1vbnk= 66480\nY2xhc3NpZmljYXRpb24= 66481\nIGRlcXVldWVSZXVzYWJsZUNlbGw= 66482\nIF07DQo= 66483\nLkdlbg== 66484\nIGxhdm9ybw== 66485\nIExlb25hcmRv 66486\nICYp 66487\nIGRlcG9pcw== 66488\nIFZvbHQ= 66489\nRXRo 66490\nIExlb25l 66491\nIE5lZGVybGFuZA== 66492\nIEVYVFJB 66493\nUmVzb2x2ZWQ= 66494\nIHBlbmluc3VsYQ== 66495\nX1ZN 66496\nR2Vy 66497\n2KfYrw== 66498\nLnByb21wdA== 66499\nLmFsaWdu 66500\naW5nZ2E= 66501\nZmlsbXM= 66502\nSEFORExF 66503\nIGNhcnRz 66504\nKFNvbWU= 66505\nPEF1ZGlv 66506\nIGVubGFyZ2VtZW50 66507\nIGdyb2Nlcmllcw== 66508\nLWhvbGRlcg== 66509\nIGlycml0YXRpb24= 66510\nQ29tbXVuaWNhdGlvbg== 66511\nIHByaW1hcmllcw== 66512\naHR1Yg== 66513\nX2luaWNpbw== 66514\nIGNvb3JkaW5hdGluZw== 66515\nKHF1 66516\nIGZhaXM= 66517\nIHZpc3Rv 66518\nZ3VpZGVk 66519\nIHZsYW4= 66520\nIGVzcHJlc3Nv 66521\nw6h0ZQ== 66522\nc2VoZW4= 66523\nX3Blbmc= 66524\nIHJvb2Zpbmc= 66525\nIEFsaXZl 66526\nQXhpc1NpemU= 66527\nIHN0dW4= 66528\nIHJlc3RlZA== 66529\ndWxsZXRz 66530\nIE1hbGF5c2lhbg== 66531\nLFVuaXR5RW5naW5l 66532\nIGVudnk= 66533\nJ107DQoNCg== 66534\nIE9zdA== 66535\nX2p1bXA= 66536\nIGNvbnRyYXNlw7Fh 66537\nIng= 66538\nCVBhZ2U= 66539\nKVsi 66540\nIFNJUA== 66541\nIEdlb2dyYXBoaWM= 66542\nIGNhdWN1cw== 66543\nX1RFUg== 66544\n4oCdOw== 66545\nUG9zdEV4ZWN1dGU= 66546\naW1zaG93 66547\nIENPTVBBTlk= 66548\nIE5lYWw= 66549\nIEhlYXJpbmc= 66550\nKGFjdG9y 66551\nQmlk 66552\nLlBS 66553\nLlByb2R1Y3Rz 66554\nIEVtbQ== 66555\nIOab 66556\nIHB1bHNlcw== 66557\nX0VW 66558\nL2V4cA== 66559\nX21vdGlvbg== 66560\nIGdiYw== 66561\nIG5hdmlnYXRpb25Db250cm9sbGVy 66562\nIENvdXJ0cw== 66563\nIEljb25EYXRh 66564\nd3U= 66565\nX3Jm 66566\nIFJhZ2U= 66567\nLWZsYXQ= 66568\nIEhpbXNlbGY= 66569\nX2NodW5rcw== 66570\nIG92ZXJzaA== 66571\nIGNpZg== 66572\nKElz 66573\ncGVha2Vy 66574\nIENQVXM= 66575\naXJlY3Rvcg== 66576\nLHRpdGxl 66577\nLnNldERlc2NyaXB0aW9u 66578\nIGVhcnRocXVha2Vz 66579\nIHdu 66580\nZ2x5cGg= 66581\ndWx1bWk= 66582\nIHNwZWVkeQ== 66583\nIGVzcGFjaW8= 66584\nIGVtdWxhdGU= 66585\nIFwiJA== 66586\nX0lORg== 66587\nY2FsbG9j 66588\nLXF1ZXJ5 66589\nKHZhbHM= 66590\nIHNlYWI= 66591\nIGhhdm9j 66592\nIEludGVyc3RhdGU= 66593\nIHRyaWFuZ3VsYXI= 66594\nYmluZGluZ3M= 66595\nCQkJCQkgICAgIA== 66596\nIAkg 66597\nYmNyeXB0 66598\nIGNyZWRpdG9ycw== 66599\nIHNlbWlm 66600\nbGxl 66601\naWVuemE= 66602\nIEtlbGxlcg== 66603\nIG1vbnN0cg== 66604\nIE1hcmNvcw== 66605\nKHJlaW50ZXJwcmV0 66606\nIGhpdmU= 66607\nU2Ny 66608\nX2hyZXN1bHQ= 66609\nIOyhsA== 66610\nIFNxbERhdGFSZWFkZXI= 66611\nYW5ub3VuY2U= 66612\nX3ByZWZlcmVuY2Vz 66613\nIHRydXN0cw== 66614\nRXJvdA== 66615\nLXdvcmtlcg== 66616\nIHR3ZWVu 66617\nIFN0cmVldHM= 66618\ngq3soJw= 66619\nIEZyYW56 66620\nIOKApi4= 66621\nVUlUZXh0RmllbGQ= 66622\nLmdldEl0ZW1z 66623\nIHRvbHVh 66624\n4oCcT3Vy 66625\nIHPhu5E= 66626\nIHZpcnR1ZXM= 66627\nIHBvdWx0cnk= 66628\nPXJvdw== 66629\nY29kZWQ= 66630\nTm9TdWNo 66631\nIGtvZA== 66632\nbHNp 66633\nIGtldG8= 66634\nIGdyb3VwTmFtZQ== 66635\nYXNu 66636\nIHVuY29tcA== 66637\nIHRleHRpbGU= 66638\ndG9vbFN0cmlw 66639\nLlBvcGVu 66640\nIHByb3N0aXR1dGU= 66641\nIHByb21vdGVy 66642\nIjt9Cg== 66643\nIGNvbGxpZGVy 66644\nQnJva2Vy 66645\nZGF0YXNldHM= 66646\nCU5TU3RyaW5n 66647\nYW5nbGVy 66648\nUklFUw== 66649\nYXRvbXM= 66650\nIHJlbmRleg== 66651\nYXBv 66652\nIOuE 66653\nLmdj 66654\nIFNPTUU= 66655\nIGZnZXRz 66656\nR0xF 66657\nIHphbA== 66658\nIE9wcG9zaXRpb24= 66659\naGFuZGxlU3VibWl0 66660\nX21hdGg= 66661\nIHNwcmU= 66662\nIHNob3J0ZW5lZA== 66663\nIGNhdmVz 66664\nU01T 66665\nLWNvbnNjaW91cw== 66666\nIFNhdmVz 66667\nLkJhY2tncm91bmRJbWFnZUxheW91dA== 66668\nIGVsZWN0cm9tYWduZXRpYw== 66669\nKGl0ZXJhdG9y 66670\nIHVuYmU= 66671\namVjdG9yaWVz 66672\nIG1lZGlhbnRl 66673\nIMOubnQ= 66674\nIiwt 66675\nIEFTTQ== 66676\n6K6w5b2V 66677\nIGNvbmZpbmVtZW50 66678\n4oCmCgoK 66679\nRXhjZXB0aW9ucw== 66680\nLW1ham9y 66681\nIFZhbmlsbGE= 66682\nIExPQ0FUSU9O 66683\nIGVsdXNpdmU= 66684\nVUFSSU8= 66685\nIElOTElORQ== 66686\nIHByb2R1Y3ROYW1l 66687\nX3F1ZXJpZXM= 66688\nLi4uIjsK 66689\nIFhpYW8= 66690\nV2luZG93VGl0bGU= 66691\nbGV0dGVz 66692\nIHBlcnBldHVhbA== 66693\nU2V2ZXJpdHk= 66694\nIEFjaGlldmVtZW50 66695\nw6JuY2lh 66696\nIHJlbWluZGVycw== 66697\nc29ydGFibGU= 66698\nIGFmZm9yZGVk 66699\nIGluZmx1ZW5jaW5n 66700\nIFR1bm5lbA== 66701\nLmxlYXJuaW5n 66702\nIFF1w6k= 66703\ncGhldGFtaW5l 66704\nLkJBRA== 66705\nLm1ldGFtb2RlbA== 66706\nLWRldmljZQ== 66707\nIEtvbnRha3Q= 66708\n4pSB4pSB 66709\nLXN1bW1hcnk= 66710\nKCc8Pw== 66711\nKTw9 66712\nIHdpc2VseQ== 66713\nX290 66714\nOm1vZGVs 66715\nIFVX 66716\nIE9wZW5TU0w= 66717\nIEpwYVJlcG9zaXRvcnk= 66718\nQ29uZXhpb24= 66719\nVE9U 66720\nLmNyZWF0ZWRBdA== 66721\nKHRyYWluaW5n 66722\nIGJpc2hvcHM= 66723\nIHZlbnR1cmVz 66724\nLkVucXVldWU= 66725\nIFRoZXJtYWw= 66726\nIEJyZXdlcnk= 66727\nb3Rlbg== 66728\nIEZhdGFs 66729\nX3N1cHBseQ== 66730\nIGNvbmRpdGlvbmVk 66731\nIHN1cGVyaW9yaXR5 66732\nIElicmFoaW0= 66733\nIGNvcnBv 66734\ndW91c2x5 66735\nIFByYWN0aWNhbA== 66736\nLy9b 66737\nIEFmcmljYW5z 66738\nIEJhaHJhaW4= 66739\nIHN0ZXJpbA== 66740\nIENsYXNzTm90Rm91bmRFeGNlcHRpb24= 66741\nLlJlZ2lvbg== 66742\nIHRyYW5zaXRpb25hbA== 66743\nIGludGVycHJldGluZw== 66744\nLlNvdW5k 66745\nIGZyb250YWw= 66746\nIGhhcnZlc3Rpbmc= 66747\nfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4= 66748\nYXRhaXJl 66749\nLkh0dHBTdGF0dXM= 66750\nS00= 66751\nIEVyb3Rpc2NoZQ== 66752\nIGVyb3Rpc2tl 66753\nRmlnaHQ= 66754\nUGFja2FnZU5hbWU= 66755\nIENBQ0hF 66756\nd2luZ0NvbnN0YW50cw== 66757\nIFppbW1lcm1hbg== 66758\nL2Nhcg== 66759\nIFF1cmFu 66760\nTWV0YWw= 66761\nIHVzZXJNYW5hZ2Vy 66762\nIG1hc3Rlcnk= 66763\nKFVVSUQ= 66764\nIHZpZXdXaWxsQXBwZWFy 66765\nIHN1bW1lZA== 66766\nKC0o 66767\nICAgICAgIAoK 66768\nVGFrZW4= 66769\nIGNsb2Nrd2lzZQ== 66770\nIENhZsOp 66771\nKGxldHRlcg== 66772\nIENyb3NzUmVm 66773\nIEFzdG9u 66774\nIEFzc2VtYmx5VmVyc2lvbg== 66775\n6Z2e 66776\nbnRz 66777\nICQoJ1s= 66778\nX1JBVElP 66779\naWNpZW50ZQ== 66780\nIHJpY2h0aWc= 66781\nIHBlZGln 66782\nKGl4 66783\n0YHRi9C7 66784\nQXNzaWduYWJsZUZyb20= 66785\nYm91bmRlZA== 66786\nIGFsa2Fs 66787\nX3ByaWNlcw== 66788\nIGfFgg== 66789\nYW5jaGlzZQ== 66790\nX3JlY2VpdmVy 66791\nSUdBVElPTg== 66792\nX3B1bGw= 66793\nIFN0YXRpc3RpY2Fs 66794\nX3Rvb2xiYXI= 66795\nYW1pZGU= 66796\nIEFzeW5jVGFzaw== 66797\ncmV0YQ== 66798\nIOyi 66799\nIFJFQUxMWQ== 66800\nIGJ1cnN0cw== 66801\nIElucXVpcnk= 66802\nIGJpZ290 66803\nc2FuaXRpemU= 66804\nIEhvbWVy 66805\nUXXDqQ== 66806\nIFJvdXRpbmc= 66807\nLmNvbGxlY3Rpb25WaWV3 66808\nIEJpbGxpb24= 66809\nU1RSVUNUT1I= 66810\nLmVqYg== 66811\nIGVuY2g= 66812\nLnNldFRpbWVvdXQ= 66813\nUnVi 66814\nLXJvYWQ= 66815\nLm91dHB1dHM= 66816\nY29udGVzdA== 66817\nIHNwaGVyZXM= 66818\nIHJlc3VycmVjdA== 66819\nIi4i 66820\nIElyaXM= 66821\nIOya 66822\nIFhL 66823\nIFJhcml0eQ== 66824\nIElTZXJ2aWNl 66825\nYXRoYQ== 66826\nIOWH 66827\nIHByZXZhaWw= 66828\nCXBw 66829\nLkxv 66830\nZ2V0V2lkdGg= 66831\nIHd3 66832\nIHdpY2h0aWc= 66833\nQEdldHRlcg== 66834\nIEpheXM= 66835\nIHNwZWN1bGF0aXZl 66836\nKGF0dA== 66837\nIHRlZGlvdXM= 66838\nIHNjcmF0Y2hlcw== 66839\nIHBlbMOtY3Vs 66840\nIGJvcm91Z2g= 66841\nIG3Dsw== 66842\nUmVwcmVzZW50 66843\nYXRvcml1bQ== 66844\nKENhbWVyYQ== 66845\nIGNvbHVtbk5hbWU= 66846\nIHJlaXRlcmF0ZWQ= 66847\nIENhc3Rpbmc= 66848\nLmdldEhlYWRlcg== 66849\nIOKAnFs= 66850\nIEp1aWNl 66851\nY2h1 66852\nLkhUTUw= 66853\nIEFudHdvcnQ= 66854\nR0x1aW50 66855\nCUl0ZXJhdG9y 66856\nIEFOQUw= 66857\nIHVucG9wdWxhcg== 66858\nKExvY2FsZQ== 66859\nIG1pdGlnYXRpb24= 66860\nIGFkcmVz 66861\n4bq3 66862\nfSx7Cg== 66863\nIFNjaHdhcg== 66864\nX1BBSVI= 66865\nPigpLAo= 66866\nb3V2 66867\nIEFsZg== 66868\neEVG 66869\n55yB 66870\nIGVzY3Jp 66871\nTE9VUg== 66872\nU0VMRg== 66873\nIFRtYXg= 66874\nVHJl 66875\nbG90cw== 66876\nICguLi4p 66877\nXSsk 66878\nIGFtZXJpYw== 66879\nL3JlZmVyZW5jZQ== 66880\nIE9keXNzZXk= 66881\nIE1pbmVz 66882\nIGFnb3Jh 66883\nIHByb3BoZWN5 66884\nIE9wcG9ydHVuaXRpZXM= 66885\ncHJvZmVzc2lvbmFs 66886\nKHByb3h5 66887\ncGhhbnVtZXJpYw== 66888\nIEVkaXRlZA== 66889\nb2xvZ25h 66890\nLmlzT3Blbg== 66891\nKHZlcnRpY2Vz 66892\nIFJpY2t5 66893\nX292ZXJsYXA= 66894\nPjs= 66895\nLkRPTQ== 66896\ne31f 66897\nIENPTVBVVA== 66898\ncmVkaXJlY3RUbw== 66899\nIHNoYWtlbg== 66900\nIHJhdGlvbg== 66901\nIG5lbGw= 66902\nX2Jj 66903\nIE5lcg== 66904\nYW5kUmV0dXJu 66905\nIGVyZWN0ZWQ= 66906\nQ2hpZWY= 66907\nIGRpbmVybw== 66908\nIGphc21pbmU= 66909\nLS0tLS0tLS0tLS0tLQo= 66910\nZmFybQ== 66911\nIEhhdGU= 66912\nVEFTSw== 66913\nQU5ORVI= 66914\nJ11dXQo= 66915\nIE5pZ2Vs 66916\naGliaXQ= 66917\nIFFUZXh0 66918\nLkxlbg== 66919\nIHRlxbw= 66920\nc2xpZGVz 66921\nZmVsdA== 66922\nIFJFVg== 66923\nX2hvbGQ= 66924\nIENvdXBsZQ== 66925\nZXNjYXBlZA== 66926\nLWV4cG9ydA== 66927\nPkk= 66928\nZXdpc2g= 66929\nKEFwaQ== 66930\nICghWw== 66931\nTm91cw== 66932\nT1RPUg== 66933\nIHNlYWxpbmc= 66934\nV2ll 66935\nIGthbm5zdA== 66936\nK3htbA== 66937\nIG14QXJyYXk= 66938\nIGFkbWlyYXRpb24= 66939\nLm5i 66940\nIGpld2Vs 66941\nLlRlYW0= 66942\nIHByb3NlY3V0ZQ== 66943\nLnhtbGJlYW5z 66944\nY2h3 66945\nKGJhY2tncm91bmQ= 66946\nIEF2aXY= 66947\nCWZpbGw= 66948\nIGRpc3Bhcml0eQ== 66949\n4Lo= 66950\nX0FQUEVORA== 66951\nIFB2UA== 66952\n44OQ 66953\nIFZpdmU= 66954\nIGdyYW5kc29u 66955\nLmFkZEVsZW1lbnQ= 66956\nQXRvbWlj 66957\nIHByaW1hcnlLZXk= 66958\nIGNvbnRpbmVudHM= 66959\nIEZ1Y2tpbmc= 66960\nJScK 66961\nQG1haWw= 66962\nIGN1bHR1cmFsbHk= 66963\nYW5nYW5lc2U= 66964\n7KCE 66965\nZm9sbG93ZXJz 66966\nIHVybg== 66967\nIHJhY2tz 66968\nIFNBRkU= 66969\nLy8NCg0K 66970\nKCIvew== 66971\nX0lOSVRJQUw= 66972\nX1Jlc3BvbnNl 66973\nRXZlbnREYXRh 66974\nJz4k 66975\nc3RhcnRz 66976\n4Kk= 66977\nIHRoYWltYXNzYWdl 66978\nIHNwZWNpYWxpemF0aW9u 66979\nIOyEpOyglQ== 66980\nZWRv 66981\nIGNvbXBlbnNhdGVk 66982\nX2NoYXJzZXQ= 66983\nfS57 66984\nL2VudGl0aWVz 66985\nX2Zr 66986\nLS0tLS0tCgo= 66987\nYXNjYXI= 66988\nIGNlbGxGb3JSb3dBdEluZGV4UGF0aA== 66989\nIFByb3Bvc2Fs 66990\nIE90dG8= 66991\nIF9fX19f 66992\nICIqIg== 66993\nIHRvb2xraXQ= 66994\nIGV4cGVjdGFuY3k= 66995\nRG93bkxpc3Q= 66996\nLWRh 66997\nIHByb3ZvY2F0aXZl 66998\nIG1laW8= 66999\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== 67000\nKCgpPT57Cg== 67001\nJGxpbms= 67002\naW5jYXJl 67003\nIGljeQ== 67004\nIEhpc3Q= 67005\nQWNjZXB0ZWQ= 67006\nIGNsb25lcw== 67007\nIFFB 67008\nIGNvbmZvcnQ= 67009\nIHByb3ByaW8= 67010\nIFZvZw== 67011\nKG1hcms= 67012\nX1NlYXJjaA== 67013\nIGVuZHdoaWxl 67014\nICQj 67015\n44GX44GL 67016\nX0xU 67017\nSW5zdGFuY2VJZA== 67018\nYmFyZA== 67019\ncm5l 67020\ncmVnb3I= 67021\nIG5vcmdl 67022\nXDo= 67023\n0YDRg9C3 67024\nLmJ0bkFkZA== 67025\nIHBpbGxvd3M= 67026\nIFBhcmFtZXRlckRpcmVjdGlvbg== 67027\nSGFuZGxlcw== 67028\nIGRlYWxpbmdz 67029\nIGNvbnZleA== 67030\nIENoYXJpdHk= 67031\nLk51bWVyaWNVcERvd24= 67032\nIFNrZWxldG9u 67033\nIFp1Y2tlcmJlcmc= 67034\nZXNlbg== 67035\nIEZBQQ== 67036\nX3N0ZQ== 67037\nIGh1bWlk 67038\nam0= 67039\nY2hn 67040\nLmdldExvY2Fs 67041\nIHRhbmRlbQ== 67042\naXN0bGVz 67043\nX210 67044\nLmFjY291bnRz 67045\nIEluc3BlY3Rpb24= 67046\nIEZyYXVk 67047\nIGvDvA== 67048\nIHN5bmNocm9ub3Vz 67049\nIFJpY2FyZG8= 67050\nIEh1ZQ== 67051\nIENvbm5lY3Rpb25z 67052\nSU1FTlQ= 67053\nb2NoYXN0aWM= 67054\nXGRhdGE= 67055\nIEVudGVycHJpc2Vz 67056\nLXNpbXBsZQ== 67057\nIGltYWdlRGF0YQ== 67058\nIFVtYg== 67059\nLXNjcmlwdA== 67060\nL2dlbmVyYWw= 67061\nQVBU 67062\nIFR1dA== 67063\naW1pemF0aW9u 67064\nIGlkYWRl 67065\nIEtlbQ== 67066\nZWxzaWY= 67067\nLkFMSUdO 67068\nIFRvcmllcw== 67069\nIEJhc2ls 67070\nb2dvbmFs 67071\naGFjaw== 67072\nTnVsbE9yRW1wdHk= 67073\nIiksCgo= 67074\n44OD44OI 67075\nICclJw== 67076\nX1JG 67077\nZWdvdA== 67078\nLmFzcGVjdA== 67079\nKFByb2plY3Q= 67080\nTEVOR1RI 67081\ncGxlbWVudGFyeQ== 67082\nX3ByZWRz 67083\nIEhvbGRz 67084\nY2Fycmllcg== 67085\nCWxheWVy 67086\nQXR0YWNoZWQ= 67087\nLXByZXNpZGVudA== 67088\naW5kaA== 67089\nJ10uJyI= 67090\nLkFDQ0VTUw== 67091\nIENFTlRFUg== 67092\nUXVhbGlmaWVk 67093\nIG9zdHI= 67094\nLlN5bWJvbA== 67095\ndGFodW4= 67096\nIExBTkc= 67097\nX2J1c2luZXNz 67098\nCVN0YXJ0 67099\nZXJyZQ== 67100\nIGFzaGVz 67101\nIEFkdmVydGlzZW1lbnQ= 67102\nLkhvdw== 67103\nIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 67104\nIG9ibGl2 67105\nIGJsZWVk 67106\nIHN2bw== 67107\nLm5vZGVOYW1l 67108\nIGl0ZW1OYW1l 67109\nIEJBTks= 67110\nw61jdWxvcw== 67111\nIEVtbXk= 67112\nIERvbWluaWNhbg== 67113\nJylbJw== 67114\nIHJlYWxsb2M= 67115\ndWxzZXM= 67116\n6L6T5Ye6 67117\nIE9mZmVyaW5n 67118\n64ql 67119\nLXByb2dyYW0= 67120\nINGB0L7QvtCx0Yk= 67121\nTU9W 67122\nIG5vZGVJZA== 67123\n0LXQvw== 67124\nZmx1aWQ= 67125\nIHRlYXNl 67126\nw7hyZQ== 67127\nIGNvbXJhZGVz 67128\nIHVucmVsaWFibGU= 67129\nIHBvc3RJZA== 67130\nZ2V0SUQ= 67131\nb2dyYXBocw== 67132\nVGFuaw== 67133\nIFFWRVJJRlk= 67134\nIGZsb2F0ZWQ= 67135\nX1RISVM= 67136\nY2ltaWVudG8= 67137\nIE5pY2Fy 67138\nc2hy 67139\nQm91bmRpbmdCb3g= 67140\nIGlub3JkZXI= 67141\nIEdsb3Nz 67142\nV2l0aFRpdGxl 67143\ndW5jaW8= 67144\nIHBlcnNpc3Rz 67145\nIGRpcmVjdHM= 67146\nYWNjacOzbg== 67147\nU2FtcGxlcg== 67148\nIGJsYWNrbGlzdA== 67149\nIGFEZWNvZGVy 67150\nIGludm9rZXM= 67151\nX3NraW4= 67152\nPklm 67153\ndHJ1bmNhdGU= 67154\nLlNpbg== 67155\nc29vbg== 67156\nIGRpc2Zy 67157\nCVZlYw== 67158\nIyNf 67159\nLnNjaG9vbA== 67160\nIGJsaW5kcw== 67161\nIGFjYWI= 67162\nIHBhdGhldGlj 67163\nIHZvbGNhbmlj 67164\nIHJkZg== 67165\nIGN1bHRpdmF0ZWQ= 67166\nIFVJTmF2aWdhdGlvbkNvbnRyb2xsZXI= 67167\nIGlwdA== 67168\nIGdsYW5k 67169\nIGV2aWRlbnRseQ== 67170\nUGh5cw== 67171\nIHN3YW1w 67172\nIGltYWdlTmFtZQ== 67173\nLkxheWVy 67174\ndWZl 67175\nLFsn 67176\nIENyaW1zb24= 67177\n6YCg 67178\nPGZvb3Rlcg== 67179\nIGJpa2luZw== 67180\nINC00LDQvdC90YvQtQ== 67181\nbW92ZXM= 67182\nY3Jj 67183\naWxsYXRpb24= 67184\nIGxhdXJl 67185\n0YDQsNCx0L7Rgg== 67186\n0YPQug== 67187\nIENhaW4= 67188\nIHB5cw== 67189\nIGNvbGxpZGU= 67190\nIHxffA== 67191\nKHNwYW4= 67192\nIGdpbmc= 67193\nIG9iZWRpZW5jZQ== 67194\nb3V0ZXJz 67195\nU29vbg== 67196\nIFdoaXRuZXk= 67197\nIEltcG9ydHM= 67198\nOlVJVGFibGVWaWV3 67199\nKiY= 67200\nIGJr 67201\nV2l0aEVycm9y 67202\nLWV4dA== 67203\nX1JET05MWQ== 67204\nX3RyYWNraW5n 67205\nbm9vcGVuZXI= 67206\nw7xucw== 67207\nIEd0a1dpZGdldA== 67208\nc2ti 67209\nU0FWRQ== 67210\nT2Jz 67211\nKCcuJylb 67212\nIGF1dGhvcmVk 67213\nLS8= 67214\nTG91aXM= 67215\nLmdldE91dHB1dFN0cmVhbQ== 67216\nIGdlbmVyYWxpemVk 67217\n7Yw= 67218\nIGFydGlzYW4= 67219\nKGNwcw== 67220\nIERtaXQ= 67221\n0LvQuNGG 67222\nLkltYWdlTGF5b3V0 67223\nIHN1Y2hlbg== 67224\nXX0s 67225\nLmNvbGxpZGVy 67226\nVGFiUGFnZQ== 67227\nXT1b 67228\naHlkcm8= 67229\nX3N0cmlw 67230\nIGxpY2tpbmc= 67231\nIGJvb3N0cw== 67232\nIHNrZXB0aWNpc20= 67233\nIGpvZ28= 67234\nIGNvbXBldGVk 67235\nIOuCtA== 67236\nTm9kZVR5cGU= 67237\nWEY= 67238\nIHBvc3NpYmlsaXQ= 67239\nLWNvcHk= 67240\nIHRyaXR1cg== 67241\nIEF0dGFja3M= 67242\nIG7Dqw== 67243\nSURBRA== 67244\nb2dyYXBoaWVz 67245\nVGltZVN0YW1w 67246\nb3R5cGluZw== 67247\nLUFwcg== 67248\nINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjw== 67249\nICI7Ig== 67250\nIEhhbGU= 67251\nL2FwaXM= 67252\nIDpdCg== 67253\nX2hkbA== 67254\nIERpYWw= 67255\nCUNvbmZpZw== 67256\nX0ZSQUdNRU5U 67257\nX0VkaXQ= 67258\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 67259\nIGNhbmRpZGFjeQ== 67260\nIENvbXByZXNzaW9u 67261\nX2xvc3Nlcw== 67262\nKj4oJg== 67263\nSW50ZWdyYWw= 67264\nIHBhcm9keQ== 67265\nIGluaXRpYWxpc2U= 67266\nZmlsbHM= 67267\nIGFsdHJp 67268\nX0VMRU1FTlRT 67269\nYWRhc3RyYXI= 67270\nY29ycmVv 67271\nIHdhdHQ= 67272\nX0RSVg== 67273\nIEZvcmdvdA== 67274\nIGdldENvbnRleHQ= 67275\nIHNob3J0YWdlcw== 67276\nIE9DVA== 67277\nd2VldGFsZXJ0 67278\nIE9wZW5z 67279\nKmw= 67280\nIEtpdHR5 67281\n4oCZw6l0 67282\nIFBpY2Fzc28= 67283\nLnRvQnl0ZUFycmF5 67284\n0L7Qu9GD0Yc= 67285\nIERFTg== 67286\n5aeT5ZCN 67287\nV2ludGVy 67288\nYW50YW4= 67289\nX19b 67290\nUHJpbQ== 67291\nIHJvb2Z0b3A= 67292\nIEJpbGxib2FyZA== 67293\ndGVzdENhc2U= 67294\ncHJvZHV0bw== 67295\nLXRodW1i 67296\nIHJlc2V0cw== 67297\nZ2Vibg== 67298\nPkVycm9y 67299\nLmRlcGFydG1lbnQ= 67300\nIGVhcnJpbmdz 67301\nIENhcm91c2Vs 67302\nKGV4YW1wbGU= 67303\nCWVt 67304\nXENvbnRhaW5lcg== 67305\nIEVsdmlz 67306\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 67307\nRW5nbGFuZA== 67308\nY3JlZGl0ZWQ= 67309\nX2NvbnN0cnVjdG9y 67310\nIGxvcg== 67311\nIERhd3Nvbg== 67312\nQnVybg== 67313\nIEJyaWdhZGU= 67314\nIE11dGV4 67315\nIFRyYW5zaXRpb25hbA== 67316\nIE1vdXNlRXZlbnQ= 67317\nZ3Jvdw== 67318\nLm1pbnV0ZQ== 67319\nIEdNTw== 67320\nPVtdLA== 67321\nIHN1c2hp 67322\nIGFlc3RoZXRpY3M= 67323\nT0NVUw== 67324\nIFNFTEY= 67325\nIEFzc2VydGlvbkVycm9y 67326\nIE1DVQ== 67327\nIGhpbnRUZXh0 67328\nIHNlYXc= 67329\nbmdsZQ== 67330\nIGV4cGVsbGVk 67331\nUFJPUEVSVFk= 67332\nKS48Lw== 67333\nLW9wZXJhdGlvbg== 67334\nIEltbXVu 67335\nIGxpY2Vucw== 67336\naWJpYQ== 67337\nIGJpZXRlbg== 67338\nIGdyaXBz 67339\nQ0hBTk5FTA== 67340\nX0VSUk9SUw== 67341\nX3JlY3Vyc2l2ZQ== 67342\nVWx0aW1hdGVseQ== 67343\nIE1hamVzdHk= 67344\nIGRlYWN0aXZhdGU= 67345\nIEVYQU1QTEU= 67346\ndWNpb25lcw== 67347\nIGN1cnJlbnRWYWx1ZQ== 67348\nIGV2YWx1YXRlcw== 67349\nL0dyYXBoaWNz 67350\nInRleHQ= 67351\nX3BhbGV0dGU= 67352\nIFRNUA== 67353\nIEJlZHM= 67354\nLkNvcw== 67355\n4Lix4LiZ 67356\nPXRvcmNo 67357\nIFBBQ0tBR0U= 67358\naWxsYXJk 67359\nLmNw 67360\nleyduA== 67361\nLWFwcHJvdmVk 67362\nIE5vcnRod2VzdGVybg== 67363\nPHRleHRhcmVh 67364\nIENvbXBhdGlibGU= 67365\nX1JEV1I= 67366\nLlF1YW50aXR5 67367\nQElk 67368\nX29yaWVudGF0aW9u 67369\nZ2V0VXJs 67370\nIHRyYW5zbGF0aW5n 67371\nIFdlYXZlcg== 67372\nIGpzb25BcnJheQ== 67373\nIGVtYmxlbQ== 67374\nLklzTnVsbA== 67375\nIENoYXJ0cw== 67376\nW119 67377\nZ2Fl 67378\nX25lc3RlZA== 67379\ndGVtcHM= 67380\ncGF0aG5hbWU= 67381\nQ1c= 67382\nLXdyaXR0ZW4= 67383\nIFBBUks= 67384\nKGNvbmQ= 67385\nX2FsYXJt 67386\nIGdlcmU= 67387\nIEdpeg== 67388\nIE5nYg== 67389\nIC5f 67390\nYXBwaW5lc3M= 67391\nIERlcGxveW1lbnQ= 67392\naVBhZA== 67393\nIl1d 67394\nIHN0cnN0cg== 67395\nIHRvbnVtYmVy 67396\nKGRs 67397\nCXdvcmQ= 67398\nW3Rv 67399\nX0ZJWEVE 67400\nRXhwaXJhdGlvbg== 67401\nOnJldHVybg== 67402\nT250 67403\nPlBsZWFzZQ== 67404\nZ2V0VGl0bGU= 67405\nLnNwbGl0ZXh0 67406\nY29tYmluZWQ= 67407\nT2Q= 67408\nIG5vdmVsdHk= 67409\nIlM= 67410\nIHN2bQ== 67411\nQ292ZXJhZ2U= 67412\nIEh1dA== 67413\nIHJlc2lzdGVk 67414\nIGVsbG8= 67415\nIG3DtmNodGU= 67416\nS2F5 67417\nLmxpa2U= 67418\nY2Npb25l 67419\nIHJlc2VtYmw= 67420\nRGVhdGhz 67421\nIGVwaXQ= 67422\nKHJnYg== 67423\nLkNsYXNzZXM= 67424\nINC00L7RgdGC 67425\nY2FwdHVyZXM= 67426\nXStc 67427\nYW1pZW50 67428\nIFBhc28= 67429\nLlNlbmRNZXNzYWdl 67430\nIFJlbmF1bHQ= 67431\nIE5hcmVuZHJh 67432\ndG91dA== 67433\nIGhhZGRl 67434\nIFR3ZWVu 67435\nw6VkZQ== 67436\nIG91dGZpZWxk 67437\nLz48Lw== 67438\nQFw= 67439\nIER1cmFudA== 67440\nIGFicmU= 67441\nX3N0b3J5 67442\nIHBlcmZ1bWU= 67443\nQ3BwVHlwZURlZmluaXRpb25TaXplcw== 67444\nINC/0LDRgNCw0LzQtdGC 67445\nY2hlbWVz 67446\nIFNhZGRhbQ== 67447\ncHJlbm9t 67448\ndXNwZW5kZWQ= 67449\nIEJlbmVmaXQ= 67450\nIHNjZXB0 67451\nX01vdmU= 67452\nIE5hag== 67453\nLU9u 67454\ncnVk 67455\nSW1hZ2VQYXRo 67456\nwq4s 67457\nIGFuYWx5c2Vk 67458\nIE9H 67459\nZWxsZWljaHQ= 67460\nYmlyZHM= 67461\nZWt0ZQ== 67462\nIEFsaXNvbg== 67463\nIGF0aGVpc3Q= 67464\neyU= 67465\nYWJo 67466\nLXBob3Rv 67467\naW5zdHJ1bWVudA== 67468\nIGhpbnRlZA== 67469\nIE9mZmxpbmU= 67470\nKSIpOwoK 67471\nX1BSRUY= 67472\nIHN0eWxpc3Q= 67473\nIEt1YmVybmV0ZXM= 67474\nIGZlcnY= 67475\nCgoKCgoKCgoKCgoKCgo= 67476\nKCI9Ig== 67477\nLmdldE0= 67478\nIG5vdGV3b3J0aHk= 67479\nIHNjb3V0aW5n 67480\nX3RyYW5zbGF0ZQ== 67481\nIGJlZ2lubmluZ3M= 67482\nIEx1bw== 67483\nIHFs 67484\nX2FsaWduZWQ= 67485\nIGVydw== 67486\ndWFycw== 67487\nX1BhdGg= 67488\nLicuJA== 67489\nIGhvYw== 67490\nIGRlcnA= 67491\nbG9p 67492\nIE1jS2lu 67493\n6K+05piO 67494\nLz0= 67495\nTGlua0lk 67496\nc3RkZGVm 67497\ncmVkdWNlcnM= 67498\naXNhbnM= 67499\nLmhpc3Q= 67500\nJy8+Cg== 67501\nIFRveGlj 67502\nIGRpc2FwcGVhcmluZw== 67503\nIGNpcw== 67504\nKGRv 67505\nIG1haW5TY3JlZW4= 67506\nX0JBTks= 67507\nIGRlbW9uc3RyYXRvcnM= 67508\nIFBhbGV0dGU= 67509\ndWVseQ== 67510\nUmFyZQ== 67511\nIHJlc2lkaW5n 67512\nIGFtYmllbnRl 67513\nIG1pc20= 67514\nLXF1ZXN0aW9u 67515\nIG9wcHJlc3NlZA== 67516\nIGxldHJh 67517\nPGR5bmFtaWM= 67518\nIEZvdG9z 67519\nLXBvbGljeQ== 67520\naXN0ZW0= 67521\nLmV4Y2hhbmdl 67522\nc3RyZQ== 67523\nJC8s 67524\n7ZWY6riw 67525\nJAoK 67526\nIFJlbmU= 67527\nIHRvdXRlZA== 67528\nLUNvcmU= 67529\nIENyYW4= 67530\nIFRyYWRlcg== 67531\nIGRldw== 67532\nIGZsYXA= 67533\nCWZpbGVuYW1l 67534\nIGlubWF0ZQ== 67535\nKE1vY2s= 67536\nIFNvYg== 67537\naXNibg== 67538\nIG5vZQ== 67539\nIEZvcmJpZGRlbg== 67540\nIGVsZXM= 67541\nIGRpbmc= 67542\nX3Nh 67543\nKSovCg== 67544\nYXJpZQ== 67545\nIFN1cHBvcnRz 67546\nIG1vZHVsYXRpb24= 67547\nIGVuc2w= 67548\nIFNoYWRvd3M= 67549\ncHJpbmNpcGFs 67550\nYW5nZW50 67551\nLUphbg== 67552\nIFBhbnRz 67553\nLHRy 67554\nIGZpdHRl 67555\nIGdhcm1lbnRz 67556\nTWFyZ2lucw== 67557\nTFRS 67558\nIE1peQ== 67559\ndmVudHVz 67560\nIE3DtmdsaWNo 67561\nW2F0dHI= 67562\nL3Jlc3BvbmQ= 67563\nIHR0aw== 67564\nIG9sZHXEnw== 67565\nIENvbnNl 67566\nUHJlbWl1bQ== 67567\nIGZyYW5jYWlzZQ== 67568\nX2hvcml6b250YWw= 67569\nX2li 67570\nIEZhcmU= 67571\nIGhhcnZlc3RlZA== 67572\nZW5kaXI= 67573\nKGhpdA== 67574\nPiovCg== 67575\nIElSZXBvc2l0b3J5 67576\neWxpZQ== 67577\nIGRldGVjdHM= 67578\nOm5v 67579\n4pi0 67580\nIGRpc2XDsQ== 67581\nIHVuc2VyZW4= 67582\nIG1vY2tpbmc= 67583\nc291dGg= 67584\ncmF0ZXM= 67585\nIGh5cG9j 67586\nIFNob3J0bHk= 67587\nIEJsYWNrcw== 67588\n0YLQuNGA0L7Qsg== 67589\nIEFTQVA= 67590\ncmViYmU= 67591\naWVj 67592\nLkFkZERheXM= 67593\nIGVwaXM= 67594\nLWluZmxhbW1hdG9yeQ== 67595\nLW5ldA== 67596\nIHBhbGw= 67597\n65Q= 67598\nIGlzc3VhbmNl 67599\nIGNvbnRlbnRpb3Vz 67600\nLkFyZWFz 67601\n0LjQu9GM 67602\nIGNvbnRpZ3VvdXM= 67603\nW2FjdGlvbg== 67604\nIGV4cHJlcw== 67605\nISIpCgo= 67606\nVUxP 67607\nIHdyZQ== 67608\nIHN1YmRpdg== 67609\nIHR1cm5hcm91bmQ= 67610\nIGFjY2Vs 67611\nIFVuaXY= 67612\nIFVuaXZlcnNpZGFk 67613\nc2V0dA== 67614\nZGVzY3I= 67615\nLkdlbmVyYXRpb24= 67616\nIHBhdHJpb3Q= 67617\nIGZhcw== 67618\nKioqKgo= 67619\nUVA= 67620\nIOWN 67621\nb3BwZWw= 67622\nIGp1ZWdvcw== 67623\nLmRyYXdTdHJpbmc= 67624\nLWNvbmZpcm0= 67625\nCSAgICAgICAgICAgICA= 67626\nPFByb3Bz 67627\nIGZhbWlsbGU= 67628\nIEhlbG1ldA== 67629\nZXJ0aWFyeQ== 67630\nYXRoaQ== 67631\nIGN1bHRpdmF0ZQ== 67632\nIGR1cGxpY2F0aW9u 67633\nIHNweU9u 67634\nKi8pCg== 67635\nIEh1bmdlcg== 67636\nT3J0aA== 67637\nIHBpbnBvaW50 67638\nIEhhZw== 67639\nIHRpbWV0YWJsZQ== 67640\nbWFyZ2luVG9w 67641\nIHJlY2lwcm8= 67642\nZmVsbA== 67643\nIFBlcnNpc3RlbnQ= 67644\n44Gp 67645\ncGx1cmFs 67646\ncXVldWVk 67647\nIGdyYWNpYXM= 67648\nw6F0aWNv 67649\nIGhhcmRzaGlw 67650\nIEFwYXJ0bWVudHM= 67651\nIEp1bms= 67652\nIFJldmU= 67653\nX01zaw== 67654\nIHN1cHJh 67655\nIEFUUA== 67656\nIHNldFNob3c= 67657\n5a2X56ym5Liy 67658\nIE5vdHRpbmdoYW0= 67659\nU3RldmVu 67660\nIE11bmQ= 67661\ncmFuZ2Vz 67662\nIHVwbG9hZHM= 67663\nIGJmcw== 67664\ncHo= 67665\ndWx0aW1hdGU= 67666\nIEVmZmljaWVuY3k= 67667\nQU1J 67668\n5b6E 67669\nX1JFUEVBVA== 67670\nIGFjYWRlbWlh 67671\nLnRvb2xTdHJpcEJ1dHRvbg== 67672\nVG9FbmQ= 67673\ncnZpbmU= 67674\nIFRoeQ== 67675\nIEVsZWN0b3JhbA== 67676\nIFJFUVVJUkVE 67677\nIHBsdW5nZQ== 67678\nIFJldm9sdXRpb25hcnk= 67679\nIFRlbnQ= 67680\nIGdyZW5hZGU= 67681\nIjpbeyI= 67682\nIG1vdXI= 67683\nUG93 67684\nIGV2YW5nZWxpY2Fs 67685\nVEVDVEVE 67686\nIG92ZXJ0dXJu 67687\nCUlucHV0 67688\ncmVjb21tZW5k 67689\nJUM= 67690\nIHNsYWc= 67691\nIEJoYXI= 67692\nX2VuY3J5cHQ= 67693\nIFdhcmZhcmU= 67694\nKGFnZQ== 67695\nQVRFR09SSUVT 67696\nbWlsZQ== 67697\nIGhlYXZlbmx5 67698\nYW1tZXI= 67699\nKCkpWw== 67700\nYWRlcmE= 67701\naGc= 67702\nIExBVw== 67703\nIHBhY2thZ2VOYW1l 67704\nX3R5cGVEZWZpbml0aW9u 67705\nKGJl 67706\nREJOdWxs 67707\nX3Rhcg== 67708\nIGhldXJpc3RpYw== 67709\nIFdhbnRlZA== 67710\nIFN0dWI= 67711\nIGtpdHQ= 67712\nUkVD 67713\nIHBhc2Fy 67714\nLm5ld0J1aWxkZXI= 67715\nCWdyYXBo 67716\naW9zYQ== 67717\nLmNvbHVtbkhlYWRlcg== 67718\nIHNldE9wZW4= 67719\nIFRoaXJ0eQ== 67720\nICIlLg== 67721\nQWxiZXJ0 67722\nIHNhbWE= 67723\nIHJvY2tpbmc= 67724\nQ29tcGxl 67725\nTVY= 67726\nfCgpCg== 67727\nX3JlYWRz 67728\nKHZhcmFyZ2lu 67729\nb3Vsb3VzZQ== 67730\nIFNJTUQ= 67731\nIGNhcmJvaHlkcmF0ZQ== 67732\nd2hvbGU= 67733\nLE5vbmU= 67734\ni+ivlQ== 67735\nIENoYW5k 67736\nY3phcw== 67737\nX3F1ZXJ5c2V0 67738\nIGV4aXN0ZW50aWFs 67739\nIGVkaWJsZQ== 67740\nIGFnaWxpdHk= 67741\nIFdpbGxpcw== 67742\nIGh5bQ== 67743\nIEJyaWxs 67744\n0LjRhQ== 67745\nIE5vdEZvdW5kRXhjZXB0aW9u 67746\nICgoKQ== 67747\nQVBTSE9U 67748\nIHN1YnN0YW50aXZl 67749\nX3R5cGVEZWZpbml0aW9uU2l6ZQ== 67750\nIHZhY2FuY2llcw== 67751\nRU5HSU5F 67752\nIGFuZGVycw== 67753\nIHN5bWI= 67754\nIGV0cmVl 67755\nKS5f 67756\nIHRyYW5zcG9ydGluZw== 67757\naW1wcw== 67758\nL2NvcA== 67759\nYWN0YWJsZQ== 67760\nX2ZsdXg= 67761\nIG5ld0luc3RhbmNl 67762\nYXRvaXJl 67763\nIGNvbHVtbkluZGV4 67764\nIEdpbw== 67765\nIHN1YnRpdGxlcw== 67766\nLldpbkZvcm1z 67767\n0LvRj9C10Lw= 67768\nIGFsZXJ0ZWQ= 67769\nIHN0cmlwcGluZw== 67770\nd2VuZHVuZw== 67771\nIE1ldGhvZEludm9jYXRpb24= 67772\nRXJyb3JIYW5kbGVy 67773\nU2Nyb2xsYmFy 67774\nUG9ydGZvbGlv 67775\nY29uc3Vt 67776\nIENPTU1PTg== 67777\nTGY= 67778\nX2Jhc2Vk 67779\nb2NhbHk= 67780\nIGVmZmV0 67781\ndnZt 67782\ncmlwc2k= 67783\nIGZsb3VyaXNo 67784\nY2h0ZXI= 67785\nPT09PT09PT09Cg== 67786\nIHJlcXVlcg== 67787\nLnF1ZXN0aW9ucw== 67788\nKCI/ 67789\nIHBvc1g= 67790\nIFBDUg== 67791\nIE9yZ2FuaXphdGlvbnM= 67792\ncHLDvA== 67793\nRXhhbQ== 67794\nIEluY29ycG9yYXRlZA== 67795\nX3BocmFzZQ== 67796\nIHByYXllZA== 67797\nIGhvbWVvd25lcg== 67798\nIFRhag== 67799\neng= 67800\nIElkZWFsbHk= 67801\nX01BQ0hJTkU= 67802\nIFJlbW92aW5n 67803\nQ29lZmZpY2llbnQ= 67804\nIGVkdWNhdGluZw== 67805\nID8+Jg== 67806\nIHBvdXJz 67807\naXJhbQ== 67808\nX3BlYWs= 67809\nIG5lc3Rpbmc= 67810\nYWJ5dGU= 67811\nbmF0dXJl 67812\nIGFmcw== 67813\nIFJvbw== 67814\nY2FyZ28= 67815\nb2JqZXQ= 67816\nIGZyZWVpbmc= 67817\ncXVha2U= 67818\nRGVuc2l0eQ== 67819\nIGRlc2NyaWNhbw== 67820\nLyoqKioqKioq 67821\nIGRhc2hlZA== 67822\nIGdyb8Of 67823\nb29reQ== 67824\nIFBFT1BMRQ== 67825\nX1Bvc3Q= 67826\nIGNlcnZpY2Fs 67827\nIEFkanVzdGFibGU= 67828\nZW5zdWFs 67829\nIFJldmlzZWQ= 67830\nKHJlZmVyZW5jZQ== 67831\nCUJhc2U= 67832\nZXNzaW0= 67833\nTWFpbnQ= 67834\nIGdldFNpemU= 67835\nIFNhbmR3aWNo 67836\ncmFkaWVudA== 67837\nc2luaw== 67838\nOi8vJw== 67839\nX3R0 67840\nRlBT 67841\nIEFybWVuaWFu 67842\ncHJldlN0YXRl 67843\nX0xJTkVT 67844\nIHRpZ2h0ZW4= 67845\nPFs= 67846\nXTw8Ig== 67847\nIFRyYWZm 67848\nIGxpcXVpZHM= 67849\nIGFyY3M= 67850\nX0NvbW1hbmQ= 67851\nQHByb3RvY29s 67852\nLWlzaA== 67853\nIHJ1YmJlZA== 67854\nQkJD 67855\nL2ZpcmViYXNl 67856\nQXBwQmFy 67857\nPFg= 67858\nIFNJTkdMRQ== 67859\nLlN0YXR1c0ludGVybmFsU2VydmVyRXJyb3I= 67860\nIHZlcnRl 67861\nL3F1ZXJ5 67862\nIGdldENvbmZpZw== 67863\nIERpcmVjdFg= 67864\ncGh5c2ljcw== 67865\neWNvcA== 67866\nIGJyZWFrZXI= 67867\nLXZvbHVtZQ== 67868\nZGF0YVRhYmxl 67869\n4oCZZQ== 67870\ncmlvdHQ= 67871\nIEV0ZXJuYWw= 67872\nZ2V0SGVpZ2h0 67873\nIG9uSXRlbUNsaWNr 67874\nIHF1YXRlcm5pb24= 67875\nIGtpbmt5 67876\nZGVzZXJpYWxpemU= 67877\nKFNwcmluZw== 67878\nIHBlYWNlZnVsbHk= 67879\nX0RldmljZQ== 67880\nKE1hdHJpeA== 67881\nacOocmVtZW50 67882\nKHR5cA== 67883\nLnZhYWRpbg== 67884\nLmdldE1ldGhvZA== 67885\nIOKAnQoK 67886\nIHRocmVhZGVk 67887\nIEZhbW91cw== 67888\nIEdhbWI= 67889\nIOyngA== 67890\nINCk 67891\nIGZha3Q= 67892\nIGVjaHQ= 67893\nX3Vi 67894\nLkpwYVJlcG9zaXRvcnk= 67895\nIHVuZ2U= 67896\nLWVuZGluZw== 67897\nIENBTUVSQQ== 67898\nY3JlZGVudGlhbA== 67899\nIFBhc3Nwb3J0 67900\nCVJUREJH 67901\nIGV4dHJhZA== 67902\nLW9yaWdpbg== 67903\nIHNhY3JpZmljZWQ= 67904\nIFNjaHVsdHo= 67905\nIFR1cnRsZQ== 67906\nLmNlbnRlclg= 67907\nIHNob3djYXNpbmc= 67908\nIGJ6dw== 67909\neXJv 67910\naXNOdWxs 67911\nLmlzRGlyZWN0b3J5 67912\nbWFpbnQ= 67913\nX2Jp 67914\nIFNwcmluZ2Vy 67915\nfSgpCgo= 67916\naXNzdWVy 67917\nLWFybQ== 67918\nZXNr 67919\nbGluaGE= 67920\nIGtvcnQ= 67921\nYWphcw== 67922\nYWxpbms= 67923\nKEJ1dHRvbg== 67924\nIFJlc3RvcmF0aW9u 67925\nIGluY3I= 67926\nIFpob3U= 67927\nCSAgICAgICAgCQ== 67928\nIERpc2NsYWltZXI= 67929\nIGt2aW5ub3I= 67930\nIERhcmU= 67931\nIDwtPg== 67932\n6K+m 67933\nCQkJCQkJCQkJCQo= 67934\nLkNsYW1w 67935\nCXNjb3Bl 67936\nIE11bQ== 67937\nPDw8PDw8PA== 67938\nL3t7 67939\nX2FydGlzdA== 67940\nIFJlYWN0aW9u 67941\nIE5pY2tlbA== 67942\nX1JlbW92ZQ== 67943\nKCgoKA== 67944\n64yA 67945\nIGR5bmFzdHk= 67946\nIFRocm93cw== 67947\nIENvdWw= 67948\nX3JuZw== 67949\nIERvaw== 67950\nLmxpc3RWaWV3 67951\nIFR1Y3Nvbg== 67952\nKHRvaw== 67953\nIFBoaWxpcHBl 67954\nVG9TaG93 67955\nIGRpZXRh 67956\nIFVsdHI= 67957\nLlRpY2s= 67958\nIEdldFR5cGU= 67959\naWV0ZQ== 67960\nIExlYWg= 67961\nSGFyZHdhcmU= 67962\nIENvbXByZWhlbnNpdmU= 67963\nQ09NTU9O 67964\nIGluZHVzdHJp 67965\naXJpY2Fs 67966\nLWJlZHJvb20= 67967\nIGd5cm8= 67968\nINC60L7RgA== 67969\nIC0vCg== 67970\nY291cg== 67971\nIEJydXNoZXM= 67972\nTXVsdGlwbGllcg== 67973\nIHVzZXJkYXRh 67974\nIFJlY29nbg== 67975\nIG9ibGlnYXRlZA== 67976\nIExldmlu 67977\nYW5jZXN0b3I= 67978\nIG1lbmluZw== 67979\nIFVk 67980\nLGpzb24= 67981\nKGFzc2lnbg== 67982\nIG5kYXJyYXk= 67983\nX2Nvcm5lcg== 67984\nQEFsbEFyZ3NDb25zdHJ1Y3Rvcg== 67985\n6aqM6K+B56CB 67986\nYWRvcnM= 67987\nIHJlc3BvbmRlbnQ= 67988\nR09SSVRI 67989\nIHRlbmdv 67990\nIHNldE1lc3NhZ2U= 67991\nIElQTw== 67992\nYXJyYXlz 67993\nIEFHQUlO 67994\nJ1s= 67995\nICItLy8= 67996\nw6Rt 67997\n44CCXA== 67998\nLm9uY2U= 67999\nY3VycmVudFRpbWU= 68000\nR292 68001\nIGdldG9wdA== 68002\nbWx4 68003\nIFRvbmU= 68004\nJ11dOwo= 68005\nIHByZWRhdG9y 68006\nV3k= 68007\nL2VudGl0eQ== 68008\nIG1hbnRyYQ== 68009\nKT49 68010\nb2dyYWQ= 68011\nIG1lbGFu 68012\nIHNvcnRCeQ== 68013\nIERFRklORQ== 68014\nUHJvdGVjdGVk 68015\nY2RlY2w= 68016\nJz4iLiQ= 68017\nPGN2 68018\nY3JpcmU= 68019\nLVRydW1w 68020\nIHVjZmlyc3Q= 68021\nY2Fzc2VydA== 68022\nIGFja25vd2xlZGdlbWVudA== 68023\nIElOVg== 68024\nIFVOVQ== 68025\nLnNxdWFyZXVw 68026\nIFNheA== 68027\ncmV0dGU= 68028\nKCkKCgoK 68029\nIERhdGFCYXNl 68030\nIFBhdHJpb3Q= 68031\nX1Jvdw== 68032\nIEV4aGliaXRpb24= 68033\nIGRldGFpbmVlcw== 68034\nIFN0cmluZ0lP 68035\nX0RFTg== 68036\nTW9kaWZpZXJz 68037\nYXNhcg== 68038\naXJ0aW5n 68039\nIHRyYW5xdWls 68040\nKGVuYw== 68041\nIOOCsw== 68042\nbmNvZGVy 68043\nX3VudXNlZA== 68044\nIEJpYW4= 68045\nVmVyYg== 68046\nX2V4Y2VycHQ= 68047\nL2V4cG9ydA== 68048\nIFNleHQ= 68049\nRHM= 68050\nQU1QTA== 68051\nT2ZTdHJpbmc= 68052\nX3RyYWNrcw== 68053\nd2o= 68054\nb3Rvbmlu 68055\nIElURQ== 68056\nSVZFTg== 68057\nLW9yaWdpbmFs 68058\nIEZJTkFM 68059\nX18pCgoK 68060\nIGVuc2U= 68061\nIFV0dA== 68062\nOioq 68063\nIFN1cnJleQ== 68064\nIEthaXNlcg== 68065\nYWRtaW5pc3RyYXRvcg== 68066\nLWxhcmdlc3Q= 68067\nIGxldHp0ZW4= 68068\nIGNoYWluZWQ= 68069\nJ0g= 68070\nIGRvY3VtZW50aW5n 68071\nIExlY3R1cmU= 68072\nUkg= 68073\nb2xsYXBzZWQ= 68074\nc2tpcnRz 68075\nZWxkZXI= 68076\nIFNpeHRo 68077\nIGFsbGVnaWFuY2U= 68078\nSVNPU3RyaW5n 68079\nVXNhZ2VJZA== 68080\nLmhhcmR3YXJl 68081\nIHBhcmk= 68082\nIHfDpGhyZW5k 68083\nIHJkcg== 68084\nIGhqZW0= 68085\nTE9PUg== 68086\nIExQQVJBTQ== 68087\nINC80L7QttC10YI= 68088\nIGhvbWFnZQ== 68089\nb3V0c2lkZQ== 68090\nIENoYXJTZXQ= 68091\nPEdhbWU= 68092\n77yZ 68093\nX01VVEVY 68094\nKSkvKA== 68095\nX3Jlb3JkZXJlZA== 68096\ndGV4dElucHV0 68097\nQU5DRUQ= 68098\nIFRlZQ== 68099\nIGNvcm5lcmJhY2s= 68100\nUXVlcnlTdHJpbmc= 68101\nIGxvbmdpdHVkaW5hbA== 68102\nIEhvbGlkYXlz 68103\nQUJDREVGRw== 68104\nLktleVByZXNz 68105\nLnVs 68106\neWRybw== 68107\nIFRhdGU= 68108\nCXJvdXRlcg== 68109\nc3BvdHM= 68110\nIHBhdWw= 68111\nLXByZXY= 68112\nIGtub3dpbmdseQ== 68113\nIEt1cmRz 68114\nIEV1cm9w 68115\nLmNlcnQ= 68116\nQklH 68117\nKGNvZWZm 68118\nIENsYXVz 68119\nL2V4YW1wbGVz 68120\nIEZhcm1z 68121\nIC8vKA== 68122\nU1BBTg== 68123\nIGNpcmN1cw== 68124\nIE1JUw== 68125\nIFRyYWl0cw== 68126\nLWNsZWFy 68127\nIHJlZ2ltZW4= 68128\nIGJhY2tncm91bmRJbWFnZQ== 68129\ndXNhaGE= 68130\nX01ldGFkYXRhVXNhZ2VJZA== 68131\nIHJoZQ== 68132\nQ2xpbg== 68133\nIERvbWluaWM= 68134\nLm5leHREb3VibGU= 68135\nKGRldGFpbA== 68136\nVGhyZWFkUG9vbA== 68137\nIENhcnBlbnRlcg== 68138\nc29ydGluZw== 68139\nIGdvdmVybm9ycw== 68140\nIHNpbmdlcnM= 68141\ndW5saW5r 68142\nIHJpbmdpbmc= 68143\nIHNjaGVtYXRpYw== 68144\nIGVycm1zZw== 68145\nIGJlYg== 68146\nLiIr 68147\nIEluY3JlYXNlcw== 68148\nIkFsbA== 68149\nIGFjb250ZQ== 68150\nemlh 68151\nLlRleHRDaGFuZ2Vk 68152\nIFRvRG8= 68153\nLDopOwo= 68154\nbmFnZQ== 68155\nY2hs 68156\nb3dlbA== 68157\nIGdlcmFkZQ== 68158\nX2ZmdA== 68159\nIGVzdGFtb3M= 68160\nU1RBUg== 68161\nIGRpc2d1c3Q= 68162\nZ3Jhbg== 68163\ncG9ydHVuaXR5 68164\nIGF1dG9iaQ== 68165\ne317Cg== 68166\nIENvdXBvbnM= 68167\nX0dBSU4= 68168\nIFRDSEFS 68169\nL3Bhc3M= 68170\n55Sx 68171\nIGZvb3R3ZWFy 68172\nKGJvdW5kcw== 68173\nYXB1cw== 68174\nY2l0ZQ== 68175\nQk9PVA== 68176\nIENvZGVj 68177\nbG9ndWU= 68178\nLXByb3BlcnRpZXM= 68179\nYXV0b21hdGlvbg== 68180\nIFNob2U= 68181\nc3BlY3Q= 68182\nKG1t 68183\nIEtldA== 68184\nW3BhcmFt 68185\nIGJhc2ls 68186\nIEFuZ3VsYXJGaXJl 68187\nIGFkdmVudHVyb3Vz 68188\nX1VDbGFzcw== 68189\nIGluZHVsZ2U= 68190\nCWN1ZGE= 68191\nIGluc3VsdGluZw== 68192\nLkV4cHJlc3Npb25z 68193\nIG9uQ3JlYXRlT3B0aW9uc01lbnU= 68194\nVUVM 68195\nIGJpdGluZw== 68196\nKCFf 68197\nIEVuY3ljbG9wZWRpYQ== 68198\nIGJlcnQ= 68199\nIFZlcmE= 68200\nIEJpYmxpY2Fs 68201\naW5zaWNz 68202\nX1NJTVBMRQ== 68203\nIHNhbGlkYQ== 68204\ncmVxdWVzdGVk 68205\nIENvbXBvc2l0aW9u 68206\nLkF0b2k= 68207\nKEtleUV2ZW50 68208\nZXJlYQ== 68209\nIGRlcG9ydGVk 68210\nIFF1cg== 68211\nIG5pcHBsZXM= 68212\naXNBcnJheQ== 68213\nINGD0LrQsNC3 68214\nIGJyaW5r 68215\nbWV0cm9z 68216\nRW51bWVyYXRpb24= 68217\nIEJ1aWxkcw== 68218\nZXJ0b3M= 68219\nIHNhaW50cw== 68220\nLmRlcGxveQ== 68221\nZXRoZXJldW0= 68222\nIGtpbmRlcmdhcnRlbg== 68223\ndmFuaXplZA== 68224\nIGNvbWJpbg== 68225\nIHBvdXZvaXI= 68226\nS2lu 68227\nYXLEsQ== 68228\nIC4uLi4u 68229\n77y+ 68230\nLkdv 68231\nIHF1aXJreQ== 68232\nxLFuZGFu 68233\nIGFjdGlvblR5cGVz 68234\nIFFVRVJZ 68235\nVGF5bG9y 68236\nIFJL 68237\ndGF0 68238\nLnBhY2tldA== 68239\nIElNUE9SVEFOVA== 68240\nIGN1c2hpb25z 68241\nYnVsaw== 68242\nZHVjdGl2ZQ== 68243\nYmVuZWY= 68244\nb2NyaXN5 68245\nIGZ1ZXJvbg== 68246\nIGN1cnNlcw== 68247\nIGZpbGluZ3M= 68248\nZWxpZXI= 68249\nKD86 68250\nX2RyaXZl 68251\nIGNvbnRhY3Rv 68252\nIFBhcmt3YXk= 68253\ndmlkZXM= 68254\nZ25l 68255\nYXZhZ2U= 68256\nXFwu 68257\nZnVsbE5hbWU= 68258\nZGxs 68259\nIHNob2Nrcw== 68260\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 68261\nX3B4 68262\nQFdlYg== 68263\nLlBlcnNpc3RlbmNl 68264\nIHN1bms= 68265\nLnRvb2x0aXA= 68266\nYXV0aWNhbA== 68267\nTmV3c2xldHRlcg== 68268\nIHdhaXRlcg== 68269\nIGlucXVpcmU= 68270\n0LDQtdGC0YHRjw== 68271\nKCdfXw== 68272\ndG9n 68273\nSUVOVEFUSU9O 68274\nIGNvbXBhbnlJZA== 68275\nIEJhc2ljcw== 68276\nCUpMYWJlbA== 68277\nIG1hY09T 68278\nIE1hdHM= 68279\nX3RlbA== 68280\nLXByZWZpeA== 68281\nIG11dGF0ZQ== 68282\nfScp 68283\nY2hlbmc= 68284\nIE1pbGl0 68285\nIiY= 68286\nZmluZGluZw== 68287\nIERhdGFMb2FkZXI= 68288\nLkdQSU8= 68289\nIExldnk= 68290\nIHNuZWFrZXJz 68291\nIGNyw6lk 68292\nYXduZXI= 68293\neGlh 68294\nL3NpbXBsZQ== 68295\nQ0hS 68296\nIGZsb3RhdGlvbg== 68297\nLnNlbnNvcg== 68298\nQnJhemls 68299\nIFNlYXNvbnM= 68300\nIFNwZWFr 68301\nLWJhbGw= 68302\nIE11dGF0aW9u 68303\ndWtrYW4= 68304\nIE9tYWhh 68305\n4oCZb24= 68306\nIEN1b21v 68307\nIEp1ZGljaWFs 68308\nIGNoZWNrcG9pbnRz 68309\nIEZyZW0= 68310\nCUlk 68311\nZWdyaXR5 68312\nX2Fm 68313\nQE5vQXJnc0NvbnN0cnVjdG9y 68314\nIHRhYmVsYQ== 68315\nWyM= 68316\nbm90YQ== 68317\nIEZhY3RvcnM= 68318\nKGdyb3Vwcw== 68319\naXN3YQ== 68320\nSVZP 68321\nIHNjcmk= 68322\nYWNldA== 68323\nIE1laA== 68324\nKGNsYXp6 68325\nIFs8 68326\ncGVyaWFs 68327\nIHN1cnBhc3NlZA== 68328\nIGpva2Vk 68329\nIHJ1ZA== 68330\nIGltYmFsYW5jZQ== 68331\nIEZyYWdl 68332\nc3Nw 68333\nIGluZGljdGVk 68334\nLm1hcmtldA== 68335\nO20= 68336\nIHJlcGFpcmluZw== 68337\nLW5vdGU= 68338\nRGVidWdnZXI= 68339\nKFdlYg== 68340\nIHNpbmdz 68341\nIExveQ== 68342\nIERFU0lHTg== 68343\nLkNvbXA= 68344\nLWNvbnRyb2xsZXI= 68345\nIGF2b2NhZG8= 68346\nIEJvd2ll 68347\nY29udGFkb3I= 68348\ndWxpbmdz 68349\ndWNob3M= 68350\nc3BlY2lmaWVy 68351\nIFZvbHZv 68352\nIGRlbW9z 68353\nIFByb2R1dG8= 68354\nLk5vdEZvdW5k 68355\nIG5pw7Fvcw== 68356\nIEJvbHM= 68357\nX291dGVy 68358\nU2hlcg== 68359\nQVVUTw== 68360\nIGpvdg== 68361\nIEZyZWRkaWU= 68362\nb3JpYXM= 68363\nIGFmZWN0 68364\nIGZhY2lsaXRhdGluZw== 68365\nIGRvbWluYXRpbmc= 68366\nUGFyY2VsYWJsZQ== 68367\nJywnLQ== 68368\nbW9vbg== 68369\nIG1ldGFzdA== 68370\nIHNjYXJm 68371\nIFRoZXJt 68372\nQ2FsbEJhY2s= 68373\n0YHRgtCw0LI= 68374\nLkltcG9ydA== 68375\nIGJldHJheWFs 68376\naWN1bG9z 68377\nIHdlacOf 68378\n5YyF 68379\nX14= 68380\nd2lmaQ== 68381\nIFNFTlNPUg== 68382\nX0JVU1k= 68383\nJGI= 68384\nX0ZJTkQ= 68385\nIHBsYXN0aWNz 68386\nIENPTlZFUlQ= 68387\nCWNhbGw= 68388\nIFByYWd1ZQ== 68389\nIGdhcm5lcmVk 68390\nX2xlYXJuaW5n 68391\nc2hvb3Q= 68392\nJ10pKQ0K 68393\nIEdpbmdlcg== 68394\nPXBk 68395\nLHRlc3Q= 68396\nUHJvZml0 68397\nIGVzdGltYXRvcg== 68398\nIGJyZWU= 68399\nIC8vPC8= 68400\nX2hhdmU= 68401\nIEtvZA== 68402\nX0lNTQ== 68403\naXp6YXM= 68404\nbWlnaHR5 68405\n154= 68406\nIE9uQ2xpY2tMaXN0ZW5lcg== 68407\n44OH 68408\nIFNjaWVudGlzdA== 68409\nRmlsdGVyZWQ= 68410\nYXZs 68411\naGF5 68412\nX2dlbmVyYXRlZA== 68413\nXScK 68414\nIEF1dGhvcml0aWVz 68415\nOnBhcmFt 68416\nIHN0YXR0 68417\nLW1hdGVyaWFs 68418\nIGxpZGVy 68419\nIENyb3A= 68420\nIEJ1bmlmdQ== 68421\nIG5leHRQcm9wcw== 68422\nb3J6 68423\nX29yZA== 68424\nPHg= 68425\nX0lPQ1RM 68426\nIE11c2NsZQ== 68427\nCWV4ZWM= 68428\nRU5BTUU= 68429\nX2xldHRlcnM= 68430\nIyMjIyM= 68431\nIENz 68432\nJ109PSI= 68433\nICInKQ== 68434\nQ2xlYW51cA== 68435\nLnN0cnVjdHVyZQ== 68436\nzro= 68437\n6YCa6L+H 68438\nJ107Pz4i 68439\nIExhdGl0dWRl 68440\nYmJpbmc= 68441\nIGJhbmFuYXM= 68442\ncmVjdGlvbnM= 68443\nIFJhbmRhbGw= 68444\nTllTRQ== 68445\nIGFwcmVuZA== 68446\nLlJlc3BvbnNlRW50aXR5 68447\nIHRlc3REYXRh 68448\nXGU= 68449\nIFdL 68450\nLkFkZENvbXBvbmVudA== 68451\nX3J1bnM= 68452\nw6dvaXM= 68453\nLW1pbmk= 68454\nZm9sZGVycw== 68455\nIGxvc2Vycw== 68456\nIFRvd2Vycw== 68457\nLUVuY29kaW5n 68458\nOnI= 68459\nY2hvb3Nlcg== 68460\nIGZsYXR0ZW5lZA== 68461\n0YHRgtCw0L3QvtCy 68462\nCVB5 68463\n5Lic 68464\nIGRhbW5lZA== 68465\nRGVwdA== 68466\nd2Vk 68467\nIHBpc2M= 68468\nZ2llcw== 68469\nX2dhbWVz 68470\nLm1hc3M= 68471\nKEVxdWFs 68472\nIG5hdGl2ZXM= 68473\nLnRodW1ibmFpbA== 68474\nbHRy 68475\nIGVxbA== 68476\nX2luY29tZQ== 68477\nCWhlYWRlcnM= 68478\nLWhhaXJlZA== 68479\nIG1lZGlvY3Jl 68480\nIFdpdGhkcmF3 68481\nIGJpdHRl 68482\n2b4= 68483\nPWlu 68484\nb2NrZWQ= 68485\nRnVsbHk= 68486\nIFRFTVBMQVRF 68487\nw7pkZQ== 68488\nT2Rk 68489\naWxsZXo= 68490\nVGVsZXBob25l 68491\nIAoJCQo= 68492\nKCInIg== 68493\nX3NjaGVk 68494\nZXJuZQ== 68495\nwr4= 68496\nLnBpY2s= 68497\nIE1TSQ== 68498\nCWZm 68499\nRGlzY292ZXJ5 68500\nIENPRA== 68501\nIExhY2s= 68502\nIHNlbnNhdGlvbmFs 68503\nbW90aA== 68504\nIExlZ2lzbGF0aXZl 68505\n0Y0= 68506\nIHZpYWJpbGl0eQ== 68507\nIGdldEVtYWls 68508\nIHVuYW5pbW91cw== 68509\nIHBlbGxldA== 68510\nICIoKQ== 68511\nY29hdA== 68512\nYWdvb24= 68513\nIEFMV0FZUw== 68514\nXHVD 68515\nX3N0ZG91dA== 68516\nQW5keQ== 68517\nIG5ld0xpc3Q= 68518\nIE1haGFyYXNodHJh 68519\nLF9f 68520\nPXVzZXJuYW1l 68521\nIHNjcmlwdGluZw== 68522\nIFRtaW4= 68523\nPEFjdGlvbg== 68524\nPXt9LA== 68525\nc3ltYm9scw== 68526\nIGZlbmNpbmc= 68527\nIHbDrWRlb3M= 68528\nIE1hdXJpY2U= 68529\nY29ybGli 68530\nIGtlbQ== 68531\nIn0pLAo= 68532\nIENsYXNzaWNhbA== 68533\nY29sbGVnZQ== 68534\nIEhvbWVwYWdl 68535\nIH19Cgo= 68536\nX01zcA== 68537\nIENvbXBsYWludA== 68538\nIHNhbmR5 68539\nQXNpYW4= 68540\nX3NlcmlhbGl6ZXI= 68541\nIExhaA== 68542\nIGJ1ZHM= 68543\nb2xvZ25l 68544\nIHJlc3BvbnNlRGF0YQ== 68545\nb3BoaWxl 68546\na2F0ZWdvcmk= 68547\nRW5kZWQ= 68548\nbGVjdGlj 68549\nIGNsYXdz 68550\nLi4uJyk7Cg== 68551\nIHBsYW5uZXJz 68552\nIFphaw== 68553\nIEdsb3Zlcw== 68554\nIil9 68555\nIGZhc2hpb25lZA== 68556\nYnJvbg== 68557\nIG5ld2NvbWVycw== 68558\ndmFuYQ== 68559\nIHBpZXJ3cw== 68560\nUmVjZWlwdA== 68561\nLWVudg== 68562\nIHJ1dGE= 68563\nIEZhcm1lcg== 68564\nb2RvcmU= 68565\nbXVp 68566\nIHJvbWFudA== 68567\nIGluZmxpY3Q= 68568\nIHNlbWluYXJz 68569\nPWN2 68570\nKHN0b2Nr 68571\nIGV4dHJhY3Rvcg== 68572\nIFRpZmZhbnk= 68573\nX3V2 68574\nLmNvbnRhY3Rz 68575\nJyksKCc= 68576\nIHNvbHZlcw== 68577\nLkNvbm5lY3Rpb25TdHJpbmc= 68578\nL2RlYnVn 68579\nIEF2ZXJ5 68580\n44Oj 68581\nIG1heFg= 68582\nU3Bhcms= 68583\nPHRoaXM= 68584\nIGhpa2Vz 68585\nS2V5VmFsdWVQYWly 68586\nIFF1aWV0 68587\nc3RhYg== 68588\nIEtvbW1lbnQ= 68589\nbHljZXI= 68590\nIE1TTQ== 68591\nIExhbnRlcm4= 68592\nIGNvbmp1bnRv 68593\naHNp 68594\nTVVMVA== 68595\nV2l0aER1cmF0aW9u 68596\nYXR0YWNoZWQ= 68597\nIEFzdGVy 68598\nCXBvaW50cw== 68599\nIFNpYmVy 68600\nIE1ldGhvZGlzdA== 68601\nL3NpdGVz 68602\nIGZvcnR1bmVz 68603\nUGFydGljaXBhbnQ= 68604\nIGN1c3RvbWVySWQ= 68605\nKWluaXQ= 68606\nX3NlcnZlcnM= 68607\nIHdlYXZl 68608\nIFRSQUlO 68609\nIGhhcmFzc2Vk 68610\n7J6R 68611\nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo= 68612\nX2Zhcg== 68613\nQWxjaGVteQ== 68614\nLmxpbmVXaWR0aA== 68615\nIHRoZXJhcGlzdHM= 68616\nIExvYg== 68617\nZXF1aXBtZW50 68618\nIHJlY2h0 68619\nLm1pcG1hcA== 68620\nLm5pY2tuYW1l 68621\nIHVudG91Y2hlZA== 68622\nQUdPTg== 68623\nIFNhdWw= 68624\nIHdvcmtzaGVldHM= 68625\nIFZldGVyYW4= 68626\nb3VkZW4= 68627\nYWNsYXNz 68628\nX2FzbQ== 68629\nIHRlbXBs 68630\nIEV4cGVuc2U= 68631\nZWlnaHQ= 68632\nI1NCQVRDSA== 68633\nem9uZXM= 68634\nLnBhcnRz 68635\nYXRyaWNl 68636\nbGF3cw== 68637\ndG9CZURlZmluZWQ= 68638\nRWZmZWN0aXZl 68639\nIFBpZWNlcw== 68640\nYXJ0aQ== 68641\nIGluaGliaXRvcnM= 68642\nCXBhcmFtZXRlcnM= 68643\nIHRlbGVncmFt 68644\nYm91cmc= 68645\nX25vdGlmaWNhdGlvbnM= 68646\nIHBvc2l0aW9uYWw= 68647\nLWRlYWxz 68648\nIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 68649\nIHNoYWRlcnM= 68650\nXT0k 68651\nIGRlY28= 68652\nZXR5cGVz 68653\nY2xhcmU= 68654\nIEdTTQ== 68655\nLnV0aWxpdHk= 68656\nVG9TdHI= 68657\nYWZlbg== 68658\nIFht 68659\nX3BhcnRpY2xlcw== 68660\nIGZsdWZmeQ== 68661\nTWFya2V0aW5n 68662\nIHN0YW5kaW5ncw== 68663\nPwoKCgoKCg== 68664\nVU1BTg== 68665\nX1BBWU1FTlQ= 68666\nCVRpbWU= 68667\ncmF3bg== 68668\nb3Jybw== 68669\nIGVlcnN0ZQ== 68670\nIHBhZ2VOdW0= 68671\nIENPUA== 68672\nIHBsYWdpYXI= 68673\nVXBsb2FkZXI= 68674\nJHNlbGY= 68675\nbGF0ZXI= 68676\nZXJpYWxpemVk 68677\nIGFsaWduU2VsZg== 68678\nIOKZpQ== 68679\nLmFycmF5Y29weQ== 68680\nIG5vc290cm9z 68681\nCWdwaW8= 68682\nIHBsb3R0ZWQ= 68683\naXRlcmF0aW9ucw== 68684\nIFJlbGF4 68685\nY2lwaGVy 68686\nR2lmdA== 68687\nIEJldHQ= 68688\nIFhS 68689\nIHN0cmlwZWQ= 68690\nKGVudmlyb25tZW50 68691\nZWdlcnM= 68692\nX1JFU0VSVkVE 68693\nIGvDtm5udGU= 68694\nIGluZmVycmVk 68695\nUGRm 68696\nc29ycnk= 68697\ncGFyYXRl 68698\nLkNvbmNhdA== 68699\nIGxpcGlk 68700\nLkJP 68701\nIG9ybQ== 68702\nIENvbnNvcnQ= 68703\nIG92ZXJzZWVpbmc= 68704\nIGFtYmVy 68705\nIHBsZXRob3Jh 68706\nCUFjdGlvbg== 68707\ncXVlcnF1ZQ== 68708\nIGh1aXM= 68709\nID1b 68710\nIHByb2dyZXNzZXM= 68711\nanVkdWw= 68712\nIGNvbnZlcnRpYmxl 68713\nLmVtYmVkZGluZw== 68714\nIHs/Pgo= 68715\nIHJlZHV4 68716\nW2xhYmVs 68717\nOiIpOw0K 68718\nLm9ubGluZQ== 68719\ncXVhcnRlcmVk 68720\nIHNjaG9vbGluZw== 68721\nICJcIiI= 68722\nW2xpc3Q= 68723\nQWxhbg== 68724\nJ30KCg== 68725\neXBzdW0= 68726\nIHN0cml2aW5n 68727\nIFJlc3BvbnNpYmxl 68728\nIO2MjOydvA== 68729\nLkludFB0cg== 68730\ncmlrZXM= 68731\nZW52aWxsZQ== 68732\nLnNldExheW91dE1hbmFnZXI= 68733\nIFBhc3Nlbmdlcg== 68734\nIGRpc29i 68735\nIGZlcm1lbnQ= 68736\nLlBpeGVs 68737\nPign 68738\nIGNvbnRlbmRlcnM= 68739\nLWJldGE= 68740\nIGFmZmlybWF0aXZl 68741\n0L3QvtGB0YLQuA== 68742\naWHDp8Ojbw== 68743\nUmVjb21tZW5k 68744\naW1pdGVycw== 68745\nX3lsaW0= 68746\nIHN1YnNpZHk= 68747\nIGVyYg== 68748\nRmlsZVNpemU= 68749\nKHNy 68750\nIHBvb3Jlc3Q= 68751\nIHZvaQ== 68752\nU2lk 68753\nIHNsaXBz 68754\nX21pbnV0ZXM= 68755\nIHVn 68756\nxqFu 68757\nIG5hdMO8cmxpY2g= 68758\n44Oe 68759\nYmVhcg== 68760\nfV8kew== 68761\nIGZpc3Nl 68762\nIGRpc2NyaW1pbmF0b3J5 68763\nCQkgIAo= 68764\nIENvaWw= 68765\nX2lmYWNl 68766\nLnZlcg== 68767\nIG1pbmVk 68768\nIGFzc2Fzc2lu 68769\nIHVuc2V0dA== 68770\nLnJlcXVlc3Rz 68771\nLlVT 68772\naW1hZ2VVcmw= 68773\nIHN0cmF0ZWdpY2FsbHk= 68774\nLWJhbmQ= 68775\nIHRyb3VzZXJz 68776\nWEQ= 68777\ney8= 68778\nbGVjdGlvbnM= 68779\nYCgp 68780\nIlA= 68781\nIHNrZXRjaGVz 68782\nY2xpZW50SWQ= 68783\nIFNyYw== 68784\nb3BlbmluZw== 68785\nUHV0aW4= 68786\nIFBvZXRyeQ== 68787\nIFBST00= 68788\nSUxMSVNFQ09ORFM= 68789\nIGJvb21pbmc= 68790\nU2ltaWxhcmx5 68791\nOmxhc3Q= 68792\nLndvcmtlcg== 68793\nLmdldElE 68794\nLlNQ 68795\nc2VydmVycw== 68796\nb2N1bGFy 68797\nIHNwaW5hY2g= 68798\nSVNL 68799\nw7A= 68800\nJ10pWw== 68801\nIGNoaWVmcw== 68802\nIGdyb8OfZW4= 68803\ncmlldmluZw== 68804\nLmFzaw== 68805\nLXN1cg== 68806\nVlY= 68807\nLz4iOwo= 68808\nKHJlbW92ZQ== 68809\nIEtM 68810\nIEhhbGV5 68811\nQFJlc3BvbnNlQm9keQ== 68812\nLSY= 68813\nU3dhZ2dlcg== 68814\nIHpuYWo= 68815\nLm9uRXJyb3I= 68816\ncmVnbw== 68817\nZWxpeA== 68818\nIEFWQUlMQUJMRQ== 68819\nIHNlcGVydGk= 68820\naWFw 68821\nX21pc3M= 68822\nIHN1cmdlcmllcw== 68823\nIGltcGFydGlhbA== 68824\nIENvdA== 68825\nYWt0aW9u 68826\nIHdoaXRlbGlzdA== 68827\nINCw0LI= 68828\nX21peA== 68829\nIEJlZHJvb21z 68830\nIHByaW1laXJh 68831\nIHNpZ25pZmljYQ== 68832\nL2J5 68833\nIHN0YXJ0bGluZw== 68834\nIFNQRQ== 68835\ndWNjacOzbg== 68836\nTnVtZXI= 68837\nSUJN 68838\nLmZyYWdtZW50cw== 68839\nUmVudA== 68840\nIHLDs3duaWXFvA== 68841\nLkFVVE8= 68842\nLkZvckVhY2g= 68843\nIFpodQ== 68844\nIEN1bm5pbmc= 68845\nIFdhcm4= 68846\nIEJI 68847\nX0RPV05MT0FE 68848\nQnlLZXk= 68849\nKeKAlA== 68850\nIGNvbW1hbmRl 68851\nX0FOUw== 68852\nQ2hyb24= 68853\nRklU 68854\nX2F0b21z 68855\nX1NLSVA= 68856\nIHZhcA== 68857\nKEJveA== 68858\nIGxkYXA= 68859\ndW5wcm9jZXNzYWJsZQ== 68860\nSVRJT05T 68861\nw6lyw6k= 68862\nLG1zZw== 68863\nIG91dHNldA== 68864\nIGRyaWxsZWQ= 68865\nIGTDqXZlbG9wcA== 68866\nIENvYXQ= 68867\nIEJlbmdoYXpp 68868\nSG9va3M= 68869\nIE1pc3NpbGU= 68870\nX1Jlc2V0 68871\nPi88 68872\nICItIgo= 68873\nKCk9PnsK 68874\nIEhvY2g= 68875\nLmF3YWl0 68876\nQWRyZXNzZQ== 68877\nIGRpZ2l0YWxseQ== 68878\nIlRoZXNl 68879\nb3BsZXZlbA== 68880\nIGFzeW5jaHJvbm91c2x5 68881\nIER1Y2tz 68882\nUkVTUA== 68883\nSVJP 68884\nLmZpeA== 68885\nIFJhZGFy 68886\ndmVydGlzZQ== 68887\nw61zZXM= 68888\nSXRlcmF0aW9ucw== 68889\nbW91c2V1cA== 68890\nbWludA== 68891\nRklSU1Q= 68892\nIHBheXBhbA== 68893\nX3VwZ3JhZGU= 68894\nV3JhcHBlZA== 68895\nOw0NDQo= 68896\nK3M= 68897\nIGNhdGNoZXI= 68898\nLk9w 68899\nX05PVElDRQ== 68900\ncGFyYWxsZWxlZA== 68901\nQ1ZF 68902\nZm9yZ290 68903\nIHBhbm9y 68904\nIG9mZnJl 68905\nIGVub3JtZQ== 68906\nKCkNCg0KDQo= 68907\nYWRpYXRvcg== 68908\nYWRkQWxs 68909\nW3RleHQ= 68910\nKHV0aWw= 68911\nLlByb21pc2U= 68912\nYW5pc20= 68913\nX29mZmVy 68914\nRU5ESUY= 68915\nZG90cw== 68916\nIEtybw== 68917\nIHNwZWxsZWQ= 68918\nIGFwcE5hbWU= 68919\nQWN0aXZpdGllcw== 68920\nIFNwaWNl 68921\nZWF0ZWQ= 68922\nIHNrYg== 68923\nIGvDtno= 68924\nIHRvcmNodmlzaW9u 68925\nQ2l2aWw= 68926\nIGhvcw== 68927\nX0hlbHBlcg== 68928\nacSH 68929\nX3Vuc2lnbmVk 68930\n6K66 68931\n4oCcQW5k 68932\nCWtmcmVl 68933\nLnJhaXNl 68934\nIGNhbGxl 68935\nIExhbnM= 68936\nIGFudGln 68937\nXCI+IjsK 68938\nYnJhbmNoZXM= 68939\nbG9ncmFkb3Vybw== 68940\nIHN0YWxsZWQ= 68941\nYWx5emVk 68942\nRGVyaXZlZA== 68943\nOm5vdA== 68944\nIGdpYmk= 68945\nIFR1cm5idWxs 68946\nLnVzZXJEYXRh 68947\nKFRhYmxl 68948\nIERlcml2ZWQ= 68949\nCWNvbmY= 68950\nIGFsZ2Fl 68951\nIGthZmth 68952\nIG5ha25l 68953\nIEhlYXRpbmc= 68954\nIFRpcmU= 68955\nYWR1bHQ= 68956\nIERhdGVGb3JtYXQ= 68957\nb3Bj 68958\nZW5zYWdlbQ== 68959\nLlRvb2xz 68960\nLk1peGVkUmVhbGl0eQ== 68961\ncmFp 68962\nIFdvbmRlcmZ1bA== 68963\nKV0pCgo= 68964\naWFyZA== 68965\nVGhlbWVQcm92aWRlcg== 68966\nIGV2ZW50RGF0YQ== 68967\nI2Fk 68968\nLmdldFVybA== 68969\nIHRvb2xib3g= 68970\nIG92ZXJyaWRpbmc= 68971\nQ09OVEVOVA== 68972\nLXByb2R1Y3Rz 68973\nd2lsZA== 68974\nX2V4cGFuZA== 68975\naW5haXJl 68976\nQnJ1 68977\nb2xscw== 68978\nINGN0YLQvg== 68979\nY3Rlc3Q= 68980\nIHB1bmNoaW5n 68981\nRFJW 68982\nX3NwYWNlcw== 68983\nIFN1cGVyaW50ZW5kZW50 68984\nIGxheXVp 68985\nKGZlZWQ= 68986\ndG9k 68987\nIHZo 68988\nIGluc3VsdHM= 68989\nIFN1Yw== 68990\naWtz 68991\nVG9ycmVudA== 68992\nLmty 68993\nX2FjdGl2YXRl 68994\nk5g= 68995\namVl 68996\naW1lcnM= 68997\ncnVpdHM= 68998\nIHByZWNpbmN0 68999\nLlJlcXVpcmVk 69000\nIHNhdGlzZmllcw== 69001\nIGNoZWVyaW5n 69002\nIGFycml2 69003\nCXJlYw== 69004\nIENvYmI= 69005\nIGNvbmN1c3Npb24= 69006\ndWpldA== 69007\nTm90Rm91bmRFcnJvcg== 69008\nSmVhbg== 69009\nIHBob3Rvbg== 69010\nPl8= 69011\nIEJhcmNs 69012\nYW1k 69013\nICV9Cg== 69014\nPVwiIw== 69015\nSW50ZXJu 69016\nIENvbW1pdHRlZXM= 69017\nLmJlbA== 69018\nbnVtbWVy 69019\nIGxldml0cmE= 69020\nX3ZlcmJvc2U= 69021\nKGNvZGVj 69022\nIFN0aXRjaA== 69023\nPSIiOw0K 69024\nIHJlZ3JldHM= 69025\nIG11bHRpbmF0aW9uYWw= 69026\nIHJlc3RydWN0dXJpbmc= 69027\nIE1FTg== 69028\neW5jaHJvbml6YXRpb24= 69029\nIG1lZGlhdG9y 69030\na2ly 69031\nUHJpbmNl 69032\nIGluaGliaXQ= 69033\nIGdvc3Q= 69034\nIE1NQw== 69035\nIHNpZGVk 69036\nX2Rhcms= 69037\nKGJsb2I= 69038\nPkxvcmVt 69039\nPiIpOwoK 69040\nc2Nhbm5lcg== 69041\nOmlubGluZQ== 69042\nLmNhcm91c2Vs 69043\nb3RpZGU= 69044\nIFdXVw== 69045\nIGRydW1tZXI= 69046\nLmZhbWlseQ== 69047\nIG9yZGluYWw= 69048\n5b2T5YmN 69049\nIGRpcGxvbWF0 69050\nIHN1cHBsZW1lbnRhbA== 69051\nIGRhZsO8cg== 69052\nIEZBVA== 69053\nIFlvbmc= 69054\naGFwdXM= 69055\nIEp1bmN0aW9u 69056\nemw= 69057\nLlVzZUZvbnQ= 69058\nIGhhc2hNYXA= 69059\nLVJl 69060\nICIqKg== 69061\nLnNldEJhY2tncm91bmRSZXNvdXJjZQ== 69062\nIGltcGVyZmVjdA== 69063\nLkZpbmRFbGVtZW50 69064\nIExMUA== 69065\nIG11cmRlcmVy 69066\nIHRleHRl 69067\naXPDqQ== 69068\nYWN0aWNz 69069\nVG95 69070\nR3JhbnQ= 69071\nX2Rpc2Nvbm5lY3Q= 69072\nIGJyYXNpbGU= 69073\nIGVtZXJnZW5jaWVz 69074\nX2x2bA== 69075\nIEAiXA== 69076\nfSovCgo= 69077\nX1NPQw== 69078\nTk9STUFM 69079\nL2dhbGxlcnk= 69080\nYXNpY3M= 69081\nRXZlbnR1YWxseQ== 69082\nIGdyYXA= 69083\nIGNyaXN0 69084\nIHByb2plY3Rvcg== 69085\nIGdlb21ldA== 69086\nIGRldGVjdG9ycw== 69087\nIGNyaXRpY2l6aW5n 69088\nIGNoaWNrcw== 69089\nIEhpag== 69090\nL2ZyYW1l 69091\nLW1vbmV5 69092\nImRlc2NyaXB0aW9u 69093\nIHRleHRpbmc= 69094\nIHNleGlzbQ== 69095\nIE1WQw== 69096\nLWdlbmVyYWw= 69097\nIG92ZXJ0dXJuZWQ= 69098\nIG1vdmVy 69099\nIFBocmFzZQ== 69100\nIFVOVVNFRA== 69101\nIEVudHJlcHJlbmV1cg== 69102\nVEVHUg== 69103\nZWxsaXBzZQ== 69104\nTWFya2Rvd24= 69105\nX18oKg== 69106\nIEthcmRhc2hpYW4= 69107\ncHBlbGlu 69108\nIEdvdHQ= 69109\nIGR5c3Q= 69110\nIFJlZHV4 69111\nSG9sYQ== 69112\nPyEKCg== 69113\nIFJlYWx0eQ== 69114\nU3VydmV5 69115\nIE1jR3JlZ29y 69116\nX2hhbmRsZXM= 69117\nIGludHJpZ3VlZA== 69118\nIGdldFVybA== 69119\nIGRldmlzZWQ= 69120\nIFBheXBhbA== 69121\nIHRoaW5rZXJz 69122\nIFN0YXR1c0Jhcg== 69123\nIEVsaWc= 69124\nIGNvbXBsZXhlcw== 69125\nINC60L7QtA== 69126\nc3RvY2tz 69127\nLWluaXRpYWxpemVk 69128\nIHNjYW5kYWxz 69129\nIGNvbWZvcnRpbmc= 69130\nIFJvY2tz 69131\nIGxpb25z 69132\nbG9jYXRvcg== 69133\nIV0= 69134\nIFBvbnk= 69135\nRGF0dW0= 69136\nIEZldA== 69137\nIG9mZnNldFk= 69138\nIFJFVFVSTlM= 69139\nIGJyZWFjaGVz 69140\nVGltZUludGVydmFs 69141\nIHZpZWxlbg== 69142\nVmVyc2U= 69143\nIGthZA== 69144\nIGdhYXQ= 69145\nKCItIiw= 69146\nIG1vdXNlWQ== 69147\nKFBvc3Q= 69148\nIFVo 69149\nZWxpZ2libGU= 69150\nYWx0YQ== 69151\nIHV0aWxpc2U= 69152\nZmFjdHM= 69153\nSElQ 69154\nIG9yY2hlc3RyYQ== 69155\nIFNwYWNlcw== 69156\naXNwaWVs 69157\nIG11bHRpcGFydA== 69158\nLW9wYWNpdHk= 69159\nU2VhcmNoaW5n 69160\nIFBsYXRv 69161\nVmlzaW9u 69162\nIGx1bA== 69163\nIEFwcHJlbnQ= 69164\n57uc 69165\nW3JhbmQ= 69166\nLWRpc2FibGVk 69167\nIEZsZXRjaGVy 69168\nIHRyYW5zcG9ydHM= 69169\nJmU= 69170\ndHBhcmFt 69171\ncG9sZQ== 69172\nIEJ1ZW5vcw== 69173\nw7pibGljYQ== 69174\naW50ZXJhY3Rpb24= 69175\nIGhvYg== 69176\nIGluZmxpY3RlZA== 69177\nbGl0ZQ== 69178\nIFBBUkFNRVRFUlM= 69179\nIFN0YW0= 69180\nKG14 69181\nIEF1dG9NYXBwZXI= 69182\naWxpYW4= 69183\nIHF1aXR0aW5n 69184\nPXt9 69185\nIEpvbmFz 69186\nIGxvY2FsaXR5 69187\nIFNpbGVuY2U= 69188\nX2ZsdXR0ZXI= 69189\nIG5icg== 69190\nbGl0ZXI= 69191\nIE5vcm1hbGl6ZQ== 69192\nIGFjdW0= 69193\nQnJhaW5z 69194\nZXF1aXA= 69195\nXT09Ig== 69196\nIGRlc3Rpbm8= 69197\nIERpb3M= 69198\nLk11bHRpbGluZQ== 69199\nYWdyZWU= 69200\nKQoKCgoKCgoK 69201\nIHN0ZWxsZW4= 69202\nIGN1cmx5 69203\nLk9mZmljZQ== 69204\nLWFib3V0 69205\nICcuLy4uLy4uLw== 69206\nIFVUSUw= 69207\nIFJw 69208\n4oC6 69209\nIG1hcGE= 69210\nLkRP 69211\nYWdhbA== 69212\nLndpbmRvd3M= 69213\nIGFkdmVyc2VseQ== 69214\nLlh0cmFMYXlvdXQ= 69215\nbWVkaWNhbA== 69216\nIHVuc3Vy 69217\ndGhlcm1hbA== 69218\nLk1vZGVsQWRtaW4= 69219\nLmFjdHVhbA== 69220\nc2V0Q29udGVudA== 69221\nIHBvc3RmaXg= 69222\nUFc= 69223\nIENoYWlycw== 69224\nIGdyYW1t 69225\nIGNvbXBsaWM= 69226\nRElTUExBWQ== 69227\nIE1vb3Nl 69228\naGFhcg== 69229\nQUxFUw== 69230\nIGxkYQ== 69231\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCg== 69232\nICcvJwo= 69233\nQVNO 69234\nIEJhcmJlcg== 69235\nIG1haW5z 69236\nIG1haW5XaW5kb3c= 69237\n0LDQt9Cy0LDQvdC40LU= 69238\nIGVtYW4= 69239\nX2NvbGxlY3Q= 69240\nIHJlbXBs 69241\nLnRheA== 69242\nYmFo 69243\nIFBzeWNoaWF0cnk= 69244\nRGVzY3JpcHRpb25z 69245\nIGV4ZWN1dGlvbnM= 69246\nCUxPR0dFUg== 69247\nJkU= 69248\nOmJn 69249\nIGtk 69250\nLmRhbWFnZQ== 69251\nIG5pc2k= 69252\n5qy+ 69253\nIENhbWVs 69254\naW5pZGFk 69255\nIExpZmVzdHlsZQ== 69256\nIFRISVJE 69257\nIOCkuA== 69258\nIHBvbHlnb25z 69259\nIGF0dGlyZQ== 69260\nYWxlbnQ= 69261\nX1VTQVJU 69262\nIG1hbGFyaWE= 69263\nbG9icw== 69264\nIF19Cg== 69265\nKHJlZ2lzdGVy 69266\nLXBz 69267\nX29wdGltaXplcg== 69268\nKEFMT0FE 69269\nIHZhcGU= 69270\nLnNvY2s= 69271\nkOiXjw== 69272\nJHByb2R1Y3Q= 69273\nKEVSUg== 69274\nY2twdA== 69275\nYnVxdWVycXVl 69276\nIH19Ij57ew== 69277\nIEhpdmU= 69278\nIE1hc2g= 69279\nIEVwaWQ= 69280\nIEx1bmQ= 69281\nX3RyYW5zYWN0aW9ucw== 69282\nIHN1YmNsYXNzZXM= 69283\nRWFzZQ== 69284\nX0Nsb3Nl 69285\nX2NoZWNrb3V0 69286\nIicsCg== 69287\nU2VjdG9y 69288\nb2lzZQ== 69289\nLXRlbXA= 69290\nKSIp 69291\naHlwZXI= 69292\nZXJjdWw= 69293\nc3RhY2twYXRo 69294\nX05S 69295\nSUxMRQ== 69296\nIHJlbGFjacOzbg== 69297\nIE1hdHRo 69298\nX0NPREVD 69299\nIGhhbmRsZUVycm9y 69300\nX09uZQ== 69301\nYWxib3Jn 69302\nCQkgICAgICAgICA= 69303\nIFVwbG9hZGVk 69304\nTm0= 69305\nLy89 69306\nKlM= 69307\nX0VYUEVDVA== 69308\nIGZyYWN0aW9uYWw= 69309\nQ291 69310\nIHNjYWxhYmxl 69311\nIENJRA== 69312\nPFBvc3Q= 69313\nCXRocmVhZA== 69314\naGFyZHdhcmU= 69315\nLmNoYW5nZWQ= 69316\nLkVsZW1lbnRBdA== 69317\nIGFydGljdWxhdGU= 69318\nZWRvcmVz 69319\nRXN0YWJsaXNo 69320\nPXtbCg== 69321\nISo= 69322\nIFNK 69323\nTWV0ZXI= 69324\nLnJlcA== 69325\nIFZPTA== 69326\nIE91 69327\nbMOp 69328\nIHBuZXVtb25pYQ== 69329\nX3BpY2tlcg== 69330\nZXhwbG8= 69331\nIOyekQ== 69332\nIFN3aW0= 69333\nZHJlc3M= 69334\nc3Rvcmllcw== 69335\nL25hdg== 69336\nVmE= 69337\nINit 69338\nL3NlbGY= 69339\nIHZldGVyaW5hcnk= 69340\nKERlbnNl 69341\nCWJvb3N0 69342\nIElzTm90 69343\nIHRydXN0aW5n 69344\nIExlYmFuZXNl 69345\nJHJlcXVlc3Q= 69346\neGZmZmZmZg== 69347\nX3JlbW92ZWQ= 69348\nIHVwZGF0ZXI= 69349\n2KfY 69350\nRE9XTkxPQUQ= 69351\nIEltbWVkaWF0ZWx5 69352\nIHJvYW1pbmc= 69353\nIEhvcm55 69354\nLmNvZGlnbw== 69355\nIEZpZ3VyZXM= 69356\nIHBhbnRyeQ== 69357\nKHNhbXBsZXM= 69358\nIEJFTA== 69359\nIHNldENvbnRlbnQ= 69360\ndW1vcg== 69361\n5pSv5LuY 69362\nX01JTlVT 69363\nIHVubGVhc2hlZA== 69364\nIHByb2ZpY2llbnQ= 69365\nCVVJ 69366\nLkV4Y2VwdGlvbnM= 69367\nIHNyYW5k 69368\nUHJlc3N1cmU= 69369\nLmFzc2VydE5vdA== 69370\nKHNlcmlhbGl6ZXI= 69371\nCXR4dA== 69372\nUG9ydHM= 69373\nIG5lY2VzYXJpbw== 69374\nIHJldml2ZWQ= 69375\nIG1pbGVzdG9uZXM= 69376\nY2Fubw== 69377\nRXNjb3J0 69378\nIGVudGVuZA== 69379\nQVBF 69380\naXBj 69381\nLmF0b21pYw== 69382\nIFBlbWI= 69383\nIHJlYWNoYWJsZQ== 69384\nIGthbnM= 69385\nd2hhdGV2ZXI= 69386\nTGlzdEJveA== 69387\nIENseQ== 69388\ncGljdHVyZWQ= 69389\nIEVsZWN0cm8= 69390\nYWJpYw== 69391\nIGZ1bms= 69392\nIGRpYXJyaGVh 69393\nIOeZ 69394\nIFNvbHZlcg== 69395\nIEJhYw== 69396\nIHNrZWxldGFs 69397\nIO+C 69398\nIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbg== 69399\nICIpWw== 69400\nIFRyYWl0 69401\ndWRva3U= 69402\nLS0tLS0tLS0tLQoK 69403\nQW5nZWw= 69404\nYWdy 69405\nIHNpbXBsZXM= 69406\nIGJhbmM= 69407\nIEFsZXJ0cw== 69408\nIENvbmZpcm1hdGlvbg== 69409\nIEFseQ== 69410\nY2FsbGJhY2tz 69411\nIGZ1bmt0aW9u 69412\nIGdyYWZ0 69413\nWVBE 69414\nL0FGUA== 69415\nV0s= 69416\na3Vy 69417\nQ0tFVA== 69418\nIFNsYXRl 69419\nIFN0ZWY= 69420\nCVJ1bnRpbWU= 69421\nIEVTTA== 69422\nIHByZWFjaGluZw== 69423\nQnJvYWQ= 69424\nIHNldERlc2NyaXB0aW9u 69425\nYXplbA== 69426\nPQoK 69427\nIGphY2twb3Q= 69428\nIC8vIQo= 69429\ndmlhcg== 69430\nIGVpZA== 69431\nIGF0aXY= 69432\nIHJlZmxleGl2aXR5 69433\nLkxpc3Rlbg== 69434\nIGx5cmlj 69435\nIHZlcms= 69436\nIGNvbGx1c2lvbg== 69437\nYXphYXI= 69438\nIHdpbms= 69439\nIE11ZA== 69440\nL29wZXJhdG9y 69441\nIGV4dGVybmFsbHk= 69442\nIGJhcnU= 69443\nIGJhc2tldHM= 69444\ndGlja2Vy 69445\nKHBob3Rv 69446\nX2V2ZW4= 69447\nIHNwb25nZQ== 69448\nIGhlaWdodEZvcg== 69449\nZ2V0Q2hpbGQ= 69450\nX2Zvcm1hdHM= 69451\nLkV4ZWN1dGlvbg== 69452\nX1Byb3BlcnR5 69453\ncmVwb3M= 69454\ndGhlaWQ= 69455\nX1BIWVM= 69456\nIGV2aWRlbmNlZA== 69457\nLmhlYWRpbmc= 69458\nQW5ndWxhcg== 69459\nIFZlbnVl 69460\nIEhPVVNF 69461\nIEVzdG9uaWE= 69462\n0LzQsA== 69463\ncmdhbml6YXRpb24= 69464\nL2RldmljZQ== 69465\nSVJS 69466\nX3RoZW4= 69467\nYXJlbQ== 69468\nIGFnZ2k= 69469\nRU1PTg== 69470\nINGB0Lo= 69471\nIEVwaA== 69472\nIE1TUA== 69473\nIGxvZ2ZpbGU= 69474\nLWxlYWRpbmc= 69475\nYXRoYW0= 69476\nIHVubWF0Y2hlZA== 69477\nIFNpdHVhdGlvbg== 69478\nKCl7fQo= 69479\nCWNoYW5nZQ== 69480\nIENoYXB0ZXJz 69481\nLlJFU1VMVA== 69482\nIG9l 69483\nRVRZ 69484\nX3ZpZA== 69485\nLi4uJyw= 69486\nIGFsdGVybmF0aXZlbHk= 69487\nX1dT 69488\nIFBsZW50eQ== 69489\nIENyYXRl 69490\nYXNpb25hbGx5 69491\nIExhd24= 69492\nIElNTQ== 69493\nIFZhbml0eQ== 69494\nIFZvb3I= 69495\n5ZCv 69496\nIG1pag== 69497\nc3RlcnJlaWNo 69498\nIFJERg== 69499\nIENyaXRlcmlvbg== 69500\nLkludg== 69501\nLlN0ZXA= 69502\nX0ZyYW1l 69503\nIEVOVU0= 69504\n774= 69505\nSG9wZWZ1bGx5 69506\nTmF2Q29udHJvbGxlcg== 69507\nIOy2lOqwgA== 69508\nIFZhZGVy 69509\nIHJ1dGhsZXNz 69510\nJGtleQ== 69511\nY2t0 69512\naW5lbQ== 69513\naWxlbnQ= 69514\nIHJlc3BlY3Rpbmc= 69515\nbGNk 69516\nKGJ0 69517\nIEVsbGlvdA== 69518\nIFVuaWRvcw== 69519\nKENoYW5uZWw= 69520\nIGVpdXM= 69521\nIGFzdHJvbmF1dHM= 69522\nIEhvc3Rpbmc= 69523\nIGNhc3Rl 69524\nIGhhcm1lZA== 69525\nb3VwbGVz 69526\nPFJvbGU= 69527\nLkRlc2M= 69528\nLWNvdXJzZQ== 69529\nIENhcnRvb24= 69530\naWxlZ2Vk 69531\nIG15c3RpY2Fs 69532\nIOex 69533\nKGZpZWxkTmFtZQ== 69534\nV0lUSE9VVA== 69535\nLHN1bQ== 69536\nJ2FjYw== 69537\nCXJvd3M= 69538\nIGdldFBhc3N3b3Jk 69539\nIGNvY2tz 69540\ncGl2b3Q= 69541\nbmFtZW9m 69542\nIGZlYXNpYmlsaXR5 69543\nIGNvbW1lbmNlbWVudA== 69544\nIERvbWU= 69545\nLkpTT05FeGNlcHRpb24= 69546\nIEh5ZGVyYWJhZA== 69547\nIExpc3RlZA== 69548\nIENvbXB1dGVycw== 69549\nW3ZhbA== 69550\nIGlzb3Q= 69551\nCXdpbg== 69552\nIG5laA== 69553\nKElOVA== 69554\nUmVwdWJsaWNhbg== 69555\nINC/0YDQvtCy0LXRgA== 69556\nRmF0 69557\nIGVxdWl2 69558\nIERhdHVt 69559\nYXN0aQ== 69560\nIHNvaWxz 69561\ndXB1bmN0dXJl 69562\ncHJlc3NpdmU= 69563\nXykpOwo= 69564\nLldhcm4= 69565\nIGhhcmI= 69566\nLm9uT3B0aW9uc0l0ZW1TZWxlY3RlZA== 69567\nIGNsb3du 69568\nIE9XTg== 69569\nIGV4YW1pbmF0aW9ucw== 69570\nIEV4aXN0aW5n 69571\nam91cmQ= 69572\nIGNvbmNlc3Npb24= 69573\nIEZpcmViYXNlRGF0YWJhc2U= 69574\nIHVwdGFrZQ== 69575\nIGVubGlzdGVk 69576\nIENhcmI= 69577\nIGZ1cw== 69578\nIGFidXNpbmc= 69579\nLnByb2R1Y3Rpb24= 69580\neW5jaA== 69581\naWx5bg== 69582\ncmVmdW5k 69583\nLWhhdmU= 69584\nKGFyZ3VtZW50 69585\nIGZzY2FuZg== 69586\nY29uY2VwdA== 69587\nX0xBTkU= 69588\nIGVuZ2FnZXM= 69589\nIEV4YWN0bHk= 69590\nYWx0dXJh 69591\nKEFkZHJlc3M= 69592\nIHN5bm9ueW1vdXM= 69593\nVG93bg== 69594\nIFBheW5l 69595\ncm9pdA== 69596\ncGVyaWVuY2Vz 69597\ncGFydGljbGVz 69598\nX2Jk 69599\nIEdyaW5kZXI= 69600\nTWFuYWdlZE9iamVjdENvbnRleHQ= 69601\nKGJi 69602\nW3RtcA== 69603\nLWNvbnM= 69604\nYW9rZQ== 69605\nIHN0ZXdhcmQ= 69606\nIFZpZXdDaGlsZA== 69607\nLmRyYXdMaW5l 69608\nIFdBUk4= 69609\nIHB1ZXM= 69610\nbW9kYXRpb24= 69611\nIHpz 69612\nQWdyZWdhcg== 69613\nICIuIiw= 69614\nLmNlbnRlclk= 69615\nIGZsYXdsZXNz 69616\nIGRldXRzY2hl 69617\nIExpcXU= 69618\naXRlaXQ= 69619\nX2ludHJv 69620\nLXVzZWQ= 69621\nLHRhcmdldA== 69622\nIEhERA== 69623\nICUr 69624\nb3JlbnQ= 69625\nL09iamVjdA== 69626\nIGRpc3J1cHRlZA== 69627\nw6J0ZQ== 69628\nIGFjY2Vzbw== 69629\nIExvd2VzdA== 69630\nIFdpbGxpYW1zb24= 69631\nX2NyZWF0b3I= 69632\nU2VsbA== 69633\nIEJVRw== 69634\nX3JlcHI= 69635\n6ICM 69636\nIGFyY2hhZW9sb2dpY2Fs 69637\nb21lcnM= 69638\nIEVsb24= 69639\nIFNjcm9sbFZpZXc= 69640\nIGxpbmVzdHlsZQ== 69641\naXNSZXF1aXJlZA== 69642\naXNrbw== 69643\nX3Ji 69644\nZsO8aA== 69645\nICAgCQk= 69646\nKGRlZmluZQ== 69647\nIFNDTQ== 69648\nIERJRkY= 69649\nX2Jz 69650\ncGVuZGljdWxhcg== 69651\ncGFjZWQ= 69652\nIEpvdXJuYWxpc20= 69653\nLkpTT05BcnJheQ== 69654\nIERhdGFBY2Nlc3M= 69655\nTWFyaWE= 69656\nIELDvA== 69657\nSEVMTA== 69658\nIE1BVFJJWA== 69659\nT0xUSVA= 69660\nYXBzaWJsZQ== 69661\nXToKCg== 69662\nbmFpcmVz 69663\nX2hpc3RvZ3JhbQ== 69664\nIGZsYWly 69665\naGF2aW5n 69666\nIFVzZXJJRA== 69667\nIFJlbGF0aW9uc2hpcHM= 69668\nUmVwbGFjZW1lbnQ= 69669\nIHJzYQ== 69670\nIGVucmljaGVk 69671\nIHJlaGVhcnM= 69672\nIHfDpHJl 69673\nIGxvYWRlcnM= 69674\nIEVsZW5h 69675\nIFdhdGNoaW5n 69676\nCWpvYg== 69677\nTkVXUw== 69678\nL3NldHRpbmdzZGlhbG9n 69679\naXZlYw== 69680\nX0VRVUFMUw== 69681\nVGVtcGxhdGVOYW1l 69682\nIEJPRFk= 69683\nLmFkYXB0ZXJz 69684\nd29mZg== 69685\nY29tYm9Cb3g= 69686\nLk5ld1JlYWRlcg== 69687\nfHJlcXVpcmVk 69688\nX3Byb2JhYmlsaXR5 69689\nICg6Og== 69690\nIGNyYXo= 69691\nIFVG 69692\nVGVzdElk 69693\nIGVzcGVjaWZpYw== 69694\naWJlbA== 69695\ncGF3bg== 69696\n640= 69697\nIE1hcnI= 69698\nIHN0YXJ0WA== 69699\nX3NpdGVz 69700\nLz4KCg== 69701\nIGltcGxpY2F0ZWQ= 69702\nKGlubmVy 69703\nIGVmZm9ydGxlc3NseQ== 69704\nwq10aW9u 69705\nYXdhcmQ= 69706\nIGhvdmVyaW5n 69707\ncHJp 69708\nJHRlbXBsYXRl 69709\ndWFuZw== 69710\nIGF1dG9tYXRl 69711\nICoqLwoK 69712\naWJsaQ== 69713\nIG51dHJpdA== 69714\nKS4o 69715\nZWVlZQ== 69716\nQXBpQ29udHJvbGxlcg== 69717\nL293bA== 69718\nIFdvbWVucw== 69719\nLWRvdWJsZQ== 69720\nIE9yZGVyaW5n 69721\nc3Bt 69722\nTW9kZXI= 69723\nLk5hdGl2ZQ== 69724\nIEJlcmdlcg== 69725\nZXNkYQ== 69726\nZXJkaW5ncw== 69727\nX2VjaG8= 69728\nIHN1bW1hcml6ZWQ= 69729\nIGVsZXZhdGU= 69730\nX3F1YWQ= 69731\nIHdvbw== 69732\ndWxhbnQ= 69733\nUHJvcGVydHlWYWx1ZQ== 69734\nIHBsaXN0 69735\nIEdSQVBI 69736\nIFNUREVSUg== 69737\nKScpLg== 69738\nQXNzZXJ0aW9u 69739\nbGlua3BsYWlu 69740\nIGFjY2VsZXJhdGluZw== 69741\nIHNuaXBwZXRz 69742\nIFNhbG1hbg== 69743\nYWJjZA== 69744\nLmVjaG8= 69745\nX2lkeHM= 69746\nIHBjbQ== 69747\nb2NhbHlwdGlj 69748\nX2Nvb3JkaW5hdGU= 69749\nKHByZXZpb3Vz 69750\nLXNob3J0 69751\nLnN1YnRyYWN0 69752\nKEJpdA== 69753\nP3Q= 69754\nIE5vdGVib29r 69755\nIEthdHJpbmE= 69756\naWZmZXJlbnRpYWw= 69757\nc2lsZW50 69758\ndGVybWluYXRlZA== 69759\nIHRhbmdlbnQ= 69760\nOlQ= 69761\nIGNvc8Os 69762\nIHBhcmFub2lk 69763\nIGRlcHJpdmF0aW9u 69764\nL3t7JA== 69765\nIGhlbWlzcGhlcmU= 69766\nIHJlaW5zdA== 69767\nZWN6 69768\ndGVycg== 69769\nIFBMQVRGT1JN 69770\nIHRyb3VibGVzaG9vdGluZw== 69771\nIHZhbGlkYXRpbmc= 69772\nIE9yaW9u 69773\nYXN1cmluZw== 69774\n0LjQvdCw 69775\nIGh1YnM= 69776\nYXJlbmNl 69777\nIENoYWxsZW5nZXM= 69778\nIHplYWw= 69779\nU3Bv 69780\nIFNjcmVlbnM= 69781\nIG11bmRhbmU= 69782\nIER1bms= 69783\nICMjIyMj 69784\nIFJFRkVS 69785\nb25ldA== 69786\nLmNhc2U= 69787\nLXBvc2l0aXZl 69788\nSU5URUdFUg== 69789\nLm1ldHJvTGFiZWw= 69790\nU0FO 69791\nIHByb2Zlc3Npb25z 69792\nIHR5cmVz 69793\nUGFsaW5kcm9tZQ== 69794\nIFNFQ09ORA== 69795\nLkdSRUVO 69796\nIFNuYXBzaG90 69797\nVUxL 69798\nX2NpZA== 69799\nJEk= 69800\nIGN1bnQ= 69801\nZXN0cnVjdGlvbg== 69802\nUHN5Y2g= 69803\nIEh0dHBSZXNwb25zZU1lc3NhZ2U= 69804\nZW1iYWxp 69805\nX3Jldmlld3M= 69806\nU2VsZWN0YWJsZQ== 69807\nX1BSRVNFTlQ= 69808\nIEpzb25SZXF1ZXN0 69809\nIFRoZXRh 69810\nX2ludGVycA== 69811\nUmFzdGVy 69812\nI2Vycm9y 69813\nLG9iag== 69814\nIHR3ZWV0aW5n 69815\nX0dQVQ== 69816\nX3RvZGF5 69817\nX3NlY3M= 69818\nbmVlcw== 69819\nLmdldFN5c3RlbVNlcnZpY2U= 69820\nIHZub2Rl 69821\nIFJlZ3VsYXRvcnk= 69822\nIEZhaHJlbmhlaXQ= 69823\nIHNjYWxlcg== 69824\nX21hcmtldA== 69825\nLmFsbG9jYXRl 69826\ndGlja2V0cw== 69827\nYXRhaw== 69828\nIFBpa2U= 69829\nIExvcg== 69830\nZGl0b3I= 69831\nIGxvY2F0aW9uTWFuYWdlcg== 69832\nIGluaXREYXRh 69833\nIFdhcmU= 69834\nIEluY2lkZW50 69835\nIGNvbW1lbnRhdG9y 69836\ndWVudGVz 69837\nIEluZmxhdGU= 69838\nIOWG 69839\nIGFjdGl2aWRhZA== 69840\nIEJq 69841\nRU5VTQ== 69842\nIHJldXNlZA== 69843\nINC80LXQvQ== 69844\nIHNlc2nDs24= 69845\nLicpKTsK 69846\n44GT44KT 69847\nL2dl 69848\nYWdhaW5zdA== 69849\nLGxpbmU= 69850\nKFVubWFuYWdlZFR5cGU= 69851\nKT0i 69852\nIHl0 69853\ndWRpYW50ZXM= 69854\ncm9sbGFibGU= 69855\n5aGr 69856\nX0NPTExFQ1RJT04= 69857\nb2xpcw== 69858\ndW1iZXJsYW5k 69859\nKCIiIgo= 69860\nIHppcHBlcg== 69861\nDAo= 69862\nL3NpZ251cA== 69863\nIHN0cmFuZHM= 69864\ncmF4 69865\nLmNvbnN1bWVy 69866\nIHVuY2VydGFpbnRpZXM= 69867\nRGVidWdFbmFibGVk 69868\nIGRlZmVhdHM= 69869\nIGRydg== 69870\nIHJlYWxpc20= 69871\nYWdyYW1z 69872\nWEU= 69873\nIEhhemFyZA== 69874\nLW5lZWRlZA== 69875\nKHRhYmxlVmlldw== 69876\nLkVsZW1lbnRz 69877\nIFNBUg== 69878\nCWVsZW0= 69879\nKHBrZw== 69880\nU2ltb24= 69881\nVGludENvbG9y 69882\nIFBoZW4= 69883\nX0VNUA== 69884\n2Iw= 69885\nPz4KCgo= 69886\nX2F0dHJpYg== 69887\nIGJveFNoYWRvdw== 69888\nIENHQWZmaW5lVHJhbnNmb3Jt 69889\nIENhbmJlcnJh 69890\nIHN0YXJ0UG9z 69891\nIFJhaw== 69892\nCWNlcnI= 69893\nIFRhbnphbmlh 69894\ndW9uZw== 69895\nY2Fm 69896\nLmJhc2ljQ29uZmln 69897\nb2lucw== 69898\nQ29udGFpbmVk 69899\nPXNldA== 69900\nX2dpdA== 69901\nCXBhY2tldA== 69902\nIGNvZg== 69903\nKFRS 69904\n5qC85byP 69905\nKHt9KQo= 69906\nIGRpcmVjY2lvbg== 69907\nIHBsYXlsaXN0cw== 69908\nIGFmZmluZQ== 69909\nLnNldFNlbGVjdGlvbg== 69910\nIGFtbW9u 69911\nIGNvbnF1ZXJlZA== 69912\nIFJhbW9z 69913\nIFBTUA== 69914\nPXN1bQ== 69915\nIGNvcnJlbGF0aW9ucw== 69916\nIHJvYWRtYXA= 69917\nIGV4dGluY3Q= 69918\nIGFkdmlzYWJsZQ== 69919\nIGJvbWJlcnM= 69920\nIFVJUmVzcG9uZGVy 69921\nX0JQ 69922\nINCx0YPQtNC10YI= 69923\nIFByZW1pZXJl 69924\nIFJV 69925\ndHJhc2g= 69926\nKGNsanM= 69927\nZ251 69928\nLlBhZ2Vz 69929\nIGluc3BlY3RvcnM= 69930\nTWV4aWNv 69931\nIFZlcmU= 69932\nUHJlYw== 69933\nIFNjYWw= 69934\naXNwZXJz 69935\nUnVubmFibGU= 69936\nLm9yaWc= 69937\nIHNhaWxvcnM= 69938\nUGFyc2luZw== 69939\nIFZpc2l0b3Jz 69940\nJnR5cGU= 69941\ncG9wb3Zlcg== 69942\nPCgpLA== 69943\nIG93ZXM= 69944\nIHJlYWN0cw== 69945\nIERlZmluZWQ= 69946\nIHJlYWxtZW50ZQ== 69947\nIGRpY3RhdG9yc2hpcA== 69948\nYWRtaW5pc3Ry 69949\naWRlbmQ= 69950\nPUw= 69951\nc3RyY2FzZWNtcA== 69952\nXSU= 69953\n0L7Qs9GA0LDQvA== 69954\nZWR1bGE= 69955\nLWRlc2lnbmVk 69956\nQ09WRVI= 69957\nX0NoYW5uZWw= 69958\nIHByb2pldG8= 69959\neW1vb24= 69960\nQ0hLRVJSUQ== 69961\n6YeK 69962\nIHZlcmlmeWluZw== 69963\nL2tleQ== 69964\nLmZyb21DaGFyQ29kZQ== 69965\nLkJpdA== 69966\nX2J1ZGdldA== 69967\nICUi 69968\ndmV5b3I= 69969\nIHl1bQ== 69970\nIGV4dHJlbWVz 69971\nX0NSRQ== 69972\nZ2V0U3RhdHVz 69973\nc3Vic2VjdGlvbg== 69974\nIHNvYWtlZA== 69975\nIGdlbmF1 69976\nX0NIQVJBQ1RFUg== 69977\n5oyB 69978\nLW9ubGluZQ== 69979\nLnRvQ2hhckFycmF5 69980\nY2VyZXI= 69981\nIl0sIg== 69982\nIHN0cm9sbA== 69983\nIFl1YW4= 69984\nIFdhbmRlcg== 69985\nIHNpc3RlbQ== 69986\nX3Vj 69987\nKG5vbWJyZQ== 69988\nY2hhbnRtZW50 69989\nKGNsb3Nl 69990\nbWV0aA== 69991\nLXNlY3JldA== 69992\ncHNldWRv 69993\nQ291bnR5 69994\nQ09OVFJPTA== 69995\nIHNvbHZlbnQ= 69996\nIHNvYXJpbmc= 69997\nIHNwaWVz 69998\nTmF2SXRlbQ== 69999\nIHJlc2VtYmxhbmNl 70000\nKGJpdHM= 70001\nIGNlbGx1bA== 70002\nIGFzc29jaWF0aXZl 70003\nLmltd3JpdGU= 70004\nLmNvb3JkaW5hdGU= 70005\nXSwk 70006\nKHNr 70007\nKi8p 70008\nIG1vY2tz 70009\nIGp1bmc= 70010\nX0RPQw== 70011\nLXJ1bnRpbWU= 70012\nIEdpdmVz 70013\ndW5q 70014\nKHNlZw== 70015\nKFtc 70016\nIG5haA== 70017\nX2V4cGVjdA== 70018\nUm93SW5kZXg= 70019\nKGZvcmNl 70020\nIEdldFZhbHVl 70021\nIHN1bW1hcmllcw== 70022\nX1NIQVJF 70023\nLXRyYWluZWQ= 70024\nIEJsYW5j 70025\nIGZpdHRpbmdz 70026\nIHdhdGVyZnJvbnQ= 70027\nLk5vdGU= 70028\nIFdhbmQ= 70029\nb3ZlcmU= 70030\ncHJlZGljdGlvbg== 70031\nIGNzcg== 70032\nLnRvcEFuY2hvcg== 70033\nIFN0cm9rZQ== 70034\nX0ZpbHRlcg== 70035\nYXRoZQ== 70036\nICJcXCI= 70037\nIEFGRg== 70038\nPSIvIj4= 70039\nLlJlcXVlc3RNZXRob2Q= 70040\nkJzntKI= 70041\nIHdpdG5lc3Npbmc= 70042\nQXBwYXJlbnRseQ== 70043\nIG1kaQ== 70044\nc3RpY2tz 70045\nIEFsdg== 70046\nw6TDnw== 70047\nX2NvbnRpbg== 70048\nIGJvaWxlcnM= 70049\nIE1hcnhpc3Q= 70050\nSU9D 70051\nbmVybw== 70052\naW5uYWNsZQ== 70053\nTGl0 70054\nY2Vj 70055\nS2V5UHJlc3M= 70056\nR2V0RGF0YQ== 70057\nIGlzbnQ= 70058\n0YDQvtCy0LXRgA== 70059\nIHFyeQ== 70060\nUm9vdEVsZW1lbnQ= 70061\nIE5TQ29kZXI= 70062\nLmdldE51bQ== 70063\nIHRocmVlc29tZQ== 70064\nVXNlcw== 70065\nLiJf 70066\nIENvbnRpbnVvdXM= 70067\nIHBvcHVsaXN0 70068\nIFBzeWNob2xvZ2ljYWw= 70069\nX2N5Y2xlcw== 70070\nIGlmZGVm 70071\naXBoZXJhbHM= 70072\nCSAgICAgICAgICA= 70073\nIGFkdmlzZXM= 70074\nIENvbXBhbmlvbg== 70075\ndHJpZ2h0 70076\nIGdyb3dlcnM= 70077\nIFNPQ0tFVA== 70078\neW1jZQ== 70079\nUlNT 70080\nbWVtYmVyT2Y= 70081\nVG91Y2hhYmxl 70082\nX2FycmF5cw== 70083\nIGp1bXBlcg== 70084\nIGhlcnBlcw== 70085\nIFRpdHM= 70086\nIFRlbGVmb24= 70087\nX1BBTkVM 70088\ndWdlbg== 70089\n5YyX5Lqs 70090\nLlNpdGU= 70091\nX3VucmVnaXN0ZXI= 70092\nX2Nocg== 70093\nLnRm 70094\nLWh1bWFu 70095\nIGFzb2Np 70096\nIHF1ZWVucw== 70097\nQW50aG9ueQ== 70098\nIHN0cmluZ2VudA== 70099\nIG1vbGVzdA== 70100\nc2V0SWNvbg== 70101\nSEVFTA== 70102\nSEVMUA== 70103\nRERT 70104\nLmNtcw== 70105\nSVNUUklCVVQ= 70106\nY2llcw== 70107\nLmZvckNoaWxk 70108\nLmNoaw== 70109\nIE90dG9tYW4= 70110\nIFRQUA== 70111\nIG1pbw== 70112\nIEJ1Zg== 70113\nYm9h 70114\nVmVyc2lvbnM= 70115\nKGxvY2FsZQ== 70116\nIFJhaWxyb2Fk 70117\nYmNj 70118\nLyoqPA== 70119\nLXBhaWQ= 70120\nIGNlbGVyeQ== 70121\nYXRpc2NoZQ== 70122\nZ2V0T3B0aW9u 70123\nb3Jpb3VzbHk= 70124\nIGFkYXB0ZXJz 70125\nU3RvcmVz 70126\nL3NhdmU= 70127\nIEJhc2lz 70128\n0Y7Rgg== 70129\nIExhZA== 70130\nX3JlbGF0aW9uc2hpcA== 70131\nIENsdWJz 70132\nIOCo 70133\nOiI8PA== 70134\nX01JU0M= 70135\nVmlzdWFsaXphdGlvbg== 70136\nIG1pcnJvcmVk 70137\nZXNwZXI= 70138\nU3RyTG4= 70139\nIHJlc3BvbnNlT2JqZWN0 70140\n5ZCR 70141\nLmVuY29kZXI= 70142\nLS0tLS0tLS0tCgo= 70143\nIGdyaWRWaWV3 70144\nX2luZGVudA== 70145\nYW50d29ydA== 70146\nIGFycml2YWxz 70147\nIFNldHRsZW1lbnQ= 70148\nVmlld0luaXQ= 70149\nLXZhbHVlcw== 70150\nIHdhdGVyZmFsbA== 70151\nIGluY2FyY2VyYXRpb24= 70152\nIFRlZW5z 70153\nCXNpZ24= 70154\naW1tdW5l 70155\nLnNlY29uZGFyeQ== 70156\nIHZpZGVvZXI= 70157\nIOi+k+WFpQ== 70158\nIGludGltaWRhdGlvbg== 70159\nZW5kYWxl 70160\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 70161\nIGluc2lnaHRmdWw= 70162\nIHNhbmRz 70163\nIHBob3RvZ3JhcGhpYw== 70164\nUGFnaW5hdG9y 70165\nIGRpc2NpcGxpbmVk 70166\nX1RMUw== 70167\nXSkpLA== 70168\ncmxlbg== 70169\nPGNlbnRlcg== 70170\nX1BDTQ== 70171\nS2VsbHk= 70172\nLWJpbGxpb24= 70173\nLmN4 70174\nIGpldXg= 70175\nIGZpbGVMaXN0 70176\nIFFEaWFsb2c= 70177\ndHJhY3RpdmU= 70178\nRHQ= 70179\nIGVzdHJvZ2Vu 70180\nIHN0YXJjaA== 70181\nX2VtaXQ= 70182\nINC30LDQv9GA0L7RgQ== 70183\nIFF1YXJ0 70184\nIGluYWR2ZXJ0ZW50bHk= 70185\nIHRyb25n 70186\nc2hpcG1lbnQ= 70187\nIE5PUg== 70188\nIFNjcmVlbmluZw== 70189\nIERpc2Nvbm5lY3Q= 70190\nbWVubw== 70191\nIFdvcnN0 70192\nIE5y 70193\ne2s= 70194\nc3Bs 70195\nX2N0cg== 70196\nLnNvcnRlZA== 70197\nLXBsYWNlaG9sZGVy 70198\nKCk7Ig== 70199\naHVyc3Q= 70200\nLWhpdA== 70201\nLnNvbHZl 70202\n566X 70203\nIHVuZGVhZA== 70204\nIHdoaW1z 70205\nIGdldERlZmF1bHQ= 70206\nIE5pa2tp 70207\nYXNzZW1ibGU= 70208\nIHJlbG9jYXRlZA== 70209\nLXJldA== 70210\nSXRhbGlhbg== 70211\nOlN5c3RlbQ== 70212\nLnNjaGVkdWxlcg== 70213\n4oCcU28= 70214\nRm9yYmlkZGVu 70215\nQVZPUg== 70216\nemlhxYI= 70217\nLkFkYW0= 70218\nCWNhbnZhcw== 70219\nIHBhcnRuZXJpbmc= 70220\nIGd5bW4= 70221\nIG1hbmlj 70222\nRGlmZmVyZW50 70223\nIMOlcmh1cw== 70224\nIGZlcnRpbGU= 70225\nY2xm 70226\nLQ0K 70227\nLnJldmlldw== 70228\nb2RhYmxl 70229\nIEJvdW5kcw== 70230\nb2Jhbw== 70231\nIFBhcGVyYmFjaw== 70232\nIG1vZGlmaWM= 70233\nY2hlY2twb2ludA== 70234\nIEFwcEJ1bmRsZQ== 70235\nIHN0YWJpbGl6ZQ== 70236\nIEF1ZGlvQ2xpcA== 70237\nbW9udGhseQ== 70238\nLmJlaA== 70239\nIGZsb3I= 70240\nIGJvbmRlZA== 70241\nIFdvcmtvdXQ= 70242\nY29taW5ncw== 70243\nIHJhYmJpdHM= 70244\nIEJBTA== 70245\nQ0NS 70246\nX3Z1ZQ== 70247\nIExldml0cmE= 70248\nIGxpYmVydGluZQ== 70249\nIGNoYWxsZW5nZXI= 70250\nIFZhY2F0aW9u 70251\nVG9G 70252\nfSQv 70253\nX0RyYXc= 70254\nIGZlbmNlcw== 70255\nIGRhdGFzb3VyY2U= 70256\nIHBhcGVs 70257\nc2xpY2s= 70258\nX21lcw== 70259\nIFVJU3Rvcnlib2FyZFNlZ3Vl 70260\nKFRhZw== 70261\nIOWvuQ== 70262\nICctJyk= 70263\nX0NMQVNTRVM= 70264\nKFJlbmRlcg== 70265\nCWZ3cml0ZQ== 70266\nVUVE 70267\nQUVT 70268\nKGpzb25QYXRo 70269\nIHNsb3dz 70270\nPkRlc2NyaXB0aW9u 70271\nIGVucmljaG1lbnQ= 70272\nIGl0ZW1wcm9w 70273\nIFBvdmVydHk= 70274\nIGFic29yYmluZw== 70275\nIFBzeWNobw== 70276\n5rGf 70277\nLC4KCg== 70278\nSW52ZXJzZQ== 70279\nIGFkanVk 70280\naWdpZEJvZHk= 70281\nemlvbmk= 70282\nICInLiQ= 70283\n5LiN5a2Y5Zyo 70284\nVGhhaQ== 70285\nIHNsYWlu 70286\nIGJydXRhbGx5 70287\nIFBlcnNwZWN0aXZl 70288\nIFJldGlyZW1lbnQ= 70289\nJHJz 70290\nIHNlcnZpY2VOYW1l 70291\nIOyI 70292\nLXByb2Nlc3Npbmc= 70293\nYnJhbmRz 70294\nOmVycm9y 70295\nKHByb3BlcnR5TmFtZQ== 70296\nIEJvZWg= 70297\nL2Nt 70298\nL3JlYWQ= 70299\nQU1C 70300\nIHJvdGF0aW9ucw== 70301\nLndvcmtzcGFjZQ== 70302\nOnk= 70303\nIHVwaG9s 70304\ndW5reQ== 70305\nIEJyYWNl 70306\nL21ldGE= 70307\nIEJyYXZl 70308\nYWNqZQ== 70309\nKFVJbnQ= 70310\nIHZpZWlsbGU= 70311\ncmFkaQ== 70312\nX2R5bg== 70313\nTlc= 70314\nbG9zZXI= 70315\nZXJ1c2Zvcm0= 70316\nIEJhcnRvbg== 70317\nIGZhcmVz 70318\nIE11aw== 70319\n4buHdQ== 70320\nIEF1ZGlvU291cmNl 70321\nKChf 70322\nLkJpZw== 70323\nLm9yZ2FuaXphdGlvbg== 70324\nIFRyaWNr 70325\nIGJsdXNo 70326\nKFRZUEU= 70327\nIFJlbGF0aXZlTGF5b3V0 70328\nbGVjdHJvbg== 70329\nXX0i 70330\nIFphcA== 70331\nIFR3ZWx2ZQ== 70332\nOkw= 70333\nIHN0aWZmbmVzcw== 70334\nX0hFTA== 70335\nIHNwZXA= 70336\nKGNvZGVy 70337\nIHRhbWFuaG8= 70338\nIGFudGlveGlkYW50 70339\nIGhvc3BpdGFsaXplZA== 70340\nR1BD 70341\nIHNjcnV0aW4= 70342\n4buBbg== 70343\nIFNa 70344\nIEp1bGl1cw== 70345\nIFNhYmI= 70346\nZWxvcg== 70347\nKG1j 70348\n6YeM 70349\nIFBpbnM= 70350\nIG1vZGVyYXRlbHk= 70351\nIEvDvA== 70352\nb3JnYW5pemF0aW9ucw== 70353\nIFNDT1JF 70354\nIHNjb3Vy 70355\nIGNob3I= 70356\nIFVJRWRnZUluc2V0cw== 70357\nIHNrdWxsZQ== 70358\nX29wZXJhbmQ= 70359\nLmdzdGF0aWM= 70360\nL25naW54 70361\nIGdldFdpZHRo 70362\nQmF0dGVyeQ== 70363\nIFNldHRlcg== 70364\nbUE= 70365\nKFJlc291cmNlcw== 70366\nX3BsYXlsaXN0 70367\nIG1hbmdv 70368\nIE9SRA== 70369\nYW5raW5k 70370\nZXdheXM= 70371\nPyks 70372\nIEdMVVQ= 70373\nIGp1c3Rl 70374\nIHBheWVy 70375\nKGNhbQ== 70376\nIFRlYWNo 70377\nIEZsdXg= 70378\nIG91dHNwb2tlbg== 70379\nIFN0cmluZ1V0aWw= 70380\nIFpoYW8= 70381\nLkhlbHBlcg== 70382\nIGVzdGlsbw== 70383\nIEFudGhyb3A= 70384\nIEd1YXJkcw== 70385\nVm9jw6o= 70386\nOlsn 70387\nCXByb2R1Y3Q= 70388\ndXBkYXRlZEF0 70389\nIGluc3BpcmVz 70390\ncXc= 70391\nQkxFTQ== 70392\nYWtpc3Rhbg== 70393\nIGN6xJk= 70394\nLWhlYXJ0ZWQ= 70395\nIENvbXBlbnNhdGlvbg== 70396\n0LjQsw== 70397\nIGNvbWE= 70398\nIEZpYXQ= 70399\nIHhtbGh0dHA= 70400\nIHJlZmVycmFscw== 70401\nIHNwZWN0YXRvcnM= 70402\nIFRvcw== 70403\naXNvcw== 70404\nSU1QTEVNRU5U 70405\nIGVudHJlcHJlbmV1cmlhbA== 70406\nIFNjb3V0cw== 70407\nIEFsb25l 70408\nYnJva2Vy 70409\nUHJvZHVjdElk 70410\nIEtvYmU= 70411\nIGNoYXVk 70412\nL2ZlYXR1cmVz 70413\nIHJvb21tYXRl 70414\nIFByb2plY3Rpb24= 70415\nYXZvdXJpdGVz 70416\nX0pPSU4= 70417\nIEFWQw== 70418\nX3BoeXM= 70419\nS2V5UHJlc3NlZA== 70420\nLDw= 70421\nIHVucmVhY2hhYmxl 70422\nIENpdGF0aW9u 70423\nW2NoYW5uZWw= 70424\nc3RhcnRzd2l0aA== 70425\nIEphZ3VhcnM= 70426\nLklzRmFsc2U= 70427\nbWVtYmVyc2hpcA== 70428\nQXR0ZW50aW9u 70429\nIHJlbW9kZWxpbmc= 70430\nIENpbmR5 70431\nIGNsaW5pY2FsbHk= 70432\nIG1pbGxlbm5pYWxz 70433\nIM60 70434\nIHJmbA== 70435\nZW5ldA== 70436\nIG9icmln 70437\nIHZvbHVudGVlcmluZw== 70438\nQ3JlZGl0cw== 70439\nCWFy 70440\nIHJlc2lzdGluZw== 70441\nIFByb2R1a3Q= 70442\nPT09Ig== 70443\nIGNvbmVjdA== 70444\nIHJpag== 70445\nINeU 70446\nIHB1YmxpY0tleQ== 70447\nIG95 70448\nIEJ1dHQ= 70449\nX21pc2M= 70450\nIEJlc3Rl 70451\nIFBMQw== 70452\nIOafpQ== 70453\nIEJveEZpdA== 70454\nIiIu 70455\nVGVzdEZpeHR1cmU= 70456\nIGNoYXR0ZXI= 70457\nIGRvb3J3YXk= 70458\neXNpemU= 70459\nINGH0YI= 70460\nSUNUVVJF 70461\nPScuLi8= 70462\nc2hvd24= 70463\nX3dlYXRoZXI= 70464\nIExvZ01hbmFnZXI= 70465\nXX0iCg== 70466\nIGNvbG91cmZ1bA== 70467\nIHJ1bW9yZWQ= 70468\nIGzDpQ== 70469\nIHByb2Jz 70470\nCWJ1aWxk 70471\nIOWmgg== 70472\nLnJldg== 70473\nIGludGVyY2VwdGVk 70474\nR2F5 70475\nTGlzdENvbXBvbmVudA== 70476\nIHBpw6g= 70477\nIkF0 70478\nIGFnYXI= 70479\nIEd1bmQ= 70480\nX0FFUw== 70481\n7IM= 70482\njpjsnbQ= 70483\nIGF1dGhvcmlzZWQ= 70484\nIENoYWxs 70485\nX2xvZ291dA== 70486\nY3Jvbg== 70487\nYXRlZ2llcw== 70488\ncGVyc2lzdGVudA== 70489\nIEFuZEFsc28= 70490\ndXN6 70491\nX3Jlc3RhcnQ= 70492\nIGRlY2lk 70493\nemY= 70494\nIHBhZ2luYXRvcg== 70495\nb2xsZXI= 70496\nIEhH 70497\nT3BhcXVl 70498\nc2VhdQ== 70499\nIE9NSVQ= 70500\nIFRoaWNrbmVzcw== 70501\nIEFpcndheXM= 70502\nX2RlbQ== 70503\neXRpYw== 70504\nIHByb3Rlc3RlZA== 70505\nIHVwcmlzaW5n 70506\nIHN1aW5n 70507\nIFNoZWxieQ== 70508\nLmVuZXJneQ== 70509\nIGFsbGVsZQ== 70510\nLWJpZw== 70511\nU3RyaW5nQnVpbGRlcg== 70512\nIHNpZGVsaW5lcw== 70513\nIFRV 70514\nX2Fp 70515\nLkhPUklaT05UQUw= 70516\nIHJhZ2luZw== 70517\nLnRvTG9jYWxl 70518\nLm11c3Q= 70519\neEZGRg== 70520\nLm5paA== 70521\nICd7fSc= 70522\n2YjYrw== 70523\nIHB1bG1vbmFyeQ== 70524\nIOWPkQ== 70525\nIG7Dum1lcm9z 70526\nIE5hcG9sZW9u 70527\nX01ldGhvZEluZm8= 70528\nbGFzdGluZw== 70529\nIGV4cG9zdXJlcw== 70530\nIGVtYmFyaw== 70531\nX3VkcA== 70532\nS2lkcw== 70533\nX0NPTk5FQ1RFRA== 70534\nIHdlZWRz 70535\nUE9PTA== 70536\nIGtyaWo= 70537\nIG51aXM= 70538\nSk5JRVhQT1JU 70539\nYWFhYWFhYWE= 70540\nIO2P 70541\n5Lu9 70542\nIHJlcGxlbg== 70543\nIFRyaWFscw== 70544\nd2FzaA== 70545\ncnV0 70546\nLWJlZm9yZQ== 70547\nX0FUVEFDSE1FTlQ= 70548\nVU5U 70549\nXFZhbGlkYXRpb24= 70550\nVG9u 70551\nIGhlYWRpbmdz 70552\nUHJvYmFibHk= 70553\nIGZhYnJpY2F0ZWQ= 70554\nU29ja2V0QWRkcmVzcw== 70555\nIGxldHRyZQ== 70556\nKSI+ 70557\nIHZhY2NpbmF0ZWQ= 70558\nOmh0dHA= 70559\nIGNvbmRvbA== 70560\nc2hlZA== 70561\nIFNwaWVsZQ== 70562\n44OU 70563\nRGVwbG95 70564\nLkNvbnRyYWN0 70565\nLWJv 70566\nIy8= 70567\nIGludGVyY2VwdGlvbg== 70568\nIGlzYm4= 70569\nIG1hbm5lcnM= 70570\nL2Fj 70571\nCUNoZWNr 70572\nX2Zn 70573\nIGVuZFBvaW50 70574\nX3dlYXBvbg== 70575\nIHVuaW50ZW50aW9u 70576\nIHF1aXRz 70577\nX01JQw== 70578\nYXBpcm8= 70579\nIGJhbGxvb25z 70580\nIGdyYWRz 70581\nbWFycmllZA== 70582\nIDwqPg== 70583\nIGRpc3RvcnQ= 70584\nX01FU1NBR0VT 70585\nIFBTQQ== 70586\nX1BE 70587\nYWxzZXg= 70588\nIERpYWxvZ3Vl 70589\nIHJlZ2lzdHJhdGlvbnM= 70590\nIE9yaWdpbnM= 70591\nIGZsYW5r 70592\nPzsKCg== 70593\nOwoKCgoK 70594\nXS0k 70595\nIERlc3M= 70596\nLlN0YXR1c0JhZFJlcXVlc3Q= 70597\nIGluaGFiaXRlZA== 70598\nIGdpbHQ= 70599\nIFNURENBTEw= 70600\nLnRoZXRh 70601\nJCQkJA== 70602\naWNsYXNz 70603\nQXBhcnQ= 70604\nLmxpc3RCb3g= 70605\nIEJlbGFydXM= 70606\nIGRlbmVu 70607\nIFN1c3NleA== 70608\nCWRlbA== 70609\nX0VD 70610\nbmVhcmVzdA== 70611\nXE9yZGVy 70612\nUGFja2FnZXM= 70613\nZm9ybWVybHk= 70614\nKe+8jA== 70615\n6LSj 70616\nU2V4eQ== 70617\nIGhvcnJvcnM= 70618\nUk9BRENBU1Q= 70619\nQXBwcm94 70620\nRGVzaw== 70621\nQU1FRA== 70622\nLk5vcm1hbGl6ZQ== 70623\nX3B1Ymxpc2hlZA== 70624\nIERlYm9yYWg= 70625\n56eR 70626\nIHBvdW5kaW5n 70627\nIEVzcGVy 70628\nIERhbmNpbmc= 70629\nIExPT1A= 70630\nIFJveWFscw== 70631\nIGluc3VyZQ== 70632\nIEludmVzdG9ycw== 70633\nIHRoZW9sb2dpY2Fs 70634\nQXBwb2ludG1lbnQ= 70635\nIGNhdGVnb3JpY2Fs 70636\nIGNyYW4= 70637\nVmFsaWRpdHk= 70638\nIHJlc3BvbmRlcnM= 70639\nICgpDQo= 70640\nZXBhZA== 70641\nQklUUw== 70642\nIExhbWJlcnQ= 70643\nc3VtbQ== 70644\nYWNpZGFk 70645\nIGxvZ2dlZElu 70646\nPVc= 70647\nLkxvY2FsaXphdGlvbg== 70648\ncmlkbw== 70649\nJyIpCg== 70650\nIFdlYlZpZXc= 70651\nbG90aA== 70652\nIHRlYXNlcg== 70653\nIENhbmQ= 70654\nIGVwaWxlcHN5 70655\nSW5jcmVhc2U= 70656\naXZpdHlNYW5hZ2Vy 70657\nZW50cmFudA== 70658\nVGVsZWZvbm8= 70659\nLmN1cnJlbnRTdGF0ZQ== 70660\nIE5vZWw= 70661\nICAgICAgICAgICAgCQk= 70662\nIGV4aGF1c3Rpb24= 70663\nZWxpYW4= 70664\nIGNvdmV0ZWQ= 70665\nLXByb2R1Y3Rpb24= 70666\nKHN0ZGlu 70667\nIHByZWZlcmFibGU= 70668\nIG9mZmVuZGluZw== 70669\nKGNvbW1pdA== 70670\nCWFs 70671\nIHJlbG9jYXRl 70672\nIGFub21hbA== 70673\nIERpc2Vhc2Vz 70674\nIEZvcmc= 70675\nIFdJRkk= 70676\nIEtpbGxpbmc= 70677\ncXY= 70678\nIGZtYXA= 70679\nIGxsZXZhcg== 70680\ndGl0cmU= 70681\nLmVtcA== 70682\nLCRf 70683\nYXZy 70684\nQ2FuQmU= 70685\nX21h 70686\nIEhhd2tpbnM= 70687\nX1JPVVQ= 70688\nIGxvYWRJbWFnZQ== 70689\nIFdhaA== 70690\nIERlbXM= 70691\nIGluZGVudGF0aW9u 70692\ncHJlY2F0aW9u 70693\nIOaWh+S7tg== 70694\nIEJ1ZGFwZXN0 70695\nIHV0Yw== 70696\nKGhvdXJz 70697\nIHRyYW5ueQ== 70698\nQW5z 70699\nennEhw== 70700\nLnZlaGljbGU= 70701\nQ29pbnM= 70702\nIEJyYXVu 70703\nCVJlc3BvbnNl 70704\nIHZyaWo= 70705\nIHN0cmFuZ2VseQ== 70706\nIEZhc2M= 70707\nXFNlc3Npb24= 70708\nTW91c2VMaXN0ZW5lcg== 70709\nIFJvbGxz 70710\n4bqnbg== 70711\nLmdycGM= 70712\nSW50ZWdlckZpZWxk 70713\nCWFmeA== 70714\nRG9ja0NvbnRyb2w= 70715\nJVw= 70716\nJTsi 70717\nIGdpZ2c= 70718\nIGJvcnJvd2Vy 70719\nIGRpc3BvbmlibGVz 70720\nX1JFQ1Q= 70721\nIFRoaW4= 70722\nIHBlYXJs 70723\neEZC 70724\nIHJpcHBsZQ== 70725\nIGtIeg== 70726\nLmFjcXVpcmU= 70727\nYmlvcw== 70728\ndGFibGVGdXR1cmU= 70729\nL2FudGxy 70730\nb3JhY2xl 70731\nIEFSRUE= 70732\nIGludGVuc2VseQ== 70733\nIHByb3RvYnVm 70734\nIExFTkc= 70735\nIEhlYWRxdWFydGVycw== 70736\nYXRoZWQ= 70737\nTWluZA== 70738\naW5peg== 70739\nCVBhdGg= 70740\nWE1MTG9hZGVy 70741\nIGFsbG9jYXRpb25z 70742\nLnNsb3Q= 70743\nUHJvY0FkZHJlc3M= 70744\nIHJvbGVJZA== 70745\nOyc7Cg== 70746\nIEJSRUFL 70747\nIFBlcmZvcm1pbmc= 70748\nLk9yZGluYWxJZ25vcmVDYXNl 70749\nLWds 70750\nOmg= 70751\nIGRvd25sb2FkYWJsZQ== 70752\nIFN1YnNjcmliZXI= 70753\nYW5zZQ== 70754\nIGNoYXJhY3Rlcml6ZQ== 70755\nIHNocnVnZ2Vk 70756\nIHNjcA== 70757\nIGd1c3Rh 70758\nIG1ldGFsbA== 70759\nIGxhYm9yYXRvcmllcw== 70760\nIFhpbg== 70761\nIE1vdG9yY3ljbGU= 70762\nIGVnZXQ= 70763\nIGZpbmFuY2Vk 70764\nIE1PRElGWQ== 70765\nKlI= 70766\nQWk= 70767\nIGV4dHJlbWlzbQ== 70768\nIEhhbGlmYXg= 70769\nIHZhbW9z 70770\nJG51bQ== 70771\nIGltcGFydA== 70772\nYnJpY2s= 70773\nIOexuw== 70774\nIGZ1ZXJh 70775\nIFJPTEU= 70776\nLkNvbmN1cnJlbnQ= 70777\nX09QRVJBVE9S 70778\nIGN5bmljYWw= 70779\nIFJlZ2luYQ== 70780\nZ2V0RXJyb3I= 70781\n2KM= 70782\nYnN1Yg== 70783\nSmFwZ29sbHk= 70784\nIGluaGliaXRvcg== 70785\nSnVzdGljZQ== 70786\n44U= 70787\nTmV2ZXJ0aGVsZXNz 70788\nLXNlbQ== 70789\nLm9nZw== 70790\ncmVxdWVudA== 70791\nIG5vc3Nv 70792\nSGFpcg== 70793\nLkxpYnJhcnk= 70794\nbWRpcg== 70795\nIGhhcmk= 70796\nIFRhcmE= 70797\nIFBvcnRv 70798\nbmV0aW5ldA== 70799\nIGFsbGlhbmNlcw== 70800\nZWxsc2NoYWZ0 70801\nX1N1cmZhY2U= 70802\nCVZpZXc= 70803\nYXR1cmRheXM= 70804\nIHBvcGNvcm4= 70805\nX1BBUlNF 70806\nIFJpcHBsZQ== 70807\nIHBoYW50b20= 70808\nIG1vbmRv 70809\nLmNyZWF0ZUNsYXNz 70810\nIEtvcmVhbnM= 70811\nIGZhc2U= 70812\nIFdvY2hlbg== 70813\nIEVxdWlw 70814\nLWVpZ2h0 70815\nIFN0YXRlbWVudHM= 70816\nIGFkYXB0aW5n 70817\nUHJlY2lv 70818\nIEN1cmU= 70819\nIGNhbWJpYXI= 70820\n5rCR 70821\nIGhleGFkZWNpbWFs 70822\nc3BpcmFjeQ== 70823\nYmlsdA== 70824\nIFl1Zw== 70825\nIC0tLT4= 70826\nIFBQQw== 70827\naXN6 70828\nYWtlRnJvbU5pYg== 70829\nIERpc3A= 70830\nIEF0aGxldGljcw== 70831\nIG5pZ2h0Y2x1Yg== 70832\nR09PRA== 70833\nLnNldEdlb21ldHJ5 70834\nK1s= 70835\nL3NlbmQ= 70836\nIGJpbmFyaWVz 70837\nIHLDoXA= 70838\nOnJlcQ== 70839\nLWNvbnN1bWluZw== 70840\nZXJ0aW1l 70841\nVVBEQVRFRA== 70842\nX251bGxhYmxl 70843\nVklO 70844\ndWxpYQ== 70845\nY3lhbg== 70846\nIG1pc3VuZGVyc3RhbmRpbmc= 70847\nb3JpY2Fs 70848\nZGVncmVlcw== 70849\nTGVhZGluZw== 70850\nLkFS 70851\naWNrZXN0 70852\nTnVldm8= 70853\ndWZvcmlh 70854\nIGdvb2RpZXM= 70855\nIGZvcmVz 70856\nKCk8PCI= 70857\nYWRlbWlj 70858\nQWN0aW9uQ3JlYXRvcnM= 70859\nc2VydmVybmFtZQ== 70860\nKG50 70861\nZGJDb250ZXh0 70862\nIGFpcmJvcm5l 70863\nIGV4aGliaXRpb25z 70864\nY2VsZQ== 70865\nIHRlbGE= 70866\nPE1vdmll 70867\nKCd7fQ== 70868\nRXhwbGFuYXRpb24= 70869\nIGhPYmplY3Q= 70870\nIGJlYXJlcg== 70871\nZW5zaWJseQ== 70872\nbmlw 70873\nIEplcm9tZQ== 70874\nIENa 70875\nIGRhdGVGb3JtYXR0ZXI= 70876\nw6ljaWFs 70877\nU2V0TmFtZQ== 70878\nb3VjZQ== 70879\nIHJlZ3Jlc3M= 70880\nJkM= 70881\nKCkiPg== 70882\nLnNldFByZWZlcnJlZFNpemU= 70883\nIE1JRA== 70884\nIEFsZXNz 70885\nIGhvcnNlcG93ZXI= 70886\nIGF0bQ== 70887\nIFBhY2thZ2luZw== 70888\nIGNpcGhlcnRleHQ= 70889\nUmVxdWVzdE1ldGhvZA== 70890\nIGJlaWRlbg== 70891\n6KM= 70892\nIFBPVw== 70893\nLldyaXRlSGVhZGVy 70894\nZGlyZWN0b3I= 70895\nLWJ1dA== 70896\n44Gg44GV44GE 70897\naW5jZXI= 70898\nX2Ru 70899\nISEhISE= 70900\nIG1hbnVmYWN0dXJlcw== 70901\nLlRleHRVdGlscw== 70902\nIGNvbnNjaW91c2x5 70903\nIGJvdW5jZWQ= 70904\nY3VsdHVyZQ== 70905\nIFNwYXI= 70906\nIFBpcGVy 70907\nLnByZXNz 70908\nLW93bmVy 70909\nIGV2YWx1YXRvcg== 70910\nIFNUUkVBTQ== 70911\nLlBpY3R1cmVCb3hTaXplTW9kZQ== 70912\nIHN1Z2Fycw== 70913\nU2NyZWVuV2lkdGg= 70914\nIG5leHRTdGF0ZQ== 70915\nIGl2b3J5 70916\nIGJydW5jaA== 70917\nZGVuc2l0eQ== 70918\nX09X 70919\nIENvcm9uYXZpcnVz 70920\nIENGUg== 70921\nYmFr 70922\nXENhdGVnb3J5 70923\n5pWw57uE 70924\nIGludm9rZXZpcnR1YWw= 70925\nfSgpCg== 70926\nIHN1amV0 70927\nLW1hcmtlcg== 70928\naXNkaWdpdA== 70929\nIE1vYmls 70930\nIEpzb25SZXF1ZXN0QmVoYXZpb3I= 70931\nX1JFTU9URQ== 70932\nLmV4aXN0c1N5bmM= 70933\nIHJpY2hlcw== 70934\nLnByZXNlbnRlcg== 70935\nIGdsQ29sb3I= 70936\nIGhhbnlh 70937\nIGZvcnRyZXNz 70938\nIGZsYXNoZWQ= 70939\ndml6 70940\ncmVxdWVudGx5 70941\nYnVhdA== 70942\nJGNvbg== 70943\nPnw= 70944\nLkZ1bmM= 70945\nIGh1bW9yb3Vz 70946\ndWVt 70947\nLlpFUk8= 70948\nIFNUTA== 70949\nIEJ1aw== 70950\nL3NhbXBsZQ== 70951\nIEdyb3M= 70952\nUmVjaXBlcw== 70953\nIGluZmxhdGVk 70954\nIHN3dW5n 70955\nOkY= 70956\nRmFjaW5n 70957\nLlRoZW1l 70958\n0L3QuNC6 70959\nIHNwbGVuZGlk 70960\nIHJlcXVlc3RJZA== 70961\nLkNlbnRlclNjcmVlbg== 70962\nL2F1dG9sb2Fk 70963\nZW1iZWRkZWQ= 70964\nX2RlcGFydA== 70965\nIFBvcnRz 70966\n4LmD 70967\n0LDQudC0 70968\nZGlzY3Vzc2lvbg== 70969\nX2NvbnN1bQ== 70970\nIHNjb3V0cw== 70971\nIGNvbGFib3I= 70972\nLlN0YWdl 70973\nLm5hbm8= 70974\nZWxkb3Jm 70975\nIGdlbWFjaHQ= 70976\nICAgICAgICAgICAgICAgICAgICAgICAgICAK 70977\nIHBvbGljeW1ha2Vycw== 70978\nX1BLVA== 70979\nLFRo 70980\nb2t5 70981\nX1VJRA== 70982\nUGluZw== 70983\nIG9yY2hlc3Q= 70984\nIG9wdGljcw== 70985\ndWhhbg== 70986\nIFhPUg== 70987\nIGVzcGHDsW9s 70988\nIEFkaWRhcw== 70989\ncm5n 70990\nbWFucw== 70991\nLnZzdGFjaw== 70992\nIGdldGF3YXk= 70993\nIGhpZXJhcmNoaWNhbA== 70994\nYW5vaWE= 70995\nIEJpdG1hcEZhY3Rvcnk= 70996\ncmVhbG0= 70997\nCWFw 70998\nX2FwcHM= 70999\nLWRpdmlkZXI= 71000\nLmRyYXdlcg== 71001\nIEhBUkQ= 71002\nJ107Pz4K 71003\nLXBhY2tlZA== 71004\n5rK7 71005\nX1NUUlVDVFVSRQ== 71006\nW1k= 71007\naVBhcmFt 71008\nKGVx 71009\nIGVuY29tcGFzc2Vz 71010\nIFwKCg== 71011\nLT5b 71012\nJnV0bQ== 71013\nZ3JvdXBvbg== 71014\nc3RyYXRl 71015\nRFk= 71016\nb21vcnBoaWM= 71017\nJzpb 71018\nIGdyYXZpdGF0aW9uYWw= 71019\nIE1pY2hh 71020\nIFRlbmNlbnQ= 71021\nIGNvYWNoZWQ= 71022\n7Lac 71023\n0YPQvNC10L3Rgg== 71024\nL21vYmlsZQ== 71025\nTW91c2VEb3du 71026\nYnVk 71027\nIFlhcw== 71028\nIFByb3ZpZGVycw== 71029\nTlo= 71030\nCXJlcG9ydA== 71031\nZXJybXNn 71032\nIGltYWdlUGF0aA== 71033\nYWN0ZXJpYWw= 71034\nIE1hbmdh 71035\nd2lja2x1bmc= 71036\nKHVzdWFyaW8= 71037\nIikpOw0KDQo= 71038\nLyoqKg== 71039\nIG9yZ2FuaXNl 71040\nSW5kZXhlZA== 71041\nX1FVQUw= 71042\nKFB5T2JqZWN0 71043\nIHN1cnJlbmRlcmVk 71044\nUE9DSA== 71045\nIE5PVEVT 71046\nXFwi 71047\nLWpvYg== 71048\nIHNldmVudHk= 71049\nIyMjIwo= 71050\nIE1hbm9y 71051\nIGRvd25yaWdodA== 71052\nIHRpbWVmcmFtZQ== 71053\naW5zdXJhbmNl 71054\nY2hlY2tlcg== 71055\nIFNFQ1JFVA== 71056\nIGVjaG9lcw== 71057\nIENhcm1lbg== 71058\nLnNldEhvcml6b250YWxBbGlnbm1lbnQ= 71059\nIGlzQ2hlY2tlZA== 71060\nIFRPUg== 71061\nX25u 71062\nKCco 71063\nRmV0Y2hSZXF1ZXN0 71064\nIFByaW50ZWQ= 71065\nRmx1aWQ= 71066\nIFNUQUNL 71067\nR0VT 71068\nYWlnbmVk 71069\naWdvcg== 71070\nLlVua25vd24= 71071\nQ0JD 71072\nIENhcmxzb24= 71073\nLlVSSQ== 71074\nIHBsaWdodA== 71075\nL3N0YXJ0 71076\nIFBlcnNvbm5lbA== 71077\nIFBSRUZJWA== 71078\nLCoq 71079\nIGxpbWl0ZQ== 71080\nX2hlYXQ= 71081\nJe+8jA== 71082\nIERvbm5l 71083\nZ2V0Tm9kZQ== 71084\nIFNjaWVudG9sb2d5 71085\nIGNvbWV0 71086\nIHdlbmln 71087\nQXNpZGU= 71088\nIE1QRUc= 71089\nJz8= 71090\ndmFyaWFibHk= 71091\nLmVuZERhdGU= 71092\nIHVuY29udA== 71093\nIFNjb3Jlcw== 71094\nIExvZ2luRm9ybQ== 71095\nLmdlbmVyYXRlZA== 71096\nLGNo 71097\nLW1hcg== 71098\nIE5lZA== 71099\nIGV2ZW50SWQ= 71100\nK3A= 71101\nIFNJTg== 71102\nL3Jlc2V0 71103\nLlJFQUNU 71104\nIE1lc3Np 71105\nX1JBTks= 71106\nLndyaXRlRmlsZQ== 71107\nIGNyaXBw 71108\nZXN0aGV0aWM= 71109\nRVJTSVNU 71110\nIHJlaW1idXJzZW1lbnQ= 71111\nQ3VycmVudFZhbHVl 71112\nIHVuaW4= 71113\nRG93bkxhdGNo 71114\nIHBhZGRpbmdSaWdodA== 71115\nIHN0b2NrZWQ= 71116\nLycu 71117\nIHJlcGF5bWVudA== 71118\ndHJhaw== 71119\nL2JhY2tlbmQ= 71120\nINC40LfQvNC10L0= 71121\nQ1NS 71122\nIHByZXZlbnRpdmU= 71123\nIHBhbnRhbGxh 71124\nX3RyaW0= 71125\nUGVkaWRv 71126\naG9zcGl0YWw= 71127\nIG1hbmFnZWFibGU= 71128\ncm91dGVQYXJhbXM= 71129\ndGV4dHVyZXM= 71130\nLi4uLi4uCgo= 71131\nIHPDqWxlY3Rpb24= 71132\nTmFtZVZhbHVlUGFpcg== 71133\nIHBvbGx1dA== 71134\nTW9kZXM= 71135\nIExhdWQ= 71136\namF5 71137\nIFVycw== 71138\nIHNpZ25lcg== 71139\nIEpK 71140\nIENoZXJva2Vl 71141\nX0VYSVNUUw== 71142\nIGR3YXI= 71143\nICgkKCcj 71144\nIHJlZWY= 71145\nPnsk 71146\nIEJheWxvcg== 71147\nIE1vZGVsU3RhdGU= 71148\nLV8= 71149\nIFN0cnVjdHVyZXM= 71150\nIHNvdXZlbnQ= 71151\nU3BlY2lmeQ== 71152\nKHBpcGU= 71153\nIGZyYWNraW5n 71154\nIEdQQQ== 71155\nIGJlbGU= 71156\nCQkJCQkJCSAgIA== 71157\nIE1pbm9yaXR5 71158\nIHR1ZA== 71159\nIG9wZW5uZXNz 71160\nIElsbHVzdHJhdGVk 71161\nIG94aWRhdGlvbg== 71162\nIE5L 71163\nCVVwZGF0ZQ== 71164\nIEVNUw== 71165\nIFRlZGR5 71166\nIGdlbmVyYWxz 71167\nCU1hdA== 71168\nIHJhZGlvcw== 71169\nIEFudGlxdWU= 71170\nY29ub215 71171\nIFNxdWFkcm9u 71172\nKScsJw== 71173\n5aOw 71174\nIHlvdXJl 71175\nIE1haW5QYWdl 71176\nIGJlaGF2aW91cnM= 71177\nZW5naHQ= 71178\nKEAiJUAiLA== 71179\nIHRlc3RjYXNl 71180\nIENvbXBpbGF0aW9u 71181\nIGZsYXZvdXJz 71182\nIEV4dGVuZA== 71183\naWxsYXRvcg== 71184\nIGNvaA== 71185\nIHNwbGluZQ== 71186\nIEtH 71187\nLXBheQ== 71188\nIGNvbW11bmlzbQ== 71189\nIEJ1c2luZXNzZXM= 71190\nb2NraW5n 71191\nLk1heExlbmd0aA== 71192\nYXNzYW5kcmE= 71193\ncXVpcmluZw== 71194\nYWRkZW4= 71195\nIEplYg== 71196\nX2ZhdWx0 71197\nW2ZpbGU= 71198\nIHByb21pbmVuY2U= 71199\nZGlzY2lwbGluYXJ5 71200\n4oCUdGhleQ== 71201\nX2V4dGVudA== 71202\nIFZJQw== 71203\nIGVudGFpbHM= 71204\nLnBhcnRuZXI= 71205\nIGhpcHBvYw== 71206\nTGVhZ3Vl 71207\n55S3 71208\nd2lwZQ== 71209\nLXNwaW5uZXI= 71210\nIHNhbHV0ZQ== 71211\nIFN1cmdpY2Fs 71212\nKG91dHB1dHM= 71213\nd29ya2Vk 71214\nW3N0cmxlbg== 71215\nYXBwb2ludGVk 71216\nIEhlZw== 71217\nIEFDUEk= 71218\nKFte 71219\ndWFsYQ== 71220\nX3RvbA== 71221\nIFJpdA== 71222\nLlBheW1lbnQ= 71223\na293c2tp 71224\nIHdhbG1hcnQ= 71225\ncmVxdWlyZW1lbnRz 71226\nIEZJTlNFUQ== 71227\nX0JBQ0tHUk9VTkQ= 71228\nIE9zYm9ybmU= 71229\nKGVycm9yTWVzc2FnZQ== 71230\nUmVwb3J0aW5n 71231\nIGF1Y3Rpb25z 71232\nIGNvbWJvcw== 71233\nIE5vdGljZWQ= 71234\nX29jdA== 71235\nIHByaW1lcm8= 71236\ndGFpcmU= 71237\nX2hy 71238\nINC80L7QtA== 71239\nIGNvbnRyYWRpY3Rvcnk= 71240\nPSJA 71241\nYWNoaW5lcw== 71242\nKG9wdGFyZw== 71243\nIFBlbmd1aW4= 71244\nIEFiYmFz 71245\nIHN1YmxpbWU= 71246\nIHBhZ2VhYmxl 71247\nIERlZmVuc2l2ZQ== 71248\nIGRpc3RpbmN0bHk= 71249\nIEF1dG9tYXRpY2FsbHk= 71250\nVW5kZXJzdGFuZGluZw== 71251\nRXF1YWxpdHlDb21wYXJlcg== 71252\nZ290YQ== 71253\nICI6Og== 71254\nIHB1bHZlcg== 71255\nIEJhdHRsZXM= 71256\nIHVucGFyYWxsZWxlZA== 71257\nVENIQQ== 71258\nIGNvbnN0cnVlZA== 71259\nLWFmZg== 71260\nIHByZWN1cnNvcg== 71261\nLWxmcw== 71262\nIG1hZHVyYXM= 71263\nIERhaXN5 71264\nIEFyYmVpdHM= 71265\nLk1hbmFnZW1lbnQ= 71266\nCUlu 71267\nIHJvYmVz 71268\nIHNww6lj 71269\n4oCcKA== 71270\nIG1hdGVybml0eQ== 71271\nZXh0ZW50 71272\nIFNwYWNlcg== 71273\nRGlkQXBwZWFy 71274\nCXVz 71275\nLmdldFJlcXVlc3REaXNwYXRjaGVy 71276\nKGNvbHM= 71277\nIHBsdW1tZXQ= 71278\n7IU= 71279\nIHsKCgoK 71280\nw6lyaWNh 71281\nIFNpemVz 71282\nLmVudW0= 71283\nLkhpZ2hsaWdodA== 71284\nICEhfTwv 71285\nQVRURVJZ 71286\nIFNvcm9z 71287\nR0xmbG9hdA== 71288\n44KE 71289\nIEplbm5pbmdz 71290\nPz8KCg== 71291\nIFJvbWVv 71292\nID8+CgoK 71293\nV2Vubg== 71294\nIGNsaW1heA== 71295\nIGNyZW0= 71296\nX3RoYXQ= 71297\nW+KApg== 71298\nX2RvbWFpbnM= 71299\nX1JFUExZ 71300\nIGNvbXBsZXRh 71301\nVkVTVA== 71302\nX3BhcnRpY2xl 71303\nIHNvcA== 71304\nIGZhdGFsaXRpZXM= 71305\naW1wbGlmeQ== 71306\nIFNLRg== 71307\nIGluZnVzaW9u 71308\nIEphdmllcg== 71309\nIGJhbGxldA== 71310\nIGFtaWdv 71311\nLndhbnQ= 71312\nIGNvbGxhZ2Vu 71313\nIExhd3llcg== 71314\nLlN0YXRlbWVudA== 71315\nLnJ0 71316\nYmFhcg== 71317\nRW5kUG9pbnQ= 71318\nIEJlaw== 71319\nU0hJUA== 71320\nIHBhdHJpYXJjaA== 71321\nIEF1bnQ= 71322\nX1RN 71323\nIG3DrW4= 71324\nIG1hc3RlcmVk 71325\nV1hZWg== 71326\nIGVzcG9z 71327\nPWxvZ2dpbmc= 71328\nIHJpZ2h0ZW91c25lc3M= 71329\ndG9ycmVudA== 71330\nIGJzdA== 71331\nX0NIQUlO 71332\nIG91dHNraXJ0cw== 71333\nKHJvdGF0aW9u 71334\nICcuJyk= 71335\naWdyYW50cw== 71336\nK2xzaQ== 71337\nIENDVFY= 71338\nX1BIQVNF 71339\nLmF6dXJl 71340\nX1Byb2Nlc3M= 71341\ndmFl 71342\nIFRyb3BpY2Fs 71343\nIEFua2FyYQ== 71344\naW1hZ2VWaWV3 71345\nX1JVTk5JTkc= 71346\nICopX18= 71347\n4bq/bg== 71348\nKGNsaQ== 71349\nc2NhdHRlcg== 71350\nIHNjaGU= 71351\nUmVnaXN0cmFy 71352\nIGFpcmluZw== 71353\nIHB5cGxvdA== 71354\naXNpw7Nu 71355\nL2N1c3RvbWVy 71356\nIHNpbXBsZW1lbnQ= 71357\nIGNsYXNzeQ== 71358\nIERXQw== 71359\nIEJhc2hhcg== 71360\nIERFVkVMTw== 71361\nIFZpY2s= 71362\nYXZhaWw= 71363\nIEjDtg== 71364\nX2V4dGVuZA== 71365\nZHJGYw== 71366\nLmlzTm90Qmxhbms= 71367\nIHBsYWlz 71368\nfH0K 71369\nIHBvcm5vZmls 71370\nbGFicw== 71371\nIGhhdXM= 71372\nIG9yaWdpbmF0aW5n 71373\nIHN1cnJvdW5kcw== 71374\nIFFVQUw= 71375\nbWVn 71376\nL2xvZ2dlcg== 71377\nW29iag== 71378\nIGlycmVzcG9uc2libGU= 71379\nIFB1YmxpY0tleQ== 71380\nSE9ORQ== 71381\nOicv 71382\naWJveA== 71383\nIEZWZWN0b3I= 71384\nfHsK 71385\nYXRhbG9hZGVy 71386\naGF3a3M= 71387\nSERS 71388\nIGVzY2FsYXRpb24= 71389\nIFBvZHNEdW1teQ== 71390\nZWxpdGU= 71391\nIHByZXN1cA== 71392\nQ2FjaGVk 71393\nPkc= 71394\nLm9wdGltaXplcg== 71395\nIFZpc2libGU= 71396\ntIA= 71397\nIG5lbg== 71398\nIHBjcw== 71399\nIElkbGU= 71400\nW0FueQ== 71401\nIGtleWJvYXJkcw== 71402\nIENPTVBPTkVOVA== 71403\nIHRpdGFuaXVt 71404\nKG11dA== 71405\nIExlZGdlcg== 71406\nIHByb3NwZXJvdXM= 71407\nZXRyb2ZpdA== 71408\nX0xM 71409\nX3BhdGllbnQ= 71410\nIHBkYXRh 71411\nIGtvbnRha3Rl 71412\nU3dpcGU= 71413\nIGNoZWVyZnVs 71414\nIEhvbmR1cmFz 71415\nIl1bJA== 71416\nIGhlbW9ycmg= 71417\nIjoiKw== 71418\nIGxlYXNpbmc= 71419\nIGluc3RhbGxz 71420\nIFBheA== 71421\nIExvZ2lzdGljcw== 71422\nIGtpbmV0aWM= 71423\nIFBob24= 71424\nX21vdmVtZW50 71425\nCWJ5dGVz 71426\nIGNpbmNv 71427\nIE1hZG5lc3M= 71428\nIikr 71429\nIEpF 71430\nX2lq 71431\nU2NlbmVNYW5hZ2Vy 71432\nIEJ1c3Q= 71433\ncHRlc3Q= 71434\nYWVh 71435\nIGJlc3Nlcg== 71436\nw61n 71437\n0LTQuNC9 71438\nKHRhc2tz 71439\nKCIoIg== 71440\nc2V0VHlwZQ== 71441\nKG91dGZpbGU= 71442\nCXJlc2V0 71443\nIEFSQw== 71444\nIG3DunNpY2E= 71445\nIFNoZWxm 71446\nIG1pblk= 71447\ncGNo 71448\nIHdlaWJlcg== 71449\naXNzb3I= 71450\nIHRyb3V2ZQ== 71451\nCUJ1dHRvbg== 71452\nIHJlZ2VuZXJhdGVk 71453\nxaNp 71454\naW1hY2hpbmVyeQ== 71455\nYmxvY2tpbmc= 71456\nLmRhdGFUYWJsZXM= 71457\nX2ZyYWM= 71458\nIEFkdmFudGFnZQ== 71459\nLnZpc2l0TWV0aG9k 71460\n6YeN5paw 71461\nIGV4dHJhcG9s 71462\nIHRlYXNpbmc= 71463\nIEhpdGNo 71464\nIEdlZWs= 71465\nRVNDTw== 71466\nIHdpY2g= 71467\nCWF4 71468\nX2RlY29y 71469\nIHNjcmVlbldpZHRo 71470\nIFNvcGhpYQ== 71471\nRm9yZ290 71472\nLnVuaQ== 71473\nIFZlbnR1cmU= 71474\nX2NvbGxpc2lvbg== 71475\nIGxhd21ha2Vy 71476\nKEVkaXQ= 71477\nYmxlcnM= 71478\nIGdldE5leHQ= 71479\n4oCUeW91 71480\nTWVkaWFQbGF5ZXI= 71481\nIEhvcmRl 71482\nIENvbmdyZXNzbWFu 71483\nb2JzZXJ2YXRpb25z 71484\nCXByb3BlcnR5 71485\nIDwtLQ== 71486\nQ3JlYXRlZEF0 71487\ndWJ5dGU= 71488\nIHF1YXJhbnRpbmU= 71489\nIGRpc3RyZXNzZWQ= 71490\nX0FQQg== 71491\nIEdvb2RtYW4= 71492\n44Kr 71493\nIHJlY29tZW5k 71494\nX1BSSU5URg== 71495\nRE9ORQ== 71496\nQmluZGFibGU= 71497\ncnN0cmlw 71498\nY2VudGFqZQ== 71499\nIFVuZXhwZWN0ZWQ= 71500\nIFNDSE9PTA== 71501\nIFByb2Zlc3Npb25hbHM= 71502\nIEdQVXM= 71503\nTGVzc29u 71504\nRXhjbHVzaXZl 71505\nIGF0cmF2 71506\nIERhbms= 71507\nIExhd3llcnM= 71508\nIFdhbHRvbg== 71509\nPltd 71510\nIGFsb3Vk 71511\nPSIuLi8uLi8uLi8= 71512\nIGRlYmF0aW5n 71513\nIEFWRw== 71514\nX1ZPTA== 71515\nL2NnaQ== 71516\nLmRlZw== 71517\nOmc= 71518\nLkluZm9m 71519\nTWVhc3VyZVNwZWM= 71520\nLnNvbmc= 71521\nbXRyZWU= 71522\ndWxscw== 71523\nSm9yZGFu 71524\nIENvdmVycw== 71525\nIGF0dHJpYnV0YWJsZQ== 71526\nIGplZGlz 71527\naWF0cmljcw== 71528\nIHJvdHRlcmRhbQ== 71529\nIG1lbGQ= 71530\nIENvbnRlbnRUeXBl 71531\nIG1hbnRsZQ== 71532\nIGFsaWNl 71533\nX2R1cGxpY2F0ZQ== 71534\nL0ludGVybmFs 71535\nIGZpbGVzaXpl 71536\nCWZpcmU= 71537\ncmVzZQ== 71538\nb25kZXJl 71539\nIGZhbWlsaWFyaXR5 71540\nIENyZXN0 71541\nIGthcm1h 71542\nIHRvcmlubw== 71543\nIG1lc2E= 71544\nL3RlbXA= 71545\nIGNoaXI= 71546\nIE92ZXJmbG93 71547\nIHRlbmVtb3M= 71548\ndW5paw== 71549\nTkVYVA== 71550\nQWxsZQ== 71551\nIG54dA== 71552\nTWFydA== 71553\nIGF0bA== 71554\nIHBlcmlvZG8= 71555\nX3lvdQ== 71556\nIH0pKS4= 71557\naW50ZXN0aW5hbA== 71558\nLkFkYXB0ZXJWaWV3 71559\nIGhlc2l0YW50 71560\nIGNvbXBhcmF0aXZlbHk= 71561\nLlVJbnQ= 71562\nKHZpZXdNb2RlbA== 71563\nIHNhbmdhdA== 71564\nIFJlc3BvbnNpdmU= 71565\nIFphY2s= 71566\n4oU= 71567\nSkFWQQ== 71568\nIEZ1bGxlcg== 71569\nIOKdpA== 71570\nLkNvbnN1bWVy 71571\nIGFuaw== 71572\nIHJlYWN0b3Jz 71573\nZnVjaw== 71574\nX3JhdA== 71575\nIHNlc3Npb25GYWN0b3J5 71576\nX2JhY2t3YXJk 71577\nIHNjcmFtYmxlZA== 71578\nCXRo 71579\nIGluc2Vuc2l0aXZl 71580\nIGNoYW1wcw== 71581\nIG5naW54 71582\nIGNvbmhlYw== 71583\nIEphc3Blcg== 71584\nLmZt 71585\nU3RyaWN0RXF1YWw= 71586\nYWNoc2Vu 71587\nLU5vdg== 71588\nbGFzc2Vu 71589\nLmludGVncmF0aW9u 71590\nKGxibA== 71591\nQ29tcG9zZQ== 71592\nIEZvbg== 71593\nw5o= 71594\nR3JhdGlz 71595\nIExpbWU= 71596\nIEFkYXB0ZXJWaWV3 71597\nIHBvaXNvbmVk 71598\nYW5jaG9ycw== 71599\n6K6+6K6h 71600\nJ10/PiI= 71601\nIHByb2N1cg== 71602\nSXRhbHk= 71603\nLk1PTlRI 71604\nIExVQQ== 71605\nIExpdGh1YW5pYQ== 71606\nIEhlYWRz 71607\nX0NIVU5L 71608\nIFBVU0g= 71609\nQXNwZWN0UmF0aW8= 71610\nIHdlZw== 71611\nIHZpZHM= 71612\nIFdlaW4= 71613\nCUlOVA== 71614\nc2Vzc2lvbklk 71615\nSW5kdXN0cnk= 71616\nIGRlbm91bmNlZA== 71617\nSktMTQ== 71618\nIFZhbmVzc2E= 71619\nLklkZW50aWZpZXI= 71620\ncHJvcHJp 71621\nINC40LM= 71622\nIHTDqWNu 71623\nIG1vc2FpYw== 71624\nU3RyZWFtUmVhZGVy 71625\nLVRo 71626\nZm9ydGg= 71627\nIGFkaGVyZW5jZQ== 71628\nYmF0ZQ== 71629\nIGtuaWdodHM= 71630\nc291bmRz 71631\nIHNhbGxl 71632\nT01FVA== 71633\n44K544OI 71634\nLXRt 71635\nIFJoZQ== 71636\nLkZpbGVPdXRwdXRTdHJlYW0= 71637\n5YiG57G7 71638\nIEVORw== 71639\naG9saWRheQ== 71640\nIENvbmdyYXR1bGF0aW9ucw== 71641\nKSgK 71642\nIGFnZ3JlZ2F0ZXM= 71643\nSE9PSw== 71644\nZXdpcmU= 71645\nU2VuYXRvcg== 71646\nIGVtYmVkZGluZ3M= 71647\nZXB5 71648\nKENPTQ== 71649\nIHJvYmJlcg== 71650\nw6R0ZXI= 71651\nd2FuZw== 71652\nX3RlYWNoZXI= 71653\nIHJlc2VudG1lbnQ= 71654\nIGxldHR1Y2U= 71655\nZXJyZXVy 71656\nKGlj 71657\nIFRhY3RpY2Fs 71658\nIENvbnRyYWN0cw== 71659\nIG3Dpm5k 71660\nIHNpdGlvcw== 71661\nIGJhc3RhbnRl 71662\nIG51ZXZvcw== 71663\nCU5kckZj 71664\nIHByaXZhdGVLZXk= 71665\ndWNjaA== 71666\nTU1kZA== 71667\nIOi+k+WHug== 71668\ndW1iYQ== 71669\nQGZvcmVhY2g= 71670\nOiIpOwoK 71671\nIHNsaXBwZXJ5 71672\nIEtleXN0b25l 71673\nIHBpb25lZXJpbmc= 71674\nX3RyaWFuZ2xl 71675\nKCIK 71676\nCQkJCQkJCQkgIA== 71677\nIEludGVydmVudGlvbg== 71678\nU0NJ 71679\nIGNKU09O 71680\nIHRlcm1pbmF0aW5n 71681\n67mE 71682\nIGJhYnlz 71683\nU3Vic2V0 71684\nIOuh 71685\nIHNldWxlbWVudA== 71686\nIG11ZXN0cmE= 71687\nRW50cmU= 71688\n5Lul5LiK 71689\nbmdv 71690\nImJ5dGVz 71691\nUVJTVA== 71692\nIHlwb3M= 71693\ncGVyc29uYQ== 71694\nIERlcGxveQ== 71695\nY2Vl 71696\nIOCu 71697\nLmdvYWw= 71698\nIGhhYml0YXRz 71699\nIGlzQWRtaW4= 71700\nIGV4cGxvaXRpbmc= 71701\nIHZlbnRpbA== 71702\nIEJhbGxz 71703\n2KfYqA== 71704\nIG1pbmRmdWxuZXNz 71705\nKGt3YXJncw== 71706\nIHJlc2VtYmxpbmc= 71707\nIGNob2ly 71708\nIG9uQmFja1ByZXNzZWQ= 71709\nIFNFQ1VSSVRZ 71710\nL2d0ZXN0 71711\nIGp1c3RpY2Vz 71712\nIGludGVnZXJWYWx1ZQ== 71713\nYmxhaA== 71714\nIEFpbQ== 71715\nX2ZpbmFsaXpl 71716\na2Vo 71717\nIENvbXBsZXhpdHk= 71718\nIGF1Z3VzdA== 71719\nZ2V0RWxlbWVudHNCeVRhZ05hbWU= 71720\nIHByZWFjaA== 71721\nIHByb251bmNpYXRpb24= 71722\nIFRyYXNo 71723\nLXBlcmNlbnQ= 71724\nX1BSSVY= 71725\nIEh1bnRz 71726\nIEN1cnNl 71727\ndWVsbGVu 71728\nIGhlYXZ5d2VpZ2h0 71729\nWGk= 71730\nCXNlbGVjdGVk 71731\nIE1jQ295 71732\n5byC5bi4 71733\nfD0K 71734\nIEJhdHRsZWZpZWxk 71735\nSXRlbUltYWdl 71736\nIGRlZHVjdGlvbnM= 71737\nIEVsZW1lbnRhbA== 71738\nKCkpOy8v 71739\nIEJ1cms= 71740\nfSkNCg0K 71741\nc3dpZnQ= 71742\nL2Z1bmN0aW9u 71743\nVXN1YWxseQ== 71744\nX1N0 71745\nX2ZlYXRz 71746\nIElzVmFsaWQ= 71747\nIHphZA== 71748\nSW1hZ2VDb250ZXh0 71749\nIGNsYXNzbmFtZQ== 71750\nIGRvbm5lcg== 71751\nIC0tPgoKCg== 71752\nIG1vdG9yY3ljbGVz 71753\nKycvJys= 71754\nIHNldEJhY2tncm91bmQ= 71755\nXENNUw== 71756\nLkFsbEFyZ3NDb25zdHJ1Y3Rvcg== 71757\nIExleGluZ3Rvbg== 71758\nLmV4YW1wbGVz 71759\nIFB1cnM= 71760\nUHVzaE1hdHJpeA== 71761\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 71762\nLmFkZFRhcmdldA== 71763\ncG9yYQ== 71764\nRnVsbHNjcmVlbg== 71765\nIGdvb2Y= 71766\naGxlbg== 71767\nw6RnZQ== 71768\nIENVUkw= 71769\nIEludGVyZXN0aW5n 71770\nIHJldHJpZXZlcw== 71771\nX09iag== 71772\naW5uZXNz 71773\nLS0tLS0KCg== 71774\nLnRzdg== 71775\nKElN 71776\nIEJyYXZlcw== 71777\nX0lTUg== 71778\nb3N0aQ== 71779\n4buT 71780\nIEV4dGVyaW9y 71781\nIENvdXJ0bmV5 71782\nIHJlc2lkdWVz 71783\nVGllcg== 71784\nLio7DQoNCg== 71785\nOmJsYWNr 71786\nd2ViVmlldw== 71787\nInBhdGg= 71788\nIG1hc2E= 71789\nXSE9Jw== 71790\nIE1hdGNoaW5n 71791\nZHVy 71792\nSnZt 71793\nPWNvbnRleHQ= 71794\nX1JJTkc= 71795\nIHByb3BvbmVudHM= 71796\nIFFTdHJpbmdMaXRlcmFs 71797\nIGluZmxhdGU= 71798\nPEZsb2F0 71799\nIERvbm92YW4= 71800\nKElP 71801\nSE9SVA== 71802\nIGRpc2FncmVlZA== 71803\naXNreQ== 71804\nYXNraW5n 71805\nX1ZFQw== 71806\nSEFTSA== 71807\nIG1hdGhz 71808\nIExhc3RseQ== 71809\nIGRlcHJlc3Npbmc= 71810\nLmVzdGFkbw== 71811\nIGhhbG8= 71812\nX2JsZQ== 71813\nIEdhYnJp 71814\nPFRSZXN1bHQ= 71815\nIHRyb29w 71816\nIGVudW1z 71817\nIFNFUklBTA== 71818\nbnVtZXJ1c2Zvcm0= 71819\nIENoaWM= 71820\nLWV4ZWM= 71821\nIGJhY2tsb2c= 71822\nIEJyYXZv 71823\nUG9wTWF0cml4 71824\nIEJydXQ= 71825\nIGJsb3F1ZQ== 71826\nIGp1bml0 71827\nIFdoaWxzdA== 71828\n0YbQuNGP 71829\nZmV3 71830\nrIE= 71831\nIFZhcmlldHk= 71832\nIFBvbGl0aWNv 71833\nZXhlbXBsZQ== 71834\nVXNlckNvbnRyb2xsZXI= 71835\nIGhhcmRlbmVk 71836\nYWtlbnM= 71837\nIFNlZWRlcg== 71838\nb3dhcmRz 71839\nY2hlY2tzdW0= 71840\nIFNhaQ== 71841\nVkVSVEVY 71842\nUmVzcG9uc2Vz 71843\ncGxvZGU= 71844\nLWhhcmQ= 71845\nU3BlY2llcw== 71846\nUmVuZGVyVGFyZ2V0 71847\nX0NIQVQ= 71848\nIHNob3djYXNlcw== 71849\naXRpbWF0ZQ== 71850\nX0ZPUkVBQ0g= 71851\nX0NPTkZJR1VSQVRJT04= 71852\nZWJh 71853\nIEVzc2VudGlhbGx5 71854\nKHBvbHk= 71855\nLWxlYXJuaW5n 71856\nIGfDpXI= 71857\nX3N1Y2M= 71858\nKE1hdA== 71859\nIGNvaWxz 71860\nYnJhcw== 71861\nIGFtYQ== 71862\nX21hdGNoaW5n 71863\naW5kdXN0cnk= 71864\nIE5vcnJpcw== 71865\nIEV4cG9zdXJl 71866\nIHBlcnZhc2l2ZQ== 71867\nIGRleg== 71868\n5peP 71869\nIGVsZWN0cm9uaWNhbGx5 71870\nRERS 71871\nIFN0aW0= 71872\nINGE0LDQudC70LA= 71873\nIG1hZHJl 71874\nbmVtb25pYw== 71875\na2ljaA== 71876\nIEZyYWdlbg== 71877\nIFJ1bmU= 71878\nIG9uVG91Y2g= 71879\nCXNjYWxl 71880\nIFBoYXJtYWM= 71881\nIE1hbmRhdG9yeQ== 71882\nIFN0bw== 71883\nIEJyYW0= 71884\nX0xlZnQ= 71885\nX1NUQVI= 71886\nKX19Ig== 71887\nc2Npb3VzbHk= 71888\n0LXQt9GD0LvRjNGC 71889\n56uZ 71890\nZ3Jhdml0eQ== 71891\nK0M= 71892\nfTw= 71893\nQU5HRVM= 71894\nIGNvbnRyYWN0aW9u 71895\nIFdhbGxwYXBlcg== 71896\nLkZhY2U= 71897\nIHByw7N4aW1v 71898\nLmZpZw== 71899\nbGFuZ2xl 71900\nINC/0LXRgNC10Lw= 71901\nX0NSRUFU 71902\nQmFzaWNhbGx5 71903\nIGF3YWl0cw== 71904\nIENIQVJBQ1RFUg== 71905\nIHZwbg== 71906\nSG9u 71907\nIGV2aXRhcg== 71908\nIFVuZG8= 71909\nUVM= 71910\nIEVkbXVuZA== 71911\nIG1pcmFjbGVz 71912\nIFRpbWluZw== 71913\nIFZlbmV6dWVs 71914\nLlNxcnQ= 71915\nb2lkYWw= 71916\nIGVycnM= 71917\nLS0tLS0tLS0KCg== 71918\nIERFQ0xBUkU= 71919\nIHZpZ29yb3Vz 71920\nYXJnb24= 71921\nIGFnZ3JlZ2F0ZWQ= 71922\nIFNoYXJrcw== 71923\nIEN5cnVz 71924\nIHJlcHLDqXM= 71925\nbWF0Y2hlcg== 71926\nIGd1aUFjdGl2ZQ== 71927\nPyIpCg== 71928\nIEpOSQ== 71929\nLmNoYXJzZXQ= 71930\nJ3w= 71931\nIGdvYXRz 71932\naW5kcmU= 71933\nLmdldERheQ== 71934\nIHBhcnNlcw== 71935\nIElocmVu 71936\nX18uJy8= 71937\naWxlZ2Vz 71938\nbmF2aWdhdGU= 71939\nIEJ1ZmZ5 71940\nUEhQVW5pdA== 71941\nIG1hc3Nh 71942\nYWx0YXI= 71943\nJyldLAo= 71944\nIG92ZXJzZWVz 71945\nIHt9DQoNCg== 71946\nIFdMQU4= 71947\nY2xpcGJvYXJk 71948\nX0luc3RhbmNl 71949\nIGdsYWRseQ== 71950\nKHNlcmllcw== 71951\nIHZhZA== 71952\nIGdldFBhZ2U= 71953\nW29m 71954\nLkludGVydmFs 71955\naW51cw== 71956\nY2hhckF0 71957\nb2xlbQ== 71958\nYWludGluZw== 71959\nLkFG 71960\nX21pbm9y 71961\nX0lM 71962\nO3k= 71963\nIFRlbGVjb20= 71964\nIFBvbmQ= 71965\nIG1tYXA= 71966\nL14= 71967\nIFlhaw== 71968\nIFJhYmJp 71969\nZW5vcw== 71970\nCUNvbnRleHQ= 71971\nLnZlYw== 71972\nKEF0dHJpYnV0ZQ== 71973\nIGNhdGVnb3JpemVk 71974\nIGRpYWJldGlj 71975\nKHJhbms= 71976\nIHBhw61zZXM= 71977\nIEAiIjsK 71978\nIGppa2E= 71979\nYXJzaXR5 71980\nIC8o 71981\nLkhlbHA= 71982\nLWJhbm5lcg== 71983\nIEJ5cm9u 71984\nIHVucmVhbGlzdGlj 71985\nIHxf 71986\nIFN0b3B3YXRjaA== 71987\nIGV4ZW1wdGlvbnM= 71988\nL2NhcmRz 71989\nIHRvc3RyaW5n 71990\nbmdpbmU= 71991\nIHNwcmF3bGluZw== 71992\nIGx0ZA== 71993\nIFVuZGVyc3RhbmQ= 71994\nINGC0LXQutGB0YI= 71995\nZXdpdG5lc3M= 71996\nIGNhbGxCYWNr 71997\nLVllYXI= 71998\nRnVlbA== 71999\nPSo= 72000\nIGludmVudG9y 72001\nIGJlc3RzZWxsaW5n 72002\nIGhhcmRuZXNz 72003\nIFR1cw== 72004\nIGtleW5vdGU= 72005\nIGJlYXU= 72006\nX2Fib3J0 72007\nIHByb3Bvcg== 72008\nIGNvbWVyYw== 72009\nX1JFRkVS 72010\nUGFz 72011\naGF2ZW4= 72012\nLWZpeA== 72013\nQ2Fub25pY2Fs 72014\nIGxvb2tvdXQ= 72015\nRXhwbG9yZXI= 72016\nIGNlcmNv 72017\nKHNlbnNvcg== 72018\nIEpzb25TZXJpYWxpemVy 72019\nIHZva3Nlbg== 72020\nIGJyaWdodGVzdA== 72021\nIHN0YWJiaW5n 72022\nLkJl 72023\nLmFkZFByb3BlcnR5 72024\nIEh1bXBo 72025\nIGlzQXV0aGVudGljYXRlZA== 72026\n5rKh 72027\nIHBvcmVz 72028\nIGplZ28= 72029\nIFNob3dpbmc= 72030\nID8+Ij4NCg== 72031\nX0NPU1Q= 72032\naWxpbmVhcg== 72033\nIFdvcmtzcGFjZQ== 72034\nIHNwZWw= 72035\nYWdvZ3Vl 72036\nIE1pbGxlbm5pdW0= 72037\nIFBvcHVsYXRl 72038\nIG5pZA== 72039\nLnBhcnNlQ29sb3I= 72040\nU29sYXI= 72041\nIEdhZA== 72042\nIOykkQ== 72043\nIEthbXA= 72044\nCXJt 72045\nIGJlbno= 72046\nIEhvbmVzdGx5 72047\nIGVsZWN0cm9kZQ== 72048\nIFByYWlyaWU= 72049\nIFBST0ZJTEU= 72050\nIE9yaWVudGFs 72051\nIE9MRUQ= 72052\nL2NvcHlsZWZ0 72053\nYXdhaWk= 72054\nKHByb2R1Y3Rz 72055\nKVw8 72056\nLWNyZWF0ZWQ= 72057\nLk1hbnlUb01hbnk= 72058\nIkhvdw== 72059\nINCy0YvQvw== 72060\nIG1pdG9jaG9uZHJpYWw= 72061\nX3Rlc3Rpbmc= 72062\nKGNyZWF0ZWQ= 72063\nIGdldEZpZWxk 72064\nX0VWQUw= 72065\nXS4i 72066\nIEZTTQ== 72067\nIFJpdGE= 72068\nIOWPguaVsA== 72069\nIGPDtHQ= 72070\nIEluc2lnaHQ= 72071\nCW15c3FsaQ== 72072\nX3RpbWluZw== 72073\nSURP 72074\nKSkpKSkK 72075\nQ09WRVJZ 72076\nLmltYWc= 72077\nQ0RG 72078\nbHVzdA== 72079\naWNrdA== 72080\nX0ZQ 72081\nLicsJw== 72082\nZ2Nj 72083\nIGt1cno= 72084\nX3B3bQ== 72085\nIG9kcG93aWVk 72086\nIEJhcnJpZXI= 72087\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= 72088\ncGFr 72089\nLUlzcmFlbA== 72090\nIFJ1dGdlcnM= 72091\nIHNlbGVjdGVkSXRlbQ== 72092\nIFJhbWlyZXo= 72093\nRmFybQ== 72094\nIGNhbGVuZGFycw== 72095\nZ3ppcA== 72096\nIGJsb2NrYnVzdGVy 72097\nIFBseW1vdXRo 72098\n55yM 72099\ncmVzcG9uc2Vz 72100\nLkRpYWxvZ0ludGVyZmFjZQ== 72101\nLWdyYW5k 72102\nIGdldFNvdXJjZQ== 72103\nIGRlanRpbmdz 72104\nIHRpZXRlbg== 72105\nIGNvbmRlbW5hdGlvbg== 72106\nIGNvbnRpbnVhcg== 72107\nLk1vY2tNdmM= 72108\nL2VuZ2xpc2g= 72109\nIE1lZGlhUGxheWVy 72110\nY29tcHV0ZWQ= 72111\nIENsaXBwZXJz 72112\nKGRlbGVnYXRl 72113\nLlNsZg== 72114\nIOuhnA== 72115\nIFRpZGU= 72116\nIGlocmVt 72117\nIFdhbg== 72118\n0YPRjtGJ 72119\nfT48 72120\nRGlzY3Vzc2lvbg== 72121\nIHdhdHRz 72122\nLW1pbnVz 72123\nIEp1bGlldA== 72124\n6ZuF 72125\nIGNvbmNsdWRpbmc= 72126\nYW5kc2NhcGU= 72127\nIMO6bHRpbWE= 72128\nIERFUlA= 72129\nIHNpZ25VcA== 72130\nIFNlY29uZGx5 72131\nV0FJVA== 72132\nbGRz 72133\nLmNhbGxiYWNrcw== 72134\nKGhvdXI= 72135\naW1hdG9ycw== 72136\ndm9sZW50 72137\nQUFG 72138\nZWRyaXZlcg== 72139\nIE1hdGhlbWF0aWM= 72140\nPFR1cGxl 72141\nIC8+Jw== 72142\ne2o= 72143\nX0FCT1JU 72144\nRXRoZXI= 72145\nIGVkdWNhdG9y 72146\nIHByZWNhdXRpb24= 72147\nIGZpbmdlcnRpcHM= 72148\nZ2V0VmFy 72149\nY2FtYXRhbg== 72150\nLWRlYnVn 72151\nIFJBRg== 72152\nW2FyZw== 72153\nIHJhY2Vk 72154\nIHRzdW5hbWk= 72155\nLmZsaW5r 72156\nIGdseWM= 72157\ndWtv 72158\nIE11bHRpcGx5 72159\nIHJlZGlzdHJpYnV0aW9u 72160\nQUdP 72161\nIFJvdXRpbmU= 72162\nIG9wcg== 72163\nKGxvd2Vy 72164\nIEZ1bmt0aW9u 72165\nLmRr 72166\nIGVndA== 72167\nX0JBU0lD 72168\nc3lzY2FsbA== 72169\nIExTRA== 72170\nIER1cGxpY2F0ZQ== 72171\nX3NlbGw= 72172\nIGVycm9ySGFuZGxlcg== 72173\nX2lwcw== 72174\nIGVydg== 72175\nYW5uaWU= 72176\nKHJlc291cmNlTmFtZQ== 72177\nIGJvdHRsZWQ= 72178\nIGNyYXdsaW5n 72179\nZWdtZW50 72180\nLnNldFRhZw== 72181\nIHJzcw== 72182\nIFF1YXJyeQ== 72183\nX2V4YWN0 72184\nLmp3dA== 72185\nIEJvYXJkcw== 72186\nb3Bp 72187\nIG5hc2Fs 72188\nIFhZWg== 72189\nLnVk 72190\nTm9ydGhlcm4= 72191\nIGFjdGl2YXRpbmc= 72192\nZWR4 72193\nb3ZhaA== 72194\nIGluZHg= 72195\nQWxlcnREaWFsb2c= 72196\nIHRpZW5lcw== 72197\nYW5ueWE= 72198\nX3Bhbg== 72199\nKGRlY2ltYWw= 72200\nLkRpY3Q= 72201\nIHN1YnNpZGlhcmllcw== 72202\nUHJvZHVjdE5hbWU= 72203\nRmV3 72204\nZGF0bw== 72205\nb2RpZWQ= 72206\nLXVuZGVy 72207\nIOqygw== 72208\n54mI5pys 72209\nYXRpc20= 72210\nW01hdGg= 72211\nLic8 72212\nKGluZmlsZQ== 72213\nIGRlbm90ZXM= 72214\nJGNsYXNz 72215\nX1NFQ1VSSVRZ 72216\nIHNld2FnZQ== 72217\nbWVsb24= 72218\nKENoYXJhY3Rlcg== 72219\nL2dpdGh1Yg== 72220\nIGdsYXJpbmc= 72221\nLkd1aWQ= 72222\nX3NwYXJzZQ== 72223\nIE1hcmdpbg== 72224\nX2Rucw== 72225\nIG1laW5lcg== 72226\nIGxlZnRpc3Q= 72227\nCWxvYw== 72228\nYWJ5dGVz 72229\nIGVxdWlwbWVudHM= 72230\nZXhwbw== 72231\nIFNvbWVyc2V0 72232\nRUs= 72233\n5o2i 72234\nIGxlY3R1cmVy 72235\nIG1lbWlsaWtp 72236\n5qC4 72237\n57Sg 72238\ncHJvbg== 72239\nOnBvaW50ZXI= 72240\nYm9ycm93 72241\nIFByb3RlY3RpdmU= 72242\nX2Nm 72243\nINCV0YHQu9C4 72244\nYnBw 72245\nJzsKCgoK 72246\nYXR1cmFsbHk= 72247\nX05BVg== 72248\nIHBlcHRpZGU= 72249\nPmQ= 72250\nIGlmc3RyZWFt 72251\nX0ZBQ1RPUlk= 72252\nJyk7Ly8= 72253\nam9pbmVk 72254\nbW9uZw== 72255\nIHRpbWVzcGVj 72256\nIGRlc3RhYmls 72257\nIGF1dG9w 72258\nLWxpbWl0 72259\ncHVibGljYXRpb24= 72260\nIERlbm4= 72261\nLk1lbW9yeQ== 72262\nKHNrYg== 72263\nIEFuYWhlaW0= 72264\nX1JFVFVSTlRSQU5TRkVS 72265\nb3VldXI= 72266\nKF8oJw== 72267\nbGVndA== 72268\naXN0aW5ndQ== 72269\nCXByaXY= 72270\nIHJlZGlyZWN0cw== 72271\nTXQ= 72272\nIGFsbGVlbg== 72273\nIFBvaW50Rg== 72274\nIG9taW4= 72275\nIGNpdHQ= 72276\nIFRhZ2U= 72277\nIFdhbGxz 72278\n4buJ 72279\nIG9jY3VweWluZw== 72280\neEJG 72281\ncmFuZ2xl 72282\nIHJlbGF0aW9uYWw= 72283\nLW9yZw== 72284\nIGpwZw== 72285\nLWRlcml2ZWQ= 72286\nIG1hbGZ1bmN0aW9u 72287\nIEJlbnNvbg== 72288\nKHNjcm9sbA== 72289\nIFhE 72290\nSG9seQ== 72291\nKGNvbW1hbmRz 72292\nIHRpcHBpbmc= 72293\nIHByaW1pdGl2ZXM= 72294\nIHNleGxl 72295\nQ2FsbENoZWNr 72296\nIE1BU1RFUg== 72297\nX1RFQU0= 72298\nLnNldFJlcXVlc3RIZWFkZXI= 72299\nX3NwZWNz 72300\nIHNlcmdl 72301\nLk1hc3Rlcg== 72302\nIGltcw== 72303\nLlNwcmluZ0Jvb3RUZXN0 72304\ncGF5cGFs 72305\nIFdBTlQ= 72306\nLkluc3Q= 72307\nIENhcnBldA== 72308\nIHdyb25nbHk= 72309\nKCQoJy4= 72310\nIGJpbGQ= 72311\nLlJvbGw= 72312\nIFVyYg== 72313\nLWNhbg== 72314\n44GP44Gg44GV44GE 72315\nb2xpYmVyYWw= 72316\nPCEtLTw= 72317\n4oCUZm9y 72318\nIG5lZ2F0ZQ== 72319\nKG5vcm0= 72320\nYWVj 72321\nX3NhbGFyeQ== 72322\ncGxhaW50ZXh0 72323\nb2Rlc2s= 72324\nIEJvc2No 72325\nU2NpZW50aXN0cw== 72326\naW5kZXhlcw== 72327\nIG1weg== 72328\nIGdyb3VuZHdhdGVy 72329\nfX0pOwo= 72330\n0LDQu9C40Lc= 72331\nIGVybw== 72332\nIHByZXNjcmliZQ== 72333\nIEV4dHI= 72334\nPEFycmF5TGlzdA== 72335\nIGF0cm9jaXRpZXM= 72336\nQXJlYXM= 72337\nIFRJbnQ= 72338\nKHBsYXllcnM= 72339\nIGRhdGFi 72340\nIHd5bQ== 72341\n44Gb 72342\nIGR1YXM= 72343\nX3Bvc3NpYmxl 72344\nIGluc3RydWN0aW9uYWw= 72345\naXRpb25lcg== 72346\nL2F1ZGlv 72347\nICAgICAgICAgICAgICAgIAoK 72348\nc3RvcmVk 72349\nT01QSQ== 72350\nIGFwcHJlbnRpY2Vz 72351\nVGVuYW50 72352\nIENvdXQ= 72353\nIGNvbnRyYWNlcHRpb24= 72354\nTG9hbg== 72355\nX3Zpc2liaWxpdHk= 72356\nJ3x8 72357\nLlBhcnNlRXhjZXB0aW9u 72358\nIGNvaW5jaWRl 72359\nLmdldFdpbmRvdw== 72360\nIE1hcnRpYWw= 72361\nX3Rscw== 72362\nL2Jvb2tz 72363\nIG91dHJhZ2Vk 72364\nICh+KA== 72365\nc3Ryc3Ry 72366\nIEJveGVz 72367\n6YO9 72368\n44Ol 72369\nUk9J 72370\nRnVuY3Rpb25hbA== 72371\nIFByb2Q= 72372\nPFRlc3Q= 72373\nIHZpZGVvdA== 72374\nIGFtb3Jl 72375\nYWJicg== 72376\nIE1vbnVtZW50 72377\nIHJlaW5mb3JjZW1lbnQ= 72378\nIENvY29udXQ= 72379\nLnNlbmRTdGF0dXM= 72380\nLmtl 72381\nIExlYXA= 72382\nX2FydGljbGVz 72383\nUGll 72384\nIElydmluZQ== 72385\nQUJDREVGR0hJ 72386\nIEV4cGxhbmF0aW9u 72387\nZ3JvdXBCeQ== 72388\nIG92ZXJoZQ== 72389\nIGFuw6Fs 72390\nIGNsYXNzaWZpZXJz 72391\nIE1peGVy 72392\nL2NvbG9ycw== 72393\nIFVzZXJEYXRh 72394\nX0FSUk9X 72395\nX3ZsYW4= 72396\nLkNyZWF0ZURpcmVjdG9yeQ== 72397\nIEhhaw== 72398\nIEJvbmVz 72399\nIEFwaVJlc3BvbnNl 72400\nIE1vb2R5 72401\nREFD 72402\nZ2V0Yw== 72403\n6LaF 72404\nLkZpcmU= 72405\n6aM= 72406\nIGhpdHRlcg== 72407\nZnJlc2g= 72408\n4LmB 72409\nIENoaWxkaG9vZA== 72410\neG9y 72411\nLWh0dHA= 72412\nIE1PUg== 72413\nLnNlbmRLZXlz 72414\nX3NoYXBlcw== 72415\nIFVwcw== 72416\nIEFycmVzdA== 72417\nYXp6aQ== 72418\nX29wY29kZQ== 72419\nLk5vbWJyZQ== 72420\nIHByw7Nw 72421\nIHp4 72422\nIHRyZW1lbmRvdXNseQ== 72423\nU3BhY2Vz 72424\nZWNj 72425\nIHZlbHZldA== 72426\nIG1lbW9yaWE= 72427\nIExBUA== 72428\nLkRyYXdMaW5l 72429\nIHRhcmdldFR5cGU= 72430\ncmVzdHJpY3Rpb24= 72431\nIERSVg== 72432\nW3RvcA== 72433\nIeKAmQ== 72434\nL2NoYXQ= 72435\nIHNvbmlj 72436\nVG9yb250bw== 72437\nb3dp 72438\nLmRvY3M= 72439\nIEluaXRpYWxpc2U= 72440\nIDwh 72441\nLnRibA== 72442\nLlByZXBhcmVkU3RhdGVtZW50 72443\nL2RvbQ== 72444\nLnJvdA== 72445\nX1BST00= 72446\nS2VlcGluZw== 72447\nIGhhcmdh 72448\nIGpvcm4= 72449\nIGlkZW50aWZpYWJsZQ== 72450\nW2lw 72451\nUGluaw== 72452\nX0hlYWRlcg== 72453\nw5E= 72454\nYWRsZQ== 72455\n572R57uc 72456\nc2VxdWVudA== 72457\nQWN0aXZhdGVk 72458\ndG1wbA== 72459\nIFBhbGw= 72460\nIGZhdGFsbHk= 72461\nfX0pCg== 72462\nUG9wb3Zlcg== 72463\nIE1jTGFyZW4= 72464\nQ2hhbmdlZEV2ZW50QXJncw== 72465\nIEZvcm1hdGlvbg== 72466\nTmFt 72467\nbmV3c2xldHRlcg== 72468\nLmZyb21TdHJpbmc= 72469\nX2ltbQ== 72470\nQVBQRUQ= 72471\nLG5vZGU= 72472\nKGRldA== 72473\nIHBhcmFsbGVscw== 72474\nIGxhc2Vycw== 72475\nIGNob2NvbA== 72476\nL3BvcnQ= 72477\nYWZmZW4= 72478\nKGRldGFpbHM= 72479\nIHJlcGxpY2F0ZWQ= 72480\nQXNTdHJlYW0= 72481\nYXJtYWM= 72482\nXV09 72483\nYWxhY2g= 72484\nX3Nlc3Npb25z 72485\nQWxnb3JpdGhtRXhjZXB0aW9u 72486\nIHZlcmJvc2l0eQ== 72487\nLkNvbHVtblN0eWxlcw== 72488\nKFVTRVI= 72489\nIHNsZWVwcw== 72490\nIGFxdWF0aWM= 72491\nX2J1bGs= 72492\nPScuLw== 72493\nb3VybsOpZQ== 72494\nIE1TRA== 72495\nIEJsb2M= 72496\nIEdsZQ== 72497\nIHJlcHJlc3Npb24= 72498\nIGVudG9uY2Vz 72499\nCQkgICAgICAgICAgICAgICAgICAg 72500\nWU5D 72501\nLkFsbG93R2V0 72502\nIHR1cnRsZXM= 72503\nICd+Lw== 72504\nZXNzb24= 72505\nIERJRQ== 72506\nIEFxdWE= 72507\nIFNFUQ== 72508\nOzs7Ozs7Ozs7Ozs7Ozs7Ow== 72509\nLnB1dHM= 72510\nIE1BSw== 72511\nKEN1c3RvbWVy 72512\nIGRlc3NlcnRz 72513\nIGVtYmVsbA== 72514\nIHRheGVk 72515\n5bqX 72516\nIHNjaGw= 72517\ncmVzY28= 72518\nIEZyb2c= 72519\nIFBlbmRpbmdJbnRlbnQ= 72520\nX0xvY2Fs 72521\nL3NlY3VyaXR5 72522\nIFJveA== 72523\nIHNwb2lsZWQ= 72524\nX1dJTkRPV1M= 72525\nSmVubmlmZXI= 72526\nIGRhdGk= 72527\nVW5sb2Fk 72528\nLmdyaWR4 72529\nKHN0YWdl 72530\n4buX 72531\nU3FsQ29tbWFuZA== 72532\nLm14 72533\nIGJsaXR6 72534\nIEZvcnRyZXNz 72535\nIEJyb3dzZXJBbmltYXRpb25zTW9kdWxl 72536\nd2luZQ== 72537\nTlNF 72538\nLXJhbmtpbmc= 72539\neXJl 72540\nIGxpbmthZ2U= 72541\nw6Fr 72542\nkZw= 72543\nYXRzYXBw 72544\nIEN5Y2w= 72545\nIGVjb2xvZ3k= 72546\nIGJsYXRhbnQ= 72547\nIFBlcmY= 72548\nIFhpYW9taQ== 72549\nIERvcnRtdW5k 72550\ncmVzdWx0U2V0 72551\nIGdpw6A= 72552\nIGZhdWNldA== 72553\nIERhbHRvbg== 72554\nIGZyZWVz 72555\nQlVGRg== 72556\nLnBhcmFsbGVs 72557\nIEFzdHJvcw== 72558\nIFZFQ1RPUg== 72559\nIHN0YW5kb3V0 72560\nw7Ntbw== 72561\nIGZyYW1lYm9yZGVy 72562\nX1BBUkFNRVRFUlM= 72563\nIEZhbGs= 72564\nIERpZ2l0 72565\nIGVsZWN0csOzbmljbw== 72566\nIHZlcnI= 72567\nVUlBbGVydFZpZXc= 72568\nKFNxbA== 72569\nLUlORg== 72570\nIikpKTs= 72571\nJycK 72572\nKEVGRkVDVA== 72573\nIFp1bQ== 72574\nX0RQ 72575\nKV07DQo= 72576\nIGFudGVubg== 72577\nIGFiYnJldmlhdGlvbg== 72578\nIHNlaXNtaWM= 72579\nX1RSQU5TTA== 72580\ntZw= 72581\nLk1pbGxpc2Vjb25k 72582\nLGxhdA== 72583\nIEFuY2g= 72584\nX01vZA== 72585\nQWxyaWdodA== 72586\nZGRh 72587\nIMKl 72588\nVU5ETEU= 72589\nINC30LDQsw== 72590\nIHN1bGZ1cg== 72591\nIFNpdGg= 72592\nIE5pbWJ1cw== 72593\nIEV4YW1pbmF0aW9u 72594\nX3dpZmk= 72595\nfWApOwoK 72596\nIHNlbnNhdGlvbnM= 72597\nYWZz 72598\nX0NMUg== 72599\nIGluZmluaXRlbHk= 72600\nIHN5c3TDqG1l 72601\nX2ZvbnRz 72602\nSW1wYWN0 72603\nUG93ZXJlZA== 72604\nIDw9Pg== 72605\nX25lZWQ= 72606\nREVDUkVG 72607\nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v 72608\nIFJlcG8= 72609\nZ2V0U2VydmljZQ== 72610\nJG4= 72611\nX3BjdA== 72612\nRXJyZXVy 72613\nIE5HT3M= 72614\nICoKCgo= 72615\nLmF0YW4= 72616\nX1RNUA== 72617\nIGNvbGxhcHNpbmc= 72618\nIHNobw== 72619\nX1BDSQ== 72620\nLm9wZXI= 72621\nKGFkag== 72622\nIGdpb3Y= 72623\nPiku 72624\nIGluY29udHJv 72625\nYXJkYQ== 72626\nIGFwZXg= 72627\nIG1lZGlkYQ== 72628\nIFNoZWlraA== 72629\nIEFybWVuaWE= 72630\nYXNzb2NpYXRl 72631\nLXdvdw== 72632\nIFR1cm5pbmc= 72633\nIEZyZXVk 72634\nIEZvb2w= 72635\nIExEUw== 72636\nLS0tLS0tLQoK 72637\nb2xzb24= 72638\nLkZJTEU= 72639\nX2RldGVjdG9y 72640\nRG9taW4= 72641\nIGRlcGxveW1lbnRz 72642\nIGZhcmV3ZWxs 72643\nKGJpbmQ= 72644\nIG5vdmljZQ== 72645\ndGRvd24= 72646\nIGdldEVsZW1lbnQ= 72647\nIHZlbGl0 72648\nYXN0aGFu 72649\nCWNoYW5uZWw= 72650\nX0ZSQU1FQlVGRkVS 72651\nLnRyYWlsaW5n 72652\nLnNldEVkaXRhYmxl 72653\nOyw= 72654\nIElERg== 72655\nX1BC 72656\nZ2V0TGFzdA== 72657\nIENvYXN0YWw= 72658\nIEhhbmR5 72659\nbGluZ2Vy 72660\n44Gn44KC 72661\nUGVyc2lzdGVuY2U= 72662\nLmdldFNlcnZpY2U= 72663\nINC+0Lo= 72664\nIG5vdHdpdGhzdGFuZGluZw== 72665\nKFBS 72666\nVU1C 72667\nJ10pKXsNCg== 72668\nZW1icmFuY2U= 72669\nZXhjZXJwdA== 72670\nYXF1 72671\nX2Jsb2M= 72672\nIFByb3Zpc2lvbg== 72673\nIE1jRG9u 72674\nIEdvbGRiZXJn 72675\nIGNvbXBvbmVudFdpbGxVbm1vdW50 72676\nIGJhc2VQYXRo 72677\nLWZpcmVk 72678\nIGZvbGxhbmRv 72679\nIFRpbGVz 72680\nQGVuZGZvcmVhY2g= 72681\nRU5DSUw= 72682\nIEJveGluZw== 72683\naXF1ZXI= 72684\nQWNoaWU= 72685\nRW51bXM= 72686\nQmFzZVVybA== 72687\nKHNjYW4= 72688\nIFBhc3NpdmU= 72689\nYWJlbGxh 72690\nL3Nu 72691\nLm51bWVyaWNVcERvd24= 72692\nIHZlcm4= 72693\nbG9jYWxpemVk 72694\nIE1peg== 72695\nIHJlc3VsdExpc3Q= 72696\nL3Z1ZQ== 72697\nRVJWSUNF 72698\nLm9k 72699\nIGxpZ24= 72700\nIFN0cmluZ1Rva2VuaXplcg== 72701\nIHRyYWc= 72702\nQWNjb3JkaW9u 72703\nIG5vcmVmZXJyZXI= 72704\nbXNjb3JsaWI= 72705\nw6F0aXM= 72706\nYnl0ZXI= 72707\nIHNob3dkb3du 72708\nIHNlbWFpbmU= 72709\nIC0tPg0KDQo= 72710\nIE1haG0= 72711\nfSI7Cgo= 72712\nIGRx 72713\nIFB1Ymxpc2hlcnM= 72714\nIEFtcGw= 72715\nIERhbmllbGxl 72716\nIHRlcm4= 72717\n6LW3 72718\nbm/Fm8SH 72719\nZWlu 72720\nIEFzeW5jU3RvcmFnZQ== 72721\ndW5nZXI= 72722\ncm91dw== 72723\nIHNjaXNzb3Jz 72724\nL2Fzc2VydA== 72725\nLmJ1Y2tldA== 72726\nL2FyY2hpdmU= 72727\nX01hbg== 72728\nIGludG9sZXI= 72729\nICgpPT4= 72730\nINCS0Ys= 72731\nIHNhaQ== 72732\nLnh5 72733\nLiINCg== 72734\nIHVyaW5hcnk= 72735\nZXN1Yg== 72736\nSVNUSUNT 72737\nIM66 72738\nIGNvbXBsaW1lbnRz 72739\nIHR5cGluZ3NKYXBnb2xseQ== 72740\naWhhcg== 72741\nRXhwYW5zaW9u 72742\nIFNlcnZpbmc= 72743\nX3N0dWRlbnRz 72744\nIFhCT09MRQ== 72745\nKGls 72746\nIOyymA== 72747\nIGrDsw== 72748\nKHRvbA== 72749\nKEpT 72750\nCUNH 72751\nIERSQVc= 72752\ndHdpZw== 72753\nIG9hdA== 72754\nX3Ntb290aA== 72755\nIENTTA== 72756\nIG9zb2I= 72757\nIGVuc3Vpbmc= 72758\nIGJhbmtlcg== 72759\nIEJhY2twYWNr 72760\nX3Bpbmc= 72761\nIHdpc2hsaXN0 72762\nPWF4 72763\nCSAgIAo= 72764\nRGlzbmV5 72765\nc3RlYWR5 72766\nIj4l 72767\nIHByb3BoZXRz 72768\nIFpY 72769\nIG1pbmltYWxpc3Q= 72770\nLlBMQUlO 72771\nU2VhdHRsZQ== 72772\nLm9yZGluYWw= 72773\nIFBJUEU= 72774\nIHJldG9ybmE= 72775\nIGp1Z2Fkb3I= 72776\nIEJyZXQ= 72777\nIOKUnA== 72778\nIHBsdXNo 72779\nVUxBVE9S 72780\nU29ydGluZw== 72781\nLmdyaWR5 72782\nZWN0b215 72783\nX2FjdGl2 72784\ncmFjaw== 72785\nSW50ZXJhY3RpdmU= 72786\nIEFudGFyY3RpY2E= 72787\nIHZlbmdlYW5jZQ== 72788\nZW5zbw== 72789\nX2tub3du 72790\ndXBwbGllcg== 72791\nLk1vZHVsZXM= 72792\nIENvbm5lY3Rpb25TdGF0ZQ== 72793\n6ZqQ6JeP 72794\nQEZpbmRCeQ== 72795\nIHBsYWNlcg== 72796\nXG1vZGVs 72797\nPCgpPg== 72798\nLmlzU3VjY2Vzc2Z1bA== 72799\nLWdvb2Q= 72800\nYno= 72801\nIERyYWNv 72802\nQXNzaXN0YW50 72803\nLWV4dHJh 72804\n0LDQsdC70LjRhg== 72805\nIGh5cG9jcmlzeQ== 72806\nIHRzdA== 72807\nIEFncg== 72808\nJHR4dA== 72809\nIGxvZ2lzdGlj 72810\nbGljZW5zZWQ= 72811\nIEhvZg== 72812\nIHRhdA== 72813\nKGl2 72814\nIGludG94aWM= 72815\ncG9zdElk 72816\nX3N0cmlrZQ== 72817\nIGh1bWlsaWF0aW9u 72818\ncGNvZGVz 72819\nInN5bmM= 72820\nKHJlY2lwZQ== 72821\nK04= 72822\ncmVudGU= 72823\nCUNsaWVudA== 72824\neWNvcGc= 72825\nIFp1cmljaA== 72826\nIFByb2ZpbGVz 72827\nQ291bnRyaWVz 72828\nIHBpY3Q= 72829\nIHJvbGxvdXQ= 72830\ncmVxdWVuY2llcw== 72831\nIHBhdGNoZWQ= 72832\nIGNhcnRyaWRnZXM= 72833\nIHNoYWRpbmc= 72834\nSmFy 72835\nIHNhbHZhZ2U= 72836\nIFRheGVz 72837\nIHN0YW5kYnk= 72838\nYXBvcmFu 72839\nRWlnZW4= 72840\nLmFuZ3VsYXI= 72841\nIE5lc3RlZA== 72842\n5Lqr 72843\nIGlzVmlzaWJsZQ== 72844\nIER3aWdodA== 72845\nX0JSQU5DSA== 72846\nLkRlbGF5 72847\nIGtlbmQ= 72848\nIGZhY2lsaXRhdGVk 72849\nLmZsYXRNYXA= 72850\nIHNhbnRh 72851\nCVNlbmQ= 72852\nL21lc3NhZ2Vz 72853\nIG9mVHlwZQ== 72854\nCXN3YXA= 72855\nI3BsdA== 72856\nIFR1cmtz 72857\nTkVT 72858\nIHByb2dyZXNzaXZlbHk= 72859\nIFJlc2lkZW5jZQ== 72860\nIFRSRUU= 72861\nIG5vZW4= 72862\nZGlv 72863\nIG5lbGxl 72864\nIHNvZ2Fy 72865\naXR0aQ== 72866\nd2Vla2x5 72867\nIGFtYmlndWl0eQ== 72868\nX1NldHRpbmdz 72869\nV2FyZQ== 72870\nLm5lbw== 72871\nX0RTVA== 72872\nIOaWuQ== 72873\ncHJlcA== 72874\nbG9iYnk= 72875\nQGVtYWls 72876\nL21vdmll 72877\nIGZ1bmtj 72878\nICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== 72879\nwq1z 72880\nIGd1YXJkaWFucw== 72881\nLXBvcw== 72882\nIGNvbmZpZ3VyaW5n 72883\nIENQUw== 72884\nIERldXM= 72885\nIHZpZMOpb3M= 72886\nX2VtcHJlc2E= 72887\nIHNsYXBwZWQ= 72888\nPE1vZGVs 72889\nIHVuZGVyc2NvcmVz 72890\nVWg= 72891\nLmFjY2Vzc1Rva2Vu 72892\nU0VUUw== 72893\nIFNwYXJzZQ== 72894\nIENhbGQ= 72895\nOnBhdGg= 72896\nIFNlcnZlcnM= 72897\nPWJhdGNo 72898\nIGtuaXR0aW5n 72899\nIHhh 72900\nIHNlYXJjaEJhcg== 72901\nIHNuYWc= 72902\nIGluZnVzZWQ= 72903\nLmJhbQ== 72904\nbGV2ZXI= 72905\nIHRheG9ub215 72906\nw44= 72907\nIGF0dGFjaGluZw== 72908\nIGhlcm4= 72909\nX05PUA== 72910\nQ2xpY2thYmxl 72911\nKFBhcnNl 72912\nIER5bmFtbw== 72913\nLWJ1aWxkZXI= 72914\nIGRlcmVn 72915\nIHNjYXR0ZXJpbmc= 72916\n6L+b6KGM 72917\nYW56aQ== 72918\nIFNoZXBhcmQ= 72919\nIj4nLAo= 72920\nX1hERUNSRUY= 72921\nIEJ1enpGZWVk 72922\nX01BUkdJTg== 72923\nUExPWQ== 72924\nLnNtYWxs 72925\nIG1pbWVUeXBl 72926\nIGhvbG9n 72927\nCWNhbWVyYQ== 72928\nbGlhcw== 72929\nIHN1c3BlbnNl 72930\nb2R5bmFt 72931\nYmF1 72932\nIGdyYXZleWFyZA== 72933\nX25hbWVk 72934\nIjoiJw== 72935\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 72936\nIGdhbWVPdmVy 72937\nIExFTkdUSA== 72938\nCXNjcmVlbg== 72939\nIGRvSW5CYWNrZ3JvdW5k 72940\nX2RlcGVuZGVuY2llcw== 72941\nIHJ0Yw== 72942\nL3Vw 72943\nX1JPTQ== 72944\nSGFsbA== 72945\nIGRlZmljaWVuY2llcw== 72946\nKHRl 72947\nJyM= 72948\nX2VxdWl2 72949\nIHByZW9yZGVy 72950\nIEF4ZQ== 72951\n0L7QvNGD 72952\nLnNlbmRGaWxl 72953\nIGZpbHQ= 72954\nIExpbWl0cw== 72955\nIENhdmFsaWVycw== 72956\nLmRpc2NvdW50 72957\n4oaQ 72958\nIFdpdA== 72959\nUVJTVFVW 72960\nIGlq 72961\nIHRlZ2Vu 72962\nIDoiLA== 72963\nZGlmZmljdWx0eQ== 72964\ncHVua3Q= 72965\nIEVtYWlscw== 72966\nY2hsb3I= 72967\nKGZ1bg== 72968\nLlVpbnQ= 72969\nIFN0YWxs 72970\nX3ZlcmlmaWVk 72971\ndUQ= 72972\nRmlsZVR5cGU= 72973\nIHBsZWFzdXJlcw== 72974\nIGp1ZGljaWFyeQ== 72975\nIHNoYW0= 72976\naXB1cg== 72977\nX1BMVVM= 72978\nb2ZmZXJz 72979\nKGZvbw== 72980\nX0dU 72981\nCWNvcmU= 72982\nRU5USU9O 72983\nIExpYmVyYXRpb24= 72984\nQ29tbWFuZExpbmU= 72985\nX2RlcGFydG1lbnQ= 72986\nLkFy 72987\nX25laWdoYm9y 72988\nIFN1Ym1pdHRlZA== 72989\nIDwhLS1b 72990\nIGxvY2F0aW5n 72991\nLk1hcHBlcg== 72992\nX3N0cmVuZ3Ro 72993\nWy4uLiw= 72994\nIEphbA== 72995\nL2xvYWQ= 72996\nIGJ1ZmZz 72997\nIG1vdG9yaXN0cw== 72998\nCWNz 72999\nYXNjZW5kaW5n 73000\nIFdoYXRzYXBw 73001\nIE5hc3M= 73002\nX0NPTFVNTlM= 73003\nTGVvbg== 73004\ncHBl 73005\nZWx0YXM= 73006\nIHRqZWplcg== 73007\nX0tFWVdPUkQ= 73008\ncXVhbGlmaWNhdGlvbg== 73009\naHJh 73010\nIHJpZGljdWxvdXNseQ== 73011\nJGluZm8= 73012\nRkVBVFVSRQ== 73013\nZG9lc24= 73014\nIEtX 73015\nIEVudW1lcmFibGVTdHJlYW0= 73016\nX01BVA== 73017\nIFN0cmVhbUxhenk= 73018\nIHNjcmF0Y2hpbmc= 73019\nLnRpY2tldA== 73020\nIHNob3J0Y29taW5ncw== 73021\nZWxsaXBzaXM= 73022\nPWN1cnJlbnQ= 73023\nIGNyZXN0 73024\nIHdob3Jl 73025\nIFBldHJvbGV1bQ== 73026\nY29udGV4dHM= 73027\nIOat 73028\nLXB5dGhvbg== 73029\nKGpzb25PYmplY3Q= 73030\nIFByaXNt 73031\nIHlhY2h0 73032\nt6g= 73033\nZmxhc2hkYXRh 73034\nIGxlaWNodA== 73035\nIE1vcnRvbg== 73036\nIHN0ZXJsaW5n 73037\nX2l0cg== 73038\nX3Vk 73039\nRmFjZXM= 73040\nIGhpcmVz 73041\nZmZh 73042\nJyx7Cg== 73043\nLWNhbWVyYQ== 73044\nX1JFQVNPTg== 73045\nIEhlbGVuYQ== 73046\ncnVn 73047\naWdodGx5 73048\nIHBlcm11dGF0aW9ucw== 73049\nIFRvcmFo 73050\nIOaYr+WQpg== 73051\nCXJlY29yZA== 73052\nw4A= 73053\nLmdtYWls 73054\nRm9ydHVuYXRlbHk= 73055\nKE1vZA== 73056\nT2NjdXJyZW5jZXM= 73057\nIGRlcHJlY2k= 73058\nIHZhZ3VlbHk= 73059\nL1o= 73060\nVk4= 73061\nLnRw 73062\nX2dlbmVy 73063\nIHs6P30iLA== 73064\nd2FobA== 73065\nSUtF 73066\nIExlZ2lzbGF0aW9u 73067\nIGhpbnRlcg== 73068\nIGFkZWw= 73069\nKGhpZ2g= 73070\n5o+Q5Lqk 73071\nL2RvbWFpbg== 73072\nLnRpbGVz 73073\nIFRpYmV0YW4= 73074\nIFN0ZXJlbw== 73075\nIGZpbGVTaXpl 73076\nZ3J1cG8= 73077\naWFl 73078\nU0NQ 73079\nIHZvdWNoZXJz 73080\nIFBhbmRvcmE= 73081\nIGRpc21heQ== 73082\nIGzDqWc= 73083\nIEJlaGF2aW9yYWw= 73084\nY3Jhbg== 73085\nTmVzdGVk 73086\nYWNjb20= 73087\nIE5haA== 73088\nIEJhbHRpYw== 73089\nIERFU1Q= 73090\nIGtpc3Nlcw== 73091\nVmlu 73092\nIHByb3Zva2U= 73093\nX0NvbnRleHQ= 73094\nIHdlZWtkYXlz 73095\ndXJnZW5jZQ== 73096\nTGlr 73097\nIHBsYXph 73098\nIGJsZXY= 73099\nIHJlYWZm 73100\nX1RpdGxl 73101\nKEd0aw== 73102\nIGNlbGxl 73103\nIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 73104\nIEpvb21sYQ== 73105\nIj4vLw== 73106\nTW9udGhseQ== 73107\nLnRvRG91Ymxl 73108\nKGVudHJpZXM= 73109\nIE5SRg== 73110\nKGdjZg== 73111\nIE1pZGRsZXdhcmU= 73112\nfS17 73113\nX0hJREU= 73114\nIGxvd2Vycw== 73115\nKFNlbGY= 73116\n5Y+R6YCB 73117\nIGlzTG9nZ2VkSW4= 73118\nIGJpb2RpdmVyc2l0eQ== 73119\nIG11c2NoaQ== 73120\nKGNhbmRpZGF0ZQ== 73121\nIEFuc2k= 73122\nCXNt 73123\nL2lt 73124\nKycp 73125\nY2Rj 73126\nIGFsZ3VuYQ== 73127\nIHNhY3JpZmljaW5n 73128\nL3ZlbmRvcnM= 73129\nL0FQSQ== 73130\nQWR2ZXJ0aXNpbmc= 73131\nIEdFTkVSQVRFRA== 73132\nIERpc29yZGVycw== 73133\nIFNlcmlhbGl6YXRpb24= 73134\nIHNhdmFnZQ== 73135\nIOm7 73136\nIEluc2lnaHRz 73137\nIHJldm9rZQ== 73138\nIGp1cm9ycw== 73139\nc3VpdA== 73140\nIENhbXBpbmc= 73141\nX3Byb2ZpdA== 73142\nYnVjaA== 73143\nLkFjdGlvbnM= 73144\nIElERUE= 73145\nb2x1bHU= 73146\nTGlrZXM= 73147\n67KI7Zi4 73148\nLkJMTA== 73149\ndsOk 73150\nIGNhcmRp 73151\nIGRpc3Byb3BvcnRpb25hdGVseQ== 73152\nIGluc2FuaXR5 73153\nLmVvZg== 73154\nIFBsYXR6 73155\nLmZpcnN0bmFtZQ== 73156\nIFNsYXNo 73157\nX0NG 73158\namFuZHJv 73159\nIEdhdWdl 73160\nIFN1bmRlcg== 73161\nIEJ1bm55 73162\nX3Vt 73163\n6IGU57O7 73164\nIGlQaG9uZXM= 73165\nIEJJTw== 73166\nIGtobw== 73167\neEZB 73168\nIEZyaWVuZHNoaXA= 73169\nIGNhbG1seQ== 73170\nX3Rocg== 73171\nX0FuaW0= 73172\nIHJhaXNvbg== 73173\nL3Jvb3Q= 73174\nLmdldEJ5SWQ= 73175\nIFNhdmFubmFo 73176\nIEludGVycHJldA== 73177\na2lsbGVy 73178\nCXdn 73179\nXSld 73180\n0YPQtdGC 73181\nS2V5VmFsdWU= 73182\nW0c= 73183\nc3RyZXRjaA== 73184\nLXBsYXlpbmc= 73185\nJTsNCg== 73186\nIHBsYW5r 73187\nIHBlYWNo 73188\nIERlcnJpY2s= 73189\n0LTRgNC10YE= 73190\nIFNoYW0= 73191\nQVBQTElDQVRJT04= 73192\nLnByb2dyZXNzQmFy 73193\nIHRyYW5zaXRpb25pbmc= 73194\nX2RyYWc= 73195\nLlJlcXVlc3RCb2R5 73196\nLk1vYmlsZQ== 73197\nSm9uZXM= 73198\nLlBob3Rv 73199\nIGF4bGU= 73200\nenVn 73201\nL29wdGlvbnM= 73202\nXV0pCgo= 73203\nCW5v 73204\nW2hyZWY= 73205\nIGFncmVnYXI= 73206\nIFNlcnZpY2VFeGNlcHRpb24= 73207\nbmluZ2Vu 73208\nRGlmZmljdWx0eQ== 73209\nQk9PTEVBTg== 73210\nQWRkcw== 73211\nLWhhbmRsZXI= 73212\nIEdhdA== 73213\nIEVib255 73214\n4bqtbg== 73215\nYnJpZ2h0 73216\nIGNvcnBzZXM= 73217\nLkNoZWNrZWRDaGFuZ2Vk 73218\nIG1hdGluZw== 73219\nIEhhcnRmb3Jk 73220\nIHpvdQ== 73221\nIGR1ZGVz 73222\nX2FsZw== 73223\nIEp1bGk= 73224\nb2N1cA== 73225\nINC/0YDQsNCy 73226\nIEthdHk= 73227\nX0ludGVybmFsQXJyYXk= 73228\nLkNvbHVtbkhlYWRlcnNIZWlnaHRTaXplTW9kZQ== 73229\nTWV0aG9kTWFuYWdlcg== 73230\nIFJlZGU= 73231\nIGxpc3RJdGVt 73232\nLkJvdW5kcw== 73233\nIGF2ZW51ZXM= 73234\nIENvZ25pdGl2ZQ== 73235\nRXh0ZW5k 73236\ndGVjaG5pY2Fs 73237\n4oCa 73238\nc25ha2U= 73239\nRnJvbUNsYXNz 73240\naWxlc3M= 73241\nID17 73242\ndXJldHRl 73243\nL3RocmVhZA== 73244\nRklFTERT 73245\nSVZJTkc= 73246\nIFBPU0lY 73247\nX2Fr 73248\nIC4uLy4uLy4uLw== 73249\nTXA= 73250\nIGFub255bW91c2x5 73251\nVGFyZ2V0RXhjZXB0aW9u 73252\nYWZmZXI= 73253\nYW55dGhpbmc= 73254\nImlz 73255\nZ3Jlc28= 73256\nIExhcmE= 73257\naXphZG9z 73258\nIG1pbmc= 73259\nLnRh 73260\nX3Rocm93 73261\nUmg= 73262\nIHNvbGlkaXR5 73263\nbmFobWU= 73264\naWNoYWdl 73265\nIG1vdW5k 73266\nb2xpbw== 73267\nYXJ5YQ== 73268\nQVNVUkU= 73269\nIHdvaGw= 73270\nIGZ1cm5pc2hpbmdz 73271\nLnNlY3Rpb25z 73272\nIGFwb2xvZ2llcw== 73273\nYXBpa2V5 73274\nIFNjcmV3 73275\nIFdhcnNhdw== 73276\nL2dyYXBo 73277\nIFNBVEE= 73278\neXNlcw== 73279\nL2J1dHRvbnM= 73280\n0LXQvdC+ 73281\nVUdIVA== 73282\nIHBvcm5zdGFy 73283\nUGljdHVyZUJveA== 73284\nX1RleHR1cmU= 73285\nIGHDsQ== 73286\nIG5lcmQ= 73287\nLWNvbm5lY3RlZA== 73288\nIG91dHNpZGVycw== 73289\nIG9wZXJhdGl2ZXM= 73290\nYWJibGU= 73291\nL21hbg== 73292\nIHBsZWFk 73293\nXERi 73294\nIENvdmVyZWQ= 73295\nPVM= 73296\nIEZsYW1lcw== 73297\n77+l 73298\nX3RpdGxlcw== 73299\nIHJldHJhY3Q= 73300\nIGNvbGxhYm9yYXRpbmc= 73301\nIGJlaGFuZA== 73302\nLkRhdGFHcmlkVmlld0NvbHVtbkhlYWRlcnNIZWlnaHRTaXplTW9kZQ== 73303\nIGxhYm9yZQ== 73304\nIHRvdGFsUHJpY2U= 73305\nIHNwb2lsZXI= 73306\nIGRpcHBlZA== 73307\nIikpew0K 73308\nX1NC 73309\nIExlaQ== 73310\nIGluY2x1c28= 73311\ndmVsbA== 73312\nCXBs 73313\nSW5hY3RpdmU= 73314\nIFVTU1I= 73315\nb25kZW4= 73316\nIHJvdXRlZA== 73317\nLnN0cnVjdA== 73318\n4Ks= 73319\nIE1hbGlr 73320\nIEhFWA== 73321\nIEN1c3Q= 73322\nX1BFUkNFTlQ= 73323\nX2VwaXNvZGU= 73324\n5ouJ 73325\nVkVSUw== 73326\nIGNydWlzaW5n 73327\nQm9va21hcms= 73328\n4oCmCgoKCg== 73329\nY2hlY2tCb3g= 73330\nb3VmbGFnZQ== 73331\nIG5vbnplcm8= 73332\nIGFwcm94 73333\nIFB1cmR1ZQ== 73334\nY29vbg== 73335\nbGVncw== 73336\nIExvdHRlcnk= 73337\nU2xm 73338\nSEFW 73339\nPms= 73340\nPkFu 73341\nIHNsZW5kZXI= 73342\nc2NoZWQ= 73343\nVGVsZWdyYW0= 73344\nUmljaw== 73345\nX1N0cnVjdA== 73346\nX0JD 73347\nIGN1c3RvbWFyeQ== 73348\nIERhbW9u 73349\ndXJjaGFzZWQ= 73350\nIGtvYg== 73351\nIHRpb24= 73352\nKHByb21wdA== 73353\nIGltYg== 73354\neEND 73355\nCVdlYkVsZW1lbnQ= 73356\nIGhlbW9z 73357\n4Kaw 73358\nIENOQkM= 73359\nIEFMTE9X 73360\n57Gz 73361\nIEVOQw== 73362\nLnNjYWxhdGVzdA== 73363\nIFRCRA== 73364\nZ2V0UmVmZXJlbmNl 73365\nIEltcG9ydGVk 73366\n4Liw 73367\nIGl3 73368\nb2xvbg== 73369\nbWls 73370\nOi8vJHs= 73371\nLk1hbmlmZXN0 73372\nIGxo 73373\nIGl0ZW1MaXN0 73374\nX2Fkcw== 73375\nSW5zcGVjdGFibGU= 73376\nIFRvbGVkbw== 73377\nIERpc2FzdGVy 73378\nVXBkYXRlZEF0 73379\nKScpLA== 73380\nIFBBTg== 73381\nRmlsZUNob29zZXI= 73382\nIHl1YW4= 73383\naXRt 73384\nINC10LPQvg== 73385\nIElibg== 73386\nSGF0 73387\nX3Vsb25n 73388\nYXBs 73389\nIFVydWd1YXk= 73390\nw6lueQ== 73391\nIENyYWlnc2xpc3Q= 73392\nZG9jaA== 73393\nIGJpbGU= 73394\nIHByb2R1a3Q= 73395\nIGVsZWN0cm9seQ== 73396\nLkNvdXJzZQ== 73397\nIG1x 73398\ndW5jdHVhdGlvbg== 73399\nLyoqKioqKioqKioqKioqKio= 73400\ndWp1 73401\nTU1NTQ== 73402\nX0xFRw== 73403\nIG5ldXRyb24= 73404\nIHBsdXJhbGl0eQ== 73405\nICsrJA== 73406\nZm91bmRhdGlvbg== 73407\nLkNvbHVtblN0eWxl 73408\nIEhvb3Zlcg== 73409\nLkFDVA== 73410\nIEJyYXo= 73411\nbGVzc29ucw== 73412\nZsO8aHI= 73413\n4KSC 73414\nIENsYXNzaWNz 73415\ncmFpZw== 73416\nIG1o 73417\nIGtldHRsZQ== 73418\nU3RyaWtl 73419\nZXJkYWxl 73420\nRU5UQQ== 73421\nIFRhYmxlQ29sdW1u 73422\nIFNoYWtl 73423\nIFdG 73424\nIExpY2Vuc2luZw== 73425\ndWHDp8Ojbw== 73426\nIHNlY2FyYQ== 73427\nIG5ld1ZhbA== 73428\nU2VsZWNjaW9u 73429\nUHJlZmFi 73430\nZmlnaHRlcg== 73431\nTGF1bmNoaW5n 73432\nJyI7DQo= 73433\nLmxvbg== 73434\nLnV0Y25vdw== 73435\nIEh1bmRyZWRz 73436\nZXN0ZWFk 73437\nIE92ZXJ3YXRjaA== 73438\nX0FGVEVS 73439\nIHJlbW5hbnRz 73440\nKS5c 73441\nIGxvYmJ5aXN0cw== 73442\nIHVuaW50ZW5kZWQ= 73443\nIOuQ 73444\neXN6 73445\nIGxpYnJvcw== 73446\nLXBhZ2Vz 73447\nSU5URVJGQUNF 73448\nIGRldGVybWluaXN0aWM= 73449\nIFVOSVFVRQ== 73450\nIGV0dMOk 73451\nU2luZ2xlTm9kZQ== 73452\nCQkJCQkJCQ0K 73453\nLXN0YXQ= 73454\nIGhhc2hpbmc= 73455\nL2FjY2Vzcw== 73456\ndGVsbA== 73457\nCXVzZXJuYW1l 73458\nIERhdG9z 73459\nQml0Q29udmVydGVy 73460\nOmhvc3Q= 73461\nIGFsdGVybmF0aW5n 73462\nIOKAi+KAiw== 73463\nIHdhdmVmb3Jt 73464\nPEVsZW1lbnQ= 73465\nIENhbnRvbg== 73466\nIGRlc3RhYw== 73467\ndGVudA== 73468\nLmdldE1heA== 73469\nIHN0ZW5jaWw= 73470\nIEFjcXVpc2l0aW9u 73471\nLkdlbmVyYXRpb25UeXBl 73472\nIE1FUg== 73473\nX2NvbWJpbmU= 73474\nIFtdLg== 73475\nX0JJVE1BUA== 73476\nbGRy 73477\nIGNhbnY= 73478\nIEpWTQ== 73479\ncGFycw== 73480\nIGRvd25oaWxs 73481\nRGV0YWlsc1NlcnZpY2U= 73482\nKE5BTUU= 73483\nIHJlanV2ZW4= 73484\nX3dpdGhpbg== 73485\nQWNjZXNzb3J5 73486\nIFPDqQ== 73487\nL2luYw== 73488\nIildCgo= 73489\nUHVibGljYXRpb24= 73490\nX3JvaQ== 73491\nIG1vYnM= 73492\nLk5vQXJnc0NvbnN0cnVjdG9y 73493\nIGV2ZW50b3M= 73494\nLnZlbmRvcg== 73495\nX1NFTEVDVE9S 73496\nw6lmb25v 73497\nPSJb 73498\nIGxhYXQ= 73499\nIGJsdXJyZWQ= 73500\nIEJvcmRlclNpZGU= 73501\neEZGRkZGRg== 73502\nX3dyaXR0ZW4= 73503\nIGplbnRl 73504\nL3Rpbnk= 73505\nLndw 73506\nLnN0eWxlYWJsZQ== 73507\nIENoYXJnZXI= 73508\nIGJhdGhpbmc= 73509\nIFBhbmRh 73510\nw6lsaQ== 73511\nIHBhY2llbnRl 73512\nIGdpb2NoaQ== 73513\nIFZpZXdTdGF0ZQ== 73514\nY2dp 73515\nLmxvZ2ljYWw= 73516\nRG9uYWxkVHJ1bXA= 73517\nLGNvcHk= 73518\nZW1t 73519\nX0xpbms= 73520\nIGluc2lnbmlmaWNhbnQ= 73521\nZmZtcGVn 73522\nL3BheQ== 73523\nX3F1aXQ= 73524\nSU9EZXZpY2U= 73525\nIEV4aXN0cw== 73526\nIGNvb2tz 73527\nanVuY3Rpb24= 73528\nIFRYVA== 73529\nKGVndA== 73530\nYW5pdQ== 73531\nX3BhcnRuZXI= 73532\nIGZhY3VsdA== 73533\nIFVuaWZpZWQ= 73534\nL3NiaW4= 73535\nIE5laA== 73536\nIEthemFraHN0YW4= 73537\ncG9zdGNvZGU= 73538\nIHZlZ2Fz 73539\nIHNlaW5lbQ== 73540\nfV0s 73541\ndGV0 73542\nLXBheW1lbnQ= 73543\nIENvbW1lbnRhcnk= 73544\nIGd1aWRlbGluZQ== 73545\nKTsk 73546\nIENvbnNvcnRpdW0= 73547\n57O757uf 73548\ndmlzbw== 73549\nIEJpbGxpbmc= 73550\naWNpYXI= 73551\nIFR5cGVJbmZv 73552\nCXRyYW5z 73553\nPFRleHR1cmU= 73554\nYXRob20= 73555\nbGF1Z2hz 73556\nIGludGVyY2VwdGlvbnM= 73557\nKEVWRU5U 73558\nRm9yZWNhc3Q= 73559\nVHJhcA== 73560\ndHJ4 73561\nIFdoaXRlcw== 73562\nc3VibWl0dGVk 73563\nYWxnbw== 73564\nIHRyYW5zcG9ydGVy 73565\nb3VuZGFyeQ== 73566\nIEluaGVyaXRz 73567\nIENvbmV4aW9u 73568\nLmNsaWVudFg= 73569\nCXByb2plY3Q= 73570\naGVhcnRiZWF0 73571\nLW90aGVy 73572\nICc7DQo= 73573\nw6ty 73574\nb3JwaW9u 73575\nKGNvcnM= 73576\nIEVMRUNU 73577\nIFBlcmU= 73578\nIHVzZU1lbW8= 73579\nZXdyaXRlcg== 73580\nIHNxdWlydA== 73581\nL2V4dGVuc2lvbnM= 73582\nL2Fz 73583\nLkNMSUVOVA== 73584\nIGdvdXJtZXQ= 73585\nIGF1dG9Db21wbGV0ZQ== 73586\nUkVW 73587\nIGJyYWtpbmc= 73588\nX1NFTEVDVElPTg== 73589\n44Oh44Oz44OI 73590\nX2xpZmU= 73591\nX2dyb3VuZA== 73592\nX3Rlcg== 73593\nc25z 73594\nIFNQT1JU 73595\nkuGe 73596\n5rs= 73597\nVW5pcXVlSWQ= 73598\nIGRyaXA= 73599\nX0JST1dTRVI= 73600\nLW1ldGVy 73601\nZW5kZXo= 73602\nIGV4aGF1c3RpdmU= 73603\nKFNL 73604\nIEJ1cmxpbmd0b24= 73605\nd29vcmQ= 73606\nKHBvdw== 73607\nIHNlYXJjaFRleHQ= 73608\nhYw= 73609\naGVlbHM= 73610\nc3RlbGxlcg== 73611\nLnNpZw== 73612\nWU9VUg== 73613\nLmFsaQ== 73614\nIERhdGFDb2x1bW4= 73615\nIHByb2plY3ROYW1l 73616\nX2ZlY2hh 73617\nIHJlZnVuZHM= 73618\nIHRvcG8= 73619\nIENISUxE 73620\nIE1hcmJsZQ== 73621\nIGZvckNlbGw= 73622\nIHBlc3NpbQ== 73623\nIGNyaXNweQ== 73624\naWZlc3R5bGVz 73625\nIG92ZXJkdWU= 73626\nb2xhcml0eQ== 73627\nIGFtYXTDuHI= 73628\nTWQ= 73629\nUFJFU1M= 73630\nIGluc3VyZXI= 73631\nb2NyYXQ= 73632\nIGZhY2lsaXRhdGVz 73633\nLw0KDQo= 73634\nIGh1cmRsZXM= 73635\nX0hJ 73636\nTGV0dGVycw== 73637\nbWluZWNyYWZ0 73638\nYXh0ZXI= 73639\neWs= 73640\nIGVjb27Ds20= 73641\nINC90LDRhw== 73642\nIFNXSVRDSA== 73643\nQ29uc3VsdGE= 73644\nIE5vcmE= 73645\nQ0tFUg== 73646\nX0NU 73647\nLmFwcHNwb3Q= 73648\nIC8vLS0= 73649\nCUJPT1NU 73650\nX2NvdXJzZXM= 73651\nIHdpbGxpbmdseQ== 73652\n66eM 73653\nZmZk 73654\nZmlsZXI= 73655\nIE1lYXN1cmVz 73656\nIGxlYXNlcw== 73657\nIERvcm90aHk= 73658\nOl0u 73659\nc3Vic2NyaXB0aW9ucw== 73660\nIGNob2lz 73661\nIGFsYW4= 73662\nIGFicmly 73663\nLlBvcHVw 73664\nRXN0aW1hdGVk 73665\nIFBMQU4= 73666\n4LWN 73667\nIEVMRg== 73668\nIGRpc3RhbmNpbmc= 73669\nCWFuc3dlcg== 73670\nIHJ1Z3M= 73671\nS2k= 73672\n4Z+S4Z4= 73673\nR3VpbGQ= 73674\nZXh0cmFz 73675\nY3Bz 73676\nTW9ja3M= 73677\nIHRla3N0 73678\nKmc= 73679\nLnJlcXVlc3RGb2N1cw== 73680\nIGFsdGVyYXRpb24= 73681\nIENhdGVnb3JpYQ== 73682\naW1tZXJz 73683\nIERyb3Bib3g= 73684\nIEFkZHI= 73685\n5byV 73686\nZGVwcw== 73687\nLk1lc3NhZ2VCb3g= 73688\nISwK 73689\nLmdldEI= 73690\nIG1pZ3JhdGVk 73691\nIEhvYmJ5 73692\nIE1n 73693\nLlZlcnRleA== 73694\nIGZvcmdpdmVu 73695\nIERlVg== 73696\nIHdlcmQ= 73697\nIEFyYWJpYW4= 73698\nIFNtb2tpbmc= 73699\nIHN0cmF3YmVycnk= 73700\nIENNUA== 73701\nZGJs 73702\nIERIUw== 73703\nLWVycm9ycw== 73704\nLnBhZw== 73705\nIFJORw== 73706\nIHNoYXZl 73707\nIHR3ZWU= 73708\nIGFzc2VydE51bGw= 73709\nIERlbnNpdHk= 73710\nZG9qbw== 73711\nYWlubWVudA== 73712\nIHBq 73713\nLllFQVI= 73714\nICopKTsK 73715\naWJyYXJpZXM= 73716\nSmV0cw== 73717\nRXhlY3V0aXZl 73718\nX2RlbnNl 73719\nLmdldENvbnRlbnRQYW5l 73720\nY2hhbmRsZQ== 73721\nYWluYQ== 73722\nLXJlZmVyZW5jZQ== 73723\nIGxpYXI= 73724\nIEhFQUxUSA== 73725\nW3Rlc3Q= 73726\nLmlzbmFu 73727\nQ2hhcmxpZQ== 73728\nIHB1cHBlcg== 73729\nIGtpcg== 73730\nOmhpZGRlbg== 73731\naXNWaXNpYmxl 73732\nIGtvbXQ= 73733\nIGFjcXVhaW50ZWQ= 73734\nIERydWlk 73735\nKENz 73736\nLmxhc3RuYW1l 73737\nRFNB 73738\nIGRpc3NvbHZl 73739\n57yW5Y+3 73740\nVmFyaW91cw== 73741\nIERleA== 73742\nX2FuZ2xlcw== 73743\nL2FwaW1hY2hpbmVyeQ== 73744\nIGV4cGxvZGluZw== 73745\nKENoYXJTZXF1ZW5jZQ== 73746\nIEhpc3Bhbg== 73747\nKyspewoK 73748\nLk1vZGVsU2VyaWFsaXplcg== 73749\nUVJTVFVWV1hZWg== 73750\n54K55Ye7 73751\nPXNldHRpbmdz 73752\n4KWB 73753\nUENT 73754\nIElOVEVSTkFM 73755\nIEhVR0U= 73756\nIG1pY3Jvc2NvcGU= 73757\naXNBZG1pbg== 73758\nXHY= 73759\nLnJlcXVpcmVOb25OdWxs 73760\n0L7Qu9C+0LI= 73761\naWNlcmNh 73762\nX1NFTlQ= 73763\nIGRlcGljdGlvbg== 73764\nIFVzZXJDb250cm9s 73765\nIE1lbW9y 73766\nIEFsbG9jYXRpb24= 73767\nIEJlZGZvcmQ= 73768\nIOabtA== 73769\nIHRvcm1lbnQ= 73770\nYXplZXJh 73771\nLlRvZGF5 73772\nIFJlZ2FyZGluZw== 73773\nX0VOQw== 73774\nX1JBTkRPTQ== 73775\nTG9nTGV2ZWw= 73776\nPVI= 73777\nIEdyZWVubGFuZA== 73778\nIHN0cmFpbmVk 73779\nIG1hZ25ldHM= 73780\nIGFsZXJ0Q29udHJvbGxlcg== 73781\nIENocm9uaWM= 73782\nX3JlZ2lzdGVyZWQ= 73783\nIGxpag== 73784\nIEVudHJ5UG9pbnQ= 73785\nIFJlZ2ltZW50 73786\ndWNpZA== 73787\nIENvdWxkbg== 73788\nIEFjdGluZw== 73789\nX3JheQ== 73790\nIG5hYg== 73791\nLXNlcGFyYXRlZA== 73792\nIHBubA== 73793\nQ29hY2g= 73794\nQVRZUEU= 73795\nIHN1cHBsZW1lbnRhdGlvbg== 73796\nYWNlcnM= 73797\nZmxlZXQ= 73798\nSW5wdXRCb3JkZXI= 73799\nIFN0cnVjdHVyYWw= 73800\nIGRlaW5l 73801\nIGJyZXdlcmllcw== 73802\nYW5vaQ== 73803\nIHRyYW5zbGF0b3Jz 73804\nIGVpZ2VuZW4= 73805\nIGRhbmNlcw== 73806\ndGFt 73807\nIENvb3BlcmF0aW9u 73808\nX3JlcXVlc3RlZA== 73809\nIE1hZ2ljYWw= 73810\nCUxFRlQ= 73811\nICIiKSwK 73812\nKy0rLSstKy0rLSstKy0rLQ== 73813\nIE5vaXI= 73814\nIEVzdGltYXRl 73815\nIFRocmVhZFBvb2w= 73816\nIEhlY2s= 73817\nICcqLg== 73818\nVHVya2V5 73819\nIHN1Y2NlZWRpbmc= 73820\nZHJ1Zw== 73821\ndmlv 73822\nIHBvbmVy 73823\nIEphZA== 73824\naXp6bHk= 73825\nZXZlcnl0aGluZw== 73826\nIHt9KS4= 73827\nIEluc3RpdHV0ZXM= 73828\nIG51b3Zv 73829\nIGluaXRXaXRoVGl0bGU= 73830\nIGx1YUw= 73831\nb3duaWs= 73832\nIHRob3I= 73833\nIGtsYXI= 73834\nIG5vdG9yaW91c2x5 73835\nIGRvbmc= 73836\nZW1lbnM= 73837\nX3Byb2plY3Rpb24= 73838\nX0dSRQ== 73839\nLmV5ZQ== 73840\nIHdhdGVyaW5n 73841\nIFRpaw== 73842\nb1M= 73843\nIFN0cmFuZ2Vy 73844\nICANCg0K 73845\ncGFnaW5n 73846\nX2ludGVyc2VjdA== 73847\nIENvbG9uaWFs 73848\nTGlzYQ== 73849\nLnVubGluaw== 73850\nIG1pcA== 73851\nYW51dHM= 73852\nYW1hem9u 73853\nIElERU5U 73854\nc3Rhc3k= 73855\nSnd0 73856\nLS0tLS0tKy0tLS0tLSs= 73857\nIEVWUA== 73858\nQ29udGVudExvYWRlZA== 73859\nCUJJVA== 73860\nLnBhcmVudHM= 73861\nIGFsbG9jYXRpbmc= 73862\nIEdPTEQ= 73863\nfWA7Cgo= 73864\nQUxBUg== 73865\nIHByZWNpc2E= 73866\nRGlzdGluY3Q= 73867\nc2Vp 73868\nIHN1YnBvZW5h 73869\nIHBvbXA= 73870\nIFBvbG8= 73871\nY29l 73872\ndmo= 73873\nLndvcmtmbG93 73874\nZXN0cmU= 73875\nIGNvbm5leGlvbg== 73876\naW1ldHlwZQ== 73877\nLlJvd0NvdW50 73878\nIERoYWJp 73879\nIGVtaXRz 73880\nLkJvcmRlclNpemU= 73881\nKHBvbGljeQ== 73882\nLG1lc3NhZ2U= 73883\nT25Jbml0 73884\nKShf 73885\nIGZpbmVy 73886\nW251bWJlcg== 73887\nIHNjcmlwdHVyZQ== 73888\nUmVmbGVjdA== 73889\nLXRvb2xiYXI= 73890\nKFBBVEg= 73891\nIEVOVFJZ 73892\nKC4uLikK 73893\nLWRvbWFpbg== 73894\nKHN0cmlw 73895\nKSgq 73896\nIGNvbnZleWVk 73897\nIGF0dGVudGl2ZQ== 73898\nw6hnZQ== 73899\nX0xE 73900\nIEdyYW50cw== 73901\nLWhpZ2hsaWdodA== 73902\nIGJyZXRocmVu 73903\n2YjZhA== 73904\nIGRlcXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcg== 73905\nYXB1bHQ= 73906\nLmJvdHRvbUFuY2hvcg== 73907\nIG9wY2lvbg== 73908\nIG91dEZpbGU= 73909\ncmVhdGluZw== 73910\nZGlu 73911\nX3NhbXBsZXI= 73912\nCWdsRW5hYmxl 73913\ncHR5cGU= 73914\nX0NPTkRJVElPTg== 73915\nLWVmZmljaWVudA== 73916\nJm8= 73917\nIGpj 73918\n0Kc= 73919\nL0Zvcm0= 73920\nKWZyYW1l 73921\nIGJpbmdl 73922\nX2Nsb3N1cmU= 73923\nSU1B 73924\nKG5leHRQcm9wcw== 73925\nCWNk 73926\nIGdldE1lbnU= 73927\nIGdldFN1cHBvcnRBY3Rpb25CYXI= 73928\nIG1hbmlmb2xk 73929\nWlI= 73930\nY2hhbmdlcg== 73931\nYXNzaW5n 73932\nZGlzaA== 73933\nIE1vdQ== 73934\nLm5ldGZsaXg= 73935\nIHBvc3Rjb2Rl 73936\nIHdvbWI= 73937\nIEFycw== 73938\n4oCmKQ== 73939\nIGxpbmVXaWR0aA== 73940\nRGVhbA== 73941\nYXJhcw== 73942\nIEdyYW50ZWQ= 73943\nIGhvYXg= 73944\nIGRpcmVjdGlvbmFs 73945\nLktleUNoYXI= 73946\nID09Ig== 73947\nIFZlcmRl 73948\nX0tQ 73949\nIHN1cnJvZ2F0ZQ== 73950\nIERVSQ== 73951\ndXB5dGVy 73952\nIHBlbnNl 73953\nIFJBTkQ= 73954\nKGV4Yw== 73955\nIG1pc3VuZGVyc3Rvb2Q= 73956\nIENVVA== 73957\nIOS4rQ== 73958\nCXRp 73959\nX2luc2lkZQ== 73960\nIGJpY3ljbGVz 73961\nIGRlYW4= 73962\nZGlyZWN0aXZl 73963\nLnBlZXI= 73964\naWNpbmE= 73965\nX2l0ZXJz 73966\nIGltcGx5aW5n 73967\nLm9idGFpbg== 73968\nIHBzeWNoaWF0cmlzdA== 73969\ndXNlclNlcnZpY2U= 73970\nZWxpdmVyeQ== 73971\nCXBhcnQ= 73972\nIGh1cnJpZWQ= 73973\nIGJ1bQ== 73974\nIGhlcGF0aXRpcw== 73975\namlk 73976\nJ10+Owo= 73977\nIHVuY29udmVudGlvbmFs 73978\nIGZhc2Npc3Q= 73979\nIFBleQ== 73980\n6K+t 73981\nJyl9PC8= 73982\nLkNsdXN0ZXI= 73983\nIEJpdENvbnZlcnRlcg== 73984\nZWRhdGE= 73985\nzr/PhQ== 73986\n4pSC 73987\nQXBwQnVuZGxl 73988\nLmh0dHBDbGllbnQ= 73989\nIGFwbw== 73990\nQUlOUw== 73991\nIFZG 73992\nX2dpZA== 73993\nIG9kZQ== 73994\nRVJSWQ== 73995\nIFJlY2VpcHQ= 73996\nIENhbmRsZQ== 73997\nIG1pc3Npb25hcnk= 73998\nIENyYW5l 73999\nIFNUQVRFUw== 74000\nYm91dA== 74001\nYXlhcmFu 74002\nLi4uIiwK 74003\nIGl0aW5lcmFyeQ== 74004\nKGxhdGl0dWRl 74005\nIENPTlM= 74006\nL3NpZGViYXI= 74007\nU3BpZGVy 74008\nR1JJRA== 74009\nLmRlYnVnTGluZQ== 74010\nIGAn 74011\nLXllbGxvdw== 74012\nIHJlZmluZW1lbnQ= 74013\nIE1ha2V1cA== 74014\nIERhbm4= 74015\nKCk7DQoNCg0K 74016\nIG92ZXJjb21pbmc= 74017\nIEJhdHRlcg== 74018\nL3BhY2thZ2Vz 74019\nINCy0LjQtA== 74020\nIGFyeQ== 74021\n4oCdPw== 74022\ncmVsbGFz 74023\nIGdydXBvcw== 74024\nIFR5cGljYWw= 74025\nIE1vbnNhbnRv 74026\nSW50ZXJzZWN0aW9u 74027\nIHR5cmU= 74028\nPT09PT09Cg== 74029\nzq4= 74030\nOzsKCg== 74031\nIHRyaXZpYQ== 74032\nX3Rha2Vu 74033\nIHNtdWdnbGluZw== 74034\nIG5hcnJvd2Vk 74035\n4bqpbQ== 74036\nIHBhbGFicmE= 74037\nY2Vh 74038\ncGFydGljdWxhcmx5 74039\nQWNjZXNzVHlwZQ== 74040\nIGNvbGU= 74041\nVG9GaXQ= 74042\nIHZlcmU= 74043\nIENPUw== 74044\nL3ZpZGVvcw== 74045\nICgkKCIj 74046\nIGNyYW5l 74047\nLmhhc01vcmU= 74048\nJHBhdGg= 74049\naXZpc20= 74050\nIHN1cGVydmlzb3Jz 74051\nIEZsb3Jlcw== 74052\ncHJvZ3JhbXM= 74053\nLlppcA== 74054\nIGltcGFjdGluZw== 74055\nIG1vdG8= 74056\nIFRK 74057\ncGVnYXdhaQ== 74058\nX0tJTkQ= 74059\nX2ludGVyZmFjZXM= 74060\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 74061\nIExlYXZpbmc= 74062\nVGV4dFN0eWxl 74063\nYmVpdGVy 74064\nIFdpbm5pbmc= 74065\nLXBhcmFt 74066\nR2FyeQ== 74067\nIFN1bnM= 74068\nYWzEscWf 74069\nZHVjaw== 74070\nIHRocmVhZElkeA== 74071\nIHBvZXRz 74072\nIHBsZWFkaW5n 74073\nIENvcmludGhpYW5z 74074\nZmNj 74075\nYXdhaXRlcg== 74076\nKi0= 74077\nIHBlcnNldmVy 74078\nIGFjdGl2aWRhZGVz 74079\nX291dGxpbmU= 74080\nLXBsYW4= 74081\nLnNjcm9sbFZpZXc= 74082\ncXVhdA== 74083\nIHNhbXN1bmc= 74084\nIGxldmVsaW5n 74085\nIHNwbGl0dGVy 74086\nX2dlb20= 74087\nIHByb21pbmVudGx5 74088\nIFNlZWRz 74089\n5Zyf 74090\ndWFpcw== 74091\nZWZ1bGx5 74092\nSUVudW1lcmFibGU= 74093\nYWRkcw== 74094\ndmVyc2F0aW9ucw== 74095\nIGRpc2FibGVz 74096\nQU5EUk9JRA== 74097\nIFdlaXRlcg== 74098\nX0Zvcm1hdA== 74099\nX3NwbGl0cw== 74100\nIEFjdGl2ZVN1cHBvcnQ= 74101\nKGNzcw== 74102\nX21pY3Jv 74103\nc3RyaWtl 74104\nIENhdXNlcw== 74105\nIHZpc2libHk= 74106\nQ2FuY2VsYWJsZQ== 74107\nIFlvc2g= 74108\nIGRyYWluaW5n 74109\nIGNvbGk= 74110\nYXNsZXk= 74111\nIFJlc3BvbnNpYmlsaXRpZXM= 74112\nIFN1dHRvbg== 74113\nKnRoaXM= 74114\nU2hhcmVz 74115\nLWdyYXBo 74116\nIGVubGFyZ2Vk 74117\nUm91dGluZQ== 74118\nIGZyYW1lYnVmZmVy 74119\nIGFpcmZsb3c= 74120\nIHRyeA== 74121\nIExlaWdo 74122\nIEtlbnM= 74123\nKGhlYXA= 74124\nIHNwaWxsZWQ= 74125\nU0NBTEw= 74126\nIFZlbHZldA== 74127\nYWN0dWFsbHk= 74128\nX0VOQ09ESU5H 74129\nIFdvcm0= 74130\nKSl9Cg== 74131\nIERhbmdlcm91cw== 74132\nIHN1cGVyaW50ZW5kZW50 74133\nLmxvb2s= 74134\nIHNoZWw= 74135\nL2Zz 74136\nU2FmZXR5 74137\n5a6L 74138\nLkRFRklORQ== 74139\nX2ZhY3RvcnM= 74140\nIHBhcnRpZG8= 74141\nIG9wdGltaXppbmc= 74142\nRG91YmxlQ2xpY2s= 74143\nLWNvbW1lcmNpYWw= 74144\nIGxvZ2ljYWxseQ== 74145\nY3ljaA== 74146\ndXJ2ZQ== 74147\nwrU= 74148\nQUlMWQ== 74149\nIHJlYWN0aW5n 74150\nX0VYUFI= 74151\na8O2 74152\nLmxvY2FsaXplZERlc2NyaXB0aW9u 74153\nIGFzdG91bmRpbmc= 74154\nIHBhc3RyeQ== 74155\nIGdsb3NzeQ== 74156\nIGJlaGF2ZXM= 74157\nL2Vj 74158\nIGNsaXBwZWQ= 74159\nIHByb3dlc3M= 74160\nIFVC 74161\nLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 74162\nCWFscGhh 74163\nIGV4dHJhdmFn 74164\nIGZpbm5z 74165\nKFNvY2tldA== 74166\nIFVuc2FmZQ== 74167\nIHF1aWVyZQ== 74168\nX2VuY29kZWQ= 74169\nb2x1bWJpYQ== 74170\nIHphYg== 74171\nc3RyaWN0ZWQ= 74172\nIG1uaWU= 74173\nIE1PUw== 74174\nIGF0aGxldGljcw== 74175\nIEtlbmRhbGw= 74176\nIOyYpA== 74177\nQVZBSUxBQkxF 74178\naW5veA== 74179\nX09QQ09ERQ== 74180\nIEl0ZW1UeXBl 74181\nIGNlbnRyaWY= 74182\nIGludGVyc3RhdGU= 74183\nX2Jvb2tz 74184\nLmRlbGl2ZXJ5 74185\nIExpc3Rl 74186\nb3JzaQ== 74187\nX3NlY3VyZQ== 74188\nZ3Jvd3Ro 74189\nIHZlbnRl 74190\nIHBzeWNob2xvZ2lzdHM= 74191\nIENDUw== 74192\ndWRlbmNl 74193\nIGNyYXdsZXI= 74194\nL21hbnVhbA== 74195\nIHRleHRTdHlsZQ== 74196\nIHBhbGluZHJvbWU= 74197\nIGNvbmR1Y3Rz 74198\ndGFibA== 74199\nV2l0aFVSTA== 74200\nL3JpZ2h0 74201\nIERyYQ== 74202\nLk1haWw= 74203\nKHNlYw== 74204\nb2Z0d2FyZQ== 74205\nIHNldWw= 74206\nIHdyaW5rbGVz 74207\nX0ZX 74208\nQXk= 74209\nIEVybnN0 74210\ndW5iaW5k 74211\nIGNvbW1lbmQ= 74212\nX2hvb2tz 74213\nIE1vbmV0YXJ5 74214\nIFFR 74215\ndW5pdE9mV29yaw== 74216\nIEVudGl0eVR5cGU= 74217\nIGhvcm1vbmFs 74218\nLkZBSUw= 74219\nQFNsZg== 74220\nL2NoYW5uZWw= 74221\nc29ubw== 74222\nRGFucw== 74223\nX1JlZ2lzdGVy 74224\nSGFu 74225\nT1JC 74226\nSktMTU5PUA== 74227\ndmVudGVk 74228\nIGxvbmdzdGFuZGluZw== 74229\nIGJnQ29sb3I= 74230\nIDsp 74231\nIFJvYmJpZQ== 74232\nKCIuIg== 74233\nIGFqdXN0 74234\nLmhhbmRsZUNsaWNr 74235\ncmF0aW5ncw== 74236\ncHRlcg== 74237\nIGVyb3RpY28= 74238\nIEplbGx5 74239\nKioqKioqDQo= 74240\nLkRvZXNOb3RFeGlzdA== 74241\nCWJl 74242\nJHRlbXA= 74243\nIj4mIw== 74244\n55u0 74245\nCVB1YmxpYw== 74246\nneyytA== 74247\nIEJ1aWxkaW5ncw== 74248\nLWFsb25l 74249\nLCdc 74250\nIHN3YXBz 74251\nIHBlcnBsZXg= 74252\nX3Byb2Nlc3NvcnM= 74253\nINC00LI= 74254\nIE5ZUEQ= 74255\nUENS 74256\n5q+P 74257\nIGhvamU= 74258\nRWRpdE1vZGU= 74259\nIHZ1bGdhcg== 74260\nIHZlcmRl 74261\nICgpPT57Cg== 74262\nL2Zyb250ZW5k 74263\nIHRlbGVmb25l 74264\nIGxhbnRlcm4= 74265\nLnBhZ2VY 74266\nIER1ZA== 74267\nbGltaXRhdGlvbnM= 74268\nIG5vdGlmaWVy 74269\nIE1lc3NhZ2luZw== 74270\nIWltcG9ydGFudA== 74271\nIHN1cmdlb25z 74272\nKT0o 74273\nRml4ZWRTaXpl 74274\nLlpvb20= 74275\naW5hbg== 74276\nIGNyZWRz 74277\nIEJVRg== 74278\nLlN0YWNrVHJhY2U= 74279\nIHdhcnJhbnRlZA== 74280\nIHNvdXJjaW5n 74281\nIGNvbm5h 74282\nX0ZSRQ== 74283\nIHdvbGw= 74284\nIHJlZmluaW5n 74285\nX0FMTE9XRUQ= 74286\nX212 74287\nIFdvcmNl 74288\nIFNpbmNsYWly 74289\nQ2hlY2tzdW0= 74290\nIHVubG9ja3M= 74291\nIE1hcmtkb3du 74292\nIGZpc2hlcm1lbg== 74293\nRHVi 74294\nIEJvbm5pZQ== 74295\nICAgICAgICAJCg== 74296\nIHZlcno= 74297\nPiw8Lw== 74298\nPjwhWw== 74299\nWyc8ew== 74300\namVj 74301\nIEVyZw== 74302\ncmF0aGVy 74303\nIHBhbGFicmFz 74304\nIFBBQ0tFVA== 74305\nbWlzZQ== 74306\nZGFx 74307\nIE9rdG9iZXI= 74308\nKEdMRlc= 74309\nIEhlbnJp 74310\nIEZvdA== 74311\nIER1bw== 74312\nIE5FUw== 74313\nIHNhbHNh 74314\nIHVuYmlhc2Vk 74315\nQFNwcmluZ0Jvb3RUZXN0 74316\nIG9mZnM= 74317\n5YWs5Y+4 74318\nIGFtb3VudGVk 74319\nRnVsbFBhdGg= 74320\nIHF1YXQ= 74321\nIG1haWRlbg== 74322\nIFN1YnNldA== 74323\nIEFwcGxpY2F0aW9uRGJDb250ZXh0 74324\nbWlycm9y 74325\nbmV4 74326\nLnN0cmVldA== 74327\nc2V0UXVlcnk= 74328\nJHJlc3VsdHM= 74329\nYWRlcm8= 74330\nZ3Jlc3Nvcg== 74331\nX2J1Zw== 74332\naXNzZXI= 74333\nIFNlYXJz 74334\nIGZpbGxDb2xvcg== 74335\nLm1hc2tz 74336\nIERpYWJsbw== 74337\nX0FORFJPSUQ= 74338\n0J7QsQ== 74339\nIGZyZWFraW5n 74340\nIHJpbnNl 74341\nKHBrdA== 74342\nIGJvb2tsZXQ= 74343\nIHNhbmN0aW9uZWQ= 74344\nIHN0cmVhbWVk 74345\ndGFicGFuZWw= 74346\nIFJldHVybmluZw== 74347\nUGxhaW5UZXh0 74348\nTE9ZRUU= 74349\nYWxlc2Nl 74350\n0L7QutCw 74351\nIEZpeHR1cmU= 74352\nYXNzYWRvcnM= 74353\nIGRpc2JlbGllZg== 74354\nIEx1c3Q= 74355\nIHJhZGljYWxz 74356\nLkZlYXR1cmVz 74357\nX2luY2hlcw== 74358\nKHByaW1hcnk= 74359\nIEpNZW51SXRlbQ== 74360\nX3Rha2U= 74361\nIENva2U= 74362\nVW5pdE9mV29yaw== 74363\nIFdDSEFS 74364\nIGNvbnNjaWVudA== 74365\nb25lbnVtYmVy 74366\nUElORw== 74367\nYWJham8= 74368\nXSgi 74369\nLnNhbGVz 74370\nX2hlcmU= 74371\nIG9mZnNldFg= 74372\ndGFnTmFtZQ== 74373\nINmK 74374\nX1JpZ2h0 74375\naWxpZw== 74376\ndGhlVmFsdWU= 74377\nb2NhcmQ= 74378\nIGNvbnN1bHRhbmN5 74379\nIGJsaWo= 74380\nZ29ybQ== 74381\nTmF2aWdhdGU= 74382\nxLFj 74383\nSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9u 74384\nX3Zl 74385\nLkNPTlRFTlQ= 74386\ndXJvcGVhbg== 74387\nLnJhZGlv 74388\nIGVudmlzaW9uZWQ= 74389\nIFNPTQ== 74390\nLnNk 74391\nQU5USVRZ 74392\nIENBTExCQUNL 74393\nIGhn 74394\nZGVjcnlwdA== 74395\n566x 74396\nXFF1ZXVl 74397\nIE1JTEY= 74398\nIHJlY3Vyc2U= 74399\nIERhbnRl 74400\nLmdhbW1h 74401\nb3Jrcw== 74402\nKCIiKSkK 74403\nIEdyaW0= 74404\nLm9wZW5n 74405\nIE1pY2hlbGU= 74406\nQW5hbHk= 74407\nIFBydQ== 74408\nX3JlZGlyZWN0ZWQ= 74409\nX3BhbA== 74410\nZmFsbGJhY2s= 74411\nIOWtlw== 74412\nIGRpbm5lcnM= 74413\nR2VuZXJhdGluZw== 74414\nJCIs 74415\naGlzdG9yaWM= 74416\nZ2V0U2ltcGxlTmFtZQ== 74417\nIE1pbGxpb25z 74418\nLWdsb2JhbA== 74419\ncm91dGluZw== 74420\nIGNvbnNvbGlkYXRl 74421\nIHJlY29pbA== 74422\nT2JqZWN0T2ZUeXBl 74423\nIGRlc3BlcmF0aW9u 74424\nQW55d2hlcmU= 74425\nIGdldE1vZGVs 74426\nX2tpbGw= 74427\nb2Jvb2s= 74428\nL2Rpc3BsYXk= 74429\nIi8+Cgo= 74430\nIG1heW8= 74431\nINGB0L/QuNGB0L7Qug== 74432\nIGdvYWxpZQ== 74433\neERG 74434\nIFByZXBhcmF0aW9u 74435\nIGRlcGVuZGFibGU= 74436\nLklOVkFMSUQ= 74437\nLi4uJw== 74438\nbmF0YWw= 74439\nbW9kdWxlTmFtZQ== 74440\nY2FyYm9u 74441\nUEFM 74442\nIG1lZQ== 74443\nIGNhc2luZw== 74444\n6aG555uu 74445\nbmljYXM= 74446\nIEhhbW0= 74447\nIEJhYmU= 74448\nb3dhbmU= 74449\nIHN5bm9ueW0= 74450\nIFFpbg== 74451\naW9j 74452\nZW1vdGlvbg== 74453\nIGZlcm1lbnRhdGlvbg== 74454\nIGN1bXBs 74455\nIEVsZWN0cmljaXR5 74456\nKFJPT1Q= 74457\ndGVzdGVy 74458\nIEh1c2JhbmQ= 74459\nIEJhdQ== 74460\nX01BQ1JP 74461\nYWtlbmluZw== 74462\nICAgICAgICAKICAgICAgICAKICAgICAgICAK 74463\nLmZpbg== 74464\nIENvbmZpZGVudGlhbA== 74465\naWV6 74466\nTUJFUg== 74467\nIHNwZXJtYQ== 74468\nIEhQVg== 74469\ndHhu 74470\nQ09OVEFDVA== 74471\nLlRocm93 74472\nIG11cmFs 74473\nIFR3aXN0 74474\nKCZfX18= 74475\nIGpk 74476\nIGVtcG93ZXJtZW50 74477\nIGRpc3RpbnQ= 74478\nIGJvbWJpbmdz 74479\nT3V0Y29tZQ== 74480\nIHNob3J0ZW4= 74481\n5b6M 74482\nQUNDT1VOVA== 74483\nX2NvdmVyYWdl 74484\nZW5jbw== 74485\nX3JlZmVy 74486\nc2V0TWVzc2FnZQ== 74487\nIHJlcGVyYw== 74488\ncHRpZGVz 74489\nIGRlaXR5 74490\ndWNoc2lh 74491\nKGh0 74492\nLnN1YnNjcmlwdGlvbg== 74493\nIHJlZGlzdHJpYnV0ZWQ= 74494\nIER5bmFzdHk= 74495\nX3Zj 74496\nLWZyYW1ld29yaw== 74497\ncnlmYWxs 74498\nIGdhdGluZw== 74499\nIExvcmVuem8= 74500\nb29kb28= 74501\nIGRpZ2VzdGlvbg== 74502\nIGZvb3Rpbmc= 74503\nCUhhc2hNYXA= 74504\ncmVhbERvbmFsZFRydW1w 74505\nIGFwYWNoZQ== 74506\nKHZhbG9y 74507\nIHBvaXNvbm91cw== 74508\nLlBlcm1pc3Npb24= 74509\nIHBhcmFtb3VudA== 74510\nd2VpdA== 74511\nbGxhbmQ= 74512\nIGh5cG90aGVzZXM= 74513\nIFByeQ== 74514\nIGhvbWVt 74515\nKERldmljZQ== 74516\naW5kaWNl 74517\nZXZh 74518\ncHJlc2VuY2U= 74519\nIEJlbnRsZXk= 74520\nIEVuZGluZw== 74521\nIGRvbWVzdA== 74522\nCXRw 74523\nCWVycm9ycw== 74524\nY29ybmVy 74525\nbGRh 74526\nCgkJCQkK 74527\nX1BFUlNPTg== 74528\nIFNlcmdleQ== 74529\nIFBhcnNlcw== 74530\nLWZpY3Rpb24= 74531\nLkJhY2tncm91bmRDb2xvcg== 74532\nIHNvbW1lcw== 74533\nIGNvb2xlc3Q= 74534\nIHJ1YmJsZQ== 74535\nLmpvYnM= 74536\nIGRyb3duaW5n 74537\nYWRvcmFz 74538\nIHdpbmdlcg== 74539\nIEluY3JlYXNpbmc= 74540\n2YrYqQ== 74541\nQkJCQg== 74542\nKFJvbGU= 74543\nIG9kZGx5 74544\nRGV2RXhwcmVzcw== 74545\nLXV0aWw= 74546\nIFNoZW1hbGU= 74547\ncHJpbWl0aXZl 74548\nIGFmZmlybWVk 74549\nLnJldHVyblZhbHVl 74550\nLWxpdmU= 74551\nIEFjdGlvbkNvbnRyb2xsZXI= 74552\nw6ts 74553\nZXJjdWxvc2lz 74554\nIHByYWt0 74555\nIGdlb3BvbA== 74556\ncGljcw== 74557\nQ0RD 74558\nLkZs 74559\nLnNpZA== 74560\ncmllYmVu 74561\nKHZhcnM= 74562\nK3NlbGY= 74563\nIGludGVyaW9ycw== 74564\nIEF1Z3VzdGluZQ== 74565\nIjpAIg== 74566\nIFN0ZWFsdGg= 74567\nIGdldENvbG9y 74568\nIEdlbnRsZQ== 74569\nfiI6Ig== 74570\nIHdoaW0= 74571\nKCc8Lw== 74572\nIFNTRQ== 74573\nIFZpb2xldA== 74574\nX2NyZWQ= 74575\nIGF0YQ== 74576\nIEF6ZXJiYWlqYW4= 74577\nID8/Pz8/ 74578\nLmV2ZXJ5 74579\nKGNvbm5lY3Q= 74580\nIERyb25l 74581\nIHRvbGVyYW50 74582\nc3VidG90YWw= 74583\nX3NodWZmbGU= 74584\ndXN0YWluYWJpbGl0eQ== 74585\ncHJlZmVycmVk 74586\nIFNFWA== 74587\nIGNvbmdyZXNzbWFu 74588\nIG5hbW9ybw== 74589\nIGhvbm9yYWJsZQ== 74590\nIGFmdGVyRWFjaA== 74591\nIMW8eWM= 74592\nSEFN 74593\nLnRvbQ== 74594\nIGVsb25n 74595\nIFNlcmlvdXM= 74596\nLVNlbWl0aWM= 74597\n0KHRgg== 74598\nIGZsYW0= 74599\ndGVuZXI= 74600\nLlRFU1Q= 74601\nIFRSQUNL 74602\nIFBoaWxpcHM= 74603\nIEFyZW4= 74604\nIEhpY2tz 74605\nb2luZWQ= 74606\nIEZhaA== 74607\naXNzZXVy 74608\nIGNpcmN1bWNpc2lvbg== 74609\nKHR3ZWV0 74610\nIHBvaWw= 74611\nIFNlZW4= 74612\nX01BUFBJTkc= 74613\nIGludmFyaWFibHk= 74614\nIEZ1c2U= 74615\nICc/Jw== 74616\nPXBhc3N3b3Jk 74617\nIOuCmA== 74618\nIElIdHRw 74619\nc3R5cGU= 74620\nZml0bmVzcw== 74621\nLlRhZ3M= 74622\nIOqwnA== 74623\nKERXT1JE 74624\nIHF1YQ== 74625\nIE1hcnZpbg== 74626\nIk0= 74627\nLmlzQXV0aGVudGljYXRlZA== 74628\nLmd1YXJk 74629\nKT8KCg== 74630\nCQkJCQkJCQkJCQkJCQkJCQkJCQ== 74631\nIFNoaXBz 74632\nIHNlbnNpdA== 74633\nfTsNCg0KDQo= 74634\nYWhhaGE= 74635\nIGxpZXV0ZW5hbnQ= 74636\nIEphZ3Vhcg== 74637\nIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 74638\nVUNF 74639\nSW5zcA== 74640\nYWludGVy 74641\nX3BvbHlnb24= 74642\nLkRvd24= 74643\nIHRleHR1cmVk 74644\nLnNldEFjdGlvbg== 74645\nb2dy 74646\nIHNjaWVudGlmaWNhbGx5 74647\nIHNocmluZQ== 74648\nIGNsb3VkeQ== 74649\nLkhvdXI= 74650\nUG9zdEJhY2s= 74651\nQVpZ 74652\nX2NhbmRpZGF0ZXM= 74653\nKFNlYXJjaA== 74654\nIGNvbW1pc3Npb25lcnM= 74655\nIEJpZW4= 74656\nIGRvY3RvcmFs 74657\nIEZlZWxpbmc= 74658\nX1ZFUlRJQ0FM 74659\nIEJk 74660\nbmdpbng= 74661\nIOWcqA== 74662\nX2FyZ3Y= 74663\nUlNB 74664\nIGVsZGVzdA== 74665\nLWhlYXZ5 74666\nQ09OTg== 74667\nIEh0dHBOb3RGb3VuZA== 74668\nLWNvbHVtbnM= 74669\nIE5QQ3M= 74670\nIGNhZmVz 74671\nIGfDqQ== 74672\nIHN0YWxscw== 74673\nIGZvcmtz 74674\nIHBvYmw= 74675\nU3RyZWFtcw== 74676\nIGJhc3RhcmQ= 74677\nIFJhcHRvcnM= 74678\nIEdyYW1teQ== 74679\nIEdlaA== 74680\nX1RpY2s= 74681\nKHByZWc= 74682\nIGxpcHN0aWNr 74683\nX3J1 74684\nPEg= 74685\nIMSRaQ== 74686\nLkNhcg== 74687\nIHNwYXJlZA== 74688\nbW9uaWM= 74689\naW5jdGlvbnM= 74690\nQWZyaWNh 74691\nKGRpY3Rpb25hcnk= 74692\nICoqKSY= 74693\nYGBg 74694\nX3ByZXNzdXJl 74695\nbWll 74696\nIFJvbWFuaWFu 74697\nL21hcms= 74698\nIG1haW50ZW5hbnQ= 74699\nIHRyZW4= 74700\nIFBvc3RncmVTUUw= 74701\nUkVMRUFTRQ== 74702\nSlBFRw== 74703\nIGRlZGljYXRl 74704\nTWFrZVJhbmdl 74705\nIHJvYm90aWNz 74706\nYWt0aXY= 74707\nJSUl 74708\nYWFy 74709\ndmlld01vZGVs 74710\nKG1hYw== 74711\ndWNoZXI= 74712\nIGRlYmVu 74713\nTG9jYWxpemF0aW9u 74714\n0L7Qt9Cy0YDQsNGJ0LDQtdGC 74715\nLnNldFRvb2xUaXA= 74716\nLmZhc3Rqc29u 74717\nIHBlcmVubmlhbA== 74718\nLWNoaWVm 74719\na2lzaA== 74720\nIGF0dGlj 74721\nU3VidGl0bGU= 74722\nIFNsYW0= 74723\nIExpdGVyYXJ5 74724\nZXJuZXM= 74725\nINGC0L7Qu9GM0LrQvg== 74726\nIHN0YXJ0QWN0aXZpdHlGb3JSZXN1bHQ= 74727\nLkVycm9yTWVzc2FnZQ== 74728\nYmluYXRpb25z 74729\nIkw= 74730\nIGZvcmJpZA== 74731\nIGxvZGdlZA== 74732\nLkxpc3RCb3g= 74733\nIFBTRA== 74734\nIGN1bHR1cmE= 74735\nVU5DVA== 74736\nIk9uZQ== 74737\nIEd1aWxs 74738\nIEJhdHRhbGlvbg== 74739\nIGNhcmVnaXZlcnM= 74740\nIEtsbw== 74741\nQmVoaW5k 74742\nIHNlYXJjaGFibGU= 74743\nX0JPVU5E 74744\nUk9D 74745\nIHN0ZXJlb3R5cGU= 74746\nIHByZXBlbmQ= 74747\naW50ZXJzZWN0aW9u 74748\nQmFza2V0 74749\nKGxv 74750\nIGZpbGVJbmZv 74751\nIFVJU2Nyb2xsVmlldw== 74752\nZWNlc3NhcmlseQ== 74753\nIENoZXM= 74754\nLWluc3RhbmNl 74755\nIGFwcGFydA== 74756\nIEFtYXI= 74757\nIHJvd0RhdGE= 74758\nIGF5dWRh 74759\nIGNhcmF2YW4= 74760\nX3BpY2tsZQ== 74761\nIGNoYWluaW5n 74762\nKV07Cgo= 74763\nIGJveGVk 74764\nYWVwZXI= 74765\nIEVWRVI= 74766\neW50aGVzaXM= 74767\nLWZhc3Q= 74768\nIOuwsA== 74769\n5Y+v5Lul 74770\nIHZvbHVudGVlcmVk 74771\nIGV4aWc= 74772\nU0lERQ== 74773\nIFBob25lTnVtYmVy 74774\ndWxhaXJl 74775\nIEthZA== 74776\nIGRhcm4= 74777\nIHlhaw== 74778\nIEJsaW5r 74779\nLnNwaW5uZXI= 74780\nIG9yZGVhbA== 74781\nX2VuZW15 74782\nIGdldFM= 74783\nIEJvbw== 74784\nTGluZU51bWJlcg== 74785\nX0xPT0s= 74786\nRUxDT01F 74787\nIHNlYW1z 74788\nIHNhZ2Vu 74789\naXNjbG9zZWQ= 74790\nKHJheQ== 74791\nW2dyb3Vw 74792\nUFRT 74793\nLk5hdmlnYXRl 74794\nIE93bA== 74795\nIGRidXM= 74796\nIGltcGF0aWVudA== 74797\nIEd1cHRh 74798\nKG9iamVjdHM= 74799\nIGFwcmls 74800\nLXF1 74801\nIG91dHJhcw== 74802\nIFRIRU0= 74803\nIEVNQw== 74804\nRW1wbGVhZG8= 74805\nIGdydWI= 74806\nSUFN 74807\nIHZlbm9t 74808\nIHRyYW5zY2VuZA== 74809\nIHZpY3RvcmlvdXM= 74810\nIE1heWVy 74811\nINGC0L7QstCw0YA= 74812\nIEtlbGxleQ== 74813\nSW5wdXRHcm91cA== 74814\nIHJlZmlsbA== 74815\nV2l0aFR5cGU= 74816\nIGNoYXVmZg== 74817\nb2xkZW0= 74818\nX3RpZA== 74819\nIGZsdXNoZWQ= 74820\nXHN5c3RlbQ== 74821\nLnJhbmRyYW5nZQ== 74822\nIFBPU0lUSU9O 74823\nIFRlbmFudA== 74824\nY29udmVyc2lvbg== 74825\nY2FsbGluZw== 74826\nKCkpKSwK 74827\n0L7QvdCw 74828\nIHNpZGV3YXlz 74829\nIGxheA== 74830\nCXJlcA== 74831\nYWVwZXJuaWNr 74832\nIG5lZ2Vy 74833\nIEZseWVycw== 74834\nICJALw== 74835\ndXBha2Fu 74836\nX2VsYXBzZWQ= 74837\ndHViZQ== 74838\nUG9zWA== 74839\nLnNleA== 74840\nIGzDpHNzdA== 74841\nIEdyYXZl 74842\n5Y+C 74843\nKGVtcA== 74844\nKHN0cnRvbG93ZXI= 74845\nY29udmVydGVy 74846\nIFNwb25zb3JlZA== 74847\nKHdvcmtlcg== 74848\nIG1hdHJpbW9u 74849\nQ29tbWlzc2lvbg== 74850\nKGh3 74851\nX1NJR05BVFVSRQ== 74852\nbWVr 74853\nIGFsZ3VuYXM= 74854\nX0VU 74855\naXN0cmluZw== 74856\nTHY= 74857\nU2xpZGVz 74858\nIHdlYWtTZWxm 74859\nIHdr 74860\nIFppZw== 74861\nIHB1YnM= 74862\nIEJSQQ== 74863\nIGZsdW9yZXNjZW50 74864\nY2Fycnk= 74865\nLmVyYg== 74866\nIEluaQ== 74867\nLkRyYXdTdHJpbmc= 74868\nIFNFUA== 74869\ndXR0ZXJz 74870\n2ZE= 74871\nUm95YWw= 74872\nIGNhYmJhZ2U= 74873\nIFN1aw== 74874\nXT49 74875\nIEVkaXNvbg== 74876\nIHNwZWN1bGF0ZWQ= 74877\nLmRvd25jYXNl 74878\nIHRwaA== 74879\nIMOD 74880\nIGd1bnNob3Q= 74881\ncnBt 74882\nIGZsdXR0ZXI= 74883\nIGFueA== 74884\nYXplcw== 74885\nUU9iamVjdA== 74886\nIEZhdm9y 74887\nIG1vZHVsZU5hbWU= 74888\nJnM= 74889\nbGVo 74890\nLldlaWdodA== 74891\nIFdBTA== 74892\nX1ZBUlM= 74893\nIFdhc3Nlcg== 74894\nIG91dGJvdW5k 74895\nIGVyZm9sZ3Jl 74896\nLnZhbG9y 74897\nKGxpZ2h0 74898\nIE1hZ251cw== 74899\nIHpvZWs= 74900\neWg= 74901\nIHN0eWxlc2hlZXQ= 74902\nPm0= 74903\nV2hpdGVzcGFjZQ== 74904\nIFsnLw== 74905\nCVJlcXVlc3Q= 74906\nX2luY3JlYXNl 74907\nLWRpc3RhbmNl 74908\naWNvbG9y 74909\naGNp 74910\nIEtJTkc= 74911\nUFg= 74912\nb2ls 74913\nZW1pbmc= 74914\nbmFtZW50cw== 74915\nRGVmaW5lcw== 74916\nIFstLQ== 74917\nIHZhcmlvcw== 74918\nIFBSRVNT 74919\nLGF4aXM= 74920\nIENvbGxpZGVy 74921\nKX0KCg== 74922\nIGZvcmNpYmx5 74923\nIHN0YWF0 74924\nX1NUQU5EQVJE 74925\nIG9jY3VsdA== 74926\nIGJhcHRpc20= 74927\nIEN1bm5pbmdoYW0= 74928\nX2J1aWx0aW4= 74929\nQ1BG 74930\nW21heG4= 74931\nIFJIUw== 74932\nIE9uZXM= 74933\nKF86 74934\nIGluc2VjdXJpdHk= 74935\nLnJlZ2lzdHJhdGlvbg== 74936\naW1wbGlmaWVk 74937\nIFN5bXBvc2l1bQ== 74938\naHJlYWQ= 74939\nIHF1ZWxsZQ== 74940\nIGZyZW56eQ== 74941\nQ2FsaWJyaQ== 74942\nIFNQRUVE 74943\nb3Vp 74944\nKCldLAo= 74945\nYWNjb3JkaW5n 74946\nIG1jYw== 74947\nIGFzaWF0 74948\nIGFkamFjZW5jeQ== 74949\nIEFibGU= 74950\nIHNhbGRv 74951\nbm9zdGk= 74952\nIGRpbWU= 74953\nZXRyYXRpb24= 74954\nIE1vZGlmaWNhdGlvbg== 74955\nIEhlcmI= 74956\nIHBsYWF0cw== 74957\nIGludGVycGVyc29uYWw= 74958\nIO2ZleyduA== 74959\nYXJtZQ== 74960\nIGNvbWVyY2lhbA== 74961\nIEJhdGVz 74962\nKGNhcmRz 74963\nLmdldENsaWVudA== 74964\nLk5PUk1BTA== 74965\nCVRlc3Q= 74966\nICAgICAgICANCiAgICAgICAgDQo= 74967\nIFJhem9y 74968\nd2Vpcw== 74969\nSVRIVUI= 74970\nIEVOVElUWQ== 74971\nYWdpdA== 74972\nIG1pbmVjcmFmdA== 74973\ncHJvcG9zYWw= 74974\nIHNhbHR5 74975\nYW5kcg== 74976\nIENvbmNsdXNpb24= 74977\nIHBydWRlbnQ= 74978\nIFtA 74979\nIFB1cHBldA== 74980\naWdvbg== 74981\nIEdvdGhhbQ== 74982\nIGNoZWVycw== 74983\nIFNoYXk= 74984\nIGpp 74985\nIEdESw== 74986\nZXhwZXJ0 74987\nIGZ1bmt5 74988\nIFphbQ== 74989\nW05VTQ== 74990\nRGVxdWU= 74991\nX1RXTw== 74992\nXHZpZXdz 74993\nIHByb2pla3Q= 74994\nIGRyb3duZWQ= 74995\na2lkcw== 74996\nLnNoZWV0 74997\nIG5vbmQ= 74998\nIGNvdXJ0ZQ== 74999\nIC4uLgoKCgo= 75000\nIHBpY3R1cmVzcXVl 75001\nIHR1YmluZw== 75002\nKCkuIg== 75003\namV0cw== 75004\nX1B1YmxpYw== 75005\nIEZhcnI= 75006\nIEFyZA== 75007\nT1VSU0U= 75008\nIGthZGFy 75009\nIFByb2dyYW1t 75010\nLmtleXdvcmQ= 75011\nCSAgICAgICAgICAgICAgICA= 75012\naWVkYWRlcw== 75013\nYXRvbG9neQ== 75014\nIER1bmQ= 75015\nPWNvdW50 75016\nIHNsb3dkb3du 75017\nLSIs 75018\nLkZvcmVncm91bmRDb2xvcg== 75019\nUnVucw== 75020\nLlR5cGVPZg== 75021\nJGN1cnJlbnQ= 75022\nIHVwc2NhbGU= 75023\nCXVuaW9u 75024\nKGNoaXA= 75025\ndW1pZGl0eQ== 75026\nPVtdDQo= 75027\nIGhhcnQ= 75028\nICRfWw== 75029\neW5lYw== 75030\nLlVzdWFyaW8= 75031\nIG9jdGF2ZQ== 75032\nIHBvcnRyYXlhbA== 75033\nINC90L7QvNC10YA= 75034\nIE9jY3VweQ== 75035\nX25hbg== 75036\nIFNtYXJ0cGhvbmU= 75037\naGluZA== 75038\nIHdpbmRzaGllbGQ= 75039\nIGxvbmVsaW5lc3M= 75040\nL2NoYXJ0 75041\nIGFjdGl2YXRlcw== 75042\nLnJpYmJvbg== 75043\nIGxhZ2k= 75044\nIHBhcmFjaA== 75045\nSHlwZXI= 75046\nc2NhbGVk 75047\nVGVz 75048\nIEJlZXQ= 75049\nIGRpc3NlY3Q= 75050\nIENpYw== 75051\nIH0sCgoK 75052\nPigpCgo= 75053\nLnN0dWR5 75054\nIGNvbnRyYXN0aW5n 75055\nWkVSTw== 75056\nIHR1bmE= 75057\nIENob3c= 75058\nX3Zh 75059\nZmF2b3I= 75060\nW0luZGV4 75061\nIFBvd2VyU2hlbGw= 75062\nKHByb3Rv 75063\nJykpOgo= 75064\nX2Zvcm1hdHRlcg== 75065\nQ2hyaXN0b3BoZXI= 75066\nT3JOdWxs 75067\nQ0lTSU9O 75068\nX2NvbnN1bWVy 75069\nUGFzdGU= 75070\nKG5vbWU= 75071\nZW50b24= 75072\nIHVucmF2ZWw= 75073\nX2Rvbg== 75074\nIHBhcmVudGhlc2Vz 75075\nIE5VSVQ= 75076\nL10= 75077\nIOKIpw== 75078\nc3RhY2xlcw== 75079\nL2NvbW1lbnQ= 75080\ndXR0aW5n 75081\nIHNsb3BweQ== 75082\nKFt7 75083\nLnNhdg== 75084\ndG9Kc29u 75085\nIOu5hA== 75086\nIFByYXR0 75087\nLm1vZGlmeQ== 75088\nLklzQ2hlY2tlZA== 75089\nIHZlbmV6 75090\nIFNFVFRJTkdT 75091\namF3 75092\nIGZpcmVzdG9yZQ== 75093\nIGNvbnNvcnRpdW0= 75094\nIGthYg== 75095\nIFN1cHBvcnRpbmc= 75096\nIFRoZXNpcw== 75097\nIG5vbmxpbmVhcg== 75098\nIHRleHRib3g= 75099\nLiIiIg== 75100\nIEVuZXJn 75101\nLkpPcHRpb25QYW5l 75102\nIGludGVycnVwdGlvbg== 75103\nw6h0cmVz 75104\nIHNoYWxl 75105\nIFBsYXllZA== 75106\nIHNvY2lhbGU= 75107\nWUdPTg== 75108\nX0JBVENI 75109\nIHRyaW1lc3Q= 75110\nIFByb2NlZHVyZXM= 75111\nIGF0dGVuZHM= 75112\nIiR7 75113\nZXZhbHVhdGlvbg== 75114\nLlByb2dyZXNzQmFy 75115\nIEFsZXhhbmRyYQ== 75116\nY2jDqQ== 75117\nX1NFUVVFTkNF 75118\nIGNyb2NoZXQ= 75119\nUm9z 75120\nIGlobmVu 75121\nICIqKio= 75122\nIGFyb3Vz 75123\nIG1vZHVsdXM= 75124\nX0xJTlVY 75125\nU3RhY2tTaXpl 75126\naWF0aW9uRXhjZXB0aW9u 75127\nLk11dGFibGU= 75128\nIClb 75129\nIHBpaQ== 75130\nZmlmbw== 75131\nX1BJQ0s= 75132\nUHVycG9zZQ== 75133\nKFN0dWRlbnQ= 75134\nIE5pY28= 75135\nZXN6 75136\nL3Nt 75137\nIFBQUA== 75138\nW2lucHV0 75139\n5Y+Y 75140\nIGJsYXN0cw== 75141\nIE11dHVhbA== 75142\ncm9sbGV5 75143\nIHV0aWxpc2Vy 75144\nOlRoZQ== 75145\n5Z+6 75146\nLmRlY29kZXI= 75147\nIG9iamV0b3M= 75148\nIGF3YWtlbmluZw== 75149\nIEVubGlnaHQ= 75150\nCWFsaWdu 75151\nX3Jld3JpdGU= 75152\nL2N1cnJlbnQ= 75153\nIGRhcmF1Zg== 75154\nQ2FudGlkYWQ= 75155\nLG5w 75156\nIHZlbG9jaXRpZXM= 75157\nQ0xS 75158\nIG1pc2luZm9ybWF0aW9u 75159\nIHN0cmVhbWxpbmVk 75160\nIGdyb29taW5n 75161\nIGF6aQ== 75162\nb2xn 75163\nIGNvbnN0aXR1ZW50 75164\nIHdlZQ== 75165\n0YXQvtC00LjQvA== 75166\nIEFsb25zbw== 75167\naWV0Zg== 75168\nY3Rlcg== 75169\nIHRoZXJtb3N0YXQ= 75170\nKEND 75171\nIHN0YWNraW5n 75172\nX2NvbnZlcnRlcg== 75173\nIERpc25leWxhbmQ= 75174\nCWZpbGVz 75175\nSUNJ 75176\nX1RPUElD 75177\nCUVsZW1lbnQ= 75178\nYXJnYXM= 75179\nIFxA 75180\nYW5jb2Nr 75181\nIEJhc2VFbnRpdHk= 75182\nKCItLS0= 75183\ncmJyYWtr 75184\nIG5lZ2F0aXZlcw== 75185\nIHZ3 75186\nPWZvcGVu 75187\nY2hlbWlzdA== 75188\nQXJjaGl2bw== 75189\nIGAu 75190\nIEZPVVI= 75191\nKGFp 75192\nVGFibGVXaWRnZXRJdGVt 75193\nPD8+Pg== 75194\nLnByZWQ= 75195\nVHJhaWw= 75196\nLWZhY3Rvcg== 75197\nIEltYWdlQnV0dG9u 75198\ncGVyaWE= 75199\nIENlbGVicmF0aW9u 75200\nLlJlc3BvbnNlQm9keQ== 75201\ndXJjaGFzZXM= 75202\nIGdldEtleQ== 75203\nIENyYWI= 75204\nIHFp 75205\nIFdpY2s= 75206\nIGNoYXN0 75207\nIC4uLi4uLg== 75208\nIGNvbWVueg== 75209\nIHNoYXJkcw== 75210\nIGTDqWNvcg== 75211\nIGhhbHZlcw== 75212\nUVVFTkNZ 75213\nIHBvd2VyaG91c2U= 75214\nTElORw== 75215\nQ2xhc3NMb2FkZXI= 75216\nY2VudHJl 75217\nLXNlbmQ= 75218\nbWFo 75219\nIHNocmVkZGVk 75220\nIFRJRkY= 75221\naW5rYQ== 75222\nLgoKCgoK 75223\nIGRlc2lnbmF0ZQ== 75224\nIE5pZ2h0bWFyZQ== 75225\nIEdlbmV0aWM= 75226\nX2NoYW5jZQ== 75227\nKGFuaW1hdGlvbg== 75228\ncXVpbGE= 75229\nX3NwZWNpZXM= 75230\nTkVZ 75231\nb3lzdGljaw== 75232\ncmVsbG8= 75233\nzqw= 75234\nIGRpdmlzaXZl 75235\nIFJFQw== 75236\nIHN0dW1ibGU= 75237\nKGZha2U= 75238\nIExhY2U= 75239\nYW50YWdlZA== 75240\nYWtlc3Q= 75241\ncHJvbW90aW9u 75242\nIEZvd2xlcg== 75243\nPWNlbnRlcg== 75244\nIENpdWRhZA== 75245\nUmFkaQ== 75246\nIFNsZWVwaW5n 75247\ndXRyb24= 75248\nIHF1b2k= 75249\nIFJBRA== 75250\nIGV4cG9uZW50aWFsbHk= 75251\nIEJyZWVk 75252\nIG1vbm9wb2w= 75253\naGlnaGVzdA== 75254\neG1sbnM= 75255\nSW50UHRy 75256\nIHR1dHRl 75257\nIFJlZnJpZ2Vy 75258\nIOmhtemdog== 75259\nIHpvbmRlcg== 75260\nbGJyYWtr 75261\nO2VsZW1lbnQ= 75262\nIEhlZA== 75263\nUmVsYXRpb25z 75264\n64U= 75265\nQ29ycmVv 75266\n5aC0 75267\nIE1pZ2h0eQ== 75268\nQU5HTw== 75269\nX2NvbXBpbGU= 75270\nLmdldENtcA== 75271\nIGludmFkZQ== 75272\nLnNwcmluZ2Jvb3Q= 75273\nIFR1bmU= 75274\nX3NuYXA= 75275\nX0ZFRUQ= 75276\nIGRlY2lwaGVy 75277\nPXNpemU= 75278\nX2ZyZQ== 75279\nIFRpbGxlcnNvbg== 75280\n0LjQutCw 75281\ndGlnaHQ= 75282\nIGN1bHByaXQ= 75283\nUlRM 75284\nIFBhcmU= 75285\nKHB1Yg== 75286\nZWdvdg== 75287\nIHBvbnRv 75288\nIGNvbnN1bA== 75289\nSlNJbXBvcnQ= 75290\nIHZlcndlbmRldA== 75291\nIEJvb3N0ZXI= 75292\n5b6F 75293\nIGNhcnJvdA== 75294\ndmVyaWdl 75295\nKExQ 75296\nIHd4VA== 75297\nIGltcHJvcGVybHk= 75298\nIik6DQo= 75299\nIHN1Y2U= 75300\nL21vZGFs 75301\nIElDVA== 75302\nLikuCgo= 75303\nX21hcmtz 75304\nIENhY2hlZA== 75305\nIEN1cnJpY3VsdW0= 75306\nQnM= 75307\nCUpPcHRpb25QYW5l 75308\nm4Q= 75309\nIGNvZ25pdGlvbg== 75310\nIE5lZ290 75311\nPXJlc3VsdA== 75312\nX0ZvbnQ= 75313\nYXJpbmU= 75314\nIGNvbnNwaWM= 75315\nIENhbGN1bGF0aW9u 75316\nIENFT3M= 75317\nLXRyYW5zcGFyZW50 75318\nIEJlcmVpY2g= 75319\n56iL5bqP 75320\nLmh5 75321\nLkFsaWdu 75322\nIGhvcGVsZXNz 75323\nIGNvbG9tYg== 75324\ndXJiZWQ= 75325\nIFNBWA== 75326\nIGVpbno= 75327\nKHpvbmU= 75328\nIG11enpsZQ== 75329\nIHRyZXNwYXNz 75330\nIEFicmFtcw== 75331\nIGNvbXDDqXQ= 75332\nIFNhbmN0dWFyeQ== 75333\nIE5TVGV4dEFsaWdubWVudA== 75334\nIHN0YXY= 75335\nIHByYWdtYXRpYw== 75336\nc3RyZW5ndGg= 75337\nV2l0aE9wdGlvbnM= 75338\nLmJhbmQ= 75339\nYXBoYWVs 75340\nQXVzdHJhbGlhbg== 75341\nIE9TRXJyb3I= 75342\nTWFuY2hlc3Rlcg== 75343\nSWRl 75344\nXFJlc291cmNl 75345\n0L7QtNC10YDQtg== 75346\nIHppZQ== 75347\nSGFybmVzcw== 75348\nLlR3ZWVu 75349\nY2Ftcw== 75350\n4pyU 75351\nLXNjYWxhYmxl 75352\nLW9r 75353\nIGpsb25n 75354\nIE9sc29u 75355\nIE9ha3M= 75356\nLnNsaW0= 75357\nIHPFgg== 75358\nIG5ld09iag== 75359\nLkludmVudG9yeQ== 75360\nIGtlbm4= 75361\nIG5pZ2h0bWFyZXM= 75362\naXJjbGVz 75363\nLm50 75364\nZ3Jlbg== 75365\nIFRFTg== 75366\nIFNjb3Rz 75367\nIERpc2FiaWxpdHk= 75368\nX21hbmlmZXN0 75369\nLnNpZGViYXI= 75370\nIHNodWZmbGVk 75371\nIGh1bWlsaXR5 75372\nLnRhcA== 75373\nIEdyYWlu 75374\nbm90aWNlZA== 75375\n77yJ44CC 75376\nX2hwcA== 75377\nIGRpbGF0aW9u 75378\nIGhhbmRpY2Fw 75379\nZ2V0RGF0ZQ== 75380\nIGR6aWHFgg== 75381\nJykuJzwv 75382\ncmVjb3Zlcg== 75383\neXNp 75384\nKGdyYXk= 75385\nYWhrYW4= 75386\nIGludGVyZmVyaW5n 75387\nX1RPVUNI 75388\nX3JlZHVjdGlvbg== 75389\nQWx0ZXI= 75390\nIGN1Yw== 75391\nRXhwZXJ0 75392\nIEx1bXA= 75393\nWzpd 75394\nIHJlbG9j 75395\nIGNvbmR1Yw== 75396\nQ2hhcnNldHM= 75397\nLmxpc3RlbmVycw== 75398\nLWludmVyc2U= 75399\nIHN1bW1vbnM= 75400\nIMO6bmljbw== 75401\nIE9W 75402\nIFNpY2hlcg== 75403\nIEpGYWN0b3J5 75404\nLmdldEJvdW5kaW5nQ2xpZW50UmVjdA== 75405\namg= 75406\nIHNrZWxldG9ucw== 75407\nIEFzaWFucw== 75408\nIEFNQw== 75409\naXNlbGVjdA== 75410\nLmNsaWVudEhlaWdodA== 75411\nKGZy 75412\nSGFzRm9yZWlnbktleQ== 75413\nLnJlbGF0aXZl 75414\nINiu 75415\nIG11bHRpY3VsdHVyYWw= 75416\nX0NPTEw= 75417\nIG1pY3JvYmlhbA== 75418\nIGltcG9ydGFudGVz 75419\nU3BhaW4= 75420\nIGN5bGluZGVycw== 75421\naWVuaWU= 75422\nX09XTkVS 75423\nKERJUw== 75424\nIGZhbmRvbQ== 75425\nKG54 75426\nIGFwbGljYWNpw7Nu 75427\nb2NhdG9y 75428\nZXNzaWFu 75429\nIENsYXVkZQ== 75430\nIGludG9sZXJhbmNl 75431\nxYJlbQ== 75432\nIFNlbWFudGlj 75433\nLk1pZGRsZVJpZ2h0 75434\nQVJFU1Q= 75435\nIHNpZXZl 75436\nxLHEn8Sx 75437\naWNhYmxl 75438\nZXJnaWM= 75439\nIGJhdHRsZWQ= 75440\nb3JiaXQ= 75441\nKXx8KA== 75442\ndWVsZQ== 75443\nIGZhc2NpbmF0aW9u 75444\nIGTDpQ== 75445\nIFRpZ2h0 75446\nX0lOQ1JFRg== 75447\nLklzU3VjY2Vzcw== 75448\nLE8= 75449\nIHN0w7hy 75450\nIHByZXNzdXJlZA== 75451\nLlRSVUU= 75452\nIFRob3VzYW5k 75453\nIGdlbWVpbnM= 75454\nIHpi 75455\nIHNwaXJpdHVhbGl0eQ== 75456\nIFpldXM= 75457\nIFBvd2VyZnVs 75458\nYmF0dGVyeQ== 75459\naXN0ZXM= 75460\nIO2D 75461\nLnNoaXJv 75462\nIEhpcHA= 75463\nZGVjbHR5cGU= 75464\nLmpmYWNl 75465\nLnRlbXBlcmF0dXJl 75466\nIG1hcnF1ZQ== 75467\nX2JhZw== 75468\nQXR1YWw= 75469\ncHJpY2luZw== 75470\nQ2xlYXJseQ== 75471\nX0Fic3RyYWN0 75472\nw6lr 75473\nYWhydW5nZW4= 75474\nSW5zdHI= 75475\nCQoKCg== 75476\nIGNoZXdpbmc= 75477\nIENvYWNoaW5n 75478\nJExBTkc= 75479\nbWFsbG93 75480\nIHNlcmlvdXNuZXNz 75481\nX2N1dG9mZg== 75482\nIFF1YXJ0ZXJseQ== 75483\nfScpCgo= 75484\nIikpKTsKCg== 75485\n6KeE 75486\nLlBvc2l0aXZl 75487\nLXBv 75488\neGl0bw== 75489\nLlJhZA== 75490\nIGJyaXNr 75491\nIExpZmVjeWNsZQ== 75492\n5pWw5o2u5bqT 75493\nZmF0YWw= 75494\nIHhwb3M= 75495\nLkRldGFpbA== 75496\nZW5hbA== 75497\nTUFUQ0g= 75498\nIGhlZWQ= 75499\nIGFmcmljYW4= 75500\nRGFkb3M= 75501\nYmVyYXBh 75502\nIGhlbGY= 75503\nJywnJyw= 75504\nIGVudHJlcHJlbmV1cnNoaXA= 75505\nIGNlcnRz 75506\nZWNl 75507\nPnI= 75508\nX2ZpeHR1cmU= 75509\nIHBvb2xpbmc= 75510\nIG1vZ2VsaWpr 75511\nIHNldERhdGU= 75512\n5pS/ 75513\nLWNvbXBsZXRl 75514\nX1JBRElP 75515\nIGt1bA== 75516\nIGdvYg== 75517\nX1NMQVZF 75518\nIGZ1cnJ5 75519\nIE5VSVRLQQ== 75520\nSUxJVElFUw== 75521\nIG5vY2hl 75522\nIGN1ZmY= 75523\nIGNvbnRlc3RhbnRz 75524\nIFdW 75525\nIHBhc3Nwb3J0cw== 75526\nIMWC 75527\nIE5haWw= 75528\nX2RlY2ltYWw= 75529\nYXN0bGU= 75530\nIFNvbGRpZXJz 75531\nUmVjaXBpZW50 75532\nIGNvdXJzZXdvcms= 75533\nIGltZQ== 75534\nIFNlYXRz 75535\nX0RM 75536\nIGNvbnN1bHRhdGlvbnM= 75537\nX0FEVg== 75538\nIElrZWE= 75539\nIG9maWNpYWw= 75540\nIHJlZ2ltZW50 75541\nIEJhdGhz 75542\nLXBpbg== 75543\nX0JVQ0tFVA== 75544\nQUJDREVGR0hJSktMTU5PUA== 75545\nIl0pKTsK 75546\nPE1lc2g= 75547\nIix7 75548\nIGRlcml2ZXM= 75549\n4oCcRm9y 75550\nIFl1Z29zbA== 75551\naXNFbmFibGVk 75552\nIHNvbGx0ZW4= 75553\nIHBldGl0aW9ucw== 75554\nb3ZlcmFsbA== 75555\nIGdldFRvdGFs 75556\nX0hJTlQ= 75557\nTWludXM= 75558\nIGFub21hbGllcw== 75559\nIFBpY2t1cA== 75560\nPT09Jw== 75561\nbGVpdHVuZw== 75562\nIERlaw== 75563\nWVNJUw== 75564\nLnNlc3Npb25z 75565\nIGNhcmM= 75566\nX0l0ZW1z 75567\nIGludGVybWl0dGVudA== 75568\nLkpzb25Qcm9wZXJ0eQ== 75569\nIG1NYXA= 75570\nIEthaw== 75571\nYWluY29udHJp 75572\nX3NlZWs= 75573\nIHVuYW1l 75574\nX3B1dHN0cg== 75575\nRmQ= 75576\nTGltaXRlZA== 75577\nc25vdw== 75578\nIFBhdmlsaW9u 75579\nIEV4YWN0 75580\nIHBvc3Rpbmdz 75581\nCWRpc3Q= 75582\nPHN0ZGxpYg== 75583\nTGlnaHRz 75584\nIGZpbHRybw== 75585\nV29ya2Vycw== 75586\nIHN5c2xvZw== 75587\nR2lybHM= 75588\nIEd1bQ== 75589\nX3llYXJz 75590\nJ319Cg== 75591\nIGjDpHQ= 75592\nZ2F5 75593\nKHByb2I= 75594\nZWxsYXM= 75595\nIHdpbHQ= 75596\nLm9wdGltaXpl 75597\nX0RVTVA= 75598\nKFhNTA== 75599\nIERYR0k= 75600\nIG3DqXRo 75601\nSVRJWkU= 75602\nZWxlY3Ryb24= 75603\nLmN6 75604\nIHN1YnNldHM= 75605\nIHJlc3Bvc3Rh 75606\nIGJlYWQ= 75607\nwrsu 75608\nIE9TQw== 75609\nJnBhZ2U= 75610\nZ3Bz 75611\nYW5pYW4= 75612\nUHVycGxl 75613\nIGFjcm9ueW0= 75614\nUk9XTg== 75615\nQXVkaXQ= 75616\nIGNvdXJpZXI= 75617\nYWxpZQ== 75618\nIFdhc3M= 75619\nIGF1ZGl0cw== 75620\nIFBPVg== 75621\nIEZhY2lhbA== 75622\nX3N0cmNtcA== 75623\nICsl 75624\nICAgICAKCg== 75625\nYCk7Cgo= 75626\nRUhJQ0xF 75627\nWyJA 75628\nLW5hdGlvbmFs 75629\n6ZuF6buR 75630\n6L2v6ZuF6buR 75631\nX2NvZGlnbw== 75632\nIHVucXVlc3Rpb24= 75633\naWxtaW5ndG9u 75634\ncmVxdWVzdENvZGU= 75635\nIElX 75636\nLnN0cmF0ZWd5 75637\nIFNZTUJPTA== 75638\nIGdyw7bDnw== 75639\nX2JlaGF2aW9y 75640\nIHJlZnJlc2hUb2tlbg== 75641\nIG1vbmc= 75642\naW1lbnRhcnk= 75643\nIFNob3Bz 75644\nKCc/ 75645\nX2hpZ2hsaWdodA== 75646\nX2xleA== 75647\nIGlsbHVtaW5hdGVk 75648\nIHBhbHA= 75649\nLWluc2VydA== 75650\nIHN0cml2ZXM= 75651\nIGZvcnRz 75652\nIGVtYm9kaW1lbnRz 75653\nbXBqZXM= 75654\nX1RPTw== 75655\nIGRyYWdnYWJsZQ== 75656\nIGltbWVyc2lvbg== 75657\ncGlucw== 75658\nIFJlZ2lzdHI= 75659\nIEZyZWVCU0Q= 75660\nX3hsaW0= 75661\nIFR1bHNh 75662\nU25hY2tiYXI= 75663\nL2RhdGU= 75664\nIGRhdm9u 75665\nIGF1dG9yZWxlYXNl 75666\nIHZhY2F0aW9ucw== 75667\nCQkgCQ== 75668\naWNlcHM= 75669\nIFJhbXA= 75670\nIEN5bnRoaWE= 75671\nX3BvcHVsYXRpb24= 75672\nJCQk 75673\nIFRBUg== 75674\nZW5nYQ== 75675\nIHB1cw== 75676\nIOW5 75677\nIHRpbWVzdGVw 75678\nTGlmZXRpbWU= 75679\nIGZpbG1lcg== 75680\nWVNU 75681\nIEdhemV0dGU= 75682\nIG91dHNpZGVy 75683\nIEVYUE9SVA== 75684\nR09SSVRITQ== 75685\nLmZsZXg= 75686\nIFJvb3Rz 75687\nKHBpeGVs 75688\nemN6ZQ== 75689\nYWlyaWU= 75690\nIG92ZXJsb2FkZWQ= 75691\nU1RSQUNU 75692\nIENvdXJpZXI= 75693\n44GW 75694\nY29udGluZW50 75695\nRnJlZA== 75696\nIHNlbXA= 75697\nIFN0ZWxsYQ== 75698\nIGRvdWJ0ZnVs 75699\nYWRtaW5z 75700\nIG9wdGluZw== 75701\nTE9UUw== 75702\nIG1hbmlmZXN0bw== 75703\nLWZvbGRlcg== 75704\nX2Ryb3BvdXQ= 75705\ndXR1cmVz 75706\nw612ZWlz 75707\nYWNoaWV2ZW1lbnQ= 75708\nIGNveQ== 75709\nZmFpdGg= 75710\nX0hBTEY= 75711\naXJlY3RlZA== 75712\nIGNvbnRhdG8= 75713\nU2VtYXBob3Jl 75714\nUHNp 75715\nIHZpdGFsaXR5 75716\nIEZsYXRCdXR0b24= 75717\nSXRlbVR5cGU= 75718\nIGltcGVjYw== 75719\nIGJ1b3k= 75720\ndWlu 75721\nIHNreXJvY2tldA== 75722\nIFNsYXllcg== 75723\nIFJDTVA= 75724\nIFNldmVudGg= 75725\nX0ludGVyZmFjZQ== 75726\nIGZpZXJj 75727\nc3RhdGlvbnM= 75728\nIEdyYWY= 75729\nbGljZWQ= 75730\nIGVudW1lcmF0b3I= 75731\nQ29udGFpbmVycw== 75732\nIG9p 75733\nw4fDg08= 75734\nLXRvbg== 75735\nUkVQ 75736\nKGZsb3c= 75737\nLmNvb3Jk 75738\nR2Fi 75739\nIE1vcnBo 75740\nIFpvZQ== 75741\nIGhhcmJvdXI= 75742\nLm1lc3NhZ2luZw== 75743\nX29wdGlvbmFs 75744\nIEJhc2VBY3Rpdml0eQ== 75745\ncmVzZW50ZXI= 75746\nIG5ieXRlcw== 75747\nIGNvdXJhZ2VvdXM= 75748\nPSE= 75749\nJ0l0 75750\nIGZvcnM= 75751\nIGNvcnJpZG9ycw== 75752\nIEJFRU4= 75753\nIGZ1c2Vk 75754\nPWltYWdl 75755\nLkdyaWRWaWV3 75756\nIHNlbWVu 75757\naWdyb3Vw 75758\ndXB0aW1l 75759\nIFhC 75760\n5o6S5bqP 75761\nIGludGVncmF0ZXM= 75762\nX09D 75763\nIGJhaWxvdXQ= 75764\nIHRlc3Rl 75765\nIG9jdXA= 75766\nYXVsZWQ= 75767\nX29kZA== 75768\ncGdh 75769\nIEFTVVM= 75770\nIFRTUg== 75771\nIG9jY3VwYW50cw== 75772\nU2V0VGl0bGU= 75773\nU2NoZWR1bGVycw== 75774\nIGJla29tbWVu 75775\nQnJpZ2h0 75776\nIE1haW5Gb3Jt 75777\nXygn 75778\nRnJvbUFycmF5 75779\nIGluZGljYQ== 75780\nSEFORA== 75781\nT3JkZW4= 75782\nIFRlbXBlcg== 75783\nLnN0YXR1c1RleHQ= 75784\ncG9saXRpY2Fs 75785\nIFBlcmN5 75786\n44CCCgoKCgoK 75787\nLnNldFg= 75788\nZ2V0TGlzdA== 75789\naG9sZXM= 75790\nUGl4 75791\nIG91dHNvdXJjaW5n 75792\nIG1lc3NhZ2VJZA== 75793\nIGdldFNlc3Npb24= 75794\nIFZJUg== 75795\nT2ZGaWxl 75796\nIFNwYXRpYWw= 75797\nLkZsb2F0RmllbGQ= 75798\nKShfXw== 75799\nIFN3aW1taW5n 75800\nQUNMRQ== 75801\nIHNlbnRpcg== 75802\nIHBsdW5nZWQ= 75803\nIGF1am91cmQ= 75804\nZ3VuYWthbg== 75805\nKHZvbHVtZQ== 75806\nIGNyYXRlcg== 75807\nLnhscw== 75808\nwoDCmQ== 75809\nUmVuZGVyV2luZG93 75810\nLnVzZXJtb2RlbA== 75811\nIGZ1bmN0b3I= 75812\nRG9tYWlucw== 75813\naW50ZXJwcmU= 75814\nIGFibm9ybWFsaXRpZXM= 75815\nYXJnaW5n 75816\nRGVtb2NyYXRz 75817\nIHBhbG1z 75818\n4qCA 75819\nw7hk 75820\nKkE= 75821\nRnJvbURhdGU= 75822\nfFs= 75823\nIEFsdGVybmF0ZQ== 75824\nIHB1ZG8= 75825\nIGNvbmRlbnNlZA== 75826\nKHBsYW4= 75827\nZGVsaXZlcg== 75828\nIGJ1bGxldGlu 75829\nJ11dLA== 75830\nIGNyw6llcg== 75831\nLWlw 75832\nV3M= 75833\nIiIiLAo= 75834\nIGlrZWE= 75835\nIHZpc2l0ZQ== 75836\nIG11bHRpcw== 75837\nUmVzdWx0YWRv 75838\nIFBob3RvZ3JhcGhlcg== 75839\nLi4uJywK 75840\nIG1pZ2xpb3Jp 75841\nIFRocmVhZHM= 75842\nZ2V0U3R5bGU= 75843\nZXJhw6fDo28= 75844\nPFRTb3VyY2U= 75845\nIEdpbmc= 75846\nJ10iLA== 75847\nIHNpZ25hbGVk 75848\nU3VwcHJlc3NMaW50 75849\nIGR3b3Jk 75850\nIEh1bnRpbmd0b24= 75851\nIEFBUA== 75852\nQU5HTEVT 75853\nLmNyZWRlbnRpYWxz 75854\nc3dhZ2dlcg== 75855\nLWNvbnNvbGU= 75856\nIi0t 75857\nLlRleHRJbnB1dA== 75858\nIE5PUlRI 75859\nIG5pZ2h0bHk= 75860\nLkZPTlQ= 75861\nIHF1b3RpZW50 75862\n5Lmf 75863\nIHNjaMO2bg== 75864\nIFBsYW5uZXI= 75865\nIHJlYWRsaW5l 75866\nIGNvbmZyb250aW5n 75867\nYH0= 75868\nSXRlbUNvdW50 75869\nCWFjdGl2ZQ== 75870\nIHLDqXBvbmQ= 75871\nZWxtZXQ= 75872\nIGdpbW0= 75873\nLG5vbmF0b21pYw== 75874\nIEFDVElWRQ== 75875\naGV1cmU= 75876\nL1ByaXZhdGU= 75877\nIG1lYw== 75878\nLlNlY3JldA== 75879\nIENJUw== 75880\nxYJ1Zw== 75881\nKHBlcmlvZA== 75882\nIGxsZWdhcg== 75883\ndXJpYQ== 75884\nRGVzY3JpYmU= 75885\nIHBhcmVqYQ== 75886\nIFZlZA== 75887\nLWVmZmVjdHM= 75888\nIFBhcnNpbmc= 75889\nLXJlc291cmNl 75890\nIGFiYQ== 75891\nICosCg== 75892\nIGFuYXRvbQ== 75893\nICgqKSg= 75894\nLXJlYWw= 75895\nIFZlbnR1cmVz 75896\nIFNoaWVsZHM= 75897\nIFVuaXZlcnNpdGllcw== 75898\nUFJFU0VOVA== 75899\nIFFMYXRpbg== 75900\nxaU= 75901\nIFdpbGV5 75902\nQWFyb24= 75903\nIHJhY2lhbGx5 75904\nIE5hZHU= 75905\nIGh0dHBSZXNwb25zZQ== 75906\nw610aWNh 75907\nIOuwqQ== 75908\nIGdyw6F0aXM= 75909\n5LuL 75910\nb21hcA== 75911\nIGFub24= 75912\nCXBvcA== 75913\nYXZhdGFycw== 75914\nIHN1YnBhcmFncmFwaA== 75915\nZHpp 75916\nUHJvamVjdGlsZQ== 75917\nRFRW 75918\nbGlzdGVuaW5n 75919\nX3JlZ2VuZXJhdGlvbg== 75920\nIFNoZWx0ZXI= 75921\nPFZlcnRleA== 75922\nL21k 75923\nKGxl 75924\nIHZhaw== 75925\nc2VsZWN0ZWRJbmRleA== 75926\nX10= 75927\nIFN5bnRoZXRpYw== 75928\nYXBwSWQ= 75929\nIEZpcmVk 75930\nIHBhbXBo 75931\nX2xhdGVuY3k= 75932\naW5maWxl 75933\nKGNyaXRlcmlh 75934\nc2VyaWFsaXphdGlvbg== 75935\nUkNU 75936\nCWV2 75937\nIFNDSA== 75938\nIE9wdGljYWw= 75939\nIHN0aXJyZWQ= 75940\nIFBvdGlvbg== 75941\nZXRoaWNhbA== 75942\nOjp7Cg== 75943\nIFBlbmd1aW5z 75944\nUEhZ 75945\nRGVjaXNpb24= 75946\na2FydA== 75947\nIGV4cG9ydGVycw== 75948\nIFBvbHllc3Rlcg== 75949\nY29udHJlcw== 75950\nIExhd3Nvbg== 75951\nIEVtcGxveWVy 75952\nIHNhc3M= 75953\nIGRvd250aW1l 75954\nIGJyb2tlcmFnZQ== 75955\nIFJvdGFyeQ== 75956\nIFdhaGw= 75957\nV0FSTg== 75958\nIHNldEFjdGl2ZQ== 75959\ndGVtcGw= 75960\nQ2hlZXJz 75961\nLXNoZWxs 75962\nRml0bmVzcw== 75963\nIHF1aWw= 75964\nIGNsZWFuZXJz 75965\nIOeb 75966\nIE1pbGFubw== 75967\nLWFzc29jaWF0ZWQ= 75968\nfX19LAo= 75969\nUEZO 75970\nIG9uUGFnZQ== 75971\nX3N0cmVhbXM= 75972\nIHNjdWxwdHVyZXM= 75973\nIG5haWxlZA== 75974\nPXNj 75975\n6aaW6aG1 75976\n0LjQvNCy 75977\nY29ubmV4aW9u 75978\nSk9C 75979\nIEthcm1h 75980\nIFN3aWZ0VUk= 75981\nIERleg== 75982\nL1VJ 75983\nIOyZ 75984\nZ2V0Q2xpZW50T3JpZ2luYWw= 75985\nIHB1bmlzaGluZw== 75986\nIG9kZW5zZQ== 75987\nLHJpZ2h0 75988\nZW5lcmF0aXZl 75989\nIFByb2JsZQ== 75990\nIEFwcFN0YXRl 75991\nIGRpc2Nsb3N1cmVz 75992\nIENhbnRlcg== 75993\nY29tcG9zZXI= 75994\ndXBhdGVu 75995\nIHN1Y2Nlc3NvcnM= 75996\nIj4nCg== 75997\nIHByZXNlcnZlcw== 75998\nLm9wZW5k 75999\nX05vcm1hbA== 76000\nL2hy 76001\nUmFuZ2Vz 76002\nLGxvbmc= 76003\nCQkJCSAgICAgICAgICAg 76004\ncHJvZHVjdG9z 76005\nIGZseWVy 76006\nIEdydXBv 76007\nTmlja25hbWU= 76008\nSGllcg== 76009\nIERFQQ== 76010\nU3ByaXRlcw== 76011\nCW1hc2s= 76012\nX3Jlc2VydmVk 76013\nLXNob3A= 76014\nLm5vdGlmaWNhdGlvbnM= 76015\nIGRpdmlzaWJsZQ== 76016\naW9zaw== 76017\na2VyamE= 76018\naW5ndA== 76019\nIEZpZnR5 76020\nIGFjY291bnRhbnQ= 76021\nIEV4cGxvcmF0aW9u 76022\nX2Jyb2FkY2FzdA== 76023\nIGV4dHJhb3JkaW5hcmlseQ== 76024\nIGtvdA== 76025\nIGNpcmN1bWZlcmVuY2U= 76026\ncm91Y2g= 76027\nW0Jvb2xlYW4= 76028\nY3Jhd2xlcg== 76029\nL3JlbW92ZQ== 76030\nYXJlbGxh 76031\nIHNleGVz 76032\nSGludHM= 76033\nIGdhbWI= 76034\nIGRhcmVk 76035\ndGVzdGVk 76036\nX0tFRVA= 76037\nIGZpbHRyYXRpb24= 76038\naWNrZXk= 76039\nIEluZmx1ZW5jZQ== 76040\nIHNwZWNpZmljaXR5 76041\nX0lEUw== 76042\nIFJvZG5leQ== 76043\nX0lSUUhhbmRsZXI= 76044\nT25FcnJvcg== 76045\nIHByZXZTdGF0ZQ== 76046\naWVnZWw= 76047\nIExFU1M= 76048\nIGF3YWtlRnJvbU5pYg== 76049\nIExV 76050\ndW1hYmx5 76051\nb3J0YWxpdHk= 76052\nIG1hbmRhdGVz 76053\nCXZlcnNpb24= 76054\nIHBhcmVudE5vZGU= 76055\nIHBlc3Rz 76056\nIGNhc2M= 76057\nY2VwdGFy 76058\nIFdvb2R5 76059\nZXJlZQ== 76060\nX3Bm 76061\nLlBPUw== 76062\naXN0cmE= 76063\nbGV3 76064\nWWFuZw== 76065\nIHN5c3RlbWQ= 76066\nIHJvYW0= 76067\nLkdyYXk= 76068\nIGNvbmR1 76069\n4oCUaW5jbHVkaW5n 76070\nVmlvbGF0aW9u 76071\nTWFob24= 76072\nIE1VU0lD 76073\nIFNpcmk= 76074\nIEVudGVyZWQ= 76075\nIGNlcnRhaW5z 76076\nZWxhaA== 76077\nCU1haW4= 76078\nLkRhdGVGaWVsZA== 76079\nLkhlYWx0aA== 76080\nIEthc2ljaA== 76081\nIGNhbmluZQ== 76082\nPXJvb3Q= 76083\ndWRkbGU= 76084\nXGNvbW1vbg== 76085\nIFN1bHRhbg== 76086\nZmluYW5jaWFs 76087\nIFFTcWw= 76088\nIGFzY2VudA== 76089\nIHBydWViYQ== 76090\nemllaHVuZw== 76091\nLmdldEVycm9y 76092\nIEdsb3JpYQ== 76093\nRWNobw== 76094\nX0NIT0lDRVM= 76095\nX2Vwcw== 76096\nL3Byb3ZpZGVy 76097\nUEhPTkU= 76098\n5YWz6Zet 76099\nIGNvbXByb21pc2luZw== 76100\nX0FQUFJP 76101\nUHJvY2Vzc0V2ZW50 76102\nIGJ5dGVBcnJheQ== 76103\nIENydWM= 76104\nwqg= 76105\nIGljaW5n 76106\nIFBDTQ== 76107\ndmVjdA== 76108\nQW15 76109\nIFZhY3V1bQ== 76110\naW5jaWRlbnQ= 76111\nIHVzZXJu 76112\nemJlaw== 76113\nXSspLw== 76114\nIH19Ij48 76115\nIEdldERhdGE= 76116\nY250bA== 76117\nIHNhZ3Q= 76118\nX1BSSU1BUlk= 76119\nIGxlcg== 76120\nIEZVQ0s= 76121\nIFN0YXJy 76122\nSUg= 76123\nw7ZycGVy 76124\neW1z 76125\nXSldCg== 76126\nL3Rvb2w= 76127\nY29tYmluYXRpb24= 76128\nIHRhbXA= 76129\nIEJlaXQ= 76130\nIE5JR0hU 76131\nIGFubsOpZQ== 76132\nKGFt 76133\nXFRyYWl0cw== 76134\nOlwi 76135\nIGNhcmdh 76136\nLmlkZQ== 76137\nIGRpa2tl 76138\nQ29tcGV0 76139\nIHNjb290ZXI= 76140\nIHhQb3M= 76141\nKGludGVycA== 76142\nIGhhc2ls 76143\nY2xpZA== 76144\nIGhldXJlcw== 76145\nZ2xvbWVy 76146\nc2hhcmVz 76147\n77yMCgo= 76148\ncG9uZGU= 76149\n4bqjaQ== 76150\nX2R1cGxpY2F0ZXM= 76151\nc29uZ3M= 76152\nfV07Cg== 76153\nIFNuaXBlcg== 76154\nIFRodXI= 76155\ncm9wcA== 76156\nIGdydWVz 76157\nIG9yZXM= 76158\ndXNoaW1h 76159\nIHVzYWJpbGl0eQ== 76160\n6ZKf 76161\nL21lbWJlcg== 76162\nb2xkZW1vcnQ= 76163\nSXNBY3RpdmU= 76164\nR2V0RW51bWVyYXRvcg== 76165\nbXV4 76166\nV0lORE9XUw== 76167\nTmVnYXRpdmVCdXR0b24= 76168\n4Liz 76169\nLW1ha2Vycw== 76170\n44Kk44Oz 76171\nIEJlcm0= 76172\nQnlFeGFtcGxl 76173\nIFLDvGNr 76174\nU2hvd3M= 76175\nZ2hp 76176\nIElocmVy 76177\nIENydWQ= 76178\nY2hlZg== 76179\nX2F1Yw== 76180\nIGFww7Nz 76181\nYW5rYW4= 76182\nIEtERQ== 76183\nSUxMUw== 76184\nIGFuZ2xhaXM= 76185\nLXJlZnJlc2g= 76186\nCXJhbmdl 76187\neG1t 76188\nKGVkZ2Vz 76189\nIGFwcGVs 76190\nIjt9 76191\nIGVkaQ== 76192\nIHN3b2xsZW4= 76193\nIGJ1dGNoZXI= 76194\naWNpZGVz 76195\naG91bmQ= 76196\nIF4o 76197\nIEV2YWx1 76198\nIGtleWJvYXJkVHlwZQ== 76199\nU1NJRA== 76200\ncm9iYXQ= 76201\nIG5paw== 76202\nIHN0cmF3YmVycmllcw== 76203\nXCJd 76204\nbm9zaXM= 76205\nTUVE 76206\n54g= 76207\n5LqU 76208\naW1heA== 76209\nXEFubm90YXRpb24= 76210\nIG51cnU= 76211\nIE1pbmltYWw= 76212\nIHdvcmRwcmVzcw== 76213\nIGNvbGRlcg== 76214\nCXBhcnNl 76215\nL3N0cmV0Y2g= 76216\n5omn6KGM 76217\ncm9tb3NvbWU= 76218\nRElN 76219\nIHRlbnRhdGl2ZQ== 76220\nOk5TVVRG 76221\nLGltZw== 76222\nIE1BVEVSSUFM 76223\nIEpldEJyYWlucw== 76224\nTGVnZW5kYXJ5 76225\nCXN0cm5jcHk= 76226\nIGRlZnM= 76227\nTnVtYmVyRm9ybWF0RXhjZXB0aW9u 76228\nIGJ5dGVjb2Rl 76229\nIHdpc3Nlbg== 76230\nX01PUkU= 76231\noO2DnQ== 76232\nIENvZmY= 76233\nLkNvbmRpdGlvbg== 76234\nIGTDqXBhcnQ= 76235\nZHNu 76236\nIHBhcmFtZXRybw== 76237\nXEw= 76238\nLm5hbm9UaW1l 76239\nQk9UVE9N 76240\nLldoYXQ= 76241\n64Q= 76242\nIERpeA== 76243\nX0RB 76244\nKENvbnRhaW5lcg== 76245\nYXlhcg== 76246\nRmxleGlibGU= 76247\nLlJheWNhc3Q= 76248\nIEVkd2lu 76249\nW3VybA== 76250\nwpI= 76251\nLnN0cm9rZVN0eWxl 76252\nIFBvbHlub21pYWw= 76253\naWxpdGF0aW5n 76254\nIFFWQm94TGF5b3V0 76255\nKHJlcA== 76256\nLnZu 76257\nLWFzc2V0cw== 76258\nQ0hBU0U= 76259\nIEVzc2VudGlhbHM= 76260\nanlsbGFuZA== 76261\nIGF4cw== 76262\nIFRyZW0= 76263\nLm1haW5sb29w 76264\nIFdJTkRPV1M= 76265\nLlJFUVVFU1Q= 76266\nIHJlaW50 76267\nIExpYnJl 76268\nY2hlb24= 76269\nIGd1ZXJy 76270\nCU5kckZjU2hvcnQ= 76271\nLnNvZnRtYXg= 76272\nIEFzdXM= 76273\nLXNjb3Jl 76274\nIEpPSE4= 76275\nPlN0YXR1cw== 76276\nPkVkaXQ= 76277\nIENhbWU= 76278\nIEFzaGU= 76279\nX3VzaW5n 76280\nIExvbmU= 76281\nIGxlc2Vu 76282\nIHJldmVyc2luZw== 76283\nbmdyeA== 76284\nLnNpZ25hdHVyZQ== 76285\nLUFzc2Fk 76286\nL25hdGl2ZQ== 76287\nX3JhdGluZ3M= 76288\nIG55YQ== 76289\nIGFkaWRhcw== 76290\nKG9wdGlvbmFs 76291\nIl0o 76292\nIHJlY3VycmVuY2U= 76293\nIEJNUA== 76294\nz4w= 76295\nX2dw 76296\nIj5c 76297\nX3dyb25n 76298\neXBz 76299\nLlByb3h5 76300\nX1VEUA== 76301\nUXRDb3Jl 76302\nTGlua2VkSW4= 76303\nIGNhdmVybg== 76304\nIHNww6ljaWFs 76305\nX3dpcmU= 76306\nIG5hbm9w 76307\nLmJhbGw= 76308\nIHJlZHVjZXJz 76309\nIG1haWxlZA== 76310\nZG9uZw== 76311\nIG9wcG9zZXM= 76312\nIEhhbnNvbg== 76313\nIFNhdHVyZGF5cw== 76314\nYWNvbW1lbnQ= 76315\nX01ldGFEYXRh 76316\nIEdhbGFjdGlj 76317\nKCIvIik= 76318\nIENsZWFuZXI= 76319\nX1RFUk0= 76320\nIGNsYXJv 76321\nLk9VVA== 76322\n5a6h 76323\nIHNsaWs= 76324\nIGplZG5haw== 76325\nSGFuZGxlckNvbnRleHQ= 76326\nIGlycmFkaQ== 76327\nICAgICAgICAgICAgICAgICAgICAgICAgIAo= 76328\nLnRpZ2h0 76329\nQnJlYWRjcnVtYg== 76330\nZnJleQ== 76331\nIOqwneyytA== 76332\nbGJyYWNl 76333\nTEVHQUw= 76334\nLWd1bg== 76335\nIEJsb2dz 76336\nIFNoaXJsZXk= 76337\nIFB1bmU= 76338\ndXJzaW9ucw== 76339\nIHN1YnRyYWN0aW9u 76340\nICoqKgo= 76341\nYXJtYWN5 76342\nIHNhbXQ= 76343\nPSIpLg== 76344\nIHBlcm1pc3NpYmxl 76345\nKHJk 76346\nIFdBVEVS 76347\nIHByb2Zlc2lvbmFs 76348\nIGhhbmRib29r 76349\nIG1vdXJuaW5n 76350\nYXJlZmE= 76351\nIGFzbg== 76352\naXNleA== 76353\nIGNvbnRlbnU= 76354\nIFVOQw== 76355\nLmdldFByaWNl 76356\nIFB1bXBraW4= 76357\nLwoKCg== 76358\nIGNvc2luZQ== 76359\nIG5pZWQ= 76360\nIEJyYWtl 76361\nRGF0YVVSTA== 76362\nIERhdGFHcmlkVmlld0NlbGxTdHlsZQ== 76363\nIFJldHVybmVk 76364\nZXdvb2Q= 76365\naXF1w6k= 76366\nIGJsZWFr 76367\nIHdlYmhvb2s= 76368\nLlRoZXk= 76369\nYXJi 76370\nTEFOR0FETQ== 76371\nX29yZGVyZWQ= 76372\nIHByYW5r 76373\nLk5ld1JlcXVlc3Q= 76374\nIGxpdGVyYWxz 76375\nJ30+Cg== 76376\nc2VyaWFsaXplZA== 76377\na3Rvcg== 76378\nKHJ4 76379\nIGdldFk= 76380\nCVN0cmluZ0J1ZmZlcg== 76381\nKHNsaWNl 76382\ncmJyYWNl 76383\nZW1lbnRv 76384\nIGxhbmM= 76385\nRGVwbG95bWVudA== 76386\nIGNvbmNlbnRyYXRpbmc= 76387\nU2tldGNo 76388\nIGJyaWdodGx5 76389\nQmVnaW5uaW5n 76390\nIERhaA== 76391\nVGs= 76392\nSW5zZW5zaXRpdmU= 76393\nIHNhYmU= 76394\nKE1vZHVsZQ== 76395\nIGNlZGFy 76396\nX2NvbnRpbnVl 76397\nIHdpdGhPYmplY3Q= 76398\nIGNvbHVtbmE= 76399\nIENhbGRlcg== 76400\nINC/0L7QvA== 76401\nX3NvZnRj 76402\nc2hhbGVk 76403\nZXJ0YXRpb24= 76404\nCSAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 76405\nOkAiIg== 76406\nIGZhw6dvbg== 76407\ndXN0dW0= 76408\nc3Rr 76409\nX0NSQw== 76410\nb2R6aQ== 76411\nIGFzY2VuZA== 76412\nZmdhbmc= 76413\nIHByZWZhYg== 76414\nIGZpbmRldA== 76415\nOicr 76416\n5Y2V5L2N 76417\ndW1ibGVkb3Jl 76418\nLmludmFsaWRhdGU= 76419\nIHRvaQ== 76420\nYW5nZXBpY2tlcg== 76421\nX0FJ 76422\naGls 76423\nU2VhdA== 76424\nIHBpc3Rvbg== 76425\nZmli 76426\nX2JsdWVwcmludA== 76427\n44K4 76428\nX1JlY29yZA== 76429\ncmV0cw== 76430\nRnJhbg== 76431\nIENhaXQ= 76432\nIHBlbGlj 76433\nIGRuYQ== 76434\nIHVwZGF0ZVRpbWU= 76435\nIC9eWw== 76436\nIHJhbGxpZWQ= 76437\nIEhpbWFs 76438\nU1NJ 76439\nX3BsYW5lcw== 76440\nIE91dHN0YW5kaW5n 76441\nQXBwbGljYXRpb25CdWlsZGVy 76442\nc3R1ZA== 76443\nX2xvY2F0b3I= 76444\nIGFib2xpdGlvbg== 76445\nICgkKQ== 76446\namVybmU= 76447\nIEFBQw== 76448\nL3dpbmRvd3M= 76449\nLUNhbA== 76450\nX1NFQ09ORFM= 76451\nICcnfQo= 76452\nw6FueQ== 76453\nIHl1bW15 76454\n5omL5py65Y+3 76455\nIFZHQQ== 76456\naWxhdGU= 76457\nIFN1cnZlaWxsYW5jZQ== 76458\nCUd0aw== 76459\n8J+Y 76460\nIHNoaW1tZXI= 76461\nYWx0ZXJuYXRl 76462\nRm9yU2VndWU= 76463\ndWVzdHJh 76464\nLWNvdmVy 76465\nYXNs 76466\nIEluc2V0cw== 76467\nbGlqYWg= 76468\nOlM= 76469\nCWNhdGVnb3J5 76470\nIGZq 76471\nw61saWE= 76472\nIE1BRA== 76473\nQGpz 76474\n5p8= 76475\nIHBvb2xlZA== 76476\nIHRyZWF0aWVz 76477\nIEJpaw== 76478\nIEhhemVs 76479\nQWxsb2NhdGU= 76480\nIGFpcnBsYW5lcw== 76481\nIHNlcm1vbg== 76482\nIFBvc2l0aW9ucw== 76483\nIE1BSUw= 76484\nU3RvcHBpbmc= 76485\nYXZvcmVk 76486\nKFRlbXA= 76487\nIGNoZWF0cw== 76488\nLnVzZXJJRA== 76489\nIHB1dGE= 76490\nLXl5eXk= 76491\nVWlUaHJlYWQ= 76492\nIG9mc3RyZWFt 76493\nXFNlZWRlcg== 76494\nIENvdHRhZ2U= 76495\nIF4K 76496\nIEFMVEVS 76497\nIHF1YW50aWZ5 76498\ncmVpYnVuZw== 76499\nIG5lY2Vzc2l0aWVz 76500\nLkxvY2FsRGF0ZQ== 76501\nIOaXpQ== 76502\ncGljdHVyZXM= 76503\nIGNydWQ= 76504\n5pyo 76505\nIGRvd250dXJu 76506\nYWN0b3Jpbmc= 76507\nIERlcm0= 76508\nIGVzdHJ1Y3Q= 76509\nIE11c2lr 76510\nIG1seA== 76511\nLm1ham9y 76512\nLkh0dHBTZXNzaW9u 76513\nPzw= 76514\neWVhaA== 76515\nIG1vam8= 76516\nIFVuaXR5RWRpdG9y 76517\nIHJha2U= 76518\nX3R3ZWV0 76519\nIHJhZGlvQnV0dG9u 76520\nIERvbWluaW9u 76521\nYXNTdHJpbmc= 76522\nb3p5 76523\nIHZvZGth 76524\nb2dsb2I= 76525\nIEFsdW1uaQ== 76526\nYmFsYW5jZXM= 76527\nX21hbnVhbA== 76528\nLmxvYWR0eHQ= 76529\nX2ZyaWVuZHM= 76530\nIFhtbERvY3VtZW50 76531\nW2ZpcnN0 76532\nS2V5Q29kZQ== 76533\nIHBvZXRpYw== 76534\nbWluYQ== 76535\nIG9wY2lvbmVz 76536\n5omT 76537\nX3N1cHBsaWVy 76538\nLkZyb21SZXN1bHQ= 76539\nX2Rpc3RyaWN0 76540\nIEdhbGE= 76541\nLnF0 76542\nIGNvbnRyYWN0dWFs 76543\nYWNvbnM= 76544\nLWFuY2hvcg== 76545\nIHl1cA== 76546\nIHVuYW5zd2VyZWQ= 76547\nIG1heGxlbg== 76548\nRXJyTXNn 76549\nLXNu 76550\nIGh5cG5vdA== 76551\nX1dN 76552\nKCldWw== 76553\nIGRlc2VydmluZw== 76554\nb3dtZW50 76555\nKFJhbmRvbQ== 76556\nIHZldG9y 76557\nIElTVA== 76558\n0LDQvdC0 76559\nLWxhbmc= 76560\nIHNpaw== 76561\nY3JlYXNpbmc= 76562\nIHBvcnRhbHM= 76563\nIEJ1bGxkb2dz 76564\ncHJvbW8= 76565\nIHByb3Zva2Vk 76566\nXX07Cg== 76567\nIEliaWQ= 76568\nZXJnbGFzcw== 76569\nX1dJRkk= 76570\nYXBwcm9wcmk= 76571\nIHJlZGVzaWduZWQ= 76572\nIC8vLS0tLS0tLS0tLS0tLS0tLQ== 76573\nemlr 76574\nJG8= 76575\ndWx0b24= 76576\nIFJlbGF0aXZlcw== 76577\nIG1ldHJvcw== 76578\nIG1lbnRvcmluZw== 76579\nYXTEgw== 76580\ndXNobWFu 76581\nIGluaGVyaXRz 76582\nIFJ0 76583\nL3ByZWZlcmVuY2Vz 76584\naW1lZA== 76585\nSk9JTg== 76586\nKGludGVyZmFjZQ== 76587\nIGFkZXB0 76588\nIE9mZmVuc2l2ZQ== 76589\nIEFHUkU= 76590\nb25pYW4= 76591\nLnBhcnNlcnM= 76592\nIHBhc3NwaHJhc2U= 76593\nIHVuc2VyaWFsaXpl 76594\nVmlzaXRlZA== 76595\nIGdldFByb3BlcnR5 76596\nIG5vYw== 76597\nZWRhZA== 76598\nICMtfQoK 76599\ndmlkYQ== 76600\nc29sdmVy 76601\nIE1vcmFsZXM= 76602\nIGt2aW5uZQ== 76603\nIEFjY2lkZW50 76604\nIHZldXQ= 76605\nIG1pc2d1aWRlZA== 76606\nIFJldmVsYXRpb24= 76607\nIHJhcGlkZQ== 76608\ncHVuaw== 76609\nIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 76610\nT2JqZWN0SWQ= 76611\nYWJpbmV0 76612\nZXh0cmFjb21tZW50 76613\nIGJ1bm55 76614\nIERlZmVycmVk 76615\ndXR0YQ== 76616\ndWFl 76617\nYnVzdGVycw== 76618\nIFNvaWw= 76619\nR1NU 76620\nLkN1cnJlbnRSb3c= 76621\n44GR 76622\nIGdyYXR1aXRz 76623\nIGNydWlzZXI= 76624\n15E= 76625\nIFRlbm4= 76626\nanNj 76627\nIO2VhA== 76628\nZGlzcG9zZWQ= 76629\nQUJPVVQ= 76630\nfQ0NCg== 76631\nZXhwaXJlZA== 76632\nIFhtbE5vZGU= 76633\nIFRhdHRvbw== 76634\nVm90ZXM= 76635\nRm9sZA== 76636\nRWxpemFiZXRo 76637\nX0ZJTEVOTw== 76638\nIGNvbmNv 76639\nIEdkaw== 76640\nb3BpZXM= 76641\nfX19 76642\nUVVPVEU= 76643\nLUlJ 76644\nc3BhbQ== 76645\nLWxp 76646\nIGNhcnRh 76647\nLmxheW91dHM= 76648\nIGJlc3Bva2U= 76649\nIGFtYXRldXJz 76650\nIGNvdWxldXI= 76651\naXRhbWlu 76652\nIGlycmVzcGVjdGl2ZQ== 76653\nIGJsYWNrQ29sb3I= 76654\nLnlhaG9v 76655\nIHdlYXJ5 76656\nIHN3ZWV0cw== 76657\nPyI7Cg== 76658\nPVwiJQ== 76659\nX3dvcmtzcGFjZQ== 76660\nIERpYW1ldGVy 76661\nIGFtZA== 76662\nIE5ldWU= 76663\nIGRiTmFtZQ== 76664\nSmVyZW15 76665\nbG9nZmlsZQ== 76666\nYXRyaWI= 76667\nIEh0dHBTZXNzaW9u 76668\nCUNyZWF0ZQ== 76669\naWRkeQ== 76670\nLlBBUkFN 76671\nIGZpYW4= 76672\nIHN6Y3o= 76673\nIHFyZWFs 76674\nX0VTQ0FQRQ== 76675\ndXNhaGFhbg== 76676\nLmRpZ2VzdA== 76677\nIGdldFBhcmVudA== 76678\nLkRyb3BEb3duTGlzdA== 76679\nIHRow6k= 76680\nIG1vbnN0cm91cw== 76681\nIGJlcmhhc2ls 76682\nIiIiDQoNCg== 76683\nU3VwcG9ydGVkQ29udGVudA== 76684\nIEdhdGhlcmluZw== 76685\naW5jeQ== 76686\nLktleUNvZGU= 76687\nIGZldHVz 76688\nLmNlbnQ= 76689\nIGJlc29uZGVycw== 76690\nbmlsYWk= 76691\nTFRSQg== 76692\nIGhpbmdl 76693\nUFJPUA== 76694\nLmZvdW5kYXRpb24= 76695\nbnVtZXI= 76696\nLXJhbmtlZA== 76697\n6I0= 76698\nIHBhaW5mdWxseQ== 76699\nICg7Oyk= 76700\nZm9ybWU= 76701\nTGFkeQ== 76702\nL2FwcGxl 76703\nIENvbnN0aXQ= 76704\nIHN0b2NraW5ncw== 76705\n5rS7 76706\nIG1lbnRvcnM= 76707\nPkNyZWF0ZQ== 76708\nIEludGVybmFsRW51bWVyYXRvcg== 76709\nIHRlbGV2aXNlZA== 76710\nVG9rZW5UeXBl 76711\nIGJyaWI= 76712\nY3JlYXRlVmlldw== 76713\nL0RURA== 76714\nR2l0SHVi 76715\nKGJpZw== 76716\nIG3DoXhpbW8= 76717\n5b6u6L2v6ZuF6buR 76718\nLmNm 76719\nIMKgIMKgIMKgIMKg 76720\nPHR5cGVvZg== 76721\nIHByb2dyZXNzaW5n 76722\nLnNldFdpZHRo 76723\nKHR2 76724\nIHVuZmFpcmx5 76725\nIEFuaXRh 76726\nYXJ5YXdhbg== 76727\nRGFs 76728\nVVJZ 76729\nb2dlbmVpdHk= 76730\nZWZh 76731\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 76732\nIGRlamE= 76733\nT1NF 76734\ncmFpbA== 76735\ncm9vZg== 76736\nX3F1b3Rlcw== 76737\nPGo= 76738\n44Ko 76739\nKHNldHRpbmc= 76740\nbGV2ZWxuYW1l 76741\nX2hhbmRsaW5n 76742\nw6lyYQ== 76743\nJGo= 76744\nIGRhcmxpbmc= 76745\nLlBhdGhWYXJpYWJsZQ== 76746\nW3NvdXJjZQ== 76747\nTWV0aG9kTmFtZQ== 76748\nIE91dGxldA== 76749\n5pKt 76750\nIENvY29h 76751\nVWJ1bnR1 76752\nIG1vb2ll 76753\nIGZsb3JpZGE= 76754\nIHJldGhpbms= 76755\nIGdldFg= 76756\nZ2V0RWxlbWVudA== 76757\nIHJhZGl4 76758\nIEdhbWVy 76759\nZGVhbGxvYw== 76760\nbGVmdEpvaW4= 76761\nX1NZTg== 76762\nR3JpZExheW91dA== 76763\nImdv 76764\nKGVhY2g= 76765\nCXNjZW5l 76766\nIFB5RXJy 76767\nSG93YXJk 76768\nLlNpZ25hbA== 76769\nIFRFTQ== 76770\nIOen 76771\nVkVOVE9SWQ== 76772\nIHNpbXVs 76773\nIDw8LQ== 76774\nIHR1cmJpbmVz 76775\nIHN1cnRvdXQ= 76776\nYWx0bw== 76777\nIHVuYXJ5 76778\nYA0K 76779\nIFNjcmk= 76780\nIE1vbms= 76781\nIHVuZm9sZGVk 76782\nQ29tcG9zaXRpb24= 76783\nUFBFUg== 76784\nIHNpZGluZw== 76785\nJyx7Jw== 76786\nIHRyZWZm 76787\nX1VOSUNPREU= 76788\nIGRlcmVjaG8= 76789\nIHBvbGFyaXR5 76790\nIG9yYw== 76791\nPERvY3VtZW50 76792\nKHRvZGF5 76793\nLikKCgoK 76794\nIHNlZW1pbmc= 76795\nXFY= 76796\nPklE 76797\nIGZpYm9uYWNjaQ== 76798\nKG1hdGVyaWFs 76799\nRkxBU0g= 76800\nZGlyZWN0b3JpZXM= 76801\nZXN0ZXJz 76802\nVEVDVElPTg== 76803\nd3JhcHBlZA== 76804\nLXNlbGVjdGlvbg== 76805\nLXJlbGF0aXZl 76806\nKGNocg== 76807\nIHBvcnRmb2xpb3M= 76808\nIHNob3dEaWFsb2c= 76809\naW5nbGV0b24= 76810\nIFRJQ0s= 76811\nIEludmVzdG9y 76812\nIGJyYXY= 76813\nIFNWTg== 76814\nIGhhdGVmdWw= 76815\ncmlwcw== 76816\nZXhwaXJ5 76817\nX2NvaW4= 76818\nPgoKCgoK 76819\nIG1hcmdpbmFsaXplZA== 76820\nIGV4Y2VlZGluZ2x5 76821\nbmF2YmFyU3VwcG9ydGVkQ29udGVudA== 76822\nKGV4dGVuc2lvbg== 76823\nIGFkdmFudGFnZW91cw== 76824\nLk1pY3Jvc29mdA== 76825\nIGVuc3VpdGU= 76826\nLXZpb2w= 76827\nX2R1ZQ== 76828\nS0g= 76829\nIFJvbWFudGlj 76830\naW5hbmQ= 76831\nZWNp 76832\ncmVwb3J0ZWQ= 76833\nIENvcnB1cw== 76834\nIHNwYW5raW5n 76835\nIENyb3NieQ== 76836\nLkZvdW5kYXRpb24= 76837\nXF8= 76838\nIGFubm9uY2Vz 76839\nQXR0YWNobWVudHM= 76840\n4Liy4Lij 76841\nIFdheA== 76842\n77yB77yBCgo= 76843\nIHNhaWxlZA== 76844\nLkV1bGVy 76845\nCXNjcm9sbA== 76846\nIHBlYXNhbnRz 76847\nIEJ1aWxkZXJz 76848\nLkdlbmVyYWw= 76849\nQVJFQQ== 76850\nIG1lc3Npbmc= 76851\ndmVybg== 76852\nIGRpYXBlcg== 76853\nIG9jY3VwaWVz 76854\nCWxvZ2lu 76855\nLkxPQw== 76856\naWdhbnM= 76857\n77yB4oCd 76858\nX2Zvb3Q= 76859\nX3RhdQ== 76860\nLXBhY2thZ2Vz 76861\ncmVjdXI= 76862\nQWx0ZXJuYXRpdmU= 76863\n77yB44CN 76864\nYXJvbw== 76865\nIHRydXN0ZWU= 76866\nLDpd 76867\n5pa55byP 76868\nPz4+ 76869\nLk1pbnV0ZQ== 76870\nIGFsY2Fu 76871\nIENvbmNlcHRz 76872\nY2hpbGROb2Rlcw== 76873\nQ291cnQ= 76874\nIGNlbGxhcg== 76875\nbGVr 76876\nYWtpcw== 76877\nQnViYmxl 76878\nIG9iamVjdGVk 76879\nIO+7vw== 76880\nOl06Cg== 76881\nLnBhcnNlRmxvYXQ= 76882\nIHNwYXJrcw== 76883\nLWZpbmQ= 76884\ndmFyaWF0aW9u 76885\nSGFjaw== 76886\nRmFucw== 76887\nX3BhcnNlZA== 76888\nRW50aXR5VHlwZQ== 76889\nYXVjZQ== 76890\nX3RyZWVz 76891\nIEVnZ3M= 76892\nVUlCYXJCdXR0b25JdGVt 76893\nX3RheG9ub215 76894\nIFNIT1A= 76895\nVHdlbnR5 76896\nX2NoZWNrcw== 76897\nIExY 76898\ndXRzY2hlaW4= 76899\nKHBsYXRmb3Jt 76900\nIGF1dG9wc3k= 76901\nUmVxdWlyZW1lbnQ= 76902\nIFJFQ1Q= 76903\ndG9Db250YWlu 76904\nJywnJQ== 76905\nL2VkaXRvcg== 76906\nIHFi 76907\nIEVFRw== 76908\naHRh 76909\nX1RJTEU= 76910\nLXN1bQ== 76911\nIEFsYnVxdWVycXVl 76912\nIHNob3J0Y29kZQ== 76913\nIHNpbnVz 76914\nIGRlc2tz 76915\nIHBvb3A= 76916\nLm9wZW5zb3VyY2U= 76917\nIENvbGxhcHNl 76918\nLmRlcg== 76919\nIGhhd2s= 76920\nIFZhbmd1YXJk 76921\nIE1hcnJpb3R0 76922\nX1RhcmdldA== 76923\nIEJhbmFuYQ== 76924\nX2F0dGVudGlvbg== 76925\nIEFyaWVs 76926\nX3Rlbg== 76927\nIGJha2Vy 76928\n4oCUaGU= 76929\nxIXFvA== 76930\ndmVsb3BtZW50 76931\nRWxm 76932\nX2djaGFuZGxl 76933\nUmVwdWJsaWNhbnM= 76934\nIGl0ZW1CdWlsZGVy 76935\nV29u 76936\nX2FjY3Vt 76937\nIG5ld1Bhc3N3b3Jk 76938\nIGRldm9pZA== 76939\nIE1hcmt1cw== 76940\nZGFlbW9u 76941\nLkh0dHBDb250ZXh0 76942\nS3Jpc3Q= 76943\nIGFhbGJvcmc= 76944\nX3RyaWFscw== 76945\nKGFzc2VydA== 76946\n44Gj44Gm 76947\nYmVsdA== 76948\nIG1pbGRseQ== 76949\nZXJ2b2ly 76950\nIGRlc2NlbmRhbnQ= 76951\nIEdpb3Zhbm5p 76952\nIGRlY2x0eXBl 76953\nLVNoaXJ0 76954\nIGFwcm8= 76955\nQXBwbGllZA== 76956\nLmdldFBhcmFt 76957\naG9m 76958\ndXJhcg== 76959\nIE9CUw== 76960\nX3Nlcg== 76961\nKHNlY3JldA== 76962\nW2xheWVy 76963\nIHVzZWZ1bG5lc3M= 76964\nIEtvdQ== 76965\nX3N1Ym1pc3Npb24= 76966\nX0hPUklaT05UQUw= 76967\nLHRtcA== 76968\nLy4K 76969\nIGxlc3Nlbg== 76970\nX3dj 76971\nX0ZJTkFM 76972\n0L3QvtC/ 76973\nLnRvZG9z 76974\nLlhQYXRo 76975\nIElEYXRh 76976\nIGRvb3JzdGVw 76977\nIGNvbXBvc2luZw== 76978\nIGh1dA== 76979\nIFZMQU4= 76980\nIG91dGY= 76981\n6K+l 76982\nKGJldGE= 76983\nKioqLwoK 76984\nIEluZG8= 76985\nIGtsYQ== 76986\nX2NvbmZpZ3VyZQ== 76987\nLk1hcms= 76988\nb3NlY29uZHM= 76989\nKFZlcnRleA== 76990\nb3JnYW5pc21z 76991\nIGZmbQ== 76992\nIGRlbW9saXNoZWQ= 76993\nICItLS0= 76994\nbGVzaQ== 76995\nIFNpZG5leQ== 76996\nLmdldEluZGV4 76997\nLk1vbmFk 76998\nU2VsZWN0ZWRJdGVt 76999\nIE5hdlBhcmFtcw== 77000\nYXpvbGU= 77001\nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo= 77002\nX3NlbnRlbmNlcw== 77003\nIGluY2xpbmF0aW9u 77004\nIEZhdGhlcnM= 77005\nYWNjb3VudElk 77006\naGFyaQ== 77007\nKT4K 77008\nL3Jhdw== 77009\nICcnKTsKCg== 77010\nK2w= 77011\nKGNk 77012\nIHVuemlw 77013\nIGdsYW1vcm91cw== 77014\nIyIs 77015\nIG5hdw== 77016\nIG1pbmli 77017\nIEJyYW4= 77018\nTmFjaA== 77019\nX3R3ZWV0cw== 77020\nIENDUA== 77021\nJSI+PA== 77022\nIFN0ZXBoZW5z 77023\nbWFzxLE= 77024\nJ2Vz 77025\nIHJlcGFy 77026\nX2RvY3VtZW50cw== 77027\nLmNsb3NlZA== 77028\nLXJpbmc= 77029\nL2NhdGVnb3JpZXM= 77030\nIERlZXBDb3B5 77031\nU1VQ 77032\nLm5ld2F4aXM= 77033\nIGdkeQ== 77034\naG9l 77035\nIFJlZWY= 77036\nIHBvbGl0aWM= 77037\nIFJlcXVpcmVtZW50 77038\nIHNoZWRz 77039\nc2VhbGVk 77040\nIHBhdGhvbG9neQ== 77041\nIi8+PA== 77042\nbW9kbw== 77043\nIHN0ZW1taW5n 77044\nIHRhYm9v 77045\nIFNhdmlvcg== 77046\nIH0NCg0KDQoNCg== 77047\nLmN2 77048\nIGpvdWV1cg== 77049\nIENvcm53YWxs 77050\nIFJlY2VwdGlvbg== 77051\nIGlsbHVtaW5hdGlvbg== 77052\nIGdkYg== 77053\nVkVD 77054\nb2R1 77055\nQ29udGVudEFsaWdubWVudA== 77056\nc3RhbnRpYWw= 77057\nYmFzZWxpbmU= 77058\nX2J1c3k= 77059\nLwoKCgo= 77060\nIHBsYXllcklk 77061\n5qM= 77062\nX3BldA== 77063\nIE1pcmFjbGU= 77064\ndXJlbnQ= 77065\nIE1lcmxpbg== 77066\ndWJlbg== 77067\nIHNldENvbG9y 77068\nIGRhcmtlc3Q= 77069\nc3Rlcnk= 77070\nIGNhcmlj 77071\nIHJldGFyZA== 77072\nIEhvdXNlaG9sZA== 77073\nIGphbA== 77074\nIHlw 77075\nIiwiIik7Cg== 77076\nIEFjZXI= 77077\nW1c= 77078\nb2xraWVu 77079\nYXlv 77080\nUHJpdmF0ZUtleQ== 77081\nIFNUQVRT 77082\nINC90YPQtg== 77083\nOicuJA== 77084\nIHRoYW5rZnVsbHk= 77085\nIGRpc3RydXN0 77086\nZ2V0RGVmYXVsdA== 77087\nL2ZhY2Vib29r 77088\nIENvbnJhZA== 77089\nIHV0aWxpemFuZG8= 77090\nIEthZw== 77091\nL25hbWU= 77092\nIGJhbWI= 77093\nLkZyb21TZWNvbmRz 77094\nIG11dGls 77095\nIExhZ29z 77096\nIEJsZXNzZWQ= 77097\naWxsZWdhbA== 77098\naWVp 77099\nX1RQ 77100\nIG1hdGxhYg== 77101\nIGN5Y2xpYw== 77102\nIHdpdGhoZWxk 77103\nIGhvcnJpYmx5 77104\nLWhvdXJz 77105\nLUhlYWRlcnM= 77106\nIG92ZXJsYXBz 77107\nIGN1YXRybw== 77108\nIGVxdWl0YWJsZQ== 77109\nIGNvbG9ybWFw 77110\nIHNoaW4= 77111\nIFN1aXRlcw== 77112\nX2x1YQ== 77113\nKHZv 77114\nX1JFU1VMVFM= 77115\nIFZpa3Rvcg== 77116\nRG93bmxvYWRpbmc= 77117\nbm9jaA== 77118\nTW9vbg== 77119\nIGRlY2lkZWRseQ== 77120\n44GU44GW 77121\nX1JQQw== 77122\nSW50ZXJwb2xhdG9y 77123\nIHZhbnM= 77124\ne1Q= 77125\nX3NwYXdu 77126\nIEV4eG9u 77127\nX0NhbGw= 77128\nIENsYXNzcm9vbQ== 77129\nIHNlcm90b25pbg== 77130\nIERpcGxvbWE= 77131\nYmVkdGxz 77132\nIFByb3RvdHlwZQ== 77133\nLmV4ZWN1dGlvbg== 77134\nIGRhdGluZ3NpZGU= 77135\nIEdva3U= 77136\nX3Jvb21z 77137\n4oCZYW0= 77138\nZ3JhZg== 77139\nYWNlb3Vz 77140\nIGFjY29tbW9kYXRpbmc= 77141\nfSwn 77142\nLmRpbWVuc2lvbg== 77143\nZXJyb3JNc2c= 77144\nCW1lc2g= 77145\nRmlsbGVk 77146\nLnByZWZlcmVuY2U= 77147\nIHNtYXJ0eQ== 77148\nX2NvdXBvbg== 77149\nIMO2dmVy 77150\nIGNvbmNlaXZl 77151\nb2Rvbg== 77152\nZGljZQ== 77153\nVG9EYXRl 77154\nYWRhbWVudGU= 77155\nLW1hc2s= 77156\nIGVzY2FsYXRpbmc= 77157\n4oCmKQoK 77158\nSW5SYW5nZQ== 77159\nX0Vt 77160\nIHV0aWxpemE= 77161\nIGxldnk= 77162\nPCFb 77163\nIEplbm5lcg== 77164\nIFJFU09VUkNF 77165\nX1NUQVJURUQ= 77166\nIHZvbGxleWJhbGw= 77167\nIG1nYQ== 77168\nIFJvc3Np 77169\nQ2hhbmNl 77170\nIEVuZGVk 77171\nLnVudGls 77172\nIGtub2Nrb3V0 77173\nX2V4ZQ== 77174\nIFByZXNjcmlwdGlvbg== 77175\nIENPVU5UWQ== 77176\nLmhy 77177\naWVyc2hpcA== 77178\nRVJWRQ== 77179\n6ak= 77180\n44Gn44Gv 77181\nIHBlcsOt 77182\nIGltZ1VybA== 77183\nZWN4 77184\nIFd5bg== 77185\nCVJldHVybnM= 77186\nX2V5ZQ== 77187\nIEFnaW5n 77188\ncXVldWVz 77189\nIOWIneWni+WMlg== 77190\nLlNlcmlhbGl6ZWROYW1l 77191\nLmhvdXJz 77192\nIGlzZQ== 77193\nLkFjdG9y 77194\n5p2h5Lu2 77195\nYXBwbA== 77196\nVGFu 77197\nL2NhdGFsb2c= 77198\nL1Jlc291cmNlcw== 77199\nZWxhbg== 77200\nKCd7ew== 77201\nIGluc24= 77202\nIG5vZGVOYW1l 77203\nIGNvb2tib29r 77204\nJywnPScsJw== 77205\nUk9NRQ== 77206\nLnRlbXBsYXRlcw== 77207\nZWN1cmU= 77208\nLWtleXM= 77209\nIGdsVW5pZm9ybQ== 77210\nIGdlw6c= 77211\nIFJlY292ZXI= 77212\nSURY 77213\nIEtyaXN0ZW4= 77214\nIHBvbnRvcw== 77215\nYD0nJA== 77216\nYXJnZW50 77217\nIGFycmFuZ2luZw== 77218\n6KiY5LqL 77219\nIGVybGU= 77220\nZW5lZG9y 77221\nKCkpKTs= 77222\nw6Zra2U= 77223\nIEdpbGxlcw== 77224\nIn0+Cg== 77225\nLm1vdmllcw== 77226\nLXNlbGVjdG9y 77227\nLmxlYXJu 77228\nIHBvdGVuY3k= 77229\nIGZpbm8= 77230\nCWJn 77231\nIGxlaGV0 77232\nIGzDtg== 77233\nIGVybQ== 77234\nIGFzYmVzdG9z 77235\nIGRlc3Rl 77236\nIGJsb2NrYWRl 77237\nIFJPVU5E 77238\nIGxuYW1l 77239\nIFNlcGFyYXRl 77240\nw6RuZ2U= 77241\nIGZ1eno= 77242\nCVVO 77243\nX25vbWU= 77244\nX2xpbmtlZA== 77245\nIFNoYXJlUG9pbnQ= 77246\naGF1c2Vu 77247\nIGxvYWY= 77248\nLWVjb25vbWlj 77249\nIGRpZEZpbmlzaA== 77250\neWVu 77251\nIGJsYXN0aW5n 77252\nIFdlaXJk 77253\nSUNMRVM= 77254\nIEdGWA== 77255\nIHN1ZmZpY2U= 77256\nZWJpbg== 77257\nIGFwcHJvdmluZw== 77258\nIFJleWVz 77259\nIFJUQUw= 77260\naWdsaQ== 77261\nX3Rvaw== 77262\nb3Jkb3Zh 77263\nQ2FybA== 77264\nIFBsYXlz 77265\nbG9zc2Vu 77266\ncGFpcmVk 77267\nQUdNQQ== 77268\nd2nEhXo= 77269\nbGlua2VkaW4= 77270\nIGVnYWw= 77271\nKHByZWRpY2F0ZQ== 77272\nIFJFU1BPTlNF 77273\nIG1pblg= 77274\nIGNoYW5jZWxsb3I= 77275\nIFJFQ0VJVkVS 77276\nIGFzY2VydGFpbg== 77277\nIHplcg== 77278\nIFdvcmtzaGVldHM= 77279\nTks= 77280\nIHZvd2Vs 77281\ndmFudA== 77282\nVVBT 77283\n4oCcLg== 77284\nIEhheWRlbg== 77285\nIFNwYXJ0YW4= 77286\ncmlnaHRz 77287\nLmdldElu 77288\nIGlubGFuZA== 77289\nIE5pbGU= 77290\nIFRyYW5zbGF0b3I= 77291\nIHJlY3RhbmdsZXM= 77292\nQnV0dG9uVHlwZQ== 77293\nIFNvbGlj 77294\nIHJhZ2F6emE= 77295\nL3RhZw== 77296\nIGlycmVzaXN0 77297\nI0VuZA== 77298\nKioqKioqKg0K 77299\nIHJlc3RyYWluZWQ= 77300\nIGNoaXJvcHI= 77301\nL1No 77302\nLWZsaWdodA== 77303\nY29udmVydGVk 77304\nIHNraXJ0cw== 77305\nKGNoYXJz 77306\nJHZpZXc= 77307\nIGlucHV0RmlsZQ== 77308\nZ21haWw= 77309\nX0RJQUc= 77310\nIG51bWVs 77311\nIEdpbmE= 77312\nZWxsdW5nZW4= 77313\nIHRheGE= 77314\nIGRyaXBwaW5n 77315\nPSIiLz4K 77316\nIGJvcmRlcmVk 77317\nIHRvdWdobmVzcw== 77318\nbGVuZXNz 77319\nIEJpZWJlcg== 77320\nX1dBS0U= 77321\nKGV0 77322\nIHNhbnTDqQ== 77323\nIFRFWA== 77324\nX0RJU0NPTk5FQ1Q= 77325\nIHBpZW4= 77326\nIEZvbnRTdHlsZQ== 77327\nX1VM 77328\nLXRvdGFs 77329\nd29sZg== 77330\nIE1hcml0aW1l 77331\nIE9QVElPTkFM 77332\nLXJlc3Q= 77333\nIG1lbWJ1YXQ= 77334\nIEJTT04= 77335\nX3NpbWlsYXJpdHk= 77336\nLm92ZXJsYXk= 77337\nIHBhbGF0ZQ== 77338\nIEJyaWRnZXM= 77339\nQW5kUGFzc3dvcmQ= 77340\nIENoYXZleg== 77341\naGV0dG8= 77342\nLm9mZnNldEhlaWdodA== 77343\nIHVuZGVzaXJhYmxl 77344\nIGFwbGlr 77345\nIC8+XA== 77346\nLHRv 77347\nIHJlbW92ZXI= 77348\nIE1vZGVsaW5n 77349\nIHB1cmNoYXNlcg== 77350\nIENob29zaW5n 77351\nb3BsZWZ0 77352\nIG11dGFibGVMaXN0T2Y= 77353\nIFNpc3RlbWE= 77354\nIElQTA== 77355\naWNrZXJWaWV3 77356\nSGFzQ29sdW1uVHlwZQ== 77357\nIHNvYmll 77358\ndWJlcm4= 77359\nIGFsdW5v 77360\nIGltYWdpbmF0aXZl 77361\nIEludGVyZXN0ZWQ= 77362\nKCl9PC8= 77363\nIGRpdmVyc2lvbg== 77364\nX3Rvb2x0aXA= 77365\nLlNhbXBsZQ== 77366\nIEZ1dHVyZXM= 77367\nY29udGVuaWRv 77368\nIEVJTlZBTA== 77369\nKGVuY29kZWQ= 77370\nIFNoYXVu 77371\nCXBheWxvYWQ= 77372\nZGVr 77373\nPllvdXI= 77374\nSXNv 77375\nVHJhdmVyc2Fs 77376\naWNpZQ== 77377\nLmNyb3A= 77378\nIEpC 77379\nSU5HRVI= 77380\nIGV4ZW1wbGFyeQ== 77381\nX3JlbHU= 77382\nYW5uaXM= 77383\n0LXQt9GD0LvRjNGC0LDRgg== 77384\nY2x1YnM= 77385\n4oaR 77386\nIHNjcmFtYmxl 77387\nIFVuYmxvY2s= 77388\nIGRvcnM= 77389\nIHNoYWNr 77390\nIG1pbmltaXppbmc= 77391\nIFBhc3Npbmc= 77392\nYWRkRWxlbWVudA== 77393\n4bud 77394\nIHJvb2Zz 77395\nIGpjbGFzcw== 77396\nY29yZG92YQ== 77397\nUG9zWQ== 77398\nKENhbnZhcw== 77399\nKGZpbg== 77400\nLWxvc3M= 77401\nLmJ0bkNsb3Nl 77402\nZG9jdW1lbnRhdGlvbg== 77403\nIFJK 77404\nYW1vbmc= 77405\nTW9z 77406\nbGluZ2Vu 77407\nIEFndQ== 77408\nb2x5bm9taWFs 77409\nXTw9 77410\nIGRpZmZpY2lsZQ== 77411\nIFdpbm5lcnM= 77412\n5bGV 77413\nU3RyYQ== 77414\nIGNvbmdyZWc= 77415\nIEVuYWJsZXM= 77416\nIFN5bXB0b21z 77417\nX3Nn 77418\nIFJpZGluZw== 77419\nX2hlYWRz 77420\nIENvc21ldGlj 77421\nw650 77422\nLlNpbmdsZXRvbg== 77423\nIE5pY2FyYWd1YQ== 77424\nIAoKCgoK 77425\nIG3DrQ== 77426\nJ30sDQo= 77427\nIEJvc25pYQ== 77428\nPlg= 77429\nLy8qWw== 77430\nIHBpbGVk 77431\nY2FzdGluZw== 77432\nIGdyw6JjZQ== 77433\nIEhlbHNpbmtp 77434\nR3Jv 77435\nI2Fm 77436\n7Iud 77437\nIHNvdWhh 77438\nIEluZGll 77439\nX25lYXI= 77440\nIGltbW9iaWw= 77441\nLkV4Y2Vs 77442\nIHJhZGlhbnQ= 77443\nX01C 77444\nIEtldG8= 77445\ndmVudGFyaW8= 77446\nX2FnZW50cw== 77447\nVGFibGVWaWV3Q2VsbA== 77448\nIFRoZW9kb3Jl 77449\nPT09PT09PT0K 77450\nLGxpc3Q= 77451\nKHNp 77452\naWNpcGF0aW9u 77453\nQVJUSA== 77454\nc2V0RGlzcGxheQ== 77455\nLkZ1dHVyZQ== 77456\nIFNUQU5EQVJE 77457\nIE9JRA== 77458\nIGZyb3duZWQ= 77459\nIE1hcmlseW4= 77460\nb2xhcmU= 77461\nUHU= 77462\nIHPDqWN1cml0w6k= 77463\nUmVkdXg= 77464\nU0NP 77465\nCQkJCQkgICAgICA= 77466\ncml2 77467\ncGVydA== 77468\nIHNvZnRtYXg= 77469\nIHNlbmF0ZQ== 77470\nPWVtYWls 77471\nIGVzdGltYXRpbmc= 77472\nCXRk 77473\nRnVjaw== 77474\nIFdhdGVybG9v 77475\nIG1leGljbw== 77476\nTmV3dG9u 77477\nU2Fi 77478\nLOKApgoK 77479\nIGNlbGVzdGlhbA== 77480\nIFFOYW1l 77481\nIGdldEFwcA== 77482\nTmll 77483\nX3BjaQ== 77484\nIFFQb2ludEY= 77485\nX2xpc3Rh 77486\nLk5WYXJDaGFy 77487\nIENvYw== 77488\nS2Fy 77489\nIGJ1c3RlZA== 77490\naXphdGlvbmFs 77491\nb3VyZA== 77492\nX2Nvbm5lY3Rvcg== 77493\nIFNla3M= 77494\n0L3Rg9GO 77495\n0II= 77496\nL0xpc3Q= 77497\nL2lj 77498\nXEZyYW1ld29ya0J1bmRsZQ== 77499\ndXh0 77500\nIGhlYWRwaG9uZQ== 77501\nRVhURVJO 77502\nLXJlc2V0 77503\nIEdlaWxl 77504\nIHRyaWFuZw== 77505\nIEFOTg== 77506\nIHTDrQ== 77507\nIFNQQQ== 77508\nIE1hY2Vkb25pYQ== 77509\nIGNyaWFy 77510\nIGNsaW1icw== 77511\nIFNPTg== 77512\nIENyaXRpY3M= 77513\nIGTDsw== 77514\nX1NQTElU 77515\nIEJvdW5kYXJ5 77516\nX0luc2VydA== 77517\nQ29sZA== 77518\nLmNyZWF0ZUNlbGw= 77519\nX3NhaWRh 77520\nLkJMVUU= 77521\nQmlnRGVjaW1hbA== 77522\nKEJ5dGVz 77523\nCVN0YXRl 77524\nLS0tQA== 77525\nVmlld1NldA== 77526\nYWthaA== 77527\nX1JlcG9ydA== 77528\nLWNyb3Nz 77529\nLmdldEN1cnJlbnRVc2Vy 77530\ndWx0dXI= 77531\nKEZs 77532\nIEltYWc= 77533\nQ1Rlc3Q= 77534\n7IOd 77535\nIHN0YWc= 77536\nIG96b25l 77537\nIGvDqQ== 77538\ncmVwYWly 77539\nKSIpOw0K 77540\nIHZvd3M= 77541\nLkFsdGVy 77542\nIEFsZ2VicmE= 77543\nIEFoZWFk 77544\nZ2V0dA== 77545\nLklubmVyVGV4dA== 77546\nIFpoZW5n 77547\nLnJlYWxwYXRo 77548\nIGRpc3RyYWN0aW9ucw== 77549\nLGV2ZW50 77550\nIElOQ0xVREVE 77551\nLk1hdGNoZXI= 77552\nLnNwb3RpZnk= 77553\nIGNvbnNpZA== 77554\nLk1hcHBpbmc= 77555\nIEZvYW0= 77556\nIE5BTkQ= 77557\nIGRldmFudA== 77558\nXSIpXQo= 77559\nTGF1cmE= 77560\nIHNhY2tlZA== 77561\nX3hvcg== 77562\nIHJlYWxtcw== 77563\nIFJvYm90aWNz 77564\nLlNlZWs= 77565\nLiQk 77566\nIFJpYmJvbg== 77567\nCUhSRVNVTFQ= 77568\nIENyZXNjZW50 77569\nRUZS 77570\nIE1lZGl0YXRpb24= 77571\nLmdldFo= 77572\nINC60L7QvNC/ 77573\nanNvbndlYnRva2Vu 77574\nOj8= 77575\nZmFm 77576\nVklPVVM= 77577\nYWxsYWg= 77578\nIHBpcGluZw== 77579\nIG1vZGVybmU= 77580\ncG9zdGFsY29kZQ== 77581\nIGxldmVyYWdpbmc= 77582\nIENISVA= 77583\ncGNt 77584\nbWFp 77585\nIGlQ 77586\nQUtFUg== 77587\nZGF0YUdyaWRWaWV3 77588\nX2RlcHM= 77589\nLWRyaXZlcg== 77590\nTGll 77591\nZGlzY2FyZA== 77592\neW50YXhFeGNlcHRpb24= 77593\nIGVjdA== 77594\nIEV4aGliaXQ= 77595\nICgqKg== 77596\nIOuU 77597\nQ2hhbmdlRXZlbnQ= 77598\nIHN1cGVybWFya2V0cw== 77599\nIHNobQ== 77600\ncHJvZml0cw== 77601\ncGlsbGFy 77602\ncmFpc29u 77603\nV2F0 77604\nIHBoYXJtYWNpZXM= 77605\nIG5ydw== 77606\nLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0= 77607\nCXdvcmxk 77608\nU3RyZWFtaW5n 77609\nRGlhbW9uZA== 77610\nIEVudW1lcmF0b3I= 77611\nIGVucXVpcnk= 77612\nLmxhbWJkYQ== 77613\nYmVr 77614\nUk9UTw== 77615\nIFBkZlA= 77616\nIGhpc3Rv 77617\nIGdldENoaWxk 77618\nL3N0cmV0Y2hy 77619\nIEFNQVo= 77620\nIEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbg== 77621\nInVzZXI= 77622\nIHNhbml0YXRpb24= 77623\nIENsb3RoZXM= 77624\nLm51bXB5 77625\nZmVj 77626\nICMjIyMjIyMjIyMjIw== 77627\n0LXQudGB0YLQsg== 77628\nX2xw 77629\nIGF6dXJl 77630\nWFBhdGg= 77631\nVmVudA== 77632\nTGFib3I= 77633\nIG1pc3Rha2VubHk= 77634\nIGNvbmR1aXQ= 77635\nIEZhaXJmYXg= 77636\nZ2V0U3RhdHVzQ29kZQ== 77637\nIE1veQ== 77638\nTGlzdEFkYXB0ZXI= 77639\nICg/KQ== 77640\nR2VuZXJhbGx5 77641\nLmlzQ29ubmVjdGVk 77642\ndmlkbw== 77643\nTW91c2VCdXR0b24= 77644\nR2VuZXJhdGlvblN0cmF0ZWd5 77645\nX2Rlcml2 77646\nIGxla2tlcg== 77647\nTWVhc3VyZW1lbnQ= 77648\nX0NPT0tJRQ== 77649\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 77650\nIGNvbXBldGl0aXZlbmVzcw== 77651\nIGdhbWxl 77652\nIHJldHJvc3BlY3Q= 77653\nIEVkdWFyZG8= 77654\nIERhdGFTZXJ2aWNl 77655\nIGVzY29ydGVk 77656\nIFF0eQ== 77657\nSG9saWRheQ== 77658\nCXJhdw== 77659\nbGV1cnM= 77660\nQmlydGhkYXk= 77661\nIGhlYXRz 77662\nLmludmVyc2U= 77663\nIF8NCg== 77664\naWxsdW0= 77665\nb2thYmxlQ2FsbA== 77666\nX21s 77667\nTGlrZWQ= 77668\nZW51bWVyYXRl 77669\nRmluaXRl 77670\nLXByb3A= 77671\nQXJlYVZpZXc= 77672\nIG1lZGlhdGlvbg== 77673\nIGNoYW50aW5n 77674\nX05U 77675\nX3VuYw== 77676\nc21vdXRo 77677\nIHBpZ21lbnQ= 77678\nUGFzc3dvcmRFbmNvZGVy 77679\nIHbDqXI= 77680\nIHdhc3Rld2F0ZXI= 77681\nLVBhY2s= 77682\nIGpvdmVu 77683\nYWVz 77684\nS1k= 77685\nUGludGVyZXN0 77686\nIG11c2ljYQ== 77687\nbGFjZXM= 77688\nIFdpY2g= 77689\nKHJvdA== 77690\nKGly 77691\nIOyCreygnA== 77692\n44Gd44KM 77693\nX1RIRQ== 77694\nZ2V0RmlsZQ== 77695\nW3Byb3BlcnR5 77696\nIGVuZGluZ3M= 77697\naXp6YXJl 77698\nPXRyYWlu 77699\nLWxvdmluZw== 77700\nIG5vdXZl 77701\nIGNvbW1hcw== 77702\nIGNhbWJp 77703\nIFp1c2FtbWVu 77704\nCUV4dA== 77705\nKG9ic2VydmVy 77706\nZm9ybWlr 77707\nIHF1aW5kaQ== 77708\nIEl2b3J5 77709\nIEJvbGl2aWE= 77710\nYXNhZA== 77711\nX2xlZ2VuZA== 77712\nQ2l0aWVz 77713\nX0ZJUkU= 77714\nYXNkZg== 77715\nLkRlcHRo 77716\nVmFsdWVHZW5lcmF0aW9uU3RyYXRlZ3k= 77717\ndXBk 77718\nLkdldFJlc3BvbnNl 77719\nIHVyZ2VudGx5 77720\nSW52YXJpYW50 77721\nR2V0WA== 77722\nIHN0YXR1cmU= 77723\nIGltYWdpbmluZw== 77724\nYXRlYXU= 77725\nTU9WRUQ= 77726\nKFRyYW5zYWN0aW9u 77727\nX3Bvcg== 77728\nUmVmUHRy 77729\nLmdsb2JhbERhdGE= 77730\nZ3JhdmU= 77731\naW1lc3RlcHM= 77732\nZm91bmRsYW5k 77733\nU2FsaXI= 77734\nYXJ0aXN0cw== 77735\nIGNyZWF0ZUFjdGlvbg== 77736\nIFNhbnRv 77737\nINC90LXRgg== 77738\nCQkJICAgICAgICAgICAgICAg 77739\nLXNvbmc= 77740\nIG51aXNhbmNl 77741\nIGltcG92ZXI= 77742\nXykNCg== 77743\nIGNyb3dkZnVuZGluZw== 77744\nIHRpbXA= 77745\nUGljdHVyZXM= 77746\nIGxvZGdpbmc= 77747\n6ZKu 77748\nYXRhc2V0cw== 77749\n44Ot44Kw 77750\ncGVyc29ucw== 77751\nY29uZHVjdA== 77752\nIGV2YWRl 77753\nIGhhdW50aW5n 77754\nICEhfQ== 77755\nIExBUkdF 77756\nIGtpdHRlbg== 77757\nIHVwaGlsbA== 77758\nKG1pbnV0ZXM= 77759\nIEVtYW51ZWw= 77760\nJ0M= 77761\nIFNreXdhbGtlcg== 77762\ncHVycG9zZQ== 77763\nX21hcHBlcg== 77764\nIGFkYXB0YXRpb25z 77765\nLmZpbGxUZXh0 77766\ncnVr 77767\nIHJlcGVydG9pcmU= 77768\nKHByaW9yaXR5 77769\nKG1hcHBlZA== 77770\nUm9iaW4= 77771\nIGVycm9uZW91cw== 77772\nIGluaGFs 77773\nQk9WRQ== 77774\nKCIsIikK 77775\ndWVsbGVtZW50 77776\nIGZpbmdlcnByaW50cw== 77777\nIFBZVEhPTg== 77778\nLWRlbQ== 77779\nbGVhbm9y 77780\nesSFZA== 77781\nIlBlb3BsZQ== 77782\nYXNpZXI= 77783\nIHBhdHJpb3RpYw== 77784\nLmZyZWV6ZQ== 77785\nSUo= 77786\nIEJhbmNv 77787\nIGlzU3VjY2Vzcw== 77788\nKHZlaGljbGU= 77789\nKExheW91dA== 77790\nIGNhcnZpbmc= 77791\nX2NpcGhlcg== 77792\nIHZlemVz 77793\nKCdfJyw= 77794\nIEZpcnN0bHk= 77795\nIGZ1bGxlc3Q= 77796\nIExpc3RlbmluZw== 77797\nX3NpZ25hbHM= 77798\nZXdvbGY= 77799\nIFNDUg== 77800\nIE1lcnJ5 77801\nL3Rlc3RpZnk= 77802\nX1NBTklUSVpF 77803\naW9jdGw= 77804\nSUVFRQ== 77805\nPU1hdGg= 77806\nIGVucXU= 77807\nCWF1eA== 77808\n4pml 77809\nIGRpc3BlcnNlZA== 77810\naGFyZQ== 77811\nYmVybg== 77812\nIEFtZW5k 77813\nIGluc2lkZXJz 77814\nIEFsdmFyZXo= 77815\nIFp1Zw== 77816\nL2NhbGVuZGFy 77817\nIGhldXJl 77818\nLXBhcGVy 77819\nIHNvZm9ydA== 77820\nIHNtaXRo 77821\nIHBvYg== 77822\nKHJhdGU= 77823\nIHNvY2nDqXTDqQ== 77824\nIHdvZXM= 77825\nIGJydXNoaW5n 77826\ncWQ= 77827\nb2xvZ3Vl 77828\nc29ja2V0cw== 77829\nX1lFUw== 77830\nLmFkZENvbHVtbg== 77831\nIGV2YXNpb24= 77832\nU09GVFdBUkU= 77833\nYWJveA== 77834\nLnlsaW0= 77835\nIGVuZ3VsZg== 77836\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo= 77837\nIG5nT25EZXN0cm95 77838\nIG5vc3Nh 77839\nLmxzdA== 77840\nKCl9Pgo= 77841\nLmt3YXJncw== 77842\nIGNvbnRleHRv 77843\nIFBVQg== 77844\nRnU= 77845\nIGJpZ290cnk= 77846\nIGJyaWQ= 77847\nIHN0ZXJvaWQ= 77848\nIHZpZ29yb3VzbHk= 77849\nIGJ1cnN0aW5n 77850\nIHZlbmU= 77851\nIHNhbGFkcw== 77852\nIFZBUklBQkxFUw== 77853\nIE9uYw== 77854\nIGZpcmVFdmVudA== 77855\nc2FuZGJveA== 77856\nIHRvdWNoc2NyZWVu 77857\nc2Fucw== 77858\nL0luc3RydWN0aW9u 77859\nIGVvZg== 77860\nbGVjdHVyZQ== 77861\nPy0= 77862\nLmxvY2FsaXphdGlvbg== 77863\nVkVT 77864\nX3ZvaWNl 77865\naXR1cmE= 77866\nLnJlcG9ydGluZw== 77867\nIF0pOw== 77868\nTm92YQ== 77869\nX0NPTVBBVA== 77870\nIG91dGJyZWFrcw== 77871\nLmNsaWVudFdpZHRo 77872\naWZsb3dlcg== 77873\nX0dSQQ== 77874\nSW5pdGlhbGl6aW5n 77875\nX3BlcmY= 77876\nKCl9LA== 77877\nPVA= 77878\nX0lNRVRIT0Q= 77879\nIHRpZ2h0ZW5pbmc= 77880\nIHRhYkJhcg== 77881\nIEJL 77882\nCURvdWJsZQ== 77883\nL2hhc2g= 77884\nIG1leg== 77885\nVG9VcHBlcg== 77886\nVEc= 77887\nKGluZGVudA== 77888\nIHNpbGljYQ== 77889\nIC8vLy8vLw== 77890\nw7Zr 77891\nIGVsdmVz 77892\nZW1wbGF0ZXM= 77893\nLkNvbXBhcmVUbw== 77894\nIGd1bmZpcmU= 77895\nYW5pbWFscw== 77896\nIGtlcGFkYQ== 77897\nIENQUg== 77898\nX0xTQg== 77899\nCXZlcnRleA== 77900\nINC/0LXRgNCy 77901\nLCE= 77902\nIGR1bHk= 77903\nX1BBVENI 77904\nRU5B 77905\nCUND 77906\nY29tcG9zaXRpb24= 77907\nX3N2 77908\nTGJs 77909\namVq 77910\n0YHRgtGA0L7QuQ== 77911\nLkVkaXRWYWx1ZQ== 77912\n5YW3 77913\nYW50YXM= 77914\nIGJyZWFkY3J1bWI= 77915\nIFRlc3Rlcg== 77916\nIE1lYXN1cmVtZW50cw== 77917\nL0lucHV0 77918\nIFJheg== 77919\nX1BPTEw= 77920\nSW5kZXBlbmRlbnQ= 77921\nLmx1Y2VuZQ== 77922\nIE1lY2hhbmljcw== 77923\nY29sb24= 77924\nLnN1cmZhY2U= 77925\nIHVuYXM= 77926\ncmFkbw== 77927\nUExJQ0FURQ== 77928\nQ1JU 77929\nLnNldERlZmF1bHQ= 77930\nJUg= 77931\nIHJlc3BvbnNhYmxl 77932\nIHBlcnBlbmRpY3VsYXI= 77933\nIFJlc3Bpcg== 77934\nIFR1bmlzaWE= 77935\nXEFycmF5 77936\n6Lev5b6E 77937\nIHBhdw== 77938\nIGRlYm91bmNl 77939\nKE1QSQ== 77940\nINiv2LE= 77941\nIGVsaw== 77942\nIFJlbGF5Q29tbWFuZA== 77943\nL2xpZ2h0 77944\nLnNlcmlhbGl6YXRpb24= 77945\nQlNJVEU= 77946\nKSgoKCg= 77947\nIEJpb3M= 77948\nX3N2Zw== 77949\nKHN1cmZhY2U= 77950\nRHVwbGljYXRlcw== 77951\nICg+ 77952\nX0FTVA== 77953\nLm5pY2s= 77954\nIldoeQ== 77955\nIEludGVsbGVjdHVhbA== 77956\nYWJicmV2aWF0aW9u 77957\nZWFyYWJsZQ== 77958\nIGNvbnNlZ3Vpcg== 77959\nKEJl 77960\nX1BvZHM= 77961\nPEFuaW1hdG9y 77962\nX1VOREVGSU5FRA== 77963\nQVJSWQ== 77964\nIC8vfg== 77965\ncGVyYXRvcg== 77966\nLndyaXRlRmlsZVN5bmM= 77967\nQWxz 77968\nbGRlcg== 77969\nIG1pZWpz 77970\nIGZ1bmNz 77971\naW5jaWJsZQ== 77972\nIGR1c3R5 77973\nIERyaWxs 77974\nIGNvbnRpbnVhbA== 77975\nIEVsZWN0cm9u 77976\nLmVuZW15 77977\nKHBi 77978\nIHJldW5pdGVk 77979\nU21va2U= 77980\nLWZhY2Vk 77981\nSW50ZW5zaXR5 77982\nIFRyZWVNYXA= 77983\nIEFyZ3VtZW50RXJyb3I= 77984\nLndyaXRlSGVhZA== 77985\nIFRSRQ== 77986\nU3BsaXRPcHRpb25z 77987\nLyoqKioqKi8K 77988\nIFw8Xg== 77989\nIEludmVzdG1lbnRz 77990\nU1VNRVI= 77991\nIGRhYw== 77992\nQU5J 77993\nLlllc05v 77994\nKG9mU2l6ZQ== 77995\neXRo 77996\nZWxvYWQ= 77997\nIGltcHJlcw== 77998\nIGJsb2Jz 77999\nLnJldHJpZXZl 78000\nIHR5cmFubnk= 78001\nIGNhbmNlbEJ1dHRvblRpdGxl 78002\nIGhhY2k= 78003\nIENhc2lub3M= 78004\nIGRoZQ== 78005\nUmV0YWls 78006\nIFBvcm5odWI= 78007\nIENyaW1lcw== 78008\nT2ls 78009\nKElTZXJ2aWNl 78010\nUmVzaXphYmxl 78011\nCVNv 78012\nT2Z0ZW4= 78013\nIGNvbW1vbnBsYWNl 78014\nX0dD 78015\nYWxkaQ== 78016\nYXRobG9u 78017\nKFZpZXdHcm91cA== 78018\nKEVtcGxveWVl 78019\nIHNhZmVndWFyZHM= 78020\n6YCA5Ye6 78021\nX0FVUkE= 78022\nIHVubm90aWNlZA== 78023\nIFRob3Ju 78024\nbW9kZWxl 78025\nIGFjb3Jkbw== 78026\nIFdlbmdlcg== 78027\naW11cw== 78028\nZW5zYnVyZw== 78029\nb21iYQ== 78030\nY2nDs24= 78031\nImh0dHA= 78032\nX01hdHJpeA== 78033\nfHx8fA== 78034\nb3JuZWNlZG9y 78035\nCUJ1ZmZlcmVkUmVhZGVy 78036\ncmVnaXN0ZXJz 78037\ncmVsZWFzZWQ= 78038\nIGFkZE9ic2VydmVy 78039\nIFZhbGVudA== 78040\nKEN1bHR1cmVJbmZv 78041\nIG1hbm5lbg== 78042\nIGJ1cmdsYXJ5 78043\nX21pbnV0ZQ== 78044\nIGludGVyY2VwdG9y 78045\nb2NyYXRlcw== 78046\nYXR0cm8= 78047\nIFlF 78048\nZXNzbGVy 78049\nbGlzdGVuZXJz 78050\nL3Byb20= 78051\nIOek 78052\ndG91Y2hlcw== 78053\nRXNw 78054\nIEFib3J0 78055\nIGZmaQ== 78056\nIGNsdW1z 78057\nTklM 78058\nX1ZJUlRVQUw= 78059\nIGxvaW4= 78060\neW5vbWlhbHM= 78061\nINec 78062\nIGd6 78063\nIE5lb24= 78064\nSVNJUw== 78065\nYW1lcmF0ZQ== 78066\nX2F2YWls 78067\nIG1heGk= 78068\nIGlzQXJyYXk= 78069\nQ29sdW1uSW5mbw== 78070\naXppbg== 78071\nIHBlcnNv 78072\nIG91ZA== 78073\naWFsaXplZA== 78074\neW1p 78075\nIGNvbmZpZGVudGx5 78076\nPSIvIj4K 78077\nLmRhdGFzb3VyY2U= 78078\nIHBheWNoZWNr 78079\nIEJhdg== 78080\nL0JyYW5jaA== 78081\nIFRlYXI= 78082\nIG1lcnVwYWthbg== 78083\nIEJyYWg= 78084\nINC60L7QvdGC 78085\n74I= 78086\nLHBhdGg= 78087\nIGRhenpsaW5n 78088\nIFVDSEFS 78089\nIHByb3Zpc2lvbmFs 78090\n0L/Qvw== 78091\nIGxlZ2FsaXplZA== 78092\nX2FsZ28= 78093\nX1JTQQ== 78094\nYWx0ZXJuYXRpdmU= 78095\nIERFVEFJTFM= 78096\nVG9Ebw== 78097\ncmVmbGVjdGlvbg== 78098\nX1dFRUs= 78099\nIENMRUFO 78100\nIHNsb2dhbnM= 78101\nIOuTsQ== 78102\nIFZldGVyaW5hcnk= 78103\naWRm 78104\nLmRhdGVUaW1lUGlja2Vy 78105\naWNvbnRyb2w= 78106\nKHBsYXk= 78107\nIHVsbGFt 78108\nICcpDQo= 78109\nIGNoZXF1ZQ== 78110\n5a6L5L2T 78111\nIHVuc2VyZW0= 78112\nIEFyY2hpdGVjdHM= 78113\nYW1lbnRhbHM= 78114\nIHZtYXg= 78115\nIGplbWFuZA== 78116\nQ0VFRA== 78117\nIE9saXZpZXI= 78118\nc2V2ZXJpdHk= 78119\nUks= 78120\nRGlzY29ubmVjdGVk 78121\nIHdlYXBvbnJ5 78122\ndWnDp8Ojbw== 78123\nIGJpbmdv 78124\nZG9udA== 78125\nX0NIQU5ORUxT 78126\nIERhZw== 78127\nIGTDpHI= 78128\nw6lyaXF1ZQ== 78129\nZ3JhZGFibGU= 78130\nIENPTVBMRVRF 78131\nIHNwYW5pc2g= 78132\nIGluc3RydW1lbnRhdGlvbg== 78133\ndmFzaXZl 78134\nRFJBVw== 78135\nIGZwdXRz 78136\nIFNwZW5k 78137\nIFJlc3BlY3Q= 78138\nQ291cnRlc3k= 78139\nIHNjaG8= 78140\nIHBvc3RhZ2U= 78141\nIE1lYWRvd3M= 78142\nIHR1dG9yaW5n 78143\nZXJ2bw== 78144\nQWJzb2x1dGVseQ== 78145\nw6FuZGV6 78146\nvZTrk5w= 78147\nIFNIUg== 78148\ncGhvb24= 78149\nIERlcG9z 78150\nPScnCg== 78151\nIHBoeXNpb2xvZ3k= 78152\nKnRpbWU= 78153\nIFRvdWdo 78154\nZG9jaw== 78155\nL2hl 78156\nKEhhdmU= 78157\nIE1vaW5lcw== 78158\nU1RZUEU= 78159\nIEJyaWRl 78160\nIHN0cm9u 78161\nIHdvcmxkdmlldw== 78162\nIGdyYXR1aXRv 78163\nIGFlcm9zcGFjZQ== 78164\nIElocmVt 78165\nIHFj 78166\nIG1hbmlmZXN0YXRpb25z 78167\nc2xhdWdodA== 78168\nPEFjY291bnQ= 78169\nIEluZm9z 78170\nYW1iaWw= 78171\nX0ZpbmFs 78172\nIGFkbWluaXN0cmF0aW9ucw== 78173\nIGNvbGxhYm9yYXRlZA== 78174\nLmpkZXNrdG9w 78175\nb2x1Y2nDs24= 78176\nYXNjdGltZQ== 78177\nX2FsbG9jYXRl 78178\nYXJyaXZhbA== 78179\nSk9S 78180\nIHNoYWR5 78181\nIHBpbmVhcHBsZQ== 78182\n44KP 78183\nIHNhdGlu 78184\nYnJlcm8= 78185\nIExpZXM= 78186\nIHRlbnNvcnM= 78187\nIEludGVsbGlnZW50 78188\nLlNlbGVjdGVkSW5kZXhDaGFuZ2Vk 78189\nIHJhZGlhdG9y 78190\nYXNzaXN0YW50 78191\nJGZpZWxkcw== 78192\nCXN0ZXA= 78193\nIE1pdGdsaQ== 78194\nIEV2ZXJldHQ= 78195\nIFNjaGVkdWxlZA== 78196\nSG9yYQ== 78197\nIl0tPg== 78198\nIG1vdHM= 78199\nIERTVA== 78200\nZm9udE5hbWU= 78201\nIFdhcndpY2s= 78202\nX1Rhc2s= 78203\nKkM= 78204\n44On 78205\nb2JlbA== 78206\nX0RFVA== 78207\nIHNvY2lvbG9neQ== 78208\nIEthdHo= 78209\naWNpb25z 78210\nb3RsYW5k 78211\nYWRvbw== 78212\nX3BhcnM= 78213\nIHJpcHBpbmc= 78214\naWNobw== 78215\nIG51dHJpdGlvdXM= 78216\nCWRhbWFnZQ== 78217\nS3k= 78218\nIGFuY2hvcmVk 78219\nIGFydGlmaWNpYWxseQ== 78220\nIEp1dmVudHVz 78221\nL3Blcmw= 78222\nIGV4cHJlc3NpdmU= 78223\neEVF 78224\nIEVudW1lcmF0aW9u 78225\nLk1FU1NBR0U= 78226\nKGRlZw== 78227\n5b+X 78228\nIyMjIyMj 78229\nICIiKSw= 78230\na2zDpHI= 78231\nXE1haWw= 78232\nRGVzaWduZWQ= 78233\nIHN0YWZmZXI= 78234\nIHNhbHRz 78235\nKioqKioNCg== 78236\nIOKB 78237\nIHNldFRpdGxlQ29sb3I= 78238\nRFZE 78239\nLldyaXRlQWxs 78240\nZWxsYW50 78241\nIGNvZXJjaW9u 78242\nIFNvcnRpbmc= 78243\n6KiA 78244\nIHN0YXJ2YXRpb24= 78245\nLy97ew== 78246\nLmhlYXA= 78247\nIE1lZGlldmFs 78248\nICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 78249\n77yR77yQ 78250\nIHdhcmRz 78251\nIEhlcmM= 78252\nIEhvZ3dhcnRz 78253\nLWNvbW1lbnRz 78254\nIExhdWRlcmRhbGU= 78255\n5rw= 78256\nIHJpZnQ= 78257\nIHplaXQ= 78258\nIHByb29mcw== 78259\nLnZpZXdwb3J0 78260\nJHN0YXJ0 78261\nIEJvdWdodA== 78262\nLnJpY2hUZXh0Qm94 78263\nIGNsaW5n 78264\nICcqKg== 78265\nT3duZXJzaGlw 78266\nIEJvZWhuZXI= 78267\nKGR5bmFtaWM= 78268\nIG1lZGljYWxseQ== 78269\nIFdURg== 78270\nIE1haW5NZW51 78271\n6LSt 78272\nIGRpZmVyZW50ZQ== 78273\nL3Jlc3VsdHM= 78274\nZW50aGFs 78275\nIFdpZGdldHM= 78276\ncnVzaA== 78277\nIFJNUw== 78278\nIFZvbGxleQ== 78279\nIHJlbW92ZUZyb21TdXBlcnZpZXc= 78280\nIExhZmF5ZXR0ZQ== 78281\nIEZldGNoVHlwZQ== 78282\nYWNhcw== 78283\nIHBhdGhvZ2Vucw== 78284\nIE1NTw== 78285\nLkN1cnJlbmN5 78286\nb2Npb3Vz 78287\nIHNwcml0ZUJhdGNo 78288\nZG9sbA== 78289\nIHZhbXBpcmVz 78290\nbGF1bmNoZXI= 78291\nIHBlYWtlZA== 78292\nIGRlYnVuaw== 78293\nIEFTRA== 78294\nIHVuZXF1YWw= 78295\nIHNxdWFkcw== 78296\nfS4kew== 78297\nbWFuaQ== 78298\nIkU= 78299\nIEZhaHI= 78300\nIElTSQ== 78301\nIHVuYXZvaWQ= 78302\nb3Bob25l 78303\nWzpdCg== 78304\nIERpcmVjdGVk 78305\nIGJ1c2hlcw== 78306\nLmZhaWx1cmU= 78307\nIGltbWVyc2Vk 78308\nZXhv 78309\nSGlzdG9ncmFt 78310\nIEthbm4= 78311\nIHBpcmFjeQ== 78312\nIENydW5jaA== 78313\nIGzDpg== 78314\nLy8i 78315\nIG1vbm90 78316\nIFNhdW5kZXJz 78317\nIFNldmVudA== 78318\nKEFic3RyYWN0 78319\nIHNtb2tlcg== 78320\ncm9uZQ== 78321\nLmNsaWVudFk= 78322\nICItIiw= 78323\nIEZvdW50YWlu 78324\nIGlubmU= 78325\n7IOJ 78326\nQ3Ry 78327\nJGlucHV0 78328\nUFJPRklMRQ== 78329\nIERvbmF0aW9u 78330\nV2l0aEVtYWls 78331\nIGZyYWN0dXJlcw== 78332\nS2VlcGVy 78333\nIG1laXNqZXM= 78334\nIGFyY2hpdGVjdHVyZXM= 78335\nIEx1bmc= 78336\nJ2ltYWdl 78337\naGFybWE= 78338\nIGFiYW5kb25pbmc= 78339\nQUxMRUQ= 78340\nc3VidHlwZQ== 78341\ncmVpcmE= 78342\nIG1vc3M= 78343\nIFBhcnNvbnM= 78344\nYWtlZG93bg== 78345\nPW9iag== 78346\nIHN1Y2Vzcw== 78347\nIHdlYXJhYmxl 78348\n44Kn 78349\nIGFkdWx0aQ== 78350\nLnVt 78351\nIHZpYnJhdGlvbnM= 78352\nIHN3ZWxs 78353\nIERpc2Nsb3N1cmU= 78354\nIFJERA== 78355\ncGFpcnM= 78356\nYW5nZ2Fu 78357\nIG1haW5CdW5kbGU= 78358\nIERJTg== 78359\nIHJvY2tlZA== 78360\nc2hvdWxkQmU= 78361\nLmdi 78362\nIElNRA== 78363\nIFdO 78364\nLGFyZw== 78365\n4oCm4oCm4oCm4oCm4oCm4oCm4oCm4oCm 78366\nW109JA== 78367\nLlNN 78368\nIGFsZ3Vucw== 78369\nYWRkb25z 78370\nX0NvbW1vbg== 78371\nX1JFRlJFU0g= 78372\nINmB2Yo= 78373\nIFRZUE8= 78374\nIEVjb2xvZ3k= 78375\nIGdsdQ== 78376\nLkRhdGFUeXBl 78377\nIFByb2Jl 78378\nTHV4 78379\nb3dlZ28= 78380\nIHJlaw== 78381\nIFBsYWludGlmZg== 78382\nYWNoYWJsZQ== 78383\nLm5hbWE= 78384\nKm91dA== 78385\nfX17ew== 78386\nIENBUElUQUw= 78387\n5L2G 78388\nSW1wb3J0ZXI= 78389\nLmNyZWF0ZVNlcnZlcg== 78390\nX3Jlc29sdmU= 78391\nX0VQUw== 78392\nc3RlbGxhcg== 78393\nX1Byb2ZpbGU= 78394\nCXN3 78395\nLW1vbg== 78396\ndWRldg== 78397\nXFBsdWdpbg== 78398\nX01JWA== 78399\nIERpc2NyaW0= 78400\nLmZyb21MVFJC 78401\nIFN0cmFuZA== 78402\nQW55dGhpbmc= 78403\ncG93ZXJz 78404\nXV0NCg== 78405\nLlRJTQ== 78406\nIGFkZHNsYXNoZXM= 78407\nIGVzaQ== 78408\nQEJlZm9yZQ== 78409\nIHNhaw== 78410\nICcvJzsK 78411\nY29j 78412\nxZ/EsQ== 78413\nICkpOw0K 78414\nX2Fib3Zl 78415\nIEVDQw== 78416\nL2NwdQ== 78417\nIGNhZGU= 78418\nLlN0ZGVycg== 78419\nIHBlbGxldHM= 78420\nIFBhbGlu 78421\nIGfDqW4= 78422\nX2phdmE= 78423\nIHNhbGFo 78424\nIGJlcmdlbg== 78425\nX1NXQVA= 78426\nIGdpYg== 78427\nacOjbw== 78428\nX2Rpc3RhbmNlcw== 78429\nIENpbmRlcg== 78430\nIGFuYXJjaGlzdA== 78431\naW1hdA== 78432\nCW1vY2s= 78433\n44GX44G+44GZ 78434\nT21lZ2E= 78435\nIGJhaHdh 78436\nX1BhcnNl 78437\nLnBhcGVy 78438\nCUludGVudA== 78439\ncmVucw== 78440\nL2dyaWQ= 78441\nIGZpbHRoeQ== 78442\nLmV2 78443\nIyMjIyMK 78444\nIHNhcmU= 78445\nIHNvYWtpbmc= 78446\nIFJlZ2lvbnM= 78447\nX1VTRUQ= 78448\nIFNpaw== 78449\naWZpa2FzaQ== 78450\nCUVkaXRvcg== 78451\nTHVjaw== 78452\nIOyXsA== 78453\nxINt 78454\nLiI7 78455\nIFppZWw= 78456\nIGdyYXlzY2FsZQ== 78457\nKEZ1bmM= 78458\n44OB 78459\nLkRlbnNl 78460\nLWxlYW5pbmc= 78461\nIGdyYWNlZnVs 78462\nR3JhcGhOb2Rl 78463\nX0NPTU1JVA== 78464\nIENWUw== 78465\nIHBsYWlucw== 78466\nIHJlag== 78467\ncGNpb25lcw== 78468\nIHVuZGVybWluaW5n 78469\nX2NhdHM= 78470\nZmVi 78471\nQ29sbGVjdGlvblZpZXc= 78472\nU0VNQg== 78473\nIHRodQ== 78474\ndGV4dGJveA== 78475\nKEFuZHJvaWQ= 78476\nIHJpZ29y 78477\nIFlpZWxk 78478\nLmlzUGxheWluZw== 78479\nOnZpZXc= 78480\ncmVtYWluZGVy 78481\nIFBpcA== 78482\nKWluZGV4 78483\nIEJlY2tlcg== 78484\ndG9Mb2NhbGU= 78485\nYXV0b3JlbGVhc2U= 78486\nIFJvbWVybw== 78487\nLkhhbmRsZWQ= 78488\nIENhYmluZXRz 78489\nKVY= 78490\nIHJ0ZQ== 78491\nIEh1bHU= 78492\naWNpZWw= 78493\nL2FuaW1hdGlvbnM= 78494\nIHByZXN1bWU= 78495\nLnRyYW5zcGFyZW50 78496\nIHN1Ym1lbnU= 78497\ncW0= 78498\naWVydGVu 78499\nIHRleHRTaXpl 78500\nIHN0YXJ2aW5n 78501\nL2pvYg== 78502\nQXBhY2hl 78503\nIHlpZWxkaW5n 78504\nLWFydGljbGU= 78505\nJz0+JF8= 78506\nIOih 78507\nPFNwcml0ZVJlbmRlcmVy 78508\nIFNoaWE= 78509\nKToo 78510\nIHB1Ymxp 78511\nemllag== 78512\nIHRlbGVzYw== 78513\nIHRlaWw= 78514\nTGVnYWN5 78515\nIFBsYWNlbWVudA== 78516\nKCkpew== 78517\nIHRyb3VibGVzb21l 78518\n5pif 78519\nIHBlcnPDtm4= 78520\nX0FzcE5ldA== 78521\nPX0= 78522\nKHVzZXJJRA== 78523\nU3Vz 78524\n44K6 78525\nLWF2ZXJhZ2U= 78526\nIFFJbWFnZQ== 78527\nLlN0cmljdA== 78528\ndGVib3Jn 78529\nLWZ1bmN0aW9ucw== 78530\nUkVHSU9O 78531\nPk5ldw== 78532\nX2Nob29zZQ== 78533\nKGNp 78534\nIHVubGVhc2g= 78535\nIFJJR0hUUw== 78536\nIFNwZWFy 78537\nCW1ha2U= 78538\nIHR5cw== 78539\nYW5lbGE= 78540\nIFdY 78541\nX01BS0U= 78542\nL3NldHVw 78543\nIG9uU2F2ZQ== 78544\nIGNsaW5pY2lhbnM= 78545\nCWJhY2s= 78546\nLkxpbmtlZA== 78547\nIGNvbnNlcnZl 78548\nIGJpdHRlbg== 78549\nX3ZhcmlhbmNl 78550\nIGxpcmU= 78551\nIGluZXJ0aWE= 78552\ndWZmbGVz 78553\nX01QSQ== 78554\naWRkbGVz 78555\nW2Fycg== 78556\nLnZvY2Fi 78557\nIHNoaXR0eQ== 78558\nIG5lc3Rl 78559\nc3NpemU= 78560\nIEtU 78561\nYmxlcg== 78562\nX2xpbnV4 78563\nIG1vbmdvZGI= 78564\nIElURU1T 78565\nS29u 78566\nIEJ1cnN0 78567\nX3Bob3Rvcw== 78568\nQ29sb3JhZG8= 78569\nIGFja25vd2xlZGdtZW50 78570\nIG9pbHk= 78571\nIG5mcw== 78572\nIFppb25pc3Q= 78573\nIGFkZGljdHM= 78574\nIGFkZFVzZXI= 78575\nIE1pc2g= 78576\nIGtX 78577\nIFdhbnRz 78578\nKHJlY29yZHM= 78579\nb2N1cnJlbmN5 78580\nSlNHbG9iYWw= 78581\nLmVsYXBzZWQ= 78582\nIE5i 78583\nIHBwdA== 78584\nXERlcGVuZGVuY3k= 78585\nUm9s 78586\nIMOnYWzEscWf 78587\nIGV4cGFuc2lvbnM= 78588\nYnViYmxl 78589\nIG1pZHRlcm0= 78590\nICcjew== 78591\nY3R4dA== 78592\nSVN5bnRheEV4Y2VwdGlvbg== 78593\nIFZhbGxl 78594\nIENhZGlsbGFj 78595\nICIifSwK 78596\nIHNlbXVh 78597\ncmljaFRleHQ= 78598\nc29mdG1heA== 78599\nb2JqUEhQRXhjZWw= 78600\nLmhzdGFjaw== 78601\nX2NyaXRpY2Fs 78602\nKDw/ 78603\nZGo= 78604\nIGNvbnNvbg== 78605\nIHJvb21JZA== 78606\nRE9NQ29udGVudExvYWRlZA== 78607\ncGFybXM= 78608\nIHplaWd0 78609\nVFBM 78610\nLW5vdGNo 78611\nIG9wcHJlc3NpdmU= 78612\nQ29kaW5n 78613\nIExlYXZlcw== 78614\nKERpc3BsYXk= 78615\nLnNpZ25Jbg== 78616\nLy8tLQ== 78617\nIE9wcg== 78618\nY3Rh 78619\nIG1ldGF2 78620\nU2VyaWFsaXplZA== 78621\nIHVuYWZmZWN0ZWQ= 78622\nIEFUTA== 78623\nIEtQ 78624\nQXRsYW50aWM= 78625\nLHVybA== 78626\nLHN0YXRl 78627\nIGJpc3Q= 78628\nZW5lZw== 78629\nIHNpbXBsaXN0aWM= 78630\nIGJpZGRlcg== 78631\nIHBlcmNlcHQ= 78632\nIGNlbGli 78633\nIFRIUk9X 78634\nKC9b 78635\nVGNw 78636\nIGZ1cnRoZXJtb3Jl 78637\nLkFjYw== 78638\nb3BwYWJsZQ== 78639\n5Lik 78640\nIFRhcnQ= 78641\nIEJlbno= 78642\nIGVtYm9kaWVk 78643\nKENvbnN0 78644\nICst 78645\nUGFydGljaXBhbnRz 78646\nIGh0dHBSZXF1ZXN0 78647\nYWNjZW50 78648\nIFPDvA== 78649\nIGhvcnJpZnlpbmc= 78650\nIC8+LA== 78651\nIGVuYWN0bWVudA== 78652\nIFVOSU9O 78653\nL2xvZ3M= 78654\nIHNjcmVlbkhlaWdodA== 78655\nIGV0d2E= 78656\n5L6L5aaC 78657\nIGHDum4= 78658\n5bem 78659\nX3RpbWVsaW5l 78660\nICIiKSkK 78661\nJzonJw== 78662\nQlc= 78663\nIHJlbm92YXRpb25z 78664\nIDwK 78665\nUGFsZQ== 78666\nPjo8Lw== 78667\nU2tlbGV0b24= 78668\nIGdldFVzZXJz 78669\nX2RhdGFmcmFtZQ== 78670\nYWJy 78671\nbWF0ZXJpYWxz 78672\nJmVhY3V0ZQ== 78673\nLkRpc3BsYXlOYW1l 78674\nIGh2aXM= 78675\nX2xhbmd1YWdlcw== 78676\nLnN5 78677\ndG93ZXI= 78678\nSUZJQ0FUSU9OUw== 78679\nIGJhcnJpYw== 78680\nIFBsdXRv 78681\nYDs= 78682\n44OL 78683\nY2VudGU= 78684\nI2Fi 78685\nIGxleGljYWw= 78686\nIEJSTw== 78687\nIHJ1bGluZ3M= 78688\nSEVZ 78689\nLmlPUw== 78690\ncmV0dXJuZWQ= 78691\nLmJvb2tz 78692\nIEh1YmI= 78693\nZW9m 78694\nPj46Og== 78695\nIOyG 78696\nIGdvVG8= 78697\n6ICD 78698\n44Go44GG 78699\nPEZvcm0= 78700\nY29waWVz 78701\nLnF1YW50 78702\nIFBvdGF0bw== 78703\nIENvdXNpbnM= 78704\nIHPDuw== 78705\nR292ZXJu 78706\nIGdhbGVy 78707\nIEZJUg== 78708\nX1dpZHRo 78709\nIFNoZWxkb24= 78710\nLkRldg== 78711\nIFJlc3BvbnNpYmlsaXR5 78712\nc29uaWFu 78713\nIHN1cGVyY2xhc3M= 78714\nYml0c2V0 78715\nZWRkYXI= 78716\nIExhYm9yYXRvcmllcw== 78717\nIGNvaW5lZA== 78718\nIFRlY2huaXF1ZQ== 78719\nKENvcmU= 78720\nIHNwcmF5ZWQ= 78721\nIHBvbmc= 78722\nKE5ldHdvcms= 78723\nIHJvYXI= 78724\nIEVBU1Q= 78725\nc3RyYWlu 78726\nIG1lbnN0cnVhbA== 78727\nb21iYXQ= 78728\nIGNhbG1pbmc= 78729\nCURpbQ== 78730\nX21vdmllcw== 78731\nIFJBSUQ= 78732\nLWRpc21pc3NpYmxl 78733\nIGZyZXVuZA== 78734\nLWNoYW4= 78735\nIHJlc2lzdG9y 78736\nX0NvcHk= 78737\nb2NyaW5l 78738\nIGVzcGlvbmFnZQ== 78739\nZ2Fkbw== 78740\nTkRBUg== 78741\nIHBvcmNlbGFpbg== 78742\ndGhhbG0= 78743\nIGBb 78744\nIGdyYWRv 78745\n0LjRgA== 78746\nRE9VQkxF 78747\nIGFjY2Vzc2Vz 78748\nLkZsb29y 78749\nIOKGlA== 78750\nIHRva2VuaXpl 78751\nYW5hbHl0aWNz 78752\nLkNyZWF0ZUluc3RhbmNl 78753\nIHN1Y2hl 78754\nCWVudA== 78755\naWduZXI= 78756\nINC/0LXRgNC10LQ= 78757\nIGNvbmRpY2lvbmVz 78758\nLmxpYnM= 78759\nIic7 78760\nUERPRXhjZXB0aW9u 78761\nIG9uRGF0YQ== 78762\nIEF1dGlzbQ== 78763\nLWhlbHBlcg== 78764\nIHJld2luZA== 78765\nIGNvZmZpbg== 78766\n44O844K4 78767\nIHRyYW5zbWl0dGluZw== 78768\nLnNldEFsaWdubWVudA== 78769\nIGRlYWxsb2M= 78770\nIGFuY2VzdHJhbA== 78771\nb2dpZQ== 78772\nLkNPTVA= 78773\nOmZyYW1l 78774\nbW1v 78775\nJzoi 78776\nIFJlZ2VudHM= 78777\nIGNoZWF0ZWQ= 78778\nLmdn 78779\nIHBhY2Vk 78780\nIGVzdGFk 78781\nb2NlbmU= 78782\nbHNh 78783\nKGZj 78784\nL2dyb3Vwcw== 78785\nL21pc2M= 78786\nIFNodXR0bGU= 78787\nVVBJ 78788\nw6Fv 78789\nLWN5Y2xl 78790\nCXByb3Bz 78791\nIHJvdHRlbg== 78792\nUmVqZWN0ZWQ= 78793\nI2Fj 78794\nLnVh 78795\nIEFtbmVzdHk= 78796\nIHBlbm5lZA== 78797\nSU5DUkVNRU5U 78798\nPGRpbQ== 78799\nLnNldFVw 78800\nIFR3ZWV0cw== 78801\nIE1hZHVybw== 78802\nINmC 78803\nIENBY3RpdmU= 78804\nCUJZVEU= 78805\nKHNlcGFyYXRvcg== 78806\nLlJlc2l6ZQ== 78807\ndWZmbWFu 78808\nc3VwcG9ydHM= 78809\nIHVyYg== 78810\nIEZvdW5kZWQ= 78811\nX2hhcmQ= 78812\nIGVjbGVjdGlj 78813\nLkZpbHRlcnM= 78814\nIFJvdW5kZWRSZWN0YW5nbGU= 78815\nX3NhbXBsaW5n 78816\nIEpldHp0 78817\nYW1lcmljYW4= 78818\nLmludm9rZUxhdGVy 78819\nIEJ1dHRlcmZseQ== 78820\nKGNvbm5lY3Rpb25TdHJpbmc= 78821\nIE5hb21p 78822\nIEphaW1l 78823\ncnRz 78824\nIG1hZ2ljYWxseQ== 78825\nLm1hY2hpbmU= 78826\nIEFwcGFsYWNo 78827\nIisi 78828\ndmFsZQ== 78829\nLW1vdW50ZWQ= 78830\nIGFjaGU= 78831\nTUo= 78832\nIFVJSW1hZ2VQaWNrZXJDb250cm9sbGVy 78833\nLUp1bg== 78834\nTWFuYQ== 78835\na3JhaW5l 78836\nRENG 78837\nL1Byb2R1Y3Q= 78838\nIFJFU0VSVkVE 78839\nIEZIQQ== 78840\nOkAiJUAiLA== 78841\nIFByb2pla3Q= 78842\nIE5pcg== 78843\nIENhcm5pdmFs 78844\nICom 78845\nIFFT 78846\nV0hP 78847\nIHdlbHQ= 78848\nIG1hcnJ5aW5n 78849\nQWxleGFuZGVy 78850\nIFJldmlld2Vk 78851\nYWN0ZXJpYQ== 78852\nIHdhbg== 78853\nKHJvYm90 78854\nIFdpbmRvd01hbmFnZXI= 78855\nIG1vbnVtZW50YWw= 78856\nIERvbWluZw== 78857\nL3dlYXRoZXI= 78858\nX3NlY29uZGFyeQ== 78859\nT3BlcmF0b3Jz 78860\nX1NJREU= 78861\nS2F0 78862\nLXpvbmU= 78863\nIHNpZ25pZmllcw== 78864\nIEh0dHBNZXRob2Q= 78865\nL2NvbnRleHQ= 78866\nIg0KDQoNCg== 78867\nIFJvZHJpZ28= 78868\nIGJ1Yg== 78869\nL211c2lj 78870\nIHNlcm9udA== 78871\nIG1STkE= 78872\nX2VtYWlscw== 78873\nICc+Jw== 78874\nIEdlbWU= 78875\nINGA0LDRgQ== 78876\nIH5+ 78877\nIGR1Y2tz 78878\nIEZyZXVuZA== 78879\nRXhwZXJpbWVudA== 78880\nIHJlb3BlbmVk 78881\nIFwiew== 78882\nIGVsbGlwdA== 78883\nIGNvbmNhdGVuYXRl 78884\nIHBvbG8= 78885\nVGltZVpvbmU= 78886\nICAKICAgIAo= 78887\nIGNhcHRpb25z 78888\ncmlja3M= 78889\nLmZyZXE= 78890\nLm1lbW8= 78891\nIHNtYg== 78892\nRHJ1Zw== 78893\nXVsv 78894\nX0JBQ0tFTkQ= 78895\nIEVsbGE= 78896\nIFBvcnRpb25z 78897\nIGZldGNoRGF0YQ== 78898\nIGNvcm91dGluZQ== 78899\nIGVzdGF2YQ== 78900\nIEdlbml1cw== 78901\nOmB+ 78902\nIFN3YW5zZWE= 78903\nKHBheW1lbnQ= 78904\nVm90cmU= 78905\nIFBydWl0dA== 78906\nLm9mZnNldFdpZHRo 78907\nYXJ5bA== 78908\nIHVuaWZvcm1seQ== 78909\nIFdhcnA= 78910\nIFNFQQ== 78911\nIGRlZHVjdGlibGU= 78912\nIGJ1bGxpZWQ= 78913\nIEJlc2No 78914\nIFByb3NwZWN0 78915\nT1NQ 78916\nIlllYWg= 78917\nIEFuZ3J5 78918\nLlZhbA== 78919\nIGdpZ3M= 78920\nIGJ1bGt5 78921\nZXRlcmlh 78922\nLmdldFN0YXJ0 78923\nIE1FVEg= 78924\nIGNvaGVyZW5jZQ== 78925\nIG1lZGlhdGVk 78926\n0LXQs9C40YHRgg== 78927\nLi4uLgo= 78928\nIHN0cm9rZUxpbmU= 78929\nbWo= 78930\nIFVuc3VyZQ== 78931\nYXRocm9vbQ== 78932\nKEJpbmFyeQ== 78933\nX0tleVByZXNz 78934\n5p6E 78935\naW5oZXJpdHM= 78936\nIHJlcHJlaA== 78937\nCVNjaGVtYQ== 78938\nIHVucmVzdHJpY3RlZA== 78939\nLmRlZmluaXRpb24= 78940\nXT8u 78941\nIGl0aA== 78942\n5aCx 78943\nIHNsaW1l 78944\nbXNncw== 78945\nX0pT 78946\nCVZlcnNpb24= 78947\nX1NFQ1VSRQ== 78948\nIGNvc3Rv 78949\nLlJlc3Ry 78950\nY3Ny 78951\nX1RPT0xUSVA= 78952\ncGNs 78953\nIOKGkw== 78954\nU2VsZlBlcm1pc3Npb24= 78955\nLnJhdmVs 78956\nIG1lbWJyZXM= 78957\nQXNzZW1ibGVy 78958\ncm9taXVt 78959\nc3VyZg== 78960\nIFVQREFURUQ= 78961\nKGJyYW5jaA== 78962\nKGluY2x1ZGU= 78963\nIElkb2w= 78964\nXE9iamVjdA== 78965\nIGNsb25pbmc= 78966\nIGlzTmFO 78967\nIGFueg== 78968\nxrDhu51uZw== 78969\nIG9uYw== 78970\nX0NMVVNURVI= 78971\nIHt9KSwK 78972\naW1pbmFyeQ== 78973\nCWNvbnRlbnRQYW5l 78974\ndHJhaWw= 78975\nIG5pbmV0eQ== 78976\nIE5pYWdhcmE= 78977\nIEFuZHI= 78978\nw6lzeg== 78979\nIGRpZmlj 78980\ndXRyYQ== 78981\nJ319Pg== 78982\n44Kk44OI 78983\nc3Bhcg== 78984\nICJcIiw= 78985\nIG15ZmlsZQ== 78986\nZmZj 78987\nIG5vdGljZWFibHk= 78988\nZXlh 78989\nIFB1dHRpbmc= 78990\nSlY= 78991\nLmRpbWVuc2lvbnM= 78992\nZXJjYQ== 78993\nZ2VuZXNpcw== 78994\nZWZmZWN0aXZl 78995\nIHBlcmRlcg== 78996\nLk9S 78997\nX0NPTVBBUkU= 78998\nOmxlbg== 78999\nL3JlZA== 79000\nIEFyaXN0b3RsZQ== 79001\nIHF1ZXJpZWQ= 79002\nIGZvcmVzZWVhYmxl 79003\nIFVJQ29udHJvbA== 79004\ncmVtaW5kZXI= 79005\nIGNlbmE= 79006\nIGhpYw== 79007\nICIiOw0KDQo= 79008\nL2Jhc2lj 79009\nIGFmZm9yZGFiaWxpdHk= 79010\nLGVycg== 79011\nINGB0LjQvNCy 79012\nIElTUg== 79013\nbGljZW5zZXM= 79014\nVk9JQ0U= 79015\nLkxhbmc= 79016\nLnJlbGF0aW9uc2hpcA== 79017\nIGxlbmRz 79018\nIG51dHplbg== 79019\nIGVzcGVjw61m 79020\naWVuZGE= 79021\nPFBhaXI= 79022\nVHY= 79023\nX1JFVFJZ 79024\nIGhvbm9yaW5n 79025\nX2RlY2xhcmF0aW9u 79026\nKE5P 79027\nIEhpY2s= 79028\nIG1pbmxlbmd0aA== 79029\nIEdlc2NoaWNodGU= 79030\nYXBlc2g= 79031\nQVRPTQ== 79032\nJykiKTsK 79033\nZW50ZXJwcmlzZQ== 79034\nPn08Lw== 79035\nIHBvbGl0aXF1ZQ== 79036\nZWRpdGlvbg== 79037\nX0RlYnVn 79038\nQW5uZQ== 79039\nLlNjb3Bl 79040\nY3Rw 79041\nY2Fub25pY2Fs 79042\nPj47Cg== 79043\nTWVudXM= 79044\nIGZpZXJjZWx5 79045\nLk9uY2U= 79046\nIEJvcnJvdw== 79047\nIHNvc3Q= 79048\nIHNlcnZpbmdz 79049\nLWZsYWc= 79050\nIHZlc3RlZA== 79051\nIGZyb24= 79052\n7ZWo 79053\nIGZhbWluZQ== 79054\nIl0pKXsK 79055\nZXJlw6dv 79056\nIGtpamtlbg== 79057\nIEZsb29yaW5n 79058\n55CD 79059\nb2JzZXJ2YXRpb24= 79060\nIHVzZXJEYW8= 79061\nPSIiPg0K 79062\nQ09WSUQ= 79063\nYmFieQ== 79064\nIHRyb3VnaA== 79065\nIFNlYW0= 79066\nIEZpZ2h0ZXJz 79067\nb21pdA== 79068\nIENoYXJnZXM= 79069\nUnVzcw== 79070\nIHF1ZWxxdWU= 79071\nR2V0UG9zaXRpb24= 79072\nIE1pbmlzdGVycw== 79073\nX3JlY2VpcHQ= 79074\nIHJvb3ROb2Rl 79075\nbXVsdGlw 79076\nJHNlYXJjaA== 79077\nIikpKSkK 79078\ndGFrZXM= 79079\nICghIQ== 79080\nIEJBVA== 79081\nY2hhbmc= 79082\nxJM= 79083\nLm9j 79084\nIHNraWxsZXQ= 79085\nIFNLVQ== 79086\nIEdhbGxhZ2hlcg== 79087\nIGNyZXNj 79088\nd2Vla2RheQ== 79089\nZXJ2aXNlZA== 79090\nQ2FyZENvbnRlbnQ= 79091\nLmFjY2Vs 79092\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK 79093\nVGFp 79094\nIENvbXBhdGliaWxpdHk= 79095\neENG 79096\nX3Jld2FyZHM= 79097\ncmRm 79098\nQVBQTEU= 79099\nLWZlZA== 79100\nIGRlcGVuZGVk 79101\nLWdlbmVyYXRvcg== 79102\nKFByb2Nlc3M= 79103\n0LzQvtC2 79104\nIGRpc2NyZXBhbmN5 79105\nIHBob3NwaGF0ZQ== 79106\nTmV0d29ya2luZw== 79107\n6K6+6K6h5Zmo 79108\nKHJv 79109\nIGNvbmN1cnJlbmN5 79110\nCWF1dGg= 79111\nUGx1Zw== 79112\nQVRBTE9H 79113\nc3Viag== 79114\nL3RlYW0= 79115\nKGF2Zw== 79116\nb2tpbg== 79117\nIHBsZWRnZXM= 79118\nIGNvbGxhYm9yYXRvcnM= 79119\nIGVtYmFya2Vk 79120\nIERvY2g= 79121\nIERhaXJ5 79122\nY29tcGV0aXRpb24= 79123\nIE11dGFibGVMaXN0 79124\nLXNldmVu 79125\nIGNvbmN1cnJlbnRseQ== 79126\nIFZpag== 79127\nIHJlc2V0dGluZw== 79128\nZHBp 79129\nIHNsaXQ= 79130\nIFBPSU5URVI= 79131\nIENBUlQ= 79132\nLmRleA== 79133\nY3Vsb3M= 79134\nX3BlcnNvbmFs 79135\nIGFuYWx5dGlj 79136\nI2NyZWF0ZQ== 79137\nX21lbWNweQ== 79138\nKExpc3ROb2Rl 79139\nX1RhZw== 79140\nIElycg== 79141\nIj4nOw0K 79142\nU2hvcnRseQ== 79143\nLnRpcA== 79144\nXFs= 79145\nIFJlcHJlc2VudGF0aW9u 79146\nX0xJVEVSQUw= 79147\nLmNibw== 79148\nIEthcm5hdGFrYQ== 79149\nIENvbXBldGl0aXZl 79150\nIFJ1ZQ== 79151\nIHJ1bm9mZg== 79152\nIFNwZWxscw== 79153\nZmNsb3Nl 79154\nY2lz 79155\nRnJh 79156\nIHJlbW9yc2U= 79157\nIENvbG9nbmU= 79158\nIHJhbmdlcg== 79159\nIE1vcmc= 79160\nZmlnaHRlcnM= 79161\nLlJlcXVlc3RQYXJhbQ== 79162\nQ29ycw== 79163\nIGRlbm90ZQ== 79164\nIGNob3Nlcw== 79165\nw6JuZA== 79166\nLnJlY3ljbGU= 79167\nIExvZ2lzdGlj 79168\nIERFQUQ= 79169\nLWxvYWRlZA== 79170\nIENsZWFycw== 79171\nIGtlbGw= 79172\ncmFwaGlj 79173\nIE1hbmU= 79174\nRU1CRVI= 79175\nIG1hc2tpbmc= 79176\nCWVkaXRvcg== 79177\nSGFsbG8= 79178\nOmxpc3Q= 79179\nIGV0aG4= 79180\nLXNlYXQ= 79181\nICopWw== 79182\nIEdseQ== 79183\nIEFDUw== 79184\nCXN0YXQ= 79185\nL0NvbW1vbg== 79186\nIGRpc2d1aXNlZA== 79187\nRmluYW5jZQ== 79188\nIEVsZXBoYW50 79189\ndGVtcG9yYXJ5 79190\nIENhcmx5 79191\nIGNvY29z 79192\nIEp1ZGl0aA== 79193\nIHdyYXBwZXJz 79194\nIEx1bmFy 79195\nIHLDqWN1cA== 79196\nLXNldHVw 79197\nIHNpemFibGU= 79198\nICAJIA== 79199\nY2xhc3NpZmllcg== 79200\nIGZpZ3NpemU= 79201\nIG1hc3R1cg== 79202\nIOabtOaWsA== 79203\nIFJ3YW5kYQ== 79204\nKXQ= 79205\nIEN1cHM= 79206\nQXp1cmU= 79207\nKCl9LAo= 79208\nU1BBUkVOVA== 79209\nKGRpYw== 79210\nIFRleHRGb3JtRmllbGQ= 79211\nIGRlZm9ybQ== 79212\nIGRpcmVjY2nDs24= 79213\nIHlheg== 79214\nIGdsdWVk 79215\nIGF0cmF2w6lz 79216\nY29mZmVl 79217\nIFVwZGF0aW5n 79218\nIENvbGxlZ2Vz 79219\nw6RsbHQ= 79220\nYW5kZWxpZXI= 79221\nIHNhbGly 79222\nIFNDQUxF 79223\ncWU= 79224\n6rO1 79225\nKHJlY2VpdmVy 79226\nbWRi 79227\nIm1hdGg= 79228\naXNuYW4= 79229\ndGVsZWZvbmU= 79230\nUkVQT1JU 79231\nLmFkZE1vdXNlTGlzdGVuZXI= 79232\nZHVlZA== 79233\ne31d 79234\nKCkpOg== 79235\nIHdvcmtpbmdz 79236\nfSk7CgoKCg== 79237\nIGNvbXBvbmVudFdpbGxNb3VudA== 79238\nU2VydmVycw== 79239\nX0NMT1NFRA== 79240\nSVpFUg== 79241\nIGJvb2I= 79242\nIENPTkNBVA== 79243\nIEhhcHBpbmVzcw== 79244\nIGNvbW11bmU= 79245\neEFC 79246\nb3duZXJzaGlw 79247\nX05FQVI= 79248\nX0hBUkQ= 79249\nIFlB 79250\nbGlvbg== 79251\nIHNwaWVs 79252\nIHRhZ2dpbmc= 79253\nIGltbW9yYWw= 79254\nLWdyb3VuZA== 79255\nIHRodW5r 79256\nIGxvY3Vz 79257\nIExhdHZpYQ== 79258\naXppb25p 79259\nY2xhcnNpbXA= 79260\nIHBhdGllbnRseQ== 79261\nXEhhcw== 79262\nIHN1Ym9yZGluYXRl 79263\nIFdISUNI 79264\nZW50aW9uUG9saWN5 79265\nIGRlcGxldGVk 79266\nRlNJWkU= 79267\nIFss 79268\nIEJpb2dyYXBoeQ== 79269\nIFNhbmRz 79270\nU0hBUkU= 79271\nQ2hhcnNldA== 79272\nLndyaXQ= 79273\nX1NVUw== 79274\nIE1vcmVubw== 79275\nIGJyb2Njb2xp 79276\nIFZY 79277\nYW1pY3M= 79278\nLkdldFVzZXI= 79279\nIENvbW1vZA== 79280\nLnNjaGVtZQ== 79281\nKHZz 79282\nIGFuYWxvZ291cw== 79283\nUHN5 79284\nPWxpbmU= 79285\nLnB1Ymxpc2hlcg== 79286\nIG9ud2FyZA== 79287\n0LXQutGB 79288\nIERlYWxlcnM= 79289\nIHRvQXJyYXk= 79290\nIENob2ljZXM= 79291\n0JTQvtCx0LDQsg== 79292\nIGRlZmF1bHRNZXNzYWdl 79293\nIGFncmVn 79294\nIENvbmNhdA== 79295\nSFY= 79296\nIENpcmN1bGFyUHJvZ3Jlc3M= 79297\nX3N2Yw== 79298\nVEFC 79299\nX2ZpbA== 79300\nLk1hcFBhdGg= 79301\nemJ1cmc= 79302\nIGdldFByb2R1Y3Q= 79303\nIFZFUklGWQ== 79304\nLk1vbmdv 79305\nIHB1bmRpdHM= 79306\ncHVsc2U= 79307\nbGljdGluZw== 79308\nZ2lhdGFu 79309\nIC4uLiI= 79310\nIGZpeg== 79311\nIGFudGlt 79312\nIENoYXR0 79313\nX1RZUEVERUY= 79314\nR3V5 79315\nCXRlc3Rz 79316\nIFNsb3Zlbmlh 79317\nIENvbW1hbmRMaW5l 79318\nIGJlbmVmaWNpYXRpb24= 79319\nIGJpbmRBY3Rpb25DcmVhdG9ycw== 79320\nTlRBWA== 79321\nLUNz 79322\nIGNoYXJpc21hdGlj 79323\nLmFsbG9j 79324\nX25m 79325\nIGFzc2F1bHRpbmc= 79326\nINGC0LDQsdC70LjRhg== 79327\nIGPDoWM= 79328\nIFNjcm9sbHM= 79329\nSEFT 79330\neXl5eU1NZGQ= 79331\nIEdhbGU= 79332\nIFByb3plbnQ= 79333\nIFRob3JudG9u 79334\nZGVhbGVy 79335\nIGV2aWN0aW9u 79336\nIGFuYWxl 79337\n4oCO 79338\nPSIo 79339\nIGVhZw== 79340\nKCcnKTsKCg== 79341\nIGNvbnRlbXBsYXRpbmc= 79342\naHlw 79343\nYmVsdW0= 79344\nIEZpdHM= 79345\nIEV4YW1pbmVy 79346\nIEJ1Y2M= 79347\nIG1lbWJyYW5lcw== 79348\nIGJyaWxsaWFudGx5 79349\nIENlcmFtaWM= 79350\nw6h2ZQ== 79351\nIFBvdW5k 79352\nIHRyZWFzdXJ5 79353\nLicpOw0K 79354\nCXRj 79355\nZWNha2U= 79356\nQ3VycmVudFVzZXI= 79357\nLmhhYmJv 79358\nIHRyZWFzb24= 79359\nIEZUQw== 79360\nTVVY 79361\nIG51bWJlcmluZw== 79362\nUklB 79363\nLS0pDQo= 79364\nIGJlaWdl 79365\nIEFydGVt 79366\nYmFzZXM= 79367\nX0JBTkQ= 79368\nIFBhdmVs 79369\n0YHRgtGA0YPQug== 79370\ndGhlZA== 79371\nX25icg== 79372\nINCx0LDQtw== 79373\nc2xpZGVVcA== 79374\nIFRheGk= 79375\nIGFxdWVs 79376\nIE1pc2NlbGxhbmVvdXM= 79377\nZWx1 79378\nIGluc3VsYXRlZA== 79379\nIGFzc2V6 79380\nLkNvbmZpZ3VyZQ== 79381\nIHF1ZWxsYQ== 79382\nIHBhcmFzaXRlcw== 79383\nQXdheQ== 79384\nZHVjaWJsZQ== 79385\nKCc9Jw== 79386\nIHZlcm8= 79387\nIFdhdGtpbnM= 79388\nIFNlcGFyYXRvcg== 79389\nYXBzZXM= 79390\nZW52aXJvbm1lbnRz 79391\nIGFwcHJhaXNhbA== 79392\ncGF1c2Vk 79393\nX2RlYXRo 79394\nIHNpdHVhY2nDs24= 79395\nIGZyYXRlcm5pdHk= 79396\nIGluc2lzdGVuY2U= 79397\nX2NyeXB0bw== 79398\nQXR0cmliUG9pbnRlcg== 79399\nIl1dLAo= 79400\nIG94aWRhdGl2ZQ== 79401\nIG5ldXJvbmFs 79402\nIFFHcmFwaGljcw== 79403\nIj4nLA== 79404\nIFNtaWxl 79405\nT2JqZWN0aXZl 79406\nIFNha3VyYQ== 79407\nWk8= 79408\nYW1pZW50b3M= 79409\nLkxvY2FsRGF0ZVRpbWU= 79410\nL3VuaXQ= 79411\nLWZyZXF1ZW5jeQ== 79412\nLUNT 79413\nIn07Cgo= 79414\nIHJlbGV2 79415\nQWxsb2NhdGlvbg== 79416\nJU0= 79417\nIER1c3Rpbg== 79418\nIHN3aXBlcg== 79419\nIE5hcmM= 79420\ndGF0dXM= 79421\nIGxvbmdpbmc= 79422\nIHRodWlzb250dmFuZ3N0 79423\nIGNvbW1vZG8= 79424\nIEFEQQ== 79425\naW11 79426\nX2ZvcnVt 79427\nYW5naQ== 79428\nCUFwcGxpY2F0aW9u 79429\nW2Zyb20= 79430\nIEJldGhlc2Rh 79431\nb3Ryb3BpYw== 79432\nIE1VQ0g= 79433\nIHByZWRpYw== 79434\nZmlsbWU= 79435\nKGdyYW1tYXI= 79436\nKEFQUA== 79437\nIEN1cmw= 79438\nIHNob3J0aGFuZA== 79439\nYWZmaWxpYXRl 79440\nXSoq 79441\nX250aA== 79442\naWFiaWxpdHk= 79443\nYm9tYg== 79444\nWVQ= 79445\nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 79446\nIEJpY3ljbGU= 79447\naW1hdGluZw== 79448\nLm5paQ== 79449\nIEthcmE= 79450\nYXNrYW4= 79451\ncmVhY3RzdHJhcA== 79452\nIHdsYW4= 79453\nb2dyYXBoZXJz 79454\nCSANCg== 79455\ncGFnaW5hdG9y 79456\naWhhbm5h 79457\nIG1hdGNodXBz 79458\nX1BBRERJTkc= 79459\nX3JlZ2lzdGVycw== 79460\neXRl 79461\nIHByaWNleQ== 79462\nIGZvb3Ro 79463\nIEh1Y2s= 79464\nUEFSVE1FTlQ= 79465\nIHByb2hpYml0aW5n 79466\nLmlzRGVidWdFbmFibGVk 79467\n4KS4 79468\nbGVpbg== 79469\nPXJlcw== 79470\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 79471\nZGRs 79472\nbXBy 79473\nIOqwmQ== 79474\nIFdBTEw= 79475\nIHJldm9sdmVz 79476\nIFBFUkY= 79477\nKTt9 79478\nIFRvYnk= 79479\nLy4uLw== 79480\nIGthbw== 79481\nIGZvcmVjYXN0aW5n 79482\nX0NvbnRlbnQ= 79483\nIH0pKSwK 79484\ncG9ybm8= 79485\nbGVhZGVycw== 79486\nLWhvb2tz 79487\naXN0cmlidXRvcg== 79488\nL3N0b3J5 79489\nCWxpbmVz 79490\nLXJlcGx5 79491\nIGFkcmVuYWxpbmU= 79492\nRmxvd0xheW91dA== 79493\nLnJvdXRpbmc= 79494\nCXRpbWVvdXQ= 79495\nIHJhaWRlZA== 79496\nCURE 79497\nIGRpc2RhaW4= 79498\nY29uc2lzdGVudA== 79499\nZ2Vpc3Q= 79500\nKCI6Lw== 79501\nKHN0YXRlcw== 79502\nIEhJVA== 79503\nLVJheQ== 79504\nLWhlYWx0aA== 79505\nIC8vLQ== 79506\ndGVtZW50 79507\nLm5hdmlnYXRlVG8= 79508\nIGJlbmNoZXM= 79509\nZXdpbmc= 79510\nZW56aGVu 79511\nLXNwbGl0 79512\nUmVqZWN0 79513\nIHB5bGFi 79514\nIGZsYXNobGlnaHQ= 79515\nIGluaXRpYXRpbmc= 79516\nIE9FQ0Q= 79517\nIGVudHJlZ2E= 79518\nTmF0dXJl 79519\nLm9yYW5nZQ== 79520\nIMO6bHRpbW9z 79521\nIGVjcw== 79522\nLmhvdmVy 79523\nIGRlbHV4ZQ== 79524\nUm9nZXI= 79525\nIFRpYw== 79526\nIixfXw== 79527\nIHBsYWNlaG9sZGVycw== 79528\nIHNwYXduaW5n 79529\nIG51cnR1cmU= 79530\nIGV4Y2hhbmdpbmc= 79531\nQ3JlYXRlRGF0ZQ== 79532\nIGxhbWlu 79533\nIFNlbWljb25kdWN0b3I= 79534\nICovCgoKCg== 79535\nIGbDuHJzdGU= 79536\nIGluaXRpYWxz 79537\nIHByb3ZlcmI= 79538\nIEFjdHJlc3M= 79539\nQ29uY2F0 79540\nIE5pY29sYQ== 79541\nLXNob3BwaW5n 79542\naXZpdMOg 79543\naXRpYW4= 79544\nIFdlcnQ= 79545\nLkFkZFNjb3BlZA== 79546\nIHNhbGVzbWFu 79547\nYm9z 79548\nIEZlcnJ5 79549\nQ0VOVEVS 79550\nbW9kZWxv 79551\nIFJvZQ== 79552\nIElzbGFuZGVycw== 79553\ndXBlcnRpbm8= 79554\nRGVjbGFyZQ== 79555\nIHZvd2Vscw== 79556\nIGJveGVy 79557\nKHRvb2xiYXI= 79558\nIGhhbGZ0aW1l 79559\nbmlu 79560\nIEJyb29rZQ== 79561\nIFZlcw== 79562\n0LvQsNGC 79563\nIG1vdGl2bw== 79564\ncHJvdGVpbg== 79565\na3Vz 79566\nYnVzeQ== 79567\nIHN0cmluZ1ZhbHVl 79568\nCU15 79569\nTnV0 79570\ndXp6aQ== 79571\nIHNleg== 79572\nIG9sZHM= 79573\nIG1ldGh5bA== 79574\nIGLDvA== 79575\naGliYQ== 79576\nIEluc3BpcmF0aW9u 79577\nIGF3YWl0ZWQ= 79578\nQnJ1Y2U= 79579\nQkFMTA== 79580\nIFRSWQ== 79581\nLWxpdGU= 79582\nIHVuZGVyZXN0aW1hdGU= 79583\nCXJ2 79584\nLm1vdg== 79585\nIGhpc3TDsw== 79586\nIEVyaWU= 79587\nY25hbWU= 79588\nL2Nvbm5lY3Q= 79589\nY29uZmVyZW5jZQ== 79590\nX3RyYWl0 79591\nIGt2aW5kZQ== 79592\nIEludm9jYXRpb24= 79593\nIERhdGVUaW1lT2Zmc2V0 79594\nd2VjaGF0 79595\nQ0VP 79596\nIExpYnlhbg== 79597\nLmNhcGl0YWxpemU= 79598\nIGdyYWNlZnVsbHk= 79599\nIHJlZWxz 79600\naW5jcmVhc2U= 79601\nLm1heGNkbg== 79602\nZmF2b3JpdGVz 79603\nSVRFRA== 79604\nPFNjYWxhcg== 79605\nLkZldGNo 79606\nIHN1c3BpY2lvbnM= 79607\nW01BWE4= 79608\nX1RSQU5TQUNUSU9O 79609\nIGN5bGluZHJpY2Fs 79610\nLm5leHRFbGVtZW50 79611\nIG1vcnBob2xvZ3k= 79612\nIENlZA== 79613\nIGNuYW1l 79614\nKHJhd1ZhbHVl 79615\nV2Fsa2luZw== 79616\nTG9hZHM= 79617\nX0FMSUdOTUVOVA== 79618\nX1JPVU5E 79619\nIFJPQ0s= 79620\nY2x1c3RlcnM= 79621\nImg= 79622\ndWV1cg== 79623\ncGxhbnM= 79624\nIGF0aGVpc3Rz 79625\nIHZhdA== 79626\nPSJfXw== 79627\nYXdhaA== 79628\nZXJ2YXRpdmVz 79629\nIGZpbmRPbmU= 79630\nIG5vdGVib29rcw== 79631\nIFRUTA== 79632\nLkdldEFzeW5j 79633\nIG3DvG5jaGVu 79634\nbUFo 79635\nYnJ0Yw== 79636\nX1BZ 79637\nQnVpbGRlckludGVyZmFjZQ== 79638\nCWdiYw== 79639\nIGJsYW5rcw== 79640\nIGTDqW0= 79641\nUmVjdXJzaXZl 79642\nLk1hbnlUb01hbnlGaWVsZA== 79643\nX1BBUlNFUg== 79644\nIGVuZGVhdm9ycw== 79645\nIGRyaWI= 79646\nX3BocA== 79647\nIGF1dG9tb2JpbGVz 79648\nbG9pdA== 79649\nIE9ydGl6 79650\nIFVE 79651\nKGRBdEE= 79652\nIE1pdHN1YmlzaGk= 79653\nQXR0cmlidXRlVmFsdWU= 79654\nIHBvYXRl 79655\n55u45YWz 79656\nIGNhdmFscnk= 79657\nLk1hdGNoZXJz 79658\nIGluZ3Jlc3M= 79659\nIEplaG92YWg= 79660\nCXNlcQ== 79661\nX3N0cmVldA== 79662\nIFNvZmlh 79663\nIHNjcm9sbHM= 79664\ndmluY2Vz 79665\nZWxlY3Ryb25pY3M= 79666\nXHBhcmFt 79667\nIHplbmQ= 79668\nIHNraW0= 79669\nLnBpeA== 79670\nZW5r 79671\nX2FyZWFz 79672\nIEJvaXNl 79673\nLXZhbGlkYXRvcg== 79674\nIHVuZWFydGg= 79675\nb2ZpbG0= 79676\nIEJDRQ== 79677\nb3Zza3k= 79678\nIExldmVy 79679\nIHBvbGljZW1hbg== 79680\nIG1pZXM= 79681\nIFBvcnRyYWl0 79682\nIHBvdGlvbnM= 79683\nX21vdA== 79684\nbWFzc2FnZQ== 79685\n0LXQvdGL 79686\nIGN1ZA== 79687\nIG1hbnVzY3JpcHRz 79688\nY29udGludW91cw== 79689\nLnRj 79690\nw7x6 79691\nIEZyZWV6ZQ== 79692\nXzoq 79693\nLmht 79694\nIENTUkY= 79695\nIE3DpGRjaGVu 79696\nLXBlZXI= 79697\nIHB1dFN0ckxu 79698\nIGltc2hvdw== 79699\nIEB7JA== 79700\nIEJhdWVy 79701\nKHRvbHVh 79702\nIHdyb3VnaHQ= 79703\nIEdpYW4= 79704\nIMO2bg== 79705\nZnVuZw== 79706\nQnV0dG9uVGl0bGVz 79707\nfSkiLA== 79708\nIE11cmRvY2g= 79709\nS1c= 79710\nIFJlcG9ydGVk 79711\nc2ll 79712\nIG1laWxsZXVycw== 79713\nIEthZXBlcm5pY2s= 79714\nIGRzcA== 79715\nIEV2ZXJ5ZGF5 79716\ncmVuZHM= 79717\nIENvbmNl 79718\nIGluY29udHI= 79719\nLnJlbW92ZUF0dHJpYnV0ZQ== 79720\n44G+44GX44Gf 79721\nIHJldw== 79722\nIFByZXNlbmNl 79723\nL2dpbg== 79724\nLkNsYWltcw== 79725\nCXNs 79726\nRHJhZ2dpbmc= 79727\nIHNwcmVl 79728\nIGFjdHVhbGl6YXI= 79729\nIG5vc3M= 79730\nIGxpZmVzdHlsZXM= 79731\nO2M= 79732\nVURHRQ== 79733\nSW5NaWxsaXM= 79734\nIGl0aw== 79735\nYWJieQ== 79736\nKHBh 79737\naXNzZW50 79738\nIFByZXNpZGVudHM= 79739\nIEhleGF0cmlnZXNpbWFs 79740\nZWNpZGVk 79741\nKHRleA== 79742\nIGNyb3duZWQ= 79743\nUGhpbGlw 79744\nIFNhcms= 79745\nIEFkZGl0aW9u 79746\nIENvbGJlcnQ= 79747\nIEdMRVM= 79748\nIFFMaW5lRWRpdA== 79749\nIGRyYWlucw== 79750\nIHNvcnRPcmRlcg== 79751\nZXNjb3J0 79752\nVGVk 79753\nIG1hbmlmZXN0ZWQ= 79754\nLnZhcmlhbnQ= 79755\nIFJFRkVSRU5DRVM= 79756\nKGdj 79757\nL3sk 79758\nb2N5dGU= 79759\nIG9ybmFtZW50 79760\nIGJvb2tzdG9yZQ== 79761\nSG9s 79762\nIFZhbGw= 79763\nLycp 79764\nYWNhaw== 79765\nIE5hdkJhcg== 79766\nIG55ZQ== 79767\nX0RlYw== 79768\nb2x2aW1lbnRv 79769\nTVJJ 79770\nIGhvb3A= 79771\nICAgCiAgICAK 79772\nIFBvc3Rpbmc= 79773\nIG91dGxpbmluZw== 79774\nYWdhc2Nhcg== 79775\nLmJyZWFrcG9pbnRz 79776\nY2F0aWQ= 79777\nX3RyaWdnZXJlZA== 79778\nIHJ1bm5hYmxl 79779\nL3RydW5r 79780\nLWNoYWly 79781\nIGJhaXNlcg== 79782\nZmFjaWxpdHk= 79783\nIHBvbGxlbg== 79784\n6Z+z 79785\nIFtbIg== 79786\nIENHU2l6ZU1ha2U= 79787\nIGFzc2FpbA== 79788\nIEF0aGVuYQ== 79789\nIEFkZGljdGlvbg== 79790\naWxhbmQ= 79791\nO2Jy 79792\nLktleWJvYXJk 79793\nX2Zt 79794\nQWNl 79795\nIFJFUQ== 79796\nIE5ld2VzdA== 79797\nOy4= 79798\nIE1BREU= 79799\nc2V0VGltZW91dA== 79800\nU2VydmxldENvbnRleHQ= 79801\nCQkJCQkgICAgICAg 79802\nIEx1cA== 79803\nLXJldmlld2Vk 79804\nIEFuYWx5emVy 79805\nLk5hTg== 79806\ndXR1cmE= 79807\nR2VvbQ== 79808\neW1lcw== 79809\nX3Npbg== 79810\nIHRydXN0ZWVz 79811\nLy89PT0= 79812\nIGFkbWl0dGVkbHk= 79813\nIGFrbw== 79814\nIFVFRkE= 79815\nX2hlcm8= 79816\nR2l0aHVi 79817\nX2VzdGltYXRl 79818\nIGNvcnJvYm9y 79819\nZW50aWZ1bA== 79820\nIFN0ZWVyaW5n 79821\nIE1pdGFy 79822\nIFBpcGVz 79823\nIGvDpQ== 79824\nX3NlYXNvbg== 79825\nIEJDSFA= 79826\nL3NvZnR3YXJl 79827\nbmV0dGU= 79828\nKiIs 79829\ndW5kcmE= 79830\nIGdldFJlcXVlc3Q= 79831\nLkJ1ZmZlcmVk 79832\nZmVybg== 79833\nTWFyaW8= 79834\nIGRpc3BlcnM= 79835\nX2NhdGVnb3JpYQ== 79836\nIGVuZGxlc3NseQ== 79837\nZ3VhcmRz 79838\nCWF0b21pYw== 79839\nc2NvcGVk 79840\nIHVuZG9uZQ== 79841\nU0hPUA== 79842\nIFRvcmNo 79843\nIEhhc3Rpbmdz 79844\nIEZJTEVT 79845\nX1NhdmU= 79846\nV2l0aE1hbnk= 79847\nV2lz 79848\nIGludGVuc2lmaWVk 79849\nLmFyZ3VtZW50 79850\nIEFwaVNlcnZpY2U= 79851\nIEpTSW1wb3J0 79852\nZWtp 79853\nSW5zdXJhbmNl 79854\nc3R5 79855\nLmRzbA== 79856\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 79857\nbHRyZQ== 79858\nU0VH 79859\nRFJBTQ== 79860\nLWJsb2NraW5n 79861\n0L3QtQ== 79862\ncGlyaW5n 79863\nIFBSRVM= 79864\nIEZhY2g= 79865\nIHNhcmM= 79866\nIFNNRQ== 79867\nIEVsZW0= 79868\nIENhbGlmb3Ju 79869\nVW5zYWZl 79870\nIENvbXBvc2Vy 79871\nKGRlcA== 79872\nIEF0dGVuZA== 79873\nICopKCg= 79874\nIHRlYXNlZA== 79875\nIEFUSQ== 79876\nKHBt 79877\nICIoXDw= 79878\nJ10r 79879\nIHNlY3Rhcmlhbg== 79880\nIFBoYXJtYQ== 79881\nRUk= 79882\nCVRva2VuTmFtZUlkZW50aWZpZXI= 79883\nw6d1 79884\nIGF1Z21lbnRhdGlvbg== 79885\nIHNhamE= 79886\nIGNvbG9yZQ== 79887\nZGVhZGxpbmU= 79888\nLklURU0= 79889\nIFJpeQ== 79890\nbWFhbA== 79891\nCWNsaWNr 79892\nUGVybWFuZW50 79893\nSG91c3Rvbg== 79894\nUmVzcG9uc2l2ZQ== 79895\nIEVyZ2Vibg== 79896\nICIlIg== 79897\nLnRvT2JqZWN0 79898\nCXBpZA== 79899\nLlN1Ykl0ZW1z 79900\nIFsr 79901\nIGZ1bmd1cw== 79902\nIGJyb2NodXJl 79903\nIEFwcHJveGltYXRlbHk= 79904\nIG1paw== 79905\ndmVsb3Blcg== 79906\nIHBhZ2FtZW50bw== 79907\n5Yqo55Sf5oiQ 79908\nIGN5dA== 79909\nIFRlbXBs 79910\nZW5pYWJsZQ== 79911\nIENvbmFu 79912\nIHNldGJhY2s= 79913\nb2JsaW5z 79914\nIE5UTg== 79915\nb3NzYWw= 79916\nVkVSQk9TRQ== 79917\nLmJpbw== 79918\nIMWe 79919\n4buf 79920\nIEdyaXA= 79921\nPCo= 79922\nVFJJRVM= 79923\nLmNob29zZQ== 79924\nUGhvZW5peA== 79925\nIHByb3ZpbmNpYQ== 79926\nTUZMT0FU 79927\nQ2Fycw== 79928\nIHJldHJvc3BlY3RpdmU= 79929\nIGFnb255 79930\nIGxsZW4= 79931\nIGJ1bXBlZA== 79932\neWxhdGlvbg== 79933\nIHdhcnRv 79934\nIHRvZGRsZXJz 79935\nbGF2 79936\nKHBhdGllbnQ= 79937\nICgpLT4= 79938\nY2xj 79939\nIG9uQWN0aXZpdHlSZXN1bHQ= 79940\nIGVtdWxhdGlvbg== 79941\nIGJ1bGxk 79942\nX0FVVEhPUg== 79943\nPk8= 79944\nL3F1 79945\nIMK2 79946\nCWhy 79947\nc3RkQ2xhc3M= 79948\nIHNwYWNlcg== 79949\nVHJhbnNsYXRlZg== 79950\nLmFkag== 79951\nOml0ZW0= 79952\nIGV4aGF1c3Rpbmc= 79953\ncGx4 79954\nIHJldml0YWw= 79955\nxZtuaWU= 79956\nIGNhbGlmb3JuaWE= 79957\nc2V0U3RhdGU= 79958\nL3RhYg== 79959\naW5kc2lnaHQ= 79960\nX0xldmVs 79961\naW1pbGFy 79962\nLm5hdmlnYXRvcg== 79963\nIHRlbXBlcmFtZW50 79964\nIGRpZsOtYw== 79965\nIGluZXhwZXJpZW5jZWQ= 79966\nIGltcHJpbnQ= 79967\nIFJlc2lzdA== 79968\nX0ZPTExPVw== 79969\nIFJldHJ5 79970\nIGVuZ2FnZW1lbnRz 79971\nQ2FuQmVDb252ZXJ0ZWQ= 79972\nIHNpbmdsZWQ= 79973\nLmljb25z 79974\nIGNvbmRvbXM= 79975\nIEZlYXRoZXI= 79976\nbGVybmVu 79977\nKWI= 79978\nIE5wZ3NxbA== 79979\nIENvbnNvbGlk 79980\ncGVrdA== 79981\n56uv 79982\nc3RyaW5nVmFsdWU= 79983\nR2Ft 79984\nIFNpbmFp 79985\nIE9iamVjdFR5cGU= 79986\nX2lucA== 79987\nIHBhcnRp 79988\nIFdhdGVycHJvb2Y= 79989\nIGNvbGxpZGVk 79990\nIGFpcnM= 79991\nL3dvcmxk 79992\nL1NlYXJjaA== 79993\nX3N5bnRheA== 79994\nxZ9p 79995\nX2Fubm90YXRpb25z 79996\nIFRhY28= 79997\nTEFU 79998\nIE9wY29kZQ== 79999\n44CC4oCdCgo= 80000\nIGxlYXNo 80001\nIEFsaWNpYQ== 80002\n77yM6buY6K6k 80003\nIFRTQQ== 80004\nIGhvdHRlcg== 80005\nX0hhbmRsZVR5cGVEZWY= 80006\nZ2luYXM= 80007\nIGluZGlmZmVyZW50 80008\nQ3VzdG9tTGFiZWw= 80009\nkZA= 80010\nb2R5bmFtaWNz 80011\nT25VaVRocmVhZA== 80012\nIENhcmE= 80013\nLmRldmljZXM= 80014\nIEZvcmVpZ25LZXk= 80015\nPicpOw0K 80016\nLmJ1dA== 80017\nLnRpZg== 80018\nIOaWsA== 80019\nIE9rSHR0cENsaWVudA== 80020\nKFRleHR1cmU= 80021\nLlNPQ0s= 80022\nKGluc3Ry 80023\nbWlzdA== 80024\nVW5uYW1lZA== 80025\nU3I= 80026\nKm51bQ== 80027\nKE5VTQ== 80028\nKioqKioKCg== 80029\nL2hlbHA= 80030\nYmVlbGQ= 80031\nLmFkanVzdA== 80032\nX1Bhcm1z 80033\nX0FOR0xF 80034\nVFJFRQ== 80035\nIGVzdHVkaW8= 80036\nd29ya3NoZWV0 80037\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== 80038\nQWR2aWNl 80039\nw7bDn2U= 80040\nbkVudGVy 80041\nYcSH 80042\nIGFnZWluZw== 80043\nIEt1cmRpc3Rhbg== 80044\nX1JUQw== 80045\nYmFua3M= 80046\nLlVS 80047\nIGluY2FybmF0aW9u 80048\nIGdsYW1vdXI= 80049\nIOOCuQ== 80050\nIGltcGVyaWFsaXNt 80051\n7J6F64uI64uk 80052\nIHNpZGVsaW5l 80053\nLkFycmF5QWRhcHRlcg== 80054\nIyMjIyMjCg== 80055\nIFN5cmlhbnM= 80056\nIEF0dGVuZGFuY2U= 80057\nLWVzcXVl 80058\nIGdyZW5hZGVz 80059\nX3Fvcw== 80060\nT1ND 80061\nX2Rvb3I= 80062\nLkNhcA== 80063\nREFM 80064\nIGFtYnVzaA== 80065\nCWVz 80066\nVG9Kc29u 80067\nTWFudWZhY3Q= 80068\nRW1lcmdlbmN5 80069\nIFFGaWxl 80070\nIOWV 80071\nCUxQ 80072\n5pCc57Si 80073\nIEdhcmxhbmQ= 80074\nLmNvbm5lY3Rpb25z 80075\nLlJlYWRGaWxl 80076\nIEh3eQ== 80077\n4oCUZXZlbg== 80078\neERF 80079\nIG5vdXZlbGxlcw== 80080\nIEh1c3M= 80081\nRGVwb3NpdA== 80082\nX2ZvcmVpZ24= 80083\nYWJhag== 80084\nIFBveg== 80085\nZGJ1cw== 80086\nIGlvZA== 80087\nw5cKCg== 80088\nIENoZWVycw== 80089\nSmVzc2ljYQ== 80090\nIHNhaXNvbg== 80091\nIFB0eQ== 80092\nIj48IS0t 80093\naW5vYQ== 80094\nZXhjbHVkaW5n 80095\nIGJpdHRlcm5lc3M= 80096\ndWVsaW5n 80097\nUHJvdGVjdGlvbg== 80098\nIEJlcmdlbg== 80099\nCQkJIAo= 80100\nQkVM 80101\nIFRvYmlhcw== 80102\nIHVwZA== 80103\n67KE 80104\nIGZvbGlhZ2U= 80105\nX1BVUg== 80106\nIEFkdm9jYXRl 80107\nIG9uUmVxdWVzdA== 80108\nLnBhcnRpdGlvbg== 80109\nIERldmVsb3BlZA== 80110\nIGNyaWI= 80111\n0YHQutC4 80112\ndm91Y2hlcg== 80113\nIEludGVyc2VjdGlvbg== 80114\nIG5pZWNl 80115\nIGxr 80116\nIENhdWN1cw== 80117\nKFsNCg== 80118\nIERldGVjdG9y 80119\nL2xn 80120\nIEhlZGdl 80121\nIHNsdWdn 80122\nYW5nc3Ryb20= 80123\nIENvbnRyb2xsZXJCYXNl 80124\nCXl5 80125\nLnBw 80126\nIEtsaW5n 80127\nIExUUw== 80128\n4oaT 80129\nYXJyYQ== 80130\nZ2V0SlNPTg== 80131\nX3dlYnNpdGU= 80132\nIGlkaW90cw== 80133\nIE1lZ2hhbg== 80134\nQnV0dG9uTW9kdWxl 80135\nICU+ 80136\nIHByb2plY3RpbGVz 80137\nc3dvcmQ= 80138\nICAgIAkJCQkJ 80139\nIGFzc2Vz 80140\nIFN1Y2hl 80141\nIGtlZA== 80142\ncsOhZg== 80143\nIHNhcsOg 80144\nTEVuY29kZXI= 80145\nUkFORA== 80146\nIFNvbWVob3c= 80147\nIFNhbGE= 80148\nIG11bHRpbQ== 80149\nIG51bVJvd3M= 80150\nIFJvY2tpZXM= 80151\nIHhk 80152\nIGRpc3Byb3BvcnRpb25hdGU= 80153\nCVJUTEk= 80154\nCVVSTA== 80155\nYWdsaQ== 80156\nIFN1YkxPYmplY3Q= 80157\nIEdyYXZlcw== 80158\nX3JlZ3VsYXJpemVy 80159\nX2NoYXJhY3RlcnM= 80160\nLmFuYWx5dGljcw== 80161\nLm1vZHM= 80162\nIGltcHJvdmlz 80163\nIEJsb2NrUG9z 80164\nX2luc3RhbGxlZA== 80165\nX0NPTlRJTlVF 80166\nL2Rvd24= 80167\nU09D 80168\nLmFwaVVybA== 80169\nLlVzZXJTZXJ2aWNl 80170\nVHJlZXM= 80171\n5oqV 80172\nX292ZXJmbG93 80173\nYXVzYWw= 80174\nYm94ZWQ= 80175\nJgo= 80176\nIEphY3F1 80177\nX3Vzcg== 80178\nSU5UUg== 80179\nIHNpZ25hZ2U= 80180\nIGNvY2g= 80181\nTm9ybWFsaXplZA== 80182\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo= 80183\nIHN1c3RhaW5pbmc= 80184\nIFNjcmFw 80185\ncHJhYWs= 80186\nLWF2YXRhcg== 80187\nLndlYnNpdGU= 80188\nKGd1aQ== 80189\nPXJlc3BvbnNl 80190\nKG9wZXJhdG9y 80191\nIGVmZm9ydGxlc3M= 80192\nIEFjdGlvbkJhcg== 80193\nRkZF 80194\n56uL 80195\nCVJlZ2lzdGVy 80196\nQVJTRQ== 80197\nKW4= 80198\nIE1PU1Q= 80199\nX1NQUg== 80200\nX0NISVA= 80201\nYXNk 80202\nIHRvcExlZnQ= 80203\nIFR4dA== 80204\n0LDQttC0 80205\nLlZvbHVtZQ== 80206\nIGlubGV0 80207\nIGZyYWN0dXJlZA== 80208\nIExvbmdpdHVkZQ== 80209\nIERyYW0= 80210\nLkNvbm5lY3Rpb25TdHJpbmdz 80211\nYWJlZQ== 80212\ncGVyYXRl 80213\nam5p 80214\nYHQ= 80215\nZmluZ2Vy 80216\nIEplc3NpZQ== 80217\nLGxs 80218\nIFJ1ZHk= 80219\nIGdlbmVyb3VzbHk= 80220\nX0NPTlZFUlQ= 80221\nIGVpdXNtb2Q= 80222\nIERhaQ== 80223\naW1hZ2lu 80224\nIEdPYmplY3Q= 80225\nIMSRw6M= 80226\naWRpb3Vz 80227\ncmlkZ2Vk 80228\nIHNvcHI= 80229\n0LvQsNC0 80230\nIHN0aXRjaGluZw== 80231\nIGtyYg== 80232\nCiAgICAgICAgCiAgICAgICAgCg== 80233\nIGxhdmlzaA== 80234\nIENpdg== 80235\nU3RhcnRFbGVtZW50 80236\nIExvbA== 80237\nCXV0aWw= 80238\nJ11dLg== 80239\nIE1hbGF5 80240\nIC4NCg== 80241\n548= 80242\nX0ludm9rZQ== 80243\naXZpc3Q= 80244\nRGVwZW5kaW5n 80245\nKSI7DQo= 80246\nIHRvZnU= 80247\nIE1DUA== 80248\nIHN0b2NraW5n 80249\nIGNhdGhlZHJhbA== 80250\nIHF1YWRyYXRpYw== 80251\nYWxlemE= 80252\nLm1vdmVUb0ZpcnN0 80253\nQ29sb3JCcnVzaA== 80254\nIEVyZWN0 80255\nIFJDUw== 80256\nOmJlZm9yZQ== 80257\nPW5vZGU= 80258\nIHByb2Jsw6htZQ== 80259\nX3Jobw== 80260\nIHN2ZW5zaw== 80261\nUm95 80262\nYmFzZVBhdGg= 80263\nIGtvbmQ= 80264\nINC10YHRgtGM 80265\nZ2V0U2luZ2xldG9u 80266\nIERTTQ== 80267\nSWFu 80268\nIGh1bnRlZA== 80269\nIFRlcnJhY2U= 80270\nIGNoaWxkY2FyZQ== 80271\nIGNvZWZmcw== 80272\nIGdyYWRlZA== 80273\nIEx1Y2lh 80274\nIGpzb25PYmo= 80275\nYWJsZU9iamVjdA== 80276\nVmF1bHQ= 80277\nw61zdGljYQ== 80278\nX3BhZ28= 80279\nX1BG 80280\nYW5kcmU= 80281\nIEFuYXRvbXk= 80282\nLkpDb21ib0JveA== 80283\nb3VyZQ== 80284\nIGdlbm90eXBl 80285\nYmVuY2htYXJr 80286\nIGJhaWs= 80287\nIFF1w6liZWM= 80288\nKCkpDQoNCg== 80289\nIGt1bm5l 80290\nIFBvc3NpYmx5 80291\nIEJlaXNwaWVs 80292\nIGNvbmRvbGVuY2Vz 80293\nPXF1ZXJ5 80294\nIHbDtQ== 80295\nIG51ZXZhcw== 80296\nIEFwb2NhbHlwc2U= 80297\ndmVjdGlvbg== 80298\nCXNwcml0ZQ== 80299\nbGV2YXRvcg== 80300\nLiJdCg== 80301\nZ2V0TmV4dA== 80302\nKFJlZ2lzdGVy 80303\nIHVuc3Vi 80304\ndHJlZXZpZXc= 80305\nTm9kZUlk 80306\nIOyK 80307\nJikK 80308\nZmx0 80309\nIGhvdHNwb3Q= 80310\nIGdhc3Ryb2ludGVzdGluYWw= 80311\nZmlnY2FwdGlvbg== 80312\nb3dlcmVk 80313\nIENzcw== 80314\nX3Jvcw== 80315\nX3NjYWxpbmc= 80316\nIGVkaXRhcg== 80317\nJ11dKTsK 80318\nLm5lZw== 80319\nIGZ1dHVyaXN0aWM= 80320\nIHN0YXRh 80321\ndWN0b3I= 80322\nVUxBVEU= 80323\nIHfFgg== 80324\nLWNoYXJhY3Rlcg== 80325\nICAKCgo= 80326\nIEJlYXU= 80327\nIHBlcm1hbGluaw== 80328\nQnl0ZUJ1ZmZlcg== 80329\nIGRpY3RhdGVz 80330\nIE1MQQ== 80331\nX0xvZ2lu 80332\nQ29uZGl0aW9uYWw= 80333\nU1lN 80334\nQXJyYW5nZQ== 80335\nIFN0b2Nrcw== 80336\nIG1lYXNsZXM= 80337\n4KSk 80338\nRW5jcnlwdGlvbg== 80339\nIEVudGlyZQ== 80340\nIG1pbk9jY3Vycw== 80341\nIGh1Z3M= 80342\nL3dpbmRvdw== 80343\nCXByb3A= 80344\nPSQoKA== 80345\nIFVDUw== 80346\nIEZpcg== 80347\nLkNsb2Nr 80348\nLWRlc2t0b3A= 80349\nIG1hbGZvcm1lZA== 80350\nIEFiZXJkZWVu 80351\nIMOF 80352\nIFJvYWRz 80353\nIEJlaGF2aW91cg== 80354\nKCkn 80355\n5bGe5oCn 80356\nLkNvbXBhcmF0b3I= 80357\nX21v 80358\nX0lPUw== 80359\nIE9yaW9sZXM= 80360\nLkxvb2t1cA== 80361\nIGZzZWVr 80362\nX0lC 80363\nL3N0YXI= 80364\nKzwv 80365\nX0Rlc3Ryb3k= 80366\nLXRyYQ== 80367\nKCcuJyk= 80368\nIEZvckNhbkJlQ29udmVydGVk 80369\nIEZvckNhbkJlQ29udmVydGVkVG9G 80370\nIEZvckNhbkJlQ29udmVydGVkVG9Gb3JlYWNo 80371\nIEFhZA== 80372\nIGFpcnN0cmlrZXM= 80373\naXNPaw== 80374\nIGZlZGVyYXRpb24= 80375\nIExhYnJhZG9y 80376\nX2xhdW5jaGVy 80377\nYWxvZ3k= 80378\nPj4oKTsKCg== 80379\nIEp1Yg== 80380\ndXRy 80381\naXN0aW5ndWlzaGVk 80382\nYWJhbnQ= 80383\nUmVnaW9ucw== 80384\nL2hlbHBlcg== 80385\nX2xpc3Rlbg== 80386\nCVRvYXN0 80387\nIEZpbGVNYW5hZ2Vy 80388\naXRvcmlz 80389\nIGVsZWN0cm9kZXM= 80390\nR1JBREU= 80391\nIGJlZ2dlZA== 80392\nIFBsYXRlcw== 80393\nYWZvbmU= 80394\nISEhCg== 80395\nIGVieA== 80396\nIGRlZmF1bHRQcm9wcw== 80397\nIGNvbXBhcmVUbw== 80398\nIFNDQw== 80399\nLmV4dGVudA== 80400\nYXV0b3M= 80401\nIOyW 80402\nIFRvbGtpZW4= 80403\nOjoqOwoK 80404\nKics 80405\nLmRvY3VtZW50cw== 80406\nc2luZw== 80407\nPUJpdENvbnZlcnRlcg== 80408\nIEtyaXNobmE= 80409\nIHBsYWlzaXI= 80410\nIGJ1Z2d5 80411\nIHJlZ3VsYXRlcw== 80412\nIGZyaWRheQ== 80413\nIGNvbXBsZXRlbmVzcw== 80414\nIGF1ZGlibGU= 80415\nIFJlY29nbml0aW9uRXhjZXB0aW9u 80416\nIHNoZWRkaW5n 80417\nW10pewo= 80418\nKGJhbGw= 80419\nIENoYXRDb2xvcg== 80420\nKENvZGU= 80421\nKCksCgo= 80422\nIHRlcnRpYXJ5 80423\nIFNJREU= 80424\nKEpTT05PYmplY3Q= 80425\npOaWrQ== 80426\nUmVtYXJrcw== 80427\nIGxpc3RCb3g= 80428\nLmltYWdlVXJs 80429\nIGRlbGF5aW5n 80430\nIHNvY2lvZWNvbm9taWM= 80431\nLmxw 80432\nPE15 80433\nLm9uU3RhcnQ= 80434\nIFNjb3I= 80435\nYnl0ZXJpYW4= 80436\nLXJvY2s= 80437\nX21ldGVy 80438\nIHJlcG1hdA== 80439\nIHByZWd1bnRh 80440\nIE1FVEE= 80441\nKGd0 80442\nIEZSSUVORA== 80443\nIHNvcnRl 80444\nIGhlcA== 80445\nb25vbWllcw== 80446\nIGF1dG9tw6F0 80447\nIEZvcm1hdHM= 80448\nc3RhdGVQcm92aWRlcg== 80449\nLWZsb29y 80450\nX01VWA== 80451\nKENvbnRlbnQ= 80452\nIElOU1RBTEw= 80453\nIFRpdGFuaXVt 80454\ncnVj 80455\nLkRhdGFzZXQ= 80456\nYXNjbw== 80457\nLk1BVENI 80458\nIGZlc3Rpdml0aWVz 80459\nTVNO 80460\nLm90 80461\nIEdldExhc3RFcnJvcg== 80462\naWVucw== 80463\nIF9fX19fX19fX19fX19fX19fXwoK 80464\nX0dG 80465\nX3BsYXRl 80466\nIEZvcm1hbA== 80467\nLWxldHRlcg== 80468\nS2F0ZQ== 80469\nYXBpYQ== 80470\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K 80471\nL2dlbmVyYXRlZA== 80472\nIERpbmc= 80473\nIEZyaWVkcmljaA== 80474\nICcpJw== 80475\nVUJMSVNI 80476\nIEFiaWxpdGllcw== 80477\nIHVubG9ja2luZw== 80478\nLnl5 80479\nIEludGVycg== 80480\nbm90aHJvdw== 80481\naXBvcA== 80482\nIENPUlBPUg== 80483\nW2FycmF5 80484\nPFdlYkVsZW1lbnQ= 80485\nX1NJRA== 80486\nLnF1YWw= 80487\nRGlhZ25vc3RpYw== 80488\nOiIiLAo= 80489\nKG1vbWVudA== 80490\nanVyZWQ= 80491\nIHRlcnJlc3RyaWFs 80492\nZXJ1bGU= 80493\nICYpOwo= 80494\nIGJ1cmVhdWNyYXRpYw== 80495\nb3BwaW5z 80496\nIGphcG9u 80497\nbGVvbg== 80498\nX3JlbmFtZQ== 80499\nX0RFU1RST1k= 80500\nLkVuZHNXaXRo 80501\nIGVydXB0aW9u 80502\nKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K 80503\nUEVU 80504\nX3JlbG9hZA== 80505\nIHN1cHBsZW1lbnRhcnk= 80506\nIHppZW4= 80507\nQ0xMb2NhdGlvbg== 80508\nIGtsZWlu 80509\nX2Vm 80510\nOnt9 80511\nIGNvbWVudGFyaW9z 80512\nKHZhbGlkYXRpb24= 80513\nLnh0ZXh0 80514\nX0lNQUdFUw== 80515\nLnNldElucHV0 80516\nIERlY29tcGlsZWQ= 80517\nX1RCTA== 80518\nY29tcGxleFR5cGU= 80519\nX2ZlYXR1cmVk 80520\nID8+PD8= 80521\nLnZvdGU= 80522\nIEZyaWRheXM= 80523\nLmNvbnN1bWU= 80524\nLk1FRElB 80525\nIHN5bmVyZw== 80526\njpjsnbTsp4A= 80527\nX0hFQURFUlM= 80528\neEFD 80529\nX252 80530\nzq0= 80531\nIFNpbW9uZQ== 80532\nQ2VycmFy 80533\nYWRkb2Nr 80534\nLnNlcmlhbGl6ZXI= 80535\nIENsYXNzaWZpZWQ= 80536\nLkl0ZW1zU291cmNl 80537\nIHByZWNvbmRpdGlvbg== 80538\n44Gd44GX44Gm 80539\nRElTVA== 80540\nSW1hZ2VVcmw= 80541\nL3JhbmRvbQ== 80542\nIGVyw7N0 80543\nW3Jvb3Q= 80544\nQUxMRVJZ 80545\nY2o= 80546\neEFE 80547\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo= 80548\nIGl0YWxpYW5p 80549\nfCM= 80550\nIHJlZ2VuZXJhdGU= 80551\nIHN0cnI= 80552\nKHx8 80553\nIEVtZXJzb24= 80554\nIFBJRQ== 80555\nY2xpZmZl 80556\nCWFu 80557\nPlBhc3N3b3Jk 80558\ndG9EYXRl 80559\nQ2lwaGVy 80560\nIGNvbnZveQ== 80561\nIFhDVEFzc2VydFRydWU= 80562\nL19f 80563\nLWZvY3Vz 80564\nIFJoaW5v 80565\nIGdvbw== 80566\nIGJvdG9u 80567\nLk5vU3VjaA== 80568\nIFJlZHVjZWQ= 80569\nTUlTUw== 80570\nIFdpbmNoZXN0ZXI= 80571\ndXJsZW5jb2Rl 80572\nIG11ZGR5 80573\naXlh 80574\nIE1icHM= 80575\nIHN0YWw= 80576\nb2RhZm9uZQ== 80577\n5Lus 80578\nIHBo4bqpbQ== 80579\nICIvIjsK 80580\nIEFtbW8= 80581\nTmV3UHJvcA== 80582\nID0KCg== 80583\nINCf0YA= 80584\nIHBheg== 80585\nIGxpYmVybw== 80586\nCVJlc291cmNl 80587\nbmVpZ2hib3Jz 80588\nLHJlc3BvbnNl 80589\nX2F0dGVtcHRz 80590\nIG5r 80591\nIG1pbGl0aWFz 80592\nX1BBWUxPQUQ= 80593\nLkJ5dGVTdHJpbmc= 80594\nINGB0L7QtNC10YDQtg== 80595\nYXJ0b24= 80596\nPkhlbGxv 80597\nbGlnaHRseQ== 80598\nb3dlbGw= 80599\nIGd1YXJkaW5n 80600\nIFRPSw== 80601\nIHdoZXJlYWJvdXRz 80602\nX2R3 80603\nIFJvdWxldHRl 80604\nIGd5cg== 80605\nIEZlZG9yYQ== 80606\nLkJ1dHRvbnM= 80607\nIGV4Y2xhaW1lZA== 80608\nIFNvbW1lcg== 80609\nQXV0aEd1YXJk 80610\nLXJhdGluZw== 80611\nTWV0aG9kQmVhdA== 80612\nLnBvc2l0aW9ucw== 80613\nTWVkaWFu 80614\nLuKApgoK 80615\nIGdsYWM= 80616\nIHVuZGVybWluZWQ= 80617\nJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQ== 80618\nX3RoaXJk 80619\nLmtlZXA= 80620\nIGhheWE= 80621\nIHRvSlNPTg== 80622\nIExhdXJpZQ== 80623\nIAkgICA= 80624\nIEFjY3Vt 80625\nIHBydW5l 80626\ndXJ2ZWQ= 80627\nIE5TRg== 80628\nIEdyYXBl 80629\nRkxJQ1Q= 80630\n6LI= 80631\nIHByZWRpcw== 80632\nX3B0cnM= 80633\nIG11bHRpY2FzdA== 80634\nKEdyb3Vw 80635\nIGhlacOf 80636\nIGZlZGVyYWxseQ== 80637\nX1BBVVNF 80638\nIG1hbGF5c2lh 80639\nIFJlY2FsbA== 80640\nIHJvZHo= 80641\nIFNlbnRlbmNl 80642\naW50ZWw= 80643\nX2RydmRhdGE= 80644\nLXNjZW5lcw== 80645\nPHk= 80646\nIGZvb2xlZA== 80647\nIExvdWQ= 80648\nIGFudGl2aXJ1cw== 80649\nLnBsaXN0 80650\nIHZlcndlbmRlbg== 80651\nIFdvbGZl 80652\nKWl0ZW0= 80653\nIHR3aXN0aW5n 80654\nIGVzcGFu 80655\nYXRlcm5v 80656\nIEFjY29yZA== 80657\nKCldLA== 80658\nUkVNT1ZF 80659\nZGVoeQ== 80660\nX1ByZQ== 80661\nIG1pc2Nhcg== 80662\ndmxh 80663\nIHNlbWJs 80664\nIHRldGhlcg== 80665\nIEJpag== 80666\nLycKCg== 80667\nIENvcGllcw== 80668\nLXBhdHRlcm4= 80669\nLm9uVmlldw== 80670\nLXRha2luZw== 80671\nX3NpbXBz 80672\n44GX44GL44GX 80673\nIERBQ0E= 80674\nb3JuaW5n 80675\nIFBlc3NvYQ== 80676\nb3JueQ== 80677\nX3Bhcw== 80678\nIGVpZ2h0eQ== 80679\nVGFj 80680\nX1NUT0NL 80681\nLmxvY2F0aW9ucw== 80682\nIil9LAo= 80683\nIHTDoQ== 80684\nLWZpZWxkcw== 80685\nb2thbmU= 80686\nL2t1YmVybmV0ZXM= 80687\nIGNoaWNh 80688\nIGFydMOtY3Vsbw== 80689\n7II= 80690\nQ1JFQVNF 80691\nQVNB 80692\nIExvbmQ= 80693\nIGV4ZW1wbG8= 80694\nQWxsb3dz 80695\naHRtbHNwZWNpYWxjaGFycw== 80696\nKHZpcw== 80697\nIGpy 80698\n54Gr 80699\nIEVDTQ== 80700\nIGVtYmFy 80701\nX0FEQVBURVI= 80702\nIGRpbHV0ZWQ= 80703\nX29mZmljZQ== 80704\nIHNraW5jYXJl 80705\nQUdJTkc= 80706\nIMO+ 80707\nIFNNQVJU 80708\nL1RhYmxl 80709\nIGJhc2Fs 80710\nQ29uY3VycmVuY3k= 80711\nIFZveA== 80712\nIFVJQ29sbGVjdGlvblZpZXdDZWxs 80713\nIHdvbA== 80714\nIFNPVVRI 80715\nIGZyb21EYXRl 80716\nIGNvcmRz 80717\nRU1T 80718\nLndlaXhpbg== 80719\nJ2VsbGU= 80720\nIOWx 80721\nIGdvYWx0 80722\ndWli 80723\nIE5lcHR1bmU= 80724\nKG9yZA== 80725\nxLFuxLFu 80726\nIG1pY3JvYmVz 80727\nV2VhcG9ucw== 80728\nLURlYw== 80729\nIFJvb25leQ== 80730\nIFN3YWdnZXI= 80731\n66qF 80732\nX2xh 80733\nIGdlbmVyYWRv 80734\nIEhpcg== 80735\nQ29taWM= 80736\nIGNhcnZl 80737\nX3Jx 80738\naWN0ZXI= 80739\nIGNhcnRlbA== 80740\nYW5jaWFz 80741\nIFBhbmFzb25pYw== 80742\nIHJvYWRzaWRl 80743\nIGZyZXNod2F0ZXI= 80744\nIGRiYw== 80745\nX3RleHRz 80746\nX3NrdQ== 80747\nIFN1bW1lcnM= 80748\nIFBpY3R1cmVCb3g= 80749\nLmdyb3VwQ29udHJvbA== 80750\nVkFSQ0hBUg== 80751\nUmVMVQ== 80752\nIHNhYm90YWdl 80753\nDQogICAgICAgICAgICANCg== 80754\nIHNjcm9sbGJhcg== 80755\nIGJhdHRlcmVk 80756\nY2lw 80757\nLXBpY3R1cmU= 80758\nCXN0YXRz 80759\nLmNyZWF0b3I= 80760\nX0NMRUFO 80761\nLk1PRA== 80762\nIGJpZ2ludA== 80763\nIFRlcnJvcmlzbQ== 80764\nX1Nob3c= 80765\nIFNwaWNlcg== 80766\nX0VUSA== 80767\nIMSR4buD 80768\nIHN1bW1lcnM= 80769\nIFVyYW4= 80770\nL21lbW9yeQ== 80771\nUmV2aWV3ZWQ= 80772\nIGR1ZXM= 80773\nc2V0U2NhbGU= 80774\nIFJheXM= 80775\nIENTQw== 80776\naW5jb21pbmc= 80777\nLWJ1eQ== 80778\nIHByb2N1cmU= 80779\nZW50YXI= 80780\nIGJ1bGxz 80781\nIAkJCQkJCQ== 80782\nIEZpYm9uYWNjaQ== 80783\nLXNjaGVtYQ== 80784\nbWFrZXM= 80785\nRWY= 80786\nX0Rlc2NyaXB0aW9u 80787\nL2FsZXJ0 80788\nIGpzb25TdHJpbmc= 80789\ndWZmbGluZw== 80790\nIEtFUk5FTA== 80791\nIEhveQ== 80792\nIGdyYW50UmVzdWx0cw== 80793\nb25hbGQ= 80794\nIFByb3ZpbmNpYWw= 80795\nc2VuZGluZw== 80796\ncHRvbQ== 80797\nINCe0LE= 80798\nIGNvbnN0cmFpbg== 80799\nIMWhdG8= 80800\nIFJhaXNlZEJ1dHRvbg== 80801\nVVRET1dO 80802\nIEdMc2l6ZWk= 80803\nIOekug== 80804\n44OR 80805\nIEdvbg== 80806\nUExJRVI= 80807\nJ119PC8= 80808\nY2xhc3NpYw== 80809\nIGVuZ3JhdmVk 80810\nIG1hc2N1bGluaXR5 80811\nTWFyc2g= 80812\nc3NxbA== 80813\nKEdyYXZpdHk= 80814\nIGxvYnN0ZXI= 80815\n67aE 80816\nX0ludGVy 80817\nXGJhc2U= 80818\nJzpbJw== 80819\nIGRldGFsbGU= 80820\ndHdlZXRz 80821\nIGplYWxvdXN5 80822\nYWdlbmRh 80823\nLGl0 80824\nc3dpcmU= 80825\nK0I= 80826\nIHRyb3V0 80827\nX2FsdGVybg== 80828\nOiIj 80829\nIER3YXJm 80830\nIFNoYXBpcm8= 80831\nZXJvb24= 80832\nIG5vaw== 80833\nX2xvbmdpdHVkZQ== 80834\nIFdlcm5lcg== 80835\nIHZpb2xldA== 80836\ndXJzaXZlbHk= 80837\nLWF3YWl0 80838\nIH0KCgoKCgo= 80839\nIExlbm5vbg== 80840\nIEFudGFyY3RpYw== 80841\nIGLDpWRl 80842\nX3Nsb3Bl 80843\nbWFuZG8= 80844\nb3VuY2Vy 80845\nLWlvbg== 80846\nIERlc3RydWN0aW9u 80847\naXNzZW5zY2hhZnQ= 80848\nUGl6emE= 80849\nIEdlb2xvZ2ljYWw= 80850\nQk9VTkQ= 80851\nIGNpbmU= 80852\nRGVtb24= 80853\nLnBlb3BsZQ== 80854\nX1RPR0dMRQ== 80855\nCW5vZGVz 80856\nYnVzY2Fy 80857\nLnByb2Nlc3Nvcg== 80858\nTmg= 80859\nL3Nkaw== 80860\nIG15Y2tldA== 80861\nYXVjdGlvbg== 80862\nTWVn 80863\nR01FTQ== 80864\nIGlyb25pY2FsbHk= 80865\n5riF 80866\nIGNvbnZlcmdl 80867\nIFVJVGFibGVWaWV3RGF0YVNvdXJjZQ== 80868\nQXJkdWlubw== 80869\nPmU= 80870\nSm95 80871\nIFNob3VsZGVy 80872\nIER1Yw== 80873\nUFJJTUFSWQ== 80874\nLioo 80875\nLXByZXM= 80876\nIGRpYWxvZ1JlZg== 80877\naW1hZ2VOYW1l 80878\nX2ludm9rZQ== 80879\nXFRlbXBsYXRl 80880\nT0k= 80881\nIHZyaWVuZA== 80882\nIEd1ZXJy 80883\nIHByZXJlcXVpc2l0ZQ== 80884\nIFBHQQ== 80885\nIFJlc3A= 80886\nKSIsIg== 80887\nbGxlbg== 80888\nIHNuYXBwaW5n 80889\nX0ZpcnN0 80890\nS0lU 80891\nLnNldEZvY3Vz 80892\nIEN5cHJlc3M= 80893\nY3JhZnRlZA== 80894\nLzsK 80895\nd2VpZ2h0ZWQ= 80896\ndm95 80897\nX3RG 80898\nX2luc24= 80899\nIEluc3RhbGxpbmc= 80900\nIEdhbGx1cA== 80901\nQURPUg== 80902\nIEFMT0c= 80903\nQ29udGV4dEhvbGRlcg== 80904\nIFRvdXQ= 80905\nIEZvbGV5 80906\nIGNvbnRlbXBsYXRl 80907\nIENvaW5iYXNl 80908\nWMOj 80909\nd2FuZA== 80910\nLkNyZWF0ZUNvbW1hbmQ= 80911\nU29jaw== 80912\nIHVud3JhcA== 80913\nY2xhc3NwYXRo 80914\nPFJlc291cmNl 80915\nX0VTVA== 80916\nPXJhbmRvbQ== 80917\nIFNoYWRl 80918\nIGRpY2k= 80919\n2K/Zig== 80920\nIGtpdHR5 80921\n0LDRgtC10LM= 80922\n4buNbg== 80923\nLkNvbXBsZXRlZA== 80924\ncGxvcmVy 80925\nIGJhYmVs 80926\nLk9uSXRlbUNsaWNrTGlzdGVuZXI= 80927\nIE1jTWFob24= 80928\nIHJlc3RUZW1wbGF0ZQ== 80929\nIHRlc3M= 80930\nU2V0VXA= 80931\nL29jdGV0 80932\nIGNhbGFt 80933\nIGhpbmdlcw== 80934\nIGFydGVyaWFs 80935\nIFRydW1hbg== 80936\nIENoZXJ5bA== 80937\nX0REUg== 80938\nIHRtcGw= 80939\nIExlcg== 80940\nW2hhc2g= 80941\nS0VS 80942\nIHByb3BvcmNpb24= 80943\nIGNvYXN0bGluZQ== 80944\nYWNpb3M= 80945\nIj4tLX19Cg== 80946\nIGRpc2FkdmFudGFnZWQ= 80947\nVG91Y2hMaXN0ZW5lcg== 80948\nIFNlZ2E= 80949\nY29lcw== 80950\nSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbg== 80951\nPEJveA== 80952\nIEluY3JlZGlibGU= 80953\nVXBkYXRlcg== 80954\nRkxU 80955\naW5hbWU= 80956\nIEludGVyZmFjZXM= 80957\nKylc 80958\nZW5kaW1lbnRv 80959\nIHBhbmNha2Vz 80960\nIGluY29uc2lzdA== 80961\nLnBldA== 80962\nIGtleW9m 80963\nSW5uZXJUZXh0 80964\nPicp 80965\nRGVhbg== 80966\nIFDDqQ== 80967\nKENvbnRyb2w= 80968\nIHNwYXI= 80969\nbGluaWs= 80970\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA== 80971\nIERhbmU= 80972\nX1BBR0VT 80973\nIHNldEJhY2tncm91bmRDb2xvcg== 80974\nc3ViY2F0ZWdvcnk= 80975\nIFN0cmluZ1NwbGl0T3B0aW9ucw== 80976\nQWxsZW4= 80977\nISgie30iLA== 80978\nhOyerA== 80979\nIGJhYw== 80980\nX1BST0RVQ1RT 80981\ndXBwZXJjYXNl 80982\nPSQoIiM= 80983\nxJlr 80984\nIFVJVGFwR2VzdHVyZVJlY29nbml6ZXI= 80985\nTUVUQQ== 80986\nIHNjYXJjZWx5 80987\n6aA= 80988\nX21hbmFnZWQ= 80989\nIGNvbnN1bW8= 80990\nTW91c2VNb3Zl 80991\nIFNwZWNz 80992\nIFNlYXJjaGluZw== 80993\nSGVhZGVyVmlldw== 80994\nOicp 80995\nIG1pY3Jvc29mdA== 80996\nIEtvc292bw== 80997\nZW1hbm4= 80998\nLmZmdA== 80999\nIEh1YmJhcmQ= 81000\nIGRleA== 81001\nX1RFUk1JTg== 81002\nX0ZD 81003\nIHBoaWxpcHBpbmVz 81004\nXENvbGxlY3Rpb25z 81005\nIHRlaA== 81006\nIHF1YWxpZmllcw== 81007\nIGlucHV0VmFsdWU= 81008\nIEdPVA== 81009\nKHNh 81010\nSUxMRUQ= 81011\nIHNsYW5n 81012\nIGtlaW5lbg== 81013\nIGZlbG9u 81014\nIEVyaWNr 81015\nYWJpbGlkYWRl 81016\nLnNlcg== 81017\nIHJ1bmVz 81018\nIFVucmVhbA== 81019\nKG9y 81020\nIOusuOyekA== 81021\nIGJpZGk= 81022\nIGlyYw== 81023\nCWl0ZXI= 81024\nIm5pbA== 81025\nL3VidW50dQ== 81026\nIG11cmRlcmluZw== 81027\nID8u 81028\ndW5rZXI= 81029\nUmVjdFRyYW5zZm9ybQ== 81030\nJykpCgoK 81031\nIGFyaXR5 81032\nIEZyZWVs 81033\nLm1vdW50 81034\nQ09NTUVOVA== 81035\nICIqIiw= 81036\nZW5jcnlwdGlvbg== 81037\nW21vZGVs 81038\nIn19Pgo= 81039\nLlRvdWNo 81040\nL3RodW1i 81041\nIHByZXo= 81042\nL2NvbXBhbnk= 81043\nIHLDs8W8 81044\nIHNvZnRlbg== 81045\nIHBvc3NpYmlsZQ== 81046\nIEVDQg== 81047\nX0Jvb2w= 81048\nIC0tLS0tCg== 81049\nIGludGVydHc= 81050\nX3N0YQ== 81051\nX0JBTA== 81052\nLm5hdmlnYXRpb25CYXI= 81053\nIFJHQkE= 81054\nZ3JpbHk= 81055\nc3RvZmY= 81056\nYWNreQ== 81057\nUUI= 81058\nQEFwaQ== 81059\ncGVjaWE= 81060\nIFJwYw== 81061\nIGFtcHM= 81062\nIEZlbmNl 81063\nIGdlbm9taWM= 81064\nKGFsaWFz 81065\nVmllbg== 81066\nU3BpbkJveA== 81067\nLmdldFNlY29uZHM= 81068\nIGdsb2JhbGl6YXRpb24= 81069\nIGN1cw== 81070\na3ViZWN0bA== 81071\nIHRocm90dA== 81072\nIGluZXJ0 81073\nIFNjcmF0Y2g= 81074\nw5c8Lw== 81075\nLmlzc3Vl 81076\nZXNzYXk= 81077\nLUlzbA== 81078\nIG3DoXI= 81079\nCWJpdA== 81080\nIGFib2xpc2hlZA== 81081\nLmluZmluaXR5 81082\nbGluZW5v 81083\nLmFsZ29yaXRobQ== 81084\nb3JzY2g= 81085\nRW1haWxBZGRyZXNz 81086\nIERBRw== 81087\nYnJpbmdpbmc= 81088\nLm15YXBwbGljYXRpb24= 81089\nLlN1cHBvcnQ= 81090\nX2xlYWRlcg== 81091\nIERldmlu 81092\nIFtdDQoNCg== 81093\nIHJtcw== 81094\nIGJ1Y2tsZQ== 81095\naWdsaWE= 81096\nL3Byb2JsZW0= 81097\nIGhhdXRl 81098\nIGluc3RpdHV0ZWQ= 81099\nSVU= 81100\nbGFtYQ== 81101\nRVhQRUNURUQ= 81102\nIEJlY2toYW0= 81103\nIEh5ZHJhdWxpYw== 81104\nU3RhdGljcw== 81105\nX25vcm1hbGl6ZWQ= 81106\nLmAsCg== 81107\nIG1pbWV0eXBl 81108\nIHNoYXZpbmc= 81109\nT3ZlcnJpZGVz 81110\nIE1lcmNlcg== 81111\ndHJmcw== 81112\nLXN0YXRz 81113\nb3NwYWNl 81114\nIGFudGlveGlkYW50cw== 81115\naW5maW5pdHk= 81116\nUm9ja2V0 81117\nIEV1bGVy 81118\nLXZhbHU= 81119\nIGzDuA== 81120\nLUlO 81121\nSG1t 81122\nLXJldHVybg== 81123\nIFBBTkVM 81124\nIHRlcm1pbmF0b3I= 81125\nIHRla24= 81126\nIHByZWRpY2F0ZXM= 81127\nU3RhbXBlZA== 81128\nIHN2ZQ== 81129\nYW50ZXI= 81130\nIGN5Y2xpc3Q= 81131\nIEVwc3RlaW4= 81132\nIGhpdHRlcnM= 81133\nZG9ncw== 81134\nLkFkZExpc3RlbmVy 81135\nX2V4Y2VwdGlvbnM= 81136\nIEZPT1Q= 81137\naWNhcmU= 81138\nW3RhZw== 81139\nLWZldGNo 81140\nVVBMT0FE 81141\nLmRyb3Bkb3du 81142\nIGNlbnRyb2lkcw== 81143\nIGFyYmU= 81144\nIGhpam8= 81145\nIERhdGFiYXNlUmVmZXJlbmNl 81146\nUG9saXRpY2Fs 81147\nIEJBU0lD 81148\nLWZvcmNl 81149\nfCQ= 81150\nIFJFVklFVw== 81151\nLmRlY29yYXRl 81152\nIEFzcGVjdA== 81153\nIGNvbW1lbW9y 81154\nIGNsZWFuc2U= 81155\nIENsYXVkaWE= 81156\nZ2VuZXJhdGlvbg== 81157\nSExU 81158\ndHlwZW9ybQ== 81159\ncHJlZmVy 81160\nb3ZlcmxhcA== 81161\nYmlvbG9neQ== 81162\nU3RyZWFtZXI= 81163\nY29tbWlzc2lvbg== 81164\nIHRodW1ibmFpbHM= 81165\nLkN1cnJlbnRDdWx0dXJl 81166\nIHVybHBhcnNl 81167\nIGdpb3Jubw== 81168\nIGRldnM= 81169\nX2FzcGVjdA== 81170\nIGNoZXJpc2hlZA== 81171\nIE5hY2hyaWNodA== 81172\nIHJpZ2dlZA== 81173\nL2xvZ2dpbmc= 81174\naHVudA== 81175\nVHlwZUVycm9y 81176\nPFNlbGVjdA== 81177\nKHByb2c= 81178\nIEdyaWRMYXlvdXQ= 81179\n6JA= 81180\nIEVYUEVS 81181\nCUtFWQ== 81182\nLmRt 81183\nCWNhcmQ= 81184\nIFRhdQ== 81185\nIG5vdGFtbWVudA== 81186\nIGhlcm9pbmU= 81187\nIGJhdGh0dWI= 81188\nYXRyb24= 81189\nIOaU 81190\n77yS77yQ 81191\nY29ub21pY3M= 81192\nIHJldmVyc2libGU= 81193\n6YeR6aKd 81194\nIGpzeA== 81195\nIFNwZWFrZXJz 81196\nRGVzZXJpYWxpemVy 81197\nLnRvRmxvYXQ= 81198\nINC/0LXRgNC10LzQtdC9 81199\nIFByb3ZpZGluZw== 81200\n6LSm 81201\nW2VsZW1lbnQ= 81202\nKjo= 81203\nPlJldHVybnM= 81204\nIHRpdHVsYXI= 81205\nIGhlYXJ0YnJlYWtpbmc= 81206\nX05C 81207\nLkFyZ3VtZW50cw== 81208\nIG9wdGlj 81209\nYXR0YWNrcw== 81210\nIFZ1bG5lcg== 81211\nCWtleXM= 81212\nIGNvbnRyb2xl 81213\nLlJHQg== 81214\nIHN1Ymdyb3Vw 81215\nbWFuZGF0b3J5 81216\nIENBQg== 81217\nCWVuZ2luZQ== 81218\n44Gw 81219\nTUVESUE= 81220\nL3RyYW5z 81221\nIGRhbms= 81222\nIHNlcnZpY2Vk 81223\nIGluY2FyY2VyYXRlZA== 81224\nIEZyZWFr 81225\nIHVwdG8= 81226\nZHJhd2Vy 81227\nWyIr 81228\nIGVudHdpY2s= 81229\nZ0w= 81230\nTW9kZWxFcnJvcg== 81231\nIHJlYWRkaXI= 81232\naXN0cmlidXRl 81233\nIGdsYXJl 81234\naXF1ZW1lbnQ= 81235\nY2hpbmE= 81236\nIEthcGxhbg== 81237\nIFN0YWJpbGl0eQ== 81238\ncG9zaXRlcw== 81239\nIEpBWEJFbGVtZW50 81240\nIHRvdGFsbWVudGU= 81241\nKGNvbW0= 81242\nX3Byb2Nlc3Nlcw== 81243\nVGhvdXNhbmRz 81244\nIElscw== 81245\nZXJ0YWludHk= 81246\nIFNoYWRlcw== 81247\nYWN0YWw= 81248\nbG9nZ2VkSW4= 81249\nIE5pY2hvbHM= 81250\nIE1pZGxhbmRz 81251\nZGV2aWw= 81252\nIHN0clNRTA== 81253\nIn0p 81254\nIEpvcmQ= 81255\nKGZm 81256\nIEp1bmk= 81257\n5bCx 81258\nYXJ0aXNhbmxpYg== 81259\nIG1vb25z 81260\nIHVucmVzb2x2ZWQ= 81261\nIHdpdGNoZXM= 81262\nIEfDvA== 81263\nIEdvYmxpbg== 81264\nYW5zc29u 81265\nfCU= 81266\nIGJ6 81267\nIGR1cGxleA== 81268\nICIpKQ== 81269\nLmxpa2Vz 81270\nKHZlcnRpY2Fs 81271\nIGNvd2JveQ== 81272\nU2VsZWNjaW9uZQ== 81273\nICcqJyw= 81274\nIFNhcA== 81275\nIFNhYmJhdGg= 81276\nU09SVA== 81277\n4Ka/4KY= 81278\nX2NlbnRlcnM= 81279\nXFBvc3Q= 81280\nKFRyZWU= 81281\nIHBhcnRlcw== 81282\nX3lhdw== 81283\nYXJlbW9z 81284\nc2V2ZW4= 81285\nIGhpYXR1cw== 81286\nX2ludGVuc2l0eQ== 81287\nLW1hbnk= 81288\nIERvbGxhcnM= 81289\nLXVuc3R5bGVk 81290\nIGdyaXBwaW5n 81291\nIG1hcnZlbG91cw== 81292\nIHJlY2VwdGlvbnM= 81293\nIG92ZXJjbG9jaw== 81294\nYmVybWFu 81295\nIGhlYWRxdWFydGVyZWQ= 81296\neEJC 81297\nY2xhc3NDYWxsQ2hlY2s= 81298\nIG9ic2VydmVz 81299\nU3VibWl0dGluZw== 81300\n0LjRh9C10YE= 81301\nIEh0dHBTdGF0dXNDb2RlUmVzdWx0 81302\nIGhpZXJvbnRh 81303\ncm9wcGluZw== 81304\nRk9SQ0U= 81305\nCXV0aWxz 81306\nIHZlbnRz 81307\nYWRkZXJz 81308\nIE1JWA== 81309\nIEVsZWdhbnQ= 81310\nIGFjb3M= 81311\nKG1hY2hpbmU= 81312\nIG1lZGRsaW5n 81313\nIHZpbGU= 81314\nLWNvbXBhdGlibGU= 81315\nIGNyZWFtcw== 81316\nIFRhYmxlUm93 81317\nIFJlaGFiaWxpdGF0aW9u 81318\nQWJi 81319\nKHVzZXJJbmZv 81320\nX2V4cGlyZWQ= 81321\nLk9iamVjdE1ldGE= 81322\nIGdvZHQ= 81323\ndXN1YWw= 81324\nLmJpbmRpbmdOYXZpZ2F0b3JNb3Zl 81325\nIFJlZ2lzdHJhcg== 81326\nbWlncmF0aW9u 81327\nYXB0dXJlZA== 81328\nLHBhcmFtcw== 81329\nIGNlbnRlclk= 81330\nb3dhbg== 81331\nbG9jYWxlcw== 81332\nSW5wdXRNb2R1bGU= 81333\nIHZpZ2lsYW50 81334\nIG5jb2xz 81335\nIGluZ3I= 81336\nIGPDtHTDqQ== 81337\ndmVydGltZQ== 81338\nIHdpZGVzdA== 81339\nIEhERg== 81340\nIEFsZ2VyaWE= 81341\nIGNoYXR0 81342\nJHNlbGVjdA== 81343\nIl0pDQo= 81344\nIG11bHRlcg== 81345\nIENoZW5leQ== 81346\nZnVzY2F0ZWQ= 81347\nPSciLiRf 81348\nIERlbmlzZQ== 81349\nIHJpZmY= 81350\nQWJzZW50 81351\nIHRhbWHDsW8= 81352\nIGplc3pjemU= 81353\nLlByb2dyYW0= 81354\nCWJy 81355\nZXJhaXM= 81356\nIHNhbmRhbHM= 81357\nICws 81358\nIGRpc3NvbHV0aW9u 81359\nIHVudGVyc2NoaWVk 81360\nUHJvdg== 81361\nLnRyYW5zYWN0aW9ucw== 81362\nIFRyb3VibGU= 81363\nLm1pZGRsZQ== 81364\nLmdldERlY2xhcmVk 81365\nIHN3ZWF0aW5n 81366\nIEhhbmNvY2s= 81367\n6LS5 81368\nIHBvZw== 81369\nIEtpYQ== 81370\nIG1vZG5l 81371\nIEFjY2Vzc2liaWxpdHk= 81372\nIGxlYWthZ2U= 81373\nIGRlY2VwdGl2ZQ== 81374\nIFdPTQ== 81375\nINC+0YE= 81376\nIGNzYWs= 81377\nYWNvY2s= 81378\nLlN5bnRheA== 81379\nICxb 81380\nLicpLAo= 81381\nIGZvcmVjbG9zdXJl 81382\nIHVuZmF2b3I= 81383\nIGV4Y2w= 81384\nQ1VEQQ== 81385\nZGVuc2U= 81386\nPFVuaXQ= 81387\nIHZhcGluZw== 81388\nIG1hamVzdGlj 81389\naWF0b3Jz 81390\nIGF1dGlzdGlj 81391\nLmdhdGV3YXk= 81392\nVXJsUGFyc2Vy 81393\nSGVsbA== 81394\nIENvc3Rjbw== 81395\nIEhJUA== 81396\nT2JzZXJ2ZXJz 81397\nIFBlb3BsZXM= 81398\nIFNwb3RsaWdodA== 81399\nIFRhdmVybg== 81400\nIFRPVVI= 81401\ncGxpbmdz 81402\nLldSQVA= 81403\nIGFsZA== 81404\nTkFM 81405\nKCIqKio= 81406\nc2V0UHJvcGVydHk= 81407\nX1N0b3A= 81408\nYW5ub3VuY2VtZW50 81409\nIEltbWVkaWF0ZQ== 81410\nIEhTVg== 81411\nX1RFU1RT 81412\nIGNyYXZl 81413\nX1VD 81414\nLmRlY3J5cHQ= 81415\nKFJvbGVz 81416\nIHN1Ymo= 81417\nX0ludGVnZXI= 81418\nLm5vdE51bGw= 81419\nIEdzdA== 81420\nIEJ5cm5l 81421\nIEFxdWFyaXVt 81422\nIENhbmM= 81423\nX0NIQU4= 81424\nIERUTw== 81425\nLmhs 81426\nIG1lbmdndW5ha2Fu 81427\nRnJhbmM= 81428\nRGlhbG9nQ29udGVudA== 81429\nLi4uJwo= 81430\nIEt1bnN0 81431\nIEFsbG9jYXRvcg== 81432\nVVNBR0U= 81433\nS25vd2xlZGdl 81434\nCWNwdQ== 81435\nIG1vcmFscw== 81436\ncGF0aWVudHM= 81437\nIGlsaw== 81438\nIGNyaXRlcg== 81439\nIFZldA== 81440\nIE1lc3NpYWg= 81441\nX186 81442\nYXZlbm91cw== 81443\nX3ZpZXdlcg== 81444\nKERpY3Rpb25hcnk= 81445\nIEJvZGllcw== 81446\naGFzT25l 81447\n0LjQvNC10YA= 81448\nIHppcGNvZGU= 81449\nU3Rlcg== 81450\nIGLDoXM= 81451\nX0Rpc3BsYXk= 81452\nIGZpcm1h 81453\nIFJhaWRlcg== 81454\nIEtI 81455\nV2l0aERhdGE= 81456\nKEFSRw== 81457\nIHByb3Ry 81458\nIG1zZWM= 81459\nIGxhdmVuZGVy 81460\nKFV0aWw= 81461\nINC/0YDQvtCz0YDQsNC8 81462\nX211eA== 81463\nX2xhdGl0dWRl 81464\nUG9ydHJhaXQ= 81465\nIHNpdGNvbQ== 81466\nIGFkaWNpb24= 81467\nKGNvbnN0YW50cw== 81468\nIEFueGlldHk= 81469\nIFJvc2Vz 81470\nIHN0aW11bGF0ZWQ= 81471\nIGNocm9ubw== 81472\nIGZvc3NpbHM= 81473\nIEFpcmJ1cw== 81474\nbGVmdHJpZ2h0 81475\nIE3DqXRvZG8= 81476\nInc= 81477\nIGtsZWluZW4= 81478\nIGNsaXF1ZQ== 81479\nb21pbmF0aW9u 81480\nIG1vdGVs 81481\nL3ZlY3Rvcg== 81482\nZGVjbGFyYXRpb24= 81483\nIG5ld1k= 81484\nW0g= 81485\nLnNjYWxhcg== 81486\nb21ibw== 81487\naHVk 81488\nO3NldA== 81489\nZnR5cGU= 81490\nKCcnKS4= 81491\nb3JkZXM= 81492\neW5vcw== 81493\nJ10sCgo= 81494\nX0ZMVVNI 81495\naWRlbnRpZnk= 81496\nL2RldmljZXM= 81497\nIGRpY3RhdGVk 81498\nIGRlamFy 81499\nIEVtaW4= 81500\nIFBlbmRhbnQ= 81501\nIG9uVXBkYXRl 81502\nXSkpKQ== 81503\nIEJhcmtlcg== 81504\nT3Jt 81505\n6K+36YCJ5oup 81506\nX2d1aWRl 81507\nw6FiYWRv 81508\nb3BoZQ== 81509\nICIuCg== 81510\nIEJyZXdlcnM= 81511\nIGJyaWRhbA== 81512\nIENFUw== 81513\nX0NhdGVnb3J5 81514\nIEJUTg== 81515\nIERhcnRo 81516\nI2Zvcg== 81517\nZXRobmlj 81518\nYXJjaGl0ZWN0dXJl 81519\nIENvdXBl 81520\naWRvcmVz 81521\nIGZhc2Npc20= 81522\nIGNvbnRyYWRpY3Rpb25z 81523\nZWZmZWN0cw== 81524\nSW5pdGlhbFN0YXRl 81525\nIOekuuS+iw== 81526\nbWF0cGxvdGxpYg== 81527\nLmRlc2t0b3A= 81528\nINCt 81529\nIFFQaXhtYXA= 81530\nCWJlZ2lu 81531\nIHduZA== 81532\nIGNvbnRpZW5l 81533\nKGhlbHBlcg== 81534\nLk5vdGlmeQ== 81535\nKEJvb2s= 81536\nIEd1YXJhbnRlZWQ= 81537\ncGxs 81538\naW9sYQ== 81539\nIGZ1bmdp 81540\naXZlbnQ= 81541\nIE9B 81542\n5rKh5pyJ 81543\nIHdpxJljZWo= 81544\nCQoJCgkKCQo= 81545\n77yaIis= 81546\nIFRhbGtz 81547\nLnN0YXJ0ZWQ= 81548\nb2NpdGllcw== 81549\nIGVzcG9ydHM= 81550\nPElucHV0 81551\nIEVYQ0VQVElPTg== 81552\nIGFjdHU= 81553\nLmltcA== 81554\nICIvIgo= 81555\nT3RoZXJ3aXNl 81556\nIFBlbnNpb24= 81557\nIFdhdmVz 81558\nxrDGoQ== 81559\naWFyZHM= 81560\nICo8Lw== 81561\ndXJnZW9u 81562\nIFNDSQ== 81563\nIExhdXJlbA== 81564\nZXRhZw== 81565\nTmV0ZmxpeA== 81566\nIFJlc3BvbnNlcw== 81567\nIG5lb2xpYmVyYWw= 81568\naXNDb250YWluZWQ= 81569\nPW15 81570\nIHJlcHJpbnQ= 81571\nb25lc3RseQ== 81572\nIGRlcGFydGluZw== 81573\nUFdN 81574\nZXdoYXQ= 81575\nPSI8PA== 81576\nLnlhbmc= 81577\nIFRyYWRpdGlvbg== 81578\nKyI6 81579\nZGVwZW5kaW5n 81580\nX1VuaXQ= 81581\nIENvZGFibGU= 81582\nIHdoaXNreQ== 81583\nIGNvcnJlbGF0ZQ== 81584\nIGRpcmV0 81585\nTGFzdGx5 81586\nCU91dHB1dA== 81587\nKGlub2Rl 81588\nXExvZw== 81589\nIERlcGVuZGVuY2llcw== 81590\nV2lsbERpc2FwcGVhcg== 81591\nIFBhbmVscw== 81592\nIOKUnOKUgOKUgA== 81593\nIG9zdGVuc2libHk= 81594\nfC0t 81595\nQW5udWFs 81596\nIGF1dG9sb2Fk 81597\nVmFsdWVIYW5kbGluZw== 81598\nLmNvaW4= 81599\nZWR1Y3Q= 81600\nWlk= 81601\nIENhbnVja3M= 81602\nIHNtZWFy 81603\nIHJlYWxpZGFk 81604\nIHt7Cg== 81605\naXZvbA== 81606\nZXRTb2NrZXRBZGRyZXNz 81607\nIEtlbXA= 81608\nL0ZyYW1ld29yaw== 81609\nIHF1aWNrZXN0 81610\nXyIuJA== 81611\nIHdpdGhob2xkaW5n 81612\nIGludHJpZ3Vl 81613\nIEFERFI= 81614\nRGllc2U= 81615\nV2Vla2x5 81616\nX19fX18= 81617\nIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbg== 81618\nb2xhdGVk 81619\nUnVuTG9vcA== 81620\nIHBhc3PDqQ== 81621\nLmZpcmViYXNlaW8= 81622\nLmV1bGVyQW5nbGVz 81623\naXN0ZW5jZQ== 81624\nIGZlYXJpbmc= 81625\nIEVsZW1lbnRUeXBl 81626\nL1Rlc3Q= 81627\nIOafpeivog== 81628\nIGZvbmRv 81629\nIFBhcnI= 81630\nIHplc3Q= 81631\nIFRyYW5zZm9ybWVycw== 81632\nTGluZVN0eWxl 81633\nIGV0aGVybmV0 81634\nYWZmbGVz 81635\nIG5hbWVkdHVwbGU= 81636\nIFNjYWxhcnM= 81637\nTlNVUkxTZXNzaW9u 81638\nLWV4dGVuc2lvbg== 81639\nKE1lc3NhZ2Vz 81640\nIGF0ZW5jacOzbg== 81641\nIEplcnNleXM= 81642\nYmVkUGFuZQ== 81643\nIFN0dW5kZW4= 81644\nIHZvaXR1cmU= 81645\nIOm7mOiupA== 81646\nLm9wZW5nbA== 81647\nICJ9 81648\nIFJldmVuZ2U= 81649\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 81650\nSW5zdGFudGlhdGU= 81651\nIGVucg== 81652\nVmFsaWRhdGlvbkVycm9y 81653\nX0FMUkVBRFk= 81654\nTG90cw== 81655\nb2Nl 81656\nIHNjcmlt 81657\nIGVtYm9keQ== 81658\n0YDQsNGC 81659\nIGNvbmNlZGU= 81660\nYXNzZWw= 81661\nIEJSRQ== 81662\nUExFQVNF 81663\nCWRpZmY= 81664\n57uT5p2f 81665\nLmZw 81666\nYmFt 81667\nTWVhbA== 81668\nIE1hZG9ubmE= 81669\nIHB1bmlzaGFibGU= 81670\naWZmaWVz 81671\nX3VuaXg= 81672\n7JmA 81673\nIEdhZ2E= 81674\nInN0cnVjdA== 81675\nVG9TZW5k 81676\nIE9DUg== 81677\nIHByYWlzaW5n 81678\nZ2V0U3RvcmU= 81679\nIGV1dGg= 81680\nIGFycmVnbG8= 81681\nIGZlcm0= 81682\nZmRm 81683\nQ29vbGRvd24= 81684\nIFJlY3ljbGluZw== 81685\nQW5h 81686\naW5kcg== 81687\nX0hQ 81688\nIEdvdmVybmFuY2U= 81689\nIGJhcnJhZ2U= 81690\nL2Nh 81691\nICwo 81692\nRsO8cg== 81693\nIElTUHM= 81694\nIG1lbmFjZQ== 81695\nVmlyZ2luaWE= 81696\nIGZhbmM= 81697\nIG5vbWJyZXM= 81698\nLmluc3RydWN0aW9ucw== 81699\nIGVzY2FsYXRlZA== 81700\nYWdpbmE= 81701\nIExldmluZQ== 81702\nCWZpbmQ= 81703\nX2Vy 81704\nIGRlanRpbmdzYWo= 81705\nc3Zw 81706\nYWdvcw== 81707\nKHNvbA== 81708\nIExpZA== 81709\nUFJJVkFURQ== 81710\nIElNUExFTUVOVA== 81711\nZWZlbGxlcg== 81712\nKFRhcmdldA== 81713\n4LmJ4Lit4Lih 81714\naG91c2luZw== 81715\nLnNldEN1cnNvcg== 81716\nIG5laG1lbg== 81717\nLnJlY2VpdmVy 81718\nIFR1dG9y 81719\nIG1hdHRlcmVk 81720\nbWRhdA== 81721\ncmVndWxhdGVk 81722\nIGdldEFkZHJlc3M= 81723\nIE1pbnV0ZW4= 81724\nIElV 81725\n0LvQsNCy 81726\nIHR1cm5vdmVycw== 81727\nIHN1aXRhYmlsaXR5 81728\nCWVzYw== 81729\nY2FsY3Vs 81730\nX1N0cmVhbQ== 81731\nX2ZpbGVuYW1lcw== 81732\nLXZhcnM= 81733\nLi4uLi4KCg== 81734\nRGlh 81735\nIHN3aW1z 81736\nT3B0aW1pemVy 81737\nPGJvb3N0 81738\nIFBlcm1pdA== 81739\nJ10pKXs= 81740\nXE9wdGlvbnNSZXNvbHZlcg== 81741\n5qGI 81742\nIGhlY3RhcmVz 81743\nKHVz 81744\nIERldmVsb3Bpbmc= 81745\nX3hz 81746\nIG5vdmVsaXN0 81747\nIENvbnZlbmllbmNl 81748\nd2Fsa2luZw== 81749\nIGNoYXJtcw== 81750\nIExlYXNl 81751\nCUhBTA== 81752\nKFsm 81753\nIHJlc3RhcnRlZA== 81754\nTWFnZQ== 81755\nSXB2 81756\nINGN0Lo= 81757\nUkxG 81758\nIGFzc2VtYmxpbmc= 81759\nIEVjYw== 81760\ndmluZm9z 81761\ncGVkaWRv 81762\nIHN5bm9wc2lz 81763\nIFN0YW50b24= 81764\nc3RhcnR1cA== 81765\nLmdldHZhbHVl 81766\nIEtpdHQ= 81767\ncHJvcGVy 81768\nIHByZXRyYWluZWQ= 81769\nIFBFTg== 81770\nLlRlcm0= 81771\nIHBlcXU= 81772\nZXBoaXI= 81773\nIEFsbGllcw== 81774\nIG1vZGVsQW5kVmlldw== 81775\nIGJ1dHRlcmZsaWVz 81776\nIEtpcnN0 81777\nIENoZWNrZXI= 81778\nIGN1bm5pbmc= 81779\nLnNldFk= 81780\nX01hc3Rlcg== 81781\nSW5jcmVhc2luZw== 81782\nIGh1cmRsZQ== 81783\nIGZpc3Rz 81784\nIFNsb3Zha2lh 81785\nIG5vbWJyZXV4 81786\nIDo6Cg== 81787\ndGFza0lk 81788\nIGZvbGx5 81789\nPFRyZWVOb2Rl 81790\nIFZvbGRlbW9ydA== 81791\nIGJsaXN0ZXI= 81792\nxYJl 81793\nLkVudGl0eU1hbmFnZXI= 81794\nLkRPV04= 81795\nIEdyZWdn 81796\nLWNvb3JkaW5hdGU= 81797\nKHZj 81798\nw6FiYg== 81799\nLlRvZ2dsZQ== 81800\nIExpc2Jvbg== 81801\n56I= 81802\nINC/0L7Rgg== 81803\ncGFyZW50Tm9kZQ== 81804\nLnNldFNjYWxl 81805\nX01JU1NJTkc= 81806\nIG91dHJh 81807\nIGt1cA== 81808\nYF0= 81809\nX3ZpYQ== 81810\nZWRpY3M= 81811\nIEJvcmRlcnM= 81812\nIGlwYWQ= 81813\nIGVkdA== 81814\nIENhcnRlc2lhbg== 81815\nL21hYw== 81816\nIGJhcmxleQ== 81817\nIFNjYXJsZXQ= 81818\nICAgIAogICAgCiAgICAKICAgIAo= 81819\ncXVlcnlQYXJhbXM= 81820\nIHJoeXRobXM= 81821\nIGdlYXJpbmc= 81822\nWlg= 81823\naHlkcmF0aW9u 81824\nU1RT 81825\nIHBsZW50aWZ1bA== 81826\nY29ycA== 81827\nfUA= 81828\naW50ZWdy 81829\nL2F0 81830\nLmRlYg== 81831\nIHVuZGVuaWFibGU= 81832\nIG9wZW5zc2w= 81833\nLmRlYWQ= 81834\nIFBpbGxvdw== 81835\nIEJlYW5z 81836\nLmFudA== 81837\nX3Fz 81838\nLWluZm9ybWF0aW9u 81839\nIOuzgOyImA== 81840\nJSIpLAo= 81841\nINC00YDRg9Cz 81842\nIFNwb25nZQ== 81843\nIHNpZnQ= 81844\ndGVzdGltb25pYWw= 81845\nIHVubmF0dXJhbA== 81846\nVUlTY3JvbGxWaWV3 81847\ndmVyZ2VuY2U= 81848\nKHRleHRCb3g= 81849\nLXBhZ2luYXRpb24= 81850\nIERpc3F1cw== 81851\nX3Byb2R1aw== 81852\nYWduYXI= 81853\nS2V5VXA= 81854\nCQkJICAgICAgICA= 81855\n0LXQu9C1 81856\nPHNvdXJjZQ== 81857\nLmls 81858\nLmF0b20= 81859\nX0NvbXBvbmVudA== 81860\nIHlu 81861\nWydfXw== 81862\nIHdlYWtlc3Q= 81863\nX2RlY3J5cHQ= 81864\nL21zZw== 81865\nY2Jj 81866\nIHBvbGl0ZWx5 81867\nb21hdA== 81868\nIGVubGlnaHRlbm1lbnQ= 81869\nIGNyZWE= 81870\nIGJydWs= 81871\nX2FscmVhZHk= 81872\nIHNvY2tmZA== 81873\ndW5wYWNr 81874\nb3JnZXM= 81875\nIFVORVNDTw== 81876\naW5hbGl0eQ== 81877\nIHNlbnRpbmVs 81878\nIGFmZmx1ZW50 81879\nIHRocm93RXJyb3I= 81880\naWV0cw== 81881\nQU5KSQ== 81882\nIFN1ZmZvbGs= 81883\nYmVybw== 81884\na2V0w7h5 81885\nRW5kcG9pbnRz 81886\nZXhlY3V0b3I= 81887\nR2E= 81888\nLkxB 81889\nX3BvcnRmb2xpbw== 81890\ndW5zY2g= 81891\nZWxhZ2U= 81892\nIGdvYmllcm5v 81893\nIEJpb2w= 81894\nTW9kaWZpY2F0aW9u 81895\nIERlY2ltYWxGb3JtYXQ= 81896\nIFZvY8Oq 81897\nIG1ldGhvZG9sb2dpZXM= 81898\nW10u 81899\nIEdW 81900\nIHJlcGxpY2Fz 81901\n4oCUd2l0aA== 81902\nKTspOwo= 81903\ncG9zaXg= 81904\nU3VjY2Vzc0xpc3RlbmVy 81905\ncGhl 81906\nX25vcm1hbGl6ZQ== 81907\nIExhcmdlcg== 81908\nIHJlcGVyY3Vzc2lvbnM= 81909\nX1ZlcnQ= 81910\nIGhvc3RlbA== 81911\nIGluY29tcGV0ZW50 81912\naGV2 81913\nX0RFTFRB 81914\nIHB1ZWRv 81915\naW5zdGFsbGF0aW9u 81916\nX2ZyYWc= 81917\nKHJy 81918\nIE1BVg== 81919\nIExvY2FsaXphdGlvbg== 81920\nKCIiKS4= 81921\nIC0tLS0tLS0tLQ== 81922\nDQoK 81923\nIFB5VHVwbGU= 81924\nIEp1bGlv 81925\nCUdMdWludA== 81926\nbWFya3Vw 81927\nX0ZBTUlMWQ== 81928\nUFJPR1JBTQ== 81929\nIEZpcm13YXJl 81930\nKnNpemU= 81931\nV2lmaQ== 81932\nIHZpc2l0YQ== 81933\nIEVybA== 81934\nRmluZE9iamVjdA== 81935\nLlVOUkVMQVRFRA== 81936\ncGh0aGFsbQ== 81937\nIHBlcnNvbmFsaXpl 81938\nIGNyw6lhdGlvbg== 81939\nICAgIAkg 81940\nLnByZWNpc2lvbg== 81941\nIHNldHRlcnM= 81942\nIG5ld1NpemU= 81943\nIENhdGFsYW4= 81944\nCW9wdGlvbg== 81945\nIHBpZWw= 81946\nIGNhZ2Vz 81947\nIFN0ZW0= 81948\nZHJhd2luZw== 81949\nZXhwbGFpbmVk 81950\nIOaOpw== 81951\nIGRyZWFkZnVs 81952\nZXJydXB0ZWQ= 81953\nLmdldFZhbHVlQXQ= 81954\nIGVsYXBzZWRUaW1l 81955\nIGluZGVmaW5pdGU= 81956\nIFRIQU5L 81957\nX3N0YXJ0dXA= 81958\nU1VSRQ== 81959\nIGtpZG5leXM= 81960\nIEN1aXNpbmU= 81961\nfGFycmF5 81962\nU2VuZE1lc3NhZ2U= 81963\nZmF2 81964\nIEFlcm9zcGFjZQ== 81965\nX21lYW5z 81966\nIG5lYg== 81967\nIE9UUA== 81968\nIGNodXJu 81969\nL2Zy 81970\nIFJlaWdu 81971\nX2NsYXNzaWZpY2F0aW9u 81972\nIE1hY0RvbmFsZA== 81973\nIi4KCgoK 81974\nIGNoaWxseQ== 81975\nIOivt+axgg== 81976\naWhhdA== 81977\nU1RB 81978\nJ2F1dHJlcw== 81979\nIGxhc2M= 81980\nLm1peA== 81981\nIGJsb3Q= 81982\nIElERA== 81983\nZGF0YXRhYmxl 81984\nc3BpZWw= 81985\nIMOpeGl0bw== 81986\nYXJ0aWM= 81987\nLkF4aXM= 81988\nLmFkdmFuY2U= 81989\nIG1vdXNlWA== 81990\nJ8Og 81991\nIHJlY2lldmVk 81992\nIHBvc2k= 81993\nIGZvdXJu 81994\nIE1hZmlh 81995\nIHBjYQ== 81996\nYmVsb25ncw== 81997\nYWJseXR5cGVk 81998\nQVVUSE9SSVpFRA== 81999\nLnNjYWxhYmx5dHlwZWQ= 82000\n7JyE 82001\nLWRvdA== 82002\nIGVtcGhhc2l6aW5n 82003\nTWVtYmVyc2hpcA== 82004\nKnBvdw== 82005\nLXNwaW4= 82006\ncnV0YQ== 82007\naGV2aWs= 82008\nX0FTWU5D 82009\nX2NvbXBpbGVy 82010\nLkZsYWc= 82011\nIGVsYm93cw== 82012\nLkNSRUFURQ== 82013\nTWV0cm8= 82014\nLmxvZ3M= 82015\nem1hbg== 82016\ncG9uZQ== 82017\nxJnFvA== 82018\nIGludGVycw== 82019\nIHdlYnM= 82020\nX0hJRERFTg== 82021\nCW5vdw== 82022\nQ29tbXVuaWM= 82023\nJHRwbA== 82024\nc2NvcGVz 82025\nIFppa2E= 82026\nIHN0cmluZ3N0cmVhbQ== 82027\nIFVuY2F0ZWdvcml6ZWQ= 82028\nRlk= 82029\nL3N3YWdnZXI= 82030\nUGVubg== 82031\naW1lSW50ZXJ2YWw= 82032\nIGNvbnRlbmRz 82033\neGllcw== 82034\nIFNhbGVzZm9yY2U= 82035\nIHV0ZW5z 82036\nIHVuZGlz 82037\nQ3J5c3RhbA== 82038\nLm5kaW0= 82039\nIGZvcm11bA== 82040\nIEZhdg== 82041\n5bm/ 82042\ncmlzaw== 82043\nbmFk 82044\nL3Rvcw== 82045\nIFBFUkZPUk1BTkNF 82046\nIHdyaXRlbG4= 82047\nIGNvbGxv 82048\nYW50aWNhbGx5 82049\nVURFTlQ= 82050\nUmdi 82051\nIG9mZXJl 82052\nIG1lcmdlcw== 82053\nZmlkZg== 82054\nIGt6 82055\nVmljdG9yaWE= 82056\nIC9eXA== 82057\nIGt1YmU= 82058\nIEFwb3N0bGU= 82059\nIGRlZmVuZHM= 82060\nPD0o 82061\nIE1FTU9SWQ== 82062\nXElk 82063\nIEFjdGl2ZUZvcm0= 82064\nIE9uZVBsdXM= 82065\nSHR0cFNlcnZsZXRSZXF1ZXN0 82066\nIFRlbXBEYXRh 82067\n7KCB 82068\nLkFTQ0lJ 82069\n2YTYpw== 82070\nS0k= 82071\nIGZyYXQ= 82072\nX0NJUEhFUg== 82073\nLlN1cmZhY2U= 82074\nIHBpdGZhbGxz 82075\nLW1lZGlhdGVk 82076\neXBp 82077\nLWFsaXN0 82078\neEJD 82079\ndGVhY2hlcnM= 82080\nIEN5Yw== 82081\nIHBzeWNoZWRlbGlj 82082\nIER1bWJsZWRvcmU= 82083\nIikuCgo= 82084\nIFRoYXRjaGVy 82085\nIFByaW5jaXBsZQ== 82086\nVG9nZXRoZXI= 82087\nIGZsb3Jh 82088\nd2Vla3M= 82089\nX2NyaXRlcmlh 82090\nYm9uZXM= 82091\nLmludGVybmV0 82092\nIGJsb2NrRGlt 82093\nLlNpbmdsZU9yRGVmYXVsdA== 82094\nRGljZQ== 82095\nIEV2ZWw= 82096\nIFRMYWJlbA== 82097\nIElnb3I= 82098\nIENvcHA= 82099\nIGluYXVndXI= 82100\nL3ByaXZhdGU= 82101\nIGFiZXJy 82102\nbmRz 82103\nO2lm 82104\nLXJhbmdpbmc= 82105\nYWNodHM= 82106\nX21hcnNoYWxs 82107\nIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18= 82108\nLmVuZFRpbWU= 82109\nIE1vZGVsUmVuZGVyZXI= 82110\nKGZvb2Q= 82111\nKCJ+ 82112\nIHN1cHBs 82113\nKCJcKA== 82114\nU3E= 82115\nVHJhbnNsYXRlZA== 82116\nIENvbnRpbnVpbmc= 82117\nIHBvc3Nvbm8= 82118\nRklYTUU= 82119\nIEFuZ2Vib3Q= 82120\naWV2ZXI= 82121\nIEt5b3Rv 82122\nY2ls 82123\nTmV3VXJsUGFyc2Vy 82124\nLkRp 82125\nIGh1bWFuZQ== 82126\nRGVtYW5k 82127\nIE1hcnRpYW4= 82128\nd29vZHM= 82129\nIEhlYWw= 82130\nIFl1ZQ== 82131\nIGNvdXJ0aG91c2U= 82132\nIHZvbnQ= 82133\nIGJvbnM= 82134\naW50ZWdyYWw= 82135\nICQoJyMn 82136\nZXRlcm1pbmF0aW9u 82137\nLm1vZGlmaWVk 82138\nIHByaW5jaXBhbHM= 82139\nIGFsYXJtZWQ= 82140\nLmNyZWF0ZU9iamVjdA== 82141\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 82142\nL2NvdW50 82143\nIGVudHJlbmNoZWQ= 82144\nXGE= 82145\nIGludHJ1c2lvbg== 82146\nIE54 82147\nCQkKCQkKCQkK 82148\nY2hlbWF0aWM= 82149\nIHNsaWRlcnM= 82150\nIHNlbGVjdGFibGU= 82151\nX25s 82152\naWVzZQ== 82153\nX2VzdGltYXRvcnM= 82154\nIFN2Zw== 82155\nIGRlbGV0ZVVzZXI= 82156\nKG1hcHBpbmc= 82157\nIOyymOumrA== 82158\nIGFudGFnb25pc3Q= 82159\nIGtpbmFzZQ== 82160\nIHdlbGRlZA== 82161\nIExlbmE= 82162\nZWRpdGg= 82163\naWFsaQ== 82164\nKHBpYw== 82165\nIGJyZWFjaGVk 82166\nUElD 82167\nIGNvYXN0ZXI= 82168\nRkRB 82169\nIGtyZQ== 82170\ncGVyZmls 82171\nIEdlbXM= 82172\nX2ZlbmNl 82173\nVVJMUmVxdWVzdA== 82174\n4oCZYXBw 82175\nUkVGRVJFTkNF 82176\nLkV4cG9ydA== 82177\nIG1pbmltaXplZA== 82178\naXBlbA== 82179\naWRhdGE= 82180\nKWRlYWxsb2M= 82181\nZXNjYWw= 82182\nX2Z3ZA== 82183\nbWVtY3B5 82184\nIExvcmk= 82185\nX1JlZg== 82186\nIGJhcmE= 82187\nIFNlbGxlcnM= 82188\nIGRldGVyaW9yYXRpb24= 82189\nZnJhY3Rpb24= 82190\nKV07 82191\nL3BsYXk= 82192\nwqU= 82193\nLXRlc3Rz 82194\nT2Zmc2V0cw== 82195\nT2k= 82196\nIEtsYXVz 82197\nIHF1ZXJ5aW5n 82198\nd2lzaA== 82199\nYXBlbA== 82200\nX3dvcmtpbmc= 82201\nbXlNb2RhbExhYmVs 82202\nIHRvRGF0ZQ== 82203\ncGVybWFsaW5r 82204\nIGZyZWM= 82205\nb2xlY3VsZXM= 82206\nIEdvb3Nl 82207\nLXdpZGdldHM= 82208\ndHVydGxl 82209\nSW1wcm92ZWQ= 82210\nIHJvYWR3YXk= 82211\na2Vocg== 82212\nIGFzdHJvbm9teQ== 82213\nQ29tYmluZQ== 82214\nIGNpZ2Fycw== 82215\nX0dBVEU= 82216\nL21hbmFnZQ== 82217\nIEdlcmFyZA== 82218\nIFByb3RlY3Rvcg== 82219\nU3Vic3lzdGVt 82220\nL2ZpbmQ= 82221\nL1lZWVk= 82222\nIHRvdGFsaW5n 82223\n0LzQvtGC 82224\nIE9tYW4= 82225\nIGluZmluaXQ= 82226\nLW9mZmljZQ== 82227\nIGluc3RhbnRpYXRpb24= 82228\nLsKn 82229\nY2V1 82230\nKGF0b20= 82231\nIERyb3BvdXQ= 82232\n7YGs 82233\nIGNvbmRlbW5pbmc= 82234\nX2Jhc2VuYW1l 82235\nXX08Lw== 82236\nRGF0YUNvbnRleHQ= 82237\nIFdhc2hpbmc= 82238\nLk9O 82239\nIG1vbW15 82240\nKCl9Owo= 82241\nIDspCgo= 82242\nL2V4dA== 82243\nZm9yZWdyb3VuZENvbG9y 82244\ndW5zdXBwb3J0ZWQ= 82245\nIHNvbGxlbg== 82246\nIGNvbWXDpw== 82247\nRElTQUJMRQ== 82248\nIG9uUGF1c2U= 82249\nINGH0YLQvtCx0Ys= 82250\nIEFpbg== 82251\nR3M= 82252\nCVRhc2s= 82253\naGF3aw== 82254\nIk5vdA== 82255\nQUdS 82256\nLmdldFRhYmxl 82257\nIGRpdmVyZ2VuY2U= 82258\nIG5lZ29jaQ== 82259\nUmVwbGFjaW5n 82260\nXX0pCg== 82261\naWxsdXNpb24= 82262\nIM6U 82263\nX0tFWUJPQVJE 82264\nS3I= 82265\nCW9y 82266\n56Gu6K6k 82267\nCXByaW50bG4= 82268\nIFNlYXJjaGVz 82269\nIEZyZXNubw== 82270\nIHZlcmRhZA== 82271\nXE1pZGRsZXdhcmU= 82272\nIOy1nA== 82273\nfSkoKTs= 82274\ndGV4dEFsaWdu 82275\naW5rZWw= 82276\nLlR4dA== 82277\nIG9wdGltaXphdGlvbnM= 82278\neW91bmc= 82279\nIGxlYXNlZA== 82280\nSlQ= 82281\nIElvbmljTW9kdWxl 82282\nZXR0aW5ncw== 82283\nZXNlaGVu 82284\nIGZhdm91cmFibGU= 82285\nYW5leQ== 82286\nIG90aGVyQnV0dG9uVGl0bGVz 82287\nIFRoYW1lcw== 82288\nCXVuaXQ= 82289\nQ09MVU1O 82290\nIGxvaQ== 82291\nLHByb3Rv 82292\nX1BSSQ== 82293\nIHdhbmRlcmVk 82294\nIHNhcGk= 82295\nYmFja3dhcmQ= 82296\nYXJhb2g= 82297\nIEZI 82298\nIEFsZw== 82299\nCWFj 82300\nYXJybw== 82301\n5Y6G 82302\nIFNPUw== 82303\nIERyZWFk 82304\nVmVjdG9yWGQ= 82305\nLnJtdHJlZQ== 82306\nX2V4ZWN1dG9y 82307\nIHByZWduYW5jaWVz 82308\nIHByYWN5 82309\nIFd3dw== 82310\nIEFyY2hiaXNob3A= 82311\nIG1laW5lbg== 82312\nRlU= 82313\nLkVudg== 82314\nIGVubGlnaHRlbmVk 82315\nIG9yaWdpbmF0ZQ== 82316\n5Y+K 82317\nIHpsaWI= 82318\nX1NB 82319\nIHdhc3Rlcw== 82320\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 82321\ncHJhcw== 82322\nIGhvcnJpZmllZA== 82323\nIENhbGR3ZWxs 82324\ndG95 82325\nX3Nob3Q= 82326\nIGxlc2Jp 82327\nIE1hZ25ldA== 82328\nb3hpYw== 82329\nU3VybmFtZQ== 82330\nIHNob3dUb2FzdA== 82331\nCURlc3Ryb3k= 82332\nLmdldEV4dGVybmFs 82333\nSUxJ 82334\nIE5ldmlsbGU= 82335\ndHNreQ== 82336\nIG1lbGFrdWthbg== 82337\nICImIw== 82338\nIGZsb3dlcmluZw== 82339\nIHZldGVyaW5hcmlhbg== 82340\nIGhhcm1vbmlj 82341\nIENhc3NhbmRyYQ== 82342\nKENyZWF0ZQ== 82343\ncGVyc2U= 82344\nUGVybQ== 82345\nKU5TU3RyaW5n 82346\nIGlzSW4= 82347\nIEZsb2F0aW5nQWN0aW9uQnV0dG9u 82348\nL05ldw== 82349\nIPCd 82350\nY2FwYWJpbGl0eQ== 82351\nIGN1Y2tvbGQ= 82352\nIEJhaW4= 82353\nKCl7DQoNCg== 82354\nUEVBUg== 82355\nIGphd3M= 82356\nIGdvZGU= 82357\nIGNhc3NldHRl 82358\nLmZyZXF1ZW5jeQ== 82359\nU0NPUkU= 82360\nLmludGVudA== 82361\nOlsi 82362\nIOWmguaenA== 82363\n77yf4oCd 82364\nL0ltYWdl 82365\nIHNpZW5kbw== 82366\nX2FsbG9jYXRpb24= 82367\nOkI= 82368\nL1JlZ2lzdGVy 82369\nX2thdGVnb3Jp 82370\ndW55YQ== 82371\nLmluc3RhbmNlcw== 82372\nIFVOSVZFUlNJVFk= 82373\nIHBsZWFzYW50bHk= 82374\nIGdsYW5kcw== 82375\nIFlFTExPVw== 82376\nIFRoaWNr 82377\nQW10 82378\nIHByeQ== 82379\nIGx1aw== 82380\nKHByb2JsZW0= 82381\nIHByb2plY3Rpbmc= 82382\nW25vdw== 82383\nIGVzdG95 82384\nKCgpPT4= 82385\nIHdheXBvaW50cw== 82386\nIEJsaWNr 82387\nLlJlcXVpcmU= 82388\nTGFrZQ== 82389\nIElHTk9SRQ== 82390\nIFFIQm94TGF5b3V0 82391\nX3Jlc3BvbnNlcw== 82392\nLndy 82393\nJmFjdGlvbg== 82394\nLmNoYXJhY3RlcnM= 82395\nSVc= 82396\ncGFnZU51bQ== 82397\nIGRpc3RyYWN0aW5n 82398\nXS0n 82399\ncGVlcw== 82400\nb3VuY3k= 82401\nIHNlZ3U= 82402\nLmdldFNlbGVjdGlvbk1vZGVs 82403\nSW5saW5pbmc= 82404\nJ2FmZg== 82405\nIFByZXNlcnZl 82406\nIGFjcXVhaW50YW5jZQ== 82407\nIGFudXM= 82408\naW5zdGl0dXRpb24= 82409\nIC8vKg== 82410\nIFNpY2s= 82411\nIEtvZGk= 82412\nIEFWUg== 82413\nIGJldHI= 82414\nIEJlcm5zdGVpbg== 82415\nLGN2 82416\nY2Ni 82417\nQ0FG 82418\nCXNpZ25hbA== 82419\n6KiI 82420\nUmVzdWx0c0NvbnRyb2xsZXI= 82421\nIHNhbG9wZXM= 82422\nIHBoZW5vdHlwZQ== 82423\ndWJhaA== 82424\nX2RhdGFzZXRz 82425\nIGdyYWNpb3Vz 82426\nIENsaXBib2FyZA== 82427\nIGdlbmRlcnM= 82428\nZG93bmxvYWRz 82429\nRXhwZXJpbWVudGFs 82430\nIGJla2FubnQ= 82431\nIG5pdmU= 82432\nLkVk 82433\nZGlzbWlzcw== 82434\nXFR3aWc= 82435\nLkF2 82436\nL3Rhc2tz 82437\nLnBpY2tsZQ== 82438\nKkI= 82439\nY2VzdG9y 82440\nY2FwaXRhbGl6ZQ== 82441\nLkdldFNlcnZpY2U= 82442\nS2V5SWQ= 82443\nLnBpdGNo 82444\nIENvbnRyb2xsZWQ= 82445\nLnNhdmVk 82446\nIHphag== 82447\nIENhdGh5 82448\nKENhbmNlbGxhdGlvblRva2Vu 82449\nLWFuaW1hdGU= 82450\nXFxc 82451\nIEphc21pbmU= 82452\nLkxJTkU= 82453\nIGJvdGhlcnM= 82454\nIGJ1ZmZhbG8= 82455\nIEZPUkVJR04= 82456\nIHRhY2tsZWQ= 82457\nX0hFQVA= 82458\nIHNlcnZpYw== 82459\nPj4s 82460\nIEFjdG9ycw== 82461\nLlR4 82462\nZWJ4 82463\nX3Zpc2l0b3I= 82464\nX21hcnNoYWxlZA== 82465\nLG1hcA== 82466\nIGhlYXRlcnM= 82467\nIHVMb2NhbA== 82468\nIEthcG9vcg== 82469\nIG1pbnV0 82470\nLnJlYWRBcw== 82471\nIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u 82472\nX1ZPTFQ= 82473\nLmJ6 82474\nIGNvcnJlY3Rpbmc= 82475\nU0VQ 82476\nYnJpbmc= 82477\nSHU= 82478\nIEd1cw== 82479\nQUFE 82480\naWVyYW4= 82481\nZnJhcmVk 82482\nX3JvbQ== 82483\nIHNjYXJjaXR5 82484\nIGFwb2xvZ2lzZQ== 82485\nIHNvbGlkcw== 82486\nIEZvcm1hdHRlcg== 82487\nICclJA== 82488\nLXZpcw== 82489\nIiwiIiw= 82490\nVU5ERVI= 82491\nISEhIQoK 82492\nIEVsZXZlbg== 82493\nKSld 82494\nIHNhdGlyZQ== 82495\nXHVC 82496\nIHNldmVudGVlbg== 82497\nTEFOR1VBR0U= 82498\nIGFkdmVyc2FyeQ== 82499\nIHN0cmZ0aW1l 82500\nIG5leHVz 82501\ndWJpdHM= 82502\nICclIg== 82503\nIFNLSVA= 82504\nS0hS 82505\nLmJhdA== 82506\nIEplYW5z 82507\nLj8= 82508\nIGltcG9zdA== 82509\nLnF0eQ== 82510\nQ29tcHJlc3Npb24= 82511\nIHByaW5jaXBhbGVz 82512\nb25pbw== 82513\nIGJhcmNlbG9uYQ== 82514\nIENoaWxp 82515\nX21vc3Q= 82516\nLnVm 82517\nIGNvbnRlbnRWYWx1ZXM= 82518\nIEZpc3Q= 82519\ndWdhZG9y 82520\nVGV4dFdyaXRlcg== 82521\nQkFDS0dST1VORA== 82522\nIGxpdnJv 82523\nIERlc2lyZQ== 82524\nbWVhc3VyZW1lbnQ= 82525\nUHJvYmU= 82526\nIHB1ZGRpbmc= 82527\nLnNob3dFcnJvcg== 82528\nIHVudGVyc3TDvHQ= 82529\n44CB44CB 82530\nIMSHZQ== 82531\nIHB1bml0aXZl 82532\n5q2i 82533\nTGlzdEdyb3Vw 82534\nLkFyZWE= 82535\nIPCfmIkKCg== 82536\nb29yZA== 82537\nIHNjcmFwaW5n 82538\nKHRpY2tldA== 82539\nIFdvY2hl 82540\nIGV4cGVjdGVkUmVzdWx0 82541\nIEtvc3Rlbmxvcw== 82542\nY29uZmlndXJlZA== 82543\nX3N0cmVycm9y 82544\nLmFkZEhhbmRsZXI= 82545\nbW91c2VsZWF2ZQ== 82546\nIEZlbGlwZQ== 82547\nIENoaW0= 82548\nX0NTUg== 82549\nUENB 82550\naWZpY2HDp8Ojbw== 82551\nKysKCg== 82552\neWFz 82553\nIOaWueazlQ== 82554\nIElETQ== 82555\nIGFuaW1hdGVXaXRoRHVyYXRpb24= 82556\nIHNhbWVu 82557\nLnN1YnRpdGxl 82558\nX0tleURvd24= 82559\nIFRyZXk= 82560\nIHRlbXBvcmFkYQ== 82561\nIHNwZA== 82562\nIFJj 82563\nIE1hc3NpdmU= 82564\nIGJvd3M= 82565\nSG9zcGl0YWw= 82566\nIGdyb290 82567\nIHBhdmluZw== 82568\nIGNob3Jlcw== 82569\nIEFsbHk= 82570\nIGNlcnRpZmljYXRpb25z 82571\nIHhib3g= 82572\nc2VsZWN0QWxs 82573\nR2FtZU92ZXI= 82574\nIGNvcm5lcnN0b25l 82575\nUmVjb3ZlcmVk 82576\nIGRlZW0= 82577\nVWx0cmE= 82578\nIGdldExhc3Q= 82579\nIGFsbWE= 82580\nLnRleHRGaWVsZA== 82581\nIHdhaXZlZA== 82582\nPih7Cg== 82583\nIEVzdHI= 82584\naXNhYmxl 82585\nIHByb3Rvbg== 82586\nX2ZhY2Vib29r 82587\nX1RSQUlO 82588\nIGNvb3BlcmF0aW5n 82589\ndW5naQ== 82590\nQXJpem9uYQ== 82591\nI2VjaG8= 82592\nLWV4cHJlc3Npb24= 82593\nLm1pbnV0ZXM= 82594\nIHByZWZpeGVk 82595\nIGZpc2hlcmllcw== 82596\nLmNvcnJlY3Q= 82597\nIG7Dpg== 82598\nKFNwcml0ZQ== 82599\nTW9kcw== 82600\nIFZpZGU= 82601\nIGdldEJ5SWQ= 82602\nIEtleW5lcw== 82603\nIEVneXB0aWFucw== 82604\nX0NPRA== 82605\nQmllbg== 82606\ncmVvcGVu 82607\naWdoZXQ= 82608\nUkVERU5USUFM 82609\nIHVud2luZA== 82610\nJA0K 82611\nIHJhY2tldA== 82612\nIGZsb2F0VmFsdWU= 82613\nIFNwZWNpYWx0eQ== 82614\nb2NhdGU= 82615\nbW91bnRlZA== 82616\nQXR0ZW1wdHM= 82617\nT2ZmaWNlcnM= 82618\nSGFzaFRhYmxl 82619\nIGTDqXZlbG9wcGVtZW50 82620\nIGRhcA== 82621\nIG10eA== 82622\nTmFycmF0ZWQ= 82623\na0I= 82624\nX1NUQQ== 82625\nLUNsYXNz 82626\nIGR1bA== 82627\nIExlYWRz 82628\nIHRyw6pz 82629\nZnJpZW5kbHk= 82630\nIEZpbHRlcmluZw== 82631\nLXByb3ZpZGVy 82632\nINGD0YHQvw== 82633\nIEtvbGthdGE= 82634\nbWFza2Vk 82635\nSURhdGE= 82636\nIFt8 82637\nwqQ= 82638\nIFJlZXNl 82639\nIEhvbm9sdWx1 82640\nVG9PYmplY3Q= 82641\nIHRocmlmdA== 82642\nYXNzaQ== 82643\nIGNvbmdyYXR1bGF0aW9ucw== 82644\nU0tJ 82645\nZW50YXJpb3M= 82646\nIEZST05U 82647\ndWZpZw== 82648\naG9u 82649\nCWdldGxpbmU= 82650\nIGhlYXJ0eQ== 82651\nY2FsaW5n 82652\nIMOpY29ub20= 82653\nICoqKi8K 82654\nX0hFUkU= 82655\nYCg= 82656\nTWljaGlnYW4= 82657\nQmVhbnM= 82658\nLXJvdXRl 82659\nIHByaW5j 82660\nIEd1aWRhbmNl 82661\nCWVtaXQ= 82662\nLk9Q 82663\ndGhpYw== 82664\nZWxvcGU= 82665\nIElSZXF1ZXN0 82666\nIGhhbmRsZUNsb3Nl 82667\nZGF0YUFycmF5 82668\nLkV4ZWN1dGVTY2FsYXI= 82669\nRVBISVI= 82670\nIENvbnZlcnNlbHk= 82671\nKEZvbnQ= 82672\nIG1ldHJl 82673\nIFNwaWVsZXI= 82674\nRWxsaXBzZQ== 82675\nIFBWT0lE 82676\nIERhdGFDb250ZXh0 82677\nY29uc3RydWN0ZWQ= 82678\nQU5ESU5H 82679\nLS0tLS0tLS0tLS0qLwo= 82680\nQm9uam91cg== 82681\nX1BIUA== 82682\ncHJvZ3Jlc3NiYXI= 82683\nTm90U3VwcG9ydGVkRXhjZXB0aW9u 82684\nIHZlcmRhZGU= 82685\nL2NoYW5nZQ== 82686\nb3Jzaw== 82687\nIGFyb21hdGlj 82688\ncmVzcG9ucw== 82689\ncmVhbGxvYw== 82690\nYXRpc2No 82691\nLGV2 82692\nIFNpb3V4 82693\ndGVh 82694\nIFBvZQ== 82695\n5LmI 82696\nX2Ntb3M= 82697\nIGFsYg== 82698\nKGxy 82699\nIEFwcGFyZWw= 82700\nIGRlbGxv 82701\nINGC0L7Rhw== 82702\nIHN0cmVhbWxpbmU= 82703\nd2NoYXI= 82704\nQWRvYmU= 82705\nLG1vZHVsZQ== 82706\nIHVuaW5zdXJlZA== 82707\nfSIpDQo= 82708\nKCIvLypbQA== 82709\nLXBoYXNl 82710\nIGZldQ== 82711\nX3RB 82712\nem9law== 82713\nIGZvbGxpYw== 82714\nIHR1Zw== 82715\nIGJlZmluZA== 82716\nIHRhbGxlc3Q= 82717\nKG10 82718\naWVkeQ== 82719\nX0xlbmd0aA== 82720\nIHN0YXVuY2g= 82721\nIHJlbW92ZU9iamVjdA== 82722\nIGZsYWtlcw== 82723\nZ3Jlc3Fs 82724\nIGlua2w= 82725\nIFNDU0k= 82726\nIEtlZXBlcg== 82727\nO2w= 82728\nIEhpbmR1cw== 82729\nX1BFRA== 82730\nX0NPTkQ= 82731\nIExhdW5kcnk= 82732\nKytdPQ== 82733\nX0FVWA== 82734\nIGJ5xYI= 82735\nIGF1bWVudG8= 82736\nbWFyZ2luTGVmdA== 82737\nZXF1YWxpdHk= 82738\nIEx1eg== 82739\nIEVjaw== 82740\nX21hcw== 82741\nX2xlbnM= 82742\nIHN0ZXJpbGU= 82743\nY2xpZW50ZXM= 82744\nJ30pCgo= 82745\nIGdvb2R3aWxs 82746\nIEVsbGlzb24= 82747\nU3BhY2VJdGVt 82748\nIHNob3dNZXNzYWdl 82749\n66Gc6re4 82750\nIGNvbnRyYXRv 82751\nUG9zdGluZw== 82752\nLmludGVycG9sYXRl 82753\nKGZpbGw= 82754\nIGJ1bGxwZW4= 82755\nLmdlbmVy 82756\nIGh1ZXM= 82757\nIG1lbW9yYW5kdW0= 82758\ndG9Qcm9taXNl 82759\nIEJ5eg== 82760\nKHB4 82761\nKFByb2dyYW0= 82762\nUkVTU0lPTg== 82763\nYmZk 82764\nIHBsYW50YQ== 82765\nLm1vdXNlUG9zaXRpb24= 82766\nIFNwYW0= 82767\n6LSn 82768\ndGVsZWdyYW0= 82769\nYWd5 82770\nIGdlZnVuZGVu 82771\nLkRvbQ== 82772\nIGxpbmVtYW4= 82773\nLmJ0bkRlbGV0ZQ== 82774\nIHNlbGVjdGl2ZWx5 82775\n65Og 82776\nSUZT 82777\nIEdldEhhc2hDb2Rl 82778\nIHJldGly 82779\nIHJlcXVpc2l0ZQ== 82780\nQlRUYWc= 82781\ncGxpYg== 82782\nIGZpcmVmb3g= 82783\nLnRyYWRl 82784\nICMk 82785\nLmNvbXByZXNz 82786\nIGxhZGVu 82787\nIERpcmVjdG9yeUluZm8= 82788\nIE1vZGVz 82789\nIGtvbmU= 82790\nIGRpdnVs 82791\nCWhz 82792\nY3JvZnQ= 82793\nIFdIWQ== 82794\neENF 82795\nL0dyaWQ= 82796\nX0FVRA== 82797\nIFNjcmU= 82798\nIGVycm9yVGhyb3du 82799\nU2FkbHk= 82800\nYXRpdGlz 82801\nIG5lZ2xpZ2libGU= 82802\nLlJlZ2lzdGVyVHlwZQ== 82803\nIE1vaXN0 82804\n5rWL6K+V 82805\nIEJNQw== 82806\nbGVhZmxldA== 82807\neW5l 82808\ncm9rZW4= 82809\nIHZpbmM= 82810\ndHR5 82811\nIGJldXJldHRl 82812\nIEFscGluZQ== 82813\nIE1jTQ== 82814\nU3BvaWxlcg== 82815\nZGlzdHJpYnV0aW9u 82816\nLXJheXM= 82817\nIOuwlA== 82818\nX3BhcmVudHM= 82819\nIGNyYXRlcw== 82820\nIGNvbW11dGVycw== 82821\nIEFyZ2VudGluZQ== 82822\n77u/LyoK 82823\nL2ZyYW1ld29yaw== 82824\nIGNoYW5uZWxJZA== 82825\nZ3JlZW5z 82826\nLnNldFN0eWxlU2hlZXQ= 82827\nIGluYWNjZXNzaWJsZQ== 82828\naXRhdGVz 82829\nIHdhcm1lZA== 82830\nRmFicmlj 82831\nZ2V0YXR0cg== 82832\nZGlzcGxheVRleHQ= 82833\nX01PTklUT1I= 82834\nIHNpZGV3YWxrcw== 82835\nSW50aWFsaXplZA== 82836\nIGtvbWVu 82837\nIGRpc2NyaW1pbmF0b3I= 82838\nIE5hdmlnYXRl 82839\nKERpcmVjdGlvbg== 82840\nIFNwaXQ= 82841\nX2FkZGl0aW9uYWw= 82842\nIGh0b24= 82843\nIGVzcGVyYQ== 82844\nIGRlbHZl 82845\nIGNvbXBhcnRpcg== 82846\nIHByZWVtcHQ= 82847\ncHJvY2Vzc29ycw== 82848\nLWdpdA== 82849\nYmVlbg== 82850\nLlNVQg== 82851\nIFJlZXZlcw== 82852\nL2dlbg== 82853\nO3RvcA== 82854\nCU1QSQ== 82855\nWlc= 82856\nR0VTVA== 82857\nYWJpbGly 82858\nIHByb2dyZXNzaXZlcw== 82859\naGFmdA== 82860\nQXVm 82861\nIEFjdGlvblR5cGU= 82862\nbGVv 82863\nIHV0YW4= 82864\nSW5pY2lhbA== 82865\nPlVzZXI= 82866\nIH0pOwoKCgo= 82867\nINio2Yc= 82868\nIENoYWlucw== 82869\naXNzcGFjZQ== 82870\nL3JlbQ== 82871\nU1FMaXRl 82872\nIGNlYXNlZmlyZQ== 82873\nJGFy 82874\nVFJT 82875\nOi8vew== 82876\nIFNwaXJpdHM= 82877\n2Lo= 82878\nKFNpemU= 82879\nIG51Zw== 82880\nIE9sc2Vu 82881\nIGNobG9yaWRl 82882\nIERpc3BsYXlOYW1l 82883\nIFBlcnQ= 82884\nIGdldE1heA== 82885\nIEVkaXRvcnM= 82886\nIFBhaXM= 82887\nYXNtdXM= 82888\nVmFj 82889\nIFRhYmxlTmFtZQ== 82890\nIG51YW5jZWQ= 82891\nRm9yTWVtYmVy 82892\nIHNsZWVweQ== 82893\nYWR2aXNvcg== 82894\nIHN0YWxraW5n 82895\nLm1lZGlhbg== 82896\nX0F0dA== 82897\nIGdldE5vZGU= 82898\nIEZhbmN5 82899\n5pWw6YeP 82900\nLkF0dHJpYnV0ZVNldA== 82901\nKGluc3RydWN0aW9u 82902\neEJE 82903\nIGtvcA== 82904\nQWZmZWN0ZWQ= 82905\nL25hdmJhcg== 82906\nIGFpbG1lbnRz 82907\nIFJhbWFkYW4= 82908\nIEFjY2VudA== 82909\nIFBhcmFtb3VudA== 82910\nIEdBTQ== 82911\n5L2N572u 82912\nPSov 82913\nLklOUFVU 82914\nPFByb2plY3Q= 82915\nTGVhc3Q= 82916\nIEdlbm9tZQ== 82917\nQWNjZXNzb3JUeXBl 82918\nbGVmdHJpZ2h0YXJyb3c= 82919\ndmVudGluZw== 82920\nL3BheW1lbnQ= 82921\nX1B0cg== 82922\nIHRhbWU= 82923\nIE1FTUJFUg== 82924\nIEJpdGNvaW5z 82925\nLmVwYW0= 82926\nLlBsZWFzZQ== 82927\nIHNjaHdhcg== 82928\nQ3BwTWV0aG9kSW50aWFsaXplZA== 82929\nIHVuaWNvcm4= 82930\nIGJlZGV1dA== 82931\nX0hT 82932\nIGF1dG9nZW5lcmF0ZWQ= 82933\nIExpbGx5 82934\nIEFzc2Vzcw== 82935\nIEhlaWRp 82936\nLnNvdXJjZXM= 82937\nLnRlbGw= 82938\nYXJnaW5z 82939\nKCInIiw= 82940\n0LvQvtC2 82941\nIEVyb3RpYw== 82942\nIGp1c3Rv 82943\nIGVzYWM= 82944\nY29tYQ== 82945\nIENvbG9ueQ== 82946\nIHBjdA== 82947\nCWVu 82948\nIGVtcGV6 82949\nIERlbGV0aW5n 82950\nTkVM 82951\nIGVuYW0= 82952\nUHJlc3NFdmVudA== 82953\nIFJlc29sdmVy 82954\nIFJURQ== 82955\nRng= 82956\nIEluY29ycmVjdA== 82957\nIHlj 82958\nX3JlYWRpbmc= 82959\nO2Jhc2U= 82960\nIGhhc2h0YWdz 82961\nIE1hcmluZXJz 82962\nLlNldEZsb2F0 82963\nIHJlYXNzdXJpbmc= 82964\naXJzY2g= 82965\nKHVzZXJpZA== 82966\nID09PT0= 82967\nXSkpKTsK 82968\na2Y= 82969\nIHRpbGVk 82970\nZWd1YXJk 82971\nQ2xpZW50ZXM= 82972\n5pmC6ZaT 82973\nZHNs 82974\nUmlnaHRz 82975\nIFBzYWxt 82976\nZHVyaW5n 82977\nQ2xlYXJDb2xvcg== 82978\ndXN0YQ== 82979\nPENvbW1lbnQ= 82980\nIG5venpsZQ== 82981\nIFBMQUNF 82982\nL2hpc3Rvcnk= 82983\naWh1 82984\naVZhcg== 82985\nIGdlcm0= 82986\nIHRyaW1taW5n 82987\nIEh1bnRlcnM= 82988\nIFJTVlA= 82989\nSW50ZXJlc3RpbmdseQ== 82990\namlhbg== 82991\nKSl7Cgo= 82992\nLkV4cGVjdA== 82993\nIFRvaWxldA== 82994\nIHdhbGxwYXBlcnM= 82995\nLldlYlNlcnZsZXQ= 82996\nYXJwYQ== 82997\nL21haW53aW5kb3c= 82998\naHE= 82999\nIHV5 83000\nIGluZGlnbg== 83001\nQ2hlY2tlZENoYW5nZUxpc3RlbmVy 83002\nIGNhbGxlcnM= 83003\nIE1vdXNlRXZlbnRBcmdz 83004\nIEpTY3JvbGxQYW5l 83005\nIHfFgmE= 83006\ncmVwb3NpdG9yaWVz 83007\nIMWbdw== 83008\nIHJlZmVyZW5jaWE= 83009\nIGlvdGE= 83010\nIGNhcmdhcg== 83011\nX29ic2VydmVy 83012\nSENJ 83013\nc2lsdmVy 83014\nIGRldmFzdGF0aW9u 83015\nLXNlbWlib2xk 83016\nIEV4cGxhaW4= 83017\nIEJsb2NrbHk= 83018\nLlhy 83019\nZXN0dXJlUmVjb2duaXplcg== 83020\nQ2FuY2VsQnV0dG9u 83021\nIExvY2tl 83022\nVHJpYWw= 83023\nX1BMQUNF 83024\nanVhbGFu 83025\nIFJ1Ymlu 83026\nU3RyaXBl 83027\nIG1ldGFEYXRh 83028\nY29uZmlkZW5jZQ== 83029\nX2JhdHRlcnk= 83030\nIGlzbA== 83031\nIGJvYQ== 83032\nLnRhcmdldHM= 83033\nbGlqa2U= 83034\nIGFkb2xlc2NlbnRl 83035\nYmV3 83036\nLEZhbHNl 83037\nIHlPZmZzZXQ= 83038\nUHJldmlvdXNseQ== 83039\nPXBhdGg= 83040\nX0FB 83041\niOadgw== 83042\nIGJha2VrYQ== 83043\nIGxlZQ== 83044\nIEJsb2NraW5n 83045\nL3RpdGxl 83046\nIOW8gA== 83047\nIFN0ZXZlbnNvbg== 83048\nKW9iamVjdA== 83049\naXN0cm9z 83050\nLmdldFNlcnZlcg== 83051\nIHBsYW50YXRpb24= 83052\nX0JveA== 83053\nICc7Jw== 83054\ndGljYQ== 83055\nKSldOwo= 83056\nIGRpc3Bhcml0aWVz 83057\nxrDhu5s= 83058\naWNyb2JpYWw= 83059\nIHNwYXM= 83060\nL0RE 83061\nKHBvaW50ZXI= 83062\nIG1pZHBvaW50 83063\nLmdldENsYXNzTmFtZQ== 83064\nIFRvdGFsbHk= 83065\nIGNvbmdlbg== 83066\nIHTDqnRl 83067\nLnhsaW0= 83068\nQ09NUExFVEU= 83069\nKGZp 83070\nb3dhcmQ= 83071\n0LzRjw== 83072\nLmFzYw== 83073\nIHBhZ2luYXRl 83074\nIGx1cmtpbmc= 83075\nLnNpZ251cA== 83076\nU1RZTEU= 83077\nIHdvcnNo 83078\naHY= 83079\nIGRlZmVuc2l2ZWx5 83080\nIEx1dGhlcmFu 83081\nLmZ1bg== 83082\nINC40L3RhNC+0YDQvA== 83083\ncHNj 83084\nIGFkbW9u 83085\nIEVzdGltYXRlZA== 83086\nIE15U3FsQ29ubmVjdGlvbg== 83087\nLnN0YXR1c1N0cmlw 83088\nIGFudGlnZW4= 83089\nIGhlcnJhbWllbnQ= 83090\nIENvbnN1bWVycw== 83091\nIFlU 83092\nLm1hc2tzVG9Cb3VuZHM= 83093\nLnh0aWNrcw== 83094\nOnJlcXVlc3Q= 83095\nIE1vbw== 83096\nLWF1 83097\nIHRvUmV0dXJu 83098\nIFNhcHBoaXJl 83099\nY294 83100\nZXhhbXBsZUlucHV0RW1haWw= 83101\nIGNvcmF6 83102\nKHBpZWNl 83103\nIHJlY29uc3RydWN0ZWQ= 83104\nX3NpZ251cA== 83105\nJ10pPw== 83106\nQmlsbGluZw== 83107\nIENyb3dsZXk= 83108\nc3Rvcm1z 83109\nZm9yY2Vy 83110\nIHN1cHJlbWFjaXN0 83111\nX3doZWVs 83112\nCXBj 83113\nLmdldERvY3VtZW50 83114\nLnVuc3F1ZWV6ZQ== 83115\nLmdyYWRl 83116\nZWxsdW5n 83117\nLnNob3BwaW5n 83118\nY3VzdG9tZXJJZA== 83119\nIG1lZGlkYXM= 83120\nIE1vbWVudHM= 83121\nZW51b3Vz 83122\nSUZJQ0FURQ== 83123\nIyMjIyMjIwo= 83124\n5paH56ug 83125\n4buNYw== 83126\nb3Jtc2c= 83127\nYWxvbQ== 83128\nLXRyYWRl 83129\nCWJ0 83130\nL3N0dWRlbnQ= 83131\nYnJpZw== 83132\nYW5uZXNz 83133\nKHJh 83134\nIHJpY2VyY2E= 83135\nU3BlYWtlcg== 83136\ncsOz 83137\nZ3Rlc3Q= 83138\nR2x5cGg= 83139\nw7xnZW4= 83140\nQEpzb24= 83141\nKHN1bW1hcnk= 83142\nS29t 83143\nYmV0aA== 83144\nL2VuZ2luZQ== 83145\nQ2xpbWF0ZQ== 83146\nc3VibWl0QnV0dG9u 83147\nZXZl 83148\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cg== 83149\ncGVkaWE= 83150\nIHVzZXJuYW1lcw== 83151\nIEpN 83152\nIG1zZQ== 83153\naW5zcGVjdA== 83154\nIFNuYXBkcmFnb24= 83155\nIGRlZmVuc2VtYW4= 83156\nIFVJVGFibGVWaWV3RGVsZWdhdGU= 83157\naW5kaG92ZW4= 83158\nIEJveWxl 83159\nIEFsdGE= 83160\nYXJkdQ== 83161\nIHdyZXN0bGVy 83162\nIFN0cmFpdA== 83163\nIGVncmVn 83164\nX2Jhc2VsaW5l 83165\nRW52aXJvbm1lbnRhbA== 83166\nIGludml0 83167\nIEJUUw== 83168\nIElTSUw= 83169\nIGNvb3A= 83170\naG9yZXM= 83171\nI0A= 83172\nIGNvbXBlbA== 83173\nKHNraXA= 83174\n6Ziz 83175\nX0RFUFJFQ0FURUQ= 83176\naXBoZXJz 83177\nZG91YmxlVmFsdWU= 83178\nIEFSUg== 83179\nLlNjb3Jl 83180\nIGNocm9tb3NvbWVz 83181\nY2xhdXNl 83182\nIEx1aWdp 83183\nIHN1bnNjcmVlbg== 83184\nIGN5dG9r 83185\nLnRvSlNPTlN0cmluZw== 83186\nIHByb3ByZQ== 83187\ncG9vbnM= 83188\nbWl0dGVycw== 83189\nIGtpdHRlbnM= 83190\nIGNhdGhvbGlj 83191\nLmx0 83192\nwqw= 83193\nX3F1aWNr 83194\nIHZyYWk= 83195\nIElSZWFkT25seQ== 83196\nIEhpZ2dpbnM= 83197\nIHNob3ZlZA== 83198\nIGxpYWlzb24= 83199\nX293bg== 83200\nIG1vc3F1aXRvZXM= 83201\nX25n 83202\nLlNldEtleU5hbWU= 83203\nX1JlbmRlcmVy 83204\nX09zYw== 83205\nLnVucmVnaXN0ZXI= 83206\nTWVzc2FnZVR5cGU= 83207\nLWZvdW5kZWQ= 83208\nIHNvdXRoZWFzdGVybg== 83209\nIGhhc2h0YWJsZQ== 83210\nLmluZGVudA== 83211\nIGpveWZ1bA== 83212\nX3NleA== 83213\nc2Fk 83214\nLmRlYmlhbg== 83215\nX2dhcw== 83216\nIHBlcmlzaA== 83217\nIGhldGU= 83218\nX3NpbmdsZXRvbg== 83219\nKGdyYWQ= 83220\nIGt0w7NyYQ== 83221\nIGR3aW5k 83222\naXR0YWw= 83223\nU2VlaW5n 83224\nIFJvb2tpZQ== 83225\nCUxhYmVs 83226\nc2hhbg== 83227\nPDw8PDw8PDw= 83228\nIHLDqA== 83229\naWVzZWw= 83230\nYXJyZXJh 83231\nY2hyaXN0 83232\nIGN1cnZhdHVyZQ== 83233\nIGVwaGVt 83234\nRm9ybWF0dGluZw== 83235\nLmRpY3Rpb25hcnk= 83236\nLlNldHRlcg== 83237\nIEhpc3RvZ3JhbQ== 83238\nIFN0dXR0Z2FydA== 83239\nIHBhY2luZw== 83240\ndXRhdGlvbnM= 83241\nIE5TSw== 83242\nIFBhbWVsYQ== 83243\nIEJhaWw= 83244\nIHBvbGFyaXphdGlvbg== 83245\nIEfDtg== 83246\nIEVsYWluZQ== 83247\nIGtpY2tvZmY= 83248\nIGNoYXBlbA== 83249\nPXBvc3Q= 83250\nIG1pZHdheQ== 83251\nZXdpcw== 83252\nX01S 83253\naWVlZQ== 83254\nLXRlc3Rpbmc= 83255\nbWV6 83256\nPi0t 83257\nIGRvY3RyaW5lcw== 83258\nIG1pbGlldQ== 83259\nIFJBRElP 83260\ndGFrZW4= 83261\nUmVzcG9ucw== 83262\nIGhhbmRzZXQ= 83263\nIGNvbnRybw== 83264\nIEFwcGxpZXM= 83265\n6Zif 83266\nLkJpbmRpbmdTb3VyY2U= 83267\nINis 83268\nIGh1bWlsaQ== 83269\nIE1lbGFuaWE= 83270\nT3ZlcmxhcA== 83271\nKFBhcmNlbA== 83272\nIHdhcmVob3VzZXM= 83273\nLkdldEJ5SWQ= 83274\nIGZyYW5rZnVydA== 83275\nIFdpdHQ= 83276\nLnByb2o= 83277\nIFNhc2hh 83278\nIFJldmVy 83279\nIGFydGljdWxhdGVk 83280\nYW5jaGVz 83281\nIFNlbWluYXI= 83282\nIERhZ2dlcg== 83283\nIEFnaWxl 83284\nT1dM 83285\nIEJz 83286\nb2tseW4= 83287\nRXRh 83288\nIGFnb3N0bw== 83289\n7ZWY7Jes 83290\nIG9wdGFyZw== 83291\nCW9uQ2hhbmdl 83292\nIFJPQUQ= 83293\nR0JL 83294\nIGVudGZlcg== 83295\nLkF1dG9Db21wbGV0ZQ== 83296\nIGhlbGZlbg== 83297\nQ2hlYXA= 83298\nIGFwcHJlbnRpY2U= 83299\naW90aWNz 83300\n5oqA 83301\nT2ZZZWFy 83302\naW5kZXJlZA== 83303\nLk1TRw== 83304\nIE1hcsOtYQ== 83305\nKGlucGxhY2U= 83306\nIGZpbmRl 83307\nKERF 83308\nLlNlcmlhbGl6ZXI= 83309\nJHRpbWU= 83310\ndW5uYWJsZQ== 83311\nTWFpblRocmVhZA== 83312\nZGVwbG95bWVudA== 83313\nIG1wZnI= 83314\ncmljaFRleHRQYW5lbA== 83315\nKTsKCgoKCg== 83316\nIGRhbnljaA== 83317\nX0JFRk9SRQ== 83318\nX2FyeQ== 83319\nIEJhdW0= 83320\nIHR1cmJ1bGVudA== 83321\nIE11bHRpbWVkaWE= 83322\nIHBoeXNpY2lzdA== 83323\n5Zy6 83324\nQW5pbWF0ZQ== 83325\nPUY= 83326\nUGFnbw== 83327\nL3R3aXR0ZXI= 83328\nb3R0aWU= 83329\ndWN1cnNhbA== 83330\nX3BhZ2luYXRpb24= 83331\nLmFyY2hpdmU= 83332\nLWRvY3VtZW50 83333\naW5pbmU= 83334\nU2VsbGVy 83335\nYWRyZXNz 83336\n6ZO+5o6l 83337\n0LDRgtC10LPQvtGA 83338\nX2ZybQ== 83339\nbm9EQg== 83340\naWdhdGVk 83341\nIE9zYW1h 83342\ncGV0dG8= 83343\nPnk= 83344\nLVVu 83345\nIGNvcHBpYQ== 83346\nQWxtb3N0RXF1YWw= 83347\nLmxleA== 83348\nIGxldmVsZWQ= 83349\nIFNDSVA= 83350\nX0hPT0s= 83351\nSUxvZ2dlcg== 83352\nbmVhdQ== 83353\n77ye 83354\n24zZhg== 83355\naWtoYWls 83356\nIHVwbG9hZGVy 83357\nIENhcm9seW4= 83358\nLmFkZFZhbHVl 83359\ndGhpbmtpbmc= 83360\ncHJpbnRTdGF0cw== 83361\nIGNhbWJpb3M= 83362\ncG9p 83363\nIEJFRA== 83364\nIHhibWM= 83365\nLu+/vQ== 83366\nIHNhcmNhc3Q= 83367\nIE5FQw== 83368\nJGJvZHk= 83369\nQWxsV2luZG93cw== 83370\nIHlvdW5nc3Rlcg== 83371\nIHVuZWFzeQ== 83372\nKEFU 83373\nIG5vc3RhbGdpYw== 83374\nUFJJQ0U= 83375\nIFNlaXRlbg== 83376\nIG1ha2E= 83377\nIGxpbXA= 83378\nIGNvbnRyYXN0cw== 83379\nQ29mZmVl 83380\nCWdlbg== 83381\nIHBlcm1z 83382\nIE5lZWRsZXNz 83383\nb3V2ZQ== 83384\nYXJjaGluZw== 83385\nX3BlbmFsdHk= 83386\ncm93YWQ= 83387\nb25nYW4= 83388\nX2R1cg== 83389\nIGlmbmRlZg== 83390\naWF1eA== 83391\nIGNhcGFjaWRhZA== 83392\nIE5vcnRl 83393\nIC0qLQ0K 83394\naWZlcw== 83395\nIE1hbnNpb24= 83396\nI1JlZ2lvbg== 83397\nQ2FuY2VsbGF0aW9u 83398\nIG5lYXJpbmc= 83399\nIGxhbmd1 83400\nZXJlcXVpc2l0ZXM= 83401\nX2V4cGVyaW1lbnQ= 83402\nb25kaGVpbQ== 83403\nXSwm 83404\nIENvb2xpbmc= 83405\nIHNhZmFyaQ== 83406\nIHBpb25lZXJz 83407\nIGZhcm1ob3VzZQ== 83408\nIGRpc3RhbmNpYQ== 83409\nIGRlc2VydGVk 83410\nIE5hcnJvdw== 83411\nLnNn 83412\nIGVudHJhcg== 83413\nLnJh 83414\nIHJlZnVyYmlzaGVk 83415\nIGludGVyY29ubmVjdGVk 83416\nIHN1cnZpdmVz 83417\nIHF1YWxpZmllcnM= 83418\nX0NIQVJT 83419\nLWFqYXg= 83420\nIFJvcnk= 83421\nIGtvbGVq 83422\nL0dM 83423\nX2xlZ2Fs 83424\nIFRZUEVT 83425\nIFZvaWNlcw== 83426\nIEZlcmQ= 83427\ndWplbXk= 83428\nIHNjb3JlYm9hcmQ= 83429\nIEJPVA== 83430\neERE 83431\nIEl2YW5rYQ== 83432\nIGhzdg== 83433\nbm9kaXNjYXJk 83434\nIFRIRVNF 83435\nbW9qb20= 83436\nIHRpY2tpbmc= 83437\ncGVx 83438\nIOa3u+WKoA== 83439\nIE5pY29s 83440\nCWFuZ2xl 83441\nX2FsbG9jYXRlZA== 83442\nIHN0cnV0 83443\neERC 83444\nRXZhbHVhdGU= 83445\nIFZBUklBTlQ= 83446\nIHJlZmVyZW5jZWRDb2x1bW5OYW1l 83447\nbG9o 83448\nIFJlcXVlc3RPcHRpb25z 83449\nIGNvY28= 83450\nIGJsZWFjaA== 83451\nX29yZ2FuaXphdGlvbg== 83452\nIENITw== 83453\nSFRUUFM= 83454\nX2JhcnJpZXI= 83455\nLnZpc2l0TWV0aG9kSW5zbg== 83456\nIHZpdGU= 83457\nIC0k 83458\nW2NlbGw= 83459\nIGNlc3NhdGlvbg== 83460\nCgoKCgoKCgoKCgo= 83461\nINGB0LDQuQ== 83462\nRXZhbHVhdGlvbg== 83463\nIENJTQ== 83464\ncXVhbGl0aWVz 83465\nWG1sQXR0cmlidXRl 83466\nIEVtb2pp 83467\nICIoJw== 83468\nIFRVUk4= 83469\neHNk 83470\nIEdJUw== 83471\nIGNyZWF0ZVNlbGVjdG9y 83472\ncmlwcGxl 83473\nIHVubmVjZXNzYXJpbHk= 83474\nIG5ld1Bvcw== 83475\nIHN5bWJvbGlzbQ== 83476\nb2J1dHRvbg== 83477\nIHNhbW8= 83478\nICgqKCg= 83479\nLnJld2FyZA== 83480\nS0VSTkVM 83481\nKGpTY3JvbGxQYW5l 83482\nIGJ5c3RhbmQ= 83483\nX2ljYWxs 83484\nIGR1bmdlb25z 83485\nIGNvbnN0ZWxsYXRpb24= 83486\nIGVtYnJhY2Vz 83487\nIEluZmFudA== 83488\nQXVzdGlu 83489\nLmFic3RyYWN0 83490\nIGNvbXBhZ24= 83491\nIENvbmRpdGlvbmluZw== 83492\nTWFpcw== 83493\nVmVyaWZpZXI= 83494\nIFB5cmFtaWQ= 83495\nIG1MaXN0ZW5lcg== 83496\nX2J1aWxkaW5n 83497\nLlJlZGlz 83498\nIFRvb3Ro 83499\nTE9HR0VS 83500\nLkFzeW5jVGFzaw== 83501\nX3ByaW5jaXBhbA== 83502\nZXhhbXBsZU1vZGFsTGFiZWw= 83503\nCUxvY2Fs 83504\nTWFya2Vycw== 83505\nIGRvbHBoaW5z 83506\nLlRleHRFZGl0 83507\nJ2Fs 83508\nIG92ZXJzdA== 83509\nLWRyaXZl 83510\nIGluc29tbmlh 83511\nIGFkYg== 83512\nX3F1ZXVlcw== 83513\nRWI= 83514\nIERhbW4= 83515\naXN0cmluZ3N0cmVhbQ== 83516\nCUR1ZWw= 83517\naWJibGU= 83518\nIGltcmVhZA== 83519\nLmZpbmlzaGVk 83520\nIG1pc3JlcHJlc2VudGVk 83521\nxYRzdA== 83522\naW9uYWxlcw== 83523\nIk5vdw== 83524\nLlNlbGVjdFNpbmdsZU5vZGU= 83525\nIHdlYWtlbmluZw== 83526\nX2luc3RydWN0aW9ucw== 83527\nLW9z 83528\nIHN0YXJ0UG9pbnQ= 83529\nIE1pbWU= 83530\nIEhlbGQ= 83531\nfHwo 83532\ndW1taW5ncw== 83533\nb2tpbm8= 83534\nIHJlZmw= 83535\ncmlkb3I= 83536\nSW50ZWdyYXRlZA== 83537\nRU9iamVjdA== 83538\ncGVhdHM= 83539\nQ2lyY3VsYXI= 83540\nIFNvZGl1bQ== 83541\nIHBvZHLDrWE= 83542\nbWVkaWNpbmU= 83543\nIHBhcmFub2lh 83544\nL2JhY2tncm91bmQ= 83545\nKGJvcmRlcg== 83546\nX3Nsb3c= 83547\nIHByZXNlbnRWaWV3Q29udHJvbGxlcg== 83548\nIGNvbnRpbmdlbmN5 83549\nIFBhc2FkZW5h 83550\nbG9vcHM= 83551\nIE9j 83552\nYXBwbGljYXRpb25z 83553\nIG1wZw== 83554\nIEFR 83555\nLldpbkNvbnRyb2xz 83556\nbGVkb24= 83557\nIFJlcQ== 83558\nIEFjcmVz 83559\naWJpcg== 83560\nIGdldFdpbmRvdw== 83561\nIFlhaA== 83562\nIG5lZWR5 83563\n4pa6 83564\nIFRPTQ== 83565\nKFsuLi4= 83566\nIGZx 83567\nIENhbWRlbg== 83568\nb3JkaW5hdGVk 83569\nCWNoaWxkcmVu 83570\ndmVnZXQ= 83571\nCWRpcmVjdGlvbg== 83572\nPEZpZWxk 83573\nX2NvcnJlY3Rpb24= 83574\nKEVORA== 83575\nSEVFVA== 83576\nRmFsc3k= 83577\nLmR5bGli 83578\nX1JFUE8= 83579\nIGJyaWxsaWFuY2U= 83580\nb2dyw6Fm 83581\nbG9k 83582\nIHBvd2RlcmVk 83583\nKEFydA== 83584\nIE1JTEw= 83585\n0LXQtNCw0Lo= 83586\nX3NpbXVsYXRpb24= 83587\nIHNtYXNoaW5n 83588\nIHVybFN0cmluZw== 83589\nIGRyZWFkZWQ= 83590\ncmllZw== 83591\nL25z 83592\nIEludGVycHJldGVy 83593\nOm1heA== 83594\nZGVyaXY= 83595\nIFBldHQ= 83596\nIG1vZMOobGU= 83597\nIGFtcGxpZmllZA== 83598\nIFNpZ25hbHM= 83599\nLm5hdkN0cmw= 83600\n5ZY= 83601\nIHNlcGFyYXRvcnM= 83602\nIFNISUZU 83603\nIGZpZGVsaXR5 83604\nLnNvbg== 83605\nKGNh 83606\nIFBMVUdJTg== 83607\nIGxpZ2h0ZW4= 83608\nUEJT 83609\nZmxvYXRpbmc= 83610\nKGxvYWRlcg== 83611\nIHBlZWxlZA== 83612\naGlj 83613\nIHRhcGVk 83614\nIG5vdmVtYnJl 83615\nIHN0dWZmaW5n 83616\nIEZpcmVhcm1z 83617\nLkRyYXdhYmxl 83618\nIGNvcnRpY2Fs 83619\nIEdVSUNvbnRlbnQ= 83620\nIFZlcm9uaWNh 83621\nX3JzYQ== 83622\nIGNvbW1lbW9yYXRl 83623\nLlNZU1RFTQ== 83624\nIGRhbXM= 83625\nLmlzVHJ1ZQ== 83626\nIFByZWduYW5jeQ== 83627\n7Iug 83628\nIGF1ZGl0b3J5 83629\nKENlbGw= 83630\nIGludmFkaW5n 83631\nIGZvckVhY2g= 83632\nCURyYXc= 83633\nTWFyY3Vz 83634\nUHJvY2Vzc2Vk 83635\nIHNwcmF5aW5n 83636\nIE91dGxpbmVJbnB1dEJvcmRlcg== 83637\nZXNzZXJhY3Q= 83638\nIOacgA== 83639\nUGc= 83640\nLXF1YXJ0ZXJz 83641\nIHNrbA== 83642\nL3Byb3ZpZGVycw== 83643\ndG9IYXZlQmVlbkNhbGxlZFRpbWVz 83644\nIGNvc21vcw== 83645\nIGZpbmFsaXN0cw== 83646\nIHNsZWVwZXI= 83647\nIE1hdGVyaWFsQXBw 83648\nZGFj 83649\nIGJ1c2luZXNzbWVu 83650\nxJ9lcg== 83651\nQmlhcw== 83652\nZGF0YWw= 83653\nVXBFZGl0 83654\nIFRpcg== 83655\nSVNUSUM= 83656\nIEhlcmE= 83657\nX2ludGVyc2VjdGlvbg== 83658\nIExhbWE= 83659\nCWFwcGVuZA== 83660\nIHBvbGx1dGFudHM= 83661\nIFNpa2g= 83662\nIGNvbGxhYm9yYXRpb25z 83663\nbnV0cml0aW9u 83664\nIGhhbW0= 83665\nIERpbGxvbg== 83666\nX0RPVA== 83667\nIGZpcnN0aGFuZA== 83668\nU09BUA== 83669\nPXo= 83670\nLnByaXY= 83671\nTWlzbWF0Y2g= 83672\nLnNlbmRSZWRpcmVjdA== 83673\nLmxpbmtMYWJlbA== 83674\nIHdyZWFr 83675\nTWFydmVs 83676\nL3Ns 83677\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 83678\nIG1vdmFibGU= 83679\n0YPQuQ== 83680\nIERyaW5raW5n 83681\nYWNlYQ== 83682\nIHRyb3ZhcmU= 83683\nLkNTUw== 83684\nIGtlcm4= 83685\ndmZz 83686\n5pWw5a2X 83687\nIHN0ZXNzbw== 83688\nIEZPUkNF 83689\nIGxpZWY= 83690\nIGFjaGlldmVz 83691\nIEVsaWphaA== 83692\nR2V0UHJvcGVydHk= 83693\nLypA 83694\nIEh1bWFuaXR5 83695\nKFRoZQ== 83696\nd2FybQ== 83697\nPiIp 83698\nIGNvbXB1dGF0aW9ucw== 83699\nLnRpbnRDb2xvcg== 83700\nIHVzbGVlcA== 83701\nIEdQTHY= 83702\nbmRhdGE= 83703\nL2NsaQ== 83704\nTW9o 83705\nPiINCg== 83706\nLmJyaWRnZQ== 83707\nIGVuY3ljbG9wZWRpYQ== 83708\nIEJJTg== 83709\nIFN1cHBvc2U= 83710\nINio2Kc= 83711\ncmlldmVk 83712\ncGFnZW4= 83713\naXJzZQ== 83714\nUGFjaWZpYw== 83715\nLmZ1bGxOYW1l 83716\nIGFsbGVnZQ== 83717\naWxsdXN0cg== 83718\nIOqysA== 83719\nIGRldGVycmVudA== 83720\nIE5hcGxlcw== 83721\naW5jbHVkZWQ= 83722\nUmF0ZXM= 83723\nIGhhc05leHQ= 83724\nIEplcmVtaWFo 83725\nIEZlcm5hbmRleg== 83726\nIGdldE9yZGVy 83727\nLlN1YnNjcmliZQ== 83728\nUG9zcw== 83729\nOikK 83730\nIFdvcmtzaGVldA== 83731\nYmxlbmQ= 83732\nIHdpdHR5 83733\nIGNvdW50ZXJmZWl0 83734\nX2R5 83735\nL1J1bnRpbWU= 83736\nIHNvZG9t 83737\nL2Rv 83738\nIDx8 83739\nIFJlY3J1 83740\n5aOw5piO 83741\nIG1vZGVsb3M= 83742\nIGJpdHJhdGU= 83743\nLmNybQ== 83744\nbHVz 83745\nIGZpbGVUeXBl 83746\n5bCR 83747\nIG1hcnJvdw== 83748\nIFZlbmV6dWVsYW4= 83749\nIHNjYXY= 83750\nIFNUT0NL 83751\nIEltcG9zc2libGU= 83752\nbmF2aWdhdGlvbkJhcg== 83753\nIHNpZ2h0aW5ncw== 83754\nIGNlbGxGb3JSb3dBdA== 83755\nIHJlY3Rz 83756\nIGFpcmw= 83757\nIExlc3Rlcg== 83758\nIG5vZHM= 83759\nQHJlZ2lzdGVy 83760\neENE 83761\ncG5hbWU= 83762\nIHBvdHRlcnk= 83763\nIHp3YXI= 83764\nIFN1bmRlcmxhbmQ= 83765\n4oCmYnV0 83766\nL2NvbnRyb2w= 83767\nIGNhbGN1bHVz 83768\nKGlzb2xhdGU= 83769\ncGxhY2Vob2xkZXJz 83770\nKilf 83771\nIH19DQo= 83772\nIEtvaGFuYQ== 83773\nY29kaWxl 83774\nb3Rlcmlj 83775\nIHByZXBhaWQ= 83776\nIGdyYW5kbWE= 83777\nIHN1bHBo 83778\nIEdhaW5lcw== 83779\nXE1vZHVsZQ== 83780\nIGNvdW5zZWxsaW5n 83781\nLWdlbmVyaWM= 83782\nIFR1ZXM= 83783\nLkdyYWRpZW50 83784\nIFRodXJz 83785\nIGVudHJh 83786\nIGFkdmFuY2VtZW50cw== 83787\nU1dFUA== 83788\nX01BUktFUg== 83789\nIGtsdWI= 83790\nIG3DqWc= 83791\nZmZmZmZmZg== 83792\nIl0pewo= 83793\nL2NvbXBpbGVy 83794\nYWRpZW5z 83795\nU3RyaW5nVmFsdWU= 83796\nIFNjdWxwdA== 83797\ncGFuZWxz 83798\n5b2i 83799\n5Lqn5ZOB 83800\nYXLDrWE= 83801\nIGRlcmFpbA== 83802\nIExvY2g= 83803\nIHBlcHA= 83804\nbXB6 83805\nIOKe 83806\nS1Y= 83807\nIERpZXRhcnk= 83808\nQVJSSUVS 83809\nIHBvbw== 83810\nIFJBTkRPTQ== 83811\n6LM= 83812\nIEhvbWV3b3Jr 83813\nLlZhbGlkYXRpb25FcnJvcg== 83814\nIE1hcnhpc20= 83815\n0YPRgtGM 83816\nIGNvbWVudGFyaW8= 83817\nX0JPVEg= 83818\nIHBybQ== 83819\nY2FzdEhpdA== 83820\naXBsaW5h 83821\nIFZvdGVycw== 83822\nLmFzc2lnbm1lbnQ= 83823\nbmV0dA== 83824\nU0FNUExF 83825\namlz 83826\nInRpdGxl 83827\nLnZhbGlkYXRvcnM= 83828\nICI/Ig== 83829\ndW5pZGFk 83830\nX2ZpZ3VyZQ== 83831\nIGFjY3J1 83832\nIFJlbWFyaw== 83833\nRm91bmRlcg== 83834\nLmluaXRpYWxpemVBcHA= 83835\nIFByZXNlbnRz 83836\nIE1VTFRJ 83837\ndmVzdGVy 83838\nLnZpc2l0SW5zbg== 83839\nIGdldFBhdGg= 83840\nX2RpZmZlcmVudA== 83841\nIGxvb3Nlbg== 83842\nIGFycm9nYW5jZQ== 83843\nIGp1bmk= 83844\nIFphaGw= 83845\nIEdDQk8= 83846\nIG1vZGVyYXRvcnM= 83847\nTGluZUNvbG9y 83848\nIE5vZGVUeXBl 83849\nX2JlbG93 83850\nb3JndA== 83851\nIEhhcmxlbQ== 83852\nIE9yd2VsbA== 83853\nX1VOSVg= 83854\nLnJlc3RhcnQ= 83855\naXRoZQ== 83856\nIGdlbmll 83857\nIGNsYWQ= 83858\nJzp7Jw== 83859\nIHNob3djYXNlZA== 83860\nIGxhcnZhZQ== 83861\nTWljaGVsbGU= 83862\nIExI 83863\nLmdldExvZw== 83864\nQ29uc3RydWN0ZWQ= 83865\nIGh2YQ== 83866\nX3N1YnM= 83867\nIGRhYg== 83868\nLmRvY3VtZW50YXRpb24= 83869\nIG5pZw== 83870\nIE1hbmRhcmlu 83871\n4oCUYXJl 83872\nLXBpYw== 83873\nX2Nvcm5lcnM= 83874\nLkJvdA== 83875\nXVso 83876\nX18nOg0K 83877\nLkVkaXRvckJ1dHRvbg== 83878\nLXN5bnRheA== 83879\nU2FuZGVycw== 83880\nIFRhbmtz 83881\nZGVzaXJlZA== 83882\nc3RhbnRpYXRlVmlld0NvbnRyb2xsZXI= 83883\nR2Vhcg== 83884\nIHVzZXJNb2RlbA== 83885\nCWNvbnRyb2w= 83886\nRGF0YUJhc2U= 83887\nIERlYmF0ZQ== 83888\naW5lc2lz 83889\nIHhl 83890\nLm1hZ25pdHVkZQ== 83891\nIHlhbg== 83892\nIEFwaUV4Y2VwdGlvbg== 83893\nKHdoaWNo 83894\nYXRoZXJpbmc= 83895\nQ29uc2lkZXJpbmc= 83896\nIEFMUEhB 83897\n568= 83898\nIFJhbmtpbmdz 83899\nLmxpZmU= 83900\n6rCS 83901\nT0ZGU0VU 83902\nLnRlbGVncmFt 83903\nIGZhdmljb24= 83904\nX3NzaA== 83905\nIEVER0U= 83906\nUmVmcw== 83907\nYW5kYW4= 83908\nIGFkb2xlc2NlbmNl 83909\nIFNoYW5r 83910\nIFN3YW1w 83911\nX3BlcmM= 83912\nIGNvbnRyYXJpbw== 83913\nLm55 83914\nLiIpLA== 83915\nIHVudGVu 83916\nX0VOU1VSRQ== 83917\nL29yZGVycw== 83918\nKGNm 83919\nIHVudHJlYXRlZA== 83920\nYXplbg== 83921\nKElucHV0U3RyZWFt 83922\nIGFwcHJvdmFscw== 83923\nIGdlcm1hbnk= 83924\nIGF2ZXJl 83925\nVHJpcGxl 83926\nLWJhcnM= 83927\nIHNldFBhZ2U= 83928\nSmFj 83929\nIEZpcmVz 83930\nIERBWVM= 83931\n56i/ 83932\nIHNjcmF0Y2hlZA== 83933\nIEJFTg== 83934\nLXdpZmU= 83935\nIGludGVsbGVjdHVhbHM= 83936\nIHBvdWNv 83937\nIHN0YWJpbGl6YXRpb24= 83938\nIHBlbG9z 83939\nIFNUT1JZ 83940\nPGZpZWxkc2V0 83941\nIE1haWRlbg== 83942\nLkNpcmNsZQ== 83943\nIHNtw6U= 83944\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw== 83945\nL2VuZA== 83946\n6Iux 83947\nKG51bXB5 83948\nLnBhbmVsQ29udHJvbA== 83949\nY2hyaWZ0 83950\nY29udGluZW50YWw= 83951\nX3BlbA== 83952\nRFNM 83953\nPFwv 83954\nIE9QUw== 83955\nIE5vb24= 83956\nIHVuZGlzY2xvc2Vk 83957\nIFlpbg== 83958\nc3Bv 83959\nCWRlc2NyaWJl 83960\ndG9ncm91cA== 83961\nIGRpYXBlcnM= 83962\nIG1IYW5kbGVy 83963\nCUNsb3Nl 83964\nIHJlbmRpdGlvbg== 83965\nPXsoew== 83966\nRW50ZXJpbmc= 83967\nKERJUg== 83968\nX09MRA== 83969\nIFN0aW5n 83970\nIFBhd24= 83971\ndXNzZXM= 83972\nIGdldENvZGU= 83973\nSXRlbUxpc3Q= 83974\nIGluZGlz 83975\nID4iLA== 83976\nIGNvbmZs 83977\nIGRvbWluYXRlcw== 83978\ndGhlc2l6ZWQ= 83979\nc3RlcmVk 83980\nIGNhYw== 83981\nIEdlbnVpbmU= 83982\nPFBhdGg= 83983\nIEhvZGc= 83984\nLWZseQ== 83985\nLmNpZA== 83986\nIG9iamVjdElk 83987\nKCMp 83988\nLm1vdmVUb05leHQ= 83989\nRGlhbG9ndWU= 83990\nPHBjbA== 83991\ndGVhckRvd24= 83992\nJyl9fQo= 83993\n5ri4 83994\nTGl2ZXI= 83995\nTWF0cml4WGQ= 83996\nIGNyYXBweQ== 83997\nX0RFQUQ= 83998\nLnBhcnRpYWw= 83999\nLkRyb3BEb3duU3R5bGU= 84000\nZnVy 84001\nLkNvbGxhcHNlZA== 84002\nLXRvd24= 84003\nSUNJQUw= 84004\nRGlyZWNjaW9u 84005\nIHNldFJlc3VsdA== 84006\nL3Jlc3VsdA== 84007\nIFNoZWVw 84008\neXNjYWxl 84009\nY29udGk= 84010\nIHJlY29ub2M= 84011\n6b4= 84012\nW2Jsb2Nr 84013\nY2xheno= 84014\nIGJlbmVmaXRpbmc= 84015\nQUFQ 84016\nLnJlcXVpcmVz 84017\nLkNvb2tpZQ== 84018\nIGNhcHRpdml0eQ== 84019\nLlNlY3Rpb24= 84020\nXSkpOw== 84021\nLWNhcmV0 84022\nKHZh 84023\nIHbDpGw= 84024\nIEhpZ2hsYW5kcw== 84025\nTm90YQ== 84026\nIEZNTA== 84027\nd2ludGVy 84028\nIGFnZW5kYXM= 84029\nX18sX18= 84030\nZGVtYW5k 84031\nIHR1dG9ycw== 84032\nX1NZTQ== 84033\nKENI 84034\nIHVuZXF1aXY= 84035\nLnRyYW5zaXRpb25z 84036\nIENhbG9yaWVz 84037\nIEVjb25vbWlzdA== 84038\nLlBpbg== 84039\nIGRlZmxlY3Q= 84040\nRXhwb3NlZA== 84041\nIGdlcA== 84042\nLkxheW91dENvbnRyb2xJdGVt 84043\nIHJhaw== 84044\nZmliZXI= 84045\nIGFwb3B0 84046\nIEVudW1z 84047\naXRldXI= 84048\nIG1vZGlmaWVz 84049\nIHJlbHVjdGFuY2U= 84050\nIHNwaWxscw== 84051\nQXNjZW5kaW5n 84052\nIHRlbXBlcmF0dXJh 84053\nLWludGVyZmFjZQ== 84054\nIGNvd29ya2Vycw== 84055\nIDpc 84056\nIFJvdW5kZWRSZWN0YW5nbGVCb3JkZXI= 84057\nPEtleVZhbHVlUGFpcg== 84058\nUGFyc2Vk 84059\nIHdpdGhkcmF3aW5n 84060\nKGhpc3Q= 84061\nIHRoZW9yaXN0cw== 84062\nLW5n 84063\nIGNoaWZm 84064\n66W4 84065\nUEFJUg== 84066\nIEJyZXdlcg== 84067\nS2E= 84068\nIEJvd2xpbmc= 84069\nX3Rs 84070\nJ30pLg== 84071\nIHByb2Jpbmc= 84072\nQXJz 84073\nLnJlYWxt 84074\nIGVzdGF0ZXM= 84075\ndmFyeQ== 84076\nIEtlcw== 84077\nICIsIiw= 84078\nfSwNCg0K 84079\nUGxhbm5pbmc= 84080\nIFJlY29u 84081\nIGNvbmNsdXM= 84082\ndmF1bHQ= 84083\nIGluY2VudGl2 84084\nIGJpbm5lbg== 84085\nIFBoaWxsaWVz 84086\nLkxvYWRlcg== 84087\nIEZhbGxlbg== 84088\nX1R3bw== 84089\nIEJpYXM= 84090\nUm9sZUlk 84091\nIFBhcmNlbGFibGU= 84092\nIERvZGQ= 84093\nICQoIiMi 84094\n5Lq/5YWD 84095\nLW1lYW4= 84096\nKE91dHB1dA== 84097\nQVRUUklCVVRF 84098\nIHNlY3JldGl2ZQ== 84099\nIFBlcmlwaGVyYWw= 84100\nIEZpbGVk 84101\nIOW3 84102\nX21lZGlhbg== 84103\nLklD 84104\nIEFycmF5QnVmZmVy 84105\nKFRBQkxF 84106\nIF0KCgo= 84107\nIGFudGhvbG9neQ== 84108\nIG9ic2NlbmU= 84109\nb3BhdXNl 84110\nIEVTVg== 84111\nw6F2ZWlz 84112\nb3NlbWl0ZQ== 84113\nR3J1cG8= 84114\nIE1PQ0s= 84115\nIHVuYXZvaWRhYmxl 84116\nIGNvdmlk 84117\naG93ZXI= 84118\nLk5ldmVy 84119\nU2V0QWN0aXZl 84120\ne3RleHQ= 84121\nX3Byb2Jh 84122\nXENvbmZpZ3VyYXRpb24= 84123\nIEJyeWNl 84124\nIGNvZXJjZQ== 84125\nIFZhbmRlcmJpbHQ= 84126\nZ2VtZW50cw== 84127\nbGVnZw== 84128\nIHJlYnV0 84129\nIFZJTg== 84130\n5YiG6ZKf 84131\nIG9ic2Vzc2l2ZQ== 84132\nL2NtZA== 84133\nIGtvbW1lbnQ= 84134\nIExhdWdo 84135\n64uI 84136\nIHNlbHZlcw== 84137\nb3JyYQ== 84138\nLnJvb21z 84139\nIGNvbXBsZXhpdGllcw== 84140\nCW9wZXJhdG9y 84141\nQWx0ZXJuYXRl 84142\nIHNvcnRpZQ== 84143\nZ2V0TnVt 84144\nIHJlYWxpemFkbw== 84145\nRG9pbmc= 84146\nX0dyaWQ= 84147\nIHNldFN1cHBvcnRBY3Rpb25CYXI= 84148\nw6RobHQ= 84149\n5ZQ= 84150\nOnsNCg== 84151\nSW50ZXJlc3RlZA== 84152\nIGRpbWluaXNoaW5n 84153\nIExvb3Q= 84154\nQWRhcHRlckZhY3Rvcnk= 84155\nLXJ1bm5lcg== 84156\nc2F2aW5n 84157\nKHNlbQ== 84158\nZmFk 84159\nRURVUkU= 84160\nX2RvY3VtZW50bw== 84161\nIENhbGVi 84162\nIGd1aXNl 84163\nIE1jR3U= 84164\nKHVuaXRz 84165\nIGJlemllcg== 84166\nIHBhdHQ= 84167\nIHBlbHZpYw== 84168\nIGNvbm9zYw== 84169\nYWN0aXZv 84170\nIE1hbG9uZQ== 84171\nLlRha2U= 84172\nKHNxcnQ= 84173\nc3Rhc2hvcA== 84174\nLWVuZGVk 84175\nIE1pZGk= 84176\nIEJhbmM= 84177\nIFBlcHNp 84178\nX01BWQ== 84179\nIHBsbA== 84180\nL2luZXQ= 84181\nLWVuaA== 84182\nIEl0YWw= 84183\nbW91cg== 84184\nIHJlbHVjdGFudGx5 84185\nLnJjUGFyYW1z 84186\nIHBhbHM= 84187\nLnBrZw== 84188\nIGZvcm1hcw== 84189\nbGllw59saWNo 84190\nLWJvb2tz 84191\nb21hbHk= 84192\nIHJlY29tbWFuZA== 84193\nUExJQ0lU 84194\nacSN 84195\nLmNnQ29sb3I= 84196\nKEJvYXJk 84197\n0LXQvdC40Lg= 84198\nIExFTg== 84199\nXy1f 84200\nIFVubw== 84201\nIE5PVElGWQ== 84202\naGFuYQ== 84203\nW3Nsb3Q= 84204\nXGFkbWlu 84205\nSW5JbnNwZWN0b3I= 84206\nKWNvbnN0 84207\nIGZsYXR0ZXJpbmc= 84208\naWdyYW1z 84209\nY2Fj 84210\nIGhlYXJ0ZmVsdA== 84211\nSW5kdXN0cmlhbA== 84212\nQWlycG9ydA== 84213\nWEk= 84214\nIHZhbGlkYXI= 84215\ncmVwcmVzZW50YXRpb24= 84216\nIFJlbnRhbHM= 84217\nIG9taXNzaW9u 84218\nIG15dGhpY2Fs 84219\nIEVudHJhbmNl 84220\nIHNlcmdlYW50 84221\nIHdyaXRlVG8= 84222\nIE5vcndpY2g= 84223\nIExpb25lbA== 84224\nLWJhbA== 84225\nIFp3ZQ== 84226\nX3JlbnQ= 84227\nIHJlbWFy 84228\nIEJhaGFtYXM= 84229\nIEJhbGU= 84230\nOiIiLA== 84231\nU3RhdGVNYW5hZ2Vy 84232\nIGLDqW7DqQ== 84233\nICEqKio= 84234\nIGJsb2NrZXJz 84235\nLnNlbA== 84236\nKExFRA== 84237\nIGZzbQ== 84238\nIHdpcGluZw== 84239\nIHphbWFu 84240\nIFJlaQ== 84241\nYWd1YXk= 84242\nLi4n 84243\nIGxvdW5n 84244\nZXRjb2Rl 84245\nIGxhbno= 84246\nY2l0YXRpb24= 84247\nW2A= 84248\nLWVs 84249\nYXNib3VyZw== 84250\nIFNPTEQ= 84251\nIE9yY2hhcmQ= 84252\nQ0hhbmRsZQ== 84253\nIExvZnQ= 84254\nLmRpdmlkZQ== 84255\nLVdpdGg= 84256\nL2Rlc2lnbg== 84257\nLlNlcnZpY2VNb2RlbA== 84258\nTWlz 84259\nIHJhd0RhdGE= 84260\nIGludGVyYWN0cw== 84261\nIEVyb3Rpaw== 84262\nIG9uUG9zdEV4ZWN1dGU= 84263\n6Jk= 84264\nIHZleA== 84265\nIHN0cmluZ2lmeQ== 84266\neW5lcw== 84267\nX0VtYWls 84268\nX09N 84269\ncXVpdGU= 84270\nX2VmZmVjdHM= 84271\nQURY 84272\nIGFkb3JuZWQ= 84273\nc3Nm 84274\nZWRpdGFy 84275\nIE1hZGFtZQ== 84276\nIHJlZnV0ZQ== 84277\nIEx1Y2E= 84278\nIFdvbHZlcmluZQ== 84279\nc2V4bw== 84280\nQW5kcmU= 84281\nPFJvdXRl 84282\nIFNjZW5lcw== 84283\nIHJlb3JkZXI= 84284\nX214 84285\nY3JlYXRlVGltZQ== 84286\nIHN5bnQ= 84287\nLG1vZGVs 84288\naWNyb3Vz 84289\nIE1PVVNF 84290\n6rk= 84291\nY29tcHJlc3Npb24= 84292\nIHByaW5jZXM= 84293\nIHNoYW1lZnVs 84294\nIHBhdQ== 84295\nIFRFRA== 84296\nKGNvZWZmcw== 84297\n4K+B 84298\nL3VtZA== 84299\nIGNhbnlvbg== 84300\nL3JlbmRlcg== 84301\nLnVzZWQ= 84302\nIEFncmVl 84303\nIEpld2Vs 84304\nL2NvbW1hbmQ= 84305\nQmFyY29kZQ== 84306\nKGRlYWQ= 84307\nd2Vic29ja2V0 84308\ndW11 84309\nR0xPU1M= 84310\nIGZvcnRu 84311\nIGJvYXN0ZWQ= 84312\nICJcIj4= 84313\naXN0dW5n 84314\nLW1hY2hpbmU= 84315\nIGluY2lkZW50YWw= 84316\nIG1N 84317\nLXJlYWRhYmxl 84318\nLmZ4 84319\nIFBPTElU 84320\nIHN5bWxpbms= 84321\nKHVzaW5n 84322\neEVE 84323\nICIiIi4= 84324\nLlN0ZG91dA== 84325\nIOiL 84326\nIGFsbWFjZW4= 84327\nCXRyaWdnZXI= 84328\nLXRpcA== 84329\nIENPTU1JVA== 84330\nLmluZ3JlZGllbnRz 84331\nIG1hbmlmZXN0cw== 84332\nIE9TUw== 84333\nIEhhdXQ= 84334\nL2xvYWRpbmc= 84335\nLlR5cGVTdHJpbmc= 84336\nKGNsZWFu 84337\nIExJQw== 84338\nIEJhcmJpZQ== 84339\nT09TRQ== 84340\nLuKApg== 84341\nIEludml0YXRpb24= 84342\nIHJlZGVlbWVk 84343\nKS4nPC8= 84344\nIGltZGI= 84345\nIGJlbGFuZw== 84346\nIHNjcmFwcGVk 84347\nLW5pbA== 84348\nIFByb3Vk 84349\n0LDRgdGC 84350\nLlNJWkU= 84351\nIHNldFZpc2libGU= 84352\nIHJhaW5pbmc= 84353\nIGxlbmdodA== 84354\nIGFuYWs= 84355\nX0NNUA== 84356\nIHBhbm9yYW1pYw== 84357\nIGdpbQ== 84358\nc2FpZA== 84359\nIHByb2dlbg== 84360\nIEdCUA== 84361\n4oCg 84362\nIGludmVzdGlnYXRlcw== 84363\nIHByw6hz 84364\nL25hdmlnYXRpb24= 84365\nLm1vdGlvbg== 84366\nIExpZ2h0d2VpZ2h0 84367\nCQkgICAgICAgICAgICA= 84368\nIG9udG9sb2d5 84369\nIE5JSA== 84370\nKHNpbXA= 84371\nLnB1bGw= 84372\nIHByb3Bvc2l0aW9ucw== 84373\nQFdlYlNlcnZsZXQ= 84374\nIHJlZGVmaW5l 84375\nIEVORVJHWQ== 84376\n7KC4 84377\nT1JJWkFUSU9O 84378\nIFZlcmbDvGc= 84379\nfX1dLAo= 84380\nIHdlZ2Vu 84381\n4LmH 84382\nJm9hY3V0ZQ== 84383\nLkJvYXJk 84384\nIGN1bHBh 84385\nIEdlbmV0aWNz 84386\nIH0+ 84387\nIGFkYW1hbnQ= 84388\n44GV44KM 84389\nCWF1ZGlv 84390\n6riA 84391\nIG51bWVyYWw= 84392\nIHJlc3RyYWluaW5n 84393\nLklOVEVSTkFM 84394\nIE1vbXM= 84395\nIElQQWRkcmVzcw== 84396\naW1lbnRp 84397\nIGFscGhhYmV0aWNhbA== 84398\nIEpGSw== 84399\nIEF0dGVtcHRz 84400\nZnJhZ2U= 84401\nIGRhcm0= 84402\nIGJhc2VtYW4= 84403\nPWxvZw== 84404\nLGVycm9y 84405\nIERJU0NMQUlNUw== 84406\nCXRleHR1cmU= 84407\nLWNvdmVyZWQ= 84408\nIFBsdW0= 84409\nIOWVhg== 84410\nIHDDqXJp 84411\nKHJldmlldw== 84412\nIEZvcmNlZA== 84413\nRkg= 84414\nIOy0iA== 84415\nIGV5ZWJyb3c= 84416\nX1JFR1M= 84417\nIGNoZXN0cw== 84418\nIExhcmdlc3Q= 84419\nXV06Cg== 84420\nVVRPUg== 84421\nIGVucXVpcmllcw== 84422\nIGNva2U= 84423\nLWNhdGNoaW5n 84424\nIEdlb2dyYXBoeQ== 84425\nYXRlbA== 84426\nKHByb2Q= 84427\nb3JXaGVyZQ== 84428\nTmluZQ== 84429\nIFBpZWQ= 84430\nIGFkanVzdHM= 84431\nKHByb20= 84432\nX21lbnVz 84433\nX2V4YW0= 84434\nIE5vdGlmaWNhdGlvbkNlbnRlcg== 84435\nCWRz 84436\nTElL 84437\nX3R3aXR0ZXI= 84438\nQ1JD 84439\nIGV1eA== 84440\nIFN0YWJsZQ== 84441\naXlvcg== 84442\nIGNhcmJvbmF0ZQ== 84443\nLnNhbA== 84444\nTWFwcGVk 84445\naWV2aW5n 84446\nKXk= 84447\neW5hbW9kYg== 84448\nLkNvbXBhcmVUYWc= 84449\nIHNldmVyZWQ= 84450\nJ2VtYWls 84451\nIGZvcnNr 84452\nbGV4cG9ydA== 84453\nSU1JVEVS 84454\nIEFwZXg= 84455\nIGhtYWM= 84456\nIE9kZHM= 84457\nb3ZlcnJpZGVz 84458\nOiI7DQo= 84459\nIG9waW9pZHM= 84460\nIG1lc21lcg== 84461\nIEdBTA== 84462\nLWxpbmVz 84463\nIGFwcGx5TWlkZGxld2FyZQ== 84464\nIHNlcmlh 84465\nRVNJUw== 84466\nIG5pbGFp 84467\nIG1hbGxz 84468\nIFBhb2xv 84469\nIExlbnQ= 84470\nLmJ1aWxkZXJz 84471\nLyY= 84472\nIENsaXBz 84473\nIEp1cmFzc2lj 84474\n4pWd 84475\nLWNvbmQ= 84476\n44O844OI 84477\nfHd4 84478\nLmhvdXNl 84479\nIGhlcmF1cw== 84480\nIGhr 84481\nIENvY28= 84482\nIlwK 84483\nIGFjY3JlZGl0YXRpb24= 84484\nIFJhY2g= 84485\nZXJ0ZXN0 84486\nc2hvcnRjb2Rl 84487\nIHZhbGlkYXRpb25z 84488\nVUxTRQ== 84489\nIGV4Y2VycHRz 84490\nU2Vla0Jhcg== 84491\nIGdldExvY2F0aW9u 84492\nIGZlbmNlZA== 84493\nKGdz 84494\nIGx5cw== 84495\nIGhhcm1z 84496\nIEhvbW8= 84497\n4oCcU2hl 84498\nIOKAuw== 84499\nPXNlc3Npb24= 84500\nX0NPTVBJTEU= 84501\nTWVhbnM= 84502\nIHBldGl0aW9uZXI= 84503\nSU1P 84504\nIl09Pg== 84505\nZGJl 84506\nX2dwcw== 84507\nIG1q 84508\nX2V4cGlyZQ== 84509\nIERBTg== 84510\nIHh2 84511\nIGZ1bmNpb25lcw== 84512\nIHNoYWt5 84513\nU3VnYXI= 84514\nIGdldFJlc3VsdA== 84515\nPFRva2Vu 84516\naHR0cENsaWVudA== 84517\nLm9uUGF1c2U= 84518\nc3Rp 84519\nU25ha2U= 84520\nTWFwcGluZ3M= 84521\nIFJlYXBlcg== 84522\nIGZyZWk= 84523\nIENvc21vcw== 84524\ndWVycw== 84525\nIEhhag== 84526\nIEJsYXpl 84527\nb2ppcw== 84528\nQ3JMZg== 84529\nLnByb2M= 84530\nIG90cA== 84531\nIERyYXdz 84532\nCVJFRw== 84533\nKCcnJw== 84534\nIGdlbmVyYQ== 84535\nIEF0dGFjaGVk 84536\nUkVN 84537\nJTsiPg== 84538\ndXJuaXNoZWQ= 84539\nX3Jw 84540\nIHpvYWxz 84541\nIGFzc29ydGVk 84542\naXRpemVk 84543\nIGNhbWlubw== 84544\nIGFiZHVjdGVk 84545\nLnRvQmU= 84546\nJ10pOg== 84547\nIE1vb3I= 84548\nSW5jbHVkaW5n 84549\nIGdyYXppbmc= 84550\nc2V0U3RhdHVz 84551\nYWlyb2Jp 84552\nX0V4ZWN1dGU= 84553\naWZpYW50 84554\nZWxkbw== 84555\nYXV0b21hdGlj 84556\nKCQp 84557\nIGxlYXBz 84558\nb25lZERhdGVUaW1l 84559\nKGxheWVycw== 84560\nLXByb2R1Y2Vk 84561\nIFdvcmtib29r 84562\nIGVub3Jtb3VzbHk= 84563\nIGRlcHJlc3NpdmU= 84564\nIGFhYQ== 84565\nRW1iZWRkZWQ= 84566\nQlVN 84567\nIGVsbGVz 84568\nIGJvYXJkZWQ= 84569\nxZtteQ== 84570\nIG1hc2lo 84571\nX2dlbmVz 84572\nCVRleHR1cmU= 84573\naXN0YXI= 84574\nIEF1Z3VzdGE= 84575\nIEFwcE1ldGhvZEJlYXQ= 84576\nIGtvZGU= 84577\nYWJleg== 84578\nX3BpZWNlcw== 84579\nQ3Vycg== 84580\nIGxpYmVyYWxpc20= 84581\nRGljaw== 84582\nQWxl 84583\nIHF1YWxl 84584\nfSc7Cg== 84585\nLmFuc3dlcnM= 84586\nIEpBTg== 84587\nIFBVUkU= 84588\nIGNhbm9l 84589\nIFNBTUU= 84590\nUXVhbGlmaWVy 84591\nIGRibmFtZQ== 84592\nIElubm9j 84593\nCVRSQUNF 84594\naXZyZQ== 84595\nIG1lY2g= 84596\nYXNlbA== 84597\nIixb 84598\nIGFzaWE= 84599\nIENhbnRlcmJ1cnk= 84600\nLkRhdGFCaW5kaW5ncw== 84601\na2Fo 84602\nKCkpKSk= 84603\nIGR6aWV3 84604\ncmV0ZQ== 84605\nIHNjcmVlbmluZ3M= 84606\nLk1PVVNF 84607\nIGJ1c2llc3Q= 84608\nCXJlbmRlcmVy 84609\nIHRlc3RpbW9uaWFscw== 84610\nIGFzcGlyZQ== 84611\nZm9ydHVuZQ== 84612\nIE1TQw== 84613\nIGRhbXBpbmc= 84614\nXCIsCg== 84615\nV2Vs 84616\nV2lr 84617\nIOyXrA== 84618\nKHRpZA== 84619\nIENhbm5lcw== 84620\nb2NvcA== 84621\nPiIrCg== 84622\nZmFjZXQ= 84623\nIHNsYXNoZWQ= 84624\nIExpYmVyaWE= 84625\nU21vb3Ro 84626\nX2NoZQ== 84627\nTGFib3Vy 84628\nIGVtaW5lbnQ= 84629\nOlg= 84630\nXEJhY2tlbmQ= 84631\nICsrKQo= 84632\nIHRlYW13b3Jr 84633\nX2FnZw== 84634\nLlNlcnZl 84635\nIFNORA== 84636\nIFBJQ0s= 84637\nIHdpcGVz 84638\nL1R5cG9ncmFwaHk= 84639\nIEFQQQ== 84640\naWtraQ== 84641\nIGNvZGVy 84642\nZ2FiZW4= 84643\nIHVua25vdw== 84644\nLkRlcGFydG1lbnQ= 84645\n4Lix4Lia 84646\nIHBsYXllck5hbWU= 84647\nKmU= 84648\nPEJsb2Nr 84649\nX3VwZA== 84650\nIEdpYmJz 84651\nbGVhc2luZw== 84652\nIENvbG9tYmlhbg== 84653\nKFBIUA== 84654\nICoqKiEK 84655\nIOydvA== 84656\nIEN1cnRhaW4= 84657\nL2F5 84658\n2YTZiQ== 84659\nc3BvcnRz 84660\nIGRlc2Vh 84661\naXLDoQ== 84662\nIHVuY29uZGl0aW9uYWw= 84663\nIHRocm9t 84664\nIENIUklTVA== 84665\nIEhPUg== 84666\nb3Njb3BpYw== 84667\nIHlhxZ8= 84668\nIG5vc3Rybw== 84669\nLi4uIik7DQo= 84670\nIHNsdXI= 84671\nIGhhdHRlbg== 84672\nIHBlc3RpY2lkZQ== 84673\nIGZyZWV3YXk= 84674\nIENvaA== 84675\nIHdhbm5vbmNl 84676\nIG1laWRlbg== 84677\nX3N1YnN0cg== 84678\nX0NTUw== 84679\nIFN5bWJvbHM= 84680\n4Li34Lit 84681\nREVU 84682\nIE1hZGRlbg== 84683\nIHJlcXVlc3Rlcg== 84684\nLnZpcnR1YWw= 84685\nIHd4RGVmYXVsdA== 84686\nIGF1dG9tw6F0aWNhbWVudGU= 84687\nYnJpZHM= 84688\naVQ= 84689\nLlByaW9yaXR5 84690\nJyk7PC8= 84691\nYnVuZw== 84692\nRGVhZGxpbmU= 84693\nQ29uY3JldGU= 84694\nIG5leHRQYWdl 84695\nIOuwmw== 84696\nIFN0b2tl 84697\na29w 84698\nINCx0L7Qu9GM 84699\nIFByb2R1aw== 84700\nLW1ha2Vy 84701\nIFByb2plY3RpbGU= 84702\nYW5jZWxsYWJsZQ== 84703\nIFRIRUlS 84704\nVG9SZW1vdmU= 84705\nRU1V 84706\nY29tbWVyY2lhbA== 84707\nQVZFRA== 84708\nIHdlYXZpbmc= 84709\nIGJpb21l 84710\nQFNldHRlcg== 84711\ncW1s 84712\nIGJyb2FkZW4= 84713\nINGB0L8= 84714\nSVNS 84715\nIGRlYWN0aXZhdGVk 84716\nIHNlbGVjdGVkSW5kZXg= 84717\ncmlvdXM= 84718\nZWxwcw== 84719\nLkVzY2FwZQ== 84720\nIHBvbGxlZA== 84721\ncXVpYQ== 84722\nX3JlZmw= 84723\nX21pbWU= 84724\nPEF1ZGlvU291cmNl 84725\nKFRyYW5zZm9ybQ== 84726\nZXZlbm9kZA== 84727\nCXJhbmRvbQ== 84728\nbG9jcw== 84729\nIGRldXQ= 84730\ncmVwbGFjZW1lbnQ= 84731\nIGV4YW1pbmVy 84732\nSGFzS2V5 84733\nIOumrOyKpO2KuA== 84734\nIENsb3Ro 84735\nIOCkqg== 84736\nIFJlZ2lzdHJv 84737\nIEVzdGhlcg== 84738\nIFNoYXJlZE1vZHVsZQ== 84739\nLmJvcnJvdw== 84740\nIG9zY2lsbGF0b3I= 84741\nIGZvb2xz 84742\nuqs= 84743\nIGJvYXN0aW5n 84744\nX3B1bHNl 84745\nc2hhcmluZw== 84746\nIHBpc3RvbHM= 84747\nX1BMQU4= 84748\nIHNlcHRlbWJlcg== 84749\nIG11c3Rlcg== 84750\nIG1hcmNow6k= 84751\nQ0hFTVk= 84752\nIHN1aQ== 84753\nIGdlYnJ1aWs= 84754\nLj0n 84755\nZXJyYXRlZA== 84756\nIExpYQ== 84757\nIGhhdW50 84758\nIEN1c2g= 84759\ncm91dGVQcm92aWRlcg== 84760\nInw= 84761\nZW5kcGhw 84762\nIl1dCg== 84763\nIGF2YQ== 84764\n77yBIiw= 84765\n7Ke4 84766\nIGNvbGE= 84767\nX1NQRUxM 84768\nIGFsw6lt 84769\nKExhbmd1YWdl 84770\nKGR1bW15 84771\nIGJ1bmtlcg== 84772\nIEVtcHJlc2E= 84773\nIGNyZWF0ZUNvbnRleHQ= 84774\nOm1pbg== 84775\nIEJPT1Q= 84776\nIE1lcmVkaXRo 84777\nWmg= 84778\nIERvd25pbmc= 84779\nd2pnbA== 84780\nLmRj 84781\nc2RhbGU= 84782\nIGluY29udmVuaWVudA== 84783\nIHJlYWRtZQ== 84784\nTmF2aWdhdGlvblZpZXc= 84785\nQ09ORElUSU9O 84786\nLmRlcA== 84787\nIHLDqXVzcw== 84788\nIG9wY2nDs24= 84789\nIEFjY291bnRhYmlsaXR5 84790\nLk1hcg== 84791\nLWd1aWQ= 84792\nRURHRQ== 84793\nRXZlbnRNYW5hZ2Vy 84794\nIGRpc2NpcGxl 84795\ndWNrbGVz 84796\nfX0+ 84797\naW50ZXJlc3RlZA== 84798\nRmlsdGVyV2hlcmU= 84799\nIHB1c3M= 84800\nLXByb3h5 84801\nX3N0YXR1c2Vz 84802\nIFsj 84803\ndW5mb2xk 84804\nIFJvbm5pZQ== 84805\nJiYh 84806\nIGFjZXNzbw== 84807\ndW9z 84808\nX3lpZWxk 84809\nKGNhbGVuZGFy 84810\nKHNvdW5k 84811\nIGRhdGFBcnJheQ== 84812\nIFlhdGVz 84813\nIHByb2Nlc3Npb24= 84814\nRUZBVUxU 84815\nIEdIQw== 84816\nYW11cmE= 84817\nIHN0cmljdGVy 84818\nLkJPVFRPTQ== 84819\nIGhhYml0dWFs 84820\neEFG 84821\nQVZJTkc= 84822\nIHNldHVwcw== 84823\nID17Cg== 84824\nKioo 84825\nIHNvaw== 84826\nIHJldGluYQ== 84827\nIEZpcmVwbGFjZQ== 84828\naW52ZXJ0 84829\nIEZvcnJlc3Q= 84830\nPGRhdGE= 84831\nXEFjdGlvbg== 84832\nT1VHSA== 84833\nIGNhcmVsZXNz 84834\nLmdldEFjdGl2ZQ== 84835\nZXNlcw== 84836\nIHpkasSZ 84837\nKSkqKA== 84838\nU0VN 84839\nIFBhbmlj 84840\nVG91Y2hlcw== 84841\nIHByZWNv 84842\nL2FjY291bnRz 84843\n5L6b 84844\nUG9zdGFsQ29kZXM= 84845\nLXBsdWdpbnM= 84846\nPG1lc3NhZ2U= 84847\nKHBvd2Vy 84848\nIHBlcmN1c3Npb24= 84849\nIGPDqWw= 84850\n5o6o 84851\nIGRhbmNlZA== 84852\nX1NDQU5DT0RF 84853\nIFNpdHRpbmc= 84854\nIExva2k= 84855\nU2hhcmluZw== 84856\nLkRpcg== 84857\nIHNjaHdlcg== 84858\nX0xB 84859\nLk1lbnVTdHJpcA== 84860\nX3plcm9z 84861\nIGZpeGF0aW9u 84862\nIEFtaXQ= 84863\nIGNvbXBsaWVk 84864\nLnNwYWNlQmV0d2Vlbg== 84865\nIGFycmVzdGluZw== 84866\nIFN1Zw== 84867\nIHBlcmZvcg== 84868\nIGtvbXBsZQ== 84869\nIEVzc2VuY2U= 84870\nIHBsZWlu 84871\nc2ltdWxhdGlvbg== 84872\nIGNyZWF0ZWRCeQ== 84873\nIEV4cGVkaXRpb24= 84874\n77yBCgoKCg== 84875\ndHJhaW5lcg== 84876\nIl09JA== 84877\nIHN1Y3Rpb24= 84878\nbVBpZA== 84879\nbm90aW4= 84880\nIHByZWNpb3M= 84881\nIEFzc3VyYW5jZQ== 84882\nIExhbA== 84883\nLiIm 84884\nIG1pbkxlbmd0aA== 84885\nIE1pbmVyYWxz 84886\ndHJhamVjdG9yeQ== 84887\nU0FGRQ== 84888\nIG51YW5jZXM= 84889\nKGV4dHJh 84890\nX3ZpZGVvcw== 84891\nW109ew== 84892\nIGhvbmV5bW9vbg== 84893\nX3ByZXA= 84894\nCQkJCQkJCQkJCSA= 84895\nIHB1cnBvcw== 84896\nIGFuemVpZ2Vu 84897\nLnN0cnV0cw== 84898\nIHBhZ2Fy 84899\nLkF1dG9TaXplTW9kZQ== 84900\nIHdlbmlnZXI= 84901\nIHBhZ2Fu 84902\nIGFjaWRpYw== 84903\nZ01hcHM= 84904\nIGJld2FyZQ== 84905\nX2lwYw== 84906\nIG1lZHM= 84907\nIGRpc2XDsW8= 84908\nKSkpCgoK 84909\nQ2h1cmNo 84910\nIG51cnR1cmluZw== 84911\nX21waQ== 84912\nIHJlc3VsdGFudA== 84913\nIFBpc3RvbA== 84914\nc1BpZA== 84915\nTXNw 84916\nTW9tZW50 84917\nIFVQTE9BRA== 84918\nTmFubw== 84919\nYmxpY2s= 84920\nIG1lc3VyZQ== 84921\nIExheWVycw== 84922\nX3RyYWo= 84923\nIGJ1dHRvbldpdGhUeXBl 84924\nCWNvbW1vbg== 84925\nIE15Q2xhc3M= 84926\n2KjYsQ== 84927\neG9vcHM= 84928\nX0hlaWdodA== 84929\nX1dBUk5JTkdT 84930\nU2V0VGV4dA== 84931\nIEhpc3Bhbmljcw== 84932\nTnVsbFBvaW50ZXJFeGNlcHRpb24= 84933\nLmZhY3Rvcg== 84934\nIHZpZWxsZWljaHQ= 84935\nIHNob3V0cw== 84936\ndHJ1c3RlZA== 84937\nIG5ld1Jvdw== 84938\nIEZyYW7Dpw== 84939\nW2pq 84940\n4oCUd2hv 84941\nIFFEaXI= 84942\nX2FkdmFuY2Vk 84943\nKEhhdmVPY2N1cnJlZA== 84944\nIHVucGw= 84945\nL3Jvcw== 84946\nLmVhc3k= 84947\nIEJBTEw= 84948\n550= 84949\nL2xncGw= 84950\nIHN1YmNvbnNjaW91cw== 84951\nICctJzsK 84952\nICcpOw== 84953\nINGW 84954\nIHNjYW50 84955\nX3Nlc3M= 84956\nX3BsYXlpbmc= 84957\nX0lTTw== 84958\nIHNldFNpemU= 84959\nX2RlY2s= 84960\nX0xBUkdF 84961\nIE1leQ== 84962\nQ2hpY2tlbg== 84963\naWZmaW4= 84964\nZGlzcG9zZQ== 84965\nSEVTVA== 84966\nTGF1Z2g= 84967\nIExDUw== 84968\nIG9uc2l0ZQ== 84969\nLmlzTG9nZ2VkSW4= 84970\nIGlycml0YXRlZA== 84971\nIGJyaWdhZGU= 84972\nIGRlcXVldWU= 84973\nY2xhc3NOYW1lcw== 84974\nIE3DoXM= 84975\nIEF0YXJp 84976\nKElPRXhjZXB0aW9u 84977\nUmFjaGVs 84978\nLXNhbXBsZQ== 84979\nIGVpZ2VudGxpY2g= 84980\nSUZERUY= 84981\nLm5laWdoYm9ycw== 84982\nIHNlcGVyYXRl 84983\nIExpc3Rpbmdz 84984\nLmZm 84985\nKGltcG9ydA== 84986\nTW9kZWxBdHRyaWJ1dGU= 84987\nIHNwZW5kZXI= 84988\nIG1vdGlmcw== 84989\nc3N1ZQ== 84990\nIEFwcHJlbnRpY2U= 84991\nLWNhdA== 84992\nclBpZA== 84993\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K 84994\nb2N6 84995\naW5pb25z 84996\nL2NvbnRhaW5lcg== 84997\nIHBsYWdpYXJpc20= 84998\nV3JpdGFibGVEYXRhYmFzZQ== 84999\nLy4KCg== 85000\nIEZldmVy 85001\nLVZlcnNpb24= 85002\nYWNpamE= 85003\nIHdlaQ== 85004\nLWluZw== 85005\nIHRlbWFz 85006\nIHN1cmdlZA== 85007\nIGNyaWE= 85008\nIGFyZA== 85009\nYml0Y29pbg== 85010\nLnRpbWV6b25l 85011\nIG9iamVjdE1hcHBlcg== 85012\nIAogICAgICAgICAgICAK 85013\nIHlsaW0= 85014\nIElDVQ== 85015\nIERlcHJlY2F0ZWQ= 85016\nKSgpOwo= 85017\nQVJHRVI= 85018\ndW5nYWxvdw== 85019\nVGVzdERhdGE= 85020\nKHB0cw== 85021\nRklMRU5BTUU= 85022\ndXBwbHk= 85023\nIHBhY2llbnRlcw== 85024\nLGxlZnQ= 85025\nIFdyaXRlTGluZQ== 85026\nIHBhcmNlbHM= 85027\nX2ZvbGRlcnM= 85028\nIERpcms= 85029\nLmFzc2VydElzSW5zdGFuY2U= 85030\nTWND 85031\nX1ZhcmlhYmxl 85032\nKGFh 85033\nIFBvcms= 85034\nLlB1Ymxpc2g= 85035\nLWdheQ== 85036\nIFBldHJh 85037\nIENvbm5lY3Rpbmc= 85038\nVGFiQ29udHJvbA== 85039\naXZlcmluZw== 85040\nKFNjcmVlbg== 85041\nIGNoaWxsZWQ= 85042\nIGFpbw== 85043\nVG91Y2hFdmVudA== 85044\nIGFjY2Vzc2lvbg== 85045\nIExvaXM= 85046\nL21vbWVudA== 85047\nIGFudsOkbmQ= 85048\nIHN1aWNpZGVz 85049\nKGhlbHA= 85050\nYW5kZXJz 85051\nIFZJRA== 85052\nQmVp 85053\nZXZlbnRv 85054\nIEFuZ3Vz 85055\nVmVycw== 85056\nIEJvcmRlYXV4 85057\nLnN0cmVhbWluZw== 85058\nIHJvdWdl 85059\nIGNyYWZ0c21hbnNoaXA= 85060\nb3NzaWw= 85061\nX0ZBTEw= 85062\nQG1lZGlh 85063\naWxlYWtz 85064\nRGF0YVNlcnZpY2U= 85065\nIFRyaXBBZHZpc29y 85066\nIE1hYXI= 85067\nQ3Vyc28= 85068\nUG9zdGFsQ29kZXNOTA== 85069\nKCk7Kys= 85070\nJFBvc3RhbENvZGVzTkw= 85071\nIG9jb3I= 85072\nIHRhaW50ZWQ= 85073\nIGxlbQ== 85074\nLW91dHM= 85075\nIHh4eHg= 85076\nIGlycml0YXRpbmc= 85077\nb3hpZA== 85078\nb2ludGVk 85079\nIFRvcm8= 85080\nX292 85081\nLmJpcnRo 85082\nKyU= 85083\nIENoYXJhY3RlcmlzdGljcw== 85084\nIEJldHRpbmc= 85085\nIG9mZmVuZA== 85086\nIFBIWVM= 85087\nIElDTVA= 85088\neERD 85089\nIENk 85090\nLmdldE1hcA== 85091\nYXRjaGV0 85092\nLmN1cnJlbnRJbmRleA== 85093\nRVJBTA== 85094\nIGthcHBh 85095\naWRlbmNlcw== 85096\nUGFyZW4= 85097\nIFNlcmdlaQ== 85098\nLWZpbg== 85099\nJ10sWyc= 85100\nw6FtYXJh 85101\nR3Jvd2luZw== 85102\nR2xhc3M= 85103\nCW1ldGE= 85104\ndmVyYmF0aW0= 85105\nL0dQTA== 85106\nIEthaA== 85107\nKHN2Zw== 85108\nY2xpc3Q= 85109\nIEJsb3dqb2I= 85110\nb2NjYW4= 85111\nLmFib3J0 85112\nb2RlbGlzdA== 85113\nIGRpZmbDqXJlbnRz 85114\nX09QVFM= 85115\nPXJlcQ== 85116\nIGludG94 85117\nIGRpYWdvbg== 85118\nIFsoIg== 85119\nJlI= 85120\nIG9iamVjdGl2ZWx5 85121\nIGJsaW5raW5n 85122\nIExvdmVz 85123\ncmluZ2U= 85124\nKik7Cgo= 85125\nIEJvbmRz 85126\nIExvdmVk 85127\nZWx0cw== 85128\nIGRpc3BhcmF0ZQ== 85129\nIEVucmlxdWU= 85130\nIldpdGg= 85131\ncmVtaXVt 85132\nYWphcmFu 85133\ndHJ5aW5n 85134\nLVJ1c3NpYW4= 85135\nbmV3SW5zdGFuY2U= 85136\nLlRSQU4= 85137\nIG9yYW5nZXM= 85138\nL2xvY2FsZQ== 85139\nIERJU1A= 85140\nCW5z 85141\nIFNodXR0ZXJzdG9jaw== 85142\nIENMT0NL 85143\nKHJhZA== 85144\nIGFzc3VyYW5jZXM= 85145\nIHJhc3A= 85146\nVWJlcmdyYXBo 85147\nRW1pbHk= 85148\nIGludmVudGlvbnM= 85149\ncmlvdA== 85150\nIHRvc3Npbmc= 85151\nIG1ha2VvdmVy 85152\nIHVuaXRPZldvcms= 85153\nYnV0dG9uU2hhcGU= 85154\n5Yid5aeL5YyW 85155\nIHBhcnRlZA== 85156\n4paR 85157\nLnNpZ21vaWQ= 85158\nIHJlZGlyZWN0aW9u 85159\nIGRpc3R1cmJhbmNlcw== 85160\nIGludGltaWRhdGVk 85161\nCUNyZWF0ZWQ= 85162\nYWdldA== 85163\nIGNvcnJlcw== 85164\nIE5FRw== 85165\naXRvbmU= 85166\nL2Zyb250 85167\nIFZlcnNl 85168\nZ2FtYmFy 85169\nIHByZW1pZXJlZA== 85170\nIElNTw== 85171\nIEdvYmllcm5v 85172\nIGlmcw== 85173\nYXlhaA== 85174\nLkNPTA== 85175\nIGZyZWRlcg== 85176\nIHN1Ym1lcmdlZA== 85177\nIE5lcm8= 85178\nbW9kaWZpYWJsZQ== 85179\nL0Zvb3Rlcg== 85180\nLWNlbnRyYWw= 85181\nIGdvdXZlcg== 85182\nIFRyaWVk 85183\nIGRpenp5 85184\nUXVlcnlQYXJhbQ== 85185\nIj4nKwo= 85186\nX3ByaW1pdGl2ZQ== 85187\n56iO 85188\nLmdwdQ== 85189\nIHZveg== 85190\nZW56ZQ== 85191\nIFdpbGRlcm5lc3M= 85192\nIHByb2JhYmls 85193\nL3JlYw== 85194\nIGFjY2Vz 85195\nIFRydXN0ZWVz 85196\nR2I= 85197\nIHBhZGRpbmdIb3Jpem9udGFs 85198\nU2hpZWxk 85199\nIE5hbWVu 85200\ndWRkbGVk 85201\nIFByaW9yaXR5UXVldWU= 85202\nUG9vcg== 85203\nIFNBRg== 85204\nLS1bWw== 85205\nIGNobG9yaW5l 85206\nIHZlcmJhbGx5 85207\nIGFpcmU= 85208\nPjsNCg== 85209\naWxoYQ== 85210\nW2NvbG9y 85211\nYW5kYWxvbmU= 85212\nLmFkZFJvdw== 85213\nIFNvaw== 85214\nIENvbm9y 85215\nIG1lam9yYXI= 85216\nJ2lscw== 85217\nZGV0YWxsZQ== 85218\nICIpLAo= 85219\nJUA= 85220\nLmxhenk= 85221\nLmp1bXA= 85222\nb3N0ZQ== 85223\nK0Y= 85224\nIGluZnVyaQ== 85225\nIHNvbnJh 85226\naXRlbWlk 85227\nJGxvZw== 85228\nIG11cmRlcm91cw== 85229\nTEVD 85230\nCW5pbA== 85231\nIE3DpHI= 85232\nKHBn 85233\naWxlbw== 85234\nQXNjaWk= 85235\nIExvY2toZWVk 85236\nIFRoZW8= 85237\nQmVsbA== 85238\nYWNpb25hbGVz 85239\nLmNyZWF0ZU5ldw== 85240\nIOW+ 85241\nLWZvb3RiYWxs 85242\nIGVjb21tZXJjZQ== 85243\nCVNpbXBsZQ== 85244\nY2x5 85245\nLklubmVyRXhjZXB0aW9u 85246\nIHBlc29z 85247\nIHRyb3Bl 85248\nIEFSR1M= 85249\nTWlhbWk= 85250\nIFBhbG8= 85251\nIFN1emFubmU= 85252\nX21hcHBpbmdz 85253\nI3tA 85254\nIE9jY3VwYXRpb25hbA== 85255\nX2J1Y2tldHM= 85256\nZ29hbHM= 85257\nX1J1bg== 85258\nLXByZXBlbmQ= 85259\nc3Nz 85260\nbWFyc2hhbGw= 85261\nIGVxdWl2YWxlbmNl 85262\nIFdlbGNo 85263\nKE9wQ29kZXM= 85264\nCWNsb2Nr 85265\nIE1lZGluYQ== 85266\nVEVSUw== 85267\nb3Jhbmc= 85268\nVGhvdWdodA== 85269\nIG9hdHM= 85270\nX1RFWA== 85271\nUklDUw== 85272\nIGluZGlmZmVyZW5jZQ== 85273\nIGFsbG90 85274\nLlVzZVRleHQ= 85275\nIFRyaWNrcw== 85276\nYXdl 85277\nLkZJTEw= 85278\nLXBocA== 85279\nLnZvaWNl 85280\nIFBhdGhmaW5kZXI= 85281\nX1RBR1M= 85282\nIFRyaXQ= 85283\n5oyJ6ZKu 85284\nYmJj 85285\nIGFkZGl0aXZlcw== 85286\nIHNjaGxl 85287\nIEtleWJvYXJkSW50ZXJydXB0 85288\nIHVzZVBhcmFtcw== 85289\nIEJ1Y2hhbmFu 85290\ncmlhbmdsZQ== 85291\nIG11bHRpcGx5aW5n 85292\nIHNlbGJlcg== 85293\nIFllcA== 85294\nQ2hhaXI= 85295\nLXJlcG9ydGVk 85296\nX1NESw== 85297\nLG5v 85298\nIEZhbGxpbmc= 85299\n5rk= 85300\nICgpLAo= 85301\ncGRi 85302\nIEJvcm91Z2g= 85303\nLnJlbW92ZUZyb20= 85304\nIG92ZXJzaGFkb3c= 85305\naWdhaWw= 85306\nIHR1bmc= 85307\nIG1tYw== 85308\nW3BhcmVudA== 85309\nRXh0ZXJu 85310\nYXZpb2xldA== 85311\nJykiCg== 85312\nIGNvdW50ZXJ0b3Bz 85313\nIHVidW50dQ== 85314\n5rc= 85315\nIM6T 85316\nIHVucHVibGlzaGVk 85317\nIEluZGllcw== 85318\nVU5FVA== 85319\nIG9mZXJ0YQ== 85320\nIGRhbWVz 85321\nIGFzdGVyb2lkcw== 85322\nIG5vdmVtYmVy 85323\nY29udHJhc3Q= 85324\nLkFkZE1vZGVsRXJyb3I= 85325\nK1NhbnM= 85326\nIHNjcmFtYmxpbmc= 85327\ndGV4dFZpZXc= 85328\nL2NyeXB0bw== 85329\nVXNlUHJvZ3JhbQ== 85330\nQHVwZGF0ZQ== 85331\nRGVzZGU= 85332\nU0FU 85333\nIGRpc3BsZQ== 85334\nYW5uw6ll 85335\nXERlcGVuZGVuY3lJbmplY3Rpb24= 85336\nIGl0bQ== 85337\nIOe8 85338\nIGV0aG9z 85339\nQVBP 85340\nIEdhcmPDrWE= 85341\naWRpcw== 85342\nIFN0ZWFr 85343\ncmliYQ== 85344\nX3ZlcmlmaWNhdGlvbg== 85345\nIEZL 85346\nIEVpbnNhdHo= 85347\nIHBlcnNvbmFsaXNlZA== 85348\nLW1vdGlvbg== 85349\nIE1lbGFuaWU= 85350\nw7Zo 85351\nX1ZD 85352\nIGRyaWZ0aW5n 85353\nLmNvbnN0cnVjdA== 85354\nIO2UhA== 85355\nIGJhdGNoaW5n 85356\nLi4vLi4vLi4vLi4v 85357\nRVJQ 85358\nX3V0Yw== 85359\nIG11bHRpdA== 85360\nIG1yYg== 85361\nY2Nhaw== 85362\nY2h1bmtz 85363\nIHRyYW5zbHVjZW50 85364\nIHBheW9mZg== 85365\n4oCUYW4= 85366\nIHNpbGw= 85367\nIG9ybmFtZW50cw== 85368\nZ3Vh 85369\nVUJZ 85370\nKHN0ZXBz 85371\nIEJPUkRFUg== 85372\nIFNPVU5E 85373\nYGAK 85374\nZW5hcmllcw== 85375\nIEJpdHRl 85376\nIGdseXBocw== 85377\nIG92ZXJydW4= 85378\nIGJsb2NrSWR4 85379\nIE1TVA== 85380\nIGdlbm9tZXM= 85381\ndGVuc29yZmxvdw== 85382\nRGlyZWN0b3J5TmFtZQ== 85383\nX2xocw== 85384\nIGZpbnQ= 85385\nYWRkdG9ncm91cA== 85386\nIHN0ZWFkZmFzdA== 85387\nIGNsb3Zlcw== 85388\nIFNvdmlldHM= 85389\nIElTQQ== 85390\nwqNv 85391\ndXJnZXJ5 85392\nc292 85393\nINCy0YvQstC+0LQ= 85394\nIHB1ZA== 85395\nLXdhdGNo 85396\nIEhvc3BpdGFscw== 85397\nfXdoaWxl 85398\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 85399\n4buj 85400\nIGFrdHVhbA== 85401\nIGtpbG9ncmFtcw== 85402\nIEZBQw== 85403\nb3BoeXM= 85404\ncHJz 85405\nKkA= 85406\neWI= 85407\nc2VjdXJlZA== 85408\nIGFsZ8O6bg== 85409\nIOCkuQ== 85410\ncGhhbnM= 85411\nQWRkb24= 85412\nIGNlbnRyYWxseQ== 85413\nX1NVSVRF 85414\nSW50ZXJlc3Rpbmc= 85415\ndWx0aW1v 85416\nQWdhaW5zdA== 85417\nIEV6cmE= 85418\nIEhlYg== 85419\ndWlkYQ== 85420\nIHNreXM= 85421\nT0xWRQ== 85422\nQmVuZWZpdHM= 85423\nIHByaXNl 85424\nLio/KQ== 85425\nLmlzRGVmaW5lZA== 85426\nIHN0YW5kb2Zm 85427\nIHBsYW5v 85428\nLmxhdGVzdA== 85429\nICgkLg== 85430\nIEdvdWxk 85431\nIGNhdXRpb25lZA== 85432\nJ10o 85433\nIG51aXQ= 85434\nIEhDSQ== 85435\nZm9vdGJhbGw= 85436\nIHdpbGxlbg== 85437\nUHJvY2VlZA== 85438\nIGludGVuZGluZw== 85439\ndGlm 85440\nIHNwb25zb3Jpbmc= 85441\nb2hhbmE= 85442\nRG9z 85443\nTW9ybmluZw== 85444\nICEiKTsK 85445\nLnNoZWxs 85446\nIFJFTEFURUQ= 85447\nIHBpbXA= 85448\nL2NvdXJzZQ== 85449\nIHJhbWlmaWNhdGlvbnM= 85450\nIHBpeG1hcA== 85451\nIHBvd2VybGVzcw== 85452\nIGRvdWNoZQ== 85453\nY3JpbWU= 85454\nY29udHJpYnV0b3Jz 85455\nKHByb3RvY29s 85456\nIGdldFBvc2l0aW9u 85457\nU0VUVElOR1M= 85458\nIHZpZXQ= 85459\naXNzZXM= 85460\nV2l0aEVtYWlsQW5kUGFzc3dvcmQ= 85461\nUmV0dXJuVHlwZQ== 85462\nQXBwZQ== 85463\nIElLRQ== 85464\nLkNvb2tpZXM= 85465\nLm1lZGl1bQ== 85466\nLmdldEpTT05BcnJheQ== 85467\nX0Zvcg== 85468\nL3Rpbnlvcw== 85469\nIFRhYmxlQ2VsbA== 85470\nIFJFUExBQ0U= 85471\nLk5ldHdvcmtpbmc= 85472\nIGJvd2Vk 85473\nCW1k 85474\nPSJ7ISE= 85475\nIGhvbmRh 85476\nIEV1cg== 85477\nIGluZG9uZXNpYQ== 85478\nIGhlbmQ= 85479\nLnZpZXdtb2RlbA== 85480\nCWN0cmw= 85481\nIFRhYmxldHM= 85482\nLW9yYW5nZQ== 85483\nZXJyYXM= 85484\nX2dyYXBoaWNz 85485\ne3M= 85486\nIFRpdGxlcw== 85487\nIGRpYWdub3Nlcw== 85488\nb3VwbGU= 85489\nX0RvdWJsZQ== 85490\nW3Jlc3VsdA== 85491\nIGppdHRlcg== 85492\nX05VTUVSSUM= 85493\nPmY= 85494\nX01Z 85495\n0LjRgdGC0LXQvA== 85496\nc3RvcmVJZA== 85497\nIHJlbGlucXU= 85498\nZW9z 85499\nIHdpZGVuaW5n 85500\nIHRhY29z 85501\nLllFUw== 85502\nXSsn 85503\nIEluZGV4ZWQ= 85504\nIHByb2Zlc3Npb25uZWw= 85505\nIFN0cmFw 85506\nQnVmZmVyRGF0YQ== 85507\nZWVh 85508\nZXJpbg== 85509\nQU5DRVM= 85510\nX1RYVA== 85511\nIHt9Lg== 85512\nKGNvbnRyYWN0 85513\neXc= 85514\nIGJsaW5kbmVzcw== 85515\nQ0hBTg== 85516\nCWdsQ29sb3I= 85517\nIGN1cnJlbnRQb3NpdGlvbg== 85518\nIENhdWNhc2lhbg== 85519\nJGltZw== 85520\nI2Fh 85521\nIHNlYW4= 85522\nTWVzcw== 85523\nKj0qPQ== 85524\nIGNhcGFjaXRvcg== 85525\nYWxmYQ== 85526\nLlJlbW92ZUFsbA== 85527\nIFdQQVJBTQ== 85528\ndWxhZG8= 85529\nbmljb3M= 85530\nIG9yZ3k= 85531\nR1g= 85532\nX0RFVklDRVM= 85533\nb3Vya2U= 85534\nIGtC 85535\nIHNvcGhpc3RpY2F0aW9u 85536\nX2F1ZGl0 85537\nL0lQ 85538\nIEx5ZnQ= 85539\nL1N0 85540\nCWNhbmNlbA== 85541\nIG92YXJpYW4= 85542\nbWFyaW5l 85543\na8SZ 85544\nIFlN 85545\nIE1pbG8= 85546\nIE1hdFRhYmxl 85547\nIEFiYnk= 85548\nbnpl 85549\nIEx1ZHdpZw== 85550\nX2FybW9y 85551\nIHNjYWZmb2xk 85552\n4buXaQ== 85553\nYXV0aG9yaXR5 85554\n4bqleQ== 85555\nLmdldFByb2R1Y3Q= 85556\nIE9yYml0 85557\nX1BhcmFtZXRlcg== 85558\nLmRhdGVGb3JtYXQ= 85559\nL3RhZ3M= 85560\nLlNwZWVk 85561\nKExpbmU= 85562\nIHBvbGlzaGluZw== 85563\nIGtvbWI= 85564\nIHJ0cmlt 85565\nJ2ljb24= 85566\ncmllcmU= 85567\nIFByZWZlcg== 85568\nc3RydG9sb3dlcg== 85569\nUmVncw== 85570\nQ0JE 85571\nLT4K 85572\nIHBhcmFzaXRl 85573\nZW5kc1dpdGg= 85574\nIENvYnJh 85575\nOnRlc3Q= 85576\nIE51Z2dldHM= 85577\nxaF0 85578\nQ29yZUFwcGxpY2F0aW9u 85579\nL2JpbmQ= 85580\nIE1jSW50 85581\naXR1bmVz 85582\nWy0t 85583\nIFN1cnByaXNl 85584\nX0lORw== 85585\nIEZhc3Rlcg== 85586\n0J3QsA== 85587\nOkU= 85588\nIGRpbnQ= 85589\nbmdl 85590\nLiInLCciLiQ= 85591\nIGFkamVjdGl2ZQ== 85592\nLmJj 85593\nY29uc3VtZQ== 85594\nQk9S 85595\nKGFuY2hvcg== 85596\nIGVzdGVlbQ== 85597\nIGJyZWFrdXA= 85598\nZGVjYXk= 85599\nICQKCg== 85600\nRWR3YXJk 85601\nQVNJ 85602\nIGF0dGFjaGVz 85603\nX0RJU0s= 85604\nIFdpbG1pbmd0b24= 85605\nIEt1bA== 85606\nIFtbXQ== 85607\nIERlcGFydG1lbnRz 85608\nIHJldHVyblR5cGU= 85609\nIFVOSVRFRA== 85610\nb2JqZWN0aXZl 85611\nIGdpcmxmcmllbmRz 85612\nX0dV 85613\nQHN0b3Jl 85614\nLU91dA== 85615\nLm1vdmVz 85616\nKHN0YXJ0RGF0ZQ== 85617\nCUpCdXR0b24= 85618\nIFBhY2U= 85619\nIEJlYXRz 85620\nIGxpY3o= 85621\nIGV0aGVyZXVt 85622\nIGNoZWVyZWQ= 85623\nIGF1Y3Vu 85624\nUmVnYXJkaW5n 85625\nIG1pZ3JhdGluZw== 85626\nIGZ1dGlsZQ== 85627\nIFRhY29tYQ== 85628\nX0NoYXJhY3Rlcg== 85629\nIHZn 85630\nIENvcGE= 85631\n2Ks= 85632\nIG5hbA== 85633\nIGxhbmRmaWxs 85634\nIHRhbWls 85635\nIHBlcnBldHJhdG9y 85636\nIFBhY2Vycw== 85637\nLmdldE9yZGVy 85638\nfA0K 85639\nR2V0T2JqZWN0 85640\nIGJsYQ== 85641\nIEhhcmFt 85642\ncG9ydGxldA== 85643\nIGxva2Fs 85644\nTWVyY2hhbnQ= 85645\nUGFzc3dvcmRz 85646\nb25lbnQ= 85647\nIGFydGVyaWVz 85648\nIEludGVsbGk= 85649\nXFN5c3RlbQ== 85650\nPWxvY2FsaG9zdA== 85651\nLmF2aQ== 85652\nIFZlbmQ= 85653\nKHRibA== 85654\nQ29ycmVjdGlvbg== 85655\nIHV0ZXJ1cw== 85656\nIHNhbGl2YQ== 85657\nKys7DQoNCg== 85658\nKCcqJyw= 85659\nIHNuYXRjaA== 85660\nIFNUUkVFVA== 85661\nKVs6 85662\n54Sh44GX44E= 85663\nU2VudGVuY2U= 85664\nKCkuJy8= 85665\nOnJlbGF0aXZl 85666\nleOCkw== 85667\nX3VzZXJpZA== 85668\nb2xpbmc= 85669\nIENsYXNo 85670\nCXNldHVw 85671\nKG1p 85672\nIGppdA== 85673\nIFNjYW5kaW5hdmlhbg== 85674\nIFBob25lcw== 85675\nIic7Cg== 85676\nIHR1bXVsdA== 85677\nIEludGw= 85678\nIFNpbm4= 85679\nKG5ld3M= 85680\nIGRicw== 85681\nIFJlbWFya3M= 85682\nS2l0Y2hlbg== 85683\nIGFkbWlyYWJsZQ== 85684\nX2Rhc2g= 85685\nIERPTUFJTg== 85686\nYWRkTGlzdGVuZXI= 85687\nIl0uKA== 85688\nCU1ldGhvZA== 85689\nbWFya3Q= 85690\nLGV4cG9ydHM= 85691\nIG91dG51bWJlcg== 85692\nX0FTQw== 85693\ncHJlbWl1bQ== 85694\nKU5VTEw= 85695\nIEJvd21hbg== 85696\nLnNldE9uSXRlbUNsaWNrTGlzdGVuZXI= 85697\nIFJlZ2V4T3B0aW9ucw== 85698\nS2Vs 85699\nL21hdA== 85700\n44GT44KM 85701\nIHdlYXJlcg== 85702\naW5pcw== 85703\nW2RpbQ== 85704\nIE51dHp1bmc= 85705\naXNidXJ5 85706\n5Yid 85707\nIHJvb3RSZWR1Y2Vy 85708\nZXlK 85709\nSW5jbHVkZWQ= 85710\nLUxlYWd1ZQ== 85711\nYW5heA== 85712\nKGluZmxhdGVy 85713\nIEZpZWxkVHlwZQ== 85714\nIHNob3Zl 85715\nIGZ1bGxmaWxl 85716\nRGF0YU1hbmFnZXI= 85717\nLmdldExlZnQ= 85718\nIEZz 85719\nZHJvcG91dA== 85720\nIOuyiA== 85721\nIG1hbmnDqHJl 85722\nIGZsYW1pbmc= 85723\nIGNvbXBsZXRhbWVudGU= 85724\n4oCw 85725\nfC4= 85726\nRW5lbWllcw== 85727\nb3NjaQ== 85728\nIFNBWQ== 85729\nIG1hcnk= 85730\nKFJ1bnRpbWVPYmplY3Q= 85731\nIH4+ 85732\nIFNpbXBzb25z 85733\nJ10uJA== 85734\nX21lbWJlcnNoaXA= 85735\nKSI6 85736\nIGxheW91dE1hbmFnZXI= 85737\nIFJvY2tlZmVsbGVy 85738\nICd8Jw== 85739\nSVBI 85740\nRE9O 85741\nYWNodGU= 85742\nUGVhY2U= 85743\naHRhcg== 85744\nQCIK 85745\nIHRyZWFkbWlsbA== 85746\nIHNwdXJyZWQ= 85747\nIEtW 85748\nbWlkZA== 85749\nIGZsb3dlZA== 85750\nw6Nlc3Rl 85751\nR2VuZXNpcw== 85752\nPT0+ 85753\nIFZlbnR1cmE= 85754\nX2VsaW0= 85755\nINC40LzRjw== 85756\nIHNvbmd3cml0ZXI= 85757\nY3JlYXRlRm9ybQ== 85758\nSUdITA== 85759\nIG1vbGRlZA== 85760\nIHJldmVyZWQ= 85761\nVW5kZXJUZXN0 85762\naW1ibGVkb24= 85763\nX1Nlc3Npb24= 85764\nIG1hc2NvdA== 85765\nIGFsZg== 85766\n66mU 85767\nPldlbGNvbWU= 85768\nIGtub2Nrcw== 85769\nIEVxdWF0aW9u 85770\nLnRvdWNoZXM= 85771\nX0xhc3Q= 85772\nIHVwYmVhdA== 85773\nYmlnaW50 85774\nIGVudmlz 85775\nL2Jhbm5lcg== 85776\n44GC44KK44GM 85777\nIERvd25z 85778\nX1NG 85779\nIHJ1bkFwcA== 85780\nIHF1ZXN0aQ== 85781\nVHJhZGl0aW9uYWw= 85782\nX3dhaXRpbmc= 85783\ncGlja3Vw 85784\nKCdALw== 85785\nCXNl 85786\nIEtlcm4= 85787\nIERlbGljaW91cw== 85788\nIHNhdHVybg== 85789\nIEpTT05FeGNlcHRpb24= 85790\n44KN 85791\nSlI= 85792\nfSgpKTsK 85793\nIFNvbWFsaQ== 85794\ndWFp 85795\naW1hZ2Vt 85796\nYW5kRmlsdGVyV2hlcmU= 85797\nw6hsZXM= 85798\naW5ib3g= 85799\nIHlhcMSx 85800\nIG1laXN0ZW4= 85801\nYF0o 85802\nU1dH 85803\nLGNsYXNz 85804\n4LWN4LQ= 85805\ndGFpZW50 85806\nIEZyYW7Dp29pcw== 85807\nQXV0aFRva2Vu 85808\nIHB1ZXN0bw== 85809\nIGps 85810\nIGdhdGVk 85811\nIERlYXRocw== 85812\nIFNpZGQ= 85813\nIHByZXZhaWxlZA== 85814\nLcOqdHJl 85815\nKGFsYnVt 85816\nIHFpbnQ= 85817\nbWFyY2E= 85818\nIE5BRlRB 85819\nIHRpZ2h0ZW5lZA== 85820\nX0dBUA== 85821\nRU5TSU9OUw== 85822\nIExpYmVydGFyaWFu 85823\nX3N0eWxlc2hlZXQ= 85824\nLlNldEludA== 85825\nX3B1Ymxpc2hlcg== 85826\ncGFnZU51bWJlcg== 85827\nenNjaGU= 85828\nIFNRTEFsY2hlbXk= 85829\nIGhvb2Y= 85830\nZ2V0VG9rZW4= 85831\nIG5lYmVu 85832\nbHVuZA== 85833\nLm1pdA== 85834\nZXJycw== 85835\nLnNldE1pbmltdW0= 85836\nLXByaWNlZA== 85837\nKHBv 85838\nZW5nYWdl 85839\nX0ZU 85840\nLy8KCgo= 85841\nIHRvbWU= 85842\nICI+PC8= 85843\nVmVjdG9ycw== 85844\nIFRlc3RVdGlscw== 85845\nZmlsdHI= 85846\nVXN1 85847\nIGRpY3Rpb25hcnlXaXRo 85848\nIG9icmFz 85849\nIEJEU00= 85850\nLmdldFRhcmdldA== 85851\nIGFsbG93YWJsZQ== 85852\nIEluc2VydHM= 85853\nCU5vbmU= 85854\nIGxpYmVyYXRlZA== 85855\nS2VudA== 85856\nIFdpc2hsaXN0 85857\nIExhZ2Vy 85858\nIGp1aW4= 85859\nIG51ZXM= 85860\nIG1vbmFzdGVyeQ== 85861\nIG1pY3Jvc2Vjb25kcw== 85862\nIEhhbm5h 85863\n0L7RgdGC0Lg= 85864\nd2VhcG9ucw== 85865\nX3Nwb3Q= 85866\nb2RvbQ== 85867\nLk1vZGVsRm9ybQ== 85868\nIG9yZGVybHk= 85869\nRklOSVRF 85870\nIHJlc2lkZW5jZXM= 85871\nX3RD 85872\nQ0dDb2xvcg== 85873\nIMW+ZQ== 85874\nIHNjcmVlbnBsYXk= 85875\nIHB5bW9uZ28= 85876\nIGTDqXQ= 85877\nIGRlc3Rh 85878\nIE5ldXJvc2NpZW5jZQ== 85879\nbmllc3Q= 85880\nQEdlbmVyYXRlZFZhbHVl 85881\nRUxTRQ== 85882\nPGw= 85883\nIGRpc2pvaW50 85884\nLnB1Ymxpc2hlZA== 85885\nZWxsYW4= 85886\nIFN0cmluZ1dyaXRlcg== 85887\nLkJyb2FkY2FzdA== 85888\nIEZlaW5zdGVpbg== 85889\nYW1waGV0YW1pbmU= 85890\nS2V5U3BlYw== 85891\nIEdyaW1t 85892\nZXR0ZWw= 85893\n4Lic 85894\nT3Q= 85895\naWJyYWx0YXI= 85896\nY2Vi 85897\nIHRpbWluZ3M= 85898\naW5lZQ== 85899\nIEFuZHLDqQ== 85900\nRXNzYXk= 85901\nLmpk 85902\nIEJ1bmRlc2xpZ2E= 85903\nUmV0dXJuZWQ= 85904\nIGFwcGFsbGluZw== 85905\nLkJpZ0ludGVnZXI= 85906\nIFNFTg== 85907\nIEhvbWVtYWRl 85908\nLmNoYXB0ZXI= 85909\nLXZhbGlk 85910\nIEFUVFJJQlVURQ== 85911\ndXN0cmlh 85912\nIGVudMOjbw== 85913\nUmV0dXJuaW5n 85914\ndmVydGlzZXI= 85915\nLlBhY2thZ2VNYW5hZ2Vy 85916\nQ2xhcms= 85917\nIHF1b3Rhcw== 85918\nIHNjYWxlRmFjdG9y 85919\nIGNveg== 85920\nX21pbmk= 85921\nIG11dGF0ZWQ= 85922\nLmFjdGl2YXRpb24= 85923\nKm1hdGg= 85924\nLnZlcnR4 85925\nPGFydGljbGU= 85926\nIGVtYnJvaWRlcnk= 85927\nL2J1c2luZXNz 85928\nY2tldHQ= 85929\nc2NpZW50aWZpYw== 85930\nIEdpbGVz 85931\nIHJhY2Vy 85932\nX3BlcmZvcm1hbmNl 85933\nIGxhbWluYXRl 85934\nIFBISQ== 85935\nUsOp 85936\nIEF0aGU= 85937\nY29sZXM= 85938\nIHNhxJ8= 85939\nIElua1dlbGw= 85940\nCXNpZw== 85941\nIHNwYWNlc2hpcA== 85942\nIGluc29s 85943\nIFVDbGFzcw== 85944\nLmxlYWRpbmdBbmNob3I= 85945\ndG90YWxz 85946\nIHNwcmlua2xl 85947\nIE1vZHVsYXI= 85948\nICdcIg== 85949\nb3Jvbg== 85950\nLlJlYWRBbGxUZXh0 85951\nICAgIAkNCg== 85952\nL2lvbg== 85953\nREVQVEg= 85954\nX21pbmltdW0= 85955\nXENhY2hl 85956\nIGRpdmVyc2lmaWVk 85957\naWduZXQ= 85958\nIGRvam8= 85959\nIFVJQWxlcnRWaWV3 85960\nL3R0eQ== 85961\nIFNhc3M= 85962\nIC9cLig= 85963\nIElNQUdFUw== 85964\nIGRhdGluZ3NpZGVy 85965\nIEV4cGxvcw== 85966\nLmdlbnJl 85967\nXEV2ZW50cw== 85968\nIGVudW1lcmF0ZWQ= 85969\nY3VycmVudFN0YXRl 85970\naXRydXN0 85971\nQ2FsbGFibGVXcmFwcGVy 85972\nRm91bmRlZA== 85973\nIHJveWFsdGllcw== 85974\nKFByb3BlcnRpZXM= 85975\nIFVTUFM= 85976\nLS0tLS0tLS0tLS0NCg== 85977\nLlJlYWRUb0VuZA== 85978\nIGNvc3k= 85979\nIGFwZQ== 85980\nX2RlZmluaXRpb25z 85981\nIHBhZ2VObw== 85982\nIGR6aWVjaQ== 85983\nc3RhbmRlbg== 85984\nIGJlc2Fy 85985\naXRpbg== 85986\nIGNvbnNlcXVhdA== 85987\nIHBydg== 85988\nIHNwbGl0dGVk 85989\nIGVzcG9zYQ== 85990\nPWZpbmRWaWV3QnlJZA== 85991\nV2Fsa2Vy 85992\nIEhlYXJ0aA== 85993\naWJyYXRvcg== 85994\nb3RvbXk= 85995\nYWdnYWJsZQ== 85996\nIOW9kw== 85997\n77yBJyk7Cg== 85998\naW9uYXRl 85999\nL3llYXI= 86000\nIHNldEM= 86001\nIE1lZGlhVGVr 86002\nLWJveQ== 86003\nLnRvb2xTdHJpcE1lbnVJdGVt 86004\nQ29uZmlncw== 86005\nYXR0ZW5kZWQ= 86006\nIGVtb2M= 86007\nIEJhaQ== 86008\nb3BvbGl0YW4= 86009\nIGludHJ1c2l2ZQ== 86010\nIHp1Zw== 86011\nIGZmbXBlZw== 86012\nX2Jvb3N0 86013\nIG1vemlsbGE= 86014\nIHNsaWNpbmc= 86015\nV0c= 86016\ncGFnZXNpemU= 86017\nUHJvcGVydHlEZXNjcmlwdG9y 86018\nIEFsZWphbmRybw== 86019\nVVNFUw== 86020\nSG9zdGluZw== 86021\nIHJpc2tpbmc= 86022\nIEludml0ZQ== 86023\nIEphemVlcmE= 86024\nIHJlZ2FpbmVk 86025\nIEhhZ3Vl 86026\nIGd1ZXJyYQ== 86027\nIGVuY2xvc2luZw== 86028\nJ10iKQo= 86029\nPFRyYW5zZm9ybQ== 86030\nLk5PUlRI 86031\nIGNyaW0= 86032\nSU5V 86033\nIGNsZW4= 86034\nIE1vdGhlcnM= 86035\nIE93bmVyc2hpcA== 86036\nRHJpbms= 86037\nIGJlYmVyYXBh 86038\nLm9uZXJyb3I= 86039\nKSsK 86040\nIHRhYkluZGV4 86041\nIERpbw== 86042\nIEZvcnR5 86043\nKExpbms= 86044\nIHNlZ21lbnRlZA== 86045\nIGphbWVz 86046\nIFRhcmdldHM= 86047\nIFJUUw== 86048\nINC60L3QvtC/ 86049\nIHZhcmlhcw== 86050\nIHTDrXR1bG8= 86051\nIGTDvHI= 86052\nL0dhbWU= 86053\ncmFuc2l0aW9u 86054\nIGRpc3Rpbmd1aXNoaW5n 86055\ndWt0dXI= 86056\nYW5qZQ== 86057\nIE1jQ2FiZQ== 86058\ncGFp 86059\nKHRr 86060\nRGVzdHJ1Y3Rvcg== 86061\nR2FtZU9iamVjdFdpdGhUYWc= 86062\nJGg= 86063\nIGFmcg== 86064\nLnNldEVtYWls 86065\nIHJlcGV0aXRpb25z 86066\nbGFuZGVycw== 86067\nIFNoZWE= 86068\nX2NsYWlt 86069\nIGFjZXNz 86070\nQmVuY2htYXJr 86071\nLkVzdA== 86072\nLlBP 86073\nIE7DpA== 86074\nIGl0Y2hpbmc= 86075\nIGNvbmRvbWluaXVt 86076\nX0ZXRA== 86077\nIHJlYWx0aW1l 86078\nIGNpdmlsaXplZA== 86079\nX3BoeXNpY2Fs 86080\nUmFs 86081\nIHdpbnRlcnM= 86082\nIFlhZA== 86083\nIGZvcmE= 86084\nIGNhbGlicmF0ZWQ= 86085\nUGV0cw== 86086\nIHN0b3JtZWQ= 86087\nIGplbA== 86088\nIFNTUA== 86089\nZGF0YWdyaWQ= 86090\nIExhdQ== 86091\ndW5hcg== 86092\ndWxmaWxsZWQ= 86093\nRVJJTkc= 86094\nIFRyaW8= 86095\n2LHZiA== 86096\nRm9yZWdyb3VuZENvbG9y 86097\nPW91dA== 86098\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K 86099\nIHZpZW50 86100\nIEFETQ== 86101\nX0Nvbm5lY3Rpb24= 86102\nLWNhbmNlbA== 86103\nKCcuJyk7Cg== 86104\nIHNhaWxz 86105\nIGVxdWl2YWxlbnRz 86106\nTmI= 86107\nIGZseWVycw== 86108\nIEdJUg== 86109\na2VsaWc= 86110\nLXdhbGw= 86111\nLlJlcXVpcmVz 86112\nIGNvc2U= 86113\nIEFOQw== 86114\nIGphZGU= 86115\nIEFsZWM= 86116\nIGVuZHJlZ2lvbg== 86117\nIEVYVEk= 86118\nZWRlcmU= 86119\nVGVycmFpbg== 86120\nU3BlY2lmaWNhdGlvbnM= 86121\nIFN3ZWVw 86122\nc2V0SXRlbQ== 86123\nIHNtaXJr 86124\nIHNjcmlwdGVk 86125\nW1N5c3RlbQ== 86126\n56eB 86127\nIHN5bmNlZA== 86128\nIHNxcg== 86129\nZ2V3YXRlcg== 86130\nIGpld2Vscw== 86131\nIGhkYw== 86132\n4KWN4KSw 86133\nz4Y= 86134\nw7xzc2VsZG9yZg== 86135\nbGllbg== 86136\nQm9yZGVycw== 86137\nIEF0b21pY0ludGVnZXI= 86138\nIHBhcmFseXNpcw== 86139\nQ2xhc3NpZmljYXRpb24= 86140\nIGdsaWRl 86141\nIHVtcA== 86142\nIC8+fQ== 86143\nIHZlbmRpbmc= 86144\n4Li04LiZ 86145\nbm90aWY= 86146\nJl8= 86147\nIEVtZXJnaW5n 86148\nYXRpY29u 86149\nIHByb3BhZ2F0ZWQ= 86150\nLW9yZGVycw== 86151\nYWdhcw== 86152\ndXJnZW50 86153\nKFRpbWVTcGFu 86154\nQUxDSEVNWQ== 86155\nL2Jvd2Vy 86156\n7IKw 86157\nLmJvb3N0 86158\nLmRlcGVuZGVuY2llcw== 86159\nLlN3aW5nQ29uc3RhbnRz 86160\ndW50bGV0 86161\nLmNoYXJz 86162\nLWNpZ2FyZXR0ZXM= 86163\nIE1vZHM= 86164\nICAgICAJ 86165\nIGJyYXZlcnk= 86166\nIGNvdW50ZXJlZA== 86167\ncmVsdWRl 86168\nX21vYg== 86169\nQUlORUQ= 86170\nbmdvaW5n 86171\nIHVuZGVyZ3JhZA== 86172\nR2V0TWV0aG9k 86173\nRHVhbA== 86174\nX2pvdXJuYWw= 86175\nLE5v 86176\nIHNpZGVs 86177\nIExhcnNvbg== 86178\nKyIsIis= 86179\nIG5hcnJhdGlvbg== 86180\nIFN1YndheQ== 86181\nIExleGVy 86182\nIE5pbmc= 86183\naW5kaWM= 86184\ndGhhbmU= 86185\nLlNJRw== 86186\nLWVhcnRo 86187\nIGJlcnJ5 86188\nIFRldWNob3M= 86189\nCUVudGl0eQ== 86190\nZXJzcGVjdGl2ZQ== 86191\nTm9z 86192\nIE93bmVk 86193\nQlVS 86194\nIGxpbmVubw== 86195\nIEZpamk= 86196\nR2V0SW50 86197\nU3RyaW5nUmVm 86198\nICcmJw== 86199\ndWFkYQ== 86200\nLmNhcHRpb24= 86201\nYXBwTmFtZQ== 86202\nKG9mZg== 86203\nIHZlcnN0 86204\nIHR5cG8= 86205\n6ZyA6KaB 86206\nYXRlcmFuZ2VwaWNrZXI= 86207\nIHFlbXU= 86208\nIEdFTw== 86209\nX0Ns 86210\nLklU 86211\nIE51bmVz 86212\nW1o= 86213\nIENvbXBsZXRlbHk= 86214\nLkxpdmU= 86215\nIEphcw== 86216\nIHdlaXQ= 86217\nY29zaXR5 86218\nIHBvbGljZW1lbg== 86219\nKHRhcmdldHM= 86220\naXRsZWRCb3JkZXI= 86221\nIOinow== 86222\nLkdsaWRl 86223\nIGRlbW9uaWM= 86224\nSW50ZXJpb3I= 86225\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 86226\nIERvdGE= 86227\nIG9yYml0cw== 86228\nQU1Z 86229\nIFRyaW5pZGFk 86230\naWN1bQ== 86231\nLnph 86232\nIGdldEludA== 86233\nQXRsYW50YQ== 86234\nIGFtbmVzdHk= 86235\nIFJhaHVs 86236\nIF98 86237\naGlybw== 86238\nIFRBS0U= 86239\nIGp1bWxhaA== 86240\nIEF1dG9tb2JpbGU= 86241\n4buP 86242\nd2hvc2U= 86243\nX1NBTVBM 86244\nUGF0aWVudHM= 86245\nINGC0LXQutGD0Yk= 86246\nLnN1YnNjcmlwdGlvbnM= 86247\nIE1lbnRpb24= 86248\nVG9Xb3JsZA== 86249\naXBh 86250\nCU1lc3NhZ2VCb3g= 86251\nPEFwcGxpY2F0aW9uVXNlcg== 86252\nINil 86253\nZmFicmlj 86254\na2VsZXRhbA== 86255\nQmFyQnV0dG9u 86256\nIGFyY2hldHlwZQ== 86257\naW5zdGFudA== 86258\nIGludGVybmFjaW9uYWw= 86259\nIFZveWFnZXI= 86260\nKHRvdWNo 86261\nIFZhbGs= 86262\nL01JVA== 86263\nIGNhdWw= 86264\nJ0Nvbm5vcg== 86265\nKCIh 86266\nKE9Q 86267\nZmFjdWx0eQ== 86268\nIEJhdG9u 86269\nIFZvbHVudGVlcnM= 86270\ndGFuaw== 86271\nX0JJTkRJTkc= 86272\nO2xpbmU= 86273\nIFZlcnNpb25z 86274\nWUxFUw== 86275\nIGplZXA= 86276\nKEVuY29kaW5n 86277\nIGdlb2xvZ2ljYWw= 86278\nTmljaA== 86279\nKHBkZg== 86280\nIGFuYWx5emVz 86281\nIGNhcHRpdmF0aW5n 86282\nIGhpem8= 86283\nLm1kbA== 86284\nIGphcA== 86285\nIGZsaXBz 86286\nCWRm 86287\nIFBpZXQ= 86288\nIG5yb3dz 86289\nIGthbXU= 86290\nINCy0L7Qtw== 86291\nIHBydW5pbmc= 86292\nYWN1bGE= 86293\nIHRyYXZlbGxlcg== 86294\nU2hvb3Q= 86295\nLmVwc2lsb24= 86296\nIEZsZW1pbmc= 86297\naWJ1cg== 86298\nb3BlcmF0ZQ== 86299\naWdodGVy 86300\nIGJlZ3M= 86301\nIFdhbG51dA== 86302\nKFBhcnNlcg== 86303\nIHdpdGhkcmF3YWxz 86304\naXNjb3BhbA== 86305\nIGJpbGxib2FyZA== 86306\na2Vr 86307\nLW9wZW5pbmc= 86308\nIER1ZGU= 86309\nY29uaQ== 86310\neEVC 86311\nIGNhbG9y 86312\nYW1haGE= 86313\nLlRYVA== 86314\nRHJ5 86315\nIG1pc3Npb25hcmllcw== 86316\nX1ZlcnNpb24= 86317\nIG11bHRpbGluZQ== 86318\n4oCUd2U= 86319\nIGNvbXBvbmVudERpZFVwZGF0ZQ== 86320\nRmF2b3JpdGVz 86321\naWdoYW0= 86322\nIGpvdXJuw6ll 86323\nIGFtdXNlZA== 86324\nIE9tbmk= 86325\ndGd0 86326\nIHdhaA== 86327\nZXRpbmU= 86328\nIHBoYXNlZA== 86329\nIG9uU3RvcA== 86330\nY3JlYXRpdmVjb21tb25z 86331\nU29waA== 86332\nIHVuYm9ybg== 86333\nPUU= 86334\nIEZlZEV4 86335\nbm9ybWFsbHk= 86336\nIGx5cg== 86337\nTWF0cml4TW9kZQ== 86338\nIHplaWdlbg== 86339\nQXRo 86340\nIEt1bQ== 86341\nw6RobGVu 86342\nLyI7Cgo= 86343\nIGRhbGxl 86344\nIGxhbmNl 86345\nIFN1aXRhYmxl 86346\nIGNvdW5zZWxvcnM= 86347\n5YWo6YOo 86348\nIGZhc3Rh 86349\nIGJsYXppbmc= 86350\n7KeE 86351\nL3R1dG9yaWFs 86352\nLnRjcA== 86353\n5pmv 86354\nTWFuYWdlckludGVyZmFjZQ== 86355\nIFNhbWFy 86356\nCWdsVW5pZm9ybQ== 86357\nIHByZXJlcXVpc2l0ZXM= 86358\nIGFudGljaXBhdGluZw== 86359\ncmFxdW8= 86360\na3Nlbg== 86361\nTWFnbml0dWRl 86362\ndXRvbWF0aW9u 86363\nSGllcmFyY2h5 86364\nIGRldmlhdGlvbnM= 86365\naW1ldA== 86366\nQ0NJ 86367\nPSgK 86368\nIGFudGxy 86369\nCWluaXRpYWw= 86370\nIFJlc29ydHM= 86371\naG9tZXM= 86372\nCXBvb2w= 86373\nIG1hdMOp 86374\nP29wdGlvbg== 86375\nOm15c3Fs 86376\nKHV0Zg== 86377\nLlRhYkNvbnRyb2w= 86378\nPlRpdGxl 86379\nIEFkb3B0 86380\nLklzTWF0Y2g= 86381\nIGVudHJ1c3RlZA== 86382\nU3VzYW4= 86383\nc3dpbmc= 86384\naW1hZ2VuZXM= 86385\nIHNlbGVjaW9u 86386\nIGFpZGluZw== 86387\nKFtdKg== 86388\nIHNldEZyYW1l 86389\nc3Bpcml0 86390\nL3Jzcw== 86391\nSXRhbGlj 86392\nIFByb3BlbEV4Y2VwdGlvbg== 86393\nIFRvbGw= 86394\nLkZpbmRHYW1lT2JqZWN0V2l0aFRhZw== 86395\naW5hbnQ= 86396\nIHNlbGZpZXM= 86397\nXXxb 86398\nIGFwcGxpY2F0aW9uQ29udGV4dA== 86399\naXhl 86400\nY2Ri 86401\nZWJi 86402\nIE92ZXJzZQ== 86403\nIHNxbENvbW1hbmQ= 86404\nSG9zdE5hbWU= 86405\nLWxhdW5jaA== 86406\nUmlzaw== 86407\nO3I= 86408\nLlNwYW4= 86409\nX0NJVFk= 86410\nX01B 86411\nLyIKCg== 86412\nUGF3bg== 86413\nIFllbHA= 86414\nQnVuZGxlT3JOaWw= 86415\nIG1heW9yw61h 86416\nU3RhY2tOYXZpZ2F0b3I= 86417\nITsK 86418\nIHRodWdz 86419\nIEJhcm5ldHQ= 86420\n44O744O744O7Cgo= 86421\nIOqygA== 86422\nX0NPTlY= 86423\nIGJ1enppbmc= 86424\na2V0ZXJhbmdhbg== 86425\nTWlsaXRhcnk= 86426\nd2VlZA== 86427\nIGRlbGltaXRlZA== 86428\n6LWE5rqQ 86429\nINCw0Lo= 86430\nX0hFTFBFUg== 86431\nIFJFQURZ 86432\nTG9vcGVy 86433\nKioqKi8K 86434\nIFRydWNrcw== 86435\n5Y67 86436\nX3BvZA== 86437\nT01BVElD 86438\nLWphdmE= 86439\nIHVuaWZ5 86440\nL0FyZWE= 86441\nICcvJyk7Cg== 86442\nIEdhbWJsaW5n 86443\nLkhpdA== 86444\nIEZhcnJlbGw= 86445\nX2ZpdG5lc3M= 86446\ncmVjb21tZW5kZWQ= 86447\nemVuZA== 86448\nb2RpZQ== 86449\nX2JlYW0= 86450\nIHBsYWdl 86451\nbmRvbg== 86452\nLmFzc2VydGo= 86453\nIGdyYXRl 86454\nTWVhc3VyZWQ= 86455\nLmNlbnRyYWw= 86456\nZ2VzdHVyZQ== 86457\nIEdsb2JhbEtleQ== 86458\ncHl4 86459\nIE5lY2tsYWNl 86460\n5Y2O 86461\nLkFkZENvbHVtbg== 86462\nIFJ1ZGQ= 86463\nIFByZXNieXRlcmlhbg== 86464\ndW5kbGVy 86465\nIyFb 86466\nX2xhaGly 86467\nKCk9PSI= 86468\nQWNjZXNzaWJpbGl0eQ== 86469\nLXRyYWluaW5n 86470\nIFRob3U= 86471\nX1BJWA== 86472\nX1RSWQ== 86473\nPEo= 86474\nxrDGoW5n 86475\nbHVjaw== 86476\nX01BWElNVU0= 86477\nIHRoYXc= 86478\nVW5pZmllZA== 86479\nPkNvbnRhY3Q= 86480\nLVByZXNpZGVudA== 86481\nLXBhcnNl 86482\nIFBpY2tlcg== 86483\nTWFyY28= 86484\ndHJz 86485\nzrQ= 86486\nLiQu 86487\nX01FU0g= 86488\nIHNhZ3Rl 86489\nKz0n 86490\n0K8= 86491\nKHBhcmNlbA== 86492\naXZvcnM= 86493\nIGRpdmVydGVk 86494\nQUdBSU4= 86495\nIG5lc3M= 86496\nIHZhbGxleXM= 86497\nIC4uLig= 86498\nIEVRVUk= 86499\nIE91dHM= 86500\nIERlbW9uc3Ry 86501\nRGV0YWxsZQ== 86502\nIOu2gA== 86503\nUG9pbnRYWVo= 86504\nLmVwcw== 86505\nIHN5bm9ueW1z 86506\nID09KA== 86507\n4oCcWWVz 86508\nJ3V0aWxpc2F0ZXVy 86509\nTmFtaW5n 86510\nTEVW 86511\ncHJvdG9jb2xz 86512\nIOyb 86513\nIGdldFVzZXJuYW1l 86514\nLXZhcg== 86515\nX210eA== 86516\nIHNwZWN1bGFy 86517\nIG5vdGFz 86518\nSG9yaXpvbnRhbEFsaWdubWVudA== 86519\nIEJheWVy 86520\nc3Vz 86521\nICAgIAkJCg== 86522\nIFNoYWNr 86523\ncmVzaGVy 86524\nIGltbWF0dXJl 86525\nYnJhY2h0 86526\nSVNDTw== 86527\nLmNyZWRpdA== 86528\nIHZpbmVz 86529\nX0xQ 86530\nRUVERUQ= 86531\nIFNjYXJib3JvdWdo 86532\nw6FudA== 86533\nKT09Jw== 86534\nCWRlbHRh 86535\nX0NPTE9SUw== 86536\nLkN1c3RvbUJ1dHRvbg== 86537\nIGFmaXJt 86538\nIEppbmc= 86539\nUGFybXM= 86540\nY2VudGVycw== 86541\nLT5fX18= 86542\nIExETA== 86543\nLWNvbnRyaWI= 86544\nIERyZXNkZW4= 86545\nIFBpeGVscw== 86546\nICIiIiIsCg== 86547\nTEVUVEU= 86548\neEJF 86549\nIEh1c3Q= 86550\nIEV4ZWN1dGlvbkNvbnRleHQ= 86551\nIEJ1ZmZldHQ= 86552\nY2xhbXA= 86553\nLkFydGljbGU= 86554\nIFJhdGg= 86555\nIFBleXRvbg== 86556\nIExPV0VS 86557\nb29rZQ== 86558\nIHRpZGFs 86559\nIHVuaGVhcmQ= 86560\nIFNoYWxs 86561\nIGJvbWJhcmQ= 86562\nYW5vdmE= 86563\nW21hc2s= 86564\nKGNyZWRlbnRpYWxz 86565\nIEV1cm9z 86566\nIGJyYW5jaGluZw== 86567\nIHN0cm9uZ2hvbGQ= 86568\nIGNpdmlsaXphdGlvbnM= 86569\nLWNvbm5lY3Q= 86570\nIExTVE0= 86571\nLW1vdmluZw== 86572\nIHV0ZW4= 86573\nY3Jhc3Q= 86574\nX0RJU1A= 86575\nIENvbnRyb2xsZXJz 86576\ndXBl 86577\nLnBlbg== 86578\nIGRlc3Nh 86579\nIGRpZsOtY2ls 86580\ndWl0YWJsZQ== 86581\nb2ZpcmU= 86582\nW2NoaWxk 86583\nUkVGRVJFTkNFUw== 86584\nIGRlY2VpdA== 86585\nIFVyZw== 86586\nPEVkZ2U= 86587\nIGRlc2k= 86588\nIEJPVEg= 86589\nICcpJzsK 86590\ndHlwZU5hbWU= 86591\nQ29tbWFuZEV2ZW50 86592\nd2hlcmVJbg== 86593\nKG9wdGltaXplcg== 86594\nIHLDqWFsaXM= 86595\nIG9taW5vdXM= 86596\nIEJyYWNrZXQ= 86597\nIGRhdGVTdHJpbmc= 86598\nIHNpbmdseQ== 86599\nKEpGcmFtZQ== 86600\n4oCZVA== 86601\nZXNsaW50 86602\nKGhlcm8= 86603\nIE1hcmE= 86604\nIGNhdGNoeQ== 86605\nLGNhbGxiYWNr 86606\nIGN0eXBl 86607\ncHJlc2V0 86608\nCWdsZnc= 86609\n0LXRiQ== 86610\naGs= 86611\nIHRpdGFu 86612\nQWNlcHRhcg== 86613\n44Gh44Gv 86614\nX2Fzc2lnbmVk 86615\nX2VyYXNl 86616\nIGluZmFuY3k= 86617\nUmV2aWV3ZXI= 86618\nIFJlY29yZGVy 86619\nIHNjbQ== 86620\nIEJpZ2dlc3Q= 86621\nIEdvYQ== 86622\nCVND 86623\nX0xvY2F0aW9u 86624\nX29yaQ== 86625\na2ls 86626\ncmVuZGU= 86627\nIG1hcnpv 86628\nU3RyaW5nVXRpbA== 86629\n0YPRidC10YHRgtCy 86630\nIEhvd2U= 86631\nxrDhu51p 86632\nZm9pcw== 86633\nWE1MRWxlbWVudA== 86634\nIGRlcmVjaG9z 86635\nIGR1bmc= 86636\nIFdhaw== 86637\nIEdhdw== 86638\nfVxc 86639\nISIpOw== 86640\nIEpvaGFubmVzYnVyZw== 86641\nIHN1Ym1hcmluZXM= 86642\nIGFjY29s 86643\nIGZvc3RlcmluZw== 86644\nLgoKCgoKCgoKCgoKCg== 86645\nLk9wZXJhdG9y 86646\nIG51b3Zh 86647\nIHRyYWplY3Rvcmllcw== 86648\nLnNjaGVkdWxlcnM= 86649\nIEZvbGxvd2Vycw== 86650\nIEFuZGVyc2Vu 86651\nIFBlZ2d5 86652\nLmZyZQ== 86653\nxLFjxLE= 86654\nIGt2cA== 86655\nY29i 86656\nLWxlbg== 86657\nIG1haWxz 86658\nIGFjY3I= 86659\nIEpBVkE= 86660\nIGFkbWluaXN0ZXJpbmc= 86661\nRGVmYXVsdENlbGxTdHlsZQ== 86662\nIGNsaWNrYWJsZQ== 86663\nIEphY2tldHM= 86664\nO2Rpc3BsYXk= 86665\nIGJyZWFkY3J1bWJz 86666\nY2hhbA== 86667\nOic7Cg== 86668\nIEhvdmVy 86669\ndWNjaGluaQ== 86670\nIHRlYw== 86671\nIHN0b3B3YXRjaA== 86672\nX1JlbGVhc2U= 86673\nTWF5b3I= 86674\n4Z62 86675\nIFlhbmtlZQ== 86676\nY2huZXI= 86677\nQXJ0aWZhY3Q= 86678\nLmJhbm5lcg== 86679\nIGtm 86680\nX3N0dWR5 86681\nZm92 86682\nIE1lZXRpbmdz 86683\nw7Zt 86684\nIGluanVyaW5n 86685\nL2RvY3VtZW50YXRpb24= 86686\nQkNN 86687\nc3R5bA== 86688\nCXJi 86689\nIG9yaWdpbmFscw== 86690\nIGZsZXJl 86691\nIFRlcnJhcmlh 86692\ndG9rZW5pemVy 86693\nLWxpdGVy 86694\nJyk7Ig== 86695\nIHBldGl0cw== 86696\nIEJidw== 86697\nIFRoaWVm 86698\nVUlMVElO 86699\nUk9VVA== 86700\nIHNudWc= 86701\nPj4p 86702\nLW5pbmU= 86703\nIH1dOwoK 86704\nIEJlbGxldg== 86705\nIGVsw6k= 86706\nIHl5bg== 86707\neW5hbW8= 86708\nZ2xlcw== 86709\nIHNwZWQ= 86710\nLkJVVFRPTg== 86711\nIGRpc3BlcnNpb24= 86712\nb3VibGVz 86713\nIG5vdmVsbGVy 86714\nIl0uIg== 86715\nIHByaWVzdGhvb2Q= 86716\nICIiKQoK 86717\nCWd1aQ== 86718\nLWluYw== 86719\nWG1sTm9kZQ== 86720\nIHN0dWRz 86721\nLklzQWN0aXZl 86722\nIHRyw6Q= 86723\nIG9yZGFpbmVk 86724\nIEJ5dGVBcnJheUlucHV0U3RyZWFt 86725\nIHJlcXVlc3RCb2R5 86726\nIFJUUA== 86727\nUkVTVUxUUw== 86728\nKGNvbGw= 86729\nIHJlbG9hZGluZw== 86730\nLk5hdmlnYXRvcg== 86731\nX2NvdW50ZXJz 86732\nIGJ1ZGRpbmc= 86733\nIGxpY2Vuc2Vl 86734\nb2xvZ2k= 86735\nIHPhuqNu 86736\nIEtpcw== 86737\nIEZsYXR0ZW4= 86738\nX3ByaQ== 86739\nIGFwcHJvcHJpYXRpb24= 86740\n6K+E6K66 86741\nX1JTUA== 86742\nY29tYmF0 86743\nX1BH 86744\nIGhpc3RvZ3JhbXM= 86745\nZHE= 86746\nRW50ZXJwcmlzZQ== 86747\nIE5PQUE= 86748\nIFNwZWVkd2F5 86749\nIGJhZ2k= 86750\nIEJld2VydA== 86751\nRmxvYXRpbmc= 86752\nIEtpbWJlcmx5 86753\nUHJvc2Vj 86754\nSmltbXk= 86755\nIEVsaWFz 86756\nIGFyYml0cmFyaWx5 86757\nIOS9v+eUqA== 86758\nIENvdW50cw== 86759\ndXN0ZQ== 86760\nRmlyc3RDaGlsZA== 86761\nIENsZWFucw== 86762\nLnB1cmNoYXNl 86763\nIGludGVycG9sYXRlZA== 86764\nIGJ1aWxkdXA= 86765\nX1NURU5DSUw= 86766\nRWd5cHQ= 86767\nIGF1cmU= 86768\nLnRydXRo 86769\nZmVvZg== 86770\nIEdpbQ== 86771\nb2NhY2hl 86772\nIFV0dGFy 86773\nX0NPTVBMRVRFRA== 86774\nU2Vlbg== 86775\nIE5hcG9saQ== 86776\nKGRt 86777\nIGdyaXR0eQ== 86778\nLmVudGVycHJpc2U= 86779\nY29uZXhhbw== 86780\nIGdhdGhlcnM= 86781\nIHNldFNlYXJjaA== 86782\nIENsaWZmb3Jk 86783\nIFNuYXBl 86784\nIFNhbHZhdGlvbg== 86785\nTG9naW5Gb3Jt 86786\nQ3JpdGljYWxTZWN0aW9u 86787\nLnVzZXJkZXRhaWxz 86788\nIHJlcGFpbnQ= 86789\n44GC44KK44GM44Go44GG 86790\nSHVudGVy 86791\nWmVu 86792\nVGlueQ== 86793\nbWxhbmQ= 86794\nZXJ0aWw= 86795\nCWJ1ZmY= 86796\nX09mZnNldA== 86797\nIHNtZWxsZWQ= 86798\nUml2ZXI= 86799\nLXRvcGlj 86800\nIGFjb21w 86801\nIFJvdXRlU2VydmljZVByb3ZpZGVy 86802\nIDwr 86803\nb21icw== 86804\nIENvb3BlcmF0aXZl 86805\nIHNldWxl 86806\nIGFpbWU= 86807\nc2hvdWxkUmVjZWl2ZQ== 86808\nSG9uZw== 86809\nIG9hc2lz 86810\nIEdlbWluaQ== 86811\ncmFwaWQ= 86812\nRHVw 86813\nKFF0R3Vp 86814\nb2RvbnQ= 86815\nLWdudQ== 86816\nIFNlbGVuaXVt 86817\nJyk/Pjwv 86818\nIE5vcGU= 86819\nR3JlYXRlclRoYW4= 86820\nLk9ic2VydmVy 86821\nIEFwcHJvcHJp 86822\nIExvbmVseQ== 86823\nIGhhaXJjdXQ= 86824\nIGFsbGVyZGluZ3M= 86825\nw7NwZXo= 86826\nesWR 86827\nIHNsdW1w 86828\nIEdpbnM= 86829\nIGdpb3JuaQ== 86830\nIHBhcGVyYmFjaw== 86831\nLkZpbGVSZWFkZXI= 86832\nZGFm 86833\nY3JlZHM= 86834\ndHlwaW5ncw== 86835\nZGVoeWRl 86836\nY29pbA== 86837\nU291dGhlcm4= 86838\nIG1vdXNlQ2xpY2tlZA== 86839\nemVpY2huZXQ= 86840\ndXNlclJlcG9zaXRvcnk= 86841\nRGVzdHJveWVk 86842\naW50ZXJuZXQ= 86843\nIEVpZA== 86844\nIGxpbmtlcg== 86845\n4oCZQg== 86846\nIHNsYXVnaHRlcmVk 86847\nIFBlcnI= 86848\nCVJ1bnRpbWVPYmplY3Q= 86849\nc2FpZGE= 86850\nIHBhZ2VDb3VudA== 86851\nIFJhbmRvbHBo 86852\nIEpOSUVudg== 86853\nX3N1cGVydXNlcg== 86854\nLWRpcmVjdGVk 86855\nIElEYg== 86856\nIEJlcm5hcmRpbm8= 86857\nIE5pbnRo 86858\nIEFsZ29yaXRobXM= 86859\nYmRi 86860\nQHRlc3RhYmxl 86861\nLmFybQ== 86862\nYmVsbGlvbg== 86863\nKHNpZA== 86864\nIGJyaWVmZWQ= 86865\n4pWX 86866\n6YWN572u 86867\nIFVtYQ== 86868\nIEluZGljZXM= 86869\nIEJ1Y2NhbmU= 86870\nIGF5YW50 86871\nRnJlZWRvbQ== 86872\nIFl1cmk= 86873\nZXRzaw== 86874\nX1Bo 86875\nIGl0YWxpYQ== 86876\nY2xvc2luZw== 86877\nIHdyaXN0cw== 86878\nICp9 86879\nc2VjdXRpdmU= 86880\nRW52aWFy 86881\ncmFpdGg= 86882\nIEhhd3Ro 86883\n15M= 86884\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo= 86885\ncGFnZVRpdGxl 86886\nIGRoY3A= 86887\nIOyLpO2WiQ== 86888\nd2lzaGxpc3Q= 86889\nIGJsYW1lcw== 86890\nIHNpZGw= 86891\ndWRkZWQ= 86892\nIGNvbnRyb3ZlcnNpZXM= 86893\n6I8= 86894\nKHVzZXJEYXRh 86895\nIGxpbnNwYWNl 86896\nIERpZmZlcmVuY2Vz 86897\nX2RlcG9zaXQ= 86898\nREVUQUlM 86899\nLmRlY2s= 86900\nIGNvbnRpbnV1bQ== 86901\nIHNhY3JhbQ== 86902\nb21pdGU= 86903\nIG5mbA== 86904\nQ3Vt 86905\nIHNvZg== 86906\nIGV2aWxz 86907\nIGVudGlkYWQ= 86908\nCXNvY2s= 86909\nIExlbW1h 86910\nLlNoaXA= 86911\nIHppZw== 86912\nVGVsZWZvbmU= 86913\nSURFUw== 86914\nIE51bWVyb3Vz 86915\nLm1ldHJpYw== 86916\naW5zbg== 86917\nIGNvcHlyaWdodHM= 86918\nIGNvbXBsaWNhdGlvbg== 86919\nIFVSTFNlc3Npb24= 86920\nIGRpcHBpbmc= 86921\nIGNx 86922\nIEJ1c3R5 86923\ncmVsYXRpb25zaGlwcw== 86924\nIENvcnZldHRl 86925\nU3VtbW9u 86926\nZXZlbnROYW1l 86927\nSXNzdWVz 86928\nIGlycmVzaXN0aWJsZQ== 86929\nIGdyaXM= 86930\nQ0FTQ0FERQ== 86931\nIHBhdXNlcw== 86932\nIGxlZGdl 86933\nX0dQ 86934\nLkltcA== 86935\nIG9yZGVyYnk= 86936\nIE9yZ2FuaXplcg== 86937\nIEdyZWVud2ljaA== 86938\nT2Fr 86939\nLW1lbWJlcnM= 86940\nIFdlYkdM 86941\nIGdhbW0= 86942\nbW9kdWxlSWQ= 86943\nIGZ1bGxQYXRo 86944\nbG9nZW4= 86945\nKGV2ZW50TmFtZQ== 86946\nKCIuIik7Cg== 86947\nIGtyaXN0 86948\nIGNsaWZmcw== 86949\nIFBlcmNlcHRpb24= 86950\nRVRJTkc= 86951\nIGzhuqFp 86952\nIGludGVydg== 86953\nIG9wcG9ydHVu 86954\nIEp1ZGdlcw== 86955\nIENvbWJpbmF0aW9u 86956\nY29udGludWVk 86957\nY29ubw== 86958\nLmRyYXdSZWN0 86959\nLkNvbXBvc2U= 86960\nIHNpZ3VpZW50ZXM= 86961\nIER1ZmZ5 86962\nKGVuY29kaW5n 86963\nIFZ1bGthbg== 86964\nIEdlcnI= 86965\nIHBhcmZhaXQ= 86966\nKHl5 86967\nX1RIQU4= 86968\nIGdldFNlcnZpY2U= 86969\nX09SRA== 86970\nLGVw 86971\nZ3JhcGhpYw== 86972\nIFF1ZXJpZXM= 86973\nIHBhcnRpY3VsYXJz 86974\nIEhhdmFuYQ== 86975\nPW8= 86976\nZmFucw== 86977\nIHVuaWxhdGVyYWw= 86978\nIFJGSUQ= 86979\nQ29tcGF0aWJpbGl0eQ== 86980\nc3RyYW5k 86981\nIHdha3R1 86982\nIHF1YWxpZGFkZQ== 86983\nUHJvcGVydHlQYXJhbXM= 86984\ncmV0ZW4= 86985\nKGhvc3RuYW1l 86986\nX0NBUg== 86987\nIHdpZGVuZWQ= 86988\nIFhwZXJpYQ== 86989\ncG9sbG8= 86990\nQWJvcnQ= 86991\nISEpCg== 86992\nIFdhZw== 86993\nLS0r 86994\nINGC0YA= 86995\nIFJlY3Vyc2l2ZQ== 86996\nIGFubmU= 86997\nIEdhbWVwbGF5 86998\nPENsaWVudA== 86999\nLlVzYWdl 87000\nIElTU1VF 87001\nIGpkYmM= 87002\naXNvcnk= 87003\nX21hY3Jvcw== 87004\ncGlja2xl 87005\nLmdhbWVzZXJ2ZXI= 87006\nIHR2Yg== 87007\n0YLRiw== 87008\nLk9QRU4= 87009\nIHByZWRldGVybWluZWQ= 87010\nIHNpcmU= 87011\nCQkJDQoJCQkNCg== 87012\naXNjcmltaW5hdGlvbg== 87013\nIHJlcGVhbGVk 87014\nIGNvbmplY3Q= 87015\nIFByZWNvbmRpdGlvbnM= 87016\nIHRpbHRlZA== 87017\nIGlub2M= 87018\nIGV1cm9wZWFu 87019\nYWJk 87020\nX0RFTEVURUQ= 87021\nIC0s 87022\n4oCTYW5k 87023\nQEZYTUw= 87024\nICldCg== 87025\nUklORw== 87026\nIGFsaXF1YQ== 87027\nIGdydWVzb21l 87028\nIEluY2hlcw== 87029\nUGxheWVk 87030\nKGNvbmZpcm0= 87031\nIE5WSUM= 87032\nX1RvdGFs 87033\naXNhcw== 87034\nIE9uaW9u 87035\nIHNlY29uZG8= 87036\nIEdldFVzZXI= 87037\nXFVybA== 87038\nX2Fic3RyYWN0 87039\nIGRldmV6 87040\nIGN1cGJvYXJk 87041\ndGV4dHM= 87042\nIElzbGVz 87043\nX01BVEg= 87044\nU2tpcHBpbmc= 87045\nX2Nvc3Rz 87046\nPW91dHB1dA== 87047\naWJpbGk= 87048\nIGtudWxs 87049\nX2NvZWZmcw== 87050\nX2F0dGVtcHQ= 87051\nCVJ1bg== 87052\nZ2VuZGVu 87053\ncnVwdGVk 87054\nIHNvYXJlZA== 87055\nX2hz 87056\nIGFkb3B0cw== 87057\nX01PRElGSUVE 87058\nXEZhY3Rvcmllcw== 87059\nIFN3ZWF0 87060\nIGRva3VtZW50 87061\nIFRlbGVzY29wZQ== 87062\nIEZpeGVz 87063\nb3JxdWU= 87064\nLkNoYXJ0aW5n 87065\nX0RBQw== 87066\nIHNlY3JldGlvbg== 87067\nIHJoZXRvcmljYWw= 87068\nUGVyZmls 87069\nIG3DtmNodGVu 87070\nLCcs 87071\nIHZpZXdQYWdlcg== 87072\nQlVZ 87073\nIG9uRm9jdXM= 87074\nb3NhbHM= 87075\nIGJpc2N1aXRz 87076\nIHZib3g= 87077\nIGZvcmNlZnVsbHk= 87078\nTmludGVuZG8= 87079\nIHbDoWw= 87080\nIGNsYW5z 87081\nZnJvZw== 87082\nIGJvcmRlclRvcA== 87083\nQnJpZWY= 87084\nLkJvcmRlckZhY3Rvcnk= 87085\nLXNlcnZpbmc= 87086\nIHF1b3RhdGlvbnM= 87087\nIEdhcm5lcg== 87088\nIEFsbGV5 87089\nIj8+Cg== 87090\nKHNjYW5uZXI= 87091\nIGVudGFpbA== 87092\nIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== 87093\nKGA8 87094\nLmRlc2NyaXBjaW9u 87095\nX0J5 87096\nIOyalA== 87097\nIHBha2lzdGFu 87098\nZWxobw== 87099\nRW5naW5lZXJpbmc= 87100\nIGJvb24= 87101\nIExvb3Nl 87102\naWVyZ2U= 87103\nU2VuYXRl 87104\nIExZ 87105\ncmVzcG9uc2VPYmplY3Q= 87106\naW9yZQ== 87107\nw6FnZW5lcw== 87108\nIOS4jQ== 87109\nIGFkZEFjdGlvbg== 87110\nIE1BQ0hJTkU= 87111\nYW5na2Fu 87112\nX21p 87113\nX0FSUg== 87114\nTGl0ZXI= 87115\nT0xG 87116\nIHN1cHBlcg== 87117\nIHBhdGhNYXRjaA== 87118\nIE9ycg== 87119\nw61k 87120\nKGZpbHRlcmVk 87121\nIGF1dGhUb2tlbg== 87122\nIOKEnQ== 87123\nLTwv 87124\nKHRlbnNvcg== 87125\nIHJldm9sdmluZw== 87126\nIGluaWNpYXI= 87127\nIFNjaHdhcno= 87128\nZGVmZ3JvdXA= 87129\nY29sdW1uTmFtZQ== 87130\nX3RyYWplY3Rvcnk= 87131\n4LmE4Lih 87132\nZWdhc3Vz 87133\nIOydtOumhA== 87134\nIGVhdGVy 87135\nIHVuZGVyZXN0aW1hdGVk 87136\nIGJ0Yw== 87137\nIOyEoO2DnQ== 87138\nZW5hZGU= 87139\nIFNFWFA= 87140\nZW1vdXRo 87141\nT01FVFJZ 87142\nZW50ZXJlZA== 87143\nLnBob25lTnVtYmVy 87144\nIFZvYw== 87145\nIGV4Y2Vzc2l2ZWx5 87146\nIENBVEVHT1JZ 87147\nX1VQREFURUQ= 87148\nIG1vbmFyY2h5 87149\nYXJjaHM= 87150\nIGNhdmVhdA== 87151\nd2lucw== 87152\nIHBsYXlib29r 87153\nc2hhZGU= 87154\nIHNldFVzZXJuYW1l 87155\nIGFjY3VzZXM= 87156\nIG1vxbxsaQ== 87157\nIGxvcnNxdWU= 87158\nIGFqdWQ= 87159\naGVhcg== 87160\nIHBzeWNvcGc= 87161\nKEVD 87162\nIG1lbGFuY2g= 87163\ndGhyb2F0 87164\nbmlo 87165\nV09PRA== 87166\nIHZvbHRz 87167\nX05FRUQ= 87168\nX3doaWxl 87169\nIFJpZGVycw== 87170\n16I= 87171\nIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4= 87172\nTmV0TWVzc2FnZQ== 87173\nTW9kaWZpY2Fy 87174\nLnNlc3M= 87175\nKCIiKSw= 87176\n6Kmx 87177\nIHByYWlzZXM= 87178\nIGxjbQ== 87179\nIG1ha2VzaGlmdA== 87180\nIE5PVEhJTkc= 87181\nIEFydGlmYWN0 87182\nd2lq 87183\ndHlwaWNhbGx5 87184\nKCde 87185\nPGs= 87186\nxJlraQ== 87187\nINC+0YLQv9GA0LDQsg== 87188\nIOE= 87189\nIGRlZlN0eWxlQXR0cg== 87190\naW5jZXJlbHk= 87191\nw6lzdA== 87192\nSW5UaGU= 87193\nc3RpbWU= 87194\nIGZyYWdtZW50ZWQ= 87195\nIGZyeWluZw== 87196\nZ3JpbQ== 87197\nZmllbGRuYW1l 87198\nIGNyb3NzaW5ncw== 87199\nIGFtbw== 87200\nX09wdGlvbnM= 87201\nIGhhaXJlZA== 87202\nL3dhaXQ= 87203\nIHBhcmNobWVudA== 87204\nIGNyZWF0ZUVsZW1lbnQ= 87205\nSHR0cFN0YXR1cw== 87206\nIGVya2zDpA== 87207\naXp6YXppb25l 87208\ndGh1bWJuYWlscw== 87209\nbG92YWs= 87210\nIGJhbmdpbmc= 87211\nIHVuaW1hZ2lu 87212\nIE92ZW4= 87213\nKEF1ZGlv 87214\nYXBzdWxhdGlvbg== 87215\nIHJhbXBz 87216\n55Wq 87217\nIFdvb2R3YXJk 87218\n6Zeu6aKY 87219\ncm9ncmFt 87220\n0YDRg9C/0L8= 87221\nIFdvcnNoaXA= 87222\nIHN0YWQ= 87223\nIG5lZg== 87224\nIEphdW5l 87225\nYnV6eg== 87226\nYWx1cw== 87227\nT05ET04= 87228\nLXN1 87229\nIG91dHBhdGllbnQ= 87230\namFj 87231\nRVNQTg== 87232\nw6ZsbGFuZA== 87233\nbXlw 87234\nIHNob3dyb29t 87235\nTW9udHNlcnJhdA== 87236\nLmdldERyYXdhYmxl 87237\nw6l0aWNv 87238\nIHbDoG8= 87239\nSUJD 87240\nRXhwZXJ0cw== 87241\nTWJwcw== 87242\nIj4j 87243\nIG5vcnRoZWFzdGVybg== 87244\nIE1lag== 87245\nKG1pbGxpc2Vjb25kcw== 87246\n4oCUYWxs 87247\nLXJlYWNoaW5n 87248\nCXJlcGx5 87249\nP3R5cGU= 87250\nIGNydXo= 87251\nID48Pw== 87252\nLkZpbmRBc3luYw== 87253\nKGNpcmNsZQ== 87254\nIFNoaW5l 87255\nIE1hdmVyaWNrcw== 87256\nIHNhZmV6b25l 87257\nIExhemFy 87258\nIGRpc3RpbmN0aW9ucw== 87259\nLWZlZWQ= 87260\nLnNldENvZGU= 87261\n4KSq 87262\nIHTDqWM= 87263\nIHNlcmFpdA== 87264\nIE1JQ1JP 87265\nIENvbnN1bXB0aW9u 87266\nXm4= 87267\nLmZyb21GdW5jdGlvbg== 87268\nIFJ1cGVydA== 87269\nIGhhcmFzc2luZw== 87270\nLUNv 87271\nIHRpaw== 87272\nIFN2ZW5z 87273\nLkltYWdlQWxpZ24= 87274\nX3doaXRlc3BhY2U= 87275\nIGtpY2tlcg== 87276\nIGNhZGFzdHI= 87277\nQ2V0dGU= 87278\nX25vdGlmaWVy 87279\nIEZBRw== 87280\nIHByaW1hbA== 87281\nIGhvbW9nZW5lb3Vz 87282\nIGFzdHJvbm9taWNhbA== 87283\nIEJ1cnI= 87284\nLkNvcHlUbw== 87285\nZ3JhcGhz 87286\naXR0bw== 87287\nT1NI 87288\nIHNob3dBbGVydA== 87289\nYW50cm8= 87290\nImRlZmF1bHQ= 87291\nZW1waGFzaXM= 87292\nV2Vp 87293\nb3V0Y29tZQ== 87294\nIGFrdQ== 87295\nIGNhbXBhaWduZWQ= 87296\nKSI7Cgo= 87297\nIHJlY2lwcm9jYWw= 87298\nIFJveWFsZQ== 87299\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= 87300\nLlRJTUU= 87301\nIDwq 87302\nT2Zmc2V0VGFibGU= 87303\nY29tcG91bmQ= 87304\nd2FpdEZvcg== 87305\ndWVnb3M= 87306\nLnN0cmluZ1ZhbHVl 87307\nX1NDSEVE 87308\nIGZhdHQ= 87309\nwqDCoMKgwqDCoMKgwqA= 87310\nLmRpc2s= 87311\nIHdhcnBlZA== 87312\nIGNyaXRpcXVlcw== 87313\nPycKCg== 87314\nKHNraWxs 87315\nIG1vZGVyYXRlZA== 87316\nX2VsZW1z 87317\nS2V5TGlzdGVuZXI= 87318\nIHNlYXNvbmluZw== 87319\nIHBvdXJxdW9p 87320\nX0ZE 87321\ncHJk 87322\naHlh 87323\nIj7Dlzwv 87324\nIG5vdXZlYXV4 87325\nIGdpdmVhd2F5cw== 87326\n5oql6YGT 87327\nTWFpbk1lbnU= 87328\nOy8q 87329\nIEdyb24= 87330\ncXVpdm9z 87331\nOw0KDQoNCg0K 87332\nIGluZmx1ZW5jZXJz 87333\nKFRJTQ== 87334\nU2hhcmVkUHRy 87335\nIGRpYWxvZ3M= 87336\nKioqKiovCg== 87337\nLkF0b21pYw== 87338\nIE1vcnNl 87339\nIHBjYg== 87340\nIEFQQw== 87341\nLkltbXV0YWJsZQ== 87342\nIHJlc2l6aW5n 87343\nIEx1bXB1cg== 87344\nIEh1bWFuaXRpZXM= 87345\nX3NvbHZl 87346\nX2h1bWFu 87347\nZXR5bA== 87348\nIEh1cnQ= 87349\nIEVzdGFibGlzaGVk 87350\nY2xhcmVk 87351\nIGNvbXBhcnRtZW50cw== 87352\nQmVhbQ== 87353\nX1JN 87354\nLmZhbHNl 87355\nKEdyaWQ= 87356\nIFFTaXpl 87357\nX2ZsZw== 87358\naXN0aWNh 87359\nPkxvZ2lu 87360\nOlVJQnV0dG9uVHlwZQ== 87361\nIEV4aXRpbmc= 87362\nY2xhcw== 87363\nIGFyc2Vu 87364\nKG1ldHJpYw== 87365\ncm93c2luZw== 87366\ncXVlcnlTZWxlY3Rvcg== 87367\nX0ZSSUVORA== 87368\nLWlv 87369\nIGNvbmZpc2NhdGVk 87370\nIGRlZmlhbnQ= 87371\nIE1PVE9S 87372\ncmVndW50YQ== 87373\nIE1vcnJvdw== 87374\nIEJlcnM= 87375\nQ3JhaWc= 87376\nIENQQQ== 87377\nIHNleGtvbnRha3Rl 87378\nIHNhbW1lbg== 87379\nL0F1dGg= 87380\nLkxpYg== 87381\nY3JhcGVy 87382\naWNlbWFpbA== 87383\nY3JhdGNo 87384\nIFdpcmVk 87385\nIGFkdmVydGlzZXI= 87386\nIGdldENsaWVudA== 87387\nIHJlc3BvbnNpYmx5 87388\nCVVPYmplY3Q= 87389\nLnNldFJvdGF0aW9u 87390\nLkNvdW50ZXI= 87391\nX0hPVVI= 87392\nVGVzdENhdGVnb3J5 87393\nIGhpbmRzaWdodA== 87394\nXGNvbnRyb2xsZXJz 87395\nd2FsbHM= 87396\nLnNldE1heGltdW0= 87397\nIHB1YmVydHk= 87398\nX3RlYW1z 87399\nX01PREFM 87400\nLkNP 87401\nIGJhZGFzcw== 87402\nKSddLAo= 87403\nw7pzcXVlZGE= 87404\naXJ1dA== 87405\nQ2hlbHNlYQ== 87406\nLnRyYW5zZm9ybXM= 87407\nIGNhcGl0YWxpc3Rz 87408\nTWFyY2E= 87409\nIEFyeQ== 87410\nLWNvZGVk 87411\n546v 87412\nVVJFRA== 87413\nPFRyYW5zYWN0aW9u 87414\nIFBhcmxpYW1lbnRhcnk= 87415\nKSRf 87416\nIHN1YnRseQ== 87417\nIHNpbGt5 87418\nIERpcnQ= 87419\nIHB1enpsZWQ= 87420\nfScpOwo= 87421\ncXVlc3Rz 87422\nRm9vdGJhbGw= 87423\nIENvbmZpZGVuY2U= 87424\ndXp1 87425\nYnVsYW4= 87426\nIGh1bW1pbmc= 87427\nbW91c2VlbnRlcg== 87428\nUmV0ZW50aW9u 87429\nIHNkbA== 87430\nb2tlZGV4 87431\nJywnPScsJA== 87432\nIEt1YWxh 87433\nU0FN 87434\nIHRyYW5zZm9ybWF0aXZl 87435\nUEtH 87436\naWxsdXM= 87437\nIHJvb3Rpbmc= 87438\nIFdpdG5lc3Nlcw== 87439\nIFJhamFzdGhhbg== 87440\n5byg 87441\nLWFkZGVk 87442\nIFRlcnJpdG9yaWVz 87443\nKHNxdWFyZQ== 87444\ncmFiYml0 87445\nX1Jlc291cmNl 87446\n6ZaL 87447\n4LiT 87448\nIHdpbm5pbmdz 87449\nIHNwbGU= 87450\nIGTDqHM= 87451\nIE1EQg== 87452\nw6lydA== 87453\nIE1hdHRpcw== 87454\nYWlsbGVz 87455\nX3dlYWs= 87456\nL2phdg== 87457\nIGNvbGxhcHNlcw== 87458\nICAgICAgCQk= 87459\nIHN3aXJs 87460\nIE5TU3RyaW5nRnJvbUNsYXNz 87461\nIHZvbHZlcg== 87462\nLlJlY2VpdmU= 87463\nIERleHRlcg== 87464\nIHRhYmxlbmFtZQ== 87465\ncmVhdGl2ZQ== 87466\nLkdldEZpbGVz 87467\ndm9vcg== 87468\nIEhvZQ== 87469\nVkVSTg== 87470\nIE9QQw== 87471\n7YOc 87472\ncmFtaWRz 87473\n54Sh44GX44GV44KT 87474\nU3Bpcml0 87475\nIE5PUA== 87476\nIE1haW50YWlu 87477\nKHNpZ21h 87478\nb3Ry 87479\nTW91c2VDbGlja2Vk 87480\ncXVpZXJkYQ== 87481\nX3dm 87482\n0L7QutCw0Lc= 87483\nYXBwYWJsZQ== 87484\nIEhvbGRlbg== 87485\nIENvdW50ZG93bg== 87486\nLnNpZ21h 87487\nY2hhbGs= 87488\nYmlsZGVy 87489\nIHZpc2lvbmFyeQ== 87490\nCU9u 87491\nJHVwZGF0ZQ== 87492\nIEdpbmdyaWNo 87493\ncm9vbUlk 87494\nPk5hbWE= 87495\nIHl5dHlwZQ== 87496\nLkRlY2ltYWxGaWVsZA== 87497\nbWFjcm9z 87498\nLnNldExheW91dFBhcmFtcw== 87499\nIHJubg== 87500\nIElNRGI= 87501\n56eN 87502\nZW1hbGVz 87503\nIGluY2lkaWR1bnQ= 87504\nUmVzdHJpY3RlZA== 87505\nIHBlZGFscw== 87506\nIEpvZw== 87507\nIEFkYXB0aXZl 87508\nIGZhZGVz 87509\nLkV2ZW50U3lzdGVtcw== 87510\nIFBhaWdl 87511\nIHNlaXM= 87512\nIGFwcHJvcHJpYXRlZA== 87513\nRkZU 87514\nZ29yaXQ= 87515\nIGNvaGVzaXZl 87516\nIE5pY2h0 87517\nX3dvcmtmbG93 87518\nbGl1cw== 87519\nIEZvcnRuaXRl 87520\nX0lX 87521\nQXRQYXRo 87522\nIGludG94aWNhdGVk 87523\nbm9zdGlj 87524\nQmluQ29udGVudA== 87525\nLnJlZHVjZXI= 87526\nKT8K 87527\nJ10q 87528\nIE9ic2VydmF0aW9u 87529\nX3ByZWZz 87530\nLnJlc29sdXRpb24= 87531\nLlBheWxvYWQ= 87532\nTWl4ZWQ= 87533\nIFJhaQ== 87534\nKHBkZXY= 87535\nKEAo 87536\naWNvdA== 87537\nJGlz 87538\nIGNyZWU= 87539\nPz0uKg== 87540\nLlFMYWJlbA== 87541\nIEdlb3JnaWFu 87542\neENB 87543\nIGRlZmljaWVudA== 87544\ndGhyb3du 87545\nIHJhcGluZw== 87546\ndXBvcw== 87547\nCWNsaQ== 87548\nZ2V0Vmlldw== 87549\nSGlnaGxpZ2h0ZWQ= 87550\nQ3BwR3VpZA== 87551\nIHJlbGVnYXRlZA== 87552\nIGxlYWRlcmJvYXJk 87553\nUmVjZWl2ZVByb3Bz 87554\nLmhhcg== 87555\nIGNvbmRp 87556\nSU1JVElWRQ== 87557\nIE1jQ2FydA== 87558\nKXRocm93cw== 87559\nYnVpZQ== 87560\nYnVhaA== 87561\nLmNvZWZm 87562\nIEF1c3NpZQ== 87563\nIFNhYmhh 87564\nKGZhYnM= 87565\ncmVsYW5k 87566\nIEbDtnI= 87567\nYmFyYW5n 87568\nLHRvcA== 87569\nCWVsc2lm 87570\nU3RlcFRocm91Z2g= 87571\nIHNrZXdlZA== 87572\nIFVudXNlZA== 87573\nJyl9Pgo= 87574\nWWU= 87575\nY2FsbGVl 87576\nSGliZXJuYXRl 87577\nIEV2ZXJlc3Q= 87578\naW1wb3J0RGVmYXVsdA== 87579\nIHRhcm4= 87580\nIE5vd2FkYXlz 87581\nWUE= 87582\nIENoYWxsZW5nZXI= 87583\nX2xvZ2ljYWw= 87584\nIGNyZWF0ZURhdGU= 87585\nIEdsb3VjZQ== 87586\nIGN1YW50bw== 87587\nIEhBUg== 87588\nIENoaWxs 87589\nIl4= 87590\nIGN1cnNvcw== 87591\nLkVPRg== 87592\nIG5pamU= 87593\nIGFuZ2VyZWQ= 87594\nb2N1c2luZw== 87595\nPENvbnRhY3Q= 87596\nIEF0bW9zcGhlcmlj 87597\nIFdvbGZnYW5n 87598\nIEJK 87599\nY2hpbGRz 87600\nIEJ1Z3M= 87601\nX0hFWA== 87602\nKFNQ 87603\nw6Vs 87604\nX2V2YWx1YXRpb24= 87605\nIFJBTkdF 87606\nIFNPUA== 87607\nX3Rva2VuaXpl 87608\nbXNnaWQ= 87609\nIHJleA== 87610\nCXBt 87611\nQ29weWluZw== 87612\nKkw= 87613\nRGFsbGFz 87614\nLVN0YXRl 87615\ndWxmaWxs 87616\nIGJ5xYJv 87617\nIENvbnRyYWN0b3I= 87618\nRGlkbg== 87619\nQVNURQ== 87620\nIFBJTw== 87621\nLlRlbGU= 87622\nLndhdGVy 87623\nZGV6 87624\nIGFuZ3JpbHk= 87625\nIHV0aWxpc2F0ZXVy 87626\nIHZvcnRleA== 87627\nQ29ycG9yYXRl 87628\nYXR1cmFz 87629\nIHByaXplZA== 87630\nJ3VybA== 87631\ndWdsaWZ5 87632\nIGltcHVsc2Vz 87633\nIGNocm9ub2xvZ2ljYWw= 87634\ncGxlbg== 87635\nX25hbWE= 87636\nL29u 87637\nIE9mZmljZXM= 87638\nIENQSQ== 87639\nIEFmdGVyd2FyZHM= 87640\n44GT44KT44Gr 87641\nX0JMT0NLUw== 87642\nR3JhY2U= 87643\nLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg== 87644\nIEthYnVs 87645\nIOaIkA== 87646\nIExlaXB6aWc= 87647\n4Kao 87648\nU2hvY2s= 87649\nQXVz 87650\nIG11cm0= 87651\nX3N0YXJ0cw== 87652\nIGLDpA== 87653\nIFp5 87654\nIkY= 87655\nLXJpZ2h0cw== 87656\nIGJlaGF2aW5n 87657\nKCc+ 87658\nIG1vc3F1ZXM= 87659\nKndpZHRo 87660\nIi8+Ljwv 87661\nLnVuc3BsYXNo 87662\nLmdldEFjdGl2aXR5 87663\nVVU= 87664\nIFNoYWs= 87665\nX3Jn 87666\nX0VxdWFscw== 87667\nJ2h0dHBz 87668\nIE94eWdlbg== 87669\nIFBvcnRzbW91dGg= 87670\n4oCUb25l 87671\nIHdhdGNoZXJz 87672\nIENob2k= 87673\nIHNpZGVy 87674\ncGVjdHJhbA== 87675\nbXF0dA== 87676\nLmNyZWF0ZVVzZXI= 87677\namVjdGl2ZXM= 87678\ndXJtYQ== 87679\nUmVnaXN0cg== 87680\nUGVyc29uYWxseQ== 87681\nPWtleQ== 87682\nIE5FTw== 87683\nIEZBUXM= 87684\naWJpbGlkYWRl 87685\nY2tzw6U= 87686\nIENvbGxhYm9yYXRpb24= 87687\nCWxibA== 87688\nLlNFUlZFUg== 87689\nIGFib3VuZA== 87690\nIEJlbmU= 87691\nd2FudGVk 87692\nLWhvbGU= 87693\nIG11dHRlcmVk 87694\nIHBlcA== 87695\nbmVzYw== 87696\nLlVwbG9hZA== 87697\nc2VtaQ== 87698\neEVD 87699\nJz4iKw== 87700\nIGVtYnJ5bw== 87701\nIEZpeGVkVXBkYXRl 87702\nQ2FzdGxl 87703\nLm1vZGVsbw== 87704\nIHBscw== 87705\nIGVudmVsb3Blcw== 87706\nX3JlbWFpbg== 87707\nUXVhcnRlcg== 87708\nYWxlcnRWaWV3 87709\nX2Zvcm1hdHRlZA== 87710\nIGxhc2hlcw== 87711\nemVsZg== 87712\naG9tbWU= 87713\nLmZsb3dMYXlvdXRQYW5lbA== 87714\nYWlycG9ydA== 87715\nIE1lbW9yaWVz 87716\nIEhFUk8= 87717\nIEFzaHRvbg== 87718\nIGV4aGliaXRpbmc= 87719\nKFNFTEVDVA== 87720\nU3VibWlzc2lvbg== 87721\nU3R1ZmY= 87722\nX3N1bg== 87723\nIHBlcsOtb2Rv 87724\nIGRlc3ByZQ== 87725\nCWVkaXQ= 87726\nIER0eXBl 87727\nY2Vzc2l2ZQ== 87728\nYWFk 87729\nIGRlc2Nvbg== 87730\nbmVsbHk= 87731\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ== 87732\nIHNjcmlwdHVyZXM= 87733\nIG9uVmlld0NyZWF0ZWQ= 87734\nIEVWRQ== 87735\nIEJhbGxldA== 87736\nO307Cg== 87737\nVURP 87738\nIFByb2JhYmlsaXR5 87739\ncXVpcnJlbA== 87740\nQ29udGFpbmluZw== 87741\nIFBsYXQ= 87742\n6KI= 87743\nL2JpdA== 87744\nIEpRdWVyeQ== 87745\nIHRpZW5lcg== 87746\nL2RyaXZlcnM= 87747\nIFByZXNpZGVuY3k= 87748\nXHVE 87749\nIEl2ZQ== 87750\naWVuYQ== 87751\nIGh5cGVycw== 87752\nIFNwZW5kaW5n 87753\nPFc= 87754\nIFRIRU1F 87755\nIHVzZXJQcm9maWxl 87756\nIGFubnVt 87757\ncmV0d2VldGVk 87758\nIFwnJw== 87759\nYnVuZGxlcw== 87760\nKCk8Lw== 87761\nIEN5bGluZGVy 87762\nIG91dGxpZXJz 87763\nIGRpc3NlbWluYXRpb24= 87764\nL2FwdA== 87765\nIE5hdGFzaGE= 87766\nIHJlbmRlckl0ZW0= 87767\nIENoaXBz 87768\nIHJvdW5kdXA= 87769\nIGltcHJvdg== 87770\nIGNvbW11bmljYXRvcg== 87771\nIHNreXBl 87772\nTU1N 87773\ncmlqaw== 87774\nLlBsYWNl 87775\nIHBhc2E= 87776\nIFNZTkM= 87777\nZW5zaXM= 87778\nIEF4ZWw= 87779\nZW7Dp2E= 87780\nZ2V0U3RyaW5nRXh0cmE= 87781\nYWJpbGl0w6k= 87782\nIGVtYWNz 87783\nLmdyYXZpdHk= 87784\nIGNoZXJpc2g= 87785\nIElTU04= 87786\nCUpzb24= 87787\ndXlv 87788\nIHVwdGltZQ== 87789\nIHJhbmRvbW5lc3M= 87790\nIGxvZnR5 87791\nQm93 87792\nQ3JlYXI= 87793\nIHRvd2VyaW5n 87794\nY2F0ZWdvcmll 87795\nL3Bvd2Vy 87796\nL3dlbGNvbWU= 87797\nfFI= 87798\nIGJhcnJpbmc= 87799\naWRpYQ== 87800\ncXVhbQ== 87801\nw7pkbw== 87802\nZXhwZXJpbWVudGFs 87803\nIGNsYQ== 87804\nIGN1cmF0b3I= 87805\ncmVhbWJsZQ== 87806\naW5keA== 87807\nTExM 87808\nIH0pOg== 87809\nIGhpc3RvaXJl 87810\nc2ltdWxhdGU= 87811\nPEFueQ== 87812\nIEdsYW0= 87813\nIEJhcmc= 87814\nVmFsdWVDb2xsZWN0aW9u 87815\nIEluc3RpdHV0bw== 87816\nQXNTdHJpbmdBc3luYw== 87817\nIGFkZWM= 87818\nIGZlbGxvd3M= 87819\ncGlwZXM= 87820\nIFBsYWNlaG9sZGVy 87821\nIEtn 87822\nIEFsYnVtcw== 87823\nICooKg== 87824\nX0dPT0Q= 87825\nKSIsDQo= 87826\nLlFSZWN0 87827\nw6Jt 87828\nIH0NDQo= 87829\nTWFyc2hhbEFz 87830\nQmFjaGVsb3I= 87831\nIEJhcmNvZGU= 87832\nIFRyYXZlcnNl 87833\nIG9kaW8= 87834\nLnNldFBhcmVudA== 87835\nIHNlbWljb25kdWN0b3I= 87836\nQUxMRUw= 87837\nIGJhbnF1ZXQ= 87838\nIE5ld3NwYXBlcg== 87839\nRE9NTm9kZQ== 87840\nIE5hdWdodHk= 87841\nRm9ybWF0dGVkTWVzc2FnZQ== 87842\nIGRpc3J1cHRpbmc= 87843\n5piT 87844\nIGxvb2thaGVhZA== 87845\nIGdyYXR1aXRlcw== 87846\nIGNoZWVzeQ== 87847\nIFNQRg== 87848\nblA= 87849\nIGFyc29u 87850\nIGFudGVubmFz 87851\nX01JRERMRQ== 87852\nX01BTExPQw== 87853\nLmdvQmFjaw== 87854\nIFByb3Bvc2l0aW9u 87855\nIE1pY2hhZWxz 87856\nX3Byb29m 87857\nINC90LDQudC0 87858\nw6R0emxpY2g= 87859\nLXJvbGw= 87860\nRURB 87861\nw6Fuw60= 87862\nZ292ZXJubWVudA== 87863\nw7Z0dA== 87864\nIEVzdGFibGlzaG1lbnQ= 87865\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 87866\nX0hJVA== 87867\nIEFJTQ== 87868\nYWRvbA== 87869\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== 87870\nX1JFRkVSRVI= 87871\nIGZvcm1hdERhdGU= 87872\ndWN0b3Nl 87873\nIGRvd25sb2FkZXI= 87874\nVGV4dEVkaXQ= 87875\nIGRpc2FybQ== 87876\nIEhBUFA= 87877\n0L7QtNCw 87878\nISkuCgo= 87879\nL3Byb2Nlc3M= 87880\nIGJyYWluc3Rvcm0= 87881\nIE9SSUdJTkFM 87882\nLlRhYmxlTmFtZQ== 87883\nIEtvc3Rlbmxvc2U= 87884\nIGTDqXA= 87885\nIElzYWJlbA== 87886\nIGFzdHJvbm9tZXJz 87887\nUVVJUkVT 87888\nOiIt 87889\ndXBsb2FkZXI= 87890\nOi8vJQ== 87891\nIGFtaXM= 87892\nRmlsZVZlcnNpb24= 87893\nICwk 87894\nY29vaw== 87895\nLFNJR05BTA== 87896\nJywvLw== 87897\nIFN1cHByZXNz 87898\nIExhdGlub3M= 87899\nIHdpdGhob2xk 87900\nIG1uZW1vbmlj 87901\nX0NZQ0xF 87902\nIGhvZA== 87903\nIFdvcnNl 87904\nZXJkZQ== 87905\nIHR5cGVpZA== 87906\nCWV4cG9ydHM= 87907\nIGFjaHRlcg== 87908\nb3Nhcw== 87909\nIGZvb3Rub3Rl 87910\naGFuaQ== 87911\nKFBhcmFtZXRlcg== 87912\nCVJlbmRlcg== 87913\nIFlZU1RBQ0s= 87914\nIFhJSQ== 87915\nIHNpZGVu 87916\nIGFyb3VzYWw= 87917\nIE9P 87918\nQml0dGU= 87919\nIG5lYXJlcg== 87920\nIENpcmN1cw== 87921\nIENPTE9SUw== 87922\nIHdpZWxkaW5n 87923\nLkZpbGVTeXN0ZW0= 87924\nIGdyaWxsZQ== 87925\nIERvdmVy 87926\nCiAgICAgCg== 87927\nKGdlb21ldHJ5 87928\nIHN0YXBsZXM= 87929\nIEFubm91bmNlbWVudA== 87930\nIOuyhA== 87931\nIGZvcnR1bmF0ZWx5 87932\nLlNvbWU= 87933\nIG1hbmdhbmVzZQ== 87934\nIGludGVydmlld2Vy 87935\nWVJP 87936\nIGNyeXB0b2dyYXBoeQ== 87937\nIGNoYW1icmU= 87938\nLnJldHJ5 87939\nIGltaXRhdGlvbg== 87940\nJGZkYXRh 87941\nIGxvdGlvbg== 87942\nKGlkZW50aXR5 87943\nLnBn 87944\nIHByZXN1bXB0aW9u 87945\nX1NVUEVS 87946\ndm9jYWI= 87947\nIFNlbWVzdGVy 87948\nIEFiZWw= 87949\nX2FwcHJvdmVk 87950\nLmNvbXBhdA== 87951\nIHdhcnRpbWU= 87952\nXV07Cgo= 87953\nbHV0 87954\nX0FjY291bnQ= 87955\nPygn 87956\nY29vcA== 87957\nL3JlZw== 87958\nLnNldFRv 87959\naXRlc3Nl 87960\nIEh5ZHJh 87961\nQmlucw== 87962\nY2FkZW5h 87963\nPi8nLA== 87964\nLlwi 87965\nCWFjY291bnQ= 87966\nIERhaGw= 87967\nIGRyb3du 87968\nIGdhdXNz 87969\nIHRyYW5zZm9ybWVycw== 87970\nIE1ldGFsbGlj 87971\nIEhlcmJhbA== 87972\nYWNocw== 87973\nX2J1dA== 87974\nIGl0ZXJhdGl2ZQ== 87975\nIEZyZWVk 87976\nanVy 87977\nfE0= 87978\nO2JyZWFr 87979\nX0ZG 87980\nKGRvd25sb2Fk 87981\n4buDbg== 87982\nLmNoZWNrU2VsZlBlcm1pc3Npb24= 87983\nTkVUV09SSw== 87984\nOmZsZXg= 87985\nIENUTA== 87986\nIEFyYg== 87987\nIFByb2R1Y2U= 87988\nCXN5bmNocm9uaXplZA== 87989\n4oCcT2g= 87990\nLmRhdGF0YWJsZXM= 87991\nIGNvbmVz 87992\nRMOp 87993\n0YbQsA== 87994\nQWxn 87995\nIGZ1bmNpb25h 87996\nIFViaXNvZnQ= 87997\nIGdlb3BvbGl0aWNhbA== 87998\nIHNpZWh0 87999\nIGh5ZHJhdGlvbg== 88000\nc3Rocm91Z2g= 88001\nIER1ZGxleQ== 88002\nYXrEgw== 88003\nIHRheGluZw== 88004\nINC30LDQutCw0Lc= 88005\nX0FTTQ== 88006\nTmV1dHJhbA== 88007\ndHJhZGl0aW9uYWw= 88008\nUGxheWFibGU= 88009\nIHNwYWdoZXR0aQ== 88010\nIGlDbG91ZA== 88011\nIERheXRvbmE= 88012\nIHdlcmRl 88013\nIEFOVA== 88014\nIFByb24= 88015\nIFN0YXRpb25z 88016\nIGF0dGVzdA== 88017\nIGZ1bGxlcg== 88018\nIG5vdmFtZW50ZQ== 88019\nXVxc 88020\nY2Nl 88021\nKGRlY2s= 88022\nL2F5dXNobWFu 88023\naWdzYXc= 88024\nIGFkdWx0ZXM= 88025\nIHRlcnJl 88026\nLk9yZGVycw== 88027\nCXByb3BlcnRpZXM= 88028\nRElH 88029\nIFRJTUVT 88030\nImluZGljZXM= 88031\nITw= 88032\nTW9uYWQ= 88033\nIG5vbmV4aXN0ZW50 88034\nIEF0bGFudGlz 88035\nIGdyaWV2YW5jZXM= 88036\ndXJlbmNl 88037\nIElQUFJPVE8= 88038\n4pmA4pmA4pmA4pmA 88039\nIGVtcGxlYWRv 88040\nINmD 88041\nLk1vdmVOZXh0 88042\nIElzbw== 88043\nYmVhdXRpZnVs 88044\nIHNvbHVibGU= 88045\nIHNsdWdnaXNo 88046\nIGRpZmZz 88047\nX09CUw== 88048\neG1pbg== 88049\nIHR1bWJsZQ== 88050\nIFVuYXJ5 88051\nIHppcGZpbGU= 88052\nIHN2ZW5za2E= 88053\nZXJsYW5k 88054\nL2N1cGVydGlubw== 88055\nCXNjcmlwdA== 88056\naXNjaGVz 88057\nTW9kaWZpZWREYXRl 88058\nIHZleWE= 88059\nIGRldGVybWluYW50 88060\nIEdvcmdlb3Vz 88061\nZ2Jvb2xlYW4= 88062\nIExPRA== 88063\nZGNj 88064\nc2NlbmVz 88065\nIFRTUk1MUw== 88066\nKFR5cGVFcnJvcg== 88067\nIGNhbW91ZmxhZ2U= 88068\nIGJ1cmdl 88069\nVGhlbQ== 88070\nLkFzc2lnbg== 88071\nIGxhc3RJbmRleA== 88072\nX3NwaGVyZQ== 88073\nX0FCSQ== 88074\nw4Q= 88075\naWxhZ2U= 88076\nXHhmZg== 88077\nIGtheWFr 88078\nIGZpeno= 88079\ndWl0ZW4= 88080\nLlNob3VsZEJl 88081\nIGh0b25s 88082\nIFBldGl0ZQ== 88083\nIGhlYWxz 88084\nIE9zYWth 88085\nTko= 88086\nSW5QYXJhbWV0ZXI= 88087\nIEJpcmNo 88088\nIGNvbW1lbnRhaXJl 88089\nIFNpZWdl 88090\nIGtleWNvZGU= 88091\nLWludGVuc2l2ZQ== 88092\ncHJvcFR5cGVz 88093\nRXhwb3J0cw== 88094\nIGJ1dHRvblRleHQ= 88095\nIEdvZHppbGxh 88096\nLkV4Y2hhbmdl 88097\nIHVuZGVyc3RhbmRhYmx5 88098\nIGFjY29yZGlvbg== 88099\nIHLDqWdpb24= 88100\nIG1hcmtlZGx5 88101\nYW5vb2dh 88102\nIGNvbnRyYXQ= 88103\nX2xpZnQ= 88104\nW2RhdGU= 88105\nIHNjb3Ju 88106\nIERhdGFNYW5hZ2Vy 88107\n4oCm4oCmCgo= 88108\nX0NPTVBJTEVS 88109\nIENsYXc= 88110\nb2RhdGU= 88111\nIHVuZGVyYWdl 88112\nIEltcGxlbWVudGVk 88113\nQ2xp 88114\nS2Fs 88115\nUHJvZHVjdG9z 88116\nIGVuZmVybWVk 88117\nw6lpcw== 88118\nIGRpc2NyZWRpdA== 88119\nIFNhbW9h 88120\nIFByZXNlbnRlZA== 88121\nIGNpbmVtYXQ= 88122\nXEFjdGl2ZUZvcm0= 88123\nIGZlcm4= 88124\nIFByaW1lcg== 88125\n5oKo 88126\nZ2VyZQ== 88127\nIGlsbHVzaW9ucw== 88128\nbm90YXRlZA== 88129\nIHBvag== 88130\nIG1vZGVsTmFtZQ== 88131\nIFBNQw== 88132\nIGRlY2Fk 88133\nIGZvcmVzdHJ5 88134\ndm9pZQ== 88135\nLi4uCgoKCgoK 88136\nIH19Owo= 88137\nIHRva2VuSWQ= 88138\nYW1tdQ== 88139\nIFBlcnNvbmVu 88140\nIFZFUkJPU0U= 88141\nIHBhdHJvbHM= 88142\nIGFudGlj 88143\nX2RlZXA= 88144\nZWdlbmQ= 88145\nIFNldFByb3BlcnR5 88146\nIEdhcmV0aA== 88147\nIE1BUw== 88148\nLnJlc3RhdXJhbnQ= 88149\nIEhlYXZlbmx5 88150\naWVkbw== 88151\nX2xlYWQ= 88152\nIEZ1amk= 88153\nUU4= 88154\nTWFzc2FnZQ== 88155\nIHBhcmFtTWFw 88156\nIGNpdGE= 88157\nX1NwZWVk 88158\nKGJib3g= 88159\nIEpVTA== 88160\n4oCZYW4= 88161\nIG1lbnRl 88162\nIFNob3djYXNl 88163\nIENTSQ== 88164\nPlR5cGU= 88165\nLlNu 88166\nb3R5cGljYWw= 88167\nIEZhbGxvbg== 88168\nLlVUQw== 88169\nIHByZWRhdG9yeQ== 88170\nIG9yZ2FuaXNpbmc= 88171\nY29sZA== 88172\nIHBhcnNlcnM= 88173\ndWllbg== 88174\nIGNvbXBpbGVycw== 88175\nIFs9 88176\nIEV1cmFz 88177\nTU9TVA== 88178\nCiAgICAKCg== 88179\nUkFS 88180\nLlNjaGVkdWxl 88181\nLm9wZXJhdGlvbnM= 88182\ndWZz 88183\nw7FhbmE= 88184\nIHByZW9jdXA= 88185\nLXRyZWF0ZWQ= 88186\nLmdldFdvcmxk 88187\nLic6 88188\nIEFUSA== 88189\nOnN0YXJ0 88190\nIGF1dG9pbW11bmU= 88191\nIEJsYWNramFjaw== 88192\nX0ZJTklTSA== 88193\nKGZsb29y 88194\nIHdyZWNrYWdl 88195\nVVJU 88196\nLkJyYW5k 88197\ncGFpcw== 88198\nY2ltYWw= 88199\nY2nDsw== 88200\nTkZM 88201\nLWVxdWlwcGVk 88202\nLmNvbnRlbnRPZmZzZXQ= 88203\nIG92ZXJjcm93 88204\nIFRa 88205\nIG9kb20= 88206\nIENlbGx1bGFy 88207\nCXdyaXRlbA== 88208\nKGlucHV0U3RyZWFt 88209\nKHByZWY= 88210\nLXN0b2Nr 88211\nIERlbmllZA== 88212\nLXN1cHBvcnRlZA== 88213\nICcoKA== 88214\nYW5jb2Rl 88215\nLmZpbHRlcmVk 88216\nRGltcw== 88217\nIGpi 88218\nCXByaWNl 88219\nIEBACg== 88220\nbm9jaw== 88221\nLm9wZW5Db25uZWN0aW9u 88222\nIGFudGljcw== 88223\ncmVzdWx0Q29kZQ== 88224\nUGxheWJhY2s= 88225\nIGNlbHVsYXI= 88226\nIEZPT0Q= 88227\nIFBvZGVzdGE= 88228\nPW1lc3NhZ2U= 88229\nLnBlcmZvcm1hbmNl 88230\nIERtaXRyeQ== 88231\nYWx0aW1vcmU= 88232\nIHBsYXRlZA== 88233\nIHR1YmVyY3Vsb3Npcw== 88234\nX2dlbQ== 88235\nKEVkaXRvcg== 88236\nVHBs 88237\nIGNyaWFu 88238\nIGJ1ZmZlcmluZw== 88239\n6KeG6aKR 88240\nICcpCgo= 88241\nVnU= 88242\nTWF0aGY= 88243\nIHRpbWVsaW5lcw== 88244\nIFRhdGE= 88245\nL3Bw 88246\nIHBsYXN0 88247\nIFRydWx5 88248\nIFN1YnN0aXR1dGU= 88249\na2llbQ== 88250\na2Fhcg== 88251\nIFZpc2g= 88252\nJ2h1aQ== 88253\nIE1hZ2ljaw== 88254\nL0xheW91dA== 88255\ndXJhbsOnYQ== 88256\nX3R0bA== 88257\nSGlkZUluSW5zcGVjdG9y 88258\nLmtleXdvcmRz 88259\nTGlzdE1vZGVs 88260\nX1N1Y2Nlc3M= 88261\naWxpaGFu 88262\nIGJsYWNrbWFpbA== 88263\nIFNlcmJpYW4= 88264\ncXVlbGxl 88265\nIER5c2Z1bmN0aW9u 88266\nIFByZXBhcmVk 88267\nIGpNZW51SXRlbQ== 88268\nIGxvZ2luVXNlcg== 88269\nc2V0YXR0cg== 88270\nLkNS 88271\nX2xjZA== 88272\nIGJ5dGVzUmVhZA== 88273\nIGNkZWNs 88274\nIHRvd25zaGlw 88275\ncGVr 88276\naWprc3RyYQ== 88277\nIG1heGltaXppbmc= 88278\nLnByb3ZpZGVycw== 88279\nSW52ZXN0aWdhdG9ycw== 88280\nIHNob290b3V0 88281\nIGFpcnNwYWNl 88282\ndG9vbGJveA== 88283\nUVdpZGdldA== 88284\nPXBr 88285\nIHBvcnRlcg== 88286\nIFByZWRhdG9y 88287\nIFN1bnJpc2U= 88288\nIGRldm91cg== 88289\nCVVJbnQ= 88290\naXR0YW5jZQ== 88291\nU1BB 88292\nX2VuZGlhbg== 88293\nIE5hZ2Fy 88294\ndmVuaWRh 88295\nL29wdA== 88296\nQnlFbWFpbA== 88297\nIFBoeXNpY2lhbg== 88298\nXEQ= 88299\nINC80Ys= 88300\nWUVBUg== 88301\nSUND 88302\nL3BvcnRmb2xpbw== 88303\nLmV4ZWN1dG9y 88304\ndWRlbQ== 88305\nRmFsbGJhY2s= 88306\ndWR1 88307\nU2xpbQ== 88308\nw7Nsbg== 88309\nXnst 88310\nYW5za2U= 88311\nIGh1c3RsZQ== 88312\nIElyZW5l 88313\nIGFieXNz 88314\nIFJvYmJpbnM= 88315\nIGluZGV4ZXI= 88316\nU2F1ZGk= 88317\nIHdob2xlc29tZQ== 88318\nLXNsb3Q= 88319\nIFRlY24= 88320\nIHBhZ2VUaXRsZQ== 88321\nIGNvbnRlc3RhbnQ= 88322\naWNvcHRlcg== 88323\nIGNvdXJzZUlk 88324\nQ2hy 88325\nIEFYSVM= 88326\nZm9yZGVy 88327\nX1RVTg== 88328\nVHJhZmZpYw== 88329\nIHR5cGVhbGlhcw== 88330\nIGRhcmY= 88331\nLXVyaQ== 88332\ndHN4 88333\nLmRlc3Ryb3lBbGxXaW5kb3dz 88334\nIGl0ZXJhdGluZw== 88335\nUmVhY3Rpb24= 88336\nCUFN 88337\nIGN1ZW50 88338\nLWNvb2tpZQ== 88339\nIGZsYXZvcmVk 88340\nc3RvaQ== 88341\nIGZsaXJ0aW5n 88342\n44CL77yM 88343\n4KSu 88344\nX0NSWVBUTw== 88345\nW3Rva2Vu 88346\nIHByb2xldGFyaWF0 88347\nLuKAmeKAnQoK 88348\nCWRj 88349\nLlN0cmluZ1Zhcg== 88350\nIGxlZ2l0aW1hdGVseQ== 88351\nX2RlY29yYXRvcg== 88352\nTG9ja2Vy 88353\nIEplbm5h 88354\nVVJJTkc= 88355\n5YaN 88356\nX1ByaW50Zg== 88357\nQVRPUlk= 88358\nLWRpc3Q= 88359\nICIuIik7Cg== 88360\nLnF1aXo= 88361\nIGlyZ2VuZA== 88362\nLWxlYWd1ZQ== 88363\nZ2llbg== 88364\nIFByb2R1Y2Vk 88365\nSGVsbWV0 88366\n5Y+v6IO9 88367\nUGxhdGZvcm1z 88368\nIFJlc291cmNlTWFuYWdlcg== 88369\nIEh1bmRyZWQ= 88370\ncm9tZXRlcg== 88371\nZW5na2Fw 88372\nSG9w 88373\nIHBvc3N1aQ== 88374\nQmVmb3JlRWFjaA== 88375\nIENISw== 88376\nIElNUw== 88377\nVGlja2Vy 88378\nIGdyaW5uZWQ= 88379\nLmdldEFz 88380\nIGltcG9zZXM= 88381\nXSIp 88382\nRm9yZ2V0 88383\nL2ltcG9ydA== 88384\nIGluamVjdGluZw== 88385\nTG92 88386\nIGFicmls 88387\nX3NsaWNlcw== 88388\nLWNvbW0= 88389\nIFBST0RVQ1RT 88390\nIE9hc2lz 88391\nIMO4bnM= 88392\nIFJlamVjdA== 88393\nIHJlZ3VsYXJpemF0aW9u 88394\naW1wbGljaXRseQ== 88395\nbmF6 88396\nU3BlY2lmaWVy 88397\nIGltcG92ZXJpc2hlZA== 88398\n5po= 88399\nIG5vbWluYXRl 88400\nIE9WRVJSSURF 88401\nIEJhbmRz 88402\nZXRoeXN0 88403\nIEppYW4= 88404\nIG5ld2NvbWVy 88405\nIE5hYg== 88406\nIGVicA== 88407\nIFBhZ2Vy 88408\nIEh1bWI= 88409\nL2Nj 88410\nIGV4cMOpcmllbmNl 88411\ndWRnaW5n 88412\nTWI= 88413\nZGJ1Zg== 88414\nJy8+ 88415\nIG9ja3PDpQ== 88416\nIGpkYmNUZW1wbGF0ZQ== 88417\nIFNISVBQSU5H 88418\nIGludGVyZGlzY2lwbGluYXJ5 88419\nIENFVA== 88420\nYXV0b3A= 88421\nLXN5bWJvbA== 88422\nYXZlYw== 88423\nIGNvbXBvdW5kZWQ= 88424\nIENodW5n 88425\nX1NNUw== 88426\nLWll 88427\nIFByb3NlY3V0b3I= 88428\nIExlaWE= 88429\nIE1hbmRlbGE= 88430\nU2luZ2xlT3JEZWZhdWx0 88431\nCVJFUVVJUkU= 88432\nYXRvd24= 88433\ndXJyZXRz 88434\n5paH5a2X 88435\nIENPTlRFWFQ= 88436\nRU5TSVRZ 88437\nIGluc3VyZ2VudHM= 88438\nIERpYXM= 88439\nLnN0YXRpb24= 88440\nIEtsYW4= 88441\nX21lYXN1cmVtZW50 88442\nX1FNQVJL 88443\nIHN0b2k= 88444\nTU9PVEg= 88445\nPicpOwoK 88446\nIGluZ2VzdGlvbg== 88447\nIEdsb3c= 88448\ndXRjaGVz 88449\nYmVhcmluZw== 88450\nLnRvYXN0cg== 88451\nIGZyYWdtZW50YXRpb24= 88452\naXBwbw== 88453\nX1NFR01FTlQ= 88454\nIHN0dW1ibGluZw== 88455\naW1hcg== 88456\nc3Rpbmlhbg== 88457\nXygpCg== 88458\nIG1vdGl2YXRpb25hbA== 88459\nTGlzdEl0ZW1UZXh0 88460\nIHdvbWVucw== 88461\nT3BlbkhlbHBlcg== 88462\naWJhbmQ= 88463\nIGJ0blNhdmU= 88464\nIGluY29ycG9yYXRpb24= 88465\nIGRvY3VtZW50YXJpZXM= 88466\naWNs 88467\nIE5k 88468\nIEFyYQ== 88469\nIHF1YWtl 88470\nIEN1bW1pbmdz 88471\naHRt 88472\nYXN0ZXJlZA== 88473\nLmR0cA== 88474\nIGNvbmRvcw== 88475\nIEd1bmRhbQ== 88476\nL2Rpc2FibGU= 88477\naHlkcmF0ZQ== 88478\nIEVwb2No 88479\nIG5hdGlvbmFsaXN0cw== 88480\nIGRldmVy 88481\nLHJlcXVlc3Q= 88482\nLmdldFZlcnNpb24= 88483\nQ0VMRVI= 88484\nIFNhbGFo 88485\nIG1vdGU= 88486\nIE1lbGxvbg== 88487\nc3BvdGlmeQ== 88488\nIG9yaWdlbg== 88489\nIG5hbGU= 88490\nIGFkdmVyc2FyaWVz 88491\nLkpUYWJsZQ== 88492\nZm9yY2VtZW50cw== 88493\nIFJldHJlYXQ= 88494\nIGFyY2hpdm9z 88495\nIHNsYXNoZXM= 88496\nLk1vdXNlRG93bg== 88497\nPDo6 88498\nX3Rocm91Z2g= 88499\nQWxhbWF0 88500\nLmJsdXI= 88501\nX2ZpbmRlcg== 88502\nIGFsbHVyZQ== 88503\nUGVyaXBoZXJhbA== 88504\nX3Bhc3NlZA== 88505\nX2NoYWxsZW5nZQ== 88506\nIFBhbGVv 88507\nSU5J 88508\nRGlyZQ== 88509\nc3BoZXJl 88510\nKENPTE9S 88511\nYWNrZXJz 88512\nIEdseXBo 88513\nKGludGVnZXI= 88514\nINC60L4= 88515\nIFJlbGV2YW50 88516\nINm+ 88517\nIGF0YXM= 88518\nX3ByaW0= 88519\nIE1VVA== 88520\nbmluZ2Vy 88521\nYXV0b3JlbGVhc2Vwb29s 88522\nPV9f 88523\nIFNpZ25pbmc= 88524\n7ZWY7KeA 88525\nIHVjeg== 88526\nRWRpdGluZ1N0eWxl 88527\nIEhlYXRlcg== 88528\nIEZhaXJmaWVsZA== 88529\nIEJlYXJk 88530\nLGVu 88531\ndXNhdA== 88532\nKCcuJw== 88533\nL3N0cmVhbQ== 88534\nIGdldFN1cHBvcnRGcmFnbWVudE1hbmFnZXI= 88535\nIG1DdXJyZW50 88536\nX1NUQVRFUw== 88537\nX3dpbmQ= 88538\nQ0hBUFRFUg== 88539\ncHJvYmFiaWxpdHk= 88540\nKGFubm90YXRpb24= 88541\nICovDQoNCg0K 88542\nLlVuaXF1ZQ== 88543\nLkFkZEZpZWxk 88544\nSGlnaGVy 88545\nLmRpZ2l0YWw= 88546\nLmV4cGVyaW1lbnRhbA== 88547\nYXds 88548\nIHdoZW5jZQ== 88549\nZXJub3Rl 88550\nU0FNRQ== 88551\nLmlwdg== 88552\ndG9CZUZhbHN5 88553\nYnJhbmU= 88554\nX2NhdGVnb3JpY2Fs 88555\nQXVyYQ== 88556\nIFR5cGVTY3JpcHQ= 88557\nIHNwb250YW5lb3VzbHk= 88558\nbG9uZ2xlZnRyaWdodGFycm93 88559\naWthbA== 88560\nX1RPRE8= 88561\nIFd5YXR0 88562\nIGZsdXJyeQ== 88563\nZGlm 88564\nIHJlY2tvbg== 88565\nIENvcm91dGluZQ== 88566\nCWZmbHVzaA== 88567\nIHdvcmtmbG93cw== 88568\nIEZBTUlMWQ== 88569\nc3ByaXRlcw== 88570\nX1dvcms= 88571\nLkdldFNpemU= 88572\nIENvbnN0cmFpbnRz 88573\nQmlnSW50 88574\naXRpYQ== 88575\nZ2V0Um93 88576\nIGR1aw== 88577\nIGlzTmV3 88578\nIFByb2R1a3Rl 88579\neENC 88580\naXNpZXJ0 88581\nZnVuY3M= 88582\nIEFkZW3DoXM= 88583\nQmluZGluZ1V0aWw= 88584\nb21waWxlcg== 88585\nLWludg== 88586\nIGNoYW50cw== 88587\nIGVudHNwcmVjaA== 88588\nKHRp 88589\nX0lB 88590\n0L7RgNC00LjQvQ== 88591\nIEZBTEw= 88592\naW1k 88593\nIGxvY2FsdGltZQ== 88594\nPExpbms= 88595\n0L3QuNC60LA= 88596\nIHByb2ZpbGVy 88597\nIGdldFVzZXJJZA== 88598\nIFBoeXNpY2lhbnM= 88599\nUkFE 88600\nIGhtbQ== 88601\nIE5lc3M= 88602\nIFRlbXBv 88603\nIEpU 88604\nIHJlY29ubmFpc3NhbmNl 88605\nPHRyYW5zbGF0aW9u 88606\nIGVudGljaW5n 88607\nIHF1YWludA== 88608\nIGNvdXBl 88609\nX18nLA== 88610\nTkFTREFR 88611\nINC30L3QsNGH0LXQvdC40Y8= 88612\nUEVSQVRVUkU= 88613\nIFBhaQ== 88614\nIHRldGFz 88615\nQ0FT 88616\nSVJST1I= 88617\nIGtj 88618\nIHRvdGU= 88619\nIGRyYXdiYWNr 88620\nIHBhcnNsZXk= 88621\nCUZ1bmN0aW9u 88622\naXN0eQ== 88623\nIERVUA== 88624\nX0NJRA== 88625\nX1VU 88626\nIGtzaQ== 88627\nIGrDpA== 88628\nPXZhbA== 88629\nLnRvSGV4U3RyaW5n 88630\n5p2/ 88631\nLmNsaXBz 88632\nIG9mZmVu 88633\nIFRFQ0hOTw== 88634\nIFNoYW1l 88635\nIHN1c2NlcHRpYmlsaXR5 88636\nIHN0dXBpZGl0eQ== 88637\nIFRyb3V0 88638\nIENoYW1wYWduZQ== 88639\nZXRoeWxlbmU= 88640\nIGJlZ3I= 88641\nX3JlZGlz 88642\nWWVw 88643\nIGhhbnM= 88644\nIERlZmVuZGFudA== 88645\nIGRhc2hlcw== 88646\nIHVzZXJUeXBl 88647\nX2RhdG9z 88648\nIHVuaWM= 88649\na3JpdA== 88650\nIHJlY2VwdGl2ZQ== 88651\nIEdyZXQ= 88652\nKG1i 88653\nIEluZmx1 88654\nw6tu 88655\nfS8+ 88656\naW50ZXJlc3Rpbmc= 88657\nVVRVUkU= 88658\nIGltYWdlU2l6ZQ== 88659\nIGdyZA== 88660\nIGFic29s 88661\nL2Zh 88662\nLmdyYWRpZW50 88663\nIHd5c3Q= 88664\nXX0+Cg== 88665\nbGVnYXRpb24= 88666\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCg== 88667\nIEJsZW5kZXI= 88668\nX18pOw== 88669\nIHVzZXJFbWFpbA== 88670\nIFBoYXI= 88671\nbGVoZW0= 88672\nKSk/ 88673\nKFJldHVybg== 88674\nZWdyYQ== 88675\ndXRpdm8= 88676\nIGFwcGVuZGl4 88677\nIFJUVkY= 88678\nIFNFQUw= 88679\nIGd5cHN1bQ== 88680\nX0FyZw== 88681\nIGlsbHVtaW5hdGU= 88682\nIFNjaGlmZg== 88683\ncXVpbA== 88684\nLkNvbWJvQm94U3R5bGU= 88685\nJ10pKQoK 88686\nIGFsdGVycw== 88687\nIHByYWN0aXNl 88688\nIHVzdA== 88689\nIERpbWl0 88690\nLVJlZ3VsYXI= 88691\nIGNyZWVwaW5n 88692\nIENhbmFkaWVucw== 88693\nIHJldG9ybg== 88694\nLWNvcm5lcg== 88695\nICJdIg== 88696\nKHJuZw== 88697\nIGNhbmFkaWFu 88698\nIHBvc3Rv 88699\nLmFzc2VydEFsbW9zdEVxdWFs 88700\nIEJlY2t5 88701\nL3Nz 88702\nIGhvc3RhZ2Vz 88703\nIGJpb2xvZ2lzdA== 88704\nIEhvc3BpdGFsaXR5 88705\nIEVsaw== 88706\nIEJhcmFuZw== 88707\n66qp 88708\nYmJiYg== 88709\nLnRlYWNoZXI= 88710\nIHRlcm1pbmF0ZXM= 88711\nIGlzRXJyb3I= 88712\nIEtlbmRyaWNr 88713\nZW5kYXJz 88714\nIFN1Z2dlc3Rpb25z 88715\nQ2Vs 88716\nIFNlcnZpY2VQcm92aWRlcg== 88717\nIFdpY2hpdGE= 88718\nXSkpLAo= 88719\nIGhlYWRsaWdodHM= 88720\nX3ZlbnRh 88721\nQU5USQ== 88722\nIHByb3BpZWRhZA== 88723\nIGVubGlzdA== 88724\nCW9yZw== 88725\nTWVzc2VuZ2Vy 88726\nLmxhbmQ= 88727\nIicK 88728\nYXNwZXJz 88729\nIHRlcnM= 88730\nZmlsdA== 88731\nIEZ1bmN0b3I= 88732\nIHNsaW5n 88733\nX0JMSw== 88734\nLUV1cm9wZWFu 88735\nIEFjaGlsbGVz 88736\nXEVudGl0aWVz 88737\nLkRpc3BsYXlNZW1iZXI= 88738\nIHJlZGV2ZWxvcG1lbnQ= 88739\nCWhlbHA= 88740\nIFsnLQ== 88741\nIEp1bGllbg== 88742\nPUludGVnZXI= 88743\nLmlzTnVsbE9yRW1wdHk= 88744\nIFdvVw== 88745\nUGF5bWVudHM= 88746\nKGhkcg== 88747\nIGJhamE= 88748\nIEpDb21ib0JveA== 88749\nRmlyZWZveA== 88750\nIGNvbmdsb21lcg== 88751\nX2N1c3Q= 88752\nJCIpCg== 88753\nIG11dGFudHM= 88754\nTWFnbg== 88755\nIE1QSA== 88756\ne18= 88757\nX3dhcm5pbmdz 88758\nIGdhc3Q= 88759\nTHQ= 88760\nIHRyYWluYWJsZQ== 88761\nVHJhZGVtYXJr 88762\nQkFTSA== 88763\nIEVDUw== 88764\nUmV0cmlldmU= 88765\nJ08= 88766\nIGluaXRpYWxpc2Vk 88767\nIGNoZW1pbg== 88768\nLlRyYW5zcG9ydA== 88769\nIFlpbmc= 88770\nYXNpb25z 88771\nIG1vYw== 88772\nX0xPR0dFUg== 88773\nR0VOQ1k= 88774\nIEJsb2dnZXI= 88775\nICIpIgo= 88776\nUEVuZA== 88777\nIGFjY29tcGFnbg== 88778\nLkNPREU= 88779\nIG1MaXN0 88780\nLWVkdWNhdGVk 88781\nLC8= 88782\nIE1lcnJpbGw= 88783\nL3Blb3BsZQ== 88784\nLicnJwo= 88785\nX3RvZG8= 88786\nIGfDvG4= 88787\nX0ZVTExTQ1JFRU4= 88788\nLmNsZWFudXA= 88789\nVW5tYXJzaGFsbGVy 88790\nLlN1cHByZXNzTGludA== 88791\nIG9uc2xhdWdodA== 88792\nIE1hcnNlaWxsZQ== 88793\nZWRpYXRvcg== 88794\nX0VOVFJJRVM= 88795\nLGRlZmF1bHQ= 88796\nbWVsZHVuZw== 88797\nZWxmdGg= 88798\nIEdvdmVybm1lbnRz 88799\nIHBsZWFz 88800\nb3R0cw== 88801\nIHBsdW5kZXI= 88802\ncmVhZE9ubHk= 88803\nIGR5c2Z1bmN0aW9uYWw= 88804\nJ05laWxs 88805\nIHVubG9hZGVk 88806\nIHNxdWVlemluZw== 88807\nIGRvb2Q= 88808\nLmFkZERhdGE= 88809\nIEFzaQ== 88810\nTUVT 88811\nKHNjaGVkdWxl 88812\nIGFkdmVudHVyZXJz 88813\nZXhwZWN0RXhjZXB0aW9u 88814\nIH19Pns= 88815\nQ0xT 88816\nIHJlY2hlcg== 88817\nIGRlcm5pw6hyZQ== 88818\nLkRldGFpbHM= 88819\nIHJhbmRvbU51bWJlcg== 88820\nIGlhcg== 88821\nIExhbmdl 88822\nZXdl 88823\nIEVtaWw= 88824\nIGFkdmVydHM= 88825\nIGRyYW1hcw== 88826\nIEtvbW0= 88827\nICAJCQkJ 88828\nX1Rlc3RDYXNl 88829\nIENsYXJlbmNl 88830\n0LXQvdGC0LA= 88831\ndG91cHBlcg== 88832\nLm9uU3VibWl0 88833\nY2Fh 88834\nX0FMQVJN 88835\nKikKCg== 88836\nIOuzgOqyvQ== 88837\nLlByaXZhdGU= 88838\nIHNreWxpbmU= 88839\nUkFJTg== 88840\nKGN1cmw= 88841\nb3NpdGU= 88842\nSWdub3Jpbmc= 88843\nIHZ6 88844\nIHZlZGVyZQ== 88845\nIE9TWA== 88846\nYmFuYW5h 88847\nIG1ldGFt 88848\nIHRyYW5zbGF0ZVk= 88849\nIE1jR3I= 88850\n4oCZYWNj 88851\n5Lul5LiL 88852\nIHNwaXJpdHVhbGx5 88853\nKGVuYWJsZWQ= 88854\nIHJlc3RvcmVz 88855\nIGJ0bkNhbmNlbA== 88856\ndmFuaXNoZWQ= 88857\nIE51ZXZv 88858\nU2FsdmFy 88859\nY2FmZmU= 88860\nIG1hc3RlcmluZw== 88861\naWRkbGVk 88862\nLmlzZGlnaXQ= 88863\nIGdyYXZ5 88864\nYWdlZExpc3Q= 88865\nXFJlc291cmNlcw== 88866\nIGRvd25mYWxs 88867\nLlBhc3M= 88868\nIGFsdGlqZA== 88869\nIHBpenphcw== 88870\nIH0pKQ== 88871\ncGVybXM= 88872\naWdodG9u 88873\nIHJlcGVsbA== 88874\nICcnKSw= 88875\nLm5vcm1hbGl6ZWQ= 88876\nIG1hcmNoZXM= 88877\nCXJlc29sdmU= 88878\nQ2hpbGRTY3JvbGxWaWV3 88879\nIEluc3RpdHV0aW9ucw== 88880\nQXR0ZW5kYW5jZQ== 88881\nbHNl 88882\nZXJkZW0= 88883\nLmdldElucHV0 88884\nSGFzQmVlbg== 88885\nYXBldXRpY3M= 88886\nICpc 88887\nIFJpdHVhbA== 88888\nX0xT 88889\nIHNwb3RpZnk= 88890\nIHNww6R0ZXI= 88891\nIFRodW1ibmFpbA== 88892\nKGNlcnQ= 88893\nIGdldFJlc291cmNl 88894\nX3Bsb3Rz 88895\nIHN0YWluaW5n 88896\nYWRqdXN0ZWQ= 88897\nINep 88898\nRGl2RWxlbWVudA== 88899\nIFRUQw== 88900\nIGFwcm92ZQ== 88901\nLnZpZXdlcg== 88902\nfD0= 88903\nZ2V0U291cmNl 88904\n55S16K+d 88905\nX1RC 88906\nX2JpbGxpbmc= 88907\nLUxpZmU= 88908\nIHBzeWNoZQ== 88909\nIHRhYlBhZ2U= 88910\nIEluZmVjdA== 88911\neGZmZg== 88912\nX2hpZA== 88913\nIGFwb2NhbHlwc2U= 88914\nIE5GUw== 88915\nIElURVI= 88916\nV2luZG93U2l6ZQ== 88917\naGVpdHM= 88918\nIGluY3JlbWVudGVk 88919\nIEJyYXk= 88920\nZW5lZ3Jv 88921\nIGFsbW9uZHM= 88922\nWVBSRQ== 88923\nTm9ybWFsaXpl 88924\n4oCcV2VsbA== 88925\nIEFwaUNvbnRyb2xsZXI= 88926\nW1VuaXQ= 88927\nR2VucmVz 88928\nIE5leA== 88929\nIExORw== 88930\nIGZvcmVnb2luZw== 88931\nIHRlbmRvbg== 88932\nIEhw 88933\nQ291bmNpbA== 88934\nIFNhdWRpcw== 88935\nIERlemU= 88936\nIHNjcmFwZWQ= 88937\nIGJvdHRsZW5lY2s= 88938\nIE9ybg== 88939\nIHVubWFubmVk 88940\nIGludm9raW5nU3RhdGU= 88941\nIEV4b2R1cw== 88942\nX0FUT01JQw== 88943\nU3ViTWVudQ== 88944\nX2NvbXByZXNz 88945\nIy4= 88946\nRHJ2 88947\nLnB1c2hCdXR0b24= 88948\nIHN1aXRjYXNl 88949\nb3NzZWQ= 88950\nYml0cmFyeQ== 88951\nU25pcHBldA== 88952\nIEVwaWRlbWk= 88953\nRGlzYWxsb3c= 88954\nX0NISw== 88955\nIHZlcmlmaWVz 88956\nIENhdGFseXN0 88957\n4oCUZnJvbQ== 88958\nIGNvbnRhbWluYW50cw== 88959\nSm9obm55 88960\nKGZpbA== 88961\nIGRlcmVu 88962\nIG91dGNyeQ== 88963\nIEpvaGFubg== 88964\nPFRhZw== 88965\nX3Nhbg== 88966\nIHN0ZGRldg== 88967\nIHBhcmFseXplZA== 88968\nIExleHVz 88969\nb3NhdGU= 88970\nIENoYXJzZXQ= 88971\nIFJlYWx0 88972\nPT8iLA== 88973\nKERlZmF1bHQ= 88974\nIFRyZWFzdXJlcg== 88975\nRWluZQ== 88976\nIHVudHJ1ZQ== 88977\nIGZpbmFuemk= 88978\nIGJlaGF2aW91cmFs 88979\nIG5pcHBsZQ== 88980\nIFJhZGljYWw= 88981\nIFBheg== 88982\nIE1haXNvbg== 88983\nLWVtcGxveWVk 88984\nIHdlcmVsZA== 88985\nIGpvcw== 88986\nIERpZWQ= 88987\nZW50cmVwcmlzZQ== 88988\nJHJvd3M= 88989\nIHNwb29m 88990\nIMK7Lg== 88991\nIGtleXBvaW50cw== 88992\nIGN1cGNha2Vz 88993\nIHt9KTsKCg== 88994\nY2hpbmU= 88995\n4oCL4oCL 88996\nLExPQ0FUSU9O 88997\nIHBseXdvb2Q= 88998\nIG1hZ2c= 88999\nIFJhbw== 89000\nIERQUg== 89001\nIGVib29rcw== 89002\nKXNpemU= 89003\nIHNwZWNpYWxpc2Vk 89004\nI2Fl 89005\nIG1pY2hhZWw= 89006\nIFNURE9VVA== 89007\nIFBlbGw= 89008\nQU1FUkE= 89009\nYW5nZWxv 89010\nIGluZ2lu 89011\nIG1BdXRo 89012\nIGxlZ2FsaXpl 89013\nIEN1YW5kbw== 89014\nIGNlcnRv 89015\nIGxpdHJlcw== 89016\nIEV4dHJhcw== 89017\nU0hPUlQ= 89018\nIHByZW1hdHVyZWx5 89019\nIFNlbWFwaG9yZQ== 89020\nSEVO 89021\nIGFtcGhpYg== 89022\nIGjDqQ== 89023\nRXhpdGluZw== 89024\nZXVpbGxleg== 89025\nIFRNUHJv 89026\nLnByZWZlcmVuY2Vz 89027\nLmdldEluZm8= 89028\nw6l0aWNh 89029\nIiIiLg== 89030\nLm5ld0FycmF5TGlzdA== 89031\nIGtyb24= 89032\nIEJMTA== 89033\nY2xpbmU= 89034\nX2di 89035\nIFRvbWFz 89036\ncHJvYmFudGU= 89037\nSVRJT05BTA== 89038\n4buRaQ== 89039\nIExvZA== 89040\nSXNu 89041\nLHsK 89042\nIGtvbW11bg== 89043\nd2R4 89044\nZ2Vub21l 89045\n6YCj 89046\ndG9IYXZlTGVuZ3Ro 89047\nJ0U= 89048\nIHDDumJsaWNh 89049\nIERldGVjdGVk 89050\nIF8KCg== 89051\n0YzRjg== 89052\nK1M= 89053\nY2xvdGg= 89054\nUm90b3I= 89055\nLm51bWVybw== 89056\nX3N0YW5k 89057\nR0ND 89058\n6rU= 89059\nX3Zw 89060\nX0ZBUg== 89061\nQWhlYWQ= 89062\ne31c 89063\nKGNvcnJlY3Q= 89064\nImNyeXB0bw== 89065\nbW9kdWxv 89066\nX1VUSUxT 89067\nLlZhcg== 89068\nLW1lbg== 89069\nIHZlbmlhbQ== 89070\nIE1jQ29ybQ== 89071\nZ2V0TG9jYXRpb24= 89072\nW2NvZGU= 89073\nJWY= 89074\nIGRpZmZlcmVk 89075\nSVBBZGRyZXNz 89076\nIFN0cmF3YmVycnk= 89077\nIFNhaGFyYQ== 89078\nY3JlYXRlQ2xhc3M= 89079\nIS8= 89080\nIG1lbWJlcnNoaXBz 89081\nIHByb25vdW5jZQ== 89082\nLkNvbnN0cmFpbnQ= 89083\nIEVucm9sbG1lbnQ= 89084\nIHJlbmV3YWJsZXM= 89085\nLmd0 89086\naXp6aWU= 89087\ncnp5 89088\nZXJzZW4= 89089\nPD0k 89090\nREVMQVk= 89091\nIHNpZ25pbg== 89092\nIFBTVQ== 89093\nQXBwTmFtZQ== 89094\nfVwuWw== 89095\nRUdB 89096\nIGNpZW50 89097\nIFN5bm9wc2lz 89098\nIGxldHRlclNwYWNpbmc= 89099\nIGNoaWxkcw== 89100\nIFNjYWxpbmc= 89101\nKXByZXBhcmU= 89102\nIGNvbW11dGVy 89103\nU2xhc2g= 89104\nb3VzZXI= 89105\nIHdhdGVybWFyaw== 89106\nIFVJU2NyZWVu 89107\nb2xpYW4= 89108\nCXZlcnRpY2Vz 89109\nPkFjdGlvbg== 89110\nIGFwaA== 89111\naGFuZHM= 89112\nIE9DQw== 89113\nSFU= 89114\nIHNlY2x1ZGVk 89115\nIHZpc2NlcmFs 89116\nIHZpZGVvZw== 89117\nIFNhbXVyYWk= 89118\nIFp1aw== 89119\nIFdpZG93 89120\nYWNjaW5l 89121\nIGxpbGxl 89122\nIFJ5ZGVy 89123\nIFByb2dyYW1tZXI= 89124\nRXhwb3J0ZXI= 89125\nIG1vdmltaWVudG8= 89126\nYXBhcw== 89127\nIGxlaWRlcg== 89128\ndWxhcmVz 89129\naWVtZQ== 89130\nLWRlbnNpdHk= 89131\nZGVzY2VuZGluZw== 89132\nKElU 89133\nIHNjcmFwZXI= 89134\nIGljZWJlcmc= 89135\nX0NSSVRJQ0FM 89136\nIGF1dGU= 89137\nX1N0eWxl 89138\nIE1BTA== 89139\nIEhlY3Rvcg== 89140\nLUNocmlzdGlhbg== 89141\nIGRpZmZlcmVudGlhdGVk 89142\nIEJpc29u 89143\nICAgICAgIAk= 89144\nLnBvcHVsYXRpb24= 89145\nUmlv 89146\nLVRy 89147\nPVZhbHVl 89148\nIEx1ZnQ= 89149\nIEdpdWxpYW5p 89150\n55yf 89151\nQ291cG9u 89152\nIGhhY2llbmRv 89153\n44Od 89154\ncG9uY2U= 89155\nX3Jlc2lkdWFs 89156\nIGxp4buHdQ== 89157\nXHVmZg== 89158\n0L7QsdGF0L7QtNC40Lw= 89159\nIHJlc3BlY3Rv 89160\nIERlc2lyZWQ= 89161\nRGF0YVN0cmVhbQ== 89162\nLnNheA== 89163\nIG1vcA== 89164\nIEhhY2tlcg== 89165\nQU5UQQ== 89166\nQW5j 89167\nVmVudGE= 89168\nIFdvcmRwcmVzcw== 89169\nCWVmZmVjdA== 89170\nYWRhcHQ= 89171\nIEludGVydmlld3M= 89172\nIGRyYXdiYWNrcw== 89173\nQUxMRU5H 89174\nIGfDqW7DqXJhbA== 89175\nLWJhZGdl 89176\nUmVzaXN0YW5jZQ== 89177\nIE9TSQ== 89178\ndG91cm5hbWVudA== 89179\nIFJlcHV0YXRpb24= 89180\nIEVpc2VuaG93ZXI= 89181\nRmlsZWQ= 89182\nIGhlYnQ= 89183\nI1w= 89184\nY3JlYXRlUXVlcnlCdWlsZGVy 89185\n5pyJ5pWI 89186\ndmFuY2Vk 89187\nLkhhc0tleQ== 89188\nZGRl 89189\nKHN0YXJ0VGltZQ== 89190\nIEluc3RhbGxlcg== 89191\nIEltcGw= 89192\nY29hY2g= 89193\nIHByZWFjaGVk 89194\nIGJyZXdlZA== 89195\nSW5zdGFsbGVy 89196\nb2x2YWJsZQ== 89197\nIGFsYXM= 89198\nKHNwZWxs 89199\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 89200\nIGRlZmFtYXRpb24= 89201\nKEFyZw== 89202\nIHVzZXJEZXRhaWxz 89203\nIGxpY2Vuc29ycw== 89204\nIEludmVzdGlnYXRpb25z 89205\nIGRpbmVy 89206\nIGZpY3Q= 89207\nU3RpY2s= 89208\nTmVpZ2hib3I= 89209\ndG9UaHJvdw== 89210\nLXNlY3Rvcg== 89211\nIHJpc3VsdA== 89212\n4oCZOg== 89213\nSk5JRW52 89214\neXBpY2Fs 89215\nZGVzaWduYXRpb24= 89216\nKHdw 89217\nIGNvbmZpcm1QYXNzd29yZA== 89218\nLWlvcw== 89219\nICItIjsK 89220\nCWFzc2VydE5vdE51bGw= 89221\nYWRkRXJyb3I= 89222\nYXZyYXM= 89223\nVm0= 89224\nKGpRdWVyeQ== 89225\nIFZpY3RpbXM= 89226\nIHJlbGlhbnQ= 89227\nIEJsaXR6 89228\nIG91dGFnZQ== 89229\nIGZsdW9yaWRl 89230\nIFROVA== 89231\nLkRpc2NsYWltZXI= 89232\nIFNOTVA= 89233\ndmFibHk= 89234\nIHBob3RvbnM= 89235\nLlJlYWRBc1N0cmluZ0FzeW5j 89236\nU2NoZWR1bGVk 89237\nIGpld2lzaA== 89238\nIEdlb2ZmcmV5 89239\nIEdyYW5ueQ== 89240\nfgo= 89241\nLW1lc3NhZ2Vz 89242\nKGdvYWw= 89243\nIGFyZ2VudA== 89244\nIFBlc3Q= 89245\nIGNvbmdyYXR1bGF0ZQ== 89246\naW5vc2F1cg== 89247\nIHdoaXNwZXJz 89248\nIHNpc3RlbWFz 89249\nIEbDqQ== 89250\nL0luZGV4 89251\nLk1JTExJU0VDT05EUw== 89252\nIGFjaGlldmFibGU= 89253\nIEJyaXR0YW55 89254\nKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKys= 89255\nIFJldHVyblR5cGU= 89256\nIGluZml4 89257\nLmlzU3VjY2Vzcw== 89258\nLkNhdGVnb3JpZXM= 89259\nIG91dGxpZXI= 89260\nLkFzc2V0 89261\nb3RlYw== 89262\nIHdpemFyZHM= 89263\nIGJvb3Rsb2FkZXI= 89264\nX2Jlcg== 89265\nIHJlaGFiaWxpdA== 89266\nYW50b3I= 89267\nIFZpdm8= 89268\nIEdhcm1pbg== 89269\nb2JqZWN0SWQ= 89270\nQFBhdGg= 89271\nIMO6bmljYQ== 89272\nIFlvcmtlcnM= 89273\nR3VpZElk 89274\nJGVycm9ycw== 89275\nICs9Cg== 89276\nIGF4aW9t 89277\nIFBTSQ== 89278\nIFN1Y2M= 89279\nIFNwb2thbmU= 89280\nICciLiRf 89281\nIExO 89282\nLm5ld0xpbmU= 89283\nIGludGVyc2VjdHM= 89284\nbGljaGtlaXQ= 89285\nIElBTQ== 89286\nLkRyb3BEb3duSXRlbXM= 89287\nIGNvdXJ0ZW91cw== 89288\nIFNtaXRoc29uaWFu 89289\nIEhtbQ== 89290\nUURlYnVn 89291\nc3RyYWlnaHQ= 89292\nX3NvbGQ= 89293\nQnVsaw== 89294\nVHJpU3RhdGU= 89295\nIGFkZEJ1dHRvbg== 89296\nIEhpcmluZw== 89297\nVHJhbnNwb3Nl 89298\nIFVJVGV4dFZpZXc= 89299\naXN0ZW5jaWE= 89300\nL2NwcA== 89301\nINC/0L7Qu9GP 89302\nIENvb2tib29r 89303\nL0FwcGxpY2F0aW9u 89304\nZ2VuaWM= 89305\nIFdvb0NvbW1lcmNl 89306\nLHZlY3Rvcg== 89307\nIEJpdGU= 89308\nLmh3 89309\nIGRvY2tpbmc= 89310\nIFRhbnRyYQ== 89311\nIFNWQw== 89312\nIE1hdXJpdA== 89313\naWFsaWFz 89314\nIEF1cmU= 89315\nIGJvbHM= 89316\nTE9DSVRZ 89317\nIFdlc3Ricm9vaw== 89318\nIEJQTQ== 89319\nIEZleQ== 89320\nIFNvdmVyZQ== 89321\nIHBhbmRh 89322\nIHF1aXp6ZXM= 89323\nIGNyZW8= 89324\nc3BlZWNo 89325\nL2Rpcg== 89326\nINC40YHQv9C+0LvRjNC30L7Qsg== 89327\nIGZvdW5kYXRpb25hbA== 89328\nLWFwcGVuZA== 89329\nblRoZQ== 89330\nIGFwaVVybA== 89331\nLlhQQVRI 89332\nIExpbmd1 89333\nIEV4aGF1c3Q= 89334\nUGFraXN0YW4= 89335\nIG9tYXA= 89336\nIGZvbnRTdHlsZQ== 89337\n0LXRgdGC0Lg= 89338\nIG1hbnNsYXVnaHRlcg== 89339\nX0xvbmc= 89340\nIGNhcnBldHM= 89341\nQ2hlc3M= 89342\nZWxpZ2h0 89343\nRHJhd2VyVG9nZ2xl 89344\nIFBhdHR5 89345\nX2Nyb3NzZW50cm9weQ== 89346\nIHR3ZWFraW5n 89347\n0YLRgw== 89348\nIENBTEM= 89349\nc2lw 89350\nIEpNUA== 89351\nX19fX19fX19fX19fX19fX18KCg== 89352\nVHJlZVZpZXc= 89353\nLXdhdmU= 89354\nIHBhc3R1cmU= 89355\nZWxpbWluYXI= 89356\nIGVyeQ== 89357\nIHJlc3RsZXNz 89358\n6rWs 89359\nIG1hcmlhZ2U= 89360\nIEVsbGll 89361\nXz0n 89362\nIHZtaW4= 89363\nS2ljaw== 89364\nLnRvb2xib3g= 89365\nIE1hcmlubw== 89366\neXBzeQ== 89367\nc3RkYXJn 89368\ncHRyZGlmZg== 89369\nIFBlYWtz 89370\nX1ZhbA== 89371\nIGluZ2VzdA== 89372\nIGNvbXBz 89373\nRGViZQ== 89374\nIERlY2xhcmF0aW9ucw== 89375\naXJjb24= 89376\nPWFsbA== 89377\nLkRlYnVnZg== 89378\nUHJlZGljdGlvbg== 89379\nIGRhdQ== 89380\nKE1lbWJlcg== 89381\nIGNoaWVmbHk= 89382\nL2FuaW1hdGU= 89383\nLkF0dGFjaA== 89384\nIGdhc3RyaWM= 89385\nIFVzZXJEZXRhaWxz 89386\nw7ZyZW4= 89387\na29h 89388\nLWJvb3Q= 89389\nIHNwbGljZQ== 89390\nbGVh 89391\nb3Rp 89392\nW29w 89393\nU3F1YXJlZA== 89394\nIHNjcm9sbFRv 89395\nIE5ld2ZvdW5kbGFuZA== 89396\nCUVSUk9S 89397\nV2Fs 89398\nRU1BTEU= 89399\nR2V0WQ== 89400\nIGNhYmlucw== 89401\nIGFic2w= 89402\nLm1peGVy 89403\nIGNkcg== 89404\nY29uY2VydA== 89405\nIFN5bHZpYQ== 89406\nQks= 89407\n5LuK5bm0 89408\nX0NMQU1Q 89409\n0YHRgtGA0YPQutGC0L7RgA== 89410\nL2dhbWVz 89411\nxZN1cg== 89412\nPGxvY2F0aW9u 89413\nIGNsb3NlQnV0dG9u 89414\nIEhhaXJzdA== 89415\n4bqhbw== 89416\nIGNydW1ibGluZw== 89417\nIHN1bGZhdGU= 89418\nIGFsZ3VpZW4= 89419\nIEpEQkM= 89420\nIEt2 89421\nUElQ 89422\nX3N1cmY= 89423\nIHXFvHl0aw== 89424\nIG1hbm5lZA== 89425\nIE9jY2FzaW9uYWxseQ== 89426\nb2Jqcw== 89427\nTWluaW1hbA== 89428\nLWRlc3M= 89429\nIFdBVg== 89430\nIEVycm9ySGFuZGxlcg== 89431\nIHNldExvY2F0aW9u 89432\nIGlldHM= 89433\nIHN1YnJvdXRpbmU= 89434\nIHRvbmd1ZXM= 89435\nX3F1aXo= 89436\nTWlsbGVy 89437\nIEJhc2VUeXBl 89438\nIFZ1ZXg= 89439\naXJhdGU= 89440\nU2VyaW91c2x5 89441\ndHlwZWlk 89442\nIGt1dGpl 89443\nIHByZXNjcmliaW5n 89444\nX3N1cnZleQ== 89445\nLkN0 89446\nIGJsaW5kbHk= 89447\nLmdldExhYmVs 89448\nLCIpOwo= 89449\nIHBvdHJ6ZQ== 89450\nIFN3b3Jkcw== 89451\nU29ydGFibGU= 89452\nIEJsYWNrYnVybg== 89453\nIE1hdGE= 89454\nIHBvbmRz 89455\nIHByb3Rlc3RvcnM= 89456\nIEVuc2VtYmxl 89457\nOmZvY3Vz 89458\nIGl0YWxpYW5h 89459\nIGRvcm1hbnQ= 89460\nIE5lbA== 89461\nSU5DTFVERQ== 89462\nKENvbnY= 89463\nIGJ1Zmxlbg== 89464\nIENETg== 89465\nLnhodG1s 89466\nSGRy 89467\nIGNhcmNpbm9tYQ== 89468\nIFdvcmNlc3Rlcg== 89469\nbmRs 89470\ndXNlUmFs 89471\ndXNlUmFsYXRpdmU= 89472\ndXNlUmFsYXRpdmVJbWFnZVBhdGg= 89473\nIHRha2Vhd2F5 89474\nZWxlbWVudEd1aWRJZA== 89475\nLmxhYmVsWA== 89476\nW0lE 89477\nQUxFUg== 89478\nCXV2 89479\nPigpLT4= 89480\nL2xp 89481\nK2xlbg== 89482\nIHByb3BlbA== 89483\nIGNhYm8= 89484\nXCIiKTsK 89485\nIHZvY2F0aW9uYWw= 89486\nLXBpbGw= 89487\nLm5sbQ== 89488\nIGVyb3RpY2E= 89489\nb3BvdA== 89490\nbGFuZHNjYXBl 89491\naW5zaw== 89492\nIHBsYWNlbWVudHM= 89493\nLnNldEF1dG8= 89494\nIGhvbWljaWRlcw== 89495\nX0ZpZWxkT2Zmc2V0VGFibGU= 89496\nOmw= 89497\nIGFubm90YXRl 89498\nLXJpc2U= 89499\nLGFscGhh 89500\nIGludGVydmVuaW5n 89501\nYW1iaQ== 89502\nLj0nPA== 89503\nIHBhcmxlcg== 89504\n772l772l 89505\nIGNvbXBseWluZw== 89506\nLWhhbmRsZQ== 89507\nIGludGVycnVwdGlvbnM= 89508\ncGxlcnM= 89509\ncm91cHM= 89510\nX0RlZg== 89511\nIHBpY2tlclZpZXc= 89512\nIHBpZXJjZWQ= 89513\nIGVyYWRpY2F0ZQ== 89514\nbW9ieA== 89515\nW3RyYWlu 89516\nRGVmZXJyZWQ= 89517\nIHRvdGFsZWQ= 89518\nQ2hpbGRJbmRleA== 89519\nIFJlY29tbWVuZGF0aW9ucw== 89520\nX1dPUkRT 89521\nIHNpZ25pZnk= 89522\nIEFlcm8= 89523\nX2Jvb3RzdHJhcA== 89524\nX1Vw 89525\ncHJvZHVjdE5hbWU= 89526\nLWFueQ== 89527\nIHBwbA== 89528\nX1BVVA== 89529\nIGx5b24= 89530\nX0lMaXN0 89531\nIMOpY3JpdA== 89532\nKGd1aWQ= 89533\nIGNvbnRhZ2lvdXM= 89534\nX1NlbGVjdGlvbg== 89535\nL2xhbmd1YWdl 89536\ncXVhbg== 89537\nIGFjdXB1bmN0dXJl 89538\nIG9mcmVjZQ== 89539\nCVJURQ== 89540\nLkd1bmE= 89541\nIHNlbnNlZA== 89542\nIEtyYWs= 89543\nIHVubHVja3k= 89544\nYXZpYw== 89545\ndGl0bGVMYWJlbA== 89546\nIGhheXN0YWNr 89547\nLmJpdG1hcA== 89548\nIENvdW5zZWxpbmc= 89549\nUExBVEZPUk0= 89550\nX1Rvb2w= 89551\nVGFt 89552\nV2VyZQ== 89553\n0YDQsNC3 89554\nX1NQRQ== 89555\nIG9uQW5pbWF0aW9u 89556\nPTw/PSQ= 89557\nIFNsZQ== 89558\nIEd1aW5uZXNz 89559\nIHR3ZWFrZWQ= 89560\nLXByZXNzdXJl 89561\nX21vbnRocw== 89562\nKW8= 89563\nUHJvYmFiaWxpdHk= 89564\nIENhbXBvcw== 89565\nLkNPTkZJRw== 89566\nVmludGFnZQ== 89567\nPndpbmRvdw== 89568\nIEZhY3RvcnlCb3Q= 89569\ncG9zdGdyZXNxbA== 89570\nIHRhYmxldG9w 89571\nIENhdGE= 89572\naG9j 89573\nX2FzYw== 89574\n4oKs4oCc 89575\nQmFja1N0YWNr 89576\nw6lv 89577\nIFNvdXM= 89578\nc2V0dGVy 89579\nJyldKQo= 89580\ndmVsbGU= 89581\nIEFsdW1pbml1bQ== 89582\neEJB 89583\nLm1vbmdv 89584\nIFZhcmlhdGlvbg== 89585\neXR1dA== 89586\nbmVobWVy 89587\n4buDbQ== 89588\nIGVmZmVjdGVk 89589\nICoqLw0K 89590\nIHJlY291bnRlZA== 89591\nUHJhY3RpY2U= 89592\nQ0FOQ0VM 89593\nY3puaWU= 89594\nTGFycnk= 89595\nIHFh 89596\nIEh1ZmZtYW4= 89597\nZ2V0RHJhd2FibGU= 89598\nIGVuZnJlbnQ= 89599\nIG9uQ2FuY2VsbGVk 89600\nIGxlbw== 89601\nIFhTUw== 89602\nIEh1cnJpY2FuZXM= 89603\nIGpvbg== 89604\nIFRlc3RlZA== 89605\nIE1vcmFs 89606\nIGJlZHRpbWU= 89607\nIEpBRFg= 89608\nIGVjaGFuZw== 89609\nIG51ZXN0cmFz 89610\nUENN 89611\nKS4u 89612\nIOyImOyglQ== 89613\nIGJvcmRlcmxpbmU= 89614\nIGFzc2lzdGly 89615\nIEhlbHBz 89616\nIERpdmU= 89617\nX3NuZA== 89618\nd2l0 89619\nX2JsZW5k 89620\nIGlzRmlyc3Q= 89621\nIGhlYXBx 89622\nKCc9 89623\nIGFzc2VtYmxlcg== 89624\nIE15c3RpYw== 89625\nb3JnaA== 89626\nIGhpam9z 89627\nX0tIUg== 89628\nKGRlY29kZWQ= 89629\nIFFVSQ== 89630\nINeR 89631\nIGNvbnRyb2xJZA== 89632\nU3BhY2Vy 89633\nLmFnZ3JlZ2F0ZQ== 89634\nIHNoYWx0 89635\nX3RyYXA= 89636\nIEZhbWlsaWU= 89637\nzrg= 89638\nb3J0YQ== 89639\nLlBvc3RNYXBwaW5n 89640\n7LA= 89641\nICcuLics 89642\nesOh 89643\nL2FybQ== 89644\nLmdhbGxlcnk= 89645\nIGltcGVjY2FibGU= 89646\nIHdpbmRvd0hlaWdodA== 89647\nc2xhY2s= 89648\nZmZi 89649\nX3Fw 89650\nbGFkZW4= 89651\nIFRFUk0= 89652\nc2V0TGFiZWw= 89653\nIFNpbmdsZUNoaWxkU2Nyb2xsVmlldw== 89654\necO8aw== 89655\nIHB1bHVtaQ== 89656\nLWdhcA== 89657\ndW5pYWNpZA== 89658\nCWhvbGRlcg== 89659\nLmFkZEZpZWxk 89660\nIHRyaXBsZXM= 89661\nIEp1ZGdtZW50 89662\nIENlbmE= 89663\ncGFyc2Vycw== 89664\nLmRyYXdUZXh0 89665\nINC60LDQttC0 89666\nIGFjY3Q= 89667\naGl2ZQ== 89668\nIG11c2lxdWU= 89669\nIFlheg== 89670\nLXBvc3Rz 89671\nIGZpbHM= 89672\nIC8vew0K 89673\nX3B1dHM= 89674\nIFN0YXR1ZQ== 89675\nZGlhbW9uZA== 89676\nU3RvcmFnZVN5bmM= 89677\nIHNodXRz 89678\nIGdldHRpbWVvZmRheQ== 89679\nIEFBQkI= 89680\naWNoZXJu 89681\nZ2V0TG9jYWxl 89682\naW50cmVl 89683\nIGZydWl0ZnVs 89684\nQmVhcg== 89685\nIHBsdW1iZXI= 89686\ncWlk 89687\nQ0hJUA== 89688\nIG1vdGl2YXRpbmc= 89689\nIGVzY2FsYXRl 89690\nLmJ1bGs= 89691\nIFBsYXlncm91bmQ= 89692\nX21pcnJvcg== 89693\nIFBlZWw= 89694\nIGRhbmU= 89695\naW52b2ljZXM= 89696\nSGFzQmVlblNldA== 89697\nLXZlcnRpY2Fs 89698\nIEZyYW5jZXNjbw== 89699\nIEFTQQ== 89700\nINC60L7Qu9C40YfQtdGB0YLQstC+ 89701\nw6Bu 89702\nRm91cnRo 89703\nIENyZWF0ZVRhYmxl 89704\nY2N0b3I= 89705\nIGZyYW50aWM= 89706\nYWFi 89707\nIEthcmFjaGk= 89708\nX2ltYWc= 89709\nIG5hdHV1cg== 89710\nRWF0 89711\nIHN0dW1w 89712\nIHJvbGxlcnM= 89713\nIHRyYWl0ZW1lbnQ= 89714\nINC/0YDQvtC0 89715\nIHJlYWxpc3RpY2FsbHk= 89716\nIGVQdWI= 89717\nIFphZw== 89718\nZGFtbg== 89719\nIEFubmV4 89720\ncGVjaWVz 89721\nKGV4aXQ= 89722\nIHNwZWN0YXRvcg== 89723\nIEJ1bGdhcmlhbg== 89724\nIG1lZ2V0 89725\nIG1hdHVyZXM= 89726\nIGRldGVjdGlvbnM= 89727\nIHphaGw= 89728\nZW5lZml0 89729\nYWtvdg== 89730\nIGFkdWx0b3M= 89731\nbWlkZGxld2FyZXM= 89732\naXNPYmplY3Q= 89733\nS2Vubg== 89734\nIHVuZXRoaWNhbA== 89735\nc3VibmV0 89736\nR3JhcGhRTA== 89737\nIEdhZWw= 89738\nLkRyb3BvdXQ= 89739\nIGJ1cmVhdWNyYXRz 89740\nIFJlZGVtcHRpb24= 89741\nLkR0bw== 89742\nLkV2YWx1YXRl 89743\nIG9nZ2k= 89744\nIHRyYXRhbWllbnRv 89745\nIHJlY2FsbGluZw== 89746\naXN0aW5ndWlzaA== 89747\nL3JlbGVhc2U= 89748\nX1dST05MWQ== 89749\nCW1rZGly 89750\nVHlwZUVudW0= 89751\nIERBUks= 89752\n5rWB 89753\nIFZhcG9y 89754\nIGF0b2w= 89755\nCWluc3Q= 89756\nLmApOwo= 89757\nL2Vs 89758\nIHJlY2xhaW1lZA== 89759\nw59lcmRlbQ== 89760\nX2xvc3Q= 89761\nIEFsYQ== 89762\nINC+0YjQuNCx 89763\nIEJhcnRo 89764\nQ29sb24= 89765\nb3Bvcg== 89766\nX3Bhc3N3ZA== 89767\nX2V4Y2x1ZGU= 89768\nQVBB 89769\nZmxvd2Vycw== 89770\nIEVib29r 89771\nIFNUQQ== 89772\nVU5T 89773\nX0RJU1BBVENI 89774\nQUNJw5NO 89775\ndGVybWluYXRpb24= 89776\nIG5lc3RsZWQ= 89777\nYWRyYXRpYw== 89778\nUm93QW5pbWF0aW9u 89779\nX2tt 89780\nIHJvbmQ= 89781\nXV0+PC8= 89782\n5L2Z 89783\nIGNvc3BsYXk= 89784\nIG1pbGxlbm5pdW0= 89785\nX3NlcmlhbGl6ZQ== 89786\nIHZlcnNjaGllZGVuZW4= 89787\nYW50dA== 89788\nIEFtaWQ= 89789\nY3JldGlvbg== 89790\nKT8k 89791\nIHRvd2luZw== 89792\nLmZpbA== 89793\nLkZpbGVXcml0ZXI= 89794\nIGFpcw== 89795\nIGVTcG9ydHM= 89796\ncHJ0 89797\nSVBB 89798\nLkZBTFNF 89799\nIHByaWNr 89800\nRW5kaW5n 89801\nIHByw6lzaWRlbnQ= 89802\nX2dseXBo 89803\nIHN1cHBsZW1lbnRlZA== 89804\nIGNvbnRhcg== 89805\nIi4kXw== 89806\nIEJ1eWVycw== 89807\ndWph 89808\nIFRpbWVab25l 89809\nZW5uZW50 89810\nSW5Qcm9ncmVzcw== 89811\nIFN1c3RhaW5hYmlsaXR5 89812\nIFByb3NwZXI= 89813\nQ29udG91cnM= 89814\nIHN0YXJ0bGVk 89815\nX2xlYXN0 89816\nIENvdmVudA== 89817\nY2huaXR0 89818\nIE1pbGt5 89819\nICItPg== 89820\nZXRhaw== 89821\nIHR1c3Nlbg== 89822\nLXBheWluZw== 89823\nX2FjY2Vzc2libGU= 89824\nQmF0bWFu 89825\nKGl0cg== 89826\nSUFMSVpFRA== 89827\nIFRleHRBcmVh 89828\nYW5rZQ== 89829\nX0pVTVA= 89830\nIGJlaGF2ZWQ= 89831\nLG9wdGlvbnM= 89832\neGl2 89833\nLlBMTA== 89834\ncXg= 89835\nLm9uTmV4dA== 89836\nIHZlcmlmaWVy 89837\nIGR1xbw= 89838\nIEZ1a3VzaGltYQ== 89839\nIENPUlBPUkFUSU9O 89840\nX3RE 89841\nIE1lYWRvdw== 89842\nIHByb3llY3Rvcw== 89843\nICgnXA== 89844\nIEJhcmNsYXlz 89845\nIGxlZ2FsaXR5 89846\nIGhhbWJ1cmdlcg== 89847\nIGVpbnM= 89848\nSW5kaWFuYQ== 89849\nIFRLZXk= 89850\nY2xvYWs= 89851\nPGFsZ29yaXRobQ== 89852\nIHByZWFjaGVy 89853\ne2xuZw== 89854\nLmFydGljbGVz 89855\nc2V0SW1hZ2U= 89856\nUmVuYW1l 89857\nIGJsb3Nzb20= 89858\nIEJsb3Nz 89859\nIHV1cg== 89860\nIGRhZHM= 89861\nIFRpdGFuaWM= 89862\nICAgICAgICANCg0K 89863\nIG9yZGluYW5jZXM= 89864\nIG3DpG5u 89865\nIGVyaw== 89866\nIGRpc3RpbGxlZA== 89867\nIMOkbA== 89868\nIHJ1cHR1cmU= 89869\nIENhbWVyYXM= 89870\nw7luZw== 89871\nIGhhaXJzdHlsZXM= 89872\nIGVtYnJ5b3M= 89873\n4oCdCg== 89874\nLk5hdg== 89875\nIHN0cm0= 89876\nCXVzYWdl 89877\nLkFJ 89878\nIFRPVUNI 89879\nIElsbGVnYWxBY2Nlc3NFeGNlcHRpb24= 89880\n6rKw 89881\na29uZWtzaQ== 89882\nISIp 89883\nIGVzY2Fw 89884\ndWRpb3M= 89885\nc3RhcnR0aW1l 89886\nIG1laW5lbQ== 89887\nIFNwaXJhbA== 89888\nIEVyZWN0aWxl 89889\naXZhbGVuY2U= 89890\nIGl0ZW1UeXBl 89891\nIGFiYWl4bw== 89892\nVmVydHM= 89893\ndGFraW5n 89894\ncHN0 89895\nIE9zY2Fycw== 89896\nIER4 89897\nZXR0eQ== 89898\nTUFM 89899\nIE5lZWRsZQ== 89900\nIENPTVBVVEVS 89901\n5Lu75Yqh 89902\nIG5ld1g= 89903\nICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAK 89904\ncGxldmVs 89905\nQUNFTUVOVA== 89906\nIEpvaGFu 89907\nUG9pbnRG 89908\nIHJlc3Ryb29t 89909\ndmVybw== 89910\nIGVsxZE= 89911\ncHJvZHVr 89912\nIFlFQVJT 89913\nCWFjdHVhbA== 89914\nVVBMRQ== 89915\nQ29udmVydGlibGU= 89916\nIHBvcnJm 89917\nSW5qZWN0ZWQ= 89918\nX2JvdGg= 89919\nL0dhdGU= 89920\nY2FsY3VsYXRvcg== 89921\nZW1haWxlcg== 89922\nLlBvZA== 89923\nIFpvdA== 89924\nX3NtYXJ0 89925\nYmFzaXM= 89926\nPENvbG9y 89927\nIGNyYXZpbmdz 89928\nRHJpdmVycw== 89929\nKGNvcw== 89930\nZGF0YWJsZQ== 89931\nLW1ldGFs 89932\nIFBj 89933\nLmNvcHlPZg== 89934\nIG9yaWVudGF0aW9ucw== 89935\nCWFzdA== 89936\nIFpvbWJpZXM= 89937\nIGJvbWJlZA== 89938\nSG9zdG5hbWU= 89939\nX3JhaXNlcw== 89940\nbWVuc2FnZW0= 89941\nIGNvcnRpc29s 89942\nIEZpb25h 89943\nbGljb3M= 89944\naGVhdnk= 89945\nIOqwgOyguA== 89946\nb21lbmNs 89947\nIGN1bHR1cmVk 89948\nIGFydGlrZWw= 89949\nxaHDrQ== 89950\namRr 89951\nIHZhbmRhbGlzbQ== 89952\nIH1dKTsK 89953\nU3RyYWlnaHQ= 89954\nIHJlaGVhcnNhbA== 89955\nRWRpdGlvbg== 89956\nIEluc3Bpcg== 89957\nCXdj 89958\nIGZvcm11bGF0ZQ== 89959\nYW56ZWlnZW4= 89960\nIHBhdGhvbG9naWNhbA== 89961\nIGtlbm5lbmxlcm5lbg== 89962\nPnsi 89963\nIGRpY2Vk 89964\nIGJyYWNlbGV0cw== 89965\nCQkgICAgCg== 89966\nKj4q 89967\nL3RhcmdldA== 89968\nLkFnZW50 89969\nLm1hZ2lj 89970\nIGlkZW9sb2dpZXM= 89971\nVFJBQ0s= 89972\nX2luZGl2aWR1YWw= 89973\nPGRlY2x0eXBl 89974\nIFJFQ0VJVkU= 89975\nL2Jvb3Q= 89976\nOkB7 89977\nUU0= 89978\nIE1hbmRhbA== 89979\nTkFNRVNQQUNF 89980\nIHRlcmNlcg== 89981\nIFJlZ2dpZQ== 89982\nIE5pY2hvbHNvbg== 89983\nIEZ1bHRvbg== 89984\nc3Rha2luZw== 89985\nIHJlc29uYXRl 89986\nbHBhcnI= 89987\nIGNvbnZlcnRlcnM= 89988\nICgiLw== 89989\nIE1hcmxpbnM= 89990\nSW5mb3JtZQ== 89991\nJz0+Wyc= 89992\nIHJvYmVydA== 89993\nIEhJTQ== 89994\nd2Vicw== 89995\nLnRyYWlsaW5nQW5jaG9y 89996\nLmFzY2lp 89997\nIE1hc2M= 89998\nIHRlY2hubw== 89999\nZXR4dA== 90000\nCSAgICAgICAgCg== 90001\nzrHOuQ== 90002\nKFNlcQ== 90003\nID8+Ojwv 90004\nIFBlYg== 90005\nW3NlbGVjdGVk 90006\nSkVDVEVE 90007\nQ2FzdEV4Y2VwdGlvbg== 90008\nP2Y= 90009\nIGV5ZXdpdG5lc3M= 90010\nIG1lbm8= 90011\nIERhbWllbg== 90012\nX0lFbnVtZXJhdG9y 90013\nIC4uLi4uLi4uLi4uLi4uLi4= 90014\nLlNFTEVDVA== 90015\nIGNyYXk= 90016\nX3BhcGVy 90017\nLlJvbGxiYWNr 90018\nSURFT1M= 90019\ncnBhcnI= 90020\naW5lYXI= 90021\nX1JlbA== 90022\nIFdpbGRl 90023\nIFdvbmRlcmxhbmQ= 90024\nIFNodWZmbGU= 90025\nIHN0cmlrZW91dHM= 90026\nc2lnbW9pZA== 90027\nISgiew== 90028\nZXBhbQ== 90029\nIHJpY2huZXNz 90030\nIGVuZGVhdm91cg== 90031\nbWVudUl0ZW0= 90032\nINCf0L7Qu9GD0Yc= 90033\nIGZydXN0cmF0aW9ucw== 90034\nX3N1YnNjcmliZQ== 90035\nIGJvb3pl 90036\nIExpY2h0 90037\nIHBlYXNhbnQ= 90038\nIHdlaWdodGluZw== 90039\nIOW/ 90040\nQWN0aW9uQ29kZQ== 90041\nLnRyYWNrcw== 90042\nIMOY 90043\nIG1pbGxpb25haXJl 90044\nKHVy 90045\nJ10pCgoK 90046\nICIuJF8= 90047\nX0VERUZBVUxU 90048\nIGN1cmxz 90049\nX0NvbUNhbGxhYmxlV3JhcHBlcg== 90050\nLnNldFZpZXdwb3J0 90051\nIGRlbmQ= 90052\nIGF1dG91cg== 90053\nIEZvdXJpZXI= 90054\nIGJvaWxz 90055\nIEpQRw== 90056\nIGRpZ3M= 90057\nIGNvbXBsYWlucw== 90058\nLWxpbmVk 90059\nIEJsYWRlcw== 90060\nX2RpY3Rz 90061\nIElwcw== 90062\ncmVmZXJlcg== 90063\nIGFueWhvdw== 90064\nYW50YXI= 90065\nLXNoZWV0 90066\nCXBsYXk= 90067\naWVyY2U= 90068\nLk1lc3NhZ2luZw== 90069\n6KeB 90070\nCXByb2dyZXNz 90071\nLkRhdGFWaXN1YWxpemF0aW9u 90072\nIFN0b3Bz 90073\nSW50ZXJ2YWxTaW5jZQ== 90074\nQGJyaWVm 90075\nLndpbmQ= 90076\nIGdldElucHV0 90077\nIEtB 90078\nIFJFU1BPTlM= 90079\nIHRhcmc= 90080\ndmlzdWFsaXphdGlvbg== 90081\nIEVzcGHDsQ== 90082\nbmllcg== 90083\nIERvdmU= 90084\nX2lzcg== 90085\nIEFQUExZ 90086\nYmVkbw== 90087\nW117Cg== 90088\nIGV2YWN1YXRl 90089\nIG1pY3Jvc2NvcGlj 90090\n5q2j56Gu 90091\nZXJvdA== 90092\nLW9wZXJhdGl2ZQ== 90093\naWt1dA== 90094\nIGRibA== 90095\nIGFqb3V0 90096\nLml4 90097\nICAgICAgICAKICAgIAo= 90098\ndGVzdGU= 90099\nbml2ZWw= 90100\nLnNuYXA= 90101\ndXR6dA== 90102\nLmlzQWRtaW4= 90103\nKElD 90104\nIG9iZW4= 90105\nIEVmZmljaWVudA== 90106\nRERldmljZQ== 90107\nIGluZGVtbg== 90108\nIGZyb3pl 90109\nLHJw 90110\nIGRlY2VtYmVy 90111\n57uZ 90112\nIG1lbG9kaWVz 90113\nIEVUQQ== 90114\n44GT44KT44Gr44Gh44Gv 90115\nIHF1YWxjaGU= 90116\nIHNldERlZmF1bHRDbG9zZU9wZXJhdGlvbg== 90117\nT1JJQQ== 90118\nIHphZw== 90119\nIGFsbG93YW5jZXM= 90120\nL3Bo 90121\nLVRva2Vu 90122\nIFBvdQ== 90123\nIG1pbmlzdHJpZXM= 90124\nLkxPR0lO 90125\nIHNlYXJjaFRlcm0= 90126\nIGh1cnJpY2FuZXM= 90127\nIEZsb3Vy 90128\nIFNVUw== 90129\nVGhlbWVz 90130\ncmVlY2U= 90131\nIGVudHJldg== 90132\nRFhWRUNUT1I= 90133\nIEJyZW5kYQ== 90134\nRXJyb3JNc2c= 90135\nOildOwo= 90136\nIGRvbWluYQ== 90137\nIEludmlzaWJsZQ== 90138\nPD4oIg== 90139\ncHV0Yw== 90140\nSEFWRQ== 90141\nRXZhbHVhdG9y 90142\nbWF0Y2hpbmc= 90143\nLW5hbWVz 90144\nIGxhaA== 90145\nX1lVVg== 90146\n5pyN5Yqh5Zmo 90147\nLldSSVRF 90148\nKTpc 90149\nLWRlZmluaXRpb24= 90150\nIGNoaW1uZXk= 90151\nLmNscw== 90152\na25vd2xlZGdl 90153\nIEFsZXhhbmRyZQ== 90154\nIGNvbGVn 90155\nb8WbY2k= 90156\nLkNobw== 90157\nIHNvZnRlbmVk 90158\nIHJvdGF0ZXM= 90159\nLXN0YXRlcw== 90160\n6rc= 90161\ndmlvbGVudA== 90162\nIDopCg== 90163\nIGFjY2nDs24= 90164\nbmlrYQ== 90165\nIExhdHRlcg== 90166\nX0Zsb2F0 90167\nIGVncmVnaW91cw== 90168\nb2RpYWw= 90169\nU3lub3BzaXM= 90170\nKHhp 90171\nIH0sew== 90172\nY3h4 90173\nRW1tYQ== 90174\nIENvbmN1cnJlbnRIYXNoTWFw 90175\nX0NhbWVyYQ== 90176\nIHBlYW51dHM= 90177\n44Kz44Oh44Oz44OI 90178\nX2JlZA== 90179\nIGVycm9yQ2FsbGJhY2s= 90180\nIFBhcHVh 90181\nLFRydWU= 90182\ntpo= 90183\nIHN0YWRpdW1z 90184\nIGtub2Jz 90185\naWZpY2FjaW9uZXM= 90186\nIHB1cnBvc2VseQ== 90187\nIFB1cmVDb21wb25lbnQ= 90188\nINC60LvQuA== 90189\nLlRyYWNr 90190\nc3Nj 90191\nKEpvYg== 90192\nKEh0dHBDb250ZXh0 90193\nIGNob2lzaXI= 90194\nIOy7 90195\nIGF1c3A= 90196\ndXBwZW4= 90197\nQWR2ZW50dXJl 90198\nIEZMQUM= 90199\nIGFwcGVsbGFudA== 90200\nICgoIg== 90201\nz4c= 90202\nIHRyaWY= 90203\nIGR1cmF0aW9ucw== 90204\nIE5HWA== 90205\nLmJw 90206\nYWN0aW9uRGF0ZQ== 90207\nLmluc3RhbnQ= 90208\nLVJlcXVlc3RlZA== 90209\nJyYm 90210\nINGH0LXRgA== 90211\nPWJvb2w= 90212\nIGxvcmRz 90213\nbGljaW5n 90214\nIG1hcmlu 90215\nIGJsaW5kZWQ= 90216\nL2xheW91dHM= 90217\nZmVpdG8= 90218\naXp6bGluZw== 90219\nRXZ0 90220\nIGJ1bGxpc2g= 90221\nZXhjbHVzaXZl 90222\n4oCZZXM= 90223\nLmdldE93blByb3BlcnR5RGVzY3JpcHRvcg== 90224\nIGJhcHRpemVk 90225\nINGB0LvRg9GH 90226\nIENlY2ls 90227\nLmVmZmVjdHM= 90228\nIGNyeXB0b2dyYXBoaWM= 90229\nIFZpbGxl 90230\ndWZ0 90231\nIEFudGhlbQ== 90232\nIHNlZWtlcg== 90233\nIG5pY2tuYW1lZA== 90234\nIGNhbXBncm91bmQ= 90235\nIGFjdGlvbkJhcg== 90236\nIEVwaXNvZGVz 90237\nIC0tLS0tLS0tCg== 90238\nQnVpbGRlckZhY3Rvcnk= 90239\nX1VOU1VQUE9SVEVE 90240\nVklMTEU= 90241\nLlJlZ2lzdHJ5 90242\nVG9uaWdodA== 90243\nIG1ha3M= 90244\nIGFkZG9ucw== 90245\nIERlY3J5cHQ= 90246\nLnNraWxscw== 90247\nKGZo 90248\nIGp1Z2c= 90249\nIENvdXBsZXM= 90250\nIEFtaXI= 90251\nID09PT09PT09PT0= 90252\nIGVuZGVyZWNv 90253\nLlN0cmluZ3M= 90254\nIGhhcm1pbmc= 90255\nIGJ1c3RsaW5n 90256\nKGZpcnN0TmFtZQ== 90257\nLnNwYXJzZQ== 90258\nSVRP 90259\nICAgICAgICAgICAgICANCg== 90260\n5p2l5rqQ 90261\nb2RlZ2E= 90262\nYW5hZ2Fu 90263\nLkhhbmRsZXJGdW5j 90264\nIHRpbmRlcg== 90265\nICMo 90266\nIGltYWdpbmFibGU= 90267\nIGF1bg== 90268\nUHJlc2VuY2U= 90269\nUGFja2FnZU1hbmFnZXI= 90270\nIGx1ZGljcm91cw== 90271\nacOobWU= 90272\nIGdldE9iamVjdA== 90273\nYm94aW5n 90274\nIHNxdWlk 90275\nw6p0ZXM= 90276\nRGFlbW9u 90277\nX2xpa2Vz 90278\nhrU= 90279\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 90280\nLnd3dw== 90281\nc3NlbA== 90282\nZXRlY3Rpb25z 90283\nZGFl 90284\nL2Rvd25sb2Fkcw== 90285\nIENsYXNzaWZpZXI= 90286\nX1NVQkpFQ1Q= 90287\nemVnbw== 90288\nX0dST1VQUw== 90289\nYWN0aWNlcw== 90290\nX2xpdGU= 90291\nIGRhbm1hcms= 90292\nL2Js 90293\nYXB5cnVz 90294\nVElNRVI= 90295\nIFNjcmlwdHVyZXM= 90296\n0Y/Rgg== 90297\nc3Bh 90298\nIkc= 90299\nIHBlbmV0cmF0aW5n 90300\nIGNvbmZvcm1pdHk= 90301\nbmV3bGluZQ== 90302\nIGx5bg== 90303\nIE1NUA== 90304\nIElOVEVSRkFDRQ== 90305\nIEFjdGlvblR5cGVz 90306\nLmNyaXRlcmlh 90307\n4buRbmc= 90308\nIHJlc3RpdHV0aW9u 90309\nCUZPUg== 90310\nPHBhdGg= 90311\nPT8iOwo= 90312\nKHBlcmNlbnQ= 90313\nbmRv 90314\nIEFDTQ== 90315\nCWN0 90316\nQGE= 90317\nIHTDug== 90318\nIHNwb3R0aW5n 90319\nw7xybg== 90320\nIEdFUg== 90321\nLndyaXRlVmFsdWU= 90322\nX2Jsb2NrZWQ= 90323\nWW1k 90324\nIGluZWZm 90325\nIFJhZGlhdGlvbg== 90326\nIE9pbGVycw== 90327\nQmVlcg== 90328\ncm90cw== 90329\nIFRyb3Q= 90330\ncm5h 90331\ncG9ydGVy 90332\nZW5lcnk= 90333\nIHBvcm5vZmlsbQ== 90334\n65SU 90335\nX2Nr 90336\nLkNvbXB1dGU= 90337\nIFtdCgoK 90338\nZ2l1bQ== 90339\nIFRFTEU= 90340\nIEluc3RhbmNlcw== 90341\nKkk= 90342\nIHdpcmVUeXBl 90343\nb25pdW0= 90344\nZXNoaXJl 90345\nIHB1dGNoYXI= 90346\nIGF3YWtlbmVk 90347\nLmRlZ3JlZQ== 90348\naGVpdGVu 90349\nLWF3YWl0ZWQ= 90350\nIG5ldXJvdHJhbnM= 90351\nLXRlc3RpZA== 90352\nCgogICAgCg== 90353\nIOe7kw== 90354\nIGtpbm8= 90355\nX0RBWVM= 90356\nIFZhbGVyaWU= 90357\nbnRpdHk= 90358\nQEJlYW4= 90359\nZXRDb2Rl 90360\nPFJlbmRlcmVy 90361\nIiIK 90362\nIGJlcm4= 90363\nIHRvdGFsaXRhcmlhbg== 90364\nY2xpbmlj 90365\nIE3DvG5jaGVu 90366\nbm9pbnNwZWN0aW9u 90367\naXNjZQ== 90368\nX3R1cGxlcw== 90369\nLlBvaW50cw== 90370\nIHBhc3RvcmFs 90371\nSmFr 90372\na2VuaW5n 90373\nL2NvbHVtbg== 90374\nLXByb2R1Y2luZw== 90375\nIGFib2xpc2g= 90376\nZmVhcw== 90377\ncmVzcG9uc2VEYXRh 90378\ncmVkaXJlY3RUb1JvdXRl 90379\nIG9ic2VydmF0aW9uYWw= 90380\ncE5leHQ= 90381\nenRl 90382\nQ2hvaWNlcw== 90383\nCUxDRA== 90384\nJlM= 90385\nIGJpbGxpb25haXJlcw== 90386\nX0VPRg== 90387\nIGNvaG9ydHM= 90388\nYW5rZW4= 90389\nLmNvbWJpbmU= 90390\nKE9wdGlvbmFs 90391\nX0NPTlNPTEU= 90392\nQWN0aXZpdHlJbmRpY2F0b3JWaWV3 90393\nIHBoYXJtYWNpc3Q= 90394\nIERvdWdo 90395\nIE9wZXJhdGlvbmFs 90396\n57I= 90397\nIGphbXM= 90398\nU29sbw== 90399\nCWR1cmF0aW9u 90400\nLnJt 90401\nIFRvbmk= 90402\nLmxlYXZl 90403\nIHB1ZWRh 90404\nIEZheQ== 90405\nRGV0YWNo 90406\nLk1heGltaXplQm94 90407\nIG1hcnR5cg== 90408\nIGhhemU= 90409\nL25l 90410\nIG1hbW1h 90411\nc2VsZWN0b3JNZXRob2Q= 90412\nIHBpbGdyaW1hZ2U= 90413\nIEFzcGhhbHQ= 90414\nIHZhbGlkbw== 90415\nRW5kRWxlbWVudA== 90416\nIGxhcHNl 90417\nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K 90418\naWxvcw== 90419\nZXJuYWxz 90420\nQ29ubmVjdGlvbkZhY3Rvcnk= 90421\nIExvdmluZw== 90422\nLkNvbXBpbGU= 90423\nIGNvcms= 90424\nIEJ5ZQ== 90425\naWJOYW1lT3JOaWw= 90426\nZXN0YXI= 90427\nXEdlbmVyYXRlZFZhbHVl 90428\nKExM 90429\nIFJhaXNlUHJvcGVydHlDaGFuZ2Vk 90430\nIElyYW5pYW5z 90431\nIGdldFByaWNl 90432\nbWFyaWVz 90433\nanVtYm90cm9u 90434\nIFJlYmVscw== 90435\nRElGRg== 90436\nIE1vag== 90437\nb3J0aWM= 90438\nCWNvbnN0ZXhwcg== 90439\nbnRw 90440\nIG1hZ2ljaWFu 90441\nIHBhdHJpb3Rpc20= 90442\nLmNl 90443\nLlNpbXBsZUJ1dHRvbg== 90444\nIFBSSVY= 90445\naGlzdG9pcmU= 90446\naGlnaGVy 90447\ncmVmaXhlcg== 90448\nQ0pL 90449\nIE9zd2FsZA== 90450\nLnNwcml0ZXM= 90451\nLkls 90452\nIGFyY2FuZQ== 90453\nIENodW4= 90454\nX09m 90455\nIGV2ZXJ5dGltZQ== 90456\n0Y7RiQ== 90457\nIGxldHJhcw== 90458\naWxhbg== 90459\nYmFydQ== 90460\nLWJvdA== 90461\nIFNpZ25pZmljYW50 90462\niOyKteuLiOuLpA== 90463\n4oCM 90464\nLWlzc3Vl 90465\nIGluc2FuZWx5 90466\nYXRlZ2lj 90467\nX1ZF 90468\nOkNHUG9pbnQ= 90469\nTWFya3M= 90470\nLnByb2JsZW0= 90471\nJ10uJy8= 90472\nIHJlZHVuZGFuY3k= 90473\nIGRlY3J5cHRpb24= 90474\nSHVuZw== 90475\nLXZhbGlkYXRl 90476\nIEFuZ2Vsbw== 90477\nSk0= 90478\nIHBvcG92ZXI= 90479\nZGViaXQ= 90480\nQ29tcHV0ZWRTdHlsZQ== 90481\nKV9f 90482\nKHNpbg== 90483\nICcpLA== 90484\nKGRlZnZhcg== 90485\nw7R0ZQ== 90486\nVGhhbk9yRXF1YWxUbw== 90487\nLnpo 90488\nKE5vdGU= 90489\naWJCdW5kbGVPck5pbA== 90490\nIFNvbmlh 90491\neW1vdXM= 90492\n44CCPA== 90493\nIGZpbG15 90494\nIGVhcnRobHk= 90495\nIExlYXJuZWQ= 90496\nW3NlY3Rpb24= 90497\nLmpzb3Vw 90498\nc3RydXA= 90499\nIFBhdHJvbg== 90500\nICkq 90501\nc2V0Rm9udA== 90502\nIGhlZw== 90503\nIGRlbHRhWQ== 90504\nX1NDUg== 90505\nLmN1dA== 90506\nIHZiQ3JMZg== 90507\nLk9iamVjdE1hcHBlcg== 90508\nIHLDqXBvbnNl 90509\nWXU= 90510\nKCl7fQoK 90511\nLXBhcmFtZXRlcg== 90512\nxLFzxLE= 90513\naWF6emE= 90514\nSVpFUw== 90515\nX1NVUFBMWQ== 90516\na2l0cw== 90517\nIHJlaW5z 90518\nKGRvY3M= 90519\nJSE= 90520\nIHN5c3RlbWN0bA== 90521\nIFBzcg== 90522\nIFdlcms= 90523\nUGhpbGFkZWxwaGlh 90524\nQlJFQUs= 90525\nLmFwcGVuZFRv 90526\nKGxvbg== 90527\nQWJy 90528\nL3JlbmRlcmVy 90529\nIEVsZWFub3I= 90530\nQ0VSVA== 90531\nUGFyYW1ldGVyVmFsdWU= 90532\nJGdldA== 90533\nIOCy 90534\nIEpM 90535\nIGlnbml0ZQ== 90536\nIGLhuqFu 90537\nIENhdWw= 90538\nIGhhc3Rl 90539\nIGRvbWluZ28= 90540\nVGVzbGE= 90541\nL2NvbmZpZ3VyYXRpb24= 90542\nKGV4cGVjdA== 90543\ndXNyYQ== 90544\nIHByZWZlY3Q= 90545\nIGZyb2dz 90546\nIGFzc2lnbmFibGU= 90547\nIGludGVydmVuZWQ= 90548\nLmNob2ljZXM= 90549\nVUlTdG9yeWJvYXJkU2VndWU= 90550\nIGLDqQ== 90551\nIEzDtnM= 90552\nYWxwaGFiZXQ= 90553\nIHByZWFtYmxl 90554\nZGJh 90555\nIGVtaXR0aW5n 90556\nLm1vcmU= 90557\nIEJhc2Vs 90558\nKGRhdGVUaW1l 90559\nKCl9KTsK 90560\nIG5vZGVMaXN0 90561\nIEZQR0E= 90562\nd2Vs 90563\nIGxvZGFzaA== 90564\nX2F1dGhlbnRpY2F0aW9u 90565\nw7NyaW8= 90566\nKHJ1bnRpbWU= 90567\nX1NDRU5F 90568\nIGN1ZmZz 90569\nIEFkcmVzc2U= 90570\nOjw/ 90571\nX2NtZHM= 90572\nVMOqbg== 90573\nIGVqZWN0 90574\nCUVSUg== 90575\nPE8= 90576\nIEtyYW1lcg== 90577\n4oCmCg== 90578\nc29tZW9uZQ== 90579\nIENQTA== 90580\n77yN 90581\nbG9ja2luZw== 90582\nLkZvb3Rlcg== 90583\nIGFsbQ== 90584\nIEFkb2xm 90585\nKS4v 90586\nIE1hdHRoaWFz 90587\nICIsIgo= 90588\nZW51aXR5 90589\nIExvdmVy 90590\nIGFsaW1lbnRvcw== 90591\ncGxldHM= 90592\nw6R0emU= 90593\nKHJlY3Y= 90594\ndXJhYQ== 90595\nU1RET1VU 90596\nYW50eg== 90597\nLkZsb2F0VGVuc29y 90598\nIFJhZQ== 90599\ncGln 90600\nIHRlcnVn 90601\nIHRoZW9sb2c= 90602\nIHRheGlz 90603\nY29tcG9zaXRl 90604\nc2hlcg== 90605\nbGVEYg== 90606\nIFJhaG1lbg== 90607\nIDst 90608\nSW5kZW50ZWQ= 90609\nIHRyb2xsaW5n 90610\nRVJJQ0FO 90611\nZ2V0RW1haWw= 90612\nX0VOQ09ERQ== 90613\nZ2V0Q2VsbA== 90614\nIFdyYXRo 90615\nKHN1aXRl 90616\nbm90RW1wdHk= 90617\nLmdldFJpZ2h0 90618\nIGJyZWF0aGFibGU= 90619\n44Gf44Gg 90620\nIHNldFRpbWU= 90621\nJ29wdGlvbnM= 90622\nIHBheWxvYWRz 90623\nYXVnYQ== 90624\nZWRt 90625\nKHdlYXRoZXI= 90626\nCXNlbQ== 90627\nKGZyb250 90628\nIHBheW91dHM= 90629\nLnNldFRleHR1cmU= 90630\nLFtdLA== 90631\nIFBhY2tz 90632\nIGNhenpv 90633\nV2l0aFBhdGg= 90634\nUHJvZw== 90635\nbW1hcw== 90636\nIGtvaw== 90637\nLkNzcw== 90638\nIGRlbGE= 90639\nQXdhcmQ= 90640\nw7xsdA== 90641\nc291cA== 90642\nKFsoJw== 90643\nb2xsaXBvcA== 90644\nLFNMT1Q= 90645\nY2hpYQ== 90646\nIGJsYW5jbw== 90647\nT0xVVEU= 90648\nLXBsYW5l 90649\nLExpc3Q= 90650\neGluZw== 90651\nSU1BVEU= 90652\nLW1vcnQ= 90653\nIGdyYXZpZA== 90654\nIEhhbmdpbmc= 90655\nIHNjb2Zm 90656\nLml0ZW1JZA== 90657\nVEhFTg== 90658\naW5mZXI= 90659\nIG1pc3BsYWNlZA== 90660\nCU1vbm8= 90661\nd2F5bmU= 90662\nIGVkZ2Vk 90663\nX25pY2s= 90664\nIE1BUlQ= 90665\nCXN0YXRlbWVudA== 90666\nIEV2ZW50QnVz 90667\nPkFib3V0 90668\nIGJ1cmdlb25pbmc= 90669\nIGNpY2xv 90670\nTE9PUA== 90671\nIGRlZnk= 90672\nIGVsZW1lbnRUeXBl 90673\nIGNvbnNlcnZhdGlzbQ== 90674\nV2ViSG9zdA== 90675\nLkRpc2FibGVk 90676\nIGNsYXA= 90677\nIEFsZWtz 90678\ncm9yaW5n 90679\naXNzaW9uYWw= 90680\nLUJvbGQ= 90681\nSVJUSA== 90682\nLml0ZW1WaWV3 90683\ncWluZw== 90684\nP2tleQ== 90685\nIFZlbm9t 90686\nIGFudGlk 90687\nIEZvcm1hdHRpbmc= 90688\nUVB1c2hCdXR0b24= 90689\nIEFzc2VtYmx5VGl0bGU= 90690\nX3Jlc2VydmU= 90691\nLkRpcmVjdA== 90692\nQW5pbWU= 90693\nIG1hdGVyaWFsbHk= 90694\nIGFkanVuY3Q= 90695\nLnNldFRvb2xUaXBUZXh0 90696\nbGFzc2lhbg== 90697\nKG5y 90698\nIG5pbmfDum4= 90699\nIG1pc3VuZGVyc3RhbmQ= 90700\nIEFwcGx5aW5n 90701\nX2NvbXBhdA== 90702\nIG1peGlu 90703\nIGplb3BhcmR5 90704\n0YvQstCw0LXQvA== 90705\nIGNvY2luYQ== 90706\nX1dST05H 90707\nQVRBUg== 90708\nS0Q= 90709\nIGNhdGVnb3J5TmFtZQ== 90710\nSHR0cENvbnRleHQ= 90711\nIGJ1YmI= 90712\nIGFua2xlcw== 90713\nb3dlcmluZw== 90714\nRnJhbWV3b3Jrcw== 90715\nIHNlZ3VuZG9z 90716\nLkFzc2VtYmx5 90717\nX0VudGl0eQ== 90718\nSFE= 90719\nIGZvdXJz 90720\nIGZvcmZlaXR1cmU= 90721\ndmxhbg== 90722\nLWRvbWluYXRlZA== 90723\nLWF3YXk= 90724\nSUNJRU5U 90725\nLlJlYWRCeXRl 90726\nYW1heA== 90727\nLj0iPA== 90728\nX3Nwcml0ZXM= 90729\nIFJlbWFpbmluZw== 90730\nTE9PRA== 90731\nX3JlcXVpcmVtZW50cw== 90732\nJ2FydGljbGU= 90733\nIFBvbXBlbw== 90734\nIHTDqXI= 90735\nIERyb3Bz 90736\nSG9tZUFz 90737\nSG9tZUFzVXA= 90738\nw7ph 90739\nLm5hc2E= 90740\nX2Jpbw== 90741\nIFlvc2hp 90742\nRWxlY3Ryb25pYw== 90743\nIGpvc2U= 90744\nIGludGVsaWc= 90745\nID8+Pjw/ 90746\nPnshIQ== 90747\nX3Byb3Y= 90748\nPURC 90749\nPCEtLQo= 90750\nLWZsb2F0aW5n 90751\neXVt 90752\nLkpNZW51SXRlbQ== 90753\nIE5hdGlvbndpZGU= 90754\nSW1wb3NzaWJsZQ== 90755\n6K+m5oOF 90756\nSmVycnk= 90757\nIGRlc2Nhcmdhcg== 90758\n7JW8 90759\nRGVjcnlwdA== 90760\nIHRlbXBlcmVk 90761\nIGVrcw== 90762\nw61jaWE= 90763\nLmxhcmdl 90764\nIHVuZm9sZHM= 90765\nIGh2ZXI= 90766\nIEFWTA== 90767\nLnR0 90768\n4oKA 90769\nPSUu 90770\nIHRvcHBpbmdz 90771\nIHN0b3V0 90772\nIHNlbWluYWw= 90773\neGVz 90774\nIE9VVEVS 90775\nYWRybw== 90776\nIHlvaw== 90777\nIERlcmU= 90778\nCWZyZW9wZW4= 90779\nX2xuZw== 90780\nQ2h1bmtz 90781\nLmdldE9yRWxzZQ== 90782\nKGVsbQ== 90783\nICgpKTsKCg== 90784\nQ2VsZWJy 90785\nX2NhcGFiaWxpdHk= 90786\nIHNvY2llZGFk 90787\nIGludGltaWRhdGU= 90788\nIEJsYXplcnM= 90789\naWd0aA== 90790\nZW5kY29kZQ== 90791\nVUlMREVS 90792\nIEhhbm5pdHk= 90793\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 90794\nINC40YHQv9C+0LvRjNC3 90795\nIFRvb2s= 90796\nIE1vdmVk 90797\nIHByb250bw== 90798\nIE1hcnRpbnM= 90799\nRGF0YUV4Y2hhbmdl 90800\nLlBvb2w= 90801\nZXVz 90802\nIGpvYklk 90803\nIEF4ZXM= 90804\nIGhhbXN0cmluZw== 90805\nLnJtaQ== 90806\nRGF0YVRhc2s= 90807\nIE1hZ2ljTW9jaw== 90808\nIEdBUw== 90809\nIE5hdw== 90810\nIHNuZWw= 90811\nX3NjZW5hcmlv 90812\nIGVtYWlsQWRkcmVzcw== 90813\nIE11c3M= 90814\nIHBob2VuaXg= 90815\nIGRlbnNpdGllcw== 90816\nIE1hY09T 90817\ncmVtYQ== 90818\nIHRlc3RlcnM= 90819\nKT87Cgo= 90820\nIHB1cHM= 90821\nbGFwcw== 90822\nZGRi 90823\nL1BlYWs= 90824\nIGJhY2tzdGFnZQ== 90825\nIGJhY2tCdXR0b24= 90826\nKG5hdg== 90827\neEFF 90828\nc3RyY3B5 90829\naWNodGV0 90830\nIFJpZg== 90831\n4LiB4Lij 90832\nIGhvbm91cmVk 90833\nIGdyYXBwbGluZw== 90834\nVmVydGV4QnVmZmVy 90835\nLmdldEFjY291bnQ= 90836\nLU5ldw== 90837\nIG9wcHJlc3M= 90838\nIHV0dGVyZWQ= 90839\nIFVTQUdF 90840\nX0xFQVZF 90841\nX2NvbGxlY3Rpb25z 90842\nX1V0aWw= 90843\nKCIiKSk7Cg== 90844\nIHF1aWV0ZXI= 90845\nYCksCg== 90846\nIHR5cGVJZA== 90847\nIHNlcmlm 90848\nc3RhbGs= 90849\nIHByaW1hcnlTdGFnZQ== 90850\neEVB 90851\nOk5TTGF5b3V0 90852\nX1JC 90853\nX0FQUFM= 90854\nU0tV 90855\nKnNjYWxl 90856\nIENvdWdhcg== 90857\nCVJFVFVSTg== 90858\naWZpw6k= 90859\ndGltaW5n 90860\nIGlkb2xz 90861\n656Y7Iqk 90862\n4oCUaWY= 90863\nKGZvcm1hdHRlcg== 90864\nIGFtYWxn 90865\nc2V0V2lkdGg= 90866\nLG1pZA== 90867\nb3JlYWw= 90868\nLlJvbGVz 90869\nIGRldmVs 90870\nIGdldEluZGV4 90871\nIHN0b29scw== 90872\nIHNub3d5 90873\nIGdyYW5kaQ== 90874\n0Y/QtdC8 90875\naWd1aWVudGU= 90876\n0LrQvtCy 90877\nIEN1dHRlcg== 90878\ncm9zY29wZQ== 90879\nYWlyYQ== 90880\n0YPRgNGB 90881\nIHRhYmVs 90882\nIGRlZmlhbmNl 90883\nLlRvQm9vbGVhbg== 90884\nIHBlcmc= 90885\nLWNvbW11bml0eQ== 90886\nIHB1cnN1aXRz 90887\nKG1ldHJpY3M= 90888\nTXVzbGlt 90889\nIFJpeWFkaA== 90890\nIOKCuQ== 90891\nLldlYkVsZW1lbnQ= 90892\nIEhhcmRlbg== 90893\nIENvcnJ1cHRpb24= 90894\nIEFl 90895\nIFRhbm5lcg== 90896\nIGluZGVi 90897\nIENoYXJnaW5n 90898\nX1BST0Q= 90899\nIOKTmA== 90900\nIGNlbnRlclg= 90901\ndHlwaW5n 90902\nIHV4 90903\nIFRvZQ== 90904\nCWxvb3A= 90905\nZmxv 90906\nUmVnaW9uYWw= 90907\nX2Fh 90908\nIHZpZXdwb2ludHM= 90909\nPnRoaXM= 90910\nLXJlc291cmNlcw== 90911\nIEltYW0= 90912\nIFNoaXY= 90913\nIGFuZHJh 90914\nUkVRVUlSRUQ= 90915\nIHNlZWRlZA== 90916\ndW1vbnQ= 90917\nIHRvYXN0ZXI= 90918\nIGhvbWVzY2hvb2w= 90919\n24zYsQ== 90920\nX2V4dHJhY3Rvcg== 90921\nbW9kZXM= 90922\nIE11bmRv 90923\nX2ZpcmVzdG9yZQ== 90924\nIHB1bmlzaG1lbnRz 90925\nIGJvcmVkb20= 90926\nanVyaWVz 90927\nLlNhZmU= 90928\nYW1iaXF1ZQ== 90929\nIGFkdmVyc2l0eQ== 90930\nVUxFUg== 90931\nIGFuYWxzZXg= 90932\nbW9ycGg= 90933\nIE9tbg== 90934\nKCkiPgo= 90935\nIEdJVkVO 90936\nU3o= 90937\nIG5vdW5z 90938\nIHF1YW0= 90939\nIFdpa2ltZWRpYQ== 90940\nIGR6aWV3Y3o= 90941\nLmNvbW11bmlj 90942\nQ291cmllcg== 90943\nQm9uZA== 90944\nLmNvbW11bmljYXRpb24= 90945\nLlByZWZlcmVuY2U= 90946\nc2xpZGVEb3du 90947\nL2djYw== 90948\nIHZpYmVz 90949\nQVBJVmlldw== 90950\nIE92ZXJzaWdodA== 90951\nX3Zr 90952\nIGVtcHJlcw== 90953\nIGFyaXNlbg== 90954\nICovKQ== 90955\nKCcoJw== 90956\nIGJ0dw== 90957\nIGNvbmV4acOzbg== 90958\nIFV6YmVr 90959\nIOyEnA== 90960\nIGltYWdlVVJM 90961\n44Kq 90962\nc3RvcHBlZA== 90963\nIFdvdWxkbg== 90964\nIENoZXc= 90965\nZ3LDqQ== 90966\nIHRydXRoZnVs 90967\nIFRyYW5zcGFyZW50 90968\nKHNlcnY= 90969\nIE1jS2F5 90970\nPXJlYWQ= 90971\nIFNhbw== 90972\nCUdyaWQ= 90973\nIGluZHVjZXM= 90974\nLmxpc3RGaWxlcw== 90975\nIGNhcnJlcmE= 90976\nIGljb25OYW1l 90977\nIENhcmx0b24= 90978\nLkV2ZW50VHlwZQ== 90979\nIGRyYXBlZA== 90980\nX1NBTVBMRVM= 90981\nKGVzdA== 90982\nIFJ1aXo= 90983\nIGNhcHRhaW5z 90984\nIG1hZmlh 90985\nIFJhcGhhZWw= 90986\nIEdBUA== 90987\naW1wYW4= 90988\nY29taWM= 90989\nIG1hbnRlbg== 90990\nJEw= 90991\nIGFmdGVybWFya2V0 90992\n15c= 90993\nIENm 90994\nCXRpbGU= 90995\nQXBwU3RhdGU= 90996\nIHdob2xlc2FsZXJz 90997\nbG93ZXN0 90998\nRGVtb2NyYXRpYw== 90999\nIHBvd2VyaW5n 91000\nYXBvdA== 91001\nIENvcnRleA== 91002\nKHNpbmdsZQ== 91003\nb3BoeXNpY2Fs 91004\nLnV0Zg== 91005\n77yf44CN 91006\nIHRhcmVh 91007\nRXF1aXA= 91008\nIGtsaWs= 91009\nIHJ1YQ== 91010\nIGFWYWx1ZQ== 91011\nIE1pbmVy 91012\nIFZlZw== 91013\nYW55bA== 91014\nQ293 91015\nQGM= 91016\nX0xPQURFRA== 91017\nIEFITA== 91018\nd2FrZQ== 91019\nLkxvZ0luZm9ybWF0aW9u 91020\nKGNhdGVnb3JpZXM= 91021\nIFFVRVNUSU9O 91022\nLnVtbA== 91023\nIENyZWF0ZU1hcA== 91024\nbWVlcg== 91025\nIHJlbmNvbnRyZXI= 91026\nX3N1 91027\nIGF0bGVhc3Q= 91028\nKFByb3BlcnR5TmFtZQ== 91029\nIFlhbw== 91030\nIEhhdXB0 91031\nQmxvY2tTaXpl 91032\nIFNBQw== 91033\nIExlZ3M= 91034\nYml0ZQ== 91035\nIGxvZ2FyaXRo 91036\nIElNZXNzYWdl 91037\nQmFja2Ryb3A= 91038\nIGdkaw== 91039\n7Jy866m0 91040\nLmV4Y2x1ZGU= 91041\nQURPUw== 91042\nLXNoaWZ0 91043\nYXRobGV0ZQ== 91044\nX2NvbWJpbmVk 91045\nIHJlYmF0ZQ== 91046\nIHBhcmQ= 91047\nIGltcGVkYW5jZQ== 91048\ncmVhdQ== 91049\nXw0KDQo= 91050\nIGRhZ2Vu 91051\na2VsYXM= 91052\nIGluZ3Jlc2Fy 91053\nIEJSQU5E 91054\nLm1rZGlycw== 91055\nIHJlaWduaW5n 91056\nVGFsa2luZw== 91057\nLyoqCgo= 91058\nX1JFU09VUkNFUw== 91059\nIFBST0dNRU0= 91060\nIGRhdGFTaXpl 91061\n44Og 91062\nZGVueQ== 91063\nSVJT 91064\nIHRlbGV2aXM= 91065\nPV8oJw== 91066\nZWdpcw== 91067\nPD8s 91068\nIHVwc2V0dGluZw== 91069\nIHNhdWNlcw== 91070\nIHB1ZXJ0bw== 91071\nIFZvZ3Vl 91072\naWRpbmU= 91073\nIEdyZWVud29vZA== 91074\nemlvbg== 91075\nL3F0 91076\n5bGA 91077\nLmxhbmd1YWdlcw== 91078\nIFBsYXlib3k= 91079\nb25uZW1lbnQ= 91080\nIFBvc2l0aW9uZWQ= 91081\nIOS4uw== 91082\nIEZyaXR6 91083\nSW5pdGlhbGx5 91084\nbm9kZVZhbHVl 91085\nX1RSSUFOR0xFUw== 91086\nLWJhY2tlbmQ= 91087\ndG9JU09TdHJpbmc= 91088\nIEdvdmVybm9ycw== 91089\nWUxPTg== 91090\nLk9SREVS 91091\nRE9J 91092\nIENoZXZyb24= 91093\nIGRlY2tpbmc= 91094\nIFNoYXJpYQ== 91095\nb3RoZXJtYWw= 91096\nRW1wdHlFbnRyaWVz 91097\nKEluaXRpYWxpemVk 91098\nZG9yZg== 91099\nLmx1 91100\nKFJvb20= 91101\nLlllbGxvdw== 91102\nIEFicmFt 91103\nX2xt 91104\nINC90LDQvw== 91105\nIFRIQU4= 91106\nfi1+LX4tfi0= 91107\nLk92ZXJyaWRl 91108\nIFNWTQ== 91109\nIFN1c3BlbnNpb24= 91110\nIGFic29yYnM= 91111\nX3RyYWZmaWM= 91112\nICI+Ig== 91113\nLmZpdHM= 91114\nIHJlaW5mb3JjaW5n 91115\nIG1veWVu 91116\nZXJlcg== 91117\nIFJvc2Vuc3RlaW4= 91118\nIFdlc3Rvbg== 91119\nIGNvbmZpbmVz 91120\nT0xB 91121\nb3JyYWluZQ== 91122\nX0dSUA== 91123\nIHN0cmFwcGVk 91124\nIG1pbmdsZQ== 91125\nCVZr 91126\nIG5vc3RyYQ== 91127\nIGFjdHJlc3Nlcw== 91128\nIFNhbW15 91129\nbGlnbmU= 91130\nSUdITElHSFQ= 91131\nIHN0dXA= 91132\naWN0b3J5 91133\nIGNvbnZpY3Q= 91134\nIHN1cHA= 91135\ncGVvbg== 91136\ndnJpZXI= 91137\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM= 91138\nIHRyb3R6 91139\nIG1lbHRkb3du 91140\nYXJrZXJz 91141\nLlNlbGVjdENvbW1hbmQ= 91142\nIExpYWJpbGl0eQ== 91143\nIEJlY2FtZQ== 91144\nIGx1Y2tpbHk= 91145\nINC/0L7RgA== 91146\nIHJlYXNzdXJl 91147\nIENvbnRyYXN0 91148\nIEF1ZHJleQ== 91149\nIENvbnN1bHRhbnRz 91150\nIFF1ZW50aW4= 91151\nLU93bmVk 91152\nb2NyaW4= 91153\nX1NUUklQ 91154\nIHJldGFsaQ== 91155\nIHJhbGx5aW5n 91156\nIFJlcXVlc3RDb250ZXh0 91157\nIG1hc3NhYw== 91158\nCWdy 91159\nTEVF 91160\nIGNhxYI= 91161\nIEpvYW5uYQ== 91162\n4butYQ== 91163\naGho 91164\nIHNxbFNlc3Npb24= 91165\nxLFrbA== 91166\nQ29tcG9zZXI= 91167\nIGN1cnJlbnRQbGF5ZXI= 91168\nYWdpbmk= 91169\nIEJhcmJhcg== 91170\nIEhlbGxvV29ybGQ= 91171\nbG9vbWJlcmc= 91172\nLkhlcmU= 91173\nIGRpc2d1c3RlZA== 91174\nCQkJCQkJICAgIA== 91175\nb2t1cw== 91176\nVmV0ZXI= 91177\nIGNob3Bz 91178\nIEZPUldBUkQ= 91179\nIEVpZw== 91180\nIFBhcnRpYWxWaWV3 91181\nIGltcG9zcw== 91182\nIGNvbnNlcXVlbnRpYWw= 91183\nIFsnIw== 91184\nCWxvZ2dpbmc= 91185\nIEVsaXM= 91186\ncHJvY3M= 91187\nLDwv 91188\nX3BpbnM= 91189\nXERvY3RyaW5l 91190\nVXZz 91191\nIEdJVA== 91192\nIHRhaA== 91193\nKHJ1bGVz 91194\nY3JlYXRlRnJvbQ== 91195\nICctJykK 91196\naGFuZGxpbmc= 91197\nZXh0ZXJuYWxBY3Rpb25Db2Rl 91198\nUk9EVUNUSU9O 91199\nRm9yUmVzb3VyY2U= 91200\nc2J1cmc= 91201\nPFRleHRWaWV3 91202\ndGhpbmthYmxl 91203\nYW5nbGluZw== 91204\nICJ9XA== 91205\nUFJT 91206\nQXBwcm92YWw= 91207\nIGtsaWVudA== 91208\nbm91bg== 91209\nIERpYW1vbmRz 91210\nSEc= 91211\nIFRyaWJhbA== 91212\nLnB4 91213\nIHByb3BOYW1l 91214\nIGhlbHk= 91215\n0LvQuNGH 91216\nIEJvdXRpcXVl 91217\nIik7fQo= 91218\nL2hvc3Q= 91219\nIHN0YXR1c0Jhcg== 91220\nPkRhdGE= 91221\nIGRpc2NvbnRlbnQ= 91222\nIGZyYWls 91223\nLmVsZW1lbnRBdA== 91224\nIGVtYW5j 91225\nCWZ1bg== 91226\nYXR0bGVz 91227\nIHByb3B1bHNpb24= 91228\nIGludGVyY2hhbmdlYWJsZQ== 91229\nIFRhbWJpw6lu 91230\nIHZlbmVy 91231\nX0xPV0VS 91232\nIHBkbw== 91233\nIGRldGVyZ2VudA== 91234\nIHRhdmVybg== 91235\nVmVudWU= 91236\nLmphc3Blcg== 91237\neXR0 91238\nIEppaGFk 91239\n4oCZw6A= 91240\nIG1lZGlhUGxheWVy 91241\nP3A= 91242\ncGNm 91243\nYW5kb25lZA== 91244\nIHJlY2ViZXI= 91245\nT1RQ 91246\nKGlPUw== 91247\nKCckew== 91248\nUHRz 91249\nIG1hbmFnZXJpYWw= 91250\nIFR1ZA== 91251\nIFdFTEw= 91252\nb3pl 91253\nIEFudG9pbmU= 91254\nIFxcCg== 91255\nIFZlY3Q= 91256\nIFdpbWJsZWRvbg== 91257\naXNtZXQ= 91258\nIGJvdGhlcmluZw== 91259\naW9zaXM= 91260\nZ2V0TWV0aG9k 91261\nIGlucHV0RGF0YQ== 91262\nIEJpbmRlcg== 91263\nIGRjdA== 91264\nw6Fsbg== 91265\nX0JPTEQ= 91266\nIEp1Z2VuZA== 91267\nIEJlZ2lubmVycw== 91268\naW9tcw== 91269\nIHJlbGVudGxlc3NseQ== 91270\nIE1vbmRheXM= 91271\n5LyY 91272\nVG9tb3Jyb3c= 91273\nIFNhbXA= 91274\nXFBlcnNpc3RlbmNl 91275\nTUFTVEVS 91276\nKHByZWRpY3Rpb25z 91277\nKG51bWVybw== 91278\nLnR3aXRjaA== 91279\nLlJlc3RyaWN0 91280\nIFpa 91281\nIE1MTQ== 91282\nLlNtYWxs 91283\nXWJ5dGU= 91284\nIFZpZXdQYWdlcg== 91285\nIEFnZW5jaWVz 91286\nIHBhcnRpY2lwYXRlcw== 91287\nIGluaXRXaXRoU3R5bGU= 91288\nJVg= 91289\nIGAs 91290\nLk9iag== 91291\nID8iKTsK 91292\nQ2FyZWVy 91293\nIDwlPQ== 91294\na3Vs 91295\nQ3BwSQ== 91296\nIE11c2hyb29t 91297\ndXJhdA== 91298\nbWlh 91299\nQ2Q= 91300\nYXJkdWlubw== 91301\nIGNvdW50cnlDb2Rl 91302\nX3BsYWNlbWVudA== 91303\nKCI9PT09PT09PT09PT09PT09 91304\nLWJlbA== 91305\nQXNzZXJ0aW9ucw== 91306\nIHByw7N4aW1h 91307\nKCkiKQo= 91308\nX2Vn 91309\nU1NJUA== 91310\ndXpl 91311\ncGxhY2Vy 91312\nYW1iaWd1b3Vz 91313\nX0lOSVRJQUxJWkVS 91314\nIEhhdHM= 91315\nIEdPT0dMRQ== 91316\nIGFnaXRhdGlvbg== 91317\nKG11dGV4 91318\nSElHSA== 91319\nOiIp 91320\nIGludmFkZXJz 91321\nICl9Cgo= 91322\nLm1hbnVhbA== 91323\nIFNpZW1lbnM= 91324\nCUpQYW5lbA== 91325\nYmluZHVuZw== 91326\nZWNlcmE= 91327\nL21ldA== 91328\nIMOpYw== 91329\nKHN0YXRpb24= 91330\nIHBvc2ljacOzbg== 91331\nX2lzc3Vlcw== 91332\nX2FsaWFzZXM= 91333\nX3RvcG9sb2d5 91334\nIEF1dG9kZXNr 91335\nQWNrbm93bGVk 91336\nISpcCg== 91337\nIEZyZWlnaHQ= 91338\nIEZYTUxMb2FkZXI= 91339\naWNoZWw= 91340\nKENoYXRDb2xvcg== 91341\nIGRpc3NvY2k= 91342\nIGFuYWxvZ3Vl 91343\nPHVzaXpl 91344\nLWV2 91345\nIHRlbmRy 91346\nPkFsbA== 91347\nIFVTRVJT 91348\nLnJlc3A= 91349\nX2ludGVncmF0aW9u 91350\nRGlzcGxheVN0eWxl 91351\nRkFJTFVSRQ== 91352\n0YfQuNGC 91353\naWxkZWQ= 91354\nX3NlbWFwaG9yZQ== 91355\nYWNhZGVtaWM= 91356\nIHNjbGVyb3Npcw== 91357\nRmFs 91358\nLHN0 91359\nYD0= 91360\naWZ0b24= 91361\nIHN1YnN0aXR1dGVz 91362\nIFN1cHBvcnRlcnM= 91363\nYXBwbGljYW50 91364\nKGt2 91365\nIEJlcm11ZGE= 91366\nIGRpc2NyZXBhbmNpZXM= 91367\nLlNvbGlk 91368\nd2VlbmV5 91369\nIGd1bA== 91370\nIGZpbGV0eXBl 91371\nIHJlc3VsdGF0 91372\nU2VuZGVySWQ= 91373\nIGdlem9jaHQ= 91374\nIEJlcmtzaGlyZQ== 91375\nICgiPA== 91376\nKG1s 91377\nKHNoaWZ0 91378\nX1JFRElSRUNU 91379\nT0xPTg== 91380\nL2Jyb3dzZQ== 91381\nOk5TTWFrZVJhbmdl 91382\nIHdhaXZl 91383\nIGV4Y2U= 91384\nIGNhdGFsb2dz 91385\n5Lmm 91386\naWxsaW9ucw== 91387\nLkdldEN1cnJlbnRNZXRob2Q= 91388\nIGJpbGluZ3VhbA== 91389\nIENhc2NhZGVUeXBl 91390\nCVRyYW5zZm9ybQ== 91391\nX0NVU1RPTUVS 91392\naXNpZnk= 91393\nINCx0Ls= 91394\nIFdob2V2ZXI= 91395\nIEVBUg== 91396\nIFs9Ww== 91397\nINC80L7QttC90L4= 91398\nIGphcmRpbg== 91399\nQHNob3c= 91400\nIGhlaXJz 91401\nIGFiYW5kb25tZW50 91402\nIFRyYW5zY3JpcHQ= 91403\nXV4= 91404\nOlNldFBvaW50 91405\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo= 91406\nIEZhY3Rpb24= 91407\nKGVudGl0aWVz 91408\nZmFjdGlvbg== 91409\nbXR4 91410\nX3JlY2FsbA== 91411\nLk5VTEw= 91412\nLm9wdGlvbmFs 91413\nKHByZWRpY3Rpb24= 91414\nQUdFTlQ= 91415\nIPCfmIA= 91416\n4oCZeQ== 91417\n4oCZdXRpbA== 91418\nIGFuZ3N0 91419\nLkV4cGVyaW1lbnRhbA== 91420\naG9vdA== 91421\nYXN5YXJhaw== 91422\nYXV0b3BsYXk= 91423\nIFNwbGFzaFNjcmVlbg== 91424\nIGhlY3RpYw== 91425\nIG1ldGljdWxvdXNseQ== 91426\nIGNvbWVy 91427\nS2VpdGg= 91428\nIGZyYXNl 91429\nX1VOSVFVRQ== 91430\nLk1hZ2VudGE= 91431\nKE1heA== 91432\nIHNjYWxlWQ== 91433\nIHB1dHQ= 91434\nKElG 91435\nIEFQUExF 91436\nUG9ybm8= 91437\nLmFkZENlbGw= 91438\nIG1vbHQ= 91439\nY2hpbXA= 91440\nIGxlZ2dpbmdz 91441\nIGZsb3A= 91442\n4oCZaHVp 91443\nUlRPUw== 91444\nL3NwYW4= 91445\nLmJlZA== 91446\nLkxvZ2lj 91447\nIHVudHJhbnNsYXRlZA== 91448\nQ0xFQVI= 91449\nO2xlZnQ= 91450\nIEJGUw== 91451\nLWdyb3Vwcw== 91452\ndG9vaw== 91453\nX2FjY2VwdGVk 91454\nIGNhc2hpZXI= 91455\nZXZlbnRJZA== 91456\nIGRvd25ncmFkZQ== 91457\nCQkJCQkJCQkJCQkK 91458\n0LDQvdC40Y4= 91459\nw6RuZGU= 91460\nIGNvdW5jaWxsb3I= 91461\nIGRyZWQ= 91462\nZFQ= 91463\nV1JBUFBFUg== 91464\nLm9s 91465\n5LiA6aG1 91466\nTUVB 91467\nIGtpbmV0aWNz 91468\nIGptcA== 91469\nX2ZsaWdodA== 91470\nRmVhcg== 91471\nIENoYW5lbA== 91472\nX21pZ3JhdGlvbg== 91473\naGRs 91474\nZXJlcXVpc2l0ZQ== 91475\nLnJhcg== 91476\nLU9uZQ== 91477\nIHNoZXBoZXJk 91478\nLmVhc2luZw== 91479\nKGRlc2NyaXB0b3I= 91480\nIHN1YnRvdGFs 91481\n44OT 91482\nQ29tcGlsZWQ= 91483\nIENvbHQ= 91484\nZGxl 91485\nL21vY2s= 91486\nKXJvdw== 91487\nIHJlc2V0dA== 91488\ndGVybw== 91489\nIGFlcm9iaWM= 91490\nLmludHJv 91491\nIGNoZWNrYm94ZXM= 91492\nIE1jQ2FydG5leQ== 91493\nIENseWRl 91494\n77yM5bm2 91495\nY29vbGRvd24= 91496\nLWluc3RhZ3JhbQ== 91497\nIE1QRw== 91498\nIExlaXN1cmU= 91499\nIG5hd2V0 91500\nIE5YVA== 91501\nUmVndWxhckV4cHJlc3Npb24= 91502\nIHJhdmU= 91503\nQklMTA== 91504\nIGJhcnRlbmRlcg== 91505\nRW5sYXJnZQ== 91506\nIHZhaXM= 91507\nIDoKCgoK 91508\nLkVuZHBvaW50 91509\nICIsDQo= 91510\nfX0iPnt7JA== 91511\ndHJlZXM= 91512\nLmVuZw== 91513\nKmxvZw== 91514\nOltdLAo= 91515\nIGJhdHRhbGlvbg== 91516\nU3ViamVjdHM= 91517\nIGV4cG9zaXRpb24= 91518\nIFRvYXN0cg== 91519\nIHRvcExldmVs 91520\nIENFTA== 91521\nIGd1YmVybg== 91522\ndW5zdWJzY3JpYmU= 91523\nY29uYQ== 91524\nX2FwcHJveA== 91525\nVFo= 91526\nIFRyZWVTZXQ= 91527\nLmNvbW11bml0eQ== 91528\nIG5hcnJvd2Vy 91529\nKEV4cGVjdGVk 91530\nQ2xy 91531\nIGdvcmU= 91532\nIGFjcXVpdHRlZA== 91533\nIEVVUk8= 91534\nG1s= 91535\nIHJlcHVibGljYW4= 91536\nIGF1dG9iaW9ncmFwaHk= 91537\nX2Zkcw== 91538\nQ29sbGFwc2Vk 91539\nIA0KIA0K 91540\nLXBpbGxz 91541\nTUJFRA== 91542\nIGlOZEV4 91543\nIHJlc3BvbnNlVHlwZQ== 91544\nZ2xmdw== 91545\nLXR1cm5lZA== 91546\n5Y+R5biD 91547\nCUJvb2xlYW4= 91548\nLk9y 91549\naW5pYQ== 91550\nIGhvdmVyZWQ= 91551\nIHNvcnRlcg== 91552\nIE5o 91553\nIEV4ZXJjaXNlcw== 91554\nbGVtZW50cw== 91555\naWRvbg== 91556\nVG9l 91557\nIHLDqWbDqQ== 91558\nU1NGV29ya2Jvb2s= 91559\nIG9yZ2FuaXNlcnM= 91560\nIHJlc3VsdE1hcA== 91561\nX0hPUg== 91562\nRG9k 91563\nTG9jYWxTdG9yYWdl 91564\nIGpzb25SZXNwb25zZQ== 91565\nQXV0aFNlcnZpY2U= 91566\nIHNtZQ== 91567\nZW1icm9z 91568\nIGxvYmJ5aXN0 91569\nb2d1aQ== 91570\nLnNwaW4= 91571\nIENvcnJlY3Rpb25z 91572\nX1JBRA== 91573\nIExTTQ== 91574\nKGN1cnJlbmN5 91575\nIOaA 91576\nIHByZWZldGNo 91577\nLkhlYWQ= 91578\nLXJlYWRlcg== 91579\nIFJveg== 91580\nCW1vdXNl 91581\nIFRMQw== 91582\nIFFUYWJsZVdpZGdldEl0ZW0= 91583\nIFNUT1JBR0U= 91584\nYW5uZWVy 91585\nIOyXkA== 91586\nYWNlbg== 91587\nU1g= 91588\nSW1hZ2VSZWxhdGlvbg== 91589\nIHJlc3VyZ2VuY2U= 91590\naXp6eQ== 91591\naWxvZ3Vl 91592\nSVZBTA== 91593\nIHNtYWNr 91594\ncnJoYQ== 91595\nKFBBUkFN 91596\nIUk= 91597\nIE1lY2g= 91598\nIElNYXBwZXI= 91599\nIGdpc3Q= 91600\nIFBPRA== 91601\ndm9yZQ== 91602\ndWxhw6fDo28= 91603\nICwt 91604\nIGludm9sdW50YXJ5 91605\nUVJT 91606\nPXRpdGxl 91607\nIEJpb20= 91608\nIFNoZWxsZXk= 91609\nIENTUA== 91610\nUGVz 91611\nZHJvcHM= 91612\nINGD0YHQv9C10Yg= 91613\nZGl2ZXM= 91614\nIVsK 91615\nIExlYXN0 91616\nIGtha28= 91617\nIE1vZGVsbw== 91618\nIGZ1bmN0aW9uTmFtZQ== 91619\nIGNob2tpbmc= 91620\nIGRlZm9ybWF0aW9u 91621\nJywnJyk7Cg== 91622\nY2HDp8Ojbw== 91623\nIHNxdWlycmVs 91624\nc2V0QmFja2dyb3VuZA== 91625\nQnJva2Vu 91626\ncG9saXQ= 91627\nTm9uY2U= 91628\nIGtleWVk 91629\nTWVzaFBybw== 91630\nLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ= 91631\nIGZsdXNoaW5n 91632\nIGJwcA== 91633\nIEFuZ2xpYw== 91634\nVHJvdQ== 91635\nIFdhbHRlcnM= 91636\nIHN0dXR0ZXI= 91637\nSGlw 91638\nX3dhcg== 91639\naXZlbWVudA== 91640\nQ29ybg== 91641\nIHVuZHVl 91642\nYXBhdGthbg== 91643\nIG1pbmRlbg== 91644\nc2lnbmlmaWNhbnQ= 91645\nKHF1YW50aXR5 91646\nJGluc2VydA== 91647\nIEFMRVJU 91648\nLlVuaWNvZGU= 91649\naWhu 91650\nXTo9 91651\nIHBpbk1vZGU= 91652\nIGZyYWlz 91653\naW50ZXJwcmV0ZXI= 91654\nJ2FjdGlvbg== 91655\nIGJsZWliZW4= 91656\nobQ= 91657\ncm93c2Vycw== 91658\nR0lU 91659\nX0RJUlM= 91660\nRm9yZXZlcg== 91661\nIFBkZlBDZWxs 91662\nfG0= 91663\nLnNldEhlaWdodA== 91664\nIGZvcmVhcm0= 91665\nIGJhdHRsZWdyb3VuZA== 91666\nINC/0L7RgdC70LXQtA== 91667\nIEhhdGg= 91668\nIEF1dGhvcml6ZWQ= 91669\nIGNvbmZlcnJlZA== 91670\nIEJPVFRPTQ== 91671\nLmdldEZsb2F0 91672\nb2dyYXBoZWQ= 91673\nYXJkeQ== 91674\nIHNlcnZpw6dv 91675\nb3RveGlj 91676\nL2F1dGhlbnRpY2F0aW9u 91677\nIHJlcHLDqXNlbnQ= 91678\nIGNvbXBsZXhpb24= 91679\nCUNvbW1vbg== 91680\nX2Jo 91681\nV2hvbGU= 91682\nSW1hZ2VEYXRh 91683\nIHRpbms= 91684\nZXF1YWxUbw== 91685\nIFRIUg== 91686\nIGRlbHRhcw== 91687\nIEFHRQ== 91688\naXphZG9y 91689\nYWRtaW5pc3RyYXRpb24= 91690\ncXVldHM= 91691\nX2ZpbGxlZA== 91692\nIEjDpA== 91693\nYWxsb2Nh 91694\nIEJvb25l 91695\nCWxjZA== 91696\nRm9sZGVyUGF0aA== 91697\nLlJhaXNl 91698\nXyN7 91699\nZXJ0aW5v 91700\nIFRocm9uZQ== 91701\n4K6/ 91702\nb3hldGluZQ== 91703\ncHJheQ== 91704\nIGRpbGlnZW50bHk= 91705\nIEFyY2hpZQ== 91706\nLm11bHRpcGFydA== 91707\nIHNlbw== 91708\nLmdldFByb2plY3Q= 91709\nIHBhag== 91710\nY2xlcm9zaXM= 91711\nYW1lcm9u 91712\nIHRvdXJlZA== 91713\nIG5pa2U= 91714\nIEJha2VyeQ== 91715\nLHBhcmVudA== 91716\nX1RFTQ== 91717\nU3BhdGlhbA== 91718\nbGFwcGluZw== 91719\nUHJvZHVjZXNSZXNwb25zZVR5cGU= 91720\nKGJhbGFuY2U= 91721\nSHVuZHJlZHM= 91722\nLXRlcm1pbmFs 91723\nIkRv 91724\nQ29udGVudFNpemU= 91725\nIGJiYw== 91726\nIGTDqWNvdXZyaXI= 91727\ndXRpbHVz 91728\nLnVuZG8= 91729\nLG91dHB1dA== 91730\nZ3JvdXBOYW1l 91731\nJG1heA== 91732\nIEFsbGE= 91733\nINC60LDRgNGC 91734\nLk9ORQ== 91735\nX2RlY2lzaW9u 91736\nRUVFRQ== 91737\nIHhPZmZzZXQ= 91738\n56o= 91739\nIHJ1bmF3YXk= 91740\nIGhhbmRqb2I= 91741\nIGdlbml0YWxz 91742\nKGpUZXh0RmllbGQ= 91743\nLnJhZGlhbnM= 91744\nIFBhZHJlcw== 91745\nZGVwZW5kZW5jZQ== 91746\nIHN3YWxsb3dpbmc= 91747\ncm90ZWlu 91748\nIGZsZWV0cw== 91749\nIGNhcmF0dGVy 91750\nKGNhbg== 91751\nIEZsb3JhbA== 91752\nX01zZw== 91753\nIGRlY2xhcmFjacOzbg== 91754\nbHNydQ== 91755\nc2Nob29scw== 91756\nIGRlbGVnYXRlZA== 91757\nIFBlbmFs 91758\nIENoZXJu 91759\nU21hcnRQb2ludGVy 91760\nc3Rvcnlib29r 91761\nIE55bG9u 91762\n5oCd 91763\nX0xFU1M= 91764\nL2FkZHJlc3M= 91765\nIENPUlM= 91766\nIOydtOuvuA== 91767\nIG1vZGE= 91768\nbWRw 91769\nIGRlcmJ5 91770\nIFBoYXJtYWNldXRpY2Fscw== 91771\nIGV5ZWQ= 91772\nX2NwdXM= 91773\n6KaL 91774\nfHwK 91775\nLm1hZw== 91776\nKFFM 91777\nIENpdmlsaXphdGlvbg== 91778\n6Yw= 91779\nX0RlcA== 91780\nIHN3ZWFyaW5n 91781\nIFNob3J0cw== 91782\ndWViYXM= 91783\nIGRlbGluZQ== 91784\nIEFkdmlzb3Jz 91785\nIOyeiOuLpA== 91786\nX0ZJTkU= 91787\nfSk6 91788\nLGFzc2lnbg== 91789\nIFBDSWU= 91790\ne3t7 91791\nU2Np 91792\nIGFtYm9z 91793\naWxlZW4= 91794\nIHR1bmVy 91795\nIHBhcmFtTmFtZQ== 91796\nLHRvdGFs 91797\nKExvY2FsRGF0ZQ== 91798\nIHNwcA== 91799\nIGVycm9yZXM= 91800\nIEhlbHBpbmc= 91801\nX21lcmdlZA== 91802\nLnRpbWVTY2FsZQ== 91803\nX0VMRU0= 91804\nX1NPTA== 91805\nIGF2ZW50 91806\nPGQ= 91807\nSnVuaW9y 91808\nCWJhcg== 91809\nLmx2 91810\nIOy5 91811\nPXd4 91812\nIG1pcmFjdWxvdXM= 91813\nIFJhbmRvbUZvcmVzdA== 91814\nIEZyYW5rZW4= 91815\nYGAs 91816\nKEluaXRpYWxpemVkVHlwZUluZm8= 91817\nIHN1cGVyaGVyb2Vz 91818\nIGFuc2libGU= 91819\nX1R5cGVEZWY= 91820\nIFBlcm0= 91821\nT0xFUg== 91822\nR3Jhbg== 91823\nLW5vdGlmaWNhdGlvbg== 91824\nIGtheg== 91825\nIGV4aGlsYXI= 91826\nc2VydGVy 91827\nIHN0b3JlZnJvbnQ= 91828\nX2VuZHM= 91829\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK 91830\nCWdpdA== 91831\nRFNQ 91832\nQ0hBSU4= 91833\nrLQ= 91834\nSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbg== 91835\nIFNseQ== 91836\n77yaPA== 91837\nQnJpdGFpbg== 91838\nL3NsaWRlcg== 91839\nIHptcQ== 91840\nIGJhag== 91841\nYnJlZA== 91842\nLlZBTFVF 91843\nIGdyaWV2aW5n 91844\nIHBvcm7DtHM= 91845\naWd1YQ== 91846\nSU5DTFVERUQ= 91847\nV2FrZQ== 91848\nY2Jk 91849\nIE1vbmdvbGlh 91850\naW52aXNpYmxl 91851\nIGNvcnJlY3RpdmU= 91852\nIGNlbnRlcnBpZWNl 91853\nQ2F1Z2h0 91854\nIGthcmFrdGVy 91855\nYWxtw7Y= 91856\nIGJlbHVt 91857\nIGFkam9pbmluZw== 91858\nPygi 91859\nIFZpc3VhbGl6YXRpb24= 91860\na2tl 91861\naWZpY2Fkb3M= 91862\nc3Bk 91863\nX0NCQw== 91864\nLUxhbmd1YWdl 91865\nIHN0aWw= 91866\nb3JldGljYWw= 91867\nKGNvbXBsZXRpb24= 91868\nIFZlcmbDvGd1bmc= 91869\nX1RyZWU= 91870\ncmlwcGxpbmc= 91871\nLlJlbW92ZUVtcHR5RW50cmllcw== 91872\nIFRBWA== 91873\nCUNvZGU= 91874\n5YuV 91875\ndXJnYQ== 91876\nINGD0LbQtQ== 91877\nIGFpZGVy 91878\nIFByZXNjb3R0 91879\nIGZpbGFtZW50 91880\nIC0tLS0tLS0tLS0tLS0tLS0tLS0t 91881\ndGhlcm9z 91882\n0LXRgNCw 91883\nZGViaWFu 91884\nw6RobA== 91885\nb2xhaA== 91886\nX1VOSVRT 91887\nQXJr 91888\nTW91bnRlZA== 91889\nLlRyaW1TcGFjZQ== 91890\nLmdldE51bWJlcg== 91891\nX2VvZg== 91892\nLm5y 91893\nIFNIQVJFUw== 91894\naWxhdGVy 91895\nIHdpY2h0 91896\nX2NvbXBhcmlzb24= 91897\nICki 91898\nY2xpbmljYWw= 91899\nIFRFbnRpdHk= 91900\ndmVuZXM= 91901\nLmdldFByb3BlcnRpZXM= 91902\nIHJlbGF0 91903\nIGFubm95YW5jZQ== 91904\nYmVi 91905\nIGFuZXN0aGVzaWE= 91906\nX2ludGVydmFscw== 91907\nX2Zo 91908\nIHN1ZG9rdQ== 91909\nIGRpc2Vu 91910\nY29ubmVjdGluZw== 91911\nIG9h 91912\nIOKWkQ== 91913\nWkY= 91914\nIGN1eg== 91915\nU09FVkVS 91916\nIE3DtmdsaWNoa2VpdA== 91917\nY2hhcnRlZA== 91918\nIGhhc2hlcg== 91919\nIEtlZXBz 91920\nQUVB 91921\nCWxvZ3J1cw== 91922\nCU5hbWVzcGFjZQ== 91923\nb3J0aG8= 91924\nJGFjdGlvbg== 91925\nIFJvYw== 91926\nJyk7Pz4i 91927\nIFBST1Q= 91928\nQGFwaQ== 91929\nY2hzZWw= 91930\nL2dpZg== 91931\nKEhhbmRsZQ== 91932\nIGFudW5jaQ== 91933\nL3B5 91934\naW52YWxpZGF0ZQ== 91935\nIE1FUA== 91936\ndGVtcw== 91937\nO10v 91938\n6IM= 91939\n6L+Q 91940\nIHRhY28= 91941\nQURW 91942\naHBw 91943\nQnV0dG9uQ2xpY2s= 91944\nIGJyaW5nZW4= 91945\nIFRJTUVPVVQ= 91946\nIGFzdHJvbG9neQ== 91947\nZGF0ZUZvcm1hdA== 91948\nT0dSQVBI 91949\nRmlsZVN0cmVhbQ== 91950\n5a6h5qC4 91951\nLkNvbW0= 91952\nJ2I= 91953\nIEdFVEdMT0JBTA== 91954\nZWF0aW5n 91955\nYW5kZXN0 91956\nIFNFVFVQ 91957\nIEFkdmFuY2Vz 91958\nLnNjcm9sbEhlaWdodA== 91959\nQVpF 91960\nZW5kdGltZQ== 91961\nd2VhdGhlcm1hcA== 91962\nIE1hbmdv 91963\nIFJJUA== 91964\nIGl0ZXJhdG9ycw== 91965\nIGNvYXg= 91966\nIOWbvg== 91967\nPG1haW4= 91968\ncm1z 91969\ncGNi 91970\nIHZhY2NpbmF0aW9ucw== 91971\nIGRpc2FncmVlbWVudHM= 91972\nCWV2ZW50cw== 91973\nPExvY2F0aW9u 91974\nLk1lYXN1cmU= 91975\nIHF1ZWRh 91976\nIHNpZ25hbGxpbmc= 91977\nIGRlZ3JhZGVk 91978\nIEFtZWxpYQ== 91979\nLWNvbmZpZGVuY2U= 91980\nZGJOYW1l 91981\nX2luYWN0aXZl 91982\nb25hdGlvbg== 91983\nIHBlcmlwaGVyYWxz 91984\n5qC3 91985\nU1VQRVI= 91986\nJ1I= 91987\nLndheQ== 91988\nUExBSU4= 91989\nIEVuZ2Vs 91990\ncmVsYXk= 91991\nIGRlYmlkbw== 91992\nIFRyb3Rza3k= 91993\n6Iw= 91994\nINCw0LTRgNC10YE= 91995\nCXVzZXJz 91996\nZXRjaHVw 91997\ndGVw 91998\nIG5ld1Bvc2l0aW9u 91999\nIHdhaXZlcnM= 92000\nZWRpY2luZQ== 92001\nIHRhbmdnYWw= 92002\nIGFtbW9uaWE= 92003\nLWRldA== 92004\nL2V4ZWM= 92005\nKHBhZGRpbmc= 92006\nIFNob3BwaW5nQ2FydA== 92007\nIFByaW50Zg== 92008\nSGFuZGxlZA== 92009\nIE5BTUVT 92010\nKGNsb2Nr 92011\nIHt9Og== 92012\nIHNpbXM= 92013\nIFRlYXJz 92014\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= 92015\nX0NBTk5PVA== 92016\nTEVHUk8= 92017\nLlNldFBhcmVudA== 92018\n5YW25Lit 92019\nIGVycmV1cg== 92020\naXBp 92021\nPEV4cHJlc3Npb24= 92022\nLnRpbWVsaW5l 92023\nICdfJyw= 92024\nIGNvYXRpbmdz 92025\nIHVzZUZvcm0= 92026\nLnRr 92027\nIEZlYXN0 92028\nLlNL 92029\nw6RzZW50 92030\nY2h3aXR6 92031\nIGludmVudGl2ZQ== 92032\nIE1laQ== 92033\nIHZlc3RpYg== 92034\nIG7DpGNoc3Rlbg== 92035\nL2JpZw== 92036\nIHJldHJlYXRlZA== 92037\nIHByb3BhbmU= 92038\ndmljdGlt 92039\nQWt0 92040\nIFByZXNlcnZhdGlvbg== 92041\nIFBpcw== 92042\nX1NIQURPVw== 92043\nIHByaWNlbGVzcw== 92044\ncsOzZA== 92045\nb2JibGVk 92046\nIHJvbGVOYW1l 92047\nIEdEUFI= 92048\nICciLA== 92049\nQ2VudHJl 92050\nQXJjaGl0ZWN0dXJl 92051\nQ3BwQ2xhc3M= 92052\nIG1hdHRyZXNzZXM= 92053\nIGJlZXA= 92054\nIERhbWlhbg== 92055\n5p2D6ZmQ 92056\nYmV0dA== 92057\nX2Flcw== 92058\nKGNlbGxz 92059\nIOuwsOyXtA== 92060\nIGJpdG1hc2s= 92061\nY291bGRu 92062\nLW5vdw== 92063\nIGlubm92YXRl 92064\nIGhhY2Vu 92065\nIEx5b25z 92066\ndGhpY2tuZXNz 92067\nIHdoaXN0bGVibG93ZXI= 92068\nJGZpbHRlcg== 92069\nIGV1bGVy 92070\nIEhhcm0= 92071\nIGxlZHM= 92072\nIEtlbHZpbg== 92073\nLnF1aWNr 92074\nIEzDs3Bleg== 92075\ncmV2ZQ== 92076\nIG5pZ2VyaWE= 92077\nIGp5bGxhbmQ= 92078\nLmVtcHR5TGlzdA== 92079\nIHVuc2V0dGxpbmc= 92080\ndXNiYW5k 92081\nIHRyYWNrZXJz 92082\nPVwiIjsK 92083\nIGNvbnRpbnVh 92084\nIE51bWVybw== 92085\nZW5kb24= 92086\nIEdlcnJ5 92087\nLlRPRE8= 92088\nUmVwZWF0ZWQ= 92089\nIFNlcmVuYQ== 92090\n0LjQvNCw0LvRjA== 92091\ncHJvZmls 92092\nINCy0YHQtdGF 92093\nQGFkbWlu 92094\nLkxpbmVz 92095\nIHRyYW5zbWlzc2lvbnM= 92096\nIGNq 92097\nYW7Dp2E= 92098\n5Yig6Zmk5oiQ5Yqf 92099\nIGdldE1lbnVJbmZsYXRlcg== 92100\ndWZyZXE= 92101\nIE1hdGhlbWF0aWNhbA== 92102\nTmF2aWdhdG9yTW92ZQ== 92103\nIGZ3ZA== 92104\ndW5pdHRlc3Q= 92105\nIHN5bnRoZXNpemVk 92106\nIGNyZWVk 92107\nKEZyYW1l 92108\ncHN5Y2g= 92109\ndm9k 92110\ndUM= 92111\n4bqndQ== 92112\nIOKAnOKApg== 92113\nIGtyYXQ= 92114\nZHJhd2FibGU= 92115\nw6ZyZQ== 92116\nPXRvcA== 92117\nKExvZ2dlcg== 92118\nRXJyb3JFeGNlcHRpb24= 92119\nYWlzYWw= 92120\nL3dz 92121\ndWxsZWQ= 92122\nQVJJTkc= 92123\nIG5JbmRleA== 92124\nIGludGVybmFscw== 92125\nIGVmZmljaWVuY2llcw== 92126\nICNA 92127\nX2JyaWdodG5lc3M= 92128\nX25vcm1hbHM= 92129\nIFN0b3V0 92130\nIHVudmVpbA== 92131\nIFNob3Rz 92132\nLWNvbXBhbnk= 92133\nX2VsdA== 92134\nKGRsbGV4cG9ydA== 92135\nIHByb2R1Y2Npw7Nu 92136\nQ2lzY28= 92137\nQmxha2U= 92138\nLW1vdXRo 92139\nUGVhcg== 92140\nINC00L7RgdGC0YPQvw== 92141\nIEpBQ0s= 92142\nIO2YuA== 92143\nIHN0b3B3b3Jkcw== 92144\nIFRlc3M= 92145\nIHBvc3Rl 92146\ncmF6aWVy 92147\n6K0= 92148\nTWVzc2FnaW5n 92149\nt+aWsA== 92150\nVGFtYmFo 92151\nIG5hcmNvdGljcw== 92152\nIGNhbXBlcg== 92153\nIHRyaXBvZA== 92154\nIGdsRW5k 92155\nIGdpb2M= 92156\nY29tYmU= 92157\nVXNlclJvbGU= 92158\nVWw= 92159\nRXF1aXZhbGVudA== 92160\nIGdub21l 92161\nIEZ1w58= 92162\ncGFja2FnZU5hbWU= 92163\nX3Vl 92164\nRGlzY2xvc3VyZQ== 92165\nYW1hdGU= 92166\nX3RlbnNvcnM= 92167\nIEthdGhyeW4= 92168\nX0Jhcg== 92169\nVGhyZWFkSWQ= 92170\nIHZlcmlmaWNh 92171\nLmFzc2VydE51bGw= 92172\nIE9kaW4= 92173\nYsOp 92174\nINGB0L7RgdGC 92175\nIGp0 92176\nLlNlbGVjdGVkSXRlbXM= 92177\nIGFjdGlvbmFibGU= 92178\nIFJlZ2FyZHM= 92179\naGVr 92180\nOm51bWVs 92181\nLEdM 92182\nIFBIT05F 92183\nCURlZmF1bHQ= 92184\nIGVsYXN0 92185\nIGJlY2s= 92186\nPWNyZWF0ZQ== 92187\nOicK 92188\nYXJodXM= 92189\nbW9kaWZpZXJz 92190\naW50cHRy 92191\nIHByb3Bpbw== 92192\n77yI56yR 92193\nIHJlcXVlc3RPcHRpb25z 92194\nIGltcGxpYw== 92195\nIGR1cm8= 92196\nIFBDUw== 92197\nRGVsaW1pdGVy 92198\nKGxvZ2l0cw== 92199\nLkVWVA== 92200\nV2l0aENvbnRleHQ= 92201\nIG9sdHJl 92202\nX0VYRUNVVEU= 92203\nb2xpY2l0ZWQ= 92204\nX0VudGVy 92205\nL2Zyb20= 92206\nINGB0LvQvtCy 92207\nIEhvcm0= 92208\ndWliTW9kYWw= 92209\nX0lORklOSVRZ 92210\n77yM44CK 92211\nVUdJTlM= 92212\nT05HTA== 92213\nLGJ1Zg== 92214\nIHBvdXJyYWl0 92215\ncGo= 92216\nKGN1YmU= 92217\nIHVnbA== 92218\nIFNhd3llcg== 92219\nSUZFU1Q= 92220\nQXBpcw== 92221\nIENvcmVEYXRh 92222\nIHNlc2FtZQ== 92223\nLnB0aA== 92224\nLmdldFVzZXJOYW1l 92225\nY2FzZWQ= 92226\nIHZhbmlzaA== 92227\nX0FwaQ== 92228\nLy86 92229\nL25vbg== 92230\nLmRvY2tlcg== 92231\nLnNp 92232\nYWxlcnRz 92233\nIGludGVzdGluZQ== 92234\ncGFydGljaXBhbnRz 92235\nLXZpc2libGU= 92236\nZW1zcA== 92237\nbXVl 92238\nX3B2 92239\nIENyaQ== 92240\nb2dyYQ== 92241\nX2V4cGVyaWVuY2U= 92242\nIElOVEVSVkFM 92243\nX3JlZ3Jlc3Npb24= 92244\n7ZWY7IS47JqU 92245\nZW5kZXJlY28= 92246\nbGF0YWJsZQ== 92247\nLmxvY2FsdGltZQ== 92248\nIEJJVFM= 92249\nIEZvbGRpbmc= 92250\nCSAJCQ== 92251\nw6lzZQ== 92252\nLWJlYXJpbmc= 92253\nIFhQQVI= 92254\nT1BTSVM= 92255\nJ14kJyw= 92256\naW5jbA== 92257\nIE9wcmFo 92258\nIGJvb3Rocw== 92259\nIFJvaGluZw== 92260\nLkJvcmRlclNpZGU= 92261\nYXRhdHlwZQ== 92262\nQ3JlYXRlZEJ5 92263\nLOKAmeKAnQ== 92264\nZG9jdHJpbmU= 92265\nIGJyZWF0aGVk 92266\nX2JlZw== 92267\nIGFmZmxpY3RlZA== 92268\nTW91bnRhaW4= 92269\nQmxvYw== 92270\nIHJ1aW5pbmc= 92271\nLkFubm90YXRpb25z 92272\nCWludGVudA== 92273\nIHN0YXRpY2FsbHk= 92274\nX1V0aWxz 92275\nTGF1bmNoZXI= 92276\nOm5vcm1hbA== 92277\nIHVzZXJpbmZv 92278\nLUp1bA== 92279\nS3lsZQ== 92280\nLlJlYWRVSW50 92281\nKHVybHM= 92282\nL2lm 92283\nbWl0dGVs 92284\nYmNt 92285\nQE1vZHVsZQ== 92286\nIENvbnN0YW50aW4= 92287\nIGJq 92288\nZXJuYXV0 92289\nPHI= 92290\nIE1lbnRvcg== 92291\nIGVncmV0 92292\nX29hdXRo 92293\nLkRhdGFDb250ZXh0 92294\nX0NMSQ== 92295\nKENvbnN0cnVjdG9y 92296\nIHNldFBvc2l0aW9u 92297\ncmVzYXI= 92298\nZW50aW5n 92299\n4Li54Lil 92300\nVHJhbnNtaXNzaW9u 92301\nIG5vdGlmeURhdGFTZXRDaGFuZ2Vk 92302\nIE1vdXNlQnV0dG9u 92303\nICoi 92304\nICAgICAgICAgICAgICAgDQo= 92305\nIEx5ZGlh 92306\nIHN3b3Jl 92307\nIHBsYXRhZm9ybWE= 92308\nCWJ1dHRvbnM= 92309\nIHNwcnVuZw== 92310\nKFRva2VuVHlwZQ== 92311\nQ3g= 92312\nQXF1 92313\nCQkJCQkJCQkJICA= 92314\nCUFERA== 92315\ndWlkcw== 92316\nIOCkrg== 92317\nIOaXtumXtA== 92318\nLkFjdGlvbkJhcg== 92319\nIG9jdXI= 92320\nIGlsbWE= 92321\nLW5ldXRyYWw= 92322\nICIuIjsK 92323\nCVNpemU= 92324\nUGllY2Vz 92325\nIHN0aWY= 92326\nICI9Iiw= 92327\nIEVxdWl2YWxlbnQ= 92328\nIGlnZW4= 92329\nZGZk 92330\nX3RoaWNrbmVzcw== 92331\nX3JlYWRhYmxl 92332\nL2ZhbHNl 92333\nIHRvb2x0aXBz 92334\nb3BsYXN0 92335\naHVh 92336\naGFuZGxlUmVxdWVzdA== 92337\nLkxBWlk= 92338\nPFVGdW5jdGlvbg== 92339\naW1tdXRhYmxl 92340\naWhpbGF0aW9u 92341\nIG9ydGhvZG94 92342\nLnBvcHVsYXRl 92343\nIHZlcmE= 92344\nIG9iZXI= 92345\nc2FuZA== 92346\ndmln 92347\nQ29uZmVyZW5jZQ== 92348\nKENvbGxpc2lvbg== 92349\nL2F1dG8= 92350\nIFNvbGlkQ29sb3JCcnVzaA== 92351\nKic= 92352\nLGFkZHJlc3M= 92353\nIHN3ZWV0aGVhcnQ= 92354\nw6F0aWNhcw== 92355\nYW5pbmU= 92356\nX3BheW1lbnRz 92357\nIHVubWlzdA== 92358\nIHRydW1wZXQ= 92359\nQkFM 92360\nIGZpbGVJZA== 92361\nbmllanM= 92362\nQURG 92363\nIG1uaXN0 92364\nIEZlaGxlcg== 92365\n44CRLA== 92366\nQ2hhcmFjdGVyU2V0 92367\nIFZhbmNl 92368\nSW5zZXJ0ZWQ= 92369\nIGRvd253YXJkcw== 92370\nIHJvdGF0aW9uYWw= 92371\nIGVuY291bnRlcmluZw== 92372\nTUJQcm9ncmVzc0hVRA== 92373\nL1N5c3RlbQ== 92374\nL3BvcA== 92375\nIH0pDQoNCg== 92376\nIC4nPC8= 92377\n77yJDQo= 92378\nIGRjYw== 92379\nYXN5YXJha2F0 92380\nIHByaW5jaXBhbGx5 92381\n5a6a5LmJ 92382\nKGNob2ljZXM= 92383\nLnBhZ2luYXRvcg== 92384\nIHVwYnJpbmdpbmc= 92385\nIGRvdGVudg== 92386\nKCkpLw== 92387\nIFRBUw== 92388\nZ2Nk 92389\nX2ludGY= 92390\nLm11dGV4 92391\ncHJlc3Rhc2hvcA== 92392\nIGLDtnI= 92393\nZGFw 92394\nX2RlbWFuZA== 92395\nXERlc2t0b3A= 92396\ndG9GbG9hdA== 92397\nIHNlZ3JlZ2F0ZWQ= 92398\nIGNsaW1hdGVz 92399\nLk9yZGVyQnlEZXNjZW5kaW5n 92400\nKCcsJyk= 92401\nUHVsbFBhcnNlcg== 92402\nQXRvbXM= 92403\nIGJlbsO2dA== 92404\nIGhvbWVy 92405\nYW50dQ== 92406\nSXNFbXB0eQ== 92407\nIEJlZ2lucw== 92408\nPlNob3c= 92409\nIFN1cHBsZW1lbnRz 92410\nb2NjdXM= 92411\nIGRvcGU= 92412\nLmJvb2tpbmc= 92413\nIEFsbWlnaHR5 92414\nW2VkZ2U= 92415\nIEViYXk= 92416\nX3JhY2U= 92417\nRnJvemVu 92418\nX3RyYXZlbA== 92419\nIHBhc3RvcnM= 92420\nX1NVUkZBQ0U= 92421\nX2dlbnJl 92422\nX0hPVA== 92423\nLGRpbQ== 92424\nVGJs 92425\nbXRz 92426\ncHJlZGljdGlvbnM= 92427\nX2N1bQ== 92428\nIGRldGFsbGVz 92429\nLXRyYW5zaXRpb25hbA== 92430\nIHdha2V1cA== 92431\nUGVyc29ucw== 92432\nLmNvbG9yYmFy 92433\nU3RyYW5nZQ== 92434\n2K/Zhw== 92435\nJlc= 92436\nIEFSUA== 92437\nX1NPRlQ= 92438\nX2RyYWZ0 92439\nSVZB 92440\nIGdyb3A= 92441\nIGxpZWJl 92442\nIGlpZA== 92443\n2KfYsw== 92444\nY2FuZGlkYXRlcw== 92445\nZ2V0QXM= 92446\nPV8oIg== 92447\nLkdldE9yZGluYWw= 92448\nKSk9PQ== 92449\nYW5ub3RhdGU= 92450\nIEx1bWlh 92451\nSVJNV0FSRQ== 92452\nX09QRU5HTA== 92453\nKGZvcm1EYXRh 92454\nZW50aW1lcw== 92455\nIHdhdGVyc2hlZA== 92456\nINCx0LXQtw== 92457\nIGZsb3BweQ== 92458\nVG93YXJkcw== 92459\nKGNvbXBhY3Q= 92460\nRERE 92461\ne24= 92462\nIHBva2luZw== 92463\nQG0= 92464\nIHJlY3ljbA== 92465\nc3RydWN0b3Jz 92466\na2V5Q29kZQ== 92467\nIHZlaGVtZW50 92468\nIGxpdHJl 92469\nIEJJTkQ= 92470\nIEZyYW5jb2lz 92471\nIG51ZGl0eQ== 92472\nIGlzaXpl 92473\nCW9uQ2xpY2s= 92474\neXN0YWxz 92475\nIGdldFN5c3RlbVNlcnZpY2U= 92476\nV2ViUmVzcG9uc2U= 92477\nZmlsZXNpemU= 92478\nIENobG9y 92479\nY29saQ== 92480\nX3NlYXQ= 92481\nLkFkZEluUGFyYW1ldGVy 92482\nKXRlc3Q= 92483\nIHF1ZXM= 92484\nIGNhdXRpb3VzbHk= 92485\nImRpc3BsYXk= 92486\nLnNodG1s 92487\nIEdVSURBVEE= 92488\nKCIqKg== 92489\nIGdyYW5kZGF1Z2h0ZXI= 92490\nIEFzc2VtYmx5RGVzY3JpcHRpb24= 92491\nRm9yRWFjaA== 92492\nV2lsc29u 92493\nLGVn 92494\nIGJlbGlldmFibGU= 92495\nIGNyb3Nzd29yZA== 92496\nbG9iYmVy 92497\nIFN0YXBsZXM= 92498\nKHNoaXA= 92499\nIHdhZ2Vk 92500\nIEJvbHNoZXZpaw== 92501\nLkFkZEl0ZW0= 92502\nKEZpbHRlcg== 92503\nX0FCQw== 92504\nIGBc 92505\n0L7RiQ== 92506\nIG1ib3g= 92507\nIE5lcw== 92508\nIEFWQ2FwdHVyZQ== 92509\nIGNvbmhl 92510\nIElOVEVSTkFUSU9OQUw= 92511\nb3Nn 92512\nIF0pLT4= 92513\nU0tUT1A= 92514\nIGtpZGQ= 92515\nIFNTVA== 92516\nIOWFsw== 92517\nIEV0aG5pYw== 92518\nRVJTSEVZ 92519\nIG11bHRpYw== 92520\nX01VTA== 92521\nIEZpbmRPYmplY3RPZlR5cGU= 92522\nIEV4cGVuc2Vz 92523\nZ2V0TW9ja0J1aWxkZXI= 92524\nLWd1aWRl 92525\nJ0w= 92526\nIOeZuw== 92527\nIHJhag== 92528\nIEJsYW5jaA== 92529\nIEFkZHJlc3Nlcw== 92530\nTng= 92531\nIElzbGFtYWJhZA== 92532\n0L7QutGD0LzQtdC90YI= 92533\nIEJlYXZlcg== 92534\nLnN0dWRlbnRz 92535\nIEFzeW5jQ2FsbGJhY2s= 92536\nc2hlZXRz 92537\nZWNhc3Q= 92538\nIEZ1bmRhbWVudGFs 92539\nIHZlcmRpZW5lbg== 92540\nIGV4YWNlcmJhdGVk 92541\nIE1vZGVyYXRvcg== 92542\nQ0NDQ0ND 92543\nIHRpbWVvdXRz 92544\nIHN1YmRpdmlzaW9ucw== 92545\nIGNvbXByb21pc2Vz 92546\ndXp6ZXI= 92547\nfSwkew== 92548\nX2Jsb2NraW5n 92549\nZXJtYW5u 92550\nIE1pa2hhaWw= 92551\nIFNlbGJzdA== 92552\n6ZSA 92553\nLnNob3dz 92554\n5LiH5YWD 92555\nIFRm 92556\nIElIdHRwQWN0aW9uUmVzdWx0 92557\nIElFbnRpdHk= 92558\nIGlx 92559\nRk1M 92560\nb2RlbQ== 92561\nc3Rw 92562\ndWN0aW9ucw== 92563\nLmZhdm9yaXRl 92564\nLkdldERpcmVjdG9yeU5hbWU= 92565\nIGdyYWM= 92566\nIHhtbERvYw== 92567\nX3B1c2hCdXR0b24= 92568\nY29sbGVjdG9y 92569\nPWV4cGxvZGU= 92570\nIGRlc3RpbmF0aW9uVmlld0NvbnRyb2xsZXI= 92571\nIFNlcmlhbGl6ZWQ= 92572\nOm1lc3NhZ2U= 92573\nIENDQw== 92574\nX3JlY292ZXJ5 92575\nLWtpdA== 92576\nc2hpbWE= 92577\ncm90Y2g= 92578\nIGB9Cg== 92579\nX3N1cHA= 92580\nVGFibGE= 92581\n0YDQtdC00LXQuw== 92582\nR3RrV2lkZ2V0 92583\nIFNJTVBMRQ== 92584\nLnBoaQ== 92585\nIExpYmVydGllcw== 92586\nLS1b 92587\nIHVudmVpbGluZw== 92588\nIGV4dGVudHM= 92589\nYmNk 92590\nIGh2YWQ= 92591\nCWNy 92592\nLnJlYWRkaXI= 92593\nIHJlYWRhYmlsaXR5 92594\nIGRpc21pc3Npbmc= 92595\nQ2FtYg== 92596\nIGNhc3VhbHR5 92597\nIElQVg== 92598\nbWl0ZXM= 92599\nIHB1cmlmaWVk 92600\nLk9yaWVudGF0aW9u 92601\nIGxq 92602\naW11bGF0b3I= 92603\nZnJhbQ== 92604\nL2xvY2F0aW9u 92605\nIGNvbW11bmljYXRlcw== 92606\nOlVJQWxlcnQ= 92607\nL3NvY2lhbA== 92608\nZWx5bg== 92609\nREVO 92610\nINee 92611\nIGJlZm9yZVNlbmQ= 92612\nIFVudGVycw== 92613\nJykuIg== 92614\nICcnKTs= 92615\nLndyaXRlT2JqZWN0 92616\nKGdyYW1tYXJBY2Nlc3M= 92617\nIEFwcGxpY2F0aW9uQ29udGV4dA== 92618\nQnlVc2VybmFtZQ== 92619\nIHNraXBz 92620\nIGZpbGhv 92621\nIHZpZXV4 92622\nIG1SZWN5Y2xlclZpZXc= 92623\nIGFyb3VzZWQ= 92624\nLm93bA== 92625\nIGN1cmxlZA== 92626\nL2NhbGxiYWNr 92627\nKCc6Jylb 92628\nIGludW5k 92629\nIGJyZWFrcG9pbnRz 92630\nLWV2ZW4= 92631\nLnN0ZW0= 92632\nIGRlcm9n 92633\nIG5lcA== 92634\nIENvbXBsZXRhYmxlRnV0dXJl 92635\nLUxpbmU= 92636\nLyov 92637\nLkhleA== 92638\nIHJ1c3Nl 92639\nIGJpZg== 92640\nIEZvbmQ= 92641\naWVjdA== 92642\nIGFsbG90dGVk 92643\nZGV0ZWN0b3I= 92644\nIC8KCg== 92645\nZW1vZGU= 92646\ndWhl 92647\ndWlzc2U= 92648\nIEZJWEVE 92649\nbWF0aHJt 92650\nIHVuc3Vz 92651\nIEF1dG9z 92652\nIC4uLi4uLi4uLi4= 92653\nLnRyYXZlbA== 92654\nTkFW 92655\nIGxlc2Jpc2s= 92656\nIMO8emVy 92657\nIGNsZXJpYw== 92658\nIGxpbWl0bGVzcw== 92659\nb2x1Y2lvbg== 92660\nIG5lY2tsaW5l 92661\nIGRyaWZ0ZWQ= 92662\nIFJlbGlhYmxl 92663\nIENhcnk= 92664\nIHRlbsOtYQ== 92665\nID8+Jw== 92666\nL2NvbW1vbnM= 92667\nIEdNQw== 92668\nX05QQw== 92669\nIEJsaXNz 92670\nIEJ1cm1h 92671\n5ZCM5pe2 92672\nKGRlcGVuZA== 92673\nLXN1aXRl 92674\nCXN0YWdl 92675\nRG91Zw== 92676\naWRlbnRpZmljYXRpb24= 92677\nX3Jlc29sdmVy 92678\nQmVnYW4= 92679\nW3RocmVhZA== 92680\nIDsKCgo= 92681\nTlRTVEFUVVM= 92682\nIGRpc29iZWQ= 92683\nfGg= 92684\nIGFjY3VtdWxhdGluZw== 92685\nICIsIik7Cg== 92686\ndVBhcmFt 92687\nLmJpbGw= 92688\ncml0Y2g= 92689\nQ3JpbWU= 92690\n0LXRgdGM 92691\nIFJlbWFpbg== 92692\n54Sh5paZ 92693\nX1RIQVQ= 92694\nYCJdCg== 92695\nLnN0YW1w 92696\nIHBhcmFub3JtYWw= 92697\nIE1QQw== 92698\nInVybHM= 92699\nIEVzdGF0ZXM= 92700\nVG9Gcm9udA== 92701\nVGhpcnR5 92702\nQmV0aA== 92703\nJ3U= 92704\nIOy9lOuTnA== 92705\nVUZBQ1Q= 92706\nIENyb20= 92707\nIE1pc3Rlcg== 92708\nIEVRVUFM 92709\nZW5oZWlt 92710\nIC8vew== 92711\nX3dhcw== 92712\nIGJvdXF1ZXQ= 92713\nIE1pZGRsZXRvbg== 92714\naXp1 92715\nX2hhc2hlcw== 92716\nIGhlbm5l 92717\nIExJTlVY 92718\nCVNlcnZpY2U= 92719\nIFRBTQ== 92720\nIGBf 92721\nIEFUQQ== 92722\nIGRhbmdsaW5n 92723\ncGFpbg== 92724\nX0JPVU5EUw== 92725\ncHJvZ3JhbW1pbmc= 92726\nIGN1cnJlbnRJdGVt 92727\nIGJlc2ll 92728\nZW1ibGU= 92729\nKGNhbGM= 92730\nLlNraW4= 92731\nIHBlYXJscw== 92732\nIEJ1cmI= 92733\nLW1vbml0b3I= 92734\nL2Nz 92735\nZmly 92736\nKHZlcg== 92737\nW2FyZ3M= 92738\nw7xja2Vu 92739\nZXBhcmF0b3I= 92740\nRG91 92741\nLkVudA== 92742\nIEVTQQ== 92743\nKGZt 92744\ndG9uZXM= 92745\nIFphYw== 92746\na3NhbQ== 92747\n4oCZYWxs 92748\nIE1TUw== 92749\nIkRvbg== 92750\nIHNpbXBsZXg= 92751\nIENvbnNjaW91cw== 92752\nIEFwcGxpY2FudA== 92753\ncGVsbGllcg== 92754\nIHBlZGVzdGFs 92755\nJGh0dHA= 92756\nIEF2YQ== 92757\nLkNH 92758\nIGludMOpcmVzcw== 92759\nIEludGVncmFs 92760\ncmVkZQ== 92761\nPWZvcm1hdA== 92762\nLlBhdGhz 92763\nX1BBUlRJVElPTg== 92764\nIHNlaA== 92765\nIFF1YW5kbw== 92766\nWW91dHViZQ== 92767\nLnB1dFRleHQ= 92768\n7KO87IS47JqU 92769\nLkFXUw== 92770\nIENzdg== 92771\nQ3Vyc29yUG9zaXRpb24= 92772\nLWJlZ2lu 92773\nX2NvdW50cmllcw== 92774\nLXJhbmRvbQ== 92775\n5Y2z 92776\nUGhpbGw= 92777\nIHBhbm9yYW1h 92778\nIHRoZXJlcw== 92779\n5Y+q 92780\nIHNpbGVuY2Vk 92781\nIEN1bWJlcmxhbmQ= 92782\nLlZpc2libGVJbmRleA== 92783\nLnN0YXRpc3RpY3M= 92784\nIHByb3BlbGxlZA== 92785\nQW1lcmljYW5z 92786\nIHZhbGlkYQ== 92787\nIEd1YW0= 92788\nIEZFTUE= 92789\nLnN5bnRheA== 92790\nZGdl 92791\nIGRlZXBlbg== 92792\nICAgICAgICAJCQkJ 92793\nIFNwZWNpYWxpc3Rz 92794\nIFNhbnRhbmE= 92795\nIEJlZXRsZQ== 92796\nICUKCg== 92797\nVXNlclByb2ZpbGU= 92798\nKCIkLg== 92799\nIGVtcGxvaQ== 92800\nIGVtYWlsaW5n 92801\nZ2V0T3JFbHNl 92802\nX1VQUEVS 92803\nLmRyaXZl 92804\nIHJlZGhlYWQ= 92805\nRk9VTkRBVElPTg== 92806\nIG11bHRpcGxpYw== 92807\nL2VmZmVjdHM= 92808\nIGhhbmR3cml0aW5n 92809\nX3Rh 92810\nIEJheg== 92811\nw7ZmZmVudA== 92812\ncHJpeA== 92813\nIGNoaXBzZXQ= 92814\nIGlwQWRkcmVzcw== 92815\nw61kYQ== 92816\nIFVuZw== 92817\nIFNjaGE= 92818\nLkZMT0FU 92819\nIHF1aWVybw== 92820\nb2Nocm9tZQ== 92821\nIHJlZWZz 92822\nYnNvbg== 92823\nIG3Dug== 92824\nIHRyYXlz 92825\nQm9tYg== 92826\nIG15TGlzdA== 92827\neGltaXR5 92828\nIERlbmc= 92829\nVW5p 92830\nLVNlcmllcw== 92831\nb2dhbnk= 92832\nbMSxaw== 92833\nL2NhbA== 92834\nIHJlYWxpemE= 92835\nIEhpYg== 92836\nCQoJCgo= 92837\nIGh1bWlsaWF0aW5n 92838\nWyR7 92839\nIHByZXRlbmRlZA== 92840\nIERhdGVuc2No 92841\nYW5zaWJsZQ== 92842\nCXJlbG9hZA== 92843\nIG1pZ2xpb3I= 92844\nX2JldA== 92845\nIHRvdGFsVGltZQ== 92846\nIEJheHRlcg== 92847\nIGVuYW1lbA== 92848\nL0ltYWdlcw== 92849\nIFNFUw== 92850\nIFNwcmluZ0FwcGxpY2F0aW9u 92851\nKWluaXRXaXRoRnJhbWU= 92852\nCWNhbA== 92853\nRUxFTUVOVA== 92854\nIEd1dGg= 92855\nKEJpZ0ludGVnZXI= 92856\nIE1lZGk= 92857\nLk1lbWJlcnM= 92858\nIHJlam9pY2U= 92859\nIGRvZg== 92860\nUEVuZFBvaW50 92861\nIGNsaXQ= 92862\nX1JFVVNF 92863\nTWFrZXM= 92864\nIHN6eQ== 92865\nIHNoYWRlZA== 92866\nIGZhdm91cmVk 92867\naXN0b2w= 92868\nZGV4 92869\nIGZsZXhHcm93 92870\nhac= 92871\nX3ByaW50ZXI= 92872\nLmZuYW1l 92873\ncGVyYXRpb24= 92874\nIG7Ds3M= 92875\nZ2dlcg== 92876\n6ICB 92877\nINCy0YDQtdC80Y8= 92878\nKGVmZmVjdA== 92879\nQnlVcmw= 92880\nIEFQUw== 92881\ndHV0b3JpYWw= 92882\nZWpz 92883\nU3FsUGFyYW1ldGVy 92884\nIHNjcmFwcw== 92885\nR3JlZXRpbmdz 92886\nRmVk 92887\nIFJFTkRFUg== 92888\nIGJsb29tcw== 92889\nIGRlYmlsaXRhdGluZw== 92890\nb21ldHJpY3M= 92891\nIHNpbWls 92892\nLWhlcm8= 92893\nIHJlYWxwYXRo 92894\nZGVwYXJ0bWVudHM= 92895\nQklORA== 92896\nIENhc3NpZHk= 92897\nbGlhbg== 92898\nU0tJUA== 92899\nLWNsZWFu 92900\nIHNpbGRlbmFmaWw= 92901\nX211bHRpcA== 92902\nanNvbkRhdGE= 92903\nQWdlbnRz 92904\nLmZoaXI= 92905\nIHRyaXVt 92906\nIGFzdG9yZQ== 92907\nIG5leA== 92908\nOnVwZGF0ZQ== 92909\nINC00LA= 92910\n4KSy 92911\nOyIpCg== 92912\nLlRleHRJbWFnZVJlbGF0aW9u 92913\nIG1pY3Jvc2NvcHk= 92914\nU1VS 92915\nYW5reQ== 92916\nIFBldGl0 92917\nbWFya2V0aW5n 92918\nIHZlcmlmaWNhcg== 92919\nYW1hZ2Vk 92920\nY3Ro 92921\nIGluY29uc2lzdGVuY2llcw== 92922\nIG1hasSF 92923\nIGdldEluZm8= 92924\nIHBhc3Npb25hdGVseQ== 92925\nIGljbXA= 92926\nW10+Cg== 92927\nU2luZ2Fwb3Jl 92928\nIE5ld3Rvd24= 92929\nIHJhaWxpbmc= 92930\nIEVubGlnaHRlbm1lbnQ= 92931\ndXRoZXJsYW5k 92932\nbGVpbmU= 92933\nX3JlZ2lzdHJv 92934\nIEVyaWNh 92935\nX3RpY2tldHM= 92936\nL21ldGhvZA== 92937\naXp6YXRv 92938\nR2F0dA== 92939\nLWZlYXR1cmU= 92940\nIDotKQ== 92941\nIHNlcnBlbnQ= 92942\nIEdyb3VwTGF5b3V0 92943\nTmlrZQ== 92944\ndW5nYQ== 92945\nIE1pbQ== 92946\nIGluY2Vzcw== 92947\nIGRlcGxldGlvbg== 92948\nX2xvdA== 92949\nIGJpcnRoZGF5cw== 92950\nIHJlbnRlcnM= 92951\nIGVxdWlwb3M= 92952\nIExlaHI= 92953\nX1BsYXk= 92954\nIHNwaWVsZQ== 92955\nIExBTkQ= 92956\nIEVuY291bnRlcg== 92957\naXphbmRv 92958\nIHBlcnU= 92959\nIHNsYW1taW5n 92960\nIHJlaW5zdGFsbA== 92961\nIGFuZ2k= 92962\nSW5UaGVEb2N1bWVudA== 92963\nIHZlcnNjaGlsbA== 92964\nIHZlcnNv 92965\nLnN0YWZm 92966\nKHZw 92967\nKGFjY291bnRz 92968\nZ2V0QXBwbGljYXRpb24= 92969\nIG1hbnRlbmVy 92970\nLlNP 92971\nLkFE 92972\nIE1vcm1vbnM= 92973\nCXJlYWw= 92974\nIGhvdGxpbmU= 92975\nIENhcmRpbw== 92976\ncGFnZUluZGV4 92977\nYmplcmc= 92978\nRm8= 92979\nIGNvbnNlaWxz 92980\nIG1pZ3JhaW5l 92981\nIGxhdGlubw== 92982\nIHRvcnBlZG8= 92983\namFiaQ== 92984\nL3Jz 92985\ndWJiZXI= 92986\nIENsYXNzZQ== 92987\n4Lw= 92988\nKC9eXA== 92989\nX2RlcGxveQ== 92990\nR1JFUw== 92991\nIFdIQVRTT0VWRVI= 92992\nIGFyY3B5 92993\nIG1pZWpzYw== 92994\nQXJteQ== 92995\nIHNjaMO2bmU= 92996\nIGJtaQ== 92997\nIDoiOwo= 92998\nIENydWlzZXI= 92999\ncWg= 93000\nLnByZXBlbmQ= 93001\nIHZpdmU= 93002\nb3JpYXNpcw== 93003\nICE9Cg== 93004\ndGVnYQ== 93005\nYW1lZGk= 93006\nUHJvamVjdGVk 93007\nLWJyZQ== 93008\nLHJlYWRvbmx5 93009\nIHN1YlRpdGxl 93010\nIG1pc3Ry 93011\nIEluaGFs 93012\nY292ZXJpbmc= 93013\nIHppag== 93014\nIEFSVElDTEU= 93015\nUlVMRQ== 93016\nIGFsdHJv 93017\nIHNldHRsZXM= 93018\naWRlbGJlcmc= 93019\nOiIuJA== 93020\nKGZl 93021\nX2Jt 93022\nIHByb3ByaWV0b3I= 93023\nIGtlZXI= 93024\nU2VwYXJhdGVk 93025\nX05FQVJFU1Q= 93026\nKHN0cnBvcw== 93027\nIENvbXB1dGF0aW9uYWw= 93028\nIGVybg== 93029\nSW5WaWV3 93030\nQWNyb3Nz 93031\nIGZydWl0eQ== 93032\nX21hcHBlZA== 93033\nIGdyYXR1aXRlbWVudA== 93034\nIHt9CgoK 93035\ncG90ZW50aWFs 93036\ncGFudHM= 93037\nIHNlbnRpbWVudGFs 93038\nIExpbmtlZGlu 93039\nKHBhdGNo 93040\nIGFkYXB0b3I= 93041\nIFVJU3Rvcnlib2FyZA== 93042\nIHNsYXNoaW5n 93043\nKCIvOg== 93044\nIHRleHREZWNvcmF0aW9u 93045\nLmRpYWc= 93046\nXFJlZGlyZWN0 93047\nIG5ldXJvc2NpZW5jZQ== 93048\nIEFkanVzdG1lbnQ= 93049\nIFNjb3RjaA== 93050\nIENvc2J5 93051\nU0VB 93052\nPXZpZXc= 93053\nIGV2b2x2ZXM= 93054\nIFNhbGlzYnVyeQ== 93055\n44CB4oCc 93056\nZXZlcnlvbmU= 93057\nKGFyYw== 93058\nIGFwYXJ0aGVpZA== 93059\nIGF6aW11dGg= 93060\nIFNoYW1hbg== 93061\n2KU= 93062\nw7NuaWNh 93063\nOmNsYXNz 93064\nIEluamVjdG9y 93065\nYWhhcw== 93066\nYWJsZXI= 93067\nX2VzdGltYXRvcg== 93068\nX0NVQkU= 93069\nIEtyYW5r 93070\nIHVuZmF2b3JhYmxl 93071\nIHJlcHV0ZWQ= 93072\nIENvbmRpdGlvbmFs 93073\nIG1pbGZz 93074\nIFJlc3RyaWN0aW9ucw== 93075\nKGhyZWY= 93076\nSnVhbg== 93077\nPEVudHJ5 93078\nCXRlbXBsYXRlVXJs 93079\nX3Byb2R1Y3Rpb24= 93080\nVHlwZUlE 93081\nIGJhbGs= 93082\nIG5ld0Fycg== 93083\nIGxpY2VuY2Vz 93084\nLnNvbHV0aW9u 93085\nLnNhbQ== 93086\nIEh2 93087\nIHRyZW1ibGluZw== 93088\nWWF3 93089\nIGZsZWVjZQ== 93090\nIHNob3ZlbA== 93091\nV2Vy 93092\nIHBhdHRlcg== 93093\nPVk= 93094\nIEZybQ== 93095\nU2NyZWVucw== 93096\nJCI= 93097\nIEJsb25k 93098\nINGB0LjRgdGC0LXQvA== 93099\nKG9k 93100\nIG5vY3Q= 93101\nb3VudGVycw== 93102\ndXNlcHBl 93103\nfGludA== 93104\nLnJlbWFpbmluZw== 93105\nIHVsdGltbw== 93106\nIG1hc3R1cmJhdGluZw== 93107\nbW1j 93108\nPUc= 93109\nIl19Cg== 93110\nIGZlYXJsZXNz 93111\nIGFsZ3VtYXM= 93112\nY3VsdA== 93113\nQWx0ZXJuYXRpdmVseQ== 93114\n5bKB 93115\nT0RFVg== 93116\nIEFkb3B0aW9u 93117\nIHdlYWx0aGllc3Q= 93118\nIG1lbnRyZQ== 93119\nL2dvdG8= 93120\nIGluZm9ybWFudA== 93121\nIFJvdXQ= 93122\nb2Zp 93123\nIGhhbW1lcmVk 93124\nIEVzdG8= 93125\n4oCZQnJpZW4= 93126\nIMWa 93127\nIGRlbWk= 93128\nINGB0LvQtdC0 93129\nIENsaW50b25z 93130\n7IWY 93131\n5aSn5bCP 93132\nRUNI 93133\nIGFuYXJjaGlzdHM= 93134\nIEJldmVyYWdl 93135\nIGdvdQ== 93136\nIGJyaWJlcnk= 93137\nIHBpY2t1cHM= 93138\nIHViZXI= 93139\nIHN5bmVyZ3k= 93140\nZmNu 93141\nIEhlbnRhaQ== 93142\nIEJhc2VtZW50 93143\nIG1vcmI= 93144\nX2N1 93145\namFkaQ== 93146\nKHByb2o= 93147\nIEJpbmdv 93148\nX2NhdGU= 93149\nW2VtYWls 93150\nKlg= 93151\nX1NFUA== 93152\nIHByaW5jaXBpbw== 93153\ndXBkYXRpbmc= 93154\nLy99fQ== 93155\nLi4uKA== 93156\nIERPRQ== 93157\nIHpn 93158\nc2hhcGVz 93159\nPXRtcA== 93160\nQ3J1ZA== 93161\nIHdvcmtwbGFjZXM= 93162\nIHN0YWJpbGl6ZWQ= 93163\nIHRlbnRhbmc= 93164\nLnByb2R1Y3RJZA== 93165\nIFRyaWRlbnQ= 93166\nIG9yY2hlc3RyYXRlZA== 93167\nIEJ1Y2NhbmVlcnM= 93168\nX3RvbGVyYW5jZQ== 93169\naWdyYXBoeQ== 93170\nw7xsZXI= 93171\nINi1 93172\nQVE= 93173\nIGF0aGxldGljaXNt 93174\nCVNlcnZlcg== 93175\nZXdlZA== 93176\nRGlkRW50ZXI= 93177\nUmVnaXN0ZXJz 93178\nX2VtbHJ0 93179\nIGZ1bmN0aW9uYWxpdGllcw== 93180\nKGhkYw== 93181\nX21hcmtlcnM= 93182\nT3JlZ29u 93183\nKFN0cg== 93184\nIEdldEJ5SWQ= 93185\nIHp3YXJ0ZQ== 93186\nIE9DSQ== 93187\nIEphbWU= 93188\nX2NyaXQ= 93189\nIHN0b2NraG9sbQ== 93190\nCURpY3Rpb25hcnk= 93191\nX2NhcGFiaWxpdGllcw== 93192\nQ1RS 93193\nIG51bWE= 93194\nX2ZpcnN0bmFtZQ== 93195\nIE5TUmFuZ2U= 93196\nIG1vc3RyYQ== 93197\nIEFycml2YWw= 93198\nKElTZXJ2aWNlQ29sbGVjdGlvbg== 93199\nIHRlYXNwb29ucw== 93200\nIFNldFVw 93201\nCQkNCg0K 93202\nKGd1aWxk 93203\nLiJd 93204\nIG3hu5tp 93205\nYmZm 93206\nREFURVM= 93207\nKCldCgo= 93208\nIGh1bWFub2lk 93209\ndGhybw== 93210\nKGtsYXNz 93211\nIFZhZA== 93212\nZnNw 93213\nLVNhaA== 93214\nIFVTRVJOQU1F 93215\nIFByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncw== 93216\nIGxlc2lvbg== 93217\nX0RFTklFRA== 93218\nIFRISU5L 93219\ngqQ= 93220\nbWVudGFs 93221\nIHByZWNhcmlvdXM= 93222\nIE5vc2U= 93223\nIGNvbmNs 93224\nIHdpbGRmaXJl 93225\nIFRCcmFuY2g= 93226\nIEJBTQ== 93227\nL2Nzdg== 93228\nIE5BTg== 93229\nIENsZWFyYW5jZQ== 93230\nXEJsb2Nr 93231\nLmFubm90YXRl 93232\n5om+ 93233\nIFdISUxF 93234\nZ2VidW5n 93235\nPkxpc3Q= 93236\nc2ht 93237\nUm9zcw== 93238\nYWZk 93239\nW3RpZA== 93240\nUGVyUGl4ZWw= 93241\nKyhc 93242\nIEN5YW4= 93243\nIEtub3Q= 93244\nX3Zsb2c= 93245\nL3Zhcg== 93246\nW19f 93247\nIGhhc2htYXA= 93248\nKCk7DQ0K 93249\nIGFtYXNzZWQ= 93250\nIGRhdGVQaWNrZXI= 93251\nIFNhdG9zaGk= 93252\nX0NBUEFDSVRZ 93253\nIGJ1eg== 93254\nIE1pbmg= 93255\nU2V0Q29sb3I= 93256\nKz0nPA== 93257\nIEludmVudA== 93258\nb3JjYQ== 93259\naWdudW0= 93260\nIEFtcGg= 93261\nIHJlZmx1eA== 93262\nCiAgICAgICAgICAgICAgICAgICAgICAgIAo= 93263\ndWhu 93264\nKFRN 93265\nYWxsZXk= 93266\nIGxlZnRvdmVycw== 93267\nZmRj 93268\n4oCcVGhlc2U= 93269\nIGNyYXdsZWQ= 93270\nKFZvaWQ= 93271\naWd0ZQ== 93272\n8J+S 93273\nc2V0RGVmYXVsdA== 93274\nIEJlZ2lubmVy 93275\nUG9r 93276\nIEhMUw== 93277\nIGdhbWVJZA== 93278\nIEFtYmllbnQ= 93279\nX1BSRUQ= 93280\nLiJ9LAo= 93281\nw7xocnVuZw== 93282\nLlN5bmM= 93283\nIGludmU= 93284\nIE51cnNlcnk= 93285\nIGdsYXplZA== 93286\nq+yekA== 93287\nX2ZhdGFs 93288\nX2Rpc3BhdGNoZXI= 93289\nW10pDQo= 93290\nIGRldXRzY2hlbg== 93291\n6rGw 93292\nU2hhcGVz 93293\nIGlycmV2ZXJzaWJsZQ== 93294\nX3Blcw== 93295\nX2VzYw== 93296\nIHRoZXJtb21ldGVy 93297\n44OU44O8 93298\nX3NxcnQ= 93299\nIl09PSI= 93300\nIGN1bG1pbmF0aW9u 93301\nV29yZFByZXNz 93302\nIGxldmVu 93303\nVmVydGV4VXZz 93304\nIEhheXdhcmQ= 93305\nIEFzc2V0SW1hZ2U= 93306\nIG1haXpl 93307\nIGNoaWNhZ28= 93308\nIHRhdg== 93309\nZXhwZW5zZXM= 93310\n0K0= 93311\nK2Y= 93312\nLiInIjsK 93313\nLVNB 93314\nIEtvdGE= 93315\nTWFpbkZyYW1l 93316\nLnNhbGU= 93317\nX0JV 93318\nIHN0cmVu 93319\nX2ZpbHQ= 93320\nL3ByaW50 93321\nKFBhY2tldA== 93322\nINC30LDQsg== 93323\nQWN0cw== 93324\n0LXQu9C10YQ= 93325\nIHJlbWF0Y2g= 93326\nIHJpZGRlbg== 93327\nIH0pKCk7Cg== 93328\nIGVuZG90aA== 93329\nIGNlcnRpZnk= 93330\nIFVJUGlja2VyVmlldw== 93331\nXE5vdGlmaWNhdGlvbnM= 93332\nCVRpdGxl 93333\nIGluZXF1YWxpdGllcw== 93334\nIE1vcmFu 93335\nIERhZW1vbg== 93336\nbGVzaWE= 93337\nIGhvcHBpbmc= 93338\nIGd1c3Rv 93339\nIEZpcmViYXNlRmlyZXN0b3Jl 93340\nIHBvbHlsaW5l 93341\nIHNwaWtlZA== 93342\nJSIpOwo= 93343\nIExBVElO 93344\nTGFiZWxUZXh0 93345\nIHN0cmFwb24= 93346\nX2ZpZA== 93347\nLXNwZWNpYWw= 93348\nYXJnZWQ= 93349\nIFNUSUxM 93350\nUXVhbGlmaWVkTmFtZQ== 93351\nLlJFUw== 93352\nI2M= 93353\nLndyaXRlbG4= 93354\nIEltbXV0YWJsZUxpc3Q= 93355\nIFRodW1i 93356\nIHNpbWQ= 93357\nRGVzY3JpY2Fv 93358\nLlNldFRleHQ= 93359\nIG5vbnByb2ZpdHM= 93360\nV2l0aGRyYXc= 93361\nLWVuY29kZWQ= 93362\nc2Jpbg== 93363\nIGFtb3J0 93364\nCWRk 93365\ncmlm 93366\nIHBhdGVybmFs 93367\nLk1hcEZyb20= 93368\nX2Fzaw== 93369\nIHJlY291cnNl 93370\nIGJhY2tzdG9yeQ== 93371\nCW1hbmFnZXI= 93372\nX0RHUkFN 93373\nIEJpaGFy 93374\naW50ZWxsaWdlbmNl 93375\nIHNraW1hZ2U= 93376\nKGVuY29kZXI= 93377\nIHN3aXJsaW5n 93378\nIEFwcGV0 93379\nX3NhbHQ= 93380\nIGF0dGU= 93381\nIFNRVUFSRQ== 93382\nIE5ldHo= 93383\nX3BhaW50 93384\nYXPEsQ== 93385\naXNjaQ== 93386\nRmxv 93387\nLWdvYWw= 93388\nLnNldFN0cm9rZQ== 93389\nIEF1c2Nod2l0eg== 93390\nIEFiZGVs 93391\nIGFuZXc= 93392\nIOWung== 93393\nIHRvdGFsUGFnZXM= 93394\nIHJlZmFjdG9y 93395\nIGNyZWF0aXZlbHk= 93396\nZW1heA== 93397\nb2RveHk= 93398\nX3R4bg== 93399\nLlNvY2tldHM= 93400\nIFJpZGxleQ== 93401\n4buxYw== 93402\nc2FtcA== 93403\nTWluTWF4 93404\nIHdvcnNlbmluZw== 93405\nb3VudGFpbnM= 93406\nYXJ0bmVy 93407\nLXByb2Y= 93408\nc2luZ3VsYXI= 93409\nPWlz 93410\nIEZFQw== 93411\nX0ZN 93412\nIOaIlg== 93413\nIENhdWdodA== 93414\nX1NDTA== 93415\nIGV4cG8= 93416\naW5mcmE= 93417\nIE1FUw== 93418\nY2hhcA== 93419\nYWx0ZQ== 93420\nYXJraW4= 93421\nL21M 93422\nIHNlbmREYXRh 93423\nIGZyYW7Dp2Fpc2U= 93424\nIHPDpg== 93425\nX0RFRklOSVRJT04= 93426\nKioqKioqCgo= 93427\nXEN1c3RvbWVy 93428\nIOKWiOKWiOKWiOKWiOKWiA== 93429\nIHBlcnBldHJhdGVk 93430\nIEZ1cmlvdXM= 93431\nIHRlbmdh 93432\nbGVhcmVk 93433\nVUxMRVQ= 93434\naW5pYw== 93435\nZWFyY2hCYXI= 93436\nPENhcg== 93437\nIFJlbmV3YWJsZQ== 93438\nIGNvbnRlbXBsYXRlZA== 93439\nL2Zvcm1hdA== 93440\nIGZvcmdpdmluZw== 93441\nLlN1YkVsZW1lbnQ= 93442\nUFVURQ== 93443\nLmNvbnRlbnRTaXpl 93444\nIHJlc3BlY3RmdWxseQ== 93445\n4oCcCgo= 93446\nIHBvaWduYW50 93447\ndXJpbGU= 93448\nfSkiCg== 93449\nc2VxdWVudGlhbA== 93450\nL2Zhc3Q= 93451\ncHJ1bmc= 93452\nIFN0dW5uaW5n 93453\nIEJZVQ== 93454\nIGNvbXBhcmVy 93455\nCXJk 93456\ndW5pY29ybg== 93457\nxrBh 93458\nLkdldEl0ZW0= 93459\nIHNlY3Rpb25hbA== 93460\nanVkZ2U= 93461\ndXh0YXA= 93462\nIHN1bmRheQ== 93463\nIHDDpA== 93464\nTWlubmVzb3Rh 93465\nIk4= 93466\nIGFwcGxpY2F0aW9uV2lsbA== 93467\nQU5HRVI= 93468\nIHJlYXNvbmVk 93469\nIFpFTkQ= 93470\nemFw 93471\nPWJhY2s= 93472\nb3NwaGF0ZQ== 93473\n6IqC54K5 93474\nIHRpdHRlbg== 93475\nIEFzc29j 93476\nQWN0aXZpdHlDcmVhdGVk 93477\nKVst 93478\nPyIKCgoK 93479\nIGpvdA== 93480\n2Lg= 93481\nIHVuY29tcHJlc3NlZA== 93482\nLklzREJOdWxs 93483\nIHZhc2U= 93484\nIGxvcmVt 93485\nIGVudHJlcHJpc2U= 93486\nIENvbnNlbnQ= 93487\n44Op44Oz 93488\nQnlWZXJzaW9u 93489\nIHF1aWVuZXM= 93490\nCWNvbnQ= 93491\nIEJsYWNraGF3a3M= 93492\nIEJsYXNpbw== 93493\nIHRhbmtlcg== 93494\nIHN0YXJ0dGltZQ== 93495\nIFNlYXM= 93496\ncGlvcw== 93497\nLlNwbGl0Q29udGFpbmVy 93498\nY29tcGV0aXRpdmU= 93499\nIHBCdWZmZXI= 93500\nIGNvbnNlbnRpbmc= 93501\nLmFkZE9ic2VydmVy 93502\naXRjaGVk 93503\nIG1pc2NlbGxhbmVvdXM= 93504\nIFRvcHM= 93505\nCWxw 93506\nY21kcw== 93507\nLmRlcGFydA== 93508\nIGZOYW1l 93509\nCWJlc3Q= 93510\nOlA= 93511\nIHN3YXRo 93512\nIHZva3M= 93513\nYWxsb24= 93514\nIEh0bWxXZWJwYWNrUGx1Z2lu 93515\nLmxvZ2dlZElu 93516\nYnVja2V0cw== 93517\nIGhvbW9waG9iaWM= 93518\nIHN1YmR1ZWQ= 93519\nIG1lc3NhZ2Vib3g= 93520\nV2hhdHNBcHA= 93521\nIGRpc3NpcA== 93522\nIE1BTlVBTA== 93523\nTElLRUxZ 93524\ndGVzdGRhdGE= 93525\nLU9jdA== 93526\nRXhpdGVk 93527\nIFRhc21hbmlh 93528\nbGFj 93529\nIHRow7RuZw== 93530\nU3Rvcmllcw== 93531\nIGJpb2NoZW1pY2Fs 93532\nb3JyZQ== 93533\nIGVjbGlwcw== 93534\nIEFzc2VtYmx5UHJvZHVjdA== 93535\ncnRsZQ== 93536\nIFdpbGhlbG0= 93537\ncGl6emE= 93538\nX0RI 93539\nY29uag== 93540\nIHB1ZWJsbw== 93541\nIGxpcXVl 93542\nIGN1cGlk 93543\nIEFjdGl2aXR5Q29tcGF0 93544\nLlNt 93545\nIl19 93546\nbWFpbGJveA== 93547\nLm9wdFN0cmluZw== 93548\nLW9i 93549\nIE1hdWk= 93550\nYXRhaXJlcw== 93551\nIG1lcnJ5 93552\nUm5k 93553\nIGNhcmFjdGVyw61zdGljYXM= 93554\nVHJv 93555\nKGNu 93556\nLmxk 93557\nLXBvaW50cw== 93558\nLnNi 93559\nIHZlag== 93560\nIGNhcmVnaXZlcg== 93561\nIG5hdQ== 93562\nRElSRUNUT1JZ 93563\nKGFuZw== 93564\nKC4p 93565\nIGV4cGxhbmF0b3J5 93566\nZWxzZXk= 93567\nIE92ZXJuaWdodA== 93568\nIGxhaXNzZQ== 93569\nIFJBVEU= 93570\nIEdvdw== 93571\nUmVjb2duaXRpb25FeGNlcHRpb24= 93572\naWNoZXJ0 93573\nIHJldm9sdXRpb25z 93574\nJGNhdGVnb3J5 93575\nIHVuZGVmZWF0ZWQ= 93576\nL2NvbW11bml0eQ== 93577\nLXBhcnRz 93578\nLWFwcGxpY2F0aW9u 93579\nK0E= 93580\nL3N3ZWV0YWxlcnQ= 93581\nIEtt 93582\naWxhdGVk 93583\nYXRhdA== 93584\nUEFU 93585\nxI1l 93586\nIFRlYw== 93587\nLm9uQWN0aXZpdHlSZXN1bHQ= 93588\nXFdlYg== 93589\nIEx1Zw== 93590\nb3ZvbHRh 93591\nIGFsdHJ1 93592\naWd5 93593\nIGLEmWTEhQ== 93594\nIGFjdGl2YXRpb25z 93595\nIGF1ZGl0aW5n 93596\nRVJHRQ== 93597\nIOiLpQ== 93598\nQ2FybG9z 93599\nIGtJbnN0cnVjdGlvbg== 93600\nbWluZXI= 93601\nIH19Lw== 93602\nQW5kSGFzaENvZGU= 93603\nIEJvdXJib24= 93604\nLnByb2Y= 93605\nIGltcHJpbWly 93606\nIEZlcmRpbmFuZA== 93607\n0LzQtdC90YI= 93608\nL3t9Lw== 93609\nIENsYWly 93610\nIE9uQ29sbGlzaW9u 93611\nc2FsZG8= 93612\ncmFpc2Vk 93613\nIEFCT1ZF 93614\nKCk9Pg== 93615\nIGRldXRzY2hsYW5k 93616\naGliaXRlZA== 93617\nRXh0cmVtZQ== 93618\nL2hvb2tz 93619\nIGRvdXQ= 93620\nIFZPQw== 93621\nZXRob3Zlbg== 93622\nUE1D 93623\nIHJlc3RhcnRpbmc= 93624\nIFNDTg== 93625\nIEVP 93626\nIERKcw== 93627\nUGFzc3dvcmRGaWVsZA== 93628\nLkFjY2Vzc2libGU= 93629\nCWJ1cw== 93630\nU1RSVUNUSU9OUw== 93631\nIGxhdGVu 93632\nIFNOQVA= 93633\nX0hFUlNIRVk= 93634\nIG9uc3RhZ2U= 93635\n5bCP5pe2 93636\nIHNhaWxvcg== 93637\nIEN1cnNv 93638\nIGltcHJvdmlzZWQ= 93639\nIGdlbmVyYWxpemU= 93640\nIGJ1ZW5v 93641\nIGNlcmVtb25pYWw= 93642\nIENOUw== 93643\nIHBpZ2Vvbg== 93644\nbXNw 93645\nL0FJRFM= 93646\nbGluZUVkaXQ= 93647\nIEZpbmFuY2luZw== 93648\nIGpUYWJsZQ== 93649\nIGJvdHRvbXM= 93650\nIFRleHRJbnB1dFR5cGU= 93651\nIG1laXNqZQ== 93652\nLXNpZ25lZA== 93653\nIEdyZWVudmlsbGU= 93654\nb3BoaWxpYQ== 93655\nSWNvbk1vZHVsZQ== 93656\nIGNsYW5kZXN0 93657\nZW1haW4= 93658\nU0NBTg== 93659\nX1RJTUVT 93660\nIGxlY2tlbg== 93661\nKGNhbmNlbA== 93662\nIGVjc3Rhc3k= 93663\nLk1VTFQ= 93664\nIG1vZXRlbg== 93665\nIGFwcHJvcHJpYXRpb25z 93666\nIFFMRA== 93667\nIEd1aWw= 93668\nIHRyYXBwaW5n 93669\neERB 93670\nIGvDtmxu 93671\nZW51bXM= 93672\n4oCcVG8= 93673\ncG9ydG8= 93674\nbmluZ2Fy 93675\nIFRPTw== 93676\nLVNU 93677\nIE1hdGhz 93678\nIGt1cnM= 93679\nIFJFUEw= 93680\nX2NvbnRyaWI= 93681\nIFBoeQ== 93682\ncmFuZw== 93683\nLm1hdmVu 93684\nLWZvbGxvdw== 93685\nIC0tLS0tLS0tLS0t 93686\nxLHEnw== 93687\nX3dpbm5lcg== 93688\nLkNyaXRlcmlh 93689\nKGRhdGFTb3VyY2U= 93690\nIHNldElucHV0 93691\nIFRJTUVTVEFNUA== 93692\nb3BlcmFuZHM= 93693\nZ2V0V2luZG93 93694\nLmZhY2VWZXJ0ZXhVdnM= 93695\nIEludmVzdGluZw== 93696\nVnk= 93697\nIHBlcnNlY3V0ZWQ= 93698\n4bq/dQ== 93699\nIFBsdW1iaW5n 93700\nT05HT0RC 93701\nRXZpZGVuY2U= 93702\nIFN0cm9t 93703\ncXVvdGE= 93704\nTGl2ZXJwb29s 93705\nCWF0dGFjaw== 93706\nbWluaW1hbA== 93707\nIG9uS2V5RG93bg== 93708\nIG1vZHVsZUlk 93709\nIFZlcmFuc3Q= 93710\nbW9ydA== 93711\nYWNpc3Rz 93712\nIE1BU1M= 93713\nX1VOREVS 93714\nLmdldFJ1bnRpbWU= 93715\nRU5USUNBVElPTg== 93716\nUk9LRQ== 93717\nIHNjYWxlWA== 93718\nIHNlcnRh 93719\nIEZyZXF1ZW50bHk= 93720\nX1RSQU5TRk9STQ== 93721\nIHR3aWxpZ2h0 93722\nIE1jS2Vuemll 93723\nbGVkZ2Vk 93724\nIEB7QCI= 93725\nX0FDVElW 93726\nIGhvb2tlcnM= 93727\nPWRlZmF1bHQ= 93728\nIHdhbG51dA== 93729\nIHVzZU5ld1VybFBhcnNlcg== 93730\nIENoZWVy 93731\nIHdyb25nZnVs 93732\nbmlv 93733\nYnRj 93734\nLnN0cmlkZQ== 93735\nIHN1Y2Nlc2Z1bGx5 93736\nIFRyb2xs 93737\naWZpY2lv 93738\nLmNvbmQ= 93739\nIGhlYXBz 93740\nX1BIT1RP 93741\nPEFkZHJlc3M= 93742\nIFN0aWNreQ== 93743\nIG5pZ2h0dGltZQ== 93744\nIGRhbmRv 93745\nIEJJTEw= 93746\nINC+0YLQstC10YI= 93747\nRGV0ZXJtaW4= 93748\nIGZ6 93749\nKHNpZ25hdHVyZQ== 93750\nIHZpbmRlbg== 93751\nLkNPTk5FQ1Q= 93752\ncnVpc2U= 93753\nIHh1 93754\ncHJldmVudA== 93755\nRk9Y 93756\nVUlBcHBsaWNhdGlvbkRlbGVnYXRl 93757\nU3BsYXNo 93758\nIGVtYnJvaWRlcmVk 93759\nIEhpbGZl 93760\nLnNoYWRlcg== 93761\nIGRvdWJ0ZWQ= 93762\nUmVzcG9uc2VTdGF0dXM= 93763\nIHVuc3RvcHBhYmxl 93764\ndW5sb2Fk 93765\nKyJd 93766\nImxhYmVs 93767\nIGZyZWVsYW5jZXI= 93768\nRGlyZWN0ZWQ= 93769\nIHZvcmhhbmQ= 93770\nIFNubw== 93771\nZXhpc3RlbmNl 93772\nb3JkaWFs 93773\nemFn 93774\nLkFnZQ== 93775\nIHNwYXducw== 93776\nIFBTRw== 93777\nc3RpdHV0aW9ucw== 93778\nIHNpZ2h0aW5n 93779\nLXRhbGs= 93780\nINGB0L7RhdGA0LDQvQ== 93781\nZW5lcmltYQ== 93782\nIEJlbnRvbg== 93783\nX1N0b3Jl 93784\nVHJhbnNwYXJlbnRDb2xvcg== 93785\nIEV4cGxvc2lvbg== 93786\nX0lTUw== 93787\nQ2hlY2twb2ludA== 93788\nIGRlZmxhdGU= 93789\n0JLRi9Cx 93790\nLXRyYW5zZmVy 93791\nIEJhYmllcw== 93792\nIGltYQ== 93793\nLnVzYWdl 93794\nIG5lZ2F0aXZpdHk= 93795\nIEV4dHJlbWVseQ== 93796\na2o= 93797\nRG93bmxvYWRlcg== 93798\nCWFjdA== 93799\nW2NoYXI= 93800\nTm9ybWFscw== 93801\nX3JlZmVyZW5jZXM= 93802\nIGRyYWNvbg== 93803\n4bulYw== 93804\nX1RSTlM= 93805\nY29tcGFueUlk 93806\nIFZlcmQ= 93807\nYW5pbw== 93808\nIE1hdGNoZXJz 93809\nKHJlbGF0aXZl 93810\nIHJlZWxlY3Rpb24= 93811\nLkhF 93812\nVGF1 93813\nINGB0YLRgNC+0LrQuA== 93814\nIE1ldGFscw== 93815\nIENvY2t0YWls 93816\nIGFwcmVuZGVy 93817\nX3ByZWZlcmVuY2U= 93818\nLlNjaGVtZQ== 93819\nIGdsR2V0VW5pZm9ybUxvY2F0aW9u 93820\nVXNpbmdFbmNvZGluZw== 93821\n0YDQsw== 93822\nICJdIik7Cg== 93823\nTGVhZGVycw== 93824\nJ8OqdHJl 93825\nX0RlbGF5 93826\nUHJvY2Vzc2Vz 93827\naWN1bHR1cmU= 93828\nXCI6e1wi 93829\n4oCUIg== 93830\nRW1vamk= 93831\nLWdyb3c= 93832\nIENDRA== 93833\nY29tcG9zZWQ= 93834\nTWFpbnRlbmFuY2U= 93835\nIFJ5emVu 93836\nKGFn 93837\nLnByb2I= 93838\nIFNpbmF0cmE= 93839\nIGhvcnJlbmQ= 93840\nIE1vdW50ZWQ= 93841\nX1BFRVI= 93842\nIGN1aw== 93843\nIHPDuGtlcg== 93844\nIFF1YXI= 93845\nX1JFU09MVVRJT04= 93846\nJ2VhdQ== 93847\nIGJvdXJib24= 93848\nIGF0SW5kZXg= 93849\nL3BvbA== 93850\nIOq0gA== 93851\nCXB3 93852\nfSl9Cg== 93853\nLmZvcm1EYXRh 93854\nIHVkZW4= 93855\nIHJvYXJpbmc= 93856\nTm90aWZpY2F0aW9uQ2VudGVy 93857\nIGNsdXN0ZXJlZA== 93858\nIHBhaXJ3aXNl 93859\nbXVsdGlsaW5l 93860\nR2FtZURhdGE= 93861\nLkxhcmdl 93862\nKSc6 93863\nINGB0LXRgNCy0LXRgA== 93864\nIFVJTWFuYWdlcg== 93865\nU3Zj 93866\nIFBsYXlzdGF0aW9u 93867\nLk1vcmU= 93868\nLnF1YWxpdHk= 93869\nIGNvbmZpZ0ZpbGU= 93870\nLWNvbnRhaW5pbmc= 93871\nIEdvYXQ= 93872\nZW5jaW9u 93873\nIGxpa2VuZXNz 93874\nLXVzaW5n 93875\nIHNlYXNpZGU= 93876\n4bqpdQ== 93877\nYW50aWNpcGF0ZWQ= 93878\nRm9sZGVycw== 93879\nLUxldmVs 93880\nb3BjaW9u 93881\nKXByZXBhcmVGb3JTZWd1ZQ== 93882\nPigpKQ== 93883\nPWFkZA== 93884\nXGdyaWQ= 93885\nIHln 93886\nX0RSSVZF 93887\nIEdldE5hbWU= 93888\nLkRBTw== 93889\nIGhhbm4= 93890\nCWNhdA== 93891\nIHZpZ24= 93892\nIEhlbGxlcg== 93893\nIENSRUFURUQ= 93894\nYmVyb3M= 93895\nYnV0dA== 93896\nIGJlbmRz 93897\nIExlZXI= 93898\n0KY= 93899\nIFNNUA== 93900\nVmVjdA== 93901\nIG9iamVjdFR5cGU= 93902\nOmFzeW5j 93903\nIGNvbXBldGVuY3k= 93904\nIFF0QXdz 93905\nTG91 93906\nL2NhdA== 93907\nUHJvc3RpdA== 93908\nLXZlcw== 93909\nCXR2 93910\nIEVJ 93911\nQW5kV2FpdA== 93912\nIFRPT0w= 93913\nfSo= 93914\nX1Jlcw== 93915\nIGFsaWdubWVudHM= 93916\n7KGw 93917\nIENsYW1w 93918\nLXBhZA== 93919\nIHdyaXRlRmlsZQ== 93920\nIEFwcHJlYw== 93921\n4oCZYXV0cmVz 93922\ndWRhZGVz 93923\nIGx1Z2FyZXM= 93924\nc3BlbmRlcg== 93925\nW2ltYWdl 93926\nRVhJU1Q= 93927\nIGRlY2VpdmU= 93928\nIGh1bnRz 93929\nX1ZPSUNF 93930\nX0RY 93931\nQ0FD 93932\nICgoJw== 93933\naXNrcw== 93934\nLGZpbGVuYW1l 93935\nIGxlYW5z 93936\nSW5wdXREaWFsb2c= 93937\nRGF0YUNvbnRyYWN0 93938\nIHNtb290aGVk 93939\nIHJlY3J1aXRlcnM= 93940\nIHRhbmdsZWQ= 93941\nX1RhYg== 93942\nIEZpbGVBY2Nlc3M= 93943\nWUM= 93944\nIHZY 93945\nPGR5bg== 93946\nTGV4ZXI= 93947\nIOKYhg== 93948\nIGdsR2Vu 93949\nVGVtcG9yYWw= 93950\nIEFURg== 93951\nYW5rbw== 93952\nVXNlckNvZGU= 93953\nIEtvdGxpbg== 93954\nLi4KCgoK 93955\nRU5DRUQ= 93956\nLnVudHJhY2tlZA== 93957\nX21y 93958\nIHdhdmVsZW5ndGhz 93959\nIGRpY2hv 93960\nIGltdQ== 93961\nX2NyZQ== 93962\nW0o= 93963\nX0RG 93964\nIGF0dGFpbm1lbnQ= 93965\nIGxpdGVycw== 93966\nW2tleXM= 93967\nIGxpc3Rhcg== 93968\nSHR0cHM= 93969\nIGJyZXdlcnM= 93970\nIGFjb21wYcOx 93971\nIHRvYXN0ZWQ= 93972\nLmZyaWVuZA== 93973\nIHJlbHU= 93974\nIFBzeWNoaWM= 93975\nTWFuaXA= 93976\nZG5h 93977\nUHJp 93978\nLWZsYXNo 93979\nKGFydGlzdA== 93980\nIEtvdg== 93981\ncHJlc2VydmU= 93982\nX3BlbWI= 93983\nLnNldFByb2dyZXNz 93984\nIGR1c2s= 93985\nIGNhbm5hYmlub2lkcw== 93986\nIEt1bmQ= 93987\nIENvdW50aWVz 93988\nIO2OmOydtOyngA== 93989\nIHJlbmFtaW5n 93990\nIFJ1c3Nv 93991\nTlNTZXQ= 93992\nKEVYUFI= 93993\n5YW25LuW 93994\nRGlhZ3JhbQ== 93995\nLGxhc3Q= 93996\nKHdpdGhEdXJhdGlvbg== 93997\nIGluZGVidGVk 93998\nIERpY2tlbnM= 93999\nIEFscHM= 94000\nIERlZ3JlZXM= 94001\naWRhcg== 94002\nLWJsb29k 94003\nK29mZnNldA== 94004\nIEh1ZA== 94005\nb3VuZGVy 94006\ndWxuZXJhYmxl 94007\nIHByaW8= 94008\nYmxpbmQ= 94009\nKHBhY2s= 94010\nIG5pZ2h0bGlmZQ== 94011\nIGlsbHVzdHJhdGluZw== 94012\nIG51dHNoZWxs 94013\nIGJyb2FkY2FzdGVycw== 94014\nIGNvbXBhbnlOYW1l 94015\naXRvcmU= 94016\nLnJpZ2h0QmFyQnV0dG9uSXRlbQ== 94017\nYm90ZQ== 94018\nIFBJVA== 94019\nLXNjcm9sbGJhcg== 94020\nIHdpbmR5 94021\nIFFNYWluV2luZG93 94022\naHVl 94023\nLmVwb2No 94024\nIGNhbWVy 94025\nIENMVUI= 94026\naWZhcg== 94027\nVW5hdmFpbGFibGU= 94028\nLXF1b3Rl 94029\nIEdyYXo= 94030\nIHZhbHU= 94031\nX01BVEVSSUFM 94032\nIHBlbnk= 94033\nIHRyYXR0 94034\nIGxpY2tlZA== 94035\nCWNhbg== 94036\nIFRhaXdhbmVzZQ== 94037\nUGFnZUluZGV4 94038\nLlRpcG8= 94039\nX1JlZA== 94040\nIHZmcw== 94041\nX3RyYW1wb2xpbmU= 94042\nIE1QUw== 94043\nIFBlYW51dA== 94044\nIExvY2tlZA== 94045\nCUFU 94046\nanNwYg== 94047\nX05PREVT 94048\nJ1dl 94049\nIENvbnZlbmllbnQ= 94050\nX3N1Y2Nlc3NmdWw= 94051\nK3o= 94052\nWUxlYWY= 94053\nIHBlZGlncmVl 94054\neHo= 94055\nIHNhbHZhcg== 94056\nX0Rlc2M= 94057\nIG5lc3Rh 94058\nIGhhcmRjb2RlZA== 94059\nLmdvbGQ= 94060\nLkltYWdlRmllbGQ= 94061\nX0JT 94062\nTEs= 94063\nQ2hvY29sYXRl 94064\nLlN0YXJ0dXA= 94065\nIGFuZWNkb3Rlcw== 94066\nLk1h 94067\nP10= 94068\nL3RvcGlj 94069\nLlNjcm9sbEJhcnM= 94070\n0YHRgtCy0LA= 94071\nIE1PTQ== 94072\nIHFvcw== 94073\nYXJ5YW5h 94074\nw6RjaHN0 94075\nIE1jR2lsbA== 94076\nIEVEVUM= 94077\nKHBvc3Rz 94078\nIEVudHdpY2tsdW5n 94079\nX3NraWxscw== 94080\nLWd1YXJk 94081\nIHRleHRpbGVz 94082\nfHVuaXF1ZQ== 94083\nIEFyaXRobWV0aWM= 94084\nTG9hZElkZW50aXR5 94085\nKTt9Cgo= 94086\nIGFzc3VyZXM= 94087\nV2lsZGNhcmQ= 94088\nIGRlZmF1bHRlZA== 94089\nIE5vdFN1cHBvcnRlZEV4Y2VwdGlvbg== 94090\nIFRvbWF0bw== 94091\nLlN1bW1hcnk= 94092\nISIu 94093\ndXRoZXJmb3Jk 94094\nIGxvb3Bob2xl 94095\nIGNtYWtl 94096\nLWRhdA== 94097\nIHJhZ2F6em8= 94098\nIGNhcGl0YWxz 94099\nIEltcG9ydGFuY2U= 94100\nIER1bmdlb25z 94101\nX3pvbmVz 94102\nLnNhdA== 94103\nICAgICAgCiAgICAgIAo= 94104\nY2F0ZWdvcmlhcw== 94105\nIGRhdGF0YWJsZQ== 94106\nIG5hamxl 94107\nKGdw 94108\nLXJlbg== 94109\nIHBhbmlja2Vk 94110\nIFNreWw= 94111\nIFFVSUNL 94112\ndmFsdWVPZg== 94113\nU3RhdGlzdGlj 94114\nIGRlbWVhbm9y 94115\nbmRlcm4= 94116\nIEFwcGVhcnM= 94117\nUHJhZ21h 94118\nX3Bhc3Q= 94119\nSGFzaHRhYmxl 94120\nIHRoYW5raW5n 94121\nLmNzcmY= 94122\nIHBhdmU= 94123\nIFZpY3RpbQ== 94124\nIFDDpQ== 94125\nRmlyc3RuYW1l 94126\nQ0FURUdPUlk= 94127\naWxlc3RvbmU= 94128\nJyktPl9fKCc= 94129\nIGluY2FwYWM= 94130\nU3RyZWFtV3JpdGVy 94131\nIGNvbW11bmlvbg== 94132\nX3N0ZGVycg== 94133\n6Ieq5rK7 94134\nIGh1bWFuaXRpZXM= 94135\nINC70Y4= 94136\nIFBhcmFz 94137\nbG9mZg== 94138\nSGVhZGVyVGV4dA== 94139\nZ3JlZ2F0ZWQ= 94140\nLlhSVGFibGVDZWxs 94141\nIGVudGl0eUlk 94142\nIE1hc3Rlcnk= 94143\nb2xkdA== 94144\nJykpKTsKCg== 94145\naHVtaWRpdHk= 94146\nLi4uIik7Cgo= 94147\nRGVsdGFUaW1l 94148\nIG1rdGltZQ== 94149\nUGhvdG9u 94150\nIHBlbnNhcg== 94151\nc2NhbGluZw== 94152\nX3llbGxvdw== 94153\nX211bHRpcGx5 94154\nIFZ1bGNhbg== 94155\nIFBlYXJjZQ== 94156\nX2xj 94157\nLWV4Y2x1c2l2ZQ== 94158\nSXNVbmljb2Rl 94159\nIHBhZHI= 94160\nX1BDSUU= 94161\nIGdsaW1wcw== 94162\nIHJhbXBhZ2U= 94163\nIFBhZ2luYXRvcg== 94164\nIGNvbnZleWluZw== 94165\nbm9yZQ== 94166\nX2RldGFjaA== 94167\nJ10hPSc= 94168\nIGJvbmE= 94169\nCUNvbg== 94170\nTmF6 94171\nIHNlZ3VpbnQ= 94172\nIG1pZXN6 94173\nIGVzb3M= 94174\nICcvJykK 94175\nIGZhaXRoZnVsbHk= 94176\nIGJla29t 94177\n0LDQutGB 94178\nd2hlbG1pbmc= 94179\nLnR3bw== 94180\nIFNDRQ== 94181\nLW5h 94182\nICgpew== 94183\nIERhbWVu 94184\nX3RndA== 94185\nYWRhbGFmaWw= 94186\nIE1NSQ== 94187\nVGhpbg== 94188\nIGRlcHJlY2lhdGlvbg== 94189\nIGFic2VudGVl 94190\nIHNhbGFyaW8= 94191\nIFNvbWVib2R5 94192\nIFNsb2Fu 94193\nIGVyZm9sZ3JlaWNo 94194\nOk5TTG9jYWxpemVkU3RyaW5n 94195\nIGdlaMO2cnQ= 94196\nIGVtbw== 94197\nIExhZ3VuYQ== 94198\nw6FzYQ== 94199\naXN0cmF0ZXM= 94200\nUmFpc2U= 94201\nIEFzdHJvcGg= 94202\nICdcXCc= 94203\nX3BlZA== 94204\nIFRIUk9VR0g= 94205\nIE5pZXR6c2NoZQ== 94206\nZW5lcmF0aW5n 94207\nb3BsYXllcg== 94208\nIHJvZGVudHM= 94209\nw7xobA== 94210\nR2FtZU1hbmFnZXI= 94211\nIEhlYWRlckNvbXBvbmVudA== 94212\nIG1pbGFu 94213\ncXVlZW4= 94214\nIFBPTEw= 94215\nIEx5bWU= 94216\nIEJyaWdncw== 94217\nZWNlcg== 94218\nd2Fnb24= 94219\nLkRFU0M= 94220\nIGdsQmVnaW4= 94221\nU3RhdGVtZW50cw== 94222\nZXRyaQ== 94223\nIG1vY2tlcg== 94224\nIEJsdWVwcmludFJlYWRPbmx5 94225\nL2NvbnRlbnRhc3Npc3Q= 94226\nZW1hYWt0 94227\nL2xvYWRlcg== 94228\nX2xvd2VyY2FzZQ== 94229\nY2l2aWw= 94230\nX3ZhbG9y 94231\nX0dsb2JhbA== 94232\nIGFkcg== 94233\naXRpemVu 94234\nLlNpZGU= 94235\nIEVtYmxlbQ== 94236\nIHRoaXJkcw== 94237\nX1NIQVBF 94238\nUmVncmVzc29y 94239\nUFlUSE9O 94240\nIHBzeWNob3RpYw== 94241\nIGN2cw== 94242\nIEFwcGxpY2F0aW9uVXNlcg== 94243\nIGFsdW5vcw== 94244\nVG9nZ2xlQnV0dG9u 94245\nIG5nYQ== 94246\nIG3Do2U= 94247\nYWR2ZXJ0aXNlbWVudA== 94248\n5YiG5Lqr 94249\nLm92 94250\nIEFPTA== 94251\nUkVX 94252\nINin2LPYqg== 94253\nIEdpbm55 94254\nIC8vLy8vLy8vLy8= 94255\nU29uZ3M= 94256\nYWNpYw== 94257\nQ01Q 94258\nIHJlY29nbml6ZXI= 94259\nIHDDq3I= 94260\nRElD 94261\nO1wiPg== 94262\nIGNsb3Q= 94263\nOkV2ZW50 94264\nLlRP 94265\nIEN1cnNvcnM= 94266\nXFN0b3JhZ2U= 94267\nIElvbmljUGFnZQ== 94268\nX2pldA== 94269\nKEJpdENvbnZlcnRlcg== 94270\nIGNoaWxkaXNo 94271\nVHJhZGVy 94272\nPEhUTUxJbnB1dEVsZW1lbnQ= 94273\nX0ZSRVFVRU5DWQ== 94274\nPSI7Cg== 94275\neXN0YWNr 94276\nSnVy 94277\nIOmU 94278\nIHRjYg== 94279\nIHJlY2liaXI= 94280\nLnN6 94281\nIO2BtOuemOyKpA== 94282\nUEVSU09O 94283\nbm92YQ== 94284\nIGNvZXI= 94285\nIE1haG1vdWQ= 94286\nIFdvcmtwbGFjZQ== 94287\nIiIiKSwK 94288\nLlBhZ2VTaXpl 94289\nZ2V0Um9vdA== 94290\nKGJhc2VVcmw= 94291\nW1U= 94292\nIE1DUw== 94293\nIENsYXJrc29u 94294\nLnZvbA== 94295\nICIifQo= 94296\nIHBldXg= 94297\nIFByb2R1Y3RTZXJ2aWNl 94298\nIG1vbmRheQ== 94299\nIFRlc3REYXRh 94300\nIE1hdWw= 94301\nIHN0cm5jbXA= 94302\nIHNob3BwZXI= 94303\ndGhlb3J5 94304\nIGV0aXF1ZXR0ZQ== 94305\nbGljZW5jZQ== 94306\nc2NhbA== 94307\nLWNsdXN0ZXI= 94308\nIGhpc3TDs3JpYQ== 94309\nIFN1YnRyYWN0 94310\nIGZpYmVyZ2xhc3M= 94311\nX2xhc3RuYW1l 94312\nIFJld3JpdGU= 94313\nL3RvZG8= 94314\nIG92ZXJmbG93aW5n 94315\nIEdhdXNz 94316\nb2theQ== 94317\nIGNsdW1zeQ== 94318\nKHh5 94319\nIGV4ZW1w 94320\nYW5hbHl6ZQ== 94321\nLXRpY2tldA== 94322\nbmluZQ== 94323\nIERlYWRwb29s 94324\nIGNvbHVt 94325\nIEpL 94326\nIFtdLA0K 94327\nIEFzcGVu 94328\nIG1hbGlnbmFudA== 94329\naMO1ZXM= 94330\nU2NhbGE= 94331\naW5uZQ== 94332\nIENPTlNUQU5UUw== 94333\nX1ByaWNl 94334\nIyUl 94335\nIGFyc2No 94336\nIE5TQXR0cmlidXRlZFN0cmluZw== 94337\nIEZpbGVUeXBl 94338\nYWxsb2NhdGlvbg== 94339\nX3Npbmd1bGFy 94340\nKFBvaW50ZXI= 94341\nYW5uaWVz 94342\nU3RvcmVk 94343\nICc7Cgo= 94344\n4oCZZXg= 94345\nZHJz 94346\nQnJpZ2h0bmVzcw== 94347\nL09S 94348\nVGV4dGJveA== 94349\nIGtuYWNr 94350\nIGplbmlz 94351\nIG9jYXM= 94352\nZGF0YXA= 94353\nIGdhbWVUaW1l 94354\nIOCw 94355\nbmR4 94356\nIEVWVA== 94357\nQnlUZXh0 94358\nIGF0dHJpYnV0ZU5hbWU= 94359\nIGp1Z2Fy 94360\nX3NlcXM= 94361\nIEZFQVRVUkVT 94362\nOmRhdGU= 94363\nZmJl 94364\ncmlwcGVy 94365\n56iN 94366\nLkV4cHI= 94367\nVXJiYW4= 94368\naWRvdA== 94369\nIG9ibGl2aW91cw== 94370\nKERiQ29udGV4dA== 94371\nQ2Fyb2w= 94372\nKCcsJywk 94373\nIEJyaWxsaWFudA== 94374\na2Fk 94375\nY2VudHJhdGlvbg== 94376\nIGt1aw== 94377\nIE1BTkFHRU1FTlQ= 94378\nX1dFQVBPTg== 94379\nIGppaGFkaXN0cw== 94380\nIGVudHJlZw== 94381\nIGRvxJ8= 94382\nIGFwcGVuZGluZw== 94383\nIFpp 94384\nX2N0eHQ= 94385\nIHF1YWRyYW50 94386\nZWxlbWVudFR5cGU= 94387\nPWltZw== 94388\nYnJ1YXI= 94389\nSUNBU1Q= 94390\nIGludGVsbGVjdHVhbGx5 94391\nLkFubm90YXRpb24= 94392\nIGNhbXBhaWduZXJz 94393\nLkRhdGFHcmlkVmlld0F1dG9TaXpl 94394\nIMWfZWs= 94395\nIC9eKA== 94396\nLkRhdGFUYWJsZQ== 94397\nIHdlYmxvZw== 94398\nKGxpYnJhcnk= 94399\nIEZ1cw== 94400\nIE9TVA== 94401\nX1Bhc3N3b3Jk 94402\nIEJ1Y2tsZXk= 94403\naG9mZg== 94404\nQWxpZ25lZA== 94405\nX1JlYWw= 94406\nRU5USUM= 94407\nL2dyYXBocWw= 94408\nIFdlZWQ= 94409\nIExTQg== 94410\nb2NjYXNpb24= 94411\nYWRkYWZp 94412\nTGV0cw== 94413\nKCJg 94414\nIHdpZGVu 94415\nKHZpc2l0b3I= 94416\nICJcCg== 94417\nQU5URQ== 94418\nLWNhbXB1cw== 94419\nLUJhcg== 94420\nY2FtZWw= 94421\nRm10 94422\nOmRlc2NyaXB0aW9u 94423\nLmFyZQ== 94424\nIEFuYXN0 94425\nIExvbmdlcg== 94426\nc2VyaW91cw== 94427\nIGRhaGVy 94428\naXp6ZXI= 94429\nTXVsdGlwbGljaXR5 94430\nIEhvbGxhbmRl 94431\nIEFubm90YXRpb25z 94432\nKCk/ 94433\nIHByb3Rlc3Rlcg== 94434\nIFVyZHU= 94435\nIHNwZWNpYWx0aWVz 94436\nX2x5 94437\nQ2Fk 94438\nYW5udA== 94439\nanNw 94440\nIGpvZQ== 94441\nKXI= 94442\nIFBlcnNpc3Q= 94443\nIG9ibA== 94444\nIGRlYWRsb2Nr 94445\nIHNlcmk= 94446\nUmVsYXRpdmVUbw== 94447\nIFl1cw== 94448\nKFByaW50 94449\nYWJpbGlh 94450\nIHVucHJvdGVjdGVk 94451\nIEFTSUM= 94452\nLk5vbWU= 94453\nIFdlYkNsaWVudA== 94454\nIElUVg== 94455\nw7xybmJlcmc= 94456\naXRvcmk= 94457\nU2lnbmluZw== 94458\nIFJlYWRvbmx5 94459\nIGVsZHJl 94460\nIENoZWNrZWQ= 94461\nYWxudW0= 94462\nU291cmNlVHlwZQ== 94463\nbGV4aWNhbA== 94464\nIGlsbHVzdHJhdG9y 94465\nIERpcmVjdG9yYXRl 94466\nIFRyb20= 94467\nbXBw 94468\nbG9nZw== 94469\nLmluc3RydW1lbnQ= 94470\nIHdvb2RlZA== 94471\nIFVzZXJUeXBl 94472\nIFJlbmNvbnRyZXM= 94473\nbW9kZWxOYW1l 94474\nQlRUYWdDb21wb3VuZA== 94475\nPlRv 94476\nIGZyZWV6ZXM= 94477\nIENvbnRl 94478\nIENyZWRlbnRpYWw= 94479\nY2FsYQ== 94480\nL3dvcmtzcGFjZQ== 94481\nIGxpYmlkbw== 94482\nY2hsdXNz 94483\nb2xsZXlFcnJvcg== 94484\nIGFjY2lvbmVz 94485\nIEppbnBpbmc= 94486\nYXTDqWc= 94487\nSW50ZXJzdGl0aWFs 94488\nKSkpKSk7DQo= 94489\neWJyaWQ= 94490\nIFJvbGxlZA== 94491\nTW9kZWxDcmVhdGluZw== 94492\nIFJlZmxleA== 94493\nIEx1Y2lmZXI= 94494\nIGVoZXI= 94495\nIGNhcm5pdmFs 94496\nISI7DQo= 94497\nX0xPT0tVUA== 94498\nIHN1Y2PDqHM= 94499\nIHJlb3BlbmluZw== 94500\nIGNyZWFkbw== 94501\nIFNteQ== 94502\nIEVudHM= 94503\nLlNpbmNl 94504\nIEZpc2hlcmllcw== 94505\nL2Nvbm5lY3Rpb24= 94506\nIENTQQ== 94507\nINC/0YDQvtCz0YDQsNC80Lw= 94508\nbHNydWhl 94509\nCWFjdG9y 94510\nIFN0cmF1c3M= 94511\nSnNvblZhbHVl 94512\nCWV2YWw= 94513\nbG9ja2Vy 94514\nIFhJVg== 94515\nX2h5cGVy 94516\nIFBvbGx5 94517\n4oCmdGhl 94518\nIEdVUkw= 94519\n0LXRgdGB 94520\nIGRpdmVz 94521\ndWdlb3Q= 94522\naW5lbWE= 94523\nYmVyc29tZQ== 94524\nQ29tcHJh 94525\nLWN1bHR1cmFs 94526\nIGdyYW5kcw== 94527\nU2Fj 94528\nIEJhcm5leQ== 94529\nX1FVRVNUSU9O 94530\nIG1hbWFu 94531\nIGhhc3RpbHk= 94532\nIGNsdWJob3VzZQ== 94533\nIGdydW5k 94534\nX1dBTEw= 94535\nIHB1cmlmaWNhdGlvbg== 94536\nhOS7tg== 94537\n0LLQsA== 94538\ndmVzdG1lbnQ= 94539\nLkRpc3BsYXlTdHlsZQ== 94540\nX2NvcmVz 94541\nJVM= 94542\nIG9zw7Ni 94543\nIGRpc2I= 94544\nIEZyYW5raWU= 94545\nIGluZGlzY3JpbQ== 94546\nX0JlZ2lu 94547\nKGVy 94548\nO28= 94549\n44Oz44Kw 94550\nbm9kZU5hbWU= 94551\nIHJlZnVuZGVk 94552\nIGRpc21hbA== 94553\nIEh1ZmZQb3N0 94554\nIHVuZGVjaWRlZA== 94555\nd3JpdGVsbg== 94556\na8Ozdw== 94557\nIEJvc2U= 94558\nCWxpYg== 94559\nb3BsYW4= 94560\naW50ZXJwcmV0ZWQ= 94561\nIE1PTkVZ 94562\ndXZv 94563\nIG50b2hz 94564\naXNldW0= 94565\nPmo= 94566\nIHVuZml0 94567\nIGh1Z2dlZA== 94568\nIEplc3Q= 94569\nbXBz 94570\nIGJyb20= 94571\nJ28= 94572\nIGZvdg== 94573\nIFNocmluZQ== 94574\nIEVJVEhFUg== 94575\neWNhc3RsZQ== 94576\nIHNhdHVy 94577\ncmVxdWVzdERhdGE= 94578\nW2Rpcg== 94579\nT1VDSA== 94580\nX0Rv 94581\nIHlvbA== 94582\nIGluaXRpYWxWYWx1ZXM= 94583\nW3ZlcnRleA== 94584\nc2VydmljZU5hbWU= 94585\nLnNhbGFyeQ== 94586\nIEF1dGhlbnRpY2F0ZQ== 94587\n6L6+ 94588\nX1ZMQU4= 94589\nKFtdKTsKCg== 94590\nIFNlcnVt 94591\nUGF0aFBhcmFt 94592\nZm9ybXVsYXJpbw== 94593\nIHN1bW1hcml6ZXM= 94594\nT0NS 94595\nb3JhbQ== 94596\nTERBUA== 94597\nYmlj 94598\ncGlja2Vk 94599\nLXRoYXQ= 94600\nIGNkcw== 94601\nCWFuaW0= 94602\nIGludHJpYw== 94603\nIFdvcnQ= 94604\nIFZMQw== 94605\nIFNoaWl0ZQ== 94606\nU3R1ZGllcw== 94607\nLmRpc3BhdGNoZXI= 94608\nKGVuYWJsZQ== 94609\nLm1peGlu 94610\nIFNleW1vdXI= 94611\nIGJpb21lZGljYWw= 94612\nIFNwb29u 94613\nIE5vcnNl 94614\nIGludGVudHM= 94615\nIMOpcXVpcA== 94616\nIERyZXNzZXM= 94617\nTFBBUkFN 94618\nLnNldFJlc3VsdA== 94619\nLmRlbGV0ZUJ5SWQ= 94620\nIG5ld2ZvdW5k 94621\nIE9TRA== 94622\nb3VzeQ== 94623\nIGVzdGFkb3M= 94624\nW0J5dGU= 94625\nQ2h1Y2s= 94626\nLm9uVmlld0NyZWF0ZWQ= 94627\nIENvbnRyaWJ1dGlvbg== 94628\nX0VuYw== 94629\nSU5FVA== 94630\nIGZsYXZvcmZ1bA== 94631\nIOOCog== 94632\ndmlzYQ== 94633\nIEhlcmN1bGVz 94634\nLmdldEFwcA== 94635\nIFlvaw== 94636\nLk1haW5BY3Rpdml0eQ== 94637\nKS5b 94638\nIGxhdXQ= 94639\nSW52aXRl 94640\nIENodXJjaGVz 94641\nLCcj 94642\n2YrYsQ== 94643\nKFNT 94644\nIHZlbmRh 94645\nYXNqb24= 94646\nLklOVEVS 94647\naXBoZXJ5 94648\nKFN5bnRheA== 94649\nb25kcm91cw== 94650\nCWNlbnRlcg== 94651\nQnJhY2tldEFjY2Vzcw== 94652\nIENhcGNvbQ== 94653\nLmdldEZvbnQ= 94654\nIFZhdWx0cw== 94655\nIGRpc2XDsWFkb3I= 94656\nOm8= 94657\nKHNoZWxs 94658\nIGVDb21tZXJjZQ== 94659\nIGFsdHJl 94660\nX2F0dGFjaGVk 94661\nIGlzcg== 94662\nIG9idGFpbnM= 94663\nLkNvbnRleHRDb21wYXQ= 94664\nIGF0dGVuZGVl 94665\nIFR3aWNl 94666\nIE1vb2Q= 94667\n6YKu566x 94668\nbm9kb2M= 94669\nIFBJWEk= 94670\nc29mYXI= 94671\nIEJsb29keQ== 94672\nLkNvbXBsZXRl 94673\nIEJFUg== 94674\nIGdldENhdGVnb3J5 94675\nIGRpc3F1YWxpZmllZA== 94676\nX1RydWU= 94677\nJ2Vy 94678\nLXRvbw== 94679\nIGh5cGVybGluaw== 94680\nX21heGltdW0= 94681\nTmVhbA== 94682\nIHBJbmZv 94683\nLmdldEVsZW1lbnRzQnlOYW1l 94684\nc2NoZWR1bGVk 94685\ncGF5ZXI= 94686\nCXZlcmlmeQ== 94687\nLWVudGl0eQ== 94688\nbWV0YXRhYmxl 94689\nYmlsZHVuZw== 94690\nIGRlbHRhWA== 94691\nZW1wbGFjZQ== 94692\nIHJldmVydGVk 94693\ncmVwaWQ= 94694\nbGVhcm5lcg== 94695\nfSkpCgo= 94696\ndWNvc2U= 94697\nIHJpY28= 94698\nIGJhbmdlZA== 94699\nIEFmcm8= 94700\nKGluZXJ0aWE= 94701\nYW5zYQ== 94702\nIMOkdmVu 94703\nS2FyZW4= 94704\nIHN1cGVyc3Q= 94705\nIGZydWl0aW9u 94706\nb3RjaA== 94707\nIFBheXM= 94708\nUmVzaWRlbnRz 94709\nIHByaXNt 94710\nJik7Cgo= 94711\nLmptcw== 94712\nIFNsdWc= 94713\nPScnKQ== 94714\nIGd1dGVu 94715\nIFNwaWVsYmVyZw== 94716\nIFRGb3Jt 94717\nKGJlZm9yZQ== 94718\nIEZpbml0ZQ== 94719\n5paw5aKe 94720\nIG1laWxsZXVyZQ== 94721\n0L/QuNGB0LDQvdC40LU= 94722\nX0Vycg== 94723\nLWZ0 94724\nbmFubw== 94725\nLkFkZHI= 94726\nIC8vDQoNCg== 94727\nIEpvbmFo 94728\nIERpc2Nv 94729\nIGx1bmNoZXM= 94730\nIERGQQ== 94731\nZXhwbGljaXQ= 94732\nXSc7Cg== 94733\nIHJlZmluZXJ5 94734\nIFN0cmluZ1R5cGU= 94735\ndW5zcXVlZXpl 94736\nIExpa2VseQ== 94737\nV3JpdGVz 94738\nLmJwbQ== 94739\nIHBJdGVt 94740\nb3Vuc2Vs 94741\nU3RhbmRpbmc= 94742\nIGNob2tlZA== 94743\nIGFuc2No 94744\ndXBpbA== 94745\nIERlYnVnZ2Vy 94746\n4qCA4qCA 94747\nPEdyb3Vw 94748\nIFNjYWxpYQ== 94749\nIHN1YnN0aXR1dGlvbnM= 94750\nIGNsaW1iZXJz 94751\nICopIg== 94752\nIG5hbm9wYXJ0aWNsZXM= 94753\nIEFQUFJP 94754\nIHB1cmNoYXNlcnM= 94755\nIFFUZXN0 94756\nIEF3YWtlbmluZw== 94757\nCVNlcmlhbA== 94758\nLnJlcGFpbnQ= 94759\nIHNhdm9yeQ== 94760\nIHBvcm91cw== 94761\nIGFWYXI= 94762\nIFN1YXJleg== 94763\nLUVhc3Q= 94764\nQm94ZXM= 94765\nIFdlaW5lcg== 94766\nIENSQQ== 94767\nIOqwkuydhA== 94768\nIHhsaW0= 94769\nIj8KCg== 94770\nIHdhc2hpbmd0b24= 94771\n7Jq0 94772\nIHRvdGFsZW1lbnQ= 94773\nX210aW1l 94774\nLnNldFNjZW5l 94775\nIGxsYW1h 94776\nIGNibw== 94777\nZWZk 94778\nIHVuZGVycmF0ZWQ= 94779\ncmFpc2luZw== 94780\nIE5BVElPTkFM 94781\nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCg== 94782\nb3B0aWM= 94783\naWRlYXM= 94784\nIOaPkA== 94785\nIGxhaw== 94786\nISEs 94787\nIGtvbW0= 94788\ncGFyYWd1cw== 94789\nU2l0ZXM= 94790\nIHN0cmVzc2luZw== 94791\nIE1hdEJ1dHRvbk1vZHVsZQ== 94792\nIENvbnZlcnRlZA== 94793\nYW5hbWU= 94794\nX1JFQURPTkxZ 94795\nXT0+ 94796\nIGJvcmRlbA== 94797\nIGJpYmxpb2dyYXBoeQ== 94798\nIGdyaWRDb2x1bW4= 94799\nIGpvdXJuYWxpc3RpYw== 94800\n7J6E 94801\nIHJhc3BiZXJyeQ== 94802\nc3RpY2U= 94803\nIGFicmFzaXZl 94804\nIERCSGVscGVy 94805\nIGludGY= 94806\nIFJUQlU= 94807\nfSciLA== 94808\nIEhhbw== 94809\nc3dhbmE= 94810\nIGphbnZpZXI= 94811\nIGluc3RpdHV0ZXM= 94812\nIFNlYmFzdA== 94813\nX0NPTFM= 94814\nIGZpZ3VyYQ== 94815\nIFp1c3Q= 94816\nZm95 94817\nPigpKTsKCg== 94818\nIExpZWJl 94819\nQWdlbmN5 94820\nIOyLnOyekQ== 94821\nIFRodW1ibmFpbHM= 94822\ndGV4dFRoZW1l 94823\nIGVjaG9pbmc= 94824\nZW1wZXJhdHVyZQ== 94825\nIGZpcmVwb3dlcg== 94826\nZWRi 94827\nOicpOwo= 94828\nw6lnb3I= 94829\nL2ZlZWQ= 94830\nIGh1cmw= 94831\nLWF2YWlsYWJsZQ== 94832\nIFJlbmRlcnM= 94833\nIGZkcw== 94834\nIEpTR2xvYmFs 94835\nIENpdGl6ZW5zaGlw 94836\na2llZ28= 94837\nU3RhbmRhcmRJdGVt 94838\nLnBsYWNlcw== 94839\nIHNjYWxhYmlsaXR5 94840\nIFRyYWlscw== 94841\nZm9sbG93ZXI= 94842\nIHNlcnZpw6dvcw== 94843\nID8+Ii8+Cg== 94844\nW21ldGhvZA== 94845\nKGli 94846\nIHJpZGljdWxl 94847\nIGFkYXB0YWJsZQ== 94848\nZmlsdHJv 94849\nIGtldG9nZW5pYw== 94850\nLkltYWdlVHJhbnNwYXJlbnRDb2xvcg== 94851\nIENGTw== 94852\nIFBFRA== 94853\nICIiKTs= 94854\nb2dsb2Jpbg== 94855\nW3NpemVvZg== 94856\nQnJhbmRvbg== 94857\nLlRvU2hvcnQ= 94858\nIG5pxbw= 94859\nIFRFUk1JTg== 94860\nLmdldFN0YXR1c0NvZGU= 94861\nIGRlYnRvcg== 94862\nIENPTlNUUkFJTlQ= 94863\nCXNpZGU= 94864\nIERvbWlubw== 94865\n0YLQvtC8 94866\nIGdsYWNpZXI= 94867\nIGdyb3U= 94868\nenA= 94869\nIENhcmxh 94870\nLUZlYg== 94871\nUGVs 94872\nLnJlYWRWYWx1ZQ== 94873\nY2xpbWF0ZQ== 94874\nIHRpbGVTaXpl 94875\nLnRyaXA= 94876\nRU5URQ== 94877\nIGNodWJieQ== 94878\nIGltcG9zaXRpb24= 94879\nTE9XRVI= 94880\nLmJ5SWQ= 94881\nLkxvb2tBbmRGZWVs 94882\nYXJpaA== 94883\nLmZpbmRCeUlkQW5kVXBkYXRl 94884\nIFN0b3JlZA== 94885\nIGJvdXJnZW9pc2ll 94886\nSFRUUFJlcXVlc3RPcGVyYXRpb24= 94887\nIHN1Y2tlcg== 94888\nLmRlcXVldWU= 94889\nbGlja2Vu 94890\nIHN1YnJhbmdl 94891\nX01FRElVTQ== 94892\nSXNsYW0= 94893\nIFNwYXJrcw== 94894\n77yaJQ== 94895\naW1wb3J0ZQ== 94896\nIGAt 94897\nIGpveXM= 94898\nZ3JvdXBpZA== 94899\nRmx5aW5n 94900\nCWJz 94901\nZ3Jvc3M= 94902\nIEZpZXN0YQ== 94903\nIGNzdA== 94904\nIGFmaWNpb24= 94905\nb3Bob24= 94906\nX0NJ 94907\nam4= 94908\nQmVhdXR5 94909\nIHNjZQ== 94910\nIGNyYWNrZXJz 94911\nYXBr 94912\nIGdvcmQ= 94913\nIHByZXRleHQ= 94914\nIFtc 94915\nIENhbmRpZA== 94916\nR29hbHM= 94917\nQWN0aW9uVHlwZXM= 94918\nLG51bWJlcg== 94919\nIHBvcHVsYWNl 94920\nIGVudHJlbg== 94921\nIEF1dG9m 94922\n6Zmi 94923\nQmFzZUNvbnRleHQ= 94924\nQmFsYW5jZXI= 94925\nKEJvcmRlcg== 94926\nIG1pbmNlZA== 94927\ncmVjYWxs 94928\nY2Jh 94929\nIGFwcHJvdmVz 94930\nIEtsb3Bw 94931\nZXJtaW50 94932\nX2Zyb250ZW5k 94933\nZXNjbw== 94934\nIG5pbmV0ZWVu 94935\nRHJpdmluZw== 94936\nIFhWSQ== 94937\nIFRhY3RpY3M= 94938\nIHByb2dyYW1hcw== 94939\naWVzZW4= 94940\nTW92 94941\nZGlldA== 94942\nYXV0w6k= 94943\nKCIuIik= 94944\nIGdvdmVybm8= 94945\nX0FuZA== 94946\nL21pdA== 94947\nIGNhZmV0ZXJpYQ== 94948\nLXRyYWNraW5n 94949\nIGNvbW11dGluZw== 94950\nLnVua25vd24= 94951\nX3R5cGVvZg== 94952\nIFNTQQ== 94953\nUFJPVE8= 94954\nLk1lcmdl 94955\nIGZvckNlbGxSZXVzZUlkZW50aWZpZXI= 94956\nIFNhdGlzZmFjdGlvbg== 94957\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 94958\nSU1QTElFRA== 94959\nIFJlc3RyaWN0ZWQ= 94960\nIE1hZ251bQ== 94961\n0L3QvtC8 94962\nS2Fuc2Fz 94963\nYXlsaWdodA== 94964\nIFRvd2FyZHM= 94965\nIFRvbWU= 94966\nIFRlbmRlcg== 94967\nX2RlcHQ= 94968\nLmNydA== 94969\ndHJlY2h0 94970\nU1RPTkU= 94971\nIGVtcHRpZWQ= 94972\nICcpOwoK 94973\n4LiB4Liy4Lij 94974\n0Y/RgtGM 94975\nbGVjaw== 94976\nIFt+LA== 94977\nLmV4cGlyZXM= 94978\nIFRpZw== 94979\nIElyb25pY2FsbHk= 94980\nCUxM 94981\nLk5vdE5pbA== 94982\nIOWKoA== 94983\nIEdvdmVy 94984\nIFBlcnNwZWN0aXZlcw== 94985\nIERWUg== 94986\nIGxva2FsZQ== 94987\nIHJlc2VuZA== 94988\nIGRvdWJseQ== 94989\nIGNvbXVuaWRhZA== 94990\nIEFzc2VtYmx5Q29tcGFueQ== 94991\nKHR1cm4= 94992\nIHN1Ymxpc3Q= 94993\nIGVuZG9yc2VtZW50cw== 94994\nX1JFR0lTVFJZ 94995\nISIpDQo= 94996\nKTs7Cg== 94997\nIGdhbnpl 94998\nIEhhcm5lc3M= 94999\nX21hdGNoZWQ= 95000\n5L6h 95001\n4oCiCgo= 95002\nQ2hlZg== 95003\nCUluaXRpYWxpemU= 95004\nKTsiPgo= 95005\nIEZhcmFnZQ== 95006\ncmlzaA== 95007\nYWx0ZXQ= 95008\nRGVhbGVy 95009\nLkxvZ1dhcm5pbmc= 95010\nKGFmdGVy 95011\nIEdhcnRlbg== 95012\nIGV4cGxvZGVz 95013\nLkNMQVNT 95014\nIHVzZVJvdXRlcg== 95015\nLUxh 95016\nIHNhZGRlbmVk 95017\nYXJvdg== 95018\nVG9VcGRhdGU= 95019\nIOae 95020\ncGlp 95021\nJwoKCgo= 95022\nIFRSQU5TQUNUSU9O 95023\nb25nYQ== 95024\nbG9nYW4= 95025\nQ3Jvdw== 95026\nIGJyaXRpc2g= 95027\nIENvbnRlbnRWaWV3 95028\nX0JC 95029\nb2x2ZW5jeQ== 95030\nbG9hZE1vZGVs 95031\nVE9PTFM= 95032\naGV0ZW4= 95033\nX25o 95034\nQUJM 95035\nLXZlcnM= 95036\nQXJlbmE= 95037\nLnNpbmdsZXRvbkxpc3Q= 95038\nKHBhdA== 95039\nCW5hbWVz 95040\nKHNx 95041\nIHZhbG9yZQ== 95042\nJHJlcQ== 95043\nIGFudGhyb3BvbG9neQ== 95044\nVGhpbmtpbmc= 95045\nIG1pc2NoaWVm 95046\nIGFyY2hpdmFs 95047\n4KS5 95048\nLlNldFRvb2xUaXA= 95049\ncHJhcg== 95050\nYW5qYQ== 95051\nIGZpcnN0bHk= 95052\nCWxpZ2h0 95053\nLS0s 95054\nIFNwZWFycw== 95055\nIG9nbA== 95056\nc3RlZW4= 95057\naW1wbGVtZW50cw== 95058\ncmlzdHM= 95059\nK0U= 95060\nIEJhbnM= 95061\nIGZhc3RiYWxs 95062\nIEhlcm1lcw== 95063\ndmVsZWQ= 95064\ndHdlbnR5 95065\nIG5lY2VzaXRh 95066\nIE1vcm9jY2Fu 95067\naXNMb2dnZWRJbg== 95068\nQ0xPQ0tT 95069\nLkFic3RyYWN0aW9ucw== 95070\nLlBhY2tldA== 95071\nIG1lbmFjaW5n 95072\nLXZlc20= 95073\nIExpdmluZ3N0b24= 95074\nIG9jaQ== 95075\nIGV4dHJhZGl0aW9u 95076\nICQoJA== 95077\nIExvY2tlcg== 95078\nIFJlYmVsbGlvbg== 95079\nIG1peGlucw== 95080\nY3RhbA== 95081\nL3JmYw== 95082\nIFNHRA== 95083\nLGlkeA== 95084\nIGJsZWlidA== 95085\nKFwk 95086\nIHBldGVy 95087\nIGJhcnJlbg== 95088\nIHBob3NwaG9yeQ== 95089\nIGdvZ2dsZXM= 95090\nLmhvbQ== 95091\nQGQ= 95092\nPSct 95093\nLmlzVXNlcg== 95094\nYWthc2g= 95095\nX2h1Yg== 95096\naXBlbGluZXM= 95097\nIEB9 95098\nLnN1cm5hbWU= 95099\nSW50ZXJvcA== 95100\nIGluRmlsZQ== 95101\nIGVzcGVjaWFsbWVudGU= 95102\nIGF1dG9ub20= 95103\nIFphbWJpYQ== 95104\nX0NPVU5UUlk= 95105\nPENvdXJzZQ== 95106\naWRlb2dyYXBoaWM= 95107\nIENhbWVyb29u 95108\nZmluZEJ5SWQ= 95109\nKSIu 95110\nIERlcGVuZHM= 95111\ncml0b3M= 95112\nLk91cg== 95113\nIHN1YnNpZGl6ZWQ= 95114\nJywnIis= 95115\nIGdsZWFu 95116\nIEFzc2VtYmx5Q29weXJpZ2h0 95117\ncGljYWJsZQ== 95118\nIHVud2l0dGluZw== 95119\nIG9tZGF0 95120\nIEVhc2U= 95121\nIGVtYm9kaWVz 95122\nKHBEWA== 95123\nIFZvdGVy 95124\nQXNzaWduZWQ= 95125\ncmV2ZWFs 95126\nIGZlbmQ= 95127\nKHBhcnNlRmxvYXQ= 95128\nIGRwcw== 95129\ndHBsaWI= 95130\nYXNzZXJ0Q291bnQ= 95131\neG1heA== 95132\nVW51c2Vk 95133\nKGZi 95134\nIHN1Ym1pdHM= 95135\nIFJlcGxpY2E= 95136\nKGR5 95137\nIGJhbmRl 95138\nLnNlbWFudGlj 95139\nIHNlYXJjaFN0cmluZw== 95140\nIFNhbmZvcmQ= 95141\nCWZ1bGw= 95142\ncHJt 95143\nX3V0aWxpdGllcw== 95144\nVU5VU0VE 95145\nIHNjYW5uZXJz 95146\nIGJmZA== 95147\nLk9yZ2FuaXphdGlvbg== 95148\nLWN1cg== 95149\nUmFpbA== 95150\nIHhueHg= 95151\nJSk7Cg== 95152\nIG92ZXJwb3N0aW5n 95153\nVmlldA== 95154\nIHRhcGVyZWQ= 95155\nIGNhbWVv 95156\nIFZpZXdpbmc= 95157\nIGRpc21hbnRsZQ== 95158\nIGZpc3M= 95159\nIFNlbnRyeQ== 95160\naGVhdG1hcA== 95161\nIMOhcmVhcw== 95162\nIEdyw7w= 95163\nIGppZw== 95164\nLmNsZWFyUmVjdA== 95165\nZXZlbnRUeXBl 95166\nIHR1cmJ1bGVuY2U= 95167\nY2tpbGw= 95168\nLkZvY3VzZWQ= 95169\nIGludGVybWVkaWFyeQ== 95170\nIE9iZXNpdHk= 95171\nYXRlZ28= 95172\nbW9udG8= 95173\nIEFsYW1vZmlyZQ== 95174\nIFNoZWlsYQ== 95175\nIENPTExFQ1RJT04= 95176\nQ2FyZEJvZHk= 95177\nIEhhYml0 95178\nUExBTg== 95179\nLnZpc3VhbGl6YXRpb24= 95180\nJSkuCgo= 95181\nIEludGVsbGlK 95182\nIEdsb3Zlcg== 95183\nLnNwYXRpYWw= 95184\nIGdyZWV0aW5ncw== 95185\nIE9wZW5GaWxlRGlhbG9n 95186\ney8q 95187\nIFTDqWzDqQ== 95188\nIEVm 95189\nICJbJQ== 95190\nIG1hZ2lzdHJhdGU= 95191\nIExpdGVjb2lu 95192\nIFNlbGU= 95193\nIGNvbW1lcmM= 95194\ncHJpbnR3 95195\nbmV4dEludA== 95196\nLmdldENoaWxkQXQ= 95197\nIEdldEN1cnJlbnQ= 95198\nIGV1cm9ww6k= 95199\nIEFJUw== 95200\nZXR0ZW4= 95201\nLkV2ZW50UXVldWU= 95202\nYW5mb3Jk 95203\ndW5ha2Fu 95204\nLnNldE91dHB1dA== 95205\nIGNtZGxpbmU= 95206\nLGdldA== 95207\nIEhlYXJk 95208\nLmNvbnRlbnRUeXBl 95209\nZW1k 95210\nIFJldG9ybmE= 95211\nYWNk 95212\nIFBsYXlvZmY= 95213\nYWNtYW4= 95214\nLndlYnNvY2tldA== 95215\nQ2xpZW50SWQ= 95216\nLmV4YW0= 95217\nIGF0dGVudWF0aW9u 95218\nLnNldENoYXJhY3Rlcg== 95219\nCUNvbGxlY3Rpb24= 95220\n5rCX 95221\nIHByZWRpY3RvcnM= 95222\nIFNoZXJpZGFu 95223\ncmltaW5hdG9y 95224\nKFN0YWNr 95225\nX1BLRw== 95226\nPScnKToK 95227\nKHBhZA== 95228\nIE5vZG8= 95229\nIGludGVyb3Blcg== 95230\nIFRyYW5zcGFyZW5jeQ== 95231\nCWR4 95232\nemVt 95233\nIHByYXRpcXVl 95234\nIGZpYnI= 95235\nKCk/Owo= 95236\nX01PQklMRQ== 95237\nLlJFRw== 95238\nX1lFTExPVw== 95239\nVGl0YW4= 95240\nJykKCgoK 95241\nIGNvbXBvbmVudE5hbWU= 95242\nIENvb2xlcg== 95243\naXNGdW5jdGlvbg== 95244\nLmZlZWRiYWNr 95245\nIHBlcmZlY3RlZA== 95246\nIHBhZWQ= 95247\nLXNjcmlwdHM= 95248\nU3VzcA== 95249\nPE9wdGlvbg== 95250\nIER0 95251\n7YS0 95252\nJ1JF 95253\nIE5STA== 95254\nIE1hbm55 95255\nIHJvZw== 95256\nIEdhcnI= 95257\nX2Nvb2tpZXM= 95258\nU3Bs 95259\nIHByb21vdGVycw== 95260\nKmR0 95261\nXEFQSQ== 95262\nIGV2b2tl 95263\nX0VudHJ5 95264\nIGZpcmVmaWdodGVy 95265\naXZpZGFk 95266\nSmFjb2I= 95267\nIGxlZ2lvbg== 95268\nKHBvbA== 95269\nCWZsYXNo 95270\nb29rZWVwZXI= 95271\nLmNsaXBzVG9Cb3VuZHM= 95272\nIGdyYXBoaXRl 95273\nJ2h0dHA= 95274\nX1RSSUFOR0xF 95275\nIERyb3BJbmRleA== 95276\nLnNtdHA= 95277\nIFVOU0lHTkVE 95278\nX1BJQ1RVUkU= 95279\nX09SSUVOVEFUSU9O 95280\nIE9QUA== 95281\nIyc= 95282\nw6FmaWNv 95283\nLmhpc3RvZ3JhbQ== 95284\nIEJlbm55 95285\nPldl 95286\nIHJlcG9zdA== 95287\nIGZpYW5jZQ== 95288\nIEJvdW50eQ== 95289\nc3RyZXNz 95290\nRGF0ZXRpbWU= 95291\nOkg= 95292\nIFNwaGlueA== 95293\nTm9ybWFsbHk= 95294\nYXBpeGVs 95295\nIHVzZXJBZ2VudA== 95296\nIE1vcmk= 95297\nL2xhYg== 95298\nLk1PREVM 95299\nIEVtb3Rpb25hbA== 95300\nU2NhbGVk 95301\nZGV2aWNlSWQ= 95302\nIOqzhA== 95303\nY2Vhc2Vk 95304\nPElN 95305\nY2VlZGVk 95306\nIGxpYnJhcmlhbg== 95307\nKW51bGw= 95308\nIG1pY3Jvbg== 95309\nIEZvdQ== 95310\ndWxlbg== 95311\nL2xpdmU= 95312\ncnNjaGVpbg== 95313\nZmVh 95314\nIGhhYmls 95315\nIE5hdkxpbms= 95316\nbmVjZXNzYXJ5 95317\nLmNvZGVz 95318\nLW1ha2U= 95319\nIHBQYXJlbnQ= 95320\nX3JlbGF0aW9ucw== 95321\nIHJ1c2hlcw== 95322\nIHByb3BlbnNpdHk= 95323\nIFNraW5ueQ== 95324\nV0VTVA== 95325\nX2NvcnB1cw== 95326\nKHJlb3JkZXJlZA== 95327\nZmRi 95328\nIEdldE1lc3NhZ2U= 95329\nQnJ1bg== 95330\nLnZz 95331\nIHDFgg== 95332\nIGNydW5jaHk= 95333\nQm9vbQ== 95334\nUEo= 95335\nSmFrZQ== 95336\n57qm 95337\nJGNsaWVudA== 95338\nIH1dKQo= 95339\nIGNvbnZlcnNl 95340\nIEdSQVQ= 95341\nIENSUw== 95342\nLkxvdw== 95343\nKHZhbGlkYXRl 95344\nX0NMSUNLRUQ= 95345\nLmJsdWV0b290aA== 95346\nCXh0eXBl 95347\nIGNsb3NlTW9kYWw= 95348\nX2ludGVudA== 95349\nIHByb2dub3Npcw== 95350\nc2F2 95351\nQ3Rs 95352\nIGNob29zZXI= 95353\nIFN1ZG9rdQ== 95354\nPVVzZXI= 95355\nLmNsZg== 95356\nCWV4cGxpY2l0 95357\nIHBvdGVudGlhbHM= 95358\nIEdlb3JnZXM= 95359\nIGVsaWM= 95360\nIHRzbGli 95361\nIFJhZ25hcg== 95362\nX3JlcHJlc2VudGF0aW9u 95363\nLWxlZ2dlZA== 95364\naGFtc3Rlcg== 95365\nIEZpcmVzdG9yZQ== 95366\nY29udmVydFZpZXc= 95367\nQ29tYmluZWQ= 95368\nINC00LXQuw== 95369\nIGVzcGVjdA== 95370\nIOOCkg== 95371\nIFN0YW1pbmE= 95372\nbG9va3M= 95373\nRU5BUklP 95374\nL2ZpeHR1cmVz 95375\nLnNtcw== 95376\nIHNlbWljbGFzcw== 95377\nIHNlbWljbGFzc2ljYWw= 95378\nLlBlZWs= 95379\nXSQ= 95380\nX0RTUA== 95381\nX0xWTA== 95382\nVklSVFVBTA== 95383\nIENhcGl0YWxz 95384\nIFNDVA== 95385\nLldoaWxl 95386\nIFN1YnN0YW5jZQ== 95387\nLWRvbmU= 95388\nIGVuc2xhdmVk 95389\nY2xhc3NpZnk= 95390\nZW50YW55bA== 95391\nIFZlZ2V0YWJsZQ== 95392\nX0RFUEVORA== 95393\nRGFuaQ== 95394\nIHF1aWVyZXM= 95395\nIGFiYmlhbW8= 95396\nIExpYmVy 95397\nYWZj 95398\n6YCf 95399\ncHJlZGljdGVk 95400\nLlBORw== 95401\nIFdoaXA= 95402\nLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ== 95403\nIOKJoA== 95404\nIOWM 95405\nREVN 95406\nQ0NB 95407\nL2Nsb3Nl 95408\nIC8vLzwv 95409\nIG1lc21h 95410\nIEJlaXJ1dA== 95411\nIEluaXRpYWxpemluZw== 95412\n4buZdA== 95413\nTU9OVEg= 95414\nIO2bhA== 95415\nUGFya2luZw== 95416\nQ29tZm9ydA== 95417\nIEVuZ2luZXM= 95418\nd2VycA== 95419\nQFJlcXVlc3RQYXJhbQ== 95420\nLUtleQ== 95421\nIGJhY2tsaWdodA== 95422\ncGFzc2Vz 95423\nLm51bWJlck9mTGluZXM= 95424\nL0xpbnV4 95425\nKEhUVFA= 95426\nIEh0dHBVUkxDb25uZWN0aW9u 95427\nb3Nvcw== 95428\nLnh4 95429\nIGZpbG1wamVz 95430\nID09PT4= 95431\nb3B0aW1pemU= 95432\nQ2Fub24= 95433\nIC4uLiIK 95434\nICciJzsK 95435\nIGPDqWxpYg== 95436\nIHByaW5jaXBhbG1lbnRl 95437\nIFByb3BlcnR5VmFsdWU= 95438\nT1VOQ0U= 95439\nIGV4Y3Vyc2lvbg== 95440\nIEFjY2Vzc1Rva2Vu 95441\ncmVxdWV0ZQ== 95442\nVm9sdGFnZQ== 95443\nZXhwbGFpbg== 95444\nfSkoKTsKCg== 95445\nVVJMT1BU 95446\nIGZ1bmdhbA== 95447\nR3JlZWs= 95448\nLWJsaW5k 95449\nIGZldWRhbA== 95450\nIFNvbmF0YQ== 95451\nIERpYWdub3Npcw== 95452\nJHhtbA== 95453\nZWRpdGFyeQ== 95454\nIHN0aW11bGF0ZXM= 95455\nUG9udA== 95456\nLkhhc1ByZWZpeA== 95457\nYm9hdHM= 95458\nIFNjYXR0ZXI= 95459\nIEdFTkVSSUM= 95460\nIGZpc2hlcw== 95461\nPWxlbmd0aA== 95462\nIG1lbGhvcmVz 95463\nc3BlbnQ= 95464\nw7Rt 95465\nIEluZ3JhbQ== 95466\nPi4KCg== 95467\ncGFyaXR5 95468\nLlZpZGVvQ2FwdHVyZQ== 95469\nIFR1YmVz 95470\nIGNvbWVkaWM= 95471\nIHByb2Nlc3NEYXRh 95472\nQURC 95473\nKG5ld1N0YXRl 95474\n5YGc 95475\nIFdlYnNlaXRl 95476\nX09mZg== 95477\nLGJvZHk= 95478\nIHN1YmNvbnRyYWN0 95479\nIGNodXRl 95480\nIGNhcnRlc2lhbg== 95481\ndGhyZXNo 95482\nLkNhcnQ= 95483\nIG1ldG9k 95484\nY3VzdG9taXpl 95485\nTHRk 95486\nCXNvdW5k 95487\nV2ViU2VydmljZQ== 95488\nIEhpbmRlcmVk 95489\nW3Jlcw== 95490\nKFRpbGU= 95491\nY2FwYWJpbGl0aWVz 95492\nX09WRVJGTE9X 95493\nINGB0YHRi9C7 95494\nIENvY2g= 95495\nIHRlc3ROYW1l 95496\nV09SRFM= 95497\nXE1vZHVsZXM= 95498\nP3VybA== 95499\nX2NvbnRpbnVvdXM= 95500\nIFFJY29u 95501\nIHN0YXJlcw== 95502\nIGVqZWN0ZWQ= 95503\nIEludmFzaW9u 95504\nZmluYWxpemU= 95505\nIGdldg== 95506\nPGc= 95507\nIEVkaXRvckdVSQ== 95508\nQmVybGlu 95509\nLmxpbmVFZGl0 95510\nLXJlZ2V4cA== 95511\nIHNsZWQ= 95512\nIEVBQ0g= 95513\ndWNv 95514\nIHNlZWRpbmc= 95515\nIGxvY2FsaXpl 95516\nZXR1 95517\nX2FsbW9zdA== 95518\ncGFuc2U= 95519\nIFNlbnNvcnM= 95520\nX1NJ 95521\nKnNw 95522\nIFByb3BlcnR5SW5mbw== 95523\nIGFwcm94aW0= 95524\nIGRhdGFHcmlkVmlld1RleHRCb3hDb2x1bW4= 95525\n16A= 95526\nIGRpZmVyZW5jaWE= 95527\nTE9PSw== 95528\nIG9tbmlw 95529\nIFR1cmluZw== 95530\nIHVuaWRhZGVz 95531\n77yfCg== 95532\nLlJvd0hlYWRlcnM= 95533\nX0FDVElPTlM= 95534\nIERhbHk= 95535\nIGZvcnRpZmllZA== 95536\nIFdhZ2U= 95537\nLnNpbXBz 95538\nKGlzc3Vl 95539\nIGxlcHQ= 95540\nT3duZXJJZA== 95541\nJ29yZGVy 95542\n5Y+N 95543\n56Wo 95544\nIHJld3JpdGluZw== 95545\nLkl0YWxpYw== 95546\nIEZvcmdvdHRlbg== 95547\nKElM 95548\nIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24= 95549\nZXdu 95550\nIHBvcHVsb3Vz 95551\nIFNoZWQ= 95552\nIyR7 95553\nIEFsbw== 95554\nRGV2aWNlSW5mbw== 95555\nKElOVk9LRQ== 95556\nIHBlbmE= 95557\nIEJCQg== 95558\nLmJi 95559\nIHRvcnM= 95560\nIGNvbmR1Y2l2ZQ== 95561\nLXB1cnBsZQ== 95562\nIHNxdWFyZWx5 95563\nLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCg== 95564\n0LrRgNGL 95565\nZmFzdGE= 95566\nIGNwdA== 95567\nIEluZ2Vu 95568\nIHs/fQ== 95569\n0YPQsw== 95570\nUGVybA== 95571\nLnNreQ== 95572\nLWF1dG9tYXRpYw== 95573\naW1wbGVtZW50 95574\nb3JubWVudA== 95575\nLklNQUdF 95576\nLVNwZWVk 95577\nCUZpZWxk 95578\nIHBvdW5kZWQ= 95579\nIExa 95580\nIGF1dG9Gb2N1cw== 95581\nIOC5gA== 95582\nLkNvbXBhbmlvbg== 95583\nIFZpbQ== 95584\ndW5jaWE= 95585\nX3NrYg== 95586\nIHVubWFycmllZA== 95587\nIFNvdXI= 95588\nZ2FhcmQ= 95589\nTGVvZA== 95590\nIOCq 95591\nLkNsb3Vk 95592\nIHJlaW5mb3JjZXM= 95593\nJ10+ 95594\nIGZlbGl6 95595\nIFVBVg== 95596\ncmFuY2Vz 95597\n5Y2B 95598\nVG9MaXN0QXN5bmM= 95599\nLkV4ZWN1dG9y 95600\nLXRz 95601\nICcuJzsK 95602\nIEtpbmVjdA== 95603\n44GE44GG 95604\nIGJldm9y 95605\nIEV4dHJhY3Rpb24= 95606\nX2RyYXdlcg== 95607\nJHN1Yg== 95608\nIHVwbGlmdGluZw== 95609\nLmJ0bkV4aXQ= 95610\nKCcvLypbQA== 95611\nUkVESVM= 95612\nc3RkZXhjZXB0 95613\nZGVv 95614\nIGdpdmVy 95615\nX2JpbmRpbmdz 95616\nVG9EZXZpY2U= 95617\nLm1p 95618\nIEVzdGltYXRlcw== 95619\nYWxsZWxl 95620\nPz8/Cgo= 95621\nIFN0cmVhbXM= 95622\nIGFmZmxpY3Q= 95623\nLnNhcA== 95624\nIHF1YWxp 95625\nIEdhdWw= 95626\nU3BlY2lmaWVz 95627\nIHpr 95628\nIHNhbml0YXJ5 95629\nIG5ld0luZGV4 95630\nc3BlY3M= 95631\nIGZyYWdtZW50TWFuYWdlcg== 95632\nIE5lY2Vzc2FyeQ== 95633\nCVNwcmluZw== 95634\nPX4= 95635\nIE9NQVA= 95636\nY2FyZWVy 95637\nKCItIik7Cg== 95638\nIERhcmxpbmc= 95639\naXRhZw== 95640\nOnBr 95641\nIFN0ZWxsYXI= 95642\nIGluZmVydGlsaXR5 95643\nbGV4aWJsZQ== 95644\nVW5hcnk= 95645\nIDpdLA== 95646\nLk5FVw== 95647\nZ3N1Yg== 95648\nX1VGdW5jdGlvbg== 95649\nLnNsaWRlcw== 95650\nIGRpdmVyc29z 95651\nX2xvY2Fscw== 95652\nXFwv 95653\nIHBjYXA= 95654\nIE9vaw== 95655\nLkRhdGFHcmlkVmlld0NvbnRlbnRBbGlnbm1lbnQ= 95656\nZXJzb25pYw== 95657\nIHRyZWJ1aWU= 95658\nIHNlcXVlbnRpYWxseQ== 95659\nYWJhcg== 95660\nIElQQ0M= 95661\nIGRldm91dA== 95662\nXEhlbHBlcnM= 95663\nRVR3ZWV0 95664\nIHRyYWJhamFy 95665\nIFdpbGtpbnNvbg== 95666\nIGRhw58= 95667\nSHVtYW5z 95668\nVGVhY2hlcnM= 95669\nIERhdGFWaWV3 95670\nIFlvZw== 95671\nIGplZGU= 95672\nIGFtYmlhbmNl 95673\ndHJhbmQ= 95674\nIGVycmF0aWM= 95675\nIHThu6s= 95676\nLnJhYmJpdA== 95677\nIG5ld2JpZQ== 95678\nIGVudHJhbmNlcw== 95679\nIG9ydGhvZ29uYWw= 95680\nIERJU1BBVENI 95681\nIFNjaHJv 95682\nX1RVUk4= 95683\nOmludm9rZQ== 95684\nIHRhbnRhbA== 95685\nIFpvbmVz 95686\nc3RhdGVtZW50cw== 95687\nTGltaXRz 95688\nIEfDpA== 95689\naWHFgmE= 95690\nLnByZWRpY2F0ZQ== 95691\nLkZS 95692\nIENocmlzdG9waA== 95693\nLkNvbnM= 95694\nIEhvcnRvbg== 95695\nX0N1c3RvbWVy 95696\nCU1E 95697\nIGVsa2Fhcg== 95698\nIE1TRQ== 95699\nIElzQWN0aXZl 95700\nXSop 95701\nXFVuaXQ= 95702\nIGVv 95703\nRm9yT2JqZWN0 95704\nZWxpYWM= 95705\nLWRldmVsb3BtZW50 95706\nIHRlYWw= 95707\nIHN0aXRjaGVk 95708\nIE91dGNvbWU= 95709\nb25jw6k= 95710\nZW1iZWRkaW5n 95711\nIG9uTmV4dA== 95712\nIO2VtOuLuQ== 95713\nKGV4aXN0aW5n 95714\nLmJpZA== 95715\nCWFzc2VydEZhbHNl 95716\ne2w= 95717\nTEVycm9y 95718\nX2J1bGxldA== 95719\nKEh0bWw= 95720\nIGVCb29rcw== 95721\ncGVyUGFnZQ== 95722\nL3F1ZXN0aW9u 95723\nLmZha2U= 95724\nLm1i 95725\nX2RsbA== 95726\nIGN1bXNob3Q= 95727\nIE1hZGFnYXNjYXI= 95728\nSE9MREVS 95729\nIHBlc3F1aXNh 95730\nX0RFQ0xT 95731\nXSxbLQ== 95732\nIEFsYmFuaWE= 95733\nLXRvYXN0 95734\nIHByb3RhZ29uaXN0cw== 95735\nIG15b2NhcmQ= 95736\nIHdhbGtlcnM= 95737\nID09PT09PT0= 95738\nL1BhZ2U= 95739\nPTw/PQ== 95740\nIGVucXVhbnRv 95741\nX1RSVU5D 95742\nIHNlcHRlbWJyZQ== 95743\nIGxheW91dFBhcmFtcw== 95744\nICcuLi8uLi8uLi8uLi8uLi8= 95745\nIFRyYWZmb3Jk 95746\nIHBhbGF2cmE= 95747\nIHJ1bmRvd24= 95748\nIGJyaXR0bGU= 95749\nw6RjaGU= 95750\nLllFTExPVw== 95751\nIENlcmVtb255 95752\nIG5ld1RleHQ= 95753\ndmVjcw== 95754\nIGVzc2Vu 95755\nIE1ldG9kbw== 95756\nIEdVSURF 95757\nIHBvc3Rwb25l 95758\nIFZTdGFjaw== 95759\nWyIk 95760\nIE1pY3Jvc3lzdGVtcw== 95761\nXFBhZ2U= 95762\ncG1hdA== 95763\nX0ZBVUxU 95764\nX21C 95765\nU3RhdGVNYWNoaW5l 95766\nRmFjdWx0eQ== 95767\nLnd4 95768\nIE1vemFydA== 95769\nYW5pbWU= 95770\nIHB5dA== 95771\nIEJ1a2tpdA== 95772\nLUlORlJJTkdFTUVOVA== 95773\nIHNlYXJjaGVy 95774\nLWJhc2tldA== 95775\nIG9tYXM= 95776\nIFR1bmlz 95777\nIFBsYXR0 95778\nIHsNCg0KDQo= 95779\neWFo 95780\ndG9sdWE= 95781\nSW50cm9kdWNlZA== 95782\nc3VwcGx5 95783\nIG1pc29neW4= 95784\nIFdhaXN0 95785\nIEVI 95786\nLW9wZXJhdG9y 95787\nIGRhcmtlbg== 95788\nIENvc21pYw== 95789\nIGdsYWNpZXJz 95790\nIA0NCg== 95791\nXVtf 95792\nQ29tcGFueUlk 95793\nIFJlY29uc3RydWN0aW9u 95794\naXp6bGllcw== 95795\nIGzDrWRlcg== 95796\nIGNvbGxlZ2lhdGU= 95797\nIFBldHR5 95798\nT1VSTkFM 95799\nZGVjb3JhdG9ycw== 95800\ncmFtcw== 95801\nKCgK 95802\nIEFzdHJvbm9teQ== 95803\nIHJpbw== 95804\nIEN5cmls 95805\nanVhbg== 95806\nIHJlaW5j 95807\nIFBpc3RvbnM= 95808\nIEJ1c3k= 95809\ncHRyb24= 95810\nIHBvbW9j 95811\nCVJUQ0s= 95812\nQnV5aW5n 95813\nLy8qKgo= 95814\nIFdyYXBwZWQ= 95815\nIE1lZXI= 95816\nIGltYXA= 95817\nIGJlc3RpbW0= 95818\nIEFnaWxpdHk= 95819\nLlRvVGFibGU= 95820\nc3RpbmVuY2U= 95821\nXSkqKg== 95822\nIEF1dG9tYXRlZA== 95823\nZHNw 95824\nIEdhcmxpYw== 95825\naW9kZQ== 95826\nZXhlbHM= 95827\naW50cm9z 95828\nIGJlc3Rvd2Vk 95829\nKHZpc2libGU= 95830\nIGh5ZHJhdGVk 95831\nbm94aW91cw== 95832\nIEF1dGhlbnRpY2F0aW9uU2VydmljZQ== 95833\nIHNob3dNb2RhbA== 95834\nIGNvbXBvc2Vycw== 95835\nR0VORVJBTA== 95836\nQ1RT 95837\nIFNocg== 95838\nY3JlYXQ= 95839\nIGNsb3NldHM= 95840\nIGdyb3VuZGluZw== 95841\nIENPTU1FTlRT 95842\nICsj 95843\nIGdyb3VuZHdvcms= 95844\nKGluZGV4UGF0aA== 95845\nZ3JhdGlz 95846\ndXBwaWVz 95847\nIGt2bQ== 95848\nIGN1YWxlcw== 95849\nLkRlZXBFcXVhbA== 95850\nIGFsbG95cw== 95851\nLWJ1ZGdldA== 95852\nKF9fXw== 95853\nIGNvbmVjdGFy 95854\nLXJhZA== 95855\nIGl0Y2g= 95856\nbGFtcA== 95857\nLmdycA== 95858\nLWFkZG9ucw== 95859\nIHNlYWJvcm4= 95860\nIG5lZ2xpZ2VudA== 95861\nX0RldGFpbA== 95862\nIHNlcmVuZQ== 95863\nIGJhcnJhY2tz 95864\nIGJx 95865\nIFNlY3Q= 95866\nKGRhdG9z 95867\nIHRoZW1hdGlj 95868\nIHBvbGx1dGVk 95869\nCWFuaW1hdGlvbg== 95870\nSHVnaA== 95871\nRXhlY3V0YWJsZQ== 95872\nKCcvJylb 95873\nIGFwb3B0b3Npcw== 95874\nIGFiYnJldmlhdGVk 95875\nZm9vbg== 95876\nUmFua2Vk 95877\nCWhpdA== 95878\nCQkgICAgICAgICAgICAgICAgICAgICAgIA== 95879\nQ29udGludW91cw== 95880\nIG1vdmVUbw== 95881\nREJPYmplY3Q= 95882\nIGNvbmNlaXZhYmxl 95883\nIEd3ZW4= 95884\nIMOhbGw= 95885\nX18oKQ== 95886\nIExhbmE= 95887\nIGVpbnplbA== 95888\nIHJlY291bnRz 95889\neXN0ZW1z 95890\nb3dhbnk= 95891\nKTo/Pgo= 95892\nIEFrcm9u 95893\nb2xpbmk= 95894\nQ29ycA== 95895\nYXBocmFn 95896\nICInLg== 95897\nIGNvbnZlbmVk 95898\nIC4uLi4KCg== 95899\nIGNhbGxlZQ== 95900\nIENsb3Zlcg== 95901\nLmRlc2NyaXB0b3I= 95902\nLkl0ZW1TdGFjaw== 95903\nIHBlcnZlcnNl 95904\nX0NF 95905\nPUAi 95906\nLS0tDQo= 95907\nIGJldg== 95908\nc3VtYQ== 95909\nYWNjdW11bGF0b3I= 95910\nIGxpemFyZA== 95911\nINC+0Yc= 95912\nZ2V0RGVzY3JpcHRpb24= 95913\nIFNhcmFz 95914\nLm5leHRTaWJsaW5n 95915\nIGVsYXN0aWNpdHk= 95916\nIGNoYWM= 95917\nbW92ZWQ= 95918\nX1RvcA== 95919\ndHJlcg== 95920\nKGRvd24= 95921\nZWxlbXM= 95922\nb2JpbGk= 95923\nLnBvc3RNZXNzYWdl 95924\nICjiiA== 95925\nQ3N2 95926\nIFlvc2VtaXRl 95927\nc3dlZXQ= 95928\nTUFUUklY 95929\naWdyYXRlZA== 95930\nIGZvcmdpbmc= 95931\nIFBhZ2VTaXpl 95932\ndHJhbnNmb3Jtcw== 95933\nPVlFUw== 95934\nIGRpc2Nsb3Npbmc= 95935\nIFBlZGlhdHJpYw== 95936\nIERlYWRseQ== 95937\nUmVzb3VyY2VJZA== 95938\nLWJpbmFyeQ== 95939\nIFJvd2U= 95940\nIENhaXI= 95941\nX2V4dHJhY3Rpb24= 95942\nRGVjcmU= 95943\nIE9ic3Q= 95944\ncGxy 95945\nIFBoeXNpb2xvZ3k= 95946\nbXZj 95947\naHRp 95948\nLlRl 95949\nIGV4dHJhdmFnYW50 95950\nIEFudGli 95951\nw7NzdA== 95952\nb3V0ZGly 95953\nIGNhcm5l 95954\nVmlld1BhZ2Vy 95955\nIGltcGxhbnRlZA== 95956\nU2VhcmNoUGFyYW1z 95957\nw7xyZ2Vy 95958\nY29uZGU= 95959\nYWNlbnRl 95960\nX0NVREE= 95961\nJHZhbA== 95962\nIldoaWxl 95963\nIHRlbXBMaXN0 95964\nIHN5bmFnb2d1ZQ== 95965\nY21j 95966\nINGA0LDQsdC+0YLRiw== 95967\nIHNlem5hbQ== 95968\nIHNlc3N1YWxp 95969\nIGNhYmV6YQ== 95970\nZXTDoA== 95971\nIGZhw6c= 95972\nZ2Vo 95973\nY2VkZQ== 95974\nIlNvbWU= 95975\nOm9u 95976\nLWZvcm1lZA== 95977\nYnluYW1l 95978\nIOuwmO2ZmA== 95979\nIG5hw68= 95980\nIEFVRw== 95981\nIGVhc2Vk 95982\nXSl7 95983\nKHB0aHJlYWQ= 95984\nIGplZGVt 95985\nKGZpeHR1cmU= 95986\nIFBhcmw= 95987\nXX0pOwo= 95988\nIGV4cHVsc2lvbg== 95989\nIEluZXRBZGRyZXNz 95990\nIE1MUA== 95991\nLicpOw== 95992\nIG9ybw== 95993\nIFNldmlsbGE= 95994\nIGZvcm11bGFpcmU= 95995\nLXRlcnJvcmlzbQ== 95996\nL1dlYkFQSQ== 95997\nKmFuZ3N0cm9t 95998\nY3Jhd2w= 95999\nX2xvYW4= 96000\nX0RJR0VTVA== 96001\nIEtub3h2aWxsZQ== 96002\nLmdjYQ== 96003\nIERpeQ== 96004\nbnRhZw== 96005\nYWJsZVZpZXdDb250cm9sbGVy 96006\nLkZlZWQ= 96007\nLXNoYXJlZA== 96008\nIGNvY2Np 96009\nX2ludml0ZQ== 96010\nIEJ1Y2tpbmdoYW0= 96011\nIEdsdXRlbg== 96012\nIGVuZGVtaWM= 96013\nUmFpc2Vk 96014\nIHF1ZXJ5SW50ZXJmYWNl 96015\nIG1hcnRpbg== 96016\nQuG6oW4= 96017\nIGhhcmU= 96018\nIGRlaW4= 96019\ncmFyaWFu 96020\nbXlmaWxl 96021\nIGFuZ3Vpc2g= 96022\nVGV4dG8= 96023\nIEJVRkY= 96024\nKGxu 96025\nbWFycw== 96026\nX3N1YnRpdGxl 96027\nX2dpZnQ= 96028\nIGJvbGRseQ== 96029\nIFNpbmd1bGFy 96030\nKExvZ0xldmVs 96031\nPEFydGljbGU= 96032\nL3N0YXRz 96033\nINC/0L7Qsg== 96034\nIGl0ZW5z 96035\nIGRlbm9taW5hdGlvbg== 96036\nLkRhdGFHcmlkVmlld1RyaVN0YXRl 96037\nX0xS 96038\nIER1Y2hlc3M= 96039\nCUJsb2Nr 96040\ndHJhY2Vy 96041\nLUNO 96042\nXEFwcERhdGE= 96043\nLmxpc3Rz 96044\nKFJvdXRl 96045\nIEdPT0RNQU4= 96046\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg== 96047\nIHRpbmhh 96048\nIGV2ZXJsYXN0aW5n 96049\nYURhdGE= 96050\nKGNvbXBhcmU= 96051\nIHJwdA== 96052\nXFBocA== 96053\nLkZJTEVT 96054\nIHNwYXJpbmc= 96055\nU2Nhcg== 96056\nINin2YTYqg== 96057\nIEJldGhsZWhlbQ== 96058\nIGJhY2twYWdl 96059\nc3BsaWNl 96060\nZsO2cg== 96061\nQGR5bmFtaWM= 96062\n4bupYw== 96063\n7KY= 96064\nLnBhZ2luZw== 96065\nIEJlbG1vbnQ= 96066\nLkVYUA== 96067\nIGludGVybGU= 96068\nIENoZWNrbGlzdA== 96069\nIFVuaWNvcm4= 96070\nQkVTVA== 96071\nZ2V0UGxheWVy 96072\nLmFyZ3NvcnQ= 96073\nIHdpdGhTdHJpbmc= 96074\nIE1vZGVyYXRl 96075\nfSI+Cg== 96076\nLnNldEltYWdlQml0bWFw 96077\nIHRyZW5jaGVz 96078\nIGdlbmVyYXI= 96079\nIGZlcm1lbnRlZA== 96080\nIGRlanRpbmc= 96081\nQ3RybHM= 96082\nIGRpc2FncmVlcw== 96083\nUXVpZXQ= 96084\nKFNRTEV4Y2VwdGlvbg== 96085\nIFRlbnNvckZsb3c= 96086\nT05B 96087\nUG9ydGxhbmQ= 96088\nLlB0cg== 96089\nbGx4 96090\nYXN0b24= 96091\nQ2x1c3RlcnM= 96092\nIFVzdWFyaW9z 96093\nIGtoaQ== 96094\nIGdpYQ== 96095\nIERvbHBoaW4= 96096\nxZFz 96097\nIGx1ZGVy 96098\nIGRpc3Bvc2l0aXZv 96099\nIFZ5 96100\nb21wc29u 96101\nIO2VoA== 96102\nIGtjYWw= 96103\nIENhbGNpdW0= 96104\nU2VjdGlvbnNJbg== 96105\nIENhc2M= 96106\nIGdyYXR1aXRp 96107\nb3NvbWFs 96108\nIHVuZGVyY3V0 96109\nIENhaA== 96110\nOnBhcmFtcw== 96111\nIHJldHVyblVybA== 96112\nIEVyZQ== 96113\nw6lyYw== 96114\nIGludGw= 96115\nfS8jew== 96116\nIG91dHB1dFBhdGg= 96117\nIGZhbHNlaG9vZA== 96118\nIFVzZXJSb2xl 96119\nPEhhc2hNYXA= 96120\nIENyZWF0ZVVzZXI= 96121\nIENvd2JveQ== 96122\nCVVzZQ== 96123\nXSgK 96124\nIFNob3BpZnk= 96125\nVmlld1N0YXRl 96126\nQWR2YW5jZQ== 96127\nLXRhbms= 96128\nIlQ= 96129\nIEplbnM= 96130\nPW9wdGlvbnM= 96131\nKCIuLg== 96132\nLm1pbWU= 96133\nIENSVA== 96134\nIGjDpHR0ZQ== 96135\nKHNv 96136\nLlVOS05PV04= 96137\nIGRhcsO8YmVy 96138\nIENPVkVS 96139\nR2Vt 96140\nQ3Jv 96141\nX1JFQ1Y= 96142\nX2hpZXJhcmNoeQ== 96143\nQ2hvb3Npbmc= 96144\nSkVYRUM= 96145\nIGRvcnNhbA== 96146\nKyI8 96147\nIE5leQ== 96148\nV29tYW4= 96149\nQmV6aWVy 96150\nIHJpZ3M= 96151\nIG9udHZhbmc= 96152\n77yM5YiZ 96153\nIEdhdXQ= 96154\nY21i 96155\nTmhhcA== 96156\nIG1vbm9j 96157\nIGVuZXJnaWE= 96158\nb2JzZXJ2ZU9u 96159\nc3Rha2Vz 96160\nLSot 96161\nIE5hY2s= 96162\nfX0iCg== 96163\nZXJ2YXM= 96164\nIEhpbmRlcmVkUm90b3I= 96165\nQWRqYWNlbnQ= 96166\nIEludGVybmFjaW9uYWw= 96167\nCWFyZWE= 96168\nIPCflA== 96169\nIHNwYXJrbGU= 96170\nKCkuXw== 96171\nLmlkZWE= 96172\nIHV0cmVjaHQ= 96173\nIG1hcHBlZEJ5 96174\nIENvbG8= 96175\nCVRS 96176\nUG9zdGVy 96177\nIGNvbWJhdGluZw== 96178\nIFllbGxvd3N0b25l 96179\naWVycmV6 96180\nYWNjdA== 96181\nIHPDoWNo 96182\nLk5ld3M= 96183\nIGZpZWxkVmFsdWU= 96184\nIGNheg== 96185\nIEZyZWVt 96186\nCQkKCQo= 96187\nIHVzdXI= 96188\nIHNvbGE= 96189\nIGN1bWJlcnNvbWU= 96190\nIGNhdGFwdWx0 96191\nIi4v 96192\nIEV4ZWN1dG9ycw== 96193\nIEFtZXM= 96194\nICc8JT0= 96195\nZmlsbG5h 96196\nLOKAlA== 96197\nOlNldFRleHQ= 96198\nLWNhdGVnb3JpZXM= 96199\nLWFyY2hpdmU= 96200\nIFBvbGx1dGlvbg== 96201\nLk9m 96202\n4oCcQXQ= 96203\nX0NIQVJTRVQ= 96204\nKENvbHVtbg== 96205\n4oCZKQ== 96206\nIHVubWlzdGFr 96207\nIGVhcm0= 96208\nIFBsYXRmb3Jtcw== 96209\nIE1vbWVudHVt 96210\nVmVjdG9yaXplcg== 96211\ncmF3ZXI= 96212\nKHBhc3Nwb3J0 96213\nKHBsYW5l 96214\nIHJlcHJlc2VudGE= 96215\nIHB1YmtleQ== 96216\nIEphaW4= 96217\nIG1lbm5lcw== 96218\nIGluc3RhbnRhbmVvdXM= 96219\nIGV0aGVycw== 96220\nIG5lc3Rz 96221\nIFBhdHRvbg== 96222\nIEhBQ0s= 96223\ncGFja2luZw== 96224\nSVNlcnZpY2U= 96225\nIHJvY2tlcg== 96226\nIGZpY2E= 96227\nIEdsYWRpYXRvcg== 96228\nIFVQQw== 96229\nIExvd2VsbA== 96230\nYmVhcmVy 96231\nIHZpcGVy 96232\nX2dsb2I= 96233\nIG1hc2hlZA== 96234\nIGhhaXJzdHlsZQ== 96235\nIHVuZGVybWluZXM= 96236\ncmVzdGF1cmFudHM= 96237\nIHJlYWN0aW9uYXJ5 96238\nIGJpbGxpZw== 96239\nfSIpOw0K 96240\nIHZpc3Rhcw== 96241\nIG9wZW5kaXI= 96242\nCWxhYmVscw== 96243\nYWxsaXM= 96244\nIFdvbGZm 96245\nIENQQw== 96246\nIHJhaWx3YXlz 96247\nIFZhdWdoYW4= 96248\nIEFza2luZw== 96249\nY2Fp 96250\nIEdu 96251\nX1BST0Y= 96252\nLVNlcA== 96253\nLmN1cnZl 96254\nTXVsdGlwbHk= 96255\n0YDQsNC90LjRhg== 96256\nIG1lZXR1cA== 96257\nZ2V0RGI= 96258\nKEdVSQ== 96259\nIHJlaW1idXJzZQ== 96260\nOnJlc3VsdA== 96261\nVHVtYmxy 96262\nLkNsb3NlZA== 96263\nIGNvbmZvcm1z 96264\nIEhvaw== 96265\naWVkYWRl 96266\nTmV3TGFiZWw= 96267\nIG5hdkN0cmw= 96268\nRG9jdG9ycw== 96269\nIOyViA== 96270\nIGJvdXRz 96271\nIGlzYw== 96272\nLyc7Cgo= 96273\ndWhs 96274\nLlVp 96275\nLXNhbWE= 96276\nIENhbm9uaWNhbA== 96277\nIG1ldGljdWxvdXM= 96278\nIGdyb3Rlcw== 96279\nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8= 96280\nZXRlcw== 96281\nIGxhbmd1ZQ== 96282\nIGZDaGFpbg== 96283\nIFR5cGVmYWNl 96284\nIEJyaWdoYW0= 96285\naWFyZQ== 96286\nJ8OpdGFpdA== 96287\nIEVGRg== 96288\nIGRlc3Ryb3llcg== 96289\nX21hdHJpY2Vz 96290\nTsO6bWVybw== 96291\nY2FsbGFibGU= 96292\nX3BlcmlvZHM= 96293\nc3RydWs= 96294\nbWFq 96295\nLnJs 96296\nLmxpZnQ= 96297\n2YrZhA== 96298\nw5A= 96299\nUmV0VmFs 96300\nRGVudmVy 96301\nIFRyaWJ1dGU= 96302\na2l5ZQ== 96303\nemV3 96304\nIFNwYXJl 96305\nIGxldWtlbWlh 96306\nIHdhaXRyZXNz 96307\nIHBsdXTDtHQ= 96308\nQWxpYXNlcw== 96309\nIExvY2F0ZQ== 96310\n5rY= 96311\nSWRlbnRpZmljYXRpb24= 96312\nLnRlbA== 96313\nLWRheXM= 96314\ndGVycml0 96315\naW1idXM= 96316\nIEJ1dHRlcktuaWZl 96317\n64K0 96318\ncnVwdGN5 96319\nIEdyYWRlcw== 96320\nIHVuZGVyc2lkZQ== 96321\nIGhhcmRzaGlwcw== 96322\ndW5laQ== 96323\nLWNvbnRhaW5lZA== 96324\nIFsnLg== 96325\nT2Jzb2xldGU= 96326\nLlJldHJvZml0 96327\nIHVyYW51cw== 96328\nX3JnYmE= 96329\nIHJhcGVz 96330\nIEthcmU= 96331\nW+KApl0= 96332\nIEZpbmNo 96333\nLmJ1bmlmdUZsYXRCdXR0b24= 96334\ncXVpc2Fy 96335\nIE51cnNlcw== 96336\nZWdhZGU= 96337\nIGhu 96338\nRXhjbHVkZQ== 96339\nIHN0b2NoYXN0aWM= 96340\nIHNvdHRv 96341\nIFBlbmFsdHk= 96342\nIHNvbnN0 96343\nIHJvc2E= 96344\nX0ZpbmQ= 96345\nIEludmFsaWRhdGU= 96346\nTGlzdEl0ZW1JY29u 96347\nJywNDQo= 96348\nX3BkdQ== 96349\nIE1lYWxz 96350\nYWrEhWM= 96351\nIE9vcHM= 96352\nIE5vdGljZXM= 96353\nIGRlcml2YXRpb24= 96354\nW10NCg== 96355\n6Lqr 96356\neXN0ZXJ5 96357\nX2ZpdmU= 96358\nRWFybg== 96359\nPWV2ZW50 96360\nIG9ncg== 96361\nLVJFQUw= 96362\nIExpcHM= 96363\nc2VsZWN0b3Jz 96364\nYWRpZXI= 96365\nIHNldEJhY2tncm91bmRJbWFnZQ== 96366\nKHRoaW5n 96367\nIHNvZnRiYWxs 96368\nXHhhYQ== 96369\nKGlkZW50 96370\nIEp1cnk= 96371\nIFZveWFnZQ== 96372\nIFRBcnJheQ== 96373\nKFBhaW50 96374\nV2FybQ== 96375\nRVhURVJOQUw= 96376\nYXN1 96377\nICghKCg= 96378\nLkZFVENI 96379\nIHNraXJt 96380\nT1JFRA== 96381\nY2FuY2VsbGVk 96382\naXR0ZWw= 96383\nIHNlZWR1 96384\nbGljaGVz 96385\nb2hv 96386\nLHJldGFpbg== 96387\nKFdlYkRyaXZlcg== 96388\naXB0YWJsZXM= 96389\nRVJJQ0E= 96390\nIGNsZWFubGluZXNz 96391\nZWxsb3dvcmxk 96392\nIGNvaGVzaW9u 96393\nZ2lzdA== 96394\nXS4n 96395\nZXJnaW5n 96396\nIGlzcA== 96397\nLm9mZnNldFRvcA== 96398\nKGZhY3Rvcg== 96399\ndW5pdmVyc2Fs 96400\nIFBsYXliYWNr 96401\nIEJ5dGVTdHJpbmc= 96402\nIGRhbW5pbmc= 96403\nIFNTUg== 96404\nYWN1cw== 96405\nIFN0YXRlbg== 96406\nIOWVhuWTgQ== 96407\nIFBlZQ== 96408\nIFNhbXBsaW5n 96409\nYXRvcmlh 96410\nc3RhcnRJbmRleA== 96411\n5ZCr 96412\nIOy0iOq4sA== 96413\nIE9saXZlaXJh 96414\nIEZsYWtl 96415\nYm9vbQ== 96416\nX01TSw== 96417\nIEZhY2luZw== 96418\nb3JnaGluaQ== 96419\nZm9vZHM= 96420\nVHJlZVdpZGdldEl0ZW0= 96421\nIEhBTEY= 96422\nIiIiKQo= 96423\nIENIQVBURVI= 96424\nIEV2ZWx5bg== 96425\nPis= 96426\nIEhvcm5ldHM= 96427\nd29rZQ== 96428\nIC9b 96429\nYXRob2xpYw== 96430\nLnNlZ21lbnRz 96431\nLm5hdmlnYXRlQnlVcmw= 96432\nIE1hbnVz 96433\nIHBlcHRpZGVz 96434\nIGZsZWV0aW5n 96435\nIEFUVg== 96436\nIFNoaWI= 96437\nSW50QXJyYXk= 96438\nIG1veg== 96439\ncHJvYmxlbXM= 96440\nb2duZQ== 96441\nLk90aGVy 96442\nQWRtaW5pc3RyYXRpb24= 96443\nJSUqLw== 96444\nIl09PQ== 96445\nIEFuZHJlcw== 96446\nQWRh 96447\naGludHM= 96448\nXCIiOwo= 96449\nKHBuZw== 96450\nIOqwgOuKpQ== 96451\n44OK 96452\ncmVqZWN0ZWQ= 96453\nIG1vdmVycw== 96454\n546H 96455\nIHBhcmVudGhlc2lz 96456\nKGFzc2lnbnM= 96457\nRWxpdGU= 96458\nUmVtaW5kZXI= 96459\nIHN1ZmZlcmVycw== 96460\nIFJlc291cmNlQnVuZGxl 96461\ndGhhZw== 96462\nPicNCg== 96463\nYW50aW5v 96464\nUGVyaXBo 96465\nIFNoYXJk 96466\nQ2hhcnREYXRh 96467\nKGpq 96468\nIG9zdGF0 96469\naHVnZQ== 96470\nLWF1dGhvcmVk 96471\nLmNp 96472\nIHB5bXlzcWw= 96473\nIGxpbmVycw== 96474\nIEFUUw== 96475\nPkxhc3Q= 96476\nKSIpCgo= 96477\nIGdldHBpZA== 96478\nR2V0U2l6ZQ== 96479\nIGV4dG9ydGlvbg== 96480\nW2Zsb2F0 96481\nIEVJTkE= 96482\nL0Jhc2U= 96483\nLnNldE9uQWN0aW9u 96484\n0L7Qu9GP 96485\nIEdsYWNpZXI= 96486\nX2F6 96487\nIHRyYW5zcG9ydGU= 96488\nIFNtcw== 96489\ndGh1bWJz 96490\nIHRyZWFzdXJlcg== 96491\nIG16 96492\naXN0aWs= 96493\nUkVESUVOVA== 96494\nIGlzaQ== 96495\nX3N0dWZm 96496\nUE9TSVRPUlk= 96497\nc3RhcnRkYXRl 96498\nIFppbmM= 96499\n5rG9 96500\nIGthaw== 96501\nIGVyZmFocmVu 96502\nX0NPTUJP 96503\nIHVjd29yZHM= 96504\nLlBheQ== 96505\nIGtpbmdkb21z 96506\nIGV4Y2VsZW50ZQ== 96507\naWduaXRl 96508\nX3ZhcmlhdGlvbg== 96509\nIG5hdmVnYWRvcg== 96510\n5LiT 96511\ndmlld0NvbnRyb2xsZXI= 96512\ncmlyZQ== 96513\nSG9uZXN0bHk= 96514\nQ2FzY2FkZQ== 96515\nZXRyYWlu 96516\nQXJnZW50aW5h 96517\nY3E= 96518\nIE1hcmlhbg== 96519\nL2Fy 96520\nIGludGVyZXNzZQ== 96521\ndXJhaGFu 96522\nKFBD 96523\nIGZyaXZvbA== 96524\nIFRydXN0ZWQ= 96525\nKElDb25maWd1cmF0aW9u 96526\nIFJpaGFubmE= 96527\nZW5kb3ph 96528\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg 96529\nIHByb2NsYW1hdGlvbg== 96530\nIHByZWRvbWluYW50 96531\nIGNvbnN0cw== 96532\nLW5lY2s= 96533\nV29sZg== 96534\nLmNoZWNrYm94 96535\nIHN0YW56YQ== 96536\nIGVudGVuZGVy 96537\nLy8o 96538\nSGFuZHM= 96539\nIGJpbGxlZGVy 96540\nIFRvc2hpYmE= 96541\nYWJiaXg= 96542\nRU5DSUVT 96543\nIGppbQ== 96544\nUFVS 96545\nLmxlc3Nvbg== 96546\nIGJlcnRo 96547\nbGFyxLFu 96548\nQmxv 96549\nCWV4dA== 96550\nZWVs 96551\nIGRlbWFzaQ== 96552\nIGNvbG9uaXphdGlvbg== 96553\nL2Rpc2M= 96554\n77yP 96555\nQ2VydGFpbmx5 96556\n566h55CG5ZGY 96557\nIGpvZ2Fkb3I= 96558\ndcOp 96559\nQ29sdW1uc01vZGU= 96560\nIEpW 96561\nIEluc3RpdHV0 96562\nX3NwZWN0cnVt 96563\nLmRlbnNl 96564\nIFNob3J0Y3V0 96565\nIHNlYnVhaA== 96566\nIGZsYXNoeQ== 96567\nUmVnYXJkcw== 96568\nIHNoYXJwZXI= 96569\nY2FuY2VsbGF0aW9uVG9rZW4= 96570\nX2RldGFsbGU= 96571\nIFNjYXJsZXR0 96572\nINC80LDRgg== 96573\nIG5lZ29jaW8= 96574\n4LiW 96575\nIEpX 96576\nd2ViZHJpdmVy 96577\nLndhbGw= 96578\nIHhhbWFyaW4= 96579\nb3BhcXVl 96580\nLkFkZFBhcmFtZXRlcg== 96581\nKENvbnRyb2xsZXI= 96582\nLWFib3J0aW9u 96583\nX0ZVTkNUSU9OUw== 96584\nQ3VzdG9tZXJJZA== 96585\nIHZlbmly 96586\nIEJ1c3Rlcg== 96587\nX3ByZWRpY3RlZA== 96588\nL3J1bGVz 96589\nLU1ldGhvZHM= 96590\nIGdkemll 96591\nIl0nKTsK 96592\nIFB4 96593\nQ09OUw== 96594\nLlNsaWNl 96595\nIHJldmFtcGVk 96596\nIFRhYmxlVmlldw== 96597\nIGRpY2tz 96598\nIO2YuOy2nA== 96599\nIEF1eGlsaWFyeQ== 96600\nT3BlcmE= 96601\nL3Jj 96602\nIHVudGhpbmthYmxl 96603\nIGRlZHVjdGVk 96604\nbHo= 96605\nIExhZ2U= 96606\nIFJvd2xpbmc= 96607\ncHJvdmVk 96608\nT2ZmZXJz 96609\nLHNldA== 96610\nUkdCTw== 96611\nIEZV 96612\nIENlbnRPUw== 96613\nb3pv 96614\nIFRyb2phbg== 96615\nIG1hw7FhbmE= 96616\nIC8vPQ== 96617\nKio6 96618\nIHtcCg== 96619\nIEJvd2Vu 96620\nS25vd2luZw== 96621\nIOW6 96622\nPS09LT0tPS09LT0tPS09LQ== 96623\nIGViZW5mYWxscw== 96624\nXT17Cg== 96625\nQk1J 96626\nKCk7KQ== 96627\nKHBlcm1pc3Npb24= 96628\nQW5kZXJzb24= 96629\nIGRlZ3JhZGU= 96630\nU29hcA== 96631\ndcWf 96632\nIFB1cHB5 96633\nIEV0aGlvcGlhbg== 96634\nIFRFU1RJTkc= 96635\nZW5zZXg= 96636\nIGRyZXNzZXI= 96637\nIENob3Jl 96638\nVW5oYW5kbGVk 96639\nQXNzb2NpYXRl 96640\nLmFkZGl0aW9uYWw= 96641\nIGRpZmbDqXJlbnRlcw== 96642\naXNxdWU= 96643\nIG5lY2Vzc8Ohcmlv 96644\nIGdlbmVyaWNz 96645\nKHBm 96646\nIFxg 96647\nIE5lYXJieQ== 96648\nYXBvcmF0aW9u 96649\nIFRoZW1lRGF0YQ== 96650\nV2lGaQ== 96651\nLlJlYWw= 96652\nYWN5ag== 96653\nTGl2 96654\nIHBzeWNob2xvZ2ljYWxseQ== 96655\nbWV0aG9kUG9pbnRlclR5cGU= 96656\nIE5pa29s 96657\nIERlZGljYXRlZA== 96658\nX1BPUlRT 96659\nIEphZQ== 96660\nTlNBdHRyaWJ1dGVkU3RyaW5n 96661\nIGFtYmFzc2Fkb3Jz 96662\nIEhhbmRsZXJz 96663\nIEFuYXQ= 96664\nIHZvY2FsaXN0 96665\nIHJhcg== 96666\nIGRldnVlbHZl 96667\nLmdz 96668\nIHhjYg== 96669\nIHN1Ym1vZHVsZQ== 96670\nIEFTU0lHTg== 96671\ndXJlZW4= 96672\nIGNsYXNlcw== 96673\nZW1vdGg= 96674\nX0NOVEw= 96675\nX2p3dA== 96676\nIOuniA== 96677\nIG91dHBvc3Q= 96678\nIEluYm94 96679\nCWZsZXg= 96680\nIEdyb2Nlcnk= 96681\nSUxJTkU= 96682\nLm1vYg== 96683\nIENvbnN0cg== 96684\nXT1d 96685\nKHdhbGxldA== 96686\nIHNlZGU= 96687\nZmFs 96688\nIGltcGFzcw== 96689\nPXtbJw== 96690\nIHVuZm9yZQ== 96691\nZnVzZQ== 96692\nX0xlYW4= 96693\nIGF2YWxhbmNoZQ== 96694\nPXJhbmQ= 96695\nIGFkdWx0ZXJ5 96696\nIEdlZQ== 96697\nCUlucHV0U3RyZWFt 96698\nIGNhYmVs 96699\nX01PVU5U 96700\nIG5vdGljaWFz 96701\nIFJhdW0= 96702\nIGJ5dGVhcnJheQ== 96703\nIG9uSGlkZQ== 96704\nICkuCg== 96705\nJGluc3RhbmNl 96706\nIGRpZFNlbGVjdFJvd0F0SW5kZXhQYXRo 96707\nYWNhbQ== 96708\nLWNvbGxlY3Rpb24= 96709\nIHVwaGU= 96710\nUG90ZW50aWFs 96711\nIFNEUw== 96712\nX2FwcHJvdmFs 96713\nRGFtbg== 96714\nOmNvbnZlcnQ= 96715\nIE1vZGlmaWNhdGlvbnM= 96716\nIOyYiA== 96717\nIHVuYWI= 96718\nIHNjcm9sbGVk 96719\nKyIpOwo= 96720\nIGdhdWNoZQ== 96721\nIEhPTA== 96722\nYW50YW5hbW8= 96723\nIGNvbHVtbkhlYWRlcg== 96724\nCVpFUEhJUg== 96725\nemFj 96726\nIG91dGluZ3M= 96727\nIGFwcGxhdWRlZA== 96728\naG9yaWE= 96729\nbW9keA== 96730\nIG1pbGxlbm5pYQ== 96731\nJm0= 96732\nLkpzb25JZ25vcmU= 96733\nIHBpb25lZXJlZA== 96734\nIENhdnM= 96735\nCWpz 96736\nZGVwYXJ0dXJlZGF5 96737\nX2ti 96738\nLlBhdGllbnQ= 96739\nIHBldGFscw== 96740\ncG9ydHJhaXQ= 96741\nIn19Cg== 96742\nSG9tZUFzVXBFbmFibGVk 96743\nLnByZXR0eQ== 96744\nLGNsanM= 96745\nIG1lZGlvcw== 96746\naGFzaGVk 96747\nZW1vZGVs 96748\nIE1vam8= 96749\nLmZyb21SR0JP 96750\nLXBl 96751\nIGludGltYXRlbHk= 96752\nIGVsZ2c= 96753\nW107DQo= 96754\nL09ic2VydmFibGU= 96755\nIG9iZWRpZW50 96756\nIEphbWFs 96757\nUmVxdWlyZWRNaXhpbg== 96758\nIExpc3RWaWV3SXRlbQ== 96759\nCXBsYWNlaG9sZGVy 96760\nX3RyYW5zYWtzaQ== 96761\nPFNlcnZpY2U= 96762\nIGVuc3VlZA== 96763\nIFJpY2Fu 96764\nU2FnYQ== 96765\nQVVESU8= 96766\nIGpt 96767\nLXNhbGVz 96768\nLW11bHRp 96769\nJSI7Cg== 96770\nIGNsYXNzaWZpY2F0aW9ucw== 96771\nIHTDo28= 96772\nQ29hbA== 96773\nOycpOwo= 96774\nIGRlbGlnaHRz 96775\nX2h6 96776\nX2JvbGQ= 96777\nREVQRU5E 96778\nINCh0L7Qt9C0 96779\nYXRlZQ== 96780\nX3N1Ym5ldA== 96781\nIFRvd25zZW5k 96782\nIENhc3RpbGxv 96783\nIHBydA== 96784\nJC8p 96785\nIGZpbGli 96786\nKCcvJylbLQ== 96787\nIHVwaG9sc3Rlcnk= 96788\nIGNvbXBvbmVudGU= 96789\nIFhG 96790\nLlJldmVyc2U= 96791\nX3R1bm5lbA== 96792\nSW1tZWRpYXRlbHk= 96793\nLW1vdmU= 96794\nIGFsaXN0 96795\nV1ND 96796\nc3RydWN0dXJhbA== 96797\naXN0b3JpY2Fs 96798\nVGFuZ2dhbA== 96799\nIENPVVJU 96800\nIG9ic2N1cmVk 96801\nIGxhbmRzbGlkZQ== 96802\nIGJlZHNpZGU= 96803\nIGJhcmFuZw== 96804\nLWVsZWN0ZWQ= 96805\nIGNlcmFtaWNz 96806\nLS0qLwo= 96807\nIFdhbm5h 96808\nRHlu 96809\nIHZlcnNjaGllZGVuZQ== 96810\nIGluZHVjaW5n 96811\nIGZsdXRl 96812\nLkFwcGVuZFRleHQ= 96813\nIFp1Yg== 96814\nIFB1bGl0emVy 96815\nOmJvdGg= 96816\nLm1heExlbmd0aA== 96817\nLlByb3BlcnR5VHlwZQ== 96818\nYXd5 96819\naXRlbU5hbWU= 96820\nIE5hcnJhdGl2ZQ== 96821\ncmV2b2x1dGlvbg== 96822\nIGhhbHRlbg== 96823\nIEVycm9yUmVzcG9uc2U= 96824\nZ2F0aGVy 96825\nL3V0aWxpdHk= 96826\nOicn 96827\nIEtlZQ== 96828\nIE9seW1waWE= 96829\nQ2xpbmljYWw= 96830\nOmdyZWVu 96831\nIFBsZXg= 96832\nIEtlbnNpbmd0b24= 96833\nIFBob25ldGlj 96834\nIGRpc3RyaWJ1dGVz 96835\nX2V4ZW1wdA== 96836\nV2F0Y2hpbmc= 96837\nLk1pc2M= 96838\nIGRvbWFpbmU= 96839\nOiIu 96840\n44OV44I= 96841\nX01PRFVMRVM= 96842\nIGhhYmxhcg== 96843\nIExhb3M= 96844\nLnNldFRleHRTaXpl 96845\nLnBhdXNlZA== 96846\nX1RX 96847\nIG92ZXJ3aGVsbQ== 96848\nIGhlbWF0 96849\nTHVja2lseQ== 96850\nIFNFTlQ= 96851\nIEludmVzdGlnYXRvcnM= 96852\nPih7 96853\nKGZvdXQ= 96854\nIEFVWA== 96855\nLnJhd1F1ZXJ5 96856\nLXN0cm9uZw== 96857\nIHJlc2VtYmxlZA== 96858\nIFNoYWZ0 96859\nIFhJSUk= 96860\nc3VnZ2VzdA== 96861\nIHNpbmdhcG9yZQ== 96862\nX2FiaWxpdHk= 96863\nJGs= 96864\nCWlOZEV4 96865\nXEltYWdl 96866\nQ2FkYXN0cm8= 96867\nLnBpdm90 96868\nIG1hbnBvd2Vy 96869\nX2F0dHM= 96870\nLnNldEZpbGw= 96871\nZXdvcmxk 96872\nY29uc3Rz 96873\nR2V0V2lkdGg= 96874\nIGdyYXR1aXRh 96875\nIFBldHI= 96876\nLWFuc3dlcg== 96877\nIEhlbWlzcGhlcmU= 96878\nIENhag== 96879\nIFRyYWRlcw== 96880\nxIdp 96881\nIEZyZWRkeQ== 96882\nT25DaGFuZ2U= 96883\nIHBvcm5vZ3JhZmlh 96884\nIFNVTU1BUlk= 96885\nX21lYXM= 96886\nIERSSVZF 96887\nIENyZWU= 96888\nX21hbGU= 96889\nIHN1aw== 96890\nIG1hbmV1dmVycw== 96891\nc2V0VmlzaWJpbGl0eQ== 96892\nYWxsaQ== 96893\nIGRpc2NyZXRpb25hcnk= 96894\ncmVnYXRpb24= 96895\nWVNUSUNL 96896\nOmhyZWY= 96897\nIHRhcmFm 96898\nIGNodQ== 96899\nIEBb 96900\nRW5vdWdo 96901\nLlRyYW5zZmVy 96902\nSWZOZWVkZWQ= 96903\nOildKQ== 96904\nCSAgICAgICAgICAgICAg 96905\nW2F4aXM= 96906\nVHJhbnNsYXRpb25z 96907\nLnNlcnZlcnM= 96908\nIEtFRVA= 96909\nJywpCg== 96910\nc3BvbnNvcg== 96911\nYXJjaGl2ZXM= 96912\nLlVsdHJhV2lu 96913\nIEhvbm91cg== 96914\nJ10pKTs= 96915\nIGluZWxpZ2libGU= 96916\nIEFudHdvcnRlbg== 96917\nIEFwcGxpY2F0aW9uRXhjZXB0aW9u 96918\nIGNhdGVnb3JpZQ== 96919\nIFdFSUdIVA== 96920\nIEJ1bmR5 96921\nIFBJWEVM 96922\nIGR1a2U= 96923\nVG93ZXI= 96924\nU2NvdGxhbmQ= 96925\nIHJlZmVyZWVz 96926\nIEFzc2VtYmx5VHJhZGVtYXJr 96927\nCXN0YXJ0QWN0aXZpdHk= 96928\nLk9uZVRvT25l 96929\nIEF1c3dhaGw= 96930\nIHN0cmVuZ3RoZW5z 96931\nLlF1aXQ= 96932\nIFVSTFJlcXVlc3Q= 96933\nZWVj 96934\nIHJlZ2lzdHJhemlvbmU= 96935\nIGhvc2Vz 96936\nQWN0dWFsaXphcg== 96937\nL2FycmF5 96938\nIGNvbnN0cnVjdGlvbnM= 96939\nY2Nk 96940\nIEZpbGVOb3RGb3VuZEVycm9y 96941\nVGjDqm0= 96942\nKHJlc3VsdGFkbw== 96943\nIFNFUklFUw== 96944\nU3BlYWs= 96945\nX0FIQg== 96946\nQmxvY2tlZA== 96947\nLWZvbnRhd2Vzb21l 96948\nOl0p 96949\nb2JibGU= 96950\nKGxpbmtz 96951\nIENhdGFsb25pYQ== 96952\nR2VW 96953\nLkRhdGVGb3JtYXQ= 96954\nIGZsZWE= 96955\nLmVm 96956\nIHNvbGljaXR1ZA== 96957\nIERZ 96958\nY29kZWdlbg== 96959\neXRoZQ== 96960\nIGVwb2xs 96961\nX1RE 96962\nIGFmZmlybWF0aW9u 96963\nX2Zh 96964\nSVNUQQ== 96965\nIEVhdG9u 96966\nY3JlYXRlUXVlcnk= 96967\nIGxvZ2lzdGljYWw= 96968\nIFJheWNhc3RIaXQ= 96969\nIGNhdWxpZmxvd2Vy 96970\nIHVsY2Vy 96971\nLkFscGhh 96972\naW5rZQ== 96973\nWy4u 96974\nRVhBTVBMRQ== 96975\nLXdhZ2U= 96976\nIHN0YXRp 96977\nZWN0aXZl 96978\nLmdldE1pbg== 96979\nIFNVQkpFQ1Q= 96980\nIEF1ZGlvTWFuYWdlcg== 96981\nenphcmVsbGE= 96982\nIFNlbGVjdExpc3RJdGVt 96983\nICQNCg== 96984\nIG9oaW8= 96985\nIFRhaG9l 96986\nIGtXaA== 96987\ncXVlcnlTdHJpbmc= 96988\nIGRlcGFydGFtZW50bw== 96989\nPWFkbWlu 96990\nIHdvcmtzdGF0aW9u 96991\nKSsrOwo= 96992\nSGVhZGVySW5TZWN0aW9u 96993\nIFRyaXVtcGg= 96994\nQ2hhcmxvdHRl 96995\nIFNNQQ== 96996\nQ8OzbW8= 96997\nIHZlcm0= 96998\nIHRoZWFubw== 96999\nYmdjb2xvcg== 97000\nXCIiLAo= 97001\nIFJlbWluZGVy 97002\nQmlsbHk= 97003\nb3JhbFR5cGU= 97004\nZ2ViZXI= 97005\nKGNsb25l 97006\nIEt1dA== 97007\nLz4u 97008\nQXBvbGxv 97009\nIHNobA== 97010\nWkg= 97011\nVGh1bmRlcg== 97012\nIGdpZnM= 97013\nX2tlbGFz 97014\nIFJvdGhz 97015\nIH0o 97016\nIEJyb2FkY29t 97017\nIERlcHRocw== 97018\nCUlOTkVS 97019\ncGFyY2Vs 97020\nIGVqZXJjaWNpbw== 97021\nIGluZGVwZW5kZW50cw== 97022\naWxsb3c= 97023\nZXhlY3V0YWJsZQ== 97024\nRXZlbnRv 97025\nIHpvc3Q= 97026\nIEhNQUM= 97027\nW0RsbEltcG9ydA== 97028\nYWxsZXM= 97029\nX2Rlcml2YXRpdmU= 97030\nQXBpS2V5 97031\nIHN0ZXBwZXI= 97032\nPXBsdA== 97033\nZ2V0SW5kZXg= 97034\nIHZhbGV1cnM= 97035\nUG9saXRpY3M= 97036\nIElEWA== 97037\nIFVzYQ== 97038\nIExUQw== 97039\nLm1pbkxlbmd0aA== 97040\nc3Rybw== 97041\nX05D 97042\nIHN0YWduYW50 97043\nIG1vbnRhZ2U= 97044\nIGJsb3VzZQ== 97045\nZWxpZ2U= 97046\nIHR1cnF1b2lzZQ== 97047\nIFN1cGVybg== 97048\n5q2z 97049\ndmFyYQ== 97050\nTmV3SXRlbQ== 97051\nX0VYVEVOREVE 97052\nIHdvb2R3b3JraW5n 97053\nIEVwaXNjb3BhbA== 97054\nLnBhaXI= 97055\nLlVzZXJJbmZv 97056\nIGRpcmVudA== 97057\nL3RjcA== 97058\nIGZyYXVnaHQ= 97059\nU2xhdmU= 97060\nLmdldExhdGl0dWRl 97061\nIFRvb2xib3g= 97062\nIGVhcm5lcnM= 97063\nIEhPVVI= 97064\n0LDQu9Cw 97065\ncG9zYWJsZXM= 97066\nY29uZGl0aW9uYWxseQ== 97067\nX3h4 97068\nIGxhbsOn 97069\nKHJw 97070\nQ2hh 97071\nIGluY2Fybg== 97072\nLkRhbw== 97073\nLi8o 97074\n2KfZgQ== 97075\nVGQ= 97076\nQ0VG 97077\nL3JhbmQ= 97078\nLlZpcnR1YWw= 97079\nIGRiSGVscGVy 97080\nYW1pbmVz 97081\nIGx6 97082\nIHN0b3M= 97083\nIEF0a2lucw== 97084\nX0RE 97085\naXRvcmlv 97086\nIG1pbmltaXNl 97087\naGlwc3Rlcg== 97088\nKHsuLi4= 97089\nX1NSVg== 97090\nW2ZyYW1l 97091\nIFJva3U= 97092\nR1JQ 97093\nIGJhcmJlcg== 97094\nLkZlY2hh 97095\nIOuwnA== 97096\nIGdyYW51bGFyaXR5 97097\nIFNheWluZw== 97098\nX2xpa2VsaWhvb2Q= 97099\nLmJhckRvY2tDb250cm9s 97100\nIGZyb250bGluZQ== 97101\nIFdoYWxl 97102\nIHNtZWxsaW5n 97103\nIENvbnRyaWJ1dGlvbnM= 97104\naXZhbnQ= 97105\nIGNyaXBwbGluZw== 97106\ncHJlbG9hZA== 97107\nIEhlcnJlcmE= 97108\nX1dBVENI 97109\nLWV0 97110\nOmV4cHI= 97111\naW52ZXN0bWVudA== 97112\nZWRlcmF0aW9u 97113\nX21nbXQ= 97114\nIGhvb3Bz 97115\nbW9ua2V5 97116\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK 97117\naW50ZXJzZWN0 97118\nIGNyaW1zb24= 97119\nIHN1b2k= 97120\nIFtdOgo= 97121\nWE9iamVjdA== 97122\nU0ZNTA== 97123\nRVFVQUw= 97124\nKCd+ 97125\nY2VudHJvaWQ= 97126\nCXJlc3RvcmU= 97127\nIHByZW5hdGFs 97128\nIE1pc3RyZXNz 97129\nIHF4 97130\ndHBz 97131\nIHJlc3Bhd24= 97132\nIFtdKSwK 97133\nIGtvbnRyb2w= 97134\n44GC44KK44GM44Go44GG44GU44GW 97135\nTW9kdWxlTmFtZQ== 97136\nIG5ld1BhdGg= 97137\nIFBhZ2luZw== 97138\nIHJpbnM= 97139\nX21ha2Vy 97140\nXGJyaWVm 97141\nIGJpc2hlcg== 97142\nCVJlYWQ= 97143\nIGppaGFkaXN0 97144\nLnBlcnNpc3RlbnQ= 97145\nIFJvYm90cw== 97146\nL2dycGM= 97147\nIEpvdQ== 97148\nw6RyZW4= 97149\n77yM5Zyo 97150\nLXB0 97151\nIHpkYXJtYQ== 97152\nX05N 97153\nIENvbm5lY3Rpdml0eQ== 97154\nKGJj 97155\nIEZsb3JpYW4= 97156\nIFNvY2lvbG9neQ== 97157\nX3dv 97158\nQW5kU2VydmU= 97159\nXygpOwo= 97160\nIEZMVA== 97161\nX0RFUg== 97162\nIENvbm5pZQ== 97163\nIEJyb2FkY2FzdFJlY2VpdmVy 97164\neyg= 97165\nIGNvbW1lbnRlcg== 97166\nIGRlbW9jcmF0 97167\nIGFtcGxpZnk= 97168\nLS0tLS0tLS0tLQ0K 97169\nIEhNUw== 97170\nIHRyYWlsZWQ= 97171\nIFNvZGE= 97172\nLXRlc3RlZA== 97173\ndWxpc3Q= 97174\nKW5ldw== 97175\nX1RocmVhZA== 97176\nVG9kZA== 97177\nIGRlYmlhbg== 97178\nVms= 97179\nIHByZXNlbnRh 97180\nIGNvbWZvcnRz 97181\nIFdhc2hlcg== 97182\nIGdhcmc= 97183\nIEh1Y2thYmVl 97184\nINGB0LDQvA== 97185\nICEi 97186\nQWRhcHRlck1hbmFnZXI= 97187\nIEVh 97188\nIEFzc29jaWF0aW9ucw== 97189\nCQkJCQkKCQkJCQkK 97190\nLmdldFdyaXRhYmxlRGF0YWJhc2U= 97191\nIG51Y2xlaQ== 97192\nw6lnb3JpZQ== 97193\nCSAgICAgICAgICAgICAgICAg 97194\nQkFC 97195\nIHVwa2VlcA== 97196\nIFR1cA== 97197\nLndpdGhPcGFjaXR5 97198\nbHlh 97199\nIGx1eGU= 97200\ndXBybw== 97201\nLWVuZw== 97202\nIHJlbGHDp8Ojbw== 97203\nIGtleVByZXNzZWQ= 97204\nIGh5YnJpZHM= 97205\nbGZ3 97206\nT3BlcmF0aW9uQ29udHJhY3Q= 97207\nIG5hbWVMYWJlbA== 97208\nIEhvcnQ= 97209\nX2dydXBv 97210\nIGJhbmRh 97211\nSXg= 97212\nSGVhbHRoeQ== 97213\nLmdldEVuZA== 97214\nZnJhdQ== 97215\nKFNjZW5l 97216\nKENvbGxlY3Rpb25z 97217\nIFNraXBwaW5n 97218\ndWJv 97219\nIGbDvG4= 97220\nIj4tLT4K 97221\nIGRyb2l0cw== 97222\nIGhvbW9zZXh1YWxz 97223\nIGFiZHVjdGlvbg== 97224\nCXdpZGdldA== 97225\nJGhlYWRlcnM= 97226\nIERBUg== 97227\nIGZsYQ== 97228\ndGhyZWF0 97229\nIGxvdWlz 97230\nLkdldFByb3BlcnR5 97231\nIkp1c3Q= 97232\nKGZyYW1lcw== 97233\ncnlv 97234\ncHJvZmVzc2lvbg== 97235\nfGk= 97236\n7ZW07ISc 97237\nKHN2 97238\nIHVucmVjb2duaXplZA== 97239\nSW9uaWM= 97240\nRmFzaGlvbg== 97241\nU2NyZWVuU3RhdGU= 97242\nIEluY29taW5n 97243\nTm90Tmls 97244\nIHN5bmNpbmc= 97245\nZW1pZQ== 97246\nIHRoZXJtbw== 97247\nX3Byb2Nz 97248\nIGluY29uc2lzdGVuY3k= 97249\ncmVsaWdpb3Vz 97250\nLm1q 97251\nIHBlcnNvbm4= 97252\nIG1vbWVudG9z 97253\nb3JhcmlseQ== 97254\nIOaK 97255\nX25ldXJvbnM= 97256\nSWxsdXN0cg== 97257\naW1vdG8= 97258\naWxpaw== 97259\nIFdvag== 97260\nVHJhZGluZw== 97261\nIGFwcGFyZQ== 97262\nIGVudHJlcHJpc2Vz 97263\nYWNoYXQ= 97264\nIMKs 97265\nIG5laWdo 97266\nQlVUVE9ORE9XTg== 97267\nIE1haGVy 97268\nYWdoYW4= 97269\nLWhhc2g= 97270\nImY= 97271\nIGNsaWVudGVsZQ== 97272\nLmFkZEJ1dHRvbg== 97273\nCVNQ 97274\nUWk= 97275\nIGdyYXRlZA== 97276\nUE9TSVRF 97277\nOj4= 97278\nIEhvd2VsbA== 97279\nIENvbXBhcmF0aXZl 97280\nIElTQw== 97281\nwq1p 97282\nT2NlYW4= 97283\nRGF2aXM= 97284\nIEZpbG1l 97285\nV2lucw== 97286\nIEpJVA== 97287\nb2NjZXI= 97288\nIENvcm0= 97289\nRU5DSE1BUks= 97290\ncmNoaXZl 97291\naWNhw6fDo28= 97292\nIG1hdGE= 97293\nIGNoaWxkYmlydGg= 97294\nIE9wdGlvbmFsbHk= 97295\nRW5z 97296\nIHhodHRw 97297\nIGVsdWNpZA== 97298\nX09zY0luaXRTdHJ1Y3Q= 97299\nKSkpOgo= 97300\nIGludHVpdA== 97301\nIERvbmF0ZQ== 97302\nIGNvcnJlbGF0ZXM= 97303\nPkRlbGV0ZQ== 97304\nIGVxdWlwZQ== 97305\nIGJvY2E= 97306\nIGluZmxhdGFibGU= 97307\nZXJhaA== 97308\nIERhdGVUaW1lS2luZA== 97309\nIGNhbHZlcw== 97310\nXExpYg== 97311\nIGVtbHJ0 97312\nIFRyaWxvZ3k= 97313\nIFBhbmM= 97314\nIER1aXM= 97315\nIHBlbMOtY3VsYQ== 97316\nV0FSRFM= 97317\nX0RFVEVDVA== 97318\nLXNlY3Rpb25hbA== 97319\nZGhjcA== 97320\nRm9yUm93 97321\nLWRlc3RydWN0 97322\nIFByZXNlbnRlcg== 97323\nL3NsaWNr 97324\nLG9u 97325\nIENpdGFkZWw= 97326\nbG9nZ2VkaW4= 97327\nX3N1YnR5cGU= 97328\nIHNpZ3Vl 97329\nIGN1cmluZw== 97330\nIEZpcmV3YWxs 97331\nIGZsdW9yZXNjZW5jZQ== 97332\nIEl0YWxpYW5z 97333\n0LjRgtGB0Y8= 97334\nLmdldFN0eWxl 97335\nSW5TZWNvbmRz 97336\namll 97337\nLVNtaXRo 97338\nIHhsaW5r 97339\nIHN1Ym1pc3NpdmU= 97340\n0L7QvdGC 97341\nYXJib25hdGU= 97342\nIEZhdWw= 97343\nX2dvYWxz 97344\nIENvbW1pc3Npb25lcnM= 97345\nY2hhcnRJbnN0YW5jZQ== 97346\nX1BPU1RGSUVMRFM= 97347\nIG1lZGlhbA== 97348\nIG1hbm9z 97349\nIGRlbHQ= 97350\nc3Zt 97351\nLkFwaXM= 97352\nZXBoeQ== 97353\nIGFzeW1wdA== 97354\nIGFwcERlbGVnYXRl 97355\nIGltcHJvYmFibGU= 97356\nY2th 97357\nc2ltZA== 97358\nL0Vycm9y 97359\nLuKAkw== 97360\nIFBUUw== 97361\nZGVlcg== 97362\nIHNpbmE= 97363\nbWFnbml0dWRl 97364\nSURBREU= 97365\nJ119Jw== 97366\nIG1heW9yZXM= 97367\nCWNvbW1lbnQ= 97368\nL2NvbnNvbGU= 97369\nIkA= 97370\ndm9sdA== 97371\nLnNlbGw= 97372\nIE1hY3k= 97373\nIG1lbG9k 97374\nIGltw6FnZW5lcw== 97375\nX2NoZw== 97376\nIGlub3V0 97377\naWRlbnRl 97378\nKScpLAo= 97379\nZG5p 97380\nLmJsb2I= 97381\nIHR5cG9ncmFwaHk= 97382\nIGVlcmll 97383\nX09JRA== 97384\ncGVzYW4= 97385\nYWphbg== 97386\nIGNob3BwaW5n 97387\nIGJsdWZm 97388\nYWRm 97389\nX2Jhc2Vz 97390\nLkZvcm1hdHRlcg== 97391\nIFwl 97392\nIFBhZ2VJbmZv 97393\nQ2Fycmllcg== 97394\nIENhbGlicmF0aW9u 97395\nY29tbw== 97396\nLWJvZGllZA== 97397\nIGZpbmFuY2llcg== 97398\nIElOQQ== 97399\nLkVSUg== 97400\nIGhvb2RpZQ== 97401\nIFNhbml0eQ== 97402\nZ3VhcmRlZA== 97403\nLm9wZW5kYXlsaWdodA== 97404\nSVNNQVRDSA== 97405\nSGlnaGxpZ2h0cw== 97406\nw7xuaw== 97407\nYW5pZW0= 97408\nYW5nZXJlZA== 97409\nYXNzaWdubWVudHM= 97410\nIHJlZ2lzdHJhZG8= 97411\nIFVQUEVS 97412\nYW1waWxrYW4= 97413\nYXNoaXJl 97414\nIE5pa29sYQ== 97415\nIENGTA== 97416\nIEhEQw== 97417\nIHBvaWRz 97418\nIElQcw== 97419\nIHByZXZlbnRhdGl2ZQ== 97420\naXBzb2lk 97421\naWZpeA== 97422\nLmNhbWVs 97423\nLmdh 97424\nVm9sdW1lcw== 97425\nLXN0ZQ== 97426\nWWFob28= 97427\nX3NpYmxpbmc= 97428\nSGlnaGVzdA== 97429\nb3B0Z3JvdXA= 97430\nIGt2aW5uYQ== 97431\n4oCd44CCCgo= 97432\nIEFwcGxpYW5jZXM= 97433\nICI+PA== 97434\nJykiKQo= 97435\naHR0 97436\nIElkZW50aWZpZWQ= 97437\nIHBlbmNpbHM= 97438\nIG1lbWJlcklk 97439\nIGFwcGVuZFN0cmluZw== 97440\nLmxvYWREYXRh 97441\nIG1vY2tNdmM= 97442\nIGp1Yg== 97443\nIFNsdXQ= 97444\nIFRhaXBlaQ== 97445\nc3RhdHQ= 97446\nUG9saXQ= 97447\nIHBhcnRhZ2Vy 97448\nRGlkQ2hhbmdl 97449\nSW5jcmVhc2Vz 97450\nKX0u 97451\nIEJhYmE= 97452\nX0NMSVA= 97453\nW3VuaXQ= 97454\nINC60LvRjtGH 97455\nIGFsY3VuaQ== 97456\nIExvbGE= 97457\nIGNsaW5naW5n 97458\nQFBvc3RNYXBwaW5n 97459\nKGNvbmNhdA== 97460\nIHNzaWQ= 97461\nIEZhdWM= 97462\nb2tpdA== 97463\nIFJlY29yZGVk 97464\nw6FsZXo= 97465\nKCQoJzw= 97466\nLmFzc2VydElzTm90 97467\nIGthbGk= 97468\nVm9sdA== 97469\nIHdhcm1seQ== 97470\nIHNjYXJlcw== 97471\nZ2V0dGk= 97472\nZsO8aHJ0 97473\nX2RvZXM= 97474\nLkVNQUlM 97475\naW1hdGlvbnM= 97476\nIHNwcmluZ2ZveA== 97477\nIERlY29t 97478\nYXJjeQ== 97479\nIGdsaXRjaGVz 97480\nIE1vZmY= 97481\nIFZvbGw= 97482\nLmJldHdlZW4= 97483\nIGNvb3JkZW4= 97484\nIFBhcnRpY3VsYXJseQ== 97485\nR0JQ 97486\nIHNlbWJsZQ== 97487\nRWFzdGVybg== 97488\nX01TQg== 97489\nXSl7DQo= 97490\nbW9yZ2Fu 97491\nIEVWQUw= 97492\nZGVyZQ== 97493\nSE9VU0U= 97494\nbW9pcmU= 97495\naXN0aXF1ZQ== 97496\nX2xzdG0= 97497\nLWNvbW1pdA== 97498\neXN0ZXJpb3Vz 97499\nIHR3aW5r 97500\nLXRodW1ibmFpbHM= 97501\nZW7DrQ== 97502\nOicnLA== 97503\nIGJsYWNrb3V0 97504\nIEZsb29ycw== 97505\nIHNvZmFz 97506\nIG91aQ== 97507\nbGVzaG9vdA== 97508\nIFJhcQ== 97509\nLWFicw== 97510\nIGtyYQ== 97511\nTWluaW5n 97512\nc2hhZnQ= 97513\nLnNldENvbHVtbnM= 97514\nQ2xheno= 97515\nUFJFVFRZ 97516\nLnBsYXlsaXN0 97517\n6Zai 97518\nLVNhaGFyYW4= 97519\nTUlORw== 97520\nCWJs 97521\n6K6u 97522\namY= 97523\nRE9DS0VS 97524\naG9wZWZ1bGx5 97525\nKGlnbm9yZQ== 97526\nIFVzZXJzQ29udHJvbGxlcg== 97527\nIE1pdGFyYmVpdGVy 97528\nIExFUw== 97529\nSGFtaWx0b24= 97530\nLW1ldGFkYXRh 97531\nIEtL 97532\naWt0aWc= 97533\nIHdvbGx0ZQ== 97534\nZWdyYXRvcg== 97535\nXWJvb2w= 97536\nLGN1cnJlbnQ= 97537\nIHZhbHVlVHlwZQ== 97538\nIGV4Y2F2YXRpb24= 97539\nb2xhbmQ= 97540\nIHZlcnY= 97541\nL2ZpbGVwYXRo 97542\nQXV0aFByb3ZpZGVy 97543\nIHByb2NyYXN0 97544\nCVVMT05H 97545\nX01FTUJFUlM= 97546\nIHVwbGlmdA== 97547\nIEF1dG9ub21vdXM= 97548\nIGFydHdvcmtz 97549\nIE91dHJlYWNo 97550\nIHBvcmU= 97551\nSG9tZXBhZ2U= 97552\nRGlhbG9nVGl0bGU= 97553\nIEdlbmVyYXRpbmc= 97554\nUEFSU0U= 97555\nIHNlbWFuYXM= 97556\nIGh1bWFubw== 97557\nSlNHbG9iYWxTY29wZQ== 97558\nIHZvbHRl 97559\nIGJlbGxh 97560\nKGlzaW5zdGFuY2U= 97561\nIHBsYw== 97562\nXENhdGFsb2c= 97563\nIGVzdGVlbWVk 97564\n6Zu3 97565\nKHN1ZmZpeA== 97566\nIHN3ZWVwcw== 97567\nCU9SREVS 97568\nIGRvaXZlbnQ= 97569\nIFN3YXJt 97570\nIENvbXBpbGVk 97571\nZ2V0UGFnZQ== 97572\nQURS 97573\nLlJpY2hUZXh0Qm94 97574\nIE5hbWluZw== 97575\nYWdnZWQ= 97576\nIEdBTkc= 97577\ncmFzaW5n 97578\nb2RlbGVk 97579\nIGdhbGE= 97580\nIEpTTmFtZQ== 97581\nZGRm 97582\nIGlsbHVzdA== 97583\nIExhbnNpbmc= 97584\nW3BvcnQ= 97585\nLWRlYXRo 97586\nIGRpbmhlaXJv 97587\nIEVpZ2h0aA== 97588\nIGJpYW4= 97589\nc3TDpQ== 97590\nIHZlcnNpw7Nu 97591\nIExpbmVhckdyYWRpZW50 97592\nIEhhcmRpbmc= 97593\nLiop 97594\nZWN6eQ== 97595\nJGhlYWRlcg== 97596\nIHbDpXI= 97597\nVW5jaGVja2Vk 97598\nIGtvamU= 97599\nIFBhbGFkaW4= 97600\nKCkpKSw= 97601\nR2l2aW5n 97602\nKCl9KQo= 97603\nIGRpcHM= 97604\nRnJpZW5kbHk= 97605\nIHBvcnRyYXlz 97606\nIGhlbGl1bQ== 97607\nIGluc3VyZ2VuY3k= 97608\nX2V4cGlyeQ== 97609\nIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5n 97610\nIGFhbnRhbA== 97611\nc2xvcGU= 97612\nbWFzdA== 97613\nLmdldEludGVnZXI= 97614\nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw== 97615\nX1BJUEVMSU5F 97616\nIGRlbnNlbHk= 97617\nIG11dGF0aW5n 97618\nbWlkaQ== 97619\nIFNlaXQ= 97620\nYXluZQ== 97621\nTk9XTEVE 97622\nIERlc21vbmQ= 97623\nIEZOYW1l 97624\nIE5haXJvYmk= 97625\nXENvbnRleHQ= 97626\nIGNhbGN1bGFy 97627\nLWRlbg== 97628\nIGNvdHQ= 97629\nXSk6DQo= 97630\nIFJlY29tbWVuZGF0aW9u 97631\nIFJvbGV4 97632\nIHZhbGlkYXRpb25SZXN1bHQ= 97633\nLnBhdA== 97634\nIG7DoHk= 97635\nIFJlc3RDbGllbnQ= 97636\nIEdQSQ== 97637\nIEFzaGV2aWxsZQ== 97638\nIE9TUA== 97639\nIFBFUk1JU1NJT04= 97640\n0JTQsNGC0LA= 97641\nL25vdGlmaWNhdGlvbg== 97642\nS25pZ2h0 97643\nX1dvcmQ= 97644\nIEJlbmRlcg== 97645\ncmFua2luZw== 97646\nIHBhcnRpZGE= 97647\nX3Jlc2VydmF0aW9u 97648\nzIA= 97649\nIG1OYW1l 97650\nIGdldGNo 97651\nIGJvcnI= 97652\nIGRpbGlnZW50 97653\nRGlzY3Vzcw== 97654\n5q2j5Zyo 97655\nYXBlYWtl 97656\naW9uZWQ= 97657\nLU5hemk= 97658\nLmN1bQ== 97659\nIEtyb24= 97660\nPSQoJyM= 97661\nL3NpbmdsZQ== 97662\nIGVyb3Rpc2No 97663\nIFZpYg== 97664\nIHJhdGlmaWVk 97665\nIGNvbmNlcnRlZA== 97666\nIFJFR0FSRA== 97667\nIGRvYnI= 97668\nLkRyaXZlck1hbmFnZXI= 97669\nJ3I= 97670\nUG9ydGFibGU= 97671\nCXN1aXRl 97672\nIHJlbGFjaW9uZXM= 97673\nIERvcA== 97674\nZW1wbG9p 97675\nRE9C 97676\nIGNydW1icw== 97677\nIHhscw== 97678\nX0FwcGxpY2F0aW9u 97679\nKCc6Jyw= 97680\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo= 97681\nbXNl 97682\nIGJlcms= 97683\nIFJldHVyblZhbHVl 97684\nIEJlbGx5 97685\nIGNhbWFy 97686\nIFBlZWs= 97687\nZWxzaW5n 97688\nIG5vdGlmaWVz 97689\nIFRyaXN0YW4= 97690\nIEdBUg== 97691\nZW1tZQ== 97692\nIEVsZXZhdGVk 97693\nX0NTVg== 97694\nKGNoYWxr 97695\nIHR3ZW50aWVz 97696\nIFNlYXJjaFJlc3VsdA== 97697\nPXNlYXJjaA== 97698\nIE1peGluZw== 97699\nw710 97700\nIHJlY3J1aXRlcg== 97701\nIElERU9HUkFQSA== 97702\nIEFnbw== 97703\nKE9wZXJhdGlvbg== 97704\nJHZhbHVlcw== 97705\nIHdvcmxkbHk= 97706\nIFJvc2VuYmVyZw== 97707\nIENvbmZpZ3VyZVNlcnZpY2Vz 97708\nPio8Lw== 97709\nS0FOSkk= 97710\nIGNodWNrbGVk 97711\nIHN0cmlmZQ== 97712\nIEJvbWJheQ== 97713\nIEJBQ0tHUk9VTkQ= 97714\nZXRhdA== 97715\nZW51bWVyYXRvcg== 97716\nIHPDu3I= 97717\nIOOBrg== 97718\nX3BlZGlkbw== 97719\nL0Rr 97720\nIGplYW4= 97721\nX0NvbHVtbg== 97722\nIGhlYXRtYXA= 97723\nLlBlbmRpbmc= 97724\nIHVuc3VjY2Vzc2Z1bGx5 97725\nCWVw 97726\nIHNpbmZ1bA== 97727\nIEFudG9ueQ== 97728\nX0ZPQ1VT 97729\nVGV4dExhYmVs 97730\nX3JlYWN0aW9u 97731\nIElEaXJlY3Q= 97732\nIGNhcm5pdg== 97733\nV29ya3NoZWV0 97734\nIHN1ZWRl 97735\nCVJUQ1Q= 97736\nIHNldGJhY2tz 97737\nLnVuYmluZA== 97738\nIHNpw6g= 97739\nTGlxdWlk 97740\nX1JFTkRFUkVS 97741\nTWF0ZQ== 97742\nIE1pbGxlbm5pYWxz 97743\nIGVwb3h5 97744\naXp6aW5lc3M= 97745\nIGJyYXppbA== 97746\n0L7RgdGC0Yw= 97747\nJnZpZXc= 97748\nL2dwaW8= 97749\nSmFtaWU= 97750\nLkdyYXZpdHk= 97751\nPSIuJF8= 97752\nIFZBTg== 97753\nIElEUg== 97754\nYXBwZWFyYW5jZQ== 97755\nLlNlbGVuaXVt 97756\nTGVhcA== 97757\nLlJlbGF0aXZlTGF5b3V0 97758\nU2lnbmFscw== 97759\nQWNjZWxlcmF0aW9u 97760\nCUhBTkRMRQ== 97761\nL09wZW4= 97762\nIGdldExvZ2dlcg== 97763\nU3Bp 97764\nLXdyaXRpbmc= 97765\nINCy0YvQtw== 97766\nLXdvcnRoeQ== 97767\nIHdjcw== 97768\nIFFUaW1lcg== 97769\nIFBvbHltZXI= 97770\nIHZhbnQ= 97771\nCURlbGV0ZQ== 97772\naXR0ZQ== 97773\nV2hpbHN0 97774\nIGFsZ3Vt 97775\nIHNoaWVsZGluZw== 97776\nIGttcw== 97777\nCSAgICAJCQk= 97778\nTWV0ZW9y 97779\nIGFnZ3JlZ2F0b3I= 97780\nIFNpbmQ= 97781\nSG9zdEV4Y2VwdGlvbg== 97782\nPScnLAo= 97783\nIEpTQnJhY2tldEFjY2Vzcw== 97784\nT05P 97785\nX0J1aWxk 97786\nIHN0cmlwcGVy 97787\nIExK 97788\nPENvbXBvbmVudA== 97789\nL3NvdXJjZXM= 97790\nIGVyZ29ub21pYw== 97791\nIEFjY3JlZA== 97792\ndW5jZQ== 97793\nb25pcw== 97794\nemVpZ3Q= 97795\nIFNrYXRl 97796\nIFJlY3RUcmFuc2Zvcm0= 97797\nSW5jb21wbGV0ZQ== 97798\nIGluZ2VuaW91cw== 97799\nIGNvaXNh 97800\nIGNpdHlOYW1l 97801\naGFiaXQ= 97802\nX1RW 97803\nIEFOU1c= 97804\nLi4uIj4K 97805\nIHNub3Jr 97806\nX29wYWNpdHk= 97807\nIGluaXRXaXRoTmliTmFtZQ== 97808\naWFkbw== 97809\nQUFD 97810\nIF0pLg== 97811\nO3o= 97812\nX3BhcmFncmFwaA== 97813\nIG5vc2Vz 97814\nc3RhbmRz 97815\naWZy 97816\nX21F 97817\nSXJhcQ== 97818\nLlByZWRpY2F0ZQ== 97819\nZW5haXJl 97820\nXV1dOwo= 97821\nIHVuaWRhZA== 97822\nIHJldGlyZWVz 97823\nX2hlbGxv 97824\nIG1vZGVsZQ== 97825\nIFVJVGFibGVWaWV3Q29udHJvbGxlcg== 97826\nZndyaXRl 97827\nX251bWVybw== 97828\nX3Zpc2l0ZWQ= 97829\nIHJlY2ViZQ== 97830\nKE5vdGlmaWNhdGlvbg== 97831\nRmFudGFzdGlj 97832\nX3N1Ym1lbnU= 97833\nIFBFTQ== 97834\nIEN1cGVydGlubw== 97835\nYXBwcm94aW1hdGVseQ== 97836\nY2xhc3NlZA== 97837\nLlJlYWRTdHJpbmc= 97838\nIGRvbWljaWxl 97839\nX1BX 97840\nIGJhbGxwYXJr 97841\nIEthbGU= 97842\nY29udHJh 97843\nX2Zhdm9yaXRl 97844\nL29m 97845\nUXVpdGU= 97846\nIE9UQQ== 97847\nIGFjY2VsZXJvbWV0ZXI= 97848\nZGlkbg== 97849\nfF4= 97850\nIFJvaGluZ3lh 97851\naXZpY3Jt 97852\nYW5uYWJpbg== 97853\n0L7QsdGL0YLQuA== 97854\nb3JhZG8= 97855\nJykr 97856\nSGF1bnRlZA== 97857\nLElE 97858\nKFVJQWxlcnRBY3Rpb24= 97859\ndXJ2 97860\nX2JlbA== 97861\nIE1leGljYW5z 97862\nL3Rlcm1z 97863\nIFBhaW50ZXI= 97864\nSW5wdXRMYWJlbA== 97865\nIFZpbmNp 97866\nIFJvc2ll 97867\nXHVj 97868\nPE1lbnU= 97869\nIGNvb2xhbnQ= 97870\nKGN1cnJlbnRVc2Vy 97871\nX2R1YWw= 97872\nKSJ9LAo= 97873\nJnA= 97874\nIGNvbnZlcmdlZA== 97875\nIHJlc3RyYWlu 97876\nIFl1Z29zbGF2aWE= 97877\nPXRhcmdldA== 97878\nIGltcHVscw== 97879\nZHNh 97880\nU2VhcmNoVHJlZQ== 97881\nIGhib3g= 97882\nIEltcHJlc3M= 97883\nwqfDgw== 97884\nZ2V0RnVsbFllYXI= 97885\nKGRh 97886\nIFlZUw== 97887\nLmFsaWdubWVudA== 97888\nLkdldFRleHQ= 97889\nLnRva2VuaXpl 97890\nIE9seW1wdXM= 97891\nIG11cmt5 97892\nb3Jlc3RhdGlvbg== 97893\nIGRpc3NhdGlzZmFjdGlvbg== 97894\nCVRBcnJheQ== 97895\nX2tzZXM= 97896\nLkFkZFNpbmdsZXRvbg== 97897\nIFN0YXJ0VGltZQ== 97898\nIGZhbmF0aWM= 97899\nICAgICAgICAgICAgICAgICAgICAJ 97900\nIGVudGl0eVR5cGU= 97901\nLm92ZXJyaWRl 97902\nIC0tLS0tLS0tLS0tLS0= 97903\nIERhdGFncmFt 97904\nZm91dA== 97905\nKHdpdGhJZA== 97906\nICNfXw== 97907\nn+iDvQ== 97908\nZWt5bGw= 97909\nLmZyaWVuZHM= 97910\nYW1lbGVvbg== 97911\nIHphY2g= 97912\nLnNpbXBsZUJ1dHRvbg== 97913\ncmV0b3Jubw== 97914\nIGtvbms= 97915\nL3NtYWxs 97916\nIFF1aWNrbHk= 97917\ndW5yZWFk 97918\nRG9uYXRl 97919\nRGV0YWlsVmlldw== 97920\nIGR1YQ== 97921\nIHBlbmV0cmF0ZWQ= 97922\nT01VWA== 97923\nIG5pcg== 97924\nX3BkYXRh 97925\nIl0sWyI= 97926\nIGxvd2Vz 97927\nIGRvcGluZw== 97928\nIGFzeW1tZXRyaWM= 97929\nIG5lZWRsZXNz 97930\nb3VyY2Vt 97931\nIHVwcm8= 97932\nIEd1enpsZQ== 97933\nYWZi 97934\nIHNleHRyZWZmZW4= 97935\nLWNvbGxhcg== 97936\nIGNvbG9zc2Fs 97937\nTW9ua2V5 97938\nbmlzaA== 97939\nIGhhbmRsZU1lc3NhZ2U= 97940\nSW5jcmVhc2Vk 97941\nKmR4 97942\nIENoYXR0YW5vb2dh 97943\nZm9yZw== 97944\nIE9yZGVu 97945\nIHNocmk= 97946\nIFZhbmQ= 97947\nICJAIg== 97948\nSW1hZ2VTaGFycA== 97949\nIFdpbGRjYXRz 97950\ncG9uaWJsZQ== 97951\nLnNjZW5lcw== 97952\nIHBhaW50ZXJz 97953\nIFBmaXplcg== 97954\nIFphaA== 97955\nVG9Mb2NhbA== 97956\nIEZsYW0= 97957\nIMOpdGFpZW50 97958\nKSle 97959\nIFNhbmRib3g= 97960\nIFRSQURF 97961\nIGNocm9taXVt 97962\nIGFjY2xhaW0= 97963\nIHBhY21hbg== 97964\nwrR0 97965\nKXJlYWRlcg== 97966\nTWFyaQ== 97967\nLkRpc3BhdGNoZXI= 97968\nLkFETUlO 97969\nIFJlbWVk 97970\nU3dlZGVu 97971\nIG92ZXJsYXlz 97972\nLmVy 97973\nIHBhbmc= 97974\nIGNsZWFubHk= 97975\nYXZlbnBvcnQ= 97976\nVG95b3Rh 97977\ncGF0Y2hlcw== 97978\nIHZ0eA== 97979\nIEVpcw== 97980\nY2xhZG8= 97981\nIFJpdGNo 97982\nUk9MUw== 97983\nIGhhZGU= 97984\nIGNvbnNwaWN1b3Vz 97985\nIGRvY2tz 97986\nKGpx 97987\nIFByZW1pZXJzaGlw 97988\nIEJleg== 97989\nIOKElg== 97990\nINGD0YHQuw== 97991\nX3RvdGFscw== 97992\nIHByb3Zh 97993\nIEN1ZQ== 97994\nIHNhw7pkZQ== 97995\nIEdhbWVDb250cm9sbGVy 97996\nSU1JWkU= 97997\nLHBvcnQ= 97998\n44CCKA== 97999\nLkNkZWNs 98000\nSW5zdGFudGlhdGlvbkV4Y2VwdGlvbg== 98001\nIGNvbGxhZ2U= 98002\nIElPQw== 98003\nIGJhaXM= 98004\nIG9uRmluaXNo 98005\nLXN0YXJz 98006\nc2V0U2l6ZQ== 98007\nIG1vZ3Vs 98008\nIGRpc2lsbHVzaW9u 98009\nIGNoZXZ5 98010\nKFNjaGVkdWxlcnM= 98011\nKElS 98012\nX2xvY3M= 98013\nIGNhbm5vbnM= 98014\nIGNhbmNlbGxpbmc= 98015\nL2J1cw== 98016\nIGJ1Zmlv 98017\nIFlvdXJz 98018\nIFBpa2FjaHU= 98019\nIHRlcm1l 98020\ncsOl 98021\nZmFocmVu 98022\nIG93bmVySWQ= 98023\nIG9ibGlnYXRvcnk= 98024\nIGN1bHA= 98025\nIGFjaWRpdHk= 98026\nLW11bHQ= 98027\nIEJhbWJvbw== 98028\nICciPg== 98029\nX2dz 98030\nIGNvbXBpbA== 98031\nbmFyZA== 98032\nLWV4Yw== 98033\nIHJoeW1l 98034\nIGJ1dHRv 98035\nc2F5cw== 98036\nYW50YXN5 98037\n67g= 98038\nIGNpdHTDoA== 98039\nIGNoZWc= 98040\nVGltZVN0cmluZw== 98041\nIHBvc2l0aXZpdHk= 98042\nIERhYmVp 98043\nIHdhbmc= 98044\nIGVzY3Jl 98045\nImM= 98046\nCXZpZGVv 98047\nIFJhbmtlZA== 98048\nLnN0cmluZ3M= 98049\nPj4+KA== 98050\nINC40L3RgtC10YA= 98051\nIHJlc3Rh 98052\nWzosOg== 98053\nIHJlbmRyZQ== 98054\nIGRlc2Vy 98055\nSm9z 98056\nIGRpc3J1cHRpb25z 98057\nINC+0L/QtdGA 98058\nc2FtcGxpbmc= 98059\nc3VwcHJlc3M= 98060\nIGNvbnRhaW5lclZpZXc= 98061\nIFNlYW1sZXNz 98062\nIGFpcnk= 98063\nIG9ubG9hZA== 98064\nLldpbmRvd01hbmFnZXI= 98065\nIFBMQQ== 98066\nYnJhY28= 98067\nLnNldFBvc2l0aXZlQnV0dG9u 98068\nIHBkdQ== 98069\nIGdzaQ== 98070\nIENsaQ== 98071\nX2dyYWRpZW50cw== 98072\n0Y/QtA== 98073\nIFdoaXNwZXI= 98074\nY3N0ZGludA== 98075\nIGzDpG5n 98076\nIGZvcm11bGF0aW9ucw== 98077\nw6lub20= 98078\nb3VybmVtb3V0aA== 98079\nWyRf 98080\nIG9yZGluYXJpbHk= 98081\nLnNldFVzZXJuYW1l 98082\nIGZhY3VsdGllcw== 98083\nTUlUVEVE 98084\nL3ZhbHVlcw== 98085\nIHdlaXI= 98086\nIEFwdA== 98087\nTVo= 98088\nCWNm 98089\ndWNrZW4= 98090\nCQkJCQkJCQkJCQkJCQkJCQkJCQk= 98091\nZGVmZW5zZQ== 98092\nW2lWYXI= 98093\nIEJ1c2luZXNzRXhjZXB0aW9u 98094\nU2VsZWN0b3Jz 98095\nKGNvb3JkaW5hdGVz 98096\nIFJlc2V0cw== 98097\nIERyaW5rcw== 98098\nb2xlYW5z 98099\nKHN0eXB5 98100\nX0lPQw== 98101\nLnh4eA== 98102\nIFNsYXRlcg== 98103\nIEJlbGl6ZQ== 98104\nIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio= 98105\nYWRkaW4= 98106\nX2VwaXNvZGVz 98107\nIGlzY2hlbQ== 98108\nbGVnYWxBcmd1bWVudEV4Y2VwdGlvbg== 98109\nRGFubnk= 98110\nIHBhcmVk 98111\nLmNvZGVoYXVz 98112\nIEFzc3k= 98113\nCVJlY3Q= 98114\n4p4= 98115\nLmxpc3Rh 98116\nINCy0LDRiA== 98117\nIHZldHM= 98118\nSFdORA== 98119\naXNvbmVy 98120\nIHhv 98121\nIG9yYWxseQ== 98122\nIFN0bXQ= 98123\nLnJubg== 98124\nIERQSQ== 98125\nIFN0cmlrZXM= 98126\nLnNldFZpZXdwb3J0Vmlldw== 98127\nIOiHquWKqOeUn+aIkA== 98128\nWUVMTE9X 98129\nR0xlbnVt 98130\ncGFydG5lcnM= 98131\nIEltcGxpY2l0 98132\nIHRha28= 98133\n4oCZZWxsZQ== 98134\nIGVybcO2Zw== 98135\ndG90YWxDb3VudA== 98136\nR2ls 98137\nCXdvcms= 98138\nIHByYXRpYw== 98139\naW5hdGk= 98140\nYWJpZXM= 98141\nIFNraW5uZXI= 98142\nIHNwaXJpdGVk 98143\nIHBhbmNyZWF0aWM= 98144\nIGhkZg== 98145\nJ2Vt 98146\nIHBzeWNob3Npcw== 98147\nb2xpY2l0 98148\nICJ7Ig== 98149\nX2F0dWFs 98150\nIMOpbGVjdA== 98151\nVEVBTQ== 98152\nIGRhaw== 98153\nIFNXQVQ= 98154\nLkZyYWdtZW50TWFuYWdlcg== 98155\nIHByb3Zpc2lvbmluZw== 98156\nbGlmZXRpbWU= 98157\nX0VYVEVOU0lPTlM= 98158\nIENBU0NBREU= 98159\nICFb 98160\nKEtQ 98161\nIHZlbQ== 98162\nIEludGVycmFjaWFs 98163\nJ119LAo= 98164\nc3BhY2Vy 98165\nX2t2 98166\nV2FyZWhvdXNl 98167\nUkRE 98168\nX2ZzbQ== 98169\nLlN0cmV0Y2hJbWFnZQ== 98170\nLFllcw== 98171\nIFJlZnVnZWU= 98172\nIEJyaW5naW5n 98173\nIHbDoWxpZG8= 98174\nLmludGVyc2VjdGlvbg== 98175\nIHNwb29reQ== 98176\nX3BvcnRhbA== 98177\nIG1vdGg= 98178\nIFpvZGlhYw== 98179\nIFNPQ0lBTA== 98180\nTWltZVR5cGU= 98181\nJ119fTwv 98182\nIHJlc2l6YWJsZQ== 98183\n5Lqb 98184\nKHBoYXNl 98185\nKG1hcHBlZEJ5 98186\nIG11bmRpYWw= 98187\nIGNvbnZv 98188\nL2xlZnQ= 98189\nL2RvY3VtZW50cw== 98190\nd2FzaGluZw== 98191\nIEFtw6lyaWNh 98192\nX3F1b3Rh 98193\nLnBvc3Rlcg== 98194\nJ10iKTsK 98195\nIHN0ZWxsdA== 98196\nIERJU0NMQUlNRVI= 98197\nW29wdA== 98198\nIGVkcw== 98199\nIFJhY2Vz 98200\ndmVudGFz 98201\nIHB6 98202\nIENhcGFj 98203\nIFVzZXJEYW8= 98204\naXRlc3Q= 98205\nUHJvdmVlZG9y 98206\nIFNob3RndW4= 98207\nIHRoaXJzdHk= 98208\nIEJhbGFuY2Vk 98209\naXF1ZXRh 98210\nIGhlYWxlcg== 98211\nLyIp 98212\nLlNkaw== 98213\nIHRlcnQ= 98214\nImRhdGE= 98215\nX3Byb3ZpbmNl 98216\nLkF1dG9tYXRpb24= 98217\nIGZvbnRXaXRoTmFtZQ== 98218\nX0FOVA== 98219\n55WM 98220\nb29kbGVz 98221\nIFJFUFJFU0VOVA== 98222\nX0dQUw== 98223\nIHBlcnN1YXNpb24= 98224\nIERpc2N1c3Npb25z 98225\nIGZyZWQ= 98226\nTkVH 98227\nOmJvcmRlcg== 98228\nCWluaXRpYWxpemU= 98229\nCWdsb2c= 98230\nLWNhcGl0YWw= 98231\nIEltVmVj 98232\nIGRldmlz 98233\nQ2FuZGlkYXRlcw== 98234\nLmFuaW1hdGlvbnM= 98235\nIHJhZ2F6emk= 98236\nIFByb21ldGhldXM= 98237\nIEtpZGQ= 98238\nIHByb2dyYW1tYQ== 98239\nQ2VydGlmaWNhdGVz 98240\nQ29udGE= 98241\nLmVzcHJlc3Nv 98242\nIOuQmA== 98243\nIGJlaWRl 98244\n6ZmG 98245\nLmdldFJhdw== 98246\nIEZ1bGxOYW1l 98247\nIGlhbQ== 98248\nKCopKA== 98249\nbWFpZHM= 98250\nQkg= 98251\nIENvbnNwaXJhY3k= 98252\nX0RV 98253\nIGJsYXRhbnRseQ== 98254\nIFx8 98255\nIFdpZw== 98256\nIENvbmo= 98257\nUmVuZGVyaW5nQ29udGV4dA== 98258\nTWl0Y2g= 98259\nIGFsbGVsZXM= 98260\nIOazqOaEjw== 98261\nIHJpbXM= 98262\nIE5laWdoYm9y 98263\nIEt5bGll 98264\nLnBhcnR5 98265\ndG9ycw== 98266\nIOyhsO2ajA== 98267\nIHdlcw== 98268\nIENyYWZ0aW5n 98269\nWyIu 98270\nLnNwb25nZQ== 98271\nIOqx 98272\nSXNsYW1pYw== 98273\nIHByb3NlY3V0aW5n 98274\nIHdpaw== 98275\nLm9zZ2k= 98276\nb25pbmdlbg== 98277\nR3JhbW1hcg== 98278\nJ2lt 98279\nIGF4aWFs 98280\nQ2xlYW5pbmc= 98281\nLmdldEV4dGVybmFsU3RvcmFnZQ== 98282\nPS4v 98283\nIGNocm9tYXQ= 98284\n0LXRhQ== 98285\nYWJheQ== 98286\nIGJvbGE= 98287\nLkFnZ3Jlc3NpdmU= 98288\nJ10sJF8= 98289\naXphY2Fv 98290\nUHJlcGFyaW5n 98291\nOkFueQ== 98292\nLkVOVEVS 98293\nLXdpbmRvd3M= 98294\nIGVucmFnZWQ= 98295\nX2RpY2U= 98296\nIGRldHRh 98297\nZWNhbA== 98298\nX09SSUdJTg== 98299\nIC0tLS0tLT4= 98300\nX0JsdWU= 98301\nIGJvdGFuaWNhbA== 98302\nIGZyYWdz 98303\nIGZhbWlsaWFs 98304\nLWR1 98305\nIHNlaXppbmc= 98306\nKGJsb2Nrcw== 98307\nLnJk 98308\nLmNoZWNrTm90TnVsbA== 98309\nIG1pc2Vy 98310\nIG1heHg= 98311\nIEtuZWU= 98312\nVmlld0l0ZW0= 98313\nSW5uZXJIVE1M 98314\nRGFuZ2Vy 98315\nKChfXw== 98316\nIHByenlwYWQ= 98317\nY3JlYXRlVXJs 98318\nKios 98319\nIERlY29yYXRpbmc= 98320\nQVRFR1k= 98321\nPz4v 98322\nLkRlc2lnbmVy 98323\naGV4ZGlnZXN0 98324\nIEV2ZXJ5d2hlcmU= 98325\nYWxsZXJpZXM= 98326\nLlRFWFRVUkU= 98327\nLkJsb2Nrcw== 98328\nemVsbA== 98329\nIHByZcOnbw== 98330\nU3VkZGVubHk= 98331\naW5wdXRFbWFpbA== 98332\nKHN5bmM= 98333\nLmJk 98334\nZ29sZGVu 98335\nPicpOw== 98336\nIERpY2tpbnNvbg== 98337\nPj4oCg== 98338\nIFFVRVVF 98339\nIGdldENvbHVtbg== 98340\nIFNBTkQ= 98341\nLnBpZWNl 98342\nbGljZXI= 98343\nRmx1dHRlcg== 98344\nIGdldFZlcnNpb24= 98345\nIHJlc291cmNlSWQ= 98346\nb2ds 98347\nxYJhdw== 98348\nLkJyYW5jaA== 98349\nCXdlYg== 98350\nIGZyYW1lcmF0ZQ== 98351\nUFBQ 98352\nIGZyYXk= 98353\nQ05U 98354\nIGluZm9ybWF0aWU= 98355\nJ10NCg0K 98356\nbmVhcw== 98357\nSGVhZGVyQ29kZQ== 98358\nIOa4 98359\nIHRyZw== 98360\ncmF3dHlwZXM= 98361\nSG9uZGE= 98362\nIG1hcmtldGVy 98363\nIHJlcXVlc3REYXRh 98364\nIFBn 98365\nCW5vdA== 98366\nIHBhZ2VJbmZv 98367\nIGFrdHVlbGxlbg== 98368\n44GV44KT 98369\nIEFNUw== 98370\ncHVzaFZpZXdDb250cm9sbGVy 98371\nCUFM 98372\nIHZlc3Rz 98373\ncHJvZHVjZQ== 98374\nLW3Dqm1l 98375\nIFJhaG1hbg== 98376\nRnVubnk= 98377\nRVo= 98378\nX1ZhbGlk 98379\nIHNxdWFkcm9u 98380\nIGxhc2g= 98381\nIGlybQ== 98382\naWFzY28= 98383\nIFBhcmFu 98384\nIHBldGl0ZXM= 98385\nIERlY2F5 98386\nIHVuaW5pdGlhbGl6ZWQ= 98387\ncHJpdmlsZWdlZA== 98388\nIG1iZWR0bHM= 98389\n5aSH5rOo 98390\nIF4u 98391\nIGVjc3RhdGlj 98392\nRGV0cm9pdA== 98393\nIHBhcnRlbg== 98394\nIHNvdXZlbmly 98395\nLmdldExvZ2lu 98396\n0LzQvtGC0YA= 98397\nZW7Dp8Ojbw== 98398\nIG3DrW5pbW8= 98399\nIEFjY2Vzc2Vk 98400\ncmnDsw== 98401\nTWlj 98402\nIFZvY2Fs 98403\nLlNldFN0cmluZw== 98404\nIG1lbnNhamVz 98405\n5YCN 98406\nIGF0dHJhdmVycw== 98407\nIEFwaA== 98408\nICcpOw0K 98409\nw7xuZGU= 98410\nIGVuY2hhbnRlZA== 98411\nIFJvb3RTdGF0ZQ== 98412\nIENMT1NFRA== 98413\nCQkJCQkJCQkNCg== 98414\nIGNhbGllbnRl 98415\nb3JyaXM= 98416\nIHBoeXNpY2lzdHM= 98417\naHduZA== 98418\nX3Zp 98419\nIHLDoXBpZG8= 98420\nIGNhcGl0YWxpemVk 98421\nZWRCeQ== 98422\nIG1hY2hpbmluZw== 98423\nIGh1YmJ5 98424\nIFN0YWN5 98425\nLkJ1cw== 98426\nZHJpbms= 98427\nSHVy 98428\nIHByb3BpYQ== 98429\nVW5pdFRlc3Q= 98430\nIG1pc2NvbmNlcHRpb24= 98431\nX18pKTsK 98432\nL2Rj 98433\nIE1heXdlYXRoZXI= 98434\nX21D 98435\nLmNyZWF0ZUZyb20= 98436\nIFFQYWludGVy 98437\ncm9wc3ljaA== 98438\naW5uaXR1cw== 98439\nYXlhcw== 98440\nIGdlZw== 98441\nKGR3 98442\nIHVzYWRv 98443\nIHRyaWNrbGU= 98444\nIGFubmloaWw= 98445\nIFBhc3Rh 98446\nICsrCg== 98447\nKEV4cGVjdGVkQ29uZGl0aW9ucw== 98448\nLnBvc3RWYWx1ZQ== 98449\naWNhcA== 98450\nIERvbmV0c2s= 98451\nX3NvdXA= 98452\nLXB1Ymxpc2g= 98453\nIFBi 98454\nbWVudGlvbnM= 98455\nQUNDRVBU 98456\nLlB1bGw= 98457\nLOKAmeKAmQ== 98458\nIHJldGFyZGVk 98459\nX0FUT00= 98460\nIFRlcm1pbmF0b3I= 98461\nLWNvdXJ0 98462\nIENMTG9jYXRpb25Db29yZGluYXRl 98463\nIHJldmVyZW5jZQ== 98464\nIFNTQw== 98465\ndXRlbHk= 98466\nIFdPTg== 98467\nIEdTTA== 98468\nZnJlaQ== 98469\nLmdldExvbmdpdHVkZQ== 98470\nIG9wZW5GaWxlRGlhbG9n 98471\nLkJ1dHRlcg== 98472\nLWltcG9ydGFudA== 98473\nX01BTlk= 98474\nIEdvbmc= 98475\n4oCcSG93 98476\nIGdvcmdl 98477\nPW1zZw== 98478\nIEV6ZWs= 98479\nY3JlYXRlQ29tbWFuZA== 98480\nOmNoZWNrZWQ= 98481\nIGluZm9ncmFwaGlj 98482\nLldFU1Q= 98483\nRGlycw== 98484\nIGd1YXJkYQ== 98485\nIGJlZXRsZQ== 98486\nPHNtYWxs 98487\nLWFuZHJvaWQ= 98488\nIGNyZWRpdG9y 98489\nIE3DqWQ= 98490\nIGZpbmFsaXN0 98491\nIGFibA== 98492\nbmV2 98493\nX2ludGVyYWN0aW9u 98494\nIE1vbnRlcmV5 98495\namFo 98496\nIGNhbmRpZXM= 98497\nIFF1aW5jeQ== 98498\n6Kqt 98499\nIGJhdGNoU2l6ZQ== 98500\nYWtpdA== 98501\nIG9iZQ== 98502\nKHBhcmE= 98503\nIGV4cGVyaW1lbnRlZA== 98504\nIGNvdW5jaWxsb3Jz 98505\nIGNsYXNoZWQ= 98506\nc3F1 98507\nLXN0cm9rZXM= 98508\nIEdL 98509\nIEV4cGlyZXM= 98510\nIHByb3NlY3V0aW9ucw== 98511\nIENyZWF0dXJlcw== 98512\nIHnDtg== 98513\neGxpbQ== 98514\nX0lNUA== 98515\nRW50cnlQb2ludA== 98516\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 98517\nLkRlZmF1bHRDZWxsU3R5bGU= 98518\nIGJyZXZl 98519\nIEJyaXRhbm4= 98520\nIHN3ZWF0eQ== 98521\nIGxldGg= 98522\nIGZsYXNoYmFjaw== 98523\ncGVybWFuZW50 98524\nIEpESw== 98525\nX0RldGFpbHM= 98526\nRXVybw== 98527\ncHB0 98528\nIHJpY2hUZXh0Qm94 98529\nL2JvYXJk 98530\nIHRyYW5jZQ== 98531\nLmN5Y2xl 98532\nJyk7Iik7Cg== 98533\nIHRveGlu 98534\nX2RlaW5pdA== 98535\nIG92ZXJhcmNoaW5n 98536\nIGNvbmZpZ3BhcnNlcg== 98537\nIEthd2FzYWtp 98538\nLnRodW1i 98539\nIHBsYXlh 98540\nIEpvc2Vm 98541\nK18= 98542\nIHplcm9lcw== 98543\nIGF1cA== 98544\nIEhhcmk= 98545\nY29tbWl0dGVk 98546\nTml0 98547\nLmZpbGVQYXRo 98548\nIERpc2FiaWxpdGllcw== 98549\nbWFudWZhY3Q= 98550\nLWFsaWduZWQ= 98551\nLlJFU0VU 98552\nIHJ1c3R5 98553\nRXk= 98554\nIG91c3RlZA== 98555\nY29zYQ== 98556\nU3RydWN0dXJlZA== 98557\nLmdldEQ= 98558\nIHPDoWJhZG8= 98559\nPkxvYWRpbmc= 98560\nX21B 98561\nLmdldFJhbmRvbQ== 98562\nYmxpbmdz 98563\nIGNoZWVzZXM= 98564\ndHRp 98565\nLuKAog== 98566\nIEJ1cmdlc3M= 98567\nZW5kZXJpdA== 98568\nLicsDQo= 98569\nKCIiKw== 98570\nYWNi 98571\nJXA= 98572\naW5kZXhlZA== 98573\nX3ByZWRpY2F0ZQ== 98574\nbmVzaWE= 98575\nIGJpZWQ= 98576\nIENJVA== 98577\nKFBvcw== 98578\nX3JhZGk= 98579\n5Lu35qC8 98580\nQml6 98581\nIEFkb2xlc2NlbnQ= 98582\nIHZpw6pu 98583\nY3ljbA== 98584\nX0NhbmNlbA== 98585\nIGNvbmNsdXNpdmU= 98586\nIGFwcGVsbGF0ZQ== 98587\naW5mb3JtYXRpY3M= 98588\nU0o= 98589\nIGVsZWN0aXZl 98590\ncm9sZUlk 98591\nRmV0Y2hlcg== 98592\nCUNvbW1hbmQ= 98593\nKCIoJQ== 98594\nIGZhcnQ= 98595\nSUxB 98596\nZ2V0QmxvY2s= 98597\nQVVTRQ== 98598\nINC00LDQvQ== 98599\nIEFydGU= 98600\nIG5vdGlmeWluZw== 98601\nIGdlbGU= 98602\nLnNhbWU= 98603\nIFJlZ2Vs 98604\nIEJhxZ8= 98605\nLmNyZWF0aW9u 98606\nIFZO 98607\nX2NvbW11bml0eQ== 98608\nIHVuc3VzdGFpbmFibGU= 98609\nU0VY 98610\nIGdyaWRTaXpl 98611\ncmVzY2lh 98612\nYXZlcnNhYmxl 98613\nKCcsJylb 98614\nIFBoZWxwcw== 98615\n4buVaQ== 98616\nQU5DRUxFRA== 98617\nLUlT 98618\nLnJ1bm5lcnM= 98619\nIFN0b2tlcw== 98620\nLlByb2R1 98621\nIHdoaXBwaW5n 98622\nX2FjcXVpcmU= 98623\nIGludmVzdGlnYWNpw7Nu 98624\nZnJpZWQ= 98625\nLmNvcHlXaXRo 98626\nIEhhcmRjb3Zlcg== 98627\nLVNl 98628\n4Z624Z4= 98629\naW52aXRhdGlvbg== 98630\nbGVzYWk= 98631\nIERvcm0= 98632\nINGB0L/QuNGB0LrQsA== 98633\nIGNvbmNhdGVuYXRlZA== 98634\nb3BoaWw= 98635\nIHRoaW5rZXI= 98636\nL2ZvbnRhd2Vzb21l 98637\nIExlb3BhcmQ= 98638\nICIvIik7Cg== 98639\nIHJlc2lkdWFscw== 98640\nIE1pY3Jvd2F2ZQ== 98641\nIGNvbmZvcm1l 98642\ndGhyb3A= 98643\nIGRpc2VtYg== 98644\nIE9NRw== 98645\nIERpc2NpcGxpbmU= 98646\nIEFjcm9iYXQ= 98647\nL3JlcG9zaXRvcnk= 98648\nZGZh 98649\nX01FRA== 98650\nYnVmaW8= 98651\nIG3DqXRob2Rl 98652\nX0hPTEQ= 98653\naWFzaQ== 98654\nX2xlZ2FjeQ== 98655\nKQ0NCg== 98656\n5qOA 98657\nR2V0UHJvY0FkZHJlc3M= 98658\nIHlheQ== 98659\nb3RlbmNl 98660\nb3JkZXJpZA== 98661\nLXR3 98662\nIGRlYXJseQ== 98663\nSW5jb21pbmc= 98664\nL2ls 98665\nIG5ldXJvcA== 98666\ndWN6 98667\nKTsNDQ0K 98668\nIElubm92YXRpdmU= 98669\nIHByb2Z1bmQ= 98670\naWdtYXQ= 98671\nU2VsZWN0aW9uTW9kZQ== 98672\ncmVsZXZhbnQ= 98673\nLkdP 98674\nIGJydWlzZXM= 98675\nIHNhY2g= 98676\nb2RlZg== 98677\nIHJlaW1i 98678\nL2Rlc2t0b3A= 98679\nLXNwb3Q= 98680\ndW5kYW5jZQ== 98681\nRW50cm9weQ== 98682\nXGNvcmU= 98683\nIHN1Z2Vy 98684\nIE12Yw== 98685\nIEdOT01F 98686\nX2luZHg= 98687\nIFlZU1RZUEU= 98688\nIE1hdGxhYg== 98689\nIENJRg== 98690\nICopKQ== 98691\nIHByb2R1Y3RMaXN0 98692\nIEFscmlnaHQ= 98693\nYWNlbWFyaw== 98694\n0YLQuNCy 98695\nbW9kaWZpY2F0aW9u 98696\naW50ZXJuYXRpb25hbA== 98697\nIGhvbWVycw== 98698\nIGRpY3Rz 98699\nIFFGb250 98700\nLlNRTGl0ZQ== 98701\nIHRyYW5zcGxhbnRhdGlvbg== 98702\nIE1lc3NhZ2VCb3hCdXR0b24= 98703\nIEVsdmVz 98704\nJ11dKQo= 98705\nKFFJY29u 98706\nIGNpbmVtYXM= 98707\nQ09PUkQ= 98708\nLUNoaW5h 98709\nIGto4bqpdQ== 98710\n5oiR55qE 98711\nIHNrdWxscw== 98712\nIHBhaW5zdGFraW5n 98713\nZmNl 98714\nLlhSTGFiZWw= 98715\nIHNwZWNpZmllcg== 98716\nIHByZWZlcnJpbmc= 98717\nL2FjdGl2aXR5 98718\nKFBob3Rv 98719\nw6FsdA== 98720\nLmxvdA== 98721\nJycu 98722\nYW5ub25jZQ== 98723\nLmdvb2dsZWNvZGU= 98724\nLXBkZg== 98725\nIFBva2U= 98726\nX0FDTA== 98727\nIGVuZG93ZWQ= 98728\nZGlzY292ZXI= 98729\nLm9tZw== 98730\nIHdvb2RsYW5k 98731\nLk1hZ2lj 98732\nIHZvbG9udA== 98733\nTm90QWxsb3dlZA== 98734\nIGNoYXZl 98735\nQk1X 98736\nJywnPScs 98737\nIFNJWA== 98738\n5oiR5Lus 98739\nIGtvc2hlcg== 98740\nIGFzcGlyYXRpb24= 98741\naW50bA== 98742\nX3JlZnB0cg== 98743\nJysK 98744\nbWVudG9y 98745\nLmNsdWI= 98746\nV2luZG93U3RhdGU= 98747\nLkFSUg== 98748\nIHp6YQ== 98749\nIG1lc3NhZ2VUeXBl 98750\nLmVxdQ== 98751\nVGhvcg== 98752\nIGluanVzdA== 98753\nIGd1bXM= 98754\nIGJvcmRlclNpZGU= 98755\nLy8vLy8= 98756\nIFRyYW5zbWl0 98757\nIGJ1ZnNpemU= 98758\nIGhhaw== 98759\nIGVsbGFz 98760\nUkFORE9N 98761\nCW1j 98762\nIHBlYQ== 98763\nZWtv 98764\nZG9jdW1lbnRv 98765\nIGh5c3Rlcmlh 98766\nIGFyZW5hcw== 98767\nIGd1bm1lbg== 98768\nIG1pa2U= 98769\nIGltcHVuaXR5 98770\nYXRpc2F0aW9u 98771\nX1plcm8= 98772\nX0NPTVBBTlk= 98773\nIEdvcnM= 98774\nIHVzZUNsYXNz 98775\nKHJlZGlz 98776\nIFJVTk5JTkc= 98777\nIEJhaXI= 98778\ndmVsdGU= 98779\nICcsJy4= 98780\n0LDRgtGM0YHRjw== 98781\nw7ZzdA== 98782\nZW5jb2RlVVJJQ29tcG9uZW50 98783\nX3Jlc3RyaWN0 98784\nIGRlY2Fscw== 98785\nIFBlZGlkbw== 98786\nIGFsdGVyY2F0aW9u 98787\nRGlzcGxheXM= 98788\nIEFwcGxpY2FudHM= 98789\nQ1VT 98790\nVGV4dGFyZWE= 98791\nIEFuZ29sYQ== 98792\nLmZ1dHVyZQ== 98793\nIFVTSE9SVA== 98794\nIHN1cHByZXNzaW5n 98795\nIHNldHplbg== 98796\nQVBvbHlub21pYWw= 98797\nIHRvY2g= 98798\nIGhhbGxtYXJr 98799\nICQkJA== 98800\nIENIQVJTRVQ= 98801\nLnJwbQ== 98802\nIERpY2g= 98803\nLS0tLS0tLS0tLS0tLS0tLS0tLS0= 98804\nX3Bhcm0= 98805\n6L+Y 98806\nYWNjaW9uZXM= 98807\naGFpdA== 98808\nV0FSREVE 98809\nX3JvdXRpbmc= 98810\nIE5PTQ== 98811\nIGVuY2xhdmU= 98812\nIExvdHRv 98813\nCWZy 98814\nY29tcGxleENvbnRlbnQ= 98815\nIEJhbGxhcmQ= 98816\na3ViZQ== 98817\nL3dpbg== 98818\nLmdldENvbHVtbk1vZGVs 98819\nX1JFUExBQ0U= 98820\nSGVhZGVyVmFsdWU= 98821\nIGVzdHVkaWFudGVz 98822\nIGFwaXM= 98823\nIGJwbQ== 98824\nIFR5cGVOYW1l 98825\nQW5kR2V0 98826\ncml0YQ== 98827\nUGxhbnM= 98828\nPk5vdGU= 98829\nIGZldGlzY2g= 98830\nIHRvbmVk 98831\nX2dvdG8= 98832\nb25zZW5zZQ== 98833\nIG1vbGRz 98834\nIGluZmlsdHJhdGlvbg== 98835\nIEd1ZXJyZXJv 98836\ndWJibw== 98837\nY2tp 98838\nKCQoIi4= 98839\nX2FjdGl2aXRpZXM= 98840\nKGNoYW5nZXM= 98841\nIG9mQXBw 98842\nIEtlcGxlcg== 98843\nIERlbXA= 98844\nIENvbnRpbmVudA== 98845\nLlRpY2tz 98846\nIFVuc2lnbmVk 98847\nIEphaHJlcw== 98848\nIGZyZXNobWVu 98849\nIEFyY2hpdmVk 98850\nINC60L7RgtC+0YDRi9C5 98851\nICc6Og== 98852\nVHV0b3JpYWw= 98853\nQ2M= 98854\nIHRhYmxlTGF5b3V0UGFuZWw= 98855\nZnJvbUpzb24= 98856\nLmxldmVscw== 98857\nX3RyYW5zaWVudA== 98858\nIGVuZG9yc2luZw== 98859\nIERJQw== 98860\nbGF1Zg== 98861\nIHNocmVk 98862\nX0VNSVQ= 98863\naWZpY2FudGx5 98864\nQUxB 98865\nL3Byb3Rv 98866\nIG5hcnJvd2luZw== 98867\nVXRj 98868\nRmFjdG9ycw== 98869\nIHNlbnRpZW50 98870\n5p6Q 98871\nbGl4aXI= 98872\nIENST1NT 98873\nbWV0ZW9y 98874\nIGdyb2lu 98875\nIG1kYg== 98876\nIFJvdHRlcmRhbQ== 98877\nIGNvbWlkYQ== 98878\nIE9wQ29kZQ== 98879\nIERlZmF1bHRWYWx1ZQ== 98880\nUGVybWlzc2lvbnNSZXN1bHQ= 98881\nIGhldGVyb2dlbmVvdXM= 98882\nIG1vb3Q= 98883\nIGRlY2VpdmVk 98884\nLWluZGVwZW5kZW50 98885\nIE9iamVjdE91dHB1dFN0cmVhbQ== 98886\nIG92ZXJwb3dlcg== 98887\nLmR1cA== 98888\nIGxkYg== 98889\nIGRvbWVzdGljYWxseQ== 98890\nIGJlc3RlbGxlbg== 98891\nIGxvdg== 98892\nIENvbnRyYWN0b3Jz 98893\nVHJpYW5nbGVz 98894\nIGZvZGRlcg== 98895\nIGZpbG1lcw== 98896\n5LyB 98897\nIHJldm9sdmVy 98898\nU3RhcnR1cFNjcmlwdA== 98899\nL3ZhbGlkYXRpb24= 98900\nIFJlc291cmNlVHlwZQ== 98901\nacWf 98902\nIExheg== 98903\nZmVm 98904\nIGxzdG0= 98905\neyo= 98906\nLmF0dGFjaG1lbnQ= 98907\nLmhpdHM= 98908\nZXdpdGg= 98909\nRE9H 98910\nQWxhYmFtYQ== 98911\nIG1lZGl1bXM= 98912\nLm1Db250ZXh0 98913\nLWNvbHM= 98914\n5Y+L 98915\nLm5vdGljZQ== 98916\nIGF0dG4= 98917\nIFBhY2tpbmc= 98918\nIExu 98919\nX0NPTVBMRVg= 98920\nL1VzZXJz 98921\nLnNhdmV0eHQ= 98922\nIFJvdW5kcw== 98923\nPyw/LD8sPyw= 98924\nIGluZ2w= 98925\nIFJPQw== 98926\nX2ZlbWFsZQ== 98927\nIFN0YXJk 98928\nXV07 98929\nIHdyZXN0bGVycw== 98930\nIHRvcnJlbnRz 98931\nIHNpbmg= 98932\n77u/Cgo= 98933\n67O1 98934\nc2Vuc2U= 98935\naG93ZXZlcg== 98936\nLlBoeXNpY3M= 98937\nSW5mcmFzdHJ1Y3R1cmU= 98938\nIFNhY3I= 98939\nRmVs 98940\nIERJU1RSSUJVVA== 98941\nw6ltZW50cw== 98942\nIFZhbGlkYXRlcw== 98943\nIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj 98944\nIHwv 98945\nIGVzbA== 98946\nIHLDqXNlYXU= 98947\nIEJpcA== 98948\nQllURVM= 98949\nX1dBVEVS 98950\nVHVybmluZw== 98951\nRUxT 98952\nIGp1eHRhcA== 98953\nIGxlc2Jpc2NoZQ== 98954\nw71jaA== 98955\nKFVua25vd24= 98956\nTmVv 98957\nQEpzb25Qcm9wZXJ0eQ== 98958\nIGFsdW1ub3M= 98959\nIFJhcXFh 98960\naW1laQ== 98961\nLmdldEJvdW5kcw== 98962\nLk1vdXNlRXZlbnRIYW5kbGVy 98963\nIyMjIyMjIw== 98964\nR2VuZXJpY1R5cGU= 98965\nL2Ntcw== 98966\nIHR1cm5v 98967\nINC80LjQvQ== 98968\nIGZvbGtsb3Jl 98969\nIEV2bw== 98970\nIGNvbmR1Y3Rpdml0eQ== 98971\nIGxlYmVu 98972\nIGdlYXJib3g= 98973\nLXZz 98974\nIM+G 98975\nIGRyaW5rZXJz 98976\nIGNvbmV4YW8= 98977\nIFRlZXRo 98978\nIGdldEFyZ3VtZW50cw== 98979\nIFJBVA== 98980\nZW50aW91cw== 98981\nRWR1Yw== 98982\nK1c= 98983\nIEluc3RpdHV0aW9uYWw= 98984\nIEJvcmQ= 98985\naXNFcXVhbA== 98986\nKHB3ZA== 98987\nIGlnbml0ZWQ= 98988\nIFJvdXNzZQ== 98989\nIGltcGFjdGZ1bA== 98990\nIE1hbGs= 98991\nIGdlcmFs 98992\nIFBpdm90 98993\nIGF6dA== 98994\nIGNzdmZpbGU= 98995\nIFJvcGU= 98996\nIFNPTFVUSU9O 98997\nIEFyYml0cmFyeQ== 98998\nIGxldHRv 98999\nLk1vdXNlQWRhcHRlcg== 99000\nIH19fQ== 99001\nIFNhaWxvcg== 99002\nZGVyYQ== 99003\nUHV0dGluZw== 99004\nIGNvbmNlbnRyYXRlcw== 99005\nIGF1dGhEb21haW4= 99006\n4oCd55qE 99007\nLWZpbmFscw== 99008\nLHN0cmxlbg== 99009\nTXVvbg== 99010\nIE9yZGluYXJ5 99011\nZmlyZWZveA== 99012\nIExhVGVY 99013\nIEh1bmQ= 99014\nZW5naW5lZXJpbmc= 99015\nL2JsdWU= 99016\nZWRUZXh0Qm94 99017\nKCIiKTs= 99018\nIENEREw= 99019\na2VwdA== 99020\nIEdldFN0cmluZw== 99021\nS2ly 99022\nKCk9Jw== 99023\nIE9DRA== 99024\nYW50aXVt 99025\nJG1lbnU= 99026\nIEFwcGFsYWNoaWFu 99027\nU2VjcmV0YXJ5 99028\n66WY 99029\n4Li14Lii 99030\nU2VtYW50aWM= 99031\nICpb 99032\nZXN0b25l 99033\ndW5na2lu 99034\nTWF4WQ== 99035\nLXRvbmU= 99036\nIn07DQo= 99037\nX1BhcnQ= 99038\nPE1lbWJlcg== 99039\ndHJhbQ== 99040\nIHRyYW5zaXN0b3I= 99041\nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg== 99042\nIERlc2Rl 99043\nIHJpZ2h0ZnVs 99044\nIENvcm5lbA== 99045\n5pE= 99046\nLkhPVVI= 99047\nIHNpZGVsaW5lZA== 99048\ncmVmZXJyZXI= 99049\nbWF6ZQ== 99050\nIGhvbHN0ZXI= 99051\nIGNyaXBwbGVk 99052\nIERhdGVGb3JtYXR0ZXI= 99053\nb3BoYWdl 99054\nX21E 99055\nIGRlc2VsZWN0 99056\ncmF1ZA== 99057\nIFBLSw== 99058\ncm93RGF0YQ== 99059\nIGxvY2tzbWl0aA== 99060\nLnJlc3BvbnNlcw== 99061\nKHByb2R1Y3RJZA== 99062\nX1NUTVQ= 99063\nS2V5VHlwZQ== 99064\nLlRoZW4= 99065\nemVl 99066\nIGNydA== 99067\nIEdyYW5kbWE= 99068\nQFJlc291cmNl 99069\nIGJpdHdpc2U= 99070\nLWNtcHI= 99071\n44CCd3d3 99072\nemVpdGln 99073\nJmRpc3BsYXk= 99074\nQ2FydEl0ZW0= 99075\nLU5v 99076\nIG51bcOpcm8= 99077\nIG1hdXI= 99078\nIGluc3RhbmNpYQ== 99079\nCWR0 99080\nX25wYw== 99081\nIHNrYXRlYm9hcmQ= 99082\n4oCcQWxs 99083\nIENyb3dk 99084\nIMOkbg== 99085\nIGJyYXo= 99086\nY2Fl 99087\neW5ldA== 99088\nL3Bt 99089\nL3NjcmVlbg== 99090\nT1BUQVJH 99091\nIFZCb3g= 99092\nIGxlb3BhcmQ= 99093\nX2dyZWF0ZXI= 99094\nY3B0 99095\nPGRk 99096\nIG1lY2hhbmljYWxseQ== 99097\nb3NwZWxz 99098\nKWY= 99099\nLmx3amds 99100\nLmdldFBvcnQ= 99101\nIFBSRUY= 99102\nLkFkZFRyYW5zaWVudA== 99103\ncHBhcmQ= 99104\nIO2ajA== 99105\nRXRoZXJuZXQ= 99106\nIHNhbGluZQ== 99107\nKGxldmVscw== 99108\nIHNlcnZpY2VQcm92aWRlcg== 99109\nLkFuZ2xl 99110\nYWx0aXR1ZGU= 99111\naWxsYXVtZQ== 99112\nIHNjYXBl 99113\nX0NBTEM= 99114\nX3F1ZXN0 99115\nIERpc3NlcnRhdGlvbg== 99116\nIEVETQ== 99117\nLUNkcw== 99118\nIGhvbm9yYXJ5 99119\nc3RvcHM= 99120\nIHN1YmRpcg== 99121\nIFZI 99122\nIENoZWF0 99123\nIHJpZ2h0ZnVsbHk= 99124\nUUU= 99125\nLldyaXRlQnl0ZQ== 99126\nZmlndXJlcw== 99127\nZW5uaWU= 99128\nKERCRw== 99129\nIHZva3NuZQ== 99130\nIGV4cGVuZGVk 99131\nVU5JQ0FUSU9O 99132\naWxpbng= 99133\nIFJlY2Fw 99134\nX3ZlcnRz 99135\nIHRyYXVtYXQ= 99136\nIGdldFBsYXllcg== 99137\nIHZlcmJlc3M= 99138\nIGN1bHRpdmF0aW5n 99139\nIGluaXRpYXRvcg== 99140\nVGjDtG5n 99141\nZmluZEZpcnN0 99142\nX3Blcm1z 99143\nIGJ1Yw== 99144\nICIiIg0KDQo= 99145\nVFlQRVM= 99146\nb2JqZWN0TWFuYWdlcg== 99147\nKENvbmZpZ3VyYXRpb25NYW5hZ2Vy 99148\nIHRpbWlk 99149\nIHNuYXBjaGF0 99150\nIGNvbnNlZw== 99151\nCWRpc3RhbmNl 99152\nX3JpZ2h0cw== 99153\nX0Rlcw== 99154\nIEZsZXNo 99155\nLXZlcg== 99156\nIGFmbA== 99157\nZnJhdWVu 99158\nIGJsYXNwaA== 99159\nIFF1YWxpdMOkdA== 99160\nbWFm 99161\nTW9uaXRvcmluZw== 99162\nLkRpZmY= 99163\nIHNob3JlbGluZQ== 99164\nIHJlc3BvbnNlQm9keQ== 99165\nbWVtc2V0 99166\nPGRlY2ltYWw= 99167\nU21hcnR5SGVhZGVyQ29kZQ== 99168\nIGluc2V0cw== 99169\nIEJpbmFyeVRyZWU= 99170\nYW1lZGE= 99171\nIG5paGls 99172\nIE5heQ== 99173\neW1vbG9neQ== 99174\nIFdH 99175\nIHRhcGk= 99176\nIEluc3RhbGxlZA== 99177\nbWFpbnRlbmFuY2U= 99178\nKX0iCg== 99179\nIFhP 99180\nLXBlcmlvZA== 99181\nc2Fy 99182\nIG5pbmd1bmE= 99183\nT1JNQVQ= 99184\nLnNldFByb3RvdHlwZU9m 99185\nIEti 99186\nIEhlbnJpaw== 99187\nw6l0aXF1ZQ== 99188\nIExhaG9yZQ== 99189\nCUFkZHJlc3M= 99190\nIG1lbHRz 99191\nTnk= 99192\nX2FkdmFuY2U= 99193\nIHZlbG9jaWRhZA== 99194\nIGFsdW1ubw== 99195\nIHNhbml0aXplcg== 99196\nIHBoaXNoaW5n 99197\nIENvbWV0 99198\nIGNoaWFy 99199\nCXNwZWM= 99200\ndHJpbW1lZA== 99201\nKHN0YXRlYXJy 99202\nb25uZW4= 99203\nUmV2ZW51ZQ== 99204\nTGVucw== 99205\nIGNoYWlyZWQ= 99206\nIEFzc3VtZXM= 99207\nVHJhc2g= 99208\nX3Vuc2V0 99209\nXEJyaWRnZQ== 99210\nUG9pbnRTaXpl 99211\nIFBvbGlj 99212\nIHNleHVhbGVz 99213\nCWRmcw== 99214\nIFdpZGVTdHJpbmc= 99215\nIGFjY3J1ZWQ= 99216\nWVc= 99217\nX1NDSEVEVUxF 99218\nIGtpdGU= 99219\nIHBhcmFjaHV0ZQ== 99220\nW3RhYmxl 99221\nIGFjdGl2ZUNsYXNzTmFtZQ== 99222\nLlF1YWQ= 99223\nSXNyYWVsaQ== 99224\nIMWT 99225\nIGhvb2c= 99226\nIGNo4buJ 99227\nZXdlYXI= 99228\nIHRpcmVsZXNzbHk= 99229\nc2V0RXJyb3I= 99230\nLmdldEFtb3VudA== 99231\nLnNldEl0ZW1z 99232\nIE1hbnNvbg== 99233\nIEJheWVzaWFu 99234\nX0ZsYWc= 99235\nQUNIRVI= 99236\nL29yaWdpbmFs 99237\nIGltbWFj 99238\nIExvc2luZw== 99239\nJz4KCg== 99240\nTGlj 99241\nIE1pcmFnZQ== 99242\nIEFzc2VtYmx5RmlsZVZlcnNpb24= 99243\nVGVW 99244\nIFZhbHVlRXZlbnRMaXN0ZW5lcg== 99245\nLXNvbHZpbmc= 99246\nVGhv 99247\ncm91bGV0dGU= 99248\nX1dQ 99249\nIHVuaW50ZXJydXB0ZWQ= 99250\nIGZpZWxkVHlwZQ== 99251\nLlR5cGVk 99252\nIGFtb3Vy 99253\nIG1vY2tlcnk= 99254\nKHZvbA== 99255\nIFN1YmNvbW1pdHRlZQ== 99256\nIFJ1Zg== 99257\nZXJveA== 99258\nOlVJQnV0dG9uVHlwZUN1c3RvbQ== 99259\nIEJsdXI= 99260\nIHd5a29u 99261\nbmNlcw== 99262\nQVNIQk9BUkQ= 99263\nISEiKTsK 99264\nIG11cmRlcmVycw== 99265\nLmRhaWx5 99266\nIERJQUc= 99267\namluZw== 99268\nIGRvbHBoaW4= 99269\nIGzDsm5n 99270\nIGLDtg== 99271\nIFZvY2FidWxhcnk= 99272\nLlN0T2JqZWN0 99273\nJykiPg== 99274\nIHp1bg== 99275\nIHNjcmltbWFnZQ== 99276\ndHLDqWFs 99277\nIExpZw== 99278\nW3Zp 99279\nQ29sZQ== 99280\nIGZyb3N0aW5n 99281\nLlBsYXllcnM= 99282\nLXRyYW5zbGF0ZQ== 99283\nRmVlbHM= 99284\nPVwiLw== 99285\nLkJ1dHRlcktuaWZl 99286\nID8+Owo= 99287\nIGF2aQ== 99288\naW5uaWU= 99289\nLkZhaWx1cmU= 99290\nIHNwaW5kbGU= 99291\nQ29uZmlndXJhdGlvbkV4Y2VwdGlvbg== 99292\nX2hvcA== 99293\nIHBvc2nDp8Ojbw== 99294\nIEF3YWl0 99295\nVUlJbWFnZVBpY2tlckNvbnRyb2xsZXI= 99296\nCWRheQ== 99297\nIGdlbm9t 99298\nQ2Fi 99299\nINGA0LXQt9GD0LvRjNGC0LDRgg== 99300\nT1JJR0lOQUw= 99301\nIGVqYWN1bGF0aW9u 99302\nKHRjcA== 99303\nU0VDT05E 99304\nIHRvbmlj 99305\nIExpc3RCb3g= 99306\nIAkJCg== 99307\nKCk+Cg== 99308\nIHF1YXRyZQ== 99309\nxrDhu6NuZw== 99310\nd2l0aEVycm9ycw== 99311\nLk1heWJl 99312\nLOKApg== 99313\ndG9rZW5JZA== 99314\nX1VOREVG 99315\nIGZyZXNobmVzcw== 99316\nIEFtZW5kbWVudHM= 99317\nLm1hcGJveA== 99318\nLkNW 99319\nKGJsb2c= 99320\nX2dldHRpbWU= 99321\nLnF1ZXN0 99322\nc3BhcnNl 99323\nIHJlc2FsZQ== 99324\nIGVudGh1c2lhc3RpY2FsbHk= 99325\nIFByb3N0aXR1dGFz 99326\nV2E= 99327\nQ2FyZ28= 99328\nLlBhcmNlbGFibGU= 99329\nU0VOU09S 99330\nIFJ5dQ== 99331\nTGF1Z2hz 99332\nX05hdGl2ZQ== 99333\nL3Bn 99334\neXN0cw== 99335\nIHBob3RvYw== 99336\n566A 99337\nYWRvcHQ= 99338\nLnNwZWNpZXM= 99339\nY29uY2lsaWF0aW9u 99340\nQWRqdXN0ZWQ= 99341\nLkZpcmViYXNlQXV0aA== 99342\ndXR0bGU= 99343\nb3JkaW5hdGlvbg== 99344\nIG11bmNo 99345\nIFN0YWtl 99346\nLnBpbmc= 99347\nYW5rZXI= 99348\nKFFTdHJpbmdMaXRlcmFs 99349\nIHN1YnNjcmlwdA== 99350\nICAJCg== 99351\nIE1DQw== 99352\nX0NtZA== 99353\nc2V4eQ== 99354\naW91 99355\nIE1BTlk= 99356\nIG5hbm55 99357\nVFJBSU4= 99358\nIGZsb3VyaXNoaW5n 99359\nIFdhdGNoZXM= 99360\nIFFNYXA= 99361\nIEZlcm0= 99362\nIHdhc20= 99363\nIEFiZWQ= 99364\nX1VE 99365\nIEdsYXNzZXM= 99366\nK3Y= 99367\nQXR0ZW5k 99368\nLkNoYWlu 99369\nIGRlY2VuY3k= 99370\nIFN1cHBsZW1lbnRhcnk= 99371\naHVudGVy 99372\nLXR4dA== 99373\nICJ9IjsK 99374\nLnNldFdpbmRvd1RpdGxl 99375\nKCI8Pw== 99376\nIG51bWJlcldpdGhJbnQ= 99377\nIGFmYXI= 99378\n56e75Yiw 99379\ncml0dGU= 99380\nL2xpc3Rz 99381\nKeKAnQ== 99382\nIGRpdmVyc2Fz 99383\nIGVtYmVy 99384\nLlJlYWN0Tm9kZQ== 99385\nIGthbmc= 99386\nIFN0YW1mb3Jk 99387\nW2F0 99388\nLmNsb3NlUGF0aA== 99389\nIGNvbnRyYWNlcHRpdmU= 99390\nKGxvY2F0aW9ucw== 99391\nIGF2YW56 99392\nIENvbnRhaW5lcnM= 99393\nIFNjaG9sYXJz 99394\nLmFjY3VyYWN5 99395\nINCy0YvQv9C+0LvQvQ== 99396\n5ZWP 99397\nPSItLQ== 99398\nIFdyZXN0bGU= 99399\nIEd1YW50YW5hbW8= 99400\nIG55bXBo 99401\nKGd1ZXNz 99402\nLnNldENvbHVtbg== 99403\nX3RF 99404\nLmNvbnRlbnRNb2Rl 99405\nIGludmFsaWRhdGVk 99406\nIFNob290ZXI= 99407\nIE1hdGVy 99408\nLlN1Ym1pdA== 99409\nIGFuZ2xlZA== 99410\nbmF2YmFyRHJvcGRvd24= 99411\nQW8= 99412\nIOa1 99413\n0LjRgdC6 99414\nIFNDQU4= 99415\nCWNt 99416\nIE1hcmt0 99417\ndHJ1Y2s= 99418\nOycK 99419\nLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCg== 99420\nIGdoZXR0bw== 99421\nIGJ1aXRlbg== 99422\nIENsb3du 99423\nOiE= 99424\nIGNoaW1wYW4= 99425\nJ2ZpZWxk 99426\nYW1tbw== 99427\nIERlcGVuZA== 99428\nKX0p 99429\nKEZMQUdT 99430\nIFJDQQ== 99431\nIENob2ly 99432\nTG9naW5QYWdl 99433\nIEdvcmQ= 99434\nQ29tcGFjdA== 99435\nLXBvY2tldA== 99436\nIGNvbnN1bHRhcg== 99437\nIEludGVyY2VwdA== 99438\nxZ90aXI= 99439\ndWV0eXBl 99440\nb25lbnRz 99441\nIHN0YXJ0UG9zaXRpb24= 99442\nIHBvc2l4 99443\nIFdvaG51bmc= 99444\nX0VYUFJFU1NJT04= 99445\nIExvZ2luQWN0aXZpdHk= 99446\nKG9wY29kZQ== 99447\nIFRhbmdv 99448\nIE51bWJlck9m 99449\nLm92ZXJmbG93 99450\nIFdDUw== 99451\nIE9jY3VwYXRpb24= 99452\nX2Nn 99453\nLlRvcGlj 99454\nIENhcmVlcnM= 99455\nQVJBVElPTg== 99456\nLmdldExpbmU= 99457\nIOyihQ== 99458\nIE5hY2h0 99459\nIHRvSXRlbQ== 99460\naW5jbHVzaXZl 99461\nYXZpZXN0 99462\nLWFwcG9pbnRlZA== 99463\nKGludGVybmFs 99464\nQ09OVEVYVA== 99465\nKGRpZ2l0cw== 99466\nPXsiLw== 99467\nIHBsYXl3cmlnaHQ= 99468\nIGRlYWRsaWVzdA== 99469\nbGVhZHM= 99470\nLlBVVA== 99471\nICp9Cgo= 99472\nIFBhY3Q= 99473\nIERpc2NvdW50cw== 99474\nTG9jYWxpemVkTWVzc2FnZQ== 99475\nIE3DpG5uZXI= 99476\nXz4= 99477\nIG1hc2NhcmE= 99478\nKFByb2ZpbGU= 99479\n5Yqf6IO9 99480\naW1pdMOp 99481\nIHdpbGRmaXJlcw== 99482\nLVJPTQ== 99483\nLmlzT24= 99484\nKGdyb3VwSWQ= 99485\nUmVwYWly 99486\nYWNjdW11bGF0ZQ== 99487\nIDwiLA== 99488\nIGhhbmR3cml0dGVu 99489\nIGFjaGV0ZXI= 99490\nIE1HTQ== 99491\nIElybWE= 99492\nLT57Xw== 99493\nZ2Vl 99494\nY3JpbWluYWw= 99495\nIOiLpeimgQ== 99496\nIG1vbWVudGFyaWx5 99497\nIikhPQ== 99498\nX2xpdA== 99499\nIGV4cGlyZXNJbg== 99500\nLiIpLg== 99501\n6ZW/5bqm 99502\nIGZyw6Zra2U= 99503\ndmxj 99504\nIG9yYnM= 99505\nKSwk 99506\nIHZlbnR1cmVk 99507\nLz5c 99508\nY2hhcm0= 99509\nTnVpdGth 99510\nZWxkaWc= 99511\nYXRvbmlu 99512\nV2l0bmVzcw== 99513\nLWxhdA== 99514\nIHNldEhpZGRlbg== 99515\nIHJlbGljcw== 99516\nIGNvbnN1bGF0ZQ== 99517\nLklHTk9SRQ== 99518\nIkFmdGVy 99519\nIHNldEFkZHJlc3M= 99520\nIGJlc3RlaHQ= 99521\nICcnKQoK 99522\nLnhheGlz 99523\nIHNlcsOjbw== 99524\nIG1pc2xlZA== 99525\nX1VOSUZPUk0= 99526\nIFZJQQ== 99527\naW5jcg== 99528\nIHplbml0aA== 99529\nIHZpc2Nvc2l0eQ== 99530\nIHRoaW5seQ== 99531\nLmdldFNoYXJlZFByZWZlcmVuY2Vz 99532\nLkVycm9yQ29kZQ== 99533\nIiksIg== 99534\nIE1pbGxpb25lbg== 99535\nIC8+KQo= 99536\nU2Nyb2xsSW5kaWNhdG9y 99537\nLXNlZWtpbmc= 99538\nIFBPTElUSUNP 99539\nYXNjYQ== 99540\nX3Js 99541\nTmF2aWc= 99542\nKGZ1bGxmaWxl 99543\nIHNvbGl0dWRl 99544\nIGp1dmVu 99545\nIGhhdWxpbmc= 99546\nIE1hY3Jvcw== 99547\nIEdyeQ== 99548\nIGV4ZXJjaXRhdGlvbg== 99549\nIEFUVEFDSw== 99550\nVGlja0NvdW50 99551\nIHJpdGVz 99552\nIGRvZQ== 99553\nUGFydGljbGVTeXN0ZW0= 99554\nIHNsdQ== 99555\nV2luZG93VGV4dA== 99556\nIENsYXNzTmFtZQ== 99557\nIHNsYW5kZXI= 99558\nCVBvcnQ= 99559\nam9uZw== 99560\nP2E= 99561\nLkRpYWw= 99562\n4oCUYXQ= 99563\nJG9ialBIUEV4Y2Vs 99564\nIHNvYXI= 99565\nRU5O 99566\nYXBwZWFyZWQ= 99567\nIHF1b3RpZA== 99568\nZW1hY2hpbmU= 99569\nIG5pcA== 99570\nIG1pY3JvdGltZQ== 99571\nIEFsbWE= 99572\nOyE= 99573\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 99574\nIFBhc3NhZ2U= 99575\nIGR1bXBzdGVycw== 99576\nIEV4Y2x1ZGU= 99577\nIHN1Z2dlc3RpdmU= 99578\nIENpcmN1bGFyUHJvZ3Jlc3NJbmRpY2F0b3I= 99579\nX2Nscg== 99580\nQXJyYXlUeXBl 99581\nSUxMQQ== 99582\nRWxhcHNlZFRpbWU= 99583\nRHJpdmVu 99584\nIHJlc291cmNlTmFtZQ== 99585\nIEdhcnJpc29u 99586\nc2VyaXI= 99587\nLWFoZWFk 99588\nIHBpbm5hY2xl 99589\nIEVzcHJlc3Nv 99590\nU3BhcnNl 99591\nIGFzc2F5cw== 99592\nIEdpcmxmcmllbmQ= 99593\naW1pZA== 99594\nXT0nXA== 99595\nT05HTE9ORw== 99596\nIHBvcnRyYXlpbmc= 99597\nTGFuZQ== 99598\nIGLDunNxdWVkYQ== 99599\nIHJlaW5mb3JjZW1lbnRz 99600\nIFNwcmVhZHNoZWV0 99601\nIEFycmF5Q29sbGVjdGlvbg== 99602\nLGFycg== 99603\nbGlnaHRib3g= 99604\naWNhbmE= 99605\nPCI= 99606\nYnVpbGRlcnM= 99607\nS2lk 99608\nIE1hdFNuYWNrQmFy 99609\nRVhQUg== 99610\nb2RjYXN0 99611\nIEZvdW5kYXRpb25z 99612\nIGluZHM= 99613\nPSckew== 99614\nRml6eg== 99615\nLWZ1bmN0aW9uYWw= 99616\nKHdvcmtzcGFjZQ== 99617\nIHN0ZW1tZWQ= 99618\nX3BhdGNoZXM= 99619\nIEphcnZpcw== 99620\nUkVBRElORw== 99621\nIGRpc3Jlc3BlY3RmdWw= 99622\nIFFEb20= 99623\nICR7Cg== 99624\nZXN0YXR1cw== 99625\nUmVhY2hlZA== 99626\nIS4KCg== 99627\nSUxU 99628\nIE5ERUJVRw== 99629\nIENvdXJhZ2U= 99630\nYmlydGhkYXRl 99631\nIFRpbmc= 99632\nIHV0aWxpemFkbw== 99633\nw6FuY2hleg== 99634\nT3V0ZG9vcg== 99635\nIGhhbmRndW5z 99636\nUmVmQ291bnQ= 99637\nyZk= 99638\ncm9tbw== 99639\nIHR0cw== 99640\nLlNoZQ== 99641\nIFBhbmU= 99642\n44CRLOOAkA== 99643\nIElPQ1RM 99644\nL2JsYWNr 99645\naW5zY3JpcHRpb24= 99646\nIGJpb3BzeQ== 99647\nIFRpbWVJbnRlcnZhbA== 99648\nLlRlc3RDaGVjaw== 99649\nIEdVSVN0eWxl 99650\nIENhcGFiaWxpdHk= 99651\nIEJlaXRyYWc= 99652\nZG9ubmVlcw== 99653\nVHJlYXRtZW50 99654\nLmJhY2t1cA== 99655\nIHNpZ25pbmdz 99656\nIEJvY2E= 99657\nZHJt 99658\nLk1BSU4= 99659\nIGdvZWRl 99660\nIE1hcmt1cA== 99661\nR1JFRQ== 99662\nIEJhc2VTZXJ2aWNl 99663\nLkNyZWF0b3I= 99664\nIGphaWxz 99665\nIEthaG4= 99666\nSXBBZGRyZXNz 99667\nQUNISQ== 99668\nIGluaGliaXRlZA== 99669\nIEAkXw== 99670\nIEFzc2Fzcw== 99671\nIGVudmlhZG8= 99672\nSGVyb2Vz 99673\n0J/QtdGA 99674\nIE1hdmVu 99675\nLmxz 99676\nIGl2ZQ== 99677\nfFJG 99678\nIHJlc2l6ZU1vZGU= 99679\nIHJ1bXBl 99680\nX2F0dGFjaG1lbnRz 99681\nVFU= 99682\nIHRhY3RpbGU= 99683\nQXR0ZW1wdGluZw== 99684\nIHJvYmlu 99685\neWF3 99686\nIG1lcmNlbmFyaWVz 99687\nIEhhYml0YXQ= 99688\nZW5kZGF0ZQ== 99689\nIG94eQ== 99690\nCVJhbmRvbQ== 99691\nb2hvbg== 99692\nSXNOdWxs 99693\nIFZhbGlkYXRpb25SZXN1bHQ= 99694\n44Oa 99695\ndW1iZWQ= 99696\ncHB2 99697\nIGFycA== 99698\naWNoaWNr 99699\nX3Jubg== 99700\nIFRGVA== 99701\nVGV4SW1hZ2U= 99702\nIk9u 99703\nIFNhbXBsZXI= 99704\ndG9wbA== 99705\nIGphbmU= 99706\neWxpbmc= 99707\nIFVOSUNPREU= 99708\nVGFiSW5kZXg= 99709\nPHsK 99710\nc3VzcGVuZA== 99711\ndXZpYW4= 99712\nLGFwcGxpY2F0aW9u 99713\n0L7Qu9C40YfQtdGB0YLQstC+ 99714\neWF0 99715\nZXppZXI= 99716\nIENIVU5L 99717\nIEFkbGVy 99718\nL0FkZA== 99719\nIEtleVZhbHVl 99720\nIHNwb3PDs2I= 99721\nU2FtcGxpbmc= 99722\nY2hlcnM= 99723\nX0FNRA== 99724\nUnU= 99725\nLk11c3RDb21waWxl 99726\nTmF0aW9u 99727\nQXNzb2M= 99728\nTWFuYWdpbmc= 99729\nIEVuZ2w= 99730\nX0dC 99731\nIHN1Y2NpbmN0 99732\nIGRpc2xpa2Vk 99733\nIElrZQ== 99734\nQnVsbGV0aW4= 99735\nX0FSQ0hJVkU= 99736\nUHJvcG9zYWw= 99737\nIGpvZ2dpbmc= 99738\nLkNSRUFURUQ= 99739\nIGNob2w= 99740\n6KOF 99741\njKg= 99742\nLXB1c2g= 99743\nIHJlc2VydmE= 99744\nY29yZXY= 99745\nw6h0cmU= 99746\nVEhS 99747\nIGluY29tcGV0ZW5jZQ== 99748\nIGNoYXJpc21h 99749\n5oSf 99750\nICI9PQ== 99751\nQlRO 99752\nIExvY2F0b3I= 99753\naXZldA== 99754\nKCcuJykK 99755\nIGZvckluZGV4UGF0aA== 99756\nw7RtZQ== 99757\nIGNhcGFjaXQ= 99758\nd2F0ZXJz 99759\nIFdST05H 99760\naG9h 99761\nIE1JUFM= 99762\nIGVtaXNz 99763\nIEphY3F1ZWxpbmU= 99764\nKGNtcA== 99765\nIGVlbnM= 99766\nTGVv 99767\nLnRpbWluZw== 99768\nQ0xVU0lPTg== 99769\nICgiLQ== 99770\n5ZOI 99771\nLmtvZGU= 99772\nIFVuZGVydA== 99773\nIGJld2lsZA== 99774\nIEVzc2Vu 99775\nLmhk 99776\nIHJlbmVnb3Q= 99777\nIG1vd2Vy 99778\nIGxzcA== 99779\nIHBlbmNoYW50 99780\nIG1hbm9l 99781\nIGFnbGk= 99782\nIHJlY2Fs 99783\nIE9QRVJBVElPTg== 99784\nKF4pKA== 99785\nIM69 99786\nIFNjb3BlZA== 99787\nIEAiCg== 99788\nPWxhYmVs 99789\nW2xvYw== 99790\nSW50bA== 99791\nIE56 99792\ndGFibGV0 99793\nLkNvbHVtbk5hbWU= 99794\nIHNjcmVlblNpemU= 99795\nREJ1cw== 99796\nY29va2Vk 99797\nLXJlZ2lzdHJhdGlvbg== 99798\n4oCcT25l 99799\nLW5vbg== 99800\nIHdpxJlj 99801\nIGNvc3Rh 99802\nLmFkZFRhYg== 99803\nLmNvbmRpdGlvbnM= 99804\nIEhlc3M= 99805\nTUVNT1JZ 99806\nIEF2YWxhbmNoZQ== 99807\nKCl9fQo= 99808\nIHRyaXBsZXQ= 99809\nIGxhYnlyaW50aA== 99810\nIE5vZGVMaXN0 99811\nIE5ZVA== 99812\nIHllbmk= 99813\nZGZm 99814\nLkh0bWxDb250cm9scw== 99815\nQVZJUw== 99816\nL01hdGg= 99817\nIG1lbWNtcA== 99818\n2KfYoQ== 99819\n0L7RgdGM 99820\nY3JhcA== 99821\nKHBhZ2Vz 99822\nIGx4bWw= 99823\nIFFEYXRlVGltZQ== 99824\nX3RjYg== 99825\nIG9wZW5pZA== 99826\nIHN5bmFwdGlj 99827\nIE1ETUE= 99828\nKHNsdWc= 99829\naWdtYXRpYw== 99830\nZW5vcg== 99831\nIGNyYW1wZWQ= 99832\nR09Q 99833\nrZA= 99834\nLmlzRmlsZQ== 99835\nIERpZmZlcmVudGlhbA== 99836\nID0iIjsK 99837\nCQkJICAgIAk= 99838\nIENvb2tl 99839\nCVVGVU5DVElPTg== 99840\nIHBlcnNldmVyYW5jZQ== 99841\nUmVsYXRpdmVMYXlvdXQ= 99842\nSU1QT1JUQU5U 99843\nIGV4b24= 99844\nINC+0L0= 99845\naWJhc2U= 99846\nKENPTlQ= 99847\nbm92YXRpb24= 99848\n5L2V 99849\nW3N1Yg== 99850\nQWRtaW5Db250cm9sbGVy 99851\nSFRUUEhlYWRlcg== 99852\nY3JlYXI= 99853\nIE5JUg== 99854\nIERyb3BEb3duTGlzdA== 99855\nIHZhbGlkZQ== 99856\nIGRlaHlkcmF0aW9u 99857\nLidd 99858\nKFdJTg== 99859\nIC4uLlw= 99860\nIHBob3Rvc2hvcA== 99861\nCUluaXQ= 99862\nX2NvdQ== 99863\nIHRpbWVab25l 99864\nZGFyd2lu 99865\ncm9tYXRpYw== 99866\nTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZExpc3RlbmVy 99867\nYnJhdGVz 99868\nXS0tOwo= 99869\nIHRyYWdlZGllcw== 99870\nIFBlZGlhdHJpY3M= 99871\nU01BUlQ= 99872\nLUFQSQ== 99873\nIE1lc3NhZ2VMb29rdXA= 99874\nCXZv 99875\nIHByZWp1ZGljZXM= 99876\nIG1B 99877\nVXBz 99878\nIE1JU1NJTkc= 99879\nCWFk 99880\nQ3JlYW0= 99881\nIFRi 99882\nIE1vbmE= 99883\nX2dob3N0 99884\nCXR5cGVz 99885\nRW1i 99886\nIERvY3VtZW50YXJ5 99887\nJyk7CgoKCg== 99888\nIGx1cA== 99889\nX1JlZmVyZW5jZQ== 99890\nIEJBVENI 99891\nIGludGVydHdpbmVk 99892\nPENlbGw= 99893\nIENhYnI= 99894\nbmF0aW9u 99895\nIGlzQ29ubmVjdGVk 99896\nLnJlbW92ZUxpc3RlbmVy 99897\nIGNvbmc= 99898\nX3Rp 99899\nIFNpbGljb25l 99900\nIOqysOqzvA== 99901\nIFdBTg== 99902\nIEdpYnJhbHRhcg== 99903\nL3Jlc3BvbnNl 99904\nCXBlcnNvbg== 99905\nY2hhbnRz 99906\nVklQ 99907\nZW1lcmdlbmN5 99908\nUGl4ZWxGb3JtYXQ= 99909\nLUFt 99910\nIHNvdXRod2VzdGVybg== 99911\nX3BsbA== 99912\naWZlcnM= 99913\nX09OQ0U= 99914\nIEZheWV0dGU= 99915\nLm5jYmk= 99916\nX1BhbmVs 99917\nLlF1YWw= 99918\nIHBvbHlz 99919\nIGNyZWF0ZVN0YWNrTmF2aWdhdG9y 99920\n77+9dA== 99921\nIGxheW9mZnM= 99922\nIEJsYW5jbw== 99923\nRmVhdA== 99924\nIFZpbWVv 99925\nX2NoaQ== 99926\nX2xpZmV0aW1l 99927\nUE9JTlRT 99928\nLHByaXZhdGU= 99929\nIHVuYmVhcmFibGU= 99930\ncHJpbnRpbmc= 99931\nIGNnaQ== 99932\nLkJBQ0s= 99933\nIGludGVybnM= 99934\nIE5ld2x5 99935\naW5mZWxk 99936\nKElC 99937\nIEthdGE= 99938\nIERlZmVuZGFudHM= 99939\nVGhy 99940\n6aKE 99941\nX1ZG 99942\nRkZGRkZGRkY= 99943\nIGRhdmlkamw= 99944\nIGJpdHRlcmx5 99945\nU3VnZ2VzdGlvbnM= 99946\nLnNldENhbmNlbGFibGU= 99947\nRklOQUw= 99948\nYXNvbnM= 99949\nX3J3bG9jaw== 99950\nX1dSQVBQRVI= 99951\nIGhhcHBpZXN0 99952\nKHJvd0luZGV4 99953\nw7NzaXRv 99954\nVE9UWVBF 99955\nQXV0b21hdGlvbg== 99956\nTG9nRmlsZQ== 99957\nIGNvbnNvbGF0aW9u 99958\n44OA 99959\nIHTDqm0= 99960\nIHByZXI= 99961\ncmd5eg== 99962\nIEdlZw== 99963\nCWR0bw== 99964\nLmRlZmF1bHRWYWx1ZQ== 99965\nIEthbWk= 99966\nIEFTRQ== 99967\nb3B0aW1pemVk 99968\nIO2PrA== 99969\nIG9yaWdpbmF0ZXM= 99970\nZXJyTXNn 99971\nIGVzcGHDp28= 99972\nKFNZUw== 99973\nIE1jQg== 99974\nZGFuY2U= 99975\nX2RldGVjdGVk 99976\nIGZyw7w= 99977\nCQkgICAgCQk= 99978\nPERhdGU= 99979\nKGNvbWI= 99980\nIERlY2lkZQ== 99981\nXEZpZWxk 99982\nIFByb3Bvc2Vk 99983\nUmli 99984\nIGRpc2xpa2Vz 99985\nIFdpZW4= 99986\nCURvY3VtZW50 99987\nIHRyYWY= 99988\nIHN0b3JpYQ== 99989\nIFRlbGxz 99990\nJyk9PQ== 99991\nQ3Jp 99992\nKFZBTFVF 99993\nIEJ1cm5ldHQ= 99994\nLHZvaWQ= 99995\nIGRhbmg= 99996\nIGNjcA== 99997\nQmxvY2tjaGFpbg== 99998\nOiItImAK 99999\nSUNsaWVudA== 100000\nSVNPREU= 100001\nSXNzdWVy 100002\nKX0NCg== 100003\nLGJ1dA== 100004\nIFVwaA== 100005\nKFN1Yg== 100006\nIHTDqWzDqXBob25l 100007\nIG9uRGF0YUNoYW5nZQ== 100008\nIG1hcnNoYWxsZXI= 100009\nLWFuYWx5dGljcw== 100010\nLGNvbnRlbnQ= 100011\nIGRlYmFjbGU= 100012\nX1ZhbHVlQ2hhbmdlZA== 100013\nIGZhdW5h 100014\nICM9Pg== 100015\nIGZveWVy 100016\nJ3V0aWxpc2F0aW9u 100017\nIE3DvGxsZXI= 100018\nIEZldGlzaA== 100019\nIGRlZmF1bHRNYW5hZ2Vy 100020\nIGJhY2t0cmFjaw== 100021\nQmFo 100022\nRXhwbGljaXQ= 100023\nX0FTQ0lJ 100024\nIG1BY3Rpdml0eQ== 100025\nKE1zZw== 100026\nIOqyjA== 100027\nIFRFUk1T 100028\nIEFuZ2ll 100029\nSFNW 100030\nIE1vc3F1ZQ== 100031\nLk5hbWVz 100032\n7Yq8 100033\ncmVzdGU= 100034\nX3Bhcm1z 100035\nIGdhcGluZw== 100036\nIGNyb3BwaW5n 100037\nRGF0YUZyYW1l 100038\nIHJlc3BvbnNpdmVuZXNz 100039\nX3VuZG8= 100040\nX3RyYW4= 100041\nLnRlcm1pbmF0ZQ== 100042\nIGl0YWxpYW5l 100043\nIHdhbGt0aHJvdWdo 100044\nIGF0dHJhY3RpdmVuZXNz 100045\n0LTQtQ== 100046\nX1NUUw== 100047\nX2xlYXJu 100048\nIGNob2NvbGF0ZXM= 100049\naWVyYXJjaGljYWw= 100050\nLXRoaW5raW5n 100051\nICkpKQ== 100052\naXNobWVudHM= 100053\nLkxvZ2Y= 100054\nIFRNWg== 100055\nIENhbmFyeQ== 100056\nZm9pbA== 100057\nIFZhY2NpbmU= 100058\nLnZ4 100059\nIFN1cnJvdW5k 100060\nSW50ZXJtZWRpYXRl 100061\nIGlvdg== 100062\ndmFpcw== 100063\nJzsiOwo= 100064\n772eCgo= 100065\n6YCB5paZ 100066\n4oCmaXQ= 100067\nU2VhdHM= 100068\nQ2xhcg== 100069\nV2Fycw== 100070\nIEh1dGNoaW5zb24= 100071\nIEhhc2Fu 100072\nIScpCgo= 100073\nIFJpY2hpZQ== 100074\nY2hlaWRlbg== 100075\nKCQoJw== 100076\nWW9yaw== 100077\nIGxpZHM= 100078\nIGFscGhhbnVtZXJpYw== 100079\nIEdsb2Nr 100080\nLnNoYXBlcw== 100081\nIHNwYXJraW5n 100082\nX2Vwc2lsb24= 100083\ndXBsaWNhdGVk 100084\nLmRpcnR5 100085\nXSk9PQ== 100086\nIOychOy5mA== 100087\nIHNjbg== 100088\nIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 100089\nX1BSRVZJRVc= 100090\nX0hD 100091\naWVsZGluZw== 100092\nZmdldHM= 100093\nIEFkZGlzb24= 100094\nIHByb2R1Y3RTZXJ2aWNl 100095\nLWZpZ3VyZQ== 100096\nKHJldHZhbA== 100097\nemFubw== 100098\nIGF1dG9i 100099\nCXNk 100100\nX251bWVy 100101\nIFNldExhc3RFcnJvcg== 100102\nIEZpb3I= 100103\naWZpY2FuY2U= 100104\nVW50aXRsZWQ= 100105\nIGluZmllbGQ= 100106\nIHt9KSk7Cg== 100107\nIHNwYWM= 100108\nIHJvb2tpZXM= 100109\nKGRlc2NyaWJpbmc= 100110\nbmdlbg== 100111\n4K6/4K4= 100112\nLnJkZg== 100113\nLk11dGV4 100114\nIGtuZWVsaW5n 100115\nIFFF 100116\nc2V0TWF4 100117\nUmVhZFN0cmVhbQ== 100118\nIHZlbnRhcw== 100119\nc3V0 100120\nY21wZXE= 100121\nLldyaXRlQWxsVGV4dA== 100122\nIEV4cGVyaWVuY2Vk 100123\nJF9f 100124\nIGthdW0= 100125\nIExJUw== 100126\nIGRvY3VtZW50b3M= 100127\nX0hFQUxUSA== 100128\naWNvbnRhaW5z 100129\nIGFydGlzYW5z 100130\nT1dORVI= 100131\nIGJsaW5rZWQ= 100132\nZ2V0RGlzcGxheQ== 100133\nIHRvZW4= 100134\nIHJvd051bQ== 100135\nIGF2cmls 100136\nIGludmlz 100137\nIEtlYXI= 100138\ndG9CZUluVGhlRG9jdW1lbnQ= 100139\nYXB1cg== 100140\nIHJhY2tlZA== 100141\nIE1jTWFzdGVy 100142\nX0FUVFJJQg== 100143\nSGF6 100144\nIGZhY3R1cmE= 100145\nL3Rz 100146\nINGA0LDQt9C80LXRgA== 100147\nIHpm 100148\nIHNob3J0ZmFsbA== 100149\nLmZhc3Rh 100150\nIENPTlNUQU5U 100151\nLm1hbmFnZWQ= 100152\nZ2Vtcw== 100153\nU2hhcmVkUG9pbnRlcg== 100154\nIGJsdXJyeQ== 100155\nYnJpZ2h0bmVzcw== 100156\nKGNvbXBvbmVudHM= 100157\nIC4uLiIKCg== 100158\nU0VMTA== 100159\nIElsbHVzdHJhdG9y 100160\nLmdldENoYW5uZWw= 100161\nIHRyb3V2w6k= 100162\neXN0ZXJz 100163\nIHZvaXM= 100164\nIExpbmRlbg== 100165\nIGVtb2ppcw== 100166\nIGJyYXds 100167\nIE1TUg== 100168\nIEVsbw== 100169\nIENyb2F0aWFu 100170\nUG9wdXBNZW51 100171\nTGV3aXM= 100172\nLkpXVA== 100173\nIGFzdG9uaXNoZWQ= 100174\nQnVzaA== 100175\nKGl0ZW1JZA== 100176\nIGRldGFjaG1lbnQ= 100177\nIEVuY29yZQ== 100178\n5bCU 100179\nIHJla2w= 100180\nIGNyYW0= 100181\nKSQv 100182\nLmdldEhvc3Q= 100183\nX3JlY29tbWVuZA== 100184\nLUhU 100185\nX2NhbGlicmF0aW9u 100186\nQXV0aGVudGljYXRl 100187\nLmZpcmViYXNlYXBw 100188\nVU5JWA== 100189\nCUNhbWVyYQ== 100190\nIEhFQVA= 100191\nSWRlYWw= 100192\nLm9mZmljZQ== 100193\nIGdvb2Z5 100194\nKFN5bWJvbA== 100195\nIGpvdWVy 100196\nX3BhcnRpdGlvbnM= 100197\nIHJhcGlkZW1lbnQ= 100198\nIEdOVU5FVA== 100199\naWRVc2Vy 100200\nIHN1cGVydmlzZQ== 100201\nKENvbnRhY3Q= 100202\nQVdO 100203\n44GY 100204\nIG5hYW0= 100205\nIGF1c3Q= 100206\n5Zyo57q/ 100207\nX3NvZnRtYXg= 100208\nQWxsb3dBbm9ueW1vdXM= 100209\nYW1tYWJsZQ== 100210\nUk9VVEU= 100211\nKkQ= 100212\nIGFkZW4= 100213\nIENyaXN0aW5h 100214\nIENyaXN0aWFubw== 100215\nIGJsb29kc3RyZWFt 100216\nc3ViY2xhc3M= 100217\nX3BlcnNvbmE= 100218\nQ0hJTEQ= 100219\nLWtub3c= 100220\nIG5hdmlnYXRpb25PcHRpb25z 100221\nIFp1a3VuZnQ= 100222\nIFBpeGFy 100223\nVHlsZXI= 100224\nIHVuZGVyd29ybGQ= 100225\nIHNpbmNlcml0eQ== 100226\nIGRpc3BlbnNlcg== 100227\nIGt0ZXI= 100228\naWRkZXJz 100229\nLmFkZE5vZGU= 100230\nLWNoZWNrZWQ= 100231\nIGtleXN0 100232\nIFdUTw== 100233\nLnNpZ25hbHM= 100234\nIGFkdmVudHVyZXI= 100235\nIFBhbmc= 100236\nXFI= 100237\nPXBvcw== 100238\nIGRpc3BlbnNhcmllcw== 100239\nIENsb3NldA== 100240\nKCJ7XCI= 100241\naWRlb24= 100242\nIG7DqWNlc3NhaXJl 100243\nKCkiCg== 100244\nX1JFQ0VJVkVE 100245\nIHLDqXN1bHRhdHM= 100246\nIG1vZGVu 100247\nIEljZWxhbmRpYw== 100248\nO2Q= 100249\nLmFsbG93ZWQ= 100250\nKG5ld1VzZXI= 100251\nIG1lcmNpbGVzcw== 100252\nLldhaXRGb3I= 100253\nIGRheWNhcmU= 100254\nIENvbnZleW9y 100255\n"
  },
  {
    "path": "src/backend/bisheng/api/services/utils.py",
    "content": "from bisheng.template.field.base import TemplateField\nfrom bisheng.template.template.base import Template\nfrom pydantic import BaseModel\nfrom langchain_core.language_models import BaseLanguageModel\n\n\ndef set_flow_knowledge_id(graph_data: dict, knowledge_id: int):\n\n    for node in graph_data['nodes']:\n        if 'VectorStore' in node['data']['node']['base_classes']:\n            if 'collection_name' in node['data'].get('node').get('template').keys():\n                node['data']['node']['template']['collection_name']['collection_id'] = knowledge_id\n            if 'index_name' in node['data'].get('node').get('template').keys():\n                node['data']['node']['template']['index_name']['collection_id'] = knowledge_id\n    return graph_data\n\n\ndef replace_flow_llm(graph_data: dict, llm: BaseLanguageModel, llm_param: dict):\n    # Ganticlass, Gantitemplate， Others do not move.\n    for node in graph_data['nodes']:\n        if 'BaseLanguageModel' in node['data']['node']['base_classes']:\n            node['data']['type'] = type(llm).__name__\n            node['data']['node']['template'] = trans_obj_to_json(llm, llm_param)\n\n    return graph_data\n\n\ndef trans_obj_to_json(obj: BaseModel, llm_param: dict):\n    # template Build.\n    template = []\n    field_json = obj.__dict__\n    for k, v in field_json.items():\n        if k in llm_param:\n            template.append(\n                TemplateField(field_type=type(v).__name__, name=k,\n                              value=llm_param.get(k)).to_dict())\n    return Template(type_name=type(obj).__name__, fields=template).to_dict()\n"
  },
  {
    "path": "src/backend/bisheng/api/services/workflow.py",
    "content": "from datetime import datetime\nfrom typing import Dict, Optional\n\nfrom fastapi.encoders import jsonable_encoder\nfrom langchain.memory import ConversationBufferWindowMemory\n\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.v1.schema.workflow import WorkflowEvent, WorkflowEventType, WorkflowInputSchema, WorkflowInputItem, \\\n    WorkflowOutputSchema\nfrom bisheng.api.v1.schemas import ChatResponse\nfrom bisheng.chat.utils import SourceType\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.flow import WorkFlowInitError\nfrom bisheng.common.errcode.http_error import NotFoundError, UnAuthorizedError\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao, FlowStatus, FlowType, Flow\nfrom bisheng.database.models.flow import UserLinkType\nfrom bisheng.database.models.flow_version import FlowVersionDao\nfrom bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum\nfrom bisheng.database.models.role_access import AccessType, RoleAccessDao\nfrom bisheng.database.models.tag import TagDao\nfrom bisheng.database.models.user_link import UserLinkDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import generate_uuid\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.common.node import BaseNodeData, NodeType\nfrom bisheng.workflow.graph.graph_state import GraphState\nfrom bisheng.workflow.graph.workflow import Workflow\nfrom bisheng.workflow.nodes.node_manage import NodeFactory\n\n\nclass WorkFlowService(BaseService):\n\n    @classmethod\n    def add_extra_field(cls, user: UserPayload, data: list[dict], managed: bool = False) -> list[dict]:\n        \"\"\" Add some extra fields for app list \"\"\"\n        # ApplicationsIDVertical\n        resource_ids = []\n        # Skill Creation User'sIDVertical\n        user_ids = []\n        for one in data:\n            one['id'] = one['id']\n            resource_ids.append(one['id'])\n            user_ids.append(one['user_id'])\n        # Get user information in the list\n        user_infos = UserDao.get_user_by_ids(user_ids)\n        user_dict = {one.user_id: one.user_name for one in user_infos}\n\n        # Get version information in the list\n        version_infos = FlowVersionDao.get_list_by_flow_ids(resource_ids)\n        flow_versions = {}\n        for one in version_infos:\n            if one.flow_id not in flow_versions:\n                flow_versions[one.flow_id] = []\n            flow_versions[one.flow_id].append(jsonable_encoder(one))\n\n        resource_groups = GroupResourceDao.get_resources_group(None, resource_ids)\n        resource_group_dict = {}\n        for one in resource_groups:\n            if one.third_id not in resource_group_dict:\n                resource_group_dict[one.third_id] = []\n            resource_group_dict[one.third_id].append(one.group_id)\n\n        resource_tag_dict = TagDao.get_tags_by_resource(None, resource_ids)\n\n        # Add additional information\n        for one in data:\n            access_type = AccessType.FLOW_WRITE\n            if one['flow_type'] == FlowType.WORKFLOW.value:\n                access_type = AccessType.WORKFLOW_WRITE\n            elif one['flow_type'] == FlowType.ASSISTANT.value:\n                access_type = AccessType.ASSISTANT_WRITE\n\n            one['user_name'] = user_dict.get(one['user_id'], one['user_id'])\n            one['write'] = True if managed else user.access_check(one['user_id'], one['id'], access_type)\n            one['version_list'] = flow_versions.get(one['id'], [])\n            one['group_ids'] = resource_group_dict.get(one['id'], [])\n            one['tags'] = resource_tag_dict.get(one['id'], [])\n            one['logo'] = cls.get_logo_share_link(one['logo'])\n        return data\n\n    @classmethod\n    def get_all_flows(cls, user: UserPayload, name: str, status: int, tag_id: Optional[int], flow_type: Optional[int],\n                      page: int = 1, page_size: int = 10, managed: bool = False) -> (list[dict], int):\n        \"\"\"\n        Get all the skills\n        \"\"\"\n        # SetujutagDapatkanidVertical\n        flow_ids = []\n        if tag_id:\n            ret = TagDao.get_resources_by_tags_batch([tag_id], [ResourceTypeEnum.FLOW, ResourceTypeEnum.WORK_FLOW,\n                                                                ResourceTypeEnum.ASSISTANT])\n            if not ret:\n                return [], 0\n            flow_ids = [one.resource_id for one in ret]\n\n        # Get a list of skills visible to the user\n        if user.is_admin():\n            data, total = FlowDao.get_all_apps(name, status, flow_ids, flow_type, None, None, None, page, page_size)\n        else:\n            access_list = [AccessType.FLOW, AccessType.WORKFLOW, AccessType.ASSISTANT_READ]\n            if managed:\n                access_list = [AccessType.FLOW_WRITE, AccessType.WORKFLOW_WRITE, AccessType.ASSISTANT_WRITE]\n            flow_id_extra = user.get_user_access_resource_ids(access_list)\n            data, total = FlowDao.get_all_apps(name, status, flow_ids, flow_type, user.user_id, flow_id_extra, None,\n                                               page, page_size)\n        data = cls.add_extra_field(user, data, managed)\n\n        return data, total\n\n    @classmethod\n    def run_once(cls, login_user: UserPayload, node_input: Dict[str, any], node_data: Dict[any, any], workflow_id: str):\n        workflow_info = FlowDao.get_flow_by_id(workflow_id)\n        if not workflow_info:\n            raise NotFoundError()\n\n        node_data = BaseNodeData(**node_data.get('data', {}))\n        base_callback = BaseCallback()\n        graph_state = GraphState()\n        graph_state.history_memory = ConversationBufferWindowMemory(k=10)\n        node = NodeFactory.instance_node(node_type=node_data.type,\n                                         node_data=node_data,\n                                         user_id=login_user.user_id,\n                                         workflow_id=workflow_info.id,\n                                         workflow_name=workflow_info.name,\n                                         graph_state=graph_state,\n                                         target_edges=None,\n                                         max_steps=233,\n                                         callback=base_callback)\n        if node_data.type == NodeType.CODE.value:\n            node.handle_input({\n                'code_input': [\n                    {\n                        'key': k,\n                        'value': v,\n                        'type': 'input'\n                    } for k, v in node_input.items()\n                ]\n            })\n        elif node_data.type == NodeType.TOOL.value:\n            user_input = {}\n            for k, v in node_input.items():\n                user_input[k] = v\n            node.handle_input(user_input)\n        else:\n            for key, val in node_input.items():\n                graph_state.set_variable_by_str(key, val)\n\n        exec_id = generate_uuid()\n        result = node._run(exec_id)\n        log_data = node.parse_log(exec_id, result)\n        res = []\n        for one_batch in log_data:\n            ret = []\n            for one in one_batch:\n                if node_data.type == NodeType.QA_RETRIEVER.value and one['key'] != 'retrieved_result':\n                    continue\n                if node_data.type == NodeType.RAG.value and one['key'] != 'retrieved_result' and one[\n                    'type'] != 'variable':\n                    continue\n                if node_data.type == NodeType.LLM.value and one['type'] != 'variable':\n                    continue\n                if node_data.type == NodeType.AGENT.value and one['type'] not in ['tool', 'variable']:\n                    continue\n                if node_data.type == NodeType.CODE.value and one['key'] != 'code_output':\n                    continue\n                if node_data.type == NodeType.TOOL.value and one['key'] != 'output':\n                    continue\n                ret.append({\n                    'key': one['key'],\n                    'value': one['value'],\n                    'type': one['type']\n                })\n            res.append(ret)\n        return res\n\n    @classmethod\n    async def update_flow_status(cls, login_user: UserPayload, flow_id: str, version_id: int, status: int):\n        \"\"\"\n        Modify workflow status, Also modify the current version of the workflow\n        \"\"\"\n        db_flow = await FlowDao.aget_flow_by_id(flow_id)\n        if not db_flow:\n            raise NotFoundError()\n        if not await login_user.async_access_check(db_flow.user_id, flow_id, AccessType.WORKFLOW_WRITE):\n            raise UnAuthorizedError()\n\n        version_info = await FlowVersionDao.aget_version_by_id(version_id)\n        if not version_info or version_info.flow_id != flow_id:\n            raise NotFoundError()\n        if status == FlowStatus.ONLINE.value:\n            # workflowInitialization check for\n            try:\n                _ = Workflow(flow_id, db_flow.name, login_user.user_id, version_info.data, False,\n                             10,\n                             10,\n                             None)\n            except Exception as e:\n                raise WorkFlowInitError(msg=str(e))\n\n            await FlowVersionDao.change_current_version(flow_id, version_info)\n        db_flow.status = status\n        await FlowDao.aupdate_flow(db_flow)\n        await telemetry_service.log_event(\n            user_id=login_user.user_id,\n            event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n            trace_id=trace_id_var.get()\n        )\n        return\n\n    @classmethod\n    def convert_chat_response_to_workflow_event(cls, chat_response: ChatResponse) -> WorkflowEvent:\n        workflow_event = WorkflowEvent(\n            event=chat_response.category,\n            message_id=chat_response.message_id,\n            status='end',\n            node_id=chat_response.message.get('node_id'),\n            node_name=chat_response.message.get('name'),\n            node_execution_id=chat_response.message.get('unique_id'),\n        )\n        match workflow_event.event:\n            case WorkflowEventType.UserInput.value:\n                return cls.convert_user_input_event(chat_response, workflow_event)\n            case WorkflowEventType.GuideWord.value:\n                workflow_event.output_schema = WorkflowOutputSchema(\n                    message=chat_response.message.get('guide_word')\n                )\n            case WorkflowEventType.GuideQuestion.value:\n                workflow_event.output_schema = WorkflowOutputSchema(\n                    message=chat_response.message.get('guide_question')\n                )\n            case WorkflowEventType.OutputMsg.value:\n                return cls.convert_output_event(chat_response, workflow_event)\n            case WorkflowEventType.OutputWithChoose.value:\n                return cls.convert_output_choose_event(chat_response, workflow_event)\n            case WorkflowEventType.OutputWithInput.value:\n                return cls.convert_output_input_event(chat_response, workflow_event)\n            case WorkflowEventType.StreamMsg.value:\n                workflow_event.status = chat_response.type\n                workflow_event.output_schema = WorkflowOutputSchema(\n                    message=chat_response.message.get('msg'),\n                    reasoning_content=chat_response.message.get('reasoning_content'),\n                    output_key=chat_response.message.get('output_key'),\n                )\n                cls.handle_source(chat_response, workflow_event)\n            case WorkflowEventType.Error.value:\n                workflow_event.event = WorkflowEventType.Close.value\n                workflow_event.output_schema = WorkflowOutputSchema(\n                    message=chat_response.message\n                )\n\n        return workflow_event\n\n    @classmethod\n    def handle_source(cls, chat_response: ChatResponse, workflow_event: WorkflowEvent):\n        if chat_response.source == SourceType.FILE.value:\n            workflow_event.output_schema.source_url = f'resouce/{chat_response.chat_id}/{chat_response.message_id}'\n        elif chat_response.source in [SourceType.LINK.value, SourceType.QA.value]:\n            workflow_event.output_schema.extra = chat_response.extra\n\n    @classmethod\n    def convert_user_input_event(cls, chat_response: ChatResponse, workflow_event: WorkflowEvent) -> WorkflowEvent:\n        event_input_schema = chat_response.message.get('input_schema')\n        input_schema = WorkflowInputSchema(\n            input_type=event_input_schema.get('tab'),\n        )\n        if input_schema.input_type == 'form_input':\n            # Front-end form definitions go to back-end form definitions\n            input_schema.value = [WorkflowInputItem(**one) for one in event_input_schema.get('value', [])]\n            for one in input_schema.value:\n                one.label = one.value\n                one.value = ''\n        else:\n            # Description is input box input\n            input_schema.value = [\n                WorkflowInputItem(\n                    key=event_input_schema.get('key'),\n                    type='text',\n                    required=True,\n                    value=''\n                )\n            ]\n            for one in event_input_schema.get('value', []):\n                tmp = WorkflowInputItem(**one)\n                if tmp.key == 'dialog_files_content':\n                    tmp.type = 'dialog_file'\n                    tmp.value = []\n                elif tmp.key == 'dialog_file_accept':\n                    tmp.type = 'dialog_file_accept'\n                input_schema.value.append(tmp)\n        workflow_event.input_schema = input_schema\n        return workflow_event\n\n    @classmethod\n    def convert_output_event(cls, chat_response: ChatResponse, workflow_event: WorkflowEvent) -> WorkflowEvent:\n        workflow_event.output_schema = WorkflowOutputSchema(\n            message=chat_response.message.get('msg'),\n            files=chat_response.files,\n            output_key=chat_response.message.get('output_key')\n        )\n        cls.handle_source(chat_response, workflow_event)\n        return workflow_event\n\n    @classmethod\n    def convert_output_input_event(cls, chat_response: ChatResponse, workflow_event: WorkflowEvent) -> WorkflowEvent:\n        workflow_event = cls.convert_output_event(chat_response, workflow_event)\n        workflow_event.input_schema = WorkflowInputSchema(\n            input_type='message_inline_input',\n            value=[WorkflowInputItem(\n                key=chat_response.message.get('key'),\n                type='text',\n                required=True,\n                value=chat_response.message.get('input_msg', '')\n            )]\n        )\n        return workflow_event\n\n    @classmethod\n    def convert_output_choose_event(cls, chat_response: ChatResponse, workflow_event: WorkflowEvent) -> WorkflowEvent:\n        workflow_event = cls.convert_output_event(chat_response, workflow_event)\n        workflow_event.input_schema = WorkflowInputSchema(\n            input_type='message_inline_option',\n            value=[WorkflowInputItem(\n                key=chat_response.message.get('key'),\n                type='select',\n                required=True,\n                value='',\n                options=chat_response.message.get('options', [])\n            )]\n        )\n        return workflow_event\n\n    @classmethod\n    def get_frequently_used_flows(cls, user: UserPayload, user_link_type: str,\n                                  page: int = 1,\n                                  page_size: int = 8) -> (list[dict], int):\n        \"\"\"\n        Get common skills\n        \"\"\"\n        # Setujuuser_idAndtagDapatkanidlist and keep pressingcreate_timeAscending order\n        flow_ids = []\n        user_link_order = {}  # Record the order of each app in the common list of users\n\n        ret = UserLinkDao.get_user_link(user.user_id, [app_type.value for app_type in UserLinkType.app.value])\n        if not ret:\n            return [], 0\n\n        # Save original order andflow_ids\n        for index, user_link in enumerate(ret):\n            flow_ids.append(user_link.type_detail)\n            user_link_order[user_link.type_detail] = index\n\n        # Get a list of skills visible to the user (no pagination as we need to sort manually)\n        if user.is_admin():\n            data, _ = FlowDao.get_all_apps(status=FlowStatus.ONLINE.value, id_list=flow_ids, page=0, limit=0)\n        else:\n            flow_id_extra = user.get_user_access_resource_ids(\n                [AccessType.FLOW, AccessType.WORKFLOW, AccessType.ASSISTANT_READ])\n            data, _ = FlowDao.get_all_apps(status=FlowStatus.ONLINE.value, id_list=flow_ids, user_id=user.user_id,\n                                           id_extra=flow_id_extra, page=0, limit=0)\n\n        # Reorder users in the order they are added to the stock\n        data.sort(key=lambda x: user_link_order.get(x['id'], float('inf')))\n\n        # Manual pagination\n        total = len(data)\n        start_index = (page - 1) * page_size\n        end_index = start_index + page_size\n        data = data[start_index:end_index]\n\n        data = cls.add_extra_field(user, data)\n\n        return data, total\n\n    @classmethod\n    def delete_frequently_used_flows(cls, user: UserPayload, user_link_type: str, type_detail: str):\n        UserLinkDao.delete_user_link(user.user_id, user_link_type, type_detail)\n        return True\n\n    @classmethod\n    def add_frequently_used_flows(cls, user: UserPayload, user_link_type: str, type_detail: str):\n        user_link, is_new = UserLinkDao.add_user_link(user.user_id, user_link_type, type_detail)\n        return is_new\n\n    @classmethod\n    def get_uncategorized_flows(cls, user: UserPayload, page: int = 1, page_size: int = 8) -> tuple[list, int]:\n        \"\"\"\n        Get a list of unsorted skills\n        \"\"\"\n        # SetujutagDapatkanidVertical\n        all_tags = TagDao.search_tags(None, None, None)\n        tag_id = [tag.id for tag in all_tags]\n        flow_ids_not_in = []\n        if tag_id:\n            ret = TagDao.get_resources_by_tags_batch(tag_id, [ResourceTypeEnum.FLOW, ResourceTypeEnum.WORK_FLOW,\n                                                              ResourceTypeEnum.ASSISTANT])\n            if not ret:\n                return [], 0\n            flow_ids_not_in = [one.resource_id for one in ret]\n\n        # Get a list of skills visible to the user\n        if user.is_admin():\n            data, total = FlowDao.get_all_apps(None, FlowStatus.ONLINE.value, None, None, None, None, flow_ids_not_in,\n                                               page, page_size)\n        else:\n            user_role = UserRoleDao.get_user_roles(user.user_id)\n            role_ids = [role.role_id for role in user_role]\n            role_access = RoleAccessDao.get_role_access_batch(role_ids, [AccessType.FLOW, AccessType.WORKFLOW,\n                                                                         AccessType.ASSISTANT_READ])\n            flow_id_extra = []\n            if role_access:\n                flow_id_extra = [access.third_id for access in role_access]\n            data, total = FlowDao.get_all_apps(None, FlowStatus.ONLINE.value, None, None, user.user_id, flow_id_extra,\n                                               flow_ids_not_in, page,\n                                               page_size)\n\n        # <g id=\"Bold\">Medical Treatment:</g>logo URL, convert relative paths to full accessible links\n        for one in data:\n            one['logo'] = cls.get_logo_share_link(one['logo'])\n\n        return data, total\n\n    @classmethod\n    async def get_one_workflow_simple_info(cls, workflow_id: str) -> Flow | None:\n        \"\"\"\n        Get individual workflow details\n        \"\"\"\n        return await FlowDao.get_one_flow_simple(workflow_id)\n\n    @classmethod\n    def get_one_workflow_simple_info_sync(cls, workflow_id: str) -> Optional[Flow]:\n        \"\"\"\n        Get individual workflow details (Sync)\n        \"\"\"\n        return FlowDao.get_one_flow_simple_sync(workflow_id)\n\n    @classmethod\n    def get_all_apps_by_time_range_sync(cls, start_time: datetime, end_time: datetime, page: int = 1,\n                                        page_size: int = 100) -> list[dict]:\n        \"\"\"\n        Get all apps based on timeframe\n        \"\"\"\n        return FlowDao.get_all_app_by_time_range_sync(start_time, end_time, page, page_size)\n\n    @classmethod\n    def get_first_app(cls) -> Dict | None:\n        return FlowDao.get_first_app()\n"
  },
  {
    "path": "src/backend/bisheng/api/services/workstation/__init__.py",
    "content": "from .workstation import WorkStationService, WorkstationMessage, WorkstationConversation, SSECallbackClient\n"
  },
  {
    "path": "src/backend/bisheng/api/services/workstation/workstation.py",
    "content": "import asyncio\nimport json\nfrom datetime import datetime\nfrom typing import Optional, Any\n\nfrom fastapi import BackgroundTasks, Request\nfrom langchain_core.messages import AIMessage, HumanMessage\nfrom loguru import logger\nfrom openai import BaseModel\nfrom pydantic import field_validator\n\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.v1.schema.chat_schema import UseKnowledgeBaseParam\nfrom bisheng.api.v1.schemas import KnowledgeFileOne, KnowledgeFileProcess, WorkstationConfig\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.server import EmbeddingModelStatusError\nfrom bisheng.common.models.config import Config, ConfigDao, ConfigKeyEnum\nfrom bisheng.core.vectorstore.multi_retriever import MultiRetriever\nfrom bisheng.database.constants import MessageCategory\nfrom bisheng.database.models.message import ChatMessage, ChatMessageDao\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeCreate, KnowledgeDao, KnowledgeTypeEnum\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.tool.domain.langchain.knowledge import KnowledgeRetrieverTool\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao\nfrom bisheng.user.domain.models.user import UserDao\n\n\nclass WorkStationService(BaseService):\n\n    @classmethod\n    def update_config(cls, request: Request, login_user: UserPayload, data: WorkstationConfig) \\\n            -> WorkstationConfig:\n        \"\"\" Update Workstation Default Configuration \"\"\"\n        config = ConfigDao.get_config(ConfigKeyEnum.WORKSTATION)\n        if config:\n            config.value = data.model_dump_json()\n        else:\n            config = Config(key=ConfigKeyEnum.WORKSTATION.value, value=json.dumps(data.dict()))\n        ConfigDao.insert_config(config)\n\n        return data\n\n    @classmethod\n    def sync_tool_info(cls, tools: list[dict]) -> list[dict]:\n        \"\"\" Synchronization Tool Information \"\"\"\n        if not tools:\n            return []\n        tool_type_ids = [t.get(\"id\") for t in tools]\n        tool_type_info = GptsToolsDao.get_all_tool_type(tool_type_ids)\n        exists_tool_type = {t.id: t for t in tool_type_info}\n        tool_info = GptsToolsDao.get_list_by_type(list(exists_tool_type.keys()))\n        exists_tool_info = {t.id: t for t in tool_info}\n        new_tools = []\n        for one in tools:\n            new_one = exists_tool_type.get(one.get(\"id\"))\n            if not new_one:\n                continue\n            one[\"name\"] = new_one.name\n            one[\"description\"] = new_one.description\n            new_children = []\n            for item in one.get(\"children\", []):\n                if not exists_tool_info.get(item.get(\"id\")):\n                    continue\n                item[\"name\"] = exists_tool_info[item.get(\"id\")].name\n                item[\"description\"] = exists_tool_info[item.get(\"id\")].desc\n                item[\"tool_key\"] = exists_tool_info[item.get(\"id\")].tool_key\n                new_children.append(item)\n            one[\"children\"] = new_children\n            new_tools.append(one)\n        return new_tools\n\n    @classmethod\n    def parse_config(cls, config: Any) -> Optional[WorkstationConfig]:\n        if config:\n            ret = json.loads(config.value)\n            ret = WorkstationConfig(**ret)\n            if ret.assistantIcon and ret.assistantIcon.relative_path:\n                ret.assistantIcon.image = cls.get_logo_share_link(ret.assistantIcon.relative_path)\n            if ret.sidebarIcon and ret.sidebarIcon.relative_path:\n                ret.sidebarIcon.image = cls.get_logo_share_link(ret.sidebarIcon.relative_path)\n\n            # Compatible with olderwebsearchConfigure\n            if ret.webSearch and not ret.webSearch.params:\n                ret.webSearch.tool = 'bing'\n                ret.webSearch.params = {'api_key': ret.webSearch.bingKey, 'base_url': ret.webSearch.bingUrl}\n            if ret.linsightConfig:\n                # Determine if the tool was deleted, Synchronization tool latest information name and description, etc.\n                ret.linsightConfig.tools = cls.sync_tool_info(ret.linsightConfig.tools)\n            return ret\n        return None\n\n    @classmethod\n    def get_config(cls) -> WorkstationConfig | None:\n        \"\"\" Get the default configuration of the workbench \"\"\"\n        config = ConfigDao.get_config(ConfigKeyEnum.WORKSTATION)\n        return cls.parse_config(config)\n\n    @classmethod\n    async def aget_config(cls) -> WorkstationConfig | None:\n        \"\"\" Get the default configuration of the workbench asynchronously \"\"\"\n        config = await ConfigDao.aget_config(ConfigKeyEnum.WORKSTATION)\n        return cls.parse_config(config)\n\n    @classmethod\n    def uploadPersonalKnowledge(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            file_path,\n            background_tasks: BackgroundTasks,\n    ):\n        # Check if there is a personal knowledge base\n        knowledge = KnowledgeDao.get_user_knowledge(login_user.user_id, None,\n                                                    KnowledgeTypeEnum.PRIVATE)\n        if not knowledge:\n            model = LLMService.get_knowledge_llm()\n            knowledgeCreate = KnowledgeCreate(name='Personal Knowledge Base',\n                                              type=KnowledgeTypeEnum.PRIVATE.value,\n                                              user_id=login_user.user_id,\n                                              model=model.embedding_model_id)\n\n            knowledge = KnowledgeService.create_knowledge(request, login_user, knowledgeCreate)\n        else:\n            knowledge = knowledge[0]\n        req_data = KnowledgeFileProcess(knowledge_id=knowledge.id,\n                                        file_list=[KnowledgeFileOne(file_path=file_path)])\n        try:\n            _ = LLMService.get_bisheng_knowledge_embedding(login_user.user_id, int(knowledge.model))\n        except Exception as e:\n            raise EmbeddingModelStatusError(exception=e)\n        res = KnowledgeService.process_knowledge_file(request,\n                                                      login_user,\n                                                      background_tasks, req_data)\n        return res\n\n    @classmethod\n    def queryKnowledgeList(\n            cls,\n            request: Request,\n            login_user: UserPayload,\n            page: int,\n            size: int,\n    ):\n        # Check if there is a personal knowledge base\n        knowledge = KnowledgeDao.get_user_knowledge(login_user.user_id, None,\n                                                    KnowledgeTypeEnum.PRIVATE)\n        if not knowledge:\n            return [], 0\n        res, total, _ = KnowledgeService.get_knowledge_files(\n            request,\n            login_user,\n            knowledge[0].id,\n            page=page,\n            page_size=size)\n        return res, total\n\n    @classmethod\n    async def queryChunksFromDB(cls, question: str, use_knowledge_param: UseKnowledgeBaseParam,\n                                max_token: int,\n                                login_user: UserPayload) -> tuple[list[Any], None] | tuple[list[Any], Any]:\n        \"\"\"\n        Query relevant knowledge blocks from the database\n        \n        Args:\n            max_token: MaxtokenLimit\n            question: User Query Questions\n            use_knowledge_param: Working with Knowledge Base Parameters\n            login_user: Logged in user information\n            \n        Returns:\n            List[str]: Formatted Knowledge Base Content List in the following format:\n                \"[file name]:The file name\\n[file content begin]\\nContents\\n[file content end]\\n\"\n        \"\"\"\n        try:\n            knowledge_ids = []\n\n            if use_knowledge_param.organization_knowledge_ids:\n                # Call the Knowledge Base service to get the Knowledge Block if there is an Organizational Knowledge Base\n                knowledge_ids.extend(use_knowledge_param.organization_knowledge_ids)\n\n            if use_knowledge_param.personal_knowledge_enabled:\n                # If Personal Knowledge Base is enabled, add Personal Knowledge BaseID\n                personal_knowledge = await KnowledgeDao.aget_user_knowledge(login_user.user_id,\n                                                                            knowledge_type=KnowledgeTypeEnum.PRIVATE)\n                if personal_knowledge:\n                    knowledge_ids.append(personal_knowledge[0].id)\n\n            knowledge_vector_list = await KnowledgeRag.get_multi_knowledge_vectorstore(\n                invoke_user_id=login_user.user_id,\n                knowledge_ids=knowledge_ids,\n                user_name=login_user.user_name)\n\n            all_milvus, all_milvus_filter = [], []\n            all_es, all_es_filter = [], []\n            multi_milvus_retriever, multi_es_retriever = None, None\n            for knowledge_id, vectorstore_info in knowledge_vector_list.items():\n                milvus_vectorstore = vectorstore_info.get(\"milvus\")\n                es_vectorstore = vectorstore_info.get(\"es\")\n                all_milvus.append(milvus_vectorstore)\n                all_milvus_filter.append({\"k\": 100, \"param\": {\"ef\": 110}})\n                all_es.append(es_vectorstore)\n                all_es_filter.append({\"k\": 100})\n            if all_milvus:\n                multi_milvus_retriever = MultiRetriever(\n                    vectors=all_milvus,\n                    search_kwargs=all_milvus_filter,\n                    finally_k=100\n                )\n            if all_es:\n                multi_es_retriever = MultiRetriever(\n                    vectors=all_es,\n                    search_kwargs=all_es_filter,\n                    finally_k=100\n                )\n            knowledge_retriever_tool = KnowledgeRetrieverTool(\n                vector_retriever=multi_milvus_retriever,\n                elastic_retriever=multi_es_retriever,\n                max_content=max_token,\n                rrf_remove_zero_score=True,\n                sort_by_source_and_index=True\n            )\n\n            finally_docs = await knowledge_retriever_tool.ainvoke({\"query\": question})\n\n            # Format the retrieval results to the specified template format\n            formatted_results = []\n            if finally_docs:\n                for doc in finally_docs:\n                    # Get the filename, preferably from metadata Get in\n                    file_name = doc.metadata.get('source') or doc.metadata.get('document_name')\n                    # Get document content\n                    content = doc.page_content.strip()\n\n                    # Organize content in template format\n                    formatted_content = f\"[file name]:{file_name}\\n[file content begin]\\n{content}\\n[file content end]\\n\"\n                    formatted_results.append(formatted_content)\n\n            return formatted_results, finally_docs\n        except Exception as e:\n            logger.error(f\"queryChunksFromDB error: {e}\")\n            return [], None\n\n    @classmethod\n    async def get_chat_history(cls, chat_id: str, size: int = 4):\n        chat_history = []\n        messages = await ChatMessageDao.aget_messages_by_chat_id(chat_id, ['question', 'answer'], size)\n        for one in messages:\n            # bug fix When constructing multi-turn dialogues, the input and response of\n            # the user and the assistant were reversed, leading to incorrect question-and-answer sequences.\n            extra = json.loads(one.extra) or {}\n            content = extra['prompt'] if 'prompt' in extra else one.message\n            if one.category == MessageCategory.QUESTION.value:\n                chat_history.append(HumanMessage(content=content))\n            elif one.category == MessageCategory.ANSWER.value:\n                chat_history.append(AIMessage(content=content))\n        logger.info(f'loaded {len(chat_history)} chat history for chat_id {chat_id}')\n        return chat_history\n\n\nclass WorkstationMessage(BaseModel):\n    messageId: str\n    conversationId: str\n    createdAt: datetime\n    isCreatedByUser: bool\n    model: Optional[str]\n    parentMessageId: Optional[str]\n    user_name: Optional[str]\n    sender: str\n    text: str\n    updateAt: datetime\n    files: Optional[list]\n    error: Optional[bool] = False\n    unfinished: Optional[bool] = False\n    flow_name: Optional[str] = None\n    source: Optional[int] = None\n\n    @field_validator('messageId', mode='before')\n    @classmethod\n    def convert_message_id(cls, value: Any) -> str:\n        if isinstance(value, str):\n            return value\n        return str(value)\n\n    @field_validator('parentMessageId', mode='before')\n    @classmethod\n    def convert_parent_message_id(cls, value: Any) -> str:\n        if isinstance(value, str):\n            return value\n        return str(value)\n\n    @classmethod\n    async def from_chat_message(cls, message: ChatMessage):\n        files = json.loads(message.files) if message.files else []\n        user_model = await UserDao.aget_user(message.user_id)\n        message_session_model = await MessageSessionDao.async_get_one(chat_id=message.chat_id)\n        return cls(\n            messageId=str(message.id),\n            conversationId=message.chat_id,\n            createdAt=message.create_time,\n            updateAt=message.update_time,\n            isCreatedByUser=not message.is_bot,\n            model=None,\n            parentMessageId=json.loads(message.extra).get('parentMessageId'),\n            error=json.loads(message.extra).get('error', False),\n            unfinished=json.loads(message.extra).get('unfinished', False),\n            user_name=user_model.user_name,\n            sender=message.sender,\n            text=message.message,\n            files=files,\n            flow_name=message_session_model.flow_name if message_session_model else None,\n            source=message.source\n        )\n\n\nclass WorkstationConversation(BaseModel):\n    conversationId: str\n    user: str\n    createdAt: datetime\n    updateAt: datetime\n    model: Optional[str]\n    title: Optional[str]\n\n    @classmethod\n    def from_chat_session(cls, session: MessageSession):\n        return cls(\n            conversationId=session.chat_id,\n            user=str(session.user_id),\n            createdAt=session.create_time,\n            updateAt=session.update_time,\n            model=None,\n            title=session.flow_name,\n        )\n\n    @field_validator('user', mode='before')\n    @classmethod\n    def convert_user(cls, v: Any) -> str:\n        if isinstance(v, str):\n            return v\n        return str(v)\n\n\nclass SSECallbackClient:\n\n    def __init__(self):\n        self.queue = asyncio.Queue()\n\n    async def send_json(self, data):\n        self.queue.put_nowait(data)\n"
  },
  {
    "path": "src/backend/bisheng/api/utils.py",
    "content": "import hashlib\nfrom pathlib import Path\n\nimport aiohttp\nfrom loguru import logger\nfrom platformdirs import user_cache_dir\nfrom sqlalchemy import delete\nfrom sqlmodel import select\n\nfrom bisheng.api.v1.schemas import StreamData\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.variable_value import Variable\nfrom bisheng.graph.graph.base import Graph\n\nAPI_WORDS = ['api', 'key', 'token']\n\n\ndef has_api_terms(word: str):\n    return 'api' in word and ('key' in word or ('token' in word and 'tokens' not in word))\n\n\ndef remove_api_keys(flow: dict):\n    \"\"\"Remove api keys from flow data.\"\"\"\n    if flow.get('data') and flow['data'].get('nodes'):\n        for node in flow['data']['nodes']:\n            node_data = node.get('data').get('node')\n            template = node_data.get('template')\n            for value in template.values():\n                if (isinstance(value, dict) and has_api_terms(value['name'])\n                        and value.get('password')):\n                    value['value'] = None\n\n    return flow\n\n\ndef build_input_keys_response(langchain_object, artifacts):\n    \"\"\"Build the input keys response.\"\"\"\n\n    input_keys_response = {\n        'input_keys': {\n            key: ''\n            for key in langchain_object.input_keys\n        },\n        'memory_keys': [],\n        'handle_keys': artifacts.get('handle_keys', []),\n    }\n\n    # Set the input keys values from artifacts\n    for key, value in artifacts.items():\n        if key in input_keys_response['input_keys']:\n            input_keys_response['input_keys'][key] = value\n    # If the object has memory, that memory will have a memory_variables attribute\n    # memory variables should be removed from the input keys\n    if hasattr(langchain_object, 'memory') and hasattr(langchain_object.memory,\n                                                       'memory_variables'):\n        # Remove memory variables from input keys\n        input_keys_response['input_keys'] = {\n            key: value\n            for key, value in input_keys_response['input_keys'].items()\n            if key not in langchain_object.memory.memory_variables\n        }\n        # Add memory variables to memory_keys\n        input_keys_response['memory_keys'] = langchain_object.memory.memory_variables\n\n    if hasattr(langchain_object, 'prompt') and hasattr(langchain_object.prompt, 'template'):\n        input_keys_response['template'] = langchain_object.prompt.template\n\n    return input_keys_response\n\n\nasync def build_flow(graph_data: dict,\n                     artifacts,\n                     process_file=False,\n                     flow_id=None,\n                     chat_id=None,\n                     **kwargs) -> Graph:\n    try:\n        # Some error could happen when building the graph\n        graph = Graph.from_payload(graph_data)\n    except Exception as exc:\n        logger.error(exc)\n        error_message = str(exc)\n        yield str(StreamData(event='error', data={'error': error_message}))\n        return\n\n    number_of_nodes = len(graph.vertices)\n\n    for i, vertex in enumerate(graph.generator_build(), 1):\n        try:\n            log_dict = {\n                'log': f'Building node {vertex.vertex_type}',\n            }\n            yield str(StreamData(event='log', data=log_dict))\n            # # If the file exists, do not operate the file at this time to avoid duplication of operations\n            if not process_file and (vertex.base_type == 'documentloaders'\n                                     or vertex.base_type == 'input_output'):\n                template_dict = {\n                    key: value\n                    for key, value in vertex.data['node']['template'].items()\n                    if isinstance(value, dict)\n                }\n                for key, value in template_dict.items():\n                    if value.get('type') == 'fileNode':\n                        # Filter Files\n                        vertex.params[key] = ''\n\n            # vectore store Introduce automatic library building logic\n            # Chat window, etc.flow Proactively Generatedvector Need to create a new temporarycollection\n            # tmp_{chat_id}\n            if vertex.base_type == 'vectorstores':\n                # Knowledge Base Transmits Parameters via Parameters\n                if 'collection_name' in kwargs and 'collection_name' in vertex.params:\n                    vertex.params['collection_name'] = kwargs['collection_name']\n                if 'collection_name' in kwargs and 'index_name' in vertex.params:\n                    vertex.params['index_name'] = kwargs['collection_name']\n\n                # Temporary directory processing tmp_{embeding}_{loader}_{chat_id}\n                if 'collection_name' in vertex.params and not vertex.params.get('collection_name'):\n                    vertex.params['collection_name'] = f'tmp_{flow_id}_{chat_id if chat_id else 1}'\n                elif 'index_name' in vertex.params and not vertex.params.get('index_name'):\n                    # es\n                    vertex.params['index_name'] = f'tmp_{flow_id}_{chat_id if chat_id else 1}'\n\n            await vertex.build(user_id=graph_data.get('user_id'))\n            params = vertex._built_object_repr()\n            valid = True\n            logger.debug(\n                f\"Building node {vertex.vertex_type} {str(params)[:50]}{'...' if len(str(params)) > 50 else ''}\"\n            )\n            if vertex.artifacts:\n                # The artifacts will be prompt variables\n                # passed to build_input_keys_response\n                # to set the input_keys values\n                artifacts.update(vertex.artifacts)\n        except Exception as exc:\n            logger.exception(f'Error building node {vertex.id}', exc_info=True)\n            params = str(exc)\n            valid = False\n            response = {\n                'valid': valid,\n                'params': params,\n                'id': vertex.id,\n                'progress': round(i / number_of_nodes, 2),\n            }\n            yield str(StreamData(event='message', data=response))\n            raise exc\n\n        response = {\n            'valid': valid,\n            'params': params,\n            'id': vertex.id,\n            'progress': round(i / number_of_nodes, 2),\n        }\n        yield str(StreamData(event='message', data=response))\n    yield graph\n\n\nasync def build_flow_no_yield(graph_data: dict,\n                              artifacts,\n                              process_file=False,\n                              flow_id=None,\n                              chat_id=None,\n                              **kwargs):\n    try:\n        # Some error could happen when building the graph\n        graph = Graph.from_payload(graph_data)\n    except Exception as exc:\n        logger.exception(exc)\n        raise exc\n    sorted_vertices = graph.topological_sort()\n    for vertex in sorted_vertices:\n        try:\n            # If the file exists, do not operate the file at this time to avoid duplication of operations\n            if not process_file and (vertex.base_type == 'documentloaders'\n                                     or vertex.base_type == 'input_output'):\n                template_dict = {\n                    key: value\n                    for key, value in vertex.data['node']['template'].items()\n                    if isinstance(value, dict)\n                }\n                for key, value in template_dict.items():\n                    if value.get('type') == 'fileNode':\n                        # Filter Files\n                        vertex.params[key] = ''\n\n            # vectore store Introduce automatic library building logic\n            # Chat window, etc.flow Proactively Generatedvector Need to create a new temporarycollection\n            # tmp_{chat_id}\n            if vertex.base_type == 'vectorstores':\n                # Infuseuser_name\n                vertex.params['user_name'] = kwargs.get('user_name') if kwargs else ''\n                if vertex.vertex_type not in [\n                    'MilvusWithPermissionCheck', 'ElasticsearchWithPermissionCheck'\n                ]:\n                    # Knowledge Base Transmits Parameters via Parameters\n                    if 'collection_name' in kwargs and 'collection_name' in vertex.params:\n                        vertex.params['collection_name'] = kwargs['collection_name']\n                    if 'collection_name' in kwargs and 'index_name' in vertex.params:\n                        vertex.params['index_name'] = kwargs['collection_name']\n\n                    if 'collection_name' in vertex.params and not vertex.params.get(\n                            'collection_name'):\n                        vertex.params[\n                            'collection_name'] = f'tmp_{flow_id}_{chat_id if chat_id else 1}'\n                        logger.info(f\"rename_vector_col col={vertex.params['collection_name']}\")\n                        if process_file:\n                            # L1 RemoveMilvusBattle Log\n                            vertex.params['drop_old'] = True\n                    elif 'index_name' in vertex.params and not vertex.params.get('index_name'):\n                        # es\n                        vertex.params['index_name'] = f'tmp_{flow_id}_{chat_id if chat_id else 1}'\n\n            if vertex.base_type == 'chains' and 'retriever' in vertex.params:\n                vertex.params['user_name'] = kwargs.get('user_name') if kwargs else ''\n\n            await vertex.build()\n            params = vertex._built_object_repr()\n            logger.debug(\n                f\"Building node {str(params)[:50]}{'...' if len(str(params)) > 50 else ''}\")\n            if vertex.artifacts:\n                # The artifacts will be prompt variables\n                # passed to build_input_keys_response\n                # to set the input_keys values\n                artifacts.update(vertex.artifacts)\n        except Exception as exc:\n            raise exc\n    return graph\n\n\ndef get_L2_param_from_flow(flow_data: dict, flow_id: str, version_id: int = None):\n    graph = Graph.from_payload(flow_data)\n    node_id = []\n    variable_ids = []\n    file_name = []\n    for node in graph.vertices:\n        if node.vertex_type in {'InputFileNode'}:\n            node_id.append(node.id)\n            file_name.append(node.params.get('file_type'))\n        elif node.vertex_type in {'VariableNode'}:\n            variable_ids.append(node.id)\n\n    with get_sync_db_session() as session:\n        db_variables = session.exec(\n            select(Variable).where(Variable.flow_id == flow_id,\n                                   Variable.version_id == version_id)).all()\n\n        old_file_ids = {\n            variable.node_id: variable\n            for variable in db_variables if variable.value_type == 3\n        }\n        update = []\n        delete_node_ids = []\n        try:\n            for index, id in enumerate(node_id):\n                if id in old_file_ids:\n                    if file_name[index] != old_file_ids.get(id).variable_name:\n                        old_file_ids.get(id).variable_name = file_name[index]\n                        update.append(old_file_ids.get(id))\n                    old_file_ids.pop(id)\n                else:\n                    # file type\n                    db_new_var = Variable(flow_id=flow_id,\n                                          version_id=version_id,\n                                          node_id=id,\n                                          variable_name=file_name[index],\n                                          value_type=3)\n                    update.append(db_new_var)\n            # delete variable which not delete by edit\n            old_variable_ids = {\n                variable.node_id\n                for variable in db_variables if variable.value_type != 3\n            }\n\n            if old_file_ids:\n                delete_node_ids.extend(list(old_file_ids.keys()))\n\n            delete_node_ids.extend(old_variable_ids.difference(set(variable_ids)))\n\n            if update:\n                [session.add(var) for var in update]\n            if delete_node_ids:\n                session.exec(\n                    delete(Variable).where(Variable.node_id.in_(delete_node_ids),\n                                           version_id == version_id, flow_id == flow_id))\n            session.commit()\n            return True\n        except Exception as e:\n            logger.exception(e)\n            session.rollback()\n            return False\n\n\ndef raw_frontend_data_is_valid(raw_frontend_data):\n    \"\"\"Check if the raw frontend data is valid for processing.\"\"\"\n    return 'template' in raw_frontend_data and 'display_name' in raw_frontend_data\n\n\ndef is_valid_data(frontend_node, raw_frontend_data):\n    \"\"\"Check if the data is valid for processing.\"\"\"\n\n    return frontend_node and 'template' in frontend_node and raw_frontend_data_is_valid(\n        raw_frontend_data)\n\n\ndef update_template_values(frontend_template, raw_template):\n    \"\"\"Updates the frontend template with values from the raw template.\"\"\"\n    for key, value_dict in raw_template.items():\n        if key == 'code' or not isinstance(value_dict, dict):\n            continue\n\n        update_template_field(frontend_template, key, value_dict)\n\n\ndef get_file_path_value(file_path):\n    \"\"\"Get the file path value if the file exists, else return empty string.\"\"\"\n    try:\n        path = Path(file_path)\n    except TypeError:\n        return ''\n\n    # Check for safety\n    # If the path is not in the cache dir, return empty string\n    # This is to prevent access to files outside the cache dir\n    # If the path is not a file, return empty string\n    if not path.exists() or not str(path).startswith(user_cache_dir('bisheng', 'bisheng')):\n        return ''\n    return file_path\n\n\ndef update_template_field(frontend_template, key, value_dict):\n    \"\"\"Updates a specific field in the frontend template.\"\"\"\n    template_field = frontend_template.get(key)\n    if not template_field or template_field.get('type') != value_dict.get('type'):\n        return\n\n    if 'value' in value_dict and value_dict['value']:\n        template_field['value'] = value_dict['value']\n\n    if 'file_path' in value_dict and value_dict['file_path']:\n        file_path_value = get_file_path_value(value_dict['file_path'])\n        if not file_path_value:\n            # If the file does not exist, remove the value from the template_field[\"value\"]\n            template_field['value'] = ''\n        template_field['file_path'] = file_path_value\n\n\ndef update_frontend_node_with_template_values(frontend_node, raw_frontend_node):\n    \"\"\"\n    Updates the given frontend node with values from the raw template data.\n\n    :param frontend_node: A dict representing a built frontend node.\n    :param raw_template_data: A dict representing raw template data.\n    :return: Updated frontend node.\n    \"\"\"\n    if not is_valid_data(frontend_node, raw_frontend_node):\n        return frontend_node\n\n    # Check if the display_name is different than \"CustomComponent\"\n    # if so, update the display_name in the frontend_node\n    if raw_frontend_node['display_name'] != 'CustomComponent':\n        frontend_node['display_name'] = raw_frontend_node['display_name']\n\n    update_template_values(frontend_node['template'], raw_frontend_node['template'])\n\n    return frontend_node\n\n\nasync def get_url_content(url: str) -> str:\n    \"\"\" Get the returned of the interfacebodyContents \"\"\"\n    async with aiohttp.ClientSession() as session:\n        async with session.get(url) as response:\n            if response.status != 200:\n                raise Exception(f'Failed to download content, HTTP status code: {response.status}')\n            res = await response.read()\n            return res.decode('utf-8')\n\n\ndef md5_hash(original_string: str):\n    md5 = hashlib.md5()\n    md5.update(original_string.encode('utf-8'))\n    return md5.hexdigest()\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/__init__.py",
    "content": "from bisheng.api.v1.assistant import router as assistant_router\nfrom bisheng.api.v1.audit import router as audit_router\nfrom bisheng.api.v1.chat import router as chat_router\nfrom bisheng.api.v1.component import router as component_router\nfrom bisheng.api.v1.endpoints import router as endpoints_router\nfrom bisheng.api.v1.evaluation import router as evaluation_router\nfrom bisheng.api.v1.flows import router as flows_router\nfrom bisheng.api.v1.invite_code import router as invite_code_router\nfrom bisheng.api.v1.mark_task import router as mark_router\nfrom bisheng.api.v1.report import router as report_router\nfrom bisheng.api.v1.skillcenter import router as skillcenter_router\nfrom bisheng.api.v1.tag import router as tag_router\nfrom bisheng.api.v1.usergroup import router as group_router\nfrom bisheng.api.v1.validate import router as validate_router\nfrom bisheng.api.v1.variable import router as variable_router\nfrom bisheng.api.v1.workflow import router as workflow_router\nfrom bisheng.api.v1.workstation import router as workstation_router\nfrom bisheng.tool.api.tool import router as tool_router\nfrom bisheng.user.api.user import router as user_router\n\n__all__ = [\n    'chat_router',\n    'endpoints_router',\n    'validate_router',\n    'flows_router',\n    'skillcenter_router',\n    'user_router',\n    'variable_router',\n    'report_router',\n    'component_router',\n    'assistant_router',\n    'evaluation_router',\n    'group_router',\n    'audit_router',\n    'tag_router',\n    'workflow_router',\n    'mark_router',\n    'workstation_router',\n    \"tool_router\",\n    \"invite_code_router\",\n]\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/assistant.py",
    "content": "from typing import List, Optional, Union\n\nfrom fastapi import (APIRouter, Body, Depends, HTTPException, Query, Request, WebSocket,\n                     WebSocketException)\nfrom fastapi import status as http_status\nfrom fastapi.responses import StreamingResponse\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant import AssistantService\nfrom bisheng.api.v1.schemas import (AssistantCreateReq, AssistantUpdateReq,\n                                    StreamData, resp_200)\nfrom bisheng.chat.manager import ChatManager\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.common.schemas.api import PageData\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.database.models.assistant import Assistant\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.utils import generate_uuid\n\nrouter = APIRouter(prefix='/assistant', tags=['Assistant'])\nchat_manager = ChatManager()\n\n\n@router.get('')\ndef get_assistant(*,\n                  name: str = Query(default=None, description='assistant name, fuzzy matching, Fuzzy matches with description'),\n                  tag_id: int = Query(default=None, description='labelID'),\n                  page: Optional[int] = Query(default=1, gt=0, description='Page'),\n                  limit: Optional[int] = Query(default=10, gt=0, description='Listings Per Page'),\n                  status: Optional[int] = Query(default=None, description='Is online status'),\n                  login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    data, total = AssistantService.get_assistant(login_user, name, status, tag_id, page, limit)\n    return resp_200(PageData(data=data, total=total))\n\n\n# Get the details of an assistant\n@router.get('/info/{assistant_id}')\nasync def get_assistant_info(*, assistant_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                             share_link: Union['ShareLink', None] = Depends(header_share_token_parser)):\n    \"\"\"Getting Helper Information\"\"\"\n    res = await AssistantService.get_assistant_info(assistant_id, login_user, share_link)\n    return resp_200(data=res)\n\n\n@router.post('/delete')\ndef delete_assistant(*,\n                     request: Request,\n                     assistant_id: str,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Delete Assistant\"\"\"\n    AssistantService.delete_assistant(request, login_user, assistant_id)\n    return resp_200()\n\n\n@router.post('')\nasync def create_assistant(*,\n                           request: Request,\n                           req: AssistantCreateReq,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    assistant = Assistant(**req.model_dump(), user_id=login_user.user_id)\n    res = await AssistantService.create_assistant(request, login_user, assistant)\n    return resp_200(data=res)\n\n\n@router.put('')\nasync def update_assistant(*,\n                           request: Request,\n                           req: AssistantUpdateReq,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    assistant_model = await AssistantService.update_assistant(request, login_user, req)\n    return resp_200(data=assistant_model)\n\n\n@router.post('/status')\nasync def update_status(*,\n                        request: Request,\n                        assistant_id: str = Body(description='Assistant UniqueID', alias='id'),\n                        status: int = Body(description='whether to go online: 0 offline, 1 online'),\n                        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    await AssistantService.update_status(request, login_user, assistant_id, status)\n    return resp_200()\n\n\n@router.post('/auto/task')\nasync def auto_update_assistant_task(*, request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                     assistant_id: str = Body(description='Assistant UniqueID'),\n                                     prompt: str = Body(description='User-filled prompts')):\n    # Deposit Cache\n    task_id = generate_uuid()\n    redis_client = await get_redis_client()\n    await redis_client.aset(f'auto_update_task:{task_id}', {\n        'assistant_id': assistant_id,\n        'prompt': prompt,\n    })\n    return resp_200(data={\n        'task_id': task_id\n    })\n\n\n# Nicepromptand tool selection\n@router.get('/auto', response_class=StreamingResponse)\nasync def auto_update_assistant(*, task_id: str = Query(description='Optimization Task UniqueID'),\n                                login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    redis_client = await get_redis_client()\n    task = await redis_client.aget(f'auto_update_task:{task_id}')\n    if not task:\n        raise NotFoundError()\n    assistant_id = task['assistant_id']\n    prompt = task['prompt']\n\n    async def event_stream():\n        try:\n            async for message in AssistantService.auto_update_stream(assistant_id, prompt, login_user):\n                yield message\n            yield str(StreamData(event='message', data={'type': 'end', 'data': ''}))\n        except Exception as e:\n            logger.exception('assistant auto update error')\n            yield str(StreamData(event='message', data={'type': 'end', 'message': str(e)}))\n\n    return StreamingResponse(event_stream(), media_type='text/event-stream')\n\n\n# Update assistant prompts\n@router.post('/prompt')\nasync def update_prompt(*,\n                        assistant_id: str = Body(description='Assistant UniqueID', alias='id'),\n                        prompt: str = Body(description='Used by Usersprompt'),\n                        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    AssistantService.update_prompt(assistant_id, prompt, login_user)\n    return resp_200()\n\n\n@router.post('/flow')\nasync def update_flow_list(*,\n                           assistant_id: str = Body(description='Assistant UniqueID', alias='id'),\n                           flow_list: List[str] = Body(description='List of user-selected skills'),\n                           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    AssistantService.update_flow_list(assistant_id, flow_list, login_user)\n    return resp_200()\n\n\n@router.post('/tool')\nasync def update_tool_list(*,\n                           assistant_id: str = Body(description='Assistant UniqueID', alias='id'),\n                           tool_list: List[int] = Body(description='List of tools selected by the user'),\n                           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Update the list of tools selected by the assistant \"\"\"\n    AssistantService.update_tool_list(assistant_id, tool_list, login_user)\n    return resp_200()\n\n\n# Assistant Dialogue'swebsocketCONNECT\n@router.websocket('/chat/{assistant_id}')\nasync def chat(*,\n               assistant_id: str,\n               websocket: WebSocket,\n               chat_id: Optional[str] = None,\n               login_user: UserPayload = Depends(UserPayload.get_login_user_from_ws)):\n    try:\n        await chat_manager.dispatch_client(websocket, assistant_id, chat_id, login_user,\n                                           WorkType.GPTS, websocket)\n    except WebSocketException as exc:\n        logger.error(f'Websocket exception: {str(exc)}')\n        await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=str(exc))\n    except Exception as exc:\n        logger.exception(f'Error in chat websocket: {str(exc)}')\n        message = exc.detail if isinstance(exc, HTTPException) else str(exc)\n        if 'Could not validate credentials' in str(exc):\n            await websocket.close(code=http_status.WS_1008_POLICY_VIOLATION, reason='Unauthorized')\n        else:\n            await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=message)\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/audit.py",
    "content": "from datetime import datetime\nfrom typing import Optional, List\n\nfrom fastapi import APIRouter, Query, Depends\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\n\nrouter = APIRouter(prefix='/audit', tags=['AuditLog'])\n\n\n@router.get('')\nasync def get_audit_logs(*,\n                         group_ids: Optional[List[str]] = Query(default=[], description='GroupingidVertical'),\n                         operator_ids: Optional[List[int]] = Query(default=[], description='WhoidVertical'),\n                         start_time: Optional[datetime] = Query(default=None, description='Start when'),\n                         end_time: Optional[datetime] = Query(default=None, description='End time'),\n                         system_id: Optional[str] = Query(default=None, description='Module Item'),\n                         event_type: Optional[str] = Query(default=None, description='Operation behaviors'),\n                         page: Optional[int] = Query(default=0, description='Page'),\n                         limit: Optional[int] = Query(default=0, description='Listings Per Page'),\n                         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    group_ids = [one for one in group_ids if one]\n    operator_ids = [one for one in operator_ids if one]\n    return await AuditLogService.get_audit_log(login_user, group_ids, operator_ids,\n                                               start_time, end_time, system_id, event_type, page, limit)\n\n\n@router.get('/operators')\ndef get_all_operators(*, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get all users who have acted on a resource under a group\n    \"\"\"\n    return resp_200(data=AuditLogService.get_all_operators(login_user))\n\n\n@router.get('/session')\nasync def get_session_list(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           flow_ids: Optional[List[str]] = Query(default=[], description='ApplicationsidVertical'),\n                           user_ids: Optional[List[int]] = Query(default=[], description='UsersidVertical'),\n                           group_ids: Optional[List[int]] = Query(default=[], description='User GroupsidVertical'),\n                           start_date: Optional[datetime] = Query(default=None, description='Start when'),\n                           end_date: Optional[datetime] = Query(default=None, description='End time'),\n                           feedback: Optional[str] = Query(default=None,\n                                                           description='like LikedislikeUnlikecopiedCopy:'),\n                           sensitive_status: Optional[int] = Query(default=None,\n                                                                   description='Sensitive word review status'),\n                           page: Optional[int] = Query(default=1, description='Page'),\n                           page_size: Optional[int] = Query(default=10, description='Listings Per Page')):\n    \"\"\" Filter all session lists \"\"\"\n    data, total = await AuditLogService.get_session_list(login_user, flow_ids, user_ids, group_ids, start_date,\n                                                         end_date,\n                                                         feedback, sensitive_status, page, page_size)\n    return resp_200(data={\n        'data': data,\n        'total': total\n    })\n\n\n@router.get('/session/export')\nasync def export_session_messages(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                  flow_ids: Optional[List[str]] = Query(default=[],\n                                                                        description='ApplicationsidVertical'),\n                                  user_ids: Optional[List[int]] = Query(default=[], description='UsersidVertical'),\n                                  group_ids: Optional[List[int]] = Query(default=[],\n                                                                         description='User GroupsidVertical'),\n                                  start_date: Optional[datetime] = Query(default=None, description='Start when'),\n                                  end_date: Optional[datetime] = Query(default=None, description='End time'),\n                                  feedback: Optional[str] = Query(default=None,\n                                                                  description='like LikedislikeUnlikecopiedCopy:'),\n                                  sensitive_status: Optional[int] = Query(default=None,\n                                                                          description='Sensitive word review status')):\n    \"\"\" Exporting a list of session detailscsvDoc. \"\"\"\n    url = await AuditLogService.export_session_messages(login_user, flow_ids, user_ids, group_ids, start_date, end_date,\n                                                        feedback, sensitive_status)\n    return resp_200(data={\n        'url': url\n    })\n\n\n@router.get('/session/export/data')\nasync def get_session_messages(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                               flow_ids: Optional[List[str]] = Query(default=[], description='ApplicationsidVertical'),\n                               user_ids: Optional[List[int]] = Query(default=[], description='UsersidVertical'),\n                               group_ids: Optional[List[int]] = Query(default=[], description='User GroupsidVertical'),\n                               start_date: Optional[datetime] = Query(default=None, description='Start when'),\n                               end_date: Optional[datetime] = Query(default=None, description='End time'),\n                               feedback: Optional[str] = Query(default=None,\n                                                               description='like LikedislikeUnlikecopiedCopy:'),\n                               sensitive_status: Optional[int] = Query(default=None,\n                                                                       description='Sensitive word review status')):\n    \"\"\" Export data for a list of session details \"\"\"\n    result = await AuditLogService.get_session_messages(login_user, flow_ids, user_ids, group_ids, start_date, end_date,\n                                                        feedback, sensitive_status)\n    return resp_200(data={\n        'data': result\n    })\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/base.py",
    "content": "from bisheng.interface.utils import extract_input_variables_from_prompt\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom langchain.prompts import PromptTemplate\nfrom pydantic import field_validator, BaseModel\n\n\nclass CacheResponse(BaseModel):\n    data: dict\n\n\nclass Code(BaseModel):\n    code: str\n\n\nclass FrontendNodeRequest(FrontendNode):\n    template: dict  # type: ignore\n\n\nclass ValidatePromptRequest(BaseModel):\n    name: str\n    template: str\n    frontend_node: FrontendNodeRequest\n\n\n# Build ValidationResponse class for {\"imports\": {\"errors\": []}, \"function\": {\"errors\": []}}\nclass CodeValidationResponse(BaseModel):\n    imports: dict\n    function: dict\n\n    @field_validator('imports')\n    @classmethod\n    def validate_imports(cls, v):\n        return v or {'errors': []}\n\n    @field_validator('function')\n    @classmethod\n    def validate_function(cls, v):\n        return v or {'errors': []}\n\n\nclass PromptValidationResponse(BaseModel):\n    input_variables: list\n    frontend_node: FrontendNodeRequest\n\n\nINVALID_CHARACTERS = {\n    ' ',\n    ',',\n    '.',\n    ':',\n    ';',\n    '!',\n    '?',\n    '/',\n    '\\\\',\n    '(',\n    ')',\n    '[',\n    ']',\n    '{',\n    '}',\n}\n\nINVALID_NAMES = {\n    'input_variables',\n    'output_parser',\n    'partial_variables',\n    'template',\n    'template_format',\n    'validate_template',\n}\n\n\ndef validate_prompt(template: str):\n    input_variables = extract_input_variables_from_prompt(template)\n\n    # Check if there are invalid characters in the input_variables\n    input_variables = check_input_variables(input_variables)\n    if any(var in INVALID_NAMES for var in input_variables):\n        raise ValueError(\n            f\"Invalid input variables. None of the variables can be named {', '.join(input_variables)}. \"\n        )\n\n    try:\n        PromptTemplate(template=template, input_variables=input_variables)\n    except Exception as exc:\n        raise ValueError(str(exc)) from exc\n\n    return input_variables\n\n\ndef check_input_variables(input_variables: list):\n    invalid_chars = []\n    fixed_variables = []\n    wrong_variables = []\n    empty_variables = []\n    for variable in input_variables:\n        new_var = variable\n\n        # if variable is empty, then we should add that to the wrong variables\n        if not variable:\n            empty_variables.append(variable)\n            continue\n\n        # if variable starts with a number we should add that to the invalid chars\n        # and wrong variables\n        if variable[0].isdigit():\n            invalid_chars.append(variable[0])\n            new_var = new_var.replace(variable[0], '')\n            wrong_variables.append(variable)\n        else:\n            for char in INVALID_CHARACTERS:\n                if char in variable:\n                    invalid_chars.append(char)\n                    new_var = new_var.replace(char, '')\n                    wrong_variables.append(variable)\n        fixed_variables.append(new_var)\n    # If any of the input_variables is not in the fixed_variables, then it means that\n    # there are invalid characters in the input_variables\n\n    if any(var not in fixed_variables for var in input_variables):\n        error_message = build_error_message(\n            input_variables,\n            invalid_chars,\n            wrong_variables,\n            fixed_variables,\n            empty_variables,\n        )\n        raise ValueError(error_message)\n    return input_variables\n\n\ndef build_error_message(\n    input_variables, invalid_chars, wrong_variables, fixed_variables, empty_variables\n):\n    input_variables_str = ', '.join([f\"'{var}'\" for var in input_variables])\n    error_string = f'Invalid input variables: {input_variables_str}. '\n\n    if wrong_variables and invalid_chars:\n        # fix the wrong variables replacing invalid chars and find them in the fixed variables\n        error_string_vars = 'You can fix them by replacing the invalid characters: '\n        wvars = wrong_variables.copy()\n        for i, wrong_var in enumerate(wvars):\n            for char in invalid_chars:\n                wrong_var = wrong_var.replace(char, '')\n            if wrong_var in fixed_variables:\n                error_string_vars += f\"'{wrong_variables[i]}' -> '{wrong_var}'\"\n        error_string += error_string_vars\n    elif empty_variables:\n        error_string += f\" There are {len(empty_variables)} empty variable{'s' if len(empty_variables) > 1 else ''}.\"\n    elif len(set(fixed_variables)) != len(fixed_variables):\n        error_string += 'There are duplicate variables.'\n    return error_string\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/callback.py",
    "content": "import asyncio\nimport copy\nimport json\nfrom queue import Queue\nfrom typing import Any, Dict, List, Union\n\nfrom fastapi import WebSocket\nfrom langchain.callbacks.base import AsyncCallbackHandler, BaseCallbackHandler\nfrom langchain.schema import AgentFinish, LLMResult\nfrom langchain.schema.agent import AgentAction\nfrom langchain.schema.document import Document\nfrom langchain.schema.messages import BaseMessage\nfrom langchain_core.messages import ToolMessage\n\nfrom bisheng.api.v1.schemas import ChatResponse\nfrom bisheng.database.models.message import ChatMessage as ChatMessageModel\nfrom bisheng.database.models.message import ChatMessageDao\nfrom loguru import logger\n\n\n# https://github.com/hwchase17/chat-langchain/blob/master/callback.py\nclass AsyncStreamingLLMCallbackHandler(AsyncCallbackHandler):\n    \"\"\"Callback handler for streaming LLM responses.\"\"\"\n\n    def __init__(self,\n                 websocket: WebSocket,\n                 flow_id: str,\n                 chat_id: str,\n                 user_id: int = None,\n                 **kwargs: Any):\n        self.websocket = websocket\n        self.flow_id = flow_id\n        self.chat_id = chat_id\n        self.user_id = user_id\n\n        # Cache for tool calls intool_endWhen stitching the start and end together, store it in the database\n        self.tool_cache = {}\n        # self.tool_cache = {\n        #     'run_id': {\n        #         'input': {},\n        #         'category': \"\",\n        #     },  # Storage tool callinputMessage\n        # }\n\n        # Queue for Streaming Output\n        self.stream_queue: Queue = kwargs.get('stream_queue')\n\n    async def on_llm_new_token(self, token: str, **kwargs: Any) -> None:\n        chunk = kwargs.get('chunk')\n        # azureOccasionally returns aNone\n        if token is None and chunk is None:\n            return\n        reasoning_content = getattr(chunk.message, 'additional_kwargs',\n                                    {}).get('reasoning_content')\n        if token is None:\n            token = ''\n        resp = ChatResponse(message={\n            'content': token,\n            'reasoning_content': reasoning_content\n        },\n            type='stream',\n            flow_id=self.flow_id,\n            chat_id=self.chat_id)\n        # Streaming output is placed in a queue to facilitate recording of content to a database after interrupting the streaming output\n        await self.websocket.send_json(resp.dict())\n        if self.stream_queue:\n            if reasoning_content:\n                self.stream_queue.put({'type': 'reasoning', 'content': reasoning_content})\n            if token:\n                self.stream_queue.put({'type': 'answer', 'content': token})\n\n    async def on_llm_start(self, serialized: Dict[str, Any], prompts: List[str],\n                           **kwargs: Any) -> Any:\n        \"\"\"Run when LLM starts running.\"\"\"\n        logger.debug(f'llm_start prompts={prompts}')\n\n    async def on_llm_end(self, response: LLMResult, **kwargs: Any) -> Any:\n        \"\"\"Run when LLM ends running.\"\"\"\n        logger.debug(f'llm_end response={response}')\n\n    async def on_llm_error(self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any) -> Any:\n        \"\"\"Run when LLM errors.\"\"\"\n        logger.debug(f'on_llm_error error={error} kwargs={kwargs}')\n\n    async def on_chain_start(self, serialized: Dict[str, Any], inputs: Dict[str, Any],\n                             **kwargs: Any) -> Any:\n        \"\"\"Run when chain starts running.\"\"\"\n        logger.debug(f'on_chain_start inputs={inputs} kwargs={kwargs}')\n        logger.info('k=s act=on_chain_start flow_id={} input_dict={}', self.flow_id, inputs)\n\n    async def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> Any:\n        \"\"\"Run when chain ends running.\"\"\"\n        logger.debug(f'on_chain_end outputs={outputs} kwargs={kwargs}')\n        tmp_output = copy.deepcopy(outputs)\n        if isinstance(tmp_output, dict):\n            tmp_output.pop('source_documents', '')\n        logger.info('k=s act=on_chain_end flow_id={} output_dict={}', self.flow_id, tmp_output)\n\n    async def on_chain_error(self, error: Union[Exception, KeyboardInterrupt],\n                             **kwargs: Any) -> Any:\n        \"\"\"Run when chain errors.\"\"\"\n        logger.debug(f'on_chain_error error={error} kwargs={kwargs}')\n\n    async def on_tool_start(self, serialized: Dict[str, Any], input_str: str,\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool starts running.\"\"\"\n        logger.debug(\n            f'on_tool_start  serialized={serialized} input_str={input_str} kwargs={kwargs}')\n        logger.info('k=s act=on_tool_start flow_id={} tool_name={} input_str={}', self.flow_id,\n                    serialized.get('name'), input_str)\n\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=f'Tool input: {input_str}',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_tool_end(self, output: str, **kwargs: Any) -> Any:\n        \"\"\"Run when tool ends running.\"\"\"\n        logger.debug(f'on_tool_end  output={output} kwargs={kwargs}')\n        logger.info(\"k=s act=on_tool_end flow_id={} output='{}'\", self.flow_id, output)\n        observation_prefix = kwargs.get('observation_prefix', 'Tool output: ')\n        # from langchain.docstore.document import Document # noqa\n        # result = eval(output).get('result')\n        result = output if isinstance(output, str) else getattr(output, 'content', output)\n\n        # Create a formatted message.\n        intermediate_steps = f'{observation_prefix}{result[:100]}'\n\n        # Create a ChatResponse instance.\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=intermediate_steps,\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n\n        try:\n            # This is to emulate the stream of tokens\n            await self.websocket.send_json(resp.dict())\n        except Exception as e:\n            logger.error(e)\n\n    async def on_tool_error(self, error: Union[Exception, KeyboardInterrupt],\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool errors.\"\"\"\n        logger.debug(f'on_tool_error error={error} kwargs={kwargs}')\n\n    async def on_text(self, text: str, **kwargs: Any) -> Any:\n        \"\"\"Run on arbitrary text.\"\"\"\n        # This runs when first sending the prompt\n        # to the LLM, adding it will send the final prompt\n        # to the frontend\n        logger.debug(f'on_text text={text} kwargs={kwargs}')\n        if 'Prompt after formatting:' in text:\n            prompt_str = text[24:]\n            logger.info(\n                \"k=s act=on_text prompt='{}'\",\n                prompt_str,\n            )\n        sender = kwargs.get('sender')\n        receiver = kwargs.get('receiver')\n        if kwargs.get('sender'):\n            log = ChatResponse(message=text,\n                               type='end',\n                               sender=sender,\n                               receiver=receiver,\n                               flow_id=self.flow_id,\n                               chat_id=self.chat_id)\n            start = ChatResponse(type='start',\n                                 sender=sender,\n                                 receiver=receiver,\n                                 flow_id=self.flow_id,\n                                 chat_id=self.chat_id)\n\n            if receiver and receiver.get('is_self'):\n                await self.websocket.send_json(log.dict())\n            else:\n                await self.websocket.send_json(log.dict())\n                await self.websocket.send_json(start.dict())\n        elif 'category' in kwargs:\n            if 'autogen' == kwargs['category']:\n                log = ChatResponse(message=text,\n                                   type='stream',\n                                   flow_id=self.flow_id,\n                                   chat_id=self.chat_id)\n                await self.websocket.send_json(log.dict())\n                if kwargs.get('type'):\n                    # Under compatibility\n                    start = ChatResponse(type='start',\n                                         category=kwargs.get('type'),\n                                         flow_id=self.flow_id,\n                                         chat_id=self.chat_id)\n                    end = ChatResponse(type='end',\n                                       intermediate_steps=text,\n                                       category=kwargs.get('type'),\n                                       flow_id=self.flow_id,\n                                       chat_id=self.chat_id)\n                    await self.websocket.send_json(start.dict())\n                    await self.websocket.send_json(end.dict())\n            else:\n                log = ChatResponse(message=text,\n                                   intermediate_steps=kwargs['log'],\n                                   type=kwargs['type'],\n                                   category=kwargs['category'],\n                                   flow_id=self.flow_id,\n                                   chat_id=self.chat_id)\n                await self.websocket.send_json(log.dict())\n\n    async def on_agent_action(self, action: AgentAction, **kwargs: Any):\n        logger.debug(f'on_agent_action action={action} kwargs={kwargs}')\n        logger.info('k=s act=on_agent_action {}', action)\n        log = f'\\nThought: {action.log}'\n        # if there are line breaks, split them and send them\n        # as separate messages\n        log = log.replace('\\n', '\\n\\n')\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=log,\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_agent_finish(self, finish: AgentFinish, **kwargs: Any) -> Any:\n        \"\"\"Run on agent end.\"\"\"\n        logger.debug(f'on_agent_finish finish={finish} kwargs={kwargs}')\n        logger.info('k=s act=on_agent_finish {}', finish)\n        resp = ChatResponse(flow_id=self.flow_id,\n                            chat_id=self.chat_id,\n                            type='stream',\n                            intermediate_steps=finish.log)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_retriever_start(self, serialized: Dict[str, Any], query: str,\n                                 **kwargs: Any) -> Any:\n        \"\"\"Run when retriever start running.\"\"\"\n        logger.debug(f'on_retriever_start serialized={serialized} query={query} kwargs={kwargs}')\n        logger.info('k=s act=on_retriever_start flow_id={} query={} meta={}', self.flow_id, query,\n                    serialized.get('repr'))\n\n    async def on_retriever_end(self, result: List[Document], **kwargs: Any) -> Any:\n        \"\"\"Run when retriever end running.\"\"\"\n        # todo Determine skill permissions\n        logger.debug(f'on_retriever_end result={result} kwargs={kwargs}')\n        if result:\n            tmp_result = copy.deepcopy(result)\n            [doc.metadata.pop('bbox', '') for doc in tmp_result]\n            logger.info('k=s act=on_retriever_end flow_id={} result_without_bbox={}', self.flow_id,\n                        tmp_result)\n\n    async def on_chat_model_start(self, serialized: Dict[str, Any],\n                                  messages: List[List[BaseMessage]], **kwargs: Any) -> Any:\n        # \"\"\"Run when retriever end running.\"\"\"\n        # content = messages[0][0] if isinstance(messages[0][0], str) else messages[0][0].get('content')\n        # stream = ChatResponse(message=f'{content}', type='stream')\n        # await self.websocket.send_json(stream.dict())\n        logger.debug(\n            f'on_chat_model_start serialized={serialized} messages={messages} kwargs={kwargs}')\n        logger.info('k=s act=on_chat_model_start messages={}', messages)\n\n\nclass StreamingLLMCallbackHandler(BaseCallbackHandler):\n    \"\"\"Callback handler for streaming LLM responses.\"\"\"\n\n    def __init__(self,\n                 websocket: WebSocket,\n                 flow_id: str,\n                 chat_id: str,\n                 user_id: int = None,\n                 **kwargs: Any):\n        self.websocket = websocket\n        self.flow_id = flow_id\n        self.chat_id = chat_id\n        self.user_id = user_id\n\n        self.stream_queue: Queue = kwargs.get('stream_queue')\n\n    def on_llm_new_token(self, token: str, **kwargs: Any) -> None:\n        # azureOccasionally returns aNone\n        if token is None:\n            return\n        resp = ChatResponse(message=token,\n                            type='stream',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        if self.websocket:\n            loop = asyncio.get_event_loop()\n            coroutine = self.websocket.send_json(resp.dict())\n            asyncio.run_coroutine_threadsafe(coroutine, loop)\n\n        if self.stream_queue:\n            self.stream_queue.put(token)\n\n    def on_agent_action(self, action: AgentAction, **kwargs: Any) -> Any:\n        log = f'\\nThought: {action.log}'\n        # if there are line breaks, split them and send them\n        # as separate messages\n        log = log.replace('\\n', '\\n\\n')\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=log,\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        if self.websocket:\n            loop = asyncio.get_event_loop()\n            coroutine = self.websocket.send_json(resp.dict())\n            asyncio.run_coroutine_threadsafe(coroutine, loop)\n        logger.info('k=s act=on_agent_action {}', action)\n\n    def on_agent_finish(self, finish: AgentFinish, **kwargs: Any) -> Any:\n        \"\"\"Run on agent end.\"\"\"\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=finish.log,\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        if self.websocket:\n            loop = asyncio.get_event_loop()\n            coroutine = self.websocket.send_json(resp.dict())\n            asyncio.run_coroutine_threadsafe(coroutine, loop)\n        logger.info('k=s act=on_agent_finish {}', finish)\n\n    def on_tool_start(self, serialized: Dict[str, Any], input_str: str, **kwargs: Any) -> Any:\n        \"\"\"Run when tool starts running.\"\"\"\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=f'Tool input: {input_str}',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        if self.websocket:\n            loop = asyncio.get_event_loop()\n            coroutine = self.websocket.send_json(resp.dict())\n            asyncio.run_coroutine_threadsafe(coroutine, loop)\n        logger.info('k=s act=on_tool_start flow_id={} tool_name={} input_str={}', self.flow_id,\n                    serialized.get('name'), input_str)\n\n    def on_tool_end(self, output: str, **kwargs: Any) -> Any:\n        \"\"\"Run when tool ends running.\"\"\"\n        observation_prefix = kwargs.get('observation_prefix', 'Tool output: ')\n\n        # from langchain.docstore.document import Document # noqa\n        # result = eval(output).get('result')\n        result = output if isinstance(output, str) else getattr(output, 'content', output)\n        # Create a formatted message.\n        intermediate_steps = f'{observation_prefix}{result}'\n\n        # Create a ChatResponse instance.\n        resp = ChatResponse(type='stream',\n                            intermediate_steps=intermediate_steps,\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n\n        # Try to send the response, handle potential errors.\n        try:\n            if self.websocket:\n                loop = asyncio.get_event_loop()\n                coroutine = self.websocket.send_json(resp.dict())\n                asyncio.run_coroutine_threadsafe(coroutine, loop)\n        except Exception as e:\n            logger.error(e)\n        logger.info(\"k=s act=on_tool_end flow_id={} output='{}'\", self.flow_id, output)\n\n    def on_retriever_start(self, serialized: Dict[str, Any], query: str, **kwargs: Any) -> Any:\n        \"\"\"Run when retriever start running.\"\"\"\n        logger.info('k=s act=on_retriever_start flow_id={} query={} meta={}', self.flow_id, query,\n                    serialized.get('repr'))\n\n    def on_retriever_end(self, result: List[Document], **kwargs: Any) -> Any:\n        \"\"\"Run when retriever end running.\"\"\"\n        # todo Determine skill permissions\n        logger.debug(f'retriver_result result={result}')\n        if result:\n            tmp_result = copy.deepcopy(result)\n            [doc.metadata.pop('bbox', '') for doc in tmp_result]\n            logger.info('k=s act=on_retriever_end flow_id={} result_without_bbox={}', self.flow_id,\n                        tmp_result)\n\n    def on_chain_start(self, serialized: Dict[str, Any], inputs: Dict[str, Any],\n                       **kwargs: Any) -> Any:\n        \"\"\"Run when chain starts running.\"\"\"\n        logger.debug(f'on_chain_start inputs={inputs}')\n        logger.info('k=s act=on_chain_start flow_id={} input_dict={}', self.flow_id, inputs)\n\n    def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> Any:\n        \"\"\"Run when chain ends running.\"\"\"\n        logger.debug(f'on_chain_end outputs={outputs}')\n        tmp_output = copy.deepcopy(outputs)\n        if isinstance(tmp_output, dict):\n            tmp_output.pop('source_documents', '')\n        logger.info('k=s act=on_chain_end flow_id={} output_dict={}', self.flow_id, tmp_output)\n\n    def on_chat_model_start(self, serialized: Dict[str, Any], messages: List[List[BaseMessage]],\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when retriever end running.\"\"\"\n        # sender = kwargs['sender']\n        # receiver = kwargs['receiver']\n        # content = messages[0][0] if isinstance(messages[0][0], str) else messages[0][0].get('content')\n        # end = ChatResponse(message=f'{content}', type='end', sender=sender, recevier=receiver)\n        # start = ChatResponse(type='start', sender=sender, recevier=receiver)\n        # loop = asyncio.get_event_loop()\n        # coroutine2 = self.websocket.send_json(end.dict())\n        # coroutine3 = self.websocket.send_json(start.dict())\n        # asyncio.run_coroutine_threadsafe(coroutine2, loop)\n        # asyncio.run_coroutine_threadsafe(coroutine3, loop)\n        logger.debug(f'on_chat result={messages}')\n        logger.info('k=s act=on_chat_model_start messages={}', messages)\n\n    def on_text(self, text: str, **kwargs) -> Any:\n        logger.info(text)\n        if 'Prompt after formatting:' in text:\n            prompt_str = text[24:]\n            logger.info(\n                \"k=s act=on_text prompt='{}'\",\n                prompt_str,\n            )\n\n\nclass AsyncGptsLLMCallbackHandler(AsyncStreamingLLMCallbackHandler):\n\n    async def on_tool_start(self, serialized: Dict[str, Any], input_str: str,\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool starts running.\"\"\"\n        logger.debug(\n            f'on_tool_start serialized={serialized} input_str={input_str} kwargs={kwargs}')\n        pass\n\n    async def on_tool_end(self, output: str, **kwargs: Any) -> Any:\n        \"\"\"Run when tool ends running.\"\"\"\n        logger.debug(f'on_tool_end output={output} kwargs={kwargs}')\n        pass\n\n\nclass AsyncGptsDebugCallbackHandler(AsyncGptsLLMCallbackHandler):\n\n    @staticmethod\n    def parse_tool_category(tool_name) -> (str, str):\n        \"\"\"\n        will betool_nameResolve totool_categoryand the realtool_name\n        \"\"\"\n        tool_category = 'tool'\n        if tool_name.startswith('flow_'):\n            # Description is a skill call\n            tool_category = 'flow'\n            tool_name = tool_name.replace('flow_', '')\n        elif tool_name.startswith('knowledge_'):\n            # Description is a knowledge base call\n            tool_category = 'knowledge'\n            tool_name = tool_name.replace('knowledge_', '')\n        return tool_name, tool_category\n\n    async def on_chat_model_start(self, serialized: Dict[str, Any],\n                                  messages: List[List[BaseMessage]], **kwargs: Any) -> Any:\n        # \"\"\"Run when retriever end running.\"\"\"\n        # content = messages[0][0] if isinstance(messages[0][0], str) else messages[0][0].get('content')\n        # stream = ChatResponse(message=f'{content}', type='stream')\n        # await self.websocket.send_json(stream.dict())\n        logger.debug(\n            f'on_chat_model_start serialized={serialized} messages={messages} kwargs={kwargs}')\n        resp = ChatResponse(type='start',\n                            category='processing',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_llm_end(self, response: LLMResult, **kwargs: Any) -> Any:\n        \"\"\"Run when LLM ends running.\"\"\"\n        logger.debug(f'llm_end response={response}')\n        resp = ChatResponse(type='end',\n                            category='processing',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_llm_error(self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any) -> Any:\n        \"\"\"Run when LLM errors.\"\"\"\n        logger.debug(f'on_llm_error error={error} kwargs={kwargs}')\n        resp = ChatResponse(type='end',\n                            category='processing',\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id)\n        await self.websocket.send_json(resp.dict())\n\n    async def on_tool_start(self, serialized: Dict[str, Any], input_str: str,\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool starts running.\"\"\"\n        logger.debug(\n            f'on_tool_start serialized={serialized} input_str={input_str} kwargs={kwargs}')\n\n        input_str = input_str\n        tool_name, tool_category = self.parse_tool_category(serialized['name'])\n        input_info = {'tool_key': tool_name, 'serialized': serialized, 'input_str': input_str}\n        self.tool_cache[kwargs.get('run_id').hex] = {\n            'input': input_info,\n            'category': tool_category,\n            'steps': f'Tool input: \\n\\n{input_str}\\n\\n',\n        }\n        resp = ChatResponse(type='start',\n                            category=tool_category,\n                            intermediate_steps=self.tool_cache[kwargs.get('run_id').hex]['steps'],\n                            message=json.dumps(input_info, ensure_ascii=False),\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id,\n                            extra=json.dumps({'run_id': kwargs.get('run_id').hex}))\n        await self.websocket.send_json(resp.dict())\n\n    async def on_tool_end(self, output: ToolMessage, **kwargs: Any) -> Any:\n        \"\"\"Run when tool ends running.\"\"\"\n        logger.debug(f'on_tool_end output={output} kwargs={kwargs}')\n        observation_prefix = kwargs.get('observation_prefix', 'Tool output: ')\n\n        result = output if isinstance(output, str) else getattr(output, 'content', output)\n        # Create a formatted message.\n        intermediate_steps = f'{observation_prefix}\\n\\n{result}'\n        tool_name, tool_category = self.parse_tool_category(kwargs.get('name'))\n\n        # Create a ChatResponse instance.\n        output_info = {'tool_key': tool_name, 'output': result}\n        resp = ChatResponse(type='end',\n                            category=tool_category,\n                            intermediate_steps=intermediate_steps,\n                            message=json.dumps(output_info, ensure_ascii=False),\n                            flow_id=self.flow_id,\n                            chat_id=self.chat_id,\n                            extra=json.dumps({'run_id': kwargs.get('run_id').hex}))\n\n        await self.websocket.send_json(resp.dict())\n        # FROMtool cacheGet ininputMessage\n        input_info = self.tool_cache.get(kwargs.get('run_id').hex)\n        if input_info:\n            if not self.chat_id:\n                # Explain that it is a debugging interface and does not need to persist data\n                self.tool_cache.pop(kwargs.get('run_id').hex)\n                return\n            output_info.update(input_info['input'])\n            intermediate_steps = f'{input_info[\"steps\"]}\\n\\n{intermediate_steps}'\n            ChatMessageDao.insert_one(\n                ChatMessageModel(is_bot=1,\n                                 message=json.dumps(output_info),\n                                 intermediate_steps=intermediate_steps,\n                                 category=tool_category,\n                                 type='end',\n                                 flow_id=self.flow_id,\n                                 chat_id=self.chat_id,\n                                 user_id=self.user_id,\n                                 extra=json.dumps({'run_id': kwargs.get('run_id').hex})))\n            self.tool_cache.pop(kwargs.get('run_id').hex)\n\n    async def on_tool_error(self, error: Union[Exception, KeyboardInterrupt],\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool errors.\"\"\"\n        logger.debug(f'on_tool_error error={error} kwargs={kwargs}')\n        input_info = self.tool_cache.get(kwargs.get('run_id').hex)\n        if input_info:\n            output_info = {'output': 'Error: ' + str(error)}\n            output_info.update(input_info['input'])\n            resp = ChatResponse(type='end',\n                                category=input_info['category'],\n                                intermediate_steps='\\n\\nTool output:\\n\\n  Error: ' + str(error),\n                                message=json.dumps(output_info, ensure_ascii=False),\n                                flow_id=self.flow_id,\n                                chat_id=self.chat_id,\n                                extra=json.dumps({'run_id': kwargs.get('run_id').hex}))\n            await self.websocket.send_json(resp.dict())\n\n            # Save tool call history\n            if not self.chat_id:\n                # Explain that it is a debugging interface and does not need to persist data\n                self.tool_cache.pop(kwargs.get('run_id').hex)\n                return\n            tool_name, tool_category = self.parse_tool_category(kwargs.get('name'))\n            self.tool_cache.pop(kwargs.get('run_id').hex)\n            ChatMessageDao.insert_one(\n                ChatMessageModel(\n                    is_bot=1,\n                    message=json.dumps(output_info),\n                    intermediate_steps=f'{input_info[\"steps\"]}\\n\\nTool output:\\n\\n  Error: ' +\n                                       str(error),\n                    category=tool_category,\n                    type='end',\n                    flow_id=self.flow_id,\n                    chat_id=self.chat_id,\n                    user_id=self.user_id,\n                    extra=json.dumps({'run_id': kwargs.get('run_id').hex})))\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/chat.py",
    "content": "import asyncio\nimport json\nfrom typing import List, Optional, Union\nfrom uuid import UUID, uuid4\n\nfrom fastapi import (APIRouter, Body, HTTPException, Query, Request, WebSocket, WebSocketException)\nfrom fastapi.params import Depends\nfrom fastapi.responses import StreamingResponse\nfrom loguru import logger\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.base import BaseService\nfrom bisheng.api.services.chat_imp import comment_answer\nfrom bisheng.api.services.knowledge_imp import delete_es, delete_vector\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.api.utils import build_flow, build_input_keys_response\nfrom bisheng.api.v1.schema.base_schema import PageList\nfrom bisheng.api.v1.schema.chat_schema import AppChatList\nfrom bisheng.api.v1.schema.workflow import WorkflowEventType\nfrom bisheng.api.v1.schemas import (AddChatMessages, BuildStatus, BuiltResponse, ChatInput,\n                                    ChatList, InitResponse, StreamData,\n                                    UnifiedResponseModel, resp_200)\nfrom bisheng.chat.manager import ChatManager\nfrom bisheng.chat_session.domain.chat import ChatSessionService\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.chat import ChatServiceError, SkillDeletedError, SkillNotBuildError, SkillNotOnlineError\nfrom bisheng.common.errcode.http_error import NotFoundError, UnAuthorizedError, ServerError\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData, DeleteMessageSessionEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.assistant import AssistantDao\nfrom bisheng.database.models.flow import Flow, FlowDao, FlowStatus, FlowType\nfrom bisheng.database.models.flow_version import FlowVersionDao\nfrom bisheng.database.models.mark_record import MarkRecordDao, MarkRecordStatus\nfrom bisheng.database.models.mark_task import MarkTaskDao\nfrom bisheng.database.models.message import ChatMessage, ChatMessageDao, LikedType\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao, SensitiveStatus\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.graph.graph.base import Graph\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils import get_request_ip\nfrom bisheng.utils.util import get_cache_key\n\nrouter = APIRouter(tags=['Chat'])\nchat_manager = ChatManager()\nexpire = 600  # reids 60s Overdue\n\n\n@router.get('/chat/app/list')\ndef get_app_chat_list(*,\n                      keyword: Optional[str] = None,\n                      mark_user: Optional[str] = None,\n                      mark_status: Optional[int] = None,\n                      task_id: Optional[int] = Query(default=None, description='Callout TaskID'),\n                      flow_type: Optional[int] = None,\n                      page_num: Optional[int] = 1,\n                      page_size: Optional[int] = 20,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" By annotating tasksIDGet the corresponding session list \"\"\"\n\n    group_flow_ids = []\n    flow_ids, user_ids = [], []\n\n    user_groups = UserGroupDao.get_user_admin_group(login_user.user_id)\n    if task_id:\n        if not login_user.is_admin():\n            task = MarkTaskDao.get_task_byid(task_id)\n            if str(login_user.user_id) not in task.process_users.split(','):\n                raise UnAuthorizedError()\n            # Determine if it is a user group administrator\n            if user_groups:\n                task = MarkTaskDao.get_task_byid(task_id)\n                group_flow_ids = task.app_id.split(',')\n                # group_flow_ids.extend([app_id for one in t_list for app_id in one.app_id.split(\",\")])\n                if not group_flow_ids:\n                    return resp_200(PageList(list=[], total=0))\n            else:\n                task = MarkTaskDao.get_task_byid(task_id)\n                if str(login_user.user_id) not in task.process_users.split(','):\n                    raise UnAuthorizedError()\n                # Normal\n                # user_ids = [login_user.user_id]\n                group_flow_ids = MarkTaskDao.get_task_byid(task_id).app_id.split(',')\n\n        else:\n            group_flow_ids = MarkTaskDao.get_task_byid(task_id).app_id.split(',')\n\n    if keyword:\n        flows = FlowDao.get_flow_list_by_name(name=keyword)\n        assistants, _ = AssistantDao.get_all_assistants(name=keyword, page=0, limit=0)\n        users = UserDao.search_user_by_name(user_name=keyword)\n        if flows:\n            flow_ids = [flow.id for flow in flows]\n        if assistants:\n            flow_ids.extend([assistant.id for assistant in assistants])\n        if user_ids:\n            user_ids = [user.user_id for user in users]\n        # Retrieval content is empty\n        if not flow_ids and not user_ids:\n            return resp_200(PageList(list=[], total=0))\n\n    if group_flow_ids:\n        if flow_ids and keyword:\n            flow_ids = flow_ids\n        else:\n            flow_ids = group_flow_ids\n\n    # Get session list\n    res = MessageSessionDao.filter_session(flow_ids=flow_ids, user_ids=user_ids)\n    total = len(res)\n\n    # Query the status of a session\n    chat_status_ids = [one.chat_id for one in res]\n    chat_status_ids = MarkRecordDao.filter_records(task_id=task_id, chat_ids=chat_status_ids)\n    chat_status_ids = {one.session_id: one for one in chat_status_ids}\n\n    result = []\n    for one in res:\n        tmp = AppChatList(\n            chat_id=one.chat_id,\n            flow_id=one.flow_id,\n            flow_name=one.flow_name,\n            flow_type=one.flow_type,\n            user_id=one.user_id,\n            user_name=one.user_id,\n            create_time=one.create_time,\n            like_count=one.like,\n            dislike_count=one.dislike,\n            copied_count=one.copied,\n            mark_status=MarkRecordStatus.DEFAULT.value,\n            mark_user=None,\n        )\n        if mark_info := chat_status_ids.get(one.chat_id):\n            tmp.mark_id = mark_info.create_id\n            tmp.mark_status = mark_info.status if mark_info.status is not None else 1\n            tmp.mark_user = mark_info.create_user\n        if mark_status:\n            if mark_status != tmp.mark_status:\n                continue\n        if mark_user:\n            users = [int(one) for one in mark_user.split(',')]\n            if tmp.mark_id not in users:\n                continue\n        result.append(tmp)\n\n    result = result[(page_num - 1) * page_size: page_num * page_size]\n\n    return resp_200(PageList(list=result, total=total))\n\n\n@router.get('/chat/history')\nasync def get_chat_message(*,\n                           chat_id: str,\n                           flow_id: str,\n                           id: Optional[str] = None,\n                           page_size: Optional[int] = 20,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           share_link: Union['ShareLink', None] = Depends(header_share_token_parser)):\n    history = await ChatSessionService.get_chat_history(chat_id, flow_id, id, page_size)\n\n    # # Authorization check\n    if history and login_user.user_id != history[0].user_id:\n        if not share_link or share_link.resource_id != chat_id:\n            return UnAuthorizedError.return_resp()\n    return resp_200(history)\n\n\n@router.get('/chat/info')\nasync def get_chat_info(chat_id: str = Query(..., description='Session Uniqueid，chai_id')):\n    \"\"\" Setujuchat_idGet session details \"\"\"\n    res = await MessageSessionDao.async_get_one(chat_id)\n    res.flow_logo = WorkFlowService.get_logo_share_link(res.flow_logo)\n    return resp_200(res)\n\n\n@router.post('/chat/conversation/rename')\ndef rename(conversationId: str = Body(..., description='Sessionsid', embed=True),\n           name: str = Body(..., description='Session name', embed=True),\n           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    conversation = MessageSessionDao.get_one(conversationId)\n    conversation.flow_name = name\n    MessageSessionDao.insert_one(conversation)\n    return resp_200()\n\n\n@router.post('/chat/conversation/copy')\ndef copy(conversationId: str = Body(..., description='Sessionsid', embed=True), ):\n    conversation = MessageSessionDao.get_one(conversationId)\n    conversation.chat_id = uuid4().hex\n    conversation = MessageSessionDao.insert_one(conversation)\n\n    if conversation.flow_type == FlowType.FLOW.value:\n        app_type = ApplicationTypeEnum.SKILL\n    elif conversation.flow_type == FlowType.WORKFLOW.value:\n        app_type = ApplicationTypeEnum.WORKFLOW\n    elif conversation.flow_type == FlowType.ASSISTANT.value:\n        app_type = ApplicationTypeEnum.ASSISTANT\n    elif conversation.flow_type == FlowType.LINSIGHT.value:\n        app_type = ApplicationTypeEnum.LINSIGHT\n    else:\n        app_type = ApplicationTypeEnum.DAILY_CHAT\n\n    # RecordTelemetryJournal\n    telemetry_service.log_event_sync(user_id=conversation.user_id,\n                                     event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                     trace_id=trace_id_var.get(),\n                                     event_data=NewMessageSessionEventData(\n                                         session_id=conversation.chat_id,\n                                         app_id=conversation.flow_id,\n                                         source=\"platform\",\n                                         app_name=conversation.flow_name,\n                                         app_type=app_type\n                                     ))\n    msg_list = ChatMessageDao.get_messages_by_chat_id(conversationId)\n    if msg_list:\n        for msg in msg_list:\n            msg.chat_id = conversation.chat_id\n            msg.id = None\n            ChatMessageDao.insert_one(msg)\n\n\n@router.delete('/chat/{chat_id}', status_code=200)\nasync def del_chat_id(*,\n                      request: Request,\n                      chat_id: str,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # Get a message\n    session_chat = await MessageSessionDao.async_get_one(chat_id)\n\n    if not session_chat or session_chat.is_delete:\n        return resp_200()\n    if session_chat.flow_type == FlowType.FLOW.value:\n        # Processing Temporary Data\n        col_name = f'tmp_{session_chat.flow_id}_{chat_id}'\n        logger.info('tmp_delete_milvus col={}', col_name)\n        await asyncio.to_thread(delete_vector, collection_name=col_name, partition_key=None)\n        await asyncio.to_thread(delete_es, col_name)\n    if session_chat.flow_type == FlowType.ASSISTANT.value:\n        assistant_info = await AssistantDao.aget_one_assistant(session_chat.flow_id)\n        if assistant_info:\n            await AuditLogService.delete_chat_assistant(login_user, get_request_ip(request), assistant_info)\n    elif session_chat.flow_type == FlowType.WORKSTATION.value:\n        await AuditLogService.delete_chat_message(login_user, get_request_ip(request), session_chat)\n    else:\n        # Determine whether it is an assistant or a skill, Write Audit Log\n        flow_info = await FlowDao.aget_flow_by_id(session_chat.flow_id)\n        if flow_info and flow_info.flow_type == FlowType.FLOW.value:\n            await AuditLogService.delete_chat_flow(login_user, get_request_ip(request), flow_info)\n        elif flow_info:\n            await AuditLogService.delete_chat_workflow(login_user, get_request_ip(request), flow_info)\n\n    # Set the delete state of the session\n    await MessageSessionDao.delete_session(chat_id)\n\n    # RecordTelemetryJournal\n    await telemetry_service.log_event(user_id=login_user.user_id,\n                                      event_type=BaseTelemetryTypeEnum.DELETE_MESSAGE_SESSION,\n                                      trace_id=trace_id_var.get(),\n                                      event_data=DeleteMessageSessionEventData(session_id=chat_id)\n                                      )\n\n    return resp_200()\n\n\n@router.post('/chat/message', status_code=200)\ndef add_chat_messages(*,\n                      request: Request,\n                      data: AddChatMessages,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Add a full Q&A record, Security Check Write Usage\n    \"\"\"\n    logger.debug(f'gateway add_chat_messages {data}')\n    flow_id = data.flow_id\n    chat_id = data.chat_id\n    if not chat_id or not flow_id:\n        raise ServerError.http_exception()\n    save_human_message = data.human_message\n    flow_info = FlowDao.get_flow_by_id(flow_id)\n    if flow_info and flow_info.flow_type == FlowType.WORKFLOW.value:\n        # The input of the workflow, the actual input needs to be parsed from the input\n        try:\n            tmp_human_message = json.loads(data.human_message)\n            for node_id, node_input in tmp_human_message.items():\n                save_human_message = node_input.get('message')\n        except:\n            save_human_message = data.human_message\n\n    human_message = ChatMessage(flow_id=flow_id,\n                                chat_id=chat_id,\n                                user_id=login_user.user_id,\n                                is_bot=False,\n                                message=save_human_message,\n                                sensitive_status=SensitiveStatus.VIOLATIONS.value,\n                                type='human',\n                                category='question')\n    bot_message = ChatMessage(flow_id=flow_id,\n                              chat_id=chat_id,\n                              user_id=login_user.user_id,\n                              is_bot=True,\n                              message=data.answer_message,\n                              sensitive_status=SensitiveStatus.PASS.value,\n                              type='bot',\n                              category='answer')\n    message_dbs = ChatMessageDao.insert_batch([human_message, bot_message])\n    # Update session status\n    MessageSessionDao.update_sensitive_status(chat_id, SensitiveStatus.VIOLATIONS)\n\n    # Write Audit Log, Determine if it is a new session\n    session_info = MessageSessionDao.get_one(chat_id=chat_id)\n    if not session_info:\n        # New Session\n        # Determine whether it is an assistant or a skill, Write Audit Log\n        if flow_info:\n            session_info = MessageSessionDao.insert_one(MessageSession(\n                chat_id=chat_id,\n                flow_id=flow_id,\n                flow_type=flow_info.flow_type,\n                flow_name=flow_info.name,\n                user_id=login_user.user_id,\n                sensitive_status=SensitiveStatus.VIOLATIONS.value,\n            ))\n            if flow_info.flow_type == FlowType.FLOW.value:\n                AuditLogService.create_chat_flow(login_user, get_request_ip(request), flow_id, flow_info)\n            elif flow_info.flow_type == FlowType.WORKFLOW.value:\n                AuditLogService.create_chat_workflow(login_user, get_request_ip(request), flow_id, flow_info)\n        else:\n            assistant_info = AssistantDao.get_one_assistant(flow_id)\n            if assistant_info:\n                session_info = MessageSessionDao.insert_one(MessageSession(\n                    chat_id=chat_id,\n                    flow_id=flow_id,\n                    flow_type=FlowType.ASSISTANT.value,\n                    flow_name=assistant_info.name,\n                    user_id=login_user.user_id,\n                    sensitive_status=SensitiveStatus.VIOLATIONS.value,\n                ))\n                AuditLogService.create_chat_assistant(login_user, get_request_ip(request),\n                                                      flow_id)\n        if session_info:\n            if session_info.flow_type == FlowType.FLOW.value:\n                app_type = ApplicationTypeEnum.SKILL\n            elif session_info.flow_type == FlowType.WORKFLOW.value:\n                app_type = ApplicationTypeEnum.WORKFLOW\n            elif session_info.flow_type == FlowType.ASSISTANT.value:\n                app_type = ApplicationTypeEnum.ASSISTANT\n            elif session_info.flow_type == FlowType.LINSIGHT.value:\n                app_type = ApplicationTypeEnum.LINSIGHT\n            else:\n                app_type = ApplicationTypeEnum.DAILY_CHAT\n\n            # RecordTelemetryJournal\n            telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                             event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                             trace_id=trace_id_var.get(),\n                                             event_data=NewMessageSessionEventData(\n                                                 session_id=session_info.session_id,\n                                                 app_id=flow_id,\n                                                 source=\"platform\",\n                                                 app_name=session_info.flow_name,\n                                                 app_type=app_type\n                                             ))\n\n    return resp_200(data=message_dbs)\n\n\n@router.put('/chat/message/{message_id}', status_code=200)\ndef update_chat_message(*,\n                        message_id: int,\n                        message: str = Body(embed=True),\n                        category: str = Body(default=None, embed=True),\n                        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Update the content of a message Security Check Usage\"\"\"\n    logger.info(\n        f'update_chat_message message_id={message_id} message={message} login_user={login_user.user_name}'\n    )\n    chat_message = ChatMessageDao.get_message_by_id(message_id)\n    if not chat_message:\n        return NotFoundError.return_resp()\n    if chat_message.user_id != login_user.user_id:\n        return UnAuthorizedError.return_resp()\n\n    chat_message.message = message\n    if category:\n        chat_message.category = category\n    chat_message.source = False\n    chat_message.sensitive_status = SensitiveStatus.VIOLATIONS.value\n\n    ChatMessageDao.update_message_model(chat_message)\n\n    MessageSessionDao.update_sensitive_status(chat_message.chat_id, SensitiveStatus.VIOLATIONS)\n\n    return resp_200()\n\n\n@router.delete('/chat/message/{message_id}', status_code=200)\ndef del_message_id(*, message_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ChatMessageDao.delete_by_message_id(login_user.user_id, message_id)\n\n    return resp_200()\n\n\n@router.post('/liked', status_code=200)\ndef like_response(*, data: ChatInput):\n    message_id = data.message_id\n    message = ChatMessageDao.get_message_by_id(data.message_id)\n    if not message:\n        raise NotFoundError.http_exception()\n\n    if message.liked == data.liked:\n        return resp_200()\n\n    like_count = 0\n    dislike_count = 0\n    if message.liked == LikedType.UNRATED.value:\n        if data.liked == LikedType.LIKED.value:\n            like_count = 1\n        elif data.liked == LikedType.DISLIKED.value:\n            dislike_count = 1\n    elif message.liked == LikedType.LIKED.value:\n        like_count = -1\n        if data.liked == LikedType.DISLIKED.value:\n            dislike_count = 1\n    elif message.liked == LikedType.DISLIKED.value:\n        dislike_count = -1\n        if data.liked == LikedType.LIKED.value:\n            like_count = 1\n\n    message.liked = data.liked\n    ChatMessageDao.update_message_model(message)\n    logger.info('k=s act=liked message_id={} liked={}', message_id, data.liked)\n\n    # Number of thumbs up and down steps in the update session table\n    MessageSessionDao.add_like_count(message.chat_id, like_count)\n    MessageSessionDao.add_dislike_count(message.chat_id, dislike_count)\n\n    return resp_200()\n\n\n@router.post('/chat/copied', status_code=200)\ndef copied_message(message_id: int = Body(embed=True)):\n    \"\"\" Upload CopymessageData \"\"\"\n    message = ChatMessageDao.get_message_by_id(message_id)\n    if not message:\n        raise NotFoundError.http_exception()\n    if message.copied != 1:\n        ChatMessageDao.update_message_copied(message_id, 1)\n        MessageSessionDao.add_copied_count(message.chat_id, 1)\n    return resp_200()\n\n\n@router.post('/chat/comment', status_code=200)\ndef comment_resp(*, data: ChatInput):\n    comment_answer(data.message_id, data.comment)\n    return resp_200()\n\n\n@router.get('/chat/list')\ndef get_session_list(page: Optional[int] = Query(default=1, ge=1, le=1000),\n                     limit: Optional[int] = Query(default=10, ge=1, le=100),\n                     flow_type: Optional[List[int]] = Query(default=None, description='Abilities Category'),\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    res = MessageSessionDao.filter_session(user_ids=[login_user.user_id],\n                                           flow_type=flow_type,\n                                           page=page,\n                                           limit=limit,\n                                           include_delete=False)\n    chat_ids = []\n    flow_ids = []\n    for one in res:\n        chat_ids.append(one.chat_id)\n        flow_ids.append(one.flow_id)\n    flow_list = FlowDao.get_flow_by_ids(flow_ids)\n    assistant_list = AssistantDao.get_assistants_by_ids(flow_ids)\n    logo_map = {one.id: BaseService.get_logo_share_link(one.logo) for one in flow_list}\n    logo_map.update({one.id: BaseService.get_logo_share_link(one.logo) for one in assistant_list})\n    latest_messages = ChatMessageDao.get_latest_message_by_chat_ids(chat_ids,\n                                                                    exclude_category=WorkflowEventType.UserInput.value)\n    latest_messages = {one.chat_id: one for one in latest_messages}\n    return resp_200([\n        ChatList(\n            chat_id=one.chat_id,\n            flow_id=one.flow_id,\n            flow_name=one.flow_name,\n            flow_type=one.flow_type,\n            logo=logo_map.get(one.flow_id, ''),\n            latest_message=latest_messages.get(one.chat_id, None),\n            create_time=one.create_time,\n            update_time=one.update_time) for one in res\n    ])\n\n\n# Access to all live skills and assistants\n@router.get('/chat/online')\ndef get_online_chat(*,\n                    keyword: Optional[str] = None,\n                    tag_id: Optional[int] = None,\n                    page: Optional[int] = 1,\n                    limit: Optional[int] = 10,\n                    user: UserPayload = Depends(UserPayload.get_login_user)):\n    data, _ = WorkFlowService.get_all_flows(user, keyword, FlowStatus.ONLINE.value, tag_id, None, page, limit)\n    return resp_200(data=data)\n\n\n@router.websocket('/chat/{flow_id}')\nasync def chat(\n        *,\n        flow_id: UUID,\n        websocket: WebSocket,\n        chat_id: Optional[str] = None,\n        version_id: Optional[int] = None,\n        login_user: UserPayload = Depends(UserPayload.get_login_user_from_ws),\n):\n    \"\"\"Websocket endpoint for chat.\"\"\"\n    flow_id = flow_id.hex\n\n    redis_client = await get_redis_client()\n\n    try:\n        user_id = login_user.user_id\n        if chat_id:\n            with get_sync_db_session() as session:\n                db_flow = session.get(Flow, flow_id)\n            if not db_flow:\n                await websocket.accept()\n                await SkillDeletedError().websocket_close_message(websocket=websocket)\n            if db_flow.status != 2:\n                await websocket.accept()\n                await SkillNotOnlineError().websocket_close_message(websocket=websocket)\n            graph_data = db_flow.data\n        else:\n            flow_data_key = 'flow_data_' + flow_id\n            if version_id:\n                flow_data_key = flow_data_key + '_' + str(version_id)\n            if not await redis_client.aexists(flow_data_key) or str(\n                    await redis_client.ahget(flow_data_key, 'status'),\n                    'utf-8') != BuildStatus.SUCCESS.value:\n                await websocket.accept()\n                await SkillNotBuildError().websocket_close_message(websocket=websocket)\n                return\n            graph_data = json.loads(await redis_client.ahget(flow_data_key, 'graph_data'))\n\n        if not chat_id:\n            # When debugging, initialize the object every time\n            chat_manager.set_cache(get_cache_key(flow_id, chat_id), None)\n\n        trace_id_var.set(chat_id)\n        logger.info('websocket_verify_ok begin=handle_websocket')\n        await chat_manager.handle_websocket(flow_id,\n                                            chat_id,\n                                            websocket,\n                                            user_id,\n                                            gragh_data=graph_data)\n    except WebSocketException as exc:\n        await ChatServiceError(exception=exc).websocket_close_message(websocket=websocket)\n    except Exception as exc:\n        logger.exception(f'Error in chat websocket: {str(exc)}')\n        messsage = exc.detail if isinstance(exc, HTTPException) else str(exc)\n        await ChatServiceError(exception=Exception(messsage)).websocket_close_message(websocket=websocket)\n\n\n@router.post('/build/init/{flow_id}')\nasync def init_build(*,\n                     graph_data: dict,\n                     flow_id: str,\n                     version_id: Optional[int] = Query(default=None, description='Skill VersionID')):\n    \"\"\"Initialize the build by storing graph data and returning a unique session ID.\"\"\"\n    chat_id = graph_data.get('chat_id')\n    flow_data_key = 'flow_data_' + flow_id\n\n    flow_data_store = await get_redis_client()\n\n    if chat_id:\n        with get_sync_db_session() as session:\n            graph_data = session.get(Flow, flow_id).data\n    elif version_id:\n        flow_data_key = flow_data_key + '_' + str(version_id)\n        graph_data = FlowVersionDao.get_version_by_id(version_id).data\n    try:\n        if flow_id is None:\n            raise NotFoundError()\n        # Check if already building\n        if await flow_data_store.ahget(flow_data_key, 'status') == BuildStatus.IN_PROGRESS.value:\n            return resp_200(InitResponse(flowId=flow_id))\n\n        # Delete from cache if already exists\n        await flow_data_store.ahset(flow_data_key,\n                                    mapping={\n                                        'graph_data': json.dumps(graph_data),\n                                        'status': BuildStatus.STARTED.value\n                                    },\n                                    expiration=expire)\n\n        return resp_200(InitResponse(flowId=flow_id))\n    except Exception as exc:\n        logger.error(exc)\n        return HTTPException(status_code=500, detail=str(exc))\n\n\n@router.get('/build/{flow_id}/status', response_model=UnifiedResponseModel[BuiltResponse])\nasync def build_status(flow_id: str,\n                       chat_id: Optional[str] = None,\n                       version_id: Optional[int] = Query(default=None, description='Skill VersionID')):\n    \"\"\"Check the flow_id is in the flow_data_store.\"\"\"\n    try:\n        flow_data_store = await get_redis_client()\n        flow_data_key = 'flow_data_' + flow_id\n        if not chat_id and version_id:\n            flow_data_key = flow_data_key + '_' + str(version_id)\n        built = (await flow_data_store.ahget(flow_data_key, 'status') == BuildStatus.SUCCESS.value)\n        return resp_200(BuiltResponse(built=built, ))\n\n    except Exception as exc:\n        logger.error(exc)\n        return HTTPException(status_code=500, detail=str(exc))\n\n\n@router.get('/build/stream/{flow_id}', response_class=StreamingResponse)\nasync def stream_build(flow_id: str,\n                       chat_id: Optional[str] = None,\n                       version_id: Optional[int] = Query(default=None, description='Skill VersionID')):\n    \"\"\"Stream the build process based on stored flow data.\"\"\"\n\n    async def event_stream(flow_id, chat_id: str, version_id: Optional[int] = None):\n        final_response = {'end_of_stream': True}\n        artifacts = {}\n        flow_data_store = await get_redis_client()\n        try:\n            flow_data_key = 'flow_data_' + flow_id\n            if not chat_id and version_id:\n                flow_data_key = flow_data_key + '_' + str(version_id)\n            if not await flow_data_store.aexists(flow_data_key):\n                error_message = 'Invalid session ID'\n                yield str(StreamData(event='error', data={'error': error_message}))\n                return\n\n            if await flow_data_store.ahget(flow_data_key, 'status') == BuildStatus.IN_PROGRESS.value:\n                error_message = 'Already building'\n                yield str(StreamData(event='error', data={'error': error_message}))\n                return\n\n            graph_data = json.loads(await flow_data_store.ahget(flow_data_key, 'graph_data'))\n\n            if not graph_data:\n                error_message = 'No data provided'\n                yield str(StreamData(event='error', data={'error': error_message}))\n                return\n\n            logger.debug('Building langchain object')\n            await flow_data_store.ahsetkey(flow_data_key, 'status', BuildStatus.IN_PROGRESS.value, expire)\n\n            # L1 Users, usingbuildProcess\n            try:\n                async for message in build_flow(graph_data=graph_data,\n                                                artifacts=artifacts,\n                                                process_file=False,\n                                                flow_id=flow_id,\n                                                chat_id=chat_id):\n                    if isinstance(message, Graph):\n                        graph = message\n                    else:\n                        yield message\n\n            except Exception as e:\n                logger.error(f'Build flow error: {e}')\n                await flow_data_store.ahsetkey(flow_data_key,\n                                               'status',\n                                               BuildStatus.FAILURE.value,\n                                               expiration=expire)\n                yield str(StreamData(event='error', data={'error': str(e)}))\n                return\n\n            await graph.abuild()\n            # Now we  need to check the input_keys to send them to the client\n            input_keys_response = {\n                'input_keys': [],\n                'memory_keys': [],\n                'handle_keys': [],\n            }\n            input_nodes = graph.get_input_nodes()\n            for node in input_nodes:\n                if hasattr(await node.get_result(), 'input_keys'):\n                    input_keys = build_input_keys_response(await node.get_result(), artifacts)\n                    input_keys['input_keys'].update({'id': node.id})\n                    input_keys_response['input_keys'].append(input_keys.get('input_keys'))\n                    input_keys_response['memory_keys'].extend(input_keys.get('memory_keys'))\n                    input_keys_response['handle_keys'].extend(input_keys.get('handle_keys'))\n                elif ('fileNode' in node.output):\n                    input_keys_response['input_keys'].append({\n                        'file_path': '',\n                        'type': 'file',\n                        'id': node.id\n                    })\n\n            yield str(StreamData(event='message', data=input_keys_response))\n            # We need to reset the chat history\n            chat_manager.chat_history.empty_history(flow_id, chat_id)\n            chat_manager.set_cache(get_cache_key(flow_id=flow_id, chat_id=chat_id), None)\n            await flow_data_store.ahsetkey(flow_data_key, 'status', BuildStatus.SUCCESS.value, expire)\n        except Exception as exc:\n            logger.exception(exc)\n            logger.error('Error while building the flow: %s', exc)\n            await flow_data_store.ahsetkey(flow_data_key, 'status', BuildStatus.FAILURE.value, expire)\n            yield str(StreamData(event='error', data={'error': str(exc)}))\n        finally:\n            yield str(StreamData(event='message', data=final_response))\n\n    try:\n        return StreamingResponse(event_stream(flow_id, chat_id, version_id),\n                                 media_type='text/event-stream')\n    except Exception as exc:\n        logger.error(exc)\n        raise HTTPException(status_code=500, detail=str(exc))\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/component.py",
    "content": "from fastapi import APIRouter, Body, Depends\n\nfrom bisheng.api.services.component import ComponentService\nfrom bisheng.api.utils import update_frontend_node_with_template_values\nfrom bisheng.api.v1.schemas import (CreateComponentReq, CustomComponentCode, resp_200)\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.database.models.component import Component\nfrom bisheng.interface.custom import CustomComponent\nfrom bisheng.interface.custom.directory_reader import DirectoryReader\nfrom bisheng.interface.custom.utils import build_custom_component_template\n\nrouter = APIRouter(prefix='/component', tags=['Component'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n@router.get('')\ndef get_all_components(*, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    return ComponentService.get_all_component(login_user)\n\n\n@router.post('')\ndef save_components(*, data: CreateComponentReq, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    from bisheng import __version__\n    # get login user\n    component = Component(**data.model_dump(),\n                          user_id=login_user.user_id,\n                          user_name=login_user.user_name,\n                          version=__version__)\n    return ComponentService.save_component(component)\n\n\n@router.patch('')\ndef update_component(*, data: CreateComponentReq, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    from bisheng import __version__\n    # get login user\n    component = Component(**data.model_dump(),\n                          user_id=login_user.user_id,\n                          user_name=login_user.user_name,\n                          version=__version__)\n    return ComponentService.update_component(component)\n\n\n@router.delete('')\ndef delete_component(*,\n                     name: str = Body(..., embed=True, description='Component Name'),\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    return ComponentService.delete_component(login_user.user_id, name)\n\n\n@router.post('/custom_component')\nasync def custom_component(\n        raw_code: CustomComponentCode,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n):\n    component = CustomComponent(code=raw_code.code)\n\n    built_frontend_node = build_custom_component_template(component, user_id=str(login_user.user_id))\n\n    built_frontend_node = update_frontend_node_with_template_values(built_frontend_node,\n                                                                    raw_code.frontend_node)\n    return resp_200(data=built_frontend_node)\n\n\n@router.post('/custom_component/reload')\nasync def reload_custom_component(path: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    from bisheng.interface.custom.utils import build_custom_component_template\n\n    reader = DirectoryReader('')\n    valid, content = reader.process_file(path)\n    if not valid:\n        raise ValueError(content)\n\n    extractor = CustomComponent(code=content)\n    return resp_200(\n        data=build_custom_component_template(extractor, user_id=str(login_user.user_id)))\n\n\n@router.post('/custom_component/update')\nasync def custom_component_update(\n        raw_code: CustomComponentCode,\n        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    component = CustomComponent(code=raw_code.code)\n\n    component_node = build_custom_component_template(component,\n                                                     user_id=str(login_user.user_id),\n                                                     update_field=raw_code.field)\n    # Update the field\n    return resp_200(data=component_node)\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/dataset.py",
    "content": "from typing import List\n\nfrom fastapi import APIRouter, Depends, Request\n\nfrom bisheng.api.services.dataset_service import DatasetService\nfrom bisheng.api.v1.schema.dataset_param import CreateDatasetParam\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.database.models.dataset import DatasetRead\n\n# build router\nrouter = APIRouter(prefix='/dataset', tags=['FineTune'])\n\n\n@router.get('/list', summary='Get dataset list')\ndef list_dataset(*,\n                 keyword: str = None,\n                 page: int = 1,\n                 limit: int = 10) -> UnifiedResponseModel[List[DatasetRead]]:\n    \"\"\"\n    Get dataset list\n    \"\"\"\n    res, count = DatasetService.build_dataset_list(page, limit, keyword)\n    return resp_200(data={'list': res, 'total': count})\n\n\n@router.post('/create', summary='Create Dataset')\ndef create_dataset(\n        *,\n        request: Request,\n        data: CreateDatasetParam,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n) -> UnifiedResponseModel:\n    \"\"\"\n    Create Dataset\n    \"\"\"\n    dataset = DatasetService.create_dataset(login_user.user_id, data)\n    return resp_200(data=dataset)\n\n\n@router.delete('/del', summary='Delete Dataset')\ndef delete_dataset(\n        *,\n        request: Request,\n        dataset_id: int,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n) -> UnifiedResponseModel:\n    \"\"\"\n    Create Dataset\n    \"\"\"\n    DatasetService.delete_dataset(dataset_id)\n    return resp_200()\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/endpoints.py",
    "content": "import copy\nimport json\nimport time\nfrom typing import Annotated, List, Optional, Union\nfrom uuid import UUID\n\nimport yaml\nfrom fastapi import APIRouter, Body, Depends, HTTPException, Path, Request, UploadFile\nfrom loguru import logger\n\nfrom bisheng.api.v1.schemas import (ProcessResponse, UploadFileResponse,\n                                    resp_200)\nfrom bisheng.chat.utils import judge_source, process_source_document\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.common.errcode.server import SystemConfigEmptyError, SystemConfigInvalidError, UploadFileEmptyError, \\\n    UploadFileExtError\nfrom bisheng.common.models.config import Config, ConfigDao, ConfigKeyEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData, ApplicationAliveEventData, \\\n    ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings as bisheng_settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.cache.utils import save_uploaded_file, upload_file_to_minio\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao, FlowType\nfrom bisheng.database.models.message import ChatMessage, ChatMessageDao\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao\nfrom bisheng.interface.types import get_all_types_dict\nfrom bisheng.open_endpoints.domain.utils import get_default_operator_async\nfrom bisheng.processing.process import process_graph_cached, process_tweaks\nfrom bisheng.services.deps import get_session_service, get_task_service\nfrom bisheng.services.task.service import TaskService\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils import get_request_ip\n\ntry:\n    from bisheng.worker import process_graph_cached_task\nexcept ImportError:\n\n    def process_graph_cached_task(*args, **kwargs):\n        raise NotImplementedError('Celery is not installed')\n\n# build router\nrouter = APIRouter(tags=['Base'])\n\nif bisheng_settings.debug:\n    import tracemalloc\n    import os\n    import threading\n\n\n    @router.get(\"/tracemalloc\")\n    def tracemalloc_point():\n        snapshot = tracemalloc.take_snapshot()\n        process_id = os.getpid()\n        thread_id = threading.get_ident()\n        snapshot.dump(f\"/app/data/snapshot_{process_id}_{thread_id}_{time.time()}.prof\")\n\n        return resp_200()\n\n\n@router.get('/all')\ndef get_all():\n    \"\"\"Get all parameters\"\"\"\n    all_types = get_all_types_dict()\n    return resp_200(all_types)\n\n\n@router.get('/env')\ndef get_env():\n    from bisheng import __version__\n    \"\"\"Get environment variable parameters\"\"\"\n    uns_support = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'html', 'pdf', 'csv']\n\n    etl_for_lm_url = bisheng_settings.get_knowledge().etl4lm.url\n    if etl_for_lm_url:\n        uns_support.extend(['png', 'jpg', 'jpeg', 'bmp'])\n\n    env = {}\n    if isinstance(bisheng_settings.environment, str):\n        env['env'] = bisheng_settings.environment\n    else:\n        env = copy.deepcopy(bisheng_settings.environment)\n\n    env['uns_support'] = uns_support\n    if bisheng_settings.get_from_db('office_url'):\n        env['office_url'] = bisheng_settings.get_from_db('office_url')\n    # add tips from settings\n    env['dialog_tips'] = bisheng_settings.get_from_db('dialog_tips')\n    # add env dict from settings\n    env.update(bisheng_settings.get_from_db('env') or {})\n    env['pro'] = bisheng_settings.get_system_login_method().bisheng_pro\n    env['version'] = __version__\n    env['enable_etl4lm'] = bool(etl_for_lm_url)\n\n    return resp_200(env)\n\n\n@router.get('/config')\ndef get_config(admin_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    db_config = ConfigDao.get_config(ConfigKeyEnum.INIT_DB)\n    config_str = db_config.value if db_config else ''\n    return resp_200(config_str)\n\n\n@router.post('/config/save')\ndef save_config(data: dict, admin_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    if not data.get('data', '').strip():\n        raise SystemConfigEmptyError()\n    try:\n        # Check for complianceyamlFormat\n        config = yaml.safe_load(data.get('data'))\n\n        # Judging linsight_invitation_code Right?boolean\n        if isinstance(config, dict) and 'linsight_invitation_code' in config.keys():\n            if config['linsight_invitation_code'] is not None and bool(config['linsight_invitation_code']) not in [True,\n                                                                                                                   False]:\n                raise ValueError('linsight_invitation_code must be a boolean value')\n\n        db_config = ConfigDao.get_config(ConfigKeyEnum.INIT_DB)\n        db_config.value = data.get('data')\n        ConfigDao.insert_config(db_config)\n        get_redis_client_sync().delete('config:initdb_config')\n    except Exception as e:\n        raise SystemConfigInvalidError()\n\n    return resp_200()\n\n\n@router.get('/web/config')\nasync def get_web_config():\n    \"\"\" Get some configuration items required by the front-end, the content is determined by the front-end \"\"\"\n    web_conf = ConfigDao.get_config(ConfigKeyEnum.WEB_CONFIG)\n    if not web_conf:\n        return resp_200(data='')\n    return resp_200(data={'value': web_conf.value})\n\n\n@router.post('/web/config')\nasync def update_web_config(request: Request,\n                            admin_user: UserPayload = Depends(UserPayload.get_admin_user),\n                            value: str = Body(embed=True)):\n    \"\"\" Update some configuration items required by the front-end, the content is determined by the front-end \"\"\"\n    logger.info(\n        f'update_web_config user_name={admin_user.user_name}, ip={get_request_ip(request)}')\n    web_conf = ConfigDao.get_config(ConfigKeyEnum.WEB_CONFIG)\n    if not web_conf:\n        web_conf = Config(key=ConfigKeyEnum.WEB_CONFIG.value, value=value)\n    else:\n        web_conf.value = value\n    ConfigDao.insert_config(web_conf)\n    return resp_200(data={'value': web_conf.value})\n\n\n@router.post('/process/{flow_id}')\nasync def process_flow_old(\n        flow_id: UUID,\n        inputs: Optional[dict] = None,\n        tweaks: Optional[dict] = None,\n        history_count: Annotated[int, Body(embed=True)] = 10,\n        clear_cache: Annotated[bool, Body(embed=True)] = False,  # noqa: F821\n        session_id: Annotated[Union[None, str], Body(embed=True)] = None,  # noqa: F821\n        task_service: TaskService = Depends(get_task_service),\n        sync: Annotated[bool, Body(embed=True)] = True,\n):\n    return await process_flow(flow_id, inputs, tweaks, history_count, clear_cache, session_id,\n                              task_service, sync)\n\n\n# For backwards compatibility we will keep the old endpoint\n# @router.post('/predict/{flow_id}')\n@router.post('/process')\nasync def process_flow(\n        flow_id: Annotated[UUID, Body(embed=True)],\n        inputs: Optional[dict] = None,\n        tweaks: Optional[dict] = None,\n        history_count: Annotated[int, Body(embed=True)] = 10,\n        clear_cache: Annotated[bool, Body(embed=True)] = False,  # noqa: F821\n        session_id: Annotated[Union[None, str], Body(embed=True)] = None,  # noqa: F821\n        task_service: TaskService = Depends(get_task_service),\n        sync: Annotated[bool, Body(embed=True)] = True,  # noqa: F821\n        sse: Annotated[bool, Body(embed=True)] = False,\n):\n    \"\"\"\n    Endpoint to process an input with a given flow_id.\n    \"\"\"\n    if inputs and isinstance(inputs, dict) and 'id' in inputs:\n        inputs.pop('id')\n    flow_id = flow_id.hex\n    logger.info(\n        f'act=api_call sessionid={session_id} flow_id={flow_id} inputs={inputs} tweaks={tweaks}')\n\n    login_user = await get_default_operator_async()\n    flow = await FlowDao.aget_flow_by_id(flow_id)\n    if flow is None or flow.data is None:\n        raise NotFoundError()\n    start_time = time.time()\n    if session_id is None:\n        # Generate a session ID\n        session_id = get_session_service().generate_key(session_id=session_id,\n                                                        data_graph=flow.data)\n    try:\n        graph_data = flow.data\n        if tweaks:\n            try:\n                graph_data = process_tweaks(graph_data, tweaks)\n            except Exception as exc:\n                logger.error(f'Error processing tweaks: {exc}')\n\n        # process\n        if sync:\n            result = await process_graph_cached(graph_data,\n                                                inputs,\n                                                clear_cache,\n                                                session_id,\n                                                history_count=history_count,\n                                                flow_id=flow_id)\n            if isinstance(result, dict) and 'result' in result:\n                task_result = result['result']\n                session_id = result['session_id']\n            elif hasattr(result, 'result') and hasattr(result, 'session_id'):\n                task_result = result.result\n                session_id = result.session_id\n        else:\n            logger.warning('This is an experimental feature and may not work as expected.'\n                           'Please report any issues to our GitHub repository.')\n\n            task_id, task = await task_service.launch_task(\n                process_graph_cached_task if task_service.use_celery else process_graph_cached,\n                graph_data,\n                inputs,\n                clear_cache,\n                session_id,\n                history_count=history_count,\n                flow_id=flow_id)\n            if task.status == 'SUCCESS':\n                task_result = task.result\n                if hasattr(task_result, 'result'):\n                    task_result = task_result.result\n            else:\n                logger.error(f'task_id={task_id} exception task result={task}')\n\n        if isinstance(task_result, str):\n            task_result = {'answer': task_result}\n        # Judgment traceability\n        source_documents = task_result.pop('source_documents', '')\n        answer = list(task_result.values())[0]\n        extra = {}\n        source, result = await judge_source(answer, source_documents, session_id, extra)\n\n        try:\n            question = ChatMessage(user_id=login_user.user_id,\n                                   is_bot=False,\n                                   type='end',\n                                   chat_id=session_id,\n                                   category='question',\n                                   flow_id=flow_id,\n                                   message=json.dumps(inputs, ensure_ascii=False))\n            message = ChatMessage(user_id=login_user.user_id,\n                                  is_bot=True,\n                                  chat_id=session_id,\n                                  flow_id=flow_id,\n                                  type='end',\n                                  category='answer',\n                                  message=answer,\n                                  source=source)\n            ChatMessageDao.insert_one(question)\n            message = ChatMessageDao.insert_one(message)\n            try:\n                MessageSessionDao.insert_one(\n                    MessageSession(\n                        chat_id=session_id,\n                        flow_id=flow_id,\n                        flow_name=flow.name,\n                        flow_type=FlowType.FLOW.value,\n                        user_id=login_user.user_id,\n                    ))\n\n                # RecordTelemetryJournal\n                await telemetry_service.log_event(user_id=login_user.user_id,\n                                                  event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                                  trace_id=trace_id_var.get(),\n                                                  event_data=NewMessageSessionEventData(\n                                                      session_id=session_id,\n                                                      app_id=flow_id,\n                                                      source='api',\n                                                      app_name=flow.name,\n                                                      app_type=ApplicationTypeEnum.SKILL\n                                                  )\n                                                  )\n            except Exception as e:\n                logger.warning(f'insert repeat session error: {e}')\n\n            extra.update({'source': source, 'message_id': message.id})\n\n            if source == 1:\n                await process_source_document(source_documents, session_id, message.id, answer)\n                extra.update({\n                    'source_url':\n                        'resouce/{chat_id}/{msg_id}'.format(chat_id=session_id, msg_id=message.id)\n                })\n            elif source == 4:\n                # QA\n                extra_qa = json.loads(answer.metadata.get('extra'))\n                extra_qa.pop('answer', None)\n                extra.update({'doc': [extra_qa]})\n            task_result.update(extra)\n            task_result.update({'answer': result})\n        except Exception as e:\n            logger.error(e)\n\n        return resp_200(\n            ProcessResponse(\n                result=task_result,\n                # task=task_response,\n                session_id=session_id,\n                backend=task_service.backend_name,\n            ))\n\n    except Exception as e:\n        # Log stack trace\n        logger.exception(e)\n        raise HTTPException(status_code=500, detail=str(e)) from e\n    finally:\n        end_time = time.time()\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=flow_id,\n                                              app_name=flow.name,\n                                              app_type=ApplicationTypeEnum.SKILL,\n                                              chat_id=session_id,\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)))\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationProcessEventData(\n                                              app_id=flow_id,\n                                              app_name=flow.name,\n                                              app_type=ApplicationTypeEnum.SKILL,\n                                              chat_id=session_id,\n                                              start_time=int(start_time),\n                                              end_time=int(end_time),\n                                              process_time=int((end_time - start_time) * 1000)\n                                          ))\n\n\nasync def _upload_file(file: UploadFile, object_name_prefix: str, file_supports: List[str] = None,\n                       bucket_name: str = None) \\\n        -> UploadFileResponse:\n    if file.size == 0:\n        raise UploadFileEmptyError()\n    file_ext = file.filename.split('.')[-1].lower()\n    if file_supports and file_ext not in file_supports:\n        raise UploadFileExtError()\n    object_name = f'{object_name_prefix}/{generate_uuid()}.png'\n    file_path = await upload_file_to_minio(file, object_name=object_name, bucket_name=bucket_name)\n    if not isinstance(file_path, str):\n        file_path = str(file_path)\n\n    return UploadFileResponse(\n        file_path=file_path,  # minioAccessible links\n        relative_path=object_name,  # miniohitting the nail on the headobject_name\n    )\n\n\n@router.post('/upload/icon')\nasync def upload_icon(request: Request,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user),\n                      file: UploadFile = None):\n    try:\n        bucket = bisheng_settings.object_storage.minio.public_bucket\n        resp = await _upload_file(file,\n                                  object_name_prefix='icon',\n                                  file_supports=['jpeg', 'jpg', 'png'],\n                                  bucket_name=bucket)\n        return resp_200(data=resp)\n    except Exception as e:\n        raise e\n    finally:\n        await file.close()\n\n\n@router.post('/upload/workflow/{workflow_id}')\nasync def upload_icon_workflow(request: Request,\n                               login_user: UserPayload = Depends(UserPayload.get_login_user),\n                               file: UploadFile = None,\n                               workflow_id: str = Path(..., description='workflow id')):\n    try:\n        bucket = bisheng_settings.object_storage.minio.public_bucket\n        resp = await _upload_file(file, object_name_prefix=f'workflow/{workflow_id}', bucket_name=bucket)\n        return resp_200(data=resp)\n    except Exception as e:\n        raise e\n    finally:\n        await file.close()\n\n\n@router.post('/upload/{flow_id}')\nasync def create_upload_file(file: UploadFile, flow_id: str):\n    # Cache file\n    try:\n        if len(file.filename) > 80:\n            file.filename = file.filename[-80:]\n        file_path = await save_uploaded_file(file, folder_name=flow_id, file_name=file.filename)\n        if not isinstance(file_path, str):\n            file_path = str(file_path)\n        return resp_200(UploadFileResponse(\n            flowId=flow_id,\n            file_path=file_path,\n        ))\n    except Exception as exc:\n        logger.error(f'Error saving file: {exc}')\n        raise HTTPException(status_code=500, detail=str(exc)) from exc\n    finally:\n        await file.close()\n\n\n# get endpoint to return version of bisheng\n@router.get('/version')\ndef get_version():\n    from bisheng import __version__\n    return resp_200({'version': __version__})\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/evaluation.py",
    "content": "import io\nfrom typing import Optional\n\nfrom datasets import Dataset\nfrom fastapi import APIRouter, Depends, Query, UploadFile, Form, BackgroundTasks\n\nfrom bisheng.api.services.evaluation import EvaluationService, add_evaluation_task\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.server import UploadFileExtError\nfrom bisheng.core.cache.utils import convert_encoding_cchardet\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.database.models.evaluation import EvaluationCreate, Evaluation\n\nrouter = APIRouter(prefix='/evaluation', tags=['Evaluation'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n@router.get('')\ndef get_evaluation(*,\n                   page: Optional[int] = Query(default=1, gt=0, description='Page'),\n                   limit: Optional[int] = Query(default=10, gt=0, description='Listings Per Page'),\n                   login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get a list of assessment tasks. \"\"\"\n    return EvaluationService.get_evaluation(login_user, page, limit)\n\n\n@router.post('')\ndef create_evaluation(*,\n                      file: UploadFile,\n                      prompt: str = Form(),\n                      exec_type: str = Form(),\n                      unique_id: str = Form(),\n                      version: Optional[int | str] = Form(default=None),\n                      background_tasks: BackgroundTasks,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Create Assessment Task. \"\"\"\n    try:\n        user_id = login_user.user_id\n        if not version:\n            version = 0\n\n        try:\n            # Try transcoding\n            output_file = convert_encoding_cchardet(file.file.read(), 'utf-8')\n            csv_data = EvaluationService.parse_csv(file_data=output_file)\n            data_samples = {\n                \"question\": [one.get('question') for one in csv_data],\n                \"answer\": [one.get('answer') for one in csv_data],\n                \"ground_truths\": [[one.get('ground_truth')] for one in csv_data]\n            }\n            dataset = Dataset.from_dict(data_samples)\n        except Exception:\n            raise UploadFileExtError()\n        finally:\n            file.file.seek(0)\n\n        file_name, file_path = EvaluationService.upload_file(file=file)\n        db_evaluation = Evaluation.model_validate(EvaluationCreate(unique_id=unique_id,\n                                                                   exec_type=exec_type,\n                                                                   version=version,\n                                                                   prompt=prompt,\n                                                                   user_id=user_id,\n                                                                   file_name=file_name,\n                                                                   file_path=file_path))\n        with get_sync_db_session() as session:\n            session.add(db_evaluation)\n            session.commit()\n            session.refresh(db_evaluation)\n\n        background_tasks.add_task(add_evaluation_task, evaluation_id=db_evaluation.id)\n\n        return resp_200(db_evaluation.copy())\n    except Exception as e:\n        raise e\n    finally:\n        file.file.close()\n\n\n@router.delete('/{evaluation_id}', status_code=200)\ndef delete_evaluation(*, evaluation_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Delete Assessment Task (Logical Delete). \"\"\"\n    return EvaluationService.delete_evaluation(evaluation_id, user_payload=login_user)\n\n\n@router.get('/result/file/download')\nasync def get_download_url(*,\n                           file_url: str,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get file download address. \"\"\"\n    minio_client = await get_minio_storage()\n    download_url = await minio_client.get_share_link(file_url)\n    return resp_200(data={\n        'url': download_url\n    })\n\n\n@router.post('/{evaluation_id}/process', status_code=200)\ndef process_evaluation(*, evaluation_id: int, background_tasks: BackgroundTasks,\n                       login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Perform assessment tasks manually. \"\"\"\n    background_tasks.add_task(add_evaluation_task, evaluation_id=evaluation_id)\n    return resp_200()\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/flows.py",
    "content": "import json\nfrom typing import Any, Union\n\nfrom fastapi import APIRouter, Depends, HTTPException, Query, Request\nfrom loguru import logger\nfrom starlette.responses import StreamingResponse\n\nfrom bisheng.api.services.flow import FlowService\nfrom bisheng.api.utils import build_flow_no_yield, remove_api_keys\nfrom bisheng.api.v1.schemas import (FlowCompareReq, FlowVersionCreate, StreamData, resp_200)\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.flow import FlowOnlineEditError, FlowNameExistsError\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, ServerError, NotFoundError\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import (Flow, FlowCreate, FlowDao, FlowRead, FlowType, FlowUpdate)\nfrom bisheng.database.models.flow_version import FlowVersionDao\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\n\n# build router\nrouter = APIRouter(prefix='/flows', tags=['Flows'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n@router.post('/', status_code=201)\ndef create_flow(*, request: Request, flow: FlowCreate, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Create a new flow.\"\"\"\n    # Determine if the user repeats the skill name\n    exist_flow = FlowDao.get_flow_by_name(login_user.user_id, flow.name)\n    if exist_flow:\n        raise FlowNameExistsError()\n    flow.user_id = login_user.user_id\n    db_flow = Flow.model_validate(flow)\n    # Create New Skill\n    db_flow = FlowDao.create_flow(db_flow, FlowType.FLOW.value)\n\n    current_version = FlowVersionDao.get_version_by_flow(db_flow.id)\n    ret = FlowRead.model_validate(db_flow)\n    ret.version_id = current_version.id\n    FlowService.create_flow_hook(request, login_user, db_flow, ret.version_id)\n    return resp_200(data=ret)\n\n\n@router.get('/versions', status_code=200)\ndef get_versions(*, flow_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get a list of versions for your skill\n    \"\"\"\n    return FlowService.get_version_list_by_flow(login_user, flow_id)\n\n\n@router.post('/versions', status_code=200)\nasync def create_versions(*,\n                          flow_id: str,\n                          flow_version: FlowVersionCreate,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Create New Skill Version\n    \"\"\"\n    return await FlowService.create_new_version(login_user, flow_id, flow_version)\n\n\n@router.put('/versions/{version_id}', status_code=200)\nasync def update_versions(*,\n                          request: Request,\n                          version_id: int,\n                          flow_version: FlowVersionCreate,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Update to version\n    \"\"\"\n    return await FlowService.update_version_info(request, login_user, version_id, flow_version)\n\n\n@router.delete('/versions/{version_id}', status_code=200)\ndef delete_versions(*, version_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Remove Version\n    \"\"\"\n    return FlowService.delete_version(login_user, version_id)\n\n\n@router.get('/versions/{version_id}', status_code=200)\ndef get_version_info(*, version_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get Version Info\n    \"\"\"\n    return FlowService.get_version_info(login_user, version_id)\n\n\n@router.post('/change_version', status_code=200)\nasync def change_version(*,\n                         request: Request,\n                         flow_id: str = Query(default=None, description='Skill UniqueID'),\n                         version_id: int = Query(default=None, description='Current version that needs to be setID'),\n                         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Modify Current Version\n    \"\"\"\n    return await FlowService.change_current_version(request, login_user, flow_id, version_id)\n\n\n@router.get('/', status_code=200)\ndef read_flows(*,\n               name: str = Query(default=None, description='accordingnameFind databases with fuzzy searches for descriptions'),\n               tag_id: int = Query(default=None, description='labelID'),\n               page_size: int = Query(default=10, description='Items per page'),\n               page_num: int = Query(default=1, description='Page'),\n               status: int = None,\n               login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Read all flows.\"\"\"\n    return FlowService.get_all_flows(login_user, name, status, tag_id, page_num, page_size)\n\n\n@router.get('/{flow_id}')\nasync def read_flow(*, flow_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                    share_link: Union['ShareLink', None] = Depends(header_share_token_parser)):\n    \"\"\"Read a flow.\"\"\"\n    return await FlowService.get_one_flow(login_user, flow_id, share_link)\n\n\n@router.patch('/{flow_id}')\nasync def update_flow(*,\n                      request: Request,\n                      flow_id: str,\n                      flow: FlowUpdate,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Update a flow.\"\"\"\n    db_flow = await FlowDao.aget_flow_by_id(flow_id)\n    if not db_flow:\n        raise HTTPException(status_code=404, detail='Flow not found')\n\n    if not await login_user.async_access_check(db_flow.user_id, flow_id, AccessType.FLOW_WRITE):\n        return UnAuthorizedError.return_resp()\n\n    flow_data = flow.model_dump(exclude_unset=True)\n\n    if 'status' in flow_data and flow_data['status'] == 2 and db_flow.status == 1:\n        # On-line verification\n        try:\n            art = {}\n            await build_flow_no_yield(graph_data=db_flow.data,\n                                      artifacts=art,\n                                      process_file=False,\n                                      flow_id=flow_id)\n        except Exception as exc:\n            logger.exception(exc)\n            raise ServerError(exception=exc)\n\n    if db_flow.status == 2 and ('status' not in flow_data or flow_data['status'] != 1):\n        raise FlowOnlineEditError.http_exception()\n\n    if settings.remove_api_keys:\n        flow_data = remove_api_keys(flow_data)\n    for key, value in flow_data.items():\n        if key in ['data', 'create_time', 'update_time']:\n            continue\n        if key == 'logo' and not value:\n            continue\n        setattr(db_flow, key, value)\n    async with get_async_db_session() as session:\n        session.add(db_flow)\n        await session.commit()\n        await session.refresh(db_flow)\n    await FlowService.update_flow_hook(request, login_user, db_flow)\n    return resp_200(db_flow)\n\n\n@router.delete('/{flow_id}', status_code=200)\ndef delete_flow(*,\n                request: Request,\n                flow_id: str,\n                login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Delete a flow.\"\"\"\n\n    db_flow = FlowDao.get_flow_by_id(flow_id)\n    if not db_flow:\n        raise NotFoundError()\n    access_type = AccessType.FLOW_WRITE\n    if db_flow.flow_type == FlowType.WORKFLOW.value:\n        access_type = AccessType.WORKFLOW_WRITE\n    if not login_user.access_check(db_flow.user_id, flow_id, access_type):\n        return UnAuthorizedError.return_resp()\n    FlowDao.delete_flow(db_flow)\n    telemetry_service.log_event_sync(\n        user_id=login_user.user_id,\n        event_type=BaseTelemetryTypeEnum.DELETE_APPLICATION,\n        trace_id=trace_id_var.get()\n    )\n    FlowService.delete_flow_hook(request, login_user, db_flow)\n    return resp_200()\n\n\n@router.post('/compare')\nasync def compare_flow_node(*, item: FlowCompareReq, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Skills Multiple Versions Comparison \"\"\"\n    return await FlowService.compare_flow_node(login_user, item)\n\n\n@router.get('/compare/stream', status_code=200, response_class=StreamingResponse)\nasync def compare_flow_node_stream(*,\n                                   data: Any = Query(description='Comparing the required datajsonSerialized string'),\n                                   login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Skills Multiple Versions Comparison \"\"\"\n    item = FlowCompareReq(**json.loads(data))\n\n    async def event_stream(req: FlowCompareReq):\n        yield str(StreamData(event='message', data={'type': 'start', 'data': 'start'}))\n        try:\n            async for one in FlowService.compare_flow_stream(login_user, req):\n                yield one\n            yield str(StreamData(event='message', data={'type': 'end', 'data': ''}))\n        except Exception as e:\n            logger.exception('compare flow stream error')\n            yield ServerError(exception=e).to_sse_event_instance_str()\n\n    try:\n        return StreamingResponse(event_stream(item), media_type='text/event-stream')\n    except Exception as exc:\n        logger.error(exc)\n        raise ServerError()\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/invite_code.py",
    "content": "from fastapi import APIRouter, Depends, Body, Request\nfrom loguru import logger\n\nfrom bisheng.api.services.invite_code.invite_code import InviteCodeService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.utils import get_request_ip\n\nrouter = APIRouter(prefix='/invite', tags=['InviteCode'])\n\n\n@router.post('/code')\nasync def create_invite_code(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                             name: str = Body(..., description='Batch'),\n                             num: int = Body(..., description='Number of invitation codes in the current batch'),\n                             limit: int = Body(..., description='Current batch invite code usage limit')):\n    \"\"\"\n    Create an invite code\n    \"\"\"\n    logger.debug(\n        f\"create invite code user_id: {login_user.user_id}, ip: {get_request_ip(request)}, name: {name}, num: {num}, limit: {limit}\")\n    codes = await InviteCodeService.create_batch_invite_codes(login_user, name, num, limit)\n    return resp_200(data={\n        \"name\": name,\n        \"limit\": limit,\n        \"codes\": codes\n    })\n\n\n@router.post('/bind')\nasync def bind_invite_code(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           code: str = Body(..., embed=True, description='Invitation Code')):\n    \"\"\"\n    Binding Invitation Code\n    \"\"\"\n    result = await InviteCodeService.bind_invite_code(login_user, code)\n    logger.debug(f\"bind_invite_code user_id:{login_user.user_id}, code:{code}, flag:{result}\")\n    return resp_200()\n\n\n@router.get('/code')\nasync def get_bind_code_num(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get the number of times a valid invitation code bound by a user can be used\n    \"\"\"\n    num = await InviteCodeService.get_invite_code_num(login_user)\n    return resp_200(data=num)\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/mark_task.py",
    "content": "from collections import deque\nfrom typing import Optional\n\nfrom fastapi import APIRouter, Depends, Request\nfrom loguru import logger\n\nfrom bisheng.api.v1.schema.mark_schema import MarkData, MarkTaskCreate\nfrom bisheng.api.v1.schemas import resp_200, resp_500\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.database.models.mark_app_user import MarkAppUser, MarkAppUserDao\nfrom bisheng.database.models.mark_record import MarkRecord, MarkRecordDao\nfrom bisheng.database.models.mark_task import MarkTask, MarkTaskDao, MarkTaskRead, MarkTaskStatus\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.database.models.session import MessageSessionDao\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils.linked_list import DoubleLinkList\n\nrouter = APIRouter(prefix='/mark', tags=['Mark'])\n\n\n@router.get('/list')\ndef list(request: Request,\n         status: Optional[int] = None,\n         page_size: int = 10,\n         page_num: int = 1,\n         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Nonadmin Can only see their own marked and unlabeled\n    \"\"\"\n    groups = UserGroupDao.get_user_admin_group(login_user.user_id)\n    if login_user.is_admin():\n        task_list, count = MarkTaskDao.get_task_list(page_size=page_size, page_num=page_num, status=status,\n                                                     create_id=None, user_id=None)\n    else:\n        task_list, count = MarkTaskDao.get_task_list(page_size=page_size, page_num=page_num, status=status,\n                                                     create_id=login_user.user_id if groups else None,\n                                                     user_id=login_user.user_id)\n\n    result_list = []\n    for task in task_list:\n        record = MarkRecordDao.get_count(task.id)\n        process_list = []\n        user_count = {}\n\n        for c in task.process_users.split(\",\"):\n            user = UserDao.get_user(int(c))\n            process_count = \"{}:{}\".format(user.user_name, 0)\n            user_count[int(c)] = process_count\n\n        for c in record:\n            process_count = \"{}:{}\".format(c.create_user, c.user_count)\n            user_count[c.create_id] = process_count\n\n        for c in user_count:\n            process_list.append(user_count[c])\n\n        result_list.append(MarkTaskRead(**task.model_dump(), mark_process=process_list))\n\n    result = {\"list\": result_list, \"total\": count}\n    return resp_200(data=result)\n\n\n@router.get('/get_status')\nasync def get_status(task_id: int, chat_id: str,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    record = MarkRecordDao.get_record(task_id, chat_id)\n    if not record:\n        return resp_200(data={\"status\": \"\"})\n\n    if login_user.user_id == record.create_id:\n        is_self = True\n    else:\n        is_self = False\n    result = {\"status\": record.status, \"is_self\": is_self}\n    return resp_200(result)\n\n\n@router.post('/create_task')\nasync def create(task_create: MarkTaskCreate, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Apps and users are in a many-to-many relationship, relying on one director record\n    \"\"\"\n\n    task = MarkTask(create_id=login_user.user_id,\n                    create_user=login_user.user_name,\n                    app_id=\",\".join(task_create.app_list),\n                    process_users=\",\".join(task_create.user_list)\n                    )\n    MarkTaskDao.create_task(task)\n\n    user_app = [MarkAppUser(task_id=task.id, create_id=login_user.user_id, app_id=app, user_id=user) for app in\n                task_create.app_list for user in task_create.user_list]\n\n    MarkAppUserDao.create_task(user_app)\n    return resp_200(data=\"ok\")\n\n\n@router.get('/get_user')\nasync def get_user(task_id: int):\n    \"\"\"\n    Query under this app All Users\n    \"\"\"\n\n    # accordingtype Query different sessions\n    task = MarkTaskDao.get_task_byid(task_id)\n    user_list = []\n\n    for u in task.process_users.split(\",\"):\n        user = UserDao.get_user(int(u))\n        user_list.append(user)\n\n    return resp_200(data=user_list)\n\n\n@router.post('/mark')\nasync def mark(data: MarkData,\n               login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Flag task as current user and cannot be overwritten by others\n    flow_type flow assistant\n    \"\"\"\n\n    # record = MarkRecordDao.get_record(data.task_id,data.session_id)\n    # if record:\n    #     return resp_500(data=\"Already flagged\")\n\n    session_info = MessageSessionDao.get_one(data.session_id)\n    if session_info:\n        data.flow_type = session_info.flow_type\n\n    db_r = MarkRecordDao.get_record(data.task_id, data.session_id)\n    if db_r:\n        if data.status == MarkTaskStatus.DEFAULT.value:\n            MarkRecordDao.del_task_chat(task_id=db_r.task_id, session_id=db_r.session_id)\n            return resp_200(data=\"ok\")\n        db_r.status = data.status\n        MarkRecordDao.update_record(db_r)\n    else:\n        # Not marked No data recorded\n        if data.status == MarkTaskStatus.DEFAULT.value:\n            return resp_200(data=\"ok\")\n        record_info = MarkRecord(create_user=login_user.user_name, create_id=login_user.user_id,\n                                 session_id=data.session_id, task_id=data.task_id, status=data.status,\n                                 flow_type=data.flow_type)\n        # Create an article User callout record\n        MarkRecordDao.create_record(record_info)\n\n    task = MarkTaskDao.get_task_byid(task_id=data.task_id)\n    msg_list = ChatMessageDao.get_msg_by_flows(task.app_id.split(\",\"))\n    # m_list = [msg.chat_id for msg in msg_list]\n    m_list = msg_list\n    r_list = MarkRecordDao.get_list_by_taskid(data.task_id)\n    app_record = [r.session_id for r in r_list]\n\n    m_list = [s.strip() for s in m_list if s.strip()]\n    app_record = [s.strip() for s in app_record if s.strip()]\n\n    m_list.sort()\n    app_record.sort()\n\n    logger.info(\"m_list={} app_record={}\", m_list, app_record)\n\n    if m_list == app_record:\n        MarkTaskDao.update_task(data.task_id, MarkTaskStatus.DONE.value)\n    else:\n        MarkTaskDao.update_task(data.task_id, MarkTaskStatus.ING.value)\n\n    return resp_200(data=\"ok\")\n\n\n@router.get('/get_record')\nasync def get_record(chat_id: str, task_id: int):\n    record = MarkRecordDao.get_record(task_id, chat_id)\n    return resp_200(data=record)\n\n\n@router.get(\"/next\")\nasync def pre_or_next(chat_id: str, action: str, task_id: int,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    prev or next \n    \"\"\"\n\n    if action not in [\"prev\", \"next\"]:\n        return resp_500(data=\"actionParameter salah\")\n\n    result = {\"task_id\": task_id}\n\n    if action == \"prev\":\n        record = MarkRecordDao.get_prev_task(login_user.user_id, task_id)\n        top_queue = deque()\n        bottom_queue = deque()\n        if record:\n            queue = top_queue\n            for r in record:\n                if r.session_id == chat_id:\n                    queue = bottom_queue\n                    continue\n                queue.append(r)\n\n            logger.info(\"top_queue={} bottom_queue={}\", top_queue, bottom_queue)\n            if len(top_queue) == 0 and len(bottom_queue) == 0:\n                return resp_200()\n            record = bottom_queue.popleft() if len(bottom_queue) else top_queue.popleft()\n            chat = MessageSessionDao.get_one(record.session_id)\n            result[\"chat_id\"] = chat.chat_id\n            result[\"flow_type\"] = chat.flow_type\n            result[\"flow_id\"] = chat.flow_id\n            return resp_200(data=result)\n    else:\n        task = MarkTaskDao.get_task_byid(task_id)\n        record = MarkRecordDao.get_list_by_taskid(task_id)\n        chat_list = [r.session_id for r in record]\n\n        msg = MessageSessionDao.filter_session(flow_ids=task.app_id.split(\",\"), exclude_chats=chat_list)\n        linked = DoubleLinkList()\n        k_list = {}\n        for m in msg:\n            k_list[m.chat_id] = m\n            linked.append(m.chat_id)\n\n        cur = linked.find(chat_id)\n        if not k_list:\n            return resp_200()\n\n        logger.info(\"k_list={} cur={}\", k_list, cur)\n\n        if cur:\n            if cur.next is None:\n                if linked.length() == 1 and linked.head().data == chat_id:\n                    return resp_200()\n                cur = k_list[linked.head().data]\n            else:\n                cur = k_list[cur.next.data]\n\n            result[\"chat_id\"] = cur.chat_id\n            result[\"flow_id\"] = cur.flow_id\n            result['flow_type'] = cur.flow_type\n            return resp_200(data=result)\n        else:\n            cur = k_list[linked.head().data]\n            result['flow_type'] = cur.flow_type\n            result[\"chat_id\"] = cur.chat_id\n            result[\"flow_id\"] = cur.flow_id\n            return resp_200(data=result)\n\n    return resp_200()\n\n\n@router.delete('/del')\ndef del_task(request: Request, task_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Nonadmin Can only see their own marked and unlabeled\n    \"\"\"\n\n    MarkTaskDao.delete_task(task_id)\n    MarkRecordDao.del_record(task_id)\n\n    return resp_200(data=\"ok\")\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/report.py",
    "content": "from fastapi import APIRouter, HTTPException\nfrom loguru import logger\nfrom sqlalchemy import or_\nfrom sqlmodel import select\n\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.database.models.report import Report\nfrom bisheng.utils import generate_uuid\nfrom bisheng_langchain.utils.requests import Requests\n\n# build router\nrouter = APIRouter(prefix='/report', tags=['report'])\nmino_prefix = 'report/'\n\n\n@router.post('/callback')\nasync def callback(data: dict):\n    status = data.get('status')\n    file_url = data.get('url')\n    key = data.get('key')\n    logger.debug(f'calback={data}')\n    if status in {2, 6}:\n        # Save Back\n        logger.info(f'office_callback url={file_url}')\n        file = Requests().get(url=file_url)\n        object_name = mino_prefix + key + '.docx'\n        minio_client = await get_minio_storage()\n        await minio_client.put_object(bucket_name=minio_client.bucket,\n                                      object_name=object_name, file=file._content,\n                                      content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document')  # noqa\n        # Duplicate save,key Data Update Error\n        with get_sync_db_session() as session:\n            db_report = session.exec(\n                select(Report).where(or_(Report.version_key == key,\n                                         Report.newversion_key == key))).first()\n        if not db_report:\n            logger.error(f'report_callback cannot find the flow_id flow_id={key}')\n            raise HTTPException(status_code=500, detail='cannot find the flow_id')\n        db_report.object_name = object_name\n        db_report.version_key = key\n        db_report.newversion_key = None\n        with get_sync_db_session() as session:\n            session.add(db_report)\n            session.commit()\n    return {'error': 0}\n\n\n@router.get('/report_temp')\nasync def get_template(*, flow_id: str):\n    with get_sync_db_session() as session:\n        db_report = session.exec(\n            select(Report).where(Report.flow_id == flow_id,\n                                 Report.del_yn == 0).order_by(Report.update_time.desc())).first()\n    file_url = ''\n    if not db_report:\n        db_report = Report(flow_id=flow_id)\n    elif db_report.object_name:\n        minio_client = await get_minio_storage()\n        file_url = await minio_client.get_share_link(db_report.object_name, clear_host=False)\n\n    if not db_report.newversion_key or not db_report.object_name:\n        version_key = generate_uuid()\n        db_report.newversion_key = version_key\n        with get_sync_db_session() as session:\n            session.add(db_report)\n            session.commit()\n            session.refresh(db_report)\n    else:\n        version_key = db_report.newversion_key\n    res = {\n        'flow_id': flow_id,\n        'temp_url': file_url,\n        'original_version': db_report.version_key,\n        'version_key': version_key,\n    }\n\n    return resp_200(res)\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/base_schema.py",
    "content": "from typing import Generic, List, TypeVar\n\nfrom pydantic import BaseModel\n\n# Create generic variables\nDataT = TypeVar('DataT')\n\n\nclass PageList(BaseModel, Generic[DataT]):\n    list: List[DataT]\n    total: int\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/chat_schema.py",
    "content": "import json\nfrom datetime import datetime\nfrom typing import Any, Dict, List, Optional\n\nfrom pydantic import BaseModel, field_validator\n\nfrom bisheng.database.models.message import ChatMessage, ChatMessageQuery\nfrom bisheng.database.models.session import MessageSession\nfrom bisheng.user.domain.models.user import User\n\n\nclass AppChatList(BaseModel):\n    flow_name: str\n    user_name: str\n    user_id: int\n    chat_id: str\n    flow_id: str\n    flow_type: int\n    create_time: datetime\n    like_count: Optional[int] = None\n    dislike_count: Optional[int] = None\n    copied_count: Optional[int] = None\n    sensitive_status: Optional[int] = None  # Sensitive word review status\n    user_groups: Optional[List[Any]] = None  # Groups to which the user belongs\n    mark_user: Optional[str] = None\n    mark_status: Optional[int] = None\n    mark_id: Optional[int] = None\n    messages: Optional[List[dict]] = None  # All message list data for the session\n\n    @field_validator('user_name', mode='before')\n    @classmethod\n    def convert_user_name(cls, v: Any):\n        if not isinstance(v, str):\n            return str(v)\n        return v\n\n\nclass APIAddQAParam(BaseModel):\n    question: str\n    answer: List[str]\n    relative_questions: Optional[List[str]] = []\n\n\nclass UseKnowledgeBaseParam(BaseModel):\n    personal_knowledge_enabled: Optional[bool] = False\n    organization_knowledge_ids: Optional[List[int]] = []\n\n    @field_validator('organization_knowledge_ids', mode='before')\n    @classmethod\n    def convert_organization_knowledge_ids(cls, v: Any):\n        if len(v) > 20:\n            raise ValueError('Can only be used up to20organization knowledge base')\n\n        return v\n\n\nclass APIChatCompletion(BaseModel):\n    clientTimestamp: str\n    conversationId: Optional[str] = None\n    error: Optional[bool] = False\n    generation: Optional[str] = ''\n    isCreatedByUser: Optional[bool] = False\n    isContinued: Optional[bool] = False\n    model: str\n    text: Optional[str] = ''\n    search_enabled: Optional[bool] = False\n    use_knowledge_base: Optional[UseKnowledgeBaseParam] = None\n    files: Optional[List[Dict]] = None\n    parentMessageId: Optional[str] = None\n    overrideParentMessageId: Optional[str] = None\n    responseMessageId: Optional[str] = None\n\n\nclass delta(BaseModel):\n    id: Optional[str]\n    delta: Dict\n\n\nclass SSEResponse(BaseModel):\n    event: str\n    data: delta\n\n    def toString(self) -> str:\n        return f'event: message\\ndata: {json.dumps(self.dict())}\\n\\n'\n\n\nclass ChatMessageHistoryResponse(ChatMessageQuery):\n    user_name: Optional[str] = None\n    flow_name: Optional[str] = None\n\n    @classmethod\n    def from_chat_message_objs(cls, chat_messages: List[ChatMessage], user_model: User,\n                               message_session: MessageSession):\n        return [\n            cls.model_validate(obj).model_copy(\n                update={\"user_name\": user_model.user_name, \"flow_name\": message_session.flow_name}) for obj in\n            chat_messages\n        ]\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/dataset_param.py",
    "content": "from ast import List\nfrom typing import Optional\n\nfrom pydantic import BaseModel\n\n\nclass CreateDatasetParam(BaseModel):\n    name: str\n    description: str\n    file_url: Optional[str]\n    qa_list: Optional[List[str]]\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/knowledge.py",
    "content": "from typing import Optional\n\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFileBase\nfrom pydantic import Field\n\n\nclass KnowledgeFileResp(KnowledgeFileBase):\n    id: Optional[int] = Field(default=None)\n    title: Optional[str] = Field(default=None, description=\"Document Summary\")\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/mark_schema.py",
    "content": "from typing import List, Optional, Any\n\nfrom pydantic import BaseModel, Field, field_validator\n\n\nclass MarkTaskCreate(BaseModel):\n    app_list: List[str] = Field(max_length=30)\n    user_list: List[str]\n\n    @field_validator('user_list', mode='before')\n    @classmethod\n    def convert_user_list(cls, v: Any):\n        ret = []\n        for one in v:\n            if isinstance(one, str):\n                ret.append(one)\n            else:\n                ret.append(str(one))\n        return ret\n\n\nclass MarkData(BaseModel):\n    session_id: str\n    task_id: int\n    status: int\n    flow_type: Optional[int] = None\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schema/workflow.py",
    "content": "from enum import Enum\nfrom typing import Optional, Any, List\n\nfrom pydantic import BaseModel, Field, field_validator\n\n\nclass WorkflowEventType(Enum):\n    NodeRun = 'node_run'\n    # Ice Breaker \n    GuideWord = 'guide_word'\n    # Facilitation Questions\n    GuideQuestion = 'guide_question'\n    # Inform the user that user input is now required\n    UserInput = 'input'\n    # Output events that return predefined content to the user\n    OutputMsg = 'output_msg'\n    # Output requires user input at the same time\n    OutputWithInput = 'output_with_input_msg'\n    # Output requires user selection at the same time\n    OutputWithChoose = 'output_with_choose_msg'\n    # Streaming output events, including streaming process, streaming end two states\n    StreamMsg = 'stream_msg'\n    Close = 'close'\n    Error = 'error'\n\n\nclass WorkflowOutputSchema(BaseModel):\n    message: Any = Field(default=None, description='The message content')\n    reasoning_content: Optional[str] = Field(default=None, description='The reasoning content')\n    output_key: Optional[str] = Field(default=None, description='output message key')\n    files: Optional[List[Any]] = Field(default=None, description='The files list')\n    source_url: Optional[str] = Field(default=None, description='The document source url, is web url')\n    extra: Optional[str] = Field(default=None, description='The extra data')\n\n\nclass WorkflowInputItem(BaseModel):\n    key: str = Field(default=None, description='Unique key corresponding to user input')\n    type: str = Field(default=None, description='The input type, select or dialog or file')\n    value: Any = Field(default=None, description='The input default value')\n    label: str = Field(default=None, description='The key label')\n    multiple: bool = Field(default=False, description='The input is multi select')\n    required: bool = Field(default=False, description='The input is required')\n    options: Optional[Any] = Field(default=None, description='The select type options')\n    file_type: Optional[str] = Field(default=None, description='The allow upload file type')\n\n\nclass WorkflowInputSchema(BaseModel):\n    input_type: str = Field(default=None, description='The judge user input is dialog or form')\n    value: List[WorkflowInputItem] = Field(default=None, description='The input schema items')\n\n\nclass WorkflowEvent(BaseModel):\n    event: str = Field(default=None, description='The event type')\n    message_id: Optional[str] = Field(default=None, description='message id for save into mysql')\n    status: Optional[str] = Field(default='end', description='The event status')\n    node_id: Optional[str] = Field(default=None, description='The node id')\n    node_name: Optional[str] = Field(default=None, description='The node name')\n    node_execution_id: Optional[str] = Field(default=None, description='The node exec unique id')\n    output_schema: Optional[WorkflowOutputSchema] = Field(default=None, description='The output schema')\n    input_schema: Optional[WorkflowInputSchema] = Field(default=None, description='The input schema')\n\n    @field_validator('message_id', mode='before')\n    @classmethod\n    def validate_message_id(cls, v: Any) -> Optional[str]:\n        if isinstance(v, str) or v is None:\n            return v\n        return str(v)\n\n\nclass WorkflowStream(BaseModel):\n    session_id: str = Field(default=None, description='The session id')\n    data: WorkflowEvent | list[WorkflowEvent] = Field(default=None, description='The event data or event data list')\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/schemas.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Any, Dict, Generic, List, Optional, TypeVar, Union\n\nfrom langchain.docstore.document import Document\nfrom orjson import orjson\nfrom pydantic import BaseModel, Field, model_validator, field_validator\n\nfrom bisheng.database.models.assistant import AssistantBase\nfrom bisheng.database.models.flow import FlowCreate, FlowRead\nfrom bisheng.database.models.message import ChatMessageRead\nfrom bisheng.database.models.tag import Tag\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeRead\nfrom bisheng.knowledge.domain.schemas.knowledge_rag_schema import Metadata\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsRead\n\n\nclass CaptchaInput(BaseModel):\n    captcha_key: str\n    captcha: str\n\n\nclass ChunkInput(BaseModel):\n    knowledge_id: int\n    documents: List[Document]\n\n\nclass BuildStatus(Enum):\n    \"\"\"Status of the build.\"\"\"\n\n    SUCCESS = 'success'\n    FAILURE = 'failure'\n    STARTED = 'started'\n    IN_PROGRESS = 'in_progress'\n\n\nclass GraphData(BaseModel):\n    \"\"\"Data inside the exported flow.\"\"\"\n\n    nodes: List[Dict[str, Any]]\n    edges: List[Dict[str, Any]]\n\n\nclass ExportedFlow(BaseModel):\n    \"\"\"Exported flow from bisheng.\"\"\"\n\n    description: str\n    name: str\n    id: str\n    data: GraphData\n\n\nclass InputRequest(BaseModel):\n    input: str = Field(description='question or command asked LLM to do')\n\n\nclass TweaksRequest(BaseModel):\n    tweaks: Optional[Dict[str, Dict[str, str]]] = Field(default_factory=dict, description='List of dictionaries')\n\n\nclass UpdateTemplateRequest(BaseModel):\n    template: dict\n\n\n# Create generic variables\nDataT = TypeVar('DataT')\n\n\nclass UnifiedResponseModel(BaseModel, Generic[DataT]):\n    \"\"\"Unified Response Model\"\"\"\n    status_code: int\n    status_message: str\n    data: DataT = None\n\n\ndef resp_200(data: Union[list, dict, str, Any] = None,\n             message: str = 'SUCCESS') -> UnifiedResponseModel:\n    \"\"\"Success code\"\"\"\n    return UnifiedResponseModel(status_code=200, status_message=message, data=data)\n    # return data\n\n\ndef resp_500(code: int = 500,\n             data: Union[list, dict, str, Any] = None,\n             message: str = 'BAD REQUEST') -> UnifiedResponseModel:\n    \"\"\"Wrong logical response\"\"\"\n    return UnifiedResponseModel(status_code=code, status_message=message, data=data)\n\n\nclass ProcessResponse(BaseModel):\n    \"\"\"Process response schema.\"\"\"\n\n    result: Any = None\n    # task: Optional[TaskResponse] = None\n    session_id: Optional[str] = None\n    backend: Optional[str] = None\n\n\nclass ChatInput(BaseModel):\n    message_id: int\n    comment: str = None\n    liked: int = 0\n\n\nclass AddChatMessages(BaseModel):\n    \"\"\"Add a pair of chat messages.\"\"\"\n\n    flow_id: str  # Skills or assistantsID\n    chat_id: str  # SessionsID\n    human_message: str = None  # User Questions\n    answer_message: str = None  # Execution Status\n\n\nclass ChatList(BaseModel):\n    \"\"\"Chat message list.\"\"\"\n\n    flow_name: str = None\n    flow_description: str = None\n    flow_id: str = None\n    chat_id: str = None\n    create_time: datetime = None\n    update_time: datetime = None\n    flow_type: int = None\n    latest_message: Optional[ChatMessageRead] = None\n    logo: Optional[str] = None\n\n\nclass FlowGptsOnlineList(BaseModel):\n    id: str = Field('Uniqueness quantificationID')\n    name: str = None\n    desc: str = None\n    logo: str = None\n    create_time: datetime = None\n    update_time: datetime = None\n    flow_type: str = None  # flow: Skill assistant：gptsassistant\n    count: int = 0\n\n\nclass ChatMessage(BaseModel):\n    \"\"\"Chat message schema.\"\"\"\n\n    is_bot: bool = False\n    message: Union[str, None, dict, list] = ''\n    type: str = 'human'\n    category: str = 'processing'  # system processing answer tool\n    intermediate_steps: Optional[str] = None\n    files: Optional[list] = []\n    user_id: Optional[int] = None\n    message_id: Optional[int | str] = None\n    source: Optional[int] = 0\n    sender: Optional[str] = None\n    receiver: Optional[dict] = None\n    liked: int = 0\n    extra: Optional[str | dict] = '{}'\n    flow_id: Optional[str] = None\n    chat_id: Optional[str] = None\n\n\nclass ChatResponse(ChatMessage):\n    \"\"\"Chat response schema.\"\"\"\n\n    intermediate_steps: Optional[str] = ''\n    is_bot: bool | int = True\n    category: str = 'processing'\n\n    @field_validator('type')\n    @classmethod\n    def validate_message_type(cls, v):\n        \"\"\"\n        end_cover: End & Overwrite Previousmessage\n        \"\"\"\n        if v not in [\n            'start', 'stream', 'end', 'error', 'info', 'file', 'begin', 'close', 'end_cover',\n            'over'\n        ]:\n            raise ValueError('type must be start, stream, end, error, info, or file')\n        return v\n\n\nclass FileResponse(ChatMessage):\n    \"\"\"File response schema.\"\"\"\n\n    data: Any = None\n    data_type: str\n    type: str = 'file'\n    is_bot: bool = True\n\n    @field_validator('data_type')\n    @classmethod\n    def validate_data_type(cls, v):\n        if v not in ['image', 'csv']:\n            raise ValueError('data_type must be image or csv')\n        return v\n\n\nclass FlowListCreate(BaseModel):\n    flows: List[FlowCreate]\n\n\nclass FlowListRead(BaseModel):\n    flows: List[FlowRead]\n\n\nclass InitResponse(BaseModel):\n    flowId: str\n\n\nclass BuiltResponse(BaseModel):\n    built: bool\n\n\nclass UploadFileResponse(BaseModel):\n    \"\"\"Upload file response schema.\"\"\"\n\n    flowId: Optional[str] = None\n    file_path: str\n    relative_path: Optional[str] = None  # minioRelative path, i.e.object_name\n    file_name: Optional[str] = None\n    repeat: bool = False  # Duplicate in Knowledge Base\n    repeat_file_name: Optional[str] = None  # Returns the file name of a duplicate file if it is a duplicate\n    repeat_update_time: Optional[datetime] = None  # Returns the update time of a duplicate file if it is a duplicate\n\n\nclass StreamData(BaseModel):\n    event: str\n    data: dict | str\n\n    def __str__(self) -> str:\n        if isinstance(self.data, dict):\n            return f'event: {self.event}\\ndata: {orjson.dumps(self.data).decode()}\\n\\n'\n        return f'event: {self.event}\\ndata: {self.data}\\n\\n'\n\n\nclass CreateComponentReq(BaseModel):\n    name: str = Field(max_length=50, description='Component Name')\n    data: Any = Field(default='', description='Component Data')\n    description: Optional[str] = Field(default='', description='DESCRIPTION')\n\n\nclass CustomComponentCode(BaseModel):\n    code: str\n    field: Optional[str] = None\n    frontend_node: Optional[dict] = None\n\n\nclass AssistantCreateReq(BaseModel):\n    name: str = Field(max_length=50, description='The assistant name.')\n    prompt: str = Field(min_length=20, max_length=1000, description='Helper Prompt')\n    logo: str = Field(description='logoRelative address of the file')\n\n\nclass AssistantUpdateReq(BaseModel):\n    id: str = Field(description='assistantID')\n    name: Optional[str] = Field('', description='The assistant name. Leave empty to not update')\n    desc: Optional[str] = Field('', description='Assistant description Leave empty to not update')\n    logo: Optional[str] = Field('', description='logoRelative address of the file, empty to not update')\n    prompt: Optional[str] = Field('', description='Visible to Userprompt， Leave empty to not update')\n    guide_word: Optional[str] = Field('', description='Ice Breaker  Leave empty to not update')\n    guide_question: Optional[List] = Field([], description='Guided Question List, Leave empty to not update')\n    model_name: Optional[str] = Field('', description='Selected model name, Leave empty to not update')\n    temperature: Optional[float] = Field(None, description='Model Temperature, Do not pass or do not update')\n    max_token: Optional[int] = Field(32000, description='MaxtokenQuantity Do not pass or do not update')\n\n    tool_list: List[int] | None = Field(default=None,\n                                        description='Tools for assistantsIDVertical,An empty list empties the bound tool forNonethen do not update')\n    flow_list: List[str] | None = Field(default=None,\n                                        description=\"Assistant's SkillsIDVertical,An empty list clears the bound skills forNonethen do not update\")\n    knowledge_list: List[int] | None = Field(default=None,\n                                             description='The knowledge base uponIDlist, forNonethen do not update')\n\n    @field_validator('model_name', mode='before')\n    @classmethod\n    def convert_model_name(cls, v):\n        return str(v)\n\n\nclass AssistantSimpleInfo(BaseModel):\n    id: str\n    name: str\n    desc: str\n    logo: str\n    user_id: int\n    user_name: str\n    status: int\n    flow_type: Optional[int] = None\n    write: Optional[bool] = Field(default=False)\n    group_ids: Optional[List[int]] = None\n    tags: Optional[List[Tag]] = None\n    create_time: datetime\n    update_time: datetime\n\n\nclass AssistantInfo(AssistantBase):\n    tool_list: List[GptsToolsRead] = Field(default_factory=list, description='Tools for assistantsIDVertical')\n    flow_list: List[FlowRead] = Field(default_factory=list, description='Skills for assistantsIDVertical')\n    knowledge_list: List[KnowledgeRead] = Field(default_factory=list, description='The knowledge base uponIDVertical')\n\n\nclass FlowVersionCreate(BaseModel):\n    name: Optional[str] = Field(default=None, description='Version Name')\n    description: Optional[str] = Field(default=None, description='Version description')\n    data: Optional[Dict] = Field(default=None, description='Skill Version Node Data Data')\n    original_version_id: Optional[int] = Field(default=None, description='Version Source VersionID')\n    flow_type: Optional[int] = Field(default=1, description='Type of version')  # 1:common version 10:new Version\n\n\nclass FlowCompareReq(BaseModel):\n    inputs: Any = Field(default=None, description='Inputs Required for Skill Run')\n    question_list: List[str] = Field(default_factory=list, description='TestcaseVertical')\n    version_list: List[int] = Field(default_factory=list, description='Compare VersionsIDVertical')\n    node_id: str = Field(default=None, description='The nodes that need to be compared are uniqueID')\n    thread_num: Optional[int] = Field(default=1, description='Compare Threads')\n\n\nclass DeleteToolTypeReq(BaseModel):\n    tool_type_id: int = Field(description='Tool category to deleteID')\n\n\nclass GroupAndRoles(BaseModel):\n    group_id: int\n    role_ids: List[int]\n\n\nclass CreateUserReq(BaseModel):\n    user_name: str = Field(max_length=30, description='Username')\n    password: str = Field(description='Passwords')\n    group_roles: List[GroupAndRoles] = Field(description='List of user groups and roles to join')\n\n\nclass OpenAIChatCompletionReq(BaseModel):\n    messages: List[dict] = Field(...,\n                                 description='Chat message list, only supporteduser、assistant。systemUse data from within the database')\n    model: str = Field(..., description='The only assistantID')\n    n: int = Field(default=1,\n                   description='Number of answers returned, The assistant side defaults to1, multiple answers are not supported at this time')\n    stream: bool = Field(default=False, description='Whether to turn on streaming replies')\n    temperature: float = Field(default=0.0,\n                               description=\"Model Temperature, Incoming0or don't post means don't overwrite\")\n    tools: List[dict] = Field(default_factory=list,\n                              description='Tools List, The assistant is temporarily unsupported, use the configuration of the assistant')\n\n\nclass OpenAIChoice(BaseModel):\n    index: int = Field(..., description='Index of options')\n    message: dict = Field(default=None, description='The corresponding message content matches the format of the input')\n    finish_reason: str = Field(default='stop', description='End Reason, Assistants onlystop')\n    delta: dict = Field(default=None, description='counterpart&apos;sopenaiStreaming Return Message Content')\n\n\nclass OpenAIChatCompletionResp(BaseModel):\n    id: str = Field(..., description='The only one requestedID')\n    object: str = Field(default='chat.completion', description='Type of posts to return.')\n    created: int = Field(default=..., description='Returned creation timestamp')\n    model: str = Field(..., description=\"returned model, corresponding to the assistant'sid\")\n    choices: List[OpenAIChoice] = Field(..., description='Back to answers list')\n    usage: dict = Field(default=None, description='Various of concerntokenQuantity, Assistant This value is empty')\n    system_fingerprint: Optional[str] = Field(default=None, description='System Fingerprint')\n\n\nclass Icon(BaseModel):\n    enabled: bool\n    image: Optional[str] = None\n    relative_path: Optional[str] = None\n\n\nclass WSModel(BaseModel):\n    key: Optional[str] = None\n    id: str\n    name: Optional[str] = None\n    displayName: Optional[str] = None\n    visual: Optional[bool] = False\n\n\nclass WSPrompt(BaseModel):\n    enabled: bool\n    prompt: Optional[str] = None\n    model: Optional[str] = None\n    tool: Optional[str] = None  # Enumeration of tools\n    params: Optional[dict] = None  # Tools Input Parameters\n    bingKey: Optional[str] = None\n    bingUrl: Optional[str] = None\n\n\nclass LinsightConfig(BaseModel):\n    \"\"\"\n    Ideas Management Configuration\n    \"\"\"\n    linsight_entry: bool = Field(default=True, description='Whether to open the Ideas entrance')\n    input_placeholder: str = Field(..., description='Input Box Prompt')\n    tools: Optional[List[Dict]] = Field(None, description='List of optional tools for Ideas')\n\n\nclass WorkstationConfig(BaseModel):\n    maxTokens: Optional[int] = Field(default=1500, description='MaxtokenQuantity')\n    sidebarIcon: Optional[Icon] = None\n    assistantIcon: Optional[Icon] = None\n    sidebarSlogan: Optional[str] = Field(default='', description='Sidebarslogan')\n    welcomeMessage: Optional[str] = Field(default='')\n    functionDescription: Optional[str] = Field(default='')\n    inputPlaceholder: Optional[str] = ''\n    models: Optional[Union[List[WSModel], str]] = None\n    voiceInput: Optional[WSPrompt] = None\n    webSearch: Optional[WSPrompt] = None\n    knowledgeBase: Optional[WSPrompt] = None\n    fileUpload: Optional[WSPrompt] = None\n    systemPrompt: Optional[str] = None\n    applicationCenterWelcomeMessage: Optional[str] = Field(default='', max_length=1000,\n                                                           pattern=r'^[\\u4e00-\\u9fff\\w\\s\\.,;:!@#$%^&*()\\-_=+\\[\\]{}|\\\\\\'\"<>/?`~·！￥（）【】、《》，。；：“”‘’？]+$',\n                                                           description='App Center Welcome Message')\n    applicationCenterDescription: Optional[str] = Field(default='', max_length=1000,\n                                                        pattern=r'^[\\u4e00-\\u9fff\\w\\s\\.,;:!@#$%^&*()\\-_=+\\[\\]{}|\\\\\\'\"<>/?`~·！￥（）【】、《》，。；：“”‘’？]+$',\n                                                        description='App Center Description')\n    linsightConfig: Optional[LinsightConfig] = Field(default=None, description='Inspiration Configuration')\n\n\nclass ExcelRule(BaseModel):\n    slice_length: Optional[int] = Field(default=10, description='Data Line')\n    header_start_row: Optional[int] = Field(default=1, description='Table header start')\n    header_end_row: Optional[int] = Field(default=1, description='End of header')\n    append_header: Optional[int] = Field(default=1, description='Whether to add a header')\n\n\n# File Split Request Base Parameters\nclass FileProcessBase(BaseModel):\n    knowledge_id: int = Field(..., description='The knowledge base uponID')\n    separator: Optional[List[str]] = Field(default=None,\n                                           description='Split text rule, If not passed on, it is the default')\n    separator_rule: Optional[List[str]] = Field(default=None,\n                                                description='Segmentation before or after the segmentation rule;before/after')\n    chunk_size: Optional[int] = Field(default=1000, description='Split text length, default if not passed')\n    chunk_overlap: Optional[int] = Field(default=100, description='Split text overlap length, default if not passed')\n    retain_images: Optional[int] = Field(default=1, description='Keep document image')\n    force_ocr: Optional[int] = Field(default=0, description='EnableOCR')\n    enable_formula: Optional[int] = Field(default=1, description='latexFormula Recognition')\n    filter_page_header_footer: Optional[int] = Field(default=0, description='Filter Header Footer')\n    excel_rule: Optional[ExcelRule] = Field(default=None, description=\"excel rule\")\n    cache: Optional[bool] = Field(default=True,\n                                  description='Whether to fetch data from the cache when previewing the document')\n\n    @model_validator(mode='before')\n    @classmethod\n    def check_separator_rule(cls, values: Any):\n        if not values.get('separator', None):\n            values['separator'] = ['\\n\\n', '\\n']\n        if not values.get('separator_rule', None):\n            values['separator_rule'] = ['after' for _ in values['separator']]\n        if values.get('chunk_size', None) is None:\n            values['chunk_size'] = 1000\n        if values.get('chunk_overlap') is None:\n            values['chunk_overlap'] = 100\n        if values.get('filter_page_header_footer') is None:\n            values['filter_page_header_footer'] = 0\n        if values.get('force_ocr') is None:\n            values['force_ocr'] = 1\n        if values.get('enable_formula') is None:\n            values['enable_formula'] = 1\n        if values.get(\"retain_images\") is None:\n            values['retain_images'] = 1\n        if values.get(\"excel_rule\") is None:\n            values['excel_rule'] = ExcelRule()\n        if values.get(\"knowledge_id\") is None:\n            raise ValueError('knowledge_id is required')\n\n        return values\n\n\n# File chunked data format\nclass FileChunk(BaseModel):\n    text: str = Field(..., description='Text block Content')\n    parse_type: Optional[str] = Field(default=None, description='File parsing type to which the text belongs')\n    metadata: Metadata = Field(..., description='Text block metadata')\n\n\n# Preview File Chunked Content Request Parameters\nclass PreviewFileChunk(FileProcessBase):\n    file_path: str = Field(..., description='FilePath')\n    cache: bool = Field(default=True, description='Whether to fetch from cache')\n    excel_rule: Optional[ExcelRule] = Field(default=None, description=\"excel rule\")\n\n\nclass UpdatePreviewFileChunk(BaseModel):\n    knowledge_id: int = Field(..., description='The knowledge base uponID')\n    file_path: str = Field(..., description='FilePath')\n    text: str = Field(..., description='Text block Content')\n    chunk_index: int = Field(..., description='Text block index, Insidemetadatamile')\n    bbox: Optional[str] = Field(default='', description='Text blocksbboxMessage')\n\n\nclass KnowledgeFileOne(BaseModel):\n    file_path: str = Field(..., description='FilePath')\n    excel_rule: Optional[ExcelRule] = Field(default=None, description=\"Excel rules\")\n\n\n# Knowledge Base File Processing\nclass KnowledgeFileProcess(FileProcessBase):\n    file_list: List[KnowledgeFileOne] = Field(..., description='List of files')\n    callback_url: Optional[str] = Field(default=None, description='Asynchronous Task Callback Address')\n    extra: Optional[str] = Field(default=None, description='Additional Information')\n\n\n# Knowledge Base Re-Segment Adjustment\nclass KnowledgeFileReProcess(FileProcessBase):\n    kb_file_id: int = Field(..., description='Knowledge Base FilesID')\n    file_path: str = Field(default=\"\", description='FilePath')\n    excel_rule: Optional[ExcelRule] = Field(default=None, description=\"Excel rules\")\n    callback_url: Optional[str] = Field(default=None, description='Asynchronous Task Callback Address')\n    extra: Optional[Dict] = Field(default=None, description='Additional Information')\n\n\nclass FrequentlyUsedChat(BaseModel):\n    user_link_type: str = Field(..., description='User-associatedtype')\n    type_detail: str = Field(..., description='User-associatedtype_id')\n\n\nclass UpdateKnowledgeReq(BaseModel):\n    \"\"\"Update Knowledge Base Model Request\"\"\"\n    model_id: int = Field(..., description='embeddingModelsID')\n    model_type: Optional[str] = Field(default=None,\n                                      description='Model type, when not passed on, it will be based onmodel_idAuto Query')\n    knowledge_id: Optional[int] = Field(default=None,\n                                        description='The knowledge base uponID, if empty, update all private repositories')\n    knowledge_name: Optional[str] = Field(default=None, description='Library Name')\n    description: Optional[str] = Field(default=None, description='KB Description')\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/skillcenter.py",
    "content": "from typing import Optional\n\nfrom fastapi import APIRouter, HTTPException, Depends\nfrom sqlmodel import select\n\nfrom bisheng.api.utils import remove_api_keys\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.flow import FlowTemplateNameError\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.flow import Flow\nfrom bisheng.database.models.template import Template, TemplateCreate, TemplateUpdate\n\n# build router\nrouter = APIRouter(prefix='/skill', tags=['Skills'], dependencies=[Depends(UserPayload.get_login_user)])\nORDER_GAP = 65535\n\n\n@router.post('/template/create')\ndef create_template(*, template: TemplateCreate):\n    \"\"\"Create a new flow.\"\"\"\n    db_template = Template.model_validate(template)\n    if not db_template.data:\n        with get_sync_db_session() as session:\n            db_flow = session.get(Flow, template.flow_id)\n        db_template.data = db_flow.data\n    # Correctionname\n    with get_sync_db_session() as session:\n        name_repeat = session.exec(\n            select(Template).where(Template.name == db_template.name)).first()\n    if name_repeat:\n        raise FlowTemplateNameError.http_exception()\n    # Boost order_num  x,x+65535\n    with get_sync_db_session() as session:\n        max_order = session.exec(select(Template).order_by(\n            Template.order_num.desc()).limit(1)).first()\n    # If no data is available, proceed from 65535 Getting Started\n    db_template.order_num = max_order.order_num + ORDER_GAP if max_order else ORDER_GAP\n    with get_sync_db_session() as session:\n        session.add(db_template)\n        session.commit()\n        session.refresh(db_template)\n    return resp_200(db_template)\n\n\n@router.get('/template')\ndef read_template(page_size: Optional[int] = None,\n                  page_name: Optional[int] = None,\n                  flow_type: Optional[int] = None,\n                  id: Optional[int] = None,\n                  name: Optional[str] = None):\n    \"\"\"Read all flows.\"\"\"\n    sql = select(Template.id, Template.name, Template.description, Template.update_time, Template.order_num)\n    if id:\n        with get_sync_db_session() as session:\n            template = session.get(Template, id)\n        return resp_200([template])\n    if name:\n        sql = sql.where(Template.name == name)\n    if flow_type:\n        sql = sql.where(Template.flow_type == flow_type)\n\n    sql = sql.order_by(Template.order_num.desc())\n    if page_size and page_name:\n        sql = sql.offset(page_size * (page_name - 1)).limit(page_size)\n    try:\n        with get_sync_db_session() as session:\n            template_session = session.exec(sql)\n        templates = template_session.mappings().all()\n        res = []\n        for one in templates:\n            res.append(Template.model_validate(one))\n        return resp_200(res)\n\n    except Exception as e:\n        raise HTTPException(status_code=500, detail=str(e)) from e\n\n\n@router.post('/template/{id}')\ndef update_template(*, id: int, template: TemplateUpdate):\n    \"\"\"Update a flow.\"\"\"\n    with get_sync_db_session() as session:\n        db_template = session.get(Template, id)\n    if not db_template:\n        raise HTTPException(status_code=404, detail='Template not found')\n    template_data = template.model_dump(exclude_unset=True)\n    if settings.remove_api_keys:\n        template_data = remove_api_keys(template_data)\n    for key, value in template_data.items():\n        setattr(db_template, key, value)\n    with get_sync_db_session() as session:\n        session.add(db_template)\n        session.commit()\n        session.refresh(db_template)\n    return resp_200(db_template)\n\n\n@router.delete('/template/{id}', status_code=200)\ndef delete_template(*, id: int):\n    \"\"\"Delete a flow.\"\"\"\n    with get_sync_db_session() as session:\n        db_template = session.get(Template, id)\n    if not db_template:\n        raise HTTPException(status_code=404, detail='Template not found')\n    with get_sync_db_session() as session:\n        session.delete(db_template)\n        session.commit()\n    return resp_200()\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/tag.py",
    "content": "from typing import List\n\nfrom fastapi import APIRouter, Request, Depends, Query, Body\n\nfrom bisheng.api.services.tag import TagService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.database.models.group_resource import ResourceTypeEnum\n\nrouter = APIRouter(prefix='/tag', tags=['Tag'])\n\n\n@router.get('')\ndef get_all_tag(request: Request,\n                login_user: UserPayload = Depends(UserPayload.get_login_user),\n                keyword: str = Query(default=None, description='Search keyword ...'),\n                page: int = Query(default=0, description='Page'),\n                limit: int = Query(default=10, description='Listings Per Page')):\n    result, total = TagService.get_all_tag(request, login_user, keyword, page, limit)\n    return resp_200(data={\n        'data': result,\n        'total': total\n    })\n\n\n@router.post('')\ndef create_tag(request: Request,\n               login_user: UserPayload = Depends(UserPayload.get_admin_user),\n               name: str = Body(..., embed=True, description='Label Name')):\n    result = TagService.create_tag(request, login_user, name)\n    return resp_200(result)\n\n\n@router.put('')\ndef update_tag(request: Request,\n               login_user: UserPayload = Depends(UserPayload.get_admin_user),\n               tag_id: int = Body(..., embed=True, description='labelID'),\n               name: str = Body(..., embed=True, description='Label Name')):\n    result = TagService.update_tag(request, login_user, tag_id, name)\n    return resp_200(result)\n\n\n@router.delete('')\ndef delete_tag(request: Request,\n               login_user: UserPayload = Depends(UserPayload.get_admin_user),\n               tag_id: int = Body(..., embed=True, description='labelID')):\n    TagService.delete_tag(request, login_user, tag_id)\n    return resp_200()\n\n\n@router.post('/link')\ndef create_tag_link(request: Request,\n                    login_user: UserPayload = Depends(UserPayload.get_login_user),\n                    tag_id: int = Body(..., embed=True, description='labelID'),\n                    resource_id: str = Body(..., embed=True, description='reasourseID'),\n                    resource_type: ResourceTypeEnum = Body(..., embed=True, description='Resource Type')):\n    result = TagService.create_tag_link(request, login_user, tag_id, resource_id, resource_type)\n    return resp_200(result)\n\n\n@router.delete('/link')\ndef delete_tag_link(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        tag_id: int = Body(..., embed=True, description='labelID'),\n        resource_id: str = Body(..., embed=True, description='reasourseID'),\n        resource_type: ResourceTypeEnum = Body(..., embed=True, description='Resource Type')):\n    TagService.delete_tag_link(request, login_user, tag_id, resource_id, resource_type)\n    return resp_200()\n\n\n@router.get('/home')\ndef get_home_tag(request: Request,\n                 login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get a list of tags to show on the homepage\n    \"\"\"\n\n    result = TagService.get_home_tag(request, login_user)\n    return resp_200(result)\n\n\n@router.post('/home')\ndef update_home_tag(request: Request,\n                    login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                    tag_ids: List[int] = Body(..., embed=True, description='labelIDVertical')):\n    \"\"\"\n    Update the list of tags displayed on the homepage\n    \"\"\"\n\n    result = TagService.update_home_tag(request, login_user, tag_ids)\n    return resp_200(result)\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/usergroup.py",
    "content": "# build router\nfrom typing import Annotated, List, Optional\n\nfrom fastapi import APIRouter, Body, Depends, Query, Request\n\nfrom bisheng.api.services.role_group_service import RoleGroupService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.errcode.user import UserGroupEmptyError\nfrom bisheng.database.models.group import Group, GroupCreate\nfrom bisheng.database.models.group_resource import ResourceTypeEnum\nfrom bisheng.database.models.role import RoleDao\nfrom bisheng.database.models.user_group import UserGroupDao\n\nrouter = APIRouter(prefix='/group', tags=['User'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n@router.get('/list')\nasync def get_all_group(login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get all groups\n    \"\"\"\n    if login_user.is_admin():\n        groups = []\n    else:\n        # Query if you are an administrator of another user group under\n        user_groups = UserGroupDao.get_user_admin_group(login_user.user_id)\n        groups = []\n        for one in user_groups:\n            if one.is_group_admin:\n                groups.append(one.group_id)\n        # Not an administrator of any user group does not have permission to view\n        if not groups:\n            raise UnAuthorizedError()\n\n    groups_res = RoleGroupService().get_group_list(groups)\n    return resp_200({'records': groups_res})\n\n\n@router.post('/create')\nasync def create_group(request: Request, group: GroupCreate,\n                       login_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    \"\"\"\n    Add Usergroup\n    \"\"\"\n    return resp_200(RoleGroupService().create_group(request, login_user, group))\n\n\n@router.put('/create')\nasync def update_group(request: Request,\n                       group: Group,\n                       login_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    \"\"\"\n    Can edit existing usergroups\n    \"\"\"\n    return resp_200(RoleGroupService().update_group(request, login_user, group))\n\n\n@router.delete('/create', status_code=200)\nasync def delete_group(request: Request,\n                       group_id: int,\n                       login_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    \"\"\"\n    Can delete existing usergroups\n    \"\"\"\n\n    return RoleGroupService().delete_group(request, login_user, group_id)\n\n\n@router.post('/set_user_group')\nasync def set_user_group(request: Request,\n                         user_id: Annotated[int, Body(embed=True)],\n                         group_id: Annotated[List[int], Body(embed=True)],\n                         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Set up user groups, Batch Replacement, Replace different user groups according to different operation permissions\n    User group management replaces only the user groups for which he has permissions. Super Admin Full Replacement\n    \"\"\"\n    if not group_id:\n        raise UserGroupEmptyError()\n    return resp_200(RoleGroupService().replace_user_groups(request, login_user, user_id, group_id))\n\n\n@router.get('/get_user_group')\nasync def get_user_group(user_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get the group to which the user belongs\n    \"\"\"\n    return resp_200(RoleGroupService().get_user_groups_list(user_id))\n\n\n@router.get('/get_group_user')\nasync def get_group_user(group_id: int,\n                         page_size: int = None,\n                         page_num: int = None,\n                         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get grouped users\n    \"\"\"\n    return RoleGroupService().get_group_user_list(group_id, page_size, page_num)\n\n\n@router.post('/set_group_admin')\nasync def set_group_admin(\n        request: Request,\n        user_ids: Annotated[List[int], Body(embed=True)],\n        group_id: Annotated[int, Body(embed=True)],\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)):\n    \"\"\"\n    Get groupingadmin, batch setting interface, overriding the historicaladmin\n    \"\"\"\n\n    return resp_200(RoleGroupService().set_group_admin(request, login_user, user_ids, group_id))\n\n\n@router.post('/set_update_user', status_code=200)\nasync def set_update_user(group_id: Annotated[int, Body(embed=True)],\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Update user group last modified by\n    \"\"\"\n    return resp_200(RoleGroupService().set_group_update_user(login_user, group_id))\n\n\n@router.get('/get_group_resources')\nasync def get_group_resources(*,\n                              group_id: int,\n                              resource_type: int,\n                              name: Optional[str] = None,\n                              page_size: Optional[int] = 10,\n                              page_num: Optional[int] = 1,\n                              user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get a list of resources under a user group\n    \"\"\"\n    # Determine if you are an administrator of a user group\n    if not user.check_group_admin(group_id):\n        return UnAuthorizedError.return_resp()\n    res, total = await RoleGroupService().get_group_resources(\n        group_id,\n        resource_type=ResourceTypeEnum(resource_type),\n        name=name,\n        page_size=page_size,\n        page_num=page_num)\n    return resp_200(data={\n        \"data\": res,\n        \"total\": total\n    })\n\n\n@router.get(\"/roles\")\nasync def get_group_roles(*,\n                          group_id: List[int] = Query(..., description=\"User GroupsIDVertical\"),\n                          keyword: str = Query(None, description=\"Search keyword ...\"),\n                          page: int = 0,\n                          limit: int = 0,\n                          user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get a list of roles within a user group\n    \"\"\"\n    # Determine if you are an administrator of a user group\n    if not user.check_groups_admin(group_id):\n        return UnAuthorizedError.return_resp()\n    # List of roles under query group\n    role_list = RoleDao.get_role_by_groups(group_id, keyword, page, limit)\n    total = RoleDao.count_role_by_groups(group_id, keyword)\n\n    return resp_200(data={\n        \"data\": role_list,\n        \"total\": total\n    })\n\n\n@router.get(\"/manage/resources\")\nasync def get_manage_resources(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                               keyword: str = Query(None, description=\"Search keyword ...\"),\n                               page: int = 1,\n                               page_size: int = 10):\n    \"\"\" Get a list of apps under a managed user group \"\"\"\n    res, total = await RoleGroupService().get_manage_resources(login_user, keyword, page, page_size)\n    return resp_200(data={\n        \"data\": res,\n        \"total\": total\n    })\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/validate.py",
    "content": "from bisheng.api.v1.base import (Code, CodeValidationResponse, PromptValidationResponse,\n                                 ValidatePromptRequest, validate_prompt)\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.template.field.base import TemplateField\nfrom loguru import logger\nfrom bisheng.utils.validate import validate_code\nfrom fastapi import APIRouter, HTTPException\n\n# build router\nrouter = APIRouter(prefix='/validate', tags=['Validate'])\n\n\n@router.post('/code', status_code=200)\ndef post_validate_code(code: Code):\n    try:\n        errors = validate_code(code.code)\n        return resp_200(\n            CodeValidationResponse(\n                imports=errors.get('imports', {}),\n                function=errors.get('function', {}),\n            ))\n    except Exception as e:\n        return HTTPException(status_code=500, detail=str(e))\n\n\n@router.post('/prompt')\ndef post_validate_prompt(prompt_request: ValidatePromptRequest):\n    try:\n        input_variables = validate_prompt(prompt_request.template)\n\n        old_custom_fields = get_old_custom_fields(prompt_request)\n\n        add_new_variables_to_template(input_variables, prompt_request)\n\n        remove_old_variables_from_template(old_custom_fields, input_variables, prompt_request)\n\n        update_input_variables_field(input_variables, prompt_request)\n\n        return resp_200(\n            PromptValidationResponse(\n                input_variables=input_variables,\n                frontend_node=prompt_request.frontend_node,\n            ))\n    except Exception as e:\n        logger.exception(e)\n        raise HTTPException(status_code=500, detail=str(e)) from e\n\n\ndef get_old_custom_fields(prompt_request):\n    try:\n        old_custom_fields = prompt_request.frontend_node.custom_fields[prompt_request.name].copy()\n    except KeyError:\n        old_custom_fields = []\n    prompt_request.frontend_node.custom_fields[prompt_request.name] = []\n    return old_custom_fields\n\n\ndef add_new_variables_to_template(input_variables, prompt_request):\n    for variable in input_variables:\n        try:\n            template_field = TemplateField(\n                name=variable,\n                display_name=variable,\n                field_type='str',\n                show=True,\n                advanced=False,\n                multiline=True,\n                input_types=['Document', 'BaseOutputParser', 'VariableNode'],\n                value='',  # Set the value to empty string\n            )\n            if variable in prompt_request.frontend_node.template:\n                # Set the new field with the old value\n                template_field.value = prompt_request.frontend_node.template[variable]['value']\n\n            prompt_request.frontend_node.template[variable] = template_field.to_dict()\n\n            # Check if variable is not already in the list before appending\n            if (variable not in prompt_request.frontend_node.custom_fields[prompt_request.name]):\n                prompt_request.frontend_node.custom_fields[prompt_request.name].append(variable)\n\n        except Exception as exc:\n            logger.exception(exc)\n            raise HTTPException(status_code=500, detail=str(exc)) from exc\n\n\ndef remove_old_variables_from_template(old_custom_fields, input_variables, prompt_request):\n    for variable in old_custom_fields:\n        if variable not in input_variables:\n            try:\n                # Remove the variable from custom_fields associated with the given name\n                if (variable in prompt_request.frontend_node.custom_fields[prompt_request.name]):\n                    prompt_request.frontend_node.custom_fields[prompt_request.name].remove(\n                        variable)\n\n                # Remove the variable from the template\n                prompt_request.frontend_node.template.pop(variable, None)\n\n            except Exception as exc:\n                logger.exception(exc)\n                raise HTTPException(status_code=500, detail=str(exc)) from exc\n\n\ndef update_input_variables_field(input_variables, prompt_request):\n    if 'input_variables' in prompt_request.frontend_node.template:\n        prompt_request.frontend_node.template['input_variables']['value'] = input_variables\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/variable.py",
    "content": "from typing import List, Optional\n\nfrom loguru import logger\nfrom fastapi import APIRouter, HTTPException\nfrom sqlmodel import delete, select\n\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.flow_version import FlowVersionDao\nfrom bisheng.database.models.variable_value import Variable, VariableCreate, VariableRead, VariableDao\n\n# build router\nrouter = APIRouter(prefix='/variable', tags=['variable'])\n\n\n@router.post('/', status_code=200)\ndef post_variable(variable: Variable):\n    try:\n        if not variable.version_id:\n            raise HTTPException(status_code=500, detail='version_id is required')\n        if variable.id:\n            # Update with full replacement\n            with get_sync_db_session() as session:\n                db_variable = session.get(Variable, variable.id)\n            db_variable.variable_name = variable.variable_name[:50]\n            db_variable.value = variable.value\n            db_variable.value_type = variable.value_type\n        else:\n            # if name exist\n            with get_sync_db_session() as session:\n                db_variable = session.exec(\n                    select(Variable).where(\n                        Variable.node_id == variable.node_id,\n                        Variable.variable_name == variable.variable_name,\n                        Variable.version_id == variable.version_id)).all()\n            if db_variable:\n                raise HTTPException(status_code=500, detail='name repeat, please choose another')\n            db_variable = Variable.from_orm(variable)\n\n        with get_sync_db_session() as session:\n            session.add(db_variable)\n            session.commit()\n            session.refresh(db_variable)\n        return resp_200(db_variable)\n    except Exception as e:\n        logger.exception(\"post variable error: \")\n        return HTTPException(status_code=500, detail=str(e))\n\n\n@router.get('/list')\ndef get_variables(*,\n                  flow_id: str,\n                  node_id: Optional[str] = None,\n                  variable_name: Optional[str] = None,\n                  version_id: Optional[int] = None):\n    try:\n        # No passingIDGet data for the current version by default\n        if version_id is None:\n            version_id = FlowVersionDao.get_version_by_flow(flow_id).id\n        res = VariableDao.get_variables(flow_id, node_id, variable_name, version_id)\n        return resp_200(res)\n\n    except Exception as e:\n        return HTTPException(status_code=500, detail=str(e))\n\n\n@router.delete('/del', status_code=200)\ndef del_variables(*, id: int):\n    try:\n        statment = delete(Variable).where(Variable.id == id)\n        with get_sync_db_session() as session:\n            session.exec(statment)\n            session.commit()\n        return resp_200()\n\n    except Exception as e:\n        return HTTPException(status_code=500, detail=str(e))\n\n\n@router.post('/save_all', status_code=200)\ndef save_all_variables(*, data: List[VariableCreate]):\n    try:\n        # delete first\n        flow_id = data[0].flow_id\n        with get_sync_db_session() as session:\n            session.exec(delete(Variable).where(Variable.flow_id == flow_id))\n            session.commit()\n            for var in data:\n                db_var = Variable.model_validate(var)\n                session.add(db_var)\n            session.commit()\n        return resp_200()\n    except Exception as e:\n        return HTTPException(status_code=500, detail=str(e))\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/workflow.py",
    "content": "import time\nfrom typing import Optional, Union\n\nfrom fastapi import APIRouter, Body, Depends, Query, WebSocket, WebSocketException, Request, \\\n    status as http_status\nfrom loguru import logger\nfrom sqlmodel import select\n\nfrom bisheng.api.services.flow import FlowService\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.api.v1.chat import chat_manager\nfrom bisheng.api.v1.schemas import FlowVersionCreate, resp_200\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.flow import WorkflowNameExistsError, WorkFlowOnlineEditError, AppWriteAuthError\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.database.models.assistant import AssistantDao\nfrom bisheng.database.models.flow import Flow, FlowCreate, FlowDao, FlowRead, FlowType, FlowUpdate, \\\n    FlowStatus\nfrom bisheng.database.models.flow_version import FlowVersionDao\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.utils import generate_uuid\nfrom bisheng_langchain.utils.requests import Requests\n\nrouter = APIRouter(prefix='/workflow', tags=['Workflow'])\n\n\n@router.get(\"/write/auth\")\nasync def check_app_write_auth(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        flow_id: str = Query(..., description=\"ApplicationsID\"),\n        flow_type: int = Query(..., description=\"Apply type\")\n):\n    \"\"\" Check if the user has administrative rights to the app \"\"\"\n    check_auth_type = AccessType.FLOW_WRITE\n    if flow_type == FlowType.ASSISTANT.value:\n        check_auth_type = AccessType.ASSISTANT_WRITE\n        flow_info = await AssistantDao.aget_one_assistant(flow_id)\n    else:\n        flow_info = await FlowDao.aget_flow_by_id(flow_id)\n        if flow_info and flow_info.flow_type == FlowType.WORKFLOW.value:\n            check_auth_type = AccessType.WORKFLOW_WRITE\n    if not flow_info:\n        raise NotFoundError.http_exception()\n    owner_id = flow_info.user_id\n    if await login_user.async_access_check(owner_id, flow_id, check_auth_type):\n        return resp_200()\n    return AppWriteAuthError.return_resp()\n\n\n@router.get(\"/report/file\")\nasync def get_report_file(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        version_key: str = Query(\"\", description=\"minioright of privacyobject_name\"),\n        workflow_id: str = Query(..., description=\"The WorkflowID\")\n):\n    \"\"\" DapatkanreportTemplate file for the node \"\"\"\n\n    # Check if the user has read access to the app\n    flow_info = await FlowDao.aget_flow_by_id(workflow_id)\n    if not flow_info:\n        raise NotFoundError.http_exception()\n    if not await login_user.async_access_check(flow_info.user_id, workflow_id, AccessType.WORKFLOW):\n        return UnAuthorizedError.return_resp()\n\n    if not version_key:\n        #  Regenerate aversion_key\n        version_key = generate_uuid()\n    else:\n        version_key = version_key.split('_', 1)[0]\n    file_url = \"\"\n    object_name = f\"workflow/report/{version_key}.docx\"\n    minio_client = await get_minio_storage()\n    if await minio_client.object_exists(minio_client.bucket, object_name):\n        file_url = await minio_client.get_share_link(object_name, clear_host=False)\n\n    return resp_200(data={\n        'url': file_url,\n        'version_key': f'{version_key}_{int(time.time() * 1000)}',\n    })\n\n\n@router.post('/report/copy', status_code=200)\nasync def copy_report_file(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        version_key: str = Body(..., embed=True, description=\"minioright of privacyobject_name\")):\n    \"\"\" SalinreportTemplate file for the node \"\"\"\n    version_key = version_key.split('_', 1)[0]\n    new_version_key = generate_uuid()\n    object_name = f\"workflow/report/{version_key}.docx\"\n    new_object_name = f\"workflow/report/{new_version_key}.docx\"\n    minio_client = await get_minio_storage()\n    if await minio_client.object_exists(minio_client.bucket, object_name):\n        await minio_client.copy_object(source_object=object_name, dest_object=new_object_name,\n                                       source_bucket=minio_client.bucket, dest_bucket=minio_client.bucket)\n    return resp_200(data={\n        'version_key': f'{new_version_key}',\n    })\n\n\n@router.post('/report/callback', status_code=200)\nasync def upload_report_file(\n        request: Request,\n        data: dict = Body(...)):\n    \"\"\" office Callback interface save reportTemplate file for the node \"\"\"\n    status = data.get('status')\n    file_url = data.get('url')\n    key = data.get('key')\n    logger.debug(f'callback={data}')\n    if status not in {2, 6}:\n        # Non-saved callbacks are not processed\n        return {'error': 0}\n    logger.info(f'office_callback url={file_url}')\n    file = Requests().get(url=file_url)\n    version_key = key.split('_', 1)[0]\n\n    minio_client = await get_minio_storage()\n    object_name = f\"workflow/report/{version_key}.docx\"\n    await minio_client.put_object(\n        object_name=object_name, file=file._content, bucket_name=minio_client.bucket,\n        content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document')\n    return {'error': 0}\n\n\n@router.post('/run_once', status_code=200)\ndef run_once(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n             node_input: Optional[dict] = None,  # Input parameters of the node\n             node_data: dict = None,\n             workflow_id: str = Body(..., description='The WorkflowID')):\n    \"\"\" Single node operation \"\"\"\n    result = WorkFlowService.run_once(login_user, node_input, node_data, workflow_id)\n\n    return resp_200(data=result)\n\n\n@router.websocket('/chat/{workflow_id}')\nasync def workflow_ws(*,\n                      workflow_id: str,\n                      websocket: WebSocket,\n                      chat_id: Optional[str] = None,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user_from_ws)):\n    try:\n        await chat_manager.dispatch_client(websocket, workflow_id, chat_id, login_user, WorkType.WORKFLOW, websocket)\n    except WebSocketException as exc:\n        logger.error(f'Websocket exception: {str(exc)}')\n        await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=str(exc))\n\n\n@router.post('/create', status_code=201)\ndef create_flow(*, request: Request, flow: FlowCreate, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Create a new flow.\"\"\"\n    # Determine if the user repeats the skill name\n    with get_sync_db_session() as session:\n        if session.exec(\n                select(Flow).where(Flow.name == flow.name, Flow.flow_type == FlowType.WORKFLOW.value,\n                                   Flow.user_id == login_user.user_id)).first():\n            raise WorkflowNameExistsError.http_exception()\n    flow.user_id = login_user.user_id\n    db_flow = Flow.model_validate(flow)\n    db_flow.create_time = None\n    db_flow.update_time = None\n    db_flow.flow_type = FlowType.WORKFLOW.value\n    # Create New Skill\n    db_flow = FlowDao.create_flow(db_flow, FlowType.WORKFLOW.value)\n\n    current_version = FlowVersionDao.get_version_by_flow(db_flow.id)\n    ret = FlowRead.model_validate(db_flow)\n    ret.version_id = current_version.id\n    FlowService.create_flow_hook(request, login_user, db_flow, ret.version_id, FlowType.WORKFLOW.value)\n    return resp_200(data=ret)\n\n\n@router.get('/versions', status_code=200)\ndef get_versions(*, flow_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get a list of versions for your skill\n    \"\"\"\n    return FlowService.get_version_list_by_flow(login_user, flow_id)\n\n\n@router.post('/versions', status_code=200)\nasync def create_versions(*,\n                          flow_id: str,\n                          flow_version: FlowVersionCreate,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Create New Skill Version\n    \"\"\"\n    flow_version.flow_type = FlowType.WORKFLOW.value\n    return await FlowService.create_new_version(login_user, flow_id, flow_version)\n\n\n@router.put('/versions/{version_id}', status_code=200)\nasync def update_versions(*,\n                          request: Request,\n                          version_id: int,\n                          flow_version: FlowVersionCreate,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Update to version\n    \"\"\"\n    return await FlowService.update_version_info(request, login_user, version_id, flow_version)\n\n\n@router.delete('/versions/{version_id}', status_code=200)\ndef delete_versions(*, version_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Remove Version\n    \"\"\"\n    return FlowService.delete_version(login_user, version_id)\n\n\n@router.get('/versions/{version_id}', status_code=200)\ndef get_version_info(*, version_id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Get Version Info\n    \"\"\"\n    return FlowService.get_version_info(login_user, version_id)\n\n\n@router.post('/change_version', status_code=200)\ndef change_version(*,\n                   request: Request,\n                   flow_id: str = Query(default=None, description='Skill UniqueID'),\n                   version_id: int = Query(default=None, description='Current version that needs to be setID'),\n                   login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Modify Current Version\n    \"\"\"\n    return FlowService.change_current_version(request, login_user, flow_id, version_id)\n\n\n@router.get('/get_one_flow/{flow_id}')\nasync def read_flow(*, flow_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                    share_link: Union['ShareLink', None] = Depends(header_share_token_parser)):\n    \"\"\"Read a flow.\"\"\"\n    return await FlowService.get_one_flow(login_user, flow_id, share_link)\n\n\n@router.patch('/update/{flow_id}')\nasync def update_flow(*,\n                      request: Request,\n                      flow_id: str,\n                      flow: FlowUpdate,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"online offline\"\"\"\n    db_flow = await FlowDao.aget_flow_by_id(flow_id)\n    if not db_flow:\n        raise NotFoundError()\n\n    if not await login_user.async_access_check(db_flow.user_id, flow_id, AccessType.WORKFLOW_WRITE):\n        return UnAuthorizedError.return_resp()\n\n    flow_data = flow.model_dump(exclude_unset=True)\n\n    if db_flow.status == FlowStatus.ONLINE.value and (\n            'status' not in flow_data or flow_data['status'] != FlowStatus.OFFLINE.value):\n        raise WorkFlowOnlineEditError.http_exception()\n\n    for key, value in flow_data.items():\n        if key in ['data', 'create_time', 'update_time']:\n            continue\n        if key == \"logo\" and not value:\n            continue\n        setattr(db_flow, key, value)\n    db_flow = await FlowDao.aupdate_flow(db_flow)\n    await telemetry_service.log_event(\n        user_id=login_user.user_id,\n        event_type=BaseTelemetryTypeEnum.EDIT_APPLICATION,\n        trace_id=trace_id_var.get()\n    )\n    await FlowService.update_flow_hook(request, login_user, db_flow)\n    return resp_200(db_flow)\n\n\n@router.patch('/status')\nasync def update_flow_status(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                             flow_id: str = Body(..., description='SkillID'),\n                             version_id: int = Body(..., description='VersionID'),\n                             status: int = Body(..., description='Status')):\n    await WorkFlowService.update_flow_status(login_user, flow_id, version_id, status)\n    return resp_200()\n\n\n@router.get('/list', status_code=200)\ndef read_flows(*,\n               login_user: UserPayload = Depends(UserPayload.get_login_user),\n               name: str = Query(default=None, description='accordingnameFind databases with fuzzy searches for descriptions'),\n               tag_id: int = Query(default=None, description='labelID'),\n               flow_type: int = Query(default=None, description='Type 1 flow 5 assitant 10 workflow '),\n               page_size: int = Query(default=10, description='Items per page'),\n               page_num: int = Query(default=1, description='Page'),\n               status: int = None,\n               managed: bool = Query(default=False, description='Whether to query the list of apps with administrative permissions')):\n    \"\"\"Read all flows.\"\"\"\n    data, total = WorkFlowService.get_all_flows(login_user, name, status, tag_id, flow_type, page_num, page_size,\n                                                managed)\n    return resp_200(data={\n        'data': data,\n        'total': total\n    })\n"
  },
  {
    "path": "src/backend/bisheng/api/v1/workstation.py",
    "content": "import asyncio\nimport base64\nimport json\nimport time\nfrom datetime import datetime\nfrom pathlib import Path\nfrom typing import Optional, Union, List, Type, Tuple\nfrom urllib.parse import unquote\nfrom uuid import uuid4\n\nimport aiofiles\nfrom fastapi import APIRouter, BackgroundTasks, Body, Depends, File, Request, UploadFile\nfrom fastapi.responses import StreamingResponse\nfrom langchain_core.documents import Document\nfrom langchain_core.messages import HumanMessage, SystemMessage\nfrom loguru import logger\nfrom sse_starlette import EventSourceResponse\n\nfrom bisheng.api.services import knowledge_imp\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.api.services.workstation import (WorkstationConversation,\n                                              WorkstationMessage, WorkStationService)\nfrom bisheng.api.v1.schema.chat_schema import APIChatCompletion, SSEResponse, delta\nfrom bisheng.api.v1.schemas import FrequentlyUsedChat\nfrom bisheng.api.v1.schemas import WorkstationConfig, resp_200, ExcelRule, UnifiedResponseModel\nfrom bisheng.chat.utils import SourceType, process_source_document\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.http_error import ServerError, UnAuthorizedError\nfrom bisheng.common.errcode.workstation import WebSearchToolNotFoundError, ConversationNotFoundError, \\\n    AgentAlreadyExistsError\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData, ApplicationAliveEventData, \\\n    ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings as bisheng_settings\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.cache.utils import save_download_file, save_uploaded_file, async_file_download\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.prompts.manager import get_prompt_manager\nfrom bisheng.database.models.flow import FlowType\nfrom bisheng.database.models.message import ChatMessage, ChatMessageDao\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.llm.domain.llm import BishengLLM\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng.utils import get_request_ip\n\nrouter = APIRouter(prefix='/workstation', tags=['WorkStation'])\n\ntitleInstruction = 'a concise, 5-word-or-less title for the conversation, using its same language, with no punctuation. Apply title case conventions appropriate for the language. Never directly mention the language name or the word \"title\"'  # noqa\npromptSearch = '用户的问题是：%s \\\n判断用户的问题是否需要联网搜索，如果需要返回数字1，如果不需要返回数字0。只返回1或0，不要返回其他信息。\\\n如果问题涉及到实时信息、最新事件或特定数据库查询等超出你知识截止日期（2024年7月）的内容，就需要进行联网搜索来获取最新信息。'\n\nvisual_model_file_types = ['png', 'jpg', 'jpeg', 'webp', 'gif']\n\n\n# Customizable JSON Serializer\ndef custom_json_serializer(obj):\n    if isinstance(obj, datetime):\n        return obj.isoformat()  # Convert To ISO 8601 Format String\n    raise TypeError(f'Type {type(obj)} not serializable')\n\n\ndef user_message(msgId, conversationId, sender, text):\n    msg = json.dumps({\n        'message': {\n            'messageId': msgId,\n            'conversationId': conversationId,\n            'sender': sender,\n            'text': text\n        },\n        'created': True\n    })\n    return f'event: message\\ndata: {msg}\\n\\n'\n\n\ndef step_message(stepId, runId, index, msgId):\n    msg = json.dumps({\n        'event': 'on_run_step',\n        'data': {\n            'id': stepId,\n            'runId': runId,\n            'type': 'message_creation',\n            'index': index,\n            'stepDetails': {\n                'type': 'message_creation',\n                'message_creation': {\n                    'message_id': msgId\n                }\n            }\n        }\n    })\n    return f'event: message\\ndata: {msg}\\n\\n'\n\n\nasync def final_message(conversation: MessageSession, title: str, requestMessage: ChatMessage, text: str,\n                        error: bool, modelName: str, source_document: List[Document] = None):\n    responseMessage = await ChatMessageDao.ainsert_one(\n        ChatMessage(\n            user_id=conversation.user_id,\n            chat_id=conversation.chat_id,\n            flow_id='',\n            type='assistant',\n            is_bot=True,\n            message=text,\n            category='answer',\n            sender=modelName,\n            extra=json.dumps({\n                'parentMessageId': requestMessage.id,\n                'error': error\n            }),\n            source=SourceType.FILE.value if source_document else SourceType.NOT_SUPPORT.value\n        ))\n    if source_document:\n        # Asynchronous processing traceability information storage\n        asyncio.create_task(process_source_document(source_document=source_document,\n                                                    chat_id=conversation.chat_id,\n                                                    message_id=responseMessage.id,\n                                                    answer=text))\n\n    # Last message time to update session\n    msg = json.dumps(\n        {\n            'final': True,\n            'conversation': WorkstationConversation.from_chat_session(conversation).model_dump(),\n            'title': title,\n            'requestMessage': (await WorkstationMessage.from_chat_message(requestMessage)).model_dump(),\n            'responseMessage': (await WorkstationMessage.from_chat_message(responseMessage)).model_dump(),\n        },\n        default=custom_json_serializer)\n    return f'event: message\\ndata: {msg}\\n\\n'\n\n\n@router.get('/config', summary='Get workbench configuration', response_model=UnifiedResponseModel)\ndef get_config(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get model configurations related to reviews \"\"\"\n    ret = WorkStationService.get_config()\n\n    etl_for_lm_url = bisheng_settings.get_knowledge().etl4lm.url\n    ret = ret.model_dump() if ret else {}\n\n    ret['enable_etl4lm'] = bool(etl_for_lm_url)\n    linsight_invitation_code = bisheng_settings.get_all_config().get('linsight_invitation_code', None)\n    ret['linsight_invitation_code'] = linsight_invitation_code if linsight_invitation_code else False\n    ret['linsight_cache_dir'] = \"./\"\n    ret['waiting_list_url'] = bisheng_settings.get_linsight_conf().waiting_list_url\n\n    return resp_200(data=ret)\n\n\n@router.post('/config', summary='Update workbench configuration', response_model=UnifiedResponseModel)\ndef update_config(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_admin_user),\n        data: WorkstationConfig = Body(..., description='Default Model Configuration'),\n):\n    \"\"\" Update model configurations related to reviews \"\"\"\n    ret = WorkStationService.update_config(request, login_user, data)\n    return resp_200(data=ret)\n\n\n@router.post('/knowledgeUpload')\ndef knowledgeUpload(request: Request,\n                    background_tasks: BackgroundTasks,\n                    file: UploadFile = File(...),\n                    login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    try:\n        file_path = save_download_file(file.file, 'bisheng', file.filename)\n        res = WorkStationService.uploadPersonalKnowledge(request,\n                                                         login_user,\n                                                         file_path=file_path,\n                                                         background_tasks=background_tasks)\n        return resp_200(data=res[0])\n    except Exception as e:\n        raise ServerError(msg=f'Knowledge base upload failed: {str(e)}', exception=e)\n    finally:\n        file.file.close()\n\n\n@router.get('/queryKnowledge')\ndef queryKnoledgeList(request: Request,\n                      page: int,\n                      size: int,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # Check if there is a personal knowledge base\n    res, total = WorkStationService.queryKnowledgeList(request, login_user, page, size)\n    return resp_200(data={'list': res, 'total': total})\n\n\n@router.delete('/deleteKnowledge')\ndef deleteKnowledge(request: Request,\n                    file_id: int,\n                    login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    res = KnowledgeService.delete_knowledge_file(request, login_user, [file_id])\n    return resp_200(data=res)\n\n\n@router.post('/files')\nasync def upload_file(\n        request: Request,\n        file: UploadFile = File(...),\n        file_id: str = Body(..., description='Doc.ID'),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n):\n    \"\"\"\n    Upload file\n    \"\"\"\n    try:\n\n        # Read file contents\n        # Save file\n        file_path = await save_uploaded_file(file, 'bisheng', unquote(file.filename))\n\n        # Return to file path\n        return resp_200(\n            data={\n                'filepath': file_path,\n                'filename': unquote(file.filename),\n                'type': file.content_type,\n                'user': login_user.user_id,\n                '_id': uuid4().hex,\n                'createdAt': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),\n                'updatedAt': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),\n                'temp_file_id': file_id,\n                'file_id': uuid4().hex,\n                'message': 'File uploaded successfully',\n                'context': 'message_attachment',\n            })\n    except Exception as e:\n        raise ServerError(msg=f'File upload failed: {str(e)}', exception=e)\n    finally:\n        await file.close()\n\n\n@router.post('/gen_title')\nasync def gen_title(conversationId: str = Body(..., description='', embed=True),\n                    login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Generate Title\n    \"\"\"\n    # Get session messages\n    redis_key = f'workstation_title_{conversationId}'\n    redis_client = await get_redis_client()\n\n    title = await redis_client.aget(redis_key)\n    if not title:\n        await asyncio.sleep(5)\n        # If the title already exists, go straight back to\n        title = await redis_client.aget(redis_key)\n    if title:\n        # If the title already exists, go straight back to\n        await redis_client.adelete(redis_key)\n        return resp_200({'title': title})\n    else:\n        return resp_200({'title': 'New Chat'})\n\n\n@router.get('/messages/{conversationId}')\nasync def get_chat_history(conversationId: str,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           share_link: Union['ShareLink', None] = Depends(header_share_token_parser)\n                           ):\n    messages = await ChatMessageDao.aget_messages_by_chat_id(chat_id=conversationId, limit=1000)\n    if messages:\n\n        if login_user.user_id != messages[0].user_id:\n            # Verify sharing link permissions\n            if not share_link or share_link.resource_id != conversationId:\n                return UnAuthorizedError.return_resp()\n\n        return resp_200([await WorkstationMessage.from_chat_message(message) for message in messages])\n    else:\n        return resp_200([])\n\n\nasync def genTitle(human: str, assistant: str, llm: BishengLLM, conversationId: str, login_user: UserPayload,\n                   request: Request):\n    \"\"\"\n    Generate Title\n    \"\"\"\n    convo = f'||>User:\\n\"{human}\"\\n ||>Response:\\n\"{assistant}\"'\n    prompt = f'Please generate {titleInstruction} \\n{convo} \\n||>Title:'\n    logger.info(f'convo: {convo}')\n    res = await llm.ainvoke(prompt)\n    title = res.content\n    redis_client = await get_redis_client()\n    await redis_client.aset(f'workstation_title_{conversationId}', title)\n    session = await MessageSessionDao.async_get_one(conversationId)\n    if session:\n        session.flow_name = title[:200]\n        session = await MessageSessionDao.async_insert_one(session)\n        # Audit log\n        await AuditLogService.create_chat_message(user=login_user, ip_address=get_request_ip(request), message=session)\n\n\nasync def webSearch(query: str, user_id: int):\n    \"\"\"\n    Internet search\n    \"\"\"\n    web_search_info = GptsToolsDao.get_tool_by_tool_key(\"web_search\")\n    if not web_search_info:\n        raise WebSearchToolNotFoundError(exception=Exception(\"No web_search tool found in database\"))\n    web_search_tool = await ToolExecutor.init_by_tool_id(web_search_info.id,\n                                                         app_id=ApplicationTypeEnum.DAILY_CHAT.value,\n                                                         app_name=ApplicationTypeEnum.DAILY_CHAT.value,\n                                                         app_type=ApplicationTypeEnum.DAILY_CHAT,\n                                                         user_id=user_id)\n    if not web_search_tool:\n        raise WebSearchToolNotFoundError(exception=Exception(\"No web_search tool found in gpts tools\"))\n    search_list = await web_search_tool.ainvoke(input={\"query\": query})\n    search_list = json.loads(search_list)\n    search_res = \"\"\n    for index, one in enumerate(search_list):\n        search_res += f'[webpage ${index} begin]\\n${one.get(\"snippet\")}\\n[webpage ${index} end]\\n\\n'\n    return search_res, search_list\n\n\nasync def getFileContent(filepath_local: str, file_name, invoke_user_id: int):\n    \"\"\"\n    Get file contents\n    \"\"\"\n    raw_texts, _, _, _ = await knowledge_imp.async_read_chunk_text(\n        invoke_user_id,\n        filepath_local,\n        file_name,\n        ['\\n\\n', '\\n'],\n        ['after', 'after'],\n        1000,\n        0,\n        excel_rule=ExcelRule(),\n        no_summary=True\n    )\n    return knowledge_imp.KnowledgeUtils.chunk2promt(''.join(raw_texts), {'source': file_name})\n\n\nasync def _initialize_chat(data: APIChatCompletion, login_user: UserPayload):\n    \"\"\"Initializes chat session, message, and LLM.\"\"\"\n    wsConfig = await WorkStationService.aget_config()\n\n    model_info = next((m for m in wsConfig.models if m.id == data.model), None)\n    if not model_info:\n        raise ValueError(f\"Model with id '{data.model}' not found.\")\n\n    conversationId = data.conversationId\n    is_new_conversation = False\n    if not conversationId:\n        is_new_conversation = True\n        conversationId = uuid4().hex\n        await MessageSessionDao.async_insert_one(\n            MessageSession(\n                chat_id=conversationId,\n                flow_id='',\n                flow_name='New Chat',\n                flow_type=FlowType.WORKSTATION.value,\n                user_id=login_user.user_id,\n            ))\n\n        # Telemetry for new session\n        await telemetry_service.log_event(\n            user_id=login_user.user_id,\n            event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n            trace_id=trace_id_var.get(),\n            event_data=NewMessageSessionEventData(\n                session_id=conversationId,\n                app_id=ApplicationTypeEnum.DAILY_CHAT.value,\n                source=\"platform\",\n                app_name=ApplicationTypeEnum.DAILY_CHAT.value,\n                app_type=ApplicationTypeEnum.DAILY_CHAT\n            ))\n\n    conversation = await MessageSessionDao.async_get_one(conversationId)\n    if conversation is None:\n        raise ConversationNotFoundError()\n\n    if data.overrideParentMessageId:\n        message = await ChatMessageDao.aget_message_by_id(int(data.overrideParentMessageId))\n    else:\n        message = await ChatMessageDao.ainsert_one(\n            ChatMessage(\n                user_id=login_user.user_id,\n                chat_id=conversationId,\n                flow_id='',\n                type='human',\n                is_bot=False,\n                sender='User',\n                files=json.dumps(data.files) if data.files else None,\n                extra=json.dumps({'parentMessageId': data.parentMessageId}),\n                message=data.text,\n                category='question',\n                source=0,\n            ))\n\n    bishengllm = await LLMService.get_bisheng_llm(\n        model_id=data.model,\n        app_id=ApplicationTypeEnum.DAILY_CHAT.value,\n        app_name=ApplicationTypeEnum.DAILY_CHAT.value,\n        app_type=ApplicationTypeEnum.DAILY_CHAT,\n        user_id=login_user.user_id)\n\n    return wsConfig, conversation, message, bishengllm, model_info, is_new_conversation\n\n\nasync def _log_telemetry_events(user_id: str, conversation_id: str, start_time: float):\n    \"\"\"Logs telemetry events for application alive and process.\"\"\"\n    end_time = time.time()\n    duration_ms = int((end_time - start_time) * 1000)\n\n    common_data = {\n        \"app_id\": ApplicationTypeEnum.DAILY_CHAT.value,\n        \"app_name\": ApplicationTypeEnum.DAILY_CHAT.value,\n        \"app_type\": ApplicationTypeEnum.DAILY_CHAT,\n        \"chat_id\": conversation_id,\n        \"start_time\": int(start_time),\n        \"end_time\": int(end_time),\n    }\n\n    await telemetry_service.log_event(\n        user_id=user_id,\n        event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n        trace_id=trace_id_var.get(),\n        event_data=ApplicationAliveEventData(**common_data)\n    )\n\n    await telemetry_service.log_event(\n        user_id=user_id,\n        event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n        trace_id=trace_id_var.get(),\n        event_data=ApplicationProcessEventData(**common_data, process_time=duration_ms)\n    )\n\n\n@router.post('/chat/completions')\nasync def chat_completions(\n        request: Request,\n        data: APIChatCompletion,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n):\n    start_time = time.time()\n    try:\n        wsConfig, conversation, message, bishengllm, model_info, is_new_conv = await _initialize_chat(data, login_user)\n        conversationId = conversation.chat_id\n        conversation_id_for_telemetry = conversationId\n    except (BaseErrorCode, ValueError) as e:\n        error_response = e if isinstance(e, BaseErrorCode) else ServerError(message=str(e))\n        return EventSourceResponse(iter([error_response.to_sse_event_instance()]))\n    except Exception as e:\n        logger.exception(f'Error in chat completions setup: {e}')\n        return EventSourceResponse(iter([ServerError(exception=e).to_sse_event_instance()]))\n\n    def _build_final_content_for_db(final_res, reasoning_res, web_list):\n        if reasoning_res:\n            final_res = ''':::thinking\\n''' + reasoning_res + '''\\n:::''' + final_res\n        if web_list:\n            final_res = ''':::web\\n''' + json.dumps(web_list, ensure_ascii=False) + '''\\n:::''' + final_res\n        return final_res\n\n    async def event_stream():\n        yield user_message(message.id, conversationId, 'User', data.text)\n\n        prompt = data.text\n        web_list = []\n        error = False\n        final_res = ''  # Accumulates the final response for the user\n        reasoning_res = ''  # Accumulates the reasoning process\n        max_token = wsConfig.maxTokens\n        runId = uuid4().hex\n        index = 0\n        stepId = None\n        source_document = None\n        image_bases64 = []\n        try:\n            # Prepare prompt based on different modes (search, knowledge base, files)\n            if data.search_enabled:\n                stepId = f'step_${uuid4().hex}'\n                yield step_message(stepId, runId, index, f'msg_{uuid4().hex}')\n                index += 1\n\n                search_decision_prompt = promptSearch % data.text\n                searchRes = await bishengllm.ainvoke(search_decision_prompt)\n\n                if searchRes.content == '1':\n                    logger.info(f'Web search needed for prompt: {data.text}')\n                    search_res, web_list = await webSearch(data.text, user_id=login_user.user_id)\n                    content = {'content': [{'type': 'search_result', 'search_result': web_list}]}\n                    yield SSEResponse(event='on_search_result',\n                                      data=delta(id=stepId, delta=content)).toString()\n                    prompt = wsConfig.webSearch.prompt.format(\n                        search_results=search_res[:max_token],\n                        cur_date=datetime.now().strftime('%Y-%m-%d'),\n                        question=data.text)\n\n            elif data.use_knowledge_base and (data.use_knowledge_base.personal_knowledge_enabled or len(\n                    data.use_knowledge_base.organization_knowledge_ids) > 0):\n                logger.info(f'Using knowledge base for prompt: {data.text}')\n                chunks, source_document = await WorkStationService.queryChunksFromDB(data.text,\n                                                                                     use_knowledge_param=data.use_knowledge_base,\n                                                                                     max_token=max_token,\n                                                                                     login_user=login_user)\n                context_str = '\\n'.join(chunks)\n                if wsConfig.knowledgeBase.prompt:\n                    prompt = wsConfig.knowledgeBase.prompt.format(retrieved_file_content=context_str,\n                                                                  question=data.text)\n                else:\n                    prompt_service = await get_prompt_manager()\n                    prompt = prompt_service.render_prompt('workstation', 'personal_knowledge',\n                                                          retrieved_file_content=context_str,\n                                                          question=data.text).prompt\n                logger.debug(f'Knowledge prompt: {prompt}')\n\n\n            elif data.files:\n\n                logger.info(f'Using file content for prompt.')\n\n                download_tasks = [async_file_download(file.get('filepath')) for file in data.files]\n\n                downloaded_files = await asyncio.gather(*download_tasks)\n\n                visual_tasks = []\n\n                doc_tasks = []\n\n                # image to base64\n                async def _read_image_sync(filepath: str, filename: str) -> str:\n                    async with aiofiles.open(filepath, mode='rb') as f:\n                        image_data = await f.read()\n                        ext = filename.split('.')[-1].lower()\n\n                        mime_type = 'jpeg' if ext == 'jpg' else ext\n\n                        return f\"data:image/{mime_type};base64,\" + base64.b64encode(image_data).decode('utf-8')\n\n                for filepath, filename in downloaded_files:\n\n                    file_ext = filename.split('.')[-1].lower()\n\n                    # Determine task type based on file extension and model capabilities\n                    if model_info.visual and file_ext in visual_model_file_types:\n                        # Image processing task\n                        visual_tasks.append(_read_image_sync(filepath=filepath, filename=filename))\n\n                    else:\n                        # Document processing task\n                        doc_tasks.append(\n                            getFileContent(filepath_local=filepath,\n                                           file_name=filename,\n                                           invoke_user_id=login_user.user_id)\n                        )\n\n                # Execute all tasks concurrently\n                results = await asyncio.gather(\n                    asyncio.gather(*visual_tasks),\n                    asyncio.gather(*doc_tasks)\n                )\n\n                # results[0] is image base64 list\n                # results[1] is document content list\n                image_bases64.extend(results[0])\n                file_contents = results[1]\n\n                file_context = '\\n'.join(file_contents)[:max_token]\n                prompt = wsConfig.fileUpload.prompt.format(file_content=file_context, question=data.text)\n\n            # Update message with the generated prompt if it changed\n            if prompt != data.text:\n                extra = json.loads(message.extra) if message.extra else {}\n                extra['prompt'] = prompt\n                message.extra = json.dumps(extra, ensure_ascii=False)\n                await ChatMessageDao.ainsert_one(message)\n\n            # Prepare message history and call LLM\n            history_messages = (await WorkStationService.get_chat_history(conversationId, 8))[:-1]\n            content = [\n                {'type': 'text', 'text': prompt},\n            ]\n\n            for img_base64 in image_bases64:\n                content.append({'type': 'image_url', 'image_url': {\n                    'url': img_base64\n                }})\n\n            inputs = [*history_messages, HumanMessage(content=content)]\n            if wsConfig.systemPrompt:\n                system_content = wsConfig.systemPrompt.format(cur_date=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))\n                inputs.insert(0, SystemMessage(content=system_content))\n\n            if not stepId:\n                stepId = 'step_' + uuid4().hex\n                yield step_message(stepId, runId, index, f'msg_{uuid4().hex}')\n                index += 1\n\n            # Stream LLM response\n            async for chunk in bishengllm.astream(inputs):\n                content = chunk.content\n                reasoning_content = chunk.additional_kwargs.get('reasoning_content', '')\n\n                if content:\n                    final_res += content\n                    yield SSEResponse(event='on_message_delta',\n                                      data=delta(id=stepId,\n                                                 delta={'content': [{'type': 'text', 'text': content}]})).toString()\n                if reasoning_content:\n                    reasoning_res += reasoning_content\n                    yield SSEResponse(event='on_reasoning_delta',\n                                      data=delta(id=stepId, delta={\n                                          'content': [{'type': 'think', 'think': reasoning_content}]})).toString()\n\n            final_content_for_db = _build_final_content_for_db(final_res, reasoning_res, web_list)\n\n        except BaseErrorCode as e:\n            error = True\n            final_content_for_db = json.dumps(e.to_dict())\n            yield e.to_sse_event_instance_str()\n        except Exception as e:\n            error = True\n            server_error = ServerError(exception=e)\n            logger.exception(f'Error in processing the prompt')\n            final_content_for_db = json.dumps(server_error.to_dict())\n            yield server_error.to_sse_event_instance_str()\n\n        # Send final message and generate title if needed\n        yield await final_message(conversation, conversation.flow_name, message, final_content_for_db,\n                                  error, model_info.displayName, source_document)\n\n        if is_new_conv:\n            asyncio.create_task(\n                genTitle(data.text, final_content_for_db, bishengllm, conversationId, login_user, request))\n\n    try:\n        return StreamingResponse(event_stream(), media_type='text/event-stream')\n    finally:\n        await _log_telemetry_events(login_user.user_id, conversation_id_for_telemetry, start_time)\n\n\n@router.get('/app/frequently_used')\ndef frequently_used_chat(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                         user_link_type: Optional[str] = 'app',\n                         page: Optional[int] = 1,\n                         limit: Optional[int] = 8\n                         ):\n    data, _ = WorkFlowService.get_frequently_used_flows(login_user, user_link_type, page, limit)\n\n    return resp_200(data=data)\n\n\n@router.post('/app/frequently_used')\ndef frequently_used_chat(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                         data: FrequentlyUsedChat = Body(..., description='Add your favorite apps')\n                         ):\n    is_new = WorkFlowService.add_frequently_used_flows(login_user, data.user_link_type, data.type_detail)\n    if is_new:\n        return resp_200(message='Added')\n    else:\n        return AgentAlreadyExistsError.return_resp()\n\n\n@router.delete('/app/frequently_used')\ndef frequently_used_chat(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                         user_link_type: Optional[str] = None,\n                         type_detail: Optional[str] = None\n                         ):\n    WorkFlowService.delete_frequently_used_flows(login_user, user_link_type, type_detail)\n    return resp_200(message='Delete successful')\n\n\n@router.get('/app/uncategorized')\ndef get_uncategorized_chat(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           page: Optional[int] = 1,\n                           limit: Optional[int] = 8):\n    data, _ = WorkFlowService.get_uncategorized_flows(login_user, page, limit)\n    return resp_200(data=data)\n"
  },
  {
    "path": "src/backend/bisheng/chat/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/chat/client.py",
    "content": "import json\nimport time\nfrom queue import Queue\nfrom typing import Dict, Callable, List\n\nfrom fastapi import WebSocket, Request\nfrom langchain_core.messages import AIMessage, HumanMessage, BaseMessage, ToolMessage\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant_agent import AssistantAgent\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.callback import AsyncGptsDebugCallbackHandler\nfrom bisheng.api.v1.schemas import ChatMessage, ChatResponse\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.assistant import (AssistantDeletedError, AssistantNotOnlineError,\n                                              AssistantOtherError)\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData, ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.assistant import AssistantDao, AssistantStatus\nfrom bisheng.database.models.flow import FlowType\nfrom bisheng.database.models.message import ChatMessageDao, ChatMessage as ChatMessageModel\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao\nfrom bisheng.utils import get_request_ip\nfrom bisheng.utils.threadpool import thread_pool\nfrom bisheng_langchain.gpts.message_types import LiberalToolMessage\n\n\nclass ChatClient:\n    def __init__(self, request: Request, client_key: str, client_id: str, chat_id: str, user_id: int,\n                 login_user: UserPayload, work_type: WorkType, websocket: WebSocket, **kwargs):\n        self.request = request\n        self.client_key = client_key\n        self.client_id = client_id\n        self.chat_id = chat_id\n        self.user_id = user_id\n        self.login_user = login_user\n        self.work_type = work_type\n        self.websocket = websocket\n        self.kwargs = kwargs\n\n        # Business Custom Parameters\n        self.db_assistant = None\n        self.gpts_agent: AssistantAgent | None = None\n        self.gpts_async_callback = None\n        self.chat_history = []\n        # Incoming when talking to the model Full Historical Dialogue Round Count\n        self.latest_history_num = 10\n        self.gpts_conf = settings.get_from_db('gpts')\n        # Asynchronous Task List\n        self.task_ids = []\n        # A queue of streaming outputs to accept the content of the streaming output, processing newquestionEmpty at all times\n        self.stream_queue = Queue()\n\n    async def close(self):\n        pass\n\n    async def send_message(self, message: str):\n        await self.websocket.send_text(message)\n\n    async def send_json(self, message: ChatMessage):\n        await self.websocket.send_json(message.dict())\n\n    async def handle_message(self, message: Dict[any, any]):\n        logger.info(f'client_id={self.client_key} handle_message start, message: {message}')\n        trace_id = trace_id_var.get()\n        # Handling messages from clients, Submit to Thread Pool for Execution\n        if self.work_type == WorkType.GPTS:\n            thread_pool.submit(trace_id,\n                               self.wrapper_task,\n                               trace_id,\n                               self.handle_gpts_message,\n                               message,\n                               trace_id=trace_id)\n            # await self.handle_gpts_message(message)\n\n    async def wrapper_task(self, task_id: str, fn: Callable, *args, **kwargs):\n        # The wrapper handler function is an asynchronous task\n        self.task_ids.append(task_id)\n        start_time = time.time()\n        try:\n            # Execute Handling Functions\n            await fn(*args, **kwargs)\n        except Exception as e:\n            logger.exception(\"handle message error\")\n        finally:\n            # When the execution is complete, the task will beidRemove from list\n            self.task_ids.remove(task_id)\n            end_time = time.time()\n            await telemetry_service.log_event(user_id=self.user_id,\n                                              event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                              trace_id=trace_id_var.get(),\n                                              event_data=ApplicationProcessEventData(\n                                                  app_id=self.client_id,\n                                                  app_name=self.db_assistant.name if self.db_assistant else \"\",\n                                                  app_type=ApplicationTypeEnum.ASSISTANT,\n                                                  chat_id=self.chat_id,\n\n                                                  start_time=int(start_time),\n                                                  end_time=int(end_time),\n                                                  process_time=int((end_time - start_time) * 1000)\n                                              ))\n\n    async def add_message(self, msg_type: str, message: str, category: str, remark: str = ''):\n        self.chat_history.append({\n            'category': category,\n            'message': message,\n            'remark': remark\n        })\n        if not self.chat_id:\n            # debugMode does not need to save history\n            return\n        is_bot = 0 if msg_type == 'human' else 1\n        msg = ChatMessageDao.insert_one(ChatMessageModel(\n            is_bot=is_bot,\n            source=0,\n            message=message,\n            category=category,\n            type=msg_type,\n            extra=json.dumps({'client_key': self.client_key}, ensure_ascii=False),\n            flow_id=self.client_id,\n            chat_id=self.chat_id,\n            user_id=self.user_id,\n            remark=remark,\n        ))\n        # Log Audit Logs, Is New Session\n        if len(self.chat_history) <= 1:\n            MessageSessionDao.insert_one(MessageSession(\n                chat_id=self.chat_id,\n                flow_id=self.client_id,\n                flow_name=self.db_assistant.name,\n                flow_type=FlowType.ASSISTANT.value,\n                user_id=self.user_id,\n            ))\n\n            # RecordTelemetryJournal\n            await telemetry_service.log_event(user_id=self.user_id,\n                                              event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                              trace_id=trace_id_var.get(),\n                                              event_data=NewMessageSessionEventData(\n                                                  session_id=self.chat_id,\n                                                  app_id=self.client_id,\n                                                  source=\"platform\",\n                                                  app_name=self.db_assistant.name,\n                                                  app_type=ApplicationTypeEnum.ASSISTANT\n                                              )\n                                              )\n            AuditLogService.create_chat_assistant(self.login_user, get_request_ip(self.request), self.client_id)\n        return msg\n\n    async def send_response(self, category: str, msg_type: str, message: str, intermediate_steps: str = '',\n                            message_id: int = None):\n        is_bot = 0 if msg_type == 'human' else 1\n        await self.send_json(ChatResponse(\n            message_id=message_id,\n            category=category,\n            type=msg_type,\n            is_bot=is_bot,\n            message=message,\n            user_id=self.user_id,\n            flow_id=self.client_id,\n            chat_id=self.chat_id,\n            extra=json.dumps({'client_key': self.client_key}, ensure_ascii=False),\n            intermediate_steps=intermediate_steps,\n        ))\n\n    async def init_gpts_agent(self):\n        await self.init_chat_history()\n        await self.init_gpts_callback()\n        try:\n            # Processing Intelligent Assistant Business\n            if self.chat_id and self.gpts_agent is None:\n                # Conversation businessagentFixed generation from database data,Don't change every time\n                assistant = AssistantDao.get_one_assistant(self.client_id)\n                if not assistant:\n                    raise AssistantDeletedError()\n                    # Under JudgmentagentOnline or not\n                if assistant.status != AssistantStatus.ONLINE.value:\n                    raise AssistantNotOnlineError()\n            elif not self.chat_id:\n                # The debug interface is regenerated without testing\n                assistant = AssistantDao.get_one_assistant(self.client_id)\n                if not assistant:\n                    raise AssistantDeletedError()\n\n            # await self.websocket.close(code=status.WS_1008_POLICY_VIOLATION, reason=str(e))\n            # raise IgnoreException(f'get assistant info error: {str(e)}')\n\n            if self.chat_id and self.gpts_agent is None:\n                self.db_assistant = assistant\n                # Conversation businessagentFixed generation from database data,Don't change every time\n                self.gpts_agent = AssistantAgent(assistant, self.chat_id, invoke_user_id=self.user_id)\n                await self.gpts_agent.init_assistant(self.gpts_async_callback)\n            elif not self.chat_id:\n                self.db_assistant = assistant\n                # The debugging interface is regenerated every time\n                self.gpts_agent = AssistantAgent(assistant, self.chat_id, invoke_user_id=self.user_id)\n                await self.gpts_agent.init_assistant(self.gpts_async_callback)\n\n        except BaseErrorCode as e:\n            logger.exception(\"get assistant info error\")\n            raise e\n        except Exception as e:\n            logger.exception(\"get assistant info error\")\n            raise AssistantOtherError(exception=e)\n\n    async def init_chat_history(self):\n        # Initialization history, not empty or no reinitialization\n        if len(self.chat_history) > 0:\n            return\n        # Load Historical Sessions from Database\n        if self.chat_id:\n            res = ChatMessageDao.get_messages_by_chat_id(self.chat_id,\n                                                         ['question', 'answer', 'tool_call', 'tool_result'],\n                                                         self.latest_history_num * 4)\n            for one in res:\n                self.chat_history.append({\n                    'message': one.message,\n                    'category': one.category,\n                    'remark': one.remark\n                })\n\n    async def get_latest_history(self) -> List[BaseMessage]:\n        # Invalid historical messages need to be culled and only complete Q&A sessions are included\n        tmp = []\n        find_i = 0\n        is_answer = True\n        # Get from Chat History\n        for i in range(len(self.chat_history) - 1, -1, -1):\n            one_item = self.chat_history[i]\n            if find_i >= self.latest_history_num:\n                break\n            # Answers without interruptions\n            if one_item['category'] == 'answer' and one_item.get('remark') != 'break_answer' and is_answer:\n                tmp.insert(0, AIMessage(content=one_item['message']))\n                is_answer = False\n            elif one_item['category'] == 'question' and not is_answer:\n                tmp.insert(0, HumanMessage(content=json.loads(one_item['message'])['input']))\n                is_answer = True\n                find_i += 1\n            elif one_item['category'] == 'tool_call':\n                tmp.insert(0, AIMessage(**json.loads(one_item['message'])))\n            elif one_item['category'] == 'tool_result':\n                tmp.insert(0, LiberalToolMessage(**json.loads(one_item['message'])))\n\n        return tmp\n\n    async def init_gpts_callback(self):\n        if self.gpts_async_callback is not None:\n            return\n        async_callbacks = [AsyncGptsDebugCallbackHandler(**{\n            'websocket': self.websocket,\n            'flow_id': self.client_id,\n            'chat_id': self.chat_id,\n            'user_id': self.user_id,\n            'stream_queue': self.stream_queue,\n        })]\n        self.gpts_async_callback = async_callbacks\n\n    async def stop_handle_message(self, message: Dict[any, any]):\n        # Abort Streaming Output, Because the latest taskidis to abort the task.id, you can't cancel yourself\n        logger.info(f'need stop agent, client_key: {self.client_key}, message: {message}')\n\n        # Processing function before abort\n        thread_pool.cancel_task(self.task_ids[:-1])\n\n        # Write streaming output to database\n        answer = ''\n        reasoning_answer = ''\n        while not self.stream_queue.empty():\n            msg = self.stream_queue.get()\n            if msg.get('type') == 'answer':\n                answer += msg.get('content', '')\n            elif msg.get('type') == 'reasoning':\n                reasoning_answer += msg.get('content', '')\n\n        # If there is streaming output, record the streaming output to the database\n        if reasoning_answer.split():\n            res = await self.add_message('bot', answer, 'reasoning_answer', 'break_answer')\n            await self.send_response('reasoning_answer', 'end', '', message_id=res.id if res else None)\n        if answer.strip():\n            res = await self.add_message('bot', answer, 'answer', 'break_answer')\n            await self.send_response('answer', 'end', '', message_id=res.id if res else None)\n        await self.send_response('processing', 'close', '')\n\n    async def clear_stream_queue(self):\n        while not self.stream_queue.empty():\n            self.stream_queue.get()\n\n    async def handle_gpts_message(self, message: Dict[any, any]):\n        if not message:\n            return\n        logger.debug(f'receive client message, client_key: {self.client_key} message: {message}')\n        if message.get('action') == 'stop':\n            await self.stop_handle_message(message)\n            return\n\n        try:\n            await self.send_response('processing', 'begin', '')\n            # Empty the streaming queue to prevent contamination of the previous answer\n            await self.clear_stream_queue()\n            inputs = message.get('inputs', {})\n            input_msg = inputs.get('input')\n            if not input_msg:\n                # Session needs to be switched\n                logger.debug(f'need switch agent, client_key: {self.client_key} inputs: {inputs}')\n                self.client_id = inputs.get('data').get('id')\n                self.chat_id = inputs.get('data').get('chatId')\n                self.gpts_agent = None\n                self.gpts_async_callback = None\n                self.chat_history = []\n                await self.init_gpts_agent()\n                return\n\n            # Inisialisasiagent\n            await self.init_gpts_agent()\n\n            # Write user issue to database\n            await self.add_message('human', json.dumps(inputs, ensure_ascii=False), 'question')\n\n            # Get callback history\n            chat_history = await self.get_latest_history()\n            # RecallagentGet Results\n            result = await self.gpts_agent.run(input_msg, chat_history, self.gpts_async_callback)\n            logger.debug(f'gpts agent {self.client_key} result: {result}')\n            answer = result[-1].content\n\n            # Record contains\n            new_history = result[len(chat_history):-1]\n            for one in new_history:\n                if isinstance(one, AIMessage):\n                    _ = await self.add_message('bot', one.json(), 'tool_call')\n                elif isinstance(one, LiberalToolMessage) or isinstance(one, ToolMessage):\n                    _ = await self.add_message('bot', one.json(), 'tool_result')\n                else:\n                    logger.warning(\"unexpected message type\")\n\n            answer_end_type = 'end'\n            # If it's streaming,llmthen useend_coverEnd, Overwrite previous streamed output\n            if getattr(self.gpts_agent.llm, 'streaming', False):\n                answer_end_type = 'end_cover'\n\n            # Get from Queuereasoning content\n            reasoning_content = ''\n            while not self.stream_queue.empty():\n                msg = self.stream_queue.get()\n                if msg.get('type') == 'reasoning':\n                    reasoning_content += msg.get('content')\n\n            res = await self.add_message('bot', reasoning_content, 'reasoning_answer')\n            res = await self.add_message('bot', answer, 'answer')\n            await self.send_response('answer', 'start', '')\n            await self.send_response('answer', answer_end_type, answer, message_id=res.id if res else None)\n            logger.info(f'gptsAgentOver assistant_id:{self.client_id} chat_id:{self.chat_id} question:{input_msg}')\n            logger.info(f'gptsAgentOver assistant_id:{self.client_id} chat_id:{self.chat_id} answer:{answer}')\n\n        except BaseErrorCode as e:\n            logger.exception('handle gpts message error: ')\n            await self.send_response('system', 'start', '')\n            await e.websocket_close_message(websocket=self.websocket, close_ws=False)\n        except Exception as e:\n            e = AssistantOtherError(exception=e)\n            logger.exception('handle gpts message error: ')\n            await self.send_response('system', 'start', '')\n            await e.websocket_close_message(websocket=self.websocket, close_ws=False)\n        finally:\n            await self.send_response('processing', 'close', '')\n"
  },
  {
    "path": "src/backend/bisheng/chat/clients/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/chat/clients/base.py",
    "content": "import json\nfrom abc import abstractmethod, ABC\nfrom typing import Dict, Callable\n\nfrom fastapi import WebSocket, Request\nfrom loguru import logger\n\nfrom bisheng.api.v1.schemas import ChatMessage, ChatResponse\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.message import ChatMessage as ChatMessageModel\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils.threadpool import thread_pool\n\n\nclass BaseClient(ABC):\n    def __init__(self, request: Request, client_key: str, client_id: str, chat_id: str, user_id: int,\n                 login_user: UserPayload, work_type: WorkType, websocket: WebSocket, **kwargs):\n        self.request = request\n        self.client_key = client_key  # Client Unique Identity\n        self.client_id = client_id  # Unique identification of the business, such as assistants or skillsID\n        self.chat_id = chat_id\n        self.user_id = user_id\n        self.login_user = login_user\n        self.work_type = work_type\n        self.websocket = websocket\n        self.kwargs = kwargs\n\n        # Asynchronous Task List\n        self.task_ids = []\n        # wsMessage Queues, Used to store thewebsocketMessages sent by the client\n\n    async def close(self):\n        pass\n\n    async def send_message(self, message: str):\n        await self.websocket.send_text(message)\n\n    async def send_json(self, message: ChatMessage | dict):\n        if isinstance(message, dict):\n            await self.websocket.send_json(message)\n            return\n        await self.websocket.send_json(message.model_dump())\n\n    async def handle_message(self, message: Dict[any, any]):\n        \"\"\" Handling messages from clients, Submit to Thread Pool for Execution \"\"\"\n        trace_id = trace_id_var.get()\n        logger.info(f'client_id={self.client_key} trace_id={trace_id} message={message}')\n\n        if message.get('action') == 'stop':\n            await self._handle_message(message)\n            return\n        thread_pool.submit(trace_id,\n                           self.wrapper_task,\n                           trace_id,\n                           self._handle_message,\n                           message,\n                           trace_id=trace_id)\n\n    @abstractmethod\n    async def _handle_message(self, message: Dict[any, any]):\n        raise Exception('handle_message must be implemented')\n\n    async def wrapper_task(self, task_id: str, fn: Callable, *args, **kwargs):\n        logger.debug(\"wrapper_task task_id=%s\", task_id)\n        # The wrapper handler function is an asynchronous task\n        self.task_ids.append(task_id)\n        try:\n            # Execute Handling Functions\n            await fn(*args, **kwargs)\n        except Exception as e:\n            logger.exception(\"handle message error\")\n        finally:\n            # When the execution is complete, the task will beidRemove from list\n            self.task_ids.remove(task_id)\n\n    async def add_message(self, msg_type: str, message: str, category: str, remark: str = ''):\n        \"\"\" Save Historical Messages to Database \"\"\"\n        if not self.chat_id:\n            # debugMode does not need to save history\n            return\n        is_bot = 0 if msg_type == 'human' else 1\n        msg = ChatMessageDao.insert_one(ChatMessageModel(\n            is_bot=is_bot,\n            source=0,\n            message=message,\n            category=category,\n            type=msg_type,\n            extra=json.dumps({'client_key': self.client_key}, ensure_ascii=False),\n            flow_id=self.client_id,\n            chat_id=self.chat_id,\n            user_id=self.user_id,\n            remark=remark,\n        ))\n        return msg\n\n    async def send_response(self, category: str, msg_type: str, message: str | dict, intermediate_steps: str = '',\n                            message_id: int = None):\n        \"\"\" Send a response message to the client \"\"\"\n        is_bot = 0 if msg_type == 'human' else 1\n        await self.send_json(ChatResponse(\n            message_id=message_id,\n            category=category,\n            type=msg_type,\n            is_bot=is_bot,\n            message=message,\n            user_id=self.user_id,\n            flow_id=self.client_id,\n            chat_id=self.chat_id,\n            extra=json.dumps({'client_key': self.client_key}, ensure_ascii=False),\n            intermediate_steps=intermediate_steps,\n        ))\n\n    async def stop_handle_message(self, message: Dict[any, any]):\n        # Abort message processing logic\n        logger.info(f'need stop agent, client_key: {self.client_key}, task_ids: {self.task_ids}')\n\n        # Processing function before abort Because the latest taskidis to abort the task.id, you can't cancel yourself\n        thread_pool.cancel_task(self.task_ids)\n        logger.info(f'need stop over, client_key: {self.client_key}, task_ids: {self.task_ids}')\n\n        await self.send_response('processing', 'close', '')\n"
  },
  {
    "path": "src/backend/bisheng/chat/clients/workflow_client.py",
    "content": "import asyncio\nimport json\nfrom typing import Dict, Optional\n\nfrom fastapi import Request, WebSocket\nfrom loguru import logger\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.schema.workflow import WorkflowEventType\nfrom bisheng.chat.clients.base import BaseClient\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.chat import WorkflowOfflineError\nfrom bisheng.database.models.flow import FlowDao, FlowStatus\nfrom bisheng.database.models.message import ChatMessageDao, ChatMessage\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils import get_request_ip\nfrom bisheng.worker.workflow.redis_callback import RedisCallback\nfrom bisheng.worker.workflow.tasks import execute_workflow, continue_workflow, workflow_stateful_worker\nfrom bisheng.workflow.common.workflow import WorkflowStatus\n\n\nclass WorkflowClient(BaseClient):\n\n    def __init__(self, request: Request, client_key: str, client_id: str, chat_id: str,\n                 user_id: int, login_user: UserPayload, work_type: WorkType, websocket: WebSocket,\n                 **kwargs):\n        super().__init__(request, client_key, client_id, chat_id, user_id, login_user, work_type,\n                         websocket, **kwargs)\n\n        self.workflow: Optional[RedisCallback] = None\n        self.latest_history: Optional[ChatMessage] = None\n        self.hash_key = None\n        self.ws_closed = False\n        self.run_lock = asyncio.Lock()\n\n    async def close(self, force_stop=False):\n        # If the user is not actively stopping, setwsTurn the flag off, but there is no need to abortworkflowExecution\n        if not force_stop:\n            self.ws_closed = True\n        # Non-Session Mode OffworkflowImplementation, Session mode determines if the user took the initiative to close\n        if self.workflow:\n            if force_stop or not self.chat_id:\n                await self.workflow.async_set_workflow_stop()\n                workflow_over = await self.workflow_run()\n                while not workflow_over:\n                    if self.ws_closed:\n                        break\n                    workflow_over = await self.workflow_run()\n                    await asyncio.sleep(0.5)\n        else:\n            await self.send_response('processing', 'close', '')\n        await super().close()\n\n    async def _handle_message(self, message: Dict[any, any]):\n        logger.debug('----------------------------- start handle message -----------------------')\n        if message.get('action') == 'init_data':\n            # InisialisasiworkflowDATA\n            await self.init_workflow(message)\n        elif message.get('action') == 'check_status':\n            await self.check_status(message)\n        elif message.get('action') == 'input':\n            await self.handle_user_input(message.get('data'))\n        elif message.get('action') == 'stop':\n            await self.close(force_stop=True)\n            # await self.stop_handle_message(message)\n        else:\n            logger.warning('not support action: %s', message.get('action'))\n\n    async def init_history(self):\n        if not self.chat_id:\n            return\n        self.latest_history = await ChatMessageDao.aget_latest_message_by_chatid(self.chat_id)\n        if not self.latest_history:\n            # The user clicks New Session to log the audit\n            AuditLogService.create_chat_workflow(self.login_user, get_request_ip(self.request), self.client_id)\n\n    async def check_status(self, message: dict, is_init: bool = False) -> (bool, str):\n        \"\"\"\n        bool: Indicates if re-execution is requiredworkflow\n        \"\"\"\n        # chat ws connection first handle\n        workflow_id = message.get('flow_id', self.client_id)\n        self.chat_id = message.get('chat_id', '')\n        unique_id = generate_uuid()\n        if self.chat_id:\n            await self.init_history()\n            unique_id = f'{self.chat_id}_async_task_id'\n        logger.debug(f'init workflow with unique_id: {unique_id}, workflow_id: {workflow_id}, chat_id: {self.chat_id}')\n        self.workflow = RedisCallback(unique_id, workflow_id, self.chat_id, self.user_id)\n        # JudgingworkflowWhether it is online, if it is not online, close the currentwebsocketLinks\n        workflow_db = FlowDao.get_flow_by_id(workflow_id)\n        if workflow_db.status != FlowStatus.ONLINE.value and self.chat_id:\n            self.workflow.set_workflow_stop()\n            try:\n                await WorkflowOfflineError().websocket_close_message(websocket=self.websocket, close_ws=False)\n                await self.send_response('processing', 'close', '')\n            except:\n                logger.warning('websocket is closed')\n                pass\n            self.workflow.clear_workflow_status()\n            self.workflow = None\n            logger.debug('workflow is offline not support with chat')\n            return False, unique_id\n\n        status_info = self.workflow.get_workflow_status()\n        if not status_info:\n            # Indicates that the last run was completed\n            self.workflow = None\n            if self.latest_history and not is_init:\n                # Let the front-end terminate the last run\n                await self.send_response('processing', 'close', '')\n            return True, unique_id\n        # Indicates that the session is still running\n        if status_info['status'] == WorkflowStatus.INPUT.value and self.latest_history:\n            # If it is a state waiting for user input, you need to resend the last input message to the front-end\n            if self.latest_history.category in [WorkflowEventType.UserInput.value,\n                                                WorkflowEventType.OutputWithInput.value,\n                                                WorkflowEventType.OutputWithChoose.value]:\n                send_message = self.latest_history.model_dump()\n                send_message['message'] = json.loads(send_message['message'])\n                send_message['message_id'] = send_message.pop('id')\n                await self.send_json(send_message)\n\n        await self.send_response('processing', 'begin', '')\n        logger.debug('init workflow over, continue run workflow')\n        await self.workflow_run()\n        return False, unique_id\n\n    async def get_execute_worker(self) -> Optional[str]:\n        if not self.hash_key:\n            self.hash_key = self.chat_id if self.chat_id else generate_uuid()\n        return await workflow_stateful_worker.find_task_node(self.hash_key)\n\n    async def init_workflow(self, message: dict):\n        if self.workflow is not None:\n            return\n        try:\n            workflow_data = message.get('data')\n            workflow_id = message.get('flow_id', self.client_id)\n            flag, unique_id = await self.check_status(message, is_init=True)\n            # Description workflow In operation or offline\n            if not flag:\n                return\n            # Start a new workflow\n            self.workflow = RedisCallback(unique_id, workflow_id, self.chat_id, self.user_id)\n            await self.workflow.async_set_workflow_data(workflow_data)\n            await self.workflow.async_set_workflow_status(WorkflowStatus.WAITING.value)\n            # Start asynchronous task\n\n            execute_workflow.apply_async([unique_id, workflow_id, self.chat_id, self.user_id],\n                                         queue=await self.get_execute_worker())\n            await self.send_response('processing', 'begin', '')\n            await self.workflow_run()\n        except Exception as e:\n            logger.exception('init_workflow_error')\n            self.workflow = None\n            await self.send_response('error', 'over', {'status_code': 500, 'message': str(e)})\n            return\n\n    async def workflow_run(self):\n        async with self.run_lock:\n            return await self._workflow_run()\n\n    async def _workflow_run(self):\n        logger.debug('start workflow run')\n        if not self.workflow:\n            logger.warning('workflow is over by other task')\n            return True\n\n        # Needs to constantly evolve fromredisGet inworkflowReturned Message\n        async for event in self.workflow.get_response_until_break():\n            await self.send_json(event)\n\n        status_info = await self.workflow.async_get_workflow_status()\n        if not status_info or status_info['status'] in [WorkflowStatus.FAILED.value, WorkflowStatus.SUCCESS.value]:\n            await self.send_response('processing', 'close', '')\n            logger.debug(f\"workflow is {status_info}, clear workflow object\")\n            await self.workflow.async_clear_workflow_status()\n            self.workflow = None\n            return True\n\n        # Description runs to the state to be entered\n        elif status_info['status'] != WorkflowStatus.INPUT.value:\n            logger.warning(f'workflow status is unknown: {status_info}')\n        return False\n\n    async def handle_user_input(self, data: dict):\n        logger.info(f'get user input: {data}')\n        if not self.workflow:\n            logger.warning('workflow is over')\n            return\n        status_info = await self.workflow.async_get_workflow_status()\n        if status_info['status'] != WorkflowStatus.INPUT.value:\n            logger.warning(f'workflow is not input status: {status_info}')\n        else:\n            user_input = {}\n            message_id = None\n            new_message = None\n            # Currently one input node is supported\n            for node_id, node_info in data.items():\n                user_input[node_id] = node_info['data']\n                message_id = node_info.get('message_id')\n                new_message = node_info.get('message')\n                break\n            await self.workflow.async_set_user_input(user_input, message_id=message_id, message_content=new_message)\n            await self.workflow.async_set_workflow_status(WorkflowStatus.INPUT_OVER.value)\n            continue_workflow.apply_async([self.workflow.unique_id, self.workflow.workflow_id, self.workflow.chat_id,\n                                           self.workflow.user_id], queue=await self.get_execute_worker())\n            await self.workflow_run()\n        # await self.workflow_run()\n"
  },
  {
    "path": "src/backend/bisheng/chat/config.py",
    "content": "class ChatConfig:\n    streaming: bool = True\n"
  },
  {
    "path": "src/backend/bisheng/chat/handlers.py",
    "content": "import ast\nimport json\nimport time\nfrom queue import Queue\nfrom typing import Dict\n\nfrom langchain.chains.llm import LLMChain\nfrom langchain_core.prompts.prompt import PromptTemplate\nfrom loguru import logger\nfrom sqlmodel import select\n\nfrom bisheng.api.utils import build_input_keys_response\nfrom bisheng.api.v1.schemas import ChatMessage, ChatResponse\nfrom bisheng.chat.manager import ChatManager\nfrom bisheng.chat.utils import judge_source, process_graph, process_source_document\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.database.models.message import ChatMessage as ChatMessageDB, ChatMessageDao\nfrom bisheng.database.models.report import Report\nfrom bisheng.interface.importing.utils import import_by_type\nfrom bisheng.interface.initialize.loading import instantiate_llm\nfrom bisheng.utils.docx_temp import test_replace_string\nfrom bisheng.utils.threadpool import thread_pool\nfrom bisheng.utils.util import get_cache_key\nfrom bisheng_langchain.chains.autogen.auto_gen import AutoGenChain\n\n\nclass Handler:\n\n    def __init__(self, stream_queue: Queue) -> None:\n        self.handler_dict = {\n            'default': self.process_message,\n            'autogen': self.process_autogen,\n            'auto_file': self.process_file,\n            'report': self.process_report,\n            'stop': self.process_stop\n        }\n        # Record Streaming Output\n        self.stream_queue = stream_queue\n\n    async def dispatch_task(self, session: ChatManager, client_id: str, chat_id: str, action: str,\n                            payload: dict, user_id):\n        logger.info(f'dispatch_task payload={payload.get(\"inputs\")}')\n        start_time = time.time()\n        with session.cache_manager.set_client_id(client_id, chat_id):\n            if not action:\n                action = 'default'\n            if action not in self.handler_dict:\n                raise Exception(f'unknown action {action}')\n            if action != 'stop':\n                # Empty the streaming output queue to prevent the previous answer from contaminating this answer\n                while not self.stream_queue.empty():\n                    self.stream_queue.get()\n            try:\n                await self.handler_dict[action](session, client_id, chat_id, payload, user_id)\n                logger.info(f'dispatch_task done timecost={time.time() - start_time}')\n            finally:\n                end_time = time.time()\n                await telemetry_service.log_event(user_id=user_id,\n                                                  event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                                  trace_id=trace_id_var.get(),\n                                                  event_data=ApplicationProcessEventData(\n                                                      app_id=ApplicationTypeEnum.SKILL.value,\n                                                      app_name=ApplicationTypeEnum.SKILL.value,\n                                                      app_type=ApplicationTypeEnum.SKILL,\n                                                      chat_id=chat_id,\n\n                                                      start_time=int(start_time),\n                                                      end_time=int(end_time),\n                                                      process_time=int((end_time - start_time) * 1000)\n                                                  ))\n        return client_id, chat_id\n\n    async def process_stop(self, session: ChatManager, client_id: str, chat_id: str, payload: Dict,\n                           user_id):\n        key = get_cache_key(client_id, chat_id)\n        langchain_object = session.in_memory_cache.get(key)\n        action = payload.get('action')\n        if isinstance(langchain_object, AutoGenChain):\n            if hasattr(langchain_object, 'stop'):\n                logger.info('reciever_human_interactive langchain_objct')\n                await langchain_object.stop()\n            else:\n                logger.error(f'act=auto_gen act={action}')\n        else:\n            # Write streaming output to database\n            answer = ''\n            reasoning_answer = ''\n            while not self.stream_queue.empty():\n                msg = self.stream_queue.get()\n                if msg.get('type') == 'answer':\n                    answer += msg.get('content', '')\n                elif msg.get('type') == 'reasoning':\n                    reasoning_answer += msg.get('content', '')\n            if reasoning_answer.strip():\n                chat_message = ChatMessageDB(flow_id=client_id, chat_id=chat_id,\n                                             message=reasoning_answer,\n                                             category='answer',\n                                             type='end',\n                                             user_id=user_id,\n                                             remark='break_answer',\n                                             is_bot=True)\n                if chat_id:\n                    db_message = ChatMessageDao.insert_one(chat_message)\n                    await session.send_json(client_id, chat_id,\n                                            ChatMessage(**db_message.model_dump(), message_id=db_message.id), add=False)\n\n            if answer.strip():\n                chat_message = ChatMessageDB(flow_id=client_id, chat_id=chat_id,\n                                             message=answer,\n                                             category='answer',\n                                             type='end',\n                                             user_id=user_id,\n                                             remark='break_answer',\n                                             is_bot=True)\n                if chat_id:\n                    db_message = ChatMessageDao.insert_one(chat_message)\n                    await session.send_json(client_id, chat_id,\n                                            ChatMessage(**db_message.model_dump(), message_id=db_message.id), add=False)\n            # General Skills'stop\n            res = thread_pool.cancel_task([key])  # Proceed with the task in progresscancel\n            if res[0]:\n                # message = payload.get('inputs') or 'Hand Stop'\n                res = ChatResponse(type='end', user_id=user_id, message='')\n                close = ChatResponse(type='close')\n                await session.send_json(client_id, chat_id, res, add=False)\n                await session.send_json(client_id, chat_id, close, add=False)\n\n        logger.info('process_stop done')\n\n    async def process_report(self,\n                             session: ChatManager,\n                             client_id: str,\n                             chat_id: str,\n                             payload: Dict,\n                             user_id=None):\n        chat_inputs = payload.pop('inputs', {})\n        chat_inputs.pop('data', '')\n        chat_inputs.pop('id', '')\n        key = get_cache_key(client_id, chat_id)\n        artifacts = session.in_memory_cache.get(key + '_artifacts')\n        if artifacts:\n            for k, value in artifacts.items():\n                if k in chat_inputs:\n                    chat_inputs[k] = value\n        chat_message = ChatMessage(message=chat_inputs,\n                                   category='question',\n                                   type='bot',\n                                   user_id=user_id)\n        session.chat_history.add_message(client_id, chat_id, chat_message)\n\n        # process message\n        langchain_object = session.in_memory_cache.get(key)\n        chat_inputs = {'inputs': chat_inputs, 'is_begin': False}\n        result = await self.process_message(session, client_id, chat_id, chat_inputs, user_id)\n        # judge end type\n        start_resp = ChatResponse(type='start', user_id=user_id)\n        await session.send_json(client_id, chat_id, start_resp)\n\n        if langchain_object.stop_status():\n            start_resp.category = 'divider'\n            response = ChatResponse(message='Dropout',\n                                    type='end',\n                                    category='divider',\n                                    user_id=user_id)\n            await session.send_json(client_id, chat_id, response)\n\n        # build report\n        with get_sync_db_session() as db_session:\n            template = db_session.exec(\n                select(Report).where(Report.flow_id == client_id).order_by(\n                    Report.id.desc())).first()\n        if not template:\n            logger.error('template not support')\n            return\n        minio_client = await get_minio_storage()\n        template_muban = await minio_client.get_share_link(template.object_name, clear_host=False)\n        report_name = langchain_object.report_name\n        report_name = report_name if report_name.endswith('.docx') else f'{report_name}.docx'\n        test_replace_string(template_muban, result, report_name)\n        file = await minio_client.get_share_link(report_name, clear_host=False)\n        response = ChatResponse(type='end',\n                                files=[{\n                                    'file_url': file,\n                                    'file_name': report_name\n                                }],\n                                user_id=user_id)\n        await session.send_json(client_id, chat_id, response)\n        close_resp = ChatResponse(type='close', category='system', user_id=user_id)\n        await session.send_json(client_id, chat_id, close_resp)\n\n    def recommend_question(self, langchain_obj, chat_history: list):\n        prompt = \"\"\"Given the following historical chat messages:\n        {history}\n\n        Summarize what the refining user might ask next3Questions, output questions directly, separate questions with line breaks, and do not add any modifier text or prefixes.\n        \"\"\"\n        if hasattr(langchain_obj, 'llm'):\n            llm_chain = LLMChain(llm=langchain_obj.llm,\n                                 prompt=PromptTemplate.from_template(prompt))\n        else:\n            keyword_conf = settings.get_default_llm() or {}\n            if keyword_conf:\n                node_type = keyword_conf.pop('type', 'HostQwenChat')  # Compatible with legacy configurations\n                class_object = import_by_type(_type='llms', name=node_type)\n                llm = instantiate_llm(node_type, class_object, keyword_conf)\n\n                llm_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt))\n        if llm_chain:\n            questions = llm_chain.predict(history=chat_history)\n            return questions.split('\\n')\n        else:\n            logger.info('llm_chain is None recommend_over')\n            return []\n\n    async def process_message(self,\n                              session: ChatManager,\n                              client_id: str,\n                              chat_id: str,\n                              payload: Dict,\n                              user_id=None):\n        # Process the graph data and chat message\n        chat_inputs = payload.pop('inputs', {})\n        chat_inputs.pop('id', '')\n        is_begin = payload.get('is_begin', True)\n        key = get_cache_key(client_id, chat_id)\n\n        artifacts = session.in_memory_cache.get(key + '_artifacts')\n        if artifacts:\n            for k, value in artifacts.items():\n                if k in chat_inputs and value:\n                    chat_inputs[k] = value\n        chat_inputs = ChatMessage(\n            message=chat_inputs,\n            category='question',\n            is_bot=not is_begin,\n            type='bot',\n            user_id=user_id,\n        )\n        if is_begin:\n            # FROMfile auto trigger process_message， the question already saved\n            session.chat_history.add_message(client_id, chat_id, chat_inputs)\n        start_resp = ChatResponse(type='start', user_id=user_id)\n        await session.send_json(client_id, chat_id, start_resp)\n\n        # is_first_message = len(self.chat_history.get_history(client_id=client_id)) <= 1\n        # Generate result and thought\n        try:\n            logger.debug(f'Generating result and thought key={key}')\n            langchain_object = session.in_memory_cache.get(key)\n            result, intermediate_steps, source_doucment = await process_graph(\n                langchain_object=langchain_object,\n                chat_inputs=chat_inputs,\n                websocket=session.active_connections[get_cache_key(client_id, chat_id)],\n                flow_id=client_id,\n                chat_id=chat_id,\n                stream_queue=self.stream_queue,\n            )\n\n            # questions = []\n            # if is_begin and langchain_object.memory and langchain_object.memory.buffer:\n            #     questions = self.recommend_question(langchain_object,\n            #                                         langchain_object.memory.buffer)\n\n        except Exception as e:\n            # Log stack trace\n            logger.exception(e)\n            end_resp = ChatResponse(type='end',\n                                    intermediate_steps=f'Analysis error.{str(e)}',\n                                    user_id=user_id)\n            await session.send_json(client_id, chat_id, end_resp)\n            close_resp = ChatResponse(type='close', user_id=user_id)\n            if not chat_id:\n                # Skills orchestration page, Unable to displayintermediate\n                await session.send_json(client_id, chat_id, start_resp)\n                end_resp.message = end_resp.intermediate_steps\n                end_resp.intermediate_steps = None\n                await session.send_json(client_id, chat_id, end_resp)\n            await session.send_json(client_id, chat_id, close_resp)\n            return\n\n        # Send a response back to the frontend, if needed\n        intermediate_steps = intermediate_steps or ''\n        # history = self.chat_history.get_history(client_id, chat_id, filter_messages=False)\n        await self.intermediate_logs(session, client_id, chat_id, user_id, intermediate_steps)\n        extra = {}\n        source, result = await judge_source(result, source_doucment, chat_id, extra)\n\n        # Final Result\n        if isinstance(langchain_object, AutoGenChain):\n            # Group chat, the last message is repeated, do not go back\n            start_resp.category = 'divider'\n            await session.send_json(client_id, chat_id, start_resp)\n            response = ChatResponse(message='End of the current round',\n                                    type='end',\n                                    category='divider',\n                                    user_id=user_id)\n            await session.send_json(client_id, chat_id, response)\n        else:\n            # Normal\n            if is_begin:\n                start_resp.category = 'answer'\n                await session.send_json(client_id, chat_id, start_resp)\n                response = ChatResponse(message=result,\n                                        extra=json.dumps(extra),\n                                        type='end',\n                                        category='answer',\n                                        user_id=user_id,\n                                        source=int(source))\n                await session.send_json(client_id, chat_id, response)\n\n        # loop end\n        if is_begin:\n            close_resp = ChatResponse(type='close', user_id=user_id)\n            await session.send_json(client_id, chat_id, close_resp)\n\n        if source:\n            # Handling recallschunk\n            await process_source_document(\n                source_doucment,\n                chat_id,\n                response.message_id,\n                result,\n            )\n\n        return result\n\n    async def process_file(self, session: ChatManager, client_id: str, chat_id: str, payload: dict,\n                           user_id: int):\n        file_name = payload['inputs']\n        batch_question = payload['inputs']['questions']\n        # Automatically close purchase order afterL3\n        file = ChatMessage(is_bot=False, message=file_name, type='end', user_id=user_id)\n        session.chat_history.add_message(client_id, chat_id, file)\n        start_resp = ChatResponse(type='start', category='system', user_id=user_id)\n\n        key = get_cache_key(client_id, chat_id)\n        langchain_object = session.in_memory_cache.get(key)\n        if batch_question and len(langchain_object.input_keys) == 0:\n            # prompt There is no place to enter the question\n            await session.send_json(client_id, chat_id, start_resp)\n            log_resp = start_resp.copy()\n            log_resp.intermediate_steps = 'Saat IniPromptSettings have no user input,PresetQuestion Inactive'\n            log_resp.type = 'end'\n            await session.send_json(client_id, chat_id, log_resp)\n            input_key = 'input'\n            input_dict = {}\n        else:\n            input_key = list(build_input_keys_response(langchain_object,\n                                                       {})['input_keys'].keys())[0]\n            input_dict = {k: '' for k in langchain_object.input_keys}\n\n        batch_question = ['start'] if not batch_question else batch_question  # Ensure click OK, will executeLLM\n        report = ''\n        logger.info(f'process_file batch_question={batch_question} input_key={input_key}')\n        for question in batch_question:\n            if not question:\n                continue\n            input_dict[input_key] = question\n            payload = {'inputs': input_dict, 'is_begin': False}\n            start_resp.category == 'question'\n            await session.send_json(client_id, chat_id, start_resp)\n            step_resp = ChatResponse(type='end',\n                                     intermediate_steps=question,\n                                     category='question',\n                                     user_id=user_id)\n            await session.send_json(client_id, chat_id, step_resp)\n            result = await self.process_message(session, client_id, chat_id, payload, user_id)\n            response_step = ChatResponse(intermediate_steps=result,\n                                         type='start',\n                                         category='answer',\n                                         user_id=user_id)\n            response_step.type = 'end'\n            await session.send_json(client_id, chat_id, response_step)\n            report = f\"\"\"{report}### {question} \\n {result} \\n \"\"\"\n\n        if len(batch_question) > 1:\n            start_resp.category = 'report'\n            await session.send_json(client_id, chat_id, start_resp)\n            response = ChatResponse(type='end',\n                                    intermediate_steps=report,\n                                    category='report',\n                                    user_id=user_id)\n            await session.send_json(client_id, chat_id, response)\n        close_resp = ChatResponse(type='close', category='system', user_id=user_id)\n        await session.send_json(client_id, chat_id, close_resp)\n\n    async def process_autogen(self, session: ChatManager, client_id: str, chat_id: str,\n                              payload: dict, user_id: int):\n        key = get_cache_key(client_id, chat_id)\n        langchain_object = session.in_memory_cache.get(key)\n        logger.info(f'reciever_human_interactive langchain={langchain_object}')\n        action = payload.get('action')\n        if action.lower() == 'continue':\n            # autgen_user At the time of the dialogue, the process wait() Needs a new one\n            if hasattr(langchain_object, 'input'):\n                await langchain_object.input(payload.get('inputs'))\n                # A new conversation begins,\n                start_resp = ChatResponse(type='start')\n                await session.send_json(client_id, chat_id, start_resp)\n            else:\n                logger.error(f'act=auto_gen act={action}')\n\n    async def intermediate_logs(self, session: ChatManager, client_id, chat_id, user_id,\n                                intermediate_steps):\n        end_resp = ChatResponse(type='end', user_id=user_id)\n        if not intermediate_steps:\n            return await session.send_json(client_id, chat_id, end_resp, add=False)\n\n        # Store the final analysis process in the database\n        steps = []\n        if isinstance(intermediate_steps, list):\n            # autogen produce multi dialog\n            for message in intermediate_steps:\n                # autogen produce message object\n                if isinstance(message, str):\n                    log = message\n                    is_bot = True\n                    category = 'processing'\n                    content = sender = receiver = None\n                else:\n                    content = message.get('message')\n                    log = message.get('log', '')\n                    sender = message.get('sender')\n                    receiver = message.get('receiver')\n                    is_bot = False if receiver and receiver.get('is_bot') else True\n                    category = message.get('category', 'processing')\n                msg = ChatResponse(message=content,\n                                   intermediate_steps=log,\n                                   sender=sender,\n                                   receiver=receiver,\n                                   type='end',\n                                   user_id=user_id,\n                                   is_bot=is_bot,\n                                   category=category)\n                steps.append(msg)\n        else:\n            # agent model will produce the steps log\n            from langchain.schema import Document  # noqa\n            if chat_id and intermediate_steps.strip():\n                finally_log = ''\n                for s in intermediate_steps.split('\\n'):\n                    # Clean up some redundant logs in recall logs\n                    if 'source_documents' in s:\n                        answer = ast.literal_eval(s.split(':', 1)[1])\n                        if 'result' in answer:\n                            finally_log += 'Answer: ' + answer.get('result') + '\\n\\n'\n                    else:\n                        finally_log += s + '\\n\\n'\n                msg = ChatResponse(intermediate_steps=finally_log, type='end', user_id=user_id)\n                steps.append(msg)\n            else:\n                # onlyL3The user gives a detailedlog\n                end_resp.intermediate_steps = intermediate_steps\n        await session.send_json(client_id, chat_id, end_resp, add=False)\n\n        for step in steps:\n            # save chate message\n            session.chat_history.add_message(client_id, chat_id, step)\n"
  },
  {
    "path": "src/backend/bisheng/chat/manager.py",
    "content": "import asyncio\nimport concurrent.futures\nimport json\nimport time\nfrom collections import defaultdict\nfrom queue import Queue\nfrom typing import Any, Dict, List\n\nfrom fastapi import Request, WebSocket, WebSocketDisconnect, status\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant import AssistantService\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.api.utils import build_flow_no_yield\nfrom bisheng.api.v1.schemas import ChatMessage, ChatResponse, FileResponse\nfrom bisheng.chat.client import ChatClient\nfrom bisheng.chat.clients.workflow_client import WorkflowClient\nfrom bisheng.chat.types import IgnoreException, WorkType\nfrom bisheng.chat.utils import process_node_data\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.base import BaseErrorCode\nfrom bisheng.common.errcode.chat import (DocumentParseError, InputDataParseError,\n                                         LLMExecutionError, SkillDeletedError,\n                                         SkillNotOnlineError)\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData, ApplicationAliveEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache.flow import InMemoryCache\nfrom bisheng.core.cache.manager import Subject, cache_manager\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import Flow, FlowType, FlowDao\nfrom bisheng.database.models.session import MessageSession, MessageSessionDao\nfrom bisheng.graph.utils import find_next_node\nfrom bisheng.processing.process import process_tweaks\nfrom bisheng.user.domain.models.user import User, UserDao\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils import get_request_ip\nfrom bisheng.utils.threadpool import ThreadPoolManager, thread_pool\nfrom bisheng.utils.util import get_cache_key\nfrom bisheng_langchain.input_output.output import Report\n\n\nclass ChatHistory(Subject):\n\n    def __init__(self):\n        super().__init__()\n        self.history: Dict[str, List[ChatMessage]] = defaultdict(list)\n\n    def add_message(\n            self,\n            client_id: str,\n            chat_id: str,\n            message: ChatMessage,\n    ):\n        \"\"\"Add a message to the chat history.\"\"\"\n        t1 = time.time()\n        from bisheng.database.models.message import ChatMessage\n        message.flow_id = client_id\n        message.chat_id = chat_id\n        db_message = None\n        if chat_id and (message.message or message.intermediate_steps\n                        or message.files) and message.type != 'stream':\n            msg = message.copy()\n            msg.message = json.dumps(msg.message, ensure_ascii=False) if isinstance(msg.message, dict) else msg.message\n            files = json.dumps(msg.files) if msg.files else ''\n            msg.__dict__.pop('files')\n            db_message = ChatMessage(files=files, **msg.__dict__)\n            logger.info(f'chat={db_message} time={time.time() - t1}')\n            with get_sync_db_session() as seesion:\n                seesion.add(db_message)\n                seesion.commit()\n                seesion.refresh(db_message)\n                message.message_id = db_message.id\n\n        if not isinstance(message, FileResponse):\n            self.notify()\n        return db_message\n\n    def empty_history(self, client_id: str, chat_id: str):\n        \"\"\"Empty the chat history for a client.\"\"\"\n        self.history[get_cache_key(client_id, chat_id)] = []\n\n\nclass ChatManager:\n\n    def __init__(self):\n        self.active_connections: Dict[str, WebSocket] = {}\n        self.chat_history = ChatHistory()\n        self.cache_manager = cache_manager\n        self.cache_manager.attach(self.update)\n        self.in_memory_cache = InMemoryCache()\n        self.task_manager: List[asyncio.Task] = []\n        # Connected clients\n        self.active_clients: Dict[str, ChatClient] = {}\n\n        # Record Streaming Output Results\n        self.stream_queue: Dict[str, Queue] = {}\n\n    def update(self):\n        if self.cache_manager.current_client_id in self.active_connections:\n            self.last_cached_object_dict = self.cache_manager.get_last()\n            # Add a new ChatResponse with the data\n            chat_response = FileResponse(\n                message=None,\n                type='file',\n                data=self.last_cached_object_dict['obj'],\n                data_type=self.last_cached_object_dict['type'],\n            )\n\n            self.chat_history.add_message(self.cache_manager.current_client_id,\n                                          self.cache_manager.current_chat_id, chat_response)\n\n    async def connect(self, client_id: str, chat_id: str, websocket: WebSocket):\n        await websocket.accept()\n        self.active_connections[get_cache_key(client_id, chat_id)] = websocket\n        self.stream_queue[get_cache_key(client_id, chat_id)] = Queue()\n\n    def reuse_connect(self, client_id: str, chat_id: str, websocket: WebSocket):\n        self.active_connections[get_cache_key(client_id, chat_id)] = websocket\n        self.stream_queue[get_cache_key(client_id, chat_id)] = Queue()\n\n    def disconnect(self, client_id: str, chat_id: str, key: str = None):\n        if key:\n            logger.debug('disconnect_ws key={}', key)\n            self.active_connections.pop(key, None)\n        else:\n            logger.info('disconnect_ws key={}', get_cache_key(client_id, chat_id))\n            self.active_connections.pop(get_cache_key(client_id, chat_id), None)\n\n    async def send_message(self, client_id: str, chat_id: str, message: str):\n        websocket = self.active_connections[get_cache_key(client_id, chat_id)]\n        await websocket.send_text(message)\n\n    async def send_json(self, client_id: str, chat_id: str, message: ChatMessage, add=True):\n        message.flow_id = client_id\n        message.chat_id = chat_id\n        websocket = self.active_connections[get_cache_key(client_id, chat_id)]\n        # Add message thread\n        if add:\n            self.chat_history.add_message(client_id, chat_id, message)\n        await websocket.send_json(message.dict())\n\n    async def close_connection(self,\n                               flow_id: str,\n                               chat_id: str,\n                               code: int,\n                               reason: str,\n                               key_list: List[str] = None):\n        \"\"\"close and clean ws\"\"\"\n        if websocket := self.active_connections.get(get_cache_key(flow_id, chat_id)):\n            try:\n                await websocket.close(code=code, reason=reason)\n                self.disconnect(flow_id, chat_id)\n                if key_list:\n                    for key in key_list:\n                        self.disconnect(flow_id, chat_id, key)\n            except RuntimeError as exc:\n                # This is to catch the following error:\n                #  Unexpected ASGI message 'websocket.close', after sending 'websocket.close'\n                if 'after sending' in str(exc):\n                    logger.error(exc)\n\n    async def ping(self, client_id: str, chat_id: str):\n        ping_pong = ChatMessage(\n            is_bot=True,\n            message='pong',\n            intermediate_steps='',\n        )\n        await self.send_json(client_id, chat_id, ping_pong, False)\n\n    def set_cache(self, client_id: str, langchain_object: Any) -> bool:\n        \"\"\"\n        Set the cache for a client.\n        \"\"\"\n\n        self.in_memory_cache.set(client_id, langchain_object)\n        return client_id in self.in_memory_cache\n\n    async def accept_client(self, client_key: str, chat_client: ChatClient, websocket: WebSocket):\n        await websocket.accept()\n        self.active_clients[client_key] = chat_client\n\n    def clear_client(self, client_key: str):\n        if client_key not in self.active_clients:\n            logger.warning('close_client client_key={} not in active_clients', client_key)\n            return\n        logger.info('close_client client_key={}', client_key)\n        self.active_clients.pop(client_key, None)\n\n    async def close_client(self, client_key: str, code: int, reason: str):\n        if chat_client := self.active_clients.get(client_key):\n            try:\n                self.clear_client(client_key)\n                await chat_client.close()\n                await chat_client.websocket.close(code=code, reason=reason)\n            except RuntimeError as exc:\n                # This is to catch the following error:\n                #  Unexpected ASGI message 'websocket.close', after sending 'websocket.close'\n                if 'after sending' in str(exc):\n                    logger.error(exc)\n\n    async def dispatch_client(\n            self,\n            request: Request | WebSocket,  # Raw request body\n            client_id: str,\n            chat_id: str,\n            login_user: UserPayload,\n            work_type: WorkType,\n            websocket: WebSocket,\n            graph_data: dict = None):\n        start_time = time.time()\n        client_key = generate_uuid()\n        if work_type == WorkType.GPTS:\n            chat_client = ChatClient(request,\n                                     client_key,\n                                     client_id,\n                                     chat_id,\n                                     login_user.user_id,\n                                     login_user,\n                                     work_type,\n                                     websocket,\n                                     graph_data=graph_data)\n        else:\n            chat_client = WorkflowClient(request,\n                                         client_key,\n                                         client_id,\n                                         chat_id,\n                                         login_user.user_id,\n                                         login_user,\n                                         work_type,\n                                         websocket)\n        await self.accept_client(client_key, chat_client, websocket)\n        logger.debug(\n            f'act=accept_client client_key={client_key} client_id={client_id} chat_id={chat_id}')\n        try:\n            while True:\n                try:\n                    json_payload_receive = await asyncio.wait_for(websocket.receive_json(),\n                                                                  timeout=2.0)\n                except asyncio.TimeoutError:\n                    continue\n                try:\n                    payload = json.loads(json_payload_receive) if json_payload_receive else {}\n                except TypeError:\n                    payload = json_payload_receive\n                # clientHandle your own business logic internally\n                # TODO zgq: Here you can increase the thread pool to prevent blocking\n                await chat_client.handle_message(payload)\n        except WebSocketDisconnect as e:\n            logger.info('act=rcv_client_disconnect {}', str(e))\n        except IgnoreException:\n            # client Inside closed on its ownwsLink, no abnormalities\n            pass\n        except Exception as e:\n            # Handle any exceptions that might occur\n            logger.exception(str(e))\n            await self.close_client(client_key,\n                                    code=status.WS_1011_INTERNAL_ERROR,\n                                    reason='Backend Unknown Error Type')\n        finally:\n            try:\n                await self.close_client(client_key,\n                                        code=status.WS_1000_NORMAL_CLOSURE,\n                                        reason='Client disconnected')\n            except Exception as e:\n                logger.exception(e)\n            self.clear_client(client_key)\n            if work_type == WorkType.GPTS:\n                app_info = await AssistantService.get_one_assistant(client_id)\n                app_type = ApplicationTypeEnum.ASSISTANT\n            else:\n                app_info = await WorkFlowService.get_one_workflow_simple_info(client_id)\n                app_type = ApplicationTypeEnum.WORKFLOW\n            app_name = app_info.name if app_info else 'unknown'\n            await telemetry_service.log_event(user_id=login_user.user_id,\n                                              event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                              trace_id=trace_id_var.get(),\n                                              event_data=ApplicationAliveEventData(\n                                                  app_id=client_id,\n                                                  app_name=app_name,\n                                                  app_type=app_type,\n                                                  chat_id=chat_id,\n                                                  start_time=int(start_time),\n                                                  end_time=int(time.time()),\n                                              ))\n\n    async def handle_websocket(\n            self,\n            flow_id: str,\n            chat_id: str,\n            websocket: WebSocket,\n            user_id: int,\n            gragh_data: dict = None,\n            source: str = \"platform\"\n    ):\n        start_time = time.time()\n        # Establish connections and store mappings for compatibility without reusews scenario\n        key_list = set([get_cache_key(flow_id, chat_id)])\n        await self.connect(flow_id, chat_id, websocket)\n        logger.info(\"act=ws_connected flow_id={} chat_id={} user_id={}\", flow_id, chat_id, user_id)\n        context_dict = {\n            get_cache_key(flow_id, chat_id): {\n                'status': 'init',\n                'has_file': False,\n                'flow_id': flow_id,\n                'chat_id': chat_id\n            }\n        }\n        payload = {}\n        base_param = {\n            'user_id': user_id,\n            'flow_id': flow_id,\n            'chat_id': chat_id,\n            'type': 'end',\n            'category': 'system'\n        }\n        try:\n            while True:\n                try:\n                    json_payload_receive = await asyncio.wait_for(websocket.receive_json(),\n                                                                  timeout=2.0)\n                except asyncio.TimeoutError:\n                    json_payload_receive = ''\n                try:\n                    payload = json.loads(json_payload_receive) if json_payload_receive else {}\n                except TypeError:\n                    payload = json_payload_receive\n\n                # websocket multi use\n                if payload and 'flow_id' in payload:\n                    chat_id = payload.get('chat_id')\n                    flow_id = payload.get('flow_id')\n                    key = get_cache_key(flow_id, chat_id)\n                    if key not in key_list:\n                        gragh_data, message = self.preper_reuse_connection(\n                            flow_id, chat_id, websocket)\n                        context_dict.update({\n                            key: {\n                                'status': 'init',\n                                'has_file': False,\n                                'flow_id': flow_id,\n                                'chat_id': chat_id\n                            }\n                        })\n                        if message:\n                            logger.info('act=new_chat message={}', str(message))\n                            erro_resp = ChatResponse(intermediate_steps=str(message), **base_param)\n                            erro_resp.category = 'error'\n                            await message.websocket_close_message(websocket=websocket)\n                            break\n                        logger.info('act=new_chat_init_success key={}', key)\n                        key_list.add(key)\n                    if not payload.get('inputs'):\n                        continue\n\n                # Determine if the current is an empty loop\n                process_param = {\n                    'autogen_pool': thread_pool,\n                    'user_id': user_id,\n                    'payload': payload,\n                    'graph_data': gragh_data,\n                    'context_dict': context_dict,\n                    'source': source\n                }\n                if payload:\n                    await self._process_when_payload(flow_id, chat_id, **process_param)\n                else:\n                    for v in context_dict.values():\n                        if v['status'] != 'init':\n                            await self._process_when_payload(v['flow_id'], v['chat_id'],\n                                                             **process_param)\n\n                # Processing Task Status\n                complete_normal = await thread_pool.as_completed(key_list)\n                complete = complete_normal\n                # if async_task and async_task.done():\n                #     logger.debug(f'async_task_complete result={async_task.result}')\n                if complete:\n                    for future_key, future in complete:\n                        try:\n                            future.result()\n                            logger.debug('task_complete key={}', future_key)\n                        except asyncio.exceptions.CancelledError:\n                            continue\n                        except Exception as e:\n                            if isinstance(e, concurrent.futures.CancelledError):\n                                continue\n                            logger.exception('feature_key={} {}', future_key, e)\n                            erro_resp = ChatResponse(**base_param)\n                            context = context_dict.get(future_key)\n                            if context.get('status') == 'init':\n                                raise LLMExecutionError(exception=e, error=str(e))\n                            elif context.get('has_file'):\n                                raise DocumentParseError(exception=e, error=str(e))\n                            else:\n                                raise InputDataParseError(exception=e, error=str(e))\n\n                            context['status'] = 'init'\n                            await self.send_json(context.get('flow_id'), context.get('chat_id'),\n                                                 erro_resp)\n                            erro_resp.type = 'close'\n                            await self.send_json(context.get('flow_id'), context.get('chat_id'),\n                                                 erro_resp)\n        except WebSocketDisconnect as e:\n            logger.info(f'act=rcv_client_disconnect {str(e)}')\n        except BaseErrorCode as e:\n            # Business exception.\n            logger.error(str(e))\n            erro_resp = ChatResponse(intermediate_steps=str(e), **base_param, message=json.dumps(e.to_dict()))\n            erro_resp.category = 'error'\n            await self.send_json(flow_id, chat_id, erro_resp)\n            erro_resp.type = 'close'\n            await self.send_json(flow_id, chat_id, erro_resp)\n        except Exception as e:\n            # Handle any exceptions that might occur\n            logger.exception(str(e))\n            await self.close_connection(flow_id=flow_id,\n                                        chat_id=chat_id,\n                                        code=status.WS_1011_INTERNAL_ERROR,\n                                        reason='Backend Unknown Error Type',\n                                        key_list=key_list)\n\n        finally:\n            thread_pool.cancel_task(key_list)  # Proceed with the task in progresscancel\n            try:\n                await self.close_connection(flow_id=flow_id,\n                                            chat_id=chat_id,\n                                            code=status.WS_1000_NORMAL_CLOSURE,\n                                            reason='Client disconnected',\n                                            key_list=key_list)\n            except Exception as e:\n                logger.exception(e)\n            self.disconnect(flow_id, chat_id)\n            flow_info = await WorkFlowService.get_one_workflow_simple_info(flow_id)\n            await telemetry_service.log_event(user_id=user_id, event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                              trace_id=trace_id_var.get(),\n                                              event_data=ApplicationAliveEventData(\n                                                  app_id=flow_id,\n                                                  app_name=flow_info.name if flow_info else 'unknown',\n                                                  app_type=ApplicationTypeEnum.SKILL,\n                                                  chat_id=chat_id,\n                                                  start_time=int(start_time),\n                                                  end_time=int(time.time()),\n                                              ))\n\n    async def _process_when_payload(self, flow_id: str, chat_id: str,\n                                    autogen_pool: ThreadPoolManager, **kwargs):\n        \"\"\"\n        Process the incoming message and send the response.\n        \"\"\"\n        # set start\n        user_id = kwargs.get('user_id')\n        graph_data = kwargs.get('graph_data')\n        payload = kwargs.get('payload')\n        key = get_cache_key(flow_id, chat_id)\n        context = kwargs.get('context_dict').get(key)\n        source = kwargs.get('source', 'platform')\n        status_ = context.get('status')\n\n        if payload and status_ != 'init':\n            logger.error('act=input_before_complete payload={} status={}', payload, status_)\n\n        if not payload:\n            payload = context.get('payload')\n        context['payload'] = payload\n        is_begin = bool(status_ == 'init' and 'action' not in payload)\n        base_param = {'user_id': user_id, 'flow_id': flow_id, 'chat_id': chat_id}\n        start_resp = ChatResponse(type='begin', category='system', **base_param)\n        if is_begin:\n            await self.send_json(flow_id, chat_id, start_resp)\n            # Determine if the session was created for the first time\n            if chat_id:\n                exist_session = MessageSessionDao.get_one(chat_id=chat_id)\n                if not exist_session:  # Description is to create a new session\n                    websocket = self.active_connections[key]\n                    login_user = await UserPayload.init_login_user(**{\n                        'user_id': user_id,\n                        'user_name': UserDao.get_user(user_id).user_name,\n                    })\n                    flow_info = FlowDao.get_flow_by_id(flow_id)\n                    message_session = await MessageSessionDao.async_insert_one(MessageSession(\n                        chat_id=chat_id,\n                        flow_id=flow_id,\n                        flow_name=flow_info.name,\n                        flow_type=FlowType.FLOW.value,\n                        user_id=user_id,\n                    ))\n\n                    # RecordTelemetryJournal\n                    await telemetry_service.log_event(user_id=login_user.user_id,\n                                                      event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                                      trace_id=trace_id_var.get(),\n                                                      event_data=NewMessageSessionEventData(\n                                                          session_id=message_session.chat_id,\n                                                          app_id=flow_id,\n                                                          source=source,  # type: ignore\n                                                          app_name=flow_info.name,\n                                                          app_type=ApplicationTypeEnum.SKILL\n                                                      )\n                                                      )\n\n                    AuditLogService.create_chat_flow(login_user, get_request_ip(websocket),\n                                                     flow_id, flow_info)\n        start_resp.type = 'start'\n\n        # should input data\n        step_resp = ChatResponse(type='end', category='system', **base_param)\n        langchain_obj_key = get_cache_key(flow_id, chat_id)\n        if status_ == 'init':\n            has_file, graph_data = await self.preper_payload(payload, graph_data,\n                                                             langchain_obj_key, flow_id, chat_id,\n                                                             start_resp, step_resp)\n            status_ = 'init_object'\n            context.update({'status': status_})\n            context.update({'has_file': has_file})\n\n        # build in thread\n        if not self.in_memory_cache.get(langchain_obj_key) and status_ == 'init_object':\n            thread_pool.submit(key,\n                               self.init_langchain_object_task,\n                               flow_id,\n                               chat_id,\n                               user_id,\n                               graph_data,\n                               trace_id=chat_id)\n            status_ = 'waiting_object'\n            context.update({'status': status_})\n\n        # run in thread\n        if payload and self.in_memory_cache.get(langchain_obj_key):\n            action, over = await self.preper_action(flow_id, chat_id, langchain_obj_key, payload,\n                                                    start_resp, step_resp)\n            logger.debug(\n                f\"processing_message message={payload.get('inputs')} action={action} over={over}\")\n            if not over:\n                # task_service: 'TaskService' = get_task_service()\n                # async_task = asyncio.create_task(\n                #     task_service.launch_task(Handler().dispatch_task, self, client_id,\n                #                              chat_id, action, payload, user_id))\n                from bisheng_langchain.chains.autogen.auto_gen import AutoGenChain\n                from bisheng.chat.handlers import Handler\n                params = {\n                    'session': self,\n                    'client_id': flow_id,\n                    'chat_id': chat_id,\n                    'action': action,\n                    'payload': payload,\n                    'user_id': user_id,\n                    'trace_id': chat_id\n                }\n                if isinstance(self.in_memory_cache.get(langchain_obj_key), AutoGenChain):\n                    # autogen chain\n                    logger.info(f'autogen_submit {langchain_obj_key}')\n                    autogen_pool.submit(key,\n                                        Handler(stream_queue=self.stream_queue[key]).dispatch_task,\n                                        **params)\n                else:\n                    thread_pool.submit(key,\n                                       Handler(stream_queue=self.stream_queue[key]).dispatch_task,\n                                       **params)\n            status_ = 'init'\n            context.update({'status': status_})\n            context.update({'payload': {}})  # clean message\n\n    def preper_reuse_connection(self, flow_id: str, chat_id: str, websocket: WebSocket):\n        # Set multiplexed mapping relationship\n        message = None\n        with get_sync_db_session() as session:\n            gragh_data = session.get(Flow, flow_id)\n            if not gragh_data:\n                message = SkillDeletedError()\n            if gragh_data.status != 2:\n                message = SkillNotOnlineError()\n        gragh_data = gragh_data.data\n        self.reuse_connect(flow_id, chat_id, websocket)\n        return gragh_data, message\n\n    async def preper_payload(self, payload, graph_data, langchain_obj_key, client_id, chat_id,\n                             start_resp: ChatResponse, step_resp: ChatResponse):\n        has_file = False\n        has_variable = False\n        if 'inputs' in payload and ('data' in payload['inputs']\n                                    or 'file_path' in payload['inputs']):\n            node_data = payload['inputs'].get('data', '') or [payload['inputs']]\n            graph_data = self.refresh_graph_data(graph_data, node_data)\n            # Upload the file againbuild, it's a bit bold, Change to onlydocument loader Membutuhkan\n            node_loader = False\n\n            for nod in node_data:\n                if any('Loader' in x['id'] for x in find_next_node(graph_data, nod['id'])):\n                    node_loader = True\n                    break\n            if node_loader:\n                self.set_cache(langchain_obj_key, None)  # rebuild object\n            has_file = any(['InputFile' in nd.get('id', '') for nd in node_data])\n            has_variable = any(['VariableNode' in nd.get('id', '') for nd in node_data])\n        if has_file:\n            step_resp.intermediate_steps = 'File upload complete, start parsing'\n            await self.send_json(client_id, chat_id, start_resp)\n            await self.send_json(client_id, chat_id, step_resp, add=False)\n            await self.send_json(client_id, chat_id, start_resp)\n            logger.info('input_file start_log')\n            await asyncio.sleep(-1)  # Quick Skip\n        elif has_variable:\n            await self.send_json(client_id, chat_id, start_resp)\n            logger.info('input_variable start_log')\n            await asyncio.sleep(-1)  # Quick Skip\n        return has_file, graph_data\n\n    async def preper_action(self, client_id, chat_id, langchain_obj_key, payload,\n                            start_resp: ChatResponse, step_resp: ChatResponse):\n        langchain_obj = self.in_memory_cache.get(langchain_obj_key)\n        batch_question = []\n        action = ''\n        over = False\n        if isinstance(langchain_obj, Report):\n            action = 'report'\n            step_resp.intermediate_steps = 'File parsing complete, start generating report'\n            await self.send_json(client_id, chat_id, step_resp)\n        elif payload.get('action') == 'stop':\n            action = 'stop'\n        elif 'action' in payload:\n            action = 'autogen'\n        elif 'clear_history' in payload and payload['clear_history']:\n            self.chat_history.empty_history(client_id, chat_id)\n            action = 'clear_history'\n            over = True\n        elif 'data' in payload['inputs'] or 'file_path' in payload['inputs']:\n            action = 'auto_file'\n            batch_question = self.in_memory_cache.get(langchain_obj_key + '_question')\n            payload['inputs']['questions'] = batch_question\n            if not batch_question:\n                # no question\n                file_msg = payload['inputs']\n                file_msg.pop('id', '')\n                file_msg.pop('data', '')\n                file = ChatMessage(flow_id=client_id,\n                                   chat_id=chat_id,\n                                   is_bot=False,\n                                   message=file_msg,\n                                   type='end',\n                                   user_id=step_resp.user_id)\n                self.chat_history.add_message(client_id, chat_id, file)\n                step_resp.message = ''\n                step_resp.intermediate_steps = 'File analysis complete'\n                await self.send_json(client_id, chat_id, step_resp)\n                start_resp.type = 'close'\n                await self.send_json(client_id, chat_id, start_resp)\n                over = True\n            else:\n                step_resp.intermediate_steps = 'File parsing complete, start execution'\n                await self.send_json(client_id, chat_id, step_resp, add=False)\n        await asyncio.sleep(-1)  # Quick Skip\n        return action, over\n\n    # async def init_langchain_object(self, flow_id, chat_id, user_id, graph_data):\n    #     session_id = chat_id\n    #     session_service = get_session_service()\n    #     if session_id is None:\n    #         session_id = session_service.generate_key(session_id=session_id, data_graph=graph_data)\n    #     # Load the graph using SessionService\n    #     session = await session_service.load_session(session_id, graph_data)\n    #     graph, artifacts = session if session else (None, None)\n    #     if not graph:\n    #         raise ValueError('Graph not found in the session')\n    #     built_object = await graph.abuild()\n    #     key_node = get_cache_key(flow_id, chat_id)\n    #     logger.info(f'init_langchain key={key_node}')\n    #     question = []\n    #     for node in graph.nodes:\n    #         if node.vertex_type == 'InputNode':\n    #             question.extend(node.build)\n    #     self.set_cache(key_node + '_question', question)\n    #     self.set_cache(key_node, built_object)\n    #     self.set_cache(key_node + '_artifacts', artifacts)\n    #     return built_object\n\n    async def init_langchain_object_task(self, flow_id, chat_id, user_id, graph_data):\n        key_node = get_cache_key(flow_id, chat_id)\n        logger.info(f'init_langchain build_begin key={key_node}')\n        with get_sync_db_session() as session:\n            db_user = session.get(User, user_id)  # Used to support nodes to determine user permissions\n        artifacts = {}\n        start_time = time.time()\n        graph = await build_flow_no_yield(graph_data=graph_data,\n                                          artifacts=artifacts,\n                                          process_file=True,\n                                          flow_id=flow_id,\n                                          chat_id=chat_id,\n                                          user_name=db_user.user_name)\n        await graph.abuild()\n        logger.info(f'init_langchain build_end timecost={time.time() - start_time}')\n        question = []\n        for node in graph.vertices:\n            if node.vertex_type in {'InputNode', 'AudioInputNode', 'FileInputNode'}:\n                question_parse = await node.get_result()\n                if isinstance(question_parse, list):\n                    question.extend(question_parse)\n                else:\n                    question.append(question_parse)\n\n        self.set_cache(key_node + '_question', question)\n        input_nodes = graph.get_input_nodes()\n        for node in input_nodes:\n            # Store onlychain\n            if node.base_type == 'inputOutput' and node.vertex_type != 'Report':\n                continue\n            self.set_cache(key_node, await node.get_result())\n            self.set_cache(key_node + '_artifacts', artifacts)\n        return flow_id, chat_id\n\n    def refresh_graph_data(self, graph_data: dict, node_data: List[dict]):\n        tweak = process_node_data(node_data)\n        \"\"\"upload file to make flow work\"\"\"\n        return process_tweaks(graph_data, tweaks=tweak)\n"
  },
  {
    "path": "src/backend/bisheng/chat/types.py",
    "content": "from enum import Enum\n\n\n# clientBusiness Type\nclass WorkType(Enum):\n    # Skills Conversation Business\n    FLOW = 'flow'\n    # Assistant Conversation Business\n    GPTS = 'assistant'\n    # workflow in terms of business,\n    WORKFLOW = 'workflow'\n\n\nclass IgnoreException(Exception):\n    \"\"\" dont`t need print traceback stack \"\"\"\n\n    def __init__(self, message):\n        self.message = message\n        super().__init__(self.message)\n\n    def __str__(self):\n        return self.message\n"
  },
  {
    "path": "src/backend/bisheng/chat/utils.py",
    "content": "import ast\nimport json\nimport re\nfrom enum import Enum\nfrom typing import Dict, List\nfrom urllib.parse import unquote, urlparse\n\nfrom fastapi import WebSocket\nfrom langchain.chains import LLMChain\nfrom langchain.prompts import PromptTemplate\nfrom langchain.schema.document import Document\nfrom loguru import logger\n\nfrom bisheng.api.v1.schemas import ChatMessage\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.database.models.recall_chunk import RecallChunk\nfrom bisheng.interface.utils import try_setting_streaming_options\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.processing.base import get_result_and_steps\n\n\nclass SourceType(Enum):\n    \"\"\"\n    source type\n    \"\"\"\n    NOT_SUPPORT = 0  # Traceability is not supported\n    FILE = 1  # Trace back to the source file to supportbboxin that form.\n    NO_PERMISSION = 2  # No permission to access traceability information\n    LINK = 3  # LinkedchunkContents\n    QA = 4  # HitsQAThe knowledge base upon\n\n\nasync def process_graph(langchain_object,\n                        chat_inputs: ChatMessage,\n                        websocket: WebSocket,\n                        flow_id: str = None,\n                        chat_id: str = None,\n                        **kwargs):\n    langchain_object = try_setting_streaming_options(langchain_object, websocket)\n    logger.debug('Loaded langchain object')\n\n    if langchain_object is None:\n        # Raise user facing error\n        raise ValueError(\n            'There was an error loading the langchain_object. Please, check all the nodes and try again.'\n        )\n\n    # Generate result and thought\n    try:\n        if not chat_inputs.message:\n            logger.debug('No message provided')\n            raise ValueError('No message provided')\n\n        logger.debug('Generating result and thought')\n        result, intermediate_steps, source_document = await get_result_and_steps(\n            langchain_object,\n            chat_inputs.message,\n            websocket=websocket,\n            flow_id=flow_id,\n            chat_id=chat_id,\n            **kwargs)\n        logger.debug('Generated result and intermediate_steps')\n        return result, intermediate_steps, source_document\n    except Exception as e:\n        # Log stack trace\n        logger.exception(e)\n        raise e\n\n\nprompt_template = '''Analyze givenQuestionEkstrakQuestionContained inKeyWords, output list format\n\nExamples:\nQuestion: The current ratios of Damon over the past three years are as follows:2021Year:3.74x2020Year:2.82x2019Year:2.05x\nKeyWords: ['Past three years', 'Current ratio', '2021', '3.74', '2020', '2.82', '2019', '2.05']\n\n----------------\nQuestion: {question}'''\n\n\ndef extract_answer_keys(answer, llm):\n    \"\"\"\n    EkstrakanswerKeywords in\n    \"\"\"\n    llm_chain = None\n    if llm:\n        llm_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt_template))\n    try:\n        keywords_str = llm_chain.run(answer)\n        keywords_str = re.sub('<think>.*</think>', '', keywords_str, flags=re.S).strip()\n        keywords = ast.literal_eval(keywords_str[9:])\n    except Exception:\n        import jieba.analyse\n        logger.warning(f'llm extract_not_support, change to jieba')\n        keywords = jieba.analyse.extract_tags(answer, topK=100, withWeight=False)\n\n    return keywords\n\n\nasync def extract_answer_keys_async(answer, llm):\n    \"\"\"\n    EkstrakanswerKeywords in\n    \"\"\"\n    llm_chain = None\n    if llm:\n        llm_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt_template))\n    try:\n        keywords_str = await llm_chain.arun(answer)\n        keywords_str = re.sub('<think>.*</think>', '', keywords_str, flags=re.S).strip()\n        keywords = ast.literal_eval(keywords_str[9:])\n    except Exception:\n        import jieba.analyse\n        logger.warning(f'llm extract_not_support, change to jieba')\n        keywords = jieba.analyse.extract_tags(answer, topK=100, withWeight=False)\n\n    return keywords\n\n\ndef sync_judge_source(result, source_document, chat_id, extra: Dict):\n    source = SourceType.NOT_SUPPORT.value\n    if isinstance(result, Document):\n        # ReturnsDocument\n        metadata = result.metadata\n        question = result.page_content\n        result = json.loads(metadata.get('extra', '{}')).get('answer')\n        if result:\n            source = SourceType.QA.value\n            extra.update({\n                'qa': question,\n                'url': json.loads(metadata.get('extra', '{}')).get('url')\n            })\n            return source, result\n        source_document = [source_document]\n    if source_document and chat_id:\n        if any(not doc.metadata.get('right', True) for doc in source_document):\n            source = SourceType.NO_PERMISSION.value\n        elif all(\n                doc.metadata.get('user_metadata') and doc.metadata.get('user_metadata', {}).get('url')\n                for doc in source_document):\n            source = SourceType.LINK.value\n            repeat_doc = {}\n            doc = []\n            # The source document should be de-emphasized and the original order cannot be changed.\n            for one in source_document:\n                title = one.metadata.get('source') or one.metadata.get('document_name')\n                url = one.metadata.get('user_metadata', {}).get('url')\n                repeat_key = (title, url)\n                # Repeatedly discarded, do not return\n                if repeat_doc.get(repeat_key):\n                    continue\n                doc.append({'title': title, 'url': url})\n                repeat_doc[repeat_key] = 1\n            extra.update({'doc': doc})\n        else:\n            source = SourceType.FILE.value\n\n            # Determine if all files are in the Knowledge Base, If one is not, traceability is not supported\n            for one in source_document:\n                # If there is no knowledge baseidand documentsiddoes not support traceability\n                if not one.metadata.get('knowledge_id') or not one.metadata.get('document_id'):\n                    source = SourceType.NOT_SUPPORT.value\n                    break\n                # Knowledge Base Under Judgmentidand documentsidWhether it is in numeric format, because temporary documents uploaded by the workflow are alsoknowledge_idand documentsid\n                try:\n                    int(one.metadata.get('knowledge_id'))\n                    int(one.metadata.get('file_id') or one.metadata.get('document_id'))\n                except Exception:\n                    source = SourceType.NOT_SUPPORT.value\n                    break\n\n    return source, result\n\n\nasync def judge_source(result, source_document, chat_id, extra: Dict):\n    return sync_judge_source(result, source_document, chat_id, extra)\n\n\ndef sync_process_source_document(source_document: List[Document], chat_id, message_id, answer):\n    if not source_document or not message_id:\n        return\n\n    message_info = ChatMessageDao.get_message_by_id(message_id)\n    if not message_info:\n        return\n    # Use a large model for keyword extraction, and configure a temporary solution for the model\n    llm = LLMService.get_knowledge_source_llm(message_info.user_id)\n\n    answer_keywords = extract_answer_keys(answer, llm)\n\n    batch_insert = []\n    for doc in source_document:\n        if 'bbox' in doc.metadata:\n            # Indicates support for traceability\n            content = doc.page_content\n            recall_chunk = RecallChunk(chat_id=chat_id,\n                                       keywords=json.dumps(answer_keywords),\n                                       chunk=content,\n                                       file_id=doc.metadata.get('file_id') or doc.metadata.get('document_id'),\n                                       meta_data=json.dumps(doc.metadata),\n                                       message_id=message_id)\n            batch_insert.append(recall_chunk)\n    if batch_insert:\n        with get_sync_db_session() as db_session:\n            db_session.add_all(batch_insert)\n            db_session.commit()\n\n\nasync def process_source_document(source_document: List[Document], chat_id, message_id, answer):\n    if not source_document or not message_id:\n        return\n\n    message_info = await ChatMessageDao.aget_message_by_id(message_id)\n    if not message_info:\n        return\n    # Use a large model for keyword extraction, and configure a temporary solution for the model\n    llm = await LLMService.get_knowledge_source_llm_async(message_info.user_id)\n\n    answer_keywords = await extract_answer_keys_async(answer, llm)\n\n    batch_insert = []\n    for doc in source_document:\n        if 'bbox' in doc.metadata:\n            # Indicates support for traceability\n            content = doc.page_content\n            recall_chunk = RecallChunk(chat_id=chat_id,\n                                       keywords=json.dumps(answer_keywords),\n                                       chunk=content,\n                                       file_id=doc.metadata.get('file_id') or doc.metadata.get('document_id'),\n                                       meta_data=json.dumps(doc.metadata),\n                                       message_id=message_id)\n            batch_insert.append(recall_chunk)\n    if batch_insert:\n        async with get_async_db_session() as db_session:\n            db_session.add_all(batch_insert)\n            await db_session.commit()\n\n\n# Convert node data that requires additional input totweak\ndef process_node_data(node_data: List[Dict]) -> Dict:\n    tweak = {}\n    for nd in node_data:\n        if nd.get('id') not in tweak:\n            tweak[nd.get('id')] = {}\n        if 'InputFile' in nd.get('id', ''):\n            file_path = nd.get('file_path')\n            url_path = urlparse(file_path)\n            if url_path.netloc:\n                file_name = unquote(url_path.path.split('/')[-1])\n            else:\n                file_name = file_path.split('_', 1)[1] if '_' in file_path else ''\n            nd['value'] = file_name\n            tweak[nd.get('id')] = {'file_path': file_path, 'value': file_name}\n        elif 'VariableNode' in nd.get('id', ''):\n            # general key value\n            variables = nd.get('name')\n            variable_value = nd.get('value')\n            # actual key varaialbes & variable_value\n            variables_list = tweak[nd.get('id')].get('variables', [])\n            if not variables_list:\n                tweak[nd.get('id')]['variables'] = variables_list\n                tweak[nd.get('id')]['variable_value'] = []\n            variables_list.append(variables)\n            # value\n            variables_value_list = tweak[nd.get('id')].get('variable_value', [])\n            variables_value_list.append(variable_value)\n    return tweak\n"
  },
  {
    "path": "src/backend/bisheng/chat_session/README.md",
    "content": "# 会话模块"
  },
  {
    "path": "src/backend/bisheng/chat_session/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/chat_session/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/chat_session/api/router.py",
    "content": "from typing import Optional, Literal\n\nfrom fastapi import APIRouter, Depends, Body\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.common.schemas.api import resp_200\nfrom bisheng.common.schemas.telemetry.event_data_schema import MessageFeedbackEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.database.models.session import MessageSessionDao\nfrom ..domain.chat import ChatSessionService\nfrom ...api.services.workstation import WorkstationMessage\n\nrouter = APIRouter(prefix='/session', tags=['Chat Session'])\n\n\n@router.get('/chat/history')\nasync def get_chat_message_public(*,\n                                  chat_id: str,\n                                  flow_id: str,\n                                  id: Optional[str] = None,\n                                  page_size: Optional[int] = 20,\n                                  login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" api for audit module and mark qa \"\"\"\n    history = await ChatSessionService.get_chat_history(chat_id, flow_id, id, page_size)\n    return resp_200(data=history)\n\n\n@router.get('/chat/messages/{conversationId}')\nasync def get_chat_messages_by_conversation_id(*, conversationId: str,\n                                               login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" api for getting chat messages by conversation id \"\"\"\n    messages = await ChatMessageDao.aget_messages_by_chat_id(chat_id=conversationId, limit=1000)\n    if not messages:\n        raise NotFoundError()\n\n    return resp_200([await WorkstationMessage.from_chat_message(message) for message in messages])\n\n\n@router.post('/chat/message/telemetry')\nasync def post_chat_message_telemetry(*,\n                                      message_id: int = Body(...),\n                                      operation_type: Literal['like', 'dislike', 'copy'] = Body(...),\n                                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" api for telemetry user feedback \"\"\"\n    message_info = await ChatMessageDao.aget_message_by_id(message_id)\n    if not message_info:\n        raise NotFoundError()\n    chat_info = await MessageSessionDao.async_get_one(message_info.chat_id)\n    if not chat_info:\n        raise NotFoundError()\n    await telemetry_service.log_event(user_id=login_user.user_id,\n                                      event_type=BaseTelemetryTypeEnum.MESSAGE_FEEDBACK,\n                                      trace_id=trace_id_var.get(),\n                                      event_data=MessageFeedbackEventData(\n                                          message_id=message_id,\n                                          app_id=chat_info.flow_id,\n                                          app_name=chat_info.flow_name,\n                                          app_type=ApplicationTypeEnum.SKILL,\n                                          operation_type=operation_type,\n                                      ))\n    return resp_200()\n"
  },
  {
    "path": "src/backend/bisheng/chat_session/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/chat_session/domain/chat.py",
    "content": "from typing import Optional, List\n\nfrom bisheng.api.v1.schema.chat_schema import ChatMessageHistoryResponse\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.database.models.session import MessageSessionDao\nfrom bisheng.user.domain.models.user import UserDao\n\n\nclass ChatSessionService:\n    \"\"\"Chat related services.\"\"\"\n\n    @staticmethod\n    async def get_chat_history(chat_id: str, flow_id: str, message_id: Optional[str] = None,\n                               page_size: Optional[int] = 20) -> List[ChatMessageHistoryResponse]:\n        \"\"\"Retrieve chat history for a user.\"\"\"\n        if not chat_id or not flow_id:\n            raise NotFoundError()\n        session_info = await MessageSessionDao.async_get_one(chat_id=chat_id)\n        if not session_info or session_info.flow_id != flow_id:\n            raise NotFoundError()\n\n        history = await ChatMessageDao.afilter_message_by_chat_id(chat_id=chat_id, flow_id=flow_id,\n                                                                  message_id=message_id, page_size=page_size)\n        if history:\n            user_info = await UserDao.aget_user(user_id=session_info.user_id)\n            history = ChatMessageHistoryResponse.from_chat_message_objs(history, user_info, session_info)\n        # Placeholder implementation\n        return history\n"
  },
  {
    "path": "src/backend/bisheng/common/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/constants/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/constants/enums/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/constants/enums/telemetry.py",
    "content": "from enum import Enum\n\n\nclass StatusEnum(str, Enum):\n    SUCCESS = 'success'\n    FAILED = 'failed'\n\n\n# Generalized application type enumeration\nclass ApplicationTypeEnum(str, Enum):\n    \"\"\"App Type Enumeration\"\"\"\n\n    # Workflow Apps\n    WORKFLOW = \"workflow\"\n    # Skill application\n    SKILL = \"skill\"\n    # Assistant App\n    ASSISTANT = \"assistant\"\n    # Inspiration App\n    LINSIGHT = \"linsight\"\n    # Daily Conversation App\n    DAILY_CHAT = \"daily_chat\"\n    # Knowledge Base Application\n    KNOWLEDGE_BASE = \"knowledge_base\"\n    # RAGBack\n    RAG_TRACEABILITY = \"rag_traceability\"\n    # Review Apps\n    EVALUATION = \"evaluation\"\n    # Model Connectivity Testing\n    MODEL_TEST = \"model_test\"\n    # ASR\n    ASR = \"asr\"\n    # TTS\n    TTS = \"tts\"\n\n    UNKNOWN = \"unknown\"\n\n\nclass BaseTelemetryTypeEnum(str, Enum):\n    \"\"\"Basic Telemetry Event Type Enumeration\"\"\"\n\n    # User Login Events\n    USER_LOGIN = \"user_login\"\n\n    # Tool Call Event\n    TOOL_INVOKE = \"tool_invoke\"\n\n    # Add Session Event\n    NEW_MESSAGE_SESSION = \"new_message_session\"\n\n    # File Parsing Event\n    FILE_PARSE = \"file_parse\"\n\n    # Delete Session Event\n    DELETE_MESSAGE_SESSION = \"delete_message_session\"\n\n    # New App Event\n    NEW_APPLICATION = \"new_application\"\n\n    # Edit App Event\n    EDIT_APPLICATION = \"edit_application\"\n\n    # Delete app event\n    DELETE_APPLICATION = \"delete_application\"\n\n    # Add Knowledge Base Event\n    NEW_KNOWLEDGE_BASE = \"new_knowledge_base\"\n\n    # Delete Knowledge Base Event\n    DELETE_KNOWLEDGE_BASE = \"delete_knowledge_base\"\n\n    # Knowledge Base File Upload Event\n    NEW_KNOWLEDGE_FILE = \"new_knowledge_file\"\n\n    # Knowledge Base File Delete Event\n    DELETE_KNOWLEDGE_FILE = \"delete_knowledge_file\"\n\n    # Session Message Feedback Event\n    MESSAGE_FEEDBACK = \"message_feedback\"\n\n    # Model Call Event\n    MODEL_INVOKE = \"model_invoke\"\n\n    # Number of online sessions\n    APPLICATION_ALIVE = \"application_alive\"\n\n    # Session Run Time\n    APPLICATION_PROCESS = \"application_process\"\n"
  },
  {
    "path": "src/backend/bisheng/common/constants/vectorstore_metadata.py",
    "content": "from bisheng.common.schemas.rag_schema import RagMetadataFieldSchema\n\nKNOWLEDGE_RAG_METADATA_SCHEMA = [\n    RagMetadataFieldSchema(field_name=\"document_id\", field_type=\"int64\", kwargs={\"nullable\": False}),\n    RagMetadataFieldSchema(field_name=\"document_name\", field_type=\"text\",\n                           kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"abstract\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"chunk_index\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"bbox\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"page\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"knowledge_id\", field_type=\"int64\", kwargs={\"nullable\": False}),\n    RagMetadataFieldSchema(field_name=\"upload_time\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"update_time\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"uploader\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"updater\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"user_metadata\", field_type=\"json\", kwargs={\"nullable\": True})\n]\n"
  },
  {
    "path": "src/backend/bisheng/common/dependencies/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/dependencies/core_deps.py",
    "content": "from typing import Generator, Any, AsyncGenerator\n\nfrom sqlmodel.ext.asyncio.session import AsyncSession, Session\n\n\n# db session\nasync def get_db_session() -> AsyncGenerator[AsyncSession, None]:\n    \"\"\"Get database session\"\"\"\n    from bisheng.core.database import get_database_connection\n    db_manager = await get_database_connection()\n    async with db_manager.async_session() as session:\n        yield session\n\n\n# sync db session\ndef get_sync_db_session() -> Generator[Session, None, None]:\n    \"\"\"Get a synchronous database session\"\"\"\n    from bisheng.core.database.manager import sync_get_database_connection\n\n    db_manager = sync_get_database_connection()\n    with db_manager.create_session() as session:\n        yield session\n"
  },
  {
    "path": "src/backend/bisheng/common/dependencies/user_deps.py",
    "content": "from bisheng.user.domain.services.auth import LoginUser\n\n\nclass UserPayload(LoginUser):\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/README.md",
    "content": "# Bisheng API 错误码说明文档\n\n## 错误码结构说明\n\n错误码前三位代表具体功能模块，后两位表示模块内部具体的报错。例如：10001\n\n## 基础错误码 (base.py)\n\n| 错误码 | 错误信息   | 说明      |\n|-----|--------|---------|\n| 403 | 暂无操作权限 | 未授权错误   |\n| 404 | 资源不存在  | 资源未找到错误 |\n| 500 | 服务器错误  | 服务器内部错误 |\n\n## 模块错误码详情\n\n### 1. 公共 - server.py\n\n| 错误码   | 错误信息                                           | 说明                |\n|-------|------------------------------------------------|-------------------|\n| 10001 | 未找到SFT服务                                       | SFT服务未配置或不可用      |\n| 10002 | 无效操作                                           | 请求的操作不被支持         |\n| 10003 | 资源下载失败                                         | 资源文件下载出现问题        |\n| 10004 | 未配置知识库embedding模型，请从工作台配置中设置                   | 知识库embedding模型未配置 |\n| 10005 | 知识库embedding模型不存在，请从工作台配置中设置                   | embedding模型已被删除   |\n| 10006 | 知识库embedding模型类型错误，请从工作台配置中设置                  | embedding模型类型不匹配  |\n| 10007 | 请联系管理员检查工作台向量检索模型状态                            | 向量检索模型状态异常        |\n| 10008 | 没有找到llm模型配置                                    | LLM模型配置缺失         |\n| 10009 | llm模型配置已被删除，请重新配置模型                            | LLM模型配置已被删除       |\n| 10010 | 服务提供方配置已被删除，请重新配置llm模型                         | 模型服务提供方被删除        |\n| 10011 | 只支持LLM类型的模型，不支持{model_type}类型的模型               | 模型类型不支持           |\n| 10012 | {server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线             |\n| 10013 | 初始化llm失败，请检查配置或联系管理员。错误信息：{exception}          | LLM初始化失败          |\n\n### 2. 模型训练模块 (101) - finetune.py\n\n| 错误码   | 错误信息              | 说明          |\n|-------|-------------------|-------------|\n| 10100 | 创建训练任务失败          | 微调训练任务创建失败  |\n| 10101 | 个人训练集和预置训练集最少选择一个 | 训练数据集未选择    |\n| 10102 | 任务不存在             | 训练任务不存在     |\n| 10103 | 任务状态错误            | 训练任务状态异常    |\n| 10104 | 任务取消失败            | 取消训练任务失败    |\n| 10105 | 任务删除失败            | 删除训练任务失败    |\n| 10106 | 任务发布失败            | 训练任务发布失败    |\n| 10107 | 模型名接口修改失败         | 修改模型名称失败    |\n| 10108 | 取消发布失败            | 取消模型发布失败    |\n| 10109 | 无效的训练参数           | 训练参数格式错误    |\n| 10110 | 模型名已存在            | 模型名称重复      |\n| 10120 | 训练文件不存在           | 训练数据文件丢失    |\n| 10125 | 获取GPU信息失败         | GPU资源信息获取失败 |\n| 10126 | 获取模型列表失败          | 模型列表查询失败    |\n\n### 3. 模型部署模块 (102) - model_deploy.py\n\n| 错误码   | 错误信息  | 说明       |\n|-------|-------|----------|\n| 10200 | 模型不存在 | 部署的模型不存在 |\n\n### 4. 组件模块 (103) - component.py\n\n| 错误码   | 错误信息  | 说明     |\n|-------|-------|--------|\n| 10300 | 组件已存在 | 组件名称重复 |\n| 10301 | 组件不存在 | 组件未找到  |\n\n### 5. 助手模块 (104) - assistant.py\n\n| 错误码   | 错误信息           | 说明           |\n|-------|----------------|--------------|\n| 10400 | 助手不存在          | 助手未找到        |\n| 10401 | 助手上线失败         | 助手部署失败       |\n| 10402 | 助手名称重复         | 助手名称已存在      |\n| 10403 | 助手已上线，不可编辑     | 上线状态的助手不允许编辑 |\n| 10410 | 工具名称已存在        | 工具类型名称重复     |\n| 10411 | 工具下的API不能为空    | 工具必须包含API    |\n| 10412 | 工具不存在          | 工具类型不存在      |\n| 10413 | 预置工具类别不可删除     | 系统预置工具不允许删除  |\n| 10420 | 该助手已被删除        | 助手已被删除       |\n| 10421 | 当前助手未上线，无法直接对话 | 助手未上线无法对话    |\n| 10422 | 助手推理模型列表为空     | 助手模型配置为空     |\n| 10423 | 未配置助手推理模型      | 助手推理模型未配置    |\n| 10499 | 助手服务异常         | 助手服务其他错误     |\n\n### 6. 技能服务模块 (105) - flow.py\n\n| 错误码   | 错误信息                  | 说明           |\n|-------|-----------------------|--------------|\n| 10500 | 未找到技能版本信息             | 技能版本不存在      |\n| 10501 | 当前正在使用版本无法删除          | 活跃版本不可删除     |\n| 10502 | 版本名已存在                | 版本名称重复       |\n| 10503 | 技能名重复                 | 技能名称已存在      |\n| 10520 | 技能不存在                 | 技能未找到        |\n| 10521 | 技能已上线，不可编辑            | 上线状态技能不可编辑   |\n| 10525 | 工作流已上线，不可编辑           | 上线状态工作流不可编辑  |\n| 10526 | 工作流初始化失败              | 工作流启动失败      |\n| 10527 | 工作流等待用户输入超时           | 用户输入等待超时     |\n| 10528 | 节点执行超过最大次数            | 节点重试次数超限     |\n| 10529 | 工作流名称重复               | 工作流名称已存在     |\n| 10530 | 模板名称已存在               | 模板名称重复       |\n| 10531 | <节点名称>功能已升级，需删除后重新拖入。 | 节点版本更新需要重新配置 |\n| 10532 | 工作流版本已升级，请联系创建者重新编排   | 工作流版本需要更新    |\n| 10540 | 服务器线程数已满，请稍候再试        | 服务器资源不足      |\n\n### 7. 用户模块 (106) - user.py\n\n| 错误码   | 错误信息                                                 | 说明        |\n|-------|------------------------------------------------------|-----------|\n| 10600 | 账号或密码错误                                              | 用户认证失败    |\n| 10601 | 您的密码已过期，请及时修改                                        | 密码过期提醒    |\n| 10602 | 用户尚未设置密码，请先联系管理员重置密码                                 | 用户未设置密码   |\n| 10603 | 当前密码错误                                               | 当前密码验证失败  |\n| 10604 | 您的账户已在另一设备上登录，此设备上的会话已被注销。\\n如果这不是您本人的操作，请尽快修改您的账户密码。 | 账户在其他设备登录 |\n| 10605 | 用户名已存在                                               | 用户名重复     |\n| 10606 | 用户组和角色不能为空                                           | 用户权限配置不完整 |\n| 10610 | 用户组内还有用户，不能删除                                        | 用户组非空无法删除 |\n\n### 8. 标签模块 (107) - tag.py\n\n| 错误码   | 错误信息     | 说明     |\n|-------|----------|--------|\n| 10700 | 标签已存在    | 标签名称重复 |\n| 10701 | 未找到对应的标签 | 标签不存在  |\n\n### 9. 模型管理模块 (108) - llm.py\n\n| 错误码   | 错误信息                | 说明          |\n|-------|---------------------|-------------|\n| 10800 | 服务提供方名称重复，请修改       | 服务提供方名称已存在  |\n| 10801 | 模型不可重复              | 模型名称重复      |\n| 10802 | 添加服务提供方失败，模型全部初始化失败 | 服务提供方添加完全失败 |\n| 10803 | 添加服务提供方失败，部分模型初始化失败 | 服务提供方添加部分失败 |\n\n### 10. 知识库模块 (109) - knowledge.py\n\n| 错误码   | 错误信息                          | 说明             |\n|-------|-------------------------------|----------------|\n| 10900 | 知识库名称重复                       | 知识库名称已存在       |\n| 10901 | 知识库必须选择一个embedding模型          | embedding模型未选择 |\n| 10910 | 当前知识库版本不支持修改分段，请创建新知识库后进行分段修改 | 知识库版本不支持分段修改   |\n| 10920 | 未配置QA知识库相似问模型                 | QA相似问模型未配置     |\n| 10930 | 该问题已存在                        | QA问题重复         |\n| 10940 | 当前有文件正在解析，不可复制                | 知识库文件解析中无法复制   |\n| 10950 | 不支持多个知识库的文件同时删除               | 批量删除限制         |\n| 10951 | 知识库重新构建中，不允许修改embedding模型     | 知识库重构期间无法修改模型  |\n\n### 11. 灵思模块 (110) - linsight.py\n\n| 错误码   | 错误信息                       | 说明         |\n|-------|----------------------------|------------|\n| 11010 | SOP文件格式不符合要求               | SOP文件格式错误  |\n| 11020 | 文件上传失败                     | 灵思文件上传失败   |\n| 11030 | 您的灵思使用次数已用完，请使用新的邀请码激活灵思功能 | 灵思使用次数耗尽   |\n| 11040 | 提交灵思用户问题失败                 | 用户问题提交失败   |\n| 11050 | 请联系管理员检查工作台向量检索模型状态        | 向量检索模型异常   |\n| 11060 | 指导手册检索失败，向量检索与关键词检索均不可用    | 检索服务不可用    |\n| 11070 | 指导手册检索失败                   | 指导手册查询失败   |\n| 11080 | 初始化灵思工作台工具失败               | 工作台工具初始化失败 |\n| 11090 | 灵思Bisheng LLM相关错误          | LLM服务错误    |\n| 11100 | 生成SOP内容失败                  | SOP内容生成失败  |\n| 11110 | 修改SOP内容失败                  | SOP内容修改失败  |\n| 11120 | 灵思会话版本已完成或正在执行，无法再次执行      | 会话版本状态冲突   |\n| 11130 | 开始执行灵思任务失败                 | 任务启动失败     |\n| 11140 | 获取灵思队列排队状态失败               | 队列状态查询失败   |\n| 11150 | 添加指导手册失败，向量存储添加数据失败        | 向量存储添加失败   |\n| 11160 | 更新指导手册失败，向量存储更新数据失败        | 向量存储更新失败   |\n| 11170 | 删除指导手册失败，向量存储删除数据失败        | 向量存储删除失败   |\n\n### 12. 工作台模块 (120) - workstation.py\n\n| 错误码   | 错误信息            | 说明         |\n|-------|-----------------|------------|\n| 12040 | 未找到web_search工具 | web搜索工具不存在 |\n| 12041 | 会话不存在           | 会话记录不存在    |\n| 12042 | 该智能体已被添加        | 智能体重复添加    |\n\n### 13. 对话聊天模块 (130) - chat.py\n\n| 错误码   | 错误信息                                     | 说明        |\n|-------|------------------------------------------|-----------|\n| 13001 | 该技能已被删除                                  | 技能已被删除    |\n| 13002 | 当前技能未上线，无法直接对话                           | 技能未上线无法对话 |\n| 13003 | 当前技能未编译通过，无法直接对话                         | 技能编译失败    |\n| 13004 | 后端服务异常                                   | 聊天服务异常    |\n| 13005 | LLM 技能执行错误. error={error}                | LLM执行错误   |\n| 13006 | 文档解析失败，点击输入框上传按钮重新上传\\n\\n{error}          | 文档解析失败    |\n| 13007 | Input data is parsed fail. error={error} | 输入数据解析失败  |\n\n### 14. QA模块 (140) - qa.py\n\n| 错误码   | 错误信息       | 说明    |\n|-------|------------|-------|\n| 14001 | 后台处理中，稍后再试 | 后台处理中 |\n\n### 15. 工具模块 (150) - tool.py\n\n| 错误码   | 错误信息   | 说明     |\n|-------|--------|--------|\n| 15000 | 工具名称重复 | 工具名称重复 |\n\n### 16. 数据集模块 (160) - dataset.py\n\n| 错误码   | 错误信息   | 说明      |\n|-------|--------|---------|\n| 16000 | 数据集已存在 | 数据集名称重复 |\n\n### 17. 数据看板模块 (170) - telemetry.py\n\n| 错误码   | 错误信息          | 说明            |\n|-------|---------------|---------------|\n| 17000 | 最多允许创建 20 个看板 | 最多允许创建 20 个看板 |\n\n## 错误码使用说明\n\n### 错误码继承关系\n\n所有错误码类都继承自 `BaseErrorCode` 基类，提供统一的错误处理机制。\n\n### 使用方式\n\n1. **抛出异常**: `raise ComponentExistError()`\n2. **返回响应**: `ComponentExistError.return_resp()`\n3. **HTTP异常**: `ComponentExistError.http_exception()`\n4. **SSE事件**: `ComponentExistError.to_sse_event()`\n5. **字典格式**: `error_instance.to_dict()`\n6. **WebSocket关闭**: `await error_instance.websocket_close_message(websocket)`\n\n### 自定义错误信息\n\n错误码支持自定义错误信息：\n\n```python\nraise ComponentExistError(msg=\"自定义错误信息\")\n```\n\n### 错误码扩展\n\n新增错误码时请遵循以下规范：\n\n1. 选择合适的模块代码前缀\n2. 错误码递增分配\n3. 提供清晰的错误描述\n4. 继承 `BaseErrorCode` 基类\n\n### 错误码接受格式\n\n* http_exception\n\n```json\n{\n  \"status_code\": 10012,\n  \"status_message\": \"{server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线\",\n  \"data\": {\n    \"exception\": \"堆栈错误信息,如果没有则为默认的status_message，# 这个字段必存在\",\n    #\n    自定义字段\n    \"server_name\": \"模型服务提供方名称\",\n    \"model_name\": \"模型名称\"\n  }\n}\n```\n\n* sse_event\n\n```json\n{\n  \"event\": \"error\",\n  \"data\": {\n    \"status_code\": 10012,\n    \"status_message\": \"{server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线\",\n    \"data\": {\n      \"exception\": \"堆栈错误信息,如果没有则为默认的status_message，# 这个字段必存在\",\n      #\n      自定义字段\n      \"server_name\": \"模型服务提供方名称\",\n      \"model_name\": \"模型名称\"\n    }\n  }\n}\n\n```"
  },
  {
    "path": "src/backend/bisheng/common/errcode/__init__.py",
    "content": "from .base import BaseErrorCode"
  },
  {
    "path": "src/backend/bisheng/common/errcode/assistant.py",
    "content": "from .base import BaseErrorCode\n\n\n# Component Modules Return error code, business code104\nclass AssistantNotExistsError(BaseErrorCode):\n    Code: int = 10400\n    Msg: str = 'Assistant does not exist'\n\n\nclass AssistantInitError(BaseErrorCode):\n    Code: int = 10401\n    Msg: str = 'Assistant onboarding failed: {exception}'\n\n\nclass AssistantNameRepeatError(BaseErrorCode):\n    Code: int = 10402\n    Msg: str = 'Duplicate assistant name'\n\n\nclass AssistantNotEditError(BaseErrorCode):\n    Code: int = 10403\n    Msg: str = 'Assistant is live and not editable'\n\n\n# The assistant has been deleted\nclass AssistantDeletedError(BaseErrorCode):\n    Code: int = 10420\n    Msg: str = 'The assistant has been deleted'\n\n\n# The assistant is currently not online and cannot talk directly\nclass AssistantNotOnlineError(BaseErrorCode):\n    Code: int = 10421\n    Msg: str = 'The assistant is currently not online and cannot talk directly'\n\n\n# Assistant reasoning model list is empty\nclass AssistantModelEmptyError(BaseErrorCode):\n    Code: int = 10422\n    Msg: str = 'Assistant reasoning model list is empty'\n\n\n# No assistant inference model configured\nclass AssistantModelNotConfigError(BaseErrorCode):\n    Code: int = 10423\n    Msg: str = 'No assistant inference model configured'\n\n\nclass AssistantAutoLLMError(BaseErrorCode):\n    Code: int = 10424\n    Msg: str = 'Assistant portrait auto-optimization model is not configured'\n\n\n# Other errors\nclass AssistantOtherError(BaseErrorCode):\n    Code: int = 10499\n    Msg: str = 'Assistant Service Exception'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/base.py",
    "content": "import json\n\nfrom fastapi import WebSocket\nfrom fastapi.exceptions import HTTPException\n\nfrom bisheng.common.schemas.api import UnifiedResponseModel\n\n\nclass BaseErrorCode(Exception):\n    # The first three digits of the error code represent the specific function module, and the last two digits represent the specific error report inside the module. For example,10001\n    Code: int\n    Msg: str\n\n    def __init__(self, exception: Exception = None, msg: str = None, code: int = None, **kwargs):\n        self.exception = exception\n        self.message = msg or self.Msg\n        self.code = code or self.Code\n        self.kwargs = kwargs\n        super().__init__(exception)\n\n    def __str__(self):\n        return str(self.exception) if self.exception else self.message\n\n    @classmethod\n    def return_resp(cls, msg: str = None, data: any = None) -> UnifiedResponseModel:\n        return UnifiedResponseModel(status_code=cls.Code, status_message=msg or cls.Msg,\n                                    data=data)\n\n    def return_resp_instance(self, data: any = None) -> UnifiedResponseModel:\n        data = data if data is not None else {\"exception\": str(self), **self.kwargs}\n\n        return UnifiedResponseModel(status_code=self.code, status_message=self.message,\n                                    data=data)\n\n    @classmethod\n    def http_exception(cls, msg: str = None) -> HTTPException:\n        return HTTPException(status_code=cls.Code, detail=msg or cls.Msg)\n\n    @classmethod\n    def to_sse_event(cls, msg: str = None, data: any = None, event: str = \"error\", **kwargs) -> dict:\n        data = data if data is not None else {\"exception\": cls.Msg, **kwargs}\n        return {\n            \"event\": event,\n            \"data\": json.dumps({\n                \"status_code\": cls.Code,\n                \"status_message\": msg or cls.Msg,\n                \"data\": data\n            })\n        }\n\n    def to_sse_event_instance(self, event: str = \"error\", data: any = None) -> dict:\n        data = data if data is not None else {\"exception\": str(self), **self.kwargs}\n        return {\n            \"event\": event,\n            \"data\": json.dumps({\n                \"status_code\": self.code,\n                \"status_message\": self.message,\n                \"data\": data\n            })\n        }\n\n    def to_sse_event_instance_str(self, event: str = \"error\", data: any = None) -> str:\n        data = data if data is not None else {\"exception\": str(self), **self.kwargs}\n        msg = json.dumps({\n            \"status_code\": self.code,\n            \"status_message\": self.message,\n            \"data\": data\n        }, ensure_ascii=False)\n        return f'event: {event}\\ndata: {msg}\\n\\n'\n\n    def to_dict(self, data: any = None) -> dict:\n        data = data if data is not None else {\"exception\": str(self), **self.kwargs}\n        return {\n            \"status_code\": self.code,\n            \"status_message\": self.message,\n            \"data\": data\n        }\n\n    def to_json_str(self, data: any = None) -> str:\n        data = data if data is not None else {\"exception\": str(self), **self.kwargs}\n        return json.dumps({\n            \"status_code\": self.code,\n            \"status_message\": self.message,\n            \"data\": data\n        }, ensure_ascii=False)\n\n    # websocket error message\n    async def websocket_close_message(self, websocket: WebSocket, close_ws: bool = True):\n        reason = {\n            \"status_code\": self.code,\n            \"status_message\": self.message,\n            \"data\": {\"exception\": str(self), **self.kwargs}\n        }\n        await websocket.send_json({\"category\": \"error\", \"type\": \"end\", \"message\": reason})\n        if close_ws:\n            await websocket.close(reason=self.message[:10])\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/chat.py",
    "content": "# Chat Related return error codes 130What/the beginning?\nfrom .base import BaseErrorCode\n\n\n# This skill has been deleted\nclass SkillDeletedError(BaseErrorCode):\n    Code = 13001\n    Msg = \"This skill has been deleted\"\n\n\n# The current skill is not online and cannot be spoken to directly\nclass SkillNotOnlineError(BaseErrorCode):\n    Code = 13002\n    Msg = \"The current skill is not online and cannot be spoken to directly\"\n\n\n# Current compilation failed\nclass SkillNotBuildError(BaseErrorCode):\n    Code = 13003\n    Msg = \"The current skill has not been compiled and passed, it is not possible to talk directly\"\n\n\n# Backend Service Exception\nclass ChatServiceError(BaseErrorCode):\n    Code = 13004\n    Msg = \"Backend Service Exception\"\n\n\n# LLM Skill execution error. error={str(e)}\nclass LLMExecutionError(BaseErrorCode):\n    Code = 13005\n    Msg = \"LLM Skill execution error. error={error}\"\n\n\n# Document parsing failed, click the input upload button to upload again\\n\\n{str(e)}\nclass DocumentParseError(BaseErrorCode):\n    Code = 13006\n    Msg = \"Document parsing failed, click the input upload button to upload again\\n\\n{error}\"\n\n\n# Input data is parsed fail. error={str(e)}\nclass InputDataParseError(BaseErrorCode):\n    Code = 13007\n    Msg = \"Input data is parsed fail. error={error}\"\n\n\nclass WorkflowOfflineError(BaseErrorCode):\n    Code = 13010\n    Msg = \"The current workflow is not online and cannot be chatted directly\"\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/component.py",
    "content": "from .base import BaseErrorCode\n\n\n# Component Modules Return error code, business code103\nclass ComponentExistError(BaseErrorCode):\n    Code: int = 10300\n    Msg: str = 'Component Exists'\n\n\nclass ComponentNotExistError(BaseErrorCode):\n    Code: int = 10301\n    Msg: str = 'Component does not exist'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/dataset.py",
    "content": "from bisheng.common.errcode import BaseErrorCode\n\n\nclass DatasetNameExistsError(BaseErrorCode):\n    \"\"\"Raised when a dataset with the given name already exists.\"\"\"\n    Code: int = 16000\n    Msg: str = 'Dataset name already exists'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/finetune.py",
    "content": "from .base import BaseErrorCode\n\n\n# finetuneTraining Module Return error code, business code101\nclass CreateFinetuneError(BaseErrorCode):\n    Code: int = 10100\n    Msg: str = 'Failed to create training task'\n\n\nclass TrainDataNoneError(BaseErrorCode):\n    Code: int = 10101\n    Msg: str = 'Individual Training Sets and Preset Training Sets Select at least one'\n\n\nclass NotFoundJobError(BaseErrorCode):\n    Code: int = 10102\n    Msg: str = 'Quest does not exist'\n\n\nclass JobStatusError(BaseErrorCode):\n    Code: int = 10103\n    Msg: str = 'Task status error'\n\n\nclass CancelJobError(BaseErrorCode):\n    Code: int = 10104\n    Msg: str = 'Task cancellation failed'\n\n\nclass DeleteJobError(BaseErrorCode):\n    Code: int = 10105\n    Msg: str = 'Task deletion failed'\n\n\nclass ExportJobError(BaseErrorCode):\n    Code: int = 10106\n    Msg: str = 'Task publishing failed'\n\n\nclass ChangeModelNameError(BaseErrorCode):\n    Code: int = 10107\n    Msg: str = 'Model name interface modification failed'\n\n\nclass UnExportJobError(BaseErrorCode):\n    Code: int = 10108\n    Msg: str = 'Failed to unpublish'\n\n\nclass InvalidExtraParamsError(BaseErrorCode):\n    Code: int = 10109\n    Msg: str = 'Invalid training parameters'\n\n\nclass ModelNameExistsError(BaseErrorCode):\n    Code: int = 10110\n    Msg: str = 'Model name already exists'\n\n\nclass TrainFileNotExistError(BaseErrorCode):\n    Code: int = 10120\n    Msg: str = 'Training file does not exist'\n\n\nclass GetGPUInfoError(BaseErrorCode):\n    Code: int = 10125\n    Msg: str = 'DapatkanGPUMessage failed'\n\n\nclass GetModelError(BaseErrorCode):\n    Code: int = 10126\n    Msg: str = 'Access to model list failed'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/flow.py",
    "content": "from .base import BaseErrorCode\n\n\n# Skill service related return error code, function module code:105\nclass NotFoundVersionError(BaseErrorCode):\n    Code: int = 10500\n    Msg: str = 'Skill version information not found'\n\n\nclass CurVersionDelError(BaseErrorCode):\n    Code: int = 10501\n    Msg: str = 'Version currently in use cannot be deleted'\n\n\nclass VersionNameExistsError(BaseErrorCode):\n    Code: int = 10502\n    Msg: str = 'Version name already exists'\n\n\nclass FlowNameExistsError(BaseErrorCode):\n    Code: int = 10503\n    Msg: str = 'Duplicate skill name'\n\n\nclass NotFoundFlowError(BaseErrorCode):\n    Code: int = 10520\n    Msg: str = 'Skill does not exist.'\n\n\nclass FlowOnlineEditError(BaseErrorCode):\n    Code: int = 10521\n    Msg: str = 'Skills are live and cannot be edited'\n\n\nclass WorkFlowOnlineEditError(BaseErrorCode):\n    Code: int = 10525\n    Msg: str = 'Workflow is live and not editable'\n\n\nclass WorkFlowInitError(BaseErrorCode):\n    Code: int = 10526\n    Msg: str = 'Workflow initialization failed'\n\n\nclass WorkFlowWaitUserTimeoutError(BaseErrorCode):\n    Code: int = 10527\n    Msg: str = 'Workflow timed out waiting for user input'\n\n\nclass WorkFlowNodeRunMaxTimesError(BaseErrorCode):\n    Code: int = 10528\n    Msg: str = 'Node exceeds maximum number of executions'\n\n\nclass WorkflowNameExistsError(BaseErrorCode):\n    Code: int = 10529\n    Msg: str = 'Duplicate workflow name'\n\n\nclass FlowTemplateNameError(BaseErrorCode):\n    Code: int = 10530\n    Msg: str = 'Template Name Already Exists'\n\n\nclass WorkFlowNodeUpdateError(BaseErrorCode):\n    Code: int = 10531\n    Msg: str = '<Node name>The feature has been upgraded and needs to be deleted and dragged back in.'\n\n\nclass WorkFlowVersionUpdateError(BaseErrorCode):\n    Code: int = 10532\n    Msg: str = 'The workflow version has been upgraded, please contact the creator to reschedule'\n\n\nclass WorkFlowTaskBusyError(BaseErrorCode):\n    Code: int = 10540\n    Msg: str = 'Server thread count is full, please try again later'\n\n\n# Workflow Task Other Errors\nclass WorkFlowTaskOtherError(BaseErrorCode):\n    Code: int = 10541\n    Msg: str = 'Workflow task execution failed'\n\n\nclass AppWriteAuthError(BaseErrorCode):\n    Code: int = 10599\n    Msg: str = 'No Apply Write Permission'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/http_error.py",
    "content": "from .base import BaseErrorCode\n\n\nclass UnAuthorizedError(BaseErrorCode):\n    Code: int = 403\n    Msg: str = 'No permission to operate'\n\n\nclass NotFoundError(BaseErrorCode):\n    Code: int = 404\n    Msg: str = 'This role does not exist - '\n\n\nclass ServerError(BaseErrorCode):\n    Code: int = 500\n    Msg: str = 'Server error'"
  },
  {
    "path": "src/backend/bisheng/common/errcode/knowledge.py",
    "content": "from .base import BaseErrorCode\n\n\n#  Return error code related to the knowledge base module, function module code:109\nclass KnowledgeExistError(BaseErrorCode):\n    Code: int = 10900\n    Msg: str = 'Duplicate Knowledge Base Name'\n\n\nclass KnowledgeNoEmbeddingError(BaseErrorCode):\n    Code: int = 10901\n    Msg: str = 'Knowledge Base must select oneembeddingModels'\n\n\nclass KnowledgeLLMError(BaseErrorCode):\n    Code: int = 10902\n    Msg: str = 'Documentation Knowledge Base Summary Model is no longer valid, please go to Model Management-Configure in System Model Settings.{exception}'\n\n\nclass KnowledgeChunkError(BaseErrorCode):\n    Code: int = 10910\n    Msg: str = 'The current Knowledge Base version does not support modifying segments, please create a new Knowledge Base and modify segments'\n\n\nclass KnowledgeFileEmptyError(BaseErrorCode):\n    Code: int = 10911\n    Msg: str = 'File resolution is empty'\n\n\nclass KnowledgeFileChunkMaxError(BaseErrorCode):\n    Code: int = 10912\n    Msg: str = 'Segmentation results are too long, try using more splitters in your custom strategy (ex. \\\\n、。、\\\\.) for segmentation'\n\n\nclass KnowledgeFileDamagedError(BaseErrorCode):\n    Code: int = 10913\n    Msg: str = 'The file may be corrupted and cannot be parsed, please check and upload again'\n\n\nclass KnowledgeFileNotSupportedError(BaseErrorCode):\n    Code: int = 10914\n    Msg: str = 'Parsing of this type of file is not supported, please check and upload again'\n\n\nclass KnowledgeEtl4lmTimeoutError(BaseErrorCode):\n    Code: int = 10915\n    Msg: str = 'etl4lmService busy, please upgradeetl4lmComputing power of the service'\n\n\nclass KnowledgeExcelChunkMaxError(BaseErrorCode):\n    Code: int = 10916\n    Msg: str = 'Segmentation results are too long, try reducing the number of table segmentation rows in your custom strategy'\n\n\nclass KnowledgeSimilarError(BaseErrorCode):\n    Code: int = 10920\n    Msg: str = 'Not configuredQAKnowledge Base Similarity Question Model'\n\n\nclass KnowledgeQAError(BaseErrorCode):\n    Code: int = 10930\n    Msg: str = 'This issue already exists'\n\n\nclass KnowledgeCPError(BaseErrorCode):\n    Code: int = 10940\n    Msg: str = 'A file is currently being parsed and cannot be copied'\n\n\nclass KnowledgeCPEmptyError(BaseErrorCode):\n    Code: int = 10941\n    Msg: str = 'Knowledge Base content is empty and cannot be copied'\n\n\n# Multiple knowledge base files are not supported for simultaneous deletion\nclass KnowledgeFileDeleteError(BaseErrorCode):\n    Code: int = 10950\n    Msg: str = 'Multiple knowledge base files are not supported for simultaneous deletion'\n\n\nclass KnowledgeRebuildingError(BaseErrorCode):\n    Code: int = 10951\n    Msg: str = 'Knowledge base is being rebuilt, modifications are not allowedembeddingModels'\n\n\nclass KnowledgePreviewError(BaseErrorCode):\n    Code: int = 10952\n    Msg: str = 'Document parsing failed'  # Failed to parse preview file\n\n\nclass KnowledgeFileFailedError(BaseErrorCode):\n    Code: int = 10953\n    Msg: str = 'File parsing failed: {exception}'\n\n\n# Is notQAThe knowledge base upon\nclass KnowledgeNotQAError(BaseErrorCode):\n    Code: int = 10960\n    Msg: str = 'Is notQAThe knowledge base upon'\n\n\nclass KnowledgeRecommendQuestionError(BaseErrorCode):\n    Code: int = 10961\n    Msg: str = 'The model returned an incorrect format: {message}'\n\n\n# Knowledge base does not exist\nclass KnowledgeNotExistError(BaseErrorCode):\n    Code: int = 10970\n    Msg: str = 'Knowledge base does not exist'\n\n\n# Knowledge base file does not exist\nclass KnowledgeFileNotExistError(BaseErrorCode):\n    Code: int = 10971\n    Msg: str = 'Knowledge base file does not exist'\n\n\n# Conflicts with built-in metadata field name\nclass KnowledgeMetadataFieldConflictError(BaseErrorCode):\n    Code: int = 10980\n    Msg: str = '{field_name} Conflicts with built-in metadata field name'\n\n\n# Metadata field already exists\nclass KnowledgeMetadataFieldExistError(BaseErrorCode):\n    Code: int = 10981\n    Msg: str = 'Meta data fields {field_name} already exists'\n\n\n# Metadata field does not exist\nclass KnowledgeMetadataFieldNotExistError(BaseErrorCode):\n    Code: int = 10982\n    Msg: str = 'Meta data fields {field_name} Does not exist'\n\n\n# Built-in metadata fields cannot be modified\nclass KnowledgeMetadataFieldImmutableError(BaseErrorCode):\n    Code: int = 10983\n    Msg: str = 'Built-in metadata fields {field_name} Cannot be modified'\n\n\n# Metadata value type conversion error\nclass KnowledgeMetadataValueTypeConvertError(BaseErrorCode):\n    Code: int = 10984\n    Msg: str = 'Meta data fields {field_name} Value type conversion error: {error_msg}'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/linsight.py",
    "content": "from bisheng.common.errcode.base import BaseErrorCode\n\n\nclass SopFileError(BaseErrorCode):\n    Code: int = 11010\n    Msg: str = 'SOPFile format does not meet requirements'\n\n\nclass SopShowcaseError(BaseErrorCode):\n    Code: int = 11011\n    Msg: str = 'SOPFailed to set featured case'\n\n\nclass FileUploadError(BaseErrorCode):\n    __doc__ = 'LinsightFailed to upload documents'\n    Code: int = 11020\n    Msg: str = 'Upload Failed'\n\n\n# Your Idea has run out of uses, please use the new invite code to activate the Idea feature\nclass LinsightUseUpError(BaseErrorCode):\n    Code: int = 11030\n    Msg: str = 'Your Idea has run out of uses, please use the new invite code to activate the Idea feature'\n\n\n# Failed to submit Idea User Issue\nclass LinsightQuestionError(BaseErrorCode):\n    Code: int = 11040\n    Msg: str = 'Failed to submit Idea User Issue'\n\n\n# Please contact the administrator to check the status of the workbench vector retrieval model\nclass LinsightVectorModelError(BaseErrorCode):\n    Code: int = 11050\n    Msg: str = 'Please contact the administrator to check the status of the workbench vector retrieval model'\n\n\n# Instruction manual retrieval failed, vector retrieval and keyword retrieval are not available\nclass LinsightDocSearchError(BaseErrorCode):\n    Code: int = 11060\n    Msg: str = 'Instruction manual retrieval failed, vector retrieval and keyword retrieval are not available'\n\n\n# Guidebook retrieval failed\nclass LinsightDocNotFoundError(BaseErrorCode):\n    Code: int = 11070\n    Msg: str = 'Guidebook retrieval failed'\n\n\n# Failed to initialize the Inspiration Workbench tool\nclass LinsightToolInitError(BaseErrorCode):\n    Code: int = 11080\n    Msg: str = 'Failed to initialize the Inspiration Workbench tool'\n\n\n# InspirationBisheng LLMRelated Errors\nclass LinsightBishengLLMError(BaseErrorCode):\n    Code: int = 11090\n    Msg: str = 'InspirationBisheng LLMRelated Errors'\n\n\n# BuatSOPContent failed\nclass LinsightGenerateSopError(BaseErrorCode):\n    Code: int = 11100\n    Msg: str = 'BuatSOPContent failed'\n\n\n# ChangeSOPContent failed\nclass LinsightModifySopError(BaseErrorCode):\n    Code: int = 11110\n    Msg: str = 'ChangeSOPContent failed'\n\n\n# The Inspiration session version has been completed or is being executed and cannot be executed again\nclass LinsightSessionVersionRunningError(BaseErrorCode):\n    Code: int = 11120\n    Msg: str = 'The Inspiration session version has been completed or is being executed and cannot be executed again'\n\n\n# Failed to start the Ideas task\nclass LinsightStartTaskError(BaseErrorCode):\n    Code: int = 11130\n    Msg: str = 'Failed to start the Ideas task'\n\n\n# Failed to get Ideas queue queue status\nclass LinsightQueueStatusError(BaseErrorCode):\n    Code: int = 11140\n    Msg: str = 'Failed to get Ideas queue queue status'\n\n\n# Failed to add instruction manual, failed to add data for vector store\nclass LinsightAddSopError(BaseErrorCode):\n    Code: int = 11150\n    Msg: str = 'Failed to add instruction manual, failed to add data for vector store'\n\n\n# Failed to update the instruction manual, vector store update data failed\nclass LinsightUpdateSopError(BaseErrorCode):\n    Code: int = 11160\n    Msg: str = 'Failed to update the instruction manual, vector store update data failed'\n\n\n# Failed to delete instruction manual, failed to delete data in vector store\nclass LinsightDeleteSopError(BaseErrorCode):\n    Code: int = 11170\n    Msg: str = 'Failed to delete instruction manual, failed to delete data in vector store'\n\n\nclass SopContentOverLimitError(BaseErrorCode):\n    Code: int = 11171\n    Msg: str = '{sop_name}The content is too long'\n\n\nclass InviteCodeInvalidError(BaseErrorCode):\n    Code: int = 11180\n    Msg: str = 'The invite code you entered is invalid'\n\n\nclass InviteCodeBindError(BaseErrorCode):\n    Code: int = 11190\n    Msg: str = 'Additional invite codes bound'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/llm.py",
    "content": "from .base import BaseErrorCode\n\n\n#  Model management module related return error code, function module code:108\nclass ServerExistError(BaseErrorCode):\n    Code: int = 10800\n    Msg: str = 'Service provider name is duplicated, please modify'\n\n\nclass ModelNameRepeatError(BaseErrorCode):\n    Code: int = 10801\n    Msg: str = 'Model is not repeatable'\n\n\nclass ServerAddAllError(BaseErrorCode):\n    Code: int = 10802\n    Msg: str = 'Failed to add service provider, failed to initialize all models'\n\n\nclass ServerAddError(BaseErrorCode):\n    Code: int = 10803\n    Msg: str = 'Failed to add service provider, some models failed to initialize'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/model_deploy.py",
    "content": "from .base import BaseErrorCode\n\n\n# RTModel Deployment Module Return error code, business code102\nclass NotFoundModelError(BaseErrorCode):\n    Code: int = 10200\n    Msg: str = 'Model does not exist'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/qa.py",
    "content": "# QAModule-related return error codes 140 What/the beginning?\nfrom .base import BaseErrorCode\n\n\n# Processing in the background, try again later\nclass BackendProcessingError(BaseErrorCode):\n    Code = 14001\n    Msg = \"Processing in the background, try again later\"\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/server.py",
    "content": "from .base import BaseErrorCode\n\n\n# RTService-related return error code, function module code:100\nclass NoSftServerError(BaseErrorCode):\n    Code: int = 10001\n    Msg: str = 'not foundSFTSERVICES'\n\n\n# Invalid nonce\nclass InvalidOperationError(BaseErrorCode):\n    Code: int = 10002\n    Msg: str = 'Invalid nonce'\n\n\n# Resource download failed\nclass ResourceDownloadError(BaseErrorCode):\n    Code: int = 10003\n    Msg: str = 'Resource download failed'\n\n\n# Knowledge Base Not Configuredembeddingmodel, please set from workbench configuration\nclass NoEmbeddingModelError(BaseErrorCode):\n    Code: int = 10004\n    Msg: str = 'Knowledge Base Not Configuredembeddingmodel, please set from workbench configuration'\n\n\n# The knowledge base uponembeddingModel does not exist, please set from workbench configuration\nclass EmbeddingModelNotExistError(BaseErrorCode):\n    Code: int = 10005\n    Msg: str = 'The knowledge base uponembeddingModel does not exist, please set from workbench configuration'\n\n\n# The knowledge base uponembeddingWrong model type, please set from workbench configuration\nclass EmbeddingModelTypeError(BaseErrorCode):\n    Code: int = 10006\n    Msg: str = 'The knowledge base uponembeddingWrong model type, please set from workbench configuration'\n\n\n# Please contact the administrator to check the status of the workbench vector retrieval model\nclass EmbeddingModelStatusError(BaseErrorCode):\n    Code: int = 10007\n    Msg: str = 'Please contact the administrator to check the status of the workbench vector retrieval model'\n\n\n# No bulkpost found in Trashllmmodel config\nclass NoLlmModelConfigError(BaseErrorCode):\n    Code: int = 10008\n    Msg: str = 'No bulkpost found in Trashllmmodel config'\n\n\n# llmModel configuration has been deleted, please reconfigure the model\nclass LlmModelConfigDeletedError(BaseErrorCode):\n    Code: int = 10009\n    Msg: str = 'llmModel configuration has been deleted, please reconfigure the model'\n\n\n# Service provider configuration has been deleted, please reconfigurellmModels\nclass LlmProviderDeletedError(BaseErrorCode):\n    Code: int = 10010\n    Msg: str = 'Service provider configuration has been deleted, please reconfigurellmModels'\n\n\n# Support onlyLLMModel of type, not supported{model_info.model_type}Type of model\nclass LlmModelTypeError(BaseErrorCode):\n    Code: int = 10011\n    Msg: str = 'Support onlyLLMModel of type, not supported{model_type}Type of model'\n\n\n# {server_info.name}under{model_info.model_name}The model is offline, please contact the administrator to launch the corresponding model\nclass LlmModelOfflineError(BaseErrorCode):\n    Code: int = 10012\n    Msg: str = '{server_name}under{model_name}The model is offline, please contact the administrator to launch the corresponding model'\n\n\n# InisialisasillmFailed, please check the configuration or contact the administrator.Error message:{e}\nclass InitLlmError(BaseErrorCode):\n    Code: int = 10013\n    Msg: str = 'InisialisasillmFailed, please check the configuration or contact the administrator.Error message:{exception}'\n\n\nclass NoAsrModelConfigError(BaseErrorCode):\n    Code: int = 10014\n    Msg: str = 'No bulkpost found in Trashasrmodel config'\n\n\nclass AsrModelConfigDeletedError(BaseErrorCode):\n    Code: int = 10015\n    Msg: str = 'asrModel configuration has been deleted, please reconfigure the model'\n\n\nclass AsrProviderDeletedError(BaseErrorCode):\n    Code: int = 10016\n    Msg: str = 'Service provider configuration has been deleted, please reconfigureasrModels'\n\n\nclass AsrModelTypeError(BaseErrorCode):\n    Code: int = 10017\n    Msg: str = 'Support onlyASRModel of type, not supported{model_type}Type of model'\n\n\nclass AsrModelOfflineError(BaseErrorCode):\n    Code: int = 10018\n    Msg: str = '{server_name}under{model_name}The model is offline, please contact the administrator to launch the corresponding model'\n\n\nclass InitAsrError(BaseErrorCode):\n    Code: int = 10019\n    Msg: str = 'InisialisasiasrFailed, please check the configuration or contact the administrator.Error message:{exception}'\n\n\nclass NoTtsModelConfigError(BaseErrorCode):\n    Code: int = 10020\n    Msg: str = 'No bulkpost found in Trashttsmodel config'\n\n\nclass TtsModelConfigDeletedError(BaseErrorCode):\n    Code: int = 10021\n    Msg: str = 'ttsModel configuration has been deleted, please reconfigure the model'\n\n\nclass TtsProviderDeletedError(BaseErrorCode):\n    Code: int = 10022\n    Msg: str = 'Service provider configuration has been deleted, please reconfigurettsModels'\n\n\nclass TtsModelTypeError(BaseErrorCode):\n    Code: int = 10023\n    Msg: str = 'Support onlyTTSModel of type, not supported{model_type}Type of model'\n\n\nclass TtsModelOfflineError(BaseErrorCode):\n    Code: int = 10024\n    Msg: str = '{server_name}under{model_name}The model is offline, please contact the administrator to launch the corresponding model'\n\n\nclass InitTtsError(BaseErrorCode):\n    Code: int = 10025\n    Msg: str = 'InisialisasittsFailed, please check the configuration or contact the administrator.Error message:{exception}'\n\n\nclass SystemConfigEmptyError(BaseErrorCode):\n    Code: int = 10030\n    Msg: str = 'System configuration cannot be empty'\n\n\nclass SystemConfigInvalidError(BaseErrorCode):\n    Code: int = 10031\n    Msg: str = 'The system configuration format is incorrect, please check the configuration content:{exception}'\n\n\nclass UploadFileEmptyError(BaseErrorCode):\n    Code: int = 10040\n    Msg: str = 'Uploaded file cannot be empty'\n\n\nclass UploadFileExtError(BaseErrorCode):\n    Code: int = 10041\n    Msg: str = 'The upload file format is not supported, please upload a file in the correct format'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/tag.py",
    "content": "from .base import BaseErrorCode\n\n\n# Label module related return error code, function module code:107\nclass TagExistError(BaseErrorCode):\n    Code: int = 10700\n    Msg: str = 'Tag already exist'\n\n\nclass TagNotExistError(BaseErrorCode):\n    Code: int = 10701\n    Msg: str = 'No tags found'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/telemetry.py",
    "content": "from bisheng.common.errcode import BaseErrorCode\n\n\nclass DashboardMaxError(BaseErrorCode):\n    Code: int = 17000\n    Msg: str = 'Creation is allowed at most 20 kanban boards'\n\n\nclass DashBoardShareAuthError(BaseErrorCode):\n    Code: int = 17005\n    Msg: str = 'No Kanban sharing permissions'\n\n\nclass QueryDatasetNotFoundError(BaseErrorCode):\n    Code: int = 17010\n    Msg: str = 'Corresponding dataset configuration not found'\n\n\nclass QueryVirtualMaxError(BaseErrorCode):\n    Code: int = 17011\n    Msg: str = 'Virtual indicators can only be queried individually'\n\n\nclass QueryMetricNotFoundError(BaseErrorCode):\n    Code = 17012\n    Msg = 'No corresponding metric configurations found'\n\n\nclass QueryAggregationNotFoundError(BaseErrorCode):\n    Code = 17013\n    Msg = 'No corresponding summary method found'\n\n\nclass QueryDimensionNotFoundError(BaseErrorCode):\n    Code = 17014\n    Msg = 'No corresponding dimension configurations found'\n\n\nclass QueryOperatorNotFoundError(BaseErrorCode):\n    Code = 17015\n    Msg = 'Corresponding operator configuration not found'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/tool.py",
    "content": "from bisheng.common.errcode import BaseErrorCode\n\n\nclass ToolTypeRepeatError(BaseErrorCode):\n    Code: int = 15000\n    Msg: str = 'Tool name already exists'\n\n\nclass ToolTypeEmptyError(BaseErrorCode):\n    Code: int = 15001\n    Msg: str = 'Under the toolAPITidak boleh kosong.'\n\n\nclass ToolTypeNotExistsError(BaseErrorCode):\n    Code: int = 15002\n    Msg: str = 'Tool does not exist.'\n\n\nclass ToolTypeNameError(BaseErrorCode):\n    Code: int = 15003\n    Msg: str = 'Name does not meet specification: at least1characters, cannot exceed1000characters'\n\n\nclass ToolTypeIsPresetError(BaseErrorCode):\n    Code: int = 15010\n    Msg: str = 'Preset tool category cannot be deleted'\n\n\nclass ToolSchemaDownloadError(BaseErrorCode):\n    Code: int = 15020\n    Msg: str = 'ToolsSchemaright of privacyurlDownload failed'\n\n\nclass ToolSchemaEmptyError(BaseErrorCode):\n    Code: int = 15021\n    Msg: str = 'ToolsSchemaTidak boleh kosong.'\n\n\nclass ToolSchemaParseError(BaseErrorCode):\n    Code: int = 15022\n    Msg: str = 'openapi schemaError parsing, please check if the content matchesjsonoryamlFormat: {exception}'\n\n\nclass ToolSchemaServerError(BaseErrorCode):\n    Code: int = 15023\n    Msg: str = 'serverhitting the nail on the headurlMust start withhttporhttpsWhat/the beginning?: {url}'\n\n\nclass ToolMcpSchemaError(BaseErrorCode):\n    Code: int = 15024\n    Msg: str = 'mcpTool configuration parsing failed, please check if the content matchesmcpConfigure Format: {exception}'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/user.py",
    "content": "from .base import BaseErrorCode\n\n\n# Return error code related to user module, function module code:106\nclass UserValidateError(BaseErrorCode):\n    Code: int = 10600\n    Msg: str = 'Account or password error'\n\n\nclass UserPasswordExpireError(BaseErrorCode):\n    Code: int = 10601\n    Msg: str = 'Your password has expired, please change it in time'\n\n\nclass UserNotPasswordError(BaseErrorCode):\n    Code: int = 10602\n    Msg: str = 'The user has not set a password, please contact the administrator to reset the password first'\n\n\nclass UserPasswordError(BaseErrorCode):\n    Code: int = 10603\n    Msg: str = 'wrong current password'\n\n\nclass UserLoginOfflineError(BaseErrorCode):\n    Code: int = 10604\n    Msg: str = \"Your account is logged in on another device and the session on this device has been logged out.\\nIf this wasn't you, please change your account password as soon as possible.\"\n\n\nclass UserNameAlreadyExistError(BaseErrorCode):\n    Code: int = 10605\n    Msg: str = 'User Name already exist'\n\n\nclass UserNeedGroupAndRoleError(BaseErrorCode):\n    Code: int = 10606\n    Msg: str = 'User group and role cannot be empty'\n\n\nclass CaptchaError(BaseErrorCode):\n    Code: int = 10607\n    Msg: str = 'Kode verifikasi salah'\n\n\nclass UserNameTooLongError(BaseErrorCode):\n    Code: int = 10608\n    Msg: str = 'Username length cannot exceed30characters'\n\n\nclass UserGroupNotDeleteError(BaseErrorCode):\n    Code: int = 10610\n    Msg: str = 'There are still users in the user group and cannot be deleted'\n\n\nclass UserForbiddenError(BaseErrorCode):\n    Code: int = 10620\n    Msg: str = 'The user is disabled, please contact the administrator'\n\n\nclass UserPasswordMaxTryError(BaseErrorCode):\n    Code: int = 10621\n    Msg: str = 'The account has been automatically disabled due to too many failed login attempts, please contact your administrator'\n\n\nclass UserGroupEmptyError(BaseErrorCode):\n    Code: int = 10630\n    Msg: str = 'User group cannot be empty'\n\n\nclass AdminUserUpdateForbiddenError(BaseErrorCode):\n    Code: int = 10640\n    Msg: str = 'Administrator user information cannot be modified'\n"
  },
  {
    "path": "src/backend/bisheng/common/errcode/workstation.py",
    "content": "from .base import BaseErrorCode\n\n\n# WorkstationModule-related return error code, function module code:120\n# No web_search tool found in database\nclass WebSearchToolNotFoundError(BaseErrorCode):\n    Code: int = 12040\n    Msg: str = 'not foundweb_searchTools'\n\n\n# Session does not exist\nclass ConversationNotFoundError(BaseErrorCode):\n    Code: int = 12041\n    Msg: str = 'Session does not exist'\n\n# This agent has been added\nclass AgentAlreadyExistsError(BaseErrorCode):\n    Code: int = 12042\n    Msg: str = 'This agent has been added'"
  },
  {
    "path": "src/backend/bisheng/common/exceptions/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/exceptions/auth.py",
    "content": "class AuthJWTException(Exception):\n    \"\"\"\n    Base except which all fastapi_jwt_auth errors extend\n    \"\"\"\n    pass\n\n\nclass JWTDecodeError(AuthJWTException):\n    \"\"\"\n    An error decoding a JWT\n    \"\"\"\n\n    def __init__(self, status_code: int, message: str):\n        self.status_code = status_code\n        self.message = message\n"
  },
  {
    "path": "src/backend/bisheng/common/init_data.py",
    "content": "import hashlib\nimport json\nimport os\nfrom typing import List\n\nfrom bisheng.telemetry_search.domain.init_dataset import init_dashboard_datasets\nfrom loguru import logger\nfrom sqlmodel import select, update\n\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.database import get_async_db_session, get_database_connection\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.database.constants import AdminRole, DefaultRole\nfrom bisheng.database.models.component import Component\nfrom bisheng.database.models.group import Group, DefaultGroup\nfrom bisheng.database.models.role import Role\nfrom bisheng.database.models.role_access import RoleAccess, AccessType, WebMenuResource\nfrom bisheng.database.models.template import Template\nfrom bisheng.tool.domain.models.gpts_tools import GptsTools\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsType\nfrom bisheng.user.domain.models.user import User\nfrom bisheng.user.domain.models.user_role import UserRoleDao\n\n\nasync def init_default_data():\n    \"\"\"Initialize Database\"\"\"\n    redis_client = await get_redis_client()\n    if await redis_client.asetNx('init_default_data', '1'):\n        try:\n            db_manager = await get_database_connection()\n            await db_manager.create_db_and_tables()\n            async with get_async_db_session() as session:\n                db_role = await session.exec(select(Role).limit(1))\n                db_role = db_role.all()\n                if not db_role:\n                    # Initialize system configuration, Admin has all permissions\n                    db_role = Role(id=AdminRole, role_name='System Admin', remark='System highest privileges',\n                                   group_id=DefaultGroup)\n                    session.add(db_role)\n                    db_role_normal = Role(id=DefaultRole, role_name='Regular users', remark='Regular users',\n                                          group_id=DefaultGroup)\n                    session.add(db_role_normal)\n                    # Grant to Normal User View access to the Build, Knowledge, Model menu bar\n                    session.add_all([\n                        RoleAccess(role_id=DefaultRole, type=AccessType.WEB_MENU.value,\n                                   third_id=WebMenuResource.BUILD.value),\n                        RoleAccess(role_id=DefaultRole, type=AccessType.WEB_MENU.value,\n                                   third_id=WebMenuResource.KNOWLEDGE.value),\n                        RoleAccess(role_id=DefaultRole, type=AccessType.WEB_MENU.value,\n                                   third_id=WebMenuResource.MODEL.value),\n                        RoleAccess(role_id=DefaultRole, type=AccessType.WEB_MENU.value,\n                                   third_id=WebMenuResource.BACKEND.value),\n                        RoleAccess(role_id=DefaultRole, type=AccessType.WEB_MENU.value,\n                                   third_id=WebMenuResource.FRONTEND.value),\n                    ])\n                    await session.commit()\n                # Add Default User Group\n                group = await session.exec(select(Group).limit(1))\n                group = group.all()\n                if not group:\n                    group = Group(id=DefaultGroup, group_name='Default user group', create_user=1, update_user=1)\n                    session.add(group)\n                    await session.commit()\n                    await session.refresh(group)\n\n                user = await session.exec(select(User).limit(1))\n                user = user.all()\n                if not user and settings.admin:\n                    md5 = hashlib.md5()\n                    md5.update(settings.admin.get('password').encode('utf-8'))\n                    user = User(\n                        user_id=1,\n                        user_name=settings.admin.get('user_name'),\n                        password=md5.hexdigest(),\n                    )\n                    session.add(user)\n                    await session.commit()\n                    await session.refresh(user)\n                    await UserRoleDao.set_admin_user(user.user_id)\n\n                component_db = await session.exec(select(Component).limit(1))\n                component_db = component_db.all()\n                if not component_db:\n                    db_components = []\n                    json_items = json.loads(read_from_conf('../database/data/component.json'))\n                    for item in json_items:\n                        for k, v in item.items():\n                            db_component = Component(name=k, user_id=1, user_name='admin', data=v)\n                            db_components.append(db_component)\n                    session.add_all(db_components)\n                    await session.commit()\n\n                # Initialize Preset Skill Template\n                templates = await session.exec(select(Template).limit(1))\n                templates = templates.all()\n                if not templates:\n                    json_items = json.loads(read_from_conf('../database/data/template.json'))\n                    for item in json_items:\n                        session.add(Template(**item))\n                    await session.commit()\n\n                # Initialize preset tools list\n                preset_tools = await session.exec(select(GptsTools).limit(1))\n                preset_tools = preset_tools.all()\n                if not preset_tools:\n                    preset_tools = []\n                    json_items = json.loads(read_from_conf('../database/data/t_gpts_tools.json'))\n                    for item in json_items:\n                        preset_tool = GptsTools(**item)\n                        preset_tools.append(preset_tool)\n                    session.add_all(preset_tools)\n                    await session.commit()\n                # Initialize Preset Tool Categories\n                preset_tools_type = await session.exec(select(GptsToolsType).limit(1))\n                preset_tools_type = preset_tools_type.all()\n                if not preset_tools_type:\n                    preset_tools_type = []\n                    json_items = json.loads(read_from_conf('../database/data/t_gpts_tools_type.json'))\n                    for item in json_items:\n                        preset_tool_type = GptsToolsType(**item)\n                        preset_tools_type.append(preset_tool_type)\n                    session.add_all(preset_tools_type)\n                    await session.commit()\n                    # Set the category the preset tool belongs to, needs to be consistent with the preset data, soidIs Fixed\n                    for i in range(1, 7):\n                        await session.exec(update(GptsTools).where(GptsTools.id == i).values(type=i))\n                    # Tools under the category of Sky Eye Examination\n                    tyc_types: List[int] = list(range(7, 18))\n                    await session.exec(\n                        update(GptsTools).where(GptsTools.id.in_(tyc_types)).values(type=7))\n                    # Instruments belonging to the financial category\n                    jr_types: List[int] = list(range(18, 28))\n                    await session.exec(\n                        update(GptsTools).where(GptsTools.id.in_(jr_types)).values(type=8))\n                    await session.commit()\n\n            # Initialize Databaseconfig\n            await settings.init_config()\n\n            # init dashboard data\n            await init_dashboard_datasets()\n        except Exception as exc:\n            # if the exception involves tables already existing\n            # we can ignore it\n            if 'already exists' not in str(exc):\n                logger.exception(f'Error creating DB and tables: {exc}')\n                raise RuntimeError('Error creating DB and tables') from exc\n        finally:\n            await redis_client.adelete('init_default_data')\n\n\ndef read_from_conf(file_path: str) -> str:\n    # Get current path\n    current_path = os.path.dirname(os.path.abspath(__file__))\n\n    file_path = os.path.join(current_path, file_path)\n\n    with open(file_path, 'r', encoding='utf-8') as f:\n        content = f.read()\n\n    return content\n\n\ndef upload_preset_minio_file():\n    \"\"\" Upload preset file tominio, To work with workflow templates \"\"\"\n    minio_client = get_minio_storage_sync()\n    # Upload it 「Multi-Assistant Parallelism+Serial Report Generation」 Required for workflow templatesdocxDoc.\n    template_data = read_from_conf('../database/data/0254d1808a5247d2a3ee0d0011819acb.docx')\n    minio_client.put_object_sync(bucket_name=minio_client.bucket,\n                                 object_name='workflow/report/0254d1808a5247d2a3ee0d0011819acb.docx',\n                                 file=template_data,\n                                 content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document')\n"
  },
  {
    "path": "src/backend/bisheng/common/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/models/base.py",
    "content": "from typing import Dict, Any\n\nfrom pydantic import ConfigDict\nfrom sqlmodel import SQLModel\n\n\nclass SQLModelSerializable(SQLModel):\n    model_config = ConfigDict(from_attributes=True)\n\n    @classmethod\n    def create_new(cls, **data) -> \"SQLModelSerializable\":\n        \"\"\" create a new instance \"\"\"\n        return cls(**data)\n\n    def model_dump(self, **kwargs) -> Dict[str, Any]:\n        \"\"\" default return mode is json \"\"\"\n        if 'mode' not in kwargs:\n            kwargs['mode'] = 'json'\n        return super().model_dump(**kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/common/models/config.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Optional\n\nfrom sqlalchemy import Column, DateTime, text, Text\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\n\nclass ConfigKeyEnum(Enum):\n    INIT_DB = 'initdb_config'  # Default System Configuration\n    HOME_TAGS = 'home_tags'  # Home LabelIDVertical\n    WEB_CONFIG = 'web_config'  # Configuration items for front-end customization\n    KNOWLEDGE_LLM = 'knowledge_llm'  # Knowledge Base Default Model Configuration\n    ASSISTANT_LLM = 'assistant_llm'  # Assistant Default Model Configuration\n    EVALUATION_LLM = 'evaluation_llm'  # Review default model configuration\n    WORKFLOW_LLM = 'workflow_llm'  # Workflow default model configuration\n    WORKSTATION = 'workstation'  # Workbench default model configuration\n    LINSIGHT_LLM = 'linsight_llm'  # Ideas Default Model Configuration\n\n\nclass ConfigBase(SQLModelSerializable):\n    key: str = Field(index=True, unique=True)\n    value: str = Field(sa_column=Column(Text))\n    comment: Optional[str] = Field(default=None, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP'), onupdate=text('CURRENT_TIMESTAMP')))\n\n\nclass Config(ConfigBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n    __table_args__ = {\n        \"mysql_charset\": \"utf8mb4\",\n        \"mysql_collate\": \"utf8mb4_unicode_ci\"\n    }\n\n\nclass ConfigRead(ConfigBase):\n    id: int\n\n\nclass ConfigCreate(ConfigBase):\n    pass\n\n\nclass ConfigUpdate(SQLModelSerializable):\n    key: str\n    value: Optional[str] = None\n    comment: Optional[str] = None\n\n\nclass ConfigDao(ConfigBase):\n\n    @classmethod\n    def get_config(cls, key: ConfigKeyEnum) -> Optional[Config]:\n        with get_sync_db_session() as session:\n            statement = select(Config).where(Config.key == key.value)\n            config = session.exec(statement).first()\n            return config\n\n    @classmethod\n    async def aget_config(cls, key: ConfigKeyEnum) -> Optional[Config]:\n        async with get_async_db_session() as session:\n            statement = select(Config).where(Config.key == key.value)\n            config = await session.exec(statement)\n            config = config.first()\n            return config\n\n    @classmethod\n    def insert_config(cls, config: Config) -> Config:\n        with get_sync_db_session() as session:\n            session.add(config)\n            session.commit()\n            session.refresh(config)\n            return config\n\n    @classmethod\n    async def async_insert_config(cls, config: Config) -> Config:\n        async with get_async_db_session() as session:\n            session.add(config)\n            await session.commit()\n            await session.refresh(config)\n            return config\n"
  },
  {
    "path": "src/backend/bisheng/common/repositories/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/repositories/implementations/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/repositories/implementations/base_repository_impl.py",
    "content": "from typing import Type, TypeVar, Optional, Any, Sequence, Union, List, Coroutine\n\nfrom sqlalchemy import Row, RowMapping, func\nfrom sqlmodel import SQLModel, select, Session, col\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\n\nT = TypeVar('T', bound=SQLModel)\nID = TypeVar('ID')\n\n\nclass BaseRepositoryImpl(BaseRepository[T, ID]):\n    \"\"\"RepositoryBasic Implementation\"\"\"\n\n    def __init__(self, session: Union[AsyncSession, Session], model_class: Type[T]):\n        self.session = session\n        self.model_class = model_class\n\n    async def save(self, entity: T) -> T:\n        \"\"\"Save Entity\"\"\"\n        self.session.add(entity)\n        await self.session.commit()\n        await self.session.refresh(entity)\n        return entity\n\n    async def bulk_save(self, entities: List[T]) -> List[T]:\n        \"\"\"Batch Save Entities\"\"\"\n        self.session.add_all(entities)\n        await self.session.commit()\n        for entity in entities:\n            await self.session.refresh(entity)\n        return entities\n\n    def save_sync(self, entity: T) -> T:\n        \"\"\"Synchronous Save Entity\"\"\"\n        self.session.add(entity)\n        self.session.commit()\n        self.session.refresh(entity)\n        return entity\n\n    def bulk_save_sync(self, entities: List[T]) -> List[T]:\n        \"\"\"Synchronize Batch Save Entities\"\"\"\n        self.session.add_all(entities)\n        self.session.commit()\n        for entity in entities:\n            self.session.refresh(entity)\n        return entities\n\n    async def find_by_id(self, entity_id: ID) -> Optional[T]:\n        \"\"\"accordingIDFind Entity\"\"\"\n        entity = await self.session.get(self.model_class, entity_id)\n        return entity\n\n    def find_by_id_sync(self, entity_id: ID) -> Optional[T]:\n        \"\"\"Sync byIDFind Entity\"\"\"\n        entity = self.session.get(self.model_class, entity_id)\n        return entity\n\n    async def find_one(self, **filters) -> Optional[T]:\n        \"\"\"Find a single entity\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n        result = await self.session.exec(query)\n        return result.first()\n\n    def find_one_sync(self, **filters) -> Optional[T]:\n        \"\"\"Synchronous lookup of a single entity\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n        result = self.session.exec(query)\n        return result.first()\n\n    async def find_by_ids(self, entity_ids: List[ID]) -> Sequence[Row[Any] | RowMapping | Any]:\n        \"\"\"According to multipleIDFind Entity\"\"\"\n        query = select(self.model_class).where(col(self.model_class.id).in_(entity_ids))\n        result = await self.session.exec(query)\n        return result.all()\n\n    def find_by_ids_sync(self, entity_ids: List[ID]) -> Sequence[Row[Any] | RowMapping | Any]:\n        \"\"\"Sync based on multipleIDFind Entity\"\"\"\n        query = select(self.model_class).where(col(self.model_class.id).in_(entity_ids))\n        result = self.session.exec(query)\n        return result.all()\n\n    async def find_all(self, **filters) -> Sequence[Row[Any] | RowMapping | Any]:\n        \"\"\"Find all entities\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n        result = await self.session.exec(query)\n        return result.all()\n\n    def find_all_sync(self, **filters) -> Sequence[Row[Any] | RowMapping | Any]:\n        \"\"\"Sync Find All Entities\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n        result = self.session.exec(query)\n        return result.all()\n\n    async def update(self, entity: T) -> T:\n        \"\"\"Update entities\"\"\"\n        merged_entity = await self.session.merge(entity)\n        await self.session.commit()\n        await self.session.refresh(merged_entity)\n        return merged_entity\n\n    def update_sync(self, entity: T) -> T:\n        \"\"\"Synchronize Update Entities\"\"\"\n        merged_entity = self.session.merge(entity)\n        self.session.commit()\n        self.session.refresh(merged_entity)\n        return merged_entity\n\n    async def delete(self, entity_id: ID) -> bool:\n        \"\"\"Delete entity role\"\"\"\n        entity = await self.find_by_id(entity_id)\n        if entity:\n            await self.session.delete(entity)\n            await self.session.commit()\n            return True\n        return False\n\n    def delete_sync(self, entity_id: ID) -> bool:\n        \"\"\"Synchronous deletion of entities\"\"\"\n        entity = self.find_by_id_sync(entity_id)\n        if entity:\n            self.session.delete(entity)\n            self.session.commit()\n            return True\n        return False\n\n    async def exists(self, entity_id: ID) -> bool:\n        \"\"\"Check if the entity exists\"\"\"\n        entity = await self.find_by_id(entity_id)\n        return entity is not None\n\n    def exists_sync(self, entity_id: ID) -> bool:\n        \"\"\"Synchronization Check Entity Existence\"\"\"\n        entity = self.find_by_id_sync(entity_id)\n        return entity is not None\n\n    async def count(self, **filters) -> int:\n        \"\"\"Number of statistical entities\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n\n        count_q = query.with_only_columns(func.count()).order_by(None).select_from(query.get_final_froms()[0])\n\n        result = await self.session.exec(count_q)\n\n        for count in result:\n            return count\n        return 0\n\n    def count_sync(self, **filters) -> int:\n        \"\"\"Number of entities synchronized\"\"\"\n        query = select(self.model_class)\n\n        # Apply Filter Criteria\n        for field, value in filters.items():\n            if hasattr(self.model_class, field):\n                query = query.where(getattr(self.model_class, field) == value)\n\n        count_q = query.with_only_columns(func.count()).order_by(None).select_from(query.get_final_froms()[0])\n\n        result = self.session.exec(count_q)\n\n        for count in result:\n            return count\n        return 0\n"
  },
  {
    "path": "src/backend/bisheng/common/repositories/implementations/config_repository_impl.py",
    "content": "from sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.models.config import Config\nfrom bisheng.common.repositories.implementations.base_repository_impl import BaseRepositoryImpl\nfrom bisheng.common.repositories.interfaces.config_repository import ConfigRepository\n\n\nclass ConfigRepositoryImpl(BaseRepositoryImpl[Config, str], ConfigRepository):\n    \"\"\"Shared link repository implementation\"\"\"\n\n    def __init__(self, session: AsyncSession):\n        super().__init__(session, Config)\n"
  },
  {
    "path": "src/backend/bisheng/common/repositories/interfaces/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/repositories/interfaces/base_repository.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import Generic, TypeVar, List, Optional, Dict, Any\n\nT = TypeVar('T')\nID = TypeVar('ID')\n\n\nclass BaseRepository(ABC, Generic[T, ID]):\n    \"\"\"RepositoryBase Interface\"\"\"\n\n    @abstractmethod\n    async def save(self, entity: T) -> T:\n        \"\"\"Save Entity\"\"\"\n        pass\n\n    @abstractmethod\n    async def bulk_save(self, entities: List[T]) -> List[T]:\n        \"\"\"Batch Save Entities\"\"\"\n        pass\n\n    @abstractmethod\n    def save_sync(self, entity: T) -> T:\n        \"\"\"Synchronous Save Entity\"\"\"\n        pass\n\n    @abstractmethod\n    def bulk_save_sync(self, entities: List[T]) -> List[T]:\n        \"\"\"Synchronize Batch Save Entities\"\"\"\n        pass\n\n    @abstractmethod\n    async def find_by_id(self, entity_id: ID) -> Optional[T]:\n        \"\"\"accordingIDFind Entity\"\"\"\n        pass\n\n    @abstractmethod\n    def find_by_id_sync(self, entity_id: ID) -> Optional[T]:\n        \"\"\"Sync byIDFind Entity\"\"\"\n        pass\n\n    @abstractmethod\n    async def find_one(self, **filters) -> Optional[T]:\n        \"\"\"Find a single entity\"\"\"\n        pass\n\n    @abstractmethod\n    def find_one_sync(self, **filters) -> Optional[T]:\n        \"\"\"Synchronous lookup of a single entity\"\"\"\n        pass\n\n    @abstractmethod\n    async def find_by_ids(self, entity_ids: List[ID]) -> List[T]:\n        \"\"\"According to multipleIDFind Entity\"\"\"\n        pass\n\n    @abstractmethod\n    def find_by_ids_sync(self, entity_ids: List[ID]) -> List[T]:\n        \"\"\"Sync based on multipleIDFind Entity\"\"\"\n        pass\n\n    @abstractmethod\n    async def find_all(self, **filters) -> List[T]:\n        \"\"\"Find all entities\"\"\"\n        pass\n\n    @abstractmethod\n    def find_all_sync(self, **filters) -> List[T]:\n        \"\"\"Sync Find All Entities\"\"\"\n        pass\n\n    @abstractmethod\n    async def update(self, entity: T) -> T:\n        \"\"\"Update entities\"\"\"\n        pass\n\n    @abstractmethod\n    def update_sync(self, entity: T) -> T:\n        \"\"\"Synchronize Update Entities\"\"\"\n        pass\n\n    @abstractmethod\n    async def delete(self, entity_id: ID) -> bool:\n        \"\"\"Delete entity role\"\"\"\n        pass\n\n    @abstractmethod\n    def delete_sync(self, entity_id: ID) -> bool:\n        \"\"\"Synchronous deletion of entities\"\"\"\n        pass\n\n    @abstractmethod\n    async def exists(self, entity_id: ID) -> bool:\n        \"\"\"Check if the entity exists\"\"\"\n        pass\n\n    @abstractmethod\n    def exists_sync(self, entity_id: ID) -> bool:\n        \"\"\"Synchronization Check Entity Existence\"\"\"\n        pass\n\n    @abstractmethod\n    async def count(self, **filters) -> int:\n        \"\"\"Number of statistical entities\"\"\"\n        pass\n\n    @abstractmethod\n    def count_sync(self, **filters) -> int:\n        \"\"\"Number of entities synchronized\"\"\"\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/common/repositories/interfaces/config_repository.py",
    "content": "from abc import ABC\n\nfrom bisheng.common.models.config import Config\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\n\n\nclass ConfigRepository(BaseRepository[Config, str], ABC):\n    \"\"\"Configure warehouse interfaces\"\"\"\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/common/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/schemas/api.py",
    "content": "from typing import Generic, TypeVar, Union, Any, List\n\nfrom pydantic import BaseModel\n\nDataT = TypeVar('DataT')\n\n\nclass UnifiedResponseModel(BaseModel, Generic[DataT]):\n    \"\"\"Unified Response Model\"\"\"\n    status_code: int\n    status_message: str\n    data: DataT = None\n\n\ndef resp_200(data: Union[list, dict, str, Any] = None,\n             message: str = 'SUCCESS') -> UnifiedResponseModel:\n    \"\"\"Success code\"\"\"\n    return UnifiedResponseModel(status_code=200, status_message=message, data=data)\n    # return data\n\n\ndef resp_500(code: int = 500,\n             data: Union[list, dict, str, Any] = None,\n             message: str = 'BAD REQUEST') -> UnifiedResponseModel:\n    \"\"\"Wrong logical response\"\"\"\n    return UnifiedResponseModel(status_code=code, status_message=message, data=data)\n\n\n# Obsolete paging data model, old data compatible retention\nclass PageList(BaseModel, Generic[DataT]):\n    list: List[DataT]\n    total: int\n\n\n# Paging Data Model, Use this uniformly in the future\nclass PageData(BaseModel, Generic[DataT]):\n    data: List[DataT]\n    total: int\n\n\ndef resp_501(code: int = 501,\n             data: Union[list, dict, str, Any] = None,\n             message: str = 'BAD REQUEST') -> UnifiedResponseModel:\n    \"\"\"Wrong logical response\"\"\"\n    return UnifiedResponseModel(status_code=code, status_message=message, data=data)\n\n\ndef resp_502(code: int = 502,\n             data: Union[list, dict, str, Any] = None,\n             message: str = 'BAD REQUEST') -> UnifiedResponseModel:\n    \"\"\"Wrong logical response\"\"\"\n    return UnifiedResponseModel(status_code=code, status_message=message, data=data)\n"
  },
  {
    "path": "src/backend/bisheng/common/schemas/rag_schema.py",
    "content": "from typing import Literal, Optional\n\nfrom pydantic import BaseModel\n\n\n# Custom Extended Fieldsschema\nclass RagMetadataFieldSchema(BaseModel):\n    field_name: str\n    field_type: Literal['text', 'boolean', 'int8', 'int16', 'int32', 'int64', 'float', 'double', 'json']\n    kwargs: Optional[dict] = None\n"
  },
  {
    "path": "src/backend/bisheng/common/schemas/telemetry/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/schemas/telemetry/base_telemetry_schema.py",
    "content": "import uuid\nfrom datetime import datetime, timezone\nfrom typing import List, Generic, TypeVar, Optional, Any\n\nfrom pydantic import BaseModel, Field, ConfigDict\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import BaseEventData\n\n\nclass UserGroupInfo(BaseModel):\n    user_group_id: int\n    user_group_name: str\n\n\nclass UserRoleInfo(BaseModel):\n    role_id: int\n    role_name: str\n    group_id: int\n\n\nclass UserContext(BaseModel):\n    user_id: int = Field(..., description=\"Unique identifier for the user\")\n    user_name: str = Field(..., description=\"Name of the user\")\n    user_group_infos: List[UserGroupInfo] = Field(default_factory=list)\n    user_role_infos: List[UserRoleInfo] = Field(default_factory=list)\n\n\nT_EventData = TypeVar(\"T_EventData\", bound=BaseEventData)\n\n\nclass BaseTelemetryEvent(BaseModel, Generic[T_EventData]):\n    \"\"\"Base model for telemetry events, including common fields and event-specific data.\"\"\"\n\n    model_config = ConfigDict(use_enum_values=True)\n\n    event_id: str = Field(default_factory=lambda: uuid.uuid4().hex)\n    event_type: BaseTelemetryTypeEnum = Field(..., description=\"Type of the telemetry event\")\n    timestamp: int = Field(default_factory=lambda: int(datetime.now(tz=timezone.utc).timestamp()))\n    user_context: UserContext = Field(..., description=\"User context information\")\n    trace_id: Optional[str] = Field(default=None, description=\"Trace identifier for correlating events\")\n    event_data: Optional[T_EventData] = Field(None, description=\"Event-specific data payload\")\n\n    def model_dump(self, *args: Any, **kwargs: Any) -> dict[str, Any]:\n        \"\"\"Override model_dump to exclude None values by default.\"\"\"\n\n        dict_data = super().model_dump(*args, **kwargs)\n\n        if self.event_data is None:\n            return dict_data\n\n        event_name = self.event_data.event_name\n\n        dict_data['event_data'] = {f\"{event_name}_{k}\": v for k, v in dict_data['event_data'].items()}\n\n        return dict_data\n"
  },
  {
    "path": "src/backend/bisheng/common/schemas/telemetry/event_data_schema.py",
    "content": "from typing import Literal\n\nfrom pydantic import BaseModel\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, StatusEnum, ApplicationTypeEnum\n\n\nclass BaseEventData(BaseModel):\n    \"\"\"All event-specific data models should inherit from this base class for type constraints.\"\"\"\n\n    @property\n    def event_name(self) -> BaseTelemetryTypeEnum:\n        return self._event_name\n\n\nclass UserLoginEventData(BaseEventData):\n    \"\"\"Data model for user login events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.USER_LOGIN\n\n    method: str\n\n\nclass NewMessageSessionEventData(BaseEventData):\n    \"\"\"Data model for new message session events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION\n\n    session_id: str\n    # Apply type\n    app_type: ApplicationTypeEnum\n    # Application name\n    app_name: str\n    # Applicationsid\n    app_id: str\n    # Conversation Source                PlatformsAPI\n    source: Literal[\"platform\", \"api\"]\n\n\nclass ToolInvocationEventData(BaseEventData):\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.TOOL_INVOKE\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n    tool_id: int\n    tool_name: str\n    tool_type: int  # What type of tools, such as:API、MCPPreset.\n    status: StatusEnum\n\n\nclass DeleteMessageSessionEventData(BaseEventData):\n    \"\"\"Data model for delete message session events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.DELETE_MESSAGE_SESSION\n\n    session_id: str\n\n\nclass NewApplicationEventData(BaseEventData):\n    \"\"\"Data model for new application events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.NEW_APPLICATION\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n\nclass NewKnowledgeBaseEventData(BaseEventData):\n    \"\"\"Data model for new knowledge base events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.NEW_KNOWLEDGE_BASE\n\n    kb_id: int\n    kb_name: str\n    kb_type: int\n\n\nclass FileParseEventData(BaseEventData):\n    \"\"\"Data model for file parse events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.FILE_PARSE\n\n    parse_type: str\n    status: Literal['success', 'failed', 'parse_failed']\n    app_type: ApplicationTypeEnum\n\n\nclass MessageFeedbackEventData(BaseEventData):\n    \"\"\"Data model for message feedback events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.MESSAGE_FEEDBACK\n\n    message_id: int\n    operation_type: Literal['like', 'dislike', 'copy']\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n\nclass ModelInvokeEventData(BaseEventData):\n    \"\"\"Data model for model invoke events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.MODEL_INVOKE\n\n    model_id: int\n    model_name: str\n    model_type: str\n    model_server_id: int\n    model_server_name: str\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n    start_time: int\n    end_time: int\n    first_token_cost_time: int  # ms\n\n    status: StatusEnum\n    is_stream: bool\n    input_token: int  # MasukkantokenQuantity\n    output_token: int  # OutputtokenQuantity\n    cache_token: int  # CeacletokenQuantity\n    total_token: int  # TotaltokenQuantity\n\n\nclass ApplicationAliveEventData(BaseEventData):\n    \"\"\"Data model for websocket alive events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.APPLICATION_ALIVE\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n    chat_id: str | None\n\n    start_time: int\n    end_time: int\n\n\nclass ApplicationProcessEventData(BaseEventData):\n    \"\"\"Data model for application invoke events.\"\"\"\n\n    _event_name: BaseTelemetryTypeEnum = BaseTelemetryTypeEnum.APPLICATION_PROCESS\n\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n    chat_id: str | None\n\n    start_time: int\n    end_time: int\n    process_time: int\n"
  },
  {
    "path": "src/backend/bisheng/common/services/__init__.py",
    "content": "from bisheng.common.services.telemetry.telemetry_service import telemetry_service\n\n__all__ = [\"telemetry_service\"]\n"
  },
  {
    "path": "src/backend/bisheng/common/services/config_service.py",
    "content": "import os\nfrom typing import List, Dict\n\nimport yaml\nfrom loguru import logger\n\nfrom bisheng.common.models.config import ConfigKeyEnum, Config\nfrom bisheng.common.repositories.implementations.config_repository_impl import ConfigRepositoryImpl\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.config.settings import Settings, PasswordConf, SystemLoginMethod, \\\n    WorkflowConf, LinsightConf, KnowledgeConf\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\nconfig_file = os.getenv('config', 'config.yaml')\n\n\ndef read_from_conf(file_path: str) -> str:\n    if '/' not in file_path:\n        # Get project main path\n        current_path = os.path.dirname(os.path.abspath(__file__))\n        # Look up the previous two levels of the catalog\n        current_path = os.path.dirname(os.path.dirname(current_path))\n\n        file_path = os.path.join(current_path, file_path)\n\n    with open(file_path, 'r', encoding='utf-8') as f:\n        content = f.read()\n\n    return content\n\n\ndef parse_key(keys: list[str], setting_str: str = None, include_key: bool = False) -> str:\n    # Setujukey  Back  yamlConfigure invalueAll strings, including comments\n    if not setting_str:\n        setting_str = read_from_conf(config_file)\n    setting_lines = setting_str.split('\\n')\n    value_of_key = [[] for _ in keys]\n    value_start_flag = [False for _ in keys]\n    prev_line = ''\n    for line in setting_lines:\n        for index, key in enumerate(keys):\n            if value_start_flag[index]:\n                if line.startswith('  ') or not line.strip() or line.startswith('#'):\n                    value_of_key[index].append(line)\n                else:\n                    value_start_flag[index] = False\n                    continue\n            if line.startswith(key + ':'):\n                value_start_flag[index] = True\n                if include_key:\n                    if prev_line.startswith('#'):\n                        value_of_key[index].append(prev_line)\n                    value_of_key[index].append(line)\n        prev_line = line\n    return ['\\n'.join(value) for value in value_of_key]\n\n\nclass ConfigService(Settings):\n    \"\"\"Configure service classes, inherited fromSettingsto provide configuration access\"\"\"\n\n    def __init__(self, **data):\n\n        super().__init__(**data)\n\n    @staticmethod\n    def env_var_constructor(loader, node):\n        value = loader.construct_scalar(node)  # PyYAML loaderFixed method for constructing a variable value from the current node\n        var_name = value.strip('${} ')  # Subtract variable values (e.g.${PATH}) Special characters and spaces before and after\n        env_val = os.getenv(var_name)  # Try to get the variable name in the environment variable (e.g.USER) corresponding to the value, if it is not obtained, it is empty\n        if env_val is None:\n            raise ValueError(f'Environment variable {var_name} not found')\n        return env_val\n\n    @classmethod\n    def load_settings_from_yaml(cls, file_path: str) -> 'ConfigService':\n        # Sign up for customYAMLConstructor to handle environment variables\n        yaml.SafeLoader.add_constructor('!env', cls.env_var_constructor)\n        # Get current path\n        current_path = os.path.dirname(os.path.abspath(__file__))\n        # Look up the previous two levels of the catalog\n        current_path = os.path.dirname(os.path.dirname(current_path))\n        # Check if a string is a valid path or a file name\n        if '/' not in file_path:\n            file_path = os.path.join(current_path, file_path)\n\n        with open(file_path, 'r', encoding='utf-8') as f:\n            settings_dict = yaml.safe_load(f)\n\n        with open(os.path.join(current_path, 'default_node.yaml'), 'r', encoding='utf-8') as node:\n            settings_dict.update(yaml.safe_load(node))\n        for key in settings_dict:\n            if key not in Settings.model_fields.keys():\n                raise KeyError(f'Key {key} not found in settings')\n            logger.debug(f'Loading {key} from {file_path}')\n\n        return ConfigService(**settings_dict)\n\n    async def init_config(self):\n        # Inisialisasiconfig\n\n        # First Passedyaml Get all of the profileskey\n        config_content = read_from_conf('initdb_config.yaml')\n        if not config_content:\n            return\n        async with get_async_db_session() as session:\n\n            config_repository = ConfigRepositoryImpl(session)\n            config = list(await config_repository.find_all())\n\n            db_keys = {conf.key: conf.value for conf in config}\n            all_config_key = 'initdb_config'\n            # There is no default configuration in the database, write the default configuration to the database\n            if db_keys.get(all_config_key, None) is None:\n                # Write profile to database\n                # Compatible with old configurations, old configurations and new profiles need to bemerge, Noold configDirectly combine the newconfigAdd to Database\n                new_config_content = self.merge_old_config(config_content, config, db_keys)\n                try:\n                    db_config = Config(key=all_config_key, value=new_config_content)\n                    session.add(db_config)\n                    await session.commit()\n                except Exception as e:\n                    logger.exception(e)\n                    await session.rollback()\n\n    @staticmethod\n    def merge_old_config(new_config: str, old_db_config: List[Config], old_db_keys: Dict[str, str]):\n        # No old configuration, write the new configuration directly to the database\n        if old_db_config.__len__() == 0:\n            return new_config\n        new_content = ''\n        # Start with the new configuration\n        config_yaml = yaml.safe_load(new_config)\n        for one in config_yaml.keys():\n            if old_db_keys.get(one, None) is None:  # is a new configuration, directly using the contents of the file\n                new_content += f'{parse_key([one], new_config, include_key=True)[0]}\\n\\n'\n            else:\n                new_content += f'{one}:\\n{old_db_keys[one]}\\n\\n'\n        return new_content\n\n    @staticmethod\n    def get_all_config():\n\n        redis_key = 'config:initdb_config'\n        cache = get_redis_client_sync().get(redis_key)\n        if cache:\n            return yaml.safe_load(cache)\n        else:\n            with get_sync_db_session() as session:\n                config_repository = ConfigRepositoryImpl(session)\n                initdb_config = config_repository.find_one_sync(key=ConfigKeyEnum.INIT_DB.value)\n\n                if initdb_config:\n                    get_redis_client_sync().set(redis_key, initdb_config.value, 100)\n                    return yaml.safe_load(initdb_config.value)\n                else:\n                    raise Exception('initdb_config not found, please check your system config')\n\n    @staticmethod\n    async def aget_all_config():\n\n        redis_key = 'config:initdb_config'\n        cache = await get_redis_client_sync().aget(redis_key)\n        if cache:\n            return yaml.safe_load(cache)\n        else:\n            async with get_async_db_session() as session:\n                config_repository = ConfigRepositoryImpl(session)\n                initdb_config = await config_repository.find_one(key=ConfigKeyEnum.INIT_DB.value)\n                if initdb_config:\n                    await get_redis_client_sync().aset(redis_key, initdb_config.value, 100)\n                    return yaml.safe_load(initdb_config.value)\n                else:\n                    raise Exception('initdb_config not found, please check your system config')\n\n    def get_knowledge(self) -> KnowledgeConf:\n        # Due to distributed requirements, configurations that can be changed are stored inmysqlso each time the configuration is read from themysqlRead in\n        all_config = self.get_all_config()\n        ret = all_config.get('knowledges', {})\n        return KnowledgeConf(**ret)\n\n    async def async_get_knowledge(self) -> KnowledgeConf:\n        # Due to distributed requirements, configurations that can be changed are stored inmysqlso each time the configuration is read from themysqlRead in\n        all_config = await self.aget_all_config()\n        ret = all_config.get('knowledges', {})\n        return KnowledgeConf(**ret)\n\n    def get_default_llm(self):\n        # Due to distributed requirements, configurations that can be changed are stored inmysqlso each time the configuration is read from themysqlRead in\n        all_config = self.get_all_config()\n        return all_config.get('default_llm', {})\n\n    async def get_password_conf(self) -> PasswordConf:\n        # Get password-related configuration items\n        all_config = await self.aget_all_config()\n        return PasswordConf(**all_config.get('password_conf', {}))\n\n    def get_system_login_method(self) -> SystemLoginMethod:\n        # Get password-related configuration items\n        all_config = self.get_all_config()\n        tmp = SystemLoginMethod(**all_config.get('system_login_method', {}))\n        tmp.bisheng_pro = os.getenv('BISHENG_PRO') == 'true'\n        return tmp\n\n    async def aget_system_login_method(self) -> SystemLoginMethod:\n        # Get password-related configuration items\n        all_config = await self.aget_all_config()\n        tmp = SystemLoginMethod(**all_config.get('system_login_method', {}))\n        tmp.bisheng_pro = os.getenv('BISHENG_PRO') == 'true'\n        return tmp\n\n    def get_workflow_conf(self) -> WorkflowConf:\n        # Get password-related configuration items\n        all_config = self.get_all_config()\n        return WorkflowConf(**all_config.get('workflow', {}))\n\n    def get_linsight_conf(self) -> LinsightConf:\n        # Get Ideas-related configuration items\n        all_config = self.get_all_config()\n        conf = LinsightConf(debug=self.linsight_conf.debug)\n        linsight_conf = all_config.get('linsight', {})\n        for k, v in linsight_conf.items():\n            setattr(conf, k, v)\n        return conf\n\n    def get_from_db(self, key: str):\n        # Get all of them firstkey\n        all_config = self.get_all_config()\n        return all_config.get(key, {})\n\n    async def aget_from_db(self, key: str):\n        # Get all of them firstkey\n        all_config = await self.aget_all_config()\n        return all_config.get(key, {})\n\n\nsettings = ConfigService.load_settings_from_yaml(config_file)\n"
  },
  {
    "path": "src/backend/bisheng/common/services/telemetry/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/services/telemetry/telemetry_service.py",
    "content": "import asyncio\nimport logging\nfrom asyncio import Semaphore\nfrom concurrent.futures import ThreadPoolExecutor\nfrom typing import Optional\n\nfrom elasticsearch import AsyncElasticsearch, Elasticsearch, exceptions as es_exceptions\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.schemas.telemetry.base_telemetry_schema import T_EventData, BaseTelemetryEvent, UserContext, \\\n    UserGroupInfo, UserRoleInfo\nfrom bisheng.core.database import get_async_db_session, get_sync_db_session\nfrom bisheng.core.search.elasticsearch.manager import get_statistics_es_connection, get_statistics_es_connection_sync\nfrom bisheng.user.domain.models.user import User\nfrom bisheng.user.domain.repositories.implementations.user_repository_impl import UserRepositoryImpl\n\nlogger = logging.getLogger(__name__)\n\nINDEX_MAPPING = {\n    \"mappings\": {  # Defining the indexed Mapping\n        \"properties\": {\n            \"event_id\": {\"type\": \"keyword\"},\n            \"event_type\": {\"type\": \"keyword\"},\n            \"trace_id\": {\"type\": \"keyword\"},\n            \"timestamp\": {\"type\": \"date\", \"format\": \"strict_date_optional_time||epoch_second\"},\n            \"user_context\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"user_id\": {\"type\": \"integer\"},\n                    \"user_name\": {\"type\": \"keyword\"},\n                    \"user_group_infos\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"user_group_id\": {\"type\": \"integer\"},\n                            \"user_group_name\": {\"type\": \"keyword\"}\n                        }\n                    },\n                    \"user_role_infos\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"role_id\": {\"type\": \"integer\"},\n                            \"role_name\": {\"type\": \"keyword\"},\n                            \"group_id\": {\"type\": \"integer\"},\n                        }\n                    }\n                }\n            },\n            \"event_data\": {\n                \"type\": \"object\",\n                \"dynamic\": True\n            }\n        }\n    }\n}\n\n\nclass BaseTelemetryService(object):\n    \"\"\"Telemetry Service for logging events to Elasticsearch\"\"\"\n    _index_name: str = \"base_telemetry_events\"\n    _index_initialized: bool = False\n\n    def __init__(self):\n        self._es_client: Optional[AsyncElasticsearch] = None\n        self._es_client_sync: Optional[Elasticsearch] = None\n\n        # Thread pool for synchronizing methods\n        self.thread_pool = ThreadPoolExecutor(max_workers=10)\n        # Create a semaphore to limit the number of concurrency\n        self._semaphore = Semaphore(10)\n\n    async def _ensure_index(self):\n        \"\"\"Initialize the Elasticsearch index safely\"\"\"\n        # Double-check locking pattern could be used here, but simple boolean check is \"good enough\" for loose consistency\n        if self._index_initialized:\n            return\n\n        if not self._es_client:\n            self._es_client = await get_statistics_es_connection()\n\n        try:\n            exists = await self._es_client.indices.exists(index=self._index_name)\n            if not exists:\n                # Incoming body Applications Mapping\n                await self._es_client.indices.create(index=self._index_name, body=INDEX_MAPPING)\n        except es_exceptions.RequestError as e:\n            # Ignore on concurrency creation \"resource_already_exists_exception\"\n            if \"resource_already_exists_exception\" not in str(e):\n                logger.error(f\"Failed to create ES index: {e}\")\n                raise e\n        except Exception as e:\n            logger.error(f\"ES Index check failed: {e}\")\n\n        self._index_initialized = True\n\n    def _ensure_index_sync(self):\n        if self._index_initialized:\n            return\n\n        if not self._es_client_sync:\n            self._es_client_sync = get_statistics_es_connection_sync()\n\n        try:\n            exists = self._es_client_sync.indices.exists(index=self._index_name)\n            if not exists:\n                # Incoming body\n                self._es_client_sync.indices.create(index=self._index_name, body=INDEX_MAPPING)\n        except es_exceptions.RequestError as e:\n            if \"resource_already_exists_exception\" not in str(e):\n                logger.error(f\"Failed to create ES index sync: {e}\")\n\n        self._index_initialized = True\n\n    @staticmethod\n    async def _init_user_context(user_id: int) -> UserContext:\n        async with get_async_db_session() as session:\n            user_repository = UserRepositoryImpl(session)\n            user = await user_repository.get_user_with_groups_and_roles_by_user_id(user_id)\n\n        if not user:\n            user = User(\n                user_id=user_id,\n                user_name=str(user_id)\n            )\n\n        if user.groups is None:\n            user.groups = []\n        if user.roles is None:\n            user.roles = []\n\n        user_context = UserContext(\n            user_id=user.user_id,\n            user_name=user.user_name,\n            user_group_infos=[\n                UserGroupInfo(\n                    user_group_id=group.id,\n                    user_group_name=group.group_name\n                ) for group in user.groups\n            ],\n            user_role_infos=[\n                UserRoleInfo(\n                    role_id=role.id,\n                    role_name=role.role_name,\n                    group_id=role.group_id,\n                ) for role in user.roles\n            ]\n        )\n        return user_context\n\n    @staticmethod\n    def _init_user_context_sync(user_id: int) -> UserContext:\n        with get_sync_db_session() as session:\n            user_repository = UserRepositoryImpl(session)\n            user = user_repository.get_user_with_groups_and_roles_by_user_id_sync(user_id)\n\n        if not user:\n            user = User(\n                user_id=user_id,\n                user_name=str(user_id)\n            )\n\n        if user.groups is None:\n            user.groups = []\n        if user.roles is None:\n            user.roles = []\n\n        user_context = UserContext(\n            user_id=user.user_id,\n            user_name=user.user_name,\n            user_group_infos=[\n                UserGroupInfo(\n                    user_group_id=group.id,\n                    user_group_name=group.group_name\n                ) for group in user.groups\n            ],\n            user_role_infos=[\n                UserRoleInfo(\n                    role_id=role.id,\n                    role_name=role.role_name,\n                    group_id=role.group_id,\n                ) for role in user.roles\n            ]\n        )\n        return user_context\n\n    @property\n    def index_name(self) -> str:\n        return self._index_name\n\n    # record event task\n    async def _record_event_task(self, user_id: int, event_type: BaseTelemetryTypeEnum, trace_id: str,\n                                 event_data: T_EventData = None):\n\n        # Get semaphore\n        async with self._semaphore:\n            try:\n                logger.debug(f\"Recording telemetry event for user_id {user_id}, event_type {event_type}\")\n                # get user info (With Exception Capture)\n                user_context = await self._init_user_context(user_id)\n                if not user_context:\n                    # Even if the user is not found, it is recommended to keep a log, but user_context Empty or default\n                    logger.warning(f\"User context missing for user_id {user_id}, logging anonymously\")\n                    # It is possible to decide according to your needs whether or not returnor build an empty Context\n\n                # Build. Event\n                event_info = BaseTelemetryEvent(\n                    event_type=event_type,\n                    user_context=user_context,  # Allow for None May need to be adjusted Schema Allow Optional\n                    trace_id=trace_id,\n                    event_data=event_data\n                )\n\n                # Send (Fire and Forget)\n                await self._es_client.index(index=self.index_name, document=event_info.model_dump())\n\n            except Exception as e:\n                logger.error(f\"Error in record_event_task: {e}\", exc_info=True)\n\n    async def log_event(self, user_id: int, event_type: BaseTelemetryTypeEnum, trace_id: str,\n                        event_data: T_EventData = None):\n        \"\"\"Log events asynchronously to Elasticsearch (Safe Version)\"\"\"\n        try:\n            # Ensuring ES CONNECT\n            if not self._es_client:\n                self._es_client = await get_statistics_es_connection()\n\n            # Make sure the index exists (Lazy Init)\n            if not self._index_initialized:\n                await self._ensure_index()\n\n            # Log events asynchronously\n            asyncio.create_task(\n                self._record_event_task(\n                    user_id=user_id,\n                    event_type=event_type,\n                    trace_id=trace_id,\n                    event_data=event_data\n                )\n            )\n\n        except Exception as e:\n            # Swallow exceptions, do not let the log system crash the main business\n            logger.error(f\"Failed to log telemetry event: {e}\", exc_info=True)\n\n    # record event task thread sync\n    def _record_event_task_sync(self, user_id: int, event_type: BaseTelemetryTypeEnum, trace_id: str,\n                                event_data: T_EventData = None):\n        try:\n            logger.debug(f\"Recording telemetry event sync for user_id {user_id}, event_type {event_type}\")\n            user_context = self._init_user_context_sync(user_id)\n\n            event_info = BaseTelemetryEvent(\n                event_type=event_type,\n                user_context=user_context,\n                trace_id=trace_id,\n                event_data=event_data\n            )\n            self._es_client_sync.index(index=self.index_name, document=event_info.model_dump())\n        except Exception as e:\n            logger.error(f\"Failed to log telemetry event sync in thread: {e}\", exc_info=True)\n\n    def log_event_sync(self, user_id: int, event_type: BaseTelemetryTypeEnum, trace_id: str,\n                       event_data: T_EventData = None):\n        \"\"\"Synchronize logging events to Elasticsearch (Safe Version)\"\"\"\n        try:\n            if not self._es_client_sync:\n                self._es_client_sync = get_statistics_es_connection_sync()\n\n            if not self._index_initialized:\n                self._ensure_index_sync()\n\n            # Perform synchronization tasks using thread pools\n            self.thread_pool.submit(\n                self._record_event_task_sync,\n                user_id,\n                event_type,\n                trace_id,\n                event_data\n            )\n        except Exception as e:\n            logger.error(f\"Failed to log telemetry event sync: {e}\", exc_info=True)\n\n\ntelemetry_service = BaseTelemetryService()\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/config/default_style.py",
    "content": "#  Parameter explanation. Note that colon or dash must be followed by a space and cannot be omitted.\n#\n#  font:\n#    default: Western fonts, default [Times New Roman]\n#    east-asia: Chinese font, default [Song Ti]\n#    size: Font Size (Default) [12]<g id=\"Bold\">Employer: </g>pt\n#    color: RGBColorful 16 Metric value, must be a string, default [\"000000\"] pure black\n#    extra: Extra styles, do not add these styles by default. The following styles are supported, effective if there is, ignored if there is none\n#    - bold bolded\n#    - italic Italic\n#    - underline LOW LINE\n#    - strike Strikethrough\n#  first-line-indent: First line indent, default [0], unit: times\n#  line-spacing: Line spacing, default [1.2] Unit: times, indicates line spacing is set to 1.2 Double row height,\n#  space:\n#    before Space before paragraph, default [0] pt\n#    after: Space after paragraph, default [0] pt\n\n# h1~h4Show1to4Level Title\nstyle_conf = {\n    \"h1\":\n        {\n            \"font\":\n                {\n                    \"default\": \"黑体\",\n                    \"east-asia\": \"黑体\",\n                    \"size\": 22\n                },\n            \"line-spacing\": 1.2,\n            \"space\":\n                {\n                    \"before\": 11,\n                    \"after\": 11\n                }\n        },\n    \"h2\":\n        {\n            \"font\":\n                {\n                    \"default\": \"黑体\",\n                    \"east-asia\": \"黑体\",\n                    \"size\": 18\n                },\n            \"line-spacing\": 1.2,\n            \"space\":\n                {\n                    \"before\": 11,\n                    \"after\": 11\n                }\n        },\n    \"h3\":\n        {\n            \"font\":\n                {\n                    \"default\": \"黑体\",\n                    \"east-asia\": \"黑体\",\n                    \"size\": 14\n                },\n            \"line-spacing\": 1.2,\n            \"space\":\n                {\n                    \"before\": 11,\n                    \"after\": 11\n                }\n        },\n    \"h4\":\n        {\n            \"font\":\n                {\n                    \"default\": \"Times New Roman\",\n                    \"east-asia\": \"楷体\",\n                    \"size\": 12,\n                    \"extra\":\n                        [\n                            \"bold\"\n                        ]\n                },\n            \"line-spacing\": 1.2,\n            \"space\":\n                {\n                    \"before\": 11,\n                    \"after\": 11\n                }\n        },\n    \"normal\":\n        {\n            \"font\":\n                {\n                    \"default\": \"Times New Roman\",\n                    \"east-asia\": \"宋体\",\n                    \"size\": 12,\n                    \"color\": \"000000\"\n                },\n            \"line-spacing\": 1.3,\n            \"space\":\n                {\n                    \"before\": 7,\n                    \"after\": 7\n                }\n        }\n}\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/markdocx.py",
    "content": "from bisheng.common.utils.markdown_cmpnt.md_to_docx.config.default_style import style_conf\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.parser.md_parser import md2html\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.provider.docx_processor import DocxProcessor\n\n\nclass MarkDocx:\n    def __init__(self):\n        self.docx_processor = DocxProcessor(style_conf=style_conf)\n\n    def __call__(self, md_input: str):\n        \"\"\"\n        Convert markdown file to docx file\n        :param md_input:\n        :return:\n        \"\"\"\n\n        html_text = md2html(md_input)\n\n        # BuatdocxDoc.\n        docx_file_byte, title_text = self.docx_processor.html2docx(html_text)\n\n        return docx_file_byte, title_text"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/parser/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/parser/ext_md_syntax.py",
    "content": "from markdown.inlinepatterns import SimpleTagInlineProcessor\nfrom markdown.extensions import Extension\n\n\nclass ExtMdSyntax(Extension):\n    \"\"\"\n    Extended Format Parsing\n    \"\"\"\n    def extendMarkdown(self, md):\n        # ==With Highlighted Text==\n        md.inlinePatterns.register(SimpleTagInlineProcessor(r'()==(.+?)==', 'highlight'), 'highlight', 175)\n        # ~~Strikethrough~~\n        md.inlinePatterns.register(SimpleTagInlineProcessor(r'()~~(.+?)~~', 'strike'), 'strike', 2)\n        # ^Subscript and superscript^\n        md.inlinePatterns.register(SimpleTagInlineProcessor(r'()\\^(.+?)\\^', 'sup'), 'sup', 188)\n        # ~Subscript~\n        md.inlinePatterns.register(SimpleTagInlineProcessor(r'()~(.+?)~', 'sub'), 'sub', 1)\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/parser/md_parser.py",
    "content": "import markdown\n\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.parser.ext_md_syntax import ExtMdSyntax\n\n\ndef md2html(in_md: str):\n    \"\"\"\n    Convert markdown file to html file\n    :param in_md:\n    :return:\n    \"\"\"\n    html = markdown.markdown(in_md, extensions=[ExtMdSyntax(), 'tables', 'sane_lists', 'fenced_code'])\n\n    return f\"\"\"<head><meta charset=\"utf-8\"></head>\\n<body>\\n{html}</body>\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/provider/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/provider/docx_plus.py",
    "content": "import docx\nfrom docx.shared import RGBColor\nfrom docx.enum.dml import MSO_THEME_COLOR_INDEX\n\ndef add_hyperlink(paragraph, url, text):\n    \"\"\"\n    Reference from：https://github.com/python-openxml/python-docx/issues/384\n\n    A function that places a hyperlink within a paragraph object.\n    :param paragraph: The paragraph we are adding the hyperlink to.\n    :param url: A string containing the required url\n    :param text: The text displayed for the url\n    :return: The hyperlink object\n    \"\"\"\n    # This gets access to the document.xml.rels file and gets a new relation id value\n    part = paragraph.part\n    r_id = part.relate_to(url, docx.opc.constants.RELATIONSHIP_TYPE.HYPERLINK, is_external=True)\n    # Create the w:hyperlink tag and add needed values\n    hyperlink = docx.oxml.shared.OxmlElement('w:hyperlink')\n    hyperlink.set(docx.oxml.shared.qn('r:id'), r_id, )\n    # Create a w:r element\n    new_run = docx.oxml.shared.OxmlElement('w:r')\n    # Create a new w:rPr element\n    rPr = docx.oxml.shared.OxmlElement('w:rPr')\n    # Join all the xml elements together add add the required text to the w:r element\n    new_run.append(rPr)\n    if text:\n        new_run.text = text\n    else:\n        new_run.text = url\n    # new_run.font.color.rgb = RGBColor(0,0,255)\n    hyperlink.append(new_run)\n    paragraph._p.append(hyperlink)\n    # paragraph.text = text\n\n    r = paragraph.add_run()\n    r._r.append(hyperlink)\n    # A workaround for the lack of a hyperlink style (doesn't go purple after using the link)\n    # Delete this if using a template that has the hyperlink style in it\n    r.font.color.theme_color = MSO_THEME_COLOR_INDEX.HYPERLINK\n    r.font.color.rgb = RGBColor(0, 0, 255)\n    r.font.underline = True\n    return hyperlink\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/provider/docx_processor.py",
    "content": "# noinspection PyProtectedMember\n#\nimport io\nimport re\nfrom socket import socket\nfrom urllib.error import HTTPError, URLError\nfrom urllib.request import urlopen\n\nfrom bs4 import BeautifulSoup\nfrom docx import Document\nfrom docx.enum.text import *\nfrom docx.oxml import parse_xml\nfrom docx.oxml.ns import nsdecls\nfrom docx.shared import Inches, RGBColor, Pt\nfrom docx.table import Table\nfrom docx.text.paragraph import Paragraph\nfrom docx.text.run import Run\n\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.provider.docx_plus import add_hyperlink\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.provider.style_manager import StyleManager\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.utils.style_enum import MDX_STYLE\n\n\nclass DocxProcessor:\n    def __init__(self, style_conf: dict, debug_state: bool = False, show_image_desc: bool = True):\n        \"\"\"\n        InisialisasiDocxProcessor\n        :param style_conf: Style Configuration Dictionary\n        :param debug_state: Whether to turn on debug mode\n        :param show_image_desc: Whether to display the description of the picture, i.e. `![desc](src/img)` II descThe contents of the\n        \"\"\"\n        self.document = Document()\n        self.debug_state = debug_state\n        self.show_image_desc = show_image_desc\n        if style_conf is not None:\n            StyleManager(self.document, style_conf).init_styles()\n\n    def debug(self, *args):\n        \"\"\"Debug Output\"\"\"\n        if self.debug_state:\n            print(*args)\n\n    # h1, h2, ...\n    def add_heading(self, content: str, tag: str):\n        level: int = int(tag.__getitem__(1))\n        p = self.document.add_paragraph(content, style=\"Heading%d\" % level)\n        # Force title not pagination\n        p.paragraph_format.page_break_before = False\n        p.paragraph_format.keep_with_next = True\n        return p\n\n    def add_run(self, p: Paragraph, content: str, char_style: str = \"plain\"):\n        # fixme Sentences with more than one style in a row are ignored, such as:\n        # <u>**Bold and*Italic*Underline again**</u>\n        self.debug(\"[%s]:\" % char_style, content)\n        run = p.add_run(content)\n\n        # Standardized label name - will be HTML5 Label mapping to standard styles\n        style_map = {\n            'b': 'strong',      # <b> -> Bold\n            'i': 'em',          # <i> -> Italic\n            'del': 'strike',    # <del> -> Strikethrough\n            'mark': 'highlight' # <mark> -> Gao Liang\n        }\n        char_style = style_map.get(char_style, char_style)\n\n        # Should not be used in the form of run.bold = (char_style==\"strong\") to be\n        # Because there is no explicit bolding, it does not mean that the whole paragraph is not bold.\n        if char_style == \"strong\":\n            run.bold = True\n        if char_style == \"em\":\n            run.italic = True\n        if char_style == \"u\":\n            run.underline = True\n        if char_style == \"strike\":\n            run.font.strike = True\n        if char_style == \"sub\":\n            run.font.subscript = True\n        if char_style == \"sup\":\n            run.font.superscript = True\n        run.font.highlight_color = WD_COLOR_INDEX.YELLOW if char_style == \"highlight\" else None\n\n        # if char_style == \"code\":\n        #     run.font.name = \"Consolas\"\n\n    def add_code_block(self, pre_tag):\n        # TODO Code-Block Styles\n        # TODO Set the Chinese font in the code block (table), it seems that it can only be specified by Chinese fonts are styled to get there.\n        code_table = self.document.add_table(0, 1, style=MDX_STYLE.TABLE)\n        row_cells = code_table.add_row().cells\n\n        # Security check: Make sure the code block has content\n        if pre_tag.contents and len(pre_tag.contents) > 0 and pre_tag.contents[0].string:\n            code_text = pre_tag.contents[0].string.rstrip('\\n')\n            run = row_cells[0].paragraphs[0].add_run(code_text)\n            run.font.name = \"Consolas\"\n        else:\n            # If the code block is empty, add a blank placeholder\n            run = row_cells[0].paragraphs[0].add_run(\"\")\n            run.font.name = \"Consolas\"\n\n    def add_picture(self, img_tag, parent_paragraph: Paragraph = None):\n        \"\"\"\n        Adding Images to Documents\n        :param img_tag: Images Tab\n        :param parent_paragraph: Parent paragraph. If provided,Images will be embedded in the paragraph;Otherwise create a new standalone paragraph\n        \"\"\"\n        # If no parent paragraph is provided,Create a new standalone paragraph(Appear from center)\n        if parent_paragraph is None:\n            p: Paragraph = self.document.add_paragraph()\n            p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER\n            p.paragraph_format.first_line_indent = 0\n        else:\n            # Use provided parent paragraph(Embedded Mode)\n            p = parent_paragraph\n\n        run: Run = p.add_run()\n\n        img_src: str\n        scale: float = 100  # Highest priority, unit %\n        width_px: int = 100\n        height_px: int = 100\n\n        # Set width\n        if img_tag.get(\"style\"):\n            style_content: str = img_tag[\"style\"]\n            img_attr: list = style_content.strip().split(\";\")\n            # print(img_attr)\n            attr: str\n            for attr in img_attr:\n                if attr.find(\"width\") != -1:\n                    # TODO <g id=\"Bold\">Medical Treatment:</g> style Medium Width and Height Properties\n                    width_px = int(re.findall(r\"\\d+\", attr)[0])\n                if attr.find(\"height\") != -1:\n                    height_px = int(re.findall(r\"\\d+\", attr)[0])\n                if attr.find(\"zoom\") != -1:\n                    scale = int(re.findall(r\"\\d+\", attr)[0])\n\n        if img_tag[\"src\"] != \"\":\n            img_src = img_tag[\"src\"]\n            # webauthn\n            if img_src.startswith(\"http://\") or img_src.startswith(\"https://\"):\n                print(\"[IMAGE] fetching:\", img_src)\n                try:\n                    image_bytes = urlopen(img_src, timeout=10).read()\n                    data_stream = io.BytesIO(image_bytes)\n                    run.add_picture(data_stream, width=Inches(5.7 * scale / 100))\n                except HTTPError as e:\n                    print(f\"[HTTP ERROR] {e.code}: {img_src}\")\n                except socket.timeout:\n                    print(f\"[TIMEOUT] Image load timeout: {img_src}\")\n                except URLError as e:\n                    print(f\"[URL ERROR] Failed to fetch image: {e.reason} - {img_src}\")\n                except Exception as e:\n                    print(f\"[RESOURCE ERROR] {type(e).__name__}: {e} - {img_src}\")\n            else:\n                # Location Image\n                try:\n                    run.add_picture(img_src, width=Inches(5.7 * scale / 100))\n                except FileNotFoundError:\n                    print(f\"[FILE ERROR] Image not found: {img_src}\")\n                except Exception as e:\n                    print(f\"[RESOURCE ERROR] Failed to load image: {type(e).__name__}: {e} - {img_src}\")\n        else:\n            # webauthn\n            img_src = img_tag[\"title\"]\n            print(\"[IMAGE] fetching:\", img_src)\n            try:\n                image_bytes = urlopen(img_src, timeout=10).read()\n                data_stream = io.BytesIO(image_bytes)\n                run.add_picture(data_stream, width=Inches(5.7 * scale / 100))\n            except HTTPError as e:\n                print(f\"[HTTP ERROR] {e.code}: {img_src}\")\n            except socket.timeout:\n                print(f\"[TIMEOUT] Image load timeout: {img_src}\")\n            except URLError as e:\n                print(f\"[URL ERROR] Failed to fetch image: {e.reason} - {img_src}\")\n            except Exception as e:\n                print(f\"[RESOURCE ERROR] {type(e).__name__}: {e} - {img_src}\")\n\n        # If you choose to display an image description, the description will appear below the image\n        # Note: Add descriptions only in standalone paragraph mode(Avoid interrupting paragraph flow)\n        if parent_paragraph is None and self.show_image_desc and img_tag.get(\"alt\"):\n            # TODO Display style for image description\n            desc: Paragraph = self.document.add_paragraph(img_tag[\"alt\"], style=MDX_STYLE.CAPTION)\n            desc.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER\n            desc.style.font.color.rgb = RGBColor(11, 11, 11)\n            desc.style.font.bold = False\n            desc.paragraph_format.first_line_indent = 0\n\n    def add_table(self, table_root):\n        # Number of statistical columns - Preferred From thead Fetch, otherwise from tbody Get on the first line\n        col_count: int = 0\n        has_thead = False\n\n        if table_root.thead and table_root.thead.tr:\n            has_thead = True\n            for col in table_root.thead.tr.contents:\n                if col.name in ['th', 'td']:\n                    col_count += 1\n        elif table_root.tbody:\n            # FROM tbody Number of columns in the first row\n            first_row = table_root.tbody.find('tr')\n            if first_row:\n                for col in first_row.contents:\n                    if col.name in ['th', 'td']:\n                        col_count += 1\n\n        if col_count == 0:\n            # Fault tolerance: if the number of columns is not found, the default is1\n            col_count = 1\n\n        table = self.document.add_table(0, col_count, style=MDX_STYLE.TABLE)  # TODO Table Style\n\n        # Table header row (if present)\n        if has_thead:\n            head_row_cells = table.add_row().cells\n            i = 0\n            for col in table_root.thead.tr.contents:\n                if col.name in ['th', 'td']:\n                    cell_text = col.get_text(strip=True)\n                    head_row_cells[i].paragraphs[0].add_run(cell_text).bold = True\n                    i += 1\n\n        # Data Line\n        if table_root.tbody:\n            for tr in table_root.tbody:\n                if tr.name != 'tr':\n                    continue\n                row_cells = table.add_row().cells\n                i = 0\n                for td in tr.contents:\n                    if td.name in ['th', 'td']:\n                        cell_text = td.get_text(strip=True)\n                        row_cells[i].text = cell_text\n                        i += 1\n\n    def add_number_list(self, number_list):\n        # print(number_list.contents, \"\\n\")\n        for item in number_list.children:\n            if item.name != 'li':  # Skip non- li label\n                continue\n\n            # Get direct text content(Exclude subtags)\n            direct_text = ''.join([str(s) for s in item.find_all(text=True, recursive=False)]).strip()\n\n            # Check if there are paragraph tags\n            has_paragraph_tag = item.find('p') is not None\n\n            # If there is direct text,Add your paragraph\n            if direct_text:\n                self.add_paragraph(item, p_style=MDX_STYLE.LIST_NUMBER) \\\n                    .style.paragraph_format.space_after = Pt(1)  # TODO Number List Style\n            # If there is no direct text but there is <p> label,<g id=\"Bold\">Medical Treatment:</g> <p> label\n            elif has_paragraph_tag:\n                para_count = 0\n                for child in item.children:\n                    if hasattr(child, 'name') and child.name == 'p':\n                        if para_count == 0:\n                            # first <p> Use list style\n                            self.add_paragraph(child, p_style=MDX_STYLE.LIST_NUMBER) \\\n                                .style.paragraph_format.space_after = Pt(1)\n                        else:\n                            # Additional <p> Use continuation style\n                            self.add_paragraph(child, p_style=MDX_STYLE.LIST_CONTINUE) \\\n                                .style.paragraph_format.space_after = Pt(1)\n                        para_count += 1\n\n            # Working with Nested Ordered Lists\n            if hasattr(item, \"ol\") and item.ol is not None:\n                sub_num: int = 1  # Sub-Serial Number\n                for item2 in item.ol.children:\n                    if item2.name != 'li':\n                        continue\n                    self.add_paragraph(item2, prefix=\"(%d). \" % sub_num, p_style=MDX_STYLE.LIST_CONTINUE) \\\n                        .style.paragraph_format.first_line_indent = 0  # TODO Number List Style\n                    sub_num += 1\n\n            # Working with Nested Unordered Lists\n            if hasattr(item, \"ul\") and item.ul is not None:\n                for item2 in item.ul.children:\n                    if item2.name != 'li':\n                        continue\n                    self.add_paragraph(item2, prefix=\"•  \", p_style=MDX_STYLE.LIST_CONTINUE) \\\n                        .style.paragraph_format.space_after = Pt(1)\n\n    def add_bullet_list(self, bullet_list):\n        # It may be. list\n        text = str(bullet_list.contents[1].string).strip()\n        if text.startswith(\"[ ]\") or text.startswith(\"[x]\"):\n            self.add_todo_list(bullet_list)\n            return\n        for item in bullet_list.children:\n            if item.name != 'li':  # Skip non- li label\n                continue\n\n            # Get direct text content(Exclude subtags)\n            direct_text = ''.join([str(s) for s in item.find_all(text=True, recursive=False)]).strip()\n\n            # Check if there are paragraph tags\n            has_paragraph_tag = item.find('p') is not None\n\n            # If there is direct text,Add your paragraph\n            if direct_text:\n                self.add_paragraph(item, p_style=MDX_STYLE.LIST_BULLET) \\\n                    .style.paragraph_format.space_after = Pt(1)\n            # If there is no direct text but there is <p> label,<g id=\"Bold\">Medical Treatment:</g> <p> label\n            elif has_paragraph_tag:\n                para_count = 0\n                for child in item.children:\n                    if hasattr(child, 'name') and child.name == 'p':\n                        if para_count == 0:\n                            # first <p> Use list style\n                            self.add_paragraph(child, p_style=MDX_STYLE.LIST_BULLET) \\\n                                .style.paragraph_format.space_after = Pt(1)\n                        else:\n                            # Additional <p> Use continuation style\n                            self.add_paragraph(child, p_style=MDX_STYLE.LIST_CONTINUE) \\\n                                .style.paragraph_format.space_after = Pt(1)\n                        para_count += 1\n\n            # <g id=\"Bold\">Medical Treatment:</g> ul Above listings\n            if hasattr(item, \"ul\") and item.ul is not None:\n                for item2 in item.ul.children:\n                    if item2.string == \"\\n\" or (not item2.string):\n                        continue\n                    self.add_paragraph(item2, prefix=\"•  \", p_style=MDX_STYLE.LIST_CONTINUE) \\\n                        .style.paragraph_format.space_after = Pt(1)\n\n            # <g id=\"Bold\">Medical Treatment:</g> ol Above listings\n            if hasattr(item, \"ol\") and item.ol is not None:\n                # read out start Property,If not present, defaults to1\n                sub_num = int(item.ol.get('start', 1))\n                for item2 in item.ol.children:\n                    if item2.name != 'li':\n                        continue\n                    self.add_paragraph(item2, prefix=f\"{sub_num}. \", p_style=MDX_STYLE.LIST_CONTINUE) \\\n                        .style.paragraph_format.space_after = Pt(1)\n                    sub_num += 1\n\n    # falseTODO list\n    def add_todo_list(self, todo_list):\n        # list_para.style.font.name = \"Consolas\"\n        for item in todo_list.children:\n            if item.string == \"\\n\" or (not item.string):\n                continue\n            text: str = item.string\n            list_para = self.document.add_paragraph(style=MDX_STYLE.PLAIN_LIST)\n            if text.startswith(\"[x]\"):\n                list_para.add_run(\"[ √ ]\").font.name = \"Consolas\"\n                list_para.add_run(text.replace(\"[x]\", \" \", 1))\n            elif text.startswith(\"[ ]\"):\n                list_para.add_run(\"[   ]\").font.name = \"Consolas\"\n                list_para.add_run(text.replace(\"[ ]\", \" \", 1))\n\n    # Split Lines\n    def add_split_line(self):\n        p = self.document.add_paragraph()\n        p.paragraph_format.space_before = Pt(6)\n        p.paragraph_format.space_after = Pt(6)\n        border_elm = parse_xml(\n            r'<w:pBdr {}><w:bottom w:val=\"single\" w:sz=\"6\" w:space=\"1\" w:color=\"auto\"/></w:pBdr>'.format(nsdecls('w')))\n        p._p.get_or_add_pPr().append(border_elm)\n\n    # Hyperlinks\n    def add_link(self, p: Paragraph, text: str, href: str):\n        self.debug(\"[link]:\", text, \"[href]:\", href)\n        add_hyperlink(p, href, text)\n        # run = p.add_run(text)\n\n    def add_paragraph(self, children, p_style: str = None, prefix: str = \"\"):\n        \"\"\"\n        children: list|str\n        An element (including an image) within a paragraph. Divided according to whether there is a style, forming a list.\n        There are style text such as bold, italics, images, etc.\n        As`I am plain _while_ he is **bold**`will be converted to:\n        [\"I am plain\", \"while\", \"he is\", \"bold\"]\n        \"\"\"\n        p = self.document.add_paragraph(prefix, style=p_style)\n        if type(children) == str:\n            p.add_run(children)\n            return p\n        for elem in children.contents:  # Traverse all elements in a paragraph\n            if elem.name == \"a\":\n                self.add_link(p, elem.string, elem[\"href\"])\n            elif elem.name == \"img\":\n                self.add_picture(elem, parent_paragraph=p)  # Pass the current paragraph\n            elif elem.name is not None:  # Substring with character style\n                self.add_run(p, elem.string, elem.name)\n            elif not elem.string == \"\\n\":  # Substring without character style\n                self.add_run(p, elem)\n        return p\n\n    # from docx.enum.style import WD_STYLE\n    def add_blockquote(self, children):\n        # TODO Place Blockquote on1x1In the table, optimize the display effect of the reference block\n        #  Set left indent, up and down spacing\n        table: Table = self.document.add_table(0, 1)\n        row_cells = table.add_row().cells\n\n        # Supports multiple paragraphs\n        para_count = 0\n        for child in children.contents:\n            # Skip line breaks\n            if isinstance(child, str) and child.strip() == \"\":\n                continue\n\n            # Working with paragraph tags\n            if hasattr(child, 'name') and child.name == 'p':\n                if para_count > 0:\n                    # Add a new passage\n                    row_cells[0].add_paragraph()\n                p = row_cells[0].paragraphs[para_count]\n\n                for elem in child.contents:  # Traverse all elements in a paragraph\n                    if elem.name == \"a\":\n                        self.add_link(p, elem.string, elem[\"href\"])\n                    elif elem.name == \"img\":\n                        self.add_picture(elem, parent_paragraph=p)  # Pass the current paragraph\n                    elif elem.name is not None:  # Substring with character style\n                        self.add_run(p, elem.string, elem.name)\n                    elif elem.string and elem.string != \"\\n\":  # Substring without character style\n                        self.add_run(p, elem.string)\n                para_count += 1\n            # Working with Direct Text Nodes\n            elif isinstance(child, str) and child.strip():\n                if para_count == 0:\n                    p = row_cells[0].paragraphs[0]\n                    para_count = 1\n                else:\n                    p = row_cells[0].add_paragraph()\n                    para_count += 1\n                p.add_run(child.strip())\n\n        shading_elm_1 = parse_xml(r'<w:shd {} w:fill=\"efefef\"/>'.format(nsdecls('w')))\n        table.rows[0].cells[0]._tc.get_or_add_tcPr().append(shading_elm_1)\n\n    def html2docx(self, html_str: str):\n        # OpenHTML\n\n        soup = BeautifulSoup(html_str, 'html.parser')\n\n        # Find it securely body label\n        body_tag = soup.find('body')\n        if body_tag is None:\n            # If no evidence of   microbial body,Use entire soup\n            body_tag = soup\n\n        # Title\n        title_text = \"\"\n        # parse the labels one by one and writewordII\n        for root in body_tag.children:\n            # Skip plain text nodes and line breaks\n            if isinstance(root, str):\n                if root.strip():\n                    # Working with Direct Text Nodes\n                    self.document.add_paragraph(root.strip(), style=MDX_STYLE.PLAIN_TEXT)\n                continue\n\n            # debug(\"<%s>\" % root.name)\n            if root.name == \"p\":  # Normal paragraph\n                self.add_paragraph(root, p_style=MDX_STYLE.PLAIN_TEXT)\n            elif root.name == \"blockquote\":  # Blockquote\n                self.add_blockquote(root)\n            elif root.name == \"ol\":  # Numbered\n                self.add_number_list(root)\n            elif root.name == \"ul\":  # Unordered List OR List\n                self.add_bullet_list(root)\n            elif root.name == \"table\":  # Table Filter\n                self.add_table(root)\n            elif root.name == \"hr\":\n                self.add_split_line()\n            elif root.name == \"pre\":\n                self.add_code_block(root)\n            elif root.name in [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]:\n                if title_text == \"\":\n                    title_text = root.string or \"\"\n                self.add_heading(root.string or \"\", root.name)\n\n        docx_bytes = io.BytesIO()\n\n        self.document.save(docx_bytes)\n\n        docx_bytes.seek(0)\n\n        return docx_bytes.getbuffer(), title_text\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/provider/simple_style.py",
    "content": "import docx\n\nfrom docx.enum.style import WD_STYLE_TYPE\n\n\n# Chinese Font Size Conversion pt THE METHOD\ndef _zihao_to_pt(chn_name: str):\n    chn_name = chn_name.strip()\n    pt_mapping = {\n        \"No. 1\": 42,\n        \"Little Primary\": 36,\n        \"No. 1\": 26,\n        \"Little Yi\": 24,\n        \"No. 2\": 22,\n        \"Second\": 18,\n        \"Number three\": 16,\n        \"Little San\": 15,\n        \"No. 4\": 14,\n        \"Shikama\": 12,\n        \"No. 5\": 10.5,\n        \"Xiao Wu\": 9,\n        \"No. 6\": 7.5,\n        \"Little Six\": 6.5,\n        \"No. 7\": 5.5,\n        \"No. 8\": 5,\n    }\n    if pt_mapping.get(chn_name):\n        return pt_mapping[chn_name]\n    else:\n        print(\"[YAML ERROR]:\", chn_name,\n              \"Not a canonical title.(In the Chinese context, the largest font size is'No. 1', the minimum is'No. 8')。\")\n\n\nclass SimpleStyle:\n    style_name: str\n    base_style_name: str\n    style_type: WD_STYLE_TYPE = WD_STYLE_TYPE.PARAGRAPH\n\n    font_default: str = \"Times New Roman\"\n    font_east_asia: str = \"Song Ti\"\n    font_size: float = 14\n    font_color: str = \"000000\"\n\n    font_bold: bool = False\n    font_italic: bool = False\n    font_underline: bool = False\n    font_strike: bool = False\n\n    first_line_indent: int = 0\n    line_spacing: int = 1\n    space_before: int = 0\n    space_after: int = 0\n\n    def __init__(self,\n                 style_name: str,  # Style name\n                 base_style_name: str,  # Styles based on\n                 conf: dict,  # Specific style data fromyamlDeserialized\n                 style_type: docx.enum.style = WD_STYLE_TYPE.PARAGRAPH  # Is it a paragraph or a list or some other type\n                 ):\n        self.style_name = style_name\n        self.base_style_name = base_style_name\n        self.style_type = style_type\n\n        try:\n            self.font_default = conf[\"font\"][\"default\"]\n            self.font_east_asia = conf[\"font\"][\"east-asia\"]\n\n            if str(conf[\"font\"][\"size\"]).isdigit():\n                self.font_size = conf[\"font\"][\"size\"]\n            else:  # If the font size is given in Chinese, convert it\n                self.font_size = _zihao_to_pt(conf[\"font\"][\"size\"])\n        except KeyError:\n            print(\"[YAML ERROR]:\", style_name,\n                  \"| Error occurred in setting font style. Set to:\",\n                  self.font_default, self.font_east_asia, str(self.font_size) + \"pt\")\n\n        # Check when color is specified, do not specify default black\n        if conf[\"font\"].get(\"color\") is not None:\n            try:\n                if type(conf[\"font\"][\"color\"]) != str \\\n                        or len(conf[\"font\"][\"color\"]) != 6:\n                    raise TypeError\n                # Try to convert to16binary number and whether it matchesRGBsize\n                hex_num = int(conf[\"font\"][\"color\"], 16)\n                if 0 <= hex_num <= 0xFFFFFF:\n                    self.font_color = str(conf[\"font\"][\"color\"])\n                else:\n                    raise ValueError\n            except ValueError:\n                print(\"[YAML ERROR]:\", style_name,\n                      \"| Value of color isn't a hex or out of [000000, FFFFFF].\",\n                      \"Default to black(000000).\")\n            except TypeError:\n                print(\"[YAML ERROR]:\", style_name, \"| Value of color must be string with 6 characters.\",\n                      \"Default to black(000000).\")\n\n        # Bold, Italic, Underline, Strikeout\n        if conf.get(\"font\").get(\"extra\"):\n            # print(conf[\"font\"][\"extra\"])\n            self.font_bold = \"bold\" in (conf[\"font\"][\"extra\"])\n            self.font_italic = \"italic\" in list(conf[\"font\"][\"extra\"])\n            self.font_underline = \"underline\" in list(conf[\"font\"][\"extra\"])\n            self.font_strike = \"strike\" in list(conf[\"font\"][\"extra\"])\n\n        if conf.get(\"first-line-indent\"):\n            self.first_line_indent = conf[\"first-line-indent\"]\n        if conf.get(\"line-spacing\"):\n            self.line_spacing = conf[\"line-spacing\"]\n        if conf.get(\"space\"):\n            if conf.get(\"space\").get(\"before\"):\n                self.space_before = conf[\"space\"][\"before\"]\n            if conf.get(\"space\").get(\"after\"):\n                self.space_after = conf[\"space\"][\"after\"]\n\n    def __str__(self) -> str:\n        return \"\".join(str(i) for i in (\n            self.style_name, \" \",\n            self.font_default, \" \",\n            self.font_east_asia, \" \",\n            self.font_size, \" \",\n            self.font_color, \" \",\n            \"space:(\", self.space_before, \" \", self.space_after, \") \",\n            \"bold-\", self.font_bold, \" \",\n            \"italic-\", self.font_italic, \" \",\n            \"underline-\", self.font_underline, \" \",\n            \"strike-\", self.font_strike\n        ))\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/provider/style_manager.py",
    "content": "import docx\nfrom docx import Document\nfrom docx.oxml.ns import qn\nfrom docx.shared import Inches, RGBColor, Pt\nfrom docx.styles.style import _ParagraphStyle, BaseStyle\nfrom docx.enum.style import WD_STYLE_TYPE\nfrom docx.styles.styles import Styles\n\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.provider.simple_style import SimpleStyle\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.utils.style_enum import MDX_STYLE\n\n\nclass StyleManager:\n\n    def __init__(self, doc: Document, yaml_conf: dict):\n        self.styles: Styles = doc.styles\n        self.style_conf = yaml_conf\n\n    def init_styles(self):\n        # Pengaturanheading 1~4\n        for i in range(1, 5):\n            s = SimpleStyle(\"Heading%d\" % i, \"Heading %d\" % i,\n                            self.style_conf[\"h%d\" % i])\n            self.set_style(s)\n        # TODO What other styling settings are there?\n        #  CaptionsCaptionTable Style(?)\n\n        # s = SimpleStyle(\"Normal\", \"Normal\", self.style_conf[\"normal\"])\n        s = SimpleStyle(MDX_STYLE.PLAIN_TEXT, \"Normal\", self.style_conf[\"normal\"])\n        self.set_style(s)\n\n    # General style settings\n    def set_style(self, _style: SimpleStyle):\n        new_style: _ParagraphStyle\n        if _style.style_name not in self.styles:\n            new_style: _ParagraphStyle = self.styles.add_style(_style.style_name, _style.style_type)\n            new_style.base_style = self.styles[_style.base_style_name]\n        else:\n            new_style = self.styles[_style.style_name]\n\n        new_style.quick_style = True\n\n        # ##### Font Related #####\n        # Set font, color, size\n        new_style.font.name = _style.font_default  # Set onlynameIs Set Western Font\n        new_style.font.size = Pt(_style.font_size)\n        new_style._element.rPr.rFonts.set(qn('w:eastAsia'), _style.font_east_asia)  # To set additional Chinese fonts\n        new_style.font.color.rgb = RGBColor.from_string(_style.font_color)\n        # Bold, Italic, Underline, Strikeout\n        new_style.font.bold = _style.font_bold\n        new_style.font.italic = _style.font_italic\n        new_style.font.underline = _style.font_underline\n        new_style.font.strike = _style.font_strike\n\n        # ##### Paragraph Related #####\n        # Set indent, before paragraph/Space after paragraph, line spacing between paragraphs\n        new_style.paragraph_format.first_line_indent = (Pt(_style.font_size) * int(_style.first_line_indent))\n        new_style.paragraph_format.space_before = Pt(_style.space_before)\n        new_style.paragraph_format.space_after = Pt(_style.space_after)\n        new_style.paragraph_format.line_spacing = _style.line_spacing\n\n        # ##### Other _________ #####\n        # Remove the black dot in the top left corner before the paragraph\n        new_style.paragraph_format.keep_together = False\n        # Header Style Retention keep_with_next are True, avoid separate pagination of titles\n        if not _style.style_name.startswith(\"Heading\"):\n            new_style.paragraph_format.keep_with_next = False\n        # Title does not precede pagination\n        if _style.style_name.startswith(\"Heading\"):\n            new_style.paragraph_format.page_break_before = False\n        # Show on shortcut style window\n        new_style.quick_style = True\n        return\n\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/utils/style_enum.py",
    "content": "class MDX_STYLE:\n    PLAIN_TEXT = \"Normal\"\n    PLAIN_LIST = \"List\"\n    LIST_NUMBER = \"List Number\"\n    LIST_CONTINUE = \"List Continue\"\n    LIST_BULLET = \"List Bullet\"\n    BLOCKQUOTE = \"Quote\"\n    HEADING = \"Heading\"\n    TABLE = \"Table Grid\"\n    CAPTION = \"Caption\"\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_docx/utils/yaml_utils.py",
    "content": "import yaml\nfrom yaml import FullLoader\n\n\ndef read_style_yaml(path: str) -> dict:\n    with open(path, \"r\", encoding=\"utf-8\") as file:\n        return yaml.load(file, FullLoader)\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/markdown_cmpnt/md_to_pdf.py",
    "content": "\"\"\"\nTypora Style Markdown Transfer PDF Converter\n\nUse Playwright (Chromium) will be HTML Render As PDF Professional Markdown Transfer PDF Exporter\nSupport Typora of style styles and mathematical expressions MathJax rendered\n\nFeature:\n- Pass Headless Chromium will be Markdown Convert file or string to stylized PDF\n- Contains the default Typora Style CSS Styles\n- Supports customization CSS Override\n- MathJax Integration for LaTeX Mathematical rendering\n- Configurable page formatting and margins\n- Robust error handling and resource management\n\ndependent:\n    pip install playwright markdown\n    playwright install chromium\n\nUsage Sample:\n    from to_pdf import MarkdownToPdfConverter\n    converter = MarkdownToPdfConverter()\n    converter.convert_file(\"README.md.md\", \"output.pdf\")\n\"\"\"\n\nimport logging\nimport os\nimport tempfile\nfrom pathlib import Path\nfrom typing import Optional, Union\n\nfrom bisheng.common.utils.markdown_cmpnt.md_to_docx.parser.ext_md_syntax import ExtMdSyntax\n\nlogger = logging.getLogger(__name__)\n\n# Dependent Import and Error Handling\ntry:\n    import markdown\nexcept ImportError as e:\n    logger.error(\"Required dependency is missing: %s\", e)\n    raise ImportError(\"Please Install 'markdown' Package: pip install markdown\") from e\n\ntry:\n    from playwright.sync_api import sync_playwright\n\n    PLAYWRIGHT_AVAILABLE = True\nexcept ImportError:\n    PLAYWRIGHT_AVAILABLE = False\n    logger.warning(\"Playwright Not available. Please install: pip install playwright && playwright install chromium\")\n\nDEFAULT_CSS = r\"\"\"\ntop: 6px;\nfont-size: 9px;\ncolor: var(--muted-color);\nbackground: transparent;\n}\n\n\n/* Tables */\ntable {\nwidth: 100%;\nborder-collapse: collapse;\nmargin: 0 0 0.9em 0;\nfont-size: 11pt;\n}\nth, td {\nborder: 1px solid #e6ecf0;\npadding: 8px 10px;\ntext-align: left;\n}\nth { background: #fafbfc; font-weight: 600; }\n\n\n/* Images */\nimg { max-width: 100%; height: auto; display: block; margin: 0.5em 0; }\n\n\n/* Caption support (if markdown-to-html generator provides figure/figcaption) */\nfigure { margin: 0 0 0.9em 0; }\nfigcaption { font-size: 10pt; color: var(--muted-color); text-align: center; margin-top: 0.35em; }\n\n\n/* Table of contents (toc) */\n.toc {\nmargin: 0 0 1em 0;\npadding-left: 0;\nlist-style: none;\n}\n.toc li { margin: 0.25em 0; }\n.toc a { color: var(--accent-color); }\n\n\n/* Footnotes */\n.footnotes { font-size: 10pt; border-top: 1px dashed var(--hr-color); margin-top: 1em; padding-top: 0.6em; }\n.footnotes li { margin: 0.4em 0; }\n\n\n/* Page break helpers */\n.page-break { page-break-after: always; }\n.page-break-before { page-break-before: always; }\n\n\n/* Fixed header/footer for printing — Chromium will include them in the page content when using print() */\n.header, .footer {\ndisplay: block;\nposition: fixed;\nleft: 0; right: 0;\ncolor: var(--muted-color);\nfont-size: 9pt;\npadding: 6px 12mm;\n}\n.header { top: 0; }\n.footer { bottom: 0; }\n.footer .page-number::after { content: counter(page); }\n\n\n/* Print-specific rules */\n@media print {\nbody { background: white; }\n/* Hide interactive elements if present */\na[href]:after { content: \"\"; }\n/* Avoid background colors bleeding if printer doesn't support it */\n* { -webkit-print-color-adjust: exact; }\n}\n\n\n/* Small-screen fallback (not usually needed for print) */\n@media screen and (max-width: 800px) {\n#content { padding: 16px; }\n}\n\n\n/* MathJax tweaks */\n.mjx-svg-href { vertical-align: middle; }\n\n\n/* Accessibility tweaks */\n:focus { outline: 2px dashed rgba(3,102,214,0.35); outline-offset: 2px; }\n\n\n/* Utility classes */\n.center { text-align: center; }\n.right { text-align: right; }\n.small { font-size: 10pt; color: var(--muted-color); }\n\n\n/* End of CSS */\n\"\"\"\n\nMATHJAX_SNIPPET = r\"\"\"\n<script>\nwindow.MathJax = {\n  tex: {inlineMath: [['$','$'], ['\\\\(','\\\\)']]},\n  svg: {fontCache: 'global'}\n};\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js\"></script>\n\"\"\"\n\nHTML_TEMPLATE = r\"\"\"\n<!doctype html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<style>\n{css}\n</style>\n{mathjax}\n</head>\n<body>\n{body}\n</body>\n</html>\n\"\"\"\n\n\nclass MarkdownToPdfError(Exception):\n    \"\"\"Markdown Transfer PDF Conversion error custom exception.\"\"\"\n    pass\n\n\nclass MarkdownToPdfConverter:\n    \"\"\"\n    Has Typora The power of style rendering Markdown Transfer PDF Converter\n\n    Such provision will Markdown Convert file or string to PDF short circuit exist. \n    Use Playwright Render and include comprehensive error handling.\n    \"\"\"\n\n    SUPPORTED_PAGE_FORMATS = {'A4', 'A3', 'A5', 'Letter', 'Legal', 'Tabloid'}\n    DEFAULT_MARKDOWN_EXTENSIONS = [ExtMdSyntax(), 'extra', 'codehilite', 'toc', 'tables', 'sane_lists', 'fenced_code']\n    DEFAULT_TIMEOUT = 60000  # ms\n\n    def __init__(self,\n                 default_css: Optional[str] = None,\n                 enable_math: bool = False,\n                 page_format: str = 'A4',\n                 margin_mm: int = 20):\n        \"\"\"\n        Initializes the converter with default settings.\n\n        Args:\n            default_css: Used instead of built-in Typora Custom Default for Styles CSS\n            enable_math: enabled MathJax Math expression support\n            page_format: Default page format (A4, A3, A5, Letter, Legal, Tabloid)\n            margin_mm: Default margin (mm)\n\n        Raises:\n            MarkdownToPdfError: Automatically close purchase order after Playwright Unavailable or invalid parameters\n        \"\"\"\n        if not PLAYWRIGHT_AVAILABLE:\n            raise MarkdownToPdfError(\n                'Playwright Not installed. Please install: pip install playwright && playwright install chromium'\n            )\n\n        if page_format not in self.SUPPORTED_PAGE_FORMATS:\n            raise MarkdownToPdfError(\n                f'Unsupported page format: {page_format}Supported Formats: {self.SUPPORTED_PAGE_FORMATS}'\n            )\n\n        if not isinstance(margin_mm, (int, float)) or margin_mm < 0:\n            raise MarkdownToPdfError('Margins must be non-negative')\n\n        self.default_css = default_css or DEFAULT_CSS\n        self.enable_math = enable_math\n        self.page_format = page_format\n        self.margin_mm = margin_mm\n\n        logger.info(\"MarkdownToPdfConverter Initialized, Format=%s Margin=%dmm\",\n                    page_format, margin_mm)\n\n    def _validate_input_path(self, file_path: Union[str, Path]) -> Path:\n        \"\"\"Validate input file path and go back Path of research.\"\"\"\n        path = Path(file_path)\n\n        if not path.exists():\n            raise MarkdownToPdfError(f'This input file does not exist.: {path}')\n\n        if not path.is_file():\n            raise MarkdownToPdfError(f'Input path is not a file: {path}')\n\n        if not path.suffix.lower() in {'.md', '.markdown', '.txt'}:\n            logger.warning(\"Input file not available markdown extension: %s\", path.suffix)\n\n        return path\n\n    def _validate_output_path(self, file_path: Union[str, Path]) -> Path:\n        \"\"\"Verify the output file path and make sure the directory exists.\"\"\"\n        path = Path(file_path)\n\n        # Make sure the parent directory exists\n        path.parent.mkdir(parents=True, exist_ok=True)\n\n        if path.suffix.lower() != '.pdf':\n            logger.warning(\"Output file not available .pdf extension: %s\", path.suffix)\n\n        return path\n\n    def _load_css_file(self, css_path: Union[str, Path]) -> str:\n        \"\"\"Load from file CSS Content with error handling.\"\"\"\n        try:\n            css_file = Path(css_path)\n            if not css_file.exists():\n                raise MarkdownToPdfError(f'CSS File don\\'t exists: {css_file}')\n\n            with open(css_file, 'r', encoding='utf-8') as f:\n                css_content = f.read().strip()\n\n            if not css_content:\n                logger.warning(\"CSS File is empty: %s\", css_file)\n\n            return css_content\n\n        except (OSError, UnicodeDecodeError) as e:\n            raise MarkdownToPdfError(f'read out CSS Doc. {css_path} Kalah: {e}') from e\n\n    def render_markdown_to_html(self,\n                                markdown_text: str,\n                                custom_css: Optional[str] = None,\n                                enable_math: Optional[bool] = None) -> str:\n        \"\"\"\n        will be Markdown Convert text to with style and MathJax Supportive HTML。\n\n        Args:\n            markdown_text: To be converted Markdown Contents\n            custom_css: Optional customizations CSSfor overriding default styles\n            enable_math: Mathematical support for overriding instance settings\n\n        Returns:\n            Available for PDF Conversion Complete HTML Documentation\n\n        Raises:\n            MarkdownToPdfError: Automatically close purchase order after Markdown Failed to Process\n        \"\"\"\n        if not isinstance(markdown_text, str):\n            raise MarkdownToPdfError('Markdown Text must be a string')\n\n        if not markdown_text.strip():\n            logger.warning(\"SERVICES  Markdown Konten kosong\")\n\n        try:\n            # Using the extension will Markdown Convert To HTML\n            html_body = markdown.markdown(\n                markdown_text,\n                extensions=self.DEFAULT_MARKDOWN_EXTENSIONS\n            )\n\n            # OK CSS And MathJax Pengaturan\n            css_content = custom_css or self.default_css\n            use_math = enable_math if enable_math is not None else self.enable_math\n            math_snippet = MATHJAX_SNIPPET if use_math else '\\n'\n\n            # Generate full HTML Documentation\n            html_document = HTML_TEMPLATE.format(\n                css=css_content,\n                mathjax=math_snippet,\n                body=html_body\n            )\n\n            logger.debug(\"Success will %d character (s) of Markdown Convert To HTML\", len(markdown_text))\n            return html_document\n\n        except Exception as e:\n            raise MarkdownToPdfError(f'will be Markdown Render As HTML Kalah: {e}') from e\n\n    def convert_html_to_pdf(self,\n                            html_content: str,\n                            output_path: Union[str, Path],\n                            page_format: Optional[str] = None,\n                            margin_mm: Optional[int] = None) -> None:\n        \"\"\"\n        Use Playwright will be HTML Convert content to PDF。\n\n        Args:\n            html_content: To be converted HTML Contents\n            output_path: PDF SAVE PATH\n            page_format: Override default page formatting\n            margin_mm: Override default margin\n\n        Raises:\n            MarkdownToPdfError: Automatically close purchase order after PDF failed to transform\n        \"\"\"\n        if not isinstance(html_content, str) or not html_content.strip():\n            raise MarkdownToPdfError('HTML Content cannot be empty')\n\n        output_file = self._validate_output_path(output_path)\n        format_to_use = page_format or self.page_format\n        margin_to_use = margin_mm if margin_mm is not None else self.margin_mm\n\n        if format_to_use not in self.SUPPORTED_PAGE_FORMATS:\n            raise MarkdownToPdfError(f'Unsupported page format: {format_to_use}')\n\n        # Create Temporary HTML Doc.\n        temp_html_path = None\n        try:\n            with tempfile.NamedTemporaryFile(\n                    mode='w',\n                    suffix='.html',\n                    delete=False,\n                    encoding='utf-8'\n            ) as temp_file:\n                temp_html_path = temp_file.name\n                temp_file.write(html_content)\n\n            logger.debug(\"Temporary Created HTML Doc.: %s\", temp_html_path)\n\n            # Use Playwright Convert To PDF\n            self._render_pdf_with_playwright(temp_html_path, output_file, format_to_use, margin_to_use)\n\n            logger.info(\"Slider Created Successfully. PDF: %s\", output_file)\n\n        except Exception as e:\n            raise MarkdownToPdfError(f'will be HTML Convert To PDF Kalah: {e}') from e\n        finally:\n            # Clean Up Temp Files\n            if temp_html_path and os.path.exists(temp_html_path):\n                try:\n                    os.unlink(temp_html_path)\n                    logger.debug(\"Temporary files cleaned: %s\", temp_html_path)\n                except OSError as e:\n                    logger.warning(\"Clean Up Temp Files %s Kalah: %s\", temp_html_path, e)\n\n    def convert_html_to_pdf_bytes(self,\n                                  html_content: str,\n                                  page_format: Optional[str] = None,\n                                  margin_mm: Optional[int] = None) -> bytes:\n        \"\"\"\n        Use Playwright will be HTML Convert content to PDF Bytes of data.\n\n        Args:\n            html_content: To be converted HTML Contents\n            page_format: Override default page formatting\n            margin_mm: Override default margin\n\n        Returns:\n            PDF Bytes data of the file\n\n        Raises:\n            MarkdownToPdfError: Automatically close purchase order after PDF failed to transform\n        \"\"\"\n        if not isinstance(html_content, str) or not html_content.strip():\n            raise MarkdownToPdfError('HTML Content cannot be empty')\n\n        format_to_use = page_format or self.page_format\n        margin_to_use = margin_mm if margin_mm is not None else self.margin_mm\n\n        if format_to_use not in self.SUPPORTED_PAGE_FORMATS:\n            raise MarkdownToPdfError(f'Unsupported page format: {format_to_use}')\n\n        # Create Temporary HTML Doc.\n        temp_html_path = None\n        try:\n            with tempfile.NamedTemporaryFile(\n                    mode='w',\n                    suffix='.html',\n                    delete=False,\n                    encoding='utf-8'\n            ) as temp_file:\n                temp_html_path = temp_file.name\n                temp_file.write(html_content)\n\n            logger.debug(\"Temporary Created HTML Doc.: %s\", temp_html_path)\n\n            # Use Playwright Convert To PDF Bytes of data\n            pdf_bytes = self._render_pdf_bytes_with_playwright(temp_html_path, format_to_use, margin_to_use)\n\n            logger.debug(\"Successfully Generated! PDF bytes data, size: %d bytes\", len(pdf_bytes))\n            return pdf_bytes\n\n        except Exception as e:\n            raise MarkdownToPdfError(f'will be HTML Convert To PDF Byte Data Failure: {e}') from e\n        finally:\n            # Clean Up Temp Files\n            if temp_html_path and os.path.exists(temp_html_path):\n                try:\n                    os.unlink(temp_html_path)\n                    logger.debug(\"Temporary files cleaned: %s\", temp_html_path)\n                except OSError as e:\n                    logger.warning(\"Clean Up Temp Files %s Kalah: %s\", temp_html_path, e)\n\n    def _render_pdf_with_playwright(self,\n                                    html_file_path: str,\n                                    output_path: Path,\n                                    page_format: str,\n                                    margin_mm: int) -> None:\n        \"\"\"<g id=\"Bold\">Medical Treatment:</g> Playwright PDF The internal method of the build.\"\"\"\n        try:\n            with sync_playwright() as playwright:\n                browser = playwright.chromium.launch()\n                try:\n                    page = browser.new_page()\n                    file_url = f'file:///{html_file_path.replace(os.sep, \"/\")}'\n\n                    logger.debug(\"Load in browser HTML: %s\", file_url)\n                    page.goto(file_url, timeout=self.DEFAULT_TIMEOUT)\n\n                    # If enabled MathJax, waiting for typesetting to complete\n                    if self.enable_math:\n                        self._wait_for_mathjax(page)\n\n                    # Build with specified settings PDF\n                    margin_config = {\n                        'top': f'{margin_mm}mm',\n                        'bottom': f'{margin_mm}mm',\n                        'left': f'{margin_mm}mm',\n                        'right': f'{margin_mm}mm'\n                    }\n\n                    page.pdf(\n                        path=str(output_path),\n                        format=page_format,\n                        margin=margin_config,\n                        print_background=True\n                    )\n\n                finally:\n                    browser.close()\n\n        except Exception as e:\n            raise MarkdownToPdfError(f'Playwright PDF Generation Failed: {e}') from e\n\n    def _render_pdf_bytes_with_playwright(self,\n                                          html_file_path: str,\n                                          page_format: str,\n                                          margin_mm: int) -> bytes:\n        \"\"\"<g id=\"Bold\">Medical Treatment:</g> Playwright PDF Internal method for byte data generation.\"\"\"\n        try:\n            with sync_playwright() as playwright:\n                browser = playwright.chromium.launch()\n                try:\n                    page = browser.new_page()\n                    file_url = f'file:///{html_file_path.replace(os.sep, \"/\")}'\n\n                    logger.debug(\"Load in browser HTML: %s\", file_url)\n                    page.goto(file_url, timeout=self.DEFAULT_TIMEOUT)\n\n                    # If enabled MathJax, waiting for typesetting to complete\n                    if self.enable_math:\n                        self._wait_for_mathjax(page)\n\n                    # Build with specified settings PDF Bytes of data\n                    margin_config = {\n                        'top': f'{margin_mm}mm',\n                        'bottom': f'{margin_mm}mm',\n                        'left': f'{margin_mm}mm',\n                        'right': f'{margin_mm}mm'\n                    }\n\n                    pdf_bytes = page.pdf(\n                        format=page_format,\n                        margin=margin_config,\n                        print_background=True\n                    )\n\n                    return pdf_bytes\n\n                finally:\n                    browser.close()\n\n        except Exception as e:\n            raise MarkdownToPdfError(f'Playwright PDF Byte data generation failed: {e}') from e\n\n    def _wait_for_mathjax(self, page) -> None:\n        \"\"\"Menunggu MathJax Finish typography with timeout.\"\"\"\n        try:\n            logger.debug(\"Menunggu MathJax Format...\")\n            page.wait_for_function(\n                \"() => window.MathJax && window.MathJax.typesetPromise\",\n                timeout=self.DEFAULT_TIMEOUT\n            )\n            page.evaluate(\"() => window.MathJax && window.MathJax.typesetPromise()\")\n            logger.debug(\"MathJax Typography complete\")\n        except Exception as e:\n            logger.debug(\"MathJax Timeout or non-existent (this is normal): %s\", e)\n\n    def convert_file(self,\n                     input_path: Union[str, Path],\n                     output_path: Union[str, Path],\n                     css_file: Optional[Union[str, Path]] = None,\n                     **kwargs) -> None:\n        \"\"\"\n        will be Markdown Convert file to PDF。\n\n        Args:\n            input_path: Masukkan Markdown FilePath\n            output_path: Output PDF FilePath\n            css_file: Optional customizations CSS FilePath\n            **kwargs: Add Ons (page_format, margin_mm, enable_math)\n\n        Raises:\n            MarkdownToPdfError: If the conversion fails\n        \"\"\"\n        input_file = self._validate_input_path(input_path)\n\n        try:\n            # read out Markdown Contents\n            with open(input_file, 'r', encoding='utf-8') as f:\n                markdown_content = f.read()\n\n            logger.info(\"FROM %s read %d characters\", input_file, len(markdown_content))\n\n            # If customization is provided CSS, then load\n            custom_css = None\n            if css_file:\n                custom_css = self._load_css_file(css_file)\n                logger.info(\"FROM %s Customization loaded CSS\", css_file)\n\n            # Convert To PDF\n            self.convert_string(markdown_content, output_path, custom_css, **kwargs)\n\n        except (OSError, UnicodeDecodeError) as e:\n            raise MarkdownToPdfError(f'Read input file {input_file} Kalah: {e}') from e\n\n    def convert_string(self,\n                       markdown_text: str,\n                       output_path: Union[str, Path],\n                       custom_css: Optional[str] = None,\n                       **kwargs) -> None:\n        \"\"\"\n        will be Markdown Convert string to PDF。\n\n        Args:\n            markdown_text: Markdown String content\n            output_path: Output PDF FilePath\n            custom_css: Optional customizations CSS Contents\n            **kwargs: Add Ons (page_format, margin_mm, enable_math)\n\n        Raises:\n            MarkdownToPdfError: If the conversion fails\n        \"\"\"\n        try:\n            # will be Markdown Render As HTML\n            html_content = self.render_markdown_to_html(\n                markdown_text,\n                custom_css=custom_css,\n                enable_math=kwargs.get('enable_math')\n            )\n\n            # will be HTML Convert To PDF\n            self.convert_html_to_pdf(\n                html_content,\n                output_path,\n                page_format=kwargs.get('page_format'),\n                margin_mm=kwargs.get('margin_mm')\n            )\n\n        except MarkdownToPdfError:\n            raise\n        except Exception as e:\n            raise MarkdownToPdfError(f'failed to transform: {e}') from e\n\n    def convert_file_to_bytes(self,\n                              input_path: Union[str, Path],\n                              css_file: Optional[Union[str, Path]] = None,\n                              **kwargs) -> bytes:\n        \"\"\"\n        will be Markdown Convert file to PDF Bytes of data.\n\n        Args:\n            input_path: Masukkan Markdown FilePath\n            css_file: Optional customizations CSS FilePath\n            **kwargs: Add Ons (page_format, margin_mm, enable_math)\n\n        Returns:\n            PDF Bytes data of the file\n\n        Raises:\n            MarkdownToPdfError: If the conversion fails\n        \"\"\"\n        input_file = self._validate_input_path(input_path)\n\n        try:\n            # read out Markdown Contents\n            with open(input_file, 'r', encoding='utf-8') as f:\n                markdown_content = f.read()\n\n            logger.info(\"FROM %s read %d characters\", input_file, len(markdown_content))\n\n            # If customization is provided CSS, then load\n            custom_css = None\n            if css_file:\n                custom_css = self._load_css_file(css_file)\n                logger.info(\"FROM %s Customization loaded CSS\", css_file)\n\n            # Convert To PDF Bytes of data\n            return self.convert_string_to_bytes(markdown_content, custom_css, **kwargs)\n\n        except (OSError, UnicodeDecodeError) as e:\n            raise MarkdownToPdfError(f'Read input file {input_file} Kalah: {e}') from e\n\n    def convert_string_to_bytes(self,\n                                markdown_text: str,\n                                custom_css: Optional[str] = None,\n                                **kwargs) -> bytes:\n        \"\"\"\n        will be Markdown Convert string to PDF Bytes of data.\n\n        Args:\n            markdown_text: Markdown String content\n            custom_css: Optional customizations CSS Contents\n            **kwargs: Add Ons (page_format, margin_mm, enable_math)\n\n        Returns:\n            PDF Bytes data of the file\n\n        Raises:\n            MarkdownToPdfError: If the conversion fails\n        \"\"\"\n        try:\n            # will be Markdown Render As HTML\n            html_content = self.render_markdown_to_html(\n                markdown_text,\n                custom_css=custom_css,\n                enable_math=kwargs.get('enable_math')\n            )\n\n            # will be HTML Convert To PDF Bytes of data\n            return self.convert_html_to_pdf_bytes(\n                html_content,\n                page_format=kwargs.get('page_format'),\n                margin_mm=kwargs.get('margin_mm')\n            )\n\n        except MarkdownToPdfError:\n            raise\n        except Exception as e:\n            raise MarkdownToPdfError(f'failed to transform: {e}') from e\n\n\n# Backward compatibility function\ndef render_markdown_to_html(md_text: str, css: str = None, enable_math: bool = False) -> str:\n    \"\"\"Legacy functions for backward compatibility.\"\"\"\n    converter = MarkdownToPdfConverter(enable_math=enable_math)\n    return converter.render_markdown_to_html(md_text, custom_css=css, enable_math=enable_math)\n\n\ndef html_to_pdf_with_playwright(html: str, output_path: str, format: str = 'A4', margin_mm: int = 20):\n    \"\"\"Legacy functions for backward compatibility.\"\"\"\n    converter = MarkdownToPdfConverter(page_format=format, margin_mm=margin_mm)\n    converter.convert_html_to_pdf(html, output_path, page_format=format, margin_mm=margin_mm)\n\n\ndef md_to_pdf(input_md: str, output_pdf: str, css_file: str = None, is_path: bool = False,\n              enable_math: bool = False, page_format: str = 'A4', margin_mm: int = 20):\n    \"\"\"Legacy functions for backward compatibility.\"\"\"\n    converter = MarkdownToPdfConverter(\n        enable_math=enable_math,\n        page_format=page_format,\n        margin_mm=margin_mm\n    )\n\n    if is_path:\n        converter.convert_file(input_md, output_pdf, css_file=css_file)\n    else:\n        custom_css = None\n        if css_file:\n            custom_css = converter._load_css_file(css_file)\n        converter.convert_string(input_md, output_pdf, custom_css=custom_css)\n\n\ndef md_to_pdf_bytes(input_md: str, css_file: str = None, is_path: bool = False,\n                    enable_math: bool = False, page_format: str = 'A4', margin_mm: int = 20) -> bytes:\n    \"\"\"\n    will be Markdown Convert To PDF Handy function for byte data.\n\n    Args:\n        input_md: Markdown File path (if is_path=True or:  Markdown String\n        css_file: Optional customizations CSS FilePath\n        is_path: input_md Is file path\n        enable_math: enabled MathJax Math expression support\n        page_format: Post Format (A4, A3, A5, Letter, Legal, Tabloid)\n        margin_mm: Margins (in mm)\n\n    Returns:\n        PDF Bytes data of the file\n\n    Raises:\n        MarkdownToPdfError: If the conversion fails\n    \"\"\"\n    converter = MarkdownToPdfConverter(\n        enable_math=enable_math,\n        page_format=page_format,\n        margin_mm=margin_mm\n    )\n\n    if is_path:\n        return converter.convert_file_to_bytes(input_md, css_file=css_file)\n    else:\n        custom_css = None\n        if css_file:\n            custom_css = converter._load_css_file(css_file)\n        return converter.convert_string_to_bytes(input_md, custom_css=custom_css)\n"
  },
  {
    "path": "src/backend/bisheng/common/utils/util.py",
    "content": "import base64\nimport contextvars\nimport functools\nimport hashlib\nimport hmac\nimport os\nimport uuid\n\nimport orjson\n\n\ndef orjson_dumps(v, *, default=None, sort_keys=False, indent_2=True):\n    option = orjson.OPT_SORT_KEYS if sort_keys else None\n    if indent_2:\n        # orjson.dumps returns bytes, to match standard json.dumps we need to decode\n        # option\n        # To modify how data is serialized, specify option. Each option is an integer constant in orjson.\n        # To specify multiple options, mask them together, e.g., option=orjson.OPT_STRICT_INTEGER | orjson.OPT_NAIVE_UTC\n        if option is None:\n            option = orjson.OPT_INDENT_2\n        else:\n            option |= orjson.OPT_INDENT_2\n    if default is None:\n        return orjson.dumps(v, option=option).decode()\n    return orjson.dumps(v, default=default, option=option).decode()\n\n\ndef generate_short_high_entropy_string(length=32):\n    \"\"\"\n    Generate a short string of high entropy of the specified length (default32characters. \n\n    Parameters:\n        length: Target Length\n    \"\"\"\n    # Calculate the required number of raw bytes based on the target length (Base64Corresponds to each character6bit\n    byte_length = (length * 6 + 7) // 8  # Round Up\n\n    # Generate Encryption-Level Random Keys\n    key = os.urandom(16)  # 128Bit Key\n\n    # Generate basic random data (UUIDright of privacy128bits are sufficient as a source)\n    base_random = uuid.uuid4().bytes\n\n    # HMACCrypto Hybrid Enhanced Randomness\n    h = hmac.new(key, base_random, hashlib.sha256)\n    hmac_bytes = h.digest()\n\n    # Truncate bytes of desired length\n    combined = hmac_bytes[:byte_length]\n\n    # Convert ToURLSAFETYBase64and truncate to target length (without padding)\n    short_str = base64.urlsafe_b64encode(combined).decode().rstrip('=')[:length]\n\n    return short_str\n\n\n# --- Define decorator ---\ndef transfer_trace_id(func):\n    \"\"\"\n    Decorator: Automatically convert the current context (including trace_id) into the execution environment of the decorated function.\n    Available for Thread OR Executor。\n    \"\"\"\n\n    @functools.wraps(func)\n    def wrapper(*args, **kwargs):\n        # 1. The code here is still executing in the parent thread, capturing the context\n        ctx = contextvars.copy_context()\n        # 2. Use ctx.run Run the original function in the captured context\n        return ctx.run(func, *args, **kwargs)\n\n    return wrapper\n"
  },
  {
    "path": "src/backend/bisheng/components/__init__.py",
    "content": "from bisheng.interface.custom.custom_component import CustomComponent\n\n__all__ = [\"CustomComponent\"]\n"
  },
  {
    "path": "src/backend/bisheng/components/custom_components/CustomComponent.py",
    "content": "from bisheng import CustomComponent\nfrom bisheng.field_typing import Data\n\n\nclass Component(CustomComponent):\n    documentation: str = 'http://docs.bisheng.org/components/custom'\n\n    def build_config(self):\n        return {'param': {'display_name': 'Parameter'}}\n\n    def build(self, param: Data) -> Data:\n        return param\n"
  },
  {
    "path": "src/backend/bisheng/components/custom_components/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/ai/__init__.py",
    "content": "from langchain_anthropic import ChatAnthropic\nfrom langchain_community.chat_models import ChatTongyi, ChatZhipuAI, MiniMaxChat, MoonshotChat\nfrom langchain_community.document_compressors import DashScopeRerank\nfrom langchain_community.embeddings import DashScopeEmbeddings\nfrom langchain_deepseek import ChatDeepSeek\nfrom langchain_ollama import OllamaEmbeddings, ChatOllama\nfrom langchain_openai import ChatOpenAI, AzureChatOpenAI, OpenAIEmbeddings, AzureOpenAIEmbeddings\n\nfrom .asr import OpenAIASRClient, AliyunASRClient, AzureOpenAIASRClient\nfrom .base import BaseASRClient, BaseTTSClient\nfrom .llm.chat_openai_compatible import ChatOpenAICompatible\nfrom .rerank.common_rerank import CommonRerank\nfrom .rerank.xinference_rerank import XinferenceRerank\nfrom .tts import OpenAITTSClient, AliyunTTSClient, AzureOpenAITTSClient\n\n__all__ = [\n    'BaseASRClient',\n    'BaseTTSClient',\n\n    'OpenAIASRClient',\n    'AliyunASRClient',\n    'AzureOpenAIASRClient',\n\n    'OpenAITTSClient',\n    'AliyunTTSClient',\n    'AzureOpenAITTSClient',\n\n    'ChatOllama',\n    'ChatOpenAI',\n    'AzureChatOpenAI',\n    'ChatTongyi',\n    'ChatZhipuAI',\n    'MiniMaxChat',\n    'ChatAnthropic',\n    'ChatDeepSeek',\n    'MoonshotChat',\n    'ChatOpenAICompatible',\n\n    'OllamaEmbeddings',\n    'OpenAIEmbeddings',\n    'AzureOpenAIEmbeddings',\n    'DashScopeEmbeddings',\n\n    'DashScopeRerank',\n    'CommonRerank',\n    'XinferenceRerank'\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/asr/__init__.py",
    "content": "from .aliyun_asr_client import AliyunASRClient\nfrom .azure_openai_asr_client import AzureOpenAIASRClient\nfrom .openai_asr_client import OpenAIASRClient\n\n__all__ = [\n    'OpenAIASRClient',\n    'AliyunASRClient',\n    'AzureOpenAIASRClient'\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/asr/aliyun_asr_client.py",
    "content": "import asyncio\nfrom typing import Optional\n\nfrom dashscope.audio.asr import Recognition, RecognitionResult\n\nfrom ..base import BaseASRClient\n\n\nclass AliyunASRClient(BaseASRClient):\n    \"\"\"Alibaba CloudASRClient\"\"\"\n\n    def __init__(self, api_key: str, model: str, **kwargs):\n        \"\"\"\n        Initialize Alibaba CloudASRClient\n        \"\"\"\n\n        self.api_key = api_key\n        self.recognition = Recognition(\n            model=model,\n            format=\"wav\",\n            sample_rate=16000,\n            callback=None,\n            **kwargs\n        )\n\n    # Time-consuming operation, asynchronous execution\n    def sync_func(self, temp_file, language=None, model=None):\n        result: RecognitionResult = self.recognition.call(temp_file, api_key=self.api_key, language=language,\n                                                          model=model)\n        return result\n\n    async def _transcribe(\n            self,\n            audio: str,\n            language: Optional[str] = None,\n            model: Optional[str] = None,\n            **kwargs\n    ) -> str:\n        result: RecognitionResult = await asyncio.to_thread(self.sync_func, audio, language, model)\n        if result.status_code != 200:\n            raise RuntimeError(\n                f\"ASR request failed with status code {result.code} and message {result.message}\"\n            )\n\n        sentence = result.get_sentence()\n        if sentence and sentence[0]:\n            return sentence[0][\"text\"]\n        return \"\"\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/asr/azure_openai_asr_client.py",
    "content": "from typing import Optional\n\nimport openai\n\nfrom ..base import BaseASRClient\n\n\nclass AzureOpenAIASRClient(BaseASRClient):\n    \"\"\"MicrosoftAzure OpenAI ASRClient\"\"\"\n\n    def __init__(self, api_key: str, **kwargs):\n        self.model = kwargs.pop(\"model\", \"whisper-1\")\n        self.client = openai.AsyncAzureOpenAI(api_key=api_key, **kwargs)\n\n    async def _transcribe(\n            self,\n            audio: str,\n            language: str = \"auto\",\n            model: Optional[str] = None,\n            **kwargs\n    ) -> str:\n        \"\"\"\n        UseAzure OpenAI Whisper APISpeech Recognition\n        :param audio:\n        :param language:\n        :param model:\n        :return:\n        \"\"\"\n        with open(audio, \"rb\") as f:\n            response = await self.client.audio.transcriptions.create(\n                file=f,\n                model=model or self.model,\n                language=language if language != \"auto\" else None,\n                **kwargs\n            )\n            return response.text\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/asr/openai_asr_client.py",
    "content": "from typing import Optional, Union, BinaryIO\n\nimport openai\n\nfrom ..base import BaseASRClient\n\n\nclass OpenAIASRClient(BaseASRClient):\n    \"\"\"OpenAI ASRClient\"\"\"\n\n    def __init__(self, api_key: str, **kwargs):\n        self.model = kwargs.pop(\"model\", \"whisper-1\")\n        self.client = openai.AsyncOpenAI(api_key=api_key, **kwargs)\n\n    async def _transcribe(\n            self,\n            audio: Union[str, bytes, BinaryIO],\n            language: str = \"auto\",\n            model: Optional[str] = None,\n            **kwargs\n    ) -> str:\n        \"\"\"\n        UseOpenAI Whisper APISpeech Recognition\n\n        Args:\n            audio: Audio File Host\n            language: Language code, e.g. 'zh', 'en'\n            model: Model name, defaults to 'whisper-1'\n\n        Returns:\n            Recognized text content\n        \"\"\"\n\n        with open(audio, \"rb\") as f:\n            transcript = await self.client.audio.transcriptions.create(\n                model=model or self.model,\n                file=f,\n                language=language,\n                **kwargs\n            )\n\n        return transcript.text\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/base.py",
    "content": "import asyncio\nimport os\nimport tempfile\nimport uuid\nfrom abc import ABC, abstractmethod\nfrom typing import Optional, Union, BinaryIO, Sequence\n\nimport aiofiles\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.documents import BaseDocumentCompressor, Document\nfrom pydantic import ConfigDict\n\n\nclass BaseASRClient(ABC):\n    \"\"\"ASR (Automatic Speech Recognition) Base Interface Class\"\"\"\n\n    async def transcribe(\n            self,\n            audio: Union[str, bytes, BinaryIO],\n            language: Optional[str] = None,\n            model: Optional[str] = None,\n            **kwargs\n    ) -> str:\n        \"\"\"\n        Convert Audio to Text\n\n        Args:\n            audio: Audio file path, audio byte data, or file object\n            language: Language code, e.g. 'zh', 'en'\n            model: Used Model Name\n\n        Returns:\n            Transcribed text content\n        \"\"\"\n        if not audio:\n            raise ValueError(\"Audio input is required\")\n\n        if isinstance(audio, str):\n            with open(audio, 'rb') as audio_file:\n                audio_bytes = audio_file.read()\n        elif isinstance(audio, bytes):\n            audio_bytes = audio\n        elif hasattr(audio, 'read'):\n            audio_bytes = audio.read()\n        else:\n            raise ValueError(\"Invalid audio input type\")\n        tmp_dir = tempfile.gettempdir()\n\n        tmp_file_path = os.path.join(tmp_dir, uuid.uuid4().hex + '.wav')\n        # ffmpeg Convert To16kSampling Rate MonowavDoc.\n        converted_file_path = os.path.join(tmp_dir, uuid.uuid4().hex + '_16k_mono.wav')\n\n        try:\n            async with aiofiles.open(tmp_file_path, 'wb') as f:\n                await f.write(audio_bytes)\n\n            command = f'ffmpeg -y -i \"{tmp_file_path}\" -ar 16000 -ac 1 \"{converted_file_path}\"'\n            process = await asyncio.create_subprocess_shell(\n                command,\n                stdout=asyncio.subprocess.PIPE,\n                stderr=asyncio.subprocess.PIPE\n            )\n\n            await process.communicate()\n\n            return await self._transcribe(converted_file_path, language=language, model=model, **kwargs)\n        finally:\n            if os.path.exists(tmp_file_path):\n                os.remove(tmp_file_path)\n            if os.path.exists(converted_file_path):\n                os.remove(converted_file_path)\n\n    @abstractmethod\n    async def _transcribe(self, audio: str, language: Optional[str] = None, model: Optional[str] = None,\n                          **kwargs) -> str:\n        \"\"\"\n        Internal Method: Convert Audio to Text\n\n        Args:\n            audio: Audio File Host, Files are automatically deleted when processing is complete\n            language: Language code, e.g. 'zh', 'en'\n            model: Used Model Name\n\n        Returns:\n            Transcribed text content\n        \"\"\"\n        raise NotImplementedError\n\n\nclass BaseTTSClient(ABC):\n    \"\"\"TTS (Text To Speech) Base Interface Class\"\"\"\n\n    @abstractmethod\n    async def synthesize(\n            self,\n            text: str,\n            voice: Optional[str] = None,\n            language: Optional[str] = None,\n            format: str = \"mp3\"\n    ) -> bytes:\n        \"\"\"\n        Synthesize text into speech\n\n        Args:\n            text: Text to compose\n            voice: Audio Options\n            language: Language code\n            format: Audio formats, such as 'mp3', 'wav'\n\n        Returns:\n            Audio Bytes Data\n        \"\"\"\n        pass\n\n\nclass BaseRerank(BaseDocumentCompressor):\n    \"\"\"Rerank base interface class\"\"\"\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    @abstractmethod\n    def compress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        \"\"\"Compress retrieved documents given the query context.\n\n        Args:\n            documents: The retrieved documents.\n            query: The query context.\n            callbacks: Optional callbacks to run during compression.\n\n        Returns:\n            The compressed documents.\n\n        \"\"\"\n\n    @staticmethod\n    def sort_rerank_result(documents: Sequence[Document], results: list[dict]) -> Sequence[Document]:\n        \"\"\"Sort and annotate original documents based on rerank results.\"\"\"\n        sorted_docs = []\n        for res in results:\n            index = res.get(\"index\")\n            if index is not None and 0 <= index < len(documents):\n                doc = documents[index]\n                doc.metadata[\"relevance_score\"] = res.get(\"relevance_score\")\n                sorted_docs.append(doc)\n        return sorted_docs\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/embeddings/__init__.py",
    "content": "from langchain_community.embeddings import DashScopeEmbeddings\nfrom langchain_ollama import OllamaEmbeddings\nfrom langchain_openai import OpenAIEmbeddings, AzureOpenAIEmbeddings\n\n__all__ = [\n    'OllamaEmbeddings',\n    'OpenAIEmbeddings',\n    'AzureOpenAIEmbeddings',\n    'DashScopeEmbeddings',\n\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/llm/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/ai/llm/chat_openai_compatible.py",
    "content": "from typing import Optional, Any\n\nfrom langchain_core.language_models import LanguageModelInput\nfrom langchain_openai import ChatOpenAI\n\n\nclass ChatOpenAICompatible(ChatOpenAI):\n    \"\"\"\n    A ChatOpenAI subclass that ensures compatibility with older parameter names.\n    use max_tokens instead of max_completion_tokens.\n    \"\"\"\n\n    def _get_request_payload(\n            self,\n            input_: LanguageModelInput,\n            *,\n            stop: Optional[list[str]] = None,\n            **kwargs: Any,\n    ) -> dict:\n        payload = super()._get_request_payload(input_, stop=stop, **kwargs)\n        # max_tokens was deprecated in favor of max_completion_tokens\n        # in September 2024 release\n        if \"max_completion_tokens\" in payload:\n            payload[\"max_tokens\"] = payload.pop(\"max_completion_tokens\")\n        return payload\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/llm/custom_chat_deepseek.py",
    "content": "from typing import Optional, Any\n\nfrom langchain_core.language_models import LanguageModelInput\nfrom langchain_core.messages import AIMessage\nfrom langchain_deepseek import ChatDeepSeek\n\n\nclass CustomChatDeepSeek(ChatDeepSeek):\n\n    def _get_request_payload(\n            self,\n            input_: LanguageModelInput,\n            *,\n            stop: Optional[list[str]] = None,\n            **kwargs: Any,\n    ) -> dict:\n        payload = super()._get_request_payload(input_, stop=stop, **kwargs)\n        messages = self._convert_input(input_).to_messages()\n\n        for payload_msg, msg in zip(payload['messages'], messages):\n            if isinstance(msg, AIMessage):\n                payload_msg['reasoning_content'] = msg.additional_kwargs.get('reasoning_content', '')\n\n        return payload\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/llm/custom_chat_tongyi.py",
    "content": "from typing import Any, List, Dict\nfrom langchain_community.chat_models import ChatTongyi\nfrom langchain_core.messages import BaseMessage\n\n\nclass CustomChatTongYi(ChatTongyi):\n    \"\"\"\n    Custom ChatTongYi Model to handle multi-modal input conversion.\n    \"\"\"\n\n    def _invocation_params(\n            self, messages: List[BaseMessage], stop: Any, **kwargs: Any\n    ) -> Dict[str, Any]:\n        # Get basic call parameters\n        params = super()._invocation_params(messages, stop, **kwargs)\n\n        # Iterate through and clean the messages data\n        if \"messages\" in params:\n            for msg in params[\"messages\"]:\n                # Only when the content is a list (multimodal) is processing required.\n                if \"content\" in msg and isinstance(msg[\"content\"], list):\n                    new_content = []\n                    for item in msg[\"content\"]:\n                        # Check if the image_url is in OpenAI format.\n                        if isinstance(item, dict) and item.get(\"type\") == \"image_url\":\n                            # Extract the URL string\n                            image_url_data = item.get(\"image_url\")\n                            url_str = \"\"\n\n                            if isinstance(image_url_data, dict):\n                                url_str = image_url_data.get(\"url\", \"\")\n                            elif isinstance(image_url_data, str):\n                                url_str = image_url_data\n\n                            # Append the cleaned image data\n                            if url_str:\n                                new_content.append({\n                                    \"type\": \"image\",\n                                    \"image\": url_str\n                                })\n                        else:\n                            # Non-image data is directly appended\n                            new_content.append(item)\n\n                    # Update the message content with cleaned data\n                    msg[\"content\"] = new_content\n\n        return params\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/common_rerank.py",
    "content": "from typing import Optional, Sequence\n\nfrom httpx import Client, AsyncClient\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.documents import Document\nfrom pydantic import Field, model_validator\nfrom typing_extensions import Self\n\nfrom ..base import BaseRerank\n\n\nclass CommonRerank(BaseRerank):\n    \"\"\"Document compressor that support `/v1/rerank` router and results simial vllm.\"\"\"\n\n    base_url: str = Field(..., description=\"server base url， example: http://localhost:9997\")\n    rerank_endpoint: str = Field(default=\"/v1/rerank\", description=\"rerank endpoint for base url\")\n\n    api_key: Optional[str] = Field(default=\"\", description=\"api key for rerank server\")\n    model: str = Field(..., description=\"model name for rerank model\")\n\n    client: Optional[Client] = Field(default=None, description=\"client instance\")\n    async_client: Optional[AsyncClient] = Field(default=None, description=\"async client instance\")\n\n    @model_validator(mode=\"after\")\n    def validate_client(self) -> Self:\n        \"\"\"Validate that client exists in environment.\"\"\"\n        self.base_url = self.base_url.rstrip(\"/\") if self.base_url else self.base_url\n        if not self.client:\n            self.client = Client(base_url=self.base_url)\n        if not self.async_client:\n            self.async_client = AsyncClient(base_url=self.base_url)\n        return self\n\n    def get_default_headers(self):\n        headers = {}\n        if self.api_key:\n            headers[\"Authorization\"] = f\"Bearer {self.api_key}\"\n        return headers\n\n    def get_default_params(self):\n        params = {}\n        if self.model:\n            params[\"model\"] = self.model\n        return params\n\n    def get_req_data(\n            self,\n            documents: Sequence[Document],\n            query: str\n    ) -> dict:\n        if len(documents) == 0:  # to avoid empty api call\n            return {}\n        docs = [\n            doc.page_content if isinstance(doc, Document) else doc for doc in documents\n        ]\n\n        req_data = self.get_default_params()\n        req_data[\"query\"] = query\n        req_data[\"documents\"] = docs\n        return req_data\n\n    def compress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        \"\"\"Rerank retrieved documents given the query context.\n\n        Args:\n            documents: The retrieved documents.\n            query: The query context.\n            callbacks: Optional callbacks to run during compression.\n\n        Returns:\n            The compressed documents.\n        \"\"\"\n        req_data = self.get_req_data(documents, query)\n        if not req_data:\n            return []\n\n        resp = self.client.post(self.rerank_endpoint, json=req_data, headers=self.get_default_headers())\n        if resp.status_code != 200:\n            raise ValueError(f\"Rerank request failed with status code {resp.status_code}: {resp.text}\")\n        results = resp.json().get(\"results\", [])\n        return self.sort_rerank_result(documents, results)\n\n    async def acompress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        \"\"\"Async rerank retrieved documents given the query context.\n\n        Args:\n            documents: The retrieved documents.\n            query: The query context.\n            callbacks: Optional callbacks to run during compression.\n\n        Returns:\n            The compressed documents.\n        \"\"\"\n        req_data = self.get_req_data(documents, query)\n        if not req_data:\n            return []\n        resp = await self.async_client.post(self.rerank_endpoint, json=req_data, headers=self.get_default_headers())\n        if resp.status_code != 200:\n            raise ValueError(f\"Rerank request failed with status code {resp.status_code}: {resp.text}\")\n        results = resp.json().get(\"results\", [])\n        return self.sort_rerank_result(documents, results)\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/rrf_rerank.py",
    "content": "from typing import Sequence, Optional, List, Any, Dict\n\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.documents import Document\nfrom pydantic import model_validator\n\nfrom bisheng.core.ai.base import BaseRerank\n\n\nclass RRFRerank(BaseRerank):\n    \"\"\"\n    Perform weighted Reciprocal Rank Fusion on multiple rank lists.\n    You can find more details about RRF here:\n    https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf\n\n    It uses a rank fusion.\n\n    Args:\n        retrievers: A list of retrievers to ensemble.\n        weights: A list of weights corresponding to the retrievers. Defaults to equal\n            weighting for all retrievers.\n        c: A constant added to the rank, controlling the balance between the importance\n            of high-ranked items and the consideration given to lower-ranked items.\n            Default is 60.\n    \"\"\"\n    retrievers: List[Any]\n    weights: List[float] = None\n    c: int = 60\n    remove_zero_score: bool = False\n\n    @model_validator(mode='before')\n    @classmethod\n    def set_weights(cls, values: Dict[str, Any]) -> Dict[str, Any]:\n        if not values.get(\"weights\"):\n            n_retrievers = len(values[\"retrievers\"])\n            values[\"weights\"] = [1 / n_retrievers] * n_retrievers\n        return values\n\n    def compress_documents(\n            self,\n            documents: List[List[Document]],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        \"\"\"\n        Args:\n            documents: A list of document lists for each retriever search list[document].\n            query: The query to use for computing weighted reciprocal rank.\n            callbacks: Optional callbacks to use for computing weighted reciprocal rank.\n\n        Returns:\n            list: The final aggregated list of items sorted by their weighted RRF\n                    scores in descending order. and remove duplicates document.\n                \"\"\"\n        if len(documents) != len(self.weights):\n            raise ValueError(\"Number of rank lists must be equal to the number of weights.\")\n\n        # Create a union of all unique documents in the input doc_lists\n        all_documents = set()\n        for doc_list in documents:\n            for doc in doc_list:\n                all_documents.add(doc.page_content)\n\n        # Initialize the RRF score dictionary for each document\n        rrf_score_dic = {doc: 0.0 for doc in all_documents}\n\n        # Calculate RRF scores for each document\n        for doc_list, weight in zip(documents, self.weights):\n            for rank, doc in enumerate(doc_list, start=1):\n                rrf_score = weight * (1 / (rank + self.c))\n                rrf_score_dic[doc.page_content] += rrf_score\n\n        # Sort documents by their RRF scores in descending order\n        sorted_documents = sorted(rrf_score_dic.keys(), key=lambda x: rrf_score_dic[x], reverse=True)\n\n        # Map the sorted page_content back to the original document objects\n        page_content_to_doc_map = {doc.page_content: doc for doc_list in documents for doc in doc_list}\n        if self.remove_zero_score:\n            sorted_docs = [page_content_to_doc_map[page_content] for page_content in sorted_documents if\n                           rrf_score_dic[page_content] > 0]\n        else:\n            sorted_docs = [page_content_to_doc_map[page_content] for page_content in sorted_documents]\n        return sorted_docs\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/_compat.py",
    "content": "# Copyright 2022-2024 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nfrom typing import Dict, Iterable, List, Literal, Optional, Union\n\nfrom pydantic.version import VERSION as PYDANTIC_VERSION\n\nPYDANTIC_V2 = PYDANTIC_VERSION.startswith(\"2.\")\n\n\nif PYDANTIC_V2:\n    from pydantic.v1 import (  # noqa: F401\n        BaseModel,\n        Field,\n        Protocol,\n        ValidationError,\n        create_model,\n        create_model_from_namedtuple,\n        create_model_from_typeddict,\n        parse_file_as,\n        validate_arguments,\n        validator,\n    )\n    from pydantic.v1.error_wrappers import ErrorWrapper  # noqa: F401\n    from pydantic.v1.parse import load_str_bytes  # noqa: F401\n    from pydantic.v1.types import StrBytes  # noqa: F401\n    from pydantic.v1.utils import ROOT_KEY  # noqa: F401\nelse:\n    from pydantic import (  # noqa: F401\n        BaseModel,\n        Field,\n        Protocol,\n        ValidationError,\n        create_model,\n        create_model_from_namedtuple,\n        create_model_from_typeddict,\n        parse_file_as,\n        validate_arguments,\n        validator,\n    )\n    from pydantic.error_wrappers import ErrorWrapper  # noqa: F401\n    from pydantic.parse import load_str_bytes  # noqa: F401\n    from pydantic.types import StrBytes  # noqa: F401\n    from pydantic.utils import ROOT_KEY  # noqa: F401\n\nfrom openai.types.chat.chat_completion_named_tool_choice_param import (\n    ChatCompletionNamedToolChoiceParam,\n)\nfrom openai.types.chat.chat_completion_stream_options_param import (\n    ChatCompletionStreamOptionsParam,\n)\nfrom openai.types.chat.chat_completion_tool_param import ChatCompletionToolParam\nfrom openai.types.shared_params.response_format_json_object import (\n    ResponseFormatJSONObject,\n)\nfrom openai.types.shared_params.response_format_text import ResponseFormatText\n\nOpenAIChatCompletionStreamOptionsParam = create_model_from_typeddict(\n    ChatCompletionStreamOptionsParam\n)\nOpenAIChatCompletionToolParam = create_model_from_typeddict(ChatCompletionToolParam)\nOpenAIChatCompletionNamedToolChoiceParam = create_model_from_typeddict(\n    ChatCompletionNamedToolChoiceParam\n)\nfrom openai._types import Body\n\n\nclass JSONSchema(BaseModel):\n    name: str\n    description: Optional[str] = None\n    schema_: Optional[Dict[str, object]] = Field(alias=\"schema\", default=None)\n    strict: Optional[bool] = None\n\n\nclass ResponseFormatJSONSchema(BaseModel):\n    json_schema: JSONSchema\n    type: Literal[\"json_schema\"]\n\n\nResponseFormat = Union[\n    ResponseFormatText, ResponseFormatJSONObject, ResponseFormatJSONSchema\n]\n\n\nclass CreateChatCompletionOpenAI(BaseModel):\n    \"\"\"\n    Comes from source code: https://github.com/openai/openai-python/blob/main/src/openai/types/chat/completion_create_params.py\n    \"\"\"\n\n    messages: List[Dict]\n    model: str\n    frequency_penalty: Optional[float]\n    logit_bias: Optional[Dict[str, int]]\n    logprobs: Optional[bool]\n    max_completion_tokens: Optional[int]\n    max_tokens: Optional[int]\n    n: Optional[int]\n    parallel_tool_calls: Optional[bool]\n    presence_penalty: Optional[float]\n    response_format: Optional[ResponseFormat]\n    seed: Optional[int]\n    service_tier: Optional[Literal[\"auto\", \"default\"]]\n    stop: Union[Optional[str], List[str]]\n    stream_options: Optional[OpenAIChatCompletionStreamOptionsParam]  # type: ignore\n    temperature: Optional[float]\n    tool_choice: Optional[  # type: ignore\n        Union[\n            Literal[\"none\", \"auto\", \"required\"],\n            OpenAIChatCompletionNamedToolChoiceParam,\n        ]\n    ]\n    tools: Optional[Iterable[OpenAIChatCompletionToolParam]]  # type: ignore\n    top_logprobs: Optional[int]\n    top_p: Optional[float]\n    extra_body: Optional[Body]\n    user: Optional[str]\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/__init__.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom .restful.async_restful_client import AsyncClient\nfrom .restful.restful_client import Client\n\n# For compatibility\nRESTfulClient = Client\nAsyncRESTfulClient = AsyncClient\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/common.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport json\nfrom typing import Any, AsyncIterator, Iterator, Union\n\n\ndef convert_float_to_int_or_str(model_size: float) -> Union[int, str]:\n    \"\"\"convert float to int or string\n\n    if float can be presented as int, convert it to int, otherwise convert it to string\n    \"\"\"\n    if int(model_size) == model_size:\n        return int(model_size)\n    else:\n        return str(model_size)\n\n\ndef streaming_response_iterator(\n    response_lines: Iterator[bytes],\n) -> Iterator[Any]:\n    \"\"\"\n    Create an Iterator to handle the streaming type of generation.\n\n    Note\n    ----------\n    This method is for compatible with openai. Please refer to:\n    https://github.com/openai/openai-python/blob/v0.28.1/openai/api_requestor.py#L99\n\n    Parameters\n    ----------\n    response_lines: Iterator[bytes]\n        Generated lines by the Model Generator.\n\n    Returns\n    -------\n    Iterator[\"CompletionChunk\"]\n        Iterator of CompletionChunks generated by models.\n\n    \"\"\"\n\n    for line in response_lines:\n        line = line.strip()\n        if line.startswith(b\"data:\"):\n            json_str = line[len(b\"data:\") :].strip()\n            if json_str == b\"[DONE]\":\n                continue\n            data = json.loads(json_str.decode(\"utf-8\"))\n            error = data.get(\"error\", None)\n            if error is not None:\n                raise Exception(str(error))\n            yield data\n\n\nasync def async_streaming_response_iterator(\n    response_lines: AsyncIterator[bytes],\n) -> AsyncIterator[Any]:\n    \"\"\"\n    Create an AsyncIterator to handle the streaming type of generation.\n\n    Note\n    ----------\n    This method is for compatible with openai. Please refer to:\n    https://github.com/openai/openai-python/blob/v0.28.1/openai/api_requestor.py#L99\n\n    Parameters\n    ----------\n    response_lines: AsyncIterator[bytes]\n        Generated lines by the Model Generator.\n\n    Returns\n    -------\n    AsyncIterator[\"CompletionChunk\"]\n        AsyncIterator of CompletionChunks generated by models.\n\n    \"\"\"\n\n    async for line in response_lines:\n        line = line.strip()\n        if line.startswith(b\"data:\"):\n            json_str = line[len(b\"data:\") :].strip()\n            if json_str == b\"[DONE]\":\n                continue\n            data = json.loads(json_str.decode(\"utf-8\"))\n            error = data.get(\"error\", None)\n            if error is not None:\n                raise Exception(str(error))\n            yield data\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/handlers.py",
    "content": "from .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulAudioModelHandle as AsyncAudioModelHandle,\n)\nfrom .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulChatModelHandle as AsyncChatModelHandle,\n)\nfrom .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulEmbeddingModelHandle as AsyncEmbeddingModelHandle,\n)\nfrom .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulGenerateModelHandle as AsyncGenerateModelHandle,\n)\nfrom .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulImageModelHandle as AsyncImageModelHandle,\n)\nfrom .restful.async_restful_client import (  # noqa: F401\n    AsyncRESTfulVideoModelHandle as AsyncVideoModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulAudioModelHandle as AudioModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulChatModelHandle as ChatModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulEmbeddingModelHandle as EmbeddingModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulGenerateModelHandle as GenerateModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulImageModelHandle as ImageModelHandle,\n)\nfrom .restful.restful_client import (  # noqa: F401\n    RESTfulVideoModelHandle as VideoModelHandle,\n)\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/restful/__init__.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/restful/async_restful_client.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport asyncio\nimport json\nfrom typing import TYPE_CHECKING, Any, AsyncIterator, Dict, List, Optional, Union\n\nimport aiohttp\n\nfrom ..common import async_streaming_response_iterator, convert_float_to_int_or_str\n\nif TYPE_CHECKING:\n    from ...types import (\n        ChatCompletion,\n        ChatCompletionChunk,\n        Completion,\n        CompletionChunk,\n        Embedding,\n        ImageList,\n        PytorchGenerateConfig,\n        VideoList,\n    )\n\n\ndef _filter_params(params: Dict[Any, Any]) -> Dict[Any, Any]:\n    filtered = {}\n    for key, value in params.items():\n        if value is not None:\n            filtered[key] = value\n    return filtered\n\n\nasync def _get_error_string(response: aiohttp.ClientResponse) -> str:\n    result = None\n    try:\n        if response.content:\n            json_data = await response.json()\n            result = json_data[\"detail\"]\n    except Exception:\n        pass\n    try:\n        response.raise_for_status()\n    except aiohttp.ClientError as e:\n        result = str(e)\n    if result is None:\n        result = \"Unknown error\"\n    await _release_response(response)\n    return result\n\n\nasync def _release_response(response: aiohttp.ClientResponse):\n    \"\"\"Release the aiohttp response.\"\"\"\n    response.release()\n    await response.wait_for_close()\n\n\nclass AsyncRESTfulModelHandle:\n    \"\"\"\n    A sync model interface (for RESTful client) which provides type hints that makes it much easier to use xinference\n    programmatically.\n    \"\"\"\n\n    def __init__(self, model_uid: str, base_url: str, auth_headers: Dict):\n        self._model_uid = model_uid\n        self._base_url = base_url\n        self.auth_headers = auth_headers\n        self.timeout = aiohttp.ClientTimeout(total=1800)\n        self.session = aiohttp.ClientSession(\n            connector=aiohttp.TCPConnector(force_close=True)\n        )\n\n    async def close(self):\n        \"\"\"Close the AsyncRESTfulModelHandle session.\"\"\"\n        if self.session:\n            await self.session.close()\n            self.session = None\n\n    def __del__(self):\n        if self.session:\n            loop = asyncio.get_event_loop()\n            loop.create_task(self.close())\n\n\nclass AsyncRESTfulEmbeddingModelHandle(AsyncRESTfulModelHandle):\n    async def create_embedding(\n        self, input: Union[str, List[str]], **kwargs\n    ) -> \"Embedding\":\n        \"\"\"\n        Create an Embedding from user input via RESTful APIs.\n\n        Parameters\n        ----------\n        input: Union[str, List[str]]\n            Input text to embed, encoded as a string or array of tokens.\n            To embed multiple inputs in a single request, pass an array of strings or array of token arrays.\n\n        Returns\n        -------\n        Embedding\n           The resulted Embedding vector that can be easily consumed by machine learning models and algorithms.\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of embeddings and provide the error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/embeddings\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"input\": input,\n        }\n        request_body.update(kwargs)\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to create the embeddings, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def convert_ids_to_tokens(\n        self, input: Union[List, List[List]], **kwargs\n    ) -> List[str]:\n        \"\"\"\n        Convert token IDs to human readable tokens via RESTful APIs.\n\n        Parameters\n        ----------\n        input: Union[List, List[List]]\n            Input token IDs to convert, can be a single list of token IDs or a list of token ID lists.\n            To convert multiple sequences in a single request, pass a list of token ID lists.\n\n        Returns\n        -------\n        list\n            A list of decoded tokens in human readable format.\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of token conversion and provide the error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/convert_ids_to_tokens\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"input\": input,\n        }\n        request_body.update(kwargs)\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to decode token ids, detail: {await _get_error_string(response)}\"\n            )\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulRerankModelHandle(AsyncRESTfulModelHandle):\n    async def rerank(\n        self,\n        documents: List[str],\n        query: str,\n        top_n: Optional[int] = None,\n        max_chunks_per_doc: Optional[int] = None,\n        return_documents: Optional[bool] = None,\n        return_len: Optional[bool] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Returns an ordered list of documents ordered by their relevance to the provided query.\n\n        Parameters\n        ----------\n        query: str\n            The search query\n        documents: List[str]\n            The documents to rerank\n        top_n: int\n            The number of results to return, defaults to returning all results\n        max_chunks_per_doc: int\n            The maximum number of chunks derived from a document\n        return_documents: bool\n            if return documents\n        return_len: bool\n            if return tokens len\n        Returns\n        -------\n        Scores\n           The scores of documents ordered by their relevance to the provided query\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of rerank and provide the error message.\n        \"\"\"\n        url = f\"{self._base_url}/v1/rerank\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"documents\": documents,\n            \"query\": query,\n            \"top_n\": top_n,\n            \"max_chunks_per_doc\": max_chunks_per_doc,\n            \"return_documents\": return_documents,\n            \"return_len\": return_len,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        request_body.update(kwargs)\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to rerank documents, detail: {await _get_error_string(response)}\"\n            )\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulImageModelHandle(AsyncRESTfulModelHandle):\n    async def text_to_image(\n        self,\n        prompt: str,\n        n: int = 1,\n        size: str = \"1024*1024\",\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Creates an image by the input text.\n\n        Parameters\n        ----------\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to `1024*1024`\n            The width*height in pixels of the generated image. Must be one of 256x256, 512x512, or 1024x1024.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/generations\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to create the images, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def image_to_image(\n        self,\n        image: Union[str, bytes, List[Union[str, bytes]]],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Creates an image by the input text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes, List[Union[str, bytes]]]`\n            The ControlNet input condition to provide guidance to the `unet` for generation. If the type is\n            specified as `torch.FloatTensor`, it is passed to ControlNet as is. `PIL.Image.Image` can also be\n            accepted as an image. The dimensions of the output image defaults to `image`'s dimensions. If height\n            and/or width are passed, `image` is resized accordingly. If multiple ControlNets are specified in\n            `init`, images must be passed as a list such that each element of the list can be correctly batched for\n            input to a single ControlNet.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation. If not defined, one has to pass\n            `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is\n            less than `1`).\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to `1024*1024`\n            The width*height in pixels of the generated image. Must be one of 256x256, 512x512, or 1024x1024.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n            :param prompt:\n            :param image:\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/variations\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n\n        # Handle both single image and list of images\n        if isinstance(image, list):\n            if len(image) == 0:\n                raise ValueError(\"Image list cannot be empty\")\n            elif len(image) == 1:\n                # Single image in list, use it directly\n                files.append((\"image\", (\"image\", image[0], \"application/octet-stream\")))\n            else:\n                # Multiple images - send all images with same field name\n                # FastAPI will collect them into a list\n                for img_data in image:\n                    files.append(\n                        (\"image\", (\"image\", img_data, \"application/octet-stream\"))\n                    )\n        else:\n            # Single image\n            files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = await self.session.post(url, data=files, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to variants the images, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def image_edit(\n        self,\n        image: Union[Union[str, bytes], List[Union[str, bytes]]],\n        prompt: str,\n        mask: Optional[Union[str, bytes]] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Edit image(s) by the input text and optional mask.\n\n        Parameters\n        ----------\n        image: `Union[Union[str, bytes], List[Union[str, bytes]]]`\n            The input image(s) to edit. Can be:\n            - Single image: file path, URL, or binary image data\n            - Multiple images: list of file paths, URLs, or binary image data\n            When multiple images are provided, the first image is used as the primary image\n            and subsequent images are used as reference images for better editing results.\n        prompt: `str`\n            The prompt or prompts to guide image editing. If not defined, you need to pass `prompt_embeds`.\n        mask: `Optional[Union[str, bytes]]`, optional\n            An optional mask image. White pixels in the mask are repainted while black pixels are preserved.\n            If provided, this will trigger inpainting mode. If not provided, this will trigger image-to-image mode.\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `Optional[str]`, optional\n            The width*height in pixels of the generated image. If not specified, uses the original image size.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        **kwargs\n            Additional parameters to pass to the model.\n\n        Returns\n        -------\n        ImageList\n            A list of edited image objects.\n\n        Raises\n        ------\n        RuntimeError\n            If the image editing request fails.\n\n        Examples\n        --------\n        # Single image editing\n        result = await model.image_edit(\n            image=\"path/to/image.png\",\n            prompt=\"make this image look like a painting\"\n        )\n\n        # Multiple image editing with reference images\n        result = await model.image_edit(\n            image=[\"primary_image.png\", \"reference1.jpg\", \"reference2.png\"],\n            prompt=\"edit the main image using the style from reference images\"\n        )\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/edits\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n\n        # Handle single image or multiple images\n        import aiohttp\n\n        data = aiohttp.FormData()\n\n        # Add all parameters as form fields\n        for key, value in params.items():\n            if value is not None:\n                data.add_field(key, str(value))\n\n        # Handle single image or multiple images\n        if isinstance(image, list):\n            # Validate image list is not empty\n            if len(image) == 0:\n                raise ValueError(\"Image list cannot be empty\")\n            # Multiple images - send as image[] array\n            for i, img in enumerate(image):\n                if isinstance(img, str):\n                    # File path - read file content\n                    with open(img, \"rb\") as f:\n                        content = f.read()\n                    data.add_field(\n                        f\"image[]\",\n                        content,\n                        filename=f\"image_{i}.png\",\n                        content_type=\"image/png\",\n                    )\n                else:\n                    # Binary data\n                    data.add_field(\n                        f\"image[]\",\n                        img,\n                        filename=f\"image_{i}.png\",\n                        content_type=\"image/png\",\n                    )\n        else:\n            # Single image\n            if isinstance(image, str):\n                # File path - read file content\n                with open(image, \"rb\") as f:\n                    content = f.read()\n                data.add_field(\n                    \"image\", content, filename=\"image.png\", content_type=\"image/png\"\n                )\n            else:\n                # Binary data\n                data.add_field(\n                    \"image\", image, filename=\"image.png\", content_type=\"image/png\"\n                )\n\n        if mask is not None:\n            if isinstance(mask, str):\n                # File path - read file content\n                with open(mask, \"rb\") as f:\n                    content = f.read()\n                data.add_field(\n                    \"mask\", content, filename=\"mask.png\", content_type=\"image/png\"\n                )\n            else:\n                # Binary data\n                data.add_field(\n                    \"mask\", mask, filename=\"mask.png\", content_type=\"image/png\"\n                )\n\n        try:\n            response = await self.session.post(\n                url, data=data, headers=self.auth_headers\n            )\n            if response.status != 200:\n                raise RuntimeError(\n                    f\"Failed to edit the images, detail: {await _get_error_string(response)}\"\n                )\n\n            response_data = await response.json()\n            return response_data\n        finally:\n            await _release_response(response) if \"response\" in locals() else None\n\n    async def inpainting(\n        self,\n        image: Union[str, bytes],\n        mask_image: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Inpaint an image by the input text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes]`\n            an image batch to be inpainted (which parts of the image to\n            be masked out with `mask_image` and repainted according to `prompt`). For both numpy array and pytorch\n            tensor, the expected value range is between `[0, 1]` If it's a tensor or a list or tensors, the\n            expected shape should be `(B, C, H, W)` or `(C, H, W)`. If it is a numpy array or a list of arrays, the\n            expected shape should be `(B, H, W, C)` or `(H, W, C)` It can also accept image latents as `image`, but\n            if passing latents directly it is not encoded again.\n        mask_image: `Union[str, bytes]`\n            representing an image batch to mask `image`. White pixels in the mask\n            are repainted while black pixels are preserved. If `mask_image` is a PIL image, it is converted to a\n            single channel (luminance) before use. If it's a numpy array or pytorch tensor, it should contain one\n            color channel (L) instead of 3, so the expected shape for pytorch tensor would be `(B, 1, H, W)`, `(B,\n            H, W)`, `(1, H, W)`, `(H, W)`. And for numpy array would be for `(B, H, W, 1)`, `(B, H, W)`, `(H, W,\n            1)`, or `(H, W)`.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation. If not defined, one has to pass\n            `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is\n            less than `1`).\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to None\n            The width*height in pixels of the generated image.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n            :param prompt:\n            :param image:\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/inpainting\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        files.append(\n            (\n                \"mask_image\",\n                (\"mask_image\", mask_image, \"application/octet-stream\"),\n            )\n        )\n        response = await self.session.post(url, data=files, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to inpaint the images, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def ocr(self, image: Union[str, bytes], **kwargs):\n        url = f\"{self._base_url}/v1/images/ocr\"\n        params = {\n            \"model\": self._model_uid,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = await self.session.post(url, data=files, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to ocr the images, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulVideoModelHandle(AsyncRESTfulModelHandle):\n    async def text_to_video(\n        self,\n        prompt: str,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the input text.\n\n        Parameters\n        ----------\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to create the video, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def image_to_video(\n        self,\n        image: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the input image and text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes]`\n            The input image to condition the generation on.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations/image\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = await self.session.post(url, data=files, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to create the video from image, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def flf_to_video(\n        self,\n        first_frame: Union[str, bytes],\n        last_frame: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the first frame, last frame and text.\n\n        Parameters\n        ----------\n        first_frame: `Union[str, bytes]`\n            The first frame to condition the generation on.\n        last_frame: `Union[str, bytes]`\n            The last frame to condition the generation on.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations/flf\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append(\n            (\"first_frame\", (\"image\", first_frame, \"application/octet-stream\"))\n        )\n        files.append((\"last_frame\", (\"image\", last_frame, \"application/octet-stream\")))\n        response = await self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to create the video from image, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulGenerateModelHandle(AsyncRESTfulModelHandle):\n    async def generate(\n        self,\n        prompt: str,\n        generate_config: Optional[\"PytorchGenerateConfig\"] = None,\n    ) -> Union[\"Completion\", AsyncIterator[\"CompletionChunk\"]]:\n        \"\"\"\n        Creates a completion for the provided prompt and parameters via RESTful APIs.\n\n        Parameters\n        ----------\n        prompt: str\n            The user's message or user's input.\n        generate_config: Optional[\"PytorchGenerateConfig\"]\n            Additional configuration for the chat generation.\n            \"PytorchGenerateConfig\" -> Configuration for pytorch model\n\n        Returns\n        -------\n        Union[\"Completion\", AsyncIterator[\"CompletionChunk\"]]\n            Stream is a parameter in generate_config.\n            When stream is set to True, the function will return AsyncIterator[\"CompletionChunk\"].\n            When stream is set to False, the function will return \"Completion\".\n\n        Raises\n        ------\n        RuntimeError\n            Fail to generate the completion from the server. Detailed information provided in error message.\n\n        \"\"\"\n\n        url = f\"{self._base_url}/v1/completions\"\n\n        request_body: Dict[str, Any] = {\"model\": self._model_uid, \"prompt\": prompt}\n        if generate_config is not None:\n            for key, value in generate_config.items():\n                request_body[key] = value\n\n        stream = bool(generate_config and generate_config.get(\"stream\"))\n\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to generate completion, detail: {await _get_error_string(response)}\"\n            )\n\n        if stream:\n            return async_streaming_response_iterator(response.content)\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulChatModelHandle(AsyncRESTfulGenerateModelHandle):\n    async def chat(\n        self,\n        messages: List[Dict],\n        tools: Optional[List[Dict]] = None,\n        generate_config: Optional[\"PytorchGenerateConfig\"] = None,\n    ) -> Union[\"ChatCompletion\", AsyncIterator[\"ChatCompletionChunk\"]]:\n        \"\"\"\n        Given a list of messages comprising a conversation, the model will return a response via RESTful APIs.\n\n        Parameters\n        ----------\n        messages: List[Dict]\n            A list of messages comprising the conversation so far.\n        tools: Optional[List[Dict]]\n            A tool list.\n        generate_config: Optional[\"PytorchGenerateConfig\"]\n            Additional configuration for the chat generation.\n            \"PytorchGenerateConfig\" -> configuration for pytorch model\n\n        Returns\n        -------\n        Union[\"ChatCompletion\", AsyncIterator[\"ChatCompletionChunk\"]]\n            Stream is a parameter in generate_config.\n            When stream is set to True, the function will return AsyncIterator[\"ChatCompletionChunk\"].\n            When stream is set to False, the function will return \"ChatCompletion\".\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure to generate the chat from the server. Detailed information provided in error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/chat/completions\"\n\n        request_body: Dict[str, Any] = {\n            \"model\": self._model_uid,\n            \"messages\": messages,\n        }\n        if tools is not None:\n            request_body[\"tools\"] = tools\n        if generate_config is not None:\n            for key, value in generate_config.items():\n                request_body[key] = value\n\n        stream = bool(generate_config and generate_config.get(\"stream\"))\n        response = await self.session.post(\n            url, json=request_body, headers=self.auth_headers\n        )\n\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to generate chat completion, detail: {await _get_error_string(response)}\"\n            )\n\n        if stream:\n            return async_streaming_response_iterator(response.content)\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n\nclass AsyncRESTfulAudioModelHandle(AsyncRESTfulModelHandle):\n    async def transcriptions(\n        self,\n        audio: bytes,\n        language: Optional[str] = None,\n        prompt: Optional[str] = None,\n        response_format: Optional[str] = \"json\",\n        temperature: Optional[float] = 0,\n        timestamp_granularities: Optional[List[str]] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Transcribes audio into the input language.\n\n        Parameters\n        ----------\n\n        audio: bytes\n            The audio file object (not file name) to transcribe, in one of these formats: flac, mp3, mp4, mpeg,\n            mpga, m4a, ogg, wav, or webm.\n        language: Optional[str]\n            The language of the input audio. Supplying the input language in ISO-639-1\n            (https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format will improve accuracy and latency.\n        prompt: Optional[str]\n            An optional text to guide the model's style or continue a previous audio segment.\n            The prompt should match the audio language.\n        response_format: Optional[str], defaults to json\n            The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt.\n        temperature: Optional[float], defaults to 0\n            The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random,\n            while lower values like 0.2 will make it more focused and deterministic.\n            If set to 0, the model will use log probability to automatically increase the temperature\n            until certain thresholds are hit.\n        timestamp_granularities: Optional[List[str]], default is None.\n            The timestamp granularities to populate for this transcription. response_format must be set verbose_json\n            to use timestamp granularities. Either or both of these options are supported: word, or segment.\n            Note: There is no additional latency for segment timestamps, but generating word timestamps incurs\n            additional latency.\n\n        Returns\n        -------\n            The transcribed text.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/transcriptions\"\n        params = {\n            \"model\": self._model_uid,\n            \"language\": language,\n            \"prompt\": prompt,\n            \"response_format\": response_format,\n            \"temperature\": temperature,\n            \"timestamp_granularities[]\": timestamp_granularities,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        files.append((\"file\", (\"file\", audio, \"application/octet-stream\")))\n        response = await self.session.post(\n            url, data=params, files=files, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to transcribe the audio, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def translations(\n        self,\n        audio: bytes,\n        language: Optional[str] = None,\n        prompt: Optional[str] = None,\n        response_format: Optional[str] = \"json\",\n        temperature: Optional[float] = 0,\n        timestamp_granularities: Optional[List[str]] = None,\n    ):\n        \"\"\"\n        Translates audio into English.\n\n        Parameters\n        ----------\n\n        audio: bytes\n            The audio file object (not file name) to transcribe, in one of these formats: flac, mp3, mp4, mpeg,\n            mpga, m4a, ogg, wav, or webm.\n        language: Optional[str]\n            The language of the input audio. Supplying the input language in ISO-639-1\n            (https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format will improve accuracy and latency.\n        prompt: Optional[str]\n            An optional text to guide the model's style or continue a previous audio segment.\n            The prompt should match the audio language.\n        response_format: Optional[str], defaults to json\n            The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt.\n        temperature: Optional[float], defaults to 0\n            The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random,\n            while lower values like 0.2 will make it more focused and deterministic.\n            If set to 0, the model will use log probability to automatically increase the temperature\n            until certain thresholds are hit.\n        timestamp_granularities: Optional[List[str]], default is None.\n            The timestamp granularities to populate for this transcription. response_format must be set verbose_json\n            to use timestamp granularities. Either or both of these options are supported: word, or segment.\n            Note: There is no additional latency for segment timestamps, but generating word timestamps incurs\n            additional latency.\n\n        Returns\n        -------\n            The translated text.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/translations\"\n        params = {\n            \"model\": self._model_uid,\n            \"language\": language,\n            \"prompt\": prompt,\n            \"response_format\": response_format,\n            \"temperature\": temperature,\n            \"timestamp_granularities[]\": timestamp_granularities,\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        files.append((\"file\", (\"file\", audio, \"application/octet-stream\")))\n        response = await self.session.post(\n            url, data=params, files=files, headers=self.auth_headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to translate the audio, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def speech(\n        self,\n        input: str,\n        voice: str = \"\",\n        response_format: str = \"mp3\",\n        speed: float = 1.0,\n        stream: bool = False,\n        prompt_speech: Optional[bytes] = None,\n        prompt_latent: Optional[bytes] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Generates audio from the input text.\n\n        Parameters\n        ----------\n\n        input: str\n            The text to generate audio for. The maximum length is 4096 characters.\n        voice: str\n            The voice to use when generating the audio.\n        response_format: str\n            The format to audio in.\n        speed: str\n            The speed of the generated audio.\n        stream: bool\n            Use stream or not.\n        prompt_speech: bytes\n            The audio bytes to be provided to the model.\n        prompt_latent: bytes\n            The latent bytes to be provided to the model.\n\n        Returns\n        -------\n        bytes\n            The generated audio binary.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/speech\"\n        params = {\n            \"model\": self._model_uid,\n            \"input\": input,\n            \"voice\": voice,\n            \"response_format\": response_format,\n            \"speed\": speed,\n            \"stream\": stream,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        params = _filter_params(params)\n        files: List[Any] = []\n        if prompt_speech:\n            files.append(\n                (\n                    \"prompt_speech\",\n                    (\"prompt_speech\", prompt_speech, \"application/octet-stream\"),\n                )\n            )\n        if prompt_latent:\n            files.append(\n                (\n                    \"prompt_latent\",\n                    (\"prompt_latent\", prompt_latent, \"application/octet-stream\"),\n                )\n            )\n        if files:\n            response = await self.session.post(\n                url, data=params, files=files, headers=self.auth_headers\n            )\n        else:\n            response = await self.session.post(\n                url, json=params, headers=self.auth_headers\n            )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to speech the text, detail: {await _get_error_string(response)}\"\n            )\n\n        if stream:\n            await _release_response(response)\n            return response.content.iter_chunked(1024)\n        await _release_response(response)\n        return response.content\n\n\nclass AsyncRESTfulFlexibleModelHandle(AsyncRESTfulModelHandle):\n    async def infer(\n        self,\n        **kwargs,\n    ):\n        \"\"\"\n        Call flexible model.\n\n        Parameters\n        ----------\n\n        kwargs: dict\n            The inference arguments.\n\n\n        Returns\n        -------\n        bytes\n            The inference result.\n        \"\"\"\n        url = f\"{self._base_url}/v1/flexible/infers\"\n        params: Dict = {  # type: ignore\n            \"model\": self._model_uid,\n        }\n        params.update(kwargs)\n\n        response = await self.session.post(url, json=params, headers=self.auth_headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to predict, detail: {await _get_error_string(response)}\"\n            )\n        await _release_response(response)\n        return response.content\n\n\nclass AsyncClient:\n    def __init__(self, base_url, api_key: Optional[str] = None):\n        self.base_url = base_url\n        self._headers: Dict[str, str] = {}\n        self._cluster_authed = False\n        self.timeout = aiohttp.ClientTimeout(total=1800)\n        self.session = aiohttp.ClientSession(\n            connector=aiohttp.TCPConnector(force_close=True), timeout=self.timeout\n        )\n        self._check_cluster_authenticated()\n        if api_key is not None and self._cluster_authed:\n            self._headers[\"Authorization\"] = f\"Bearer {api_key}\"\n\n    async def close(self):\n        \"\"\"Close the AsyncClient session.\"\"\"\n        if self.session:\n            await self.session.close()\n            self.session = None\n\n    def __del__(self):\n        if self.session:\n            loop = asyncio.get_event_loop()\n            loop.create_task(self.close())\n\n    def _set_token(self, token: Optional[str]):\n        if not self._cluster_authed or token is None:\n            return\n        self._headers[\"Authorization\"] = f\"Bearer {token}\"\n\n    def _get_token(self) -> Optional[str]:\n        return (\n            str(self._headers[\"Authorization\"]).replace(\"Bearer \", \"\")\n            if \"Authorization\" in self._headers\n            else None\n        )\n\n    def _check_cluster_authenticated(self):\n        import requests\n\n        session = requests.Session()\n        url = f\"{self.base_url}/v1/cluster/auth\"\n        response = session.get(url)\n        # compatible with old version of xinference\n        if response.status_code == 404:\n            self._cluster_authed = False\n        else:\n            if response.status_code != 200:\n                response_data = response.json()\n                raise RuntimeError(\n                    f\"Failed to get cluster information, detail: {response_data['detail']}\"\n                )\n            response_data = response.json()\n            self._cluster_authed = bool(response_data[\"auth\"])\n\n    async def vllm_models(self) -> Dict[str, Any]:\n        url = f\"{self.base_url}/v1/models/vllm-supported\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            response_data = await response.json()\n            await _release_response(response)\n            raise RuntimeError(\n                f\"Failed to get cluster information, detail: {response_data['detail']}\"\n            )\n\n        try:\n            response_data = await response.json()\n            await _release_response(response)\n            return response_data\n        except Exception as e:\n            raise RuntimeError(f\"Error parsing JSON response: {e}\")\n\n    async def login(self, username: str, password: str):\n        if not self._cluster_authed:\n            return\n        url = f\"{self.base_url}/token\"\n\n        payload = {\"username\": username, \"password\": password}\n\n        response = await self.session.post(url, json=payload)\n        if response.status != 200:\n            response_data = await response.json()\n            await _release_response(response)\n            raise RuntimeError(\n                f\"Failed to get cluster information, detail: {response_data['detail']}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        # Only bearer token for now\n        access_token = response_data[\"access_token\"]\n        self._headers[\"Authorization\"] = f\"Bearer {access_token}\"\n\n    async def list_models(self) -> Dict[str, Dict[str, Any]]:\n        \"\"\"\n        Retrieve the model specifications from the Server.\n\n        Returns\n        -------\n        Dict[str, Dict[str, Any]]\n            The collection of model specifications with their names on the server.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models\"\n\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to list model, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        model_list = response_data[\"data\"]\n        return {item[\"id\"]: item for item in model_list}\n\n    async def launch_model(\n        self,\n        model_name: str,\n        model_type: str = \"LLM\",\n        model_engine: Optional[str] = None,\n        model_uid: Optional[str] = None,\n        model_size_in_billions: Optional[Union[int, str, float]] = None,\n        model_format: Optional[str] = None,\n        quantization: Optional[str] = None,\n        replica: int = 1,\n        n_worker: int = 1,\n        n_gpu: Optional[Union[int, str]] = \"auto\",\n        peft_model_config: Optional[Dict] = None,\n        request_limits: Optional[int] = None,\n        worker_ip: Optional[str] = None,\n        gpu_idx: Optional[Union[int, List[int]]] = None,\n        model_path: Optional[str] = None,\n        **kwargs,\n    ) -> str:\n        \"\"\"\n        Launch the model based on the parameters on the server via RESTful APIs.\n\n        Parameters\n        ----------\n        model_name: str\n            The name of model.\n        model_type: str\n            type of model.\n        model_engine: Optional[str]\n            Specify the inference engine of the model when launching LLM.\n        model_uid: str\n            UID of model, auto generate a UUID if is None.\n        model_size_in_billions: Optional[Union[int, str, float]]\n            The size (in billions) of the model.\n        model_format: Optional[str]\n            The format of the model.\n        quantization: Optional[str]\n            The quantization of model.\n        replica: Optional[int]\n            The replica of model, default is 1.\n        n_worker: int\n            Number of workers to run.\n        n_gpu: Optional[Union[int, str]],\n            The number of GPUs used by the model, default is \"auto\". If n_worker>1, means number of GPUs per worker.\n            ``n_gpu=None`` means cpu only, ``n_gpu=auto`` lets the system automatically determine the best number of GPUs to use.\n        peft_model_config: Optional[Dict]\n            - \"lora_list\": A List of PEFT (Parameter-Efficient Fine-Tuning) model and path.\n            - \"image_lora_load_kwargs\": A Dict of lora load parameters for image model\n            - \"image_lora_fuse_kwargs\": A Dict of lora fuse parameters for image model\n        request_limits: Optional[int]\n            The number of request limits for this model, default is None.\n            ``request_limits=None`` means no limits for this model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        gpu_idx: Optional[Union[int, List[int]]]\n            Specify the GPU index where the model is located.\n        model_path: Optional[str]\n            Model path, if gguf format, should be the file path, otherwise, should be directory of the model.\n        **kwargs:\n            Any other parameters been specified. e.g. multimodal_projector for multimodal inference with the llama.cpp backend.\n\n        Returns\n        -------\n        str\n            The unique model_uid for the launched model.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models\"\n\n        # convert float to int or string since the RESTful API does not accept float.\n        if isinstance(model_size_in_billions, float):\n            model_size_in_billions = convert_float_to_int_or_str(model_size_in_billions)\n\n        payload = {\n            \"model_uid\": model_uid,\n            \"model_name\": model_name,\n            \"model_engine\": model_engine,\n            \"peft_model_config\": peft_model_config,\n            \"model_type\": model_type,\n            \"model_size_in_billions\": model_size_in_billions,\n            \"model_format\": model_format,\n            \"quantization\": quantization,\n            \"replica\": replica,\n            \"n_worker\": n_worker,\n            \"n_gpu\": n_gpu,\n            \"request_limits\": request_limits,\n            \"worker_ip\": worker_ip,\n            \"gpu_idx\": gpu_idx,\n            \"model_path\": model_path,\n        }\n\n        wait_ready = kwargs.pop(\"wait_ready\", True)\n\n        for key, value in kwargs.items():\n            payload[str(key)] = value\n\n        if wait_ready:\n            response = await self.session.post(url, json=payload, headers=self._headers)\n        else:\n            response = await self.session.post(\n                url, json=payload, headers=self._headers, params={\"wait_ready\": False}\n            )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to launch model, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data[\"model_uid\"]\n\n    async def terminate_model(self, model_uid: str):\n        \"\"\"\n        Terminate the specific model running on the server.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n\n        response = await self.session.delete(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to terminate model, detail: {await _get_error_string(response)}\"\n            )\n        await _release_response(response)\n\n    async def get_launch_model_progress(self, model_uid: str) -> dict:\n        \"\"\"\n        Get progress of the specific model.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Returns\n        -------\n        result: dict\n            Result that contains progress.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/progress\"\n\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Fail to get model launching progress, detail: {await _get_error_string(response)}\"\n            )\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def cancel_launch_model(self, model_uid: str):\n        \"\"\"\n        Cancel launching model.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/cancel\"\n\n        response = await self.session.post(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Fail to cancel launching model, detail: {await _get_error_string(response)}\"\n            )\n        await _release_response(response)\n\n    async def get_instance_info(self, model_name: str, model_uid: str):\n        url = f\"{self.base_url}/v1/models/instances\"\n        response = await self.session.get(\n            url,\n            headers=self._headers,\n            params={\"model_name\": model_name, \"model_uid\": model_uid},\n        )\n        if response.status != 200:\n            raise RuntimeError(\"Failed to get instance info\")\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def _get_supervisor_internal_address(self):\n        url = f\"{self.base_url}/v1/address\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\"Failed to get supervisor internal address\")\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def get_model(self, model_uid: str) -> AsyncRESTfulModelHandle:\n        \"\"\"\n        Launch the model based on the parameters on the server via RESTful APIs.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model.\n\n        Returns\n        -------\n        ModelHandle\n            The corresponding Model Handler based on the Model specified in the uid:\n              - :obj:`xinference.client.handlers.GenerateModelHandle` -> provide handle to basic generate Model. e.g. Baichuan.\n              - :obj:`xinference.client.handlers.ChatModelHandle` -> provide handle to chat Model. e.g. Baichuan-chat.\n\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get the model description, detail: {await _get_error_string(response)}\"\n            )\n        desc = await response.json()\n        await _release_response(response)\n        if desc[\"model_type\"] == \"LLM\":\n            if \"chat\" in desc[\"model_ability\"]:\n                return AsyncRESTfulChatModelHandle(\n                    model_uid, self.base_url, auth_headers=self._headers\n                )\n            elif \"generate\" in desc[\"model_ability\"]:\n                return AsyncRESTfulGenerateModelHandle(\n                    model_uid, self.base_url, auth_headers=self._headers\n                )\n            else:\n                raise ValueError(f\"Unrecognized model ability: {desc['model_ability']}\")\n        elif desc[\"model_type\"] == \"embedding\":\n            return AsyncRESTfulEmbeddingModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"image\":\n            return AsyncRESTfulImageModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"rerank\":\n            return AsyncRESTfulRerankModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"audio\":\n            return AsyncRESTfulAudioModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"video\":\n            return AsyncRESTfulVideoModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"flexible\":\n            return AsyncRESTfulFlexibleModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        else:\n            raise ValueError(f\"Unknown model type:{desc['model_type']}\")\n\n    async def describe_model(self, model_uid: str):\n        \"\"\"\n        Get model information via RESTful APIs.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model.\n\n        Returns\n        -------\n        dict\n            A dictionary containing the following keys:\n\n            - \"model_type\": str\n               the type of the model determined by its function, e.g. \"LLM\" (Large Language Model)\n            - \"model_name\": str\n               the name of the specific LLM model family\n            - \"model_lang\": List[str]\n               the languages supported by the LLM model\n            - \"model_ability\": List[str]\n               the ability or capabilities of the LLM model\n            - \"model_description\": str\n               a detailed description of the LLM model\n            - \"model_format\": str\n               the format specification of the LLM model\n            - \"model_size_in_billions\": int\n               the size of the LLM model in billions\n            - \"quantization\": str\n               the quantization applied to the model\n            - \"revision\": str\n               the revision number of the LLM model specification\n            - \"context_length\": int\n               the maximum text length the LLM model can accommodate (include all input & output)\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get the model description, detail: {await _get_error_string(response)}\"\n            )\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def register_model(\n        self,\n        model_type: str,\n        model: str,\n        persist: bool,\n        worker_ip: Optional[str] = None,\n    ):\n        \"\"\"\n        Register a custom model.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of model.\n        model: str\n            The model definition. (refer to: https://inference.readthedocs.io/en/latest/models/custom.html)\n        worker_ip: Optional[str]\n            The IP address of the worker on which the model is running.\n        persist: bool\n\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to register the custom model. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}\"\n        request_body = {\"model\": model, \"worker_ip\": worker_ip, \"persist\": persist}\n        response = await self.session.post(\n            url, json=request_body, headers=self._headers\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to register model, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def unregister_model(self, model_type: str, model_name: str):\n        \"\"\"\n        Unregister a custom model.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of model.\n        model_name: str\n            The name of the model\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to unregister the custom model. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}/{model_name}\"\n        response = await self.session.delete(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to register model, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def list_model_registrations(self, model_type: str) -> List[Dict[str, Any]]:\n        \"\"\"\n        List models registered on the server.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of the model.\n\n        Returns\n        -------\n        List[Dict[str, Any]]\n            The collection of registered models on the server.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to list model registration. Provide details of failure through error message.\n\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to list model registration, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def list_cached_models(\n        self, model_name: Optional[str] = None, worker_ip: Optional[str] = None\n    ) -> List[Dict[Any, Any]]:\n        \"\"\"\n        Get a list of cached models.\n        Parameters\n        ----------\n        model_name: Optional[str]\n            The name of model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n\n        Returns\n        -------\n        List[Dict[Any, Any]]\n            The collection of cached models on the server.\n\n        Raises\n        ------\n        RuntimeError\n            Raised when the request fails, including the reason for the failure.\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/cache/models\"\n        params = {\n            \"model_name\": model_name,\n            \"worker_ip\": worker_ip,\n        }\n        params = _filter_params(params)\n        response = await self.session.get(url, headers=self._headers, params=params)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to list cached model, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data.get(\"list\")\n\n    async def list_deletable_models(\n        self, model_version: str, worker_ip: Optional[str] = None\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Get the cached models with the model path cached on the server.\n        Parameters\n        ----------\n        model_version: str\n            The version of the model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        Returns\n        -------\n        Dict[str, Dict[str,str]]]\n            Dictionary with keys \"model_name\" and values model_file_location.\n        \"\"\"\n        url = f\"{self.base_url}/v1/cache/models/files\"\n        params = {\n            \"model_version\": model_version,\n            \"worker_ip\": worker_ip,\n        }\n        params = _filter_params(params)\n        response = await self.session.get(url, headers=self._headers, params=params)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get paths by model name, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def confirm_and_remove_model(\n        self, model_version: str, worker_ip: Optional[str] = None\n    ) -> bool:\n        \"\"\"\n        Remove the cached models with the model name cached on the server.\n        Parameters\n        ----------\n        model_version: str\n            The version of the model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        Returns\n        -------\n        str\n            The response of the server.\n        \"\"\"\n        url = f\"{self.base_url}/v1/cache/models\"\n        params = {\n            \"model_version\": model_version,\n            \"worker_ip\": worker_ip,\n        }\n        params = _filter_params(params)\n        response = await self.session.delete(url, headers=self._headers, params=params)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to remove cached models, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data.get(\"result\", False)\n\n    async def get_model_registration(\n        self, model_type: str, model_name: str\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Get the model with the model type and model name registered on the server.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of the model.\n\n        model_name: str\n            The name of the model.\n        Returns\n        -------\n        List[Dict[str, Any]]\n            The collection of registered models on the server.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}/{model_name}\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to list model registration, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def query_engine_by_model_name(\n        self, model_name: str, model_type: Optional[str] = \"LLM\"\n    ):\n        \"\"\"\n        Get the engine parameters with the model name registered on the server.\n\n        Parameters\n        ----------\n        model_name: str\n            The name of the model.\n        model_type: str\n            Model type, LLM by default.\n        Returns\n        -------\n        Dict[str, List[Dict[str, Any]]]\n            The supported engine parameters of registered models on the server.\n        \"\"\"\n        if not model_type:\n            url = f\"{self.base_url}/v1/engines/{model_name}\"\n        else:\n            url = f\"{self.base_url}/v1/engines/{model_type}/{model_name}\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to query engine parameters by model name, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def abort_request(\n        self, model_uid: str, request_id: str, block_duration: int = 30\n    ):\n        \"\"\"\n        Abort a request.\n        Abort a submitted request. If the request is finished or not found, this method will be a no-op.\n        Currently, this interface is only supported when batching is enabled for models on transformers backend.\n\n        Parameters\n        ----------\n        model_uid: str\n            Model uid.\n        request_id: str\n            Request id.\n        block_duration: int\n            The duration to make the request id abort. If set to 0, the abort_request will be immediate, which may\n            prevent it from taking effect if it arrives before the request operation.\n        Returns\n        -------\n        Dict\n            Return empty dict.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/requests/{request_id}/abort\"\n        response = await self.session.post(\n            url, headers=self._headers, json={\"block_duration\": block_duration}\n        )\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to abort request, detail: {await _get_error_string(response)}\"\n            )\n\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def get_workers_info(self):\n        url = f\"{self.base_url}/v1/workers\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get workers info, detail: {await _get_error_string(response)}\"\n            )\n        response_data = await response.json()\n        await _release_response(response)\n        return response_data\n\n    async def get_supervisor_info(self):\n        url = f\"{self.base_url}/v1/supervisor\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get supervisor info, detail: {await _get_error_string(response)}\"\n            )\n        response_json = await response.json()\n        await _release_response(response)\n        return response_json\n\n    async def get_progress(self, request_id: str):\n        url = f\"{self.base_url}/v1/requests/{request_id}/progress\"\n        response = await self.session.get(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to get progress, detail: {await _get_error_string(response)}\"\n            )\n        response_json = await response.json()\n        await _release_response(response)\n        return response_json\n\n    async def abort_cluster(self):\n        url = f\"{self.base_url}/v1/clusters\"\n        response = await self.session.delete(url, headers=self._headers)\n        if response.status != 200:\n            raise RuntimeError(\n                f\"Failed to abort cluster, detail: {await _get_error_string(response)}\"\n            )\n        response_json = await response.json()\n        await _release_response(response)\n        return response_json\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/client/restful/restful_client.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport json\nfrom typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Union\n\nimport requests\n\nfrom ..common import convert_float_to_int_or_str, streaming_response_iterator\n\nif TYPE_CHECKING:\n    from ...types import (\n        ChatCompletion,\n        ChatCompletionChunk,\n        Completion,\n        CompletionChunk,\n        Embedding,\n        ImageList,\n        PytorchGenerateConfig,\n        VideoList,\n    )\n\n\ndef _get_error_string(response: requests.Response) -> str:\n    try:\n        if response.content:\n            return response.json()[\"detail\"]\n    except Exception:\n        pass\n    try:\n        response.raise_for_status()\n    except requests.HTTPError as e:\n        return str(e)\n    return \"Unknown error\"\n\n\nclass RESTfulModelHandle:\n    \"\"\"\n    A sync model interface (for RESTful client) which provides type hints that makes it much easier to use xinference\n    programmatically.\n    \"\"\"\n\n    def __init__(self, model_uid: str, base_url: str, auth_headers: Dict):\n        self._model_uid = model_uid\n        self._base_url = base_url\n        self.auth_headers = auth_headers\n        self.session = requests.Session()\n\n    def close(self):\n        \"\"\"\n        Close the session.\n        \"\"\"\n        if self.session:\n            self.session.close()\n            self.session = None\n\n    def __del__(self):\n        if self.session:\n            self.close()\n\n\nclass RESTfulEmbeddingModelHandle(RESTfulModelHandle):\n    def create_embedding(self, input: Union[str, List[str]], **kwargs) -> \"Embedding\":\n        \"\"\"\n        Create an Embedding from user input via RESTful APIs.\n\n        Parameters\n        ----------\n        input: Union[str, List[str]]\n            Input text to embed, encoded as a string or array of tokens.\n            To embed multiple inputs in a single request, pass an array of strings or array of token arrays.\n\n        Returns\n        -------\n        Embedding\n           The resulted Embedding vector that can be easily consumed by machine learning models and algorithms.\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of embeddings and provide the error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/embeddings\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"input\": input,\n        }\n        request_body.update(kwargs)\n        response = self.session.post(url, json=request_body, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to create the embeddings, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def convert_ids_to_tokens(\n        self, input: Union[List, List[List]], **kwargs\n    ) -> List[str]:\n        \"\"\"\n        Convert token IDs to human readable tokens via RESTful APIs.\n\n        Parameters\n        ----------\n        input: Union[List, List[List]]\n            Input token IDs to convert, can be a single list of token IDs or a list of token ID lists.\n            To convert multiple sequences in a single request, pass a list of token ID lists.\n\n        Returns\n        -------\n        list\n            A list of decoded tokens in human readable format.\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of token conversion and provide the error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/convert_ids_to_tokens\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"input\": input,\n        }\n        request_body.update(kwargs)\n        response = self.session.post(url, json=request_body, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to decode token ids, detail: {_get_error_string(response)}\"\n            )\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulRerankModelHandle(RESTfulModelHandle):\n    def rerank(\n        self,\n        documents: List[str],\n        query: str,\n        top_n: Optional[int] = None,\n        max_chunks_per_doc: Optional[int] = None,\n        return_documents: Optional[bool] = None,\n        return_len: Optional[bool] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Returns an ordered list of documents ordered by their relevance to the provided query.\n\n        Parameters\n        ----------\n        query: str\n            The search query\n        documents: List[str]\n            The documents to rerank\n        top_n: int\n            The number of results to return, defaults to returning all results\n        max_chunks_per_doc: int\n            The maximum number of chunks derived from a document\n        return_documents: bool\n            if return documents\n        return_len: bool\n            if return tokens len\n        Returns\n        -------\n        Scores\n           The scores of documents ordered by their relevance to the provided query\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure of rerank and provide the error message.\n        \"\"\"\n        url = f\"{self._base_url}/v1/rerank\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"documents\": documents,\n            \"query\": query,\n            \"top_n\": top_n,\n            \"max_chunks_per_doc\": max_chunks_per_doc,\n            \"return_documents\": return_documents,\n            \"return_len\": return_len,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        request_body.update(kwargs)\n        response = self.session.post(url, json=request_body, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to rerank documents, detail: {response.json()['detail']}\"\n            )\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulImageModelHandle(RESTfulModelHandle):\n    def text_to_image(\n        self,\n        prompt: str,\n        n: int = 1,\n        size: str = \"1024*1024\",\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Creates an image by the input text.\n\n        Parameters\n        ----------\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to `1024*1024`\n            The width*height in pixels of the generated image. Must be one of 256x256, 512x512, or 1024x1024.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/generations\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        response = self.session.post(url, json=request_body, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to create the images, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def image_to_image(\n        self,\n        image: Union[str, bytes, List[Union[str, bytes]]],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Creates an image by the input text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes, List[Union[str, bytes]]]`\n            The ControlNet input condition to provide guidance to the `unet` for generation. If the type is\n            specified as `torch.FloatTensor`, it is passed to ControlNet as is. `PIL.Image.Image` can also be\n            accepted as an image. The dimensions of the output image defaults to `image`'s dimensions. If height\n            and/or width are passed, `image` is resized accordingly. If multiple ControlNets are specified in\n            `init`, images must be passed as a list such that each element of the list can be correctly batched for\n            input to a single ControlNet.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation. If not defined, one has to pass\n            `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is\n            less than `1`).\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to `1024*1024`\n            The width*height in pixels of the generated image. Must be one of 256x256, 512x512, or 1024x1024.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n            :param prompt:\n            :param image:\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/variations\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n\n        # Handle both single image and list of images\n        if isinstance(image, list):\n            if len(image) == 0:\n                raise ValueError(\"Image list cannot be empty\")\n            elif len(image) == 1:\n                # Single image in list, use it directly\n                files.append((\"image\", (\"image\", image[0], \"application/octet-stream\")))\n            else:\n                # Multiple images - send all images with same field name\n                # FastAPI will collect them into a list\n                for img_data in image:\n                    files.append(\n                        (\"image\", (\"image\", img_data, \"application/octet-stream\"))\n                    )\n        else:\n            # Single image\n            files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to variants the images, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def image_edit(\n        self,\n        image: Union[Union[str, bytes], List[Union[str, bytes]]],\n        prompt: str,\n        mask: Optional[Union[str, bytes]] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Edit image(s) by the input text and optional mask.\n\n        Parameters\n        ----------\n        image: `Union[Union[str, bytes], List[Union[str, bytes]]]`\n            The input image(s) to edit. Can be:\n            - Single image: file path, URL, or binary image data\n            - Multiple images: list of file paths, URLs, or binary image data\n            When multiple images are provided, the first image is used as the primary image\n            and subsequent images are used as reference images for better editing results.\n        prompt: `str`\n            The prompt or prompts to guide image editing. If not defined, you need to pass `prompt_embeds`.\n        mask: `Optional[Union[str, bytes]]`, optional\n            An optional mask image. White pixels in the mask are repainted while black pixels are preserved.\n            If provided, this will trigger inpainting mode. If not provided, this will trigger image-to-image mode.\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `Optional[str]`, optional\n            The width*height in pixels of the generated image. If not specified, uses the original image size.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        **kwargs\n            Additional parameters to pass to the model.\n\n        Returns\n        -------\n        ImageList\n            A list of edited image objects.\n\n        Raises\n        ------\n        RuntimeError\n            If the image editing request fails.\n\n        Examples\n        --------\n        # Single image editing\n        result = model.image_edit(\n            image=\"path/to/image.png\",\n            prompt=\"make this image look like a painting\"\n        )\n\n        # Multiple image editing with reference images\n        result = model.image_edit(\n            image=[\"primary_image.png\", \"reference1.jpg\", \"reference2.png\"],\n            prompt=\"edit the main image using the style from reference images\"\n        )\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/edits\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            if value is not None:\n                files.append((key, (None, value)))\n\n        # Handle single image or multiple images using requests format\n        if isinstance(image, list):\n            # Validate image list is not empty\n            if len(image) == 0:\n                raise ValueError(\"Image list cannot be empty\")\n            # Multiple images - send as image[] array\n            for i, img in enumerate(image):\n                if isinstance(img, str):\n                    # File path - open file\n                    f = open(img, \"rb\")\n                    files.append(\n                        (f\"image[]\", (f\"image_{i}\", f, \"application/octet-stream\"))\n                    )\n                else:\n                    # Binary data\n                    files.append(\n                        (f\"image[]\", (f\"image_{i}\", img, \"application/octet-stream\"))\n                    )\n        else:\n            # Single image\n            if isinstance(image, str):\n                # File path - open file\n                f = open(image, \"rb\")\n                files.append((\"image\", (\"image\", f, \"application/octet-stream\")))\n            else:\n                # Binary data\n                files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n\n        if mask is not None:\n            if isinstance(mask, str):\n                # File path - open file\n                f = open(mask, \"rb\")\n                files.append((\"mask\", (\"mask\", f, \"application/octet-stream\")))\n            else:\n                # Binary data\n                files.append((\"mask\", (\"mask\", mask, \"application/octet-stream\")))\n\n        try:\n            response = self.session.post(url, files=files, headers=self.auth_headers)\n            if response.status_code != 200:\n                raise RuntimeError(\n                    f\"Failed to edit the images, detail: {_get_error_string(response)}\"\n                )\n\n            response_data = response.json()\n            return response_data\n        finally:\n            # Close all opened files\n            for file_item in files:\n                if (\n                    len(file_item) >= 2\n                    and hasattr(file_item[1], \"__len__\")\n                    and len(file_item[1]) >= 2\n                ):\n                    file_obj = file_item[1][1]\n                    if hasattr(file_obj, \"close\"):\n                        file_obj.close()\n\n    def inpainting(\n        self,\n        image: Union[str, bytes],\n        mask_image: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        size: Optional[str] = None,\n        response_format: str = \"url\",\n        **kwargs,\n    ) -> \"ImageList\":\n        \"\"\"\n        Inpaint an image by the input text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes]`\n            an image batch to be inpainted (which parts of the image to\n            be masked out with `mask_image` and repainted according to `prompt`). For both numpy array and pytorch\n            tensor, the expected value range is between `[0, 1]` If it's a tensor or a list or tensors, the\n            expected shape should be `(B, C, H, W)` or `(C, H, W)`. If it is a numpy array or a list of arrays, the\n            expected shape should be `(B, H, W, C)` or `(H, W, C)` It can also accept image latents as `image`, but\n            if passing latents directly it is not encoded again.\n        mask_image: `Union[str, bytes]`\n            representing an image batch to mask `image`. White pixels in the mask\n            are repainted while black pixels are preserved. If `mask_image` is a PIL image, it is converted to a\n            single channel (luminance) before use. If it's a numpy array or pytorch tensor, it should contain one\n            color channel (L) instead of 3, so the expected shape for pytorch tensor would be `(B, 1, H, W)`, `(B,\n            H, W)`, `(1, H, W)`, `(H, W)`. And for numpy array would be for `(B, H, W, 1)`, `(B, H, W)`, `(H, W,\n            1)`, or `(H, W)`.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide image generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation. If not defined, one has to pass\n            `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is\n            less than `1`).\n        n: `int`, defaults to 1\n            The number of images to generate per prompt. Must be between 1 and 10.\n        size: `str`, defaults to None\n            The width*height in pixels of the generated image.\n        response_format: `str`, defaults to `url`\n            The format in which the generated images are returned. Must be one of url or b64_json.\n        Returns\n        -------\n        ImageList\n            A list of image objects.\n            :param prompt:\n            :param image:\n        \"\"\"\n        url = f\"{self._base_url}/v1/images/inpainting\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"size\": size,\n            \"response_format\": response_format,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        files.append(\n            (\"mask_image\", (\"mask_image\", mask_image, \"application/octet-stream\"))\n        )\n        response = self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to inpaint the images, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def ocr(self, image: Union[str, bytes], **kwargs):\n        url = f\"{self._base_url}/v1/images/ocr\"\n        params = {\n            \"model\": self._model_uid,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to ocr the images, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulVideoModelHandle(RESTfulModelHandle):\n    def text_to_video(\n        self,\n        prompt: str,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the input text.\n\n        Parameters\n        ----------\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations\"\n        request_body = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        response = self.session.post(url, json=request_body, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to create the video, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def image_to_video(\n        self,\n        image: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the input image and text.\n\n        Parameters\n        ----------\n        image: `Union[str, bytes]`\n            The input image to condition the generation on.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations/image\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append((\"image\", (\"image\", image, \"application/octet-stream\")))\n        response = self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to create the video from image, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def flf_to_video(\n        self,\n        first_frame: Union[str, bytes],\n        last_frame: Union[str, bytes],\n        prompt: str,\n        negative_prompt: Optional[str] = None,\n        n: int = 1,\n        **kwargs,\n    ) -> \"VideoList\":\n        \"\"\"\n        Creates a video by the first frame, last frame and text.\n\n        Parameters\n        ----------\n        first_frame: `Union[str, bytes]`\n            The first frame to condition the generation on.\n        last_frame: `Union[str, bytes]`\n            The last frame to condition the generation on.\n        prompt: `str` or `List[str]`\n            The prompt or prompts to guide video generation. If not defined, you need to pass `prompt_embeds`.\n        negative_prompt (`str` or `List[str]`, *optional*):\n            The prompt or prompts not to guide the image generation.\n        n: `int`, defaults to 1\n            The number of videos to generate per prompt. Must be between 1 and 10.\n        Returns\n        -------\n        VideoList\n            A list of video objects.\n        \"\"\"\n        url = f\"{self._base_url}/v1/video/generations/flf\"\n        params = {\n            \"model\": self._model_uid,\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n            \"n\": n,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        for key, value in params.items():\n            files.append((key, (None, value)))\n        files.append(\n            (\"first_frame\", (\"image\", first_frame, \"application/octet-stream\"))\n        )\n        files.append((\"last_frame\", (\"image\", last_frame, \"application/octet-stream\")))\n        response = self.session.post(url, files=files, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to create the video from image, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulGenerateModelHandle(RESTfulModelHandle):\n    def generate(\n        self,\n        prompt: str,\n        generate_config: Optional[\"PytorchGenerateConfig\"] = None,\n    ) -> Union[\"Completion\", Iterator[\"CompletionChunk\"]]:\n        \"\"\"\n        Creates a completion for the provided prompt and parameters via RESTful APIs.\n\n        Parameters\n        ----------\n        prompt: str\n            The user's message or user's input.\n        generate_config: Optional[\"PytorchGenerateConfig\"]\n            Additional configuration for the chat generation.\n            \"PytorchGenerateConfig\" -> Configuration for pytorch model\n\n        Returns\n        -------\n        Union[\"Completion\", Iterator[\"CompletionChunk\"]]\n            Stream is a parameter in generate_config.\n            When stream is set to True, the function will return Iterator[\"CompletionChunk\"].\n            When stream is set to False, the function will return \"Completion\".\n\n        Raises\n        ------\n        RuntimeError\n            Fail to generate the completion from the server. Detailed information provided in error message.\n\n        \"\"\"\n\n        url = f\"{self._base_url}/v1/completions\"\n\n        request_body: Dict[str, Any] = {\"model\": self._model_uid, \"prompt\": prompt}\n        if generate_config is not None:\n            for key, value in generate_config.items():\n                request_body[key] = value\n\n        stream = bool(generate_config and generate_config.get(\"stream\"))\n\n        response = self.session.post(\n            url, json=request_body, stream=stream, headers=self.auth_headers\n        )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to generate completion, detail: {_get_error_string(response)}\"\n            )\n\n        if stream:\n            return streaming_response_iterator(response.iter_lines())\n\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulChatModelHandle(RESTfulGenerateModelHandle):\n    def chat(\n        self,\n        messages: List[Dict],\n        tools: Optional[List[Dict]] = None,\n        generate_config: Optional[\"PytorchGenerateConfig\"] = None,\n    ) -> Union[\"ChatCompletion\", Iterator[\"ChatCompletionChunk\"]]:\n        \"\"\"\n        Given a list of messages comprising a conversation, the model will return a response via RESTful APIs.\n\n        Parameters\n        ----------\n        messages: List[Dict]\n            A list of messages comprising the conversation so far.\n        tools: Optional[List[Dict]]\n            A tool list.\n        generate_config: Optional[\"PytorchGenerateConfig\"]\n            Additional configuration for the chat generation.\n            \"PytorchGenerateConfig\" -> configuration for pytorch model\n\n        Returns\n        -------\n        Union[\"ChatCompletion\", Iterator[\"ChatCompletionChunk\"]]\n            Stream is a parameter in generate_config.\n            When stream is set to True, the function will return Iterator[\"ChatCompletionChunk\"].\n            When stream is set to False, the function will return \"ChatCompletion\".\n\n        Raises\n        ------\n        RuntimeError\n            Report the failure to generate the chat from the server. Detailed information provided in error message.\n\n        \"\"\"\n        url = f\"{self._base_url}/v1/chat/completions\"\n\n        request_body: Dict[str, Any] = {\n            \"model\": self._model_uid,\n            \"messages\": messages,\n        }\n        if tools is not None:\n            request_body[\"tools\"] = tools\n        if generate_config is not None:\n            for key, value in generate_config.items():\n                request_body[key] = value\n\n        stream = bool(generate_config and generate_config.get(\"stream\"))\n        response = self.session.post(\n            url, json=request_body, stream=stream, headers=self.auth_headers\n        )\n\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to generate chat completion, detail: {_get_error_string(response)}\"\n            )\n\n        if stream:\n            return streaming_response_iterator(response.iter_lines())\n\n        response_data = response.json()\n        return response_data\n\n\nclass RESTfulAudioModelHandle(RESTfulModelHandle):\n    def transcriptions(\n        self,\n        audio: bytes,\n        language: Optional[str] = None,\n        prompt: Optional[str] = None,\n        response_format: Optional[str] = \"json\",\n        temperature: Optional[float] = 0,\n        timestamp_granularities: Optional[List[str]] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Transcribes audio into the input language.\n\n        Parameters\n        ----------\n\n        audio: bytes\n            The audio file object (not file name) to transcribe, in one of these formats: flac, mp3, mp4, mpeg,\n            mpga, m4a, ogg, wav, or webm.\n        language: Optional[str]\n            The language of the input audio. Supplying the input language in ISO-639-1\n            (https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format will improve accuracy and latency.\n        prompt: Optional[str]\n            An optional text to guide the model's style or continue a previous audio segment.\n            The prompt should match the audio language.\n        response_format: Optional[str], defaults to json\n            The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt.\n        temperature: Optional[float], defaults to 0\n            The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random,\n            while lower values like 0.2 will make it more focused and deterministic.\n            If set to 0, the model will use log probability to automatically increase the temperature\n            until certain thresholds are hit.\n        timestamp_granularities: Optional[List[str]], default is None.\n            The timestamp granularities to populate for this transcription. response_format must be set verbose_json\n            to use timestamp granularities. Either or both of these options are supported: word, or segment.\n            Note: There is no additional latency for segment timestamps, but generating word timestamps incurs\n            additional latency.\n\n        Returns\n        -------\n            The transcribed text.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/transcriptions\"\n        params = {\n            \"model\": self._model_uid,\n            \"language\": language,\n            \"prompt\": prompt,\n            \"response_format\": response_format,\n            \"temperature\": temperature,\n            \"timestamp_granularities[]\": timestamp_granularities,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        files.append((\"file\", (\"file\", audio, \"application/octet-stream\")))\n        response = self.session.post(\n            url, data=params, files=files, headers=self.auth_headers\n        )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to transcribe the audio, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def translations(\n        self,\n        audio: bytes,\n        language: Optional[str] = None,\n        prompt: Optional[str] = None,\n        response_format: Optional[str] = \"json\",\n        temperature: Optional[float] = 0,\n        timestamp_granularities: Optional[List[str]] = None,\n    ):\n        \"\"\"\n        Translates audio into English.\n\n        Parameters\n        ----------\n\n        audio: bytes\n            The audio file object (not file name) to transcribe, in one of these formats: flac, mp3, mp4, mpeg,\n            mpga, m4a, ogg, wav, or webm.\n        language: Optional[str]\n            The language of the input audio. Supplying the input language in ISO-639-1\n            (https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format will improve accuracy and latency.\n        prompt: Optional[str]\n            An optional text to guide the model's style or continue a previous audio segment.\n            The prompt should match the audio language.\n        response_format: Optional[str], defaults to json\n            The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt.\n        temperature: Optional[float], defaults to 0\n            The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random,\n            while lower values like 0.2 will make it more focused and deterministic.\n            If set to 0, the model will use log probability to automatically increase the temperature\n            until certain thresholds are hit.\n        timestamp_granularities: Optional[List[str]], default is None.\n            The timestamp granularities to populate for this transcription. response_format must be set verbose_json\n            to use timestamp granularities. Either or both of these options are supported: word, or segment.\n            Note: There is no additional latency for segment timestamps, but generating word timestamps incurs\n            additional latency.\n\n        Returns\n        -------\n            The translated text.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/translations\"\n        params = {\n            \"model\": self._model_uid,\n            \"language\": language,\n            \"prompt\": prompt,\n            \"response_format\": response_format,\n            \"temperature\": temperature,\n            \"timestamp_granularities[]\": timestamp_granularities,\n        }\n        files: List[Any] = []\n        files.append((\"file\", (\"file\", audio, \"application/octet-stream\")))\n        response = self.session.post(\n            url, data=params, files=files, headers=self.auth_headers\n        )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to translate the audio, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def speech(\n        self,\n        input: str,\n        voice: str = \"\",\n        response_format: str = \"mp3\",\n        speed: float = 1.0,\n        stream: bool = False,\n        prompt_speech: Optional[bytes] = None,\n        prompt_latent: Optional[bytes] = None,\n        **kwargs,\n    ):\n        \"\"\"\n        Generates audio from the input text.\n\n        Parameters\n        ----------\n\n        input: str\n            The text to generate audio for. The maximum length is 4096 characters.\n        voice: str\n            The voice to use when generating the audio.\n        response_format: str\n            The format to audio in.\n        speed: str\n            The speed of the generated audio.\n        stream: bool\n            Use stream or not.\n        prompt_speech: bytes\n            The audio bytes to be provided to the model.\n        prompt_latent: bytes\n            The latent bytes to be provided to the model.\n\n        Returns\n        -------\n        bytes\n            The generated audio binary.\n        \"\"\"\n        url = f\"{self._base_url}/v1/audio/speech\"\n        params = {\n            \"model\": self._model_uid,\n            \"input\": input,\n            \"voice\": voice,\n            \"response_format\": response_format,\n            \"speed\": speed,\n            \"stream\": stream,\n            \"kwargs\": json.dumps(kwargs),\n        }\n        files: List[Any] = []\n        if prompt_speech:\n            files.append(\n                (\n                    \"prompt_speech\",\n                    (\"prompt_speech\", prompt_speech, \"application/octet-stream\"),\n                )\n            )\n        if prompt_latent:\n            files.append(\n                (\n                    \"prompt_latent\",\n                    (\"prompt_latent\", prompt_latent, \"application/octet-stream\"),\n                )\n            )\n        if files:\n            response = self.session.post(\n                url, data=params, files=files, headers=self.auth_headers, stream=stream\n            )\n        else:\n            response = self.session.post(\n                url, json=params, headers=self.auth_headers, stream=stream\n            )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to speech the text, detail: {_get_error_string(response)}\"\n            )\n\n        if stream:\n            return response.iter_content(chunk_size=1024)\n\n        return response.content\n\n\nclass RESTfulFlexibleModelHandle(RESTfulModelHandle):\n    def infer(\n        self,\n        *args,\n        **kwargs,\n    ):\n        \"\"\"\n        Call flexible model.\n\n        Parameters\n        ----------\n\n        kwargs: dict\n            The inference arguments.\n\n\n        Returns\n        -------\n        bytes\n            The inference result.\n        \"\"\"\n        url = f\"{self._base_url}/v1/flexible/infers\"\n        params = {\n            \"model\": self._model_uid,\n            \"args\": args,\n        }\n        params.update(kwargs)\n\n        response = self.session.post(url, json=params, headers=self.auth_headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to predict, detail: {_get_error_string(response)}\"\n            )\n\n        return response.json()\n\n\nclass Client:\n    def __init__(self, base_url, api_key: Optional[str] = None):\n        self.base_url = base_url\n        self._headers: Dict[str, str] = {}\n        self._cluster_authed = False\n        self.session = requests.Session()\n        self._check_cluster_authenticated()\n        if api_key is not None and self._cluster_authed:\n            self._headers[\"Authorization\"] = f\"Bearer {api_key}\"\n\n    def close(self):\n        \"\"\"\n        Close the session.\n        \"\"\"\n        if self.session:\n            self.session.close()\n            self.session = None\n\n    def __del__(self):\n        if self.session:\n            self.close()\n\n    def _set_token(self, token: Optional[str]):\n        if not self._cluster_authed or token is None:\n            return\n        self._headers[\"Authorization\"] = f\"Bearer {token}\"\n\n    def _get_token(self) -> Optional[str]:\n        return (\n            str(self._headers[\"Authorization\"]).replace(\"Bearer \", \"\")\n            if \"Authorization\" in self._headers\n            else None\n        )\n\n    def _check_cluster_authenticated(self):\n        url = f\"{self.base_url}/v1/cluster/auth\"\n        response = self.session.get(url)\n        # compatible with old version of xinference\n        if response.status_code == 404:\n            self._cluster_authed = False\n        else:\n            if response.status_code != 200:\n                raise RuntimeError(\n                    f\"Failed to get cluster information, detail: {response.json()['detail']}\"\n                )\n            response_data = response.json()\n            self._cluster_authed = bool(response_data[\"auth\"])\n\n    def vllm_models(self) -> Dict[str, Any]:\n        url = f\"{self.base_url}/v1/models/vllm-supported\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to fetch VLLM models. detail: {response.json()['detail']}\"\n            )\n\n        try:\n            return response.json()\n        except Exception as e:\n            raise RuntimeError(f\"Error parsing JSON response: {e}\")\n\n    def login(self, username: str, password: str):\n        if not self._cluster_authed:\n            return\n        url = f\"{self.base_url}/token\"\n\n        payload = {\"username\": username, \"password\": password}\n\n        response = self.session.post(url, json=payload)\n        if response.status_code != 200:\n            raise RuntimeError(f\"Failed to login, detail: {response.json()['detail']}\")\n\n        response_data = response.json()\n        # Only bearer token for now\n        access_token = response_data[\"access_token\"]\n        self._headers[\"Authorization\"] = f\"Bearer {access_token}\"\n\n    def list_models(self) -> Dict[str, Dict[str, Any]]:\n        \"\"\"\n        Retrieve the model specifications from the Server.\n\n        Returns\n        -------\n        Dict[str, Dict[str, Any]]\n            The collection of model specifications with their names on the server.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models\"\n\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to list model, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        model_list = response_data[\"data\"]\n        return {item[\"id\"]: item for item in model_list}\n\n    def launch_model(\n        self,\n        model_name: str,\n        model_type: str = \"LLM\",\n        model_engine: Optional[str] = None,\n        model_uid: Optional[str] = None,\n        model_size_in_billions: Optional[Union[int, str, float]] = None,\n        model_format: Optional[str] = None,\n        quantization: Optional[str] = None,\n        replica: int = 1,\n        n_worker: int = 1,\n        n_gpu: Optional[Union[int, str]] = \"auto\",\n        peft_model_config: Optional[Dict] = None,\n        request_limits: Optional[int] = None,\n        worker_ip: Optional[str] = None,\n        gpu_idx: Optional[Union[int, List[int]]] = None,\n        model_path: Optional[str] = None,\n        enable_virtual_env: Optional[bool] = None,\n        virtual_env_packages: Optional[List[str]] = None,\n        envs: Optional[Dict[str, str]] = None,\n        **kwargs,\n    ) -> str:\n        \"\"\"\n        Launch the model based on the parameters on the server via RESTful APIs.\n\n        Parameters\n        ----------\n        model_name: str\n            The name of model.\n        model_type: str\n            type of model.\n        model_engine: Optional[str]\n            Specify the inference engine of the model when launching LLM.\n        model_uid: str\n            UID of model, auto generate a UUID if is None.\n        model_size_in_billions: Optional[Union[int, str, float]]\n            The size (in billions) of the model.\n        model_format: Optional[str]\n            The format of the model.\n        quantization: Optional[str]\n            The quantization of model.\n        replica: Optional[int]\n            The replica of model, default is 1.\n        n_worker: int\n            Number of workers to run.\n        n_gpu: Optional[Union[int, str]],\n            The number of GPUs used by the model, default is \"auto\". If n_worker>1, means number of GPUs per worker.\n            ``n_gpu=None`` means cpu only, ``n_gpu=auto`` lets the system automatically determine the best number of GPUs to use.\n        peft_model_config: Optional[Dict]\n            - \"lora_list\": A List of PEFT (Parameter-Efficient Fine-Tuning) model and path.\n            - \"image_lora_load_kwargs\": A Dict of lora load parameters for image model\n            - \"image_lora_fuse_kwargs\": A Dict of lora fuse parameters for image model\n        request_limits: Optional[int]\n            The number of request limits for this model, default is None.\n            ``request_limits=None`` means no limits for this model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        gpu_idx: Optional[Union[int, List[int]]]\n            Specify the GPU index where the model is located.\n        model_path: Optional[str]\n            Model path, if gguf format, should be the file path, otherwise, should be directory of the model.\n        enable_virtual_env: Optional[bool]\n            If enable virtual env.\n        virtual_env_packages: Optional[List[str]]\n            Packages to specify in virtual env, can be used to override builtin packages in virtual env.\n        envs: Optional[Dict[str, str]]\n            Environment variables to pass when launching model.\n\n        **kwargs:\n            Any other parameters been specified. e.g. multimodal_projector for multimodal inference with the llama.cpp backend.\n\n        Returns\n        -------\n        str\n            The unique model_uid for the launched model.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models\"\n\n        # convert float to int or string since the RESTful API does not accept float.\n        if isinstance(model_size_in_billions, float):\n            model_size_in_billions = convert_float_to_int_or_str(model_size_in_billions)\n\n        payload = {\n            \"model_uid\": model_uid,\n            \"model_name\": model_name,\n            \"model_engine\": model_engine,\n            \"peft_model_config\": peft_model_config,\n            \"model_type\": model_type,\n            \"model_size_in_billions\": model_size_in_billions,\n            \"model_format\": model_format,\n            \"quantization\": quantization,\n            \"replica\": replica,\n            \"n_worker\": n_worker,\n            \"n_gpu\": n_gpu,\n            \"request_limits\": request_limits,\n            \"worker_ip\": worker_ip,\n            \"gpu_idx\": gpu_idx,\n            \"model_path\": model_path,\n            \"enable_virtual_env\": enable_virtual_env,\n            \"virtual_env_packages\": virtual_env_packages,\n            \"envs\": envs,\n        }\n\n        wait_ready = kwargs.pop(\"wait_ready\", True)\n\n        for key, value in kwargs.items():\n            payload[str(key)] = value\n\n        if wait_ready:\n            response = self.session.post(url, json=payload, headers=self._headers)\n        else:\n            response = self.session.post(\n                url, json=payload, headers=self._headers, params={\"wait_ready\": False}\n            )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to launch model, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data[\"model_uid\"]\n\n    def terminate_model(self, model_uid: str):\n        \"\"\"\n        Terminate the specific model running on the server.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n\n        response = self.session.delete(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to terminate model, detail: {_get_error_string(response)}\"\n            )\n\n    def get_launch_model_progress(self, model_uid: str) -> dict:\n        \"\"\"\n        Get progress of the specific model.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Returns\n        -------\n        result: dict\n            Result that contains progress.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/progress\"\n\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Fail to get model launching progress, detail: {_get_error_string(response)}\"\n            )\n        return response.json()\n\n    def cancel_launch_model(self, model_uid: str):\n        \"\"\"\n        Cancel launching model.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model we want.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/cancel\"\n\n        response = self.session.post(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Fail to cancel launching model, detail: {_get_error_string(response)}\"\n            )\n\n    def get_instance_info(self, model_name: str, model_uid: str):\n        url = f\"{self.base_url}/v1/models/instances\"\n        response = self.session.get(\n            url,\n            headers=self._headers,\n            params={\"model_name\": model_name, \"model_uid\": model_uid},\n        )\n        if response.status_code != 200:\n            raise RuntimeError(\"Failed to get instance info\")\n        response_data = response.json()\n        return response_data\n\n    def _get_supervisor_internal_address(self):\n        url = f\"{self.base_url}/v1/address\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\"Failed to get supervisor internal address\")\n        response_data = response.json()\n        return response_data\n\n    def get_model(self, model_uid: str) -> RESTfulModelHandle:\n        \"\"\"\n        Launch the model based on the parameters on the server via RESTful APIs.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model.\n\n        Returns\n        -------\n        ModelHandle\n            The corresponding Model Handler based on the Model specified in the uid:\n              - :obj:`xinference.client.handlers.GenerateModelHandle` -> provide handle to basic generate Model. e.g. Baichuan.\n              - :obj:`xinference.client.handlers.ChatModelHandle` -> provide handle to chat Model. e.g. Baichuan-chat.\n\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get the model description, detail: {_get_error_string(response)}\"\n            )\n        desc = response.json()\n\n        if desc[\"model_type\"] == \"LLM\":\n            if \"chat\" in desc[\"model_ability\"]:\n                return RESTfulChatModelHandle(\n                    model_uid, self.base_url, auth_headers=self._headers\n                )\n            elif \"generate\" in desc[\"model_ability\"]:\n                return RESTfulGenerateModelHandle(\n                    model_uid, self.base_url, auth_headers=self._headers\n                )\n            else:\n                raise ValueError(f\"Unrecognized model ability: {desc['model_ability']}\")\n        elif desc[\"model_type\"] == \"embedding\":\n            return RESTfulEmbeddingModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"image\":\n            return RESTfulImageModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"rerank\":\n            return RESTfulRerankModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"audio\":\n            return RESTfulAudioModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"video\":\n            return RESTfulVideoModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        elif desc[\"model_type\"] == \"flexible\":\n            return RESTfulFlexibleModelHandle(\n                model_uid, self.base_url, auth_headers=self._headers\n            )\n        else:\n            raise ValueError(f\"Unknown model type:{desc['model_type']}\")\n\n    def describe_model(self, model_uid: str):\n        \"\"\"\n        Get model information via RESTful APIs.\n\n        Parameters\n        ----------\n        model_uid: str\n            The unique id that identify the model.\n\n        Returns\n        -------\n        dict\n            A dictionary containing the following keys:\n\n            - \"model_type\": str\n               the type of the model determined by its function, e.g. \"LLM\" (Large Language Model)\n            - \"model_name\": str\n               the name of the specific LLM model family\n            - \"model_lang\": List[str]\n               the languages supported by the LLM model\n            - \"model_ability\": List[str]\n               the ability or capabilities of the LLM model\n            - \"model_description\": str\n               a detailed description of the LLM model\n            - \"model_format\": str\n               the format specification of the LLM model\n            - \"model_size_in_billions\": int\n               the size of the LLM model in billions\n            - \"quantization\": str\n               the quantization applied to the model\n            - \"revision\": str\n               the revision number of the LLM model specification\n            - \"context_length\": int\n               the maximum text length the LLM model can accommodate (include all input & output)\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to get the wanted model with given model_uid. Provide details of failure through error message.\n\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/models/{model_uid}\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get the model description, detail: {_get_error_string(response)}\"\n            )\n        return response.json()\n\n    def register_model(\n        self,\n        model_type: str,\n        model: str,\n        persist: bool,\n        worker_ip: Optional[str] = None,\n    ):\n        \"\"\"\n        Register a custom model.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of model.\n        model: str\n            The model definition. (refer to: https://inference.readthedocs.io/en/latest/models/custom.html)\n        worker_ip: Optional[str]\n            The IP address of the worker on which the model is running.\n        persist: bool\n\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to register the custom model. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}\"\n        request_body = {\"model\": model, \"worker_ip\": worker_ip, \"persist\": persist}\n        response = self.session.post(url, json=request_body, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to register model, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def unregister_model(self, model_type: str, model_name: str):\n        \"\"\"\n        Unregister a custom model.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of model.\n        model_name: str\n            The name of the model\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to unregister the custom model. Provide details of failure through error message.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}/{model_name}\"\n        response = self.session.delete(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to register model, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def list_model_registrations(\n        self, model_type: str, detailed: bool = False\n    ) -> List[Dict[str, Any]]:\n        \"\"\"\n        List models registered on the server.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of the model.\n        detailed: bool\n            Whether to display detailed information.\n\n        Returns\n        -------\n        List[Dict[str, Any]]\n            The collection of registered models on the server.\n\n        Raises\n        ------\n        RuntimeError\n            Report failure to list model registration. Provide details of failure through error message.\n\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}?detailed={'true' if detailed else 'false'}\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to list model registration, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def list_cached_models(\n        self, model_name: Optional[str] = None, worker_ip: Optional[str] = None\n    ) -> List[Dict[Any, Any]]:\n        \"\"\"\n        Get a list of cached models.\n        Parameters\n        ----------\n        model_name: Optional[str]\n            The name of model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n\n        Returns\n        -------\n        List[Dict[Any, Any]]\n            The collection of cached models on the server.\n\n        Raises\n        ------\n        RuntimeError\n            Raised when the request fails, including the reason for the failure.\n        \"\"\"\n\n        url = f\"{self.base_url}/v1/cache/models\"\n        params = {\n            \"model_name\": model_name,\n            \"worker_ip\": worker_ip,\n        }\n        response = self.session.get(url, headers=self._headers, params=params)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to list cached model, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        response_data = response_data.get(\"list\")\n        return response_data\n\n    def list_deletable_models(\n        self, model_version: str, worker_ip: Optional[str] = None\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Get the cached models with the model path cached on the server.\n        Parameters\n        ----------\n        model_version: str\n            The version of the model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        Returns\n        -------\n        Dict[str, Dict[str,str]]]\n            Dictionary with keys \"model_name\" and values model_file_location.\n        \"\"\"\n        url = f\"{self.base_url}/v1/cache/models/files\"\n        params = {\n            \"model_version\": model_version,\n            \"worker_ip\": worker_ip,\n        }\n        response = self.session.get(url, headers=self._headers, params=params)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get paths by model name, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def confirm_and_remove_model(\n        self, model_version: str, worker_ip: Optional[str] = None\n    ) -> bool:\n        \"\"\"\n        Remove the cached models with the model name cached on the server.\n        Parameters\n        ----------\n        model_version: str\n            The version of the model.\n        worker_ip: Optional[str]\n            Specify the worker ip where the model is located in a distributed scenario.\n        Returns\n        -------\n        str\n            The response of the server.\n        \"\"\"\n        url = f\"{self.base_url}/v1/cache/models\"\n        params = {\n            \"model_version\": model_version,\n            \"worker_ip\": worker_ip,\n        }\n        response = self.session.delete(url, headers=self._headers, params=params)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to remove cached models, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data.get(\"result\", False)\n\n    def get_model_registration(\n        self, model_type: str, model_name: str\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Get the model with the model type and model name registered on the server.\n\n        Parameters\n        ----------\n        model_type: str\n            The type of the model.\n\n        model_name: str\n            The name of the model.\n        Returns\n        -------\n        List[Dict[str, Any]]\n            The collection of registered models on the server.\n        \"\"\"\n        url = f\"{self.base_url}/v1/model_registrations/{model_type}/{model_name}\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to list model registration, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def query_engine_by_model_name(\n        self, model_name: str, model_type: Optional[str] = \"LLM\"\n    ):\n        \"\"\"\n        Get the engine parameters with the model name registered on the server.\n\n        Parameters\n        ----------\n        model_name: str\n            The name of the model.\n        model_type: str\n            Model type, LLM by default.\n        Returns\n        -------\n        Dict[str, List[Dict[str, Any]]]\n            The supported engine parameters of registered models on the server.\n        \"\"\"\n        if not model_type:\n            url = f\"{self.base_url}/v1/engines/{model_name}\"\n        else:\n            url = f\"{self.base_url}/v1/engines/{model_type}/{model_name}\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to query engine parameters by model name, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def abort_request(self, model_uid: str, request_id: str, block_duration: int = 30):\n        \"\"\"\n        Abort a request.\n        Abort a submitted request. If the request is finished or not found, this method will be a no-op.\n        Currently, this interface is only supported when batching is enabled for models on transformers backend.\n\n        Parameters\n        ----------\n        model_uid: str\n            Model uid.\n        request_id: str\n            Request id.\n        block_duration: int\n            The duration to make the request id abort. If set to 0, the abort_request will be immediate, which may\n            prevent it from taking effect if it arrives before the request operation.\n        Returns\n        -------\n        Dict\n            Return empty dict.\n        \"\"\"\n        url = f\"{self.base_url}/v1/models/{model_uid}/requests/{request_id}/abort\"\n        response = self.session.post(\n            url, headers=self._headers, json={\"block_duration\": block_duration}\n        )\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to abort request, detail: {_get_error_string(response)}\"\n            )\n\n        response_data = response.json()\n        return response_data\n\n    def get_workers_info(self):\n        url = f\"{self.base_url}/v1/workers\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get workers info, detail: {_get_error_string(response)}\"\n            )\n        response_data = response.json()\n        return response_data\n\n    def get_supervisor_info(self):\n        url = f\"{self.base_url}/v1/supervisor\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get supervisor info, detail: {_get_error_string(response)}\"\n            )\n        response_json = response.json()\n        return response_json\n\n    def get_progress(self, request_id: str):\n        url = f\"{self.base_url}/v1/requests/{request_id}/progress\"\n        response = self.session.get(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to get progress, detail: {_get_error_string(response)}\"\n            )\n        response_json = response.json()\n        return response_json\n\n    def abort_cluster(self):\n        url = f\"{self.base_url}/v1/clusters\"\n        response = self.session.delete(url, headers=self._headers)\n        if response.status_code != 200:\n            raise RuntimeError(\n                f\"Failed to abort cluster, detail: {_get_error_string(response)}\"\n            )\n        response_json = response.json()\n        return response_json\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/fields.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom ._compat import Field\n\nnone_field = Field(None)\n\nstream_interval_field = Field(default=2)\n\necho_field = Field(\n    default=False,\n    description=\"Whether to echo the prompt in the generated text. Useful for chatbots.\",\n)\n\nlogprobs_field = Field(\n    default=None,\n    ge=0,\n    description=\"The number of logprobs to generate. If None, no logprobs are generated.\",\n)\n\n# Note: changed from 1024 to None to let the model output maximum content which has better user experience\nmax_tokens_field = Field(\n    default=None,\n    ge=1,\n    description=\"The maximum number of tokens to generate.\",\n)\n\ntemperature_field = Field(\n    default=0.8,\n    ge=0.0,\n    le=2.0,\n    description=\"Adjust the randomness of the generated text.\\n\\n\"\n    \"Temperature is a hyperparameter that controls the randomness of the generated text. \"\n    \"It affects the probability distribution of the model's output tokens. \"\n    \"A higher temperature (e.g., 1.5) makes the output more random and creative, \"\n    \"while a lower temperature (e.g., 0.5) makes the output more focused, deterministic, and conservative. \"\n    \"The default value is 0.8, which provides a balance between randomness and determinism. \"\n    \"At the extreme, a temperature of 0 will always pick the most likely next token, \"\n    \"leading to identical outputs in each run.\",\n)\n\ntop_p_field = Field(\n    default=0.95,\n    ge=0.0,\n    le=1.0,\n    description=\"Limit the next token selection to a subset of tokens with \"\n    \"a cumulative probability above a threshold P.\\n\\n\"\n    \"Top-p sampling, also known as nucleus sampling, \"\n    \"is another text generation method that selects the next token from a subset of tokens \"\n    \"that together have a cumulative probability of at least p. \"\n    \"This method provides a balance between diversity and quality by considering \"\n    \"both the probabilities of tokens and the number of tokens to sample from. \"\n    \"A higher value for top_p (e.g., 0.95) will lead to more diverse text, \"\n    \"while a lower value (e.g., 0.5) will generate more focused and conservative text.\",\n)\n\nstop_field = Field(\n    default=[],\n    description=\"A list of tokens at which to stop generation. If None, no stop tokens are used.\",\n)\n\nstream_field = Field(\n    default=False,\n    description=\"Whether to stream the results as they are generated. Useful for chatbots.\",\n)\n\nstream_option_field = Field(\n    default={\n        \"include_usage\": False,\n    },\n    description=\"If set, an additional chunk will be streamed before the `data: [DONE]` message.\",\n)\n\ntop_k_field = Field(\n    default=40,\n    ge=0,\n    description=\"Limit the next token selection to the K most probable tokens.\\n\\n\"\n    \"Top-k sampling is a text generation method that selects the next token \"\n    \"only from the top k most likely tokens predicted by the model. \"\n    \"It helps reduce the risk of generating low-probability or nonsensical tokens, \"\n    \"but it may also limit the diversity of the output. \"\n    \"A higher value for top_k (e.g., 100) will consider more tokens and lead to more diverse text, \"\n    \"while a lower value (e.g., 10) will focus on the most probable tokens and \"\n    \"generate more conservative text.\",\n)\n\nrepeat_penalty_field = Field(\n    default=1.1,\n    ge=0.0,\n    description=\"A penalty applied to each token that is already generated. \"\n    \"This helps prevent the model from repeating itself.\\n\\n\"\n    \"Repeat penalty is a hyperparameter used to penalize the repetition of token sequences \"\n    \"during text generation. \"\n    \"It helps prevent the model from generating repetitive or monotonous text. \"\n    \"A higher value (e.g., 1.5) will penalize repetitions more strongly, \"\n    \"while a lower value (e.g., 0.9) will be more lenient.\",\n)\n\npresence_penalty_field = Field(\n    default=0.0,\n    ge=-2.0,\n    le=2.0,\n    description=\"Positive values penalize new tokens based on whether they appear in the text so far, \"\n    \"increasing the model's likelihood to talk about new topics.\",\n)\n\nfrequency_penalty_field = Field(\n    default=0.0,\n    ge=-2.0,\n    le=2.0,\n    description=\"Positive values penalize new tokens based on their existing frequency in the text so far, \"\n    \"decreasing the model's likelihood to repeat the same line verbatim.\",\n)\n\nmirostat_mode_field = Field(\n    default=0,\n    ge=0,\n    le=2,\n    description=\"Enable Mirostat constant-perplexity algorithm of the specified version (1 or 2; 0 = disabled)\",\n)\n\nmirostat_tau_field = Field(\n    default=5.0,\n    ge=0.0,\n    le=10.0,\n    description=\"Mirostat target entropy, i.e. the target perplexity - lower values produce focused and coherent text, \"\n    \"larger values produce more diverse and less coherent text\",\n)\n\nmirostat_eta_field = Field(\n    default=0.1, ge=0.001, le=1.0, description=\"Mirostat learning rate\"\n)\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference/types.py",
    "content": "# Copyright 2022-2023 XProbe Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom typing import Any, Callable, Dict, ForwardRef, Iterable, List, Optional, Union\n\nfrom typing_extensions import Literal, NotRequired, TypedDict\n\nfrom ._compat import (\n    BaseModel,\n    create_model,\n    create_model_from_typeddict,\n    validate_arguments,\n)\nfrom .fields import (\n    echo_field,\n    max_tokens_field,\n    none_field,\n    repeat_penalty_field,\n    stop_field,\n    stream_field,\n    stream_interval_field,\n    stream_option_field,\n    temperature_field,\n    top_k_field,\n    top_p_field,\n)\n\n\nclass Image(TypedDict):\n    url: Optional[str]\n    b64_json: Optional[str]\n\n\nclass ImageList(TypedDict):\n    created: int\n    data: List[Image]\n\n\nclass ImageEditRequest(TypedDict, total=False):\n    image: Union[Union[str, bytes], List[Union[str, bytes]]]\n    mask: Optional[Union[str, bytes]]\n    prompt: str\n    n: int\n    size: Optional[str]\n    response_format: str\n\n\nclass SDAPIResult(TypedDict):\n    images: List[str]\n    parameters: dict\n    info: dict\n\n\nclass Video(TypedDict):\n    url: Optional[str]\n    b64_json: Optional[str]\n\n\nclass VideoList(TypedDict):\n    created: int\n    data: List[Video]\n\n\nclass EmbeddingUsage(TypedDict):\n    prompt_tokens: int\n    total_tokens: int\n\n\nclass EmbeddingData(TypedDict):\n    index: int\n    object: str\n    # support sparse embedding\n    embedding: Union[List[float], Dict[str, float]]\n\n\nclass Embedding(TypedDict):\n    object: Literal[\"list\"]\n    model: str\n    model_replica: str\n    data: List[EmbeddingData]\n    usage: EmbeddingUsage\n\n\nclass Document(TypedDict):\n    text: str\n\n\nclass DocumentObj(TypedDict):\n    index: int\n    relevance_score: float\n    document: Optional[Document]\n\n\n# Cohere API compatibility\nclass ApiVersion(TypedDict):\n    version: str\n    is_deprecated: bool\n    is_experimental: bool\n\n\n# Cohere API compatibility\nclass BilledUnit(TypedDict):\n    input_tokens: int\n    output_tokens: int\n    search_units: int\n    classifications: int\n\n\nclass RerankTokens(TypedDict):\n    input_tokens: int\n    output_tokens: int\n\n\nclass Meta(TypedDict):\n    api_version: Optional[ApiVersion]\n    billed_units: Optional[BilledUnit]\n    tokens: RerankTokens\n    warnings: Optional[List[str]]\n\n\nclass Rerank(TypedDict):\n    id: str\n    results: List[DocumentObj]\n    meta: Meta\n\n\nclass CompletionLogprobs(TypedDict):\n    text_offset: List[int]\n    token_logprobs: List[Optional[float]]\n    tokens: List[str]\n    top_logprobs: List[Optional[Dict[str, float]]]\n\n\nclass ToolCallFunction(TypedDict):\n    name: str\n    arguments: str\n\n\nclass ToolCalls(TypedDict):\n    id: str\n    type: Literal[\"function\"]\n    function: ToolCallFunction\n\n\nclass CompletionChoice(TypedDict):\n    text: NotRequired[str]\n    index: int\n    logprobs: Optional[CompletionLogprobs]\n    finish_reason: Optional[str]\n    tool_calls: NotRequired[List[ToolCalls]]\n\n\nclass CompletionUsage(TypedDict):\n    prompt_tokens: int\n    completion_tokens: int\n    total_tokens: int\n\n\nclass CompletionChunk(TypedDict):\n    id: str\n    object: Literal[\"text_completion\"]\n    created: int\n    model: str\n    choices: List[CompletionChoice]\n    usage: NotRequired[CompletionUsage]\n\n\nclass Completion(TypedDict):\n    id: str\n    object: Literal[\"text_completion\"]\n    created: int\n    model: str\n    choices: List[CompletionChoice]\n    usage: CompletionUsage\n\n\nclass ChatCompletionAudio(TypedDict):\n    id: str\n    data: str\n    expires_at: int\n    transcript: str\n\n\nclass ChatCompletionMessage(TypedDict):\n    role: str\n    reasoning_content: NotRequired[str]\n    content: Optional[str]\n    audio: NotRequired[ChatCompletionAudio]\n    user: NotRequired[str]\n    tool_calls: NotRequired[List]\n\n\nclass ChatCompletionChoice(TypedDict):\n    index: int\n    message: ChatCompletionMessage\n    finish_reason: Optional[str]\n\n\nclass ChatCompletion(TypedDict):\n    id: str\n    object: Literal[\"chat.completion\"]\n    created: int\n    model: str\n    choices: List[ChatCompletionChoice]\n    usage: CompletionUsage\n\n\nclass ChatCompletionChunkDelta(TypedDict):\n    role: NotRequired[str]\n    reasoning_content: NotRequired[Union[str, None]]\n    content: NotRequired[Union[str, None]]\n    tool_calls: NotRequired[List[ToolCalls]]\n\n\nclass ChatCompletionChunkChoice(TypedDict):\n    index: int\n    delta: ChatCompletionChunkDelta\n    finish_reason: Optional[str]\n\n\nclass ChatCompletionChunk(TypedDict):\n    id: str\n    model: str\n    object: Literal[\"chat.completion.chunk\"]\n    created: int\n    choices: List[ChatCompletionChunkChoice]\n    usage: NotRequired[CompletionUsage]\n\n\nStoppingCriteria = Callable[[List[int], List[float]], bool]\n\n\nclass StoppingCriteriaList(List[StoppingCriteria]):\n    def __call__(self, input_ids: List[int], logits: List[float]) -> bool:\n        return any([stopping_criteria(input_ids, logits) for stopping_criteria in self])\n\n\nLogitsProcessor = Callable[[List[int], List[float]], List[float]]\n\n\nclass LogitsProcessorList(List[LogitsProcessor]):\n    def __call__(self, input_ids: List[int], scores: List[float]) -> List[float]:\n        for processor in self:\n            scores = processor(input_ids, scores)\n        return scores\n\n\nclass PytorchGenerateConfig(TypedDict, total=False):\n    temperature: float\n    repetition_penalty: float\n    top_p: float\n    top_k: int\n    stream: bool\n    max_tokens: int\n    echo: bool\n    stop: Optional[Union[str, List[str]]]\n    stop_token_ids: Optional[Union[int, List[int]]]\n    stream_interval: int\n    model: Optional[str]\n    tools: Optional[List[Dict]]\n    lora_name: Optional[str]\n    stream_options: Optional[Union[dict, None]]\n    request_id: Optional[str]\n\n\nclass CogagentGenerateConfig(PytorchGenerateConfig, total=False):\n    platform: Optional[Literal[\"Mac\", \"WIN\", \"Mobile\"]]\n    format: Optional[\n        Literal[\n            \"(Answer in Action-Operation-Sensitive format.)\",\n            \"(Answer in Status-Plan-Action-Operation format.)\",\n            \"(Answer in Status-Action-Operation-Sensitive format.)\",\n            \"(Answer in Status-Action-Operation format.)\",\n            \"(Answer in Action-Operation format.)\",\n        ]\n    ]\n\n\nclass PytorchModelConfig(TypedDict, total=False):\n    revision: Optional[str]\n    device: str\n    gpus: Optional[str]\n    num_gpus: int\n    max_gpu_memory: str\n    gptq_ckpt: Optional[str]\n    gptq_wbits: int\n    gptq_groupsize: int\n    gptq_act_order: bool\n    trust_remote_code: bool\n    max_num_seqs: int\n    enable_tensorizer: Optional[bool]\n    reasoning_content: bool\n    min_pixels: NotRequired[int]\n    max_pixels: NotRequired[int]\n    quantization_config: NotRequired[Dict]\n    context_length: NotRequired[int]\n    torch_dtype: NotRequired[str]\n    enable_flash_attn: NotRequired[bool]\n\n\ndef get_pydantic_model_from_method(\n    meth,\n    exclude_fields: Optional[Iterable[str]] = None,\n    include_fields: Optional[Dict[str, Any]] = None,\n) -> BaseModel:\n    # The validate_arguments set Config.extra = \"forbid\" by default.\n    f = validate_arguments(meth, config={\"arbitrary_types_allowed\": True})\n    model = f.model\n    model.Config.extra = \"ignore\"\n    model.__fields__.pop(\"self\", None)\n    model.__fields__.pop(\"args\", None)\n    model.__fields__.pop(\"kwargs\", None)\n    pydantic_private_keys = [\n        key for key in model.__fields__.keys() if key.startswith(\"v__\")\n    ]\n    for key in pydantic_private_keys:\n        model.__fields__.pop(key)\n    if exclude_fields is not None:\n        for key in exclude_fields:\n            model.__fields__.pop(key, None)\n    if include_fields is not None:\n        dummy_model = create_model(\"DummyModel\", **include_fields)\n        model.__fields__.update(dummy_model.__fields__)\n    return model\n\n\ndef fix_forward_ref(model):\n    \"\"\"\n    pydantic in Python 3.8 generates ForwardRef field, we replace them\n    by the Optional[Any]\n    \"\"\"\n    exclude_fields = []\n    include_fields = {}\n    for key, field in model.__fields__.items():\n        if isinstance(field.annotation, ForwardRef):\n            exclude_fields.append(key)\n            include_fields[key] = (Optional[Any], None)\n    if exclude_fields:\n        for key in exclude_fields:\n            model.__fields__.pop(key, None)\n    if include_fields:\n        dummy_model = create_model(\"DummyModel\", **include_fields)\n        model.__fields__.update(dummy_model.__fields__)\n    return model\n\n\nclass ModelAndPrompt(BaseModel):\n    model: str\n    prompt: str\n\n\nclass ModelAndMessages(BaseModel):\n    model: str\n    messages: List[Dict[str, Any]]\n\n\nclass CreateCompletionTorch(BaseModel):\n    echo: bool = echo_field\n    max_tokens: Optional[int] = max_tokens_field\n    repetition_penalty: float = repeat_penalty_field\n    stop: Optional[Union[str, List[str]]] = stop_field\n    stop_token_ids: Optional[Union[int, List[int]]] = none_field\n    stream: bool = stream_field\n    stream_options: Optional[Union[dict, None]] = stream_option_field\n    stream_interval: int = stream_interval_field\n    temperature: float = temperature_field\n    top_p: float = top_p_field\n    top_k: int = top_k_field\n    lora_name: Optional[str]\n    request_id: Optional[str]\n    chat_template_kwargs: Optional[Union[str, Dict[str, Any]]]\n\n\n# This type is for openai API compatibility\nCreateCompletionOpenAI: BaseModel\n\nfrom openai.types.completion_create_params import CompletionCreateParamsNonStreaming\n\nCreateCompletionOpenAI = create_model_from_typeddict(\n    CompletionCreateParamsNonStreaming,\n)\nCreateCompletionOpenAI = fix_forward_ref(CreateCompletionOpenAI)\n\n\nclass CreateCompletion(\n    ModelAndPrompt,\n    CreateCompletionTorch,\n    CreateCompletionOpenAI,\n):\n    pass\n\n\nclass CreateChatModel(BaseModel):\n    model: str\n\n\n# Currently, chat calls generates, so the params share the same one.\nCreateChatCompletionTorch = CreateCompletionTorch\n\nfrom ._compat import CreateChatCompletionOpenAI\n\n\nclass CreateChatCompletion(  # type: ignore\n    CreateChatModel,\n    CreateChatCompletionTorch,\n    CreateChatCompletionOpenAI,\n):\n    pass\n\n\nclass LoRA:\n    def __init__(self, lora_name: str, local_path: str):\n        self.lora_name = lora_name\n        self.local_path = local_path\n\n    def to_dict(self):\n        return {\n            \"lora_name\": self.lora_name,\n            \"local_path\": self.local_path,\n        }\n\n    @classmethod\n    def from_dict(cls, data: Dict):\n        return cls(\n            lora_name=data[\"lora_name\"],\n            local_path=data[\"local_path\"],\n        )\n\n\nclass PeftModelConfig:\n    def __init__(\n        self,\n        peft_model: Optional[List[LoRA]] = None,\n        image_lora_load_kwargs: Optional[Dict] = None,\n        image_lora_fuse_kwargs: Optional[Dict] = None,\n    ):\n        self.peft_model = peft_model\n        self.image_lora_load_kwargs = image_lora_load_kwargs\n        self.image_lora_fuse_kwargs = image_lora_fuse_kwargs\n\n    def to_dict(self):\n        return {\n            \"lora_list\": (\n                [lora.to_dict() for lora in self.peft_model]\n                if self.peft_model\n                else None\n            ),\n            \"image_lora_load_kwargs\": self.image_lora_load_kwargs,\n            \"image_lora_fuse_kwargs\": self.image_lora_fuse_kwargs,\n        }\n\n    @classmethod\n    def from_dict(cls, data: Dict):\n        peft_model_list = data.get(\"lora_list\", None)\n        peft_model = (\n            [LoRA.from_dict(lora_dict) for lora_dict in peft_model_list]\n            if peft_model_list is not None\n            else None\n        )\n\n        return cls(\n            peft_model=peft_model,\n            image_lora_load_kwargs=data.get(\"image_lora_load_kwargs\"),\n            image_lora_fuse_kwargs=data.get(\"image_lora_fuse_kwargs\"),\n        )\n\n\n# This type is for Anthropic API compatibility\nANTHROPIC_AVAILABLE = False\n\ntry:\n    from anthropic.types import ContentBlock, Usage\n\n    ANTHROPIC_AVAILABLE = True\nexcept ImportError:\n    ContentBlock = None\n    Usage = None\n\n# Use TYPE_CHECKING to avoid runtime issues with mypy\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    # For type checking, define the types as if Anthropic is available\n    from anthropic.types import ContentBlock as ContentBlock_\n    from anthropic.types import Usage as Usage_\n\n    class AnthropicMessage(TypedDict):\n        id: str\n        type: str\n        role: str\n        content: List[ContentBlock_]\n        model: str\n        stop_reason: str\n        stop_sequence: str\n        usage: Usage_\n        container: Dict[str, Any]\n\n    class MessageCreateParams(TypedDict):\n        model: str\n        messages: List[Dict[str, Any]]\n        max_tokens: int\n        stream: NotRequired[bool]\n        temperature: NotRequired[float]\n        top_p: NotRequired[float]\n        top_k: NotRequired[int]\n        stop_sequences: NotRequired[List[str]]\n        metadata: NotRequired[Dict[str, Any]]\n        tools: NotRequired[List[Dict[str, Any]]]\n        tool_choice: NotRequired[Union[str, Dict[str, Any]]]\n\n    CreateMessageAnthropic: BaseModel\n\n    class CreateMessage(\n        ModelAndMessages,\n    ):\n        pass\n\nelse:\n    # Runtime definitions\n    if ANTHROPIC_AVAILABLE:\n\n        class AnthropicMessage(TypedDict):\n            id: str\n            type: str\n            role: str\n            content: List[ContentBlock]\n            model: str\n            stop_reason: str\n            stop_sequence: str\n            usage: Usage\n            container: Dict[str, Any]\n\n        class MessageCreateParams(TypedDict):\n            model: str\n            messages: List[Dict[str, Any]]\n            max_tokens: int\n            stream: NotRequired[bool]\n            temperature: NotRequired[float]\n            top_p: NotRequired[float]\n            top_k: NotRequired[int]\n            stop_sequences: NotRequired[List[str]]\n            metadata: NotRequired[Dict[str, Any]]\n            tools: NotRequired[List[Dict[str, Any]]]\n            tool_choice: NotRequired[Union[str, Dict[str, Any]]]\n\n        CreateMessageAnthropic: BaseModel = create_model_from_typeddict(\n            MessageCreateParams,\n        )\n        CreateMessageAnthropic = fix_forward_ref(CreateMessageAnthropic)\n\n        class CreateMessage(CreateMessageAnthropic):\n            pass\n\n    else:\n        # Define dummy types when Anthropic is not available\n        class AnthropicMessage:\n            pass\n\n        class MessageCreateParams:\n            pass\n\n        CreateMessageAnthropic = None\n\n        class CreateMessage:\n            pass\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/rerank/xinference_rerank.py",
    "content": "from typing import Sequence, Optional\n\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.documents import Document\nfrom pydantic import Field, model_validator\nfrom typing_extensions import Self\n\nfrom .xinference.client import Client\nfrom ..base import BaseRerank\n\n\nclass XinferenceRerank(BaseRerank):\n    \"\"\"Document compressor that uses `Xinference Rerank API`.\"\"\"\n    base_url: str = Field(..., description=\"xinference server base url， example: http://localhost:9997\")\n    api_key: Optional[str] = Field(default=\"\", description=\"api key for xinference server\")\n    model_uid: str = Field(..., description=\"model uid for xinference rerank model\")\n\n    client: Optional[Client] = Field(default=None, description=\"xinference client instance\")\n\n    @model_validator(mode=\"after\")\n    def validate_client(self) -> Self:\n        \"\"\"Validate that client exists in environment.\"\"\"\n        if self.base_url.endswith((\"/v1\", \"/v1/\")):\n            self.base_url = self.base_url.rsplit(\"/v1\", 1)[0]\n        if not self.client:\n            self.client = Client(base_url=self.base_url, api_key=self.api_key)\n        return self\n\n    def compress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        if len(documents) == 0:  # to avoid empty api call\n            return []\n        docs = [\n            doc.page_content if isinstance(doc, Document) else doc for doc in documents\n        ]\n        model = self.client.get_model(self.model_uid)  # ensure model exists\n        result = model.rerank(docs, query)\n\n        results = result.get(\"results\", [])\n        return self.sort_rerank_result(documents, results)\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/test/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/ai/test/test.py",
    "content": "import asyncio\nimport os\n\nimport pytest\n\nfrom bisheng.core.ai import AzureOpenAIASRClient\n\n\n@pytest.mark.asyncio\nasync def test_aliyun_asr():\n    from ..asr import AliyunASRClient\n    # api_key = os.environ.get('ALIYUN_API_KEY')\n    api_key = \"sk-b4c85ea486a04aab8041dc9f36d20617\"\n    client = AliyunASRClient(api_key=api_key, model=\"paraformer-realtime-v2\")\n    with open(\"../asr/tmpm103lam_.wav\", \"rb\") as f:\n        audio = f.read()\n    text = await client.transcribe(audio)\n    print(text)\n    # assert text == \"Hello word, This is Alibaba Voice Lab.\"\n\n\n@pytest.mark.asyncio\nasync def test_aliyun_tts():\n    from ..tts import AliyunTTSClient\n    api_key = os.environ.get('ALIYUN_API_KEY')\n    client = AliyunTTSClient(api_key=api_key)\n    audio_bytes = await client.synthesize(\"Hello World!\")\n    with open(\"./data/aliyun_result.mp3\", \"wb\") as f:\n        f.write(audio_bytes)\n\n    assert os.path.exists(\"./data/aliyun_result.mp3\")\n\n\n@pytest.mark.asyncio\nasync def test_azure_openai_asr():\n    api_key = os.environ.get('AZURE_OPENAI_API_KEY')\n    api_version = os.environ.get('AZURE_OPENAI_API_VERSION')\n    azure_endpoint = os.environ.get('AZURE_OPENAI_ENDPOINT')\n    client = AzureOpenAIASRClient(api_key=api_key, model=\"gpt-4o-transcribe\", azure_endpoint=azure_endpoint,\n                                  api_version=api_version)\n    text = await client.transcribe(\"./data/asr_example.wav\")\n    assert text == \"Hello word, This is Alibaba Voice Lab.\"\n\n\n@pytest.mark.asyncio\nasync def test_azure_openai_tts():\n    from ..tts import AzureOpenAITTSClient\n    api_key = os.environ.get('AZURE_OPENAI_API_KEY')\n    api_version = os.environ.get('AZURE_OPENAI_API_VERSION')\n    azure_endpoint = os.environ.get('AZURE_OPENAI_ENDPOINT')\n    client = AzureOpenAITTSClient(api_key=api_key, model=\"gpt-4o-transcribe\", azure_endpoint=azure_endpoint,\n                                  api_version=api_version)\n    audio_bytes = await client.synthesize(\"Hello, world!\")\n    with open(\"./data/azure_openai_result.mp3\", \"wb\") as f:\n        f.write(audio_bytes)\n\n    assert os.path.exists(\"./data/azure_openai_result.mp3\")\n\n\ndef test_xinference_rerank():\n    from ..rerank.xinference_rerank import XinferenceRerank\n    api_key = os.environ.get('XINFERENCE_API_KEY')\n    base_url = os.environ.get('XINFERENCE_BASE_URL')\n    model_uid = os.environ.get('XINFERENCE_RERANK_MODEL_UID')\n\n    reranker = XinferenceRerank(base_url=base_url, api_key=api_key, model_uid=model_uid)\n\n\nasync def main():\n    await test_aliyun_asr()\n    # await test_aliyun_tts()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/tts/__init__.py",
    "content": "from .aliyun_tts_client import AliyunTTSClient\nfrom .azure_openai_tts_client import AzureOpenAITTSClient\nfrom .openai_tts_client import OpenAITTSClient\n\n__all__ = [\n    'OpenAITTSClient',\n    'AliyunTTSClient',\n    'AzureOpenAITTSClient'\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/tts/aliyun_tts_client.py",
    "content": "import asyncio\nfrom typing import Optional\n\nfrom dashscope.audio.tts_v2 import SpeechSynthesizer\n\nfrom ..base import BaseTTSClient\n\n\nclass AliyunTTSClient(BaseTTSClient):\n    \"\"\"Alibaba CloudTTSClient\"\"\"\n\n    def __init__(self, api_key: str, **kwargs):\n        \"\"\"\n        Initialize Alibaba CloudTTSClient\n        \"\"\"\n        self.model = kwargs.get(\"model\", \"cosyvoice-v2\")\n        self.voice = kwargs.get(\"voice\", \"longxiaochun_v2\")\n        self.app_key = api_key\n        self.synthesizer = SpeechSynthesizer(model=self.model, voice=self.voice)\n        self.synthesizer.request.apikey = self.app_key\n\n    def sync_func(self, text: str):\n        audio = self.synthesizer.call(text=text)\n        return audio\n\n    async def synthesize(\n            self,\n            text: str,\n            voice: Optional[str] = None,\n            language: Optional[str] = None,\n            format: str = \"mp3\"\n    ) -> bytes:\n        \"\"\"\n        Convert text to audio\n        :param text:\n        :param voice:\n        :param language:\n        :param format:\n        :return:\n        \"\"\"\n\n        audio = await asyncio.to_thread(self.sync_func, text=text)\n\n        if audio is None:\n            raise ValueError(\"TTS synthesis failed, no audio data returned.\")\n\n        return audio\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/tts/azure_openai_tts_client.py",
    "content": "import openai\nfrom typing import Optional, Literal\nfrom ..base import BaseTTSClient\n\n\nclass AzureOpenAITTSClient(BaseTTSClient):\n    \"\"\"OpenAI TTSClient\"\"\"\n\n    def __init__(self, api_key: str, **kwargs):\n        \"\"\"\n        InisialisasiOpenAI TTSClient\n        :param api_key:\n        :param kwargs:\n        \"\"\"\n        self.model = kwargs.pop(\"model\", \"tts-1\")\n        self.voice = kwargs.pop(\"voice\", \"alloy\")\n        self.client = openai.AsyncAzureOpenAI(api_key=api_key, **kwargs)\n\n    async def synthesize(\n            self,\n            text: str,\n            voice: Optional[str] = None,\n            language: Optional[str] = None,\n            format: Literal[\"mp3\", \"opus\", \"aac\", \"flac\", \"wav\", \"pcm\"] = \"mp3\"\n    ) -> bytes:\n        \"\"\"\n        UseOpenAI TTS APIText-to-speech synthesis\n        :param text:\n        :param voice:\n        :param language:\n        :param format:\n        :return:\n        \"\"\"\n\n        response = await self.client.audio.speech.create(\n            model=self.model,\n            voice=voice or self.voice,\n            input=text,\n            response_format=format\n        )\n\n        if response.response.status_code != 200:\n            raise Exception(\n                f\"OpenAI TTS APIRequest failed, status code:{response.response.status_code}Error Msg{response.response.text}\")\n\n        return response.content\n"
  },
  {
    "path": "src/backend/bisheng/core/ai/tts/openai_tts_client.py",
    "content": "from typing import Optional, Literal\n\nimport openai\n\nfrom ..base import BaseTTSClient\n\n\nclass OpenAITTSClient(BaseTTSClient):\n    \"\"\"OpenAI TTSClient\"\"\"\n\n    def __init__(self, api_key: str, **kwargs):\n        \"\"\"\n        InisialisasiOpenAI TTSClient\n        :param api_key:\n        :param kwargs:\n        \"\"\"\n        self.model = kwargs.pop(\"model\", \"tts-1\")\n        self.voice = kwargs.pop(\"voice\", \"alloy\")\n        self.client = openai.AsyncOpenAI(api_key=api_key, **kwargs)\n\n    async def synthesize(\n            self,\n            text: str,\n            voice: Optional[str] = None,\n            language: Optional[str] = None,\n            format: Literal[\"mp3\", \"opus\", \"aac\", \"flac\", \"wav\", \"pcm\"] = \"mp3\"\n    ) -> bytes:\n        \"\"\"\n        UseOpenAI TTS APIText-to-speech synthesis\n        :param text:\n        :param voice:\n        :param language:\n        :param format:\n        :return:\n        \"\"\"\n\n        response = await self.client.audio.speech.create(\n            model=self.model,\n            voice=voice or self.voice,\n            input=text,\n            response_format=format\n        )\n\n        if response.response.status_code != 200:\n            raise Exception(\n                f\"OpenAI TTS API ERROR，Code：{response.response.status_code}，Message：{response.response.text}\")\n\n        return response.content\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/__init__.py",
    "content": "from bisheng.core.cache.flow import InMemoryCache\nfrom bisheng.core.cache.manager import cache_manager\n\n__all__ = [\n    'cache_manager',\n    'InMemoryCache',\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/base.py",
    "content": "import abc\n\n\nclass BaseCache(abc.ABC):\n    \"\"\"\n    Abstract base class for a cache.\n    \"\"\"\n\n    @abc.abstractmethod\n    def get(self, key):\n        \"\"\"\n        Retrieve an item from the cache.\n\n        Args:\n            key: The key of the item to retrieve.\n\n        Returns:\n            The value associated with the key, or None if the key is not found.\n        \"\"\"\n\n    @abc.abstractmethod\n    def set(self, key, value):\n        \"\"\"\n        Add an item to the cache.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def delete(self, key):\n        \"\"\"\n        Remove an item from the cache.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n\n    @abc.abstractmethod\n    def clear(self):\n        \"\"\"\n        Clear all items from the cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __contains__(self, key):\n        \"\"\"\n        Check if the key is in the cache.\n\n        Args:\n            key: The key of the item to check.\n\n        Returns:\n            True if the key is in the cache, False otherwise.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __getitem__(self, key):\n        \"\"\"\n        Retrieve an item from the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item to retrieve.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __setitem__(self, key, value):\n        \"\"\"\n        Add an item to the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __delitem__(self, key):\n        \"\"\"\n        Remove an item from the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/flow.py",
    "content": "import threading\nimport time\nfrom collections import OrderedDict\n\nfrom bisheng.core.cache.base import BaseCache\n\n\nclass InMemoryCache(BaseCache):\n    \"\"\"\n    A simple in-memory cache using an OrderedDict.\n\n    This cache supports setting a maximum size and expiration time for cached items.\n    When the cache is full, it uses a Least Recently Used (LRU) eviction policy.\n    Thread-safe using a threading Lock.\n\n    Attributes:\n        max_size (int, optional): Maximum number of items to store in the cache.\n        expiration_time (int, optional): Time in seconds after which a cached item expires. Default is 1 hour.\n\n    Example:\n\n        cache = InMemoryCache(max_size=3, expiration_time=5)\n\n        # setting cache values\n        cache.set(\"a\", 1)\n        cache.set(\"b\", 2)\n        cache[\"c\"] = 3\n\n        # getting cache values\n        a = cache.get(\"a\")\n        b = cache[\"b\"]\n    \"\"\"\n\n    def __init__(self, max_size=None, expiration_time=60 * 60):\n        \"\"\"\n        Initialize a new InMemoryCache instance.\n\n        Args:\n            max_size (int, optional): Maximum number of items to store in the cache.\n            expiration_time (int, optional): Time in seconds after which a cached item expires. Default is 1 hour.\n        \"\"\"\n        self._cache = OrderedDict()\n        self._lock = threading.Lock()\n        self.max_size = max_size\n        self.expiration_time = expiration_time\n\n    def get(self, key):\n        \"\"\"\n        Retrieve an item from the cache.\n\n        Args:\n            key: The key of the item to retrieve.\n\n        Returns:\n            The value associated with the key, or None if the key is not found or the item has expired.\n        \"\"\"\n        with self._lock:\n            if key in self._cache:\n                item = self._cache.pop(key)\n                if (\n                    self.expiration_time is None\n                    or time.time() - item['time'] < self.expiration_time\n                ):\n                    # Move the key to the end to make it recently used\n                    self._cache[key] = item\n                    return item['value']\n                else:\n                    self.delete(key)\n            return None\n\n    def set(self, key, value):\n        \"\"\"\n        Add an item to the cache.\n\n        If the cache is full, the least recently used item is evicted.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n        with self._lock:\n            if key in self._cache:\n                # Remove existing key before re-inserting to update order\n                self.delete(key)\n            elif self.max_size and len(self._cache) >= self.max_size:\n                # Remove least recently used item\n                self._cache.popitem(last=False)\n            self._cache[key] = {'value': value, 'time': time.time()}\n\n    def get_or_set(self, key, value):\n        \"\"\"\n        Retrieve an item from the cache. If the item does not exist, set it with the provided value.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache if the item doesn't exist.\n\n        Returns:\n            The cached value associated with the key.\n        \"\"\"\n        with self._lock:\n            if key in self._cache:\n                return self.get(key)\n            self.set(key, value)\n            return value\n\n    def delete(self, key):\n        \"\"\"\n        Remove an item from the cache.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n        # with self._lock:\n        self._cache.pop(key, None)\n\n    def clear(self):\n        \"\"\"\n        Clear all items from the cache.\n        \"\"\"\n        with self._lock:\n            self._cache.clear()\n\n    def __contains__(self, key):\n        \"\"\"Check if the key is in the cache.\"\"\"\n        return key in self._cache\n\n    def __getitem__(self, key):\n        \"\"\"Retrieve an item from the cache using the square bracket notation.\"\"\"\n        return self.get(key)\n\n    def __setitem__(self, key, value):\n        \"\"\"Add an item to the cache using the square bracket notation.\"\"\"\n        self.set(key, value)\n\n    def __delitem__(self, key):\n        \"\"\"Remove an item from the cache using the square bracket notation.\"\"\"\n        self.delete(key)\n\n    def __len__(self):\n        \"\"\"Return the number of items in the cache.\"\"\"\n        return len(self._cache)\n\n    def __repr__(self):\n        \"\"\"Return a string representation of the InMemoryCache instance.\"\"\"\n        return f'InMemoryCache(max_size={self.max_size}, expiration_time={self.expiration_time})'\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/manager.py",
    "content": "from contextlib import contextmanager\nfrom typing import Any, Awaitable, Callable, List, Optional\n\nimport pandas as pd\nfrom bisheng.utils.util import get_cache_key\nfrom PIL import Image\n\n\nclass Subject:\n    \"\"\"Base class for implementing the observer pattern.\"\"\"\n\n    def __init__(self):\n        self.observers: List[Callable[[], None]] = []\n\n    def attach(self, observer: Callable[[], None]):\n        \"\"\"Attach an observer to the subject.\"\"\"\n        self.observers.append(observer)\n\n    def detach(self, observer: Callable[[], None]):\n        \"\"\"Detach an observer from the subject.\"\"\"\n        self.observers.remove(observer)\n\n    def notify(self):\n        \"\"\"Notify all observers about an event.\"\"\"\n        for observer in self.observers:\n            if observer is None:\n                continue\n            observer()\n\n\nclass AsyncSubject:\n    \"\"\"Base class for implementing the async observer pattern.\"\"\"\n\n    def __init__(self):\n        self.observers: List[Callable[[], Awaitable]] = []\n\n    def attach(self, observer: Callable[[], Awaitable]):\n        \"\"\"Attach an observer to the subject.\"\"\"\n        self.observers.append(observer)\n\n    def detach(self, observer: Callable[[], Awaitable]):\n        \"\"\"Detach an observer from the subject.\"\"\"\n        self.observers.remove(observer)\n\n    async def notify(self):\n        \"\"\"Notify all observers about an event.\"\"\"\n        for observer in self.observers:\n            if observer is None:\n                continue\n            await observer()\n\n\nclass CacheManager(Subject):\n    \"\"\"Manages cache for different clients and notifies observers on changes.\"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self._cache = {}\n        self.current_client_id = None\n        self.current_chat_id = None\n        self.current_cache = {}\n\n    @contextmanager\n    def set_client_id(self, client_id: str, chat_id: str):\n        \"\"\"\n        Context manager to set the current client_id and associated cache.\n\n        Args:\n            client_id (str): The client identifier.\n        \"\"\"\n        previous_client_id = self.current_client_id\n        previous_chat_id = self.current_chat_id\n        self.current_client_id = client_id\n        self.current_chat_id = chat_id\n        self.current_cache = self._cache.setdefault(get_cache_key(client_id, chat_id), {})\n        try:\n            yield\n        finally:\n            self.current_client_id = previous_client_id\n            self.current_chat_id = previous_chat_id\n            self.current_cache = self._cache.get(get_cache_key(self.current_client_id, self.current_chat_id), {})\n\n    def add(self, name: str, obj: Any, obj_type: str, extension: Optional[str] = None):\n        \"\"\"\n        Add an object to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The object to cache.\n            obj_type (str): The type of the object.\n        \"\"\"\n        object_extensions = {\n            'image': 'png',\n            'pandas': 'csv',\n        }\n        if obj_type in object_extensions:\n            _extension = object_extensions[obj_type]\n        else:\n            _extension = type(obj).__name__.lower()\n        self.current_cache[name] = {\n            'obj': obj,\n            'type': obj_type,\n            'extension': extension or _extension,\n        }\n        self.notify()\n\n    def add_pandas(self, name: str, obj: Any):\n        \"\"\"\n        Add a pandas DataFrame or Series to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The pandas DataFrame or Series object.\n        \"\"\"\n        if isinstance(obj, (pd.DataFrame, pd.Series)):\n            self.add(name, obj.to_csv(), 'pandas', extension='csv')\n        else:\n            raise ValueError('Object is not a pandas DataFrame or Series')\n\n    def add_image(self, name: str, obj: Any, extension: str = 'png'):\n        \"\"\"\n        Add a PIL Image to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The PIL Image object.\n        \"\"\"\n        if isinstance(obj, Image.Image):\n            self.add(name, obj, 'image', extension=extension)\n        else:\n            raise ValueError('Object is not a PIL Image')\n\n    def get(self, name: str):\n        \"\"\"\n        Get an object from the current client's cache.\n\n        Args:\n            name (str): The cache key.\n\n        Returns:\n            The cached object associated with the given cache key.\n        \"\"\"\n        return self.current_cache[name]\n\n    def get_last(self):\n        \"\"\"\n        Get the last added item in the current client's cache.\n\n        Returns:\n            The last added item in the cache.\n        \"\"\"\n        return list(self.current_cache.values())[-1]\n\n\ncache_manager = CacheManager()\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/redis_conn.py",
    "content": "import pickle\nimport typing\nfrom typing import Dict, Optional\n\nimport redis\nfrom loguru import logger\nfrom redis import ConnectionPool, RedisCluster\nfrom redis.asyncio import Redis as AsyncRedis\nfrom redis.asyncio.client import Pipeline\nfrom redis.asyncio.cluster import RedisCluster as AsyncRedisCluster\nfrom redis.asyncio.sentinel import Sentinel as AsyncSentinel\nfrom redis.backoff import ExponentialBackoff\nfrom redis.cluster import ClusterNode\nfrom redis.retry import Retry\nfrom redis.sentinel import Sentinel\n\n\nclass RedisClient:\n\n    def __init__(self, redis_url, max_connections=100):\n        # # Sentry Mode\n        if isinstance(redis_url, Dict):\n            redis_conf = dict(redis_url)\n            mode = redis_conf.pop('mode', 'sentinel')\n            if mode == 'cluster':\n                # Cluster Mode\n                cluster_url = ''\n                if 'startup_nodes' in redis_conf:\n                    first_node = redis_conf['startup_nodes'][0]\n                    cluster_url = f'redis://{first_node[\"host\"]}:{first_node[\"port\"]}'\n                    redis_conf['startup_nodes'] = [\n                        ClusterNode(node.get('host'), node.get('port'))\n                        for node in redis_conf['startup_nodes']\n                    ]\n                self.connection = RedisCluster.from_url(cluster_url, **redis_conf,\n                                                        retry=Retry(ExponentialBackoff(), 6),\n                                                        cluster_error_retry_attempts=1)\n                self.async_connection: typing.Union[AsyncRedisCluster, AsyncRedis] = AsyncRedisCluster.from_url(\n                    cluster_url, **redis_conf, retry=Retry(ExponentialBackoff(), 6), cluster_error_retry_attempts=1)\n                return\n            hosts = [eval(x) for x in redis_conf.pop('sentinel_hosts')]\n            password = redis_conf.pop('sentinel_password', None)\n            master = redis_conf.pop('sentinel_master')\n            sentinel = Sentinel(sentinels=hosts, socket_timeout=0.1, sentinel_kwargs={'password': password})\n            async_sentinel = AsyncSentinel(sentinels=hosts, socket_timeout=0.1, sentinel_kwargs={'password': password})\n            # Get the connection of the master node\n            self.connection = sentinel.master_for(master, socket_timeout=0.1, **redis_conf)\n            self.async_connection: AsyncRedis = async_sentinel.master_for(master, socket_timeout=0.1, **redis_conf)\n\n        else:\n            # Singleplayer Mode\n            self.pool = ConnectionPool.from_url(redis_url, max_connections=max_connections)\n            self.async_pool = redis.asyncio.ConnectionPool.from_url(redis_url, max_connections=max_connections)\n            self.connection = redis.StrictRedis(connection_pool=self.pool)\n            self.async_connection: AsyncRedis = redis.asyncio.Redis.from_pool(self.async_pool)\n\n    def set(self, key, value, expiration=3600, enx=None):\n        try:\n            if pickled := pickle.dumps(value):\n                self.cluster_nodes(key)\n                if expiration:\n                    result = self.connection.setex(key, expiration, pickled)\n                else:\n                    result = self.connection.set(key, pickled)\n                if not result:\n                    raise ValueError('RedisCache could not set the value.')\n            else:\n                logger.error(f'pickle error, value={value}')\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def aset(self, key, value, expiration=3600):\n        try:\n            if pickled := pickle.dumps(value):\n                await self.acluster_nodes(key)\n                if expiration:\n                    result = await self.async_connection.setex(name=key, value=pickled, time=expiration)\n                else:\n                    result = await self.async_connection.set(key, pickled)\n                if not result:\n                    raise ValueError('RedisCache could not set the value.')\n            else:\n                logger.error(f'pickle error, value={value}')\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    def setNx(self, key, value, expiration=3600):\n        try:\n            if pickled := pickle.dumps(value):\n                self.cluster_nodes(key)\n                result = self.connection.setnx(key, pickled)\n                self.connection.expire(key, expiration)\n                if not result:\n                    return False\n            return True\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def asetNx(self, key, value, expiration=3600):\n        try:\n            if pickled := pickle.dumps(value):\n                await self.acluster_nodes(key)\n                result = await self.async_connection.setnx(key, pickled)\n                await self.async_connection.expire(key, expiration)\n                if not result:\n                    return False\n            return True\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    def setex(self, key, value, expiration=3600):\n        try:\n            if pickled := pickle.dumps(value):\n                self.cluster_nodes(key)\n                result = self.connection.setex(key, expiration, pickled)\n                if not result:\n                    raise ValueError('RedisCache could not set the value.')\n            else:\n                logger.error(f'pickle error, value={value}')\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def asetex(self, key, value, expiration=3600):\n        try:\n            if pickled := pickle.dumps(value):\n                await self.acluster_nodes(key)\n                result = await self.async_connection.setex(key, expiration, pickled)\n                if not result:\n                    raise ValueError('RedisCache could not set the value.')\n            else:\n                logger.error(f'pickle error, value={value}')\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    def mset(self, mapping: Dict[str, typing.Any], expiration: int = None) -> bool | None:\n        \"\"\"Bulk Settings\"\"\"\n        try:\n            if not mapping:\n                return True\n\n            serialized_mapping = {k: pickle.dumps(v) for k, v in mapping.items() if v is not None}\n            result = self.connection.mset(serialized_mapping)\n\n            if expiration:\n                # UsepipelineBatch Set Expiration Time\n                pipe = self.connection.pipeline()\n                for key in mapping.keys():\n                    pipe.expire(key, expiration)\n                pipe.execute()\n\n            return bool(result)\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def amset(self, mapping: Dict[str, typing.Any], expiration: int = None) -> bool | None:\n        \"\"\"Asynchronous Batch Setup\"\"\"\n        try:\n            if not mapping:\n                return True\n\n            serialized_mapping = {k: pickle.dumps(v) for k, v in mapping.items() if v is not None}\n            result = await self.async_connection.mset(serialized_mapping)\n\n            if expiration:\n                # UsepipelineBatch Set Expiration Time\n                pipe: Pipeline = self.async_connection.pipeline()\n                for key in mapping.keys():\n                    await pipe.expire(key, expiration)\n                await pipe.execute()\n\n            return bool(result)\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    def mget(self, keys: typing.List[str]) -> typing.List[typing.Any] | None:\n        \"\"\"Get in bulk\"\"\"\n        try:\n            if not keys:\n                return []\n            values = self.connection.mget(keys)\n\n            return [pickle.loads(v) for v in values if v is not None]\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def amget(self, keys: typing.List[str]) -> typing.List[typing.Any] | None:\n        \"\"\"Asynchronous Batch Acquisition\"\"\"\n        try:\n            if not keys:\n                return []\n            values = await self.async_connection.mget(keys)\n            return [pickle.loads(v) for v in values if v is not None]\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    async def akeys(self, pattern: str) -> typing.List[str]:\n        \"\"\"Get all keys matching patterns asynchronously\"\"\"\n        try:\n            await self.acluster_nodes(pattern)\n            keys = await self.async_connection.keys(pattern)\n            return [key.decode('utf-8') for key in keys]\n        except Exception as e:\n            raise e\n\n    def hsetkey(self, name, key, value, expiration=3600):\n        try:\n            self.cluster_nodes(key)\n            r = self.connection.hset(name, key, value)\n            if expiration:\n                self.connection.expire(name, expiration)\n            return r\n        except Exception as e:\n            raise e\n\n    async def ahsetkey(self, name, key, value, expiration=3600):\n        try:\n            await self.acluster_nodes(key)\n            r = await self.async_connection.hset(name, key, value)\n            if expiration:\n                await self.async_connection.expire(name, expiration)\n            return r\n        except Exception as e:\n            raise e\n\n    def hset(self, name,\n             key: Optional[str] = None,\n             value: Optional[str] = None,\n             mapping: Optional[dict] = None,\n             items: Optional[list] = None,\n             expiration: int = 3600):\n        try:\n            self.cluster_nodes(name)\n            r = self.connection.hset(name, key, value, mapping, items)\n            if expiration:\n                self.connection.expire(name, expiration)\n            return r\n        except Exception as e:\n            raise e\n\n    async def ahset(self, name,\n                    key: Optional[str] = None,\n                    value: Optional[str] = None,\n                    mapping: Optional[dict] = None,\n                    items: Optional[list] = None,\n                    expiration: int = 3600):\n        try:\n            await self.acluster_nodes(name)\n            r = await self.async_connection.hset(name, key, value, mapping, items)\n            if expiration:\n                await self.async_connection.expire(name, expiration)\n            return r\n        except Exception as e:\n            raise e\n\n    def hget(self, name, key):\n        try:\n            self.cluster_nodes(name)\n            return self.connection.hget(name, key)\n        except Exception as e:\n            raise e\n\n    async def ahget(self, name, key):\n        try:\n            await self.acluster_nodes(name)\n            return await self.async_connection.hget(name, key)\n        except Exception as e:\n            raise e\n\n    def hgetall(self, name):\n        try:\n            self.cluster_nodes(name)\n            return self.connection.hgetall(name)\n        except Exception as e:\n            raise e\n\n    async def ahgetall(self, name):\n        try:\n            await self.acluster_nodes(name)\n            return await self.async_connection.hgetall(name)\n        except Exception as e:\n            raise e\n\n    def hdel(self, name, *keys):\n        try:\n            self.cluster_nodes(name)\n            return self.connection.hdel(name, *keys)\n        except Exception as e:\n            raise e\n\n    async def ahdel(self, name, *keys):\n        try:\n            await self.acluster_nodes(name)\n            return await self.async_connection.hdel(name, *keys)\n        except Exception as e:\n            raise e\n\n    def get(self, key):\n        try:\n            self.cluster_nodes(key)\n            value = self.connection.get(key)\n            return pickle.loads(value) if value else None\n        except Exception as e:\n            raise e\n\n    async def aget(self, key):\n        try:\n            await self.acluster_nodes(key)\n            value = await self.async_connection.get(key)\n            return pickle.loads(value) if value else None\n        except Exception as e:\n            # Handle the case where the value is None or not picklable\n            raise e\n\n    def incr(self, key, expiration=3600) -> int:\n        try:\n            self.cluster_nodes(key)\n            value = self.connection.incr(key)\n            if expiration:\n                self.connection.expire(key, expiration)\n            return value\n        except Exception as e:\n            raise e\n\n    async def aincr(self, key, expiration=3600) -> int:\n        try:\n            await self.acluster_nodes(key)\n            value = await self.async_connection.incr(key)\n            if expiration:\n                await self.async_connection.expire(key, expiration)\n            return value\n        except Exception as e:\n            raise e\n\n    def expire_key(self, key, expiration: int):\n        try:\n            self.cluster_nodes(key)\n            self.connection.expire(key, expiration)\n        except Exception as e:\n            raise e\n\n    async def aexpire_key(self, key, expiration: int):\n        try:\n            await self.acluster_nodes(key)\n            await self.async_connection.expire(key, expiration)\n        except Exception as e:\n            raise e\n\n    def delete(self, key):\n        try:\n            self.cluster_nodes(key)\n            return self.connection.delete(key)\n        except Exception as e:\n            raise e\n\n    async def adelete(self, key):\n        try:\n            await self.acluster_nodes(key)\n            return await self.async_connection.delete(key)\n        except Exception as e:\n            raise e\n\n    async def alpush(self, key, value, expiration=3600):\n        try:\n            await self.acluster_nodes(key)\n            ret = await self.async_connection.lpush(key, value)\n            if expiration:\n                await self.aexpire_key(key, expiration)\n            return ret\n        except Exception as e:\n            raise e\n\n    async def ablpop(self, key, timeout=0):\n        try:\n            await self.acluster_nodes(key)\n            value = await self.async_connection.blpop(key, timeout)\n            return pickle.loads(value[1]) if value and value[1] else None\n        except Exception as e:\n            raise e\n\n    async def alrange(self, key, start=0, end=-1):\n        try:\n            await self.acluster_nodes(key)\n            values = await self.async_connection.lrange(key, start, end)\n            return [pickle.loads(v) for v in values if v is not None]\n        except Exception as e:\n            raise e\n\n    async def alrem(self, key, value):\n        try:\n            await self.acluster_nodes(key)\n            value = pickle.dumps(value) if not isinstance(value, bytes) else value\n            return await self.async_connection.lrem(key, 0, value)\n        except Exception as e:\n            raise e\n\n    def rpush(self, key, value, expiration=3600):\n        try:\n            self.cluster_nodes(key)\n            ret = self.connection.rpush(key, value)\n            if expiration:\n                self.expire_key(key, expiration)\n            return ret\n        except Exception as e:\n            raise e\n\n    async def arpush(self, key, value, expiration=3600):\n        try:\n            await self.acluster_nodes(key)\n            value = pickle.dumps(value) if not isinstance(value, bytes) else value\n            ret = await self.async_connection.rpush(key, value)\n            if expiration:\n                await self.aexpire_key(key, expiration)\n            return ret\n        except Exception as e:\n            raise e\n\n    def lpop(self, key, count: int = None):\n        try:\n            self.cluster_nodes(key)\n            return self.connection.lpop(key, count)\n        except Exception as e:\n            raise e\n\n    async def alpop(self, key, count: int = None):\n        try:\n            await self.acluster_nodes(key)\n            return await self.async_connection.lpop(key, count)\n        except Exception as e:\n            raise e\n\n    def publish(self, key, value):\n        try:\n            self.cluster_nodes(key)\n            return self.connection.publish(key, value)\n        except Exception as e:\n            raise e\n\n    async def apublish(self, key, value):\n        try:\n            await self.acluster_nodes(key)\n            return await self.async_connection.publish(key, value)\n        except Exception as e:\n            raise e\n\n    def exists(self, key):\n        try:\n            self.cluster_nodes(key)\n            return self.connection.exists(key)\n        except Exception as e:\n            raise e\n\n    async def aexists(self, key):\n        try:\n            await self.acluster_nodes(key)\n            return await self.async_connection.exists(key)\n        except Exception as e:\n            raise e\n\n    def close(self):\n        self.connection.close()\n\n    async def aclose(self):\n        \"\"\"Asynchronous close method for the Redis connection.\"\"\"\n        if hasattr(self, 'async_connection') and self.async_connection:\n            await self.async_connection.close()\n        else:\n            logger.warning(\"No async connection to close.\")\n\n    # ==================== PipelineSupport ====================\n\n    def pipeline(self, transaction: bool = True) -> redis.client.Pipeline:\n        \"\"\"DapatkanpipelineObjects\"\"\"\n        return self.connection.pipeline(transaction=transaction)\n\n    def async_pipeline(self, transaction: bool = True) -> Pipeline:\n        \"\"\"Get AsynchronouspipelineObjects\"\"\"\n        return self.async_connection.pipeline(transaction=transaction)\n\n    async def allen(self, key: str) -> int:\n        \"\"\"Check if the key is in the cache using the 'in' operator.\"\"\"\n        await self.acluster_nodes(key)\n        return await self.async_connection.llen(key)\n\n    def __contains__(self, key):\n        \"\"\"Check if the key is in the cache.\"\"\"\n        self.cluster_nodes(key)\n        return False if key is None else self.connection.exists(key)\n\n    def __getitem__(self, key):\n        \"\"\"Retrieve an item from the cache using the square bracket notation.\"\"\"\n        self.cluster_nodes(key)\n        return self.connection.get(key)\n\n    def __setitem__(self, key, value):\n        \"\"\"Add an item to the cache using the square bracket notation.\"\"\"\n        self.cluster_nodes(key)\n        self.connection.set(key, value)\n\n    def __delitem__(self, key):\n        \"\"\"Remove an item from the cache using the square bracket notation.\"\"\"\n        self.cluster_nodes(key)\n        self.connection.delete(key)\n\n    def cluster_nodes(self, key):\n        if isinstance(self.connection,\n                      RedisCluster) and self.connection.get_default_node() is None:\n            target = self.connection.get_node_from_key(key)\n            self.connection.set_default_node(target)\n\n    async def acluster_nodes(self, key):\n        if isinstance(self.async_connection,\n                      AsyncRedisCluster) and self.async_connection.get_default_node() is None:\n            target = self.async_connection.get_node_from_key(key)\n            self.async_connection.set_default_node(target)\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/redis_manager.py",
    "content": "import logging\nfrom typing import Optional, Union, Dict\n\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.cache.redis_conn import RedisClient\n\nlogger = logging.getLogger(__name__)\n\n\nclass RedisManager(BaseContextManager[RedisClient]):\n    \"\"\"Redis Global Manager\n\n    Responsible for management Redis Global lifecycle of connectivity, providing a unified access interface\n    Supports connection pool monitoring, health checks, and easy operations management\n    \"\"\"\n\n    name: str = \"redis\"\n\n    def __init__(\n            self,\n            redis_url: Optional[Union[str, Dict]] = None,\n            **kwargs\n    ):\n        super().__init__(self.name, **kwargs)\n        self.redis_url = redis_url\n        if not self.redis_url:\n            raise ValueError(\"Redis URL is required. Please provide via parameter.\")\n\n    async def _async_initialize(self) -> RedisClient:\n        \"\"\"Inisialisasi Redis Connection Manager\"\"\"\n        return RedisClient(self.redis_url)\n\n    def _sync_initialize(self) -> RedisClient:\n        \"\"\"Synchronization Initialization\"\"\"\n        return RedisClient(self.redis_url)\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup Redis reasourse\"\"\"\n        if self._instance:\n            self._instance.close()\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Cleaned Redis reasourse\"\"\"\n        if self._instance:\n            await self._instance.aclose()\n\n\nasync def get_redis_client() -> RedisClient:\n    \"\"\"Dapatkan Redis Client Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return await app_context.async_get_instance(RedisManager.name)\n    except KeyError:\n        logger.warning(f\"RedisManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(RedisManager(\n                redis_url=settings.redis_url\n            ))\n            return await app_context.async_get_instance(RedisManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register RedisManager: {e}\")\n            raise\n\n\ndef get_redis_client_sync() -> RedisClient:\n    \"\"\"Synchronous fetch Redis Client Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(RedisManager.name)\n    except KeyError:\n        logger.warning(f\"RedisManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(RedisManager(\n                redis_url=settings.redis_url\n            ))\n            return app_context.sync_get_instance(RedisManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register RedisManager: {e}\")\n            raise\n"
  },
  {
    "path": "src/backend/bisheng/core/cache/utils.py",
    "content": "import asyncio\nimport base64\nimport contextlib\nimport functools\nimport hashlib\nimport json\nimport os\nimport shutil\nimport tempfile\nfrom collections import OrderedDict\nfrom io import BytesIO\nfrom pathlib import Path\nfrom typing import Any, Dict, Union, BinaryIO\nfrom urllib.parse import unquote, urlparse\nfrom uuid import uuid4\n\nimport aiofiles\nimport cchardet\nimport requests\nfrom appdirs import user_cache_dir\nfrom fastapi import UploadFile\nfrom urllib3.util import parse_url\n\nfrom bisheng.core.external.http_client.http_client_manager import get_http_client\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage, get_minio_storage_sync\n\nCACHE: Dict[str, Any] = {}\n\nCACHE_DIR = user_cache_dir('bisheng', 'bisheng')\n\n\ndef create_cache_folder(func):\n    def wrapper(*args, **kwargs):\n        # Get the destination folder\n        cache_path = Path(CACHE_DIR) / PREFIX\n\n        # Create the destination folder if it doesn't exist\n        os.makedirs(cache_path, exist_ok=True)\n\n        return func(*args, **kwargs)\n\n    return wrapper\n\n\ndef create_cache_folder_async(func):\n    async def wrapper(*args, **kwargs):\n        # Get the destination folder\n        cache_path = Path(CACHE_DIR) / PREFIX\n\n        # Create the destination folder if it doesn't exist\n        os.makedirs(cache_path, exist_ok=True)\n\n        return await func(*args, **kwargs)\n\n    return wrapper\n\n\ndef memoize_dict(maxsize=128):\n    cache = OrderedDict()\n\n    def decorator(func):\n\n        @functools.wraps(func)\n        def wrapper(*args, **kwargs):\n            hashed = compute_dict_hash(args[0])\n            key = (func.__name__, hashed, frozenset(kwargs.items()))\n            if key not in cache:\n                result = func(*args, **kwargs)\n                cache[key] = result\n                if len(cache) > maxsize:\n                    cache.popitem(last=False)\n            else:\n                result = cache[key]\n            return result\n\n        def clear_cache():\n            cache.clear()\n\n        wrapper.clear_cache = clear_cache  # type: ignore\n        wrapper.cache = cache  # type: ignore\n        return wrapper\n\n    return decorator\n\n\nPREFIX = 'bisheng_cache'\n\n\n@create_cache_folder\ndef clear_old_cache_files(max_cache_size: int = 3):\n    cache_dir = Path(tempfile.gettempdir()) / PREFIX\n    cache_files = list(cache_dir.glob('*.dill'))\n\n    if len(cache_files) > max_cache_size:\n        cache_files_sorted_by_mtime = sorted(cache_files,\n                                             key=lambda x: x.stat().st_mtime,\n                                             reverse=True)\n\n        for cache_file in cache_files_sorted_by_mtime[max_cache_size:]:\n            with contextlib.suppress(OSError):\n                os.remove(cache_file)\n\n\ndef compute_dict_hash(graph_data):\n    graph_data = filter_json(graph_data)\n\n    cleaned_graph_json = json.dumps(graph_data, sort_keys=True)\n    return hashlib.sha256(cleaned_graph_json.encode('utf-8')).hexdigest()\n\n\ndef filter_json(json_data):\n    filtered_data = json_data.copy()\n\n    # Remove 'viewport' and 'chatHistory' keys\n    if 'viewport' in filtered_data:\n        del filtered_data['viewport']\n    if 'chatHistory' in filtered_data:\n        del filtered_data['chatHistory']\n\n    # Filter nodes\n    if 'nodes' in filtered_data:\n        for node in filtered_data['nodes']:\n            if 'position' in node:\n                del node['position']\n            if 'positionAbsolute' in node:\n                del node['positionAbsolute']\n            if 'selected' in node:\n                del node['selected']\n            if 'dragging' in node:\n                del node['dragging']\n\n    return filtered_data\n\n\n@create_cache_folder\ndef save_binary_file(content: str, file_name: str, accepted_types: list[str]) -> str:\n    \"\"\"\n    Save a binary file to the specified folder.\n\n    Args:\n        content: The content of the file as a bytes object.\n        file_name: The name of the file, including its extension.\n\n    Returns:\n        The path to the saved file.\n    \"\"\"\n    if not any(file_name.endswith(suffix) for suffix in accepted_types):\n        raise ValueError(f'File {file_name} is not accepted')\n\n    # Get the destination folder\n    cache_path = Path(CACHE_DIR) / PREFIX\n    if not content:\n        raise ValueError('Please, reload the file in the loader.')\n    data = content.split(',')[1]\n    decoded_bytes = base64.b64decode(data)\n\n    # Create the full file path\n    file_path = os.path.join(cache_path, file_name)\n\n    # Save the binary content to the file\n    with open(file_path, 'wb') as file:\n        file.write(decoded_bytes)\n\n    return file_path\n\n\ndef detect_encoding_cchardet(file_bytes: bytes, num_bytes=1024):\n    \"\"\"UsecchardetEncoding of the test file\"\"\"\n    result = cchardet.detect(file_bytes)\n    encoding = result['encoding']\n    confidence = result['confidence']\n    return encoding, confidence\n\n\ndef convert_encoding_cchardet(content: bytes, target_encoding='utf-8') -> BytesIO:\n    \"\"\"\n    Convert file encoding to target_encoding using cchardet for detection.\n    Args:\n        content:\n        target_encoding:\n\n    Returns:\n        BytesIO:\n\n    \"\"\"\n    source_encoding, confidence = detect_encoding_cchardet(content)\n\n    if confidence is None or confidence < 0.5 or source_encoding.lower() == target_encoding:\n        return BytesIO(content)\n\n    try:\n        # decode using detected encoding\n        text = content.decode(source_encoding)\n    except (UnicodeDecodeError, LookupError):\n        # If decoding fails, replace errors\n        text = content.decode(target_encoding, errors='replace')\n\n    # encode to target encoding\n    return BytesIO(text.encode(target_encoding))\n\n\nasync def upload_file_to_minio(file: UploadFile, object_name, bucket_name: str) -> str:\n    minio_client = await get_minio_storage()\n    await minio_client.put_object(bucket_name=bucket_name, object_name=object_name, file=file.file)\n    return await minio_client.get_share_link(object_name, bucket_name)\n\n\n@create_cache_folder_async\nasync def save_file_to_folder(file: UploadFile, folder_name: str, file_name: str) -> str:\n    \"\"\"\n    Save uploaded file tofolder_nameFolders\n    :param file:\n    :param folder_name:\n    :param file_name:\n    :return:\n    \"\"\"\n    cache_path = Path(CACHE_DIR)\n    folder_path = cache_path / folder_name\n\n    # Create the folder if it doesn't exist\n    os.makedirs(folder_path, exist_ok=True)\n\n    # Save the file to the specified folder\n    file_path = folder_path / file_name\n    async with aiofiles.open(file_path, 'wb') as out_file:\n        while content := await file.read(8192):\n            await out_file.write(content)\n\n    return str(file_path)\n\n\n@create_cache_folder\nasync def save_uploaded_file(file: UploadFile, folder_name, file_name, bucket_name: str = None):\n    \"\"\"\n    Save an uploaded file to the specified folder with a hash of its content as the file name.\n\n    Args:\n        file: The uploaded file object.\n        folder_name: The name of the folder to save the file in.\n        file_name: The name of the file, including its extension.\n        bucket_name: The name of the bucket_name\n    Returns:\n        The path to the saved file.\n    \"\"\"\n\n    minio_client = await get_minio_storage()\n    if bucket_name is None:\n        bucket_name = minio_client.tmp_bucket\n\n    cache_path = Path(CACHE_DIR)\n    folder_path = cache_path / folder_name\n    # Create the folder if it doesn't exist\n    if not folder_path.exists():\n        folder_path.mkdir(parents=True, exist_ok=True)\n\n    file_ext = file_name.split('.')[-1].lower()\n\n    file_data_to_upload = None\n    is_converted_text = False\n\n    try:\n        if file_ext in ('txt', 'md', 'csv'):\n            raw_content = await file.read()\n\n            file_data_to_upload = await asyncio.to_thread(\n                convert_encoding_cchardet,\n                content=raw_content,\n                target_encoding='utf-8'\n            )\n            is_converted_text = True\n\n        else:\n            # For other file types, use the original uploaded file\n            file_data_to_upload = file.file\n            # Reset file pointer to the beginning\n            file_data_to_upload.seek(0)\n            is_converted_text = False\n\n        await minio_client.put_object_tmp(object_name=file_name, file=file_data_to_upload)\n\n    finally:\n        if is_converted_text and file_data_to_upload:\n            file_data_to_upload.close()\n\n    file_path = await minio_client.get_share_link(file_name, bucket_name, clear_host=False)\n    return file_path\n\n\n@create_cache_folder\ndef save_download_file(file_input: Union[bytes, BinaryIO], folder_name: str, filename: str) -> str:\n    \"\"\"\n    Synchronous I/O intensive tasks:\n    Write data stream to a temporary file\n    Simultaneously calculate SHA256\n    Rename a file based on the hash\n    \"\"\"\n\n    # Convert to stream objects\n    if isinstance(file_input, bytes):\n        src_stream = BytesIO(file_input)\n    else:\n        src_stream = file_input\n        # Make sure the pointer is at the beginning\n        if hasattr(src_stream, 'seek'):\n            src_stream.seek(0)\n\n    # Prepare a temporary file (write a temporary random filename first to avoid not being able to determine the filename before the hash calculation is finished).\n    cache_path = Path(CACHE_DIR)\n    folder_path = cache_path / folder_name\n\n    # Create the folder if it doesn't exist\n    if not folder_path.exists():\n        folder_path.mkdir(exist_ok=True)\n\n    temp_filename = f\"tmp_{uuid4().hex}\"\n    temp_file_path = folder_path / temp_filename\n\n    sha256_hash = hashlib.sha256()\n\n    try:\n        # Write to temporary file and calculate SHA256 simultaneously\n        with open(temp_file_path, 'wb') as dst_file:\n            chunk_size = 65536  # 64KB\n            while True:\n                chunk = src_stream.read(chunk_size)\n                if not chunk:\n                    break\n                sha256_hash.update(chunk)\n                dst_file.write(chunk)\n\n        # calculate final hash\n        file_hash = sha256_hash.hexdigest()\n\n        # Logic for handling filename length limits\n        safe_filename = filename\n        if len(filename) > 60:\n            safe_filename = filename[-60:]\n\n        final_file_name = f'{file_hash}_{safe_filename}'\n        final_file_path = folder_path / final_file_name\n\n        # Rename (Move) Temporary File to Final Path\n        # If the file already exists, decide whether to overwrite or skip it based on your needs. This example demonstrates overwriting.\n        if final_file_path.exists():\n            os.remove(temp_file_path)\n            return str(final_file_path)\n\n        shutil.move(str(temp_file_path), str(final_file_path))\n        return str(final_file_path)\n\n    except Exception as e:\n        # Clean up temporary file in case of error\n        if temp_file_path.exists():\n            os.remove(temp_file_path)\n        raise e\n    finally:\n        if isinstance(file_input, bytes):\n            src_stream.close()\n\n\ndef file_download(file_path: str):\n    \"\"\"download file and return path\"\"\"\n\n    # Try processing as a local file first (extracted URL Parameters)\n    # If the system mounts a storage volume, remove ? The signature parameters behind it are read directly\n    local_candidate = file_path.split('?')[0]\n    if os.path.isfile(local_candidate):\n        file_name = os.path.basename(local_candidate)\n        # Compatible with legacy logic: handles what might be included in the filename md5 Prefix\n        file_name = file_name.split('_', 1)[-1] if '_' in file_name else file_name\n        return local_candidate, file_name\n\n    # Legacy Logic: Check if it is standard URL (Bawa http/https)\n    if _is_valid_url(file_path):\n        minio_client = get_minio_storage_sync()\n        minio_share_host = minio_client.get_minio_share_host()\n        url_obj = urlparse(file_path)\n        filename = unquote(url_obj.path.split('/')[-1])\n\n        if file_path.startswith(minio_share_host):\n            # download file from minio sdk\n            bucket_name, object_name = url_obj.path.replace(minio_share_host, \"\", 1).lstrip(\"/\").split('/', 1)\n            object_name = unquote(object_name)\n            file_content = minio_client.get_object_sync(bucket_name, object_name)\n        else:\n            # download file from http url\n            r = requests.get(file_path, verify=False)\n            if r.status_code != 200:\n                raise ValueError('Check the url of your file; returned status code %s' % r.status_code)\n            # OthersContent-Dispositionheader to find the filename\n            content_disposition = r.headers.get('Content-Disposition')\n            if content_disposition:\n                filename = unquote(content_disposition).split('filename=')[-1].strip(\"\\\"'\")\n            file_content = r.content\n\n        file_path = save_download_file(file_content, 'bisheng', filename)\n        return file_path, filename\n\n    # <g id=\"Bold\">Medical Treatment:</g> MinIO Relative path (In / Starts with a signature parameter)\n    # For Input: /bisheng/original/82324.docx?X-Amz-Algorithm=...\n    # No in this case host, cannot be accessed _is_valid_url Branch\n    elif file_path.startswith('/') and 'X-Amz-Algorithm' in file_path:\n        try:\n            minio_client = get_minio_storage_sync()\n\n            # Use urlparse parsing, it automatically separates path And query\n            url_obj = urlparse(file_path)\n            # path similar to /bisheng/original/82324.docx\n            # Remove the beginning /, and then split the first / Get bucket And object\n            path_parts = url_obj.path.lstrip(\"/\").split('/', 1)\n\n            if len(path_parts) == 2:\n                bucket_name, object_name = path_parts\n                # Call Synchronized minio Method download\n                object_name = unquote(object_name)\n                file_content = minio_client.get_object_sync(bucket_name, object_name)\n\n                filename = unquote(object_name.split('/')[-1])\n                file_path = save_download_file(file_content, 'bisheng', filename)\n                return file_path, filename\n        except Exception as e:\n            # If the parsing fails, print the log and let the program continue to throw down ValueError\n            print(f\"Error handling relative MinIO path: {e}\")\n\n    elif not os.path.isfile(file_path):\n        raise ValueError('File path %s is not a valid file or url' % file_path)\n\n    # This is the one that handles purely local file paths (the one with no parameters) and is usually handled by the topmost logic 1 Interception\n    file_name = os.path.basename(file_path)\n    file_name = file_name.split('_', 1)[-1] if '_' in file_name else file_name\n    return file_path, file_name\n\n\nasync def async_file_download(file_path: str):\n    \"\"\"download file and return path\"\"\"\n\n    # Try processing as a local file first (extracted URL Parameters)\n    # If the system mounts the storage volume, this will solve the problem directly\n    local_candidate = file_path.split('?')[0]\n    if os.path.isfile(local_candidate):\n        file_name = os.path.basename(local_candidate)\n        # Is it included under processing?md5Logic of (Keep original logic)\n        file_name = file_name.split('_', 1)[-1] if '_' in file_name else file_name\n        return local_candidate, file_name\n\n    # Check if it is standard URL\n    if _is_valid_url(file_path):\n        http_client = await get_http_client()\n        minio_client = await get_minio_storage()\n        minio_share_host = minio_client.get_minio_share_host()\n        url_obj = parse_url(file_path)\n        filename = unquote(url_obj.path.split('/')[-1])\n\n        if file_path.startswith(minio_share_host):\n            # download file from minio sdk\n            bucket_name, object_name = url_obj.path.replace(minio_share_host, \"\", 1).lstrip(\"/\").split('/', 1)\n            object_name = unquote(object_name)\n            file_content = await minio_client.get_object(bucket_name, object_name)\n        else:\n            r = await http_client.get(url=file_path, data_type=\"binary\")\n            if r.status_code != 200:\n                raise ValueError('Check the url of your file; returned status code %s' % r.status_code)\n            content_disposition = r.headers.get('Content-Disposition') if r.headers else None\n            if content_disposition:\n                filename = unquote(content_disposition).split('filename=')[-1].strip(\"\\\"'\")\n            file_content = r.body\n        file_path = save_download_file(file_content, 'bisheng', filename)\n        return file_path, filename\n\n    # <g id=\"Bold\">Medical Treatment:</g> MinIO Relative path (In / Starts with a signature parameter)\n    # For Input: /bisheng/original/82324.docx?X-Amz-Algorithm=...\n    elif file_path.startswith(\"/\") and \"X-Amz-Algorithm\" in file_path:\n        try:\n            minio_client = await get_minio_storage()\n            # Resolve Path /bucket/object_key\n            url_obj = urlparse(file_path)\n            # path turned into /bisheng/original/82324.docx, remove the opening / and split the first one /\n            path_parts = url_obj.path.lstrip(\"/\").split('/', 1)\n\n            if len(path_parts) == 2:\n                bucket_name, object_name = path_parts\n                object_name = unquote(object_name)\n                # Directly usable after finished products  leave the factory minio client Download without http Request\n                file_content = await minio_client.get_object(bucket_name, object_name)\n\n                filename = unquote(object_name.split('/')[-1])\n                file_path = save_download_file(file_content, 'bisheng', filename)\n                return file_path, filename\n        except Exception as e:\n            # If parsing or downloading fails, log or drop it below ValueError\n            print(f\"Error handling relative MinIO path: {e}\")\n\n    raise ValueError('File path %s is not a valid file or url' % file_path)\n\n\ndef _is_valid_url(url: str):\n    \"\"\"Check if the url is valid.\"\"\"\n    parsed = urlparse(url)\n    return bool(parsed.netloc) and bool(parsed.scheme)\n"
  },
  {
    "path": "src/backend/bisheng/core/config/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/config/settings.py",
    "content": "import ast\nimport json\nimport os\nimport re\nfrom typing import Dict, List, Optional, Union\n\nfrom celery.schedules import crontab\nfrom cryptography.fernet import Fernet\nfrom loguru import logger\nfrom pydantic import ConfigDict, BaseModel, Field, field_validator, model_validator\n\nsecret_key = 'TI31VYJ-ldAq-FXo5QNPKV_lqGTFfp-MIdbK2Hm5F1E='\n\n\ndef encrypt_token(token: str):\n    return Fernet(secret_key).encrypt(token.encode())\n\n\ndef decrypt_token(token: str):\n    return Fernet(secret_key).decrypt(token).decode()\n\n\nclass LoggerConf(BaseModel):\n    \"\"\"Looger Config\"\"\"\n    level: str = 'DEBUG'\n    format: str = '<level>[{level.name} process-{process.id}-{thread.id} {name}:{line}]</level> - <level>trace={extra[trace_id]} {message}</level>'  # noqa\n    handlers: List[Dict] = Field(default_factory=list, description='Log Processor')\n\n    @classmethod\n    def parse_logger_sink(cls, sink: str) -> str:\n        match = re.search(r'\\{(.+?)\\}', sink)\n        if not match:\n            return sink\n        env_keys = {}\n        for one in match.groups():\n            env_keys[one] = os.getenv(one, '')\n        return sink.format(**env_keys)\n\n    @field_validator('handlers')\n    @classmethod\n    def set_handlers(cls, value):\n        if value is None:\n            value = []\n        for one in value:\n            one['sink'] = cls.parse_logger_sink(one['sink'])\n            if one.get('filter'):\n                one['filter'] = eval(one['filter'])\n        return value\n\n\nclass PasswordConf(BaseModel):\n    \"\"\" Password Config \"\"\"\n    password_valid_period: Optional[int] = Field(default=0, description='Password overXDays must be modified, Login prompt to change password again')\n    login_error_time_window: Optional[int] = Field(default=0, description='Login error time window,minutes unit')\n    max_error_times: Optional[int] = Field(default=0, description='Maximum number of errors, after which the user will be banned')\n\n\nclass SystemLoginMethod(BaseModel):\n    \"\"\" System Login Method Config \"\"\"\n    bisheng_pro: bool = Field(default=False, description='Whether it is a commercial version, Verify Configuredlicense')\n    admin_username: Optional[str] = Field(default=None, description='Admin username registered via web')\n    allow_multi_login: bool = Field(default=True, description='Whether to allow multi-sign-on')\n\n\nclass MilvusConf(BaseModel):\n    \"\"\" milvus Configure \"\"\"\n    connection_args: Optional[dict] = Field(default=None, description='milvus Configure')\n    is_partition: Optional[bool] = Field(default=True, description='Is itpartitionMode',\n                                         deprecated=\"Not in SupportpartitionMode\")\n    partition_suffix: Optional[str] = Field(default='1', description='partitionSuffix',\n                                            deprecated=\"Not in SupportpartitionMode\")\n\n    @field_validator('connection_args', mode='before')\n    @classmethod\n    def convert_connection_args(cls, value):\n        if isinstance(value, str):\n            return json.loads(value)\n        return value\n\n\nclass ElasticsearchConf(BaseModel):\n    \"\"\" elasticsearch Configure \"\"\"\n    elasticsearch_url: Optional[str] = Field(default=None, alias='url',\n                                             description='elasticsearchAccesses address')\n\n    ssl_verify: Optional[str | dict] = Field(default='{}', description='Additional Arguments')\n\n    @model_validator(mode='after')\n    def validate(self):\n        if isinstance(self.ssl_verify, str):\n            self.ssl_verify = ast.literal_eval(self.ssl_verify)\n\n        return self\n\n\nclass VectorStores(BaseModel):\n    \"\"\" Vector Storage Configuration \"\"\"\n    milvus: MilvusConf = Field(default_factory=MilvusConf, description='milvus Configure')\n    elasticsearch: ElasticsearchConf = Field(default_factory=ElasticsearchConf, description='elasticsearch Configure')\n\n\nclass MinioConf(BaseModel):\n    \"\"\" minio Configure \"\"\"\n    secure: Optional[bool] = Field(default=False, description=\"Apakah ingin digunakan?https\", alias=\"schema\")\n    cert_check: Optional[bool] = Field(default=False, description=\"Whether to calibrate the certificate\")\n    endpoint: Optional[str] = Field(default=\"127.0.0.1:9000\", description=\"minio Service address\")\n    sharepoint: Optional[str] = Field(default=\"127.0.0.1:9000\", description=\"minio Public access address\")\n    share_schema: Optional[bool] = Field(default=False, description=\"minio Whether the public access address is usedhttps\")\n    share_cert_check: Optional[bool] = Field(default=False, description=\"minio Whether the public access address verifies the certificate\")\n    access_key: Optional[str] = Field(default=\"minioadmin\", description=\"minio Username\")\n    secret_key: Optional[str] = Field(default=\"minioadmin\", description=\"minio Passwords\")\n    public_bucket: Optional[str] = Field(default=\"bisheng\",\n                                         description=\"Store permanent files by defaultbucket. Files can be permanently accessed by anonymous users\")\n    tmp_bucket: Optional[str] = Field(default=\"tmp-dir\", description=\"Ad hocbucket, stored files will have an expiration date\")\n\n\nclass ObjectStore(BaseModel):\n    \"\"\" Object Storage Configuration \"\"\"\n    type: str = Field(default='minio', description=\"Object Storage Type\")\n    minio: Optional[MinioConf] = Field(default_factory=MinioConf, description=\"minio Configure\")\n\n\nclass WorkflowConf(BaseModel):\n    \"\"\" Workflow Configuration \"\"\"\n    max_steps: int = Field(default=50, description=\"Maximum number of steps a node can run\")\n    timeout: int = Field(default=720, description=\"Node timeout (min）\")\n\n\nclass CeleryConf(BaseModel):\n    \"\"\" Celery Configure \"\"\"\n    task_routers: Optional[Dict] = Field(default_factory=dict, description='Task Routing Configuration')\n    beat_schedule: Optional[Dict] = Field(default_factory=dict, description='Timed Task Configuration')\n\n    @model_validator(mode='after')\n    def validate(self):\n        if not self.task_routers:\n            self.task_routers = {\n                \"bisheng.worker.knowledge.*\": {\"queue\": \"knowledge_celery\"},  # Knowledge Base Related Tasks\n                \"bisheng.worker.workflow.*\": {\"queue\": \"workflow_celery\"},  # Workflow Execution Related Tasks\n            }\n        if 'telemetry_mid_user_increment' not in self.beat_schedule:\n            self.beat_schedule['telemetry_mid_user_increment'] = {\n                'task': 'bisheng.worker.telemetry.mid_table.sync_mid_user_increment',\n                'schedule': crontab('*/30 0 * * *'),  # 00:30 exec every day\n            }\n        if 'telemetry_mid_knowledge_increment' not in self.beat_schedule:\n            self.beat_schedule['telemetry_mid_knowledge_increment'] = {\n                'task': 'bisheng.worker.telemetry.mid_table.sync_mid_knowledge_increment',\n                'schedule': crontab('*/30 0 * * *'),  # 00:30 exec every day\n            }\n        if 'telemetry_sync_mid_app_increment' not in self.beat_schedule:\n            self.beat_schedule['telemetry_sync_mid_app_increment'] = {\n                'task': 'bisheng.worker.telemetry.mid_table.sync_mid_app_increment',\n                'schedule': crontab('*/30 0 * * *'),  # 00:30 exec every day\n            }\n        if 'telemetry_sync_mid_user_interact_dtl' not in self.beat_schedule:\n            self.beat_schedule['telemetry_sync_mid_user_interact_dtl'] = {\n                'task': 'bisheng.worker.telemetry.mid_table.sync_mid_user_interact_dtl',\n                'schedule': crontab('*/30 0 * * *'),  # 00:30 exec every day\n            }\n\n        # convert str to crontab\n        for key, task_info in self.beat_schedule.items():\n            if isinstance(task_info['schedule'], str):\n                self.beat_schedule[key]['schedule'] = crontab(task_info['schedule'])\n        return self\n\n\nclass LinsightConf(BaseModel):\n    \"\"\" Inspiration Configuration \"\"\"\n    debug: bool = Field(default=False, description='Whether to opendebugMode')\n    tool_buffer: int = Field(default=100000, description='Maximum Tool Execution Historytoken, you need to summarize your history after')\n    max_steps: int = Field(default=200, description='Maximum number of steps per task to prevent infinite loops')\n    retry_num: int = Field(default=3, description='Number of times the model call was retried during the execution of the Ideas task')\n    retry_sleep: int = Field(default=5, description='Interval between retries of model calls during execution of Invisible Tasks (seconds)')\n    max_file_num: int = Field(default=5, description='BuatSOPJampromptThe number of user-uploaded file information placed in the')\n    max_knowledge_num: int = Field(default=20, description='BuatSOPJampromptThe amount of knowledge base information placed in the')\n    waiting_list_url: str = Field(default=None, description='waiting list Jump link')\n    default_temperature: float = Field(default=0, description='Default Temperature at Model Request')\n    retry_temperature: float = Field(default=1, description='reactModejsonModel temperature when retrying after parsing failure')\n    file_content_length: int = Field(default=5000, description='The number of characters to read the contents of the file when splitting subtasks, which will be truncated when exceeded')\n    max_file_content_num: int = Field(default=3, description='Number of files to read when subtasking, in reverse order by modification time')\n\n\nclass CookieConf(BaseModel):\n    \"\"\" Cookie Configure \"\"\"\n    max_age: Optional[int] = Field(default=None, description=\"Cookie Maximum survival time in seconds\")\n    path: str = Field(default='/', description=\"Cookie Path Properties for\")\n    domain: Optional[str] = Field(default=None, description=\"Cookie Domain Properties for\")\n    secure: bool = Field(default=False, description=\"enabled secure Property\")\n    httponly: bool = Field(default=True, description=\"enabled HttpOnly Property\")\n    samesite: str = Field(default=None, description=\"SameSite property, optional value is 'lax', 'strict', 'none'\")\n\n    jwt_token_expire_time: int = Field(default=86400, description=\"JwtTokenExpiration time in seconds\")\n    jwt_iss: str = Field(default='bisheng', description=\"JwtTokenIssuer of\")\n\n\nclass Etl4lmConf(BaseModel):\n    \"\"\" Etl4lm Configure \"\"\"\n    url: str = Field(default='', description='etl4lmService Address')\n    timeout: int = Field(default=600, description='etl4lmService Request Timeout (sec)')\n    ocr_sdk_url: str = Field(default='', description='etl4lm ocr sdkService Address')\n\n\nclass KnowledgeConf(BaseModel):\n    \"\"\" Knowledge Configure \"\"\"\n    etl4lm: Etl4lmConf\n\n\nclass Settings(BaseModel):\n    \"\"\" Application Settings \"\"\"\n    model_config = ConfigDict(validate_assignment=True, arbitrary_types_allowed=True, extra='ignore')\n\n    chains: dict = {}\n    agents: dict = {}\n    prompts: dict = {}\n    llms: dict = {}\n    tools: dict = {}\n    memories: dict = {}\n    embeddings: dict = {}\n    knowledges: dict = {}\n    vectorstores: dict = {}\n    documentloaders: dict = {}\n    wrappers: dict = {}\n    retrievers: dict = {}\n    toolkits: dict = {}\n    textsplitters: dict = {}\n    utilities: dict = {}\n    input_output: dict = {}\n    output_parsers: dict = {}\n    autogen_roles: dict = {}\n    dev: bool = False\n    environment: Union[dict, str] = 'dev'\n    # ↑↑↑ before config for langchain flow, will be deprecated\n    debug: bool = False\n    database_url: Optional[str] = None\n    redis_url: Optional[Union[str, Dict]] = None\n    celery_redis_url: Optional[Union[str, Dict]] = None\n    redis: Optional[dict] = None\n    admin: dict = {}\n    cache: str = 'InMemoryCache'\n    remove_api_keys: bool = False\n    bisheng_rt: dict = {}\n    default_llm: dict = {}\n    jwt_secret: str = 'secret'\n    gpts: dict = {}\n    openai_conf: dict = {}\n    minio_conf: dict = {}\n    linsight_conf: LinsightConf = LinsightConf()\n    logger_conf: LoggerConf = LoggerConf()\n    password_conf: PasswordConf = PasswordConf()\n    system_login_method: SystemLoginMethod = SystemLoginMethod()\n    vector_stores: VectorStores = VectorStores()\n    object_storage: ObjectStore = ObjectStore()\n    workflow_conf: WorkflowConf = WorkflowConf()\n    celery_task: CeleryConf = CeleryConf()\n    cookie_conf: CookieConf = CookieConf()\n    telemetry_elasticsearch: ElasticsearchConf = ElasticsearchConf()\n\n    license_str: Optional[str] = None  # license Contents\n\n    @field_validator('database_url')\n    @classmethod\n    def set_database_url(cls, value):\n        if not value:\n            logger.debug('No database_url provided, trying bisheng_DATABASE_URL env variable')\n            if bisheng_database_url := os.getenv('bisheng_DATABASE_URL'):\n                value = bisheng_database_url\n            else:\n                logger.debug('No DATABASE_URL env variable, using sqlite database')\n                value = 'sqlite:///./bisheng.db'\n        else:\n            # Encrypt password\n            import re\n            pattern = r'(?<=:)[^:]+(?=@)'  # Match colon after to@Any character before the symbol\n            match = re.search(pattern, value)\n            if match:\n                password = match.group(0)\n                new_password = decrypt_token(password)\n                new_mysql_url = re.sub(pattern, f'{new_password}', value)\n                value = new_mysql_url\n\n        return value\n\n    @model_validator(mode='before')\n    @classmethod\n    def set_redis_url(cls, values):\n        if 'redis_url' in values:\n            if isinstance(values['redis_url'], dict):\n                for k, v in values['redis_url'].items():\n                    if isinstance(v, str) and v.startswith('encrypt(') and v.endswith(')'):\n                        v = v[8:-1]\n                        values['redis_url'][k] = decrypt_token(v)\n            else:\n                import re\n                pattern = r'(?<=:)[^:]+(?=@)'  # Match colon after to@Any character before the symbol\n                match = re.search(pattern, values['redis_url'])\n                if match:\n                    password = match.group(0)\n                    new_password = decrypt_token(password)\n                    new_redis_url = re.sub(pattern, f'{new_password}', values['redis_url'])\n                    values['redis_url'] = new_redis_url\n        return values\n\n    @model_validator(mode='before')\n    @classmethod\n    def set_celery_redis_url(cls, values):\n        if 'celery_redis_url' in values:\n            if isinstance(values['celery_redis_url'], dict):\n                for k, v in values['celery_redis_url'].items():\n                    if isinstance(v, str) and v.startswith('encrypt(') and v.endswith(')'):\n                        v = v[8:-1]\n                        values['celery_redis_url'][k] = decrypt_token(v)\n            else:\n                import re\n                pattern = r'(?<=:)[^:]+(?=@)'  # Match colon after to@Any character before the symbol\n                match = re.search(pattern, values['celery_redis_url'])\n                if match:\n                    password = match.group(0)\n                    new_password = decrypt_token(password)\n                    new_redis_url = re.sub(pattern, f'{new_password}', values['celery_redis_url'])\n                    values['celery_redis_url'] = new_redis_url\n        return values\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_lists(cls, values):\n        for key, value in values.items():\n            if key != 'dev' and not value:\n                values[key] = []\n        return values\n\n    def get_minio_conf(self) -> MinioConf:\n        return self.object_storage.minio\n\n    def get_vectors_conf(self) -> VectorStores:\n        return self.vector_stores\n\n    def get_search_conf(self) -> ElasticsearchConf:\n        return self.vector_stores.elasticsearch\n\n    def get_telemetry_conf(self) -> ElasticsearchConf:\n        if not self.telemetry_elasticsearch.elasticsearch_url:\n            return self.vector_stores.elasticsearch\n        return self.telemetry_elasticsearch\n"
  },
  {
    "path": "src/backend/bisheng/core/context/__init__.py",
    "content": "\n\"\"\"Application Context Management Module\n\nProvide a common context management framework, including:\n- Thread-safe lazy loading mechanism\n- Automatic Caching and Instance Lifecycle Management\n- Dependency injection and initialization sequence control\n- Retry mechanism and timeout handling\n- Health check and monitoring functions\n- Convenient context manager support\n\nUsage examples:\n    # basic use\n    from bisheng.core.context import initialize_app_context, get_context\n\n    await initialize_app_context()\n    db = await get_context('database').async_get_instance()\n\n    # Using the Context Manager\n    async with get_context('database').async_context() as db:\n        # Use db\n        pass\n\"\"\"\n\nfrom .base import (\n    # Core classes and statuses\n    BaseContextManager,\n    FunctionContextManager,\n    ContextRegistry,\n    ContextState,\n\n    # Exception Class\n    ContextError,\n    ContextInitializationError,\n    ContextTimeoutError,\n    ContextStateError,\n)\nfrom .manager import (\n    # APP MANAGER\n    ApplicationContextManager,\n    app_context,\n\n    # Initialization and Lifecycle Management\n    initialize_app_context,\n    close_app_context,\n\n    # Context Access and Management\n    get_context,\n    async_get_instance,\n    sync_get_instance,\n    register_context,\n\n    # Monitoring and Diagnostics\n    health_check,\n)\n\n__all__ = [\n    # Core Base Classes and States\n    'BaseContextManager',\n    'FunctionContextManager',\n    'ContextRegistry',\n    'ContextState',\n\n    # Exception Class\n    'ContextError',\n    'ContextInitializationError',\n    'ContextTimeoutError',\n    'ContextStateError',\n\n    # APP MANAGER\n    'ApplicationContextManager',\n    'app_context',\n\n    # PRODUCT LIFECYCLE MANAGEMENT\n    'initialize_app_context',\n    'close_app_context',\n\n    # Context Access and Management\n    'get_context',\n    'async_get_instance',\n    'sync_get_instance',\n    'register_context',\n\n    # Monitoring and Diagnostics\n    'health_check',\n]"
  },
  {
    "path": "src/backend/bisheng/core/context/base.py",
    "content": "import asyncio\nimport time\nfrom abc import ABC, abstractmethod\nfrom contextlib import asynccontextmanager, contextmanager\nfrom enum import Enum\nfrom threading import Lock, Event\nfrom typing import Any, Dict, Optional, TypeVar, Generic, Callable, Awaitable, Union\n\nfrom loguru import logger\n\nT = TypeVar('T')\n\n\nclass ContextState(Enum):\n    \"\"\"Context State Enumeration\"\"\"\n    UNINITIALIZED = \"uninitialized\"  # Not Initialized\n    INITIALIZING = \"initializing\"  # Initializing\n    READY = \"ready\"  # Working on it...\n    ERROR = \"error\"  # Error State\n    CLOSING = \"closing\"  # closing\n    CLOSED = \"closed\"  # Closed\n\n\nclass ContextError(Exception):\n    \"\"\"Context-dependent exception base class\"\"\"\n    pass\n\n\nclass ContextInitializationError(ContextError):\n    \"\"\"Context initialization exception\"\"\"\n    pass\n\n\nclass ContextTimeoutError(ContextError):\n    \"\"\"Context operation timeout exception\"\"\"\n    pass\n\n\nclass ContextStateError(ContextError):\n    \"\"\"Context status exception\"\"\"\n    pass\n\n\nclass BaseContextManager(ABC, Generic[T]):\n    \"\"\"Underlying Manager Abstract Class\n\n    Defines the interfaces that all context managers must implement\n    Provides thread-safe lazy loading, caching, and lifecycle management\n    \"\"\"\n\n    name: str\n    _default_timeout: float = 30.0  # Timeout default\n    _default_retry_count: int = 3  # Default number of retries\n\n    def __init__(self, name: str = None, timeout: float = None, retry_count: int = None, **kwargs):\n        self.name = name or getattr(self.__class__, 'name', self.__class__.__name__.lower())\n        self.timeout = timeout or self._default_timeout\n        self.retry_count = retry_count or self._default_retry_count\n\n        self.state = ContextState.UNINITIALIZED\n        self._instance: Optional[T] = None\n        self._error: Optional[Exception] = None\n\n        # Synchronous and asynchronous locks\n        self._sync_lock = Lock()\n        self._async_lock = asyncio.Lock()\n\n        # Synchronization Waiting Event\n        self._sync_ready_event = Event()\n        self._async_ready_event = asyncio.Event()\n\n    @abstractmethod\n    async def _async_initialize(self) -> T:\n        \"\"\"Asynchronous initialization resources (abstract methods)\"\"\"\n        pass\n\n    @abstractmethod\n    def _sync_initialize(self) -> T:\n        \"\"\"Synchronous initialization resources (abstract methods)\"\"\"\n        pass\n\n    @abstractmethod\n    async def _async_cleanup(self) -> None:\n        \"\"\"Asynchronous Cleanup Resource (Abstract Method)\"\"\"\n        pass\n\n    @abstractmethod\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup Resource (Abstract Method)\"\"\"\n        pass\n\n    def _validate_state_for_access(self) -> None:\n        \"\"\"Verify that the status allows access to the instance\"\"\"\n        if self.state == ContextState.ERROR:\n            error_msg = f\"Context '{self.name}' is in error state\"\n            if self._error:\n                error_msg += f\": {self._error}\"\n            raise ContextStateError(error_msg)\n\n        if self.state == ContextState.CLOSED:\n            raise ContextStateError(f\"Context '{self.name}' is closed and cannot be accessed\")\n\n    async def _wait_for_initialization_async(self) -> None:\n        \"\"\"Asynchronous waiting for initialization to complete\"\"\"\n        try:\n            await asyncio.wait_for(self._async_ready_event.wait(), timeout=self.timeout)\n        except asyncio.TimeoutError:\n            raise ContextTimeoutError(f\"Context '{self.name}' initialization timeout after {self.timeout}s\")\n\n    def _wait_for_initialization_sync(self) -> None:\n        \"\"\"Sync waiting for initialization to complete\"\"\"\n        if not self._sync_ready_event.wait(timeout=self.timeout):\n            raise ContextTimeoutError(f\"Context '{self.name}' initialization timeout after {self.timeout}s\")\n\n    async def async_get_instance(self) -> T:\n        \"\"\"Asynchronous Get Context Instance\n\n        Returns:\n            T: Contextual instance after initialization\n\n        Raises:\n            ContextStateError: Context is in error state or closed\n            ContextTimeoutError: Initialization timeout\n            ContextInitializationError: Initialization failed\n        \"\"\"\n        # Quick Path: Instance Ready\n        if self.state == ContextState.READY and self._instance is not None:\n            return self._instance\n\n        self._validate_state_for_access()\n\n        async with self._async_lock:\n            # Dual Lock Check Mode\n            if self.state == ContextState.READY and self._instance is not None:\n                return self._instance\n\n            # If initializing, wait for completion\n            if self.state == ContextState.INITIALIZING:\n                await self._wait_for_initialization_async()\n                self._validate_state_for_access()\n                if self.state == ContextState.READY and self._instance is not None:\n                    return self._instance\n\n            # Start Initialization\n            return await self._perform_initialization_async()\n\n    async def _perform_initialization_async(self) -> T:\n        \"\"\"Execute asynchronous initialization logic\"\"\"\n        self.state = ContextState.INITIALIZING\n        self._async_ready_event.clear()\n\n        last_error = None\n        for attempt in range(self.retry_count):\n            try:\n                logger.debug(f\"Initializing context '{self.name}' (attempt {attempt + 1}/{self.retry_count})\")\n                self._instance = await self._async_initialize()\n                self.state = ContextState.READY\n                self._async_ready_event.set()\n                self._sync_ready_event.set()\n                logger.debug(f\"Context '{self.name}' initialized successfully\")\n                return self._instance\n            except Exception as e:\n                last_error = e\n                if attempt < self.retry_count - 1:\n                    wait_time = 2 ** attempt  # Exponential withdrawal\n                    logger.warning(\n                        f\"Context '{self.name}' init attempt {attempt + 1} failed: {e}, retrying in {wait_time}s\")\n                    await asyncio.sleep(wait_time)\n                else:\n                    logger.error(f\"Context '{self.name}' initialization failed after {self.retry_count} attempts: {e}\")\n\n        # All retries failed\n        self.state = ContextState.ERROR\n        self._error = last_error\n        self._async_ready_event.set()  # Failed to notify waiter\n        self._sync_ready_event.set()\n        raise ContextInitializationError(f\"Failed to initialize context '{self.name}': {last_error}\") from last_error\n\n    def sync_get_instance(self) -> T:\n        \"\"\"Synchronize Get Context Instance\n\n        Returns:\n            T: Contextual instance after initialization\n\n        Raises:\n            ContextStateError: Context is in error state, closed or initialization timed out\n            ContextInitializationError: Initialization failed\n        \"\"\"\n        # Quick Path: Instance Ready\n        if self.state == ContextState.READY and self._instance is not None:\n            return self._instance\n\n        self._validate_state_for_access()\n\n        with self._sync_lock:\n            # Dual Lock Check Mode\n            if self.state == ContextState.READY and self._instance is not None:\n                return self._instance\n\n            # If initializing, wait for completion\n            if self.state == ContextState.INITIALIZING:\n                self._wait_for_initialization_sync()\n                self._validate_state_for_access()\n                if self.state == ContextState.READY and self._instance is not None:\n                    return self._instance\n\n            # Start Initialization\n            return self._perform_initialization_sync()\n\n    def _perform_initialization_sync(self) -> T:\n        \"\"\"Execute Synchronization Initialization Logic\"\"\"\n        self.state = ContextState.INITIALIZING\n        self._sync_ready_event.clear()\n        self._async_ready_event.clear()\n\n        last_error = None\n        for attempt in range(self.retry_count):\n            try:\n                logger.debug(f\"Initializing context '{self.name}' (attempt {attempt + 1}/{self.retry_count})\")\n                self._instance = self._sync_initialize()\n                self.state = ContextState.READY\n                self._sync_ready_event.set()\n                self._async_ready_event.set()\n                logger.debug(f\"Context '{self.name}' initialized successfully\")\n                return self._instance\n            except Exception as e:\n                last_error = e\n                if attempt < self.retry_count - 1:\n                    wait_time = 2 ** attempt  # Exponential withdrawal\n                    logger.warning(\n                        f\"Context '{self.name}' init attempt {attempt + 1} failed: {e}, retrying in {wait_time}s\")\n                    time.sleep(wait_time)\n                else:\n                    logger.error(f\"Context '{self.name}' initialization failed after {self.retry_count} attempts: {e}\")\n\n        # All retries failed\n        self.state = ContextState.ERROR\n        self._error = last_error\n        self._sync_ready_event.set()  # Failed to notify waiter\n        self._async_ready_event.set()\n        raise ContextInitializationError(f\"Failed to initialize context '{self.name}': {last_error}\") from last_error\n\n    async def async_close(self) -> None:\n        \"\"\"Shutdown context manager asynchronously\n\n        Safely release resources and set status to off\n        \"\"\"\n        if self.state in [ContextState.CLOSING, ContextState.CLOSED]:\n            return\n\n        async with self._async_lock:\n            if self.state in [ContextState.CLOSING, ContextState.CLOSED]:\n                return\n\n            self.state = ContextState.CLOSING\n\n            try:\n                if self._instance is not None:\n                    logger.debug(f\"Closing context '{self.name}'\")\n                    await self._async_cleanup()\n                    self._instance = None\n                    logger.debug(f\"Context '{self.name}' closed successfully\")\n            except Exception as e:\n                logger.error(f\"Error closing context '{self.name}': {e}\")\n                # Mark as closed to avoid resource leakage even if cleanup fails\n            finally:\n                self.state = ContextState.CLOSED\n                self._error = None\n                # Ensure events are set to prevent unlimited wait time for waiters\n                self._async_ready_event.set()\n                self._sync_ready_event.set()\n\n    def sync_close(self) -> None:\n        \"\"\"Sync Close Context Manager\n\n        Safely release resources and set status to off\n        \"\"\"\n        if self.state in [ContextState.CLOSING, ContextState.CLOSED]:\n            return\n\n        with self._sync_lock:\n            if self.state in [ContextState.CLOSING, ContextState.CLOSED]:\n                return\n\n            self.state = ContextState.CLOSING\n\n            try:\n                if self._instance is not None:\n                    logger.debug(f\"Closing context '{self.name}'\")\n                    self._sync_cleanup()\n                    self._instance = None\n                    logger.debug(f\"Context '{self.name}' closed successfully\")\n            except Exception as e:\n                logger.error(f\"Error closing context '{self.name}': {e}\")\n                # Mark as closed to avoid resource leakage even if cleanup fails\n            finally:\n                self.state = ContextState.CLOSED\n                self._error = None\n                # Ensure events are set to prevent unlimited wait time for waiters\n                self._async_ready_event.set()\n                self._sync_ready_event.set()\n\n    async def async_reset(self) -> None:\n        \"\"\"Reset Context Manager\n\n        Close the current instance and reset it to the uninitialized state, it will be reinitialized on the next visit\n        \"\"\"\n        await self.async_close()\n        async with self._async_lock:\n            self.state = ContextState.UNINITIALIZED\n            self._error = None\n            self._async_ready_event.clear()\n            self._sync_ready_event.clear()\n\n    def sync_reset(self) -> None:\n        \"\"\"Reset Context Manager\n\n        Close the current instance and reset it to the uninitialized state, it will be reinitialized on the next visit\n        \"\"\"\n        self.sync_close()\n        with self._sync_lock:\n            self.state = ContextState.UNINITIALIZED\n            self._error = None\n            self._async_ready_event.clear()\n            self._sync_ready_event.clear()\n\n    def is_ready(self) -> bool:\n        \"\"\"Check to see if it's ready\n\n        Returns:\n            bool: True If the context is initialized and available,False Otherwise, \n        \"\"\"\n        return self.state == ContextState.READY and self._instance is not None\n\n    def get_state(self) -> ContextState:\n        \"\"\"Fetch the current status\n\n        Returns:\n            ContextState: Current Context State\n        \"\"\"\n        return self.state\n\n    def get_error(self) -> Optional[Exception]:\n        \"\"\"Get the last error message\n\n        Returns:\n            Optional[Exception]: If in error state, return error message, otherwise return None\n        \"\"\"\n        return self._error\n\n    def get_info(self) -> Dict[str, Any]:\n        \"\"\"Get Context Information\n\n        Returns:\n            Dict[str, Any]: Dictionary with contextual details\n        \"\"\"\n        return {\n            'name': self.name,\n            'state': self.state.value,\n            'is_ready': self.is_ready(),\n            'timeout': self.timeout,\n            'retry_count': self.retry_count,\n            'error': str(self._error) if self._error else None,\n            'has_instance': self._instance is not None\n        }\n\n    @contextmanager\n    def sync_context(self):\n        \"\"\"Synchronization Context Manager\n\n        Use with Statements automatically fetch and free resources\n\n        Example:\n            with my_context.sync_context() as instance:\n                # Use instance\n                pass\n        \"\"\"\n        instance = self.sync_get_instance()\n        try:\n            yield instance\n        finally:\n            # Note: This does not close automatically as it may be used elsewhere\n            pass\n\n    @asynccontextmanager\n    async def async_context(self):\n        \"\"\"Asynchronous Context Manager\n\n        Use async with Statements automatically fetch and free resources\n\n        Example:\n            async with my_context.async_context() as instance:\n                # Use instance\n                pass\n        \"\"\"\n        instance = await self.async_get_instance()\n        try:\n            yield instance\n        finally:\n            # Note: This does not close automatically as it may be used elsewhere\n            pass\n\n    def __repr__(self) -> str:\n        return f\"<{self.__class__.__name__}(name='{self.name}', state='{self.state.value}')>\"\n\n\nclass FunctionContextManager(BaseContextManager[T]):\n    \"\"\"Function-based context manager\n\n    Allows initialization and cleanup logic to be defined via functions\n    \"\"\"\n\n    def __init__(\n            self,\n            name: str,\n            init_func: Union[Callable[[], Awaitable[T]], Callable[[], T]],\n            cleanup_func: Optional[Union[Callable[[T], Awaitable[None]], Callable[[T], None]]] = None,\n            **kwargs\n    ):\n        super().__init__(name, **kwargs)\n        self.init_func = init_func\n        self.cleanup_func = cleanup_func\n        self._is_async = asyncio.iscoroutinefunction(init_func)\n\n    async def _async_initialize(self) -> T:\n        \"\"\"Initialize the instance using the initialization function\"\"\"\n        if not self._is_async:\n            # Execute in thread pool if initialization function is not asynchronous\n            loop = asyncio.get_event_loop()\n            return await loop.run_in_executor(None, self.init_func)\n        return await self.init_func()\n\n    def _sync_initialize(self) -> T:\n        \"\"\"Synchronization Initialization\"\"\"\n        if self._is_async:\n            raise TypeError(f\"Cannot call async init_func '{self.init_func.__name__}' in sync context\")\n        return self.init_func()\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Clean up instances using the cleanup function\"\"\"\n        if self.cleanup_func and self._instance:\n            if asyncio.iscoroutinefunction(self.cleanup_func):\n                await self.cleanup_func(self._instance)\n            else:\n                loop = asyncio.get_event_loop()\n                await loop.run_in_executor(None, self.cleanup_func, self._instance)\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup\"\"\"\n        if self.cleanup_func and self._instance:\n            if asyncio.iscoroutinefunction(self.cleanup_func):\n                raise TypeError(f\"Cannot call async cleanup_func '{self.cleanup_func.__name__}' in sync context\")\n            self.cleanup_func(self._instance)\n\n\nclass ContextRegistry:\n    \"\"\"Context Registry\n\n    Manage Enrollment and Lifecycle for Multiple Context Managers\n    \"\"\"\n\n    def __init__(self):\n        self._contexts: Dict[str, BaseContextManager] = {}\n        self._lock = Lock()\n\n    def register(self, context_manager: BaseContextManager) -> None:\n        \"\"\"Register Context Manager\n\n        Args:\n            context_manager: Context manager to register\n\n        Raises:\n            ValueError: If a context with the same name already exists\n        \"\"\"\n        with self._lock:\n            if context_manager.name in self._contexts:\n                logger.warning(f\"Context '{context_manager.name}' is already registered\")\n                return\n            self._contexts[context_manager.name] = context_manager\n            logger.debug(f\"Registered context: '{context_manager.name}'\")\n\n    def unregister(self, name: str) -> None:\n        \"\"\"Log out of the context manager\n\n        Args:\n            name: Context name to be logged out\n        \"\"\"\n        with self._lock:\n            if name in self._contexts:\n                context = self._contexts[name]\n                # Close context before deleting\n                try:\n                    context.sync_close()\n                except Exception as e:\n                    logger.warning(f\"Error closing context '{name}' during unregister: {e}\")\n                del self._contexts[name]\n                logger.debug(f\"Unregistered context: '{name}'\")\n\n    def get_context(self, name: str) -> BaseContextManager:\n        \"\"\"Get Context Manager\n\n        Args:\n            name: Context Name\n\n        Returns:\n            BaseContextManager: Corresponding context manager\n\n        Raises:\n            KeyError: If the context does not exist\n        \"\"\"\n        if name not in self._contexts:\n            raise KeyError(f\"Context '{name}' not found. Available contexts: {list(self._contexts.keys())}\")\n        return self._contexts[name]\n\n    def has_context(self, name: str) -> bool:\n        \"\"\"Check if there is a context with the specified name\n\n        Args:\n            name: Context Name\n\n        Returns:\n            bool: Return if present True, otherwise go back to False\n        \"\"\"\n        return name in self._contexts\n\n    async def async_get_instance(self, name: str) -> Any:\n        \"\"\"Asynchronous Get Context Instance\"\"\"\n        context = self.get_context(name)\n        return await context.async_get_instance()\n\n    def sync_get_instance(self, name: str) -> Any:\n        \"\"\"Synchronize Get Context Instance\"\"\"\n        context = self.get_context(name)\n        return context.sync_get_instance()\n\n    async def async_close_all(self) -> None:\n        \"\"\"Shut down all context managers asynchronously\"\"\"\n        contexts = list(self._contexts.values())\n\n        # Shut down all contexts in parallel to improve performance\n        close_tasks = [context.async_close() for context in contexts]\n        results = await asyncio.gather(*close_tasks, return_exceptions=True)\n\n        # Log errors during shutdown\n        for context, result in zip(contexts, results):\n            if isinstance(result, Exception):\n                logger.error(f\"Error closing context '{context.name}': {result}\")\n\n    def sync_close_all(self) -> None:\n        \"\"\"Synchronously close all context managers\"\"\"\n        for context in self._contexts.values():\n            try:\n                context.sync_close()\n            except Exception as e:\n                logger.error(f\"Error closing context '{context.name}': {e}\")\n\n    def get_all_contexts(self) -> Dict[str, BaseContextManager]:\n        \"\"\"Get a copy of all context managers\n\n        Returns:\n            Dict[str, BaseContextManager]: Contains a dictionary copy of all context managers\n        \"\"\"\n        return self._contexts.copy()\n\n    def get_ready_contexts(self) -> Dict[str, BaseContextManager]:\n        \"\"\"Get all ready context managers\n\n        Returns:\n            Dict[str, BaseContextManager]: Dictionary with all ready context managers\n        \"\"\"\n        return {\n            name: context\n            for name, context in self._contexts.items()\n            if context.is_ready()\n        }\n\n    def get_context_states(self) -> Dict[str, ContextState]:\n        \"\"\"Get the status of all contexts\n\n        Returns:\n            Dict[str, ContextState]: Context name to state mapping\n        \"\"\"\n        return {\n            name: context.get_state()\n            for name, context in self._contexts.items()\n        }\n\n    async def health_check(self) -> Dict[str, bool]:\n        \"\"\"Perform health checks for all contexts\n\n        Returns:\n            Dict[str, bool]: Context name to health state mapping\n        \"\"\"\n        results = {}\n        for name, context in self._contexts.items():\n            try:\n                # Prefer to use if there is a custom health check method in context\n                if hasattr(context, 'health_check') and callable(getattr(context, 'health_check')):\n                    health_check_func = getattr(context, 'health_check')\n                    if asyncio.iscoroutinefunction(health_check_func):\n                        results[name] = await health_check_func()\n                    else:\n                        results[name] = health_check_func()\n                else:\n                    # Otherwise use basic readiness checks\n                    results[name] = context.is_ready()\n            except Exception as e:\n                logger.error(f\"Health check failed for context '{name}': {e}\")\n                results[name] = False\n        return results\n\n    def clear(self) -> None:\n        \"\"\"Clear all contexts (close before deleting)\"\"\"\n        with self._lock:\n            # Close all contexts first\n            self.sync_close_all()\n            # Empty registry\n            self._contexts.clear()\n            logger.debug(\"All contexts cleared from registry\")\n\n    def __len__(self) -> int:\n        \"\"\"Returns the number of registered contexts\"\"\"\n        return len(self._contexts)\n\n    def __contains__(self, name: str) -> bool:\n        \"\"\"Support 'name' in registry Grammar\"\"\"\n        return name in self._contexts\n\n    def __iter__(self):\n        \"\"\"Support for iterative context names\"\"\"\n        return iter(self._contexts.keys())\n\n    def __repr__(self) -> str:\n        return f\"<ContextRegistry(contexts={list(self._contexts.keys())})>\"\n"
  },
  {
    "path": "src/backend/bisheng/core/context/examples.py",
    "content": "\"\"\"\nContext Manager Usage Example\n\nDemonstrates the various usage scenarios and features of the optimized Context Manager\n\"\"\"\nimport asyncio\nfrom typing import Any, Dict\n\nfrom bisheng.core.context import (\n    # Primary\n    BaseContextManager,\n    FunctionContextManager,\n    ContextState,\n\n    # Application Management\n    initialize_app_context,\n    get_context,\n    async_get_instance,\n    sync_get_instance,\n    register_context,\n    health_check,\n    close_app_context,\n\n    # Exception Class\n    ContextError,\n    ContextInitializationError,\n)\n\n\n# 1. Examples of basic use\nasync def basic_usage_example():\n    \"\"\"Examples of basic use\"\"\"\n    print(\"=== Examples of basic use ===\")\n\n    # Initialize app context\n    config = {\n        'database': {\n            'url': 'sqlite:///example.db',\n            'engine_config': {'pool_size': 10}\n        }\n    }\n    await initialize_app_context(config)\n\n    # Get Database Instance\n    database_context = get_context('database')\n    db_instance = await database_context.async_get_instance()\n    print(f\"Database instance: {db_instance}\")\n\n    # Check context status\n    print(f\"Database state: {database_context.get_state()}\")\n    print(f\"Database info: {database_context.get_info()}\")\n\n\n# 2. Context Manager Usage Example\nasync def context_manager_example():\n    \"\"\"Context Manager Usage Example\"\"\"\n    print(\"\\n=== Context manager example ===\")\n\n    # Using the Asynchronous Context Manager\n    database_context = get_context('database')\n    async with database_context.async_context() as db:\n        print(f\"Using database: {type(db)}\")\n        # Database instances are safe to use here\n\n    # Using the Synchronization Context Manager\n    with database_context.sync_context() as db:\n        print(f\"Using database (sync): {type(db)}\")\n\n\n# 3. Example of a custom context manager\nclass CacheManager(BaseContextManager[Dict[str, Any]]):\n    \"\"\"Example: Cache Manager\"\"\"\n\n    name = \"cache\"\n\n    def __init__(self, max_size: int = 1000, **kwargs):\n        super().__init__(**kwargs)\n        self.max_size = max_size\n\n    async def _async_initialize(self) -> Dict[str, Any]:\n        \"\"\"Initialize Cache\"\"\"\n        cache = {}\n        print(f\"Cache initialized with max_size: {self.max_size}\")\n        return cache\n\n    def _sync_initialize(self) -> Dict[str, Any]:\n        \"\"\"Synchronous Initialization Cache\"\"\"\n        cache = {}\n        print(f\"Cache initialized (sync) with max_size: {self.max_size}\")\n        return cache\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Clear cache\"\"\"\n        if self._instance:\n            self._instance.clear()\n            print(\"Cache cleared\")\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup Cache\"\"\"\n        if self._instance:\n            self._instance.clear()\n            print(\"Cache cleared (sync)\")\n\n    async def health_check(self) -> bool:\n        \"\"\"Cache Health Check\"\"\"\n        try:\n            instance = await self.async_get_instance()\n            return isinstance(instance, dict)\n        except Exception:\n            return False\n\n\n# 4. Functional context manager example\nasync def init_redis_connection():\n    \"\"\"impersonation Redis Connection Initialization\"\"\"\n    print(\"Connecting to Redis...\")\n    await asyncio.sleep(0.1)  # Analog network latency\n    return {\"connection\": \"redis://localhost:6379\", \"status\": \"connected\"}\n\n\nasync def cleanup_redis_connection(connection):\n    \"\"\"impersonation Redis Connection cleanup\"\"\"\n    print(\"Closing Redis connection...\")\n    connection[\"status\"] = \"closed\"\n\n\n# 5. Complete usage examples\nasync def complete_example():\n    \"\"\"Complete usage examples\"\"\"\n    print(\"\\n=== Full Usage Example ===\")\n\n    try:\n        # 1. Register Custom Context Manager\n        cache_manager = CacheManager(max_size=500, timeout=10.0, retry_count=2)\n        register_context(\n            cache_manager,\n            dependencies=['database'],  # Dependent database\n            initialize_order=20  # Initialize after database\n        )\n\n        # 2. Register Functional Context Manager\n        redis_manager = FunctionContextManager(\n            name=\"redis\",\n            init_func=init_redis_connection,\n            cleanup_func=cleanup_redis_connection,\n            timeout=5.0\n        )\n        register_context(redis_manager, initialize_order=30)\n\n        # 3. Reinitialize to ensure that the context of the new registration is initialized\n        await initialize_app_context()\n\n        # 4. Get all contextual instances\n        contexts = {\n            'database': await async_get_instance('database'),\n            'cache': await async_get_instance('cache'),\n            'redis': await async_get_instance('redis')\n        }\n\n        print(\"All contexts initialized:\")\n        for name, instance in contexts.items():\n            print(f\"  {name}: {type(instance)}\")\n\n        # 5. Perform a health check\n        health_results = await health_check(include_details=True)\n        print(\"\\nHealth check results:\")\n        for name, result in health_results.items():\n            if isinstance(result, dict):\n                print(f\"  {name}: healthy={result.get('healthy')}, state={result.get('state')}\")\n            else:\n                print(f\"  {name}: {result}\")\n\n        # 6. Demonstrate error handling\n        try:\n            # Attempt to get non-existent context\n            await async_get_instance('nonexistent')\n        except KeyError as e:\n            print(f\"\\nExpected error: {e}\")\n\n        # 7. Demo Reset Function\n        cache_context = get_context('cache')\n        print(f\"\\nCache state before reset: {cache_context.get_state()}\")\n\n        await cache_context.async_reset()\n        print(f\"Cache state after reset: {cache_context.get_state()}\")\n\n        # Re-fetching will trigger a reinitialization\n        cache_instance = await cache_context.async_get_instance()\n        print(f\"Cache state after re-init: {cache_context.get_state()}\")\n\n    except ContextError as e:\n        print(f\"Context error: {e}\")\n    except Exception as e:\n        print(f\"Unexpected error: {e}\")\n\n    finally:\n        # Clean up resources\n        await close_app_context()\n        print(\"\\nApplication context closed\")\n\n\n# 6. Examples of performance and concurrent testing\nasync def concurrency_example():\n    \"\"\"Example of concurrent access\"\"\"\n    print(\"\\n=== Example of concurrent access ===\")\n\n    await initialize_app_context()\n\n    async def worker(worker_id: int):\n        \"\"\"Work corridor\"\"\"\n        try:\n            # Get the same context instance concurrently\n            db = await async_get_instance('database')\n            print(f\"Worker {worker_id} got database: {id(db)}\")\n\n            # Simulate some work\n            await asyncio.sleep(0.1)\n            return f\"Worker {worker_id} completed\"\n\n        except Exception as e:\n            return f\"Worker {worker_id} failed: {e}\"\n\n    # Create multiple concurrent workflows\n    workers = [worker(i) for i in range(10)]\n    results = await asyncio.gather(*workers)\n\n    print(\"Concurrent access results:\")\n    for result in results:\n        print(f\"  {result}\")\n\n    await close_app_context()\n\n\n# 7. Examples of monitoring and diagnostics\nasync def monitoring_example():\n    \"\"\"Examples of monitoring and diagnostics\"\"\"\n    print(\"\\n=== Examples of monitoring and diagnostics ===\")\n\n    await initialize_app_context()\n\n    # Register some test contexts\n    register_context(CacheManager(name=\"cache1\"))\n    register_context(CacheManager(name=\"cache2\"))\n\n    # Get app context\n    from bisheng.core.context.manager import app_context\n    context_info = app_context.get_context_info()\n\n    print(\"Application context info:\")\n    print(f\"  Initialized: {context_info['initialized']}\")\n    print(f\"  Context count: {context_info['context_count']}\")\n    print(f\"  Initialization order: {context_info['initialization_order']}\")\n    print(f\"  Dependencies: {context_info['dependencies']}\")\n\n    # Get the status of each context\n    states = context_info['context_states']\n    print(\"\\nContext states:\")\n    for name, state in states.items():\n        print(f\"  {name}: {state.value if hasattr(state, 'value') else state}\")\n\n    # Perform detailed health checks\n    detailed_health = await health_check(include_details=True)\n    print(\"\\nDetailed health check:\")\n    for name, details in detailed_health.items():\n        if isinstance(details, dict):\n            print(f\"  {name}:\")\n            print(f\"    Healthy: {details.get('healthy')}\")\n            print(f\"    State: {details.get('state')}\")\n            print(f\"    Error: {details.get('error', 'None')}\")\n        else:\n            print(f\"  {name}: {details}\")\n\n    await close_app_context()\n\n\n# The main function.\nasync def main():\n    \"\"\"Run all examples\"\"\"\n    print(\"Post Context Manager Optimization Demo\\n\")\n\n    await basic_usage_example()\n    await context_manager_example()\n    await complete_example()\n    await concurrency_example()\n    await monitoring_example()\n\n    print(\"\\n=== All sample runs completed ===\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())"
  },
  {
    "path": "src/backend/bisheng/core/context/manager.py",
    "content": "\"\"\"App Context Manager\n\nGlobal context manager with integrated lazy loading and caching\nProvides easy dependency injection and lifecycle management\n\"\"\"\nimport asyncio\nfrom contextlib import asynccontextmanager, contextmanager\nfrom typing import Optional, Dict, Any, TypeVar, List, Union\n\nfrom loguru import logger\n\nfrom bisheng.core.config.settings import Settings\nfrom bisheng.core.context.base import (\n    ContextRegistry,\n    BaseContextManager,\n    ContextState,\n    ContextError\n)\n\nT = TypeVar('T')\n\n\nclass ApplicationContextManager:\n    \"\"\"App Context Manager\n\n    Responsible for managing the entire application infrastructure service lifecycle and providing a unified access interface\n    Supports dependency injection, bulk operations, and health checks\n    \"\"\"\n\n    def __init__(self):\n        self._registry = ContextRegistry()\n        self._initialized = False\n        self._initialization_lock = asyncio.Lock()\n        self._initialization_order: List[str] = []\n        self._dependencies: Dict[str, List[str]] = {}\n\n    async def initialize(self, config: Settings) -> None:\n        \"\"\"Initialize app context\n\n        Args:\n            config: Optional configuration dictionary for passing to individual context managers\n\n        Raises:\n            ContextError: Thrown on initialization failure\n        \"\"\"\n        async with self._initialization_lock:\n            if self._initialized:\n                logger.debug(\"Application context already initialized\")\n                return\n\n            try:\n                # Register default context manager\n                self._register_default_contexts(config or {})\n\n                # Initialize all contexts in dependency order\n                await self._initialize_contexts_in_order()\n\n                self._initialized = True\n                logger.info(\"Application context initialized successfully\")\n\n            except Exception as e:\n                logger.exception(f\"Failed to initialize application context: {e}\")\n                # Clean Up Initialized Resources\n                await self.async_close()\n                raise ContextError(f\"Application context initialization failed: {e}\") from e\n\n    def _register_default_contexts(self, config: Settings) -> None:\n        \"\"\"Register default context manager\"\"\"\n        try:\n\n            from bisheng.core.database.manager import DatabaseManager\n            self.register_context(DatabaseManager(database_url=config.database_url))\n\n            from bisheng.core.cache.redis_manager import RedisManager\n            self.register_context(RedisManager(redis_url=config.redis_url))\n\n            from bisheng.core.storage.minio.minio_manager import MinioManager\n            self.register_context(MinioManager(minio_config=config.object_storage.minio))\n\n            from bisheng.core.search.elasticsearch.manager import EsConnManager, statistics_es_name\n            self.register_context(EsConnManager(es_hosts=config.get_search_conf().elasticsearch_url,\n                                                **config.get_search_conf().ssl_verify))\n            self.register_context(EsConnManager(es_hosts=config.get_telemetry_conf().elasticsearch_url,\n                                                name=statistics_es_name,\n                                                **config.get_telemetry_conf().ssl_verify))\n\n            from bisheng.core.external.http_client.http_client_manager import HttpClientManager\n            self.register_context(HttpClientManager())\n\n            from bisheng.core.prompts.manager import PromptManager\n            self.register_context(PromptManager())\n\n            logger.debug(\"Default contexts registered\")\n        except ImportError as e:\n            logger.warning(f\"Failed to import default context managers: {e}\")\n        except Exception as e:\n            logger.error(f\"Failed to register default contexts: {e}\")\n            raise\n\n    async def _initialize_contexts_in_order(self) -> None:\n        \"\"\"Initialize context in dependency order\"\"\"\n        # If no initialization order is defined, initialize in registration order\n        if not self._initialization_order:\n            self._initialization_order = list(self._registry.get_all_contexts().keys())\n\n        initialized = set()\n\n        for context_name in self._initialization_order:\n            if context_name not in initialized:\n                await self._initialize_context_with_dependencies(context_name, initialized)\n\n    async def _initialize_context_with_dependencies(self, context_name: str, initialized: set) -> None:\n        \"\"\"Recursive initialization context and its dependencies\"\"\"\n        if context_name in initialized:\n            return\n\n        # Initialize dependencies first\n        dependencies = self._dependencies.get(context_name, [])\n        for dep_name in dependencies:\n            if dep_name not in initialized:\n                await self._initialize_context_with_dependencies(dep_name, initialized)\n\n        # Then initialize the current context\n        try:\n            context = self._registry.get_context(context_name)\n            await context.async_get_instance()  # This will trigger initialization\n            initialized.add(context_name)\n            logger.debug(f\"Initialized context: '{context_name}'\")\n        except Exception as e:\n            logger.error(f\"Failed to initialize context '{context_name}': {e}\")\n            raise\n\n    async def async_get_instance(self, name: str) -> T:\n        \"\"\"Gets the context instance of the specified name asynchronously\"\"\"\n        context = self.get_context(name)\n        return await context.async_get_instance()\n\n    def sync_get_instance(self, name: str) -> T:\n        \"\"\"Synchronously get a contextual instance of the specified name\"\"\"\n        context = self.get_context(name)\n        return context.sync_get_instance()\n\n    def get_context(self, name: str) -> BaseContextManager:\n        \"\"\"Gets the context instance of the specified name\"\"\"\n        return self._registry.get_context(name)\n\n    def register_context(\n            self,\n            context: BaseContextManager,\n            dependencies: Optional[List[str]] = None,\n            initialize_order: Optional[int] = None\n    ) -> None:\n        \"\"\"Register a new context manager\n\n        Args:\n            context: Context manager to register\n            dependencies: A list of other context names that the context depends on\n            initialize_order: Initialization order (smaller numbers initialize earlier)\n\n        Raises:\n            ValueError: If the context name already exists\n        \"\"\"\n        self._registry.register(context)\n\n        # Record dependencies\n        if dependencies:\n            self._dependencies[context.name] = dependencies\n\n        # Update initialization order\n        if initialize_order is not None:\n            # Insert to Specified Location\n            if context.name in self._initialization_order:\n                self._initialization_order.remove(context.name)\n\n            insert_pos = 0\n            for i, existing_name in enumerate(self._initialization_order):\n                existing_context = self._registry.get_context(existing_name)\n                if getattr(existing_context, '_initialize_order', float('inf')) > initialize_order:\n                    insert_pos = i\n                    break\n                insert_pos = i + 1\n\n            self._initialization_order.insert(insert_pos, context.name)\n            context._initialize_order = initialize_order\n        elif context.name not in self._initialization_order:\n            self._initialization_order.append(context.name)\n\n        logger.debug(f\"Registered context '{context.name}' with dependencies: {dependencies or []}\")\n\n    def unregister_context(self, name: str) -> None:\n        \"\"\"Log out of the context manager\"\"\"\n        self._registry.unregister(name)\n\n    async def health_check(self, include_details: bool = False) -> Union[Dict[str, bool], Dict[str, Dict[str, Any]]]:\n        \"\"\"Perform a health check\n\n        Args:\n            include_details: Does it contain detailed health check information?\n\n        Returns:\n            Union[Dict[str, bool], Dict[str, Dict[str, Any]]]: Health Check Results\n        \"\"\"\n        results = await self._registry.health_check()\n\n        if not include_details:\n            return results\n\n        # Include details\n        detailed_results = {}\n        for name, is_healthy in results.items():\n            try:\n                context = self._registry.get_context(name)\n                detailed_results[name] = {\n                    'healthy': is_healthy,\n                    'state': context.get_state().value,\n                    'error': str(context.get_error()) if context.get_error() else None,\n                    'info': context.get_info() if hasattr(context, 'get_info') else {}\n                }\n            except Exception as e:\n                detailed_results[name] = {\n                    'healthy': False,\n                    'error': f\"Failed to get context info: {e}\"\n                }\n\n        return detailed_results\n\n    async def async_close(self) -> None:\n        \"\"\"Close app context\n\n        Close all contexts in reverse order from initialization\n        \"\"\"\n        if not self._initialized:\n            return\n\n        try:\n            # Close context in reverse order to ensure dependencies are handled correctly\n            await self._close_contexts_in_reverse_order()\n\n            # Cleanup status\n            self._initialized = False\n            self._initialization_order.clear()\n            self._dependencies.clear()\n\n            logger.info(\"Application context closed successfully\")\n        except Exception as e:\n            logger.error(f\"Error closing application context: {e}\")\n            raise\n\n    async def _close_contexts_in_reverse_order(self) -> None:\n        \"\"\"Close all contexts in reverse order\"\"\"\n        close_order = list(reversed(self._initialization_order))\n\n        for context_name in close_order:\n            try:\n                if self._registry.has_context(context_name):\n                    context = self._registry.get_context(context_name)\n                    await context.async_close()\n                    logger.debug(f\"Closed context: '{context_name}'\")\n            except Exception as e:\n                logger.error(f\"Error closing context '{context_name}': {e}\")\n\n        # Ensure all contexts are closed\n        await self._registry.async_close_all()\n\n    def is_initialized(self) -> bool:\n        \"\"\"Check if initialized\"\"\"\n        return self._initialized\n\n    def get_registry(self) -> ContextRegistry:\n        \"\"\"Get Context Registry\n\n        Returns:\n            ContextRegistry: Context Registry Instance\n        \"\"\"\n        return self._registry\n\n    def get_context_info(self) -> Dict[str, Any]:\n        \"\"\"Get app context details\n\n        Returns:\n            Dict[str, Any]: Dictionary with app context details\n        \"\"\"\n        return {\n            'initialized': self._initialized,\n            'context_count': len(self._registry),\n            'initialization_order': self._initialization_order.copy(),\n            'dependencies': self._dependencies.copy(),\n            'context_states': self._registry.get_context_states()\n        }\n\n    @contextmanager\n    def sync_context(self, *context_names: str):\n        \"\"\"Synchronize context manager for batch fetching multiple contexts\n\n        Args:\n            *context_names: List of context names to get\n\n        Example:\n            with app_context.sync_context('database', 'cache') as (db, cache):\n                # Use db And cache\n                pass\n        \"\"\"\n        instances = []\n        try:\n            for name in context_names:\n                instance = self.sync_get_instance(name)\n                instances.append(instance)\n\n            if len(instances) == 1:\n                yield instances[0]\n            else:\n                yield tuple(instances)\n        finally:\n            # Note: This does not close automatically as it may be used elsewhere\n            pass\n\n    @asynccontextmanager\n    async def async_context(self, *context_names: str):\n        \"\"\"Asynchronous context manager for batch fetching multiple contexts\n\n        Args:\n            *context_names: List of context names to get\n\n        Example:\n            async with app_context.async_context('database', 'cache') as (db, cache):\n                # Use db And cache\n                pass\n        \"\"\"\n        instances = []\n        try:\n            for name in context_names:\n                instance = await self.async_get_instance(name)\n                instances.append(instance)\n\n            if len(instances) == 1:\n                yield instances[0]\n            else:\n                yield tuple(instances)\n        finally:\n            # Note: This does not close automatically as it may be used elsewhere\n            pass\n\n    async def reset_context(self, context_name: str) -> None:\n        \"\"\"Reset Specified Context\n\n        Args:\n            context_name: Context name to reset\n\n        Raises:\n            KeyError: If the context does not exist\n        \"\"\"\n        context = self._registry.get_context(context_name)\n        await context.async_reset()\n        logger.info(f\"Context '{context_name}' reset successfully\")\n\n    async def restart_context(self, context_name: str) -> None:\n        \"\"\"Restart the specified context (initialize immediately after reset)\n\n        Args:\n            context_name: Context name to restart\n\n        Raises:\n            KeyError: If the context does not exist\n        \"\"\"\n        await self.reset_context(context_name)\n        await self.async_get_instance(context_name)  # Trigger reinitialization\n        logger.info(f\"Context '{context_name}' restarted successfully\")\n\n    def list_contexts(self, state_filter: Optional[ContextState] = None) -> List[str]:\n        \"\"\"List all context names\n\n        Args:\n            state_filter: Optional status filter that returns only the context of the specified status\n\n        Returns:\n            List[str]: Context Name List\n        \"\"\"\n        if state_filter is None:\n            return list(self._registry.get_all_contexts().keys())\n\n        return [\n            name for name, context in self._registry.get_all_contexts().items()\n            if context.get_state() == state_filter\n        ]\n\n\n# Global App Context Instance\napp_context = ApplicationContextManager()\n\n\nasync def initialize_app_context(config: Settings) -> None:\n    \"\"\"\n    Initialize global app context\n    :param config:\n    :return:\n    \"\"\"\n\n    await app_context.initialize(config)\n\n\ndef get_context(name: str) -> BaseContextManager:\n    \"\"\"Convenient way to get context\n\n    Args:\n        name: Context Name\n\n    Returns:\n        BaseContextManager: Corresponding context manager\n\n    Raises:\n        KeyError: If the context does not exist\n    \"\"\"\n    return app_context.get_context(name)\n\n\nasync def async_get_instance(name: str) -> Any:\n    \"\"\"Convenient way to get contextual instances asynchronously\n\n    Args:\n        name: Context Name\n\n    Returns:\n        Any: Contextual instances\n\n    Raises:\n        KeyError: If the context does not exist\n        ContextError: If initialization fails\n    \"\"\"\n    return await app_context.async_get_instance(name)\n\n\ndef sync_get_instance(name: str) -> Any:\n    \"\"\"Convenient way to get contextual instances synchronously\n\n    Args:\n        name: Context Name\n\n    Returns:\n        Any: Contextual instances\n\n    Raises:\n        KeyError: If the context does not exist\n        ContextError: If initialization fails\n    \"\"\"\n    return app_context.sync_get_instance(name)\n\n\nasync def close_app_context() -> None:\n    \"\"\"Convenient way to turn off global app context\"\"\"\n    await app_context.async_close()\n\n\ndef register_context(\n        context: BaseContextManager,\n        dependencies: Optional[List[str]] = None,\n        initialize_order: Optional[int] = None\n) -> None:\n    \"\"\"Convenient way to register a context\n\n    Args:\n        context: Context manager to register\n        dependencies: A list of other context names that the context depends on\n        initialize_order: Initialization order (smaller numbers initialize earlier)\n\n    Example:\n        # Register a cache context that depends on the database\n        register_context(cache_manager, dependencies=['database'], initialize_order=10)\n    \"\"\"\n    app_context.register_context(context, dependencies, initialize_order)\n\n\nasync def health_check(include_details: bool = False) -> Union[Dict[str, bool], Dict[str, Dict[str, Any]]]:\n    \"\"\"Convenient way to perform a health check\n\n    Args:\n        include_details: Does it contain detailed health check information?\n\n    Returns:\n        Union[Dict[str, bool], Dict[str, Dict[str, Any]]]: Health Check Results\n    \"\"\"\n    return await app_context.health_check(include_details)\n"
  },
  {
    "path": "src/backend/bisheng/core/database/__init__.py",
    "content": "\"\"\"Database Infrastructure Module\n\nProvides database connection management, session management, transaction management, and context management capabilities\n\"\"\"\n\nfrom .connection import DatabaseConnectionManager  # noqa: F401\nfrom .manager import (\n    get_database_connection,\n    sync_get_database_connection,\n    get_async_db_session,\n    get_sync_db_session\n)\n\n__all__ = [\n    'DatabaseConnectionManager',\n    'get_database_connection',\n    'sync_get_database_connection',\n    'get_async_db_session',\n    'get_sync_db_session'\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/database/alembic/README.md",
    "content": "Generic single-database configuration.\n\n* 创建迁移脚本\n    ```bash\n    alembic revision -m \"描述信息\"\n    ```\n* 自动生成迁移脚本，基于模型和数据库的差异，差异较大时建议先手动创建迁移脚本再修改\n    ```bash\n    alembic revision --autogenerate -m \"描述信息\"\n    ```\n* 应用所有未应用的迁移脚本\n    ```bash\n    alembic upgrade head\n    ```\n\n* 应用到指定版本\n    ```bash\n    alembic upgrade <版本号>\n    ```\n\n* 回滚到上一个版本\n    ```bash\n    alembic downgrade -1\n    ```\n\n* 回滚到指定版本\n    ```bash\n    alembic downgrade <版本号>\n    ```\n\n\n* 查看当前数据库版本\n    ```bash\n    alembic current\n    ```\n\n* 查看迁移历史\n    ```bash\n    alembic history\n    ```\n\n* 查看未应用的迁移脚本\n    ```bash\n    alembic heads\n    ```\n\n* 生成迁移脚本的SQL文件，而不是直接应用到数据库\n    ```bash\n    alembic upgrade head --sql > upgrade.sql\n    ```\n\n* 配置文件及目录说明\n    * alembic.ini: 主配置文件，包含数据库连接字符串等全局配置\n    * bisheng/core/database/alembic/env.py: 环境配置文件，定义了如何连接数据库和加载模型\n    * bisheng/core/database/alembic/versions/: 存放迁移脚本的目录\n    * bisheng/core/database/alembic/script.py.mako: 迁移脚本模板文件\n    * bisheng/core/database/alembic/README.md: 本说明文件"
  },
  {
    "path": "src/backend/bisheng/core/database/alembic/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/database/alembic/env.py",
    "content": "from logging.config import fileConfig\n\nfrom alembic import context\n\nfrom bisheng.common.models.base import SQLModelSerializable\n\n# this is the Alembic Config object, which provides\n# access to the values within the .ini file in use.\nconfig = context.config\n\n# Interpret the config file for Python logging.\n# This line sets up loggers basically.\nif config.config_file_name is not None:\n    fileConfig(config.config_file_name)\n\n# add your model's MetaData object here\n# for 'autogenerate' support\n# from myapp import mymodel\n# target_metadata = mymodel.Base.metadata\ntarget_metadata = SQLModelSerializable.metadata\n\n\n# other values from the config, defined by the needs of env.py,\n# can be acquired:\n# my_important_option = config.get_main_option(\"my_important_option\")\n# ... etc.\n\n\ndef run_migrations_online() -> None:\n    \"\"\"Run migrations in 'online' mode.\n\n    In this scenario we need to create an Engine\n    and associate a connection with the context.\n\n    \"\"\"\n\n    from bisheng.core.database.manager import sync_get_database_connection\n    database_conn_manager = sync_get_database_connection()\n\n    with database_conn_manager.engine.connect() as connection:\n        context.configure(\n            connection=connection, target_metadata=target_metadata\n        )\n\n        with context.begin_transaction():\n            context.run_migrations()\n\n\nrun_migrations_online()\n"
  },
  {
    "path": "src/backend/bisheng/core/database/alembic/script.py.mako",
    "content": "\"\"\"${message}\n\nRevision ID: ${up_revision}\nRevises: ${down_revision | comma,n}\nCreate Date: ${create_date}\n\n\"\"\"\nfrom typing import Sequence, Union\n\nfrom alembic import op\nimport sqlalchemy as sa\n${imports if imports else \"\"}\n\n# revision identifiers, used by Alembic.\nrevision: str = ${repr(up_revision)}\ndown_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}\nbranch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}\ndepends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}\n\n\ndef upgrade() -> None:\n    \"\"\"Upgrade schema.\"\"\"\n    ${upgrades if upgrades else \"pass\"}\n\n\ndef downgrade() -> None:\n    \"\"\"Downgrade schema.\"\"\"\n    ${downgrades if downgrades else \"pass\"}\n"
  },
  {
    "path": "src/backend/bisheng/core/database/alembic/versions/v2_3_0_beta1_9ba42685e830.py",
    "content": "\"\"\"Add a metadata_fields field to the knowledge table.\n\nRevision ID: 9ba42685e830\nRevises: \nCreate Date: 2025-11-11 16:00:42.582363\n\n\"\"\"\nfrom typing import Sequence, Union\n\nfrom alembic import op\nimport sqlalchemy as sa\n\n# revision identifiers, used by Alembic.\nrevision: str = '9ba42685e830'\ndown_revision: Union[str, Sequence[str], None] = None\nbranch_labels: Union[str, Sequence[str], None] = None\ndepends_on: Union[str, Sequence[str], None] = None\n\n\ndef upgrade() -> None:\n    \"\"\"Upgrade schema.\"\"\"\n    op.add_column('knowledge', sa.Column('metadata_fields', sa.JSON, nullable=True, comment='Metadata Field Configuration for Knowledge Base'))\n\n    # knowledgefile OF TABLE)extra_meta to user_metadata Data field\n    op.add_column('knowledgefile', sa.Column('user_metadata', sa.JSON, nullable=True, comment='User-defined metadata'))\n\n    # Taking the original extra_meta Data migration of fields to user_metadata Data field\n    op.execute('UPDATE knowledgefile SET user_metadata = extra_meta')\n\n    op.drop_column('knowledgefile', 'extra_meta')\n\n    op.add_column('knowledgefile',sa.Column('updater_id', sa.INT, nullable=True, comment='Updated ByID'))\n\n\ndef downgrade() -> None:\n    \"\"\"Downgrade schema.\"\"\"\n    op.drop_column('knowledge', 'metadata_fields')\n\n    # Recovery knowledgefile OF TABLE) extra_meta Data field\n    op.add_column('knowledgefile',\n                  sa.Column('extra_meta', sa.VARCHAR(255), nullable=True, comment='User-defined metadata'))\n    op.execute('UPDATE knowledgefile SET extra_meta = user_metadata')\n    op.drop_column('knowledgefile', 'user_metadata')\n\n    op.drop_column('knowledgefile', 'updater_id')\n"
  },
  {
    "path": "src/backend/bisheng/core/database/connection.py",
    "content": "\"\"\"Database Connection Management Module\"\"\"\nimport logging\nfrom typing import Optional, Dict, Any, Generator\nfrom contextlib import asynccontextmanager, contextmanager\nfrom sqlalchemy import create_engine, Engine\nfrom sqlalchemy.exc import OperationalError\nfrom sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine\nfrom sqlalchemy.orm import sessionmaker\nfrom sqlalchemy.pool import StaticPool\nfrom sqlmodel import Session, SQLModel\nfrom sqlmodel.ext.asyncio.session import AsyncSession\nfrom sqlalchemy.ext.asyncio import async_sessionmaker\n\nlogger = logging.getLogger(__name__)\n\n\nclass DatabaseConnectionManager:\n    \"\"\"Database Connection Manager\n\n    Responsible for managing database engine creation, connection pool configuration and lifecycle management\n    \"\"\"\n\n    def __init__(self, database_url: str, **engine_kwargs):\n        self.database_url = database_url\n        self.async_database_url = self._convert_to_async_url(database_url)\n        self.engine_kwargs = engine_kwargs\n\n        self._engine: Optional[Engine] = None\n        self._async_engine: Optional[AsyncEngine] = None\n        self._async_session_maker: Optional[async_sessionmaker] = None\n\n    def _convert_to_async_url(self, url: str) -> str:\n        \"\"\"Database will be synchronizedURLConvert to AsynchronousURL\"\"\"\n        if \"pymysql\" in url:\n            return url.replace(\"pymysql\", \"aiomysql\")\n        elif \"psycopg2\" in url:\n            return url.replace(\"psycopg2\", \"asyncpg\")\n        return url\n\n    def _get_default_engine_config(self) -> Dict[str, Any]:\n        \"\"\"Get default engine configuration\"\"\"\n        config = {\n            'pool_size': 100,\n            'max_overflow': 20,\n            'pool_timeout': 30,\n            'pool_pre_ping': True,\n            'pool_recycle': 3600,  # 1 hour\n        }\n\n        # SQLiteSPECIAL CONFIGURATION\n        if self.database_url.startswith(\"sqlite\"):\n            config.update({\n                'connect_args': {'check_same_thread': False},\n                'poolclass': StaticPool,\n                'pool_size': 1,\n                'max_overflow': 0,\n            })\n        # MySQLSPECIAL CONFIGURATION\n        elif \"mysql\" in self.database_url:\n            if 'connect_args' not in config:\n                config['connect_args'] = {}\n            config['connect_args']['charset'] = 'utf8mb4'\n\n        return config\n\n    @property\n    def engine(self) -> Engine:\n        \"\"\"Get Synchronization Database Engine\"\"\"\n        if self._engine is None:\n            config = self._get_default_engine_config()\n            config.update(self.engine_kwargs)\n\n            self._engine = create_engine(\n                self.database_url,\n                **config\n            )\n            logger.debug(f\"Created sync database engine for {self.database_url}\")\n\n        return self._engine\n\n    @property\n    def async_engine(self) -> AsyncEngine:\n        \"\"\"Get Asynchronous Database Engine\"\"\"\n        if self._async_engine is None:\n            config = self._get_default_engine_config()\n            config.update(self.engine_kwargs)\n\n            # Remove Synchronization Engine Specific Configuration\n            config.pop('poolclass', None)\n\n            self._async_engine = create_async_engine(\n                self.async_database_url,\n                **config\n            )\n            logger.debug(f\"Created async database engine for {self.async_database_url}\")\n\n        return self._async_engine\n\n    @contextmanager\n    def create_session(self) -> Generator[Session, Any, None]:\n        \"\"\"Create a sync session\"\"\"\n        session_maker = sessionmaker(\n            bind=self.engine,\n            class_=Session,\n            expire_on_commit=False,\n            autoflush=True,\n            autocommit=False\n        )\n\n        with session_maker() as session:\n            try:\n                yield session\n            except Exception as e:\n                session.rollback()\n                logger.error(f\"Database session rolled back due to error: {e}\")\n                raise\n            finally:\n                session.close()\n\n    @asynccontextmanager\n    async def async_session(self):\n        \"\"\"Asynchronous Session Context Manager\"\"\"\n\n        session_maker = async_sessionmaker(\n            bind=self.async_engine,\n            class_=AsyncSession,\n            expire_on_commit=False,\n            autoflush=True,\n            autocommit=False\n        )\n\n        async with session_maker() as session:\n            try:\n                yield session\n            except Exception as e:\n                await session.rollback()\n                logger.error(f\"Database session rolled back due to error: {e}\")\n                raise\n            finally:\n                await session.close()\n\n    async def create_db_and_tables(self) -> None:\n        \"\"\"Creation of databases and tables\"\"\"\n\n        async with self.async_engine.begin() as conn:\n            try:\n                await conn.run_sync(SQLModel.metadata.create_all)\n            except OperationalError as oe:\n                logger.warning(f\"Table creation skipped due to OperationalError: {oe}\")\n            except Exception as exc:\n                logger.error(f\"Error creating tables: {exc}\")\n                raise RuntimeError(\"Error creating tables\") from exc\n\n        logger.info('Database and tables created successfully')\n\n    async def close(self):\n        \"\"\"Close database connection\"\"\"\n        if self._async_engine:\n            await self._async_engine.dispose()\n            logger.debug(\"Async database engine disposed\")\n\n    def close_sync(self):\n        \"\"\"Synchronously close database connections\"\"\"\n        if self._engine:\n            self._engine.dispose()\n            logger.debug(\"Sync database engine disposed\")\n\n    def __del__(self):\n        \"\"\"Destructor ensures release of resources\"\"\"\n        if self._engine:\n            try:\n                self._engine.dispose()\n            except Exception:\n                pass\n"
  },
  {
    "path": "src/backend/bisheng/core/database/manager.py",
    "content": "\"\"\"Database Global Manager\n\nProvides global management and easy access to database context\nSupports health checks, connection pool monitoring, and transaction management\n\"\"\"\nimport logging\nfrom typing import Dict, Any, Optional, AsyncGenerator\nfrom contextlib import asynccontextmanager, contextmanager\n\nfrom sqlalchemy import text\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.database import DatabaseConnectionManager\n\nlogger = logging.getLogger(__name__)\n\n\nclass DatabaseManager(BaseContextManager[DatabaseConnectionManager]):\n    \"\"\"Database Global Manager\n\n    Responsible for managing the global lifecycle of database connections and providing a unified access interface\n    Supports connection pool monitoring, health checks, and easy session management\n    \"\"\"\n\n    name: str = \"database\"\n\n    def __init__(\n            self,\n            database_url: Optional[str] = None,\n            engine_config: Optional[Dict[str, Any]] = None,\n            **kwargs\n    ):\n        super().__init__(self.name, **kwargs)\n        self.database_url = database_url\n        if not self.database_url:\n            raise ValueError(\"Database URL is required. Please provide via parameter or settings.database_url\")\n        self.engine_config = engine_config or {}\n\n    async def _async_initialize(self) -> DatabaseConnectionManager:\n        \"\"\"Initialize Database Connection Manager\"\"\"\n        return DatabaseConnectionManager(\n            self.database_url,\n            **self.engine_config\n        )\n\n    def _sync_initialize(self) -> DatabaseConnectionManager:\n        \"\"\"Synchronization Initialization\"\"\"\n        return DatabaseConnectionManager(\n            self.database_url,\n            **self.engine_config\n        )\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Clean up database resources\"\"\"\n        if self._instance:\n            await self._instance.close()\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronously clean up database resources\"\"\"\n        if self._instance:\n            self._instance.close_sync()\n\n    async def health_check(self) -> bool:\n        \"\"\"Database Health Check\n\n        Returns:\n            bool: True If the database connection is normal,False Otherwise, \n        \"\"\"\n        try:\n            database_instance = await self.async_get_instance()\n\n            # Perform simple queries using asynchronous sessions\n            async with database_instance.async_session() as session:\n                await session.exec(text(\"SELECT 1\"))\n\n            logger.debug(\"Database health check passed\")\n            return True\n\n        except Exception as e:\n            logger.error(f\"Database health check failed: {e}\")\n            return False\n\n    async def create_tables_if_not_exists(self) -> None:\n        \"\"\"Create a database table (if it does not exist)\n\n        This is a convenient method for initializing the database structure\n        \"\"\"\n        try:\n            database_instance = await self.async_get_instance()\n            await database_instance.create_db_and_tables()\n            logger.info(\"Database tables created or verified successfully\")\n        except Exception as e:\n            logger.error(f\"Failed to create database tables: {e}\")\n            raise\n\n\nasync def get_database_connection() -> DatabaseConnectionManager:\n    \"\"\"Get Global Database Connection Manager Instance\n\n    Returns:\n        DatabaseConnectionManager: Database Connection Manager Instance\n\n    Raises:\n        ContextError: If the database context is not registered or initialization fails\n    \"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return await app_context.async_get_instance(DatabaseManager.name)\n    except KeyError:\n        logger.warning(f\"Database context not found, registering default instance\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(DatabaseManager(settings.database_url))\n            return await app_context.async_get_instance(DatabaseManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register and initialize database context: {e}\")\n            raise\n\n\ndef sync_get_database_connection() -> DatabaseConnectionManager:\n    \"\"\"Get global database connection manager instance synchronously\n\n    Returns:\n        DatabaseConnectionManager: Database Connection Manager Instance\n\n    Raises:\n        ContextError: If the database context is not registered or initialization fails\n    \"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(DatabaseManager.name)\n    except KeyError:\n        logger.warning(f\"Database context not found, registering default instance\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(DatabaseManager(settings.database_url))\n            return app_context.sync_get_instance(DatabaseManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register and initialize database context: {e}\")\n            raise\n\n\n@asynccontextmanager\nasync def get_async_db_session() -> AsyncGenerator[AsyncSession, None]:\n    \"\"\"A convenient way to get asynchronous database sessions\n\n    Example:\n        async with get_async_db_session() as session:\n            result = await session.execute(\"SELECT * FROM users\")\n\n    Yields:\n        AsyncSession: Asynchronous database session\n    \"\"\"\n    db_manager = await get_database_connection()\n    async with db_manager.async_session() as session:\n        yield session\n\n\n@contextmanager\ndef get_sync_db_session():\n    \"\"\"Convenient way to get synchronized database sessions\n\n    Example:\n        with get_sync_db_session() as session:\n            result = session.execute(\"SELECT * FROM users\")\n\n    Yields:\n        Session: Synchronize database sessions\n    \"\"\"\n    db_manager = sync_get_database_connection()\n    with db_manager.create_session() as session:\n        yield session\n"
  },
  {
    "path": "src/backend/bisheng/core/external/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/external/http_client/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/external/http_client/client.py",
    "content": "import logging\nfrom typing import Dict, Optional, Union, Any, AsyncGenerator, Literal\n\nimport aiohttp\nfrom aiohttp import ClientSession, ClientTimeout, TCPConnector\nfrom pydantic import BaseModel\n\nlogger = logging.getLogger(__name__)\n\n\nclass ResponseData(BaseModel):\n    status_code: int\n    body: Optional[Union[Dict[str, Any], str, bytes]] = None\n    error: Optional[str] = None\n    headers: Optional[Dict[str, str]] = None\n\n\nclass AsyncHttpClient(object):\n    def __init__(self, timeout: int = 120, keep_alive: bool = True, limit_per_host: int = 100,\n                 headers: Dict[str, str] = None, loop=None):\n        \"\"\"\n        Asynchronous HTTP client using aiohttp.\n        :param timeout: Timeout in seconds for the requests.\n        :param max_retries: Maximum number of retries for failed requests.\n        :param keep_alive: Whether to keep the connection alive.\n        :param limit_per_host: Maximum number of connections per host.\n        :param headers:\n        :param loop:\n        \"\"\"\n        self.headers = headers or self._get_default_headers()\n        self.timeout = timeout\n        self.keep_alive = keep_alive\n        self.limit_per_host = limit_per_host\n        self.loop = loop\n        self._aiohttp_client: Optional[ClientSession] = None\n\n    @staticmethod\n    def _get_default_headers() -> Dict[str, str]:\n        return {\n            \"Accept\": \"application/json\",\n            \"Content-Type\": \"application/json\",\n            \"User-Agent\": \"aiohttp-client\",\n        }\n\n    def add_custom_header(self, key: str, value: str) -> None:\n        self.headers[key] = value\n\n    def clear_custom_headers(self) -> None:\n        self.headers = self._get_default_headers()\n\n    async def get_aiohttp_client(self, loop=None) -> ClientSession:\n\n        loop = loop or self.loop\n\n        if self._aiohttp_client is None:\n            timeout = ClientTimeout(total=self.timeout)\n            connector = TCPConnector(keepalive_timeout=self.timeout, limit_per_host=self.limit_per_host, loop=loop)\n            self._aiohttp_client = ClientSession(timeout=timeout, connector=connector,\n                                                 headers=self.headers, loop=loop)\n        return self._aiohttp_client\n\n    async def close_aiohttp_client(self) -> None:\n        if self._aiohttp_client:\n            await self._aiohttp_client.close()\n            self._aiohttp_client = None\n\n    async def _execute_request(\n            self,\n            method: str,\n            url: str,\n            headers: Dict[str, str],\n            params: Optional[Dict[str, Union[str, int]]] = None,\n            body: Optional[Union[Dict[str, Any], str, bytes, Any]] = None,\n            data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\",\n            destroy_session: bool = False,\n            clear_headers: bool = False,\n            **kwargs,\n    ) -> ResponseData:\n        \"\"\"\n        Execute an HTTP request.\n        :param method: HTTP method (GET, POST, PUT, DELETE, etc.)\n        :param url: URL for the request.\n        :param headers: Headers for the request.\n        :param params: Query parameters for the request.\n        :param body: Body of the request.\n        :param data_type: Type of data to return (json, text, binary).\n        :param destroy_session: Whether to close the session after the request.\n        :param clear_headers: Whether to clear custom headers after the request.\n        :return: Response as a dictionary with status_code, body, and error.\n        \"\"\"\n        client = await self.get_aiohttp_client()\n        response: ResponseData = ResponseData(status_code=0)\n        headers = headers or self.headers\n        try:\n            async with client.request(\n                    method=method,\n                    url=url,\n                    headers=headers,\n                    params=params,\n                    json=body if isinstance(body, dict) else None,\n                    data=body if isinstance(body, str) or isinstance(body, bytes) else None,\n                    **kwargs,\n            ) as http_response:\n                response.status_code = http_response.status\n                response.headers = dict(http_response.headers)\n                if data_type == \"json\":\n                    response.body = await http_response.json()\n                elif data_type == \"text\":\n                    response.body = await http_response.text()\n                elif data_type == \"binary\":\n                    response.body = await http_response.read()\n                http_response.raise_for_status()\n\n        except aiohttp.ClientResponseError as cre:\n            logger.error(f\"Client response error during {method} request to {url}: {cre}\")\n            response.error = str(cre)\n            response.status_code = cre.status\n\n        except Exception as error:\n            logger.error(f\"Error during {method} request to {url}: {error}\")\n            response.error = str(error)\n            response.status_code = 500\n        finally:\n            if destroy_session:\n                await self.close_aiohttp_client()\n\n            if clear_headers:\n                self.clear_custom_headers()\n        return response\n\n    async def get(self, url: str, params: Optional[Dict[str, Union[str, int]]] = None,\n                  data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\", destroy_session: bool = False,\n                  headers: Dict = None, clear_headers: bool = False, **kwargs) -> ResponseData:\n        return await self._execute_request(\"GET\", url=url, headers=headers, params=params, data_type=data_type,\n                                           destroy_session=destroy_session, clear_headers=clear_headers, **kwargs)\n\n    async def post(self, url: str, body: Optional[Union[Dict[str, Any], str, bytes, Any]] = None,\n                   data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\", destroy_session: bool = False,\n                   headers: Dict = None, clear_headers: bool = False, **kwargs) -> ResponseData:\n        return await self._execute_request(\"POST\", url=url, headers=headers, body=body, data_type=data_type,\n                                           destroy_session=destroy_session, clear_headers=clear_headers, **kwargs)\n\n    async def put(self, url: str, body: Optional[Union[Dict[str, Any], str, bytes, Any]] = None,\n                  data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\", destroy_session: bool = False,\n                  headers: Dict = None, clear_headers: bool = False, **kwargs) -> ResponseData:\n        return await self._execute_request(\"PUT\", url=url, headers=headers, body=body, data_type=data_type,\n                                           destroy_session=destroy_session, clear_headers=clear_headers, **kwargs)\n\n    async def patch(self, url: str, body: Optional[Union[Dict[str, Any], str, bytes, Any]] = None,\n                    data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\", destroy_session: bool = False,\n                    headers: Dict = None, clear_headers: bool = False, **kwargs) -> ResponseData:\n        return await self._execute_request(\"PATCH\", url=url, headers=headers, body=body, data_type=data_type,\n                                           destroy_session=destroy_session, clear_headers=clear_headers, **kwargs)\n\n    async def delete(self, url: str, params: Optional[Dict[str, Union[str, int]]] = None,\n                     data_type: Literal[\"json\", \"text\", \"binary\"] = \"json\", destroy_session: bool = False,\n                     headers: Dict = None, clear_headers: bool = False, **kwargs) -> ResponseData:\n        return await self._execute_request(\"DELETE\", url=url, headers=headers, params=params, data_type=data_type,\n                                           destroy_session=destroy_session, clear_headers=clear_headers, **kwargs)\n\n    async def stream(\n            self, method: Literal[\"GET\", \"POST\", \"PUT\", \"PATCH\"],\n            url: str,\n            headers: Dict[str, str] = None,\n            params: Optional[Dict[str, Union[str, int]]] = None,\n            body: Optional[Union[Dict[str, Any], str]] = None, chunk_size: int = 1024 * 1024 * 10,\n            destroy_session: bool = False,\n            clear_headers: bool = False,\n            **kwargs\n    ) -> AsyncGenerator[bytes, None]:\n        \"\"\"\n        Streaming requests\n        \"\"\"\n        client = await self.get_aiohttp_client()\n\n        try:\n            async with client.request(method=method,\n                                      url=url,\n                                      headers=headers or self.headers,\n                                      params=params,\n                                      json=body if isinstance(body, dict) else None,\n                                      data=body if isinstance(body, str) else None, **kwargs) as response:\n                response.raise_for_status()\n                async for chunk in response.content.iter_chunked(chunk_size):\n                    yield chunk\n        except Exception as error:\n            logger.error(f\"Error during streaming from {url}: {error}\")\n            raise error\n\n        finally:\n            if destroy_session:\n                await self.close_aiohttp_client()\n            if clear_headers:\n                self.clear_custom_headers()\n"
  },
  {
    "path": "src/backend/bisheng/core/external/http_client/http_client_manager.py",
    "content": "import logging\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.context.base import T\nfrom bisheng.core.external.http_client.client import AsyncHttpClient\n\nlogger = logging.getLogger(__name__)\n\n\nclass HttpClientManager(BaseContextManager[AsyncHttpClient]):\n    \"\"\"HTTP Client Manager\n\n    Inherited From BaseContextManagerProvided by HTTP Client lifecycle management\n    Supports lazy loading and caching\n    \"\"\"\n\n    name = 'http_client'\n\n    def __init__(self):\n        super().__init__()\n\n    async def _async_initialize(self) -> AsyncHttpClient:\n        \"\"\"Async Initialization HTTP Client\"\"\"\n        http_client = AsyncHttpClient()\n        await http_client.get_aiohttp_client()\n        return http_client\n\n    def _sync_initialize(self) -> T:\n        pass\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Asynchronous Cleanup HTTP Client\"\"\"\n        if self._instance:\n            await self._instance.close_aiohttp_client()\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup HTTP Client\"\"\"\n        pass\n\n\nasync def get_http_client() -> AsyncHttpClient:\n    \"\"\"Dapatkan HTTP Client Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return await app_context.async_get_instance(HttpClientManager.name)\n    except KeyError:\n        logger.warning(f\"HttpClientManager not found in context, registering new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(HttpClientManager())\n            return await app_context.async_get_instance(HttpClientManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register HttpClientManager: {e}\")\n            raise\n"
  },
  {
    "path": "src/backend/bisheng/core/logger.py",
    "content": "import logging\nimport sys\nimport uuid\nfrom contextvars import ContextVar\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom loguru import logger\n\nfrom bisheng.core.config.settings import LoggerConf\n\ntrace_id_var: ContextVar[Optional[str]] = ContextVar(\"trace_id\", default=None)\n\n\ndef trace_id_generator() -> str:\n    return str(uuid.uuid4().hex)\n\n\nclass TraceIdFilter:\n    def __init__(self, filter_func=None):\n        self.filter_func = filter_func\n\n    def __call__(self, record):\n        if record[\"extra\"].get(\"trace_id\") is None:\n            record[\"extra\"][\"trace_id\"] = trace_id_var.get()\n        if self.filter_func is not None:\n            return self.filter_func(record)\n        return True\n\n\nclass InterceptHandler(logging.Handler):\n    \"\"\"Interception Criteria logging logs, transferring to Loguru <g id=\"Bold\">Medical Treatment:</g>\"\"\"\n\n    def emit(self, record):\n        # Dapatkan loguru counterpart&apos;s level\n        try:\n            level = logger.level(record.levelname).name\n        except ValueError:\n            level = record.levelno\n\n        # Get call stack depth\n        frame, depth = logging.currentframe(), 2\n        while frame and frame.f_code.co_filename == logging.__file__:\n            frame = frame.f_back\n            depth += 1\n\n        # Forward to loguru\n        logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())\n\n\ndef set_logger_config(logger_config: LoggerConf):\n    \"\"\"\n    Configuration Logs\n    :param logger_config:\n    :return:\n    \"\"\"\n    logger.remove()\n\n    # Configure Root Logger\n    logging.root.handlers = [InterceptHandler()]\n    logging.root.setLevel(logger_config.level)\n\n    # Set specific loggers to INFO level to reduce verbosity\n    logging.getLogger(\"uvicorn.access\").setLevel(logging.INFO)\n    logging.getLogger(\"elastic_transport\").setLevel(logging.INFO)\n    logging.getLogger(\"elasticsearch\").setLevel(logging.INFO)\n    logging.getLogger(\"urllib3\").setLevel(logging.INFO)\n    logging.getLogger(\"python_multipart\").setLevel(logging.INFO)\n    logging.getLogger(\"aiohttp_retry\").setLevel(logging.INFO)\n\n    # Block all existing loggers\n    for name in logging.root.manager.loggerDict.keys():\n        logging_logger = logging.getLogger(name)\n        logging_logger.handlers = [InterceptHandler()]\n        logging_logger.propagate = False\n\n    # Add Default Console Log Processor\n    logger.add(\n        sys.stdout,\n        format=logger_config.format,\n        level=logger_config.level,\n        filter=TraceIdFilter(),\n        enqueue=True,\n        backtrace=True,\n        diagnose=False\n    )\n\n    # Add additional log processors\n    for handler in logger_config.handlers:\n        log_file = Path(handler['sink'])\n        log_file.parent.mkdir(parents=True, exist_ok=True)\n        filter_func = handler.pop('filter', None)\n        logger.add(**handler, filter=TraceIdFilter(filter_func))\n\n\n\n    logger.debug(f'Logger set up with log level: {logger_config.level}')\n"
  },
  {
    "path": "src/backend/bisheng/core/middleware/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/prompts/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/prompts/manager.py",
    "content": "import logging\nfrom abc import ABC\n\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.prompts.prompt_loader import PromptLoader\n\nlogger = logging.getLogger(__name__)\n\n\nclass PromptManager(BaseContextManager[PromptLoader]):\n    \"\"\"Prompt Manager\n\n    Responsible for loading, caching, and managing prompts\n    \"\"\"\n\n    name = 'prompts'\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n    async def _async_initialize(self) -> PromptLoader:\n        \"\"\"Asynchronous initialization prompt word loader\"\"\"\n        logger.info(\"Initializing PromptLoader...\")\n        prompt_loader = PromptLoader()\n        logger.info(\"PromptLoader initialized.\")\n        return prompt_loader\n\n    def _sync_initialize(self) -> PromptLoader:\n        \"\"\"Synchronous Initialization Prompt Loader\"\"\"\n        logger.info(\"Initializing PromptLoader...\")\n        prompt_loader = PromptLoader()\n        logger.info(\"PromptLoader initialized.\")\n        return prompt_loader\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Clean up database resources\"\"\"\n        pass\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronously clean up database resources\"\"\"\n        pass\n\n\nasync def get_prompt_manager() -> PromptLoader:\n    \"\"\"Get a prompt word manager instance (asynchronous)\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return await app_context.async_get_instance(PromptManager.name)\n    except KeyError:\n        logger.warning(f\"PromptManager not found in context. Registering...\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(PromptManager())\n            return await  app_context.async_get_instance(PromptManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register PromptManager: {e}\")\n            raise\n\n\ndef get_prompt_manager_sync() -> PromptLoader:\n    \"\"\"Get a prompt word manager instance (sync method)\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(PromptManager.name)\n    except KeyError:\n        logger.warning(f\"PromptManager not found in context. Registering...\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(PromptManager())\n            return app_context.sync_get_instance(PromptManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register PromptManager: {e}\")\n            raise\n"
  },
  {
    "path": "src/backend/bisheng/core/prompts/prompt_loader.py",
    "content": "import copy\nimport logging\nimport os\nfrom enum import Enum\nfrom string import Template\nfrom typing import Union, Dict\n\nimport yaml\nfrom pydantic import BaseModel, Field\n\nlogger = logging.getLogger(__name__)\n\n\nclass PromptTypeEnum(str, Enum):\n    \"\"\"\n    PromptType Enumeration\n    \"\"\"\n    PROMPT = \"prompt\"\n    CHATPROMPT = \"chat_prompt\"\n\n\nclass ChatPromptSchema(BaseModel):\n    system: str = Field(default='', description='SystemPromptContents')\n    user: str = Field(default='', description='UsersPromptContents')\n\n\n# StandardPrompt Schema\nclass PromptSchema(BaseModel):\n    \"\"\"\n    StandardPrompt Schema\n    \"\"\"\n    description: str = Field(default='', description='PromptDescription')\n    type: PromptTypeEnum = Field(default=PromptTypeEnum.PROMPT, description='PromptType')\n    prompt: Union[str, ChatPromptSchema] = Field(..., description='PromptContents')\n\n\n# embeddedPromptLoader..\nclass PromptLoader(object):\n    def __init__(self):\n        \"\"\"\n        InisialisasiPromptLoader..\n        \"\"\"\n        self.prompt_yaml_dir = os.path.join(os.path.dirname(__file__), 'yaml')\n        self.prompts_storage = {}\n        self._load_all()\n\n    # analyzingprompts\n    @staticmethod\n    def _parse_prompt(prompts_data: dict) -> Dict[str, PromptSchema]:\n        \"\"\"\n        analyzingPromptDATA\n        :param prompts_data: PromptDATA\n        :return: After parsingPromptObjects\n        \"\"\"\n        parsed_prompts = {}\n        for prompt_name, prompt_data in prompts_data.items():\n            if not isinstance(prompt_data, dict):\n                raise ValueError(f\"Invalid prompt format for {prompt_name}: Expected a dictionary.\")\n            prompt_schema = PromptSchema(**prompt_data)\n            parsed_prompts[prompt_name] = prompt_schema\n\n        return parsed_prompts\n\n    def _load_all(self):\n        for root, _, files in os.walk(self.prompt_yaml_dir):\n            for file in files:\n                if not file.endswith('.yaml') and not file.endswith('.yml'):\n                    continue\n                file_path = os.path.join(root, file)\n                namespace = os.path.splitext(file)[0]\n                with open(file_path, 'r', encoding='utf-8') as f:\n                    try:\n                        prompt_data = yaml.safe_load(f)\n                        if isinstance(prompt_data, dict):\n                            self.prompts_storage[namespace] = self._parse_prompt(prompt_data.get('prompts', {}))\n                        else:\n                            raise ValueError(f\"Invalid YAML format in {file_path}: Expected a dictionary.\")\n                    except yaml.YAMLError as e:\n                        logger.error(f\"Error parsing YAML file {file_path}: {e}\")\n                        continue\n\n    # Get the specifiedPrompt\n    def get_prompt(self, namespace: str, prompt_name: str) -> PromptSchema:\n        \"\"\"\n        Get the specifiedPrompt\n        :param namespace: namespace\n        :param prompt_name: PromptPart Name\n        :return: PromptObjects\n        \"\"\"\n        if namespace in self.prompts_storage:\n            return copy.deepcopy(self.prompts_storage[namespace].get(prompt_name, None))\n        else:\n            raise KeyError(f\"Namespace '{namespace}' not found in prompts storage.\")\n\n    def render_prompt(self, namespace: str, prompt_name: str, **kwargs) -> PromptSchema:\n        \"\"\"\n        Render specifiedPrompt\n        :param namespace: namespace\n        :param prompt_name: PromptPart Name\n        :param kwargs: Rendering parameters\n        :return: RenderedPromptString\n        \"\"\"\n        prompt_obj = self.get_prompt(namespace, prompt_name)\n        if prompt_obj.type == PromptTypeEnum.PROMPT:\n            prompt_obj.prompt = Template(prompt_obj.prompt).safe_substitute(**kwargs)\n        elif prompt_obj.type == PromptTypeEnum.CHATPROMPT:\n            prompt_obj.prompt.system = Template(prompt_obj.prompt.system).safe_substitute(**kwargs)\n            prompt_obj.prompt.user = Template(prompt_obj.prompt.user).safe_substitute(**kwargs)\n        else:\n            raise ValueError(f\"Unsupported prompt type: {prompt_obj.type}\")\n\n        return prompt_obj\n"
  },
  {
    "path": "src/backend/bisheng/core/prompts/yaml/gen_title.yaml",
    "content": "version: v1\ndescription: 标题生成\nprompts:\n  linsight:\n    description: \"Linsight任务标题生成\"\n    type: chat_prompt\n    prompt:\n      system: |\n        # 任务\n        你是一位资深信息架构师，请根据下面用户在会话中提供的「用户目标」，生成一个用于会话列表展示的对话标题（≤10 个汉字或英文单词）。\n        \n        # 约束\n        仅输出标题内容，不要解释、不要添加多余文本或 Markdown。\n      user: |\n        用户目标:\n        ${USER_GOAL}\n\n  call_reason_summary:\n    description: \"人工介入原因总结\"\n    type: chat_prompt\n    prompt:\n      system: |\n        # 任务\n        你是一位资深信息架构师,请根据下面用户在会话中提供的「问题原因」，生成摘要信息（≤10 个汉字或英文单词）。\n        \n        # 约束\n        仅输出标题内容，不要解释、不要添加多余文本或 Markdown。\n      user: |\n        问题原因:\n        ${USER_GOAL}"
  },
  {
    "path": "src/backend/bisheng/core/prompts/yaml/qa.yaml",
    "content": "version: v1\ndescription: 标准问答（QA）生成器\nprompts:\n  simple_qa_chat:\n    description: \"生成简单的问答\"\n    type: chat_prompt\n    prompt:\n      system: |\n        你是一个问答生成器，基于用户提供的上下文信息，生成简洁明了的问答对。\n      user: |\n        基于以下上下文信息，生成一个问答对：\n        上下文信息：${context}\n        请回答以下问题：${question}\n  simple_qa:\n    description: \"生成标准的问答\"\n    type: prompt\n    prompt: |\n        你是一个问答生成器，基于用户提供的上下文信息，生成简洁明了的问答对。\n        上下文信息：\n        ${context}\n        请回答以下问题：\n        ${question}"
  },
  {
    "path": "src/backend/bisheng/core/prompts/yaml/sop.yaml",
    "content": "version: v1\ndescription: SOP\nprompts:\n  gen_sop_summary:\n    description: \"根据SOP详情生成摘要信息\"\n    type: chat_prompt\n    prompt:\n      system: |\n        # 任务\n        1. 你是一位资深信息架构师，请根据下面用户提供的 SOP 详细内容，生成用于在表格中展示的 SOP 描述字段，控制在 50 字以内。\n        2. 生成结果请严格使用 JSON 格式表示。\n        \n        # JSON 格式模板\n        ```json\n        {\n          \"sop_description\": \"生成结果\"\n        }\n        ```\n      user: |\n        SOP 详细内容：\n        ${sop_detail}\n"
  },
  {
    "path": "src/backend/bisheng/core/prompts/yaml/workstation.yaml",
    "content": "version: v1\ndescription: 工作台个人知识库\nprompts:\n  personal_knowledge:\n    description: \"个人知识库提示词\"\n    type: prompt\n    prompt: |\n      # task\n      你是一个知识库问答助手：\n      1.按照用户使用的语言回答问题，并且答案要严谨专业。\n      2.你需要依据以下【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。若相关内容中包含图片内容的，请直接输出图片源文件，若占位符（例如：![image](路径/IMAGE_1.png)），回答时请保留这些占位符，不要修改或删除。\n      4. 如果文档中包含表格，请不要做任何修改，或返回表格格式的markdown\n      3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\n      4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\n      \n      # 参考文本\n      ```\n      ${retrieved_file_content}\n      ```\n      \n      # 用户问题\n      ```\n      ${question}\n      ```\n"
  },
  {
    "path": "src/backend/bisheng/core/search/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/search/elasticsearch/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/search/elasticsearch/es_connection.py",
    "content": "from typing import Optional\n\nfrom elasticsearch import Elasticsearch, AsyncElasticsearch\n\n\nclass ESConnection:\n    def __init__(self, es_hosts: str, **kwargs):\n        self.es_hosts = es_hosts\n        self.es_kwargs = kwargs\n\n        self._sync_es_connection: Optional[Elasticsearch] = None\n        self._es_connection: Optional[AsyncElasticsearch] = None\n\n    def _create_es_connection(self) -> 'AsyncElasticsearch':\n\n        return AsyncElasticsearch(\n            hosts=self.es_hosts,\n            **self.es_kwargs\n        )\n\n    def _create_sync_es_connection(self) -> 'Elasticsearch':\n        return Elasticsearch(\n            hosts=self.es_hosts,\n            **self.es_kwargs\n        )\n\n    @property\n    def es_connection(self) -> 'AsyncElasticsearch':\n        if self._es_connection is None:\n            self._es_connection = self._create_es_connection()\n        return self._es_connection\n\n    @property\n    def sync_es_connection(self) -> 'Elasticsearch':\n        if self._sync_es_connection is None:\n            self._sync_es_connection = self._create_sync_es_connection()\n        return self._sync_es_connection\n\n    async def close(self):\n        if self._es_connection is not None:\n            await self._es_connection.close()\n            self._es_connection = None\n\n    def sync_close(self):\n        if self._sync_es_connection is not None:\n            self._sync_es_connection.close()\n            self._sync_es_connection = None\n"
  },
  {
    "path": "src/backend/bisheng/core/search/elasticsearch/manager.py",
    "content": "import logging\n\nfrom elasticsearch import AsyncElasticsearch, Elasticsearch\n\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.search.elasticsearch.es_connection import ESConnection\n\nlogger = logging.getLogger(__name__)\n\nstatistics_es_name = \"statistics_elasticsearch\"\n\n\nclass EsConnManager((BaseContextManager[ESConnection])):\n    name: str = \"elasticsearch\"\n\n    def __init__(self, es_hosts: str, name: str = None, **kwargs):\n\n        if name:\n            self.name = name\n\n        super().__init__(self.name, **kwargs)\n        self.es_hosts = es_hosts\n        self.kwargs = kwargs\n\n    async def _async_initialize(self) -> ESConnection:\n        \"\"\"Inisialisasi Elasticsearch Connection Manager\"\"\"\n        return ESConnection(self.es_hosts, **self.kwargs)\n\n    def _sync_initialize(self) -> ESConnection:\n        \"\"\"Synchronization Initialization\"\"\"\n        return ESConnection(self.es_hosts, **self.kwargs)\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Cleaned Elasticsearch reasourse\"\"\"\n        if self._instance:\n            await self._instance.close()\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup Elasticsearch reasourse\"\"\"\n        if self._instance:\n            self._instance.sync_close()\n\n\nasync def get_es_connection() -> AsyncElasticsearch:\n    \"\"\"Dapatkan Elasticsearch Connection Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return (await app_context.async_get_instance(EsConnManager.name)).es_connection\n    except KeyError:\n        logger.warning(f\"EsConnManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(\n                EsConnManager(es_hosts=settings.get_telemetry_conf().elasticsearch_url,\n                              **settings.get_telemetry_conf().ssl_verify\n                              ))\n            return (await app_context.async_get_instance(EsConnManager.name)).es_connection\n        except Exception as e:\n            logger.error(f\"Failed to register EsConnManager: {e}\")\n            raise KeyError(f\"EsConnManager not found in app_context and failed to register a new instance.\") from e\n\n\nasync def get_statistics_es_connection() -> AsyncElasticsearch:\n    \"\"\"Get statistics Elasticsearch Connection Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return (await app_context.async_get_instance(statistics_es_name)).es_connection\n    except KeyError:\n        logger.warning(f\"Statistics EsConnManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n\n            app_context.register_context(\n                EsConnManager(es_hosts=settings.get_telemetry_conf().elasticsearch_url,\n                              name=statistics_es_name,\n                              **settings.get_telemetry_conf().statistics_ssl_verify))\n            return (await app_context.async_get_instance(statistics_es_name)).es_connection\n        except Exception as e:\n            logger.error(f\"Failed to register Statistics EsConnManager: {e}\")\n            raise KeyError(\n                f\"Statistics EsConnManager not found in app_context and failed to register a new instance.\") from e\n\n\ndef get_es_connection_sync() -> Elasticsearch:\n    \"\"\"Synchronous fetch Elasticsearch Connection Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(EsConnManager.name).sync_es_connection\n    except KeyError:\n        logger.warning(f\"EsConnManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(\n                EsConnManager(es_hosts=settings.get_telemetry_conf().elasticsearch_url,\n                              **settings.get_telemetry_conf().ssl_verify\n                              ))\n            return app_context.sync_get_instance(EsConnManager.name).sync_es_connection\n        except Exception as e:\n            logger.error(f\"Failed to register EsConnManager: {e}\")\n            raise KeyError(f\"EsConnManager not found in app_context and failed to register a new instance.\") from e\n\n\ndef get_statistics_es_connection_sync() -> Elasticsearch:\n    \"\"\"Sync Fetch Stats Elasticsearch Connection Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(statistics_es_name).sync_es_connection\n    except KeyError:\n        logger.warning(f\"Statistics EsConnManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n\n            app_context.register_context(\n                EsConnManager(es_hosts=settings.get_telemetry_conf().elasticsearch_url,\n                              name=statistics_es_name,\n                              **settings.get_telemetry_conf().ssl_verify))\n            return app_context.sync_get_instance(statistics_es_name).sync_es_connection\n        except Exception as e:\n            logger.error(f\"Failed to register Statistics EsConnManager: {e}\")\n            raise KeyError(\n                f\"Statistics EsConnManager not found in app_context and failed to register a new instance.\") from e\n"
  },
  {
    "path": "src/backend/bisheng/core/storage/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/storage/base.py",
    "content": "from abc import ABC, abstractmethod\nfrom pathlib import Path\nfrom typing import Union, BinaryIO\n\n\nclass BaseStorage(ABC):\n    \"\"\"Base class for storage backends.\"\"\"\n\n    @abstractmethod\n    async def create_bucket(self, bucket_name: str) -> None:\n        \"\"\"Create a new storage bucket.\"\"\"\n        pass\n\n    @abstractmethod\n    def create_bucket_sync(self, bucket_name: str) -> None:\n        \"\"\"Create a new storage bucket (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def check_bucket_exists(self, bucket_name: str) -> bool:\n        \"\"\"Check if a storage bucket exists.\"\"\"\n        pass\n\n    @abstractmethod\n    def check_bucket_exists_sync(self, bucket_name: str) -> bool:\n        \"\"\"Check if a storage bucket exists (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def get_all_buckets(self) -> list:\n        \"\"\"Get a list of all storage buckets.\"\"\"\n        pass\n\n    @abstractmethod\n    def get_all_buckets_sync(self) -> list:\n        \"\"\"Get a list of all storage buckets (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def remove_bucket(self, bucket_name: str) -> None:\n        \"\"\"Remove a storage bucket.\"\"\"\n        pass\n\n    @abstractmethod\n    def remove_bucket_sync(self, bucket_name: str) -> None:\n        \"\"\"Remove a storage bucket (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def put_object(self, bucket_name: str, object_name: str, file: Union[bytes, BinaryIO, Path, str],\n                         content_type: str = None, **kwargs) -> None:\n        \"\"\"Upload an object to a storage bucket.\"\"\"\n        pass\n\n    @abstractmethod\n    def put_object_sync(self, bucket_name: str, object_name: str, file: Union[bytes, BinaryIO, Path, str],\n                        content_type: str = None, **kwargs) -> None:\n        \"\"\"Upload an object to a storage bucket (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def get_object(self, bucket_name: str, object_name: str) -> bytes:\n        \"\"\"Download an object from a storage bucket.\"\"\"\n        pass\n\n    @abstractmethod\n    def get_object_sync(self, bucket_name: str, object_name: str) -> bytes:\n        \"\"\"Download an object from a storage bucket (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def object_exists(self, bucket_name: str, object_name: str) -> bool:\n        \"\"\"Check if an object exists in a storage bucket.\"\"\"\n        pass\n\n    def object_exists_sync(self, bucket_name: str, object_name: str) -> bool:\n        \"\"\"Check if an object exists in a storage bucket (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def copy_object(self, source_bucket: str, source_object: str,\n                          dest_bucket: str, dest_object: str) -> None:\n        \"\"\"Copy an object from one storage bucket to another.\"\"\"\n        pass\n\n    @abstractmethod\n    def copy_object_sync(self, source_bucket: str, source_object: str,\n                         dest_bucket: str, dest_object: str) -> None:\n        \"\"\"Copy an object from one storage bucket to another (synchronous).\"\"\"\n        pass\n\n    @abstractmethod\n    async def remove_object(self, bucket_name: str, object_name: str) -> None:\n        \"\"\"Remove an object from a storage bucket.\"\"\"\n        pass\n\n    @abstractmethod\n    def remove_object_sync(self, bucket_name: str, object_name: str) -> None:\n        \"\"\"Remove an object from a storage bucket (synchronous).\"\"\"\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/core/storage/minio/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/core/storage/minio/minio_manager.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import Union\n\nfrom bisheng.core.config.settings import MinioConf\nfrom bisheng.core.context import BaseContextManager\nfrom bisheng.core.storage.minio.minio_storage import MinioStorage\n\nlogger = logging.getLogger(__name__)\n\n\nclass MinioManager(BaseContextManager[MinioStorage]):\n    \"\"\"Minio Global Manager\n\n    Responsible for management Minio Global lifecycle of storage, providing a unified access interface\n    Supports connection pool monitoring, health checks, and easy storage management\n    \"\"\"\n\n    name: str = \"minio\"\n\n    def __init__(\n            self,\n            minio_config: Union[MinioConf, dict],\n            **kwargs\n    ):\n        super().__init__(self.name, **kwargs)\n        self.minio_config = minio_config\n        if isinstance(self.minio_config, dict):\n            self.minio_config = MinioConf(**self.minio_config)\n\n    async def _async_initialize(self) -> MinioStorage:\n        \"\"\"Inisialisasi Minio Storage Manager\"\"\"\n        return MinioStorage(\n            self.minio_config\n        )\n\n    def _sync_initialize(self) -> MinioStorage:\n        \"\"\"Synchronization Initialization\"\"\"\n        return MinioStorage(\n            self.minio_config\n        )\n\n    def _sync_cleanup(self) -> None:\n        \"\"\"Synchronous Cleanup Minio reasourse\"\"\"\n        if self._instance:\n            self._instance.close_sync()\n\n    async def _async_cleanup(self) -> None:\n        \"\"\"Cleaned Minio reasourse\"\"\"\n        if self._instance:\n            await self._instance.close()\n\n\nasync def get_minio_storage() -> MinioStorage:\n    \"\"\"Dapatkan Minio Storage Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return await app_context.async_get_instance(MinioManager.name)\n    except KeyError:\n        logger.warning(f\"MinioManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(MinioManager(\n                minio_config=settings.object_storage.minio\n            ))\n            return await app_context.async_get_instance(MinioManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register MinioManager: {e}\")\n            raise\n\n\ndef get_minio_storage_sync() -> MinioStorage:\n    \"\"\"Synchronous fetch Minio Storage Instance\"\"\"\n    from bisheng.core.context.manager import app_context\n    try:\n        return app_context.sync_get_instance(MinioManager.name)\n    except KeyError:\n        logger.warning(f\"MinioManager not found in app_context. Registering a new instance.\")\n        try:\n            from bisheng.common.services.config_service import settings\n            app_context.register_context(MinioManager(\n                minio_config=settings.object_storage.minio\n            ))\n            return app_context.sync_get_instance(MinioManager.name)\n        except Exception as e:\n            logger.error(f\"Failed to register MinioManager: {e}\")\n            raise\n"
  },
  {
    "path": "src/backend/bisheng/core/storage/minio/minio_storage.py",
    "content": "import json\nimport os\nfrom abc import ABC\nfrom datetime import timedelta\nfrom io import BytesIO\nfrom pathlib import Path\nfrom typing import BinaryIO, Union, Optional\n\nimport minio\nimport miniopy_async\nimport miniopy_async.commonconfig as miniopy_async_commonconfig\nfrom loguru import logger\nfrom minio.commonconfig import Filter\nfrom minio.lifecycleconfig import LifecycleConfig, Rule, Expiration\n\nfrom bisheng.core.config.settings import MinioConf\nfrom bisheng.core.storage.base import BaseStorage\n\n\nclass MinioStorage(BaseStorage, ABC):\n    \"\"\"MinIO storage backend implementation.\"\"\"\n\n    def __init__(self, minio_config: MinioConf):\n        self.minio_config = minio_config\n        self.bucket = minio_config.public_bucket\n        self.tmp_bucket = minio_config.tmp_bucket\n\n        self.minio_client_sync = minio.Minio(\n            endpoint=minio_config.endpoint,\n            access_key=minio_config.access_key,\n            secret_key=minio_config.secret_key,\n            secure=minio_config.secure,\n            cert_check=minio_config.cert_check\n        )\n\n        self.minio_client = miniopy_async.Minio(\n            endpoint=minio_config.endpoint,\n            access_key=minio_config.access_key,\n            secret_key=minio_config.secret_key,\n            secure=minio_config.secure,\n            cert_check=minio_config.cert_check\n        )\n        self._init_bucket_conf()\n\n    def _init_bucket_conf(self):\n        # create need bucket\n        self.create_bucket_sync(bucket_name=self.bucket)\n        self.create_bucket_sync(bucket_name=self.tmp_bucket)\n\n        # set knowledge chunk images anonymous read policy\n        anonymous_read_policy = {\n            \"Version\": \"2012-10-17\",\n            \"Statement\": [{\n                \"Effect\": \"Allow\",\n                \"Principal\": {\n                    \"AWS\": [\"*\"]\n                },\n                \"Action\": [\"s3:GetObject\"],\n                \"Resource\": [f\"arn:aws:s3:::{self.bucket}/knowledge/images/*\",\n                             f\"arn:aws:s3:::{self.bucket}/tmp/images/*\"]\n            }]\n        }\n        try:\n            policy = self.minio_client_sync.get_bucket_policy(self.bucket)\n        except Exception as e:\n            if str(e).find('NoSuchBucketPolicy') == -1:\n                raise e\n            self.minio_client_sync.set_bucket_policy(self.bucket, json.dumps(anonymous_read_policy))\n\n        # set tmp bucket lifecycle\n        if not self.minio_client_sync.get_bucket_lifecycle(self.tmp_bucket):\n            lifecycle_conf = LifecycleConfig([\n                Rule(\n                    'Enabled',\n                    rule_filter=Filter(prefix='*'),\n                    rule_id='rule1',\n                    expiration=Expiration(days=3),\n                ),\n            ], )\n            self.minio_client_sync.set_bucket_lifecycle(self.tmp_bucket, lifecycle_conf)\n\n    async def create_bucket(self, bucket_name: str) -> None:\n        if not await self.minio_client.bucket_exists(bucket_name):\n            await self.minio_client.make_bucket(bucket_name)\n\n    def create_bucket_sync(self, bucket_name: str) -> None:\n        if not self.minio_client_sync.bucket_exists(bucket_name):\n            self.minio_client_sync.make_bucket(bucket_name)\n\n    async def check_bucket_exists(self, bucket_name: str) -> bool:\n        return await self.minio_client.bucket_exists(bucket_name)\n\n    def check_bucket_exists_sync(self, bucket_name: str) -> bool:\n        return self.minio_client_sync.bucket_exists(bucket_name)\n\n    async def get_all_buckets(self) -> list:\n        return await self.minio_client.list_buckets()\n\n    def get_all_buckets_sync(self) -> list:\n        return self.minio_client_sync.list_buckets()\n\n    async def remove_bucket(self, bucket_name: str) -> None:\n        if await self.minio_client.bucket_exists(bucket_name):\n            await self.minio_client.remove_bucket(bucket_name)\n\n    def remove_bucket_sync(self, bucket_name: str) -> None:\n        if self.minio_client_sync.bucket_exists(bucket_name):\n            self.minio_client_sync.remove_bucket(bucket_name)\n\n    async def put_object(self, *, bucket_name: Optional[str] = None, object_name: str,\n                         file: Union[bytes, BinaryIO, Path, str],\n                         content_type: str = \"application/octet-stream\", **kwargs) -> None:\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        #\n        if isinstance(file, (Path, str)):\n            file_path = str(file)\n            await self.minio_client.fput_object(\n                bucket_name=bucket_name,\n                object_name=object_name,\n                file_path=file_path,\n                content_type=content_type,\n                **kwargs\n            )\n            return\n\n        data_stream = file\n\n        if isinstance(file, bytes):\n            data_stream = BytesIO(file)\n\n        if 'length' not in kwargs:\n            try:\n                if hasattr(data_stream, \"getbuffer\"):\n                    kwargs['length'] = data_stream.getbuffer().nbytes\n\n                elif hasattr(data_stream, \"fileno\"):\n                    kwargs['length'] = os.fstat(data_stream.fileno()).st_size\n\n                else:\n                    data_stream.seek(0, 2)\n                    kwargs['length'] = data_stream.tell()\n                    data_stream.seek(0)\n\n            except Exception as e:\n                raise ValueError(f\"Could not determine file length for upload: {str(e)}\")\n\n        if hasattr(data_stream, \"seek\") and callable(data_stream.seek):\n            data_stream.seek(0)\n\n        await self.minio_client.put_object(\n            bucket_name=bucket_name,\n            object_name=object_name,\n            data=data_stream,\n            content_type=content_type,\n            **kwargs\n        )\n\n    def put_object_sync(self, *, bucket_name: Optional[str] = None, object_name: str,\n                        file: Union[bytes, BinaryIO, Path, str],\n                        content_type: str = \"application/octet-stream\", **kwargs) -> None:\n\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        if isinstance(file, (Path, str)):\n            file_path = str(file)\n            self.minio_client_sync.fput_object(\n                bucket_name=bucket_name,\n                object_name=object_name,\n                file_path=file_path,\n                content_type=content_type,\n                **kwargs\n            )\n            return\n\n        data_stream = file\n\n        if isinstance(file, bytes):\n            data_stream = BytesIO(file)\n\n        if 'length' not in kwargs:\n            try:\n                if hasattr(data_stream, \"getbuffer\"):\n                    kwargs['length'] = data_stream.getbuffer().nbytes\n\n                elif hasattr(data_stream, \"fileno\"):\n                    try:\n                        kwargs['length'] = os.fstat(data_stream.fileno()).st_size\n                    except Exception:\n\n                        data_stream.seek(0, 2)\n                        kwargs['length'] = data_stream.tell()\n                        data_stream.seek(0)\n                else:\n                    data_stream.seek(0, 2)\n                    kwargs['length'] = data_stream.tell()\n                    data_stream.seek(0)\n\n            except Exception as e:\n                raise ValueError(f\"Could not determine file length for upload: {str(e)}\")\n\n        if hasattr(data_stream, \"seek\") and callable(data_stream.seek):\n            data_stream.seek(0)\n\n        self.minio_client_sync.put_object(\n            bucket_name=bucket_name,\n            object_name=object_name,\n            data=data_stream,\n            content_type=content_type,\n            **kwargs\n        )\n\n    async def put_object_tmp(self, object_name: str, file: Union[bytes, BinaryIO, Path, str],\n                             content_type: str = \"application/octet-stream\", **kwargs) -> None:\n        await self.put_object(\n            bucket_name=self.tmp_bucket,\n            object_name=object_name,\n            file=file,\n            content_type=content_type,\n            **kwargs\n        )\n\n    def put_object_tmp_sync(self, object_name: str, file: Union[bytes, BinaryIO, Path, str],\n                            content_type: str = \"application/octet-stream\", **kwargs) -> None:\n        self.put_object_sync(\n            bucket_name=self.tmp_bucket,\n            object_name=object_name,\n            file=file,\n            content_type=content_type,\n            **kwargs\n        )\n\n    async def get_object(self, bucket_name: Optional[str] = None, object_name: str = None) -> bytes | None:\n\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        if object_name is None:\n            raise ValueError(\"get_object: object_name must be provided\")\n\n        response = await self.minio_client.get_object(bucket_name, object_name)\n\n        try:\n            data = await response.read()\n            return data\n        except Exception:\n            raise\n\n        finally:\n            response.close()\n\n    def get_object_sync(self, bucket_name: Optional[str] = None, object_name: str = None) -> bytes | None:\n\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        if object_name is None:\n            raise ValueError(\"get_object_sync: object_name must be provided\")\n\n        response = self.minio_client_sync.get_object(bucket_name, object_name)\n\n        try:\n            data = response.read()\n            return data\n        except Exception:\n            raise\n\n        finally:\n            response.close()\n            response.release_conn()\n\n    async def object_exists(self, bucket_name: Optional[str] = None, object_name: str = None) -> bool:\n\n        if not bucket_name:\n            bucket_name = self.bucket\n\n        if not object_name:\n            logger.warning(\"object_exists_sync: object_name must be provided\")\n            return False\n\n        try:\n            await self.minio_client.stat_object(bucket_name, object_name)\n            return True\n        except Exception as e:\n            if 'code: NoSuchKey' in str(e):\n                return False\n            raise e\n\n    def object_exists_sync(self, bucket_name: Optional[str] = None, object_name: str = None) -> bool:\n\n        if not bucket_name:\n            bucket_name = self.bucket\n\n        if not object_name:\n            logger.warning(\"object_exists_sync: object_name must be provided\")\n            return False\n\n        try:\n            self.minio_client_sync.stat_object(bucket_name, object_name)\n            return True\n        except Exception as e:\n            if 'code: NoSuchKey' in str(e):\n                return False\n            raise e\n\n    async def copy_object(self, source_bucket: str = None, source_object: str = None,\n                          dest_bucket: str = None, dest_object: str = None) -> None:\n\n        if source_bucket is None:\n            source_bucket = self.tmp_bucket\n\n        if dest_bucket is None:\n            dest_bucket = self.bucket\n\n        source = miniopy_async_commonconfig.CopySource(\n            bucket_name=source_bucket,\n            object_name=source_object\n        )\n        await self.minio_client.copy_object(\n            bucket_name=dest_bucket,\n            object_name=dest_object,\n            source=source\n        )\n\n    def copy_object_sync(self, source_bucket: str = None, source_object: str = None,\n                         dest_bucket: str = None, dest_object: str = None) -> None:\n\n        if source_bucket is None:\n            source_bucket = self.tmp_bucket\n\n        if dest_bucket is None:\n            dest_bucket = self.bucket\n        source = minio.commonconfig.CopySource(\n            bucket_name=source_bucket,\n            object_name=source_object\n        )\n\n        self.minio_client_sync.copy_object(\n            bucket_name=dest_bucket,\n            object_name=dest_object,\n            source=source\n        )\n\n    async def remove_object(self, bucket_name: Optional[str] = None, object_name: str = None) -> None:\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        if object_name is None:\n            raise ValueError(\"remove_object: object_name must be provided\")\n\n        await self.minio_client.remove_object(bucket_name, object_name)\n\n    def remove_object_sync(self, bucket_name: Optional[str] = None, object_name: str = None) -> None:\n        if bucket_name is None:\n            bucket_name = self.bucket\n\n        if object_name is None:\n            raise ValueError(\"remove_object_sync: object_name must be provided\")\n\n        self.minio_client_sync.remove_object(bucket_name, object_name)\n\n    async def get_share_link(self, object_name, bucket=None, clear_host: bool = True, expire_days: int = 7) -> str:\n        \"\"\"\n        DapatkanminioFile sharing link\n        :param object_name:\n        :param bucket:\n        :param clear_host:  Do you want to removehost<g id=\"Bold\">Address:</g> urlVia FrontendnginxProxy Access\n        :param expire_days:  Link expiration time,  days\n        :return:\n        \"\"\"\n\n        if bucket is None:\n            bucket = self.bucket\n        # filepath \"/\" There will be at the beginningnginxQuestions\n        if object_name[0] == '/':\n            object_name = object_name[1:]\n\n        share_link = await self.minio_client.presigned_get_object(bucket, object_name,\n                                                                  expires=timedelta(days=expire_days))\n        if clear_host:\n            share_link = self.clear_minio_share_host(share_link)\n        return share_link\n\n    def get_share_link_sync(self, object_name, bucket=None, clear_host: bool = True, expire_days: int = 7) -> str:\n        \"\"\"\n        Synchronous fetchminioFile sharing link, Default Removalhost<g id=\"Bold\">Address:</g> urlwill go through the front endnginxProxy Access\n        :param object_name:\n        :param bucket:\n        :param clear_host:  Do you want to removehost<g id=\"Bold\">Address:</g> urlVia FrontendnginxProxy Access\n        :param expire_days:  Link expiration time,  days\n        :return:\n        \"\"\"\n\n        if bucket is None:\n            bucket = self.bucket\n        # filepath \"/\" There will be at the beginningnginxQuestions\n        if object_name[0] == '/':\n            object_name = object_name[1:]\n\n        share_link = self.minio_client_sync.presigned_get_object(bucket, object_name,\n                                                                 expires=timedelta(days=expire_days))\n        if clear_host:\n            share_link = self.clear_minio_share_host(share_link)\n        return share_link\n\n    def get_minio_share_host(self) -> str:\n        \"\"\"\n        Dapatkanminio share host\n        \"\"\"\n        minio_share = self.minio_config.sharepoint\n        if self.minio_config.share_schema:\n            return f'https://{minio_share}'\n        return f'http://{minio_share}'\n\n    def clear_minio_share_host(self, file_url: str):\n        \"\"\"\n         TODO The logical solution is to deploy ahttpsright of privacyminioUse with front-end\n         to be erasedurlhitting the nail on the headminio share<g id=\"Bold\">Address:</g> Let the front end throughnginxProxy to access resources\n        \"\"\"\n        share_host = self.get_minio_share_host()\n\n        return file_url.replace(share_host, '')\n\n    async def close(self) -> None:\n        \"\"\"Close Minio Client link\"\"\"\n        await self.minio_client.close_session()\n\n    def close_sync(self) -> None:\n        \"\"\"Sync off Minio Client link\"\"\"\n        del self.minio_client_sync\n"
  },
  {
    "path": "src/backend/bisheng/core/vectorstore/__init__.py",
    "content": "from langchain_elasticsearch import ElasticsearchStore, AsyncElasticsearchStore\nfrom langchain_elasticsearch.vectorstores import BM25Strategy, AsyncBM25Strategy\nfrom langchain_milvus import Milvus\n\n__all__ = [\n    'Milvus',\n    'ElasticsearchStore',\n    'AsyncElasticsearchStore',\n    'BM25Strategy',\n    'AsyncBM25Strategy'\n]\n"
  },
  {
    "path": "src/backend/bisheng/core/vectorstore/ensemble_retriever.py",
    "content": "import asyncio\nfrom typing import List, Dict, Any, Sequence, Coroutine, Optional\n\nfrom pydantic import Field, BaseModel, PrivateAttr, ConfigDict\nfrom langchain_core.retrievers import BaseRetriever\nfrom langchain_core.vectorstores import VectorStore\nfrom langchain_core.documents import Document\nfrom langchain_core.callbacks import (\n    CallbackManagerForRetrieverRun,\n    AsyncCallbackManagerForRetrieverRun\n)\nfrom langchain_core.runnables import RunnableConfig\n\nfrom bisheng.core.ai.rerank.rrf_rerank import RRFRerank\n\n\n# Input Retriever Parameter Model\nclass VectorRetrieverParams(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    vector_store: VectorStore = Field(..., description=\"Vector Library Instance\")\n    search_kwargs: Dict = Field(default_factory=dict, description=\"Retrieve Parameters\")\n    weight: float = Field(default=1.0, description=\"Retriever Weight\")\n\n\nclass RRFMultiVectorRetriever(BaseRetriever):\n    \"\"\"\n    predicated upon RRF (Reciprocal Rank Fusion) Multiple vector retriever.\n    Sync enabled/Asynchronous calls that support character-length-based context truncation.\n    \"\"\"\n\n    vector_store_params: List[VectorRetrieverParams] = Field(\n        ..., description=\"Multiple vector libraries and their retrieval parameters and weights\"\n    )\n    top_k: int = Field(default=5, description=\"The final number of documents returned. Note: Recommended settings >0 Value of\")\n    rrf_c: int = Field(default=60, description=\"RRF constant c, smooth ranking weights\")\n    remove_zero_score: bool = Field(default=True, description=\"Remove or not RRF Score is 0 Documents\")\n    max_context_length: int = Field(default=0, description=\"Returns the maximum total character length of a document,0Indicates unlimited\")\n\n    _rrf_rerank: RRFRerank = PrivateAttr()\n    _retrievers: List[BaseRetriever] = PrivateAttr(default_factory=list)\n\n    def __init__(self, **data: Any):\n        super().__init__(**data)\n\n        weights = []\n        self._retrievers = []\n\n        for param in self.vector_store_params:\n            weights.append(param.weight)\n            # Convert To retriever\n            self._retrievers.append(\n                param.vector_store.as_retriever(search_kwargs=param.search_kwargs)\n            )\n\n        # Inisialisasi RRF Reorder\n        self._rrf_rerank = RRFRerank(\n            retrievers=self._retrievers,\n            weights=weights,\n            c=self.rrf_c,\n            remove_zero_score=self.remove_zero_score\n        )\n\n    def _get_relevant_documents(\n            self, query: str, *, run_manager: CallbackManagerForRetrieverRun, **kwargs\n    ) -> Sequence[Document]:\n        docs_lists = []\n        # Pass-through callback configuration\n        run_config: RunnableConfig = {\"callbacks\": run_manager.get_child()}\n\n        for retriever in self._retrievers:\n            try:\n                tmp_docs = retriever.invoke(query, config=run_config, **kwargs)\n                docs_lists.append(tmp_docs)\n            except Exception as e:\n                # Log exceptions but continue to execute other retrievers\n                run_manager.on_text(f\"Retriever {retriever} failed with error: {e}\", end=\"\\n\")\n                docs_lists.append([])\n\n        # Recall RRF Reorder\n        reranked_docs = self._rrf_rerank.compress_documents(query=query, documents=docs_lists)\n\n        return self._post_process_documents(reranked_docs)\n\n    async def _aget_relevant_documents(\n            self, query: str, *, run_manager: AsyncCallbackManagerForRetrieverRun, **kwargs\n    ) -> Sequence[Document]:\n        tasks: List[Coroutine] = []\n        run_config: RunnableConfig = {\"callbacks\": run_manager.get_child()}\n\n        for retriever in self._retrievers:\n            tasks.append(\n                retriever.ainvoke(query, config=run_config, **kwargs)\n            )\n\n        # Concurrent execution\n        results = await asyncio.gather(*tasks, return_exceptions=True)\n\n\n        docs_lists = []\n        for idx, result in enumerate(results):\n            if isinstance(result, Exception):\n                # Log exceptions but continue to execute other retrievers\n                await run_manager.on_text(f\"Retriever {self._retrievers[idx]} failed with error: {result}\", end=\"\\n\")\n                docs_lists.append([])\n            else:\n                docs_lists.append(result)\n\n        # RRF Rearrangements\n        reranked_docs = self._rrf_rerank.compress_documents(query=query, documents=docs_lists)\n\n        return self._post_process_documents(reranked_docs)\n\n    def _post_process_documents(self, documents: Sequence[Document]) -> List[Document]:\n        \"\"\"cut off TopK And Length filtering\"\"\"\n        # Top K cut off\n        if self.top_k > 0:\n            documents = documents[:self.top_k]\n\n        # Length filtering\n        return self._filter_by_context_length(list(documents))\n\n    def _filter_by_context_length(self, documents: List[Document]) -> List[Document]:\n        \"\"\"according max_context_length Filter Documents List\"\"\"\n        if self.max_context_length <= 0:\n            return documents\n\n        curr_size = 0\n        filtered_docs = []\n        for doc in documents:\n            doc_size = len(doc.page_content)\n            # Determine if the limit has been exceeded after joining the document\n            if curr_size + doc_size <= self.max_context_length:\n                filtered_docs.append(doc)\n                curr_size += doc_size\n            else:\n                break\n        return filtered_docs\n"
  },
  {
    "path": "src/backend/bisheng/core/vectorstore/multi_retriever.py",
    "content": "import asyncio\nfrom typing import List, Dict\n\nfrom langchain_core.callbacks import CallbackManagerForRetrieverRun\nfrom langchain_core.documents import Document\nfrom langchain_core.retrievers import BaseRetriever\nfrom langchain_core.vectorstores import VectorStore\n\n\nclass MultiRetriever(BaseRetriever):\n    \"\"\" A retriever that combines multiple retrievers. \"\"\"\n    vectors: List[VectorStore]\n    search_kwargs: List[Dict]\n    finally_k: int = 0\n\n    def _get_relevant_documents(\n            self, query: str, *, run_manager: CallbackManagerForRetrieverRun, **kwargs\n    ) -> list[Document]:\n        docs: List[tuple[Document, float]] = []\n        for index, vector in enumerate(self.vectors):\n            kwargs_ = self.search_kwargs[index] | kwargs\n            tmp_docs = vector.similarity_search_with_score(query, **kwargs_)\n            docs.extend(tmp_docs)\n        return self.parse_doc_with_score(docs)\n\n    async def _aget_relevant_documents(\n            self, query: str, *, run_manager: CallbackManagerForRetrieverRun, **kwargs\n    ) -> list[Document]:\n        tasks = []\n        for index, vector in enumerate(self.vectors):\n            kwargs_ = self.search_kwargs[index] | kwargs\n            tasks.append(vector.asimilarity_search_with_score(query, **kwargs_))\n\n        results = await asyncio.gather(*tasks)\n\n        docs: List[tuple[Document, float]] = []\n        for tmp_docs in results:\n            docs.extend(tmp_docs)\n\n        return self.parse_doc_with_score(docs)\n\n    def parse_doc_with_score(self, docs_with_score: List[tuple[Document, float]]) -> List[Document]:\n        \"\"\" parse documents with score to documents only \"\"\"\n        docs_with_score.sort(key=lambda x: x[1])\n        if self.finally_k > 0:\n            docs_with_score = docs_with_score[:self.finally_k]\n        return [doc for doc, _ in docs_with_score]\n"
  },
  {
    "path": "src/backend/bisheng/custom/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/custom/customs.py",
    "content": "from bisheng.template import frontend_node\n\n# These should always be instantiated\nCUSTOM_NODES = {\n    # \"prompts\": {\n    #     \"ZeroShotPrompt\": frontend_node.prompts.ZeroShotPromptNode(),\n    # },\n    'tools': {\n        'PythonFunctionTool': frontend_node.tools.PythonFunctionToolNode(),\n        'PythonFunction': frontend_node.tools.PythonFunctionNode(),\n        'Tool': frontend_node.tools.ToolNode(),\n    },\n    'agents': {\n        'JsonAgent': frontend_node.agents.JsonAgentNode(),\n        # \"CSVAgent\": frontend_node.agents.CSVAgentNode(),\n        'AgentInitializer': frontend_node.agents.InitializeAgentNode(),\n        'VectorStoreAgent': frontend_node.agents.VectorStoreAgentNode(),\n        'VectorStoreRouterAgent': frontend_node.agents.VectorStoreRouterAgentNode(),\n        # \"SQLAgent\": frontend_node.agents.SQLAgentNode(),\n    },\n    'utilities': {\n        'SQLDatabase': frontend_node.agents.SQLDatabaseNode(),\n    },\n    'memories': {\n        'PostgresChatMessageHistory':\n        frontend_node.memories.PostgresChatMessageHistoryFrontendNode(),\n        'MongoDBChatMessageHistory':\n        frontend_node.memories.MongoDBChatMessageHistoryFrontendNode(),\n    },\n    'chains': {\n        'SeriesCharacterChain': frontend_node.chains.SeriesCharacterChainNode(),\n        'TimeTravelGuideChain': frontend_node.chains.TimeTravelGuideChainNode(),\n        'MidJourneyPromptChain': frontend_node.chains.MidJourneyPromptChainNode(),\n        'load_qa_chain': frontend_node.chains.CombineDocsChainNode(),\n        'load_summarize_chain': frontend_node.chains.SummarizeDocsChain(),\n    },\n    'embeddings': {\n        'OpenAIProxyEmbedding': frontend_node.embeddings.OpenAIProxyEmbedding(),\n    },\n    'input_output': {\n        'InputNode': frontend_node.input_output.InputNode(),\n        'OutputNode': frontend_node.input_output.OutputNode(),\n        'InputFileNode': frontend_node.input_output.InputFileNode(),\n    },\n    # 'output_parsers': {\n    #     'RouterOutputParser': frontend_node.output_parsers.RouterOutputParserFrontendNode(),\n    # }\n}\n\n\ndef get_custom_nodes(node_type: str):\n    \"\"\"Get custom nodes.\"\"\"\n    return CUSTOM_NODES.get(node_type, {})\n"
  },
  {
    "path": "src/backend/bisheng/database/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/database/base.py",
    "content": "import uuid\nfrom sqlalchemy import func, Select\nfrom sqlmodel.ext.asyncio.session import AsyncSession\nfrom sqlmodel import Session\n\n\ndef get_count(session: Session, q: Select) -> int:\n    \"\"\"\n    Number of fetch query results\n    :param session:\n    :param q:\n    :return:\n    \"\"\"\n    count_q = q.with_only_columns(func.count()).order_by(None).select_from(q.get_final_froms()[0])\n    iterator = session.exec(count_q)\n    for count in iterator:\n        return count\n    return 0\n\n\nasync def async_get_count(session: AsyncSession, q: Select) -> int:\n    \"\"\"\n    Get the number of asynchronous query results\n    :param session:\n    :param q:\n    :return:\n    \"\"\"\n    count_q = q.with_only_columns(func.count()).order_by(None).select_from(q.get_final_froms()[0])\n    iterator = await session.exec(count_q)\n    for count in iterator:\n        return count\n    return 0\n\n\ndef uuid_hex() -> str:\n    \"\"\"\n    Generate oneUUIDhexadecimal string\n    :return: UUIDhexadecimal string\n    \"\"\"\n    return uuid.uuid4().hex"
  },
  {
    "path": "src/backend/bisheng/database/constants.py",
    "content": "from enum import Enum\n\n# Default Normal User Role'sID\nDefaultRole = 2\n# Super Admin RoleID\nAdminRole = 1\n\n\n# Some of the basiccategoryType\nclass MessageCategory(Enum):\n    QUESTION = 'question'  # User Questions\n    ANSWER = 'answer'  # Answers\n"
  },
  {
    "path": "src/backend/bisheng/database/data/component.json",
    "content": "[{\"单文档问答\":{\"id\":\"RetrievalQA-3568b\",\"type\":\"InputFileNode\",\"node\":{\"output_types\":[],\"display_name\":\"单文档问答\",\"documentation\":\"\",\"base_classes\":[\"BaseRetrievalQA\",\"RetrievalQA\",\"Chain\",\"function\"],\"description\":\"Chain for question-answering against an index.\",\"template\":{\"token_max_CombineDocsChain-Pud2p\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\",\"proxy\":{\"id\":\"CombineDocsChain-Pud2p\",\"field\":\"token_max\"}},\"chain_type_CombineDocsChain-Pud2p\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-Pud2p\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"tags_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"memory_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"memory\"},\"display_name\":\"Memory\"},\"verbose_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_key_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"input_node_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"input_node\"}},\"output_key_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"return_source_documents_RetrievalQA-qH6Mk\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-qH6Mk\",\"field\":\"return_source_documents\"},\"display_name\":\"Return Source Documents\"},\"proxy_url_OpenAIProxyEmbedding-yvld7\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"proxy_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\",\"proxy\":{\"id\":\"OpenAIProxyEmbedding-yvld7\",\"field\":\"proxy_url\"},\"display_name\":\"Proxy Url\"},\"file_path_InputFileNode-jdLkB\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"file\",\"value\":\"\",\"l2_name\":\"file_path\",\"advanced\":true,\"password\":false,\"required\":false,\"suffixes\":[\".html\",\".md\",\".txt\",\".jpg\",\".png\",\".jpeg\",\".csv\",\".doc\",\".docx\",\".pdf\",\".ppt\",\".pptx\",\".xlsx\",\".tiff\"],\"fileTypes\":[\"html\",\"md\",\"txt\",\"jpg\",\"png\",\"jpeg\",\"csv\",\"doc\",\"docx\",\"pdf\",\"ppt\",\"pptx\",\"tiff\",\"xlsx\"],\"file_path\":null,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"输入内容\",\"proxy\":{\"id\":\"InputFileNode-jdLkB\",\"field\":\"file_path\"}},\"n_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-rnE4s\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-rnE4s\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"drop_old_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"drop_old\"},\"display_name\":\"Drop Old\"},\"metadatas_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_params_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"index_params\"},\"display_name\":\"Index Params\"},\"search_kwargs_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"search_params_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"search_params\"},\"display_name\":\"Search Params\"},\"collection_name_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"collection_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"collection_name\"},\"display_name\":\"Collection Name\"},\"connection_args_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"connection_args\"},\"display_name\":\"Connection Args\"},\"consistency_level_Milvus-T3kRH\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-T3kRH\",\"field\":\"consistency_level\"},\"display_name\":\"Consistency Level\"},\"metadata_ElemUnstructuredLoaderV0-LAGXM\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\",\"proxy\":{\"id\":\"ElemUnstructuredLoaderV0-LAGXM\",\"field\":\"metadata\"}},\"unstructured_api_url_ElemUnstructuredLoaderV0-LAGXM\":{\"info\":\"\",\"list\":false,\"name\":\"unstructured_api_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":true,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"unstructured_api_url\",\"proxy\":{\"id\":\"ElemUnstructuredLoaderV0-LAGXM\",\"field\":\"unstructured_api_url\"}},\"chunk_size_RecursiveCharacterTextSplitter-a7fc9\":{\"info\":\"\",\"list\":false,\"name\":\"chunk_size\",\"show\":true,\"type\":\"int\",\"value\":1000,\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Chunk Size\",\"proxy\":{\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"field\":\"chunk_size\"}},\"separators_RecursiveCharacterTextSplitter-a7fc9\":{\"info\":\"\",\"list\":false,\"name\":\"separators\",\"show\":true,\"type\":\"str\",\"value\":\"\\\\n\\\\n\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Separator\",\"proxy\":{\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"field\":\"separators\"}},\"chunk_overlap_RecursiveCharacterTextSplitter-a7fc9\":{\"info\":\"\",\"list\":false,\"name\":\"chunk_overlap\",\"show\":true,\"type\":\"int\",\"value\":200,\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Chunk Overlap\",\"proxy\":{\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"field\":\"chunk_overlap\"}},\"separator_type_RecursiveCharacterTextSplitter-a7fc9\":{\"info\":\"\",\"list\":true,\"name\":\"separator_type\",\"show\":true,\"type\":\"str\",\"value\":\"Text\",\"options\":[\"Text\",\"cobol\",\"cpp\",\"csharp\",\"go\",\"html\",\"java\",\"js\",\"kotlin\",\"latex\",\"markdown\",\"php\",\"proto\",\"python\",\"rst\",\"ruby\",\"rust\",\"scala\",\"sol\",\"swift\",\"ts\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Separator Type\",\"proxy\":{\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"field\":\"separator_type\"}}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":376,\"id\":\"CombineDocsChain-Pud2p\",\"type\":\"genericNode\",\"position\":{\"x\":1222.7195691813163,\"y\":-12.131560981144517},\"data\":{\"id\":\"CombineDocsChain-Pud2p\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"load_qa_chain\",\"token_max\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\"},\"chain_type\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"CombineDocsChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1222.7195691813163,\"y\":-12.131560981144517}},{\"width\":384,\"height\":316,\"id\":\"RetrievalQA-qH6Mk\",\"type\":\"genericNode\",\"position\":{\"x\":1898.9908793385102,\"y\":150.74108594665665},\"data\":{\"id\":\"RetrievalQA-qH6Mk\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"RetrievalQA\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"combine_documents_chain\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_documents_chain\",\"show\":true,\"type\":\"BaseCombineDocumentsChain\",\"l2_name\":\"combine_documents_chain\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"BaseRetrievalQA\",\"RetrievalQA\",\"Chain\",\"function\"],\"display_name\":\"RetrievalQA\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"},\"type\":\"RetrievalQA\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1898.9908793385102,\"y\":150.74108594665665}},{\"width\":384,\"height\":172,\"id\":\"OpenAIProxyEmbedding-yvld7\",\"type\":\"genericNode\",\"position\":{\"x\":585.3522336200281,\"y\":1118.8504631949986},\"data\":{\"id\":\"OpenAIProxyEmbedding-yvld7\",\"node\":{\"template\":{\"_type\":\"proxy_embedding\",\"proxy_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"proxy_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\"}},\"description\":\" 使用自建的embedding服务使用openai进行embed \",\"base_classes\":[\"Embeddings\"],\"display_name\":\"OpenAIProxyEmbedding\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"OpenAIProxyEmbedding\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":585.3522336200281,\"y\":1118.8504631949986}},{\"width\":384,\"height\":254,\"id\":\"InputFileNode-jdLkB\",\"type\":\"genericNode\",\"position\":{\"x\":-67.64298275986698,\"y\":405.6605420525051},\"data\":{\"id\":\"InputFileNode-jdLkB\",\"node\":{\"template\":{\"_type\":\"InputFileNode\",\"file_path\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"file\",\"value\":\"\",\"l2_name\":\"file_path\",\"advanced\":false,\"password\":false,\"required\":false,\"suffixes\":[\".html\",\".md\",\".txt\",\".jpg\",\".png\",\".jpeg\",\".csv\",\".doc\",\".docx\",\".pdf\",\".ppt\",\".pptx\",\".xlsx\",\".tiff\"],\"fileTypes\":[\"html\",\"md\",\"txt\",\"jpg\",\"png\",\"jpeg\",\"csv\",\"doc\",\"docx\",\"pdf\",\"ppt\",\"pptx\",\"tiff\",\"xlsx\"],\"file_path\":null,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"输入内容\"}},\"description\":\"输入节点，用来自动对接输入\",\"base_classes\":[\"fileNode\"],\"display_name\":\"InputFileNode\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"InputFileNode\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-67.64298275986698,\"y\":405.6605420525051}},{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-rnE4s\",\"type\":\"genericNode\",\"position\":{\"x\":598.1704660724836,\"y\":-139.8508856646713},\"data\":{\"id\":\"ProxyChatLLM-rnE4s\",\"node\":{\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"BaseLanguageModel\",\"ProxyChatLLM\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":598.1704660724836,\"y\":-139.8508856646713}},{\"width\":384,\"height\":346,\"id\":\"Milvus-T3kRH\",\"type\":\"genericNode\",\"position\":{\"x\":1356.1418476973313,\"y\":809.6096821830637},\"data\":{\"id\":\"Milvus-T3kRH\",\"node\":{\"template\":{\"_type\":\"Milvus\",\"drop_old\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":true,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"collection_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"collection_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\"},\"connection_args\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":true,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"consistency_level\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Create a Milvus collection, indexes it with HNSW, and insert data.\",\"base_classes\":[\"VectorStore\",\"Milvus\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Milvus\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"Milvus\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1356.1418476973313,\"y\":809.6096821830637}},{\"width\":384,\"height\":392,\"id\":\"ElemUnstructuredLoaderV0-LAGXM\",\"type\":\"genericNode\",\"position\":{\"x\":370.3915867302851,\"y\":393.863205643299},\"data\":{\"id\":\"ElemUnstructuredLoaderV0-LAGXM\",\"node\":{\"template\":{\"_type\":\"ElemUnstructuredLoaderV0\",\"metadata\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\"},\"file_path\":{\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"fileNode\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"suffixes\":[\".html\",\".md\",\".txt\",\".jpg\",\".png\",\".jpeg\",\".csv\",\".doc\",\".docx\",\".pdf\",\".ppt\",\".pptx\",\".xlsx\",\".tiff\"],\"fileTypes\":[\"html\",\"md\",\"txt\",\"jpg\",\"png\",\"jpeg\",\"csv\",\"doc\",\"docx\",\"pdf\",\"ppt\",\"pptx\",\"tiff\",\"xlsx\"],\"multiline\":false,\"placeholder\":\"\"},\"unstructured_api_url\":{\"info\":\"\",\"list\":false,\"name\":\"unstructured_api_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":true,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"unstructured_api_url\"}},\"description\":\"Loads a PDF with pypdf and chunks at character level. dummy version\",\"base_classes\":[\"Document\"],\"display_name\":\"ElemUnstructuredLoaderV0\",\"output_types\":[\"Document\"],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ElemUnstructuredLoaderV0\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":370.3915867302851,\"y\":393.863205643299}},{\"width\":384,\"height\":540,\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"type\":\"genericNode\",\"position\":{\"x\":840.0634079971517,\"y\":439.4498034537745},\"data\":{\"id\":\"RecursiveCharacterTextSplitter-a7fc9\",\"node\":{\"template\":{\"_type\":\"RecursiveCharacterTextSplitter\",\"documents\":{\"info\":\"\",\"list\":false,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"chunk_size\":{\"info\":\"\",\"list\":false,\"name\":\"chunk_size\",\"show\":true,\"type\":\"int\",\"value\":1000,\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Chunk Size\"},\"separators\":{\"info\":\"\",\"list\":false,\"name\":\"separators\",\"show\":true,\"type\":\"str\",\"value\":\"\\\\n\\\\n\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Separator\"},\"chunk_overlap\":{\"info\":\"\",\"list\":false,\"name\":\"chunk_overlap\",\"show\":true,\"type\":\"int\",\"value\":200,\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Chunk Overlap\"},\"separator_type\":{\"info\":\"\",\"list\":true,\"name\":\"separator_type\",\"show\":true,\"type\":\"str\",\"value\":\"Text\",\"options\":[\"Text\",\"cobol\",\"cpp\",\"csharp\",\"go\",\"html\",\"java\",\"js\",\"kotlin\",\"latex\",\"markdown\",\"php\",\"proto\",\"python\",\"rst\",\"ruby\",\"rust\",\"scala\",\"sol\",\"swift\",\"ts\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Separator Type\"}},\"description\":\"Splitting text by recursively look at characters.\",\"base_classes\":[\"Document\"],\"display_name\":\"RecursiveCharacterTextSplitter\",\"output_types\":[\"Document\"],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"},\"type\":\"RecursiveCharacterTextSplitter\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":840.0634079971517,\"y\":439.4498034537745}}],\"edges\":[{\"source\":\"CombineDocsChain-Pud2p\",\"target\":\"RetrievalQA-qH6Mk\",\"sourceHandle\":\"CombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function\",\"targetHandle\":\"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-qH6Mk\",\"id\":\"reactflow__edge-CombineDocsChain-Pud2pCombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function-RetrievalQA-qH6MkBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-qH6Mk\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-rnE4s\",\"target\":\"CombineDocsChain-Pud2p\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-rnE4s|BaseLanguageModel|ProxyChatLLM|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|CombineDocsChain-Pud2p\",\"id\":\"reactflow__edge-ProxyChatLLM-rnE4sProxyChatLLM|ProxyChatLLM-rnE4s|BaseLanguageModel|ProxyChatLLM|BaseChatModel|BaseLLM-CombineDocsChain-Pud2pBaseLanguageModel|llm|CombineDocsChain-Pud2p\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"Milvus-T3kRH\",\"target\":\"RetrievalQA-qH6Mk\",\"sourceHandle\":\"Milvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|retriever|RetrievalQA-qH6Mk\",\"id\":\"reactflow__edge-Milvus-T3kRHMilvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-qH6MkBaseRetriever|retriever|RetrievalQA-qH6Mk\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"OpenAIProxyEmbedding-yvld7\",\"target\":\"Milvus-T3kRH\",\"sourceHandle\":\"OpenAIProxyEmbedding|OpenAIProxyEmbedding-yvld7|Embeddings\",\"targetHandle\":\"Embeddings|embedding|Milvus-T3kRH\",\"id\":\"reactflow__edge-OpenAIProxyEmbedding-yvld7OpenAIProxyEmbedding|OpenAIProxyEmbedding-yvld7|Embeddings-Milvus-T3kRHEmbeddings|embedding|Milvus-T3kRH\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"InputFileNode-jdLkB\",\"target\":\"ElemUnstructuredLoaderV0-LAGXM\",\"sourceHandle\":\"InputFileNode|InputFileNode-jdLkB|fileNode\",\"targetHandle\":\"fileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\",\"id\":\"reactflow__edge-InputFileNode-jdLkBInputFileNode|InputFileNode-jdLkB|fileNode-ElemUnstructuredLoaderV0-LAGXMfileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ElemUnstructuredLoaderV0-LAGXM\",\"target\":\"RecursiveCharacterTextSplitter-a7fc9\",\"sourceHandle\":\"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document\",\"targetHandle\":\"Document|documents|RecursiveCharacterTextSplitter-a7fc9\",\"id\":\"reactflow__edge-ElemUnstructuredLoaderV0-LAGXMElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document-RecursiveCharacterTextSplitter-a7fc9Document|documents|RecursiveCharacterTextSplitter-a7fc9\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"RecursiveCharacterTextSplitter-a7fc9\",\"target\":\"Milvus-T3kRH\",\"sourceHandle\":\"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document\",\"targetHandle\":\"Document|documents|Milvus-T3kRH\",\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-a7fc9RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document-Milvus-T3kRHDocument|documents|Milvus-T3kRH\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"2bec4\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"知识库问答_严谨版\":{\"id\":\"RetrievalQA-011e4\",\"type\":\"RetrievalQA\",\"node\":{\"output_types\":[],\"display_name\":\"知识库问答_严谨版\",\"documentation\":\"\",\"base_classes\":[\"RetrievalQA\",\"BaseRetrievalQA\",\"Chain\",\"function\"],\"description\":\"Chain for question-answering against an index.\",\"template\":{\"n_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"tags_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"memory_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"memory\"},\"display_name\":\"Memory\"},\"verbose_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_key_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"input_node_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"input_node\"}},\"output_key_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"return_source_documents_RetrievalQA-ypS4m\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-ypS4m\",\"field\":\"return_source_documents\"},\"display_name\":\"Return Source Documents\"},\"token_max_CombineDocsChain-bMaXk\":{\"l2\":false,\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":7000,\"l2_name\":\"token_max\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\",\"proxy\":{\"id\":\"CombineDocsChain-bMaXk\",\"field\":\"token_max\"}},\"chain_type_CombineDocsChain-bMaXk\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-bMaXk\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"document_prompt_CombineDocsChain-bMaXk\":{\"info\":\"\",\"list\":false,\"name\":\"document_prompt\",\"type\":\"BasePromptTemplate\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-bMaXk\",\"field\":\"document_prompt\"},\"display_name\":\"Document Prompt\"},\"context_PromptTemplate-gM5zg\":{\"info\":\"\",\"list\":false,\"name\":\"context\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"context\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"context\"}},\"question_PromptTemplate-gM5zg\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"question\"}},\"template_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n# Role：客服\\n\\n# Background :\\n- 你是一名客服人员。你的日常工作是根据【参考文本】的内容回复用户的各类咨询问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"template\"},\"display_name\":\"Template\"},\"output_parser_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-gM5zg\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-gM5zg\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"ids_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"ids\",\"show\":false,\"type\":\"str\",\"l2_name\":\"ids\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"ids\"},\"display_name\":\"Ids\"},\"documents_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"documents\"}},\"embedding_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"embedding\"}},\"metadatas_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_name_ElasticKeywordsSearch-dVhq9\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"index_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1701960496_3a537dc9\",\"l2_name\":\"知识库\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"index_name\"},\"display_name\":\"Index Name\"},\"ssl_verify_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ssl_verify\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"ssl_verify\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ssl_verify\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"ssl_verify\"}},\"search_kwargs_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{\\\"k\\\":6,\\\"query_strategy\\\":\\\"match_phrase\\\",\\\"must_or_should\\\":\\\"must\\\"}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"refresh_indices_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"refresh_indices\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"refresh_indices\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"refresh_indices\"},\"display_name\":\"Refresh Indices\"},\"elasticsearch_url_ElasticKeywordsSearch-dVhq9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elasticsearch_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elasticsearch_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ES_connection_url\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"field\":\"elasticsearch_url\"}},\"question_PromptTemplate-4iBFj\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"question\"}},\"template_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"分析给定Question，提取Question中包含的KeyWords，输出列表形式\\n\\nExamples:\\nQuestion: 数据项素2022年营收是多少？\\nKeyWords: ['数据项素', '2022', '营收, '营业收入']\\nQuestion: 深圳出差住宿标准是什么？\\nKeyWords: ['深圳', '出差', '住宿标准', '报销标准']\\n\\n\\n----------------\\nQuestion: {question}\\nKeyWords: \",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"template\"},\"display_name\":\"Template\"},\"output_parser_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-4iBFj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-4iBFj\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-UYoB4\",\"type\":\"genericNode\",\"position\":{\"x\":-2220.2561641720736,\"y\":-777.5185403158035},\"data\":{\"id\":\"ProxyChatLLM-UYoB4\",\"node\":{\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"BaseChatModel\",\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2220.2561641720736,\"y\":-777.5185403158035}},{\"width\":384,\"height\":316,\"id\":\"RetrievalQA-ypS4m\",\"type\":\"genericNode\",\"position\":{\"x\":-523.0150819181391,\"y\":97.4334598716227},\"data\":{\"id\":\"RetrievalQA-ypS4m\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"RetrievalQA\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"combine_documents_chain\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_documents_chain\",\"show\":true,\"type\":\"BaseCombineDocumentsChain\",\"l2_name\":\"combine_documents_chain\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"BaseRetrievalQA\",\"Chain\",\"function\"],\"display_name\":\"RetrievalQA\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"},\"type\":\"RetrievalQA\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-523.0150819181391,\"y\":97.4334598716227}},{\"width\":384,\"height\":412,\"id\":\"CombineDocsChain-bMaXk\",\"type\":\"genericNode\",\"position\":{\"x\":-1130.4006392228448,\"y\":-400.50282859447026},\"data\":{\"id\":\"CombineDocsChain-bMaXk\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"load_qa_chain\",\"prompt\":{\"l2\":false,\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"l2_name\":\"prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\"},\"token_max\":{\"l2\":false,\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":7000,\"l2_name\":\"token_max\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\"},\"chain_type\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"document_prompt\":{\"info\":\"\",\"list\":false,\"name\":\"document_prompt\",\"type\":\"BasePromptTemplate\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"CombineDocsChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1130.4006392228448,\"y\":-400.50282859447026}},{\"width\":384,\"height\":454,\"id\":\"PromptTemplate-gM5zg\",\"type\":\"genericNode\",\"position\":{\"x\":-1632.2039543868736,\"y\":-814.266749101787},\"data\":{\"id\":\"PromptTemplate-gM5zg\",\"node\":{\"name\":\"\",\"template\":{\"_type\":\"PromptTemplate\",\"context\":{\"info\":\"\",\"list\":false,\"name\":\"context\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"context\"},\"question\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\"},\"template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n# Role：客服\\n\\n# Background :\\n- 你是一名客服人员。你的日常工作是根据【参考文本】的内容回复用户的各类咨询问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"output_parser\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Schema to represent a prompt for an LLM.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"\":[\"context\",\"question\"],\"template\":[\"context\",\"question\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{\"formatters\":{\"openai_api_key\":{}},\"base_formatters\":{\"dict\":{},\"list\":{},\"show\":{},\"union\":{},\"kwargs\":{},\"default\":{},\"headers\":{},\"optional\":{},\"password\":{},\"multiline\":{},\"model_fields\":{\"MODEL_DICT\":{\"OpenAI\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"Anthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"],\"ChatOpenAI\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"ChatAnthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"]}},\"dict_code_file\":{}}}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1632.2039543868736,\"y\":-814.266749101787}},{\"width\":384,\"height\":628,\"id\":\"ElasticKeywordsSearch-dVhq9\",\"type\":\"genericNode\",\"position\":{\"x\":-1620.6487761012545,\"y\":-186.12742019985436},\"data\":{\"id\":\"ElasticKeywordsSearch-dVhq9\",\"node\":{\"template\":{\"ids\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"ids\",\"show\":false,\"type\":\"str\",\"l2_name\":\"ids\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLLM\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"ElasticKeywordsSearch\",\"prompt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"l2_name\":\"prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_name\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"index_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1701960496_3a537dc9\",\"l2_name\":\"知识库\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"ssl_verify\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ssl_verify\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"ssl_verify\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ssl_verify\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{\\\"k\\\":6,\\\"query_strategy\\\":\\\"match_phrase\\\",\\\"must_or_should\\\":\\\"must\\\"}\",\"l2_name\":\"search_kwargs\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"refresh_indices\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"refresh_indices\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"refresh_indices\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elasticsearch_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elasticsearch_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elasticsearch_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ES_connection_url\"}},\"description\":\"Construct ElasticKeywordsSearch wrapper from raw documents.\",\"base_classes\":[\"ElasticKeywordsSearch\",\"VectorStore\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"ElasticKeywordsSearch\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"ElasticKeywordsSearch\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1620.6487761012545,\"y\":-186.12742019985436}},{\"width\":384,\"height\":372,\"id\":\"PromptTemplate-4iBFj\",\"type\":\"genericNode\",\"position\":{\"x\":-2302.5673221463094,\"y\":-146.52073590180217},\"data\":{\"id\":\"PromptTemplate-4iBFj\",\"node\":{\"name\":\"\",\"template\":{\"_type\":\"PromptTemplate\",\"question\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\"},\"template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"分析给定Question，提取Question中包含的KeyWords，输出列表形式\\n\\nExamples:\\nQuestion: 数据项素2022年营收是多少？\\nKeyWords: ['数据项素', '2022', '营收, '营业收入']\\nQuestion: 深圳出差住宿标准是什么？\\nKeyWords: ['深圳', '出差', '住宿标准', '报销标准']\\n\\n\\n----------------\\nQuestion: {question}\\nKeyWords: \",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"output_parser\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Schema to represent a prompt for an LLM.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"\":[\"question\"],\"template\":[\"question\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{\"formatters\":{\"openai_api_key\":{}},\"base_formatters\":{\"dict\":{},\"list\":{},\"show\":{},\"union\":{},\"kwargs\":{},\"default\":{},\"headers\":{},\"optional\":{},\"password\":{},\"multiline\":{},\"model_fields\":{\"MODEL_DICT\":{\"OpenAI\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"Anthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"],\"ChatOpenAI\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"ChatAnthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"]}},\"dict_code_file\":{}}}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2302.5673221463094,\"y\":-146.52073590180217}}],\"edges\":[{\"source\":\"CombineDocsChain-bMaXk\",\"target\":\"RetrievalQA-ypS4m\",\"sourceHandle\":\"CombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function\",\"targetHandle\":\"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\",\"id\":\"reactflow__edge-CombineDocsChain-bMaXkCombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function-RetrievalQA-ypS4mBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"PromptTemplate-gM5zg\",\"target\":\"CombineDocsChain-bMaXk\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-gM5zg|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\"targetHandle\":\"BasePromptTemplate|prompt|CombineDocsChain-bMaXk\",\"id\":\"reactflow__edge-PromptTemplate-gM5zgPromptTemplate|PromptTemplate-gM5zg|StringPromptTemplate|BasePromptTemplate|PromptTemplate-CombineDocsChain-bMaXkBasePromptTemplate|prompt|CombineDocsChain-bMaXk\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ElasticKeywordsSearch-dVhq9\",\"target\":\"RetrievalQA-ypS4m\",\"sourceHandle\":\"ElasticKeywordsSearch|ElasticKeywordsSearch-dVhq9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|retriever|RetrievalQA-ypS4m\",\"id\":\"reactflow__edge-ElasticKeywordsSearch-dVhq9ElasticKeywordsSearch|ElasticKeywordsSearch-dVhq9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-ypS4mBaseRetriever|retriever|RetrievalQA-ypS4m\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"PromptTemplate-4iBFj\",\"target\":\"ElasticKeywordsSearch-dVhq9\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\"targetHandle\":\"BasePromptTemplate|prompt|ElasticKeywordsSearch-dVhq9\",\"id\":\"reactflow__edge-PromptTemplate-4iBFjPromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate-ElasticKeywordsSearch-dVhq9BasePromptTemplate|prompt|ElasticKeywordsSearch-dVhq9\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"CombineDocsChain-bMaXk\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|BaseChatModel|ProxyChatLLM|BaseLanguageModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|CombineDocsChain-bMaXk\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|BaseChatModel|ProxyChatLLM|BaseLanguageModel|BaseLLM-CombineDocsChain-bMaXkBaseLanguageModel|llm|CombineDocsChain-bMaXk\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"ElasticKeywordsSearch-dVhq9\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|BaseChatModel|ProxyChatLLM|BaseLanguageModel|BaseLLM\",\"targetHandle\":\"BaseLLM|llm|ElasticKeywordsSearch-dVhq9\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|BaseChatModel|ProxyChatLLM|BaseLanguageModel|BaseLLM-ElasticKeywordsSearch-dVhq9BaseLLM|llm|ElasticKeywordsSearch-dVhq9\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"e4a9c\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"知识库问答_增强版\":{\"id\":\"ConversationalRetrievalChain-f19da\",\"type\":\"ConversationalRetrievalChain\",\"node\":{\"output_types\":[],\"display_name\":\"知识库问答_增强版\",\"documentation\":\"\",\"base_classes\":[\"BaseConversationalRetrievalChain\",\"Chain\",\"ConversationalRetrievalChain\",\"function\"],\"description\":\"Convenience method to load chain from LLM and retriever.\",\"template\":{\"n_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"tags_MixEsVectorRetriever-J35CZ\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":true,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"MixEsVectorRetriever-J35CZ\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"metadata_MixEsVectorRetriever-J35CZ\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"MixEsVectorRetriever-J35CZ\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"combine_strategy_MixEsVectorRetriever-J35CZ\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"combine_strategy\",\"show\":true,\"type\":\"str\",\"value\":\"mix\",\"l2_name\":\"combine_strategy\",\"options\":[\"keyword_front\",\"vector_front\",\"mix\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"MixEsVectorRetriever-J35CZ\",\"field\":\"combine_strategy\"},\"display_name\":\"Combine Strategy\"},\"drop_old_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"drop_old\"},\"display_name\":\"Drop Old\"},\"documents_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"documents\"}},\"embedding_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"embedding\"}},\"metadatas_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_params_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"index_params\"},\"display_name\":\"Index Params\"},\"search_kwargs_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"search_params_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"search_params\"},\"display_name\":\"Search Params\"},\"collection_name_Milvus-cyR5W\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1700798314_e3f656ab\",\"l2_name\":\"collection_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"collection_name\"},\"display_name\":\"Collection Name\"},\"connection_args_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"connection_args\"},\"display_name\":\"Connection Args\"},\"consistency_level_Milvus-cyR5W\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-cyR5W\",\"field\":\"consistency_level\"},\"display_name\":\"Consistency Level\"},\"ids_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"ids\",\"show\":false,\"type\":\"str\",\"l2_name\":\"ids\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"ids\"},\"display_name\":\"Ids\"},\"llm_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"type\":\"BaseLLM\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"llm\"}},\"prompt_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"prompt\",\"type\":\"BasePromptTemplate\",\"l2_name\":\"prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"prompt\"}},\"documents_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"documents\"}},\"embedding_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"embedding\"}},\"metadatas_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_name_ElasticKeywordsSearch-31Et9\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"index_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1700798314_e3f656ab\",\"l2_name\":\"index_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"index_name\"},\"display_name\":\"Index Name\"},\"ssl_verify_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ssl_verify\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"ssl_verify\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ssl_verify\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"ssl_verify\"}},\"search_kwargs_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"refresh_indices_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"refresh_indices\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"refresh_indices\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"refresh_indices\"},\"display_name\":\"Refresh Indices\"},\"elasticsearch_url_ElasticKeywordsSearch-31Et9\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elasticsearch_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elasticsearch_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ES_connection_url\",\"proxy\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"field\":\"elasticsearch_url\"}},\"verbose_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"callbacks_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"callbacks\",\"show\":false,\"type\":\"Callbacks\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"chain_type_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"input_node_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"input_node\"}},\"condense_question_llm_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"condense_question_llm\",\"show\":false,\"type\":\"BaseLanguageModel\",\"l2_name\":\"condense_question_llm\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"condense_question_llm\"},\"display_name\":\"Condense Question LLM\"},\"return_source_documents_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Return source documents\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"return_source_documents\"}},\"condense_question_prompt_ConversationalRetrievalChain-SmY3w\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"condense_question_prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"value\":{\"_type\":\"prompt\",\"template\":\"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\"output_parser\":null,\"input_variables\":[\"chat_history\",\"question\"],\"template_format\":\"f-string\",\"partial_variables\":{},\"validate_template\":true},\"l2_name\":\"condense_question_prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"field\":\"condense_question_prompt\"},\"display_name\":\"Condense Question Prompt\"},\"ai_prefix_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ai_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"AI\",\"l2_name\":\"ai_prefix\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"ai_prefix\"},\"display_name\":\"Ai Prefix\"},\"input_key_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"memory_key_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory_key\",\"show\":true,\"type\":\"str\",\"value\":\"chat_history\",\"l2_name\":\"memory_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"memory_key\"},\"display_name\":\"Memory Key\"},\"output_key_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"answer\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"chat_memory_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"chat_memory\",\"show\":true,\"type\":\"BaseChatMessageHistory\",\"l2_name\":\"chat_memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"chat_memory\"},\"display_name\":\"Chat Memory\"},\"human_prefix_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"human_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"Human\",\"l2_name\":\"human_prefix\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"human_prefix\"},\"display_name\":\"Human Prefix\"},\"return_messages_ConversationBufferMemory-K1tss\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_messages\",\"show\":true,\"type\":\"bool\",\"l2_name\":\"return_messages\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-K1tss\",\"field\":\"return_messages\"},\"display_name\":\"Return Messages\"},\"template_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n\\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"template\"},\"display_name\":\"Template\"},\"output_parser_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-bs0vj\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-bs0vj\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-UYoB4\",\"type\":\"genericNode\",\"position\":{\"x\":-3019.932873785603,\"y\":-759.0579388411045},\"data\":{\"id\":\"ProxyChatLLM-UYoB4\",\"node\":{\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3019.932873785603,\"y\":-759.0579388411045}},{\"width\":384,\"height\":350,\"id\":\"MixEsVectorRetriever-J35CZ\",\"type\":\"genericNode\",\"position\":{\"x\":-2407.3760484096842,\"y\":-129.80633940439208},\"data\":{\"id\":\"MixEsVectorRetriever-J35CZ\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":true,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"MixEsVectorRetriever\",\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":true,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"combine_strategy\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"combine_strategy\",\"show\":true,\"type\":\"str\",\"value\":\"mix\",\"l2_name\":\"combine_strategy\",\"options\":[\"keyword_front\",\"vector_front\",\"mix\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"vector_retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"vector_retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"vector_retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"keyword_retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"keyword_retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"keyword_retriever\",\"advanced\":false,\"password\":true,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"value\":\"\"}},\"description\":\"This class ensemble the results of es retriever and vector retriever.\",\"base_classes\":[\"BaseRetriever\",\"MixEsVectorRetriever\"],\"display_name\":\"MixEsVectorRetriever\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"MixEsVectorRetriever\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2407.3760484096842,\"y\":-129.80633940439208}},{\"width\":384,\"height\":392,\"id\":\"Milvus-cyR5W\",\"type\":\"genericNode\",\"position\":{\"x\":-3010.2766638860544,\"y\":280.83609057857933},\"data\":{\"id\":\"Milvus-cyR5W\",\"node\":{\"template\":{\"_type\":\"Milvus\",\"drop_old\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"collection_name\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1700798314_e3f656ab\",\"l2_name\":\"collection_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"connection_args\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":true,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"consistency_level\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Create a Milvus collection, indexes it with HNSW, and insert data.\",\"base_classes\":[\"VectorStore\",\"Milvus\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Milvus\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"Milvus\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3010.2766638860544,\"y\":280.83609057857933}},{\"width\":384,\"height\":474,\"id\":\"ElasticKeywordsSearch-31Et9\",\"type\":\"genericNode\",\"position\":{\"x\":-3007.9415392561414,\"y\":-220.71638201134618},\"data\":{\"id\":\"ElasticKeywordsSearch-31Et9\",\"node\":{\"template\":{\"ids\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"ids\",\"show\":false,\"type\":\"str\",\"l2_name\":\"ids\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"type\":\"BaseLLM\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"ElasticKeywordsSearch\",\"prompt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"prompt\",\"type\":\"BasePromptTemplate\",\"l2_name\":\"prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_name\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"index_name\",\"show\":true,\"type\":\"str\",\"value\":\"col_1700798314_e3f656ab\",\"l2_name\":\"index_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"ssl_verify\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ssl_verify\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"ssl_verify\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ssl_verify\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"refresh_indices\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"refresh_indices\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"refresh_indices\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elasticsearch_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elasticsearch_url\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elasticsearch_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"ES_connection_url\"}},\"description\":\"Construct ElasticKeywordsSearch wrapper from raw documents.\",\"base_classes\":[\"VectorStore\",\"ElasticKeywordsSearch\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"ElasticKeywordsSearch\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"ElasticKeywordsSearch\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3007.9415392561414,\"y\":-220.71638201134618}},{\"width\":384,\"height\":494,\"id\":\"ConversationalRetrievalChain-SmY3w\",\"type\":\"genericNode\",\"position\":{\"x\":-1547.0269680478611,\"y\":-543.0897871904267},\"data\":{\"id\":\"ConversationalRetrievalChain-SmY3w\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ConversationalRetrievalChain\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseChatMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"callbacks\",\"show\":false,\"type\":\"Callbacks\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"chain_type\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"condense_question_llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"condense_question_llm\",\"show\":false,\"type\":\"BaseLanguageModel\",\"l2_name\":\"condense_question_llm\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Return source documents\"},\"condense_question_prompt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"condense_question_prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"value\":{\"_type\":\"prompt\",\"template\":\"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\"output_parser\":null,\"input_variables\":[\"chat_history\",\"question\"],\"template_format\":\"f-string\",\"partial_variables\":{},\"validate_template\":true},\"l2_name\":\"condense_question_prompt\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"combine_docs_chain_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_docs_chain_kwargs\",\"show\":true,\"type\":\"BasePromptTemplate\",\"l2_name\":\"combine_docs_chain_kwargs\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\"}},\"description\":\"Convenience method to load chain from LLM and retriever.\",\"base_classes\":[\"BaseConversationalRetrievalChain\",\"Chain\",\"ConversationalRetrievalChain\",\"function\"],\"display_name\":\"ConversationalRetrievalChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/chat_vector_db\"},\"type\":\"ConversationalRetrievalChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1547.0269680478611,\"y\":-543.0897871904267}},{\"width\":384,\"height\":526,\"id\":\"ConversationBufferMemory-K1tss\",\"type\":\"genericNode\",\"position\":{\"x\":-2419.6151156542605,\"y\":-708.8327872944353},\"data\":{\"id\":\"ConversationBufferMemory-K1tss\",\"node\":{\"template\":{\"_type\":\"ConversationBufferMemory\",\"ai_prefix\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ai_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"AI\",\"l2_name\":\"ai_prefix\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"input_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"memory_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory_key\",\"show\":true,\"type\":\"str\",\"value\":\"chat_history\",\"l2_name\":\"memory_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"output_key\":{\"l2\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"answer\",\"l2_name\":\"output_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"chat_memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"chat_memory\",\"show\":true,\"type\":\"BaseChatMessageHistory\",\"l2_name\":\"chat_memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"human_prefix\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"human_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"Human\",\"l2_name\":\"human_prefix\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"return_messages\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_messages\",\"show\":true,\"type\":\"bool\",\"l2_name\":\"return_messages\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"ConversationBufferMemory\",\"BaseChatMemory\"],\"display_name\":\"ConversationBufferMemory\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\"},\"type\":\"ConversationBufferMemory\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2419.6151156542605,\"y\":-708.8327872944353}},{\"width\":384,\"height\":290,\"id\":\"PromptTemplate-bs0vj\",\"type\":\"genericNode\",\"position\":{\"x\":-2424.4899097749667,\"y\":-1236.9354837042674},\"data\":{\"id\":\"PromptTemplate-bs0vj\",\"node\":{\"name\":\"\",\"template\":{\"_type\":\"PromptTemplate\",\"template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n\\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"output_parser\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Schema to represent a prompt for an LLM.\",\"base_classes\":[\"BasePromptTemplate\",\"PromptTemplate\",\"StringPromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"\":[\"context\",\"question\"],\"template\":[\"context\",\"question\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{\"formatters\":{\"openai_api_key\":{}},\"base_formatters\":{\"dict\":{},\"list\":{},\"show\":{},\"union\":{},\"kwargs\":{},\"default\":{},\"headers\":{},\"optional\":{},\"password\":{},\"multiline\":{},\"model_fields\":{\"MODEL_DICT\":{\"OpenAI\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"Anthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"],\"ChatOpenAI\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"ChatAnthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"]}},\"dict_code_file\":{}}}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2424.4899097749667,\"y\":-1236.9354837042674}}],\"edges\":[{\"source\":\"Milvus-cyR5W\",\"target\":\"MixEsVectorRetriever-J35CZ\",\"sourceHandle\":\"Milvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\",\"id\":\"reactflow__edge-Milvus-cyR5WMilvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ElasticKeywordsSearch-31Et9\",\"target\":\"MixEsVectorRetriever-J35CZ\",\"sourceHandle\":\"ElasticKeywordsSearch|ElasticKeywordsSearch-31Et9|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\",\"id\":\"reactflow__edge-ElasticKeywordsSearch-31Et9ElasticKeywordsSearch|ElasticKeywordsSearch-31Et9|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"MixEsVectorRetriever-J35CZ\",\"target\":\"ConversationalRetrievalChain-SmY3w\",\"sourceHandle\":\"MixEsVectorRetriever|MixEsVectorRetriever-J35CZ|BaseRetriever|MixEsVectorRetriever\",\"targetHandle\":\"BaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\",\"id\":\"reactflow__edge-MixEsVectorRetriever-J35CZMixEsVectorRetriever|MixEsVectorRetriever-J35CZ|BaseRetriever|MixEsVectorRetriever-ConversationalRetrievalChain-SmY3wBaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"ConversationalRetrievalChain-SmY3w\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM-ConversationalRetrievalChain-SmY3wBaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ConversationBufferMemory-K1tss\",\"target\":\"ConversationalRetrievalChain-SmY3w\",\"sourceHandle\":\"ConversationBufferMemory|ConversationBufferMemory-K1tss|BaseMemory|ConversationBufferMemory|BaseChatMemory\",\"targetHandle\":\"BaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\",\"id\":\"reactflow__edge-ConversationBufferMemory-K1tssConversationBufferMemory|ConversationBufferMemory-K1tss|BaseMemory|ConversationBufferMemory|BaseChatMemory-ConversationalRetrievalChain-SmY3wBaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"PromptTemplate-bs0vj\",\"target\":\"ConversationalRetrievalChain-SmY3w\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-bs0vj|BasePromptTemplate|PromptTemplate|StringPromptTemplate\",\"targetHandle\":\"BasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\",\"id\":\"reactflow__edge-PromptTemplate-bs0vjPromptTemplate|PromptTemplate-bs0vj|BasePromptTemplate|PromptTemplate|StringPromptTemplate-ConversationalRetrievalChain-SmY3wBasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"89297\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"知识库问答\":{\"id\":\"RetrievalQA-527fa\",\"type\":\"RetrievalQA\",\"node\":{\"output_types\":[],\"display_name\":\"知识库问答\",\"documentation\":\"\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"description\":\"Chain for question-answering against an index.\",\"template\":{\"drop_old_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"drop_old\"},\"display_name\":\"Drop Old\"},\"documents_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"documents\"}},\"embedding_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"embedding\"}},\"metadatas_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"index_params\"},\"display_name\":\"Index Params\"},\"search_kwargs_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"search_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_params\"},\"display_name\":\"Search Params\"},\"collection_name_Milvus-CWpae\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"毕昇文档20240309\",\"l2_name\":\"选择知识库\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":3520,\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"collection_name\"},\"display_name\":\"Collection Name\"},\"connection_args_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"connection_args\"},\"display_name\":\"Connection Args\"},\"consistency_level_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"consistency_level\"},\"display_name\":\"Consistency Level\"},\"tags_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"memory_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"memory\"},\"display_name\":\"Memory\"},\"verbose_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"input_node_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_node\"}},\"output_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"return_source_documents_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"return_source_documents\"},\"display_name\":\"Return Source Documents\"},\"n_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-UYoB4\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"填写模型名称（支持所有主流闭源模型）\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-UYoB4\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"温度（控制输出随机性）\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"token_max_CombineDocsChain-71a85\":{\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\",\"proxy\":{\"id\":\"CombineDocsChain-71a85\",\"field\":\"token_max\"}},\"chain_type_CombineDocsChain-71a85\":{\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-71a85\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"source_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"source\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"source\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"source\"}},\"template_PromptTemplate-3c164\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"title: {source}\\n{page_content}\\n----------------\",\"l2_name\":\"提示词模板\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"template\"},\"display_name\":\"Template\"},\"input_types_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"input_types\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"page_content_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"page_content\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"page_content\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"page_content\"}},\"output_parser_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-3c164\":{\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"source\",\"page_content\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"Union[Literal['f-string'], Literal['jinja2']]\",\"value\":\"f-string\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-3c164\":{\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-3c164\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"context_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"context\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"context\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"context\"}},\"question_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"question\"}},\"template_PromptTemplate-ced29\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n# Role：企业客服\\n\\n# Background :\\n你是一家名叫XX公司的客服人员。你的日常工作是回复公司内用户的各类咨询问题，所以当用户提到“公司”时，指的是XX公司。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"提示词模板\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"template\"},\"display_name\":\"Template\"},\"input_types_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"input_types\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"output_parser_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-ced29\":{\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"Union[Literal['f-string'], Literal['jinja2']]\",\"value\":\"f-string\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-ced29\":{\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ced29\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":310,\"id\":\"Milvus-CWpae\",\"type\":\"genericNode\",\"position\":{\"x\":-2861.8694801119937,\"y\":-286.57134522726807},\"data\":{\"id\":\"Milvus-CWpae\",\"node\":{\"l2_name\":\"知识库\",\"template\":{\"_type\":\"Milvus\",\"drop_old\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":false,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"collection_name\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"毕昇文档20240309\",\"l2_name\":\"选择知识库\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":3520},\"connection_args\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":true,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"consistency_level\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Create a Milvus collection, indexes it with HNSW, and insert data.\",\"base_classes\":[\"Milvus\",\"VectorStore\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Milvus\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"Milvus\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2861.8694801119937,\"y\":-286.57134522726807}},{\"width\":384,\"height\":316,\"id\":\"RetrievalQA-x5nap\",\"type\":\"genericNode\",\"position\":{\"x\":-2198.289678633326,\"y\":-664.9918874506891},\"data\":{\"id\":\"RetrievalQA-x5nap\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"RetrievalQA\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"combine_documents_chain\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_documents_chain\",\"show\":true,\"type\":\"BaseCombineDocumentsChain\",\"l2_name\":\"combine_documents_chain\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"},\"type\":\"RetrievalQA\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2198.289678633326,\"y\":-664.9918874506891}},{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-UYoB4\",\"type\":\"genericNode\",\"position\":{\"x\":-3490.7895099718235,\"y\":-440.7836760027338},\"data\":{\"id\":\"ProxyChatLLM-UYoB4\",\"node\":{\"l2_name\":\"模型配置\",\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"l2_name\":\"填写模型名称（支持所有主流闭源模型）\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"温度（控制输出随机性）\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3490.7895099718235,\"y\":-440.7836760027338}},{\"width\":384,\"height\":448,\"id\":\"CombineDocsChain-71a85\",\"type\":\"genericNode\",\"position\":{\"x\":-2872.4473624642733,\"y\":-941.8372718902958},\"data\":{\"id\":\"CombineDocsChain-71a85\",\"node\":{\"template\":{\"llm\":{\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"load_qa_chain\",\"prompt\":{\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"prompt\"},\"token_max\":{\"info\":\"只对Stuff类型生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\"},\"chain_type\":{\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"document_prompt\":{\"info\":\"\",\"list\":false,\"name\":\"document_prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"CombineDocsChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-2872.4473624642733,\"y\":-941.8372718902958}},{\"width\":384,\"height\":454,\"id\":\"PromptTemplate-3c164\",\"type\":\"genericNode\",\"position\":{\"x\":-3470.0105149154433,\"y\":-1425.3602052103988},\"data\":{\"id\":\"PromptTemplate-3c164\",\"node\":{\"name\":\"\",\"l2_name\":\"召回段落拼接提示词\",\"template\":{\"_type\":\"PromptTemplate\",\"source\":{\"info\":\"\",\"list\":false,\"name\":\"source\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"source\"},\"template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"title: {source}\\n{page_content}\\n----------------\",\"l2_name\":\"提示词模板\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"input_types\":{\"info\":\"\",\"list\":false,\"name\":\"input_types\",\"show\":false,\"type\":\"code\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"page_content\":{\"info\":\"\",\"list\":false,\"name\":\"page_content\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"page_content\"},\"output_parser\":{\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"source\",\"page_content\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"Union[Literal['f-string'], Literal['jinja2']]\",\"value\":\"f-string\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"Runnable\",\"StringPromptTemplate\",\"RunnableSerializable\",\"PromptTemplate\",\"Generic\",\"BasePromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"\":[\"source\",\"page_content\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3470.0105149154433,\"y\":-1425.3602052103988}},{\"width\":384,\"height\":454,\"id\":\"PromptTemplate-ced29\",\"type\":\"genericNode\",\"position\":{\"x\":-3479.600564127818,\"y\":-925.8998699556519},\"data\":{\"id\":\"PromptTemplate-ced29\",\"node\":{\"name\":\"\",\"l2_name\":\"大模型问答提示词\",\"template\":{\"_type\":\"PromptTemplate\",\"context\":{\"info\":\"\",\"list\":false,\"name\":\"context\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"context\"},\"question\":{\"info\":\"\",\"list\":false,\"name\":\"question\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\",\"VariableNode\"],\"placeholder\":\"\",\"display_name\":\"question\"},\"template\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"参考文本：\\n{context}\\n\\n----------------------\\n# Role：企业客服\\n\\n# Background :\\n你是一家名叫XX公司的客服人员。你的日常工作是回复公司内用户的各类咨询问题，所以当用户提到“公司”时，指的是XX公司。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\"l2_name\":\"提示词模板\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"input_types\":{\"info\":\"\",\"list\":false,\"name\":\"input_types\",\"show\":false,\"type\":\"code\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"output_parser\":{\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":true,\"type\":\"BaseOutputParser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"context\",\"question\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"Union[Literal['f-string'], Literal['jinja2']]\",\"value\":\"f-string\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"Runnable\",\"StringPromptTemplate\",\"RunnableSerializable\",\"PromptTemplate\",\"Generic\",\"BasePromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"\":[\"context\",\"question\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-3479.600564127818,\"y\":-925.8998699556519}}],\"edges\":[{\"source\":\"Milvus-CWpae\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|retriever|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"CombineDocsChain-71a85\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|CombineDocsChain-71a85\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-71a85BaseLanguageModel|llm|CombineDocsChain-71a85\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"CombineDocsChain-71a85\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function\",\"targetHandle\":\"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-CombineDocsChain-71a85CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"PromptTemplate-3c164\",\"target\":\"CombineDocsChain-71a85\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\"targetHandle\":\"BasePromptTemplate|document_prompt|CombineDocsChain-71a85\",\"id\":\"reactflow__edge-PromptTemplate-3c164PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|document_prompt|CombineDocsChain-71a85\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"PromptTemplate-ced29\",\"target\":\"CombineDocsChain-71a85\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\"targetHandle\":\"BasePromptTemplate|prompt|CombineDocsChain-71a85\",\"id\":\"reactflow__edge-PromptTemplate-ced29PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|prompt|CombineDocsChain-71a85\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"72f43\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"表格数据问答\":{\"id\":\"RetrievalQA-c61ba\",\"type\":\"InputFileNode\",\"node\":{\"output_types\":[],\"display_name\":\"表格数据问答\",\"documentation\":\"\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"description\":\"Chain for question-answering against an index.\",\"template\":{\"token_max_CombineDocsChain-RCPNA\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\",\"proxy\":{\"id\":\"CombineDocsChain-RCPNA\",\"field\":\"token_max\"}},\"chain_type_CombineDocsChain-RCPNA\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-RCPNA\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"drop_old_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"drop_old\"},\"display_name\":\"Drop Old\"},\"metadatas_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"index_params\"},\"display_name\":\"Index Params\"},\"search_kwargs_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"search_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_params\"},\"display_name\":\"Search Params\"},\"collection_name_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"选择知识库\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"collection_name\"},\"display_name\":\"Collection Name\"},\"connection_args_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"connection_args\"},\"display_name\":\"Connection Args\"},\"consistency_level_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"consistency_level\"},\"display_name\":\"Consistency Level\"},\"tags_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"memory_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"memory\"},\"display_name\":\"Memory\"},\"verbose_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"input_node_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_node\"}},\"output_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"return_source_documents_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"return_source_documents\"},\"display_name\":\"Return Source Documents\"},\"n_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-4\",\"l2_name\":\"model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"proxy_url_OpenAIProxyEmbedding-1771b\":{\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\",\"proxy\":{\"id\":\"OpenAIProxyEmbedding-1771b\",\"field\":\"proxy_url\"},\"display_name\":\"Proxy Url\"},\"metadata_CSVLoader-854c0\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\",\"proxy\":{\"id\":\"CSVLoader-854c0\",\"field\":\"metadata\"}},\"file_path_InputFileNode-e4363\":{\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"file\",\"value\":\"\",\"advanced\":true,\"password\":false,\"required\":false,\"suffixes\":[\".csv\"],\"fileTypes\":[\"csv\"],\"file_path\":null,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"InputFileNode-e4363\",\"field\":\"file_path\"},\"display_name\":\"File Path\"},\"file_type_InputFileNode-e4363\":{\"info\":\"Tips for which file should upload\",\"list\":false,\"name\":\"file_type\",\"show\":true,\"type\":\"str\",\"value\":\"CSV文件\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"提示上传文件类型\",\"display_name\":\"Name\",\"proxy\":{\"id\":\"InputFileNode-e4363\",\"field\":\"file_type\"}}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":376,\"id\":\"CombineDocsChain-RCPNA\",\"type\":\"genericNode\",\"position\":{\"x\":1039.4135881298942,\"y\":116.97346377366182},\"data\":{\"id\":\"CombineDocsChain-RCPNA\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"load_qa_chain\",\"token_max\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\"},\"chain_type\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"CombineDocsChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1039.4135881298942,\"y\":116.97346377366182}},{\"width\":384,\"height\":346,\"id\":\"Milvus-CWpae\",\"type\":\"genericNode\",\"position\":{\"x\":1052.1050968084205,\"y\":659.5536672641022},\"data\":{\"id\":\"Milvus-CWpae\",\"node\":{\"l2_name\":\"知识库\",\"template\":{\"_type\":\"Milvus\",\"drop_old\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":true,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"collection_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"选择知识库\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\"},\"connection_args\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":true,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"consistency_level\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Create a Milvus collection, indexes it with HNSW, and insert data.\",\"base_classes\":[\"Milvus\",\"VectorStore\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Milvus\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"Milvus\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1052.1050968084205,\"y\":659.5536672641022}},{\"width\":384,\"height\":316,\"id\":\"RetrievalQA-x5nap\",\"type\":\"genericNode\",\"position\":{\"x\":1715.6848982870883,\"y\":279.846110701463},\"data\":{\"id\":\"RetrievalQA-x5nap\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"RetrievalQA\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"combine_documents_chain\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_documents_chain\",\"show\":true,\"type\":\"BaseCombineDocumentsChain\",\"l2_name\":\"combine_documents_chain\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"},\"type\":\"RetrievalQA\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":1715.6848982870883,\"y\":279.846110701463}},{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-UYoB4\",\"type\":\"genericNode\",\"position\":{\"x\":437.5688719308881,\"y\":20},\"data\":{\"id\":\"ProxyChatLLM-UYoB4\",\"node\":{\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-4\",\"l2_name\":\"model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":437.5688719308881,\"y\":20}},{\"width\":384,\"height\":172,\"id\":\"OpenAIProxyEmbedding-1771b\",\"type\":\"genericNode\",\"position\":{\"x\":540.1525954325598,\"y\":1040.7357784004414},\"data\":{\"id\":\"OpenAIProxyEmbedding-1771b\",\"node\":{\"template\":{\"_type\":\"proxy_embedding\",\"proxy_url\":{\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\"}},\"description\":\" 使用自建的embedding服务使用openai进行embed \",\"base_classes\":[\"Embeddings\"],\"display_name\":\"OpenAIProxyEmbedding\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"OpenAIProxyEmbedding\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":540.1525954325598,\"y\":1040.7357784004414}},{\"width\":384,\"height\":290,\"id\":\"CSVLoader-854c0\",\"type\":\"genericNode\",\"position\":{\"x\":521.107515963895,\"y\":664.4805878718827},\"data\":{\"id\":\"CSVLoader-854c0\",\"node\":{\"template\":{\"_type\":\"CSVLoader\",\"metadata\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\"},\"file_path\":{\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"fileNode\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"suffixes\":[\".csv\"],\"fileTypes\":[\"csv\"],\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"output_types\":[\"Document\"],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\"},\"type\":\"CSVLoader\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":521.107515963895,\"y\":664.4805878718827}},{\"width\":384,\"height\":336,\"id\":\"InputFileNode-e4363\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":635.9129686688856},\"data\":{\"id\":\"InputFileNode-e4363\",\"node\":{\"template\":{\"_type\":\"InputFileNode\",\"file_path\":{\"info\":\"\",\"list\":false,\"name\":\"file_path\",\"show\":true,\"type\":\"file\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"suffixes\":[\".csv\"],\"fileTypes\":[\"csv\"],\"file_path\":null,\"multiline\":false,\"placeholder\":\"\"},\"file_type\":{\"info\":\"Tips for which file should upload\",\"list\":false,\"name\":\"file_type\",\"show\":true,\"type\":\"str\",\"value\":\"CSV文件\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"提示上传文件类型\",\"display_name\":\"Name\"}},\"description\":\"输入节点，用来自动对接输入\",\"base_classes\":[\"fileNode\"],\"display_name\":\"InputFileNode\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"InputFileNode\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":18,\"y\":635.9129686688856}}],\"edges\":[{\"source\":\"CombineDocsChain-RCPNA\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\"targetHandle\":\"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"Milvus-CWpae\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|retriever|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"CombineDocsChain-RCPNA\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|CombineDocsChain-RCPNA\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"OpenAIProxyEmbedding-1771b\",\"target\":\"Milvus-CWpae\",\"sourceHandle\":\"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\"targetHandle\":\"Embeddings|embedding|Milvus-CWpae\",\"id\":\"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"CSVLoader-854c0\",\"target\":\"Milvus-CWpae\",\"sourceHandle\":\"CSVLoader|CSVLoader-854c0|Document\",\"targetHandle\":\"Document|documents|Milvus-CWpae\",\"id\":\"reactflow__edge-CSVLoader-854c0CSVLoader|CSVLoader-854c0|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"InputFileNode-e4363\",\"target\":\"CSVLoader-854c0\",\"sourceHandle\":\"InputFileNode|InputFileNode-e4363|fileNode\",\"targetHandle\":\"fileNode|file_path|CSVLoader-854c0\",\"id\":\"reactflow__edge-InputFileNode-e4363InputFileNode|InputFileNode-e4363|fileNode-CSVLoader-854c0fileNode|file_path|CSVLoader-854c0\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"7db0b\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"输入网址进行问答\":{\"id\":\"RetrievalQA-731c5\",\"type\":\"RetrievalQA\",\"node\":{\"output_types\":[],\"display_name\":\"输入网址进行问答\",\"documentation\":\"\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"description\":\"Chain for question-answering against an index.\",\"template\":{\"token_max_CombineDocsChain-RCPNA\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\",\"proxy\":{\"id\":\"CombineDocsChain-RCPNA\",\"field\":\"token_max\"}},\"chain_type_CombineDocsChain-RCPNA\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"CombineDocsChain-RCPNA\",\"field\":\"chain_type\"},\"display_name\":\"Chain Type\"},\"drop_old_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"drop_old\"},\"display_name\":\"Drop Old\"},\"metadatas_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"metadatas\"},\"display_name\":\"Metadatas\"},\"index_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"index_params\"},\"display_name\":\"Index Params\"},\"search_kwargs_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_kwargs\"},\"display_name\":\"Search Kwargs\"},\"search_params_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"search_params\"},\"display_name\":\"Search Params\"},\"collection_name_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"选择知识库\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"collection_name\"},\"display_name\":\"Collection Name\"},\"connection_args_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"connection_args\"},\"display_name\":\"Connection Args\"},\"consistency_level_Milvus-CWpae\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"Milvus-CWpae\",\"field\":\"consistency_level\"},\"display_name\":\"Consistency Level\"},\"tags_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"memory_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"memory\"},\"display_name\":\"Memory\"},\"verbose_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"input_node_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"input_node\"}},\"output_key_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"return_source_documents_RetrievalQA-x5nap\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"RetrievalQA-x5nap\",\"field\":\"return_source_documents\"},\"display_name\":\"Return Source Documents\"},\"n_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-4\",\"l2_name\":\"model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-UYoB4\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-UYoB4\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"},\"metadata_WebBaseLoader-af6db\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\",\"proxy\":{\"id\":\"WebBaseLoader-af6db\",\"field\":\"metadata\"}},\"web_path_WebBaseLoader-af6db\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"web_path\",\"show\":true,\"type\":\"str\",\"value\":\"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\",\"l2_name\":\"网址\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Web Page\",\"proxy\":{\"id\":\"WebBaseLoader-af6db\",\"field\":\"web_path\"}},\"proxy_url_OpenAIProxyEmbedding-1771b\":{\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\",\"proxy\":{\"id\":\"OpenAIProxyEmbedding-1771b\",\"field\":\"proxy_url\"},\"display_name\":\"Proxy Url\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":376,\"id\":\"CombineDocsChain-RCPNA\",\"type\":\"genericNode\",\"position\":{\"x\":-1187.1604122631927,\"y\":-662.1420645633651},\"data\":{\"id\":\"CombineDocsChain-RCPNA\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"LLM\"},\"_type\":\"load_qa_chain\",\"token_max\":{\"l2\":false,\"info\":\"当前只对stuff 生效\",\"list\":false,\"name\":\"token_max\",\"show\":true,\"type\":\"int\",\"value\":-1,\"l2_name\":\"token_max\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"token_max\"},\"chain_type\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"chain_type\",\"show\":true,\"type\":\"str\",\"value\":\"stuff\",\"l2_name\":\"chain_type\",\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"CombineDocsChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1187.1604122631927,\"y\":-662.1420645633651}},{\"width\":384,\"height\":346,\"id\":\"Milvus-CWpae\",\"type\":\"genericNode\",\"position\":{\"x\":-1174.4689035846664,\"y\":-119.56186107292496},\"data\":{\"id\":\"Milvus-CWpae\",\"node\":{\"l2_name\":\"知识库\",\"template\":{\"_type\":\"Milvus\",\"drop_old\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"drop_old\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"drop_old\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"documents\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"documents\",\"show\":true,\"type\":\"Document\",\"l2_name\":\"documents\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Documents\"},\"embedding\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"embedding\",\"show\":true,\"type\":\"Embeddings\",\"l2_name\":\"embedding\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Embedding\"},\"metadatas\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"metadatas\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadatas\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"index_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"index_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"index_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_kwargs\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"l2_name\":\"search_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"search_params\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"search_params\",\"show\":false,\"type\":\"code\",\"l2_name\":\"search_params\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"collection_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"collection_name\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"选择知识库\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"collection_id\":\"\"},\"connection_args\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"connection_args\",\"show\":true,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"connection_args\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"consistency_level\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"consistency_level\",\"show\":false,\"type\":\"str\",\"value\":\"Session\",\"l2_name\":\"consistency_level\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Create a Milvus collection, indexes it with HNSW, and insert data.\",\"base_classes\":[\"Milvus\",\"VectorStore\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Milvus\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"http://192.168.106.116:8030\"},\"type\":\"Milvus\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1174.4689035846664,\"y\":-119.56186107292496}},{\"width\":384,\"height\":316,\"id\":\"RetrievalQA-x5nap\",\"type\":\"genericNode\",\"position\":{\"x\":-510.8891021059987,\"y\":-499.2694176355641},\"data\":{\"id\":\"RetrievalQA-x5nap\",\"node\":{\"template\":{\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"RetrievalQA\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"query\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"retriever\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"retriever\",\"show\":true,\"type\":\"BaseRetriever\",\"l2_name\":\"retriever\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"result\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"combine_documents_chain\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"combine_documents_chain\",\"show\":true,\"type\":\"BaseCombineDocumentsChain\",\"l2_name\":\"combine_documents_chain\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"return_source_documents\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_source_documents\",\"show\":true,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_source_documents\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"},\"type\":\"RetrievalQA\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-510.8891021059987,\"y\":-499.2694176355641}},{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-UYoB4\",\"type\":\"genericNode\",\"position\":{\"x\":-1789.0051284621989,\"y\":-759.1155283370271},\"data\":{\"id\":\"ProxyChatLLM-UYoB4\",\"node\":{\"template\":{\"n\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"l2_name\":\"n\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"l2_name\":\"cache\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"l2_name\":\"top_p\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"l2_name\":\"client\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"l2_name\":\"headers\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"streaming\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"l2_name\":\"max_tokens\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-4\",\"l2_name\":\"model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"l2_name\":\"max_retries\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"l2_name\":\"temperature\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"l2_name\":\"model_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"elemai_api_key\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"l2_name\":\"elemai_base_url\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"l2_name\":\"request_timeout\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tiktoken_model_name\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1789.0051284621989,\"y\":-759.1155283370271}},{\"width\":384,\"height\":356,\"id\":\"WebBaseLoader-af6db\",\"type\":\"genericNode\",\"position\":{\"x\":-1699.1181246063038,\"y\":-135.15223886710186},\"data\":{\"id\":\"WebBaseLoader-af6db\",\"node\":{\"l2_name\":\"输入网址\",\"template\":{\"_type\":\"WebBaseLoader\",\"metadata\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":true,\"type\":\"code\",\"value\":\"{}\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Metadata\"},\"web_path\":{\"l2\":true,\"info\":\"\",\"list\":false,\"name\":\"web_path\",\"show\":true,\"type\":\"str\",\"value\":\"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\",\"l2_name\":\"网址\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Web Page\"}},\"description\":\"Load HTML pages using `urllib` and parse them with `BeautifulSoup'.\",\"base_classes\":[\"Document\"],\"display_name\":\"WebBaseLoader\",\"output_types\":[\"Document\"],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/web_base\"},\"type\":\"WebBaseLoader\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1699.1181246063038,\"y\":-135.15223886710186}},{\"width\":384,\"height\":172,\"id\":\"OpenAIProxyEmbedding-1771b\",\"type\":\"genericNode\",\"position\":{\"x\":-1686.4214049605273,\"y\":261.6202500634144},\"data\":{\"id\":\"OpenAIProxyEmbedding-1771b\",\"node\":{\"template\":{\"_type\":\"proxy_embedding\",\"proxy_url\":{\"info\":\"\",\"list\":false,\"name\":\"proxy_url\",\"show\":false,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"http://43.133.35.137:8080\"}},\"description\":\" 使用自建的embedding服务使用openai进行embed \",\"base_classes\":[\"Embeddings\"],\"display_name\":\"OpenAIProxyEmbedding\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"OpenAIProxyEmbedding\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-1686.4214049605273,\"y\":261.6202500634144}}],\"edges\":[{\"source\":\"CombineDocsChain-RCPNA\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\"targetHandle\":\"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"Milvus-CWpae\",\"target\":\"RetrievalQA-x5nap\",\"sourceHandle\":\"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\"targetHandle\":\"BaseRetriever|retriever|RetrievalQA-x5nap\",\"id\":\"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-UYoB4\",\"target\":\"CombineDocsChain-RCPNA\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|CombineDocsChain-RCPNA\",\"id\":\"reactflow__edge-ProxyChatLLM-UYoB4ProxyChatLLM|ProxyChatLLM-UYoB4|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"WebBaseLoader-af6db\",\"target\":\"Milvus-CWpae\",\"sourceHandle\":\"WebBaseLoader|WebBaseLoader-af6db|Document\",\"targetHandle\":\"Document|documents|Milvus-CWpae\",\"id\":\"reactflow__edge-WebBaseLoader-af6dbWebBaseLoader|WebBaseLoader-af6db|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"OpenAIProxyEmbedding-1771b\",\"target\":\"Milvus-CWpae\",\"sourceHandle\":\"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\"targetHandle\":\"Embeddings|embedding|Milvus-CWpae\",\"id\":\"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"ddc2b\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}},{\"角色扮演\":{\"id\":\"LLMChain-2dd3b\",\"type\":\"LLMChain\",\"node\":{\"output_types\":[],\"display_name\":\"角色扮演\",\"documentation\":\"\",\"base_classes\":[\"Chain\",\"LLMChain\",\"function\"],\"description\":\"Chain to run queries against LLMs.\",\"template\":{\"tags_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"verbose_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"input_node_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"input_node\"}},\"llm_kwargs_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"llm_kwargs\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"llm_kwargs\"},\"display_name\":\"LLM Kwargs\"},\"output_key_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"text\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"output_parser_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":false,\"type\":\"BaseLLMOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"return_final_only_LLMChain-wRz0c\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_final_only\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_final_only\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"LLMChain-wRz0c\",\"field\":\"return_final_only\"},\"display_name\":\"Return Final Only\"},\"input_PromptTemplate-ZoUVT\":{\"info\":\"\",\"list\":false,\"name\":\"input\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"placeholder\":\"\",\"display_name\":\"input\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"input\"}},\"template_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"System：\\n你将扮演一个科技公司的面试官，面试者是一名产品经理，提出 3 个犀利的问题。\\n请注意：\\n- 每次只问一个问题\\n- 面试者回答问题后请简短点评一下，然后问下一个问题，不要试图纠正候选人的错误；\\n- 如果你认为用户连续几次回答的都不对，就少问一点；\\n- 问完最后一个问题后，你可以问这样一个问题：上一份工作为什么离职？用户回答该问题后，请表示理解与支持，并停止与面试者的对话。若面试者继续说话你可以礼貌拒绝。\\n\\n以下是你们的对话记录\\n\\n{chat_history}\\n\\n面试者：{input}\\n\\n你的回答：\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"template\"},\"display_name\":\"Template\"},\"chat_history_PromptTemplate-ZoUVT\":{\"info\":\"\",\"list\":false,\"name\":\"chat_history\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"placeholder\":\"\",\"display_name\":\"chat_history\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"chat_history\"}},\"output_parser_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":false,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_variables_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"chat_history\",\"input\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"template_format_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"partial_variables_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"validate_template_PromptTemplate-ZoUVT\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"PromptTemplate-ZoUVT\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"ai_prefix_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ai_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"AI\",\"l2_name\":\"ai_prefix\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"ai_prefix\"},\"display_name\":\"Ai Prefix\"},\"input_key_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"input_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"input_key\"},\"display_name\":\"Input Key\"},\"memory_key_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory_key\",\"show\":true,\"type\":\"str\",\"value\":\"chat_history\",\"l2_name\":\"memory_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"memory_key\"},\"display_name\":\"Memory Key\"},\"output_key_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"output_key\"},\"display_name\":\"Output Key\"},\"chat_memory_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"chat_memory\",\"show\":true,\"type\":\"BaseChatMessageHistory\",\"l2_name\":\"chat_memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"chat_memory\"},\"display_name\":\"Chat Memory\"},\"human_prefix_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"human_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"Human\",\"l2_name\":\"human_prefix\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"human_prefix\"},\"display_name\":\"Human Prefix\"},\"return_messages_ConversationBufferMemory-lI5Pt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_messages\",\"show\":true,\"type\":\"bool\",\"l2_name\":\"return_messages\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"field\":\"return_messages\"},\"display_name\":\"Return Messages\"},\"n_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"n\"},\"display_name\":\"N\"},\"tags_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"tags\"},\"display_name\":\"Tags\"},\"cache_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"cache\"},\"display_name\":\"Cache\"},\"top_p_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"top_p\"},\"display_name\":\"Top P\"},\"client_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"client\"},\"display_name\":\"Client\"},\"headers_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"headers\"},\"display_name\":\"Headers\"},\"verbose_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"verbose\"},\"display_name\":\"Verbose\"},\"metadata_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"metadata\"},\"display_name\":\"Metadata\"},\"callbacks_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"callbacks\"},\"display_name\":\"Callbacks\"},\"streaming_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"streaming\"},\"display_name\":\"Streaming\"},\"max_tokens_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"max_tokens\"},\"display_name\":\"Max Tokens\"},\"model_name_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"model_name\"},\"display_name\":\"Model Name\"},\"max_retries_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"max_retries\"},\"display_name\":\"Max Retries\"},\"temperature_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"temperature\"},\"display_name\":\"Temperature\"},\"model_kwargs_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":false,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"model_kwargs\"},\"display_name\":\"Model Kwargs\"},\"elemai_api_key_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"elemai_api_key\"},\"display_name\":\"Elemai Api Key\"},\"elemai_base_url_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"elemai_base_url\"},\"display_name\":\"Elemai Base Url\"},\"request_timeout_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"request_timeout\"},\"display_name\":\"Request Timeout\"},\"tiktoken_model_name_ProxyChatLLM-C0lLH\":{\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"proxy\":{\"id\":\"ProxyChatLLM-C0lLH\",\"field\":\"tiktoken_model_name\"},\"display_name\":\"Tiktoken Model Name\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":316,\"id\":\"LLMChain-wRz0c\",\"type\":\"genericNode\",\"position\":{\"x\":621.1034022791711,\"y\":113.49419945635839},\"data\":{\"id\":\"LLMChain-wRz0c\",\"node\":{\"template\":{\"llm\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm\",\"show\":true,\"type\":\"BaseLanguageModel\",\"l2_name\":\"llm\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"l2_name\":\"tags\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"LLMChain\",\"memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory\",\"show\":true,\"type\":\"BaseMemory\",\"l2_name\":\"memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"prompt\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"prompt\",\"show\":true,\"type\":\"BasePromptTemplate\",\"l2_name\":\"prompt\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"verbose\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"l2_name\":\"verbose\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"l2_name\":\"metadata\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"l2_name\":\"callbacks\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_node\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"input_node\",\"show\":true,\"type\":\"input\",\"l2_name\":\"input_node\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\",\"display_name\":\"Preset Question\"},\"llm_kwargs\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"llm_kwargs\",\"show\":false,\"type\":\"code\",\"l2_name\":\"llm_kwargs\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"output_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"text\",\"l2_name\":\"output_key\",\"advanced\":true,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"output_parser\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":false,\"type\":\"BaseLLMOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"return_final_only\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_final_only\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"return_final_only\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Chain to run queries against LLMs.\",\"base_classes\":[\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"LLMChain\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"},\"type\":\"LLMChain\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":621.1034022791711,\"y\":113.49419945635839}},{\"width\":384,\"height\":418,\"id\":\"PromptTemplate-ZoUVT\",\"type\":\"genericNode\",\"position\":{\"x\":-152.59469279870132,\"y\":532.7389820028246},\"data\":{\"id\":\"PromptTemplate-ZoUVT\",\"node\":{\"name\":\"\",\"template\":{\"_type\":\"PromptTemplate\",\"input\":{\"info\":\"\",\"list\":false,\"name\":\"input\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"placeholder\":\"\",\"display_name\":\"input\"},\"template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template\",\"show\":true,\"type\":\"prompt\",\"value\":\"System：\\n你将扮演一个科技公司的面试官，面试者是一名产品经理，提出 3 个犀利的问题。\\n请注意：\\n- 每次只问一个问题\\n- 面试者回答问题后请简短点评一下，然后问下一个问题，不要试图纠正候选人的错误；\\n- 如果你认为用户连续几次回答的都不对，就少问一点；\\n- 问完最后一个问题后，你可以问这样一个问题：上一份工作为什么离职？用户回答该问题后，请表示理解与支持，并停止与面试者的对话。若面试者继续说话你可以礼貌拒绝。\\n\\n以下是你们的对话记录\\n\\n{chat_history}\\n\\n面试者：{input}\\n\\n你的回答：\",\"l2_name\":\"template\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":true,\"placeholder\":\"\"},\"chat_history\":{\"info\":\"\",\"list\":false,\"name\":\"chat_history\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"placeholder\":\"\",\"display_name\":\"chat_history\"},\"output_parser\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"output_parser\",\"show\":false,\"type\":\"BaseOutputParser\",\"l2_name\":\"output_parser\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_variables\":{\"l2\":false,\"info\":\"\",\"list\":true,\"name\":\"input_variables\",\"show\":false,\"type\":\"str\",\"value\":[\"chat_history\",\"input\"],\"l2_name\":\"input_variables\",\"advanced\":false,\"password\":false,\"required\":true,\"multiline\":false,\"placeholder\":\"\"},\"template_format\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"template_format\",\"show\":false,\"type\":\"str\",\"value\":\"f-string\",\"l2_name\":\"template_format\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"partial_variables\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"partial_variables\",\"show\":false,\"type\":\"code\",\"l2_name\":\"partial_variables\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"validate_template\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"validate_template\",\"show\":false,\"type\":\"bool\",\"value\":true,\"l2_name\":\"validate_template\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Schema to represent a prompt for an LLM.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"PromptTemplate\",\"output_types\":[],\"custom_fields\":{\"template\":[\"chat_history\",\"input\"]},\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"field_formatters\":{\"formatters\":{\"openai_api_key\":{}},\"base_formatters\":{\"dict\":{},\"list\":{},\"show\":{},\"union\":{},\"kwargs\":{},\"default\":{},\"headers\":{},\"optional\":{},\"password\":{},\"multiline\":{},\"model_fields\":{\"MODEL_DICT\":{\"OpenAI\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"Anthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"],\"ChatOpenAI\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"ChatAnthropic\":[\"claude-v1\",\"claude-v1-100k\",\"claude-instant-v1\",\"claude-instant-v1-100k\",\"claude-v1.3\",\"claude-v1.3-100k\",\"claude-v1.2\",\"claude-v1.0\",\"claude-instant-v1.1\",\"claude-instant-v1.1-100k\",\"claude-instant-v1.0\"]}},\"dict_code_file\":{}}}},\"type\":\"PromptTemplate\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-152.59469279870132,\"y\":532.7389820028246}},{\"width\":384,\"height\":526,\"id\":\"ConversationBufferMemory-lI5Pt\",\"type\":\"genericNode\",\"position\":{\"x\":-556.5758769509117,\"y\":-30.001495256074236},\"data\":{\"id\":\"ConversationBufferMemory-lI5Pt\",\"node\":{\"template\":{\"_type\":\"ConversationBufferMemory\",\"ai_prefix\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"ai_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"AI\",\"l2_name\":\"ai_prefix\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"input_key\":{\"l2\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"list\":false,\"name\":\"input_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"input_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"memory_key\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"memory_key\",\"show\":true,\"type\":\"str\",\"value\":\"chat_history\",\"l2_name\":\"memory_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"output_key\":{\"l2\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"list\":false,\"name\":\"output_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"l2_name\":\"output_key\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"chat_memory\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"chat_memory\",\"show\":true,\"type\":\"BaseChatMessageHistory\",\"l2_name\":\"chat_memory\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"human_prefix\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"human_prefix\",\"show\":false,\"type\":\"str\",\"value\":\"Human\",\"l2_name\":\"human_prefix\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"return_messages\":{\"l2\":false,\"info\":\"\",\"list\":false,\"name\":\"return_messages\",\"show\":true,\"type\":\"bool\",\"l2_name\":\"return_messages\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseChatMemory\",\"ConversationBufferMemory\",\"BaseMemory\"],\"display_name\":\"ConversationBufferMemory\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\"},\"type\":\"ConversationBufferMemory\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-556.5758769509117,\"y\":-30.001495256074236}},{\"width\":384,\"height\":500,\"id\":\"ProxyChatLLM-C0lLH\",\"type\":\"genericNode\",\"position\":{\"x\":-26.90943659439222,\"y\":-434.6186906908237},\"data\":{\"id\":\"ProxyChatLLM-C0lLH\",\"node\":{\"template\":{\"n\":{\"info\":\"\",\"list\":false,\"name\":\"n\",\"show\":false,\"type\":\"int\",\"value\":1,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tags\":{\"info\":\"\",\"list\":true,\"name\":\"tags\",\"show\":false,\"type\":\"str\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"_type\":\"ProxyChatLLM\",\"cache\":{\"info\":\"\",\"list\":false,\"name\":\"cache\",\"show\":false,\"type\":\"bool\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"top_p\":{\"info\":\"\",\"list\":false,\"name\":\"top_p\",\"show\":true,\"type\":\"float\",\"value\":0.9,\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"client\":{\"info\":\"\",\"list\":false,\"name\":\"client\",\"show\":false,\"type\":\"Any\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"headers\":{\"info\":\"\",\"list\":false,\"name\":\"headers\",\"show\":false,\"type\":\"code\",\"value\":\"\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":true,\"placeholder\":\"\"},\"verbose\":{\"info\":\"\",\"list\":false,\"name\":\"verbose\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"metadata\":{\"info\":\"\",\"list\":false,\"name\":\"metadata\",\"show\":false,\"type\":\"code\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"callbacks\":{\"info\":\"\",\"list\":true,\"name\":\"callbacks\",\"show\":false,\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"streaming\":{\"info\":\"\",\"list\":false,\"name\":\"streaming\",\"show\":false,\"type\":\"bool\",\"value\":false,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_tokens\":{\"info\":\"\",\"list\":false,\"name\":\"max_tokens\",\"show\":true,\"type\":\"int\",\"value\":\"\",\"advanced\":true,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_name\":{\"info\":\"\",\"list\":false,\"name\":\"model_name\",\"show\":true,\"type\":\"str\",\"value\":\"gpt-3.5-turbo-16k-0613\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"max_retries\":{\"info\":\"\",\"list\":false,\"name\":\"max_retries\",\"show\":false,\"type\":\"int\",\"value\":6,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"temperature\":{\"info\":\"\",\"list\":false,\"name\":\"temperature\",\"show\":true,\"type\":\"float\",\"value\":0.7,\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"model_kwargs\":{\"info\":\"\",\"list\":false,\"name\":\"model_kwargs\",\"show\":true,\"type\":\"code\",\"advanced\":true,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_api_key\":{\"info\":\"\",\"list\":false,\"name\":\"elemai_api_key\",\"show\":true,\"type\":\"str\",\"value\":\"\",\"advanced\":false,\"password\":true,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"elemai_base_url\":{\"info\":\"\",\"list\":false,\"name\":\"elemai_base_url\",\"show\":true,\"type\":\"str\",\"value\":\"http://192.168.106.12:6001/v1/chatcompletion\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"request_timeout\":{\"info\":\"\",\"list\":false,\"name\":\"request_timeout\",\"show\":false,\"type\":\"float\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"},\"tiktoken_model_name\":{\"info\":\"\",\"list\":false,\"name\":\"tiktoken_model_name\",\"show\":false,\"type\":\"str\",\"advanced\":false,\"password\":false,\"required\":false,\"multiline\":false,\"placeholder\":\"\"}},\"description\":\"Wrapper around proxy Chat large language models.\",\"base_classes\":[\"ProxyChatLLM\",\"BaseLanguageModel\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ProxyChatLLM\",\"output_types\":[],\"custom_fields\":{},\"documentation\":\"\"},\"type\":\"ProxyChatLLM\",\"value\":null},\"selected\":true,\"positionAbsolute\":{\"x\":-26.90943659439222,\"y\":-434.6186906908237}}],\"edges\":[{\"source\":\"PromptTemplate-ZoUVT\",\"target\":\"LLMChain-wRz0c\",\"sourceHandle\":\"PromptTemplate|PromptTemplate-ZoUVT|PromptTemplate|StringPromptTemplate|BasePromptTemplate\",\"targetHandle\":\"BasePromptTemplate|prompt|LLMChain-wRz0c\",\"id\":\"reactflow__edge-PromptTemplate-ZoUVTPromptTemplate|PromptTemplate-ZoUVT|PromptTemplate|StringPromptTemplate|BasePromptTemplate-LLMChain-wRz0cBasePromptTemplate|prompt|LLMChain-wRz0c\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ConversationBufferMemory-lI5Pt\",\"target\":\"LLMChain-wRz0c\",\"sourceHandle\":\"ConversationBufferMemory|ConversationBufferMemory-lI5Pt|BaseChatMemory|ConversationBufferMemory|BaseMemory\",\"targetHandle\":\"BaseMemory|memory|LLMChain-wRz0c\",\"id\":\"reactflow__edge-ConversationBufferMemory-lI5PtConversationBufferMemory|ConversationBufferMemory-lI5Pt|BaseChatMemory|ConversationBufferMemory|BaseMemory-LLMChain-wRz0cBaseMemory|memory|LLMChain-wRz0c\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true},{\"source\":\"ProxyChatLLM-C0lLH\",\"target\":\"LLMChain-wRz0c\",\"sourceHandle\":\"ProxyChatLLM|ProxyChatLLM-C0lLH|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\"targetHandle\":\"BaseLanguageModel|llm|LLMChain-wRz0c\",\"id\":\"reactflow__edge-ProxyChatLLM-C0lLHProxyChatLLM|ProxyChatLLM-C0lLH|ProxyChatLLM|BaseLanguageModel|BaseChatModel|BaseLLM-LLMChain-wRz0cBaseLanguageModel|llm|LLMChain-wRz0c\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":true}],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"name\":\"\",\"description\":\"\",\"id\":\"32a69\",\"status\":0,\"write\":false,\"guide_word\":\"\"}}}}]\n"
  },
  {
    "path": "src/backend/bisheng/database/data/sft_model.json",
    "content": "[\n  {\n    \"model_name\": \"Baichuan2-7B-Chat\"\n  },\n  {\n    \"model_name\": \"Baichuan2-13B-Chat\"\n  },\n  {\n    \"model_name\": \"chatglm2-6b\"\n  },\n  {\n    \"model_name\": \"chatglm3-6b\"\n  },\n  {\n    \"model_name\": \"internlm-chat-7b-8k\"\n  },\n  {\n    \"model_name\": \"internlm-20b-chat\"\n  },\n  {\n    \"model_name\": \"Llama-2-7b-chat-hf\"\n  },\n  {\n    \"model_name\": \"Llama-2-13b-chat-hf\"\n  },\n  {\n    \"model_name\": \"Qwen-7B-Chat\"\n  },\n  {\n    \"model_name\": \"Qwen-14B-Chat\"\n  }\n]\n"
  },
  {
    "path": "src/backend/bisheng/database/data/t_gpts_tools.json",
    "content": "[\n  {\n    \"name\": \"时间\",\n    \"logo\": null,\n    \"desc\": \"返回当前时间，如果未指定时区，将使用 UTC+8 时间\",\n    \"tool_key\": \"get_current_time\",\n    \"type\": 1,\n    \"extra\": \"{}\",\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:36:00\",\n    \"update_time\": \"2024-03-29 14:36:00\",\n    \"id\": 1,\n    \"api_params\": []\n  },\n  {\n    \"name\": \"计算器\",\n    \"logo\": null,\n    \"desc\": \"使用 Python 内置工具进行数学表达式计算\",\n    \"tool_key\": \"calculator\",\n    \"type\": 2,\n    \"extra\": \"{}\",\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:37:11\",\n    \"update_time\": \"2024-03-29 14:37:11\",\n    \"id\": 2,\n    \"api_params\": []\n  },\n  {\n    \"name\": \"论文获取\",\n    \"logo\": null,\n    \"desc\": \"从 Arxiv 网站检索论文的工具，输入为检索关键词。\",\n    \"tool_key\": \"arxiv\",\n    \"type\": 3,\n    \"extra\": \"{}\",\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:39:37\",\n    \"update_time\": \"2024-03-29 14:39:37\",\n    \"id\": 3,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"search query to look up\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"Dalle3绘画\",\n    \"logo\": null,\n    \"desc\": \"根据提示词生成图像。\",\n    \"tool_key\": \"dalle_image_generator\",\n    \"type\": 4,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:40:32\",\n    \"update_time\": \"2024-03-29 14:40:32\",\n    \"id\": 4,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"Description about image.\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"Bing web搜索\",\n    \"logo\": null,\n    \"desc\": \"使用 query 进行 Bing 搜索并返回返回结果。\",\n    \"tool_key\": \"bing_search\",\n    \"type\": 5,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:41:16\",\n    \"update_time\": \"2024-03-29 14:41:16\",\n    \"id\": 5,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"query to look up in Bing search\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"代码执行器\",\n    \"logo\": null,\n    \"desc\": \"可以执行 Python  和 shell 代码，并在 600 秒内返回结果，适合处理数学、编程、图片和文件等问题场景。\",\n    \"tool_key\": \"bisheng_code_interpreter\",\n    \"type\": 6,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:42:17\",\n    \"update_time\": \"2024-03-29 14:42:17\",\n    \"id\": 6,\n    \"api_params\": [\n      {\n        \"name\": \"python_code\",\n        \"description\": \"The pure python script to be evaluated. \\\\nThe contents will be in main.py. \\\\nIt should not be in markdown format.\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"人员所有公司\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID和人名获取企业人员的所有相关公司，包括其担任法人、股东、董监高的公司信息\",\n    \"tool_key\": \"tianyancha_all_companys_by_company\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:44:34\",\n    \"update_time\": \"2024-03-29 14:44:34\",\n    \"id\": 7,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"human who you want to search\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"name\",\n        \"description\": \"company name which human worked\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"搜索企业\",\n    \"logo\": null,\n    \"desc\": \"可以通过关键词获取企业列表，企业列表包括公司名称或ID、类型、成立日期、经营状态、统一社会信用代码等字段的详细信息\",\n    \"tool_key\": \"tianyancha_search_company\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:50:07\",\n    \"update_time\": \"2024-03-29 14:50:07\",\n    \"id\": 9,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业基本信息\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取企业基本信息，企业基本信息包括公司名称或ID、类型、成立日期、经营状态、注册资本、法人、工商注册号、统一社会信用代码、组织机构代码、纳税人识别号等字段信息\",\n    \"tool_key\": \"tianyancha_get_company_baseinfo\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:51:06\",\n    \"update_time\": \"2024-03-29 14:51:06\",\n    \"id\": 10,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业知识产权信息\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取包含商标、专利、作品著作权、软件著作权、网站备案等维度的相关信息\",\n    \"tool_key\": \"tianyancha_ip_rights\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:51:33\",\n    \"update_time\": \"2024-03-29 14:51:33\",\n    \"id\": 11,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业司法风险\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取包含法律诉讼、法院公告、开庭公告、失信人、被执行人、立案信息、送达公告等维度的相关信息\",\n    \"tool_key\": \"tianyancha_judicial_risk\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:52:13\",\n    \"update_time\": \"2024-03-29 14:52:13\",\n    \"id\": 12,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业法律诉讼\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取企业法律诉讼信息，法律诉讼包括案件名称、案由、案件身份、案号等字段的详细信息\",\n    \"tool_key\": \"tianyancha_law_suit_case\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:52:36\",\n    \"update_time\": \"2024-03-29 14:52:36\",\n    \"id\": 13,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业工商信息\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取包含企业基本信息、主要人员、股东信息、对外投资、分支机构等维度的相关信息\",\n    \"tool_key\": \"tianyancha_ic_info\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:53:06\",\n    \"update_time\": \"2024-03-29 14:53:06\",\n    \"id\": 14,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业工商信息变更记录\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取企业变更记录，变更记录包括工商变更事项、变更前后信息等字段的详细信息\",\n    \"tool_key\": \"tianyancha_company_change_info\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:54:02\",\n    \"update_time\": \"2024-03-29 14:54:02\",\n    \"id\": 15,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业股东\",\n    \"logo\": null,\n    \"desc\": \"可以通过公司名称或ID获取企业股东信息，股东信息包括股东名、出资比例、出资金额、股东总数等字段的详细信息\",\n    \"tool_key\": \"tianyancha_company_holders\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:54:28\",\n    \"update_time\": \"2024-03-29 14:54:28\",\n    \"id\": 16,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"企业天眼风险\",\n    \"logo\": null,\n    \"desc\": \"可以通过关键字（公司名称、公司id、注册号或社会统一信用代码）获取企业相关天眼风险列表，包括企业自身/周边/预警风险信息。\",\n    \"tool_key\": \"tianyancha_riskinfo\",\n    \"type\": 7,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:54:57\",\n    \"update_time\": \"2024-03-29 14:54:57\",\n    \"id\": 17,\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"股票实时行情\",\n    \"logo\": null,\n    \"desc\": \"查询中国A股（沪深北交易所）股票或指数的实时行情数据，返回：现价、涨跌额、涨跌幅、成交量、成交额。\",\n    \"tool_key\": \"sina_realtime_info\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:56:15\",\n    \"update_time\": \"2024-03-29 14:56:15\",\n    \"id\": 18,\n    \"api_params\": [\n      {\n        \"name\": \"prefix\",\n        \"description\": \"前缀。如果是\\\"stock_symbol\\\"传入的为股票代码，则需要传入s_;\\n如果\\\"stock_symbol\\\"传入的为指数代码，则为空。\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"stock_exchange\",\n        \"description\": \"交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\\\"sh\\\"(上海证券交易所)、\\\" sz\\\"( 深圳证券交易所)、\\\"bj\\\"( 北京证券交易所)\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"stock_symbol\",\n        \"description\": \"6位数字的股票或者指数代码。\\\\n参考信息：\\\\n- 如果问题中未给出，可能需要上网查询。\\\\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\\\\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\\\"sh000300\\\"和\\\"sz399300\\\"两个代码。\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"股票历史行情\",\n    \"logo\": null,\n    \"desc\": \"查询中国A股（沪深北交易所）股票或指数的的历史行情数据，返回：时间、开盘价、最高价、最低价、收盘价、成交量（股）。\",\n    \"tool_key\": \"sina_history_KLine\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:56:38\",\n    \"update_time\": \"2024-03-29 14:56:38\",\n    \"id\": 19,\n    \"api_params\": [\n      {\n        \"name\": \"date\",\n        \"description\": \"需要查询的时间，按照”2024-03-26“格式，传入日期\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"stock_exchange\",\n        \"description\": \"交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\\\"sh\\\"(上海证券交易所)、\\\" sz\\\"( 深圳证券交易所)、\\\"bj\\\"( 北京证券交易所)\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"stock_symbol\",\n        \"description\": \"6位数字的股票或者指数代码。\\\\n参考信息：\\\\n- 如果问题中未给出，可能需要上网查询。\\\\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\\\\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\\\"sh000300\\\"和\\\"sz399300\\\"两个代码。\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"社会融资规模增量\",\n    \"logo\": null,\n    \"desc\": \"中国社会融资规模增量月度统计数据。返回数据包括：月份，社会融资规模增量(单位：亿元)，社融增量分项数据。分项数据具体包括：人民币贷款，外币贷款，委托贷款，信托贷款，未贴现银行承兑汇票，企业债券，非金融企业境内股票融资。\",\n    \"tool_key\": \"macro_china_shrzgm\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:59:06\",\n    \"update_time\": \"2024-03-29 14:59:06\",\n    \"id\": 20,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"GDP\",\n    \"logo\": null,\n    \"desc\": \" 中国国内生产总值（GDP）季度统计数据。返回数据包括：季度，当年累计GDP 绝对值及同比增长情况，第一、二、三产业 GDP 绝对值以及同比增长情况。\",\n    \"tool_key\": \"macro_china_gdp_yearly\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 14:59:38\",\n    \"update_time\": \"2024-03-29 14:59:38\",\n    \"id\": 21,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"CPI\",\n    \"logo\": null,\n    \"desc\": \"中国居民消费价格指数(CPI，上年同月=100)月度统计数据。返回数据包括：月份，全国当月 CPI，全国当月同比增长，全国当月环比增长，全国当年 CPI 累计值；城市当月 CPI，城市当月同比增长，城市当月环比增长，城市当年 CPI 累计值；农村当月 CPI，农村当月同比增长，农村当月环比增长，农村当年 CPI 累计值。\",\n    \"tool_key\": \"macro_china_cpi\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 15:00:00\",\n    \"update_time\": \"2024-03-29 15:00:00\",\n    \"id\": 22,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"PPI\",\n    \"logo\": null,\n    \"desc\": \"中国工业品出厂价格指数（PPI）月度统计数据。返回数据包括：月份，当月 PPI，当月同比增长，当年 PPI 累计值。\",\n    \"tool_key\": \"macro_china_ppi\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 15:00:24\",\n    \"update_time\": \"2024-03-29 15:00:24\",\n    \"id\": 23,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"货币供应量\",\n    \"logo\": null,\n    \"desc\": \"中国货币供应量月度统计数据。返回数据包括：月份，当月 M0、M1、M2数量以及同、环比情况。\",\n    \"tool_key\": \"macro_china_money_supply\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 15:00:54\",\n    \"update_time\": \"2024-03-29 15:00:54\",\n    \"id\": 24,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"社会消费品零售总额\",\n    \"logo\": null,\n    \"desc\": \"中国社会消费品零售总额月度统计数据。返回数据包括：月份，当月总额以及同、环比，当年累计总额以及同比情况。\",\n    \"tool_key\": \"macro_china_consumer_goods_retail\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-03-29 15:01:47\",\n    \"update_time\": \"2024-03-29 15:01:47\",\n    \"id\": 25,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"PMI\",\n    \"logo\": null,\n    \"desc\": \"中国 PMI （采购经理人指数）月度统计数据。返回数据包括：月份制造业 PMI，制造业 PMI 同比增长，非制造业 PMI，非制造业 PMI 同比增长。\",\n    \"tool_key\": \"macro_china_pmi\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-04-15 12:01:11\",\n    \"update_time\": \"2024-04-15 12:01:11\",\n    \"id\": 26,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"中美国债收益率\",\n    \"logo\": null,\n    \"desc\": \"本接口返回指定时间段[start_date,end_date]内交易日的中美两国的 2 年、5 年、10 年、30 年、10 年-2 年收益率数据。start_date表示起始日期，end_date表示结束日期，日期格式例如 2024-04-07\",\n    \"tool_key\": \"macro_bond_zh_us_rate\",\n    \"type\": 8,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": null,\n    \"create_time\": \"2024-04-15 12:03:27\",\n    \"update_time\": \"2024-04-15 12:03:27\",\n    \"id\": 27,\n    \"api_params\": [\n      {\n        \"name\": \"start_date\",\n        \"description\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      },\n      {\n        \"name\": \"end_date\",\n        \"description\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ]\n  },\n  {\n    \"name\": \"发送钉钉群消息\",\n    \"logo\": null,\n    \"desc\": \"通过钉钉群机器人，快速将消息推送到指定钉钉群组中\",\n    \"api_params\": [\n      {\n        \"in\": \"query\",\n        \"name\": \"url\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"自定义机器人的Wehhook地址\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"message\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"发送的文本消息内容\"\n      }\n    ],\n    \"tool_key\": \"ding_send_message\",\n    \"type\": 9,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2024-05-08 14:36:50\",\n    \"id\": 28\n  },\n  {\n    \"name\": \"单页面爬取|对应 Scrape 模式\",\n    \"logo\": null,\n    \"desc\": \"爬取并返回指定 URL 页面的内容，不会爬取子页面。\",\n    \"api_params\": [\n      {\n        \"in\": \"path\",\n        \"name\": \"target_url\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"要爬取的网站 url\"\n      }\n    ],\n    \"tool_key\": \"fire_search_scrape\",\n    \"type\": 10,\n    \"extra\": null,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-27 19:05:31\",\n    \"id\": 29\n  },\n  {\n    \"name\": \"获取单网页\",\n    \"logo\": null,\n    \"desc\": \"爬取指定URL（支持pdf），并将其转换为适合大模型处理的markdown格式\",\n    \"api_params\": [\n      {\n        \"in\": \"path\",\n        \"name\": \"target_url\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"要获取的目标网页\"\n      }\n    ],\n    \"tool_key\": \"jina_get_markdown\",\n    \"type\": 11,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-14 15:06:45\",\n    \"id\": 30\n  },\n  {\n    \"name\": \"Stable diffusion\",\n    \"logo\": null,\n    \"desc\": \"使用Stable Diffusion模型，根据用户提示词生成图像\",\n    \"api_params\": [\n      {\n        \"in\": \"path\",\n        \"name\": \"prompt\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"提示词生成图片描述词\"\n      },\n      {\n        \"in\": \"path\",\n        \"name\": \"negative_prompt\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"不希望图片包含的内容\"\n      }\n    ],\n    \"tool_key\": \"silicon_stable_diffusion\",\n    \"type\": 12,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-20 11:47:25\",\n    \"id\": 31\n  },\n  {\n    \"name\": \"Flux\",\n    \"logo\": null,\n    \"desc\": \"使用Flux模型，根据用户提示词生成图像\",\n    \"api_params\": [\n      {\n        \"in\": \"path\",\n        \"name\": \"prompt\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"提示词生成图片描述词（建议使用英文）\"\n      }\n    ],\n    \"tool_key\": \"silicon_flux\",\n    \"type\": 12,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-20 11:47:25\",\n    \"id\": 32\n  },\n  {\n    \"name\": \"向指定用户或者群聊发送消息\",\n    \"logo\": null,\n    \"desc\": \"向指定用户或者群聊发送消息\",\n    \"api_params\": [\n      {\n        \"in\": \"query\",\n        \"name\": \"message\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"发送的文本消息内容\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"receive_id\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"消息接收者的id\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"receive_id_type\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"用户id类型，可选值：open_id（标识一个用户在某个应用中的身份）；union_id（标识一个用户在某个应用开发商下的身份）；user_id（标识一个用户在某个租户内的身份）；email（以用户的真实邮箱来标识用户）；chat_id（以群 ID 来标识群聊）\"\n      }\n    ],\n    \"tool_key\": \"feishu_send_message\",\n    \"type\": 13,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-24 14:35:04\",\n    \"id\": 33\n  },\n  {\n    \"name\": \"发送企业微信群消息\",\n    \"logo\": null,\n    \"desc\": \"通过企业微信群机器人，快速将消息推送到指定企业微信群组中\",\n    \"api_params\": [\n      {\n        \"in\": \"query\",\n        \"name\": \"url\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"微信机器人的webhook地址\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"message\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"发送的消息内容\"\n      }\n    ],\n    \"tool_key\": \"wechat_send_message\",\n    \"type\": 15,\n    \"extra\": \"{}\",\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-08 10:55:32\",\n    \"id\": 34\n  },\n  {\n    \"name\": \"发送邮件\",\n    \"logo\": null,\n    \"desc\": \"给单个或多个邮箱发送邮件（多个邮箱账号使用\\\",\\\"分隔）\",\n    \"api_params\": [\n      {\n        \"in\": \"query\",\n        \"name\": \"receiver\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"接受邮件的邮箱地址，确定邮件发送对象\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"subject\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"邮件主题\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"content\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"邮件的正文内容\"\n      }\n    ],\n    \"tool_key\": \"email_send_email\",\n    \"type\": 14,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-03-03 22:10:20\",\n    \"id\": 35\n  },\n  {\n    \"name\": \"深度爬取|对应 Crawl 模式\",\n    \"logo\": null,\n    \"desc\": \"爬取并返回指定 URL 以及所有可访问子页面的内容。\",\n    \"api_params\": [\n      {\n        \"in\": \"path\",\n        \"name\": \"target_url\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"要爬取网站的起始 url。\"\n      }\n    ],\n    \"tool_key\": \"fire_search_crawl\",\n    \"type\": 10,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-27 19:05:31\",\n    \"id\": 36\n  },\n  {\n    \"name\": \"获取指定单聊、群聊的历史消息\",\n    \"logo\": null,\n    \"desc\": \"支持在单聊或群聊中快速获取相关内容\",\n    \"api_params\": [\n      {\n        \"in\": \"query\",\n        \"name\": \"container_id\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"单聊或群聊的id，或话题 id\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"container_id_type\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": true,\n        \"description\": \"容器类型。 可选值有： chat：包含单聊（p2p）和群聊（group）； thread：话题 。\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"start_time\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"待查询历史信息的起始时间，秒级时间戳。 注意：thread 容器类型暂不支持获取指定时间范围内的消息。\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"end_time\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"待查询历史信息的结束时间，秒级时间戳。注意：thread 容器类型暂不支持获取指定时间范围内的消息。\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"page_size\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"分页大小，单次请求所返回的数据条目数，默认值20，取值范围1~50。\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"sort_type\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"可选值有：ByCreateTimeAsc（按消息创建时间升序排列）；ByCreateTimeDesc（按消息创建时间降序排列）\"\n      },\n      {\n        \"in\": \"query\",\n        \"name\": \"page_token\",\n        \"schema\": {\n          \"type\": \"string\"\n        },\n        \"required\": false,\n        \"description\": \"分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果\"\n      }\n    ],\n    \"tool_key\": \"feishu_get_chat_messages\",\n    \"type\": 13,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 3,\n    \"create_time\": \"2024-05-08 14:36:50\",\n    \"update_time\": \"2025-02-24 14:35:04\",\n    \"id\": 37\n  },\n  {\n    \"name\": \"联网搜索\",\n    \"logo\": null,\n    \"desc\": \"使用 query 进行联网检索并返回结果。\",\n    \"api_params\": [\n      {\n        \"name\": \"query\",\n        \"description\": \"Search query\",\n        \"in\": \"query\",\n        \"required\": true,\n        \"schema\": {\n          \"type\": \"string\"\n        }\n      }\n    ],\n    \"tool_key\": \"web_search\",\n    \"type\": 16,\n    \"is_preset\": 1,\n    \"is_delete\": 0,\n    \"user_id\": 1,\n    \"id\": 38\n  }\n]"
  },
  {
    "path": "src/backend/bisheng/database/data/t_gpts_tools_type.json",
    "content": "[\n  {\n    \"id\": 1,\n    \"name\": \"时间\",\n    \"logo\": null,\n    \"description\": \"获取当前时间\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:25:26\",\n    \"update_time\": \"2024-04-30 10:25:26\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 2,\n    \"name\": \"计算器\",\n    \"logo\": null,\n    \"description\": \"使用 Python 内置工具进行数学表达式计算\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:28:30\",\n    \"update_time\": \"2024-04-30 10:28:30\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 3,\n    \"name\": \"论文获取\",\n    \"logo\": null,\n    \"description\": \"从 Arxiv 网站检索论文的工具，输入为检索关键词。\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:28:49\",\n    \"update_time\": \"2024-04-30 10:28:49\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 4,\n    \"name\": \"Dalle3绘画\",\n    \"logo\": \"\",\n    \"description\": \"OpenAI 文生图模型\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:24:30\",\n    \"update_time\": \"2024-04-30 10:24:30\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 5,\n    \"name\": \"Bing web搜索\",\n    \"logo\": \"\",\n    \"description\": \"BIng 搜索引擎，可联网检索互联网信息，例如天气、汇率、时事等\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:23:20\",\n    \"update_time\": \"2024-04-30 10:23:20\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 6,\n    \"name\": \"代码执行器\",\n    \"logo\": null,\n    \"description\": \"通过执行代码完成图表绘制、文件处理等编程类操作\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:07\",\n    \"update_time\": \"2024-04-30 10:26:07\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 7,\n    \"name\": \"天眼查\",\n    \"logo\": null,\n    \"description\": \"企业信息查询\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2024-04-30 10:26:40\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 8,\n    \"name\": \"经济金融数据\",\n    \"logo\": null,\n    \"description\": \"包含股票、基金、期货等行情数据和宏观经济、公司财务等基本面数据的金融大数据平台\",\n    \"auth_method\": null,\n    \"api_key\": null,\n    \"auth_type\": null,\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:27:12\",\n    \"update_time\": \"2024-04-30 10:27:12\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 9,\n    \"name\": \"钉钉\",\n    \"logo\": \"\",\n    \"description\": \"钉钉群机器人发送消息工具\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-01-10 21:22:37\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 10,\n    \"name\": \"Firecrawl\",\n    \"logo\": \"\",\n    \"description\": \"指定 URL 爬取网页内容，并将其转换为 Markdown 格式\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-02-27 19:05:31\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 11,\n    \"name\": \"Jina AI\",\n    \"logo\": \"\",\n    \"description\": \"将目标网址（支持 PDF）内容转换为大模型可处理的 Markdown 格式\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-02-14 15:06:45\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 12,\n    \"name\": \"SiliconFlow\",\n    \"logo\": \"\",\n    \"description\": \"基于文本提示生成高质量图像，支持 Flux 和 Stable Diffusion 模型\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-02-20 11:47:25\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 13,\n    \"name\": \"飞书消息\",\n    \"logo\": \"\",\n    \"description\": \"支持获取飞书单聊或群聊历史消息，向指定用户或者群聊发送消息\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-02-24 14:35:04\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 14,\n    \"name\": \"发送邮件\",\n    \"logo\": \"\",\n    \"description\": \"通过smtp协议发送电子邮件\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-03-03 22:10:20\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 15,\n    \"name\": \"企业微信\",\n    \"logo\": \"\",\n    \"description\": \"企业微信机器人发送群消息工具\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"create_time\": \"2024-04-30 10:26:40\",\n    \"update_time\": \"2025-01-10 21:22:37\",\n    \"openapi_schema\": null\n  },\n  {\n    \"id\": 16,\n    \"name\": \"联网搜索\",\n    \"logo\": \"\",\n    \"description\": \"搜索互联网信息，可配置使用不同的搜索引擎，目前支持 Bing、博查、Jina 深度搜索、SerpApi、Tavily。\",\n    \"server_host\": \"\",\n    \"auth_method\": 0,\n    \"api_key\": \"\",\n    \"auth_type\": \"basic\",\n    \"is_preset\": 1,\n    \"user_id\": null,\n    \"is_delete\": 0,\n    \"openapi_schema\": null\n  }\n]\n"
  },
  {
    "path": "src/backend/bisheng/database/data/template.json",
    "content": "[\n  {\n    \"update_time\": \"2024-08-20 16:27:48\",\n    \"parameters\": null,\n    \"name\": \"⭐️大模型对话（支持多轮）\",\n    \"description\": \"直接与大模型对话\",\n    \"flow_id\": \"544b7e31a34e4bdcaf2fc02d6bd67f4a\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:27:48\",\n    \"id\": 171,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-BishengLLM-2839cBishengLLM|BishengLLM-2839c|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ConversationChain-A1J5dBaseLanguageModel|llm|ConversationChain-A1J5d\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-2839c\",\n          \"target\": \"ConversationChain-A1J5d\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-2839c|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ConversationChain-A1J5d\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"ConversationChain-A1J5d\",\n          \"data\": {\n            \"id\": \"ConversationChain-A1J5d\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ConversationChain\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": false,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": {\n                    \"_type\": \"prompt\",\n                    \"template\": \"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"history\",\n                      \"input\"\n                    ],\n                    \"template_format\": \"f-string\",\n                    \"partial_variables\": {},\n                    \"validate_template\": true\n                  },\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"input\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"llm_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_kwargs\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"llm_kwargs\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"response\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseLLMOutputParser\",\n                  \"value\": {\n                    \"_type\": \"default\"\n                  },\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_final_only\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_final_only\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_final_only\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain to have a conversation and load context from memory.\",\n              \"base_classes\": [\n                \"ConversationChain\",\n                \"LLMChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"ConversationChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ConversationChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 301,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 960.9557711159376,\n            \"y\": 247.42733841910135\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 960.9557711159376,\n            \"y\": 247.42733841910135\n          }\n        },\n        {\n          \"id\": \"BishengLLM-2839c\",\n          \"data\": {\n            \"id\": \"BishengLLM-2839c\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 387.2949740637953,\n            \"y\": 154.06227685122178\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 387.2949740637953,\n            \"y\": 154.06227685122178\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 417.19304131976264,\n        \"y\": 206.78938474334075,\n        \"zoom\": 0.598528187050664\n      }\n    },\n    \"order_num\": 6094817,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:32:19\",\n    \"parameters\": null,\n    \"name\": \"⭐️ 输入网址进行问答\",\n    \"description\": \"输入网址，进行问答。该技能点击上线按钮以及创建会话时，都需要等待几秒钟，因为需要先执行网址数据爬取的流程。\",\n    \"flow_id\": \"dc4f9e141b8d4cf390ddc2c2c51efd8e\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:32:19\",\n    \"id\": 172,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-RCPNA\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-CWpae\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-WebBaseLoader-af6dbWebBaseLoader|WebBaseLoader-af6db|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"WebBaseLoader-af6db\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"WebBaseLoader|WebBaseLoader-af6db|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-1771b\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-db49dBishengLLM|BishengLLM-db49d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-db49d\",\n          \"target\": \"CombineDocsChain-RCPNA\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-db49d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-RCPNA\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-RCPNA\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-RCPNA\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"当前只对stuff 生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"position\": {\n            \"x\": 845.0164562381523,\n            \"y\": 124.74220334881426\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 845.0164562381523,\n            \"y\": 124.74220334881426\n          }\n        },\n        {\n          \"id\": \"Milvus-CWpae\",\n          \"data\": {\n            \"id\": \"Milvus-CWpae\",\n            \"node\": {\n              \"l2_name\": \"知识库\",\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"选择知识库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 857.7079649166786,\n            \"y\": 667.3224068392545\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 857.7079649166786,\n            \"y\": 667.3224068392545\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-x5nap\",\n          \"data\": {\n            \"id\": \"RetrievalQA-x5nap\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"RetrievalQA\",\n                \"Chain\",\n                \"BaseRetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          }\n        },\n        {\n          \"id\": \"WebBaseLoader-af6db\",\n          \"data\": {\n            \"id\": \"WebBaseLoader-af6db\",\n            \"node\": {\n              \"l2_name\": \"输入网址\",\n              \"template\": {\n                \"_type\": \"WebBaseLoader\",\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"web_path\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"web_path\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://dataelem.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\",\n                  \"l2_name\": \"网址\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Web Page\"\n                }\n              },\n              \"description\": \"Load HTML pages using `urllib` and parse them with `BeautifulSoup'.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"WebBaseLoader\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/web_base\"\n            },\n            \"type\": \"WebBaseLoader\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 357,\n          \"position\": {\n            \"x\": 333.05874389504135,\n            \"y\": 651.7320290450776\n          },\n          \"positionAbsolute\": {\n            \"x\": 333.05874389504135,\n            \"y\": 651.7320290450776\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-1771b\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-1771b\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"position\": {\n            \"x\": 345.75546354081786,\n            \"y\": 1048.504517975594\n          },\n          \"positionAbsolute\": {\n            \"x\": 345.75546354081786,\n            \"y\": 1048.504517975594\n          }\n        },\n        {\n          \"id\": \"BishengLLM-db49d\",\n          \"data\": {\n            \"id\": \"BishengLLM-db49d\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 338.00327145994027,\n            \"y\": 66.93400331593091\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 338.00327145994027,\n            \"y\": 66.93400331593091\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 267.90795205311633,\n        \"y\": 35.63343348513274,\n        \"zoom\": 0.6777805639494686\n      }\n    },\n    \"order_num\": 6160352,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:33:49\",\n    \"parameters\": null,\n    \"name\": \"⭐️ 表格数据问答\",\n    \"description\": \"上传CSV进行问答，使用CSV专用解析模块，相比通用解析模块，效果更好。\\nExcel文件可以转成CSV后上传体验。\",\n    \"flow_id\": \"b4a7482adcae44aa819f9ea5c7617ae5\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:33:49\",\n    \"id\": 173,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-RCPNA\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-CWpae\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-1771b\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-CSVLoader-854c0CSVLoader|CSVLoader-854c0|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CSVLoader-854c0\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"CSVLoader|CSVLoader-854c0|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-e4363InputFileNode|InputFileNode-e4363|fileNode-CSVLoader-854c0fileNode|file_path|CSVLoader-854c0\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-e4363\",\n          \"target\": \"CSVLoader-854c0\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-e4363|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|CSVLoader-854c0\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-83706BishengLLM|BishengLLM-83706|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-83706\",\n          \"target\": \"CombineDocsChain-RCPNA\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-83706|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-RCPNA\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-RCPNA\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-RCPNA\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"当前只对stuff 生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"position\": {\n            \"x\": 845.0164562381523,\n            \"y\": 124.74220334881426\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 845.0164562381523,\n            \"y\": 124.74220334881426\n          }\n        },\n        {\n          \"id\": \"Milvus-CWpae\",\n          \"data\": {\n            \"id\": \"Milvus-CWpae\",\n            \"node\": {\n              \"l2_name\": \"知识库\",\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"选择知识库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 857.7079649166786,\n            \"y\": 667.3224068392545\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 857.7079649166786,\n            \"y\": 667.3224068392545\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-x5nap\",\n          \"data\": {\n            \"id\": \"RetrievalQA-x5nap\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"RetrievalQA\",\n                \"Chain\",\n                \"BaseRetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-1771b\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-1771b\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 345.75546354081786,\n            \"y\": 1048.504517975594\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 345.75546354081786,\n            \"y\": 1048.504517975594\n          }\n        },\n        {\n          \"id\": \"CSVLoader-854c0\",\n          \"data\": {\n            \"id\": \"CSVLoader-854c0\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"CSVLoader\",\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".csv\"\n                  ],\n                  \"fileTypes\": [\n                    \"csv\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load a `CSV` file into a list of Documents.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"CSVLoader\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\"\n            },\n            \"type\": \"CSVLoader\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 291,\n          \"position\": {\n            \"x\": 326.7103840721531,\n            \"y\": 672.2493274470351\n          },\n          \"positionAbsolute\": {\n            \"x\": 326.7103840721531,\n            \"y\": 672.2493274470351\n          }\n        },\n        {\n          \"id\": \"InputFileNode-e4363\",\n          \"data\": {\n            \"id\": \"InputFileNode-e4363\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".csv\"\n                  ],\n                  \"fileTypes\": [\n                    \"csv\"\n                  ],\n                  \"file_path\": null,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"CSV文件\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -176.39713189174194,\n            \"y\": 643.681708244038\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -176.39713189174194,\n            \"y\": 643.681708244038\n          }\n        },\n        {\n          \"id\": \"BishengLLM-83706\",\n          \"data\": {\n            \"id\": \"BishengLLM-83706\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 318.5459219608139,\n            \"y\": 81.68804102649821\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 318.5459219608139,\n            \"y\": 81.68804102649821\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 270.09576536959617,\n        \"y\": 21.63343348513274,\n        \"zoom\": 0.6777805639494686\n      }\n    },\n    \"order_num\": 6225887,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:43:27\",\n    \"parameters\": null,\n    \"name\": \"☘️合同审核\",\n    \"description\": \"上传合同文件，自动触发预设的审查问题\",\n    \"flow_id\": \"cfca77afb829477190d11b9caccaa9c4\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:43:27\",\n    \"id\": 175,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-5EyWUCombineDocsChain|CombineDocsChain-5EyWU|BaseCombineDocumentsChain|function-RetrievalQA-wKjqvBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-wKjqv\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-5EyWU\",\n          \"target\": \"RetrievalQA-wKjqv\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-5EyWU|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-wKjqv\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalQA-wKjqvRetrievalQA|RetrievalQA-wKjqv|Chain|RetrievalQA|BaseRetrievalQA|function-Tool-0dIGDfunction|func|Tool-0dIGD\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalQA-wKjqv\",\n          \"target\": \"Tool-0dIGD\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"RetrievalQA|RetrievalQA-wKjqv|BaseRetrievalQA|Chain|RetrievalQA|function\",\n          \"targetHandle\": \"function|func|Tool-0dIGD\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-hs3JXMilvus|Milvus-hs3JX|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-wKjqvBaseRetriever|retriever|RetrievalQA-wKjqv\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-hs3JX\",\n          \"target\": \"RetrievalQA-wKjqv\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-hs3JX|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-wKjqv\"\n        },\n        {\n          \"id\": \"reactflow__edge-Tool-0dIGDTool|Tool-0dIGD|Tool|BaseTool-ZeroShotAgent-Vpn4kBaseTool|tools|ZeroShotAgent-Vpn4k\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Tool-0dIGD\",\n          \"target\": \"ZeroShotAgent-Vpn4k\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Tool|Tool-0dIGD|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-Vpn4k\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-5TAiXOpenAIProxyEmbedding|OpenAIProxyEmbedding-5TAiX|Embeddings-Milvus-hs3JXEmbeddings|embedding|Milvus-hs3JX\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-5TAiX\",\n          \"target\": \"Milvus-hs3JX\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-5TAiX|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-hs3JX\"\n        },\n        {\n          \"id\": \"reactflow__edge-BingSearchAPIWrapper-9285QBingSearchAPIWrapper|BingSearchAPIWrapper-9285Q|BingSearchAPIWrapper-BingSearchRun-TAJzwBingSearchAPIWrapper|api_wrapper|BingSearchRun-TAJzw\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchAPIWrapper-9285Q\",\n          \"target\": \"BingSearchRun-TAJzw\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BingSearchAPIWrapper|BingSearchAPIWrapper-9285Q|BingSearchAPIWrapper\",\n          \"targetHandle\": \"BingSearchAPIWrapper|api_wrapper|BingSearchRun-TAJzw\"\n        },\n        {\n          \"id\": \"reactflow__edge-BingSearchRun-TAJzwBingSearchRun|BingSearchRun-TAJzw|Tool|BaseTool|BaseTool|BingSearchRun-ZeroShotAgent-Vpn4kBaseTool|tools|ZeroShotAgent-Vpn4k\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchRun-TAJzw\",\n          \"target\": \"ZeroShotAgent-Vpn4k\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BingSearchRun|BingSearchRun-TAJzw|Tool|BaseTool|BingSearchRun|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-Vpn4k\"\n        },\n        {\n          \"id\": \"reactflow__edge-Calculator-g6AEOCalculator|Calculator-g6AEO|Tool|BaseTool-ZeroShotAgent-Vpn4kBaseTool|tools|ZeroShotAgent-Vpn4k\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Calculator-g6AEO\",\n          \"target\": \"ZeroShotAgent-Vpn4k\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Calculator|Calculator-g6AEO|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-Vpn4k\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-LENRkInputNode|InputNode-LENRk|input-ZeroShotAgent-Vpn4kinput|input_node|ZeroShotAgent-Vpn4k\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-LENRk\",\n          \"target\": \"ZeroShotAgent-Vpn4k\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"InputNode|InputNode-LENRk|input\",\n          \"targetHandle\": \"input|input_node|ZeroShotAgent-Vpn4k\"\n        },\n        {\n          \"id\": \"reactflow__edge-PyPDFLoader-nVufmPyPDFLoader|PyPDFLoader-nVufm|Document-RecursiveCharacterTextSplitter-ahXPxDocument|documents|RecursiveCharacterTextSplitter-ahXPx\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PyPDFLoader-nVufm\",\n          \"target\": \"RecursiveCharacterTextSplitter-ahXPx\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"PyPDFLoader|PyPDFLoader-nVufm|Document\",\n          \"targetHandle\": \"Document|documents|RecursiveCharacterTextSplitter-ahXPx\"\n        },\n        {\n          \"id\": \"reactflow__edge-RecursiveCharacterTextSplitter-ahXPxRecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-ahXPx|Document-Milvus-hs3JXDocument|documents|Milvus-hs3JX\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RecursiveCharacterTextSplitter-ahXPx\",\n          \"target\": \"Milvus-hs3JX\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-ahXPx|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-hs3JX\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-a591dBishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-5EyWUBaseLanguageModel|llm|CombineDocsChain-5EyWU\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-a591d\",\n          \"target\": \"CombineDocsChain-5EyWU\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-5EyWU\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-a591dBishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ZeroShotAgent-Vpn4kBaseLanguageModel|llm|ZeroShotAgent-Vpn4k\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-a591d\",\n          \"target\": \"ZeroShotAgent-Vpn4k\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ZeroShotAgent-Vpn4k\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-a591dBishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-Calculator-g6AEOBaseLanguageModel|llm|Calculator-g6AEO\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-a591d\",\n          \"target\": \"Calculator-g6AEO\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-a591d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|Calculator-g6AEO\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-dd5fcInputFileNode|InputFileNode-dd5fc|fileNode-PyPDFLoader-nVufmfileNode|file_path|PyPDFLoader-nVufm\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-dd5fc\",\n          \"target\": \"PyPDFLoader-nVufm\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-dd5fc|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|PyPDFLoader-nVufm\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-5EyWU\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-5EyWU\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"position\": {\n            \"x\": 1600.092442163245,\n            \"y\": 227.94525786055965\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1600.092442163245,\n            \"y\": 227.94525786055965\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-wKjqv\",\n          \"data\": {\n            \"id\": \"RetrievalQA-wKjqv\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"BaseRetrievalQA\",\n                \"Chain\",\n                \"RetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2214.008643017949,\n            \"y\": 410.0707219409365\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2214.008643017949,\n            \"y\": 410.0707219409365\n          }\n        },\n        {\n          \"id\": \"Tool-0dIGD\",\n          \"data\": {\n            \"id\": \"Tool-0dIGD\",\n            \"node\": {\n              \"template\": {\n                \"func\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"func\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"l2_name\": \"func\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Basic_information\",\n                  \"l2_name\": \"name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Tool\",\n                \"description\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"description\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"如果需要知道关于这份合同的各方面信息，可以使用该工具。如：\\n- 合同的价款是多少？\\n- 合同的甲方和乙方分别是谁？\\n- 合同关于违约金是如何约定的？\\n- 合同的免责条款是什么？\\n\",\n                  \"l2_name\": \"description\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"return_direct\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_direct\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"return_direct\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Converts a chain, agent or function into a tool.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Tool\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Tool\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 445,\n          \"position\": {\n            \"x\": 2726.848698975115,\n            \"y\": 439.56467505828414\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2726.848698975115,\n            \"y\": 439.56467505828414\n          }\n        },\n        {\n          \"id\": \"Milvus-hs3JX\",\n          \"data\": {\n            \"id\": \"Milvus-hs3JX\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"collection_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"VectorStore\",\n                \"Milvus\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1624.5397713340649,\n            \"y\": 643.8868403230642\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1624.5397713340649,\n            \"y\": 643.8868403230642\n          }\n        },\n        {\n          \"id\": \"ZeroShotAgent-Vpn4k\",\n          \"data\": {\n            \"id\": \"ZeroShotAgent-Vpn4k\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ZeroShotAgent\",\n                \"tools\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tools\",\n                  \"show\": true,\n                  \"type\": \"BaseTool\",\n                  \"l2_name\": \"tools\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Answer the following questions in Chinese as best you can. Think step by step. You have access to the following tools:\",\n                  \"l2_name\": \"prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"suffix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Begin!\\n\\nQuestion: {query}\\nThought:{agent_scratchpad}\",\n                  \"l2_name\": \"suffix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"AgentOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"query\",\n                    \"agent_scratchpad\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callback_manager\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callback_manager\",\n                  \"show\": false,\n                  \"type\": \"BaseCallbackManager\",\n                  \"l2_name\": \"callback_manager\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"format_instructions\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"- If questions are ralated to the tool [Basic_information], you should transmit related-questions on to [Basic_information] with no split.\\n\\n\\nUse the following format:\\n\\nQuestion: 该合同是根据什么法律签订的？\\n# the query question you must answer\\nThought: 找到该合同的法律依据\\n# you should always think about what to do\\nAction: Basic_information\\n# the action to take, should be one of [{tool_names}]\\nAction Input: 该合同是根据什么法律签订的？\\n# the input to the action\\nObservation: \\n# the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: \\n# the final answer to the original input question\",\n                  \"l2_name\": \"format_instructions\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Construct an agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"ZeroShotAgent\",\n                \"Agent\",\n                \"BaseSingleActionAgent\",\n                \"function\"\n              ],\n              \"display_name\": \"ZeroShotAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\"\n            },\n            \"type\": \"ZeroShotAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 659,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 3738.5526393054743,\n            \"y\": 722.4823701379853\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 3738.5526393054743,\n            \"y\": 722.4823701379853\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-5TAiX\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-5TAiX\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"proxy_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"position\": {\n            \"x\": 901.2922965468372,\n            \"y\": 1334.1551610865345\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 901.2922965468372,\n            \"y\": 1334.1551610865345\n          }\n        },\n        {\n          \"id\": \"BingSearchRun-TAJzw\",\n          \"data\": {\n            \"id\": \"BingSearchRun-TAJzw\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchRun\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"api_wrapper\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_wrapper\",\n                  \"show\": true,\n                  \"type\": \"BingSearchAPIWrapper\",\n                  \"l2_name\": \"api_wrapper\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"args_schema\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"args_schema\",\n                  \"show\": false,\n                  \"type\": \"Type[pydantic.main.BaseModel]\",\n                  \"l2_name\": \"args_schema\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"handle_tool_error\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"handle_tool_error\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"handle_tool_error\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A wrapper around Bing Search. Useful for when you need to answer questions about current events. Input should be a search query.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\",\n                \"BingSearchRun\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"BingSearchRun\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchRun\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 249,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2740.6814356916484,\n            \"y\": 1030.8252309669626\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2740.6814356916484,\n            \"y\": 1030.8252309669626\n          }\n        },\n        {\n          \"id\": \"BingSearchAPIWrapper-9285Q\",\n          \"data\": {\n            \"id\": \"BingSearchAPIWrapper-9285Q\",\n            \"node\": {\n              \"template\": {\n                \"k\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"k\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 10,\n                  \"l2_name\": \"k\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchAPIWrapper\",\n                \"bing_search_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_search_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://api.bing.microsoft.com/v7.0/search\",\n                  \"l2_name\": \"bing_search_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"bing_subscription_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_subscription_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"137b003c89f04966ac3b1081ee5b10bc\",\n                  \"l2_name\": \"bing_subscription_key\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Wrapper for Bing Search API.\",\n              \"base_classes\": [\n                \"BingSearchAPIWrapper\"\n              ],\n              \"display_name\": \"BingSearchAPIWrapper\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchAPIWrapper\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2055.4764429926604,\n            \"y\": 1160.385181052582\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2055.4764429926604,\n            \"y\": 1160.385181052582\n          }\n        },\n        {\n          \"id\": \"Calculator-g6AEO\",\n          \"data\": {\n            \"id\": \"Calculator-g6AEO\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Calculator\"\n              },\n              \"description\": \"Useful for when you need to answer questions about math.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Calculator\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Calculator\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 229,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2732.119874152286,\n            \"y\": 131.7347928894963\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2732.119874152286,\n            \"y\": 131.7347928894963\n          }\n        },\n        {\n          \"id\": \"InputNode-LENRk\",\n          \"data\": {\n            \"id\": \"InputNode-LENRk\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"这份合同中有约定价款的支付途径吗？\",\n                    \"合同中是否约定了履行时间？\",\n                    \"合同中约定了知识产权侵权责任吗？\",\n                    \"合同中是否约定了甲方未按期支付款项的违约责任？\",\n                    \"合同是否约定了解决纠纷的方法？如果是通过仲裁解决纠纷，是否有约定仲裁机构？\",\n                    \"合同中提到了几次甲方名称？这几次的甲方名称都一样吗？\",\n                    \"合同中提到了几次乙方名称？提到的乙方名称都一样吗？\",\n                    \"合同全部费用的大写金额和小写金额是多少？这两个数字一样吗？\",\n                    \"合同的发票项目是什么？搜索该发票项目对应的一般纳税人税率是多少\",\n                    \"合同的违约金赔偿利率是多少？合同签订日期是哪年哪月？使用获得的答案，搜索合同签订日期当年当月的中国人民银行授权全国银行间同业拆借中心公布的一年期贷款市场报价利率（LPR）是多少？计算合同的违约金赔偿利率大于LPR的1.5倍吗？\"\n                  ],\n                  \"l2_name\": \"审核问题\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 705,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 3228.770319808037,\n            \"y\": -405.0472199949312\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 3228.770319808037,\n            \"y\": -405.0472199949312\n          }\n        },\n        {\n          \"id\": \"PyPDFLoader-nVufm\",\n          \"data\": {\n            \"id\": \"PyPDFLoader-nVufm\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"PyPDFLoader\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"l2_name\": \"file_path\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".pdf\"\n                  ],\n                  \"fileTypes\": [\n                    \"pdf\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Loads a PDF with pypdf and chunks at character level.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"PyPDFLoader\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_loaders/how_to/pdf\"\n            },\n            \"type\": \"PyPDFLoader\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 311,\n          \"position\": {\n            \"x\": 545.6794870854769,\n            \"y\": 576.4247493553407\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 545.6794870854769,\n            \"y\": 576.4247493553407\n          }\n        },\n        {\n          \"id\": \"RecursiveCharacterTextSplitter-ahXPx\",\n          \"data\": {\n            \"id\": \"RecursiveCharacterTextSplitter-ahXPx\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"RecursiveCharacterTextSplitter\",\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chunk_size\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_size\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 1000,\n                  \"l2_name\": \"chunk_size\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Size\"\n                },\n                \"separators\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"separators\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\\\\n\",\n                  \"l2_name\": \"separators\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator\"\n                },\n                \"chunk_overlap\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_overlap\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 200,\n                  \"l2_name\": \"chunk_overlap\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Overlap\"\n                },\n                \"separator_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"separator_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Text\",\n                  \"l2_name\": \"separator_type\",\n                  \"options\": [\n                    \"Text\",\n                    \"cpp\",\n                    \"go\",\n                    \"html\",\n                    \"java\",\n                    \"js\",\n                    \"latex\",\n                    \"markdown\",\n                    \"php\",\n                    \"proto\",\n                    \"python\",\n                    \"rst\",\n                    \"ruby\",\n                    \"rust\",\n                    \"scala\",\n                    \"sol\",\n                    \"swift\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator Type\"\n                }\n              },\n              \"description\": \"Implementation of splitting text that looks at characters.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"RecursiveCharacterTextSplitter\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\n            },\n            \"type\": \"RecursiveCharacterTextSplitter\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 561,\n          \"position\": {\n            \"x\": 993.2830986988388,\n            \"y\": 672.9264454371207\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 993.2830986988388,\n            \"y\": 672.9264454371207\n          }\n        },\n        {\n          \"id\": \"BishengLLM-a591d\",\n          \"data\": {\n            \"id\": \"BishengLLM-a591d\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1053.9828212208936,\n            \"y\": 59.894169470406155\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1053.9828212208936,\n            \"y\": 59.894169470406155\n          }\n        },\n        {\n          \"id\": \"InputFileNode-dd5fc\",\n          \"data\": {\n            \"id\": \"InputFileNode-dd5fc\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".pdf\"\n                  ],\n                  \"fileTypes\": [\n                    \"pdf\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"请上传文件\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 66.88900058530322,\n            \"y\": 650.6996948374481\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 66.88900058530322,\n            \"y\": 650.6996948374481\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": -20.328962469404587,\n        \"y\": -153.06745791725848,\n        \"zoom\": 0.9467769276749988\n      }\n    },\n    \"order_num\": 6291422,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:45:43\",\n    \"parameters\": null,\n    \"name\": \"⭐️角色扮演\",\n    \"description\": \"模板是一个面试官角色，可以更换提示词变成别的角色。\",\n    \"flow_id\": \"523971dc79e84d9bbe4187ab0bdb2583\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:45:43\",\n    \"id\": 176,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-ZoUVTPromptTemplate|PromptTemplate-ZoUVT|StringPromptTemplate|PromptTemplate|BasePromptTemplate-LLMChain-wRz0cBasePromptTemplate|prompt|LLMChain-wRz0c\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-ZoUVT\",\n          \"target\": \"LLMChain-wRz0c\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-ZoUVT|PromptTemplate|StringPromptTemplate|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|LLMChain-wRz0c\"\n        },\n        {\n          \"id\": \"reactflow__edge-ConversationBufferMemory-lI5PtConversationBufferMemory|ConversationBufferMemory-lI5Pt|ConversationBufferMemory|BaseMemory|BaseChatMemory-LLMChain-wRz0cBaseMemory|memory|LLMChain-wRz0c\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ConversationBufferMemory-lI5Pt\",\n          \"target\": \"LLMChain-wRz0c\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"ConversationBufferMemory|ConversationBufferMemory-lI5Pt|BaseChatMemory|ConversationBufferMemory|BaseMemory\",\n          \"targetHandle\": \"BaseMemory|memory|LLMChain-wRz0c\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-3bb75BishengLLM|BishengLLM-3bb75|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-LLMChain-wRz0cBaseLanguageModel|llm|LLMChain-wRz0c\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-3bb75\",\n          \"target\": \"LLMChain-wRz0c\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-3bb75|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|LLMChain-wRz0c\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"LLMChain-wRz0c\",\n          \"data\": {\n            \"id\": \"LLMChain-wRz0c\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"LLMChain\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"llm_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_kwargs\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"llm_kwargs\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"text\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseLLMOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_final_only\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_final_only\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_final_only\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain to run queries against LLMs.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"LLMChain\",\n                \"function\"\n              ],\n              \"display_name\": \"LLMChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"\n            },\n            \"type\": \"LLMChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1556.1679330787729,\n            \"y\": 1103.1743625556214\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1556.1679330787729,\n            \"y\": 1103.1743625556214\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-ZoUVT\",\n          \"data\": {\n            \"id\": \"PromptTemplate-ZoUVT\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"input\"\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"System：\\n你将扮演一个科技公司的面试官，面试者是一名产品经理，提出 3 个犀利的问题。\\n请注意：\\n- 每次只问一个问题\\n- 面试者回答问题后请简短点评一下，然后问下一个问题，不要试图纠正候选人的错误；\\n- 如果你认为用户连续几次回答的都不对，就少问一点；\\n- 问完最后一个问题后，你可以问这样一个问题：上一份工作为什么离职？用户回答该问题后，请表示理解与支持，并停止与面试者的对话。若面试者继续说话你可以礼貌拒绝。\\n\\n以下是你们的对话记录\\n\\n{chat_history}\\n\\n面试者：{input}\\n\\n你的回答：\",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"chat_history\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chat_history\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"chat_history\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"chat_history\",\n                    \"input\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"PromptTemplate\",\n                \"StringPromptTemplate\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"template\": [\n                  \"chat_history\",\n                  \"input\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {\n                \"formatters\": {\n                  \"openai_api_key\": {}\n                },\n                \"base_formatters\": {\n                  \"dict\": {},\n                  \"list\": {},\n                  \"show\": {},\n                  \"union\": {},\n                  \"kwargs\": {},\n                  \"default\": {},\n                  \"headers\": {},\n                  \"optional\": {},\n                  \"password\": {},\n                  \"multiline\": {},\n                  \"model_fields\": {\n                    \"MODEL_DICT\": {\n                      \"OpenAI\": [\n                        \"text-davinci-003\",\n                        \"text-davinci-002\",\n                        \"text-curie-001\",\n                        \"text-babbage-001\",\n                        \"text-ada-001\"\n                      ],\n                      \"Anthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ],\n                      \"ChatOpenAI\": [\n                        \"gpt-3.5-turbo-0613\",\n                        \"gpt-3.5-turbo\",\n                        \"gpt-3.5-turbo-16k-0613\",\n                        \"gpt-3.5-turbo-16k\",\n                        \"gpt-4-0613\",\n                        \"gpt-4-32k-0613\",\n                        \"gpt-4\",\n                        \"gpt-4-32k\"\n                      ],\n                      \"ChatAnthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ]\n                    }\n                  },\n                  \"dict_code_file\": {}\n                }\n              }\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 419,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 782.4698380009005,\n            \"y\": 1522.4191451020877\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 782.4698380009005,\n            \"y\": 1522.4191451020877\n          }\n        },\n        {\n          \"id\": \"ConversationBufferMemory-lI5Pt\",\n          \"data\": {\n            \"id\": \"ConversationBufferMemory-lI5Pt\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ConversationBufferMemory\",\n                \"ai_prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"ai_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"AI\",\n                  \"l2_name\": \"ai_prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"memory_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"chat_history\",\n                  \"l2_name\": \"memory_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chat_memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chat_memory\",\n                  \"show\": true,\n                  \"type\": \"BaseChatMessageHistory\",\n                  \"l2_name\": \"chat_memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"human_prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"human_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Human\",\n                  \"l2_name\": \"human_prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_messages\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_messages\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"return_messages\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Buffer for storing conversation memory.\",\n              \"base_classes\": [\n                \"BaseChatMemory\",\n                \"ConversationBufferMemory\",\n                \"BaseMemory\"\n              ],\n              \"display_name\": \"ConversationBufferMemory\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n            },\n            \"type\": \"ConversationBufferMemory\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 527,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 378.4886538486901,\n            \"y\": 959.6786678431888\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 378.4886538486901,\n            \"y\": 959.6786678431888\n          }\n        },\n        {\n          \"id\": \"BishengLLM-3bb75\",\n          \"data\": {\n            \"id\": \"BishengLLM-3bb75\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"position\": {\n            \"x\": 892.0260725263943,\n            \"y\": 617.6812234671859\n          },\n          \"positionAbsolute\": {\n            \"x\": 892.0260725263943,\n            \"y\": 617.6812234671859\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 147.39902426086758,\n        \"y\": -337.0826199129119,\n        \"zoom\": 0.6112168397288411\n      }\n    },\n    \"order_num\": 6356957,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:51:57\",\n    \"parameters\": null,\n    \"name\": \"⭐️文章摘要\",\n    \"description\": \"上传文件自动触发文档摘要，当前支持文件格式：png, jpeg, jpg,pdf\",\n    \"flow_id\": \"c642e5031c1244829ddc0a59c7a5e3fd\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:51:57\",\n    \"id\": 178,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-RCPNA\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-CWpae\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-EfneiInputNode|InputNode-Efnei|input-RetrievalQA-x5napinput|input_node|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-Efnei\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"InputNode|InputNode-Efnei|input\",\n          \"targetHandle\": \"input|input_node|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-swx68OpenAIProxyEmbedding|OpenAIProxyEmbedding-swx68|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-swx68\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-swx68|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-rUBtAInputFileNode|InputFileNode-rUBtA|fileNode-ElemUnstructuredLoaderV0-2K7FCfileNode|file_path|ElemUnstructuredLoaderV0-2K7FC\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-rUBtA\",\n          \"target\": \"ElemUnstructuredLoaderV0-2K7FC\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-rUBtA|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-2K7FC\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-2K7FCElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-2K7FC|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-2K7FC\",\n          \"target\": \"Milvus-CWpae\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-2K7FC|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-CWpae\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-86c36BishengLLM|BishengLLM-86c36|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-86c36\",\n          \"target\": \"CombineDocsChain-RCPNA\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-86c36|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-RCPNA\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-RCPNA\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-RCPNA\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"当前只对stuff 生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 845.0164562381523,\n            \"y\": 204.35580627436775\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 845.0164562381523,\n            \"y\": 204.35580627436775\n          }\n        },\n        {\n          \"id\": \"Milvus-CWpae\",\n          \"data\": {\n            \"id\": \"Milvus-CWpae\",\n            \"node\": {\n              \"l2_name\": \"知识库\",\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"选择知识库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1084.3422855390577,\n            \"y\": 695.7475330381905\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1084.3422855390577,\n            \"y\": 695.7475330381905\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-x5nap\",\n          \"data\": {\n            \"id\": \"RetrievalQA-x5nap\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"BaseRetrievalQA\",\n                \"RetrievalQA\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1516.3297428236956,\n            \"y\": 563.8820893628344\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1516.3297428236956,\n            \"y\": 563.8820893628344\n          }\n        },\n        {\n          \"id\": \"InputNode-Efnei\",\n          \"data\": {\n            \"id\": \"InputNode-Efnei\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"这篇文章的主要内容是什么？请生成该文章的摘要\"\n                  ],\n                  \"l2_name\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1245.632226598747,\n            \"y\": 190.02499863969456\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1245.632226598747,\n            \"y\": 190.02499863969456\n          }\n        },\n        {\n          \"id\": \"InputFileNode-rUBtA\",\n          \"data\": {\n            \"id\": \"InputFileNode-rUBtA\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"l2_name\": \"file_path\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xlsx\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"file_path\": null,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 189.1572111197503,\n            \"y\": 644.2048195861047\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 189.1572111197503,\n            \"y\": 644.2048195861047\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-swx68\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-swx68\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"proxy_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 617.8305142283027,\n            \"y\": 1050.5852539090324\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 617.8305142283027,\n            \"y\": 1050.5852539090324\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-2K7FC\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-2K7FC\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xlsx\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\"\n                }\n              },\n              \"description\": \"Loads a PDF with pypdf and chunks at character level. dummy version\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 619.7399756791771,\n            \"y\": 615.1613231146783\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 619.7399756791771,\n            \"y\": 615.1613231146783\n          }\n        },\n        {\n          \"id\": \"BishengLLM-86c36\",\n          \"data\": {\n            \"id\": \"BishengLLM-86c36\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 321.78279586604197,\n            \"y\": 75.49875367670856\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 321.78279586604197,\n            \"y\": 75.49875367670856\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 235.78430160378775,\n        \"y\": 22.158441172777714,\n        \"zoom\": 0.6998997500474495\n      }\n    },\n    \"order_num\": 6488027,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 16:57:42\",\n    \"parameters\": null,\n    \"name\": \"☘️招股书分析\",\n    \"description\": \"上传招股书报告，自动触发预设的分析问题\",\n    \"flow_id\": \"159a4536c3834406b5e134c25ab6fb4b\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 16:57:42\",\n    \"id\": 179,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-rc2FkCombineDocsChain|CombineDocsChain-rc2Fk|BaseCombineDocumentsChain|function-RetrievalQA-u9DZuBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-u9DZu\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-rc2Fk\",\n          \"target\": \"RetrievalQA-u9DZu\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-rc2Fk|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-u9DZu\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalQA-u9DZuRetrievalQA|RetrievalQA-u9DZu|Chain|BaseRetrievalQA|RetrievalQA|function-Tool-FbOTwfunction|func|Tool-FbOTw\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalQA-u9DZu\",\n          \"target\": \"Tool-FbOTw\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RetrievalQA|RetrievalQA-u9DZu|Chain|BaseRetrievalQA|RetrievalQA|function\",\n          \"targetHandle\": \"function|func|Tool-FbOTw\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-4LcfVMilvus|Milvus-4LcfV|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-u9DZuBaseRetriever|retriever|RetrievalQA-u9DZu\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-4LcfV\",\n          \"target\": \"RetrievalQA-u9DZu\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Milvus|Milvus-4LcfV|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-u9DZu\"\n        },\n        {\n          \"id\": \"reactflow__edge-Tool-FbOTwTool|Tool-FbOTw|Tool|BaseTool-ZeroShotAgent-o94zNBaseTool|tools|ZeroShotAgent-o94zN\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Tool-FbOTw\",\n          \"target\": \"ZeroShotAgent-o94zN\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Tool|Tool-FbOTw|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-o94zN\"\n        },\n        {\n          \"id\": \"reactflow__edge-Calculator-CfVqiCalculator|Calculator-CfVqi|Tool|BaseTool-ZeroShotAgent-o94zNBaseTool|tools|ZeroShotAgent-o94zN\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Calculator-CfVqi\",\n          \"target\": \"ZeroShotAgent-o94zN\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Calculator|Calculator-CfVqi|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-o94zN\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-NPuMIOpenAIProxyEmbedding|OpenAIProxyEmbedding-NPuMI|Embeddings-Milvus-4LcfVEmbeddings|embedding|Milvus-4LcfV\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-NPuMI\",\n          \"target\": \"Milvus-4LcfV\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-NPuMI|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-4LcfV\"\n        },\n        {\n          \"id\": \"reactflow__edge-RecursiveCharacterTextSplitter-sTTDTRecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-sTTDT|Document-Milvus-4LcfVDocument|documents|Milvus-4LcfV\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RecursiveCharacterTextSplitter-sTTDT\",\n          \"target\": \"Milvus-4LcfV\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-sTTDT|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-4LcfV\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-HLAg0InputNode|InputNode-HLAg0|input-ZeroShotAgent-o94zNinput|input_node|ZeroShotAgent-o94zN\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-HLAg0\",\n          \"target\": \"ZeroShotAgent-o94zN\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"InputNode|InputNode-HLAg0|input\",\n          \"targetHandle\": \"input|input_node|ZeroShotAgent-o94zN\"\n        },\n        {\n          \"id\": \"reactflow__edge-BingSearchAPIWrapper-I86u8BingSearchAPIWrapper|BingSearchAPIWrapper-I86u8|BingSearchAPIWrapper-BingSearchRun-gmZjQBingSearchAPIWrapper|api_wrapper|BingSearchRun-gmZjQ\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchAPIWrapper-I86u8\",\n          \"target\": \"BingSearchRun-gmZjQ\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"BingSearchAPIWrapper|BingSearchAPIWrapper-I86u8|BingSearchAPIWrapper\",\n          \"targetHandle\": \"BingSearchAPIWrapper|api_wrapper|BingSearchRun-gmZjQ\"\n        },\n        {\n          \"id\": \"reactflow__edge-BingSearchRun-gmZjQBingSearchRun|BingSearchRun-gmZjQ|Tool|BaseTool|BaseTool|BingSearchRun-ZeroShotAgent-o94zNBaseTool|tools|ZeroShotAgent-o94zN\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchRun-gmZjQ\",\n          \"target\": \"ZeroShotAgent-o94zN\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"BingSearchRun|BingSearchRun-gmZjQ|Tool|BaseTool|BaseTool|BingSearchRun\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-o94zN\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-IR0Z1InputFileNode|InputFileNode-IR0Z1|fileNode-ElemUnstructuredLoaderV0-4rq3AfileNode|file_path|ElemUnstructuredLoaderV0-4rq3A\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-IR0Z1\",\n          \"target\": \"ElemUnstructuredLoaderV0-4rq3A\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-IR0Z1|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-4rq3A\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-4rq3AElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-4rq3A|Document-RecursiveCharacterTextSplitter-sTTDTDocument|documents|RecursiveCharacterTextSplitter-sTTDT\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-4rq3A\",\n          \"target\": \"RecursiveCharacterTextSplitter-sTTDT\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-4rq3A|Document\",\n          \"targetHandle\": \"Document|documents|RecursiveCharacterTextSplitter-sTTDT\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-6dc86BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-rc2FkBaseLanguageModel|llm|CombineDocsChain-rc2Fk\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-6dc86\",\n          \"target\": \"CombineDocsChain-rc2Fk\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-rc2Fk\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-6dc86BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-Calculator-CfVqiBaseLanguageModel|llm|Calculator-CfVqi\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-6dc86\",\n          \"target\": \"Calculator-CfVqi\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|Calculator-CfVqi\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-6dc86BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ZeroShotAgent-o94zNBaseLanguageModel|llm|ZeroShotAgent-o94zN\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-6dc86\",\n          \"target\": \"ZeroShotAgent-o94zN\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-6dc86|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ZeroShotAgent-o94zN\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-rc2Fk\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-rc2Fk\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"当前只对stuff 生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"map_rerank\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"position\": {\n            \"x\": 32.375529385543246,\n            \"y\": 759.3887339718593\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 32.375529385543246,\n            \"y\": 759.3887339718593\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-u9DZu\",\n          \"data\": {\n            \"id\": \"RetrievalQA-u9DZu\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"BaseRetrievalQA\",\n                \"RetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1055.9846105131896,\n            \"y\": 1319.580472587641\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1055.9846105131896,\n            \"y\": 1319.580472587641\n          }\n        },\n        {\n          \"id\": \"Tool-FbOTw\",\n          \"data\": {\n            \"id\": \"Tool-FbOTw\",\n            \"node\": {\n              \"template\": {\n                \"func\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"func\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"l2_name\": \"func\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Basic_information\",\n                  \"l2_name\": \"name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Tool\",\n                \"description\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"description\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"如果用户需要知道关于这家公司的各方面信息，可以使用该工具。如：\\n- 某公司的盈利模式是什么\\n- 某公司的保荐机构是哪家公司？\\n- 某公司的审计机构是哪家公司？\\n- 某公司的主要产品是什么？\",\n                  \"l2_name\": \"如何使用用户上传的文档\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"return_direct\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_direct\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"return_direct\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Converts a chain, agent or function into a tool.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Tool\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Tool\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 445,\n          \"position\": {\n            \"x\": 1621.5305224346598,\n            \"y\": 1282.841953911718\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1621.5305224346598,\n            \"y\": 1282.841953911718\n          }\n        },\n        {\n          \"id\": \"Milvus-4LcfV\",\n          \"data\": {\n            \"id\": \"Milvus-4LcfV\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"招股书\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"VectorStore\",\n                \"Milvus\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"position\": {\n            \"x\": 522.9361398003147,\n            \"y\": 1462.3167297901632\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 522.9361398003147,\n            \"y\": 1462.3167297901632\n          }\n        },\n        {\n          \"id\": \"ZeroShotAgent-o94zN\",\n          \"data\": {\n            \"id\": \"ZeroShotAgent-o94zN\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ZeroShotAgent\",\n                \"tools\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tools\",\n                  \"show\": true,\n                  \"type\": \"BaseTool\",\n                  \"l2_name\": \"tools\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Answer the following questions as best you can. Think step by step. You have access to the following tools:\",\n                  \"l2_name\": \"prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"suffix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Begin!\\n\\nQuestion: {query}\\nThought:{agent_scratchpad}\",\n                  \"l2_name\": \"suffix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"AgentOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"query\",\n                    \"agent_scratchpad\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callback_manager\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callback_manager\",\n                  \"show\": false,\n                  \"type\": \"BaseCallbackManager\",\n                  \"l2_name\": \"callback_manager\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"format_instructions\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Use the following format:\\n\\nQuestion: 该公司的保荐机构是哪家公司？\\n# the query question you must answer\\nThought: 我需要从文档中查询达梦股份有限公司的保荐机构\\n# you should always think about what to do\\nAction: Basic_information\\n# the action to take, should be one of [{tool_names}]\\nAction Input: 该公司的保荐机构是哪家公司？\\n# the input to the action\\nObservation: 我发现文章中提到达梦股份有限公司的保荐机构是招商证券\\n# the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: #the final answer to the original input question\",\n                  \"l2_name\": \"format_instructions\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Construct an agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"BaseSingleActionAgent\",\n                \"ZeroShotAgent\",\n                \"Agent\",\n                \"function\"\n              ],\n              \"display_name\": \"ZeroShotAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\"\n            },\n            \"type\": \"ZeroShotAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 659,\n          \"position\": {\n            \"x\": 2724.755245757752,\n            \"y\": 792.4038456822296\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2724.755245757752,\n            \"y\": 792.4038456822296\n          }\n        },\n        {\n          \"id\": \"Calculator-CfVqi\",\n          \"data\": {\n            \"id\": \"Calculator-CfVqi\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Calculator\"\n              },\n              \"description\": \"Useful for when you need to answer questions about math.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Calculator\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Calculator\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 229,\n          \"position\": {\n            \"x\": 1604.8480818394096,\n            \"y\": 973.4644452164116\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1604.8480818394096,\n            \"y\": 973.4644452164116\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-NPuMI\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-NPuMI\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"proxy_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"position\": {\n            \"x\": 27.86167751822711,\n            \"y\": 1796.72713464364\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 27.86167751822711,\n            \"y\": 1796.72713464364\n          }\n        },\n        {\n          \"id\": \"InputFileNode-IR0Z1\",\n          \"data\": {\n            \"id\": \"InputFileNode-IR0Z1\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"l2_name\": \"file_path\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xlsx\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"file_path\": null,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"position\": {\n            \"x\": -932.810583795316,\n            \"y\": 1190.272406644502\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -932.810583795316,\n            \"y\": 1190.272406644502\n          }\n        },\n        {\n          \"id\": \"RecursiveCharacterTextSplitter-sTTDT\",\n          \"data\": {\n            \"id\": \"RecursiveCharacterTextSplitter-sTTDT\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"RecursiveCharacterTextSplitter\",\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chunk_size\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_size\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 1000,\n                  \"l2_name\": \"chunk_size\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Size\"\n                },\n                \"separators\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"separators\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\\\\n\",\n                  \"l2_name\": \"separators\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator\"\n                },\n                \"chunk_overlap\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_overlap\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 200,\n                  \"l2_name\": \"chunk_overlap\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Overlap\"\n                },\n                \"separator_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"separator_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Text\",\n                  \"l2_name\": \"separator_type\",\n                  \"options\": [\n                    \"Text\",\n                    \"cpp\",\n                    \"go\",\n                    \"html\",\n                    \"java\",\n                    \"js\",\n                    \"latex\",\n                    \"markdown\",\n                    \"php\",\n                    \"proto\",\n                    \"python\",\n                    \"rst\",\n                    \"ruby\",\n                    \"rust\",\n                    \"scala\",\n                    \"sol\",\n                    \"swift\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator Type\"\n                }\n              },\n              \"description\": \"Implementation of splitting text that looks at characters.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"RecursiveCharacterTextSplitter\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\n            },\n            \"type\": \"RecursiveCharacterTextSplitter\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 561,\n          \"position\": {\n            \"x\": 28.985765191920905,\n            \"y\": 1167.7466689744615\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 28.985765191920905,\n            \"y\": 1167.7466689744615\n          }\n        },\n        {\n          \"id\": \"InputNode-HLAg0\",\n          \"data\": {\n            \"id\": \"InputNode-HLAg0\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"该公司的主营业务包括哪些，请概述\",\n                    \"该公司的盈利模式是什么？\",\n                    \"该公司的销售模式有哪些？\",\n                    \"该公司有多少专利和知识产权？\",\n                    \"该公司处在哪个行业，查询一下该行业最近几年中国的市场规模分别为多少？\",\n                    \"该公司的主要股东及其持股比例分别是多少\",\n                    \"该公司是否面临法律诉讼或其他争议事项？如果是，请提供相关的细节和进展情况\",\n                    \"该公司是否存在专利或其他知识产权方面的风险？请说明相关情况\",\n                    \"该公司面临的主要市场竞争对手和他们在市场中的地位是什么？\",\n                    \"该公司的主要产品或服务是什么？提供关键产品的详细描述\",\n                    \"该公司的市场份额如何？是否有计划扩大市场份额？\",\n                    \"该公司的盈利模式是什么？请解释公司如何获得收入\",\n                    \"请详细说明公司的资金需求及其资金用途\",\n                    \"该公司是否有债务或其他财务义务\",\n                    \"请提供公司的人力资源情况，包括员工总数和关键管理团队成员的背景信息\",\n                    \"请根据公司募集资金用途以及未来发展战略，推断公司是否计划在未来几年内进行研发和创新投资？\",\n                    \"公司目标客户是谁？\",\n                    \"从市场份额方面分析该公司的核心竞争力是什么？\",\n                    \"从核心技术或核心产品方面分析该公司的核心竞争力是什么？\",\n                    \"公司重要的合作伙伴与供应商有哪些？从他们那里能获取哪些核心资源?\",\n                    \"该公司最重要的固定成本是什么?\",\n                    \"结合财务报表，哪类费用占比高？这类费用主要用于哪些方面的支出？\",\n                    \"公司2021年的应收账款周转率为多少，对比可比公司的情况如何？\",\n                    \"公司的息税折旧摊销前利润相较于三年前增长了多少？\",\n                    \"公司的息税折旧摊销前利润的增长趋势如何？\",\n                    \"公司的归属于发行人股东的净利润的增长是否持续稳定？\",\n                    \"公司归属于发行人股东扣除非经常性损益后的净利润有何变化？\",\n                    \"公司在研发方面的投入与研发费用占营业收入的比例如何评价？\",\n                    \"公司研发费用占营业收入的比例有何变化？\",\n                    \"每股经营活动产生的现金流量反映了公司的经营效益如何？\",\n                    \"公司在过去三年中，每股经营活动产生的现金流量有何变化？\",\n                    \"公司每股净现金流量有何变化？\",\n                    \"公司的流动比率水平如何评价？\",\n                    \"公司的速动比率有何变化？\",\n                    \"公司的资产负债率（母公司口径）有何变化？\",\n                    \"公司的资产负债率（合并口径）水平如何评价？\",\n                    \"公司的归属于发行人股东的每股净资产有何变化？\",\n                    \"\"\n                  ],\n                  \"l2_name\": \"报告分析维度\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 706,\n          \"position\": {\n            \"x\": 2176.519795047715,\n            \"y\": 1422.887731295922\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2176.519795047715,\n            \"y\": 1422.887731295922\n          }\n        },\n        {\n          \"id\": \"BingSearchAPIWrapper-I86u8\",\n          \"data\": {\n            \"id\": \"BingSearchAPIWrapper-I86u8\",\n            \"node\": {\n              \"template\": {\n                \"k\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"k\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 10,\n                  \"l2_name\": \"k\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchAPIWrapper\",\n                \"bing_search_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_search_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://api.bing.microsoft.com/v7.0/search\",\n                  \"l2_name\": \"bing_search_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"bing_subscription_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_subscription_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"137b003c89f04966ac3b1081ee5b10bc\",\n                  \"l2_name\": \"bing_subscription_key\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Wrapper for Bing Search API.\",\n              \"base_classes\": [\n                \"BingSearchAPIWrapper\"\n              ],\n              \"display_name\": \"BingSearchAPIWrapper\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchAPIWrapper\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"position\": {\n            \"x\": 1084.3965767342606,\n            \"y\": 279.87865179934\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1084.3965767342606,\n            \"y\": 279.87865179934\n          }\n        },\n        {\n          \"id\": \"BingSearchRun-gmZjQ\",\n          \"data\": {\n            \"id\": \"BingSearchRun-gmZjQ\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchRun\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"api_wrapper\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_wrapper\",\n                  \"show\": true,\n                  \"type\": \"BingSearchAPIWrapper\",\n                  \"l2_name\": \"api_wrapper\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"args_schema\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"args_schema\",\n                  \"show\": false,\n                  \"type\": \"Type[pydantic.main.BaseModel]\",\n                  \"l2_name\": \"args_schema\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"handle_tool_error\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"handle_tool_error\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"handle_tool_error\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A wrapper around Bing Search. Useful for when you need to answer questions about current events. Input should be a search query.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\",\n                \"BaseTool\",\n                \"BingSearchRun\"\n              ],\n              \"display_name\": \"BingSearchRun\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchRun\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 249,\n          \"position\": {\n            \"x\": 1587.0735944565677,\n            \"y\": 564.1271785797638\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1587.0735944565677,\n            \"y\": 564.1271785797638\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-4rq3A\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-4rq3A\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xlsx\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\"\n                }\n              },\n              \"description\": \"Loads a PDF with pypdf and chunks at character level. dummy version\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -468.3981411294128,\n            \"y\": 1150.9063802769972\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -468.3981411294128,\n            \"y\": 1150.9063802769972\n          }\n        },\n        {\n          \"id\": \"BishengLLM-6dc86\",\n          \"data\": {\n            \"id\": \"BishengLLM-6dc86\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -966.0777669425454,\n            \"y\": 569.5274332939994\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -966.0777669425454,\n            \"y\": 569.5274332939994\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 446.8071199372391,\n        \"y\": -15.008593660173858,\n        \"zoom\": 0.3819453782554565\n      }\n    },\n    \"order_num\": 6553562,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-10-15 18:39:27\",\n    \"parameters\": null,\n    \"name\": \"⭐️知识库问答\",\n    \"description\": \"选择知识库，进行知识库问答\",\n    \"flow_id\": \"0c1649f7cd774248990bf7d961e8dcff\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:04:03\",\n    \"id\": 180,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-CWpae\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-71a85CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-71a85\",\n          \"target\": \"RetrievalQA-x5nap\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-3c164PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|document_prompt|CombineDocsChain-71a85\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-3c164\",\n          \"target\": \"CombineDocsChain-71a85\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|document_prompt|CombineDocsChain-71a85\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-ced29PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|prompt|CombineDocsChain-71a85\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-ced29\",\n          \"target\": \"CombineDocsChain-71a85\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-71a85\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-02d50BishengLLM|BishengLLM-02d50|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-71a85BaseLanguageModel|llm|CombineDocsChain-71a85\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-02d50\",\n          \"target\": \"CombineDocsChain-71a85\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-02d50|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-71a85\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"Milvus-CWpae\",\n          \"data\": {\n            \"id\": \"Milvus-CWpae\",\n            \"node\": {\n              \"l2_name\": \"知识库\",\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"毕昇产品文档20240421\",\n                  \"l2_name\": \"选择知识库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 4597\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 311,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 857.7079649166786,\n            \"y\": 666.0353925000366\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 857.7079649166786,\n            \"y\": 666.0353925000366\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-x5nap\",\n          \"data\": {\n            \"id\": \"RetrievalQA-x5nap\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"RetrievalQA\",\n                \"Chain\",\n                \"BaseRetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1521.2877663953464,\n            \"y\": 287.6148502766154\n          }\n        },\n        {\n          \"id\": \"CombineDocsChain-71a85\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-71a85\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"document_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"document_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 449,\n          \"position\": {\n            \"x\": 847.130082564399,\n            \"y\": 10.769465837008791\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 847.130082564399,\n            \"y\": 10.769465837008791\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-3c164\",\n          \"data\": {\n            \"id\": \"PromptTemplate-3c164\",\n            \"node\": {\n              \"name\": \"\",\n              \"l2_name\": \"召回段落拼接提示词\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"source\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"source\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"source\"\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"title: {source}\\n{page_content}\\n----------------\",\n                  \"l2_name\": \"提示词模板\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"page_content\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"page_content\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"page_content\"\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"source\",\n                    \"page_content\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                  \"value\": \"f-string\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A prompt template for a language model.\",\n              \"base_classes\": [\n                \"Runnable\",\n                \"StringPromptTemplate\",\n                \"RunnableSerializable\",\n                \"PromptTemplate\",\n                \"Generic\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"source\",\n                  \"page_content\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 455,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 249.5669301132289,\n            \"y\": -472.7534674830942\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 249.5669301132289,\n            \"y\": -472.7534674830942\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-ced29\",\n          \"data\": {\n            \"id\": \"PromptTemplate-ced29\",\n            \"node\": {\n              \"name\": \"\",\n              \"l2_name\": \"大模型问答提示词\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"context\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"context\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"context\"\n                },\n                \"question\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"question\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"question\"\n                },\n                \"template\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：企业客服\\n\\n# Background :\\n你是一家名叫XX公司的客服人员。你的日常工作是回复公司内用户的各类咨询问题，所以当用户提到“公司”时，指的是XX公司。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                  \"l2_name\": \"提示词模板\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"question\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                  \"value\": \"f-string\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A prompt template for a language model.\",\n              \"base_classes\": [\n                \"Runnable\",\n                \"StringPromptTemplate\",\n                \"RunnableSerializable\",\n                \"PromptTemplate\",\n                \"Generic\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 455,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 239.9768809008542,\n            \"y\": 26.706867771652675\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 239.9768809008542,\n            \"y\": 26.706867771652675\n          }\n        },\n        {\n          \"id\": \"BishengLLM-02d50\",\n          \"data\": {\n            \"id\": \"BishengLLM-02d50\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 233.388284890662,\n            \"y\": 540.5502864443121\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 233.388284890662,\n            \"y\": 540.5502864443121\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 282.57805303810756,\n        \"y\": 294.51040071091927,\n        \"zoom\": 0.5373960694755959\n      }\n    },\n    \"order_num\": null,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 17:08:01\",\n    \"parameters\": null,\n    \"name\": \"⭐️ Word 格式专业报告生成【需配置】\",\n    \"description\": \"【word 模板默认是空的，需要自己进行配置】\\n将复杂的专业报告拆分成独立的具体章节任务，然后将大模型生成内容自动填入到预设 word 模板中，从而完成专业报告的生成。\",\n    \"flow_id\": \"212df93d0f8445c690a9aeebe684db84\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:08:01\",\n    \"id\": 181,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-tv0S2CombineDocsChain|CombineDocsChain-tv0S2|BaseCombineDocumentsChain|function-RetrievalQA-F6quWBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-F6quW\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-tv0S2\",\n          \"target\": \"RetrievalQA-F6quW\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-tv0S2|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-F6quW\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalQA-F6quWRetrievalQA|RetrievalQA-F6quW|BaseRetrievalQA|Chain|RetrievalQA|function-Report-PRcYLfunction|chains|Report-PRcYL\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalQA-F6quW\",\n          \"target\": \"Report-PRcYL\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RetrievalQA|RetrievalQA-F6quW|BaseRetrievalQA|Chain|RetrievalQA|function\",\n          \"targetHandle\": \"function|chains|Report-PRcYL\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-TdX3BInputNode|InputNode-TdX3B|input-RetrievalQA-F6quWinput|input_node|RetrievalQA-F6quW\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-TdX3B\",\n          \"target\": \"RetrievalQA-F6quW\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"InputNode|InputNode-TdX3B|input\",\n          \"targetHandle\": \"input|input_node|RetrievalQA-F6quW\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-nYygCElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-nYygC|Document-RecursiveCharacterTextSplitter-6g2FADocument|documents|RecursiveCharacterTextSplitter-6g2FA\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-nYygC\",\n          \"target\": \"RecursiveCharacterTextSplitter-6g2FA\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-nYygC|Document\",\n          \"targetHandle\": \"Document|documents|RecursiveCharacterTextSplitter-6g2FA\"\n        },\n        {\n          \"id\": \"reactflow__edge-VariableNode-UB934VariableNode|VariableNode-UB934|VariableNode-Report-PRcYLVariableNode|variables|Report-PRcYL\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"VariableNode-UB934\",\n          \"target\": \"Report-PRcYL\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"VariableNode|VariableNode-UB934|VariableNode\",\n          \"targetHandle\": \"VariableNode|variables|Report-PRcYL\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-fSZ8oMilvus|Milvus-fSZ8o|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-F6quWBaseRetriever|retriever|RetrievalQA-F6quW\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-fSZ8o\",\n          \"target\": \"RetrievalQA-F6quW\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Milvus|Milvus-fSZ8o|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-F6quW\"\n        },\n        {\n          \"id\": \"reactflow__edge-RecursiveCharacterTextSplitter-6g2FARecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-6g2FA|Document-Milvus-fSZ8oDocument|documents|Milvus-fSZ8o\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RecursiveCharacterTextSplitter-6g2FA\",\n          \"target\": \"Milvus-fSZ8o\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-6g2FA|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-fSZ8o\"\n        },\n        {\n          \"id\": \"reactflow__edge-OpenAIProxyEmbedding-0OoJhOpenAIProxyEmbedding|OpenAIProxyEmbedding-0OoJh|Embeddings-Milvus-fSZ8oEmbeddings|embedding|Milvus-fSZ8o\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"OpenAIProxyEmbedding-0OoJh\",\n          \"target\": \"Milvus-fSZ8o\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-0OoJh|Embeddings\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-fSZ8o\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-a4516InputFileNode|InputFileNode-a4516|fileNode-ElemUnstructuredLoaderV0-nYygCfileNode|file_path|ElemUnstructuredLoaderV0-nYygC\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-a4516\",\n          \"target\": \"ElemUnstructuredLoaderV0-nYygC\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-a4516|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-nYygC\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-a972dBishengLLM|BishengLLM-a972d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-CombineDocsChain-tv0S2BaseLanguageModel|llm|CombineDocsChain-tv0S2\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-a972d\",\n          \"target\": \"CombineDocsChain-tv0S2\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-a972d|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-tv0S2\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"Report-PRcYL\",\n          \"data\": {\n            \"id\": \"Report-PRcYL\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Report\",\n                \"chains\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chains\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"l2_name\": \"chains\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"functions\"\n                },\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": false,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"report_name\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"stop_flag\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"stop_flag\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"stop_flag\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variables\",\n                  \"show\": true,\n                  \"type\": \"VariableNode\",\n                  \"l2_name\": \"variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": false,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"text\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"report_name\": {\n                  \"l2\": false,\n                  \"info\": \"the file name we generate\",\n                  \"list\": false,\n                  \"name\": \"report_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"尽调报告\",\n                  \"l2_name\": \"report_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Report Name\"\n                }\n              },\n              \"description\": \"\",\n              \"base_classes\": [\n                \"Chain\",\n                \"Report\"\n              ],\n              \"display_name\": \"Report\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Report\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 359,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2893.098387884978,\n            \"y\": 854.5001552884537\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2893.098387884978,\n            \"y\": 854.5001552884537\n          }\n        },\n        {\n          \"id\": \"InputNode-TdX3B\",\n          \"data\": {\n            \"id\": \"InputNode-TdX3B\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"公司主营业务的市场定位是什么？\",\n                    \"公司的主要供应商情况是什么？\",\n                    \"公司营业成本是多少？各项成本占营业成本的比例是多少？并结合行业特点分析合理性\",\n                    \"对公司进行核心竞争力、盈利模式及可持续性分析\"\n                  ],\n                  \"l2_name\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 405,\n          \"position\": {\n            \"x\": 1882.0029133695327,\n            \"y\": 20\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1882.0029133695327,\n            \"y\": 20\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-F6quW\",\n          \"data\": {\n            \"id\": \"RetrievalQA-F6quW\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"BaseRetrievalQA\",\n                \"Chain\",\n                \"RetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 2365.4233944189255,\n            \"y\": 484.70381798330607\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2365.4233944189255,\n            \"y\": 484.70381798330607\n          }\n        },\n        {\n          \"id\": \"CombineDocsChain-tv0S2\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-tv0S2\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 413,\n          \"position\": {\n            \"x\": 1430.7645538078127,\n            \"y\": 262.02647664648924\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1430.7645538078127,\n            \"y\": 262.02647664648924\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-nYygC\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-nYygC\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"l2_name\": \"file_path\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"unstructured_api_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"l2_name\": \"unstructured_api_url\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\"\n                }\n              },\n              \"description\": \"The appropriate parser is automatically selected based on the file format and OCR is supported\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"position\": {\n            \"x\": 687.5802734859502,\n            \"y\": 887.9738676014504\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 687.5802734859502,\n            \"y\": 887.9738676014504\n          }\n        },\n        {\n          \"id\": \"RecursiveCharacterTextSplitter-6g2FA\",\n          \"data\": {\n            \"id\": \"RecursiveCharacterTextSplitter-6g2FA\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"RecursiveCharacterTextSplitter\",\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chunk_size\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_size\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 1000,\n                  \"l2_name\": \"chunk_size\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Size\"\n                },\n                \"separators\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"separators\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\\\\n\",\n                  \"l2_name\": \"separators\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator\"\n                },\n                \"chunk_overlap\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_overlap\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 200,\n                  \"l2_name\": \"chunk_overlap\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Overlap\"\n                },\n                \"separator_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"separator_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Text\",\n                  \"l2_name\": \"separator_type\",\n                  \"options\": [\n                    \"Text\",\n                    \"cpp\",\n                    \"go\",\n                    \"html\",\n                    \"java\",\n                    \"js\",\n                    \"latex\",\n                    \"markdown\",\n                    \"php\",\n                    \"proto\",\n                    \"python\",\n                    \"rst\",\n                    \"ruby\",\n                    \"rust\",\n                    \"scala\",\n                    \"sol\",\n                    \"swift\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator Type\"\n                }\n              },\n              \"description\": \"Implementation of splitting text that looks at characters.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"RecursiveCharacterTextSplitter\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\n            },\n            \"type\": \"RecursiveCharacterTextSplitter\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 561,\n          \"position\": {\n            \"x\": 1126.323112777516,\n            \"y\": 958.025245303465\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1126.323112777516,\n            \"y\": 958.025245303465\n          }\n        },\n        {\n          \"id\": \"VariableNode-UB934\",\n          \"data\": {\n            \"id\": \"VariableNode-UB934\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"VariableNode\",\n                \"variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variables\",\n                  \"show\": true,\n                  \"type\": \"variable\",\n                  \"value\": [\n                    \"客户名称\",\n                    \"客户规模\"\n                  ],\n                  \"l2_name\": \"variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"variable_value\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variable_value\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"variable_value\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"用来设置变量\",\n              \"base_classes\": [\n                \"VariableNode\"\n              ],\n              \"display_name\": \"VariableNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"VariableNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 233,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2311.569198584317,\n            \"y\": 991.6304728944774\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2311.569198584317,\n            \"y\": 991.6304728944774\n          }\n        },\n        {\n          \"id\": \"Milvus-fSZ8o\",\n          \"data\": {\n            \"id\": \"Milvus-fSZ8o\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"collection_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 429,\n          \"position\": {\n            \"x\": 1715.041130224926,\n            \"y\": 967.8237662817272\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1715.041130224926,\n            \"y\": 967.8237662817272\n          }\n        },\n        {\n          \"id\": \"OpenAIProxyEmbedding-0OoJh\",\n          \"data\": {\n            \"id\": \"OpenAIProxyEmbedding-0OoJh\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"proxy_embedding\",\n                \"proxy_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"proxy_url\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"proxy_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"http://43.133.35.137:8080\"\n                }\n              },\n              \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n              \"base_classes\": [\n                \"Embeddings\"\n              ],\n              \"display_name\": \"OpenAIProxyEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"OpenAIProxyEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 173,\n          \"position\": {\n            \"x\": 1138.4741947789414,\n            \"y\": 704.7914052206025\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1138.4741947789414,\n            \"y\": 704.7914052206025\n          }\n        },\n        {\n          \"id\": \"InputFileNode-a4516\",\n          \"data\": {\n            \"id\": \"InputFileNode-a4516\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \"..xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 232.94631949418465,\n            \"y\": 876.7981526493783\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 232.94631949418465,\n            \"y\": 876.7981526493783\n          }\n        },\n        {\n          \"id\": \"BishengLLM-a972d\",\n          \"data\": {\n            \"id\": \"BishengLLM-a972d\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 526.6927690842307,\n            \"y\": 137.74438088815248\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 526.6927690842307,\n            \"y\": 137.74438088815248\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": -41.278753137878425,\n        \"y\": 51.57633498215188,\n        \"zoom\": 0.5112634327714005\n      }\n    },\n    \"order_num\": 6684632,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-10-15 18:39:29\",\n    \"parameters\": null,\n    \"name\": \"⭐️知识库问答【增强版】\",\n    \"description\": \"选择知识库，进行知识库问答。特点：\\n1.知识多轮问答；\\n2.使用关键词检索、向量检索两种方式，提高召回率；\\n3.优化过的提示词，降低胡说的出现；\",\n    \"flow_id\": \"9c964a6cabba4d6ea76fde38e72e559d\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:24:17\",\n    \"id\": 182,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-Milvus-cyR5WMilvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-cyR5W\",\n          \"target\": \"MixEsVectorRetriever-J35CZ\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\"\n        },\n        {\n          \"id\": \"reactflow__edge-MixEsVectorRetriever-J35CZMixEsVectorRetriever|MixEsVectorRetriever-J35CZ|MixEsVectorRetriever|BaseRetriever-ConversationalRetrievalChain-SmY3wBaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"MixEsVectorRetriever-J35CZ\",\n          \"target\": \"ConversationalRetrievalChain-SmY3w\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"MixEsVectorRetriever|MixEsVectorRetriever-J35CZ|BaseRetriever|MixEsVectorRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\"\n        },\n        {\n          \"id\": \"reactflow__edge-ConversationBufferMemory-K1tssConversationBufferMemory|ConversationBufferMemory-K1tss|BaseChatMemory|BaseMemory|ConversationBufferMemory-ConversationalRetrievalChain-SmY3wBaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ConversationBufferMemory-K1tss\",\n          \"target\": \"ConversationalRetrievalChain-SmY3w\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"ConversationBufferMemory|ConversationBufferMemory-K1tss|ConversationBufferMemory|BaseChatMemory|BaseMemory\",\n          \"targetHandle\": \"BaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-bs0vjPromptTemplate|PromptTemplate-bs0vj|StringPromptTemplate|BasePromptTemplate|PromptTemplate-ConversationalRetrievalChain-SmY3wBasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-bs0vj\",\n          \"target\": \"ConversationalRetrievalChain-SmY3w\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-bs0vj|StringPromptTemplate|PromptTemplate|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-768acBishengLLM|BishengLLM-768ac|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ConversationalRetrievalChain-SmY3wBaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-768ac\",\n          \"target\": \"ConversationalRetrievalChain-SmY3w\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-768ac|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElasticKeywordsSearch-1c80eElasticKeywordsSearch|ElasticKeywordsSearch-1c80e|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElasticKeywordsSearch-1c80e\",\n          \"target\": \"MixEsVectorRetriever-J35CZ\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElasticKeywordsSearch|ElasticKeywordsSearch-1c80e|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"MixEsVectorRetriever-J35CZ\",\n          \"data\": {\n            \"id\": \"MixEsVectorRetriever-J35CZ\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"MixEsVectorRetriever\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_strategy\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"combine_strategy\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"mix\",\n                  \"l2_name\": \"combine_strategy\",\n                  \"options\": [\n                    \"keyword_front\",\n                    \"vector_front\",\n                    \"mix\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"vector_retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"vector_retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"vector_retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"keyword_retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"keyword_retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"keyword_retriever\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"This class ensemble the results of es retriever and vector retriever.\",\n              \"base_classes\": [\n                \"BaseRetriever\",\n                \"MixEsVectorRetriever\"\n              ],\n              \"display_name\": \"MixEsVectorRetriever\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"MixEsVectorRetriever\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 351,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 855.7285654150652,\n            \"y\": 657.020339011865\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 855.7285654150652,\n            \"y\": 657.020339011865\n          }\n        },\n        {\n          \"id\": \"Milvus-cyR5W\",\n          \"data\": {\n            \"id\": \"Milvus-cyR5W\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"毕昇产品文档20240421\",\n                  \"l2_name\": \"collection_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 4597\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"VectorStore\",\n                \"Milvus\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 252.82794993869493,\n            \"y\": 1067.6627689948364\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 252.82794993869493,\n            \"y\": 1067.6627689948364\n          }\n        },\n        {\n          \"id\": \"ConversationalRetrievalChain-SmY3w\",\n          \"data\": {\n            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ConversationalRetrievalChain\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseChatMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"Callbacks\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"condense_question_llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"condense_question_llm\",\n                  \"show\": false,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"condense_question_llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Return source documents\"\n                },\n                \"condense_question_prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"condense_question_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": {\n                    \"_type\": \"prompt\",\n                    \"template\": \"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"chat_history\",\n                      \"question\"\n                    ],\n                    \"template_format\": \"f-string\",\n                    \"partial_variables\": {},\n                    \"validate_template\": true\n                  },\n                  \"l2_name\": \"condense_question_prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_docs_chain_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_docs_chain_kwargs\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"combine_docs_chain_kwargs\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                }\n              },\n              \"description\": \"Convenience method to load chain from LLM and retriever.\",\n              \"base_classes\": [\n                \"ConversationalRetrievalChain\",\n                \"Chain\",\n                \"BaseConversationalRetrievalChain\",\n                \"function\"\n              ],\n              \"display_name\": \"ConversationalRetrievalChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/chat_vector_db\"\n            },\n            \"type\": \"ConversationalRetrievalChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 495,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1716.0776457768882,\n            \"y\": 243.73689122583036\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1716.0776457768882,\n            \"y\": 243.73689122583036\n          }\n        },\n        {\n          \"id\": \"ConversationBufferMemory-K1tss\",\n          \"data\": {\n            \"id\": \"ConversationBufferMemory-K1tss\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ConversationBufferMemory\",\n                \"ai_prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"ai_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"AI\",\n                  \"l2_name\": \"ai_prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"memory_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"chat_history\",\n                  \"l2_name\": \"memory_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"answer\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chat_memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chat_memory\",\n                  \"show\": true,\n                  \"type\": \"BaseChatMessageHistory\",\n                  \"l2_name\": \"chat_memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"human_prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"human_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Human\",\n                  \"l2_name\": \"human_prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_messages\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_messages\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"return_messages\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Buffer for storing conversation memory.\",\n              \"base_classes\": [\n                \"ConversationBufferMemory\",\n                \"BaseChatMemory\",\n                \"BaseMemory\"\n              ],\n              \"display_name\": \"ConversationBufferMemory\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n            },\n            \"type\": \"ConversationBufferMemory\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 527,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 843.4894981704888,\n            \"y\": 77.9938911218216\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 843.4894981704888,\n            \"y\": 77.9938911218216\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-bs0vj\",\n          \"data\": {\n            \"id\": \"PromptTemplate-bs0vj\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n\\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"question\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"StringPromptTemplate\",\n                \"PromptTemplate\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\",\n                  \"question\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {\n                \"formatters\": {\n                  \"openai_api_key\": {}\n                },\n                \"base_formatters\": {\n                  \"dict\": {},\n                  \"list\": {},\n                  \"show\": {},\n                  \"union\": {},\n                  \"kwargs\": {},\n                  \"default\": {},\n                  \"headers\": {},\n                  \"optional\": {},\n                  \"password\": {},\n                  \"multiline\": {},\n                  \"model_fields\": {\n                    \"MODEL_DICT\": {\n                      \"OpenAI\": [\n                        \"text-davinci-003\",\n                        \"text-davinci-002\",\n                        \"text-curie-001\",\n                        \"text-babbage-001\",\n                        \"text-ada-001\"\n                      ],\n                      \"Anthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ],\n                      \"ChatOpenAI\": [\n                        \"gpt-3.5-turbo-0613\",\n                        \"gpt-3.5-turbo\",\n                        \"gpt-3.5-turbo-16k-0613\",\n                        \"gpt-3.5-turbo-16k\",\n                        \"gpt-4-0613\",\n                        \"gpt-4-32k-0613\",\n                        \"gpt-4\",\n                        \"gpt-4-32k\"\n                      ],\n                      \"ChatAnthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ]\n                    }\n                  },\n                  \"dict_code_file\": {}\n                }\n              }\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 291,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 838.6147040497829,\n            \"y\": -450.1088052880104\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 838.6147040497829,\n            \"y\": -450.1088052880104\n          }\n        },\n        {\n          \"id\": \"BishengLLM-768ac\",\n          \"data\": {\n            \"id\": \"BishengLLM-768ac\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 185.91731964952712,\n            \"y\": -45.1192362802976\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 185.91731964952712,\n            \"y\": -45.1192362802976\n          }\n        },\n        {\n          \"id\": \"ElasticKeywordsSearch-1c80e\",\n          \"data\": {\n            \"id\": \"ElasticKeywordsSearch-1c80e\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Ids\",\n                  \"model_config\": {}\n                },\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLLM\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"ElasticKeywordsSearch\",\n                \"prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\",\n                  \"model_config\": {}\n                },\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Drop Old\",\n                  \"model_config\": {}\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\",\n                  \"model_config\": {}\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\",\n                  \"model_config\": {}\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadatas\",\n                  \"model_config\": {}\n                },\n                \"index_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_name\",\n                  \"show\": true,\n                  \"type\": \"knowledge_one\",\n                  \"value\": \"毕昇产品文档20240421\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Index Name\",\n                  \"model_config\": {},\n                  \"collection_id\": 4597\n                },\n                \"ssl_verify\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"ssl_verify\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"ssl_verify\",\n                  \"model_config\": {}\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"similarity\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Search Type\",\n                  \"model_config\": {}\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Search Kwargs\",\n                  \"model_config\": {}\n                },\n                \"refresh_indices\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"refresh_indices\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Refresh Indices\",\n                  \"model_config\": {}\n                },\n                \"elasticsearch_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elasticsearch_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"ES_connection_url\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Construct ElasticKeywordsSearch wrapper from raw documents.\",\n              \"base_classes\": [\n                \"VectorStore\",\n                \"ElasticKeywordsSearch\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"ElasticKeywordsSearch\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ElasticKeywordsSearch\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 547,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 216.8898375498219,\n            \"y\": 461.0085204207429\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 216.8898375498219,\n            \"y\": 461.0085204207429\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 365.45540726853375,\n        \"y\": 231.0471559799472,\n        \"zoom\": 0.42343675192812\n      }\n    },\n    \"order_num\": null,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 17:25:43\",\n    \"parameters\": null,\n    \"name\": \"⭐️SQLAgent\",\n    \"description\": \"通过自然语言进行数据库查询与分析。当前共享key只支持GPT3.5模型，效果可能不如4。\\n\\n暂不支持多轮问答。当前提供了上市公司相关的示例数据库，具体数据库表见：https://dataelem.feishu.cn/wiki/XaIzwkZNbisIoRkdPv2cuOqwnQf?sheet=d9b32d\",\n    \"flow_id\": \"2623add6f93f40cf9c707de670e44b59\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:25:43\",\n    \"id\": 183,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-BishengLLM-268bdBishengLLM|BishengLLM-268bd|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-SQLAgent-coFffBaseLanguageModel|llm|SQLAgent-coFff\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-268bd\",\n          \"target\": \"SQLAgent-coFff\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-268bd|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|SQLAgent-coFff\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"SQLAgent-coFff\",\n          \"data\": {\n            \"id\": \"SQLAgent-coFff\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"SQLAgent\",\n                \"top_k\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_k\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 10,\n                  \"l2_name\": \"top_k\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"You are an agent designed to interact with a SQL database.\\nGiven an input question, create a syntactically correct {dialect} query to run, then look at the results of the query and return the answer.\\nUnless the user specifies a specific number of examples they wish to obtain, always limit your query to at most {top_k} results.\\nYou can order the results by a relevant column to return the most interesting examples in the database.\\nNever query for all the columns from a specific table, only ask for the relevant columns given the question.\\nYou have access to tools for interacting with the database.\\nOnly use the below tools. Only use the information returned by the below tools to construct your final answer.\\nYou MUST double check your query before executing it. If you get an error while executing a query, rewrite the query and try again.\\n\\nDO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database.\\n\\nIf the question does not seem related to the database, just return \\\"I don't know\\\" as the answer.\\n\",\n                  \"l2_name\": \"prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"suffix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Begin!\\n\\nQuestion: {input}\\nThought: I should look at the tables in the database to see what I can query.  Then I should query the schema of the most relevant tables.\\n{agent_scratchpad}\",\n                  \"l2_name\": \"suffix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"database_uri\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"database_uri\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"mysql+pymysql://root:E1SkG0PaDMEPTAxY@192.168.106.116:3306/company_stock\",\n                  \"l2_name\": \"database_uri\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"input\",\n                    \"agent_scratchpad\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"format_instructions\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Use the following format:\\n\\nQuestion: the input question you must answer\\nThought: you should always think about what to do\\nAction: the action to take, should be one of [{tool_names}]\\nAction Input: the input to the action\\nObservation: the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: the final answer to the original input question\",\n                  \"l2_name\": \"format_instructions\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Construct an SQL agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"CustomAgentExecutor\",\n                \"SQLAgent\",\n                \"Chain\",\n                \"AgentExecutor\",\n                \"function\"\n              ],\n              \"display_name\": \"SQLAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"SQLAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 705,\n          \"position\": {\n            \"x\": 560.4986060286186,\n            \"y\": 43.27482866991457\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 560.4986060286186,\n            \"y\": 43.27482866991457\n          }\n        },\n        {\n          \"id\": \"BishengLLM-268bd\",\n          \"data\": {\n            \"id\": \"BishengLLM-268bd\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 4,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BishengLLM\",\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -234.44315040341712,\n            \"y\": 160.48338217607173\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": -234.44315040341712,\n            \"y\": 160.48338217607173\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 448.55360702357893,\n        \"y\": -9.209667977077856,\n        \"zoom\": 1.147646679561573\n      }\n    },\n    \"order_num\": 6815702,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 17:30:30\",\n    \"parameters\": null,\n    \"name\": \"⭐️  QA生成\",\n    \"description\": \"上传文档自动生成QA对，上传文档后，发送“开始”触发\",\n    \"flow_id\": \"23966d5d7f234ef2827e6128ae6bd8bf\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:30:30\",\n    \"id\": 185,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-fcc08ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-fcc08|Document-QAGenerationChainV2-c3ec3Document|documents|QAGenerationChainV2-c3ec3\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-fcc08\",\n          \"target\": \"QAGenerationChainV2-c3ec3\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-fcc08|Document\",\n          \"targetHandle\": \"Document|documents|QAGenerationChainV2-c3ec3\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-09d8bInputFileNode|InputFileNode-09d8b|fileNode-ElemUnstructuredLoaderV0-fcc08fileNode|file_path|ElemUnstructuredLoaderV0-fcc08\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-09d8b\",\n          \"target\": \"ElemUnstructuredLoaderV0-fcc08\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-09d8b|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-fcc08\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-f47edBishengLLM|BishengLLM-f47ed|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-QAGenerationChainV2-c3ec3BaseLanguageModel|llm|QAGenerationChainV2-c3ec3\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-f47ed\",\n          \"target\": \"QAGenerationChainV2-c3ec3\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-f47ed|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|QAGenerationChainV2-c3ec3\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"QAGenerationChainV2-c3ec3\",\n          \"data\": {\n            \"id\": \"QAGenerationChainV2-c3ec3\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"k\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"k\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"K\",\n                  \"model_config\": {}\n                },\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"QAGenerationChainV2\",\n                \"prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": false,\n                  \"type\": \"ChatPromptTemplate\",\n                  \"value\": {\n                    \"name\": null,\n                    \"tags\": null,\n                    \"_type\": \"chat\",\n                    \"messages\": [\n                      {\n                        \"prompt\": {\n                          \"name\": null,\n                          \"tags\": null,\n                          \"_type\": \"prompt\",\n                          \"metadata\": null,\n                          \"template\": \"您的任务是遵循以下规则从给定的上下文中提出一个问题，规则如下：\\n\\n    1. 即使在没有给定上下文的情况下，问题也应该对人类有意义。\\n    2. 应该可以从给定上下文中完全回答问题。\\n    3. 问题应该来自包含重要信息的上下文部分。它也可以来自表格、段落、或者代码等。\\n    4. 回答问题时不应包含任何链接。\\n    5. 问题的难度应该是中等的。\\n    6. 问题必须是合理的，并且必须能被人理解和回答。\\n    7. 不要在问题中使用“提供的上下文”等短语。\\n    8. 避免使用可以分解成多个问题的“和”字样来构建问题。\\n    9. 如果上下文是中文，那么问题也应该是中文的。\\n\\nExamples:\\ncontext:武汉达梦数据库股份有限公司 招股说明书 （申报稿） 1-1-226 表中作出恰当列报。 2、研发费用 2021年度、 2020年度、 2019 年度，达梦数据 研发费用金额分别 为11,786.99 万元、 9,660.26 万元、 6,255.86万元， 各年度研发费用占营 业收入的比例分别为 15.86 % 、 21.46 %、20.74 %。 由于研发投入金额及其占当期 营业收入的比例是 达梦数据 的关键 指标之一，可能存在因为核算不准 确而导致的错报风险。因此， 中天 运会计师 将研发费用的归集和核算 确定为关键审计事项。 针对研发费用的真实性与准确性，会计师执行的 重要审计程序主要包括： （1）了解与研发费用相关的关键内部控制，评价 这些控制的设计，确定其是否得到执行，并对相关内 部控制的运行有效性进行测试； （2）获取研发项目立项、审批资料，抽查重要研 发项目的过程文档，判断研发项目的真实性； （3）获取研发费用按项目、性质分类明细表，分\\nquestion:达梦2021年的研发费用占营业收入的比例是多少？\\n\\ncontext:武汉达梦数据库股份有限公司 招股说明书 （申报稿） 1-1-329 （2）存货周转率 公司与同行业可比公司存货周转率对比情况如下： 公司简称 2021年度 2020年度 2019年度 中望软件 6.93 5.62 10.66 星环科技 3.38 3.21 2.24 金山办公 212.60 175.46 162.91 平均值 74.30 61.43 58.60 本公司 1.13 0.57 0.87 数据来源：可比公司招股说明书、定期报告。 报告期各期， 公司存货周转率显著低于同行业可比公司存货周转率平均水平， 主要是因为公司将未验收的数据及行业解决方案项目所发生的累 计成本均作为 存货核算。报告期各期末，公司存在 “湖北省司法行政数据中心项目 ”、“政法云 大数据中心基础设施服务及大数据中心软件采购 项目”等金额较大且实施周期较 长的数据及行业解决方案项目，导致年末存货金额较大。\\nquestion:达梦2021年的存货周转率相较于前一年有何变化？\\n\",\n                          \"input_types\": {},\n                          \"output_parser\": null,\n                          \"input_variables\": [],\n                          \"template_format\": \"f-string\",\n                          \"partial_variables\": {},\n                          \"validate_template\": false\n                        },\n                        \"additional_kwargs\": {}\n                      },\n                      {\n                        \"prompt\": {\n                          \"name\": null,\n                          \"tags\": null,\n                          \"_type\": \"prompt\",\n                          \"metadata\": null,\n                          \"template\": \"\\ncontext:{context}\\nquestion:\\n\",\n                          \"input_types\": {},\n                          \"output_parser\": null,\n                          \"input_variables\": [\n                            \"context\"\n                          ],\n                          \"template_format\": \"f-string\",\n                          \"partial_variables\": {},\n                          \"validate_template\": false\n                        },\n                        \"additional_kwargs\": {}\n                      }\n                    ],\n                    \"metadata\": null,\n                    \"input_types\": {},\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"context\"\n                    ],\n                    \"partial_variables\": {},\n                    \"validate_template\": false\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Prompt\",\n                  \"model_config\": {}\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\",\n                  \"model_config\": {}\n                },\n                \"chunk_size\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_size\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 512,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Size\",\n                  \"model_config\": {}\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": false,\n                  \"type\": \"input\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Create a QAGenerationChain from a language model.\",\n              \"base_classes\": [\n                \"QAGenerationChainV2\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"QAGenerationChainV2\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"QAGenerationChainV2\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 429,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1052.5270781868935,\n            \"y\": 242.3629681024322\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1052.5270781868935,\n            \"y\": 242.3629681024322\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-fcc08\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-fcc08\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"kwargs\",\n                  \"show\": true,\n                  \"type\": \"dict\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"kwargs\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"The appropriate parser is automatically selected based on the file format and OCR is supported\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 477,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 311.70357393794484,\n            \"y\": -85.01385230407082\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 311.70357393794484,\n            \"y\": -85.01385230407082\n          }\n        },\n        {\n          \"id\": \"InputFileNode-09d8b\",\n          \"data\": {\n            \"id\": \"InputFileNode-09d8b\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \"..xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"请上传文件\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -353.26090599027486,\n            \"y\": -72.66649282333755\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -353.26090599027486,\n            \"y\": -72.66649282333755\n          }\n        },\n        {\n          \"id\": \"BishengLLM-f47ed\",\n          \"data\": {\n            \"id\": \"BishengLLM-f47ed\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BishengLLM\",\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 289.08494703205145,\n            \"y\": 479.77562233501465\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 289.08494703205145,\n            \"y\": 479.77562233501465\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 387.6997915647513,\n        \"y\": 113.95818800464951,\n        \"zoom\": 0.8646078322295284\n      }\n    },\n    \"order_num\": 6946772,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 17:39:24\",\n    \"parameters\": null,\n    \"name\": \"⭐️ API调用（使用APIChain）\",\n    \"description\": \"可以参考示例复制完整的接口文档，即可开始进行接口调用\",\n    \"flow_id\": \"44b8448120ba4d65b5d16e55984a583f\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:39:24\",\n    \"id\": 186,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-Tool-OL3JiTool|Tool-OL3Ji|Tool|BaseTool-ZeroShotAgent-aFNWBBaseTool|tools|ZeroShotAgent-aFNWB\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Tool-OL3Ji\",\n          \"target\": \"ZeroShotAgent-aFNWB\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Tool|Tool-OL3Ji|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-aFNWB\"\n        },\n        {\n          \"id\": \"reactflow__edge-APIChain-613fcAPIChain|APIChain-613fc|APIChain|Chain|function-Tool-OL3Jifunction|func|Tool-OL3Ji\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"APIChain-613fc\",\n          \"target\": \"Tool-OL3Ji\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"APIChain|APIChain-613fc|APIChain|Chain|function\",\n          \"targetHandle\": \"function|func|Tool-OL3Ji\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-48659PromptTemplate|PromptTemplate-48659|BasePromptTemplate|StringPromptTemplate|PromptTemplate-APIChain-613fcBasePromptTemplate|api_url_prompt|APIChain-613fc\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-48659\",\n          \"target\": \"APIChain-613fc\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-48659|BasePromptTemplate|StringPromptTemplate|PromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|api_url_prompt|APIChain-613fc\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-687d0BishengLLM|BishengLLM-687d0|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-APIChain-613fcBaseLanguageModel|llm|APIChain-613fc\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-687d0\",\n          \"target\": \"APIChain-613fc\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-687d0|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|APIChain-613fc\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-687d0BishengLLM|BishengLLM-687d0|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-ZeroShotAgent-aFNWBBaseLanguageModel|llm|ZeroShotAgent-aFNWB\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-687d0\",\n          \"target\": \"ZeroShotAgent-aFNWB\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-687d0|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ZeroShotAgent-aFNWB\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"ZeroShotAgent-aFNWB\",\n          \"data\": {\n            \"id\": \"ZeroShotAgent-aFNWB\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ZeroShotAgent\",\n                \"tools\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tools\",\n                  \"show\": true,\n                  \"type\": \"BaseTool\",\n                  \"l2_name\": \"tools\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Answer the following questions as best you can. You have access to the following tools:\",\n                  \"l2_name\": \"prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"suffix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Begin!\\n\\nQuestion: {input}\\nThought:{agent_scratchpad}\",\n                  \"l2_name\": \"suffix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"AgentOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callback_manager\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callback_manager\",\n                  \"show\": false,\n                  \"type\": \"BaseCallbackManager\",\n                  \"l2_name\": \"callback_manager\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"format_instructions\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Use the following format:\\n\\nQuestion: the input question you must answer\\nThought: you should always think about what to do\\nAction: the action to take, should be one of [{tool_names}]\\nAction Input: the input to the action\\nObservation: the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: the final answer to the original input question\",\n                  \"l2_name\": \"format_instructions\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Construct an agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"BaseSingleActionAgent\",\n                \"ZeroShotAgent\",\n                \"Agent\",\n                \"function\"\n              ],\n              \"display_name\": \"ZeroShotAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\"\n            },\n            \"type\": \"ZeroShotAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 609,\n          \"position\": {\n            \"x\": 1504.8003657712438,\n            \"y\": 142.75763054618068\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1504.8003657712438,\n            \"y\": 142.75763054618068\n          }\n        },\n        {\n          \"id\": \"Tool-OL3Ji\",\n          \"data\": {\n            \"id\": \"Tool-OL3Ji\",\n            \"node\": {\n              \"template\": {\n                \"func\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"func\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"l2_name\": \"func\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"天气查询\",\n                  \"l2_name\": \"name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Tool\",\n                \"description\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"description\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"提供地址名称，查询该地址天气信息\",\n                  \"l2_name\": \"description\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"return_direct\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_direct\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"return_direct\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Converts a chain, agent or function into a tool.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Tool\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Tool\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 445,\n          \"position\": {\n            \"x\": 918.0602598736352,\n            \"y\": 513.6611974885975\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 918.0602598736352,\n            \"y\": 513.6611974885975\n          }\n        },\n        {\n          \"id\": \"APIChain-613fc\",\n          \"data\": {\n            \"id\": \"APIChain-613fc\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"APIChain\",\n                \"headers\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"headers\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{'Authorization': 'Bearer <token>'}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Headers\",\n                  \"model_config\": {}\n                },\n                \"api_docs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_docs\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"key SGVquxtnZYK9WHJVD 接口地址   https://api.seniverse.com/v3/weather/now.json?key=your_api_key&location=beijing&language=zh-Hans&unit=c 请求参数说明 参数名称 类型 默认值 必填 备注 key String 无 是 你的 API 密钥 location Location 无 是 所查询的位置 language Language zh-Hans 否 语言 unit Unit c 否 单位 返回结果示例 JSON 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 {   \\\"results\\\": [     {       \\\"location\\\": {         \\\"id\\\": \\\"C23NB62W20TF\\\",         \\\"name\\\": \\\"西雅图\\\",         \\\"country\\\": \\\"US\\\",         \\\"path\\\": \\\"西雅图,华盛顿州,美国\\\",         \\\"timezone\\\": \\\"America/Los_Angeles\\\",         \\\"timezone_offset\\\": \\\"-07:00\\\"       },       \\\"now\\\": {         \\\"text\\\": \\\"多云\\\", //天气现象文字         \\\"code\\\": \\\"4\\\", //天气现象代码         \\\"temperature\\\": \\\"14\\\", //温度，单位为c摄氏度或f华氏度         \\\"feels_like\\\": \\\"14\\\", //体感温度，单位为c摄氏度或f华氏度         \\\"pressure\\\": \\\"1018\\\", //气压，单位为mb百帕或in英寸         \\\"humidity\\\": \\\"76\\\", //相对湿度，0~100，单位为百分比         \\\"visibility\\\": \\\"16.09\\\", //能见度，单位为km公里或mi英里         \\\"wind_direction\\\": \\\"西北\\\", //风向文字         \\\"wind_direction_degree\\\": \\\"340\\\", //风向角度，范围0~360，0为正北，90为正东，180为正南，270为正西         \\\"wind_speed\\\": \\\"8.05\\\", //风速，单位为km/h公里每小时或mph英里每小时         \\\"wind_scale\\\": \\\"2\\\", //风力等级，请参考：http://baike.baidu.com/view/465076.htm         \\\"clouds\\\": \\\"90\\\", //云量，单位%，范围0~100，天空被云覆盖的百分比 #目前不支持中国城市#         \\\"dew_point\\\": \\\"-12\\\" //露点温度，请参考：http://baike.baidu.com/view/118348.htm #目前不支持中国城市#       },       \\\"last_update\\\": \\\"2015-09-25T22:45:00-07:00\\\" //数据更新时间（该城市的本地时间）     }   ] }\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Api Docs\",\n                  \"model_config\": {}\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\",\n                  \"model_config\": {}\n                },\n                \"api_url_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_url_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": {\n                    \"name\": null,\n                    \"tags\": null,\n                    \"_type\": \"prompt\",\n                    \"metadata\": null,\n                    \"template\": \"You are given the below API Documentation:\\n{api_docs}\\nUsing this documentation, generate the full API url to call for answering the user question.\\nYou should build the API url in order to get a response that is as short as possible, while still getting the necessary information to answer the question. Pay attention to deliberately exclude any unnecessary pieces of data in the API call.\\n\\nQuestion:{question}\\nAPI url:\",\n                    \"input_types\": {},\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"api_docs\",\n                      \"question\"\n                    ],\n                    \"template_format\": \"f-string\",\n                    \"partial_variables\": {},\n                    \"validate_template\": false\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Api Url Prompt\",\n                  \"model_config\": {}\n                },\n                \"limit_to_domains\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"limit_to_domains\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"https://api.seniverse.com\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Limit To Domains\",\n                  \"model_config\": {}\n                },\n                \"api_response_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_response_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": {\n                    \"name\": null,\n                    \"tags\": null,\n                    \"_type\": \"prompt\",\n                    \"metadata\": null,\n                    \"template\": \"You are given the below API Documentation:\\n{api_docs}\\nUsing this documentation, generate the full API url to call for answering the user question.\\nYou should build the API url in order to get a response that is as short as possible, while still getting the necessary information to answer the question. Pay attention to deliberately exclude any unnecessary pieces of data in the API call.\\n\\nQuestion:{question}\\nAPI url: {api_url}\\n\\nHere is the response from the API:\\n\\n{api_response}\\n\\nSummarize this response to answer the original question.\\n\\nSummary:\",\n                    \"input_types\": {},\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"api_docs\",\n                      \"api_response\",\n                      \"api_url\",\n                      \"question\"\n                    ],\n                    \"template_format\": \"f-string\",\n                    \"partial_variables\": {},\n                    \"validate_template\": false\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Api Response Prompt\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Load chain from just an LLM and the api docs.\",\n              \"base_classes\": [\n                \"APIChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"APIChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"APIChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 563,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 477.6277694871776,\n            \"y\": 380.571320729037\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 477.6277694871776,\n            \"y\": 380.571320729037\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-48659\",\n          \"data\": {\n            \"id\": \"PromptTemplate-48659\",\n            \"node\": {\n              \"beta\": false,\n              \"icon\": null,\n              \"name\": \"\",\n              \"error\": null,\n              \"template\": {\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"PromptTemplate\",\n                \"api_docs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_docs\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"api_docs\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"question\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"question\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"question\",\n                  \"model_config\": {}\n                },\n                \"template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"You are given the below API Documentation:\\n{api_docs}\\n\\nUsing this documentation, generate the full API url to call for answering the user question.\\nYou should build the API url in order to get a response that is as short as possible, while still getting the necessary information to answer the question. \\n\\nPlease do not return any other words except the full API url.\\n\\nQuestion:{question}\\nAPI url:\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Template\",\n                  \"model_config\": {}\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Types\",\n                  \"model_config\": {}\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Output Parser\",\n                  \"model_config\": {}\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"api_docs\",\n                    \"question\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Variables\",\n                  \"model_config\": {}\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Literal['f-string', 'mustache', 'jinja2']\",\n                  \"value\": \"f-string\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Template Format\",\n                  \"model_config\": {}\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Partial Variables\",\n                  \"model_config\": {}\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Validate Template\",\n                  \"model_config\": {}\n                }\n              },\n              \"full_path\": null,\n              \"description\": \"Prompt template for a language model.\",\n              \"base_classes\": [\n                \"BasePromptTemplate\",\n                \"StringPromptTemplate\",\n                \"PromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"api_docs\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 455,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -52.092556516963214,\n            \"y\": 621.8035505128619\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -52.092556516963214,\n            \"y\": 621.8035505128619\n          }\n        },\n        {\n          \"id\": \"BishengLLM-687d0\",\n          \"data\": {\n            \"id\": \"BishengLLM-687d0\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 4,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BishengLLM\",\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -85.44442588200178,\n            \"y\": 56.91781929370879\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -85.44442588200178,\n            \"y\": 56.91781929370879\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 254.0096889201243,\n        \"y\": 143.6897914083358,\n        \"zoom\": 0.6555101557762626\n      }\n    },\n    \"order_num\": 7012307,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 17:41:21\",\n    \"parameters\": null,\n    \"name\": \"⭐️知识库问答【严谨版】\",\n    \"description\": \"选择知识库，进行知识库问答。通过ES搜索控制召回内容强相关（当然还有许多细节优化，详见：https://dataelem.feishu.cn/wiki/R7OYwlN9Ii8jRFkmOuKcMKtEnZc）\",\n    \"flow_id\": \"95c28c47291641d680a380cf8b03d104\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 17:41:21\",\n    \"id\": 187,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-bMaXkCombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function-RetrievalQA-ypS4mBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-bMaXk\",\n          \"target\": \"RetrievalQA-ypS4m\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-gM5zgPromptTemplate|PromptTemplate-gM5zg|PromptTemplate|BasePromptTemplate|StringPromptTemplate-CombineDocsChain-bMaXkBasePromptTemplate|prompt|CombineDocsChain-bMaXk\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-gM5zg\",\n          \"target\": \"CombineDocsChain-bMaXk\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-gM5zg|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-bMaXk\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElasticKeywordsSearch-f27a9ElasticKeywordsSearch|ElasticKeywordsSearch-f27a9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-ypS4mBaseRetriever|retriever|RetrievalQA-ypS4m\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElasticKeywordsSearch-f27a9\",\n          \"target\": \"RetrievalQA-ypS4m\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElasticKeywordsSearch|ElasticKeywordsSearch-f27a9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-ypS4m\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-4iBFjPromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate-ElasticKeywordsSearch-f27a9BasePromptTemplate|prompt|ElasticKeywordsSearch-f27a9\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-4iBFj\",\n          \"target\": \"ElasticKeywordsSearch-f27a9\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|ElasticKeywordsSearch-f27a9\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-bc77fBishengLLM|BishengLLM-bc77f|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-bMaXkBaseLanguageModel|llm|CombineDocsChain-bMaXk\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-bc77f\",\n          \"target\": \"CombineDocsChain-bMaXk\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-bc77f|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-bMaXk\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-bc77fBishengLLM|BishengLLM-bc77f|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-ElasticKeywordsSearch-f27a9BaseLLM|llm|ElasticKeywordsSearch-f27a9\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-bc77f\",\n          \"target\": \"ElasticKeywordsSearch-f27a9\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-bc77f|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLLM|llm|ElasticKeywordsSearch-f27a9\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"RetrievalQA-ypS4m\",\n          \"data\": {\n            \"id\": \"RetrievalQA-ypS4m\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"l2_name\": \"input_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"l2_name\": \"retriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"l2_name\": \"combine_documents_chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_source_documents\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"RetrievalQA\",\n                \"BaseRetrievalQA\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1941.838444212454,\n            \"y\": 902.7207397625788\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1941.838444212454,\n            \"y\": 902.7207397625788\n          }\n        },\n        {\n          \"id\": \"CombineDocsChain-bMaXk\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-bMaXk\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 7000,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"document_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"document_prompt\",\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 413,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1334.4528869077485,\n            \"y\": 404.7844512964858\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1334.4528869077485,\n            \"y\": 404.7844512964858\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-gM5zg\",\n          \"data\": {\n            \"id\": \"PromptTemplate-gM5zg\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"context\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"context\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"context\"\n                },\n                \"question\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"question\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"question\"\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：客服\\n\\n# Background :\\n- 你是一名客服人员。你的日常工作是根据【参考文本】的内容回复用户的各类咨询问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"question\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"StringPromptTemplate\",\n                \"BasePromptTemplate\",\n                \"PromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\",\n                  \"question\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {\n                \"formatters\": {\n                  \"openai_api_key\": {}\n                },\n                \"base_formatters\": {\n                  \"dict\": {},\n                  \"list\": {},\n                  \"show\": {},\n                  \"union\": {},\n                  \"kwargs\": {},\n                  \"default\": {},\n                  \"headers\": {},\n                  \"optional\": {},\n                  \"password\": {},\n                  \"multiline\": {},\n                  \"model_fields\": {\n                    \"MODEL_DICT\": {\n                      \"OpenAI\": [\n                        \"text-davinci-003\",\n                        \"text-davinci-002\",\n                        \"text-curie-001\",\n                        \"text-babbage-001\",\n                        \"text-ada-001\"\n                      ],\n                      \"Anthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ],\n                      \"ChatOpenAI\": [\n                        \"gpt-3.5-turbo-0613\",\n                        \"gpt-3.5-turbo\",\n                        \"gpt-3.5-turbo-16k-0613\",\n                        \"gpt-3.5-turbo-16k\",\n                        \"gpt-4-0613\",\n                        \"gpt-4-32k-0613\",\n                        \"gpt-4\",\n                        \"gpt-4-32k\"\n                      ],\n                      \"ChatAnthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ]\n                    }\n                  },\n                  \"dict_code_file\": {}\n                }\n              }\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 455,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 832.6495717437198,\n            \"y\": -8.979469210830944\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 832.6495717437198,\n            \"y\": -8.979469210830944\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-4iBFj\",\n          \"data\": {\n            \"id\": \"PromptTemplate-4iBFj\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"question\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"question\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"question\"\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"分析给定Question，提取Question中包含的KeyWords，输出列表形式\\n\\nExamples:\\nQuestion: 数据项素2022年营收是多少？\\nKeyWords: ['数据项素', '2022', '营收, '营业收入']\\nQuestion: 深圳出差住宿标准是什么？\\nKeyWords: ['深圳', '出差', '住宿标准', '报销标准']\\n\\n\\n----------------\\nQuestion: {question}\\nKeyWords: \",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"question\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"StringPromptTemplate\",\n                \"BasePromptTemplate\",\n                \"PromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"question\"\n                ],\n                \"template\": [\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {\n                \"formatters\": {\n                  \"openai_api_key\": {}\n                },\n                \"base_formatters\": {\n                  \"dict\": {},\n                  \"list\": {},\n                  \"show\": {},\n                  \"union\": {},\n                  \"kwargs\": {},\n                  \"default\": {},\n                  \"headers\": {},\n                  \"optional\": {},\n                  \"password\": {},\n                  \"multiline\": {},\n                  \"model_fields\": {\n                    \"MODEL_DICT\": {\n                      \"OpenAI\": [\n                        \"text-davinci-003\",\n                        \"text-davinci-002\",\n                        \"text-curie-001\",\n                        \"text-babbage-001\",\n                        \"text-ada-001\"\n                      ],\n                      \"Anthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ],\n                      \"ChatOpenAI\": [\n                        \"gpt-3.5-turbo-0613\",\n                        \"gpt-3.5-turbo\",\n                        \"gpt-3.5-turbo-16k-0613\",\n                        \"gpt-3.5-turbo-16k\",\n                        \"gpt-4-0613\",\n                        \"gpt-4-32k-0613\",\n                        \"gpt-4\",\n                        \"gpt-4-32k\"\n                      ],\n                      \"ChatAnthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ]\n                    }\n                  },\n                  \"dict_code_file\": {}\n                }\n              }\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 373,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 162.28620398428382,\n            \"y\": 658.7665439891539\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 162.28620398428382,\n            \"y\": 658.7665439891539\n          }\n        },\n        {\n          \"id\": \"ElasticKeywordsSearch-f27a9\",\n          \"data\": {\n            \"id\": \"ElasticKeywordsSearch-f27a9\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Ids\",\n                  \"model_config\": {}\n                },\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLLM\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"ElasticKeywordsSearch\",\n                \"prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\",\n                  \"model_config\": {}\n                },\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Drop Old\",\n                  \"model_config\": {}\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\",\n                  \"model_config\": {}\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\",\n                  \"model_config\": {}\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadatas\",\n                  \"model_config\": {}\n                },\n                \"index_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_name\",\n                  \"show\": true,\n                  \"type\": \"knowledge_one\",\n                  \"value\": \"毕昇产品文档20240421\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Index Name\",\n                  \"model_config\": {},\n                  \"collection_id\": 4597\n                },\n                \"ssl_verify\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"ssl_verify\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"ssl_verify\",\n                  \"model_config\": {}\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"similarity\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Search Type\",\n                  \"model_config\": {}\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{\\\"k\\\":6}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Search Kwargs\",\n                  \"model_config\": {}\n                },\n                \"refresh_indices\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"refresh_indices\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Refresh Indices\",\n                  \"model_config\": {}\n                },\n                \"elasticsearch_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elasticsearch_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"ES_connection_url\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Construct ElasticKeywordsSearch wrapper from raw documents.\",\n              \"base_classes\": [\n                \"ElasticKeywordsSearch\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"ElasticKeywordsSearch\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ElasticKeywordsSearch\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 711,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 812.1149007520644,\n            \"y\": 664.6494588266206\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 812.1149007520644,\n            \"y\": 664.6494588266206\n          }\n        },\n        {\n          \"id\": \"BishengLLM-bc77f\",\n          \"data\": {\n            \"id\": \"BishengLLM-bc77f\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BishengLLM\",\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 121.42385839968928,\n            \"y\": 86.07764034320081\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 121.42385839968928,\n            \"y\": 86.07764034320081\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 129.04745958386252,\n        \"y\": 45.70158800856939,\n        \"zoom\": 0.5843377187256229\n      }\n    },\n    \"order_num\": 7077842,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-20 18:13:33\",\n    \"parameters\": null,\n    \"name\": \"⭐️联网搜索对话\",\n    \"description\": \"支持通过搜索引擎获取信息并回答问题\",\n    \"flow_id\": \"8374d36f23af4c438c4ce4e6e080e6cf\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-20 18:13:33\",\n    \"id\": 189,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-BingSearchAPIWrapper-Rikh1BingSearchAPIWrapper|BingSearchAPIWrapper-Rikh1|BingSearchAPIWrapper-BingSearchRun-S3aq7BingSearchAPIWrapper|api_wrapper|BingSearchRun-S3aq7\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchAPIWrapper-Rikh1\",\n          \"target\": \"BingSearchRun-S3aq7\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BingSearchAPIWrapper|BingSearchAPIWrapper-Rikh1|BingSearchAPIWrapper\",\n          \"targetHandle\": \"BingSearchAPIWrapper|api_wrapper|BingSearchRun-S3aq7\"\n        },\n        {\n          \"id\": \"reactflow__edge-BingSearchRun-S3aq7BingSearchRun|BingSearchRun-S3aq7|Tool|BaseTool|BingSearchRun|BaseTool-ZeroShotAgent-6vSFwBaseTool|tools|ZeroShotAgent-6vSFw\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BingSearchRun-S3aq7\",\n          \"target\": \"ZeroShotAgent-6vSFw\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BingSearchRun|BingSearchRun-S3aq7|Tool|BaseTool|BingSearchRun|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-6vSFw\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-bc485BishengLLM|BishengLLM-bc485|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ZeroShotAgent-6vSFwBaseLanguageModel|llm|ZeroShotAgent-6vSFw\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-bc485\",\n          \"target\": \"ZeroShotAgent-6vSFw\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-bc485|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ZeroShotAgent-6vSFw\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"BingSearchRun-S3aq7\",\n          \"data\": {\n            \"id\": \"BingSearchRun-S3aq7\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchRun\",\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"api_wrapper\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"api_wrapper\",\n                  \"show\": true,\n                  \"type\": \"BingSearchAPIWrapper\",\n                  \"l2_name\": \"api_wrapper\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"args_schema\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"args_schema\",\n                  \"show\": false,\n                  \"type\": \"Type[pydantic.main.BaseModel]\",\n                  \"l2_name\": \"args_schema\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"handle_tool_error\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"handle_tool_error\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"handle_tool_error\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A wrapper around Bing Search. Useful for when you need to answer questions about current events. Input should be a search query.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\",\n                \"BingSearchRun\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"BingSearchRun\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchRun\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 249,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 430.3491112346748,\n            \"y\": 526.7220206834627\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 430.3491112346748,\n            \"y\": 526.7220206834627\n          }\n        },\n        {\n          \"id\": \"BingSearchAPIWrapper-Rikh1\",\n          \"data\": {\n            \"id\": \"BingSearchAPIWrapper-Rikh1\",\n            \"node\": {\n              \"l2_name\": \"BING搜索\",\n              \"template\": {\n                \"k\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"k\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 10,\n                  \"l2_name\": \"k\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"BingSearchAPIWrapper\",\n                \"bing_search_url\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_search_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://api.bing.microsoft.com/v7.0/search\",\n                  \"l2_name\": \"bing_search_url\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"bing_subscription_key\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"bing_subscription_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"137b003c89f04966ac3b1081ee5b10bc\",\n                  \"l2_name\": \"bing_subscription_key\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Wrapper for Bing Search API.\",\n              \"base_classes\": [\n                \"BingSearchAPIWrapper\"\n              ],\n              \"display_name\": \"BingSearchAPIWrapper\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"BingSearchAPIWrapper\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"position\": {\n            \"x\": -17.635040947620837,\n            \"y\": 468.8157898410929\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -17.635040947620837,\n            \"y\": 468.8157898410929\n          }\n        },\n        {\n          \"id\": \"ZeroShotAgent-6vSFw\",\n          \"data\": {\n            \"id\": \"ZeroShotAgent-6vSFw\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ZeroShotAgent\",\n                \"tools\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tools\",\n                  \"show\": true,\n                  \"type\": \"BaseTool\",\n                  \"l2_name\": \"tools\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prefix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Answer the following questions as best you can. You have access to the following tools:\",\n                  \"l2_name\": \"prefix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"suffix\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"answer in Chinese.\\nBegin!Question: {query}Thought:{agent_scratchpad}\",\n                  \"l2_name\": \"suffix\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"AgentOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"query\",\n                    \"agent_scratchpad\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callback_manager\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callback_manager\",\n                  \"show\": false,\n                  \"type\": \"BaseCallbackManager\",\n                  \"l2_name\": \"callback_manager\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"format_instructions\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Use the following format:\\n\\nQuestion: the input question you must answer\\nThought: you should always think about what to do\\nAction: the action to take, should be one of [{tool_names}]\\nAction Input: the input to the action\\nObservation: the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: the final answer to the original input question\",\n                  \"l2_name\": \"format_instructions\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Construct an agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"ZeroShotAgent\",\n                \"Agent\",\n                \"BaseSingleActionAgent\",\n                \"function\"\n              ],\n              \"display_name\": \"ZeroShotAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\"\n            },\n            \"type\": \"ZeroShotAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 659,\n          \"position\": {\n            \"x\": 937.4050050593946,\n            \"y\": 62.48387006449201\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 937.4050050593946,\n            \"y\": 62.48387006449201\n          }\n        },\n        {\n          \"id\": \"BishengLLM-bc485\",\n          \"data\": {\n            \"id\": \"BishengLLM-bc485\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 4,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"position\": {\n            \"x\": 31.941398539174173,\n            \"y\": -96.4545131206016\n          },\n          \"positionAbsolute\": {\n            \"x\": 31.941398539174173,\n            \"y\": -96.4545131206016\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 271.43658145124573,\n        \"y\": 126.9479936490626,\n        \"zoom\": 0.8967278502185819\n      }\n    },\n    \"order_num\": 7208912,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-08-23 17:41:28\",\n    \"parameters\": null,\n    \"name\": \"⭐️ 通用信息提取\",\n    \"description\": \"上传文件，触发自动提取，提取文件中的所有keyvalue信息。\",\n    \"flow_id\": \"947c03db78784932a344314844e32940\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-08-23 17:41:28\",\n    \"id\": 190,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-5UHOIPromptTemplate|PromptTemplate-5UHOI|StringPromptTemplate|PromptTemplate|BasePromptTemplate-LLMChain-aSC8HBasePromptTemplate|prompt|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-5UHOI\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-5UHOI|StringPromptTemplate|PromptTemplate|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-2763fBishengLLM|BishengLLM-2763f|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-LLMChain-aSC8HBaseLanguageModel|llm|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-2763f\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-2763f|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-293c3ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-293c3|Document-PromptTemplate-5UHOIDocument;BaseOutputParser|context|PromptTemplate-5UHOI\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"target\": \"PromptTemplate-5UHOI\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-293c3|Document\",\n          \"targetHandle\": \"Document;BaseOutputParser|context|PromptTemplate-5UHOI\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-3ccbfInputNode|InputNode-3ccbf|input-LLMChain-aSC8Hinput|input_node|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-3ccbf\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputNode|InputNode-3ccbf|input\",\n          \"targetHandle\": \"input|input_node|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-fc806InputFileNode|InputFileNode-fc806|fileNode-ElemUnstructuredLoaderV0-293c3fileNode|file_path|ElemUnstructuredLoaderV0-293c3\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-fc806\",\n          \"target\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-fc806|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-293c3\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"LLMChain-aSC8H\",\n          \"data\": {\n            \"id\": \"LLMChain-aSC8H\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"LLMChain\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"llm_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_kwargs\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"llm_kwargs\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"text\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseLLMOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_final_only\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_final_only\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_final_only\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain to run queries against LLMs.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"LLMChain\",\n                \"function\"\n              ],\n              \"display_name\": \"LLMChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"\n            },\n            \"type\": \"LLMChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 315,\n          \"position\": {\n            \"x\": 1313.6980454632887,\n            \"y\": 900.921715712506\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1313.6980454632887,\n            \"y\": 900.921715712506\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-5UHOI\",\n          \"data\": {\n            \"id\": \"PromptTemplate-5UHOI\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"input\"\n                },\n                \"context\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"context\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"context\"\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"提取以下文本内容中的所有keyvalue信息，符合如下格式定义：\\n\\nThe output should be a Markdown code snippet formatted in the following schema, including the leading and trailing \\\"```json\\\" and \\\"```\\\":\\n\\n```json\\n\\\"Key1\\\": Value\\n\\\"Key2\\\": Value\\n```\\n\\n文本内容\\n{context}\\n\\n{input}\",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"input\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"StringPromptTemplate\",\n                \"PromptTemplate\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"input\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {\n                \"formatters\": {\n                  \"openai_api_key\": {}\n                },\n                \"base_formatters\": {\n                  \"dict\": {},\n                  \"list\": {},\n                  \"show\": {},\n                  \"union\": {},\n                  \"kwargs\": {},\n                  \"default\": {},\n                  \"headers\": {},\n                  \"optional\": {},\n                  \"password\": {},\n                  \"multiline\": {},\n                  \"model_fields\": {\n                    \"MODEL_DICT\": {\n                      \"OpenAI\": [\n                        \"text-davinci-003\",\n                        \"text-davinci-002\",\n                        \"text-curie-001\",\n                        \"text-babbage-001\",\n                        \"text-ada-001\"\n                      ],\n                      \"Anthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ],\n                      \"ChatOpenAI\": [\n                        \"gpt-3.5-turbo-0613\",\n                        \"gpt-3.5-turbo\",\n                        \"gpt-3.5-turbo-16k-0613\",\n                        \"gpt-3.5-turbo-16k\",\n                        \"gpt-4-0613\",\n                        \"gpt-4-32k-0613\",\n                        \"gpt-4\",\n                        \"gpt-4-32k\"\n                      ],\n                      \"ChatAnthropic\": [\n                        \"claude-v1\",\n                        \"claude-v1-100k\",\n                        \"claude-instant-v1\",\n                        \"claude-instant-v1-100k\",\n                        \"claude-v1.3\",\n                        \"claude-v1.3-100k\",\n                        \"claude-v1.2\",\n                        \"claude-v1.0\",\n                        \"claude-instant-v1.1\",\n                        \"claude-instant-v1.1-100k\",\n                        \"claude-instant-v1.0\"\n                      ]\n                    }\n                  },\n                  \"dict_code_file\": {}\n                }\n              }\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 416,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 809.51004530817,\n            \"y\": 1237.7696518068285\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 809.51004530817,\n            \"y\": 1237.7696518068285\n          }\n        },\n        {\n          \"id\": \"BishengLLM-2763f\",\n          \"data\": {\n            \"id\": \"BishengLLM-2763f\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 5,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 406,\n          \"position\": {\n            \"x\": -68.63553056857684,\n            \"y\": 696.600000304993\n          },\n          \"positionAbsolute\": {\n            \"x\": -68.63553056857684,\n            \"y\": 696.600000304993\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-293c3\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"kwargs\",\n                  \"show\": true,\n                  \"type\": \"dict\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"kwargs\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"The appropriate parser is automatically selected based on the file format and OCR is supported\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 475,\n          \"position\": {\n            \"x\": 237.30334166517488,\n            \"y\": 1166.7647849898744\n          },\n          \"positionAbsolute\": {\n            \"x\": 237.30334166517488,\n            \"y\": 1166.7647849898744\n          }\n        },\n        {\n          \"id\": \"InputNode-3ccbf\",\n          \"data\": {\n            \"id\": \"InputNode-3ccbf\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"开始\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 253,\n          \"position\": {\n            \"x\": 809.0064819287146,\n            \"y\": 663.3484087022575\n          },\n          \"positionAbsolute\": {\n            \"x\": 809.0064819287146,\n            \"y\": 663.3484087022575\n          }\n        },\n        {\n          \"id\": \"InputFileNode-fc806\",\n          \"data\": {\n            \"id\": \"InputFileNode-fc806\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \"..xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"请上传文件\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 335,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -283.58174168605024,\n            \"y\": 1208.0544562311302\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": -283.58174168605024,\n            \"y\": 1208.0544562311302\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 249.5759133596914,\n        \"y\": -408.5108685516501,\n        \"zoom\": 0.6296974332414016\n      }\n    },\n    \"order_num\": 7274447,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-09-03 21:23:10\",\n    \"parameters\": null,\n    \"name\": \"⭐️单文档问答\",\n    \"description\": \"上传文件，然后可以查询文件中相关的问题\",\n    \"flow_id\": \"9f59249acf76448899f8918b2aa964af\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-09-03 21:23:10\",\n    \"id\": 191,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-LAGXMElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document-RecursiveCharacterTextSplitter-a7fc9Document|documents|RecursiveCharacterTextSplitter-a7fc9\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-LAGXM\",\n          \"target\": \"RecursiveCharacterTextSplitter-a7fc9\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document\",\n          \"targetHandle\": \"Document|documents|RecursiveCharacterTextSplitter-a7fc9\"\n        },\n        {\n          \"id\": \"reactflow__edge-RecursiveCharacterTextSplitter-a7fc9RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document-Milvus-T3kRHDocument|documents|Milvus-T3kRH\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RecursiveCharacterTextSplitter-a7fc9\",\n          \"target\": \"Milvus-T3kRH\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document\",\n          \"targetHandle\": \"Document|documents|Milvus-T3kRH\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-T3kRHMilvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-37d31BaseRetriever|retriever|RetrievalQA-37d31\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-T3kRH\",\n          \"target\": \"RetrievalQA-37d31\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"Milvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-37d31\"\n        },\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-Pud2pCombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function-RetrievalQA-37d31BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-37d31\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-Pud2p\",\n          \"target\": \"RetrievalQA-37d31\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-37d31\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-eda80InputFileNode|InputFileNode-eda80|fileNode-ElemUnstructuredLoaderV0-LAGXMfileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-eda80\",\n          \"target\": \"ElemUnstructuredLoaderV0-LAGXM\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-eda80|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-1bcf8BishengLLM|BishengLLM-1bcf8|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-Pud2pBaseLanguageModel|llm|CombineDocsChain-Pud2p\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-1bcf8\",\n          \"target\": \"CombineDocsChain-Pud2p\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-1bcf8|BishengLLM|BaseLanguageModel|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-Pud2p\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengEmbedding-eda33BishengEmbedding|BishengEmbedding-eda33|Embeddings|BishengEmbedding-Milvus-T3kRHEmbeddings|embedding|Milvus-T3kRH\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengEmbedding-eda33\",\n          \"target\": \"Milvus-T3kRH\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengEmbedding|BishengEmbedding-eda33|Embeddings|BishengEmbedding\",\n          \"targetHandle\": \"Embeddings|embedding|Milvus-T3kRH\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"CombineDocsChain-Pud2p\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-Pud2p\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"token_max\": {\n                  \"l2\": false,\n                  \"info\": \"当前只对stuff 生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"l2_name\": \"token_max\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"l2_name\": \"chain_type\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 377,\n          \"position\": {\n            \"x\": 762.7783327725605,\n            \"y\": 31.94438969676179\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 762.7783327725605,\n            \"y\": 31.94438969676179\n          }\n        },\n        {\n          \"id\": \"Milvus-T3kRH\",\n          \"data\": {\n            \"id\": \"Milvus-T3kRH\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"drop_old\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"l2_name\": \"documents\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"l2_name\": \"embedding\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadatas\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"index_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"l2_name\": \"search_kwargs\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"search_params\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"l2_name\": \"collection_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": \"\"\n                },\n                \"connection_args\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"l2_name\": \"connection_args\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"l2_name\": \"consistency_level\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"VectorStore\",\n                \"Milvus\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 347,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 885.364722441176,\n            \"y\": 638.0514447977121\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 885.364722441176,\n            \"y\": 638.0514447977121\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\"\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xlsx\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\"\n                }\n              },\n              \"description\": \"Loads a PDF with pypdf and chunks at character level. dummy version\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -174.48653868947127,\n            \"y\": 475.0990452635182\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -174.48653868947127,\n            \"y\": 475.0990452635182\n          }\n        },\n        {\n          \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n          \"data\": {\n            \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"RecursiveCharacterTextSplitter\",\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chunk_size\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_size\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 1000,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Size\"\n                },\n                \"separators\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"separators\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\\\\n\\\\n\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator\"\n                },\n                \"chunk_overlap\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chunk_overlap\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 200,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Chunk Overlap\"\n                },\n                \"separator_type\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"separator_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Text\",\n                  \"options\": [\n                    \"Text\",\n                    \"cobol\",\n                    \"cpp\",\n                    \"csharp\",\n                    \"go\",\n                    \"html\",\n                    \"java\",\n                    \"js\",\n                    \"kotlin\",\n                    \"latex\",\n                    \"markdown\",\n                    \"php\",\n                    \"proto\",\n                    \"python\",\n                    \"rst\",\n                    \"ruby\",\n                    \"rust\",\n                    \"scala\",\n                    \"sol\",\n                    \"swift\",\n                    \"ts\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Separator Type\"\n                }\n              },\n              \"description\": \"Splitting text by recursively look at characters.\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"RecursiveCharacterTextSplitter\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\n            },\n            \"type\": \"RecursiveCharacterTextSplitter\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 541,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 380.122171588396,\n            \"y\": 483.5257541316808\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 380.122171588396,\n            \"y\": 483.5257541316808\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-37d31\",\n          \"data\": {\n            \"id\": \"RetrievalQA-37d31\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Memory\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"input_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Key\",\n                  \"model_config\": {}\n                },\n                \"retriever\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Retriever\",\n                  \"model_config\": {}\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\",\n                  \"model_config\": {}\n                },\n                \"output_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Output Key\",\n                  \"model_config\": {}\n                },\n                \"combine_documents_chain\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Combine Documents Chain\",\n                  \"model_config\": {}\n                },\n                \"return_source_documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Return Source Documents\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"BaseRetrievalQA\",\n                \"RetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 481,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1497.3865616690784,\n            \"y\": 525.8440613798767\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1497.3865616690784,\n            \"y\": 525.8440613798767\n          }\n        },\n        {\n          \"id\": \"InputFileNode-eda80\",\n          \"data\": {\n            \"id\": \"InputFileNode-eda80\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".csv\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".tiff\",\n                    \".xlsx\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"csv\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \"tiff\",\n                    \"xlsx\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"请上传文件\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -728.0965344734079,\n            \"y\": 480.2837762791313\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -728.0965344734079,\n            \"y\": 480.2837762791313\n          }\n        },\n        {\n          \"id\": \"BishengLLM-1bcf8\",\n          \"data\": {\n            \"id\": \"BishengLLM-1bcf8\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 9,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BishengLLM\",\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 407,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 220.52841712247573,\n            \"y\": -113.58850984307922\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 220.52841712247573,\n            \"y\": -113.58850984307922\n          }\n        },\n        {\n          \"id\": \"BishengEmbedding-eda33\",\n          \"data\": {\n            \"id\": \"BishengEmbedding-eda33\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"BishengEmbedding\",\n                \"model\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_embedding\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"embeddings\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embeddings\",\n                  \"show\": true,\n                  \"type\": \"Embeddings\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embeddings\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": true,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"max_retries\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"max_retries\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 6,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Max Retries\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": true,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"model_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": {},\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Kwargs\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"DashScopeEmbeddings\",\n                    \"vllm\": \"OpenAIEmbeddings\",\n                    \"zhipu\": \"OpenAIEmbeddings\",\n                    \"ollama\": \"OllamaEmbeddings\",\n                    \"openai\": \"OpenAIEmbeddings\",\n                    \"minimax\": \"OpenAIEmbeddings\",\n                    \"qianfan\": \"QianfanEmbeddingsEndpoint\",\n                    \"llamacpp\": \"OpenAIEmbeddings\",\n                    \"bisheng_rt\": \"HostEmbeddings\",\n                    \"xinference\": \"OpenAIEmbeddings\",\n                    \"azure_openai\": \"AzureOpenAIEmbeddings\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"request_timeout\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"request_timeout\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 200,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Request Timeout\",\n                  \"model_config\": {}\n                },\n                \"embedding_ctx_length\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding_ctx_length\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 8192,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding Ctx Length\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Use the embedding model that has been launched in model management \",\n              \"base_classes\": [\n                \"Embeddings\",\n                \"BishengEmbedding\"\n              ],\n              \"display_name\": \"BishengEmbedding\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengEmbedding\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 273,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 390.035554735752,\n            \"y\": 1105.577580188958\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 390.035554735752,\n            \"y\": 1105.577580188958\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 543.6795293445036,\n        \"y\": 101.93050532990264,\n        \"zoom\": 0.5416165288707682\n      }\n    },\n    \"order_num\": 7339982,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-09-20 18:40:48\",\n    \"parameters\": null,\n    \"name\": \"演示-券商研报生成\",\n    \"description\": \"生成关于某家公司的研究报告\",\n    \"flow_id\": \"7bbdcd64287343f98effc90a70119f0a\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-09-20 18:40:48\",\n    \"id\": 192,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-foMvuCombineDocsChain|CombineDocsChain-foMvu|BaseCombineDocumentsChain|function-RetrievalQA-1fCXFBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-1fCXF\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-foMvu\",\n          \"target\": \"RetrievalQA-1fCXF\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-foMvu|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-1fCXF\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalQA-1fCXFRetrievalQA|RetrievalQA-1fCXF|Chain|BaseRetrievalQA|RetrievalQA|function-Report-fSFx4function|chains|Report-fSFx4\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalQA-1fCXF\",\n          \"target\": \"Report-fSFx4\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"RetrievalQA|RetrievalQA-1fCXF|Generic|Chain|Runnable|RetrievalQA|RunnableSerializable|BaseRetrievalQA|function\",\n          \"targetHandle\": \"function|chains|Report-fSFx4\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-E2BnsMilvus|Milvus-E2Bns|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-1fCXFBaseRetriever|retriever|RetrievalQA-1fCXF\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-E2Bns\",\n          \"target\": \"RetrievalQA-1fCXF\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-E2Bns|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-1fCXF\"\n        },\n        {\n          \"id\": \"reactflow__edge-ProxyChatLLM-CzZfAProxyChatLLM|ProxyChatLLM-CzZfA|BaseLanguageModel|BaseChatModel|ProxyChatLLM|BaseLLM-CombineDocsChain-foMvuBaseLanguageModel|llm|CombineDocsChain-foMvu\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ProxyChatLLM-CzZfA\",\n          \"target\": \"CombineDocsChain-foMvu\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"ProxyChatLLM|ProxyChatLLM-CzZfA|Generic|BaseLanguageModel|Runnable|ProxyChatLLM|RunnableSerializable|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-foMvu\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalQA-QWfeURetrievalQA|RetrievalQA-QWfeU|Chain|BaseRetrievalQA|RetrievalQA|function-Report-fSFx4function|chains|Report-fSFx4\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalQA-QWfeU\",\n          \"target\": \"Report-fSFx4\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"RetrievalQA|RetrievalQA-QWfeU|Generic|Chain|Runnable|RetrievalQA|RunnableSerializable|BaseRetrievalQA|function\",\n          \"targetHandle\": \"function|chains|Report-fSFx4\"\n        },\n        {\n          \"id\": \"reactflow__edge-CombineDocsChain-48oi2CombineDocsChain|CombineDocsChain-48oi2|BaseCombineDocumentsChain|function-RetrievalQA-QWfeUBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-QWfeU\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"CombineDocsChain-48oi2\",\n          \"target\": \"RetrievalQA-QWfeU\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-48oi2|BaseCombineDocumentsChain|function\",\n          \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-QWfeU\"\n        },\n        {\n          \"id\": \"reactflow__edge-ProxyChatLLM-3oL2CProxyChatLLM|ProxyChatLLM-3oL2C|BaseLanguageModel|BaseChatModel|ProxyChatLLM|BaseLLM-CombineDocsChain-48oi2BaseLanguageModel|llm|CombineDocsChain-48oi2\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ProxyChatLLM-3oL2C\",\n          \"target\": \"CombineDocsChain-48oi2\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"ProxyChatLLM|ProxyChatLLM-3oL2C|Generic|BaseLanguageModel|Runnable|ProxyChatLLM|RunnableSerializable|BaseChatModel|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-48oi2\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-YOosCMilvus|Milvus-YOosC|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-QWfeUBaseRetriever|retriever|RetrievalQA-QWfeU\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-YOosC\",\n          \"target\": \"RetrievalQA-QWfeU\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"Milvus|Milvus-YOosC|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-QWfeU\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-IZUU3InputNode|InputNode-IZUU3|input-RetrievalQA-QWfeUinput|input_node|RetrievalQA-QWfeU\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-IZUU3\",\n          \"target\": \"RetrievalQA-QWfeU\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"InputNode|InputNode-IZUU3|input\",\n          \"targetHandle\": \"input|input_node|RetrievalQA-QWfeU\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-NXC32InputNode|InputNode-NXC32|input-RetrievalQA-1fCXFinput|input_node|RetrievalQA-1fCXF\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-NXC32\",\n          \"target\": \"RetrievalQA-1fCXF\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"InputNode|InputNode-NXC32|input\",\n          \"targetHandle\": \"input|input_node|RetrievalQA-1fCXF\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-wxEKtPromptTemplate|PromptTemplate-wxEKt|BasePromptTemplate|PromptTemplate|StringPromptTemplate-CombineDocsChain-48oi2BasePromptTemplate|prompt|CombineDocsChain-48oi2\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-wxEKt\",\n          \"target\": \"CombineDocsChain-48oi2\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-wxEKt|Generic|PromptTemplate|StringPromptTemplate|Runnable|RunnableSerializable|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-48oi2\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-ot33yPromptTemplate|PromptTemplate-ot33y|BasePromptTemplate|PromptTemplate|StringPromptTemplate-CombineDocsChain-foMvuBasePromptTemplate|prompt|CombineDocsChain-foMvu\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-ot33y\",\n          \"target\": \"CombineDocsChain-foMvu\",\n          \"animated\": true,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-ot33y|Generic|PromptTemplate|StringPromptTemplate|Runnable|RunnableSerializable|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-foMvu\"\n        },\n        {\n          \"id\": \"reactflow__edge-VariableNode-d14a6VariableNode|VariableNode-d14a6|VariableNode-Report-fSFx4VariableNode|variables|Report-fSFx4\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"VariableNode-d14a6\",\n          \"target\": \"Report-fSFx4\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"VariableNode|VariableNode-d14a6|VariableNode\",\n          \"targetHandle\": \"VariableNode|variables|Report-fSFx4\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"Report-fSFx4\",\n          \"data\": {\n            \"id\": \"Report-fSFx4\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"Report\",\n                \"chains\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chains\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"functions\"\n                },\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": false,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"report_name\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"stop_flag\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"stop_flag\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variables\",\n                  \"show\": true,\n                  \"type\": \"VariableNode\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": false,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"text\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"report_name\": {\n                  \"info\": \"the file name we generate\",\n                  \"list\": false,\n                  \"name\": \"report_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"行业研报\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Report Name\"\n                }\n              },\n              \"description\": \"\",\n              \"base_classes\": [\n                \"Generic\",\n                \"Report\",\n                \"Chain\",\n                \"Runnable\",\n                \"RunnableSerializable\"\n              ],\n              \"display_name\": \"Report\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"Report\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 359,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 3290.5383305655187,\n            \"y\": 409.3538527610235\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 3290.5383305655187,\n            \"y\": 409.3538527610235\n          }\n        },\n        {\n          \"id\": \"InputNode-IZUU3\",\n          \"data\": {\n            \"id\": \"InputNode-IZUU3\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"公司的核心业务和主要产品和服务\",\n                    \"公司在行业中的地位和市场份额\",\n                    \"公司的核心竞争力，如专利技术、品牌影响力等\",\n                    \"对公司进行核心竞争力、盈利模式及可持续性分析\",\n                    \"影响公司业务的风险，包括市场风险、财务风险、法规风险\",\n                    \"公司的创新能力和技术水平\",\n                    \"公司未来展望和战略规划\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 555,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2071.9473113130907,\n            \"y\": -480.7563001986203\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2071.9473113130907,\n            \"y\": -480.7563001986203\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-1fCXF\",\n          \"data\": {\n            \"id\": \"RetrievalQA-1fCXF\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"Chain\",\n                \"Runnable\",\n                \"RetrievalQA\",\n                \"RunnableSerializable\",\n                \"BaseRetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2237.06298695131,\n            \"y\": 1483.4909209372413\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2237.06298695131,\n            \"y\": 1483.4909209372413\n          }\n        },\n        {\n          \"id\": \"CombineDocsChain-foMvu\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-foMvu\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"document_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"document_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 449,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1552.0278708162225,\n            \"y\": 1323.4452741641828\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1552.0278708162225,\n            \"y\": 1323.4452741641828\n          }\n        },\n        {\n          \"id\": \"Milvus-E2Bns\",\n          \"data\": {\n            \"id\": \"Milvus-E2Bns\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"similarity\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"AI行业研报\",\n                  \"l2_name\": \"行业库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 1855\n                },\n                \"connection_args\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1559.8817737276297,\n            \"y\": 1858.4770607573223\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1559.8817737276297,\n            \"y\": 1858.4770607573223\n          }\n        },\n        {\n          \"id\": \"ProxyChatLLM-CzZfA\",\n          \"data\": {\n            \"id\": \"ProxyChatLLM-CzZfA\",\n            \"node\": {\n              \"template\": {\n                \"n\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"n\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 1,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ProxyChatLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.9,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"client\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"client\",\n                  \"show\": false,\n                  \"type\": \"Any\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"headers\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"headers\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"max_tokens\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"max_tokens\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 2048,\n                  \"advanced\": true,\n                  \"password\": true,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"gpt-3.5-turbo-16k-0613\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"max_retries\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"max_retries\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 0,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.7,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"model_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"elemai_api_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elemai_api_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJiaXNoZW5nX29wZW42IiwiZXhwIjoxNzEzNzU0MjUyfQ.ww1l-GTBYJiHV3-U1JcacvWOqYPd-QMpuJIeuO9_OM8\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"elemai_base_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elemai_base_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"http://192.168.106.12:6001/v1/chatcompletion\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"request_timeout\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"request_timeout\",\n                  \"show\": false,\n                  \"type\": \"float\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tiktoken_model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"tiktoken_model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Wrapper around proxy Chat large language models.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"BaseLanguageModel\",\n                \"Runnable\",\n                \"ProxyChatLLM\",\n                \"RunnableSerializable\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"ProxyChatLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ProxyChatLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 501,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1021.6972307239736,\n            \"y\": 950.9394648638606\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1021.6972307239736,\n            \"y\": 950.9394648638606\n          }\n        },\n        {\n          \"id\": \"RetrievalQA-QWfeU\",\n          \"data\": {\n            \"id\": \"RetrievalQA-QWfeU\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalQA\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_documents_chain\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_documents_chain\",\n                  \"show\": true,\n                  \"type\": \"BaseCombineDocumentsChain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain for question-answering against an index.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"Chain\",\n                \"Runnable\",\n                \"RetrievalQA\",\n                \"RunnableSerializable\",\n                \"BaseRetrievalQA\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalQA\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n            },\n            \"type\": \"RetrievalQA\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2621.435785834929,\n            \"y\": 5.613751609646442\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2621.435785834929,\n            \"y\": 5.613751609646442\n          }\n        },\n        {\n          \"id\": \"CombineDocsChain-48oi2\",\n          \"data\": {\n            \"id\": \"CombineDocsChain-48oi2\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"LLM\"\n                },\n                \"_type\": \"load_qa_chain\",\n                \"prompt\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                },\n                \"token_max\": {\n                  \"info\": \"只对Stuff类型生效\",\n                  \"list\": false,\n                  \"name\": \"token_max\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": -1,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"token_max\"\n                },\n                \"chain_type\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"document_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"document_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Load question answering chain.\",\n              \"base_classes\": [\n                \"BaseCombineDocumentsChain\",\n                \"function\"\n              ],\n              \"display_name\": \"CombineDocsChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"CombineDocsChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 449,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1557.52279817175,\n            \"y\": -432.4678010752729\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1557.52279817175,\n            \"y\": -432.4678010752729\n          }\n        },\n        {\n          \"id\": \"ProxyChatLLM-3oL2C\",\n          \"data\": {\n            \"id\": \"ProxyChatLLM-3oL2C\",\n            \"node\": {\n              \"template\": {\n                \"n\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"n\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 1,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ProxyChatLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.9,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"client\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"client\",\n                  \"show\": false,\n                  \"type\": \"Any\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"headers\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"headers\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"max_tokens\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"max_tokens\",\n                  \"show\": true,\n                  \"type\": \"int\",\n                  \"value\": 2048,\n                  \"advanced\": true,\n                  \"password\": true,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"gpt-3.5-turbo-16k-0613\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"max_retries\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"max_retries\",\n                  \"show\": false,\n                  \"type\": \"int\",\n                  \"value\": 0,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.7,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"model_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"elemai_api_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elemai_api_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJiaXNoZW5nX29wZW42IiwiZXhwIjoxNzEzNzU0MjUyfQ.ww1l-GTBYJiHV3-U1JcacvWOqYPd-QMpuJIeuO9_OM8\",\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"elemai_base_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"elemai_base_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"http://192.168.106.12:6001/v1/chatcompletion\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"request_timeout\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"request_timeout\",\n                  \"show\": false,\n                  \"type\": \"float\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tiktoken_model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"tiktoken_model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Wrapper around proxy Chat large language models.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"BaseLanguageModel\",\n                \"Runnable\",\n                \"ProxyChatLLM\",\n                \"RunnableSerializable\",\n                \"BaseChatModel\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"ProxyChatLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"ProxyChatLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 501,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1024.1163217007638,\n            \"y\": -520.5274231154001\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1024.1163217007638,\n            \"y\": -520.5274231154001\n          }\n        },\n        {\n          \"id\": \"InputNode-NXC32\",\n          \"data\": {\n            \"id\": \"InputNode-NXC32\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"人工智能行业的市场概况，如市场规模等\",\n                    \"“AI人工智能”行业的趋势、动态和主要推动因素，例如技术创新、市场需求变化等\",\n                    \"“AI人工智能”涉及哪些领域，分析各个领域的特点、规模和增长前景\",\n                    \"”AI人工智能“行业的优势、劣势、机会和威胁进行评估\",\n                    \"“AI人工智能”行业影响较大的法规、政策和法律环境\",\n                    \"“AI人工智能”行业中的投资机会，可能影响行业表现的风险因素\",\n                    \"“AI人工智能”行业未来发展趋势和预测的观点，考虑到技术发展、市场需求变化等因素\",\n                    \"写一个“AI人工智能“行业的现状的总结题目，15个字以内，示例：AI+产品矩阵完善，利润端短期承压\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\"\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 595,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1618.88491687723,\n            \"y\": 660.651152090995\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1618.88491687723,\n            \"y\": 660.651152090995\n          }\n        },\n        {\n          \"id\": \"Milvus-YOosC\",\n          \"data\": {\n            \"id\": \"Milvus-YOosC\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"similarity\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"l2\": true,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"昆仑万维年报\",\n                  \"l2_name\": \"公司库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 1557\n                },\n                \"connection_args\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 393,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 2093.7332965707155,\n            \"y\": 167.43148034535486\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2093.7332965707155,\n            \"y\": 167.43148034535486\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-wxEKt\",\n          \"data\": {\n            \"id\": \"PromptTemplate-wxEKt\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：行业分析师\\n\\n# Background :\\n- 你是一名行业分析师。你的日常工作是根据【参考文本】的内容总结问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，\\n- 尽可能体现你的专业性，将答案尽可能详细阐述。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n- 只回复内容，在段落的开头和结尾，不要有“根据文本内容”和“希望对你有帮助”等过渡语句。\\n\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"question\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                  \"value\": \"f-string\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A prompt template for a language model.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"PromptTemplate\",\n                \"StringPromptTemplate\",\n                \"Runnable\",\n                \"RunnableSerializable\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\",\n                  \"question\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 291,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1023.4514262700376,\n            \"y\": 11.02496084544926\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1023.4514262700376,\n            \"y\": 11.02496084544926\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-ot33y\",\n          \"data\": {\n            \"id\": \"PromptTemplate-ot33y\",\n            \"node\": {\n              \"name\": \"\",\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：行业分析师\\n\\n# Background :\\n- 你是一名行业分析师。你的日常工作是根据【参考文本】的内容总结问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，\\n- 尽可能体现你的专业性，将答案尽可能详细阐述。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n- 只回复内容，在段落的开头和结尾，不要有“根据文本内容”和“希望对你有帮助”等过渡语句。\\n\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"context\",\n                    \"question\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                  \"value\": \"f-string\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"A prompt template for a language model.\",\n              \"base_classes\": [\n                \"Generic\",\n                \"PromptTemplate\",\n                \"StringPromptTemplate\",\n                \"Runnable\",\n                \"RunnableSerializable\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"context\",\n                  \"question\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"question\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 291,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 858.2666097750891,\n            \"y\": 1523.0705323867192\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 858.2666097750891,\n            \"y\": 1523.0705323867192\n          }\n        },\n        {\n          \"id\": \"VariableNode-d14a6\",\n          \"data\": {\n            \"id\": \"VariableNode-d14a6\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"VariableNode\",\n                \"variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variables\",\n                  \"show\": true,\n                  \"type\": \"variable\",\n                  \"value\": [\n                    \"公司名称\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"variable_value\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variable_value\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"用来设置变量\",\n              \"base_classes\": [\n                \"VariableNode\"\n              ],\n              \"display_name\": \"VariableNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"VariableNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 283,\n          \"position\": {\n            \"x\": 2566.3869873706526,\n            \"y\": 567.5902839403417\n          },\n          \"positionAbsolute\": {\n            \"x\": 2566.3869873706526,\n            \"y\": 567.5902839403417\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 87.48881258369431,\n        \"y\": 160.39352066140611,\n        \"zoom\": 0.243342122449621\n      }\n    },\n    \"order_num\": 7405517,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-10-15 18:43:05\",\n    \"parameters\": null,\n    \"name\": \"⭐️先检索 QA 后检索文档知识库问答\",\n    \"description\": \"优先检索 QA 知识库，有则直接返回答案，无则继续检索文档知识库，基于 RAG 生成回复\",\n    \"flow_id\": \"c7fa82f69d4e495e87e4e44a6ab44f30\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-10-15 18:40:16\",\n    \"id\": 194,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-PythonFunction-wBU1iPythonFunction|PythonFunction-wBU1i|function-RuleBasedRouter-apZIqfunction|rule_function|RuleBasedRouter-apZIq\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PythonFunction-wBU1i\",\n          \"target\": \"RuleBasedRouter-apZIq\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"PythonFunction|PythonFunction-wBU1i|function\",\n          \"targetHandle\": \"function|rule_function|RuleBasedRouter-apZIq\"\n        },\n        {\n          \"id\": \"reactflow__edge-PythonFunction-ChvDxPythonFunction|PythonFunction-ChvDx|function-TransformChain-jBTgXfunction|transform|TransformChain-jBTgX\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PythonFunction-ChvDx\",\n          \"target\": \"TransformChain-jBTgX\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"PythonFunction|PythonFunction-ChvDx|function\",\n          \"targetHandle\": \"function|transform|TransformChain-jBTgX\"\n        },\n        {\n          \"id\": \"reactflow__edge-RetrievalChain-ryEdkRetrievalChain|RetrievalChain-ryEdk|Chain|RetrievalChain|function-SequentialChain-ZcqZ1Chain|chains|SequentialChain-ZcqZ1\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RetrievalChain-ryEdk\",\n          \"target\": \"SequentialChain-ZcqZ1\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RetrievalChain|RetrievalChain-ryEdk|Chain|RetrievalChain|function\",\n          \"targetHandle\": \"Chain|chains|SequentialChain-ZcqZ1\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-8pyknMilvus|Milvus-8pykn|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalChain-ryEdkBaseRetriever|retriever|RetrievalChain-ryEdk\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-8pykn\",\n          \"target\": \"RetrievalChain-ryEdk\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Milvus|Milvus-8pykn|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|RetrievalChain-ryEdk\"\n        },\n        {\n          \"id\": \"reactflow__edge-ConversationBufferMemory-i1PuBConversationBufferMemory|ConversationBufferMemory-i1PuB|BaseMemory|ConversationBufferMemory|BaseChatMemory-ConversationalRetrievalChain-aS5HYBaseChatMemory|memory|ConversationalRetrievalChain-aS5HY\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ConversationBufferMemory-i1PuB\",\n          \"target\": \"ConversationalRetrievalChain-aS5HY\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"ConversationBufferMemory|ConversationBufferMemory-i1PuB|BaseMemory|ConversationBufferMemory|BaseChatMemory\",\n          \"targetHandle\": \"BaseChatMemory|memory|ConversationalRetrievalChain-aS5HY\"\n        },\n        {\n          \"id\": \"reactflow__edge-Milvus-u5L3KMilvus|Milvus-u5L3K|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-ConversationalRetrievalChain-aS5HYBaseRetriever|retriever|ConversationalRetrievalChain-aS5HY\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Milvus-u5L3K\",\n          \"target\": \"ConversationalRetrievalChain-aS5HY\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"Milvus|Milvus-u5L3K|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n          \"targetHandle\": \"BaseRetriever|retriever|ConversationalRetrievalChain-aS5HY\"\n        },\n        {\n          \"id\": \"reactflow__edge-ConversationalRetrievalChain-aS5HYConversationalRetrievalChain|ConversationalRetrievalChain-aS5HY|BaseConversationalRetrievalChain|ConversationalRetrievalChain|Chain|function-MultiRuleChain-s5i5CChain|default_chain|MultiRuleChain-s5i5C\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ConversationalRetrievalChain-aS5HY\",\n          \"target\": \"MultiRuleChain-s5i5C\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"ConversationalRetrievalChain|ConversationalRetrievalChain-aS5HY|BaseConversationalRetrievalChain|ConversationalRetrievalChain|Chain|function\",\n          \"targetHandle\": \"Chain|default_chain|MultiRuleChain-s5i5C\"\n        },\n        {\n          \"id\": \"reactflow__edge-RuleBasedRouter-apZIqRuleBasedRouter|RuleBasedRouter-apZIq|Chain|RuleBasedRouter|RouterChain|function-MultiRuleChain-s5i5CRouterChain|router_chain|MultiRuleChain-s5i5C\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"RuleBasedRouter-apZIq\",\n          \"target\": \"MultiRuleChain-s5i5C\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"RuleBasedRouter|RuleBasedRouter-apZIq|Chain|RuleBasedRouter|RouterChain|function\",\n          \"targetHandle\": \"RouterChain|router_chain|MultiRuleChain-s5i5C\"\n        },\n        {\n          \"id\": \"reactflow__edge-TransformChain-jBTgXTransformChain|TransformChain-jBTgX|TransformChain|Chain|function-MultiRuleChain-s5i5CChain|LLMChains|MultiRuleChain-s5i5C\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"TransformChain-jBTgX\",\n          \"target\": \"MultiRuleChain-s5i5C\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"TransformChain|TransformChain-jBTgX|TransformChain|Chain|function\",\n          \"targetHandle\": \"Chain|LLMChains|MultiRuleChain-s5i5C\"\n        },\n        {\n          \"id\": \"reactflow__edge-MultiRuleChain-s5i5CMultiRuleChain|MultiRuleChain-s5i5C|MultiRouteChain|Chain|MultiRuleChain|function-SequentialChain-ZcqZ1Chain|chains|SequentialChain-ZcqZ1\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"MultiRuleChain-s5i5C\",\n          \"target\": \"SequentialChain-ZcqZ1\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"MultiRuleChain|MultiRuleChain-s5i5C|MultiRouteChain|Chain|MultiRuleChain|function\",\n          \"targetHandle\": \"Chain|chains|SequentialChain-ZcqZ1\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-90fb5BishengLLM|BishengLLM-90fb5|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-ConversationalRetrievalChain-aS5HYBaseLanguageModel|llm|ConversationalRetrievalChain-aS5HY\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-90fb5\",\n          \"target\": \"ConversationalRetrievalChain-aS5HY\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"stroke-gray-900 \",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-90fb5|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ConversationalRetrievalChain-aS5HY\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"RuleBasedRouter-apZIq\",\n          \"data\": {\n            \"id\": \"RuleBasedRouter-apZIq\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RuleBasedRouter\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"rule_function\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"rule_function\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"result\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"\",\n              \"base_classes\": [\n                \"Chain\",\n                \"RuleBasedRouter\",\n                \"RouterChain\",\n                \"function\"\n              ],\n              \"display_name\": \"RuleBasedRouter\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"RuleBasedRouter\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 343,\n          \"position\": {\n            \"x\": 1080.3103197789733,\n            \"y\": 1337.4878712865757\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1080.3103197789733,\n            \"y\": 1337.4878712865757\n          }\n        },\n        {\n          \"id\": \"PythonFunction-wBU1i\",\n          \"data\": {\n            \"id\": \"PythonFunction-wBU1i\",\n            \"node\": {\n              \"template\": {\n                \"code\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"code\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"def rule_fuc(inputs: dict) -> dict:\\n    if not len(inputs['result']):\\n        return {'destination': None, 'next_inputs': {\\\"question\\\": inputs['query']}}\\n    else:\\n        return {'destination': 'norm', 'next_inputs': inputs}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"PythonFunction\"\n              },\n              \"description\": \"Python function to be executed.\",\n              \"base_classes\": [\n                \"function\"\n              ],\n              \"display_name\": \"PythonFunction\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"PythonFunction\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"position\": {\n            \"x\": 522.7838419708218,\n            \"y\": 1571.2197796319172\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 522.7838419708218,\n            \"y\": 1571.2197796319172\n          }\n        },\n        {\n          \"id\": \"PythonFunction-ChvDx\",\n          \"data\": {\n            \"id\": \"PythonFunction-ChvDx\",\n            \"node\": {\n              \"template\": {\n                \"code\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"code\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"def func(inputs: dict) -> dict:\\n    return {'answer': inputs['result'][0], 'source_documents':''} # 仅取第一个\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"PythonFunction\"\n              },\n              \"description\": \"Python function to be executed.\",\n              \"base_classes\": [\n                \"function\"\n              ],\n              \"display_name\": \"PythonFunction\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"PythonFunction\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"position\": {\n            \"x\": 549.6671717852333,\n            \"y\": 187.7892888367361\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 549.6671717852333,\n            \"y\": 187.7892888367361\n          }\n        },\n        {\n          \"id\": \"TransformChain-jBTgX\",\n          \"data\": {\n            \"id\": \"TransformChain-jBTgX\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"TransformChain\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"transform\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"transform\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"result\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"output_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"answer\",\n                    \"source_documents\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain transform chain output.\",\n              \"base_classes\": [\n                \"TransformChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"TransformChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"TransformChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 495,\n          \"position\": {\n            \"x\": 1069.678074540037,\n            \"y\": 153.32667222210148\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1069.678074540037,\n            \"y\": 153.32667222210148\n          }\n        },\n        {\n          \"id\": \"SequentialChain-ZcqZ1\",\n          \"data\": {\n            \"id\": \"SequentialChain-ZcqZ1\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"SequentialChain\",\n                \"chains\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chains\",\n                  \"show\": true,\n                  \"type\": \"Chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"return_all\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_all\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chain_order\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chain_order\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"[\\\"RetrievalChain-ryEdk\\\", \\\"MultiRuleChain-s5i5C\\\"]\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"query\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"output_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"answer\",\n                    \"source_documents\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain where the outputs of one chain feed directly into next.\",\n              \"base_classes\": [\n                \"SequentialChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"SequentialChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"SequentialChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 597,\n          \"position\": {\n            \"x\": 2554.0955901640964,\n            \"y\": 323.87489548587064\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2554.0955901640964,\n            \"y\": 323.87489548587064\n          }\n        },\n        {\n          \"id\": \"RetrievalChain-ryEdk\",\n          \"data\": {\n            \"id\": \"RetrievalChain-ryEdk\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"RetrievalChain\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"query\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"output_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"result\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain to use to combine the documents.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"RetrievalChain\",\n                \"function\"\n              ],\n              \"display_name\": \"RetrievalChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"RetrievalChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 281,\n          \"position\": {\n            \"x\": 2047.2642182152017,\n            \"y\": 258.5734077753632\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 2047.2642182152017,\n            \"y\": 258.5734077753632\n          }\n        },\n        {\n          \"id\": \"Milvus-u5L3K\",\n          \"data\": {\n            \"id\": \"Milvus-u5L3K\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"type\": \"str\",\n                  \"value\": \"similarity\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"BISHENG产品文档20240529版本\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 6642\n                },\n                \"connection_args\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 391,\n          \"position\": {\n            \"x\": 520.0097972326654,\n            \"y\": 1125.7035041561169\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 520.0097972326654,\n            \"y\": 1125.7035041561169\n          }\n        },\n        {\n          \"id\": \"Milvus-8pykn\",\n          \"data\": {\n            \"id\": \"Milvus-8pykn\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"Milvus\",\n                \"drop_old\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"drop_old\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"documents\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"documents\",\n                  \"show\": true,\n                  \"type\": \"Document\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Documents\"\n                },\n                \"embedding\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"embedding\",\n                  \"show\": false,\n                  \"type\": \"Embeddings\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Embedding\"\n                },\n                \"metadatas\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"metadatas\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"similarity_score_threshold\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"index_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"index_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_kwargs\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{\\\"k\\\": 1, \\\"score_threshold\\\": 0.8}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"search_params\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"search_params\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"collection_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"collection_name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"毕昇 QA 知识库\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"collection_id\": 6938\n                },\n                \"connection_args\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"connection_args\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"consistency_level\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"consistency_level\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Session\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n              \"base_classes\": [\n                \"Milvus\",\n                \"VectorStore\",\n                \"BaseRetriever\",\n                \"VectorStoreRetriever\"\n              ],\n              \"display_name\": \"Milvus\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"http://192.168.106.116:8030\"\n            },\n            \"type\": \"Milvus\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 555,\n          \"position\": {\n            \"x\": 1570.1640482171665,\n            \"y\": 20\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1570.1640482171665,\n            \"y\": 20\n          }\n        },\n        {\n          \"id\": \"ConversationalRetrievalChain-aS5HY\",\n          \"data\": {\n            \"id\": \"ConversationalRetrievalChain-aS5HY\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"ConversationalRetrievalChain\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseChatMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"Callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"retriever\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"retriever\",\n                  \"show\": true,\n                  \"type\": \"BaseRetriever\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chain_type\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"chain_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"stuff\",\n                  \"options\": [\n                    \"stuff\",\n                    \"map_reduce\",\n                    \"map_rerank\",\n                    \"refine\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"document_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"document_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"condense_question_llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"condense_question_llm\",\n                  \"show\": false,\n                  \"type\": \"BaseLanguageModel\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_source_documents\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_source_documents\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Return source documents\"\n                },\n                \"condense_question_prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"condense_question_prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"value\": {\n                    \"_type\": \"prompt\",\n                    \"template\": \"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\n                    \"output_parser\": null,\n                    \"input_variables\": [\n                      \"chat_history\",\n                      \"question\"\n                    ],\n                    \"template_format\": \"f-string\",\n                    \"partial_variables\": {},\n                    \"validate_template\": true\n                  },\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"combine_docs_chain_kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"combine_docs_chain_kwargs\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"prompt\"\n                }\n              },\n              \"description\": \"Convenience method to load chain from LLM and retriever.\",\n              \"base_classes\": [\n                \"BaseConversationalRetrievalChain\",\n                \"ConversationalRetrievalChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"ConversationalRetrievalChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/chat_vector_db\"\n            },\n            \"type\": \"ConversationalRetrievalChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 531,\n          \"position\": {\n            \"x\": 1076.7431790118962,\n            \"y\": 720.4023383381091\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1076.7431790118962,\n            \"y\": 720.4023383381091\n          }\n        },\n        {\n          \"id\": \"ConversationBufferMemory-i1PuB\",\n          \"data\": {\n            \"id\": \"ConversationBufferMemory-i1PuB\",\n            \"node\": {\n              \"template\": {\n                \"_type\": \"ConversationBufferMemory\",\n                \"ai_prefix\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"ai_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"AI\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_key\": {\n                  \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                  \"list\": false,\n                  \"name\": \"input_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"memory_key\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"chat_history\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"answer\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"chat_memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"chat_memory\",\n                  \"show\": true,\n                  \"type\": \"BaseChatMessageHistory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"human_prefix\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"human_prefix\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"Human\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_messages\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_messages\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Buffer for storing conversation memory.\",\n              \"base_classes\": [\n                \"BaseMemory\",\n                \"ConversationBufferMemory\",\n                \"BaseChatMemory\"\n              ],\n              \"display_name\": \"ConversationBufferMemory\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n            },\n            \"type\": \"ConversationBufferMemory\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 527,\n          \"position\": {\n            \"x\": 519.6689261937935,\n            \"y\": 539.0200298494985\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 519.6689261937935,\n            \"y\": 539.0200298494985\n          }\n        },\n        {\n          \"id\": \"MultiRuleChain-s5i5C\",\n          \"data\": {\n            \"id\": \"MultiRuleChain-s5i5C\",\n            \"node\": {\n              \"template\": {\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"MultiRuleChain\",\n                \"memory\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"LLMChains\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"LLMChains\",\n                  \"show\": true,\n                  \"type\": \"Chain\",\n                  \"value\": \"[]\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"router_chain\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"router_chain\",\n                  \"show\": true,\n                  \"type\": \"RouterChain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"default_chain\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"default_chain\",\n                  \"show\": true,\n                  \"type\": \"Chain\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"silent_errors\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"silent_errors\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"output_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"source_documents\",\n                    \"answer\"\n                  ],\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"destination_chains\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"destination_chains\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"destination_chain_name\": {\n                  \"info\": \"{chain_id: name}\",\n                  \"list\": true,\n                  \"name\": \"destination_chain_name\",\n                  \"show\": true,\n                  \"type\": \"NestedDict\",\n                  \"value\": \"{\\\"TransformChain-jBTgX\\\": \\\"norm\\\"}\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"\",\n              \"base_classes\": [\n                \"MultiRouteChain\",\n                \"Chain\",\n                \"MultiRuleChain\",\n                \"function\"\n              ],\n              \"display_name\": \"MultiRuleChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\"\n            },\n            \"type\": \"MultiRuleChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 549,\n          \"position\": {\n            \"x\": 1787.231955024217,\n            \"y\": 753.8514799486979\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1787.231955024217,\n            \"y\": 753.8514799486979\n          }\n        },\n        {\n          \"id\": \"BishengLLM-90fb5\",\n          \"data\": {\n            \"id\": \"BishengLLM-90fb5\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 4,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"ChatOpenAI\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Use the llm model that has been launched in model management\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 427,\n          \"position\": {\n            \"x\": 18.000000000000004,\n            \"y\": 309.62500515920107\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 18.000000000000004,\n            \"y\": 309.62500515920107\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 194.6566973414132,\n        \"y\": 31.460215170984327,\n        \"zoom\": 0.4474437869053313\n      }\n    },\n    \"order_num\": null,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-10-17 16:44:57\",\n    \"parameters\": null,\n    \"name\": \"⭐️ 查询数据库并画图\",\n    \"description\": \"大模型根据用户请求可查询SQL数据库并画图（若用户没有要求画图则不会画图），画图是通过调用代码运行环境绘制图表并最终保存为图片存储到Minio，然后以Markdown格式返回图片地址在前端展示。\\n\\n我们提供了模板技能，运行该应用对模型能力有一定要求，测试Qwen2.5-72B可以运行成功，但会有一些不稳定，可以多尝试换几种问法。\",\n    \"flow_id\": \"387757240d3e4f3a9b5cea781bdb4d48\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-10-17 16:44:57\",\n    \"id\": 196,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-BishengLLM-bc7dcBishengLLM|BishengLLM-bc7dc|BaseChatModel|BaseLanguageModel|BishengLLM|BaseLLM-SQLDatabaseChain-01203BaseLanguageModel|llm|SQLDatabaseChain-01203\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-bc7dc\",\n          \"target\": \"SQLDatabaseChain-01203\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-bc7dc|BaseChatModel|BaseLanguageModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|SQLDatabaseChain-01203\"\n        },\n        {\n          \"id\": \"reactflow__edge-SQLDatabase-14a1bSQLDatabase|SQLDatabase-14a1b|SQLDatabase|function-SQLDatabaseChain-01203SQLDatabase|db|SQLDatabaseChain-01203\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"SQLDatabase-14a1b\",\n          \"target\": \"SQLDatabaseChain-01203\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"SQLDatabase|SQLDatabase-14a1b|SQLDatabase|function\",\n          \"targetHandle\": \"SQLDatabase|db|SQLDatabaseChain-01203\"\n        },\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-06f11PromptTemplate|PromptTemplate-06f11|BasePromptTemplate|StringPromptTemplate|PromptTemplate-SQLDatabaseChain-01203BasePromptTemplate|prompt|SQLDatabaseChain-01203\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-06f11\",\n          \"target\": \"SQLDatabaseChain-01203\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-06f11|BasePromptTemplate|StringPromptTemplate|PromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|SQLDatabaseChain-01203\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-bc7dcBishengLLM|BishengLLM-bc7dc|BaseChatModel|BaseLanguageModel|BishengLLM|BaseLLM-ZeroShotAgent-50e40BaseLanguageModel|llm|ZeroShotAgent-50e40\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-bc7dc\",\n          \"target\": \"ZeroShotAgent-50e40\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-bc7dc|BaseChatModel|BaseLanguageModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|ZeroShotAgent-50e40\"\n        },\n        {\n          \"id\": \"reactflow__edge-SQLDatabaseChain-01203SQLDatabaseChain|SQLDatabaseChain-01203|SQLDatabaseChain|Chain|function-Tool-f4cb0function|func|Tool-f4cb0\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"SQLDatabaseChain-01203\",\n          \"target\": \"Tool-f4cb0\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"SQLDatabaseChain|SQLDatabaseChain-01203|SQLDatabaseChain|Chain|function\",\n          \"targetHandle\": \"function|func|Tool-f4cb0\"\n        },\n        {\n          \"id\": \"reactflow__edge-Tool-f4cb0Tool|Tool-f4cb0|Tool|BaseTool-ZeroShotAgent-50e40BaseTool|tools|ZeroShotAgent-50e40\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Tool-f4cb0\",\n          \"target\": \"ZeroShotAgent-50e40\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"Tool|Tool-f4cb0|Tool|BaseTool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-50e40\"\n        },\n        {\n          \"id\": \"reactflow__edge-Data-2e84bData|Data-2e84b|BaseTool|Tool-ZeroShotAgent-50e40BaseTool|tools|ZeroShotAgent-50e40\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"Data-2e84b\",\n          \"target\": \"ZeroShotAgent-50e40\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"Data|Data-2e84b|BaseTool|Tool\",\n          \"targetHandle\": \"BaseTool|tools|ZeroShotAgent-50e40\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"SQLDatabaseChain-01203\",\n          \"data\": {\n            \"id\": \"SQLDatabaseChain-01203\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"db\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"db\",\n                  \"show\": true,\n                  \"type\": \"SQLDatabase\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Db\",\n                  \"model_config\": {}\n                },\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"SQLDatabaseChain\",\n                \"prompt\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Prompt\",\n                  \"model_config\": {}\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Create a SQLDatabaseChain from an LLM and a database connection.\",\n              \"base_classes\": [\n                \"SQLDatabaseChain\",\n                \"Chain\",\n                \"function\"\n              ],\n              \"display_name\": \"SQLDatabaseChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"SQLDatabaseChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 676.0138039780265,\n            \"y\": 556.0498254993254\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 676.0138039780265,\n            \"y\": 556.0498254993254\n          }\n        },\n        {\n          \"id\": \"BishengLLM-bc7dc\",\n          \"data\": {\n            \"id\": \"BishengLLM-bc7dc\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 27,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"ChatOpenAI\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Use the llm model that has been launched in model management\",\n              \"base_classes\": [\n                \"BaseChatModel\",\n                \"BaseLanguageModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 427,\n          \"position\": {\n            \"x\": 18,\n            \"y\": 20\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 18,\n            \"y\": 20\n          }\n        },\n        {\n          \"id\": \"SQLDatabase-14a1b\",\n          \"data\": {\n            \"id\": \"SQLDatabase-14a1b\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"SQLDatabase\",\n                \"engine_args\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"engine_args\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Engine Args\",\n                  \"model_config\": {}\n                },\n                \"database_uri\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"database_uri\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"mysql+pymysql://root:E1SkG0PaDMEPTAxY@192.168.106.116:3306/company_stock\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Database Uri\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Construct a SQLAlchemy engine from URI.\",\n              \"base_classes\": [\n                \"SQLDatabase\",\n                \"function\"\n              ],\n              \"display_name\": \"SQLDatabase\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"SQLDatabase\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"position\": {\n            \"x\": 18.61695520886218,\n            \"y\": 577.4905684719494\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 18.61695520886218,\n            \"y\": 577.4905684719494\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-06f11\",\n          \"data\": {\n            \"id\": \"PromptTemplate-06f11\",\n            \"node\": {\n              \"beta\": false,\n              \"icon\": null,\n              \"name\": \"\",\n              \"error\": null,\n              \"template\": {\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"PromptTemplate\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"input\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"你是一个与 SQL 数据库交互的智能代理。\\n\\n## 规则\\n1. 给定一个输入问题，输出一个语法正确的 mysql 查询来运行。\\n2. 除非用户指定了希望获得的示例的具体数量，否则始终将查询限制为最多5个结果。\\n3. 切勿查询特定表中的所有列，只查询问题中的相关列。\\n4. 一定要严格根据查询结果来回答，如果查询结果为空，表示未找到相关记录。\\n5. 请用中文回答用户的问题。\\n6. 当前系统时间是2024年x月xx日。\\n7. 如果SQL查询为空，不要输出错误，则回答为空。\\n8. 如果出现SQL相关报错，请调整后重试。\\n9. 文件链接前不需要添加额外的https或者http前缀\\n\\n## 供参考的信息\\n`stock_price` 为股价表。字段及含义如下：\\nid: 主键，自动递增。\\nsotck_no: 股票代码。\\nname: 股票名称。\\ncomment: 千股千评，可能是指对该股票的评论或分析。\\nnew_price: 最新价。\\nchange_amount: 涨跌额。\\namplitude: 涨跌幅。\\nprev_close_price: 昨日收盘价。\\nopen_price: 今日开盘价。\\nhighest: 最高价。\\nlowest: 最低价。\\ntrade_volume: 成交量（万股）。\\ntrade_money: 成交额（万元）。\\n\\n#####\\n用户问题：\\n{input}\\n\\n问题对应sql（注意开头不要包含”sql“标识符，直接输入sql语句即可）：\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Template\",\n                  \"model_config\": {}\n                },\n                \"input_types\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_types\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Types\",\n                  \"model_config\": {}\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": true,\n                  \"type\": \"BaseOutputParser\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Output Parser\",\n                  \"model_config\": {}\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"input\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Variables\",\n                  \"model_config\": {}\n                },\n                \"template_format\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"Literal['f-string', 'mustache', 'jinja2']\",\n                  \"value\": \"f-string\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Template Format\",\n                  \"model_config\": {}\n                },\n                \"partial_variables\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Partial Variables\",\n                  \"model_config\": {}\n                },\n                \"validate_template\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Validate Template\",\n                  \"model_config\": {}\n                }\n              },\n              \"full_path\": null,\n              \"description\": \"Prompt template for a language model.\",\n              \"base_classes\": [\n                \"BasePromptTemplate\",\n                \"StringPromptTemplate\",\n                \"PromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"input\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 373,\n          \"position\": {\n            \"x\": 25.822320988711738,\n            \"y\": 874.460009094774\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 25.822320988711738,\n            \"y\": 874.460009094774\n          }\n        },\n        {\n          \"id\": \"ZeroShotAgent-50e40\",\n          \"data\": {\n            \"id\": \"ZeroShotAgent-50e40\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"ZeroShotAgent\",\n                \"tools\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tools\",\n                  \"show\": true,\n                  \"type\": \"BaseTool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tools\",\n                  \"model_config\": {}\n                },\n                \"prefix\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prefix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Answer the following questions as best you can. \\n一般来讲需要先根据用户的问题使用”数据库查询“tool来查询数据，然后使用”Python REPL Tool“tool来绘制图表，”Python REPL Tool“tool绘制完成的图片会存储到对象存储并返回存储的链接，最终请用Markdown的语法来输出链接\\nYou have access to the following tools:\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Prefix\",\n                  \"model_config\": {}\n                },\n                \"suffix\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"suffix\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Begin!\\n\\nQuestion: {input}\\nThought:{agent_scratchpad}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Suffix\",\n                  \"model_config\": {}\n                },\n                \"input_node\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\",\n                  \"model_config\": {}\n                },\n                \"output_parser\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"AgentOutputParser\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Output Parser\",\n                  \"model_config\": {}\n                },\n                \"input_variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Input Variables\",\n                  \"model_config\": {}\n                },\n                \"callback_manager\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"callback_manager\",\n                  \"show\": false,\n                  \"type\": \"BaseCallbackManager\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callback Manager\",\n                  \"model_config\": {}\n                },\n                \"format_instructions\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"format_instructions\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"Use the following format:\\n\\nQuestion: the input question you must answer\\nThought: you should always think about what to do\\nAction: the action to take, should be one of [{tool_names}]\\nAction Input: the input to the action\\nObservation: the result of the action\\n... (this Thought/Action/Action Input/Observation can repeat N times)\\nThought: I now know the final answer\\nFinal Answer: the final answer to the original input question\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Format Instructions\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Construct an agent from an LLM and tools.\",\n              \"base_classes\": [\n                \"BaseSingleActionAgent\",\n                \"Agent\",\n                \"ZeroShotAgent\",\n                \"function\"\n              ],\n              \"display_name\": \"ZeroShotAgent\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ZeroShotAgent\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 609,\n          \"position\": {\n            \"x\": 1881.5603475961273,\n            \"y\": 749.2188069126355\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1881.5603475961273,\n            \"y\": 749.2188069126355\n          }\n        },\n        {\n          \"id\": \"Tool-f4cb0\",\n          \"data\": {\n            \"id\": \"Tool-f4cb0\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"func\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"func\",\n                  \"show\": true,\n                  \"type\": \"function\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Func\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"数据库查询\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"Tool\",\n                \"args_schema\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"args_schema\",\n                  \"show\": true,\n                  \"type\": \"NestedDict\",\n                  \"value\": \"{\\\"arg1\\\": {\\\"type\\\": \\\"string\\\"}}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Args Schema\",\n                  \"model_config\": {}\n                },\n                \"description\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"description\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"用户问题先从数据库中查询结果\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Description\",\n                  \"model_config\": {}\n                },\n                \"return_direct\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_direct\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Return Direct\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"Converts a chain, agent or function into a tool.\",\n              \"base_classes\": [\n                \"Tool\",\n                \"BaseTool\"\n              ],\n              \"display_name\": \"Tool\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"Tool\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 529,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 1207.7539633864767,\n            \"y\": 636.1580608046685\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1207.7539633864767,\n            \"y\": 636.1580608046685\n          }\n        },\n        {\n          \"id\": \"Data-2e84b\",\n          \"data\": {\n            \"id\": \"Data-2e84b\",\n            \"node\": {\n              \"beta\": true,\n              \"template\": {\n                \"code\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"code\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"import importlib\\r\\nimport time\\r\\nimport re\\r\\nfrom typing import Any\\r\\n\\r\\nfrom langchain_experimental.utilities.python import PythonREPL\\r\\nfrom langchain.callbacks.manager import (\\r\\n    AsyncCallbackManagerForToolRun,\\r\\n    CallbackManagerForToolRun,\\r\\n)\\r\\nfrom bisheng import CustomComponent\\r\\nfrom bisheng.utils.minio_client import MinioClient\\r\\nfrom langchain_core.tools import Tool\\r\\n\\r\\n\\r\\nclass PythonREPLToolComponent(CustomComponent):\\r\\n    display_name = \\\"Python REPL Tool\\\"\\r\\n    description = \\\"A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with `print(...)`.\\\"\\r\\n    name = \\\"PythonREPLTool\\\"\\r\\n\\r\\n    def build_config(self):\\r\\n        return {\\r\\n            \\\"name\\\": {\\\"display_name\\\": \\\"Name\\\", \\\"info\\\": \\\"The name of the tool.\\\"},\\r\\n            \\\"description\\\": {\\\"display_name\\\": \\\"Description\\\", \\\"info\\\": \\\"A description of the tool.\\\"},\\r\\n            \\\"global_imports\\\": {\\r\\n                \\\"display_name\\\": \\\"Global Imports\\\",\\r\\n                \\\"info\\\": \\\"A list of modules to import globally, e.g. ['math', 'numpy'].\\\",\\r\\n            },\\r\\n        }\\r\\n\\r\\n    def get_globals(self, globals: list[str]) -> dict:\\r\\n        \\\"\\\"\\\"\\r\\n        Retrieves the global variables from the specified modules.\\r\\n\\r\\n        Args:\\r\\n            globals (list[str]): A list of module names.\\r\\n\\r\\n        Returns:\\r\\n            dict: A dictionary containing the global variables from the specified modules.\\r\\n        \\\"\\\"\\\"\\r\\n        global_dict = {}\\r\\n        for module in globals:\\r\\n            try:\\r\\n                imported_module = importlib.import_module(module)\\r\\n                global_dict[imported_module.__name__] = imported_module\\r\\n            except ImportError:\\r\\n                raise ImportError(f\\\"Could not import module {module}\\\")\\r\\n        return global_dict\\r\\n\\r\\n    def build(\\r\\n        self,\\r\\n        name: str = \\\"python_repl\\\",\\r\\n        description: str = \\\"A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with `print(...)`.\\\",\\r\\n        global_imports: list[str] = [\\\"math\\\"],\\r\\n    ) -> Tool:\\r\\n        \\\"\\\"\\\"\\r\\n        Builds a Python REPL tool.\\r\\n\\r\\n        Args:\\r\\n            name (str, optional): The name of the tool. Defaults to \\\"python_repl\\\".\\r\\n            description (str, optional): The description of the tool. Defaults to \\\"A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with `print(...)`. \\\".\\r\\n            global_imports (list[str], optional): A list of global imports to be available in the Python REPL. Defaults to [\\\"math\\\"].\\r\\n\\r\\n        Returns:\\r\\n            Tool: The built Python REPL tool.\\r\\n        \\\"\\\"\\\"\\r\\n        _globals = self.get_globals(global_imports)\\r\\n        python_repl = PythonREPL(_globals=_globals)\\r\\n        \\r\\n        class PersonalTool(Tool):\\r\\n            def _run(\\r\\n                self,\\r\\n                query: str,\\r\\n                run_manager: Optional[CallbackManagerForToolRun] = None,\\r\\n            ) -> Any:\\r\\n                \\\"\\\"\\\"Use the tool.\\\"\\\"\\\"\\r\\n                print(\\\"-----start---\\\")\\r\\n                \\r\\n                minio_client = MinioClient()\\r\\n                query = re.compile('plt.savefig(.*)').sub(\\\"\\\", query)\\r\\n                \\r\\n                # 把图片存到本地\\r\\n                file_path = f\\\"/tmp/{int(time.time())}.png\\\"\\r\\n                query = query.replace(\\\"plt.show()\\\", f\\\"plt.savefig('{file_path}')\\\")\\r\\n                query = 'import matplotlib\\\\nmatplotlib.rc(\\\"font\\\", family=\\\"WenQuanYi Zen Hei\\\")\\\\n' + query\\r\\n                print(f\\\"-----exec code: {query}\\\")\\r\\n                \\r\\n                result = super(PersonalTool, self)._run(query, run_manager=run_manager)\\r\\n                print(\\\"-----code exec over-----\\\")\\r\\n                # 上传文件到minio\\r\\n                \\r\\n                minio_client.upload_minio(file_path, file_path)\\r\\n                file_url = minio_client.get_share_link(file_path)\\r\\n                file_url = minio_client.clear_minio_share_host(file_url)\\r\\n                print(f\\\"-----over---\\\", file_url)\\r\\n                return file_url\\r\\n        \\r\\n            async def _arun(\\r\\n                self,\\r\\n                query: str,\\r\\n                run_manager: Optional[AsyncCallbackManagerForToolRun] = None,\\r\\n            ) -> Any:\\r\\n                \\\"\\\"\\\"Use the tool asynchronously.\\\"\\\"\\\"\\r\\n                print(\\\"-----astart---\\\")\\r\\n                result = await super(PersonalTool, self)._arun(query, run_manager=run_manager)\\r\\n                print(\\\"---aover---\\\")\\r\\n                return result\\r\\n        \\r\\n        tool = PersonalTool(\\r\\n            name=name,\\r\\n            description=description,\\r\\n            func=python_repl.run,\\r\\n        )\\r\\n        return tool\\r\\n\\r\\n\",\n                  \"dynamic\": true,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Code\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"The name of the tool.\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"python_repl\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"CustomComponent\",\n                \"description\": {\n                  \"info\": \"A description of the tool.\",\n                  \"list\": false,\n                  \"name\": \"description\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with `print(...)`.\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Description\",\n                  \"model_config\": {}\n                },\n                \"global_imports\": {\n                  \"info\": \"A list of modules to import globally, e.g. ['math', 'numpy'].\",\n                  \"list\": true,\n                  \"name\": \"global_imports\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"math\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Global Imports\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with `print(...)`.\",\n              \"base_classes\": [\n                \"BaseTool\",\n                \"Tool\"\n              ],\n              \"display_name\": \"Python REPL Tool\",\n              \"output_types\": [\n                \"Tool\"\n              ],\n              \"custom_fields\": {\n                \"name\": null,\n                \"description\": null,\n                \"global_imports\": null\n              },\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"Data\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 561,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 778.9175511051337,\n            \"y\": 1149.9902599062198\n          },\n          \"selected\": true,\n          \"positionAbsolute\": {\n            \"x\": 778.9175511051337,\n            \"y\": 1149.9902599062198\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 339.1544304743195,\n        \"y\": 29.21939842035414,\n        \"zoom\": 0.45266644261865624\n      }\n    },\n    \"order_num\": 7471052,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2024-10-28 15:51:35\",\n    \"parameters\": null,\n    \"name\": \"⭐️ 指定Keyvalue信息提取\",\n    \"description\": \"上传文件，指定需要提取的Keyvalue，分号分隔，点击【开始】按钮\",\n    \"flow_id\": \"caae4fa4c0b6405ba3ebfda20895849e\",\n    \"api_parameters\": null,\n    \"flow_type\": 1,\n    \"create_time\": \"2024-10-28 15:51:35\",\n    \"id\": 197,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"reactflow__edge-PromptTemplate-5UHOIPromptTemplate|PromptTemplate-5UHOI|StringPromptTemplate|PromptTemplate|BasePromptTemplate-LLMChain-aSC8HBasePromptTemplate|prompt|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"PromptTemplate-5UHOI\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": false,\n          \"selected\": false,\n          \"className\": \"\",\n          \"sourceHandle\": \"PromptTemplate|PromptTemplate-5UHOI|StringPromptTemplate|PromptTemplate|BasePromptTemplate\",\n          \"targetHandle\": \"BasePromptTemplate|prompt|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-BishengLLM-2763fBishengLLM|BishengLLM-2763f|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM-LLMChain-aSC8HBaseLanguageModel|llm|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"BishengLLM-2763f\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"BishengLLM|BishengLLM-2763f|BaseLanguageModel|BaseChatModel|BishengLLM|BaseLLM\",\n          \"targetHandle\": \"BaseLanguageModel|llm|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputNode-3ccbfInputNode|InputNode-3ccbf|input-LLMChain-aSC8Hinput|input_node|LLMChain-aSC8H\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputNode-3ccbf\",\n          \"target\": \"LLMChain-aSC8H\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputNode|InputNode-3ccbf|input\",\n          \"targetHandle\": \"input|input_node|LLMChain-aSC8H\"\n        },\n        {\n          \"id\": \"reactflow__edge-InputFileNode-fc806InputFileNode|InputFileNode-fc806|fileNode-ElemUnstructuredLoaderV0-293c3fileNode|file_path|ElemUnstructuredLoaderV0-293c3\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"InputFileNode-fc806\",\n          \"target\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"InputFileNode|InputFileNode-fc806|fileNode\",\n          \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-293c3\"\n        },\n        {\n          \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-293c3ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-293c3|Document-PromptTemplate-5UHOIDocument;BaseOutputParser;VariableNode|context|PromptTemplate-5UHOI\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"target\": \"PromptTemplate-5UHOI\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-293c3|Document\",\n          \"targetHandle\": \"Document;BaseOutputParser;VariableNode|context|PromptTemplate-5UHOI\"\n        },\n        {\n          \"id\": \"reactflow__edge-VariableNode-e314cVariableNode|VariableNode-e314c|VariableNode-PromptTemplate-5UHOIDocument;BaseOutputParser;VariableNode|keyvalue|PromptTemplate-5UHOI\",\n          \"style\": {\n            \"stroke\": \"#555\"\n          },\n          \"source\": \"VariableNode-e314c\",\n          \"target\": \"PromptTemplate-5UHOI\",\n          \"animated\": true,\n          \"className\": \"stroke-foreground  stroke-connection\",\n          \"sourceHandle\": \"VariableNode|VariableNode-e314c|VariableNode\",\n          \"targetHandle\": \"Document;BaseOutputParser;VariableNode|keyvalue|PromptTemplate-5UHOI\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"LLMChain-aSC8H\",\n          \"data\": {\n            \"id\": \"LLMChain-aSC8H\",\n            \"node\": {\n              \"template\": {\n                \"llm\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": true,\n                  \"type\": \"BaseLanguageModel\",\n                  \"l2_name\": \"llm\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"tags\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"l2_name\": \"tags\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"_type\": \"LLMChain\",\n                \"memory\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"memory\",\n                  \"show\": true,\n                  \"type\": \"BaseMemory\",\n                  \"l2_name\": \"memory\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"prompt\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"prompt\",\n                  \"show\": true,\n                  \"type\": \"BasePromptTemplate\",\n                  \"l2_name\": \"prompt\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"verbose\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": false,\n                  \"l2_name\": \"verbose\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"metadata\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"metadata\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"callbacks\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                  \"l2_name\": \"callbacks\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_node\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input_node\",\n                  \"show\": true,\n                  \"type\": \"input\",\n                  \"l2_name\": \"input_node\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Preset Question\"\n                },\n                \"llm_kwargs\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_kwargs\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"llm_kwargs\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_key\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_key\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"text\",\n                  \"l2_name\": \"output_key\",\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseLLMOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"return_final_only\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"return_final_only\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"return_final_only\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"description\": \"Chain to run queries against LLMs.\",\n              \"base_classes\": [\n                \"Chain\",\n                \"LLMChain\",\n                \"function\"\n              ],\n              \"display_name\": \"LLMChain\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"\n            },\n            \"type\": \"LLMChain\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 317,\n          \"position\": {\n            \"x\": 1313.6980454632887,\n            \"y\": 900.921715712506\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 1313.6980454632887,\n            \"y\": 900.921715712506\n          }\n        },\n        {\n          \"id\": \"PromptTemplate-5UHOI\",\n          \"data\": {\n            \"id\": \"PromptTemplate-5UHOI\",\n            \"node\": {\n              \"beta\": false,\n              \"icon\": null,\n              \"name\": \"\",\n              \"error\": null,\n              \"template\": {\n                \"_type\": \"PromptTemplate\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"input\",\n                  \"model_config\": {}\n                },\n                \"context\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"context\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"context\",\n                  \"model_config\": {}\n                },\n                \"keyvalue\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"keyvalue\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"input_types\": [\n                    \"Document\",\n                    \"BaseOutputParser\",\n                    \"VariableNode\"\n                  ],\n                  \"placeholder\": \"\",\n                  \"display_name\": \"keyvalue\",\n                  \"model_config\": {}\n                },\n                \"template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template\",\n                  \"show\": true,\n                  \"type\": \"prompt\",\n                  \"value\": \"提取以下文本内容中的keyvalue信息，需要抽取的key包括：\\n\\n{keyvalue}\\n\\nThe output should be a Markdown code snippet formatted in the following schema, including the leading and trailing \\\"```json\\\" and \\\"```\\\":\\n\\n```json\\n\\\"Key1\\\": Value\\n\\\"Key2\\\": Value\\n```\\n\\n文本内容\\n{context}\\n\\n{input}\",\n                  \"l2_name\": \"template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": true,\n                  \"placeholder\": \"\"\n                },\n                \"output_parser\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"output_parser\",\n                  \"show\": false,\n                  \"type\": \"BaseOutputParser\",\n                  \"l2_name\": \"output_parser\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"input_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input_variables\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"keyvalue\",\n                    \"context\",\n                    \"input\"\n                  ],\n                  \"l2_name\": \"input_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"template_format\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"template_format\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"f-string\",\n                  \"l2_name\": \"template_format\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"partial_variables\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"partial_variables\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"l2_name\": \"partial_variables\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                },\n                \"validate_template\": {\n                  \"l2\": false,\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"validate_template\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"l2_name\": \"validate_template\",\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"multiline\": false,\n                  \"placeholder\": \"\"\n                }\n              },\n              \"full_path\": null,\n              \"description\": \"Schema to represent a prompt for an LLM.\",\n              \"base_classes\": [\n                \"StringPromptTemplate\",\n                \"PromptTemplate\",\n                \"BasePromptTemplate\"\n              ],\n              \"display_name\": \"PromptTemplate\",\n              \"output_types\": [],\n              \"custom_fields\": {\n                \"\": [\n                  \"keyvalue\",\n                  \"context\",\n                  \"input\"\n                ],\n                \"template\": [\n                  \"context\",\n                  \"input\"\n                ]\n              },\n              \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"PromptTemplate\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 501,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": 809.51004530817,\n            \"y\": 1237.7696518068285\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": 809.51004530817,\n            \"y\": 1237.7696518068285\n          }\n        },\n        {\n          \"id\": \"BishengLLM-2763f\",\n          \"data\": {\n            \"id\": \"BishengLLM-2763f\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"llm\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm\",\n                  \"show\": false,\n                  \"type\": \"BaseChatModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm\",\n                  \"model_config\": {}\n                },\n                \"name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                },\n                \"tags\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"tags\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Tags\",\n                  \"model_config\": {}\n                },\n                \"_type\": \"BishengLLM\",\n                \"cache\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"cache\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Cache\",\n                  \"model_config\": {}\n                },\n                \"top_p\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"top_p\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 1,\n                  \"dynamic\": false,\n                  \"advanced\": true,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Top P\",\n                  \"model_config\": {}\n                },\n                \"verbose\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"verbose\",\n                  \"show\": false,\n                  \"type\": \"bool\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Verbose\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"model_id\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_id\",\n                  \"show\": true,\n                  \"type\": \"bisheng_model\",\n                  \"value\": 31,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"callbacks\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"callbacks\",\n                  \"show\": false,\n                  \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Callbacks\",\n                  \"model_config\": {}\n                },\n                \"streaming\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"streaming\",\n                  \"show\": true,\n                  \"type\": \"bool\",\n                  \"value\": true,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Streaming\",\n                  \"model_config\": {}\n                },\n                \"model_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_info\",\n                  \"show\": false,\n                  \"type\": \"LLMModel\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Info\",\n                  \"model_config\": {}\n                },\n                \"model_name\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"model_name\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Model Name\",\n                  \"model_config\": {}\n                },\n                \"server_info\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"server_info\",\n                  \"show\": false,\n                  \"type\": \"LLMServer\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Server Info\",\n                  \"model_config\": {}\n                },\n                \"temperature\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"temperature\",\n                  \"show\": true,\n                  \"type\": \"float\",\n                  \"value\": 0.3,\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Temperature\",\n                  \"model_config\": {}\n                },\n                \"llm_node_type\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"llm_node_type\",\n                  \"show\": false,\n                  \"type\": \"code\",\n                  \"value\": {\n                    \"qwen\": \"ChatOpenAI\",\n                    \"vllm\": \"ChatOpenAI\",\n                    \"spark\": \"ChatOpenAI\",\n                    \"zhipu\": \"ChatOpenAI\",\n                    \"ollama\": \"ChatOllama\",\n                    \"openai\": \"ChatOpenAI\",\n                    \"minimax\": \"MiniMaxChat\",\n                    \"qianfan\": \"ChatWenxin\",\n                    \"deepseek\": \"ChatOpenAI\",\n                    \"llamacpp\": \"ChatOpenAI\",\n                    \"anthropic\": \"ChatAnthropic\",\n                    \"bisheng_rt\": \"HostChatGLM\",\n                    \"xinference\": \"ChatOpenAI\",\n                    \"azure_openai\": \"AzureChatOpenAI\"\n                  },\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Llm Node Type\",\n                  \"model_config\": {}\n                },\n                \"custom_get_token_ids\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"custom_get_token_ids\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Custom Get Token Ids\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"依赖bisheng后端服务的llm组件\",\n              \"base_classes\": [\n                \"BaseLanguageModel\",\n                \"BaseChatModel\",\n                \"BishengLLM\",\n                \"BaseLLM\"\n              ],\n              \"display_name\": \"BishengLLM\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"BishengLLM\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 408,\n          \"position\": {\n            \"x\": -68.63553056857684,\n            \"y\": 696.600000304993\n          },\n          \"positionAbsolute\": {\n            \"x\": -68.63553056857684,\n            \"y\": 696.600000304993\n          }\n        },\n        {\n          \"id\": \"ElemUnstructuredLoaderV0-293c3\",\n          \"data\": {\n            \"id\": \"ElemUnstructuredLoaderV0-293c3\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"ElemUnstructuredLoaderV0\",\n                \"kwargs\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"kwargs\",\n                  \"show\": true,\n                  \"type\": \"dict\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"kwargs\",\n                  \"model_config\": {}\n                },\n                \"metadata\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"metadata\",\n                  \"show\": true,\n                  \"type\": \"code\",\n                  \"value\": \"{}\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Metadata\",\n                  \"model_config\": {}\n                },\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"fileNode\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \".xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"unstructured_api_url\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"unstructured_api_url\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": true,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"unstructured_api_url\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"The appropriate parser is automatically selected based on the file format and OCR is supported\",\n              \"base_classes\": [\n                \"Document\"\n              ],\n              \"display_name\": \"ElemUnstructuredLoaderV0\",\n              \"output_types\": [\n                \"Document\"\n              ],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"ElemUnstructuredLoaderV0\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 477,\n          \"position\": {\n            \"x\": 237.30334166517488,\n            \"y\": 1166.7647849898744\n          },\n          \"positionAbsolute\": {\n            \"x\": 237.30334166517488,\n            \"y\": 1166.7647849898744\n          }\n        },\n        {\n          \"id\": \"InputNode-3ccbf\",\n          \"data\": {\n            \"id\": \"InputNode-3ccbf\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"input\",\n                \"input\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"input\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": [\n                    \"开始\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": true,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"输入内容\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"input\"\n              ],\n              \"display_name\": \"InputNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 255,\n          \"position\": {\n            \"x\": 809.0064819287146,\n            \"y\": 663.3484087022575\n          },\n          \"positionAbsolute\": {\n            \"x\": 809.0064819287146,\n            \"y\": 663.3484087022575\n          }\n        },\n        {\n          \"id\": \"InputFileNode-fc806\",\n          \"data\": {\n            \"id\": \"InputFileNode-fc806\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"InputFileNode\",\n                \"file_path\": {\n                  \"info\": \"\",\n                  \"list\": false,\n                  \"name\": \"file_path\",\n                  \"show\": true,\n                  \"type\": \"file\",\n                  \"value\": \"\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"suffixes\": [\n                    \".html\",\n                    \".md\",\n                    \".txt\",\n                    \".bmp\",\n                    \".jpg\",\n                    \".png\",\n                    \".jpeg\",\n                    \".doc\",\n                    \".docx\",\n                    \".pdf\",\n                    \".ppt\",\n                    \".pptx\",\n                    \"..xls\",\n                    \".xlsx\",\n                    \".tsv\",\n                    \".csv\",\n                    \".tiff\"\n                  ],\n                  \"fileTypes\": [\n                    \"html\",\n                    \"md\",\n                    \"txt\",\n                    \"bmp\",\n                    \"jpg\",\n                    \"png\",\n                    \"jpeg\",\n                    \"doc\",\n                    \"docx\",\n                    \"pdf\",\n                    \"ppt\",\n                    \"pptx\",\n                    \".xls\",\n                    \"xlsx\",\n                    \"tsv\",\n                    \"csv\",\n                    \"tiff\"\n                  ],\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"File Path\",\n                  \"model_config\": {}\n                },\n                \"file_type\": {\n                  \"info\": \"Tips for which file should upload\",\n                  \"list\": false,\n                  \"name\": \"file_type\",\n                  \"show\": true,\n                  \"type\": \"str\",\n                  \"value\": \"请上传文件\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"提示上传文件类型\",\n                  \"display_name\": \"Name\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"输入节点，用来自动对接输入\",\n              \"base_classes\": [\n                \"fileNode\"\n              ],\n              \"display_name\": \"InputFileNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"InputFileNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 337,\n          \"dragging\": false,\n          \"position\": {\n            \"x\": -283.58174168605024,\n            \"y\": 1208.0544562311302\n          },\n          \"selected\": false,\n          \"positionAbsolute\": {\n            \"x\": -283.58174168605024,\n            \"y\": 1208.0544562311302\n          }\n        },\n        {\n          \"id\": \"VariableNode-e314c\",\n          \"data\": {\n            \"id\": \"VariableNode-e314c\",\n            \"node\": {\n              \"beta\": false,\n              \"template\": {\n                \"_type\": \"VariableNode\",\n                \"variables\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variables\",\n                  \"show\": true,\n                  \"type\": \"variable\",\n                  \"value\": [\n                    \"要素\"\n                  ],\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": true,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Variables\",\n                  \"model_config\": {}\n                },\n                \"variable_value\": {\n                  \"info\": \"\",\n                  \"list\": true,\n                  \"name\": \"variable_value\",\n                  \"show\": false,\n                  \"type\": \"str\",\n                  \"dynamic\": false,\n                  \"advanced\": false,\n                  \"password\": false,\n                  \"required\": false,\n                  \"file_path\": \"\",\n                  \"multiline\": false,\n                  \"title_case\": true,\n                  \"placeholder\": \"\",\n                  \"display_name\": \"Variable Value\",\n                  \"model_config\": {}\n                }\n              },\n              \"description\": \"用来设置变量\",\n              \"base_classes\": [\n                \"VariableNode\"\n              ],\n              \"display_name\": \"VariableNode\",\n              \"output_types\": [],\n              \"custom_fields\": {},\n              \"documentation\": \"\",\n              \"field_formatters\": {}\n            },\n            \"type\": \"VariableNode\",\n            \"value\": null\n          },\n          \"type\": \"genericNode\",\n          \"width\": 384,\n          \"height\": 283,\n          \"position\": {\n            \"x\": 191.2097358237865,\n            \"y\": 1669.692405161968\n          },\n          \"positionAbsolute\": {\n            \"x\": 191.2097358237865,\n            \"y\": 1669.692405161968\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": 186.80586866476656,\n        \"y\": -288.498161293062,\n        \"zoom\": 0.4797259326255045\n      }\n    },\n    \"order_num\": 7536587,\n    \"guide_word\": null\n  },\n  {\n    \"update_time\": \"2026-02-05 19:54:04\",\n    \"parameters\": null,\n    \"name\": \"文档知识库问答\",\n    \"description\": \"功能简介：这是文档知识库问答流程，通过 “开始” 引导用户提问，“输入” 模块支持对话或表单录入文档内容，“文档知识库问答” 模块利用配置参数，基于文档知识解答用户问题 。\\n使用说明：在 “开始” 填引导语与示例问题；“输入” 选录入方式，设置文档相关参数；“文档知识库问答” 配置模型、问题等参数，保存后点击 “运行” 测试，确认无误可 “上线” 使用 。\",\n    \"flow_id\": \"0da365f9709842e29a5b1476d94ba8d9\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 19:54:04\",\n    \"id\": 358,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__start_fa9afright_handle-input_cc36cleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_fa9af\",\n          \"target\": \"input_cc36c\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_cc36cright_handle-rag_896caleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_cc36c\",\n          \"target\": \"rag_896ca\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_896caright_handle-input_cc36cleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_896ca\",\n          \"target\": \"input_cc36c\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_fa9af\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_fa9af\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"e6c745\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": 469,\n            \"y\": 150\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_896ca\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_896ca\",\n            \"name\": \"文档知识库问答\",\n            \"type\": \"rag\",\n            \"expand\": true,\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"input_cc36c.user_input\"\n                    ],\n                    \"varZh\": {\n                      \"input_cc36c.user_input\": \"输入/user_input\",\n                      \"input_e1758.user_input\": \"输入/user_input\",\n                      \"start_fa9af.current_time\": \"开始/current_time\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": [\n                        {\n                          \"key\": 1283,\n                          \"label\": \"毕昇文档知识库\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个知识库问答助手： \\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以下【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户问题：{{#rag_896ca.user_question#}}\\n参考文本：{{#rag_896ca.retrieved_result#}}\\n你的回答：\",\n                    \"varZh\": {\n                      \"rag_896ca.user_question\": \"user_question\",\n                      \"rag_896ca.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 1275\n          },\n          \"position\": {\n            \"x\": 1338.9283536315477,\n            \"y\": 152.54665865258175\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"input_cc36c\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_cc36c\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 570\n          },\n          \"position\": {\n            \"x\": 935.6608232521362,\n            \"y\": 163.53933298957216\n          }\n        }\n      ],\n      \"viewport\": {\n        \"x\": -365.03852145949816,\n        \"y\": -107.15501189516708,\n        \"zoom\": 0.6295427860409281\n      }\n    },\n    \"order_num\": 12238723,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:05:11\",\n    \"parameters\": null,\n    \"name\": \"优先知识库问答+搜索引擎兜底\",\n    \"description\": \"功能简介：这是 “优先知识库问答 + 搜索引擎兜底” 工作流，先借 “开始” 引导对话，“输入” 模块获取用户提问与文件，经 “文档知识库问答” 检索知识；若未匹配内容，“条件分支” 触发 “助手” 调用搜索引擎补充，最终 “输出” 回答，保障问答覆盖度。\\n使用说明：“开始” 填引导语；“输入” 选录入方式，设文件参数。\\n运行流程，“文档知识库问答” 优先检索知识；若output_user含 “没有找到相关内容”，触发 “助手” 用搜索引擎兜底。\",\n    \"flow_id\": \"2853ac0e3e3e483985a414911e409463\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:05:11\",\n    \"id\": 360,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__condition_448edright_handle-output_2a3beleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_448ed\",\n          \"target\": \"output_2a3be\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_3e24bright_handle-condition_448edleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_3e24b\",\n          \"target\": \"condition_448ed\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_448ed78028559-agent_49ec7left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_448ed\",\n          \"target\": \"agent_49ec7\",\n          \"animated\": true,\n          \"sourceHandle\": \"78028559\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_9f092right_handle-input_c284fleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_9f092\",\n          \"target\": \"input_c284f\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_c284fright_handle-rag_3e24bleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_c284f\",\n          \"target\": \"rag_3e24b\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_2a3beright_handle-input_c284fleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_2a3be\",\n          \"target\": \"input_c284f\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__agent_49ec7right_handle-input_c284fleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"agent_49ec7\",\n          \"target\": \"input_c284f\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_9f092\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_9f092\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"你好，我是问答助手\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"a3a02e\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": 237.20000000000005,\n            \"y\": -161\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_448ed\",\n          \"data\": {\n            \"id\": \"condition_448ed\",\n            \"name\": \"条件分支\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"78028559\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"59451337\",\n                            \"left_var\": \"rag_3e24b.output_user_input\",\n                            \"left_label\": \"output_user_input\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"没有找到相关内容\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 562,\n            \"height\": 347\n          },\n          \"position\": {\n            \"x\": 1614.1888377214964,\n            \"y\": -254.09438817125263\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_2a3be\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_2a3be\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"{{#rag_3e24b.output_user_input#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"agent_140fe.output\": \"助手/output\",\n                      \"rag_3e24b.output_user_input\": \"文档知识库问答/output_user_input\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 2260.2238409262695,\n            \"y\": 26.60625066348959\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_3e24b\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_3e24b\",\n            \"name\": \"文档知识库问答\",\n            \"type\": \"rag\",\n            \"expand\": false,\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"input_c284f.user_input\"\n                    ],\n                    \"varZh\": {\n                      \"input_1b610.user_input\": \"输入/user_input\",\n                      \"input_2d0d4.user_input\": \"输入/user_input\",\n                      \"input_c284f.user_input\": \"输入/user_input\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": [\n                        {\n                          \"key\": 1301,\n                          \"label\": \"毕昇产品文档\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个知识库问答助手： \\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户问题：{{#rag_3e24b.user_question#}}\\n参考文本：{{#rag_3e24b.retrieved_result#}}\\n你的回答：\",\n                    \"varZh\": {\n                      \"rag_3e24b.user_question\": \"user_question\",\n                      \"rag_3e24b.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 150\n          },\n          \"position\": {\n            \"x\": 1145.3311585293775,\n            \"y\": -159.21938594285209\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"agent_49ec7\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"agent_49ec7\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"助手\",\n            \"type\": \"agent\",\n            \"expand\": false,\n            \"description\": \"AI 自主进行任务规划，选择合适的知识库或工具进行调用。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"agent_model\",\n                    \"label\": \"模型\",\n                    \"value\": 274,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role \\n\\n你是一个善于根据互联网搜索引擎获取信息并回答用户问题的 AI 助理# skill\\n\\n根据用户问题，调用 Bing Web 工具检索需要的信息，并结合检索结果回答用户问题。\",\n                    \"required\": true,\n                    \"placeholder\": \"助手画像\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c284f.user_input#}}\",\n                    \"varZh\": {\n                      \"input_c284f.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"用户消息内容\"\n                  },\n                  {\n                    \"key\": \"chat_history_flag\",\n                    \"help\": \"带入模型上下文的历史消息条数，为 0 时代表不包含上下文信息。\",\n                    \"step\": 1,\n                    \"type\": \"slide_switch\",\n                    \"label\": \"历史聊天记录\",\n                    \"scope\": [\n                      0,\n                      100\n                    ],\n                    \"value\": {\n                      \"flag\": true,\n                      \"value\": 50\n                    }\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": \"\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"知识库\",\n                \"params\": [\n                  {\n                    \"key\": \"knowledge_id\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索知识库范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": []\n                    },\n                    \"placeholder\": \"请选择知识库\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"数据库\",\n                \"params\": [\n                  {\n                    \"key\": \"sql_agent\",\n                    \"type\": \"sql_config\",\n                    \"value\": {\n                      \"open\": false,\n                      \"db_name\": \"\",\n                      \"db_address\": \"\",\n                      \"db_password\": \"\",\n                      \"db_username\": \"\",\n                      \"database_engine\": \"mysql\"\n                    }\n                  }\n                ]\n              },\n              {\n                \"name\": \"工具\",\n                \"params\": [\n                  {\n                    \"key\": \"tool_list\",\n                    \"type\": \"add_tool\",\n                    \"label\": \"+ 添加工具\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 150\n          },\n          \"position\": {\n            \"x\": 2265.0840022667044,\n            \"y\": -456.86140838548886\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"input_c284f\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_c284f\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 570\n          },\n          \"position\": {\n            \"x\": 735.2652144940947,\n            \"y\": -165.84643370976673\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": -69.1807775874338,\n        \"y\": 311.2637313881481,\n        \"zoom\": 0.5741179493568034\n      }\n    },\n    \"order_num\": 12369793,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:11:36\",\n    \"parameters\": null,\n    \"name\": \"五步翻译法\",\n    \"description\": \"功能简介\\n这是翻译工作流，通过 “输入” 环节录入文本，经 “英文要点直译”“中文意图反译” 等多轮模型处理，利用大模型分步骤优化翻译内容，最终输出高质量译文，适用于需精准翻译的场景。\\n使用说明\\n在 “输入” 节点填入待翻译文本，依次运行 “英文要点直译”“中文意图反译” 等后续节点，各环节依托大模型自动处理，流程结束后在 “结束” 节点查看最终翻译结果，可按需调整模型参数优化效果。\",\n    \"flow_id\": \"a2fb8daa1af942d58c306c164d2e7c9e\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:11:36\",\n    \"id\": 361,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__llm_ebfb8right_handle-llm_3fa0dleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_ebfb8\",\n          \"target\": \"llm_3fa0d\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_3fa0dright_handle-llm_834d3left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_3fa0d\",\n          \"target\": \"llm_834d3\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_834d3right_handle-llm_9ae96left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_834d3\",\n          \"target\": \"llm_9ae96\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_9ae96right_handle-llm_414d9left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_9ae96\",\n          \"target\": \"llm_414d9\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_414d9right_handle-end_6ee61left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_414d9\",\n          \"target\": \"end_6ee61\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_faec1right_handle-input_c5b73left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_faec1\",\n          \"target\": \"input_c5b73\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_c5b73right_handle-llm_ebfb8left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_c5b73\",\n          \"target\": \"llm_ebfb8\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_faec1\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_faec1\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"expand\": true,\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"五步翻译法，适合论文等对于翻译质量有较高要求的场景，包含 5 个环节： 1）直译初稿 2）意译初稿 3）回译 4）编辑校对 5）意译终稿 。\\n\\n请发送您要翻译的英文材料：\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"63e87c\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": 138.9223951864526,\n            \"y\": 81.99792129963708\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_6ee61\",\n          \"data\": {\n            \"id\": \"end_6ee61\",\n            \"name\": \"结束\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2946.3789207819623,\n            \"y\": 403.8501940420881\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_ebfb8\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_ebfb8\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"英文教授直译\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role \\n\\n你是一位资深英语教授，能精确的理解英文并用中文表达，同时也是一名熟悉神经科学、machine learning、deep learning、NLP和CV领域的教授，掌握这些领域的专业术语。  \\n\\n# task  \\n\\n翻译解释一篇专业的技术文章成简体中文给本科生阅读，务必遵守原意，翻译时保持原始英文的段落结构，不要合并分段。\\n\\n# Rules\\n\\n- 翻译时要准确传达学术论文的事实和背景，同时风格上保持为通俗易懂并且严谨的科普文风格。\\n\\n- 保留特定的英文术语、数字或名字，并在其前后加上空格，例如：\\\"中 UN 文\\\"，\\\"不超过 10 秒\\\"。\\n\\n- 即使意译也要保留术语，例如 token、transformer、LLM、zero-shot 等。保留公司缩写，例如 Microsoft, Amazon 等。\\n\\n- 保留引用的论文，例如 [20] 这样的引用；同时也要保留针对图例的引用，例如保留 Figure 1 并翻译为图 1。\\n\\n- 输入格式为 Markdown 格式，输出格式也必须保留原始 Markdown 格式。- 翻译时全角括号换成半角括号，并在左括号前面加半角空格，右括号后面加半角空格。\\n\\n\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c5b73.user_input#}}\",\n                    \"varZh\": {\n                      \"input_c5b73.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 1107.194280093113,\n            \"y\": 84.7835136533582\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_3fa0d\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_3fa0d\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"中文教授意译初稿\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role\\n\\n你是一位资深中文教授，擅长按照中文使用习惯，撰写通俗易懂的科普文。  \\n\\n# task  \\n\\n对英语教授翻译的内容重新意译，遵守原意的前提下让内容更通俗易懂，符合中文表达习惯，但不要增加和删减内容，保持原始分段。\\n\\n\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 英文原文\\n{{#input_c5b73.user_input#}}\\n\\n\\n# 英文教授直译文  \\n\\n{{#llm_ebfb8.output#}}\\n\",\n                    \"varZh\": {\n                      \"llm_ebfb8.output\": \"英文教授直译/output\",\n                      \"input_c5b73.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 1574.4947033403798,\n            \"y\": 85.49355402754313\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_834d3\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_834d3\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"英文教授回译\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role \\n\\n你是一位资深英语教授，能精确的理解英文并用中文表达，同时也是一名熟悉神经科学、machine learning、deep learning、NLP和CV领域的教授，掌握这些领域的专业术语。  \\n\\n# task   \\n\\n将中文教授的中文意译稿反向翻译成英文回译稿。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 中文教授中文意译稿  \\n{{#llm_3fa0d.output#}}\\n\",\n                    \"varZh\": {\n                      \"llm_3fa0d.output\": \"中文教授意译初稿/output\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2030.102513363393,\n            \"y\": 89.35591616008031\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_9ae96\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_9ae96\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"审查编辑校对\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role \\n\\n你是一位资深出版编辑，精通中文和英文，擅长校对审查。\\n\\n你现在手上有3份文稿：\\n\\n- 英文原稿。  \\n\\n- 中文译稿。 \\n\\n- 英文回译稿（原稿翻译成中文后，重新回译成英文的回译稿）  \\n\\n# task  \\n\\n1. 通过对比【英文原稿】和【英文回译稿】的出入，便于找到中文译稿中不恰当的地方（重复以下列表，直到列出所有有出入并且需要修改译文的内容）： \\n\\n- 回译稿对比原文缺失或表达歧义部分[1...n]: \\n\\n- 原文：“{English}” \\n\\n- 回译文：“{English}”\\n\\n- 中文译文：“{译文}” \\n\\n- 建议：{译文修改建议}  \\n\\n2. 指出中文翻译表达不符合中文习惯的部分（重复以下列表，直到列出所有需要修改的内容）：  \\n\\n- 修改{1...n}:   \\n\\n- 原文：“{English}” \\n\\n- 译文：“{译文}”   \\n\\n- 建议：{译文修改建议}\\n\\n\\n\\n\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c5b73.user_input#}}# 英文原稿\\n``````\\n\\n# 英文回译稿  \\n```{{#llm_834d3.output#}}```\\n# 中文译稿```{{#llm_3fa0d.output#}}```\",\n                    \"varZh\": {\n                      \"llm_3fa0d.output\": \"中文教授意译初稿/output\",\n                      \"llm_834d3.output\": \"英文教授回译/output\",\n                      \"input_c5b73.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2464.072445850047,\n            \"y\": 90.30383209830156\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"llm_414d9\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_414d9\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"中文教授意译终稿\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"# role\\n你是一位资深中文教授，擅长按照中文使用习惯，撰写通俗易懂的科普文。\\n\\n\\n# task\\n对照英文原文材料，在意译初稿的基础上，针对出版编辑的修改建议，翻译出意译终稿。\\n\\n\\n\\n\\n\\n\\n\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 英文原文\\n```{{#input_c5b73.user_input#}}```\\n# 意译初稿\\n```{{#llm_3fa0d.output#}}```\\n# 出版编辑修改意见    \\n```{{#llm_9ae96.output#}}```\",\n                    \"varZh\": {\n                      \"llm_3fa0d.output\": \"中文教授意译初稿/output\",\n                      \"llm_9ae96.output\": \"审查编辑校对/output\",\n                      \"input_c5b73.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2916.394693106114,\n            \"y\": 97.6941646914677\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_c5b73\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_c5b73\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"expand\": false,\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 150\n          },\n          \"position\": {\n            \"x\": 634.423952924182,\n            \"y\": 85.4401521708546\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": -48.47172678094421,\n        \"y\": 123.7367237461774,\n        \"zoom\": 0.4280931573424512\n      }\n    },\n    \"order_num\": 12435328,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:27:30\",\n    \"parameters\": null,\n    \"name\": \"基于产品知识库的 AI 营销文案生成 + 人类意见迭代\",\n    \"description\": \"功能简介\\n基于产品知识库，通过输入用户需求，经文本识别、拆分等处理，调用大模型生成营销文案，辅助高效产出贴合产品知识的推广内容 。\\n使用说明\\n在 “输入” 节点填用户需求，依次运行 “文本识别”“拆分” 等节点，配置各环节参数（如文本长度、模型选择），最后经大模型节点生成营销文案，在 “输出” 查看结果 。\",\n    \"flow_id\": \"60338b009bb44d6d80086c2edeffcad9\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:27:30\",\n    \"id\": 362,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__output_204469212bf1c-end_ed5e5left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_20446\",\n          \"target\": \"end_ed5e5\",\n          \"animated\": true,\n          \"sourceHandle\": \"9212bf1c\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_2044664f4c390-output_84247left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_20446\",\n          \"target\": \"output_84247\",\n          \"animated\": true,\n          \"sourceHandle\": \"64f4c390\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_20bedright_handle-output_7d6b6left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_20bed\",\n          \"target\": \"output_7d6b6\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_7d6b6right_handle-rag_2b974left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_7d6b6\",\n          \"target\": \"rag_2b974\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_2b974right_handle-output_20446left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_2b974\",\n          \"target\": \"output_20446\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_84247right_handle-llm_c66feleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_84247\",\n          \"target\": \"llm_c66fe\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_c66feright_handle-output_20446left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_c66fe\",\n          \"target\": \"output_20446\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_d602dright_handle-input_60a99left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_d602d\",\n          \"target\": \"input_60a99\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_60a99right_handle-rag_20bedleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_60a99\",\n          \"target\": \"rag_20bed\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_d602d\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_d602d\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"您好，我是 AI 营销文案助手，请输入您想要生成文案的主题。\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"452b35\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": -42.66122923778269,\n            \"y\": 241.06330242522972\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_20446\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_20446\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"是否需要对以上营销文案进一步修改润色？\",\n                      \"files\": []\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"choose\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [\n                      {\n                        \"id\": \"64f4c390\",\n                        \"label\": \"是\",\n                        \"value\": \"\"\n                      },\n                      {\n                        \"id\": \"9212bf1c\",\n                        \"label\": \"否\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 622\n          },\n          \"position\": {\n            \"x\": 2311.53466926792,\n            \"y\": 197.65713275159808\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_7d6b6\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_7d6b6\",\n            \"name\": \"输出2\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"根据产品知识库的相关信息，我总结产品功能亮点如下，你可以直接在其基础上进行修改，接下来我会根据这些亮点生成营销文案。\",\n                      \"files\": []\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"input\",\n                      \"value\": \"{{#rag_20bed.output_user_input#}}\"\n                    },\n                    \"varZh\": {\n                      \"llm_07892.output\": \"大模型2/output\",\n                      \"rag_20bed.output_user_input\": \"文档知识库问答/output_user_input\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 615\n          },\n          \"position\": {\n            \"x\": 1268.3128337196854,\n            \"y\": 235.8165936047889\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_ed5e5\",\n          \"data\": {\n            \"id\": \"end_ed5e5\",\n            \"name\": \"结束\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2912.857796074366,\n            \"y\": 1292.741328658892\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_84247\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_84247\",\n            \"name\": \"输出3\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"请输入您的润色建议：\",\n                      \"files\": []\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"input\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 615\n          },\n          \"position\": {\n            \"x\": 2792.23765505673,\n            \"y\": 179.75492008835002\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_20bed\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_20bed\",\n            \"name\": \"文档知识库问答\",\n            \"type\": \"rag\",\n            \"expand\": true,\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"input_60a99.user_input\"\n                    ],\n                    \"varZh\": {\n                      \"input_1936c.user_input\": \"输入/user_input\",\n                      \"input_60a99.user_input\": \"输入/user_input\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": [\n                        {\n                          \"key\": 1283,\n                          \"label\": \"毕昇文档知识库\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个营销助手，专注于根据用户指令结合相关参考资料，提取关键信息和数据，帮助用户找到相关产品的功能和亮点，以便后续生成具有吸引力的营销文案。 \",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 用户需求\\n{{#input_60a99.user_input#}}\\n# 参考资料：\\n{{#rag_20bed.retrieved_result#}}\\n----\\n\\n产品功能亮点：\",\n                    \"varZh\": {\n                      \"input_60a99.user_input\": \"输入/user_input\",\n                      \"rag_20bed.user_question\": \"user_question\",\n                      \"rag_20bed.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 1275\n          },\n          \"position\": {\n            \"x\": 826.2000049926346,\n            \"y\": 237.0998165893505\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"rag_2b974\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_2b974\",\n            \"name\": \"文档知识库问答2\",\n            \"type\": \"rag\",\n            \"expand\": false,\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"input_60a99.user_input\"\n                    ],\n                    \"varZh\": {\n                      \"input_1936c.user_input\": \"输入/user_input\",\n                      \"input_60a99.user_input\": \"输入/user_input\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": [\n                        {\n                          \"key\": 1301,\n                          \"label\": \"毕昇产品文档\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个具有多年资深经验的产品营销大师，专注于根据用户指令，结合相关参考资料，突出产品功能和亮点，生成富有创意、情感共鸣、具有吸引力的营销文案。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 用户需求\\n{{#input_60a99.user_input#}}\\n# 参考资料\\n{{#rag_2b974.retrieved_result#}}\\n\\n# 产品功能亮点\\n{{#output_7d6b6.output_result#}}\\n\\n\\n\\n\\n\",\n                    \"varZh\": {\n                      \"input_60a99.user_input\": \"输入/user_input\",\n                      \"rag_2b974.user_question\": \"user_question\",\n                      \"output_7d6b6.output_result\": \"输出2/output_result\",\n                      \"rag_2b974.retrieved_result\": \"文档知识库问答2/retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 150\n          },\n          \"position\": {\n            \"x\": 1733.012638288989,\n            \"y\": 241.24634805976703\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_c66fe\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_c66fe\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型\",\n            \"type\": \"llm\",\n            \"expand\": true,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个具有多年资深经验的产品营销大师，专注于根据用户部门修改建议，对原始营销文案进行修改润色，以帮助企业提升品牌知名度和销售业绩。 \"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"# 原文\\n{{#rag_2b974.output_user_input#}}\\n\\n\\n\\n# 用户修改建议\\n\\n{{#output_84247.output_result#}}\\n\\n# 润色修改后文案\\n\\n\\n\\n\\n\\n\\n\",\n                    \"varZh\": {\n                      \"output_84247.output_result\": \"输出3/output_result\",\n                      \"rag_2b974.output_user_input\": \"文档知识库问答2/output_user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 833\n          },\n          \"position\": {\n            \"x\": 3243.668406668528,\n            \"y\": 182.05670813263373\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_60a99\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_60a99\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 570\n          },\n          \"position\": {\n            \"x\": 411.31336047282423,\n            \"y\": 234.7627660417411\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": -933.842567126535,\n        \"y\": -504.2152476262525,\n        \"zoom\": 1.4199819732946106\n      }\n    },\n    \"order_num\": 12500863,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:45:48\",\n    \"parameters\": null,\n    \"name\": \"分诊场景\",\n    \"description\": \"该流程用于分诊场景，用户输入内容后，经大模型判断是否完整，通过条件分支决策，再由大模型生成科室，输出分诊结果，辅助高效分诊 。\\n使用说明\\n在 “输入” 节点填内容，选 “大模型 - 判断是否完整” 配置参数运行，根据分支结果，经 “大模型 - 推荐科室” 处理，最后在 “输出” 查看分诊结论 。\",\n    \"flow_id\": \"7353cc101f434234bbee3a61eb17959d\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:45:48\",\n    \"id\": 364,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__condition_63775right_handle-output_15b82left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_63775\",\n          \"target\": \"output_15b82\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_8bbeeright_handle-condition_63775left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_8bbee\",\n          \"target\": \"condition_63775\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_637750eda50f7-llm_2cf38left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_63775\",\n          \"target\": \"llm_2cf38\",\n          \"animated\": true,\n          \"sourceHandle\": \"0eda50f7\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_2cf38right_handle-end_1341eleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_2cf38\",\n          \"target\": \"end_1341e\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_68c76right_handle-input_85ed8left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_68c76\",\n          \"target\": \"input_85ed8\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_85ed8right_handle-llm_8bbeeleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_85ed8\",\n          \"target\": \"llm_8bbee\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_15b82right_handle-input_85ed8left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_15b82\",\n          \"target\": \"input_85ed8\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_68c76\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_68c76\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"您好，请描述您的症状，并且提供您的性别、年龄信息。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ]\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"366504\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": -283.54706809376773,\n            \"y\": -86.40776212614759\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_63775\",\n          \"data\": {\n            \"id\": \"condition_63775\",\n            \"name\": \"条件分支\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"0eda50f7\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"b78beaf9\",\n                            \"left_var\": \"llm_8bbee.output\",\n                            \"left_label\": \"output\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"完整\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 545,\n            \"height\": 347\n          },\n          \"position\": {\n            \"x\": 1031.063648112229,\n            \"y\": -84.34903331683131\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_1341e\",\n          \"data\": {\n            \"id\": \"end_1341e\",\n            \"name\": \"结束\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2099.286704970077,\n            \"y\": -113.81885566422974\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_15b82\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_15b82\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"{{#llm_8bbee.output#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"llm_8bbee.output\": \"大模型-判断信息是否完整/output\",\n                      \"llm_a46d8.output\": \"大模型/output\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 1681.5053754933697,\n            \"y\": 244.61489030268024\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_8bbee\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_8bbee\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-判断信息是否完整\",\n            \"type\": \"llm\",\n            \"expand\": true,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"您是一名分诊医生。请判断以下用户提供的信息是否完整，需要包含性别、年龄、症状三项信息。若用户提供了完整信息则回复“信息完整”，若不完整则反问用户，让对方补充相应缺失的信息。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"你们的对话记录：\\n\\n```\\n\\n{{#start_68c76.chat_history#}}\\n\\n```\\n\\n你的回复：\\n\\n\\n\\n\",\n                    \"varZh\": {\n                      \"start_68c76.chat_history\": \"开始/chat_history\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 833\n          },\n          \"position\": {\n            \"x\": 622.8451256124496,\n            \"y\": -74.78472706554999\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_2cf38\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_2cf38\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-推荐科室\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"1. 根据提供的性别、年龄和症状，判断患者应该去医院的哪个科室就诊。\\n\\n2. 首先，分析患者的性别和年龄，这可能会影响某些症状的严重性和可能的科室选择。\\n\\n3. 然后，仔细阅读并理解患者的症状，确定这些症状可能与哪些科室相关。\\n\\n4. 根据常见的医疗科室和其对应的症状，匹配患者的症状到最合适的科室。\\n\\n5. 输出结果时，只需提供科室名称，不要包含任何XML标签。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"完整的用户信息包含在以下聊天记录中：\\n\\n```\\n\\n{{#start_68c76.chat_history#}}\\n\\n```\\n\\n推荐科室：\\n\\n\\n\\n\",\n                    \"varZh\": {\n                      \"start_68c76.chat_history\": \"开始/chat_history\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 1686.1706694671357,\n            \"y\": -81.72638198724074\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_85ed8\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_85ed8\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 570\n          },\n          \"position\": {\n            \"x\": 151.22647818562317,\n            \"y\": -68.89763571499358\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": 208.5212914927622,\n        \"y\": 177.1875221661041,\n        \"zoom\": 0.499110403236339\n      }\n    },\n    \"order_num\": 12631933,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:51:03\",\n    \"parameters\": null,\n    \"name\": \"工具调用\",\n    \"description\": \"功能简介\\n该流程用于内容处理，经输入、大模型处理、PMI 分析等环节，利用大模型完成任务，输出处理后的内容，支持单 / 批量运行，实现文本内容的智能化加工 。\\n使用说明\\n选择输入方式（对话 / 文件），配置大模型参数，设置 PMI 工具参数，确认各节点连接，点击 “运行”，流程自动执行，输出结果可查看调用大模型处理后的内容 。\\n\",\n    \"flow_id\": \"7d820dd5dbce46b4b38502af34d8fccb\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:51:03\",\n    \"id\": 366,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__tool_7a316right_handle-output_45121left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"tool_7a316\",\n          \"target\": \"output_45121\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_0c3fbright_handle-tool_7a316left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_0c3fb\",\n          \"target\": \"tool_7a316\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_148e4right_handle-tool_7a316left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_148e4\",\n          \"target\": \"tool_7a316\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_45121right_handle-llm_0fa85left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_45121\",\n          \"target\": \"llm_0fa85\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_3d920right_handle-input_4c88bleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_3d920\",\n          \"target\": \"input_4c88b\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_4c88bright_handle-llm_0c3fbleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_4c88b\",\n          \"target\": \"llm_0c3fb\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_4c88bright_handle-llm_148e4left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_4c88b\",\n          \"target\": \"llm_148e4\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_0fa85right_handle-input_4c88bleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_0fa85\",\n          \"target\": \"input_4c88b\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_3d920\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_3d920\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"expand\": false,\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"2024年上半年PMI变化情况\",\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"4b91bc\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 293.65992364972067,\n            \"y\": 74.81260064793756\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"tool_7a316\",\n          \"data\": {\n            \"id\": \"tool_7a316\",\n            \"name\": \"PMI\",\n            \"type\": \"tool\",\n            \"expand\": true,\n            \"tool_key\": \"macro_china_pmi\",\n            \"description\": \"中国 PMI （采购经理人指数）月度统计数据。返回数据包括：月份制造业 PMI，制造业 PMI 同比增长，非制造业 PMI，非制造业 PMI 同比增长。\",\n            \"group_params\": [\n              {\n                \"name\": \"工具参数\",\n                \"params\": [\n                  {\n                    \"key\": \"start_date\",\n                    \"desc\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"start_date\",\n                    \"value\": \"{{#llm_0c3fb.output#}}\",\n                    \"varZh\": {\n                      \"llm_0c3fb.output\": \"大模型-提取开始时间/output\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"end_date\",\n                    \"desc\": \"结束月份, 使用YYYY-MM-DD 方式表示\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"end_date\",\n                    \"value\": \"{{#llm_148e4.output#}}\",\n                    \"varZh\": {\n                      \"llm_148e4.output\": \"大模型-提取结束时间/output\"\n                    },\n                    \"required\": true\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 602\n          },\n          \"position\": {\n            \"x\": 1614.4895326144945,\n            \"y\": 100\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_45121\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_45121\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"{{#tool_7a316.output#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"tool_7a316.output\": \"PMI/output\",\n                      \"start_3d920.current_time\": \"开始/current_time\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 2032.2233877193396,\n            \"y\": 115.19445604716492\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_0c3fb\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_0c3fb\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-提取开始时间\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"从用户的输入中抽取出开始时间，格式：YYYY-MM-DD，仅输出时间，不要包含其他内容\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_4c88b.user_input#}}\",\n                    \"varZh\": {\n                      \"input_4c88b.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"true\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"true\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 1171.405788440929,\n            \"y\": 76.59789148675313\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_148e4\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_148e4\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-提取结束时间\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"从用户的输入中抽取出查询的结束时间，格式：YYYY-MM-DD，仅输出时间，不要包含其他内容\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_4c88b.user_input#}}\",\n                    \"varZh\": {\n                      \"input_4c88b.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"true\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"true\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 1175.5581100672648,\n            \"y\": 267.4853845047534\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"llm_0fa85\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_0fa85\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型\",\n            \"type\": \"llm\",\n            \"expand\": true,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一名宏观经济学家，请点评以下经济数据。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#tool_7a316.output#}}\",\n                    \"varZh\": {\n                      \"tool_7a316.output\": \"PMI/output\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"true\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"true\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 833\n          },\n          \"position\": {\n            \"x\": 2457.846463360472,\n            \"y\": 114.79561323887066\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_4c88b\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_4c88b\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 570\n          },\n          \"position\": {\n            \"x\": 754.2400379031777,\n            \"y\": 74.30568610625028\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": -111.39676647009968,\n        \"y\": -49.532665393166326,\n        \"zoom\": 0.5427937339527105\n      }\n    },\n    \"order_num\": 12763003,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 20:57:04\",\n    \"parameters\": null,\n    \"name\": \"智能简历筛选\",\n    \"description\": \"上传简历文件触发筛选\",\n    \"flow_id\": \"7576761af1ae4ea2b6f401b1e0953a57\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 20:57:04\",\n    \"id\": 367,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__condition_9afcb28a37878-llm_60dfcleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_9afcb\",\n          \"target\": \"llm_60dfc\",\n          \"animated\": true,\n          \"sourceHandle\": \"28a37878\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_60dfcright_handle-output_08e3dleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_60dfc\",\n          \"target\": \"output_08e3d\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_08e3dright_handle-end_ed827left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_08e3d\",\n          \"target\": \"end_ed827\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_025afright_handle-output_dc624left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_025af\",\n          \"target\": \"output_dc624\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_dc624right_handle-end_ed827left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_dc624\",\n          \"target\": \"end_ed827\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_743b7right_handle-condition_9afcbleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_743b7\",\n          \"target\": \"condition_9afcb\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_9afcbright_handle-rag_6c446left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_9afcb\",\n          \"target\": \"rag_6c446\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_6c446right_handle-llm_025afleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_6c446\",\n          \"target\": \"llm_025af\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_d0027right_handle-input_51222left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_d0027\",\n          \"target\": \"input_51222\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_51222right_handle-rag_743b7left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_51222\",\n          \"target\": \"rag_743b7\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_d0027\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_d0027\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"6e5db5\",\n                        \"value\": \"需有AI领域从业经历或为计算机相关专业\"\n                      },\n                      {\n                        \"key\": \"33572c\",\n                        \"value\": \"该候选人总工作时长需要3年以上\"\n                      },\n                      {\n                        \"key\": \"677ad0\",\n                        \"value\": \"工作经验中不能有多段工作经历持续时长低于3个月\"\n                      },\n                      {\n                        \"key\": \"622ff1\",\n                        \"value\": \"会Python\"\n                      },\n                      {\n                        \"key\": \"ce9333\",\n                        \"value\": \"有大模型相关项目经验\"\n                      },\n                      {\n                        \"key\": \"2b83e5\",\n                        \"value\": \"30岁以下\"\n                      },\n                      {\n                        \"key\": \"2a3382\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 879\n          },\n          \"position\": {\n            \"x\": 183.82157147745,\n            \"y\": 152.22958521319305\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_9afcb\",\n          \"data\": {\n            \"id\": \"condition_9afcb\",\n            \"name\": \"条件分支\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"28a37878\",\n                        \"operator\": \"or\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"475500db\",\n                            \"left_var\": \"rag_743b7.output_preset_question_6e5db5\",\n                            \"left_label\": \"判断候选人是否满足必要要求/output_需有AI领域从业经历或为计算机相关专业\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"不满足\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          },\n                          {\n                            \"id\": \"65e2732f\",\n                            \"left_var\": \"rag_743b7.output_preset_question_33572c\",\n                            \"left_label\": \"判断候选人是否满足必要要求/output_该候选人总工作时长需要3年以上\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"不满足\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          },\n                          {\n                            \"id\": \"316abb7b\",\n                            \"left_var\": \"rag_743b7.output_preset_question_677ad0\",\n                            \"left_label\": \"判断候选人是否满足必要要求/output_工作经验中不能有多段工作经历持续时长低于3个月\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"不满足\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 562,\n            \"height\": 419\n          },\n          \"position\": {\n            \"x\": 1488.6523613323277,\n            \"y\": 145.17597465560576\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_60dfc\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_60dfc\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"总结未通过简历筛选原因\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"以下是某个候选人简历评估的结果。由于但凡有一项“不满足”则无法进入面试环节。请简要（50字以内）总结一下该候选人简历未通过筛选的原因。\",\n                    \"varZh\": {\n                      \"rag_49431.output_preset_question_0\": \"判断候选人是否满足必要条件/output_需有AI领域从业经历或为计算机相关专业\"\n                    }\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"要求1满足情况：{{#rag_743b7.output_preset_question_6e5db5#}}要求2满足情况：{{#rag_743b7.output_preset_question_33572c#}}\\n要求3满足情况：{{#rag_743b7.output_preset_question_677ad0#}}\",\n                    \"varZh\": {\n                      \"rag_49431.output_preset_question_1\": \"判断候选人是否满足必要要求/output_需要有5年及以上工作经验\",\n                      \"rag_98e0c.output_preset_question_0\": \"判断候选人是否满足必要条件/output_需有AI领域从业经历或为计算机相关专业\",\n                      \"rag_98e0c.output_preset_question_1\": \"判断候选人是否满足必要条件/output_需要有5年及以上工作经验\",\n                      \"rag_98e0c.output_preset_question_2\": \"判断候选人是否满足必要条件/output_工作经验中不能有多段工作经历持续时长低于3个月\",\n                      \"rag_743b7.output_preset_question_33572c\": \"判断候选人是否满足必要要求/output_该候选人总工作时长需要3年以上\",\n                      \"rag_743b7.output_preset_question_677ad0\": \"判断候选人是否满足必要要求/output_工作经验中不能有多段工作经历持续时长低于3个月\",\n                      \"rag_743b7.output_preset_question_6e5db5\": \"判断候选人是否满足必要要求/output_需有AI领域从业经历或为计算机相关专业\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"true\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"true\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2224.0533822371517,\n            \"y\": 147.86184733909764\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"output_08e3d\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_08e3d\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"简历筛选未通过。\\n\\n{{#llm_60dfc.output#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"llm_60dfc.output\": \"总结未通过简历筛选原因/output\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 2625.826899106754,\n            \"y\": 151.65379821350757\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_ed827\",\n          \"data\": {\n            \"id\": \"end_ed827\",\n            \"name\": \"结束\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 3462.9772003335,\n            \"y\": 159.78541998491698\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_025af\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_025af\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"加分项算分\",\n            \"type\": \"llm\",\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"以下是某个候选人简历评估中加分项的评估结果。每个“满足”加2分，每个“不满足”扣一分，“不确定”不加不减。输出最后的分数，仅输出数字即可。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"要求1满足情况：{{#rag_6c446.output_preset_question_622ff1#}}要求2满足情况：{{#rag_6c446.output_preset_question_ce9333#}}要求3满足情况：{{#rag_6c446.output_preset_question_2b83e5#}}\",\n                    \"varZh\": {\n                      \"rag_882f4.output_preset_question_3\": \"判断加分项/output_会Python\",\n                      \"rag_882f4.output_preset_question_4\": \"判断加分项/output_有大模型相关项目经验\",\n                      \"rag_882f4.output_preset_question_5\": \"判断加分项/output_30岁以下\",\n                      \"rag_6c446.output_preset_question_2b83e5\": \"判断加分情况/output_30岁以下\",\n                      \"rag_6c446.output_preset_question_622ff1\": \"判断加分情况/output_会Python\",\n                      \"rag_6c446.output_preset_question_ce9333\": \"判断加分情况/output_有大模型相关项目经验\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"true\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"true\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 833\n          },\n          \"position\": {\n            \"x\": 2630.260369780459,\n            \"y\": 630.0457897653762\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_dc624\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_dc624\",\n            \"name\": \"输出2\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"该候选人得分：{{#llm_025af.output#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"llm_025af.output\": \"加分项算分/output\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 3030,\n            \"y\": 631.2632435428188\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_743b7\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_743b7\",\n            \"name\": \"判断候选人是否满足必要要求\",\n            \"type\": \"rag\",\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"start_d0027.preset_question#6e5db5\",\n                      \"start_d0027.preset_question#33572c\",\n                      \"start_d0027.preset_question#677ad0\"\n                    ],\n                    \"varZh\": {\n                      \"start_d0027.preset_question#33572c\": \"开始/该候选人总工作时长需要3年以上\",\n                      \"start_d0027.preset_question#677ad0\": \"开始/工作经验中不能有多段工作经历持续时长低于3个月\",\n                      \"start_d0027.preset_question#6e5db5\": \"开始/需有AI领域从业经历或为计算机相关专业\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"tmp\",\n                      \"value\": [\n                        {\n                          \"key\": \"input_51222.file\",\n                          \"label\": \"file(简历)\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一名HR，需要你根据审核项对简历进行审核。审核结论输出符合以下要求：1、包含“本项审核结论”、“结论依据”两项内容。2、“本项审核结论”只输出“满足”、“不满足”或“不确定”3、“结论依据”即对输出该结论的解释，解释中不要包含“满足”、“不满足”或“不确定”字眼。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"审核项：{{#rag_743b7.user_question#}}\\n参考文本：{{#rag_743b7.retrieved_result#}}\\n审核结果：\",\n                    \"varZh\": {\n                      \"rag_743b7.user_question\": \"user_question\",\n                      \"rag_743b7.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"help\": \"模型输出内容将会存储在该变量中。\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_preset_question_6e5db5\",\n                        \"label\": \"output_需有AI领域从业经历或为计算机相关专业\"\n                      },\n                      {\n                        \"key\": \"output_preset_question_33572c\",\n                        \"label\": \"output_该候选人总工作时长需要3年以上\"\n                      },\n                      {\n                        \"key\": \"output_preset_question_677ad0\",\n                        \"label\": \"output_工作经验中不能有多段工作经历持续时长低于3个月\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 1421\n          },\n          \"position\": {\n            \"x\": 1046.492501246415,\n            \"y\": 150.24255315187906\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_6c446\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_6c446\",\n            \"name\": \"判断加分情况\",\n            \"type\": \"rag\",\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"start_d0027.preset_question#622ff1\",\n                      \"start_d0027.preset_question#ce9333\",\n                      \"start_d0027.preset_question#2b83e5\"\n                    ],\n                    \"varZh\": {\n                      \"start_d0027.preset_question#2b83e5\": \"开始/30岁以下\",\n                      \"start_d0027.preset_question#622ff1\": \"开始/会Python\",\n                      \"start_d0027.preset_question#ce9333\": \"开始/有大模型相关项目经验\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"tmp\",\n                      \"value\": [\n                        {\n                          \"key\": \"input_51222.file\",\n                          \"label\": \"file(简历)\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一名HR，需要你根据审核项对简历进行审核。审核结论输出符合以下要求：1、包含“本项审核结论”、“结论依据”两项内容。2、“本项审核结论”只输出“满足”、“不满足”或“不确定”3、“结论依据”即对输出该结论的解释，解释中不要包含“满足”、“不满足”或“不确定”字眼。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户问题：{{#rag_6c446.user_question#}}\\n参考文本：{{#rag_6c446.retrieved_result#}}\\n你的回答：\",\n                    \"varZh\": {\n                      \"rag_6c446.user_question\": \"user_question\",\n                      \"rag_6c446.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"help\": \"模型输出内容将会存储在该变量中。\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_preset_question_622ff1\",\n                        \"label\": \"output_会Python\"\n                      },\n                      {\n                        \"key\": \"output_preset_question_ce9333\",\n                        \"label\": \"output_有大模型相关项目经验\"\n                      },\n                      {\n                        \"key\": \"output_preset_question_2b83e5\",\n                        \"label\": \"output_30岁以下\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 1389\n          },\n          \"position\": {\n            \"x\": 2212.3843046432144,\n            \"y\": 548.5147332426619\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_51222\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_51222\",\n            \"tab\": {\n              \"value\": \"form_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": {},\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": {},\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [\n                      {\n                        \"key\": \"file\",\n                        \"type\": \"file\",\n                        \"value\": \"简历\",\n                        \"options\": [],\n                        \"multiple\": true,\n                        \"required\": true,\n                        \"file_path\": \"\",\n                        \"file_type\": \"all\",\n                        \"image_file\": \"\",\n                        \"file_content\": \"\",\n                        \"file_parse_mode\": \"ingest_to_temp_kb\",\n                        \"file_content_size\": 15000\n                      }\n                    ],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 311\n          },\n          \"position\": {\n            \"x\": 591.9687179846699,\n            \"y\": 149.54936212710822\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": -638.4131557718965,\n        \"y\": -49.3950076425578,\n        \"zoom\": 0.5209290936198073\n      }\n    },\n    \"order_num\": 12828538,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 21:24:46\",\n    \"parameters\": null,\n    \"name\": \"文章助手\",\n    \"description\": \"功能简介\\n这是 “文章助手” 工作流，用于文章创作优化。先通过输入明确创作需求，经条件分支判断是否需优化、是知识错误还是缺漏、哪种优化方向，调用大模型完成对应改写、纠错、补漏等操作，辅助产出高质量文章 。\\n使用说明\\n在 “输入” 节点填创作意图、内容方向，依次运行各节点。按条件分支逻辑，根据需求走 “改写优化”“检查错误 / 缺漏” 等分支，调用对应大模型工具，最终输出优化后的文章内容 。\",\n    \"flow_id\": \"b483af499e4c49498adf963fdefa692a\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 21:24:46\",\n    \"id\": 373,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__condition_086c0f0af1112-condition_e4299left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_086c0\",\n          \"target\": \"condition_e4299\",\n          \"animated\": true,\n          \"sourceHandle\": \"f0af1112\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_e4299172c7f82-llm_04f45left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_e4299\",\n          \"target\": \"llm_04f45\",\n          \"animated\": true,\n          \"sourceHandle\": \"172c7f82\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_e4299right_handle-llm_0d11dleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_e4299\",\n          \"target\": \"llm_0d11d\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__flowNode_4325b172c7f82-llm_319a5left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"flowNode_4325b\",\n          \"target\": \"llm_319a5\",\n          \"animated\": true,\n          \"sourceHandle\": \"172c7f82\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__flowNode_4325b341a403c-llm_fcfd0left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"flowNode_4325b\",\n          \"target\": \"llm_fcfd0\",\n          \"animated\": true,\n          \"sourceHandle\": \"341a403c\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__flowNode_4325bright_handle-llm_9b7ableft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"flowNode_4325b\",\n          \"target\": \"llm_9b7ab\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_04f45right_handle-end_c54b8left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_04f45\",\n          \"target\": \"end_c54b8\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_0d11dright_handle-end_d3a29left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_0d11d\",\n          \"target\": \"end_d3a29\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_319a5right_handle-end_95a69left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_319a5\",\n          \"target\": \"end_95a69\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_fcfd0right_handle-end_b740cleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_fcfd0\",\n          \"target\": \"end_b740c\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_9b7abright_handle-end_7a9d0left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_9b7ab\",\n          \"target\": \"end_7a9d0\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_c0564right_handle-condition_086c0left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_c0564\",\n          \"target\": \"condition_086c0\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_68c76right_handle-input_c0564left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_68c76\",\n          \"target\": \"input_c0564\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_086c0right_handle-input_93a57left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_086c0\",\n          \"target\": \"input_93a57\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_93a57right_handle-flowNode_4325bleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_93a57\",\n          \"target\": \"flowNode_4325b\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_68c76\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_68c76\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"文章撰写助手。\\n\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"\"\n                    ]\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"fdf2f6\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 711\n          },\n          \"position\": {\n            \"x\": -254.5074365009976,\n            \"y\": -54.95034320067019\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_086c0\",\n          \"data\": {\n            \"id\": \"condition_086c0\",\n            \"name\": \"条件分支-是否为优化改写\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"f0af1112\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"b5744201\",\n                            \"left_var\": \"input_c0564.category\",\n                            \"left_label\": \"输入/category\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"改写优化\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"not_contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 562,\n            \"height\": 347\n          },\n          \"position\": {\n            \"x\": 652.6065106681506,\n            \"y\": -56.557347234989656\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_e4299\",\n          \"data\": {\n            \"id\": \"condition_e4299\",\n            \"name\": \"条件分支-检查错误还是起标题\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"172c7f82\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"1a0126bd\",\n                            \"left_var\": \"input_c0564.category\",\n                            \"left_label\": \"输入/category\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"检查错误\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 562,\n            \"height\": 347\n          },\n          \"position\": {\n            \"x\": 1403.6380617911316,\n            \"y\": -53.541044883239984\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"flowNode_4325b\",\n          \"data\": {\n            \"id\": \"flowNode_4325b\",\n            \"name\": \"条件分支-哪种优化\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"172c7f82\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"1a0126bd\",\n                            \"left_var\": \"input_93a57.category2\",\n                            \"left_label\": \"选择优化方向/category2\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"变长\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      },\n                      {\n                        \"id\": \"341a403c\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"887e9105\",\n                            \"left_var\": \"input_93a57.category2\",\n                            \"left_label\": \"选择优化方向/category2\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"变短\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"contains\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 562,\n            \"height\": 463\n          },\n          \"position\": {\n            \"x\": 1710.9835717741546,\n            \"y\": 352.22981329527255\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_04f45\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_04f45\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-检查错误\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是文章撰写专家，请检查以下文本中的错误，并一一列举出来\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c0564.text_input#}}\",\n                    \"varZh\": {\n                      \"input_c0564.a4089e\": \"输入/a4089e\",\n                      \"input_c0564.text_input\": \"输入/text_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2357.376350158347,\n            \"y\": -99.5882796942481\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_0d11d\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_0d11d\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-起标题\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是文章撰写专家，请基于以下文本内容起一个标题\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c0564.text_input#}}\",\n                    \"varZh\": {\n                      \"input_93a57.category2\": \"选择优化方向/category2\",\n                      \"input_c0564.text_input\": \"输入/text_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2366.37878639579,\n            \"y\": 135.57804927695716\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_319a5\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_319a5\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-变长\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是文章撰写专家，请将以下内容改写得更长。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c0564.text_input#}}\",\n                    \"varZh\": {\n                      \"input_c0564.text_input\": \"输入/text_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2364.2222119477274,\n            \"y\": 311.77105431340004\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_fcfd0\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_fcfd0\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-变短\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是文章撰写专家，请将以下内容改写得更短。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c0564.text_input#}}\",\n                    \"varZh\": {\n                      \"input_c0564.text_input\": \"输入/text_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2380.2587980739713,\n            \"y\": 523.9445747167125\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_9b7ab\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_9b7ab\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-讽刺口吻\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是文章撰写专家，请将以下内容用讽刺的口吻改写一遍。\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"{{#input_c0564.text_input#}}\",\n                    \"varZh\": {\n                      \"input_c0564.text_input\": \"输入/text_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2382.1177403285865,\n            \"y\": 716.8035163539979\n          },\n          \"selected\": true\n        },\n        {\n          \"id\": \"end_c54b8\",\n          \"data\": {\n            \"id\": \"end_c54b8\",\n            \"name\": \"结束\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2808.1668882050744,\n            \"y\": -42.43221090899556\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_d3a29\",\n          \"data\": {\n            \"id\": \"end_d3a29\",\n            \"name\": \"结束2\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2814.629079906689,\n            \"y\": 129.02998079261903\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_95a69\",\n          \"data\": {\n            \"id\": \"end_95a69\",\n            \"name\": \"结束3\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2807.319452039774,\n            \"y\": 319.3509041526474\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_b740c\",\n          \"data\": {\n            \"id\": \"end_b740c\",\n            \"name\": \"结束4\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2790.9481643515182,\n            \"y\": 514.5879452405269\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"end_7a9d0\",\n          \"data\": {\n            \"id\": \"end_7a9d0\",\n            \"name\": \"结束5\",\n            \"type\": \"end\",\n            \"description\": \"工作流运行到此结束。\",\n            \"group_params\": []\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 134\n          },\n          \"position\": {\n            \"x\": 2805.2370410878793,\n            \"y\": 703.8147945606022\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_c0564\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_c0564\",\n            \"tab\": {\n              \"value\": \"form_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [\n                      {\n                        \"key\": \"category\",\n                        \"type\": \"select\",\n                        \"value\": \"帮您做什么\",\n                        \"options\": [\n                          {\n                            \"id\": \"55078e1a\",\n                            \"text\": \"检查错误\",\n                            \"type\": \"\"\n                          },\n                          {\n                            \"id\": \"314f10d4\",\n                            \"text\": \"改写优化\",\n                            \"type\": \"\"\n                          },\n                          {\n                            \"id\": \"beea95fb\",\n                            \"text\": \"起一个标题\",\n                            \"type\": \"\"\n                          }\n                        ],\n                        \"multiple\": false,\n                        \"required\": true,\n                        \"file_path\": \"file_path\",\n                        \"file_type\": \"all\",\n                        \"image_file\": \"image_file\",\n                        \"file_content\": \"file_content\",\n                        \"file_parse_mode\": \"extract_text\",\n                        \"file_content_size\": 15000\n                      },\n                      {\n                        \"key\": \"text_input\",\n                        \"type\": \"text\",\n                        \"value\": \"需要改写的内容\\n\\n\",\n                        \"options\": [],\n                        \"multiple\": false,\n                        \"required\": true,\n                        \"file_path\": \"file_path\",\n                        \"file_type\": \"all\",\n                        \"image_file\": \"image_file\",\n                        \"file_content\": \"file_content\",\n                        \"file_parse_mode\": \"extract_text\",\n                        \"file_content_size\": 15000\n                      }\n                    ],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 356\n          },\n          \"position\": {\n            \"x\": 210.10966500379396,\n            \"y\": -57.43844277479269\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_93a57\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_93a57\",\n            \"tab\": {\n              \"value\": \"form_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"选择优化方向\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [\n                      {\n                        \"key\": \"category2\",\n                        \"type\": \"select\",\n                        \"value\": \"需要优化的方向\",\n                        \"options\": [\n                          {\n                            \"id\": \"1df7e6d8\",\n                            \"text\": \"变长\",\n                            \"type\": \"\"\n                          },\n                          {\n                            \"id\": \"e8ce5e3e\",\n                            \"text\": \"变短\",\n                            \"type\": \"\"\n                          },\n                          {\n                            \"id\": \"723fa2e1\",\n                            \"text\": \"改成讽刺口吻\",\n                            \"type\": \"\"\n                          }\n                        ],\n                        \"multiple\": false,\n                        \"required\": true,\n                        \"file_path\": \"file_path\",\n                        \"file_type\": \"all\",\n                        \"image_file\": \"image_file\",\n                        \"file_content\": \"file_content\",\n                        \"file_parse_mode\": \"extract_text\",\n                        \"file_content_size\": 15000\n                      }\n                    ],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 311\n          },\n          \"position\": {\n            \"x\": 1301.034049020076,\n            \"y\": 362.6108337624355\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": 168.41000286983763,\n        \"y\": 188.33690890750776,\n        \"zoom\": 0.39845595187329674\n      }\n    },\n    \"order_num\": 13221748,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 21:29:08\",\n    \"parameters\": null,\n    \"name\": \"大模型竞技场 \",\n    \"description\": \"功能简介 这是 “大模型竞技场” 工作流，支持 “对话框 / 表单” 2 种输入形式，调用 gpt40mini、混元、qwen 2.5 三个大模型并行处理任务，最后通过 “输出 2” 节点，以无交互、选择型交互或输入型交互方式，反馈模型处理结果 。\\n使用说明\\n在 “输入” 节点选交互形式（对话框 / 表单），填入内容、上传文件（可选），运行流程。三个大模型会同时处理输入，完成后在 “输出 2” 节点，根据需求选交互类型，查看 / 使用模型输出结果 。\",\n    \"flow_id\": \"fba9c65151184d629348219f05a70e27\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 21:29:08\",\n    \"id\": 374,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__start_68c76right_handle-input_ac896left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_68c76\",\n          \"target\": \"input_ac896\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_ac896right_handle-llm_1c15aleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_ac896\",\n          \"target\": \"llm_1c15a\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_ac896right_handle-llm_0bbf3left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_ac896\",\n          \"target\": \"llm_0bbf3\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_ac896right_handle-llm_5b4ebleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_ac896\",\n          \"target\": \"llm_5b4eb\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_1c15aright_handle-output_074afleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_1c15a\",\n          \"target\": \"output_074af\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_0bbf3right_handle-output_074afleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_0bbf3\",\n          \"target\": \"output_074af\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__llm_5b4ebright_handle-output_074afleft_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"llm_5b4eb\",\n          \"target\": \"output_074af\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_074afright_handle-input_ac896left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_074af\",\n          \"target\": \"input_ac896\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_68c76\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_68c76\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"大模型竞技场\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"你是谁~\",\n                      \"\"\n                    ]\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"18b2f7\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 753\n          },\n          \"position\": {\n            \"x\": -182.1450323475628,\n            \"y\": -13.21802815370333\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_1c15a\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_1c15a\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-gpt4omini \",\n            \"type\": \"llm\",\n            \"expand\": true,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"友好的助手\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户：{{#input_ac896.user_input#}}你的回复：\",\n                    \"varZh\": {\n                      \"input_ac896.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 836\n          },\n          \"position\": {\n            \"x\": 660.2576202218669,\n            \"y\": -7.589292442416962\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_0bbf3\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_0bbf3\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-混元\",\n            \"type\": \"llm\",\n            \"expand\": false,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"友好的助手\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户：{{#input_ac896.user_input#}}你的回复：\",\n                    \"varZh\": {\n                      \"input_ac896.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 135\n          },\n          \"position\": {\n            \"x\": 663.5982291778208,\n            \"y\": 160.9498553634532\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"llm_5b4eb\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"llm_5b4eb\",\n            \"tab\": {\n              \"value\": \"single\",\n              \"options\": [\n                {\n                  \"key\": \"single\",\n                  \"label\": \"单次运行\"\n                },\n                {\n                  \"key\": \"batch\",\n                  \"label\": \"批量运行\"\n                }\n              ]\n            },\n            \"name\": \"大模型-qwen 2.5\",\n            \"type\": \"llm\",\n            \"expand\": true,\n            \"description\": \"调用大模型回答用户问题或者处理任务。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"batch_variable\",\n                    \"tab\": \"batch\",\n                    \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\",\n                    \"type\": \"user_question\",\n                    \"label\": \"批处理变量\",\n                    \"value\": [],\n                    \"global\": \"self\",\n                    \"linkage\": \"output\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择批处理变量\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"模型设置\",\n                \"params\": [\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"提示词\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"友好的助手\"\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户：{{#input_ac896.user_input#}}你的回复：\",\n                    \"varZh\": {\n                      \"input_ac896.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"image_prompt\",\n                    \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\",\n                    \"type\": \"image_prompt\",\n                    \"label\": \"视觉\",\n                    \"value\": []\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": false\n                  },\n                  {\n                    \"key\": \"output\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 836\n          },\n          \"position\": {\n            \"x\": 666.4815464404269,\n            \"y\": 386.324186907184\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_ac896\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_ac896\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 572\n          },\n          \"position\": {\n            \"x\": 241.1814647549988,\n            \"y\": -10.967656001848963\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_074af\",\n          \"data\": {\n            \"v\": \"2\",\n            \"id\": \"output_074af\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送文本和文件，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"msg\": \"\\n# GPT-4o-mini  \\n{{#llm_1c15a.output#}}\\n\\n\\n# 混元  \\n{{#llm_0bbf3.output#}}  \\n\\n\\n# 千问  \\n{{#llm_5b4eb.output#}}  \\n\\n\\n\\n\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"llm_0bbf3.output\": \"大模型-混元/output\",\n                      \"llm_1c15a.output\": \"大模型-gpt4omini/output\",\n                      \"llm_5b4eb.output\": \"大模型-qwen 2.5/output\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 465\n          },\n          \"position\": {\n            \"x\": 1116.4196010933445,\n            \"y\": -4.140951751970215\n          },\n          \"selected\": true\n        }\n      ],\n      \"viewport\": {\n        \"x\": -397.1989979664372,\n        \"y\": 59.476134021867665,\n        \"zoom\": 1.0694829253528593\n      }\n    },\n    \"order_num\": 13287283,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  },\n  {\n    \"update_time\": \"2026-02-05 21:44:36\",\n    \"parameters\": null,\n    \"name\": \"先检索 QA 后检索文档知识库问答\",\n    \"description\": \"功能简介\\n这是 “先检索 QA 后检索文档知识” 工作流，通过 “开始” 引导对话，“输入” 模块采集用户内容，先经 “QA 知识检索” 查问答库，无结果则触发 “文档知识问答” 补充回答，保障信息覆盖。\\n使用说明\\n在 “开始” 填引导语、示例问题；“输入” 选录入方式，设置文件参数。\\n运行流程，优先用 “QA 知识检索” 查问答库；无结果自动走 “文档知识问答”。\\n测试无误后点 “上线”，即可接入业务，接收用户提问并智能回答 。\",\n    \"flow_id\": \"6445ac25c5c0433091df2827963a762e\",\n    \"api_parameters\": null,\n    \"create_time\": \"2026-02-05 21:44:36\",\n    \"id\": 376,\n    \"data\": {\n      \"edges\": [\n        {\n          \"id\": \"xy-edge__condition_6c26160b32025-output_bf694left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_6c261\",\n          \"target\": \"output_bf694\",\n          \"animated\": true,\n          \"sourceHandle\": \"60b32025\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__condition_6c261right_handle-rag_01223left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"condition_6c261\",\n          \"target\": \"rag_01223\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__qa_retriever_3bb15right_handle-condition_6c261left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"qa_retriever_3bb15\",\n          \"target\": \"condition_6c261\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__start_d8f27right_handle-input_46939left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"start_d8f27\",\n          \"target\": \"input_46939\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__input_46939right_handle-qa_retriever_3bb15left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"input_46939\",\n          \"target\": \"qa_retriever_3bb15\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__output_bf694right_handle-input_46939left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"output_bf694\",\n          \"target\": \"input_46939\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        },\n        {\n          \"id\": \"xy-edge__rag_01223right_handle-input_46939left_handle\",\n          \"type\": \"customEdge\",\n          \"source\": \"rag_01223\",\n          \"target\": \"input_46939\",\n          \"animated\": true,\n          \"sourceHandle\": \"right_handle\",\n          \"targetHandle\": \"left_handle\"\n        }\n      ],\n      \"nodes\": [\n        {\n          \"id\": \"start_d8f27\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"start_d8f27\",\n            \"name\": \"开始\",\n            \"type\": \"start\",\n            \"description\": \"工作流运行的起始节点。\",\n            \"group_params\": [\n              {\n                \"name\": \"开场引导\",\n                \"params\": [\n                  {\n                    \"key\": \"guide_word\",\n                    \"type\": \"textarea\",\n                    \"label\": \"开场白\",\n                    \"value\": \"先检索QA库中是否有类似问答，如果没有找到答案则进行文档知识库问答\",\n                    \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n                  },\n                  {\n                    \"key\": \"guide_question\",\n                    \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"引导问题\",\n                    \"value\": [\n                      \"毕昇是什么？\",\n                      \"大模型应用开发平台有哪些？\",\n                      \"\"\n                    ],\n                    \"placeholder\": \"请输入引导问题\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"全局变量\",\n                \"params\": [\n                  {\n                    \"key\": \"user_info\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"current_time\",\n                    \"type\": \"var\",\n                    \"label\": \"当前时间\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"chat_history\",\n                    \"type\": \"chat_history_num\",\n                    \"value\": 10,\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"preset_question\",\n                    \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\",\n                    \"type\": \"input_list\",\n                    \"label\": \"预置问题列表\",\n                    \"value\": [\n                      {\n                        \"key\": \"0023a4\",\n                        \"value\": \"\"\n                      }\n                    ],\n                    \"global\": \"item:input_list\",\n                    \"placeholder\": \"输入批量预置问题\"\n                  },\n                  {\n                    \"key\": \"custom_variables\",\n                    \"help\": \"true\",\n                    \"type\": \"global_var\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:input_list\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 793\n          },\n          \"position\": {\n            \"x\": -322.001475694825,\n            \"y\": -74.5314588248279\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"condition_6c261\",\n          \"data\": {\n            \"id\": \"condition_6c261\",\n            \"name\": \"条件分支\",\n            \"type\": \"condition\",\n            \"description\": \"根据条件表达式执行不同的分支。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"condition\",\n                    \"type\": \"condition\",\n                    \"label\": \"\",\n                    \"value\": [\n                      {\n                        \"id\": \"60b32025\",\n                        \"operator\": \"and\",\n                        \"conditions\": [\n                          {\n                            \"id\": \"37b199ff\",\n                            \"left_var\": \"qa_retriever_3bb15.retrieved_result\",\n                            \"left_label\": \"retrieved_result\",\n                            \"right_label\": \"\",\n                            \"right_value\": \"\",\n                            \"right_value_type\": \"input\",\n                            \"comparison_operation\": \"is_not_empty\"\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 322,\n            \"height\": 348\n          },\n          \"position\": {\n            \"x\": 1041.11058653272,\n            \"y\": -61.43751998557724\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"output_bf694\",\n          \"data\": {\n            \"v\": 2,\n            \"id\": \"output_bf694\",\n            \"name\": \"输出\",\n            \"type\": \"output\",\n            \"description\": \"可向用户发送消息，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n            \"group_params\": [\n              {\n                \"params\": [\n                  {\n                    \"key\": \"message\",\n                    \"type\": \"var_textarea_file\",\n                    \"label\": \"消息内容\",\n                    \"value\": {\n                      \"msg\": \"{{#qa_retriever_3bb15.retrieved_result#}}\",\n                      \"files\": []\n                    },\n                    \"varZh\": {\n                      \"qa_retriever_12db4.retrieved_result\": \"QA知识库检索2/retrieved_result\",\n                      \"qa_retriever_3bb15.retrieved_result\": \"QA知识库检索/retrieved_result\",\n                      \"qa_retriever_913d3.retrieval_result\": \"QA知识库检索/retrieval_result\"\n                    },\n                    \"global\": \"key\",\n                    \"required\": true,\n                    \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n                  },\n                  {\n                    \"key\": \"output_result\",\n                    \"type\": \"output_form\",\n                    \"label\": \"用户输入内容\",\n                    \"value\": {\n                      \"type\": \"\",\n                      \"value\": \"\"\n                    },\n                    \"global\": \"value.type=input\",\n                    \"options\": [],\n                    \"required\": false\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 465\n          },\n          \"position\": {\n            \"x\": 1615.0030925136334,\n            \"y\": -284.24496879143226\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"rag_01223\",\n          \"data\": {\n            \"v\": 3,\n            \"id\": \"rag_01223\",\n            \"name\": \"文档知识库问答\",\n            \"type\": \"rag\",\n            \"expand\": true,\n            \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n            \"group_params\": [\n              {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\",\n                    \"test\": \"var\",\n                    \"type\": \"user_question\",\n                    \"label\": \"用户问题\",\n                    \"value\": [\n                      \"input_46939.user_input\"\n                    ],\n                    \"varZh\": {\n                      \"input_46939.user_input\": \"输入/user_input\",\n                      \"input_eb5c4.user_input\": \"输入/user_input\"\n                    },\n                    \"global\": \"self=user_prompt\",\n                    \"linkage\": \"output_user_input\",\n                    \"required\": true,\n                    \"placeholder\": \"请选择用户问题\"\n                  },\n                  {\n                    \"key\": \"knowledge\",\n                    \"type\": \"knowledge_select_multi\",\n                    \"label\": \"检索范围\",\n                    \"value\": {\n                      \"type\": \"knowledge\",\n                      \"value\": [\n                        {\n                          \"key\": 2941,\n                          \"label\": \"230 release知识库回归\"\n                        }\n                      ]\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择知识库\"\n                  },\n                  {\n                    \"key\": \"metadata_filter\",\n                    \"type\": \"metadata_filter\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"enabled\": false\n                    }\n                  },\n                  {\n                    \"key\": \"advanced_retrieval_switch\",\n                    \"type\": \"search_switch\",\n                    \"label\": \"true\",\n                    \"value\": {\n                      \"user_auth\": false,\n                      \"rerank_flag\": false,\n                      \"rerank_model\": \"\",\n                      \"search_switch\": true,\n                      \"vector_weight\": 0.5,\n                      \"keyword_weight\": 0.5,\n                      \"max_chunk_size\": 15000\n                    }\n                  },\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"global\": \"self=user_prompt\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                  {\n                    \"key\": \"system_prompt\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"系统提示词\",\n                    \"value\": \"你是一个知识库问答助手： \\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"user_prompt\",\n                    \"test\": \"var\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"用户提示词\",\n                    \"value\": \"用户问题：{{#rag_01223.user_question#}}\\n参考文本：{{#rag_01223.retrieved_result#}}\\n你的回答：\",\n                    \"varZh\": {\n                      \"rag_01223.user_question\": \"user_question\",\n                      \"rag_01223.retrieved_result\": \"retrieved_result\"\n                    },\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"model_id\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"模型\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"请选择模型\"\n                  },\n                  {\n                    \"key\": \"temperature\",\n                    \"step\": 0.1,\n                    \"type\": \"slide\",\n                    \"label\": \"温度\",\n                    \"scope\": [\n                      0,\n                      2\n                    ],\n                    \"value\": 0.7\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"output_user\",\n                    \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\",\n                    \"type\": \"switch\",\n                    \"label\": \"将输出结果展示在会话中\",\n                    \"value\": true\n                  },\n                  {\n                    \"key\": \"output_user_input\",\n                    \"type\": \"var\",\n                    \"label\": \"输出变量\",\n                    \"value\": [\n                      {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                      }\n                    ],\n                    \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 1278\n          },\n          \"position\": {\n            \"x\": 1640.164090703263,\n            \"y\": 286.0127309008938\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"qa_retriever_3bb15\",\n          \"data\": {\n            \"id\": \"qa_retriever_3bb15\",\n            \"name\": \"QA知识库检索\",\n            \"type\": \"qa_retriever\",\n            \"expand\": true,\n            \"description\": \"从 QA 知识库中检索问题以及对应的答案。\",\n            \"group_params\": [\n              {\n                \"name\": \"检索设置\",\n                \"params\": [\n                  {\n                    \"key\": \"user_question\",\n                    \"test\": \"var\",\n                    \"type\": \"var_select\",\n                    \"label\": \"输入变量\",\n                    \"value\": \"input_46939.user_input\",\n                    \"varZh\": {\n                      \"input_46939.user_input\": \"输入/user_input\",\n                      \"input_eb5c4.user_input\": \"输入/user_input\"\n                    },\n                    \"required\": true,\n                    \"placeholder\": \"请选择检索问题\"\n                  },\n                  {\n                    \"key\": \"qa_knowledge_id\",\n                    \"type\": \"qa_select_multi\",\n                    \"label\": \"QA知识库\",\n                    \"value\": [\n                      {\n                        \"key\": 1175,\n                        \"label\": \"毕昇 QA 知识库\"\n                      }\n                    ],\n                    \"required\": true,\n                    \"placeholder\": \"请选择QA知识库\"\n                  },\n                  {\n                    \"key\": \"score\",\n                    \"help\": \"低于阈值的结果将会被过滤。\",\n                    \"step\": 0.01,\n                    \"type\": \"slide\",\n                    \"label\": \"相似度阈值\",\n                    \"scope\": [\n                      0.01,\n                      0.99\n                    ],\n                    \"value\": 0.9\n                  }\n                ]\n              },\n              {\n                \"name\": \"输出\",\n                \"params\": [\n                  {\n                    \"key\": \"retrieved_result\",\n                    \"type\": \"var\",\n                    \"label\": \"检索结果\",\n                    \"value\": \"\",\n                    \"global\": \"key\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 497\n          },\n          \"position\": {\n            \"x\": 573.66669672053,\n            \"y\": -60.24872646754291\n          },\n          \"selected\": false\n        },\n        {\n          \"id\": \"input_46939\",\n          \"data\": {\n            \"v\": \"3\",\n            \"id\": \"input_46939\",\n            \"tab\": {\n              \"value\": \"dialog_input\",\n              \"options\": [\n                {\n                  \"key\": \"dialog_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                },\n                {\n                  \"key\": \"form_input\",\n                  \"help\": \"true\",\n                  \"label\": \"true\"\n                }\n              ]\n            },\n            \"name\": \"输入\",\n            \"type\": \"input\",\n            \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n            \"group_params\": [\n              {\n                \"name\": \"接收文本\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ]\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"user_input_file\",\n                    \"tab\": \"dialog_input\",\n                    \"value\": true,\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"file_parse_mode\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_parsemode\",\n                    \"value\": \"extract_text\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_files_content_size\",\n                    \"min\": 0,\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"char_number\",\n                    \"label\": \"true\",\n                    \"value\": 15000\n                  },\n                  {\n                    \"key\": \"dialog_file_accept\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"select_fileaccept\",\n                    \"label\": \"true\",\n                    \"value\": \"all\"\n                  },\n                  {\n                    \"key\": \"dialog_image_files\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  },\n                  {\n                    \"key\": \"dialog_file_paths\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"type\": \"var\",\n                    \"label\": \"true\",\n                    \"global\": \"key\"\n                  }\n                ],\n                \"groupKey\": \"inputfile\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"recommended_questions_flag\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"label\": \"true\",\n                    \"value\": false,\n                    \"hidden\": \"true\",\n                    \"groupTitle\": true\n                  },\n                  {\n                    \"key\": \"recommended_llm\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"bisheng_model\",\n                    \"label\": \"true\",\n                    \"value\": 261,\n                    \"required\": true,\n                    \"placeholder\": \"true\"\n                  },\n                  {\n                    \"key\": \"recommended_system_prompt\",\n                    \"tab\": \"dialog_input\",\n                    \"type\": \"var_textarea\",\n                    \"label\": \"true\",\n                    \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\",\n                    \"required\": true\n                  },\n                  {\n                    \"key\": \"recommended_history_num\",\n                    \"tab\": \"dialog_input\",\n                    \"help\": \"true\",\n                    \"step\": 1,\n                    \"type\": \"slide\",\n                    \"label\": \"true\",\n                    \"scope\": [\n                      1,\n                      10\n                    ],\n                    \"value\": 2\n                  }\n                ],\n                \"groupKey\": \"custom\"\n              },\n              {\n                \"name\": \"\",\n                \"params\": [\n                  {\n                    \"key\": \"form_input\",\n                    \"tab\": \"form_input\",\n                    \"type\": \"form\",\n                    \"label\": \"true\",\n                    \"value\": [],\n                    \"global\": \"item:form_input\"\n                  }\n                ]\n              }\n            ]\n          },\n          \"type\": \"flowNode\",\n          \"dragging\": false,\n          \"measured\": {\n            \"width\": 334,\n            \"height\": 572\n          },\n          \"position\": {\n            \"x\": 143.54412024155707,\n            \"y\": -86.67644166492184\n          },\n          \"selected\": false\n        }\n      ],\n      \"viewport\": {\n        \"x\": 596.1815863554245,\n        \"y\": 166.1856841363313,\n        \"zoom\": 0.4404147755670133\n      }\n    },\n    \"order_num\": 13418353,\n    \"guide_word\": null,\n    \"flow_type\": 10\n  }\n]"
  },
  {
    "path": "src/backend/bisheng/database/models/__init__.py",
    "content": "\n"
  },
  {
    "path": "src/backend/bisheng/database/models/assistant.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional, Tuple\n\nfrom sqlalchemy import JSON, Column, DateTime, Text, and_, func, or_, text\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.role_access import AccessType, RoleAccess\nfrom bisheng.utils import generate_uuid\n\n\nclass AssistantStatus(Enum):\n    OFFLINE = 1\n    ONLINE = 2\n\n\nclass AssistantBase(SQLModelSerializable):\n    id: Optional[str] = Field(default_factory=generate_uuid, nullable=False, primary_key=True,\n                              description='Uniqueness quantificationID')\n    name: str = Field(default='', description='The assistant name.')\n    logo: str = Field(default='', description='logoimage URL')\n    desc: str = Field(default='', sa_column=Column(Text), description='Assistant description')\n    system_prompt: str = Field(default='', sa_column=Column(Text), description='System Prompt')\n    prompt: str = Field(default='', sa_column=Column(Text), description='User Visible Descriptor')\n    guide_word: Optional[str] = Field(default='', sa_column=Column(Text), description='Ice Breaker ')\n    guide_question: Optional[List] = Field(default_factory=list, sa_column=Column(JSON),\n                                           description='Facilitation Questions')\n    model_name: str = Field(default='', description='Corresponds to the only model in the model managementID')\n    temperature: float = Field(default=0.5, description='Model Temperature')\n    max_token: int = Field(default=32000, description='MaxtokenQuantity')\n    status: int = Field(default=AssistantStatus.OFFLINE.value, description='Whether the assistant is online')\n    user_id: int = Field(default=0, description='Create UserID')\n    is_delete: int = Field(default=0, description='Remove logo')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass AssistantLinkBase(SQLModelSerializable):\n    id: Optional[int] = Field(default=None, nullable=False, primary_key=True, description='Uniqueness quantificationID')\n    assistant_id: Optional[str] = Field(default=0, index=True, description='assistantID')\n    tool_id: Optional[int] = Field(default=0, index=True, description='ToolsID')\n    flow_id: Optional[str] = Field(default='', index=True, description='SkillID')\n    knowledge_id: Optional[int] = Field(default=0, index=True, description='The knowledge base uponID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Assistant(AssistantBase, table=True):\n    id: str = Field(default_factory=generate_uuid, primary_key=True, unique=True)\n\n\nclass AssistantLink(AssistantLinkBase, table=True):\n    pass\n\n\nclass AssistantDao(AssistantBase):\n\n    @classmethod\n    def create_assistant(cls, data: Assistant) -> Assistant:\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def update_assistant(cls, data: Assistant) -> Assistant:\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def delete_assistant(cls, data: Assistant) -> Assistant:\n        with get_sync_db_session() as session:\n            data.is_delete = 1\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def get_one_assistant(cls, assistant_id: str) -> Assistant:\n        with get_sync_db_session() as session:\n            statement = select(Assistant).where(Assistant.id == assistant_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_one_assistant(cls, assistant_id: str) -> Assistant:\n        statement = select(Assistant).where(Assistant.id == assistant_id)\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    def get_assistants_by_ids(cls, assistant_ids: List[str]) -> List[Assistant]:\n        if not assistant_ids:\n            return []\n        with get_sync_db_session() as session:\n            statement = select(Assistant).where(Assistant.id.in_(assistant_ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_assistants_by_ids(cls, assistant_ids: List[str]) -> List[Assistant]:\n        if not assistant_ids:\n            return []\n        statement = select(Assistant).where(col(Assistant.id).in_(assistant_ids))\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_assistant_by_name_user_id(cls, name: str, user_id: int) -> Assistant:\n        with get_sync_db_session() as session:\n            statement = select(Assistant).filter(Assistant.name == name,\n                                                 Assistant.user_id == user_id,\n                                                 Assistant.is_delete == 0)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_assistants(cls, user_id: int, name: str, assistant_ids_extra: List[str],\n                       status: Optional[int], page: int, limit: int, assistant_ids: List[str] = None) -> (\n            List[Assistant], int):\n        with get_sync_db_session() as session:\n            count_statement = session.query(func.count(\n                Assistant.id)).where(Assistant.is_delete == 0)\n            statement = select(Assistant).where(Assistant.is_delete == 0)\n            if assistant_ids_extra:\n                # Membutuhkanor Requirements to join\n                statement = statement.where(\n                    or_(Assistant.id.in_(assistant_ids_extra), Assistant.user_id == user_id))\n                count_statement = count_statement.where(\n                    or_(Assistant.id.in_(assistant_ids_extra), Assistant.user_id == user_id))\n            else:\n                statement = statement.where(Assistant.user_id == user_id)\n                count_statement = count_statement.where(Assistant.user_id == user_id)\n\n            if assistant_ids:\n                statement = statement.where(Assistant.id.in_(assistant_ids))\n                count_statement = count_statement.where(Assistant.id.in_(assistant_ids))\n\n            if name:\n                statement = statement.where(or_(\n                    Assistant.name.like(f'%{name}%'),\n                    Assistant.desc.like(f'%{name}%')\n                ))\n                count_statement = count_statement.where(or_(\n                    Assistant.name.like(f'%{name}%'),\n                    Assistant.desc.like(f'%{name}%')\n                ))\n            if status is not None:\n                statement = statement.where(Assistant.status == status)\n                count_statement = count_statement.where(Assistant.status == status)\n            if limit == 0 and page == 0:\n                # Get all, no pagination\n                statement = statement.order_by(Assistant.update_time.desc())\n            else:\n                statement = statement.offset(\n                    (page - 1) * limit).limit(limit).order_by(Assistant.update_time.desc())\n            return session.exec(statement).all(), session.exec(count_statement).scalar()\n\n    @classmethod\n    def get_all_online_assistants(cls, flow_ids: List[str]) -> List[Assistant]:\n        \"\"\" Get all live assistants \"\"\"\n        statement = select(Assistant).filter(Assistant.status == AssistantStatus.ONLINE.value,\n                                             Assistant.is_delete == 0)\n        if flow_ids:\n            statement = statement.where(Assistant.flow_id.in_(flow_ids))\n        statement = statement.order_by(Assistant.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_all_assistants(cls, name: str, page: int, limit: int, assistant_ids: List[str] = None,\n                           status: int = None) -> (List[Assistant], int):\n        with get_sync_db_session() as session:\n            statement = select(Assistant).where(Assistant.is_delete == 0)\n            count_statement = session.query(func.count(\n                Assistant.id)).where(Assistant.is_delete == 0)\n            if name:\n                statement = statement.where(or_(\n                    Assistant.name.like(f'%{name}%'),\n                    Assistant.desc.like(f'%{name}%')\n                ))\n                count_statement = count_statement.where(or_(\n                    Assistant.name.like(f'%{name}%'),\n                    Assistant.desc.like(f'%{name}%')\n                ))\n            if assistant_ids:\n                statement = statement.where(Assistant.id.in_(assistant_ids))\n                count_statement = count_statement.where(Assistant.id.in_(assistant_ids))\n            if status is not None:\n                statement = statement.where(Assistant.status == status)\n                count_statement = count_statement.where(Assistant.status == status)\n            if page and limit:\n                statement = statement.offset(\n                    (page - 1) * limit\n                ).limit(limit)\n            statement = statement.order_by(Assistant.update_time.desc())\n            return session.exec(statement).all(), session.exec(count_statement).scalar()\n\n    @classmethod\n    def get_assistants_by_access(cls, role_id: int, name: str, page_size: int,\n                                 page_num: int) -> List[Tuple[Assistant, RoleAccess]]:\n        statment = select(Assistant,\n                          RoleAccess).join(RoleAccess,\n                                           and_(RoleAccess.role_id == role_id,\n                                                RoleAccess.type == AccessType.ASSISTANT_READ.value,\n                                                RoleAccess.third_id == Assistant.id),\n                                           isouter=True).where(Assistant.is_delete == 0)\n\n        if name:\n            statment = statment.where(Assistant.name.like('%' + name + '%'))\n        if page_num and page_size and page_num != 'undefined':\n            page_num = int(page_num)\n            statment = statment.order_by(RoleAccess.type.desc()).order_by(\n                Assistant.update_time.desc()).offset((page_num - 1) * page_size).limit(page_size)\n        with get_sync_db_session() as session:\n            return session.exec(statment).all()\n\n    @classmethod\n    def get_count_by_filters(cls, filters: List) -> int:\n        with get_sync_db_session() as session:\n            count_statement = session.query(func.count(Assistant.id))\n            filters.append(Assistant.is_delete == 0)\n            return session.exec(count_statement.where(*filters)).scalar()\n\n    @classmethod\n    def filter_assistant_by_id(cls, assistant_ids: List[str], keywords: str = None, page: int = 0,\n                               limit: int = 0) -> (List[Assistant], int):\n        \"\"\"\n        Based on keywords and assistantsidFilter out corresponding assistants\n        \"\"\"\n        statement = select(Assistant).where(Assistant.is_delete == 0)\n        count_statement = select(func.count(Assistant.id)).where(Assistant.is_delete == 0)\n        if assistant_ids:\n            statement = statement.where(Assistant.id.in_(assistant_ids))\n            count_statement = count_statement.where(Assistant.id.in_(assistant_ids))\n        if keywords:\n            statement = statement.where(or_(\n                Assistant.name.like(f'%{keywords}%'),\n                Assistant.desc.like(f'%{keywords}%')\n            ))\n            count_statement = count_statement.where(or_(\n                Assistant.name.like(f'%{keywords}%'),\n                Assistant.desc.like(f'%{keywords}%')\n            ))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(Assistant.update_time.desc())\n\n        with get_sync_db_session() as session:\n            result = session.exec(statement).all()\n            return result, session.scalar(count_statement)\n\n\nclass AssistantLinkDao(AssistantLink):\n\n    @classmethod\n    def insert_batch(cls,\n                     assistant_id: str,\n                     tool_list: List[int] = None,\n                     flow_list: List[str] = None):\n        if not tool_list and not flow_list:\n            return []\n        with get_sync_db_session() as session:\n            if tool_list:\n                for one in tool_list:\n                    if one == 0:\n                        continue\n                    session.add(AssistantLink(assistant_id=assistant_id, tool_id=one))\n            if flow_list:\n                for one in flow_list:\n                    if not one:\n                        continue\n                    session.add(AssistantLink(assistant_id=assistant_id, flow_id=one))\n            session.commit()\n\n    @classmethod\n    async def get_assistant_link(cls, assistant_id: str) -> List[AssistantLink]:\n        async with get_async_db_session() as session:\n            statement = select(AssistantLink).where(AssistantLink.assistant_id == assistant_id)\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def update_assistant_tool(cls, assistant_id: str, tool_list: List[int]):\n        with get_sync_db_session() as session:\n            session.query(AssistantLink).filter(AssistantLink.assistant_id == assistant_id,\n                                                AssistantLink.tool_id != 0).delete()\n            for one in tool_list:\n                if one == 0:\n                    continue\n                session.add(AssistantLink(assistant_id=assistant_id, tool_id=one))\n            session.commit()\n\n    @classmethod\n    def update_assistant_flow(cls, assistant_id: str, flow_list: List[str]):\n        with get_sync_db_session() as session:\n            session.query(AssistantLink).filter(AssistantLink.assistant_id == assistant_id,\n                                                AssistantLink.flow_id != '',\n                                                AssistantLink.knowledge_id == 0).delete()\n            for one in flow_list:\n                if not one:\n                    continue\n                session.add(AssistantLink(assistant_id=assistant_id, flow_id=one))\n            session.commit()\n\n    @classmethod\n    def update_assistant_knowledge(cls, assistant_id: str, knowledge_list: List[int],\n                                   flow_id: str):\n        # Must have skills when saving knowledge base associationsID\n        with get_sync_db_session() as session:\n            session.query(AssistantLink).filter(AssistantLink.assistant_id == assistant_id,\n                                                AssistantLink.knowledge_id != 0).delete()\n            for one in knowledge_list:\n                if one == 0:\n                    continue\n                session.add(\n                    AssistantLink(assistant_id=assistant_id, knowledge_id=one, flow_id=flow_id))\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/audit_log.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional\n\nfrom sqlmodel import Field, select, Column, DateTime, text, Text, func, or_, JSON, and_\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.utils import generate_uuid\n\n\n# System Module Enumeration\nclass SystemId(Enum):\n    CHAT = \"chat\"  # Sessions\n    BUILD = \"build\"  # Build.\n    KNOWLEDGE = \"knowledge\"  # The knowledge base upon\n    SYSTEM = \"system\"  # System\n    DASHBOARD = \"dashboard\"  # KANBAN\n\n\n# Action Behavior Enumeration\nclass EventType(Enum):\n    CREATE_CHAT = \"create_chat\"  # New Session\n    DELETE_CHAT = \"delete_chat\"  # Delete Thread\n\n    CREATE_BUILD = \"create_build\"  # New App\n    UPDATE_BUILD = \"update_build\"  # Edit App Page\n    DELETE_BUILD = \"delete_build\"  # Delete App?\n\n    CREATE_KNOWLEDGE = \"create_knowledge\"  # New Knowledge Base\n    DELETE_KNOWLEDGE = \"delete_knowledge\"  # Delete Knowledge Base\n    UPLOAD_FILE = \"upload_file\"  # Knowledge Base Upload Files\n    DELETE_FILE = \"delete_file\"  # Knowledge Base Delete File\n\n    UPDATE_USER = \"update_user\"  # Edit account\n    FORBID_USER = \"forbid_user\"  # Deactivate user\n    RECOVER_USER = \"recover_user\"  # Enable User\n    CREATE_USER_GROUP = \"create_user_group\"  # Add Usergroup\n    DELETE_USER_GROUP = \"delete_user_group\"  # Can delete existing usergroups\n    UPDATE_USER_GROUP = \"update_user_group\"  # Can edit existing usergroups\n    CREATE_ROLE = \"create_role\"  # Create a Role\n    DELETE_ROLE = \"delete_role\"  # Delete a Role\n    UPDATE_ROLE = \"update_role\"  # Edit a Role\n\n    ADD_TOOL = \"add_tool\"  # Add Widget\n    UPDATE_TOOL = \"update_tool\"\n    DELETE_TOOL = \"delete_tool\"\n\n    USER_LOGIN = \"user_login\"  # Login Pengguna\n\n    CREATE_DASHBOARD = \"create_dashboard\"\n    UPDATE_DASHBOARD = \"update_dashboard\"\n    DELETE_DASHBOARD = \"delete_dashboard\"\n\n\n# Action object type enumeration\nclass ObjectType(Enum):\n    NONE = \"none\"  # W/O\n    FLOW = \"flow\"  # Skill\n    WORK_FLOW = \"work_flow\"  # The Workflow\n    ASSISTANT = \"assistant\"  # assistant\n    WORKSTATION = \"workstation\"  # Workstation\n    KNOWLEDGE = \"knowledge\"  # The knowledge base upon\n    FILE = \"file\"  # Doc.\n    USER_CONF = \"user_conf\"  # User Configuration\n    USER_GROUP_CONF = \"user_group_conf\"  # User Group Configuration\n    ROLE_CONF = \"role_conf\"  # Configuration of user roles\n    TOOL = \"tool\"\n    DASHBOARD = \"dashboard\"  # KANBAN\n\n\nclass AuditLogBase(SQLModelSerializable):\n    \"\"\"\n    Audit Log Table\n    \"\"\"\n    operator_id: int = Field(index=True, description=\"Operating User'sID\")\n    operator_name: Optional[str] = Field(description=\"Username\")\n    group_ids: Optional[List[int | str]] = Field(sa_column=Column(JSON),\n                                                 description=\"Belongs to a user groupIDVertical\")\n    system_id: Optional[str] = Field(index=True, description=\"Module Item\")\n    event_type: Optional[str] = Field(index=True, description=\"Operation behaviors\")\n    object_type: Optional[str] = Field(index=True, description=\"Action object type\")\n    object_id: Optional[str] = Field(index=True, description=\"Operation ObjectID\")\n    object_name: Optional[str] = Field(sa_column=Column(Text), description=\"Action object name\")\n    note: Optional[str] = Field(sa_column=Column(Text), description=\"Action notes\")\n    ip_address: Optional[str] = Field(index=True,\n                                      description=\"Client's at time of operationIP<g id='Bold'>Address:</g>\")\n    create_time: Optional[datetime] = Field(sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')), description=\"operate time\")\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass AuditLog(AuditLogBase, table=True):\n    # id = 2 Represents the default user group\n    id: str = Field(default_factory=generate_uuid, primary_key=True, index=True, description=\"primary keyuuidFormat\")\n\n\nclass AuditLogDao(AuditLogBase):\n\n    @classmethod\n    async def get_audit_logs(cls, group_ids: List[int], operator_ids: List[int] = 0,\n                             start_time: datetime = None,\n                             end_time: datetime = None, system_id: str = None, event_type: str = None,\n                             page: int = 0, limit: int = 0) -> (List[AuditLog], int):\n        \"\"\"\n        Filter logs by user group\n        \"\"\"\n        statement = select(AuditLog)\n        count_statement = select(func.count(AuditLog.id))\n        if group_ids:\n            group_filters = []\n            for one in group_ids:\n                group_filters.append(func.json_contains(AuditLog.group_ids, str(one)))\n\n            statement = statement.where(or_(*group_filters))\n            count_statement = count_statement.where(or_(*group_filters))\n        if operator_ids:\n            statement = statement.where(AuditLog.operator_id.in_(operator_ids))\n            count_statement = count_statement.where(AuditLog.operator_id.in_(operator_ids))\n        if start_time:\n            statement = statement.where(AuditLog.create_time >= start_time)\n            count_statement = count_statement.where(AuditLog.create_time >= start_time)\n        if end_time:\n            statement = statement.where(AuditLog.create_time <= end_time)\n            count_statement = count_statement.where(AuditLog.create_time <= end_time)\n        if system_id:\n            statement = statement.where(AuditLog.system_id == system_id)\n            count_statement = count_statement.where(AuditLog.system_id == system_id)\n        if event_type:\n            statement = statement.where(AuditLog.event_type == event_type)\n            count_statement = count_statement.where(AuditLog.event_type == event_type)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit).order_by(AuditLog.create_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all(), session.scalar(count_statement)\n\n    @classmethod\n    def insert_audit_logs(cls, audit_logs: List[AuditLog]):\n        with get_sync_db_session() as session:\n            session.add_all(audit_logs)\n            session.commit()\n\n    @classmethod\n    async def ainsert_audit_logs(cls, audit_logs: List[AuditLog]):\n        async with get_async_db_session() as session:\n            session.add_all(audit_logs)\n            await session.commit()\n\n    @classmethod\n    def get_all_operators(cls, group_ids: List[int]):\n        statement = select(AuditLog.operator_id, AuditLog.operator_name).distinct()\n        if group_ids:\n            group_filters = []\n            for one in group_ids:\n                group_filters.append(func.json_contains(AuditLog.group_ids, str(one)))\n            statement = statement.where(or_(*group_filters))\n\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/component.py",
    "content": "from datetime import datetime\nfrom typing import Any, List, Optional\n\nfrom sqlmodel import JSON, Column, DateTime, Field, select, text\n\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.utils import generate_uuid\n\n\nclass ComponentBase(SQLModelSerializable):\n    name: str = Field(max_length=50, index=True, description='Saved Component Name')\n    description: Optional[str] = Field(default='', description='DESCRIPTION')\n    data: Optional[Any] = Field(default=None, description='Component Data')\n    version: str = Field(default='', index=True, description='Component Revision')\n    user_id: int = Field(default=None, index=True, description='creatorID')\n    user_name: str = Field(default=None, description='creatorName')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Component(ComponentBase, table=True):\n    id: str = Field(default_factory=generate_uuid, primary_key=True, unique=True)\n    data: Optional[Any] = Field(default=None, sa_column=Column(JSON))\n\n\nclass ComponentDao(ComponentBase):\n\n    @classmethod\n    def get_user_components(cls, user_id: int) -> List[Component]:\n        with get_sync_db_session() as session:\n            statement = select(Component).where(\n                Component.user_id == user_id\n            ).order_by(Component.create_time.desc())\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_component_by_name(cls, user_id: int, name: str) -> Component | None:\n        with get_sync_db_session() as session:\n            statement = select(Component).where(Component.user_id == user_id, Component.name == name)\n            return session.exec(statement).first()\n\n    @classmethod\n    def insert_component(cls, component: Component) -> Component:\n        with get_sync_db_session() as session:\n            session.add(component)\n            session.commit()\n            session.refresh(component)\n            return component\n\n    @classmethod\n    def update_component(cls, component: Component) -> Component:\n        with get_sync_db_session() as session:\n            session.add(component)\n            session.commit()\n            session.refresh(component)\n            return component\n\n    @classmethod\n    def delete_component(cls, component: Component) -> Component:\n        with get_sync_db_session() as session:\n            session.delete(component)\n            session.commit()\n            return component\n"
  },
  {
    "path": "src/backend/bisheng/database/models/dataset.py",
    "content": "from datetime import datetime\nfrom typing import Any, List, Optional\n\nfrom sqlalchemy import Column, DateTime, delete, text\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass DatasetBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(index=True, description='Create Userid')\n    name: str = Field(index=True, description='Dataset Name')\n    type: str = Field(index=False, default=0, description='Reserved Fields')\n    description: Optional[str] = Field(default=None, index=False, description='Dataset description')\n    object_name: Optional[str] = Field(default=None, index=False, description='data setS3Part Name')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Dataset(DatasetBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass DatasetCreate(DatasetBase):\n    pass\n\n\nclass DatasetRead(DatasetBase):\n    user_name: Optional[str]\n    url: Optional[str]\n\n\nclass DatasetUpdate(DatasetBase):\n    pass\n\n\nclass DatasetDao(DatasetBase):\n\n    @classmethod\n    def filter_dataset_by_ids(cls,\n                              dataset_ids: List[int],\n                              keyword: str = None,\n                              page: int = 0,\n                              limit: int = 0) -> List[Dataset]:\n        with get_sync_db_session() as session:\n            query = select(Dataset)\n            if dataset_ids:\n                query = query.where(Dataset.id.in_(dataset_ids))\n            if keyword:\n                query = query.where(Dataset.name.like(f'%{keyword}%'))\n            if page and limit:\n                query = query.order_by(Dataset.update_time.desc()).offset(\n                    (page - 1) * limit).limit(limit)\n\n            return session.exec(query).all()\n\n    @classmethod\n    def get_count_by_filter(cls, filters: List[Any]) -> int:\n        with get_sync_db_session() as session:\n            return session.scalar(select(Dataset.id).where(*filters))\n\n    @classmethod\n    def insert(cls, dataset: DatasetCreate):\n        with get_sync_db_session() as session:\n            db_insert = Dataset.validate(dataset)\n            session.add(db_insert)\n            session.commit()\n            session.refresh(db_insert)\n            return db_insert\n\n    @classmethod\n    def get_dataset_by_name(cls, name: str):\n        with get_sync_db_session() as session:\n            return session.exec(select(Dataset).where(Dataset.name == name)).all()\n\n    @classmethod\n    def update(cls, data: Dataset):\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def delete(cls, dataset_id: int):\n        with get_sync_db_session() as session:\n            session.exec(delete(Dataset).where(Dataset.id == dataset_id))\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/evaluation.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional, Dict\n\nfrom sqlalchemy import Column, DateTime, Text, text, func, and_, JSON\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass ExecType(Enum):\n    FLOW = 'flow'\n    ASSISTANT = 'assistant'\n    WORKFLOW = 'workflow'\n\n\nclass EvaluationTaskStatus(Enum):\n    running = 1\n    failed = 2\n    success = 3\n\n\nclass EvaluationBase(SQLModelSerializable):\n    user_id: int = Field(default=None, index=True)\n    file_name: str = Field(default='', description='Uploaded filename')\n    file_path: str = Field(default='', description='Doc. minio <g id=\"Bold\">Address:</g>')\n    exec_type: str = Field(description='Execute subject categories. Assistants, Skills, Workflows, ReferenceExecTypeEnum')\n    unique_id: str = Field(index=True, description='Unique to the executing entityID')\n    version: Optional[int] = Field(default=None, description='Version of workflow or skillID')\n    status: int = Field(index=True, default=1, description='Task Execution Status: 1:Executing \"{0}\" 2: execute fail 3:execute success')\n    prompt: str = Field(default='', sa_column=Column(Text), description='Evaluation Instruction Text')\n    result_file_path: str = Field(default='', description='of the assessment results minio <g id=\"Bold\">Address:</g>')\n    result_score: Optional[Dict | str] = Field(default=None, sa_column=Column(JSON), description='Final Assessment Score')\n    description: str = Field(default='', sa_column=Column(Text), description='Error description information')\n    is_delete: int = Field(default=0, description='whether delete')\n    create_time: Optional[datetime] = Field(default=None,\n                                            sa_column=Column(DateTime, nullable=False,\n                                                             server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Evaluation(EvaluationBase, table=True):\n    id: int = Field(default=None, primary_key=True, unique=True)\n\n\nclass EvaluationRead(EvaluationBase):\n    id: int\n    user_name: Optional[str] = None\n\n\nclass EvaluationCreate(EvaluationBase):\n    pass\n\n\nclass EvaluationDao(EvaluationBase):\n    @classmethod\n    def get_my_evaluations(cls, user_id: int, page: int, limit: int) -> (List[Evaluation], int):\n        with get_sync_db_session() as session:\n            statement = select(Evaluation).where(and_(Evaluation.is_delete == 0, Evaluation.user_id == user_id))\n            count_statement = session.query(func.count(\n                Evaluation.id)).where(and_(Evaluation.is_delete == 0, Evaluation.user_id == user_id))\n            statement = statement.offset(\n                (page - 1) * limit\n            ).limit(limit).order_by(\n                Evaluation.update_time.desc()\n            )\n            return session.exec(statement).all(), session.exec(count_statement).scalar()\n\n    @classmethod\n    def delete_evaluation(cls, data: Evaluation) -> Evaluation:\n        with get_sync_db_session() as session:\n            data.is_delete = 1\n            session.add(data)\n            session.commit()\n            return data\n\n    @classmethod\n    def get_user_one_evaluation(cls, user_id: int, evaluation_id: int) -> Evaluation:\n        with get_sync_db_session() as session:\n            statement = select(Evaluation).where(and_(Evaluation.id == evaluation_id, Evaluation.user_id == user_id))\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_one_evaluation(cls, evaluation_id: int) -> Evaluation:\n        with get_sync_db_session() as session:\n            statement = select(Evaluation).where(Evaluation.id == evaluation_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def update_evaluation(cls, evaluation: Evaluation) -> Evaluation:\n        with get_sync_db_session() as session:\n            session.add(evaluation)\n            session.commit()\n            session.refresh(evaluation)\n            return evaluation\n"
  },
  {
    "path": "src/backend/bisheng/database/models/flow.py",
    "content": "# Path: src/backend/bisheng/database/models/flow.py\n\nfrom datetime import datetime\nfrom enum import Enum\nfrom typing import Dict, List, Optional, Tuple, Union\n\nfrom pydantic import field_validator\nfrom sqlalchemy import Column, DateTime, String, and_, func, or_, text\nfrom sqlmodel import JSON, Field, select, update, col\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewApplicationEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.assistant import Assistant\nfrom bisheng.database.models.role_access import AccessType, RoleAccess, RoleAccessDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.utils import generate_uuid\n\n\n# if TYPE_CHECKING:\n\n\nclass FlowStatus(Enum):\n    OFFLINE = 1\n    ONLINE = 2\n\n\nclass FlowType(Enum):\n    FLOW = 1\n    ASSISTANT = 5\n    WORKFLOW = 10\n    WORKSTATION = 15\n    LINSIGHT = 20  # Inspiration Mode\n\n\nclass AppEnum(Enum):\n    Flow = 'flow'\n    ASSISTANT = 'assistant'\n    WORKFLOW = 'workflow'\n\n\nclass UserLinkType(Enum):\n    app = AppEnum\n\n\nclass FlowBase(SQLModelSerializable):\n    name: str = Field(index=True)\n    user_id: Optional[int] = Field(default=None, index=True)\n    description: Optional[str] = Field(default=None, sa_column=Column(String(length=1000)))\n    data: Optional[Dict] = Field(default=None)\n    logo: Optional[str] = Field(default=None, index=False)\n    status: Optional[int] = Field(index=False, default=1)\n    flow_type: Optional[int] = Field(index=False, default=1)\n    guide_word: Optional[str] = Field(default=None, sa_column=Column(String(length=1000)))\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('data', mode='before')\n    @classmethod\n    def validate_json(cls, v):\n        if not v:\n            return v\n        if not isinstance(v, dict):\n            raise ValueError('Flow must be a valid JSON')\n\n        # data must contain nodes and edges\n        if 'nodes' not in v.keys():\n            raise ValueError('Flow must have nodes')\n        if 'edges' not in v.keys():\n            raise ValueError('Flow must have edges')\n\n        return v\n\n\nclass Flow(FlowBase, table=True):\n    id: str = Field(default_factory=generate_uuid, primary_key=True, unique=True)\n    data: Optional[Dict] = Field(default=None, sa_column=Column(JSON))\n\n\nclass FlowCreate(FlowBase):\n    flow_id: Optional[str] = None\n\n\nclass FlowRead(FlowBase):\n    id: str\n    user_name: Optional[str] = None\n    version_id: Optional[int] = None\n\n\nclass FlowReadWithStyle(FlowRead):\n    # style: Optional['FlowStyleRead'] = None\n    total: Optional[int] = None\n\n\nclass FlowUpdate(SQLModelSerializable):\n    name: Optional[str] = None\n    logo: Optional[str] = None\n    description: Optional[str] = None\n    data: Optional[Dict] = None\n    status: Optional[int] = None\n    guide_word: Optional[str] = None\n\n\nclass FlowDao(FlowBase):\n\n    @classmethod\n    def create_flow(cls, flow_info: Flow, flow_type: Optional[int]) -> Flow:\n        from bisheng.database.models.flow_version import FlowVersion\n        with get_sync_db_session() as session:\n            session.add(flow_info)\n            # Create a default version\n            flow_version = FlowVersion(name='v0',\n                                       is_current=1,\n                                       data=flow_info.data,\n                                       flow_id=flow_info.id,\n                                       create_time=datetime.now(),\n                                       user_id=flow_info.user_id,\n                                       flow_type=flow_type)\n            session.add(flow_version)\n            session.commit()\n            session.refresh(flow_info)\n\n            if flow_type == FlowType.FLOW.value:\n                app_type = ApplicationTypeEnum.SKILL\n            elif flow_type == FlowType.WORKFLOW.value:\n                app_type = ApplicationTypeEnum.WORKFLOW\n            elif flow_type == FlowType.ASSISTANT.value:\n                app_type = ApplicationTypeEnum.ASSISTANT\n            elif flow_type == FlowType.LINSIGHT.value:\n                app_type = ApplicationTypeEnum.LINSIGHT\n            else:\n                app_type = ApplicationTypeEnum.DAILY_CHAT\n\n            # RecordTelemetryJournal\n            telemetry_service.log_event_sync(user_id=flow_info.user_id,\n                                             event_type=BaseTelemetryTypeEnum.NEW_APPLICATION,\n                                             trace_id=trace_id_var.get(),\n                                             event_data=NewApplicationEventData(\n                                                 app_id=flow_info.id,\n                                                 app_name=flow_info.name,\n                                                 app_type=app_type.value\n                                             ))\n\n            return flow_info\n\n    @classmethod\n    def delete_flow(cls, flow_info: Flow) -> Flow:\n        from bisheng.database.models.flow_version import FlowVersion\n        with get_sync_db_session() as session:\n            session.delete(flow_info)\n            # Delete the corresponding version information\n            update_statement = update(FlowVersion).where(\n                FlowVersion.flow_id == flow_info.id).values(is_delete=1)\n            session.exec(update_statement)\n            session.commit()\n            return flow_info\n\n    @classmethod\n    def get_flow_by_id(cls, flow_id: str) -> Optional[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.id == flow_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_flow_by_id(cls, flow_id: str) -> Optional[Flow]:\n        async with get_async_db_session() as session:\n            statement = select(Flow).where(Flow.id == flow_id)\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_flow_by_idstr(cls, flow_id: str) -> Optional[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.id == flow_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_flow_by_ids(cls, flow_ids: List[str]) -> List[Flow]:\n        if not flow_ids:\n            return []\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.id.in_(flow_ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_flow_by_ids(cls, flow_ids: List[str]) -> List[Flow]:\n        if not flow_ids:\n            return []\n        async with get_async_db_session() as session:\n            statement = select(Flow).where(col(Flow.id).in_(flow_ids))\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_flow_by_user(cls, user_id: int) -> List[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.user_id == user_id)\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_flow_by_name(cls, user_id: int, name: str) -> Optional[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.user_id == user_id, Flow.name == name)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_flow_list_by_name(cls, name: str) -> List[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow).where(Flow.name.like('%{}%'.format(name)))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_flow_by_access(cls, role_id: int, name: str, page_size: int,\n                           page_num: int) -> List[Tuple[Flow, RoleAccess]]:\n        statment = select(Flow, RoleAccess).join(RoleAccess,\n                                                 and_(RoleAccess.role_id == role_id,\n                                                      RoleAccess.type == AccessType.FLOW.value,\n                                                      RoleAccess.third_id == Flow.id),\n                                                 isouter=True)\n\n        if name:\n            statment = statment.where(Flow.name.like('%' + name + '%'))\n        if page_num and page_size and page_num != 'undefined':\n            page_num = int(page_num)\n            statment = statment.order_by(RoleAccess.type.desc()).order_by(\n                Flow.update_time.desc()).offset((page_num - 1) * page_size).limit(page_size)\n        with get_sync_db_session() as session:\n            return session.exec(statment).all()\n\n    @classmethod\n    def get_count_by_filters(cls, filters) -> int:\n        with get_sync_db_session() as session:\n            count_statement = session.query(func.count(Flow.id))\n            return session.exec(count_statement.where(*filters)).scalar()\n\n    @classmethod\n    def get_flows(cls,\n                  user_id: Optional[int],\n                  extra_ids: Union[List[str], str],\n                  name: str,\n                  status: Optional[int] = None,\n                  flow_ids: List[str] = None,\n                  page: int = 0,\n                  limit: int = 0,\n                  flow_type: Optional[int] = None) -> List[Flow]:\n        with get_sync_db_session() as session:\n            # data The amount of data is too large, yesmysql Influential\n            statement = select(Flow.id, Flow.user_id, Flow.name, Flow.status, Flow.create_time,\n                               Flow.logo, Flow.update_time, Flow.description, Flow.guide_word,\n                               Flow.flow_type)\n            if extra_ids and isinstance(extra_ids, List):\n                statement = statement.where(or_(Flow.id.in_(extra_ids), Flow.user_id == user_id))\n            elif not extra_ids:\n                statement = statement.where(Flow.user_id == user_id)\n            if name:\n                statement = statement.where(\n                    or_(Flow.name.like(f'%{name}%'), Flow.description.like(f'%{name}%')))\n            if status is not None:\n                statement = statement.where(Flow.status == status)\n            if flow_type is not None:\n                statement = statement.where(Flow.flow_type == flow_type)\n            if flow_ids:\n                statement = statement.where(Flow.id.in_(flow_ids))\n            statement = statement.order_by(Flow.update_time.desc())\n            if page > 0 and limit > 0:\n                statement = statement.offset((page - 1) * limit).limit(limit)\n            flows = session.exec(statement)\n            flows_partial = flows.mappings().all()\n            return [Flow.model_validate(f) for f in flows_partial]\n\n    @classmethod\n    def count_flows(cls,\n                    user_id: Optional[int],\n                    extra_ids: Union[List[str], str],\n                    name: str,\n                    status: Optional[int] = None,\n                    flow_ids: List[str] = None,\n                    flow_type: Optional[int] = None) -> int:\n        with get_sync_db_session() as session:\n            count_statement = session.query(func.count(Flow.id))\n            if extra_ids and isinstance(extra_ids, List):\n                count_statement = count_statement.filter(\n                    or_(Flow.id.in_(extra_ids), Flow.user_id == user_id))\n            elif not extra_ids:\n                count_statement = count_statement.filter(Flow.user_id == user_id)\n            if name:\n                count_statement = count_statement.filter(\n                    or_(Flow.name.like(f'%{name}%'), Flow.description.like(f'%{name}%')))\n            if flow_type is not None:\n                count_statement = count_statement.where(Flow.flow_type == flow_type)\n            if flow_ids:\n                count_statement = count_statement.filter(Flow.id.in_(flow_ids))\n            if status is not None:\n                count_statement = count_statement.filter(Flow.status == status)\n            return count_statement.scalar()\n\n    @classmethod\n    def get_all_online_flows(cls,\n                             keyword: str = None,\n                             flow_ids: List[str] = None,\n                             flow_type: int = FlowType.FLOW.value) -> List[Flow]:\n        with get_sync_db_session() as session:\n            statement = select(Flow.id, Flow.user_id, Flow.name, Flow.status, Flow.create_time,\n                               Flow.logo, Flow.update_time, Flow.description,\n                               Flow.guide_word).where(Flow.status == FlowStatus.ONLINE.value)\n            if flow_ids:\n                statement = statement.where(Flow.id.in_(flow_ids))\n            if keyword:\n                statement = statement.where(\n                    or_(Flow.name.like(f'%{keyword}%'), Flow.description.like(f'%{keyword}%')))\n            result = session.exec(statement).mappings().all()\n            return [Flow.model_validate(f) for f in result]\n\n    @classmethod\n    def get_user_access_online_flows(cls,\n                                     user_id: int,\n                                     page: int = 0,\n                                     limit: int = 0,\n                                     keyword: str = None,\n                                     flow_ids: List[str] = None,\n                                     flow_type: int = FlowType.FLOW.value) -> List[Flow]:\n        user_role = UserRoleDao.get_user_roles(user_id)\n        flow_id_extra = []\n        if user_role:\n            role_ids = [role.role_id for role in user_role]\n            if 1 in role_ids:\n                # admin\n                flow_id_extra = 'admin'\n            else:\n                role_access = RoleAccessDao.get_role_access(role_ids, AccessType.FLOW)\n                if role_access:\n                    flow_id_extra = [access.third_id for access in role_access]\n        return FlowDao.get_flows(user_id,\n                                 flow_id_extra,\n                                 keyword,\n                                 FlowStatus.ONLINE.value,\n                                 flow_ids=flow_ids,\n                                 page=page,\n                                 limit=limit,\n                                 flow_type=flow_type)\n\n    @classmethod\n    def filter_flows_by_ids(cls, flow_ids: List[str], keyword: str = None,\n                            page: int = 0, limit: int = 0, flow_type: int = FlowType.FLOW.value) \\\n            -> (List[Flow], int):\n        \"\"\"\n        Via SkillsIDFilter the list of skills by returning only brief information and not includingdata\n        \"\"\"\n        statement = select(Flow.id, Flow.user_id, Flow.name, Flow.status, Flow.create_time,\n                           Flow.update_time, Flow.description, Flow.guide_word)\n        count_statement = select(func.count(Flow.id))\n        if flow_ids:\n            statement = statement.where(Flow.id.in_(flow_ids))\n            count_statement = count_statement.where(Flow.id.in_(flow_ids))\n        if keyword:\n            statement = statement.where(\n                or_(Flow.name.like(f'%{keyword}%'), Flow.description.like(f'%{keyword}%')))\n            count_statement = count_statement.where(\n                or_(Flow.name.like(f'%{keyword}%'), Flow.description.like(f'%{keyword}%')))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.where(Flow.flow_type == flow_type)\n        statement = statement.order_by(Flow.update_time.desc())\n        with get_sync_db_session() as session:\n            result = session.exec(statement).mappings().all()\n            return [Flow.model_validate(f) for f in result], session.scalar(count_statement)\n\n    @classmethod\n    def update_flow(cls, flow: Flow) -> Flow:\n        with get_sync_db_session() as session:\n            session.add(flow)\n            session.commit()\n            session.refresh(flow)\n        return flow\n\n    @classmethod\n    async def aupdate_flow(cls, flow: Flow) -> Flow:\n        async with get_async_db_session() as session:\n            session.add(flow)\n            await session.commit()\n            await session.refresh(flow)\n        return flow\n\n    @classmethod\n    def get_all_apps(cls,\n                     name: str = None,\n                     status: int = None,\n                     id_list: list = None,\n                     flow_type: int = None,\n                     user_id: int = None,\n                     id_extra: list = None,\n                     id_list_not_in: list = None,\n                     page: int = 0,\n                     limit: int = 0) -> (List[Dict], int):\n        \"\"\" Get all apps Contains skills, assistants, workflows \"\"\"\n        sub_query = select(\n            Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n            Flow.status, Flow.create_time, Flow.update_time).union_all(\n            select(Assistant.id, Assistant.name, Assistant.desc, FlowType.ASSISTANT.value,\n                   Assistant.logo, Assistant.user_id, Assistant.status, Assistant.create_time,\n                   Assistant.update_time).where(Assistant.is_delete == 0)).subquery()\n\n        statement = select(sub_query.c.id, sub_query.c.name, sub_query.c.description,\n                           sub_query.c.flow_type, sub_query.c.logo, sub_query.c.user_id,\n                           sub_query.c.status, sub_query.c.create_time, sub_query.c.update_time)\n        count_statement = select(func.count(sub_query.c.id))\n        if name:\n            statement = statement.where(sub_query.c.name.like(f'%{name}%'))\n            count_statement = count_statement.where(sub_query.c.name.like(f'%{name}%'))\n        if status is not None:\n            statement = statement.where(sub_query.c.status == status)\n            count_statement = count_statement.where(sub_query.c.status == status)\n        if id_list:\n            statement = statement.where(sub_query.c.id.in_(id_list))\n            count_statement = count_statement.where(sub_query.c.id.in_(id_list))\n        if flow_type is not None:\n            statement = statement.where(sub_query.c.flow_type == flow_type)\n            count_statement = count_statement.where(sub_query.c.flow_type == flow_type)\n        if user_id is not None:\n            if id_extra:\n                statement = statement.where(\n                    or_(sub_query.c.user_id == user_id, sub_query.c.id.in_(id_extra)))\n                count_statement = count_statement.where(\n                    or_(sub_query.c.user_id == user_id, sub_query.c.id.in_(id_extra)))\n            else:\n                statement = statement.where(sub_query.c.user_id == user_id)\n                count_statement = count_statement.where(sub_query.c.user_id == user_id)\n        if id_list_not_in:\n            statement = statement.where(~sub_query.c.id.in_(id_list_not_in))\n            count_statement = count_statement.where(~sub_query.c.id.in_(id_list_not_in))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(sub_query.c.update_time.desc())\n        with (get_sync_db_session() as session):\n            ret = session.exec(statement).all()\n            total = session.scalar(count_statement)\n        data = []\n        for one in ret:\n            data.append({\n                'id': one[0],\n                'name': one[1],\n                'description': one[2],\n                'flow_type': one[3],\n                'logo': one[4],\n                'user_id': one[5],\n                'status': one[6],\n                'create_time': one[7],\n                'update_time': one[8]\n            })\n        return data, total\n\n    @classmethod\n    async def aget_all_apps(cls,\n                            name: str = None,\n                            status: int = None,\n                            id_list: list = None,\n                            flow_type: int = None,\n                            user_id: int = None,\n                            id_extra: list = None,\n                            id_list_not_in: list = None,\n                            page: int = 0,\n                            limit: int = 0) -> (List[Dict], int):\n        \"\"\"\n        Get all apps Contains skills, assistants, workflows\n        Args:\n            name:\n            status:\n            id_list:\n            flow_type:\n            user_id:\n            id_extra:\n            id_list_not_in:\n            page:\n            limit:\n\n        Returns:\n            (List[Dict], int)\n        \"\"\"\n        sub_query = select(\n            Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n            Flow.status, Flow.create_time, Flow.update_time).union_all(\n            select(Assistant.id, Assistant.name, Assistant.desc, FlowType.ASSISTANT.value,\n                   Assistant.logo, Assistant.user_id, Assistant.status, Assistant.create_time,\n                   Assistant.update_time).where(Assistant.is_delete == 0)).subquery()\n\n        statement = select(sub_query.c.id, sub_query.c.name, sub_query.c.description,\n                           sub_query.c.flow_type, sub_query.c.logo, sub_query.c.user_id,\n                           sub_query.c.status, sub_query.c.create_time, sub_query.c.update_time)\n        count_statement = select(func.count(sub_query.c.id))\n        if name:\n            statement = statement.where(sub_query.c.name.like(f'%{name}%'))\n            count_statement = count_statement.where(sub_query.c.name.like(f'%{name}%'))\n        if status is not None:\n            statement = statement.where(sub_query.c.status == status)\n            count_statement = count_statement.where(sub_query.c.status == status)\n        if id_list:\n            statement = statement.where(sub_query.c.id.in_(id_list))\n            count_statement = count_statement.where(sub_query.c.id.in_(id_list))\n        if flow_type is not None:\n            statement = statement.where(sub_query.c.flow_type == flow_type)\n            count_statement = count_statement.where(sub_query.c.flow_type == flow_type)\n        if user_id is not None:\n            if id_extra:\n                statement = statement.where(\n                    or_(sub_query.c.user_id == user_id, sub_query.c.id.in_(id_extra)))\n                count_statement = count_statement.where(\n                    or_(sub_query.c.user_id == user_id, sub_query.c.id.in_(id_extra)))\n            else:\n                statement = statement.where(sub_query.c.user_id == user_id)\n                count_statement = count_statement.where(sub_query.c.user_id == user_id)\n        if id_list_not_in:\n            statement = statement.where(~sub_query.c.id.in_(id_list_not_in))\n            count_statement = count_statement.where(~sub_query.c.id.in_(id_list_not_in))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(sub_query.c.update_time.desc())\n\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            ret = result.all()\n            total_result = await session.exec(count_statement)\n            total = total_result.first()\n        data = []\n        for one in ret:\n            data.append({\n                'id': one[0],\n                'name': one[1],\n                'description': one[2],\n                'flow_type': one[3],\n                'logo': one[4],\n                'user_id': one[5],\n                'status': one[6],\n                'create_time': one[7],\n                'update_time': one[8]\n            })\n        return data, total\n\n    @classmethod\n    async def get_one_flow_simple(cls, flow_id: str) -> Optional[Flow]:\n        \"\"\" get simple info of one flow by id. not contain data field \"\"\"\n        statement = select(Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n                           Flow.status, Flow.create_time, Flow.update_time).where(Flow.id == flow_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            one = result.first()\n            if not one:\n                return None\n            return Flow(**{\n                'id': one[0],\n                'name': one[1],\n                'description': one[2],\n                'flow_type': one[3],\n                'logo': one[4],\n                'user_id': one[5],\n                'status': one[6],\n                'create_time': one[7],\n                'update_time': one[8]\n            })\n\n    @classmethod\n    def get_one_flow_simple_sync(cls, flow_id: str) -> Optional[Flow]:\n        \"\"\" get simple info of one flow by id. not contain data field \"\"\"\n        statement = select(Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n                           Flow.status, Flow.create_time, Flow.update_time).where(Flow.id == flow_id)\n        with get_sync_db_session() as session:\n            result = session.exec(statement)\n            one = result.first()\n            if not one:\n                return None\n            return Flow(**{\n                'id': one[0],\n                'name': one[1],\n                'description': one[2],\n                'flow_type': one[3],\n                'logo': one[4],\n                'user_id': one[5],\n                'status': one[6],\n                'create_time': one[7],\n                'update_time': one[8]\n            })\n\n    @classmethod\n    def get_all_app_by_time_range_sync(cls, start_time: datetime, end_time: datetime, page: int = 0,\n                                       page_size: int = 0):\n        sub_query = select(\n            Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n            Flow.status, Flow.create_time, Flow.update_time).union_all(\n            select(Assistant.id, Assistant.name, Assistant.desc, FlowType.ASSISTANT.value,\n                   Assistant.logo, Assistant.user_id, Assistant.status, Assistant.create_time,\n                   Assistant.update_time).where(Assistant.is_delete == 0)).subquery()\n\n        statement = select(sub_query.c.id, sub_query.c.name, sub_query.c.description,\n                           sub_query.c.flow_type, sub_query.c.logo, sub_query.c.user_id,\n                           sub_query.c.status, sub_query.c.create_time, sub_query.c.update_time)\n        statement = statement.where(and_(sub_query.c.create_time >= start_time,\n                                         sub_query.c.create_time < end_time))\n        if page and page_size:\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n        with get_sync_db_session() as session:\n            result = session.exec(statement).all()\n            data = []\n            for one in result:\n                data.append({\n                    'id': one[0],\n                    'name': one[1],\n                    'description': one[2],\n                    'flow_type': one[3],\n                    'logo': one[4],\n                    'user_id': one[5],\n                    'status': one[6],\n                    'create_time': one[7],\n                    'update_time': one[8]\n                })\n            return data\n\n    @classmethod\n    def get_first_app(cls):\n        sub_query = select(\n            Flow.id, Flow.name, Flow.description, Flow.flow_type, Flow.logo, Flow.user_id,\n            Flow.status, Flow.create_time, Flow.update_time).union_all(\n            select(Assistant.id, Assistant.name, Assistant.desc, FlowType.ASSISTANT.value,\n                   Assistant.logo, Assistant.user_id, Assistant.status, Assistant.create_time,\n                   Assistant.update_time).where(Assistant.is_delete == 0)).subquery()\n\n        statement = select(sub_query.c.id, sub_query.c.name, sub_query.c.description,\n                           sub_query.c.flow_type, sub_query.c.logo, sub_query.c.user_id,\n                           sub_query.c.status, sub_query.c.create_time, sub_query.c.update_time)\n        statement = statement.order_by(sub_query.c.create_time.asc()).limit(1)\n        with get_sync_db_session() as session:\n            result = session.exec(statement).all()\n            data = []\n            for one in result:\n                data.append({\n                    'id': one[0],\n                    'name': one[1],\n                    'description': one[2],\n                    'flow_type': one[3],\n                    'logo': one[4],\n                    'user_id': one[5],\n                    'status': one[6],\n                    'create_time': one[7],\n                    'update_time': one[8]\n                })\n            return data[0] if data else None\n"
  },
  {
    "path": "src/backend/bisheng/database/models/flow_version.py",
    "content": "# Path: src/backend/bisheng/database/models/flow.py\n\nfrom datetime import datetime\nfrom typing import Dict, List, Optional\n\n# if TYPE_CHECKING:\nfrom pydantic import field_validator\nfrom sqlalchemy import func, String\nfrom sqlmodel import JSON, Field, select, update, text, Column, DateTime\n\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.database.models.flow import Flow\n\n\nclass FlowVersionBase(SQLModelSerializable):\n    id: Optional[int] = Field(default=None, primary_key=True, unique=True)\n    flow_id: str = Field(index=True, max_length=32, description=\"Belonging SkillsID\")\n    name: str = Field(index=True, description=\"Version Name\")\n    data: Optional[Dict] = Field(default=None, description=\"Version Data\")\n    description: Optional[str] = Field(default=None, sa_column=Column(String(length=1000)))\n    user_id: Optional[int] = Field(default=None, index=True, description=\"creator\")\n    flow_type: Optional[int] = Field(default=1, description=\"Type of version\")\n    is_current: Optional[int] = Field(default=0, description=\"Is version in use\")\n    is_delete: Optional[int] = Field(default=0, description=\"whether delete\")\n    original_version_id: Optional[int] = Field(default=None, description=\"Source Version ofID\")\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('data')\n    @classmethod\n    def validate_json(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            return v\n        if not isinstance(v, dict):\n            raise ValueError('Flow must be a valid JSON')\n\n        # data must contain nodes and edges\n        if 'nodes' not in v.keys():\n            raise ValueError('Flow must have nodes')\n        if 'edges' not in v.keys():\n            raise ValueError('Flow must have edges')\n        return v\n\n\nclass FlowVersion(FlowVersionBase, table=True):\n    data: Optional[Dict] = Field(default=None, sa_column=Column(JSON), description=\"Version Data\")\n\n\nclass FlowVersionRead(FlowVersionBase):\n    pass\n\n\nclass FlowVersionDao(FlowVersionBase):\n\n    @classmethod\n    def create_version(cls, version: FlowVersion) -> FlowVersion:\n        \"\"\"\n        Create New Version\n        \"\"\"\n        with get_sync_db_session() as session:\n            session.add(version)\n            session.commit()\n            session.refresh(version)\n            return version\n\n    @classmethod\n    def update_version(cls, version: FlowVersion) -> FlowVersion:\n        \"\"\"\n        Update the version information while updating the Skill SheetdataDATA\n        \"\"\"\n        with get_sync_db_session() as session:\n            session.add(version)\n            session.commit()\n            # Update the data in the skill sheet if it is the current version\n            if version.is_current == 1:\n                # Update Skill SheetdataDATA\n                update_flow = update(Flow).where(Flow.id == version.flow_id).values(data=version.data)\n                session.exec(update_flow)\n                session.commit()\n            session.refresh(version)\n            return version\n\n    @classmethod\n    async def aupdate_version(cls, version: FlowVersion) -> FlowVersion:\n        \"\"\"\n        Update version information asynchronously while updating the Skill SheetdataDATA\n        \"\"\"\n        async with get_async_db_session() as session:\n            session.add(version)\n            await session.commit()\n            # Update the data in the skill sheet if it is the current version\n            if version.is_current == 1:\n                # Update Skill SheetdataDATA\n                update_flow = update(Flow).where(Flow.id == version.flow_id).values(data=version.data)\n                await session.exec(update_flow)\n                await session.commit()\n            await session.refresh(version)\n            return version\n\n    @classmethod\n    def get_version_by_name(cls, flow_id: str, name: str) -> Optional[FlowVersion]:\n        \"\"\"\n        By SkillIDand version name for version information\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion).where(FlowVersion.flow_id == flow_id,\n                                                  FlowVersion.name == name,\n                                                  FlowVersion.is_delete == 0)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_version_by_id(cls, version_id: int, include_delete: bool = False) -> Optional[FlowVersion]:\n        \"\"\"\n        According to versionIDGet information on the skill version\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion).where(FlowVersion.id == version_id)\n            if not include_delete:\n                statement = statement.where(FlowVersion.is_delete == 0)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_version_by_id(cls, version_id: int, include_delete: bool = False) -> Optional[FlowVersion]:\n        \"\"\"\n        According to versionIDGet skill version information (asynchronous)\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(FlowVersion).where(FlowVersion.id == version_id)\n            if not include_delete:\n                statement = statement.where(FlowVersion.is_delete == 0)\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_version_by_flow(cls, flow_id: str) -> Optional[FlowVersion]:\n        \"\"\"\n        By SkillIDGet information on the current skill version\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion).where(FlowVersion.flow_id == flow_id,\n                                                  FlowVersion.is_current == 1,\n                                                  FlowVersion.is_delete == 0)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_list_by_ids(cls, ids: List[int]) -> List[FlowVersion]:\n        \"\"\"\n        accordingIDList for all version details\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion).where(FlowVersion.id.in_(ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_list_by_flow(cls, flow_id: str) -> List[FlowVersionRead]:\n        \"\"\"\n        By SkillID Get all skill versions\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion.id, FlowVersion.flow_id, FlowVersion.name, FlowVersion.description,\n                               FlowVersion.is_current, FlowVersion.create_time, FlowVersion.update_time).where(\n                FlowVersion.flow_id == flow_id, FlowVersion.is_delete == 0).order_by(FlowVersion.id.desc())\n            ret = session.exec(statement).mappings().all()\n            return [FlowVersionRead.model_validate(f) for f in ret]\n\n    @classmethod\n    def count_list_by_flow(cls, flow_id: str, include_delete: bool = False) -> int:\n        \"\"\"\n        By SkillID Number of Skill Versions\n        \"\"\"\n        with get_sync_db_session() as session:\n            count_statement = session.query(func.count()).where(FlowVersion.flow_id == flow_id)\n            if not include_delete:\n                count_statement = count_statement.where(FlowVersion.is_delete == 0)\n            return count_statement.scalar()\n\n    @classmethod\n    def get_list_by_flow_ids(cls, flow_ids: List[str]) -> List[FlowVersionRead]:\n        \"\"\"\n        By SkillIDVertical Get all versions of all skills\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(FlowVersion.id, FlowVersion.flow_id, FlowVersion.name, FlowVersion.description,\n                               FlowVersion.is_current, FlowVersion.create_time, FlowVersion.update_time).where(\n                FlowVersion.flow_id.in_(flow_ids), FlowVersion.is_delete == 0).order_by(FlowVersion.id.desc())\n            ret = session.exec(statement).mappings().all()\n            return [FlowVersionRead.model_validate(f) for f in ret]\n\n    @classmethod\n    def delete_flow_version(cls, version_id: int) -> None:\n        \"\"\"\n        Deleting a version, the version in use cannot be deleted\n        \"\"\"\n        with get_sync_db_session() as session:\n            update_statement = update(FlowVersion).where(\n                FlowVersion.id == version_id, FlowVersion.is_current == 0).values(is_delete=1)\n            session.exec(update_statement)\n            session.commit()\n\n    @classmethod\n    async def change_current_version(cls, flow_id: str, new_version_info: FlowVersion) -> bool:\n        \"\"\"\n        Modify the current version of the skill, Determine if the current version exists\n        Also modify the Skill SheetdataDATA\n        \"\"\"\n        async with get_async_db_session() as session:\n            # Set current version\n            set_statement = update(FlowVersion).where(\n                FlowVersion.flow_id == flow_id,\n                FlowVersion.id == new_version_info.id,\n                FlowVersion.is_delete == 0,\n            ).values(is_current=1)\n            update_ret = await session.exec(set_statement)\n            if update_ret.rowcount == 0:\n                # If the update is not successful, the current version of the previous setting is not canceled\n                return False\n\n            # Update Skill SheetdataDATA\n            update_flow = update(Flow).where(Flow.id == flow_id).values(data=new_version_info.data)\n            await session.exec(update_flow)\n            await session.commit()\n\n            # Modify another version to not the current version\n            statement = update(FlowVersion).where(\n                FlowVersion.flow_id == flow_id,\n                FlowVersion.id != new_version_info.id,\n                FlowVersion.is_current == 1).values(\n                is_current=0)\n            await session.exec(statement)\n            await session.commit()\n\n            return True\n"
  },
  {
    "path": "src/backend/bisheng/database/models/group.py",
    "content": "from datetime import datetime\nfrom typing import Dict, List, Optional\n\nfrom sqlalchemy import Column, DateTime, delete, text, update\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\n# Default User GroupID\nDefaultGroup = 2\n\n\nclass GroupBase(SQLModelSerializable):\n    group_name: str = Field(index=False, description='Frontend Display Name', unique=True)\n    remark: Optional[str] = Field(default=None, index=False)\n    create_user: Optional[int] = Field(default=None, index=True, description=\"Creating a user'sID\")\n    update_user: Optional[int] = Field(default=None, description=\"Update user'sID\")\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Group(GroupBase, table=True):\n    # id = 2 Represents the default user group\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass GroupRead(GroupBase):\n    id: Optional[int] = None\n    group_admins: Optional[List[Dict]] = None\n\n\nclass GroupUpdate(GroupBase):\n    role_name: Optional[str] = None\n    remark: Optional[str] = None\n\n\nclass GroupCreate(GroupBase):\n    group_admins: Optional[List[int]] = None\n\n\nclass GroupDao(GroupBase):\n\n    @classmethod\n    def get_user_group(cls, group_id: int) -> Group | None:\n        with get_sync_db_session() as session:\n            statement = select(Group).where(Group.id == group_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def insert_group(cls, group: GroupCreate) -> Group:\n        with get_sync_db_session() as session:\n            group_add = Group.validate(group)\n            session.add(group_add)\n            session.commit()\n            session.refresh(group_add)\n            return group_add\n\n    @classmethod\n    def get_all_group(cls) -> list[Group]:\n        with get_sync_db_session() as session:\n            statement = select(Group).order_by(Group.update_time.desc())\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_group_by_ids(cls, ids: List[int]) -> list[Group]:\n        if not ids:\n            raise ValueError('ids is empty')\n        with get_sync_db_session() as session:\n            statement = select(Group).where(Group.id.in_(ids)).order_by(Group.update_time.desc())\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_group_by_ids(cls, ids: List[int]) -> list[Group]:\n        if not ids:\n            raise ValueError('ids is empty')\n        async with get_async_db_session() as session:\n            statement = select(Group).where(Group.id.in_(ids)).order_by(Group.update_time.desc())\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def delete_group(cls, group_id: int):\n        with get_sync_db_session() as session:\n            session.exec(delete(Group).where(Group.id == group_id))\n            session.commit()\n\n    @classmethod\n    def update_group(cls, group: Group) -> Group:\n        with get_sync_db_session() as session:\n            session.add(group)\n            session.commit()\n            session.refresh(group)\n            return group\n\n    @classmethod\n    def update_group_update_user(cls, group_id: int, user_id: int):\n        with get_sync_db_session() as session:\n            statement = update(Group).where(Group.id == group_id).values(update_user=user_id,\n                                                                         update_time=datetime.now())\n            session.exec(statement)\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/group_resource.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Dict, List, Optional\n\nfrom sqlalchemy import Column, DateTime, text, delete\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\n\nclass ResourceTypeEnum(Enum):\n    KNOWLEDGE = 1\n    FLOW = 2\n    ASSISTANT = 3\n    GPTS_TOOL = 4\n    WORK_FLOW = 5\n    DASHBOARD = 6  # KANBAN\n    WORKSTATION = 7  # Workstation\n\nclass GroupResourceBase(SQLModelSerializable):\n    group_id: str = Field(index=True)\n    third_id: str = Field(index=False)\n    type: int = Field(index=False, description='Resource Categories 1:The knowledge base upon 2:Skill 3:assistant 4:Tools 5:The Workflow')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass GroupResource(GroupResourceBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass GroupResourceRead(GroupResourceBase):\n    id: Optional[int] = None\n    group_admins: Optional[List[Dict]] = None\n\n\nclass GroupResourceUpdate(GroupResourceBase):\n    role_name: Optional[str] = None\n    remark: Optional[str] = None\n\n\nclass GroupResourceCreate(GroupResourceBase):\n    pass\n\n\nclass GroupResourceDao(GroupResourceBase):\n\n    @classmethod\n    def insert_group(cls, group_resource: GroupResource) -> GroupResource:\n        with get_sync_db_session() as session:\n            session.add(group_resource)\n            session.commit()\n            session.refresh(group_resource)\n            return group_resource\n\n    @classmethod\n    def insert_group_batch(cls, group_resources: List[GroupResource]) -> List[GroupResource]:\n        with get_sync_db_session() as session:\n            session.add_all(group_resources)\n            session.commit()\n            return group_resources\n\n    @classmethod\n    async def ainsert_group_batch(cls, group_resources: List[GroupResource]) -> List[GroupResource]:\n        async with get_async_db_session() as session:\n            session.add_all(group_resources)\n            await session.commit()\n            return group_resources\n\n    @classmethod\n    def get_group_resource(cls,\n                           group_id: int,\n                           resource_type: ResourceTypeEnum,\n                           name: str = None,\n                           page_size: int = None,\n                           page_num: int = None) -> list[GroupResource]:\n        with get_sync_db_session() as session:\n            statement = select(GroupResource).where(GroupResource.group_id == group_id,\n                                                    GroupResource.type == resource_type.value)\n            if name:\n                statement = statement.where(GroupResource.third_id.like(f'%{name}%'))\n            if page_num and page_size:\n                statement = statement.offset(page_size * (page_num - 1)).limit(page_size)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_group_resources(cls, group_id: int, resource_type: ResourceTypeEnum) -> List[GroupResource]:\n        statement = select(GroupResource).where(\n            GroupResource.group_id == group_id,\n            GroupResource.type == resource_type.value\n        )\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def get_groups_resource(cls,\n                            group_ids: List[int],\n                            resource_types: List[ResourceTypeEnum] = None,\n                            name: str = None,\n                            page_size: int = None,\n                            page_num: int = None) -> list[GroupResource]:\n        async with get_async_db_session() as session:\n            statement = select(GroupResource).where(GroupResource.group_id.in_(group_ids))\n            if resource_types:\n                statement = statement.where(GroupResource.type.in_([r.value for r in resource_types]))\n            if name:\n                statement = statement.where(GroupResource.third_id.like(f'%{name}%'))\n            if page_num and page_size:\n                statement = statement.offset(page_size * (page_num - 1)).limit(page_size)\n\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_resource_group(cls, resource_type: ResourceTypeEnum, third_id: str) -> list[GroupResource]:\n        \"\"\"\n        Get the group to which the resource belongs\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GroupResource).where(GroupResource.third_id == third_id,\n                                                    GroupResource.type == resource_type.value)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_resource_group(cls, resource_type: ResourceTypeEnum, third_id: str) -> list[GroupResource]:\n        \"\"\"\n        Get the group to which the resource belongs\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(GroupResource).where(GroupResource.third_id == third_id,\n                                                    GroupResource.type == resource_type.value)\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_resources_group(cls, resource_type: ResourceTypeEnum | None, third_ids: List[str]) -> list[GroupResource]:\n        \"\"\"\n        Get the grouping to which the bulk resource belongs\n        \"\"\"\n        statement = select(GroupResource).where(GroupResource.third_id.in_(third_ids))\n        if resource_type:\n            statement = statement.where(GroupResource.type == resource_type.value)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def delete_group_resource_by_third_id(cls, third_id: str, resource_type: ResourceTypeEnum) -> None:\n        with (get_sync_db_session() as session):\n            statement = delete(GroupResource).where(\n                GroupResource.third_id == third_id).where(\n                GroupResource.type == resource_type.value)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def delete_group_resource_by_group_id(cls, group_id: int):\n        with (get_sync_db_session() as session):\n            statement = delete(GroupResource).where(GroupResource.group_id == group_id)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def get_group_all_resource(cls, group_id: int) -> List[GroupResource]:\n        \"\"\"\n        Get all resources under a group\n        \"\"\"\n        with get_sync_db_session() as session:\n            return session.exec(\n                select(GroupResource).where(GroupResource.group_id == group_id)).all()\n\n    @classmethod\n    def update_group_resource(cls, group_resources: List[GroupResource]) -> List[GroupResource]:\n        with (get_sync_db_session() as session):\n            session.add_all(group_resources)\n            session.commit()\n        return group_resources\n"
  },
  {
    "path": "src/backend/bisheng/database/models/invite_code.py",
    "content": "from datetime import datetime\nfrom typing import Optional, List\n\nfrom sqlmodel import Field, Column, text, DateTime, select, update\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\n\n\nclass InviteCodeBase(SQLModelSerializable):\n    \"\"\"\n    Invitation code model for storing invitation code information.\n    \"\"\"\n\n    code: str = Field(..., index=True, unique=True, description='Invitation Code')\n    batch_id: str = Field(..., index=True, description='BatchesID')\n    batch_name: str = Field(..., description='Batch')\n    limit: int = Field(..., description='Usage Limits')\n    used: Optional[int] = Field(default=0, description='Used times')\n    bind_user: Optional[int] = Field(default=0, index=True, description='Linked UsersID')\n    created_id: Optional[int] = Field(default=None, index=True, description='creatorID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass InviteCode(InviteCodeBase, table=True):\n    id: Optional[int] = Field(default=None, index=True, primary_key=True, description='Uniqueness quantificationID')\n\n\nclass InviteCodeDao(InviteCodeBase):\n    \"\"\"\n    The invitation code data access object, which is used to manipulate the invitation code data.\n    \"\"\"\n\n    @classmethod\n    async def insert_invite_code(cls, invite_code: List[InviteCode]) -> List[InviteCode]:\n        async with get_async_db_session() as session:\n            session.add_all(invite_code)\n            await session.commit()\n            return invite_code\n\n    @classmethod\n    async def get_user_bind_code(cls, bind_user: int) -> list[InviteCode]:\n        \"\"\"\n        Get a valid invitation code bound by the user\n        \"\"\"\n        statement = select(InviteCode).where(InviteCode.bind_user == bind_user).where(\n            InviteCode.used < InviteCode.limit).order_by(InviteCode.id.asc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def get_user_all_code(cls, bind_user: int) -> list[InviteCode]:\n        \"\"\"\n        Get all invitation codes linked by a user\n        \"\"\"\n        statement = select(InviteCode).where(InviteCode.bind_user == bind_user).order_by(InviteCode.id.desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def bind_invite_code(cls, user_id: int, code: str) -> bool:\n        \"\"\"\n        Binding Invitation Code\n        \"\"\"\n        statement = update(InviteCode).where(InviteCode.code == code).where(InviteCode.bind_user == 0).values(\n            bind_user=user_id\n        )\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            await session.commit()\n            if result.rowcount > 0:\n                return True\n            return False\n\n    @classmethod\n    async def use_invite_code(cls, user_id: int, code: str) -> bool:\n        statement = update(InviteCode).where(InviteCode.code == code).where(InviteCode.bind_user == user_id).values(\n            used=InviteCode.used + 1\n        ).where(InviteCode.used < InviteCode.limit)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            await session.commit()\n            if result.rowcount > 0:\n                return True\n            return False\n\n    @classmethod\n    async def revoke_invite_code_used(cls, user_id: int, code: str) -> bool:\n        \"\"\"\n        Revoke Invitation Code\n        \"\"\"\n        statement = update(InviteCode).where(InviteCode.code == code).where(InviteCode.bind_user == user_id).values(\n            used=InviteCode.used - 1\n        ).where(InviteCode.used > 0)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            await session.commit()\n            if result.rowcount > 0:\n                return True\n            return False\n"
  },
  {
    "path": "src/backend/bisheng/database/models/mark_app_user.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional\n\n# if TYPE_CHECKING:\nfrom sqlalchemy import Column, DateTime, text\nfrom sqlmodel import Field\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass MarkAppUserBase(SQLModelSerializable):\n    app_id: str = Field(index=True)\n    user_id: int = Field(index=True)\n    task_id: int = Field(index=True)\n    create_id: int = Field(index=True)\n    status: Optional[int] = Field(index=False, default=1)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass MarkAppUser(MarkAppUserBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass MarkAppUserDao(MarkAppUserBase):\n\n    @classmethod\n    def create_task(cls, task_info: List[MarkAppUser]) -> List[MarkAppUser]:\n        with get_sync_db_session() as session:\n            session.add_all(task_info)\n            session.commit()\n            return task_info\n"
  },
  {
    "path": "src/backend/bisheng/database/models/mark_record.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional\n\n# if TYPE_CHECKING:\nfrom sqlalchemy import Column, DateTime, delete, text\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass MarkRecordStatus(Enum):\n    DEFAULT = 1\n    DONE = 2\n    NO = 3\n\n\nclass MarkRecordBase(SQLModelSerializable):\n    create_user: str = Field(index=True)\n    flow_type: int = Field(index=True)\n    create_id: int = Field(index=True)\n    app_id: int = Field(index=True, nullable=True)\n    task_id: int = Field(index=True)\n    session_id: str = Field(index=True)\n    status: int = Field(index=False, default=1)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass MarkRecord(MarkRecordBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass MarkRecordDao(MarkRecordBase):\n\n    @classmethod\n    def update_record(cls, record_info: MarkRecord) -> MarkRecord:\n        with get_sync_db_session() as session:\n            session.add(record_info)\n            session.commit()\n            session.refresh(record_info)\n            return record_info\n\n    @classmethod\n    def get_prev_task(cls, user_id: int, task_id: int):\n        with get_sync_db_session() as session:\n            statement = select(MarkRecord).where(MarkRecord.create_id == user_id).where(\n                MarkRecord.task_id == task_id).order_by(MarkRecord.id)\n            return session.exec(statement).all()\n\n    @classmethod\n    def create_record(cls, record_info: MarkRecord) -> MarkRecord:\n        with get_sync_db_session() as session:\n            session.add(record_info)\n            session.commit()\n            session.refresh(record_info)\n            return record_info\n\n    @classmethod\n    def del_record(cls, task_id: int):\n        with get_sync_db_session() as session:\n            st = delete(MarkRecord).where(MarkRecord.task_id == task_id)\n            session.exec(st)\n            session.commit()\n            return\n\n    @classmethod\n    def del_task_chat(cls, task_id: int, session_id: str):\n        with get_sync_db_session() as session:\n            st = delete(MarkRecord).where(MarkRecord.task_id == task_id).where(MarkRecord.session_id == session_id)\n            session.exec(st)\n            session.commit()\n            return\n\n    @classmethod\n    def get_list_by_taskid(cls, task_id: int):\n        with get_sync_db_session() as session:\n            statement = select(MarkRecord).where(MarkRecord.task_id == task_id)\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_count(cls, task_id: int):\n        with get_sync_db_session() as session:\n            sql = text(\n                \"select create_user,count(*) as user_count,create_id from markrecord where task_id=:task_id group by create_id,create_user\")\n            query = session.execute(sql, {\"task_id\": task_id}).fetchall()\n            return query\n\n    @classmethod\n    def get_record(cls, task_id: int, session_id: str) -> MarkRecord:\n\n        with get_sync_db_session() as session:\n            statement = select(MarkRecord).where(MarkRecord.task_id == task_id).where(\n                MarkRecord.session_id == session_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def filter_records(cls, task_id: int, chat_ids: list[str] = None, status: int = None, mark_user: int = None) -> \\\n            List[MarkRecord]:\n        statement = select(MarkRecord).where(MarkRecord.task_id == task_id)\n        if chat_ids:\n            statement = statement.where(MarkRecord.session_id.in_(chat_ids))\n        if status is not None:\n            statement = statement.where(MarkRecord.status == status)\n        if mark_user is not None:\n            statement = statement.where(MarkRecord.create_user == str(mark_user))\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/mark_task.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional\n\n# if TYPE_CHECKING:\nfrom sqlalchemy import Column, DateTime, and_, delete, func, or_, text\nfrom sqlmodel import Field, select, update\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass MarkTaskStatus(Enum):\n    DEFAULT = 1\n    DONE = 2\n    ING = 3\n\n\nclass MarkTaskBase(SQLModelSerializable):\n    create_user: str = Field(index=True)\n    create_id: int = Field(index=True)\n    app_id: str = Field(index=False, max_length=2048)\n    process_users: str = Field(index=False)  # 23,2323\n    mark_user: Optional[str] = Field(default=None, index=True, nullable=True)\n    status: Optional[int] = Field(index=False, default=1)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass MarkTask(MarkTaskBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass MarkTaskRead(MarkTaskBase):\n    id: Optional[int] = None\n    mark_process: Optional[List[str]] = None\n\n\nclass MarkTaskDao(MarkTaskBase):\n\n    @classmethod\n    def create_task(cls, task_info: MarkTask) -> MarkTask:\n        with get_sync_db_session() as session:\n            session.add(task_info)\n            session.commit()\n            session.refresh(task_info)\n            return task_info\n\n    @classmethod\n    def delete_task(cls, task_id: int):\n        with get_sync_db_session() as session:\n            st = delete(MarkTask).where(MarkTask.id == task_id)\n            session.exec(st)\n            session.commit()\n\n    @classmethod\n    def get_task_byid(cls, task_id: int) -> MarkTask:\n        with get_sync_db_session() as session:\n            statement = select(MarkTask).where(MarkTask.id == task_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_task(cls, user_id: int) -> MarkTask:\n        with get_sync_db_session() as session:\n            statement = select(MarkTask).where(MarkTask.process_users.like('%{}%'.format(user_id)))\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_task_list_byuid(cls, user_id: int, task_id: int) -> MarkTask:\n        with get_sync_db_session() as session:\n            statement = select(MarkTask).where(MarkTask.id == task_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def update_task(cls, task_id: int, status: int):\n        with get_sync_db_session() as session:\n            st = update(MarkTask).where(MarkTask.id == task_id).values(status=status)\n            session.exec(st)\n            session.commit()\n\n    @classmethod\n    def get_all_task(\n            cls,\n            page_size: int = 10,\n            page_num: int = 1,\n    ):\n        with get_sync_db_session() as session:\n            statement = select(MarkTask)\n            total_count_query = select(func.count()).select_from(statement.alias('subquery'))\n            statement = statement.order_by(MarkTask.create_time.desc())\n            total_count = session.execute(total_count_query).scalar()\n            statement = statement.limit(page_size).offset((page_num - 1) * page_size)\n            return session.exec(statement).all(), total_count\n\n    @classmethod\n    def get_task_list(\n            cls,\n            status: int,\n            create_id: Optional[int],\n            user_id: Optional[int],\n            page_size: int = 10,\n            page_num: int = 1,\n    ):\n        with get_sync_db_session() as session:\n            statement = select(MarkTask)\n\n            filter = []\n            filter_or = []\n            if status:\n                filter.append(MarkTask.status == status)\n                if user_id:\n                    filter.append(func.find_in_set(user_id, MarkTask.process_users) > 0)\n            if create_id:\n                filter.append(MarkTask.create_id == create_id)\n            if user_id:\n                filter_or.append(func.find_in_set(user_id, MarkTask.process_users) > 0)\n                # filter_or.append(MarkTask.process_users.like('%{}%'.format(user_id)))\n                if status:\n                    filter_or.append(MarkTask.status == status)\n\n            if filter and not filter_or:\n                statement = statement.filter(*filter)\n            if filter_or:\n                statement = statement.filter(or_(and_(*filter), and_(*filter_or)))\n\n            # Calculate total tasks\n            total_count_query = select(func.count()).select_from(statement.alias('subquery'))\n            statement = statement.order_by(MarkTask.create_time.desc())\n            total_count = session.execute(total_count_query).scalar()\n            statement = statement.limit(page_size).offset((page_num - 1) * page_size)\n            return session.exec(statement).all(), total_count\n"
  },
  {
    "path": "src/backend/bisheng/database/models/message.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Dict, List, Optional, Tuple\n\nfrom loguru import logger\nfrom sqlalchemy.dialects.mysql import LONGTEXT\nfrom sqlmodel import (JSON, Column, DateTime, Field, String, Text, case, delete, func, not_, or_,\n                      select, text, update, col)\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\n\nclass LikedType(Enum):\n    UNRATED = 0  # Not assessed\n    LIKED = 1  # Love\n    DISLIKED = 2  # don't like}\n\n\nclass MessageBase(SQLModelSerializable):\n    is_bot: bool = Field(index=False, description='Chat Role')\n    source: Optional[int] = Field(default=None, index=False, description='Whether traceability is supported')\n    mark_status: Optional[int] = Field(index=False, default=1, description='Tag status')\n    mark_user: Optional[int] = Field(default=None, index=False, description='Flagging User')\n    mark_user_name: Optional[str] = Field(default=None, index=False, description='Flagging User')\n    message: Optional[str] = Field(default=None, sa_column=Column(LONGTEXT), description='Chat Message')\n    extra: Optional[str] = Field(default=None, sa_column=Column(Text), description='Connection information, etc.')\n    type: str = Field(index=False, description='Type of Message')\n    category: str = Field(index=False, max_length=32, description='Message category, questionetc.')\n    flow_id: str = Field(index=True, description='Corresponding Skillsid')\n    chat_id: Optional[str] = Field(default=None, index=True, description='chat_id, Frontend Generation')\n    user_id: Optional[int] = Field(default=None, index=True, description='Usersid')\n    liked: Optional[int] = Field(index=False, default=0, description=\"Whether the user likes it or 0Not assessed/1 Love/2 don't like}\")\n    solved: Optional[int] = Field(index=False, default=0, description='Whether the user likes it or 0Not assessed/1 Solution/2 Unresolve')\n    copied: Optional[int] = Field(index=False, default=0, description='Is the user copying 0: Not copied 1Copied: ')\n    sensitive_status: Optional[int] = Field(index=False, default=1, description='Sensitive Word Status 1Pass 2violates regulation')\n    sender: Optional[str] = Field(index=False, default='', description='autogen Sender')\n    receiver: Optional[Dict] = Field(index=False, default=None, description='autogen Sender')\n    intermediate_steps: Optional[str] = Field(default=None, sa_column=Column(Text), description='Process Log')\n    files: Optional[str] = Field(default=None, sa_column=Column(String(length=4096)), description='Uploaded documents, etc.')\n    remark: Optional[str] = Field(default=None, sa_column=Column(String(length=4096)),\n                                  description='Note. break_answer: Interrupted response inactionhistoryPass to Model')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass ChatMessage(MessageBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n    receiver: Optional[Dict] = Field(default=None, sa_column=Column(JSON))\n\n    # Key: Set table level character set to utf8mb4\n    __table_args__ = {\n        \"mysql_charset\": \"utf8mb4\",\n        \"mysql_collate\": \"utf8mb4_unicode_ci\"\n    }\n\n\nclass ChatMessageRead(MessageBase):\n    id: Optional[int] = None\n\n\nclass ChatMessageQuery(MessageBase):\n    id: Optional[int] = None\n    receiver: Optional[Dict] = None\n\n\nclass ChatMessageCreate(MessageBase):\n    pass\n\n\nclass MessageDao(MessageBase):\n\n    @classmethod\n    def static_msg_liked(cls, liked: int, flow_id: str, create_time_begin: datetime,\n                         create_time_end: datetime):\n        base_condition = select(func.count(ChatMessage.id)).where(ChatMessage.liked == liked)\n\n        if flow_id:\n            base_condition = base_condition.where(ChatMessage.flow_id == flow_id)\n\n        if create_time_begin and create_time_end:\n            base_condition = base_condition.where(ChatMessage.create_time > create_time_begin,\n                                                  ChatMessage.create_time < create_time_end)\n\n        with get_sync_db_session() as session:\n            return session.scalar(base_condition)\n\n    @classmethod\n    def app_list_group_by_chat_id(\n            cls,\n            page_size: int,\n            page_num: int,\n            flow_ids: Optional[list[str]],\n            user_ids: Optional[list[int]],\n    ) -> Tuple[List[Dict], int]:\n        with get_sync_db_session() as session:\n            count_stat = select(func.count(func.distinct(ChatMessage.chat_id)))\n            sql = select(\n                ChatMessage.chat_id,\n                ChatMessage.user_id,\n                ChatMessage.flow_id,\n                func.max(ChatMessage.create_time).label('create_time'),\n                func.sum(case((ChatMessage.liked == 1, 1), else_=0)),\n                func.sum(case((ChatMessage.liked == 2, 1), else_=0)),\n                func.sum(case((ChatMessage.copied == 1, 1), else_=0)),\n            )\n\n            if flow_ids:\n                count_stat = count_stat.where(ChatMessage.flow_id.in_(flow_ids))\n                sql = sql.where(ChatMessage.flow_id.in_(flow_ids))\n            if user_ids:\n                count_stat = count_stat.where(\n                    or_(\n                        ChatMessage.mark_user.in_(user_ids),\n                        ChatMessage.mark_status == 1,\n                    ))\n                sql = sql.where(\n                    or_(ChatMessage.mark_user.in_(user_ids), ChatMessage.mark_status == 1))\n            sql = sql.group_by(ChatMessage.chat_id, ChatMessage.user_id,\n                               ChatMessage.flow_id).order_by(\n                func.max(ChatMessage.create_time).desc()).offset(\n                page_size * (page_num - 1)).limit(page_size)\n\n            res_list = session.exec(sql).all()\n            total_count = session.scalar(count_stat)\n\n            dict_res = [{\n                'chat_id': chat_id,\n                'user_id': user_id,\n                'flow_id': flow_id,\n                'like_count': like_num,\n                'dislike_count': dislike_num,\n                'copied_count': copied_num,\n                'create_time': create_time\n            } for chat_id, user_id, flow_id, create_time, like_num, dislike_num, copied_num in\n                res_list]\n            logger.info(res_list)\n            return dict_res, total_count\n\n\nclass ChatMessageDao(MessageBase):\n\n    @classmethod\n    def get_latest_message_by_chatid(cls, chat_id: str):\n        statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id).order_by(\n            ChatMessage.id.desc()).limit(1)\n        with get_sync_db_session() as session:\n            res = session.exec(statement).all()\n            if res:\n                return res[0]\n            else:\n                return None\n\n    @classmethod\n    async def aget_latest_message_by_chatid(cls, chat_id: str):\n        statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id).order_by(\n            ChatMessage.id.desc()).limit(1)\n        async with get_async_db_session() as session:\n            res = await session.exec(statement)\n            res = res.all()\n            if res:\n                return res[0]\n            else:\n                return None\n\n    @classmethod\n    def get_latest_message_by_chat_ids(cls,\n                                       chat_ids: list[str],\n                                       category: str = None,\n                                       exclude_category: str = None):\n        \"\"\"\n        Get the most recent message content for each session\n        \"\"\"\n        statement = select(ChatMessage.chat_id,\n                           func.max(ChatMessage.id)).where(ChatMessage.chat_id.in_(chat_ids))\n        if category:\n            statement = statement.where(ChatMessage.category == category)\n        if exclude_category:\n            statement = statement.where(ChatMessage.category != exclude_category)\n        statement = statement.group_by(ChatMessage.chat_id)\n        with get_sync_db_session() as session:\n            # Get the latestidVertical\n            res = session.exec(statement).all()\n            ids = [one[1] for one in res]\n            # Get the details of your message\n            statement = select(ChatMessage).where(ChatMessage.id.in_(ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_messages_by_chat_id(cls,\n                                chat_id: str,\n                                category_list: list = None,\n                                limit: int = 10) -> List[ChatMessage]:\n        with get_sync_db_session() as session:\n            statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id)\n            if category_list:\n                statement = statement.where(ChatMessage.category.in_(category_list))\n            statement = statement.limit(limit).order_by(ChatMessage.create_time.asc())\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_messages_by_chat_id(cls,\n                                       chat_id: str,\n                                       category_list: list = None,\n                                       limit: int = 10) -> List[ChatMessage]:\n        async with get_async_db_session() as session:\n            statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id)\n            if category_list:\n                statement = statement.where(ChatMessage.category.in_(category_list))\n            statement = statement.limit(limit).order_by(ChatMessage.create_time.asc())\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_last_msg_by_flow_id(cls, flow_id: List[str], chat_id: List[str]):\n        with get_sync_db_session() as session:\n            statement = select(ChatMessage.chat_id,\n                               ChatMessage.flow_id).where(ChatMessage.flow_id.in_(flow_id)).where(\n                not_(ChatMessage.chat_id.in_(chat_id))).group_by(\n                ChatMessage.chat_id, ChatMessage.flow_id)\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_msg_by_chat_id(cls, chat_id: str):\n        with get_sync_db_session() as session:\n            statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id)\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_msg_by_flow(cls, flow_id: str):\n        with get_sync_db_session() as session:\n            # sql = text(\"select chat_id,count(*) as chat_count from chatmessage where flow_id=:flow_id group by chat_id\") # noqa\n            st = select(ChatMessage.chat_id).where(ChatMessage.flow_id == flow_id).group_by(\n                ChatMessage.chat_id)\n            return session.exec(st).all()\n\n    @classmethod\n    def get_msg_by_flows(cls, flow_id: List[str]):\n        with get_sync_db_session() as session:\n            st = select(ChatMessage.chat_id).where(ChatMessage.flow_id.in_(flow_id)).group_by(\n                ChatMessage.chat_id)\n            return session.exec(st).all()\n\n    @classmethod\n    def delete_by_user_chat_id(cls, user_id: int, chat_id: str):\n        if user_id is None or chat_id is None:\n            logger.info('delete_param_error user_id={} chat_id={}', user_id, chat_id)\n            return False\n\n        statement = delete(ChatMessage).where(ChatMessage.chat_id == chat_id,\n                                              ChatMessage.user_id == user_id)\n\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n        return True\n\n    @classmethod\n    def delete_by_message_id(cls, user_id: int, message_id: str):\n        if user_id is None or message_id is None:\n            logger.info('delete_param_error user_id={} chat_id={}', user_id, message_id)\n            return False\n\n        statement = delete(ChatMessage).where(ChatMessage.id == message_id,\n                                              ChatMessage.user_id == user_id)\n\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n        return True\n\n    @classmethod\n    def insert_one(cls, message: ChatMessage) -> ChatMessage:\n        with get_sync_db_session() as session:\n            session.add(message)\n            session.commit()\n            session.refresh(message)\n        return message\n\n    @classmethod\n    async def ainsert_one(cls, message: ChatMessage) -> ChatMessage:\n        async with get_async_db_session() as session:\n            session.add(message)\n            await session.commit()\n            await session.refresh(message)\n        return message\n\n    @classmethod\n    def insert_batch(cls, messages: List[ChatMessage]):\n        with get_sync_db_session() as session:\n            session.add_all(messages)\n            session.commit()\n            ret = []\n            for one in messages:\n                session.refresh(one)\n                ret.append(one)\n            return ret\n\n    @classmethod\n    def get_message_by_id(cls, message_id: int) -> Optional[ChatMessage]:\n        with get_sync_db_session() as session:\n            return session.exec(select(ChatMessage).where(ChatMessage.id == message_id)).first()\n\n    @classmethod\n    async def aget_message_by_id(cls, message_id: int) -> Optional[ChatMessage]:\n        async with get_async_db_session() as session:\n            result = await session.exec(select(ChatMessage).where(ChatMessage.id == message_id))\n            return result.first()\n\n    @classmethod\n    def update_message(cls, message_id: int, user_id: int, message: str):\n        with get_sync_db_session() as session:\n            statement = update(ChatMessage).where(ChatMessage.id == message_id).where(\n                ChatMessage.user_id == user_id).values(message=message)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def update_message_model(cls, message: ChatMessage):\n        with get_sync_db_session() as session:\n            session.add(message)\n            session.commit()\n            session.refresh(message)\n        return message\n\n    @classmethod\n    async def aupdate_message_model(cls, message: ChatMessage):\n        async with get_async_db_session() as session:\n            session.add(message)\n            await session.commit()\n            await session.refresh(message)\n        return message\n\n    @classmethod\n    def update_message_copied(cls, message_id: int, copied: int):\n        with get_sync_db_session() as session:\n            statement = update(ChatMessage).where(ChatMessage.id == message_id).values(\n                copied=copied)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def update_message_mark(cls, chat_id: str, status: int):\n        with get_sync_db_session() as session:\n            statement = update(ChatMessage).where(ChatMessage.chat_id == chat_id).values(\n                mark_status=status)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    async def get_all_message_by_chat_ids(cls, chat_ids: List[str]) -> List[ChatMessage]:\n        statement = select(ChatMessage).where(ChatMessage.chat_id.in_(chat_ids)).order_by(\n            ChatMessage.create_time.asc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def afilter_message_by_chat_id(cls, chat_id: str, flow_id: str, message_id: int = None, page_size: int = 20) \\\n            -> List[ChatMessage]:\n        statement = select(ChatMessage).where(ChatMessage.chat_id == chat_id).where(ChatMessage.flow_id == flow_id)\n        if message_id:\n            statement = statement.where(ChatMessage.id < message_id)\n        statement = statement.order_by(col(ChatMessage.id).desc()).limit(page_size)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/recall_chunk.py",
    "content": "from datetime import datetime\nfrom typing import Optional\n\nfrom sqlalchemy import Column, DateTime, Text, text\nfrom sqlmodel import Field\n\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass RecallBase(SQLModelSerializable):\n    message_id: Optional[int] = Field(default=None, index=True, unique=False)\n    chat_id: str = Field(index=False)\n    keywords: str = Field(sa_column=Column(Text))\n    chunk: Optional[str] = Field(default=None, sa_column=Column(Text))\n    meta_data: Optional[str] = Field(default=None, sa_column=Column(Text))\n    file_id: Optional[int] = Field(default=None, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass RecallChunk(RecallBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass RecallChunkRead(RecallBase):\n    id: Optional[int] = None\n    score: Optional[int] = None\n\n\nclass RecallChunkQuery(SQLModelSerializable):\n    id: Optional[int] = None\n    server: Optional[str] = None\n\n\nclass RecallChunkCreate(RecallBase):\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/database/models/report.py",
    "content": "from datetime import datetime\nfrom typing import Optional\n\nfrom sqlalchemy import Column, DateTime, text\nfrom sqlmodel import Field\n\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass ReportBase(SQLModelSerializable):\n    # ```\n    # Useflow_id Path to get the latest template in reverse order by update time\n    # Records of the final report generated by the template are stored`\n    flow_id: str = Field(index=False, description='Skill name')\n    file_name: Optional[str] = Field(default=None, index=False, description='Generate Report Name')\n    template_name: Optional[str] = Field(default=None, index=False, description='Report Template Data Storage Path')\n    version_key: Optional[str] = Field(default=None, index=True, unique=True, description='Frontend Template Uniquekey')\n    newversion_key: Optional[str] = Field(index=False, default=None, description='Frontend Template Nextkey')\n    object_name: Optional[str] = Field(default=None, index=False, description='Report Template Data Storage Path')\n    del_yn: Optional[int] = Field(index=False, default=0, description='Delete Status 1Show Delete')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Report(ReportBase, table=True):\n    __tablename__ = 't_report'\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass ReportRead(ReportBase):\n    id: Optional[int] = None\n\n\nclass RoleUpdate(ReportBase):\n    role_name: Optional[str] = None\n    remark: Optional[str] = None\n\n\nclass RoleCreate(ReportBase):\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/database/models/role.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional\n\nfrom sqlalchemy import Column, DateTime, text, func, delete, and_, UniqueConstraint\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.constants import AdminRole\nfrom bisheng.database.models.role_access import RoleAccess\nfrom bisheng.user.domain.models.user_role import UserRole\n\n\nclass RoleBase(SQLModelSerializable):\n    role_name: str = Field(index=False, description='Frontend Display Name')\n    group_id: Optional[int] = Field(default=None, index=True)\n    remark: Optional[str] = Field(default=None, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Role(RoleBase, table=True):\n    __table_args__ = (UniqueConstraint('group_id', 'role_name', name='group_role_name_uniq'),)\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass RoleRead(RoleBase):\n    id: Optional[int] = None\n\n\nclass RoleUpdate(RoleBase):\n    role_name: Optional[str] = None\n    remark: Optional[str] = None\n\n\nclass RoleCreate(RoleBase):\n    pass\n\n\nclass RoleDao(RoleBase):\n\n    @classmethod\n    def get_role_by_groups(cls, group: List[int], keyword: str = None, page: int = 0, limit: int = 0) -> List[Role]:\n        \"\"\"\n        Get a list of roles within a user group, Does not contain the System Administrator role\n        params:\n            group: User GroupsIDVertical\n            page: Page\n            limit: Listings Per Page\n        return: Role List\n        \"\"\"\n        statement = select(Role).where(Role.id > AdminRole)\n        if group:\n            statement = statement.where(Role.group_id.in_(group))\n        if keyword:\n            statement = statement.filter(Role.role_name.like(f'%{keyword}%'))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(Role.create_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def count_role_by_groups(cls, group: List[int], keyword: str = None) -> int:\n        \"\"\"\n        Count the number of roles in the user group, the parameters are as above\n        \"\"\"\n        statement = select(func.count(Role.id)).where(Role.id > AdminRole)\n        if group:\n            statement = statement.where(Role.group_id.in_(group))\n        if keyword:\n            statement = statement.filter(Role.role_name.like(f'%{keyword}%'))\n        with get_sync_db_session() as session:\n            return session.scalar(statement)\n\n    @classmethod\n    def insert_role(cls, role: RoleCreate):\n        with get_sync_db_session() as session:\n            session.add(role)\n            session.commit()\n            session.refresh(role)\n            return role\n\n    @classmethod\n    def delete_role(cls, role_id: int):\n        with get_sync_db_session() as session:\n            session.exec(delete(Role).where(Role.id == role_id))\n            session.exec(delete(UserRole).where(UserRole.role_id == role_id))\n            session.exec(delete(RoleAccess).where(RoleAccess.role_id == role_id))\n            session.commit()\n\n    @classmethod\n    def get_role_by_ids(cls, role_ids: List[int]) -> List[Role]:\n        with get_sync_db_session() as session:\n            return session.query(Role).filter(Role.id.in_(role_ids)).all()\n\n    @classmethod\n    def get_role_by_id(cls, role_id: int) -> Role:\n        with get_sync_db_session() as session:\n            return session.query(Role).filter(Role.id == role_id).first()\n\n    @classmethod\n    async def aget_role_by_id(cls, role_id: int) -> Role:\n        async with get_async_db_session() as session:\n            result = await session.execute(select(Role).where(Role.id == role_id))\n            return result.scalars().first()\n\n    @classmethod\n    def delete_role_by_group_id(cls, group_id: int):\n        \"\"\"\n        Delete all roles under the grouping and clean up the corresponding roles for the user\n        \"\"\"\n        from bisheng.user.domain.models.user_role import UserRole\n        with get_sync_db_session() as session:\n            # Clean corresponding users\n            all_user = select(UserRole, Role).join(\n                Role, and_(UserRole.role_id == Role.id,\n                           Role.group_id == group_id)).group_by(UserRole.id)\n            all_user = session.exec(all_user).all()\n            session.exec(delete(UserRole).where(UserRole.id.in_([one.UserRole.id for one in all_user])))\n            session.exec(delete(Role).where(Role.group_id == group_id))\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/role_access.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional, Union\n\nfrom pydantic import BaseModel\nfrom sqlalchemy import Column, DateTime, text\nfrom sqlmodel import Field, select, delete, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\n\n\nclass RoleAccessBase(SQLModelSerializable):\n    role_id: int = Field(index=True)\n    third_id: str = Field(index=False)\n    type: int = Field(index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass RoleAccess(RoleAccessBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass RoleAccessRead(RoleAccessBase):\n    id: Optional[int] = None\n\n\nclass RoleAccessCreate(RoleAccessBase):\n    pass\n\n\nclass WebMenuResource(Enum):\n    \"\"\"Front-end menu bar resources\"\"\"\n\n    BUILD = 'build'  # Build Menu\n    KNOWLEDGE = 'knowledge'  # Knowledge Menu\n    MODEL = 'model'  # Model Menu\n    EVALUATION = 'evaluation'  # Evaluation Menu\n\n    FRONTEND = 'frontend'  # Front-end permissions\n    BACKEND = 'backend'  # Backend Access\n\n    CREATE_DASHBOARD = 'create_dashboard'  # Create board permissions\n\n\nclass AccessType(Enum):\n    \"\"\"Type of the role_access\"\"\"\n\n    KNOWLEDGE = 1  # Knowledge Base Reading Permissions\n    FLOW = 2  # Skill Read Permissions\n    KNOWLEDGE_WRITE = 3  # Knowledge Base Write Permissions\n    FLOW_WRITE = 4  # Skill Write Permissions\n    ASSISTANT_READ = 5  # Assistant Read Permissions\n    ASSISTANT_WRITE = 6  # Assistant Write Permissions\n    GPTS_TOOL_READ = 7  # Tool Read Permissions\n    GPTS_TOOL_WRITE = 8  # Tool Write Permissions\n    WORKFLOW = 9  # Workflow Read Permissions\n    WORKFLOW_WRITE = 10  # Workflow write permissions\n    DASHBOARD = 11  # Kanban Reading Permissions\n    DASHBOARD_WRITE = 12  # Kanban writing permissions\n\n    WEB_MENU = 99  # Frontend Menu Bar Permission Restrictions\n\n\nclass RoleRefresh(BaseModel):\n    role_id: int\n    access_id: list[Union[str, int]]\n    type: int\n\n\nclass RoleAccessDao(RoleAccessBase):\n\n    @classmethod\n    def get_role_access(cls, role_ids: List[int], access_type: AccessType) -> List[RoleAccess]:\n        with get_sync_db_session() as session:\n            if access_type:\n                return session.exec(\n                    select(RoleAccess).where(RoleAccess.role_id.in_(role_ids),\n                                             RoleAccess.type == access_type.value)).all()\n            return session.exec(select(RoleAccess).where(RoleAccess.role_id.in_(role_ids))).all()\n\n    @classmethod\n    async def aget_role_access(cls, role_ids: List[int], access_type: AccessType = None) -> List[RoleAccess]:\n        statement = select(RoleAccess).where(RoleAccess.role_id.in_(role_ids))\n        if access_type:\n            statement = statement.where(RoleAccess.type == access_type.value)\n\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    def get_role_access_batch(cls, role_ids: List[int], access_type: List[AccessType]) -> List[RoleAccess]:\n        with get_sync_db_session() as session:\n            if access_type:\n                return session.exec(\n                    select(RoleAccess).where(RoleAccess.role_id.in_(role_ids),\n                                             RoleAccess.type.in_([x.value for x in access_type]))).all()\n\n    @classmethod\n    async def aget_role_access_batch(cls, role_ids: List[int], access_type: List[AccessType]) -> List[RoleAccess]:\n        statement = select(RoleAccess).where(col(RoleAccess.role_id).in_(role_ids))\n        if access_type:\n            statement = statement.where(col(RoleAccess.type).in_([x.value for x in access_type]))\n\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    def judge_role_access(cls, role_ids: List[int], third_id: str, access_type: AccessType) -> Optional[RoleAccess]:\n        with get_sync_db_session() as session:\n            return session.exec(select(RoleAccess).filter(\n                RoleAccess.role_id.in_(role_ids),\n                RoleAccess.type == access_type.value,\n                RoleAccess.third_id == third_id\n            )).first()\n\n    @classmethod\n    async def ajudge_role_access(cls, role_ids: List[int], third_id: str, access_type: AccessType) -> Optional[\n        RoleAccess]:\n        statement = select(RoleAccess).filter(\n            col(RoleAccess.role_id).in_(role_ids),\n            col(RoleAccess.type) == access_type.value,\n            col(RoleAccess.third_id) == third_id\n        )\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    def find_role_access(cls, role_ids: List[int], third_ids: List[str], access_type: AccessType) -> List[RoleAccess]:\n        with get_sync_db_session() as session:\n            if access_type:\n                return session.exec(\n                    select(RoleAccess).where(RoleAccess.role_id.in_(role_ids),\n                                             RoleAccess.third_id.in_(third_ids),\n                                             RoleAccess.type == access_type.value)).all()\n            return session.exec(select(RoleAccess).where(RoleAccess.role_id.in_(role_ids))).all()\n\n    @classmethod\n    async def afind_role_access(cls, role_ids: List[int], third_ids: List[str], access_type: AccessType) -> List[\n        RoleAccess]:\n        statement = select(RoleAccess).where(\n            col(RoleAccess.role_id).in_(role_ids),\n            col(RoleAccess.third_id).in_(third_ids)\n        )\n        if access_type:\n            statement = statement.where(col(RoleAccess.type) == access_type.value)\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    async def update_role_access_all(cls, role_id: int, access_type: AccessType,\n                                     access_ids: List[Union[str, int]]) -> None:\n        \"\"\"\n        Update the role's permissions, delete it first and add it later\n        \"\"\"\n        async with get_async_db_session() as session:\n            # Clear all old permissions first\n            statement = delete(RoleAccess).where(col(RoleAccess.role_id) == str(role_id),\n                                                 col(RoleAccess.type) == access_type.value)\n            await session.exec(statement)\n            # Add New Permission\n            for access_id in access_ids:\n                role_access = RoleAccess(role_id=role_id, third_id=str(access_id), type=access_type.value)\n                session.add(role_access)\n            await session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/session.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Optional, List\n\nfrom sqlalchemy import JSON\nfrom sqlmodel import Field, Column, DateTime, text, select, func, update\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.models.user_group import UserGroupDao\n\n\nclass SensitiveStatus(Enum):\n    PASS = 1  # Setuju\n    VIOLATIONS = 2  # violates regulation\n\n\nclass MessageSessionBase(SQLModelSerializable):\n    \"\"\" Conversation table \"\"\"\n    chat_id: str = Field(default=None, primary_key=True, description='Session UniqueID')\n    flow_id: str = Field(index=True, description='Apply UniqueID')\n    flow_type: int = Field(description='App type. Skills, assistants, workflows')\n    flow_name: str = Field(index=True, description='Application name')\n    flow_description: Optional[str] = Field(default=None, description='App Description')\n    flow_logo: Optional[str] = Field(default=None, description='Applicationslogo')\n    user_id: int = Field(index=True, description='User who created the sessionID')\n    group_ids: Optional[List[int]] = Field(default=None, sa_column=Column(JSON),\n                                           description=\"Belongs to a user groupIDVertical\")\n    is_delete: Optional[bool] = Field(default=False,\n                                      description='Whether the corresponding skill or the session itself was deleted')\n    like: Optional[int] = Field(default=0, description='Number of liked messages')\n    dislike: Optional[int] = Field(default=0, description='Number of messages clicked')\n    copied: Optional[int] = Field(default=0, description='Number of messages copied')\n    sensitive_status: int = Field(default=SensitiveStatus.PASS.value, description='Review Status')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass MessageSession(MessageSessionBase, table=True):\n    __tablename__ = 'message_session'\n\n\nclass MessageSessionDao(MessageSessionBase):\n\n    @classmethod\n    def insert_one(cls, data: MessageSession) -> MessageSession:\n\n        if not data.group_ids:\n            user_groups = UserGroupDao.get_user_group(data.user_id)\n            data.group_ids = [ug.group_id for ug in user_groups]\n\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    async def async_insert_one(cls, data: MessageSession) -> MessageSession:\n\n        if not data.group_ids:\n            user_groups = await UserGroupDao.aget_user_group(data.user_id)\n            data.group_ids = [ug.group_id for ug in user_groups]\n\n        async with get_async_db_session() as session:\n            session.add(data)\n            await session.commit()\n            await session.refresh(data)\n            return data\n\n    @classmethod\n    async def delete_session(cls, chat_id: str):\n        statement = update(MessageSession).where(MessageSession.chat_id == chat_id).values(is_delete=True)\n        with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.commit()\n\n    @classmethod\n    def get_one(cls, chat_id: str) -> MessageSession | None:\n        statement = select(MessageSession).where(MessageSession.chat_id == chat_id)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    async def async_get_one(cls, chat_id: str) -> MessageSession | None:\n        statement = select(MessageSession).where(MessageSession.chat_id == chat_id)\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    def generate_filter_session_statement(cls,\n                                          statement,\n                                          chat_ids: List[str] = None,\n                                          sensitive_status: List[SensitiveStatus] = None,\n                                          flow_ids: List[str] = None,\n                                          user_ids: List[int] = None,\n                                          feedback: str = None,\n                                          start_date: datetime = None,\n                                          end_date: datetime = None,\n                                          include_delete: bool = True,\n                                          exclude_chats: List[str] = None,\n                                          flow_type: int = None):\n        if chat_ids:\n            statement = statement.where(MessageSession.chat_id.in_(chat_ids))\n        if flow_ids:\n            statement = statement.where(MessageSession.flow_id.in_(flow_ids))\n        if user_ids:\n            statement = statement.where(MessageSession.user_id.in_(user_ids))\n\n        if feedback == 'like':\n            statement = statement.where(MessageSession.like > 0)\n        elif feedback == 'dislike':\n            statement = statement.where(MessageSession.dislike > 0)\n        elif feedback == 'copied':\n            statement = statement.where(MessageSession.copied > 0)\n\n        if not include_delete:\n            statement = statement.where(MessageSession.is_delete == False)  # noqa\n        if exclude_chats:\n            statement = statement.where(MessageSession.chat_id.not_in(exclude_chats))\n        if start_date:\n            statement = statement.where(MessageSession.create_time >= start_date)\n        if end_date:\n            statement = statement.where(MessageSession.create_time <= end_date)\n        if sensitive_status:\n            statement = statement.where(\n                MessageSession.sensitive_status.in_([one.value for one in sensitive_status]))\n        if flow_type:\n            statement = statement.where(MessageSession.flow_type.in_(flow_type))\n        return statement\n\n    @classmethod\n    def filter_session(cls,\n                       chat_ids: List[str] = None,\n                       sensitive_status: List[SensitiveStatus] = None,\n                       flow_ids: List[str] = None,\n                       user_ids: List[int] = None,\n                       feedback: str = None,\n                       start_date: datetime = None,\n                       end_date: datetime = None,\n                       include_delete: bool = True,\n                       exclude_chats: List[str] = None,\n                       page: int = 0,\n                       limit: int = 0,\n                       flow_type: List[int] = None) -> List[MessageSession]:\n        statement = select(MessageSession)\n        statement = cls.generate_filter_session_statement(statement,\n                                                          chat_ids,\n                                                          sensitive_status,\n                                                          flow_ids,\n                                                          user_ids,\n                                                          feedback,\n                                                          start_date,\n                                                          end_date,\n                                                          include_delete,\n                                                          exclude_chats,\n                                                          flow_type=flow_type)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(MessageSession.create_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def afilter_session(cls,\n                              chat_ids: List[str] = None,\n                              sensitive_status: List[SensitiveStatus] = None,\n                              flow_ids: List[str] = None,\n                              user_ids: List[int] = None,\n                              feedback: str = None,\n                              start_date: datetime = None,\n                              end_date: datetime = None,\n                              include_delete: bool = True,\n                              exclude_chats: List[str] = None,\n                              page: int = 0,\n                              limit: int = 0,\n                              flow_type: List[int] = None) -> List[MessageSession]:\n\n        statement = select(MessageSession)\n        statement = cls.generate_filter_session_statement(statement,\n                                                          chat_ids,\n                                                          sensitive_status,\n                                                          flow_ids,\n                                                          user_ids,\n                                                          feedback,\n                                                          start_date,\n                                                          end_date,\n                                                          include_delete,\n                                                          exclude_chats,\n                                                          flow_type=flow_type)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(MessageSession.create_time.desc())\n\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def get_statement_results(cls, statement, page: int = 0, limit: int = 0) -> List[MessageSession]:\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(MessageSession.create_time.desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def get_statement_count(cls, statement) -> int:\n        count_statement = select(func.count()).select_from(statement.subquery())\n        async with get_async_db_session() as session:\n            result = await session.exec(count_statement)\n            return result.first()\n\n    @classmethod\n    async def filter_session_count(cls,\n                                   chat_ids: List[str] = None,\n                                   sensitive_status: List[SensitiveStatus] = None,\n                                   flow_ids: List[str] = None,\n                                   user_ids: List[int] = None,\n                                   feedback: str = None,\n                                   start_date: datetime = None,\n                                   end_date: datetime = None,\n                                   include_delete: bool = True,\n                                   exclude_chats: List[str] = None,\n                                   flow_type: List[int] = None) -> int:\n        statement = select(func.count(MessageSession.chat_id))\n        statement = cls.generate_filter_session_statement(statement, chat_ids, sensitive_status,\n                                                          flow_ids, user_ids, feedback, start_date,\n                                                          end_date, include_delete, exclude_chats, flow_type=flow_type)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def update_sensitive_status(cls, chat_id: str, sensitive_status: SensitiveStatus):\n        statement = update(MessageSession).where(MessageSession.chat_id == chat_id).values(\n            sensitive_status=sensitive_status.value)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def add_like_count(cls, chat_id: str, like_count: int):\n        if like_count == 0:\n            return\n        statement = update(MessageSession).where(MessageSession.chat_id == chat_id).values(\n            like=MessageSession.like + like_count)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def add_dislike_count(cls, chat_id: str, dislike_count: int):\n        if dislike_count == 0:\n            return\n        statement = update(MessageSession).where(MessageSession.chat_id == chat_id).values(\n            dislike=MessageSession.dislike + dislike_count)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def add_copied_count(cls, chat_id: str, copied_count: int):\n        if copied_count == 0:\n            return\n        statement = update(MessageSession).where(MessageSession.chat_id == chat_id).values(\n            copied=MessageSession.copied + copied_count)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def update_session_info_by_flow(cls, name: str, description: str, logo: str, flow_id: str, flow_type: int):\n        statement = update(MessageSession).where(\n            MessageSession.flow_id == flow_id,\n            MessageSession.flow_type == flow_type\n        ).values(\n            flow_name=name,\n            flow_description=description,\n            flow_logo=logo\n        )\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/tag.py",
    "content": "from datetime import datetime\nfrom typing import Optional, List, Dict\n\nfrom sqlalchemy import Column, DateTime, UniqueConstraint\nfrom sqlmodel import Field, select, delete, and_, func, text\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.group_resource import ResourceTypeEnum\n\n\nclass TagBase(SQLModelSerializable):\n    \"\"\"\n    Tag Form\n    \"\"\"\n    name: Optional[str] = Field(default=None, index=True, unique=True, description=\"Label Name\")\n    user_id: int = Field(default=0, description='Create UserID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')), description=\"Creation Time\")\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Tag(TagBase, table=True):\n    id: Optional[int] = Field(default=None, index=True, primary_key=True, description=\"Tag UniqueID\")\n\n\nclass TagLinkBase(SQLModelSerializable):\n    \"\"\"\n    Label Association Table\n    \"\"\"\n    tag_id: int = Field(index=True, description=\"labelID\")\n    resource_id: str = Field(description=\"Resource UniqueID\")\n    resource_type: int = Field(description=\"Resource Type\")  # Usegroup_resource.ResourceTypeEnumEnumeration\n    user_id: int = Field(default=0, description='Create UserID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')), description=\"Creation Time\")\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass TagLink(TagLinkBase, table=True):\n    __table_args__ = (UniqueConstraint('resource_id', 'resource_type', 'tag_id', name='resource_tag_uniq'),)\n    id: Optional[int] = Field(default=None, index=True, primary_key=True, description=\"Tag Association UniqueID\")\n\n\nclass TagDao(Tag):\n\n    @classmethod\n    def search_tags(cls, keyword: str = None, page: int = 0, limit: int = 0) -> List[Tag]:\n        \"\"\" Get all tags by default Paginable \"\"\"\n        statement = select(Tag)\n        if keyword:\n            statement = statement.where(Tag.name.like(f'%{keyword}%'))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def count_tags(cls, keyword: str = None) -> int:\n        \"\"\" Count the number of tags \"\"\"\n        statement = select(func.count(Tag.id))\n        if keyword:\n            statement = statement.where(Tag.name.like(f'%{keyword}%'))\n        with get_sync_db_session() as session:\n            return session.scalar(statement)\n\n    @classmethod\n    def insert_tag(cls, data: Tag) -> Tag:\n        \"\"\" Insert a new label data \"\"\"\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def delete_tag(cls, tag_id: int) -> bool:\n        \"\"\" Delete a label data \"\"\"\n        with get_sync_db_session() as session:\n            # Delete tag data\n            session.exec(delete(Tag).where(Tag.id == tag_id))\n            # Delete data associated with tags\n            session.exec(delete(TagLink).where(TagLink.tag_id == tag_id))\n            session.commit()\n            return True\n\n    @classmethod\n    def get_tag_by_name(cls, name: str) -> Tag:\n        \"\"\" Find tags by tag name \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(Tag).where(Tag.name == name)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_tag_by_id(cls, tag_id: int) -> Tag:\n        \"\"\" by TagIDFind Tags \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(Tag).where(Tag.id == tag_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def get_tags_by_ids(cls, tag_ids: List[int]) -> List[Tag]:\n        \"\"\" by TagIDFind Tags \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(Tag).where(Tag.id.in_(tag_ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_tags_by_resource(cls, resource_type: ResourceTypeEnum | None, resource_ids: list[str]) -> Dict[\n        str, List[Tag]]:\n        \"\"\" Query all tags under resources \"\"\"\n        if resource_type is None:\n            statement = select(Tag.id, Tag.name, TagLink.resource_id).join(TagLink,\n                                                                           and_(\n                                                                               Tag.id == TagLink.tag_id,\n                                                                               TagLink.resource_id.in_(resource_ids)))\n        else:\n            statement = select(Tag.id, Tag.name, TagLink.resource_id).join(TagLink,\n                                                                           and_(\n                                                                               Tag.id == TagLink.tag_id,\n                                                                               TagLink.resource_id.in_(resource_ids),\n                                                                               TagLink.resource_type == resource_type.value))\n        with get_sync_db_session() as session:\n            result = session.exec(statement).all()\n        ret = {}\n        for one in result:\n            if one[2] not in ret:\n                ret[one[2]] = []\n            ret[one[2]].append(Tag(id=one[0], name=one[1]))\n        return ret\n\n    @classmethod\n    def get_tags_by_resource_batch(cls, resource_type: List[ResourceTypeEnum], resource_ids: list[str]) -> Dict[\n        str, List[Tag]]:\n        \"\"\" Query all tags under resources \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(Tag.id, Tag.name, TagLink.resource_id).join(TagLink,\n                                                                           and_(\n                                                                               Tag.id == TagLink.tag_id,\n                                                                               TagLink.resource_id.in_(resource_ids),\n                                                                               TagLink.resource_type.in_(\n                                                                                   [x.value for x in resource_type])))\n            result = session.exec(statement).all()\n            ret = {}\n            for one in result:\n                if one[2] not in ret:\n                    ret[one[2]] = []\n                ret[one[2]].append(Tag(id=one[0], name=one[1]))\n            return ret\n\n    @classmethod\n    def get_resources_by_tags(cls, tag_ids: List[int], resource_type: ResourceTypeEnum) -> List[TagLink]:\n        \"\"\" Query all resources under tags \"\"\"\n\n        statement = select(TagLink).where(TagLink.tag_id.in_(tag_ids), TagLink.resource_type == resource_type.value)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_resources_by_tags_batch(cls, tag_ids: List[int], resource_type: List[ResourceTypeEnum]) -> List[TagLink]:\n        \"\"\" Query all resources under tags \"\"\"\n\n        statement = select(TagLink).where(TagLink.tag_id.in_(tag_ids),\n                                          TagLink.resource_type.in_([x.value for x in resource_type]))\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def insert_tag_link(cls, tag_link: TagLink) -> TagLink:\n        \"\"\" Insert Label Associated Data \"\"\"\n        with get_sync_db_session() as session:\n            session.add(tag_link)\n            session.commit()\n            session.refresh(tag_link)\n            return tag_link\n\n    @classmethod\n    def get_tag_link(cls, tag_link_id: int) -> TagLink:\n        \"\"\" Associate via tagsIDFind Label Associated Data \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(TagLink).where(TagLink.id == tag_link_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def delete_tag_link(cls, tag_link_id: int) -> bool:\n        \"\"\" Delete tag association data \"\"\"\n        with get_sync_db_session() as session:\n            # Delete tag association data\n            session.exec(delete(TagLink).where(TagLink.id == tag_link_id))\n            session.commit()\n            return True\n\n    @classmethod\n    def delete_resource_tag(cls, tag_id: int, resource_id: str, resource_type: ResourceTypeEnum) -> bool:\n        \"\"\" Delete tag association data \"\"\"\n        statement = delete(TagLink).where(\n            TagLink.tag_id == tag_id,\n            TagLink.resource_id == resource_id,\n            TagLink.resource_type == resource_type.value\n        )\n        with get_sync_db_session() as session:\n            # Delete tag association data\n            session.exec(statement)\n            session.commit()\n            return True\n"
  },
  {
    "path": "src/backend/bisheng/database/models/template.py",
    "content": "from datetime import datetime\nfrom typing import Dict, Optional\n\nfrom pydantic import model_validator\nfrom sqlalchemy import JSON, Column, DateTime, text, String\nfrom sqlmodel import Field\n\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass TemplateSkillBase(SQLModelSerializable):\n    name: str = Field(index=True)\n    description: Optional[str] = Field(default=None, sa_column=Column(String(length=1000)))\n    data: Optional[Dict] = Field(default=None, sa_column=Column(JSON))\n    order_num: Optional[int] = Field(default=True, index=True)\n    # 1 flow 5 assistant 10 workflow\n    flow_type: Optional[int] = Field(default=1)\n    flow_id: Optional[str] = Field(default=None, index=False)\n    guide_word: Optional[str] = Field(default=None, sa_column=Column(String(length=1000)))\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Template(TemplateSkillBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass TemplateRead(TemplateSkillBase):\n    id: int\n    name: str\n\n\nclass TemplateCreate(TemplateSkillBase):\n    # 1 flow 5 assistant 10 workflow\n    # flow_type: int = 1\n    pass\n\n\nclass TemplateUpdate(SQLModelSerializable):\n    name: Optional[str] = None\n    description: Optional[str] = None\n    data: Optional[Dict] = None\n    order_num: Optional[int] = None\n    guide_word: Optional[str] = None\n\n    @model_validator(mode=\"before\")\n    @classmethod\n    def convert_field(cls, values: dict) -> dict:\n        if values.get(\"order_num\", None):\n            values['order_num'] = int(float(values['order_num']))\n        return values\n"
  },
  {
    "path": "src/backend/bisheng/database/models/user_group.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional\n\nfrom sqlalchemy import Column, DateTime, delete, text, INT\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.models.group import DefaultGroup\n\n\nclass UserGroupBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(\n        default=None,\n        foreign_key=\"user.user_id\",\n        primary_key=True,\n        ondelete=\"CASCADE\"\n    )\n\n    group_id: Optional[int] = Field(\n        default=None,\n        foreign_key=\"group.id\",\n        primary_key=True,\n        ondelete=\"CASCADE\"\n    )\n    is_group_admin: bool = Field(default=False, index=False, description='Is Group Admin')  # Admin does not belong to this user group\n    remark: Optional[str] = Field(default=None, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass UserGroup(UserGroupBase, table=True):\n    id: Optional[int] = Field(default=None, sa_column=Column(INT, primary_key=True, autoincrement=True))\n\n\nclass UserGroupRead(UserGroupBase):\n    id: Optional[int] = None\n\n\nclass UserGroupUpdate(UserGroupBase):\n    user_id: Optional[int] = None\n    group_id: Optional[int] = None\n    is_group_admin: Optional[bool] = None\n    remark: Optional[str] = None\n\n\nclass UserGroupCreate(UserGroupBase):\n    pass\n\n\nclass UserGroupDao(UserGroupBase):\n\n    @classmethod\n    def get_user_group(cls, user_id: int) -> List[UserGroup]:\n        \"\"\"\n        Get the user group the user is in\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.user_id == user_id).where(UserGroup.is_group_admin == 0)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_user_group(cls, user_id: int) -> List[UserGroup]:\n        \"\"\"\n        Get the user group the user is in asynchronously\n        \"\"\"\n        statement = select(UserGroup).where(UserGroup.user_id == user_id).where(UserGroup.is_group_admin == 0)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_user_admin_group(cls, user_id: int) -> List[UserGroup]:\n        \"\"\"\n        Get user groups where the user is an administrator\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.user_id == user_id).where(UserGroup.is_group_admin == 1)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_user_admin_group(cls, user_id: int, group_id: int = None) -> List[UserGroup]:\n        \"\"\"\n        Get user groups where the user is an administrator, If it passes,group_idOnly the group's admin information will be retrieved\n        \"\"\"\n        statement = select(UserGroup).where(UserGroup.user_id == user_id).where(UserGroup.is_group_admin == 1)\n        if group_id:\n            statement = statement.where(UserGroup.group_id == group_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def insert_user_group(cls, user_group: UserGroupCreate) -> UserGroup:\n        with get_sync_db_session() as session:\n            user_group = UserGroup.validate(user_group)\n            session.add(user_group)\n            session.commit()\n            session.refresh(user_group)\n            return user_group\n\n    @classmethod\n    def insert_user_group_admin(cls, user_id: int, group_id: int) -> UserGroup:\n        \"\"\"\n        Set user as group administrator\n        \"\"\"\n        with get_sync_db_session() as session:\n            user_group = UserGroup(user_id=user_id, group_id=group_id, is_group_admin=True)\n            session.add(user_group)\n            session.commit()\n            session.refresh(user_group)\n            return user_group\n\n    @classmethod\n    def delete_user_group(cls, user_id: int, group_id: int) -> None:\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.user_id == user_id,\n                                                UserGroup.group_id == group_id)\n            user_group = session.exec(statement).first()\n            session.delete(user_group)\n            session.commit()\n\n    @classmethod\n    def delete_user_groups(cls, user_id: int, group_ids: List[int]):\n        \"\"\"\n        Remove users from certain groups\n        \"\"\"\n        with get_sync_db_session() as session:\n            # Empty all old user groups first\n            statement = delete(UserGroup).where(\n                UserGroup.user_id == user_id).where(\n                UserGroup.is_group_admin == 0).where(\n                UserGroup.group_id.in_(group_ids)\n            )\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def add_user_groups(cls, user_id: int, group_ids: List[int]):\n        \"\"\"\n        Add users to some groups\n        \"\"\"\n        with get_sync_db_session() as session:\n            for group_id in group_ids:\n                user_group = UserGroup(user_id=user_id, group_id=group_id, is_group_admin=0)\n                session.add(user_group)\n            session.commit()\n\n    @classmethod\n    def get_group_user(cls,\n                       group_id: int,\n                       page_size: str = None,\n                       page_num: str = None) -> List[UserGroup]:\n        \"\"\"\n        Get all users in a group, excluding admins\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.group_id == group_id).where(UserGroup.is_group_admin == 0)\n            if page_num and page_size:\n                statement = statement.offset(\n                    (int(page_num) - 1) * int(page_size)).limit(int(page_size))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_groups_user(cls,\n                        group_ids: List[int],\n                        page: int = 0,\n                        limit: int = 0) -> List[UserGroup]:\n        \"\"\"\n        Batch Get Users Under Grouping\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.group_id.in_(group_ids)).where(\n                UserGroup.is_group_admin == 0)\n            if page and limit:\n                statement = statement.offset((page - 1) * limit).limit(limit)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_group_users(cls,\n                        group_ids: List[int],\n                        page: int = 0,\n                        limit: int = 0) -> List[UserGroup]:\n        \"\"\"\n        Batch Get Users Under Grouping\n        Args:\n            group_ids:\n            page:\n            limit:\n\n        Returns:\n\n        \"\"\"\n        statement = select(UserGroup).where(UserGroup.group_id.in_(group_ids))\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def is_users_in_group(cls, group_id: int, user_ids: List[int]) -> List[UserGroup]:\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.group_id == group_id,\n                                                UserGroup.user_id.in_(user_ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_groups_admins(cls, group_ids: List[int]) -> List[UserGroup]:\n        with get_sync_db_session() as session:\n            statement = select(UserGroup).where(UserGroup.group_id.in_(group_ids),\n                                                UserGroup.is_group_admin == 1)\n            return session.exec(statement).all()\n\n    @classmethod\n    def update_user_groups(cls, user_groups: List[UserGroup]) -> List[UserGroup]:\n        with get_sync_db_session() as session:\n            session.add_all(user_groups)\n            session.commit()\n            return user_groups\n\n    @classmethod\n    async def add_default_user_group(cls, user_id: int) -> None:\n        \"\"\"\n        Add users to the default user group\n        \"\"\"\n        async with get_async_db_session() as session:\n            user_group = UserGroup(user_id=user_id, group_id=DefaultGroup, is_group_admin=False)\n            session.add(user_group)\n            await session.commit()\n\n    @classmethod\n    def delete_group_admins(cls, group_id: int, admin_ids: List[int]) -> None:\n        \"\"\"\n        Bulk delete user groupsadmin\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = delete(UserGroup).where(\n                UserGroup.group_id == group_id).where(\n                UserGroup.user_id.in_(admin_ids)).where(\n                UserGroup.is_group_admin == 1)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def delete_group_all_admin(cls, group_id: int) -> None:\n        \"\"\"\n        Remove all administrators under the user group\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = delete(UserGroup).where(\n                UserGroup.group_id == group_id).where(\n                UserGroup.is_group_admin == 1)\n            session.exec(statement)\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/database/models/user_link.py",
    "content": "from datetime import datetime\nfrom typing import List\nfrom typing import Optional\n\nfrom sqlalchemy import text, and_, delete\nfrom sqlalchemy.exc import IntegrityError\nfrom sqlmodel import Field, Column, DateTime, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass UserLinkBase(SQLModelSerializable):\n    user_id: int = Field(index=True)\n    type: str = Field(index=True, max_length=32)\n    type_detail: str = Field(index=True, max_length=255, description='typeRelated Information')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass UserLink(UserLinkBase, table=True):\n    __tablename__ = 'user_link'\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass UserLinkDao(UserLinkBase):\n    @classmethod\n    def get_user_link(cls, user_id: int, types: list) -> List[UserLink]:\n        with get_sync_db_session() as session:\n            statement = select(UserLink).where(and_(UserLink.user_id == user_id, UserLink.type.in_(types)))\n            statement = statement.order_by(UserLink.create_time.desc())  # Sort by creation time descending, newest added first\n            return session.exec(statement).all()\n\n    @classmethod\n    def add_user_link(cls, user_id: int, type: str, type_detail: str) -> tuple[UserLink, bool]:\n        \"\"\"\n        Add user link\n        \n        Returns:\n            tuple[UserLink, bool]: (User Linked Objects, Whether to add for new)\n        \"\"\"\n        with get_sync_db_session() as session:\n            try:\n                # Try inserting directly, leveraging the database's unique constraints\n                user_link = UserLink(user_id=user_id, type=type, type_detail=type_detail, create_time=datetime.now(),\n                                     update_time=datetime.now())\n                session.add(user_link)\n                session.commit()\n                return user_link, True  # Add New\n            except IntegrityError:\n                # Rollback and query existing records if unique constraints are violated\n                session.rollback()\n                existing = session.exec(\n                    select(UserLink).where(\n                        and_(\n                            UserLink.user_id == user_id,\n                            UserLink.type == type,\n                            UserLink.type_detail == type_detail\n                        )\n                    )\n                ).first()\n                return existing, False  # already exists\n\n    @classmethod\n    def delete_user_link(cls, user_id: int, type: str, type_detail: str) -> None:\n        with get_sync_db_session() as session:\n            statement = delete(UserLink).where(\n                and_(UserLink.user_id == user_id, UserLink.type == type, UserLink.type_detail == type_detail))\n            session.exec(statement)\n            session.commit()\n        return True\n"
  },
  {
    "path": "src/backend/bisheng/database/models/variable_value.py",
    "content": "from datetime import datetime\nfrom typing import Optional, List\n\n# if TYPE_CHECKING:\nfrom pydantic import field_validator\nfrom sqlalchemy import Column, DateTime, text\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session\n\n\nclass VariableBase(SQLModelSerializable):\n    flow_id: str = Field(index=True, description='Belonging Skills')\n    version_id: int = Field(description='Version of the skill to which it belongs')\n    node_id: str = Field(index=True, description='belong tonode')\n    variable_name: Optional[str] = Field(index=True, default=None, description='Variables')\n    value_type: int = Field(index=False, description='Variable type1=Text 2=list 3=file')\n    is_option: int = Field(index=False, default=1, description='Required? 1=Required 0=Price is not required')\n    value: str = Field(index=False, default=0, description='variable value, the length of the incoming text when the text is')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('variable_name')\n    @classmethod\n    def validate_length(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            return v\n        if len(v) > 50:\n            v = v[:50]\n\n        return v\n\n    @field_validator('value')\n    @classmethod\n    def validate_value(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            return v\n        # Deduplication keeps the original order\n        v_list = v.split(',')\n        res = []\n        for one in v_list:\n            if one not in res:\n                res.append(one)\n        return ','.join(res)\n\n\nclass Variable(VariableBase, table=True):\n    __tablename__ = 't_variable_value'\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass VariableCreate(VariableBase):\n    pass\n\n\nclass VariableRead(VariableBase):\n    id: int\n\n\nclass VariableDao(Variable):\n\n    @classmethod\n    def create_variable(cls, variable: Variable) -> Variable:\n        \"\"\"\n        Create New variant\n        \"\"\"\n        with get_sync_db_session() as session:\n            db_variable = Variable.from_orm(variable)\n            session.add(db_variable)\n            session.commit()\n            session.refresh(db_variable)\n            return db_variable\n\n    @classmethod\n    def get_variables(cls, flow_id: str, node_id: str, variable_name: str, version_id: int) -> List[Variable]:\n        with get_sync_db_session() as session:\n            query = select(Variable).where(Variable.flow_id == flow_id)\n            if node_id:\n                query = query.where(Variable.node_id == node_id)\n            if variable_name:\n                query = query.where(Variable.variable_name == variable_name)\n            if version_id:\n                query = query.where(Variable.version_id == version_id)\n            return session.exec(query.order_by(Variable.id.asc())).all()\n\n    @classmethod\n    def copy_variables(cls, flow_id: str, old_version_id: int, version_id: int) -> List[Variable]:\n        \"\"\"\n        Copy the version of the form data to In the new version\n        \"\"\"\n        with get_sync_db_session() as session:\n            query = select(Variable).where(Variable.flow_id == flow_id, Variable.version_id == old_version_id)\n            old_version = session.exec(query).all()\n            for one in old_version:\n                new_version = Variable.from_orm(one)\n                new_version.id = None\n                new_version.version_id = version_id\n                session.add(new_version)\n            session.commit()\n            return old_version\n"
  },
  {
    "path": "src/backend/bisheng/default_node.yaml",
    "content": "autogen_roles:\n  AutoGenAssistant:\n    documentation: \"\"\n  AutoGenGroupChatManager:\n    documentation: \"\"\n  AutoGenUser:\n    documentation: \"\"\n  AutoGenCoder:\n    documentation: \"\"\n  AutoGenCustomRole:\n    documentation: \"\"\nagents:\n  LLMFunctionsAgent:\n    documentation: \"\"\n  ZeroShotAgent:\n    documentation: \"https://python.langchain.com/docs/modules/agents/how_to/custom_mrkl_agent\"\n  JsonAgent:\n    documentation: \"https://python.langchain.com/docs/modules/agents/toolkits/openapi\"\n  CSVAgent:\n    documentation: \"https://python.langchain.com/docs/modules/agents/toolkits/csv\"\n  AgentInitializer:\n    documentation: \"https://python.langchain.com/docs/modules/agents/agent_types/\"\n  VectorStoreAgent:\n    documentation: \"\"\n  VectorStoreRouterAgent:\n    documentation: \"\"\n  SQLAgent:\n    documentation: \"\"\n  ChatglmFunctionsAgent:\n    documentation: \"\"\n  OpenAIToolsAgent:\n    documentation: \"\"\nchains:\n  RetrievalChain:\n    documentation: \"\"\n  RuleBasedRouter:\n    documentation: \"\"\n  MultiRuleChain:\n    documentation: \"\"\n  MultiPromptChain:\n    documentation: \"\"\n  LLMRouterChain:\n    documentation: \"\"\n  AutoGenChain:\n    documentation: \"\"\n  APIChain:\n    documentation: \"\"\n  TransformChain:\n    documentation: \"\"\n  QAGenerationChainV2:\n    documentation: \"\"\n  SimpleSequentialChain:\n    documentation: \"\"\n  SequentialChain:\n    documentation: \"\"\n  LLMChain:\n    documentation: \"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"\n  LLMMathChain:\n    documentation: \"https://python.langchain.com/docs/modules/chains/additional/llm_math\"\n  LLMCheckerChain:\n    documentation: \"https://python.langchain.com/docs/modules/chains/additional/llm_checker\"\n  ConversationChain:\n    documentation: \"\"\n  SeriesCharacterChain:\n    documentation: \"\"\n  MidJourneyPromptChain:\n    documentation: \"\"\n  TimeTravelGuideChain:\n    documentation: \"\"\n  SQLDatabaseChain:\n    documentation: \"\"\n  RetrievalQA:\n    documentation: \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n  BishengRetrievalQA:\n    documentation: \"\"\n  RetrievalQAWithSourcesChain:\n    documentation: \"\"\n  ConversationalRetrievalChain:\n    documentation: \"https://python.langchain.com/docs/modules/chains/popular/chat_vector_db\"\n  CombineDocsChain:\n    documentation: \"\"\n  # SummarizeDocsChain:\n  #   documentation: \"\"\n  LoaderOutputChain:\n    documentation: \"\"\n  DalleGeneratorChain:\n    documentation: \"\"\ndocumentloaders:\n  FireCrawlLoader:\n    documentation: \"\"\n  CustomKVLoader:\n    documentation: \"\"\n  UniversalKVLoader:\n    documentation: \"\"\n  ElemUnstructuredLoaderV0:\n    documentation: \"\"\n  AirbyteJSONLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\"\n  CoNLLULoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/conll-u\"\n  CSVLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\"\n  EverNoteLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/evernote\"\n  FacebookChatLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/facebook_chat\"\n  GutenbergLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/gutenberg\"\n  BSHTMLLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/how_to/html\"\n  PyPDFDirectoryLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/how_to/pdf\"\n  PyPDFLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/how_to/pdf\"\n  SRTLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/subtitle\"\n  TelegramChatLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/telegram\"\n  TextLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/\"\n  WebBaseLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/web_base\"\n  AZLyricsLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/azlyrics\"\n  CollegeConfidentialLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/college_confidential\"\n  HNLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/hacker_news\"\n  IFixitLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/ifixit\"\n  IMSDbLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/imsdb\"\n  GitbookLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/gitbook\"\n  ReadTheDocsLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/readthedocs_documentation\"\n  SlackDirectoryLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/slack\"\n  NotionDirectoryLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/notion\"\n  DirectoryLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/how_to/file_directory\"\n  GitLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/git\"\n  PDFWithSemanticLoader:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/git\"\nembeddings:\n  BishengEmbedding:\n    documentation: \"\"\n  OpenAIProxyEmbedding:\n    documentation: \"\"\n  OpenAIEmbeddings:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\"\n  HuggingFaceEmbeddings:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/sentence_transformers\"\n  CohereEmbeddings:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\"\n  WenxinEmbeddings:\n    documentation: \"\"\n  HostEmbeddings:\n    documentation: \"\"\n  CustomHostEmbedding:\n    documentation: \"\"\nllms:\n  BishengLLM:\n    documentation: \"\"\n  AzureChatOpenAI:\n    documentation: \"\"\n  OpenAI:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\"\n  ChatOpenAI:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"\n  LlamaCpp:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/llamacpp\"\n  CTransformers:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/ctransformers\"\n  Cohere:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/cohere\"\n  Anthropic:\n    documentation: \"\"\n  ChatAnthropic:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/anthropic\"\n  HuggingFaceHub:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/huggingface_hub\"\n  VertexAI:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/google_vertex_ai_palm\"\n  ProxyChatLLM:\n    documentation: \"\"\n  ChatMinimaxAI:\n    documentation: \"\"\n  ChatWenxin:\n    documentation: \"\"\n  ChatQWen:\n    documentation: \"\"\n  ChatZhipuAI:\n    documentation: \"\"\n  ChatXunfeiAI:\n    documentation: \"\"\n  HostChatGLM:\n    documentation: \"\"\n  HostBaichuanChat:\n    documentation: \"\"\n  HostLlama2Chat:\n    documentation: \"\"\n  HostQwenChat:\n    documentation: \"\"\n  HostQwen1_5Chat:\n    documentation: \"\"\n  CustomLLMChat:\n    documentation: \"\"\n  SenseChat:\n    documentation: \"\"\n  HostYuanChat:\n    documentation: \"\"\n  HostYiChat:\n    documentation: \"\"\n  ###\n  # There's a bug in this component deactivating until we get it sorted: _language_models.py\", line 804, in send_message\n  #     is_blocked=safety_attributes.get(\"blocked\", False),\n  # AttributeError: 'list' object has no attribute 'get'\n  # ChatVertexAI:\n  #   documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/google_vertex_ai_palm\"\n  ###\nmemories:\n  # https://github.com/supabase-community/supabase-py/issues/482\n  # ZepChatMessageHistory:\n  #   documentation: \"https://python.langchain.com/docs/modules/memory/integrations/zep_memory\"\n  ConversationEntityMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/integrations/entity_memory_with_sqlite\"\n  # https://github.com/hwchase17/langchain/issues/6091\n  # SQLiteEntityStore:\n  #   documentation: \"https://python.langchain.com/docs/modules/memory/integrations/entity_memory_with_sqlite\"\n  PostgresChatMessageHistory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/integrations/postgres_chat_message_history\"\n  ConversationBufferMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n  ConversationSummaryMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/how_to/summary\"\n  ConversationKGMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/how_to/kg\"\n  ConversationBufferWindowMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/how_to/buffer_window\"\n  VectorStoreRetrieverMemory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/how_to/vectorstore_retriever_memory\"\n  MongoDBChatMessageHistory:\n    documentation: \"https://python.langchain.com/docs/modules/memory/integrations/mongodb_chat_message_history\"\n  ConversationRedisMemory:\n    documentation: \"\"\nprompts:\n  ChatMessagePromptTemplate:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/msg_prompt_templates\"\n  HumanMessagePromptTemplate:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\"\n  SystemMessagePromptTemplate:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\"\n  ChatPromptTemplate:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\"\n  PromptTemplate:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\"\n  MessagesPlaceholder:\n    documentation: \"\"\ntextsplitters:\n  CharacterTextSplitter:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/character_text_splitter\"\n  RecursiveCharacterTextSplitter:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\ntoolkits:\n  OpenAPIToolkit:\n    documentation: \"\"\n  JsonToolkit:\n    documentation: \"\"\n  VectorStoreInfo:\n    documentation: \"\"\n  VectorStoreRouterToolkit:\n    documentation: \"\"\n  VectorStoreToolkit:\n    documentation: \"\"\ntools:\n  Search:\n    documentation: \"\"\n  PAL-MATH:\n    documentation: \"\"\n  Calculator:\n    documentation: \"\"\n  Serper Search:\n    documentation: \"\"\n  Tool:\n    documentation: \"\"\n  PythonFunctionTool:\n    documentation: \"\"\n  PythonFunction:\n    documentation: \"\"\n  JsonSpec:\n    documentation: \"\"\n  News API:\n    documentation: \"\"\n  TMDB API:\n    documentation: \"\"\n  Podcast API:\n    documentation: \"\"\n  QuerySQLDataBaseTool:\n    documentation: \"\"\n  InfoSQLDatabaseTool:\n    documentation: \"\"\n  ListSQLDatabaseTool:\n    documentation: \"\"\n  BingSearchRun:\n    documentation: \"\"\n  GoogleSearchRun:\n    documentation: \"\"\n  GoogleSearchResults:\n    documentation: \"\"\n  GoogleSerperRun:\n    documentation: \"\"\n  JsonListKeysTool:\n    documentation: \"\"\n  JsonGetValueTool:\n    documentation: \"\"\n  PythonREPLTool:\n    documentation: \"\"\n  PythonAstREPLTool:\n    documentation: \"\"\n  RequestsGetTool:\n    documentation: \"\"\n  RequestsPostTool:\n    documentation: \"\"\n  RequestsPatchTool:\n    documentation: \"\"\n  RequestsPutTool:\n    documentation: \"\"\n  RequestsDeleteTool:\n    documentation: \"\"\n  WikipediaQueryRun:\n    documentation: \"\"\n  WolframAlphaQueryRun:\n    documentation: \"\"\nutilities:\n  BingSearchAPIWrapper:\n    documentation: \"\"\n  GoogleSearchAPIWrapper:\n    documentation: \"\"\n  GoogleSerperAPIWrapper:\n    documentation: \"\"\n  SearxResults:\n    documentation: \"\"\n  SearxSearchWrapper:\n    documentation: \"\"\n  SerpAPIWrapper:\n    documentation: \"\"\n  WikipediaAPIWrapper:\n    documentation: \"\"\n  WolframAlphaAPIWrapper:\n    documentation: \"\"\nretrievers:\n  MixEsVectorRetriever:\n    documentation: \"\"\n  MultiQueryRetriever:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/retrievers/how_to/MultiQueryRetriever\"\n  # https://github.com/supabase-community/supabase-py/issues/482\n  # ZepRetriever:\n  #   documentation: \"https://python.langchain.com/docs/modules/data_connection/retrievers/integrations/zep_memorystore\"\nvectorstores:\n  ElasticKeywordsSearch:\n    documentation: \"http://192.168.106.116:8030\"\n  ElasticsearchStore:\n    documentation: https://python.langchain.com/docs/integrations/vectorstores/elasticsearch\n  Milvus:\n    documentation: \"http://192.168.106.116:8030\"\n  MilvusWithPermissionCheck:\n    documentation: \"http://192.168.106.116:8030\"\n  ElasticsearchWithPermissionCheck:\n    documentation: \"http://192.168.106.116:8030\"\n  Chroma:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\"\n  Qdrant:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/qdrant\"\n  Weaviate:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/weaviate\"\n  FAISS:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/faiss\"\n  Pinecone:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/pinecone\"\n  SupabaseVectorStore:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/supabase\"\n  MongoDBAtlasVectorSearch:\n    documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/mongodb_atlas\"\n  # Requires docarray >=0.32.0 but langchain-serve requires jina 3.15.2 which doesn't support docarray >=0.32.0\n  # DocArrayInMemorySearch:\n  #   documentation: \"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/docarray_in_memory\"\nwrappers:\n  RequestsWrapper:\n    documentation: \"\"\n  SQLDatabase:\n    documentation: \"\"\noutput_parsers:\n  StructuredOutputParser:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/output_parsers/structured\"\n  ResponseSchema:\n    documentation: \"https://python.langchain.com/docs/modules/model_io/output_parsers/structured\"\n  RouterOutputParser:\n    documentation: \"\"\n\ninput_output:\n  VariableNode:\n    documentation: \"\"\n  InputNode:\n    documentation: \"\"\n  Output:\n    documentation: \"\"\n  InputFileNode:\n    documentation: \"\"\n"
  },
  {
    "path": "src/backend/bisheng/field_typing/__init__.py",
    "content": "from typing import Any\n\nfrom .constants import (AgentExecutor, BaseChatMemory, BaseLanguageModel, BaseLLM, BaseLoader,\n                        BaseMemory, BaseOutputParser, BasePromptTemplate, BaseRetriever, Callable,\n                        Chain, ChatPromptTemplate, Data, Document, Embeddings, NestedDict, Object,\n                        Prompt, PromptTemplate, TextSplitter, Tool, VectorStore)\nfrom .range_spec import RangeSpec\n\n\ndef _import_template_field():\n    from bisheng.template.field.base import TemplateField\n\n    return TemplateField\n\n\ndef __getattr__(name: str) -> Any:\n    # This is to avoid circular imports\n    if name == 'TemplateField':\n        return _import_template_field()\n    elif name == 'RangeSpec':\n        return RangeSpec\n    # The other names should work as if they were imported from constants\n    # Import the constants module langflow.field_typing.constants\n    from . import constants\n\n    return getattr(constants, name)\n\n\n__all__ = [\n    'NestedDict',\n    'Data',\n    'Tool',\n    'PromptTemplate',\n    'Chain',\n    'BaseChatMemory',\n    'BaseLLM',\n    'BaseLanguageModel',\n    'BaseLoader',\n    'BaseMemory',\n    'BaseOutputParser',\n    'BaseRetriever',\n    'VectorStore',\n    'Embeddings',\n    'TextSplitter',\n    'Document',\n    'AgentExecutor',\n    'Object',\n    'Callable',\n    'BasePromptTemplate',\n    'ChatPromptTemplate',\n    'Prompt',\n    'RangeSpec',\n    'TemplateField',\n]\n"
  },
  {
    "path": "src/backend/bisheng/field_typing/constants.py",
    "content": "from typing import Callable, Dict, Union\n\nfrom langchain.agents.agent import AgentExecutor\nfrom langchain.chains.base import Chain\nfrom langchain.document_loaders.base import BaseLoader\nfrom langchain.llms.base import BaseLLM\nfrom langchain.memory.chat_memory import BaseChatMemory\nfrom langchain.prompts import BasePromptTemplate, ChatPromptTemplate, PromptTemplate\nfrom langchain.schema import BaseOutputParser, BaseRetriever, Document\nfrom langchain.schema.embeddings import Embeddings\nfrom langchain.schema.language_model import BaseLanguageModel\nfrom langchain.schema.memory import BaseMemory\nfrom langchain.text_splitter import TextSplitter\nfrom langchain.tools import Tool\nfrom langchain_community.vectorstores import VectorStore\n\n# Type alias for more complex dicts\nNestedDict = Dict[str, Union[str, Dict]]\n\n\nclass Object:\n    pass\n\n\nclass Data:\n    pass\n\n\nclass Prompt:\n    pass\n\n\nLANGCHAIN_BASE_TYPES = {\n    'Chain': Chain,\n    'AgentExecutor': AgentExecutor,\n    'Tool': Tool,\n    'BaseLLM': BaseLLM,\n    'BaseLanguageModel': BaseLanguageModel,\n    'PromptTemplate': PromptTemplate,\n    'ChatPromptTemplate': ChatPromptTemplate,\n    'BasePromptTemplate': BasePromptTemplate,\n    'BaseLoader': BaseLoader,\n    'Document': Document,\n    'TextSplitter': TextSplitter,\n    'VectorStore': VectorStore,\n    'Embeddings': Embeddings,\n    'BaseRetriever': BaseRetriever,\n    'BaseOutputParser': BaseOutputParser,\n    'BaseMemory': BaseMemory,\n    'BaseChatMemory': BaseChatMemory,\n}\n# Langchain base types plus Python base types\nCUSTOM_COMPONENT_SUPPORTED_TYPES = {\n    **LANGCHAIN_BASE_TYPES,\n    'NestedDict': NestedDict,\n    'Data': Data,\n    'Object': Object,\n    'Callable': Callable,\n    'Prompt': Prompt,\n}\n"
  },
  {
    "path": "src/backend/bisheng/field_typing/range_spec.py",
    "content": "from pydantic import field_validator, BaseModel, model_validator\n\n\nclass RangeSpec(BaseModel):\n    min: float = -1.0\n    max: float = 1.0\n    step: float = 0.1\n\n    @model_validator(mode='before')\n    @classmethod\n    def max_must_be_greater_than_min(cls, values):\n        if 'min' in values and values['max'] <= values['min']:\n            raise ValueError('max must be greater than min')\n        return values\n\n    @field_validator('step')\n    @classmethod\n    def step_must_be_positive(cls, v):\n        if v <= 0:\n            raise ValueError('step must be positive')\n        return v\n"
  },
  {
    "path": "src/backend/bisheng/finetune/README.md",
    "content": "# 微调和数据集模块\n"
  },
  {
    "path": "src/backend/bisheng/finetune/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/finetune/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/finetune/api/finetune.py",
    "content": "import json\nimport tempfile\nfrom typing import Optional\n\nfrom fastapi import APIRouter, Body, Depends, File, Query, UploadFile\nfrom loguru import logger\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import resp_200, PageData\nfrom bisheng.core.cache.utils import async_file_download\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.finetune.domain.models.finetune import Finetune, FinetuneChangeModelName, FinetuneList\nfrom bisheng.finetune.domain.services.finetune import FinetuneService\nfrom bisheng.finetune.domain.services.finetune_file import FinetuneFileService\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.knowledge.domain.models.knowledge_file import QAKnoweldgeDao\nfrom ..schemas import FinetuneCreateReq\n\nrouter = APIRouter(prefix='/finetune', tags=['Finetune'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n# create finetune job\n@router.post('/job')\nasync def create_job(*, finetune: FinetuneCreateReq, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    finetune = Finetune(**finetune.model_dump(exclude={'method'}),\n                        method=finetune.method.value,\n                        user_id=login_user.user_id,\n                        user_name=login_user.user_name)\n    ret = await FinetuneService.create_job(finetune)\n    return resp_200(ret)\n\n\n# Delete training task\n@router.delete('/job')\nasync def delete_job(*, job_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    await FinetuneService.delete_job(job_id, login_user)\n    return resp_200(None)\n\n\n# Abort training mission\n@router.post('/job/cancel')\nasync def cancel_job(*, job_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.cancel_job(job_id, login_user)\n    return resp_200(ret)\n\n\n# Publish Training Tasks\n@router.post('/job/publish')\nasync def publish_job(*, job_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.publish_job(job_id, login_user)\n    return resp_200(ret)\n\n\n@router.post('/job/publish/cancel')\nasync def cancel_publish_job(*, job_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.cancel_publish_job(job_id, login_user)\n    return resp_200(ret)\n\n\n# Get a list of training tasks, support pagination\n@router.get('/job')\nasync def get_job(*,\n                  server: str = Query(default=None, description='RelatedRTService name'),\n                  status: str = Query(\n                      default='',\n                      title='Multiple commas,separator',\n                      description='the status of the training task,1: Training 2: Training failed 3: Task Aborted 4: Training Successful 5: Publication complete'),\n                  model_name: Optional[str] = Query(default='', description='Model Name,Fuzzy search'),\n                  page: Optional[int] = Query(default=1, description='Page'),\n                  limit: Optional[int] = Query(default=10, description='Listings Per Page'),\n                  login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    status_list = []\n    if status.strip():\n        status_list = [int(one) for one in status.strip().split(',')]\n    req_data = FinetuneList(server_name=server,\n                            status=status_list,\n                            model_name=model_name,\n                            page=page,\n                            limit=limit)\n    if not login_user.is_admin():\n        req_data.user_id = login_user.user_id\n    data, total = await FinetuneService.get_all_job(req_data)\n    return resp_200(data=PageData(data=data, total=total))\n\n\n# Get the latest details of the task, this interface will synchronize the querySFT-backendThe side updates the task status to the latest\n@router.get('/job/info')\nasync def get_job_info(*, job_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.get_job_info(job_id)\n    return resp_200(ret)\n\n\n@router.patch('/job/model')\nasync def update_job(*, req_data: FinetuneChangeModelName,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.change_job_model_name(req_data)\n    return resp_200(ret)\n\n\n@router.post('/job/file')\nasync def upload_file(*,\n                      files: list[UploadFile] = File(description='Training File List'),\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    try:\n        ret = await FinetuneFileService.upload_file(files, False, login_user)\n        return resp_200(ret)\n    except Exception as e:\n        logger.error(f'upload finetune file error: {e}')\n        raise e\n\n    finally:\n        if files:\n            for file in files:\n                await file.close()\n\n\n@router.post('/job/file/preset')\nasync def upload_preset_file(*,\n                             files: Optional[str] = Body(default=None, description='Preset Training File List'),\n                             name: Optional[str] = Body(description='Dataset Name'),\n                             qa_list: Optional[list[int]] = Body(default=None,\n                                                                 description='QAThe knowledge base upon'),\n                             login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ret = None\n    if files:\n        filepath, file_name = await async_file_download(files)\n        logger.info(f'dataset upload_file_name: {file_name}')\n        ret = await FinetuneFileService.upload_preset_file(name, 0, filepath, login_user)\n    elif qa_list:\n        # will beqaData byfinetuneFormat for file storage\n        qa_knowledge_db = await KnowledgeDao.aget_list_by_ids(qa_list)\n        qa_knowledge_db_ids = [qa_knowledge.id for qa_knowledge in qa_knowledge_db]\n        qa_db_list = await QAKnoweldgeDao.aget_qa_knowledge_by_knowledge_ids(qa_knowledge_db_ids)\n        qa_list = []\n        for qa in qa_db_list:\n            qa_list.extend([{\n                'instruction': question,\n                'input': '',\n                'output': json.loads(qa.answers)[0]\n            } for question in qa.questions])\n        with tempfile.NamedTemporaryFile(mode='w+', suffix='.json') as filepath:\n            json.dump(qa_list, filepath, ensure_ascii=False, indent=2)\n            filepath.seek(0)\n            ret = await FinetuneFileService.upload_preset_file(name, 1, filepath.name, login_user)\n    return resp_200(ret)\n\n\n# Get a list of preset training files\n@router.get('/job/file/preset')\nasync def get_preset_file(*,\n                          page_size: Optional[int] = None,\n                          page_num: Optional[int] = None,\n                          keyword: Optional[str] = None,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ret = await FinetuneFileService.get_preset_file(keyword, page_size, page_num)\n    return resp_200(ret)\n\n\n@router.delete('/job/file/preset')\nasync def delete_preset_file(*, file_id: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    await FinetuneFileService.delete_preset_file(file_id, login_user)\n    return resp_200()\n\n\n@router.get('/job/file/download')\nasync def get_download_url(*, file_url: str, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    minio_client = get_minio_storage_sync()\n    download_url = await minio_client.get_share_link(file_url, clear_host=False)\n    return resp_200(data={'url': download_url})\n\n\n@router.get('/server/filters')\nasync def get_server_filters(*, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ret = await FinetuneService.get_server_filters()\n    return resp_200(data=ret)\n\n\n@router.get('/model/list')\nasync def get_model_list(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                         server_id: int = Query(..., description='ftService UniqueID')):\n    \"\"\" DapatkanftList of all models under the service \"\"\"\n    ret = await FinetuneService.get_model_list(server_id)\n    return resp_200(data=ret)\n\n\n@router.get('/gpu')\nasync def get_gpu_info(*, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # get login user\n    ret = await FinetuneService.get_gpu_info()\n    return resp_200(data=ret)\n"
  },
  {
    "path": "src/backend/bisheng/finetune/api/server.py",
    "content": "from fastapi import APIRouter, Depends\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import resp_200\nfrom bisheng.finetune.domain.models.model_deploy import ModelDeployDao\nfrom bisheng.finetune.domain.models.server import Server, ServerCreate, ServerDao\nfrom ...common.errcode.http_error import NotFoundError\n\n# build router\nrouter = APIRouter(prefix='/server', tags=['server'], dependencies=[Depends(UserPayload.get_login_user)])\n\n\n@router.post('/add')\nasync def add_server(*, server: ServerCreate):\n    db_server = Server.model_validate(server)\n    db_server = await ServerDao.insert(db_server)\n    return resp_200(db_server)\n\n\n@router.get('/list_server')\nasync def list_server():\n    rt_server = await ServerDao.find_all_server()\n    rt_server = rt_server or []\n    return resp_200(rt_server)\n\n\n@router.delete('/{server_id}', status_code=200)\nasync def delete_server(*, server_id: int):\n    await ServerDao.delete(server_id)\n    return resp_200(None)\n\n\n@router.get('/model/{deploy_id}')\nasync def get_model_deploy(*, deploy_id: int):\n    model_deploy = await ModelDeployDao.find_model(deploy_id)\n    if not ModelDeployDao:\n        raise NotFoundError()\n    return resp_200(data=model_deploy)\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/finetune.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Any, Dict, List, Optional\n\nfrom pydantic import field_validator, BaseModel, model_validator\nfrom sqlalchemy import Select\nfrom sqlalchemy.dialects.mysql import LONGTEXT\nfrom sqlmodel import JSON, Column, DateTime, Field, func, select, text, update, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.utils import generate_uuid\n\n\nclass TrainMethod(Enum):\n    FULL = 'full'\n    FREEZE = 'freeze'\n    LORA = 'lora'\n\n\nclass FinetuneStatus(Enum):\n    # Training\n    TRAINING = 1\n    # Training failed\n    FAILED = 2\n    # Task Aborted\n    CANCEL = 3\n    # Training Successful\n    SUCCESS = 4\n    # Publication complete\n    PUBLISHED = 5\n\n\nclass FinetuneBase(SQLModelSerializable):\n    id: str = Field(default=None, nullable=False, primary_key=True, description='Uniqueness quantificationID')\n    server: int = Field(default=0, index=True, description='RelatedRTSERVICESID')\n    server_name: str = Field(default='', index=True, description='RTService name')\n    rt_endpoint: str = Field(default='', description='RTService Address')\n    sft_endpoint: str = Field(default='', description='FTService Address')\n    base_model: int = Field(default=0, index=True, description='Foundation ModelID')\n    base_model_name: str = Field(max_length=50, description='Base Model Name')\n    root_model_name: str = Field(default='', description='Root underlying model name, which is the initial model name')\n    model_id: int = Field(default=0, index=True, description='Published Training ModelsID')\n    model_name: str = Field(index=True, max_length=50, description='Name of the training model')\n    method: str = Field(default=TrainMethod.FULL.value, nullable=False, max_length=20, description='Training Methods')\n    extra_params: Dict = Field(sa_column=Column(JSON), description='Additional parameters required for training tasks')\n    train_data: Optional[List[Dict]] = Field(default=None, sa_column=Column(JSON), description='Personal Training Dataset Information')\n    preset_data: Optional[List[Dict]] = Field(default=None, sa_column=Column(JSON), description='Preset training dataset information')\n    status: int = Field(default=FinetuneStatus.TRAINING.value, index=True, description='Status of the training task')\n    reason: Optional[str] = Field(default='', sa_column=Column(LONGTEXT), description='Task Failure Reason')\n    log_path: Optional[str] = Field(default='', max_length=512, description='Training log inminioPath on')\n    report: Optional[Dict] = Field(default=None, sa_column=Column(JSON), description='Assessment report data for training tasks')\n    user_id: int = Field(default=None, index=True, description='creatorID')\n    user_name: str = Field(default=None, description='creatorName')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    # Check training set data format\n    @classmethod\n    def validate_train(cls, v: Any):\n        if v is None:\n            return v\n        if v is None or not isinstance(v, list):\n            raise ValueError('Finetune.train_data must be a list')\n        for one in v:\n            if not (one.get('name', None) and one.get('url', None)):\n                raise ValueError('Finetune.train_data each item must be {name:\"\",url:\"\",num:0}')\n        return v\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_all(cls, values: Dict[str, Any]) -> Dict[str, Any]:\n        extra_params = values.get('extra_params', None)\n        if extra_params is None or not isinstance(extra_params, dict):\n            raise ValueError('Finetune.extra_params must be a valid json')\n\n        train_data = values.get('train_data', None)\n        cls.validate_train(train_data)\n\n        preset_data = values.get('preset_data', None)\n        cls.validate_train(preset_data)\n        return values\n\n\nclass Finetune(FinetuneBase, table=True):\n    id: str = Field(default_factory=generate_uuid, primary_key=True, unique=True)\n\n\nclass FinetuneList(BaseModel):\n    server: Optional[int] = Field(None, description='RelatedRTSERVICESID')\n    server_name: Optional[str] = Field(None, description='RelatedRTService name')\n    status: Optional[List[int]] = Field(None, description='Status list of training tasks')\n    model_name: Optional[str] = Field(None, description='Model Name, Fuzzy search')\n    page: Optional[int] = Field(default=1, description='Page')\n    limit: Optional[int] = Field(default=10, description='Listings Per Page')\n    user_id: Optional[int] = Field(None, description='UsersID')\n\n    def get_select_statement(self) -> (Select, Select):\n        \"\"\"Generate the select and count statements based on the filters.\"\"\"\n        statement = select(Finetune)\n        count_statement = select(func.count(Finetune.id))\n        if self.server:\n            statement = statement.where(Finetune.server == self.server)\n            count_statement = count_statement.where(Finetune.server == self.server)\n        if self.server_name:\n            statement = statement.where(Finetune.server_name == self.server_name)\n            count_statement = count_statement.where(Finetune.server_name == self.server_name)\n        if self.status:\n            statement = statement.where(col(Finetune.status).in_(self.status))\n            count_statement = count_statement.where(col(Finetune.status).in_(self.status))\n        if self.model_name:\n            statement = statement.where(col(Finetune.model_name).like(f'%{self.model_name}%'))\n            count_statement = count_statement.where(col(Finetune.model_name).like(f'%{self.model_name}%'))\n        if self.user_id:\n            statement = statement.where(Finetune.user_id == self.user_id)\n            count_statement = count_statement.where(Finetune.user_id == self.user_id)\n        if self.page and self.limit:\n            offset = (self.page - 1) * self.limit\n            statement = statement.offset(offset).limit(self.limit).order_by(col(Finetune.create_time).desc())\n        return statement, count_statement\n\n\nclass FinetuneChangeModelName(BaseModel):\n    id: str = Field(description='Training Mission UniqueID')\n    model_name: str\n\n\nclass FinetuneExtraParams(BaseModel):\n    gpus: str = Field(..., description='Needs to be usedGPUCard #')\n    val_ratio: float = Field(0.1, ge=0, le=1, description='Proportion of validation sets')\n    per_device_train_batch_size: int = Field(1, description='Batch size')\n    learning_rate: float = Field(0.00005, ge=0, le=1, description='Learning rate <g x=1 id=\"1364\"/>')\n    num_train_epochs: int = Field(3, gt=0, description='Iteration rounds')\n    max_seq_len: int = Field(8192, gt=0, description='Maximum List Length')\n    cpu_load: str = Field('false', description='Y/NcpuLoad')\n\n    @field_validator('per_device_train_batch_size', mode='before')\n    @classmethod\n    def validate_batch_size(cls, v: str):\n        try:\n            batch_size = int(v)\n            if batch_size != 1:\n                if batch_size % 2 != 0:\n                    raise ValueError('per_device_train_batch_size must be 1 or even number')\n            return batch_size\n        except Exception as e:\n            raise ValueError(f'per_device_train_batch_size must be an integer {e}')\n\n    @field_validator('gpus', mode='before')\n    @classmethod\n    def validate_gpus(cls, v: str):\n        try:\n            gpu_list = v.split(',')\n            gpus = ''\n            for one in gpu_list:\n                if not one:\n                    continue\n                if not one.isdigit():\n                    raise ValueError('gpus number must be integer')\n                gpus += one + ','\n            gpus = gpus[:-1]\n            if not gpus:\n                raise ValueError('gpus must not be empty')\n            return gpus\n        except Exception as e:\n            raise ValueError(f'gpus must be an str {e}')\n\n\nclass FinetuneDao(FinetuneBase):\n\n    @classmethod\n    async def insert_one(cls, data: Finetune) -> Finetune:\n        async with get_async_db_session() as session:\n            session.add(data)\n            await session.commit()\n            await session.refresh(data)\n        return data\n\n    @classmethod\n    async def update_job(cls, finetune: Finetune) -> Finetune:\n        if not finetune.id:\n            raise ValueError('Finetune.id must not be empty when update')\n        async with get_async_db_session() as session:\n            session.add(finetune)\n            await session.commit()\n            await session.refresh(finetune)\n        return finetune\n\n    @classmethod\n    async def find_job(cls, job_id: str) -> Finetune | None:\n        async with get_async_db_session() as session:\n            statement = select(Finetune).where(Finetune.id == job_id)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_job_by_model_name(cls, model_name: str) -> Finetune | None:\n        async with get_async_db_session() as session:\n            statement = select(Finetune).where(Finetune.model_name == model_name)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_job_by_model_id(cls, model_id: int) -> Finetune | None:\n        async with get_async_db_session() as session:\n            statement = select(Finetune).where(Finetune.model_id == model_id)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def change_status(cls, job_id: str, old_status: int, status: int) -> bool:\n        update_statement = update(Finetune).where(col(Finetune.id) == job_id,\n                                                  col(Finetune.status) == old_status).values(status=status)\n        async with get_async_db_session() as session:\n            update_ret = await session.exec(update_statement)\n            await session.commit()\n            return update_ret.rowcount != 0\n\n    @classmethod\n    async def delete_job(cls, job: Finetune) -> bool:\n        if not job or not job.id:\n            raise ValueError('Finetune job to delete must not be None, and id must not be empty')\n        async with get_async_db_session() as session:\n            await session.delete(job)\n            await session.commit()\n            return True\n\n    @classmethod\n    async def find_jobs(cls, finetune_list: FinetuneList) -> (List[Finetune], int):\n        select_statement, count_statement = finetune_list.get_select_statement()\n        async with get_async_db_session() as session:\n            return (await session.exec(select_statement)).all(), await session.scalar(count_statement)\n\n    @classmethod\n    async def get_server_filters(cls) -> List[str]:\n        async with get_async_db_session() as session:\n            statement = select(Finetune.server_name).distinct()\n            return (await session.exec(statement)).all()\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/model_deploy.py",
    "content": "from datetime import datetime\nfrom typing import Optional, List\n\nfrom sqlalchemy import Column, DateTime, String, UniqueConstraint, delete, text\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\n\n\nclass ModelDeployBase(SQLModelSerializable):\n    endpoint: str = Field(index=False, unique=False)\n    server: str = Field(index=True)\n    model: str = Field(index=False)\n    config: Optional[str] = Field(default=None, sa_column=Column(String(length=512)))\n    status: Optional[str] = Field(default=None, index=False)\n    remark: Optional[str] = Field(default=None, sa_column=Column(String(length=4096)))\n\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass ModelDeploy(ModelDeployBase, table=True):\n    __table_args__ = (UniqueConstraint('model', 'server', name='model_server_uniq'),)\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass ModelDeployDao(ModelDeployBase):\n\n    @classmethod\n    async def find_model(cls, model_id: int) -> ModelDeploy | None:\n        async with get_async_db_session() as session:\n            statement = select(ModelDeploy).where(ModelDeploy.id == model_id)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_model_by_server(cls, server_id: str) -> List[ModelDeploy]:\n        async with get_async_db_session() as session:\n            statement = select(ModelDeploy).where(ModelDeploy.server == server_id)\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    async def find_model_by_server_and_name(cls, server: str, model: str) -> ModelDeploy | None:\n        async with get_async_db_session() as session:\n            statement = select(ModelDeploy).where(ModelDeploy.server == server, ModelDeploy.model == model)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_model_by_name(cls, model: str) -> ModelDeploy | None:\n        async with get_async_db_session() as session:\n            statement = select(ModelDeploy).where(ModelDeploy.model == model)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def delete_model(cls, model: ModelDeploy) -> bool:\n        async with get_async_db_session() as session:\n            await session.delete(model)\n            await session.commit()\n        return True\n\n    @classmethod\n    async def delete_model_by_id(cls, model_id: int):\n        async with get_async_db_session() as session:\n            statement = delete(ModelDeploy).where(col(ModelDeploy.id) == model_id)\n            await session.exec(statement)\n            await session.commit()\n\n    @classmethod\n    async def insert_one(cls, model: ModelDeploy) -> ModelDeploy:\n        async with get_async_db_session() as session:\n            session.add(model)\n            await session.commit()\n            await session.refresh(model)\n        return model\n\n    @classmethod\n    async def update_model(cls, model: ModelDeploy) -> ModelDeploy:\n        async with get_async_db_session() as session:\n            session.add(model)\n            await session.commit()\n            await session.refresh(model)\n        return model\n\n\nclass ModelDeployRead(ModelDeployBase):\n    id: Optional[int]\n\n\nclass ModelDeployQuery(SQLModelSerializable):\n    id: Optional[int]\n    server: Optional[str]\n\n\nclass ModelDeployCreate(ModelDeployBase):\n    pass\n\n\nclass ModelDeployUpdate(SQLModelSerializable):\n    id: int\n    config: Optional[str] = None\n\n\nclass ModelDeployInfo(ModelDeploy):\n    sft_support: bool = Field(default=False, description='Whether to support fine-tuning training')\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/preset_train.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional, Tuple\n\nfrom sqlalchemy import func\nfrom sqlmodel import Column, DateTime, Field, select, text, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.utils import generate_uuid\n\n\n# FinetunePreset training set for tasks\nclass PresetTrainBase(SQLModelSerializable):\n    id: str = Field(default=None, primary_key=True, description='Preset Training Files UniqueID')\n    url: str = Field(default='', description='minIoFile link on')\n    name: str = Field(default='', index=True, description='Uploaded file name')\n    user_id: str = Field(default='', index=True, description='creatorID')\n    user_name: str = Field(default='', index=True, description='creatorName')\n    type: int = Field(default=0, index=True, description='0 Doc. 1 QA')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass PresetTrain(PresetTrainBase, table=True):\n    id: str = Field(default_factory=generate_uuid, primary_key=True, unique=True)\n\n\nclass PresetTrainDao(PresetTrainBase):\n\n    @classmethod\n    async def insert_batch(cls, models: List[PresetTrain]) -> List[PresetTrain]:\n        async with get_async_db_session() as session:\n            for one in models:\n                session.add(one)\n            await session.commit()\n            for one in models:\n                await session.refresh(one)\n            return models\n\n    @classmethod\n    async def delete_one(cls, model: PresetTrain) -> bool:\n        async with get_async_db_session() as session:\n            await session.delete(model)\n            await session.commit()\n        return True\n\n    @classmethod\n    async def find_one(cls, file_id: str) -> PresetTrain | None:\n        async with get_async_db_session() as session:\n            statement = select(PresetTrain).where(PresetTrain.id == file_id)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_all(cls) -> List[PresetTrain]:\n        async with get_async_db_session() as session:\n            statement = select(PresetTrain)\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    async def search_name(cls,\n                          keyword: str = None,\n                          page_size: int = None,\n                          page_num: int = None) -> Tuple[List[PresetTrain], int]:\n        async with get_async_db_session() as session:\n            statement = select(PresetTrain)\n            count = select(func.count(PresetTrain.id))\n            if keyword:\n                statement = statement.where(col(PresetTrain.name).like('%{}%'.format(keyword)))\n                count = count.where(col(PresetTrain.name).like('%{}%'.format(keyword)))\n            if page_num and page_size:\n                statement = statement.offset((page_num - 1) * page_size).limit(page_size)\n            statement = statement.order_by(col(PresetTrain.create_time).desc())\n\n            return (await session.exec(statement)).all(), await session.scalar(count)\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/server.py",
    "content": "from datetime import datetime\nfrom typing import Optional\n\nfrom sqlalchemy import Column, DateTime, text, delete\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\n\n\nclass ServerBase(SQLModelSerializable):\n    endpoint: str = Field(index=False)\n    sft_endpoint: str = Field(default='', index=False, description='FinetuneService Address')\n    server: str = Field(index=True)\n    remark: Optional[str] = Field(default=None, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass Server(ServerBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\n# Package business operations\nclass ServerDao(ServerBase):\n    @classmethod\n    async def find_server(cls, server_id: int) -> Server | None:\n        async with get_async_db_session() as session:\n            statement = select(Server).where(Server.id == server_id)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def find_all_server(cls):\n        async with get_async_db_session() as session:\n            statement = select(Server)\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    async def insert(cls, server: Server) -> Server:\n        async with get_async_db_session() as session:\n            session.add(server)\n            await session.commit()\n            await session.refresh(server)\n            return server\n\n    @classmethod\n    async def delete(cls, server_id: int) -> None:\n        statement = delete(Server).where(col(Server.id) == server_id)\n        async with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.commit()\n\n\nclass ServerRead(ServerBase):\n    id: Optional[int] = None\n\n\nclass ServerQuery(ServerBase):\n    id: Optional[int] = None\n    server: Optional[str] = None\n\n\nclass ServerCreate(ServerBase):\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/models/sft_model.py",
    "content": "from datetime import datetime\nfrom typing import Optional\n\nfrom sqlalchemy import Column, DateTime, delete, text, update\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session\n\n\n# Available for trainingmodelVertical\nclass SftModelBase(SQLModelSerializable):\n    id: int = Field(default=None, nullable=False, primary_key=True, description='Uniqueness quantificationID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass SftModel(SftModelBase, table=True):\n    model_name: str = Field(index=True, description='Model name that can be used for fine-tuning training')\n\n\nclass SftModelDao(SftModel):\n\n    @classmethod\n    async def get_sft_model(cls, model_name: str) -> SftModel | None:\n        async with get_async_db_session() as session:\n            statement = select(SftModel).where(SftModel.model_name == model_name)\n            return (await session.exec(statement)).first()\n\n    @classmethod\n    async def get_all_sft_model(cls):\n        async with get_async_db_session() as session:\n            statement = select(SftModel)\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    async def insert_sft_model(cls, model_name: str) -> SftModel:\n        async with get_async_db_session() as session:\n            model = SftModel(model_name=model_name)\n            session.add(model)\n            await session.commit()\n            await session.refresh(model)\n        return model\n\n    @classmethod\n    async def delete_sft_model(cls, model_name: str) -> bool:\n        async with get_async_db_session() as session:\n            statement = delete(SftModel).where(col(SftModel.model_name) == model_name)\n            await session.exec(statement)\n            await session.commit()\n        return True\n\n    @classmethod\n    async def change_sft_model(cls, old_model_name, model_name) -> bool:\n        async with get_async_db_session() as session:\n            update_statement = update(SftModel).where(SftModel.model_name == old_model_name).values(\n                model_name=model_name)\n            update_ret = await session.exec(update_statement)\n            await session.commit()\n            return update_ret.rowcount != 0\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/finetune/domain/services/finetune.py",
    "content": "import asyncio\nimport io\nimport json\nfrom typing import Dict, List, Any\n\nfrom loguru import logger\nfrom pydantic import ValidationError\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.finetune import (CancelJobError, ChangeModelNameError, CreateFinetuneError,\n                                             DeleteJobError, ExportJobError, InvalidExtraParamsError, JobStatusError,\n                                             ModelNameExistsError, NotFoundJobError,\n                                             TrainDataNoneError, UnExportJobError, GetModelError)\nfrom bisheng.common.errcode.model_deploy import NotFoundModelError\nfrom bisheng.common.errcode.server import NoSftServerError\nfrom bisheng.common.schemas.api import UnifiedResponseModel\nfrom bisheng.core.cache import InMemoryCache\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync, get_minio_storage\nfrom ..models.finetune import (Finetune, FinetuneChangeModelName, FinetuneDao,\n                               FinetuneExtraParams, FinetuneList, FinetuneStatus)\nfrom ..models.model_deploy import ModelDeploy, ModelDeployDao, ModelDeployInfo\nfrom ..models.server import Server, ServerDao\nfrom ..models.sft_model import SftModelDao\nfrom ..sft_backend import SFTBackend\nfrom ...utils import parse_gpus, parse_server_host\n\n\nclass FinetuneService:\n    ServerCache: InMemoryCache = InMemoryCache()\n\n    @classmethod\n    def validate_params(cls, finetune: Finetune) -> UnifiedResponseModel | None:\n        \"\"\" Check request parameters, returningNoneIndicates check passed \"\"\"\n        # Individual Training Sets and Preset Training Sets Use at least one\n        if not finetune.train_data and not finetune.preset_data:\n            raise TrainDataNoneError()\n        try:\n            # Check Extra Parameter Values\n            FinetuneExtraParams(**finetune.extra_params.copy())\n        except ValidationError as e:\n            logger.error(f'Finetune extra_params is invalid {e}')\n            raise InvalidExtraParamsError()\n        return None\n\n    @classmethod\n    def parse_command_params(cls, finetune: Finetune, base_model: ModelDeploy) -> Dict:\n        \"\"\" Parse the request parameters and combine them into a training instructioncommandParameters \"\"\"\n        params = finetune.extra_params.copy()\n        # Needs to be inSFT-backendThe service willmodel_nameAbsolute path to the model\n        params['model_name_or_path'] = base_model.model\n        params['model_template'] = finetune.root_model_name\n        params['finetuning_type'] = finetune.method\n\n        # Special treatedcpu_loadformat, because the transmission method is different --cpu_load means isTrue, no additional parameter values are required\n        if params.get('cpu_load') == 'false':\n            del params['cpu_load']\n        elif params.get('cpu_load') == 'true':\n            params['cpu_load'] = ''\n\n        # Stitching training set parameters\n        params['dataset'] = []\n        params['each_max_samples'] = []\n        cls.parse_command_train_file(finetune.train_data, params)\n        cls.parse_command_train_file(finetune.preset_data, params)\n        params['dataset'] = ','.join(params['dataset'])\n        params['each_max_samples'] = ','.join(params['each_max_samples'])\n        return params\n\n    @classmethod\n    def parse_command_train_file(cls, train_data: List[Dict], params: Dict):\n        \"\"\" DapatkanminioA public link to the file onSFT-BackendDownload training files \"\"\"\n        if train_data is None:\n            return\n        minio_client = get_minio_storage_sync()\n        for i in train_data:\n            params['dataset'].append(minio_client.get_share_link_sync(i['url'], clear_host=False))\n            params['each_max_samples'].append(str(i.get('num', 0)))\n\n    @classmethod\n    def validate_status(cls, finetune: Finetune, new_status: int) -> None:\n        \"\"\" Verify that the state change is logical ReturnNoneIndicates success\"\"\"\n        # Training can only To Training Success, Training Failure, Task Abort\n        if finetune.status == FinetuneStatus.TRAINING.value:\n            if new_status not in [FinetuneStatus.SUCCESS.value, FinetuneStatus.FAILED.value,\n                                  FinetuneStatus.CANCEL.value]:\n                raise JobStatusError.http_exception(msg='In training, it can only be changed to training success, training failure, task abort')\n        # Training failed can only Becoming in training\n        elif finetune.status == FinetuneStatus.FAILED.value:\n            if new_status != FinetuneStatus.TRAINING.value:\n                raise JobStatusError.http_exception(msg='A training failure can only turn into a training')\n        # Task Aborted can only Becoming in training\n        elif finetune.status == FinetuneStatus.CANCEL.value:\n            if new_status != FinetuneStatus.TRAINING.value:\n                raise JobStatusError.http_exception(msg='Task abort can only become in training')\n        # Training Successful can only Change to Publish Complete\n        elif finetune.status == FinetuneStatus.SUCCESS.value:\n            if new_status != FinetuneStatus.PUBLISHED.value:\n                raise JobStatusError.http_exception(msg='Training success can only change to release completion')\n        # Publication complete can only Become Training Successful\n        elif finetune.status == FinetuneStatus.PUBLISHED.value:\n            if new_status != FinetuneStatus.SUCCESS.value:\n                raise JobStatusError.http_exception(msg='Release completion can only be converted into training success')\n        return None\n\n    @classmethod\n    async def get_sft_server(cls, server_id: int) -> Server | None:\n        server = await cls.get_server_by_cache(server_id)\n        if not server:\n            logger.warning('not found rt server data by id: %s', server_id)\n            return None\n        if not server.sft_endpoint:\n            logger.warning('not found sft endpoint by id: %s', server_id)\n            return None\n        return server\n\n    @classmethod\n    async def verify_job_model_name(cls, model_name: str) -> bool:\n        \"\"\" Correctionmodel_name Already exists? \"\"\"\n        if await ModelDeployDao.find_model_by_name(model_name):\n            raise ModelNameExistsError()\n        if await FinetuneDao.find_job_by_model_name(model_name):\n            raise ModelNameExistsError()\n        return True\n\n    @classmethod\n    async def create_job(cls, finetune: Finetune) -> Finetune:\n        # Verify Extra Parameters\n        _ = cls.validate_params(finetune)\n\n        # CariSFTWhether the service exists\n        server = await cls.get_sft_server(finetune.server)\n        if not server:\n            raise NoSftServerError()\n\n        # Verify that the model name already exists\n        await cls.verify_job_model_name(finetune.model_name)\n\n        # Find out if the underlying model exists\n        base_model = await ModelDeployDao.find_model(finetune.base_model)\n        if not base_model:\n            raise NotFoundModelError()\n        root_model_name = base_model.model\n        # Can find instructions for retraining based on trained and completed models\n        if base_job := await FinetuneDao.find_job_by_model_name(base_model.model):\n            root_model_name = base_job.root_model_name\n\n        finetune.server_name = server.server\n        finetune.rt_endpoint = server.endpoint\n        finetune.sft_endpoint = server.sft_endpoint\n        finetune.base_model_name = base_model.model\n        finetune.root_model_name = root_model_name\n\n        # RecallSFT-backendright of privacyAPIAdd New\n        logger.info(f'start create sft job: {finetune.id}')\n        # Required for stitching instructionscommandParameters\n        command_params = cls.parse_command_params(finetune, base_model)\n        sft_ret = await SFTBackend.create_job(host=parse_server_host(finetune.sft_endpoint),\n                                              job_id=finetune.id, params=command_params)\n        if not sft_ret[0]:\n            logger.error(f'create sft job error: job_id: {finetune.id}, err: {sft_ret[1]}')\n            raise CreateFinetuneError()\n        # Insert into Database\n        finetune = await FinetuneDao.insert_one(finetune)\n        logger.info('create sft job success')\n        return finetune\n\n    @classmethod\n    async def cancel_job(cls, job_id: str, user: UserPayload) -> Finetune:\n        # ViewjobTask Information\n        finetune = await FinetuneDao.find_job(job_id)\n        if not finetune:\n            raise NotFoundJobError()\n\n        # Verify task status change\n        new_status = FinetuneStatus.CANCEL.value\n        cls.validate_status(finetune, new_status)\n\n        # RecallSFT-backendright of privacyAPICancel Task\n        logger.info(f'start cancel job_id: {job_id}, user: {user.user_name}')\n        sft_ret = await SFTBackend.cancel_job(host=parse_server_host(finetune.sft_endpoint), job_id=job_id)\n        if not sft_ret[0]:\n            logger.error(f'cancel sft job error: job_id: {job_id}, err: {sft_ret[1]}')\n            raise CancelJobError()\n        logger.info('change sft job status')\n        await FinetuneDao.change_status(job_id, finetune.status, new_status)\n        finetune.status = new_status\n        logger.info('cancel sft job success')\n        return finetune\n\n    @classmethod\n    async def delete_job(cls, job_id: str, user: UserPayload) -> Finetune:\n        # ViewjobTask Information\n        finetune = await FinetuneDao.find_job(job_id)\n        if not finetune:\n            raise NotFoundJobError()\n\n        model_name = await cls.delete_published_model(finetune)\n\n        # Call the interface to delete the training task\n        logger.info(f'start delete sft job: {job_id}, user: {user.user_name}')\n        sft_ret = await SFTBackend.delete_job(host=parse_server_host(finetune.sft_endpoint), job_id=job_id,\n                                              model_name=model_name)\n        if not sft_ret[0]:\n            logger.error(f'delete sft job error: job_id: {job_id}, err: {sft_ret[1]}')\n            raise DeleteJobError()\n        # Delete training task data\n        logger.info('delete sft job data')\n        # CleanedminioLog file on\n        await FinetuneDao.delete_job(finetune)\n        logger.info(f'delete sft job success, data: {finetune.model_dump()}')\n        asyncio.create_task(cls.delete_job_log(finetune))\n        return finetune\n\n    @classmethod\n    async def delete_job_log(cls, finetune: Finetune):\n        minio_client = await get_minio_storage()\n        await minio_client.remove_object(object_name=f'/finetune/log/{finetune.id}')\n\n    @classmethod\n    async def upload_job_log(cls, finetune: Finetune, log_data: io.BytesIO, length: int) -> str:\n        minio_client = await get_minio_storage()\n        log_path = f'finetune/log/{finetune.id}'\n        await minio_client.put_object(bucket_name=minio_client.bucket, object_name=log_path, file=log_data,\n                                      length=length)\n        return log_path\n\n    @classmethod\n    async def get_job_log(cls, finetune: Finetune) -> str | None:\n        minio_client = await get_minio_storage()\n        resp = await minio_client.get_object(object_name=finetune.log_path)\n        if resp is None:\n            return None\n        return resp.decode('utf-8')\n\n    @classmethod\n    async def delete_published_model(cls, finetune: Finetune) -> str | None:\n        \"\"\"\n         Offline the published model, delete the published model data, and return the published model name\n         param finetune: Training Tasks\n        \"\"\"\n        # Determine training task status\n        if finetune.status != FinetuneStatus.PUBLISHED.value:\n            return finetune.model_name\n        # View published modelsID\n        published_model = await ModelDeployDao.find_model(finetune.model_id)\n        if not published_model:\n            return finetune.model_name\n\n        # Delete Published Model Data\n        await ModelDeployDao.delete_model(published_model)\n        logger.info(f'delete published model: {published_model.model}, id: {published_model.id}')\n        return published_model.model\n\n    @classmethod\n    async def publish_job(cls, job_id: str, user: UserPayload) -> Finetune:\n        # ViewjobTask Information\n        finetune = await FinetuneDao.find_job(job_id)\n        if not finetune:\n            raise NotFoundJobError()\n        new_status = FinetuneStatus.PUBLISHED.value\n        cls.validate_status(finetune, new_status)\n\n        # RecallSFT-backendright of privacyAPIInterfaces\n        logger.info(f'start export sft job: {job_id}, user: {user.user_name}')\n        sft_ret = await SFTBackend.publish_job(host=parse_server_host(finetune.sft_endpoint), job_id=job_id,\n                                               model_name=finetune.model_name)\n        if not sft_ret[0]:\n            logger.error(f'export sft job error: job_id: {job_id}, err: {sft_ret[1]}')\n            raise ExportJobError()\n        # Create Published Model Data\n        logger.info('create published model')\n        published_model = ModelDeploy(model=finetune.model_name,\n                                      server=str(finetune.server),\n                                      endpoint=f'http://{finetune.rt_endpoint}/v2.1/models')\n        try:\n            published_model = await ModelDeployDao.insert_one(published_model)\n        except Exception as e:\n            logger.error(f'create published model error: {str(e)}')\n            published_model = await ModelDeployDao.find_model_by_server_and_name(published_model.server,\n                                                                                 published_model.model)\n\n        # Record the name of the model that can be used for training\n        await SftModelDao.insert_sft_model(published_model.model)\n\n        # Update training task status\n        logger.info('update sft job data')\n        finetune.status = new_status\n        finetune.model_id = published_model.id\n        await FinetuneDao.update_job(finetune)\n        logger.info('export sft job success')\n        return finetune\n\n    @classmethod\n    async def cancel_publish_job(cls, job_id: str, user: UserPayload) -> Finetune:\n        # ViewjobTask Information\n        finetune = await FinetuneDao.find_job(job_id)\n        if not finetune:\n            raise NotFoundJobError()\n        new_status = FinetuneStatus.SUCCESS.value\n        cls.validate_status(finetune, new_status)\n\n        await cls.delete_published_model(finetune)\n\n        # RecallSFT-backendright of privacyAPIInterfaces\n        logger.info(f'start cancel export sft job: {job_id}, user: {user.user_name}')\n        sft_ret = await SFTBackend.cancel_publish_job(host=parse_server_host(finetune.sft_endpoint), job_id=job_id,\n                                                      model_name=finetune.model_name)\n        if not sft_ret[0]:\n            logger.error(f'cancel export sft job error: job_id: {job_id}, err: {sft_ret[1]}')\n            raise UnExportJobError()\n        await SftModelDao.delete_sft_model(finetune.model_name)\n        # Delete published model information\n        logger.info(f'delete published model: {finetune.model_id}')\n        await ModelDeployDao.delete_model_by_id(finetune.model_id)\n        logger.info('update finetune status')\n        finetune.status = new_status\n        finetune.model_id = 0\n        await FinetuneDao.update_job(finetune)\n        logger.info('cancel export sft job success')\n        return finetune\n\n    @classmethod\n    async def get_server_by_cache(cls, server_id: int):\n        # Fetch from memory first\n        cache_server = cls.ServerCache.get(server_id)\n        if cache_server:\n            return cls.ServerCache.get(server_id)\n        # Retrieve from database\n        server = await ServerDao.find_server(server_id)\n        if server:\n            cls.ServerCache.set(server_id, server)\n        return server\n\n    @classmethod\n    async def get_all_job(cls, req_data: FinetuneList) -> (List[Finetune], int):\n        job_list, total = await FinetuneDao.find_jobs(req_data)\n        # Asynchronous thread update task status\n        asyncio.create_task(cls.sync_all_job_status(job_list))\n        return job_list, total\n\n    @classmethod\n    async def sync_all_job_status(cls, job_list: List[Finetune]) -> None:\n        # Asynchronous threads update the status of bulk tasks\n        for finetune in job_list:\n            await cls.sync_job_status(finetune, finetune.sft_endpoint)\n\n    @classmethod\n    async def get_job_info(cls, job_id: str) -> Dict[str, Any]:\n        \"\"\" Get real-time information on tasks in training \"\"\"\n        # ViewjobTask Information\n        finetune = await FinetuneDao.find_job(job_id)\n        if not finetune:\n            raise NotFoundJobError()\n\n        # Sync Task Execution\n        await cls.sync_job_status(finetune, finetune.sft_endpoint)\n\n        # Get log file\n        log_data = None\n        res_data = list()\n        if finetune.log_path:\n            log_data = await cls.get_job_log(finetune)\n            res_data = cls.parse_log_data(log_data)\n\n        return {\n            'finetune': finetune,\n            'log': log_data if finetune.status != FinetuneStatus.FAILED.value else finetune.reason,\n            'loss_data': res_data,  # like [{\"step\": 10, \"loss\": 0.5}, {\"step\": 20, \"loss\": 0.3}]\n            'report': finetune.report if finetune.report else None,\n        }\n\n    @classmethod\n    def parse_log_data(cls, log_data: str) -> List[Dict[str, str]]:\n        if log_data is None:\n            return []\n        res_data = []\n        contents = log_data.split('\\n')\n        for elem in contents:\n            if elem.strip() == '':\n                continue\n            sub_data = {'step': None, 'loss': None}\n            elem = elem.strip()\n            elem_data = json.loads(elem)\n            if elem_data.get('loss', None) is None:\n                continue\n            sub_data['step'] = elem_data['current_steps']\n            sub_data['loss'] = elem_data['loss']\n            res_data.append(sub_data)\n        return res_data\n\n    @classmethod\n    async def sync_job_status(cls, finetune: Finetune, sft_endpoint: str) -> bool:\n        \"\"\" FROMSFT-backendService Synchronization Task Status \"\"\"\n        if finetune.status != FinetuneStatus.TRAINING.value:\n            return True\n        logger.info(f'start sync job status: {finetune.id}')\n\n        sft_ret = await SFTBackend.get_job_status(host=parse_server_host(sft_endpoint), job_id=finetune.id)\n        if not sft_ret[0]:\n            logger.error(f'get sft job status error: job_id: {finetune.id}, err: {sft_ret[1]}')\n            return False\n        if sft_ret[1]['status'] == SFTBackend.JOB_FINISHED:\n            finetune.status = FinetuneStatus.SUCCESS.value\n            await FinetuneDao.change_status(finetune.id, finetune.status, FinetuneStatus.SUCCESS.value)\n        elif sft_ret[1]['status'] == SFTBackend.JOB_FAILED:\n            finetune.status = FinetuneStatus.FAILED.value\n            finetune.reason = sft_ret[1]['reason']\n            await FinetuneDao.update_job(finetune)\n\n        # Execution failed without querying logs and reports\n        if finetune.status == FinetuneStatus.FAILED.value:\n            logger.info('sft job status failed, no need exec log and report')\n            return False\n\n        # Query task execution logs and reports\n        logger.info('start query sft job log and report')\n        sft_ret = await SFTBackend.get_job_log(host=parse_server_host(sft_endpoint), job_id=finetune.id)\n        if not sft_ret[0]:\n            logger.error(f'get sft job log error: job_id: {finetune.id}, err: {sft_ret[1]}')\n        log_data = sft_ret[1]['log_data'].encode('utf-8')\n        # Upload log file tominioUpward\n        log_path = await cls.upload_job_log(finetune, io.BytesIO(log_data), len(log_data))\n        finetune.log_path = log_path\n\n        # Query Task Evaluation Report\n        logger.info('start query sft job report')\n        sft_ret = await SFTBackend.get_job_metrics(host=parse_server_host(sft_endpoint), job_id=finetune.id)\n        if not sft_ret[0]:\n            logger.error(f'get sft job report error: job_id: {finetune.id}, err: {sft_ret[1]}')\n        else:\n            finetune.report = sft_ret[1]['report']\n\n        # Changelog and Report Data\n        await FinetuneDao.update_job(finetune)\n        return True\n\n    @classmethod\n    async def change_job_model_name(cls, req: FinetuneChangeModelName) -> Finetune:\n        \"\"\" Modify the model name of the training task \"\"\"\n        finetune = await FinetuneDao.find_job(req.id)\n        if not finetune:\n            raise NotFoundJobError()\n\n        # Verify that the model name already exists\n        await cls.verify_job_model_name(req.model_name)\n\n        # Modify Published Model Name\n        if not await cls.change_published_model_name(finetune, req.model_name):\n            raise ChangeModelNameError()\n\n        # Update training task'smodel_name\n        finetune.model_name = req.model_name\n        await FinetuneDao.update_job(finetune)\n\n        return finetune\n\n    @classmethod\n    async def change_published_model_name(cls, finetune: Finetune, model_name: str) -> bool:\n        \"\"\" Modify the model name of the training task \"\"\"\n        # Unpublished training tasks do not require actionablemodel\n        if finetune.status != FinetuneStatus.PUBLISHED.value:\n            return True\n        published_model = await ModelDeployDao.find_model(finetune.model_id)\n        if not published_model:\n            logger.error(f'published model not found, job_id: {finetune.id}, model_id: {finetune.model_id}')\n            return False\n\n        # Call the interface to modify the name of the published model\n        sft_ret = await SFTBackend.change_model_name(parse_server_host(finetune.sft_endpoint), finetune.id,\n                                                     published_model.model, model_name)\n        if not sft_ret[0]:\n            logger.error(f'change model name error: job_id: {finetune.id}, err: {sft_ret[1]}')\n            return False\n\n        # Modify pre-trained model name\n        await SftModelDao.change_sft_model(published_model.model, model_name)\n\n        # Updating the published model'smodel_name\n        published_model.model = model_name\n        await ModelDeployDao.update_model(published_model)\n        return True\n\n    @classmethod\n    async def get_server_filters(cls) -> List[Dict[str, Any]]:\n        \"\"\" DapatkanftServer Filter Criteria \"\"\"\n        server_filters = await FinetuneDao.get_server_filters()\n        res = []\n        for one in server_filters:\n            res.append({\n                'id': one,\n                'server_name': one,\n            })\n        return res\n\n    @classmethod\n    async def get_model_list(cls, server_id: int) -> List[ModelDeploy]:\n        \"\"\" DapatkanftList of all models under the service \"\"\"\n        server_info = await ServerDao.find_server(server_id)\n        if not server_info:\n            raise NoSftServerError()\n        flag, model_name_list = await SFTBackend.get_all_model(parse_server_host(server_info.sft_endpoint))\n        if not flag:\n            logger.error(f'get model list error: server_id: {server_id}, err: {model_name_list}')\n            raise GetModelError()\n        ret = []\n        db_model = await ModelDeployDao.find_model_by_server(str(server_id))\n        for one in db_model:\n            if one.model in model_name_list:\n                ret.append(one)\n                model_name_list.remove(one.model)\n        for one in model_name_list:\n            ret.append(await ModelDeployDao.insert_one(ModelDeploy(server=str(server_id),\n                                                                   model=one,\n                                                                   endpoint=f'http://{server_info.endpoint}/v2.1/models')))\n\n        res = []\n        for one in ret:\n            res.append(ModelDeployInfo(**one.dict(), sft_support=True))\n        return res\n\n    @classmethod\n    async def get_gpu_info(cls) -> List[Dict]:\n        \"\"\" DapatkanGPUMessage \"\"\"\n        all_server = await ServerDao.find_all_server()\n        res = []\n        for server in all_server:\n            if not server.sft_endpoint:\n                continue\n            sft_ret = await SFTBackend.get_gpu_info(parse_server_host(server.sft_endpoint))\n            if not sft_ret[0]:\n                logger.error(f'get gpu info error: server_id: {server.id}, err: {sft_ret[1]}')\n                continue\n            gpu_info = parse_gpus(sft_ret[1])\n            for one in gpu_info:\n                one['server'] = server.server\n                res.append(one)\n        return res\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/services/finetune_file.py",
    "content": "import os.path\nfrom typing import List\n\nfrom fastapi import UploadFile\nfrom loguru import logger\nfrom pydantic import BaseModel\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.finetune import TrainFileNotExistError\nfrom bisheng.common.schemas.api import PageList\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.utils import generate_uuid\nfrom ..models.preset_train import PresetTrain, PresetTrainDao\n\n\nclass FinetuneFileService(BaseModel):\n    \"\"\" Training Tasks File management \"\"\"\n\n    @classmethod\n    async def upload_file(cls, files: List[UploadFile], is_preset: bool,\n                          user: UserPayload) -> List[PresetTrain]:\n        if len(files) == 0:\n            raise TrainFileNotExistError()\n\n        # Upload training files tominio\n        file_root = cls.get_upload_file_root(is_preset)\n        file_list = await cls.upload_file_to_minio(files, file_root, user)\n        # Store preset data in database\n        if is_preset:\n            logger.info(f'save preset file : {file_list}')\n            file_list = await PresetTrainDao.insert_batch(file_list)\n        return file_list\n\n    @classmethod\n    async def upload_preset_file(cls, name: str, preset_type: int, file_path: str,\n                                 user: UserPayload) -> PresetTrain:\n        # Upload training files tominio\n        file_root = cls.get_upload_file_root(False)\n        file_id = generate_uuid()\n        file_ext = os.path.basename(file_path).split('.')[-1]\n        object_name = f'{file_root}/{file_id}.{file_ext}'\n        minio_client = await get_minio_storage()\n        await minio_client.put_object(bucket_name=minio_client.bucket, object_name=object_name, file=file_path)\n        # Store preset data in database\n        file_info = PresetTrain(id=file_id,\n                                name=name,\n                                url=object_name,\n                                type=preset_type,\n                                user_id=user.user_id,\n                                user_name=user.user_name)\n        await PresetTrainDao.insert_batch([file_info])\n        return file_info\n\n    @classmethod\n    def get_upload_file_root(cls, is_preset: bool) -> str:\n        if is_preset:\n            return 'finetune/train_file/preset'\n        else:\n            return 'finetune/train_file/personal'\n\n    @classmethod\n    async def upload_file_to_minio(cls, files: List[UploadFile], file_root: str,\n                                   user: UserPayload) -> List[PresetTrain]:\n        minio_client = await get_minio_storage()\n        ret = []\n        for file in files:\n            file_id = generate_uuid()\n            file_ext = os.path.basename(file.filename).split('.')[-1]\n            file_info = PresetTrain(id=file_id,\n                                    name=file.filename,\n                                    url=f'{file_root}/{file_id}.{file_ext}',\n                                    user_id=user.user_id,\n                                    user_name=user.user_name)\n            await minio_client.put_object(bucket_name=minio_client.bucket, object_name=file_info.url,\n                                          file=file.file, content_type=file.content_type, length=file.size)\n            ret.append(file_info)\n        return ret\n\n    @classmethod\n    async def get_preset_file(cls,\n                              keyword: str = None,\n                              page_size: int = None,\n                              page_num: int = None) -> PageList:\n        list_res, total_count = await PresetTrainDao.search_name(keyword, page_size, page_num)\n        return PageList(list=list_res, total=total_count)\n\n    @classmethod\n    async def delete_preset_file(cls, file_id: str, user: UserPayload) -> None:\n        file_data = await PresetTrainDao.find_one(file_id)\n        if not file_data:\n            raise TrainFileNotExistError()\n\n        logger.info(f'delete preset train file, user: {user}; file: {file_data.model_dump()}')\n        await PresetTrainDao.delete_one(file_data)\n        logger.info('delete preset train file success')\n        return None\n"
  },
  {
    "path": "src/backend/bisheng/finetune/domain/sft_backend.py",
    "content": "import json\nfrom typing import Dict, List, Literal\n\nfrom bisheng.core.external.http_client.http_client_manager import get_http_client\n\n\nclass SFTBackend:\n    \"\"\" Packaging andSFT-BackendInteraction \"\"\"\n\n    # of fine-tuning training instructionsoptionsParameters Listing\n    CMD_OPTIONS = ['train']\n\n    # jobStatus Misi\n    JOB_FINISHED = 'FINISHED'\n    JOB_FAILED = 'FAILED'\n\n    @classmethod\n    async def handle_response(cls, res) -> (bool, str | None | Dict):\n        content = await res.content.read()\n        if res.status != 200:\n            return False, content.decode('utf-8')\n        result = json.loads(content)\n        if result.get('status_code') != 200:\n            return False, content.decode('utf-8')\n        return True, result.get('data', None)\n\n    @classmethod\n    async def _base_request(cls, method: Literal['get', 'post'], *args, **kwargs) -> (bool, str | Dict):\n        client = await get_http_client()\n        client = await client.get_aiohttp_client()\n        if method == 'get':\n            res = await client.get(*args, **kwargs)\n        else:\n            res = await client.post(*args, **kwargs)\n        return await cls.handle_response(res)\n\n    @classmethod\n    async def create_job(cls, host: str, job_id: str, params: Dict) -> (bool, str | Dict):\n        \"\"\"\n        host RTof servicehost<g id=\"Bold\">Address:</g>\n        job_id is unique to the instructionid，UUIDFormat\n        options Is InstructionoptionsParameters\n        params Is InstructionalcommandParameter Parameter\n        \"\"\"\n        uri = '/v2.1/sft/job'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post',\n                                       f'{host}{url}',\n                                       json={'uri': uri,\n                                             'job_id': job_id,\n                                             'options': cls.CMD_OPTIONS,\n                                             'params': params})\n\n    @classmethod\n    async def cancel_job(cls, host: str, job_id: str) -> (bool, str | Dict):\n        \"\"\" Cancel training task \"\"\"\n        uri = '/v2.1/sft/job/cancel'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}', json={'uri': uri, 'job_id': job_id})\n\n    @classmethod\n    async def delete_job(cls, host: str, job_id: str, model_name: str) -> (bool, str | Dict):\n        \"\"\" Delete training task \"\"\"\n        uri = '/v2.1/sft/job/delete'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}',\n                                       json={'uri': uri, 'job_id': job_id, 'model_name': model_name})\n\n    @classmethod\n    async def publish_job(cls, host: str, job_id: str, model_name: str) -> (bool, str | Dict):\n        \"\"\" Publish Training Tasks From training path to formal path\"\"\"\n        uri = '/v2.1/sft/job/publish'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}',\n                                       json={'uri': uri, 'job_id': job_id, 'model_name': model_name})\n\n    @classmethod\n    async def cancel_publish_job(cls, host: str, job_id: str, model_name: str) -> (bool, str | Dict):\n        \"\"\" Deactivate Training Task Published Model \"\"\"\n        uri = '/v2.1/sft/job/publish/cancel'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}',\n                                       json={'uri': uri, 'job_id': job_id, 'model_name': model_name})\n\n    @classmethod\n    async def get_job_status(cls, host: str, job_id: str) -> (bool, str | Dict):\n        \"\"\"\n         Get training task status\n         Interface return format:\n         {\n            \"status\": \"FINISHED\",\n            \"reason\": \"Failure Reason\"\n         }\n        \"\"\"\n        uri = '/v2.1/sft/job/status'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}', json={'uri': uri, 'job_id': job_id})\n\n    @classmethod\n    async def get_job_log(cls, host: str, job_id: str) -> (bool, str | Dict):\n        \"\"\"\n        Get the training task log and use it temporarilydictFormat - Returns the contents of the\n        TODO zgq Subsequent AdoptionhttpStandard File Transfer Format\n        Data format returned by the interface\n        {\n            \"log_data\": Ref.bisheng-ftProduction Training Log File Contents\n        }\n        \"\"\"\n        uri = '/v2.1/sft/job/log'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}', json={'uri': uri, 'job_id': job_id})\n\n    @classmethod\n    async def get_job_metrics(cls, host: str, job_id: str) -> (bool, str | Dict):\n        \"\"\"\n        Get training mission final report\n        Interface return data format\n        {\n            \"report\": {}\n        }\n        \"\"\"\n        uri = '/v2.1/sft/job/metrics'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}', json={'uri': uri, 'job_id': job_id})\n\n    @classmethod\n    async def change_model_name(cls, host, job_id: str, old_model_name: str, model_name: str) -> (bool, str):\n        \"\"\" Modify Model Name \"\"\"\n        uri = '/v2.1/sft/job/model_name'\n        url = '/v2.1/models/sft_elem/infer'\n        return await cls._base_request('post', f'{host}{url}',\n                                       json={'uri': uri, 'job_id': job_id, 'old_model_name': old_model_name,\n                                             'model_name': model_name})\n\n    @classmethod\n    async def get_all_model(cls, host) -> (bool, List[str]):\n        \"\"\" Get a list of all models \"\"\"\n        url = '/v2.1/sft/model'\n        return await cls._base_request('get', f'{host}{url}')\n\n    @classmethod\n    async def get_gpu_info(cls, host) -> (bool, str):\n        \"\"\" DapatkanGPUMessage \"\"\"\n        url = '/v2.1/sft/gpu'\n        return await cls._base_request('get', f'{host}{url}')\n"
  },
  {
    "path": "src/backend/bisheng/finetune/schemas.py",
    "content": "from typing import Dict, Optional, List\n\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.finetune.domain.models.finetune import TrainMethod\n\n\nclass FinetuneCreateReq(BaseModel):\n    server: int = Field(description='RelatedRTSERVICESID')\n    base_model: int = Field(description='Foundation ModelID')\n    model_name: str = Field(max_length=50, description='Model Name')\n    method: TrainMethod = Field(description='Training Methods')\n    extra_params: Dict = Field(default_factory=dict, description='Additional parameters required for training tasks')\n    train_data: Optional[List[Dict]] = Field(default=None, description='Personal training data')\n    preset_data: Optional[List[Dict]] = Field(default=None, description='Preset training data')\n"
  },
  {
    "path": "src/backend/bisheng/finetune/utils.py",
    "content": "import xml.dom.minidom\nfrom typing import List, Dict\n\n\n# will be nvidia-smi -q  -x 's output is parsed as visual data\ndef parse_gpus(gpu_str: str) -> List[Dict]:\n    dom_tree = xml.dom.minidom.parseString(gpu_str)\n    collections = dom_tree.documentElement\n    gpus = collections.getElementsByTagName('gpu')\n    res = []\n    for one in gpus:\n        fb_mem_elem = one.getElementsByTagName('fb_memory_usage')[0]\n        gpu_uuid_elem = one.getElementsByTagName('uuid')[0]\n        gpu_id_elem = one.getElementsByTagName('minor_number')[0]\n        gpu_total_mem = fb_mem_elem.getElementsByTagName('total')[0]\n        free_mem = fb_mem_elem.getElementsByTagName('free')[0]\n        gpu_utility_elem = one.getElementsByTagName('utilization')[0].getElementsByTagName(\n            'gpu_util')[0]\n        res.append({\n            'gpu_uuid':\n                gpu_uuid_elem.firstChild.data,\n            'gpu_id':\n                gpu_id_elem.firstChild.data,\n            'gpu_total_mem':\n                '%.2f G' % (float(gpu_total_mem.firstChild.data.split(' ')[0]) / 1024),\n            'gpu_used_mem':\n                '%.2f G' % (float(free_mem.firstChild.data.split(' ')[0]) / 1024),\n            'gpu_utility':\n                round(float(gpu_utility_elem.firstChild.data.split(' ')[0]) / 100, 2)\n        })\n    return res\n\n\ndef parse_server_host(endpoint: str):\n    \"\"\" Put the data in the databaseendpointsResolve tohttpRequestedhost \"\"\"\n    endpoint = endpoint.replace('http://', '').split('/')[0]\n    return f'http://{endpoint}'\n"
  },
  {
    "path": "src/backend/bisheng/graph/__init__.py",
    "content": "from bisheng.graph.edge.base import Edge\nfrom bisheng.graph.graph.base import Graph\nfrom bisheng.graph.vertex.base import Vertex\nfrom bisheng.graph.vertex.types import (AgentVertex, ChainVertex,\n                                        DocumentLoaderVertex, EmbeddingVertex,\n                                        LLMVertex, MemoryVertex, PromptVertex,\n                                        RetrieverVertex, TextSplitterVertex,\n                                        ToolkitVertex, ToolVertex,\n                                        VectorStoreVertex, WrapperVertex)\n\n__all__ = [\n    'Graph',\n    'Vertex',\n    'Edge',\n    'AgentVertex',\n    'ChainVertex',\n    'DocumentLoaderVertex',\n    'EmbeddingVertex',\n    'LLMVertex',\n    'MemoryVertex',\n    'PromptVertex',\n    'TextSplitterVertex',\n    'ToolVertex',\n    'ToolkitVertex',\n    'VectorStoreVertex',\n    'WrapperVertex',\n    'RetrieverVertex',\n]\n"
  },
  {
    "path": "src/backend/bisheng/graph/edge/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/graph/edge/base.py",
    "content": "from typing import TYPE_CHECKING, List, Optional\n\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nif TYPE_CHECKING:\n    from bisheng.graph.vertex.base import Vertex\n\n\nclass SourceHandle(BaseModel):\n    baseClasses: List[str] = Field(..., description='List of base classes for the source handle.')\n    dataType: str = Field(..., description='Data type for the source handle.')\n    id: str = Field(..., description='Unique identifier for the source handle.')\n\n\nclass TargetHandle(BaseModel):\n    fieldName: str = Field(..., description='Field name for the target handle.')\n    id: str = Field(..., description='Unique identifier for the target handle.')\n    inputTypes: Optional[List[str]] = Field(\n        None, description='List of input types for the target handle.')\n    type: str = Field(..., description='Type of the target handle.')\n\n\nclass Edge:\n\n    def __init__(self, source: 'Vertex', target: 'Vertex', edge: dict):\n        self.source_id: str = source.id if source else ''\n        self.target_id: str = target.id if target else ''\n\n        if data := edge.get('data', {}):\n            self._source_handle = data.get('sourceHandle', {})\n            self._target_handle = data.get('targetHandle', {})\n            self.source_handle: SourceHandle = SourceHandle(**self._source_handle)\n            self.target_handle: TargetHandle = TargetHandle(**self._target_handle)\n            self.target_param = self.target_handle.fieldName\n            # validate handles\n            self.validate_handles(source, target)\n        else:\n            # Logging here because this is a breaking change\n            # logger.error('Edge data is empty')\n            self._source_handle = edge.get('sourceHandle', '')\n            self._target_handle = edge.get('targetHandle', '')\n            # 'BaseLoader;BaseOutputParser|documents|PromptTemplate-zmTlD'\n            # target_param is documents Compatible processing nestinggroup\n            self.target_param = self._target_handle.split('|')[1].split(f'_{self.target_id}')[0]\n        # 'BaseLoader;BaseOutputParser|documents|PromptTemplate-zmTlD'\n        # target_param is documents\n        self.validate_edge(source, target)\n\n    def validate_handles(self, source, target) -> None:\n        if self.target_handle.inputTypes is None:\n            self.valid_handles = self.target_handle.type in self.source_handle.baseClasses\n        else:\n            self.valid_handles = (any(baseClass in self.target_handle.inputTypes\n                                      for baseClass in self.source_handle.baseClasses)\n                                  or self.target_handle.type in self.source_handle.baseClasses)\n        if not self.valid_handles:\n            logger.debug(self.source_handle)\n            logger.debug(self.target_handle)\n            raise ValueError(f'Edge between {source.vertex_type} and {target.vertex_type} '\n                             f'has invalid handles')\n\n    def __setstate__(self, state):\n        self.source_id = state['source_id']\n        self.target_id = state['target_id']\n        self.target_param = state['target_param']\n        self.source_handle = state.get('source_handle')\n        self.target_handle = state.get('target_handle')\n\n    def validate_edge(self, source, target) -> None:\n        # Validate that the outputs of the source node are valid inputs\n        # for the target node\n        self.source_types = source.output\n        self.target_reqs = target.required_inputs + target.optional_inputs\n        # Both lists contain strings and sometimes a string contains the value we are\n        # looking for e.g. comgin_out=[\"Chain\"] and target_reqs=[\"LLMChain\"]\n        # so we need to check if any of the strings in source_types is in target_reqs\n        self.valid = any(output in target_req for output in self.source_types\n                         for target_req in self.target_reqs)\n        # Get what type of input the target node is expecting\n\n        self.matched_type = next(\n            (output for output in self.source_types if output in self.target_reqs),\n            None,\n        )\n        no_matched_type = self.matched_type is None\n        if no_matched_type:\n            logger.debug(self.source_types)\n            logger.debug(self.target_reqs)\n        if no_matched_type:\n            raise ValueError(f'Edge between {source.vertex_type} and {target.vertex_type} '\n                             f'has no matched type')\n\n    def __repr__(self) -> str:\n        return (\n            f'Edge(source={self.source_id}, target={self.target_id}, target_param={self.target_param}'\n            f', matched_type={self.matched_type})')\n\n    def __hash__(self) -> int:\n        return hash(self.__repr__())\n\n    def __eq__(self, __value: object) -> bool:\n        return (self.__repr__() == __value.__repr__() if isinstance(__value, Edge) else False)\n"
  },
  {
    "path": "src/backend/bisheng/graph/graph/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/graph/graph/base.py",
    "content": "from typing import Dict, Generator, List, Type, Union\n\nfrom bisheng.graph.edge.base import Edge\nfrom bisheng.graph.graph.constants import lazy_load_vertex_dict\nfrom bisheng.graph.utils import process_flow\nfrom bisheng.graph.vertex.base import Vertex\nfrom bisheng.graph.vertex.types import FileToolVertex, LLMVertex, ToolkitVertex\nfrom bisheng.interface.tools.constants import FILE_TOOLS\nfrom bisheng.utils import payload\nfrom langchain.chains.base import Chain\nfrom loguru import logger\n\n\nclass Graph:\n    \"\"\"A class representing a graph of nodes and edges.\"\"\"\n\n    def __init__(\n        self,\n        nodes: List[Dict[str, Union[str, Dict[str, Union[str, List[str]]]]]],\n        edges: List[Dict[str, str]],\n    ) -> None:\n        self._vertices = nodes\n        self._nodes = nodes\n        self._edges = edges\n        self.raw_graph_data = {'nodes': nodes, 'edges': edges}\n        self.top_level_vertices = []\n        for vertex in self._vertices:\n            if vertex_id := vertex.get('id'):\n                self.top_level_vertices.append(vertex_id)\n        self._graph_data = process_flow(self.raw_graph_data)\n\n        self._vertices = self._graph_data['nodes']\n        self._edges = self._graph_data['edges']\n        self._build_graph()\n\n    def __getstate__(self):\n        return self.raw_graph_data\n\n    def __setstate__(self, state):\n        self.__init__(**state)\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, Graph):\n            return False\n        return self.__repr__() == other.__repr__()\n\n    @classmethod\n    def from_payload(cls, payload: Dict) -> 'Graph':\n        \"\"\"\n        Creates a graph from a payload.\n\n        Args:\n            payload (Dict): The payload to create the graph from.˜`\n\n        Returns:\n            Graph: The created graph.\n        \"\"\"\n        if 'data' in payload:\n            payload = payload['data']\n        try:\n            nodes = payload['nodes']\n            if len(nodes) == 0:\n                raise Exception(\"At least one node is required\")\n            edges = payload['edges']\n            return cls(nodes, edges)\n        except KeyError as exc:\n            import traceback\n            traceback.print_exc()\n            raise ValueError(\n                f\"Invalid payload. Expected keys 'nodes' and 'edges'. Found {list(payload.keys())}\"\n            ) from exc\n\n    def _build_graph(self) -> None:\n        \"\"\"Builds the graph from the nodes and edges.\"\"\"\n        self.vertices = self._build_vertices()\n        self.vertex_map = {vertex.id: vertex for vertex in self.vertices}\n        self.edges = self._build_edges()\n\n        # This is a hack to make sure that the LLM node is sent to\n        # the toolkit node\n        self._build_vertex_params()\n        # remove invalid vertices\n        self._validate_vertices()\n\n    def _build_vertex_params(self) -> None:\n        \"\"\"Identifies and handles the LLM vertex within the graph.\"\"\"\n        llm_vertex = None\n        for vertex in self.vertices:\n            vertex._build_params()\n            if isinstance(vertex, LLMVertex):\n                llm_vertex = vertex\n\n        if llm_vertex:\n            for vertex in self.vertices:\n                if isinstance(vertex, ToolkitVertex):\n                    vertex.params['llm'] = llm_vertex\n\n    def _validate_vertices(self) -> None:\n        \"\"\"Check that all vertices have edges\"\"\"\n        if len(self.vertices) == 1:\n            return\n        for vertex in self.vertices:\n            if not self._validate_vertex(vertex):\n                raise ValueError(f'{vertex.vertex_type} is not connected to any other components')\n\n    def _validate_vertex(self, vertex: Vertex) -> bool:\n        \"\"\"Validates a vertex.\"\"\"\n        # All vertices that do not have edges are invalid\n        return len(self.get_vertex_edges(vertex.id)) > 0\n\n    def get_vertex(self, vertex_id: str) -> Union[None, Vertex]:\n        \"\"\"Returns a vertex by id.\"\"\"\n        return self.vertex_map.get(vertex_id)\n\n    def get_vertex_edges(self, vertex_id: str) -> List[Edge]:\n        \"\"\"Returns a list of edges for a given vertex.\"\"\"\n        return [\n            edge for edge in self.edges\n            if edge.source_id == vertex_id or edge.target_id == vertex_id\n        ]\n\n    def get_vertices_with_target(self, vertex_id: str) -> List[Vertex]:\n        \"\"\"Returns the vertices connected to a vertex.\"\"\"\n        vertices: List[Vertex] = []\n        for edge in self.edges:\n            if edge.target_id == vertex_id:\n                vertex = self.get_vertex(edge.source_id)\n                if vertex is None:\n                    continue\n                vertices.append(vertex)\n        return vertices\n\n    def get_input_nodes(self) -> List[Vertex]:\n        \"\"\"Builds the graph.\"\"\"\n        # Get root node\n        input_node = payload.get_root_node(self)\n        if input_node is None:\n            raise ValueError('No input root node found')\n        return input_node\n\n    async def abuild(self) -> Chain:\n        \"\"\"Builds the graph.\"\"\"\n        # Get root node\n        root_vertex = payload.get_root_vertex(self)\n        if root_vertex is None:\n            raise ValueError('No root node vertex found')\n\n        return await root_vertex.build()\n\n    def topological_sort(self) -> List[Vertex]:\n        \"\"\"\n        Performs a topological sort of the vertices in the graph.\n\n        Returns:\n            List[Vertex]: A list of vertices in topological order.\n\n        Raises:\n            ValueError: If the graph contains a cycle.\n        \"\"\"\n        # States: 0 = unvisited, 1 = visiting, 2 = visited\n        state = {node: 0 for node in self.vertices}\n        sorted_vertices = []\n\n        def dfs(node):\n            if state[node] == 1:\n                # We have a cycle\n                raise ValueError('Graph contains a cycle, cannot perform topological sort')\n            if state[node] == 0:\n                state[node] = 1\n                for edge in node.edges:\n                    if edge.source_id == node.id:\n                        dfs(self.get_vertex(edge.target_id))\n                state[node] = 2\n                sorted_vertices.append(node)\n\n        # Visit each node\n        for node in self.vertices:\n            if state[node] == 0:\n                dfs(node)\n\n        return list(reversed(sorted_vertices))\n\n    def generator_build(self) -> Generator:\n        \"\"\"Builds each vertex in the graph and yields it.\"\"\"\n        sorted_vertices = self.topological_sort()\n        logger.debug('There are %s vertices in the graph', len(sorted_vertices))\n        yield from sorted_vertices\n\n    def get_vertex_neighbors(self, vertex: Vertex) -> Dict[Vertex, int]:\n        \"\"\"Returns the neighbors of a vertex.\"\"\"\n        neighbors: Dict[Vertex, int] = {}\n        for edge in self.edges:\n            if edge.source_id == vertex.id:\n                neighbor = self.get_vertex(edge.target_id)\n                if neighbor is None:\n                    continue\n                if neighbor not in neighbors:\n                    neighbors[neighbor] = 0\n                neighbors[neighbor] += 1\n            elif edge.target_id == vertex.id:\n                neighbor = self.get_vertex(edge.source_id)\n                if neighbor is None:\n                    continue\n                if neighbor not in neighbors:\n                    neighbors[neighbor] = 0\n                neighbors[neighbor] += 1\n        return neighbors\n\n    def _build_edges(self) -> List[Edge]:\n        \"\"\"Builds the edges of the graph.\"\"\"\n        # Edge takes two nodes as arguments, so we need to build the nodes first\n        # and then build the edges\n        # if we can't find a node, we raise an error\n\n        edges: List[Edge] = []\n        for edge in self._edges:\n            source = self.get_vertex(edge['source'])\n            target = self.get_vertex(edge['target'])\n            if source is None:\n                raise ValueError(f\"Source node {edge['source']} not found\")\n            if target is None:\n                raise ValueError(f\"Target node {edge['target']} not found\")\n            edges.append(Edge(source, target, edge))\n        return edges\n\n    def _get_vertex_class(self, node_type: str, vertex_base_type: str) -> Type[Vertex]:\n        \"\"\"Returns the node class based on the node type.\"\"\"\n        if node_type in FILE_TOOLS:\n            return FileToolVertex\n        if vertex_base_type == 'CustomComponent':\n            return lazy_load_vertex_dict.get_custom_component_vertex_type()\n        if vertex_base_type in lazy_load_vertex_dict.VERTEX_TYPE_MAP:\n            return lazy_load_vertex_dict.VERTEX_TYPE_MAP[vertex_base_type]\n        return (lazy_load_vertex_dict.VERTEX_TYPE_MAP[node_type]\n                if node_type in lazy_load_vertex_dict.VERTEX_TYPE_MAP else Vertex)\n\n    def _build_vertices(self) -> List[Vertex]:\n        \"\"\"Builds the vertices of the graph.\"\"\"\n        nodes: List[Vertex] = []\n        for node in self._vertices:\n            node_data = node['data']\n            node_type: str = node_data['type']  # type: ignore\n            vertex_base_type: str = node_data['node']['template']['_type']  # type: ignore\n\n            VertexClass = self._get_vertex_class(node_type, vertex_base_type)\n            vertex_instance = VertexClass(node, graph=self)\n            vertex_instance.set_top_level(self.top_level_vertices)\n            nodes.append(vertex_instance)\n\n        return nodes\n\n    def get_children_by_node_type(self, node: Vertex, node_type: str) -> List[Vertex]:\n        \"\"\"Returns the children of a node based on the node type.\"\"\"\n        children = []\n        node_types = [node.data['type']]\n        if 'node' in node.data:\n            node_types += node.data['node']['base_classes']\n        if node_type in node_types:\n            children.append(node)\n        return children\n\n    def __repr__(self):\n        node_ids = [node.id for node in self.vertices]\n        edges_repr = '\\n'.join([f'{edge.source_id} --> {edge.target_id}' for edge in self.edges])\n        return f'Graph:\\nNodes: {node_ids}\\nConnections:\\n{edges_repr}'\n"
  },
  {
    "path": "src/backend/bisheng/graph/graph/constants.py",
    "content": "from bisheng.graph.vertex import types\nfrom bisheng.interface.agents.base import agent_creator\nfrom bisheng.interface.chains.base import chain_creator\nfrom bisheng.interface.document_loaders.base import documentloader_creator\nfrom bisheng.interface.embeddings.base import embedding_creator\nfrom bisheng.interface.llms.base import llm_creator\nfrom bisheng.interface.memories.base import memory_creator\nfrom bisheng.interface.output_parsers.base import output_parser_creator\nfrom bisheng.interface.prompts.base import prompt_creator\nfrom bisheng.interface.retrievers.base import retriever_creator\nfrom bisheng.interface.text_splitters.base import textsplitter_creator\nfrom bisheng.interface.toolkits.base import toolkits_creator\nfrom bisheng.interface.tools.base import tool_creator\nfrom bisheng.interface.vector_store.base import vectorstore_creator\nfrom bisheng.interface.wrappers.base import wrapper_creator\nfrom bisheng.utils.lazy_load import LazyLoadDictBase\n\n\nclass VertexTypesDict(LazyLoadDictBase):\n\n    def __init__(self):\n        self._all_types_dict = None\n\n    @property\n    def VERTEX_TYPE_MAP(self):\n        return self.all_types_dict\n\n    def _build_dict(self):\n        langchain_types_dict = self.get_type_dict()\n        return {\n            **langchain_types_dict,\n            'Custom': ['Custom Tool', 'Python Function'],\n        }\n\n    def get_custom_component_vertex_type(self):\n        return types.CustomComponentVertex\n\n    def get_type_dict(self):\n        return {\n            **{\n                t: types.PromptVertex\n                for t in prompt_creator.to_list()\n            },\n            **{\n                t: types.AgentVertex\n                for t in agent_creator.to_list()\n            },\n            **{\n                t: types.ChainVertex\n                for t in chain_creator.to_list()\n            },\n            **{\n                t: types.ToolVertex\n                for t in tool_creator.to_list()\n            },\n            **{\n                t: types.ToolkitVertex\n                for t in toolkits_creator.to_list()\n            },\n            **{\n                t: types.WrapperVertex\n                for t in wrapper_creator.to_list()\n            },\n            **{\n                t: types.LLMVertex\n                for t in llm_creator.to_list()\n            },\n            **{\n                t: types.MemoryVertex\n                for t in memory_creator.to_list()\n            },\n            **{\n                t: types.EmbeddingVertex\n                for t in embedding_creator.to_list()\n            },\n            **{\n                t: types.VectorStoreVertex\n                for t in vectorstore_creator.to_list()\n            },\n            **{\n                t: types.DocumentLoaderVertex\n                for t in documentloader_creator.to_list()\n            },\n            **{\n                t: types.TextSplitterVertex\n                for t in textsplitter_creator.to_list()\n            },\n            **{\n                t: types.OutputParserVertex\n                for t in output_parser_creator.to_list()\n            },\n            # **{t: types.CustomComponentVertex for t in custom_component_creator.to_list()},\n            **{\n                t: types.RetrieverVertex\n                for t in retriever_creator.to_list()\n            },\n        }\n\n\nlazy_load_vertex_dict = VertexTypesDict()\n"
  },
  {
    "path": "src/backend/bisheng/graph/graph/utils.py",
    "content": "import copy\nfrom collections import deque\nfrom typing import Dict, List\n\n\ndef find_last_node(nodes, edges):\n    \"\"\"\n    This function receives a flow and returns the last node.\n    \"\"\"\n    return next((n for n in nodes if all(e['source'] != n['id'] for e in edges)), None)\n\n\ndef add_parent_node_id(nodes, parent_node_id):\n    \"\"\"\n    This function receives a list of nodes and adds a parent_node_id to each node.\n    \"\"\"\n    for node in nodes:\n        node['parent_node_id'] = parent_node_id\n\n\ndef ungroup_node(group_node_data, base_flow):\n    template, flow = (\n        group_node_data['node']['template'],\n        group_node_data['node']['flow'],\n    )\n    parent_node_id = group_node_data['id']\n    g_nodes = flow['data']['nodes']\n    add_parent_node_id(g_nodes, parent_node_id)\n    g_edges = flow['data']['edges']\n\n    # Redirect edges to the correct proxy node\n    updated_edges = get_updated_edges(base_flow, g_nodes, g_edges, group_node_data['id'])\n\n    # Update template values\n    update_template(template, g_nodes)\n\n    nodes = [n for n in base_flow['nodes'] if n['id'] != group_node_data['id']] + g_nodes\n    edges = ([\n        e for e in base_flow['edges']\n        if e['target'] != group_node_data['id'] and e['source'] != group_node_data['id']\n    ] + g_edges + updated_edges)\n\n    base_flow['nodes'] = nodes\n    base_flow['edges'] = edges\n\n    return nodes\n\n\ndef raw_topological_sort(nodes, edges) -> List[Dict]:\n    # Redefine the above function but using the nodes and self._edges\n    # which are dicts instead of Vertex and Edge objects\n    # nodes have an id, edges have a source and target keys\n    # return a list of node ids in topological order\n\n    # States: 0 = unvisited, 1 = visiting, 2 = visited\n    state = {node['id']: 0 for node in nodes}\n    nodes_dict = {node['id']: node for node in nodes}\n    sorted_vertices = []\n\n    def dfs(node):\n        if state[node] == 1:\n            # We have a cycle\n            raise ValueError('Graph contains a cycle, cannot perform topological sort')\n        if state[node] == 0:\n            state[node] = 1\n            for edge in edges:\n                if edge['source'] == node:\n                    dfs(edge['target'])\n            state[node] = 2\n            sorted_vertices.append(node)\n\n    # Visit each node\n    for node in nodes:\n        if state[node['id']] == 0:\n            dfs(node['id'])\n\n    reverse_sorted = list(reversed(sorted_vertices))\n    return [nodes_dict[node_id] for node_id in reverse_sorted]\n\n\ndef process_flow(flow_object):\n    cloned_flow = copy.deepcopy(flow_object)\n    processed_nodes = set()  # To keep track of processed nodes\n\n    def process_node(node):\n        node_id = node.get('id')\n\n        # If node already processed, skip\n        if node_id in processed_nodes:\n            return\n\n        if node.get('data') and node['data'].get('node') and node['data']['node'].get('flow'):\n            process_flow(node['data']['node']['flow']['data'])\n            new_nodes = ungroup_node(node['data'], cloned_flow)\n            # Add new nodes to the queue for future processing\n            nodes_to_process.extend(new_nodes)\n\n        # Mark node as processed\n        processed_nodes.add(node_id)\n\n    sorted_nodes_list = raw_topological_sort(cloned_flow['nodes'], cloned_flow['edges'])\n    nodes_to_process = deque(sorted_nodes_list)\n\n    while nodes_to_process:\n        node = nodes_to_process.popleft()\n        process_node(node)\n\n    return cloned_flow\n\n\ndef update_template(template, g_nodes):\n    \"\"\"\n    Updates the template of a node in a graph with the given template.\n\n    Args:\n        template (dict): The new template to update the node with.\n        g_nodes (list): The list of nodes in the graph.\n\n    Returns:\n        None\n    \"\"\"\n    for _, value in template.items():\n        if not value.get('proxy'):\n            continue\n        proxy_dict = value['proxy']\n        field, id_ = proxy_dict['field'], proxy_dict['id']\n        node_index = next((i for i, n in enumerate(g_nodes) if n['id'] == id_), -1)\n        if node_index != -1:\n            display_name = None\n            show = g_nodes[node_index]['data']['node']['template'][field]['show']\n            advanced = g_nodes[node_index]['data']['node']['template'][field]['advanced']\n            if 'display_name' in g_nodes[node_index]['data']['node']['template'][field]:\n                display_name = g_nodes[node_index]['data']['node']['template'][field][\n                    'display_name']\n            else:\n                display_name = g_nodes[node_index]['data']['node']['template'][field]['name']\n\n            g_nodes[node_index]['data']['node']['template'][field] = value\n            g_nodes[node_index]['data']['node']['template'][field]['show'] = show\n            g_nodes[node_index]['data']['node']['template'][field]['advanced'] = advanced\n            g_nodes[node_index]['data']['node']['template'][field]['display_name'] = display_name\n\n\ndef update_target_handle(\n    new_edge,\n    g_nodes,\n    group_node_id,\n):\n    \"\"\"\n    Updates the target handle of a given edge if it is a proxy node.\n\n    Args:\n        new_edge (dict): The edge to update.\n        g_nodes (list): The list of nodes in the graph.\n        group_node_id (str): The ID of the group node.\n\n    Returns:\n        dict: The updated edge.\n    \"\"\"\n    target_handle = new_edge['data']['targetHandle']\n    if target_handle.get('proxy'):\n        proxy_id = target_handle['proxy']['id']\n        if node := next((n for n in g_nodes if n['id'] == proxy_id), None):\n            set_new_target_handle(proxy_id, new_edge, target_handle, node)\n        else:\n            raise ValueError(\n                f'Group node {group_node_id} has an invalid target proxy node {proxy_id}')\n    return new_edge\n\n\ndef set_new_target_handle(proxy_id, new_edge, target_handle, node):\n    \"\"\"\n    Sets a new target handle for a given edge.\n\n    Args:\n        proxy_id (str): The ID of the proxy.\n        new_edge (dict): The new edge to be created.\n        target_handle (dict): The target handle of the edge.\n        node (dict): The node containing the edge.\n\n    Returns:\n        None\n    \"\"\"\n    new_edge['target'] = proxy_id\n    _type = target_handle.get('type')\n    if _type is None:\n        raise KeyError(\"The 'type' key must be present in target_handle.\")\n\n    field = target_handle['proxy']['field']\n    new_target_handle = {\n        'fieldName': field,\n        'type': _type,\n        'id': proxy_id,\n    }\n    if node['data']['node'].get('flow'):\n        new_target_handle['proxy'] = {\n            'field': node['data']['node']['template'][field]['proxy']['field'],\n            'id': node['data']['node']['template'][field]['proxy']['id'],\n        }\n    if input_types := target_handle.get('inputTypes'):\n        new_target_handle['inputTypes'] = input_types\n    new_edge['data']['targetHandle'] = new_target_handle\n\n\ndef update_source_handle(new_edge, g_nodes, g_edges):\n    \"\"\"\n    Updates the source handle of a given edge to the last node in the flow data.\n\n    Args:\n        new_edge (dict): The edge to update.\n        flow_data (dict): The flow data containing the nodes and edges.\n\n    Returns:\n        dict: The updated edge with the new source handle.\n    \"\"\"\n    last_node = copy.deepcopy(find_last_node(g_nodes, g_edges))\n    new_edge['source'] = last_node['id']\n    new_source_handle = new_edge['data']['sourceHandle']\n    new_source_handle['id'] = last_node['id']\n    new_edge['data']['sourceHandle'] = new_source_handle\n    return new_edge\n\n\ndef get_updated_edges(base_flow, g_nodes, g_edges, group_node_id):\n    \"\"\"\n    Given a base flow, a list of graph nodes and a group node id, returns a list of updated edges.\n    An updated edge is an edge that has its target or source handle updated based on the group node id.\n\n    Args:\n        base_flow (dict): The base flow containing a list of edges.\n        g_nodes (list): A list of graph nodes.\n        group_node_id (str): The id of the group node.\n\n    Returns:\n        list: A list of updated edges.\n    \"\"\"\n    updated_edges = []\n    for edge in base_flow['edges']:\n        new_edge = copy.deepcopy(edge)\n        if new_edge['target'] == group_node_id:\n            new_edge = update_target_handle(new_edge, g_nodes, group_node_id)\n\n        if new_edge['source'] == group_node_id:\n            new_edge = update_source_handle(new_edge, g_nodes, g_edges)\n\n        if edge['target'] == group_node_id or edge['source'] == group_node_id:\n            updated_edges.append(new_edge)\n    return updated_edges\n"
  },
  {
    "path": "src/backend/bisheng/graph/utils.py",
    "content": "import copy\nfrom collections import deque\nfrom typing import Any, Dict, List, Union\n\nfrom bisheng.interface.utils import extract_input_variables_from_prompt\n\n\nclass UnbuiltObject:\n    pass\n\n\ndef validate_prompt(prompt: str):\n    \"\"\"Validate prompt.\"\"\"\n    if extract_input_variables_from_prompt(prompt):\n        return prompt\n\n    return fix_prompt(prompt)\n\n\ndef fix_prompt(prompt: str):\n    \"\"\"Fix prompt.\"\"\"\n    return prompt + ' {input}'\n\n\ndef flatten_list(list_of_lists: list[Union[list, Any]]) -> list:\n    \"\"\"Flatten list of lists.\"\"\"\n    new_list = []\n    for item in list_of_lists:\n        if isinstance(item, list):\n            new_list.extend(item)\n        else:\n            new_list.append(item)\n    return new_list\n\n\ndef find_last_node(nodes, edges):\n    \"\"\"\n    This function receives a flow and returns the last node.\n    \"\"\"\n    return next((n for n in nodes if all(e['source'] != n['id'] for e in edges)), None)\n\n\ndef add_parent_node_id(nodes, parent_node_id):\n    \"\"\"\n    This function receives a list of nodes and adds a parent_node_id to each node.\n    \"\"\"\n    for node in nodes:\n        node['parent_node_id'] = parent_node_id\n\n\ndef ungroup_node(group_node_data, base_flow):\n    template, flow = (\n        group_node_data['node']['template'],\n        group_node_data['node']['flow'],\n    )\n    parent_node_id = group_node_data['id']\n    g_nodes = flow['data']['nodes']\n    add_parent_node_id(g_nodes, parent_node_id)\n    g_edges = flow['data']['edges']\n\n    # Redirect edges to the correct proxy node\n    updated_edges = get_updated_edges(base_flow, g_nodes, g_edges, group_node_data['id'])\n\n    # Update template values\n    update_template(template, g_nodes)\n\n    nodes = [n for n in base_flow['nodes'] if n['id'] != group_node_data['id']] + g_nodes\n    edges = ([\n        e for e in base_flow['edges']\n        if e['target'] != group_node_data['id'] and e['source'] != group_node_data['id']\n    ] + g_edges + updated_edges)\n\n    base_flow['nodes'] = nodes\n    base_flow['edges'] = edges\n\n    return nodes\n\n\ndef raw_topological_sort(nodes, edges) -> List[Dict]:\n    # Redefine the above function but using the nodes and self._edges\n    # which are dicts instead of Vertex and Edge objects\n    # nodes have an id, edges have a source and target keys\n    # return a list of node ids in topological order\n\n    # States: 0 = unvisited, 1 = visiting, 2 = visited\n    state = {node['id']: 0 for node in nodes}\n    nodes_dict = {node['id']: node for node in nodes}\n    sorted_vertices = []\n\n    def dfs(node):\n        if state[node] == 1:\n            # We have a cycle\n            raise ValueError('Graph contains a cycle, cannot perform topological sort')\n        if state[node] == 0:\n            state[node] = 1\n            for edge in edges:\n                if edge['source'] == node:\n                    dfs(edge['target'])\n            state[node] = 2\n            sorted_vertices.append(node)\n\n    # Visit each node\n    for node in nodes:\n        if state[node['id']] == 0:\n            dfs(node['id'])\n\n    reverse_sorted = list(reversed(sorted_vertices))\n    return [nodes_dict[node_id] for node_id in reverse_sorted]\n\n\ndef process_flow(flow_object):\n    cloned_flow = copy.deepcopy(flow_object)\n    processed_nodes = set()  # To keep track of processed nodes\n\n    def process_node(node):\n        node_id = node.get('id')\n\n        # If node already processed, skip\n        if node_id in processed_nodes:\n            return\n\n        if node.get('data') and node['data'].get('node') and node['data']['node'].get('flow'):\n            process_flow(node['data']['node']['flow']['data'])\n            new_nodes = ungroup_node(node['data'], cloned_flow)\n            # Add new nodes to the queue for future processing\n            nodes_to_process.extend(new_nodes)\n\n        # Mark node as processed\n        processed_nodes.add(node_id)\n\n    sorted_nodes_list = raw_topological_sort(cloned_flow['nodes'], cloned_flow['edges'])\n    nodes_to_process = deque(sorted_nodes_list)\n\n    while nodes_to_process:\n        node = nodes_to_process.popleft()\n        process_node(node)\n\n    return cloned_flow\n\n\ndef update_template(template, g_nodes):\n    \"\"\"\n    Updates the template of a node in a graph with the given template.\n\n    Args:\n        template (dict): The new template to update the node with.\n        g_nodes (list): The list of nodes in the graph.\n\n    Returns:\n        None\n    \"\"\"\n    for _, value in template.items():\n        if not value.get('proxy'):\n            continue\n        proxy_dict = value['proxy']\n        field, id_ = proxy_dict['field'], proxy_dict['id']\n        node_index = next((i for i, n in enumerate(g_nodes) if n['id'] == id_), -1)\n        if node_index != -1:\n            display_name = None\n            show = g_nodes[node_index]['data']['node']['template'][field].get('show', False)\n            advanced = g_nodes[node_index]['data']['node']['template'][field]['advanced']\n            if 'display_name' in g_nodes[node_index]['data']['node']['template'][field]:\n                display_name = g_nodes[node_index]['data']['node']['template'][field][\n                    'display_name']\n            else:\n                display_name = g_nodes[node_index]['data']['node']['template'][field]['name']\n\n            g_nodes[node_index]['data']['node']['template'][field] = value\n            g_nodes[node_index]['data']['node']['template'][field]['show'] = show\n            g_nodes[node_index]['data']['node']['template'][field]['advanced'] = advanced\n            g_nodes[node_index]['data']['node']['template'][field]['display_name'] = display_name\n\n\ndef update_target_handle(\n    new_edge,\n    g_nodes,\n    group_node_id,\n):\n    \"\"\"\n    Updates the target handle of a given edge if it is a proxy node.\n\n    Args:\n        new_edge (dict): The edge to update.\n        g_nodes (list): The list of nodes in the graph.\n        group_node_id (str): The ID of the group node.\n\n    Returns:\n        dict: The updated edge.\n    \"\"\"\n    # Compatibility Logic\n    for node in g_nodes:\n        if node['id'] in new_edge['targetHandle']:\n            new_edge['target'] = node['id']\n            break\n    return new_edge\n\n\ndef set_new_target_handle(proxy_id, new_edge, target_handle, node):\n    \"\"\"\n    Sets a new target handle for a given edge.\n\n    Args:\n        proxy_id (str): The ID of the proxy.\n        new_edge (dict): The new edge to be created.\n        target_handle (dict): The target handle of the edge.\n        node (dict): The node containing the edge.\n\n    Returns:\n        None\n    \"\"\"\n    new_edge['target'] = proxy_id\n    _type = target_handle.get('type')\n    if _type is None:\n        raise KeyError(\"The 'type' key must be present in target_handle.\")\n\n    field = target_handle['proxy']['field']\n    new_target_handle = {\n        'fieldName': field,\n        'type': _type,\n        'id': proxy_id,\n    }\n    if node['data']['node'].get('flow'):\n        new_target_handle['proxy'] = {\n            'field': node['data']['node']['template'][field]['proxy']['field'],\n            'id': node['data']['node']['template'][field]['proxy']['id'],\n        }\n    if input_types := target_handle.get('inputTypes'):\n        new_target_handle['inputTypes'] = input_types\n    if not new_edge.get('data'):\n        new_edge['data'] = {}\n    new_edge['data']['targetHandle'] = new_target_handle\n\n\ndef update_source_handle(new_edge, g_nodes, g_edges):\n    \"\"\"\n    Updates the source handle of a given edge to the last node in the flow data.\n\n    Args:\n        new_edge (dict): The edge to update.\n        flow_data (dict): The flow data containing the nodes and edges.\n\n    Returns:\n        dict: The updated edge with the new source handle.\n    \"\"\"\n    last_node = copy.deepcopy(find_last_node(g_nodes, g_edges))\n    new_edge['sourceHandle'] = new_edge['sourceHandle'].replace(new_edge['source'],\n                                                                last_node['id'])\n    new_edge['source'] = last_node['id']\n    return new_edge\n\n\ndef get_updated_edges(base_flow, g_nodes, g_edges, group_node_id):\n    \"\"\"\n    Given a base flow, a list of graph nodes and a group node id, returns a list of updated edges.\n    An updated edge is an edge that has its target or source handle updated based on the group node id.\n\n    Args:\n        base_flow (dict): The base flow containing a list of edges.\n        g_nodes (list): A list of graph nodes.\n        group_node_id (str): The id of the group node.\n\n    Returns:\n        list: A list of updated edges.\n    \"\"\"\n    updated_edges = []\n    for edge in base_flow['edges']:\n        new_edge = copy.deepcopy(edge)\n        if new_edge['target'] == group_node_id:\n            new_edge = update_target_handle(new_edge, g_nodes, group_node_id)\n\n        if new_edge['source'] == group_node_id:\n            new_edge = update_source_handle(new_edge, g_nodes, g_edges)\n\n        if edge['target'] == group_node_id or edge['source'] == group_node_id:\n            updated_edges.append(new_edge)\n    return updated_edges\n\n\ndef find_next_node(graph_data: Dict, node_id: str) -> List[Dict]:\n    \"\"\"\n    Finds the next node in the graph data based on the given node id.\n    \"\"\"\n    nodes = graph_data.get('nodes', [])\n    edges = graph_data.get('edges', [])\n\n    edges_ = [e['target'] for e in edges if e['source'] == node_id]\n    return [n for n in nodes if n['id'] in edges_]\n\n\ndef cut_graph_bynode(graph_data: Dict, node_id: str) -> List[Dict]:\n    \"\"\"\n    Setujunode_id Find andnodeAll dependent nodes involved.\n    \"\"\"\n    nodes = graph_data.get('nodes', [])\n    edges = graph_data.get('edges', [])\n\n    nodes_new_list = []\n    edges_new_list = []\n    iflast = True\n    for e in edges:\n        if e['target'] == node_id:\n            iflast = False\n            node_list, edge_list = cut_graph_bynode(graph_data, e['source'])\n            nodes_new_list.extend(node_list)\n            edges_new_list.extend(edge_list)\n            nodes_new_list.append([n for n in nodes if n['id'] == node_id][0])\n            edges_new_list.append(e)\n    if iflast:\n        for node in nodes:\n            if node['id'] == node_id:\n                return [node], []\n\n    return nodes_new_list, edges_new_list\n"
  },
  {
    "path": "src/backend/bisheng/graph/vertex/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/graph/vertex/base.py",
    "content": "import ast\nimport inspect\nimport json\nimport types\nfrom typing import TYPE_CHECKING, Any, Coroutine, Dict, List, Optional\n\nfrom bisheng.graph.utils import UnbuiltObject\nfrom bisheng.interface.initialize import loading\nfrom bisheng.interface.listing import lazy_load_dict\nfrom bisheng.utils.constants import DIRECT_TYPES, NODE_ID_DICT, PRESET_QUESTION\nfrom bisheng.utils.util import sync_to_async\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from bisheng.graph.edge.base import Edge\n    from bisheng.graph.graph.base import Graph\n\n\nclass Vertex:\n\n    def __init__(\n        self,\n        data: Dict,\n        graph: 'Graph',\n        base_type: Optional[str] = None,\n        is_task: bool = False,\n        params: Optional[Dict] = None,\n    ) -> None:\n        self.graph = graph\n        self.id: str = data['id']\n        self._data = data\n        self.base_type: Optional[str] = base_type\n        self._parse_data()\n        self._built_object = UnbuiltObject()\n        self._built = False\n        self.artifacts: Dict[str, Any] = {}\n        self.task_id: Optional[str] = None\n        self.is_task = is_task\n        self.params = params or {}\n        self.parent_node_id: Optional[str] = self._data.get('parent_node_id')\n        self.parent_is_top_level = False\n\n    @property\n    def edges(self) -> List['Edge']:\n        return self.graph.get_vertex_edges(self.id)\n\n    def __getstate__(self):\n        return {\n            '_data': self._data,\n            'params': {},\n            'base_type': self.base_type,\n            'is_task': self.is_task,\n            'id': self.id,\n            '_built_object': UnbuiltObject(),\n            '_built': False,\n            'parent_node_id': self.parent_node_id,\n            'parent_is_top_level': self.parent_is_top_level,\n        }\n\n    def __setstate__(self, state):\n        self._data = state['_data']\n        self.params = state['params']\n        self.base_type = state['base_type']\n        self.is_task = state['is_task']\n        self.id = state['id']\n        self._parse_data()\n        if '_built_object' in state:\n            self._built_object = state['_built_object']\n            self._built = state['_built']\n        else:\n            self._built_object = UnbuiltObject()\n            self._built = False\n        self.artifacts: Dict[str, Any] = {}\n        self.task_id: Optional[str] = None\n        self.parent_node_id = state['parent_node_id']\n        self.parent_is_top_level = state['parent_is_top_level']\n\n    def set_top_level(self, top_level_vertices: List[str]) -> None:\n        self.parent_is_top_level = self.parent_node_id in top_level_vertices\n\n    def _parse_data(self) -> None:\n        self.data = self._data['data']\n        self.output = self.data['node']['base_classes']\n        template_dicts = {\n            key: value\n            for key, value in self.data['node']['template'].items() if isinstance(value, dict)\n        }\n\n        self.required_inputs = [\n            template_dicts[key]['type'] for key, value in template_dicts.items()\n            if value['required']\n        ]\n        self.optional_inputs = [\n            template_dicts[key]['type'] for key, value in template_dicts.items()\n            if not value['required']\n        ]\n        # Add the template_dicts[key][\"input_types\"] to the optional_inputs\n        self.optional_inputs.extend([\n            input_type for value in template_dicts.values()\n            for input_type in value.get('input_types', [])\n        ])\n\n        template_dict = self.data['node']['template']\n        self.vertex_type = (self.data['type'] if 'Tool' not in self.output\n                            or template_dict['_type'].islower() else template_dict['_type'])\n\n        if self.base_type is None:\n            for base_type, value in lazy_load_dict.ALL_TYPES_DICT.items():\n                if self.vertex_type in value:\n                    self.base_type = base_type\n                    break\n\n    def get_task(self):\n        # using the task_id, get the task from celery\n        # and return it\n        from celery.result import AsyncResult  # type: ignore\n\n        return AsyncResult(self.task_id)\n\n    def _build_params(self):\n        # sourcery skip: merge-list-append, remove-redundant-if\n        # Some params are required, some are optional\n        # but most importantly, some params are python base classes\n        # like str and others are LangChain objects like LLMChain, BasePromptTemplate\n        # so we need to be able to distinguish between the two\n\n        # The dicts with \"type\" == \"str\" are the ones that are python base classes\n        # and most likely have a \"value\" key\n\n        # So for each key besides \"_type\" in the template dict, we have a dict\n        # with a \"type\" key. If the type is not \"str\", then we need to get the\n        # edge that connects to that node and get the Node with the required data\n        # and use that as the value for the param\n        # If the type is \"str\", then we need to get the value of the \"value\" key\n        # and use that as the value for the param\n        if self.graph is None:\n            raise ValueError('Graph not found')\n\n        template_dict = {\n            key: value\n            for key, value in self.data['node']['template'].items() if isinstance(value, dict)\n        }\n        params = {}\n\n        for edge in self.edges:\n            if not hasattr(edge, 'target_param'):\n                continue\n            param_key = edge.target_param\n\n            # If the param_key is in the template_dict and the edge.target_id is the current node\n            # We check this to make sure params with the same name but different target_id\n            # don't get overwritten\n            if param_key in template_dict and edge.target_id == self.id:\n                if template_dict[param_key]['list']:\n                    if param_key not in params:\n                        params[param_key] = []\n                    params[param_key].append(self.graph.get_vertex(edge.source_id))\n                elif edge.target_id == self.id:\n                    params[param_key] = self.graph.get_vertex(edge.source_id)\n\n            # for report, should get the source of source\n            for inner_edge in self.graph.get_vertex(edge.source_id).edges:\n                source_type = inner_edge.target_param\n                if (source_type == 'input_node' and inner_edge.source_id != self.id\n                        and inner_edge.target_id != self.id):\n                    if self.graph.get_vertex(inner_edge.source_id).vertex_type == 'InputNode':\n                        # for extra params,\n                        if PRESET_QUESTION not in params:\n                            params[PRESET_QUESTION] = {}\n                        params[PRESET_QUESTION].update({\n                            inner_edge.target_id:\n                            (inner_edge.source_id, self.graph.get_vertex(inner_edge.source_id))\n                        })\n                elif (source_type == 'documents' and inner_edge.source_id != self.id\n                      and inner_edge.target_id != self.id and self.graph.get_vertex(\n                          inner_edge.target_id).vertex_type == 'LoaderOutputChain'):\n                    if self.graph.get_vertex(inner_edge.source_id).vertex_type in {\n                            'UniversalKVLoader', 'CustomKVLoader'\n                    }:\n                        for key, value in self.graph.get_vertex(\n                                inner_edge.source_id).data['node']['template'].items():\n                            if key in {'schemas', 'schema'}:\n                                schema = value['value'].split('|')\n                                if PRESET_QUESTION not in params:\n                                    params[PRESET_QUESTION] = {}\n                                if inner_edge.target_id in params[PRESET_QUESTION]:\n                                    params[PRESET_QUESTION][inner_edge.target_id].append(\n                                        (inner_edge.source_id, schema))\n                                else:\n                                    params[PRESET_QUESTION].update(\n                                        {inner_edge.target_id: [(inner_edge.source_id, schema)]})\n\n        for key, value in template_dict.items():\n            if key in params:\n                continue\n            if key == '_type' or (not value.get('show')\n                                  and not value.get('value')) and key != 'code':\n                continue\n            if value.get('collection_id') and 'collection_id' not in template_dict:\n                params['collection_id'] = value.get('collection_id')\n            # If the type is not transformable to a python base class\n            # then we need to get the edge that connects to this node\n            if value.get('type') == 'file':\n                # Load the type in value.get('suffixes') using\n                # what is inside value.get('content')\n                # value.get('value') is the file name\n                file_path = value.get('file_path')\n                params['file_name'] = value.get('value')\n                params[key] = file_path\n            elif value.get('type') in DIRECT_TYPES and params.get(key) is None:\n                val = value.get('value')\n                if value.get('type') == 'code':\n                    try:\n                        params[key] = ast.literal_eval(val) if val else None\n                    except Exception as exc:\n                        logger.debug(f'Error parsing code: {exc}')\n                        params[key] = val\n                elif value.get('type') in ['dict', 'NestedDict']:\n                    # When dict comes from the frontend it comes as a\n                    # list of dicts, so we need to convert it to a dict\n                    # before passing it to the build method\n                    if isinstance(val, list):\n                        params[key] = {\n                            k: v\n                            for item in value.get('value', [])\n                            for k, v in item.items()\n                        }\n                    elif isinstance(val, dict):\n                        params[key] = val\n                    elif isinstance(val, str):\n                        params[key] = json.loads(val) if val else {}\n                elif value.get('type') == 'int' and val is not None:\n                    try:\n                        params[key] = int(val)\n                    except ValueError:\n                        params[key] = val\n                elif value.get('type') == 'float' and val is not None:\n                    try:\n                        params[key] = float(val)\n                    except ValueError:\n                        params[key] = val\n                else:\n                    params[key] = val\n\n            if not value.get('required') and params.get(key) is None:\n                if value.get('default'):\n                    params[key] = value.get('default')\n                else:\n                    params.pop(key, None)\n        # Add _type to params\n        self._raw_params = params\n        self.params = params\n\n    async def _build(self, user_id=None):\n        \"\"\"\n        Initiate the build process.\n        \"\"\"\n        logger.debug(f'Building {self.vertex_type}')\n        # keep node_id in params\n        self.params[NODE_ID_DICT] = {}\n        await self._build_each_node_in_params_dict(user_id)\n        await self._get_and_instantiate_class(user_id)\n        self._validate_built_object()\n\n        self._built = True\n\n    async def _build_each_node_in_params_dict(self, user_id=None):\n        \"\"\"\n        Iterates over each node in the params dictionary and builds it.\n        \"\"\"\n        for key, value in self.params.copy().items():\n            if self._is_node(value):\n                if value == self:\n                    del self.params[key]\n                    continue\n                await self._build_node_and_update_params(key, value, user_id)\n            elif isinstance(value, list) and self._is_list_of_nodes(value):\n                await self._build_list_of_nodes_and_update_params(key, value, user_id)\n            elif isinstance(value, dict) and self._is_dict_of_nodes(value):\n                await self._build_dict_of_nodes_and_update_params(key, value, user_id)\n\n    def _is_node(self, value):\n        \"\"\"\n        Checks if the provided value is an instance of Vertex.\n        \"\"\"\n        return isinstance(value, Vertex)\n\n    def _is_list_of_nodes(self, value):\n        \"\"\"\n        Checks if the provided value is a list of Vertex instances.\n        \"\"\"\n        return all(self._is_node(node) for node in value)\n\n    def _is_dict_of_nodes(self, value):\n        nodes = [node for node in value.values() if isinstance(node, tuple)]\n        if nodes:\n            return any(self._is_node(node[1]) for node in nodes)\n        else:\n            return False\n\n    async def get_result(self, user_id=None, timeout=None) -> Any:\n        # Check if the Vertex was built already\n        if self._built:\n            return self._built_object\n\n        if self.is_task and self.task_id is not None:\n            task = self.get_task()\n\n            result = task.get(timeout=timeout)\n            if isinstance(result, Coroutine):\n                result = await result\n            if result is not None:  # If result is ready\n                self._update_built_object_and_artifacts(result)\n                return self._built_object\n            else:\n                # Handle the case when the result is not ready (retry, throw exception, etc.)\n                pass\n\n        # If there's no task_id, build the vertex locally\n        await self.build(user_id=user_id)\n        return self._built_object\n\n    async def _build_node_and_update_params(self, key, node, user_id=None):\n        \"\"\"\n        Builds a given node and updates the params dictionary accordingly.\n        \"\"\"\n        result = await node.get_result(user_id)\n        self._handle_func(key, result)\n        if isinstance(result, list):\n            self._extend_params_list_with_result(key, result)\n        self.params[key] = result\n        self.params[NODE_ID_DICT].update({key: node.id})\n\n    async def _build_list_of_nodes_and_update_params(self,\n                                                     key,\n                                                     nodes: List['Vertex'],\n                                                     user_id=None):\n        \"\"\"\n        Iterates over a list of nodes, builds each and updates the params dictionary.\n        \"\"\"\n        self.params[key] = []\n        key_list = []\n        for node in nodes:\n            key_list.append(node.id)\n            built = await node.get_result(user_id)\n            if isinstance(built, list):\n                if key not in self.params:\n                    self.params[key] = []\n                self.params[key].extend(built)\n            else:\n                self.params[key].append(built)\n        self.params[NODE_ID_DICT].update({key: key_list})\n\n    async def _build_dict_of_nodes_and_update_params(self, key, dicts, user_id=None):\n        self.params[key] = {}\n        for k, v in dicts.items():\n            if isinstance(v, list):\n                # loaderOutput\n                for k1, v1 in v:\n                    if self._is_node(v1):\n                        result = await v1.get_result(user_id)\n                        self.params[key][k] = (k1, result)\n                    else:\n                        self.params[key][k] = (k1, v1)\n            elif self._is_node(v[1]):\n                result = await v[1].get_result(user_id)\n                self.params[key][k] = (v[0], result)\n            else:\n                self.params[key][k] = (v[0], v[1])\n\n    def _handle_func(self, key, result):\n        \"\"\"\n        Handles 'func' key by checking if the result is a function and setting it as coroutine.\n        \"\"\"\n        if key == 'func':\n            if not isinstance(result, types.FunctionType):\n                func_ = ''\n                if hasattr(result, 'arun'):\n                    self.params['coroutine'] = result.arun\n                    func_ = result.arun\n                if hasattr(result, 'run'):\n                    result = result.run\n                    func_ = func_ or result.run  # type: ignore\n                elif hasattr(result, 'get_function'):\n                    func_ = result.get_function()  # type: ignore\n            elif inspect.iscoroutinefunction(result):\n                self.params['coroutine'] = result\n            else:\n                self.params['coroutine'] = sync_to_async(result)\n        return result\n\n    def _extend_params_list_with_result(self, key, result):\n        \"\"\"\n        Extends a list in the params dictionary with the given result if it exists.\n        \"\"\"\n        if isinstance(self.params[key], list):\n            self.params[key].extend(result)\n\n    async def _get_and_instantiate_class(self, user_id=None):\n        \"\"\"\n        Gets the class from a dictionary and instantiates it with the params.\n        \"\"\"\n        if self.base_type is None:\n            raise ValueError(f'Base type for node {self.vertex_type} not found')\n        try:\n            result = await loading.instantiate_class(node_type=self.vertex_type,\n                                                     base_type=self.base_type,\n                                                     params=self.params,\n                                                     user_id=user_id)\n            self._update_built_object_and_artifacts(result)\n        except Exception as exc:\n            logger.exception(\"Error building node\")\n            raise ValueError(f'Error building node {self.vertex_type}: {str(exc)}') from exc\n\n    def _update_built_object_and_artifacts(self, result):\n        \"\"\"\n        Updates the built object and its artifacts.\n        \"\"\"\n        if isinstance(result, tuple):\n            self._built_object, self.artifacts = result\n        else:\n            self._built_object = result\n\n    def _validate_built_object(self):\n        \"\"\"\n        Checks if the built object is None and raises a ValueError if so.\n        \"\"\"\n        if isinstance(self._built_object, UnbuiltObject):\n            raise ValueError(f'{self.vertex_type}: {self._built_object_repr()}')\n        elif self._built_object is None:\n            message = f'{self.vertex_type} returned None.'\n            if self.base_type == 'custom_components':\n                message += ' Make sure your build method returns a component.'\n\n            logger.warning(message)\n            raise ValueError(f'Node type {self.vertex_type} not found')\n\n    async def build(self, force: bool = False, user_id=None, *args, **kwargs) -> Any:\n        if not self._built or force:\n            await self._build(user_id, *args, **kwargs)\n\n        return self._built_object\n\n    def add_edge(self, edge: 'Edge') -> None:\n        if edge not in self.edges:\n            self.edges.append(edge)\n\n    def __repr__(self) -> str:\n        return f'Vertex(id={self.id}, data={self.data})'\n\n    def __eq__(self, __o: object) -> bool:\n        try:\n            return self.id == __o.id if isinstance(__o, Vertex) else False\n        except AttributeError:\n            return False\n\n    def __hash__(self) -> int:\n        return id(self)\n\n    def _built_object_repr(self):\n        # Add a message with an emoji, stars for sucess,\n        return f'Built successfully {self.id}' if self._built_object else f'Failed to build {self.id}'\n"
  },
  {
    "path": "src/backend/bisheng/graph/vertex/constants.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/graph/vertex/types.py",
    "content": "import ast\nfrom typing import Any, Dict, List, Optional, Union\n\nfrom bisheng.graph.utils import UnbuiltObject, flatten_list\nfrom bisheng.graph.vertex.base import Vertex\nfrom bisheng.interface.utils import extract_input_variables_from_prompt\n\n\nclass AgentVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params: Optional[Dict] = None):\n        super().__init__(data, graph=graph, base_type='agents', params=params)\n\n        self.tools: List[Union[ToolkitVertex, ToolVertex]] = []\n        self.chains: List[ChainVertex] = []\n\n    def __getstate__(self):\n        state = super().__getstate__()\n        state['tools'] = self.tools\n        state['chains'] = self.chains\n        return state\n\n    def __setstate__(self, state):\n        self.tools = state['tools']\n        self.chains = state['chains']\n        super().__setstate__(state)\n\n    def _set_tools_and_chains(self) -> None:\n        for edge in self.edges:\n            if not hasattr(edge, 'source_id'):\n                continue\n            source_node = self.graph.get_vertex(edge.source_id)\n            if isinstance(source_node, (ToolVertex, ToolkitVertex)):\n                self.tools.append(source_node)\n            elif isinstance(source_node, ChainVertex):\n                self.chains.append(source_node)\n\n    async def build(self, force: bool = False, user_id=None, *args, **kwargs) -> Any:\n        if not self._built or force:\n            self._set_tools_and_chains()\n            # First, build the tools\n            for tool_node in self.tools:\n                await tool_node.build(user_id=user_id)\n\n            # Next, build the chains and the rest\n            for chain_node in self.chains:\n                await chain_node.build(tools=self.tools, user_id=user_id)\n\n            await self._build(user_id=user_id)\n\n        return self._built_object\n\n\nclass ToolVertex(Vertex):\n\n    def __init__(\n        self,\n        data: Dict,\n        graph,\n        params: Optional[Dict] = None,\n    ):\n        super().__init__(data, graph=graph, base_type='tools', params=params)\n\n\nclass LLMVertex(Vertex):\n    built_node_type = None\n    class_built_object = None\n\n    def __init__(self, data: Dict, graph, params: Optional[Dict] = None):\n        super().__init__(data, graph=graph, base_type='llms', params=params)\n\n    async def build(self, force: bool = False, user_id=None, *args, **kwargs) -> Any:\n        # LLM is different because some models might take up too much memory\n        # or time to load. So we only load them when we need them.ß\n        if self.vertex_type == self.built_node_type:\n            return self.class_built_object\n        if not self._built or force:\n            await self._build(user_id=user_id)\n            self.built_node_type = self.vertex_type\n            self.class_built_object = self._built_object\n        # Avoid deepcopying the LLM\n        # that are loaded from a file\n        return self._built_object\n\n\nclass ToolkitVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params=None):\n        super().__init__(data, graph=graph, base_type='toolkits', params=params)\n\n\nclass FileToolVertex(ToolVertex):\n\n    def __init__(self, data: Dict, graph, params=None):\n        super().__init__(data, graph=graph, params=params)\n\n\nclass WrapperVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='wrappers')\n\n    async def build(self, force: bool = False, user_id=None, *args, **kwargs) -> Any:\n        if not self._built or force:\n            if 'headers' in self.params:\n                self.params['headers'] = ast.literal_eval(self.params['headers'])\n            await self._build(user_id=user_id)\n        return self._built_object\n\n\nclass DocumentLoaderVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params: Optional[Dict] = None):\n        super().__init__(data, graph=graph, base_type='documentloaders', params=params)\n\n    def _built_object_repr(self):\n        # This built_object is a list of documents. Maybe we should\n        # show how many documents are in the list?\n\n        if self._built_object and not isinstance(self._built_object, UnbuiltObject):\n            avg_length = sum(\n                len(doc.page_content) for doc in self._built_object\n                if hasattr(doc, 'page_content')) / len(self._built_object)\n            return f\"\"\"{self.vertex_type}({len(self._built_object)} documents)\n            \\nAvg. Document Length (characters): {int(avg_length)}\n            Documents: {self._built_object[:3]}...\"\"\"\n        return f'{self.vertex_type}()'\n\n\nclass EmbeddingVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params: Optional[Dict] = None):\n        super().__init__(data, graph=graph, base_type='embeddings', params=params)\n\n\nclass VectorStoreVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params=None):\n        super().__init__(data, graph=graph, base_type='vectorstores')\n\n        self.params = params or {}\n\n    # VectorStores may contain databse connections\n    # so we need to define the __reduce__ method and the __setstate__ method\n    # to avoid pickling errors\n\n    def remove_docs_and_texts_from_params(self):\n        # remove documents and texts from params\n        # so that we don't try to pickle a database connection\n        self.params.pop('documents', None)\n        self.params.pop('texts', None)\n\n    # def __getstate__(self):\n    #     # We want to save the params attribute\n    #     # and if \"documents\" or \"texts\" are in the params\n    #     # we want to remove them because they have already\n    #     # been processed.\n    #     params = self.params.copy()\n    #     params.pop(\"documents\", None)\n    #     params.pop(\"texts\", None)\n\n    #     return super().__getstate__()\n\n    def __setstate__(self, state):\n        super().__setstate__(state)\n        self.remove_docs_and_texts_from_params()\n\n\nclass MemoryVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='memory')\n\n\nclass RetrieverVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='retrievers')\n\n\nclass TextSplitterVertex(Vertex):\n\n    def __init__(self, data: Dict, graph, params: Optional[Dict] = None):\n        super().__init__(data, graph=graph, base_type='textsplitters', params=params)\n\n    def _built_object_repr(self):\n        # This built_object is a list of documents. Maybe we should\n        # show how many documents are in the list?\n\n        if self._built_object and not isinstance(self._built_object, UnbuiltObject):\n            avg_length = sum(len(doc.page_content)\n                             for doc in self._built_object) / len(self._built_object)\n            return f\"\"\"{self.vertex_type}({len(self._built_object)} documents)\n            \\nAvg. Document Length (characters): {int(avg_length)}\n            \\nDocuments: {self._built_object[:3]}...\"\"\"\n        return f'{self.vertex_type}()'\n\n\nclass ChainVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='chains')\n\n    async def build(\n        self,\n        force: bool = False,\n        user_id=None,\n        *args,\n        **kwargs,\n    ) -> Any:\n        if not self._built or force:\n            # Temporarily remove the code from the params\n            self.params.pop('code', None)\n            # Check if the chain requires a PromptVertex\n\n            # Temporarily remove \"code\" from the params\n            self.params.pop('code', None)\n\n            for key, value in self.params.items():\n                if isinstance(value, PromptVertex):\n                    # Build the PromptVertex, passing the tools if available\n                    tools = kwargs.get('tools', None)\n                    self.params[key] = await value.build(tools=tools, force=force)\n\n            await self._build(user_id=user_id)\n\n        return self._built_object\n\n\nclass PromptVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='prompts')\n\n    async def build(\n        self,\n        force: bool = False,\n        user_id=None,\n        tools: Optional[List[Union[ToolkitVertex, ToolVertex]]] = None,\n        *args,\n        **kwargs,\n    ) -> Any:\n        if not self._built or force:\n            if 'input_variables' not in self.params or self.params['input_variables'] is None:\n                self.params['input_variables'] = []\n            # Check if it is a ZeroShotPrompt and needs a tool\n            if 'ShotPrompt' in self.vertex_type:\n                tools = [await tool_node.build(user_id=user_id)\n                         for tool_node in tools] if tools is not None else []\n                # flatten the list of tools if it is a list of lists\n                # first check if it is a list\n                if tools and isinstance(tools, list) and isinstance(tools[0], list):\n                    tools = flatten_list(tools)\n                self.params['tools'] = tools\n                prompt_params = [\n                    key for key, value in self.params.items()\n                    if isinstance(value, str) and key != 'format_instructions'\n                ]\n            else:\n                prompt_params = ['template']\n\n            if 'prompt' not in self.params and 'messages' not in self.params:\n                for param in prompt_params:\n                    prompt_text = self.params[param]\n                    variables = extract_input_variables_from_prompt(prompt_text)\n                    self.params['input_variables'].extend(variables)\n                self.params['input_variables'] = list(set(self.params['input_variables']))\n            elif isinstance(self.params, dict):\n                self.params.pop('input_variables', None)\n\n            await self._build(user_id=user_id)\n        return self._built_object\n\n    def _built_object_repr(self):\n        if not self.artifacts or self._built_object is None or not hasattr(\n                self._built_object, 'format'):\n            return super()._built_object_repr()\n        # We'll build the prompt with the artifacts\n        # to show the user what the prompt looks like\n        # with the variables filled in\n        artifacts = self.artifacts.copy()\n        # Remove the handle_keys from the artifacts\n        # so the prompt format doesn't break\n        artifacts.pop('handle_keys', None)\n        try:\n            if (not hasattr(self._built_object, 'template')\n                    and hasattr(self._built_object, 'prompt')\n                    and not isinstance(self._built_object, UnbuiltObject)):\n                template = self._built_object.prompt.template\n            elif not isinstance(self._built_object, UnbuiltObject) and hasattr(\n                    self._built_object, 'template'):\n                template = self._built_object.template\n            for key, value in artifacts.items():\n                if value:\n                    replace_key = '{' + key + '}'\n                    template = template.replace(replace_key, value)\n            return template if isinstance(template, str) else f'{self.vertex_type}({template})'\n        except KeyError:\n            return str(self._built_object)\n\n\nclass OutputParserVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='output_parsers')\n\n\nclass CustomComponentVertex(Vertex):\n\n    def __init__(self, data: Dict, graph):\n        super().__init__(data, graph=graph, base_type='custom_components', is_task=False)\n\n    def _built_object_repr(self):\n        if self.task_id and self.is_task:\n            if task := self.get_task():\n                return str(task.info)\n            else:\n                return f'Task {self.task_id} is not running'\n        if self.artifacts and 'repr' in self.artifacts:\n            return self.artifacts['repr'] or super()._built_object_repr()\n"
  },
  {
    "path": "src/backend/bisheng/initdb_config.yaml",
    "content": "knowledges: # 知识库相关配置\n  etl4lm:\n    # 文档解析模型服务配置，包括OCR、版式分析、表格识别、公式识别等\n    url: \"\"  # http://192.168.106.12:8180/v1/etl4llm/predict\n    timeout: 600\n    # OCR SDK服务地址，默认为空则使用ETL4LM自带的轻量OCR模型（速度快，对于困难场景效果一般），若填写OCR SDK服务地址则使用高精度的OCR模型。\n    ocr_sdk_url: \"\"\n\nllm_request:\n  # 控制技能 LLM 组件模型访问的超时配置, 以下是默认值\n  request_timeout: 600\n  max_retries: 1\n\ndefault_operator:\n  # 使用免登录链接的方式需要配置，因为免登录链接相当于不知道用户信息，我们系统会自动把这些行为记录到某个用户头上，这里用来配置该用户的id\n  user: 1\n  enable_guest_access: true # 免登录链接是否可访问\n\n# 密码安全相关配置\npassword_conf:\n  # 密码超过X天必须进行修改, 登录提示重新修改密码。大于0策略才生效\n  password_valid_period: 200\n  # 登录错误时间窗口,单位分钟。在错误时间窗口内超过最大错误次数会封禁用户，password_valid_period和login_error_time_window都大于0才生效\n  login_error_time_window: 5\n  # 最大错误次数，超过后会封禁用户，大于0时生效\n  max_error_times: 0\n\nsystem_login_method:\n  # 是否允许多点登录\n  allow_multi_login: true\n  # sso系统登录配置（毕昇商业扩展套件功能，开源版无需配置）\n  gateway_login: false # 是否开启sso登录\n  admin_username: admin # 从 SSO/LDAP 注册的管理员用户名\n\n# 登陆页面是否需要输入验证码，可设置为True或False\nuse_captcha: True\n\n# 会话窗口底部提示文案\ndialog_tips:\n  \"内容由AI生成，仅供参考！\"\n\nenv:\n  # 聊天窗口快捷搜索功能使用的搜索引擎，默认为百度，可以配置为内部文档搜索\n  # dialog_quick_search: http://www.baidu.com/s?wd=\n  # 当用户的环境前面的网关，不能在同一个端口上既有http又有socket时，需要这个配置，将两个请求区分开，默认可以不用\n  # websocket_url: 192.168.106.120:3003\n  office_url: http://IP:8701 # onlyoffice 组件地址，需要浏览器能直接访问\n  # 是否展示前端界面上的github和帮助链接\n  show_github_and_help: true\n  # 是否开启注册\n  enable_registration: true\n  # 前端上传文件的最大限制，单位MB\n  uploaded_files_maximum_size: 50\n\nworkflow:\n  # 节点运行最大步数\n  max_steps: 50\n  # 等待用户输入的超时时间，单位分钟\n  timeout: 5\n\n# 灵思模块相关配置\nlinsight:\n  # 历史记录中工具消息的最大token，超过后需要总结下历史记录\n  tool_buffer: 100000\n  # 单个任务最大执行步骤数，防止死循环\n  max_steps: 200\n  # 灵思任务执行过程中模型调用重试次数\n  retry_num: 3\n  # 灵思任务执行过程中模型调用重试间隔时间（秒）\n  retry_sleep: 5\n  # 生成SOP时，prompt里放的用户上传文件信息的数量\n  max_file_num: 5\n  # 生成SOP时，prompt里放的组织知识库的最大数量\n  max_knowledge_num: 20\n  # 拆分二级任务时读取文件内容的字符数，超过后会截断\n  file_content_length: 5000\n  # 灵思模型默认温度\n  default_temperature: 0\n  # 模型json格式失败重试时的温度\n  retry_temperature: 1\n"
  },
  {
    "path": "src/backend/bisheng/interface/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/agents/__init__.py",
    "content": "from bisheng.interface.agents.base import AgentCreator\n\n__all__ = ['AgentCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/agents/base.py",
    "content": "from typing import ClassVar, Dict, List, Optional\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.agents.custom import CUSTOM_AGENTS\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.agents import AgentFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\nfrom bisheng_langchain import agents as bisheng_agents\nfrom langchain.agents import types\n\n\nclass AgentCreator(LangChainTypeCreator):\n    type_name: str = 'agents'\n\n    from_method_nodes: ClassVar[Dict] = {\n        'ZeroShotAgent': 'from_llm_and_tools',\n        'CSVAgent': 'from_toolkit_and_llm',\n        'SQLAgent': 'from_toolkit_and_llm',\n        'ChatglmFunctionsAgent': 'from_llm_and_tools',\n        'LLMFunctionsAgent': 'from_llm_and_tools',\n        'OpenAIToolsAgent': 'from_llm_and_tools',\n    }\n\n    @property\n    def frontend_node_class(self) -> type[AgentFrontendNode]:\n        return AgentFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = types.AGENT_TO_CLASS\n            # Add JsonAgent to the list of agents\n            for name, agent in CUSTOM_AGENTS.items():\n                # TODO: validate AgentType\n                self.type_dict[name] = agent  # type: ignore\n            bisheng = {\n                chain_name: import_class(f'bisheng_langchain.agents.{chain_name}')\n                for chain_name in bisheng_agents.__all__\n            }\n            self.type_dict.update(bisheng)\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            elif name in self.from_method_nodes:\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                    add_function=True,\n                    method_name=self.from_method_nodes[name],\n                )\n            return build_template_from_class(name, self.type_to_loader_dict, add_function=True)\n        except ValueError as exc:\n            raise ValueError('Agent not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Agent {name} not loaded: {exc}')\n            return None\n\n    # Now this is a generator\n    def to_list(self) -> List[str]:\n        names = []\n        for _, agent in self.type_to_loader_dict.items():\n            agent_name = (agent.function_name()\n                          if hasattr(agent, 'function_name') else agent.__name__)\n            if agent_name in settings.agents or settings.dev:\n                names.append(agent_name)\n        return names\n\n\nagent_creator = AgentCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/agents/custom.py",
    "content": "from typing import Any, List, Optional, Sequence, Tuple, Union\n\nfrom bisheng.interface.base import CustomAgentExecutor\nfrom langchain.agents import (AgentExecutor, AgentType, BaseSingleActionAgent, Tool, ZeroShotAgent,\n                              initialize_agent)\nfrom langchain.agents.agent_toolkits.vectorstore.prompt import PREFIX as VECTORSTORE_PREFIX\nfrom langchain.agents.agent_toolkits.vectorstore.prompt import \\\n    ROUTER_PREFIX as VECTORSTORE_ROUTER_PREFIX\nfrom langchain.agents.agent_toolkits.vectorstore.toolkit import (VectorStoreInfo,\n                                                                 VectorStoreRouterToolkit,\n                                                                 VectorStoreToolkit)\nfrom langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS\nfrom langchain.agents.openai_functions_agent.base import OpenAIFunctionsAgent\nfrom langchain.agents.openai_tools.base import create_openai_tools_agent\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.chains import LLMChain\nfrom langchain.memory.buffer import ConversationBufferMemory\nfrom langchain.memory.chat_memory import BaseChatMemory\nfrom langchain_community.agent_toolkits import SQLDatabaseToolkit\nfrom langchain_community.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX\nfrom langchain_community.agent_toolkits.json.toolkit import JsonToolkit\nfrom langchain_community.agent_toolkits.sql.prompt import SQL_PREFIX, SQL_SUFFIX\nfrom langchain_community.tools.sql_database.prompt import QUERY_CHECKER\nfrom langchain_community.utilities.sql_database import SQLDatabase\nfrom langchain_core.agents import AgentAction, AgentFinish\nfrom langchain_core.callbacks import BaseCallbackManager, Callbacks\nfrom langchain_core.memory import BaseMemory\nfrom langchain_core.messages import BaseMessage, SystemMessage\nfrom langchain_core.prompts.chat import (BaseMessagePromptTemplate, ChatPromptTemplate,\n                                         HumanMessagePromptTemplate, MessagesPlaceholder)\nfrom langchain_core.runnables import RunnableConfig\nfrom langchain_core.tools import BaseTool\nfrom langchain_experimental.agents.agent_toolkits.pandas.prompt import PREFIX as PANDAS_PREFIX\nfrom langchain_experimental.agents.agent_toolkits.pandas.prompt import \\\n    SUFFIX_WITH_DF as PANDAS_SUFFIX\nfrom langchain_experimental.tools.python.tool import PythonAstREPLTool\nfrom pydantic import Field\n\nhistory_prompt = \"\"\"Below is a transcript of your chats:\n{history}\n\"\"\"\n\n\nclass JsonAgent(CustomAgentExecutor):\n    \"\"\"Json agent\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'JsonAgent'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(cls, toolkit: JsonToolkit, llm: BaseLanguageModel):\n        tools = toolkit if isinstance(toolkit, list) else toolkit.get_tools()\n        tool_names = {tool.name for tool in tools}\n        prompt = ZeroShotAgent.create_prompt(\n            tools,\n            prefix=JSON_PREFIX,\n            suffix=JSON_SUFFIX,\n            format_instructions=FORMAT_INSTRUCTIONS,\n            input_variables=None,\n        )\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=prompt,\n        )\n        agent = ZeroShotAgent(\n            llm_chain=llm_chain,\n            allowed_tools=tool_names  # type: ignore\n        )\n        return cls.from_agent_and_tools(agent=agent, tools=tools, verbose=True)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass CSVAgent(CustomAgentExecutor):\n    \"\"\"CSV agent\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'CSVAgent'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(\n            cls,\n            path: str,\n            llm: BaseLanguageModel,\n            pandas_kwargs: Optional[dict] = None,\n            prefix: str = PANDAS_PREFIX,\n            suffix: str = PANDAS_SUFFIX,\n            format_instructions: str = FORMAT_INSTRUCTIONS,\n            input_variables: Optional[List[str]] = ['df_head', 'input', 'agent_scratchpad'],\n            **kwargs: Any):\n        import pandas as pd  # type: ignore\n\n        _kwargs = pandas_kwargs or {}\n        df = pd.read_csv(path, **_kwargs)\n\n        tools = [PythonAstREPLTool(locals={'df': df})]  # type: ignore\n        prompt = ZeroShotAgent.create_prompt(\n            tools,\n            prefix=prefix,\n            suffix=suffix,\n            format_instructions=format_instructions,\n            input_variables=input_variables,\n        )\n        partial_prompt = prompt.partial(df_head=str(df.head()))\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=partial_prompt,\n        )\n        tool_names = {tool.name for tool in tools}\n        agent = ZeroShotAgent(\n            llm_chain=llm_chain,\n            allowed_tools=tool_names,\n            **kwargs  # type: ignore\n        )\n\n        return cls.from_agent_and_tools(agent=agent, tools=tools, verbose=True)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass VectorStoreAgent(CustomAgentExecutor):\n    \"\"\"Vector store agent\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'VectorStoreAgent'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(cls, llm: BaseLanguageModel, vectorstoreinfo: VectorStoreInfo,\n                             **kwargs: Any):\n        \"\"\"Construct a vectorstore agent from an LLM and tools.\"\"\"\n\n        toolkit = VectorStoreToolkit(vectorstore_info=vectorstoreinfo, llm=llm)\n\n        tools = toolkit.get_tools()\n        prompt = ZeroShotAgent.create_prompt(tools, prefix=VECTORSTORE_PREFIX)\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=prompt,\n        )\n        tool_names = {tool.name for tool in tools}\n        agent = ZeroShotAgent(\n            llm_chain=llm_chain,\n            allowed_tools=tool_names,\n            **kwargs  # type: ignore\n        )\n        return AgentExecutor.from_agent_and_tools(agent=agent,\n                                                  tools=tools,\n                                                  verbose=True,\n                                                  handle_parsing_errors=True)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass SQLAgent(CustomAgentExecutor):\n    \"\"\"SQL agent\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'SQLAgent'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(cls,\n                             llm: BaseLanguageModel,\n                             database_uri: str,\n                             top_k: int = 10,\n                             prefix: str = SQL_PREFIX,\n                             suffix: str = SQL_SUFFIX,\n                             format_instructions: str = FORMAT_INSTRUCTIONS,\n                             input_variables: Optional[List[str]] = ['input', 'agent_scratchpad'],\n                             **kwargs: Any):\n        \"\"\"Construct an SQL agent from an LLM and tools.\"\"\"\n        db = SQLDatabase.from_uri(database_uri)\n        toolkit = SQLDatabaseToolkit(db=db, llm=llm)\n\n        # The right code should be this, but there is a problem with tools = toolkit.get_tools()\n        # related to `OPENAI_API_KEY`\n        # return create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)\n        from langchain.prompts import PromptTemplate\n        from langchain.tools.sql_database.tool import (\n            InfoSQLDatabaseTool,\n            ListSQLDatabaseTool,\n            QuerySQLCheckerTool,\n            QuerySQLDataBaseTool,\n        )\n\n        llmchain = LLMChain(\n            llm=llm,\n            prompt=PromptTemplate(template=QUERY_CHECKER, input_variables=['query', 'dialect']),\n        )\n\n        tools = [\n            QuerySQLDataBaseTool(db=db),  # type: ignore\n            InfoSQLDatabaseTool(db=db),  # type: ignore\n            ListSQLDatabaseTool(db=db),  # type: ignore\n            QuerySQLCheckerTool(db=db, llm_chain=llmchain, llm=llm),  # type: ignore\n        ]\n\n        prefix = prefix.format(dialect=toolkit.dialect, top_k=top_k)\n        prompt = ZeroShotAgent.create_prompt(\n            tools=tools,  # type: ignore\n            prefix=prefix,\n            suffix=suffix,\n            format_instructions=format_instructions,\n            input_variables=input_variables,\n        )\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=prompt,\n        )\n        tool_names = {tool.name for tool in tools}  # type: ignore\n        agent = ZeroShotAgent(\n            llm_chain=llm_chain,\n            allowed_tools=tool_names,\n            **kwargs  # type: ignore\n        )\n        return AgentExecutor.from_agent_and_tools(\n            agent=agent,\n            tools=tools,  # type: ignore\n            verbose=True,\n            max_iterations=15,\n            early_stopping_method='force',\n            handle_parsing_errors=True,\n        )\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass VectorStoreRouterAgent(CustomAgentExecutor):\n    \"\"\"Vector Store Router Agent\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'VectorStoreRouterAgent'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(cls, llm: BaseLanguageModel,\n                             vectorstoreroutertoolkit: VectorStoreRouterToolkit, **kwargs: Any):\n        \"\"\"Construct a vector store router agent from an LLM and tools.\"\"\"\n\n        tools = (vectorstoreroutertoolkit if isinstance(vectorstoreroutertoolkit, list) else\n                 vectorstoreroutertoolkit.get_tools())\n        prompt = ZeroShotAgent.create_prompt(tools, prefix=VECTORSTORE_ROUTER_PREFIX)\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=prompt,\n        )\n        tool_names = {tool.name for tool in tools}\n        agent = ZeroShotAgent(\n            llm_chain=llm_chain,\n            allowed_tools=tool_names,\n            **kwargs  # type: ignore\n        )\n        return AgentExecutor.from_agent_and_tools(agent=agent,\n                                                  tools=tools,\n                                                  verbose=True,\n                                                  handle_parsing_errors=True)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass OpenAIToolsAgent(OpenAIFunctionsAgent):\n    \"\"\"OpenAI Tools Agent\"\"\"\n\n    memory: BaseMemory = Field(default_factory=ConversationBufferMemory)\n    agent: Any\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Get input keys. Input refers to user input here.\"\"\"\n        return ['input', 'history']\n\n    def plan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        with_functions: bool = True,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        input_dict = {'intermediate_steps': intermediate_steps}\n        selected_inputs = {\n            k: kwargs[k]\n            for k in self.prompt.input_variables if k != 'agent_scratchpad'\n        }\n        input_dict.update(selected_inputs)\n        return self.agent.invoke(input_dict, config=RunnableConfig(callbacks=callbacks))\n\n    async def aplan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        input_dict = {'intermediate_steps': intermediate_steps}\n        selected_inputs = {\n            k: kwargs[k]\n            for k in self.prompt.input_variables if k != 'agent_scratchpad'\n        }\n        input_dict.update(selected_inputs)\n        return await self.agent.ainvoke(input_dict, config=RunnableConfig(callbacks=callbacks))\n\n    @classmethod\n    def create_prompt(\n        cls,\n        system_message: Optional[SystemMessage] = SystemMessage(\n            content='You are a helpful AI assistant.'),\n        extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None,\n    ) -> ChatPromptTemplate:\n        \"\"\"Create prompt for this agent.\n\n        Args:\n            system_message: Message to use as the system message that will be the\n                first in the prompt.\n            extra_prompt_messages: Prompt messages that will be placed between the\n                system message and the new human input.\n\n        Returns:\n            A prompt template to pass into this agent.\n        \"\"\"\n        _prompts = extra_prompt_messages or []\n        messages: List[Union[BaseMessagePromptTemplate, BaseMessage]]\n        if system_message:\n            messages = [system_message]\n        else:\n            messages = []\n\n        messages.extend([\n            *_prompts,\n            MessagesPlaceholder(variable_name='agent_scratchpad'),\n        ])\n        return ChatPromptTemplate(messages=messages)  # type: ignore[arg-type, call-arg]\n\n    @classmethod\n    def from_llm_and_tools(\n        cls,\n        llm: BaseLanguageModel,\n        tools: Sequence[BaseTool],\n        callback_manager: Optional[BaseCallbackManager] = None,\n        extra_prompt: str = history_prompt,\n        human_prompt: str = '{input}',\n        system_message: str = 'You are a helpful AI assistant.',\n        **kwargs: Any,\n    ) -> BaseSingleActionAgent:\n        \"\"\"Construct an agent from an LLM and tools.\n\n        Args:\n            llm: The LLM to use as the agent.\n            tools: The tools to use.\n            callback_manager: The callback manager to use. Defaults to None.\n            extra_prompt_messages: Extra prompt messages to use. Defaults to None.\n            system_message: The system message to use.\n                Defaults to a default system message.\n            kwargs: Additional parameters to pass to the agent.\n        \"\"\"\n        system_message_prompt = SystemMessage(content=system_message)\n        extra_prompt_messages = [HumanMessagePromptTemplate.from_template(extra_prompt)]\n        extra_prompt_messages.extend([HumanMessagePromptTemplate.from_template(human_prompt)])\n        prompt = cls.create_prompt(system_message=system_message_prompt,\n                                   extra_prompt_messages=extra_prompt_messages)\n        agent = create_openai_tools_agent(llm, tools, prompt)\n        return cls(  # type: ignore[call-arg]\n            llm=llm,\n            agent=agent,\n            prompt=prompt,\n            tools=tools,\n            callback_manager=callback_manager,\n            **kwargs,\n        )\n\n    @classmethod\n    def initialize(\n        cls,\n        llm: BaseLanguageModel,\n        tools: Sequence[BaseTool],\n        callback_manager: Optional[BaseCallbackManager] = None,\n        extra_prompt: str = history_prompt,\n        human_prompt: str = '{input}',\n        system_message: str = 'You are a helpful AI assistant.',\n        memory: Optional[BaseChatMemory] = None,\n        **kwargs: Any,\n    ):\n        agent = cls.from_llm_and_tools(\n            llm,\n            tools,\n            callback_manager,\n            extra_prompt,\n            human_prompt,\n            system_message,\n            memory=memory,\n            **kwargs,\n        )\n        return AgentExecutor.from_agent_and_tools(\n            agent=agent,\n            tools=tools,\n            verbose=True,\n            memory=memory,\n            return_intermediate_steps=True,\n            handle_parsing_errors=True,\n        )\n\n\nclass InitializeAgent(CustomAgentExecutor):\n    \"\"\"Implementation of AgentInitializer function\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'AgentInitializer'\n\n    @classmethod\n    def initialize(\n        cls,\n        llm: BaseLanguageModel,\n        tools: List[Tool],\n        agent: str,\n        memory: Optional[BaseChatMemory] = None,\n    ):\n        # Find which value in the AgentType enum corresponds to the string\n        # passed in as agent\n        if agent == 'openai-tools':\n            agent = OpenAIToolsAgent.from_llm_and_tools(\n                llm,\n                tools,\n                memory=memory,\n                return_intermediate_steps=True,\n                handle_parsing_errors=True,\n            )\n            return AgentExecutor.from_agent_and_tools(\n                agent=agent,\n                tools=tools,\n                memory=memory,\n                return_intermediate_steps=True,\n                handle_parsing_errors=True,\n            )\n        agent = AgentType(agent)\n        return initialize_agent(\n            tools=tools,\n            llm=llm,\n            # LangChain now uses Enum for agent, but we still support string\n            agent=agent,  # type: ignore\n            memory=memory,\n            return_intermediate_steps=True,\n            handle_parsing_errors=True,\n        )\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\n# custom agents must initialize with initialize method\nCUSTOM_AGENTS = {\n    'JsonAgent': JsonAgent,\n    'CSVAgent': CSVAgent,\n    'AgentInitializer': InitializeAgent,\n    'VectorStoreAgent': VectorStoreAgent,\n    'VectorStoreRouterAgent': VectorStoreRouterAgent,\n    'SQLAgent': SQLAgent,\n    'OpenAIToolsAgent': OpenAIToolsAgent,\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/agents/prebuilt.py",
    "content": "from langchain.agents import AgentExecutor, ZeroShotAgent\nfrom langchain.agents.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX\nfrom langchain.agents.agent_toolkits.json.toolkit import JsonToolkit\nfrom langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.chains import LLMChain\n\n\nclass MalfoyAgent(AgentExecutor):\n    \"\"\"Json agent\"\"\"\n\n    prefix = 'Malfoy: '\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        return cls.from_toolkit_and_llm(*args, **kwargs)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    @classmethod\n    def from_toolkit_and_llm(cls, toolkit: JsonToolkit, llm: BaseLanguageModel):\n        tools = toolkit.get_tools()\n        tool_names = {tool.name for tool in tools}\n        prompt = ZeroShotAgent.create_prompt(\n            tools,\n            prefix=JSON_PREFIX,\n            suffix=JSON_SUFFIX,\n            format_instructions=FORMAT_INSTRUCTIONS,\n            input_variables=None,\n        )\n        llm_chain = LLMChain(\n            llm=llm,\n            prompt=prompt,\n        )\n        agent = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names)  # type: ignore\n        return cls.from_agent_and_tools(agent=agent, tools=tools, verbose=True)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nPREBUILT_AGENTS = {\n    'MalfoyAgent': MalfoyAgent,\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/autogenRole/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/autogenRole/base.py",
    "content": "from typing import Any, Dict, List, Optional\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.template.frontend_node.autogenrole import AutogenRoleFrontNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\nfrom bisheng_langchain import autogen_role\n\n\nclass AutogenRole(LangChainTypeCreator):\n    type_name: str = 'autogen_roles'\n\n    @property\n    def frontend_node_class(self) -> type[AutogenRoleFrontNode]:\n        return AutogenRoleFrontNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict: dict[str, Any] = {\n                role_name: import_class(f'bisheng_langchain.autogen_role.{role_name}')\n                for role_name in autogen_role.__all__\n            }\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            return build_template_from_class(\n                name, self.type_to_loader_dict, add_function=True\n            )\n        except ValueError as exc:\n            raise ValueError('Agent not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Agent {name} not loaded: {exc}')\n            return None\n\n    # Now this is a generator\n    def to_list(self) -> List[str]:\n        names = []\n        for _, role in self.type_to_loader_dict.items():\n            role_name = (role.function_name()\n                         if hasattr(role, 'function_name') else role.__name__)\n            names.append(role_name)\n        return names\n\n\nautogenrole_creator = AutogenRole()\n"
  },
  {
    "path": "src/backend/bisheng/interface/base.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import Any, Dict, List, Optional, Type, Union\n\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\nfrom loguru import logger\nfrom langchain.agents import AgentExecutor\nfrom langchain.chains.base import Chain\nfrom pydantic import BaseModel\n\n# Assuming necessary imports for Field, Template, and FrontendNode classes\nskip_llm = {'CombineDocsChain'}\n\n\nclass LangChainTypeCreator(BaseModel, ABC):\n    type_name: str\n    type_dict: Optional[Dict] = None\n    name_docs_dict: Optional[Dict[str, str]] = None\n\n    @property\n    def frontend_node_class(self) -> Type[FrontendNode]:\n        \"\"\"The class type of the FrontendNode created in frontend_node.\"\"\"\n        return FrontendNode\n\n    @property\n    def docs_map(self) -> Dict[str, str]:\n        \"\"\"A dict with the name of the component as key and the documentation link as value.\"\"\"\n        if self.name_docs_dict is None:\n            try:\n                type_settings = getattr(settings, self.type_name)\n                self.name_docs_dict = {\n                    name: value_dict['documentation']\n                    for name, value_dict in type_settings.items()\n                }\n            except AttributeError as exc:\n                logger.error(exc)\n\n                self.name_docs_dict = {}\n        return self.name_docs_dict\n\n    @property\n    @abstractmethod\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            raise NotImplementedError\n        return self.type_dict\n\n    @abstractmethod\n    def get_signature(\n        self, name: str\n    ) -> Union[Optional[Dict[Any, Any]], FrontendNode]:\n        pass\n\n    @abstractmethod\n    def to_list(self) -> List[str]:\n        pass\n\n    def to_dict(self) -> Dict:\n        result: Dict = {self.type_name: {}}\n\n        for name in self.to_list():\n            # frontend_node.to_dict() returns a dict with the following structure:\n            # {name: {template: {fields}, description: str}}\n            # so we should update the result dict\n            node = self.frontend_node(name)\n            if node is not None:\n                node = node.to_dict()  # type: ignore\n                result[self.type_name].update(node)\n\n        return result\n\n    def frontend_node(self, name) -> Union[FrontendNode, None]:\n        signature = self.get_signature(name)\n        if signature is None:\n            logger.error(f'Node {name} not loaded')\n            return signature\n        if not isinstance(signature, FrontendNode):\n            fields = [\n                TemplateField(\n                    name=key,\n                    field_type=value['type'],\n                    required=value.get('required', False),\n                    placeholder=value.get('placeholder', ''),\n                    is_list=value.get('list', False),\n                    show=value.get('show', True),\n                    multiline=value.get('multiline', False),\n                    value=value.get('value', None),\n                    suffixes=value.get('suffixes', []),\n                    file_types=value.get('fileTypes', []),\n                    file_path=value.get('file_path', None),\n                ) for key, value in signature['template'].items()\n                if key != '_type'\n            ]\n            template = Template(type_name=name, fields=fields)\n            signature = self.frontend_node_class(\n                template=template,\n                description=signature.get('description', ''),\n                base_classes=signature['base_classes'],\n                name=name,\n            )\n\n        # #Determine if it containsinputKeys\n        if signature.name not in skip_llm:\n            if name in self.type_to_loader_dict:\n                class_tmp = self.type_to_loader_dict[name]\n            else:\n                for _, cls_ in self.type_to_loader_dict.items():\n                    if hasattr(cls_, 'function_name') and cls_.function_name() == name:\n                        class_tmp = cls_\n                    elif cls_.__name__ == name:\n                        class_tmp = cls_\n\n            if class_tmp and hasattr(class_tmp, 'input_keys'):\n                signature.template.add_field(\n                    TemplateField(\n                        field_type='input',\n                        required=False,\n                        show=True,\n                        name='input_node',\n                        display_name='Preset Question',\n                    )\n                )\n        signature.add_extra_fields()\n        signature.add_extra_base_classes()\n        signature.set_documentation(self.docs_map.get(name, ''))\n        return signature\n\n\nclass CustomChain(Chain, ABC):\n    \"\"\"Custom chain\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'CustomChain'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        pass\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass CustomAgentExecutor(AgentExecutor, ABC):\n    \"\"\"Custom chain\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'CustomChain'\n\n    @classmethod\n    def initialize(cls, *args, **kwargs):\n        pass\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/interface/chains/__init__.py",
    "content": "from bisheng.interface.chains.base import ChainCreator\n\n__all__ = ['ChainCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/chains/base.py",
    "content": "from typing import Any, ClassVar, Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.chains import ChainFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\nfrom bisheng_langchain import chains as bisheng_chains\nfrom bisheng_langchain import sql as bisheng_sql\nfrom bisheng_langchain.rag.bisheng_rag_chain import BishengRetrievalQA\nfrom langchain import chains\nfrom langchain_experimental import sql\n\n# Assuming necessary imports for Field, Template, and FrontendNode classes\n\n\nclass ChainCreator(LangChainTypeCreator):\n    type_name: str = 'chains'\n\n    @property\n    def frontend_node_class(self) -> Type[ChainFrontendNode]:\n        return ChainFrontendNode\n\n    # We need to find a better solution for this\n    from_method_nodes: ClassVar[Dict] = {\n        'APIChain': 'from_llm_and_api_docs',\n        'ConversationalRetrievalChain': 'from_llm',\n        'LLMCheckerChain': 'from_llm',\n        'SQLDatabaseChain': 'from_llm',\n        'LLMRouterChain': 'from_llm',\n        'BishengRetrievalQA': 'from_llm',\n        'QAGenerationChain': 'from_llm',\n        'QAGenerationChainV2': 'from_llm',\n    }\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            # langchain\n            self.type_dict: dict[str, Any] = {\n                chain_name: import_class(f'langchain.chains.{chain_name}')\n                for chain_name in chains.__all__\n            }\n            # bisheng-langchain\n            bisheng = {\n                chain_name: import_class(f'bisheng_langchain.chains.{chain_name}')\n                for chain_name in bisheng_chains.__all__\n            }\n            # If configured incustom_chains, it will not start frommethodHow to initialize, resulting in an error\n            self.type_dict['BishengRetrievalQA'] = BishengRetrievalQA\n            self.type_dict.update(bisheng)\n\n            # sql community\n            community = {\n                chain_name: import_class(f'langchain_experimental.sql.{chain_name}')\n                for chain_name in sql.__all__\n            }\n            self.type_dict.update(community)\n\n            # sql community\n            bisheng_sql_add = {\n                chain_name: import_class(f'bisheng_langchain.sql.{chain_name}')\n                for chain_name in bisheng_sql.__all__\n            }\n            self.type_dict.update(bisheng_sql_add)\n\n            from bisheng.interface.chains.custom import CUSTOM_CHAINS\n\n            self.type_dict.update(CUSTOM_CHAINS)\n            # Filter according to settings.chains\n            self.type_dict = {\n                name: chain\n                for name, chain in self.type_dict.items()\n                if name in settings.chains or settings.dev\n            }\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            elif name in self.from_method_nodes.keys():\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                    method_name=self.from_method_nodes[name],\n                    add_function=True,\n                )\n            return build_template_from_class(name, self.type_to_loader_dict, add_function=True)\n        except ValueError as exc:\n            raise ValueError(f'Chain {name} not found: {exc}') from exc\n        except AttributeError as exc:\n            logger.error(f'Chain {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        names = []\n        for _, chain in self.type_to_loader_dict.items():\n            chain_name = (chain.function_name()\n                          if hasattr(chain, 'function_name') else chain.__name__)\n            names.append(chain_name)\n        return names\n\n\nchain_creator = ChainCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/chains/custom.py",
    "content": "from typing import Any, Dict, List, Optional, Type, Union\n\nfrom bisheng.interface.base import CustomChain\nfrom bisheng.interface.utils import extract_input_variables_from_prompt\nfrom bisheng_langchain.chains.question_answering import load_qa_chain\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.callbacks.manager import CallbackManagerForChainRun\nfrom langchain.chains import ConversationChain, LLMChain\nfrom langchain.chains.summarize import load_summarize_chain\nfrom langchain.memory import ConversationBufferMemory\nfrom langchain.prompts import PromptTemplate\nfrom langchain.schema import BaseMemory\nfrom langchain.schema.prompt_template import BasePromptTemplate\nfrom langchain_community.utilities.dalle_image_generator import DallEAPIWrapper\nfrom pydantic import Field, model_validator\n\nDEFAULT_SUFFIX = \"\"\"\"\nCurrent conversation:\n{history}\nHuman: {input}\n{ai_prefix}\"\"\"\n\n\nclass BaseCustomConversationChain(ConversationChain):\n    \"\"\"BaseCustomChain is a chain you can use to have a conversation with a custom character.\"\"\"\n\n    template: Optional[str]\n\n    ai_prefix_value: Optional[str]\n    \"\"\"Field to use as the ai_prefix. It needs to be set and has to be in the template\"\"\"\n\n    @model_validator(mode='before')\n    @classmethod\n    def build_template(cls, values):\n        format_dict = {}\n        input_variables = extract_input_variables_from_prompt(values['template'])\n\n        if values.get('ai_prefix_value', None) is None:\n            values['ai_prefix_value'] = values['memory'].ai_prefix\n\n        for key in input_variables:\n            new_value = values.get(key, f'{{{key}}}')\n            format_dict[key] = new_value\n            if key == values.get('ai_prefix_value', None):\n                values['memory'].ai_prefix = new_value\n\n        values['template'] = values['template'].format(**format_dict)\n\n        values['template'] = values['template']\n        values['input_variables'] = extract_input_variables_from_prompt(values['template'])\n        values['prompt'].template = values['template']\n        values['prompt'].input_variables = values['input_variables']\n        return values\n\n\nclass SeriesCharacterChain(BaseCustomConversationChain):\n    \"\"\"SeriesCharacterChain is a chain you can use to have a conversation with a character from a series.\"\"\"\n\n    character: str\n    series: str\n    template: Optional[str] = \"\"\"I want you to act like {character} from {series}.\nI want you to respond and answer like {character}. do not write any explanations. only answer like {character}.\nYou must know all of the knowledge of {character}.\nCurrent conversation:\n{history}\nHuman: {input}\n{character}:\"\"\"\n    memory: BaseMemory = Field(default_factory=ConversationBufferMemory)\n    ai_prefix_value: Optional[str] = 'character'\n    \"\"\"Default memory store.\"\"\"\n\n\nclass MidJourneyPromptChain(BaseCustomConversationChain):\n    \"\"\"MidJourneyPromptChain is a chain you can use to generate new MidJourney prompts.\"\"\"\n\n    template: Optional[\n        str\n    ] = \"\"\"I want you to act as a prompt generator for Midjourney's artificial intelligence program.\n    Your job is to provide detailed and creative descriptions that will inspire unique and interesting images from the AI.\n    Keep in mind that the AI is capable of understanding a wide range of language and can interpret abstract concepts, so feel free to be as imaginative and descriptive as possible.\n    For example, you could describe a scene from a futuristic city, or a surreal landscape filled with strange creatures.\n    The more detailed and imaginative your description, the more interesting the resulting image will be. Here is your first prompt:\n    \"A field of wildflowers stretches out as far as the eye can see, each one a different color and shape. In the distance, a massive tree towers over the landscape, its branches reaching up to the sky like tentacles.\\\"\n\n    Current conversation:\n    {history}\n    Human: {input}\n    AI:\"\"\"  # noqa: E501\n\n\nclass TimeTravelGuideChain(BaseCustomConversationChain):\n    template: Optional[\n        str\n    ] = \"\"\"I want you to act as my time travel guide. You are helpful and creative. I will provide you with the historical period or future time I want to visit and you will suggest the best events, sights, or people to experience. Provide the suggestions and any necessary information.\n    Current conversation:\n    {history}\n    Human: {input}\n    AI:\"\"\"  # noqa: E501\n\n\nclass CombineDocsChain(CustomChain):\n    \"\"\"Implementation of load_qa_chain function\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'load_qa_chain'\n\n    @classmethod\n    def initialize(cls,\n                   llm: BaseLanguageModel,\n                   chain_type: str,\n                   prompt: BasePromptTemplate = None,\n                   document_prompt: BasePromptTemplate = None,\n                   token_max: str = -1):\n        if chain_type == 'stuff':\n            if document_prompt:\n                return load_qa_chain(llm=llm,\n                                     chain_type=chain_type,\n                                     prompt=prompt,\n                                     token_max=token_max,\n                                     document_prompt=document_prompt)\n            else:\n                return load_qa_chain(llm=llm,\n                                     chain_type=chain_type,\n                                     prompt=prompt,\n                                     token_max=token_max)\n        else:\n            return load_qa_chain(llm=llm, chain_type=chain_type)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nclass SummarizeDocsChain(CustomChain):\n    \"\"\"Implementation of load_sumarize_chain function\"\"\"\n\n    @staticmethod\n    def function_name():\n        return 'load_summarize_chain'\n\n    @classmethod\n    def initialize(cls,\n                   llm: BaseLanguageModel,\n                   chain_type: str,\n                   prompt: str = None,\n                   token_max: str = -1):\n        if chain_type == 'stuff':\n            return load_summarize_chain(llm=llm,\n                                        chain_type=chain_type,\n                                        prompt=prompt,\n                                        token_max=token_max)\n        else:\n            return load_summarize_chain(llm=llm, chain_type=chain_type)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n\nprompt_default = PromptTemplate(\n    input_variables=['image_desc'],\n    template=\"\"\"Generate a detailed prompt to generate an image based on the following description:\n    {image_desc}\"\"\")\n\n\nclass DalleGeneratorChain(CustomChain):\n    \"\"\"Implementation of dall-e generate images\"\"\"\n    dalle: DallEAPIWrapper\n    llm: Optional[BaseLanguageModel]\n    prompt: Optional[PromptTemplate]\n    input_key: str = 'image_desc'\n    output_key: str = 'response'  #: :meta private:\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Use this since so some prompt vars come from history.\"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        return [self.output_key]\n\n    @staticmethod\n    def function_name():\n        return 'DalleGeneratorChain'\n\n    @classmethod\n    def initialize(cls, dalle: DallEAPIWrapper, **kwargs):\n        return DalleGeneratorChain(dalle=dalle, **kwargs)\n\n    def run(self, *args, **kwargs):\n        return super().run(*args, **kwargs)\n\n    def _call(self,\n              inputs: Dict[str, Any],\n              run_manager: Optional[CallbackManagerForChainRun] = None) -> Dict[str, Any]:\n        if self.llm:\n            prompt = self.prompt or prompt_default\n            llm_chain = LLMChain(llm=self.llm, prompt=prompt)\n            pic_url = self.dalle.run(llm_chain.run(inputs)).split('\\n')\n        else:\n            pic_url = self.dalle.run(inputs.get(self.input_key)).split('\\n')\n        if len(pic_url) > 0:\n            pic_style = []\n            for url in pic_url:\n                pic_style.append(f'![{url}]({url})')\n            pic_url = ' \\n'.join(pic_style)\n            return {self.output_key: pic_url, 'type': 'image'}\n        else:\n            return {self.output_key: f'![{pic_url}]({pic_url})', 'type': 'image'}\n\n\nCUSTOM_CHAINS: Dict[str, Type[Union[ConversationChain, CustomChain]]] = {\n    'CombineDocsChain': CombineDocsChain,\n    'SummarizeDocsChain': SummarizeDocsChain,\n    'SeriesCharacterChain': SeriesCharacterChain,\n    'MidJourneyPromptChain': MidJourneyPromptChain,\n    'TimeTravelGuideChain': TimeTravelGuideChain,\n    'DalleGeneratorChain': DalleGeneratorChain,\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/__init__.py",
    "content": "from bisheng.interface.custom.base import CustomComponentCreator\nfrom bisheng.interface.custom.custom_component import CustomComponent\n\n__all__ = ['CustomComponentCreator', 'CustomComponent']\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/base.py",
    "content": "from typing import Any, Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\n# from langflow.interface.custom.custom import CustomComponent\nfrom bisheng.interface.custom.custom_component import CustomComponent\nfrom bisheng.template.frontend_node.custom_components import CustomComponentFrontendNode\nfrom loguru import logger\n\n# Assuming necessary imports for Field, Template, and FrontendNode classes\n\n\nclass CustomComponentCreator(LangChainTypeCreator):\n    type_name: str = 'custom_components'\n\n    @property\n    def frontend_node_class(self) -> Type[CustomComponentFrontendNode]:\n        return CustomComponentFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict: dict[str, Any] = {\n                'CustomComponent': CustomComponent,\n            }\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        from bisheng.custom.customs import get_custom_nodes\n\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n        except ValueError as exc:\n            raise ValueError(f'CustomComponent {name} not found: {exc}') from exc\n        except AttributeError as exc:\n            logger.error(f'CustomComponent {name} not loaded: {exc}')\n            return None\n        return None\n\n    def to_list(self) -> List[str]:\n        return list(self.type_to_loader_dict.keys())\n\n\ncustom_component_creator = CustomComponentCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/code_parser/__init__.py",
    "content": "from .code_parser import CodeParser\n\n__all__ = ['CodeParser']\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/code_parser/code_parser.py",
    "content": "import ast\nimport inspect\nimport operator\nimport traceback\nfrom typing import Any, Dict, List, Type, Union\n\nfrom bisheng.interface.custom.schema import CallableCodeDetails, ClassCodeDetails\nfrom cachetools import TTLCache, cachedmethod, keys\nfrom fastapi import HTTPException\n\n\nclass CodeSyntaxError(HTTPException):\n    pass\n\n\ndef get_data_type():\n    from bisheng.field_typing import Data\n\n    return Data\n\n\ndef imports_key(*args, **kwargs):\n    imports = kwargs.pop('imports')\n    key = keys.methodkey(*args, **kwargs)\n    key += tuple(imports)\n    return key\n\n\nclass CodeParser:\n    \"\"\"\n    A parser for Python source code, extracting code details.\n    \"\"\"\n\n    def __init__(self, code: Union[str, Type]) -> None:\n        \"\"\"\n        Initializes the parser with the provided code.\n        \"\"\"\n        self.cache: TTLCache = TTLCache(maxsize=1024, ttl=60)\n        if isinstance(code, type):\n            if not inspect.isclass(code):\n                raise ValueError('The provided code must be a class.')\n            # If the code is a class, get its source code\n            code = inspect.getsource(code)\n        self.code = code\n        self.data: Dict[str, Any] = {\n            'imports': [],\n            'functions': [],\n            'classes': [],\n            'global_vars': [],\n        }\n        self.handlers = {\n            ast.Import: self.parse_imports,\n            ast.ImportFrom: self.parse_imports,\n            ast.FunctionDef: self.parse_functions,\n            ast.ClassDef: self.parse_classes,\n            ast.Assign: self.parse_global_vars,\n        }\n\n    def get_tree(self):\n        \"\"\"\n        Parses the provided code to validate its syntax.\n        It tries to parse the code into an abstract syntax tree (AST).\n        \"\"\"\n        try:\n            tree = ast.parse(self.code)\n        except SyntaxError as err:\n            raise CodeSyntaxError(\n                status_code=400,\n                detail={'error': err.msg, 'traceback': traceback.format_exc()},\n            ) from err\n\n        return tree\n\n    def parse_node(self, node: Union[ast.stmt, ast.AST]) -> None:\n        \"\"\"\n        Parses an AST node and updates the data\n        dictionary with the relevant information.\n        \"\"\"\n        if handler := self.handlers.get(type(node)):  # type: ignore\n            handler(node)  # type: ignore\n\n    def parse_imports(self, node: Union[ast.Import, ast.ImportFrom]) -> None:\n        \"\"\"\n        Extracts \"imports\" from the code, including aliases.\n        \"\"\"\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                if alias.asname:\n                    self.data['imports'].append(f'{alias.name} as {alias.asname}')\n                else:\n                    self.data['imports'].append(alias.name)\n        elif isinstance(node, ast.ImportFrom):\n            for alias in node.names:\n                if alias.asname:\n                    self.data['imports'].append((node.module, f'{alias.name} as {alias.asname}'))\n                else:\n                    self.data['imports'].append((node.module, alias.name))\n\n    def parse_functions(self, node: ast.FunctionDef) -> None:\n        \"\"\"\n        Extracts \"functions\" from the code.\n        \"\"\"\n        self.data['functions'].append(self.parse_callable_details(node))\n\n    def parse_arg(self, arg, default):\n        \"\"\"\n        Parses an argument and its default value.\n        \"\"\"\n        arg_dict = {'name': arg.arg, 'default': default}\n        if arg.annotation:\n            arg_dict['type'] = ast.unparse(arg.annotation)\n        return arg_dict\n\n    @cachedmethod(operator.attrgetter('cache'))\n    def construct_eval_env(self, return_type_str: str, imports) -> dict:\n        \"\"\"\n        Constructs an evaluation environment with the necessary imports for the return type,\n        taking into account module aliases.\n        \"\"\"\n        eval_env: dict = {}\n        for import_entry in imports:\n            if isinstance(import_entry, tuple):  # from module import name\n                module, name = import_entry\n                if name in return_type_str:\n                    exec(f'import {module}', eval_env)\n                    exec(f'from {module} import {name}', eval_env)\n            else:  # import module\n                module = import_entry\n                alias = None\n                if ' as ' in module:\n                    module, alias = module.split(' as ')\n                if module in return_type_str or (alias and alias in return_type_str):\n                    exec(f'import {module} as {alias if alias else module}', eval_env)\n        return eval_env\n\n    @cachedmethod(cache=operator.attrgetter('cache'))\n    def parse_callable_details(self, node: ast.FunctionDef) -> Dict[str, Any]:\n        \"\"\"\n        Extracts details from a single function or method node.\n        \"\"\"\n        return_type = None\n        if node.returns:\n            return_type_str = ast.unparse(node.returns)\n            eval_env = self.construct_eval_env(return_type_str, tuple(self.data['imports']))\n\n            try:\n                return_type = eval(return_type_str, eval_env)\n            except NameError:\n                # Handle cases where the type is not found in the constructed environment\n                pass\n\n        func = CallableCodeDetails(\n            name=node.name,\n            doc=ast.get_docstring(node),\n            args=self.parse_function_args(node),\n            body=self.parse_function_body(node),\n            return_type=return_type or get_data_type(),\n            has_return=self.parse_return_statement(node),\n        )\n\n        return func.model_dump()\n\n    def parse_function_args(self, node: ast.FunctionDef) -> List[Dict[str, Any]]:\n        \"\"\"\n        Parses the arguments of a function or method node.\n        \"\"\"\n        args = []\n\n        args += self.parse_positional_args(node)\n        args += self.parse_varargs(node)\n        args += self.parse_keyword_args(node)\n        # Commented out because we don't want kwargs\n        # showing up as fields in the frontend\n        # args += self.parse_kwargs(node)\n\n        return args\n\n    def parse_positional_args(self, node: ast.FunctionDef) -> List[Dict[str, Any]]:\n        \"\"\"\n        Parses the positional arguments of a function or method node.\n        \"\"\"\n        num_args = len(node.args.args)\n        num_defaults = len(node.args.defaults)\n        num_missing_defaults = num_args - num_defaults\n        missing_defaults = [None] * num_missing_defaults\n        default_values = [ast.unparse(default).strip(\"'\") if default else None for default in node.args.defaults]\n        # Now check all default values to see if there\n        # are any \"None\" values in the middle\n        default_values = [None if value == 'None' else value for value in default_values]\n\n        defaults = missing_defaults + default_values\n\n        args = [self.parse_arg(arg, default) for arg, default in zip(node.args.args, defaults)]\n        return args\n\n    def parse_varargs(self, node: ast.FunctionDef) -> List[Dict[str, Any]]:\n        \"\"\"\n        Parses the *args argument of a function or method node.\n        \"\"\"\n        args = []\n\n        if node.args.vararg:\n            args.append(self.parse_arg(node.args.vararg, None))\n\n        return args\n\n    def parse_keyword_args(self, node: ast.FunctionDef) -> List[Dict[str, Any]]:\n        \"\"\"\n        Parses the keyword-only arguments of a function or method node.\n        \"\"\"\n        kw_defaults = [None] * (len(node.args.kwonlyargs) - len(node.args.kw_defaults)) + [\n            ast.unparse(default) if default else None for default in node.args.kw_defaults\n        ]\n\n        args = [self.parse_arg(arg, default) for arg, default in zip(node.args.kwonlyargs, kw_defaults)]\n        return args\n\n    def parse_kwargs(self, node: ast.FunctionDef) -> List[Dict[str, Any]]:\n        \"\"\"\n        Parses the **kwargs argument of a function or method node.\n        \"\"\"\n        args = []\n\n        if node.args.kwarg:\n            args.append(self.parse_arg(node.args.kwarg, None))\n\n        return args\n\n    def parse_function_body(self, node: ast.FunctionDef) -> List[str]:\n        \"\"\"\n        Parses the body of a function or method node.\n        \"\"\"\n        return [ast.unparse(line) for line in node.body]\n\n    def parse_return_statement(self, node: ast.FunctionDef) -> bool:\n        \"\"\"\n        Parses the return statement of a function or method node.\n        \"\"\"\n\n        return any(isinstance(n, ast.Return) for n in node.body)\n\n    def parse_assign(self, stmt):\n        \"\"\"\n        Parses an Assign statement and returns a dictionary\n        with the target's name and value.\n        \"\"\"\n        for target in stmt.targets:\n            if isinstance(target, ast.Name):\n                return {'name': target.id, 'value': ast.unparse(stmt.value)}\n\n    def parse_ann_assign(self, stmt):\n        \"\"\"\n        Parses an AnnAssign statement and returns a dictionary\n        with the target's name, value, and annotation.\n        \"\"\"\n        if isinstance(stmt.target, ast.Name):\n            return {\n                'name': stmt.target.id,\n                'value': ast.unparse(stmt.value) if stmt.value else None,\n                'annotation': ast.unparse(stmt.annotation),\n            }\n\n    def parse_function_def(self, stmt):\n        \"\"\"\n        Parses a FunctionDef statement and returns the parsed\n        method and a boolean indicating if it's an __init__ method.\n        \"\"\"\n        method = self.parse_callable_details(stmt)\n        return (method, True) if stmt.name == '__init__' else (method, False)\n\n    def parse_classes(self, node: ast.ClassDef) -> None:\n        \"\"\"\n        Extracts \"classes\" from the code, including inheritance and init methods.\n        \"\"\"\n\n        class_details = ClassCodeDetails(\n            name=node.name,\n            doc=ast.get_docstring(node),\n            bases=[ast.unparse(base) for base in node.bases],\n            attributes=[],\n            methods=[],\n            init=None,\n        )\n\n        for stmt in node.body:\n            if isinstance(stmt, ast.Assign):\n                if attr := self.parse_assign(stmt):\n                    class_details.attributes.append(attr)\n            elif isinstance(stmt, ast.AnnAssign):\n                if attr := self.parse_ann_assign(stmt):\n                    class_details.attributes.append(attr)\n            elif isinstance(stmt, (ast.FunctionDef, ast.AsyncFunctionDef)):\n                method, is_init = self.parse_function_def(stmt)\n                if is_init:\n                    class_details.init = method\n                else:\n                    class_details.methods.append(method)\n\n        self.data['classes'].append(class_details.model_dump())\n\n    def parse_global_vars(self, node: ast.Assign) -> None:\n        \"\"\"\n        Extracts global variables from the code.\n        \"\"\"\n        global_var = {\n            'targets': [t.id if hasattr(t, 'id') else ast.dump(t) for t in node.targets],\n            'value': ast.unparse(node.value),\n        }\n        self.data['global_vars'].append(global_var)\n\n    def parse_code(self) -> Dict[str, Any]:\n        \"\"\"\n        Runs all parsing operations and returns the resulting data.\n        \"\"\"\n        tree = self.get_tree()\n\n        for node in ast.walk(tree):\n            self.parse_node(node)\n        return self.data\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/code_parser/utils.py",
    "content": "import re\nfrom types import GenericAlias\nfrom typing import Any\n\n\ndef extract_inner_type(return_type: str) -> str:\n    \"\"\"\n    Extracts the inner type from a type hint that is a list.\n    \"\"\"\n    if match := re.match(r'list\\[(.*)\\]', return_type, re.IGNORECASE):\n        return match[1]\n    return return_type\n\n\ndef extract_inner_type_from_generic_alias(return_type: GenericAlias) -> Any:\n    \"\"\"\n    Extracts the inner type from a type hint that is a list.\n    \"\"\"\n    if return_type.__origin__ == list:\n        return list(return_type.__args__)\n\n    return return_type\n\n\ndef extract_union_types(return_type: str) -> list[str]:\n    \"\"\"\n    Extracts the inner type from a type hint that is a list.\n    \"\"\"\n    # If the return type is a Union, then we need to parse it\n    return_type = return_type.replace('Union', '').replace('[', '').replace(']', '')\n    return_types = return_type.split(',')\n    return [item.strip() for item in return_types]\n\n\ndef extract_union_types_from_generic_alias(return_type: GenericAlias) -> list:\n    \"\"\"\n    Extracts the inner type from a type hint that is a Union.\n    \"\"\"\n    return list(return_type.__args__)\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/custom_component/__init__.py",
    "content": "from .custom_component import CustomComponent\n\n__all__ = ['CustomComponent']\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/custom_component/component.py",
    "content": "import ast\nimport operator\nimport warnings\nfrom typing import Any, ClassVar, Optional\n\nimport emoji\nfrom bisheng.interface.custom.code_parser import CodeParser\nfrom bisheng.utils import validate\nfrom cachetools import TTLCache, cachedmethod\nfrom fastapi import HTTPException\n\n\nclass ComponentCodeNullError(HTTPException):\n    pass\n\n\nclass ComponentFunctionEntrypointNameNullError(HTTPException):\n    pass\n\n\nclass Component:\n    ERROR_CODE_NULL: ClassVar[str] = 'Python code must be provided.'\n    ERROR_FUNCTION_ENTRYPOINT_NAME_NULL: ClassVar[str] = 'The name of the entrypoint function must be provided.'\n\n    code: Optional[str] = None\n    _function_entrypoint_name: str = 'build'\n    field_config: dict = {}\n    _user_id: Optional[str]\n\n    def __init__(self, **data):\n        self.cache = TTLCache(maxsize=1024, ttl=60)\n        for key, value in data.items():\n            if key == 'user_id':\n                setattr(self, '_user_id', value)\n            else:\n                setattr(self, key, value)\n\n        # Validate the emoji at the icon field\n        if hasattr(self, 'icon') and self.icon:\n            self.icon = self.validate_icon(self.icon)\n\n    def __setattr__(self, key, value):\n        if key == '_user_id' and hasattr(self, '_user_id'):\n            warnings.warn('user_id is immutable and cannot be changed.')\n        super().__setattr__(key, value)\n\n    @cachedmethod(cache=operator.attrgetter('cache'))\n    def get_code_tree(self, code: str):\n        parser = CodeParser(code)\n        return parser.parse_code()\n\n    def get_function(self):\n        if not self.code:\n            raise ComponentCodeNullError(\n                status_code=400,\n                detail={'error': self.ERROR_CODE_NULL, 'traceback': ''},\n            )\n\n        if not self._function_entrypoint_name:\n            raise ComponentFunctionEntrypointNameNullError(\n                status_code=400,\n                detail={\n                    'error': self.ERROR_FUNCTION_ENTRYPOINT_NAME_NULL,\n                    'traceback': '',\n                },\n            )\n\n        return validate.create_function(self.code, self._function_entrypoint_name)\n\n    def build_template_config(self, attributes) -> dict:\n        template_config = {}\n\n        for item in attributes:\n            item_name = item.get('name')\n\n            if item_value := item.get('value'):\n                if 'display_name' in item_name:\n                    template_config['display_name'] = ast.literal_eval(item_value)\n\n                elif 'description' in item_name:\n                    template_config['description'] = ast.literal_eval(item_value)\n\n                elif 'beta' in item_name:\n                    template_config['beta'] = ast.literal_eval(item_value)\n\n                elif 'documentation' in item_name:\n                    template_config['documentation'] = ast.literal_eval(item_value)\n\n                elif 'icon' in item_name:\n                    icon_str = ast.literal_eval(item_value)\n                    template_config['icon'] = self.validate_icon(icon_str)\n\n        return template_config\n\n    def validate_icon(self, value: str):\n        # we are going to use the emoji library to validate the emoji\n        # emojis can be defined using the :emoji_name: syntax\n        if not value.startswith(':') or not value.endswith(':'):\n            warnings.warn('Invalid emoji. Please use the :emoji_name: syntax.')\n            return value\n        emoji_value = emoji.emojize(value, variant='emoji_type')\n        if value == emoji_value:\n            warnings.warn(f'Invalid emoji. {value} is not a valid emoji.')\n            return value\n        return emoji_value\n\n    def build(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/custom_component/custom_component.py",
    "content": "import operator\nfrom typing import Any, Callable, ClassVar, List, Optional, Union\nfrom uuid import UUID\n\nimport yaml\nfrom bisheng.database.models.flow import Flow, FlowDao\nfrom bisheng.interface.custom.code_parser.utils import (extract_inner_type_from_generic_alias,\n                                                        extract_union_types_from_generic_alias)\nfrom bisheng.interface.custom.custom_component.component import Component\nfrom bisheng.utils import validate\nfrom cachetools import TTLCache, cachedmethod\nfrom fastapi import HTTPException\n\n\nclass CustomComponent(Component):\n    display_name: Optional[str] = None\n    \"\"\"The display name of the component. Defaults to None.\"\"\"\n    description: Optional[str] = None\n    \"\"\"The description of the component. Defaults to None.\"\"\"\n    icon: Optional[str] = None\n    \"\"\"The icon of the component. It should be an emoji. Defaults to None.\"\"\"\n    code: Optional[str] = None\n    \"\"\"The code of the component. Defaults to None.\"\"\"\n    field_config: dict = {}\n    \"\"\"The field configuration of the component. Defaults to an empty dictionary.\"\"\"\n    field_order: Optional[List[str]] = None\n    \"\"\"The field order of the component. Defaults to an empty list.\"\"\"\n    code_class_base_inheritance: ClassVar[str] = 'CustomComponent'\n    function_entrypoint_name: ClassVar[str] = 'build'\n    function: Optional[Callable] = None\n    repr_value: Optional[Any] = ''\n    user_id: Optional[Union[UUID, str]] = None\n    status: Optional[Any] = None\n    \"\"\"The status of the component. This is displayed on the frontend. Defaults to None.\"\"\"\n    _tree: Optional[dict] = None\n\n    def __init__(self, **data):\n        self.cache = TTLCache(maxsize=1024, ttl=60)\n        super().__init__(**data)\n\n    def _get_field_order(self):\n        return self.field_order or list(self.field_config.keys())\n\n    def custom_repr(self):\n        if self.repr_value == '':\n            self.repr_value = self.status\n        if isinstance(self.repr_value, dict):\n            return yaml.dump(self.repr_value)\n        if isinstance(self.repr_value, str):\n            return self.repr_value\n        return str(self.repr_value)\n\n    def build_config(self):\n        return self.field_config\n\n    @property\n    def tree(self):\n        return self.get_code_tree(self.code or '')\n\n    @property\n    def get_function_entrypoint_args(self) -> list:\n        build_method = self.get_build_method()\n        if not build_method:\n            return []\n\n        args = build_method['args']\n        for arg in args:\n            if arg.get('type') == 'prompt':\n                raise HTTPException(\n                    status_code=400,\n                    detail={\n                        'error': 'Type hint Error',\n                        'traceback': (\n                            'Prompt type is not supported in the build method.' ' Try using PromptTemplate instead.'\n                        ),\n                    },\n                )\n            elif not arg.get('type') and arg.get('name') != 'self':\n                # Set the type to Data\n                arg['type'] = 'Data'\n        return args\n\n    @cachedmethod(operator.attrgetter('cache'))\n    def get_build_method(self):\n        if not self.code:\n            return {}\n\n        component_classes = [cls for cls in self.tree['classes'] if self.code_class_base_inheritance in cls['bases']]\n        if not component_classes:\n            return {}\n\n        # Assume the first Component class is the one we're interested in\n        component_class = component_classes[0]\n        build_methods = [\n            method for method in component_class['methods'] if method['name'] == self.function_entrypoint_name\n        ]\n\n        return build_methods[0] if build_methods else {}\n\n    @property\n    def get_function_entrypoint_return_type(self) -> List[Any]:\n        build_method = self.get_build_method()\n        if not build_method or not build_method.get('has_return'):\n            return []\n        return_type = build_method['return_type']\n\n        # If list or List is in the return type, then we remove it and return the inner type\n        if hasattr(return_type, '__origin__') and return_type.__origin__ in [list, List]:\n            return_type = extract_inner_type_from_generic_alias(return_type)\n\n        # If the return type is not a Union, then we just return it as a list\n        if not hasattr(return_type, '__origin__') or return_type.__origin__ != Union:\n            return return_type if isinstance(return_type, list) else [return_type]\n        # If the return type is a Union, then we need to parse itx\n        return_type = extract_union_types_from_generic_alias(return_type)\n        return return_type\n\n    @property\n    def get_main_class_name(self):\n        if not self.code:\n            return ''\n\n        base_name = self.code_class_base_inheritance\n        method_name = self.function_entrypoint_name\n\n        classes = []\n        for item in self.tree.get('classes', []):\n            if base_name in item['bases']:\n                method_names = [method['name'] for method in item['methods']]\n                if method_name in method_names:\n                    classes.append(item['name'])\n\n        # Get just the first item\n        return next(iter(classes), '')\n\n    @property\n    def template_config(self):\n        return self.build_template_config()\n\n    def build_template_config(self):\n        if not self.code:\n            return {}\n\n        attributes = [\n            main_class['attributes']\n            for main_class in self.tree.get('classes', [])\n            if main_class['name'] == self.get_main_class_name\n        ]\n        # Get just the first item\n        attributes = next(iter(attributes), [])\n\n        return super().build_template_config(attributes)\n\n    def index(self, value: int = 0):\n        \"\"\"Returns a function that returns the value at the given index in the iterable.\"\"\"\n\n        def get_index(iterable: List[Any]):\n            return iterable[value] if iterable else iterable\n\n        return get_index\n\n    @property\n    def get_function(self):\n        return validate.create_function(self.code, self.function_entrypoint_name)\n\n    async def load_flow(self, flow_id: str, tweaks: Optional[dict] = None) -> Any:\n        from bisheng.processing.process import build_sorted_vertices, process_tweaks\n\n        flow = FlowDao.get_flow_by_id(flow_id)\n        graph_data = flow.data if flow else None\n        if not graph_data:\n            raise ValueError(f'Flow {flow_id} not found')\n        if tweaks:\n            graph_data = process_tweaks(graph_data=graph_data, tweaks=tweaks)\n        return await build_sorted_vertices(graph_data, self.user_id)\n\n    def list_flows(self) -> List[Flow]:\n        if not self._user_id:\n            raise ValueError('Session is invalid')\n        try:\n            return FlowDao.get_flow_by_user(int(self._user_id))\n        except Exception as e:\n            raise ValueError('Session is invalid') from e\n\n    async def get_flow(\n            self,\n            *,\n            flow_name: Optional[str] = None,\n            flow_id: Optional[str] = None,\n            tweaks: Optional[dict] = None,\n    ) -> Flow:\n        if flow_id:\n            flow = FlowDao.get_flow_by_id(flow_id)\n        elif flow_name:\n            flow = FlowDao.get_flow_by_name(int(self._user_id), flow_name)\n        else:\n            raise ValueError('Either flow_name or flow_id must be provided')\n\n        if not flow:\n            raise ValueError(f'Flow {flow_name or flow_id} not found')\n        return await self.load_flow(flow.id, tweaks)\n\n    def build(self, *args: Any, **kwargs: Any) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/directory_reader/__init__.py",
    "content": "from .directory_reader import DirectoryReader\n\n__all__ = ['DirectoryReader']\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/directory_reader/directory_reader.py",
    "content": "import ast\nimport os\nimport zlib\n\nfrom bisheng.interface.custom.custom_component import CustomComponent\nfrom loguru import logger\n\n\nclass CustomComponentPathValueError(ValueError):\n    pass\n\n\nclass StringCompressor:\n    def __init__(self, input_string):\n        \"\"\"Initialize StringCompressor with a string to compress.\"\"\"\n        self.input_string = input_string\n\n    def compress_string(self):\n        \"\"\"\n        Compress the initial string and return the compressed data.\n        \"\"\"\n        # Convert string to bytes\n        byte_data = self.input_string.encode('utf-8')\n        # Compress the bytes\n        self.compressed_data = zlib.compress(byte_data)\n\n        return self.compressed_data\n\n    def decompress_string(self):\n        \"\"\"\n        Decompress the compressed data and return the original string.\n        \"\"\"\n        # Decompress the bytes\n        decompressed_data = zlib.decompress(self.compressed_data)\n        # Convert bytes back to string\n        return decompressed_data.decode('utf-8')\n\n\nclass DirectoryReader:\n    # Ensure the base path to read the files that contain\n    # the custom components from this directory.\n    base_path = ''\n\n    def __init__(self, directory_path, compress_code_field=False):\n        \"\"\"\n        Initialize DirectoryReader with a directory path\n        and a flag indicating whether to compress the code.\n        \"\"\"\n        self.directory_path = directory_path\n        self.compress_code_field = compress_code_field\n\n    def get_safe_path(self):\n        \"\"\"Check if the path is valid and return it, or None if it's not.\"\"\"\n        return self.directory_path if self.is_valid_path() else None\n\n    def is_valid_path(self) -> bool:\n        \"\"\"Check if the directory path is valid by comparing it to the base path.\"\"\"\n        fullpath = os.path.normpath(os.path.join(self.directory_path))\n        return fullpath.startswith(self.base_path)\n\n    def is_empty_file(self, file_content):\n        \"\"\"\n        Check if the file content is empty.\n        \"\"\"\n        return len(file_content.strip()) == 0\n\n    def filter_loaded_components(self, data: dict, with_errors: bool) -> dict:\n        from bisheng.interface.custom.utils import build_component\n\n        items = []\n        for menu in data['menu']:\n            components = []\n            for component in menu['components']:\n                try:\n                    if component['error'] if with_errors else not component['error']:\n                        component_tuple = (*build_component(component), component)\n                        components.append(component_tuple)\n                except Exception as e:\n                    logger.error(f'Error while loading component: {e}')\n                    continue\n            items.append({'name': menu['name'], 'path': menu['path'], 'components': components})\n        filtered = [menu for menu in items if menu['components']]\n        logger.debug(f'Filtered components {\"with errors\" if with_errors else \"\"}: {len(filtered)}')\n        return {'menu': filtered}\n\n    def validate_code(self, file_content):\n        \"\"\"\n        Validate the Python code by trying to parse it with ast.parse.\n        \"\"\"\n        try:\n            ast.parse(file_content)\n            return True\n        except SyntaxError:\n            return False\n\n    def validate_build(self, file_content):\n        \"\"\"\n        Check if the file content contains a function named 'build'.\n        \"\"\"\n        return 'def build' in file_content\n\n    def read_file_content(self, file_path):\n        \"\"\"\n        Read and return the content of a file.\n        \"\"\"\n        if not os.path.isfile(file_path):\n            return None\n        with open(file_path, 'r') as file:\n            return file.read()\n\n    def get_files(self):\n        \"\"\"\n        Walk through the directory path and return a list of all .py files.\n        \"\"\"\n        if not (safe_path := self.get_safe_path()):\n            raise CustomComponentPathValueError(f\"The path needs to start with '{self.base_path}'.\")\n\n        file_list = []\n        for root, _, files in os.walk(safe_path):\n            file_list.extend(\n                os.path.join(root, filename)\n                for filename in files\n                if filename.endswith('.py') and not filename.startswith('__')\n            )\n        return file_list\n\n    def find_menu(self, response, menu_name):\n        \"\"\"\n        Find and return a menu by its name in the response.\n        \"\"\"\n        return next(\n            (menu for menu in response['menu'] if menu['name'] == menu_name),\n            None,\n        )\n\n    def _is_type_hint_imported(self, type_hint_name: str, code: str) -> bool:\n        \"\"\"\n        Check if a specific type hint is imported\n        from the typing module in the given code.\n        \"\"\"\n        module = ast.parse(code)\n\n        return any(\n            isinstance(node, ast.ImportFrom)\n            and node.module == 'typing'\n            and any(alias.name == type_hint_name for alias in node.names)\n            for node in ast.walk(module)\n        )\n\n    def _is_type_hint_used_in_args(self, type_hint_name: str, code: str) -> bool:\n        \"\"\"\n        Check if a specific type hint is used in the\n        function definitions within the given code.\n        \"\"\"\n        try:\n            module = ast.parse(code)\n\n            for node in ast.walk(module):\n                if isinstance(node, ast.FunctionDef):\n                    for arg in node.args.args:\n                        if self._is_type_hint_in_arg_annotation(arg.annotation, type_hint_name):\n                            return True\n        except SyntaxError:\n            # Returns False if the code is not valid Python\n            return False\n        return False\n\n    def _is_type_hint_in_arg_annotation(self, annotation, type_hint_name: str) -> bool:\n        \"\"\"\n        Helper function to check if a type hint exists in an annotation.\n        \"\"\"\n        return (\n            annotation is not None\n            and isinstance(annotation, ast.Subscript)\n            and isinstance(annotation.value, ast.Name)\n            and annotation.value.id == type_hint_name\n        )\n\n    def is_type_hint_used_but_not_imported(self, type_hint_name: str, code: str) -> bool:\n        \"\"\"\n        Check if a type hint is used but not imported in the given code.\n        \"\"\"\n        try:\n            return self._is_type_hint_used_in_args(type_hint_name, code) and not self._is_type_hint_imported(\n                type_hint_name, code\n            )\n        except SyntaxError:\n            # Returns True if there's something wrong with the code\n            # TODO : Find a better way to handle this\n            return True\n\n    def process_file(self, file_path):\n        \"\"\"\n        Process a file by validating its content and\n        returning the result and content/error message.\n        \"\"\"\n        file_content = self.read_file_content(file_path)\n\n        if file_content is None:\n            return False, f'Could not read {file_path}'\n        elif self.is_empty_file(file_content):\n            return False, 'Empty file'\n        elif not self.validate_code(file_content):\n            return False, 'Syntax error'\n        elif not self.validate_build(file_content):\n            return False, 'Missing build function'\n        elif self._is_type_hint_used_in_args('Optional', file_content) and not self._is_type_hint_imported(\n            'Optional', file_content\n        ):\n            return (\n                False,\n                \"Type hint 'Optional' is used but not imported in the code.\",\n            )\n        else:\n            if self.compress_code_field:\n                file_content = str(StringCompressor(file_content).compress_string())\n            return True, file_content\n\n    def build_component_menu_list(self, file_paths):\n        \"\"\"\n        Build a list of menus with their components\n        from the .py files in the directory.\n        \"\"\"\n        response = {'menu': []}\n        logger.debug('-------------------- Building component menu list --------------------')\n\n        for file_path in file_paths:\n            menu_name = os.path.basename(os.path.dirname(file_path))\n            logger.debug(f'Menu name: {menu_name}')\n            filename = os.path.basename(file_path)\n            validation_result, result_content = self.process_file(file_path)\n            logger.debug(f'Validation result: {validation_result}')\n\n            menu_result = self.find_menu(response, menu_name) or {\n                'name': menu_name,\n                'path': os.path.dirname(file_path),\n                'components': [],\n            }\n            component_name = filename.split('.')[0]\n            # This is the name of the file which will be displayed in the UI\n            # We need to change it from snake_case to CamelCase\n\n            # first check if it's already CamelCase\n            if '_' in component_name:\n                component_name_camelcase = ' '.join(word.title() for word in component_name.split('_'))\n            else:\n                component_name_camelcase = component_name\n\n            if validation_result:\n                try:\n                    output_types = self.get_output_types_from_code(result_content)\n                except Exception as exc:\n                    logger.exception(f'Error while getting output types from code: {str(exc)}')\n                    output_types = [component_name_camelcase]\n            else:\n                output_types = [component_name_camelcase]\n\n            component_info = {\n                'name': 'CustomComponent',\n                'output_types': output_types,\n                'file': filename,\n                'code': result_content if validation_result else '',\n                'error': '' if validation_result else result_content,\n            }\n            menu_result['components'].append(component_info)\n\n            logger.debug(f'Component info: {component_info}')\n            if menu_result not in response['menu']:\n                response['menu'].append(menu_result)\n        logger.debug('-------------------- Component menu list built --------------------')\n        return response\n\n    @staticmethod\n    def get_output_types_from_code(code: str) -> list:\n        \"\"\"\n        Get the output types from the code.\n        \"\"\"\n        custom_component = CustomComponent(code=code)\n        types_list = custom_component.get_function_entrypoint_return_type\n        # Get the name of types classes\n        return [type_.__name__ for type_ in types_list if hasattr(type_, '__name__')]\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/directory_reader/utils.py",
    "content": "from bisheng.interface.custom.directory_reader import DirectoryReader\nfrom bisheng.template.frontend_node.custom_components import CustomComponentFrontendNode\nfrom loguru import logger\n\n\ndef merge_nested_dicts_with_renaming(dict1, dict2):\n    for key, value in dict2.items():\n        if key in dict1 and isinstance(value, dict) and isinstance(dict1.get(key), dict):\n            for sub_key, sub_value in value.items():\n                # if sub_key in dict1[key]:\n                #     new_key = get_new_key(dict1[key], sub_key)\n                #     dict1[key][new_key] = sub_value\n                # else:\n                dict1[key][sub_key] = sub_value\n        else:\n            dict1[key] = value\n    return dict1\n\n\ndef build_invalid_menu(invalid_components):\n    \"\"\"Build the invalid menu.\"\"\"\n    if not invalid_components.get('menu'):\n        return {}\n\n    logger.debug('------------------- INVALID COMPONENTS -------------------')\n    invalid_menu = {}\n    for menu_item in invalid_components['menu']:\n        menu_name = menu_item['name']\n        invalid_menu[menu_name] = build_invalid_menu_items(menu_item)\n    return invalid_menu\n\n\ndef build_valid_menu(valid_components):\n    \"\"\"Build the valid menu.\"\"\"\n    valid_menu = {}\n    logger.debug('------------------- VALID COMPONENTS -------------------')\n    for menu_item in valid_components['menu']:\n        menu_name = menu_item['name']\n        valid_menu[menu_name] = build_menu_items(menu_item)\n    return valid_menu\n\n\ndef build_and_validate_all_files(reader: DirectoryReader, file_list):\n    \"\"\"Build and validate all files\"\"\"\n    data = reader.build_component_menu_list(file_list)\n\n    valid_components = reader.filter_loaded_components(data=data, with_errors=False)\n    invalid_components = reader.filter_loaded_components(data=data, with_errors=True)\n\n    return valid_components, invalid_components\n\n\ndef load_files_from_path(path: str):\n    \"\"\"Load all files from a given path\"\"\"\n    reader = DirectoryReader(path, False)\n\n    return reader.get_files()\n\n\ndef build_custom_component_list_from_path(path: str):\n    \"\"\"Build a list of custom components for the langchain from a given path\"\"\"\n    file_list = load_files_from_path(path)\n    reader = DirectoryReader(path, False)\n\n    valid_components, invalid_components = build_and_validate_all_files(reader, file_list)\n\n    valid_menu = build_valid_menu(valid_components)\n    invalid_menu = build_invalid_menu(invalid_components)\n\n    return merge_nested_dicts_with_renaming(valid_menu, invalid_menu)\n\n\ndef create_invalid_component_template(component, component_name):\n    \"\"\"Create a template for an invalid component.\"\"\"\n    component_code = component['code']\n    component_frontend_node = CustomComponentFrontendNode(\n        description='ERROR - Check your Python Code',\n        display_name=f'ERROR - {component_name}',\n    )\n\n    component_frontend_node.error = component.get('error', None)\n    field = component_frontend_node.template.get_field('code')\n    field.value = component_code\n    component_frontend_node.template.update_field('code', field)\n    return component_frontend_node.model_dump(by_alias=True, exclude_none=True)\n\n\ndef log_invalid_component_details(component):\n    \"\"\"Log details of an invalid component.\"\"\"\n    logger.debug(component)\n    logger.debug(f\"Component Path: {component.get('path', None)}\")\n    logger.debug(f\"Component Error: {component.get('error', None)}\")\n\n\ndef build_invalid_component(component):\n    \"\"\"Build a single invalid component.\"\"\"\n    component_name = component['name']\n    component_template = create_invalid_component_template(component, component_name)\n    log_invalid_component_details(component)\n    return component_name, component_template\n\n\ndef build_invalid_menu_items(menu_item):\n    \"\"\"Build invalid menu items for a given menu.\"\"\"\n    menu_items = {}\n    for component in menu_item['components']:\n        try:\n            component_name, component_template = build_invalid_component(component)\n            menu_items[component_name] = component_template\n            logger.debug(f'Added {component_name} to invalid menu.')\n        except Exception as exc:\n            logger.exception(f'Error while creating custom component [{component_name}]: {str(exc)}')\n    return menu_items\n\n\ndef get_new_key(dictionary, original_key):\n    counter = 1\n    new_key = original_key + ' (' + str(counter) + ')'\n    while new_key in dictionary:\n        counter += 1\n        new_key = original_key + ' (' + str(counter) + ')'\n    return new_key\n\n\ndef determine_component_name(component):\n    \"\"\"Determine the name of the component.\"\"\"\n    component_output_types = component['output_types']\n    if len(component_output_types) == 1:\n        return component_output_types[0]\n    else:\n        file_name = component.get('file').split('.')[0]\n        return ''.join(word.capitalize() for word in file_name.split('_')) if '_' in file_name else file_name\n\n\ndef build_menu_items(menu_item):\n    \"\"\"Build menu items for a given menu.\"\"\"\n    menu_items = {}\n    for component_name, component_template, component in menu_item['components']:\n        try:\n            menu_items[component_name] = component_template\n            logger.debug(f'Added {component_name} to valid menu.')\n        except Exception as exc:\n            logger.error(f\"Error loading Component: {component['output_types']}\")\n            logger.exception(f\"Error while building custom component {component['output_types']}: {exc}\")\n    return menu_items\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/schema.py",
    "content": "from typing import Any, Optional\n\nfrom pydantic import BaseModel, Field\n\n\nclass ClassCodeDetails(BaseModel):\n    \"\"\"\n    A dataclass for storing details about a class.\n    \"\"\"\n\n    name: str\n    doc: Optional[str] = None\n    bases: list\n    attributes: list\n    methods: list\n    init: Optional[dict] = Field(default_factory=dict)\n\n\nclass CallableCodeDetails(BaseModel):\n    \"\"\"\n    A dataclass for storing details about a callable.\n    \"\"\"\n\n    name: str\n    doc: Optional[str] = None\n    args: list\n    body: list\n    return_type: Optional[Any] = None\n    has_return: bool = False\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom/utils.py",
    "content": "import ast\nimport contextlib\nimport re\nimport traceback\nimport warnings\nfrom typing import Any, Dict, List, Optional, Union\nfrom uuid import UUID\n\nfrom bisheng.field_typing.range_spec import RangeSpec\nfrom bisheng.interface.custom.code_parser.utils import extract_inner_type\nfrom bisheng.interface.custom.custom_component import CustomComponent\nfrom bisheng.interface.custom.directory_reader.utils import (build_custom_component_list_from_path,\n                                                             determine_component_name,\n                                                             merge_nested_dicts_with_renaming)\nfrom bisheng.interface.importing.utils import eval_custom_component_code\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.custom_components import CustomComponentFrontendNode\nfrom bisheng.utils.util import get_base_classes\nfrom fastapi import HTTPException\nfrom loguru import logger\n\n\ndef add_output_types(frontend_node: CustomComponentFrontendNode, return_types: List[str]):\n    \"\"\"Add output types to the frontend node\"\"\"\n    for return_type in return_types:\n        if return_type is None:\n            raise HTTPException(\n                status_code=400,\n                detail={\n                    'error': ('Invalid return type. Please check your code and try again.'),\n                    'traceback': traceback.format_exc(),\n                },\n            )\n        if hasattr(return_type, '__name__'):\n            return_type = return_type.__name__\n        elif hasattr(return_type, '__class__'):\n            return_type = return_type.__class__.__name__\n        else:\n            return_type = str(return_type)\n\n        frontend_node.add_output_type(return_type)\n\n\ndef reorder_fields(frontend_node: CustomComponentFrontendNode, field_order: List[str]):\n    \"\"\"Reorder fields in the frontend node based on the specified field_order.\"\"\"\n    if not field_order:\n        return\n\n    # Create a dictionary for O(1) lookup time.\n    field_dict = {field.name: field for field in frontend_node.template.fields}\n    reordered_fields = [field_dict[name] for name in field_order if name in field_dict]\n    # Add any fields that are not in the field_order list\n    for field in frontend_node.template.fields:\n        if field.name not in field_order:\n            reordered_fields.append(field)\n    frontend_node.template.fields = reordered_fields\n\n\ndef add_base_classes(frontend_node: CustomComponentFrontendNode, return_types: List[str]):\n    \"\"\"Add base classes to the frontend node\"\"\"\n    for return_type_instance in return_types:\n        if return_type_instance is None:\n            raise HTTPException(\n                status_code=400,\n                detail={\n                    'error': ('Invalid return type. Please check your code and try again.'),\n                    'traceback': traceback.format_exc(),\n                },\n            )\n\n        base_classes = get_base_classes(return_type_instance)\n\n        for base_class in base_classes:\n            frontend_node.add_base_class(base_class)\n\n\ndef extract_type_from_optional(field_type):\n    \"\"\"\n    Extract the type from a string formatted as \"Optional[<type>]\".\n\n    Parameters:\n    field_type (str): The string from which to extract the type.\n\n    Returns:\n    str: The extracted type, or an empty string if no type was found.\n    \"\"\"\n    match = re.search(r'\\[(.*?)\\]$', field_type)\n    return match[1] if match else None\n\n\ndef get_field_properties(extra_field):\n    \"\"\"Get the properties of an extra field\"\"\"\n    field_name = extra_field['name']\n    field_type = extra_field.get('type', 'str')\n    field_value = extra_field.get('default', '')\n    field_required = 'optional' not in field_type.lower()\n\n    if not field_required:\n        field_type = extract_type_from_optional(field_type)\n    if field_value is not None:\n        with contextlib.suppress(Exception):\n            field_value = ast.literal_eval(field_value)\n    return field_name, field_type, field_value, field_required\n\n\ndef process_type(field_type: str):\n    if field_type.startswith('list') or field_type.startswith('List'):\n        return extract_inner_type(field_type)\n    return 'prompt' if field_type == 'Prompt' else field_type\n\n\ndef add_new_custom_field(\n    frontend_node: CustomComponentFrontendNode,\n    field_name: str,\n    field_type: str,\n    field_value: Any,\n    field_required: bool,\n    field_config: dict,\n):\n    # Check field_config if any of the keys are in it\n    # if it is, update the value\n    display_name = field_config.pop('display_name', None)\n    field_type = field_config.pop('field_type', field_type)\n    field_contains_list = 'list' in field_type.lower()\n    field_type = process_type(field_type)\n    field_value = field_config.pop('value', field_value)\n    field_advanced = field_config.pop('advanced', False)\n\n    if field_type == 'bool' and field_value is None:\n        field_value = False\n\n    # If options is a list, then it's a dropdown\n    # If options is None, then it's a list of strings\n    is_list = isinstance(field_config.get('options'), list)\n    field_config['is_list'] = is_list or field_config.get('is_list', False) or field_contains_list\n\n    if 'name' in field_config:\n        warnings.warn(\"The 'name' key in field_config is used to build the object and can't be changed.\")\n    required = field_config.pop('required', field_required)\n    placeholder = field_config.pop('placeholder', '')\n\n    new_field = TemplateField(\n        name=field_name,\n        field_type=field_type,\n        value=field_value,\n        show=True,\n        required=required,\n        advanced=field_advanced,\n        placeholder=placeholder,\n        display_name=display_name,\n        **sanitize_field_config(field_config),\n    )\n    frontend_node.template.upsert_field(field_name, new_field)\n    if isinstance(frontend_node.custom_fields, dict):\n        frontend_node.custom_fields[field_name] = None\n\n    return frontend_node\n\n\ndef add_extra_fields(frontend_node, field_config, function_args):\n    \"\"\"Add extra fields to the frontend node\"\"\"\n    if not function_args:\n        return\n\n    for extra_field in function_args:\n        if 'name' not in extra_field or extra_field['name'] == 'self':\n            continue\n\n        field_name, field_type, field_value, field_required = get_field_properties(extra_field)\n        config = field_config.get(field_name, {})\n        frontend_node = add_new_custom_field(\n            frontend_node,\n            field_name,\n            field_type,\n            field_value,\n            field_required,\n            config,\n        )\n\n\ndef get_field_dict(field: Union[TemplateField, dict]):\n    \"\"\"Get the field dictionary from a TemplateField or a dict\"\"\"\n    if isinstance(field, TemplateField):\n        return field.model_dump(by_alias=True, exclude_none=True)\n    return field\n\n\ndef run_build_config(\n    custom_component: CustomComponent,\n    user_id: Optional[Union[str, UUID]] = None,\n    update_field=None,\n):\n    \"\"\"Build the field configuration for a custom component\"\"\"\n\n    try:\n        if custom_component.code is None:\n            return {}\n        elif isinstance(custom_component.code, str):\n            custom_class = eval_custom_component_code(custom_component.code)\n        else:\n            raise ValueError('Invalid code type')\n    except Exception as exc:\n        logger.error(f'Error while evaluating custom component code: {str(exc)}')\n        raise HTTPException(\n            status_code=400,\n            detail={\n                'error': ('Invalid type convertion. Please check your code and try again.'),\n                'traceback': traceback.format_exc(),\n            },\n        ) from exc\n\n    try:\n        custom_instance = custom_class(user_id=user_id)\n        build_config: Dict = custom_instance.build_config()\n\n        for field_name, field in build_config.items():\n            # Allow user to build TemplateField as well\n            # as a dict with the same keys as TemplateField\n            field_dict = get_field_dict(field)\n            if update_field is not None and field_name != update_field:\n                continue\n            try:\n                update_field_dict(field_dict)\n                build_config[field_name] = field_dict\n            except Exception as exc:\n                logger.error(f'Error while getting build_config: {str(exc)}')\n\n        return build_config, custom_instance\n\n    except Exception as exc:\n        logger.error(f'Error while building field config: {str(exc)}')\n        raise HTTPException(\n            status_code=400,\n            detail={\n                'error': ('Invalid type convertion. Please check your code and try again.'),\n                'traceback': traceback.format_exc(),\n            },\n        ) from exc\n\n\ndef sanitize_template_config(template_config):\n    \"\"\"Sanitize the template config\"\"\"\n    attributes = {\n        'display_name',\n        'description',\n        'beta',\n        'documentation',\n        'output_types',\n        'icon',\n    }\n    for key in template_config.copy():\n        if key not in attributes:\n            template_config.pop(key, None)\n\n    return template_config\n\n\ndef build_frontend_node(template_config):\n    \"\"\"Build a frontend node for a custom component\"\"\"\n    try:\n        sanitized_template_config = sanitize_template_config(template_config)\n        return CustomComponentFrontendNode(**sanitized_template_config)\n    except Exception as exc:\n        logger.error(f'Error while building base frontend node: {exc}')\n        raise exc\n\n\ndef add_code_field(frontend_node: CustomComponentFrontendNode, raw_code, field_config):\n    code_field = TemplateField(\n        dynamic=True,\n        required=True,\n        placeholder='',\n        multiline=True,\n        value=raw_code,\n        password=False,\n        name='code',\n        advanced=field_config.pop('advanced', False),\n        field_type='code',\n        is_list=False,\n    )\n    frontend_node.template.add_field(code_field)\n\n    return frontend_node\n\n\ndef build_custom_component_template(\n    custom_component: CustomComponent,\n    user_id: Optional[Union[str, UUID]] = None,\n    update_field: Optional[str] = None,\n) -> Optional[Dict[str, Any]]:\n    \"\"\"Build a custom component template for the langchain\"\"\"\n    try:\n        logger.debug('Building custom component template')\n        frontend_node = build_frontend_node(custom_component.template_config)\n\n        logger.debug('Built base frontend node')\n\n        logger.debug('Updated attributes')\n        field_config, custom_instance = run_build_config(custom_component, user_id=user_id, update_field=update_field)\n        logger.debug('Built field config')\n        entrypoint_args = custom_component.get_function_entrypoint_args\n\n        add_extra_fields(frontend_node, field_config, entrypoint_args)\n        logger.debug('Added extra fields')\n        frontend_node = add_code_field(frontend_node, custom_component.code, field_config.get('code', {}))\n        logger.debug('Added code field')\n        add_base_classes(frontend_node, custom_component.get_function_entrypoint_return_type)\n        add_output_types(frontend_node, custom_component.get_function_entrypoint_return_type)\n        logger.debug('Added base classes')\n\n        reorder_fields(frontend_node, custom_instance._get_field_order())\n\n        return frontend_node.to_dict(add_name=False)\n    except Exception as exc:\n        if isinstance(exc, HTTPException):\n            raise exc\n        raise HTTPException(\n            status_code=400,\n            detail={\n                'error': ('Invalid type convertion. Please check your code and try again.'),\n                'traceback': traceback.format_exc(),\n            },\n        ) from exc\n\n\ndef create_component_template(component):\n    \"\"\"Create a template for a component.\"\"\"\n    component_code = component['code']\n    component_output_types = component['output_types']\n\n    component_extractor = CustomComponent(code=component_code)\n\n    component_template = build_custom_component_template(component_extractor)\n    component_template['output_types'] = component_output_types\n    return component_template\n\n\ndef build_custom_components(components_path: List[str]):\n    \"\"\"Build custom components from the specified paths.\"\"\"\n    if not components_path:\n        return {}\n\n    logger.info(f'Building custom components from {components_path}')\n    custom_components_from_file = {}\n    processed_paths = set()\n    for path in components_path:\n        path_str = str(path)\n        if path_str in processed_paths:\n            continue\n\n        custom_component_dict = build_custom_component_list_from_path(path_str)\n        if custom_component_dict:\n            category = next(iter(custom_component_dict))\n            logger.info(f'Loading {len(custom_component_dict[category])} component(s) from category {category}')\n            custom_components_from_file = merge_nested_dicts_with_renaming(\n                custom_components_from_file, custom_component_dict\n            )\n        processed_paths.add(path_str)\n\n    return custom_components_from_file\n\n\ndef update_field_dict(field_dict):\n    \"\"\"Update the field dictionary by calling options() or value() if they are callable\"\"\"\n    if 'options' in field_dict and callable(field_dict['options']):\n        field_dict['options'] = field_dict['options']()\n        # Also update the \"refresh\" key\n        field_dict['refresh'] = True\n\n    if 'value' in field_dict and callable(field_dict['value']):\n        field_dict['value'] = field_dict['value']()\n        field_dict['refresh'] = True\n\n    # Let's check if \"range_spec\" is a RangeSpec object\n    if 'rangeSpec' in field_dict and isinstance(field_dict['rangeSpec'], RangeSpec):\n        field_dict['rangeSpec'] = field_dict['rangeSpec'].model_dump()\n\n\ndef sanitize_field_config(field_config: Dict):\n    # If any of the already existing keys are in field_config, remove them\n    for key in [\n        'name',\n        'field_type',\n        'value',\n        'required',\n        'placeholder',\n        'display_name',\n        'advanced',\n        'show',\n    ]:\n        field_config.pop(key, None)\n    return field_config\n\n\ndef build_component(component):\n    \"\"\"Build a single component.\"\"\"\n    logger.debug(f\"Building component: {component.get('name'), component.get('output_types')}\")\n    component_name = determine_component_name(component)\n    component_template = create_component_template(component)\n    return component_name, component_template\n"
  },
  {
    "path": "src/backend/bisheng/interface/custom_lists.py",
    "content": "import inspect\nfrom typing import Any\n\nfrom langchain import llms, memory, text_splitter\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_community import agent_toolkits, document_loaders, embeddings\nfrom langchain_community.chat_models import ChatVertexAI, MiniMaxChat, ChatTongyi, ChatZhipuAI, \\\n    ChatHunyuan, MoonshotChat\nfrom langchain_community.utilities import requests\nfrom langchain_deepseek import ChatDeepSeek\nfrom langchain_openai import AzureChatOpenAI, ChatOpenAI, OpenAIEmbeddings, AzureOpenAIEmbeddings, OpenAI\n\nfrom bisheng.interface.agents.custom import CUSTOM_AGENTS\nfrom bisheng.interface.chains.custom import CUSTOM_CHAINS\nfrom bisheng.interface.embeddings.custom import CUSTOM_EMBEDDING\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng_langchain import chat_models\nfrom bisheng_langchain import document_loaders as contribute_loader\nfrom bisheng_langchain import embeddings as contribute_embeddings\n\n# LLMs\nllm_type_to_cls_dict = {}\nfor k, v in llms.get_type_to_cls_dict().items():\n    try:\n        llm_type_to_cls_dict[k] = v()\n    except Exception:\n        pass\nllm_type_to_cls_dict['ChatAnthropic'] = ChatAnthropic  # type: ignore\nllm_type_to_cls_dict['AzureChatOpenAI'] = AzureChatOpenAI  # type: ignore\nllm_type_to_cls_dict['ChatOpenAI'] = ChatOpenAI  # type: ignore\nllm_type_to_cls_dict['ChatVertexAI'] = ChatVertexAI  # type: ignore\nllm_type_to_cls_dict['MiniMaxChat'] = MiniMaxChat\n\nllm_type_to_cls_dict['ChatTongyi'] = ChatTongyi\nllm_type_to_cls_dict[\"OpenAI\"] = OpenAI\nllm_type_to_cls_dict['ChatZhipuAI'] = ChatZhipuAI\nllm_type_to_cls_dict['ChatDeepSeek'] = ChatDeepSeek\nllm_type_to_cls_dict['ChatHunyuan'] = ChatHunyuan\nllm_type_to_cls_dict['MoonshotChat'] = MoonshotChat\n\n# llm contribute\nllm_type_to_cls_dict.update({\n    llm_name: import_class(f'bisheng_langchain.chat_models.{llm_name}')\n    for llm_name in chat_models.__all__\n})\n\n# Toolkits\ntoolkit_type_to_loader_dict: dict[str, Any] = {\n    toolkit_name: import_class(f'langchain_community.agent_toolkits.{toolkit_name}')\n    # if toolkit_name is lower case it is a loader\n    for toolkit_name in agent_toolkits.__all__ if toolkit_name.islower()\n}\n\ntoolkit_type_to_cls_dict: dict[str, Any] = {\n    toolkit_name: import_class(f'langchain_community.agent_toolkits.{toolkit_name}')\n    # if toolkit_name is not lower case it is a class\n    for toolkit_name in agent_toolkits.__all__ if not toolkit_name.islower()\n}\n\n# Memories\nmemory_type_to_cls_dict: dict[str, Any] = {}\nfor memory_name in memory.__all__:\n    if memory_name.find(\"ChatMessageHistory\") != -1:\n        memory_type_to_cls_dict[memory_name] = import_class(f\"langchain_community.chat_message_histories.{memory_name}\")\n    elif memory_name == \"ConversationKGMemory\":\n        memory_type_to_cls_dict[memory_name] = import_class(f\"langchain_community.memory.kg.{memory_name}\")\n    elif memory_name == \"MotorheadMemory\":\n        memory_type_to_cls_dict[memory_name] = import_class(\n            f\"langchain_community.memory.motorhead_memory.{memory_name}\")\n    elif memory_name == \"ZepMemory\":\n        memory_type_to_cls_dict[memory_name] = import_class(f\"langchain_community.memory.zep_memory.{memory_name}\")\n    else:\n        memory_type_to_cls_dict[memory_name] = import_class(f'langchain.memory.{memory_name}')\n\n# Wrappers\nwrapper_type_to_cls_dict: dict[str, Any] = {\n    wrapper.__name__: wrapper\n    for wrapper in [requests.RequestsWrapper]\n}\n\n# Embeddings\nembedding_type_to_cls_dict: dict[str, Any] = {\n    embedding_name: import_class(f'langchain_community.embeddings.{embedding_name}')\n    for embedding_name in embeddings.__all__\n}\n\nembedding_type_to_cls_dict.update({\n    embedding_name:\n        import_class(f'bisheng_langchain.embeddings.{embedding_name}')\n    for embedding_name in contribute_embeddings.__all__\n})\nembedding_type_to_cls_dict.update({\n    \"OpenAIEmbeddings\": OpenAIEmbeddings,\n    \"AzureOpenAIEmbeddings\": AzureOpenAIEmbeddings,\n})\n\n# Document Loaders\ndocumentloaders_type_to_cls_dict: dict[str, Any] = {\n    documentloader_name:\n        import_class(f'langchain_community.document_loaders.{documentloader_name}')\n    for documentloader_name in document_loaders.__all__\n}\n\n# contribute\ndocumentloaders_type_to_cls_dict.update({\n    loader:\n        import_class(f'bisheng_langchain.document_loaders.{loader}')\n    for loader in contribute_loader.__all__\n})\n\n# Text Splitters\ntextsplitter_type_to_cls_dict: dict[str,\nAny] = dict(inspect.getmembers(text_splitter, inspect.isclass))\n\n# merge CUSTOM_AGENTS and CUSTOM_CHAINS\nCUSTOM_NODES = {\n    **CUSTOM_AGENTS,\n    **CUSTOM_CHAINS,\n    **CUSTOM_EMBEDDING,\n}  # type: ignore\n"
  },
  {
    "path": "src/backend/bisheng/interface/document_loaders/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/document_loaders/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.custom_lists import documentloaders_type_to_cls_dict\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.documentloaders import DocumentLoaderFrontNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\n\n\nclass DocumentLoaderCreator(LangChainTypeCreator):\n    type_name: str = 'documentloaders'\n\n    @property\n    def frontend_node_class(self) -> Type[DocumentLoaderFrontNode]:\n        return DocumentLoaderFrontNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        return documentloaders_type_to_cls_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of a document loader.\"\"\"\n        try:\n            return build_template_from_class(name, documentloaders_type_to_cls_dict)\n        except ValueError as exc:\n            raise ValueError(f'Documment Loader {name} not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Documment Loader {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            documentloader.__name__ for documentloader in self.type_to_loader_dict.values()\n            if documentloader.__name__ in settings.documentloaders or settings.dev\n        ]\n\n\ndocumentloader_creator = DocumentLoaderCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/embeddings/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/embeddings/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.custom_lists import embedding_type_to_cls_dict\nfrom bisheng.interface.embeddings.custom import CUSTOM_EMBEDDING\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.embeddings import EmbeddingFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\n\n\nclass EmbeddingCreator(LangChainTypeCreator):\n    type_name: str = 'embeddings'\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = embedding_type_to_cls_dict\n            for name, embed in CUSTOM_EMBEDDING.items():\n                # TODO: validate AgentType\n                self.type_dict[name] = embed  # type: ignore\n        return self.type_dict\n\n    @property\n    def frontend_node_class(self) -> Type[FrontendNode]:\n        return EmbeddingFrontendNode\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of an embedding.\"\"\"\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            else:\n                return build_template_from_class(name, embedding_type_to_cls_dict)\n        except ValueError as exc:\n            raise ValueError(f'Embedding {name} not found') from exc\n\n        except AttributeError as exc:\n            logger.error(f'Embedding {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        names = []\n        for _, embed in self.type_to_loader_dict.items():\n            embed_name = (embed.function_name() if hasattr(embed, 'function_name') else embed.__name__)\n            if embed_name in settings.embeddings or settings.dev:\n                names.append(embed_name)\n        return names\n\n\nembedding_creator = EmbeddingCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/embeddings/custom.py",
    "content": "from typing import List, Optional\n\nfrom langchain.embeddings.base import Embeddings\nfrom langchain_community.embeddings.dashscope import BATCH_SIZE\nfrom pydantic import Field\n\nfrom bisheng.llm.domain.llm.embedding import BishengEmbedding\n\nBATCH_SIZE[\"text-embedding-v4\"] = 10  # PengaturanDashScopeThe batch size for is1\n\n\nclass OpenAIProxyEmbedding(Embeddings):\n    embeddings: Optional[Embeddings] = Field(default=None)\n\n    def __init__(self, **kwargs) -> None:\n        super().__init__(**kwargs)\n        from bisheng.llm.domain.services import LLMService\n        self.embeddings = LLMService.get_knowledge_default_embedding(0)\n\n    def embed_documents(self, texts: List[str]) -> List[List[float]]:\n        \"\"\"Embed search docs.\"\"\"\n        if not texts:\n            return []\n\n        return self.embeddings.embed_documents(texts)\n\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"Embed query text.\"\"\"\n\n        return self.embeddings.embed_query(text)\n\n\nclass FakeEmbedding(Embeddings):\n    \"\"\"To ensure amilvusWait, you can continue to use it when the model is offline\"\"\"\n\n    def embed_documents(self, texts: List[str]) -> List[List[float]]:\n        \"\"\"embedding\"\"\"\n        return []\n\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"embedding\"\"\"\n        return []\n\n\nCUSTOM_EMBEDDING = {\n    'OpenAIProxyEmbedding': OpenAIProxyEmbedding,\n    'BishengEmbedding': BishengEmbedding,\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/importing/__init__.py",
    "content": "from bisheng.interface.importing.utils import import_by_type  # noqa: F401\n\n# This module is used to import any langchain class by name.\n\nALL = [\n    'import_by_type',\n]\n"
  },
  {
    "path": "src/backend/bisheng/interface/importing/utils.py",
    "content": "# This module is used to import any langchain class by name.\n\nimport importlib\nfrom typing import Any, ClassVar, Dict, Type\n\nfrom bisheng.interface.custom import CustomComponent\nfrom bisheng.interface.wrappers.base import wrapper_creator\nfrom bisheng.utils import validate\nfrom langchain.agents import Agent\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.chains.base import Chain\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.prompts import PromptTemplate\nfrom langchain_community.tools import BaseTool\n\n\ndef import_module(module_path: str) -> Any:\n    \"\"\"Import module from module path\"\"\"\n    if 'from' not in module_path:\n        # Import the module using the module path\n        return importlib.import_module(module_path)\n    # Split the module path into its components\n    _, module_path, _, object_name = module_path.split()\n\n    # Import the module using the module path\n    module = importlib.import_module(module_path)\n\n    return getattr(module, object_name)\n\n\ndef import_by_type(_type: str, name: str) -> Any:\n    from bisheng_langchain import chat_models\n    \"\"\"Import class by type and name\"\"\"\n    if _type is None:\n        raise ValueError(f'Type cannot be None. Check if {name} is in the config file.')\n    func_dict: ClassVar[Dict] = {\n        'agents': import_agent,\n        'prompts': import_prompt,\n        'llms': {\n            'llm': import_llm,\n            'chat': import_chat_llm,\n            'contribute': import_chain_contribute_llm\n        },\n        'tools': import_tool,\n        'chains': import_chain,\n        'toolkits': import_toolkit,\n        'wrappers': import_wrapper,\n        'memory': import_memory,\n        'embeddings': import_embedding,\n        'vectorstores': import_vectorstore,\n        'documentloaders': import_documentloader,\n        'textsplitters': import_textsplitter,\n        'utilities': import_utility,\n        'output_parsers': import_output_parser,\n        'retrievers': import_retriever,\n        'autogen_roles': import_autogenRoles,\n        'input_output': import_inputoutput,\n        'custom_components': import_custom_component,\n    }\n    if _type == 'llms':\n        key = 'contribute' if name in chat_models.__all__ else 'chat' if 'chat' in name.lower(\n        ) else 'llm'\n        loaded_func = func_dict[_type][key]  # type: ignore\n    else:\n        loaded_func = func_dict[_type]\n\n    return loaded_func(name)\n\n\ndef import_custom_component(custom_component: str) -> CustomComponent:\n    \"\"\"Import custom component from custom component name\"\"\"\n    return import_class('bisheng.interface.custom.custom_component.CustomComponent')\n\n\ndef import_inputoutput(input_output: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    from bisheng.interface.inputoutput.base import input_output_creator\n    return input_output_creator.type_to_loader_dict[input_output]\n\n\ndef import_output_parser(output_parser: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    from bisheng.interface.output_parsers.base import output_parser_creator\n    if output_parser in output_parser_creator.type_to_loader_dict:\n        return output_parser_creator.type_to_loader_dict[output_parser]\n    return import_module(f'from langchain_community.output_parsers import {output_parser}')\n\n\ndef import_chat_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    from bisheng.interface.llms.base import llm_creator\n    if llm in llm_creator.type_to_loader_dict:\n        return llm_creator.type_to_loader_dict[llm]\n    return import_class(f'bisheng_langchain.chat_models.{llm}')\n\n\ndef import_chain_contribute_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    from bisheng.interface.llms.base import llm_creator\n    if llm in llm_creator.type_to_loader_dict:\n        return llm_creator.type_to_loader_dict[llm]\n    return import_class(f'bisheng_langchain.chat_models.{llm}')\n\n\ndef import_retriever(retriever: str) -> Any:\n    \"\"\"Import retriever from retriever name\"\"\"\n    from bisheng.interface.retrievers.base import retriever_creator\n    if retriever in retriever_creator.type_to_loader_dict:\n        return retriever_creator.type_to_loader_dict[retriever]\n\n    return import_module(f'from langchain_community.retrievers import {retriever}')\n\n\ndef import_autogenRoles(autogen: str) -> Any:\n    return import_module(f'from bisheng_langchain.autogen_role import {autogen}')\n\n\ndef import_memory(memory: str) -> Any:\n    \"\"\"Import memory from memory name\"\"\"\n    from bisheng.interface.memories.base import memory_creator\n    if memory in memory_creator.type_to_loader_dict:\n        return memory_creator.type_to_loader_dict[memory]\n    return import_module(f'from langchain.memory import {memory}')\n\n\ndef import_class(class_path: str) -> Any:\n    \"\"\"Import class from class path\"\"\"\n    module_path, class_name = class_path.rsplit('.', 1)\n    module = import_module(module_path)\n    return getattr(module, class_name)\n\n\ndef import_prompt(prompt: str) -> Type[PromptTemplate]:\n    \"\"\"Import prompt from prompt name\"\"\"\n    from bisheng.interface.prompts.base import prompt_creator\n\n    if prompt in prompt_creator.type_to_loader_dict:\n        return prompt_creator.type_to_loader_dict[prompt]\n\n    return import_class(f'langchain.prompts.{prompt}')\n\n\ndef import_wrapper(wrapper: str) -> Any:\n    \"\"\"Import wrapper from wrapper name\"\"\"\n    if wrapper in wrapper_creator.type_to_loader_dict:\n        return wrapper_creator.type_to_loader_dict[wrapper]\n\n\ndef import_toolkit(toolkit: str) -> Any:\n    \"\"\"Import toolkit from toolkit name\"\"\"\n    from bisheng.interface.toolkits.base import toolkits_creator\n    return toolkits_creator.type_to_loader_dict[toolkit]\n\n\ndef import_agent(agent: str) -> Agent:\n    \"\"\"Import agent from agent name\"\"\"\n    # check for custom agent\n    from bisheng_langchain import agents\n    if agent in agents.__all__:\n        return import_class(f'bisheng_langchain.agents.{agent}')\n    return import_class(f'langchain.agents.{agent}')\n\n\ndef import_llm(llm: str) -> BaseLanguageModel:\n    \"\"\"Import llm from llm name\"\"\"\n    from bisheng.interface.llms.base import llm_creator\n    return next(x for x in llm_creator.type_to_loader_dict.values() if x.__name__ == llm)\n\n\ndef import_tool(tool: str) -> BaseTool:\n    \"\"\"Import tool from tool name\"\"\"\n    from bisheng.interface.tools.base import tool_creator\n\n    if tool in tool_creator.type_to_loader_dict:\n        return tool_creator.type_to_loader_dict[tool]['fcn']\n\n    return import_class(f'langchain_community.tools.{tool}')\n\n\ndef import_chain(chain: str) -> Type[Chain]:\n    \"\"\"Import chain from chain name\"\"\"\n    from bisheng.interface.chains.base import chain_creator\n    return next(x for x in chain_creator.type_to_loader_dict.values() if x.__name__ == chain)\n\n\ndef import_embedding(embedding: str) -> Any:\n    \"\"\"Import embedding from embedding name\"\"\"\n    from bisheng.interface.embeddings.base import embedding_creator\n    return next(x for x in embedding_creator.type_to_loader_dict.values()\n                if x.__name__ == embedding)\n\n\ndef import_vectorstore(vectorstore: str) -> Any:\n    \"\"\"Import vectorstore from vectorstore name\"\"\"\n    from bisheng_langchain import vectorstores\n    from bisheng.interface.vector_store.base import vectorstore_creator\n    if vectorstore_creator.type_to_loader_dict.get(vectorstore) is not None:\n        return vectorstore_creator.type_to_loader_dict[vectorstore]\n    if vectorstore in vectorstores.__all__:\n        return import_class(f'bisheng_langchain.vectorstores.{vectorstore}')\n    return import_class(f'langchain_community.vectorstores.{vectorstore}')\n\n\ndef import_documentloader(documentloader: str) -> Any:\n    \"\"\"Import documentloader from documentloader name\"\"\"\n    from bisheng_langchain import document_loaders\n    from bisheng.interface.document_loaders.base import documentloader_creator\n\n    if documentloader in document_loaders.__all__:\n        return import_class(f'bisheng_langchain.document_loaders.{documentloader}')\n    return next(x for x in documentloader_creator.type_to_loader_dict.values()\n                if x.__name__ == documentloader)\n\n\ndef import_textsplitter(textsplitter: str) -> Any:\n    \"\"\"Import textsplitter from textsplitter name\"\"\"\n    return import_class(f'langchain.text_splitter.{textsplitter}')\n\n\ndef import_utility(utility: str) -> Any:\n    \"\"\"Import utility from utility name\"\"\"\n    if utility == 'SQLDatabase':\n        return import_class(f'langchain.sql_database.{utility}')\n    return import_class(f'langchain_community.utilities.{utility}')\n\n\ndef get_function(code):\n    \"\"\"Get the function\"\"\"\n    function_name = validate.extract_function_name(code)\n\n    return validate.create_function(code, function_name)\n\n\ndef eval_custom_component_code(code: str) -> Type[CustomComponent]:\n    \"\"\"Evaluate custom component code\"\"\"\n    class_name = validate.extract_class_name(code)\n    return validate.create_class(code, class_name)\n"
  },
  {
    "path": "src/backend/bisheng/interface/initialize/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/initialize/llm.py",
    "content": "def initialize_vertexai(class_object, params):\n    if credentials_path := params.get('credentials'):\n        from google.oauth2 import service_account  # type: ignore\n\n        credentials_object = service_account.Credentials.from_service_account_file(\n            filename=credentials_path\n        )\n        params['credentials'] = credentials_object\n    return class_object(**params)\n"
  },
  {
    "path": "src/backend/bisheng/interface/initialize/loading.py",
    "content": "import inspect\nimport json\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, Sequence, Type\n\nimport httpx\nimport openai\nfrom langchain.agents import agent as agent_module\nfrom langchain.agents.agent import AgentExecutor\nfrom langchain.agents.agent_toolkits.base import BaseToolkit\nfrom langchain.agents.tools import BaseTool\nfrom langchain.chains.base import Chain\nfrom langchain.document_loaders.base import BaseLoader\nfrom langchain.vectorstores.base import VectorStore\nfrom langchain_community.utils.openai import is_openai_v1\nfrom loguru import logger\nfrom pydantic import SecretStr, ValidationError, create_model\nfrom pydantic.fields import FieldInfo\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.utils import file_download\nfrom bisheng.interface.agents.base import agent_creator\nfrom bisheng.interface.chains.base import chain_creator\nfrom bisheng.interface.custom_lists import CUSTOM_NODES\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.interface.importing.utils import (eval_custom_component_code, get_function,\n                                               import_by_type)\nfrom bisheng.interface.initialize.llm import initialize_vertexai\nfrom bisheng.interface.initialize.utils import (handle_format_kwargs, handle_node_type,\n                                                handle_partial_variables, langchain_bug_openv1)\nfrom bisheng.interface.initialize.vector_store import vecstore_initializer\nfrom bisheng.interface.output_parsers.base import output_parser_creator\nfrom bisheng.interface.retrievers.base import retriever_creator\nfrom bisheng.interface.toolkits.base import toolkits_creator\nfrom bisheng.interface.utils import load_file_into_dict\nfrom bisheng.interface.wrappers.base import wrapper_creator\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.utils import validate\nfrom bisheng.utils.constants import NODE_ID_DICT, PRESET_QUESTION\nfrom bisheng_langchain.vectorstores import VectorStoreFilterRetriever\n\nif TYPE_CHECKING:\n    from bisheng import CustomComponent\n\n\ndef build_vertex_in_params(params: Dict) -> Dict:\n    from bisheng.graph.vertex.base import Vertex\n\n    # If any of the values in params is a Vertex, we will build it\n    return {\n        key: value.build() if isinstance(value, Vertex) else value\n        for key, value in params.items()\n    }\n\n\n# from bisheng_langchain.document_loaders.elem_unstrcutured_loader import ElemUnstructuredLoaderV0\nasync def instantiate_class(node_type: str, base_type: str, params: Dict, user_id=None) -> Any:\n    \"\"\"Instantiate class from module type and key, and params\"\"\"\n    params = convert_params_to_sets(params)\n    params = convert_kwargs(params)\n    params_node_id_dict = params.pop(NODE_ID_DICT)\n    if node_type in CUSTOM_NODES:\n        if custom_node := CUSTOM_NODES.get(node_type):\n            if hasattr(custom_node, 'initialize'):\n                return custom_node.initialize(**params)\n            return custom_node(**params)\n\n    class_object = import_by_type(_type=base_type, name=node_type)\n    return await instantiate_based_on_type(class_object,\n                                           base_type,\n                                           node_type,\n                                           params,\n                                           params_node_id_dict,\n                                           user_id=user_id)\n\n\ndef convert_params_to_sets(params):\n    \"\"\"Convert certain params to sets\"\"\"\n    if 'allowed_special' in params:\n        params['allowed_special'] = set(params['allowed_special'])\n    if 'disallowed_special' in params:\n        params['disallowed_special'] = set(params['disallowed_special'])\n    if 'input_node' in params:\n        params.pop('input_node')\n    return params\n\n\ndef convert_kwargs(params):\n    # if *kwargs are passed as a string, convert to dict\n    # first find any key that has kwargs or config in it\n    kwargs_keys = [key for key in params.keys() if 'kwargs' in key or 'config' in key]\n    for key in kwargs_keys:\n        if isinstance(params[key], str):\n            params[key] = json.loads(params[key])\n    return params\n\n\nasync def instantiate_based_on_type(class_object,\n                                    base_type,\n                                    node_type,\n                                    params,\n                                    param_id_dict,\n                                    user_id=None):\n    if base_type == 'agents':\n        return instantiate_agent(node_type, class_object, params)\n    elif base_type == 'prompts':\n        return instantiate_prompt(node_type, class_object, params, param_id_dict)\n    elif base_type == 'tools':\n        tool = instantiate_tool(node_type, class_object, params)\n        if hasattr(tool, 'name') and isinstance(tool, BaseTool):\n            # tool name shouldn't contain spaces\n            tool.name = tool.name.replace(' ', '_')\n        return tool\n    elif base_type == 'toolkits':\n        return instantiate_toolkit(node_type, class_object, params)\n    elif base_type == 'embeddings':\n        return instantiate_embedding(class_object, params)\n    elif base_type == 'vectorstores':\n        return instantiate_vectorstore(node_type, class_object, params)\n    elif base_type == 'documentloaders':\n        return instantiate_documentloader(class_object, params)\n    elif base_type == 'textsplitters':\n        return instantiate_textsplitter(class_object, params)\n    elif base_type == 'utilities':\n        return instantiate_utility(node_type, class_object, params)\n    elif base_type == 'chains':\n        return instantiate_chains(node_type, class_object, params, param_id_dict)\n    elif base_type == 'output_parsers':\n        return instantiate_output_parser(node_type, class_object, params)\n    elif base_type == 'llms':\n        return instantiate_llm(node_type, class_object, params)\n    elif base_type == 'retrievers':\n        return instantiate_retriever(node_type, class_object, params)\n    elif base_type == 'memory':\n        return instantiate_memory(node_type, class_object, params)\n    elif base_type == 'custom_components':\n        return await instantiate_custom_component(node_type, class_object, params, user_id)\n    elif base_type == 'wrappers':\n        return instantiate_wrapper(node_type, class_object, params)\n    elif base_type == 'input_output':\n        return instantiate_input_output(node_type, class_object, params, param_id_dict)\n    elif base_type == 'autogen_roles':\n        return instantiate_autogen_roles(node_type, class_object, params)\n    else:\n        return class_object(**params)\n\n\nasync def instantiate_custom_component(node_type, class_object, params, user_id):\n    params_copy = params.copy()\n    class_object: 'CustomComponent' = eval_custom_component_code(params_copy.pop('code'))\n    custom_component = class_object(user_id=user_id)\n\n    if 'retriever' in params_copy and hasattr(params_copy['retriever'], 'as_retriever'):\n        params_copy['retriever'] = params_copy['retriever'].as_retriever()\n\n    # Determine if the build method is asynchronous\n    is_async = inspect.iscoroutinefunction(custom_component.build)\n\n    if is_async:\n        # Await the build method directly if it's async\n        built_object = await custom_component.build(**params_copy)\n    else:\n        # Call the build method directly if it's sync\n        built_object = custom_component.build(**params_copy)\n\n    return built_object, {'repr': custom_component.custom_repr()}\n\n\ndef instantiate_input_output(node_type, class_object, params, id_dict):\n    if node_type == 'Report':\n        preset_question = {}\n        if PRESET_QUESTION in params:\n            preset_question = params.pop(PRESET_QUESTION)\n        chains = params.get('chains', [])\n        chains_idlist = id_dict.get('chains', [])\n        # Needs to be rightchainsObjects are enriched\n        chain_list = []\n        for index, id in enumerate(chains_idlist):\n            chain_obj = {}\n            chain_obj['object'] = chains[index]\n            if id in preset_question:\n                if isinstance(preset_question[id], list):\n                    for node_id in preset_question[id]:\n                        chain_ = chain_obj.copy()\n                        chain_['node_id'] = node_id[0]\n                        chain_['input'] = {chains[index].input_keys[0]: node_id[1]}\n                        chain_list.append(chain_)\n                    continue\n                else:\n                    chain_obj['node_id'] = preset_question[id][0]\n                    chain_obj['input'] = {chains[index].input_keys[0]: preset_question[id][1]}\n            else:\n                # give a default input\n                logger.error(f'Report has no question id={id}')\n                chain_obj['input'] = {chains[index].input_keys[0]: 'start'}\n            chain_list.append(chain_obj)\n        params['chains'] = chain_list\n        # variable\n        variable = params.get('variables')\n        variable_node_id = id_dict.get('variables') or []\n        params['variables'] = []\n        for index, id in enumerate(variable_node_id):\n            params['variables'].append({'node_id': id, 'input': variable[index]})\n        return class_object(**params)\n    if node_type == 'InputFileNode':\n        file_path = class_object(**params).text()\n        if file_path:\n            file_path, file_name2 = file_download(file_path[0])\n            return [file_path, file_name2 if file_name2 else file_path[1]]\n        else:\n            return ''\n    if 'file_path' in params:\n        file_path = params['file_path']\n        if not file_path:\n            return ''\n        if isinstance(file_path, list):\n            params['file_path'] = file_path[0]\n\n    return class_object(**params).text()\n\n\ndef instantiate_autogen_roles(node_type, class_object, params):\n    return class_object(**params)\n\n\ndef instantiate_wrapper(node_type, class_object, params):\n    if node_type in wrapper_creator.from_method_nodes:\n        method = wrapper_creator.from_method_nodes[node_type]\n        if class_method := getattr(class_object, method, None):\n            return class_method(**params)\n        raise ValueError(f'Method {method} not found in {class_object}')\n    if node_type == 'DallEAPIWrapper' and is_openai_v1():\n        if 'openai_proxy' in params and params['openai_proxy']:\n            client_params = langchain_bug_openv1(params)\n            client_params['http_client'] = httpx.Client(proxies=params.get('openai_proxy'))\n            params['client'] = openai.OpenAI(**client_params).images\n            client_params['http_client'] = httpx.AsyncClient(proxies=params.get('openai_proxy'))\n            params['async_client'] = openai.AsyncOpenAI(**client_params).images\n\n    return class_object(**params)\n\n\ndef instantiate_output_parser(node_type, class_object, params):\n    if node_type in output_parser_creator.from_method_nodes:\n        method = output_parser_creator.from_method_nodes[node_type]\n        if class_method := getattr(class_object, method, None):\n            return class_method(**params)\n        raise ValueError(f'Method {method} not found in {class_object}')\n    return class_object(**params)\n\n\ndef instantiate_llm(node_type, class_object, params: Dict, user_llm_request: bool = True):\n    # This is a workaround so JinaChat works until streaming is implemented\n    # if \"openai_api_base\" in params and \"jina\" in params[\"openai_api_base\"]:\n    # False if condition is True\n    params.pop('cache', None)\n    if is_openai_v1() and params.get('openai_proxy'):\n        params['http_client'] = httpx.Client(proxies=params.get('openai_proxy'))\n        params['http_async_client'] = httpx.AsyncClient(proxies=params.get('openai_proxy'))\n        del params['openai_proxy']\n\n    if node_type == '':\n        anthropic_api_key = params.pop('anthropic_api_key', None)\n        params['anthropic_api_key'] = SecretStr(anthropic_api_key) if anthropic_api_key else None\n\n    if node_type == 'VertexAI':\n        return initialize_vertexai(class_object=class_object, params=params)\n    # max_tokens sometimes is a string and should be an int\n    if 'max_tokens' in params:\n        if isinstance(params['max_tokens'], str) and params['max_tokens'].isdigit():\n            params['max_tokens'] = int(params['max_tokens'])\n        elif not isinstance(params.get('max_tokens'), int):\n            params.pop('max_tokens', None)\n    if node_type == 'BishengLLM':\n        params['app_id'] = \"flow(will be deprecated)\"\n        params['app_name'] = \"flow(will be deprecated)\"\n        params['app_type'] = ApplicationTypeEnum.SKILL\n        params['user_id'] = params.get('user_id', 0)\n    llm = class_object(**params)\n    llm_config = settings.get_from_db('llm_request')\n    # Supportrequest_timeout & max_retries\n    if hasattr(llm, 'request_timeout') and 'request_timeout' in llm_config:\n        if isinstance(llm_config.get('request_timeout'), str):\n            llm.request_timeout = int(llm_config.get('request_timeout'))\n        else:\n            llm.request_timeout = llm_config.get('request_timeout')\n    if hasattr(llm, 'max_retries') and 'max_retries' in llm_config:\n        llm.max_retries = llm_config.get('max_retries')\n\n    return llm\n\n\ndef instantiate_memory(node_type, class_object, params):\n    # process input_key and output_key to remove them if\n    # they are empty strings\n    if node_type == 'ConversationEntityMemory':\n        params.pop('memory_key', None)\n\n    for key in ['input_key', 'output_key']:\n        if key in params and (params[key] == '' or not params[key]):\n            params.pop(key)\n\n    try:\n        if 'retriever' in params and hasattr(params['retriever'], 'as_retriever'):\n            params['retriever'] = params['retriever'].as_retriever()\n        return class_object(**params)\n    # I want to catch a specific attribute error that happens\n    # when the object does not have a cursor attribute\n    except Exception as exc:\n        if \"object has no attribute 'cursor'\" in str(exc) or 'object has no field \"conn\"' in str(\n                exc):\n            raise AttributeError(\n                ('Failed to build connection to database.'\n                 f' Please check your connection string and try again. Error: {exc}')) from exc\n        raise exc\n\n\ndef instantiate_retriever(node_type, class_object, params):\n    for key, value in params.items():\n        if 'retriever' in key and hasattr(value, 'as_retriever'):\n            params[key] = value.as_retriever()\n    if node_type in retriever_creator.from_method_nodes:\n        method = retriever_creator.from_method_nodes[node_type]\n        if class_method := getattr(class_object, method, None):\n            return class_method(**params)\n        raise ValueError(f'Method {method} not found in {class_object}')\n    return class_object(**params)\n\n\ndef instantiate_chains(node_type, class_object: Type[Chain], params: Dict, id_dict: Dict):\n    if 'retriever' in params:\n        user_name = params.pop('user_name', '')\n        if hasattr(params['retriever'], 'as_retriever'):\n            if settings.get_from_db('file_access'):\n                # need to verify file access\n                access_url = settings.get_from_db('file_access') + f'?username={user_name}'\n                logger.info('file_access_filter url={}', access_url)\n                vectorstore = VectorStoreFilterRetriever(vectorstore=params['retriever'],\n                                                         access_url=access_url)\n            else:\n                vectorstore = params['retriever'].as_retriever()\n            params['retriever'] = vectorstore\n    # sequence chain\n    if node_type == 'SequentialChain':\n        # Modifikasisequence Supports customizationchainSequence\n        params.pop('input_node', '')  # sequential Adding input parameters is not supported\n        try:\n            chain_order = json.loads(params.pop('chain_order'))\n        except Exception:\n            raise Exception('chain_order Not a standard array')\n        chains_origin = params.get('chains')\n        chains_dict = {id: index for index, id in enumerate(id_dict.get('chains'))}\n        params['chains'] = [chains_origin[chains_dict.get(id)] for id in chain_order]\n    # dict Tukar\n    if 'headers' in params and isinstance(params['headers'], str):\n        params['headers'] = json.loads(params['headers'])\n    if node_type == 'ConversationalRetrievalChain':\n        params['get_chat_history'] = str\n        params['combine_docs_chain_kwargs'] = {\n            'prompt': params.pop('combine_docs_chain_kwargs', None),\n            'document_prompt': params.pop('document_prompt', None)\n        }\n        params['combine_docs_chain_kwargs'] = {\n            k: v\n            for k, v in params['combine_docs_chain_kwargs'].items() if v is not None\n        }\n    # Manual assemblyMultiPromptChain\n    if node_type in {'MultiPromptChain', 'MultiRuleChain'}:\n        destination_chain_name = params['destination_chain_name']\n        llm_chains = params['LLMChains']\n        destination_chain = {}\n        i = 0\n        for k, name in destination_chain_name.items():\n            destination_chain[name] = llm_chains[i]\n            i = i + 1\n        params.pop('LLMChains')\n        params.pop('destination_chain_name')\n        params['destination_chains'] = destination_chain\n    if node_type in chain_creator.from_method_nodes:\n        method = chain_creator.from_method_nodes[node_type]\n        if class_method := getattr(class_object, method, None):\n            return class_method(**params)\n        raise ValueError(f'Method {method} not found in {class_object}')\n    return class_object(**params)\n\n\ndef instantiate_agent(node_type, class_object: Type[agent_module.Agent], params: Dict):\n    if node_type in agent_creator.from_method_nodes:\n        method = agent_creator.from_method_nodes[node_type]\n        if class_method := getattr(class_object, method, None):\n            agent = class_method(**params)\n            tools = params.get('tools', [])\n            return AgentExecutor.from_agent_and_tools(agent=agent,\n                                                      tools=tools,\n                                                      handle_parsing_errors=True)\n    return load_agent_executor(class_object, params)\n\n\ndef instantiate_prompt(node_type, class_object, params: Dict, param_id_dict: Dict):\n    params, prompt = handle_node_type(node_type, class_object, params)\n    format_kwargs = handle_format_kwargs(prompt, params)\n    # Now we'll use partial_format to format the prompt\n    if format_kwargs:\n        prompt = handle_partial_variables(prompt, format_kwargs)\n\n    no_human_input = set(param_id_dict.keys())\n    human_input = set(prompt.input_variables).difference(no_human_input)\n    order_input = list(human_input) + list(set(prompt.input_variables) & no_human_input)\n    if len(order_input) > 1:\n        # if node_type == 'ChatPromptTemplate':\n\n        if hasattr(prompt, 'prompt') and hasattr(prompt.prompt, 'input_variables'):\n            prompt.prompt.input_variables = order_input\n        elif hasattr(prompt, 'input_variables'):\n            prompt.input_variables = order_input\n    return prompt, format_kwargs\n\n\ndef instantiate_tool(node_type, class_object: Type[BaseTool], params: Dict):\n    # build args_schema\n    args_schema = params.pop('args_schema', '')\n    if node_type == 'JsonSpec':\n        if file_dict := load_file_into_dict(params.pop('path')):\n            params['dict_'] = file_dict\n        else:\n            raise ValueError('Invalid file')\n        return class_object(**params)\n    elif node_type == 'PythonFunctionTool':\n        params['func'] = get_function(params.get('code'))\n        return class_object(**params)\n    elif node_type == 'PythonFunction':\n        function_string = params['code']\n        if isinstance(function_string, str):\n            return validate.eval_function(function_string)\n        raise ValueError('Function should be a string')\n    elif node_type.lower() == 'tool':\n        tool = class_object(**params)\n    tool = class_object(**params)\n    if args_schema and hasattr(tool, 'args_schema'):\n        fields = {}\n        for name, prop in args_schema.items():\n            # evalFunction to execute a string expression and return the result\n            import typing  # noqa\n            if prop.get('type') == 'string':\n                field_type = str\n            else:\n                field_type = typing.Any\n            fields[name] = (field_type, FieldInfo(**prop))\n\n        tool.args_schema = create_model(name, **fields)\n    return tool\n\n\ndef instantiate_toolkit(node_type, class_object: Type[BaseToolkit], params: Dict):\n    loaded_toolkit = class_object(**params)\n    # Commenting this out for now to use toolkits as normal tools\n    # if toolkits_creator.has_create_function(node_type):\n    #     return load_toolkits_executor(node_type, loaded_toolkit, params)\n    if isinstance(loaded_toolkit, BaseToolkit):\n        return loaded_toolkit.get_tools()\n    return loaded_toolkit\n\n\ndef instantiate_embedding(class_object, params: Dict):\n    # params.pop('model', None)\n    try:\n        if params.get('openai_proxy'):\n            params['http_client'] = httpx.Client(proxies=params.get('openai_proxy'))\n            params['http_async_client'] = httpx.AsyncClient(proxies=params.get('openai_proxy'))\n            del params['openai_proxy']\n        if class_object.__name__ == 'OpenAIEmbeddings':\n            params['check_embedding_ctx_length'] = False\n        elif class_object.__name__ == 'BishengEmbedding':\n            params['app_id'] = \"flow(will be deprecated)\"\n            params['app_name'] = \"flow(will be deprecated)\"\n            params['app_type'] = ApplicationTypeEnum.SKILL\n            params['user_id'] = params.get('user_id', 0)\n        return class_object(**params)\n    except ValidationError:\n        params = {key: value for key, value in params.items() if key in class_object.__fields__}\n        return class_object(**params)\n\n\ndef instantiate_vectorstore(node_type: str, class_object: Type[VectorStore], params: Dict):\n    user_name = params.pop('user_name', '')\n    search_kwargs = params.pop('search_kwargs', {})\n    search_type = params.pop('search_type', 'similarity')\n    if 'documents' not in params:\n        params['documents'] = []\n\n    # Filter knowledge bases for which the user does not have permission\n    # TODO zgq After the subsequent unified skill execution process, all business-related logic is migrated to before the initial skill object.\n    if node_type == 'MilvusWithPermissionCheck' or node_type == 'ElasticsearchWithPermissionCheck':\n        col_name = 'collection_name'\n        if node_type == 'ElasticsearchWithPermissionCheck':\n            col_name = 'index_name'\n\n        # Get execution users List of knowledge bases with permission to view\n        knowledge_ids = [one['key'] for one in params[col_name]]\n        if params.pop('_is_check_auth', True):\n            knowledge_list = KnowledgeDao.judge_knowledge_permission(user_name, knowledge_ids)\n        else:\n            knowledge_list = KnowledgeDao.get_list_by_ids(knowledge_ids)\n        logger.debug(f'{node_type} after filter, get knowledge_list: {knowledge_list}')\n\n        if not knowledge_list:\n            logger.warning(f'{node_type}: after filter, get zero knowledge')\n\n        # Fake if you don't have any knowledge baseembeddingand emptycollection_name\n        if node_type == 'MilvusWithPermissionCheck':\n            params[col_name] = []\n            params['collection_embeddings'] = []\n            params['partition_keys'] = []\n            for knowledge in knowledge_list:\n                params[col_name].append(knowledge.collection_name)\n                params['collection_embeddings'].append(\n                    LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model)))\n                if knowledge.collection_name.startswith('partition'):\n                    params['partition_keys'].append(knowledge.id)\n                else:\n                    params['partition_keys'].append(None)\n            params['embedding'] = params['collection_embeddings'][0] if params[\n                'collection_embeddings'] else FakeEmbedding()\n        else:\n            params[col_name] = [\n                knowledge.index_name or knowledge.collection_name for knowledge in knowledge_list\n            ]\n\n    if initializer := vecstore_initializer.get(class_object.__name__):\n        vecstore = initializer(class_object, params, search_kwargs)\n    else:\n        if 'texts' in params:\n            params['documents'] = params.pop('texts')\n        vecstore = class_object.from_documents(**params)\n\n    # ! This might not work. Need to test\n    if search_kwargs and hasattr(vecstore, 'as_retriever'):\n        if settings.get_from_db('file_access'):\n            # need to verify file access / For Knowledge Base Only\n            access_url = settings.get_from_db('file_access') + f'?username={user_name}'\n            vecstore = VectorStoreFilterRetriever(vectorstore=vecstore,\n                                                  search_type=search_type,\n                                                  search_kwargs=search_kwargs,\n                                                  access_url=access_url)\n        else:\n            vecstore = vecstore.as_retriever(search_type=search_type, search_kwargs=search_kwargs)\n\n    return vecstore\n\n\ndef instantiate_documentloader(class_object: Type[BaseLoader], params: Dict):\n    if 'file_filter' in params:\n        # file_filter will be a string but we need a function\n        # that will be used to filter the files using file_filter\n        # like lambda x: x.endswith(\".txt\") but as we don't know\n        # anything besides the string, we will simply check if the string is\n        # in x and if it is, we will return True\n        file_filter = params.pop('file_filter')\n        extensions = file_filter.split(',')\n        params['file_filter'] = lambda x: any(extension.strip() in x for extension in extensions)\n    if 'file_path' in params:\n        file_path = params['file_path']\n        if isinstance(file_path, list):\n            file_name = file_path[1]\n            params['file_path'] = file_path[0]\n            if class_object.__name__ == 'ElemUnstructuredLoaderV0':\n                params['file_name'] = file_name\n    metadata = params.pop('metadata', None)\n    if metadata and isinstance(metadata, str):\n        try:\n            metadata = json.loads(metadata)\n        except json.JSONDecodeError as exc:\n            raise ValueError('The metadata you provided is not a valid JSON string.') from exc\n    # make it success when file not present\n    if 'file_path' in params and not params['file_path']:\n        return []\n\n    docs = class_object(**params).load()\n    # Now if metadata is an empty dict, we will not add it to the documents\n    if metadata:\n        for doc in docs:\n            # If the document already has metadata, we will not overwrite it\n            if not doc.metadata:\n                doc.metadata = metadata\n            else:\n                doc.metadata.update(metadata)\n\n    return docs\n\n\ndef instantiate_textsplitter(\n        class_object,\n        params: Dict,\n):\n    try:\n        documents = params.pop('documents')\n        if not documents:\n            return []\n    except KeyError as exc:\n        raise ValueError('The source you provided did not load correctly or was empty.'\n                         'Try changing the chunk_size of the Text Splitter.') from exc\n\n    if ('separator_type' in params\n        and params['separator_type'] == 'Text') or 'separator_type' not in params:\n        params.pop('separator_type', None)\n        # separators might come in as an escaped string like \\\\n\n        # so we need to convert it to a string\n        if 'separators' in params:\n            params['separators'] = (params['separators'].encode().decode('unicode-escape'))\n        text_splitter = class_object(**params)\n    else:\n        from langchain.text_splitter import Language\n\n        language = params.pop('separator_type', None)\n        params['language'] = Language(language)\n        params.pop('separators', None)\n\n        text_splitter = class_object.from_language(**params)\n    return text_splitter.split_documents(documents)\n\n\ndef instantiate_utility(node_type, class_object, params: Dict):\n    if node_type == 'SQLDatabase':\n        return class_object.from_uri(params.pop('uri'))\n    return class_object(**params)\n\n\ndef replace_zero_shot_prompt_with_prompt_template(nodes):\n    \"\"\"Replace ZeroShotPrompt with PromptTemplate\"\"\"\n    for node in nodes:\n        if node['data']['type'] == 'ZeroShotPrompt':\n            # Build Prompt Template\n            tools = [\n                tool for tool in nodes if tool['type'] != 'chatOutputNode'\n                                          and 'Tool' in tool['data']['node']['base_classes']\n            ]\n            node['data'] = build_prompt_template(prompt=node['data'], tools=tools)\n            break\n    return nodes\n\n\ndef load_agent_executor(agent_class: type[agent_module.Agent], params, **kwargs):\n    \"\"\"Load agent executor from agent class, tools and chain\"\"\"\n    allowed_tools: Sequence[BaseTool] = params.get('allowed_tools', [])\n    llm_chain = params['llm_chain']\n    # agent has hidden args for memory. might need to be support\n    # memory = params[\"memory\"]\n    # if allowed_tools is not a list or set, make it a list\n    if not isinstance(allowed_tools, (list, set)) and isinstance(allowed_tools, BaseTool):\n        allowed_tools = [allowed_tools]\n    tool_names = [tool.name for tool in allowed_tools]\n    # Agent class requires an output_parser but Agent classes\n    # have a default output_parser.\n    agent = agent_class(allowed_tools=tool_names, llm_chain=llm_chain)  # type: ignore\n    return AgentExecutor.from_agent_and_tools(\n        agent=agent,\n        tools=allowed_tools,\n        handle_parsing_errors=True,\n        # memory=memory,\n        **kwargs,\n    )\n\n\ndef load_toolkits_executor(node_type: str, toolkit: BaseToolkit, params: dict):\n    create_function: Callable = toolkits_creator.get_create_function(node_type)\n    if llm := params.get('llm'):\n        return create_function(llm=llm, toolkit=toolkit)\n\n\ndef build_prompt_template(prompt, tools):\n    \"\"\"Build PromptTemplate from ZeroShotPrompt\"\"\"\n    prefix = prompt['node']['template']['prefix']['value']\n    suffix = prompt['node']['template']['suffix']['value']\n    format_instructions = prompt['node']['template']['format_instructions']['value']\n\n    tool_strings = '\\n'.join([\n        f\"{tool['data']['node']['name']}: {tool['data']['node']['description']}\" for tool in tools\n    ])\n    tool_names = ', '.join([tool['data']['node']['name'] for tool in tools])\n    format_instructions = format_instructions.format(tool_names=tool_names)\n    value = '\\n\\n'.join([prefix, tool_strings, format_instructions, suffix])\n\n    prompt['type'] = 'PromptTemplate'\n\n    prompt['node'] = {\n        'template': {\n            '_type': 'prompt',\n            'input_variables': {\n                'type': 'str',\n                'required': True,\n                'placeholder': '',\n                'list': True,\n                'show': False,\n                'multiline': False,\n            },\n            'output_parser': {\n                'type': 'BaseOutputParser',\n                'required': False,\n                'placeholder': '',\n                'list': False,\n                'show': False,\n                'multline': False,\n                'value': None,\n            },\n            'template': {\n                'type': 'str',\n                'required': True,\n                'placeholder': '',\n                'list': False,\n                'show': True,\n                'multiline': True,\n                'value': value,\n            },\n            'template_format': {\n                'type': 'str',\n                'required': False,\n                'placeholder': '',\n                'list': False,\n                'show': False,\n                'multline': False,\n                'value': 'f-string',\n            },\n            'validate_template': {\n                'type': 'bool',\n                'required': False,\n                'placeholder': '',\n                'list': False,\n                'show': False,\n                'multline': False,\n                'value': True,\n            },\n        },\n        'description': 'Schema to represent a prompt for an LLM.',\n        'base_classes': ['BasePromptTemplate'],\n    }\n\n    return prompt\n"
  },
  {
    "path": "src/backend/bisheng/interface/initialize/utils.py",
    "content": "import contextlib\nimport json\nfrom typing import Any, Dict, List\n\nimport orjson\nfrom langchain.agents import ZeroShotAgent\nfrom langchain.schema import BaseOutputParser, Document\n\nfrom bisheng.common.utils.util import orjson_dumps\n\n\ndef langchain_bug_openv1(params):\n    '''Compatible openai v1'''\n    client_params = {\n        'api_key': params.get('openai_api_key') or params.get('api_key'),\n        'organization': params.get('openai_organization'),\n        'base_url': params.get('openai_api_base'),\n        'timeout': params.get('request_timeout', 30),\n        'max_retries': params.get('max_retries', 1),\n        'default_headers': params.get('default_headers'),\n        'default_query': params.get('default_query')\n    }\n    return client_params\n\n\ndef handle_node_type(node_type, class_object, params: Dict):\n    if node_type == 'ZeroShotPrompt':\n        params = check_tools_in_params(params)\n        prompt = ZeroShotAgent.create_prompt(**params)\n    elif 'MessagePromptTemplate' in node_type:\n        prompt = instantiate_from_template(class_object, params)\n    elif node_type == 'ChatPromptTemplate':\n        prompt = class_object.from_messages(**params)\n    elif hasattr(class_object, 'from_template') and params.get('template'):\n        prompt = class_object.from_template(template=params.pop('template'),\n                                            output_parser=params.get('output_parser'))\n    else:\n        prompt = class_object(**params)\n    return params, prompt\n\n\ndef check_tools_in_params(params: Dict):\n    if 'tools' not in params:\n        params['tools'] = []\n    return params\n\n\ndef instantiate_from_template(class_object, params: Dict):\n    from_template_params = {'template': params.pop('prompt', params.pop('template', ''))}\n    from_template_params.update(params)\n    if not from_template_params.get('template'):\n        raise ValueError('Prompt template is required')\n    if class_object.__name__ in ('HumanMessagePromptTemplate', 'SystemMessagePromptTemplate'):\n        from_template_params['template'] = from_template_params['template'][0].template\n    return class_object.from_template(**from_template_params)\n\n\ndef handle_format_kwargs(prompt, params: Dict):\n    format_kwargs: Dict[str, Any] = {}\n    for input_variable in prompt.input_variables:\n        if input_variable in params:\n            format_kwargs = handle_variable(params, input_variable, format_kwargs)\n\n    return format_kwargs\n\n\ndef handle_partial_variables(prompt, format_kwargs: Dict):\n    partial_variables = format_kwargs.copy()\n    partial_variables = {key: value for key, value in partial_variables.items() if value}\n    # Remove handle_keys otherwise LangChain raises an error\n    partial_variables.pop('handle_keys', None)\n    if partial_variables and hasattr(prompt, 'partial'):\n        return prompt.partial(**partial_variables)\n    return prompt\n\n\ndef handle_variable(params: Dict, input_variable: str, format_kwargs: Dict):\n    variable = params[input_variable]\n    if isinstance(variable, str):\n        format_kwargs[input_variable] = variable\n    elif isinstance(variable, dict):\n        # variable node Special treated\n        if len(variable) == 0:\n            format_kwargs[input_variable] = ''\n        elif len(variable) != 1:\n            raise ValueError(f'VariableNode contains multi-key {variable.keys()}')\n        else:\n            format_kwargs[input_variable] = list(variable.values())[0]\n    elif isinstance(variable, BaseOutputParser) and hasattr(variable, 'get_format_instructions'):\n        format_kwargs[input_variable] = variable.get_format_instructions()\n    elif is_instance_of_list_or_document(variable):\n        format_kwargs = format_document(variable, input_variable, format_kwargs)\n    if needs_handle_keys(variable):\n        format_kwargs = add_handle_keys(input_variable, format_kwargs)\n    return format_kwargs\n\n\ndef is_instance_of_list_or_document(variable):\n    return (isinstance(variable, List) and all(isinstance(item, Document) for item in variable)\n            or isinstance(variable, Document))\n\n\ndef format_document(variable, input_variable: str, format_kwargs: Dict):\n    variable = variable if isinstance(variable, List) else [variable]\n    content = format_content(variable)\n    format_kwargs[input_variable] = content\n    return format_kwargs\n\n\ndef format_content(variable):\n    if len(variable) > 1:\n        return '\\n'.join([item.page_content for item in variable if item.page_content])\n    elif len(variable) == 1:\n        content = variable[0].page_content\n        return try_to_load_json(content)\n    return ''\n\n\ndef try_to_load_json(content):\n    with contextlib.suppress(json.JSONDecodeError):\n        content = orjson.loads(content)\n        if isinstance(content, list):\n            content = ','.join([str(item) for item in content])\n        else:\n            content = orjson_dumps(content)\n    return content\n\n\ndef needs_handle_keys(variable):\n    return is_instance_of_list_or_document(variable) or (isinstance(\n        variable, BaseOutputParser) and hasattr(variable, 'get_format_instructions'))\n\n\ndef add_handle_keys(input_variable: str, format_kwargs: Dict):\n    if 'handle_keys' not in format_kwargs:\n        format_kwargs['handle_keys'] = []\n    format_kwargs['handle_keys'].append(input_variable)\n    return format_kwargs\n"
  },
  {
    "path": "src/backend/bisheng/interface/initialize/vector_store.py",
    "content": "import ast\nimport json\nimport os\nfrom typing import Any, Callable, Dict, Type\n\nfrom langchain_community.vectorstores import (FAISS, Chroma, Milvus, MongoDBAtlasVectorSearch,\n                                              Pinecone, Qdrant, SupabaseVectorStore, Weaviate)\nfrom loguru import logger\nfrom sqlmodel import select\n\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao\nfrom bisheng.llm.domain import LLMService\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch\n\n\ndef docs_in_params(params: dict) -> bool:\n    \"\"\"Check if params has documents OR texts and one of them is not an empty list,\n    If any of them is not an empty list, return True, else return False\"\"\"\n    return ('documents' in params and params['documents']) or ('texts' in params\n                                                               and params['texts'])\n\n\ndef initialize_mongodb(class_object: Type[MongoDBAtlasVectorSearch], params: dict, search: dict):\n    \"\"\"Initialize mongodb and return the class object\"\"\"\n\n    MONGODB_ATLAS_CLUSTER_URI = params.pop('mongodb_atlas_cluster_uri')\n    if not MONGODB_ATLAS_CLUSTER_URI:\n        raise ValueError('Mongodb atlas cluster uri must be provided in the params')\n    from pymongo import MongoClient\n    import certifi\n\n    client: MongoClient = MongoClient(MONGODB_ATLAS_CLUSTER_URI, tlsCAFile=certifi.where())\n    db_name = params.pop('db_name', None)\n    collection_name = params.pop('collection_name', None)\n    if not db_name or not collection_name:\n        raise ValueError('db_name and collection_name must be provided in the params')\n\n    index_name = params.pop('index_name', None)\n    if not index_name:\n        raise ValueError('index_name must be provided in the params')\n\n    collection = client[db_name][collection_name]\n    if not docs_in_params(params):\n        # __init__ requires collection, embedding and index_name\n        init_args = {\n            'collection': collection,\n            'index_name': index_name,\n            'embedding': params.get('embedding'),\n        }\n\n        return class_object(**init_args)\n\n    if 'texts' in params:\n        params['documents'] = params.pop('texts')\n\n    params['collection'] = collection\n    params['index_name'] = index_name\n\n    return class_object.from_documents(**params)\n\n\ndef initialize_supabase(class_object: Type[SupabaseVectorStore], params: dict, search: dict):\n    \"\"\"Initialize supabase and return the class object\"\"\"\n    from supabase.client import Client, create_client\n\n    if 'supabase_url' not in params or 'supabase_service_key' not in params:\n        raise ValueError('Supabase url and service key must be provided in the params')\n    if 'texts' in params:\n        params['documents'] = params.pop('texts')\n\n    client_kwargs = {\n        'supabase_url': params.pop('supabase_url'),\n        'supabase_key': params.pop('supabase_service_key'),\n    }\n\n    supabase: Client = create_client(**client_kwargs)\n    if not docs_in_params(params):\n        params.pop('documents', None)\n        params.pop('texts', None)\n        return class_object(client=supabase, **params)\n    # If there are docs in the params, create a new index\n\n    return class_object.from_documents(client=supabase, **params)\n\n\ndef initialize_weaviate(class_object: Type[Weaviate], params: dict, search: dict):\n    \"\"\"Initialize weaviate and return the class object\"\"\"\n    if not docs_in_params(params):\n        import weaviate  # type: ignore\n\n        client_kwargs_json = params.get('client_kwargs', '{}')\n        client_kwargs = json.loads(client_kwargs_json)\n        client_params = {\n            'url': params.get('weaviate_url'),\n        }\n        client_params.update(client_kwargs)\n        weaviate_client = weaviate.Client(**client_params)\n\n        new_params = {\n            'client': weaviate_client,\n            'index_name': params.get('index_name'),\n            'text_key': params.get('text_key'),\n        }\n        return class_object(**new_params)\n    # If there are docs in the params, create a new index\n    if 'texts' in params:\n        params['documents'] = params.pop('texts')\n\n    return class_object.from_documents(**params)\n\n\ndef initialize_faiss(class_object: Type[FAISS], params: dict, search: dict):\n    \"\"\"Initialize faiss and return the class object\"\"\"\n\n    if not docs_in_params(params):\n        return class_object.load_local\n\n    save_local = params.get('save_local')\n    faiss_index = class_object(**params)\n    if save_local:\n        faiss_index.save_local(folder_path=save_local)\n    return faiss_index\n\n\ndef initialize_pinecone(class_object: Type[Pinecone], params: dict, search: dict):\n    \"\"\"Initialize pinecone and return the class object\"\"\"\n\n    import pinecone  # type: ignore\n\n    pinecone_api_key = params.get('pinecone_api_key')\n    pinecone_env = params.get('pinecone_env')\n\n    if pinecone_api_key is None or pinecone_env is None:\n        if os.getenv('PINECONE_API_KEY') is not None:\n            pinecone_api_key = os.getenv('PINECONE_API_KEY')\n        if os.getenv('PINECONE_ENV') is not None:\n            pinecone_env = os.getenv('PINECONE_ENV')\n\n    if pinecone_api_key is None or pinecone_env is None:\n        raise ValueError('Pinecone API key and environment must be provided in the params')\n\n    # initialize pinecone\n    pinecone.init(\n        api_key=pinecone_api_key,  # find at app.pinecone.io\n        environment=pinecone_env,  # next to api key in console\n    )\n\n    # If there are no docs in the params, return an existing index\n    # but first remove any texts or docs keys from the params\n    if not docs_in_params(params):\n        existing_index_params = {\n            'embedding': params.pop('embedding'),\n        }\n        if 'index_name' in params:\n            existing_index_params['index_name'] = params.pop('index_name')\n        if 'namespace' in params:\n            existing_index_params['namespace'] = params.pop('namespace')\n\n        return class_object.from_existing_index(**existing_index_params)\n    # If there are docs in the params, create a new index\n    if 'texts' in params:\n        params['documents'] = params.pop('texts')\n    return class_object.from_documents(**params)\n\n\ndef initialize_chroma(class_object: Type[Chroma], params: dict, search: dict):\n    \"\"\"Initialize a ChromaDB object from the params\"\"\"\n    persist = params.pop('persist', False)\n    if not docs_in_params(params):\n        params.pop('documents', None)\n        params.pop('texts', None)\n        params['embedding_function'] = params.pop('embedding')\n        chromadb = class_object(**params)\n    else:\n        if 'texts' in params:\n            params['documents'] = params.pop('texts')\n        for doc in params['documents']:\n            if doc.metadata is None:\n                doc.metadata = {}\n            for key, value in doc.metadata.items():\n                if value is None:\n                    doc.metadata[key] = ''\n        chromadb = class_object.from_documents(**params)\n    if persist:\n        chromadb.persist()\n    return chromadb\n\n\ndef initialize_qdrant(class_object: Type[Qdrant], params: dict, search: dict):\n    if not docs_in_params(params):\n        if 'location' not in params and 'api_key' not in params:\n            raise ValueError('Location and API key must be provided in the params')\n        from qdrant_client import QdrantClient\n\n        client_params = {\n            'location': params.pop('location'),\n            'api_key': params.pop('api_key'),\n        }\n        lc_params = {\n            'collection_name': params.pop('collection_name'),\n            'embeddings': params.pop('embedding'),\n        }\n        client = QdrantClient(**client_params)\n\n        return class_object(client=client, **lc_params)\n\n    return class_object.from_documents(**params)\n\n\ndef initial_milvus(class_object: Type[Milvus], params: dict, search_kwargs: dict):\n    if not params.get('connection_args') and settings.get_vectors_conf().milvus.connection_args:\n        params['connection_args'] = settings.get_vectors_conf().milvus.connection_args\n    elif isinstance(params.get('connection_args'), str):\n        print(f\"milvus before params={params} type={type(params['connection_args'])}\")\n        params['connection_args'] = json.loads(params.pop('connection_args'))\n    if 'embedding' not in params:\n        # Matching Knowledge Base'sembedding\n        col = params['collection_name']\n        collection_id = params.pop('collection_id', '')\n        with get_sync_db_session() as session:\n            if collection_id:\n                knowledge = session.get(Knowledge, collection_id)\n                params['collection_name'] = knowledge.collection_name\n            else:\n                knowledge = session.exec(\n                    select(Knowledge).where(Knowledge.collection_name == col)).first()\n\n        if not knowledge:\n            raise ValueError(f'Unable to find knowledge basecollection={col} knowledge_id={collection_id}')\n        params['embedding'] = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n        if knowledge.collection_name.startswith('partition'):\n            search_kwargs.update({'partition_key': knowledge.id})\n            params['partition_key'] = knowledge.id\n    logger.info('init_milvus collection_name={} partition={}', params['collection_name'],\n                search_kwargs)\n    return class_object.from_documents(**params)\n\n\ndef initial_elastic(class_object: Type[ElasticKeywordsSearch], params: dict, search: dict):\n    if not params.get('elasticsearch_url') and settings.get_vectors_conf().elasticsearch.elasticsearch_url:\n        params['elasticsearch_url'] = settings.get_vectors_conf().elasticsearch.elasticsearch_url\n\n    if not params.get('ssl_verify') and settings.get_vectors_conf().elasticsearch.ssl_verify:\n        params['ssl_verify'] = settings.get_vectors_conf().elasticsearch.ssl_verify\n    if isinstance(params.get('ssl_verify'), str):\n        params['ssl_verify'] = ast.literal_eval(params['ssl_verify'])\n\n    collection_id = params.pop('collection_id', '')\n    if collection_id:\n        with get_sync_db_session() as session:\n            knowledge = session.get(Knowledge, collection_id)\n        index_name = knowledge.index_name or knowledge.collection_name\n        params['index_name'] = index_name\n    params['embedding'] = ''\n    return class_object.from_documents(**params)\n\n\ndef initial_elastic_vector(class_object: Type[ElasticKeywordsSearch], params: dict, search: dict):\n    params.update(params.pop('connect_kwargs'))\n    collection_id = params.pop('collection_id', '')\n    if collection_id:\n        knowledge = KnowledgeDao.query_by_id(collection_id)\n        index_name = knowledge.index_name or knowledge.collection_name\n        params['index_name'] = index_name\n        params['embedding'] = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n    if params['documents']:\n        return class_object.from_documents(**params)\n    else:\n        params.pop('documents')\n        return class_object(**params)\n\n\nvecstore_initializer: Dict[str, Callable[[Type[Any], dict], Any]] = {\n    'Pinecone': initialize_pinecone,\n    'Chroma': initialize_chroma,\n    'Qdrant': initialize_qdrant,\n    'Weaviate': initialize_weaviate,\n    'FAISS': initialize_faiss,\n    'Milvus': initial_milvus,\n    'MilvusWithPermissionCheck': initial_milvus,\n    'ElasticsearchStore': initial_elastic_vector,\n    'ElasticKeywordsSearch': initial_elastic,\n    'ElasticsearchWithPermissionCheck': initial_elastic,\n    'SupabaseVectorStore': initialize_supabase,\n    'MongoDBAtlasVectorSearch': initialize_mongodb,\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/inputoutput/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/inputoutput/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.input_output import InputOutputNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\nfrom bisheng_langchain import input_output\n\n\nclass IOutputCreator(LangChainTypeCreator):\n    type_name: str = 'input_output'\n\n    @property\n    def frontend_node_class(self) -> Type[FrontendNode]:\n        return InputOutputNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = {}\n            # bisheng-langchain\n            bisheng = {\n                node_name: import_class(f'bisheng_langchain.input_output.{node_name}')\n                for node_name in input_output.__all__\n            }\n            self.type_dict.update(bisheng)\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of an llm.\"\"\"\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            return build_template_from_class(\n                name,\n                type_to_cls_dict=self.type_to_loader_dict,\n            )\n        except ValueError as exc:\n            raise ValueError('LLM not found') from exc\n\n        except AttributeError as exc:\n            logger.error(f'LLM {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return self.type_to_loader_dict.keys()\n\n\ninput_output_creator = IOutputCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/listing.py",
    "content": "from bisheng.utils.lazy_load import LazyLoadDictBase\n\n# from bisheng.interface.agents.base import agent_creator\n# from bisheng.interface.autogenRole.base import autogenrole_creator\n# from bisheng.interface.chains.base import chain_creator\n# from bisheng.interface.document_loaders.base import documentloader_creator\n# from bisheng.interface.embeddings.base import embedding_creator\n# from bisheng.interface.inputoutput.base import input_output_creator\n# from bisheng.interface.llms.base import llm_creator\n# from bisheng.interface.memories.base import memory_creator\n# from bisheng.interface.output_parsers.base import output_parser_creator\n# from bisheng.interface.prompts.base import prompt_creator\n# from bisheng.interface.retrievers.base import retriever_creator\n# from bisheng.interface.text_splitters.base import textsplitter_creator\n# from bisheng.interface.toolkits.base import toolkits_creator\n# from bisheng.interface.tools.base import tool_creator\n# from bisheng.interface.utilities.base import utility_creator\n# from bisheng.interface.vector_store.base import vectorstore_creator\n# from bisheng.interface.wrappers.base import wrapper_creator\n\n# def get_type_dict():\n#     return {\n#         'agents': agent_creator.to_list(),\n#         'prompts': prompt_creator.to_list(),\n#         'llms': llm_creator.to_list(),\n#         'tools': tool_creator.to_list(),\n#         'chains': chain_creator.to_list(),\n#         'memory': memory_creator.to_list(),\n#         'toolkits': toolkits_creator.to_list(),\n#         'wrappers': wrapper_creator.to_list(),\n#         'documentLoaders': documentloader_creator.to_list(),\n#         'vectorStore': vectorstore_creator.to_list(),\n#         'embeddings': embedding_creator.to_list(),\n#         'textSplitters': textsplitter_creator.to_list(),\n#         'utilities': utility_creator.to_list(),\n#         'outputParsers': output_parser_creator.to_list(),\n#         'retrievers': retriever_creator.to_list(),\n#         'inputOutput': input_output_creator.to_list(),\n#         'autogenRoles': autogenrole_creator.to_list(),\n#     }\n\n# LANGCHAIN_TYPES_DICT = get_type_dict()\n\n# # Now we'll build a dict with Langchain types and ours\n\n# ALL_TYPES_DICT = {\n#     **LANGCHAIN_TYPES_DICT,\n#     'Custom': ['Custom Tool', 'Python Function'],\n# }\n\n\nclass AllTypesDict(LazyLoadDictBase):\n\n    def __init__(self):\n        self._all_types_dict = None\n\n    @property\n    def ALL_TYPES_DICT(self):\n        return self.all_types_dict\n\n    def _build_dict(self):\n        langchain_types_dict = self.get_type_dict()\n        return {\n            **langchain_types_dict,\n            'Custom': ['Custom Tool', 'Python Function'],\n        }\n\n    def get_type_dict(self):\n        from bisheng.interface.types import get_all_types_dict\n\n        return get_all_types_dict()\n\n\nlazy_load_dict = AllTypesDict()\n"
  },
  {
    "path": "src/backend/bisheng/interface/llms/__init__.py",
    "content": "from bisheng.interface.llms.base import LLMCreator\n\n__all__ = ['LLMCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/llms/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.custom_lists import llm_type_to_cls_dict\nfrom bisheng.llm.domain.llm import BishengLLM\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.llms import LLMFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\n\n\nclass LLMCreator(LangChainTypeCreator):\n    type_name: str = 'llms'\n\n    @property\n    def frontend_node_class(self) -> Type[LLMFrontendNode]:\n        return LLMFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = llm_type_to_cls_dict\n            self.type_dict.update({\n                'BishengLLM': BishengLLM,\n            })\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of an llm.\"\"\"\n        try:\n            return build_template_from_class(name, llm_type_to_cls_dict)\n        except ValueError as exc:\n            raise ValueError('LLM not found') from exc\n\n        except AttributeError as exc:\n            logger.error(f'LLM {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            llm.__name__\n            for llm in self.type_to_loader_dict.values()\n            if llm.__name__ in settings.llms or settings.dev\n        ]\n\n\nllm_creator = LLMCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/memories/__init__.py",
    "content": "from bisheng.interface.memories.base import MemoryCreator\n\n__all__ = ['MemoryCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/memories/base.py",
    "content": "from typing import ClassVar, Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.custom_lists import memory_type_to_cls_dict\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.memories import MemoryFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\n\n\nclass MemoryCreator(LangChainTypeCreator):\n    type_name: str = 'memories'\n\n    from_method_nodes: ClassVar[Dict] = {\n        'ZepChatMessageHistory': '__init__',\n        'SQLiteEntityStore': '__init__',\n    }\n\n    @property\n    def frontend_node_class(self) -> Type[FrontendNode]:\n        \"\"\"The class type of the FrontendNode created in frontend_node.\"\"\"\n        return MemoryFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = memory_type_to_cls_dict\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of a memory.\"\"\"\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            elif name in self.from_method_nodes:\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=memory_type_to_cls_dict,\n                    method_name=self.from_method_nodes[name],\n                )\n            return build_template_from_class(name, memory_type_to_cls_dict)\n        except ValueError as exc:\n            raise ValueError('Memory not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Memory {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            memory.__name__ for memory in self.type_to_loader_dict.values()\n            if memory.__name__ in settings.memories or settings.dev\n        ]\n\n\nmemory_creator = MemoryCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/output_parsers/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/output_parsers/base.py",
    "content": "from typing import ClassVar, Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.output_parsers import OutputParserFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\nfrom langchain import output_parsers\n\n\nclass OutputParserCreator(LangChainTypeCreator):\n    type_name: str = 'output_parsers'\n    from_method_nodes: ClassVar[Dict] = {\n        'StructuredOutputParser': 'from_response_schemas',\n    }\n\n    @property\n    def frontend_node_class(self) -> Type[OutputParserFrontendNode]:\n        return OutputParserFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = {}\n            for output_parser_name in output_parsers.__all__:\n                if not settings.dev and output_parser_name not in settings.output_parsers:\n                    continue\n                if output_parser_name == \"GuardrailsOutputParser\":\n                    self.type_dict[output_parser_name] = import_class(f'langchain_community.output_parsers.rail_parser.{output_parser_name}')\n                else:\n                    self.type_dict[output_parser_name] = import_class(f'langchain.output_parsers.{output_parser_name}')\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            if name in self.from_method_nodes:\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                    method_name=self.from_method_nodes[name],\n                )\n            # elif name in get_custom_nodes(self.type_name).keys():\n            #     return get_custom_nodes(self.type_name)[name]\n            else:\n                return build_template_from_class(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                )\n        except ValueError as exc:\n            # raise ValueError(\"OutputParser not found\") from exc\n            logger.error(f'OutputParser {name} not found: {exc}')\n        except AttributeError as exc:\n            logger.error(f'OutputParser {name} not loaded: {exc}')\n        return None\n\n    def to_list(self) -> List[str]:\n        return list(self.type_to_loader_dict.keys())\n\n\noutput_parser_creator = OutputParserCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/prompts/__init__.py",
    "content": "from bisheng.interface.prompts.base import PromptCreator\n\n__all__ = ['PromptCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/prompts/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.prompts import PromptFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\nfrom langchain import prompts\n\n\nclass PromptCreator(LangChainTypeCreator):\n    type_name: str = 'prompts'\n\n    @property\n    def frontend_node_class(self) -> Type[PromptFrontendNode]:\n        return PromptFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = {\n                prompt_name: import_class(f'langchain.prompts.{prompt_name}')\n                # if prompt_name is not lower case it is a class\n                for prompt_name in prompts.__all__\n            }\n            # Merge CUSTOM_PROMPTS into self.type_dict\n            from bisheng.interface.prompts.custom import CUSTOM_PROMPTS\n\n            self.type_dict.update(CUSTOM_PROMPTS)\n            # Now filter according to settings.prompts\n            self.type_dict = {\n                name: prompt\n                for name, prompt in self.type_dict.items()\n                if name in settings.prompts or settings.dev\n            }\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            if name in get_custom_nodes(self.type_name).keys():\n                return get_custom_nodes(self.type_name)[name]\n            return build_template_from_class(name, self.type_to_loader_dict)\n        except ValueError as exc:\n            # raise ValueError(\"Prompt not found\") from exc\n            logger.error(f'Prompt {name} not found: {exc}')\n        except AttributeError as exc:\n            logger.error(f'Prompt {name} not loaded: {exc}')\n        return None\n\n    def to_list(self) -> List[str]:\n        custom_prompts = get_custom_nodes('prompts')\n        # library_prompts = [\n        #     prompt.__annotations__[\"return\"].__name__\n        #     for prompt in self.type_to_loader_dict.values()\n        #     if prompt.__annotations__[\"return\"].__name__ in settings.prompts\n        #     or settings.dev\n        # ]\n        return list(self.type_to_loader_dict.keys()) + list(custom_prompts.keys())\n\n\nprompt_creator = PromptCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/prompts/custom.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.interface.utils import extract_input_variables_from_prompt\nfrom langchain.prompts import PromptTemplate\nfrom pydantic import model_validator\n\n# Steps to create a BaseCustomPrompt:\n# 1. Create a prompt template that endes with:\n#    Current conversation:\n#     {history}\n#    Human: {input}\n#    {ai_prefix}:\n# 2. Create a class that inherits from BaseCustomPrompt\n# 3. Add the following class attributes:\n#    template: str = \"\"\n#    description: Optional[str]\n#    ai_prefix: Optional[str] = \"{ai_prefix}\"\n# 3.1. The ai_prefix should be a value in input_variables\n# SeriesCharacterPrompt is a working example\n# If used in a LLMChain, with a Memory module, it will work as expected\n# We should consider creating ConversationalChains that expose custom parameters\n# That way it will be easier to create custom prompts\n\n\nclass BaseCustomPrompt(PromptTemplate):\n    template: str = ''\n    description: Optional[str]\n    ai_prefix: Optional[str]\n\n    @model_validator(mode='before')\n    @classmethod\n    def build_template(cls, values):\n        format_dict = {}\n        ai_prefix_format_dict = {}\n        for key in values.get('input_variables', []):\n            new_value = values.get(key, f'{{{key}}}')\n            format_dict[key] = new_value\n            if key in values['ai_prefix']:\n                ai_prefix_format_dict[key] = new_value\n\n        values['ai_prefix'] = values['ai_prefix'].format(**ai_prefix_format_dict)\n        values['template'] = values['template'].format(**format_dict)\n\n        values['template'] = values['template']\n        values['input_variables'] = extract_input_variables_from_prompt(\n            values['template']\n        )\n        return values\n\n\nclass SeriesCharacterPrompt(BaseCustomPrompt):\n    # Add a very descriptive description for the prompt generator\n    description: Optional[\n        str\n    ] = 'A prompt that asks the AI to act like a character from a series.'\n    character: str\n    series: str\n    template: str = \"\"\"I want you to act like {character} from {series}.\nI want you to respond and answer like {character}. do not write any explanations. only answer like {character}.\nYou must know all of the knowledge of {character}.\n\nCurrent conversation:\n{history}\nHuman: {input}\n{character}:\"\"\"\n\n    ai_prefix: str = '{character}'\n    input_variables: List[str] = ['character', 'series']\n\n\nCUSTOM_PROMPTS: Dict[str, Type[BaseCustomPrompt]] = {\n    'SeriesCharacterPrompt': SeriesCharacterPrompt\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/retrievers/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/retrievers/base.py",
    "content": "from typing import Any, ClassVar, Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.retrievers import RetrieverFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\nfrom bisheng_langchain import retrievers as bisheng_retrievers\nfrom langchain.retrievers import MultiQueryRetriever\nfrom langchain_community import retrievers\n\n\nclass RetrieverCreator(LangChainTypeCreator):\n    type_name: str = 'retrievers'\n\n    from_method_nodes: ClassVar[Dict] = {\n        'MultiQueryRetriever': 'from_llm',\n        'ZepRetriever': '__init__'\n    }\n\n    @property\n    def frontend_node_class(self) -> Type[RetrieverFrontendNode]:\n        return RetrieverFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict: dict[str, Any] = {\n                retriever_name: import_class(f'langchain_community.retrievers.{retriever_name}')\n                for retriever_name in retrievers.__all__\n            }\n\n            self.type_dict.update({\n                retriever_name:\n                import_class(f'bisheng_langchain.retrievers.{retriever_name}')\n                for retriever_name in bisheng_retrievers.__all__\n            })\n            self.type_dict['MultiQueryRetriever'] = MultiQueryRetriever\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of an embedding.\"\"\"\n        try:\n            if name in self.from_method_nodes:\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                    method_name=self.from_method_nodes[name],\n                )\n            else:\n                return build_template_from_class(name, type_to_cls_dict=self.type_to_loader_dict)\n        except ValueError as exc:\n            raise ValueError(f'Retriever {name} not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Retriever {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            retriever for retriever in self.type_to_loader_dict.keys()\n            if retriever in settings.retrievers or settings.dev\n        ]\n\n\nretriever_creator = RetrieverCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/run.py",
    "content": "from typing import Dict, Optional, Tuple, Union\nfrom uuid import UUID\n\nfrom bisheng.core.cache.utils import memoize_dict\nfrom bisheng.graph import Graph\nfrom loguru import logger\n\n\n@memoize_dict(maxsize=10)\ndef build_langchain_object_with_caching(data_graph):\n    \"\"\"\n    Build langchain object from data_graph.\n    \"\"\"\n\n    logger.debug('Building langchain object')\n    graph = Graph.from_payload(data_graph)\n    return graph.build()\n\n\n@memoize_dict(maxsize=10)\ndef build_sorted_vertices_with_caching(data_graph):\n    \"\"\"\n    Build langchain object from data_graph.\n    \"\"\"\n\n    logger.debug('Building langchain object')\n    graph = Graph.from_payload(data_graph)\n    sorted_vertices = graph.topological_sort()\n    artifacts = {}\n    for vertex in sorted_vertices:\n        vertex.build()\n        if vertex.artifacts:\n            artifacts.update(vertex.artifacts)\n    root = graph.build()\n    langchain_object = next((node for node in root if node.base_type != 'inputOutput'), None)\n    return langchain_object.build(), artifacts\n\n\ndef build_langchain_object(data_graph):\n    \"\"\"\n    Build langchain object from data_graph.\n    \"\"\"\n\n    logger.debug('Building langchain object')\n    nodes = data_graph['nodes']\n    # Add input variables\n    # nodes = payload.extract_input_variables(nodes)\n    # Nodes, edges and root node\n    edges = data_graph['edges']\n    graph = Graph(nodes, edges)\n\n    return graph.build()\n\n\nasync def build_sorted_vertices(data_graph,\n                                user_id: Optional[Union[str, UUID]] = None) -> Tuple[Graph, Dict]:\n    \"\"\"\n    Build langchain object from data_graph.\n    \"\"\"\n\n    logger.debug('Building langchain object')\n    graph = Graph.from_payload(data_graph)\n    sorted_vertices = graph.topological_sort()\n    artifacts = {}\n    for vertex in sorted_vertices:\n        vertex.build()\n        if vertex.artifacts:\n            artifacts.update(vertex.artifacts)\n    return graph, artifacts\n\n\ndef get_memory_key(langchain_object):\n    \"\"\"\n    Given a LangChain object, this function retrieves the current memory key from the object's memory attribute.\n    It then checks if the key exists in a dictionary of known memory keys and returns the corresponding key,\n    or None if the current key is not recognized.\n    \"\"\"\n    mem_key_dict = {\n        'chat_history': 'history',\n        'history': 'chat_history',\n    }\n    memory_key = langchain_object.memory.memory_key\n    return mem_key_dict.get(memory_key)\n\n\ndef update_memory_keys(langchain_object, possible_new_mem_key):\n    \"\"\"\n    Given a LangChain object and a possible new memory key, this function updates the input and output keys in the\n    object's memory attribute to exclude the current memory key and the possible new key. It then sets the memory key\n    to the possible new key.\n    \"\"\"\n    input_key = [\n        key for key in langchain_object.input_keys\n        if key not in [langchain_object.memory.memory_key, possible_new_mem_key]\n    ][0]\n\n    output_key = [\n        key for key in langchain_object.output_keys\n        if key not in [langchain_object.memory.memory_key, possible_new_mem_key]\n    ][0]\n\n    keys = [input_key, output_key, possible_new_mem_key]\n    attrs = ['input_key', 'output_key', 'memory_key']\n    for key, attr in zip(keys, attrs):\n        try:\n            setattr(langchain_object.memory, attr, key)\n        except ValueError as exc:\n            logger.debug(f'{langchain_object.memory} has no attribute {attr} ({exc})')\n"
  },
  {
    "path": "src/backend/bisheng/interface/text_splitters/__init__.py",
    "content": "from bisheng.interface.text_splitters.base import TextSplitterCreator\n\n__all__ = ['TextSplitterCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/text_splitters/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.custom_lists import textsplitter_type_to_cls_dict\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.textsplitters import \\\n    TextSplittersFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\n\n\nclass TextSplitterCreator(LangChainTypeCreator):\n    type_name: str = 'textsplitters'\n\n    @property\n    def frontend_node_class(self) -> Type[TextSplittersFrontendNode]:\n        return TextSplittersFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        return textsplitter_type_to_cls_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of a text splitter.\"\"\"\n        try:\n            return build_template_from_class(name, textsplitter_type_to_cls_dict)\n        except ValueError as exc:\n            raise ValueError(f'Text Splitter {name} not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Text Splitter {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            textsplitter.__name__\n            for textsplitter in self.type_to_loader_dict.values()\n            if textsplitter.__name__ in settings.textsplitters or settings.dev\n        ]\n\n\ntextsplitter_creator = TextSplitterCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/toolkits/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/toolkits/base.py",
    "content": "from typing import Callable, Dict, List, Optional\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class, import_module\nfrom bisheng.common.services.config_service import settings\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\nfrom langchain.agents.agent_toolkits.vectorstore.toolkit import (VectorStoreInfo,\n                                                                 VectorStoreRouterToolkit,\n                                                                 VectorStoreToolkit)\nfrom langchain_community import agent_toolkits\n\n\nclass ToolkitCreator(LangChainTypeCreator):\n    type_name: str = 'toolkits'\n    all_types: List[str] = agent_toolkits.__all__\n    create_functions: Dict = {\n        'JsonToolkit': [],\n        'SQLDatabaseToolkit': [],\n        'OpenAPIToolkit': ['create_openapi_agent'],\n        'VectorStoreToolkit': [\n            'create_vectorstore_agent',\n            'create_vectorstore_router_agent',\n            'VectorStoreInfo',\n        ],\n        'ZapierToolkit': [],\n        'PandasToolkit': ['create_pandas_dataframe_agent'],\n        'CSVToolkit': ['create_csv_agent'],\n    }\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = {\n                toolkit_name: import_class(f'langchain_community.agent_toolkits.{toolkit_name}')\n                # if toolkit_name is not lower case it is a class\n                for toolkit_name in agent_toolkits.__all__\n                if not toolkit_name.islower() and toolkit_name in settings.toolkits\n            }\n            self.type_dict.update({\n                'VectorStoreToolkit': VectorStoreToolkit,\n                'VectorStoreInfo': VectorStoreInfo,\n                'VectorStoreRouterToolkit': VectorStoreRouterToolkit\n            })\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            template = build_template_from_class(name, self.type_to_loader_dict)\n            # add Tool to base_classes\n            if 'toolkit' in name.lower() and template:\n                template['base_classes'].append('Tool')\n            return template\n        except ValueError as exc:\n            raise ValueError('Toolkit not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Toolkit {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return list(self.type_to_loader_dict.keys())\n\n    def get_create_function(self, name: str) -> Callable:\n        if loader_name := self.create_functions.get(name):\n            return import_module(\n                f'from langchain_community.agent_toolkits import {loader_name[0]}')\n        else:\n            raise ValueError('Toolkit not found')\n\n    def has_create_function(self, name: str) -> bool:\n        # check if the function list is not empty\n        return bool(self.create_functions.get(name, None))\n\n\ntoolkits_creator = ToolkitCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/toolkits/custom.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/tools/__init__.py",
    "content": "from bisheng.interface.tools.base import ToolCreator\n\n__all__ = ['ToolCreator']\n"
  },
  {
    "path": "src/backend/bisheng/interface/tools/base.py",
    "content": "from typing import Dict, List, Optional\n\nfrom bisheng.custom import customs\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.tools.constants import ALL_TOOLS_NAMES, CUSTOM_TOOLS, FILE_TOOLS, OTHER_TOOLS\nfrom bisheng.interface.tools.util import get_tool_params\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.template.base import Template\nfrom bisheng.utils import util\nfrom bisheng.utils.util import build_template_from_class\nfrom langchain_community.agent_toolkits.load_tools import _EXTRA_LLM_TOOLS, _EXTRA_OPTIONAL_TOOLS, _LLM_TOOLS\n\nTOOL_INPUTS = {\n    'str':\n    TemplateField(\n        field_type='str',\n        required=True,\n        is_list=False,\n        show=True,\n        placeholder='',\n        value='',\n    ),\n    'llm':\n    TemplateField(field_type='BaseLanguageModel', required=True, is_list=False, show=True),\n    'func':\n    TemplateField(\n        field_type='function',\n        required=True,\n        is_list=False,\n        show=True,\n        multiline=True,\n    ),\n    'code':\n    TemplateField(\n        field_type='str',\n        required=True,\n        is_list=False,\n        show=True,\n        value='',\n        multiline=True,\n    ),\n    'path':\n    TemplateField(\n        field_type='file',\n        required=True,\n        is_list=False,\n        show=True,\n        value='',\n        suffixes=['.json', '.yaml', '.yml'],\n        fileTypes=['json', 'yaml', 'yml'],\n    ),\n}\n\n\nclass ToolCreator(LangChainTypeCreator):\n    type_name: str = 'tools'\n    tools_dict: Optional[Dict] = None\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.tools_dict is None:\n            all_tools = {}\n\n            for tool, tool_fcn in ALL_TOOLS_NAMES.items():\n                tool_params = get_tool_params(tool_fcn)\n\n                tool_name = tool_params.get('name') or tool\n\n                if tool_name in settings.tools or settings.dev:\n                    if tool_name == 'JsonSpec':\n                        tool_params['path'] = tool_params.pop('dict_')  # type: ignore\n                    all_tools[tool_name] = {\n                        'type': tool,\n                        'params': tool_params,\n                        'fcn': tool_fcn,\n                    }\n\n            self.tools_dict = all_tools\n\n        return self.tools_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of a tool.\"\"\"\n\n        base_classes = ['Tool', 'BaseTool']\n        fields = []\n        params = []\n        tool_params = {}\n\n        # Raise error if name is not in tools\n        if name not in self.type_to_loader_dict.keys():\n            raise ValueError('Tool not found')\n\n        tool_type: str = self.type_to_loader_dict[name]['type']  # type: ignore\n\n        # if tool_type in _BASE_TOOLS.keys():\n        #     params = []\n        if tool_type in _LLM_TOOLS.keys():\n            params = ['llm']\n        elif tool_type in _EXTRA_LLM_TOOLS.keys():\n            extra_keys = _EXTRA_LLM_TOOLS[tool_type][1]\n            params = ['llm'] + extra_keys\n        elif tool_type in _EXTRA_OPTIONAL_TOOLS.keys():\n            extra_keys = _EXTRA_OPTIONAL_TOOLS[tool_type][1]\n            params = extra_keys\n        # elif tool_type == \"Tool\":\n        #     params = [\"name\", \"description\", \"func\"]\n        elif tool_type in CUSTOM_TOOLS:\n            # Get custom tool params\n            params = self.type_to_loader_dict[name]['params']  # type: ignore\n            base_classes = ['function']\n            if node := customs.get_custom_nodes('tools').get(tool_type):\n                return node\n        elif tool_type in FILE_TOOLS:\n            params = self.type_to_loader_dict[name]['params']  # type: ignore\n            base_classes += [name]\n        elif tool_type in OTHER_TOOLS:\n            tool_dict = build_template_from_class(tool_type, OTHER_TOOLS)\n            fields = tool_dict['template']\n\n            # Pop unnecessary fields and add name\n            fields.pop('_type')  # type: ignore\n            fields.pop('return_direct', None)  # type: ignore\n            fields.pop('verbose', None)  # type: ignore\n\n            tool_params = {\n                'name': fields.pop('name')['value'],  # type: ignore\n                'description': fields.pop('description')['value'],  # type: ignore\n            }\n\n            fields = [\n                TemplateField(name=name, field_type=field['type'], **field)\n                for name, field in fields.items()  # type: ignore\n            ]\n            base_classes += tool_dict['base_classes']\n\n        # Copy the field and add the name\n        for param in params:\n            field = TOOL_INPUTS.get(param, TOOL_INPUTS['str']).copy()\n            field.name = param\n            field.advanced = False\n            if param == 'aiosession':\n                field.show = False\n                field.required = False\n\n            fields.append(field)\n\n        template = Template(fields=fields, type_name=tool_type)\n        # add describe\n        template.add_field(\n            TemplateField(\n                field_type='NestedDict',\n                required=True,\n                placeholder='',\n                show=True,\n                multiline=True,\n                value='{\"arg1\": {\"type\": \"string\"}}',\n                name='args_schema',\n            ), )\n\n        tool_params = {**tool_params, **self.type_to_loader_dict[name]['params']}\n        return {\n            'template': util.format_dict(template.to_dict()),\n            **tool_params,\n            'base_classes': base_classes,\n        }\n\n    def to_list(self) -> List[str]:\n        \"\"\"List all load tools\"\"\"\n\n        return list(self.type_to_loader_dict.keys())\n\n\ntool_creator = ToolCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/tools/constants.py",
    "content": "from bisheng.interface.importing.utils import import_class\nfrom bisheng.interface.tools.custom import PythonFunction, PythonFunctionTool\nfrom langchain_community.tools import Tool\nfrom langchain_community.agent_toolkits.load_tools import (_BASE_TOOLS, _EXTRA_LLM_TOOLS, _EXTRA_OPTIONAL_TOOLS,\n                                                           _LLM_TOOLS)\nfrom langchain_community import tools\nfrom langchain_community.tools.json.tool import JsonSpec\nfrom langchain_experimental import tools as python_tools\n\nFILE_TOOLS = {'JsonSpec': JsonSpec}\nCUSTOM_TOOLS = {\n    'Tool': Tool,\n    'PythonFunctionTool': PythonFunctionTool,\n    'PythonFunction': PythonFunction,\n}\n\nOTHER_TOOLS = {tool: import_class(f'langchain_community.tools.{tool}') for tool in tools.__all__}\nPYTHON_TOOLS = {\n    tool: import_class(f'langchain_experimental.tools.{tool}')\n    for tool in python_tools.__all__\n}\n\nALL_TOOLS_NAMES = {\n    **_BASE_TOOLS,\n    **_LLM_TOOLS,  # type: ignore\n    **{\n        k: v[0]\n        for k, v in _EXTRA_LLM_TOOLS.items()\n    },  # type: ignore\n    **{\n        k: v[0]\n        for k, v in _EXTRA_OPTIONAL_TOOLS.items()\n    },\n    **CUSTOM_TOOLS,\n    **FILE_TOOLS,  # type: ignore\n    **OTHER_TOOLS,\n    **PYTHON_TOOLS\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/tools/custom.py",
    "content": "from typing import Callable, Optional\n\nfrom bisheng.interface.importing.utils import get_function\nfrom bisheng.utils import validate\nfrom langchain_community.tools import Tool\nfrom pydantic import field_validator, BaseModel\n\n\nclass Function(BaseModel):\n    code: str\n    function: Optional[Callable] = None\n    imports: Optional[str] = None\n\n    # Eval code and store the function\n    def __init__(self, **data):\n        super().__init__(**data)\n\n    # Validate the function\n    @field_validator('code')\n    @classmethod\n    def validate_func(cls, v):\n        try:\n            validate.eval_function(v)\n        except Exception as e:\n            raise e\n\n        return v\n\n    def get_function(self):\n        \"\"\"Get the function\"\"\"\n        function_name = validate.extract_function_name(self.code)\n\n        return validate.create_function(self.code, function_name)\n\n\nclass PythonFunctionTool(Tool):\n    \"\"\"Python function\"\"\"\n\n    name: str = 'Custom Tool'\n    description: str\n    code: str\n\n    def ___init__(self, name: str, description: str, code: str):\n        self.name = name\n        self.description = description\n        self.code = code\n        self.func = get_function(self.code)\n        super().__init__(name=name, description=description, func=self.func)\n\n\nclass PythonFunction(Function):\n    \"\"\"Python function\"\"\"\n\n    code: str\n"
  },
  {
    "path": "src/backend/bisheng/interface/tools/util.py",
    "content": "import ast\nimport inspect\nimport textwrap\nfrom typing import Dict, Union\n\nfrom langchain_community.tools import Tool\n\n\ndef get_func_tool_params(func, **kwargs) -> Union[Dict, None]:\n    tree = ast.parse(inspect.getsource(func))\n\n    # Iterate over the statements in the abstract syntax tree\n    for node in ast.walk(tree):\n        # Find the first return statement\n        if isinstance(node, ast.Return):\n            tool = node.value\n            if isinstance(tool, ast.Call):\n                if isinstance(tool.func, ast.Name) and tool.func.id == 'Tool':\n                    if tool.keywords:\n                        tool_params = {}\n                        for keyword in tool.keywords:\n                            if keyword.arg == 'name':\n                                try:\n                                    tool_params['name'] = ast.literal_eval(keyword.value)\n                                except ValueError:\n                                    break\n                            elif keyword.arg == 'description':\n                                try:\n                                    tool_params['description'] = ast.literal_eval(keyword.value)\n                                except ValueError:\n                                    continue\n\n                        return tool_params\n                    return {\n                        'name': ast.literal_eval(tool.args[0]),\n                        'description': ast.literal_eval(tool.args[2]),\n                    }\n                #\n                else:\n                    # get the class object from the return statement\n                    try:\n                        class_obj = eval(compile(ast.Expression(tool), '<string>', 'eval'))\n                    except Exception:\n                        return None\n\n                    return {\n                        'name': getattr(class_obj, 'name'),\n                        'description': getattr(class_obj, 'description'),\n                    }\n        # Return None if no return statement was found\n    return None\n\n\ndef get_class_tool_params(cls, **kwargs) -> Union[Dict, None]:\n    tree = ast.parse(textwrap.dedent(inspect.getsource(cls)))\n\n    tool_params = {}\n\n    # Iterate over the statements in the abstract syntax tree\n    for node in ast.walk(tree):\n        if isinstance(node, ast.ClassDef):\n            # Find the class definition and look for methods\n            for stmt in node.body:\n                if isinstance(stmt, ast.FunctionDef) and stmt.name == '__init__':\n                    # There is no assignment statements in the __init__ method\n                    # So we need to get the params from the function definition\n                    for arg in stmt.args.args:\n                        if arg.arg == 'name':\n                            # It should be the name of the class\n                            tool_params[arg.arg] = cls.__name__\n                        elif arg.arg == 'self':\n                            continue\n                        # If there is not default value, set it to an empty string\n                        else:\n                            try:\n                                annotation = ast.literal_eval(arg.annotation)  # type: ignore\n                                tool_params[arg.arg] = annotation\n                            except ValueError:\n                                tool_params[arg.arg] = ''\n                # Get the attribute name and the annotation\n                elif cls != Tool and isinstance(stmt, ast.AnnAssign):\n                    # Get the attribute name and the annotation\n                    tool_params[stmt.target.id] = ''  # type: ignore\n\n    return tool_params\n\n\ndef get_tool_params(tool, **kwargs) -> Dict:\n    # Parse the function code into an abstract syntax tree\n    # Define if it is a function or a class\n    if inspect.isfunction(tool):\n        return get_func_tool_params(tool, **kwargs) or {}\n    elif inspect.isclass(tool):\n        # Get the parameters necessary to\n        # instantiate the class\n\n        return get_class_tool_params(tool, **kwargs) or {}\n\n    else:\n        raise ValueError('Tool must be a function or class.')\n"
  },
  {
    "path": "src/backend/bisheng/interface/types.py",
    "content": "from pathlib import Path\n\nfrom bisheng.interface.agents.base import agent_creator\nfrom bisheng.interface.autogenRole.base import autogenrole_creator\nfrom bisheng.interface.chains.base import chain_creator\nfrom bisheng.interface.custom.directory_reader.utils import merge_nested_dicts_with_renaming\nfrom bisheng.interface.custom.utils import build_custom_components\nfrom bisheng.interface.document_loaders.base import documentloader_creator\nfrom bisheng.interface.embeddings.base import embedding_creator\nfrom bisheng.interface.inputoutput.base import input_output_creator\nfrom bisheng.interface.llms.base import llm_creator\nfrom bisheng.interface.memories.base import memory_creator\nfrom bisheng.interface.output_parsers.base import output_parser_creator\nfrom bisheng.interface.prompts.base import prompt_creator\nfrom bisheng.interface.retrievers.base import retriever_creator\nfrom bisheng.interface.text_splitters.base import textsplitter_creator\nfrom bisheng.interface.toolkits.base import toolkits_creator\nfrom bisheng.interface.tools.base import tool_creator\nfrom bisheng.interface.utilities.base import utility_creator\nfrom bisheng.interface.vector_store.base import vectorstore_creator\nfrom bisheng.interface.wrappers.base import wrapper_creator\nfrom cachetools import LRUCache, cached\n\n\ndef get_type_list():\n    \"\"\"Get a list of all langchain types\"\"\"\n    all_types = build_langchain_types_dict()\n\n    # all_types.pop(\"tools\")\n\n    for key, value in all_types.items():\n        all_types[key] = [item['template']['_type'] for item in value.values()]\n\n    return all_types\n\n\n@cached(LRUCache(maxsize=1))\ndef build_langchain_types_dict():  # sourcery skip: dict-assign-update-to-union\n    \"\"\"Build a dictionary of all langchain types\"\"\"\n\n    all_types = {}\n\n    creators = [\n        chain_creator,\n        agent_creator,\n        prompt_creator,\n        llm_creator,\n        memory_creator,\n        tool_creator,\n        toolkits_creator,\n        wrapper_creator,\n        embedding_creator,\n        vectorstore_creator,\n        documentloader_creator,\n        textsplitter_creator,\n        utility_creator,\n        output_parser_creator,\n        retriever_creator,\n        input_output_creator,\n        autogenrole_creator,\n    ]\n\n    all_types = {}\n    for creator in creators:\n        created_types = creator.to_dict()\n        if created_types[creator.type_name].values():\n            all_types.update(created_types)\n    return all_types\n\n\nlangchain_types_dict = build_langchain_types_dict()\n\n\ndef get_all_types_dict():\n    \"\"\"Get all types dictionary combining native and custom components.\"\"\"\n    BASE_COMPONENTS_PATH = str(Path(__file__).parent.parent / 'components')\n    native_components = build_langchain_types_dict()\n    custom_components_from_file = build_custom_components([BASE_COMPONENTS_PATH])\n    return merge_nested_dicts_with_renaming(native_components, custom_components_from_file)\n    # return native_components\n"
  },
  {
    "path": "src/backend/bisheng/interface/utilities/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/utilities/base.py",
    "content": "from typing import Dict, List, Optional, Type\n\nfrom bisheng.custom.customs import get_custom_nodes\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.utilities import UtilitiesFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class\nfrom langchain_community import utilities\nfrom langchain_community.utilities.sql_database import SQLDatabase\n\n\nclass UtilityCreator(LangChainTypeCreator):\n    type_name: str = 'utilities'\n\n    @property\n    def frontend_node_class(self) -> Type[UtilitiesFrontendNode]:\n        return UtilitiesFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        \"\"\"\n        Returns a dictionary mapping utility names to their corresponding loader classes.\n        If the dictionary has not been created yet, it is created by importing all utility classes\n        from the langchain.chains module and filtering them according to the settings.utilities list.\n        \"\"\"\n        if self.type_dict is None:\n            self.type_dict = {\n                utility_name: import_class(f'langchain_community.utilities.{utility_name}')\n                for utility_name in utilities.__all__\n            }\n            self.type_dict['SQLDatabase'] = SQLDatabase\n            # Filter according to settings.utilities\n            self.type_dict = {\n                name: utility\n                for name, utility in self.type_dict.items()\n                if name in settings.utilities or settings.dev\n            }\n\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of a utility.\"\"\"\n        try:\n            custom_nodes = get_custom_nodes(self.type_name)\n            if name in custom_nodes.keys():\n                return custom_nodes[name]\n            return build_template_from_class(name, self.type_to_loader_dict)\n        except ValueError as exc:\n            raise ValueError(f'Utility {name} not found') from exc\n\n        except AttributeError as exc:\n            logger.error(f'Utility {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return list(self.type_to_loader_dict.keys())\n\n\nutility_creator = UtilityCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/utils.py",
    "content": "import base64\nimport json\nimport os\nimport re\nfrom io import BytesIO\n\nimport yaml\nfrom PIL.Image import Image\nfrom langchain.base_language import BaseLanguageModel\n\nfrom bisheng.chat.config import ChatConfig\nfrom bisheng.common.services.config_service import settings\n\n\ndef load_file_into_dict(file_path: str) -> dict:\n    if not os.path.exists(file_path):\n        raise FileNotFoundError(f'File not found: {file_path}')\n\n    # Files names are UUID, so we can't find the extension\n    with open(file_path, 'r') as file:\n        try:\n            data = json.load(file)\n        except json.JSONDecodeError:\n            file.seek(0)\n            data = yaml.safe_load(file)\n        except ValueError as exc:\n            raise ValueError('Invalid file type. Expected .json or .yaml.') from exc\n    return data\n\n\ndef pil_to_base64(image: Image) -> str:\n    buffered = BytesIO()\n    image.save(buffered, format='PNG')\n    img_str = base64.b64encode(buffered.getvalue())\n    return img_str.decode('utf-8')\n\n\ndef try_setting_streaming_options(langchain_object, websocket):\n    # If the LLM type is OpenAI or ChatOpenAI,\n    # set streaming to True\n    # First we need to find the LLM\n    llm = None\n    if hasattr(langchain_object, 'llm'):\n        llm = langchain_object.llm\n    elif hasattr(langchain_object, 'llm_chain') and hasattr(langchain_object.llm_chain, 'llm'):\n        llm = langchain_object.llm_chain.llm\n\n    if isinstance(llm, BaseLanguageModel):\n        if hasattr(llm, 'streaming') and isinstance(llm.streaming, bool):\n            llm.streaming = settings.get_from_db('llm_request').get(\n                'stream') if 'stream' in settings.get_from_db(\n                'llm_request') else ChatConfig.streaming\n        elif hasattr(llm, 'stream') and isinstance(llm.stream, bool):\n            llm.stream = settings.get_from_db('llm_request').get(\n                'stream') if 'stream' in settings.get_from_db(\n                'llm_request') else ChatConfig.streaming\n    return langchain_object\n\n\ndef extract_input_variables_from_prompt(prompt: str) -> list[str]:\n    \"\"\"Extract input variables from prompt.\"\"\"\n    return re.findall(r'{(.*?)}', prompt)\n"
  },
  {
    "path": "src/backend/bisheng/interface/vector_store/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/vector_store/base.py",
    "content": "from typing import Any, Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.interface.importing.utils import import_class\nfrom bisheng.interface.vector_store.constants import CUSTOM_VECTORSTORE\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.template.frontend_node.vectorstores import VectorStoreFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_method\nfrom bisheng_langchain import vectorstores as contribute_vectorstores\nfrom langchain_community import vectorstores\n\n\nclass VectorstoreCreator(LangChainTypeCreator):\n    type_name: str = 'vectorstores'\n\n    @property\n    def frontend_node_class(self) -> Type[VectorStoreFrontendNode]:\n        return VectorStoreFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict: dict[str, Any] = {\n                vectorstore_name:\n                import_class(f'langchain_community.vectorstores.{vectorstore_name}')\n                for vectorstore_name in vectorstores.__all__\n                if vectorstore_name != 'Milvus'  # use bisheng_langchain\n            }\n            self.type_dict.update({\n                vectorstore_name:\n                import_class(f'bisheng_langchain.vectorstores.{vectorstore_name}')\n                for vectorstore_name in contribute_vectorstores.__all__\n            })\n            self.type_dict.update(CUSTOM_VECTORSTORE)\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        \"\"\"Get the signature of an embedding.\"\"\"\n        try:\n            return build_template_from_method(\n                name,\n                type_to_cls_dict=self.type_to_loader_dict,\n                method_name='from_texts',\n            )\n        except ValueError as exc:\n            raise ValueError(f'Vector Store {name} not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Vector Store {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return [\n            vectorstore for vectorstore in self.type_to_loader_dict.keys()\n            if vectorstore in settings.vectorstores or settings.dev\n        ]\n\n\nvectorstore_creator = VectorstoreCreator()\n"
  },
  {
    "path": "src/backend/bisheng/interface/vector_store/constants.py",
    "content": "from bisheng.interface.vector_store.custom import MilvusWithPermissionCheck, ElasticsearchWithPermissionCheck\n\nCUSTOM_VECTORSTORE = {\n    'MilvusWithPermissionCheck': MilvusWithPermissionCheck,\n    'ElasticsearchWithPermissionCheck': ElasticsearchWithPermissionCheck\n}\n"
  },
  {
    "path": "src/backend/bisheng/interface/vector_store/custom.py",
    "content": "from abc import ABC\nfrom ast import literal_eval\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Optional, Tuple\n\nimport jieba\nfrom langchain.chains.llm import LLMChain\nfrom langchain.docstore.document import Document\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.utils import get_from_dict_or_env\nfrom langchain.vectorstores.base import VectorStore\nfrom langchain_community.vectorstores.milvus import Milvus as MilvusLangchain\nfrom langchain_core.language_models import BaseLLM\nfrom langchain_core.prompts import PromptTemplate\nfrom loguru import logger\n\nfrom bisheng_langchain.vectorstores.elastic_keywords_search import DEFAULT_PROMPT\nfrom bisheng_langchain.vectorstores.milvus import DEFAULT_MILVUS_CONNECTION\n\nif TYPE_CHECKING:\n    from elasticsearch import Elasticsearch  # noqa: F401\n\n\nclass MilvusWithPermissionCheck(MilvusLangchain):\n    \"\"\"\n    only support multi collection search, but all collection must have same fields\n\n    not include create collection\n    \"\"\"\n\n    def __init__(self,\n                 embedding_function: Embeddings,\n                 collection_name: list[str] = None,\n                 collection_embeddings: list[Embeddings] = None,\n                 connection_args: Optional[dict[str, Any]] = None,\n                 consistency_level: str = 'Session',\n                 index_params: Optional[dict] = None,\n                 search_params: Optional[dict] = None,\n                 drop_old: Optional[bool] = False,\n                 *,\n                 primary_field: str = 'pk',\n                 text_field: str = 'text',\n                 vector_field: str = 'vector',\n                 partition_field: str = 'knowledge_id',\n                 **kwargs: Any):\n        \"\"\"Initialize the Milvus vector store.\"\"\"\n        try:\n            from pymilvus import Collection, utility\n        except ImportError:\n            raise ValueError('Could not import pymilvus python package. '\n                             'Please install it with `pip install pymilvus`.')\n\n        # Default search params when one is not provided.\n        self.default_search_params = {\n            'IVF_FLAT': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'IVF_SQ8': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'IVF_PQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'HNSW': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 100\n                }\n            },\n            'RHNSW_FLAT': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'RHNSW_SQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'RHNSW_PQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'IVF_HNSW': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10,\n                    'ef': 10\n                }\n            },\n            'ANNOY': {\n                'metric_type': 'L2',\n                'params': {\n                    'search_k': 10\n                }\n            },\n            'AUTOINDEX': {\n                'metric_type': 'L2',\n                'params': {}\n            },\n        }\n\n        self.embedding_func = embedding_function\n        self.collection_name = collection_name\n        self.index_params = index_params\n        self.search_params = search_params\n        self.consistency_level = consistency_level\n        self.connection_args = connection_args\n\n        # In order for a collection to be compatible, pk needs to be auto'id and int\n        self._primary_field = primary_field\n        # In order for compatiblility, the text field will need to be called \"text\"\n        self._text_field = text_field\n        # In order for compatibility, the vector field needs to be called \"vector\"\n        self._vector_field = vector_field\n        #  partion key for multi-tenancy\n        self._partition_field = partition_field\n\n        # if collection_name is None or collection_name.__len__() == 0:\n        #     raise ValueError('collection_name cannot be empty, please provide at least one collection name.')\n\n        self.fields: list[str] = []\n        # Create the connection to the server\n        if connection_args is None:\n            connection_args = DEFAULT_MILVUS_CONNECTION\n\n        self.alias = self._create_connection_alias(connection_args)\n        self.col: Optional[List[Collection]] = []\n        self.col_partition_key: Optional[List[str]] = []\n        self.collection_embeddings = collection_embeddings\n        # not used\n        self.drop_old = drop_old\n\n        # Grab the existing collection if it exists\n        try:\n            for index, one_collection_name in enumerate(self.collection_name):\n                if utility.has_collection(one_collection_name, using=self.alias):\n                    self.col.append(Collection(\n                        one_collection_name,\n                        using=self.alias,\n                    ))\n                    self.col_partition_key.append(kwargs.get('partition_keys')[index])\n        except Exception as e:\n            logger.error(f'milvus operating error={str(e)}')\n            self.close_connection(self.alias)\n            raise e\n\n        if not self.col:\n            logger.warning('No collection found, please confirm user have knowledge access')\n            # raise ValueError(\"No collection found, please confirm collection name correctly.\")\n        # Initialize the vector store\n        self._init()\n\n    def close_connection(self, using):\n        logger.warning(f'forbidden close milvus connection: {using}, because alias can be reused by others threads')\n\n    def _init(\n            self,\n            embeddings: Optional[list] = None,\n            metadatas: Optional[list[dict]] = None,\n            partition_names: Optional[list] = None,\n            replica_number: int = 1,\n            timeout: Optional[float] = None,\n    ) -> None:\n        self._extract_fields(col_index=0)\n        self._create_search_params()\n        self._load()\n\n    def _extract_fields(self, col_index=0) -> None:\n        \"\"\"Grab the existing fields from the Collection\"\"\"\n        from pymilvus import Collection\n        if not self.col:\n            return\n\n        if isinstance(self.col[col_index], Collection):\n            schema = self.col[col_index].schema\n            for x in schema.fields:\n                self.fields.append(x.name)\n            # Since primary field is auto-id, no need to track it\n            self.fields.remove(self._primary_field)\n\n    def _create_search_params(self, col_index=0) -> None:\n        \"\"\"Generate search params based on the current index type\"\"\"\n        from pymilvus import Collection\n        if not self.col:\n            return\n\n        if isinstance(self.col[col_index], Collection) and self.search_params is None:\n            index = self._get_index(col_index)\n            if index is not None:\n                index_type: str = index['index_param']['index_type']\n                metric_type: str = index['index_param']['metric_type']\n                self.search_params = self.default_search_params[index_type]\n                self.search_params['metric_type'] = metric_type\n\n    def _get_index(self, col_index=0) -> Optional[dict[str, Any]]:\n        \"\"\"Return the vector index information if it exists\"\"\"\n        from pymilvus import Collection\n        if not self.col:\n            return\n\n        if isinstance(self.col[col_index], Collection):\n            for x in self.col[col_index].indexes:\n                if x.field_name == self._vector_field:\n                    return x.to_dict()\n        return None\n\n    def _load(self) -> None:\n        \"\"\"Load the collection if available.\"\"\"\n        from pymilvus import Collection\n        # Load allcollection\n        for i, col in enumerate(self.col):\n            if isinstance(col, Collection) and self._get_index(col_index=i) is not None:\n                col.load()\n\n    @classmethod\n    def from_texts(\n            cls,\n            texts: List[str],\n            embedding: Embeddings,\n            metadatas: Optional[List[dict]] = None,\n            collection_name: list[str] = None,\n            connection_args: dict[str, Any] = DEFAULT_MILVUS_CONNECTION,\n            consistency_level: str = 'Session',\n            index_params: Optional[dict] = None,\n            search_params: Optional[dict] = None,\n            drop_old: bool = False,\n            no_embedding: bool = False,\n            **kwargs: Any,\n    ):\n        \"\"\"\n        no insert data into milvus, only search from milvus\n        \"\"\"\n        vector_db = cls(\n            embedding_function=embedding,\n            collection_name=collection_name,\n            connection_args=connection_args,\n            consistency_level=consistency_level,\n            index_params=index_params,\n            search_params=search_params,\n            drop_old=drop_old,\n            **kwargs,\n        )\n        return vector_db\n\n    def similarity_search(\n            self,\n            query: str,\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a similarity search against the query string.\n\n        Args:\n            query (str): The text to search.\n            k (int, optional): How many results to return. Defaults to 4.\n            param (dict, optional): The search params for the index type.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        res = self.similarity_search_with_score(query=query,\n                                                k=k,\n                                                param=param,\n                                                expr=expr,\n                                                timeout=timeout,\n                                                **kwargs)\n        return [doc for doc, _ in res]\n\n    def similarity_search_by_vector(\n            self,\n            embedding: List[float],\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a similarity search against the query string.\n\n        Args:\n            embedding (List[float]): The embedding vector to search.\n            k (int, optional): How many results to return. Defaults to 4.\n            param (dict, optional): The search params for the index type.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        res = self.similarity_search_with_score_by_vector(embedding=embedding,\n                                                          k=k,\n                                                          param=param,\n                                                          expr=expr,\n                                                          timeout=timeout,\n                                                          **kwargs)\n        return [doc for doc, _ in res]\n\n    def similarity_search_with_score(\n            self,\n            query: str,\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Tuple[Document, float]]:\n        \"\"\"Perform a search on a query string and return results with score.\n\n        For more information about the search parameters, take a look at the pymilvus\n        documentation found here:\n        https://milvus.io/api-reference/pymilvus/v2.2.6/Collection/search().md\n\n        Args:\n            query (str): The text being searched.\n            k (int, optional): The amount of results to return. Defaults to 4.\n            param (dict): The search params for the specified index.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[float], List[Tuple[Document, any, any]]:\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if not self.col:\n            logger.debug('No existing collection to search.')\n            return []\n\n        # Embed the query text.\n        embedding = self.embedding_func.embed_query(query)\n\n        res = self.similarity_search_with_score_by_vector(embedding=embedding,\n                                                          k=k,\n                                                          query=query,\n                                                          param=param,\n                                                          expr=expr,\n                                                          timeout=timeout,\n                                                          **kwargs)\n        return res\n\n    def similarity_search_with_score_by_vector(\n            self,\n            embedding: List[float],\n            k: int = 4,\n            param: Optional[dict] = None,\n            query: Optional[str] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Tuple[Document, float]]:\n        \"\"\"Perform a search on a query string and return results with score.\n\n        For more information about the search parameters, take a look at the pymilvus\n        documentation found here:\n        https://milvus.io/api-reference/pymilvus/v2.2.6/Collection/search().md\n\n        Args:\n            embedding (List[float]): disabled.\n            k (int, optional): The amount of results to return. Defaults to 4.\n            param (dict): The search params for the specified index.\n                Defaults to None.\n            query (str): The search query, use collection`s embedding calc query embedding.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Tuple[Document, float]]: Result doc and score.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if not self.col:\n            logger.debug('No existing collection to search.')\n            return []\n\n        if param is None:\n            param = self.search_params\n\n        # Determine result metadata fields.\n        output_fields = self.fields[:]\n        output_fields.remove(self._vector_field)\n\n        finally_k = kwargs.pop('k', k)\n\n        ret = []\n\n        for index, one_col in enumerate(self.col):\n            search_expr = expr\n            embedding = self.collection_embeddings[index].embed_query(query)\n            if self.col_partition_key[index]:\n                # add parttion\n                if expr:\n                    search_expr = f\"{expr} and {self._partition_field}==\\\"{self.col_partition_key[index]}\\\"\"\n                else:\n                    search_expr = f\"{self._partition_field}==\\\"{self.col_partition_key[index]}\\\"\"\n            # Perform the search.\n            res = one_col.search(\n                data=[embedding],\n                anns_field=self._vector_field,\n                param=param,\n                limit=k,\n                expr=search_expr,\n                output_fields=output_fields,\n                timeout=timeout,\n                **kwargs,\n            )\n            # Organize results.\n            for result in res[0]:\n                meta = {x: result.entity.get(x) for x in output_fields}\n                doc = Document(page_content=meta.pop(self._text_field), metadata=meta)\n                pair = (doc, result.score)\n                ret.append(pair)\n            logger.debug(f'MilvusWithPermissionCheck Search {one_col.name} query: {query} results: {res[0]}')\n        ret.sort(key=lambda x: x[1])\n        logger.debug(f'MilvusWithPermissionCheck Search all results: {len(ret)}')\n        # milvusYes, the smaller the score, the better, so just take the first few digits directly\n        ret = ret[:finally_k]\n        logger.debug(f'MilvusWithPermissionCheck Search finally results: {len(ret)}')\n        return ret\n\n    @staticmethod\n    def _relevance_score_fn(distance: float) -> float:\n        \"\"\"Normalize the distance to a score on a scale [0, 1].\"\"\"\n        return 1 - distance / 2\n\n    def _select_relevance_score_fn(self) -> Callable[[float], float]:\n        return self._relevance_score_fn\n\n\nclass ElasticsearchWithPermissionCheck(VectorStore, ABC):\n    \"\"\"\n    only search from multi index\n    \"\"\"\n\n    def __init__(\n            self,\n            elasticsearch_url: str,\n            index_name: List[str],\n            drop_old: Optional[bool] = False,\n            *,\n            ssl_verify: Optional[Dict[str, Any]] = None,\n            llm_chain: Optional[LLMChain] = None,\n    ):\n        \"\"\"Initialize with necessary components.\"\"\"\n        try:\n            import elasticsearch\n        except ImportError:\n            raise ImportError('Could not import elasticsearch python package. '\n                              'Please install it with `pip install elasticsearch`.')\n        self.index_name = index_name\n        self.llm_chain = llm_chain\n        self.drop_old = drop_old\n        _ssl_verify = ssl_verify or {}\n        self.elasticsearch_url = elasticsearch_url\n        self.ssl_verify = _ssl_verify\n        try:\n            self.client = elasticsearch.Elasticsearch(elasticsearch_url, **_ssl_verify)\n        except ValueError as e:\n            raise ValueError(f'Your elasticsearch client string is mis-formatted. Got error: {e} ')\n\n    def similarity_search(self,\n                          query: str,\n                          k: int = 4,\n                          query_strategy: str = 'match_phrase',\n                          must_or_should: str = 'should',\n                          **kwargs: Any) -> List[Document]:\n        if k == 0:\n            # pm need to control\n            return []\n        docs_and_scores = self.similarity_search_with_score(query,\n                                                            k=k,\n                                                            query_strategy=query_strategy,\n                                                            must_or_should=must_or_should,\n                                                            **kwargs)\n        documents = [d[0] for d in docs_and_scores]\n        return documents\n\n    @staticmethod\n    def _relevance_score_fn(distance: float) -> float:\n        \"\"\"Normalize the distance to a score on a scale [0, 1].\"\"\"\n        # Todo: normalize the es score on a scale [0, 1]\n        return distance\n\n    def _select_relevance_score_fn(self) -> Callable[[float], float]:\n        return self._relevance_score_fn\n\n    def similarity_search_with_score(self,\n                                     query: str,\n                                     k: int = 4,\n                                     query_strategy: str = 'match_phrase',\n                                     must_or_should: str = 'should',\n                                     **kwargs: Any) -> List[Tuple[Document, float]]:\n        if k == 0:\n            # pm need to control\n            return []\n        assert must_or_should in ['must', 'should'], 'only support must and should.'\n        # llm or jiaba extract keywords\n        if self.llm_chain:\n            keywords_str = self.llm_chain.run(query)\n            logger.debug('elasticsearch llm search keywords:', keywords_str)\n            try:\n                keywords = literal_eval(keywords_str)\n                if not isinstance(keywords, list):\n                    raise ValueError('Keywords extracted by llm is not list.')\n            except Exception:\n                keywords = jieba.analyse.extract_tags(query, topK=10, withWeight=False)\n        else:\n            keywords = jieba.analyse.extract_tags(query, topK=10, withWeight=False)\n        keywords = keywords or [query]\n        logger.debug(f'finally search keywords: {keywords}')\n        match_query = {'bool': {must_or_should: []}}\n        for key in keywords:\n            match_query['bool'][must_or_should].append({query_strategy: {'text': key}})\n\n        ret = []\n        for one_index_name in self.index_name:\n            response = self.client_search(self.client, one_index_name, match_query, size=k)\n            hits = [hit for hit in response['hits']['hits']]\n            for hit in hits:\n                ret.append((Document(page_content=hit['_source']['text'],\n                                     metadata=hit['_source']['metadata']), hit['_score']))\n            logger.debug(\n                f'ElasticsearchWithPermissionCheck Search {one_index_name} results: {hits}')\n        logger.debug(f'ElasticsearchWithPermissionCheck Search all results: {len(ret)}')\n        finally_k = kwargs.pop('finally_k', k)\n        ret.sort(key=lambda x: x[1], reverse=True)\n        ret = ret[:finally_k]\n        logger.debug(f'ElasticsearchWithPermissionCheck Search finally results: {len(ret)}')\n        return ret\n\n    def add_texts(\n            self,\n            texts: Iterable[str],\n            metadatas: Optional[List[dict]] = None,\n            ids: Optional[List[str]] = None,\n            refresh_indices: bool = True,\n            **kwargs: Any,\n    ) -> List[str]:\n        pass\n\n    @classmethod\n    def from_texts(\n            cls,\n            texts: List[str],\n            embedding: Embeddings,\n            metadatas: Optional[List[dict]] = None,\n            ids: Optional[List[str]] = None,\n            index_name: Optional[List[str]] = None,\n            refresh_indices: bool = True,\n            llm: Optional[BaseLLM] = None,\n            prompt: Optional[PromptTemplate] = DEFAULT_PROMPT,\n            drop_old: Optional[bool] = False,\n            **kwargs: Any,\n    ):\n        \"\"\"Construct ElasticKeywordsSearch wrapper from raw documents.\n\n        This is a user-friendly interface that:\n            1. Embeds documents.\n            2. Creates a new index for the embeddings in the Elasticsearch instance.\n            3. Adds the documents to the newly created Elasticsearch index.\n\n        This is intended to be a quick way to get started.\n\n        Example:\n            .. code-block:: python\n\n                from langchain import ElasticKeywordsSearch\n                from langchain.embeddings import OpenAIEmbeddings\n                embeddings = OpenAIEmbeddings()\n                elastic_vector_search = ElasticKeywordsSearch.from_texts(\n                    texts,\n                    embeddings,\n                    elasticsearch_url=\"http://localhost:9200\"\n                )\n        \"\"\"\n        elasticsearch_url = get_from_dict_or_env(kwargs, 'elasticsearch_url', 'ELASTICSEARCH_URL')\n        if 'elasticsearch_url' in kwargs:\n            del kwargs['elasticsearch_url']\n        if llm:\n            llm_chain = LLMChain(llm=llm, prompt=prompt)\n            vectorsearch = cls(elasticsearch_url,\n                               index_name,\n                               llm_chain=llm_chain,\n                               drop_old=drop_old,\n                               **kwargs)\n        else:\n            vectorsearch = cls(elasticsearch_url, index_name, drop_old=drop_old, **kwargs)\n\n        return vectorsearch\n\n    def client_search(self, client: Any, index_name: str, script_query: Dict, size: int) -> Any:\n        version_num = client.info()['version']['number'][0]\n        version_num = int(version_num)\n        if version_num >= 8:\n            response = client.search(index=index_name, query=script_query, size=size)\n        else:\n            response = client.search(index=index_name, body={'query': script_query, 'size': size})\n        return response\n\n    def delete(self, **kwargs: Any) -> None:\n        # TODO: Check if this can be done in bulk\n        self.client.indices.delete(index=self.index_name)\n"
  },
  {
    "path": "src/backend/bisheng/interface/wrappers/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/interface/wrappers/base.py",
    "content": "from typing import ClassVar, Dict, List, Optional, Type\n\nfrom bisheng.interface.base import LangChainTypeCreator\nfrom bisheng.template.frontend_node.wrappers import WrappersFrontendNode\nfrom loguru import logger\nfrom bisheng.utils.util import build_template_from_class, build_template_from_method\nfrom bisheng_langchain.utils.azure_dalle_image_generator import AzureDallEWrapper as DallEAPIWrapper\nfrom langchain_community.utilities import requests, sql_database\nfrom sqlmodel import true\n\n\nclass WrapperCreator(LangChainTypeCreator):\n    type_name: str = 'wrappers'\n\n    from_method_nodes: ClassVar[Dict] = {'SQLDatabase': 'from_uri'}\n\n    @property\n    def frontend_node_class(self) -> Type[WrappersFrontendNode]:\n        \"\"\"The class type of the FrontendNode created in frontend_node.\"\"\"\n        return WrappersFrontendNode\n\n    @property\n    def type_to_loader_dict(self) -> Dict:\n        if self.type_dict is None:\n            self.type_dict = {\n                wrapper.__name__: wrapper\n                for wrapper in\n                [requests.TextRequestsWrapper, sql_database.SQLDatabase, DallEAPIWrapper]\n            }\n        return self.type_dict\n\n    def get_signature(self, name: str) -> Optional[Dict]:\n        try:\n            if name in self.from_method_nodes:\n                return build_template_from_method(\n                    name,\n                    type_to_cls_dict=self.type_to_loader_dict,\n                    add_function=True,\n                    method_name=self.from_method_nodes[name],\n                )\n\n            return build_template_from_class(name, self.type_to_loader_dict, true)\n        except ValueError as exc:\n            raise ValueError('Wrapper not found') from exc\n        except AttributeError as exc:\n            logger.error(f'Wrapper {name} not loaded: {exc}')\n            return None\n\n    def to_list(self) -> List[str]:\n        return list(self.type_to_loader_dict.keys())\n\n\nwrapper_creator = WrapperCreator()\n"
  },
  {
    "path": "src/backend/bisheng/jcloud.yml",
    "content": "instance: C4\nautoscale_min: 1"
  },
  {
    "path": "src/backend/bisheng/knowledge/README.md",
    "content": "# 知识库模块\n\n## 迁移重构中\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/api/dependencies.py",
    "content": "from fastapi import Depends\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.dependencies.core_deps import get_db_session\nfrom bisheng.knowledge.domain.repositories.implementations.knowledge_file_repository_impl import \\\n    KnowledgeFileRepositoryImpl\nfrom bisheng.knowledge.domain.repositories.implementations.knowledge_repository_impl import KnowledgeRepositoryImpl\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_file_repository import KnowledgeFileRepository\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_repository import KnowledgeRepository\nfrom bisheng.knowledge.domain.services.knowledge_file_service import KnowledgeFileService\nfrom bisheng.knowledge.domain.services.knowledge_service import KnowledgeService\n\n\nasync def get_knowledge_repository(\n        session: AsyncSession = Depends(get_db_session),\n) -> KnowledgeRepository:\n    \"\"\"DapatkanKnowledgeRepositoryInstance Dependencies\"\"\"\n    return KnowledgeRepositoryImpl(session)\n\n\nasync def get_knowledge_file_repository(\n        session: AsyncSession = Depends(get_db_session),\n) -> 'KnowledgeFileRepository':\n    \"\"\"DapatkanKnowledgeFileRepositoryInstance Dependencies\"\"\"\n\n    return KnowledgeFileRepositoryImpl(session)\n\n\nasync def get_knowledge_service(\n        knowledge_repository: KnowledgeRepository = Depends(get_knowledge_repository),\n        knowledge_file_repository: KnowledgeFileRepository = Depends(get_knowledge_file_repository),\n) -> 'KnowledgeService':\n    \"\"\"DapatkanKnowledgeServiceInstance Dependencies\"\"\"\n    return KnowledgeService(knowledge_repository=knowledge_repository,\n                            knowledge_file_repository=knowledge_file_repository)\n\n\nasync def get_knowledge_file_service(\n        knowledge_repository: KnowledgeRepository = Depends(get_knowledge_repository),\n        knowledge_file_repository: KnowledgeFileRepository = Depends(get_knowledge_file_repository),\n) -> 'KnowledgeFileService':\n    \"\"\"DapatkanKnowledgeFileServiceInstance Dependencies\"\"\"\n    return KnowledgeFileService(\n        knowledge_repository=knowledge_repository,\n        knowledge_file_repository=knowledge_file_repository,\n    )\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/api/endpoints/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/api/endpoints/knowledge.py",
    "content": "import asyncio\nimport gc\nimport json\nimport urllib.parse\nfrom datetime import datetime\nfrom io import BytesIO\nfrom typing import List, Optional, Any, Literal\n\nimport pandas as pd\nfrom fastapi import (APIRouter, BackgroundTasks, Body, Depends, File, HTTPException, Query, Request,\n                     UploadFile)\nfrom fastapi.encoders import jsonable_encoder\nfrom loguru import logger\n\nfrom bisheng.api.services import knowledge_imp\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.knowledge_imp import add_qa\nfrom bisheng.api.v1.schemas import (KnowledgeFileProcess, UpdatePreviewFileChunk, UploadFileResponse,\n                                    UpdateKnowledgeReq, KnowledgeFileReProcess)\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError, ServerError\nfrom bisheng.common.errcode.knowledge import KnowledgeCPError, KnowledgeQAError, KnowledgeRebuildingError, \\\n    KnowledgePreviewError, KnowledgeNotQAError, KnowledgeNoEmbeddingError, KnowledgeNotExistError, KnowledgeCPEmptyError\nfrom bisheng.common.errcode.server import NoLlmModelConfigError\nfrom bisheng.common.schemas.api import resp_200, resp_500, UnifiedResponseModel\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.cache.utils import save_uploaded_file\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.knowledge.api.dependencies import get_knowledge_service, get_knowledge_file_service\nfrom bisheng.knowledge.domain.models.knowledge import (KnowledgeCreate, KnowledgeDao, KnowledgeTypeEnum,\n                                                       KnowledgeUpdate)\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeState\nfrom bisheng.knowledge.domain.models.knowledge_file import (KnowledgeFileDao, KnowledgeFileStatus,\n                                                            QAKnoweldgeDao, QAKnowledgeUpsert, QAStatus)\nfrom bisheng.knowledge.domain.schemas.knowledge_schema import AddKnowledgeMetadataFieldsReq, \\\n    UpdateKnowledgeMetadataFieldsReq, ModifyKnowledgeFileMetaDataReq\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.llm.domain.const import LLMModelType\nfrom bisheng.llm.domain.models import LLMDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils import generate_uuid, calc_data_sha256\nfrom bisheng.worker.knowledge.qa import insert_qa_celery\n\n# build router\nrouter = APIRouter(prefix='/knowledge', tags=['Knowledge'])\n\n\n@router.post('/upload')\nasync def upload_file(*, file: UploadFile = File(...)):\n    try:\n        file_name = file.filename\n\n        uuid_file_name = await KnowledgeService.save_upload_file_original_name(file_name)\n\n        file_path = await save_uploaded_file(file, 'bisheng', uuid_file_name)\n\n        if not isinstance(file_path, str):\n            file_path = str(file_path)\n\n        return resp_200(UploadFileResponse(file_path=file_path))\n\n    except Exception as e:\n        logger.error(f'File upload failed: {e}')\n        raise ServerError(msg=f'File upload failed: {e}')\n\n    finally:\n        await file.close()\n\n\n@router.post('/upload/{knowledge_id}')\nasync def upload_knowledge_file(*,\n                                request: Request,\n                                login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                knowledge_id: int,\n                                file: UploadFile = File(...)):\n    \"\"\" Knowledge base upload file \"\"\"\n\n    try:\n        file_name = file.filename\n\n        # Save the uploaded file\n        uuid_file_name = await KnowledgeService.save_upload_file_original_name(file_name)\n        file_path = await save_uploaded_file(file, 'bisheng', uuid_file_name)\n\n        if not isinstance(file_path, str):\n            file_path = str(file_path)\n\n        await file.seek(0)\n\n        # Calculate file md5\n        file_md5 = await asyncio.to_thread(calc_data_sha256, file.file)\n\n        # Check for duplicate files\n        repeat_file = await KnowledgeFileDao.get_repeat_file(\n            knowledge_id=knowledge_id, file_name=file_name, md5_=file_md5\n        )\n\n        ret = UploadFileResponse(file_path=file_path, file_name=file_name)\n        if repeat_file:\n            ret.repeat = True\n            ret.repeat_update_time = repeat_file.update_time\n            ret.repeat_file_name = repeat_file.file_name\n\n        return resp_200(ret)\n\n    except Exception as e:\n        raise ServerError(msg=f'File upload failed: {e}')\n\n    finally:\n        await file.close()\n\n\n@router.post('/preview')\nasync def preview_file_chunk(*,\n                             request: Request,\n                             login_user: UserPayload = Depends(UserPayload.get_login_user),\n                             background_tasks: BackgroundTasks,\n                             req_data: KnowledgeFileProcess):\n    \"\"\" Get a chunked preview of a file \"\"\"\n\n    preview_file_id = generate_uuid()\n    redis_key = f'preview_file:{preview_file_id}'\n    redis_client = await get_redis_client()\n    await redis_client.aset(redis_key, {\"status\": \"processing\"})\n\n    async def exec_task():\n        try:\n            parse_type, file_share_url, res, partitions = await KnowledgeService.get_preview_file_chunk(request,\n                                                                                                        login_user,\n                                                                                                        req_data)\n            await redis_client.aset(redis_key, {\n                \"status\": \"completed\",\n                \"data\": {\n                    'parse_type': parse_type,\n                    'file_url': file_share_url,\n                    'chunks': [one.model_dump() for one in res],\n                    'partitions': partitions\n                }\n            })\n        except Exception as exc:\n            logger.exception(f'Preview file chunk error: {exc}')\n            await redis_client.aset(redis_key, {\n                \"status\": \"error\"\n            })\n\n    background_tasks.add_task(exec_task)\n    return resp_200(data={'preview_file_id': preview_file_id})\n\n\n@router.get('/preview/status')\nasync def get_preview_file_status(\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        preview_file_id: str = Query(..., description='Preview the file returned by the interfaceID')):\n    redis_key = f'preview_file:{preview_file_id}'\n    redis_client = await get_redis_client()\n    file_status = await redis_client.aget(redis_key)\n    if not file_status:\n        raise KnowledgePreviewError.http_exception()\n    if file_status.get('status') == 'error':\n        raise KnowledgePreviewError.http_exception()\n    if file_status.get('status') == 'completed':\n        await redis_client.aexpire_key(redis_key, 10)\n    return resp_200(data=file_status)\n\n\n@router.put('/preview')\nasync def update_preview_file_chunk(*,\n                                    request: Request,\n                                    login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                    req_data: UpdatePreviewFileChunk):\n    \"\"\" Updating a chunked preview of a file \"\"\"\n\n    res = await KnowledgeService.update_preview_file_chunk(request, login_user, req_data)\n    return resp_200(res)\n\n\n@router.delete('/preview')\nasync def delete_preview_file_chunk(*,\n                                    request: Request,\n                                    login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                    req_data: UpdatePreviewFileChunk):\n    \"\"\" Delete a chunked preview of a file \"\"\"\n\n    res = KnowledgeService.delete_preview_file_chunk(request, login_user, req_data)\n    return resp_200(res)\n\n\n@router.post('/process')\ndef process_knowledge_file(*,\n                           request: Request,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           background_tasks: BackgroundTasks,\n                           req_data: KnowledgeFileProcess):\n    \"\"\" Uploading Files to the Knowledge Base \"\"\"\n\n    res = KnowledgeService.process_knowledge_file(request, login_user, background_tasks, req_data)\n    return resp_200(res)\n\n\n# Modify Segment Reprocessing\n@router.post(\"/process/rebuild\")\nasync def rebuild_knowledge_file(*,\n                                 request: Request,\n                                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                 req_data: KnowledgeFileReProcess):\n    \"\"\" Reprocessing Knowledge Base Files \"\"\"\n\n    res = await KnowledgeService.rebuild_knowledge_file(request, login_user, req_data)\n    return resp_200(res)\n\n\n@router.post('/create')\ndef create_knowledge(*,\n                     request: Request,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user),\n                     knowledge: KnowledgeCreate):\n    \"\"\" Create Knowledge Base. \"\"\"\n    db_knowledge = KnowledgeService.create_knowledge(request, login_user, knowledge)\n    return resp_200(db_knowledge)\n\n\n@router.post('/copy')\nasync def copy_knowledge(*,\n                         request: Request,\n                         background_tasks: BackgroundTasks,\n                         login_user: UserPayload = Depends(UserPayload.get_login_user),\n                         knowledge_id: int = Body(..., embed=True),\n                         knowledge_name: str = Body(default=None, embed=True)):\n    \"\"\" Copy Knowledge Base. \"\"\"\n    knowledge = await KnowledgeDao.aquery_by_id(knowledge_id)\n\n    if not login_user.is_admin and knowledge.user_id != login_user.user_id:\n        return UnAuthorizedError.return_resp()\n\n    knowledge_count = await KnowledgeFileDao.async_count_file_by_filters(\n        knowledge_id,\n        status=[KnowledgeFileStatus.PROCESSING.value, KnowledgeFileStatus.WAITING.value],\n    )\n    if knowledge.state != KnowledgeState.PUBLISHED.value or knowledge_count > 0:\n        return KnowledgeCPError.return_resp()\n    knowledge = await KnowledgeService.copy_knowledge(request, background_tasks, login_user, knowledge, knowledge_name)\n    return resp_200(knowledge)\n\n\n@router.post(\"/qa/copy\")\nasync def copy_qa_knowledge(*,\n                            request: Request,\n                            login_user: UserPayload = Depends(UserPayload.get_login_user),\n                            knowledge_id: int = Body(..., embed=True),\n                            knowledge_name: str = Body(default=None, embed=True)):\n    \"\"\"\n    SalinQAThe knowledge base upon.\n    :param request:\n    :param login_user:\n    :param knowledge_id:\n    :param knowledge_name: new knowledge name\n    :return:\n    \"\"\"\n\n    qa_knowledge = await KnowledgeDao.aquery_by_id(knowledge_id)\n    if not login_user.is_admin and qa_knowledge.user_id != login_user.user_id:\n        return UnAuthorizedError.return_resp()\n\n    if qa_knowledge.type != KnowledgeTypeEnum.QA.value:\n        return KnowledgeNotQAError.return_resp()\n\n    qa_knowledge_count = await QAKnoweldgeDao.async_count_by_id(qa_id=qa_knowledge.id)\n\n    if qa_knowledge.state != KnowledgeState.PUBLISHED.value:\n        return KnowledgeCPError.return_resp()\n    if qa_knowledge_count == 0:\n        return KnowledgeCPEmptyError.return_resp()\n\n    knowledge = await KnowledgeService.copy_qa_knowledge(request, login_user, qa_knowledge, knowledge_name)\n\n    return resp_200(knowledge)\n\n\n@router.get('', status_code=200)\nasync def get_knowledge(*,\n                        request: Request,\n                        login_user: UserPayload = Depends(UserPayload.get_login_user),\n                        name: str = None,\n                        knowledge_type: int = Query(default=KnowledgeTypeEnum.NORMAL.value,\n                                                    alias='type'),\n                        sort_by: Literal['create_time', 'update_time', 'name'] = Query(default='update_time'),\n                        page_size: Optional[int] = 10,\n                        page_num: Optional[int] = 1):\n    \"\"\" Read all knowledge base information. \"\"\"\n    knowledge_type = KnowledgeTypeEnum(knowledge_type)\n    res, total = await KnowledgeService.get_knowledge(request, login_user, knowledge_type, name,\n                                                      sort_by,\n                                                      page_num, page_size)\n    return resp_200(data={'data': res, 'total': total})\n\n\n@router.get('/info', status_code=200)\ndef get_knowledge_info(*,\n                       request: Request,\n                       login_user: UserPayload = Depends(UserPayload.get_login_user),\n                       knowledge_id: List[int] = Query(...)):\n    \"\"\" Based on Knowledge BaseIDRead Knowledge Base Information. \"\"\"\n    res = KnowledgeService.get_knowledge_info(request, login_user, knowledge_id)\n    return resp_200(data=res)\n\n\n@router.put('/', status_code=200)\nasync def update_knowledge(*,\n                           request: Request,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           knowledge: KnowledgeUpdate):\n    res = KnowledgeService.update_knowledge(request, login_user, knowledge)\n    return resp_200(data=res)\n\n\n@router.delete('/', status_code=200)\ndef delete_knowledge(*,\n                     request: Request,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user),\n                     knowledge_id: int = Body(..., embed=True)):\n    \"\"\" Delete Knowledge Base Information. \"\"\"\n\n    KnowledgeService.delete_knowledge(request, login_user, knowledge_id)\n    return resp_200(message='Delete successful')\n\n\n# Personal Knowledge Base Information Acquisition\n@router.get('/personal_knowledge_info', status_code=200)\ndef get_personal_knowledge_info(\n        *,\n        request: Request,\n        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get personal knowledge base information. \"\"\"\n    knowledge = KnowledgeDao.get_user_knowledge(login_user.user_id, None,\n                                                KnowledgeTypeEnum.PRIVATE)\n\n    if not knowledge:\n        model = LLMService.get_knowledge_llm()\n        knowledgeCreate = KnowledgeCreate(name='Personal Knowledge Base',\n                                          type=KnowledgeTypeEnum.PRIVATE.value,\n                                          user_id=login_user.user_id,\n                                          model=model.embedding_model_id)\n\n        knowledge = [KnowledgeService.create_knowledge(request, login_user, knowledgeCreate)]\n\n    return resp_200(data=knowledge)\n\n\n@router.get('/file_list/{knowledge_id}', status_code=200)\ndef get_filelist(*,\n                 request: Request,\n                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                 file_name: str = None,\n                 file_ids: List[int] = None,\n                 knowledge_id: int = 0,\n                 page_size: int = 10,\n                 page_num: int = 1,\n                 status: List[int] = Query(default=None)):\n    \"\"\" Get knowledge base file information. \"\"\"\n    data, total, flag = KnowledgeService.get_knowledge_files(request, login_user, knowledge_id,\n                                                             file_name, status, page_num,\n                                                             page_size, file_ids)\n\n    return resp_200({\n        'data': data,\n        'total': total,\n        'writeable': flag,\n    })\n\n\n@router.get('/qa/list/{qa_knowledge_id}', status_code=200)\nasync def get_QA_list(*,\n                      qa_knowledge_id: int,\n                      page_size: int = 10,\n                      page_num: int = 1,\n                      question: Optional[str] = None,\n                      answer: Optional[str] = None,\n                      keyword: Optional[str] = None,\n                      status: Optional[int] = None,\n                      login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get knowledge base file information. \"\"\"\n    db_knowledge = KnowledgeService.judge_qa_knowledge_write(login_user, qa_knowledge_id)\n\n    qa_list, total_count = await knowledge_imp.list_qa_by_knowledge_id(qa_knowledge_id, page_size,\n                                                                       page_num, question, answer,\n                                                                       keyword, status)\n    user_list = UserDao.get_user_by_ids([qa.user_id for qa in qa_list])\n    user_map = {user.user_id: user.user_name for user in user_list}\n    data = [jsonable_encoder(qa) for qa in qa_list]\n    for qa in data:\n        qa['questions'] = qa['questions'][0]\n        qa['answers'] = json.loads(qa['answers'])[0]\n        qa['user_name'] = user_map.get(qa['user_id'], qa['user_id'])\n\n    return resp_200({\n        'data':\n            data,\n        'total':\n            total_count,\n        'writeable':\n            login_user.access_check(db_knowledge.user_id, str(qa_knowledge_id),\n                                    AccessType.KNOWLEDGE_WRITE)\n    })\n\n\n@router.post('/retry', status_code=200)\ndef retry(*,\n          request: Request,\n          login_user: UserPayload = Depends(UserPayload.get_login_user),\n          background_tasks: BackgroundTasks,\n          req_data: dict):\n    \"\"\"Failed Retry\"\"\"\n    KnowledgeService.retry_files(request, login_user, background_tasks, req_data)\n    return resp_200()\n\n\n@router.delete('/file/{file_id}', status_code=200)\ndef delete_knowledge_file(*,\n                          request: Request,\n                          file_id: int,\n                          login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Delete Knowledge File Information \"\"\"\n    KnowledgeService.delete_knowledge_file(request, login_user, [file_id])\n    return resp_200(message='Delete successful')\n\n\n@router.get('/chunk', status_code=200)\nasync def get_knowledge_chunk(request: Request,\n                              login_user: UserPayload = Depends(UserPayload.get_login_user),\n                              knowledge_id: int = Query(..., description='The knowledge base uponID'),\n                              file_ids: List[int] = Query(default=[], description='Doc.ID'),\n                              keyword: str = Query(default='', description='Keywords'),\n                              page: int = Query(default=1, description='Page'),\n                              limit: int = Query(default=10,\n                                                 description='Number of bars per page Number of bars per page')):\n    \"\"\" Get Knowledge Base Block Content \"\"\"\n    # In order to resolvekeywordParameters are sometimes not carried outurldecoderight of privacybug\n    if keyword.startswith('%'):\n        keyword = urllib.parse.unquote(keyword)\n    res, total = KnowledgeService.get_knowledge_chunks(request, login_user, knowledge_id, file_ids,\n                                                       keyword, page, limit)\n    return resp_200(data={'data': res, 'total': total})\n\n\n@router.put('/chunk', status_code=200)\nasync def update_knowledge_chunk(request: Request,\n                                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                 knowledge_id: int = Body(..., embed=True, description='The knowledge base uponID'),\n                                 file_id: int = Body(..., embed=True, description='Doc.ID'),\n                                 chunk_index: int = Body(..., embed=True, description='Chunked index number'),\n                                 text: str = Body(..., embed=True, description='Chunked content'),\n                                 bbox: str = Body(default='', embed=True, description='Block box selection position')):\n    \"\"\" Update Knowledge Base Chunk Content \"\"\"\n    KnowledgeService.update_knowledge_chunk(request, login_user, knowledge_id, file_id,\n                                            chunk_index, text, bbox)\n    return resp_200()\n\n\n@router.delete('/chunk', status_code=200)\nasync def delete_knowledge_chunk(request: Request,\n                                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                 knowledge_id: int = Body(..., embed=True, description='The knowledge base uponID'),\n                                 file_id: int = Body(..., embed=True, description='Doc.ID'),\n                                 chunk_index: int = Body(..., embed=True, description='Chunked index number')):\n    \"\"\" Delete Knowledge Base Chunk Content \"\"\"\n    KnowledgeService.delete_knowledge_chunk(request, login_user, knowledge_id, file_id,\n                                            chunk_index)\n    return resp_200()\n\n\n@router.get('/file_share')\nasync def get_file_share_url(request: Request,\n                             login_user: UserPayload = Depends(UserPayload.get_login_user),\n                             file_id: int = Query(description='File UniqueID')):\n    original_url, preview_url = KnowledgeService.get_file_share_url(file_id)\n    return resp_200(data={\n        'original_url': original_url,\n        'preview_url': preview_url\n    })\n\n\n@router.get('/file_bbox')\nasync def get_file_bbox(request: Request,\n                        login_user: UserPayload = Depends(UserPayload.get_login_user),\n                        file_id: int = Query(description='File UniqueID')):\n    res = KnowledgeService.get_file_bbox(request, login_user, file_id)\n    return resp_200(data=res)\n\n\n@router.post('/qa/add', status_code=200)\nasync def qa_add(*, QACreate: QAKnowledgeUpsert,\n                 login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Add knowledge base information. \"\"\"\n    QACreate.user_id = login_user.user_id\n    db_knowledge = KnowledgeDao.query_by_id(QACreate.knowledge_id)\n    if db_knowledge.type != KnowledgeTypeEnum.QA.value:\n        raise NotFoundError()\n    if not login_user.access_check(\n            db_knowledge.user_id, str(db_knowledge.id), AccessType.KNOWLEDGE_WRITE\n    ):\n        raise UnAuthorizedError.http_exception()\n\n    db_q = QAKnoweldgeDao.get_qa_knowledge_by_name(QACreate.questions, QACreate.knowledge_id, exclude_id=QACreate.id)\n    # create repeat question or update\n    if (db_q and not QACreate.id) or (db_q and QACreate.id and db_q.id != QACreate.id):\n        raise KnowledgeQAError.http_exception()\n\n    add_qa(db_knowledge=db_knowledge, data=QACreate)\n    return resp_200()\n\n\n@router.post('/qa/status_switch', status_code=200)\ndef qa_status_switch(*,\n                     status: int = Body(embed=True),\n                     id: int = Body(embed=True),\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Modify Knowledge Base Information. \"\"\"\n    qa_db = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(id)\n    if qa_db.status == status:\n        return resp_200()\n    db_knowledge = KnowledgeDao.query_by_id(qa_db.knowledge_id)\n    if not login_user.access_check(\n            db_knowledge.user_id, str(db_knowledge.id), AccessType.KNOWLEDGE_WRITE\n    ):\n        raise UnAuthorizedError.http_exception()\n\n    new_qa_db = knowledge_imp.qa_status_change(qa_db, status, db_knowledge)\n    if not new_qa_db:\n        return resp_200()\n    if new_qa_db.status != status:\n        # Description state switch failed\n        return resp_500(message=new_qa_db.remark)\n    return resp_200()\n\n\n@router.get('/qa/detail', status_code=200)\ndef qa_detail(*, id: int, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Add knowledge base information. \"\"\"\n    qa_knowledge = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(id)\n    qa_knowledge.answers = json.loads(qa_knowledge.answers)[0]\n    return resp_200(data=qa_knowledge)\n\n\n@router.post('/qa/append', status_code=200)\ndef qa_append(\n        *,\n        ids: list[int] = Body(..., embed=True),\n        question: str = Body(..., embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n):\n    \"\"\" Add knowledge base information. \"\"\"\n    qa_list = QAKnoweldgeDao.select_list(ids)\n    knowledge = KnowledgeDao.query_by_id(qa_list[0].knowledge_id)\n    # check knowledge access\n    if not login_user.access_check(\n            knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n    ):\n        raise UnAuthorizedError.http_exception()\n\n    for q in qa_list:\n        if question in q.questions:\n            raise KnowledgeQAError.http_exception()\n    for qa in qa_list:\n        qa.questions.append(question)\n        knowledge_imp.add_qa(knowledge, qa)\n    return resp_200()\n\n\n@router.delete('/qa/delete', status_code=200)\ndef qa_delete(*,\n              ids: list[int] = Body(embed=True),\n              login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Delete Knowledge File Information \"\"\"\n    qa_list = QAKnoweldgeDao.select_list(ids)\n\n    knowledge = KnowledgeDao.query_by_id(qa_list[0].knowledge_id)\n    if not login_user.access_check(knowledge.user_id, str(knowledge.id),\n                                   AccessType.KNOWLEDGE_WRITE):\n        raise UnAuthorizedError()\n    if knowledge.type != KnowledgeTypeEnum.QA.value:\n        raise KnowledgeNotQAError()\n\n    knowledge_imp.delete_vector_data(knowledge, ids)\n    QAKnoweldgeDao.delete_batch(ids)\n    telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                     event_type=BaseTelemetryTypeEnum.DELETE_KNOWLEDGE_FILE,\n                                     trace_id=trace_id_var.get())\n    return resp_200()\n\n\n@router.post('/qa/auto_question')\ndef qa_auto_question(\n        *,\n        number: int = Body(default=3, embed=True),\n        ori_question: str = Body(default='', embed=True),\n        answer: str = Body(default='', embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)\n):\n    \"\"\"Automatically generate questions from large models\"\"\"\n    questions = knowledge_imp.recommend_question(login_user.user_id, ori_question, number=number, answer=answer)\n    return resp_200(data={'questions': questions})\n\n\n@router.get('/qa/export/template', status_code=200)\nasync def get_export_url():\n    data = [{\"Question\": \"\", \"Answer\": \"\", \"Similar question 1\": \"\", \"Similar question 2\": \"\"}]\n    df = pd.DataFrame(data)\n    bio = BytesIO()\n    with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n        df.to_excel(writer, sheet_name=\"Sheet1\", index=False)\n    file_name = f\"qa_export_template.xlsx\"\n    bio.seek(0)\n    file = UploadFile(filename=file_name, file=bio)\n    file_path = await save_uploaded_file(file, 'bisheng', file_name)\n    await file.close()\n    return resp_200({\"url\": file_path})\n\n\n@router.get('/qa/export/{qa_knowledge_id}', status_code=200)\nasync def get_export_url(*,\n                         qa_knowledge_id: int,\n                         question: Optional[str] = None,\n                         answer: Optional[str] = None,\n                         keyword: Optional[str] = None,\n                         status: Optional[int] = None,\n                         max_lines: Optional[int] = 10000,\n                         login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # Query the current knowledge base, whether there are write permissions\n    db_knowledge = KnowledgeService.judge_qa_knowledge_write(login_user, qa_knowledge_id)\n\n    if keyword:\n        question = keyword\n\n    page_num = 1\n    total_num = 0\n    page_size = max_lines\n    file_list = []\n    file_pr = datetime.now().strftime('%Y%m%d%H%M%S')\n    file_index = 1\n    while True:\n        qa_list, total_count = await knowledge_imp.list_qa_by_knowledge_id(qa_knowledge_id, page_size,\n                                                                           page_num, question, answer,\n                                                                           status)\n\n        data = [jsonable_encoder(qa) for qa in qa_list]\n        qa_dict_list = []\n        all_title = [\"Question\", \"Answer\"]\n        for qa in data:\n            qa_dict_list.append({\n                \"Question\": qa['questions'][0],\n                \"Answer\": json.loads(qa['answers'])[0]\n            })\n            for index, question in enumerate(qa['questions']):\n                if index == 0:\n                    continue\n                key = f\"Similar question {index}\"\n                if key not in all_title:\n                    all_title.append(key)\n                qa_dict_list[-1][key] = question\n        if len(qa_dict_list) != 0:\n            df = pd.DataFrame(qa_dict_list)\n        else:\n            df = pd.DataFrame([{\"Question\": \"\", \"Answer\": \"\", \"Similar question 1\": \"\", \"Similar question 2\": \"\"}])\n        df = df[all_title]\n        bio = BytesIO()\n        with pd.ExcelWriter(bio, engine=\"openpyxl\") as writer:\n            df.to_excel(writer, sheet_name=\"Sheet1\", index=False)\n        file_name = f\"{file_pr}_{file_index}.xlsx\"\n        file_index = file_index + 1\n        bio.seek(0)\n        file_io = UploadFile(filename=file_name, file=bio)\n        file_path = await save_uploaded_file(file_io, 'bisheng', file_name)\n        await file_io.close()\n        file_list.append(file_path)\n        total_num += len(qa_list)\n        if len(qa_list) < page_size or total_num >= total_count:\n            break\n\n    return resp_200({\"file_list\": file_list})\n\n\ndef convert_excel_value(value: Any):\n    if value is None or value == \"\":\n        return ''\n    if str(value) == 'nan' or str(value) == 'null':\n        return ''\n    return str(value)\n\n\n@router.post('/qa/preview/{qa_knowledge_id}', status_code=200)\ndef post_import_file(*,\n                     qa_knowledge_id: int,\n                     file_url: str = Body(..., embed=True),\n                     size: Optional[int] = Body(default=0, embed=True),\n                     offset: Optional[int] = Body(default=0, embed=True),\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    df = pd.read_excel(file_url)\n    columns = df.columns.to_list()\n    if 'Question' not in columns or 'Answer' not in columns:\n        raise HTTPException(status_code=500, detail='file must have ‘Question’ Or ‘Answer’ column')\n    data = df.T.to_dict().values()\n    insert_data = []\n    for dd in data:\n        d = QAKnowledgeUpsert(\n            user_id=login_user.user_id,\n            knowledge_id=qa_knowledge_id,\n            answers=[convert_excel_value(dd['Question'])],\n            questions=[convert_excel_value(dd['Answer'])],\n            source=4,\n            create_time=datetime.now(),\n            update_time=datetime.now())\n        for key, value in dd.items():\n            if key.startswith('Similar question') and convert_excel_value(value):\n                d.questions.append(convert_excel_value(value))\n        insert_data.append(d)\n    try:\n        if size > 0 and offset >= 0:\n            if offset >= len(insert_data):\n                insert_data = []\n            else:\n                insert_data = insert_data[offset:size]\n    except Exception as e:\n        raise HTTPException(status_code=500, detail=e)\n    return resp_200({\"result\": insert_data})\n\n\n@router.post('/qa/import/{qa_knowledge_id}', status_code=200)\ndef post_import_file(*,\n                     qa_knowledge_id: int,\n                     file_list: list[str] = Body(..., embed=True),\n                     background_tasks: BackgroundTasks,\n                     login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    # Query the current knowledge base, whether there are write permissions\n    db_knowledge = KnowledgeService.judge_qa_knowledge_write(login_user, qa_knowledge_id)\n\n    insert_result = []\n    error_result = []\n    have_question = []\n    for file_url in file_list:\n        df = pd.read_excel(file_url)\n        columns = df.columns.to_list()\n        if 'Question' not in columns or 'Answer' not in columns:\n            insert_result.append(0)\n            continue\n        data = df.T.to_dict().values()\n        insert_data = []\n        have_data = []\n        all_questions = set()\n        for index, dd in enumerate(data):\n            tmp_questions = set()\n            dd_question = convert_excel_value(dd['Question'])\n            dd_answer = convert_excel_value(dd['Answer'])\n            QACreate = QAKnowledgeUpsert(\n                user_id=login_user.user_id,\n                knowledge_id=qa_knowledge_id,\n                answers=[dd_answer],\n                questions=[dd_question],\n                source=4,\n                status=QAStatus.PROCESSING.value)\n            tmp_questions.add(QACreate.questions[0])\n            for key, value in dd.items():\n                if key.startswith('Similar question'):\n                    if tmp_value := convert_excel_value(value):\n                        if tmp_value not in tmp_questions:\n                            QACreate.questions.append(tmp_value)\n                            tmp_questions.add(tmp_value)\n\n            db_q = QAKnoweldgeDao.get_qa_knowledge_by_name(QACreate.questions, QACreate.knowledge_id)\n            if (db_q and not QACreate.id) or len(tmp_questions & all_questions) > 0 or not dd_question or not dd_answer:\n                have_data.append(index)\n            else:\n                insert_data.append(QACreate)\n                all_questions = all_questions | tmp_questions\n        result = QAKnoweldgeDao.batch_insert_qa(insert_data)\n\n        telemetry_service.log_event_sync(\n            user_id=login_user.user_id,\n            event_type=BaseTelemetryTypeEnum.NEW_KNOWLEDGE_FILE,\n            trace_id=trace_id_var.get()\n        )\n\n        # async task add qa into milvus and es\n        for one in result:\n            insert_qa_celery.delay(one.id)\n\n        error_result.append(have_data)\n\n    return resp_200({\"errors\": error_result})\n\n\n@router.get('/status', status_code=200)\ndef get_knowledge_status(*, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    View Knowledge Base Status Interface\n    Receive:\n    1. According UsersidFirst determine if the user has a personal knowledge base and does not return directly200\n    2. If you have a knowledge base, depending on the useridView the state of your knowledge base, if the state of your personal knowledge base isREBUILDING 3 or FAILED 4 Jam\n       Return \"Personal Knowledge BaseembeddingThe model has been replaced, rebuilding the knowledge base, please try again later\" State Code 502\n    \"\"\"\n    # Query a user's personal knowledge base\n    user_private_knowledge = KnowledgeDao.get_user_knowledge(\n        login_user.user_id,\n        None,\n        KnowledgeTypeEnum.PRIVATE\n    )\n\n    # If the user does not have a personal knowledge base, go directly back to200\n    if not user_private_knowledge:\n        return resp_200({\"status\": \"success\"})\n\n    # Get the first personal knowledge base (usually users have only one personal knowledge base)\n    private_knowledge = user_private_knowledge[0]\n\n    # Check Knowledge Base Status\n\n    if private_knowledge.state == KnowledgeState.REBUILDING.value:\n        # Return502Status codes and corresponding prompts\n        raise KnowledgeRebuildingError()\n    if private_knowledge.state == KnowledgeState.FAILED.value:\n        # Delay imports to avoid looping imports\n        from bisheng.worker.knowledge.rebuild_knowledge_worker import rebuild_knowledge_celery\n        rebuild_knowledge_celery.delay(private_knowledge.id, int(private_knowledge.model), login_user.user_id)\n        # Return502Status codes and corresponding prompts\n        raise KnowledgeRebuildingError()\n\n    # Knowledge base status is OK, go back200\n    return resp_200({\"status\": \"success\"})\n\n\n@router.post('/update_knowledge', status_code=200)\ndef update_knowledge_model(*,\n                           login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           req_data: UpdateKnowledgeReq):\n    \"\"\"\n    Update Knowledge Base Interface\n    Update embedding Rebuild Knowledge Base on Model\n    Receive:\n    1. According to the incoming from the front-endmodel_id, model_type, let's first determine ifembeddingModels\n    2. If not, go backresp501(\"Is notembeddingModels\") If so, place theknowledgeAll in the tabletypeare2DatastatusChange to...3，modelChange to Incomingmodel_id\n    3. everyknowledge_idBoth initiate asynchronous tasks to rebuild the knowledge base\n    \"\"\"\n    # 1. Verify that isembeddingModels\n    model_info = LLMDao.get_model_by_id(req_data.model_id)\n    if not model_info:\n        return NoLlmModelConfigError.return_resp()\n\n    # If the front-end does not passmodel_type, using themodel_type\n    model_type = req_data.model_type if req_data.model_type else model_info.model_type\n\n    if model_type != LLMModelType.EMBEDDING.value:\n        return KnowledgeNoEmbeddingError.return_resp()\n\n    # Process the specified knowledge base\n    knowledge = KnowledgeDao.query_by_id(req_data.knowledge_id)\n    if not knowledge:\n        return KnowledgeNotExistError.return_resp()\n\n    if not login_user.access_check(\n            knowledge.user_id, str(knowledge.id), AccessType.KNOWLEDGE_WRITE\n    ):\n        return UnAuthorizedError.return_resp()\n\n    old_model_id = knowledge.model\n\n    # Update Knowledge Base Status and Models\n    knowledge.model = str(req_data.model_id)\n    knowledge.name = req_data.knowledge_name\n    knowledge.description = req_data.description\n\n    if int(old_model_id) == int(req_data.model_id):\n        # If the model does not change, there is no need to rebuild\n        KnowledgeDao.update_one(knowledge)\n        return resp_200()\n    if knowledge.state == KnowledgeState.REBUILDING.value:\n        return KnowledgeRebuildingError.return_resp()\n\n    knowledge.state = KnowledgeState.REBUILDING.value\n    KnowledgeDao.update_one(knowledge)\n\n    # Start asynchronous task\n\n    if knowledge.type == KnowledgeTypeEnum.NORMAL.value:\n\n        # Delay imports to avoid looping imports\n        from bisheng.worker.knowledge.rebuild_knowledge_worker import rebuild_knowledge_celery\n        rebuild_knowledge_celery.delay(knowledge.id, req_data.model_id, login_user.user_id)\n\n    elif knowledge.type == KnowledgeTypeEnum.QA.value:\n\n        # Delay imports to avoid looping imports\n        from bisheng.worker.knowledge.qa import rebuild_qa_knowledge_celery\n        rebuild_qa_knowledge_celery.delay(knowledge.id, req_data.model_id, login_user.user_id)\n\n    logger.info(f\"Started rebuild task for knowledge_id={knowledge.id} with model_id={req_data.model_id}\")\n\n    return resp_200()\n\n\n@router.get(\"/file/info/{file_id}\", description=\"Get knowledge base file information\",\n            response_model=UnifiedResponseModel)\nasync def get_knowledge_file_info(*,\n                                  login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                  file_id: int,\n                                  knowledge_file_service=Depends(get_knowledge_file_service)):\n    \"\"\"\n    Get knowledge base file information\n    Args:\n        login_user:\n        file_id:\n        knowledge_file_service:\n\n    Returns:\n\n    \"\"\"\n\n    knowledge_file_info_res = await knowledge_file_service.get_knowledge_file_info(login_user, file_id)\n    return resp_200(data=knowledge_file_info_res)\n\n\n# Adding Metadata Fields to the Knowledge Base\n@router.post('/add_metadata_fields', description=\"Adding Metadata Fields to the Knowledge Base\",\n             response_model=UnifiedResponseModel)\nasync def add_metadata_fields(*,\n                              login_user: UserPayload = Depends(UserPayload.get_login_user),\n                              req_data: AddKnowledgeMetadataFieldsReq,\n                              knowledge_service=Depends(get_knowledge_service)):\n    \"\"\"\n    Adding Metadata Fields to the Knowledge Base\n    \"\"\"\n\n    knowledge_model = await knowledge_service.add_metadata_fields(login_user, req_data)\n\n    return resp_200(data=knowledge_model)\n\n\n# Modify Knowledge Base Metadata Fields\n@router.put('/update_metadata_fields', description=\"Modify Knowledge Base Metadata Fields\",\n            response_model=UnifiedResponseModel)\nasync def update_metadata_fields(*,\n                                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                 req_data: UpdateKnowledgeMetadataFieldsReq,\n                                 knowledge_service=Depends(get_knowledge_service),\n                                 background_tasks: BackgroundTasks\n                                 ):\n    \"\"\"\n    Modify Knowledge Base Metadata Fields\n    Args:\n        login_user:\n        req_data:\n        knowledge_service:\n        background_tasks:\n\n    Returns:\n        UnifiedResponseModel\n    \"\"\"\n\n    knowledge_model = await knowledge_service.update_metadata_fields(login_user, req_data, background_tasks)\n\n    return resp_200(data=knowledge_model)\n\n\n# Delete Knowledge Base Metadata Field\n@router.delete('/delete_metadata_fields', description=\"Delete Knowledge Base Metadata Field\",\n               response_model=UnifiedResponseModel)\nasync def delete_metadata_fields(*,\n                                 login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                 knowledge_id: int = Body(..., embed=True, description=\"The knowledge base uponID\"),\n                                 field_names: List[str] = Body(..., embed=True,\n                                                               description=\"List of field names to delete\"),\n                                 knowledge_service=Depends(get_knowledge_service),\n                                 background_tasks: BackgroundTasks):\n    \"\"\"\n    Delete Knowledge Base Metadata Field\n    Args:\n        login_user:\n        knowledge_id:\n        field_names:\n        knowledge_service:\n        background_tasks:\n\n    Returns:\n        UnifiedResponseModel\n    \"\"\"\n\n    knowledge_model = await knowledge_service.delete_metadata_fields(login_user, knowledge_id, field_names,\n                                                                     background_tasks)\n\n    return resp_200(data=knowledge_model)\n\n\n# Modify Knowledge Base File User Custom Metadata\n@router.put('/file/user_metadata', description=\"Modify Knowledge Base File User Custom Metadata\",\n            response_model=UnifiedResponseModel)\nasync def modify_file_user_metadata(*,\n                                    login_user: UserPayload = Depends(UserPayload.get_login_user),\n                                    req_data: ModifyKnowledgeFileMetaDataReq,\n                                    knowledge_file_service=Depends(get_knowledge_file_service)):\n    \"\"\"\n    Modify Knowledge Base File User Custom Metadata\n    Args:\n        login_user:\n        req_data:\n        knowledge_file_service:\n\n    Returns:\n        UnifiedResponseModel\n    \"\"\"\n\n    knowledge_file_model = await knowledge_file_service.modify_file_user_metadata(login_user, req_data)\n\n    return resp_200(data=knowledge_file_model)\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/api/endpoints/qa.py",
    "content": "import asyncio\nimport json\nfrom typing import Annotated\n\nfrom fastapi import APIRouter, Body\nfrom sqlmodel import select\n\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.common.errcode.qa import BackendProcessingError\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.recall_chunk import RecallChunk\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFileDao\n\n# build router\nrouter = APIRouter(prefix='/qa', tags=['QA'])\n\n\n# Some interfaces of the traceability module\n@router.get('/keyword')\nasync def get_answer_keyword(message_id: int):\n    # Get Hitskey\n    conter = 3\n    while True:\n        with get_sync_db_session() as session:\n            chunks = session.exec(\n                select(RecallChunk).where(RecallChunk.message_id == message_id)).first()\n        # keywords\n        if chunks:\n            keywords = chunks.keywords\n            return resp_200(json.loads(keywords))\n        else:\n            # Delay Loop\n            if conter <= 0:\n                break\n            await asyncio.sleep(1)\n            conter -= 1\n    raise BackendProcessingError()\n\n\n@router.post('/chunk', status_code=200)\ndef get_original_file(message_id: Annotated[int, Body(embed=True)],\n                      keys: Annotated[str, Body(embed=True)]):\n    # Get Hitskey\n    with get_sync_db_session() as session:\n        chunks = session.exec(\n            select(RecallChunk).where(RecallChunk.message_id == message_id)).all()\n\n    if not chunks:\n        return resp_200(message='No bulkpost found in Trashchunks')\n\n    # chunk care of all offile\n    file_ids = {chunk.file_id for chunk in chunks}\n    db_knowledge_files = KnowledgeFileDao.get_file_by_ids(list(file_ids))\n    id2file = {file.id: file for file in db_knowledge_files}\n    # keywords\n    keywords = keys.split(';') if keys else []\n    result = []\n    for index, chunk in enumerate(chunks):\n        file = id2file.get(chunk.file_id)\n\n        chunk_res = json.loads(json.loads(chunk.meta_data).get('bbox'))\n        file_access = json.loads(chunk.meta_data).get('right', True)\n        chunk_res['right'] = file_access\n        if file_access and file:\n            # Preview filesurl\n            original_url, preview_url = KnowledgeService.get_file_share_url(file.id)\n            chunk_res['source_url'] = preview_url\n            chunk_res['original_url'] = original_url\n            chunk_res['source'] = file.file_name\n        else:\n            chunk_res['source_url'] = ''\n            chunk_res['original_url'] = ''\n            chunk_res['source'] = ''\n\n        chunk_res['score'] = round(match_score(chunk.chunk, keywords),\n                                   2) if len(keywords) > 0 else 0\n        chunk_res['file_id'] = chunk.file_id\n        chunk_res['parse_type'] = file.parse_type if file else ''\n\n        result.append(chunk_res)\n\n    # sort_and_filter_all_chunks(keywords, all_chunk)\n    return resp_200(result)\n\n\ndef find_lcsubstr(s1, s2):\n    m = [[0 for i in range(len(s2) + 1)] for j in range(len(s1) + 1)]\n    mmax = 0\n    p = 0\n    for i in range(len(s1)):\n        for j in range(len(s2)):\n            if s1[i] == s2[j]:\n                m[i + 1][j + 1] = m[i][j] + 1\n                if m[i + 1][j + 1] > mmax:\n                    mmax = m[i + 1][j + 1]\n                    p = i + 1\n    return s1[p - mmax:p], mmax\n\n\ndef match_score(chunk, keywords):\n    \"\"\"\n    After deduplicationkeywordsBlanketchunkWhat percentage is covered?\n    \"\"\"\n    hit_num = 0\n    # # Exact match\n    # for keyword in keywords:\n    #     if keyword in chunk:\n    #         hit_num += 1\n\n    # fuzzy matching, keywords2/3The above is included\n    for keyword in keywords:\n        res = find_lcsubstr(keyword, chunk)\n        if res[1] >= 2 / 3 * len(keyword):\n            hit_num += 1\n    return hit_num / len(keywords)\n\n\ndef sort_and_filter_all_chunks(keywords, all_chunks, thr=0.0):\n    \"\"\"\n    1. answerExtract and deduplicate keywords\n    2. Calculated keywords arechunkPercentage of coverage (=matched_key_num / all_key_num), calculate each in turnchunk\n    3. From high to low in terms of coverage ratio, yeschunkSort\n    4. Filter coverage ratio is less than thresholdThrright of privacychunkwhile retaining at least onechunk(To prevent the threshold from being too high, put all thechunkhave been filtered out)\n    \"\"\"\n    keywords = set(keywords)\n\n    chunk_match_score = []\n    for index, chunk in enumerate(all_chunks):\n        chunk_match_score.append(match_score(chunk, keywords))\n\n    sorted_res = sorted(enumerate(chunk_match_score), key=lambda x: -x[1])\n    remain_chunks = [all_chunks[elem[0]] for elem in sorted_res if elem[1] >= thr]\n    if not remain_chunks:\n        remain_chunks = [all_chunks[sorted_res[0][0]]]\n\n    return remain_chunks\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/api/router.py",
    "content": "from .endpoints.knowledge import router as knowledge_router\nfrom .endpoints.qa import router as qa_router\n\n__all__ = ['knowledge_router', 'qa_router']\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/knowledge_rag.py",
    "content": "from typing import Dict\n\nfrom langchain_core.embeddings import Embeddings\nfrom langchain_core.vectorstores import VectorStore\nfrom langchain_elasticsearch import AsyncElasticsearchStore, ElasticsearchStore\nfrom langchain_milvus import Milvus\n\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao\nfrom bisheng.knowledge.rag.elasticsearch_factory import ElasticsearchFactory\nfrom bisheng.knowledge.rag.milvus_factory import MilvusFactory\nfrom bisheng.llm.domain import LLMService\n\n\nclass KnowledgeRag:\n    \"\"\" initialize knowledge rag components \"\"\"\n\n    @classmethod\n    async def _get_knowledge(cls, knowledge: Knowledge = None, knowledge_id: int = None) -> Knowledge:\n        if not knowledge:\n            knowledge = await KnowledgeDao.aquery_by_id(knowledge_id)\n            if not knowledge:\n                raise NotFoundError.http_exception()\n        return knowledge\n\n    @classmethod\n    def _get_knowledge_sync(cls, knowledge: Knowledge = None, knowledge_id: int = None):\n        if not knowledge:\n            knowledge = KnowledgeDao.query_by_id(knowledge_id)\n            if not knowledge:\n                raise NotFoundError.http_exception()\n        return knowledge\n\n    @classmethod\n    async def init_knowledge_milvus_vectorstore(cls, invoke_user_id: int, knowledge: Knowledge = None,\n                                                knowledge_id: int = None, **kwargs) -> Milvus:\n        knowledge = await cls._get_knowledge(knowledge, knowledge_id)\n        embedding = await LLMService.get_bisheng_knowledge_embedding(model_id=int(knowledge.model),\n                                                                     invoke_user_id=invoke_user_id)\n        return cls.init_milvus_vectorstore(knowledge.collection_name, embedding, **kwargs)\n\n    @classmethod\n    def init_knowledge_milvus_vectorstore_sync(cls, invoke_user_id: int, knowledge: Knowledge = None,\n                                               knowledge_id: int = None, **kwargs) -> Milvus:\n        knowledge = cls._get_knowledge_sync(knowledge, knowledge_id)\n        embedding = LLMService.get_bisheng_knowledge_embedding_sync(model_id=int(knowledge.model),\n                                                                    invoke_user_id=invoke_user_id)\n        return cls.init_milvus_vectorstore(knowledge.collection_name, embedding, **kwargs)\n\n    @classmethod\n    async def init_knowledge_es_vectorstore(cls, knowledge: Knowledge = None, knowledge_id: int = None,\n                                            **kwargs) -> AsyncElasticsearchStore:\n        knowledge = await cls._get_knowledge(knowledge, knowledge_id)\n        return cls.init_es_vectorstore(knowledge.index_name, **kwargs)\n\n    @classmethod\n    def init_knowledge_es_vectorstore_sync(cls, knowledge: Knowledge = None, knowledge_id: int = None,\n                                           **kwargs) -> ElasticsearchStore:\n        knowledge = cls._get_knowledge_sync(knowledge, knowledge_id)\n        return cls.init_es_vectorstore_sync(knowledge.index_name, **kwargs)\n\n    @classmethod\n    def get_multi_knowledge_vectorstore_sync(cls, invoke_user_id: int, knowledge_ids: list[int], user_name: str = None,\n                                             check_auth: bool = True, include_es: bool = True,\n                                             include_milvus: bool = True) \\\n            -> Dict[int, Dict[str, VectorStore | Knowledge]]:\n        \"\"\" get multiple knowledge vectorstore, including milvus and es\n            return: {\n                knowledge_id: {\n                    \"knowledge\": Knowledge\n                    \"milvus\": Milvus,\n                    \"es\": ElasticsearchStore,\n                },\n            }\n        \"\"\"\n        if not include_es and not include_milvus:\n            raise RuntimeError('at least one of include_es and include_milvus must be True')\n\n        if check_auth:\n            if not user_name:\n                raise RuntimeError('knowledge check auth user_name must be provided')\n            knowledge_list = KnowledgeDao.judge_knowledge_permission(user_name, knowledge_ids)\n        else:\n            knowledge_list = KnowledgeDao.get_list_by_ids(knowledge_ids)\n        ret = {}\n        for knowledge in knowledge_list:\n            ret[knowledge.id] = {\n                \"knowledge\": knowledge,\n                \"milvus\": None,\n                \"es\": None,\n            }\n            if include_milvus:\n                vectorstore = cls.init_knowledge_milvus_vectorstore_sync(invoke_user_id, knowledge)\n                ret[knowledge.id][\"milvus\"] = vectorstore\n            if include_es:\n                es_vectorstore = cls.init_knowledge_es_vectorstore_sync(knowledge)\n                ret[knowledge.id][\"es\"] = es_vectorstore\n        return ret\n\n    @classmethod\n    async def get_multi_knowledge_vectorstore(cls, invoke_user_id: int, knowledge_ids: list[int], user_name: str = None,\n                                              check_auth: bool = True, include_es: bool = True,\n                                              include_milvus: bool = True) \\\n            -> Dict[int, Dict[str, VectorStore | Knowledge]]:\n        \"\"\" get multiple knowledge vectorstore, including milvus and es\n            return: {\n                knowledge_id: {\n                    \"knowledge\": Knowledge\n                    \"milvus\": Milvus,\n                    \"es\": ElasticsearchStore,\n                },\n            }\n        \"\"\"\n\n        if knowledge_ids is None or len(knowledge_ids) == 0:\n            return {}\n\n        if not include_es and not include_milvus:\n            raise RuntimeError('at least one of include_es and include_milvus must be True')\n        if check_auth:\n            if not user_name:\n                raise RuntimeError('knowledge check auth user_name must be provided')\n            knowledge_list = await KnowledgeDao.ajudge_knowledge_permission(user_name, knowledge_ids)\n        else:\n            knowledge_list = await KnowledgeDao.aget_list_by_ids(knowledge_ids)\n        ret = {}\n        for knowledge in knowledge_list:\n            ret[knowledge.id] = {\n                \"knowledge\": knowledge,\n                \"milvus\": None,\n                \"es\": None,\n            }\n            if include_milvus:\n                vectorstore = await cls.init_knowledge_milvus_vectorstore(invoke_user_id, knowledge)\n                ret[knowledge.id][\"milvus\"] = vectorstore\n            if include_es:\n                es_vectorstore = await cls.init_knowledge_es_vectorstore(knowledge)\n                ret[knowledge.id][\"es\"] = es_vectorstore\n        return ret\n\n    @classmethod\n    def init_milvus_vectorstore(cls, collection_name: str, embeddings: Embeddings, **kwargs) -> Milvus:\n        \"\"\" init milvus vectorstore by collection name and model id \"\"\"\n        return MilvusFactory.init_vectorstore(collection_name, embeddings, **kwargs)\n\n    @classmethod\n    def init_es_vectorstore(cls, index_name: str, **kwargs) -> AsyncElasticsearchStore:\n        \"\"\" init es vectorstore by index name \"\"\"\n        return ElasticsearchFactory.init_vectorstore(index_name, **kwargs)\n\n    @classmethod\n    def init_es_vectorstore_sync(cls, index_name: str, **kwargs) -> ElasticsearchStore:\n        \"\"\" init es vectorstore by index name \"\"\"\n        return ElasticsearchFactory.init_vectorstore_sync(index_name, **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/models/knowledge.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Any, List, Optional, Union, Dict\n\nfrom pydantic import BaseModel, field_validator\nfrom sqlalchemy import JSON\nfrom sqlmodel import Column, DateTime, Field, delete, func, or_, select, text, update\nfrom sqlmodel.sql.expression import Select, SelectOfScalar, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.models.role_access import AccessType, RoleAccessDao\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFile, KnowledgeFileDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\n\n\nclass KnowledgeTypeEnum(Enum):\n    QA = 1  # QAThe knowledge base upon\n    NORMAL = 0  # Docly Knowledge Base\n    PRIVATE = 2  # Workbench Personal Knowledge Base\n\n\nclass KnowledgeState(Enum):\n    UNPUBLISHED = 0\n    PUBLISHED = 1  # Document Knowledge Base Success Status\n    COPYING = 2\n    REBUILDING = 3  # Status in Document Knowledge Base Reconstruction\n    FAILED = 4  # Status of Documentation Knowledge Base Reconstruction Failure\n\n\nclass MetadataFieldType(str, Enum):\n    \"\"\" Metadata field type\"\"\"\n    STRING = \"string\"\n    NUMBER = \"number\"\n    TIME = \"time\"\n\n    # Case-insensitive enumeration matching\n    @classmethod\n    def _missing_(cls, value: Any) -> Optional[\"MetadataFieldType\"]:\n        if isinstance(value, str):\n            for member in cls:\n                if member.value.lower() == value.lower():\n                    return member\n        return None\n\n\nclass KnowledgeBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(default=None, index=True)\n    name: str = Field(index=True, min_length=1, max_length=200,\n                      description='Knowledge Base Name')\n    type: int = Field(index=False, default=0,\n                      description='Knowledge Base Type, value from KnowledgeTypeEnum')\n    description: Optional[str] = Field(default=None, index=True)\n    model: Optional[str] = Field(default=None, index=False)\n    collection_name: Optional[str] = Field(default=None, index=False)\n    index_name: Optional[str] = Field(default=None, index=False)\n    state: Optional[int] = Field(index=False, default=KnowledgeState.PUBLISHED.value,\n                                 description='value from KnowledgeState')\n\n    metadata_fields: Optional[List[Dict]] = Field(default=None, sa_column=Column(JSON, nullable=True),\n                                                  description=\"Metadata Field Configuration for Knowledge Base\")\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('model', mode='before')\n    @classmethod\n    def convert_model(cls, v: Any) -> str:\n        if isinstance(v, int):\n            v = str(v)\n        return v\n\n\nclass Knowledge(KnowledgeBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass KnowledgeRead(KnowledgeBase):\n    id: int\n    user_name: Optional[str] = None\n    copiable: Optional[bool] = None\n\n\nclass KnowledgeUpdate(BaseModel):\n    knowledge_id: int\n    name: Optional[str] = None\n    description: Optional[str] = None\n\n\nclass KnowledgeCreate(KnowledgeBase):\n    is_partition: Optional[bool] = None\n\n\nclass KnowledgeDao(KnowledgeBase):\n\n    @classmethod\n    def insert_one(cls, data: Knowledge) -> Knowledge:\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    async def async_insert_one(cls, data: Knowledge) -> Knowledge:\n        async with get_async_db_session() as session:\n            session.add(data)\n            await session.commit()\n            await session.refresh(data)\n            return data\n\n    @classmethod\n    def update_one(cls, data: Knowledge) -> Knowledge:\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    async def aupdate_one(cls, data: Knowledge) -> Knowledge:\n        async with get_async_db_session() as session:\n            session.add(data)\n            await session.commit()\n            await session.refresh(data)\n            return data\n\n    @classmethod\n    async def async_update_state(cls, knowledge_id: int, state: KnowledgeState, update_time: Optional[datetime] = None):\n        async with get_async_db_session() as session:\n            statement = update(Knowledge).where(col(Knowledge.id) == knowledge_id)\n            statement = statement.values(state=state.value,\n                                         update_time=update_time or datetime.now())\n            await session.exec(statement)\n            await session.commit()\n\n    @classmethod\n    def update_state(cls, knowledge_id: int, state: KnowledgeState, update_time: Optional[datetime] = None):\n        with get_sync_db_session() as session:\n            statement = update(Knowledge).where(col(Knowledge.id) == knowledge_id)\n            statement = statement.values(state=state.value,\n                                         update_time=update_time or datetime.now())\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def update_knowledge_update_time(cls, knowledge: Knowledge):\n        statement = update(Knowledge).where(Knowledge.id == knowledge.id).values(\n            update_time=text('NOW()'))\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def query_by_id(cls, knowledge_id: int) -> Knowledge:\n        with get_sync_db_session() as session:\n            return session.get(Knowledge, knowledge_id)\n\n    @classmethod\n    async def aquery_by_id(cls, knowledge_id: int) -> Knowledge:\n        async with get_async_db_session() as session:\n            return await session.get(Knowledge, knowledge_id)\n\n    @classmethod\n    async def async_query_by_id(cls, knowledge_id: int) -> Knowledge:\n        async with get_async_db_session() as session:\n            result = await session.execute(select(Knowledge).where(Knowledge.id == knowledge_id))\n            return result.scalars().first()\n\n    @classmethod\n    def get_list_by_ids(cls, ids: List[int]) -> List[Knowledge]:\n        with get_sync_db_session() as session:\n            return session.exec(select(Knowledge).where(Knowledge.id.in_(ids))).all()\n\n    @classmethod\n    async def aget_list_by_ids(cls, ids: List[int]) -> List[Knowledge]:\n        async with get_async_db_session() as session:\n            result = await session.exec(select(Knowledge).where(col(Knowledge.id).in_(ids)))\n            return result.all()\n\n    @classmethod\n    def _user_knowledge_filters(\n            cls,\n            statement: Any,\n            user_id: int,\n            knowledge_id_extra: List[int] = None,\n            knowledge_type: KnowledgeTypeEnum = None,\n            name: str = None,\n            page: int = 0,\n            limit: int = 0,\n            filter_knowledge: List[int] = None) -> Union[Select, SelectOfScalar]:\n        if knowledge_id_extra:\n            statement = statement.where(\n                or_(Knowledge.id.in_(knowledge_id_extra), Knowledge.user_id == user_id))\n        else:\n            statement = statement.where(Knowledge.user_id == user_id)\n        if filter_knowledge:\n            statement = statement.where(Knowledge.id.in_(filter_knowledge))\n        if knowledge_type:\n            statement = statement.where(Knowledge.type == knowledge_type.value)\n        if name:\n\n            conditions = [col(Knowledge.name).like(f'%{name}%'), col(Knowledge.description).like(f'%{name}%')]\n\n            file_knowledge_ids = KnowledgeFileDao.get_knowledge_ids_by_name(name)\n            if file_knowledge_ids:\n                conditions.append(Knowledge.id.in_(file_knowledge_ids))\n\n            if conditions:\n                statement = statement.where(or_(*conditions))\n\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        return statement\n\n    @classmethod\n    def get_user_knowledge(cls,\n                           user_id: int,\n                           knowledge_id_extra: List[int] = None,\n                           knowledge_type: KnowledgeTypeEnum = None,\n                           name: str = None,\n                           page: int = 0,\n                           limit: int = 10,\n                           filter_knowledge: List[int] = None) -> List[Knowledge]:\n        statement = select(Knowledge)\n\n        statement = cls._user_knowledge_filters(statement, user_id, knowledge_id_extra,\n                                                knowledge_type, name, page, limit,\n                                                filter_knowledge)\n\n        statement = statement.order_by(Knowledge.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_user_knowledge(cls,\n                                  user_id: int,\n                                  knowledge_id_extra: List[int] = None,\n                                  knowledge_type: KnowledgeTypeEnum = None,\n                                  name: str = None,\n                                  sort_by: str = \"update_time\",\n                                  page: int = 0,\n                                  limit: int = 10,\n                                  filter_knowledge: List[int] = None) -> List[Knowledge]:\n        statement = select(Knowledge)\n\n        statement = cls._user_knowledge_filters(statement, user_id, knowledge_id_extra,\n                                                knowledge_type, name, page, limit,\n                                                filter_knowledge)\n\n        if sort_by == \"create_time\":\n            statement = statement.order_by(Knowledge.create_time.desc())\n        elif sort_by == \"update_time\":\n            statement = statement.order_by(Knowledge.update_time.desc())\n        elif sort_by == \"name\":\n            statement = statement.order_by(text('CONVERT(name USING gbk) ASC'))\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    def count_user_knowledge(cls,\n                             user_id: int,\n                             knowledge_id_extra: List[int] = None,\n                             knowledge_type: KnowledgeTypeEnum = None,\n                             name: str = None) -> int:\n        statement = select(func.count(Knowledge.id))\n        statement = cls._user_knowledge_filters(statement, user_id, knowledge_id_extra,\n                                                knowledge_type, name)\n        with get_sync_db_session() as session:\n            return session.scalar(statement)\n\n    @classmethod\n    async def acount_user_knowledge(cls,\n                                    user_id: int,\n                                    knowledge_id_extra: List[int] = None,\n                                    knowledge_type: KnowledgeTypeEnum = None,\n                                    name: str = None) -> int:\n        statement = select(func.count(Knowledge.id))\n        statement = cls._user_knowledge_filters(statement, user_id, knowledge_id_extra,\n                                                knowledge_type, name)\n        async with get_async_db_session() as session:\n            return await session.scalar(statement)\n\n    @classmethod\n    def count_by_filter(cls, filters: List[Any]) -> int:\n        with get_sync_db_session() as session:\n            return session.scalar(select(Knowledge.id).where(*filters))\n\n    @classmethod\n    def judge_knowledge_permission(cls, user_name: str,\n                                   knowledge_ids: List[int]) -> List[Knowledge]:\n        \"\"\"\n        Based on username and knowledge baseIDList to get a list of knowledge bases that the user has permission to view\n        :param user_name: Username\n        :param knowledge_ids: The knowledge base uponIDVertical\n        :return: Returns a list of knowledge bases that the user has permissions\n        \"\"\"\n        # get user info\n        user_info = UserDao.get_user_by_username(user_name)\n        if not user_info:\n            return []\n\n        # Query the role the user belongs to\n        role_list = UserRoleDao.get_user_roles(user_info.user_id)\n        if not role_list:\n            return []\n\n        role_id_list = []\n        is_admin = False\n        for role in role_list:\n            role_id_list.append(role.role_id)\n            if role.role_id == 1:\n                is_admin = True\n        # admin User has all knowledge base permissions\n        if is_admin:\n            return KnowledgeDao.get_list_by_ids(knowledge_ids)\n\n        # query role List of knowledge bases with permissions\n        role_access_list = RoleAccessDao.find_role_access(role_id_list, [str(one) for one in knowledge_ids],\n                                                          AccessType.KNOWLEDGE)\n\n        user_knowledge_list = cls.get_user_knowledge(user_info.user_id,\n                                                     knowledge_id_extra=[int(access.third_id) for access in\n                                                                         role_access_list],\n                                                     filter_knowledge=knowledge_ids)\n        return user_knowledge_list\n\n    @classmethod\n    async def ajudge_knowledge_permission(cls, user_name: str,\n                                          knowledge_ids: List[int]) -> List[Knowledge]:\n        \"\"\"\n        By Username and Knowledge BaseIDlist, asynchronously get a list of knowledge bases that the user has permission to view\n        Args:\n            user_name:\n            knowledge_ids:\n\n        Returns:\n\n        \"\"\"\n        # get user info\n        user_info = await UserDao.aget_user_by_username(user_name)\n        if not user_info:\n            return []\n        # Query the role the user belongs to\n        role_list = await UserRoleDao.aget_user_roles(user_info.user_id)\n        if not role_list:\n            return []\n        role_id_list = []\n        is_admin = False\n        for role in role_list:\n            role_id_list.append(role.role_id)\n            if role.role_id == 1:\n                is_admin = True\n        # admin User has all knowledge base permissions\n        if is_admin:\n            return await cls.aget_list_by_ids(knowledge_ids)\n        # query role List of knowledge bases with permissions\n        role_access_list = await RoleAccessDao.afind_role_access(role_id_list, [str(one) for one in knowledge_ids],\n                                                                 AccessType.KNOWLEDGE)\n        # Query whether the knowledge base created by the user is included\n        user_knowledge_list = await cls.aget_user_knowledge(user_info.user_id,\n                                                            knowledge_id_extra=[int(access.third_id) for access in\n                                                                                role_access_list],\n                                                            filter_knowledge=knowledge_ids)\n        return user_knowledge_list\n\n    @classmethod\n    def filter_knowledge_by_ids(cls,\n                                knowledge_ids: List[int],\n                                keyword: str = None,\n                                page: int = 0,\n                                limit: int = 0) -> (List[Knowledge], int):\n        \"\"\"\n        Based on keywords and knowledge baseidFilter out the corresponding knowledge base\n\n        \"\"\"\n        statement = select(Knowledge)\n        count_statement = select(func.count(Knowledge.id))\n        if knowledge_ids:\n            statement = statement.where(Knowledge.id.in_(knowledge_ids))\n            count_statement = count_statement.where(Knowledge.id.in_(knowledge_ids))\n        if keyword:\n            statement = statement.where(\n                or_(Knowledge.name.like('%' + keyword + '%'),\n                    Knowledge.description.like('%' + keyword + '%')))\n            count_statement = count_statement.where(\n                or_(Knowledge.name.like('%' + keyword + '%'),\n                    Knowledge.description.like('%' + keyword + '%')))\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(Knowledge.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all(), session.scalar(count_statement)\n\n    @classmethod\n    def generate_all_knowledge_filter(cls,\n                                      statement,\n                                      name: str = None,\n                                      knowledge_type: KnowledgeTypeEnum = None):\n        if knowledge_type:\n            statement = statement.where(Knowledge.type == knowledge_type.value)\n\n        if name:\n            conditions = [col(Knowledge.name).like(f'%{name}%'), col(Knowledge.description).like(f'%{name}%')]\n\n            file_knowledge_ids = KnowledgeFileDao.get_knowledge_ids_by_name(name)\n            if file_knowledge_ids:\n                conditions.append(Knowledge.id.in_(file_knowledge_ids))\n\n            if conditions:\n                statement = statement.where(or_(*conditions))\n\n        return statement\n\n    @classmethod\n    def get_all_knowledge(cls,\n                          name: str = None,\n                          knowledge_type: KnowledgeTypeEnum = None,\n                          page: int = 0,\n                          limit: int = 0) -> List[Knowledge]:\n        statement = select(Knowledge)\n        statement = cls.generate_all_knowledge_filter(statement,\n                                                      name=name,\n                                                      knowledge_type=knowledge_type)\n\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(Knowledge.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_all_knowledge(cls,\n                                 name: str = None,\n                                 knowledge_type: KnowledgeTypeEnum = None,\n                                 sort_by: str = \"update_time\",\n                                 page: int = 0,\n                                 limit: int = 0) -> List[Knowledge]:\n        statement = select(Knowledge)\n        statement = cls.generate_all_knowledge_filter(statement,\n                                                      name=name,\n                                                      knowledge_type=knowledge_type)\n\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        if sort_by == \"create_time\":\n            statement = statement.order_by(Knowledge.create_time.desc())\n        elif sort_by == \"update_time\":\n            statement = statement.order_by(Knowledge.update_time.desc())\n        elif sort_by == \"name\":\n            statement = statement.order_by(text('CONVERT(name USING gbk) ASC'))\n        async with get_async_db_session() as session:\n            return (await session.exec(statement)).all()\n\n    @classmethod\n    def count_all_knowledge(cls,\n                            name: str = None,\n                            knowledge_type: KnowledgeTypeEnum = None) -> int:\n        statement = select(func.count(Knowledge.id))\n        statement = cls.generate_all_knowledge_filter(statement,\n                                                      name=name,\n                                                      knowledge_type=knowledge_type)\n        with get_sync_db_session() as session:\n            return session.scalar(statement)\n\n    @classmethod\n    async def acount_all_knowledge(cls,\n                                   name: str = None,\n                                   knowledge_type: KnowledgeTypeEnum = None) -> int:\n        statement = select(func.count(Knowledge.id))\n        statement = cls.generate_all_knowledge_filter(statement,\n                                                      name=name,\n                                                      knowledge_type=knowledge_type)\n        async with get_async_db_session() as session:\n            return await session.scalar(statement)\n\n    @classmethod\n    def update_knowledge_list(cls, knowledge_list: List[Knowledge]):\n        with get_sync_db_session() as session:\n            for knowledge in knowledge_list:\n                session.add(knowledge)\n            session.commit()\n\n    @classmethod\n    def get_knowledge_by_name(cls, name: str, user_id: int = 0) -> Knowledge:\n        \"\"\" Get Knowledge Base Details by Knowledge Base Name \"\"\"\n        statement = select(Knowledge).where(Knowledge.name == name)\n        if user_id:\n            statement = statement.where(Knowledge.user_id == user_id)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    def delete_knowledge(cls, knowledge_id: int, only_clear: bool = False):\n        \"\"\"\n        Delete or empty the knowledge base\n        \"\"\"\n        # <g id=\"Bold\">Medical Treatment:</g>knowledge file\n        with get_sync_db_session() as session:\n            session.exec(delete(KnowledgeFile).where(KnowledgeFile.knowledge_id == knowledge_id))\n            # Do not delete knowledge base records when clearing the knowledge base\n            if not only_clear:\n                session.exec(delete(Knowledge).where(Knowledge.id == knowledge_id))\n            session.commit()\n\n    @classmethod\n    def get_knowledge_by_time_range(cls, start_time: datetime, end_time: datetime, page: int = 0,\n                                    page_size: int = 0) -> List[Knowledge]:\n        \"\"\" Get a list of knowledge bases based on the creation timeframe \"\"\"\n        statement = select(Knowledge).where(\n            Knowledge.create_time >= start_time,\n            Knowledge.create_time < end_time\n        )\n        if page and page_size:\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n        statement = statement.order_by(col(Knowledge.id).asc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_first_knowledge(cls) -> Optional[Knowledge]:\n        \"\"\" Get the first knowledge base \"\"\"\n        statement = select(Knowledge).order_by(col(Knowledge.id).asc()).limit(1)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/models/knowledge_file.py",
    "content": "import json\nfrom datetime import datetime\nfrom enum import Enum\nfrom typing import List, Optional, Dict, Any, Literal\n\n# if TYPE_CHECKING:\nfrom pydantic import field_validator\nfrom sqlalchemy import JSON, Column, DateTime, String, or_, text, Text\nfrom sqlmodel import Field, delete, func, select, update, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_async_db_session, get_sync_db_session\nfrom bisheng.database.base import async_get_count, get_count\n\n\nclass KnowledgeFileStatus(Enum):\n    PROCESSING = 1  # Sedang diproses\n    SUCCESS = 2  # Berhasil\n    FAILED = 3  # Parse Failure\n    REBUILDING = 4  # Rebuilding\n    WAITING = 5  # In queue:\n    TIMEOUT = 6  # Super24Hour not parsed, parsing timeout\n\n\nclass QAStatus(Enum):\n    DISABLED = 0  # User manually closedQA\n    ENABLED = 1  # Enabled\n    PROCESSING = 2  # Sedang diproses\n    FAILED = 3  # QAFailed to insert vector library\n\n\nclass ParseType(Enum):\n    LOCAL = 'local'  # Local mode resolution\n    UNS = 'uns'  # unsService resolution, all converted topdfDoc.\n\n    # 1.3.0After the enumeration, the previous belongs to the file parsed on the version\n    ETL4LM = 'etl4lm'  # etl4lmService Insights, includingpdfLayout Analysis for\n    UN_ETL4LM = 'un_etl4lm'  # Nonetl4lmService parsing, nobboxContent, only source files andmdDoc.\n\n\nclass KnowledgeFileBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(default=None, index=True)\n    user_name: Optional[str] = Field(default=None, index=True)\n    knowledge_id: int = Field(index=True)\n    file_name: str = Field(max_length=200, index=True)\n    file_size: Optional[int] = Field(default=None, index=False, description='File size inbytes')\n    md5: Optional[str] = Field(default=None, index=False)\n    parse_type: Optional[str] = Field(default=ParseType.LOCAL.value,\n                                      index=False,\n                                      description='Files parsed in what mode')\n    split_rule: Optional[str] = Field(default=None, sa_column=Column(Text), description='Files parsed in what mode')\n    bbox_object_name: Optional[str] = Field(default='', description='bboxFiles inminioStored object name')\n    status: Optional[int] = Field(default=KnowledgeFileStatus.WAITING.value,\n                                  index=False,\n                                  description='1: Parsing;2: Resolved successfully;3: Parse Failure')\n    object_name: Optional[str] = Field(default=None, index=False, description='Files inminioStored object name')\n    user_metadata: Optional[Dict[str, Any]] = Field(default_factory=dict, sa_column=Column(JSON, nullable=True),\n                                                    description='User-defined metadata')\n    remark: Optional[str] = Field(default='', sa_column=Column(String(length=4096)))\n    updater_id: Optional[int] = Field(default=None, index=True, description='Last updated by userID')\n    updater_name: Optional[str] = Field(default=None, index=True)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass QAKnowledgeBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(default=None, index=True)\n    knowledge_id: int = Field(index=True)\n    questions: List[str] = Field(index=False)\n    answers: str = Field(index=False)\n    source: Optional[int] = Field(default=0, index=False, description='0: Unknown 1: Manual2: Audit, 3: api, 4: Batch import')\n    status: Optional[int] = Field(default=1, index=False,\n                                  description='1: Activate0: Close, the user manually closes;2: Sedang diproses3Failed to insert')\n    extra_meta: Optional[str] = Field(default=None, index=False)\n    remark: Optional[str] = Field(default='', sa_column=Column(String(length=4096)))\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('questions')\n    @classmethod\n    def validate_json(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            return v\n        if not isinstance(v, List):\n            raise ValueError('question must be a valid JSON')\n\n        return v\n\n    @field_validator('answers')\n    @classmethod\n    def validate_answer(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            return v\n        if isinstance(v, List):\n            return json.dumps(v, ensure_ascii=False)\n\n        return v\n\n\nclass KnowledgeFile(KnowledgeFileBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass QAKnowledge(QAKnowledgeBase, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True)\n    questions: Optional[List[str]] = Field(default=None, sa_column=Column(JSON))\n    answers: Optional[str] = Field(default=None, sa_column=Column(Text))\n\n\nclass KnowledgeFileRead(KnowledgeFileBase):\n    id: int\n\n\nclass KnowledgeFileCreate(KnowledgeFileBase):\n    pass\n\n\nclass QAKnowledgeUpsert(QAKnowledgeBase):\n    \"\"\"Support modification\"\"\"\n    id: Optional[int] = None\n    answers: Optional[List[str] | str] = None\n\n\nclass KnowledgeFileDao(KnowledgeFileBase):\n\n    @classmethod\n    async def query_by_id(cls, file_id: int) -> Optional[KnowledgeFile]:\n        async with get_async_db_session() as session:\n            result = await session.execute(select(KnowledgeFile).where(KnowledgeFile.id == file_id))\n            return result.scalars().first()\n\n    @classmethod\n    def query_by_id_sync(cls, file_id: int) -> Optional[KnowledgeFile]:\n        with get_sync_db_session() as session:\n            return session.exec(select(KnowledgeFile).where(KnowledgeFile.id == file_id)).first()\n\n    @classmethod\n    def get_file_simple_by_knowledge_id(cls, knowledge_id: int, page: int, page_size: int):\n        offset = (page - 1) * page_size\n        with get_sync_db_session() as session:\n            return session.query(KnowledgeFile.id, KnowledgeFile.object_name).filter(\n                KnowledgeFile.knowledge_id == knowledge_id).order_by(\n                KnowledgeFile.id.asc()).offset(offset).limit(page_size).all()\n\n    @classmethod\n    def count_file_by_knowledge_id(cls, knowledge_id: int):\n        with get_sync_db_session() as session:\n            return session.query(func.count(\n                KnowledgeFile.id)).filter(KnowledgeFile.knowledge_id == knowledge_id).scalar()\n\n    @classmethod\n    def delete_batch(cls, file_ids: List[int]) -> bool:\n        with get_sync_db_session() as session:\n            session.exec(delete(KnowledgeFile).where(KnowledgeFile.id.in_(file_ids)))\n            session.commit()\n            return True\n\n    @classmethod\n    def add_file(cls, knowledge_file: KnowledgeFile) -> KnowledgeFile:\n        with get_sync_db_session() as session:\n            session.add(knowledge_file)\n            session.commit()\n            session.refresh(knowledge_file)\n        return knowledge_file\n\n    @classmethod\n    def update(cls, knowledge_file):\n        with get_sync_db_session() as session:\n            session.add(knowledge_file)\n            session.commit()\n            session.refresh(knowledge_file)\n        return knowledge_file\n\n    @classmethod\n    async def async_update(cls, knowledge_file):\n        async with get_async_db_session() as session:\n            session.add(knowledge_file)\n            await session.commit()\n            await session.refresh(knowledge_file)\n        return knowledge_file\n\n    @classmethod\n    def update_file_status(cls, file_ids: list[int], status: KnowledgeFileStatus, reason: str = None):\n        \"\"\" Batch update file status \"\"\"\n        statement = update(KnowledgeFile).where(KnowledgeFile.id.in_(file_ids)).values(status=status.value,\n                                                                                       remark=reason)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def get_file_by_condition(cls, knowledge_id: int, md5_: str = None, file_name: str = None):\n        with get_sync_db_session() as session:\n            sql = select(KnowledgeFile).where(KnowledgeFile.knowledge_id == knowledge_id)\n            if md5_:\n                sql = sql.where(KnowledgeFile.md5 == md5_)\n            if file_name:\n                sql = sql.where(KnowledgeFile.file_name == file_name)\n            return session.exec(sql).all()\n\n    @classmethod\n    async def get_repeat_file(cls, knowledge_id: int, md5_: str = None, file_name: str = None):\n        sql = select(KnowledgeFile).where(KnowledgeFile.knowledge_id == knowledge_id)\n        if md5_ and file_name:\n            sql = sql.where(\n                or_(\n                    KnowledgeFile.md5 == md5_,\n                    KnowledgeFile.file_name == file_name\n                )\n            )\n        elif md5_:\n            sql = sql.where(KnowledgeFile.md5 == md5_)\n        elif file_name:\n            sql = sql.where(KnowledgeFile.file_name == file_name)\n        async with get_async_db_session() as session:\n            result = await session.exec(sql)\n            return result.first()\n\n    @classmethod\n    def select_list(cls, file_ids: List[int]):\n        if not file_ids:\n            return []\n        with get_sync_db_session() as session:\n            knowledge_files = session.exec(\n                select(KnowledgeFile).where(KnowledgeFile.id.in_(file_ids))).all()\n        if not knowledge_files:\n            raise ValueError('Doc.IDDoes not exist')\n        return knowledge_files\n\n    @classmethod\n    def get_file_by_ids(cls, file_ids: List[int]) -> List[KnowledgeFile]:\n        if not file_ids:\n            return []\n        with get_sync_db_session() as session:\n            return session.exec(select(KnowledgeFile).where(KnowledgeFile.id.in_(file_ids))).all()\n\n    @classmethod\n    def get_file_by_filters(cls,\n                            knowledge_id: int,\n                            file_name: str = None,\n                            status: List[int] = None,\n                            page: int = 0,\n                            page_size: int = 0,\n                            file_ids: List[int] = None) -> List[KnowledgeFile]:\n        statement = select(KnowledgeFile).where(KnowledgeFile.knowledge_id == knowledge_id)\n        if file_name:\n            statement = statement.where(KnowledgeFile.file_name.like(f'%{file_name}%'))\n        if status:\n            statement = statement.where(KnowledgeFile.status.in_(status))\n        if file_ids:\n            statement = statement.where(KnowledgeFile.id.in_(file_ids))\n        if page and page_size:\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n        statement = statement.order_by(KnowledgeFile.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_files_by_multiple_status(cls, knowledge_id: int, status_list: List[int]) -> List[KnowledgeFile]:\n        \"\"\"\n        Based on Knowledge BaseIDand status list query file\n        \n        Args:\n            knowledge_id: The knowledge base uponID\n            status_list: List of status values\n            \n        Returns:\n            List[KnowledgeFile]: Matching Files List\n        \"\"\"\n        statement = select(KnowledgeFile).where(\n            KnowledgeFile.knowledge_id == knowledge_id,\n            KnowledgeFile.status.in_(status_list)\n        )\n\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def count_file_by_filters(cls,\n                              knowledge_id: int,\n                              file_name: str = None,\n                              status: List[int] = None,\n                              file_ids: List[int] = None) -> int:\n        statement = select(func.count(\n            KnowledgeFile.id)).where(KnowledgeFile.knowledge_id == knowledge_id)\n        if file_name:\n            statement = statement.where(KnowledgeFile.file_name.like(f'%{file_name}%'))\n        if status:\n            statement = statement.where(KnowledgeFile.status.in_(status))\n        if file_ids:\n            statement = statement.where(KnowledgeFile.id.in_(file_ids))\n        with get_sync_db_session() as session:\n            return session.scalar(statement)\n\n    @classmethod\n    async def async_count_file_by_filters(cls,\n                                          knowledge_id: int,\n                                          file_name: str = None,\n                                          status: List[int] = None,\n                                          file_ids: List[int] = None) -> int:\n        statement = select(func.count(\n            KnowledgeFile.id)).where(KnowledgeFile.knowledge_id == knowledge_id)\n        if file_name:\n            statement = statement.where(KnowledgeFile.file_name.like(f'%{file_name}%'))\n        if status:\n            statement = statement.where(KnowledgeFile.status.in_(status))\n        if file_ids:\n            statement = statement.where(KnowledgeFile.id.in_(file_ids))\n        async with get_async_db_session() as session:\n            result = await session.execute(statement)\n            return result.scalar_one()\n\n    @classmethod\n    def get_knowledge_ids_by_name(cls, file_name: str) -> List[int]:\n        statement = select(KnowledgeFile.knowledge_id).where(KnowledgeFile.file_name.like(f'%{file_name}%')).group_by(\n            KnowledgeFile.knowledge_id)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def update_status_bulk(cls, file_ids: List[int], status: KnowledgeFileStatus, remark: str = \"\") -> None:\n        \"\"\"\n        Batch update file status\n\n        Args:\n            file_ids: Doc.IDVertical\n            status: New status value\n\n        Returns:\n            None\n        \"\"\"\n        if not file_ids:\n            return\n\n        statement = (\n            update(KnowledgeFile)\n            .where(col(KnowledgeFile.id).in_(file_ids))\n        )\n\n        statement = statement.values(status=status.value)\n\n        if remark:\n            statement = statement.values(remark=remark)\n\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def filter_file_by_metadata_fields(cls, knowledge_id: int, logical: Literal[\"and\", \"or\"],\n                                       metadata_filters: List[Dict[str, Dict[str, Any]]]) -> List[int]:\n        \"\"\"\n        Filter knowledge files based on user-defined metadata fields\n        :param knowledge_id: The knowledge base uponID\n        :param logical: Logical operators, supporting \"AND\" OR \"OR\"\n        :param metadata_filters: User-defined metadata fields and their corresponding values\n          [{\n            field_a: {\n                'comparison': '=',\n                'value': 'some_value',\n                'extra_filter': [\n                    {\n                        'comparison': '!=',\n                        'value': 'other_value'\n                    }\n                ]\n            }\n          }]\n        :return: Eligible Knowledge FilesIDVertical\n        \"\"\"\n\n        statement = \"select id from knowledgefile where knowledge_id = :knowledge_id and \"\n        params = {\"knowledge_id\": knowledge_id}\n\n        params_index = 1\n        field_statement = []\n        for metadata_filter in metadata_filters:\n            for key, key_info in metadata_filter.items():\n                key_comparison = key_info['comparison']\n                key_value = key_info['value']\n                extra_filter = key_info.get('extra_filter')\n                if key_value is not None:\n                    params_key = f\"tmp_params_{params_index}\"\n                    params[params_key] = key_value\n                    sub_statement = f\"{key} {key_comparison} :{params_key}\"\n                else:\n                    sub_statement = f\"{key} {key_comparison}\"\n                if extra_filter:\n                    for sub_info in extra_filter:\n                        params_index += 1\n                        params_key = f\"tmp_params_{params_index}\"\n                        params[params_key] = sub_info['value']\n                        sub_statement += f\" AND {key} {sub_info['comparison']} :{params_key}\"\n                    sub_statement = f\"({sub_statement})\"\n                field_statement.append(sub_statement)\n                params_index += 1\n        field_statement = f\" {logical} \".join(field_statement)\n        statement += f\"({field_statement})\"\n\n        with get_sync_db_session() as session:\n            file_ids = []\n            result = session.execute(text(statement), params)\n            for one in result:\n                file_ids.append(one[0])\n            return file_ids\n\n    @classmethod\n    def update_file_updater(cls, file_id: int, updater_id: int, updater_name: str) -> None:\n        \"\"\"\n        Update Knowledge File Updater Information\n        :param file_id: Knowledge DocumentsID\n        :param updater_id: User who updated  ID\n        :param updater_name: Updated By Username\n        :return: None\n        \"\"\"\n\n        statement = update(KnowledgeFile).where(col(KnowledgeFile.id) == file_id)\n\n        statement = statement.values(updater_id=updater_id, updater_name=updater_name)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n\nclass QAKnoweldgeDao(QAKnowledgeBase):\n\n    @classmethod\n    def get_qa_knowledge_by_knowledge_id(cls, knowledge_id: int, page: int, page_size: int):\n        offset = (page - 1) * page_size\n        state = select(QAKnowledge).where(\n            QAKnowledge.knowledge_id == knowledge_id, ).offset(offset).limit(page_size)\n        with get_sync_db_session() as session:\n            return session.exec(state).all()\n\n    @classmethod\n    def get_qa_knowledge_by_knowledge_ids(cls, knowledge_ids: List[int]) -> List[QAKnowledge]:\n        with get_sync_db_session() as session:\n            return session.exec(\n                select(QAKnowledge).where(QAKnowledge.knowledge_id.in_(knowledge_ids))).all()\n\n    @classmethod\n    async def aget_qa_knowledge_by_knowledge_ids(cls, knowledge_ids: List[int]) -> List[QAKnowledge]:\n        async with get_async_db_session() as session:\n            result = await session.exec(\n                select(QAKnowledge).where(col(QAKnowledge.knowledge_id).in_(knowledge_ids)))\n            return result.all()\n\n    @classmethod\n    def get_qa_knowledge_by_primary_id(cls, qa_id: int) -> QAKnowledge:\n        with get_sync_db_session() as session:\n            return session.exec(select(QAKnowledge).where(QAKnowledge.id == qa_id)).first()\n\n    @classmethod\n    def get_qa_knowledge_by_name(cls, question: List[str], knowledge_id: int, exclude_id: int = None) -> QAKnowledge:\n        with get_sync_db_session() as session:\n            group_filters = []\n            for one in question:\n                group_filters.append(func.json_contains(QAKnowledge.questions, json.dumps(one)))\n            statement = select(QAKnowledge).where(\n                or_(*group_filters)).where(QAKnowledge.knowledge_id == knowledge_id)\n            if exclude_id:\n                statement = statement.where(QAKnowledge.id != exclude_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    def update(cls, qa_knowledge: QAKnowledge):\n        if qa_knowledge.id is None:\n            raise ValueError('idTidak boleh kosong.')\n        with get_sync_db_session() as session:\n            session.add(qa_knowledge)\n            session.commit()\n            session.refresh(qa_knowledge)\n        return qa_knowledge\n\n    @classmethod\n    def delete_batch(cls, qa_ids: List[int]) -> bool:\n        with get_sync_db_session() as session:\n            session.exec(delete(QAKnowledge).where(QAKnowledge.id.in_(qa_ids)))\n            session.commit()\n            return True\n\n    @classmethod\n    def select_list(cls, ids: List[int]) -> List[QAKnowledge]:\n        with get_sync_db_session() as session:\n            QAKnowledges = session.exec(select(QAKnowledge).where(QAKnowledge.id.in_(ids))).all()\n        if not QAKnowledges:\n            raise ValueError('Knowledge base does not exist')\n        return QAKnowledges\n\n    @classmethod\n    def insert_qa(cls, qa_knowledge: QAKnowledgeUpsert):\n        with get_sync_db_session() as session:\n            qa = QAKnowledge.model_validate(qa_knowledge)\n            session.add(qa)\n            session.commit()\n            session.refresh(qa)\n        return qa\n\n    @classmethod\n    def batch_insert_qa(cls, qa_knowledges: List[QAKnowledgeUpsert]) -> List[QAKnowledge]:\n        with get_sync_db_session() as session:\n            qas = []\n            for qa_knowledge in qa_knowledges:\n                qa = QAKnowledge.model_validate(qa_knowledge)\n                qas.append(qa)\n            session.add_all(qas)\n            session.commit()\n            for qa in qas:\n                session.refresh(qa)\n            return qas\n\n    @classmethod\n    async def total_count(cls, sql):\n        async with get_async_db_session() as session:\n            return await async_get_count(session, sql)\n\n    @classmethod\n    async def query_by_condition(cls, sql):\n        async with get_async_db_session() as session:\n            result = await session.exec(sql)\n            return result.all()\n\n    @classmethod\n    def query_by_condition_v1(cls, source: List[int], create_start: str, create_end: str):\n        with get_sync_db_session() as session:\n            sql = select(QAKnowledge).where(QAKnowledge.source.in_(source)).where(\n                QAKnowledge.create_time.between(create_start, create_end))\n\n            return session.exec(sql).all()\n\n    # accordingqa_idTotal Fetched\n    @classmethod\n    async def async_count_by_id(cls, qa_id: int) -> int:\n        async with get_async_db_session() as session:\n            statement = select(func.count(QAKnowledge.id)).where(QAKnowledge.knowledge_id == qa_id)\n            return await async_get_count(session, statement)\n\n    @classmethod\n    def count_by_id(cls, qa_id: int) -> int:\n        with get_sync_db_session() as session:\n            statement = select(func.count(QAKnowledge.id)).where(QAKnowledge.knowledge_id == qa_id)\n            return get_count(session, statement)\n\n    @classmethod\n    def batch_update_status_by_ids(cls, qa_ids: List[int],\n                                   status: QAStatus,\n                                   remark: str = \"\") -> None:\n        \"\"\"\n        accordingQAkey learning pointsIDBulk Update Status\n        :param qa_ids: QAkey learning pointsIDVertical\n        :param status: Status\n        :param remark: Remark\n        :return:\n        \"\"\"\n\n        statement = (\n            update(QAKnowledge).where(col(QAKnowledge.id).in_(qa_ids))\n        )\n\n        statement = statement.values(status=status.value).values(remark=remark)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n\n    # according knowledge_id Update status\n    @classmethod\n    def update_status_by_knowledge_id(cls, knowledge_id: int, status: QAStatus, remark: str = \"\") -> None:\n        \"\"\"\n        according knowledge_id Update status\n        :param knowledge_id: The knowledge base uponID\n        :param status: Status\n        :param remark: Remark\n        :return:\n        \"\"\"\n\n        statement = (\n            update(QAKnowledge).where(col(QAKnowledge.knowledge_id) == knowledge_id)\n        )\n\n        statement = statement.values(status=status.value).values(remark=remark)\n        with get_sync_db_session() as session:\n            session.exec(statement)\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/implementations/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/implementations/knowledge_file_repository_impl.py",
    "content": "from typing import Any, Coroutine\n\nfrom sqlmodel import select, col\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.repositories.implementations.base_repository_impl import BaseRepositoryImpl\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFile\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_file_repository import KnowledgeFileRepository\n\n\nclass KnowledgeFileRepositoryImpl(BaseRepositoryImpl[KnowledgeFile, int], KnowledgeFileRepository):\n    \"\"\"Knowledge Base Repository Implementation Class\"\"\"\n\n    def __init__(self, session: AsyncSession):\n        super().__init__(session, KnowledgeFile)\n\n\n    # according knowledge_idAndknowledge_file_ids Dapatkanuser_metadata Data field\n    async def get_user_metadata_by_knowledge_file_ids(self, knowledge_id: int, knowledge_file_ids: list[int]) -> dict[\n        int | None, list[dict[str, Any]] | None]:\n        query = select(KnowledgeFile).where(\n            KnowledgeFile.knowledge_id == knowledge_id,\n            col(KnowledgeFile.id).in_(knowledge_file_ids)\n        )\n\n        result = await self.session.exec(query)\n\n        knowledge_files = result.all()\n\n        user_metadata_dict = {}\n\n        for knowledge_file in knowledge_files:\n            if knowledge_file.user_metadata:\n                # Sort by newness\n                sorted_user_metadata = dict(sorted(knowledge_file.user_metadata.items(), key=lambda item: item[1].get(\"updated_at\", 0), reverse=False))\n                user_metadata_dict[knowledge_file.id] = sorted_user_metadata\n            else:\n                user_metadata_dict[knowledge_file.id] = {}\n\n        return user_metadata_dict\n\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/implementations/knowledge_repository_impl.py",
    "content": "from typing import Union\n\nfrom sqlmodel import Session\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.repositories.implementations.base_repository_impl import BaseRepositoryImpl\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_repository import KnowledgeRepository\n\n\nclass KnowledgeRepositoryImpl(BaseRepositoryImpl[Knowledge, int], KnowledgeRepository):\n    \"\"\"Knowledge Base Repository Implementation Class\"\"\"\n\n    def __init__(self, session: Union[AsyncSession, Session]):\n        super().__init__(session, Knowledge)\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/interfaces/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/interfaces/knowledge_file_repository.py",
    "content": "from abc import ABC\nfrom typing import Any\n\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFile\n\n\nclass KnowledgeFileRepository(BaseRepository[KnowledgeFile, int], ABC):\n    \"\"\"Knowledge Base File Repository Interface Class\"\"\"\n\n    async def get_user_metadata_by_knowledge_file_ids(self, knowledge_id: int,\n                                                      knowledge_file_ids: list[int]) ->dict[\n        int | None, list[dict[str, Any]] | None]:\n        \"\"\"according knowledge_idAndknowledge_file_ids Dapatkanuser_metadata Data field\"\"\"\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/repositories/interfaces/knowledge_repository.py",
    "content": "from abc import ABC\n\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge\n\n\nclass KnowledgeRepository(BaseRepository[Knowledge, int], ABC):\n    \"\"\"Knowledge Base Repository Interface\"\"\"\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/schemas/knowledge_file_schema.py",
    "content": "from typing import Optional, Type, Any, Dict\n\nfrom pydantic import Field\n\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFileRead, KnowledgeFile\n\n\nclass KnowledgeFileInfoRes(KnowledgeFileRead):\n    \"\"\"Knowledge Base File Information Response Body\"\"\"\n    creat_user: Optional[str] = Field(default=None, description='Create user name')\n    update_user: Optional[str] = Field(default=None, description='Update user name')\n\n    @classmethod\n    def from_orm_extra(cls, model: KnowledgeFile, extra: Dict[str, Any]) -> \"KnowledgeFileInfoRes\":\n        \"\"\"FROMORMModel and Additional Information Create Response Body Instance\"\"\"\n        knowledge_file_info = cls.model_validate(model)\n\n        knowledge_file_info.creat_user = extra.get('creat_user')\n        knowledge_file_info.update_user = extra.get('update_user')\n\n        return knowledge_file_info\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/schemas/knowledge_rag_schema.py",
    "content": "from typing import Optional\n\nfrom pydantic import BaseModel, Field\n\n\nclass Metadata(BaseModel):\n    \"\"\" Metadata model for knowledge retrieval-augmented generation (RAG) documents.\"\"\"\n    document_id: Optional[int] = Field(default=None, description=\"Document ID\")\n    document_name: Optional[str] = Field(default=None, description=\"Document Name\")\n    abstract: Optional[str] = Field(default=None, description=\"Abstract of the document\")\n    chunk_index: Optional[int] = Field(default=None, description=\"Chunk Index\")\n    bbox: Optional[str] = Field(default=None, description=\"Bounding Box information\")\n    page: Optional[int] = Field(default=None, description=\"Page number\")\n    knowledge_id: Optional[int] = Field(default=None, description=\"Knowledge ID\")\n    upload_time: Optional[int] = Field(default=None, description=\"Upload timestamp\")\n    update_time: Optional[int] = Field(default=None, description=\"Update timestamp\")\n    uploader: Optional[str] = Field(default=None, description=\"Uploader's name\")\n    updater: Optional[str] = Field(default=None, description=\"Updater's name\")\n    user_metadata: Optional[dict] = Field(default=None, description=\"User-defined metadata\")\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/schemas/knowledge_schema.py",
    "content": "import re\nfrom datetime import datetime\nfrom typing import Optional, List, Any\n\nfrom pydantic import BaseModel, Field, field_validator\n\nfrom bisheng.knowledge.domain.models.knowledge import MetadataFieldType\n\n\nclass UpdatePreviewFileChunk(BaseModel):\n    knowledge_id: int = Field(..., description='The knowledge base uponID')\n    file_path: str = Field(..., description='FilePath')\n    text: str = Field(..., description='Text block Content')\n    chunk_index: int = Field(..., description='Text block index, Insidemetadatamile')\n    bbox: Optional[str] = Field(default='', description='Text blocksbboxMessage')\n\n\nclass MetadataField(BaseModel):\n    \"\"\"Metadata Field Model\"\"\"\n    field_name: str = Field(..., max_length=255, description='Metadata field name')\n    field_type: MetadataFieldType = Field(..., description='Metadata field type')\n    updated_at: int = Field(default_factory=lambda: int(datetime.now().timestamp()),\n                            description='Metadata field update timestamp')\n\n    @field_validator('field_name')\n    @classmethod\n    def validate_field_name(cls, v: str) -> str:\n        # Must consist of lowercase letters, numbers, underscores, and must begin with a lowercase letter\n        pattern = r'^[a-z][a-z0-9_]*$'\n        if not re.match(pattern, v):\n            raise ValueError(\n                'field_name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores, current value: {v}')\n        return v\n\n\nclass AddKnowledgeMetadataFieldsReq(BaseModel):\n    \"\"\"Add Knowledge Base Metadata Field Request Body\"\"\"\n    knowledge_id: int = Field(..., description='The knowledge base uponID')\n    metadata_fields: List[MetadataField] = Field(..., description='List of metadata fields to add')\n\n\nclass UpdateKnowledgeMetadataFieldsReq(BaseModel):\n    \"\"\"Update Knowledge Base Metadata Field Request Body\"\"\"\n\n    class UpdateMetadataFieldName(BaseModel):\n        \"\"\"Update Metadata Field Name Model\"\"\"\n        old_field_name: str = Field(..., description='Old Metadata Field Name')\n        new_field_name: str = Field(..., max_length=255, description='New Metadata Field Name')\n\n        @field_validator('new_field_name')\n        @classmethod\n        def validate_new_field_name(cls, v: str) -> str:\n            # Must consist of lowercase letters, numbers, underscores, and must begin with a lowercase letter\n            pattern = r'^[a-z][a-z0-9_]*$'\n            if not re.match(pattern, v):\n                raise ValueError(\n                    f\"new_field_name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores, current value: {v}\")\n            return v\n\n        @field_validator('old_field_name')\n        @classmethod\n        def validate_old_field_name(cls, v: str) -> str:\n            # Tidak boleh kosong.\n            if not v:\n                raise ValueError(\"old_field_name cannot be empty\")\n            return v\n\n    knowledge_id: int = Field(..., description='The knowledge base uponID')\n    metadata_fields: List[UpdateMetadataFieldName] = Field(..., description='List of metadata fields to update')\n\n\nclass FileUserMetaDataInfo(BaseModel):\n    field_name: str = Field(..., description='Metadata field name')\n    field_value: Optional[Any] = Field(default=None, description='Metadata field value')\n    updated_at: int = Field(default_factory=lambda: int(datetime.now().timestamp()),\n                            description='Metadata field update timestamp')\n\n\nclass ModifyKnowledgeFileMetaDataReq(BaseModel):\n    \"\"\"Change Knowledge Base File Metadata Request Body\"\"\"\n    knowledge_file_id: int = Field(..., description='Knowledge Base FilesID')\n    user_metadata_list: List[FileUserMetaDataInfo] = Field(..., description='List of file metadata to add')\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/services/knowledge_file_service.py",
    "content": "import copy\nfrom typing import List\n\nfrom loguru import logger\n\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.errcode.knowledge import KnowledgeFileNotExistError, KnowledgeMetadataFieldNotExistError, \\\n    KnowledgeMetadataFieldExistError, KnowledgeMetadataValueTypeConvertError\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.knowledge.domain import utils\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_file_repository import KnowledgeFileRepository\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_repository import KnowledgeRepository\nfrom bisheng.knowledge.domain.schemas.knowledge_file_schema import KnowledgeFileInfoRes\nfrom bisheng.knowledge.domain.schemas.knowledge_schema import ModifyKnowledgeFileMetaDataReq, MetadataField\nfrom bisheng.open_endpoints.domain.schemas.knowledge import DeleteUserMetadataReq\nfrom bisheng.user.domain.models.user import UserDao\n\n\nclass KnowledgeFileService:\n    \"\"\"Knowledge File Service Class\"\"\"\n\n    def __init__(self, knowledge_file_repository: 'KnowledgeFileRepository',\n                 knowledge_repository: 'KnowledgeRepository'):\n        self.knowledge_file_repository = knowledge_file_repository\n        self.knowledge_repository = knowledge_repository\n\n    async def get_knowledge_file_info(self, login_user: 'UserPayload', knowledge_file_id: int):\n        \"\"\"Get Knowledge File Information\"\"\"\n        knowledge_file_model = await self.knowledge_file_repository.find_by_id(\n            entity_id=knowledge_file_id)\n\n        if not knowledge_file_model:\n            raise KnowledgeFileNotExistError()\n\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_file_model.knowledge_id)\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_file_model.knowledge_id), AccessType.KNOWLEDGE\n        ):\n            raise UnAuthorizedError()\n\n        create_user = await UserDao.aget_user(user_id=knowledge_file_model.user_id)\n        update_user = await UserDao.aget_user(user_id=knowledge_file_model.updater_id)\n\n        knowledge_file_info_res = KnowledgeFileInfoRes.from_orm_extra(model=knowledge_file_model,\n                                                                      extra={\n                                                                          'creat_user': create_user.user_name if create_user else '',\n                                                                          'update_user': update_user.user_name if update_user else create_user.user_name\n                                                                      })\n\n        if not knowledge_file_info_res.user_metadata:\n            metadata_field_dict = {item['field_name']: MetadataField(**item) for item in\n                                   knowledge_model.metadata_fields or []}\n\n            for key, item in knowledge_file_info_res.user_metadata.items():\n                if key in metadata_field_dict:\n                    item['field_type'] = metadata_field_dict[key].field_type\n        return knowledge_file_info_res\n\n    @staticmethod\n    async def modify_milvus_file_user_metadata(invoke_user_id: int, knowledge_model, knowledge_file_id,\n                                               user_metadata: dict):\n        \"\"\"Change Milvus User metadata for files in\"\"\"\n        vector_client = await KnowledgeRag.init_knowledge_milvus_vectorstore(invoke_user_id, knowledge=knowledge_model,\n                                                                             metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        # Find all the data first\n        search_result = await vector_client.aclient.query(collection_name=knowledge_model.collection_name,\n                                                          filter=f\"document_id == {knowledge_file_id}\", limit=10000)\n\n        # Modify User Metadata\n        for item in search_result:\n            item[\"user_metadata\"] = user_metadata\n\n        # Bulk Update Data\n        await vector_client.aclient.upsert(collection_name=vector_client.collection_name,\n                                           data=search_result)\n\n    @staticmethod\n    async def modify_elasticsearch_file_user_metadata(knowledge_model, knowledge_file_id, user_metadata: dict):\n        \"\"\"Change Elasticsearch User metadata for files in\"\"\"\n        es_client = await KnowledgeRag.init_knowledge_es_vectorstore(knowledge=knowledge_model,\n                                                                     metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        # Use update_by_query to update eligible documents\n        res = await es_client.client.update_by_query(\n            index=knowledge_model.index_name,\n            body={\n                \"script\": {\n                    \"source\": \"ctx._source.metadata.user_metadata = params.user_metadata\",\n                    \"lang\": \"painless\",\n                    \"params\": {\"user_metadata\": user_metadata}\n                },\n                \"query\": {\n                    \"term\": {\"metadata.document_id\": knowledge_file_id}\n                }\n            }\n        )\n\n        logger.info(f\"Elasticsearch update_by_query result: {res}\")\n\n    async def modify_file_user_metadata(self, login_user: 'UserPayload',\n                                        modify_file_metadata_req: 'ModifyKnowledgeFileMetaDataReq'):\n        \"\"\"Add Knowledge File Metadata\"\"\"\n        knowledge_file_model = await self.knowledge_file_repository.find_by_id(\n            entity_id=modify_file_metadata_req.knowledge_file_id)\n\n        if not knowledge_file_model:\n            raise KnowledgeFileNotExistError()\n\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_file_model.knowledge_id)\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_file_model.knowledge_id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        metadata_field_dict = {item['field_name']: MetadataField(**item) for item in\n                               knowledge_model.metadata_fields or []}\n\n        # Initialize metadata if it's None\n        if knowledge_file_model.user_metadata is None:\n            knowledge_file_model.user_metadata = {}\n\n        # Create a new dictionary to store updated metadata\n        new_current_user_metadata = {}\n\n        for item in modify_file_metadata_req.user_metadata_list:\n            if item.field_name in metadata_field_dict.keys():\n                item_dict = item.model_dump()\n                # Data type conversion\n                try:\n                    field_type = metadata_field_dict[item.field_name].field_type\n                    field_value = utils.metadata_value_type_convert(\n                        value=item_dict['field_value'], target_type=field_type)\n                    item_dict['field_value'] = field_value\n                except Exception as e:\n                    logger.error(f\"Metadata value type conversion error: {e}\")\n                    continue\n                item_dict['field_type'] = metadata_field_dict[item.field_name].field_type\n                item_dict.pop('field_name')\n                new_current_user_metadata[item.field_name] = item_dict\n\n        # Update user metadata for knowledge files\n        knowledge_file_model.user_metadata = new_current_user_metadata\n        knowledge_file_model.updater_id = login_user.user_id\n\n        knowledge_file_model = await self.knowledge_file_repository.update(knowledge_file_model)\n\n        user_metadata = {key: value.get('field_value') for key, value in knowledge_file_model.user_metadata.items()}\n\n        # Change Milvus, Elasticsearch Corresponding metadata in\n        await self.modify_milvus_file_user_metadata(\n            login_user.user_id,\n            knowledge_model=knowledge_model,\n            knowledge_file_id=knowledge_file_model.id,\n            user_metadata=user_metadata\n        )\n\n        await self.modify_elasticsearch_file_user_metadata(\n            knowledge_model=knowledge_model,\n            knowledge_file_id=knowledge_file_model.id,\n            user_metadata=user_metadata\n        )\n\n        return knowledge_file_model\n\n    async def add_file_user_metadata(self, login_user: 'UserPayload', knowledge_id: int,\n                                     add_file_metadata_req: 'List[ModifyKnowledgeFileMetaDataReq]'):\n        \"\"\"Add Knowledge File Metadata\"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeFileNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        metadata_field_dict = {item['field_name']: MetadataField(**item) for item in\n                               knowledge_model.metadata_fields or []}\n\n        existing_files = await self.knowledge_file_repository.find_by_ids(\n            [req.knowledge_file_id for req in add_file_metadata_req])\n\n        existing_files_dict = {file.id: file for file in existing_files}\n\n        updated_knowledge_files = []\n\n        for modify_file_metadata_req in add_file_metadata_req:\n            knowledge_file_model = existing_files_dict.get(modify_file_metadata_req.knowledge_file_id)\n\n            # Check if knowledge file exists\n            if not knowledge_file_model:\n                raise KnowledgeFileNotExistError(\n                    msg=f\"Knowledge Base FilesID:{modify_file_metadata_req.knowledge_file_id} Does not exist\")\n\n            # Initialize metadata if it's None\n            if knowledge_file_model.user_metadata is None:\n                knowledge_file_model.user_metadata = {}\n\n            current_user_metadata = copy.deepcopy(knowledge_file_model.user_metadata)\n\n            for item in modify_file_metadata_req.user_metadata_list:\n                if item.field_name not in metadata_field_dict.keys():\n                    raise KnowledgeMetadataFieldNotExistError(field_name=item.field_name)\n\n                elif item.field_name in current_user_metadata.keys():\n                    raise KnowledgeMetadataFieldExistError(\n                        field_name=item.field_name,\n                        msg=f\"Knowledge Base FilesID:{modify_file_metadata_req.knowledge_file_id} Metadata field already exists:{item.field_name}\"\n                    )\n\n                item_dict = item.model_dump()\n                # Data type conversion\n                try:\n                    field_type = metadata_field_dict[item.field_name].field_type\n                    field_value = utils.metadata_value_type_convert(\n                        value=item_dict['field_value'], target_type=field_type)\n                    item_dict['field_value'] = field_value\n                except Exception as e:\n                    raise KnowledgeMetadataValueTypeConvertError(\n                        msg=f\"Meta data fields {item.field_name} Value type conversion error: {e}\")\n\n                item_dict['field_type'] = metadata_field_dict[item.field_name].field_type\n                item_dict.pop('field_name')\n                current_user_metadata[item.field_name] = item_dict\n\n            # Update user metadata for knowledge files\n            knowledge_file_model.user_metadata = current_user_metadata\n            knowledge_file_model.updater_id = login_user.user_id\n\n            updated_knowledge_files.append(knowledge_file_model)\n\n        # Bulk Update Knowledge Files\n        for knowledge_file_model in updated_knowledge_files:\n            knowledge_file_model = await self.knowledge_file_repository.update(knowledge_file_model)\n\n            user_metadata = {key: value.get('field_value') for key, value in knowledge_file_model.user_metadata.items()}\n\n            # Change Milvus, Elasticsearch Corresponding metadata in\n            await self.modify_milvus_file_user_metadata(\n                login_user.user_id,\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n            await self.modify_elasticsearch_file_user_metadata(\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n        return updated_knowledge_files\n\n    # Batch modify file user metadata\n    async def batch_modify_file_user_metadata(self, login_user: 'UserPayload',\n                                              knowledge_id: int,\n                                              modify_file_metadata_reqs: 'List[ModifyKnowledgeFileMetaDataReq]'):\n        \"\"\"Batch Modify Knowledge File Metadata\"\"\"\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeFileNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        metadata_field_dict = {item['field_name']: MetadataField(**item) for item in\n                               knowledge_model.metadata_fields or []}\n\n        existing_files = await self.knowledge_file_repository.find_by_ids(\n            [req.knowledge_file_id for req in modify_file_metadata_reqs])\n\n        existing_files_dict = {file.id: file for file in existing_files}\n\n        updated_knowledge_files = []\n\n        for modify_file_metadata_req in modify_file_metadata_reqs:\n            knowledge_file_model = existing_files_dict.get(modify_file_metadata_req.knowledge_file_id)\n\n            if not knowledge_file_model:\n                raise KnowledgeFileNotExistError(\n                    msg=f\"Knowledge Base FilesID:{modify_file_metadata_req.knowledge_file_id} Does not exist\")\n\n            # Initialize metadata if it's None\n            if knowledge_file_model.user_metadata is None:\n                knowledge_file_model.user_metadata = {}\n\n            current_user_metadata = copy.deepcopy(knowledge_file_model.user_metadata)\n\n            # Update user metadata for knowledge files\n            for item in modify_file_metadata_req.user_metadata_list:\n\n                if item.field_name not in metadata_field_dict.keys():\n                    raise KnowledgeMetadataFieldNotExistError(field_name=item.field_name)\n\n                if item.field_name not in current_user_metadata.keys():\n                    raise KnowledgeMetadataFieldNotExistError(\n                        field_name=item.field_name,\n                        msg=f\"Knowledge Base FilesID:{modify_file_metadata_req.knowledge_file_id} No metadata fields exist:{item.field_name}\"\n                    )\n\n                existing_item = current_user_metadata.get(item.field_name)\n                try:\n                    # Data Type\n                    field_type = metadata_field_dict[item.field_name].field_type\n                    # Update values and update time for existing fields\n                    field_value = utils.metadata_value_type_convert(\n                        value=item.field_value, target_type=field_type)\n                    existing_item['field_value'] = field_value\n                    current_user_metadata[item.field_name] = existing_item\n                except Exception as e:\n                    raise KnowledgeMetadataValueTypeConvertError(\n                        msg=f\"Meta data fields {item.field_name} Value type conversion error: {e}\")\n\n            knowledge_file_model.user_metadata = current_user_metadata\n            knowledge_file_model.updater_id = login_user.user_id\n\n            updated_knowledge_files.append(knowledge_file_model)\n\n        # Bulk Update Knowledge Files\n        for knowledge_file_model in updated_knowledge_files:\n            knowledge_file_model = await self.knowledge_file_repository.update(knowledge_file_model)\n\n            user_metadata = {key: value.get('field_value') for key, value in knowledge_file_model.user_metadata.items()}\n            # Change Milvus, Elasticsearch Corresponding metadata in\n            await self.modify_milvus_file_user_metadata(\n                login_user.user_id,\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n            await self.modify_elasticsearch_file_user_metadata(\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n        return updated_knowledge_files\n\n    async def batch_delete_file_user_metadata(self, login_user: 'UserPayload',\n                                              knowledge_id: int,\n                                              delete_user_metadata_req: 'List[DeleteUserMetadataReq]'):\n        \"\"\"\n        Bulk Delete Knowledge File Metadata\n        Args:\n            login_user:\n            knowledge_id:\n            delete_user_metadata_req:\n\n        Returns:\n\n        \"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeFileNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        existing_files = await self.knowledge_file_repository.find_by_ids(\n            [req.knowledge_file_id for req in delete_user_metadata_req])\n\n        existing_files_dict = {file.id: file for file in existing_files}\n\n        updated_knowledge_files = []\n        for delete_metadata_req in delete_user_metadata_req:\n            knowledge_file_model = existing_files_dict.get(delete_metadata_req.knowledge_file_id)\n\n            if not knowledge_file_model:\n                raise KnowledgeFileNotExistError(\n                    msg=f\"Knowledge Base FilesID:{delete_metadata_req.knowledge_file_id} Does not exist\")\n\n            current_user_metadata = copy.deepcopy(knowledge_file_model.user_metadata) or {}\n\n            # Delete the specified metadata field\n            for field_name in delete_metadata_req.field_names:\n\n                if field_name not in current_user_metadata.keys():\n                    raise KnowledgeMetadataFieldNotExistError(\n                        field_name=field_name,\n                        msg=f\"Knowledge Base FilesID:{delete_metadata_req.knowledge_file_id} No metadata fields exist:{field_name}\"\n                    )\n\n                current_user_metadata.pop(field_name)\n\n            knowledge_file_model.user_metadata = current_user_metadata\n            knowledge_file_model.updater_id = login_user.user_id\n\n            updated_knowledge_files.append(knowledge_file_model)\n\n        # Bulk Update Knowledge Files\n        for knowledge_file_model in updated_knowledge_files:\n            knowledge_file_model = await self.knowledge_file_repository.update(knowledge_file_model)\n\n            user_metadata = {key: value.get('field_value') for key, value in knowledge_file_model.user_metadata.items()}\n\n            # Change Milvus, Elasticsearch Corresponding metadata in\n            await self.modify_milvus_file_user_metadata(\n                login_user.user_id,\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n            await self.modify_elasticsearch_file_user_metadata(\n                knowledge_model=knowledge_model,\n                knowledge_file_id=knowledge_file_model.id,\n                user_metadata=user_metadata\n            )\n\n        return updated_knowledge_files\n\n    async def list_knowledge_file_user_metadata(self, login_user: 'UserPayload',\n                                                knowledge_id: int,\n                                                knowledge_file_ids: List[int]):\n        \"\"\"\n        List user metadata for knowledge files\n        Args:\n            login_user:\n            knowledge_id:\n            knowledge_file_ids:\n\n        Returns:\n\n        \"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(\n            entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeFileNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE\n        ):\n            raise UnAuthorizedError()\n\n        user_metadata_dict = await self.knowledge_file_repository.get_user_metadata_by_knowledge_file_ids(\n            knowledge_id=knowledge_id,\n            knowledge_file_ids=knowledge_file_ids)\n\n        return user_metadata_dict\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/services/knowledge_service.py",
    "content": "import copy\nfrom datetime import datetime\n\nfrom fastapi import BackgroundTasks\n\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.errcode.knowledge import KnowledgeNotExistError, KnowledgeMetadataFieldConflictError, \\\n    KnowledgeMetadataFieldExistError, KnowledgeMetadataFieldNotExistError, KnowledgeMetadataFieldImmutableError\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, Knowledge\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_file_repository import KnowledgeFileRepository\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_repository import KnowledgeRepository\nfrom bisheng.knowledge.domain.schemas.knowledge_schema import AddKnowledgeMetadataFieldsReq, \\\n    UpdateKnowledgeMetadataFieldsReq\nfrom bisheng.utils.util import retry_async\n\n\nclass KnowledgeService:\n    \"\"\"Service class for managing knowledge domain operations.\"\"\"\n\n    def __init__(self, knowledge_repository: 'KnowledgeRepository',\n                 knowledge_file_repository: 'KnowledgeFileRepository'):\n        self.knowledge_repository = knowledge_repository\n        self.knowledge_file_repository = knowledge_file_repository\n\n    async def add_metadata_fields(self, login_user: UserPayload, add_metadata_fields: AddKnowledgeMetadataFieldsReq):\n        \"\"\"Add metadata fields to a knowledge entity.\"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(entity_id=add_metadata_fields.knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        # Initialize metadata_fields if it's None\n        if knowledge_model.metadata_fields is None:\n            knowledge_model.metadata_fields = []\n\n        existing_field_names = {field[\"field_name\"] for field in knowledge_model.metadata_fields}\n\n        # Built field names\n        built_field_names = [item.field_name for item in KNOWLEDGE_RAG_METADATA_SCHEMA]\n\n        # Determine if the added field conflicts with an existing field\n        for field in add_metadata_fields.metadata_fields:\n            if field.field_name in existing_field_names:\n                raise KnowledgeMetadataFieldExistError(field_name=field.field_name)\n            elif field.field_name in built_field_names:\n                raise KnowledgeMetadataFieldConflictError(field_name=field.field_name)\n\n        metadata_fields = copy.deepcopy(knowledge_model.metadata_fields)\n        # Add new metadata fields, avoiding duplicates\n        for field in add_metadata_fields.metadata_fields:\n            if field.field_name not in existing_field_names:\n                metadata_fields.append(field.model_dump())\n\n        knowledge_model.metadata_fields = metadata_fields\n\n        knowledge_model = await self.knowledge_repository.update(knowledge_model)\n\n        return knowledge_model\n\n    #  Update Milvus and Elasticsearch metadata field names\n    async def update_vectorstore_metadata_field_names(self, invoke_user_id: int, knowledge_model, field_name_map):\n        \"\"\"Update metadata field names in Milvus and Elasticsearch vector stores.\"\"\"\n        # Update Milvus metadata field names\n        # milvus_vectorstore = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(knowledge=knowledge_model)\n        # Implement Milvus metadata field name update logic here\n\n        # Update Elasticsearch metadata field names\n        # es_vectorstore = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge=knowledge_model)\n        # Implement Elasticsearch metadata field name update logic here\n\n        knowledge_model_files = await self.knowledge_file_repository.find_all(knowledge_id=knowledge_model.id)\n\n        vector_client = await KnowledgeRag.init_knowledge_milvus_vectorstore(invoke_user_id, knowledge=knowledge_model,\n                                                                             metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        es_client = await KnowledgeRag.init_knowledge_es_vectorstore(knowledge=knowledge_model,\n                                                                     metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        # Requestmilvus\n        @retry_async(delay=3)\n        async def request_milvus(new_data):\n            # Bulk Update Data\n            await vector_client.aclient.upsert(collection_name=vector_client.collection_name, data=new_data)\n\n        # Requestes\n        @retry_async(delay=3)\n        async def request_es(request_body):\n            await es_client.client.update_by_query(\n                index=knowledge_model.index_name,\n                body=request_body\n            )\n\n        for knowledge_file in knowledge_model_files:\n            # Update Milvus metadata\n            # Implement Milvus metadata field name update logic for each knowledge file here\n\n            # Query all vectors in this knowledge file in Milvus.\n            search_result = await vector_client.aclient.query(collection_name=knowledge_model.collection_name,\n                                                              filter=f\"document_id == {knowledge_file.id}\", limit=10000)\n\n            # Modify User Metadata Field Name\n            for item in search_result:\n                for old_field_name, new_field_name in field_name_map.items():\n                    if old_field_name in item[\"user_metadata\"]:\n                        item[\"user_metadata\"][new_field_name] = item[\"user_metadata\"].pop(old_field_name)\n\n            # Bulk Update Data\n            await request_milvus(search_result)\n\n            # Update Elasticsearch metadata\n            # Implement Elasticsearch metadata field name update logic for each knowledge file here\n\n            # Use update_by_query to update eligible documents\n            script_lines = []\n            for old_field_name, new_field_name in field_name_map.items():\n                script_lines.append(\n                    f\"if (ctx._source.metadata.user_metadata.containsKey('{old_field_name}')) \" +\n                    \"{ ctx._source.metadata.user_metadata['\" + new_field_name + \"'] = \" +\n                    \"ctx._source.metadata.user_metadata.remove('\" + old_field_name + \"'); }\"\n                )\n            script_source = \" \".join(script_lines)\n            body = {\n                \"script\": {\n                    \"source\": script_source,\n                    \"lang\": \"painless\"\n                },\n                \"query\": {\n                    \"term\": {\"metadata.document_id\": knowledge_file.id}\n                }\n            }\n            # Update es\n            await request_es(body)\n\n            # Update knowledge file's user_metadata field\n            user_metadata_dict = copy.deepcopy(knowledge_file.user_metadata)\n            for old_field_name, new_field_name in field_name_map.items():\n                user_metadata = user_metadata_dict.pop(old_field_name, None)\n                if user_metadata is not None:\n                    user_metadata[\"updated_at\"] = int(datetime.now().timestamp())\n                    user_metadata[new_field_name] = user_metadata\n\n            knowledge_file.user_metadata = user_metadata_dict\n\n            await self.knowledge_file_repository.update(knowledge_file)\n\n    async def update_metadata_fields(self, login_user: UserPayload,\n                                     update_metadata_fields: UpdateKnowledgeMetadataFieldsReq,\n                                     background_tasks: BackgroundTasks):\n        \"\"\"Update metadata field names in a knowledge entity.\"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(entity_id=update_metadata_fields.knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        if knowledge_model.metadata_fields is None:\n            return knowledge_model  # No metadata fields to update\n\n        # Built field names\n        built_field_names = [item.field_name for item in KNOWLEDGE_RAG_METADATA_SCHEMA]\n\n        existing_field_names = {field[\"field_name\"] for field in knowledge_model.metadata_fields}\n\n        for field in update_metadata_fields.metadata_fields:\n            if field.old_field_name in built_field_names:\n                raise KnowledgeMetadataFieldImmutableError(field_name=field.old_field_name)\n            elif field.new_field_name in built_field_names:\n                raise KnowledgeMetadataFieldConflictError(field_name=field.new_field_name)\n            elif field.new_field_name in existing_field_names:\n                raise KnowledgeMetadataFieldExistError(field_name=field.new_field_name)\n            elif field.old_field_name not in existing_field_names:\n                raise KnowledgeMetadataFieldNotExistError(field_name=field.old_field_name)\n\n        field_name_map = {\n            field_update.old_field_name: field_update.new_field_name\n            for field_update in update_metadata_fields.metadata_fields\n        }\n\n        # Check if all old field names exist and new field names do not exist\n        for old_field_name in field_name_map.keys():\n            if old_field_name not in existing_field_names or field_name_map[old_field_name] in existing_field_names:\n                return knowledge_model\n\n        metadata_fields = copy.deepcopy(knowledge_model.metadata_fields)\n\n        # Update metadata field names\n        for i, field in enumerate(metadata_fields):\n            if field[\"field_name\"] in field_name_map:\n                metadata_fields[i][\"field_name\"] = field_name_map[field[\"field_name\"]]\n                metadata_fields[i][\"updated_at\"] = int(datetime.now().timestamp())\n\n        knowledge_model.metadata_fields = metadata_fields\n\n        knowledge_model = await self.knowledge_repository.update(knowledge_model)\n\n        # Milvus and ES metadata field name update logic\n        background_tasks.add_task(\n            self.update_vectorstore_metadata_field_names,\n            login_user.user_id,\n            knowledge_model,\n            field_name_map\n        )\n\n        return knowledge_model\n\n    async def delete_vectorstore_metadata_fields(self, invoke_user_id: int, knowledge_model, field_names: list[str]):\n        \"\"\"Delete metadata fields in Milvus and Elasticsearch vector stores.\"\"\"\n        # Delete Milvus metadata fields\n        # milvus_vectorstore = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(knowledge=knowledge_model)\n        # Implement Milvus metadata field deletion logic here\n\n        # Delete Elasticsearch metadata fields\n        # es_vectorstore = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge=knowledge_model)\n        # Implement Elasticsearch metadata field deletion logic here\n\n        knowledge_model_files = await self.knowledge_file_repository.find_all(knowledge_id=knowledge_model.id)\n\n        vector_client = await KnowledgeRag.init_knowledge_milvus_vectorstore(invoke_user_id, knowledge=knowledge_model,\n                                                                             metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        es_client = await KnowledgeRag.init_knowledge_es_vectorstore(knowledge=knowledge_model,\n                                                                     metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n        # Requestmilvus\n        @retry_async(delay=3)\n        async def request_milvus(new_data):\n            # Bulk Update Data\n            await vector_client.aclient.upsert(collection_name=vector_client.collection_name, data=new_data)\n\n        # Requestes\n        @retry_async(delay=3)\n        async def request_es(request_body):\n            await es_client.client.update_by_query(\n                index=knowledge_model.index_name,\n                body=request_body\n            )\n\n        for knowledge_file in knowledge_model_files:\n            # Delete Milvus metadata fields\n            # Implement Milvus metadata field deletion logic for each knowledge file here\n\n            # Query all vectors in this knowledge file in Milvus.\n            search_result = await vector_client.aclient.query(collection_name=knowledge_model.collection_name,\n                                                              filter=f\"document_id == {knowledge_file.id}\", limit=10000)\n\n            # Delete the specified metadata field\n            for item in search_result:\n                for field_name in field_names:\n                    if field_name in item[\"user_metadata\"]:\n                        del item[\"user_metadata\"][field_name]\n\n            # Bulk Update Data\n            await request_milvus(search_result)\n\n            # Delete Elasticsearch metadata fields\n            # Implement Elasticsearch metadata field deletion logic for each knowledge file here\n\n            # Use update_by_query to update eligible documents\n            script_lines = []\n            for field_name in field_names:\n                script_lines.append(\n                    f\"ctx._source.metadata.user_metadata.remove('{field_name}');\"\n                )\n            script_source = \" \".join(script_lines)\n\n            body = {\n                \"script\": {\n                    \"source\": script_source,\n                    \"lang\": \"painless\"\n                },\n                \"query\": {\n                    \"term\": {\"metadata.document_id\": knowledge_file.id}\n                }\n            }\n\n            # Update es\n            await request_es(body)\n\n            # Update knowledge file's user_metadata field\n            knowledge_file.user_metadata = {\n                key: value for key, value in knowledge_file.user_metadata.items()\n                if key not in field_names\n            }\n\n            await self.knowledge_file_repository.update(knowledge_file)\n\n    async def delete_metadata_fields(self, login_user: UserPayload, knowledge_id: int, field_names: list[str],\n                                     background_tasks: BackgroundTasks):\n        \"\"\"Delete metadata fields from a knowledge entity.\"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeNotExistError()\n\n        # Permission check\n        if not await login_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE_WRITE\n        ):\n            raise UnAuthorizedError()\n\n        # Initialize metadata_fields if it's None\n        if knowledge_model.metadata_fields is None:\n            knowledge_model.metadata_fields = []\n\n        existing_field_names = [field[\"field_name\"] for field in knowledge_model.metadata_fields]\n\n        # Check if all field names to be deleted exist\n        for field_name in field_names:\n            if field_name not in existing_field_names:\n                raise KnowledgeMetadataFieldNotExistError(field_name=field_name)\n\n        # Filter out metadata fields to be deleted\n        metadata_fields = [\n            field for field in knowledge_model.metadata_fields\n            if field['field_name'] not in field_names\n        ]\n\n        knowledge_model.metadata_fields = metadata_fields\n\n        knowledge_model = await self.knowledge_repository.update(knowledge_model)\n\n        # Milvus and ES metadata field deletion logic\n        background_tasks.add_task(\n            self.delete_vectorstore_metadata_fields,\n            login_user.user_id,\n            knowledge_model,\n            field_names\n        )\n\n        return knowledge_model\n\n    async def list_metadata_fields(self, default_user, knowledge_id):\n        \"\"\"\n        List metadata fields of a knowledge entity.\n        Args:\n            default_user:\n            knowledge_id:\n\n        Returns:\n\n        \"\"\"\n\n        knowledge_model = await self.knowledge_repository.find_by_id(entity_id=knowledge_id)\n\n        if not knowledge_model:\n            raise KnowledgeNotExistError()\n\n        # Permission check\n        if not await default_user.async_access_check(\n                knowledge_model.user_id, str(knowledge_model.id), AccessType.KNOWLEDGE\n        ):\n            raise UnAuthorizedError()\n\n        if knowledge_model.metadata_fields is None:\n            knowledge_model.metadata_fields = []\n\n        # Sortmetadata_fields by updated_at desc\n        knowledge_model.metadata_fields.sort(key=lambda x: x.get(\"updated_at\", 0), reverse=True)\n\n        return {\n            \"knowledge_id\": knowledge_model.id,\n            \"metadata_fields\": knowledge_model.metadata_fields or []\n        }\n\n    @classmethod\n    def get_all_knowledge_by_time_range(cls, start_data: datetime, end_data: datetime, page: int = 1,\n                                        page_size: int = 10):\n        \"\"\"Get all the knowledge bases created in a certain timeframe\"\"\"\n\n        return KnowledgeDao.get_knowledge_by_time_range(start_data, end_data, page, page_size)\n\n    @classmethod\n    def get_first_knowledge(cls) -> Knowledge | None:\n        return KnowledgeDao.get_first_knowledge()\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/domain/utils.py",
    "content": "from datetime import datetime\n\nfrom bisheng.knowledge.domain.models.knowledge import MetadataFieldType\n\n\n# Convert Time String to Timestamp\ndef time_str_to_timestamp(time_str):\n    try:\n        return int(time_str)\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y-%m-%d %H:%M:%S\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y-%m-%dT%H:%M:%S\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y/%m/%d %H:%M:%S\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y.%m.%d %H:%M:%S\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y-%m-%dT%H:%M:%S.%fZ\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Y-%m-%dT%H:%M:%S.%f\")\n        return int(dt.timestamp())\n    except:\n        pass\n\n    try:\n        dt = datetime.strptime(time_str, \"%Yyear%mMonth%dHarian %H:%M:%S\")\n        return int(dt.timestamp())\n    except:\n        raise ValueError(\"Unsupported time format\")\n\n\n# metadata Data Format Conversion\ndef metadata_value_type_convert(value, target_type: MetadataFieldType):\n    try:\n        if target_type == MetadataFieldType.NUMBER:\n            if not value:\n                return 0\n            return int(value)\n        elif target_type == MetadataFieldType.STRING:\n            if not value:\n                return None\n            return str(value)\n        elif target_type == MetadataFieldType.TIME:\n            if not value:\n                return None\n            timestamp = time_str_to_timestamp(value)\n            return timestamp\n        else:\n            raise ValueError(\"Unsupported target type\")\n    except Exception as e:\n        raise ValueError(f\"Failed to convert value '{value}' to type '{target_type}': {e}\")\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/rag/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/knowledge/rag/elasticsearch_factory.py",
    "content": "from typing import Optional, List, Dict\n\nfrom elasticsearch import Elasticsearch, AsyncElasticsearch\n\nfrom bisheng.common.schemas.rag_schema import RagMetadataFieldSchema\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.vectorstore import ElasticsearchStore, AsyncElasticsearchStore, BM25Strategy, AsyncBM25Strategy\n\n\ndef generate_metadata_mappings(metadata_schemas: Optional[List[RagMetadataFieldSchema]]):\n    \"\"\"\n    Generate Elasticsearch metadata mappings from RagMetadataFieldSchema list.\n    Args:\n        metadata_schemas:\n\n    Returns:\n\n    \"\"\"\n    metadata_mappings: Optional[Dict[str, any]] = None\n    for schema in metadata_schemas or []:\n        if metadata_mappings is None:\n            metadata_mappings = {}\n        if schema.field_type == 'text':\n            metadata_mappings[schema.field_name] = {'type': 'text',\n                                                    'fields': {'keyword': {'type': 'keyword', 'ignore_above': 256}}}\n        elif schema.field_type == 'boolean':\n            metadata_mappings[schema.field_name] = {'type': 'boolean'}\n        elif schema.field_type == 'int8' or schema.field_type == 'int16':\n            metadata_mappings[schema.field_name] = {'type': 'short'}\n        elif schema.field_type == 'int32':\n            metadata_mappings[schema.field_name] = {'type': 'integer'}\n        elif schema.field_type == 'int64':\n            metadata_mappings[schema.field_name] = {'type': 'long'}\n        elif schema.field_type == 'float':\n            metadata_mappings[schema.field_name] = {'type': 'float'}\n        elif schema.field_type == 'double':\n            metadata_mappings[schema.field_name] = {'type': 'double'}\n        elif schema.field_type == 'json':\n            metadata_mappings[schema.field_name] = {'type': 'flattened'}\n\n    return metadata_mappings\n\n\nclass ElasticsearchFactory:\n    @staticmethod\n    def init_vectorstore_sync(index_name: str, **kwargs) -> ElasticsearchStore:\n        \"\"\"Initialize an ElasticsearchStore vectorstore for keywords.\"\"\"\n        es_conf = settings.get_vectors_conf().elasticsearch\n\n        metadata_schemas: Optional[List[RagMetadataFieldSchema]] = kwargs.pop('metadata_schemas', None)\n\n        metadata_mappings = generate_metadata_mappings(metadata_schemas)\n\n        es_client = ElasticsearchStore(\n            index_name=index_name,\n            strategy=BM25Strategy(),\n            es_connection=Elasticsearch(hosts=es_conf.elasticsearch_url, **es_conf.ssl_verify),\n            metadata_mappings=metadata_mappings,\n            **kwargs\n        )\n        return es_client\n\n    @staticmethod\n    def init_vectorstore(index_name: str, **kwargs) -> AsyncElasticsearchStore:\n        \"\"\"Asynchronously initialize an ElasticsearchStore vectorstore for keywords.\"\"\"\n        es_conf = settings.get_vectors_conf().elasticsearch\n\n        metadata_schemas: Optional[List[RagMetadataFieldSchema]] = kwargs.pop('metadata_schemas', None)\n\n        metadata_mappings = generate_metadata_mappings(metadata_schemas)\n\n        es_client = AsyncElasticsearchStore(\n            index_name=index_name,\n            strategy=AsyncBM25Strategy(),\n            es_connection=AsyncElasticsearch(hosts=es_conf.elasticsearch_url, **es_conf.ssl_verify),\n            metadata_mappings=metadata_mappings,\n            **kwargs\n        )\n        return es_client\n"
  },
  {
    "path": "src/backend/bisheng/knowledge/rag/milvus_factory.py",
    "content": "from typing import Optional, List, Dict\n\nfrom langchain_core.embeddings import Embeddings\nfrom pymilvus import DataType\n\nfrom bisheng.common.schemas.rag_schema import RagMetadataFieldSchema\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.vectorstore import Milvus\n\n_default_index_params = {\"index_type\": \"HNSW\", \"metric_type\": \"L2\", \"params\": {\"M\": 8, \"efConstruction\": 64}}\n\n\nclass MilvusFactory:\n\n    @staticmethod\n    def init_vectorstore(collection_name: str, embedding_function: Embeddings, **kwargs) -> Milvus:\n        conf = settings.get_vectors_conf().milvus\n        connection_args = conf.connection_args.copy()\n        if connection_args.get('host') and connection_args.get('port'):\n            uri = f\"http://{connection_args.pop('host')}:{connection_args.pop('port')}\"\n            connection_args['uri'] = uri\n\n        metadata_schemas: Optional[List[RagMetadataFieldSchema]] = kwargs.pop('metadata_schemas', None)\n\n        milvus_metadata_schema: Optional[Dict[str, any]] = None\n\n        for schema in metadata_schemas or []:\n            if milvus_metadata_schema is None:\n                milvus_metadata_schema = {}\n            schema_kwargs = schema.kwargs or {}\n            if schema.field_type == 'text':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.VARCHAR,\n                                                             \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'int8':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.INT8, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'int16':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.INT16, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'int32':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.INT32, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'int64':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.INT64, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'float':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.FLOAT, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'double':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.DOUBLE, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'json':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.JSON, \"kwargs\": schema_kwargs}\n            elif schema.field_type == 'boolean':\n                milvus_metadata_schema[schema.field_name] = {'dtype': DataType.BOOL, \"kwargs\": schema_kwargs}\n\n        return Milvus(\n            embedding_function=embedding_function,\n            collection_name=collection_name,\n            connection_args=connection_args,\n            auto_id=True,\n            index_params=_default_index_params,\n            metadata_schema=milvus_metadata_schema,\n            **kwargs\n        )\n"
  },
  {
    "path": "src/backend/bisheng/linsight/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/api/endpoints/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/api/endpoints/linsight.py",
    "content": "import asyncio\nimport json\nimport os\nimport time\nfrom datetime import datetime\nfrom typing import List, Literal, Optional, Union\nfrom urllib import parse\n\nfrom fastapi import APIRouter, Depends, Body, Query, UploadFile, File, BackgroundTasks, Request, Form\nfrom loguru import logger\nfrom pydantic import BaseModel, ValidationError\nfrom sse_starlette import EventSourceResponse\nfrom starlette.responses import StreamingResponse\nfrom starlette.websockets import WebSocket\n\nfrom bisheng.api.services.invite_code.invite_code import InviteCodeService\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.linsight.domain.services.message_stream_handle import MessageStreamHandle\nfrom bisheng.linsight.domain.services.sop_manage import SOPManageService\nfrom bisheng.linsight.domain.services.workbench_impl import LinsightWorkbenchImpl\nfrom bisheng.api.v1.schema.base_schema import PageList\nfrom bisheng.linsight.domain.schemas.inspiration_schema import SOPManagementSchema, SOPManagementUpdateSchema\nfrom bisheng.linsight.domain.schemas.linsight_schema import LinsightQuestionSubmitSchema, DownloadFilesSchema, \\\n    SubmitFileSchema, LinsightToolSchema, ToolChildrenSchema\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError\nfrom bisheng.common.errcode.linsight import LinsightQuestionError, LinsightUseUpError, LinsightModifySopError, \\\n    LinsightStartTaskError, LinsightSessionVersionRunningError, LinsightQueueStatusError, FileUploadError, \\\n    SopShowcaseError\nfrom bisheng.common.errcode.server import InvalidOperationError, ResourceDownloadError\nfrom bisheng.common.schemas.telemetry.event_data_schema import ApplicationAliveEventData, ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersionDao, SessionVersionStatusEnum, \\\n    LinsightSessionVersion\nfrom bisheng.linsight.domain.models.linsight_sop import LinsightSOPDao, LinsightSOPRecord\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeTypeEnum, KnowledgeDao\nfrom bisheng.linsight.domain.services.state_message_manager import LinsightStateMessageManager, MessageData, \\\n    MessageEventType\nfrom bisheng.share_link.api.dependencies import header_share_token_parser\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.utils import util\n\nrouter = APIRouter()\n\n\n# Inspiration Upload File\n@router.post(\"/workbench/upload-file\", summary=\"Inspiration Upload File\", response_model=UnifiedResponseModel)\nasync def upload_file(\n        background_tasks: BackgroundTasks,\n        file: UploadFile = File(...),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Inspiration Upload File\n    :param background_tasks:\n    :param file: files uploaded\n    :param login_user: Logged in user information\n    :return: Upload results\n    \"\"\"\n\n    try:\n        # Call the implementation class to process file uploads\n        upload_result = await LinsightWorkbenchImpl.upload_file(file)\n\n        background_tasks.add_task(LinsightWorkbenchImpl.parse_file, upload_result, login_user.user_id)\n\n        result = {\n            \"file_id\": upload_result.get(\"file_id\"),\n            \"file_name\": upload_result.get(\"original_filename\"),\n            \"parsing_status\": upload_result.get(\"parsing_status\"),\n        }\n    except Exception as e:\n        logger.error(f\"Upload Failed: {str(e)}\")\n        return FileUploadError.return_resp()\n    finally:\n        await file.close()\n\n    # Back to upload results\n    return resp_200(data=result,\n                    message=\"Key file uploaded successfully! and start parsing. Please check the resolution status later.\")\n\n\n# Get file resolution status\n@router.post(\"/workbench/file-parsing-status\", summary=\"Get file resolution status\",\n             response_model=UnifiedResponseModel)\nasync def get_file_parsing_status(\n        file_ids: List[str] = Body(..., description=\"Doc.IDVertical\", embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Get file resolution status\n    :param file_ids:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    # Call the implementation class to get the file parsing state\n    key_prefix = LinsightWorkbenchImpl.FILE_INFO_REDIS_KEY_PREFIX\n\n    file_ids = [f\"{key_prefix}{file_id}\" for file_id in file_ids]\n\n    redis_client = await get_redis_client()\n\n    # Use Redis right of privacy amget Method Get file parsing status in batches\n    parsing_status = await redis_client.amget(file_ids)\n\n    return resp_200(data=parsing_status, message=\"File parsing status retrieved successfully\")\n\n\n@router.post(\"/workbench/file_download\", summary=\"Inspiration File Download\", response_model=UnifiedResponseModel)\nasync def linsight_file_download(\n        file_url: str = Body(..., embed=True),\n        session_version_id: str = Body(..., embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        share_link: Union['ShareLink', None] = Depends(header_share_token_parser)) -> UnifiedResponseModel:\n    session_version_model = await LinsightSessionVersionDao.get_by_id(session_version_id)\n    if not session_version_model:\n        raise NotFoundError()\n\n    # judge permission\n    if session_version_model.user_id != login_user.user_id and not login_user.is_admin():\n        # Access by sharing a link\n        if (share_link is None or\n                share_link.meta_data is None or\n                share_link.meta_data.get(\"versionId\") != session_version_id):\n            raise UnAuthorizedError()\n\n    minio_client = await get_minio_storage()\n    file_url = file_url.lstrip(\"/\")\n    if file_url.startswith(minio_client.bucket):\n        file_url = file_url[len(minio_client.bucket) + 1:]\n    file_share_url = await minio_client.get_share_link(file_url)\n    return resp_200(data={\n        \"file_path\": file_share_url\n    })\n\n\n# Submit an Idea User Issue Request\n@router.post(\"/workbench/submit\", summary=\"Submit an Idea User Issue Request\")\nasync def submit_linsight_workbench(\n        submit_obj: LinsightQuestionSubmitSchema = Body(..., description=\"Idea User Issue Submitter\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> EventSourceResponse:\n    \"\"\"\n    Submit an Idea User Issue Request\n    :param submit_obj:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    logger.info(f\"Users {login_user.user_id} Submit an Idea Question: {submit_obj.question}\")\n\n    async def event_generator():\n        \"\"\"\n        Event generator for generatingSSE events\n        \"\"\"\n        try:\n\n            system_config = await settings.aget_all_config()\n\n            # DapatkanLinsight_invitation_code\n            linsight_invitation_code = system_config.get(\"linsight_invitation_code\", False)\n\n            if linsight_invitation_code:\n                if await InviteCodeService.use_invite_code(user_id=login_user.user_id) is False:\n                    yield LinsightUseUpError().to_sse_event_instance()\n                    return\n\n            message_session_model, linsight_session_version_model = await LinsightWorkbenchImpl.submit_user_question(\n                submit_obj,\n                login_user)\n\n            response_data = {\n                \"message_session\": message_session_model.model_dump(),\n                \"linsight_session_version\": linsight_session_version_model.model_dump()\n            }\n        except Exception as e:\n            yield LinsightQuestionError(exception=e).to_sse_event_instance()\n            return\n\n        yield {\n            \"event\": \"linsight_workbench_submit\",\n            \"data\": json.dumps(response_data)\n        }\n\n        # Task Title Generation\n        title_data = await LinsightWorkbenchImpl.task_title_generate(question=submit_obj.question,\n                                                                     chat_id=message_session_model.chat_id,\n                                                                     login_user=login_user)\n\n        linsight_session_version_model.title = title_data.get(\"task_title\")\n        await LinsightSessionVersionDao.insert_one(linsight_session_version_model)\n\n        yield {\n            \"event\": \"linsight_workbench_title_generate\",\n            \"data\": json.dumps(title_data)\n        }\n\n    return EventSourceResponse(event_generator())\n\n\n# workbench Generate and Reimagine IdeasSOP\n@router.post(\"/workbench/generate-sop\", summary=\"Generate and Reimagine IdeasSOP\", response_model=UnifiedResponseModel)\nasync def generate_sop(\n        request: Request,\n        linsight_session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\"),\n        previous_session_version_id: str = Body(None, description=\"Previous Invisible Conversation VersionID\"),\n        feedback_content: str = Body(None, description=\"User feedback content\"),\n        reexecute: bool = Body(False, description=\"Whether to rerun the buildSOP\"),\n        sop_id: int = Body(None, description=\"Featured Cases'ID\"),\n        example_session_version_id: str = Body(default=None, description=\"Reference Cases'linsight_version_id\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> EventSourceResponse:\n    \"\"\"\n    Generate and Reimagine IdeasSOP\n    :param previous_session_version_id:\n    :param reexecute:\n    :param linsight_session_version_id:\n    :param feedback_content:\n    :param sop_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    logger.info(\n        f\"Start Generating and Redesigning IdeasSOP, Inscription Conversation VersionID: {linsight_session_version_id} \")\n    start_time = time.time()\n\n    session_version = await LinsightSessionVersionDao.get_by_id(linsight_session_version_id)\n\n    # Get a list of knowledge bases with permissions\n    if not session_version:\n        raise NotFoundError.http_exception()\n\n    example_sop = None\n    if sop_id:\n        sop_db = await SOPManageService.get_sop_by_id(sop_id)\n        example_sop = sop_db.content if sop_db else None\n    elif example_session_version_id:\n        example_session_version = await LinsightSessionVersionDao.get_by_id(example_session_version_id)\n        example_sop = example_session_version.sop if example_session_version else None\n    res = []\n    linsight_conf = settings.get_linsight_conf()\n    if session_version.org_knowledge_enabled and linsight_conf.max_knowledge_num > 0:\n        res, _ = await KnowledgeService.get_knowledge(request, login_user, KnowledgeTypeEnum.NORMAL, None, 1,\n                                                      linsight_conf.max_knowledge_num)\n    if session_version.personal_knowledge_enabled:\n        knowledge = await KnowledgeDao.aget_user_knowledge(login_user.user_id, None,\n                                                           KnowledgeTypeEnum.PRIVATE)\n        if knowledge:\n            res.extend(knowledge)\n\n    async def event_generator():\n        \"\"\"\n        Event generator for generatingSSE events\n        \"\"\"\n        # BuatSOP\n        sop_generate = LinsightWorkbenchImpl.generate_sop(\n            linsight_session_version_id=linsight_session_version_id,\n            previous_session_version_id=previous_session_version_id,\n            feedback_content=feedback_content,\n            reexecute=reexecute,\n            login_user=login_user,\n            knowledge_list=res,\n            example_sop=example_sop\n        )\n\n        async for event in sop_generate:\n            yield event\n\n        # End\n        yield {\n            \"event\": \"sop_generate_complete\",\n            \"data\": json.dumps({\"message\": \"SOPGeneration and re-planning complete\"})\n        }\n\n    try:\n        return EventSourceResponse(event_generator())\n    finally:\n        end_time = time.time()\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_type=ApplicationTypeEnum.LINSIGHT,\n                                              chat_id=session_version.session_id,\n\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)\n                                          ))\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationProcessEventData(\n                                              app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_type=ApplicationTypeEnum.LINSIGHT,\n                                              chat_id=session_version.session_id,\n\n                                              start_time=int(start_time),\n                                              end_time=int(end_time),\n                                              process_time=int((end_time - start_time) * 1000)\n                                          ))\n\n\n# workbench Changesop\n@router.post(\"/workbench/sop-modify\", summary=\"Modify InspirationSOP\", response_model=UnifiedResponseModel)\nasync def modify_sop(\n        sop_content: str = Body(..., description=\"SOPContents\"),\n        linsight_session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Modify InspirationSOP\n    :param sop_content:\n    :param linsight_session_version_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    session_version_model = await LinsightSessionVersionDao.get_by_id(\n        linsight_session_version_id=linsight_session_version_id)\n\n    if not session_version_model:\n        return NotFoundError.return_resp()\n    if login_user.user_id != session_version_model.user_id:\n        return UnAuthorizedError.return_resp()\n\n    try:\n        modify_res = await LinsightWorkbenchImpl.modify_sop(linsight_session_version_id=linsight_session_version_id,\n                                                            sop_content=sop_content)\n    except Exception as e:\n        return LinsightModifySopError.return_resp(data=str(e))\n    return resp_200(modify_res)\n\n\n# workbench to process\n@router.post(\"/workbench/start-execute\", summary=\"Start Executing Reims\", response_model=UnifiedResponseModel)\nasync def start_execute_sop(\n        background_tasks: BackgroundTasks,\n        linsight_session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\", embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Start Executing ReimsSOP\n    :param linsight_session_version_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    session_version_model = await LinsightSessionVersionDao.get_by_id(\n        linsight_session_version_id=linsight_session_version_id)\n    if not session_version_model:\n        return NotFoundError.return_resp()\n\n    if login_user.user_id != session_version_model.user_id:\n        return UnAuthorizedError.return_resp()\n\n    if session_version_model.status in [SessionVersionStatusEnum.COMPLETED, SessionVersionStatusEnum.TERMINATED,\n                                        SessionVersionStatusEnum.IN_PROGRESS]:\n        # The Inspiration session version has been completed or is being executed and cannot be executed again\n        return LinsightSessionVersionRunningError.return_resp()\n\n    from bisheng.linsight.worker import LinsightQueue\n    try:\n        redis_client = await get_redis_client()\n        queue = LinsightQueue('queue', namespace=\"linsight\", redis=redis_client)\n\n        await queue.put(data=linsight_session_version_id)\n        # will besopWrite to record table\n        background_tasks.add_task(SOPManageService.add_sop_record, LinsightSOPRecord(\n            name=session_version_model.title,\n            description=None,\n            user_id=login_user.user_id,\n            content=session_version_model.sop,\n            linsight_version_id=session_version_model.id,\n            create_time=session_version_model.create_time,\n        ))\n\n    except Exception as e:\n        logger.error(f\"Failed to start the Ideas task: {str(e)}\")\n        await InviteCodeService.revoke_invite_code(user_id=login_user.user_id)\n        return LinsightStartTaskError.return_resp(data=str(e))\n\n    return resp_200(data=True,\n                    message=\"Ideas execution task has started, execution results will be returned via message flow\")\n\n\n# workbench User input\n@router.post(\"/workbench/user-input\", summary=\"User input Ideas\", response_model=UnifiedResponseModel)\nasync def user_input(\n        session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\"),\n        linsight_execute_task_id: str = Body(..., description=\"Inspiration Task ExecutionID\"),\n        input_content: str = Body(..., description=\"User input\"),\n        files: Optional[List[SubmitFileSchema]] = Body(None, description=\"User-uploaded files\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    User input\n    :param files:\n    :param session_version_id:\n    :param input_content:\n    :param linsight_execute_task_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    session_version_model = await LinsightSessionVersionDao.get_by_id(\n        linsight_session_version_id=session_version_id)\n    if not session_version_model:\n        return NotFoundError.return_resp()\n\n    if login_user.user_id != session_version_model.user_id:\n        return UnAuthorizedError.return_resp()\n\n    state_message_manager = LinsightStateMessageManager(session_version_id=session_version_id)\n\n    # If there are documents Process files first\n    processed_files = await LinsightWorkbenchImpl.human_participate_add_file(session_version_model, files=files)\n\n    await state_message_manager.set_user_input(task_id=linsight_execute_task_id, user_input=input_content,\n                                               files=processed_files)\n\n    return resp_200(data=True, message=\"User input submitted\")\n\n\n# workbench Submitting Execution Result Feedback\n@router.post(\"/workbench/submit-feedback\", summary=\"Submitting Execution Result Feedback\",\n             response_model=UnifiedResponseModel)\nasync def submit_feedback(\n        background_tasks: BackgroundTasks,\n        linsight_session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\"),\n        feedback: str = Body(None, description=\"User feedback\"),\n        score: int = Body(0, ge=0, le=5, description=\"Users rating1-5cent\"),\n        is_reexecute: bool = Body(False, description=\"Whether to re-execute\"),\n        cancel_feedback: bool = Body(False, description=\"Cancel feedback\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Submitting Execution Result Feedback\n    :param background_tasks:\n    :param cancel_feedback:\n    :param linsight_session_version_id:\n    :param feedback:\n    :param score:\n    :param is_reexecute:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    session_version_model = await LinsightSessionVersionDao.get_by_id(\n        linsight_session_version_id=linsight_session_version_id)\n\n    if not session_version_model:\n        return NotFoundError.return_resp()\n\n    if login_user.user_id != session_version_model.user_id:\n        return UnAuthorizedError.return_resp()\n\n    if score is not None and 0 < score <= 5:\n        session_version_model.score = score\n        await SOPManageService.update_sop_record_score(session_version_model.id, score)\n\n    if feedback is not None:\n        session_version_model.execute_feedback = feedback\n    else:\n        session_version_model.execute_feedback = \"User did not provide feedback\"\n\n    # If the feedback is canceled\n    if cancel_feedback:\n        session_version_model.execute_feedback = \"User canceled feedback\"\n        await LinsightSessionVersionDao.insert_one(session_version_model)\n        return resp_200(data=True, message=\"Submit successful.\")\n\n    session_version_model = await LinsightSessionVersionDao.insert_one(session_version_model)\n\n    if is_reexecute:\n        # Re-implementing the Logic of Ideas\n        system_config = await settings.aget_all_config()\n\n        # DapatkanLinsight_invitation_code\n        linsight_invitation_code = system_config.get(\"linsight_invitation_code\", False)\n\n        if linsight_invitation_code:\n            if await InviteCodeService.use_invite_code(user_id=login_user.user_id) is False:\n                return LinsightUseUpError.return_resp()\n\n        # Inspiration Conversation Version\n        linsight_session_version_model = LinsightSessionVersion(\n            session_id=session_version_model.session_id,\n            user_id=login_user.user_id,\n            question=session_version_model.question,\n            tools=session_version_model.tools,\n            org_knowledge_enabled=session_version_model.org_knowledge_enabled,\n            personal_knowledge_enabled=session_version_model.personal_knowledge_enabled,\n            files=session_version_model.files,\n            title=session_version_model.title\n        )\n        linsight_session_version_model = await LinsightSessionVersionDao.insert_one(linsight_session_version_model)\n\n        return resp_200(data=linsight_session_version_model.model_dump(),\n                        message=\"The submission successfully succeeded.\")\n    else:\n\n        if feedback is not None and feedback.strip() != \"\":\n            await SOPManageService.update_sop_record_feedback(session_version_model.id, feedback)\n\n        return resp_200(data=True, message=\"Submit successful.\")\n\n\n# workbench Termination\n@router.post(\"/workbench/terminate-execute\", summary=\"Termination of execution of Ideas\",\n             response_model=UnifiedResponseModel)\nasync def terminate_execute(\n        linsight_session_version_id: str = Body(..., description=\"Inspiration Conversation VersionID\", embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Termination of execution of Ideas\n    :param linsight_session_version_id:\n    :param login_user:\n    :return:\n    \"\"\"\n    # The logic of executing Spirituality is now terminated\n    session_version_model = await LinsightSessionVersionDao.get_by_id(\n        linsight_session_version_id=linsight_session_version_id)\n\n    if not session_version_model:\n        return NotFoundError.return_resp()\n    if login_user.user_id != session_version_model.user_id:\n        return UnAuthorizedError.return_resp()\n\n    if session_version_model.status == SessionVersionStatusEnum.COMPLETED:\n        # return resp_500(code=400, message=\"Execution cannot be terminated because the Inspiration session version has been completed\")\n        return InvalidOperationError.return_resp()\n\n    if session_version_model.status == SessionVersionStatusEnum.TERMINATED:\n        # return resp_500(code=400, message=\"Execution terminated for Inspiration session version\")\n        return InvalidOperationError.return_resp()\n\n    from bisheng.linsight.worker import LinsightQueue\n    redis_client = await get_redis_client()\n    queue = LinsightQueue('queue', namespace=\"linsight\", redis=redis_client)\n\n    try:\n        # Remove task from queue\n        await queue.remove(linsight_session_version_id)\n    except Exception as e:\n        logger.error(f\"Failed to delete queue task: {str(e)}\")\n\n    # Update status is terminated\n    session_version_model.status = SessionVersionStatusEnum.TERMINATED\n\n    state_message_manager = LinsightStateMessageManager(session_version_id=linsight_session_version_id)\n\n    await state_message_manager.set_session_version_info(session_version_model)\n\n    state_message_manager = LinsightStateMessageManager(session_version_id=session_version_model.id)\n    # Push termination message\n    await state_message_manager.push_message(\n        MessageData(\n            event_type=MessageEventType.TASK_TERMINATED,\n            data={\n                \"message\": \"Task has been actively stopped by the user\",\n                \"session_id\": session_version_model.id,\n                \"terminated_at\": datetime.now().isoformat()\n            }\n        )\n    )\n\n    return resp_200(data=True, message=\"Idea Execution Terminated\")\n\n\n# Get all the Inspiration information for the current session\n@router.get(\"/workbench/session-version-list\", summary=\"Get all the Inspiration information for the current session\",\n            response_model=UnifiedResponseModel)\nasync def get_linsight_session_version_list(\n        session_id: str = Query(..., description=\"SessionsID\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        share_link: Union['ShareLink', None] = Depends(header_share_token_parser)\n) -> UnifiedResponseModel:\n    \"\"\"\n    Get all the Inspiration information for the current session\n    :param share_link:\n    :param session_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    linsight_session_version_models = await LinsightWorkbenchImpl.get_linsight_session_version_list(session_id)\n\n    if linsight_session_version_models and login_user.user_id != linsight_session_version_models[0].user_id:\n        # Access by sharing a link\n        session_version_ids = [model.id for model in linsight_session_version_models]\n\n        # Access by sharing a link\n        if (share_link is None or\n                share_link.meta_data is None or\n                share_link.meta_data.get(\"versionId\") not in session_version_ids):\n            return UnAuthorizedError.return_resp()\n\n        # Only return to the shared version of the Inspiration session\n        linsight_session_version_models = [\n            model for model in linsight_session_version_models if model.id == share_link.meta_data.get(\"versionId\")\n        ]\n\n    return resp_200([model.model_dump() for model in linsight_session_version_models])\n\n\n# Get task execution details\n@router.get(\"/workbench/execute-task-detail\", summary=\"Get task execution details\", response_model=UnifiedResponseModel)\nasync def get_execute_task_detail(\n        session_version_id: str = Query(..., description=\"Inspiration Conversation VersionID\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        share_link: Union['ShareLink', None] = Depends(header_share_token_parser)) -> UnifiedResponseModel:\n    \"\"\"\n    Get task execution details\n    :param share_link:\n    :param session_version_id:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    execute_task_models = await LinsightWorkbenchImpl.get_execute_task_detail(session_version_id)\n\n    if not execute_task_models:\n        return resp_200([])\n\n    linsight_session_version_model = await LinsightSessionVersionDao.get_by_id(session_version_id)\n\n    if login_user.user_id != linsight_session_version_model.user_id:\n        # Access by sharing a link\n        if (share_link is None or\n                share_link.meta_data is None or\n                share_link.meta_data.get(\"versionId\") != session_version_id):\n            return UnAuthorizedError.return_resp()\n\n    return resp_200(execute_task_models)\n\n\n# Creating an Idea Task Message Flow websocket\n@router.websocket(\"/workbench/task-message-stream\", name=\"task_message_stream\")\nasync def task_message_stream(\n        websocket: WebSocket,\n        session_version_id: str = Query(..., description=\"Inspiration Conversation VersionID\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user_from_ws)):\n    \"\"\"\n    Creating an Idea Task Message Flow websocket\n    :param Authorize:\n    :param websocket:\n    :param session_version_id:\n    :return:\n    \"\"\"\n    start_time = time.time()\n    try:\n        message_handler = MessageStreamHandle(websocket=websocket, session_version_id=session_version_id)\n\n        await message_handler.connect()\n\n    except Exception as e:\n        await websocket.close(code=1000, reason=str(e))\n        return\n    finally:\n        end_time = time.time()\n        session_version_info = await LinsightSessionVersionDao.get_by_id(session_version_id)\n\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_type=ApplicationTypeEnum.LINSIGHT,\n                                              chat_id=session_version_info.session_id if session_version_info else \"\",\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)\n                                          ))\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationProcessEventData(\n                                              app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                              app_type=ApplicationTypeEnum.LINSIGHT,\n                                              chat_id=session_version_info.session_id if session_version_info else \"\",\n\n                                              start_time=int(start_time),\n                                              end_time=int(end_time),\n                                              process_time=int((end_time - start_time) * 1000)\n                                          ))\n\n\n# Batch Download Task Files\n@router.post(\"/workbench/batch-download-files\", summary=\"Batch Download Task Files\")\nasync def batch_download_files(\n        zip_name: str = Body(..., description=\"Package name\"),\n        file_info_list: List[DownloadFilesSchema] = Body(..., description=\"File Information List\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    Batch Download Task Files\n    :param zip_name:\n    :param file_info_list:\n    :param login_user:\n    :return:\n    \"\"\"\n\n    try:\n        # Call to implement class processing batch download\n        zip_bytes = await LinsightWorkbenchImpl.batch_download_files(file_info_list)\n\n        zip_name = zip_name if os.path.splitext(zip_name)[-1] == \".zip\" else f\"{zip_name}.zip\"\n        # Convert to unicode String\n        zip_name = parse.quote(zip_name)\n        return StreamingResponse(\n            iter([zip_bytes]),\n            media_type=\"application/zip\",\n            headers={\n                \"Content-Disposition\": f\"attachment; filename={zip_name}\"\n            }\n        )\n    except Exception as e:\n        logger.error(f\"Failed to download file in bulk: {str(e)}\")\n        return ResourceDownloadError.return_resp(data=str(e))\n\n\n# Get Queue Queue Status\n@router.get(\"/workbench/queue-status\", summary=\"Get Ideas Queue Queue Status\", response_model=UnifiedResponseModel)\nasync def get_queue_status(\n        session_version_id: str = Query(..., description=\"Inspiration Conversation VersionID\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Get Ideas Queue Queue Status\n    :param session_version_id:\n    :param login_user:\n    :return:\n    \"\"\"\n    from bisheng.linsight.worker import LinsightQueue\n    redis_client = await get_redis_client()\n    queue = LinsightQueue('queue', namespace=\"linsight\", redis=redis_client)\n    try:\n        index = await queue.index(session_version_id)\n        return resp_200(data={\"index\": index}, message=\"Get Ideas queue queue status successfully\")\n    except Exception as e:\n        logger.error(f\"Failed to get Ideas queue queue status: {str(e)}\")\n        return LinsightQueueStatusError.return_resp(data=str(e))\n\n\n# InspirationmdTransferpdf or docx Mengunduh\n@router.post(\"/workbench/download-md-to-pdf-or-docx\", summary=\"InspirationmdTransferpdf or docx Mengunduh\")\nasync def download_md_to_pdf_or_docx(\n        file_info: DownloadFilesSchema = Body(..., description=\"File information\"),\n        to_type: Literal[\"pdf\", \"docx\"] = Body(..., description=\"the target file type of the conversion,pdfORdocx\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"\n    InspirationmdTransferpdf or docx Mengunduh\n    :param file_info:\n    :param to_type:\n    :param login_user:\n    :return:\n    \"\"\"\n    try:\n        # Call the implementation class to process the file download\n        file_name, file_bytes = await LinsightWorkbenchImpl.download_file(file_info)\n\n        md_str = file_bytes.decode('utf-8')\n\n        # Filename Removal Extension\n        file_name = os.path.splitext(file_name)[0]\n\n        if to_type == \"pdf\":\n            from bisheng.common.utils.markdown_cmpnt.md_to_pdf import md_to_pdf_bytes\n            converted_bytes = await util.sync_func_to_async(md_to_pdf_bytes)(md_str)\n            file_name = f\"{file_name}.pdf\"\n            content_type = \"application/pdf\"\n        else:\n            from bisheng.common.utils.markdown_cmpnt.md_to_docx.markdocx import MarkDocx\n            mark_docx = MarkDocx()\n            converted_bytes, _ = await util.sync_func_to_async(mark_docx)(md_str)\n            file_name = f\"{file_name}.docx\"\n            content_type = \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n        # Convert to unicode String\n        file_name = parse.quote(file_name)\n        return StreamingResponse(\n            iter([converted_bytes]),\n            media_type=content_type,\n            headers={\n                \"Content-Disposition\": f\"attachment; filename={file_name}\"\n            }\n        )\n    except Exception as e:\n        logger.error(f\"This content failed to load: {str(e)}\")\n        return ResourceDownloadError.return_resp(data=str(e))\n\n\n@router.post(\"/sop/add\", summary=\"Add InspirationSOP\", response_model=UnifiedResponseModel)\nasync def add_sop(\n        sop_obj: SOPManagementSchema = Body(..., description=\"SOPObjects\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Add InspirationSOP\n    :return:\n    \"\"\"\n\n    if not login_user.is_admin():\n        return UnAuthorizedError.return_resp()\n\n    return await SOPManageService.add_sop(sop_obj, user_id=login_user.user_id)\n\n\n@router.post(\"/sop/update\", summary=\"Update IdeasSOP\", response_model=UnifiedResponseModel)\nasync def update_sop(\n        sop_obj: SOPManagementUpdateSchema = Body(..., description=\"SOPObjects\"),\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Update IdeasSOP\n    :return:\n    \"\"\"\n    sop_obj.user_id = login_user.user_id\n    return await SOPManageService.update_sop(sop_obj, update_version_id=False)\n\n\n@router.get(\"/sop/list\", summary=\"Get IdeasSOPVertical\", response_model=UnifiedResponseModel)\nasync def get_sop_list(\n        keywords: str = Query(None, description=\"Keywords Search\"),\n        showcase: bool = Query(None, description=\"Get featured cases only?\"),\n        page: int = Query(1, ge=1, description=\"Page\"),\n        page_size: int = Query(10, ge=1, le=100, description=\"Items per page\"),\n        sort: Literal[\"asc\", \"desc\"] = Query(\"desc\", description=\"Sort ByascORdesc\"),\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Get IdeasSOPVertical\n    :return:\n    \"\"\"\n\n    sop_pages = await SOPManageService.get_sop_list(keywords=keywords, showcase=showcase, page=page,\n                                                    page_size=page_size,\n                                                    sort=sort)\n    return resp_200(data=sop_pages)\n\n\n@router.get(\"/sop/record\", summary=\"Get IdeasSOPRecord\", response_model=UnifiedResponseModel)\nasync def get_sop_record(login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                         keyword: str = Query(None, description=\"Search keyword ...\"),\n                         sort: str = Query(default='desc', description=\"Sort ByascORdesc\"),\n                         page: int = Query(1, ge=1, description=\"Page\"),\n                         page_size: int = Query(10, ge=1, le=100, description=\"Items per page\")):\n    res, count = await SOPManageService.get_sop_record(keyword, sort, page, page_size)\n    return resp_200(PageList(total=count, list=res))\n\n\n@router.post(\"/sop/record/sync\", summary=\"SynchronoussopRecord toSOPGallery\", response_model=UnifiedResponseModel)\nasync def sync_sop_record(\n        login_user: UserPayload = Depends(UserPayload.get_admin_user),\n        record_ids: list[int] = Body(..., description=\"sopThe only one in the record sheetid\"),\n        override: Optional[bool] = Body(default=False,\n                                        description=\"Force override or not\"),\n        save_new: Optional[bool] = Body(default=False,\n                                        description=\"Do you want to save as newsop\")) -> UnifiedResponseModel:\n    \"\"\"\n    SynchronousSOP\"Log to\"SOPGallery\n    \"\"\"\n    repeat_name = await SOPManageService.sync_sop_record(record_ids, override, save_new)\n    return resp_200(data={\n        \"repeat_name\": repeat_name,\n    }, message=\"success\")\n\n\n@router.post(\"/sop/upload\", summary=\"Batch importSOPWarehousing\", response_model=UnifiedResponseModel)\nasync def upload_sop_file(\n        file: UploadFile = File(..., description=\"Uploaded bySOPDoc.\"),\n        override: Optional[bool] = Body(default=False, description=\"Force override or not\"),\n        save_new: Optional[bool] = Body(default=False, description=\"Do you want to save as newsop\"),\n        ignore_error: Optional[bool] = Body(default=False,\n                                            description=\"Whether to ignore the file and find the wrong record\"),\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Batch importSOPWarehousing\n    \"\"\"\n\n    try:\n        success_rows, error_rows, repeat_rows = await SOPManageService.upload_sop_file(login_user, file, ignore_error,\n                                                                                       override, save_new)\n\n        return resp_200(data={\n            \"success_rows\": success_rows,\n            \"error_rows\": error_rows,\n            \"repeat_rows\": repeat_rows,\n        })\n    except Exception as e:\n        raise e\n    finally:\n        await file.close()\n\n\n@router.delete(\"/sop/remove\", summary=\"Delete IdeasSOP\", response_model=UnifiedResponseModel)\nasync def remove_sop(\n        sop_ids: List[int] = Body(..., description=\"SOPUniqueness quantificationIDVertical\", embed=True),\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Delete IdeasSOP\n    :return:\n    \"\"\"\n\n    return await SOPManageService.remove_sop(sop_ids, login_user)\n\n\n@router.get(\"/sop/showcase\", summary=\"InspirationsopLibrary's Featured Cases\", response_model=UnifiedResponseModel)\nasync def get_sop_banner(\n        page: int = Query(1, ge=1, description=\"Page\"),\n        page_size: int = Query(10, ge=1, le=100, description=\"Items per page\"),\n        sort: Literal[\"asc\", \"desc\"] = Query(\"desc\", description=\"Sort ByascORdesc\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Set or cancel IdeasSOPLibrary's Featured Cases\n    :return:\n    \"\"\"\n    sop_pages = await SOPManageService.get_sop_list(showcase=True, page=page, page_size=page_size, sort=sort)\n    return resp_200(data=sop_pages)\n\n\n@router.post(\"/sop/showcase\", summary=\"Set or unset a featured case for Inspirations\",\n             response_model=UnifiedResponseModel)\nasync def set_sop_banner(\n        sop_id: int = Body(..., description=\"SOPUniqueness quantificationID\"),\n        showcase: bool = Body(..., description=\"Set as featured case or not\"),\n        login_user: UserPayload = Depends(UserPayload.get_admin_user)) -> UnifiedResponseModel:\n    \"\"\"\n    Set or cancel IdeasSOPLibrary's Featured Cases\n    :return:\n    \"\"\"\n    # CorrectionSOPpresence or does it\n    existing_sop = await LinsightSOPDao.get_sops_by_ids([sop_id])\n    if not existing_sop:\n        raise NotFoundError.http_exception(msg=\"sop not found\")\n    if showcase:\n        # Setting as featured case requires checking for run results\n        existing_sop = existing_sop[0]\n        if not existing_sop.linsight_version_id:\n            raise SopShowcaseError.http_exception()\n        execute_task_models = await LinsightWorkbenchImpl.get_execute_task_detail(existing_sop.linsight_version_id)\n        if not execute_task_models:\n            raise SopShowcaseError.http_exception()\n\n    await LinsightSOPDao.set_sop_showcase(sop_id, showcase)\n    return resp_200()\n\n\n@router.get(\"/sop/showcase/result\", summary=\"Obtain the results of the execution of the selected cases of Lingsi\",\n            response_model=UnifiedResponseModel)\nasync def get_sop_showcase_result(\n        sop_id: int = Query(None, description=\"SOPUniqueness quantificationID\"),\n        linsight_version_id: str = Query(None,\n                                         description=\"Inspiration Conversation VersionID, use this parameter first\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)) -> UnifiedResponseModel:\n    if not linsight_version_id:\n        # CorrectionSOPpresence or does it\n        existing_sop = await LinsightSOPDao.get_sops_by_ids([sop_id])\n        if not existing_sop:\n            raise NotFoundError.http_exception(msg=\"sop not found\")\n        linsight_version_id = existing_sop[0].linsight_version_id\n    if not linsight_version_id:\n        return resp_200(data={\"version_info\": None, \"execute_tasks\": []})\n    version_info = await LinsightSessionVersionDao.get_by_id(linsight_version_id)\n    # Outstanding sessions do not return execution results\n    if not version_info or version_info.status != SessionVersionStatusEnum.COMPLETED:\n        return resp_200(data={\n            \"version_info\": None,\n            \"execute_tasks\": []\n        })\n    execute_task_models = await LinsightWorkbenchImpl.get_execute_task_detail(linsight_version_id)\n    return resp_200(data={\n        \"version_info\": version_info,\n        \"execute_tasks\": execute_task_models\n    })\n\n\nclass IntegratedExecuteRequestBody(BaseModel):\n    query: Optional[str] = Body(None, description=\"User Submitted Questions\")\n    sop_content: Optional[str] = Body(None, description=\"User SubmittedSOPContents\")\n    tool_ids: List[int] = Body(None, description=\"Selected ToolsIDVertical\")\n    org_knowledge_enabled: bool = Body(False, description=\"Whether to enable organization knowledge base\")\n    personal_knowledge_enabled: bool = Body(False, description=\"Whether or not to enable Personal Knowledge Base\")\n    # Generate Inspiration OnlySOPNo\n    only_generate_sop: bool = Body(False, description=\"Whether to generate onlySOPNo\")\n\n\n# Lingsi Integrated Execution Interface\n@router.post(\"/integrated-execute\", summary=\"Lingsi Integrated Execution Interface\")\nasync def integrated_execute(\n        request: Request,\n        body_param: str = Form(..., description=\"Request Body Parameters,JSONString\",\n                               example='{\"query\": \"Please write one for mePythonfunction that calculates the sum of two numbers.\", \"tool_ids\": [1, 2], \"org_knowledge_enabled\": true, \"personal_knowledge_enabled\": false}'),\n        files: List[UploadFile] = File(None, description=\"Uploaded files list:\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user)\n) -> EventSourceResponse:\n    \"\"\"\n    Lingsi Integrated Execution Interface\n    :param body_param: Request Body Parameters,JSONString\n    :param request: Request object\n    :param files: Uploaded files list:\n    :param login_user: Logged in user information\n    :return: SSEEvent Flow Response\n    \"\"\"\n\n    # ======================== Parameter Validation ========================\n    try:\n        body_param = IntegratedExecuteRequestBody.model_validate_json(body_param)\n\n        if not body_param.query and not body_param.sop_content:\n            logger.error(\n                f\"Users {login_user.user_id} Bad request body parameters: queryAndsop_contentCannot be empty at the same time\")\n            return EventSourceResponse(iter([{\n                \"event\": \"error\",\n                \"data\": json.dumps({\n                    \"error\": \"Bad request body parameters\",\n                    \"message\": \"queryAndsop_contentCannot be empty at the same time\",\n                    \"code\": \"PARAM_ERROR\"\n                })\n            }]))\n\n    except ValidationError as e:\n        logger.error(f\"Users {login_user.user_id} Request body parameter parsing failed: {str(e)}\")\n        return EventSourceResponse(iter([{\n            \"event\": \"error\",\n            \"data\": json.dumps({\n                \"error\": \"Request body parameter parsing failed\",\n                \"message\": str(e),\n                \"code\": \"PARAM_VALIDATION_ERROR\"\n            })\n        }]))\n    except Exception as e:\n        logger.error(f\"Users {login_user.user_id} Parameter parsing exception: {str(e)}\")\n        return EventSourceResponse(iter([{\n            \"event\": \"error\",\n            \"data\": json.dumps({\n                \"error\": \"Parameter parsing exception\",\n                \"message\": str(e),\n                \"code\": \"PARAM_PARSE_ERROR\"\n            })\n        }]))\n\n    logger.info(f\"Users {login_user.user_id} Submit an Idea Question: {body_param.query}\")\n\n    # ======================== Upload file and parse ========================\n    upload_file_results = []\n    if files:\n        logger.info(f\"Users {login_user.user_id} Start Upload {len(files)} files\")\n\n        for idx, file in enumerate(files):\n            try:\n                # File size and type validation\n                if file.size and file.size > 100 * 1024 * 1024:  # 100MBLimit\n                    raise ValueError(f\"Doc. {file.filename} Size exceeds limit(100MB)\")\n\n                if not file.filename:\n                    raise ValueError(f\"Doc. {idx + 1} The uploaded file has no filename\")\n\n                logger.debug(f\"Starting file upload: {file.filename}\")\n                upload_result = await LinsightWorkbenchImpl.upload_file(file)\n\n                if not upload_result:\n                    raise ValueError(f\"Doc. {file.filename} Upload failed, return result is empty\")\n\n                # Parse files asynchronously to increase timeout control\n                parse_result = await asyncio.wait_for(\n                    LinsightWorkbenchImpl.parse_file(upload_result, login_user.user_id),\n                    timeout=300  # 5Minute Timeout\n                )\n\n                if not parse_result:\n                    raise ValueError(f\"Doc. {file.filename} Parsing failed, returned empty result\")\n\n                upload_file_results.append(parse_result)\n                logger.debug(f\"Doc. {file.filename} Upload parsing complete\")\n\n            except asyncio.TimeoutError:\n                error_msg = f\"Doc. {file.filename} Resolve Timeout\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                return EventSourceResponse(iter([{\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"File parsing timeout\",\n                        \"message\": error_msg,\n                        \"code\": \"FILE_PARSE_TIMEOUT\"\n                    })\n                }]))\n\n\n            except Exception as e:\n                error_msg = f\"Doc. {getattr(file, 'filename', f'{idx + 1} No filename')} Upload parsing error: {str(e)}\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                return EventSourceResponse(iter([{\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"Upload Failed\",\n                        \"message\": error_msg,\n                        \"code\": \"FILE_UPLOAD_ERROR\"\n                    })\n                }]))\n\n        # Check file parsing results\n        if upload_file_results:\n            failed_files = [\n                f.get(\"original_filename\", \"Unknown file\")\n                for f in upload_file_results\n                if f.get(\"parsing_status\") == \"failed\"\n            ]\n\n            if failed_files:\n                error_msg = f\"The following files failed to be parsed: {', '.join(failed_files)}\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                return EventSourceResponse(iter([{\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"File parsing failed\",\n                        \"message\": error_msg,\n                        \"code\": \"FILE_PARSE_FAILED\",\n                        \"failed_files\": failed_files\n                    })\n                }]))\n\n    async def event_generator():\n        \"\"\"\n        Event generator for generatingSSE events\n        \"\"\"\n        linsight_session_version_model = None\n        state_message_manager = None\n\n        try:\n\n            # ======================== Submit an Idea Question ========================\n            try:\n                submit_files = []\n                if upload_file_results:\n                    for f in upload_file_results:\n                        if not f.get(\"file_id\"):\n                            logger.warning(f\"Doc. {f.get('original_filename', 'Unknown')} missing? file_id\")\n                            continue\n                        submit_files.append(SubmitFileSchema(\n                            file_id=f.get(\"file_id\"),\n                            file_name=f.get(\"original_filename\"),\n                            parsing_status=f.get(\"parsing_status\")\n                        ))\n\n                submit_tools = None\n                if body_param.tool_ids:\n                    try:\n                        submit_tools = [LinsightToolSchema(\n                            id=\"1\",\n                            is_preset=1,\n                            children=[\n                                ToolChildrenSchema(id=int(tool_id))\n                                for tool_id in body_param.tool_ids\n                            ]\n                        )]\n                    except (ValueError, TypeError) as e:\n                        logger.error(f\"Users {login_user.user_id} ToolsIDfailed to transform: {str(e)}\")\n                        yield {\n                            \"event\": \"error\",\n                            \"data\": json.dumps({\n                                \"error\": \"ToolsIDFormat salah.\",\n                                \"message\": f\"ToolsIDMust be numeric: {str(e)}\",\n                                \"code\": \"INVALID_TOOL_ID\"\n                            })\n                        }\n                        return\n\n                submit_obj = LinsightQuestionSubmitSchema(\n                    question=body_param.query if body_param.query else \"User did not provide a question\",\n                    org_knowledge_enabled=body_param.org_knowledge_enabled,\n                    personal_knowledge_enabled=body_param.personal_knowledge_enabled,\n                    files=submit_files,\n                    tools=submit_tools\n                )\n\n                _, linsight_session_version_model = await LinsightWorkbenchImpl.submit_user_question(\n                    submit_obj, login_user\n                )\n\n                if not linsight_session_version_model:\n                    raise ValueError(\"Failed to submit the idea question, the return result is empty\")\n\n                yield {\n                    \"event\": \"linsight_workbench_submit\",\n                    \"data\": linsight_session_version_model.model_dump_json()\n                }\n\n            except Exception as e:\n                error_msg = f\"Failed to submit Idea Question: {str(e)}\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                yield {\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"Failed to submit question\",\n                        \"message\": error_msg,\n                        \"code\": \"SUBMIT_QUESTION_ERROR\"\n                    })\n                }\n                return\n\n            # ======================== BuatSOP ========================\n            if body_param.sop_content:\n                # User Submitted DirectlySOPcontent, skipping generationSOPStep\n                await LinsightSessionVersionDao.modify_sop_content(\n                    linsight_session_version_id=linsight_session_version_model.id,\n                    sop_content=body_param.sop_content\n                )\n            else:\n                try:\n                    knowledge_res = []\n                    linsight_conf = settings.get_linsight_conf()\n\n                    # Get the organization's knowledge base\n                    if (linsight_session_version_model.org_knowledge_enabled and\n                            linsight_conf and linsight_conf.max_knowledge_num > 0):\n                        try:\n                            org_knowledge, _ = await KnowledgeService.get_knowledge(\n                                request, login_user, KnowledgeTypeEnum.NORMAL, None, 1,\n                                linsight_conf.max_knowledge_num\n                            )\n                            if org_knowledge:\n                                knowledge_res.extend(org_knowledge)\n                                logger.debug(f\"Get {len(org_knowledge)} organization knowledge\")\n                        except Exception as e:\n                            logger.warning(\n                                f\"Users {login_user.user_id} Failed to get organization knowledge base: {str(e)}\")\n                            # Proceed without interrupting the process\n\n                    # Get your own knowledge base\n                    if linsight_session_version_model.personal_knowledge_enabled:\n                        try:\n                            personal_knowledge = await KnowledgeDao.aget_user_knowledge(\n                                login_user.user_id, None, KnowledgeTypeEnum.PRIVATE\n                            )\n                            if personal_knowledge:\n                                knowledge_res.extend(personal_knowledge)\n                                logger.debug(f\"Get {len(personal_knowledge)} personal knowledge\")\n                        except Exception as e:\n                            logger.warning(\n                                f\"Users {login_user.user_id} Failed to get personal knowledge base: {str(e)}\")\n                            # Proceed without interrupting the process\n\n                    # BuatSOP\n                    sop_generate = LinsightWorkbenchImpl.generate_sop(\n                        linsight_session_version_id=linsight_session_version_model.id,\n                        previous_session_version_id=None,\n                        feedback_content=None,\n                        reexecute=False,\n                        login_user=login_user,\n                        knowledge_list=knowledge_res\n                    )\n\n                    async for event in sop_generate:\n                        if event.get(\"event\") == \"error\":\n                            yield event\n                            return\n                        yield event\n\n                    yield {\n                        \"event\": \"sop_generate_complete\",\n                        \"data\": json.dumps({\"message\": \"SOPBuild Complete\"})\n                    }\n\n                except Exception as e:\n                    error_msg = f\"SOPGeneration Failed: {str(e)}\"\n                    logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                    yield {\n                        \"event\": \"error\",\n                        \"data\": json.dumps({\n                            \"error\": \"SOPGeneration Failed\",\n                            \"message\": error_msg,\n                            \"code\": \"SOP_GENERATE_ERROR\"\n                        })\n                    }\n                    return\n\n            if body_param.only_generate_sop:\n                return\n\n            # ======================== to process ========================\n            try:\n                from bisheng.linsight.worker import LinsightQueue\n                redis_client = await get_redis_client()\n                queue = LinsightQueue('queue', namespace=\"linsight\", redis=redis_client)\n                await queue.put(data=linsight_session_version_model.id)\n\n                yield {\n                    \"event\": \"linsight_execute_submitted\",\n                    \"data\": json.dumps({\"message\": \"Idea Execution Task Submitted\"})\n                }\n\n            except Exception as e:\n                error_msg = f\"Failed to submit execution task: {str(e)}\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                yield {\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"Failed to submit execution task\",\n                        \"message\": error_msg,\n                        \"code\": \"SUBMIT_TASK_ERROR\"\n                    })\n                }\n                return\n\n            # ======================== Consumer Message Flow ========================\n            try:\n                state_message_manager = LinsightStateMessageManager(\n                    session_version_id=linsight_session_version_model.id\n                )\n                final_result_message = None\n                message_count = 0\n                max_messages = 10000  # Prevents infinite loops\n                max_wait_time = 60 * 60  # Maximum Wait1Jam\n                start_time = time.time()\n\n                while message_count < max_messages:\n                    # Check timeout\n                    if time.time() - start_time > max_wait_time:\n                        logger.warning(f\"Users {login_user.user_id} Message consumption timed out\")\n                        yield {\n                            \"event\": \"warning\",\n                            \"data\": json.dumps({\n                                \"message\": \"The execution time is longer and may take more time to complete\",\n                                \"code\": \"EXECUTION_TIMEOUT_WARNING\"\n                            })\n                        }\n                        break\n\n                    try:\n                        message = await asyncio.wait_for(\n                            state_message_manager.pop_message(),\n                            timeout=10.0  # 10seconds timeout\n                        )\n                    except asyncio.TimeoutError:\n\n                        linsight_session_version_model = await state_message_manager.get_session_version_info()\n\n                        if linsight_session_version_model.status in [\n                            SessionVersionStatusEnum.COMPLETED,\n                            SessionVersionStatusEnum.TERMINATED,\n                            SessionVersionStatusEnum.FAILED\n                        ]:\n                            message = MessageData(\n                                event_type=MessageEventType.FINAL_RESULT if linsight_session_version_model.status == SessionVersionStatusEnum.COMPLETED else MessageEventType.TASK_TERMINATED,\n                                data=linsight_session_version_model.model_dump()\n                            )\n\n                            if message.event_type == MessageEventType.FINAL_RESULT:\n                                final_result_message = message\n\n                            yield {\n                                \"event\": \"linsight_execute_message\",\n                                \"data\": message.model_dump_json()\n                            }\n\n                            logger.info(f\"Users {login_user.user_id} Idea execution has ended, stop getting messages\")\n                            break\n\n                        # Timeout to continue waiting\n                        continue\n                    except Exception as e:\n                        logger.error(f\"Users {login_user.user_id} Failed to fetch messages: {str(e)}\")\n                        break\n\n                    if message:\n                        message_count += 1\n                        yield {\n                            \"event\": \"linsight_execute_message\",\n                            \"data\": message.model_dump_json()\n                        }\n\n                        # Save final result message\n                        if message.event_type == MessageEventType.FINAL_RESULT:\n                            final_result_message = message\n\n                        # Check termination conditions\n                        if message.event_type in [\n                            MessageEventType.ERROR_MESSAGE,\n                            MessageEventType.TASK_TERMINATED,\n                            MessageEventType.FINAL_RESULT\n                        ]:\n                            break\n                    else:\n                        await asyncio.sleep(1)\n\n                # Process final result message\n                final_files = []\n                all_from_session_files = []\n\n                if final_result_message and final_result_message.data:\n                    try:\n                        session_version_model = LinsightSessionVersion.model_validate(final_result_message.data)\n\n                        if session_version_model.output_result:\n                            final_files = session_version_model.output_result.get(\"final_files\", [])\n                            all_from_session_files = session_version_model.output_result.get(\"all_from_session_files\",\n                                                                                             [])\n\n                            minio_client = await get_minio_storage()\n\n                            # Generate file sharing link\n                            for final_file in final_files:\n                                if final_file.get(\"url\"):\n                                    try:\n                                        final_file[\"url\"] = await minio_client.get_share_link(final_file[\"url\"],\n                                                                                              clear_host=False)\n                                    except Exception as e:\n                                        logger.warning(f\"Failed to generate final file share link: {str(e)}\")\n\n                            for session_file in all_from_session_files:\n                                if session_file.get(\"url\"):\n                                    try:\n                                        session_file[\"url\"] = await minio_client.get_share_link(session_file[\"url\"],\n                                                                                                clear_host=False)\n                                    except Exception as e:\n                                        logger.warning(f\"Failed to generate session file share link: {str(e)}\")\n\n                    except Exception as e:\n                        logger.error(f\"Users {login_user.user_id} Failed to process final result: {str(e)}\")\n\n                yield {\n                    \"event\": \"final_result_files\",\n                    \"data\": json.dumps({\n                        \"final_files\": final_files,\n                        \"all_from_session_files\": all_from_session_files\n                    })\n                }\n\n            except Exception as e:\n                error_msg = f\"Message consumption failed: {str(e)}\"\n                logger.error(f\"Users {login_user.user_id} {error_msg}\")\n                yield {\n                    \"event\": \"error\",\n                    \"data\": json.dumps({\n                        \"error\": \"Message consumption failed\",\n                        \"message\": error_msg,\n                        \"code\": \"MESSAGE_CONSUME_ERROR\"\n                    })\n                }\n                return\n\n        except Exception as e:\n            # Catch all unhandled exceptions\n            error_msg = f\"Interface Execution Exception: {str(e)}\"\n            logger.error(f\"Users {login_user.user_id} {error_msg}\", exc_info=True)\n            yield {\n                \"event\": \"error\",\n                \"data\": json.dumps({\n                    \"error\": \"System Exception\",\n                    \"message\": error_msg,\n                    \"code\": \"SYSTEM_ERROR\"\n                })\n            }\n\n        finally:\n            pass\n\n    return EventSourceResponse(event_generator())\n"
  },
  {
    "path": "src/backend/bisheng/linsight/api/router.py",
    "content": "from fastapi import APIRouter\nfrom .endpoints.linsight import router as linsight_router\n\nrouter = APIRouter(prefix=\"/linsight\", tags=[\"Inspiration\"])\n\nrouter.include_router(linsight_router)\n\n__all__ = [\"router\"]\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/domain/models/linsight_execute_task.py",
    "content": "from datetime import datetime\nfrom enum import Enum\nfrom typing import Optional, Dict, List\n\nfrom sqlalchemy import Enum as SQLEnum, Column, JSON, DateTime, text, CHAR, ForeignKey, update\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.database.base import uuid_hex\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass ExecuteTaskTypeEnum(str, Enum):\n    \"\"\"\n    Idea execution task type enumeration\n    \"\"\"\n    # Single Task\n    SINGLE = \"single\"\n    # Has subtasks\n    COMPOSITE = \"composite\"\n\n\nclass ExecuteTaskStatusEnum(str, Enum):\n    \"\"\"\n    Idea Execution Task Status Enumeration\n    \"\"\"\n    # Not Started\n    NOT_STARTED = \"not_started\"\n    # Sedang berlangsung\n    IN_PROGRESS = \"in_progress\"\n    # Berhasil\n    SUCCESS = \"success\"\n    # Waiting for user input\n    WAITING_FOR_USER_INPUT = \"waiting_for_user_input\"\n    # User input complete\n    USER_INPUT_COMPLETED = \"user_input_completed\"\n    # Kalah\n    FAILED = \"failed\"\n    # TERMINATION\n    TERMINATED = \"terminated\"\n\n\nclass LinsightExecuteTaskBase(SQLModelSerializable):\n    \"\"\"\n    Idea Execution Task Model Base Class\n    \"\"\"\n    session_version_id: str = Field(..., description='Session VersionID',\n                                    sa_column=Column(CHAR(36), ForeignKey(\"linsight_session_version.id\"),\n                                                     nullable=False))\n\n    parent_task_id: Optional[str] = Field(None, description='Parent Task:ID',\n                                          sa_column=Column(CHAR(36), ForeignKey(\"linsight_execute_task.id\"),\n                                                           nullable=True))\n    previous_task_id: Optional[str] = Field(None, description='Previous TaskID',\n                                            sa_column=Column(CHAR(36),\n                                                             nullable=True))\n    next_task_id: Optional[str] = Field(None, description='[patterns/patterns_ParallelJoin.xml?ROU_NEXT_TASK] Next TaskID',\n                                        sa_column=Column(CHAR(36),\n                                                         nullable=True))\n    task_type: ExecuteTaskTypeEnum = Field(..., description='Task type',\n                                           sa_column=Column(SQLEnum(ExecuteTaskTypeEnum), nullable=False))\n    task_data: Optional[dict] = Field(None, description='Task Data', sa_type=JSON, nullable=True)\n\n    # input_prompt: Optional[str] = Field(None, description='Enter a prompt', sa_type=Text, nullable=True)\n    # user_input: Optional[str] = Field(None, description='User input', sa_type=Text, nullable=True)\n    history: Optional[List[Dict]] = Field(None, description='Execute Step Record', sa_type=JSON, nullable=True)\n    status: ExecuteTaskStatusEnum = Field(ExecuteTaskStatusEnum.NOT_STARTED, description=\"Status Misi\",\n                                          sa_column=Column(SQLEnum(ExecuteTaskStatusEnum), nullable=False))\n    result: Optional[Dict] = Field(None, description='Result of Task', sa_type=JSON, nullable=True)\n\n\nclass LinsightExecuteTask(LinsightExecuteTaskBase, table=True):\n    \"\"\"\n    Ideas Execution Task Model, sopThe library will also reference the data here\n    \"\"\"\n    id: str = Field(default_factory=uuid_hex, description='TaskID',\n                    sa_column=Column(CHAR(36), unique=True, nullable=False, primary_key=True))\n\n    create_time: datetime = Field(default_factory=datetime.now, description='Creation Time',\n                                  sa_column=Column(DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=True, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    __tablename__ = \"linsight_execute_task\"\n\n\nclass LinsightExecuteTaskDao(object):\n    \"\"\"\n    Ideas Execution Task Data Access Objects\n    \"\"\"\n\n    @classmethod\n    async def get_by_id(cls, task_id: str) -> Optional[LinsightExecuteTask]:\n        \"\"\"\n        By TaskIDGet Tasks\n        :param task_id: TaskID\n        :return: Task Objects\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightExecuteTask).where(LinsightExecuteTask.id == str(task_id))\n            task = await session.exec(statement)\n            return task.first()\n\n    @classmethod\n    async def get_by_session_version_id(cls, session_version_id: str, is_parent_task: bool = False) -> List[\n        LinsightExecuteTask]:\n        \"\"\"\n        Based on session versionIDGet all tasks\n        :param is_parent_task:\n        :param session_version_id: Session VersionID\n        :return: Task list\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightExecuteTask).where(\n                LinsightExecuteTask.session_version_id == str(session_version_id))\n\n            if is_parent_task:\n                statement = statement.where(col(LinsightExecuteTask.parent_task_id).is_(None))\n\n            tasks = await session.exec(statement)\n            return tasks.all()\n\n    @classmethod\n    async def batch_create_tasks(cls, tasks: List[LinsightExecuteTask]) -> List[LinsightExecuteTask]:\n        \"\"\"\n        Batch Create Tasks\n        :param tasks: Task list\n        :return: Post-Created Task List\n        \"\"\"\n        async with get_async_db_session() as session:\n            session.add_all(tasks)\n            await session.commit()\n            return tasks\n\n    @classmethod\n    async def update_by_id(cls, task_id: str, **kwargs) -> Optional[LinsightExecuteTask]:\n        \"\"\"\n        By TaskIDUpdate Details\n        :param task_id: TaskID\n        :param kwargs: Update fields\n        :return: Updated task object\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightExecuteTask).where(LinsightExecuteTask.id == task_id)\n            task = await session.exec(statement)\n            task = task.first()\n\n            if not task:\n                return None\n\n            for key, value in kwargs.items():\n                setattr(task, key, value)\n\n            session.add(task)\n            await session.commit()\n            await session.refresh(task)\n            return task\n\n    # accordingsession_version_idBulk update task status\n    @classmethod\n    async def batch_update_status_by_session_version_id(cls, session_version_ids: List[str],\n                                                        status: ExecuteTaskStatusEnum,\n                                                        where) -> None:\n        \"\"\"\n        Based on session versionIDBulk update task status\n        :param session_version_ids:\n        :param status:\n        :param where:\n        :return:\n        \"\"\"\n\n        async with get_async_db_session() as session:\n            statement = (\n                update(LinsightExecuteTask)\n                .where(col(LinsightExecuteTask.session_version_id).in_(session_version_ids))  # Explicit Transfer str\n            )\n\n            if where:\n                statement = statement.where(*where)\n\n            statement = statement.values(status=status)\n\n            await session.exec(statement)\n            await session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/models/linsight_session_version.py",
    "content": "import logging\nfrom datetime import datetime\nfrom enum import Enum\nfrom typing import List, Dict, Optional\n\nfrom sqlalchemy import Column, Text, JSON, Boolean, Enum as SQLEnum, DateTime, text, ForeignKey, CHAR, func\nfrom sqlmodel import Field, select, col, update\n\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.database.base import uuid_hex\nfrom bisheng.common.models.base import SQLModelSerializable\n\nlogger = logging.getLogger(__name__)\n\n\nclass SessionVersionStatusEnum(str, Enum):\n    \"\"\"\n    Ideas Session Version Status Enumeration\n    \"\"\"\n    # not implemented\n    NOT_STARTED = \"not_started\"\n    # Sedang berlangsung\n    IN_PROGRESS = \"in_progress\"\n    # Run Completed\n    COMPLETED = \"completed\"\n    #  has failed to run...\n    FAILED = \"failed\"\n    # SOP Generation Failed\n    SOP_GENERATION_FAILED = \"sop_generation_failed\"\n    # TERMINATION\n    TERMINATED = \"terminated\"\n\n\nclass LinsightSessionVersionBase(SQLModelSerializable):\n    \"\"\"\n    Inspiration Conversation Version Model Base Class\n    \"\"\"\n    session_id: str = Field(..., description='SessionsID', sa_column=Column(CHAR(36),\n                                                                        ForeignKey(\"message_session.chat_id\"),\n                                                                        nullable=False,\n                                                                        index=True))\n    user_id: int = Field(..., description='UsersID', foreign_key=\"user.user_id\", nullable=False)\n    question: str = Field(..., description='User Questions', sa_type=Text, nullable=False)\n    title: Optional[str] = Field(None, description='Session title', sa_type=Text, nullable=True)\n    tools: Optional[List[Dict]] = Field(None, description='List of available tools', sa_type=JSON, nullable=True)\n    # Personal Knowledge Base\n    personal_knowledge_enabled: bool = Field(False, description='Whether or not to enable Personal Knowledge Base', sa_type=Boolean)\n    # Organization Knowledge Base\n    org_knowledge_enabled: bool = Field(False, description='Whether to enable organization knowledge base', sa_type=Boolean)\n    files: Optional[List[Dict]] = Field(None, description='Uploaded files list:', sa_type=JSON, nullable=True)\n    sop: Optional[str] = Field(None, description='SOPContents', sa_type=Text, nullable=True)\n    output_result: Optional[Dict] = Field(None, description='Output Results', sa_type=JSON, nullable=True)\n    status: SessionVersionStatusEnum = Field(default=SessionVersionStatusEnum.NOT_STARTED, description='Session Version Status',\n                                             sa_column=Column(SQLEnum(SessionVersionStatusEnum), nullable=False))\n    score: Optional[int] = Field(None, description='Session Score', ge=1, le=5, nullable=True)\n    # Execution Result Feedback Information\n    execute_feedback: Optional[str] = Field(None, description='Execution Result Feedback Information', sa_type=Text, nullable=True)\n\n    # Is there a re-execution\n    has_reexecute: bool = Field(default=False, description='Is there a re-execution', sa_type=Boolean, nullable=False)\n\n    # Version\n    version: datetime = Field(default_factory=datetime.now, description='Session Version Created Time', sa_type=DateTime)\n\n\nclass LinsightSessionVersion(LinsightSessionVersionBase, table=True):\n    \"\"\"\n    Inspiration Conversation Version Model\n    \"\"\"\n    id: str = Field(default_factory=uuid_hex, description='Session VersionID',\n                    sa_column=Column(CHAR(36), unique=True, nullable=False, primary_key=True))\n\n    create_time: datetime = Field(default_factory=datetime.now, description='Creation Time',\n                                  sa_column=Column(DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=True, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    __tablename__ = \"linsight_session_version\"\n\n\nclass LinsightSessionVersionDao(object):\n    \"\"\"\n    Inspiration Session Version Data Access Objects\n    \"\"\"\n\n    @staticmethod\n    async def insert_one(session_version: LinsightSessionVersion) -> LinsightSessionVersion:\n        \"\"\"\n        Insert an Invisible Sessions version record\n        :param session_version: Inspiration Conversation Version Object\n        :return: Invisible Conversation Version Object Created\n        \"\"\"\n\n        async with get_async_db_session() as session:\n            session.add(session_version)\n            await session.commit()\n            await session.refresh(session_version)\n            return session_version\n\n    @staticmethod\n    async def get_by_id(linsight_session_version_id: str) -> Optional[LinsightSessionVersion]:\n        \"\"\"\n        According to the Inspiration Conversation versionIDGet Ideas Conversation Version\n        :param linsight_session_version_id: Inspiration Conversation VersionID\n        :return: Inspiration Conversation Version Object\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSessionVersion).where(\n                LinsightSessionVersion.id == str(linsight_session_version_id))  # Explicit Transfer str\n            result = await session.exec(statement)\n            return result.first()\n\n    @staticmethod\n    async def get_session_versions_by_session_id(session_id: str) -> List[LinsightSessionVersion]:\n        \"\"\"\n        By ConversationIDGet all Ideas Conversation versions\n        :param session_id: SessionsID\n        :return: Inspiration Session Version List\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSessionVersion).where(\n                LinsightSessionVersion.session_id == str(session_id)).order_by(\n                col(LinsightSessionVersion.version).desc())\n\n            return (await session.exec(statement)).all()\n\n    @staticmethod\n    async def modify_sop_content(linsight_session_version_id: str, sop_content: str):\n        \"\"\"\n        Modify Inspiration Conversation Version ofSOPContents\n        :param linsight_session_version_id:\n        :param sop_content:\n        :return:\n        \"\"\"\n\n        async with get_async_db_session() as session:\n            stmt = (\n                update(LinsightSessionVersion)\n                .where(col(LinsightSessionVersion.id) == str(linsight_session_version_id))  # Explicit Transfer str\n                .values(sop=sop_content)\n            )\n\n            result = await session.exec(stmt)\n            if result.rowcount == 0:\n                logger.warning(f\"No session version found with ID: {linsight_session_version_id}\")\n\n            await session.commit()\n\n    @staticmethod\n    async def get_session_version_by_file_id(file_id: str) -> Optional[LinsightSessionVersion]:\n        \"\"\"\n        According to DOCUMENTIDGet Ideas Conversation Version\n        :param file_id: Doc.ID\n        :return: Inspiration Conversation Version Object\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSessionVersion).where(\n                func.json_search(LinsightSessionVersion.files, 'all', file_id)\n            )\n            result = await session.exec(statement)\n            return result.first()\n\n    # Get a list of Ideas session versions based on task status\n    @staticmethod\n    async def get_session_versions_by_status(status: SessionVersionStatusEnum) -> List[LinsightSessionVersion]:\n        \"\"\"\n        Get a list of Ideas session versions based on task status\n        :param status: Session Version Status\n        :return: Inspiration Session Version List\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSessionVersion).where(\n                LinsightSessionVersion.status == status\n            )\n            result = await session.exec(statement)\n            return result.all()\n\n    # Bulk Update Ideas Session Version Status\n    @staticmethod\n    async def batch_update_session_versions_status(session_version_ids: List[str], status: SessionVersionStatusEnum,\n                                                   **kwargs) -> None:\n        \"\"\"\n        Bulk Update Ideas Session Version Status\n        :param session_version_ids: Session VersionIDVertical\n        :param status: New Session Version Status\n        \"\"\"\n        async with get_async_db_session() as session:\n            stmt = (\n                update(LinsightSessionVersion)\n                .where(col(LinsightSessionVersion.id).in_(session_version_ids))\n                .values(status=status, **kwargs)  # Support for additional field updates\n            )\n            await session.exec(stmt)\n            await session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/models/linsight_sop.py",
    "content": "from datetime import datetime\nfrom typing import Optional, Dict, Any, List, Literal\n\nfrom loguru import logger\nfrom sqlalchemy import update\nfrom sqlalchemy.dialects.mysql import LONGTEXT\nfrom sqlmodel import Field, select, delete, col, or_, func, Column, Text, DateTime, text, CHAR\n\nfrom bisheng.linsight.domain.schemas.inspiration_schema import SOPManagementUpdateSchema\nfrom bisheng.core.database import get_async_db_session\nfrom bisheng.database.base import async_get_count\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass LinsightSOPBase(SQLModelSerializable):\n    \"\"\"\n    Inspiration SOPModel Base Class\n    \"\"\"\n    name: str = Field(..., description='SOPPart Name', sa_column=Column(Text, nullable=False))\n    description: Optional[str] = Field(default=None, description='SOPDescription', sa_column=Column(Text))\n    user_id: int = Field(..., description='UsersID', foreign_key=\"user.user_id\", nullable=False)\n    content: str = Field(..., description='SOPContents',\n                         sa_column=Column(LONGTEXT, nullable=False, comment=\"SOPContents\"))\n\n    rating: Optional[int] = Field(default=0, ge=0, le=5, description='SOPScore, Range0-5')\n    showcase: Optional[bool] = Field(default=False, index=True, description='Whether to display it on the homepage as a featured case')\n    vector_store_id: Optional[str] = Field(..., description='Vector StorageID',\n                                           sa_column=Column(CHAR(36), nullable=False, comment=\"Vector StorageID\"))\n\n    linsight_version_id: Optional[str] = Field(default=None,\n                                               description='Inspiration Conversation VersionID, used to query the running results of a featured case',\n                                               sa_column=Column(CHAR(36), nullable=True))\n    create_time: datetime = Field(default_factory=datetime.now, description='Creation Time',\n                                  sa_column=Column(DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=True, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass LinsightSOP(LinsightSOPBase, table=True):\n    \"\"\"\n    Inspiration SOPModels\n    \"\"\"\n    __tablename__ = \"linsight_sop\"\n    id: Optional[int] = Field(default=None, primary_key=True, description='SOPUniqueness quantificationID')\n\n\nclass LinsightSOPRecord(SQLModelSerializable, table=True):\n    \"\"\"\n    InspirationSOPRun the record sheet to record the results generated during the execution of the Ideasop\n    \"\"\"\n    __tablename__ = \"linsight_sop_record\"\n    id: Optional[int] = Field(default=None, primary_key=True, description='SOPRecord UniqueID')\n    name: str = Field(..., description='SOPPart Name', sa_column=Column(Text, nullable=False))\n    description: Optional[str] = Field(default=None, description='SOPDescription', sa_column=Column(Text))\n    user_id: int = Field(..., description='UsersID', foreign_key=\"user.user_id\", nullable=False)\n    content: str = Field(..., description='SOPContents',\n                         sa_column=Column(LONGTEXT, nullable=False, comment=\"SOPContents\"))\n\n    rating: Optional[int] = Field(default=0, ge=0, le=5, description='SOPScore, Range0-5')\n    execute_feedback: Optional[str] = Field(None, description='Execution Result Feedback Information', sa_type=Text, nullable=True)\n    linsight_version_id: Optional[str] = Field(default=None, description='Inspiration Conversation Versionid, sync ratings')\n    create_time: datetime = Field(default_factory=datetime.now, description='Creation Time',\n                                  sa_column=Column(DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=True, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass LinsightSOPDao(LinsightSOPBase):\n    \"\"\"\n    Inspiration SOPData Access Objects\n    \"\"\"\n\n    @classmethod\n    async def create_sop(cls, sop: LinsightSOP) -> LinsightSOP:\n        async with get_async_db_session() as session:\n            session.add(sop)\n            await session.commit()\n            await session.refresh(sop)\n            return sop\n\n    @classmethod\n    async def update_sop(cls, sop_obj: SOPManagementUpdateSchema) -> LinsightSOP:\n        async with get_async_db_session() as session:\n            # UseUpdateStatement UpdatesSOP\n            statement = select(LinsightSOP).where(LinsightSOP.id == sop_obj.id)\n            result = await session.exec(statement)\n            sop = result.first()\n            if not sop:\n                raise ValueError(\"SOP not found\")\n\n            # will besop_objField values for were updated tosopin the example\n            for key, value in sop_obj.model_dump().items():\n                if hasattr(sop, key) and value is not None:\n                    setattr(sop, key, value)\n\n            sop.update_time = datetime.now()  # Update modification time\n            session.add(sop)\n            await session.commit()\n            await session.refresh(sop)\n            return sop\n\n    @classmethod\n    async def get_sop_page(cls, keywords: Optional[str] = None, showcase: bool = None,\n                           sort: Literal[\"asc\", \"desc\"] = \"desc\", page: int = 1,\n                           page_size: int = 10) -> Dict[str, Any]:\n        \"\"\"\n        DapatkanSOPPagination List\n        \"\"\"\n\n        statement = select(LinsightSOP)\n        if keywords:\n            statement = statement.where(\n                LinsightSOP.name.ilike(f'%{keywords}%') |\n                LinsightSOP.description.ilike(f'%{keywords}%') |\n                LinsightSOP.content.ilike(f'%{keywords}%')\n            )\n\n        # according rating And create_time Sort\n        if sort == \"asc\":\n            statement = statement.order_by(col(LinsightSOP.rating).asc(), col(LinsightSOP.update_time).asc())\n        else:\n            statement = statement.order_by(col(LinsightSOP.rating).desc(), col(LinsightSOP.update_time).desc())\n\n        if showcase is not None:\n            statement = statement.where(LinsightSOP.showcase == showcase)\n\n        async with get_async_db_session() as session:\n            total_count = await async_get_count(session, statement)\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n            result = (await session.exec(statement)).all()\n\n        return {\n            \"total\": total_count,\n            \"current_page\": page,\n            \"page_size\": page_size,\n            \"items\": [result.model_dump() for result in result]\n        }\n\n    @classmethod\n    async def get_sops_by_ids(cls, sop_ids: List[int]) -> List[LinsightSOP]:\n        \"\"\"\n        accordingSOP IDGet listSOPObjects\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSOP).where(col(LinsightSOP.id).in_(sop_ids))\n            result = await session.exec(statement)\n            sop_list = result.all()\n            return sop_list\n\n    @classmethod\n    async def get_sops_by_names(cls, names: list[str]) -> List[LinsightSOP]:\n        \"\"\"\n        accordingSOPGet Name ListSOPObjects\n        \"\"\"\n        statement = select(LinsightSOP).where(col(LinsightSOP.name).in_(names))\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            sop_list = result.all()\n            return sop_list\n\n    @classmethod\n    async def remove_sop(cls, sop_ids: List[int]) -> bool:\n        \"\"\"\n        DeleteSOP\n        \"\"\"\n        async with get_async_db_session() as session:\n            delete_statement = delete(LinsightSOP).where(col(LinsightSOP.id).in_(sop_ids))\n            result = await session.exec(delete_statement)\n            await session.commit()\n            logger.info(f\"Deleted {result.rowcount} SOP(s) with IDs: {sop_ids}\")\n            return True\n\n    @classmethod\n    async def get_sop_by_session_id(cls, session_id: str) -> Optional[LinsightSOP]:\n        \"\"\"\n        According to the Inspiration ConversationID Dapatkan OP\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSOP).where(LinsightSOP.linsight_session_id == session_id)\n            result = await session.exec(statement)\n            sop = result.first()\n            return sop if sop else None\n\n    @classmethod\n    async def get_sop_by_vector_store_ids(cls, vector_store_ids: List[str]) -> List[LinsightSOP]:\n        \"\"\"\n        According to vector storageIDGet listSOPObjects\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSOP).where(col(LinsightSOP.vector_store_id).in_(vector_store_ids))\n            result = await session.exec(statement)\n            sop_list = result.all()\n            return sop_list\n\n    @classmethod\n    async def get_all_sops(cls) -> List[LinsightSOP]:\n        \"\"\"\n        Fetch allSOP\n        \"\"\"\n        async with get_async_db_session() as session:\n            statement = select(LinsightSOP)\n            result = await session.exec(statement)\n            sop_list = result.all()\n            return sop_list\n\n    @classmethod\n    async def create_sop_record(cls, sop_record: LinsightSOPRecord) -> LinsightSOPRecord:\n        \"\"\"\n        Insert an entrySOPRecord\n        \"\"\"\n        async with get_async_db_session() as session:\n            session.add(sop_record)\n            await session.commit()\n            await session.refresh(sop_record)\n            return sop_record\n\n    @classmethod\n    async def _filter_sop_record_statement(cls, statement, keywords: str = None, user_ids: list[int] = None) -> select:\n        \"\"\"\n        Build.SOPRecorded Query Statements\n        \"\"\"\n        or_params = []\n        if keywords:\n            or_params.extend([\n                LinsightSOPRecord.name.like(f'%{keywords}%'),\n                LinsightSOPRecord.description.like(f'%{keywords}%'),\n                LinsightSOPRecord.content.like(f'%{keywords}%')\n            ])\n        if user_ids:\n            or_params.append(LinsightSOPRecord.user_id.in_(user_ids))\n        if or_params:\n            statement = statement.where(or_(*or_params))\n        return statement\n\n    @classmethod\n    async def filter_sop_record(cls, keywords: str = None, user_ids: list[int] = None, page: int = None,\n                                page_size: int = None, sort: str = None) -> List[LinsightSOPRecord]:\n        \"\"\"\n        Fetch allSOPRecord, Key Matchname、description、content。user_idsIs UserIDList. Between filters areorRelationship\n        \"\"\"\n        statement = select(LinsightSOPRecord)\n        statement = await cls._filter_sop_record_statement(statement, keywords, user_ids)\n        if page and page_size:\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n        if sort == \"asc\":\n            statement = statement.order_by(col(LinsightSOPRecord.create_time).asc())\n        else:\n            statement = statement.order_by(col(LinsightSOPRecord.create_time).desc())\n\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    async def count_sop_record(cls, keywords: str = None, user_ids: list[int] = None) -> int:\n        \"\"\"\n        StatisticsSOPNumber of Records\n        \"\"\"\n        statement = select(func.count(LinsightSOPRecord.id))\n        statement = await cls._filter_sop_record_statement(statement, keywords, user_ids)\n        async with get_async_db_session() as session:\n            return await session.scalar(statement)\n\n    @classmethod\n    async def get_sop_record_by_ids(cls, ids: list[int]) -> List[LinsightSOPRecord]:\n        \"\"\"\n        accordingSOPRecordIDGet listSOPRecord Objects\n        \"\"\"\n        statement = select(LinsightSOPRecord).where(col(LinsightSOPRecord.id).in_(ids))\n\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            sop_record_list = result.all()\n            return sop_record_list\n\n    @classmethod\n    async def update_sop_record_score(cls, linsight_version_id: str, rating: int) -> bool:\n        \"\"\"\n        UpdateSOPRecord Score\n        \"\"\"\n        statement = update(LinsightSOPRecord).where(\n            col(LinsightSOPRecord.linsight_version_id) == linsight_version_id).values(rating=rating)\n        async with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.commit()\n            return True\n\n    @classmethod\n    async def update_sop_record_feedback(cls, linsight_version_id: str, execute_feedback: str) -> bool:\n        \"\"\"\n        UpdateSOPRecord Execution Result Feedback Information\n        \"\"\"\n        statement = update(LinsightSOPRecord).where(\n            col(LinsightSOPRecord.linsight_version_id) == linsight_version_id).values(execute_feedback=execute_feedback)\n        async with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.commit()\n            return True\n\n    @classmethod\n    async def set_sop_showcase(cls, sop_id: int, showcase: bool) -> bool:\n        \"\"\"\n        PengaturanSOPWhether to display it on the homepage as a featured case\n        \"\"\"\n        statement = update(LinsightSOP).where(\n            col(LinsightSOP.id) == sop_id).values(showcase=showcase)\n        async with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.commit()\n            return True\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/domain/schemas/inspiration_schema.py",
    "content": "from typing import Optional\n\nfrom pydantic import Field, BaseModel, field_validator\n\n\n# SOPManaging Schema\nclass SOPManagementSchema(BaseModel):\n    \"\"\"SOPManaging Schema\"\"\"\n    name: str = Field(..., description=\"SOPPart Name\")\n    description: str = Field(None, description=\"SOPDescription\")\n    content: str = Field(..., description=\"SOPContents\")\n    rating: int = Field(0, ge=0, le=5, description=\"SOPScore, Range0-5\")\n    linsight_version_id: Optional[str] = Field(default=None, description=\"LinsightSession Version ofID\")\n\n    @field_validator(\"name\", mode=\"before\")\n    def validate_name(cls, v):\n        # LimitSOPName length does not exceed500characters\n        return v[:500]\n\n\nclass SOPManagementUpdateSchema(SOPManagementSchema):\n    \"\"\"SOPManage updates Schema\"\"\"\n    id: int = Field(..., description=\"SOPUniqueness quantificationID\")\n    user_id: Optional[int] = Field(None, description=\"UsersID\")\n    showcase: Optional[bool] = Field(None, description=\"Whether to display\")\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/schemas/linsight_schema.py",
    "content": "from typing import List, Dict, Optional\n\nfrom pydantic import BaseModel, Field, field_validator\n\nfrom bisheng.linsight.domain.models.linsight_sop import LinsightSOPRecord\nfrom bisheng_langchain.linsight.event import NeedUserInput\n\n\nclass ToolChildrenSchema(BaseModel):\n    id: int = Field(..., description=\"Toolsid\")\n    name: Optional[str] = Field(None, description=\"Tool name\")\n    tool_key: Optional[str] = Field(None, description=\"Toolskey\")\n    desc: Optional[str] = Field(None, description=\"Tools Description\")\n\n\n# Opt-IntoolSchema\nclass LinsightToolSchema(BaseModel):\n    id: int = Field(..., description=\"Tool LevelID\")\n    name: Optional[str] = Field(None, description=\"Tool name\")\n    is_preset: int = Field(1, description=\"Whether or not it is a preset tool\")\n    desc: Optional[str] = Field(None, description=\"Tools Description\")\n    # childTools List\n    children: Optional[List[ToolChildrenSchema]] = Field(..., description=\"Subtools List\")\n\n\nclass SubmitFileSchema(BaseModel):\n    file_id: str = Field(..., description=\"File UniqueID\")\n    file_name: str = Field(..., description=\"File Name\")\n    parsing_status: str = Field(..., description=\"File parsing status\")\n\n\n# Submit a problemSchema\nclass LinsightQuestionSubmitSchema(BaseModel):\n    question: str = Field(..., description=\"User Submitted Questions\")\n    org_knowledge_enabled: bool = Field(False, description=\"Whether to enable organization knowledge base\")\n    personal_knowledge_enabled: bool = Field(False, description=\"Whether or not to enable Personal Knowledge Base\")\n    files: Optional[List[SubmitFileSchema]] = Field(None, description=\"Uploaded files list:\")\n    tools: Optional[List[LinsightToolSchema]] = Field(None, description=\"List of available tools\")\n\n    @field_validator(\"tools\")\n    @classmethod\n    def validate_tools(cls, v: List[LinsightToolSchema]) -> List[Dict]:\n        if not v:\n            return []\n        # Convert tool to dictionary format\n        return [tool.model_dump() for tool in v]\n\n\nclass DownloadFilesSchema(BaseModel):\n    file_name: str = Field(..., description=\"File Name\")\n    file_url: str = Field(..., description=\"File download link\")\n\n\nclass SopRecordRead(LinsightSOPRecord, table=False):\n    user_name: Optional[str] = Field(default=None, description=\"Client Name\")\n\n\nclass UserInputEventSchema(NeedUserInput):\n    files: Optional[List[Dict[str, str]]] = Field(None, description=\"Uploaded files list:\")\n    user_input: Optional[str] = Field(None, description=\"User input\")\n    is_completed: bool = Field(False, description=\"Is it completed\")\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/linsight/domain/services/message_stream_handle.py",
    "content": "from starlette.websockets import WebSocket\n\nfrom bisheng.linsight.domain.services.state_message_manager import LinsightStateMessageManager, MessageData, MessageEventType\n\n\nclass MessageStreamHandle(object):\n    def __init__(self, websocket: 'WebSocket', session_version_id: str):\n        \"\"\"\n        Inisialisasi MessageStreamHandle\n        :param websocket:\n        \"\"\"\n        self._websocket = websocket\n        self.session_version_id = session_version_id\n        self._state_message_manager: LinsightStateMessageManager = LinsightStateMessageManager(\n            session_version_id=session_version_id)\n\n    async def send_message(self, message_data: str) -> None:\n        \"\"\"\n        Send Message To WebSocket\n        :param message_data: Message to send\n        \"\"\"\n        await self._websocket.send_text(message_data)\n\n    async def receive_message(self) -> str:\n        \"\"\"\n        Received from WebSocket Message\n        :return:\n        \"\"\"\n        return await self._websocket.receive_text()\n\n    async def send_json(self, json_data: dict) -> None:\n        \"\"\"\n        Send JSON Data to WebSocket\n        :param json_data: To be sent JSON DATA\n        \"\"\"\n        await self._websocket.send_json(json_data)\n\n    async def receive_json(self) -> dict:\n        \"\"\"\n        Received from WebSocket right of privacy JSON DATA\n        :return:\n        \"\"\"\n        return await self._websocket.receive_json()\n\n    # <g id=\"Bold\">Medical Treatment:</g> WebSocket Connected Lifecycle Events\n    async def connect(self) -> None:\n        \"\"\"\n        Connecting to devices WebSocket\n        \"\"\"\n        await self._websocket.accept()\n\n        while True:\n            try:\n                message = await self._state_message_manager.pop_message()\n                if message:\n                    await self.send_json(message.model_dump())\n\n                    if message.event_type in [MessageEventType.ERROR_MESSAGE, MessageEventType.TASK_TERMINATED,\n                                              MessageEventType.FINAL_RESULT]:\n                        await self._websocket.close(code=1000, reason=\"Session finished or error occurred\")\n                        break\n\n            except Exception as e:\n                await self.send_json(\n                    MessageData(event_type=MessageEventType.ERROR_MESSAGE, data={\"error\": str(e)}).model_dump())\n                await self._websocket.close(code=1000, reason=f\"Error: {str(e)}\")\n                break\n\n    async def disconnect(self) -> None:\n        \"\"\"\n        detach WebSocket CONNECT\n        \"\"\"\n        await self._websocket.close(code=1000, reason=\"Client disconnected\")\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/services/sop_manage.py",
    "content": "import io\nimport json\nimport uuid\nfrom typing import List, Dict, Literal\n\nimport openpyxl\nfrom fastapi import UploadFile\nfrom langchain_core.documents import Document\nfrom langchain_core.embeddings import Embeddings\nfrom langchain_core.language_models import BaseChatModel\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\nfrom loguru import logger\n\nfrom bisheng.api.services.knowledge_imp import decide_vectorstores, extract_code_blocks\nfrom bisheng.linsight.domain.schemas.inspiration_schema import SOPManagementSchema, SOPManagementUpdateSchema\nfrom bisheng.linsight.domain.schemas.linsight_schema import SopRecordRead\nfrom bisheng.api.v1.schemas import UnifiedResponseModel, resp_200\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.common.errcode.linsight import (\n    LinsightAddSopError, LinsightUpdateSopError, LinsightDeleteSopError,\n    LinsightVectorModelError, LinsightDocSearchError, LinsightDocNotFoundError, SopContentOverLimitError\n)\nfrom bisheng.common.errcode.server import (\n    NoEmbeddingModelError, EmbeddingModelNotExistError, EmbeddingModelTypeError, UploadFileEmptyError\n)\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.prompts.manager import get_prompt_manager\nfrom bisheng.linsight.domain.models.linsight_sop import LinsightSOP, LinsightSOPDao, LinsightSOPRecord\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.llm.domain.const import LLMModelType\nfrom bisheng.llm.domain.models import LLMDao\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils import util\nfrom bisheng_langchain.rag.init_retrievers import KeywordRetriever, BaselineVectorRetriever\nfrom bisheng_langchain.retrievers import EnsembleRetriever\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\n\n\nclass SOPManageService:\n    __doc__ = \"InspirationSOPManage Services\"\n\n    collection_name = \"col_linsight_sop\"\n\n    @staticmethod\n    async def generate_sop_summary(invoke_user_id: int, sop_content: str, llm: BaseChatModel = None) -> Dict[str, str]:\n        \"\"\"BuatSOPAbstract\"\"\"\n        default_summary = {\"sop_title\": \"SOP Title\", \"sop_description\": \"SOP Description\"}\n\n        try:\n            if llm is None:\n                workbench_conf = await LLMService.get_workbench_llm()\n                linsight_conf = settings.get_linsight_conf()\n                llm = await LLMService.get_bisheng_linsight_llm(invoke_user_id=invoke_user_id,\n                                                                model_id=workbench_conf.task_model.id,\n                                                                temperature=linsight_conf.default_temperature)\n            prompt_service = await get_prompt_manager()\n            prompt_obj = prompt_service.render_prompt(\n                namespace=\"sop\",\n                prompt_name=\"gen_sop_summary\",\n                sop_detail=sop_content\n            )\n\n            prompt = [\n                (\"system\", prompt_obj.prompt.system),\n                (\"user\", prompt_obj.prompt.user)\n            ]\n\n            response = await llm.ainvoke(prompt)\n            if not response.content:\n                return default_summary\n            code_ret = extract_code_blocks(response.content)\n            if code_ret:\n                return json.loads(code_ret[0])\n            return json.loads(response.content)\n\n        except Exception as e:\n            logger.exception(f\"BuatSOPSummary failed: {e}\")\n            return default_summary\n\n    @staticmethod\n    async def add_sop_record(sop_record: LinsightSOPRecord) -> LinsightSOPRecord:\n        \"\"\"\n        TambahSOPRecord\n        \"\"\"\n        if not sop_record.description:\n            sop_summary = await SOPManageService.generate_sop_summary(sop_record.user_id, sop_record.content, None)\n            sop_record.description = sop_summary[\"sop_description\"]\n\n        return await LinsightSOPDao.create_sop_record(sop_record)\n\n    @staticmethod\n    async def get_sop_record(keyword: str = None, sort: str = None, page: int = 1, page_size: int = 10) -> \\\n            (List[SopRecordRead], int):\n        \"\"\"\n        Query by keywordSOPRecord\n        \"\"\"\n        user_ids = []\n        if keyword:\n            # If there are keywords, get the user firstIDVertical\n            user_ids = await UserDao.afilter_users(user_ids=[], keyword=keyword)\n            user_ids = [one.user_id for one in user_ids]\n\n        res = await LinsightSOPDao.filter_sop_record(keyword, user_ids, page, page_size, sort)\n        count = await LinsightSOPDao.count_sop_record(keyword, user_ids)\n        if not res:\n            return [], 0\n\n        all_users = await UserDao.afilter_users(user_ids=[one.user_id for one in res])\n        all_users = {\n            one.user_id: one.user_name for one in all_users\n        }\n\n        result = []\n        for one in res:\n            new_one = SopRecordRead.model_validate(one)\n            new_one.user_name = all_users.get(one.user_id, str(one.user_id))\n            result.append(new_one)\n        return result, count\n\n    @staticmethod\n    async def update_sop_record_score(session_version_id: str, score: int) -> None:\n        await LinsightSOPDao.update_sop_record_score(session_version_id, score)\n\n    @staticmethod\n    async def update_sop_record_feedback(session_version_id: str, feedback: str) -> None:\n        await LinsightSOPDao.update_sop_record_feedback(session_version_id, feedback)\n\n    @classmethod\n    async def sync_sop_record(cls, record_ids: list[int], override: bool = False, save_new: bool = False) \\\n            -> list[str] | None:\n        \"\"\"\n        SynchronousSOPRecord\n        :param record_ids: SOPRecordIDVertical\n        :param override: Do you want to overwrite the existingSOP\n        :param save_new: Do you want to save the newSOP\n        :return: If there is a duplicateSOPrecords, return a list of duplicate record names, otherwise returnNone\n        \"\"\"\n        sop_records = await LinsightSOPDao.get_sop_record_by_ids(record_ids)\n\n        return await cls._sync_sop_record(sop_records, override, save_new)\n\n    @staticmethod\n    async def _sync_sop_record(sop_records: list[LinsightSOPRecord], override: bool = False, save_new: bool = False) \\\n            -> list[str] | None:\n\n        \"\"\"\n        If there is a duplicateSOPrecords, returning a list of duplicate record names\n        \"\"\"\n        records_name_dict = {}\n        repeat_names = set()\n        name_set = set()\n        sop_list = []\n        oversize_records = []\n        new_records = []\n        for one in sop_records:\n            if len(one.content) > 50000:\n                oversize_records.append(one.name)\n                continue\n            new_records.append(one)\n            if one.name not in name_set:\n                records_name_dict[one.name] = one\n                name_set.add(one.name)\n        sop_records = new_records\n        if not sop_records and oversize_records:\n            raise SopContentOverLimitError(data={\"sop_name\": \"、\".join(oversize_records)})\n        if name_set:\n            sop_list = await LinsightSOPDao.get_sops_by_names(list(name_set))\n            for one in sop_list:\n                repeat_names.add(one.name)\n\n        if override:\n            # Update existing firstsopGallery\n            override_name_dict = {}\n            for one in sop_list:\n                if one_record := records_name_dict.get(one.name):\n                    await SOPManageService.update_sop(SOPManagementUpdateSchema(\n                        id=one.id,\n                        name=one.name,\n                        description=one_record.description,\n                        content=one_record.content,\n                        rating=one_record.rating,\n                        linsight_version_id=one_record.linsight_version_id,\n                        showcase=False,\n                        user_id=one_record.user_id,\n                    ))\n                    override_name_dict[one.name] = True\n            # Add the restsopRecord\n            for one in records_name_dict.values():\n                if one.name in override_name_dict:\n                    continue\n                await SOPManageService.add_sop(SOPManagementSchema(\n                    name=one.name,\n                    description=one.description,\n                    content=one.content,\n                    rating=one.rating,\n                    linsight_version_id=one.linsight_version_id,\n                ), one.user_id)\n        elif save_new:\n            for one in sop_records:\n                new_name = one.name\n                if new_name in repeat_names:\n                    # Add suffix if there are duplicate records, Limit Length500characters\n                    new_name = f\"{one.name}Dungeon\"\n                await SOPManageService.add_sop(SOPManagementSchema(\n                    name=new_name,\n                    description=one.description,\n                    content=one.content,\n                    rating=one.rating,\n                    linsight_version_id=one.linsight_version_id,\n                ), one.user_id)\n        else:\n            # Explain that there is a duplicate record, which needs to be confirmed by the user\n            if sop_list:\n                return list(repeat_names)\n            # Insert a record into the database\n            for one in sop_records:\n                await SOPManageService.add_sop(SOPManagementSchema(\n                    name=one.name,\n                    description=one.description,\n                    content=one.content,\n                    rating=one.rating,\n                    linsight_version_id=one.linsight_version_id,\n                ), one.user_id)\n        if oversize_records:\n            raise SopContentOverLimitError(data={\"sop_name\": \"、\".join(oversize_records)})\n        return None\n\n    @classmethod\n    async def parse_sop_file(cls, file: UploadFile) -> (list, list):\n        \"\"\"\n        analyzingSOPDoc.\n        :param file: FilePath\n        \"\"\"\n        if not file.size:\n            raise UploadFileEmptyError()\n        error_rows = []\n        success_rows = []\n        wb = None\n\n        try:\n            wb = openpyxl.load_workbook(io.BytesIO(file.file.read()), read_only=True, data_only=True)\n            sheet = wb.active\n            max_rows = sheet.max_row\n            for i in range(2, max_rows + 1):\n                name = sheet.cell(row=i, column=1).value\n                description = sheet.cell(row=i, column=2).value\n                content = sheet.cell(row=i, column=3).value\n                error_msg = []\n                if not name:\n                    error_msg.append(\"name_empty\")\n                if not content:\n                    error_msg.append(\"description_empty\")\n                if len(str(name)) >= 500:\n                    error_msg.append(\"name_over_size\")\n                if len(str(content)) >= 50000:\n                    error_msg.append(\"content_over_size\")\n                if description and len(str(description)) >= 1000:\n                    error_msg.append(\"description_over_size\")\n                if error_msg:\n                    error_rows.append({\n                        \"index\": i,\n                        \"error_msg\": error_msg\n                    })\n                else:\n                    success_rows.append({\n                        \"name\": str(name),\n                        \"description\": str(description) if description is not None else \"\",\n                        \"content\": str(content),\n                    })\n        finally:\n            if wb:\n                wb.close()\n        return success_rows, error_rows\n\n    @classmethod\n    async def upload_sop_file(cls, login_user: UserPayload, file: UploadFile, ignore_error: bool, override: bool,\n                              save_new: bool) \\\n            -> (List[Dict], List[Dict], List[str]):\n        \"\"\"\n        Upload itSOPDoc.\n        :param login_user: Logged in user information\n        :param file: FilePath\n        :param ignore_error: Do you want to ignore the error\n        :param override: Do you want to overwrite the existingSOP\n        :param save_new: Do you want to save the newSOP\n        :return: Upload results, success_rows, error_rows, repeat_names\n        \"\"\"\n        success_rows, error_rows = await cls.parse_sop_file(file)\n        if (error_rows or len(success_rows) == 0) and not ignore_error:\n            return success_rows, error_rows\n        if not success_rows:\n            return [], [], []\n        records = [LinsightSOPRecord(**one, user_id=login_user.user_id) for one in success_rows]\n        repeat_name_list = await cls._sync_sop_record(records, override=override, save_new=save_new)\n        return [], [], repeat_name_list\n\n    @classmethod\n    async def get_sop_list(cls, keywords: str = None, sort: Literal[\"asc\", \"desc\"] = \"desc\", showcase: bool = False,\n                           page: int = 1, page_size: int = 10) -> dict:\n        \"\"\"\n        DapatkanSOPVertical\n        :param keywords: Keyword\n        :param sort: Sort By\n        :param page: Page\n        :param page_size: Items per page\n        :param showcase: Whether to show only the selected cases ofSOP\n        :return: SOPLists and totals\n        \"\"\"\n        sop_pages = await LinsightSOPDao.get_sop_page(keywords=keywords, showcase=showcase, page=page,\n                                                      page_size=page_size,\n                                                      sort=sort)\n        user_ids = list(set([one[\"user_id\"] for one in sop_pages[\"items\"]]))\n        user_map = UserDao.aget_user_by_ids(user_ids=user_ids)\n        user_map = {one.user_id: one.user_name for one in await user_map}\n        for one in sop_pages[\"items\"]:\n            one[\"user_name\"] = user_map.get(one[\"user_id\"], str(one[\"user_id\"]))\n        return sop_pages\n\n    @staticmethod\n    async def add_sop(sop_obj: SOPManagementSchema, user_id: int) -> UnifiedResponseModel | None:\n        \"\"\"\n        Add NewSOP\n        :param user_id:\n        :param sop_obj:\n        :return: Added bySOPObjects\n        \"\"\"\n\n        # Get the current global configuration ofembeddingModels\n        workbench_conf = await LLMService.get_workbench_llm()\n        try:\n            emb_model_id = workbench_conf.embedding_model.id\n            if not emb_model_id:\n                return NoEmbeddingModelError.return_resp()\n        except AttributeError:\n            return NoEmbeddingModelError.return_resp()\n\n        # CorrectionembeddingModels\n        embed_info = LLMDao.get_model_by_id(int(emb_model_id))\n        if not embed_info:\n            return EmbeddingModelNotExistError.return_resp()\n        if embed_info.model_type != LLMModelType.EMBEDDING.value:\n            return EmbeddingModelTypeError.return_resp()\n\n        vector_store_id = uuid.uuid4().hex\n\n        embeddings = await LLMService.get_bisheng_linsight_embedding(model_id=embed_info.id,\n                                                                     invoke_user_id=user_id)\n        try:\n            vector_client: Milvus = decide_vectorstores(\n                SOPManageService.collection_name, \"Milvus\", embeddings\n            )\n\n            es_client: ElasticKeywordsSearch = decide_vectorstores(\n                SOPManageService.collection_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n            )\n            metadatas = [{\"vector_store_id\": vector_store_id}]\n            vector_client.add_texts([sop_obj.content[0:10000]], metadatas=metadatas)\n            es_client.add_texts([sop_obj.content], ids=[vector_store_id], metadatas=metadatas)\n        except Exception as e:\n            return LinsightAddSopError.return_resp(data=str(e))\n\n        sop_dict = sop_obj.model_dump(exclude_unset=True)\n        sop_dict[\"vector_store_id\"] = vector_store_id  # Set Vector StorageID\n        # Here you can add a database operation that willsop_objSave to Database\n        sop_model = LinsightSOP(**sop_dict)\n        sop_model.user_id = user_id\n        sop_model = await LinsightSOPDao.create_sop(sop_model)\n        return resp_200(data=sop_model)\n\n    @staticmethod\n    async def update_sop(sop_obj: SOPManagementUpdateSchema,\n                         update_version_id: bool = True) -> UnifiedResponseModel | None:\n        \"\"\"\n        UpdateSOP\n        :param sop_obj:\n        :param update_version_id: Do you want to update the versionID\n        :return: Post UpdateSOPObjects\n        \"\"\"\n        # CorrectionSOPpresence or does it\n        existing_sop = await LinsightSOPDao.get_sops_by_ids([sop_obj.id])\n        if not existing_sop:\n            return NotFoundError.return_resp()\n        if not update_version_id:\n            sop_obj.linsight_version_id = existing_sop[0].linsight_version_id\n\n        if sop_obj.content != existing_sop[0].content:\n\n            # Get the current global configuration ofembeddingModels\n            workbench_conf = await LLMService.get_workbench_llm()\n            try:\n                emb_model_id = workbench_conf.embedding_model.id\n                if not emb_model_id:\n                    return NoEmbeddingModelError.return_resp()\n            except AttributeError:\n                return NoEmbeddingModelError.return_resp()\n\n            vector_store_id = existing_sop[0].vector_store_id\n            embeddings = await LLMService.get_bisheng_linsight_embedding(invoke_user_id=sop_obj.user_id,\n                                                                         model_id=int(emb_model_id))\n\n            # Update Vector Store\n            try:\n                vector_client: Milvus = decide_vectorstores(\n                    SOPManageService.collection_name, \"Milvus\", embeddings\n                )\n                es_client: ElasticKeywordsSearch = decide_vectorstores(\n                    SOPManageService.collection_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n                )\n\n                vector_client.delete(expr=f\"vector_store_id == '{vector_store_id}'\")\n                es_client.delete([vector_store_id])\n                metadatas = [{\"vector_store_id\": vector_store_id}]\n                vector_client.add_texts([sop_obj.content[0:10000]], metadatas=metadatas)\n                es_client.add_texts([sop_obj.content], ids=[vector_store_id], metadatas=metadatas)\n\n            except Exception as e:\n                return LinsightUpdateSopError.return_resp(data=str(e))\n\n        # Update databaseSOP\n        sop_model = await LinsightSOPDao.update_sop(sop_obj)\n\n        return resp_200(data=sop_model)\n\n    @staticmethod\n    async def remove_sop(sop_ids: list[int], login_user: UserPayload) -> UnifiedResponseModel | None:\n        \"\"\"\n        DeleteSOP\n        :param login_user:\n        :param sop_ids: SOPUniqueness quantificationIDVertical\n        :return: Remove result\n        \"\"\"\n\n        # CorrectionSOPpresence or does it\n        existing_sops = await LinsightSOPDao.get_sops_by_ids(sop_ids)\n        if not existing_sops:\n            return NotFoundError.return_resp()\n\n        # Delete data in vector store\n        try:\n            vector_store_ids = [sop.vector_store_id for sop in existing_sops]\n            vector_client: Milvus = decide_vectorstores(\n                SOPManageService.collection_name, \"Milvus\", FakeEmbedding()\n            )\n            es_client: ElasticKeywordsSearch = decide_vectorstores(\n                SOPManageService.collection_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n            )\n\n            vector_client.delete(expr=f\"vector_store_id in {vector_store_ids}\")\n            es_client.delete(vector_store_ids)\n\n        except Exception as e:\n            return LinsightDeleteSopError.return_resp(data=str(e))\n\n        # Delete from databaseSOP\n        await LinsightSOPDao.remove_sop(sop_ids=sop_ids)\n\n        return resp_200(data=True)\n\n    @classmethod\n    async def get_sop_by_id(cls, sop_id: int) -> LinsightSOP | None:\n        \"\"\"\n        accordingIDDapatkanSOP\n        :param sop_id: SOPUniqueness quantificationID\n        :return: SOPObjects\n        \"\"\"\n        sop_models = await LinsightSOPDao.get_sops_by_ids([sop_id])\n        if not sop_models:\n            return None\n        return sop_models[0]\n\n    # sop Library Retrieval\n    @classmethod\n    async def search_sop(cls, invoke_user_id: int, query: str, k: int = 3) -> (List[Document], BaseErrorCode | None):\n        \"\"\"\n        CariSOP\n        :param k:\n        :param query: Keywords Search\n        :return: search results\n        \"\"\"\n        # Get the current global configuration ofembeddingModels\n        try:\n            vector_search = True\n            es_search = True\n            error_msg = None\n            workbench_conf = await LLMService.get_workbench_llm()\n            if workbench_conf.embedding_model is None or not workbench_conf.embedding_model.id:\n                vector_search = False\n                error_msg = LinsightVectorModelError\n            else:\n                try:\n                    emb_model_id = workbench_conf.embedding_model.id\n                    embeddings = await LLMService.get_bisheng_linsight_embedding(invoke_user_id=invoke_user_id,\n                                                                                 model_id=int(emb_model_id))\n                    await embeddings.aembed_query(\"test\")\n                except Exception as e:\n                    logger.error(f\"Vector retrieval model initialization failed: {str(e)}\")\n                    vector_search = False\n                    error_msg = LinsightVectorModelError\n\n            # Create Text Splitter\n            text_splitter = RecursiveCharacterTextSplitter()\n            retrievers = []\n            if vector_search and es_search:\n                emb_model_id = workbench_conf.embedding_model.id\n                embeddings = await LLMService.get_bisheng_linsight_embedding(invoke_user_id=invoke_user_id,\n                                                                             model_id=int(emb_model_id))\n\n                vector_client: Milvus = decide_vectorstores(\n                    SOPManageService.collection_name, \"Milvus\", embeddings\n                )\n\n                es_client: ElasticKeywordsSearch = decide_vectorstores(\n                    SOPManageService.collection_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n                )\n\n                keyword_retriever = KeywordRetriever(keyword_store=es_client, search_kwargs={\"k\": 100},\n                                                     text_splitter=text_splitter)\n                baseline_vector_retriever = BaselineVectorRetriever(vector_store=vector_client,\n                                                                    search_kwargs={\"k\": 100},\n                                                                    text_splitter=text_splitter)\n\n                retrievers = [keyword_retriever, baseline_vector_retriever]\n\n            elif es_search and not vector_search:\n                # Search with keywords only\n                es_client: ElasticKeywordsSearch = decide_vectorstores(\n                    SOPManageService.collection_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n                )\n                keyword_retriever = KeywordRetriever(keyword_store=es_client, search_kwargs={\"k\": 100},\n                                                     text_splitter=text_splitter)\n                retrievers = [keyword_retriever]\n\n            elif vector_search and not es_search:\n                # Use vector retrieval only\n                emb_model_id = workbench_conf.embedding_model.id\n                embeddings = await LLMService.get_bisheng_linsight_embedding(invoke_user_id=invoke_user_id,\n                                                                             model_id=int(emb_model_id))\n\n                vector_client: Milvus = decide_vectorstores(\n                    SOPManageService.collection_name, \"Milvus\", embeddings\n                )\n\n                baseline_vector_retriever = BaselineVectorRetriever(vector_store=vector_client,\n                                                                    search_kwargs={\"k\": 100},\n                                                                    text_splitter=text_splitter)\n                retrievers = [baseline_vector_retriever]\n            else:\n                error_msg = LinsightDocSearchError\n                return [], error_msg\n\n            retriever = EnsembleRetriever(retrievers=retrievers, weights=[0.5, 0.5] if len(retrievers) > 1 else [1.0])\n\n            # Perform Retrieval\n            results = await retriever.ainvoke(input=query)\n\n            if not results:\n                return [], error_msg\n\n            vector_store_ids = [doc.metadata.get(\"vector_store_id\") for doc in results if\n                                doc.metadata.get(\"vector_store_id\")]\n\n            # accordingvector_store_idsQuerying repositoriessop\n            sop_models = await LinsightSOPDao.get_sop_by_vector_store_ids(vector_store_ids)\n            sop_model_vector_store_ids = [sop.vector_store_id for sop in sop_models]\n\n            # Filter results to ensure that only those that exist in the database are returnedSOP\n            results = [doc for doc in results if doc.metadata.get(\"vector_store_id\") in sop_model_vector_store_ids]\n\n            # Before filtering and fetchingk result(s) found\n            results = results[:k]\n\n            return results, error_msg\n        except Exception as e:\n            logger.error(f\"Failed to search the instruction manual: {str(e)}\")\n            return [], LinsightDocNotFoundError\n\n    # RebuildSOP VectorStore\n    @classmethod\n    async def rebuild_sop_vector_store_task(cls, embeddings: Embeddings):\n        \"\"\"\n        RebuildSOPVector Storage\n        :return: Reconstruction Results\n        \"\"\"\n        try:\n            # Fetch allSOP\n            all_sops = await LinsightSOPDao.get_all_sops()\n            if not all_sops:\n                logger.info(\"NoSOPData needs to be reconstructed for vector storage\")\n                return None\n\n            # Wrapper synchronization function is asynchronous function\n            def sync_func(sops, emb):\n                \"\"\"\n                Synchronization function for rebuildingSOPVector Storage\n                :param emb:\n                :param sops:\n                :return:\n                \"\"\"\n\n                vector_client: Milvus = decide_vectorstores(\n                    SOPManageService.collection_name, \"Milvus\", emb\n                )\n                # Delete existing vector storecollection\n                if vector_client.col is not None:\n                    logger.info(\"Delete existingSOPVector Storagecollection\")\n                    vector_client.col.drop()\n                    vector_client.col = None\n                    vector_client.fields = []\n\n                metadatas = [{\"vector_store_id\": sop.vector_store_id} for sop in sops]\n                contents = [sop.content for sop in sops]\n\n                batch_size = 16\n                for i in range(0, len(contents), batch_size):\n                    batch_contents = contents[i:i + batch_size]\n                    batch_metadatas = metadatas[i:i + batch_size]\n\n                    # Add NewSOPData to vector storage\n                    vector_client.add_texts(batch_contents, metadatas=batch_metadatas)\n\n                logger.info(\"SOPVector store rebuild completed: {}\".format(len(sops)))\n\n            # Userun_asyncRun Synchronization Function\n            await util.sync_func_to_async(sync_func)(all_sops, embeddings)\n            return None\n\n\n        except Exception as e:\n            logger.exception(f\"RebuildSOPVector store failed: {str(e)}\")\n            return None\n\n# if __name__ == '__main__':\n#     # test code\n#     results, error_msg = asyncio.run(SOPManageService.search_sop(query=\"Guidelines for the preparation of bidding documents\", k=3))\n#\n#     print(results)\n#     print(error_msg)\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/services/state_message_manager.py",
    "content": "import asyncio\nimport pickle\nfrom enum import Enum\nfrom typing import List, Dict, Any, Optional\n\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.linsight.domain.schemas.linsight_schema import UserInputEventSchema\nfrom bisheng.common.errcode.http_error import ServerError\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync, get_redis_client\nfrom bisheng.linsight.domain.models.linsight_execute_task import ExecuteTaskStatusEnum, LinsightExecuteTaskDao, \\\n    LinsightExecuteTask\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersion, LinsightSessionVersionDao\nfrom bisheng.utils.util import retry_async\nfrom bisheng_langchain.linsight.event import BaseEvent\n\n\nclass MessageEventType(str, Enum):\n    \"\"\"\n    Message event type enumeration\n    \"\"\"\n    #  tasks starting\n    TASK_START = \"task_start\"\n    # Generate Tasks\n    TASK_GENERATE = \"task_generate\"\n    # Task status update\n    TASK_STATUS_UPDATE = \"task_status_update\"\n    # User input\n    USER_INPUT = \"user_input\"\n    # User input complete\n    USER_INPUT_COMPLETED = \"user_input_completed\"\n    # Task Execution Steps\n    TASK_EXECUTE_STEP = \"task_execute_step\"\n    # Mission-End\n    TASK_END = \"task_end\"\n    # Error Message\n    ERROR_MESSAGE = \"error_message\"\n    # Final Result\n    FINAL_RESULT = \"final_result\"\n    # Mission terminated\n    TASK_TERMINATED = \"task_terminated\"\n\n\nclass MessageData(BaseModel):\n    \"\"\"Message Data Model\"\"\"\n    event_type: MessageEventType\n    data: Dict[str, Any]\n    timestamp: Optional[float] = Field(default_factory=lambda: asyncio.get_event_loop().time())\n\n\nclass LinsightStateMessageManager:\n    \"\"\"Idea State and Message Manager\"\"\"\n\n    # Class Constant\n    DEFAULT_EXPIRATION = 3600\n    DEFAULT_RETRY_ATTEMPTS = 3\n    DEFAULT_RETRY_DELAY = 1\n    KEY_PREFIX = \"linsight_tasks:\"\n\n    def __init__(self, session_version_id: str):\n        \"\"\"\n        Initializing the Inspiration State and Message Manager\n\n        Args:\n            session_version_id: Session VersionID\n        \"\"\"\n        self._session_version_id = session_version_id\n        self._redis_client = get_redis_client_sync()\n        self._logger = logger\n\n        # Redis keyManaging\n        self._key_prefix = f\"{self.KEY_PREFIX}{session_version_id}:\"\n        self._keys = {\n            'session_version_info': f\"{self._key_prefix}session_version_info\",\n            'messages': f\"{self._key_prefix}messages\",\n            'execution_tasks': f\"{self._key_prefix}execution_tasks:\"\n        }\n\n    async def _handle_redis_operation(self, operation, *args, **kwargs):\n        \"\"\"\n        ImpuestoRedisOperation error handling\n\n        Args:\n            operation: RedisAction Function\n            *args: Position JSON\n            **kwargs: Keyword Parameters\n\n        Returns:\n            Operating result\n\n        Raises:\n            Exception: RedisException thrown when operation failed\n        \"\"\"\n        try:\n            return await operation(*args, **kwargs)\n        except Exception as e:\n            self._logger.error(f\"Redis operation failed: {e}\")\n            raise\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def push_message(self, message: MessageData) -> None:\n        \"\"\"\n        Push messages toRedisin the list\n\n        Args:\n            message: Message Model\n        \"\"\"\n        self._logger.info(f\"Pushing message: {message.event_type}\")\n\n        await self._handle_redis_operation(\n            self._redis_client.arpush,\n            self._keys['messages'],\n            message.model_dump()\n        )\n        self._logger.info(f\"Message pushed: {message.event_type}\")\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def pop_message(self) -> Optional[MessageData]:\n        \"\"\"\n        FROMRedisA message pops up in the list\n\n        Returns:\n            Message Model orNone\n        \"\"\"\n        try:\n\n            message_data = await self._redis_client.ablpop(self._keys['messages'])\n\n            if message_data:\n                return MessageData.model_validate(message_data)\n            return None\n\n        except Exception as e:\n            self._logger.error(f\"Failed to pop message: {e}\")\n            raise e\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def set_session_version_info(self, session_version_model) -> None:\n        \"\"\"\n        Set session version information\n\n        Args:\n            session_version_model: Session Version Model\n        \"\"\"\n        # Using Transactions to Ensure Data Consistency\n        async with self._redis_client.async_pipeline() as pipe:\n            try:\n                # Write database first\n                await LinsightSessionVersionDao.insert_one(session_version_model)\n\n                # Write AgainRedis\n                await pipe.set(\n                    self._keys['session_version_info'],\n                    pickle.dumps(session_version_model.model_dump()),\n                    ex=self.DEFAULT_EXPIRATION\n                )\n                await pipe.execute()\n\n                self._logger.info(f\"Session version info set: {self._session_version_id}\")\n\n            except Exception as e:\n                self._logger.error(f\"Failed to set session version info: {e}\")\n                raise\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def get_session_version_info(self) -> Optional[LinsightSessionVersion]:\n        \"\"\"\n        Get session version information\n\n        Returns:\n            Session Version Information Model orNone\n        \"\"\"\n        try:\n            info = await self._handle_redis_operation(\n                self._redis_client.aget,\n                self._keys['session_version_info']\n            )\n            if not info:\n                self._logger.warning(f\"No session version info found for {self._session_version_id}\")\n                session_version_model = await LinsightSessionVersionDao.get_by_id(self._session_version_id)\n                await self.set_session_version_info(session_version_model)\n                return session_version_model\n\n            return LinsightSessionVersion.model_validate(info)\n        except Exception as e:\n            self._logger.error(f\"Failed to get session version info: {e}\")\n            session_version_model = await LinsightSessionVersionDao.get_by_id(self._session_version_id)\n            await self.set_session_version_info(session_version_model)\n            return session_version_model\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def set_execution_tasks(self, tasks: List[LinsightExecuteTask]) -> None:\n        \"\"\"\n        Set Execution Information\n\n        Args:\n            tasks: Execute Task List\n        \"\"\"\n        if not tasks:\n            self._logger.warning(\"No tasks provided to set_execution_tasks\")\n            return\n\n        try:\n            # Batch WriteRedis\n            tasks_mapping = {\n                f\"{self._keys['execution_tasks']}{task.id}\": task.model_dump()\n                for task in tasks\n            }\n\n            await self._redis_client.amset(tasks_mapping, expiration=self.DEFAULT_EXPIRATION)\n\n\n        except Exception as e:\n            self._logger.error(f\"Failed to set execution tasks: {e}\")\n            raise\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def update_execution_task_status(\n            self,\n            task_id: str,\n            status: ExecuteTaskStatusEnum,\n            **kwargs\n    ) -> Dict[str, Any]:\n        \"\"\"\n        Update Execution Status\n\n        Args:\n            task_id: TaskID\n            status: New status\n            **kwargs: Other update fields\n\n        Returns:\n            Updated task data\n        \"\"\"\n        try:\n            # Update database first\n            task_model = await LinsightExecuteTaskDao.update_by_id(\n                task_id,\n                status=status,\n                **kwargs\n            )\n\n            # Update againRedis\n            task_key = f\"{self._keys['execution_tasks']}{task_id}\"\n            task_data = task_model.model_dump()\n\n            await self._redis_client.aset(\n                task_key,\n                task_data,\n                expiration=self.DEFAULT_EXPIRATION\n            )\n\n            self._logger.info(f\"Updated task {task_id} status to {status}\")\n            return task_data\n\n        except Exception as e:\n            self._logger.error(f\"Failed to update task {task_id} status: {e}\")\n            raise\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def set_user_input(self, task_id: str, user_input: str, files: List[Dict[str, str]] = None) -> None:\n        \"\"\"\n        Set User Input\n\n        Args:\n            task_id: TaskID\n            user_input: User input\n            files: Related Documents List\n        \"\"\"\n        task_key = f\"{self._keys['execution_tasks']}{task_id}\"\n\n        try:\n\n            task_model = await self.get_execution_task(task_id)\n\n            if not task_model:\n                raise ValueError(f\"Task with ID {task_id} not found in Redis or database.\")\n\n            user_input_event = task_model.history[-1] if task_model.history else None\n            if user_input_event is None or user_input_event.get(\"step_type\") != \"call_user_input\":\n                raise ValueError(f\"Task with ID {task_id} does not support user input.\")\n\n            user_input_event = UserInputEventSchema.model_validate(user_input_event)\n\n            user_input_event.user_input = user_input\n            user_input_event.files = files\n            user_input_event.is_completed = True\n            task_model.history[-1] = user_input_event.model_dump()\n\n            task_model.status = ExecuteTaskStatusEnum.USER_INPUT_COMPLETED\n\n            # Using Transactions to Ensure Data Consistency\n            async with self._redis_client.async_pipeline() as pipe:\n                await pipe.set(task_key, pickle.dumps(task_model.model_dump()), ex=self.DEFAULT_EXPIRATION)\n                await pipe.execute()\n\n            # Database updating\n            await LinsightExecuteTaskDao.update_by_id(\n                task_id,\n                status=ExecuteTaskStatusEnum.USER_INPUT_COMPLETED,\n                history=task_model.history\n            )\n\n            self._logger.info(f\"Set user input for task {task_id}\")\n\n        except Exception as e:\n            self._logger.error(f\"Failed to set user input for task {task_id}: {e}\")\n            raise ServerError.http_exception()\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def get_execution_task(self, task_id: str) -> Optional[LinsightExecuteTask]:\n        \"\"\"\n        Get task execution information\n\n        Args:\n            task_id: TaskID\n\n        Returns:\n            Execute Task Model orNone\n        \"\"\"\n        task_key = f\"{self._keys['execution_tasks']}{task_id}\"\n\n        try:\n            task_data = await self._redis_client.aget(task_key)\n\n            if task_data:\n                return LinsightExecuteTask.model_validate(task_data)\n\n            # Automatically close purchase order afterRedisNo data in, fetching from database\n            task_model = await LinsightExecuteTaskDao.get_by_id(task_id)\n            await self.set_execution_tasks([task_model])\n            return task_model\n\n        except Exception as e:\n            self._logger.error(f\"Failed to get execution task {task_id}: {e}\")\n            return None\n\n    @retry_async(num_retries=DEFAULT_RETRY_ATTEMPTS, delay=DEFAULT_RETRY_DELAY)\n    async def add_execution_task_step(self, task_id: str, step: BaseEvent) -> None:\n        \"\"\"\n        Add Execute Task Step\n\n        Args:\n            task_id: TaskID\n            step: Execution Steps\n        \"\"\"\n        task_key = f\"{self._keys['execution_tasks']}{task_id}\"\n\n        try:\n            task_data = await self.get_execution_task(task_id)\n\n            if not task_data:\n                raise ValueError(f\"Task with ID {task_id} not found in Redis.\")\n\n            task_model = LinsightExecuteTask.model_validate(task_data)\n\n            # Initialization History\n            if task_model.history is None:\n                task_model.history = []\n\n            # Adding new Steps\n            task_model.history.append(step.model_dump())\n\n            # Update Redis and database\n            await self._redis_client.aset(\n                task_key,\n                task_model.model_dump(),\n                expiration=self.DEFAULT_EXPIRATION\n            )\n\n            await LinsightExecuteTaskDao.update_by_id(\n                task_id,\n                history=task_model.history\n            )\n\n            self._logger.info(f\"Added step to task {task_id}\")\n\n        except Exception as e:\n            self._logger.error(f\"Failed to add step to task {task_id}: {e}\")\n            raise\n\n    async def get_execution_tasks(self):\n        \"\"\"\n        Get All Execute Tasks\n\n        Returns:\n            Execute Task List\n        \"\"\"\n        try:\n            pattern = f\"{self._keys['execution_tasks']}*\"\n            task_keys = await self._redis_client.akeys(pattern)\n\n            if not task_keys:\n                return []\n\n            tasks_data = await self._redis_client.amget(task_keys)\n            tasks = [LinsightExecuteTask.model_validate(task) for task in tasks_data if task]\n\n            if not tasks:\n                tasks = await LinsightExecuteTaskDao.get_by_session_version_id(\n                    session_version_id=self._session_version_id)\n            return tasks\n\n        except Exception as e:\n            self._logger.error(f\"Failed to get execution tasks: {e}\")\n            return []\n\n    async def cleanup_session_data(self) -> None:\n        \"\"\"\n        Cleanup Session RelatedRedisDATA\n        \"\"\"\n        try:\n            pattern = f\"{self._key_prefix}*\"\n            keys = await self._redis_client.akeys(pattern)\n\n            if keys:\n                await self._redis_client.adelete(*keys)\n                self._logger.info(f\"Cleaned up {len(keys)} keys for session {self._session_version_id}\")\n\n        except Exception as e:\n            self._logger.error(f\"Failed to cleanup session data: {e}\")\n            raise\n\n    async def get_session_stats(self) -> Dict[str, Any]:\n        \"\"\"\n        Get session statistics\n\n        Returns:\n            Dictionary containing session statistics\n        \"\"\"\n        try:\n            stats = {\n                'session_version_id': self._session_version_id,\n                'message_count': await self._redis_client.allen(self._keys['messages']),\n                'has_session_info': await self._redis_client.exists(self._keys['session_version_info']),\n                'task_count': 0\n            }\n\n            # Calculate number of tasks\n            pattern = f\"{self._keys['execution_tasks']}*\"\n            task_keys = await self._redis_client.akeys(pattern)\n            stats['task_count'] = len(task_keys)\n\n            return stats\n\n        except Exception as e:\n            self._logger.error(f\"Failed to get session stats: {e}\")\n            return {'error': str(e)}\n\n    # Clean up all session-relatedRedisDATA\n    @classmethod\n    async def cleanup_all_sessions(cls) -> None:\n        \"\"\"\n        Clean up all session-relatedRedisDATA\n        \"\"\"\n        try:\n            redis_client = await get_redis_client()\n            pattern = f\"{cls.KEY_PREFIX}*\"\n            keys = await redis_client.async_connection.keys(pattern)\n\n            if keys:\n                await redis_client.async_connection.delete(*keys)\n                logger.info(f\"Cleaned up {len(keys)} keys for all sessions\")\n        except Exception as e:\n            logger.error(f\"Failed to cleanup all session data: {e}\")\n            return\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/services/workbench_impl.py",
    "content": "import asyncio\nimport json\nimport os\nimport uuid\nfrom dataclasses import dataclass\nfrom io import BytesIO\nfrom typing import Dict, List, Optional, AsyncGenerator, Tuple, Any\nfrom urllib.parse import unquote\n\nfrom e2b.sandbox.filesystem.filesystem import WriteEntry\nfrom fastapi import UploadFile\nfrom langchain_core.tools import BaseTool\nfrom loguru import logger\n\nfrom bisheng.api.services.knowledge_imp import decide_vectorstores, async_read_chunk_text\nfrom bisheng.linsight.domain.services.sop_manage import SOPManageService\nfrom bisheng.api.services.workstation import WorkStationService\nfrom bisheng.linsight.domain.schemas.linsight_schema import LinsightQuestionSubmitSchema, DownloadFilesSchema, \\\n    SubmitFileSchema\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.errcode.linsight import LinsightToolInitError, LinsightBishengLLMError, LinsightGenerateSopError\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.cache.utils import save_file_to_folder, CACHE_DIR\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.prompts.manager import get_prompt_manager\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.database.models.flow import FlowType\nfrom bisheng.linsight.domain.models.linsight_execute_task import LinsightExecuteTaskDao\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersionDao, SessionVersionStatusEnum, \\\n    LinsightSessionVersion\nfrom bisheng.linsight.domain.models.linsight_sop import LinsightSOPRecord\nfrom bisheng.database.models.session import MessageSessionDao, MessageSession\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeRead, KnowledgeTypeEnum\nfrom bisheng.llm.domain.llm import BishengLLM\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng.tool.domain.services.tool import ToolServices\nfrom bisheng.utils import util\nfrom bisheng.utils.util import async_calculate_md5\nfrom bisheng_langchain.linsight.const import ExecConfig\n\n\n@dataclass\nclass TaskNode:\n    \"\"\"Task node to build the task tree\"\"\"\n    task: Any  # LinsightExecuteTask Objects\n    children: List['TaskNode'] = None\n\n    def __post_init__(self):\n        if self.children is None:\n            self.children = []\n\n    def to_dict(self) -> Dict:\n        \"\"\"Convert task nodes to dictionary format\"\"\"\n        task_dict = self.task.model_dump()\n        task_dict['children'] = [child.to_dict() for child in self.children]\n        return task_dict\n\n\nclass LinsightWorkbenchImpl:\n    \"\"\"LinsightWorkbench Implementation Class\"\"\"\n\n    # Class Constant\n    COLLECTION_NAME_PREFIX = \"col_linsight_file_\"\n    FILE_INFO_REDIS_KEY_PREFIX = \"linsight_file:\"\n    CACHE_EXPIRATION_HOURS = 24\n\n    class LinsightError(Exception):\n        \"\"\"LinsightRelated Errors\"\"\"\n        pass\n\n    class SearchSOPError(Exception):\n        \"\"\"SOPRetrieve Error\"\"\"\n\n        def __init__(self, error_class: BaseErrorCode):\n            super().__init__(error_class.Msg)\n            self.error_class = error_class\n\n    class ToolsInitializationError(Exception):\n        \"\"\"Tool initialization error\"\"\"\n\n    class BishengLLMError(Exception):\n        \"\"\"Bisheng LLMRelated Errors\"\"\"\n\n    @classmethod\n    async def _get_llm(cls, invoke_user_id: int) -> (BishengLLM, Any):\n        # Get and validate the workbench configuration\n        workbench_conf = await cls._get_workbench_config()\n\n        # BuatLLMInstances\n        linsight_conf = settings.get_linsight_conf()\n        llm = await LLMService.get_bisheng_linsight_llm(invoke_user_id=invoke_user_id,\n                                                        model_id=workbench_conf.task_model.id,\n                                                        temperature=linsight_conf.default_temperature)\n        return llm, workbench_conf\n\n    @classmethod\n    async def human_participate_add_file(cls, linsight_session_version: LinsightSessionVersion,\n                                         files: List[SubmitFileSchema]) -> Optional[List]:\n        \"\"\"\n        Adding Files When Manually Involved\n        :param linsight_session_version:\n        :param files:\n        :return:\n        \"\"\"\n        if not files:\n            return None\n\n        processed_files = await cls._process_submitted_files(files, linsight_session_version.session_id)\n\n        if linsight_session_version.files:\n            linsight_session_version.files.extend(processed_files)\n        else:\n            linsight_session_version.files = processed_files\n\n        await LinsightSessionVersionDao.insert_one(linsight_session_version)\n\n        return processed_files\n\n    @classmethod\n    async def submit_user_question(cls, submit_obj: LinsightQuestionSubmitSchema,\n                                   login_user: UserPayload) -> tuple[MessageSession, LinsightSessionVersion]:\n        \"\"\"\n        Submit user issue and create session\n\n        Args:\n            submit_obj: Submitted Question Objects\n            login_user: Logged in user information\n\n        Returns:\n            tuple: (Message Session Model, Inspiration Conversation Version Model)\n\n        Raises:\n            LinsightError: When creating a session fails\n        \"\"\"\n        try:\n            # Generate Unique SessionsID\n            chat_id = uuid.uuid4().hex\n\n            # Process files (if present)\n            processed_files = await cls._process_submitted_files(submit_obj.files, chat_id)\n\n            # Create a message session\n            message_session = MessageSession(\n                chat_id=chat_id,\n                flow_id=ApplicationTypeEnum.LINSIGHT.value,\n                flow_name='New Chat',\n                flow_type=FlowType.LINSIGHT.value,\n                user_id=login_user.user_id\n            )\n\n            message_session = await MessageSessionDao.async_insert_one(message_session)\n\n            # RecordTelemetryJournal\n            await telemetry_service.log_event(user_id=login_user.user_id,\n                                              event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                              trace_id=trace_id_var.get(),\n                                              event_data=NewMessageSessionEventData(\n                                                  session_id=message_session.chat_id,\n                                                  app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                                  source=\"platform\",\n                                                  app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                                  app_type=ApplicationTypeEnum.LINSIGHT\n                                              )\n                                              )\n\n            # Create Ideas Conversation Version\n            linsight_session_version = LinsightSessionVersion(\n                session_id=chat_id,\n                user_id=login_user.user_id,\n                question=submit_obj.question,\n                tools=submit_obj.tools,\n                org_knowledge_enabled=submit_obj.org_knowledge_enabled,\n                personal_knowledge_enabled=submit_obj.personal_knowledge_enabled,\n                files=processed_files\n            )\n            linsight_session_version = await LinsightSessionVersionDao.insert_one(linsight_session_version)\n\n            return message_session, linsight_session_version\n\n        except Exception as e:\n            logger.error(f\"Failed to submit user question: {str(e)}\")\n            raise cls.LinsightError(f\"Failed to submit user question: {str(e)}\")\n\n    @classmethod\n    async def _process_submitted_files(cls, files: Optional[List[SubmitFileSchema]], chat_id: str) -> Optional[List]:\n        \"\"\"\n        Process Submitted Files\n\n        Args:\n            files: List of files\n            chat_id: SessionsID\n\n        Returns:\n            List of processed files\n        \"\"\"\n        if not files:\n            return None\n\n        file_ids = []\n\n        for file in files:\n            if file.parsing_status != \"completed\":\n                raise cls.LinsightError(f\"file {file.file_name} status is error: {file.parsing_status}\")\n            file_ids.append(file.file_id)\n\n        redis_keys = [f\"{cls.FILE_INFO_REDIS_KEY_PREFIX}{file_id}\" for file_id in file_ids]\n        redis_client = await get_redis_client()\n        processed_files = await redis_client.amget(redis_keys)\n\n        for file_info in processed_files:\n            if file_info:\n                await cls._copy_file_to_session_storage(file_info, chat_id)\n\n        return processed_files\n\n    @classmethod\n    async def _copy_file_to_session_storage(cls, file_info: Dict, chat_id: str) -> None:\n        \"\"\"\n        Copy file to session store\n\n        Args:\n            file_info: File information\n            chat_id: SessionsID\n        \"\"\"\n        source_object_name = file_info.get(\"markdown_file_path\")\n        if source_object_name:\n            original_filename = file_info.get(\"original_filename\")\n            markdown_filename = f\"{original_filename.rsplit('.', 1)[0]}.md\"\n            new_object_name = f\"linsight/{chat_id}/{source_object_name}\"\n            minio_client = await get_minio_storage()\n            await minio_client.copy_object(\n                source_object=source_object_name,\n                dest_object=new_object_name,\n                source_bucket=minio_client.tmp_bucket,\n                dest_bucket=minio_client.bucket\n            )\n            file_info[\"markdown_file_path\"] = new_object_name\n            file_info[\"markdown_filename\"] = markdown_filename\n\n    @classmethod\n    async def task_title_generate(cls, question: str, chat_id: str,\n                                  login_user: UserPayload) -> Dict:\n        \"\"\"\n        Generate task title\n\n        Args:\n            question: User Questions\n            chat_id: SessionsID\n            login_user: Logged in user information\n\n        Returns:\n            Dictionary with task title\n        \"\"\"\n        try:\n            llm, _ = await cls._get_llm(login_user.user_id)\n\n            # Buatprompt\n            prompt = await cls._generate_title_prompt(question)\n\n            # Generate task title\n            task_title = await llm.ainvoke(prompt)\n\n            if not task_title.content:\n                raise ValueError(\"Failed to generate task title, please check the model configuration or input\")\n\n            # Update session title\n            await cls._update_session_title(chat_id, task_title.content)\n\n            return {\n                \"task_title\": task_title.content,\n                \"chat_id\": chat_id,\n                \"error_message\": None\n            }\n\n        except Exception as e:\n            logger.error(f\"Failed to generate task title: {str(e)}\")\n            return {\n                \"task_title\": \"New Chat\",\n                \"chat_id\": chat_id,\n                \"error_message\": str(e)\n            }\n\n    @classmethod\n    async def _get_workbench_config(cls):\n        \"\"\"Get and validate the workbench configuration\"\"\"\n        workbench_conf = await LLMService.get_workbench_llm()\n        if not workbench_conf or not workbench_conf.task_model:\n            raise cls.BishengLLMError(\"The task has been terminated, please contact the administrator to check the status of the Ideas task execution model\")\n        return workbench_conf\n\n    @classmethod\n    async def _generate_title_prompt(cls, question: str) -> List[Tuple[str, str]]:\n        \"\"\"Generate Title Generateprompt\"\"\"\n        prompt_service = await get_prompt_manager()\n        prompt_obj = prompt_service.render_prompt(\n            namespace=\"gen_title\",\n            prompt_name=\"linsight\",\n            USER_GOAL=question\n        )\n        return [\n            (\"system\", prompt_obj.prompt.system),\n            (\"user\", prompt_obj.prompt.user)\n        ]\n\n    @classmethod\n    async def _update_session_title(cls, chat_id: str, title: str) -> None:\n        \"\"\"Update session title\"\"\"\n        session = await MessageSessionDao.async_get_one(chat_id)\n        if session:\n            session.flow_name = title\n            await MessageSessionDao.async_insert_one(session)\n\n    @classmethod\n    async def get_linsight_session_version_list(cls, session_id: str) -> List[LinsightSessionVersion]:\n        \"\"\"\n        Get a list of Invisible Conversation Versions\n\n        Args:\n            session_id: SessionsID\n\n        Returns:\n            Inspiration Session Version List\n        \"\"\"\n        return await LinsightSessionVersionDao.get_session_versions_by_session_id(session_id)\n\n    @classmethod\n    async def modify_sop(cls, linsight_session_version_id: str, sop_content: str) -> Dict:\n        \"\"\"\n        Modify Inspiration Conversation Version ofSOPContents\n\n        Args:\n            linsight_session_version_id: Session VersionID\n            sop_content: SOPContents\n\n        Returns:\n            Operating result\n        \"\"\"\n        try:\n            await LinsightSessionVersionDao.modify_sop_content(\n                linsight_session_version_id=linsight_session_version_id,\n                sop_content=sop_content\n            )\n            return {\"success\": True, \"message\": \"modify sop content successfully\"}\n        except Exception as e:\n            logger.error(f\"ChangeSOPContent failed: {str(e)}\")\n            raise cls.LinsightError(str(e))\n\n    @classmethod\n    async def generate_sop(cls, linsight_session_version_id: str,\n                           previous_session_version_id: Optional[str] = None,\n                           feedback_content: Optional[str] = None,\n                           reexecute: bool = False,\n                           login_user: Optional[UserPayload] = None,\n                           knowledge_list: List[KnowledgeRead] = None,\n                           example_sop: Optional[str] = None) -> AsyncGenerator[Dict, None]:\n        \"\"\"\n        BuatSOPContents\n\n        Args:\n            linsight_session_version_id: Current Session VersionID\n            previous_session_version_id: Previous Session VersionID\n            feedback_content: Content of feedback\n            reexecute: Whether to re-execute\n            login_user: Logged in user information\n            knowledge_list: Knowledge Base Columns\n            example_sop: Ref.sop, incoming when doing the same modelsopContents\n\n        Yields:\n            Date GeneratedSOPContent Events\n        \"\"\"\n        error_message = None\n        try:\n            # Get workbench configuration and session version\n            session_version = await cls._get_session_version(linsight_session_version_id)\n\n            if login_user.user_id != session_version.user_id:\n                yield UnAuthorizedError().to_sse_event_instance()\n                return\n            try:\n                # BuatLLMand tools\n                llm, workbench_conf = await cls._get_llm(session_version.user_id)\n            except Exception as e:\n                logger.error(f\"BuatSOPContent failed: session_version_id={linsight_session_version_id}, error={str(e)}\")\n                raise cls.BishengLLMError(str(e))\n            tools = await cls._prepare_tools(session_version, llm)\n\n            # Preparation History Summary\n            history_summary = await cls._prepare_history_summary(\n                reexecute, previous_session_version_id\n            )\n\n            # Create proxy and generateSOP\n            agent = await cls._create_linsight_agent(session_version, llm, tools, workbench_conf)\n\n            if previous_session_version_id:\n                session_version = await LinsightSessionVersionDao.get_by_id(previous_session_version_id)\n\n            content = \"\"\n            async for res in cls._generate_sop_content(\n                    agent, session_version, feedback_content, history_summary, knowledge_list, example_sop=example_sop,\n                    login_user=login_user\n            ):\n                if isinstance(res, cls.SearchSOPError):\n                    yield res.error_class.to_sse_event(event=\"search_sop_error\")\n                    continue\n\n                content += res.content\n                yield {\n                    \"event\": \"generate_sop_content\",\n                    \"data\": res.model_dump_json()\n                }\n\n            # Update session version status and sop content\n            await LinsightSessionVersionDao.modify_sop_content(\n                linsight_session_version_id=linsight_session_version_id,\n                sop_content=content\n            )\n\n            logger.info(f\"BuatSOPContent Success: session_version_id={linsight_session_version_id}\")\n\n\n        except cls.ToolsInitializationError as e:\n            logger.exception(\n                f\"Failed to initialize the Inspiration Workbench tool: session_version_id={linsight_session_version_id}, error={str(e)}\")\n            error_message = LinsightToolInitError(exception=e)\n        except cls.BishengLLMError as e:\n            logger.exception(f\"Bisheng LLMError-free: session_version_id={linsight_session_version_id}, error={str(e)}\")\n            error_message = LinsightBishengLLMError(exception=e)\n        except Exception as e:\n            logger.exception(f\"BuatSOPContent failed: session_version_id={linsight_session_version_id}, error={str(e)}\")\n            error_message = LinsightGenerateSopError(exception=e)\n\n        finally:\n            if error_message:\n                session_version = await LinsightSessionVersionDao.get_by_id(linsight_session_version_id)\n                if session_version:\n                    session_version.sop = f\"{error_message.Msg}: {str(error_message.exception)}\"\n                    session_version.status = SessionVersionStatusEnum.SOP_GENERATION_FAILED\n                    await LinsightSessionVersionDao.insert_one(session_version)\n                yield error_message.to_sse_event_instance()\n\n    @classmethod\n    async def _get_session_version(cls, session_version_id: str) -> LinsightSessionVersion:\n        \"\"\"Get session version\"\"\"\n        session_version = await LinsightSessionVersionDao.get_by_id(session_version_id)\n        if not session_version:\n            raise cls.LinsightError(\"Inspiration session version does not exist\")\n        return session_version\n\n    @classmethod\n    async def _prepare_tools(cls, session_version: LinsightSessionVersion,\n                             llm: BishengLLM) -> List[BaseTool]:\n        \"\"\"Preparation Tools List\"\"\"\n        try:\n            tools = await cls.init_linsight_config_tools(session_version, llm)\n\n            root_path = os.path.join(CACHE_DIR, \"linsight\", session_version.id)\n            os.makedirs(root_path, exist_ok=True)\n\n            linsight_tools = await ToolServices.init_linsight_tools(root_path=root_path)\n            tools.extend(linsight_tools)\n\n            return tools\n        except Exception as e:\n            raise cls.ToolsInitializationError(str(e))\n\n    @classmethod\n    async def prepare_file_list(cls, session_version: LinsightSessionVersion) -> List[str]:\n        \"\"\"Prepare File List\"\"\"\n        file_list = []\n        template_str = \"\"\"@{filename}File Storage Information:{{'Files stored in a semantic repositoryid':'{file_id}','File storage address':'{markdown}'}}@\"\"\"\n        if not session_version.files:\n            return file_list\n        for file in session_version.files:\n            file_list.append(template_str.format(filename=file['original_filename'],\n                                                 file_id=file['file_id'],\n                                                 markdown=f\"./{file['markdown_filename']}\"))\n        return file_list\n\n    @classmethod\n    async def prepare_knowledge_list(cls, knowledge_list: list[KnowledgeRead]) -> List[str]:\n        res = []\n        if not knowledge_list:\n            return res\n        # Check if there is a personal knowledge base\n        template_str = \"\"\"@{name}Stored information for:{{'The knowledge base is stored in a semantic repositoryid':'{id}'}}@\"\"\"\n        for one in knowledge_list:\n            if one.type == KnowledgeTypeEnum.PRIVATE.value:\n                res.append(template_str.format(name=\"Personal Knowledge Base\", id=one.id))\n            else:\n                knowledge_str = template_str.format(name=one.name, id=one.id)\n                if one.description:\n                    knowledge_str += f\"，{one.name}is described as{one.description}\"\n                res.append(knowledge_str)\n        return res\n\n    @classmethod\n    async def _prepare_history_summary(cls, reexecute: bool,\n                                       previous_session_version_id: str) -> List[str]:\n        \"\"\"Preparation History Summary\"\"\"\n        history_summary = []\n\n        if reexecute and previous_session_version_id:\n            execute_tasks = await LinsightExecuteTaskDao.get_by_session_version_id(previous_session_version_id)\n\n            for task in execute_tasks:\n                if task.result:\n                    answer = task.result.get(\"answer\", \"\")\n                    if answer:\n                        history_summary.append(answer)\n\n        return history_summary\n\n    @classmethod\n    async def _create_linsight_agent(cls, session_version: LinsightSessionVersion,\n                                     llm: BishengLLM, tools: List[BaseTool],\n                                     workbench_conf):\n        \"\"\"BuatLinsightAgent\"\"\"\n        from bisheng_langchain.linsight.agent import LinsightAgent\n\n        root_path = os.path.join(CACHE_DIR, \"linsight\", session_version.id[:8])\n        linsight_conf = settings.get_linsight_conf()\n        exec_config = ExecConfig(**linsight_conf.model_dump(), debug_id=session_version.id)\n        return LinsightAgent(\n            file_dir=root_path,\n            query=session_version.question,\n            llm=llm,\n            tools=tools,\n            task_mode=workbench_conf.linsight_executor_mode,\n            exec_config=exec_config,\n        )\n\n    @classmethod\n    async def _generate_sop_content(cls, agent, session_version: LinsightSessionVersion,\n                                    feedback_content: Optional[str],\n                                    history_summary: List[str],\n                                    knowledge_list: List[KnowledgeRead] = None,\n                                    example_sop: str = None,\n                                    login_user: Optional[UserPayload] = None\n                                    ) -> AsyncGenerator:\n        \"\"\"BuatSOPContents\"\"\"\n        file_list = await cls.prepare_file_list(session_version)\n        knowledge_list = await cls.prepare_knowledge_list(knowledge_list)\n        if example_sop:\n            async for res in agent.generate_sop(sop=example_sop, file_list=file_list, knowledge_list=knowledge_list):\n                yield res\n        elif feedback_content is None:\n            # RetrieveSOPTemplates\n            sop_template, search_sop_error = await SOPManageService.search_sop(\n                invoke_user_id=login_user.user_id,\n                query=session_version.question, k=3\n            )\n\n            if search_sop_error:\n                search_sop_error: BaseErrorCode\n                logger.error(f\"RetrieveSOPTemplate failed: {search_sop_error.Msg}\")\n                yield cls.SearchSOPError(error_class=search_sop_error)\n\n            sop_template = \"\\n\\n\".join([\n                f\"Examples:\\n\\n{sop.page_content}\"\n                for sop in sop_template if sop.page_content\n            ])\n\n            async for res in agent.generate_sop(sop=sop_template, file_list=file_list, knowledge_list=knowledge_list):\n                yield res\n        else:\n\n            sop_template = session_version.sop if session_version.sop else \"\"\n\n            async for res in agent.feedback_sop(\n                    sop=sop_template,\n                    feedback=feedback_content,\n                    history_summary=history_summary if history_summary else None,\n                    file_list=file_list,\n                    knowledge_list=knowledge_list\n            ):\n                yield res\n\n    @classmethod\n    async def get_execute_task_detail(cls, session_version_id: str,\n                                      login_user: Optional[UserPayload] = None):\n        \"\"\"\n        Get task execution details\n\n        Args:\n            session_version_id: Inspiration Conversation VersionID\n            login_user: Logged in user information\n\n        Returns:\n            Execute Task Detail List\n        \"\"\"\n        execute_tasks = await LinsightExecuteTaskDao.get_by_session_version_id(session_version_id)\n\n        if not execute_tasks:\n            return []\n\n        # 1. Get Level 1 Tasks parent_task_id Yes  None Task\n        root_tasks = [task for task in execute_tasks if task.parent_task_id is None]\n\n        # 2. accordingprevious_task_idAND:next_task_idSort first level tasks\n        def sort_tasks_by_chain(tasks: List[Any]) -> List[Any]:\n            \"\"\"\n            Sort task list by task chain\n            previous_task_idYes Noneis the first task,next_task_idYes Noneis the last task.\n            \"\"\"\n            if not tasks:\n                return []\n\n            # Create a task dictionary for quick lookups\n            task_dict = {task.id: task for task in tasks}\n\n            # Find the start node of the chain (previous_task_id are None）\n            start_tasks = [task for task in tasks if task.previous_task_id is None]\n\n            sorted_tasks = []\n\n            for start_task in start_tasks:\n                # Build task chains from each start node\n                current_task = start_task\n                chain = []\n\n                while current_task is not None:\n                    chain.append(current_task)\n                    # Setujunext_task_idFind next task\n                    next_task_id = current_task.next_task_id\n                    current_task = task_dict.get(next_task_id) if next_task_id else None\n\n                sorted_tasks.extend(chain)\n\n            # Dealing with possible orphaned tasks (neitherpreviousNothing, either!nextpointing to them)\n            processed_ids = {task.id for task in sorted_tasks}\n            orphan_tasks = [task for task in tasks if task.id not in processed_ids]\n            sorted_tasks.extend(orphan_tasks)\n\n            return sorted_tasks\n\n        # Sort first level tasks\n        sorted_root_tasks = sort_tasks_by_chain(root_tasks)\n\n        # 3. Build task tree Use parent_task_id Associate subtasks with parent tasks\n        def build_task_tree(parent_tasks: List[Any], all_tasks: List[Any]) -> List[TaskNode]:\n            \"\"\"\n            Build task tree\n            \"\"\"\n            # Create task mapping\n            task_map = {task.id: task for task in all_tasks}\n\n            # By Parent TaskIDGroup subtasks\n            children_map = {}\n            for task in all_tasks:\n                if task.parent_task_id:\n                    if task.parent_task_id not in children_map:\n                        children_map[task.parent_task_id] = []\n                    children_map[task.parent_task_id].append(task)\n\n            def build_node(task: Any) -> TaskNode:\n                \"\"\"Recursively build task nodes\"\"\"\n                node = TaskNode(task=task)\n\n                # Get subtasks\n                child_tasks = children_map.get(task.id, [])\n\n                # Sort subtasks\n                sorted_child_tasks = sort_tasks_by_chain(child_tasks)\n\n                # Recursively build child nodes\n                for child_task in sorted_child_tasks:\n                    child_node = build_node(child_task)\n                    node.children.append(child_node)\n\n                return node\n\n            # Build Root Node List\n            root_nodes = []\n            for parent_task in parent_tasks:\n                root_node = build_node(parent_task)\n                root_nodes.append(root_node)\n\n            return root_nodes\n\n        # Build task tree\n        task_tree = build_task_tree(sorted_root_tasks, execute_tasks)\n\n        # 4. Returns the root node list of the task tree\n        result = [node.to_dict() for node in task_tree]\n\n        return result\n\n    @classmethod\n    async def upload_file(cls, file: UploadFile) -> Dict:\n        \"\"\"\n        Upload files to the Inspiration Workbench\n\n        Args:\n            file: files uploaded\n\n        Returns:\n            File Information Dictionary\n        \"\"\"\n        # Generate file information\n        file_id = uuid.uuid4().hex[:8]  # Buat8Bit Unique FileID\n        # url <g id=\"Bold\">Code</g> decode The file name\n        original_filename = unquote(file.filename)\n        file_extension = original_filename.split('.')[-1] if '.' in original_filename else ''\n        unique_filename = f\"{file_id}.{file_extension}\"\n\n        # Save file\n        file_path = await save_file_to_folder(file, 'linsight', unique_filename)\n\n        upload_result = {\n            \"file_id\": file_id,\n            \"filename\": unique_filename,\n            \"original_filename\": original_filename,\n            \"file_path\": file_path,\n            \"parsing_status\": \"running\",\n        }\n\n        # Cache Result\n        await cls._cache_parse_result(file_id, upload_result)\n\n        return upload_result\n\n    @classmethod\n    async def parse_file(cls, upload_result: Dict, invoke_user_id: int) -> Dict:\n        \"\"\"\n        Parsing uploaded files\n\n        Args:\n            upload_result: Upload results\n            invoke_user_id: Call UserID\n\n        Returns:\n            Parsing results\n        \"\"\"\n        logger.info(f\"Start parsing files: {upload_result}\")\n\n        file_id = upload_result[\"file_id\"]\n        original_filename = upload_result[\"original_filename\"]\n        file_path = upload_result[\"file_path\"]\n        try:\n            # Get workbench configuration\n            workbench_conf = await cls._get_workbench_config()\n            collection_name = f\"{cls.COLLECTION_NAME_PREFIX}{workbench_conf.embedding_model.id}\"\n\n            # Asynchronous execution of file parsing\n            parse_result = await cls._parse_file(invoke_user_id, file_id, file_path, original_filename,\n                                                 collection_name, workbench_conf)\n\n            # Cache Result\n            await cls._cache_parse_result(file_id, parse_result)\n\n            logger.info(f\"File analysis complete: {parse_result}\")\n        except Exception as e:\n            logger.error(f\"File parsing failed: file_id={file_id}, error={str(e)}\")\n            parse_result = {\n                \"file_id\": file_id,\n                \"original_filename\": original_filename,\n                \"parsing_status\": \"failed\",\n                \"error_message\": str(e)\n            }\n            await cls._cache_parse_result(file_id, parse_result)\n\n        return parse_result\n\n    @classmethod\n    async def _parse_file(cls, invoke_user_id: int, file_id: str, file_path: str, original_filename: str,\n                          collection_name: str, workbench_conf) -> Dict:\n        \"\"\"\n        Synchronize parsed files\n\n        Args:\n            file_id: Doc.ID\n            file_path: FilePath\n            original_filename: Original Filename\n            collection_name: Set Name\n            workbench_conf: Workbench configuration\n\n        Returns:\n            Parsing results\n        \"\"\"\n        # Read file contents\n        try:\n            texts, _, parse_type, _ = await async_read_chunk_text(\n                invoke_user_id=invoke_user_id,\n                input_file=file_path,\n                file_name=original_filename,\n                separator=['\\n\\n', '\\n'],\n                separator_rule=['after', 'after'],\n                chunk_size=1000,\n                chunk_overlap=100,\n                no_summary=True\n            )\n\n            # BuatmarkdownContents\n            markdown_content = \"\\n\".join(texts)\n            markdown_bytes = markdown_content.encode('utf-8')\n\n            # SAVINGmarkdownDoc.\n            markdown_filename = f\"{file_id}.md\"\n            minio_client = await get_minio_storage()\n            await minio_client.put_object_tmp(markdown_filename, markdown_bytes)\n            markdown_md5 = await async_calculate_md5(markdown_bytes)\n\n            # Process vector storage\n            await cls._process_vector_storage(invoke_user_id, texts, file_id, collection_name, workbench_conf)\n\n            return {\n                \"file_id\": file_id,\n                \"original_filename\": original_filename,\n                \"parsing_status\": \"completed\",\n                \"parse_type\": parse_type,\n                \"markdown_filename\": markdown_filename,\n                \"markdown_file_path\": markdown_filename,\n                \"markdown_file_md5\": markdown_md5,\n                \"embedding_model_id\": workbench_conf.embedding_model.id,\n                \"collection_name\": collection_name\n            }\n        except Exception as e:\n            logger.error(f\"File parsing failed: file_id={file_id}, error={str(e)}\")\n            return {\n                \"file_id\": file_id,\n                \"original_filename\": original_filename,\n                \"parsing_status\": \"failed\",\n                \"error_message\": str(e)\n            }\n\n    @classmethod\n    async def _process_vector_storage(cls, invoke_user_id: int, texts: List[str], file_id: str,\n                                      collection_name: str, workbench_conf) -> None:\n        \"\"\"Process vector storage\"\"\"\n        # Buatembeddings\n        embeddings = await LLMService.get_bisheng_linsight_embedding(model_id=workbench_conf.embedding_model.id,\n                                                                     invoke_user_id=invoke_user_id)\n\n        # Create Vector Store\n        vector_client = decide_vectorstores(collection_name, \"Milvus\", embeddings)\n        es_client = decide_vectorstores(collection_name, \"ElasticKeywordsSearch\", FakeEmbedding())\n\n        # Adding Text to Vector Storage\n        metadatas = [{\"file_id\": file_id} for _ in texts]\n        await vector_client.aadd_texts(texts, metadatas=metadatas)\n        await es_client.aadd_texts(texts, metadatas=metadatas)\n\n    @classmethod\n    async def _cache_parse_result(cls, file_id: str, parse_result: Dict) -> None:\n        \"\"\"Cache Result\"\"\"\n        redis_client = await get_redis_client()\n        key = f\"{cls.FILE_INFO_REDIS_KEY_PREFIX}{file_id}\"\n        await redis_client.aset(\n            key=key,\n            value=parse_result,\n            expiration=60 * 60 * cls.CACHE_EXPIRATION_HOURS\n        )\n\n    @classmethod\n    async def _init_bisheng_code_tool(cls, config_tool_ids: List[int], file_dir: str, user_id: int) -> List[BaseTool]:\n        \"\"\"\n        Code interpreter tool for special handling initialization Bi Lift\n        \"\"\"\n        tools = []\n        bisheng_code_tool = await GptsToolsDao.aget_tool_by_tool_key(tool_key='bisheng_code_interpreter')\n        if not bisheng_code_tool or bisheng_code_tool.id not in config_tool_ids:\n            return tools\n        # Individual initialization code interpreter tool\n        config_tool_ids.remove(bisheng_code_tool.id)\n        code_config = json.loads(bisheng_code_tool.extra) if bisheng_code_tool.extra else {}\n        if \"config\" not in code_config:\n            code_config[\"config\"] = {}\n        if \"local\" not in code_config[\"config\"]:\n            code_config[\"config\"][\"local\"] = {}\n        code_config[\"config\"][\"local\"][\"local_sync_path\"] = file_dir\n        if \"e2b\" not in code_config[\"config\"]:\n            code_config[\"config\"][\"e2b\"] = {}\n        code_config[\"config\"][\"e2b\"][\"local_sync_path\"] = file_dir\n        # Default60Validity period of minutes\n        code_config[\"config\"][\"e2b\"][\"timeout\"] = 3600\n        code_config[\"config\"][\"e2b\"][\"keep_sandbox\"] = True\n        file_list = []\n        for root, dirs, files in os.walk(file_dir):\n            for file in files:\n                file_path = os.path.join(root, file)\n                file_list.append(WriteEntry(data=file_path, path=file_path.replace(file_dir, \".\")))\n        code_config[\"config\"][\"e2b\"][\"file_list\"] = file_list\n\n        bisheng_code_tool.extra = code_config\n\n        tools = await ToolExecutor.init_by_tool_id(tool=bisheng_code_tool, app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                                   app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                                   app_type=ApplicationTypeEnum.LINSIGHT,\n                                                   user_id=user_id)\n        return [tools]\n\n    @classmethod\n    async def init_linsight_config_tools(cls, session_version: LinsightSessionVersion,\n                                         llm: BishengLLM, need_upload: bool = False, file_dir: str = None) -> List[\n        BaseTool]:\n        \"\"\"\n        Tools for initializing Invis configurations\n\n        Args:\n            session_version: Session Version Model\n            llm: LLMInstances\n            need_upload: Do I need to bind a user-uploaded file to the code interpreter?\n            file_dir: Root directory for user uploaded files\n\n        Returns:\n            Tools List\n        \"\"\"\n        tools = []\n\n        if not session_version.tools:\n            return tools\n\n        # &Extraction toolID\n        tool_ids = cls._extract_tool_ids(session_version.tools)\n\n        # Tools to get workbench configurationsID\n        ws_config = await WorkStationService.aget_config()\n        config_tool_ids = cls._extract_tool_ids(ws_config.linsightConfig.tools or [])\n\n        # todo Better tool initialization scheme\n        if need_upload and file_dir:\n            try:\n                bisheng_code_tool = await cls._init_bisheng_code_tool(config_tool_ids, file_dir,\n                                                                      user_id=session_version.user_id)\n                tools.extend(bisheng_code_tool)\n            except Exception as e:\n                logger.error(f\"Failed to initialize BiSheng code interpreter tool: session_version_id={session_version.id}, error={str(e)}\")\n\n        # Filter Effective ToolsID\n        valid_tool_ids = [tid for tid in tool_ids if tid in config_tool_ids]\n\n        # Initialization Tools\n        if valid_tool_ids:\n            tools.extend(await ToolExecutor.init_by_tool_ids(valid_tool_ids, app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                                             app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                                             app_type=ApplicationTypeEnum.LINSIGHT,\n                                                             user_id=session_version.user_id))\n\n        return tools\n\n    @classmethod\n    def _extract_tool_ids(cls, tools: List[Dict]) -> List[int]:\n        \"\"\"\n        Extract Tools from Tool ConfigurationID\n\n        Args:\n            tools: Tool Configuration List\n\n        Returns:\n            ToolsIDVertical\n        \"\"\"\n        tool_ids = []\n        for tool in tools:\n            if tool.get(\"children\"):\n                tool_ids.extend(int(child.get(\"id\")) for child in tool[\"children\"] if child.get(\"id\"))\n        return tool_ids\n\n    @classmethod\n    async def feedback_regenerate_sop_task(cls, session_version_model: LinsightSessionVersion,\n                                           feedback: str) -> None:\n        \"\"\"\n        Regenerate from feedbackSOPTask\n\n        Args:\n            session_version_model: Inspiration Conversation Version Model\n            feedback: Content of feedback\n        \"\"\"\n        try:\n            file_list = await cls.prepare_file_list(session_version_model)\n\n            # BuatLLMand tools\n            llm, workbench_conf = await cls._get_llm(session_version_model.user_id)\n            tools = await cls._prepare_tools(session_version_model, llm)\n\n            # Get a summary of your history\n            history_summary = await cls._get_history_summary(session_version_model.id)\n\n            # Create proxy and generateSOP\n            agent = await cls._create_linsight_agent(session_version_model, llm, tools, workbench_conf)\n\n            sop_content = \"\"\n            sop_template = session_version_model.sop or ''\n\n            async for res in agent.feedback_sop(\n                    sop=sop_template,\n                    feedback=feedback,\n                    history_summary=history_summary if history_summary else None,\n                    file_list=file_list\n            ):\n                sop_content += res.content\n\n            # sopWrite it down on the record sheet, thissopThere is no need to associate sessions because there is no need to update scores\n            await SOPManageService.add_sop_record(LinsightSOPRecord(\n                name=session_version_model.title,\n                description=None,\n                user_id=session_version_model.user_id,\n                content=sop_content,\n            ))\n        except cls.ToolsInitializationError as e:\n            logger.exception(f\"Failed to initialize the Inspiration Workbench tool: session_version_id={session_version_model.id}, error={str(e)}\")\n\n        except Exception as e:\n            logger.exception(f\"Feedback regenerationSOPMisi Gagal: session_version_id={session_version_model.id}, error={str(e)}\")\n\n    @classmethod\n    async def _get_history_summary(cls, session_version_id: str) -> List[str]:\n        \"\"\"Get a summary of your history\"\"\"\n        history_summary = []\n        execute_tasks = await LinsightExecuteTaskDao.get_by_session_version_id(session_version_id)\n\n        for task in execute_tasks:\n            if task.result:\n                answer = task.result.get(\"answer\", \"\")\n                if answer:\n                    history_summary.append(answer)\n\n        return history_summary\n\n    @classmethod\n    async def download_file(cls, file_info: DownloadFilesSchema) -> Tuple[str, bytes]:\n        \"\"\"Download individual files\"\"\"\n\n        minio_client = await get_minio_storage()\n\n        object_name = file_info.file_url\n        object_name = object_name.replace(f\"/{minio_client.bucket}/\", \"\")\n        try:\n\n            bytes_io = BytesIO()\n\n            file_byte = await minio_client.get_object(bucket_name=minio_client.bucket,\n                                                      object_name=object_name)\n            bytes_io.write(file_byte)\n\n            bytes_io.seek(0)\n\n            return file_info.file_name, bytes_io.getvalue()\n\n        except Exception as e:\n            logger.error(f\"Download failed {object_name}: {e}\")\n            return object_name, b''\n\n    @classmethod\n    async def batch_download_files(cls, file_info_list: List[DownloadFilesSchema]) -> bytes:\n        \"\"\"\n        Batch Download Files\n\n        Args:\n            file_info_list: File Information List\n\n        Returns:\n            List containing file download information\n        \"\"\"\n\n        # Batch Download Files\n        download_tasks = [cls.download_file(file_info) for file_info in file_info_list]\n\n        results = await asyncio.gather(*download_tasks)\n\n        # Filter download failed files\n        successful_files = [res for res in results if res[1]]\n\n        if not successful_files:\n            raise ValueError(\"File not downloaded successfully, could not be generatedZIP\")\n\n        zip_bytes = util.bytes_to_zip(successful_files)\n        return zip_bytes\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/task_exec.py",
    "content": "import asyncio\nimport os\nimport shutil\nimport traceback\nfrom contextlib import asynccontextmanager\nfrom datetime import datetime\nfrom typing import Optional, List, Dict, Callable\n\nfrom langchain_core.language_models import BaseChatModel\nfrom loguru import logger\n\nfrom bisheng.api.services.invite_code.invite_code import InviteCodeService\nfrom bisheng.linsight.domain.services.workbench_impl import LinsightWorkbenchImpl\nfrom bisheng.linsight.domain.schemas.linsight_schema import UserInputEventSchema\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.utils import create_cache_folder_async, CACHE_DIR\nfrom bisheng.core.external.http_client.http_client_manager import get_http_client\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.linsight.domain.models.linsight_execute_task import LinsightExecuteTaskDao, ExecuteTaskStatusEnum, \\\n    ExecuteTaskTypeEnum, LinsightExecuteTask\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersionDao, SessionVersionStatusEnum, \\\n    LinsightSessionVersion\nfrom bisheng.linsight.domain import utils as linsight_execute_utils\nfrom bisheng.linsight.domain.services.state_message_manager import LinsightStateMessageManager, MessageData, MessageEventType\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.tool.domain.services.tool import ToolServices\nfrom bisheng_langchain.linsight.agent import LinsightAgent\nfrom bisheng_langchain.linsight.const import TaskStatus, ExecConfig\nfrom bisheng_langchain.linsight.event import NeedUserInput, GenerateSubTask, ExecStep, TaskStart, TaskEnd, BaseEvent\n\n\nclass TaskExecutionError(Exception):\n    \"\"\"Task Execution Exception\"\"\"\n    pass\n\n\nclass UserTerminationError(Exception):\n    \"\"\"User proactively terminates exceptions\"\"\"\n    pass\n\n\n# Task already in progress Exception\nclass TaskAlreadyInProgressError(Exception):\n    \"\"\"Task already in progress Exception\"\"\"\n    pass\n\n\nclass LinsightWorkflowTask:\n    \"\"\"Workflow Task Executor - Responsible for managing the entire mission lifecycle\"\"\"\n\n    USER_TERMINATION_CHECK_INTERVAL = 2\n\n    def __init__(self):\n        self._state_manager: Optional[LinsightStateMessageManager] = None\n        self._is_terminated = False\n        self._termination_task: Optional[asyncio.Task] = None\n        self._final_result: Optional[TaskEnd] = None\n        self.file_dir: Optional[str] = None\n        self.session_version_id: Optional[str] = None\n        self.step_event_extra_files: List[Dict] = []  # File information for storing additional processing of step events\n        self.llm: Optional[BaseChatModel] = None  # For storageLLMInstances\n\n    # ==================== Resource Management ====================\n\n    @asynccontextmanager\n    async def _managed_execution(self):\n        \"\"\"Context manager for managing execution resources\"\"\"\n\n        self._state_manager = LinsightStateMessageManager(self.session_version_id)\n        session_model = await self._get_session_model(self.session_version_id)\n\n        # Check session status\n        if await self._is_session_in_progress(session_model):\n            raise TaskAlreadyInProgressError(\"Task already in progress\")\n\n        try:\n\n            # Start Termination Monitoring\n            await self._start_termination_monitor(session_model)\n\n            # Initialization file directory\n            self.file_dir = await self._init_file_directory(session_model)\n\n            yield session_model\n\n        finally:\n            await self._cleanup_resources()\n\n    async def _cleanup_resources(self):\n        \"\"\"Clean up resources\"\"\"\n        try:\n            # Stop Terminating Monitoring\n            await self._stop_termination_monitor()\n\n            # Clean File Directory\n            if self.file_dir and os.path.exists(self.file_dir):\n                shutil.rmtree(self.file_dir, ignore_errors=True)\n\n        except Exception as e:\n            logger.error(f\"Resource cleanup failed: {e}\")\n\n    # ==================== Core Execution Logic ====================\n\n    async def async_run(self, session_version_id: str) -> None:\n        \"\"\"Asynchronous Task Execution Entry\"\"\"\n\n        self.session_version_id = session_version_id\n        trace_id_var.set(self.session_version_id)\n        logger.info(f\"Start the task: session_version_id={self.session_version_id}\")\n        try:\n\n            async with self._managed_execution() as session_model:\n                await self._execute_workflow(session_model)\n\n        except UserTerminationError:\n            logger.info(f\"Task was actively terminated by the user: session_version_id={self.session_version_id}\")\n        except TaskAlreadyInProgressError:\n            logger.warning(f\"Task already in progress: session_version_id={self.session_version_id}\")\n        except TaskExecutionError as e:\n            logger.error(f\"Task execution failed:<g id='1'></g> : session_version_id={self.session_version_id}\")\n            await self._handle_execution_error(e)\n        except Exception as e:\n            logger.error(f\"Unknown error: session_version_id={self.session_version_id}, error={e}\")\n            await self._handle_execution_error(e)\n\n    async def _execute_workflow(self, session_model: LinsightSessionVersion):\n        \"\"\"Execute the core logic of the workflow\"\"\"\n\n        # Update session status to in progress\n        await self._update_session_status(session_model, SessionVersionStatusEnum.IN_PROGRESS)\n\n        # Initialization Execution Component\n        self.llm = await self._get_llm(invoke_user_id=session_model.user_id)\n        tools = await self._generate_tools(session_model)\n        try:\n            # Build Tool List\n            linsight_tools = await ToolServices.init_linsight_tools(root_path=self.file_dir)\n            tools.extend(linsight_tools)\n            # Create agent\n            agent = await self._create_agent(session_model, tools)\n\n            # Check if terminated during initialization\n            self._check_termination()\n\n            # Generate and save tasks\n            task_info = await agent.generate_task(session_model.sop)\n            await self._save_task_info(session_model, task_info)\n\n            # Do Task\n            success = await self._execute_agent_tasks(agent, task_info, session_model)\n        finally:\n            # Clean the sandbox of the code interpreter\n            for one in tools:\n                if one.name == \"bisheng_code_interpreter\":\n                    one.close()\n                    break\n\n        if success:\n            await self._handle_task_completion(session_model)\n        else:\n            await self._handle_user_termination(session_model)\n            raise UserTerminationError(\"Task terminated by user\")\n\n    # ==================== Session and State Management ====================\n\n    async def _get_session_model(self, session_version_id: str) -> LinsightSessionVersion:\n        \"\"\"Get session model\"\"\"\n        try:\n            return await LinsightSessionVersionDao.get_by_id(session_version_id)\n        except Exception as e:\n            raise TaskExecutionError(f\"Failed to get session model: {e}\")\n\n    async def _is_session_in_progress(self, session_model: LinsightSessionVersion) -> bool:\n        \"\"\"Check if the session is already in progress\"\"\"\n        if session_model.status == SessionVersionStatusEnum.IN_PROGRESS:\n            logger.info(f\"Sessions {session_model.id} Already in progress\")\n            return True\n        return False\n\n    async def _update_session_status(self, session_model: LinsightSessionVersion, status: SessionVersionStatusEnum):\n        \"\"\"Update session status\"\"\"\n        session_model.status = status\n        await self._state_manager.set_session_version_info(session_model)\n\n    # ==================== Component Initialization ====================\n\n    async def _get_llm(self, invoke_user_id: int) -> BaseChatModel:\n        \"\"\"DapatkanLLMInstances\"\"\"\n        try:\n            workbench_conf = await LLMService.get_workbench_llm()\n            linsight_conf = settings.get_linsight_conf()\n            return await LLMService.get_bisheng_linsight_llm(invoke_user_id=invoke_user_id,\n                                                             model_id=workbench_conf.task_model.id,\n                                                             temperature=linsight_conf.default_temperature)\n        except Exception as e:\n            raise TaskExecutionError(\"The task has been terminated, please contact the administrator to check the status of the Ideas task execution model\")\n\n    @create_cache_folder_async\n    async def _init_file_directory(self, session_model: LinsightSessionVersion) -> str:\n        \"\"\"Initialization file directory\"\"\"\n        file_dir = os.path.join(CACHE_DIR, \"linsight\", session_model.id[:8])\n        file_dir = os.path.normpath(file_dir)\n        os.makedirs(file_dir, exist_ok=True)\n\n        if not session_model.files:\n            return file_dir\n\n        # Concurrent downloads\n        download_tasks = [\n            self._download_file(file_info, file_dir)\n            for file_info in session_model.files\n        ]\n\n        results = await asyncio.gather(*download_tasks, return_exceptions=True)\n\n        # Record Download Failed Files\n        for i, result in enumerate(results):\n            if isinstance(result, Exception):\n                file_name = os.path.basename(session_model.files[i][\"markdown_file_path\"])\n                logger.error(f\"This content failed to load {file_name}: {result}\")\n\n        return file_dir\n\n    async def _download_file(self, file_info: dict, target_dir: str) -> str:\n        \"\"\"Download individual files\"\"\"\n        object_name = file_info[\"markdown_file_path\"]\n        file_name = file_info.get(\"markdown_filename\", os.path.basename(object_name))\n        file_path = os.path.join(target_dir, file_name)\n        minio_client = await get_minio_storage()\n        try:\n            file_url = await minio_client.get_share_link(object_name, clear_host=False)\n            http_client = await get_http_client()\n\n            with open(file_path, \"wb\") as f:\n                async for chunk in http_client.stream(method=\"GET\", url=str(file_url)):\n                    f.write(chunk)\n\n            if not os.path.exists(file_path) or os.path.getsize(file_path) == 0:\n                raise ValueError(f\"File download failed or empty: {object_name}\")\n\n            return file_path\n\n        except Exception as e:\n            logger.error(f\"Download failed {object_name}: {e}\")\n            raise\n\n    async def _generate_tools(self, session_model: LinsightSessionVersion) -> List:\n        \"\"\"Build Tool List\"\"\"\n        if not session_model.tools:\n            return []\n\n        return await LinsightWorkbenchImpl.init_linsight_config_tools(session_version=session_model, llm=self.llm,\n                                                                      need_upload=True, file_dir=self.file_dir)\n\n    async def _create_agent(self, session_model: LinsightSessionVersion, tools: List) -> LinsightAgent:\n\n        workbench_conf = await LLMService.get_workbench_llm()\n        linsight_conf = settings.get_linsight_conf()\n        exec_config = ExecConfig(**linsight_conf.model_dump(), debug_id=session_model.id)\n\n        \"\"\"Create agent\"\"\"\n        return LinsightAgent(\n            llm=self.llm,\n            query=session_model.question,\n            tools=tools,\n            file_dir=self.file_dir,\n            task_mode=workbench_conf.linsight_executor_mode,\n            exec_config=exec_config,\n        )\n\n    # ==================== Mission Execution ====================\n\n    async def _save_task_info(self, session_model: LinsightSessionVersion, task_info: List[dict]):\n        \"\"\"Save Task Information\"\"\"\n        try:\n            tasks = []\n            # step_idIt doesn't have to be regular.step_int, FROMagentGot ittask_infoThe order is the execution order\n            sorted_data = task_info\n\n            for index, task_info in enumerate(sorted_data):\n                previous_task_id = sorted_data[index - 1][\"id\"] if index > 0 else None\n                next_task_id = sorted_data[index + 1][\"id\"] if index < len(sorted_data) - 1 else None\n                task = LinsightExecuteTask(\n                    id=task_info[\"id\"],\n                    parent_task_id=task_info.get(\"parent_id\"),\n                    session_version_id=session_model.id,\n                    previous_task_id=previous_task_id,\n                    next_task_id=next_task_id,\n                    task_type=ExecuteTaskTypeEnum.COMPOSITE if task_info.get(\n                        \"node_loop\") else ExecuteTaskTypeEnum.SINGLE,\n                    task_data=task_info\n                )\n                tasks.append(task)\n\n            await LinsightExecuteTaskDao.batch_create_tasks(tasks)\n            await self._state_manager.set_execution_tasks(tasks)\n\n            # Push Generate Task Message\n            await self._state_manager.push_message(MessageData(\n                event_type=MessageEventType.TASK_GENERATE,\n                data={\"tasks\": [task.model_dump() for task in tasks]}\n            ))\n\n            logger.info(f\"Set {len(tasks)} execution tasks\")\n\n        except Exception as e:\n            logger.error(f\"Failed to save task information: {e}\")\n            raise TaskExecutionError(f\"Failed to save task information: {e}\")\n\n    async def _execute_agent_tasks(self, agent, task_info: List[dict],\n                                   session_model) -> bool:\n        \"\"\"Perform agent tasks - Modified version supports user termination\"\"\"\n\n        async def agent_execution():\n            \"\"\"Agent performs a task\"\"\"\n            file_list = await LinsightWorkbenchImpl.prepare_file_list(session_model)\n            async for event in agent.ainvoke(task_info, session_model.sop, file_list=file_list):\n                await self._handle_event(agent, event, session_model)\n            return True\n\n        async def termination_monitor():\n            \"\"\"End monitoring task\"\"\"\n            while True:\n                await asyncio.sleep(0.5)  # <g id=\"Bold\">Qn,</g>0.5Seconds checked once\n                self._check_termination()\n\n        try:\n            # Create two concurrent tasks\n            # Preparing user-uploaded files\n            agent_task = asyncio.create_task(agent_execution())\n            monitor_task = asyncio.create_task(termination_monitor())\n\n            # Waiting for any one task to be completed\n            done, pending = await asyncio.wait(\n                [agent_task, monitor_task],\n                return_when=asyncio.FIRST_COMPLETED\n            )\n\n            # Cancel Incomplete Task\n            for task in pending:\n                task.cancel()\n                try:\n                    await task\n                except asyncio.CancelledError:\n                    logger.debug(\"Successfully unsuspended task\")\n                    pass\n\n            # Review completed task results\n            for task in done:\n                if task.exception():\n                    if isinstance(task.exception(), UserTerminationError):\n                        logger.info(\"Agent task terminated by user\")\n                        return False\n                    else:\n                        raise task.exception()\n                else:\n                    # If the agent task is completed normally\n                    if task == agent_task:\n                        logger.info(\"The agent task is completed normally\")\n                        return True\n\n            return True\n\n        except UserTerminationError:\n            logger.info(\"Agent task terminated by user\")\n            return False\n        except Exception as e:\n            logger.error(f\"task_exec_error {traceback.format_exc()}\")\n            raise TaskExecutionError(f\"Agent task execution failed: {e}\")\n\n    # ==================== Event processing ====================\n\n    async def _handle_event(self, agent: LinsightAgent, event: BaseEvent, session_model: LinsightSessionVersion):\n        \"\"\"handle incidents\"\"\"\n\n        event_handlers: Dict[type[BaseEvent], Callable] = {\n            GenerateSubTask: self._handle_generate_subtask,\n            TaskStart: self._handle_task_start,\n            TaskEnd: self._handle_task_end,\n            NeedUserInput: self._handle_need_user_input,\n            ExecStep: self._handle_exec_step,\n        }\n\n        handler = event_handlers.get(type(event))\n        if handler:\n            await handler(agent, event, session_model)\n        else:\n            logger.warning(f\"Unknown event type: {type(event)}\")\n\n    async def _handle_generate_subtask(self, agent: LinsightAgent, event: GenerateSubTask,\n                                       session_model: LinsightSessionVersion):\n        \"\"\"Handle build subtask events\"\"\"\n        await self._save_task_info(session_model, event.subtask)\n        logger.debug(f\"Generate subtasks: {event}\")\n\n    async def _handle_task_start(self, agent: LinsightAgent, event: TaskStart, session_model: LinsightSessionVersion):\n        \"\"\"Handle task start events\"\"\"\n        task_data = await self._state_manager.update_execution_task_status(\n            task_id=event.task_id,\n            status=ExecuteTaskStatusEnum.IN_PROGRESS\n        )\n\n        await self._state_manager.push_message(\n            MessageData(event_type=MessageEventType.TASK_START, data=task_data)\n        )\n\n    async def _handle_task_end(self, agent: LinsightAgent, event: TaskEnd, session_model: LinsightSessionVersion):\n        \"\"\"Handle task end events\"\"\"\n        status = ExecuteTaskStatusEnum.SUCCESS if event.status == TaskStatus.SUCCESS.value else ExecuteTaskStatusEnum.FAILED\n\n        task_data = await self._state_manager.update_execution_task_status(\n            task_id=event.task_id,\n            status=status,\n            result={\"answer\": event.answer},\n            task_data=event.data\n        )\n\n        await self._state_manager.push_message(\n            MessageData(event_type=MessageEventType.TASK_END, data=task_data)\n        )\n\n        # Save Final Result\n        self._final_result = event\n\n    async def _handle_need_user_input(self, agent: LinsightAgent, event: NeedUserInput,\n                                      session_model: LinsightSessionVersion):\n        \"\"\"Handle events that require user input\"\"\"\n        asyncio.create_task(self._wait_for_user_input(agent, event))\n\n    async def _handle_exec_step(self, agent: LinsightAgent, event: ExecStep, session_model: LinsightSessionVersion):\n        \"\"\"Handle execution step events\"\"\"\n\n        # Additional Processing Step Events\n        event = await linsight_execute_utils.handle_step_event_extra(event, self)\n\n        await self._state_manager.add_execution_task_step(event.task_id, step=event)\n        await self._state_manager.push_message(\n            MessageData(event_type=MessageEventType.TASK_EXECUTE_STEP, data=event.model_dump())\n        )\n\n    async def _wait_for_user_input(self, agent: LinsightAgent, event: NeedUserInput):\n        \"\"\"Waiting for user input\"\"\"\n        try:\n\n            await self._state_manager.add_execution_task_step(event.task_id, step=event)\n\n            # Update status to wait for user input\n            await self._state_manager.update_execution_task_status(\n                event.task_id,\n                status=ExecuteTaskStatusEnum.WAITING_FOR_USER_INPUT,\n            )\n\n            # Push user input events\n            await self._state_manager.push_message(\n                MessageData(event_type=MessageEventType.USER_INPUT, data=event.model_dump())\n            )\n\n            # Wait for user input to complete\n            task_model = await self._wait_for_input_completion(event.task_id)\n\n            user_input_event = task_model.history[-1] if task_model.history else None\n            if user_input_event is None or user_input_event.get(\"step_type\") != \"call_user_input\":\n                raise TaskExecutionError(f\"Task {event.task_id} No user input events found while waiting for user input\")\n\n            user_input_event = UserInputEventSchema.model_validate(user_input_event)\n\n            # Check if the user uploaded a file\n            if user_input_event.files:\n                # Concurrent downloads\n                download_tasks = [\n                    self._download_file(file_info, self.file_dir)\n                    for file_info in user_input_event.files\n                ]\n\n                results = await asyncio.gather(*download_tasks, return_exceptions=True)\n\n                # Record Download Failed Files\n                for i, result in enumerate(results):\n                    if isinstance(result, Exception):\n                        file_name = os.path.basename(user_input_event.files[i][\"markdown_file_path\"])\n                        logger.error(f\"This content failed to load {file_name}: {result}\")\n\n                user_input_event.user_input += f\"\\n\\nUploaded File:\\n\" + \\\n                                               \"\\n\".join([f\"- {file}\" for file in results if\n                                                          not isinstance(file, Exception)])\n\n            # Push Input Completion Event\n            await self._state_manager.push_message(\n                MessageData(event_type=MessageEventType.USER_INPUT_COMPLETED, data=task_model.model_dump())\n            )\n\n            # Resume Task\n            await agent.continue_task(event.task_id, user_input_event.user_input)\n\n        except Exception as e:\n            raise TaskExecutionError(f\"Failed to wait for user input task_id={event.task_id}: {e}\")\n\n    async def _wait_for_input_completion(self, task_id: str) -> Optional[LinsightExecuteTask]:\n        \"\"\"Wait for user input to complete\"\"\"\n        while True:\n            self._check_termination()\n\n            task_model = await self._state_manager.get_execution_task(task_id)\n            if task_model is None:\n                raise ValueError(f\"Task {task_id} Does not exist\")\n\n            if task_model.status == ExecuteTaskStatusEnum.USER_INPUT_COMPLETED:\n                return task_model\n\n            await asyncio.sleep(1)\n\n    # ==================== Terminate Inspection ====================\n\n    def _check_termination(self):\n        \"\"\"Check if terminated\"\"\"\n        if self._is_terminated:\n            logger.info(\"Termination signal detected, ready to terminate agent task\")\n            raise UserTerminationError(\"Task terminated by user\")\n\n    async def _start_termination_monitor(self, session_model: LinsightSessionVersion):\n        \"\"\"Start Termination Monitoring\"\"\"\n\n        async def monitor():\n            while not self._is_terminated:\n                try:\n                    if await self._check_user_termination():\n                        self._is_terminated = True\n                        break\n                    await asyncio.sleep(self.USER_TERMINATION_CHECK_INTERVAL)\n                except Exception as e:\n                    logger.error(f\"Terminate Monitoring Exception: {e}\")\n                    await asyncio.sleep(self.USER_TERMINATION_CHECK_INTERVAL)\n\n        self._termination_task = asyncio.create_task(monitor())\n\n    async def _stop_termination_monitor(self):\n        \"\"\"Stop Terminating Monitoring\"\"\"\n        if self._termination_task and not self._termination_task.done():\n            self._termination_task.cancel()\n            try:\n                await self._termination_task\n            except asyncio.CancelledError:\n                pass\n\n    async def _check_user_termination(self) -> bool:\n        \"\"\"Check if the user is actively terminating\"\"\"\n        if self._is_terminated:\n            return True\n\n        try:\n            current_session = await self._state_manager.get_session_version_info()\n            return (current_session and\n                    current_session.status == SessionVersionStatusEnum.TERMINATED)\n        except Exception as e:\n            logger.error(f\"Failed to check user termination status: {e}\")\n            return False\n\n    async def _handle_user_termination(self, session_model: LinsightSessionVersion):\n        \"\"\"Handling user unsolicited termination\"\"\"\n        logger.info(f\"Handling User Termination {session_model.id}\")\n\n        session_model.status = SessionVersionStatusEnum.TERMINATED\n        session_model.output_result = {\"answer\": \"Task has been actively stopped by the user\"}\n\n        await self._state_manager.set_session_version_info(session_model)\n\n        # Set all tasks to failed\n        await self._set_tasks_failed()\n\n        # Push termination message\n        await self._state_manager.push_message(\n            MessageData(\n                event_type=MessageEventType.TASK_TERMINATED,\n                data={\n                    \"message\": \"Task has been actively stopped by the user\",\n                    \"session_id\": session_model.id,\n                    \"terminated_at\": datetime.now().isoformat()\n                }\n            )\n        )\n\n    # ==================== Task Completion Processing ====================\n\n    async def _handle_task_completion(self, session_model: LinsightSessionVersion):\n        \"\"\"Processing Task Completion\"\"\"\n        if not self._final_result:\n            logger.error(\"No final task results found\")\n            return\n\n        if self._final_result.status == TaskStatus.SUCCESS.value:\n            await self._handle_task_success(session_model)\n        else:\n            await self._handle_task_failure(session_model, \"Task execution failed:<g id='1'></g> \")\n\n    async def _handle_task_success(self, session_model: LinsightSessionVersion):\n        \"\"\"Processing task successful\"\"\"\n        try:\n            # Read File Directory File Details\n            file_details = await linsight_execute_utils.read_file_directory(self.file_dir)\n            logger.debug(f\"Read File Directory File Details: {file_details}\")\n\n            final_result_files = await linsight_execute_utils.get_final_result_file(\n                session_model=session_model,\n                file_details=file_details,\n                answer=self._final_result.answer\n            )\n            execution_tasks = await self._state_manager.get_execution_tasks()\n            all_from_session_files = await linsight_execute_utils.get_all_files_from_session(\n                execution_tasks=execution_tasks, file_details=file_details)\n\n            # Update session status\n            session_model.status = SessionVersionStatusEnum.COMPLETED\n            session_model.output_result = {\n                \"answer\": self._final_result.answer,\n                \"final_files\": final_result_files,\n                \"all_from_session_files\": all_from_session_files\n            }\n\n            # Save session information and push messages\n            await self._state_manager.set_session_version_info(session_model)\n            await self._state_manager.push_message(\n                MessageData(\n                    event_type=MessageEventType.FINAL_RESULT,\n                    data=session_model.model_dump()\n                )\n            )\n\n            logger.info(f\"Task completed successfully, processed {len(final_result_files)} files\")\n\n        except Exception as e:\n            logger.error(f\"An error occurred while processing the task successfully: {e}\")\n            raise TaskExecutionError(f\"An error occurred while processing the task successfully: {e}\")\n\n    # Modify All Task Failure Processing Logic\n    async def _set_tasks_failed(self):\n        \"\"\"Set all tasks to failed\"\"\"\n        try:\n            # Get All Execute Tasks\n            execution_tasks = await self._state_manager.get_execution_tasks()\n\n            for task in execution_tasks:\n                # Update each task status to Terminated\n                if task.status not in [ExecuteTaskStatusEnum.TERMINATED, ExecuteTaskStatusEnum.SUCCESS,\n                                       ExecuteTaskStatusEnum.FAILED]:\n                    await self._state_manager.update_execution_task_status(task_id=task.id,\n                                                                           status=ExecuteTaskStatusEnum.TERMINATED)\n        except Exception as e:\n            logger.warning(f\"Error setting task failed: {e}\")\n\n    async def _handle_task_failure(self, session_model: LinsightSessionVersion, error_msg: str):\n        \"\"\"Processing task failed\"\"\"\n        session_model.status = SessionVersionStatusEnum.FAILED\n        session_model.output_result = {\"error_message\": error_msg}\n        await self._state_manager.set_session_version_info(session_model)\n\n        # Set all tasks to failed\n        await self._set_tasks_failed()\n\n        await self._state_manager.push_message(\n            MessageData(event_type=MessageEventType.ERROR_MESSAGE, data={\"error\": error_msg})\n        )\n        system_config = await settings.aget_all_config()\n        # DapatkanLinsight_invitation_code\n        linsight_invitation_code = system_config.get(\"linsight_invitation_code\", False)\n        if linsight_invitation_code:\n            await InviteCodeService.revoke_invite_code(user_id=session_model.user_id)\n\n    async def _handle_execution_error(self, error: Exception):\n        \"\"\"Processing execution error\"\"\"\n        try:\n            session_model = await LinsightSessionVersionDao.get_by_id(self.session_version_id)\n            await self._handle_task_failure(session_model, str(error))\n        except Exception as e:\n            logger.error(f\"Processing execution error failed: session_version_id={self.session_version_id}, error={e}\")\n"
  },
  {
    "path": "src/backend/bisheng/linsight/domain/utils.py",
    "content": "import asyncio\nimport os\nimport uuid\nfrom typing import List, Dict, Any\n\nfrom loguru import logger\n\nfrom bisheng.api.services.invite_code.invite_code import InviteCodeService\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.linsight.domain.models.linsight_execute_task import LinsightExecuteTaskDao, ExecuteTaskStatusEnum, \\\n    LinsightExecuteTask\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersionDao, SessionVersionStatusEnum, \\\n    LinsightSessionVersion\nfrom bisheng.utils import util\nfrom bisheng_langchain.linsight.event import ExecStep\n\n# The corresponding file parameter name of the Inscription file processing tool\nlocal_file_tool_dict = {\n    \"add_text_to_file\": \"file_path\",\n    \"replace_file_lines\": \"file_path\"\n}\n\n# Step event extra processing tool corresponding to parameter name,\nstep_event_extra_tool_dict = {\n    \"add_text_to_file\": \"file_path\",\n    \"replace_file_lines\": \"file_path\",\n    \"read_text_file\": \"file_path\"\n}\n\n\n# Get all manipulated files in a task\nasync def get_all_files_from_session(execution_tasks: List[LinsightExecuteTask], file_details: List[Dict]) -> \\\n        list[Any] | list[Exception | BaseException | None]:\n    \"\"\"\n    Get all manipulated files in a session\n    :param file_details:\n    :param execution_tasks: Execute Task List\n    :return: List with file details\n    \"\"\"\n    # Process File List\n    all_from_session_files = file_details\n\n    # Deduplication\n    seen = set()\n    all_from_session_files = [\n        file for file in all_from_session_files\n        if (file_tuple := (file[\"file_name\"], file[\"file_path\"], file[\"file_md5\"])) not in seen and not seen.add(\n            file_tuple)\n    ]\n\n    if not all_from_session_files:\n        logger.warning(\"No files found that were manipulated in the session\")\n        return []\n\n    # Upload files toMinIO\n    async def upload_file_to_minio(file_info: Dict) -> dict | None:\n        \"\"\"Upload files toMinIOand returns file information\"\"\"\n        try:\n            minio_client = await get_minio_storage()\n            object_name = f\"linsight/session_files/{execution_tasks[0].session_version_id}/{file_info['file_name']}\"\n            # Use async upload if available, otherwise wrap sync call\n            await minio_client.put_object(\n                bucket_name=minio_client.bucket,\n                object_name=object_name,\n                file=file_info[\"file_path\"]\n            )\n            file_info[\"file_url\"] = object_name\n            return file_info\n        except Exception as e:\n            logger.error(f\"Upload files toMinIOKalah {file_info['file_name']}: {e}\")\n            return None\n\n    # Upload files in parallel toMinIO\n    upload_tasks = [\n        upload_file_to_minio(file_info)\n        for file_info in all_from_session_files\n    ]\n    upload_results = await asyncio.gather(*upload_tasks, return_exceptions=True)\n    # Filter failed uploads\n    all_from_session_files = [\n        result for result in upload_results\n        if result is not None and not isinstance(result, Exception)\n    ]\n    # Record failed uploads\n    failed_uploads = [\n        result for result in upload_results\n        if isinstance(result, Exception)\n    ]\n\n    if failed_uploads:\n        logger.warning(f\"Some files failed to upload: {len(failed_uploads)} files\")\n\n    logger.debug(\n        f\"Number of files manipulated in the session: {len(all_from_session_files)}Document Description: {all_from_session_files}\")\n\n    return all_from_session_files\n\n\n# Read File Directory File Details\nasync def read_file_directory(file_dir: str) -> List[Dict[str, str]]:\n    \"\"\"Read file details in file directory\"\"\"\n    if not file_dir or not os.path.exists(file_dir):\n        return []\n\n    files = util.read_files_in_directory(file_dir)\n    file_details = []\n    for file in files:\n        file_md5 = await util.async_calculate_md5(file)\n        file_details.append({\n            \"file_name\": os.path.basename(file),\n            \"file_path\": file,\n            \"file_md5\": file_md5,\n            \"file_id\": uuid.uuid4().hex[:8]  # Generate unique filesID\n        })\n\n    return file_details\n\n\n# Get the final result file\nasync def get_final_result_file(session_model: LinsightSessionVersion, file_details, answer) -> List[Dict]:\n    \"\"\"\n    Get the final result file\n    :param file_details:\n    :param session_model: LinsightSessionVersion Model Instance\n    :param answer: Answer content\n    :return: List containing final result file information\n    \"\"\"\n    # Final Result File\n    final_result_files = []\n\n    for file_info in file_details:\n        file_name: str = file_info[\"file_name\"]\n        # Determine if the filename isanswerIn String\n        if file_name in answer:\n            # If the file name is in the answer, add it to the answer\n            final_result_files.append({\n                \"file_name\": file_name,\n                \"file_path\": file_info[\"file_path\"],\n                \"file_md5\": file_info[\"file_md5\"],\n                \"file_id\": file_info[\"file_id\"]\n            })\n\n    async def upload_file_to_minio(final_file_info: Dict) -> dict | None:\n        \"\"\"Upload files toMinIOand returns file information\"\"\"\n        try:\n            object_name = f\"linsight/final_result/{session_model.id}/{final_file_info['file_name']}\"\n            # Use async upload if available, otherwise wrap sync call\n            minio_client = await get_minio_storage()\n            await minio_client.put_object(\n                bucket_name=minio_client.bucket,\n                object_name=object_name,\n                file=final_file_info[\"file_path\"]\n            )\n            final_file_info[\"file_url\"] = object_name\n            return final_file_info\n        except Exception as e:\n            logger.error(f\"Upload files toMinIOKalah {final_file_info['file_name']}: {e}\")\n            return None\n\n    # Upload files toMinIO (Parallel Processing)\n    if final_result_files:\n        upload_tasks = [\n            upload_file_to_minio(final_file_info)\n            for final_file_info in final_result_files\n        ]\n\n        upload_results = await asyncio.gather(*upload_tasks, return_exceptions=True)\n\n        # Filter failed uploads\n        final_result_files = [\n            result for result in upload_results\n            if result is not None and not isinstance(result, Exception)\n        ]\n\n        # Record failed uploads\n        failed_uploads = [\n            result for result in upload_results\n            if isinstance(result, Exception)\n        ]\n        if failed_uploads:\n            logger.warning(f\"Some files failed to upload: {len(failed_uploads)} files\")\n\n    return final_result_files\n\n\n# Additional Handling of Step Events\nasync def handle_step_event_extra(event: ExecStep, task_exec_obj) -> ExecStep:\n    \"\"\"\n    Additional logic for handling step events\n    :param task_exec_obj:\n    :param event: Event Object\n    \"\"\"\n    logger.debug(\n        f\"extra processing of step events,call_id: {event.call_id}, name: {event.name}, status: {event.status}\")\n    try:\n        if event.status == \"end\" and event.name in step_event_extra_tool_dict.keys():\n            file_path = event.params.get(step_event_extra_tool_dict[event.name], \"\")\n            if not file_path:\n                return event\n\n            file_name = os.path.basename(file_path)\n            logger.debug(f\"Step event extra processing, filename: {file_name}\")\n\n            # File path processing\n            if not os.path.isabs(file_path):\n                # relative paths, converting to absolute paths\n                file_path = os.path.join(task_exec_obj.file_dir, file_path)\n                file_path = os.path.normpath(file_path)\n\n            logger.debug(f\"Step event extra processing, converted file path: {file_path}\")\n\n            if not os.path.exists(file_path):\n                logger.error(f\"Step event extra processing, file does not exist: {file_path}\")\n                return event\n\n            file_md5 = await util.async_calculate_md5(file_path)\n\n            # Determine if the document has already been uploaded\n            step_event_extra_files = task_exec_obj.step_event_extra_files\n            if step_event_extra_files:\n                existing_file = next((f for f in step_event_extra_files if f[\"file_md5\"] == file_md5), None)\n                if existing_file:\n                    logger.debug(\n                        f\"Step event extra processing, file already exists: {existing_file['file_name']}, file_md5: {file_md5}\")\n                    event.extra_info[\"file_info\"] = {\n                        \"file_name\": file_name,\n                        \"file_md5\": existing_file[\"file_md5\"],\n                        \"file_url\": existing_file[\"file_url\"]\n                    }\n                    return event\n\n            object_name = f\"linsight/step_event/{task_exec_obj.session_version_id}/{uuid.uuid4().hex[:8]}.{file_name.split('.')[-1]}\"\n            logger.debug(f\"Extra processing of step events, uploading files toMinIO: {object_name}\")\n\n            minio_client = await get_minio_storage()\n            # Upload files toMinIO\n            await minio_client.put_object(\n                bucket_name=minio_client.bucket,\n                object_name=object_name,\n                file=file_path\n            )\n\n            event.extra_info[\"file_info\"] = {\n                \"file_name\": file_name,\n                \"file_md5\": file_md5,\n                \"file_url\": object_name\n            }\n\n            # Add to Step Event Extra File List\n            task_exec_obj.step_event_extra_files.append(event.extra_info[\"file_info\"])\n\n    except Exception as e:\n        logger.error(f\"Step event extra handling exception: {e}\")\n        # When an exception occurs, return to the original event without modification\n\n    return event\n\n\n# Initiateworkerwhen checking for incomplete tasks and terminating\nasync def check_and_terminate_incomplete_tasks(node_id: str) -> None:\n    \"\"\"\n    Check for incomplete tasks and terminate\n    \"\"\"\n\n    from bisheng.linsight.worker import NodeManager\n\n    redis_client = get_redis_client_sync()  # Get Redis Client\n    node_manager = NodeManager(redis_client, node_id)  # Get Node Manager Instance\n\n    try:\n        # Get all incomplete tasks from the database\n        incomplete_tasks = await LinsightSessionVersionDao.get_session_versions_by_status(\n            status=SessionVersionStatusEnum.IN_PROGRESS\n        )\n\n        if not incomplete_tasks:\n            return\n\n        tasks_to_terminate = []\n        user_ids_to_rollback = set()\n\n        for session in incomplete_tasks:\n            session_id = session.id\n\n            # Check task ownership in Redis\n            owner_key = f\"linsight:task:owner:{session_id}\"\n            owner_node_id = await redis_client.get(owner_key)\n\n            should_terminate = False\n\n            if not owner_node_id:\n                # No owned node, task needs to be cleaned up.\n                should_terminate = True\n                logger.warning(f\"Task {session_id} has no owner in Redis. Marking as failed.\")\n            else:\n                # There is an owned node, check if the node is alive\n                is_alive = await node_manager.is_node_alive(owner_node_id)\n                if not is_alive:\n                    # Node is dead, task needs to be cleaned up.\n                    should_terminate = True\n                    logger.warning(f\"Task {session_id} owner {owner_node_id} is dead. Marking as failed.\")\n                else:\n                    # Node is alive, skip cleanup\n                    logger.info(f\"Task {session_id} is running on active node {owner_node_id}. Skipping.\")\n\n            if should_terminate:\n                tasks_to_terminate.append(session_id)\n                user_ids_to_rollback.add(session.user_id)\n\n        # 3. 批量执行终止操作（只针对筛选出的任务）\n        if tasks_to_terminate:\n            await LinsightSessionVersionDao.batch_update_session_versions_status(\n                session_version_ids=tasks_to_terminate,\n                status=SessionVersionStatusEnum.FAILED,\n                output_result={\"error_message\": \"Worker node crash detected\"}\n            )\n\n            # 更新 execution task 状态\n            await LinsightExecuteTaskDao.batch_update_status_by_session_version_id(\n                session_version_ids=tasks_to_terminate,\n                status=ExecuteTaskStatusEnum.FAILED,\n                where=(\n                    LinsightExecuteTask.status != ExecuteTaskStatusEnum.SUCCESS,\n                    LinsightExecuteTask.status != ExecuteTaskStatusEnum.FAILED\n                )\n            )\n\n        logger.warning(f\"Terminated {len(tasks_to_terminate)} incomplete tasks due to worker node crash.\")\n\n        system_config = await settings.aget_all_config()\n        # DapatkanLinsight_invitation_code\n        linsight_invitation_code = system_config.get(\"linsight_invitation_code\", False)\n\n        # Rollback invite code\n        if linsight_invitation_code:\n            for user_id in user_ids_to_rollback:\n                try:\n                    await InviteCodeService.revoke_invite_code(user_id=user_id)\n                    logger.info(f\"User Rolled Back {user_id} Invitation code for\")\n                except Exception as e:\n                    logger.error(f\"Rollback user {user_id} Invitation code failed for: {e}\")\n\n        else:\n            logger.warning(\n                \"Not enabled in system configuration Linsight Invitation code function, skip rollback operation\")\n\n        logger.info(\"Check and terminate incomplete task action completed\")\n    except Exception as e:\n        logger.error(f\"Exception occurred while checking and terminating incomplete tasks: {e}\")\n        return\n"
  },
  {
    "path": "src/backend/bisheng/linsight/worker.py",
    "content": "import argparse\nimport asyncio\nimport logging\nimport socket\nimport uuid\n\nfrom multiprocessing import Process, Manager, set_start_method\nfrom multiprocessing.managers import ValueProxy\nfrom typing import Optional, Union\n\nfrom bisheng.core.cache.redis_conn import RedisClient\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.logger import set_logger_config\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.linsight.domain.task_exec import LinsightWorkflowTask\n\nlogger = logging.getLogger(__name__)\n\n\nclass NodeManager:\n    _instance = None\n\n    def __init__(self, redis_client, node_id):\n        # generate unique node ID\n        self.node_id = node_id\n        self.redis = redis_client\n        self.heartbeat_key = f\"linsight:node:heartbeat:{self.node_id}\"\n        # Heartbeat interval (seconds)\n        self.interval = 5\n        # Redis key expiration time (seconds)\n        self.ttl = 15\n\n    @classmethod\n    def get_instance(cls, node_id):\n        if not cls._instance:\n            redis_client = get_redis_client_sync()\n            cls._instance = cls(redis_client, node_id)\n        return cls._instance\n\n    async def start_heartbeat(self):\n        \"\"\"Start the heartbeat task to indicate node liveness\"\"\"\n        logger.info(f\"Starting heartbeat for node: {self.node_id}\")\n        while True:\n            try:\n                # set heartbeat key with expiration\n                await self.redis.aset(self.heartbeat_key, \"1\", expiration=self.ttl)\n            except Exception as e:\n                logger.error(f\"Heartbeat failed: {e}\")\n            await asyncio.sleep(self.interval)\n\n    async def register_task_ownership(self, session_version_id):\n        \"\"\"Register task ownership to this node\"\"\"\n        key = f\"linsight:task:owner:{session_version_id}\"\n        # Set the node ID as the owner of the task with a TTL\n        await self.redis.aset(key, self.node_id, expiration=86400)  # 1 day expiration\n\n    async def release_task_ownership(self, session_version_id):\n        \"\"\"Release task ownership\"\"\"\n        key = f\"linsight:task:owner:{session_version_id}\"\n        await self.redis.delete(key)\n\n    async def is_node_alive(self, target_node_id):\n        \"\"\"Check if a target node is alive based on its heartbeat\"\"\"\n        if not target_node_id:\n            return False\n        key = f\"linsight:node:heartbeat:{target_node_id}\"\n        exists = await self.redis.exists(key)\n        return exists > 0\n\n\n# LinsightQueue queue\nclass LinsightQueue(object):\n    def __init__(self, name, namespace, redis):\n        self.__db: RedisClient = redis\n        self.key = '%s:%s' % (namespace, name)\n\n    async def qsize(self):\n        return await self.__db.allen(self.key)  # Back to queuelistNumber of inner elements\n\n    async def put(self, data, timeout=None):\n        await self.__db.arpush(self.key, data, expiration=timeout)  # Add a new element to the far right of the queue\n\n    async def get_wait(self, timeout=None):\n        # Returns the first element of the queue, if empty, wait until an element is queued (the timeout threshold istimeout, if isNonehas been waiting)\n        item = await self.__db.ablpop(self.key, timeout=timeout)\n        return item\n\n    async def get_nowait(self):\n        # Returns the first element of the queue directly, if the queue is emptyNone\n        item = await self.__db.alpop(self.key)\n        return item\n\n    # Get the position of a task's data in the queue\n    async def index(self, data):\n        \"\"\"\n        Get the position of a task's data in the queue\n        :param data: Task Data\n        :return: Position in queue, starting from 1; if not found, return 0\n        \"\"\"\n        items = await self.__db.alrange(self.key)\n        try:\n            index = items.index(data)\n            return index + 1  # Return index from1Getting Started\n        except ValueError:\n            return 0\n\n    # Delete a task data\n    async def remove(self, data):\n        \"\"\"\n        Delete a task data from the queue\n        :param data: Task Data\n        :return:\n        \"\"\"\n        await self.__db.alrem(self.key, data)  # Remove the specified data from the queue\n\n\nclass ScheduleCenterProcess(Process):\n    def __init__(self, max_concurrency: ValueProxy = None, node_id: ValueProxy = None):\n        \"\"\"\n        Dispatch Center Process\n        :param max_concurrency: Maximum number of concurrent tasks allowed per process\n        \"\"\"\n        super().__init__()\n        self.daemon = True\n        self.queue: Optional[LinsightQueue] = None\n        # Semaphores\n        self.semaphore: Optional[asyncio.Semaphore] = None\n        self.node_manager: Optional[NodeManager] = None\n        self.max_concurrency: Optional[Union[int, ValueProxy]] = max_concurrency\n        self.node_id: Optional[ValueProxy] = node_id\n\n    def handle_task_result(self, task: asyncio.Task):\n        try:\n            result = task.result()  # If there is an exception, it will be thrown here\n        except Exception as e:\n            logger.error(f\"Task failed with exception: {e}\")\n        finally:\n            # Release semaphore\n            if self.semaphore:\n                logger.info(\"Releasing semaphore after task completion.\")\n                self.semaphore.release()\n\n    async def async_run(self):\n        \"\"\"\n        Asynchronous Run Method for Process\n        :return:\n        \"\"\"\n        logger.info(\"ScheduleCenterProcess started...\")\n\n        # node manager heartbeat\n        node_manager = self.node_manager or NodeManager.get_instance(self.node_id.value)\n\n        while True:\n            await self.semaphore.acquire()  # Acquire semaphore, limit concurrency\n            try:\n                session_version_id = await self.queue.get_wait()\n                if session_version_id is None:\n                    logger.info(\"No session_version_id found in queue, waiting...\")\n                    self.semaphore.release()\n                    continue\n\n                # Register task ownership\n                await node_manager.register_task_ownership(session_version_id)\n\n                exec_task = LinsightWorkflowTask()\n                logger.info(f\"Processing session_version_id: {session_version_id} on node {node_manager.node_id}\")\n\n                task = asyncio.create_task(\n                    exec_task.async_run(session_version_id)\n                )\n                task.add_done_callback(self.handle_task_result)  # Add callback to handle task completion\n\n            except Exception as e:\n                logger.error(f\"Error in ScheduleCenterProcess: {e}\")\n                if self.semaphore:\n                    if self.semaphore._value < self.max_concurrency:\n                        logger.info(\"Releasing semaphore due to error.\")\n                        self.semaphore.release()\n                continue\n\n    def run(self):\n        \"\"\"\n        Run Process\n        :return:\n        \"\"\"\n\n        set_logger_config(settings.logger_conf)\n\n        if self.max_concurrency is not None:\n            self.max_concurrency = self.max_concurrency.value  # Dapatkan ValueProxy Actual value\n        else:\n            self.max_concurrency = 32\n            logger.warning(\"No max_concurrency provided, using default value of 32.\")\n\n        self.semaphore = asyncio.Semaphore(self.max_concurrency)\n        logger.info(f\"Semaphore initialized with max concurrency: {self.semaphore._value}\")\n\n        redis_client = get_redis_client_sync()\n        self.queue = LinsightQueue('queue', namespace=\"linsight\", redis=redis_client)\n\n        loop = asyncio.new_event_loop()\n        asyncio.set_event_loop(loop)\n\n        # 启动心跳\n        self.node_manager = NodeManager.get_instance(self.node_id.value)\n        loop.create_task(self.node_manager.start_heartbeat())\n\n        # 启动主逻辑\n        for _ in range(10000):  # 你的原始逻辑\n            try:\n                loop.run_until_complete(self.async_run())\n            except Exception as e:\n                logger.error(f\"Unhandled exception in main loop: {e}\")\n        loop.close()\n\n\ndef start_schedule_center_process(worker_num: int = 4, max_concurrency: ValueProxy = None, node_id: ValueProxy = None):\n    \"\"\"\n\n    Start Schedule Center Process Workers\n    :param worker_num: Number of worker processes to start\n    :param max_concurrency: Maximum number of concurrent tasks allowed per process\n    :return:\n\n    Args:\n        node_id:\n    \"\"\"\n    logger.info(f\"Starting {worker_num} ScheduleCenterProcess workers...\")\n    if worker_num <= 0:\n        logger.error(\"worker_num must be greater than 0\")\n        return\n    processes = []\n    for _ in range(worker_num):\n        process = ScheduleCenterProcess(max_concurrency, node_id)\n        process.start()\n        logger.info(f\"Started ScheduleCenterProcess with PID: {process.pid}\")\n        processes.append(process)\n\n    logger.info(f\"Started {len(processes)} ScheduleCenterProcess workers successfully.\")\n    return processes\n\n\nif __name__ == '__main__':\n\n    set_start_method(\"spawn\", force=True)  # make sure that people are using the spawn Method Starts a New Process\n\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--worker_num', type=int, default=4, help='Number of processes, defaults to4')\n    # Maximum number of concurrency for a single process\n    parser.add_argument('--max_concurrency', type=int, default=32,\n                        help='Maximum number of concurrency for a single process, defaults to32')\n\n    args = parser.parse_args()\n\n    process_manager = Manager()\n\n    node_id = process_manager.Value('s', f\"{socket.gethostname()}-{uuid.uuid4().hex[:8]}\")\n\n    max_concurrency = process_manager.Value('i', args.max_concurrency)\n\n    # Check for incomplete tasks and terminate\n    from bisheng.linsight.domain.utils import check_and_terminate_incomplete_tasks\n\n    asyncio.run(check_and_terminate_incomplete_tasks(node_id.value))\n\n    try:\n        processes = start_schedule_center_process(worker_num=args.worker_num,\n                                                  max_concurrency=max_concurrency,\n                                                  node_id=node_id)\n        if processes:\n            for p in processes:\n                p.join()  # Wait for all processes to end\n    except KeyboardInterrupt:\n        logger.info(\"ScheduleCenterProcess interrupted by user.\")\n        logger.info(\"Stopping ScheduleCenterProcess workers...\")\n"
  },
  {
    "path": "src/backend/bisheng/llm/README.md",
    "content": "# 模型管理模块"
  },
  {
    "path": "src/backend/bisheng/llm/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/llm/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/llm/api/router.py",
    "content": "from fastapi import APIRouter, Request, Depends, Body, Query, BackgroundTasks, UploadFile\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import resp_200, UnifiedResponseModel\nfrom ..domain import LLMService\nfrom ..domain.schemas import KnowledgeLLMConfig, AssistantLLMConfig, EvaluationLLMConfig, LLMServerCreateReq, \\\n    WorkbenchModelConfig\n\nrouter = APIRouter(prefix='/llm', tags=['LLM'])\n\n\n@router.get('')\nasync def get_all_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ret = await LLMService.get_all_llm()\n    return resp_200(data=ret)\n\n\n@router.post('')\nasync def add_llm_server(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                         server: LLMServerCreateReq = Body(..., description=\"Service Provider All Data\")):\n    ret = await LLMService.add_llm_server(request, login_user, server)\n    return resp_200(data=ret)\n\n\n@router.delete('')\nasync def delete_llm_server(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                            server_id: int = Body(..., embed=True, description=\"Service Provider UniqueID\")):\n    await LLMService.delete_llm_server(request, login_user, server_id)\n    return resp_200()\n\n\n@router.put('')\nasync def update_llm_server(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                            server: LLMServerCreateReq = Body(..., description=\"Service Provider All Data\")):\n    ret = await LLMService.update_llm_server(request, login_user, server)\n    return resp_200(data=ret)\n\n\n@router.get('/info')\nasync def get_one_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                      server_id: int = Query(..., description=\"Service Provider UniqueID\")):\n    ret = await LLMService.get_one_llm(server_id)\n    return resp_200(data=ret)\n\n\n@router.post('/online')\nasync def update_model_online(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                              model_id: int = Body(..., embed=True, description=\"Model UniqueID\"),\n                              online: bool = Body(..., embed=True, description=\"Online or not\")):\n    ret = await LLMService.update_model_online(model_id, online)\n    return resp_200(data=ret)\n\n\n@router.get('/workbench', summary=\"Get workbench-related model configurations\", response_model=UnifiedResponseModel)\nasync def get_workbench_llm():\n    \"\"\" Get Idea-Related Model Configurations \"\"\"\n    ret = await LLMService.get_workbench_llm()\n    return resp_200(data=ret)\n\n\n@router.post('/workbench', summary=\"Update workbench related model configurations\", response_model=UnifiedResponseModel)\nasync def update_workbench_llm(\n        background_tasks: BackgroundTasks,\n        login_user: UserPayload = Depends(UserPayload.get_admin_user),\n        config_obj: WorkbenchModelConfig = Body(..., description=\"Model Configuration Object\")):\n    \"\"\" Update Idea-Related Model Configurations \"\"\"\n    ret = await LLMService.update_workbench_llm(login_user.user_id, config_obj, background_tasks)\n    return resp_200(data=ret)\n\n\n@router.post('/workbench/asr')\nasync def invoke_workbench_asr(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                               file: UploadFile = None):\n    \"\"\" Call the workbench'sasrModels Convert Voice to Text \"\"\"\n    text = await LLMService.invoke_workbench_asr(login_user, file)\n    return resp_200(data=text)\n\n\n@router.post('/workbench/tts')\nasync def invoke_workbench_tts(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                               text: str = Body(..., embed=True, description=\"Text that needs to be synthesized\")):\n    \"\"\" Call the workbench'sttsModels Convert text to speech \"\"\"\n    audio_url = await LLMService.invoke_workbench_tts(login_user, text)\n    return resp_200(data=audio_url)\n\n\n@router.get('/knowledge')\ndef get_knowledge_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    ret = LLMService.get_knowledge_llm()\n    return resp_200(data=ret)\n\n\n@router.post('/knowledge')\nasync def update_knowledge_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                               data: KnowledgeLLMConfig = Body(..., description=\"Knowledge Base Default Model Configuration\")):\n    \"\"\" Update default model configuration for knowledge base \"\"\"\n    ret = await LLMService.update_knowledge_llm(data)\n    return resp_200(data=ret)\n\n\n@router.get('/assistant')\nasync def get_assistant_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get assistant related model configuration \"\"\"\n    ret = await LLMService.get_assistant_llm()\n    return resp_200(data=ret)\n\n\n@router.post('/assistant')\nasync def update_assistant_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                               data: AssistantLLMConfig = Body(..., description=\"Assistant Default Model Configuration\")):\n    \"\"\" Update assistant related model configurations \"\"\"\n    ret = await LLMService.update_assistant_llm(data)\n    return resp_200(data=ret)\n\n\n@router.get('/evaluation')\nasync def get_evaluation_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get evaluation related model configurations \"\"\"\n    ret = await LLMService.get_evaluation_llm()\n    return resp_200(data=ret)\n\n\n@router.post('/evaluation')\nasync def update_evaluation_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                                data: EvaluationLLMConfig = Body(..., description=\"Evaluate default model configuration\")):\n    \"\"\" Update review related model configurations \"\"\"\n    ret = await LLMService.update_evaluation_llm(data)\n    return resp_200(data=ret)\n\n\n@router.get('/workflow')\nasync def get_workflow_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get workflow-related model configurations \"\"\"\n    ret = await LLMService.get_workflow_llm()\n    return resp_200(data=ret)\n\n\n@router.post('/workflow')\nasync def update_workflow_llm(request: Request, login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                              data: EvaluationLLMConfig = Body(..., description=\"Workflow default model configuration\")):\n    \"\"\" Update workflow-related model configurations \"\"\"\n    ret = await LLMService.update_workflow_llm(data)\n    return resp_200(data=ret)\n\n\n@router.get('/assistant/llm_list')\nasync def get_assistant_llm_list(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Get a list of optional models for the assistant \"\"\"\n    ret = await LLMService.get_assistant_llm_list(request, login_user)\n    return resp_200(data=ret)\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/__init__.py",
    "content": "from .services.llm import LLMService\n\n__all__ = [\n    'LLMService'\n]\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/const.py",
    "content": "# Some constants or enums for the module\nfrom enum import Enum\n\n\n# Service Provider Enumeration\nclass LLMServerType(Enum):\n    OPENAI = 'openai'\n    AZURE_OPENAI = 'azure_openai'\n    OLLAMA = 'ollama'\n    XINFERENCE = 'xinference'\n    LLAMACPP = 'llamacpp'\n    VLLM = 'vllm'\n    QWEN = 'qwen'  # Ali Tongyi Qianqian\n    QIAN_FAN = 'qianfan'  # Baidu Qianfan\n    ZHIPU = 'zhipu'  # Zhi Spectrum Qing Yan\n    MINIMAX = 'minimax'\n    ANTHROPIC = 'anthropic'\n    DEEPSEEK = 'deepseek'\n    SPARK = 'spark'  # Xunfei Starfire Large Model\n    BISHENG_RT = 'bisheng_rt'\n    TENCENT = 'tencent'  # Tencent Cloud\n    MOONSHOT = 'moonshot'  # Dark Side of the Moonkimi\n    VOLCENGINE = 'volcengine'  # Large model of a volcanic engine\n    SILICON = 'silicon'  # Silicon-based flow\n    MIND_IE = 'MindIE'  # Ascendant Inference Engine MindIE\n\n\n# Model Type Enumeration\nclass LLMModelType(Enum):\n    LLM = 'llm'\n    EMBEDDING = 'embedding'\n    RERANK = 'rerank'\n    ASR = 'asr'\n    TTS = 'tts'\n\n\nclass LLMModelStatus(Enum):\n    NORMAL = 0  # Normal\n    ERROR = 1  # Abnormal\n    UNKNOWN = 2  # Unknown\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/__init__.py",
    "content": "from .asr import BishengASR\nfrom .base import BishengBase\nfrom .embedding import BishengEmbedding\nfrom .llm import BishengLLM\nfrom .tts import BishengTTS\n\n__all__ = [\n    'BishengBase',\n    'BishengEmbedding',\n    'BishengLLM',\n    'BishengTTS',\n    'BishengASR',\n]\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/asr.py",
    "content": "from typing import Union, BinaryIO\n\nimport httpx\nfrom pydantic import Field\nfrom typing_extensions import Self\n\nfrom bisheng.common.errcode.server import NoAsrModelConfigError, AsrModelConfigDeletedError, AsrModelTypeError, \\\n    AsrProviderDeletedError, \\\n    AsrModelOfflineError\nfrom bisheng.core.ai import BaseASRClient, OpenAIASRClient, AliyunASRClient, AzureOpenAIASRClient\nfrom bisheng.llm.domain.const import LLMModelType, LLMServerType\nfrom bisheng.llm.domain.models import LLMModel, LLMServer\nfrom .base import BishengBase\nfrom ..utils import wrapper_bisheng_model_limit_check_async\n\n\nasync def _get_openai_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\"),\n        \"model\": model_info.model_name,\n    }\n    if params.get(\"openai_api_base\"):\n        new_params[\"base_url\"] = params[\"openai_api_base\"]\n    if params.get(\"openai_proxy\"):\n        new_params[\"http_client\"] = httpx.AsyncClient(proxy=params[\"openai_proxy\"])\n    return new_params\n\n\nasync def _get_azure_openai_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\"),\n        \"api_version\": params.get(\"openai_api_version\"),\n        \"azure_endpoint\": params.get(\"azure_endpoint\"),\n        \"model\": model_info.model_name,\n    }\n    return new_params\n\n\nasync def _get_qwen_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\") or params.get(\"api_key\"),\n        \"model\": model_info.model_name,\n    }\n    return new_params\n\n\n_asr_client_type = {\n    LLMServerType.OPENAI.value: {\n        \"client\": OpenAIASRClient,\n        \"params_handler\": _get_openai_params\n    },\n    LLMServerType.AZURE_OPENAI.value: {\n        \"client\": AzureOpenAIASRClient,\n        \"params_handler\": _get_azure_openai_params\n    },\n    LLMServerType.QWEN.value: {\n        \"client\": AliyunASRClient,\n        \"params_handler\": _get_qwen_params\n    }\n}\n\n\nclass BishengASR(BishengBase):\n    asr: BaseASRClient = Field(..., description=\"asrInstances\")\n\n    @classmethod\n    async def get_bisheng_asr(cls, **kwargs) -> Self:\n        model_id = kwargs.pop('model_id', 0)\n        if not model_id:\n            raise NoAsrModelConfigError()\n        model_info, server_info = await cls.get_model_server_info(model_id)\n        # ignore_onlineParameters are used to skip model presence checks\n        ignore_online = kwargs.pop('ignore_online', False)\n\n        if not model_info:\n            raise AsrModelConfigDeletedError()\n        if model_info.model_type != LLMModelType.ASR.value:\n            raise AsrModelTypeError(model_type=model_info.model_type)\n        if not server_info:\n            raise AsrProviderDeletedError()\n        if not ignore_online and not model_info.online:\n            raise AsrModelOfflineError(server_name=server_info.name, model_name=model_info.model_name)\n\n        # InisialisasiasrClient\n        asr_client = await cls.init_asr_client(model_info=model_info, server_info=server_info)\n\n        return cls(model_id=model_id, asr=asr_client, model_info=model_info, server_info=server_info, **kwargs)\n\n    @classmethod\n    async def init_asr_client(cls, model_info: LLMModel, server_info: LLMServer) -> BaseASRClient:\n        params = {}\n        if server_info.config:\n            if server_info.config:\n                params.update(server_info.config)\n            if model_info.config:\n                params.update(model_info.config)\n        if server_info.type not in _asr_client_type:\n            raise Exception(f'asrModel not supported{server_info.type}Type of service provider')\n        params_handler = _asr_client_type[server_info.type]['params_handler']\n        new_params = await params_handler(params, server_info, model_info)\n        client = _asr_client_type[server_info.type]['client'](**new_params)\n        return client\n\n    @wrapper_bisheng_model_limit_check_async\n    async def ainvoke(self, audio: Union[str, bytes, BinaryIO], **kwargs) -> str:\n        return await self.asr.transcribe(audio=audio, **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/base.py",
    "content": "from typing import Optional, Dict\n\nfrom pydantic import BaseModel, Field, ConfigDict\nfrom typing_extensions import Self\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom ..models import LLMModel, LLMServer, LLMDao\n\n\nclass BishengBase(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True, validate_by_name=True, validate_by_alias=True)\n\n    model_id: int = Field(description=\"Saved by backend servicemodelUniqueness quantificationID\")\n    model_name: str = Field(default='', description='model name in mysql')\n\n    # field for telemetry logging\n    app_id: str = Field(..., description='application id')\n    app_type: ApplicationTypeEnum = Field(..., description='application type')\n    app_name: str = Field(..., description='application name')\n    user_id: int = Field(..., description='invoke user id')\n\n    # bishengStrongly related business parameters\n    model_info: Optional[LLMModel] = Field(default=None, description=\"Model Configuration Information\")\n    server_info: Optional[LLMServer] = Field(default=None, description=\"Service Provider Information\")\n\n    @classmethod\n    async def get_class_instance(cls, **kwargs: Dict) -> Self:\n        model_id: int | None = kwargs.pop('model_id', None)\n        model_info, server_info = await cls.get_model_server_info(model_id)\n        instance = cls(\n            model_id=model_id,\n            model_name=model_info.model_name,\n            model_info=model_info,\n            server_info=server_info,\n            **kwargs\n        )\n        return instance\n\n    @classmethod\n    async def get_model_server_info(cls, model_id: int | None) -> tuple[LLMModel | None, LLMServer | None]:\n        model_info = None\n        server_info = None\n        if not model_id:\n            return model_info, server_info\n        model_info = await LLMDao.aget_model_by_id(model_id)\n        if model_info:\n            server_info = await LLMDao.aget_server_by_id(model_info.server_id)\n        return model_info, server_info\n\n    @classmethod\n    def get_model_server_info_sync(cls, model_id: int | None) -> tuple[LLMModel | None, LLMServer | None]:\n        model_info = None\n        server_info = None\n        if not model_id:\n            return model_info, server_info\n        model_info = LLMDao.get_model_by_id(model_id)\n        if model_info:\n            server_info = LLMDao.get_server_by_id(model_info.server_id)\n        return model_info, server_info\n\n    async def update_model_status(self, status: int, remark: str = ''):\n        \"\"\"Update model status\"\"\"\n        if self.model_info.status != status:\n            self.model_info.status = status\n            await LLMDao.aupdate_model_status(self.model_id, status, remark[-500:])  # Limit note length to500characters. \n\n    def sync_update_model_status(self, status: int, remark: str = ''):\n        \"\"\"Update model status\"\"\"\n        if self.model_info.status != status:\n            self.model_info.status = status\n            LLMDao.update_model_status(self.model_id, status, remark[-500:])\n\n    def get_server_info_config(self):\n        if self.server_info and self.server_info.config:\n            return self.server_info.config\n        return {}\n\n    def get_model_info_config(self):\n        if self.model_info and self.model_info.config:\n            return self.model_info.config\n        return {}\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/embedding.py",
    "content": "import json\nfrom typing import Optional, Dict, List\n\nimport numpy as np\nfrom langchain_core.embeddings import Embeddings\nfrom loguru import logger\nfrom pydantic import Field\nfrom typing_extensions import Self\n\nfrom bisheng.core.ai import OllamaEmbeddings, OpenAIEmbeddings, AzureOpenAIEmbeddings, DashScopeEmbeddings\nfrom bisheng.llm.domain.const import LLMServerType, LLMModelType\nfrom .base import BishengBase\nfrom ..models import LLMModel, LLMServer\nfrom ..utils import wrapper_bisheng_model_limit_check\n\n\ndef _get_user_kwargs(model_config: dict) -> dict:\n    user_kwargs = model_config.get('user_kwargs', {})\n    if isinstance(user_kwargs, str) and user_kwargs:\n        return json.loads(user_kwargs)\n    return user_kwargs if user_kwargs else {}\n\n\ndef _get_ollama_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['base_url'] = server_config.get('base_url', '').rstrip('/')\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_openai_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    if server_config:\n        params.update({\n            'api_key': server_config.get('openai_api_key') or server_config.get('api_key') or 'empty',\n            'base_url': server_config.get('openai_api_base', '') or server_config.get('base_url', ''),\n        })\n        params['base_url'] = params['base_url'].rstrip('/')\n    if server_config.get('openai_proxy'):\n        params['openai_proxy'] = server_config.get('openai_proxy')\n    params[\"check_embedding_ctx_length\"] = False\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_azure_openai_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params.update({\n        'azure_endpoint': server_config.get('azure_endpoint').rstrip('/'),\n        'openai_api_key': server_config.get('openai_api_key'),\n        'openai_api_version': server_config.get('openai_api_version'),\n        'azure_deployment': params.pop('model'),\n    })\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_qwen_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['dashscope_api_key'] = server_config.get('openai_api_key', '')\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\n_node_type: Dict = {\n    # Open source inference framework\n    LLMServerType.OLLAMA.value: {\"client\": OllamaEmbeddings, \"params_handler\": _get_ollama_params},\n    LLMServerType.XINFERENCE.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.LLAMACPP.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.VLLM.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n\n    # OfficalAPISERVICES\n    LLMServerType.OPENAI.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.AZURE_OPENAI.value: {\"client\": AzureOpenAIEmbeddings, \"params_handler\": _get_azure_openai_params},\n    LLMServerType.QWEN.value: {\"client\": DashScopeEmbeddings, \"params_handler\": _get_qwen_params},\n    LLMServerType.QIAN_FAN.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.MINIMAX.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.ZHIPU.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.TENCENT.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.VOLCENGINE.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n    LLMServerType.SILICON.value: {\"client\": OpenAIEmbeddings, \"params_handler\": _get_openai_params},\n}\n\n\nclass BishengEmbedding(BishengBase, Embeddings):\n    \"\"\" Use the embedding model that has been launched in model management \"\"\"\n\n    embedding_ctx_length: int = Field(default=8192, description='embeddingModel Context Length')\n    max_retries: int = Field(default=6, description='embeddingNumber of failed model call retries')\n    request_timeout: int = Field(default=200, description='embeddingModel Call Timeout')\n    model_kwargs: dict = Field(default={}, description='embeddingModel Call Parameters')\n\n    embeddings: Optional[Embeddings] = Field(default=None)\n\n    @classmethod\n    async def get_bisheng_embedding(cls, **kwargs) -> Self:\n        return await cls.get_class_instance(**kwargs)\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.model_id = kwargs.get('model_id')\n        if not self.model_id:\n            raise Exception('No bulkpost found in Trashembeddingmodel config')\n        if \"model_info\" in kwargs and \"server_info\" in kwargs:\n            self._init_client(model_info=kwargs.pop('model_info'), server_info=kwargs.pop('server_info'), **kwargs)\n        else:\n            model_info, server_info = self.get_model_server_info_sync(self.model_id)\n            self._init_client(model_info=model_info, server_info=server_info, **kwargs)\n\n    def _init_client(self, model_info, server_info, **kwargs):\n        ignore_online = kwargs.get('ignore_online', False)\n        if not model_info:\n            raise Exception('embeddingModel configuration has been deleted, please reconfigure the model')\n        if not server_info:\n            raise Exception('Service provider configuration has been deleted, please reconfigureembeddingModels')\n        if model_info.model_type != LLMModelType.EMBEDDING.value:\n            raise Exception(f'Support onlyEmbeddingModel of type, not supported{model_info.model_type}Type of model')\n        if not ignore_online and not model_info.online:\n            raise Exception(f'{server_info.name}under{model_info.model_name}The model is offline, please contact the administrator to launch the corresponding model')\n        logger.debug(\n            f'init_bisheng_embedding: server_id: {server_info.id}, model_id: {model_info.id}')\n        self.model_info: LLMModel = model_info\n        self.server_info: LLMServer = server_info\n        self.model_name = model_info.model_name\n\n        class_object = self._get_embedding_class(server_info.type)\n        params = self._get_embedding_params(server_info, **kwargs)\n        try:\n            self.embeddings = class_object(**params)\n        except Exception as e:\n            logger.exception('init_bisheng_embedding error')\n            raise Exception(f'Inisialisasibisheng embeddingComponent failed, please check the configuration or contact the administrator.Error message:{e}')\n\n    @staticmethod\n    def _get_embedding_class(server_type: str) -> type[Embeddings]:\n        node_type = _node_type.get(server_type)\n        if not node_type:\n            raise Exception(f'{server_type}Type of service provider is not supportedembedding')\n        class_object = node_type.get('client')\n        return class_object\n\n    def _get_default_params(self, server_config: dict, model_config: dict, **kwargs) -> dict:\n        params = {\n            \"model\": self.model_info.model_name,\n        }\n        return params\n\n    def _get_embedding_params(self, server_info: LLMServer, **kwargs) -> dict:\n        server_config = self.get_server_info_config()\n        model_config = self.get_model_info_config()\n        default_params = self._get_default_params(server_config, model_config, **kwargs)\n\n        params_handler = _node_type[server_info.type]['params_handler']\n        params = params_handler(default_params, server_config, model_config)\n        return params\n\n    @wrapper_bisheng_model_limit_check\n    def embed_documents(self, texts: List[str]) -> List[List[float]]:\n        \"\"\"embedding\"\"\"\n        ret = self.embeddings.embed_documents(texts)\n        # Whether the disc single vector is normalized\n        if ret:\n            vector = ret[0]\n            if np.linalg.norm(vector) != 1:\n                ret = [(np.array(doc) / np.linalg.norm(doc)).tolist() for doc in ret]\n        return ret\n\n    @wrapper_bisheng_model_limit_check\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"embedding\"\"\"\n        ret = self.embeddings.embed_query(text)\n        if np.linalg.norm(ret) != 1:\n            ret = (np.array(ret) / np.linalg.norm(ret)).tolist()\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/llm.py",
    "content": "import json\nfrom typing import List, Optional, Any, Sequence, Union, Dict, Type, Callable, Iterator, AsyncIterator\n\nfrom langchain_core.callbacks import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain_core.language_models import BaseChatModel, LanguageModelInput\nfrom langchain_core.messages import BaseMessage, ToolMessage, HumanMessage, BaseMessageChunk, AIMessage\nfrom langchain_core.outputs import ChatResult, ChatGenerationChunk\nfrom langchain_core.runnables import Runnable\nfrom langchain_core.tools import BaseTool\nfrom langchain_core.utils.function_calling import convert_to_openai_tool\nfrom loguru import logger\nfrom pydantic import Field\nfrom typing_extensions import Self\n\nfrom bisheng.common.errcode.server import NoLlmModelConfigError, LlmModelConfigDeletedError, LlmProviderDeletedError, \\\n    LlmModelTypeError, LlmModelOfflineError, InitLlmError\nfrom bisheng.core.ai import ChatOllama, ChatOpenAI, ChatOpenAICompatible, \\\n    AzureChatOpenAI, ChatZhipuAI, MiniMaxChat, ChatAnthropic, MoonshotChat\nfrom bisheng.core.ai.llm.custom_chat_deepseek import CustomChatDeepSeek\nfrom bisheng.core.ai.llm.custom_chat_tongyi import CustomChatTongYi\nfrom bisheng.llm.domain.const import LLMModelType, LLMServerType\nfrom bisheng.llm.domain.models import LLMServer, LLMModel\nfrom .base import BishengBase\nfrom ..utils import wrapper_bisheng_model_limit_check, wrapper_bisheng_model_limit_check_async, \\\n    wrapper_bisheng_model_generator, wrapper_bisheng_model_generator_async\n\n\ndef _get_user_kwargs(model_config: dict) -> dict:\n    user_kwargs = model_config.get('user_kwargs', {})\n    if isinstance(user_kwargs, str) and user_kwargs:\n        return json.loads(user_kwargs)\n    return user_kwargs if user_kwargs else {}\n\n\n# Attention needs to be paid to the priority of the initialization parameters. Instantiation Incoming Highest -> The following configurations of the front-end interface -> Advanced parameters of the front-end interface have the lowest priority\ndef _get_ollama_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['base_url'] = server_config.get('base_url', '').rstrip('/')\n    # some bugs\n    params['stream'] = params.pop('streaming', True)\n    if params.get('max_tokens'):\n        params['num_ctx'] = params.pop('max_tokens', None)\n\n    # User advanced custom configuration\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_xinference_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params = _get_openai_params(params, server_config, model_config)\n    if not params.get('api_key', None):\n        params['api_key'] = 'Empty'\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_openai_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    if server_config:\n        params.update({\n            'api_key': server_config.get('openai_api_key') or server_config.get('api_key') or \"empty\",\n            'base_url': server_config.get('openai_api_base') or server_config.get('base_url'),\n        })\n        params['base_url'] = params['base_url'].rstrip('/')\n    if server_config.get('openai_proxy'):\n        params['openai_proxy'] = server_config.get('openai_proxy')\n    params['stream_usage'] = True\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_azure_openai_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params.update({\n        'azure_endpoint': server_config.get('azure_endpoint').rstrip('/'),\n        'openai_api_key': server_config.get('openai_api_key'),\n        'openai_api_version': server_config.get('openai_api_version'),\n        'azure_deployment': params.pop('model'),\n        'stream_usage': True,\n    })\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_qwen_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['dashscope_api_key'] = server_config.get('openai_api_key', '')\n    params['model_kwargs'] = {\n        'enable_search': model_config.get('enable_web_search', False),\n    }\n    if params.get(\"streaming\"):\n        params['model_kwargs']['incremental_output'] = True\n\n    if params.get('temperature'):\n        params['model_kwargs']['temperature'] = params.pop('temperature')\n\n    if params.get('max_tokens'):\n        params['model_kwargs']['max_tokens'] = params.pop('max_tokens')\n\n    user_kwargs = _get_user_kwargs(model_config)\n    if user_model_kwargs := user_kwargs.get('model_kwargs'):\n        user_model_kwargs.update(params['model_kwargs'])\n        params['model_kwargs'] = user_model_kwargs\n        user_kwargs.pop('model_kwargs', None)\n    user_kwargs.update(params)\n\n    return user_kwargs\n\n\ndef _get_minimax_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['minimax_api_key'] = server_config.get('openai_api_key')\n    params['base_url'] = server_config.get('openai_api_base').rstrip('/')\n    if 'max_tokens' not in params:\n        params['max_tokens'] = 2048\n    if '/chat/completions' not in params['base_url']:\n        params['base_url'] = f\"{params['base_url']}/chat/completions\"\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_anthropic_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params.update(server_config)\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return user_kwargs\n\n\ndef _get_zhipu_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['zhipuai_api_key'] = server_config.get('openai_api_key')\n    params['zhipuai_api_base'] = server_config.get('openai_api_base').rstrip('/')\n    if 'chat/completions' not in params['zhipuai_api_base']:\n        params['zhipuai_api_base'] = f\"{params['zhipuai_api_base'].rstrip('/')}/chat/completions\"\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return params\n\n\ndef _get_spark_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params.update({\n        'api_key': f'{server_config.get(\"api_key\")}:{server_config.get(\"api_secret\")}',\n        'base_url': server_config.get('openai_api_base').rstrip('/'),\n    })\n\n    user_kwargs = _get_user_kwargs(model_config)\n    user_kwargs.update(params)\n    return params\n\n\n_llm_node_type: Dict = {\n    # Open source inference framework\n    LLMServerType.OLLAMA.value: {'client': ChatOllama, 'params_handler': _get_ollama_params},\n    LLMServerType.XINFERENCE.value: {'client': ChatOpenAI, 'params_handler': _get_xinference_params},\n    LLMServerType.LLAMACPP.value: {'client': ChatOpenAI, 'params_handler': _get_openai_params},\n    LLMServerType.VLLM.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n\n    # OfficalapiSERVICES\n    LLMServerType.OPENAI.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n    LLMServerType.AZURE_OPENAI.value: {'client': AzureChatOpenAI, 'params_handler': _get_azure_openai_params},\n    LLMServerType.QWEN.value: {'client': CustomChatTongYi, 'params_handler': _get_qwen_params},\n    LLMServerType.QIAN_FAN.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n    LLMServerType.ZHIPU.value: {'client': ChatZhipuAI, 'params_handler': _get_zhipu_params},\n    LLMServerType.MINIMAX.value: {'client': MiniMaxChat, 'params_handler': _get_minimax_params},\n    LLMServerType.ANTHROPIC.value: {'client': ChatAnthropic, 'params_handler': _get_anthropic_params},\n    LLMServerType.DEEPSEEK.value: {'client': CustomChatDeepSeek, 'params_handler': _get_openai_params},\n    LLMServerType.SPARK.value: {'client': ChatOpenAICompatible, 'params_handler': _get_spark_params},\n    LLMServerType.TENCENT.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n    LLMServerType.MOONSHOT.value: {'client': MoonshotChat, 'params_handler': _get_openai_params},\n    LLMServerType.VOLCENGINE.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n    LLMServerType.SILICON.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n    LLMServerType.MIND_IE.value: {'client': ChatOpenAICompatible, 'params_handler': _get_openai_params},\n}\n\n\nclass BishengLLM(BishengBase, BaseChatModel):\n    \"\"\"\n     Use the llm model that has been launched in model management\n    \"\"\"\n\n    streaming: Optional[bool] = Field(default=None, description=\"Whether to use streaming output\", alias=\"stream\")\n    temperature: Optional[float] = Field(default=None, description=\"Model Generated Temperature\")\n\n    llm: Optional[BaseChatModel] = Field(default=None)\n\n    @classmethod\n    async def get_bisheng_llm(cls, **kwargs) -> Self:\n        return await cls.get_class_instance(**kwargs)\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.model_id = kwargs.get('model_id')\n        if not self.model_id:\n            raise NoLlmModelConfigError()\n\n        if \"model_info\" in kwargs and \"server_info\" in kwargs:\n            # Description is fromclass methodInitialized No need to query the database again\n            self._init_client(model_info=kwargs.pop(\"model_info\"), server_info=kwargs.pop(\"server_info\"), **kwargs)\n        else:\n            model_info, server_info = self.get_model_server_info_sync(self.model_id)\n            self._init_client(model_info, server_info, **kwargs)\n\n    def _init_client(self, model_info: LLMModel, server_info: LLMServer, **kwargs):\n        ignore_online = kwargs.get('ignore_online', False)\n        self.temperature = kwargs.get('temperature', None)\n        self.streaming = kwargs.get('streaming', None)\n\n        if not model_info:\n            raise LlmModelConfigDeletedError()\n        if not server_info:\n            raise LlmProviderDeletedError()\n        if model_info.model_type != LLMModelType.LLM.value:\n            raise LlmModelTypeError(model_type=model_info.model_type)\n        if not ignore_online and not model_info.online:\n            raise LlmModelOfflineError(server_name=server_info.name, model_name=model_info.model_name)\n\n        logger.debug(f'init_bisheng_llm: server_id: {server_info.id}, model_id: {model_info.id}')\n        self.model_info = model_info\n        self.model_name = model_info.model_name\n        self.server_info = server_info\n\n        class_object = self._get_llm_class(server_info.type)\n        params = self._get_llm_params(server_info, model_info)\n        try:\n            self.llm = class_object(**params)\n        except Exception as e:\n            logger.exception('init bisheng llm error')\n            raise InitLlmError(exception=e)\n\n    @staticmethod\n    def _get_llm_class(server_type: str) -> type[BaseChatModel]:\n        if server_type not in _llm_node_type:\n            raise Exception(f'not support llm type: {server_type}')\n        class_type = _llm_node_type[server_type]['client']\n        return class_type\n\n    def _get_llm_params(self, server_info: LLMServer, model_info: LLMModel) -> dict:\n        server_config = self.get_server_info_config()\n        model_config = self.get_model_info_config()\n        default_params = self._get_default_params(server_config, model_config)\n\n        params_handler = _llm_node_type[server_info.type]['params_handler']\n        params = params_handler(default_params, server_config, model_config)\n        return params\n\n    def _get_default_params(self, server_config: dict, model_config: dict) -> dict:\n        # Highest priority parameters because they are passed in when the object is instantiated\n        default_params: Dict[str, Any] = {\n            'model': self.model_info.model_name,\n        }\n\n        # The highest priority is passed in the instantiation, followed by the advanced configuration. Otherwise defaults totrue\n        if self.streaming is not None:\n            default_params['streaming'] = self.streaming\n        else:\n            user_kwargs = _get_user_kwargs(model_config)\n            if user_kwargs.get('streaming', None) is None:\n                default_params['streaming'] = True\n            else:\n                default_params['streaming'] = user_kwargs.get('streaming', None)\n\n        if self.temperature is not None:\n            default_params['temperature'] = self.temperature\n        if model_config.get('max_tokens'):\n            default_params['max_tokens'] = model_config.get('max_tokens')\n        return default_params\n\n    @property\n    def _llm_type(self):\n        return self.llm._llm_type\n\n    def parse_kwargs(self, messages: List[BaseMessage], kwargs: Dict[str, Any]) -> (List[BaseMessage], Dict[str, Any]):\n        if self.server_info.type == LLMServerType.MINIMAX.value:\n            if self.get_model_info_config().get('enable_web_search'):\n                if 'tools' not in kwargs:\n                    kwargs.update({\n                        'tools': [{'type': 'web_search'}],\n                    })\n                else:\n                    tool_exists = False\n                    for tool in kwargs['tools']:\n                        if tool.get('type') == 'web_search':\n                            tool_exists = True\n                            break\n                    if not tool_exists:\n                        kwargs['tools'].append({\n                            'type': 'web_search',\n                        })\n        elif self.server_info.type == LLMServerType.MOONSHOT.value:\n            if self.get_model_info_config().get('enable_web_search'):\n                if 'tools' not in kwargs:\n                    kwargs.update({\n                        'tools': [{\n                            \"type\": \"builtin_function\",\n                            \"function\": {\n                                \"name\": \"$web_search\",\n                            },\n                        }],\n                    })\n                else:\n                    tool_exists = False\n                    for tool in kwargs['tools']:\n                        if tool.get('type') == 'builtin_function':\n                            tool_exists = True\n                            break\n                    if not tool_exists:\n                        kwargs['tools'].append({\n                            \"type\": \"builtin_function\",\n                            \"function\": {\n                                \"name\": \"$web_search\",\n                            },\n                        })\n        # elif self.server_info.type == LLMServerType.QWEN.value:\n        #     # ChatTongYi The input parameters for multimodality are special and need to be converted to support\n        #     user_message = messages[-1]\n        #     if isinstance(user_message, HumanMessage):\n        #         if isinstance(user_message.content, list):\n        #             for one in user_message.content:\n        #                 if one.get('type') == 'image' and one.get('data'):\n        #                     one['type'] = 'image'\n        #                     one['image'] = f\"data:{one.get('mime_type')};{one.get('source_type')},{one.get('data')}\"\n        #                 elif one.get('type') == 'image_url' and one.get('image_url'):\n        #                     one['type'] = 'image'\n        #                     one['image'] = one.pop('image_url', {}).get('url')\n        return messages, kwargs\n\n    @wrapper_bisheng_model_limit_check\n    def _generate(\n            self,\n            messages: List[BaseMessage],\n            stop: Optional[List[str]] = None,\n            run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n            stream: Optional[bool] = None,\n            **kwargs: Any,\n    ) -> ChatResult:\n        messages, kwargs = self.parse_kwargs(messages, kwargs)\n        if self.server_info.type == LLMServerType.MOONSHOT.value:\n            ret = self.moonshot_generate(messages, stop, run_manager, **kwargs)\n        else:\n            ret = self.llm._generate(messages, stop, run_manager, **kwargs)\n            if self.server_info.type == LLMServerType.QWEN.value:\n                ret.generations[0].message = self.convert_qwen_result(ret.generations[0].message)\n        return ret\n\n    def moonshot_generate(\n            self,\n            messages: List[BaseMessage],\n            stop: Optional[List[str]] = None,\n            run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n            **kwargs: Any,\n    ) -> ChatResult:\n        result = None\n        finish_reason = None\n        while finish_reason is None or finish_reason == 'tool_calls':\n            result = self.llm._generate(messages, stop, run_manager, **kwargs)\n            result_message = result.generations[0].message\n            finish_reason = result.generations[0].generation_info.get('finish_reason')\n            for tool_call in result_message.tool_calls:\n                tool_call_name = tool_call['name']\n                if tool_call_name == \"$web_search\":\n                    messages.append(result_message)\n                    messages.append(ToolMessage(\n                        tool_call_id=tool_call['id'],\n                        name=tool_call_name,\n                        content=json.dumps(tool_call['args'], ensure_ascii=False),\n                    ))\n                else:\n                    break\n        return result\n\n    @wrapper_bisheng_model_limit_check_async\n    async def _agenerate(\n            self,\n            messages: List[BaseMessage],\n            stop: Optional[List[str]] = None,\n            run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n            stream: Optional[bool] = None,\n            **kwargs: Any,\n    ) -> ChatResult:\n        messages, kwargs = self.parse_kwargs(messages, kwargs)\n        if self.server_info.type == LLMServerType.MOONSHOT.value:\n            ret = await self.moonshot_agenerate(messages, stop, run_manager, **kwargs)\n        else:\n            ret = await self.llm._agenerate(messages, stop, run_manager, **kwargs)\n            if self.server_info.type == LLMServerType.QWEN.value:\n                ret.generations[0].message = self.convert_qwen_result(ret.generations[0].message)\n        return ret\n\n    async def moonshot_agenerate(\n            self,\n            messages: List[BaseMessage],\n            stop: Optional[List[str]] = None,\n            run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n            **kwargs: Any,\n    ) -> ChatResult:\n        result = None\n        finish_reason = None\n        while finish_reason is None or finish_reason == 'tool_calls':\n            result = await self.llm._agenerate(messages, stop, run_manager, **kwargs)\n            result_message = result.generations[0].message\n            finish_reason = result.generations[0].generation_info.get('finish_reason')\n            for tool_call in result_message.tool_calls:\n                tool_call_name = tool_call['name']\n                if tool_call_name == \"$web_search\":\n                    messages.append(result_message)\n                    messages.append(ToolMessage(\n                        tool_call_id=tool_call['id'],\n                        name=tool_call_name,\n                        content=json.dumps(tool_call['args'], ensure_ascii=False),\n                    ))\n                else:\n                    break\n        return result\n\n    def bind_tools(\n            self,\n            tools: Sequence[Union[Dict[str, Any], Type, Callable, BaseTool]],\n            **kwargs: Any,\n    ) -> Runnable[LanguageModelInput, BaseMessage]:\n        formatted_tools = [convert_to_openai_tool(tool) for tool in tools]\n        return super().bind(tools=formatted_tools, **kwargs)\n\n    def convert_qwen_result(self, message: BaseMessageChunk | BaseMessage) -> BaseMessageChunk | BaseMessage:\n        # ChatTongYi model vl model message.content is list\n        if isinstance(message.content, list):\n            message.content = ''.join([one.get('text', '') for one in message.content])\n        return message\n\n    @wrapper_bisheng_model_generator\n    def _stream(\n            self,\n            messages: list[BaseMessage],\n            stop: Optional[list[str]] = None,\n            run_manager: Optional[CallbackManagerForLLMRun] = None,\n            **kwargs: Any,\n    ) -> Iterator[ChatGenerationChunk]:\n        for one in self.llm._stream(messages, stop=stop, run_manager=run_manager, **kwargs):\n            if self.server_info.type == LLMServerType.QWEN.value:\n                one.message = self.convert_qwen_result(one.message)\n            yield one\n\n    @wrapper_bisheng_model_generator_async\n    async def _astream(\n            self,\n            messages: list[BaseMessage],\n            stop: Optional[list[str]] = None,\n            run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n            **kwargs: Any,\n    ) -> AsyncIterator[ChatGenerationChunk]:\n        async for one in self.llm._astream(messages, stop=stop, run_manager=run_manager, **kwargs):\n            if self.server_info.type == LLMServerType.QWEN.value:\n                one.message = self.convert_qwen_result(one.message)\n            yield one\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/rerank.py",
    "content": "from typing import Dict, Optional, Sequence\n\nimport dashscope\nfrom langchain_core.callbacks import Callbacks\nfrom langchain_core.documents import BaseDocumentCompressor, Document\nfrom loguru import logger\nfrom pydantic import Field\nfrom typing_extensions import Self\n\nfrom bisheng.core.ai import XinferenceRerank, CommonRerank, DashScopeRerank\nfrom bisheng.llm.domain.const import LLMServerType, LLMModelType\nfrom .llm import BishengBase\nfrom ..utils import wrapper_bisheng_model_limit_check, wrapper_bisheng_model_limit_check_async\n\n\ndef _get_xinference_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['base_url'] = server_config.get('openai_api_base') or server_config.get('base_url')\n    params['api_key'] = server_config.get('openai_api_key') or server_config.get('api_key') or 'empty'\n    params['model_uid'] = params.pop('model', '')\n    return params\n\n\ndef _get_common_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['base_url'] = server_config.get('openai_api_base') or server_config.get('base_url')\n    params['api_key'] = server_config.get('openai_api_key') or server_config.get('api_key') or 'empty'\n    params['rerank_endpoint'] = '/rerank'\n    return params\n\n\ndef _get_qwen_params(params: dict, server_config: dict, model_config: dict) -> dict:\n    params['dashscope_api_key'] = server_config.get('openai_api_key', '')\n    params['top_n'] = None  # return all documents\n    params[\"client\"] = dashscope.TextReRank\n    return params\n\n\n_node_type: Dict = {\n    # Open source inference framework\n    LLMServerType.XINFERENCE.value: {'client': XinferenceRerank, 'params_handler': _get_xinference_params},\n    LLMServerType.LLAMACPP.value: {'client': CommonRerank, 'params_handler': _get_common_params},\n    LLMServerType.VLLM.value: {'client': CommonRerank, 'params_handler': _get_common_params},\n\n    # OfficalapiSERVICES\n    LLMServerType.QWEN.value: {'client': DashScopeRerank, 'params_handler': _get_qwen_params},\n    LLMServerType.QIAN_FAN.value: {'client': CommonRerank, 'params_handler': _get_common_params},\n    LLMServerType.SILICON.value: {'client': CommonRerank, 'params_handler': _get_common_params},\n}\n\n\nclass BishengRerank(BishengBase, BaseDocumentCompressor):\n    \"\"\"Rerank LLM wrapper class\"\"\"\n    rerank: Optional[BaseDocumentCompressor] = Field(None, description=\"Rerank client instance\")\n\n    @classmethod\n    async def get_bisheng_rerank(cls, **kwargs) -> Self:\n        return await cls.get_class_instance(**kwargs)\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.model_id = kwargs.get('model_id')\n        if not self.model_id:\n            raise Exception('No bulkpost found in Trashrerankmodel config')\n        if \"model_info\" in kwargs and \"server_info\" in kwargs:\n            self._init_client(model_info=kwargs.pop('model_info'), server_info=kwargs.pop('server_info'), **kwargs)\n        else:\n            model_info, server_info = self.get_model_server_info_sync(self.model_id)\n            self._init_client(model_info=model_info, server_info=server_info, **kwargs)\n\n    def _init_client(self, model_info, server_info, **kwargs):\n        ignore_online = kwargs.get('ignore_online', False)\n        if not model_info:\n            raise Exception('rerankModel configuration has been deleted, please reconfigure the model')\n        if not server_info:\n            raise Exception('Service provider configuration has been deleted, please reconfigurererankModels')\n        if model_info.model_type != LLMModelType.RERANK.value:\n            raise Exception(f'Support onlyRerankModel of type, not supported{model_info.model_type}Type of model')\n        if not ignore_online and not model_info.online:\n            raise Exception(f'{server_info.name}under{model_info.model_name}The model is offline, please contact the administrator to launch the corresponding model')\n        logger.debug(f'init_bisheng_rerank: server_id: {server_info.id}, model_id: {model_info.id}')\n\n        node_conf = _node_type.get(server_info.type)\n        if not node_conf:\n            raise Exception(f'Not supportedrerankService Provider:{server_info.type}')\n        self.model_info = model_info\n        self.model_name = model_info.model_name\n        self.server_info = server_info\n\n        params_handler = node_conf['params_handler']\n        client_class = node_conf['client']\n        params = {\n            \"model\": self.model_name,\n        }\n        params = params_handler(params, self.get_server_info_config(), self.get_model_info_config())\n        try:\n            self.rerank = client_class(**params)\n        except Exception as e:\n            logger.exception('init_bisheng_rerank error')\n            raise Exception(f'init bisheng rerank error，error msg：{e}')\n\n    @wrapper_bisheng_model_limit_check\n    def compress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        return self.rerank.compress_documents(documents, query, callbacks=callbacks)\n\n    @wrapper_bisheng_model_limit_check_async\n    async def acompress_documents(\n            self,\n            documents: Sequence[Document],\n            query: str,\n            callbacks: Optional[Callbacks] = None,\n    ) -> Sequence[Document]:\n        return await self.rerank.acompress_documents(documents, query, callbacks=callbacks)\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/llm/tts.py",
    "content": "import httpx\nfrom pydantic import Field\nfrom typing_extensions import Self\n\nfrom bisheng.common.errcode.server import NoTtsModelConfigError, TtsModelConfigDeletedError, \\\n    TtsModelTypeError, TtsProviderDeletedError, TtsModelOfflineError\nfrom bisheng.core.ai import BaseTTSClient, OpenAITTSClient, \\\n    AliyunTTSClient, AzureOpenAITTSClient\nfrom bisheng.llm.domain.const import LLMModelType, LLMServerType\nfrom bisheng.llm.domain.models import LLMServer, LLMModel\nfrom .base import BishengBase\nfrom ..utils import wrapper_bisheng_model_limit_check_async\n\n\nasync def _get_openai_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\"),\n        \"model\": model_info.model_name,\n        \"base_url\": params.get(\"openai_base_url\"),\n    }\n    if params.get(\"openai_api_base\"):\n        new_params[\"base_url\"] = params[\"openai_api_base\"]\n    if params.get(\"voice\"):\n        new_params[\"voice\"] = params[\"voice\"]\n    if params.get(\"openai_proxy\"):\n        new_params[\"http_client\"] = httpx.AsyncClient(proxy=params[\"openai_proxy\"])\n    return new_params\n\n\nasync def _get_azure_openai_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\"),\n        \"api_version\": params.get(\"openai_api_version\"),\n        \"azure_endpoint\": params.get(\"azure_endpoint\"),\n        \"model\": model_info.model_name,\n    }\n    if params.get(\"voice\"):\n        new_params[\"voice\"] = params[\"voice\"]\n    return new_params\n\n\nasync def _get_qwen_params(params: dict, server_info: LLMServer, model_info: LLMModel) -> dict:\n    new_params = {\n        \"api_key\": params.get(\"openai_api_key\") or params.get(\"api_key\"),\n        \"model\": model_info.model_name,\n    }\n    if params.get(\"voice\"):\n        new_params[\"voice\"] = params[\"voice\"]\n    return new_params\n\n\n_tts_client_type = {\n    LLMServerType.OPENAI.value: {\n        \"client\": OpenAITTSClient,\n        \"params_handler\": _get_openai_params\n    },\n    LLMServerType.AZURE_OPENAI.value: {\n        \"client\": AzureOpenAITTSClient,\n        \"params_handler\": _get_azure_openai_params\n    },\n    LLMServerType.QWEN.value: {\n        \"client\": AliyunTTSClient,\n        \"params_handler\": _get_qwen_params\n    }\n}\n\n\nclass BishengTTS(BishengBase):\n    tts: BaseTTSClient = Field(..., description=\"ttsInstances\")\n\n    @classmethod\n    async def get_bisheng_tts(cls, **kwargs) -> Self:\n        model_id = kwargs.pop('model_id', 0)\n        if not model_id:\n            raise NoTtsModelConfigError()\n        model_info, server_info = await cls.get_model_server_info(model_id)\n        # ignore_onlineParameters are used to skip model presence checks\n        ignore_online = kwargs.get('ignore_online', False)\n\n        if not model_info:\n            raise TtsModelConfigDeletedError()\n        if model_info.model_type != LLMModelType.TTS.value:\n            raise TtsModelTypeError(model_type=model_info.model_type)\n        if not server_info:\n            raise TtsProviderDeletedError()\n        if not ignore_online and not model_info.online:\n            raise TtsModelOfflineError(server_name=server_info.name, model_name=model_info.model_name)\n\n        # InisialisasittsClient\n        tts_client = await cls.init_tts_client(model_info=model_info, server_info=server_info)\n\n        return cls(model_id=model_id, tts=tts_client, model_info=model_info, server_info=server_info, **kwargs)\n\n    @classmethod\n    async def init_tts_client(cls, model_info: LLMModel, server_info: LLMServer) -> BaseTTSClient:\n        params = {}\n        if server_info.config:\n            if server_info.config:\n                params.update(server_info.config)\n            if model_info.config:\n                params.update(model_info.config)\n        if server_info.type not in _tts_client_type:\n            raise Exception(f'TtsModel not supported{server_info.type}Type of service provider')\n        params_handler = _tts_client_type[server_info.type]['params_handler']\n        new_params = await params_handler(params, server_info, model_info)\n        client = _tts_client_type[server_info.type]['client'](**new_params)\n        return client\n\n    @wrapper_bisheng_model_limit_check_async\n    async def ainvoke(self, text: str, **kwargs) -> bytes:\n        return await self.tts.synthesize(text, **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/models/__init__.py",
    "content": "from .llm_server import LLMDao, LLMServer, LLMModel, LLMModelBase, LLMServerBase\n\n__all__ = [\n    \"LLMDao\",\n    \"LLMServer\",\n    \"LLMModel\",\n    \"LLMModelBase\",\n    \"LLMServerBase\",\n]\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/models/llm_server.py",
    "content": "from datetime import datetime\nfrom typing import Dict, List, Optional\n\nfrom sqlalchemy import CHAR, JSON, Column, DateTime, Text, UniqueConstraint, delete, text, update\nfrom sqlmodel import Field, select, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.llm.domain.const import LLMModelType\n\n\nclass LLMServerBase(SQLModelSerializable):\n    name: str = Field(default='', index=True, unique=True, description='Service name')\n    description: Optional[str] = Field(default='', sa_column=Column(Text), description='Service Description')\n    type: str = Field(sa_column=Column(CHAR(20)), description='Service Provider Type')\n    limit_flag: bool = Field(default=False, description='Whether to turn on the daily call limit')\n    limit: int = Field(default=0, description='Daily call limit')\n    config: Optional[Dict] = Field(default=None, sa_column=Column(JSON), description='Service Provider Public Configuration')\n    user_id: int = Field(default=0, description='creatorID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass LLMModelBase(SQLModelSerializable):\n    server_id: Optional[int] = Field(default=None, nullable=False, index=True, description='SERVICESID')\n    name: str = Field(default='', description='Model Display Name')\n    description: Optional[str] = Field(default='', sa_column=Column(Text), description='Model Description')\n    model_name: str = Field(default='', description='Model name, parameters used when instantiating components')\n    model_type: str = Field(sa_column=Column(CHAR(20)), description='model type')\n    config: Optional[Dict] = Field(default=None, sa_column=Column(JSON), description='Service Provider Public Configuration')\n    status: int = Field(default=2, description='Model status.0Normal1abnormal:, 2: Unknown')\n    remark: Optional[str] = Field(default='', sa_column=Column(Text), description='Abnormal reason')\n    online: bool = Field(default=True, description='Online')\n    user_id: int = Field(default=0, description='creatorID')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass LLMServer(LLMServerBase, table=True):\n    __tablename__ = 'llm_server'\n\n    id: Optional[int] = Field(default=None, nullable=False, primary_key=True, description='Service UniqueID')\n\n\nclass LLMModel(LLMModelBase, table=True):\n    __tablename__ = 'llm_model'\n    __table_args__ = (UniqueConstraint('server_id', 'model_name', name='server_model_uniq'),)\n\n    id: Optional[int] = Field(default=None, nullable=False, primary_key=True, description='Model UniqueID')\n\n\nclass LLMDao:\n\n    @classmethod\n    def get_all_server(cls) -> List[LLMServer]:\n        \"\"\" Get all service providers \"\"\"\n        statement = select(LLMServer).order_by(col(LLMServer.update_time).desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_all_server(cls) -> List[LLMServer]:\n        \"\"\" Get all providers asynchronously \"\"\"\n        statement = select(LLMServer).order_by(col(LLMServer.update_time).desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def insert_server_with_models(cls, server: LLMServer, models: List[LLMModel]):\n        \"\"\" Insert Service Provider and Model \"\"\"\n        with get_sync_db_session() as session:\n            session.add(server)\n            session.flush()\n            for model in models:\n                model.server_id = server.id\n            session.add_all(models)\n            session.commit()\n            session.refresh(server)\n            return server\n\n    @classmethod\n    async def ainsert_server_with_models(cls, server: LLMServer, models: List[LLMModel]):\n        \"\"\" Insert service providers and models asynchronously \"\"\"\n        async with get_async_db_session() as session:\n            session.add(server)\n            await session.flush()\n            for model in models:\n                model.server_id = server.id\n            session.add_all(models)\n            await session.commit()\n            await session.refresh(server)\n            return server\n\n    @classmethod\n    async def update_server_with_models(cls, server: LLMServer, models: List[LLMModel]):\n        \"\"\" Update Service Providers and Models \"\"\"\n        async with get_async_db_session() as session:\n            session.add(server)\n\n            add_models = []\n            update_models = []\n            for model in models:\n                if model.id:\n                    update_models.append(model)\n                else:\n                    add_models.append(model)\n            # Delete model\n            await session.exec(\n                delete(LLMModel).where(col(LLMModel.server_id) == server.id,\n                                       col(LLMModel.id).not_in([model.id for model in update_models])))\n            # Add New Model\n            session.add_all(add_models)\n            # Update data for existing models\n            for one in update_models:\n                await session.exec(\n                    update(LLMModel).where(LLMModel.id == one.id).values(\n                        name=one.name,\n                        description=one.description,\n                        model_name=one.model_name,\n                        model_type=one.model_type,\n                        config=one.config))\n\n            await session.commit()\n            await session.refresh(server)\n            return server\n\n    @classmethod\n    def get_all_model(cls) -> List[LLMModel]:\n        \"\"\" Get all models \"\"\"\n        statement = select(LLMModel)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_server_by_id(cls, server_id: int) -> Optional[LLMServer]:\n        \"\"\" According to serviceIDGet Service Providers \"\"\"\n        statement = select(LLMServer).where(LLMServer.id == server_id)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_server_by_id(cls, server_id: int) -> Optional[LLMServer]:\n        \"\"\" According to serviceIDGet Service Providers \"\"\"\n        statement = select(LLMServer).where(LLMServer.id == server_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_server_by_ids(cls, server_ids: List[int]) -> List[LLMServer]:\n        \"\"\" According to serviceIDGet Service Providers \"\"\"\n        statement = select(LLMServer).where(col(LLMServer.id).in_(server_ids))\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_server_by_ids(cls, server_ids: List[int]) -> List[LLMServer]:\n        \"\"\" According to serviceIDGet Service Providers \"\"\"\n        statement = select(LLMServer).where(col(LLMServer.id).in_(server_ids))\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_server_by_name(cls, server_name: str) -> Optional[LLMServer]:\n        \"\"\" Get Service Provider by Service Name \"\"\"\n        statement = select(LLMServer).where(LLMServer.name == server_name)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_server_by_name(cls, server_name: str) -> Optional[LLMServer]:\n        \"\"\" Get Service Provider by Service Name \"\"\"\n        statement = select(LLMServer).where(LLMServer.name == server_name)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_model_by_id(cls, model_id: int) -> Optional[LLMModel]:\n        \"\"\" According to the modelIDGrabbed Objects \"\"\"\n        statement = select(LLMModel).where(LLMModel.id == model_id)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_model_by_id(cls, model_id: int) -> Optional[LLMModel]:\n        \"\"\" According to the modelIDGrabbed Objects \"\"\"\n        statement = select(LLMModel).where(LLMModel.id == model_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_model_by_ids(cls, model_ids: List[int]) -> List[LLMModel]:\n        \"\"\" According to the modelIDGrabbed Objects \"\"\"\n        statement = select(LLMModel).where(col(LLMModel.id).in_(model_ids))\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_model_by_ids(cls, model_ids: List[int]) -> List[LLMModel]:\n        \"\"\" According to the modelIDGrabbed Objects \"\"\"\n        statement = select(LLMModel).where(col(LLMModel.id).in_(model_ids))\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_model_by_type(cls, model_type: LLMModelType) -> Optional[LLMModel]:\n        \"\"\" Get first created model based on model type \"\"\"\n        statement = select(LLMModel).where(LLMModel.model_type == model_type.value).order_by(\n            col(LLMModel.id).asc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_model_by_type(cls, model_type: LLMModelType) -> Optional[LLMModel]:\n        \"\"\" Get first created model based on model type \"\"\"\n        statement = select(LLMModel).where(LLMModel.model_type == model_type.value).order_by(\n            col(LLMModel.id).asc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_model_by_server_ids(cls, server_ids: List[int]) -> List[LLMModel]:\n        \"\"\" According to serviceIDGrabbed Objects \"\"\"\n        statement = select(LLMModel).where(col(LLMModel.server_id).in_(server_ids)).order_by(\n            col(LLMModel.update_time).desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_model_by_server_ids(cls, server_ids: List[int]) -> List[LLMModel]:\n        \"\"\" According to serviceIDGet the first model created \"\"\"\n        statement = select(LLMModel).where(col(LLMModel.server_id).in_(server_ids)).order_by(\n            col(LLMModel.update_time).desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def update_model_status(cls, model_id: int, status: int, remark: str = ''):\n        \"\"\" Update model status \"\"\"\n        with get_sync_db_session() as session:\n            session.exec(\n                update(LLMModel).where(col(LLMModel.id) == model_id).values(status=status,\n                                                                            remark=remark))\n            session.commit()\n\n    @classmethod\n    async def aupdate_model_status(cls, model_id: int, status: int, remark: str = ''):\n        \"\"\" Asynchronously update model status \"\"\"\n        async with get_async_db_session() as session:\n            await session.exec(\n                update(LLMModel).where(col(LLMModel.id) == model_id).values(status=status,\n                                                                            remark=remark))\n            await session.commit()\n\n    @classmethod\n    def update_model_online(cls, model_id: int, online: bool):\n        \"\"\" Update model online status \"\"\"\n        with get_sync_db_session() as session:\n            session.exec(update(LLMModel).where(col(LLMModel.id) == model_id).values(online=online))\n            session.commit()\n\n    @classmethod\n    async def aupdate_model_online(cls, model_id: int, online: bool):\n        \"\"\" Asynchronous update model online status \"\"\"\n        async with get_async_db_session() as session:\n            await session.exec(update(LLMModel).where(col(LLMModel.id) == model_id).values(online=online))\n            await session.commit()\n\n    @classmethod\n    def delete_server_by_id(cls, server_id: int):\n        \"\"\" According to serviceIDDelete Service Provider \"\"\"\n        with get_sync_db_session() as session:\n            session.exec(delete(LLMServer).where(col(LLMServer.id) == server_id))\n            session.exec(delete(LLMModel).where(col(LLMModel.server_id) == server_id))\n            session.commit()\n\n    @classmethod\n    async def adelete_server_by_id(cls, server_id: int):\n        \"\"\" According to serviceIDDelete Service Provider \"\"\"\n        async with get_async_db_session() as session:\n            await session.exec(delete(LLMServer).where(col(LLMServer.id) == server_id))\n            await session.exec(delete(LLMModel).where(col(LLMModel.server_id) == server_id))\n            await session.commit()\n\n    @classmethod\n    def delete_model_by_ids(cls, model_ids: List[int]):\n        \"\"\" According to the modelIDDelete model \"\"\"\n        with get_sync_db_session() as session:\n            session.exec(delete(LLMModel).where(col(LLMModel.id).in_(model_ids)))\n            session.commit()\n\n    @classmethod\n    async def adelete_model_by_ids(cls, model_ids: List[int]):\n        \"\"\" According to the modelIDDelete model \"\"\"\n        async with get_async_db_session() as session:\n            await session.exec(delete(LLMModel).where(col(LLMModel.id).in_(model_ids)))\n            await session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/schemas.py",
    "content": "from typing import Optional, List\n\nfrom pydantic import Field, BaseModel, model_validator\n\nfrom bisheng.llm.domain.models import LLMModelBase, LLMServerBase\nfrom bisheng.utils.mask_data import JsonFieldMasker\nfrom bisheng_langchain.linsight.const import TaskMode\n\n\nclass LLMModelInfo(LLMModelBase):\n    id: Optional[int] = None\n\n\nclass LLMServerInfo(LLMServerBase):\n    id: Optional[int] = None\n    models: List[LLMModelInfo] = Field(default_factory=list, description='Model List')\n\n    # Sensitive Data Desensitization\n    @model_validator(mode='after')\n    def mask_sensitive_data(self):\n        if not self.config:\n            return self\n        mask_maker = JsonFieldMasker()\n        self.config = mask_maker.mask_json(self.config)\n        return self\n\n\nclass WSModel(BaseModel):\n    key: Optional[str] = None\n    id: str\n    name: Optional[str] = None\n    displayName: Optional[str] = None\n\n\nclass WorkbenchModelConfig(BaseModel):\n    \"\"\"\n    Inspiration Model Configuration\n    \"\"\"\n    # Task execution model\n    task_model: Optional[WSModel] = Field(default=None, description='Task execution model')\n    # RetrieveembeddingModels\n    embedding_model: Optional[WSModel] = Field(default=None, description='embeddingModels')\n    # Inspiration Execution Mode\n    linsight_executor_mode: Optional[TaskMode] = Field(default=None, description='Inspiration Execution Mode')\n    # Speech-to-text model\n    asr_model: Optional[WSModel] = Field(default=None, description='Speech-to-text model')\n    tts_model: Optional[WSModel] = Field(default=None, description='Text-to-speech model')\n\n\nclass LLMModelCreateReq(BaseModel):\n    id: Optional[int] = Field(default=None, description='Model UniqueID, Need to pass when updating')\n    name: str = Field(..., description='Model Display Name')\n    description: Optional[str] = Field(default='', description='Model Description')\n    model_name: str = Field(..., description='Model Name')\n    model_type: str = Field(..., description='model type')\n    online: bool = Field(default=True, description='Online')\n    config: Optional[dict] = Field(default=None, description='model config')\n\n\nclass LLMServerCreateReq(BaseModel):\n    id: Optional[int] = Field(default=None, description='service providerID, Need to pass when updating')\n    name: str = Field(..., description='Support service provider name')\n    description: Optional[str] = Field(default='', description='Service Provider Description')\n    type: str = Field(..., description='Service Provider Type')\n    limit_flag: Optional[bool] = Field(default=False, description='Whether to turn on the daily call limit')\n    limit: Optional[int] = Field(default=0, description='Daily call limit')\n    config: Optional[dict] = Field(default=None, description='Service Provider Configuration')\n    models: Optional[List[LLMModelCreateReq]] = Field(default_factory=list, description='List of models under Service Provider')\n\n\nclass KnowledgeLLMConfig(BaseModel):\n    embedding_model_id: Optional[int] = Field(None, description=\"Knowledge Base DefaultembeddingModel'sID\")\n    source_model_id: Optional[int] = Field(None, description=\"the Knowledge Base Traceability Model'sID\")\n    extract_title_model_id: Optional[int] = Field(None, description=\"Documentation Knowledge Base Extraction Header Model'sID\")\n    qa_similar_model_id: Optional[int] = Field(None, description=\"QAThe Knowledge Base Similarity Question Model'sID\")\n    abstract_prompt: Optional[str] = Field(None, description='Summary Prompt')\n\n\nclass AssistantLLMItem(BaseModel):\n    model_id: Optional[int] = Field(None, description=\"Model'sID\")\n    agent_executor_type: Optional[str] = Field(default='ReAct',\n                                               description='Execution modefunction call or ReAct')\n    knowledge_max_content: Optional[int] = Field(default=15000, description='Maximum number of strings for knowledge base retrieval')\n    knowledge_sort_index: Optional[bool] = Field(default=False, description='Whether to reschedule after knowledge base retrieval')\n    streaming: Optional[bool] = Field(default=True, description='Whether to turn on streaming')\n    default: Optional[bool] = Field(default=False, description='Is default model')\n\n\nclass AssistantLLMConfig(BaseModel):\n    llm_list: Optional[List[AssistantLLMItem]] = Field(default_factory=list, description='Assistant OptionalLLMVertical')\n    auto_llm: Optional[AssistantLLMItem] = Field(None, description='Assistant Portrait Automatic Optimization Model Configuration')\n\n\nclass EvaluationLLMConfig(BaseModel):\n    model_id: Optional[int] = Field(None, description='The default model of the evaluation functionID')\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/services/__init__.py",
    "content": "from .llm import LLMService\n\n__all__ = [\n    'LLMService',\n]\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/services/llm.py",
    "content": "import json\nimport os\nfrom typing import List, Optional, Dict\n\nfrom fastapi import Request, BackgroundTasks, UploadFile\nfrom langchain_core.documents import BaseDocumentCompressor, Document\nfrom langchain_core.embeddings import Embeddings\nfrom langchain_core.language_models import BaseChatModel\nfrom loguru import logger\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError, ServerError\nfrom bisheng.common.errcode.llm import ServerExistError, ModelNameRepeatError, ServerAddError, ServerAddAllError\nfrom bisheng.common.errcode.server import NoAsrModelConfigError, AsrModelConfigDeletedError, NoTtsModelConfigError, \\\n    TtsModelConfigDeletedError\nfrom bisheng.common.models.config import ConfigDao, ConfigKeyEnum, Config\nfrom bisheng.core.cache.redis_manager import get_redis_client\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, KnowledgeTypeEnum\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeState\nfrom bisheng.llm.domain.const import LLMModelType\nfrom bisheng.llm.domain.models import LLMDao, LLMServer, LLMModel\nfrom bisheng.llm.domain.schemas import LLMServerInfo, LLMModelInfo, KnowledgeLLMConfig, AssistantLLMConfig, \\\n    EvaluationLLMConfig, AssistantLLMItem, LLMServerCreateReq, WorkbenchModelConfig, WSModel\nfrom bisheng.utils import generate_uuid, md5_hash\nfrom bisheng.utils.mask_data import JsonFieldMasker\nfrom ..llm import BishengASR, BishengLLM, BishengTTS, BishengEmbedding\nfrom ..llm.rerank import BishengRerank\n\n\nclass LLMService:\n\n    @classmethod\n    async def get_all_llm(cls) -> List[LLMServerInfo]:\n        \"\"\" Get all the model data, Exclusion:keyand other sensitive information \"\"\"\n        llm_servers = await LLMDao.aget_all_server()\n        ret = []\n        server_ids = []\n        for one in llm_servers:\n            server_ids.append(one.id)\n            ret.append(LLMServerInfo(**one.model_dump(exclude={'config'})))\n\n        llm_models = await LLMDao.aget_model_by_server_ids(server_ids)\n        server_dicts = {}\n        for one in llm_models:\n            if one.server_id not in server_dicts:\n                server_dicts[one.server_id] = []\n            server_dicts[one.server_id].append(LLMModelInfo(**one.model_dump(exclude={'config'})))\n\n        for one in ret:\n            one.models = server_dicts.get(one.id, [])\n        return ret\n\n    @classmethod\n    async def get_one_llm(cls, server_id: int) -> LLMServerInfo:\n        \"\"\" Get a service provider's details Containskeyand other sensitive configuration information \"\"\"\n        llm = await LLMDao.aget_server_by_id(server_id)\n        if not llm:\n            raise NotFoundError.http_exception()\n\n        models = await LLMDao.aget_model_by_server_ids([server_id])\n        models = [LLMModelInfo(**one.model_dump()) for one in models]\n        return LLMServerInfo(**llm.model_dump(), models=models)\n\n    @classmethod\n    async def add_llm_server(cls, request: Request, login_user: UserPayload,\n                             server: LLMServerCreateReq) -> LLMServerInfo:\n        \"\"\" Add a service provider \"\"\"\n        exist_server = await LLMDao.aget_server_by_name(server.name)\n        if exist_server:\n            raise ServerExistError.http_exception()\n\n        model_dict = {}\n        for one in server.models:\n            if one.model_name not in model_dict:\n                model_dict[one.model_name] = LLMModel(**one.model_dump(), user_id=login_user.user_id)\n            else:\n                raise ModelNameRepeatError.http_exception()\n\n        db_server = LLMServer(**server.model_dump(exclude={'models'}))\n        db_server.user_id = login_user.user_id\n\n        db_server = await LLMDao.ainsert_server_with_models(db_server, list(model_dict.values()))\n\n        ret = await cls.get_one_llm(db_server.id)\n        success_models = []\n        success_msg = ''\n        failed_models = []\n        failed_msg = ''\n        # Try to instantiate the corresponding model, delete it if there is an error\n        common_params = {\n            'app_id': ApplicationTypeEnum.MODEL_TEST.value,\n            'app_name': ApplicationTypeEnum.MODEL_TEST.value,\n            'app_type': ApplicationTypeEnum.MODEL_TEST,\n            'user_id': login_user.user_id,\n        }\n        for one in ret.models:\n            try:\n                if one.model_type == LLMModelType.LLM.value:\n                    await cls.get_bisheng_llm(model_id=one.id, ignore_online=True, **common_params)\n                elif one.model_type == LLMModelType.EMBEDDING.value:\n                    await cls.get_bisheng_embedding(model_id=one.id, ignore_online=True, **common_params)\n                elif one.model_type == LLMModelType.ASR.value:\n                    await cls.get_bisheng_asr(model_id=one.id, ignore_online=True, **common_params)\n                elif one.model_type == LLMModelType.TTS.value:\n                    await cls.get_bisheng_tts(model_id=one.id, ignore_online=True, **common_params)\n\n                success_msg += f'{one.model_name},'\n                success_models.append(one)\n            except Exception as e:\n                logger.exception(\"init_model_error\")\n                # If model initialization fails, do not add to the model list\n                failed_msg += f'<{one.model_name}>Add failed, Reason for failure:{str(e)}\\n'\n                failed_models.append(one)\n\n        # Description Failed to add all models\n        if len(success_models) == 0 and failed_msg:\n            await LLMDao.adelete_server_by_id(ret.id)\n            raise ServerAddAllError.http_exception(failed_msg)\n        elif len(success_models) > 0 and failed_msg:\n            # Some models added successfully, Delete failed model information\n            ret.models = success_models\n            await LLMDao.adelete_model_by_ids(model_ids=[one.id for one in failed_models])\n            await cls.add_llm_server_hook(request, login_user, ret)\n            raise ServerAddError.http_exception(f\"<{success_msg.rstrip(',')}>Added{failed_msg}\")\n\n        await cls.add_llm_server_hook(request, login_user, ret)\n        return ret\n\n    @classmethod\n    async def delete_llm_server(cls, request: Request, login_user: UserPayload, server_id: int) -> bool:\n        \"\"\" Delete a service provider \"\"\"\n        await LLMDao.adelete_server_by_id(server_id)\n        return True\n\n    @classmethod\n    async def add_llm_server_hook(cls, request: Request, login_user: UserPayload, server: LLMServerInfo) -> bool:\n        \"\"\" Add a service provider Next Actions \"\"\"\n\n        handle_types = []\n        for one in server.models:\n            # test model status\n            await cls.test_model_status(one, login_user)\n            if one.model_type in handle_types:\n                continue\n            handle_types.append(one.model_type)\n            model_info = await LLMDao.aget_model_by_type(LLMModelType(one.model_type))\n            # Determine if this is the firstllmorembeddingModels\n            if model_info.id == one.id:\n                await cls.set_default_model(model_info)\n        return True\n\n    @classmethod\n    async def test_model_status(cls, model: LLMModel | LLMModelInfo, login_user: UserPayload):\n        common_params = {\n            'app_id': ApplicationTypeEnum.MODEL_TEST.value,\n            'app_name': ApplicationTypeEnum.MODEL_TEST.value,\n            'app_type': ApplicationTypeEnum.MODEL_TEST,\n            'user_id': login_user.user_id,\n        }\n        try:\n            if model.model_type == LLMModelType.LLM.value:\n                bisheng_model = await cls.get_bisheng_llm(model_id=model.id, ignore_online=True, **common_params)\n                await bisheng_model.ainvoke('hello')\n            elif model.model_type == LLMModelType.EMBEDDING.value:\n                bisheng_embed = await cls.get_bisheng_embedding(model_id=model.id, ignore_online=True, **common_params)\n                await bisheng_embed.aembed_query('hello')\n            elif model.model_type == LLMModelType.TTS.value:\n                bisheng_tts = await cls.get_bisheng_tts(model_id=model.id, ignore_online=True, **common_params)\n                await bisheng_tts.ainvoke('hello')\n            elif model.model_type == LLMModelType.ASR.value:\n                example_file_path = os.path.join(os.path.dirname(__file__), \"./asr_example.wav\")\n                with open(example_file_path, 'rb') as f:\n                    bisheng_asr = await cls.get_bisheng_asr(model_id=model.id, ignore_online=True, **common_params)\n                    await bisheng_asr.ainvoke(f)\n            elif model.model_type == LLMModelType.RERANK.value:\n                bisheng_rerank = await cls.get_bisheng_rerank(model_id=model.id, ignore_online=True, **common_params)\n                await bisheng_rerank.acompress_documents(documents=[Document(page_content=\"hello world\")],\n                                                         query=\"hello\")\n        except Exception as e:\n            LLMDao.update_model_status(model.id, 1, str(e))\n            logger.exception(f'test model status: {model.id} {model.model_name}')\n\n    @classmethod\n    async def set_default_model(cls, model: LLMModel | LLMModelInfo):\n        \"\"\" Set default model configuration \"\"\"\n        # Set defaultllmmodel config\n        if model.model_type == LLMModelType.LLM.value:\n            # Set default model configuration for knowledge base\n            knowledge_llm = await cls.aget_knowledge_llm()\n            knowledge_change = False\n            if not knowledge_llm.extract_title_model_id:\n                knowledge_llm.extract_title_model_id = model.id\n                knowledge_change = True\n            if not knowledge_llm.source_model_id:\n                knowledge_llm.source_model_id = model.id\n                knowledge_change = True\n            if not knowledge_llm.qa_similar_model_id:\n                knowledge_llm.qa_similar_model_id = model.id\n                knowledge_change = True\n            if knowledge_change:\n                await cls.update_knowledge_llm(knowledge_llm)\n\n            # Set default model configuration for reviews\n            evaluation_llm = await cls.get_evaluation_llm()\n            if not evaluation_llm.model_id:\n                evaluation_llm.model_id = model.id\n                await cls.update_evaluation_llm(evaluation_llm)\n\n            # Setting the default model configuration for the assistant\n            assistant_llm = await cls.get_assistant_llm()\n            assistant_change = False\n            if not assistant_llm.auto_llm:\n                assistant_llm.auto_llm = AssistantLLMItem(model_id=model.id)\n                assistant_change = True\n            if not assistant_llm.llm_list:\n                assistant_change = True\n                assistant_llm.llm_list = [\n                    AssistantLLMItem(model_id=model.id, default=True)\n                ]\n            if assistant_change:\n                await cls.update_assistant_llm(assistant_llm)\n\n        elif model.model_type == LLMModelType.EMBEDDING.value:\n            knowledge_llm = cls.get_knowledge_llm()\n            if not knowledge_llm.embedding_model_id:\n                knowledge_llm.embedding_model_id = model.id\n                await cls.update_knowledge_llm(knowledge_llm)\n\n        elif model.model_type == LLMModelType.TTS.value:\n            workbench_llm = await cls.get_workbench_llm()\n            if not workbench_llm.tts_model or not workbench_llm.tts_model.id:\n                workbench_llm.tts_model = WSModel(id=str(model.id), name=model.model_name)\n                await cls.update_workbench_llm(0, workbench_llm, BackgroundTasks())\n        elif model.model_type == LLMModelType.ASR.value:\n            workbench_llm = await cls.get_workbench_llm()\n            if not workbench_llm.asr_model or not workbench_llm.asr_model.id:\n                workbench_llm.asr_model = WSModel(id=str(model.id), name=model.model_name)\n                await cls.update_workbench_llm(0, workbench_llm, BackgroundTasks())\n\n    @classmethod\n    async def update_llm_server(cls, request: Request, login_user: UserPayload,\n                                server: LLMServerCreateReq) -> LLMServerInfo:\n        \"\"\" Update Service Provider Information \"\"\"\n        exist_server = await LLMDao.aget_server_by_id(server.id)\n        if not exist_server:\n            raise NotFoundError.http_exception()\n\n        old_models = await LLMDao.aget_model_by_server_ids([exist_server.id])\n        old_model_dict = {\n            one.id: one for one in old_models\n        }\n        if exist_server.name != server.name:\n            # If you change your name, determine if it already exists\n            name_server = await LLMDao.aget_server_by_name(server.name)\n            if name_server and name_server.id != server.id:\n                raise ServerExistError.http_exception(f'<{server.name}>already exists')\n\n        model_dict = {}\n        for one in server.models:\n            if one.model_name not in model_dict:\n                model_dict[one.model_name] = LLMModel(**one.model_dump())\n                # Explanation is to add a model\n                if not one.id:\n                    model_dict[one.model_name].user_id = login_user.user_id\n                    model_dict[one.model_name].server_id = exist_server.id\n            else:\n                raise ModelNameRepeatError.http_exception()\n\n        exist_server.name = server.name\n        exist_server.description = server.description\n        exist_server.type = server.type\n        exist_server.limit_flag = server.limit_flag\n        exist_server.limit = server.limit\n        mask_maker = JsonFieldMasker()\n        exist_server.config = mask_maker.update_json_with_masked(exist_server.config, server.config)\n\n        db_server = await LLMDao.update_server_with_models(exist_server, list(model_dict.values()))\n        new_server_info = await cls.get_one_llm(db_server.id)\n\n        # Determine if the model status needs to be re-determined\n        for one in new_server_info.models:\n            if one.id not in old_model_dict:\n                await cls.set_default_model(one)\n            # The new model, or the model name or type has changed\n            if (one.id not in old_model_dict or old_model_dict[one.id].model_name != one.model_name\n                    or old_model_dict[one.id].model_type != one.model_type):\n                await cls.test_model_status(one, login_user)\n        return new_server_info\n\n    @classmethod\n    async def update_model_online(cls, model_id: int, online: bool) -> LLMModelInfo:\n        \"\"\" Update whether the model is online \"\"\"\n        exist_model = await LLMDao.aget_model_by_id(model_id)\n        if not exist_model:\n            raise NotFoundError.http_exception()\n        exist_model.online = online\n        await LLMDao.aupdate_model_online(exist_model.id, online)\n        return LLMModelInfo(**exist_model.model_dump())\n\n    @classmethod\n    def get_knowledge_llm(cls) -> KnowledgeLLMConfig:\n        \"\"\" Get the default model configuration for the knowledge base \"\"\"\n        ret = {}\n        config = ConfigDao.get_config(ConfigKeyEnum.KNOWLEDGE_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return KnowledgeLLMConfig(**ret)\n\n    @classmethod\n    async def aget_knowledge_llm(cls) -> KnowledgeLLMConfig:\n        \"\"\" Get the default model configuration for the knowledge base \"\"\"\n        ret = {}\n        config = await ConfigDao.aget_config(ConfigKeyEnum.KNOWLEDGE_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return KnowledgeLLMConfig(**ret)\n\n    @classmethod\n    def get_knowledge_source_llm(cls, invoke_user_id: int) -> Optional[BaseChatModel]:\n        \"\"\" Get the default model configuration for Knowledge Base Traceability \"\"\"\n        knowledge_llm = cls.get_knowledge_llm()\n        # If no model is configured, usejieba\n        if not knowledge_llm.source_model_id:\n            return None\n        return cls.get_bisheng_llm_sync(model_id=knowledge_llm.source_model_id,\n                                        app_id=ApplicationTypeEnum.RAG_TRACEABILITY.value,\n                                        app_name=ApplicationTypeEnum.RAG_TRACEABILITY.value,\n                                        app_type=ApplicationTypeEnum.RAG_TRACEABILITY,\n                                        user_id=invoke_user_id)\n\n    @classmethod\n    async def get_knowledge_source_llm_async(cls, invoke_user_id: int) -> Optional[BaseChatModel]:\n        \"\"\" Get the default model configuration for Knowledge Base Traceability \"\"\"\n        knowledge_llm = await cls.aget_knowledge_llm()\n        # If no model is configured, usejieba\n        if not knowledge_llm.source_model_id:\n            return None\n        return await cls.get_bisheng_llm(model_id=knowledge_llm.source_model_id,\n                                        app_id=ApplicationTypeEnum.RAG_TRACEABILITY.value,\n                                        app_name=ApplicationTypeEnum.RAG_TRACEABILITY.value,\n                                        app_type=ApplicationTypeEnum.RAG_TRACEABILITY,\n                                        user_id=invoke_user_id)\n\n    @classmethod\n    def get_knowledge_similar_llm(cls, invoke_user_id: int) -> Optional[BaseChatModel]:\n        \"\"\" Get the default model configuration for knowledge base similar questions \"\"\"\n        knowledge_llm = cls.get_knowledge_llm()\n        # If no model is configured, usejieba\n        if not knowledge_llm.qa_similar_model_id:\n            return None\n        return cls.get_bisheng_llm_sync(model_id=knowledge_llm.qa_similar_model_id,\n                                        app_id=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                        app_name=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                        app_type=ApplicationTypeEnum.KNOWLEDGE_BASE,\n                                        user_id=invoke_user_id)\n\n    @classmethod\n    def get_knowledge_default_embedding(cls, invoke_user_id: int) -> Optional[Embeddings]:\n        \"\"\" Get Knowledge Base DefaultsembeddingModels \"\"\"\n        knowledge_llm = cls.get_knowledge_llm()\n        if not knowledge_llm.embedding_model_id:\n            return None\n        return cls.get_bisheng_knowledge_embedding_sync(model_id=knowledge_llm.embedding_model_id,\n                                                        invoke_user_id=invoke_user_id)\n\n    @classmethod\n    async def _base_update_llm_config(cls, data: Dict, key: ConfigKeyEnum) -> Dict:\n        config = await ConfigDao.aget_config(key)\n        if config:\n            config.value = json.dumps(data)\n        else:\n            config = Config(key=key.value, value=json.dumps(data, ensure_ascii=False))\n        await ConfigDao.async_insert_config(config)\n        return data\n\n    @classmethod\n    async def update_knowledge_llm(cls, data: KnowledgeLLMConfig) \\\n            -> KnowledgeLLMConfig:\n        \"\"\" Update default model configuration for knowledge base \"\"\"\n        await cls._base_update_llm_config(data=data.model_dump(), key=ConfigKeyEnum.KNOWLEDGE_LLM)\n        return data\n\n    @classmethod\n    async def get_assistant_llm(cls) -> AssistantLLMConfig:\n        \"\"\" Get the default model configuration related to the assistant \"\"\"\n        ret = {}\n        config = ConfigDao.get_config(ConfigKeyEnum.ASSISTANT_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return AssistantLLMConfig(**ret)\n\n    @classmethod\n    def sync_get_assistant_llm(cls) -> AssistantLLMConfig:\n        \"\"\" Get the default model configuration related to the assistant \"\"\"\n        ret = {}\n        config = ConfigDao.get_config(ConfigKeyEnum.ASSISTANT_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return AssistantLLMConfig(**ret)\n\n    @classmethod\n    async def update_assistant_llm(cls, data: AssistantLLMConfig) \\\n            -> AssistantLLMConfig:\n        \"\"\" Update default model configurations related to the assistant \"\"\"\n        await cls._base_update_llm_config(data=data.model_dump(), key=ConfigKeyEnum.ASSISTANT_LLM)\n        return data\n\n    @classmethod\n    async def get_evaluation_llm(cls) -> EvaluationLLMConfig:\n        \"\"\" Get the default model configuration for the evaluation feature \"\"\"\n        ret = {}\n        config = await ConfigDao.aget_config(ConfigKeyEnum.EVALUATION_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return EvaluationLLMConfig(**ret)\n\n    @classmethod\n    def sync_get_evaluation_llm(cls) -> EvaluationLLMConfig:\n        \"\"\" Get the default model configuration for the evaluation feature \"\"\"\n        ret = {}\n        config = ConfigDao.get_config(ConfigKeyEnum.EVALUATION_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return EvaluationLLMConfig(**ret)\n\n    @classmethod\n    async def get_evaluation_llm_object(cls, invoke_user_id: int) -> BaseChatModel:\n        evaluation_llm = await cls.get_evaluation_llm()\n        if not evaluation_llm.model_id:\n            raise Exception('Evaluation model is not configured')\n        return await cls.get_bisheng_llm(model_id=evaluation_llm.model_id,\n                                         app_id=ApplicationTypeEnum.EVALUATION.value,\n                                         app_name=ApplicationTypeEnum.EVALUATION.value,\n                                         app_type=ApplicationTypeEnum.EVALUATION,\n                                         user_id=invoke_user_id)\n\n    @classmethod\n    async def get_bisheng_llm(cls, **kwargs) -> BaseChatModel:\n        \"\"\" Initialize LiftedllmConversation Model \"\"\"\n        return await BishengLLM.get_bisheng_llm(**kwargs)\n\n    @classmethod\n    def get_bisheng_llm_sync(cls, **kwargs) -> BaseChatModel:\n        \"\"\" Initialize LiftedllmConversation Model \"\"\"\n        return BishengLLM(**kwargs)\n\n    @classmethod\n    async def get_bisheng_linsight_llm(cls, invoke_user_id: int, **kwargs) -> BaseChatModel:\n        return await BishengLLM.get_bisheng_llm(app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                                app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                                app_type=ApplicationTypeEnum.LINSIGHT,\n                                                user_id=invoke_user_id,\n                                                **kwargs)\n\n    @classmethod\n    async def get_bisheng_rerank(cls, **kwargs) -> BaseDocumentCompressor:\n        return await BishengRerank.get_bisheng_rerank(**kwargs)\n\n    @classmethod\n    def get_bisheng_rerank_sync(cls, **kwargs) -> BaseDocumentCompressor:\n        return BishengRerank(**kwargs)\n\n    @classmethod\n    async def get_bisheng_embedding(cls, **kwargs) -> Embeddings:\n        \"\"\" Initialize LiftedembeddingModels \"\"\"\n        return await BishengEmbedding.get_bisheng_embedding(**kwargs)\n\n    @classmethod\n    def get_bisheng_embedding_sync(cls, **kwargs) -> Embeddings:\n        \"\"\" Initialize LiftedembeddingModels \"\"\"\n        return BishengEmbedding(**kwargs)\n\n    @classmethod\n    async def get_bisheng_daily_embedding(cls, invoke_user_id: int, model_id: int) -> Embeddings:\n        \"\"\" Get dailyembeddingModels \"\"\"\n        return await cls.get_bisheng_embedding(model_id=model_id,\n                                               app_id=ApplicationTypeEnum.DAILY_CHAT.value,\n                                               app_name=ApplicationTypeEnum.DAILY_CHAT.value,\n                                               app_type=ApplicationTypeEnum.DAILY_CHAT,\n                                               user_id=invoke_user_id)\n\n    @classmethod\n    async def get_bisheng_linsight_embedding(cls, invoke_user_id: int, model_id: int) -> Embeddings:\n        \"\"\" Get Ideas DefaultembeddingModels \"\"\"\n        return await cls.get_bisheng_embedding(model_id=model_id,\n                                               app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                               app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                               app_type=ApplicationTypeEnum.LINSIGHT,\n                                               user_id=invoke_user_id)\n\n    @classmethod\n    async def get_bisheng_knowledge_embedding(cls, invoke_user_id: int, model_id: int) -> Embeddings:\n        \"\"\" Get Knowledge Base DefaultsembeddingModels \"\"\"\n        return await cls.get_bisheng_embedding(model_id=model_id,\n                                               app_id=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                               app_name=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                               app_type=ApplicationTypeEnum.KNOWLEDGE_BASE,\n                                               user_id=invoke_user_id)\n\n    @classmethod\n    def get_bisheng_knowledge_embedding_sync(cls, invoke_user_id: int, model_id: int) -> Embeddings:\n        \"\"\" Get Knowledge Base DefaultsembeddingModels \"\"\"\n        return cls.get_bisheng_embedding_sync(model_id=model_id,\n                                              app_id=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                              app_name=ApplicationTypeEnum.KNOWLEDGE_BASE.value,\n                                              app_type=ApplicationTypeEnum.KNOWLEDGE_BASE,\n                                              user_id=invoke_user_id)\n\n    @classmethod\n    async def get_bisheng_asr(cls, **kwargs) -> BishengASR:\n        \"\"\" Initialize LiftedasrModels \"\"\"\n        return await BishengASR.get_bisheng_asr(**kwargs)\n\n    @classmethod\n    async def get_bisheng_tts(cls, **kwargs) -> BishengTTS:\n        \"\"\" Initialize LiftedttsModels \"\"\"\n        return await BishengTTS.get_bisheng_tts(**kwargs)\n\n    @classmethod\n    async def update_evaluation_llm(cls, data: EvaluationLLMConfig) \\\n            -> EvaluationLLMConfig:\n        \"\"\" Update default model configuration for review feature \"\"\"\n        await cls._base_update_llm_config(data=data.model_dump(), key=ConfigKeyEnum.EVALUATION_LLM)\n        return data\n\n    @classmethod\n    async def update_workflow_llm(cls, data: EvaluationLLMConfig) -> EvaluationLLMConfig:\n        \"\"\" Update workflow Default Model Configuration for \"\"\"\n        await cls._base_update_llm_config(data=data.model_dump(), key=ConfigKeyEnum.WORKFLOW_LLM)\n        return data\n\n    @classmethod\n    async def get_workflow_llm(cls) -> EvaluationLLMConfig:\n        \"\"\" Get the default model configuration for the evaluation feature \"\"\"\n        ret = {}\n        config = await ConfigDao.aget_config(ConfigKeyEnum.WORKFLOW_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return EvaluationLLMConfig(**ret)\n\n    @classmethod\n    async def get_assistant_llm_list(cls, request: Request, login_user: UserPayload) -> List[LLMServerInfo]:\n        \"\"\" Get a list of optional models for the assistant \"\"\"\n        assistant_llm = await cls.get_assistant_llm()\n        if not assistant_llm.llm_list:\n            return []\n        model_list = await LLMDao.aget_model_by_ids([one.model_id for one in assistant_llm.llm_list])\n        if not model_list:\n            return []\n\n        default_llm = next(filter(lambda x: x.default, assistant_llm.llm_list), None)\n        if not default_llm:\n            default_llm = assistant_llm.llm_list[0]\n        model_dict = {}\n        default_server = None\n        for one in model_list:\n            if one.server_id not in model_dict:\n                model_dict[one.server_id] = []\n            if one.id == default_llm.model_id:\n                default_server = one.server_id\n                model_dict[one.server_id].insert(0, LLMModelInfo(**one.model_dump(exclude={'config'})))\n                continue\n            model_dict[one.server_id].append(LLMModelInfo(**one.model_dump(exclude={'config'})))\n        server_list = await LLMDao.aget_server_by_ids(list(model_dict.keys()))\n\n        ret = []\n        for one in server_list:\n            if one.id == default_server:\n                ret.insert(0, LLMServerInfo(**one.model_dump(exclude={'config'}), models=model_dict[one.id]))\n                continue\n            ret.append(LLMServerInfo(**one.model_dump(exclude={'config'}), models=model_dict[one.id]))\n\n        return ret\n\n    @classmethod\n    async def update_workbench_llm(cls, invoke_user_id: int, config_obj: WorkbenchModelConfig,\n                                   background_tasks: BackgroundTasks):\n        \"\"\"\n        Update Invisible Model Configuration\n        :param invoke_user_id:\n        :param config_obj:\n        :param background_tasks:\n        :return:\n        \"\"\"\n        # Delay imports to avoid looping imports\n        from bisheng.worker.knowledge.rebuild_knowledge_worker import rebuild_knowledge_celery\n\n        config = await ConfigDao.aget_config(ConfigKeyEnum.LINSIGHT_LLM)\n        if not config:\n            config = Config(key=ConfigKeyEnum.LINSIGHT_LLM.value, value='{}')\n\n        if config_obj.embedding_model:\n            # Determine consistency\n            config_old_obj = WorkbenchModelConfig(**json.loads(config.value)) if config else WorkbenchModelConfig()\n            if (config_obj.embedding_model.id and config_old_obj.embedding_model is None or\n                    config_obj.embedding_model.id != config_old_obj.embedding_model.id):\n                embeddings = await cls.get_bisheng_embedding(model_id=config_obj.embedding_model.id,\n                                                             app_id=ApplicationTypeEnum.LINSIGHT.value,\n                                                             app_name=ApplicationTypeEnum.LINSIGHT.value,\n                                                             app_type=ApplicationTypeEnum.LINSIGHT,\n                                                             user_id=invoke_user_id)\n                try:\n                    await embeddings.aembed_query(\"test\")\n                except Exception as e:\n                    raise Exception(f\"EmbeddingModel initialization failed: {str(e)}\")\n                from bisheng.linsight.domain.services.sop_manage import SOPManageService\n\n                background_tasks.add_task(SOPManageService.rebuild_sop_vector_store_task, embeddings)\n\n                # Update Personal Knowledge Base\n                # 1.Upgrading alltypeare2(Private Repository)right of privacyknowledgeStatus and Model\n                private_knowledges = await KnowledgeDao.aget_all_knowledge(\n                    knowledge_type=KnowledgeTypeEnum.PRIVATE\n                )\n\n                updated_count = 0\n                for knowledge in private_knowledges:\n                    # Update status is rebuilding, model is newmodel_id\n                    knowledge.state = KnowledgeState.REBUILDING.value\n                    knowledge.model = config_obj.embedding_model.id\n                    await KnowledgeDao.aupdate_one(knowledge)\n                    updated_count += 1\n\n                    # 3. For eachknowledgeStart asynchronous task\n                    rebuild_knowledge_celery.delay(knowledge.id, int(knowledge.model), invoke_user_id)\n                    logger.info(\n                        f\"Started rebuild task for knowledge_id={knowledge.id} with model_id={knowledge.model}\")\n\n                logger.info(\n                    f\"Updated {updated_count} private knowledge bases to use new embedding model {config_obj.embedding_model.id}\")\n\n        config.value = json.dumps(config_obj.model_dump(), ensure_ascii=False)\n\n        await ConfigDao.async_insert_config(config)\n\n        return config_obj\n\n    @classmethod\n    async def get_workbench_llm(cls) -> WorkbenchModelConfig:\n        \"\"\"\n        Get Workbench Model Configuration\n        :return:\n        \"\"\"\n        ret = {}\n        config = await ConfigDao.aget_config(ConfigKeyEnum.LINSIGHT_LLM)\n        if config:\n            ret = json.loads(config.value)\n        return WorkbenchModelConfig(**ret)\n\n    @classmethod\n    async def invoke_workbench_asr(cls, login_user: UserPayload, file: UploadFile) -> str:\n        \"\"\" Call the workbench'sasrModels Convert Voice to Text \"\"\"\n        if not file:\n            raise ServerError.http_exception(\"no file upload\")\n        workbench_llm = await cls.get_workbench_llm()\n        if not workbench_llm.asr_model or not workbench_llm.asr_model.id:\n            raise NoAsrModelConfigError.http_exception()\n        model_info = await LLMDao.aget_model_by_id(int(workbench_llm.asr_model.id))\n        if not model_info:\n            raise AsrModelConfigDeletedError.http_exception()\n        asr_client = await cls.get_bisheng_asr(model_id=int(workbench_llm.asr_model.id),\n                                               app_id=ApplicationTypeEnum.ASR.value,\n                                               app_name=ApplicationTypeEnum.ASR.value,\n                                               app_type=ApplicationTypeEnum.ASR,\n                                               user_id=login_user.user_id)\n        return await asr_client.ainvoke(file.file)\n\n    @classmethod\n    async def invoke_workbench_tts(cls, login_user: UserPayload, text: str) -> str:\n        \"\"\"\n        Call the workbench'sttsModels Convert text to speech\n        :return: minioPath to\n        \"\"\"\n\n        workbench_llm = await cls.get_workbench_llm()\n\n        redis_client = await get_redis_client()\n\n        if not workbench_llm.tts_model or not workbench_llm.tts_model.id:\n            raise NoTtsModelConfigError.http_exception()\n        model_info = await LLMDao.aget_model_by_id(model_id=int(workbench_llm.tts_model.id))\n        if not model_info:\n            raise TtsModelConfigDeletedError.http_exception()\n\n        # get from cache\n        voice = model_info.config.get(\"voice\", \"default\") if model_info.config else \"default\"\n        cache_key = f\"workbench_tts:{model_info.id}:{voice}:{md5_hash(text)}\"\n        cache_value = await redis_client.aget(cache_key)\n        if cache_value:\n            return cache_value\n\n        tts_client = await cls.get_bisheng_tts(model_id=int(workbench_llm.tts_model.id),\n                                               app_id=ApplicationTypeEnum.TTS.value,\n                                               app_name=ApplicationTypeEnum.TTS.value,\n                                               app_type=ApplicationTypeEnum.TTS,\n                                               user_id=login_user.user_id)\n        audio_bytes = await tts_client.ainvoke(text)\n        # upload to minio\n        object_name = f\"tts/{generate_uuid()}.mp3\"\n\n        minio_client = await get_minio_storage()\n        await minio_client.put_object(object_name=object_name, file=audio_bytes, content_type=\"audio/mpeg\",\n                                      bucket_name=minio_client.tmp_bucket)\n        cache_value = await minio_client.get_share_link(object_name, bucket=minio_client.tmp_bucket)\n        # The tmp bucket automatically clears files older than 7 days, so set the expiration time to 6 days\n        await redis_client.aset(cache_key, cache_value, expiration=6 * 24 * 3600)\n        return cache_value\n"
  },
  {
    "path": "src/backend/bisheng/llm/domain/utils.py",
    "content": "import functools\nimport time\nfrom datetime import datetime\nfrom typing import Any, Dict, Optional, Union\nfrom uuid import UUID\n\nfrom langchain_core.callbacks import BaseCallbackHandler\nfrom langchain_core.outputs import ChatResult, GenerationChunk, ChatGenerationChunk\nfrom loguru import logger\n\nfrom bisheng.common.constants.enums.telemetry import StatusEnum, BaseTelemetryTypeEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import ModelInvokeEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.cache.redis_manager import get_redis_client, get_redis_client_sync\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.llm.domain.const import LLMModelStatus\n\n\nasync def bisheng_model_limit_check(self: 'BishengBase'):\n    now = datetime.now().strftime(\"%Y-%m-%d\")\n    if self.server_info.limit_flag:\n        # Number of calls checked\n        cache_key = f\"model_limit:{now}:{self.server_info.id}\"\n        redis_client = await get_redis_client()\n        use_num = await redis_client.aincr(cache_key)\n        if use_num > self.server_info.limit:\n            raise Exception(f'{self.server_info.name}/{self.model_info.model_name} Quota used up')\n\n\ndef sync_bisheng_model_limit_check(self: 'BishengBase'):\n    now = datetime.now().strftime(\"%Y-%m-%d\")\n    if self.server_info.limit_flag:\n        # Number of calls checked\n        cache_key = f\"model_limit:{now}:{self.server_info.id}\"\n        use_num = get_redis_client_sync().incr(cache_key)\n        if use_num > self.server_info.limit:\n            raise Exception(f'{self.server_info.name}/{self.model_info.model_name} Quota used up')\n\n\ndef get_token_from_usage(token_usage: Dict[str, Any]) -> tuple[int, int, int, int]:\n    \"\"\"\n    FROMtoken_usageGet in DictionarytokenUsage\n    \"\"\"\n    input_token = token_usage.get('input_tokens', 0) or token_usage.get('prompt_tokens', 0)\n    output_token = token_usage.get('output_tokens', 0) or token_usage.get('completion_tokens', 0)\n    cache_token = token_usage.get('cached_token', 0) or token_usage.get(\"prompt_tokens_details\", {}).get(\n        'cached_tokens', 0) or token_usage.get('input_tokens_details', {}).get('cache_read', 0)\n    total_token = token_usage.get('total_tokens', 0)\n    return input_token, output_token, cache_token, total_token\n\n\ndef parse_token_usage(result: Any) -> tuple[int, int, int, int]:\n    \"\"\"\n    analyzingtokenUsage\n    \"\"\"\n    input_token, output_token, cache_token, total_token = 0, 0, 0, 0\n    if isinstance(result, ChatResult):\n        for generation in result.generations:\n            token_usage = generation.generation_info.get('token_usage', {}) or generation.message.response_metadata.get(\n                'token_usage', {}) or generation.message.usage_metadata\n            tmp1, tmp2, tmp3, tmp4 = get_token_from_usage(token_usage)\n            input_token += tmp1\n            output_token += tmp2\n            cache_token += tmp3\n            total_token += tmp4\n    elif isinstance(result, ChatGenerationChunk):\n        token_usage = result.message.response_metadata.get('token_usage', {}) or result.generation_info.get(\n            'token_usage', {}) or result.message.usage_metadata\n        input_token, output_token, cache_token, total_token = get_token_from_usage(token_usage)\n    else:\n        logger.warning(f'unknown result type: {type(result)}')\n    return input_token, output_token, cache_token, total_token\n\n\nclass TelemetryCallback(BaseCallbackHandler):\n    \"\"\"\n    Telemetry Slider Callbacks\n    \"\"\"\n\n    def __init__(self, start_time: float):\n        self.start_time = start_time\n        self.first_token_time: Optional[int] = 0\n\n    def on_llm_new_token(\n            self,\n            token: str,\n            *,\n            chunk: Optional[Union[GenerationChunk, ChatGenerationChunk]] = None,\n            run_id: UUID,\n            parent_run_id: Optional[UUID] = None,\n            **kwargs: Any,\n    ) -> Any:\n        if not self.first_token_time:\n            self.first_token_time = int((time.time() - self.start_time) * 1000)\n\n\ndef upload_telemetry_log(self: 'BishengBase', start_time: float, end_time: float, first_token_cost_time: int,\n                         status: StatusEnum, is_stream: bool = False, result: Any = None):\n    \"\"\"\n    Upload Buried Point Log\n    \"\"\"\n    try:\n        logger.debug(\"start upload model invoke telemetry log\")\n        input_token, output_token, cache_token, total_token = 0, 0, 0, 0\n        if self.model_info.model_type in ['llm']:\n            try:\n                input_token, output_token, cache_token, total_token = parse_token_usage(result)\n            except Exception as e:\n                logger.warning(f\"parse token usage failed: {e}\")\n\n        telemetry_service.log_event_sync(user_id=self.user_id, event_type=BaseTelemetryTypeEnum.MODEL_INVOKE,\n                                         trace_id=trace_id_var.get(),\n                                         event_data=ModelInvokeEventData(\n                                             model_id=self.model_id,\n                                             model_name=self.model_name,\n                                             model_type=self.model_info.model_type,\n                                             model_server_id=self.server_info.id,\n                                             model_server_name=self.server_info.name,\n\n                                             app_id=self.app_id,\n                                             app_name=self.app_name,\n                                             app_type=self.app_type,\n\n                                             start_time=int(start_time),\n                                             end_time=int(end_time),\n                                             first_token_cost_time=first_token_cost_time,\n\n                                             status=status,\n                                             is_stream=is_stream,\n                                             input_token=input_token,\n                                             output_token=output_token,\n                                             cache_token=cache_token,\n                                             total_token=total_token,\n                                         ))\n\n        logger.debug(\"end upload model invoke telemetry log\")\n    except Exception as e:\n        logger.exception(f\"upload telemetry log failed\")\n\n\ndef wrapper_bisheng_model_limit_check(func):\n    \"\"\"\n    Number of calls to check the decorator\n    \"\"\"\n\n    @functools.wraps(func)\n    def wrapper(*args, **kwargs):\n        self = args[0]\n        sync_bisheng_model_limit_check(self)\n        status = LLMModelStatus.NORMAL.value\n        remark = \"\"\n        start_time = time.time()\n        result = None\n        telemetry_status = StatusEnum.SUCCESS\n        telemetry_callback = None\n        try:\n            if self.model_info.model_type == 'llm':\n                telemetry_callback = TelemetryCallback(start_time=start_time)\n                if kwargs.get('run_manager') is not None:\n                    kwargs['run_manager'].handlers.append(telemetry_callback)\n            result = func(*args, **kwargs)\n\n            return result\n        except Exception as e:\n            status = LLMModelStatus.ERROR.value\n            remark = str(e)\n            telemetry_status = StatusEnum.FAILED\n            raise e\n        finally:\n            end_time = time.time()\n            # Avoid blocking the main thread by uploading logs asynchronously using the thread pool\n            first_token_cost_time = telemetry_callback.first_token_time if telemetry_callback else 0\n            upload_telemetry_log(self, start_time, end_time, first_token_cost_time, telemetry_status, result=result)\n            self.sync_update_model_status(status, remark)\n\n    return wrapper\n\n\ndef wrapper_bisheng_model_limit_check_async(func):\n    \"\"\"\n    Number of calls to check the decorator\n    \"\"\"\n\n    @functools.wraps(func)\n    async def wrapper(*args, **kwargs):\n        self = args[0]\n        await bisheng_model_limit_check(self)\n        status = LLMModelStatus.NORMAL.value\n        remark = \"\"\n        start_time = time.time()\n        telemetry_status = StatusEnum.SUCCESS\n        result = None\n        telemetry_callback = None\n        try:\n            if self.model_info.model_type == 'llm':\n                telemetry_callback = TelemetryCallback(start_time=start_time)\n                if kwargs.get('run_manager') is not None:\n                    kwargs['run_manager'].handlers.append(telemetry_callback)\n            result = await func(*args, **kwargs)\n            return result\n        except Exception as e:\n            status = LLMModelStatus.ERROR.value\n            remark = str(e)\n            telemetry_status = StatusEnum.FAILED\n            raise e\n        finally:\n            end_time = time.time()\n            first_token_cost_time = telemetry_callback.first_token_time if telemetry_callback else 0\n            upload_telemetry_log(self, start_time, end_time, first_token_cost_time, telemetry_status, result=result)\n            await args[0].update_model_status(status, remark)\n\n    return wrapper\n\n\ndef wrapper_bisheng_model_generator(func):\n    \"\"\"\n    Number of calls to check the decorator  Decorative Synchronization Builder Functions\n    \"\"\"\n\n    @functools.wraps(func)\n    def wrapper(*args, **kwargs):\n        self = args[0]\n        sync_bisheng_model_limit_check(self)\n\n        status = LLMModelStatus.NORMAL.value\n        remark = \"\"\n        start_time = time.time()\n        first_token_cost_time = 0\n        telemetry_status = StatusEnum.SUCCESS\n        item = None\n        try:\n            for item in func(*args, **kwargs):\n                yield item\n                if first_token_cost_time == 0:\n                    first_token_cost_time = int((time.time() - start_time) * 1000)\n        except Exception as e:\n            status = LLMModelStatus.ERROR.value\n            remark = str(e)\n            telemetry_status = StatusEnum.FAILED\n            raise e\n        finally:\n            end_time = time.time()\n            upload_telemetry_log(self, start_time, end_time, first_token_cost_time, telemetry_status, True, result=item)\n            self.sync_update_model_status(status, remark)\n\n    return wrapper\n\n\ndef wrapper_bisheng_model_generator_async(func):\n    \"\"\"\n    Number of calls to check the decorator  Decorative Asynchronous Builder Functions\n    \"\"\"\n\n    @functools.wraps(func)\n    async def wrapper(*args, **kwargs):\n        self = args[0]\n        await bisheng_model_limit_check(self)\n        status = LLMModelStatus.NORMAL.value\n        remark = \"\"\n        start_time = time.time()\n        first_token_cost_time = 0\n        telemetry_status = StatusEnum.SUCCESS\n        item = None\n        try:\n            async for item in func(*args, **kwargs):\n                yield item\n                if first_token_cost_time == 0:\n                    first_token_cost_time = int((time.time() - start_time) * 1000)\n        except Exception as e:\n            status = LLMModelStatus.ERROR.value\n            remark = str(e)\n            telemetry_status = StatusEnum.FAILED\n            raise e\n        finally:\n            end_time = time.time()\n            upload_telemetry_log(self, start_time, end_time, first_token_cost_time, telemetry_status, True, result=item)\n            await self.update_model_status(status, remark)\n\n    return wrapper\n"
  },
  {
    "path": "src/backend/bisheng/main.py",
    "content": "from contextlib import asynccontextmanager\n\nfrom fastapi import FastAPI, HTTPException, Request, status\nfrom fastapi.exceptions import RequestValidationError\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.responses import JSONResponse, ORJSONResponse\nfrom loguru import logger\n\nfrom bisheng.api import router, router_rpc\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.exceptions.auth import AuthJWTException\nfrom bisheng.common.init_data import init_default_data\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.context import initialize_app_context, close_app_context\nfrom bisheng.core.logger import set_logger_config\nfrom bisheng.services.utils import initialize_services, teardown_services\nfrom bisheng.utils.http_middleware import CustomMiddleware, WebSocketLoggingMiddleware\nfrom bisheng.utils.threadpool import thread_pool\n\n\ndef handle_http_exception(req: Request, exc: Exception) -> ORJSONResponse:\n    if isinstance(exc, HTTPException):\n        msg = {\n            'status_code': exc.status_code,\n            'status_message': exc.detail['error'] if isinstance(exc.detail, dict) else exc.detail\n        }\n    elif isinstance(exc, BaseErrorCode):\n        data = {'exception': str(exc), **exc.kwargs} if exc.kwargs else {'exception': str(exc)}\n        msg = {'status_code': exc.code, 'status_message': exc.message,\n               'data': data}\n    else:\n        logger.exception('Unhandled exception')\n        msg = {'status_code': 500, 'status_message': str(exc)}\n    logger.error(f'{req.method} {req.url} {str(exc)}')\n    return ORJSONResponse(content=msg)\n\n\ndef handle_request_validation_error(req: Request, exc: RequestValidationError) -> ORJSONResponse:\n    msg = {'status_code': status.HTTP_422_UNPROCESSABLE_ENTITY, 'status_message': exc.errors()}\n    logger.error(f'{req.method} {req.url} {str(exc.errors())[:100]}')\n    return ORJSONResponse(content=msg)\n\n\n_EXCEPTION_HANDLERS = {\n    HTTPException: handle_http_exception,\n    RequestValidationError: handle_request_validation_error,\n    BaseErrorCode: handle_http_exception,\n    Exception: handle_http_exception\n}\n\n\n@asynccontextmanager\nasync def lifespan(app: FastAPI):\n    await initialize_app_context(config=settings)\n    initialize_services()\n    await init_default_data()\n    # LangfuseInstance.update()\n    yield\n    teardown_services()\n    thread_pool.tear_down()\n    await close_app_context()\n\n\ndef create_app():\n    \"\"\"Create the FastAPI app and include the router.\"\"\"\n\n    app = FastAPI(\n        default_response_class=ORJSONResponse,\n        exception_handlers=_EXCEPTION_HANDLERS,\n        lifespan=lifespan,\n    )\n\n    origins = [\n        '*',\n    ]\n\n    @app.get('/health')\n    def get_health():\n        return {'status': 'OK'}\n\n    app.add_middleware(\n        CORSMiddleware,\n        allow_origins=origins,\n        allow_credentials=False,\n        allow_methods=['*'],\n        allow_headers=['*'],\n    )\n\n    app.add_middleware(CustomMiddleware)\n    app.add_middleware(WebSocketLoggingMiddleware)\n\n    @app.exception_handler(AuthJWTException)\n    def authjwt_exception_handler(request: Request, exc: AuthJWTException):\n        return JSONResponse(status_code=401, content={'detail': str(exc)})\n\n    app.include_router(router)\n    app.include_router(router_rpc)\n    if settings.debug:\n        import tracemalloc\n        tracemalloc.start()\n\n    return app\n\n\napp = create_app()\n\nif __name__ == '__main__':\n    import uvicorn\n\n    set_logger_config(settings.logger_conf)\n\n    uvicorn.run(app, host='0.0.0.0', port=7860, workers=1, log_config=None)\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/mcp_manage/clients/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/mcp_manage/clients/base.py",
    "content": "from abc import abstractmethod, ABC\nfrom contextlib import asynccontextmanager\nfrom typing import Any\n\nfrom mcp import ClientSession\n\n\nclass BaseMcpClient(ABC):\n    \"\"\"\n    Base class for MCP clients.\n    \"\"\"\n\n    @abstractmethod\n    async def get_transport(self):\n        raise NotImplementedError(\"get_mcp_client_transport() must be implemented in subclasses.\")\n\n    @asynccontextmanager\n    async def initialize(self):\n        \"\"\"\n        Initialize the client.\n        \"\"\"\n        async with self.get_transport() as (read, write):\n            async with ClientSession(read, write) as session:\n                await session.initialize()\n                yield session\n\n    async def list_tools(self):\n        async with self.initialize() as client_session:\n            tools = await client_session.list_tools()\n        return tools.tools\n\n    async def call_tool(self, name: str, arguments: dict[str, Any] | None = None) -> str:\n        \"\"\"\n        Call a tool.\n        \"\"\"\n        async with self.initialize() as client_session:\n            try:\n                resp = await client_session.call_tool(name, arguments)\n            except Exception as e:\n                return f\"Tool call failed: {str(e)}\"\n        return resp.model_dump_json()\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/clients/sse.py",
    "content": "from contextlib import asynccontextmanager\n\nfrom mcp.client.sse import sse_client\n\nfrom bisheng.mcp_manage.clients.base import BaseMcpClient\n\n\nclass SseClient(BaseMcpClient):\n    \"\"\"\n    SSE client for connecting to the mcp server.\n    \"\"\"\n\n    def __init__(self, url: str, **kwargs):\n        \"\"\"\n        Initialize the SSE client.\n\n        :param url: The URL of the SSE server.\n        \"\"\"\n        super().__init__()\n        self.url = url\n        self.kwargs = kwargs\n\n    @asynccontextmanager\n    async def get_transport(self):\n        \"\"\"\n        Initialize the SSE client.\n        \"\"\"\n        async with sse_client(url=self.url, **self.kwargs) as (read, write):\n            yield read, write\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/clients/stdio.py",
    "content": "from contextlib import asynccontextmanager\n\nfrom mcp.client.stdio import stdio_client, StdioServerParameters\n\nfrom bisheng.mcp_manage.clients.base import BaseMcpClient\n\n\nclass StdioClient(BaseMcpClient):\n    \"\"\"\n    SSE client for connecting to the mcp server.\n    \"\"\"\n\n    def __init__(self, **kwargs: dict):\n        \"\"\"\n        Initialize the SSE client.\n\n        :param url: The URL of the SSE server.\n        \"\"\"\n        super().__init__()\n        self.server_params = StdioServerParameters(**kwargs)\n\n    @asynccontextmanager\n    async def get_transport(self):\n        \"\"\"\n        Initialize the SSE client.\n        \"\"\"\n        async with stdio_client(server=self.server_params) as (read, write):\n            yield read, write\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/clients/streamable.py",
    "content": "from contextlib import asynccontextmanager\n\nfrom mcp.client.streamable_http import streamablehttp_client\n\nfrom bisheng.mcp_manage.clients.base import BaseMcpClient\n\n\nclass StreamableClient(BaseMcpClient):\n    \"\"\"\n    SSE client for connecting to the mcp server.\n    \"\"\"\n\n    def __init__(self, url: str, **kwargs):\n        \"\"\"\n        Initialize the streamable http client.\n\n        :param url: The URL of the streamable server.\n        \"\"\"\n        super().__init__()\n        self.url = url\n        self.kwargs = kwargs\n\n    @asynccontextmanager\n    async def get_transport(self):\n        \"\"\"\n        Initialize the SSE client.\n        \"\"\"\n        async with streamablehttp_client(url=self.url, **self.kwargs) as (read, write, _):\n            yield read, write\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/constant.py",
    "content": "from enum import Enum\n\n\nclass McpClientType(Enum):\n    SSE = 'sse'\n    STDIO = 'stdio'\n    STREAMABLE = 'streamable'\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/langchain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/mcp_manage/langchain/tool.py",
    "content": "import asyncio\nimport concurrent\nimport concurrent.futures\nfrom typing import Any\n\nfrom langchain_core.tools import StructuredTool\nfrom pydantic import BaseModel, ConfigDict\n\nfrom bisheng.mcp_manage.clients.base import BaseMcpClient\nfrom bisheng_langchain.utils.openapi import convert_openapi_field_value\n\n\nclass McpTool(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    name: str\n    description: str\n    mcp_client: BaseMcpClient\n    mcp_tool_name: str\n    arg_schema: dict = {}\n\n    def parse_kwargs_schema(self, kwargs: dict) -> None | dict:\n        \"\"\"convert the kwargs field value\"\"\"\n        if not kwargs:\n            return None\n        for k, v in kwargs.items():\n            k_type = self.arg_schema.get(\"properties\", {}).get(k, {}).get(\"type\")\n            kwargs[k] = convert_openapi_field_value(v, k_type)\n        return kwargs\n\n    def run(self, *args, **kwargs: Any) -> Any:\n        # todo call async method better when using in event pool\n        with concurrent.futures.ThreadPoolExecutor() as pool:\n            future = pool.submit(asyncio.run, self.arun(*args, **kwargs))\n            resp = future.result()\n        return resp\n\n    async def arun(self, *args, **kwargs: Any) -> Any:\n        \"\"\"Use the tool asynchronously.\"\"\"\n        kwargs = self.parse_kwargs_schema(kwargs)\n        resp = await self.mcp_client.call_tool(self.mcp_tool_name, kwargs)\n        return resp\n\n    @classmethod\n    def get_mcp_tool(cls, name: str, description: str, mcp_client: BaseMcpClient,\n                     mcp_tool_name: str, arg_schema: Any, **kwargs) -> StructuredTool:\n        \"\"\"Get a tool from the class.\"\"\"\n        c = cls(name=name, description=description, mcp_client=mcp_client,\n                mcp_tool_name=mcp_tool_name, arg_schema=arg_schema)\n        return StructuredTool(name=c.name,\n                              description=c.description,\n                              func=c.run,\n                              coroutine=c.arun,\n                              args_schema=arg_schema,\n                              **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/mcp_manage/manager.py",
    "content": "import json\n\nfrom bisheng.mcp_manage.clients.base import BaseMcpClient\nfrom bisheng.mcp_manage.clients.sse import SseClient\nfrom bisheng.mcp_manage.clients.stdio import StdioClient\nfrom bisheng.mcp_manage.clients.streamable import StreamableClient\nfrom bisheng.mcp_manage.constant import McpClientType\n\n\nclass ClientManager:\n\n    @classmethod\n    async def connect_mcp_from_json(cls, client_json: dict | str):\n        \"\"\" Get the under the corresponding configurationmcpCONNECT \"\"\"\n        return cls.sync_connect_mcp_from_json(client_json)\n\n    @classmethod\n    def sync_connect_mcp_from_json(cls, client_json: dict | str) -> BaseMcpClient:\n        \"\"\" Get the under the corresponding configurationmcpCONNECT \"\"\"\n        if isinstance(client_json, str):\n            client_json = json.loads(client_json)\n\n        mcp_servers = client_json['mcpServers']\n        client_type = McpClientType.SSE.value\n        client_kwargs = {}\n\n        for _, kwargs in mcp_servers.items():\n            if 'type' in kwargs:\n                client_type = kwargs.pop('type', McpClientType.SSE.value)\n            elif 'command' in kwargs:\n                client_type = McpClientType.STDIO.value\n            kwargs.pop('name', '')\n            kwargs.pop('description', '')\n            client_kwargs = kwargs\n            break\n        return cls.sync_connect_mcp(client_type, **client_kwargs)\n\n    @classmethod\n    async def connect_mcp(cls, client_type: str, **kwargs) -> BaseMcpClient:\n        \"\"\" Get the mappingurlright of privacymcpCONNECT \"\"\"\n        # Initialize the correspondingclient\n        return cls.sync_connect_mcp(client_type, **kwargs)\n\n    @classmethod\n    def sync_connect_mcp(cls, client_type: str, **kwargs) -> BaseMcpClient:\n        # Initialize the correspondingclient\n        if client_type == McpClientType.SSE.value:\n            client = SseClient(**kwargs)\n        elif client_type == McpClientType.STDIO.value:\n            client = StdioClient(**kwargs)\n        elif client_type == McpClientType.STREAMABLE.value:\n            client = StreamableClient(**kwargs)\n        else:\n            raise ValueError(f'client_type {client_type} not supported')\n        return client\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/dependencies.py",
    "content": "from fastapi import Depends\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.dependencies.core_deps import get_db_session\nfrom bisheng.knowledge.domain.repositories.implementations.knowledge_file_repository_impl import \\\n    KnowledgeFileRepositoryImpl\nfrom bisheng.knowledge.domain.repositories.implementations.knowledge_repository_impl import KnowledgeRepositoryImpl\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_file_repository import KnowledgeFileRepository\nfrom bisheng.knowledge.domain.repositories.interfaces.knowledge_repository import KnowledgeRepository\nfrom bisheng.knowledge.domain.services.knowledge_file_service import KnowledgeFileService\nfrom bisheng.knowledge.domain.services.knowledge_service import KnowledgeService\n\n\nasync def get_knowledge_repository(\n        session: AsyncSession = Depends(get_db_session),\n) -> KnowledgeRepository:\n    \"\"\"Dapatkan KnowledgeRepositoryInstance Dependencies\"\"\"\n    return KnowledgeRepositoryImpl(session)\n\n\nasync def get_knowledge_file_repository(\n        session: AsyncSession = Depends(get_db_session),\n) -> 'KnowledgeFileRepository':\n    \"\"\"Dapatkan KnowledgeFileRepositoryInstance Dependencies\"\"\"\n\n    return KnowledgeFileRepositoryImpl(session)\n\n\nasync def get_knowledge_service(\n        knowledge_repository: KnowledgeRepository = Depends(get_knowledge_repository),\n        knowledge_file_repository: KnowledgeFileRepository = Depends(get_knowledge_file_repository),\n) -> 'KnowledgeService':\n    \"\"\"Dapatkan KnowledgeServiceInstance Dependencies\"\"\"\n    return KnowledgeService(knowledge_repository=knowledge_repository,\n                            knowledge_file_repository=knowledge_file_repository)\n\n\nasync def get_knowledge_file_service(\n        knowledge_repository: KnowledgeRepository = Depends(get_knowledge_repository),\n        knowledge_file_repository: KnowledgeFileRepository = Depends(get_knowledge_file_repository),\n) -> 'KnowledgeFileService':\n    \"\"\"Dapatkan KnowledgeFileServiceInstance Dependencies\"\"\"\n    return KnowledgeFileService(\n        knowledge_repository=knowledge_repository,\n        knowledge_file_repository=knowledge_file_repository,\n    )\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/assistant.py",
    "content": "# Login-free assistant related interface\nimport json\nimport time\nfrom typing import Optional\nfrom uuid import UUID\n\nfrom fastapi import APIRouter, HTTPException, Query, Request, WebSocket, WebSocketException\nfrom fastapi import status as http_status\nfrom fastapi.responses import ORJSONResponse, StreamingResponse\nfrom langchain_core.messages import AIMessage, HumanMessage, AIMessageChunk\nfrom loguru import logger\n\nfrom bisheng.api.services.assistant import AssistantService\nfrom bisheng.api.services.assistant_agent import AssistantAgent\nfrom bisheng.api.v1.chat import chat_manager\nfrom bisheng.api.v1.schemas import (OpenAIChatCompletionReq,\n                                    OpenAIChatCompletionResp, OpenAIChoice)\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.schemas.api import resp_200, PageData\nfrom bisheng.common.schemas.telemetry.event_data_schema import ApplicationAliveEventData, ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.open_endpoints.domain.utils import get_default_operator\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils import get_request_ip\n\nrouter = APIRouter(prefix='/assistant', tags=['OpenAPI', 'Assistant'])\n\n\n@router.post('/chat/completions')\nasync def assistant_chat_completions(request: Request, req_data: OpenAIChatCompletionReq):\n    \"\"\"\n    Compatible openaiInterface format, all errors must return non-http200Status code\n    Chat with your assistant\n    \n    Fulfillment needs:\n    1. Determine if the model invoked by the assistant supports streaming calls\n    2. If not, follow the original logic\n    3. If supported andstream=True, with real streaming calls\n    4. stream=False Or return to the original logic?JSON\n    \"\"\"\n    assistant_id = UUID(req_data.model).hex\n    logger.info(\n        f'act=assistant_chat_completions assistant_id={req_data.model}, stream={req_data.stream}, ip={get_request_ip(request)}'\n    )\n    try:\n        # Get the default user information configured in the system configuration\n        login_user = get_default_operator()\n    except Exception as e:\n        return ORJSONResponse(status_code=500, content=str(e), media_type='application/json')\n    # Find Assistant Information\n    try:\n        assistant_info = await AssistantService.get_assistant_info(assistant_id, login_user)\n    except Exception as e:\n        return ORJSONResponse(status_code=500,\n                              content=str(e),\n                              media_type='application/json')\n\n    start_time = time.time()\n    try:\n        # Overlay Temperature Settings\n        if req_data.temperature != 0:\n            assistant_info.temperature = req_data.temperature\n\n        chat_history = []\n        question = ''\n        # Resolve the conversation history and the user's latest questions\n        for one in req_data.messages:\n            if one['role'] == 'user':\n                chat_history.append(HumanMessage(content=one['content']))\n                question = one['content']\n            elif one['role'] == 'assistant':\n                chat_history.append(AIMessage(content=one['content']))\n        # Remove user issue from history\n        if chat_history and chat_history[-1].content == question:\n            chat_history = chat_history[:-1]\n\n        # Initialization Assistantagent\n        agent = AssistantAgent(assistant_info, '', invoke_user_id=login_user.user_id)\n        await agent.init_assistant()\n\n        # Determine if the model supports streaming calls\n        model_supports_streaming = _check_model_supports_streaming(agent)\n\n        logger.debug(\n            f'act=assistant_chat_completions model_supports_streaming={model_supports_streaming}, stream={req_data.stream}, llm_type={type(agent.llm)}')\n        # Streaming is not supported for non-streaming calls or models\n        if not req_data.stream or not model_supports_streaming:\n            answer = await agent.run(question, chat_history)\n            answer = answer[-1].content\n\n            openai_resp_id = generate_uuid()\n\n            # Package the results asopenaiData Format\n            openai_resp = OpenAIChatCompletionResp(\n                id=openai_resp_id,\n                object='chat.completion',\n                created=int(time.time()),\n                model=req_data.model,\n                choices=[OpenAIChoice(index=0, message={\n                    'role': 'assistant',\n                    'content': answer\n                })],\n            )\n\n            # Non-streaming direct return results\n            if not req_data.stream:\n                return openai_resp\n\n            # The user requests streaming but the model does not support it, use pseudo-streaming to return\n            openai_resp.object = 'chat.completion.chunk'\n            openai_resp.choices = [OpenAIChoice(index=0, delta={'content': answer})]\n\n            async def _pseudo_event_stream():\n                yield f'data: {openai_resp.json()}\\n\\n'\n                yield 'data: [DONE]\\n\\n'\n\n            return StreamingResponse(_pseudo_event_stream(), media_type='text/event-stream')\n\n        # Model supports streaming and user-requested streaming, using real streaming calls\n        openai_resp_id = generate_uuid()\n        logger.info(f'act=assistant_chat_completions_streaming openai_resp_id={openai_resp_id}')\n\n        async def _streaming_event_generator():\n            \"\"\"Real Streaming Event Generator\"\"\"\n            logger.debug(f'[APIStreamed] _streaming_event_generatorto process')\n            try:\n\n                # Use True Streaming Calls\n                chunk_counter = 0\n                try:\n                    async for message_chunk in agent.astream(question, chat_history):\n                        chunk_counter += 1\n\n                        if not message_chunk:\n                            logger.debug(f'Empty message_chunk received')\n                            continue\n                        # Get the latest news\n                        latest_message = message_chunk[-1] if isinstance(message_chunk, list) else message_chunk\n                        if not isinstance(latest_message, AIMessageChunk):\n                            continue\n                        reasoning_content = latest_message.additional_kwargs.get(\"reasoning_content\", \"\")\n                        content = latest_message.content\n\n                        chunk_data = {\n                            \"id\": openai_resp_id,\n                            \"object\": \"chat.completion.chunk\",\n                            \"created\": int(time.time()),\n                            \"model\": req_data.model,\n                            \"choices\": [{\n                                \"index\": 0,\n                                \"delta\": {\"content\": content, \"reasoning_content\": reasoning_content},\n                                \"finish_reason\": None\n                            }]\n                        }\n                        # Use saferJSONSerialization to avoid transmission truncation\n                        json_str = json.dumps(chunk_data, ensure_ascii=False, separators=(',', ':'))\n                        yield f'data: {json_str}\\n\\n'\n                except Exception as astream_error:\n                    logger.exception('[APIStreamed] agent.astream()Error calling')\n                    raise astream_error\n\n                logger.info(f'[APIStreamed] astreamLoop ended, total processed{chunk_counter}Pcschunk')\n\n                # Send End Signal\n                end_chunk = {\n                    \"id\": openai_resp_id,\n                    \"object\": \"chat.completion.chunk\",\n                    \"created\": int(time.time()),\n                    \"model\": req_data.model,\n                    \"choices\": [{\n                        \"index\": 0,\n                        \"delta\": {},\n                        \"finish_reason\": \"stop\"\n                    }]\n                }\n                yield f'data: {json.dumps(end_chunk, ensure_ascii=False)}\\n\\n'\n                yield 'data: [DONE]\\n\\n'\n\n            except Exception as exc:\n                logger.error(f'Streaming error: {exc}')\n                # Send error message\n                error_chunk = {\n                    \"id\": openai_resp_id,\n                    \"object\": \"chat.completion.chunk\",\n                    \"created\": int(time.time()),\n                    \"model\": req_data.model,\n                    \"choices\": [{\n                        \"index\": 0,\n                        \"delta\": {\"content\": f\"Error-free: {str(exc)}\"},\n                        \"finish_reason\": \"stop\"\n                    }]\n                }\n                yield f'data: {json.dumps(error_chunk, ensure_ascii=False)}\\n\\n'\n                yield 'data: [DONE]\\n\\n'\n\n        try:\n            logger.info(f'[APIStreamed] BuatStreamingResponse, generator function: {_streaming_event_generator}')\n            return StreamingResponse(_streaming_event_generator(),\n                                     media_type='text/event-stream')\n        except Exception as exc:\n            logger.error(f'StreamingResponse creation error: {exc}')\n            return ORJSONResponse(status_code=500, content=str(exc))\n    finally:\n        end_time = time.time()\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=assistant_id,\n                                              app_name=assistant_info.name,\n                                              app_type=ApplicationTypeEnum.ASSISTANT,\n                                              chat_id='',\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)))\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationProcessEventData(\n                                              app_id=assistant_id,\n                                              app_name=assistant_info.name,\n                                              app_type=ApplicationTypeEnum.ASSISTANT,\n                                              chat_id='',\n                                              start_time=int(start_time),\n                                              end_time=int(end_time),\n                                              process_time=int((end_time - start_time) * 1000)\n                                          ))\n\n\ndef _check_model_supports_streaming(agent: AssistantAgent) -> bool:\n    \"\"\"\n    Check whether the model called by the helper supports streaming calls\n    Args:\n        agent: Assistant Proxy Instance\n    Returns:\n        bool: Does it support streaming calls?\n    \"\"\"\n    try:\n        # Othersagentright of privacyLLMDoes it support streaming?\n        if hasattr(agent, 'llm') and agent.llm:\n            # OthersBishengLLMright of privacystreamingProperty\n            if hasattr(agent.llm, 'streaming'):\n                return agent.llm.streaming\n            # Check Bottom Layerllmright of privacystreamProperty\n            elif hasattr(agent.llm, 'llm') and hasattr(agent.llm.llm, 'streaming'):\n                return agent.llm.llm.streaming\n\n        # If it cannot be determined, streaming is supported by default (most modernLLMare supported)\n        return True\n    except Exception as e:\n        logger.warning(f'Failed to check streaming support: {e}')\n        # Streaming is supported by default when an error occurs\n        return True\n\n\n@router.get('/info/{assistant_id}')\nasync def get_assistant_info(request: Request, assistant_id: UUID):\n    \"\"\"\n    Getting Helper Information, Use the system configuration indefault_operator.userUser information to verify permissions\n    \"\"\"\n    assistant_id = assistant_id.hex\n    logger.info(f'act=get_default_operator assistant_id={assistant_id}, ip={get_request_ip(request)}')\n    # Determine if the configuration under is turned on\n    if not settings.get_from_db(\"default_operator\").get(\"enable_guest_access\"):\n        raise HTTPException(status_code=403, detail=\"No permission to access\")\n    login_user = get_default_operator()\n    res = await AssistantService.get_assistant_info(assistant_id, login_user)\n    return resp_200(data=res)\n\n\n@router.get('/list', status_code=200)\ndef get_assistant_list(request: Request,\n                       name: str = Query(default=None, description='assistant name, fuzzy matching, Fuzzy matches with description'),\n                       tag_id: int = Query(default=None, description='labelID'),\n                       page: Optional[int] = Query(default=1, gt=0, description='Page'),\n                       limit: Optional[int] = Query(default=10, gt=0, description='Listings Per Page'),\n                       status: Optional[int] = Query(default=None, description='Is online status'),\n                       user_id: int = None):\n    \"\"\"\n    Exposed interfaces for obtaining skill information\n    \"\"\"\n    logger.info(f'public_get_list ip: {request.client.host} user_id:{user_id}')\n\n    if not settings.get_from_db(\"default_operator\").get(\"enable_guest_access\"):\n        raise HTTPException(status_code=403, detail=\"No permission to access\")\n    login_user = get_default_operator()\n    data, total = AssistantService.get_assistant(login_user, name, status, tag_id, page, limit)\n    return resp_200(PageData(data=data, total=total))\n\n\n@router.websocket('/chat/{assistant_id}')\nasync def chat(*, websocket: WebSocket, assistant_id: str, chat_id: Optional[str] = None):\n    \"\"\"\n    Assistant'swsLogin-Free Interface\n    \"\"\"\n    logger.info(f'act=assistant_chat_ws assistant_id={assistant_id}, ip={get_request_ip(websocket)}')\n    login_user = get_default_operator()\n    try:\n        request = websocket\n        await chat_manager.dispatch_client(request, assistant_id, chat_id, login_user,\n                                           WorkType.GPTS, websocket)\n    except WebSocketException as exc:\n        logger.error(f'Websocket exception: {str(exc)}')\n        await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=str(exc))\n    except Exception as exc:\n        logger.exception(f'Error in chat websocket: {str(exc)}')\n        message = exc.detail if isinstance(exc, HTTPException) else str(exc)\n        if 'Could not validate credentials' in str(exc):\n            await websocket.close(code=http_status.WS_1008_POLICY_VIOLATION, reason='Unauthorized')\n        else:\n            await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=message)\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/chat.py",
    "content": "import json\nfrom typing import List, Optional\nfrom uuid import UUID\n\nfrom fastapi import APIRouter, Body, WebSocket, status\nfrom fastapi.middleware.wsgi import WSGIMiddleware\nfrom loguru import logger\n\na = WSGIMiddleware\n\nfrom bisheng.api.services.chat_imp import comment_answer\nfrom bisheng.api.services.utils import set_flow_knowledge_id\nfrom bisheng.api.v1.schemas import ChatInput, resp_200\nfrom bisheng.chat.manager import ChatManager\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.models.flow import Flow\nfrom bisheng.database.models.message import ChatMessage, ChatMessageDao\nfrom bisheng.open_endpoints.domain.schemas.message import SyncMessage\nfrom bisheng.processing.process import process_tweaks\n\nrouter = APIRouter(prefix='/chat', tags=['OpenAPI', 'Chat'])\nchat_manager = ChatManager()\nexpire = 600  # reids 60s Overdue\n\n\n@router.websocket('/ws/{flow_id}')\nasync def union_websocket(flow_id: str,\n                          websocket: WebSocket,\n                          chat_id: Optional[str] = None,\n                          tweak: Optional[str] = None,\n                          knowledge_id: Optional[int] = None):\n    \"\"\"Websocket endpoint forF  chat.\"\"\"\n    if chat_id:\n        with get_sync_db_session() as session:\n            db_flow = session.get(Flow, flow_id)\n        if not db_flow:\n            await websocket.accept()\n            message = 'This skill has been deleted'\n            await websocket.close(code=status.WS_1008_POLICY_VIOLATION, reason=message)\n        if db_flow.status != 2:\n            await websocket.accept()\n            message = 'The current skill is not online and cannot be spoken to directly'\n            await websocket.close(code=status.WS_1008_POLICY_VIOLATION, reason=message)\n        graph_data = db_flow.data\n\n    try:\n        if tweak:\n            tweak = json.loads(tweak)\n            graph_data = process_tweaks(graph_data, tweak)\n        # vectordatabase update\n        if knowledge_id:\n            set_flow_knowledge_id(graph_data, knowledge_id)\n        await chat_manager.handle_websocket(\n            flow_id,\n            chat_id,\n            websocket,\n            settings.get_from_db('default_operator').get('user'),\n            gragh_data=graph_data,\n            source=\"api\"\n        )\n    except Exception as exc:\n        logger.exception('union_websocket error: ')\n        await websocket.close(code=status.WS_1011_INTERNAL_ERROR, reason=str(exc))\n\n\n# @router.get('/source')\n# async def query_source(message_id: int, session: Session = Depends(get_session)):\n#     \"\"\"source of message_id\"\"\"\n#     db_recall = session.query(RecallChunk).where(RecallChunk.message_id == message_id).all()\n\n\n@router.post('/liked', status_code=200)\ndef like_response(*, data: dict):\n    message_id = data.get('message_id')\n    liked = data.get('liked')\n    with get_sync_db_session() as session:\n        message = session.get(ChatMessage, message_id)\n        message.liked = liked\n        session.add(message)\n        session.commit()\n    return {'status_code': 200, 'status_message': 'success'}\n\n\n@router.post('/solved', status_code=200)\ndef solve_response(*, data: dict):\n    chat_id = data.get('chat_id')\n    solved = data.get('solved')\n    with get_sync_db_session() as session:\n        messages = session.query(ChatMessage).where(ChatMessage.chat_id == chat_id).all()\n    for message in messages:\n        message.solved = solved\n    with get_sync_db_session() as session:\n        session.add(message)\n        session.commit()\n    return {'status_code': 200, 'status_message': 'success'}\n\n\n@router.post('/comment', status_code=200)\ndef comment(*, data: ChatInput):\n    comment_answer(data.message_id, data.comment)\n    return resp_200()\n\n\n@router.post('/sync/messages', status_code=200)\ndef sync_message(*,\n                 flow_id: UUID = Body(embed=True),\n                 chat_id: str = Body(embed=True),\n                 message_list: List[SyncMessage] = Body(embed=True),\n                 user_id: int = Body(default=None, embed=True)):\n    flow_id = flow_id.hex\n    user_id = user_id if user_id else settings.get_from_db('default_operator').get('user')\n\n    batch_message = [\n        ChatMessage(is_bot=message.is_send,\n                    source=0,\n                    message=message.message,\n                    extra=json.dumps(message.extra),\n                    type='answer',\n                    category='answer',\n                    flow_id=flow_id,\n                    user_id=user_id,\n                    chat_id=chat_id,\n                    create_time=message.create_time) for message in message_list\n    ]\n    ChatMessageDao.insert_batch(batch_message)\n    return resp_200()\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/filelib.py",
    "content": "import asyncio\nimport json\nimport os\nfrom typing import Dict, List, Optional\n\nfrom fastapi import (APIRouter, BackgroundTasks, Body, File, Form, HTTPException, Query, Request,\n                     UploadFile)\nfrom loguru import logger\nfrom starlette.responses import FileResponse\n\nfrom bisheng.api.services import knowledge_imp\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.knowledge_imp import (decide_vectorstores, delete_es, delete_vector,\n                                                text_knowledge)\nfrom bisheng.api.v1.schemas import (ChunkInput, KnowledgeFileOne, KnowledgeFileProcess,\n                                    resp_200, resp_500, ExcelRule)\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.errcode.http_error import ServerError\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.utils import file_download, save_download_file, async_file_download\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.message import ChatMessageDao\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.models.knowledge import (KnowledgeCreate, KnowledgeDao, KnowledgeTypeEnum,\n                                                       KnowledgeUpdate)\nfrom bisheng.knowledge.domain.models.knowledge_file import (QAKnoweldgeDao, QAKnowledgeUpsert)\nfrom bisheng.open_endpoints.domain.schemas.filelib import APIAddQAParam, APIAppendQAParam, QueryQAParam\nfrom bisheng.open_endpoints.domain.utils import get_default_operator, get_default_operator_async\nfrom bisheng.utils.util import sync_func_to_async\n\n# build router\nrouter = APIRouter(prefix='/filelib', tags=['OpenAPI', 'Knowledge'])\n\n\n@router.post('/', status_code=201)\ndef create(request: Request, knowledge: KnowledgeCreate):\n    \"\"\"Create Knowledge Base.\"\"\"\n    login_user = get_default_operator()\n    db_knowledge = KnowledgeService.create_knowledge(request, login_user, knowledge)\n    return resp_200(db_knowledge)\n\n\n@router.put('/', status_code=201)\ndef update_knowledge(*, request: Request, knowledge: KnowledgeUpdate):\n    \"\"\" Update Knowledge Base.\"\"\"\n    login_user = get_default_operator()\n    db_knowledge = KnowledgeService.update_knowledge(request, login_user, knowledge)\n    return resp_200(db_knowledge)\n\n\n@router.get('/', status_code=200)\nasync def get_knowledge(*,\n                        request: Request,\n                        knowledge_type: int = Query(default=KnowledgeTypeEnum.NORMAL.value,\n                                                    alias='type'),\n                        name: str = None,\n                        page_size: Optional[int] = 10,\n                        page_num: Optional[int] = 1):\n    \"\"\" Read all knowledge base information. \"\"\"\n    knowledge_type = KnowledgeTypeEnum(knowledge_type)\n    login_user = get_default_operator()\n    res, total = await KnowledgeService.get_knowledge(request, login_user, knowledge_type, name,\n                                                      page_num, page_size)\n    return resp_200(data={'data': res, 'total': total})\n\n\n@router.delete('/{knowledge_id}', status_code=200)\ndef delete_knowledge_api(*, request: Request, knowledge_id: int):\n    \"\"\" Delete Knowledge Base Information. \"\"\"\n    login_user = get_default_operator()\n    KnowledgeService.delete_knowledge(request, login_user, knowledge_id)\n    return resp_200(message='knowledge deleted successfully')\n\n\n# Empty all Knowledge Base file contents\n@router.delete('/clear/{knowledge_id}', status_code=200)\ndef clear_knowledge_files(*, request: Request, knowledge_id: int):\n    \"\"\" Empty Knowledge Base Contents. \"\"\"\n    login_user = get_default_operator()\n    KnowledgeService.delete_knowledge(request, login_user, knowledge_id, only_clear=True)\n    return resp_200(message='knowledge clear successfully')\n\n\n@router.post('/file/{knowledge_id}')\nasync def upload_file(\n        request: Request,\n        knowledge_id: int,\n        separator: Optional[List[str]] = Form(default=None,\n                                              description='Split text rule, If not passed on, it is the default'),\n        separator_rule: Optional[List[str]] = Form(\n            default=None, description='Segmentation before or after the segmentation rule;before/after'),\n        chunk_size: Optional[int] = Form(default=None, description='Split text length, default if not passed'),\n        chunk_overlap: Optional[int] = Form(default=None,\n                                            description='Split text overlap length, default if not passed'),\n        callback_url: Optional[str] = Form(default=None, description='Return URL'),\n        file_url: Optional[str] = Form(default=None, description='File URL'),\n        file: Optional[UploadFile] = File(default=None, description='Upload file'),\n        background_tasks: BackgroundTasks = None,\n        retain_images: Optional[int] = Form(default=1, description='Keep document image'),\n        force_ocr: Optional[int] = Form(default=0, description='EnableOCR'),\n        enable_formula: Optional[int] = Form(default=1, description='latexFormula Recognition'),\n        filter_page_header_footer: Optional[int] = Form(default=0, description='Filter Header Footer'),\n        excel_rule: Optional[ExcelRule] = Form(default={}, description=\"excel rule\"),\n):\n    if file:\n        file_name = file.filename\n        if not file_name:\n            return resp_500(message='file name must be not empty')\n        # Cache Local\n        file_path = await sync_func_to_async(save_download_file)(save_download_file, file.file, 'bisheng', file_name)\n    else:\n        file_path, file_name = await async_file_download(file_url)\n\n    loging_user = await get_default_operator_async()\n    req_data = KnowledgeFileProcess(knowledge_id=knowledge_id,\n                                    separator=separator,\n                                    separator_rule=separator_rule,\n                                    chunk_size=chunk_size,\n                                    chunk_overlap=chunk_overlap,\n                                    retain_images=retain_images,\n                                    force_ocr=force_ocr,\n                                    enable_formula=enable_formula,\n                                    filter_page_header_footer=filter_page_header_footer,\n                                    callback_url=callback_url,\n                                    file_list=[KnowledgeFileOne(file_path=file_path, excel_rule=excel_rule)])\n\n    res = await sync_func_to_async(KnowledgeService.process_knowledge_file)(request=request,\n                                                                            login_user=loging_user,\n                                                                            background_tasks=background_tasks,\n                                                                            req_data=req_data)\n    return resp_200(data=res[0])\n\n\n@router.delete('/file/{file_id}', status_code=200)\ndef delete_knowledge_file(request: Request, file_id: int):\n    \"\"\" Delete files in the Knowledge Base \"\"\"\n    login_user = get_default_operator()\n    KnowledgeService.delete_knowledge_file(request, login_user, [file_id])\n    return resp_200()\n\n\n@router.post('/delete_file', status_code=200)\ndef delete_file_batch_api(request: Request, file_ids: List[int]):\n    \"\"\" Bulk delete knowledge file information \"\"\"\n    login_user = get_default_operator()\n    KnowledgeService.delete_knowledge_file(request, login_user, file_ids)\n    return resp_200()\n\n\n@router.get('/file/list', status_code=200)\ndef get_filelist(request: Request,\n                 knowledge_id: int,\n                 keyword: str = None,\n                 status: List[int] = Query(default=None),\n                 page_size: int = 10,\n                 page_num: int = 1):\n    \"\"\" Get knowledge base file information. \"\"\"\n    login_user = get_default_operator()\n    data, total, flag = KnowledgeService.get_knowledge_files(request, login_user, knowledge_id,\n                                                             keyword, status, page_num, page_size)\n    return resp_200(data={'data': data, 'total': total, 'writeable': flag})\n\n\n@router.post('/chunks')\nasync def post_chunks(request: Request,\n                      knowledge_id: int = Form(...),\n                      metadata: str = Form(...),\n                      separator: Optional[List[str]] = Form(default=None),\n                      separator_rule: Optional[List[str]] = Form(default=None),\n                      chunk_size: Optional[int] = Form(default=None),\n                      chunk_overlap: Optional[int] = Form(default=None),\n                      file: UploadFile = File(...)):\n    \"\"\" Upload files to the knowledge base and sync the interface \"\"\"\n    file_name = file.filename\n    if not file_name:\n        return resp_500(message='file name must be not empty')\n    file_path = await sync_func_to_async(save_download_file)(file.file, 'bisheng', file_name)\n\n    login_user = await get_default_operator_async()\n\n    req_data = KnowledgeFileProcess(knowledge_id=knowledge_id,\n                                    separator=separator,\n                                    separator_rule=separator_rule,\n                                    chunk_size=chunk_size,\n                                    chunk_overlap=chunk_overlap,\n                                    file_list=[KnowledgeFileOne(file_path=file_path)],\n                                    extra=metadata)\n\n    res = await sync_func_to_async(KnowledgeService.sync_process_knowledge_file)(request, login_user, req_data)\n    return resp_200(data=res[0])\n\n\n@router.post('/chunks_string')\nasync def post_string_chunks(request: Request, document: ChunkInput):\n    \"\"\" Get knowledge base file information. \"\"\"\n\n    # String saved to file\n    content = '\\n\\n'.join([doc.page_content for doc in document.documents])\n    content_bytes = bytes(content, encoding='utf-8')\n    file_name = document.documents[0].metadata.get('source')\n    file_path = await sync_func_to_async(save_download_file)(content_bytes, 'bisheng', file_name)\n\n    login_user = await get_default_operator_async()\n\n    req_data = KnowledgeFileProcess(knowledge_id=document.knowledge_id,\n                                    separator=['\\n\\n'],\n                                    separator_rule=['after'],\n                                    file_list=[KnowledgeFileOne(file_path=file_path)],\n                                    extra=json.dumps(document.documents[0].metadata,\n                                                     ensure_ascii=False))\n\n    knowledge, failed_files, process_files, _ = await sync_func_to_async(KnowledgeService.save_knowledge_file)(\n        login_user, req_data)\n    if failed_files:\n        return resp_200(data=failed_files[0])\n\n    res = await sync_func_to_async(text_knowledge)(knowledge, process_files[0], document.documents)\n\n    return resp_200(data=res)\n\n\n@router.post('/chunk_clear', status_code=200)\nasync def clear_tmp_chunks_data(body: Dict):\n    # Delete via Interfacemilvus、es DATA\n    flow_id = body.get('flow_id')\n    chat_id = body.get('chat_id')\n\n    if flow_id and not chat_id:\n        # Clean temporary files under the skill\n        flow_id = flow_id.replace('-', '')\n        collection_name = f'tmp_{flow_id}_1'\n        delete_es(collection_name)\n        delete_vector(collection_name, None)\n    if chat_id:\n        #  Query auto-generated\n        message = ChatMessageDao.get_latest_message_by_chatid(chat_id)\n        if message:\n            collection_name = f'tmp_{message.flow_id}_{chat_id}'\n            delete_es(collection_name)\n            delete_vector(collection_name, None)\n\n    return resp_200()\n\n\n@router.get('/dump_vector', status_code=200)\ndef dump_vector_knowledge(collection_name: str, expr: str = None, store: str = 'Milvus'):\n    # dump vector db\n    embedding_tmp = FakeEmbedding()\n    vector_store = decide_vectorstores(collection_name, store, embedding_tmp)\n\n    if vector_store and vector_store.col:\n        fields = [\n            s.name for s in vector_store.col.schema.fields\n            if s.name not in ['pk', 'bbox', 'vector']\n        ]\n        res_list = vector_store.col.query('file_id>1', output_fields=fields)\n        return resp_200(res_list)\n    else:\n        return resp_500('Parameter salah')\n\n\n@router.get('/download_statistic')\ndef download_statistic_file(file_path: str):\n    suffix = file_path.split('.')[-1]\n    if suffix != 'log':\n        raise ServerError.http_exception(msg='only .log file supported download')\n    dir_path = file_path.replace('.log', '')\n    if dir_path.find(\".\") != -1 or not dir_path.startswith(\"/app/data\"):\n        raise ServerError.http_exception(msg='invalid file path, file path must not contain .')\n\n    file_name = os.path.basename(file_path)\n    return FileResponse(file_path, filename=file_name)\n\n\n@router.post('/add_qa')\ndef add_qa(*,\n           knowledge_id: int = Body(embed=True),\n           data: List[APIAddQAParam] = Body(embed=True),\n           user_id: Optional[int] = Body(default=None, embed=True)):\n    user_id = user_id if user_id else settings.get_from_db('default_operator').get('user')\n    knowledge = KnowledgeDao.query_by_id(knowledge_id)\n    logger.info('add_qa_data knowledge_id={} size={}', knowledge_id, len(data))\n    res = []\n    for item in data:\n        qa_insert = QAKnowledgeUpsert(knowledge_id=knowledge_id,\n                                      questions=[item.question],\n                                      answers=item.answer,\n                                      user_id=user_id,\n                                      extra_meta=json.dumps(item.extra),\n                                      source=3)\n\n        res.append(knowledge_imp.add_qa(knowledge, qa_insert))\n\n    return resp_200(res)\n\n\n@router.post('/add_relative_qa')\ndef append_qa(*,\n              knowledge_id: int = Body(embed=True),\n              data: APIAppendQAParam = Body(embed=True),\n              user_id: Optional[int] = Body(default=None, embed=True)):\n    user_id = user_id if user_id else settings.get_from_db('default_operator').get('user')\n    knowledge = KnowledgeDao.query_by_id(knowledge_id)\n    qa_db = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(data.id)\n    if not qa_db:\n        return HTTPException(404, detail='qa Right, nothing found.')\n\n    t = qa_db.dict()\n    t['answers'] = json.loads(t['answers'])\n    qa_insert = QAKnowledgeUpsert.validate(t)\n    qa_insert.questions.extend(data.relative_questions)\n\n    return resp_200(knowledge_imp.add_qa(knowledge, qa_insert))\n\n\n@router.delete('/qa/{qa_id}', status_code=200)\ndef delete_qa_data(*, qa_id: int, question: Optional[str] = None):\n    \"\"\" Deleteqa Question to Information \"\"\"\n    qa = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(qa_id)\n    login_user = get_default_operator()\n    if not qa:\n        raise HTTPException(status_code=404, detail='qa Does not exist')\n\n    if question:\n        qa.questions = [q for q in qa.questions if q != question]\n        QAKnoweldgeDao.update(qa)\n    else:\n        QAKnoweldgeDao.delete_batch([qa_id])\n        telemetry_service.log_event_sync(user_id=login_user.user_id,\n                                         event_type=BaseTelemetryTypeEnum.DELETE_KNOWLEDGE_FILE,\n                                         trace_id=trace_id_var.get())\n    try:\n        knowledge = KnowledgeDao.query_by_id(qa.knowledge_id)\n        knowledge_imp.delete_vector_data(knowledge, file_ids=[qa_id])\n        if question:\n            knowledge_imp.QA_save_knowledge(knowledge, qa)\n        return resp_200()\n    except Exception as e:\n        return resp_500(message=f'error e={str(e)}')\n\n\n@router.post('/update_qa', status_code=200)\ndef update_qa(\n        *,\n        id: int = Body(embed=True),\n        question: Optional[str] = Body(default=None, embed=True),\n        original_question: Optional[str] = Body(default=None, embed=True),\n        answer: Optional[List[str]] = Body(default=None, embed=True),\n):\n    \"\"\" Deleteqa Question to Information \"\"\"\n    qa = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(id)\n\n    if not qa:\n        raise HTTPException(status_code=404, detail='qa Does not exist')\n\n    if original_question:\n        qa.questions = [q if q != question else question for q in qa.questions]\n    else:\n        qa.questions = [question]\n    if answer:\n        qa.answers = json.dumps(answer, ensure_ascii=False)\n    QAKnoweldgeDao.update(qa)\n\n    try:\n        knowledge = KnowledgeDao.query_by_id(qa.knowledge_id)\n        if question:\n            knowledge_imp.delete_vector_data(knowledge, file_ids=[id])\n            knowledge_imp.QA_save_knowledge(knowledge, qa)\n        return resp_200()\n    except Exception as e:\n        return resp_500(message=f'error e={str(e)}')\n\n\n@router.get('/detail_qa', status_code=200)\ndef detail_qa(*, id: int):\n    \"\"\" Get questions on information \"\"\"\n    qa = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(id)\n    return resp_200(qa)\n\n\n@router.post('/query_qa', status_code=200)\ndef query_qa(QueryQAParam: QueryQAParam):\n    \"\"\" Deleteqa Question to Information \"\"\"\n    sources = [1, 2]  # 3 Yes apiInverted\n    qa_list = QAKnoweldgeDao.query_by_condition_v1(source=sources,\n                                                   create_start=QueryQAParam.timeRange[0],\n                                                   create_end=QueryQAParam.timeRange[1])\n    if qa_list:\n        for q in qa_list:\n            q.answers = json.loads(q.answers)\n\n    return resp_200(qa_list)\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/flow.py",
    "content": "from uuid import UUID\n\nfrom fastapi import APIRouter, HTTPException, Query, Request\nfrom loguru import logger\n\nfrom bisheng.api.services.flow import FlowService\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.open_endpoints.api.endpoints.assistant import get_default_operator\n\nrouter = APIRouter(prefix='/flows', tags=['OpenAPI', 'FlowV2'])\n\n\n@router.get('/{flow_id}', status_code=200)\nasync def get_flow(request: Request, flow_id: UUID):\n    \"\"\"\n    Exposed interfaces for obtaining skill information\n    \"\"\"\n    flow_id = flow_id.hex\n    logger.info(f'public_get_flow  ip: {request.client.host} flow_id:{flow_id}')\n    # Determine if the configuration under is turned on\n    if not settings.get_from_db(\"default_operator\").get(\"enable_guest_access\"):\n        raise HTTPException(status_code=403, detail=\"No permission to access\")\n    default_user = get_default_operator()\n\n    return await FlowService.get_one_flow(default_user, flow_id)\n\n\n@router.get('', status_code=200)\ndef get_flow_list(request: Request,\n                  name: str = Query(default=None, description='accordingnameFind databases with fuzzy searches for descriptions'),\n                  tag_id: int = Query(default=None, description='labelID'),\n                  page_size: int = Query(default=10, description='Items per page'),\n                  page_num: int = Query(default=1, description='Page'),\n                  status: int = None,\n                  user_id: int = None):\n    \"\"\"\n    Exposed interfaces for obtaining skill information\n    \"\"\"\n    logger.info(f'public_get_flow_list  ip: {request.client.host} user_id={user_id}')\n    login_user = get_default_operator()\n\n    try:\n        return FlowService.get_all_flows(login_user, name, status, tag_id, page_num, page_size)\n    except Exception as e:\n        logger.error(e)\n        raise HTTPException(status_code=500, detail='Failed to get skills list')\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/knowledge.py",
    "content": "from typing import List\n\nfrom fastapi import APIRouter, Depends, BackgroundTasks, Body\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import UnifiedResponseModel, resp_200\nfrom bisheng.knowledge.domain.schemas.knowledge_schema import AddKnowledgeMetadataFieldsReq, \\\n    UpdateKnowledgeMetadataFieldsReq, ModifyKnowledgeFileMetaDataReq\nfrom bisheng.knowledge.domain.services.knowledge_file_service import KnowledgeFileService\nfrom bisheng.knowledge.domain.services.knowledge_service import KnowledgeService\nfrom bisheng.open_endpoints.api.dependencies import get_knowledge_service, get_knowledge_file_service\nfrom bisheng.open_endpoints.domain.schemas.knowledge import DeleteUserMetadataReq\nfrom bisheng.open_endpoints.domain.utils import get_default_operator_async\n\nrouter = APIRouter(prefix='/knowledge', tags=['OpenAPI', 'Knowledge'])\n\n\n# Add Knowledge Metadata Fields Endpoint\n@router.post('/add_metadata_fields', response_model=UnifiedResponseModel)\nasync def add_metadata_fields(*,\n                              default_user: UserPayload = Depends(get_default_operator_async),\n                              req_data: AddKnowledgeMetadataFieldsReq,\n                              knowledge_service: KnowledgeService = Depends(get_knowledge_service)):\n    \"\"\"\n    Add metadata fields to a knowledge base.\n    Args:\n        default_user:\n        req_data:\n        knowledge_service:\n\n    Returns:\n\n    \"\"\"\n\n    await knowledge_service.add_metadata_fields(default_user, req_data)\n\n    return resp_200(data=True)\n\n\n@router.put(\"/modify_metadata_fields\", response_model=UnifiedResponseModel)\nasync def update_metadata_fields(*,\n                                 default_user: UserPayload = Depends(get_default_operator_async),\n                                 req_data: UpdateKnowledgeMetadataFieldsReq,\n                                 knowledge_service: KnowledgeService = Depends(get_knowledge_service),\n                                 background_tasks: BackgroundTasks):\n    \"\"\"\n     Update metadata fields in a knowledge base.\n    Args:\n        default_user:\n        req_data:\n        knowledge_service:\n        background_tasks:\n\n    Returns:\n\n    \"\"\"\n\n    await knowledge_service.update_metadata_fields(\n        default_user, req_data, background_tasks)\n    return resp_200(data=True)\n\n\n@router.delete('/delete_metadata_fields', response_model=UnifiedResponseModel)\nasync def delete_metadata_fields(*,\n                                 default_user: UserPayload = Depends(get_default_operator_async),\n                                 knowledge_id: int = Body(..., embed=True, description=\"Knowledge ID\"),\n                                 field_names: List[str] = Body(..., embed=True,\n                                                               description=\"List of field names to delete\"),\n                                 knowledge_service: KnowledgeService = Depends(get_knowledge_service),\n                                 background_tasks: BackgroundTasks):\n    \"\"\"\n    Delete metadata fields from a knowledge base.\n    Args:\n        default_user:\n        knowledge_id:\n        field_names:\n        knowledge_service:\n        background_tasks:\n    Returns:\n    \"\"\"\n\n    await knowledge_service.delete_metadata_fields(\n        default_user, knowledge_id, field_names, background_tasks)\n\n    return resp_200(data=True)\n\n\n@router.get('/get_metadata_fields/{knowledge_id}', response_model=UnifiedResponseModel)\nasync def list_metadata_fields(*,\n                               default_user: UserPayload = Depends(get_default_operator_async),\n                               knowledge_id: int,\n                               knowledge_service: KnowledgeService = Depends(get_knowledge_service)):\n    \"\"\"\n    List metadata fields of a knowledge base.\n    Args:\n         default_user:\n         knowledge_id:\n         knowledge_service:\n\n    Returns:\n\n    \"\"\"\n\n    metadata_fields = await knowledge_service.list_metadata_fields(default_user, knowledge_id)\n\n    return resp_200(data=metadata_fields)\n\n\n@router.post('/file/add_user_metadata', response_model=UnifiedResponseModel)\nasync def add_file_user_metadata(*,\n                                 default_user: UserPayload = Depends(get_default_operator_async),\n                                 knowledge_id: int = Body(..., embed=True, description=\"Knowledge ID\"),\n                                 add_metadata_list: List[ModifyKnowledgeFileMetaDataReq] = Body(...,\n                                                                                                description=\"File User Metadata List\"),\n                                 knowledge_file_service: KnowledgeFileService = Depends(get_knowledge_file_service)):\n    \"\"\"\n    Add user metadata to a knowledge file.\n    Args:\n        knowledge_id:\n        add_metadata_list:\n        default_user:\n        knowledge_file_service:\n\n    Returns:\n\n    \"\"\"\n\n    await knowledge_file_service.add_file_user_metadata(\n        default_user, knowledge_id, add_metadata_list)\n\n    return resp_200(data=True)\n\n\n@router.put('/file/modify_user_metadata', response_model=UnifiedResponseModel)\nasync def modify_file_user_metadata(*,\n                                    default_user: UserPayload = Depends(get_default_operator_async),\n                                    knowledge_id: int = Body(..., embed=True, description=\"Knowledge ID\"),\n                                    modify_metadata_list: List[ModifyKnowledgeFileMetaDataReq] = Body(...,\n                                                                                                      description=\"File User Metadata List\"),\n                                    knowledge_file_service: KnowledgeFileService = Depends(\n                                        get_knowledge_file_service)):\n    \"\"\"\n    Modify user metadata of a knowledge file.\n    Args:\n        modify_metadata_list:\n        knowledge_id:\n        default_user:\n        knowledge_file_service:\n\n    Returns:\n\n    \"\"\"\n\n    await knowledge_file_service.batch_modify_file_user_metadata(default_user, knowledge_id,\n                                                                 modify_metadata_list)\n\n    return resp_200(data=True)\n\n\n@router.delete('/file/delete_user_metadata', response_model=UnifiedResponseModel)\nasync def delete_file_user_metadata(*,\n                                    default_user: UserPayload = Depends(get_default_operator_async),\n                                    knowledge_id: int = Body(..., embed=True, description=\"Knowledge ID\"),\n                                    delete_user_metadatas: List[DeleteUserMetadataReq] = Body(...,\n                                                                                              description=\"Delete User Metadata List\"),\n                                    knowledge_file_service: KnowledgeFileService = Depends(\n                                        get_knowledge_file_service)):\n    \"\"\"\n    Delete user metadata from a knowledge file.\n    Args:\n        default_user:\n        knowledge_id:\n        delete_user_metadatas:\n        knowledge_file_service:\n\n    Returns:\n\n    \"\"\"\n\n    await knowledge_file_service.batch_delete_file_user_metadata(\n        default_user, knowledge_id, delete_user_metadatas)\n\n    return resp_200(data=True)\n\n\n@router.post('/file/list_user_metadata', response_model=UnifiedResponseModel)\nasync def list_file_user_metadata(*,\n                                  default_user: UserPayload = Depends(get_default_operator_async),\n                                  knowledge_id: int = Body(..., embed=True, description=\"Knowledge ID\"),\n                                  knowledge_file_ids: List[int] = Body(..., description=\"Knowledge File IDs\"),\n                                  knowledge_file_service: KnowledgeFileService = Depends(\n                                      get_knowledge_file_service)):\n    \"\"\"\n    List user metadata of knowledge files.\n    Args:\n        default_user:\n        knowledge_id:\n        knowledge_file_ids:\n        knowledge_file_service:\n\n    Returns:\n\n    \"\"\"\n\n    metadata_list = await knowledge_file_service.list_knowledge_file_user_metadata(\n        default_user, knowledge_id, knowledge_file_ids)\n\n    return resp_200(data=metadata_list)\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/llm.py",
    "content": "from fastapi import APIRouter, Request, UploadFile, Body\n\nfrom bisheng.common.schemas.api import resp_200\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.open_endpoints.domain.utils import get_default_operator\n\nrouter = APIRouter(prefix='/llm', tags=['OpenAPI', 'llm'])\n\n\n@router.post('/workbench/asr')\nasync def invoke_workbench_asr(request: Request, file: UploadFile = None):\n    \"\"\" Call the workbench'sasrModels Convert Voice to Text \"\"\"\n    login_user = get_default_operator()\n    text = await LLMService.invoke_workbench_asr(login_user, file)\n    return resp_200(data=text)\n\n\n@router.post('/workbench/tts')\nasync def invoke_workbench_tts(request: Request, text: str = Body(..., embed=True, description=\"Text that needs to be synthesized\")):\n    \"\"\" Call the workbench'sttsModels Convert text to speech \"\"\"\n    login_user = get_default_operator()\n    audio_url = await LLMService.invoke_workbench_tts(login_user, text)\n    return resp_200(data=audio_url)\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/endpoints/workflow.py",
    "content": "import time\nimport uuid\nfrom typing import Optional, List\nfrom uuid import UUID\n\nfrom fastapi import APIRouter, Request, Body, Path, WebSocket, WebSocketException\nfrom fastapi import status as http_status\nfrom fastapi.responses import ORJSONResponse\nfrom loguru import logger\nfrom starlette.responses import StreamingResponse\n\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.api.v1.chat import chat_manager\nfrom bisheng.api.v1.schema.workflow import WorkflowStream, WorkflowEvent, WorkflowEventType\nfrom bisheng.api.v1.schemas import resp_200\nfrom bisheng.chat.types import WorkType\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.errcode.http_error import NotFoundError, ServerError\nfrom bisheng.common.schemas.telemetry.event_data_schema import ApplicationAliveEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao, FlowType\nfrom bisheng.open_endpoints.domain.utils import get_default_operator, get_default_operator_async\nfrom bisheng.worker.workflow.redis_callback import RedisCallback\nfrom bisheng.worker.workflow.tasks import execute_workflow, continue_workflow, workflow_stateful_worker\nfrom bisheng.workflow.common.workflow import WorkflowStatus\n\nrouter = APIRouter(prefix='/workflow', tags=['OpenAPI', 'Workflow'])\n\n\n@router.post('/invoke')\nasync def invoke_workflow(request: Request,\n                          workflow_id: UUID = Body(..., description='Workflow UniqueID'),\n                          override: Optional[dict] = Body(default=None, description='override node params'),\n                          stream: Optional[bool] = Body(default=True, description='Whether to stream calls'),\n                          user_input: Optional[dict] = Body(default=None, description='User input', alias='input'),\n                          message_id: Optional[int] = Body(default=None,\n                                                           description='MessageID,Once,Unique identifier of user input message'),\n                          session_id: Optional[str] = Body(default=None,\n                                                           description='会话ID,一次workflow调用的唯一标识')):\n    login_user = get_default_operator()\n    workflow_id = workflow_id.hex\n    # Query workflow information\n    workflow_info = await FlowDao.aget_flow_by_id(workflow_id)\n    if not workflow_info:\n        raise NotFoundError.http_exception()\n    if workflow_info.flow_type != FlowType.WORKFLOW.value:\n        raise NotFoundError.http_exception()\n\n    # Resolve Outchat_idAndunique_id\n    if not session_id:\n        chat_id = uuid.uuid4().hex\n        unique_id = f'{chat_id}_async_task_id'\n        session_id = unique_id\n    else:\n        chat_id = session_id.split('_', 1)[0]\n        unique_id = session_id\n    start_time = time.time()\n    logger.debug(f'invoke_workflow: {workflow_id}, {session_id}')\n    workflow = RedisCallback(unique_id, workflow_id, chat_id, login_user.user_id, source=\"api\")\n\n    execute_worker = await workflow_stateful_worker.find_task_node(chat_id)\n    # Query workflow status\n    status_info = workflow.get_workflow_status()\n    if not status_info:\n        # Initialize workflow\n        workflow.set_workflow_data(workflow_info.data, override=override)\n        workflow.set_workflow_status(WorkflowStatus.WAITING.value)\n        # Start asynchronous task\n        execute_workflow.apply_async([unique_id, workflow_id, chat_id, login_user.user_id, \"api\"],\n                                     queue=execute_worker)\n    elif status_info['status'] == WorkflowStatus.INPUT.value:\n        if not user_input:\n            raise ServerError(msg=\"workflow waiting for user input, but user input not provided\")\n        # Set user input\n        if not message_id:\n            raise ServerError(msg=\"message_id is required when providing user input\")\n        await workflow.async_set_user_input(user_input, message_id, verify_input=True)\n        await workflow.async_set_workflow_status(WorkflowStatus.INPUT_OVER.value)\n        continue_workflow.apply_async([unique_id, workflow_id, chat_id, login_user.user_id, \"api\"],\n                                      queue=execute_worker)\n\n    logger.debug(f'waiting workflow over or input: {workflow_id}, {session_id}')\n\n    async def handle_workflow_event(event_list: List):\n        async for event in workflow.get_response_until_break():\n            if event.category == WorkflowEventType.NodeRun.value:\n                continue\n            # Non-streaming requests, filtering out streaming output events generated by nodes\n            if not stream and event.category == WorkflowEventType.StreamMsg.value and event.type == 'stream':\n                continue\n            workflow_stream = WorkflowStream(session_id=session_id,\n                                             data=WorkFlowService.convert_chat_response_to_workflow_event(event))\n            event_list.append(workflow_stream.data)\n            yield f'data: {workflow_stream.model_dump_json()}\\n\\n'\n        tmp_status_info = await workflow.async_get_workflow_status()\n        if tmp_status_info['status'] in [WorkflowStatus.SUCCESS.value, WorkflowStatus.FAILED.value]:\n            await workflow.async_clear_workflow_status()\n        if tmp_status_info['status'] == WorkflowStatus.SUCCESS.value:\n            workflow_stream = WorkflowStream(session_id=session_id,\n                                             data=WorkflowEvent(event=WorkflowEventType.Close.value))\n            event_list.append(workflow_stream.data)\n            yield f'data: {workflow_stream.model_dump_json()}\\n\\n'\n\n    res = []\n    # Non-streaming returns a cumulative list of events\n    if not stream:\n        async for _ in handle_workflow_event(res):\n            pass\n        end_time = time.time()\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=workflow_id,\n                                              app_name=workflow_info.name,\n                                              app_type=ApplicationTypeEnum.WORKFLOW,\n                                              chat_id=session_id,\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)))\n        return resp_200(data={\n            'session_id': session_id,\n            'events': res\n        })\n    try:\n        return StreamingResponse(handle_workflow_event(res), media_type='text/event-stream')\n    except Exception as exc:\n        logger.exception(f'invoke_workflow error: {str(exc)}')\n        return ORJSONResponse(status_code=500, content=str(exc))\n    finally:\n        end_time = time.time()\n        await telemetry_service.log_event(user_id=login_user.user_id,\n                                          event_type=BaseTelemetryTypeEnum.APPLICATION_ALIVE,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=ApplicationAliveEventData(\n                                              app_id=workflow_id,\n                                              app_name=workflow_info.name,\n                                              app_type=ApplicationTypeEnum.WORKFLOW,\n                                              chat_id=session_id,\n                                              start_time=int(start_time),\n                                              end_time=int(end_time)))\n\n\n@router.post('/stop')\nasync def stop_workflow(request: Request,\n                        workflow_id: UUID = Body(..., description='Workflow UniqueID'),\n                        session_id: str = Body(description='SessionsID,Once,workflowUnique identifier of the call')):\n    workflow_id = workflow_id.hex\n    login_user = await get_default_operator_async()\n    chat_id = session_id.split('_', 1)[0]\n    unique_id = session_id\n    workflow = RedisCallback(unique_id, workflow_id, chat_id, login_user.user_id, source=\"api\")\n    await workflow.async_set_workflow_stop()\n    return resp_200()\n\n\n@router.websocket('/chat/{workflow_id}')\nasync def workflow_ws(*,\n                      workflow_id: UUID = Path(..., description='Workflow UniqueID'),\n                      websocket: WebSocket,\n                      chat_id: Optional[str] = None):\n    \"\"\" Use Exempt Login Link \"\"\"\n    try:\n        workflow_id = workflow_id.hex\n        # Authorize.jwt_required(auth_from='websocket', websocket=websocket)\n        # payload = Authorize.get_jwt_subject()\n        login_user = await get_default_operator_async()\n        await chat_manager.dispatch_client(websocket, workflow_id, chat_id, login_user, WorkType.WORKFLOW, websocket)\n    except WebSocketException as exc:\n        logger.error(f'Websocket exception: {str(exc)}')\n        await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=str(exc))\n    except Exception as e:\n        logger.error(f'Websocket handle error: {str(e)}')\n        await websocket.close(code=http_status.WS_1011_INTERNAL_ERROR, reason=str(e))\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/api/router.py",
    "content": "from bisheng.open_endpoints.api.endpoints.assistant import router as assistant_router_rpc\nfrom bisheng.open_endpoints.api.endpoints.chat import router as chat_router_rpc\nfrom bisheng.open_endpoints.api.endpoints.filelib import router as filelib_router_rpc\nfrom bisheng.open_endpoints.api.endpoints.flow import router as flow_router\nfrom bisheng.open_endpoints.api.endpoints.workflow import router as workflow_router_rpc\nfrom .endpoints.knowledge import router as knowledge_router_rpc\n\n__all__ = [\n    'knowledge_router_rpc', 'chat_router_rpc', 'flow_router',\n    'assistant_router_rpc', 'workflow_router_rpc', 'filelib_router_rpc'\n]\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/schemas/filelib.py",
    "content": "from typing import Dict, List, Optional\n\nfrom pydantic import BaseModel\n\n\nclass APIAddQAParam(BaseModel):\n    question: str\n    answer: List[str]\n    extra: Optional[Dict] = {}\n\n\nclass APIAppendQAParam(BaseModel):\n    relative_questions: List[str] = []\n    id: str = None\n\n\nclass QueryQAParam(BaseModel):\n    timeRange: List[str]\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/schemas/knowledge.py",
    "content": "from pydantic import BaseModel\n\n\nclass DeleteUserMetadataReq(BaseModel):\n    knowledge_file_id: int\n    field_names: list[str]\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/schemas/message.py",
    "content": "from pydantic import BaseModel\n\n\nclass SyncMessage(BaseModel):\n    is_send: bool\n    message: str\n    create_time: str\n    extra: dict\n"
  },
  {
    "path": "src/backend/bisheng/open_endpoints/domain/utils.py",
    "content": "from fastapi.exceptions import HTTPException\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.user.domain.models.user import UserDao\n\n\ndef get_default_operator() -> UserPayload:\n    user_id = settings.get_from_db('default_operator').get('user')\n    if not user_id:\n        raise HTTPException(status_code=500, detail='Not configureddefault_operatorIIuserConfigure')\n    # Find default user information\n    login_user = UserDao.get_user(user_id)\n    if not login_user:\n        raise HTTPException(status_code=500, detail='not founddefault_operatorIIuserUser Information')\n    login_user = UserPayload.init_login_user_sync(user_id=login_user.user_id, user_name=login_user.user_name)\n    return login_user\n\n\nasync def get_default_operator_async() -> UserPayload:\n    user_id = (await settings.aget_from_db('default_operator')).get('user')\n    if not user_id:\n        raise HTTPException(status_code=500, detail='Not configureddefault_operatorIIuserConfigure')\n    # Find default user information\n    login_user = await UserDao.aget_user(user_id)\n    if not login_user:\n        raise HTTPException(status_code=500, detail='not founddefault_operatorIIuserUser Information')\n    login_user = await UserPayload.init_login_user(user_id=login_user.user_id, user_name=login_user.user_name)\n\n    return login_user\n"
  },
  {
    "path": "src/backend/bisheng/patches/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/patches/langchain_openai.patch",
    "content": "--- base.py\t2024-12-18 19:01:22.000000000 +0800\n+++ base_modify.py\t2025-02-10 11:11:47.899000000 +0800\n@@ -259,6 +259,8 @@\n             ]\n         except KeyError:\n             pass\n+    if _dict.get('reasoning_content'):\n+        additional_kwargs['reasoning_content'] = _dict['reasoning_content']\n \n     if role == \"user\" or default_class == HumanMessageChunk:\n         return HumanMessageChunk(content=content, id=id_)\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/__init__.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom .entry import convert\nfrom .types import ConversionConfig\n\n__all__ = ['convert', 'ConversionConfig']\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/__main__.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport argparse\nimport logging\nfrom pathlib import Path\n\nfrom bisheng.pptx2md.entry import convert\nfrom bisheng.pptx2md.log import setup_logging\nfrom bisheng.pptx2md.types import ConversionConfig\n\nsetup_logging(compat_tqdm=True)\nlogger = logging.getLogger(__name__)\n\n\ndef parse_args() -> ConversionConfig:\n    arg_parser = argparse.ArgumentParser(description='Convert pptx to markdown')\n    arg_parser.add_argument('pptx_path', type=Path, help='path to the pptx file to be converted')\n    arg_parser.add_argument('-t', '--title', type=Path, help='path to the custom title list file')\n    arg_parser.add_argument('-o', '--output', type=Path, help='path of the output file')\n    arg_parser.add_argument('-i', '--image-dir', type=Path, help='where to put images extracted')\n    arg_parser.add_argument('--image-width', type=int, help='maximum image with in px')\n    arg_parser.add_argument('--disable-image', action=\"store_true\", help='disable image extraction')\n    arg_parser.add_argument('--disable-wmf',\n                            action=\"store_true\",\n                            help='keep wmf formatted image untouched(avoid exceptions under linux)')\n    arg_parser.add_argument('--disable-color', action=\"store_true\", help='do not add color HTML tags')\n    arg_parser.add_argument('--disable-escaping',\n                            action=\"store_true\",\n                            help='do not attempt to escape special characters')\n    arg_parser.add_argument('--disable-notes', action=\"store_true\", help='do not add presenter notes')\n    arg_parser.add_argument('--enable-slides', action=\"store_true\", help='deliniate slides `\\n---\\n`')\n    arg_parser.add_argument('--try-multi-column', action=\"store_true\", help='try to detect multi-column slides')\n    arg_parser.add_argument('--wiki', action=\"store_true\", help='generate output as wikitext(TiddlyWiki)')\n    arg_parser.add_argument('--mdk', action=\"store_true\", help='generate output as madoko markdown')\n    arg_parser.add_argument('--qmd', action=\"store_true\", help='generate output as quarto markdown presentation')\n    arg_parser.add_argument('--min-block-size',\n                            type=int,\n                            default=15,\n                            help='the minimum character number of a text block to be converted')\n    arg_parser.add_argument(\"--page\", type=int, default=None, help=\"only convert the specified page\")\n    arg_parser.add_argument(\n        \"--keep-similar-titles\",\n        action=\"store_true\",\n        help=\"keep similar titles (allow for repeated slide titles - One or more - Add (cont.) to the title)\")\n\n    args = arg_parser.parse_args()\n\n    # Determine output path if not specified\n    if args.output is None:\n        extension = '.tid' if args.wiki else '.qmd' if args.qmd else '.md'\n        args.output = Path(f'out{extension}')\n\n    return ConversionConfig(\n        pptx_path=args.pptx_path,\n        output_path=args.output,\n        image_dir=args.image_dir or args.output.parent / 'img',\n        title_path=args.title,\n        image_width=args.image_width,\n        disable_image=args.disable_image,\n        disable_wmf=args.disable_wmf,\n        disable_color=args.disable_color,\n        disable_escaping=args.disable_escaping,\n        disable_notes=args.disable_notes,\n        enable_slides=args.enable_slides,\n        try_multi_column=args.try_multi_column,\n        is_wiki=args.wiki,\n        is_mdk=args.mdk,\n        is_qmd=args.qmd,\n        min_block_size=args.min_block_size,\n        page=args.page,\n        keep_similar_titles=args.keep_similar_titles,\n    )\n\n\ndef main():\n    config = parse_args()\n    convert(config)\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/entry.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\n\nimport bisheng.pptx2md.outputter as outputter\nfrom bisheng.pptx2md.parser import parse\nfrom bisheng.pptx2md.types import ConversionConfig\nfrom bisheng.pptx2md.utils import load_pptx, prepare_titles\n\nlogger = logging.getLogger(__name__)\n\n\ndef convert(config: ConversionConfig):\n    if config.title_path:\n        config.custom_titles = prepare_titles(config.title_path)\n\n    prs = load_pptx(config.pptx_path)\n\n    logger.info(\"conversion started\")\n\n    ast = parse(config, prs)\n\n    if str(config.output_path).endswith('.json'):\n        with open(config.output_path, 'w') as f:\n            f.write(ast.model_dump_json(indent=2))\n        logger.info(f'presentation data saved to {config.output_path}')\n        return\n\n    if config.is_wiki:\n        out = outputter.WikiFormatter(config)\n    elif config.is_mdk:\n        out = outputter.MadokoFormatter(config)\n    elif config.is_qmd:\n        out = outputter.QuartoFormatter(config)\n    else:\n        out = outputter.MarkdownFormatter(config)\n\n    out.output(ast)\n    logger.info(f'converted document saved to {config.output_path}')\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/image.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# --coding:utf-8--\n# author = ''\n\n\ndef convert_wmf_to_png(input_file, output_png_path):\n    \"\"\"\n    Convert WMF data to a PNG file.\n\n    \"\"\"\n    # from PIL import ImageGrab\n    # shape.Copy()\n    # image = ImageGrab.grabclipboard()\n    # #image.save('{}.jpg'.format(filename), 'jpeg')\n    # image.save(output_png_path)\n\n    # from PIL import Image\n    # Image.open(input_file).save(output_png_path)\n\n    from wand.image import Image\n\n    with Image(filename=input_file) as img:\n        img.format = 'png'\n        img.save(filename=output_png_path)\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/log.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\nimport sys\n\nfrom tqdm import tqdm\n\n\nclass TqdmStreamHandler(logging.StreamHandler):\n\n    def emit(self, record):\n        try:\n            msg = self.format(record)\n            tqdm.write(msg)\n            self.flush()\n        except Exception:\n            self.handleError(record)\n\n\ndef setup_logging(compat_tqdm=True):\n    root_logger = logging.getLogger()\n    for handler in root_logger.handlers[:]:\n        root_logger.removeHandler(handler)\n\n    formatter = logging.Formatter(\n        '%(asctime)s | %(levelname)s | %(name)s | %(message)s',\n        datefmt='%Y-%m-%d %H:%M:%S',\n    )\n\n    if compat_tqdm:\n        stream_handler = TqdmStreamHandler(sys.stdout)\n    else:\n        stream_handler = logging.StreamHandler(sys.stdout)\n\n    stream_handler.setLevel(logging.INFO)\n    stream_handler.setFormatter(formatter)\n\n    root_logger.setLevel(logging.INFO)\n    root_logger.addHandler(stream_handler)\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/multi_column.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\nfrom operator import attrgetter\nfrom typing import Optional\n\nimport numpy as np\nimport pptx\nfrom pptx import Presentation\nfrom pptx.enum.shapes import MSO_SHAPE_TYPE, PP_PLACEHOLDER\nfrom pptx.util import Length\nfrom scipy.optimize import curve_fit\n\nfrom bisheng.pptx2md.types import MultiColumnSlide\n\nlogger = logging.getLogger(__name__)\n\n\ndef normal_pdf(x_vector, mu=0, sigma=1):\n    return (1 / (sigma * np.sqrt(2 * np.pi))) * np.exp(-((x_vector - mu) / sigma)**2 / 2)\n\n\ndef f(x_vector, theta0, theta1, sigma0, sigma1):\n    # sigma = 100\n    return 0.5 * ((1 / (sigma0 * np.sqrt(2 * np.pi))) * np.exp(-((x_vector - theta0) / sigma0)**2 / 2) +\n                  (1 / (sigma1 * np.sqrt(2 * np.pi))) * np.exp(-((x_vector - theta1) / sigma1)**2 / 2))\n\n\ndef f_gauss1(x_vector, theta0, sigma0):\n    salida = normal_pdf(x_vector, theta0, sigma0)\n    return (salida)\n\n\ndef f_gauss2(x_vector, theta0, theta1, sigma0, sigma1):\n    salida = (normal_pdf(x_vector, theta0, sigma0) + normal_pdf(x_vector, theta1, sigma1)) / 2\n    return (salida)\n\n\ndef f_gauss3(x_vector, theta0, theta1, theta2, sigma0, sigma1, sigma2):\n    salida = (normal_pdf(x_vector, theta0, sigma0) + normal_pdf(x_vector, theta1, sigma1) +\n              normal_pdf(x_vector, theta2, sigma2)) / 3\n    return (salida)\n\n\ndef compute_pdf_overlap(pdf_fun1, pdf_fun2):\n    fun_array = np.vstack([pdf_fun1, pdf_fun2])\n    intersection = np.min(fun_array, axis=0)\n    pdf_overlap = np.sum(intersection)\n    return (pdf_overlap)\n\n\ndef fit_column_model(x_val, g_val):\n\n    q1 = np.quantile(x_val, 0.25)\n    q2 = np.median(x_val)\n    q3 = np.quantile(x_val, 0.75)\n\n    # print(\"Using q1: %d, q2: %d, q3: %d\"%(q1, q2, q3))\n\n    try:\n        params1, cov1 = curve_fit(f_gauss1, x_val, g_val, [q2, q2 - q1])\n    except:\n        params1 = [q2, q2 - 1]\n\n    try:\n        params2, cov2 = curve_fit(f_gauss2, x_val, g_val, [q1, q3, q1, q1])\n    except:\n        params2 = [q1, q3, q1, q1]\n\n    try:\n        params3, cov3 = curve_fit(f_gauss3, x_val, g_val, [q1, q2, q3, q1, q2 - q1, q1])\n    except:\n        params3 = [q1, q2, q3, q1, q2 - q1, q1]\n\n    # Extract area under the curve of the intersection\n    auc1 = compute_pdf_overlap(f_gauss1(x_val, *params1), g_val)\n    auc2 = compute_pdf_overlap(f_gauss2(x_val, *params2), g_val)\n    auc3 = compute_pdf_overlap(f_gauss3(x_val, *params3), g_val)\n\n    print(\"Using auc1: %.2f, auc2: %.2f, auc3: %.2f\" % (auc1, auc2, auc3))\n\n    if auc1 > 0.86:\n        print(\"Selected 1\")\n        return (params1)\n    elif auc2 > 0.86:\n        print(\"Selected 2\")\n        return (params2)\n    elif auc3 > 0.86:\n        print(\"Selected 3\")\n        return (params3)\n    else:\n        idx = np.argmax([auc1, auc2, auc3])\n        all_params = [params1, params2, params3]\n        print(\"Selected %d\" % (idx + 1))\n        return (all_params[idx])\n\n\ndef ungroup_shapes(shapes):\n    res = []\n    for shape in shapes:\n        try:\n            if shape.shape_type == MSO_SHAPE_TYPE.GROUP:\n                res.extend(ungroup_shapes(shape.shapes))\n            else:\n                res.append(shape)\n        except Exception as e:\n            print(f'failed to load shape {shape}, skipped. error: {e}')\n    return res\n\n\ndef is_two_column_text(slide):\n\n    if slide.slide_layout.name != \"TITLE\":\n        all_mu = list()\n        all_sigma = list()\n        for shape in sorted(ungroup_shapes(slide.shapes), key=attrgetter('top', 'left')):\n            if shape.shape_type == MSO_SHAPE_TYPE.PLACEHOLDER:\n                if shape.placeholder_format.type == PP_PLACEHOLDER.TITLE:\n                    if shape.has_text_frame:\n                        print('SLIDE TITLE: %s' % shape.text_frame.text)\n\n                    continue\n\n            if shape.shape_type == MSO_SHAPE_TYPE.PICTURE or shape.has_text_frame:\n                centroid_x = shape.left + shape.width / 2\n                all_mu.append(Length(centroid_x).mm)\n                all_sigma.append(Length(shape.width / 4).mm)  # Gaussiana - 2sigma\n\n        return (all_mu, all_sigma)\n    else:\n        return False\n\n\ndef assign_shapes(slide, params, ncols=2, slide_width_mm=1000):\n\n    shapes_dict = {\"shapes_pre\": list(), \"shapes_l\": list(), \"shapes_c\": list(), \"shapes_r\": list()}\n\n    shapes = sorted(ungroup_shapes(slide.shapes), key=attrgetter('top', 'left'))\n\n    print(\"Ncols is %d\" % ncols)\n\n    if ncols == 1:\n        shapes_dict[\"shapes_pre\"] = sorted(shapes,\n                                           key=lambda x: x.shape_type == MSO_SHAPE_TYPE.PLACEHOLDER,\n                                           reverse=True)\n        return (shapes_dict)\n    elif ncols == 2:\n        param_means = params[0:2]\n        param_sds = params[2:]\n    elif ncols == 3:\n        param_means = params[0:3]\n        param_sds = params[3:]\n    else:\n        raise (ValueError, \"Error in the number of columns\")\n\n    x_vector = np.arange(1, slide_width_mm)\n\n    for shape in slide.shapes:\n        if shape.shape_type == MSO_SHAPE_TYPE.PLACEHOLDER:\n            if shape.placeholder_format.type == PP_PLACEHOLDER.TITLE:\n                if shape.has_text_frame:\n                    print('SLIDE TITLE: %s' % shape.text_frame.text)\n                    shapes_dict[\"shapes_pre\"].insert(0, shape)\n                else:\n                    shapes_dict[\"shapes_pre\"].append(shape)\n                continue\n\n        if shape.shape_type == MSO_SHAPE_TYPE.PICTURE or shape.has_text_frame:\n            centroid_x = shape.left + shape.width / 2\n            curr_mu = Length(centroid_x).mm\n            curr_sigma = Length(shape.width / 4).mm  # Gaussian - 2sigma\n\n            area_u_c = np.zeros(ncols)\n\n            for idx, param_mu in enumerate(param_means):\n                area_u_c[idx] = compute_pdf_overlap(normal_pdf(x_vector, mu=param_mu, sigma=param_sds[idx]),\n                                                    normal_pdf(x_vector, curr_mu, curr_sigma))\n\n            max_score_column = np.argmax(area_u_c)\n\n            if max_score_column == 0:\n                shapes_dict[\"shapes_l\"].append(shape)\n            elif max_score_column == 1:\n                if ncols == 2:\n                    shapes_dict[\"shapes_r\"].append(shape)\n                elif ncols == 3:\n                    shapes_dict[\"shapes_c\"].append(shape)\n                else:\n                    raise (ValueError, \"Not allowed number of columns\")\n            elif max_score_column == 2:\n                shapes_dict[\"shapes_r\"].append(shape)\n            else:\n                raise (ValueError, \"Max number of columns does not correspond to the number of columns\")\n\n    return (shapes_dict)\n\n\ndef get_multi_column_slide_if_present(prs: Presentation, raw_slide, process_shapes) -> Optional[MultiColumnSlide]:\n    pdf_modelo = is_two_column_text(raw_slide)\n\n    if not pdf_modelo:\n        return None\n\n    slide_width_mm = pptx.util.Length(prs.slide_width)\n    t_vector = np.arange(1, slide_width_mm)\n\n    # Model to infer number of columns\n    salida = map(lambda mu, sigma: normal_pdf(t_vector, mu, sigma), pdf_modelo[0], pdf_modelo[1])\n    sum_of_gaussian = np.mean(list(salida), axis=0)\n    parameters = fit_column_model(t_vector, sum_of_gaussian)\n\n    num_cols = int(len(parameters) / 2)\n\n    if num_cols == 1:\n        return None\n\n    slide = MultiColumnSlide(preface=[], columns=[], notes=[])\n\n    dict_shapes = assign_shapes(raw_slide, parameters, num_cols, slide_width_mm=slide_width_mm)\n\n    slide.preface = process_shapes(dict_shapes[\"shapes_pre\"])\n\n    if num_cols == 2:\n        slide.columns = [process_shapes(dict_shapes[\"shapes_l\"]), process_shapes(dict_shapes[\"shapes_r\"])]\n\n    elif num_cols == 3:\n        slide.columns = [\n            process_shapes(dict_shapes[\"shapes_l\"]),\n            process_shapes(dict_shapes[\"shapes_c\"]),\n            process_shapes(dict_shapes[\"shapes_r\"])\n        ]\n\n    return slide\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/outputter.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport os\nimport re\nimport urllib.parse\nfrom typing import List\n\nfrom rapidfuzz import fuzz\n\nfrom bisheng.pptx2md.types import ConversionConfig, ElementType, ParsedPresentation, SlideElement, SlideType, TextRun\nfrom bisheng.pptx2md.utils import rgb_to_hex\n\n\nclass Formatter:\n\n    def __init__(self, config: ConversionConfig):\n        os.makedirs(config.output_path.parent, exist_ok=True)\n        self.ofile = open(config.output_path, 'w', encoding='utf8')\n        self.config = config\n\n    def output(self, presentation_data: ParsedPresentation):\n        self.put_header()\n\n        last_element = None\n        last_title = None\n        for slide_idx, slide in enumerate(presentation_data.slides):\n            all_elements = []\n            if slide.type == SlideType.General:\n                all_elements = slide.elements\n            elif slide.type == SlideType.MultiColumn:\n                all_elements = slide.preface + slide.columns\n\n            for element in all_elements:\n                if last_element and last_element.type == ElementType.ListItem and element.type != ElementType.ListItem:\n                    self.put_list_footer()\n\n                match element.type:\n                    case ElementType.Title:\n                        element.content = element.content.strip()\n                        if element.content:\n                            if last_title and last_title.level == element.level and fuzz.ratio(\n                                    last_title.content, element.content, score_cutoff=92):\n                                # skip if the title is the same as the last one\n                                # Allow for repeated slide titles - One or more - Add (cont.) to the title\n                                if self.config.keep_similar_titles:\n                                    self.put_title(f'{element.content} (cont.)', element.level)\n                            else:\n                                self.put_title(element.content, element.level)\n                            last_title = element\n                    case ElementType.ListItem:\n                        if not (last_element and last_element.type == ElementType.ListItem):\n                            self.put_list_header()\n                        self.put_list(self.get_formatted_runs(element.content), element.level)\n                    case ElementType.Paragraph:\n                        self.put_para(self.get_formatted_runs(element.content))\n                    case ElementType.Image:\n                        self.put_image(element.path, element.width)\n                    case ElementType.Table:\n                        self.put_table([[self.get_formatted_runs(cell) for cell in row] for row in element.content])\n                last_element = element\n\n            if not self.config.disable_notes and slide.notes:\n                self.put_para('---')\n                for note in slide.notes:\n                    self.put_para(note)\n\n            if slide_idx < len(presentation_data.slides) - 1 and self.config.enable_slides:\n                self.put_para(\"\\n---\\n\")\n\n        self.close()\n\n    def put_header(self):\n        pass\n\n    def put_title(self, text, level):\n        pass\n\n    def put_list(self, text, level):\n        pass\n\n    def put_list_header(self):\n        self.put_para('')\n\n    def put_list_footer(self):\n        self.put_para('')\n\n    def get_formatted_runs(self, runs: List[TextRun]):\n        res = ''\n        for run in runs:\n            text = run.text\n            if text == '':\n                continue\n\n            if not self.config.disable_escaping:\n                text = self.get_escaped(text)\n\n            if run.style.hyperlink:\n                text = self.get_hyperlink(text, run.style.hyperlink)\n            if run.style.is_accent:\n                text = self.get_accent(text)\n            elif run.style.is_strong:\n                text = self.get_strong(text)\n            if run.style.color_rgb and not self.config.disable_color:\n                text = self.get_colored(text, run.style.color_rgb)\n\n            res += text\n        return res.strip()\n\n    def put_para(self, text):\n        pass\n\n    def put_image(self, path, max_width):\n        pass\n\n    def put_table(self, table):\n        pass\n\n    def get_accent(self, text):\n        pass\n\n    def get_strong(self, text):\n        pass\n\n    def get_colored(self, text, rgb):\n        pass\n\n    def get_hyperlink(self, text, url):\n        pass\n\n    def get_escaped(self, text):\n        pass\n\n    def write(self, text):\n        self.ofile.write(text)\n\n    def flush(self):\n        self.ofile.flush()\n\n    def close(self):\n        self.ofile.close()\n\n\nclass MarkdownFormatter(Formatter):\n    # write outputs to markdown\n    def __init__(self, config: ConversionConfig):\n        super().__init__(config)\n        self.esc_re1 = re.compile(r'([\\\\\\*`!_\\{\\}\\[\\]\\(\\)#\\+-\\.])')\n        self.esc_re2 = re.compile(r'(<[^>]+>)')\n\n    def put_title(self, text, level):\n        self.ofile.write('#' * level + ' ' + text + '\\n\\n')\n\n    def put_list(self, text, level):\n        self.ofile.write('  ' * level + '* ' + text.strip() + '\\n')\n\n    def put_para(self, text):\n        self.ofile.write(text + '\\n\\n')\n\n    def put_image(self, path, max_width=None):\n        if max_width is None:\n            self.ofile.write(f'![]({urllib.parse.quote(path)})\\n\\n')\n        else:\n            self.ofile.write(f'<img src=\"{path}\" style=\"max-width:{max_width}px;\" />\\n\\n')\n\n    def put_table(self, table):\n        gen_table_row = lambda row: '| ' + ' | '.join([c.replace('\\n', '<br />') for c in row]) + ' |'\n        self.ofile.write(gen_table_row(table[0]) + '\\n')\n        self.ofile.write(gen_table_row([':-:' for _ in table[0]]) + '\\n')\n        self.ofile.write('\\n'.join([gen_table_row(row) for row in table[1:]]) + '\\n\\n')\n\n    def get_accent(self, text):\n        return ' _' + text + '_ '\n\n    def get_strong(self, text):\n        return ' __' + text + '__ '\n\n    def get_colored(self, text, rgb):\n        return ' <span style=\"color:%s\">%s</span> ' % (rgb_to_hex(rgb), text)\n\n    def get_hyperlink(self, text, url):\n        return '[' + text + '](' + url + ')'\n\n    def esc_repl(self, match):\n        return '\\\\' + match.group(0)\n\n    def get_escaped(self, text):\n        text = re.sub(self.esc_re1, self.esc_repl, text)\n        text = re.sub(self.esc_re2, self.esc_repl, text)\n        return text\n\n\nclass WikiFormatter(Formatter):\n    # write outputs to wikitext\n    def __init__(self, config: ConversionConfig):\n        super().__init__(config)\n        self.esc_re = re.compile(r'<([^>]+)>')\n\n    def put_title(self, text, level):\n        self.ofile.write('!' * level + ' ' + text + '\\n\\n')\n\n    def put_list(self, text, level):\n        self.ofile.write('*' * (level + 1) + ' ' + text.strip() + '\\n')\n\n    def put_para(self, text):\n        self.ofile.write(text + '\\n\\n')\n\n    def put_image(self, path, max_width):\n        if max_width is None:\n            self.ofile.write(f'<img src=\"{path}\" />\\n\\n')\n        else:\n            self.ofile.write(f'<img src=\"{path}\" width={max_width}px />\\n\\n')\n\n    def get_accent(self, text):\n        return ' __' + text + '__ '\n\n    def get_strong(self, text):\n        return ' \\'\\'' + text + '\\'\\' '\n\n    def get_colored(self, text, rgb):\n        return ' @@color:%s; %s @@ ' % (rgb_to_hex(rgb), text)\n\n    def get_hyperlink(self, text, url):\n        return '[[' + text + '|' + url + ']]'\n\n    def esc_repl(self, match):\n        return \"''''\" + match.group(0)\n\n    def get_escaped(self, text):\n        text = re.sub(self.esc_re, self.esc_repl, text)\n        return text\n\n\nclass MadokoFormatter(Formatter):\n    # write outputs to madoko markdown\n    def __init__(self, config: ConversionConfig):\n        super().__init__(config)\n        self.ofile.write('[TOC]\\n\\n')\n        self.esc_re1 = re.compile(r'([\\\\\\*`!_\\{\\}\\[\\]\\(\\)#\\+-\\.])')\n        self.esc_re2 = re.compile(r'(<[^>]+>)')\n\n    def put_title(self, text, level):\n        self.ofile.write('#' * level + ' ' + text + '\\n\\n')\n\n    def put_list(self, text, level):\n        self.ofile.write('  ' * level + '* ' + text.strip() + '\\n')\n\n    def put_para(self, text):\n        self.ofile.write(text + '\\n\\n')\n\n    def put_image(self, path, max_width):\n        if max_width is None:\n            self.ofile.write(f'<img src=\"{path}\" />\\n\\n')\n        elif max_width < 500:\n            self.ofile.write(f'<img src=\"{path}\" width={max_width}px />\\n\\n')\n        else:\n            self.ofile.write('~ Figure {caption: image caption}\\n')\n            self.ofile.write('![](%s){width:%spx;}\\n' % (path, max_width))\n            self.ofile.write('~\\n\\n')\n\n    def get_accent(self, text):\n        return ' _' + text + '_ '\n\n    def get_strong(self, text):\n        return ' __' + text + '__ '\n\n    def get_colored(self, text, rgb):\n        return ' <span style=\"color:%s\">%s</span> ' % (rgb_to_hex(rgb), text)\n\n    def get_hyperlink(self, text, url):\n        return '[' + text + '](' + url + ')'\n\n    def esc_repl(self, match):\n        return '\\\\' + match.group(0)\n\n    def get_escaped(self, text):\n        text = re.sub(self.esc_re1, self.esc_repl, text)\n        text = re.sub(self.esc_re2, self.esc_repl, text)\n        return text\n\n\nclass QuartoFormatter(Formatter):\n    # write outputs to quarto markdown - reveal js\n    def __init__(self, config: ConversionConfig):\n        super().__init__(config)\n        self.esc_re1 = re.compile(r'([\\\\\\*`!_\\{\\}\\[\\]\\(\\)#\\+-\\.])')\n        self.esc_re2 = re.compile(r'(<[^>]+>)')\n\n    def output(self, presentation_data: ParsedPresentation):\n        self.put_header()\n\n        last_title = None\n\n        def put_elements(elements: List[SlideElement]):\n            nonlocal last_title\n\n            last_element = None\n            for element in elements:\n                if last_element and last_element.type == ElementType.ListItem and element.type != ElementType.ListItem:\n                    self.put_list_footer()\n\n                match element.type:\n                    case ElementType.Title:\n                        element.content = element.content.strip()\n                        if element.content:\n                            if last_title and last_title.level == element.level and fuzz.ratio(\n                                    last_title.content, element.content, score_cutoff=92):\n                                # skip if the title is the same as the last one\n                                # Allow for repeated slide titles - One or more - Add (cont.) to the title\n                                if self.config.keep_similar_titles:\n                                    self.put_title(f'{element.content} (cont.)', element.level)\n                            else:\n                                self.put_title(element.content, element.level)\n                            last_title = element\n                    case ElementType.ListItem:\n                        if not (last_element and last_element.type == ElementType.ListItem):\n                            self.put_list_header()\n                        self.put_list(self.get_formatted_runs(element.content), element.level)\n                    case ElementType.Paragraph:\n                        self.put_para(self.get_formatted_runs(element.content))\n                    case ElementType.Image:\n                        self.put_image(element.path, element.width)\n                    case ElementType.Table:\n                        self.put_table([[self.get_formatted_runs(cell) for cell in row] for row in element.content])\n                last_element = element\n\n        for slide_idx, slide in enumerate(presentation_data.slides):\n            if slide.type == SlideType.General:\n                put_elements(slide.elements)\n            elif slide.type == SlideType.MultiColumn:\n                put_elements(slide.preface)\n                if len(slide.columns) == 2:\n                    width = '50%'\n                elif len(slide.columns) == 3:\n                    width = '33%'\n                else:\n                    raise ValueError(f'Unsupported number of columns: {len(slide.columns)}')\n\n                self.put_para(':::: {.columns}')\n                for column in slide.columns:\n                    self.put_para(f'::: {{.column width=\"{width}\"}}')\n                    put_elements(column)\n                    self.put_para(':::')\n                self.put_para('::::')\n\n            if not self.config.disable_notes and slide.notes:\n                self.put_para(\"::: {.notes}\")\n                for note in slide.notes:\n                    self.put_para(note)\n                self.put_para(\":::\")\n\n            if slide_idx < len(presentation_data.slides) - 1 and self.config.enable_slides:\n                self.put_para(\"\\n---\\n\")\n\n        self.close()\n\n    def put_header(self):\n        self.ofile.write('''---\ntitle: \"Presentation Title\"\nauthor: \"Author\"\nformat: \n  revealjs:\n    slide-number: c/t\n    width: 1600\n    height: 900\n    logo: img/logo.png\n    footer: \"Organization\"\n    incremental: true\n    theme: [simple]\n---\n''')\n\n    def put_title(self, text, level):\n        self.ofile.write('#' * level + ' ' + text + '\\n\\n')\n\n    def put_list(self, text, level):\n        self.ofile.write('  ' * level + '* ' + text.strip() + '\\n')\n\n    def put_para(self, text):\n        self.ofile.write(text + '\\n\\n')\n\n    def put_image(self, path, max_width=None):\n        if max_width is None:\n            self.ofile.write(f'![]({urllib.parse.quote(path)})\\n\\n')\n        else:\n            self.ofile.write(f'<img src=\"{path}\" style=\"max-width:{max_width}px;\" />\\n\\n')\n\n    def put_table(self, table):\n        gen_table_row = lambda row: '| ' + ' | '.join([c.replace('\\n', '<br />') for c in row]) + ' |'\n        self.ofile.write(gen_table_row(table[0]) + '\\n')\n        self.ofile.write(gen_table_row([':-:' for _ in table[0]]) + '\\n')\n        self.ofile.write('\\n'.join([gen_table_row(row) for row in table[1:]]) + '\\n\\n')\n\n    def get_accent(self, text):\n        return ' _' + text + '_ '\n\n    def get_strong(self, text):\n        return ' __' + text + '__ '\n\n    def get_colored(self, text, rgb):\n        return ' <span style=\"color:%s\">%s</span> ' % (rgb_to_hex(rgb), text)\n\n    def get_hyperlink(self, text, url):\n        return '[' + text + '](' + url + ')'\n\n    def esc_repl(self, match):\n        return '\\\\' + match.group(0)\n\n    def get_escaped(self, text):\n        text = re.sub(self.esc_re1, self.esc_repl, text)\n        text = re.sub(self.esc_re2, self.esc_repl, text)\n        return text\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/parser.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom __future__ import print_function\n\nimport logging\nimport os\nfrom functools import partial\nfrom operator import attrgetter\nfrom typing import List, Union\n\nimport pptx\nfrom PIL import Image\nfrom pptx import Presentation\nfrom pptx.enum.dml import MSO_COLOR_TYPE, MSO_THEME_COLOR\nfrom pptx.enum.shapes import MSO_SHAPE_TYPE, PP_PLACEHOLDER\nfrom pptx.parts.image import Image as PPTXImage, Image\nfrom pptx.util import lazyproperty\nfrom rapidfuzz import process as fuze_process\nfrom tqdm import tqdm\n\nfrom bisheng.pptx2md.multi_column import get_multi_column_slide_if_present\nfrom bisheng.pptx2md.types import (\n    ConversionConfig,\n    GeneralSlide,\n    ImageElement,\n    ListItemElement,\n    ParagraphElement,\n    ParsedPresentation,\n    SlideElement,\n    TableElement,\n    TextRun,\n    TextStyle,\n    TitleElement,\n)\n\nlogger = logging.getLogger(__name__)\n\npicture_count = 0\n\n\n# CustomizableImageResolvepptxIssue with some image formats not supported in\nclass CustomImage(PPTXImage):\n    def __init__(self, blob: bytes, filename: str = None):\n        super(CustomImage, self).__init__(blob=blob, filename=filename)\n\n    @lazyproperty\n    def ext(self) -> str:\n        \"\"\"Canonical file extension for this image e.g. `'png'`.\n\n        The returned extension is all lowercase and is the canonical extension for the content type\n        of this image, regardless of what extension may have been used in its filename, if any.\n        \"\"\"\n        ext_map = {\n            \"BMP\": \"bmp\",\n            \"GIF\": \"gif\",\n            \"JPEG\": \"jpg\",\n            \"PNG\": \"png\",\n            \"TIFF\": \"tiff\",\n            \"WMF\": \"wmf\",\n            \"WEBP\": \"webp\",\n        }\n        format = self._format\n        if format not in ext_map:\n            tmpl = \"unsupported image format, expected one of: %s, got '%s'\"\n            raise ValueError(tmpl % (ext_map.keys(), format))\n        return ext_map[format]\n\n\ndef is_title(shape):\n    if shape.is_placeholder and (shape.placeholder_format.type == PP_PLACEHOLDER.TITLE or\n                                 shape.placeholder_format.type == PP_PLACEHOLDER.SUBTITLE or\n                                 shape.placeholder_format.type == PP_PLACEHOLDER.VERTICAL_TITLE or\n                                 shape.placeholder_format.type == PP_PLACEHOLDER.CENTER_TITLE):\n        return True\n    return False\n\n\ndef is_text_block(config: ConversionConfig, shape):\n    if shape.has_text_frame:\n        if shape.is_placeholder and shape.placeholder_format.type == PP_PLACEHOLDER.BODY:\n            return True\n        if len(shape.text) > config.min_block_size:\n            return True\n    return False\n\n\ndef is_list_block(shape) -> bool:\n    levels = []\n    for para in shape.text_frame.paragraphs:\n        if para.level not in levels:\n            levels.append(para.level)\n        if para.level != 0 or len(levels) > 1:\n            return True\n    return False\n\n\ndef is_accent(font):\n    if font.underline or font.italic or (\n            font.color.type == MSO_COLOR_TYPE.SCHEME and\n            (font.color.theme_color == MSO_THEME_COLOR.ACCENT_1 or font.color.theme_color == MSO_THEME_COLOR.ACCENT_2 or\n             font.color.theme_color == MSO_THEME_COLOR.ACCENT_3 or font.color.theme_color == MSO_THEME_COLOR.ACCENT_4 or\n             font.color.theme_color == MSO_THEME_COLOR.ACCENT_5 or font.color.theme_color == MSO_THEME_COLOR.ACCENT_6)):\n        return True\n    return False\n\n\ndef is_strong(font):\n    if font.bold or (font.color.type == MSO_COLOR_TYPE.SCHEME and (font.color.theme_color == MSO_THEME_COLOR.DARK_1 or\n                                                                   font.color.theme_color == MSO_THEME_COLOR.DARK_2)):\n        return True\n    return False\n\n\ndef get_text_runs(para) -> List[TextRun]:\n    runs = []\n    for run in para.runs:\n        result = TextRun(text=run.text, style=TextStyle())\n        if result.text == '':\n            continue\n        try:\n            if run.hyperlink.address:\n                result.style.hyperlink = run.hyperlink.address\n        except:\n            result.style.hyperlink = 'error:ppt-link-parsing-issue'\n        if is_accent(run.font):\n            result.style.is_accent = True\n        if is_strong(run.font):\n            result.style.is_strong = True\n        if run.font.color.type == MSO_COLOR_TYPE.RGB:\n            result.style.color_rgb = run.font.color.rgb\n        runs.append(result)\n    return runs\n\n\ndef process_title(config: ConversionConfig, shape, slide_idx) -> TitleElement:\n    text = shape.text_frame.text.strip()\n    if config.custom_titles:\n        res = fuze_process.extractOne(text, config.custom_titles.keys(), score_cutoff=92)\n        if not res:\n            return TitleElement(content=text.strip(), level=max(config.custom_titles.values()) + 1)\n        else:\n            logger.info(f'Title in slide {slide_idx} \"{text}\" is converted to \"{res[0]}\" as specified in title file.')\n            return TitleElement(content=res[0].strip(), level=config.custom_titles[res[0]])\n    else:\n        return TitleElement(content=text.strip(), level=1)\n\n\ndef process_text_blocks(config: ConversionConfig, shape, slide_idx) -> List[Union[ListItemElement, ParagraphElement]]:\n    results = []\n    if is_list_block(shape):\n        for para in shape.text_frame.paragraphs:\n            if para.text.strip() == '':\n                continue\n            text = get_text_runs(para)\n            results.append(ListItemElement(content=text, level=para.level))\n    else:\n        # paragraph block\n        for para in shape.text_frame.paragraphs:\n            if para.text.strip() == '':\n                continue\n            text = get_text_runs(para)\n            results.append(ParagraphElement(content=text))\n    return results\n\n\ndef process_picture(config: ConversionConfig, shape, slide_idx) -> Union[ImageElement, None]:\n    if config.disable_image:\n        return None\n\n    global picture_count\n\n    image = CustomImage(shape.image.blob, shape.image.filename)\n    file_prefix = ''.join(os.path.basename(config.pptx_path).split('.')[:-1])\n    pic_name = file_prefix + f'_{picture_count}'\n    pic_ext = image.ext\n    if not os.path.exists(config.image_dir):\n        os.makedirs(config.image_dir)\n\n    output_path = config.image_dir / f'{pic_name}.{pic_ext}'\n    common_path = os.path.commonpath([config.output_path, config.image_dir])\n    img_outputter_path = os.path.relpath(output_path, common_path).replace('\\\\', '/')\n    with open(output_path, 'wb') as f:\n        f.write(image.blob)\n        picture_count += 1\n\n    # normal images\n    if pic_ext != 'wmf':\n        return ImageElement(path=img_outputter_path, width=config.image_width)\n\n    # wmf images, try to convert, if failed, output as original\n    try:\n        try:\n            from PIL import Image\n            Image.open(output_path).save(os.path.splitext(output_path)[0] + '.png')\n            return ImageElement(path=os.path.splitext(img_outputter_path)[0] + '.png', width=config.image_width)\n        except Exception:  # Image failed, try another\n            from wand.image import Image\n            with Image(filename=output_path) as img:\n                img.format = 'png'\n                img.save(filename=os.path.splitext(output_path)[0] + '.png')\n            logger.info(f'Image {output_path} in slide {slide_idx} converted to png.')\n            return ImageElement(path=os.path.splitext(img_outputter_path)[0] + '.png', width=config.image_width)\n    except Exception:\n        logger.warning(f'Cannot convert wmf image {output_path} in slide {slide_idx} to png, skipped.')\n        return None\n\n\ndef process_table(config: ConversionConfig, shape, slide_idx) -> Union[TableElement, None]:\n    table = [[sum([get_text_runs(p)\n                   for p in cell.text_frame.paragraphs], [])\n              for cell in row.cells]\n             for row in shape.table.rows]\n    if len(table) > 0:\n        return TableElement(content=table)\n    return None\n\n\ndef ungroup_shapes(shapes) -> List[SlideElement]:\n    res = []\n    for shape in shapes:\n        try:\n            if shape.shape_type == MSO_SHAPE_TYPE.GROUP:\n                res.extend(ungroup_shapes(shape.shapes))\n            else:\n                res.append(shape)\n        except Exception as e:\n            logger.warning(f'failed to load shape {shape}, skipped. error: {e}')\n    return res\n\n\ndef process_shapes(config: ConversionConfig, current_shapes, slide_id: int) -> List[SlideElement]:\n    results = []\n    for shape in current_shapes:\n        if is_title(shape):\n            results.append(process_title(config, shape, slide_id))\n        elif is_text_block(config, shape):\n            results.extend(process_text_blocks(config, shape, slide_id))\n        elif shape.shape_type == MSO_SHAPE_TYPE.PICTURE:\n            try:\n                pic = process_picture(config, shape, slide_id)\n                if pic:\n                    results.append(pic)\n            except AttributeError as e:\n                logger.warning(f'Failed to process picture, skipped: {e}')\n        elif shape.shape_type == MSO_SHAPE_TYPE.TABLE:\n            table = process_table(config, shape, slide_id)\n            if table:\n                results.append(table)\n        else:\n            try:\n                ph = shape.placeholder_format\n                if ph.type == PP_PLACEHOLDER.OBJECT and hasattr(shape, \"image\") and getattr(shape, \"image\"):\n                    pic = process_picture(config, shape, slide_id)\n                    if pic:\n                        results.append(pic)\n            except:\n                pass\n\n    return results\n\n\ndef parse(config: ConversionConfig, prs: Presentation) -> ParsedPresentation:\n    result = ParsedPresentation(slides=[])\n\n    for idx, slide in enumerate(tqdm(prs.slides, desc='Converting slides')):\n        if config.page is not None and idx + 1 != config.page:\n            continue\n        shapes = []\n        try:\n            shapes = sorted(ungroup_shapes(slide.shapes), key=attrgetter('top', 'left'))\n        except:\n            logger.warning('Bad shapes encountered in this slide. Please check or remove them and try again.')\n            logger.warning('shapes:')\n            try:\n                for sp in slide.shapes:\n                    logger.warning(sp.shape_type)\n                    logger.warning(sp.top, sp.left, sp.width, sp.height)\n            except:\n                logger.warning('failed to print all bad shapes.')\n\n        if not config.try_multi_column:\n            result_slide = GeneralSlide(elements=process_shapes(config, shapes, idx + 1))\n        else:\n            multi_column_slide = get_multi_column_slide_if_present(\n                prs, slide, partial(process_shapes, config=config, slide_id=idx + 1))\n            if multi_column_slide:\n                result_slide = multi_column_slide\n            else:\n                result_slide = GeneralSlide(elements=process_shapes(config, shapes, idx + 1))\n\n        if not config.disable_notes and slide.has_notes_slide:\n            text = slide.notes_slide.notes_text_frame.text\n            if text:\n                result_slide.notes.append(text)\n\n        result.slides.append(result_slide)\n\n    return result\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/types.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom __future__ import annotations\n\nfrom enum import Enum\nfrom pathlib import Path\nfrom typing import List, Optional, Union\n\nfrom pydantic import BaseModel\n\n\nclass ConversionConfig(BaseModel):\n    \"\"\"Configuration for PowerPoint to Markdown conversion.\"\"\"\n\n    pptx_path: Path\n    \"\"\"Path to the pptx file to be converted\"\"\"\n\n    output_path: Path\n    \"\"\"Path of the output file\"\"\"\n\n    image_dir: Optional[Path]\n    \"\"\"Where to put images extracted\"\"\"\n\n    title_path: Optional[Path] = None\n    \"\"\"Path to the custom title list file\"\"\"\n\n    image_width: Optional[int] = None\n    \"\"\"Maximum image width in px\"\"\"\n\n    disable_image: bool = False\n    \"\"\"Disable image extraction\"\"\"\n\n    disable_wmf: bool = False\n    \"\"\"Keep wmf formatted image untouched (avoid exceptions under linux)\"\"\"\n\n    disable_color: bool = False\n    \"\"\"Do not add color HTML tags\"\"\"\n\n    disable_escaping: bool = False\n    \"\"\"Do not attempt to escape special characters\"\"\"\n\n    disable_notes: bool = False\n    \"\"\"Do not add presenter notes\"\"\"\n\n    enable_slides: bool = False\n    \"\"\"Deliniate slides with `\\n---\\n`\"\"\"\n\n    is_wiki: bool = False\n    \"\"\"Generate output as wikitext (TiddlyWiki)\"\"\"\n\n    is_mdk: bool = False\n    \"\"\"Generate output as madoko markdown\"\"\"\n\n    is_qmd: bool = False\n    \"\"\"Generate output as quarto markdown presentation\"\"\"\n\n    min_block_size: int = 15\n    \"\"\"The minimum character number of a text block to be converted\"\"\"\n\n    page: Optional[int] = None\n    \"\"\"Only convert the specified page\"\"\"\n\n    custom_titles: dict[str, int] = {}\n    \"\"\"Mapping of custom titles to their heading levels\"\"\"\n\n    try_multi_column: bool = False\n    \"\"\"Try to detect multi-column slides\"\"\"\n\n    keep_similar_titles: bool = False\n    \"\"\"Keep similar titles (allow for repeated slide titles - One or more - Add (cont.) to the title)\"\"\"\n\n\nclass ElementType(str, Enum):\n    Title = \"Title\"\n    ListItem = \"ListItem\"\n    Paragraph = \"Paragraph\"\n    Image = \"Image\"\n    Table = \"Table\"\n\n\nclass TextStyle(BaseModel):\n    is_accent: bool = False\n    is_strong: bool = False\n    color_rgb: Optional[tuple[int, int, int]] = None\n    hyperlink: Optional[str] = None\n\n\nclass TextRun(BaseModel):\n    text: str\n    style: TextStyle\n\n\nclass Position(BaseModel):\n    left: float\n    top: float\n    width: float\n    height: float\n\n\nclass BaseElement(BaseModel):\n    type: ElementType\n    position: Optional[Position] = None\n    style: Optional[TextStyle] = None\n\n\nclass TitleElement(BaseElement):\n    type: ElementType = ElementType.Title\n    content: str\n    level: int\n\n\nclass ListItemElement(BaseElement):\n    type: ElementType = ElementType.ListItem\n    content: List[TextRun]\n    level: int = 1\n\n\nclass ParagraphElement(BaseElement):\n    type: ElementType = ElementType.Paragraph\n    content: List[TextRun]\n\n\nclass ImageElement(BaseElement):\n    type: ElementType = ElementType.Image\n    path: str\n    width: Optional[int] = None\n    original_ext: str = \"\"  # For tracking original file extension (e.g. wmf)\n    alt_text: str = \"\"  # For accessibility\n\n\nclass TableElement(BaseElement):\n    type: ElementType = ElementType.Table\n    content: List[List[List[TextRun]]]  # rows -> cols -> rich text\n\n\nSlideElement = Union[TitleElement, ListItemElement, ParagraphElement, ImageElement, TableElement]\n\n\nclass SlideType(str, Enum):\n    MultiColumn = \"MultiColumn\"\n    General = \"General\"\n\n\nclass MultiColumnSlide(BaseModel):\n    type: SlideType = SlideType.MultiColumn\n    preface: List[SlideElement]\n    columns: List[SlideElement]\n    notes: List[str] = []\n\n\nclass GeneralSlide(BaseModel):\n    type: SlideType = SlideType.General\n    elements: List[SlideElement]\n    notes: List[str] = []\n\n\nSlide = Union[GeneralSlide, MultiColumnSlide]\n\n\nclass ParsedPresentation(BaseModel):\n    slides: List[Slide]\n"
  },
  {
    "path": "src/backend/bisheng/pptx2md/utils.py",
    "content": "# Copyright 2024 Liu Siyao\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\nimport os\nimport re\nimport shutil\nimport tempfile\nimport uuid\nfrom pathlib import Path\n\nfrom pptx import Presentation\n\nlogger = logging.getLogger(__name__)\n\n\ndef fix_null_rels(file_path):\n    temp_dir_name = tempfile.mkdtemp()\n    shutil.unpack_archive(file_path, temp_dir_name, 'zip')\n    rels = [\n        os.path.join(dp, f)\n        for dp, dn, filenames in os.walk(temp_dir_name)\n        for f in filenames\n        if os.path.splitext(f)[1] == '.rels'\n    ]\n    pat = re.compile(r'<\\S*Relationship[^>]+Target\\S*=\\S*\"NULL\"[^>]*/>', re.I)\n    for fn in rels:\n        f = open(fn, 'r+')\n        content = f.read()\n        res = pat.search(content)\n        if res is not None:\n            content = pat.sub('', content)\n            f.seek(0)\n            f.truncate()\n            f.write(content)\n        f.close()\n    tfn = uuid.uuid4().hex\n    shutil.make_archive(tfn, 'zip', temp_dir_name)\n    shutil.rmtree(temp_dir_name)\n    tgt = f'{file_path[:-5]}_purged.pptx'\n    shutil.move(f'{tfn}.zip', tgt)\n    return tgt\n\n\ndef load_pptx(file_path: str) -> Presentation:\n    if not os.path.exists(file_path):\n        logger.error(f'source file {file_path} not exist!')\n        logger.error(f'absolute path: {os.path.abspath(file_path)}')\n        raise FileNotFoundError(file_path)\n    try:\n        prs = Presentation(file_path)\n    except KeyError as err:\n        if len(err.args) > 0 and re.match(r'There is no item named .*NULL.* in the archive', str(err.args[0])):\n            logger.info('corrupted links found, trying to purge...')\n            try:\n                res_path = fix_null_rels(file_path)\n                logger.info(f'purged file saved to {res_path}.')\n                prs = Presentation(res_path)\n            except:\n                logger.error(\n                    'failed to purge corrupted links, you can report this at https://github.com/ssine/pptx2md/issues')\n                raise err\n        else:\n            logger.error('unknown error, you can report this at https://github.com/ssine/pptx2md/issues')\n            raise err\n    return prs\n\n\ndef prepare_titles(title_path: Path) -> dict[str, int]:\n    titles: dict[str, int] = {}\n    with open(title_path, 'r', encoding='utf8') as f:\n        indent = -1\n        for line in f.readlines():\n            cnt = 0\n            while line[cnt] == ' ':\n                cnt += 1\n            if cnt == 0:\n                titles[line.strip()] = 1\n            else:\n                if indent == -1:\n                    indent = cnt\n                    titles[line.strip()] = 2\n                else:\n                    titles[line.strip()] = cnt // indent + 1\n    return titles\n\n\ndef rgb_to_hex(rgb):\n    r, g, b = rgb\n    return f'#{r:02x}{g:02x}{b:02x}'\n"
  },
  {
    "path": "src/backend/bisheng/processing/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/processing/base.py",
    "content": "from typing import Tuple, Union\n\nfrom langchain_core.runnables import RunnableConfig\nfrom loguru import logger\n\nfrom bisheng.api.v1.callback import AsyncStreamingLLMCallbackHandler\nfrom bisheng.processing.process import fix_memory_inputs, format_actions\n\n\nasync def get_result_and_steps(langchain_object, inputs: Union[dict, str], **kwargs):\n    \"\"\"Get result and thought from extracted json\"\"\"\n\n    try:\n        if hasattr(langchain_object, 'verbose'):\n            langchain_object.verbose = True\n\n        if hasattr(langchain_object, 'return_intermediate_steps'):\n            # https://github.com/hwchase17/langchain/issues/2068\n            # Deactivating until we have a frontend solution\n            # to display intermediate steps\n            langchain_object.return_intermediate_steps = True\n        try:\n            fix_memory_inputs(langchain_object)\n        except Exception as exc:\n            logger.error(exc)\n\n        async_callbacks = [AsyncStreamingLLMCallbackHandler(**kwargs)]\n        output = await langchain_object.ainvoke(inputs, config=RunnableConfig(callbacks=async_callbacks))\n\n        intermediate_steps = (output.get('intermediate_steps', [])\n                              if isinstance(output, dict) else [])\n        source_document = (output.get('source_documents', '') if isinstance(output, dict) else '')\n        # Default copywriting for cases where the return is empty\n        if isinstance(output, dict):\n            result = output.get(langchain_object.output_keys[0])\n        else:\n            result = output\n\n        try:\n            if intermediate_steps and isinstance(intermediate_steps[0], Tuple):\n                thought = format_actions(intermediate_steps)\n            else:\n                thought = intermediate_steps\n        except Exception as exc:\n            logger.exception(exc)\n            thought = ''\n    except Exception as exc:\n        logger.exception(exc)\n        raise ValueError(f'Error: {str(exc)}') from exc\n    return result, thought, source_document\n"
  },
  {
    "path": "src/backend/bisheng/processing/process.py",
    "content": "import asyncio\nimport json\nfrom pathlib import Path\nfrom typing import Any, Coroutine, Dict, List, Optional, Tuple, Union\n\nfrom langchain.chains.base import Chain\nfrom langchain.schema import AgentAction, Document\nfrom langchain.vectorstores.base import VectorStore\nfrom loguru import logger\nfrom pydantic import BaseModel\nfrom sqlmodel import select\n\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.database.models.message import ChatMessage\nfrom bisheng.database.models.report import Report as ReportModel\nfrom bisheng.interface.run import build_sorted_vertices, get_memory_key, update_memory_keys\nfrom bisheng.services.deps import get_session_service\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.utils.docx_temp import test_replace_string\nfrom bisheng_langchain.input_output import Report\n\n\ndef fix_memory_inputs(langchain_object):\n    \"\"\"\n    Given a LangChain object, this function checks if it has a memory attribute and if that memory key exists in the\n    object's input variables. If so, it does nothing. Otherwise, it gets a possible new memory key using the\n    get_memory_key function and updates the memory keys using the update_memory_keys function.\n    \"\"\"\n    if not hasattr(langchain_object, 'memory') or langchain_object.memory is None:\n        return\n    try:\n        if (hasattr(langchain_object.memory, 'memory_key')\n                and langchain_object.memory.memory_key in langchain_object.input_variables):\n            return\n    except AttributeError:\n        input_variables = (langchain_object.prompt.input_variables if hasattr(\n            langchain_object, 'prompt') else langchain_object.input_keys)\n        if langchain_object.memory.memory_key in input_variables:\n            return\n\n    possible_new_mem_key = get_memory_key(langchain_object)\n    if possible_new_mem_key is not None:\n        update_memory_keys(langchain_object, possible_new_mem_key)\n\n\ndef format_actions(actions: List[Tuple[AgentAction, str]]) -> str:\n    \"\"\"Format a list of (AgentAction, answer) tuples into a string.\"\"\"\n    output = []\n    for action, answer in actions:\n        log = action.log\n        tool = action.tool\n        tool_input = action.tool_input\n        output.append(f'Log: {log}')\n        if 'Action' not in log and 'Action Input' not in log:\n            output.append(f'Tool: {tool}')\n            output.append(f'Tool Input: {tool_input}')\n        output.append(f'Answer: {answer}')\n        output.append('')  # Add a blank line\n    return '\\n'.join(output)\n\n\ndef get_result_and_thought(langchain_object: Any, inputs: dict):\n    \"\"\"Get result and thought from extracted json\"\"\"\n    try:\n        if hasattr(langchain_object, 'verbose'):\n            langchain_object.verbose = True\n\n        if hasattr(langchain_object, 'return_intermediate_steps'):\n            langchain_object.return_intermediate_steps = True\n\n        fix_memory_inputs(langchain_object)\n\n        try:\n            # all use chat handlers\n            # action = 'default'\n            from bisheng.api.v1 import callback\n            callbacks = [callback.StreamingLLMCallbackHandler(None, flow_id=None, chat_id=None)]\n            output = langchain_object(inputs, return_only_outputs=True, callbacks=callbacks)\n        except ValueError as exc:\n            # make the error message more informative\n            logger.debug(f'Error: {str(exc)}')\n            raise exc\n\n    except Exception as exc:\n        raise ValueError(f'Error: {str(exc)}') from exc\n    return output\n\n\ndef get_input_str_if_only_one_input(inputs: dict) -> Optional[str]:\n    \"\"\"Get input string if only one input is provided\"\"\"\n    return list(inputs.values())[0] if len(inputs) == 1 else None\n\n\ndef get_build_result(data_graph, session_id):\n    # If session_id is provided, load the langchain_object from the session\n    # using build_sorted_vertices_with_caching.get_result_by_session_id\n    # if it returns something different than None, return it\n    # otherwise, build the graph and return the result\n    if session_id:\n        logger.debug(f'Loading LangChain object from session {session_id}')\n        result = build_sorted_vertices(data_graph=data_graph)\n        if result is not None:\n            logger.debug('Loaded LangChain object')\n            return result\n\n    logger.debug('Building langchain object')\n    return build_sorted_vertices(data_graph)\n\n\ndef process_inputs(inputs: Optional[dict], artifacts: Dict[str, Any], input_key: str) -> dict:\n    if inputs is None:\n        inputs = {}\n\n    for key, value in artifacts.items():\n        if key == 'repr':\n            continue\n        elif key not in inputs or not inputs[key]:\n            inputs[key] = value\n    # For 7mmx7mmx10mm of blood clot,apiPengaturandefault inputto prevent the entry of changes after skill changes\n    if input_key not in inputs and 'default_input' in inputs:\n        inputs[input_key] = inputs.pop('default_input')\n    elif 'default_input' in inputs:\n        inputs.pop('default_input')\n    return inputs\n\n\ndef generate_result(langchain_object: Union[Chain, VectorStore], inputs: dict):\n    if isinstance(langchain_object, Chain):\n        if inputs is None:\n            raise ValueError('Inputs must be provided for a Chain')\n        logger.debug('Generating result and thought')\n        result = get_result_and_thought(langchain_object, inputs)\n\n        logger.debug('Generated result and thought')\n    elif isinstance(langchain_object, VectorStore):\n        result = langchain_object.search(**inputs)\n    elif isinstance(langchain_object, Document):\n        result = langchain_object.dict()\n    else:\n        logger.warning(f'Unknown langchain_object type: {type(langchain_object)}')\n        if isinstance(langchain_object, Coroutine):\n            result = asyncio.run(langchain_object)\n        result = langchain_object\n\n    return result\n\n\nclass Result(BaseModel):\n    result: Any = None\n    session_id: str\n\n\nasync def process_graph_cached(\n        data_graph: Dict[str, Any],\n        inputs: Optional[dict] = None,\n        clear_cache=False,\n        session_id=None,\n        flow_id=None,\n        history_count=10,\n) -> Result:\n    session_service = get_session_service()\n    if clear_cache:\n        session_service.clear_session(session_id)\n    if session_id is None:\n        session_id = session_service.generate_key(session_id=session_id, data_graph=data_graph)\n    # Load the graph using SessionService\n    session = await session_service.load_session(session_id,\n                                                 data_graph,\n                                                 artifacts={},\n                                                 process_file=True,\n                                                 flow_id=flow_id,\n                                                 chat_id=session_id)\n    graph, artifacts = session if session else (None, None)\n    if not graph:\n        raise ValueError('Graph not found in the session')\n    built_object = await graph.abuild()\n    input_key_object = built_object.input_keys[0]\n    # memery input\n    if hasattr(built_object, 'memory') and built_object.memory is not None:\n        fix_memory_inputs(built_object)\n        with get_sync_db_session() as session:\n            history = session.exec(\n                select(ChatMessage).where(\n                    ChatMessage.chat_id == session_id,\n                    ChatMessage.category.in_(['question', 'answer'])).order_by(\n                    ChatMessage.id.desc()).limit(history_count)).all()\n        history = list(reversed(history))\n        next_loop = -1\n        for index, chat_message in enumerate(history):\n            if index + 1 >= len(history):\n                continue\n            if index <= next_loop:\n                continue\n            if not chat_message.is_bot and history[index + 1].is_bot:\n                next_loop = index + 1\n                if not chat_message.message or not chat_message.message.startswith('{'):\n                    continue\n                inputs_hsitory = json.loads(chat_message.message)\n                outputs_history = {built_object.output_keys[0]: history[next_loop].message}\n                built_object.memory.save_context(inputs_hsitory, outputs_history)\n    if isinstance(built_object, Report):\n        processed_inputs = process_inputs(inputs, artifacts or {}, input_key_object)\n        result = generate_result(built_object, processed_inputs)\n        # build report\n        with get_sync_db_session() as db_session:\n            template = db_session.exec(\n                select(ReportModel).where(ReportModel.flow_id == flow_id).order_by(\n                    ReportModel.id.desc())).first()\n        if not template:\n            logger.error('template not found flow_id={}', flow_id)\n            raise ValueError(f'template not found flow_id={flow_id}')\n        minio_client = get_minio_storage_sync()\n        template_muban = await minio_client.get_share_link(template.object_name, clear_host=False)\n        report_name = built_object.report_name\n        report_name = report_name if report_name.endswith('.docx') else f'{report_name}.docx'\n        result = (result.get(built_object.output_keys[0]) if isinstance(result, dict) else result)\n        test_replace_string(template_muban, result, report_name)\n        result = {built_object.output_keys[0]: await minio_client.get_share_link(report_name, clear_host=False)}\n    elif any(\n            (vertex.id.startswith('InputNode')\n             for vertex in graph.vertices)) and (not inputs\n                                                 or all(len(ins) == 0 for ins in inputs.values())):\n        input_batch = []\n        for vertex in graph.vertices:\n            if vertex.id.startswith('InputNode'):\n                questions = await vertex.get_result()\n                for question in questions:\n                    input_batch.append({built_object.input_keys[0]: question})\n        report = ''\n        for question in input_batch:\n            logger.info('produce auto question question={}', question)\n            processed_inputs = process_inputs(question, artifacts or {}, input_key_object)\n            result = generate_result(built_object, processed_inputs)\n            report = f\"\"\"{report}### {question} \\n {result} \\n \"\"\"\n        result = report\n    else:\n        processed_inputs = process_inputs(inputs, artifacts or {}, input_key_object)\n        result = generate_result(built_object, processed_inputs)\n\n    # langchain_object is now updated with the new memory\n    # we need to update the cache with the updated langchain_object\n    session_service.update_session(session_id, (graph, artifacts))\n\n    return Result(result=result, session_id=session_id)\n\n\nasync def load_flow_from_json(flow: Union[Path, str, dict],\n                              tweaks: Optional[dict] = None,\n                              build=True):\n    \"\"\"\n    Load flow from a JSON file or a JSON object.\n\n    :param flow: JSON file path or JSON object\n    :param tweaks: Optional tweaks to be processed\n    :param build: If True, build the graph, otherwise return the graph object\n    :return: Langchain object or Graph object depending on the build parameter\n    \"\"\"\n    # If input is a file path, load JSON from the file\n    if isinstance(flow, (str, Path)):\n        with open(flow, 'r', encoding='utf-8') as f:\n            flow_graph = json.load(f)\n    # If input is a dictionary, assume it's a JSON object\n    elif isinstance(flow, dict):\n        flow_graph = flow\n    else:\n        raise TypeError('Input must be either a file path (str) or a JSON object (dict)')\n\n    graph_data = flow_graph['data']\n    if tweaks is not None:\n        graph_data = process_tweaks(graph_data, tweaks)\n    from bisheng.api.utils import build_flow_no_yield\n    graph = await build_flow_no_yield(graph_data=graph_data,\n                                      artifacts={},\n                                      process_file=True,\n                                      flow_id='tmp',\n                                      chat_id=None)\n\n    if build:\n        langchain_object = graph.build()\n        for object in langchain_object:\n            if hasattr(object._built_object, 'input_keys'):\n                langchain_object = object._built_object\n                break\n\n        if hasattr(langchain_object, 'verbose'):\n            langchain_object.verbose = True\n\n        if hasattr(langchain_object, 'return_intermediate_steps'):\n            # Deactivating until we have a frontend solution\n            # to display intermediate steps\n            langchain_object.return_intermediate_steps = False\n\n        fix_memory_inputs(langchain_object)\n        return langchain_object\n\n    return graph\n\n\ndef validate_input(graph_data: Dict[str, Any],\n                   tweaks: Dict[str, Dict[str, Any]]) -> List[Dict[str, Any]]:\n    if not isinstance(graph_data, dict) or not isinstance(tweaks, dict):\n        raise ValueError('graph_data and tweaks should be dictionaries')\n\n    nodes = graph_data.get('data', {}).get('nodes') or graph_data.get('nodes')\n\n    if not isinstance(nodes, list):\n        raise ValueError(\n            \"graph_data should contain a list of nodes under 'data' key or directly under 'nodes' key\"\n        )\n\n    return nodes\n\n\ndef apply_tweaks(node: Dict[str, Any], node_tweaks: Dict[str, Any]) -> None:\n    template_data = node.get('data', {}).get('node', {}).get('template')\n\n    if not isinstance(template_data, dict):\n        logger.warning(f\"Template data for node {node.get('id')} should be a dictionary\")\n        return\n\n    for tweak_name, tweak_value in node_tweaks.items():\n        if tweak_name and tweak_value and tweak_name in template_data:\n            key = tweak_name if tweak_name == 'file_path' else 'value'\n            template_data[tweak_name][key] = tweak_value\n        elif tweak_name and tweak_value:\n            template_data[tweak_name] = TemplateField(field_type=type(tweak_value).__name__,\n                                                      name=tweak_name,\n                                                      value=tweak_value).to_dict()\n\n\ndef process_tweaks(graph_data: Dict[str, Any], tweaks: Dict[str, Dict[str,\nAny]]) -> Dict[str, Any]:\n    \"\"\"\n    This function is used to tweak the graph data using the node id and the tweaks dict.\n\n    :param graph_data: The dictionary containing the graph data. It must contain a 'data' key with\n                       'nodes' as its child or directly contain 'nodes' key. Each node should have an 'id' and 'data'.\n    :param tweaks: A dictionary where the key is the node id and the value is a dictionary of the tweaks.\n                   The inner dictionary contains the name of a certain parameter as the key and the value to be tweaked.\n\n    :return: The modified graph_data dictionary.\n\n    :raises ValueError: If the input is not in the expected format.\n    \"\"\"\n    nodes = validate_input(graph_data, tweaks)\n\n    for node in nodes:\n        if isinstance(node, dict) and isinstance(node.get('id'), str):\n            node_id = node['id']\n            if node_tweaks := tweaks.get(node_id):\n                apply_tweaks(node, node_tweaks)\n        else:\n            logger.warning(\"Each node should be a dictionary with an 'id' key of type str\")\n\n    return graph_data\n"
  },
  {
    "path": "src/backend/bisheng/run_celery.py",
    "content": "from bisheng.worker.main import bisheng_celery\n\nif __name__ == '__main__':\n    bisheng_celery.start(\n        argv=['worker', '-l', 'info', '-c', '20', '-P', 'threads', '-Q', 'knowledge_celery,workflow_celery,celery'])\n\n    # bisheng_celery.worker_main(\n    #     argv=[\"worker\", \"--loglevel=info\", \"--logfile=./logs/celery.log\", '--pool=threads', '--concurrency=4',\"-Q=workflow_celery\"])\n    # worker.main(celery_app)\n    # celery -A run_celery.celery_app worker -l info -c 16\n    # celery -A run_celery.celery_app beat # Schedule cron job Rilis\n    # celery -A run_celery.celery_app worker -l info -P gevent # Scheduling Execution Tasks\n"
  },
  {
    "path": "src/backend/bisheng/run_celery_beat.py",
    "content": "from bisheng.worker.main import bisheng_celery\n\nif __name__ == '__main__':\n    bisheng_celery.start(argv=['beat', '--loglevel=debug'])\n\n    # bisheng_celery.worker_main(\n    #     argv=[\"worker\", \"--loglevel=info\", \"--logfile=./logs/celery.log\", '--pool=threads', '--concurrency=4',\"-Q=workflow_celery\"])\n    # worker.main(celery_app)\n    # celery -A run_celery.celery_app worker -l info -c 16\n    # celery -A run_celery.celery_app beat # Schedule cron job Rilis\n    # celery -A run_celery.celery_app worker -l info -P gevent # Scheduling Execution Tasks\n"
  },
  {
    "path": "src/backend/bisheng/script/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/script/base_telemetry_events_reindex.py",
    "content": "from bisheng.core.search.elasticsearch.manager import get_statistics_es_connection_sync\n\nINDEX_MAPPING = {\n    \"mappings\": {  # Defining the indexed Mapping\n        \"properties\": {\n            \"event_id\": {\"type\": \"keyword\"},\n            \"event_type\": {\"type\": \"keyword\"},\n            \"trace_id\": {\"type\": \"keyword\"},\n            \"timestamp\": {\"type\": \"date\", \"format\": \"strict_date_optional_time||epoch_second\"},\n            \"user_context\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"user_id\": {\"type\": \"integer\"},\n                    \"user_name\": {\"type\": \"keyword\"},\n                    \"user_group_infos\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"user_group_id\": {\"type\": \"integer\"},\n                            \"user_group_name\": {\"type\": \"keyword\"}\n                        }\n                    },\n                    \"user_role_infos\": {\n                        \"type\": \"object\",\n                        \"properties\": {\n                            \"role_id\": {\"type\": \"integer\"},\n                            \"role_name\": {\"type\": \"keyword\"},\n                            \"group_id\": {\"type\": \"integer\"},\n                        }\n                    }\n                }\n            },\n            \"event_data\": {\n                \"type\": \"object\",\n                \"dynamic\": True\n            }\n        }\n    }\n}\n\nimport time\n\n\ndef wait_for_task(\n        es,\n        task_id: str,\n        poll_interval: int = 10,\n        timeout: int = 3600,\n):\n    \"\"\"\n    轮询 ES task 状态，直到完成或超时\n    \"\"\"\n    start_time = time.time()\n\n    while True:\n\n        task_info = es.tasks.get(task_id=task_id)\n        completed = task_info.get(\"completed\", False)\n\n        if completed:\n            response = task_info.get(\"response\", {})\n            failures = response.get(\"failures\", [])\n            total = response.get(\"total\", 0)\n            created = response.get(\"created\", 0)\n            updated = response.get(\"updated\", 0)\n\n            print(\n                f\"[REINDEX DONE] total={total}, created={created}, updated={updated}\"\n            )\n\n            if failures:\n                raise RuntimeError(f\"Reindex failures: {failures}\")\n\n            return response\n\n        if time.time() - start_time > timeout:\n            raise TimeoutError(f\"Reindex task timeout: {task_id}\")\n\n        status = task_info.get(\"task\", {}).get(\"status\", {})\n        print(\n            f\"[REINDEX RUNNING] \"\n            f\"total={status.get('total', 0)} \"\n            f\"created={status.get('created', 0)} \"\n            f\"updated={status.get('updated', 0)}\"\n        )\n\n        time.sleep(poll_interval)\n\n\ndef count_docs(es, index):\n    return es.count(index=index)[\"count\"]\n\n\nif __name__ == '__main__':\n    es_conn = get_statistics_es_connection_sync()\n    temp_index_name = \"base_telemetry_events_v1\"\n    original_index_name = \"base_telemetry_events\"\n\n    # 1. 记录原始数据量\n    try:\n        source_count = count_docs(es_conn, original_index_name)\n        print(f\"Original doc count: {source_count}\")\n    except:\n        source_count = 0\n        print(\"Original index might not exist.\")\n\n    # 创建临时索引\n    if not es_conn.indices.exists(index=temp_index_name):\n        es_conn.indices.create(index=temp_index_name, body=INDEX_MAPPING)\n        print(f\"Created temporary index: {temp_index_name}\")\n\n    # 使用Elasticsearch的_reindex API进行数据迁移\n    reindex_body = {\n        \"source\": {\n            \"index\": original_index_name\n        },\n        \"dest\": {\n            \"index\": temp_index_name\n        }\n    }\n\n    resp = es_conn.options(request_timeout=3600).reindex(\n        body=reindex_body,\n        wait_for_completion=False\n    )\n\n    task_id = resp[\"task\"]\n    print(f\"Reindex started, task_id={task_id}\")\n\n    wait_for_task(\n        es_conn,\n        task_id=task_id,\n        poll_interval=5,\n        timeout=3600\n    )\n\n    # 删除原始索引\n    es_conn.indices.delete(index=original_index_name)\n\n    # 将临时索引重命名为原始索引名\n    es_conn.indices.put_alias(index=temp_index_name, name=original_index_name)\n\n\n    print(f\"Reindexed data to {original_index_name} successfully.\")\n\n"
  },
  {
    "path": "src/backend/bisheng/script/convert_sys_embeddings.py",
    "content": "from bisheng.common.services.config_service import settings\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.llm.domain.const import LLMServerType, LLMModelType\nfrom bisheng.llm.domain.models import LLMServer, LLMDao, LLMModel\n\n\ndef parse_openai_embedding_conf(name, model_name, embedding_conf):\n    # Explanation isazureright of privacyapiSERVICES\n    if embedding_conf.get('openai_api_type') in ('azure', 'azure_ad', 'azuread'):\n        server = LLMServer(\n            name=f\"AzureOpenAI\",\n            description='System upgrade automatically added',\n            type=LLMServerType.AZURE_OPENAI.value,\n            config={\n                \"azure_endpoint\": embedding_conf.pop(\"azure_endpoint\", ''),\n                \"openai_api_key\": embedding_conf.pop(\"openai_api_key\", ''),\n                \"openai_api_version\": embedding_conf.pop(\"openai_api_version\", '')\n            },\n            user_id=1,\n        )\n        model = LLMModel(\n            name=name,\n            model_name=model_name,\n            model_type=LLMModelType.EMBEDDING.value,\n            online=True,\n            user_id=1,\n        )\n    else:\n        server = LLMServer(\n            name=f\"OpenAI\",\n            description='System upgrade automatically added',\n            type=LLMServerType.OPENAI.value,\n            config={\n                \"openai_api_key\": embedding_conf.pop(\"openai_api_key\", ''),\n                \"openai_api_base\": embedding_conf.pop(\"openai_api_base\", ''),\n                \"openai_proxy\": embedding_conf.pop(\"openai_proxy\", ''),\n            },\n            user_id=1,\n        )\n        model = LLMModel(\n            name=name,\n            model_name=model_name,\n            model_type=LLMModelType.EMBEDDING.value,\n            online=True,\n            user_id=1,\n        )\n    return server, model\n\n\ndef parse_rt_embedding_conf(name, model_name, embedding_conf):\n    server = LLMServer(\n        name=f\"RT\",\n        description='System upgrade automatically added',\n        type=LLMServerType.BISHENG_RT.value,\n        config={\n            \"host_base_url\": embedding_conf.get(\"host_base_url\", ''),\n        },\n        user_id=1,\n    )\n    model = LLMModel(\n        name=name,\n        model_name=model_name,\n        model_type=LLMModelType.EMBEDDING.value,\n        online=True,\n        user_id=1,\n    )\n    return server, model\n\n\n# In the system configuration,embeddingconfiguration item, to the service provider in the model management, level-up034Execute this script\ndef convert_sys_embeddings_to_mysql():\n    knowledge_conf = settings.get_knowledge()\n    embeddings = knowledge_conf.get('embeddings', {})\n    if not embeddings:\n        print('no found embeddings')\n        return\n    # Query if there is an existing knowledge base\n    all_knowledge = KnowledgeDao.get_all_knowledge()\n    if not all_knowledge:\n        return\n\n    # Warehousing all system configurations first\n    need_add_server = {}\n    need_add_server_index = {}\n    for name, embedding_conf in embeddings.items():\n        model_name = embedding_conf.get('model')\n        if not model_name and name == 'text-embedding-ada-002':\n            model_name = 'text-embedding-ada-002'\n\n        if not model_name:\n            print(\"not foundmodelFirst name, not inserted into model management\")\n            continue\n        # Explanation isopenaiOfficial Services of\n        if name == 'text-embedding-ada-002' or embedding_conf.get('component') == 'openai':\n            server, model = parse_openai_embedding_conf(name, model_name, embedding_conf)\n        else:\n            # Explanation isrtDeployedembeddingModels\n            server, model = parse_rt_embedding_conf(name, model_name, embedding_conf)\n        if server.type not in need_add_server_index:\n            need_add_server_index[server.type] = 0\n        need_add_server_index[server.type] += 1\n        server.name = f\"{server.name}_{need_add_server_index[server.type]}\"\n\n        llm_server = LLMDao.insert_server_with_models(server, [model])\n        llm_model_list = LLMDao.get_model_by_server_ids([llm_server.id])\n        for one in llm_model_list:\n            if one.name == name:\n                need_add_server[name] = one\n\n    # Reset Model Configuration for Knowledge Base\n    update_knowledge = []\n    for one in all_knowledge:\n        if one.model in need_add_server:\n            print(f\"Modify Knowledge Base【{one.name}】 Model Configuration for\")\n            one.model = need_add_server[one.model].id\n            update_knowledge.append(one)\n\n    if update_knowledge:\n        KnowledgeDao.update_knowledge_list(update_knowledge)\n\n    if not need_add_server_index.get(LLMServerType.BISHENG_RT.value):\n        # Add a defaultRTservice provider\n        server = LLMServer(\n            name=f\"RT_OLD\",\n            description='The system upgrade is automatically added, and it is not recommended to use it in the future',\n            type=LLMServerType.BISHENG_RT.value,\n            config={\n                \"host_base_url\": 'http://xxxx:8000',\n            },\n            user_id=1,\n        )\n        llm_server = LLMDao.insert_server_with_models(server, [])\n\n\nif __name__ == '__main__':\n    convert_sys_embeddings_to_mysql()\n"
  },
  {
    "path": "src/backend/bisheng/script/knowledge.sh",
    "content": "#!/bin/bash\n\nexport PYTHONPATH=\"./\"\nrun_mode=${1:-convert_all}\nknowledge_id=${2:-0}\n\nif [ \"$run_mode\" = \"convert_all\" ]; then\n    echo \"Converting all knowledge\"\n    python bisheng/script/knowledge_data_convert.py --mode convert_all\nelif [ \"$run_mode\" = \"convert_one\" ]; then\n    echo \"Converting one knowledge : $knowledge_id\"\n    python bisheng/script/knowledge_data_convert.py --mode convert_one --id ${knowledge_id}\nelif [ \"$run_mode\" = \"scan_all\" ]; then\n    echo \"Scanning all knowledge files...\"\n    python bisheng/script/knowledge_data_fix.py --mode scan_all\nelif [ \"$run_mode\" = \"scan_one\" ]; then\n    echo \"Scanning single knowledge : $knowledge_id\"\n    python bisheng/script/knowledge_data_fix.py --mode scan_one --id ${knowledge_id}\nelif [ \"$run_mode\" = \"fix_all\" ]; then\n    echo \"Fixing all knowledge files...\"\n    python bisheng/script/knowledge_data_fix.py --mode fix_all\nelif [ \"$run_mode\" = \"fix_one\" ]; then\n    echo \"Fixing single knowledge : $knowledge_id\"\n    python bisheng/script/knowledge_data_fix.py --mode fix_one --id ${knowledge_id}\nelse\n    echo \"Invalid run mode. Use 'convert_all', 'convert_one', 'scan_all', 'scan_one', 'fix_all', or 'fix_one'.\"\n    exit 1\nfi\n"
  },
  {
    "path": "src/backend/bisheng/script/knowledge_data_convert.py",
    "content": "import argparse\nimport json\nimport traceback\nfrom typing import List, Dict\n\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao, KnowledgeTypeEnum\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFile\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.script.knowledge_data_fix import get_all_knowledge_files, _get_milvus_chunks_data, _get_es_chunks_data\n\nuser_map = {}\n\n\ndef get_user_name_by_id(user_id: int):\n    from bisheng.user.domain.models.user import UserDao\n\n    if user_id in user_map:\n        return user_map[user_id]\n    tmp_user = UserDao.get_user(user_id)\n    if tmp_user:\n        user_map[user_id] = tmp_user.user_name\n        return tmp_user.user_name\n\n    return f\"unknown user: {user_id}\"\n\n\ndef convert_new_metadata(old_metadata: Dict, file: KnowledgeFile, knowledge: Knowledge):\n    user_metadata = {}\n    if old_metadata.get(\"extra\"):\n        try:\n            user_metadata = json.loads(old_metadata[\"extra\"])\n        except Exception:\n            pass\n    return {\n        \"document_id\": file.id,\n        \"document_name\": file.file_name,\n        \"abstract\": old_metadata.get(\"title\", \"\"),\n        \"chunk_index\": old_metadata.get(\"chunk_index\", 0),\n        \"bbox\": old_metadata.get(\"bbox\", \"\"),\n        \"page\": old_metadata.get(\"page\", 0),\n        \"knowledge_id\": knowledge.id,\n        \"upload_time\": int(file.create_time.timestamp()),\n        \"update_time\": int(file.update_time.timestamp()),\n        \"uploader\": get_user_name_by_id(file.user_id),\n        \"updater\": get_user_name_by_id(file.user_id),\n        \"user_metadata\": user_metadata,\n    }\n\n\ndef convert_milvus_data(knowledge: Knowledge, all_file: List[KnowledgeFile], new_collection_name: str):\n    print(f\"converting ID:{knowledge.id} right of privacyMilvusDATA...\")\n    # convert_milvus_chunk\n    # New.. MilvusObjects\n\n    embedding = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n    new_milvus = KnowledgeRag.init_milvus_vectorstore(new_collection_name, embedding,\n                                                      metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n\n    for file in all_file:\n        all_file_chunk = _get_milvus_chunks_data(knowledge, all_fields_expect_pk=True, file_id=file.id)\n        if not all_file_chunk:\n            print(f\"The knowledge base upon ID:{knowledge.id} from here{file.id}NoMilvusdata, skipping the conversion.\")\n            continue\n        if all_file_chunk[0].get(\"document_id\"):\n            print(f\"The knowledge base upon ID:{knowledge.id} right of privacyMilvusData is already in the new format, skipping conversion.\")\n            return None\n        new_texts = []\n        new_metadata = []\n        new_embedding = []\n        for one in all_file_chunk:\n            new_texts.append(one[\"text\"])\n            new_metadata.append(convert_new_metadata(one, file, knowledge))\n            new_embedding.append(one[\"vector\"])\n        new_milvus.add_embeddings(texts=new_texts, embeddings=new_embedding, metadatas=new_metadata)\n\n    # Add conversion logic here\n    print(f\"The knowledge base upon ID:{knowledge.id} right of privacyMilvusData conversion complete.\")\n    return new_milvus\n\n\ndef convert_es_data(knowledge: Knowledge, all_file: List[KnowledgeFile], new_index_name: str):\n    print(f\"converting ID:{knowledge.id} right of privacyElasticsearchDATA...\")\n    # convert_es_chunk\n    es_vectorstore = KnowledgeRag.init_es_vectorstore_sync(new_index_name,\n                                                           metadata_schemas=KNOWLEDGE_RAG_METADATA_SCHEMA)\n    for file in all_file:\n        all_file_chunk = _get_es_chunks_data(knowledge, source=True, file_id=file.id)\n        if not all_file_chunk:\n            print(f\"The knowledge base upon ID:{knowledge.id} from here{file.id}Noesdata, skipping the conversion.\")\n            continue\n        if all_file_chunk[0].get(\"document_id\"):\n            print(f\"The knowledge base upon ID:{knowledge.id} right of privacyESData is already in the new format, skipping conversion.\")\n            return None\n        new_texts = []\n        new_metadata = []\n        for one in all_file_chunk:\n            new_texts.append(one[\"_source\"][\"text\"])\n            new_metadata.append(convert_new_metadata(one[\"_source\"][\"metadata\"], file, knowledge))\n        es_vectorstore.add_texts(texts=new_texts, metadatas=new_metadata)\n\n    print(f\"The knowledge base upon ID:{knowledge.id} right of privacyElasticsearchData conversion complete.\")\n    return es_vectorstore\n\n\ndef convert_one_knowledge_data(knowledge: Knowledge):\n    print(f\"Start Conversion ID:{knowledge.id}  {knowledge.name} Data...\")\n    if knowledge.collection_name.startswith(\"partition_\"):\n        print(f\"!!! Skip partition knowledge base ID:{knowledge.id} Data conversion. Please repair the data first\")\n        return\n    if knowledge.type == KnowledgeTypeEnum.QA.value:\n        print(f\"SkipQAThe knowledge base upon ID:{knowledge.id} Data conversion.!!!\")\n        return\n\n    all_file = get_all_knowledge_files(knowledge.id)\n    old_collection_name = knowledge.collection_name\n    old_index_name = knowledge.index_name\n    new_collection_name = f\"{old_collection_name}_new\"\n    new_index_name = f\"{old_index_name}_new\"\n    try:\n        old_milvus_vector = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(0, knowledge)\n        old_fields = old_milvus_vector.col.schema.fields\n        old_fields = {field.name: field for field in old_fields}\n        if \"document_id\" in old_fields:\n            print(f\"The knowledge base upon ID:{knowledge.id} The data is already in the new format, skipping the conversion.\")\n            return\n        milvus_vector = convert_milvus_data(knowledge, all_file, new_collection_name)\n        es_vector = convert_es_data(knowledge, all_file, new_index_name)\n        if milvus_vector and es_vector:\n            knowledge.collection_name = new_collection_name\n            knowledge.index_name = new_index_name\n            KnowledgeDao.update_one(knowledge)\n            # clear old data\n            milvus_vector.client.drop_collection(old_collection_name)\n            if es_vector.client.indices.exists(index=old_index_name):\n                es_vector.client.indices.delete(index=old_index_name)\n        else:\n            print(f\"The knowledge base upon ID:{knowledge.id} Data does not need to be updated.\")\n    except Exception as e:\n        print(f\"The knowledge base upon ID:{knowledge.id} Data conversion failed, error reason:{e}\")\n        traceback.print_exc()\n    # Add conversion logic here\n    print(f\"The knowledge base upon ID:{knowledge.id} Data conversion complete.\")\n\n\ndef convert_all_knowledge_data():\n    all_knowledge = KnowledgeDao.get_all_knowledge()\n    total = len(all_knowledge)\n    for index, knowledge in enumerate(all_knowledge):\n        print(\n            f\"convert progress: {round((index + 1) / total * 100, 2)}% knowledge id: {knowledge.id} name: {knowledge.name}\")\n        convert_one_knowledge_data(knowledge)\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--mode', type=str, default=\"convert_all\",\n                        help='modalities.convert_all: Convert data from all knowledge bases;convert_one: Convert data from a knowledge base')\n    # Maximum number of concurrency for a single process\n    parser.add_argument('--id', type=int, default=0, help='The knowledge base uponID, parameter is required if operating a single knowledge base')\n    args = parser.parse_args()\n\n    if args.mode == \"convert_all\":\n        convert_all_knowledge_data()\n    elif args.mode == \"convert_one\":\n        tmp_knowledge = KnowledgeDao.query_by_id(args.id)\n        if not tmp_knowledge:\n            print(f\"The knowledge base upon ID:{args.id} It does not exist and cannot be converted.\")\n            exit(0)\n        convert_one_knowledge_data(tmp_knowledge)\n    else:\n        print(\"modeParameter salah,can only be convert_all OR convert_one\")\n"
  },
  {
    "path": "src/backend/bisheng/script/knowledge_data_fix.py",
    "content": "import argparse\nimport os\nimport traceback\nfrom typing import List\n\nimport openpyxl\nfrom pymilvus import Collection\n\nfrom bisheng.api.services.knowledge_imp import decide_vectorstores, QA_save_knowledge, delete_vector_data\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, Knowledge, KnowledgeTypeEnum\nfrom bisheng.knowledge.domain.models.knowledge_file import QAKnoweldgeDao, KnowledgeFileDao, QAKnowledge, KnowledgeFile, \\\n    QAStatus, KnowledgeFileStatus\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.worker.knowledge.file_worker import insert_milvus\n\n_output_path = os.path.join(os.path.dirname(__file__), 'output')\nos.makedirs(_output_path, exist_ok=True)\n\n\ndef get_all_knowledge() -> List[Knowledge]:\n    all_knowledge = []\n    page = 1\n    limit = 1000\n    while True:\n        knowledge = KnowledgeDao.get_all_knowledge(page=page, limit=limit)\n        if not knowledge:\n            break\n        page += 1\n        all_knowledge.extend(knowledge)\n    return all_knowledge\n\n\ndef get_all_qa_knowledge_files(knowledge_id: int) -> List[QAKnowledge]:\n    all_files = []\n    page = 1\n    limit = 1000\n    while True:\n        files = QAKnoweldgeDao.get_qa_knowledge_by_knowledge_id(knowledge_id, page=page, page_size=limit)\n        if not files:\n            break\n        page += 1\n        for file in files:\n            if file.status != QAStatus.ENABLED.value:\n                continue\n            all_files.append(file)\n    return all_files\n\n\ndef get_all_knowledge_files(knowledge_id: int) -> List[KnowledgeFile]:\n    all_files = []\n    page = 1\n    limit = 1000\n    while True:\n        files = KnowledgeFileDao.get_file_by_filters(knowledge_id, page=page, page_size=limit)\n        if not files:\n            break\n        page += 1\n        for file in files:\n            if file.status != KnowledgeFileStatus.SUCCESS.value:\n                continue\n            all_files.append(file)\n    return all_files\n\n\ndef _get_es_chunks_data(knowledge: Knowledge, es_obj=None, source: bool = False, file_id: int = None):\n    if not es_obj:\n        embedding = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n        es_obj = decide_vectorstores(knowledge.index_name or knowledge.collection_name, \"ElasticKeywordsSearch\",\n                                     embedding)\n    es_client = es_obj.client\n    all_chunks = []\n\n    def handle_hits(hits):\n        for hit in hits:\n            all_chunks.append({\n                \"file_id\": hit['fields'].get('metadata.file_id', [''])[0],\n                \"source\": hit['fields'].get('metadata.source', [''])[0],\n                \"extra\": hit['fields'].get('metadata.extra', [''])[0],\n                \"_id\": hit['_id'],\n                \"_source\": hit['_source'] if source else None,\n            })\n\n    query = {\"match_all\": {}}\n    if file_id:\n        query = {\"term\": {\"metadata.file_id\": file_id}}\n    result = es_client.search(index=knowledge.index_name or knowledge.collection_name,\n                              query=query,\n                              size=5000,\n                              scroll=\"5m\",\n                              source=source,\n                              fields=[\"_id\", \"metadata.source\", \"metadata.file_id\", \"metadata.extra\"])\n    handle_hits(result[\"hits\"][\"hits\"])\n    scroll_id = result['_scroll_id']\n    while True:\n        result = es_client.scroll(scroll_id=scroll_id, scroll='1m')\n        tmp_hits = result['hits']['hits']\n        if not tmp_hits:\n            break\n        handle_hits(tmp_hits)\n        scroll_id = result['_scroll_id']\n    es_client.clear_scroll(scroll_id=scroll_id)\n    return all_chunks\n\n\ndef _get_milvus_chunks_data(knowledge: Knowledge, milvus_obj=None, all_fields_expect_pk: bool = False,\n                            file_id: int = None):\n    if not milvus_obj:\n        embedding = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n        milvus_obj = decide_vectorstores(knowledge.collection_name, \"Milvus\", embedding)\n    all_milvus_chunks = []\n    output_fields = [\"file_id\", \"extra\", \"source\", \"pk\"]\n    if all_fields_expect_pk:\n        output_fields = [s.name for s in milvus_obj.col.schema.fields if s.name != \"pk\"]\n    expr = f\"knowledge_id=='{knowledge.id}'\" if knowledge.collection_name.startswith(\"partition_\") else None\n    if file_id:\n        expr = f\"{expr} and file_id=={file_id}\" if expr else f\"file_id == {file_id}\"\n    iterator = milvus_obj.col.query_iterator(\n        batch_size=1000,\n        expr=expr,\n        output_fields=output_fields,\n        timeout=30,\n    )\n    while True:\n        result = iterator.next()\n        if not result:\n            iterator.close()\n            break\n        all_milvus_chunks.extend(result)\n    return all_milvus_chunks\n\n\ndef _scan_knowledge_error_data(knowledge: Knowledge, all_file_data: List[KnowledgeFile | QAKnowledge], milvus_obj,\n                               es_obj):\n    all_milvus_chunks = _get_milvus_chunks_data(knowledge, milvus_obj)\n    judge_qa_chunk = lambda x: not x.get(\"source\")\n    if knowledge.type != KnowledgeTypeEnum.QA.value:\n        judge_qa_chunk = lambda x: x.get(\"source\")\n    all_milvus_chunks_map = {\n        item[\"file_id\"]: item for item in all_milvus_chunks if judge_qa_chunk(item)  # source Absent Explanation YesQACorrect data, otherwise it is the data of the document knowledge base\n    }\n    all_es_chunks = _get_es_chunks_data(knowledge, es_obj)\n    all_es_chunks_map = {\n        item[\"file_id\"]: item for item in all_es_chunks if judge_qa_chunk(item)  # source Absent Explanation YesQACorrect data, otherwise it is the data of the document knowledge base\n    }\n    no_data = []\n    no_milvus_data = []\n    no_es_data = []\n    for file in all_file_data:\n        milvus_flag = file.id in all_milvus_chunks_map\n        if milvus_flag:\n            all_milvus_chunks_map.pop(file.id)\n        es_flag = file.id in all_es_chunks_map\n        if es_flag:\n            all_es_chunks_map.pop(file.id)\n        if not milvus_flag and not es_flag:\n            no_data.append(file)\n        elif not milvus_flag:\n            no_milvus_data.append(file)\n        elif not es_flag:\n            no_es_data.append(file)\n\n    return no_data, no_milvus_data, no_es_data, all_milvus_chunks_map, all_es_chunks_map\n\n\ndef scan_qa_knowledge_error_data(knowledge: Knowledge, milvus_obj, es_obj):\n    \"\"\" scan all qa knowledge data and find those that not exist in milvus \"\"\"\n    all_qa = get_all_qa_knowledge_files(knowledge.id)\n    return _scan_knowledge_error_data(knowledge, all_qa, milvus_obj, es_obj)\n\n\ndef scan_normal_knowledge_error_data(knowledge: Knowledge, milvus_obj, es_obj):\n    \"\"\" scan all normal knowledge data and find those that not exist in milvus \"\"\"\n    all_files = get_all_knowledge_files(knowledge.id)\n    return _scan_knowledge_error_data(knowledge, all_files, milvus_obj, es_obj)\n\n\ndef _file_status(file: KnowledgeFile):\n    if file.status == KnowledgeFileStatus.PROCESSING.value:\n        return \"Parsing\"\n    elif file.status == KnowledgeFileStatus.SUCCESS.value:\n        return \"Parsing Successful\"\n    elif file.status == KnowledgeFileStatus.FAILED.value:\n        return \"Parse Failure\"\n    elif file.status == KnowledgeFileStatus.REBUILDING.value:\n        return \"Rebuilding\"\n    elif file.status == KnowledgeFileStatus.WAITING.value:\n        return \"In queue:\"\n    elif file.status == KnowledgeFileStatus.TIMEOUT.value:\n        return \"Timed out\"\n    else:\n        return \"Unknown Status\"\n\n\ndef _qa_status(file: QAKnowledge):\n    if file.status == QAStatus.ENABLED.value:\n        return \"Enable\"\n    elif file.status == QAStatus.DISABLED.value:\n        return \"Disable\"\n    elif file.status == QAStatus.PROCESSING.value:\n        return \"Sedang diproses\"\n    elif file.status == QAStatus.FAILED.value:\n        return \"Failed to Process\"\n    else:\n        return \"Unknown Status\"\n\n\ndef _knowledge_common_row(knowledge: Knowledge, note: str = \"\"):\n    one_common_row = [knowledge.id, knowledge.name, knowledge.collection_name, knowledge.index_name]\n    if knowledge.type == KnowledgeTypeEnum.QA.value:\n        one_common_row.append(\"QAThe knowledge base upon\")\n    elif knowledge.type == KnowledgeTypeEnum.NORMAL.value:\n        one_common_row.append(\"Docly Knowledge Base\")\n    elif knowledge.type == KnowledgeTypeEnum.PRIVATE.value:\n        one_common_row.append(\"Personal Knowledge Base\")\n    else:\n        one_common_row.append(\"Unknown type knowledge base\")\n    one_common_row.append(knowledge.create_time.strftime(\"%Y-%m-%d %H:%M:%S\"))\n    one_common_row.append(knowledge.update_time.strftime(\"%Y-%m-%d %H:%M:%S\"))\n    one_common_row.append(note)\n    return one_common_row\n\n\ndef _file_row(knowledge: Knowledge, file: KnowledgeFile | QAKnowledge, milvus_flag: str, es_flag: str):\n    return [\n        file.id,\n        file.file_name if knowledge.type != KnowledgeTypeEnum.QA.value else file.questions[0],\n        _file_status(file) if knowledge.type != KnowledgeTypeEnum.QA.value else _qa_status(file),\n        file.create_time.strftime(\"%Y-%m-%d %H:%M:%S\"),\n        file.update_time.strftime(\"%Y-%m-%d %H:%M:%S\"),\n        milvus_flag,\n        es_flag,\n    ]\n\n\ndef _init_knowledge_obj(knowledge: Knowledge):\n    try:\n        embedding = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n    except Exception as e:\n        print(\n            f\"!!!! skip knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} because embedding model error: {e}\")\n        raise Exception(f\"Skip this Knowledge Base, Reason:embeddingModel error: {e}\")\n    try:\n        milvus_obj = decide_vectorstores(knowledge.collection_name, \"Milvus\", embedding)\n        if milvus_obj.col is None:\n            raise Exception(\"Skip this Knowledge Base, Reason:Milvus collection name not exist\")\n        collection_info = milvus_obj.col.schema\n        fields = collection_info.fields\n        fields = {field.name: 1 for field in fields}\n        if \"extra\" not in fields or \"source\" not in fields or \"file_id\" not in fields:\n            raise Exception(\"Skip this Knowledge Base, Reason:Milvus fields not found file_id or source or extra\")\n    except Exception as e:\n        print(\n            f\"!!!! skip knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} because milvus connection error: {e}\")\n        raise Exception(f\"Skip this Knowledge Base, Reason:MilvusConnection Error: {e}\")\n    try:\n        es_obj = decide_vectorstores(knowledge.index_name or knowledge.collection_name, \"ElasticKeywordsSearch\",\n                                     embedding)\n    except Exception as e:\n        print(\n            f\"!!!! skip knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} because es connection error: {e}\")\n        raise Exception(f\"Skip this Knowledge Base, Reason:ESConnection Error: {e}\")\n    return milvus_obj, es_obj\n\n\ndef _save_knowledge_error_data(rows: List[List[str]], file_name: str):\n    header_rows = [\n        ['The knowledge base uponID', 'Library Name', 'collection_name', 'index_name', 'Knowledge Base Post Type', 'Knowledge Base Created Time', 'Knowledge Base Updated Time',\n         'Knowledge Base Notes', 'Doc.ID', 'File Name',\n         'Document Status',\n         'File Created Time', 'File Updated Time', 'Milvuspresence or does it', 'ESpresence or does it']\n    ]\n    if not rows:\n        print(\"no error data found\")\n        return\n    rows = header_rows + rows\n    wb = openpyxl.workbook.Workbook()\n    sh = wb.active\n    for row in rows:\n        sh.append(row)\n    file_path = os.path.join(_output_path, file_name)\n    wb.save(file_path)\n    print(f\"=========== knowledge error data file saved to: {file_path}\")\n\n\ndef scan_one_knowledge(knowledge: Knowledge = None, knowledge_id: int = None) -> List[List[str]]:\n    \"\"\" return error data rows for one knowledge \"\"\"\n    if not knowledge:\n        knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge:\n            print(f\"knowledge_id: {knowledge_id} not exist\")\n            return []\n    try:\n        milvus_obj, es_obj = _init_knowledge_obj(knowledge)\n    except Exception as e:\n        print(\n            f\"!!!! skip knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} because error: {e}\")\n        return [_knowledge_common_row(knowledge, str(e))]\n    if knowledge.type == KnowledgeTypeEnum.QA.value:\n        no_data, no_milvus_data, no_es_data, milvus_extra, es_extra = scan_qa_knowledge_error_data(knowledge,\n                                                                                                   milvus_obj,\n                                                                                                   es_obj)\n    else:\n        no_data, no_milvus_data, no_es_data, milvus_extra, es_extra = scan_normal_knowledge_error_data(knowledge,\n                                                                                                       milvus_obj,\n                                                                                                       es_obj)\n    if not no_data and not no_milvus_data and not no_es_data:\n        return []\n    print(f\"!!!! find error data knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n    note = \"\"\n    if milvus_extra and es_extra:\n        note = \"Milvus And ES Redundant data present\"\n    elif milvus_extra:\n        note = \"Milvus Redundant data present\"\n    elif es_extra:\n        note = \"ES Redundant data present\"\n    one_common_row = _knowledge_common_row(knowledge, note)\n\n    def _parse_one_row(file, milvus_flag: str, es_flag: str):\n        one_row = one_common_row.copy()\n        one_row.extend(_file_row(knowledge, file, milvus_flag, es_flag))\n\n        return one_row\n\n    rows = []\n    for one in no_data:\n        rows.append(_parse_one_row(one, \"No \", \"No \"))\n    for one in no_milvus_data:\n        rows.append(_parse_one_row(one, \"No \", \"Yes \"))\n    for one in no_es_data:\n        rows.append(_parse_one_row(one, \"Yes \", \"No \"))\n    if not rows and note:\n        return [one_common_row]\n    return rows\n\n\ndef scan_knowledge_error_data():\n    \"\"\" scan all knowledge data and find those that not exist in milvus \"\"\"\n    all_knowledge = get_all_knowledge()\n\n    total = len(all_knowledge)\n    rows = []\n    for index, knowledge in enumerate(all_knowledge):\n        print(\n            f\"{round(index / total * 100, 2)}% ---- start scan knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n\n        error_rows = scan_one_knowledge(knowledge)\n        if error_rows:\n            rows.extend(error_rows)\n        else:\n            print(f\"==== no error data knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n\n    _save_knowledge_error_data(rows, \"all_knowledge_error_data.xlsx\")\n\n    return None\n\n\ndef _sync_milvus_new_collection_name(knowledge: Knowledge, milvus_obj) -> bool:\n    \"\"\" copy knowledge data to new milvus collection name \"\"\"\n    embedding = LLMService.get_bisheng_knowledge_embedding_sync(0, model_id=int(knowledge.model))\n    new_collection_name = knowledge.index_name or knowledge.collection_name\n    if new_collection_name == knowledge.collection_name:\n        return milvus_obj\n    # create new collection name\n    new_col = Collection(name=new_collection_name, schema=milvus_obj.col.schema, using=milvus_obj.alias,\n                         consistency_level=milvus_obj.consistency_level)\n    new_milvus_obj = decide_vectorstores(new_collection_name, \"Milvus\", embedding)\n\n    output_fields = [s.name for s in milvus_obj.col.schema.fields if s.name != \"pk\"]\n\n    try:\n        # get old chunks\n        all_chunks = _get_milvus_chunks_data(knowledge, milvus_obj, all_fields_expect_pk=True)\n        insert_milvus(all_chunks, output_fields, new_milvus_obj)\n        knowledge.collection_name = new_collection_name\n        knowledge = KnowledgeDao.update_one(knowledge)\n        return new_milvus_obj\n    except Exception as e:\n        print(\n            f\"!!!! copy vector data knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} error: {e}\")\n        new_milvus_obj.col.delete()\n        return False\n\n\ndef _fix_knowledge_data(knowledge: Knowledge, milvus_obj, es_obj, all_files: List[QAKnowledge | KnowledgeFile]):\n    \"\"\" fix all qa knowledge data \"\"\"\n    if knowledge.collection_name.startswith(\"partition_\"):\n        print(\"start copy milvus data to new collection_name\")\n        milvus_obj = _sync_milvus_new_collection_name(knowledge, milvus_obj)\n        if not milvus_obj:\n            raise Exception(f\"copy milvus data to new collection_name failed\")\n        print(\"finish copy milvus data to new collection_name\")\n\n    all_milvus_chunk = _get_milvus_chunks_data(knowledge, milvus_obj, all_fields_expect_pk=True)\n    all_milvus_chunk_map = {}\n    all_es_chunk = _get_es_chunks_data(knowledge, es_obj, source=True)\n    all_es_chunk_map = {}\n\n    judge_qa_chunk = lambda x: not x.get(\"source\")\n    if knowledge.type != KnowledgeTypeEnum.QA.value:\n        judge_qa_chunk = lambda x: x.get(\"source\")\n\n    remove_pk = []\n    remove_id = []\n    for item in all_milvus_chunk:\n        # have source, is doc chunk\n        if not judge_qa_chunk(item):\n            remove_pk.append(item.get(\"pk\"))\n            continue\n        if item[\"file_id\"] not in all_milvus_chunk_map:\n            all_milvus_chunk_map[item[\"file_id\"]] = []\n        all_milvus_chunk_map[item[\"file_id\"]].append(item)\n    for item in all_es_chunk:\n        # no source, is qa chunk\n        if not judge_qa_chunk(item):\n            remove_id.append(item.get(\"_id\"))\n            continue\n        if item[\"file_id\"] not in all_es_chunk_map:\n            all_es_chunk_map[item[\"file_id\"]] = []\n        all_es_chunk_map[item[\"file_id\"]].append(item)\n    old_all_milvus_chunk_map = all_milvus_chunk_map.copy()\n    old_all_es_chunk_map = all_es_chunk_map.copy()\n    no_data = []\n    no_milvus_data = []\n    no_es_data = []\n    for file in all_files:\n        milvus_flag = file.id in all_milvus_chunk_map\n        if milvus_flag:\n            all_milvus_chunk_map.pop(file.id)\n        es_flag = file.id in all_es_chunk_map\n        if es_flag:\n            all_es_chunk_map.pop(file.id)\n        if not milvus_flag and not es_flag:\n            no_data.append(file)\n        elif not milvus_flag:\n            no_milvus_data.append(file)\n        elif not es_flag:\n            no_es_data.append(file)\n    if remove_pk:\n        print(\n            f\"----remove extra milvus data knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} pk: {remove_pk}\")\n        milvus_obj.col.delete(expr=f\"pk in {remove_pk}\")\n    if remove_id:\n        print(\n            f\"----remove extra es data knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} _id: {remove_id}\")\n        es_obj.client.delete_by_query(index=knowledge.index_name or knowledge.collection_name,\n                                      query={\"terms\": {\"_id\": remove_id}})\n\n    if all_milvus_chunk_map:\n        print(f\"---- fix knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} milvus extra data found\")\n        for file_id, chunks in all_milvus_chunk_map.items():\n            milvus_obj.col.delete(expr=f\"file_id=={file_id}\")\n    if all_es_chunk_map:\n        print(f\"---- fix knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} es extra data found\")\n        es_obj.client.delete_by_query(index=knowledge.index_name or knowledge.collection_name,\n                                      query={\"terms\": {\"metadata.file_id\": list(all_es_chunk_map.keys())}})\n\n    return no_data, no_milvus_data, no_es_data, old_all_milvus_chunk_map, old_all_es_chunk_map, milvus_obj\n\n\ndef fix_qa_knowledge_data(knowledge: Knowledge, milvus_obj, es_obj):\n    all_qa = get_all_qa_knowledge_files(knowledge.id)\n    no_data, no_milvus_data, no_es_data, _, _, _ = _fix_knowledge_data(knowledge, milvus_obj, es_obj, all_qa)\n    for qa in no_data:\n        print(f\"try insert qa {qa.id} into vector store\")\n        QA_save_knowledge(knowledge, qa)\n    for qa in no_milvus_data:\n        print(f\"try insert qa {qa.id} into vector store\")\n        delete_vector_data(knowledge, [qa.id])\n        QA_save_knowledge(knowledge, qa)\n    for qa in no_es_data:\n        print(f\"try insert qa {qa.id} into vector store\")\n        delete_vector_data(knowledge, [qa.id])\n        QA_save_knowledge(knowledge, qa)\n\n\ndef fix_normal_knowledge_data(knowledge: Knowledge, milvus_obj, es_obj):\n    all_file = get_all_knowledge_files(knowledge.id)\n    no_data, no_milvus_data, no_es_data, all_milvus, all_es, milvus_obj = _fix_knowledge_data(knowledge, milvus_obj,\n                                                                                              es_obj,\n                                                                                              all_file)\n    for file in no_data:\n        print(f\"update file to failed status file_id: {file.id}; file_name: {file.file_name}\")\n        KnowledgeFileDao.update_file_status([file.id], KnowledgeFileStatus.FAILED,\n                                            \"The file data was found to be missing when the knowledge base data was repaired. The file status has been updated to parse failed. Please parse again.\")\n    for file in no_milvus_data:\n        es_chunks = all_es.get(file.id, [])\n        if not es_chunks:\n            file.status = KnowledgeFileStatus.FAILED.value\n            file.remark = \"The file data was found to be missing when the knowledge base data was repaired. The file status has been updated to parse failed. Please parse again.\"\n            KnowledgeFileDao.update(file)\n            print(f\"!!!!skip file_id: {file.id}; file_name: {file.file_name} because es data not found\")\n            continue\n        texts = []\n        metadatas = []\n        for chunk in es_chunks:\n            texts.append(chunk[\"_source\"][\"text\"])\n            metadatas.append(chunk[\"_source\"][\"metadata\"])\n        try:\n            milvus_obj.add_texts(texts=texts, metadatas=metadatas)\n        except Exception as e:\n            file.status = KnowledgeFileStatus.FAILED.value\n            file.remark = str(e)\n            KnowledgeFileDao.update(file)\n    for file in no_es_data:\n        milvus_chunks = all_milvus.get(file.id, [])\n        if not milvus_chunks:\n            print(f\"!!!!skip file_id: {file.id}; file_name: {file.file_name} because milvus data not found\")\n            file.status = KnowledgeFileStatus.FAILED.value\n            KnowledgeFileDao.update(file)\n            continue\n        texts = []\n        metadatas = []\n        for chunk in milvus_chunks:\n            texts.append(chunk.pop(\"text\"))\n            chunk.pop(\"pk\")\n            chunk.pop(\"vector\")\n            metadatas.append(chunk)\n        es_obj.add_texts(texts=texts, metadatas=metadatas)\n\n\ndef fix_one_knowledge(knowledge: Knowledge = None, knowledge_id: int = None):\n    if not knowledge:\n        knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge:\n            print(f\"knowledge_id: {knowledge_id} not exist\")\n            return\n    try:\n        milvus_obj, es_obj = _init_knowledge_obj(knowledge)\n    except Exception as e:\n        print(\n            f\"!!!! skip knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name} because error: {e}\")\n        return\n    if not knowledge.index_name:\n        knowledge.index_name = knowledge.collection_name\n        KnowledgeDao.update_one(knowledge)\n    try:\n        print(f\"---- start fix knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n        if knowledge.type == KnowledgeTypeEnum.QA.value:\n            fix_qa_knowledge_data(knowledge, milvus_obj, es_obj)\n        else:\n            fix_normal_knowledge_data(knowledge, milvus_obj, es_obj)\n        print(f\"---- finish fix knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n    except Exception as e:\n        print(f\"---- error fix knowledge_id: {knowledge.id}; knowledge_name: {knowledge.name}\")\n        traceback.print_exc()\n\n\ndef fix_knowledge_error_data():\n    all_knowledge = get_all_knowledge()\n    total = len(all_knowledge)\n    for index, knowledge in enumerate(all_knowledge):\n        print(f\"---- start fix knowledge process: {round(index / total * 100, 2)}%\")\n        fix_one_knowledge(knowledge)\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--mode', type=str, default=\"scan_all\",\n                        help='modalities.scan_all: Scan all Knowledge Base error data;fix_all: Fix all Knowledge Base error data;fix_one: Fixing single knowledge base error data;scan_one: Scan single KB error data')\n    # Maximum number of concurrency for a single process\n    parser.add_argument('--id', type=int, default=0, help='The knowledge base uponID, parameter is required if operating a single knowledge base')\n    args = parser.parse_args()\n\n    if args.mode == \"scan_all\":\n        scan_knowledge_error_data()\n    elif args.mode == \"fix_all\":\n        fix_knowledge_error_data()\n    elif args.mode == \"fix_one\":\n        fix_one_knowledge(None, args.id)\n    elif args.mode == \"scan_one\":\n        tmp_rows = scan_one_knowledge(None, args.id)\n        _save_knowledge_error_data(tmp_rows, f\"{args.id}_knowledge_error_data.xlsx\")\n    else:\n        print(\"modeParameter error, can only bescan_all、fix_all、fix_one、scan_oneOne of them,\")\n"
  },
  {
    "path": "src/backend/bisheng/script/mid_table.sh",
    "content": "export PYTHONPATH=\"./\"\npython bisheng/script/sync_increment_table.py\n"
  },
  {
    "path": "src/backend/bisheng/script/sync_increment_table.py",
    "content": "from datetime import datetime\n\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.knowledge.domain.services.knowledge_service import KnowledgeService\nfrom bisheng.user.domain.services.user import UserService\nfrom bisheng.worker import sync_mid_user_interact_dtl\nfrom bisheng.worker.telemetry.mid_table import sync_mid_user_increment, sync_mid_knowledge_increment, \\\n    sync_mid_app_increment\n\n\ndef sync_user_increment_table_all():\n    \"\"\"\n    Sync user increment table\n    \"\"\"\n    first_user = UserService.get_first_user()\n    if not first_user:\n        print(\"No users found, skipping user increment table sync.\")\n        return\n    start_date = first_user.create_time.isoformat()\n    end_date = datetime.now().isoformat()\n    sync_mid_user_increment(start_date, end_date)\n\n\ndef sync_knowledge_increment_table_all():\n    \"\"\"\n    Sync knowledge increment table\n    \"\"\"\n    first_knowledge = KnowledgeService.get_first_knowledge()\n    if not first_knowledge:\n        print(\"No knowledge entries found, skipping knowledge increment table sync.\")\n        return\n    start_date = first_knowledge.create_time.isoformat()\n    end_date = datetime.now().isoformat()\n    sync_mid_knowledge_increment(start_date, end_date)\n\n\ndef sync_app_increment_table_all():\n    \"\"\"\n    Sync all increment tables\n    \"\"\"\n    first_app = WorkFlowService.get_first_app()\n    if not first_app:\n        print(\"No apps found, skipping app increment table sync.\")\n        return\n    start_date = first_app['create_time'].isoformat()\n    end_date = datetime.now().isoformat()\n    sync_mid_app_increment(start_date, end_date)\n\n\ndef sync_user_interact_dtl_all():\n    first_date = datetime(2025, 12, 1).isoformat()\n    end_date = datetime.now().isoformat()\n    sync_mid_user_interact_dtl(first_date, end_date)\n\n\nif __name__ == '__main__':\n    sync_user_increment_table_all()\n    sync_knowledge_increment_table_all()\n    sync_app_increment_table_all()\n    sync_user_interact_dtl_all()\n"
  },
  {
    "path": "src/backend/bisheng/script/telemetry_events_reindex.sh",
    "content": "#!/bin/bash\n\nexport PYTHONPATH=\"./\"\necho \"Reindexing telemetry events...\"\npython bisheng/script/base_telemetry_events_reindex.py\necho \"Reindexing completed.\""
  },
  {
    "path": "src/backend/bisheng/server.py",
    "content": "from gunicorn.app.base import BaseApplication  # type: ignore\n\n\nclass BishengApplication(BaseApplication):\n    def __init__(self, app, options=None):\n        self.options = options or {}\n        self.application = app\n        super().__init__()\n\n    def load_config(self):\n        config = {\n            key: value\n            for key, value in self.options.items()\n            if key in self.cfg.settings and value is not None\n        }\n        for key, value in config.items():\n            self.cfg.set(key.lower(), value)\n\n    def load(self):\n        return self.application\n"
  },
  {
    "path": "src/backend/bisheng/services/__init__.py",
    "content": "from .manager import service_manager\nfrom .schema import ServiceType\n\n__all__ = ['service_manager', 'ServiceType']\n"
  },
  {
    "path": "src/backend/bisheng/services/auth/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/auth/factory.py",
    "content": "from bisheng.services.auth.service import AuthService\nfrom bisheng.services.factory import ServiceFactory\n\n\nclass AuthServiceFactory(ServiceFactory):\n    name = 'auth_service'\n\n    def __init__(self):\n        super().__init__(AuthService)\n\n    def create(self, settings_service):\n        return AuthService(settings_service)\n"
  },
  {
    "path": "src/backend/bisheng/services/auth/service.py",
    "content": "from typing import TYPE_CHECKING\n\nfrom bisheng.services.base import Service\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass AuthService(Service):\n    name = 'auth_service'\n\n    def __init__(self, settings_service: 'SettingsService'):\n        self.settings_service = settings_service\n"
  },
  {
    "path": "src/backend/bisheng/services/auth/utils.py",
    "content": "from datetime import datetime, timedelta, timezone\nfrom typing import Annotated, Coroutine, Optional, Union\nfrom uuid import UUID\n\nfrom bisheng.services.database.models.api_key.crud import check_key\nfrom bisheng.services.database.models.api_key.model import ApiKey\nfrom bisheng.services.database.models.user.crud import (get_user_by_id, get_user_by_username,\n                                                        update_user_last_login_at)\nfrom bisheng.services.database.models.user.model import User\nfrom bisheng.services.deps import get_session, get_settings_service\nfrom cryptography.fernet import Fernet\nfrom fastapi import Depends, HTTPException, Security, status\nfrom fastapi.security import APIKeyHeader, APIKeyQuery, OAuth2PasswordBearer\nfrom jose import JWTError, jwt\nfrom sqlmodel import Session\n\noauth2_login = OAuth2PasswordBearer(tokenUrl='api/v1/login', auto_error=False)\n\nAPI_KEY_NAME = 'x-api-key'\n\napi_key_query = APIKeyQuery(name=API_KEY_NAME, scheme_name='API key query', auto_error=False)\napi_key_header = APIKeyHeader(name=API_KEY_NAME, scheme_name='API key header', auto_error=False)\n\n\n# Source: https://github.com/mrtolkien/fastapi_simple_security/blob/master/fastapi_simple_security/security_api_key.py\nasync def api_key_security(\n    query_param: str = Security(api_key_query),\n    header_param: str = Security(api_key_header),\n    db: Session = Depends(get_session),\n) -> Optional[User]:\n    settings_service = get_settings_service()\n    result: Optional[Union[ApiKey, User]] = None\n    if settings_service.auth_settings.AUTO_LOGIN:\n        # Get the first user\n        if not settings_service.auth_settings.SUPERUSER:\n            raise HTTPException(\n                status_code=status.HTTP_400_BAD_REQUEST,\n                detail='Missing first superuser credentials',\n            )\n\n        result = get_user_by_username(db, settings_service.auth_settings.SUPERUSER)\n\n    elif not query_param and not header_param:\n        raise HTTPException(\n            status_code=status.HTTP_403_FORBIDDEN,\n            detail='An API key must be passed as query or header',\n        )\n\n    elif query_param:\n        result = check_key(db, query_param)\n\n    else:\n        result = check_key(db, header_param)\n\n    if not result:\n        raise HTTPException(\n            status_code=status.HTTP_403_FORBIDDEN,\n            detail='Invalid or missing API key',\n        )\n    if isinstance(result, ApiKey):\n        return result.user\n    elif isinstance(result, User):\n        return result\n\n\nasync def get_current_user(\n    token: str = Security(oauth2_login),\n    query_param: str = Security(api_key_query),\n    header_param: str = Security(api_key_header),\n    db: Session = Depends(get_session),\n) -> User:\n    if token:\n        return await get_current_user_by_jwt(token, db)\n    else:\n        if not query_param and not header_param:\n            raise HTTPException(\n                status_code=status.HTTP_403_FORBIDDEN,\n                detail='An API key as query or header, or a JWT token must be passed',\n            )\n        user = await api_key_security(query_param, header_param, db)\n        if user:\n            return user\n\n        raise HTTPException(\n            status_code=status.HTTP_403_FORBIDDEN,\n            detail='Invalid or missing API key',\n        )\n\n\nasync def get_current_user_by_jwt(\n    token: Annotated[str, Depends(oauth2_login)],\n    db: Session = Depends(get_session),\n) -> User:\n    settings_service = get_settings_service()\n\n    credentials_exception = HTTPException(\n        status_code=status.HTTP_401_UNAUTHORIZED,\n        detail='Could not validate credentials',\n        headers={'WWW-Authenticate': 'Bearer'},\n    )\n\n    if isinstance(token, Coroutine):\n        token = await token\n\n    if settings_service.auth_settings.SECRET_KEY is None:\n        raise credentials_exception\n\n    try:\n        payload = jwt.decode(\n            token,\n            settings_service.auth_settings.SECRET_KEY,\n            algorithms=[settings_service.auth_settings.ALGORITHM],\n        )\n        user_id: UUID = payload.get('sub')  # type: ignore\n        token_type: str = payload.get('type')  # type: ignore\n        if expires := payload.get('exp', None):\n            expires_datetime = datetime.fromtimestamp(expires, timezone.utc)\n            # TypeError: can't compare offset-naive and offset-aware datetimes\n            if datetime.now(timezone.utc) > expires_datetime:\n                raise credentials_exception\n\n        if user_id is None or token_type:\n            raise credentials_exception\n    except JWTError as e:\n        raise credentials_exception from e\n\n    user = get_user_by_id(db, user_id)  # type: ignore\n    if user is None or not user.is_active:\n        raise credentials_exception\n    return user\n\n\ndef get_current_active_user(current_user: Annotated[User, Depends(get_current_user)]):\n    if not current_user.is_active:\n        raise HTTPException(status_code=400, detail='Inactive user')\n    return current_user\n\n\ndef get_current_active_superuser(current_user: Annotated[User, Depends(get_current_user)]) -> User:\n    if not current_user.is_active:\n        raise HTTPException(status_code=401, detail='Inactive user')\n    if not current_user.is_superuser:\n        raise HTTPException(status_code=400, detail=\"The user doesn't have enough privileges\")\n    return current_user\n\n\ndef verify_password(plain_password, hashed_password):\n    settings_service = get_settings_service()\n    return settings_service.auth_settings.pwd_context.verify(plain_password, hashed_password)\n\n\ndef get_password_hash(password):\n    settings_service = get_settings_service()\n    return settings_service.auth_settings.pwd_context.hash(password)\n\n\ndef create_token(data: dict, expires_delta: timedelta):\n    settings_service = get_settings_service()\n\n    to_encode = data.copy()\n    expire = datetime.now(timezone.utc) + expires_delta\n    to_encode['exp'] = expire\n\n    return jwt.encode(\n        to_encode,\n        settings_service.auth_settings.SECRET_KEY,\n        algorithm=settings_service.auth_settings.ALGORITHM,\n    )\n\n\ndef create_super_user(\n    username: str,\n    password: str,\n    db: Session = Depends(get_session),\n) -> User:\n    super_user = get_user_by_username(db, username)\n\n    if not super_user:\n        super_user = User(\n            username=username,\n            password=get_password_hash(password),\n            is_superuser=True,\n            is_active=True,\n            last_login_at=None,\n        )\n\n        db.add(super_user)\n        db.commit()\n        db.refresh(super_user)\n\n    return super_user\n\n\ndef create_user_longterm_token(db: Session = Depends(get_session)) -> dict:\n    settings_service = get_settings_service()\n    username = settings_service.auth_settings.SUPERUSER\n    password = settings_service.auth_settings.SUPERUSER_PASSWORD\n    if not username or not password:\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail='Missing first superuser credentials',\n        )\n    super_user = create_super_user(db=db, username=username, password=password)\n\n    access_token_expires_longterm = timedelta(days=365)\n    access_token = create_token(\n        data={'sub': str(super_user.id)},\n        expires_delta=access_token_expires_longterm,\n    )\n\n    # Update: last_login_at\n    update_user_last_login_at(super_user.id, db)\n\n    return {\n        'access_token': access_token,\n        'refresh_token': None,\n        'token_type': 'bearer',\n    }\n\n\ndef create_user_api_key(user_id: UUID) -> dict:\n    access_token = create_token(\n        data={'sub': str(user_id), 'role': 'api_key'},\n        expires_delta=timedelta(days=365 * 2),\n    )\n\n    return {'api_key': access_token}\n\n\ndef get_user_id_from_token(token: str) -> UUID:\n    try:\n        user_id = jwt.get_unverified_claims(token)['sub']\n        return UUID(user_id)\n    except (KeyError, JWTError, ValueError):\n        return UUID(int=0)\n\n\ndef create_user_tokens(user_id: UUID, db: Session = Depends(get_session), update_last_login: bool = False) -> dict:\n    settings_service = get_settings_service()\n\n    access_token_expires = timedelta(minutes=settings_service.auth_settings.ACCESS_TOKEN_EXPIRE_MINUTES)\n    access_token = create_token(\n        data={'sub': str(user_id)},\n        expires_delta=access_token_expires,\n    )\n\n    refresh_token_expires = timedelta(minutes=settings_service.auth_settings.REFRESH_TOKEN_EXPIRE_MINUTES)\n    refresh_token = create_token(\n        data={'sub': str(user_id), 'type': 'rf'},\n        expires_delta=refresh_token_expires,\n    )\n\n    # Update: last_login_at\n    if update_last_login:\n        update_user_last_login_at(user_id, db)\n\n    return {\n        'access_token': access_token,\n        'refresh_token': refresh_token,\n        'token_type': 'bearer',\n    }\n\n\ndef create_refresh_token(refresh_token: str, db: Session = Depends(get_session)):\n    settings_service = get_settings_service()\n\n    try:\n        payload = jwt.decode(\n            refresh_token,\n            settings_service.auth_settings.SECRET_KEY,\n            algorithms=[settings_service.auth_settings.ALGORITHM],\n        )\n        user_id: UUID = payload.get('sub')  # type: ignore\n        token_type: str = payload.get('type')  # type: ignore\n\n        if user_id is None or token_type is None:\n            raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='Invalid refresh token')\n\n        return create_user_tokens(user_id, db)\n\n    except JWTError as e:\n        raise HTTPException(\n            status_code=status.HTTP_401_UNAUTHORIZED,\n            detail='Invalid refresh token',\n        ) from e\n\n\ndef authenticate_user(username: str, password: str, db: Session = Depends(get_session)) -> Optional[User]:\n    user = get_user_by_username(db, username)\n\n    if not user:\n        return None\n\n    if not user.is_active:\n        if not user.last_login_at:\n            raise HTTPException(status_code=400, detail='Waiting for approval')\n        raise HTTPException(status_code=400, detail='Inactive user')\n\n    return user if verify_password(password, user.password) else None\n\n\ndef add_padding(s):\n    # Calculate the number of padding characters needed\n    padding_needed = 4 - len(s) % 4\n    return s + '=' * padding_needed\n\n\ndef get_fernet(settings_service=Depends(get_settings_service)):\n    SECRET_KEY = settings_service.auth_settings.SECRET_KEY\n    # It's important that your secret key is 32 url-safe base64-encoded bytes\n    padded_secret_key = add_padding(SECRET_KEY)\n    fernet = Fernet(padded_secret_key)\n    return fernet\n\n\ndef encrypt_api_key(api_key: str, settings_service=Depends(get_settings_service)):\n    fernet = get_fernet(settings_service)\n    # Two-way encryption\n    encrypted_key = fernet.encrypt(api_key.encode())\n    return encrypted_key\n\n\ndef decrypt_api_key(encrypted_api_key: str, settings_service=Depends(get_settings_service)):\n    fernet = get_fernet(settings_service)\n    # Two-way decryption\n    if isinstance(encrypted_api_key, str):\n        encoded_bytes = encrypted_api_key.encode()\n    else:\n        encoded_bytes = encrypted_api_key\n    decrypted_key = fernet.decrypt(encoded_bytes).decode()\n    return decrypted_key\n"
  },
  {
    "path": "src/backend/bisheng/services/base.py",
    "content": "from abc import ABC\n\n\nclass Service(ABC):\n    name: str\n    ready: bool = False\n\n    def teardown(self):\n        pass\n\n    def set_ready(self):\n        self.ready = True\n"
  },
  {
    "path": "src/backend/bisheng/services/cache/__init__.py",
    "content": "from langflow.services.cache.service import InMemoryCache\n\nfrom . import factory, service\n\n__all__ = [\n    'factory',\n    'service',\n    'InMemoryCache',\n]\n"
  },
  {
    "path": "src/backend/bisheng/services/cache/base.py",
    "content": "import abc\n\nfrom bisheng.services.base import Service\n\n\nclass BaseCacheService(Service):\n    \"\"\"\n    Abstract base class for a cache.\n    \"\"\"\n\n    name = 'cache_service'\n\n    @abc.abstractmethod\n    def get(self, key):\n        \"\"\"\n        Retrieve an item from the cache.\n\n        Args:\n            key: The key of the item to retrieve.\n\n        Returns:\n            The value associated with the key, or None if the key is not found.\n        \"\"\"\n\n    @abc.abstractmethod\n    def set(self, key, value):\n        \"\"\"\n        Add an item to the cache.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def upsert(self, key, value):\n        \"\"\"\n        Add an item to the cache if it doesn't exist, or update it if it does.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def delete(self, key):\n        \"\"\"\n        Remove an item from the cache.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n\n    @abc.abstractmethod\n    def clear(self):\n        \"\"\"\n        Clear all items from the cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __contains__(self, key):\n        \"\"\"\n        Check if the key is in the cache.\n\n        Args:\n            key: The key of the item to check.\n\n        Returns:\n            True if the key is in the cache, False otherwise.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __getitem__(self, key):\n        \"\"\"\n        Retrieve an item from the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item to retrieve.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __setitem__(self, key, value):\n        \"\"\"\n        Add an item to the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n\n    @abc.abstractmethod\n    def __delitem__(self, key):\n        \"\"\"\n        Remove an item from the cache using the square bracket notation.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n"
  },
  {
    "path": "src/backend/bisheng/services/cache/factory.py",
    "content": "from typing import TYPE_CHECKING\n\nfrom bisheng.services.cache.service import BaseCacheService, InMemoryCache, RedisCache\nfrom bisheng.services.factory import ServiceFactory\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass CacheServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(BaseCacheService)\n\n    def create(self, settings_service: 'SettingsService'):\n        # Here you would have logic to create and configure a CacheService\n        # based on the settings_service\n\n        if settings_service.settings.CACHE_TYPE == 'redis':\n            logger.debug('Creating Redis cache')\n            redis_cache = RedisCache(\n                host=settings_service.settings.REDIS_HOST,\n                port=settings_service.settings.REDIS_PORT,\n                db=settings_service.settings.REDIS_DB,\n                expiration_time=settings_service.settings.REDIS_CACHE_EXPIRE,\n            )\n            if redis_cache.is_connected():\n                logger.debug('Redis cache is connected')\n                return redis_cache\n            logger.warning('Redis cache is not connected, falling back to in-memory cache')\n            return InMemoryCache()\n\n        elif settings_service.settings.CACHE_TYPE == 'memory':\n            return InMemoryCache()\n"
  },
  {
    "path": "src/backend/bisheng/services/cache/service.py",
    "content": "import pickle\nimport threading\nimport time\nfrom collections import OrderedDict\n\nfrom bisheng.services.base import Service\nfrom bisheng.services.cache.base import BaseCacheService\nfrom loguru import logger\n\n\nclass InMemoryCache(BaseCacheService, Service):\n\n    \"\"\"\n    A simple in-memory cache using an OrderedDict.\n\n    This cache supports setting a maximum size and expiration time for cached items.\n    When the cache is full, it uses a Least Recently Used (LRU) eviction policy.\n    Thread-safe using a threading Lock.\n\n    Attributes:\n        max_size (int, optional): Maximum number of items to store in the cache.\n        expiration_time (int, optional): Time in seconds after which a cached item expires. Default is 1 hour.\n\n    Example:\n\n        cache = InMemoryCache(max_size=3, expiration_time=5)\n\n        # setting cache values\n        cache.set(\"a\", 1)\n        cache.set(\"b\", 2)\n        cache[\"c\"] = 3\n\n        # getting cache values\n        a = cache.get(\"a\")\n        b = cache[\"b\"]\n    \"\"\"\n\n    def __init__(self, max_size=None, expiration_time=60 * 60):\n        \"\"\"\n        Initialize a new InMemoryCache instance.\n\n        Args:\n            max_size (int, optional): Maximum number of items to store in the cache.\n            expiration_time (int, optional): Time in seconds after which a cached item expires. Default is 1 hour.\n        \"\"\"\n        self._cache = OrderedDict()\n        self._lock = threading.RLock()\n        self.max_size = max_size\n        self.expiration_time = expiration_time\n\n    def get(self, key):\n        \"\"\"\n        Retrieve an item from the cache.\n\n        Args:\n            key: The key of the item to retrieve.\n\n        Returns:\n            The value associated with the key, or None if the key is not found or the item has expired.\n        \"\"\"\n        with self._lock:\n            return self._get_without_lock(key)\n\n    def _get_without_lock(self, key):\n        \"\"\"\n        Retrieve an item from the cache without acquiring the lock.\n        \"\"\"\n        if item := self._cache.get(key):\n            if self.expiration_time is None or time.time() - item['time'] < self.expiration_time:\n                # Move the key to the end to make it recently used\n                self._cache.move_to_end(key)\n                # Check if the value is pickled\n                if isinstance(item['value'], bytes):\n                    value = pickle.loads(item['value'])\n                else:\n                    value = item['value']\n                return value\n            else:\n                self.delete(key)\n        return None\n\n    def set(self, key, value, pickle=False):\n        \"\"\"\n        Add an item to the cache.\n\n        If the cache is full, the least recently used item is evicted.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n        with self._lock:\n            if key in self._cache:\n                # Remove existing key before re-inserting to update order\n                self.delete(key)\n            elif self.max_size and len(self._cache) >= self.max_size:\n                # Remove least recently used item\n                self._cache.popitem(last=False)\n            # pickle locally to mimic Redis\n            if pickle:\n                value = pickle.dumps(value)\n\n            self._cache[key] = {'value': value, 'time': time.time()}\n\n    def upsert(self, key, value):\n        \"\"\"\n        Inserts or updates a value in the cache.\n        If the existing value and the new value are both dictionaries, they are merged.\n\n        Args:\n            key: The key of the item.\n            value: The value to insert or update.\n        \"\"\"\n        with self._lock:\n            existing_value = self._get_without_lock(key)\n            if existing_value is not None and isinstance(existing_value, dict) and isinstance(value, dict):\n                existing_value.update(value)\n                value = existing_value\n\n            self.set(key, value)\n\n    def get_or_set(self, key, value):\n        \"\"\"\n        Retrieve an item from the cache. If the item does not exist,\n        set it with the provided value.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache if the item doesn't exist.\n\n        Returns:\n            The cached value associated with the key.\n        \"\"\"\n        with self._lock:\n            if key in self._cache:\n                return self.get(key)\n            self.set(key, value)\n            return value\n\n    def delete(self, key):\n        \"\"\"\n        Remove an item from the cache.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n        with self._lock:\n            self._cache.pop(key, None)\n\n    def clear(self):\n        \"\"\"\n        Clear all items from the cache.\n        \"\"\"\n        with self._lock:\n            self._cache.clear()\n\n    def __contains__(self, key):\n        \"\"\"Check if the key is in the cache.\"\"\"\n        return key in self._cache\n\n    def __getitem__(self, key):\n        \"\"\"Retrieve an item from the cache using the square bracket notation.\"\"\"\n        return self.get(key)\n\n    def __setitem__(self, key, value):\n        \"\"\"Add an item to the cache using the square bracket notation.\"\"\"\n        self.set(key, value)\n\n    def __delitem__(self, key):\n        \"\"\"Remove an item from the cache using the square bracket notation.\"\"\"\n        self.delete(key)\n\n    def __len__(self):\n        \"\"\"Return the number of items in the cache.\"\"\"\n        return len(self._cache)\n\n    def __repr__(self):\n        \"\"\"Return a string representation of the InMemoryCache instance.\"\"\"\n        return f'InMemoryCache(max_size={self.max_size}, expiration_time={self.expiration_time})'\n\n\nclass RedisCache(BaseCacheService, Service):\n    \"\"\"\n    A Redis-based cache implementation.\n\n    This cache supports setting an expiration time for cached items.\n\n    Attributes:\n        expiration_time (int, optional): Time in seconds after which a cached item expires. Default is 1 hour.\n\n    Example:\n\n        cache = RedisCache(expiration_time=5)\n\n        # setting cache values\n        cache.set(\"a\", 1)\n        cache.set(\"b\", 2)\n        cache[\"c\"] = 3\n\n        # getting cache values\n        a = cache.get(\"a\")\n        b = cache[\"b\"]\n    \"\"\"\n\n    def __init__(self, host='localhost', port=6379, db=0, expiration_time=60 * 60):\n        \"\"\"\n        Initialize a new RedisCache instance.\n\n        Args:\n            host (str, optional): Redis host.\n            port (int, optional): Redis port.\n            db (int, optional): Redis DB.\n            expiration_time (int, optional): Time in seconds after which a\n            ached item expires. Default is 1 hour.\n        \"\"\"\n        try:\n            import redis\n        except ImportError as exc:\n            raise ImportError(\n                'RedisCache requires the redis-py package.'\n                ' Please install bisheng with the deploy extra: pip install bisheng[deploy]'\n            ) from exc\n        logger.warning(\n            'RedisCache is an experimental feature and may not work as expected.'\n            ' Please report any issues to our GitHub repository.'\n        )\n        self._client = redis.StrictRedis(host=host, port=port, db=db)\n        self.expiration_time = expiration_time\n\n    # check connection\n    def is_connected(self):\n        \"\"\"\n        Check if the Redis client is connected.\n        \"\"\"\n        import redis\n\n        try:\n            self._client.ping()\n            return True\n        except redis.exceptions.ConnectionError:\n            return False\n\n    def get(self, key):\n        \"\"\"\n        Retrieve an item from the cache.\n\n        Args:\n            key: The key of the item to retrieve.\n\n        Returns:\n            The value associated with the key, or None if the key is not found.\n        \"\"\"\n        value = self._client.get(key)\n        return pickle.loads(value) if value else None\n\n    def set(self, key, value):\n        \"\"\"\n        Add an item to the cache.\n\n        Args:\n            key: The key of the item.\n            value: The value to cache.\n        \"\"\"\n        try:\n            if pickled := pickle.dumps(value):\n                result = self._client.setex(key, self.expiration_time, pickled)\n                if not result:\n                    raise ValueError('RedisCache could not set the value.')\n        except TypeError as exc:\n            raise TypeError('RedisCache only accepts values that can be pickled. ') from exc\n\n    def upsert(self, key, value):\n        \"\"\"\n        Inserts or updates a value in the cache.\n        If the existing value and the new value are both dictionaries, they are merged.\n\n        Args:\n            key: The key of the item.\n            value: The value to insert or update.\n        \"\"\"\n        existing_value = self.get(key)\n        if existing_value is not None and isinstance(existing_value, dict) and isinstance(value, dict):\n            existing_value.update(value)\n            value = existing_value\n\n        self.set(key, value)\n\n    def delete(self, key):\n        \"\"\"\n        Remove an item from the cache.\n\n        Args:\n            key: The key of the item to remove.\n        \"\"\"\n        self._client.delete(key)\n\n    def clear(self):\n        \"\"\"\n        Clear all items from the cache.\n        \"\"\"\n        self._client.flushdb()\n\n    def __contains__(self, key):\n        \"\"\"Check if the key is in the cache.\"\"\"\n        return False if key is None else self._client.exists(key)\n\n    def __getitem__(self, key):\n        \"\"\"Retrieve an item from the cache using the square bracket notation.\"\"\"\n        return self.get(key)\n\n    def __setitem__(self, key, value):\n        \"\"\"Add an item to the cache using the square bracket notation.\"\"\"\n        self.set(key, value)\n\n    def __delitem__(self, key):\n        \"\"\"Remove an item from the cache using the square bracket notation.\"\"\"\n        self.delete(key)\n\n    def __repr__(self):\n        \"\"\"Return a string representation of the RedisCache instance.\"\"\"\n        return f'RedisCache(expiration_time={self.expiration_time})'\n"
  },
  {
    "path": "src/backend/bisheng/services/chat/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/chat/cache.py",
    "content": "from contextlib import contextmanager\nfrom typing import Any, Awaitable, Callable, List, Optional\n\nimport pandas as pd\nfrom bisheng.services.base import Service\nfrom PIL import Image\n\n\nclass Subject:\n    \"\"\"Base class for implementing the observer pattern.\"\"\"\n\n    def __init__(self):\n        self.observers: List[Callable[[], None]] = []\n\n    def attach(self, observer: Callable[[], None]):\n        \"\"\"Attach an observer to the subject.\"\"\"\n        self.observers.append(observer)\n\n    def detach(self, observer: Callable[[], None]):\n        \"\"\"Detach an observer from the subject.\"\"\"\n        self.observers.remove(observer)\n\n    def notify(self):\n        \"\"\"Notify all observers about an event.\"\"\"\n        for observer in self.observers:\n            if observer is None:\n                continue\n            observer()\n\n\nclass AsyncSubject:\n    \"\"\"Base class for implementing the async observer pattern.\"\"\"\n\n    def __init__(self):\n        self.observers: List[Callable[[], Awaitable]] = []\n\n    def attach(self, observer: Callable[[], Awaitable]):\n        \"\"\"Attach an observer to the subject.\"\"\"\n        self.observers.append(observer)\n\n    def detach(self, observer: Callable[[], Awaitable]):\n        \"\"\"Detach an observer from the subject.\"\"\"\n        self.observers.remove(observer)\n\n    async def notify(self):\n        \"\"\"Notify all observers about an event.\"\"\"\n        for observer in self.observers:\n            if observer is None:\n                continue\n            await observer()\n\n\nclass CacheService(Subject, Service):\n    \"\"\"Manages cache for different clients and notifies observers on changes.\"\"\"\n\n    name = 'cache_service'\n\n    def __init__(self):\n        super().__init__()\n        self._cache = {}\n        self.current_client_id = None\n        self.current_cache = {}\n\n    @contextmanager\n    def set_client_id(self, client_id: str):\n        \"\"\"\n        Context manager to set the current client_id and associated cache.\n\n        Args:\n            client_id (str): The client identifier.\n        \"\"\"\n        previous_client_id = self.current_client_id\n        self.current_client_id = client_id\n        self.current_cache = self._cache.setdefault(client_id, {})\n        try:\n            yield\n        finally:\n            self.current_client_id = previous_client_id\n            self.current_cache = self._cache.get(self.current_client_id, {})\n\n    def add(self, name: str, obj: Any, obj_type: str, extension: Optional[str] = None):\n        \"\"\"\n        Add an object to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The object to cache.\n            obj_type (str): The type of the object.\n        \"\"\"\n        object_extensions = {\n            'image': 'png',\n            'pandas': 'csv',\n        }\n        if obj_type in object_extensions:\n            _extension = object_extensions[obj_type]\n        else:\n            _extension = type(obj).__name__.lower()\n        self.current_cache[name] = {\n            'obj': obj,\n            'type': obj_type,\n            'extension': extension or _extension,\n        }\n        self.notify()\n\n    def add_pandas(self, name: str, obj: Any):\n        \"\"\"\n        Add a pandas DataFrame or Series to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The pandas DataFrame or Series object.\n        \"\"\"\n        if isinstance(obj, (pd.DataFrame, pd.Series)):\n            self.add(name, obj.to_csv(), 'pandas', extension='csv')\n        else:\n            raise ValueError('Object is not a pandas DataFrame or Series')\n\n    def add_image(self, name: str, obj: Any, extension: str = 'png'):\n        \"\"\"\n        Add a PIL Image to the current client's cache.\n\n        Args:\n            name (str): The cache key.\n            obj (Any): The PIL Image object.\n        \"\"\"\n        if isinstance(obj, Image.Image):\n            self.add(name, obj, 'image', extension=extension)\n        else:\n            raise ValueError('Object is not a PIL Image')\n\n    def get(self, name: str):\n        \"\"\"\n        Get an object from the current client's cache.\n\n        Args:\n            name (str): The cache key.\n\n        Returns:\n            The cached object associated with the given cache key.\n        \"\"\"\n        return self.current_cache[name]\n\n    def get_last(self):\n        \"\"\"\n        Get the last added item in the current client's cache.\n\n        Returns:\n            The last added item in the cache.\n        \"\"\"\n        return list(self.current_cache.values())[-1]\n\n\ncache_service = CacheService()\n"
  },
  {
    "path": "src/backend/bisheng/services/chat/config.py",
    "content": "class ChatConfig:\n    streaming: bool = True\n"
  },
  {
    "path": "src/backend/bisheng/services/chat/factory.py",
    "content": "from bisheng.services.chat.service import ChatService\nfrom bisheng.services.factory import ServiceFactory\n\n\nclass ChatServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(ChatService)\n\n    def create(self):\n        # Here you would have logic to create and configure a ChatService\n        return ChatService()\n"
  },
  {
    "path": "src/backend/bisheng/services/chat/service.py",
    "content": "import asyncio\nimport uuid\nfrom collections import defaultdict\nfrom typing import Any, Dict, List\n\nimport orjson\nfrom bisheng.api.v1.schemas import ChatMessage, ChatResponse, FileResponse\nfrom bisheng.interface.utils import pil_to_base64\nfrom bisheng.services import ServiceType, service_manager\nfrom bisheng.services.base import Service\nfrom bisheng.services.chat.cache import Subject\nfrom bisheng.services.chat.utils import process_graph\nfrom fastapi import WebSocket, status\nfrom loguru import logger\nfrom starlette.websockets import WebSocketState\n\nfrom .cache import cache_service\n\n\nclass ChatHistory(Subject):\n    def __init__(self):\n        super().__init__()\n        self.history: Dict[str, List[ChatMessage]] = defaultdict(list)\n\n    def add_message(self, client_id: str, message: ChatMessage):\n        \"\"\"Add a message to the chat history.\"\"\"\n\n        self.history[client_id].append(message)\n\n        if not isinstance(message, FileResponse):\n            self.notify()\n\n    def get_history(self, client_id: str, filter_messages=True) -> List[ChatMessage]:\n        \"\"\"Get the chat history for a client.\"\"\"\n        if history := self.history.get(client_id, []):\n            if filter_messages:\n                return [msg for msg in history if msg.type not in ['start', 'stream']]\n            return history\n        else:\n            return []\n\n    def empty_history(self, client_id: str):\n        \"\"\"Empty the chat history for a client.\"\"\"\n        self.history[client_id] = []\n\n\nclass ChatService(Service):\n    name = 'chat_service'\n\n    def __init__(self):\n        self.active_connections: Dict[str, WebSocket] = {}\n        self.connection_ids: Dict[str, str] = {}\n        self.chat_history = ChatHistory()\n        self.chat_cache = cache_service\n        self.chat_cache.attach(self.update)\n        self.cache_service = service_manager.get(ServiceType.CACHE_SERVICE)\n\n    def on_chat_history_update(self):\n        \"\"\"Send the last chat message to the client.\"\"\"\n        client_id = self.chat_cache.current_client_id\n        if client_id in self.active_connections:\n            chat_response = self.chat_history.get_history(client_id, filter_messages=False)[-1]\n            if chat_response.is_bot:\n                # Process FileResponse\n                if isinstance(chat_response, FileResponse):\n                    # If data_type is pandas, convert to csv\n                    if chat_response.data_type == 'pandas':\n                        chat_response.data = chat_response.data.to_csv()\n                    elif chat_response.data_type == 'image':\n                        # Base64 encode the image\n                        chat_response.data = pil_to_base64(chat_response.data)\n                # get event loop\n                loop = asyncio.get_event_loop()\n\n                coroutine = self.send_json(client_id, chat_response)\n                asyncio.run_coroutine_threadsafe(coroutine, loop)\n\n    def update(self):\n        if self.chat_cache.current_client_id in self.active_connections:\n            self.last_cached_object_dict = self.chat_cache.get_last()\n            # Add a new ChatResponse with the data\n            chat_response = FileResponse(\n                message=None,\n                type='file',\n                data=self.last_cached_object_dict['obj'],\n                data_type=self.last_cached_object_dict['type'],\n            )\n\n            self.chat_history.add_message(self.chat_cache.current_client_id, chat_response)\n\n    async def connect(self, client_id: str, websocket: WebSocket):\n        self.active_connections[client_id] = websocket\n        # This is to avoid having multiple clients with the same id\n        self.connection_ids[client_id] = f'{client_id}-{uuid.uuid4()}'\n\n    def disconnect(self, client_id: str):\n        self.active_connections.pop(client_id, None)\n        self.connection_ids.pop(client_id, None)\n\n    async def send_message(self, client_id: str, message: str):\n        websocket = self.active_connections[client_id]\n        await websocket.send_text(message)\n\n    async def send_json(self, client_id: str, message: ChatMessage):\n        websocket = self.active_connections[client_id]\n        await websocket.send_json(message.model_dump())\n\n    async def close_connection(self, client_id: str, code: int, reason: str):\n        if websocket := self.active_connections[client_id]:\n            try:\n                await websocket.close(code=code, reason=reason)\n                self.disconnect(client_id)\n            except RuntimeError as exc:\n                # This is to catch the following error:\n                #  Unexpected ASGI message 'websocket.close', after sending 'websocket.close'\n                if 'after sending' in str(exc):\n                    logger.error(f'Error closing connection: {exc}')\n\n    async def process_message(self, client_id: str, payload: Dict, langchain_object: Any):\n        # Process the graph data and chat message\n        chat_inputs = payload.pop('inputs', {})\n        chatkey = payload.pop('chatKey', None)\n        chat_inputs = ChatMessage(message=chat_inputs, chatKey=chatkey)\n        self.chat_history.add_message(client_id, chat_inputs)\n\n        # graph_data = payload\n        start_resp = ChatResponse(message=None, type='start', intermediate_steps='')\n        await self.send_json(client_id, start_resp)\n\n        # is_first_message = len(self.chat_history.get_history(client_id=client_id)) <= 1\n        # Generate result and thought\n        try:\n            logger.debug('Generating result and thought')\n\n            result, intermediate_steps, raw_output = await process_graph(\n                langchain_object=langchain_object,\n                chat_inputs=chat_inputs,\n                client_id=client_id,\n                session_id=self.connection_ids[client_id],\n            )\n            self.set_cache(client_id, langchain_object)\n        except Exception as e:\n            # Log stack trace\n            logger.exception(e)\n            self.chat_history.empty_history(client_id)\n            raise e\n        # Send a response back to the frontend, if needed\n        intermediate_steps = intermediate_steps or ''\n        history = self.chat_history.get_history(client_id, filter_messages=False)\n        file_responses = []\n        if history:\n            # Iterate backwards through the history\n            for msg in reversed(history):\n                if isinstance(msg, FileResponse):\n                    if msg.data_type == 'image':\n                        # Base64 encode the image\n                        if isinstance(msg.data, str):\n                            continue\n                        msg.data = pil_to_base64(msg.data)\n                    file_responses.append(msg)\n                if msg.type == 'start':\n                    break\n\n        response = ChatResponse(\n            message=result,\n            intermediate_steps=intermediate_steps.strip(),\n            type='end',\n            files=file_responses,\n        )\n        await self.send_json(client_id, response)\n        self.chat_history.add_message(client_id, response)\n\n    def set_cache(self, client_id: str, langchain_object: Any) -> bool:\n        \"\"\"\n        Set the cache for a client.\n        \"\"\"\n        # client_id is the flow id but that already exists in the cache\n        # so we need to change it to something else\n\n        result_dict = {\n            'result': langchain_object,\n            'type': type(langchain_object),\n        }\n        self.cache_service.upsert(client_id, result_dict)\n        return client_id in self.cache_service\n\n    async def handle_websocket(self, client_id: str, websocket: WebSocket):\n        await self.connect(client_id, websocket)\n\n        try:\n            chat_history = self.chat_history.get_history(client_id)\n            # iterate and make BaseModel into dict\n            chat_history = [chat.model_dump() for chat in chat_history]\n            await websocket.send_json(chat_history)\n\n            while True:\n                json_payload = await websocket.receive_json()\n                if isinstance(json_payload, str):\n                    payload = orjson.loads(json_payload)\n                elif isinstance(json_payload, dict):\n                    payload = json_payload\n                if 'clear_history' in payload and payload['clear_history']:\n                    self.chat_history.history[client_id] = []\n                    continue\n\n                with self.chat_cache.set_client_id(client_id):\n                    if langchain_object := self.cache_service.get(client_id).get('result'):\n                        await self.process_message(client_id, payload, langchain_object)\n\n                    else:\n                        raise RuntimeError(f'Could not find a build result for client_id {client_id}')\n        except Exception as exc:\n            # Handle any exceptions that might occur\n            logger.exception(f'Error handling websocket: {exc}')\n            if websocket.client_state == WebSocketState.CONNECTED:\n                await self.close_connection(\n                    client_id=client_id,\n                    code=status.WS_1011_INTERNAL_ERROR,\n                    reason=str(exc),\n                )\n            elif websocket.client_state == WebSocketState.DISCONNECTED:\n                self.disconnect(client_id)\n\n        finally:\n            try:\n                # first check if the connection is still open\n                if websocket.client_state == WebSocketState.CONNECTED:\n                    await self.close_connection(\n                        client_id=client_id,\n                        code=status.WS_1000_NORMAL_CLOSURE,\n                        reason='Client disconnected',\n                    )\n            except Exception as exc:\n                logger.error(f'Error closing connection: {exc}')\n            self.disconnect(client_id)\n\n\ndef dict_to_markdown_table(my_dict):\n    markdown_table = '| Key | Value |\\n|---|---|\\n'\n    for key, value in my_dict.items():\n        markdown_table += f'| {key} | {value} |\\n'\n    return markdown_table\n\n\ndef list_of_dicts_to_markdown_table(dict_list):\n    if not dict_list:\n        return 'No data provided.'\n\n    # Extract headers from the keys of the first dictionary\n    headers = dict_list[0].keys()\n    markdown_table = '| ' + ' | '.join(headers) + ' |\\n'\n    markdown_table += '| ' + ' | '.join('---' for _ in headers) + ' |\\n'\n\n    for row_dict in dict_list:\n        row = [str(row_dict.get(header, '')) for header in headers]\n        markdown_table += '| ' + ' | '.join(row) + ' |\\n'\n\n    return markdown_table\n"
  },
  {
    "path": "src/backend/bisheng/services/chat/utils.py",
    "content": "from bisheng.api.v1.schemas import ChatMessage\nfrom bisheng.interface.utils import try_setting_streaming_options\nfrom bisheng.processing.base import get_result_and_steps\nfrom loguru import logger\n\n\nasync def process_graph(\n    langchain_object,\n    chat_inputs: ChatMessage,\n    client_id: str,\n    session_id: str,\n):\n    langchain_object = try_setting_streaming_options(langchain_object)\n    logger.debug('Loaded langchain object')\n\n    if langchain_object is None:\n        # Raise user facing error\n        raise ValueError('There was an error loading the langchain_object. Please, check all the nodes and try again.')\n\n    # Generate result and thought\n    try:\n        if chat_inputs.message is None:\n            logger.debug('No message provided')\n            chat_inputs.message = {}\n\n        logger.debug('Generating result and thought')\n        result, intermediate_steps, raw_output = await get_result_and_steps(\n            langchain_object,\n            chat_inputs.message,\n            client_id=client_id,\n            session_id=session_id,\n        )\n        logger.debug('Generated result and intermediate_steps')\n        return result, intermediate_steps, raw_output\n    except Exception as e:\n        # Log stack trace\n        logger.exception(e)\n        raise e\n"
  },
  {
    "path": "src/backend/bisheng/services/credentials/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/credentials/factory.py",
    "content": "from typing import TYPE_CHECKING\n\nfrom bisheng.services.credentials.service import CredentialService\nfrom bisheng.services.factory import ServiceFactory\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass CredentialServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(CredentialService)\n\n    def create(self, settings_service: 'SettingsService'):\n        return CredentialService(settings_service)\n"
  },
  {
    "path": "src/backend/bisheng/services/credentials/service.py",
    "content": "from typing import TYPE_CHECKING, Optional, Union\nfrom uuid import UUID\n\nfrom bisheng.services.auth import utils as auth_utils\nfrom bisheng.services.base import Service\nfrom bisheng.services.database.models.credential.model import Credential\nfrom bisheng.services.deps import get_session\nfrom fastapi import Depends\nfrom sqlmodel import Session, select\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass CredentialService(Service):\n    name = 'credential_service'\n\n    def __init__(self, settings_service: 'SettingsService'):\n        self.settings_service = settings_service\n\n    def get_credential(self, user_id: Union[UUID, str], name: str, session: Session = Depends(get_session)) -> str:\n        # we get the credential from the database\n        # credential = session.query(Credential).filter(Credential.user_id == user_id, Credential.name == name).first()\n        credential = session.exec(\n            select(Credential).where(Credential.user_id == user_id, Credential.name == name)\n        ).first()\n        # we decrypt the value\n        if not credential or not credential.value:\n            raise ValueError(f'{name} credential not found.')\n        decrypted = auth_utils.decrypt_api_key(credential.value, settings_service=self.settings_service)\n        return decrypted\n\n    def list_credentials(\n        self, user_id: Union[UUID, str], session: Session = Depends(get_session)\n    ) -> list[Optional[str]]:\n        credentials = session.exec(select(Credential).where(Credential.user_id == user_id)).all()\n        return [credential.name for credential in credentials]\n"
  },
  {
    "path": "src/backend/bisheng/services/deps.py",
    "content": "from bisheng.services import ServiceType, service_manager\n\nfrom bisheng.services.session.service import SessionService\nfrom bisheng.services.task.service import TaskService\n\n\n# from sqlmodel import Session\n\n# def get_credential_service() -> \"CredentialService\":\n#     return service_manager.get(ServiceType.CREDENTIAL_SERVICE)  # type: ignore\n\n# def get_plugins_service() -> \"PluginService\":\n#     return service_manager.get(ServiceType.PLUGIN_SERVICE)  # type: ignore\n\n# def get_settings_service() -> \"SettingsService\":\n#     try:\n#         # type: ignore\n#         return service_manager.get(ServiceType.SETTINGS_SERVICE)\n#     except ValueError:\n#         # initialize settings service\n#         from langflow.services.manager import initialize_settings_service\n\n#         initialize_settings_service()\n#         # type: ignore\n#         return service_manager.get(ServiceType.SETTINGS_SERVICE)\n\n# def get_db_service() -> \"DatabaseService\":\n#     return service_manager.get(ServiceType.DATABASE_SERVICE)  # type: ignore\n\n# def get_session() -> Generator[\"Session\", None, None]:\n#     db_service = get_db_service()\n#     yield from db_service.get_session()\n\n# def get_cache_service() -> \"BaseCacheService\":\n#     return service_manager.get(ServiceType.CACHE_SERVICE)  # type: ignore\n\n\ndef get_session_service() -> SessionService:\n    return service_manager.get(ServiceType.SESSION_SERVICE)  # type: ignore\n\n\ndef get_task_service() -> TaskService:\n    return service_manager.get(ServiceType.TASK_SERVICE)  # type: ignore\n\n# def get_chat_service() -> \"ChatService\":\n#     return service_manager.get(ServiceType.CHAT_SERVICE)  # type: ignore\n\n# def get_store_service() -> \"StoreService\":\n#     return service_manager.get(ServiceType.STORE_SERVICE)  # type: ignore\n"
  },
  {
    "path": "src/backend/bisheng/services/factory.py",
    "content": "from typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from bisheng.services.base import Service\n\n\nclass ServiceFactory:\n\n    def __init__(self, service_class):\n        self.service_class = service_class\n\n    def create(self, *args, **kwargs) -> 'Service':\n        raise NotImplementedError\n"
  },
  {
    "path": "src/backend/bisheng/services/manager.py",
    "content": "from typing import TYPE_CHECKING, Dict, List, Optional\n\nfrom bisheng.services.schema import ServiceType\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from bisheng.services.base import Service\n    from bisheng.services.factory import ServiceFactory\n\n\nclass ServiceManager:\n    \"\"\"\n    Manages the creation of different services.\n    \"\"\"\n\n    def __init__(self):\n        self.services: Dict[str, 'Service'] = {}\n        self.factories = {}\n        self.dependencies = {}\n\n    def register_factory(\n        self,\n        service_factory: 'ServiceFactory',\n        dependencies: Optional[List[ServiceType]] = None,\n    ):\n        \"\"\"\n        Registers a new factory with dependencies.\n        \"\"\"\n        if dependencies is None:\n            dependencies = []\n        service_name = service_factory.service_class.name\n        self.factories[service_name] = service_factory\n        self.dependencies[service_name] = dependencies\n\n    def get(self, service_name: ServiceType) -> 'Service':\n        \"\"\"\n        Get (or create) a service by its name.\n        \"\"\"\n        if service_name not in self.services:\n            self._create_service(service_name)\n\n        return self.services[service_name]\n\n    def _create_service(self, service_name: ServiceType):\n        \"\"\"\n        Create a new service given its name, handling dependencies.\n        \"\"\"\n        logger.debug(f'Create service {service_name}')\n        self._validate_service_creation(service_name)\n\n        # Create dependencies first\n        for dependency in self.dependencies.get(service_name, []):\n            if dependency not in self.services:\n                self._create_service(dependency)\n\n        # Collect the dependent services\n        dependent_services = {\n            dep.value: self.services[dep]\n            for dep in self.dependencies.get(service_name, [])\n        }\n\n        # Create the actual service\n        self.services[service_name] = self.factories[service_name].create(**dependent_services)\n        self.services[service_name].set_ready()\n\n    def _validate_service_creation(self, service_name: ServiceType):\n        \"\"\"\n        Validate whether the service can be created.\n        \"\"\"\n        if service_name not in self.factories:\n            raise ValueError(f\"No factory registered for the service class '{service_name.name}'\")\n\n    def update(self, service_name: ServiceType):\n        \"\"\"\n        Update a service by its name.\n        \"\"\"\n        if service_name in self.services:\n            logger.debug(f'Update service {service_name}')\n            self.services.pop(service_name, None)\n            self.get(service_name)\n\n    def teardown(self):\n        \"\"\"\n        Teardown all the services.\n        \"\"\"\n        for service in self.services.values():\n            if service is None:\n                continue\n            logger.debug(f'Teardown service {service.name}')\n            try:\n                service.teardown()\n            except Exception as exc:\n                logger.exception(exc)\n        self.services = {}\n        self.factories = {}\n        self.dependencies = {}\n\n\nservice_manager = ServiceManager()\n\n\ndef reinitialize_services():\n    \"\"\"\n    Reinitialize all the services needed.\n    \"\"\"\n\n    # service_manager.update(ServiceType.SETTINGS_SERVICE)\n    # service_manager.update(ServiceType.DATABASE_SERVICE)\n    # service_manager.update(ServiceType.CACHE_SERVICE)\n    # service_manager.update(ServiceType.CHAT_SERVICE)\n    service_manager.update(ServiceType.SESSION_SERVICE)\n    # service_manager.update(ServiceType.AUTH_SERVICE)\n    service_manager.update(ServiceType.TASK_SERVICE)\n\n    # # Test cache connection\n    # service_manager.get(ServiceType.CACHE_SERVICE)\n    # # Test database connection\n    # service_manager.get(ServiceType.DATABASE_SERVICE)\n\n    # # Test cache connection\n    # service_manager.get(ServiceType.CACHE_SERVICE)\n    # # Test database connection\n    # service_manager.get(ServiceType.DATABASE_SERVICE)\n\n\n# def initialize_settings_service():\n#     \"\"\"\n#     Initialize the settings manager.\n#     \"\"\"\n#     from bisheng.services.settings import factory as settings_factory\n\n#     service_manager.register_factory(settings_factory.SettingsServiceFactory())\n\n\ndef initialize_session_service():\n    \"\"\"\n    Initialize the session manager.\n    \"\"\"\n    # from bisheng.services.cache import factory as cache_factory\n    from bisheng.services.session import factory as session_service_factory  # type: ignore\n\n    # initialize_settings_service()\n\n    # service_manager.register_factory(cache_factory.CacheServiceFactory(),\n    #                                  dependencies=[ServiceType.SETTINGS_SERVICE])\n\n    service_manager.register_factory(session_service_factory.SessionServiceFactory(), []\n                                     # dependencies=[ServiceType.CACHE_SERVICE],\n                                     )\n"
  },
  {
    "path": "src/backend/bisheng/services/plugins/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/plugins/base.py",
    "content": "from typing import Any\n\n\nclass BasePlugin:\n    def initialize(self):\n        pass\n\n    def teardown(self):\n        pass\n\n    def get(self) -> Any:\n        pass\n\n\nclass CallbackPlugin(BasePlugin):\n    def get_callback(self, _id=None):\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/services/plugins/factory.py",
    "content": "from typing import TYPE_CHECKING\n\nfrom bisheng.services.factory import ServiceFactory\nfrom bisheng.services.plugins.service import PluginService\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass PluginServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(PluginService)\n\n    def create(self, settings_service: 'SettingsService'):\n        service = PluginService(settings_service)\n        return service\n"
  },
  {
    "path": "src/backend/bisheng/services/plugins/langfuse_plugin.py",
    "content": "from typing import Optional\n\nfrom bisheng.services.deps import get_settings_service\nfrom bisheng.services.plugins.base import CallbackPlugin\nfrom loguru import logger\n\n\nclass LangfuseInstance:\n    _instance = None\n\n    @classmethod\n    def get(cls):\n        logger.debug('Getting Langfuse instance')\n        if cls._instance is None:\n            cls.create()\n        return cls._instance\n\n    @classmethod\n    def create(cls):\n        try:\n            logger.debug('Creating Langfuse instance')\n            from langfuse import Langfuse  # type: ignore\n\n            settings_manager = get_settings_service()\n\n            if settings_manager.settings.LANGFUSE_PUBLIC_KEY and settings_manager.settings.LANGFUSE_SECRET_KEY:\n                logger.debug('Langfuse credentials found')\n                cls._instance = Langfuse(\n                    public_key=settings_manager.settings.LANGFUSE_PUBLIC_KEY,\n                    secret_key=settings_manager.settings.LANGFUSE_SECRET_KEY,\n                    host=settings_manager.settings.LANGFUSE_HOST,\n                )\n            else:\n                logger.debug('No Langfuse credentials found')\n                cls._instance = None\n        except ImportError:\n            logger.debug('Langfuse not installed')\n            cls._instance = None\n\n    @classmethod\n    def update(cls):\n        logger.debug('Updating Langfuse instance')\n        cls._instance = None\n        cls.create()\n\n    @classmethod\n    def teardown(cls):\n        logger.debug('Tearing down Langfuse instance')\n        if cls._instance is not None:\n            cls._instance.flush()\n        cls._instance = None\n\n\nclass LangfusePlugin(CallbackPlugin):\n    def initialize(self):\n        LangfuseInstance.create()\n\n    def teardown(self):\n        LangfuseInstance.teardown()\n\n    def get(self):\n        return LangfuseInstance.get()\n\n    def get_callback(self, _id: Optional[str] = None):\n        if _id is None:\n            _id = 'default'\n        from langfuse.callback import CreateTrace  # type: ignore\n\n        logger.debug('Initializing langfuse callback')\n\n        try:\n            langfuse_instance = self.get()\n            if langfuse_instance is not None and hasattr(langfuse_instance, 'trace'):\n                trace = langfuse_instance.trace(CreateTrace(name='bisheng-' + _id, id=_id))\n                if trace:\n                    return trace.getNewHandler()\n\n        except Exception as exc:\n            logger.error(f'Error initializing langfuse callback: {exc}')\n\n        return None\n"
  },
  {
    "path": "src/backend/bisheng/services/plugins/service.py",
    "content": "import importlib\nimport inspect\nimport os\nfrom typing import TYPE_CHECKING, Union\n\nfrom bisheng.services.base import Service\nfrom bisheng.services.plugins.base import BasePlugin, CallbackPlugin\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass PluginService(Service):\n    name = 'plugin_service'\n\n    def __init__(self, settings_service: 'SettingsService'):\n        self.plugins: dict[str, BasePlugin] = {}\n        # plugin_dir = settings_service.settings.PLUGIN_DIR\n        self.plugin_dir = os.path.dirname(__file__)\n        self.plugins_base_module = 'bisheng.services.plugins'\n        self.load_plugins()\n\n    def load_plugins(self):\n        base_files = ['base.py', 'service.py', 'factory.py', '__init__.py']\n        for module in os.listdir(self.plugin_dir):\n            if module.endswith('.py') and module not in base_files:\n                plugin_name = module[:-3]\n                module_path = f'{self.plugins_base_module}.{plugin_name}'\n                try:\n                    mod = importlib.import_module(module_path)\n                    for attr_name in dir(mod):\n                        attr = getattr(mod, attr_name)\n                        if (\n                            inspect.isclass(attr)\n                            and issubclass(attr, BasePlugin)\n                            and attr not in [CallbackPlugin, BasePlugin]\n                        ):\n                            self.register_plugin(plugin_name, attr())\n                except Exception as exc:\n                    logger.error(f'Error loading plugin {plugin_name}: {exc}')\n\n    def register_plugin(self, plugin_name, plugin_instance):\n        self.plugins[plugin_name] = plugin_instance\n        plugin_instance.initialize()\n\n    def get_plugin(self, plugin_name) -> Union[BasePlugin, None]:\n        return self.plugins.get(plugin_name)\n\n    def get(self, plugin_name):\n        if plugin := self.get_plugin(plugin_name):\n            return plugin.get()\n        return None\n\n    def teardown(self):\n        for plugin in self.plugins.values():\n            plugin.teardown()\n\n    def get_callbacks(self, _id=None):\n        callbacks = []\n        for plugin in self.plugins.values():\n            if isinstance(plugin, CallbackPlugin):\n                callback = plugin.get_callback(_id=_id)\n                if callback:\n                    callbacks.append(callback)\n        return callbacks\n"
  },
  {
    "path": "src/backend/bisheng/services/schema.py",
    "content": "from enum import Enum\n\n\nclass ServiceType(str, Enum):\n    \"\"\"\n    Enum for the different types of services that can be\n    registered with the service manager.\n    \"\"\"\n\n    # AUTH_SERVICE = \"auth_service\"\n    # CACHE_SERVICE = \"cache_service\"\n    # SETTINGS_SERVICE = \"settings_service\"\n    # DATABASE_SERVICE = \"database_service\"\n    # CHAT_SERVICE = \"chat_service\"\n    SESSION_SERVICE = 'session_service'\n    TASK_SERVICE = 'task_service'\n    # PLUGIN_SERVICE = \"plugin_service\"\n    # STORE_SERVICE = \"store_service\"\n    # CREDENTIAL_SERVICE = \"credential_service\"\n"
  },
  {
    "path": "src/backend/bisheng/services/session/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/session/factory.py",
    "content": "from bisheng.services.factory import ServiceFactory\nfrom bisheng.services.session.service import SessionService\n\n# if TYPE_CHECKING:\n#     from bisheng.services.cache.service import BaseCacheService\n\n\nclass SessionServiceFactory(ServiceFactory):\n\n    def __init__(self):\n        super().__init__(SessionService)\n\n    def create(self):\n        return SessionService()\n"
  },
  {
    "path": "src/backend/bisheng/services/session/service.py",
    "content": "from bisheng.api.utils import build_flow_no_yield\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.services.base import Service\nfrom bisheng.services.session.utils import compute_dict_hash, session_id_generator\n\n# if TYPE_CHECKING:\n#     from bisheng.services.cache.base import BaseCacheService\n\n\nclass SessionService(Service):\n    name = 'session_service'\n\n    def __init__(self):\n        self.cache_service = get_redis_client_sync()\n\n    async def load_session(self, key, data_graph, **kwargs):\n        # Check if the data is cached\n        if key in self.cache_service:\n            return await self.cache_service.aget(key)\n\n        if key is None:\n            key = self.generate_key(session_id=None, data_graph=data_graph)\n\n        # If not cached, build the graph and cache it\n        # graph, artifacts = await build_sorted_vertices(data_graph)\n        # Complete with custom initialization methodsapiAlignment with Chat\n        artifacts = {}\n        graph = await build_flow_no_yield(graph_data=data_graph, **kwargs)\n\n        await self.cache_service.aset(key, (graph, artifacts))\n\n        return graph, artifacts\n\n    def build_key(self, session_id, data_graph):\n        json_hash = compute_dict_hash(data_graph)\n        return f\"{session_id}{'_' if session_id else ''}{json_hash}\"\n\n    def generate_key(self, session_id, data_graph):\n        # Hash the JSON and combine it with the session_id to create a unique key\n        if session_id is None:\n            # generate a 5 char session_id to concatenate with the json_hash\n            session_id = session_id_generator()\n        return self.build_key(session_id, data_graph=data_graph).lower()\n\n    def update_session(self, session_id, value):\n        self.cache_service.set(session_id, value)\n\n    def clear_session(self, session_id):\n        self.cache_service.delete(session_id)\n"
  },
  {
    "path": "src/backend/bisheng/services/session/utils.py",
    "content": "import hashlib\nimport random\nimport string\n\nfrom bisheng.common.utils.util import orjson_dumps\nfrom bisheng.core.cache.utils import filter_json\n\n\ndef session_id_generator(size=6):\n    return ''.join(random.SystemRandom().choices(string.ascii_uppercase + string.digits, k=size))\n\n\ndef compute_dict_hash(graph_data):\n    graph_data = filter_json(graph_data)\n\n    cleaned_graph_json = orjson_dumps(graph_data, sort_keys=True)\n\n    return hashlib.sha256(cleaned_graph_json.encode('utf-8')).hexdigest()\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/__init__.py",
    "content": "from . import factory, service\n\n__all__ = ['factory', 'service']\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/auth.py",
    "content": "import secrets\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom bisheng.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD\nfrom bisheng.services.settings.utils import read_secret_from_file, write_secret_to_file\nfrom loguru import logger\nfrom passlib.context import CryptContext\nfrom pydantic import Field, field_validator\nfrom pydantic_settings import SettingsConfigDict, BaseSettings\n\n\nclass AuthSettings(BaseSettings):\n    # Login settings\n    CONFIG_DIR: str\n    SECRET_KEY: str = Field(\n        default='',\n        description='Secret key for JWT. If not provided, a random one will be generated.',\n        frozen=False,\n    )\n    ALGORITHM: str = 'HS256'\n    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60\n    REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 12 * 7\n\n    # API Key to execute /process endpoint\n    API_KEY_SECRET_KEY: Optional[str] = 'b82818e0ad4ff76615c5721ee21004b07d84cd9b87ba4d9cb42374da134b841a'\n    API_KEY_ALGORITHM: str = 'HS256'\n    API_V1_STR: str = '/api/v1'\n\n    # If AUTO_LOGIN = True\n    # > The application does not request login and logs in automatically as a super user.\n    AUTO_LOGIN: bool = True\n    NEW_USER_IS_ACTIVE: bool = False\n    SUPERUSER: str = DEFAULT_SUPERUSER\n    SUPERUSER_PASSWORD: str = DEFAULT_SUPERUSER_PASSWORD\n\n    pwd_context: CryptContext = CryptContext(schemes=['bcrypt'], deprecated='auto')\n    model_config = SettingsConfigDict(validate_assignment=True, extra='ignore', env_prefix='bisheng_')\n\n    def reset_credentials(self):\n        self.SUPERUSER = DEFAULT_SUPERUSER\n        self.SUPERUSER_PASSWORD = DEFAULT_SUPERUSER_PASSWORD\n\n    @field_validator('SECRET_KEY', mode='before')\n    @classmethod\n    def get_secret_key(cls, value, values):\n        config_dir = values.get('CONFIG_DIR')\n\n        if not config_dir:\n            logger.debug('No CONFIG_DIR provided, not saving secret key')\n            return value or secrets.token_urlsafe(32)\n\n        secret_key_path = Path(config_dir) / 'secret_key'\n\n        if value:\n            logger.debug('Secret key provided')\n            write_secret_to_file(secret_key_path, value)\n        else:\n            logger.debug('No secret key provided, generating a random one')\n\n            if secret_key_path.exists():\n                value = read_secret_from_file(secret_key_path)\n                logger.debug('Loaded secret key')\n                if not value:\n                    value = secrets.token_urlsafe(32)\n                    write_secret_to_file(secret_key_path, value)\n                    logger.debug('Saved secret key')\n            else:\n                value = secrets.token_urlsafe(32)\n                write_secret_to_file(secret_key_path, value)\n                logger.debug('Saved secret key')\n\n        return value\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/base.py",
    "content": "import contextlib\nimport json\nimport os\nfrom pathlib import Path\nfrom shutil import copy2\nfrom typing import List, Optional\n\nimport orjson\nimport yaml\nfrom loguru import logger\nfrom pydantic import field_validator, validator\nfrom pydantic_settings import BaseSettings, SettingsConfigDict\n\n# BASE_COMPONENTS_PATH = str(Path(__file__).parent / \"components\")\nBASE_COMPONENTS_PATH = str(Path(__file__).parent.parent.parent / 'components')\n\n\nclass Settings(BaseSettings):\n    CHAINS: dict = {}\n    AGENTS: dict = {}\n    PROMPTS: dict = {}\n    LLMS: dict = {}\n    TOOLS: dict = {}\n    MEMORIES: dict = {}\n    EMBEDDINGS: dict = {}\n    VECTORSTORES: dict = {}\n    DOCUMENTLOADERS: dict = {}\n    WRAPPERS: dict = {}\n    RETRIEVERS: dict = {}\n    TOOLKITS: dict = {}\n    TEXTSPLITTERS: dict = {}\n    UTILITIES: dict = {}\n    OUTPUT_PARSERS: dict = {}\n    CUSTOM_COMPONENTS: dict = {}\n\n    # Define the default LANGFLOW_DIR\n    CONFIG_DIR: Optional[str] = None\n\n    DEV: bool = False\n    DATABASE_URL: Optional[str] = None\n    CACHE_TYPE: str = 'memory'\n    REMOVE_API_KEYS: bool = False\n    COMPONENTS_PATH: List[str] = []\n    LANGCHAIN_CACHE: str = 'InMemoryCache'\n\n    # Redis\n    REDIS_HOST: str = 'localhost'\n    REDIS_PORT: int = 6379\n    REDIS_DB: int = 0\n    REDIS_CACHE_EXPIRE: int = 3600\n\n    # PLUGIN_DIR: Optional[str] = None\n\n    LANGFUSE_SECRET_KEY: Optional[str] = None\n    LANGFUSE_PUBLIC_KEY: Optional[str] = None\n    LANGFUSE_HOST: Optional[str] = None\n\n    STORE: Optional[bool] = True\n    STORE_URL: Optional[str] = 'https://api.langflow.store'\n    DOWNLOAD_WEBHOOK_URL: Optional[\n        str\n    ] = 'https://api.langflow.store/flows/trigger/ec611a61-8460-4438-b187-a4f65e5559d4'\n    LIKE_WEBHOOK_URL: Optional[str] = 'https://api.langflow.store/flows/trigger/64275852-ec00-45c1-984e-3bff814732da'\n\n    @field_validator('CONFIG_DIR', mode=\"before\")\n    @classmethod\n    def set_langflow_dir(cls, value):\n        if not value:\n            from platformdirs import user_cache_dir\n\n            # Define the app name and author\n            app_name = 'langflow'\n            app_author = 'logspace'\n\n            # Get the cache directory for the application\n            cache_dir = user_cache_dir(app_name, app_author)\n\n            # Create a .langflow directory inside the cache directory\n            value = Path(cache_dir)\n            value.mkdir(parents=True, exist_ok=True)\n\n        if isinstance(value, str):\n            value = Path(value)\n        if not value.exists():\n            value.mkdir(parents=True, exist_ok=True)\n\n        return str(value)\n\n    @field_validator('DATABASE_URL', mode='before')\n    @classmethod\n    def set_database_url(cls, value, values):\n        if not value:\n            logger.debug('No database_url provided, trying LANGFLOW_DATABASE_URL env variable')\n            if langflow_database_url := os.getenv('LANGFLOW_DATABASE_URL'):\n                value = langflow_database_url\n                logger.debug('Using LANGFLOW_DATABASE_URL env variable.')\n            else:\n                logger.debug('No DATABASE_URL env variable, using sqlite database')\n                # Originally, we used sqlite:///./langflow.db\n                # so we need to migrate to the new format\n                # if there is a database in that location\n                if not values['CONFIG_DIR']:\n                    raise ValueError('CONFIG_DIR not set, please set it or provide a DATABASE_URL')\n\n                new_path = f\"{values['CONFIG_DIR']}/langflow.db\"\n                if Path('./langflow.db').exists():\n                    if Path(new_path).exists():\n                        logger.debug(f'Database already exists at {new_path}, using it')\n                    else:\n                        try:\n                            logger.debug('Copying existing database to new location')\n                            copy2('./langflow.db', new_path)\n                            logger.debug(f'Copied existing database to {new_path}')\n                        except Exception:\n                            logger.error('Failed to copy database, using default path')\n                            new_path = './langflow.db'\n\n                value = f'sqlite:///{new_path}'\n\n        return value\n\n    @field_validator('COMPONENTS_PATH', mode='before')\n    @classmethod\n    def set_components_path(cls, value):\n        if os.getenv('LANGFLOW_COMPONENTS_PATH'):\n            logger.debug('Adding LANGFLOW_COMPONENTS_PATH to components_path')\n            langflow_component_path = os.getenv('LANGFLOW_COMPONENTS_PATH')\n            if Path(langflow_component_path).exists() and langflow_component_path not in value:\n                if isinstance(langflow_component_path, list):\n                    for path in langflow_component_path:\n                        if path not in value:\n                            value.append(path)\n                    logger.debug(f'Extending {langflow_component_path} to components_path')\n                elif langflow_component_path not in value:\n                    value.append(langflow_component_path)\n                    logger.debug(f'Appending {langflow_component_path} to components_path')\n\n        if not value:\n            value = [BASE_COMPONENTS_PATH]\n            logger.debug('Setting default components path to components_path')\n        elif BASE_COMPONENTS_PATH not in value:\n            value.append(BASE_COMPONENTS_PATH)\n            logger.debug('Adding default components path to components_path')\n\n        logger.debug(f'Components path: {value}')\n        return value\n\n    model_config = SettingsConfigDict(validate_assignment=True, extra='ignore', env_prefix='LANGFLOW_')\n\n    # @model_validator()\n    # @classmethod\n    # def validate_lists(cls, values):\n    #     for key, value in values.items():\n    #         if key != \"dev\" and not value:\n    #             values[key] = []\n    #     return values\n\n    def update_from_yaml(self, file_path: str, dev: bool = False):\n        new_settings = load_settings_from_yaml(file_path)\n        self.CHAINS = new_settings.CHAINS or {}\n        self.AGENTS = new_settings.AGENTS or {}\n        self.PROMPTS = new_settings.PROMPTS or {}\n        self.LLMS = new_settings.LLMS or {}\n        self.TOOLS = new_settings.TOOLS or {}\n        self.MEMORIES = new_settings.MEMORIES or {}\n        self.WRAPPERS = new_settings.WRAPPERS or {}\n        self.TOOLKITS = new_settings.TOOLKITS or {}\n        self.TEXTSPLITTERS = new_settings.TEXTSPLITTERS or {}\n        self.UTILITIES = new_settings.UTILITIES or {}\n        self.EMBEDDINGS = new_settings.EMBEDDINGS or {}\n        self.VECTORSTORES = new_settings.VECTORSTORES or {}\n        self.DOCUMENTLOADERS = new_settings.DOCUMENTLOADERS or {}\n        self.RETRIEVERS = new_settings.RETRIEVERS or {}\n        self.OUTPUT_PARSERS = new_settings.OUTPUT_PARSERS or {}\n        self.CUSTOM_COMPONENTS = new_settings.CUSTOM_COMPONENTS or {}\n        self.COMPONENTS_PATH = new_settings.COMPONENTS_PATH or []\n        self.DEV = dev\n\n    def update_settings(self, **kwargs):\n        logger.debug('Updating settings')\n        for key, value in kwargs.items():\n            # value may contain sensitive information, so we don't want to log it\n            if not hasattr(self, key):\n                logger.debug(f'Key {key} not found in settings')\n                continue\n            logger.debug(f'Updating {key}')\n            if isinstance(getattr(self, key), list):\n                # value might be a '[something]' string\n                with contextlib.suppress(json.decoder.JSONDecodeError):\n                    value = orjson.loads(str(value))\n                if isinstance(value, list):\n                    for item in value:\n                        if isinstance(item, Path):\n                            item = str(item)\n                        if item not in getattr(self, key):\n                            getattr(self, key).append(item)\n                    logger.debug(f'Extended {key}')\n                else:\n                    if isinstance(value, Path):\n                        value = str(value)\n                    if value not in getattr(self, key):\n                        getattr(self, key).append(value)\n                        logger.debug(f'Appended {key}')\n\n            else:\n                setattr(self, key, value)\n                logger.debug(f'Updated {key}')\n            logger.debug(f'{key}: {getattr(self, key)}')\n\n\ndef save_settings_to_yaml(settings: Settings, file_path: str):\n    with open(file_path, 'w') as f:\n        settings_dict = settings.model_dump()\n        yaml.dump(settings_dict, f)\n\n\ndef load_settings_from_yaml(file_path: str) -> Settings:\n    # Check if a string is a valid path or a file name\n    if '/' not in file_path:\n        # Get current path\n        current_path = os.path.dirname(os.path.abspath(__file__))\n\n        file_path = os.path.join(current_path, file_path)\n\n    with open(file_path, 'r') as f:\n        settings_dict = yaml.safe_load(f)\n        settings_dict = {k.upper(): v for k, v in settings_dict.items()}\n\n        for key in settings_dict:\n            if key not in Settings.model_fields.keys():\n                raise KeyError(f'Key {key} not found in settings')\n            logger.debug(f'Loading {len(settings_dict[key])} {key} from {file_path}')\n\n    return Settings(**settings_dict)\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/constants.py",
    "content": "DEFAULT_SUPERUSER = 'admin'\nDEFAULT_SUPERUSER_PASSWORD = '1234'\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/factory.py",
    "content": "from pathlib import Path\n\nfrom bisheng.services.factory import ServiceFactory\nfrom bisheng.services.settings.service import SettingsService\n\n\nclass SettingsServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(SettingsService)\n\n    def create(self):\n        # Here you would have logic to create and configure a SettingsService\n        bisheng_dir = Path(__file__).parent.parent.parent\n        return SettingsService.load_settings_from_yaml(str(bisheng_dir / 'config.yaml'))\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/service.py",
    "content": "import os\n\nimport yaml\nfrom bisheng.services.base import Service\nfrom bisheng.services.settings.auth import AuthSettings\nfrom bisheng.services.settings.base import Settings\nfrom loguru import logger\n\n\nclass SettingsService(Service):\n    name = 'settings_service'\n\n    def __init__(self, settings: Settings, auth_settings: AuthSettings):\n        super().__init__()\n        self.settings = settings\n        self.auth_settings = auth_settings\n\n    @classmethod\n    def load_settings_from_yaml(cls, file_path: str) -> 'SettingsService':\n        # Check if a string is a valid path or a file name\n        if '/' not in file_path:\n            # Get current path\n            current_path = os.path.dirname(os.path.abspath(__file__))\n\n            file_path = os.path.join(current_path, file_path)\n\n        with open(file_path, 'r') as f:\n            settings_dict = yaml.safe_load(f)\n            settings_dict = {k.upper(): v for k, v in settings_dict.items()}\n\n            for key in settings_dict:\n                if key not in Settings.model_fields.keys():\n                    raise KeyError(f'Key {key} not found in settings')\n                logger.debug(f'Loading {len(settings_dict[key])} {key} from {file_path}')\n\n        settings = Settings(**settings_dict)\n        if not settings.CONFIG_DIR:\n            raise ValueError('CONFIG_DIR must be set in settings')\n\n        auth_settings = AuthSettings(\n            CONFIG_DIR=settings.CONFIG_DIR,\n        )\n        return cls(settings, auth_settings)\n"
  },
  {
    "path": "src/backend/bisheng/services/settings/utils.py",
    "content": "import os\nimport platform\nfrom pathlib import Path\n\nfrom loguru import logger\n\n\ndef set_secure_permissions(file_path):\n    if platform.system() in ['Linux', 'Darwin']:  # Unix/Linux/Mac\n        os.chmod(file_path, 0o600)\n    elif platform.system() == 'Windows':\n        import win32api\n        import win32con\n        import win32security\n\n        user, domain, _ = win32security.LookupAccountName('', win32api.GetUserName())\n        sd = win32security.GetFileSecurity(file_path, win32security.DACL_SECURITY_INFORMATION)\n        dacl = win32security.ACL()\n\n        # Set the new DACL for the file: read and write access for the owner, no access for everyone else\n        dacl.AddAccessAllowedAce(\n            win32security.ACL_REVISION,\n            win32con.GENERIC_READ | win32con.GENERIC_WRITE,\n            user,\n        )\n        sd.SetSecurityDescriptorDacl(1, dacl, 0)\n        win32security.SetFileSecurity(file_path, win32security.DACL_SECURITY_INFORMATION, sd)\n    else:\n        print('Unsupported OS')\n\n\ndef write_secret_to_file(path: Path, value: str) -> None:\n    with path.open('wb') as f:\n        f.write(value.encode('utf-8'))\n    try:\n        set_secure_permissions(path)\n    except Exception:\n        logger.error('Failed to set secure permissions on secret key')\n\n\ndef read_secret_from_file(path: Path) -> str:\n    with path.open('r') as f:\n        return f.read()\n"
  },
  {
    "path": "src/backend/bisheng/services/store/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/store/exceptions.py",
    "content": "class CustomException(Exception):\n\n    def __init__(self, detail, status_code):\n        super().__init__(detail)\n        self.status_code = status_code\n\n\n# Define custom exceptions with status codes\nclass UnauthorizedError(CustomException):\n\n    def __init__(self, detail='Unauthorized access'):\n        super().__init__(detail, 401)\n\n\nclass ForbiddenError(CustomException):\n\n    def __init__(self, detail='Forbidden'):\n        super().__init__(detail, 403)\n\n\nclass APIKeyError(CustomException):\n\n    def __init__(self, detail='API key error'):\n        super().__init__(detail, 400)  # ! Should be 401\n\n\nclass FilterError(CustomException):\n\n    def __init__(self, detail='Filter error'):\n        super().__init__(detail, 400)\n"
  },
  {
    "path": "src/backend/bisheng/services/store/factory.py",
    "content": "from typing import TYPE_CHECKING\n\nfrom bisheng.services.factory import ServiceFactory\nfrom bisheng.services.store.service import StoreService\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nclass StoreServiceFactory(ServiceFactory):\n    def __init__(self):\n        super().__init__(StoreService)\n\n    def create(self, settings_service: 'SettingsService'):\n        return StoreService(settings_service)\n"
  },
  {
    "path": "src/backend/bisheng/services/store/schema.py",
    "content": "from typing import List, Optional\nfrom uuid import UUID\n\nfrom pydantic import field_validator, BaseModel\n\n\nclass TagResponse(BaseModel):\n    id: UUID\n    name: Optional[str] = None\n\n\nclass UsersLikesResponse(BaseModel):\n    likes_count: Optional[int] = None\n    liked_by_user: Optional[bool] = None\n\n\nclass CreateComponentResponse(BaseModel):\n    id: UUID\n\n\nclass TagsIdResponse(BaseModel):\n    tags_id: Optional[TagResponse] = None\n\n\nclass ListComponentResponse(BaseModel):\n    id: Optional[UUID] = None\n    name: Optional[str] = None\n    description: Optional[str] = None\n    liked_by_count: Optional[int] = None\n    liked_by_user: Optional[bool] = None\n    is_component: Optional[bool] = None\n    metadata: Optional[dict] = {}\n    user_created: Optional[dict] = {}\n    tags: Optional[List[TagResponse]] = None\n    downloads_count: Optional[int] = None\n    last_tested_version: Optional[str] = None\n    private: Optional[bool] = None\n\n    # tags comes as a TagsIdResponse but we want to return a list of TagResponse\n    @field_validator('tags', mode=\"before\")\n    @classmethod\n    def tags_to_list(cls, v):\n        # Check if all values are have id and name\n        # if so, return v else transform to TagResponse\n        if not v:\n            return v\n        if all(['id' in tag and 'name' in tag for tag in v]):\n            return v\n        else:\n            return [TagResponse(**tag.get('tags_id')) for tag in v if tag.get('tags_id')]\n\n\nclass ListComponentResponseModel(BaseModel):\n    count: Optional[int] = 0\n    authorized: bool\n    results: Optional[List[ListComponentResponse]] = None\n\n\nclass DownloadComponentResponse(BaseModel):\n    id: UUID\n    name: Optional[str] = None\n    description: Optional[str] = None\n    data: Optional[dict] = None\n    is_component: Optional[bool] = None\n    metadata: Optional[dict] = {}\n\n\nclass StoreComponentCreate(BaseModel):\n    name: str\n    description: Optional[str] = None\n    data: dict\n    tags: Optional[List[str]] = None\n    parent: Optional[UUID] = None\n    is_component: Optional[bool] = None\n    last_tested_version: Optional[str] = None\n    private: Optional[bool] = True\n"
  },
  {
    "path": "src/backend/bisheng/services/store/service.py",
    "content": "import json\nfrom contextlib import asynccontextmanager\nfrom contextvars import ContextVar\nfrom typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple\nfrom uuid import UUID\n\nimport httpx\nfrom bisheng.services.base import Service\nfrom bisheng.services.store.exceptions import APIKeyError, FilterError, ForbiddenError\nfrom bisheng.services.store.schema import (CreateComponentResponse, DownloadComponentResponse,\n                                           ListComponentResponse, ListComponentResponseModel,\n                                           StoreComponentCreate)\nfrom bisheng.services.store.utils import (process_component_data, process_tags_for_post,\n                                          update_components_with_user_data)\nfrom httpx import HTTPError, HTTPStatusError\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from bisheng.services.settings.service import SettingsService\n\n\nuser_data_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar('user_data', default=None)\n\n\n@asynccontextmanager\nasync def user_data_context(store_service: 'StoreService', api_key: Optional[str] = None):\n    # Fetch and set user data to the context variable\n    if api_key:\n        try:\n            user_data, _ = await store_service._get(\n                f'{store_service.base_url}/users/me', api_key, params={'fields': 'id'}\n            )\n            user_data_var.set(user_data[0])\n        except HTTPStatusError as exc:\n            if exc.response.status_code == 403:\n                raise ValueError('Invalid API key')\n    try:\n        yield\n    finally:\n        # Clear the user data from the context variable\n        user_data_var.set(None)\n\n\nclass StoreService(Service):\n    \"\"\"This is a service that integrates bisheng with the store which\n    is a Directus instance. It allows to search, get and post components to\n    the store.\"\"\"\n\n    name = 'store_service'\n\n    def __init__(self, settings_service: 'SettingsService'):\n        self.settings_service = settings_service\n        self.base_url = self.settings_service.settings.STORE_URL\n        self.download_webhook_url = self.settings_service.settings.DOWNLOAD_WEBHOOK_URL\n        self.like_webhook_url = self.settings_service.settings.LIKE_WEBHOOK_URL\n        self.components_url = f'{self.base_url}/items/components'\n        self.default_fields = [\n            'id',\n            'name',\n            'description',\n            'user_created.username',\n            'is_component',\n            'tags.tags_id.name',\n            'tags.tags_id.id',\n            'count(liked_by)',\n            'count(downloads)',\n            'metadata',\n            'last_tested_version',\n            'private',\n        ]\n\n    # Create a context manager that will use the api key to\n    # get the user data and all requests inside the context manager\n    # will make a property return that data\n    # Without making the request multiple times\n\n    async def check_api_key(self, api_key: str):\n        # Check if the api key is valid\n        # If it is, return True\n        # If it is not, return False\n        try:\n            user_data, _ = await self._get(f'{self.base_url}/users/me', api_key, params={'fields': 'id'})\n\n            return 'id' in user_data[0]\n        except HTTPStatusError as exc:\n            if exc.response.status_code in [403, 401]:\n                return False\n            else:\n                raise ValueError(f'Unexpected status code: {exc.response.status_code}')\n        except Exception as exc:\n            raise ValueError(f'Unexpected error: {exc}')\n\n    async def _get(\n        self, url: str, api_key: Optional[str] = None, params: Optional[Dict[str, Any]] = None\n    ) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        \"\"\"Utility method to perform GET requests.\"\"\"\n        if api_key:\n            headers = {'Authorization': f'Bearer {api_key}'}\n        else:\n            headers = {}\n        async with httpx.AsyncClient() as client:\n            try:\n                response = await client.get(url, headers=headers, params=params)\n                response.raise_for_status()\n            except HTTPError as exc:\n                raise exc\n            except Exception as exc:\n                raise ValueError(f'GET failed: {exc}')\n        json_response = response.json()\n        result = json_response['data']\n        metadata = {}\n        if 'meta' in json_response:\n            metadata = json_response['meta']\n\n        if isinstance(result, dict):\n            return [result], metadata\n        return result, metadata\n\n    async def call_webhook(self, api_key: str, webhook_url: str, component_id: UUID) -> None:\n        # The webhook is a POST request with the data in the body\n        # For now we are calling it just for testing\n        try:\n            headers = {'Authorization': f'Bearer {api_key}'}\n            async with httpx.AsyncClient() as client:\n                response = await client.post(webhook_url, headers=headers, json={'component_id': str(component_id)})\n                response.raise_for_status()\n            return response.json()\n        except HTTPError as exc:\n            raise exc\n        except Exception as exc:\n            logger.debug(f'Webhook failed: {exc}')\n\n    def build_tags_filter(self, tags: List[str]):\n        tags_filter: Dict[str, Any] = {'tags': {'_and': []}}\n        for tag in tags:\n            tags_filter['tags']['_and'].append({'_some': {'tags_id': {'name': {'_eq': tag}}}})\n        return tags_filter\n\n    async def count_components(\n        self,\n        filter_conditions: List[Dict[str, Any]],\n        api_key: Optional[str] = None,\n        use_api_key: Optional[bool] = False,\n    ) -> int:\n        params = {'aggregate': json.dumps({'count': '*'})}\n        if filter_conditions:\n            params['filter'] = json.dumps({'_and': filter_conditions})\n\n        api_key = api_key if use_api_key else None\n\n        results, _ = await self._get(self.components_url, api_key, params)\n        return int(results[0].get('count', 0))\n\n    @staticmethod\n    def build_search_filter_conditions(query: str):\n        # instead of build the param ?search=query, we will build the filter\n        # that will use _icontains (case insensitive)\n        conditions: Dict[str, Any] = {'_or': []}\n        conditions['_or'].append({'name': {'_icontains': query}})\n        conditions['_or'].append({'description': {'_icontains': query}})\n        conditions['_or'].append({'tags': {'tags_id': {'name': {'_icontains': query}}}})\n        conditions['_or'].append({'user_created': {'username': {'_icontains': query}}})\n        return conditions\n\n    def build_filter_conditions(\n        self,\n        component_id: Optional[str] = None,\n        search: Optional[str] = None,\n        private: Optional[bool] = None,\n        tags: Optional[List[str]] = None,\n        is_component: Optional[bool] = None,\n        filter_by_user: Optional[bool] = False,\n        liked: Optional[bool] = False,\n        store_api_Key: Optional[str] = None,\n    ):\n        filter_conditions = []\n\n        if search is not None:\n            search_conditions = self.build_search_filter_conditions(search)\n            filter_conditions.append(search_conditions)\n\n        if private is not None:\n            filter_conditions.append({'private': {'_eq': private}})\n\n        if tags:\n            tags_filter = self.build_tags_filter(tags)\n            filter_conditions.append(tags_filter)\n        if component_id is not None:\n            filter_conditions.append({'id': {'_eq': component_id}})\n        if is_component is not None:\n            filter_conditions.append({'is_component': {'_eq': is_component}})\n        if liked and store_api_Key:\n            liked_filter = self.build_liked_filter()\n            filter_conditions.append(liked_filter)\n        elif liked and not store_api_Key:\n            raise APIKeyError('You must provide an API key to filter by likes')\n\n        if filter_by_user and store_api_Key:\n            user_data = user_data_var.get()\n            if not user_data:\n                raise ValueError('No user data')\n            filter_conditions.append({'user_created': {'_eq': user_data['id']}})\n        elif filter_by_user and not store_api_Key:\n            raise APIKeyError('You must provide an API key to filter your components')\n        else:\n            filter_conditions.append({'private': {'_eq': False}})\n\n        return filter_conditions\n\n    def build_liked_filter(self):\n        user_data = user_data_var.get()\n        # params[\"filter\"] = json.dumps({\"user_created\": {\"_eq\": user_data[\"id\"]}})\n        if not user_data:\n            raise ValueError('No user data')\n        return {'liked_by': {'directus_users_id': {'_eq': user_data['id']}}}\n\n    async def query_components(\n        self,\n        api_key: Optional[str] = None,\n        sort: Optional[List[str]] = None,\n        page: int = 1,\n        limit: int = 15,\n        fields: Optional[List[str]] = None,\n        filter_conditions: Optional[List[Dict[str, Any]]] = None,\n        use_api_key: Optional[bool] = False,\n    ) -> Tuple[List[ListComponentResponse], Dict[str, Any]]:\n        params: Dict[str, Any] = {\n            'page': page,\n            'limit': limit,\n            'fields': ','.join(fields) if fields is not None else ','.join(self.default_fields),\n            'meta': 'filter_count',  # !This is DEPRECATED so we should remove it ASAP\n        }\n        # ?aggregate[count]=likes\n\n        if sort:\n            params['sort'] = ','.join(sort)\n\n        # Only public components or the ones created by the user\n        # check for \"public\" or \"Public\"\n\n        if filter_conditions:\n            params['filter'] = json.dumps({'_and': filter_conditions})\n\n        # If not liked, this means we are getting public components\n        # so we don't need to risk passing an invalid api_key\n        # and getting 401\n        api_key = api_key if use_api_key else None\n        results, metadata = await self._get(self.components_url, api_key, params)\n        if isinstance(results, dict):\n            results = [results]\n\n        results_objects = [ListComponentResponse(**result) for result in results]\n\n        return results_objects, metadata\n\n    async def get_liked_by_user_components(self, component_ids: List[str], api_key: str) -> List[str]:\n        # Get fields id\n        # filter should be \"id is in component_ids AND liked_by directus_users_id token is api_key\"\n        # return the ids\n        user_data = user_data_var.get()\n        if not user_data:\n            raise ValueError('No user data')\n        params = {\n            'fields': 'id',\n            'filter': json.dumps(\n                {\n                    '_and': [\n                        {'id': {'_in': component_ids}},\n                        {'liked_by': {'directus_users_id': {'_eq': user_data['id']}}},\n                    ]\n                }\n            ),\n        }\n        results, _ = await self._get(self.components_url, api_key, params)\n        return [result['id'] for result in results]\n\n    # Which of the components is parent of the user's components\n    async def get_components_in_users_collection(self, component_ids: List[str], api_key: str):\n        user_data = user_data_var.get()\n        if not user_data:\n            raise ValueError('No user data')\n        params = {\n            'fields': 'id',\n            'filter': json.dumps(\n                {\n                    '_and': [\n                        {'user_created': {'_eq': user_data['id']}},\n                        {'parent': {'_in': component_ids}},\n                    ]\n                }\n            ),\n        }\n        results, _ = await self._get(self.components_url, api_key, params)\n        return [result['id'] for result in results]\n\n    async def download(self, api_key: str, component_id: UUID) -> DownloadComponentResponse:\n        url = f'{self.components_url}/{component_id}'\n        params = {'fields': ','.join(['id', 'name', 'description', 'data', 'is_component', 'metadata'])}\n        if not self.download_webhook_url:\n            raise ValueError('DOWNLOAD_WEBHOOK_URL is not set')\n        component, _ = await self._get(url, api_key, params)\n        await self.call_webhook(api_key, self.download_webhook_url, component_id)\n        if len(component) > 1:\n            raise ValueError('Something went wrong while downloading the component')\n        component_dict = component[0]\n\n        download_component = DownloadComponentResponse(**component_dict)\n        # Check if metadata is an empty dict\n        if download_component.metadata in [None, {}] and download_component.data is not None:\n            # If it is, we need to build the metadata\n            try:\n                download_component.metadata = process_component_data(download_component.data.get('nodes', []))\n            except KeyError:\n                raise ValueError('Invalid component data. No nodes found')\n        return download_component\n\n    async def upload(self, api_key: str, component_data: StoreComponentCreate) -> CreateComponentResponse:\n        headers = {'Authorization': f'Bearer {api_key}'}\n        component_dict = component_data.model_dump(exclude_unset=True)\n        # Parent is a UUID, but the store expects a string\n        response = None\n        if component_dict.get('parent'):\n            component_dict['parent'] = str(component_dict['parent'])\n\n        component_dict = process_tags_for_post(component_dict)\n        try:\n            # response = httpx.post(self.components_url, headers=headers, json=component_dict)\n            # response.raise_for_status()\n            async with httpx.AsyncClient() as client:\n                response = await client.post(self.components_url, headers=headers, json=component_dict)\n                response.raise_for_status()\n            component = response.json()['data']\n            return CreateComponentResponse(**component)\n        except HTTPError as exc:\n            if response:\n                try:\n                    errors = response.json()\n                    message = errors['errors'][0]['message']\n                    if message == 'An unexpected error occurred.':\n                        # This is a bug in Directus that returns this error\n                        # when an error was thrown in the flow\n                        message = 'You already have a component with this name. Please choose a different name.'\n                    raise FilterError(message)\n                except UnboundLocalError:\n                    pass\n            raise ValueError(f'Upload failed: {exc}')\n\n    async def update(\n        self, api_key: str, component_id: UUID, component_data: StoreComponentCreate\n    ) -> CreateComponentResponse:\n        # Patch is the same as post, but we need to add the id to the url\n        headers = {'Authorization': f'Bearer {api_key}'}\n        component_dict = component_data.model_dump(exclude_unset=True)\n        # Parent is a UUID, but the store expects a string\n        response = None\n        if component_dict.get('parent'):\n            component_dict['parent'] = str(component_dict['parent'])\n\n        component_dict = process_tags_for_post(component_dict)\n        try:\n            # response = httpx.post(self.components_url, headers=headers, json=component_dict)\n            # response.raise_for_status()\n            async with httpx.AsyncClient() as client:\n                response = await client.patch(\n                    self.components_url + f'/{component_id}', headers=headers, json=component_dict\n                )\n                response.raise_for_status()\n            component = response.json()['data']\n            return CreateComponentResponse(**component)\n        except HTTPError as exc:\n            if response:\n                try:\n                    errors = response.json()\n                    message = errors['errors'][0]['message']\n                    if message == 'An unexpected error occurred.':\n                        # This is a bug in Directus that returns this error\n                        # when an error was thrown in the flow\n                        message = 'You already have a component with this name. Please choose a different name.'\n                    raise FilterError(message)\n                except UnboundLocalError:\n                    pass\n            raise ValueError(f'Upload failed: {exc}')\n\n    async def get_tags(self) -> List[Dict[str, Any]]:\n        url = f'{self.base_url}/items/tags'\n        params = {'fields': ','.join(['id', 'name'])}\n        tags, _ = await self._get(url, api_key=None, params=params)\n        return tags\n\n    async def get_user_likes(self, api_key: str) -> List[Dict[str, Any]]:\n        url = f'{self.base_url}/users/me'\n        params = {\n            'fields': ','.join(['id', 'likes']),\n        }\n        likes, _ = await self._get(url, api_key, params)\n        return likes\n\n    async def get_component_likes_count(self, component_id: str, api_key: Optional[str] = None) -> int:\n        url = f'{self.components_url}/{component_id}'\n\n        params = {\n            'fields': ','.join(['id', 'count(liked_by)']),\n        }\n        result, _ = await self._get(url, api_key=api_key, params=params)\n        if len(result) == 0:\n            raise ValueError('Component not found')\n        likes = result[0]['liked_by_count']\n        # likes_by_count is a string\n        # try to convert it to int\n        try:\n            likes = int(likes)\n        except ValueError:\n            raise ValueError(f'Unexpected value for likes count: {likes}')\n        return likes\n\n    async def like_component(self, api_key: str, component_id: str) -> bool:\n        # if it returns a list with one id, it means the like was successful\n        # if it returns an int, it means the like was removed\n        if not self.like_webhook_url:\n            raise ValueError('LIKE_WEBHOOK_URL is not set')\n        headers = {'Authorization': f'Bearer {api_key}'}\n        # response = httpx.post(\n        #     self.like_webhook_url,\n        #     json={\"component_id\": str(component_id)},\n        #     headers=headers,\n        # )\n\n        # response.raise_for_status()\n        async with httpx.AsyncClient() as client:\n            response = await client.post(\n                self.like_webhook_url,\n                json={'component_id': str(component_id)},\n                headers=headers,\n            )\n            response.raise_for_status()\n        if response.status_code == 200:\n            result = response.json()\n\n            if isinstance(result, list):\n                return True\n            elif isinstance(result, int):\n                return False\n            else:\n                raise ValueError(f'Unexpected result: {result}')\n        else:\n            raise ValueError(f'Unexpected status code: {response.status_code}')\n\n    async def get_list_component_response_model(\n        self,\n        component_id: Optional[str] = None,\n        search: Optional[str] = None,\n        private: Optional[bool] = None,\n        tags: Optional[List[str]] = None,\n        is_component: Optional[bool] = None,\n        fields: Optional[List[str]] = None,\n        filter_by_user: bool = False,\n        liked: bool = False,\n        store_api_key: Optional[str] = None,\n        sort: Optional[List[str]] = None,\n        page: int = 1,\n        limit: int = 15,\n    ):\n        async with user_data_context(api_key=store_api_key, store_service=self):\n            filter_conditions: List[Dict[str, Any]] = self.build_filter_conditions(\n                component_id=component_id,\n                search=search,\n                private=private,\n                tags=tags,\n                is_component=is_component,\n                filter_by_user=filter_by_user,\n                liked=liked,\n                store_api_Key=store_api_key,\n            )\n\n            result: List[ListComponentResponse] = []\n            authorized = False\n            metadata: Dict = {}\n            comp_count = 0\n            try:\n                result, metadata = await self.query_components(\n                    api_key=store_api_key,\n                    page=page,\n                    limit=limit,\n                    sort=sort,\n                    fields=fields,\n                    filter_conditions=filter_conditions,\n                    use_api_key=liked or filter_by_user,\n                )\n                if metadata:\n                    comp_count = metadata.get('filter_count', 0)\n            except HTTPStatusError as exc:\n                if exc.response.status_code == 403:\n                    raise ForbiddenError('You are not authorized to access this public resource') from exc\n                elif exc.response.status_code == 401:\n                    raise APIKeyError(\n                        'You are not authorized to access this resource. Please check your API key.'\n                    ) from exc\n            except Exception as exc:\n                raise ValueError(f'Unexpected error: {exc}') from exc\n            try:\n                if result and not metadata:\n                    if len(result) >= limit:\n                        comp_count = await self.count_components(\n                            api_key=store_api_key,\n                            filter_conditions=filter_conditions,\n                            use_api_key=liked or filter_by_user,\n                        )\n                    else:\n                        comp_count = len(result)\n                elif not metadata:\n                    comp_count = 0\n            except HTTPStatusError as exc:\n                if exc.response.status_code == 403:\n                    raise ForbiddenError('You are not authorized to access this public resource')\n                elif exc.response.status_code == 401:\n                    raise APIKeyError('You are not authorized to access this resource. Please check your API key.')\n\n            if store_api_key:\n                # Now, from the result, we need to get the components\n                # the user likes and set the liked_by_user to True\n                # if any of the components does not have an id, it means\n                # we should not update the components\n\n                if not result or any(component.id is None for component in result):\n                    authorized = await self.check_api_key(store_api_key)\n                else:\n                    try:\n                        updated_result = await update_components_with_user_data(\n                            result, self, store_api_key, liked=liked\n                        )\n                        authorized = True\n                        result = updated_result\n                    except Exception:\n                        # If we get an error here, it means the user is not authorized\n                        authorized = False\n        return ListComponentResponseModel(results=result, authorized=authorized, count=comp_count)\n"
  },
  {
    "path": "src/backend/bisheng/services/store/utils.py",
    "content": "from typing import TYPE_CHECKING, List\n\nimport httpx\n\nif TYPE_CHECKING:\n    from bisheng.services.store.schema import ListComponentResponse\n    from bisheng.services.store.service import StoreService\n\n\ndef process_tags_for_post(component_dict):\n    tags = component_dict.pop('tags', None)\n    if tags and all(isinstance(tag, str) for tag in tags):\n        component_dict['tags'] = [{'tags_id': tag} for tag in tags]\n    return component_dict\n\n\nasync def update_components_with_user_data(\n    components: List['ListComponentResponse'],\n    store_service: 'StoreService',\n    store_api_Key: str,\n    liked: bool,\n):\n    \"\"\"\n    Updates the components with the user data (liked_by_user and in_users_collection)\n    \"\"\"\n    component_ids = [str(component.id) for component in components]\n    if liked:\n        # If liked is True, this means all we got were liked_by_user components\n        # So we can set liked_by_user to True for all components\n        liked_by_user_ids = component_ids\n    else:\n        liked_by_user_ids = await store_service.get_liked_by_user_components(\n            component_ids=component_ids,\n            api_key=store_api_Key,\n        )\n    # Now we need to set the liked_by_user attribute\n    for component in components:\n        component.liked_by_user = str(component.id) in liked_by_user_ids\n\n    return components\n\n\n# Get the latest released version of bisheng (https://pypi.org/project/bisheng/)\ndef get_lf_version_from_pypi():\n    try:\n        response = httpx.get('https://pypi.org/pypi/bisheng/json')\n        if response.status_code != 200:\n            return None\n        return response.json()['info']['version']\n    except Exception:\n        return None\n\n\ndef process_component_data(nodes_list):\n    names = [node['id'].split('-')[0] for node in nodes_list]\n    metadata = {}\n    for name in names:\n        if name in metadata:\n            metadata[name]['count'] += 1\n        else:\n            metadata[name] = {'count': 1}\n    metadata['total'] = len(names)\n\n    return metadata\n"
  },
  {
    "path": "src/backend/bisheng/services/task/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/task/backends/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/services/task/backends/anyio.py",
    "content": "from typing import Any, Callable, Optional, Tuple\n\nimport anyio\nfrom bisheng.services.task.backends.base import TaskBackend\nfrom loguru import logger\n\n\nclass AnyIOTaskResult:\n    def __init__(self, scope):\n        self._scope = scope\n        self._status = 'PENDING'\n        self._result = None\n        self._exception = None\n\n    @property\n    def status(self) -> str:\n        if self._status == 'DONE':\n            return 'FAILURE' if self._exception is not None else 'SUCCESS'\n        return self._status\n\n    @property\n    def result(self) -> Any:\n        return self._result\n\n    def ready(self) -> bool:\n        return self._status == 'DONE'\n\n    async def run(self, func, *args, **kwargs):\n        try:\n            self._result = await func(*args, **kwargs)\n        except Exception as e:\n            self._exception = e\n        finally:\n            self._status = 'DONE'\n\n\nclass AnyIOBackend(TaskBackend):\n    name = 'anyio'\n\n    def __init__(self):\n        self.tasks = {}\n\n    async def launch_task(\n        self, task_func: Callable[..., Any], *args: Any, **kwargs: Any\n    ) -> Tuple[Optional[str], Optional[AnyIOTaskResult]]:\n        \"\"\"\n        Launch a new task in an asynchronous manner.\n\n        Parameters:\n            task_func: The asynchronous function to run.\n            *args: Positional arguments to pass to task_func.\n            **kwargs: Keyword arguments to pass to task_func.\n\n        Returns:\n            A tuple containing a unique task ID and the task result object.\n        \"\"\"\n        async with anyio.create_task_group() as tg:\n            try:\n                task_result = AnyIOTaskResult(tg)\n                tg.start_soon(task_result.run, task_func, *args, **kwargs)\n                task_id = str(id(task_result))\n                self.tasks[task_id] = task_result\n                logger.info(f'Task {task_id} started.')\n                return task_id, task_result\n            except Exception as e:\n                logger.error(f'An error occurred while launching the task: {e}')\n                return None, None\n\n    def get_task(self, task_id: str) -> Any:\n        return self.tasks.get(task_id)\n"
  },
  {
    "path": "src/backend/bisheng/services/task/backends/base.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import Any, Callable\n\n\nclass TaskBackend(ABC):\n    @abstractmethod\n    def launch_task(self, task_func: Callable[..., Any], *args: Any, **kwargs: Any):\n        pass\n\n    @abstractmethod\n    def get_task(self, task_id: str) -> Any:\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/services/task/backends/celery.py",
    "content": "from typing import Any, Callable\n\nfrom bisheng.services.task.backends.base import TaskBackend\nfrom bisheng.worker import celery_app\nfrom celery.result import AsyncResult  # type: ignore\n\n\nclass CeleryBackend(TaskBackend):\n    name = 'celery'\n\n    def __init__(self):\n        self.celery_app = celery_app\n\n    def launch_task(self, task_func: Callable[..., Any], *args: Any, **kwargs: Any) -> tuple[str, AsyncResult]:\n        # I need to type the delay method to make it easier\n        from celery import Task  # type: ignore\n\n        if not hasattr(task_func, 'delay'):\n            raise ValueError(f'Task function {task_func} does not have a delay method')\n        task: Task = task_func.delay(*args, **kwargs)\n        return task.id, AsyncResult(task.id, app=self.celery_app)\n\n    def get_task(self, task_id: str) -> Any:\n        return AsyncResult(task_id, app=self.celery_app)\n"
  },
  {
    "path": "src/backend/bisheng/services/task/factory.py",
    "content": "from bisheng.services.factory import ServiceFactory\nfrom bisheng.services.task.service import TaskService\n\n\nclass TaskServiceFactory(ServiceFactory):\n\n    def __init__(self):\n        super().__init__(TaskService)\n\n    def create(self):\n        # Here you would have logic to create and configure a TaskService\n        return TaskService()\n"
  },
  {
    "path": "src/backend/bisheng/services/task/service.py",
    "content": "from typing import Any, Callable, Coroutine, Union\n\nfrom loguru import logger\n\nfrom bisheng.services.base import Service\nfrom bisheng.services.task.backends.anyio import AnyIOBackend\nfrom bisheng.services.task.backends.base import TaskBackend\n\n\ndef check_celery_availability():\n    try:\n        raise Exception(\"celery disabled\")\n    except Exception as exc:\n        logger.debug(f'Celery not available: {exc}')\n        status = {'availability': None}\n    return status\n\n\ntry:\n    status = check_celery_availability()\n\n    USE_CELERY = status.get('availability') is not None\nexcept ImportError:\n    USE_CELERY = False\n\n\nclass TaskService(Service):\n    name = 'task_service'\n\n    def __init__(self):\n        self.backend = self.get_backend()\n        self.use_celery = USE_CELERY\n\n    @property\n    def backend_name(self) -> str:\n        return self.backend.name\n\n    def get_backend(self) -> TaskBackend:\n        if USE_CELERY:\n            from bisheng.services.task.backends.celery import CeleryBackend\n\n            logger.debug('Using Celery backend')\n            return CeleryBackend()\n        logger.debug('Using AnyIO backend')\n        return AnyIOBackend()\n\n    # In your TaskService class\n    async def launch_and_await_task(\n            self,\n            task_func: Callable[..., Any],\n            *args: Any,\n            **kwargs: Any,\n    ) -> Any:\n        if not self.use_celery:\n            return None, await task_func(*args, **kwargs)\n        if not hasattr(task_func, 'apply'):\n            raise ValueError(f'Task function {task_func} does not have an apply method')\n        task = task_func.apply(args=args, kwargs=kwargs)\n\n        result = task.get()\n        # if result is coroutine\n        if isinstance(result, Coroutine):\n            result = await result\n        return task.id, result\n\n    async def launch_task(self, task_func: Callable[..., Any], *args: Any, **kwargs: Any) -> Any:\n        logger.debug(f'Launching task {task_func} with args {args} and kwargs {kwargs}')\n        logger.debug(f'Using backend {self.backend}')\n        task = self.backend.launch_task(task_func, *args, **kwargs)\n        return await task if isinstance(task, Coroutine) else task\n\n    def get_task(self, task_id: Union[int, str]) -> Any:\n        return self.backend.get_task(task_id)\n"
  },
  {
    "path": "src/backend/bisheng/services/task/utils.py",
    "content": "import contextlib\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    with contextlib.suppress(ImportError):\n        from celery import Celery  # type: ignore\n\n\ndef get_celery_worker_status(app: 'Celery'):\n    i = app.control.inspect()\n    availability = app.control.ping()\n    stats = i.stats()\n    registered_tasks = i.registered()\n    active_tasks = i.active()\n    scheduled_tasks = i.scheduled()\n    return {\n        'availability': availability,\n        'stats': stats,\n        'registered_tasks': registered_tasks,\n        'active_tasks': active_tasks,\n        'scheduled_tasks': scheduled_tasks,\n    }\n"
  },
  {
    "path": "src/backend/bisheng/services/utils.py",
    "content": "# from bisheng.services.auth.utils import create_super_user, verify_password\n# from bisheng.services.database.utils import initialize_database\nfrom bisheng.services.manager import service_manager\n# from bisheng.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD\nfrom loguru import logger\n\n\ndef get_factories_and_deps():\n    # from bisheng.services.auth import factory as auth_factory\n    # from bisheng.services.cache import factory as cache_factory\n    # from bisheng.services.chat import factory as chat_factory\n    # from bisheng.services.credentials import factory as credentials_factory\n    # from bisheng.services.database import factory as database_factory\n    # from bisheng.services.plugins import factory as plugins_factory\n    from bisheng.services.session import factory as session_service_factory  # type: ignore\n    # from bisheng.services.settings import factory as settings_factory\n    # from bisheng.services.store import factory as store_factory\n    from bisheng.services.task import factory as task_factory\n\n    return [\n        # (settings_factory.SettingsServiceFactory(), []),\n        # (\n        #     auth_factory.AuthServiceFactory(),\n        #     [ServiceType.SETTINGS_SERVICE],\n        # ),\n        # (\n        #     database_factory.DatabaseServiceFactory(),\n        #     [ServiceType.SETTINGS_SERVICE],\n        # ),\n        # (\n        #     cache_factory.CacheServiceFactory(),\n        #     [ServiceType.SETTINGS_SERVICE],\n        # ),\n        # (chat_factory.ChatServiceFactory(), []),\n        (task_factory.TaskServiceFactory(), []),\n        (\n            session_service_factory.SessionServiceFactory(), []\n            # [ServiceType.CACHE_SERVICE],\n        ),\n        # (plugins_factory.PluginServiceFactory(), [ServiceType.SETTINGS_SERVICE]),\n        # (store_factory.StoreServiceFactory(), [ServiceType.SETTINGS_SERVICE]),\n        # (credentials_factory.CredentialServiceFactory(), [ServiceType.SETTINGS_SERVICE]),\n    ]\n\n\n# def get_or_create_super_user(session: Session, username, password, is_default):\n#     from bisheng.services.database.models.user.model import User\n\n#     user = session.exec(select(User).where(User.username == username)).first()\n\n#     if user and user.is_superuser:\n#         return None  # Superuser already exists\n\n#     if user and is_default:\n#         if user.is_superuser:\n#             if verify_password(password, user.password):\n#                 return None\n#             else:\n#                 # Superuser exists but password is incorrect\n#                 # which means that the user has changed the\n#                 # base superuser credentials.\n#                 # This means that the user has already created\n#                 # a superuser and changed the password in the UI\n#                 # so we don't need to do anything.\n#                 logger.debug(\n#                     \"Superuser exists but password is incorrect. \"\n#                     \"This means that the user has changed the \"\n#                     \"base superuser credentials.\"\n#                 )\n#                 return None\n#         else:\n#             logger.debug(\"User with superuser credentials exists but is not a superuser.\")\n#             return None\n\n#     if user:\n#         if verify_password(password, user.password):\n#             raise ValueError(\"User with superuser credentials exists but is not a superuser.\")\n#         else:\n#             raise ValueError(\"Incorrect superuser credentials\")\n\n#     if is_default:\n#         logger.debug(\"Creating default superuser.\")\n#     else:\n#         logger.debug(\"Creating superuser.\")\n#     try:\n#         return create_super_user(username, password, db=session)\n#     except Exception as exc:\n#         if \"UNIQUE constraint failed: user.username\" in str(exc):\n#             # This is to deal with workers running this\n#             # at startup and trying to create the superuser\n#             # at the same time.\n#             logger.debug(\"Superuser already exists.\")\n#             return None\n\n# def setup_superuser(settings_service, session: Session):\n#     if settings_service.auth_settings.AUTO_LOGIN:\n#         logger.debug(\"AUTO_LOGIN is set to True. Creating default superuser.\")\n#     else:\n#         # Remove the default superuser if it exists\n#         teardown_superuser(settings_service, session)\n\n#     username = settings_service.auth_settings.SUPERUSER\n#     password = settings_service.auth_settings.SUPERUSER_PASSWORD\n\n#     is_default = (username == DEFAULT_SUPERUSER) and (password == DEFAULT_SUPERUSER_PASSWORD)\n\n#     try:\n#         user = get_or_create_super_user(session=session, username=username, password=password, is_default=is_default)\n#         if user is not None:\n#             logger.debug(\"Superuser created successfully.\")\n#     except Exception as exc:\n#         logger.exception(exc)\n#         raise RuntimeError(\"Could not create superuser. Please create a superuser manually.\") from exc\n#     finally:\n#         settings_service.auth_settings.reset_credentials()\n\n# def teardown_superuser(settings_service, session):\n#     \"\"\"\n#     Teardown the superuser.\n#     \"\"\"\n#     # If AUTO_LOGIN is True, we will remove the default superuser\n#     # from the database.\n\n#     if not settings_service.auth_settings.AUTO_LOGIN:\n#         try:\n#             logger.debug(\"AUTO_LOGIN is set to False. Removing default superuser if exists.\")\n#             username = DEFAULT_SUPERUSER\n#             from bisheng.services.database.models.user.model import User\n\n#             user = session.exec(select(User).where(User.username == username)).first()\n#             if user and user.is_superuser is True:\n#                 session.delete(user)\n#                 session.commit()\n#                 logger.debug(\"Default superuser removed successfully.\")\n#             else:\n#                 logger.debug(\"Default superuser not found.\")\n#         except Exception as exc:\n#             logger.exception(exc)\n#             raise RuntimeError(\"Could not remove default superuser.\") from exc\n\n\ndef teardown_services():\n    \"\"\"\n    Teardown all the services.\n    \"\"\"\n    # try:\n    #     teardown_superuser(get_settings_service(), next(get_session()))\n    # except Exception as exc:\n    #     logger.exception(exc)\n    try:\n        service_manager.teardown()\n    except Exception as exc:\n        logger.exception(exc)\n\n\n# def initialize_settings_service():\n#     \"\"\"\n#     Initialize the settings manager.\n#     \"\"\"\n#     from bisheng.services.settings import factory as settings_factory\n\n#     service_manager.register_factory(settings_factory.SettingsServiceFactory())\n\n\ndef initialize_session_service():\n    \"\"\"\n    Initialize the session manager.\n    \"\"\"\n    # from bisheng.services.cache import factory as cache_factory\n    from bisheng.services.session import factory as session_service_factory  # type: ignore\n\n    # initialize_settings_service()\n\n    # service_manager.register_factory(cache_factory.CacheServiceFactory(),\n    #                                  dependencies=[ServiceType.SETTINGS_SERVICE])\n\n    service_manager.register_factory(session_service_factory.SessionServiceFactory(), []\n                                     # dependencies=[ServiceType.CACHE_SERVICE],\n                                     )\n\n\ndef initialize_services(fix_migration: bool = False):\n    \"\"\"\n    Initialize all the services needed.\n    \"\"\"\n    for factory, dependencies in get_factories_and_deps():\n        try:\n            service_manager.register_factory(factory, dependencies=dependencies)\n        except Exception as exc:\n            logger.exception(exc)\n            raise RuntimeError(\n                'Could not initialize services. Please check your settings.') from exc\n\n    # Test cache connection\n    # service_manager.get(ServiceType.CACHE_SERVICE)\n    # Setup the superuser\n    # try:\n    #     initialize_database(fix_migration=fix_migration)\n    # except Exception as exc:\n    #     logger.exception(exc)\n    #     raise exc\n    # setup_superuser(service_manager.get(ServiceType.SETTINGS_SERVICE), next(get_session()))\n    # try:\n    #     get_db_service().migrate_flows_if_auto_login()\n    # except Exception as exc:\n    #     logger.error(f\"Error migrating flows: {exc}\")\n    #     raise RuntimeError(\"Error migrating flows\") from exc\n"
  },
  {
    "path": "src/backend/bisheng/share_link/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/api/dependencies.py",
    "content": "from typing import Annotated, Union\n\nfrom fastapi import Depends, Header\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.dependencies.core_deps import get_db_session\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.share_link.domain.repositories.implementations.share_link_repository_impl import ShareLinkRepositoryImpl\nfrom bisheng.share_link.domain.repositories.interfaces.share_link_repository import ShareLinkRepository\nfrom bisheng.share_link.domain.services.share_link_service import ShareLinkService\n\n\nasync def get_share_link_repository(\n        session: AsyncSession = Depends(get_db_session),\n) -> ShareLinkRepository:\n    \"\"\"DapatkanShareLinkRepositoryInstance Dependencies\"\"\"\n    return ShareLinkRepositoryImpl(session)\n\n\nasync def get_share_link_service(\n        share_link_repository: ShareLinkRepository = Depends(get_share_link_repository),\n) -> 'ShareLinkService':\n    \"\"\"DapatkanShareLinkServiceInstance Dependencies\"\"\"\n    return ShareLinkService(share_link_repository=share_link_repository)\n\n\n# Resolve share links in request headerstokenand return the corresponding sharing link information\nasync def header_share_token_parser(\n        share_token: Annotated[str | None, Header(alias=\"share-token\")] = None,\n        share_link_service: ShareLinkService = Depends(get_share_link_service),\n) -> Union['ShareLink', None]:\n    \"\"\"According to the request headershare-tokenGet shared link info\"\"\"\n    if not share_token:\n        return None\n\n    share_link = await share_link_service.get_share_link_by_token(share_token)\n    return share_link\n"
  },
  {
    "path": "src/backend/bisheng/share_link/api/endpoints/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/api/endpoints/share_link.py",
    "content": "from fastapi import APIRouter, Depends\nfrom fastapi.params import Body\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import resp_200, UnifiedResponseModel\nfrom bisheng.share_link.api.dependencies import get_share_link_service\nfrom bisheng.share_link.api.schemas.share_link_schema import GenerateShareLinkRequest\n\nrouter = APIRouter()\n\n\n@router.post('/generate_share_link', summary='generate share link',\n             response_model=UnifiedResponseModel)\nasync def generate_share_link(\n        req_param: GenerateShareLinkRequest = Body(..., description=\"generate share link request\"),\n        login_user: UserPayload = Depends(UserPayload.get_login_user),\n        share_link_service=Depends(get_share_link_service)\n):\n    \"\"\"\n    Generate share link\n    :param login_user:\n    :param share_link_service:\n    :param req_param:\n    :return:\n    \"\"\"\n\n    share_link = await share_link_service.generate_share_link(req_param, login_user)\n\n    return resp_200(data=share_link)\n\n\n@router.get('/{share_token}', summary='get share link info',\n            response_model=UnifiedResponseModel)\nasync def get_share_link_info(\n        share_token: str,\n        share_link_service=Depends(get_share_link_service)\n):\n    \"\"\"\n    Get share link info by share token\n    :param share_token:\n    :param share_link_service:\n    :return:\n    \"\"\"\n\n    share_link = await share_link_service.get_share_link_by_token(share_token)\n\n    return resp_200(data=share_link)\n"
  },
  {
    "path": "src/backend/bisheng/share_link/api/router.py",
    "content": "from fastapi import APIRouter\nfrom .endpoints.share_link import router as share_link_router\n\nrouter = APIRouter(prefix='/share-link', tags=['ShareLink'])\n\nrouter.include_router(share_link_router)\n"
  },
  {
    "path": "src/backend/bisheng/share_link/api/schemas/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/api/schemas/share_link_schema.py",
    "content": "from typing import Optional, Dict\n\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.share_link.domain.models.share_link import ResourceTypeEnum, ShareMode\n\n\nclass GenerateShareLinkRequest(BaseModel):\n    \"\"\"Generate shared link request model\"\"\"\n    resource_type: ResourceTypeEnum = Field(..., description=\"Resource Type\")\n    resource_id: str = Field(..., description=\"reasourseID\")\n    share_mode: ShareMode = Field(default=ShareMode.READ_ONLY, description=\"sharing mode\")\n    expire_time: int = Field(default=0, description=\"Expiration time, in seconds,0Indicates never expires\")\n    meta_data: Optional[Dict] = Field(None, description=\"Metadata to store additional information\")\n"
  },
  {
    "path": "src/backend/bisheng/share_link/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/models/share_link.py",
    "content": "import uuid\nfrom datetime import datetime\nfrom enum import Enum\nfrom typing import Optional, Dict\n\nfrom sqlalchemy import Enum as SQLEnum, DateTime, text, JSON\nfrom sqlalchemy import CHAR, Column\nfrom sqlmodel import Field\n\nfrom bisheng.common.models.base import SQLModelSerializable\n\n\nclass ResourceTypeEnum(str, Enum):\n    \"\"\"Resource Type Enumeration\"\"\"\n\n    # Inspirational Sessions\n    LINSIGHT_SESSION = \"linsight_session\"\n    # Workbench Conversation\n    WORKBENCH_CHAT = \"workbench_chat\"\n    # The Workflow\n    WORKFLOW = \"workflow\"\n    # Skill\n    SKILL = \"skill\"\n    # assistant\n    ASSISTANT = \"assistant\"\n\n\nclass ShareMode(str, Enum):\n    \"\"\"Shared Mode Enumeration\"\"\"\n    # Read-Only\n    READ_ONLY = \"read_only\"\n    # Can Edit\n    EDITABLE = \"editable\"\n\n\nclass ShareLinkStatusEnum(str, Enum):\n    \"\"\"Shared link status enumeration\"\"\"\n    # Effective\n    ACTIVE = \"active\"\n    # Tidak berlaku\n    INACTIVE = \"inactive\"\n    # Kedaluwarsa\n    EXPIRED = \"expired\"\n\n\nclass ShareLink(SQLModelSerializable, table=True):\n    \"\"\"\n    Shared Link Model\n    \"\"\"\n\n    __tablename__ = 'share_link'\n\n    id: str = Field(default_factory=lambda: uuid.uuid4().hex, description='Share linkID',\n                    sa_column=Column(CHAR(36), unique=True, nullable=False, primary_key=True))\n    share_token: str = Field(sa_column=Column(CHAR(36), index=True, unique=True), description='Share linkToken')\n\n    resource_id: str = Field(sa_column=Column(CHAR(36), index=True), description='reasourseID')\n\n    resource_type: ResourceTypeEnum = Field(..., sa_column=Column(SQLEnum(ResourceTypeEnum)), description='Resource Type')\n\n    share_mode: ShareMode = Field(..., sa_column=Column(SQLEnum(ShareMode)), description='sharing mode')\n    status: ShareLinkStatusEnum = Field(default=ShareLinkStatusEnum.ACTIVE,\n                                        sa_column=Column(SQLEnum(ShareLinkStatusEnum)), description='Share link status')\n    access_count: int = Field(default=0, description='Number of visits')\n    meta_data: Optional[Dict] = Field(default=None, description='Shared link metadata', sa_type=JSON, nullable=True)\n    expire_time: int = Field(default=0, description='Expiration time, in seconds,0Indicates never expires')\n\n    create_user_id: str = Field(..., sa_column=Column(CHAR(36)), description='Create UserID')\n\n    create_time: datetime = Field(default_factory=datetime.now, description='Creation Time',\n                                  sa_column=Column(DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=True, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n"
  },
  {
    "path": "src/backend/bisheng/share_link/domain/repositories/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/repositories/implementations/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/repositories/implementations/share_link_repository_impl.py",
    "content": "from sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.repositories.implementations.base_repository_impl import BaseRepositoryImpl\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.share_link.domain.repositories.interfaces.share_link_repository import ShareLinkRepository\n\n\nclass ShareLinkRepositoryImpl(BaseRepositoryImpl[ShareLink, str], ShareLinkRepository):\n    \"\"\"Shared link repository implementation\"\"\"\n\n    def __init__(self, session: AsyncSession):\n        super().__init__(session, ShareLink)\n"
  },
  {
    "path": "src/backend/bisheng/share_link/domain/repositories/interfaces/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/repositories/interfaces/share_link_repository.py",
    "content": "from abc import ABC\n\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\nfrom bisheng.share_link.domain.models.share_link import ShareLink\n\n\nclass ShareLinkRepository(BaseRepository[ShareLink, str], ABC):\n    \"\"\"Shared Link Warehouse Interface\"\"\"\n    pass\n"
  },
  {
    "path": "src/backend/bisheng/share_link/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/share_link/domain/services/share_link_service.py",
    "content": "from bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode.http_error import NotFoundError\nfrom bisheng.common.utils import util as common_util\nfrom bisheng.share_link.api.schemas.share_link_schema import GenerateShareLinkRequest\nfrom bisheng.share_link.domain.models.share_link import ShareLink\nfrom bisheng.share_link.domain.repositories.interfaces.share_link_repository import ShareLinkRepository\n\n\nclass ShareLinkService:\n    def __init__(self,\n                 share_link_repository: 'ShareLinkRepository'):\n        self.share_link_repository = share_link_repository\n\n    async def generate_share_link(self, generate_share_link: GenerateShareLinkRequest,\n                                  login_user: UserPayload) -> ShareLink:\n        \"\"\"Generate sharable link\"\"\"\n\n        share_token = common_util.generate_short_high_entropy_string()\n\n        share_link = ShareLink(\n            share_token=share_token,\n            resource_id=generate_share_link.resource_id,\n            resource_type=generate_share_link.resource_type,\n            share_mode=generate_share_link.share_mode,\n            expire_time=generate_share_link.expire_time,\n            meta_data=generate_share_link.meta_data,\n            create_user_id=login_user.user_id\n        )\n\n        return await self.share_link_repository.save(share_link)\n\n    async def get_share_link_by_token(self, share_token: str) -> ShareLink:\n        \"\"\"\n        accordingshare_tokenGet shared link info\n        :param share_token:\n        :return:\n        \"\"\"\n        share_link = await self.share_link_repository.find_one(share_token=share_token)\n\n        if not share_link:\n            raise NotFoundError()\n\n        return share_link\n"
  },
  {
    "path": "src/backend/bisheng/sql.json",
    "content": "[\n    {\n        \"知识库问答_严谨版\": {\n            \"id\": \"RetrievalQA-bb180\",\n            \"type\": \"RetrievalQA\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"知识库问答_严谨版\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"RetrievalQA\",\n                    \"BaseRetrievalQA\",\n                    \"Chain\",\n                    \"function\"\n                ],\n                \"description\": \"Chain for question-answering against an index.\",\n                \"template\": {\n                    \"tags_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"memory_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory\",\n                        \"show\": true,\n                        \"type\": \"BaseMemory\",\n                        \"l2_name\": \"memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"memory\"\n                        }\n                    },\n                    \"verbose_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_key_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"query\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"input_node_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"output_key_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"result\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"return_source_documents_RetrievalQA-ypS4m\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_source_documents\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-ypS4m\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"token_max_CombineDocsChain-bMaXk\": {\n                        \"l2\": false,\n                        \"info\": \"只对Stuff类型生效\",\n                        \"list\": false,\n                        \"name\": \"token_max\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": 7000,\n                        \"l2_name\": \"token_max\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"token_max\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-bMaXk\",\n                            \"field\": \"token_max\"\n                        }\n                    },\n                    \"chain_type_CombineDocsChain-bMaXk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"l2_name\": \"chain_type\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-bMaXk\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"document_prompt_CombineDocsChain-bMaXk\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"document_prompt\",\n                        \"type\": \"BasePromptTemplate\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"document_prompt\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-bMaXk\",\n                            \"field\": \"document_prompt\"\n                        }\n                    },\n                    \"context_PromptTemplate-gM5zg\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"context\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"context\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"context\"\n                        }\n                    },\n                    \"question_PromptTemplate-gM5zg\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"question\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"question\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"question\"\n                        }\n                    },\n                    \"template_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：客服\\n\\n# Background :\\n- 你是一名客服人员。你的日常工作是根据【参考文本】的内容回复用户的各类咨询问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                        \"l2_name\": \"template\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": true,\n                        \"type\": \"BaseOutputParser\",\n                        \"l2_name\": \"output_parser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"context\",\n                            \"question\"\n                        ],\n                        \"l2_name\": \"input_variables\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"f-string\",\n                        \"l2_name\": \"template_format\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"partial_variables\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-gM5zg\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"validate_template\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-gM5zg\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"ids_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"ids\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"ids\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ids\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"ids\"\n                        }\n                    },\n                    \"documents_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"documents\",\n                        \"show\": true,\n                        \"type\": \"Document\",\n                        \"l2_name\": \"documents\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Documents\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"documents\"\n                        }\n                    },\n                    \"embedding_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"embedding\",\n                        \"show\": true,\n                        \"type\": \"Embeddings\",\n                        \"l2_name\": \"embedding\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Embedding\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"embedding\"\n                        }\n                    },\n                    \"metadatas_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_name_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"知识库\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_name\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"index_name\"\n                        }\n                    },\n                    \"ssl_verify_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"ssl_verify\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"ssl_verify\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ssl_verify\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"ssl_verify\"\n                        }\n                    },\n                    \"search_kwargs_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{\\\"k\\\":6,\\\"query_strategy\\\":\\\"match_phrase\\\",\\\"must_or_should\\\":\\\"must\\\"}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"refresh_indices_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"refresh_indices\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"refresh_indices\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"refresh_indices\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"refresh_indices\"\n                        }\n                    },\n                    \"elasticsearch_url_ElasticKeywordsSearch-dVhq9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"elasticsearch_url\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"elasticsearch_url\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ES_connection_url\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                            \"field\": \"elasticsearch_url\"\n                        }\n                    },\n                    \"question_PromptTemplate-4iBFj\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"question\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"question\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"question\"\n                        }\n                    },\n                    \"template_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"分析给定Question，提取Question中包含的KeyWords，输出列表形式\\n\\nExamples:\\nQuestion: 数据项素2022年营收是多少？\\nKeyWords: ['数据项素', '2022', '营收, '营业收入']\\nQuestion: 深圳出差住宿标准是什么？\\nKeyWords: ['深圳', '出差', '住宿标准', '报销标准']\\n\\n\\n----------------\\nQuestion: {question}\\nKeyWords: \",\n                        \"l2_name\": \"template\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": true,\n                        \"type\": \"BaseOutputParser\",\n                        \"l2_name\": \"output_parser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"question\"\n                        ],\n                        \"l2_name\": \"input_variables\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"f-string\",\n                        \"l2_name\": \"template_format\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"partial_variables\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-4iBFj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"validate_template\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-4iBFj\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-d9de6\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-d9de6\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"RetrievalQA-ypS4m\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1928.7731793921107,\n                                    \"y\": -1748.5798539597242\n                                },\n                                \"data\": {\n                                    \"id\": \"RetrievalQA-ypS4m\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"RetrievalQA\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"query\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"result\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"combine_documents_chain\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_documents_chain\",\n                                                \"show\": true,\n                                                \"type\": \"BaseCombineDocumentsChain\",\n                                                \"l2_name\": \"combine_documents_chain\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_source_documents\"\n                                            }\n                                        },\n                                        \"description\": \"Chain for question-answering against an index.\",\n                                        \"base_classes\": [\n                                            \"RetrievalQA\",\n                                            \"BaseRetrievalQA\",\n                                            \"Chain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"RetrievalQA\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n                                    },\n                                    \"type\": \"RetrievalQA\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1928.7731793921107,\n                                    \"y\": -1748.5798539597242\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 412,\n                                \"id\": \"CombineDocsChain-bMaXk\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1321.387622087405,\n                                    \"y\": -2246.516142425817\n                                },\n                                \"data\": {\n                                    \"id\": \"CombineDocsChain-bMaXk\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"load_qa_chain\",\n                                            \"prompt\": {\n                                                \"l2\": false,\n                                                \"info\": \"只对Stuff类型生效\",\n                                                \"list\": false,\n                                                \"name\": \"prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"l2_name\": \"prompt\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"prompt\"\n                                            },\n                                            \"token_max\": {\n                                                \"l2\": false,\n                                                \"info\": \"只对Stuff类型生效\",\n                                                \"list\": false,\n                                                \"name\": \"token_max\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": 7000,\n                                                \"l2_name\": \"token_max\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"token_max\"\n                                            },\n                                            \"chain_type\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"l2_name\": \"chain_type\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            },\n                                            \"document_prompt\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"document_prompt\",\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"document_prompt\"\n                                            }\n                                        },\n                                        \"description\": \"Load question answering chain.\",\n                                        \"base_classes\": [\n                                            \"BaseCombineDocumentsChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"CombineDocsChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"CombineDocsChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1321.387622087405,\n                                    \"y\": -2246.516142425817\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 454,\n                                \"id\": \"PromptTemplate-gM5zg\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 819.5843069233761,\n                                    \"y\": -2660.280062933134\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-gM5zg\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"context\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"context\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"context\"\n                                            },\n                                            \"question\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"question\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"question\"\n                                            },\n                                            \"template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：客服\\n\\n# Background :\\n- 你是一名客服人员。你的日常工作是根据【参考文本】的内容回复用户的各类咨询问题。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                                                \"l2_name\": \"template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"output_parser\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": true,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"l2_name\": \"output_parser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"context\",\n                                                    \"question\"\n                                                ],\n                                                \"l2_name\": \"input_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"f-string\",\n                                                \"l2_name\": \"template_format\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"partial_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"validate_template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"Schema to represent a prompt for an LLM.\",\n                                        \"base_classes\": [\n                                            \"StringPromptTemplate\",\n                                            \"BasePromptTemplate\",\n                                            \"PromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"\": [\n                                                \"context\",\n                                                \"question\"\n                                            ],\n                                            \"template\": [\n                                                \"context\",\n                                                \"question\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {\n                                            \"formatters\": {\n                                                \"openai_api_key\": {}\n                                            },\n                                            \"base_formatters\": {\n                                                \"dict\": {},\n                                                \"list\": {},\n                                                \"show\": {},\n                                                \"union\": {},\n                                                \"kwargs\": {},\n                                                \"default\": {},\n                                                \"headers\": {},\n                                                \"optional\": {},\n                                                \"password\": {},\n                                                \"multiline\": {},\n                                                \"model_fields\": {\n                                                    \"MODEL_DICT\": {\n                                                        \"OpenAI\": [\n                                                            \"text-davinci-003\",\n                                                            \"text-davinci-002\",\n                                                            \"text-curie-001\",\n                                                            \"text-babbage-001\",\n                                                            \"text-ada-001\"\n                                                        ],\n                                                        \"Anthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ],\n                                                        \"ChatOpenAI\": [\n                                                            \"gpt-3.5-turbo-0613\",\n                                                            \"gpt-3.5-turbo\",\n                                                            \"gpt-3.5-turbo-16k-0613\",\n                                                            \"gpt-3.5-turbo-16k\",\n                                                            \"gpt-4-0613\",\n                                                            \"gpt-4-32k-0613\",\n                                                            \"gpt-4\",\n                                                            \"gpt-4-32k\"\n                                                        ],\n                                                        \"ChatAnthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"dict_code_file\": {}\n                                            }\n                                        }\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 819.5843069233761,\n                                    \"y\": -2660.280062933134\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 664,\n                                \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 831.1394852089952,\n                                    \"y\": -2032.1407340312012\n                                },\n                                \"data\": {\n                                    \"id\": \"ElasticKeywordsSearch-dVhq9\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"ids\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"ids\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"ids\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ids\"\n                                            },\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLLM\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"ElasticKeywordsSearch\",\n                                            \"prompt\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"l2_name\": \"prompt\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"prompt\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_name\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"知识库\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_name\"\n                                            },\n                                            \"ssl_verify\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"ssl_verify\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"ssl_verify\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ssl_verify\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{\\\"k\\\":6,\\\"query_strategy\\\":\\\"match_phrase\\\",\\\"must_or_should\\\":\\\"must\\\"}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"refresh_indices\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"refresh_indices\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"refresh_indices\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"refresh_indices\"\n                                            },\n                                            \"elasticsearch_url\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"elasticsearch_url\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"elasticsearch_url\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ES_connection_url\"\n                                            }\n                                        },\n                                        \"description\": \"Construct ElasticKeywordsSearch wrapper from raw documents.\",\n                                        \"base_classes\": [\n                                            \"ElasticKeywordsSearch\",\n                                            \"VectorStore\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"ElasticKeywordsSearch\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"ElasticKeywordsSearch\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 831.1394852089952,\n                                    \"y\": -2032.1407340312012\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 372,\n                                \"id\": \"PromptTemplate-4iBFj\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 149.22093916394033,\n                                    \"y\": -1992.534049733149\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-4iBFj\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"question\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"question\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"question\"\n                                            },\n                                            \"template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"分析给定Question，提取Question中包含的KeyWords，输出列表形式\\n\\nExamples:\\nQuestion: 数据项素2022年营收是多少？\\nKeyWords: ['数据项素', '2022', '营收, '营业收入']\\nQuestion: 深圳出差住宿标准是什么？\\nKeyWords: ['深圳', '出差', '住宿标准', '报销标准']\\n\\n\\n----------------\\nQuestion: {question}\\nKeyWords: \",\n                                                \"l2_name\": \"template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"output_parser\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": true,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"l2_name\": \"output_parser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"question\"\n                                                ],\n                                                \"l2_name\": \"input_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"f-string\",\n                                                \"l2_name\": \"template_format\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"partial_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"validate_template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"Schema to represent a prompt for an LLM.\",\n                                        \"base_classes\": [\n                                            \"StringPromptTemplate\",\n                                            \"BasePromptTemplate\",\n                                            \"PromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"\": [\n                                                \"question\"\n                                            ],\n                                            \"template\": [\n                                                \"question\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {\n                                            \"formatters\": {\n                                                \"openai_api_key\": {}\n                                            },\n                                            \"base_formatters\": {\n                                                \"dict\": {},\n                                                \"list\": {},\n                                                \"show\": {},\n                                                \"union\": {},\n                                                \"kwargs\": {},\n                                                \"default\": {},\n                                                \"headers\": {},\n                                                \"optional\": {},\n                                                \"password\": {},\n                                                \"multiline\": {},\n                                                \"model_fields\": {\n                                                    \"MODEL_DICT\": {\n                                                        \"OpenAI\": [\n                                                            \"text-davinci-003\",\n                                                            \"text-davinci-002\",\n                                                            \"text-curie-001\",\n                                                            \"text-babbage-001\",\n                                                            \"text-ada-001\"\n                                                        ],\n                                                        \"Anthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ],\n                                                        \"ChatOpenAI\": [\n                                                            \"gpt-3.5-turbo-0613\",\n                                                            \"gpt-3.5-turbo\",\n                                                            \"gpt-3.5-turbo-16k-0613\",\n                                                            \"gpt-3.5-turbo-16k\",\n                                                            \"gpt-4-0613\",\n                                                            \"gpt-4-32k-0613\",\n                                                            \"gpt-4\",\n                                                            \"gpt-4-32k\"\n                                                        ],\n                                                        \"ChatAnthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"dict_code_file\": {}\n                                            }\n                                        }\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 149.22093916394033,\n                                    \"y\": -1992.534049733149\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-d9de6\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 181.27135225054826,\n                                    \"y\": -2719.2953758423564\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false,\n                                        \"official\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-d9de6\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 181.27135225054826,\n                                    \"y\": -2719.2953758423564\n                                },\n                                \"dragging\": false\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"CombineDocsChain-bMaXk\",\n                                \"target\": \"RetrievalQA-ypS4m\",\n                                \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function\",\n                                \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\",\n                                \"id\": \"reactflow__edge-CombineDocsChain-bMaXkCombineDocsChain|CombineDocsChain-bMaXk|BaseCombineDocumentsChain|function-RetrievalQA-ypS4mBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-ypS4m\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"PromptTemplate-gM5zg\",\n                                \"target\": \"CombineDocsChain-bMaXk\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-gM5zg|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-bMaXk\",\n                                \"id\": \"reactflow__edge-PromptTemplate-gM5zgPromptTemplate|PromptTemplate-gM5zg|StringPromptTemplate|BasePromptTemplate|PromptTemplate-CombineDocsChain-bMaXkBasePromptTemplate|prompt|CombineDocsChain-bMaXk\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ElasticKeywordsSearch-dVhq9\",\n                                \"target\": \"RetrievalQA-ypS4m\",\n                                \"sourceHandle\": \"ElasticKeywordsSearch|ElasticKeywordsSearch-dVhq9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-ypS4m\",\n                                \"id\": \"reactflow__edge-ElasticKeywordsSearch-dVhq9ElasticKeywordsSearch|ElasticKeywordsSearch-dVhq9|ElasticKeywordsSearch|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-ypS4mBaseRetriever|retriever|RetrievalQA-ypS4m\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"PromptTemplate-4iBFj\",\n                                \"target\": \"ElasticKeywordsSearch-dVhq9\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|prompt|ElasticKeywordsSearch-dVhq9\",\n                                \"id\": \"reactflow__edge-PromptTemplate-4iBFjPromptTemplate|PromptTemplate-4iBFj|StringPromptTemplate|BasePromptTemplate|PromptTemplate-ElasticKeywordsSearch-dVhq9BasePromptTemplate|prompt|ElasticKeywordsSearch-dVhq9\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-d9de6\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-d9de6|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"ElasticKeywordsSearch-dVhq9\",\n                                \"targetHandle\": \"BaseLLM|llm|ElasticKeywordsSearch-dVhq9\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-d9de6ChatOpenAI|ChatOpenAI-d9de6|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-ElasticKeywordsSearch-dVhq9BaseLLM|llm|ElasticKeywordsSearch-dVhq9\",\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-d9de6\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-d9de6|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"CombineDocsChain-bMaXk\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-bMaXk\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-d9de6ChatOpenAI|ChatOpenAI-d9de6|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-bMaXkBaseLanguageModel|llm|CombineDocsChain-bMaXk\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"cc01e\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"知识库问答_增强版\": {\n            \"id\": \"ConversationalRetrievalChain-4a1a1\",\n            \"type\": \"ConversationalRetrievalChain\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"知识库问答_增强版\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"BaseConversationalRetrievalChain\",\n                    \"Chain\",\n                    \"ConversationalRetrievalChain\",\n                    \"function\"\n                ],\n                \"description\": \"Convenience method to load chain from LLM and retriever.\",\n                \"template\": {\n                    \"tags_MixEsVectorRetriever-J35CZ\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"MixEsVectorRetriever-J35CZ\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"metadata_MixEsVectorRetriever-J35CZ\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"MixEsVectorRetriever-J35CZ\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"combine_strategy_MixEsVectorRetriever-J35CZ\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"combine_strategy\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"mix\",\n                        \"l2_name\": \"combine_strategy\",\n                        \"options\": [\n                            \"keyword_front\",\n                            \"vector_front\",\n                            \"mix\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"combine_strategy\",\n                        \"proxy\": {\n                            \"id\": \"MixEsVectorRetriever-J35CZ\",\n                            \"field\": \"combine_strategy\"\n                        }\n                    },\n                    \"drop_old_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"drop_old\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"drop_old\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"drop_old\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"drop_old\"\n                        }\n                    },\n                    \"documents_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"documents\",\n                        \"show\": true,\n                        \"type\": \"Document\",\n                        \"l2_name\": \"documents\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Documents\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"documents\"\n                        }\n                    },\n                    \"embedding_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"embedding\",\n                        \"show\": true,\n                        \"type\": \"Embeddings\",\n                        \"l2_name\": \"embedding\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Embedding\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"embedding\"\n                        }\n                    },\n                    \"metadatas_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_params_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"index_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"index_params\"\n                        }\n                    },\n                    \"search_kwargs_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"search_params_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"search_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"search_params\"\n                        }\n                    },\n                    \"collection_name_Milvus-cyR5W\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"collection_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"collection_name\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"collection_name\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"collection_name\"\n                        }\n                    },\n                    \"connection_args_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"connection_args\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"\",\n                        \"l2_name\": \"connection_args\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"connection_args\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"connection_args\"\n                        }\n                    },\n                    \"consistency_level_Milvus-cyR5W\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"consistency_level\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Session\",\n                        \"l2_name\": \"consistency_level\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"consistency_level\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-cyR5W\",\n                            \"field\": \"consistency_level\"\n                        }\n                    },\n                    \"ids_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"ids\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"ids\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ids\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"ids\"\n                        }\n                    },\n                    \"llm_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"llm\",\n                        \"type\": \"BaseLLM\",\n                        \"l2_name\": \"llm\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"LLM\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"llm\"\n                        }\n                    },\n                    \"prompt_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"prompt\",\n                        \"type\": \"BasePromptTemplate\",\n                        \"l2_name\": \"prompt\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"prompt\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"prompt\"\n                        }\n                    },\n                    \"documents_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"documents\",\n                        \"show\": true,\n                        \"type\": \"Document\",\n                        \"l2_name\": \"documents\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Documents\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"documents\"\n                        }\n                    },\n                    \"embedding_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"embedding\",\n                        \"show\": true,\n                        \"type\": \"Embeddings\",\n                        \"l2_name\": \"embedding\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Embedding\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"embedding\"\n                        }\n                    },\n                    \"metadatas_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_name_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"index_name\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_name\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"index_name\"\n                        }\n                    },\n                    \"ssl_verify_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"ssl_verify\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"ssl_verify\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ssl_verify\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"ssl_verify\"\n                        }\n                    },\n                    \"search_kwargs_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"refresh_indices_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"refresh_indices\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"refresh_indices\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"refresh_indices\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"refresh_indices\"\n                        }\n                    },\n                    \"elasticsearch_url_ElasticKeywordsSearch-31Et9\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"elasticsearch_url\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"elasticsearch_url\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ES_connection_url\",\n                        \"proxy\": {\n                            \"id\": \"ElasticKeywordsSearch-31Et9\",\n                            \"field\": \"elasticsearch_url\"\n                        }\n                    },\n                    \"verbose_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"callbacks_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"Callbacks\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"chain_type_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"l2_name\": \"chain_type\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"input_node_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"condense_question_llm_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"condense_question_llm\",\n                        \"show\": false,\n                        \"type\": \"BaseLanguageModel\",\n                        \"l2_name\": \"condense_question_llm\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"condense_question_llm\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"condense_question_llm\"\n                        }\n                    },\n                    \"return_source_documents_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Return source documents\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"condense_question_prompt_ConversationalRetrievalChain-SmY3w\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"condense_question_prompt\",\n                        \"show\": true,\n                        \"type\": \"BasePromptTemplate\",\n                        \"value\": {\n                            \"_type\": \"prompt\",\n                            \"template\": \"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\n                            \"output_parser\": null,\n                            \"input_variables\": [\n                                \"chat_history\",\n                                \"question\"\n                            ],\n                            \"template_format\": \"f-string\",\n                            \"partial_variables\": {},\n                            \"validate_template\": true\n                        },\n                        \"l2_name\": \"condense_question_prompt\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"condense_question_prompt\",\n                        \"proxy\": {\n                            \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                            \"field\": \"condense_question_prompt\"\n                        }\n                    },\n                    \"ai_prefix_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"ai_prefix\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"AI\",\n                        \"l2_name\": \"ai_prefix\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ai_prefix\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"ai_prefix\"\n                        }\n                    },\n                    \"input_key_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"memory_key_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"chat_history\",\n                        \"l2_name\": \"memory_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"memory_key\"\n                        }\n                    },\n                    \"output_key_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"answer\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"chat_memory_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"chat_memory\",\n                        \"show\": true,\n                        \"type\": \"BaseChatMessageHistory\",\n                        \"l2_name\": \"chat_memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chat_memory\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"chat_memory\"\n                        }\n                    },\n                    \"human_prefix_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"human_prefix\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Human\",\n                        \"l2_name\": \"human_prefix\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"human_prefix\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"human_prefix\"\n                        }\n                    },\n                    \"return_messages_ConversationBufferMemory-K1tss\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_messages\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"return_messages\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_messages\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-K1tss\",\n                            \"field\": \"return_messages\"\n                        }\n                    },\n                    \"template_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n\\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                        \"l2_name\": \"template\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": true,\n                        \"type\": \"BaseOutputParser\",\n                        \"l2_name\": \"output_parser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"context\",\n                            \"question\"\n                        ],\n                        \"l2_name\": \"input_variables\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"f-string\",\n                        \"l2_name\": \"template_format\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"partial_variables\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-bs0vj\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"validate_template\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-bs0vj\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-029a9\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-029a9\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 350,\n                                \"id\": \"MixEsVectorRetriever-J35CZ\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1146.2998776479994,\n                                    \"y\": -505.22140452358315\n                                },\n                                \"data\": {\n                                    \"id\": \"MixEsVectorRetriever-J35CZ\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"MixEsVectorRetriever\",\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"combine_strategy\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"combine_strategy\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"mix\",\n                                                \"l2_name\": \"combine_strategy\",\n                                                \"options\": [\n                                                    \"keyword_front\",\n                                                    \"vector_front\",\n                                                    \"mix\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"combine_strategy\"\n                                            },\n                                            \"vector_retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"vector_retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"vector_retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"keyword_retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"keyword_retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"keyword_retriever\",\n                                                \"advanced\": false,\n                                                \"password\": true,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"value\": \"\"\n                                            }\n                                        },\n                                        \"description\": \"This class ensemble the results of es retriever and vector retriever.\",\n                                        \"base_classes\": [\n                                            \"BaseRetriever\",\n                                            \"MixEsVectorRetriever\"\n                                        ],\n                                        \"display_name\": \"MixEsVectorRetriever\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"MixEsVectorRetriever\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1146.2998776479994,\n                                    \"y\": -505.22140452358315\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 428,\n                                \"id\": \"Milvus-cyR5W\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 543.3992621716293,\n                                    \"y\": -94.57897454061174\n                                },\n                                \"data\": {\n                                    \"id\": \"Milvus-cyR5W\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"Milvus\",\n                                            \"drop_old\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"drop_old\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"drop_old\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"drop_old\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"index_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_params\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"search_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"search_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_params\"\n                                            },\n                                            \"collection_name\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"collection_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"collection_name\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"collection_name\"\n                                            },\n                                            \"connection_args\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"connection_args\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"connection_args\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"connection_args\"\n                                            },\n                                            \"consistency_level\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"consistency_level\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Session\",\n                                                \"l2_name\": \"consistency_level\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"consistency_level\"\n                                            }\n                                        },\n                                        \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n                                        \"base_classes\": [\n                                            \"VectorStore\",\n                                            \"Milvus\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"Milvus\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"Milvus\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 543.3992621716293,\n                                    \"y\": -94.57897454061174\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 510,\n                                \"id\": \"ElasticKeywordsSearch-31Et9\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 545.7343868015423,\n                                    \"y\": -596.1314471305373\n                                },\n                                \"data\": {\n                                    \"id\": \"ElasticKeywordsSearch-31Et9\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"ids\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"ids\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"ids\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ids\"\n                                            },\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"type\": \"BaseLLM\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"ElasticKeywordsSearch\",\n                                            \"prompt\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"prompt\",\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"l2_name\": \"prompt\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"prompt\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_name\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"index_name\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_name\"\n                                            },\n                                            \"ssl_verify\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"ssl_verify\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"ssl_verify\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ssl_verify\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"refresh_indices\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"refresh_indices\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"refresh_indices\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"refresh_indices\"\n                                            },\n                                            \"elasticsearch_url\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"elasticsearch_url\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"elasticsearch_url\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ES_connection_url\"\n                                            }\n                                        },\n                                        \"description\": \"Construct ElasticKeywordsSearch wrapper from raw documents.\",\n                                        \"base_classes\": [\n                                            \"VectorStore\",\n                                            \"ElasticKeywordsSearch\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"ElasticKeywordsSearch\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"ElasticKeywordsSearch\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 545.7343868015423,\n                                    \"y\": -596.1314471305373\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 494,\n                                \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 2006.6489580098225,\n                                    \"y\": -918.5048523096177\n                                },\n                                \"data\": {\n                                    \"id\": \"ConversationalRetrievalChain-SmY3w\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"_type\": \"ConversationalRetrievalChain\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseChatMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"Callbacks\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"chain_type\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"l2_name\": \"chain_type\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"condense_question_llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"condense_question_llm\",\n                                                \"show\": false,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"condense_question_llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"condense_question_llm\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Return source documents\"\n                                            },\n                                            \"condense_question_prompt\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"condense_question_prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"value\": {\n                                                    \"_type\": \"prompt\",\n                                                    \"template\": \"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\\n\\nChat History:\\n{chat_history}\\nFollow Up Input: {question}\\nStandalone question:\",\n                                                    \"output_parser\": null,\n                                                    \"input_variables\": [\n                                                        \"chat_history\",\n                                                        \"question\"\n                                                    ],\n                                                    \"template_format\": \"f-string\",\n                                                    \"partial_variables\": {},\n                                                    \"validate_template\": true\n                                                },\n                                                \"l2_name\": \"condense_question_prompt\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"condense_question_prompt\"\n                                            },\n                                            \"combine_docs_chain_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_docs_chain_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"l2_name\": \"combine_docs_chain_kwargs\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"prompt\"\n                                            }\n                                        },\n                                        \"description\": \"Convenience method to load chain from LLM and retriever.\",\n                                        \"base_classes\": [\n                                            \"BaseConversationalRetrievalChain\",\n                                            \"Chain\",\n                                            \"ConversationalRetrievalChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"ConversationalRetrievalChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/chat_vector_db\"\n                                    },\n                                    \"type\": \"ConversationalRetrievalChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 2006.6489580098225,\n                                    \"y\": -918.5048523096177\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 526,\n                                \"id\": \"ConversationBufferMemory-K1tss\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1134.0608104034231,\n                                    \"y\": -1084.2478524136263\n                                },\n                                \"data\": {\n                                    \"id\": \"ConversationBufferMemory-K1tss\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"ConversationBufferMemory\",\n                                            \"ai_prefix\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"ai_prefix\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"AI\",\n                                                \"l2_name\": \"ai_prefix\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ai_prefix\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"memory_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"chat_history\",\n                                                \"l2_name\": \"memory_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory_key\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"answer\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"chat_memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"chat_memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseChatMessageHistory\",\n                                                \"l2_name\": \"chat_memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chat_memory\"\n                                            },\n                                            \"human_prefix\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"human_prefix\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Human\",\n                                                \"l2_name\": \"human_prefix\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"human_prefix\"\n                                            },\n                                            \"return_messages\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_messages\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"return_messages\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_messages\"\n                                            }\n                                        },\n                                        \"description\": \"Buffer for storing conversation memory.\",\n                                        \"base_classes\": [\n                                            \"BaseMemory\",\n                                            \"ConversationBufferMemory\",\n                                            \"BaseChatMemory\"\n                                        ],\n                                        \"display_name\": \"ConversationBufferMemory\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n                                    },\n                                    \"type\": \"ConversationBufferMemory\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1134.0608104034231,\n                                    \"y\": -1084.2478524136263\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 290,\n                                \"id\": \"PromptTemplate-bs0vj\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1129.186016282717,\n                                    \"y\": -1612.3505488234584\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-bs0vj\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n\\n1.用中文回答用户问题，并且答案要严谨专业。\\n2.你需要依据以上【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。\\n3.由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n4.若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                                                \"l2_name\": \"template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"output_parser\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": true,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"l2_name\": \"output_parser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"context\",\n                                                    \"question\"\n                                                ],\n                                                \"l2_name\": \"input_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"f-string\",\n                                                \"l2_name\": \"template_format\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"partial_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"validate_template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"Schema to represent a prompt for an LLM.\",\n                                        \"base_classes\": [\n                                            \"BasePromptTemplate\",\n                                            \"PromptTemplate\",\n                                            \"StringPromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"\": [\n                                                \"context\",\n                                                \"question\"\n                                            ],\n                                            \"template\": [\n                                                \"context\",\n                                                \"question\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {\n                                            \"formatters\": {\n                                                \"openai_api_key\": {}\n                                            },\n                                            \"base_formatters\": {\n                                                \"dict\": {},\n                                                \"list\": {},\n                                                \"show\": {},\n                                                \"union\": {},\n                                                \"kwargs\": {},\n                                                \"default\": {},\n                                                \"headers\": {},\n                                                \"optional\": {},\n                                                \"password\": {},\n                                                \"multiline\": {},\n                                                \"model_fields\": {\n                                                    \"MODEL_DICT\": {\n                                                        \"OpenAI\": [\n                                                            \"text-davinci-003\",\n                                                            \"text-davinci-002\",\n                                                            \"text-curie-001\",\n                                                            \"text-babbage-001\",\n                                                            \"text-ada-001\"\n                                                        ],\n                                                        \"Anthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ],\n                                                        \"ChatOpenAI\": [\n                                                            \"gpt-3.5-turbo-0613\",\n                                                            \"gpt-3.5-turbo\",\n                                                            \"gpt-3.5-turbo-16k-0613\",\n                                                            \"gpt-3.5-turbo-16k\",\n                                                            \"gpt-4-0613\",\n                                                            \"gpt-4-32k-0613\",\n                                                            \"gpt-4\",\n                                                            \"gpt-4-32k\"\n                                                        ],\n                                                        \"ChatAnthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"dict_code_file\": {}\n                                            }\n                                        }\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1129.186016282717,\n                                    \"y\": -1612.3505488234584\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-029a9\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 520.7277052724213,\n                                    \"y\": -1262.5347130150906\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-029a9\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 520.7277052724213,\n                                    \"y\": -1262.5347130150906\n                                },\n                                \"dragging\": false\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"Milvus-cyR5W\",\n                                \"target\": \"MixEsVectorRetriever-J35CZ\",\n                                \"sourceHandle\": \"Milvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\",\n                                \"id\": \"reactflow__edge-Milvus-cyR5WMilvus|Milvus-cyR5W|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|vector_retriever|MixEsVectorRetriever-J35CZ\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ElasticKeywordsSearch-31Et9\",\n                                \"target\": \"MixEsVectorRetriever-J35CZ\",\n                                \"sourceHandle\": \"ElasticKeywordsSearch|ElasticKeywordsSearch-31Et9|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\",\n                                \"id\": \"reactflow__edge-ElasticKeywordsSearch-31Et9ElasticKeywordsSearch|ElasticKeywordsSearch-31Et9|VectorStore|ElasticKeywordsSearch|BaseRetriever|VectorStoreRetriever-MixEsVectorRetriever-J35CZBaseRetriever|keyword_retriever|MixEsVectorRetriever-J35CZ\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"MixEsVectorRetriever-J35CZ\",\n                                \"target\": \"ConversationalRetrievalChain-SmY3w\",\n                                \"sourceHandle\": \"MixEsVectorRetriever|MixEsVectorRetriever-J35CZ|BaseRetriever|MixEsVectorRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\",\n                                \"id\": \"reactflow__edge-MixEsVectorRetriever-J35CZMixEsVectorRetriever|MixEsVectorRetriever-J35CZ|BaseRetriever|MixEsVectorRetriever-ConversationalRetrievalChain-SmY3wBaseRetriever|retriever|ConversationalRetrievalChain-SmY3w\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ConversationBufferMemory-K1tss\",\n                                \"target\": \"ConversationalRetrievalChain-SmY3w\",\n                                \"sourceHandle\": \"ConversationBufferMemory|ConversationBufferMemory-K1tss|BaseMemory|ConversationBufferMemory|BaseChatMemory\",\n                                \"targetHandle\": \"BaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\",\n                                \"id\": \"reactflow__edge-ConversationBufferMemory-K1tssConversationBufferMemory|ConversationBufferMemory-K1tss|BaseMemory|ConversationBufferMemory|BaseChatMemory-ConversationalRetrievalChain-SmY3wBaseChatMemory|memory|ConversationalRetrievalChain-SmY3w\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"PromptTemplate-bs0vj\",\n                                \"target\": \"ConversationalRetrievalChain-SmY3w\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-bs0vj|BasePromptTemplate|PromptTemplate|StringPromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\",\n                                \"id\": \"reactflow__edge-PromptTemplate-bs0vjPromptTemplate|PromptTemplate-bs0vj|BasePromptTemplate|PromptTemplate|StringPromptTemplate-ConversationalRetrievalChain-SmY3wBasePromptTemplate|combine_docs_chain_kwargs|ConversationalRetrievalChain-SmY3w\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-029a9\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-029a9|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"ConversationalRetrievalChain-SmY3w\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-029a9ChatOpenAI|ChatOpenAI-029a9|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-ConversationalRetrievalChain-SmY3wBaseLanguageModel|llm|ConversationalRetrievalChain-SmY3w\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"24ac8\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"知识库问答\": {\n            \"id\": \"RetrievalQA-517cc\",\n            \"type\": \"RetrievalQA\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"知识库问答\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"RetrievalQA\",\n                    \"Chain\",\n                    \"BaseRetrievalQA\",\n                    \"function\"\n                ],\n                \"description\": \"Chain for question-answering against an index.\",\n                \"template\": {\n                    \"drop_old_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"drop_old\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"drop_old\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"drop_old\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"drop_old\"\n                        }\n                    },\n                    \"documents_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"documents\",\n                        \"show\": true,\n                        \"type\": \"Document\",\n                        \"l2_name\": \"documents\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Documents\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"documents\"\n                        }\n                    },\n                    \"embedding_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"embedding\",\n                        \"show\": true,\n                        \"type\": \"Embeddings\",\n                        \"l2_name\": \"embedding\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Embedding\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"embedding\"\n                        }\n                    },\n                    \"metadatas_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"index_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"index_params\"\n                        }\n                    },\n                    \"search_kwargs_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"search_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"search_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_params\"\n                        }\n                    },\n                    \"collection_name_Milvus-CWpae\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"collection_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"选择知识库\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"collection_name\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"collection_name\"\n                        }\n                    },\n                    \"connection_args_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"connection_args\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"\",\n                        \"l2_name\": \"connection_args\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"connection_args\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"connection_args\"\n                        }\n                    },\n                    \"consistency_level_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"consistency_level\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Session\",\n                        \"l2_name\": \"consistency_level\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"consistency_level\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"consistency_level\"\n                        }\n                    },\n                    \"tags_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"memory_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory\",\n                        \"show\": true,\n                        \"type\": \"BaseMemory\",\n                        \"l2_name\": \"memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"memory\"\n                        }\n                    },\n                    \"verbose_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"query\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"input_node_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"output_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"result\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"return_source_documents_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_source_documents\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"token_max_CombineDocsChain-71a85\": {\n                        \"info\": \"只对Stuff类型生效\",\n                        \"list\": false,\n                        \"name\": \"token_max\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": -1,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"token_max\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-71a85\",\n                            \"field\": \"token_max\"\n                        }\n                    },\n                    \"chain_type_CombineDocsChain-71a85\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-71a85\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"source_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"source\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"source\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"source\"\n                        }\n                    },\n                    \"template_PromptTemplate-3c164\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"title: {source}\\n{page_content}\\n----------------\",\n                        \"l2_name\": \"提示词模板\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"input_types_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_types\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_types\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"input_types\"\n                        }\n                    },\n                    \"page_content_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"page_content\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"page_content\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"page_content\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": true,\n                        \"type\": \"BaseOutputParser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"source\",\n                            \"page_content\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                        \"value\": \"f-string\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-3c164\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-3c164\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"context_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"context\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"context\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"context\"\n                        }\n                    },\n                    \"question_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"question\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\",\n                            \"VariableNode\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"question\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"question\"\n                        }\n                    },\n                    \"template_PromptTemplate-ced29\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：企业客服\\n\\n# Background :\\n你是一家名叫XX公司的客服人员。你的日常工作是回复公司内用户的各类咨询问题，所以当用户提到“公司”时，指的是XX公司。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                        \"l2_name\": \"提示词模板\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"input_types_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_types\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_types\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"input_types\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": true,\n                        \"type\": \"BaseOutputParser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"context\",\n                            \"question\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                        \"value\": \"f-string\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-ced29\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ced29\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-7a446\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-7a446\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 346,\n                                \"id\": \"Milvus-CWpae\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1146.2686160133917,\n                                    \"y\": -392.08641987984464\n                                },\n                                \"data\": {\n                                    \"id\": \"Milvus-CWpae\",\n                                    \"node\": {\n                                        \"l2_name\": \"知识库\",\n                                        \"template\": {\n                                            \"_type\": \"Milvus\",\n                                            \"drop_old\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"drop_old\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"drop_old\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"drop_old\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"index_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_params\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"search_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"search_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_params\"\n                                            },\n                                            \"collection_name\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"collection_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"选择知识库\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"collection_name\"\n                                            },\n                                            \"connection_args\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"connection_args\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"connection_args\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"connection_args\"\n                                            },\n                                            \"consistency_level\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"consistency_level\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Session\",\n                                                \"l2_name\": \"consistency_level\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"consistency_level\"\n                                            }\n                                        },\n                                        \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n                                        \"base_classes\": [\n                                            \"Milvus\",\n                                            \"VectorStore\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"Milvus\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"Milvus\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1146.2686160133917,\n                                    \"y\": -392.08641987984464\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"RetrievalQA-x5nap\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1809.8484174920595,\n                                    \"y\": -770.5069621032657\n                                },\n                                \"data\": {\n                                    \"id\": \"RetrievalQA-x5nap\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"RetrievalQA\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"query\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"result\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"combine_documents_chain\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_documents_chain\",\n                                                \"show\": true,\n                                                \"type\": \"BaseCombineDocumentsChain\",\n                                                \"l2_name\": \"combine_documents_chain\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_source_documents\"\n                                            }\n                                        },\n                                        \"description\": \"Chain for question-answering against an index.\",\n                                        \"base_classes\": [\n                                            \"RetrievalQA\",\n                                            \"Chain\",\n                                            \"BaseRetrievalQA\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"RetrievalQA\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n                                    },\n                                    \"type\": \"RetrievalQA\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1809.8484174920595,\n                                    \"y\": -770.5069621032657\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 448,\n                                \"id\": \"CombineDocsChain-71a85\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1135.690733661112,\n                                    \"y\": -1047.3523465428725\n                                },\n                                \"data\": {\n                                    \"id\": \"CombineDocsChain-71a85\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"load_qa_chain\",\n                                            \"prompt\": {\n                                                \"info\": \"只对Stuff类型生效\",\n                                                \"list\": false,\n                                                \"name\": \"prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"prompt\"\n                                            },\n                                            \"token_max\": {\n                                                \"info\": \"只对Stuff类型生效\",\n                                                \"list\": false,\n                                                \"name\": \"token_max\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": -1,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"token_max\"\n                                            },\n                                            \"chain_type\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            },\n                                            \"document_prompt\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"document_prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            }\n                                        },\n                                        \"description\": \"Load question answering chain.\",\n                                        \"base_classes\": [\n                                            \"BaseCombineDocumentsChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"CombineDocsChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"CombineDocsChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1135.690733661112,\n                                    \"y\": -1047.3523465428725\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 454,\n                                \"id\": \"PromptTemplate-3c164\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 538.127581209942,\n                                    \"y\": -1530.8752798629753\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-3c164\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"l2_name\": \"召回段落拼接提示词\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"source\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"source\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"source\"\n                                            },\n                                            \"template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"title: {source}\\n{page_content}\\n----------------\",\n                                                \"l2_name\": \"提示词模板\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"input_types\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_types\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_types\"\n                                            },\n                                            \"page_content\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"page_content\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"page_content\"\n                                            },\n                                            \"output_parser\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": true,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"source\",\n                                                    \"page_content\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                                                \"value\": \"f-string\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"A prompt template for a language model.\",\n                                        \"base_classes\": [\n                                            \"Runnable\",\n                                            \"StringPromptTemplate\",\n                                            \"RunnableSerializable\",\n                                            \"PromptTemplate\",\n                                            \"Generic\",\n                                            \"BasePromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"\": [\n                                                \"source\",\n                                                \"page_content\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {}\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 538.127581209942,\n                                    \"y\": -1530.8752798629753\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 454,\n                                \"id\": \"PromptTemplate-ced29\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 528.5375319975674,\n                                    \"y\": -1031.4149446082283\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-ced29\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"l2_name\": \"大模型问答提示词\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"context\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"context\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"context\"\n                                            },\n                                            \"question\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"question\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\",\n                                                    \"VariableNode\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"question\"\n                                            },\n                                            \"template\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"参考文本：\\n{context}\\n\\n----------------------\\n# Role：企业客服\\n\\n# Background :\\n你是一家名叫XX公司的客服人员。你的日常工作是回复公司内用户的各类咨询问题，所以当用户提到“公司”时，指的是XX公司。\\n\\n# Goals:\\n- 以上【参考文本】中是从企业知识库中查找到的相关信息，只能结合以上信息进行回答，若以上内容为空或其中没有找到能回答【用户问题】的内容时，则回复“没有找到相关内容”，不能根据你自己的知识自己发挥。\\n- 特别要注意区分【用户问题】与【参考文本】中不同的日期、人名、公司名这些关键信息。\\n- 用中文回答问题，并且答案要严谨、专业、清晰、可读性好。\\n- 拥有排版审美, 会利用序号, 缩进, 分隔线和换行符等等来美化信息排版。\\n\\n----------------------\\n\\n用户问题: {question}\\n你的回答:\",\n                                                \"l2_name\": \"提示词模板\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"input_types\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_types\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_types\"\n                                            },\n                                            \"output_parser\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": true,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"context\",\n                                                    \"question\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"Union[Literal['f-string'], Literal['jinja2']]\",\n                                                \"value\": \"f-string\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"A prompt template for a language model.\",\n                                        \"base_classes\": [\n                                            \"Runnable\",\n                                            \"StringPromptTemplate\",\n                                            \"RunnableSerializable\",\n                                            \"PromptTemplate\",\n                                            \"Generic\",\n                                            \"BasePromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"\": [\n                                                \"context\",\n                                                \"question\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {}\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 528.5375319975674,\n                                    \"y\": -1031.4149446082283\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-7a446\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 524.9021453356706,\n                                    \"y\": -519.7914736349932\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-7a446\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"dragging\": false,\n                                \"positionAbsolute\": {\n                                    \"x\": 524.9021453356706,\n                                    \"y\": -519.7914736349932\n                                }\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"Milvus-CWpae\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"CombineDocsChain-71a85\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function\",\n                                \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-CombineDocsChain-71a85CombineDocsChain|CombineDocsChain-71a85|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"PromptTemplate-3c164\",\n                                \"target\": \"CombineDocsChain-71a85\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|document_prompt|CombineDocsChain-71a85\",\n                                \"id\": \"reactflow__edge-PromptTemplate-3c164PromptTemplate|PromptTemplate-3c164|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|document_prompt|CombineDocsChain-71a85\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"PromptTemplate-ced29\",\n                                \"target\": \"CombineDocsChain-71a85\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|prompt|CombineDocsChain-71a85\",\n                                \"id\": \"reactflow__edge-PromptTemplate-ced29PromptTemplate|PromptTemplate-ced29|Runnable|StringPromptTemplate|RunnableSerializable|PromptTemplate|Generic|BasePromptTemplate-CombineDocsChain-71a85BasePromptTemplate|prompt|CombineDocsChain-71a85\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-7a446\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-7a446|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"CombineDocsChain-71a85\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-71a85\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-7a446ChatOpenAI|ChatOpenAI-7a446|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-71a85BaseLanguageModel|llm|CombineDocsChain-71a85\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"da453\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"表格数据问答\": {\n            \"id\": \"RetrievalQA-0a13b\",\n            \"type\": \"InputFileNode\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"表格数据问答\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"RetrievalQA\",\n                    \"Chain\",\n                    \"BaseRetrievalQA\",\n                    \"function\"\n                ],\n                \"description\": \"Chain for question-answering against an index.\",\n                \"template\": {\n                    \"token_max_CombineDocsChain-RCPNA\": {\n                        \"l2\": false,\n                        \"info\": \"当前只对stuff 生效\",\n                        \"list\": false,\n                        \"name\": \"token_max\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": -1,\n                        \"l2_name\": \"token_max\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"token_max\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-RCPNA\",\n                            \"field\": \"token_max\"\n                        }\n                    },\n                    \"chain_type_CombineDocsChain-RCPNA\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"l2_name\": \"chain_type\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-RCPNA\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"drop_old_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"drop_old\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"drop_old\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"drop_old\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"drop_old\"\n                        }\n                    },\n                    \"metadatas_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"index_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"index_params\"\n                        }\n                    },\n                    \"search_kwargs_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"search_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"search_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_params\"\n                        }\n                    },\n                    \"collection_name_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"collection_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"选择知识库\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"collection_id\": \"\",\n                        \"display_name\": \"collection_name\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"collection_name\"\n                        }\n                    },\n                    \"connection_args_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"connection_args\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"\",\n                        \"l2_name\": \"connection_args\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"connection_args\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"connection_args\"\n                        }\n                    },\n                    \"consistency_level_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"consistency_level\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Session\",\n                        \"l2_name\": \"consistency_level\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"consistency_level\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"consistency_level\"\n                        }\n                    },\n                    \"tags_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"memory_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory\",\n                        \"show\": true,\n                        \"type\": \"BaseMemory\",\n                        \"l2_name\": \"memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"memory\"\n                        }\n                    },\n                    \"verbose_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"query\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"input_node_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"output_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"result\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"return_source_documents_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_source_documents\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"proxy_url_OpenAIProxyEmbedding-1771b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"proxy_url\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"http://43.133.35.137:8080\",\n                        \"display_name\": \"proxy_url\",\n                        \"proxy\": {\n                            \"id\": \"OpenAIProxyEmbedding-1771b\",\n                            \"field\": \"proxy_url\"\n                        }\n                    },\n                    \"metadata_CSVLoader-854c0\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"CSVLoader-854c0\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"file_path_InputFileNode-e4363\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"file_path\",\n                        \"show\": true,\n                        \"type\": \"file\",\n                        \"value\": \"\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"suffixes\": [\n                            \".csv\"\n                        ],\n                        \"fileTypes\": [\n                            \"csv\"\n                        ],\n                        \"file_path\": null,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"file_path\",\n                        \"proxy\": {\n                            \"id\": \"InputFileNode-e4363\",\n                            \"field\": \"file_path\"\n                        }\n                    },\n                    \"file_type_InputFileNode-e4363\": {\n                        \"info\": \"Tips for which file should upload\",\n                        \"list\": false,\n                        \"name\": \"file_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"CSV文件\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"提示上传文件类型\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"InputFileNode-e4363\",\n                            \"field\": \"file_type\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-c4ddb\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-c4ddb\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 376,\n                                \"id\": \"CombineDocsChain-RCPNA\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 991.5062827922865,\n                                    \"y\": -1765.3942107165124\n                                },\n                                \"data\": {\n                                    \"id\": \"CombineDocsChain-RCPNA\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"load_qa_chain\",\n                                            \"token_max\": {\n                                                \"l2\": false,\n                                                \"info\": \"当前只对stuff 生效\",\n                                                \"list\": false,\n                                                \"name\": \"token_max\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": -1,\n                                                \"l2_name\": \"token_max\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"token_max\"\n                                            },\n                                            \"chain_type\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"l2_name\": \"chain_type\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            }\n                                        },\n                                        \"description\": \"Load question answering chain.\",\n                                        \"base_classes\": [\n                                            \"BaseCombineDocumentsChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"CombineDocsChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"CombineDocsChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 991.5062827922865,\n                                    \"y\": -1765.3942107165124\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 346,\n                                \"id\": \"Milvus-CWpae\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1004.1977914708131,\n                                    \"y\": -1222.8140072260721\n                                },\n                                \"data\": {\n                                    \"id\": \"Milvus-CWpae\",\n                                    \"node\": {\n                                        \"l2_name\": \"知识库\",\n                                        \"template\": {\n                                            \"_type\": \"Milvus\",\n                                            \"drop_old\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"drop_old\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"drop_old\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"drop_old\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"index_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_params\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"search_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"search_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_params\"\n                                            },\n                                            \"collection_name\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"collection_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"选择知识库\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"collection_id\": \"\",\n                                                \"display_name\": \"collection_name\"\n                                            },\n                                            \"connection_args\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"connection_args\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"connection_args\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"connection_args\"\n                                            },\n                                            \"consistency_level\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"consistency_level\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Session\",\n                                                \"l2_name\": \"consistency_level\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"consistency_level\"\n                                            }\n                                        },\n                                        \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n                                        \"base_classes\": [\n                                            \"Milvus\",\n                                            \"VectorStore\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"Milvus\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"Milvus\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1004.1977914708131,\n                                    \"y\": -1222.8140072260721\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"RetrievalQA-x5nap\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1667.777592949481,\n                                    \"y\": -1602.5215637887113\n                                },\n                                \"data\": {\n                                    \"id\": \"RetrievalQA-x5nap\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"RetrievalQA\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"query\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"result\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"combine_documents_chain\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_documents_chain\",\n                                                \"show\": true,\n                                                \"type\": \"BaseCombineDocumentsChain\",\n                                                \"l2_name\": \"combine_documents_chain\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_source_documents\"\n                                            }\n                                        },\n                                        \"description\": \"Chain for question-answering against an index.\",\n                                        \"base_classes\": [\n                                            \"RetrievalQA\",\n                                            \"Chain\",\n                                            \"BaseRetrievalQA\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"RetrievalQA\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n                                    },\n                                    \"type\": \"RetrievalQA\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1667.777592949481,\n                                    \"y\": -1602.5215637887113\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 172,\n                                \"id\": \"OpenAIProxyEmbedding-1771b\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 492.2452900949522,\n                                    \"y\": -841.6318960897328\n                                },\n                                \"data\": {\n                                    \"id\": \"OpenAIProxyEmbedding-1771b\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"proxy_embedding\",\n                                            \"proxy_url\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"proxy_url\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"http://43.133.35.137:8080\",\n                                                \"display_name\": \"proxy_url\"\n                                            }\n                                        },\n                                        \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n                                        \"base_classes\": [\n                                            \"Embeddings\"\n                                        ],\n                                        \"display_name\": \"OpenAIProxyEmbedding\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"OpenAIProxyEmbedding\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 492.2452900949522,\n                                    \"y\": -841.6318960897328\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 290,\n                                \"id\": \"CSVLoader-854c0\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 473.20021062628746,\n                                    \"y\": -1217.8870866182915\n                                },\n                                \"data\": {\n                                    \"id\": \"CSVLoader-854c0\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"CSVLoader\",\n                                            \"metadata\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"file_path\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"file_path\",\n                                                \"show\": true,\n                                                \"type\": \"fileNode\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"suffixes\": [\n                                                    \".csv\"\n                                                ],\n                                                \"fileTypes\": [\n                                                    \"csv\"\n                                                ],\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            }\n                                        },\n                                        \"description\": \"Load a `CSV` file into a list of Documents.\",\n                                        \"base_classes\": [\n                                            \"Document\"\n                                        ],\n                                        \"display_name\": \"CSVLoader\",\n                                        \"output_types\": [\n                                            \"Document\"\n                                        ],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\"\n                                    },\n                                    \"type\": \"CSVLoader\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 473.20021062628746,\n                                    \"y\": -1217.8870866182915\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 336,\n                                \"id\": \"InputFileNode-e4363\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": -29.907305337607568,\n                                    \"y\": -1246.4547058212886\n                                },\n                                \"data\": {\n                                    \"id\": \"InputFileNode-e4363\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"InputFileNode\",\n                                            \"file_path\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"file_path\",\n                                                \"show\": true,\n                                                \"type\": \"file\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"suffixes\": [\n                                                    \".csv\"\n                                                ],\n                                                \"fileTypes\": [\n                                                    \"csv\"\n                                                ],\n                                                \"file_path\": null,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"file_path\"\n                                            },\n                                            \"file_type\": {\n                                                \"info\": \"Tips for which file should upload\",\n                                                \"list\": false,\n                                                \"name\": \"file_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"CSV文件\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"提示上传文件类型\",\n                                                \"display_name\": \"Name\"\n                                            }\n                                        },\n                                        \"description\": \"输入节点，用来自动对接输入\",\n                                        \"base_classes\": [\n                                            \"fileNode\"\n                                        ],\n                                        \"display_name\": \"InputFileNode\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"InputFileNode\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": -29.907305337607568,\n                                    \"y\": -1246.4547058212886\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-c4ddb\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 492.0105811305291,\n                                    \"y\": -2015.8972405291959\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false,\n                                        \"official\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-c4ddb\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 492.0105811305291,\n                                    \"y\": -2015.8972405291959\n                                },\n                                \"dragging\": false\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"CombineDocsChain-RCPNA\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\n                                \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"Milvus-CWpae\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"OpenAIProxyEmbedding-1771b\",\n                                \"target\": \"Milvus-CWpae\",\n                                \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\n                                \"targetHandle\": \"Embeddings|embedding|Milvus-CWpae\",\n                                \"id\": \"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"CSVLoader-854c0\",\n                                \"target\": \"Milvus-CWpae\",\n                                \"sourceHandle\": \"CSVLoader|CSVLoader-854c0|Document\",\n                                \"targetHandle\": \"Document|documents|Milvus-CWpae\",\n                                \"id\": \"reactflow__edge-CSVLoader-854c0CSVLoader|CSVLoader-854c0|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"InputFileNode-e4363\",\n                                \"target\": \"CSVLoader-854c0\",\n                                \"sourceHandle\": \"InputFileNode|InputFileNode-e4363|fileNode\",\n                                \"targetHandle\": \"fileNode|file_path|CSVLoader-854c0\",\n                                \"id\": \"reactflow__edge-InputFileNode-e4363InputFileNode|InputFileNode-e4363|fileNode-CSVLoader-854c0fileNode|file_path|CSVLoader-854c0\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-c4ddb\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-c4ddb|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"CombineDocsChain-RCPNA\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-c4ddbChatOpenAI|ChatOpenAI-c4ddb|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"dd09b\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"角色扮演\": {\n            \"id\": \"LLMChain-6df16\",\n            \"type\": \"LLMChain\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"角色扮演\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"Chain\",\n                    \"LLMChain\",\n                    \"function\"\n                ],\n                \"description\": \"Chain to run queries against LLMs.\",\n                \"template\": {\n                    \"tags_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"verbose_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_node_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"llm_kwargs_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"llm_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"llm_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"llm_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"llm_kwargs\"\n                        }\n                    },\n                    \"output_key_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"text\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"output_parser_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": false,\n                        \"type\": \"BaseLLMOutputParser\",\n                        \"l2_name\": \"output_parser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"return_final_only_LLMChain-wRz0c\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_final_only\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_final_only\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_final_only\",\n                        \"proxy\": {\n                            \"id\": \"LLMChain-wRz0c\",\n                            \"field\": \"return_final_only\"\n                        }\n                    },\n                    \"input_PromptTemplate-ZoUVT\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"input\"\n                        }\n                    },\n                    \"template_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template\",\n                        \"show\": true,\n                        \"type\": \"prompt\",\n                        \"value\": \"System：\\n你将扮演一个科技公司的面试官，面试者是一名产品经理，提出 3 个犀利的问题。\\n请注意：\\n- 每次只问一个问题\\n- 面试者回答问题后请简短点评一下，然后问下一个问题，不要试图纠正候选人的错误；\\n- 如果你认为用户连续几次回答的都不对，就少问一点；\\n- 问完最后一个问题后，你可以问这样一个问题：上一份工作为什么离职？用户回答该问题后，请表示理解与支持，并停止与面试者的对话。若面试者继续说话你可以礼貌拒绝。\\n\\n以下是你们的对话记录\\n\\n{chat_history}\\n\\n面试者：{input}\\n\\n你的回答：\",\n                        \"l2_name\": \"template\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"template\"\n                        }\n                    },\n                    \"chat_history_PromptTemplate-ZoUVT\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"chat_history\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": true,\n                        \"input_types\": [\n                            \"Document\",\n                            \"BaseOutputParser\"\n                        ],\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chat_history\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"chat_history\"\n                        }\n                    },\n                    \"output_parser_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_parser\",\n                        \"show\": false,\n                        \"type\": \"BaseOutputParser\",\n                        \"l2_name\": \"output_parser\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_parser\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"output_parser\"\n                        }\n                    },\n                    \"input_variables_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"input_variables\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": [\n                            \"chat_history\",\n                            \"input\"\n                        ],\n                        \"l2_name\": \"input_variables\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"input_variables\"\n                        }\n                    },\n                    \"template_format_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"template_format\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"f-string\",\n                        \"l2_name\": \"template_format\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"template_format\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"template_format\"\n                        }\n                    },\n                    \"partial_variables_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"partial_variables\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"partial_variables\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"partial_variables\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"partial_variables\"\n                        }\n                    },\n                    \"validate_template_PromptTemplate-ZoUVT\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"validate_template\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"validate_template\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"validate_template\",\n                        \"proxy\": {\n                            \"id\": \"PromptTemplate-ZoUVT\",\n                            \"field\": \"validate_template\"\n                        }\n                    },\n                    \"ai_prefix_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"ai_prefix\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"AI\",\n                        \"l2_name\": \"ai_prefix\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"ai_prefix\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"ai_prefix\"\n                        }\n                    },\n                    \"input_key_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"memory_key_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"chat_history\",\n                        \"l2_name\": \"memory_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"memory_key\"\n                        }\n                    },\n                    \"output_key_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"chat_memory_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"chat_memory\",\n                        \"show\": true,\n                        \"type\": \"BaseChatMessageHistory\",\n                        \"l2_name\": \"chat_memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chat_memory\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"chat_memory\"\n                        }\n                    },\n                    \"human_prefix_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"human_prefix\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Human\",\n                        \"l2_name\": \"human_prefix\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"human_prefix\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"human_prefix\"\n                        }\n                    },\n                    \"return_messages_ConversationBufferMemory-lI5Pt\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_messages\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"return_messages\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_messages\",\n                        \"proxy\": {\n                            \"id\": \"ConversationBufferMemory-lI5Pt\",\n                            \"field\": \"return_messages\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-1a993\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1a993\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"LLMChain-wRz0c\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1452.9429776850677,\n                                    \"y\": -1823.729943530931\n                                },\n                                \"data\": {\n                                    \"id\": \"LLMChain-wRz0c\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"LLMChain\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"prompt\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"prompt\",\n                                                \"show\": true,\n                                                \"type\": \"BasePromptTemplate\",\n                                                \"l2_name\": \"prompt\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"llm_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm_kwargs\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"llm_kwargs\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"llm_kwargs\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"text\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"output_parser\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": false,\n                                                \"type\": \"BaseLLMOutputParser\",\n                                                \"l2_name\": \"output_parser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"return_final_only\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_final_only\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_final_only\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_final_only\"\n                                            }\n                                        },\n                                        \"description\": \"Chain to run queries against LLMs.\",\n                                        \"base_classes\": [\n                                            \"Chain\",\n                                            \"LLMChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"LLMChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/foundational/llm_chain\"\n                                    },\n                                    \"type\": \"LLMChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1452.9429776850677,\n                                    \"y\": -1823.729943530931\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 418,\n                                \"id\": \"PromptTemplate-ZoUVT\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 679.2448826071954,\n                                    \"y\": -1404.485160984465\n                                },\n                                \"data\": {\n                                    \"id\": \"PromptTemplate-ZoUVT\",\n                                    \"node\": {\n                                        \"name\": \"\",\n                                        \"template\": {\n                                            \"_type\": \"PromptTemplate\",\n                                            \"input\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input\"\n                                            },\n                                            \"template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template\",\n                                                \"show\": true,\n                                                \"type\": \"prompt\",\n                                                \"value\": \"System：\\n你将扮演一个科技公司的面试官，面试者是一名产品经理，提出 3 个犀利的问题。\\n请注意：\\n- 每次只问一个问题\\n- 面试者回答问题后请简短点评一下，然后问下一个问题，不要试图纠正候选人的错误；\\n- 如果你认为用户连续几次回答的都不对，就少问一点；\\n- 问完最后一个问题后，你可以问这样一个问题：上一份工作为什么离职？用户回答该问题后，请表示理解与支持，并停止与面试者的对话。若面试者继续说话你可以礼貌拒绝。\\n\\n以下是你们的对话记录\\n\\n{chat_history}\\n\\n面试者：{input}\\n\\n你的回答：\",\n                                                \"l2_name\": \"template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template\"\n                                            },\n                                            \"chat_history\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"chat_history\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": true,\n                                                \"input_types\": [\n                                                    \"Document\",\n                                                    \"BaseOutputParser\"\n                                                ],\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chat_history\"\n                                            },\n                                            \"output_parser\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_parser\",\n                                                \"show\": false,\n                                                \"type\": \"BaseOutputParser\",\n                                                \"l2_name\": \"output_parser\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_parser\"\n                                            },\n                                            \"input_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"input_variables\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": [\n                                                    \"chat_history\",\n                                                    \"input\"\n                                                ],\n                                                \"l2_name\": \"input_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_variables\"\n                                            },\n                                            \"template_format\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"template_format\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"f-string\",\n                                                \"l2_name\": \"template_format\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"template_format\"\n                                            },\n                                            \"partial_variables\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"partial_variables\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"partial_variables\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"partial_variables\"\n                                            },\n                                            \"validate_template\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"validate_template\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"validate_template\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"validate_template\"\n                                            }\n                                        },\n                                        \"description\": \"Schema to represent a prompt for an LLM.\",\n                                        \"base_classes\": [\n                                            \"PromptTemplate\",\n                                            \"StringPromptTemplate\",\n                                            \"BasePromptTemplate\"\n                                        ],\n                                        \"display_name\": \"PromptTemplate\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {\n                                            \"template\": [\n                                                \"chat_history\",\n                                                \"input\"\n                                            ]\n                                        },\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\n                                        \"field_formatters\": {\n                                            \"formatters\": {\n                                                \"openai_api_key\": {}\n                                            },\n                                            \"base_formatters\": {\n                                                \"dict\": {},\n                                                \"list\": {},\n                                                \"show\": {},\n                                                \"union\": {},\n                                                \"kwargs\": {},\n                                                \"default\": {},\n                                                \"headers\": {},\n                                                \"optional\": {},\n                                                \"password\": {},\n                                                \"multiline\": {},\n                                                \"model_fields\": {\n                                                    \"MODEL_DICT\": {\n                                                        \"OpenAI\": [\n                                                            \"text-davinci-003\",\n                                                            \"text-davinci-002\",\n                                                            \"text-curie-001\",\n                                                            \"text-babbage-001\",\n                                                            \"text-ada-001\"\n                                                        ],\n                                                        \"Anthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ],\n                                                        \"ChatOpenAI\": [\n                                                            \"gpt-3.5-turbo-0613\",\n                                                            \"gpt-3.5-turbo\",\n                                                            \"gpt-3.5-turbo-16k-0613\",\n                                                            \"gpt-3.5-turbo-16k\",\n                                                            \"gpt-4-0613\",\n                                                            \"gpt-4-32k-0613\",\n                                                            \"gpt-4\",\n                                                            \"gpt-4-32k\"\n                                                        ],\n                                                        \"ChatAnthropic\": [\n                                                            \"claude-v1\",\n                                                            \"claude-v1-100k\",\n                                                            \"claude-instant-v1\",\n                                                            \"claude-instant-v1-100k\",\n                                                            \"claude-v1.3\",\n                                                            \"claude-v1.3-100k\",\n                                                            \"claude-v1.2\",\n                                                            \"claude-v1.0\",\n                                                            \"claude-instant-v1.1\",\n                                                            \"claude-instant-v1.1-100k\",\n                                                            \"claude-instant-v1.0\"\n                                                        ]\n                                                    }\n                                                },\n                                                \"dict_code_file\": {}\n                                            }\n                                        }\n                                    },\n                                    \"type\": \"PromptTemplate\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 679.2448826071954,\n                                    \"y\": -1404.485160984465\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 526,\n                                \"id\": \"ConversationBufferMemory-lI5Pt\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 275.26369845498505,\n                                    \"y\": -1967.2256382433638\n                                },\n                                \"data\": {\n                                    \"id\": \"ConversationBufferMemory-lI5Pt\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"ConversationBufferMemory\",\n                                            \"ai_prefix\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"ai_prefix\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"AI\",\n                                                \"l2_name\": \"ai_prefix\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"ai_prefix\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"The variable to be used as Chat Input when more than one variable is available.\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"memory_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"chat_history\",\n                                                \"l2_name\": \"memory_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory_key\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"chat_memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"chat_memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseChatMessageHistory\",\n                                                \"l2_name\": \"chat_memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chat_memory\"\n                                            },\n                                            \"human_prefix\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"human_prefix\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Human\",\n                                                \"l2_name\": \"human_prefix\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"human_prefix\"\n                                            },\n                                            \"return_messages\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_messages\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"return_messages\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_messages\"\n                                            }\n                                        },\n                                        \"description\": \"Buffer for storing conversation memory.\",\n                                        \"base_classes\": [\n                                            \"BaseChatMemory\",\n                                            \"ConversationBufferMemory\",\n                                            \"BaseMemory\"\n                                        ],\n                                        \"display_name\": \"ConversationBufferMemory\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/memory/how_to/buffer\"\n                                    },\n                                    \"type\": \"ConversationBufferMemory\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 275.26369845498505,\n                                    \"y\": -1967.2256382433638\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-1a993\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 737.6920763029101,\n                                    \"y\": -2366.8833957378292\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false,\n                                        \"official\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-1a993\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 737.6920763029101,\n                                    \"y\": -2366.8833957378292\n                                },\n                                \"dragging\": false\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"PromptTemplate-ZoUVT\",\n                                \"target\": \"LLMChain-wRz0c\",\n                                \"sourceHandle\": \"PromptTemplate|PromptTemplate-ZoUVT|PromptTemplate|StringPromptTemplate|BasePromptTemplate\",\n                                \"targetHandle\": \"BasePromptTemplate|prompt|LLMChain-wRz0c\",\n                                \"id\": \"reactflow__edge-PromptTemplate-ZoUVTPromptTemplate|PromptTemplate-ZoUVT|PromptTemplate|StringPromptTemplate|BasePromptTemplate-LLMChain-wRz0cBasePromptTemplate|prompt|LLMChain-wRz0c\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ConversationBufferMemory-lI5Pt\",\n                                \"target\": \"LLMChain-wRz0c\",\n                                \"sourceHandle\": \"ConversationBufferMemory|ConversationBufferMemory-lI5Pt|BaseChatMemory|ConversationBufferMemory|BaseMemory\",\n                                \"targetHandle\": \"BaseMemory|memory|LLMChain-wRz0c\",\n                                \"id\": \"reactflow__edge-ConversationBufferMemory-lI5PtConversationBufferMemory|ConversationBufferMemory-lI5Pt|BaseChatMemory|ConversationBufferMemory|BaseMemory-LLMChain-wRz0cBaseMemory|memory|LLMChain-wRz0c\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-1a993\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-1a993|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"LLMChain-wRz0c\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|LLMChain-wRz0c\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-1a993ChatOpenAI|ChatOpenAI-1a993|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-LLMChain-wRz0cBaseLanguageModel|llm|LLMChain-wRz0c\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"5b80b\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"输入网址进行问答\": {\n            \"id\": \"RetrievalQA-222c1\",\n            \"type\": \"RetrievalQA\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"输入网址进行问答\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"RetrievalQA\",\n                    \"Chain\",\n                    \"BaseRetrievalQA\",\n                    \"function\"\n                ],\n                \"description\": \"Chain for question-answering against an index.\",\n                \"template\": {\n                    \"token_max_CombineDocsChain-RCPNA\": {\n                        \"l2\": false,\n                        \"info\": \"当前只对stuff 生效\",\n                        \"list\": false,\n                        \"name\": \"token_max\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": -1,\n                        \"l2_name\": \"token_max\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"token_max\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-RCPNA\",\n                            \"field\": \"token_max\"\n                        }\n                    },\n                    \"chain_type_CombineDocsChain-RCPNA\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"l2_name\": \"chain_type\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-RCPNA\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"drop_old_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"drop_old\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"drop_old\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"drop_old\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"drop_old\"\n                        }\n                    },\n                    \"metadatas_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"index_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"index_params\"\n                        }\n                    },\n                    \"search_kwargs_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"search_params_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"search_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"search_params\"\n                        }\n                    },\n                    \"collection_name_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"collection_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"选择知识库\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"collection_id\": \"\",\n                        \"display_name\": \"collection_name\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"collection_name\"\n                        }\n                    },\n                    \"connection_args_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"connection_args\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"\",\n                        \"l2_name\": \"connection_args\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"connection_args\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"connection_args\"\n                        }\n                    },\n                    \"consistency_level_Milvus-CWpae\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"consistency_level\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Session\",\n                        \"l2_name\": \"consistency_level\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"consistency_level\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-CWpae\",\n                            \"field\": \"consistency_level\"\n                        }\n                    },\n                    \"tags_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"memory_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory\",\n                        \"show\": true,\n                        \"type\": \"BaseMemory\",\n                        \"l2_name\": \"memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"memory\"\n                        }\n                    },\n                    \"verbose_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"query\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"input_node_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"output_key_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"result\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"return_source_documents_RetrievalQA-x5nap\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_source_documents\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-x5nap\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"metadata_WebBaseLoader-af6db\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"WebBaseLoader-af6db\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"web_path_WebBaseLoader-af6db\": {\n                        \"l2\": true,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"web_path\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"网址\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Web Page\",\n                        \"proxy\": {\n                            \"id\": \"WebBaseLoader-af6db\",\n                            \"field\": \"web_path\"\n                        }\n                    },\n                    \"proxy_url_OpenAIProxyEmbedding-1771b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"proxy_url\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"http://43.133.35.137:8080\",\n                        \"display_name\": \"proxy_url\",\n                        \"proxy\": {\n                            \"id\": \"OpenAIProxyEmbedding-1771b\",\n                            \"field\": \"proxy_url\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"async_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": true,\n                        \"file_path\": \"\",\n                        \"password\": false,\n                        \"name\": \"cache\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"display_name\": \"Cache\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_headers\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"default_query\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"http_client\",\n                        \"advanced\": false,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"Any\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 2,\n                        \"password\": false,\n                        \"name\": \"max_retries\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": true,\n                        \"name\": \"max_tokens\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"metadata_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"metadata\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"model_kwargs\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"code\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"model_name_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"password\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"name\": \"model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"n_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": 1,\n                        \"password\": false,\n                        \"name\": \"n\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"int\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"N\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_api_base\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": \"\",\n                        \"password\": true,\n                        \"name\": \"openai_api_key\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_organization\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"openai_proxy\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"request_timeout\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"value\": false,\n                        \"password\": false,\n                        \"name\": \"streaming\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tags\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": true,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": true,\n                        \"multiline\": false,\n                        \"value\": 0.7,\n                        \"password\": false,\n                        \"name\": \"temperature\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"float\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"str\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-04157\": {\n                        \"required\": false,\n                        \"placeholder\": \"\",\n                        \"show\": false,\n                        \"multiline\": false,\n                        \"password\": false,\n                        \"name\": \"verbose\",\n                        \"advanced\": true,\n                        \"dynamic\": false,\n                        \"info\": \"\",\n                        \"title_case\": true,\n                        \"model_config\": {},\n                        \"type\": \"bool\",\n                        \"list\": false,\n                        \"file_path\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-04157\",\n                            \"field\": \"verbose\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 376,\n                                \"id\": \"CombineDocsChain-RCPNA\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1020.2314763495577,\n                                    \"y\": -2443.3442844414917\n                                },\n                                \"data\": {\n                                    \"id\": \"CombineDocsChain-RCPNA\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"load_qa_chain\",\n                                            \"token_max\": {\n                                                \"l2\": false,\n                                                \"info\": \"当前只对stuff 生效\",\n                                                \"list\": false,\n                                                \"name\": \"token_max\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": -1,\n                                                \"l2_name\": \"token_max\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"token_max\"\n                                            },\n                                            \"chain_type\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"l2_name\": \"chain_type\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            }\n                                        },\n                                        \"description\": \"Load question answering chain.\",\n                                        \"base_classes\": [\n                                            \"BaseCombineDocumentsChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"CombineDocsChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"CombineDocsChain\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1020.2314763495577,\n                                    \"y\": -2443.3442844414917\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 346,\n                                \"id\": \"Milvus-CWpae\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1032.922985028084,\n                                    \"y\": -1900.7640809510517\n                                },\n                                \"data\": {\n                                    \"id\": \"Milvus-CWpae\",\n                                    \"node\": {\n                                        \"l2_name\": \"知识库\",\n                                        \"template\": {\n                                            \"_type\": \"Milvus\",\n                                            \"drop_old\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"drop_old\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"drop_old\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"drop_old\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"index_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_params\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"search_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"search_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_params\"\n                                            },\n                                            \"collection_name\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"collection_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"选择知识库\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"collection_id\": \"\",\n                                                \"display_name\": \"collection_name\"\n                                            },\n                                            \"connection_args\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"connection_args\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"connection_args\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"connection_args\"\n                                            },\n                                            \"consistency_level\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"consistency_level\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Session\",\n                                                \"l2_name\": \"consistency_level\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"consistency_level\"\n                                            }\n                                        },\n                                        \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n                                        \"base_classes\": [\n                                            \"Milvus\",\n                                            \"VectorStore\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"Milvus\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"Milvus\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1032.922985028084,\n                                    \"y\": -1900.7640809510517\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"RetrievalQA-x5nap\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 1696.5027865067518,\n                                    \"y\": -2280.471637513691\n                                },\n                                \"data\": {\n                                    \"id\": \"RetrievalQA-x5nap\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"RetrievalQA\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"query\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"result\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"combine_documents_chain\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_documents_chain\",\n                                                \"show\": true,\n                                                \"type\": \"BaseCombineDocumentsChain\",\n                                                \"l2_name\": \"combine_documents_chain\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_source_documents\"\n                                            }\n                                        },\n                                        \"description\": \"Chain for question-answering against an index.\",\n                                        \"base_classes\": [\n                                            \"RetrievalQA\",\n                                            \"Chain\",\n                                            \"BaseRetrievalQA\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"RetrievalQA\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n                                    },\n                                    \"type\": \"RetrievalQA\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1696.5027865067518,\n                                    \"y\": -2280.471637513691\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 356,\n                                \"id\": \"WebBaseLoader-af6db\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 508.27376400644664,\n                                    \"y\": -1916.3544587452286\n                                },\n                                \"data\": {\n                                    \"id\": \"WebBaseLoader-af6db\",\n                                    \"node\": {\n                                        \"l2_name\": \"输入网址\",\n                                        \"template\": {\n                                            \"_type\": \"WebBaseLoader\",\n                                            \"metadata\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"web_path\": {\n                                                \"l2\": true,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"web_path\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"网址\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Web Page\"\n                                            }\n                                        },\n                                        \"description\": \"Load HTML pages using `urllib` and parse them with `BeautifulSoup'.\",\n                                        \"base_classes\": [\n                                            \"Document\"\n                                        ],\n                                        \"display_name\": \"WebBaseLoader\",\n                                        \"output_types\": [\n                                            \"Document\"\n                                        ],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/web_base\"\n                                    },\n                                    \"type\": \"WebBaseLoader\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 508.27376400644664,\n                                    \"y\": -1916.3544587452286\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 172,\n                                \"id\": \"OpenAIProxyEmbedding-1771b\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 520.9704836522232,\n                                    \"y\": -1519.5819698147122\n                                },\n                                \"data\": {\n                                    \"id\": \"OpenAIProxyEmbedding-1771b\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"proxy_embedding\",\n                                            \"proxy_url\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"proxy_url\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"http://43.133.35.137:8080\",\n                                                \"display_name\": \"proxy_url\"\n                                            }\n                                        },\n                                        \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n                                        \"base_classes\": [\n                                            \"Embeddings\"\n                                        ],\n                                        \"display_name\": \"OpenAIProxyEmbedding\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"OpenAIProxyEmbedding\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 520.9704836522232,\n                                    \"y\": -1519.5819698147122\n                                },\n                                \"dragging\": false\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-04157\",\n                                \"type\": \"genericNode\",\n                                \"position\": {\n                                    \"x\": 487.6734875953049,\n                                    \"y\": -2569.9027779626213\n                                },\n                                \"data\": {\n                                    \"type\": \"ChatOpenAI\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"callbacks\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Callbacks\"\n                                            },\n                                            \"async_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"async_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Async Client\"\n                                            },\n                                            \"cache\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": true,\n                                                \"file_path\": \"\",\n                                                \"password\": false,\n                                                \"name\": \"cache\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"display_name\": \"Cache\"\n                                            },\n                                            \"client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Client\"\n                                            },\n                                            \"default_headers\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_headers\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Headers\"\n                                            },\n                                            \"default_query\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"default_query\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Default Query\"\n                                            },\n                                            \"http_client\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"http_client\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"Any\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Http Client\"\n                                            },\n                                            \"max_retries\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 2,\n                                                \"password\": false,\n                                                \"name\": \"max_retries\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Retries\"\n                                            },\n                                            \"max_tokens\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": true,\n                                                \"name\": \"max_tokens\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Max Tokens\"\n                                            },\n                                            \"metadata\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"model_kwargs\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"advanced\": true,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"code\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Kwargs\"\n                                            },\n                                            \"model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"password\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"name\": \"model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Model Name\"\n                                            },\n                                            \"n\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": 1,\n                                                \"password\": false,\n                                                \"name\": \"n\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"int\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"N\"\n                                            },\n                                            \"name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Name\"\n                                            },\n                                            \"openai_api_base\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_api_key\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": \"\",\n                                                \"password\": true,\n                                                \"name\": \"openai_api_key\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_organization\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"openai_proxy\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\"\n                                            },\n                                            \"request_timeout\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Request Timeout\"\n                                            },\n                                            \"streaming\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"value\": false,\n                                                \"password\": false,\n                                                \"name\": \"streaming\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Streaming\"\n                                            },\n                                            \"tags\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": true,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tags\"\n                                            },\n                                            \"temperature\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": true,\n                                                \"multiline\": false,\n                                                \"value\": 0.7,\n                                                \"password\": false,\n                                                \"name\": \"temperature\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"float\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Temperature\"\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"str\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\"\n                                            },\n                                            \"verbose\": {\n                                                \"required\": false,\n                                                \"placeholder\": \"\",\n                                                \"show\": false,\n                                                \"multiline\": false,\n                                                \"password\": false,\n                                                \"name\": \"verbose\",\n                                                \"advanced\": false,\n                                                \"dynamic\": false,\n                                                \"info\": \"\",\n                                                \"title_case\": true,\n                                                \"model_config\": {},\n                                                \"type\": \"bool\",\n                                                \"list\": false,\n                                                \"file_path\": \"\",\n                                                \"display_name\": \"Verbose\"\n                                            },\n                                            \"_type\": \"ChatOpenAI\"\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"custom_fields\": {},\n                                        \"output_types\": [],\n                                        \"field_formatters\": {},\n                                        \"beta\": false,\n                                        \"official\": false\n                                    },\n                                    \"id\": \"ChatOpenAI-04157\",\n                                    \"value\": null\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 487.6734875953049,\n                                    \"y\": -2569.9027779626213\n                                },\n                                \"dragging\": false\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"source\": \"CombineDocsChain-RCPNA\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function\",\n                                \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-CombineDocsChain-RCPNACombineDocsChain|CombineDocsChain-RCPNA|BaseCombineDocumentsChain|function-RetrievalQA-x5napBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"Milvus-CWpae\",\n                                \"target\": \"RetrievalQA-x5nap\",\n                                \"sourceHandle\": \"Milvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"id\": \"reactflow__edge-Milvus-CWpaeMilvus|Milvus-CWpae|Milvus|VectorStore|BaseRetriever|VectorStoreRetriever-RetrievalQA-x5napBaseRetriever|retriever|RetrievalQA-x5nap\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"WebBaseLoader-af6db\",\n                                \"target\": \"Milvus-CWpae\",\n                                \"sourceHandle\": \"WebBaseLoader|WebBaseLoader-af6db|Document\",\n                                \"targetHandle\": \"Document|documents|Milvus-CWpae\",\n                                \"id\": \"reactflow__edge-WebBaseLoader-af6dbWebBaseLoader|WebBaseLoader-af6db|Document-Milvus-CWpaeDocument|documents|Milvus-CWpae\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"OpenAIProxyEmbedding-1771b\",\n                                \"target\": \"Milvus-CWpae\",\n                                \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings\",\n                                \"targetHandle\": \"Embeddings|embedding|Milvus-CWpae\",\n                                \"id\": \"reactflow__edge-OpenAIProxyEmbedding-1771bOpenAIProxyEmbedding|OpenAIProxyEmbedding-1771b|Embeddings-Milvus-CWpaeEmbeddings|embedding|Milvus-CWpae\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-gray-900 \",\n                                \"animated\": false,\n                                \"selected\": true\n                            },\n                            {\n                                \"source\": \"ChatOpenAI-04157\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-04157|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"target\": \"CombineDocsChain-RCPNA\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"animated\": true,\n                                \"id\": \"reactflow__edge-ChatOpenAI-04157ChatOpenAI|ChatOpenAI-04157|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-RCPNABaseLanguageModel|llm|CombineDocsChain-RCPNA\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"967b1\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    },\n    {\n        \"单文档问答\": {\n            \"id\": \"RetrievalQA-6a8ad\",\n            \"type\": \"InputFileNode\",\n            \"node\": {\n                \"output_types\": [],\n                \"display_name\": \"单文档问答\",\n                \"documentation\": \"\",\n                \"base_classes\": [\n                    \"BaseRetrievalQA\",\n                    \"RetrievalQA\",\n                    \"Chain\",\n                    \"function\"\n                ],\n                \"description\": \"Chain for question-answering against an index.\",\n                \"template\": {\n                    \"token_max_CombineDocsChain-Pud2p\": {\n                        \"l2\": false,\n                        \"info\": \"当前只对stuff 生效\",\n                        \"list\": false,\n                        \"name\": \"token_max\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": -1,\n                        \"l2_name\": \"token_max\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"token_max\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-Pud2p\",\n                            \"field\": \"token_max\"\n                        }\n                    },\n                    \"chain_type_CombineDocsChain-Pud2p\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"chain_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"stuff\",\n                        \"l2_name\": \"chain_type\",\n                        \"options\": [\n                            \"stuff\",\n                            \"map_reduce\",\n                            \"map_rerank\",\n                            \"refine\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"chain_type\",\n                        \"proxy\": {\n                            \"id\": \"CombineDocsChain-Pud2p\",\n                            \"field\": \"chain_type\"\n                        }\n                    },\n                    \"tags_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"l2_name\": \"tags\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"tags\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"memory_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"memory\",\n                        \"show\": true,\n                        \"type\": \"BaseMemory\",\n                        \"l2_name\": \"memory\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"memory\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"memory\"\n                        }\n                    },\n                    \"verbose_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"l2_name\": \"verbose\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"verbose\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadata\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadata\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                        \"l2_name\": \"callbacks\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"callbacks\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"input_key_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"query\",\n                        \"l2_name\": \"input_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"input_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"input_key\"\n                        }\n                    },\n                    \"input_node_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"input_node\",\n                        \"show\": true,\n                        \"type\": \"input\",\n                        \"l2_name\": \"input_node\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Preset Question\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"input_node\"\n                        }\n                    },\n                    \"output_key_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"output_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"result\",\n                        \"l2_name\": \"output_key\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"output_key\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"output_key\"\n                        }\n                    },\n                    \"return_source_documents_RetrievalQA-qH6Mk\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"return_source_documents\",\n                        \"show\": true,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"l2_name\": \"return_source_documents\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"return_source_documents\",\n                        \"proxy\": {\n                            \"id\": \"RetrievalQA-qH6Mk\",\n                            \"field\": \"return_source_documents\"\n                        }\n                    },\n                    \"proxy_url_OpenAIProxyEmbedding-yvld7\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"proxy_url\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"proxy_url\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"http://43.133.35.137:8080\",\n                        \"display_name\": \"proxy_url\",\n                        \"proxy\": {\n                            \"id\": \"OpenAIProxyEmbedding-yvld7\",\n                            \"field\": \"proxy_url\"\n                        }\n                    },\n                    \"file_path_InputFileNode-jdLkB\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"file_path\",\n                        \"show\": true,\n                        \"type\": \"file\",\n                        \"value\": \"\",\n                        \"l2_name\": \"file_path\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"suffixes\": [\n                            \".html\",\n                            \".md\",\n                            \".txt\",\n                            \".jpg\",\n                            \".png\",\n                            \".jpeg\",\n                            \".csv\",\n                            \".doc\",\n                            \".docx\",\n                            \".pdf\",\n                            \".ppt\",\n                            \".pptx\",\n                            \".xlsx\",\n                            \".tiff\"\n                        ],\n                        \"fileTypes\": [\n                            \"html\",\n                            \"md\",\n                            \"txt\",\n                            \"jpg\",\n                            \"png\",\n                            \"jpeg\",\n                            \"csv\",\n                            \"doc\",\n                            \"docx\",\n                            \"pdf\",\n                            \"ppt\",\n                            \"pptx\",\n                            \"tiff\",\n                            \"xlsx\"\n                        ],\n                        \"file_path\": null,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"输入内容\",\n                        \"proxy\": {\n                            \"id\": \"InputFileNode-jdLkB\",\n                            \"field\": \"file_path\"\n                        }\n                    },\n                    \"drop_old_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"drop_old\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"l2_name\": \"drop_old\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"drop_old\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"drop_old\"\n                        }\n                    },\n                    \"metadatas_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"metadatas\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"metadatas\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"metadatas\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"metadatas\"\n                        }\n                    },\n                    \"index_params_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"index_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"index_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"index_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"index_params\"\n                        }\n                    },\n                    \"search_kwargs_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"l2_name\": \"search_kwargs\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_kwargs\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"search_kwargs\"\n                        }\n                    },\n                    \"search_params_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"search_params\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"l2_name\": \"search_params\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"search_params\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"search_params\"\n                        }\n                    },\n                    \"collection_name_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"collection_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"l2_name\": \"collection_name\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"collection_name\",\n                        \"collection_id\": \"\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"collection_name\"\n                        }\n                    },\n                    \"connection_args_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"connection_args\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"\",\n                        \"l2_name\": \"connection_args\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"connection_args\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"connection_args\"\n                        }\n                    },\n                    \"consistency_level_Milvus-T3kRH\": {\n                        \"l2\": false,\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"consistency_level\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"value\": \"Session\",\n                        \"l2_name\": \"consistency_level\",\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"consistency_level\",\n                        \"proxy\": {\n                            \"id\": \"Milvus-T3kRH\",\n                            \"field\": \"consistency_level\"\n                        }\n                    },\n                    \"metadata_ElemUnstructuredLoaderV0-LAGXM\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"value\": \"{}\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"proxy\": {\n                            \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"unstructured_api_url_ElemUnstructuredLoaderV0-LAGXM\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"unstructured_api_url\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"advanced\": false,\n                        \"password\": true,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"unstructured_api_url\",\n                        \"proxy\": {\n                            \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                            \"field\": \"unstructured_api_url\"\n                        }\n                    },\n                    \"chunk_size_RecursiveCharacterTextSplitter-a7fc9\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"chunk_size\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": 1000,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Chunk Size\",\n                        \"proxy\": {\n                            \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                            \"field\": \"chunk_size\"\n                        }\n                    },\n                    \"separators_RecursiveCharacterTextSplitter-a7fc9\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"separators\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\\\\n\\\\n\",\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Separator\",\n                        \"proxy\": {\n                            \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                            \"field\": \"separators\"\n                        }\n                    },\n                    \"chunk_overlap_RecursiveCharacterTextSplitter-a7fc9\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"chunk_overlap\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"value\": 200,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Chunk Overlap\",\n                        \"proxy\": {\n                            \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                            \"field\": \"chunk_overlap\"\n                        }\n                    },\n                    \"separator_type_RecursiveCharacterTextSplitter-a7fc9\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"separator_type\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"Text\",\n                        \"options\": [\n                            \"Text\",\n                            \"cobol\",\n                            \"cpp\",\n                            \"csharp\",\n                            \"go\",\n                            \"html\",\n                            \"java\",\n                            \"js\",\n                            \"kotlin\",\n                            \"latex\",\n                            \"markdown\",\n                            \"php\",\n                            \"proto\",\n                            \"python\",\n                            \"rst\",\n                            \"ruby\",\n                            \"rust\",\n                            \"scala\",\n                            \"sol\",\n                            \"swift\",\n                            \"ts\"\n                        ],\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": true,\n                        \"multiline\": false,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Separator Type\",\n                        \"proxy\": {\n                            \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                            \"field\": \"separator_type\"\n                        }\n                    },\n                    \"n_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"n\",\n                        \"show\": false,\n                        \"type\": \"int\",\n                        \"value\": 1,\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"N\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"n\"\n                        }\n                    },\n                    \"name_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"name\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Name\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"name\"\n                        }\n                    },\n                    \"tags_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"tags\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Tags\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"tags\"\n                        }\n                    },\n                    \"cache_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"cache\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": true,\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Cache\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"cache\"\n                        }\n                    },\n                    \"client_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"client\",\n                        \"show\": false,\n                        \"type\": \"Any\",\n                        \"dynamic\": false,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Client\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"client\"\n                        }\n                    },\n                    \"verbose_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"verbose\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Verbose\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"verbose\"\n                        }\n                    },\n                    \"metadata_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"metadata\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Metadata\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"metadata\"\n                        }\n                    },\n                    \"callbacks_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"callbacks\",\n                        \"show\": false,\n                        \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                        \"dynamic\": false,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Callbacks\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"callbacks\"\n                        }\n                    },\n                    \"streaming_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"streaming\",\n                        \"show\": false,\n                        \"type\": \"bool\",\n                        \"value\": false,\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Streaming\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"streaming\"\n                        }\n                    },\n                    \"max_tokens_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"max_tokens\",\n                        \"show\": true,\n                        \"type\": \"int\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": true,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Max Tokens\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"max_tokens\"\n                        },\n                        \"value\": \"\"\n                    },\n                    \"model_name_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": true,\n                        \"name\": \"model_name\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"gpt-3.5-turbo-0613\",\n                        \"dynamic\": false,\n                        \"options\": [\n                            \"gpt-3.5-turbo-0613\",\n                            \"gpt-3.5-turbo\",\n                            \"gpt-3.5-turbo-16k-0613\",\n                            \"gpt-3.5-turbo-16k\",\n                            \"gpt-4-0613\",\n                            \"gpt-4-32k-0613\",\n                            \"gpt-4\",\n                            \"gpt-4-32k\",\n                            \"gpt-4-1106-preview\"\n                        ],\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Model Name\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"model_name\"\n                        }\n                    },\n                    \"http_client_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"http_client\",\n                        \"show\": false,\n                        \"type\": \"Any\",\n                        \"dynamic\": false,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Http Client\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"http_client\"\n                        }\n                    },\n                    \"max_retries_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"max_retries\",\n                        \"show\": false,\n                        \"type\": \"int\",\n                        \"value\": 2,\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Max Retries\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"max_retries\"\n                        }\n                    },\n                    \"temperature_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"temperature\",\n                        \"show\": true,\n                        \"type\": \"float\",\n                        \"value\": 0.7,\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Temperature\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"temperature\"\n                        }\n                    },\n                    \"async_client_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"async_client\",\n                        \"show\": false,\n                        \"type\": \"Any\",\n                        \"dynamic\": false,\n                        \"advanced\": false,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Async Client\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"async_client\"\n                        }\n                    },\n                    \"model_kwargs_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"model_kwargs\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Model Kwargs\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"model_kwargs\"\n                        }\n                    },\n                    \"openai_proxy_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"openai_proxy\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"OpenAI Proxy\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"openai_proxy\"\n                        }\n                    },\n                    \"default_query_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"default_query\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Default Query\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"default_query\"\n                        }\n                    },\n                    \"openai_api_key_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"openai_api_key\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"value\": \"\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": true,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"OpenAI API Key\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"openai_api_key\"\n                        }\n                    },\n                    \"default_headers_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"default_headers\",\n                        \"show\": false,\n                        \"type\": \"code\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Default Headers\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"default_headers\"\n                        }\n                    },\n                    \"openai_api_base_ChatOpenAI-1579b\": {\n                        \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                        \"list\": false,\n                        \"name\": \"openai_api_base\",\n                        \"show\": true,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"OpenAI API Base\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"openai_api_base\"\n                        }\n                    },\n                    \"request_timeout_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"request_timeout\",\n                        \"show\": false,\n                        \"type\": \"float\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Request Timeout\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"request_timeout\"\n                        }\n                    },\n                    \"openai_organization_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"openai_organization\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"OpenAI Organization\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"openai_organization\"\n                        }\n                    },\n                    \"tiktoken_model_name_ChatOpenAI-1579b\": {\n                        \"info\": \"\",\n                        \"list\": false,\n                        \"name\": \"tiktoken_model_name\",\n                        \"show\": false,\n                        \"type\": \"str\",\n                        \"dynamic\": false,\n                        \"advanced\": true,\n                        \"password\": false,\n                        \"required\": false,\n                        \"file_path\": \"\",\n                        \"multiline\": false,\n                        \"title_case\": true,\n                        \"placeholder\": \"\",\n                        \"display_name\": \"Tiktoken Model Name\",\n                        \"model_config\": {},\n                        \"proxy\": {\n                            \"id\": \"ChatOpenAI-1579b\",\n                            \"field\": \"tiktoken_model_name\"\n                        }\n                    }\n                },\n                \"flow\": {\n                    \"data\": {\n                        \"nodes\": [\n                            {\n                                \"width\": 384,\n                                \"height\": 376,\n                                \"id\": \"CombineDocsChain-Pud2p\",\n                                \"data\": {\n                                    \"id\": \"CombineDocsChain-Pud2p\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"llm\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"llm\",\n                                                \"show\": true,\n                                                \"type\": \"BaseLanguageModel\",\n                                                \"l2_name\": \"llm\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"LLM\"\n                                            },\n                                            \"_type\": \"load_qa_chain\",\n                                            \"token_max\": {\n                                                \"l2\": false,\n                                                \"info\": \"当前只对stuff 生效\",\n                                                \"list\": false,\n                                                \"name\": \"token_max\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": -1,\n                                                \"l2_name\": \"token_max\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"token_max\"\n                                            },\n                                            \"chain_type\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"chain_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"stuff\",\n                                                \"l2_name\": \"chain_type\",\n                                                \"options\": [\n                                                    \"stuff\",\n                                                    \"map_reduce\",\n                                                    \"map_rerank\",\n                                                    \"refine\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"chain_type\"\n                                            }\n                                        },\n                                        \"description\": \"Load question answering chain.\",\n                                        \"base_classes\": [\n                                            \"BaseCombineDocumentsChain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"CombineDocsChain\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"CombineDocsChain\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 1196.5168428585357,\n                                    \"y\": -1921.6230996659683\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1196.5168428585357,\n                                    \"y\": -1921.6230996659683\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 316,\n                                \"id\": \"RetrievalQA-qH6Mk\",\n                                \"data\": {\n                                    \"id\": \"RetrievalQA-qH6Mk\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"tags\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"l2_name\": \"tags\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"tags\"\n                                            },\n                                            \"_type\": \"RetrievalQA\",\n                                            \"memory\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"memory\",\n                                                \"show\": true,\n                                                \"type\": \"BaseMemory\",\n                                                \"l2_name\": \"memory\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"memory\"\n                                            },\n                                            \"verbose\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"l2_name\": \"verbose\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"verbose\"\n                                            },\n                                            \"metadata\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadata\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadata\"\n                                            },\n                                            \"callbacks\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain.callbacks.base.BaseCallbackHandler\",\n                                                \"l2_name\": \"callbacks\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"callbacks\"\n                                            },\n                                            \"input_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"query\",\n                                                \"l2_name\": \"input_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"input_key\"\n                                            },\n                                            \"retriever\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"retriever\",\n                                                \"show\": true,\n                                                \"type\": \"BaseRetriever\",\n                                                \"l2_name\": \"retriever\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"input_node\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"input_node\",\n                                                \"show\": true,\n                                                \"type\": \"input\",\n                                                \"l2_name\": \"input_node\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Preset Question\"\n                                            },\n                                            \"output_key\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"output_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"result\",\n                                                \"l2_name\": \"output_key\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"output_key\"\n                                            },\n                                            \"combine_documents_chain\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"combine_documents_chain\",\n                                                \"show\": true,\n                                                \"type\": \"BaseCombineDocumentsChain\",\n                                                \"l2_name\": \"combine_documents_chain\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"return_source_documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"return_source_documents\",\n                                                \"show\": true,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"l2_name\": \"return_source_documents\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"return_source_documents\"\n                                            }\n                                        },\n                                        \"description\": \"Chain for question-answering against an index.\",\n                                        \"base_classes\": [\n                                            \"BaseRetrievalQA\",\n                                            \"RetrievalQA\",\n                                            \"Chain\",\n                                            \"function\"\n                                        ],\n                                        \"display_name\": \"RetrievalQA\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\"\n                                    },\n                                    \"type\": \"RetrievalQA\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 1872.7881530157297,\n                                    \"y\": -1758.750452738167\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1872.7881530157297,\n                                    \"y\": -1758.750452738167\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 172,\n                                \"id\": \"OpenAIProxyEmbedding-yvld7\",\n                                \"data\": {\n                                    \"id\": \"OpenAIProxyEmbedding-yvld7\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"proxy_embedding\",\n                                            \"proxy_url\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"proxy_url\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"proxy_url\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"http://43.133.35.137:8080\",\n                                                \"display_name\": \"proxy_url\"\n                                            }\n                                        },\n                                        \"description\": \" 使用自建的embedding服务使用openai进行embed \",\n                                        \"base_classes\": [\n                                            \"Embeddings\"\n                                        ],\n                                        \"display_name\": \"OpenAIProxyEmbedding\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"OpenAIProxyEmbedding\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 559.1495072972474,\n                                    \"y\": -790.6410754898252\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 559.1495072972474,\n                                    \"y\": -790.6410754898252\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 254,\n                                \"id\": \"InputFileNode-jdLkB\",\n                                \"data\": {\n                                    \"id\": \"InputFileNode-jdLkB\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"InputFileNode\",\n                                            \"file_path\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"file_path\",\n                                                \"show\": true,\n                                                \"type\": \"file\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"file_path\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"suffixes\": [\n                                                    \".html\",\n                                                    \".md\",\n                                                    \".txt\",\n                                                    \".jpg\",\n                                                    \".png\",\n                                                    \".jpeg\",\n                                                    \".csv\",\n                                                    \".doc\",\n                                                    \".docx\",\n                                                    \".pdf\",\n                                                    \".ppt\",\n                                                    \".pptx\",\n                                                    \".xlsx\",\n                                                    \".tiff\"\n                                                ],\n                                                \"fileTypes\": [\n                                                    \"html\",\n                                                    \"md\",\n                                                    \"txt\",\n                                                    \"jpg\",\n                                                    \"png\",\n                                                    \"jpeg\",\n                                                    \"csv\",\n                                                    \"doc\",\n                                                    \"docx\",\n                                                    \"pdf\",\n                                                    \"ppt\",\n                                                    \"pptx\",\n                                                    \"tiff\",\n                                                    \"xlsx\"\n                                                ],\n                                                \"file_path\": null,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"输入内容\"\n                                            }\n                                        },\n                                        \"description\": \"输入节点，用来自动对接输入\",\n                                        \"base_classes\": [\n                                            \"fileNode\"\n                                        ],\n                                        \"display_name\": \"InputFileNode\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"InputFileNode\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": -93.84570908264766,\n                                    \"y\": -1503.8309966323186\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": -93.84570908264766,\n                                    \"y\": -1503.8309966323186\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 346,\n                                \"id\": \"Milvus-T3kRH\",\n                                \"data\": {\n                                    \"id\": \"Milvus-T3kRH\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"Milvus\",\n                                            \"drop_old\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"drop_old\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"l2_name\": \"drop_old\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"drop_old\"\n                                            },\n                                            \"documents\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"l2_name\": \"documents\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Documents\"\n                                            },\n                                            \"embedding\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"embedding\",\n                                                \"show\": true,\n                                                \"type\": \"Embeddings\",\n                                                \"l2_name\": \"embedding\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Embedding\"\n                                            },\n                                            \"metadatas\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"metadatas\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"metadatas\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"metadatas\"\n                                            },\n                                            \"index_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"index_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"index_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"index_params\"\n                                            },\n                                            \"search_kwargs\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"l2_name\": \"search_kwargs\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_kwargs\"\n                                            },\n                                            \"search_params\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"search_params\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"l2_name\": \"search_params\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"search_params\"\n                                            },\n                                            \"collection_name\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"collection_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"collection_name\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"collection_name\",\n                                                \"collection_id\": \"\"\n                                            },\n                                            \"connection_args\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"connection_args\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"\",\n                                                \"l2_name\": \"connection_args\",\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"connection_args\"\n                                            },\n                                            \"consistency_level\": {\n                                                \"l2\": false,\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"consistency_level\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"value\": \"Session\",\n                                                \"l2_name\": \"consistency_level\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"consistency_level\"\n                                            }\n                                        },\n                                        \"description\": \"Create a Milvus collection, indexes it with HNSW, and insert data.\",\n                                        \"base_classes\": [\n                                            \"VectorStore\",\n                                            \"Milvus\",\n                                            \"BaseRetriever\",\n                                            \"VectorStoreRetriever\"\n                                        ],\n                                        \"display_name\": \"Milvus\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"http://192.168.106.116:8030\"\n                                    },\n                                    \"type\": \"Milvus\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 1329.9391213745507,\n                                    \"y\": -1099.88185650176\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 1329.9391213745507,\n                                    \"y\": -1099.88185650176\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 392,\n                                \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                                \"data\": {\n                                    \"id\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"ElemUnstructuredLoaderV0\",\n                                            \"metadata\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"value\": \"{}\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Metadata\"\n                                            },\n                                            \"file_path\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"file_path\",\n                                                \"show\": true,\n                                                \"type\": \"fileNode\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"suffixes\": [\n                                                    \".html\",\n                                                    \".md\",\n                                                    \".txt\",\n                                                    \".jpg\",\n                                                    \".png\",\n                                                    \".jpeg\",\n                                                    \".csv\",\n                                                    \".doc\",\n                                                    \".docx\",\n                                                    \".pdf\",\n                                                    \".ppt\",\n                                                    \".pptx\",\n                                                    \".xlsx\",\n                                                    \".tiff\"\n                                                ],\n                                                \"fileTypes\": [\n                                                    \"html\",\n                                                    \"md\",\n                                                    \"txt\",\n                                                    \"jpg\",\n                                                    \"png\",\n                                                    \"jpeg\",\n                                                    \"csv\",\n                                                    \"doc\",\n                                                    \"docx\",\n                                                    \"pdf\",\n                                                    \"ppt\",\n                                                    \"pptx\",\n                                                    \"tiff\",\n                                                    \"xlsx\"\n                                                ],\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"unstructured_api_url\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"unstructured_api_url\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"advanced\": false,\n                                                \"password\": true,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"unstructured_api_url\"\n                                            }\n                                        },\n                                        \"description\": \"Loads a PDF with pypdf and chunks at character level. dummy version\",\n                                        \"base_classes\": [\n                                            \"Document\"\n                                        ],\n                                        \"display_name\": \"ElemUnstructuredLoaderV0\",\n                                        \"output_types\": [\n                                            \"Document\"\n                                        ],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"\"\n                                    },\n                                    \"type\": \"ElemUnstructuredLoaderV0\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 344.1888604075044,\n                                    \"y\": -1515.628333041525\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 344.1888604075044,\n                                    \"y\": -1515.628333041525\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 540,\n                                \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                                \"data\": {\n                                    \"id\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                                    \"node\": {\n                                        \"template\": {\n                                            \"_type\": \"RecursiveCharacterTextSplitter\",\n                                            \"documents\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"documents\",\n                                                \"show\": true,\n                                                \"type\": \"Document\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\"\n                                            },\n                                            \"chunk_size\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"chunk_size\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": 1000,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Chunk Size\"\n                                            },\n                                            \"separators\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"separators\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\\\\n\\\\n\",\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Separator\"\n                                            },\n                                            \"chunk_overlap\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"chunk_overlap\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"value\": 200,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Chunk Overlap\"\n                                            },\n                                            \"separator_type\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"separator_type\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"Text\",\n                                                \"options\": [\n                                                    \"Text\",\n                                                    \"cobol\",\n                                                    \"cpp\",\n                                                    \"csharp\",\n                                                    \"go\",\n                                                    \"html\",\n                                                    \"java\",\n                                                    \"js\",\n                                                    \"kotlin\",\n                                                    \"latex\",\n                                                    \"markdown\",\n                                                    \"php\",\n                                                    \"proto\",\n                                                    \"python\",\n                                                    \"rst\",\n                                                    \"ruby\",\n                                                    \"rust\",\n                                                    \"scala\",\n                                                    \"sol\",\n                                                    \"swift\",\n                                                    \"ts\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": true,\n                                                \"multiline\": false,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Separator Type\"\n                                            }\n                                        },\n                                        \"description\": \"Splitting text by recursively look at characters.\",\n                                        \"base_classes\": [\n                                            \"Document\"\n                                        ],\n                                        \"display_name\": \"RecursiveCharacterTextSplitter\",\n                                        \"output_types\": [\n                                            \"Document\"\n                                        ],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter\"\n                                    },\n                                    \"type\": \"RecursiveCharacterTextSplitter\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 813.860681674371,\n                                    \"y\": -1470.0417352310492\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 813.860681674371,\n                                    \"y\": -1470.0417352310492\n                                }\n                            },\n                            {\n                                \"width\": 384,\n                                \"height\": 606,\n                                \"id\": \"ChatOpenAI-1579b\",\n                                \"data\": {\n                                    \"id\": \"ChatOpenAI-1579b\",\n                                    \"node\": {\n                                        \"beta\": false,\n                                        \"official\": false,\n                                        \"template\": {\n                                            \"n\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"n\",\n                                                \"show\": false,\n                                                \"type\": \"int\",\n                                                \"value\": 1,\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"N\",\n                                                \"model_config\": {}\n                                            },\n                                            \"name\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"name\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Name\",\n                                                \"model_config\": {}\n                                            },\n                                            \"tags\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"tags\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Tags\",\n                                                \"model_config\": {}\n                                            },\n                                            \"_type\": \"ChatOpenAI\",\n                                            \"cache\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"cache\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": true,\n                                                \"dynamic\": false,\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Cache\",\n                                                \"model_config\": {}\n                                            },\n                                            \"client\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"client\",\n                                                \"show\": false,\n                                                \"type\": \"Any\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Client\",\n                                                \"model_config\": {}\n                                            },\n                                            \"verbose\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"verbose\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Verbose\",\n                                                \"model_config\": {}\n                                            },\n                                            \"metadata\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"metadata\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Metadata\",\n                                                \"model_config\": {}\n                                            },\n                                            \"callbacks\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"callbacks\",\n                                                \"show\": false,\n                                                \"type\": \"langchain_core.callbacks.base.BaseCallbackHandler\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Callbacks\",\n                                                \"model_config\": {}\n                                            },\n                                            \"streaming\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"streaming\",\n                                                \"show\": false,\n                                                \"type\": \"bool\",\n                                                \"value\": false,\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Streaming\",\n                                                \"model_config\": {}\n                                            },\n                                            \"max_tokens\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"max_tokens\",\n                                                \"show\": true,\n                                                \"type\": \"int\",\n                                                \"dynamic\": false,\n                                                \"advanced\": true,\n                                                \"password\": true,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Max Tokens\",\n                                                \"model_config\": {}\n                                            },\n                                            \"model_name\": {\n                                                \"info\": \"\",\n                                                \"list\": true,\n                                                \"name\": \"model_name\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"gpt-3.5-turbo-0613\",\n                                                \"dynamic\": false,\n                                                \"options\": [\n                                                    \"gpt-3.5-turbo-0613\",\n                                                    \"gpt-3.5-turbo\",\n                                                    \"gpt-3.5-turbo-16k-0613\",\n                                                    \"gpt-3.5-turbo-16k\",\n                                                    \"gpt-4-0613\",\n                                                    \"gpt-4-32k-0613\",\n                                                    \"gpt-4\",\n                                                    \"gpt-4-32k\",\n                                                    \"gpt-4-1106-preview\"\n                                                ],\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Model Name\",\n                                                \"model_config\": {}\n                                            },\n                                            \"http_client\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"http_client\",\n                                                \"show\": false,\n                                                \"type\": \"Any\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Http Client\",\n                                                \"model_config\": {}\n                                            },\n                                            \"max_retries\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"max_retries\",\n                                                \"show\": false,\n                                                \"type\": \"int\",\n                                                \"value\": 2,\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Max Retries\",\n                                                \"model_config\": {}\n                                            },\n                                            \"temperature\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"temperature\",\n                                                \"show\": true,\n                                                \"type\": \"float\",\n                                                \"value\": 0.7,\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Temperature\",\n                                                \"model_config\": {}\n                                            },\n                                            \"async_client\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"async_client\",\n                                                \"show\": false,\n                                                \"type\": \"Any\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Async Client\",\n                                                \"model_config\": {}\n                                            },\n                                            \"model_kwargs\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"model_kwargs\",\n                                                \"show\": true,\n                                                \"type\": \"code\",\n                                                \"dynamic\": false,\n                                                \"advanced\": true,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Model Kwargs\",\n                                                \"model_config\": {}\n                                            },\n                                            \"openai_proxy\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"openai_proxy\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"OpenAI Proxy\",\n                                                \"model_config\": {}\n                                            },\n                                            \"default_query\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"default_query\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Default Query\",\n                                                \"model_config\": {}\n                                            },\n                                            \"openai_api_key\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"openai_api_key\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"value\": \"\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": true,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"OpenAI API Key\",\n                                                \"model_config\": {}\n                                            },\n                                            \"default_headers\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"default_headers\",\n                                                \"show\": false,\n                                                \"type\": \"code\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Default Headers\",\n                                                \"model_config\": {}\n                                            },\n                                            \"openai_api_base\": {\n                                                \"info\": \"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\n                                                \"list\": false,\n                                                \"name\": \"openai_api_base\",\n                                                \"show\": true,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"OpenAI API Base\",\n                                                \"model_config\": {}\n                                            },\n                                            \"request_timeout\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"request_timeout\",\n                                                \"show\": false,\n                                                \"type\": \"float\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Request Timeout\",\n                                                \"model_config\": {}\n                                            },\n                                            \"openai_organization\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"openai_organization\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"OpenAI Organization\",\n                                                \"model_config\": {}\n                                            },\n                                            \"tiktoken_model_name\": {\n                                                \"info\": \"\",\n                                                \"list\": false,\n                                                \"name\": \"tiktoken_model_name\",\n                                                \"show\": false,\n                                                \"type\": \"str\",\n                                                \"dynamic\": false,\n                                                \"advanced\": false,\n                                                \"password\": false,\n                                                \"required\": false,\n                                                \"file_path\": \"\",\n                                                \"multiline\": false,\n                                                \"title_case\": true,\n                                                \"placeholder\": \"\",\n                                                \"display_name\": \"Tiktoken Model Name\",\n                                                \"model_config\": {}\n                                            }\n                                        },\n                                        \"description\": \"[*Deprecated*] `OpenAI` Chat large language models API.\",\n                                        \"base_classes\": [\n                                            \"ChatOpenAI\",\n                                            \"BaseLanguageModel\",\n                                            \"BaseChatModel\",\n                                            \"BaseLLM\"\n                                        ],\n                                        \"display_name\": \"ChatOpenAI\",\n                                        \"output_types\": [],\n                                        \"custom_fields\": {},\n                                        \"documentation\": \"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\n                                        \"field_formatters\": {}\n                                    },\n                                    \"type\": \"ChatOpenAI\",\n                                    \"value\": null\n                                },\n                                \"type\": \"genericNode\",\n                                \"dragging\": false,\n                                \"position\": {\n                                    \"x\": 611.2229342454906,\n                                    \"y\": -2218.8216244014975\n                                },\n                                \"selected\": true,\n                                \"positionAbsolute\": {\n                                    \"x\": 611.2229342454906,\n                                    \"y\": -2218.8216244014975\n                                }\n                            }\n                        ],\n                        \"edges\": [\n                            {\n                                \"id\": \"reactflow__edge-CombineDocsChain-Pud2pCombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function-RetrievalQA-qH6MkBaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-qH6Mk\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"CombineDocsChain-Pud2p\",\n                                \"target\": \"RetrievalQA-qH6Mk\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"CombineDocsChain|CombineDocsChain-Pud2p|BaseCombineDocumentsChain|function\",\n                                \"targetHandle\": \"BaseCombineDocumentsChain|combine_documents_chain|RetrievalQA-qH6Mk\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-Milvus-T3kRHMilvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever-RetrievalQA-qH6MkBaseRetriever|retriever|RetrievalQA-qH6Mk\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"Milvus-T3kRH\",\n                                \"target\": \"RetrievalQA-qH6Mk\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"Milvus|Milvus-T3kRH|VectorStore|Milvus|BaseRetriever|VectorStoreRetriever\",\n                                \"targetHandle\": \"BaseRetriever|retriever|RetrievalQA-qH6Mk\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-OpenAIProxyEmbedding-yvld7OpenAIProxyEmbedding|OpenAIProxyEmbedding-yvld7|Embeddings-Milvus-T3kRHEmbeddings|embedding|Milvus-T3kRH\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"OpenAIProxyEmbedding-yvld7\",\n                                \"target\": \"Milvus-T3kRH\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"OpenAIProxyEmbedding|OpenAIProxyEmbedding-yvld7|Embeddings\",\n                                \"targetHandle\": \"Embeddings|embedding|Milvus-T3kRH\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-InputFileNode-jdLkBInputFileNode|InputFileNode-jdLkB|fileNode-ElemUnstructuredLoaderV0-LAGXMfileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"InputFileNode-jdLkB\",\n                                \"target\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"InputFileNode|InputFileNode-jdLkB|fileNode\",\n                                \"targetHandle\": \"fileNode|file_path|ElemUnstructuredLoaderV0-LAGXM\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-ElemUnstructuredLoaderV0-LAGXMElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document-RecursiveCharacterTextSplitter-a7fc9Document|documents|RecursiveCharacterTextSplitter-a7fc9\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"ElemUnstructuredLoaderV0-LAGXM\",\n                                \"target\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"ElemUnstructuredLoaderV0|ElemUnstructuredLoaderV0-LAGXM|Document\",\n                                \"targetHandle\": \"Document|documents|RecursiveCharacterTextSplitter-a7fc9\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-RecursiveCharacterTextSplitter-a7fc9RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document-Milvus-T3kRHDocument|documents|Milvus-T3kRH\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"RecursiveCharacterTextSplitter-a7fc9\",\n                                \"target\": \"Milvus-T3kRH\",\n                                \"animated\": false,\n                                \"selected\": true,\n                                \"className\": \"stroke-gray-900 \",\n                                \"sourceHandle\": \"RecursiveCharacterTextSplitter|RecursiveCharacterTextSplitter-a7fc9|Document\",\n                                \"targetHandle\": \"Document|documents|Milvus-T3kRH\"\n                            },\n                            {\n                                \"id\": \"reactflow__edge-ChatOpenAI-1579bChatOpenAI|ChatOpenAI-1579b|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM-CombineDocsChain-Pud2pBaseLanguageModel|llm|CombineDocsChain-Pud2p\",\n                                \"style\": {\n                                    \"stroke\": \"#555\"\n                                },\n                                \"source\": \"ChatOpenAI-1579b\",\n                                \"target\": \"CombineDocsChain-Pud2p\",\n                                \"animated\": true,\n                                \"className\": \"stroke-foreground  stroke-connection\",\n                                \"sourceHandle\": \"ChatOpenAI|ChatOpenAI-1579b|ChatOpenAI|BaseLanguageModel|BaseChatModel|BaseLLM\",\n                                \"targetHandle\": \"BaseLanguageModel|llm|CombineDocsChain-Pud2p\",\n                                \"selected\": true\n                            }\n                        ],\n                        \"viewport\": {\n                            \"zoom\": 1,\n                            \"x\": 0,\n                            \"y\": 0\n                        }\n                    },\n                    \"is_component\": false,\n                    \"name\": \"\",\n                    \"description\": \"\",\n                    \"id\": \"4d071\",\n                    \"status\": 0,\n                    \"write\": false,\n                    \"guide_word\": \"\"\n                }\n            }\n        }\n    }\n]"
  },
  {
    "path": "src/backend/bisheng/telemetry/README.md",
    "content": "# 数据看板模块\n"
  },
  {
    "path": "src/backend/bisheng/telemetry/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/app_increment.py",
    "content": "from bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.telemetry.domain.mid_table.base import BaseMidTable, BaseRecord\n\n\nclass AppIncrementRecord(BaseRecord):\n    app_id: str\n    app_name: str\n    app_type: ApplicationTypeEnum\n\n\nclass AppIncrement(BaseMidTable):\n    _index_name = 'mid_app_increment'\n    _mappings = {\n        \"app_id\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"app_name\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"app_type\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n    }\n"
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/base.py",
    "content": "from typing import Dict, Any, List, Optional\n\nfrom elasticsearch import Elasticsearch, AsyncElasticsearch, exceptions as es_exceptions, helpers\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.common.schemas.telemetry.base_telemetry_schema import UserContext\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.core.search.elasticsearch.manager import get_es_connection, get_es_connection_sync\n\ncommon_properties = {\n    \"user_id\": {\"type\": \"keyword\",\n                \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n    \"user_name\": {\"type\": \"keyword\",\n                  \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n    \"user_group_infos\": {\n        \"type\": \"nested\",\n        \"properties\": {\n            \"user_group_id\": {\"type\": \"keyword\",\n                              \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n            \"user_group_name\": {\"type\": \"keyword\",\n                                \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}}\n        }\n    },\n    \"user_role_infos\": {\n        \"type\": \"nested\",\n        \"properties\": {\n            \"role_id\": {\"type\": \"keyword\",\n                        \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n            \"role_name\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n            \"group_id\": {\"type\": \"keyword\",\n                         \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        }\n    },\n    \"timestamp\": {\"type\": \"date\", \"format\": \"strict_date_optional_time||epoch_second\"},\n}\ncommon_settings = {\n    \"analysis\": {\n        \"tokenizer\": {\n            \"single_char_tokenizer\": {\n                \"type\": \"ngram\",\n                \"min_gram\": 1,\n                \"max_gram\": 1,\n                \"token_chars\": [\n                    \"letter\",\n                    \"digit\",\n                    \"punctuation\",\n                    \"symbol\"\n                ]\n            }\n        },\n        \"analyzer\": {\n            \"single_char_analyzer\": {\n                \"type\": \"custom\",\n                \"tokenizer\": \"single_char_tokenizer\"\n            }\n        }\n    }\n}\n\n\nclass BaseRecord(UserContext):\n    timestamp: int\n    es_id: Optional[str] = Field(default=None)\n\n\nclass BaseMidTable(BaseModel):\n    _index_name: str = \"\"\n    _mappings: Dict[str, Any] = {}\n    _es_client: AsyncElasticsearch = None\n    _es_client_sync: Elasticsearch = None\n\n    def __init__(self, **kwargs: Any):\n        super().__init__(**kwargs)\n        self.ensure_index_exists_sync()\n\n    async def ensure_index_exists(self) -> None:\n        if not self._index_name:\n            return None\n        if not self._es_client:\n            self._es_client = await get_es_connection()\n        mappings = self._mappings | common_properties\n        try:\n            exists = await self._es_client.indices.exists(index=self._index_name)\n            if not exists:\n                # Incoming body Applications Mapping\n                await self._es_client.indices.create(index=self._index_name,\n                                                     body={\"settings\": common_settings,\n                                                           \"mappings\": {\"properties\": mappings}})\n        except es_exceptions.RequestError as e:\n            # Ignore on concurrency creation \"resource_already_exists_exception\"\n            if \"resource_already_exists_exception\" not in str(e):\n                logger.error(f\"Failed to create ES index: {e}\")\n                raise e\n        return None\n\n    def ensure_index_exists_sync(self) -> None:\n        if not self._index_name:\n            return None\n        if not self._es_client_sync:\n            self._es_client_sync = get_es_connection_sync()\n        mappings = self._mappings | common_properties\n        try:\n            exists = self._es_client_sync.indices.exists(index=self._index_name)\n            if not exists:\n                # Incoming body Applications Mapping\n                self._es_client_sync.indices.create(index=self._index_name,\n                                                    body={\"settings\": common_settings,\n                                                          \"mappings\": {\"properties\": mappings}})\n        except es_exceptions.RequestError as e:\n            # Ignore on concurrency creation \"resource_already_exists_exception\"\n            if \"resource_already_exists_exception\" not in str(e):\n                logger.error(f\"Failed to create ES index: {e}\")\n                raise e\n        return None\n\n    def get_latest_record_time_sync(self) -> int | None:\n        \"\"\" Time to fetch the last record \"\"\"\n        query = {\n            \"size\": 1,\n            \"sort\": [{\"timestamp\": {\"order\": \"desc\"}}],\n            \"_source\": [\"timestamp\"]\n        }\n        response = self._es_client_sync.search(index=self._index_name, body=query)\n        hits = response.get('hits', {}).get('hits', [])\n        if hits:\n            latest_time = hits[0]['_source']['timestamp']\n            return latest_time\n        return None\n\n    def insert_records_sync(self, records: List[BaseRecord]) -> None:\n        \"\"\" Batch Insert Record \"\"\"\n        actions = []\n        for rec in records:\n            action = {\n                \"_index\": self._index_name,\n                \"_source\": rec.model_dump(exclude={\"es_id\"}),\n            }\n            if rec.es_id is not None:\n                action[\"_id\"] = rec.es_id\n            actions.append(action)\n        helpers.bulk(self._es_client_sync, actions)\n\n    def search_from_base_sync(self, **kwargs) -> List[Dict[str, Any]]:\n        \"\"\" Synchronize search methods \"\"\"\n        response = self._es_client_sync.search(index=telemetry_service.index_name, **kwargs)\n        return response.get('hits', {}).get('hits', [])\n"
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/knowledge_increment.py",
    "content": "from bisheng.telemetry.domain.mid_table.base import BaseMidTable, BaseRecord\n\n\nclass KnowledgeIncrementRecord(BaseRecord):\n    knowledge_id: int\n    knowledge_name: str\n    knowledge_type: int\n\n\nclass KnowledgeIncrement(BaseMidTable):\n    _index_name = 'mid_knowledge_increment'\n    _mappings = {\n        \"knowledge_id\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"knowledge_name\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"knowledge_type\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n    }\n"
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/user_increment.py",
    "content": "from typing import Dict, Any\n\nfrom .base import BaseMidTable, BaseRecord\n\n\nclass UserIncrementRecord(BaseRecord):\n    pass\n\n\nclass UserIncrement(BaseMidTable):\n    _index_name: str = 'mid_user_increment'\n    _mappings: Dict[str, Any] = {}\n"
  },
  {
    "path": "src/backend/bisheng/telemetry/domain/mid_table/user_interact.py",
    "content": "from bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.telemetry.domain.mid_table.base import BaseMidTable, BaseRecord\n\n\nclass UserInteractRecord(BaseRecord):\n    message_id: int\n    event_id: str\n    interact_type: str\n    app_id: str\n    app_name: str\n\n\nclass UserInteract(BaseMidTable):\n    _index_name = 'mid_user_interact_dtl'\n    _mappings = {\n        \"message_id\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"event_id\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"interact_type\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"app_id\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n        \"app_name\": {\"type\": \"keyword\", \"fields\": {\"text\": {\"type\": \"text\", \"analyzer\": \"single_char_analyzer\"}}},\n    }\n\n    def get_records_by_time_range_sync(self, start_time: int, end_time: int, page: int = 1, page_size: int = 1000):\n        query = {\n            \"bool\": {\n                \"filter\": [\n                    {\"term\": {\"event_type\": {\"value\": BaseTelemetryTypeEnum.MESSAGE_FEEDBACK.value}}},\n                    {\"range\": {\"timestamp\": {\"gte\": start_time * 1000, \"lt\": end_time * 1000}}}\n                ]\n            }\n        }\n\n        return self.search_from_base_sync(body={\"query\": query, \"from\": (page - 1) * page_size, \"size\": page_size})\n"
  },
  {
    "path": "src/backend/bisheng/template/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/template/field/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/template/field/base.py",
    "content": "from typing import Any, Callable, Optional, Union\n\nfrom bisheng.field_typing.range_spec import RangeSpec\nfrom pydantic import BaseModel, ConfigDict, Field\n\n\nclass TemplateField(BaseModel):\n    model_config = ConfigDict()\n    field_type: str = Field(default='str', serialization_alias='type')\n    \"\"\"The type of field this is. Default is a string.\"\"\"\n\n    required: bool = False\n    \"\"\"Specifies if the field is required. Defaults to False.\"\"\"\n\n    placeholder: str = ''\n    \"\"\"A placeholder string for the field. Default is an empty string.\"\"\"\n\n    is_list: bool = Field(default=False, serialization_alias='list')\n    \"\"\"Defines if the field is a list. Default is False.\"\"\"\n\n    show: bool = True\n    \"\"\"Should the field be shown. Defaults to True.\"\"\"\n\n    multiline: bool = False\n    \"\"\"Defines if the field will allow the user to open a text editor. Default is False.\"\"\"\n\n    value: Any = ''\n    \"\"\"The value of the field. Default is None.\"\"\"\n\n    suffixes: list[str] = []\n\n    fileTypes: list[str] = []\n    file_types: list[str] = Field(default_factory=list, serialization_alias='fileTypes')\n    \"\"\"List of file types associated with the field. Default is an empty list. (duplicate)\"\"\"\n\n    file_path: Optional[str] = ''\n    \"\"\"The file path of the field if it is a file. Defaults to None.\"\"\"\n\n    password: bool = False\n    \"\"\"Specifies if the field is a password. Defaults to False.\"\"\"\n\n    options: Optional[Union[list[str], Callable]] = None\n    \"\"\"List of options for the field. Only used when is_list=True. Default is an empty list.\"\"\"\n\n    name: Optional[str] = None\n    \"\"\"Name of the field. Default is an empty string.\"\"\"\n\n    display_name: Optional[str] = None\n    \"\"\"Display name of the field. Defaults to None.\"\"\"\n\n    advanced: bool = False\n    \"\"\"Specifies if the field will an advanced parameter (hidden). Defaults to False.\"\"\"\n\n    input_types: Optional[list[str]] = None\n    \"\"\"List of input types for the handle when the field has more than one type. Default is an empty list.\"\"\"\n\n    dynamic: bool = False\n    \"\"\"Specifies if the field is dynamic. Defaults to False.\"\"\"\n\n    info: Optional[str] = ''\n    \"\"\"Additional information about the field to be shown in the tooltip. Defaults to an empty string.\"\"\"\n\n    refresh: Optional[bool] = None\n    \"\"\"Specifies if the field should be refreshed. Defaults to False.\"\"\"\n\n    range_spec: Optional[RangeSpec] = Field(default=None, serialization_alias='rangeSpec')\n    \"\"\"Range specification for the field. Defaults to None.\"\"\"\n\n    title_case: bool = True\n    \"\"\"Specifies if the field should be displayed in title case. Defaults to True.\"\"\"\n\n    def to_dict(self):\n        result = self.dict()\n        for key in list(result.keys()):\n            if result[key] is None or result[key] == []:\n                del result[key]\n        result['type'] = result.pop('field_type')\n        result['list'] = result.pop('is_list')\n\n        if result.get('field_type') == 'float' and self.range_spec is None:\n            self.range_spec = RangeSpec()\n\n        if result.get('file_types'):\n            result['fileTypes'] = result.pop('file_types')\n\n        if self.field_type == 'file':\n            result['file_path'] = self.file_path\n        else:\n            result['file_path'] = ''\n\n        if result.get('display_name') is None:\n            value = self.name.replace('_', ' ')\n            if self.title_case:\n                value = value.title()\n            result['display_name'] = value\n        return result\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/__init__.py",
    "content": "from bisheng.template.frontend_node import (agents, chains, documentloaders, embeddings,\n                                            input_output, llms, memories, prompts, textsplitters,\n                                            tools, vectorstores)\n\n__all__ = [\n    'agents',\n    'chains',\n    'embeddings',\n    'memories',\n    'tools',\n    'llms',\n    'prompts',\n    'vectorstores',\n    'documentloaders',\n    'textsplitters',\n    'input_output',\n    # 'output_parsers'\n]\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/agents.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\nfrom langchain.agents import types\n\nNON_CHAT_AGENTS = {\n    agent_type: agent_class\n    for agent_type, agent_class in types.AGENT_TO_CLASS.items() if 'chat' not in agent_type.value\n}\n\n\nclass AgentFrontendNode(FrontendNode):\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        if field.name in ['suffix', 'prefix', 'format_instructions', 'input_variables']:\n            field.show = False if name == 'ChatglmFunctionsAgent' else True\n        if field.name == 'Tools' and name == 'ZeroShotAgent':\n            field.field_type = 'BaseTool'\n            field.is_list = True\n        if 'path' == field.name and name == 'CSVAgent':\n            field.field_type = 'file'\n            field.required = True\n            field.show = True\n            field.value = ''\n            field.suffixes = ['.csv']\n            field.fileTypes = ['csv']\n        if name == 'OpenAIToolsAgent' and field.name in ['human_prompt', 'system_message']:\n            field.show = True\n\n    def add_extra_fields(self) -> None:\n        self.template.fields.append(\n            TemplateField(\n                field_type='BaseChatMemory',\n                required=False,\n                show=True,\n                name='memory',\n                advanced=False,\n            ))\n\n\nclass SQLAgentNode(FrontendNode):\n    name: str = 'SQLAgent'\n    template: Template = Template(\n        type_name='sql_agent',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value='',\n                name='database_uri',\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n            ),\n        ],\n    )\n    description: str = \"\"\"Construct an SQL agent from an LLM and tools.\"\"\"\n    base_classes: list[str] = ['AgentExecutor', 'function']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass VectorStoreRouterAgentNode(FrontendNode):\n    name: str = 'VectorStoreRouterAgent'\n    template: Template = Template(\n        type_name='vectorstorerouter_agent',\n        fields=[\n            TemplateField(\n                field_type='VectorStoreRouterToolkit',\n                required=True,\n                show=True,\n                name='vectorstoreroutertoolkit',\n                display_name='Vector Store Router Toolkit',\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n            ),\n        ],\n    )\n    description: str = \"\"\"Construct an agent from a Vector Store Router.\"\"\"\n    base_classes: list[str] = ['AgentExecutor', 'function']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass VectorStoreAgentNode(FrontendNode):\n    name: str = 'VectorStoreAgent'\n    template: Template = Template(\n        type_name='vectorstore_agent',\n        fields=[\n            TemplateField(\n                field_type='VectorStoreInfo',\n                required=True,\n                show=True,\n                name='vectorstoreinfo',\n                display_name='Vector Store Info',\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n            ),\n        ],\n    )\n    description: str = \"\"\"Construct an agent from a Vector Store.\"\"\"\n    base_classes: list[str] = ['AgentExecutor', 'function']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass SQLDatabaseNode(FrontendNode):\n    name: str = 'SQLDatabase'\n    template: Template = Template(\n        type_name='sql_database',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                is_list=False,\n                show=True,\n                multiline=False,\n                value='',\n                name='uri',\n            ),\n        ],\n    )\n    description: str = \"\"\"SQLAlchemy wrapper around a database.\"\"\"\n    base_classes: list[str] = ['SQLDatabase']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass InitializeAgentNode(FrontendNode):\n    name: str = 'AgentInitializer'\n    display_name: str = 'AgentInitializer'\n    template: Template = Template(\n        type_name='initialize_agent',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                is_list=True,\n                show=True,\n                multiline=False,\n                options=list(NON_CHAT_AGENTS.keys()),\n                value=list(NON_CHAT_AGENTS.keys())[0],\n                name='agent',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='BaseChatMemory',\n                required=False,\n                show=True,\n                name='memory',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='Tool',\n                required=False,\n                show=True,\n                name='tools',\n                is_list=True,\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n                advanced=False,\n            ),\n        ],\n    )\n    description: str = \"\"\"Construct a zero shot agent from an LLM and tools.\"\"\"\n    base_classes: list[str] = ['AgentExecutor', 'function', 'Chain']\n\n    def to_dict(self):\n        return super().to_dict()\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        # do nothing and don't return anything\n        pass\n\n\nclass JsonAgentNode(FrontendNode):\n    name: str = 'JsonAgent'\n    template: Template = Template(\n        type_name='json_agent',\n        fields=[\n            TemplateField(\n                field_type='BaseToolkit',\n                required=True,\n                show=True,\n                name='toolkit',\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n            ),\n        ],\n    )\n    description: str = \"\"\"Construct a json agent from an LLM and tools.\"\"\"\n    base_classes: list[str] = ['AgentExecutor', 'function']\n\n    def to_dict(self):\n        return super().to_dict()\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/autogenrole.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\n\nclass AutogenRoleFrontNode(FrontendNode):\n\n    def add_extra_base_classes(self) -> None:\n        self.base_classes.append('ConversableAgent')\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        field.show = True\n\n    def add_extra_fields(self) -> None:\n        if self.name in {\n                'AutoGenAssistant',\n                'AutoGenGroupChatManager',\n        }:\n            self.template.add_field(\n                TemplateField(field_type='BaseLanguageModel',\n                              required=True,\n                              show=True,\n                              name='llm',\n                              advanced=False))\n\n        if self.name == 'AutoGenGroupChatManager':\n            self.template.add_field(\n                TemplateField(\n                    field_type='ConversableAgent',\n                    is_list=True,\n                    required=False,\n                    show=True,\n                    name='agents',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(field_type='int',\n                              required=False,\n                              show=True,\n                              name='max_round',\n                              advanced=False,\n                              value=50))\n            self.template.add_field(\n                TemplateField(field_type='str',\n                              required=False,\n                              show=True,\n                              name='system_message',\n                              advanced=False,\n                              value='Group chat manager.'))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='name',\n                    value='chat_manage',\n                    advanced=False,\n                ))\n        else:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='name',\n                    value='',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='system_message',\n                    advanced=False,\n                ))\n\n        if self.name == 'AutoGenUser':\n            self.template.add_field(\n                TemplateField(field_type='int',\n                              required=False,\n                              show=True,\n                              name='max_consecutive_auto_reply',\n                              advanced=False,\n                              value=10))\n            self.template.add_field(\n                TemplateField(field_type='str',\n                              required=True,\n                              show=True,\n                              name='human_input_mode',\n                              advanced=False,\n                              value='ALWAYS'))\n        if self.name == 'AutoGenCustomRole':\n            self.template.add_field(\n                TemplateField(\n                    field_type='function',\n                    required=True,\n                    show=True,\n                    name='func',\n                    advanced=False,\n                ))\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/base.py",
    "content": "import re\nfrom collections import defaultdict\nfrom typing import ClassVar, Dict, List, Optional, Union\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.constants import CLASSES_TO_REMOVE, FORCE_SHOW_FIELDS\nfrom bisheng.template.frontend_node.formatter import field_formatters\nfrom bisheng.template.template.base import Template\nfrom bisheng.utils import constants\nfrom pydantic import BaseModel, Field\n\n\nclass FieldFormatters(BaseModel):\n    formatters: ClassVar[Dict] = {\n        'openai_api_key': field_formatters.OpenAIAPIKeyFormatter(),\n    }\n    base_formatters: ClassVar[Dict] = {\n        'kwargs': field_formatters.KwargsFormatter(),\n        'optional': field_formatters.RemoveOptionalFormatter(),\n        'list': field_formatters.ListTypeFormatter(),\n        'dict': field_formatters.DictTypeFormatter(),\n        'union': field_formatters.UnionTypeFormatter(),\n        'multiline': field_formatters.MultilineFieldFormatter(),\n        'show': field_formatters.ShowFieldFormatter(),\n        'password': field_formatters.PasswordFieldFormatter(),\n        'default': field_formatters.DefaultValueFormatter(),\n        'headers': field_formatters.HeadersDefaultValueFormatter(),\n        'dict_code_file': field_formatters.DictCodeFileFormatter(),\n        'model_fields': field_formatters.ModelSpecificFieldFormatter(),\n    }\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        for key, formatter in self.base_formatters.items():\n            formatter.format(field, name)\n\n        for key, formatter in self.formatters.items():\n            if key == field.name:\n                formatter.format(field, name)\n\n\nclass FrontendNode(BaseModel):\n    _format_template: bool = True\n    template: Template\n    description: Optional[str] = None\n    icon: Optional[str] = None\n    base_classes: List[str]\n    name: str = ''\n    display_name: Optional[str] = ''\n    documentation: str = ''\n    custom_fields: Optional[Dict] = defaultdict(list)\n    output_types: List[str] = []\n    full_path: Optional[str] = None\n    field_formatters: FieldFormatters = Field(default_factory=FieldFormatters)\n\n    beta: bool = False\n    error: Optional[str] = None\n\n    # field formatters is an instance attribute but it is not used in the class\n    # so we need to create a method to get it\n    @staticmethod\n    def get_field_formatters() -> FieldFormatters:\n        return FieldFormatters()\n\n    def set_documentation(self, documentation: str) -> None:\n        \"\"\"Sets the documentation of the frontend node.\"\"\"\n        self.documentation = documentation\n\n    # @field_serializer(\"base_classes\")\n    # def process_base_classes(self, base_classes: List[str]) -> List[str]:\n    #     \"\"\"Removes unwanted base classes from the list of base classes.\"\"\"\n    #\n    #     return [base_class for base_class in base_classes if base_class not in CLASSES_TO_REMOVE]\n\n    # @field_serializer(\"display_name\")\n    # def process_display_name(self, display_name: str) -> str:\n    #     \"\"\"Sets the display name of the frontend node.\"\"\"\n    #\n    #     return display_name or self.name\n\n    # For backwards compatibility\n    def to_dict(self, add_name=True) -> dict:\n        \"\"\"Returns a dict representation of the frontend node.\"\"\"\n        result = self.dict(by_alias=True, exclude_none=True)\n        if hasattr(self, 'template') and hasattr(self.template, 'to_dict'):\n            format_func = self.format_field if self._format_template else None\n            result['template'] = self.template.to_dict(format_func)\n        name = result.pop('name')\n        result['display_name'] = result.get('display_name') if result.get(\n            'display_name') else self.name\n        result['base_classes'] = [\n            base_class for base_class in result['base_classes']\n            if base_class not in CLASSES_TO_REMOVE\n        ]\n\n        dump = {name: result}\n        if not add_name:\n            return dump.pop(self.name)\n        return dump\n\n    def add_extra_fields(self) -> None:\n        pass\n\n    def add_extra_base_classes(self) -> None:\n        pass\n\n    def add_base_class(self, base_class: Union[str, List[str]]) -> None:\n        \"\"\"Adds a base class to the frontend node.\"\"\"\n        if isinstance(base_class, str):\n            self.base_classes.append(base_class)\n        elif isinstance(base_class, list):\n            self.base_classes.extend(base_class)\n\n    def add_output_type(self, output_type: Union[str, List[str]]) -> None:\n        \"\"\"Adds an output type to the frontend node.\"\"\"\n        if isinstance(output_type, str):\n            self.output_types.append(output_type)\n        elif isinstance(output_type, list):\n            self.output_types.extend(output_type)\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        \"\"\"Formats a given field based on its attributes and value.\"\"\"\n\n        FrontendNode.get_field_formatters().format(field, name)\n\n    @staticmethod\n    def remove_optional(_type: str) -> str:\n        \"\"\"Removes 'Optional' wrapper from the type if present.\"\"\"\n        return re.sub(r'Optional\\[(.*)\\]', r'\\1', _type)\n\n    @staticmethod\n    def check_for_list_type(_type: str) -> tuple:\n        \"\"\"Checks for list type and returns the modified type and a boolean indicating if it's a list.\"\"\"\n        is_list = 'List' in _type or 'Sequence' in _type\n        if is_list:\n            _type = re.sub(r'(List|Sequence)\\[(.*)\\]', r'\\2', _type)\n        return _type, is_list\n\n    @staticmethod\n    def replace_mapping_with_dict(_type: str) -> str:\n        \"\"\"Replaces 'Mapping' with 'dict'.\"\"\"\n        return _type.replace('Mapping', 'dict')\n\n    @staticmethod\n    def handle_union_type(_type: str) -> str:\n        \"\"\"Simplifies the 'Union' type to the first type in the Union.\"\"\"\n        if 'Union' in _type:\n            _type = _type.replace('Union[', '')[:-1]\n            _type = _type.split(',')[0]\n            _type = _type.replace(']', '').replace('[', '')\n        return _type\n\n    @staticmethod\n    def handle_special_field(field, key: str, _type: str, SPECIAL_FIELD_HANDLERS) -> str:\n        \"\"\"Handles special field by using the respective handler if present.\"\"\"\n        handler = SPECIAL_FIELD_HANDLERS.get(key)\n        return handler(field) if handler else _type\n\n    @staticmethod\n    def handle_dict_type(field: TemplateField, _type: str) -> str:\n        \"\"\"Handles 'dict' type by replacing it with 'code' or 'file' based on the field name.\"\"\"\n        if 'dict' in _type.lower() and field.name == 'dict_':\n            field.field_type = 'file'\n            field.file_types = ['.json', '.yaml', '.yml']\n        elif _type.startswith('Dict') or _type.startswith('Mapping') or _type.startswith('dict'):\n            field.field_type = 'dict'\n        return _type\n\n    @staticmethod\n    def replace_default_value(field: TemplateField, value: dict) -> None:\n        \"\"\"Replaces default value with actual value if 'default' is present in value.\"\"\"\n        if 'default' in value:\n            field.value = value['default']\n\n    @staticmethod\n    def handle_specific_field_values(field: TemplateField,\n                                     key: str,\n                                     name: Optional[str] = None) -> None:\n        \"\"\"Handles specific field values for certain fields.\"\"\"\n        if key == 'headers':\n            field.value = \"\"\"{\"Authorization\": \"Bearer <token>\"}\"\"\"\n        FrontendNode._handle_model_specific_field_values(field, key, name)\n        FrontendNode._handle_api_key_specific_field_values(field, key, name)\n\n    @staticmethod\n    def _handle_model_specific_field_values(field: TemplateField,\n                                            key: str,\n                                            name: Optional[str] = None) -> None:\n        \"\"\"Handles specific field values related to models.\"\"\"\n        model_dict = {\n            'OpenAI': constants.OPENAI_MODELS,\n            'ChatOpenAI': constants.CHAT_OPENAI_MODELS,\n            'Anthropic': constants.ANTHROPIC_MODELS,\n            'ChatAnthropic': constants.ANTHROPIC_MODELS,\n        }\n        if name in model_dict and key == 'model_name':\n            field.options = model_dict[name]\n            field.is_list = True\n\n    @staticmethod\n    def _handle_api_key_specific_field_values(field: TemplateField,\n                                              key: str,\n                                              name: Optional[str] = None) -> None:\n        \"\"\"Handles specific field values related to API keys.\"\"\"\n        if 'api_key' in key and 'OpenAI' in str(name):\n            field.display_name = 'OpenAI API Key'\n            field.required = False\n            if field.value is None:\n                field.value = ''\n\n    @staticmethod\n    def handle_kwargs_field(field: TemplateField) -> None:\n        \"\"\"Handles kwargs field by setting certain attributes.\"\"\"\n\n        if 'kwargs' in (field.name or '').lower():\n            field.advanced = True\n            field.required = False\n            field.show = False\n\n    @staticmethod\n    def handle_api_key_field(field: TemplateField, key: str) -> None:\n        \"\"\"Handles api key field by setting certain attributes.\"\"\"\n        if 'api' in key.lower() and 'key' in key.lower():\n            field.required = False\n            field.advanced = False\n\n            field.display_name = key.replace('_', ' ').title()\n            field.display_name = field.display_name.replace('Api', 'API')\n\n    @staticmethod\n    def should_show_field(key: str, required: bool) -> bool:\n        \"\"\"Determines whether the field should be shown.\"\"\"\n        return ((required and key not in ['input_variables']) or key in FORCE_SHOW_FIELDS\n                or 'api' in key or ('key' in key and 'input' not in key and 'output' not in key))\n\n    @staticmethod\n    def should_be_password(key: str, show: bool) -> bool:\n        \"\"\"Determines whether the field should be a password field.\"\"\"\n        return any(text in key.lower() for text in {'password', 'token', 'api', 'key'}) and show\n\n    @staticmethod\n    def should_be_multiline(key: str) -> bool:\n        \"\"\"Determines whether the field should be multiline.\"\"\"\n        return key in {\n            'suffix',\n            'prefix',\n            'template',\n            'examples',\n            'code',\n            'headers',\n            'description',\n        }\n\n    @staticmethod\n    def set_field_default_value(field: TemplateField, value: dict, key: str) -> None:\n        \"\"\"Sets the field value with the default value if present.\"\"\"\n        if 'default' in value:\n            field.value = value['default']\n        if key == 'headers':\n            field.value = \"\"\"{\"Authorization\": \"Bearer <token>\"}\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/chains.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.constants import QA_CHAIN_TYPES, SUMMARIZE_CHAIN_TYPES\nfrom bisheng.template.template.base import Template\n\n\nclass ChainFrontendNode(FrontendNode):\n\n    def add_extra_fields(self) -> None:\n        if self.template.type_name == 'ConversationalRetrievalChain':\n            # add memory\n            self.template.add_field(\n                TemplateField(\n                    field_type='BaseChatMemory',\n                    required=True,\n                    show=True,\n                    name='memory',\n                    advanced=False,\n                ))\n            # add return_source_documents\n            self.template.add_field(\n                TemplateField(\n                    field_type='bool',\n                    required=False,\n                    show=True,\n                    name='return_source_documents',\n                    advanced=False,\n                    value=True,\n                    display_name='Return source documents',\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    is_list=True,\n                    show=True,\n                    multiline=False,\n                    options=QA_CHAIN_TYPES,\n                    value=QA_CHAIN_TYPES[0],\n                    name='chain_type',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='BasePromptTemplate',\n                    show=True,\n                    name='document_prompt',\n                    advanced=False,\n                ))\n        elif self.template.type_name == 'SequentialChain':\n            self.template.add_field(\n                TemplateField(field_type='str',\n                              required=True,\n                              show=True,\n                              name='chain_order',\n                              advanced=False,\n                              value='[]'))\n        elif self.template.type_name in {'MultiPromptChain', 'MultiRuleChain'}:\n            self.template.add_field(\n                TemplateField(field_type='Chain',\n                              required=True,\n                              show=True,\n                              is_list=True,\n                              name='LLMChains',\n                              advanced=False,\n                              value='[]'))\n            self.template.add_field(\n                TemplateField(field_type='NestedDict',\n                              required=True,\n                              show=True,\n                              is_list=True,\n                              name='destination_chain_name',\n                              advanced=False,\n                              info='{chain_id: name}',\n                              value='{}'))\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        if name == 'RuleBasedRouter' and field.name == 'rule_function':\n            field.field_type = 'function'\n        if name == 'RuleBasedRouter' and field.name == 'input_variables':\n            field.show = True\n\n        if name == 'LoaderOutputChain' and field.name == 'documents':\n            field.is_list = False\n\n        if name == 'RetrievalQA' and field.name == 'memory':\n            field.show = False\n            field.required = False\n\n        if name == 'APIChain' and field.name == 'limit_to_domains':\n            field.show = True\n            field.required = False\n            field.value = None\n        if name == 'BishengRetrievalQA' and field.name == 'max_content':\n            field.show = True\n            field.required = False\n\n        field.advanced = False\n        if 'key' in field.name and field.name != 'keyword_store':  # Under special treatmentbishengRetrievalQAComponent\n            field.password = False\n            field.show = False\n        if field.name in ['input_key', 'output_key']:\n            field.required = True\n            field.show = True\n            field.advanced = False\n\n        # We should think of a way to deal with this later\n        # if field.field_type == \"PromptTemplate\":\n        #     field.field_type = \"str\"\n        #     field.multiline = True\n        #     field.show = True\n        #     field.advanced = False\n        #     field.value = field.value.template\n\n        # Separated for possible future changes\n        if field.name == 'prompt' and field.value is None:\n            field.required = True\n            field.show = True\n            field.advanced = False\n        if field.name == 'prompt' and name == 'DalleGeneratorChain':\n            field.show = True\n            field.required = False\n        if field.name == 'condense_question_prompt':\n            field.required = False\n            field.show = True\n        if field.name in {'memory', 'document_prompt'}:\n            # field.required = False\n            field.show = True\n            field.advanced = False\n        if field.name == 'verbose':\n            field.required = False\n            field.show = False\n            field.advanced = True\n        if field.name == 'llm':\n            field.required = True\n            field.show = True\n            field.advanced = False\n            field.field_type = 'BaseLanguageModel'  # temporary fix\n            field.is_list = False\n        if field.name == 'llm' and name == 'DalleGeneratorChain':\n            field.required = False\n        if field.name == 'return_source_documents':\n            field.required = False\n            field.show = True\n            field.advanced = True\n            field.value = True\n        if field.name == 'combine_docs_chain_kwargs':\n            field.show = True\n            field.field_type = 'BasePromptTemplate'\n            field.display_name = 'prompt'\n        if field.name == 'recipient':\n            field.display_name = 'AutogenRole'\n        if field.name == 'destination_chains':\n            field.show = False\n        if name == 'TransformChain' and field.name == 'input_variables':\n            field.show = True\n        if name == 'TransformChain' and field.name == 'transform_cb':\n            field.show = True\n            field.field_type = 'function'\n            field.name = 'transform'\n        if name == 'TransformChain' and field.name == 'atransform_cb':\n            field.show = True\n            field.field_type = 'function'\n            field.name = 'atransform'\n        if name in ['QAGenerationChain', 'QAGenerationChainV2']:\n            if field.name in ['k', 'chunk_size', 'question_prompt', 'answer_prompt', 'filter_lowquality_context',\n                              'filter_lowquality_question']:\n                field.show = True\n            elif field.name == 'input_node':\n                field.show = False\n\n\nclass SeriesCharacterChainNode(FrontendNode):\n    name: str = 'SeriesCharacterChain'\n    template: Template = Template(\n        type_name='SeriesCharacterChain',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                advanced=False,\n                multiline=False,\n                name='character',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                advanced=False,\n                multiline=False,\n                name='series',\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                advanced=False,\n                multiline=False,\n                name='llm',\n                display_name='LLM',\n            ),\n        ],\n    )\n    description: str = 'SeriesCharacterChain is a chain you can use to have a conversation with a character from a series.'  # noqa\n    base_classes: list[str] = [\n        'LLMChain',\n        'BaseCustomChain',\n        'Chain',\n        'ConversationChain',\n        'SeriesCharacterChain',\n        'function',\n    ]\n\n\nclass TimeTravelGuideChainNode(FrontendNode):\n    name: str = 'TimeTravelGuideChain'\n    template: Template = Template(\n        type_name='TimeTravelGuideChain',\n        fields=[\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                advanced=False,\n                multiline=False,\n                name='llm',\n                display_name='LLM',\n            ),\n            TemplateField(\n                field_type='BaseChatMemory',\n                required=False,\n                show=True,\n                name='memory',\n                advanced=False,\n            ),\n        ],\n    )\n    description: str = 'Time travel guide chain.'\n    base_classes: list[str] = [\n        'LLMChain',\n        'BaseCustomChain',\n        'TimeTravelGuideChain',\n        'Chain',\n        'ConversationChain',\n    ]\n\n\nclass MidJourneyPromptChainNode(FrontendNode):\n    name: str = 'MidJourneyPromptChain'\n    template: Template = Template(\n        type_name='MidJourneyPromptChain',\n        fields=[\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                advanced=False,\n                multiline=False,\n                name='llm',\n                display_name='LLM',\n            ),\n            TemplateField(\n                field_type='BaseChatMemory',\n                required=False,\n                show=True,\n                name='memory',\n                advanced=False,\n            ),\n        ],\n    )\n    description: str = 'MidJourneyPromptChain is a chain you can use to generate new MidJourney prompts.'\n    base_classes: list[str] = [\n        'LLMChain',\n        'BaseCustomChain',\n        'Chain',\n        'ConversationChain',\n        'MidJourneyPromptChain',\n    ]\n\n\nclass CombineDocsChainNode(FrontendNode):\n    name: str = 'CombineDocsChain'\n    template: Template = Template(\n        type_name='load_qa_chain',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                is_list=True,\n                show=True,\n                multiline=False,\n                options=QA_CHAIN_TYPES,\n                value=QA_CHAIN_TYPES[0],\n                name='chain_type',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='int',\n                required=False,\n                show=True,\n                name='token_max',\n                display_name='token_max',\n                advanced=False,\n                info='Hide Content Only ForStuffType Effective',\n                value=-1,\n            ),\n            TemplateField(field_type='BasePromptTemplate',\n                          required=False,\n                          show=True,\n                          name='prompt',\n                          display_name='prompt',\n                          advanced=False,\n                          info='Hide Content Only ForStuffType Effective'),\n            TemplateField(\n                field_type='BasePromptTemplate',\n                required=False,\n                show=True,\n                name='document_prompt',\n                advanced=False,\n            )\n        ],\n    )\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        pass\n\n    description: str = \"\"\"Load question answering chain.\"\"\"\n    base_classes: list[str] = ['BaseCombineDocumentsChain', 'function']\n\n\nclass SummarizeDocsChain(FrontendNode):\n    name: str = 'SummarizeDocsChain'\n    template: Template = Template(\n        type_name='load_summarize_chain',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                is_list=True,\n                show=True,\n                multiline=False,\n                options=SUMMARIZE_CHAIN_TYPES,\n                value=SUMMARIZE_CHAIN_TYPES[0],\n                name='chain_type',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='BaseLanguageModel',\n                required=True,\n                show=True,\n                name='llm',\n                display_name='LLM',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='int',\n                required=False,\n                show=True,\n                name='token_max',\n                display_name='token_max',\n                advanced=False,\n                info='Currently only forstuff ENTRY INTO FORCE',\n                value=-1,\n            ),\n            TemplateField(field_type='BasePromptTemplate',\n                          required=False,\n                          show=True,\n                          name='prompt',\n                          display_name='prompt',\n                          advanced=False,\n                          info='Hide Content Only ForStuffType Effective')\n        ],\n    )\n    description: str = \"\"\"Load summarize chain.\"\"\"\n    base_classes: list[str] = ['BaseCombineDocumentsChain', 'function']\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/constants.py",
    "content": "FORCE_SHOW_FIELDS = [\n    'allowed_tools',\n    'memory',\n    'prefix',\n    'examples',\n    'temperature',\n    'model_name',\n    'headers',\n    'max_value_length',\n    'max_tokens',\n    'file_path',\n    'input_node',\n    'output_node',\n]\n\nDEFAULT_PROMPT = \"\"\"\nI want you to act as a naming consultant for new companies.\n\nHere are some examples of good company names:\n\n- search engine, Google\n- social media, Facebook\n- video sharing, YouTube\n\nThe name should be short, catchy and easy to remember.\n\nWhat is a good name for a company that makes {product}?\n\"\"\"\n\nSYSTEM_PROMPT = \"\"\"\nYou are a helpful assistant that talks casually about life in general.\nYou are a good listener and you can talk about anything.\n\"\"\"\n\nHUMAN_PROMPT = '{input}'\n\nQA_CHAIN_TYPES = ['stuff', 'map_reduce', 'map_rerank', 'refine']\nSUMMARIZE_CHAIN_TYPES = ['stuff', 'map_reduce', 'refine']\n\nCTRANSFORMERS_DEFAULT_CONFIG = {\n    'top_k': 40,\n    'top_p': 0.95,\n    'temperature': 0.8,\n    'repetition_penalty': 1.1,\n    'last_n_tokens': 64,\n    'seed': -1,\n    'max_new_tokens': 256,\n    'stop': None,\n    'stream': False,\n    'reset': True,\n    'batch_size': 8,\n    'threads': -1,\n    'context_length': -1,\n    'gpu_layers': 0,\n}\n\n# This variable is used to tell the user\n# that it can be changed to use other APIs\n# like Prem and LocalAI\nOPENAI_API_BASE_INFO = \"\"\"\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\n\"\"\"\n\nINPUT_KEY_INFO = \"\"\"The variable to be used as Chat Input when more than one variable is available.\"\"\"\nOUTPUT_KEY_INFO = \"\"\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\"\"\"\n\nCLASSES_TO_REMOVE = [\n    'RunnableSerializable',\n    'Serializable',\n    'BaseModel',\n    'object',\n    'Runnable',\n    'Generic',\n]\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/custom_components.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\n\nDEFAULT_CUSTOM_COMPONENT_CODE = \"\"\"from bisheng import CustomComponent\nfrom typing import Optional, List, Dict, Union\nfrom bisheng.field_typing import (\n    AgentExecutor,\n    BaseChatMemory,\n    BaseLanguageModel,\n    BaseLLM,\n    BaseLoader,\n    BaseMemory,\n    BaseOutputParser,\n    BasePromptTemplate,\n    BaseRetriever,\n    Callable,\n    Chain,\n    ChatPromptTemplate,\n    Data,\n    Document,\n    Embeddings,\n    NestedDict,\n    Object,\n    PromptTemplate,\n    TextSplitter,\n    Tool,\n    VectorStore,\n)\n\n\nclass Component(CustomComponent):\n    display_name: str = \"Custom Component\"\n    description: str = \"Create any custom component you want!\"\n\n    def build_config(self):\n        return {\"param\": {\"display_name\": \"Parameter\"}}\n\n    def build(self, param: Data) -> Data:\n        return param\n\n\"\"\"\n\n\nclass CustomComponentFrontendNode(FrontendNode):\n    _format_template: bool = False\n    name: str = 'CustomComponent'\n    display_name: Optional[str] = 'CustomComponent'\n    beta: bool = True\n    template: Template = Template(\n        type_name='CustomComponent',\n        fields=[\n            TemplateField(\n                field_type='code',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                value=DEFAULT_CUSTOM_COMPONENT_CODE,\n                name='code',\n                advanced=False,\n                dynamic=True,\n            )\n        ],\n    )\n    description: Optional[str] = None\n    base_classes: list[str] = []\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/documentloaders.py",
    "content": "from typing import ClassVar, Dict, Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\n\ndef build_file_field(suffixes: list,\n                     fileTypes: list,\n                     name: str = 'file_path',\n                     fieldType='fileNode') -> TemplateField:\n    \"\"\"Build a template field for a document loader.\"\"\"\n    return TemplateField(\n        field_type=fieldType,\n        required=True,\n        show=True,\n        name=name,\n        value='',\n        suffixes=suffixes,\n        fileTypes=fileTypes,\n    )\n\n\nclass DocumentLoaderFrontNode(FrontendNode):\n\n    def add_extra_base_classes(self) -> None:\n        self.base_classes = ['Document']\n        self.output_types = ['Document']\n\n    file_path_templates: ClassVar[Dict] = {\n        'ElemUnstructuredLoaderV0':\n        build_file_field(\n            suffixes=[\n                '.html', '.md', '.txt', '.bmp', '.jpg', '.png', '.jpeg', '.doc', '.docx', '.pdf',\n                '.ppt', '.pptx', '.xls', '.xlsx', '.tsv', '.csv', '.tiff'\n            ],\n            fileTypes=[\n                'html',\n                'md',\n                'txt',\n                'bmp',\n                'jpg',\n                'png',\n                'jpeg',\n                'doc',\n                'docx',\n                'pdf',\n                'ppt',\n                'pptx',\n                '.xls',\n                'xlsx',\n                'tsv',\n                'csv',\n                'tiff',\n            ],\n        ),\n        'AirbyteJSONLoader':\n        build_file_field(suffixes=['.json'], fileTypes=['json']),\n        'CoNLLULoader':\n        build_file_field(suffixes=['.csv'], fileTypes=['csv']),\n        'CSVLoader':\n        build_file_field(suffixes=['.csv'], fileTypes=['csv']),\n        'UnstructuredEmailLoader':\n        build_file_field(suffixes=['.eml'], fileTypes=['eml']),\n        'SlackDirectoryLoader':\n        build_file_field(suffixes=['.zip'], fileTypes=['zip']),\n        'EverNoteLoader':\n        build_file_field(suffixes=['.xml'], fileTypes=['xml']),\n        'FacebookChatLoader':\n        build_file_field(suffixes=['.json'], fileTypes=['json']),\n        'BSHTMLLoader':\n        build_file_field(suffixes=['.html'], fileTypes=['html']),\n        'UnstructuredHTMLLoader':\n        build_file_field(suffixes=['.html'], fileTypes=['html']),\n        'UnstructuredImageLoader':\n        build_file_field(\n            suffixes=['.jpg', '.jpeg', '.png', '.gif', '.bmp'],\n            fileTypes=['jpg', 'jpeg', 'png', 'gif', 'bmp'],\n        ),\n        'UnstructuredMarkdownLoader':\n        build_file_field(suffixes=['.md'], fileTypes=['md']),\n        'PyPDFLoader':\n        build_file_field(suffixes=['.pdf'], fileTypes=['pdf'], fieldType='fileNode'),\n        'UnstructuredPowerPointLoader':\n        build_file_field(suffixes=['.pptx', '.ppt'], fileTypes=['pptx', 'ppt']),\n        'SRTLoader':\n        build_file_field(suffixes=['.srt'], fileTypes=['srt']),\n        'TelegramChatLoader':\n        build_file_field(suffixes=['.json'], fileTypes=['json']),\n        'TextLoader':\n        build_file_field(suffixes=['.txt'], fileTypes=['txt']),\n        'UnstructuredWordDocumentLoader':\n        build_file_field(suffixes=['.docx', '.doc'], fileTypes=['docx', 'doc']),\n        'PDFWithSemanticLoader':\n        build_file_field(suffixes=['.pdf'], fileTypes=['pdf']),\n        'UniversalKVLoader':\n        build_file_field(\n            suffixes=['.jpg', '.png', '.jpeg', '.bmp', '.pdf'],\n            fileTypes=['jpg', 'png', 'jpeg', 'bmp', 'pdf'],\n        ),\n        'CustomKVLoader':\n        build_file_field(\n            suffixes=[\n                '.jpg', '.png', '.jpeg', '.pdf', '.txt', '.docx', '.doc', '.bmp', '.tif', '.tiff',\n                '.xls', '.xlsx'\n            ],\n            fileTypes=[\n                'jpg', 'png', 'jpeg', 'pdf', 'txt', 'docx', 'doc', 'bmp', 'tif', 'tiff', 'xls',\n                'xlsx'\n            ],\n        ),\n    }\n\n    def add_extra_fields(self) -> None:\n        name = None\n        display_name = 'Web Page'\n        if self.template.type_name in {'PDFWithSemanticLoader'}:\n            for field in build_pdf_semantic_loader_fields():\n                self.template.add_field(field)\n        if self.template.type_name in {'GitLoader'}:\n            # Add fields repo_path, clone_url, branch and file_filter\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='repo_path',\n                    value='',\n                    display_name='Path to repository',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=False,\n                    show=True,\n                    name='clone_url',\n                    value='',\n                    display_name='Clone URL',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='branch',\n                    value='',\n                    display_name='Branch',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=False,\n                    show=True,\n                    name='file_filter',\n                    value='',\n                    display_name='File extensions (comma-separated)',\n                    advanced=False,\n                ))\n        elif self.template.type_name in {'ElemUnstructuredLoaderV0'}:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='unstructured_api_url',\n                    value='',\n                    display_name='unstructured_api_url',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='dict',\n                    required=True,\n                    show=True,\n                    name='kwargs',\n                    display_name='kwargs',\n                    advanced=False,\n                ))\n            self.template.add_field(self.file_path_templates[self.template.type_name])\n        elif self.template.type_name in {'UniversalKVLoader'}:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='ellm_model_url',\n                    value='',\n                    display_name='ellm_model_url',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='int',\n                    required=False,\n                    show=True,\n                    name='max_pages',\n                    value=30,\n                    display_name='max_pages',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='schema',\n                    value='',\n                    display_name='schema',\n                    advanced=False,\n                ))\n            self.template.add_field(self.file_path_templates[self.template.type_name])\n        elif self.template.type_name in {'CustomKVLoader'}:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='schemas',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='elm_api_base_url',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='elm_api_key',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='elem_server_id',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='task_type',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(field_type='int',\n                              required=True,\n                              show=True,\n                              name='request_timeout',\n                              advanced=True,\n                              value=600))\n            self.template.add_field(self.file_path_templates[self.template.type_name])\n        elif self.template.type_name in self.file_path_templates:\n            self.template.add_field(self.file_path_templates[self.template.type_name])\n        elif self.template.type_name in {'FireCrawlLoader'}:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='url',\n                    value='',\n                    display_name='URL',\n                    advanced=False,\n                ))\n            self.template.add_field(\n                TemplateField(field_type='dict',\n                              multiline=True,\n                              required=False,\n                              show=True,\n                              name='params'))\n            self.template.add_field(\n                TemplateField(field_type='str',\n                              multiline=True,\n                              required=False,\n                              show=True,\n                              name='api_key'))\n            self.template.add_field(\n                TemplateField(field_type='str',\n                              multiline=True,\n                              required=True,\n                              value='crawl',\n                              options=['crawl', 'scrape'],\n                              show=True,\n                              name='mode'))\n        elif self.template.type_name in {\n                'WebBaseLoader',\n                'AZLyricsLoader',\n                'CollegeConfidentialLoader',\n                'HNLoader',\n                'IFixitLoader',\n                'IMSDbLoader',\n                'GutenbergLoader',\n        }:\n            name = 'web_path'\n        elif self.template.type_name in {'GutenbergLoader'}:\n            name = 'file_path'\n        elif self.template.type_name in {'GitbookLoader'}:\n            name = 'web_page'\n        elif self.template.type_name in {\n                'DirectoryLoader',\n                'ReadTheDocsLoader',\n                'NotionDirectoryLoader',\n                'PyPDFDirectoryLoader',\n        }:\n            name = 'path'\n            display_name = 'Local directory'\n        if self.template.type_name == 'WebBaseLoader':\n            self.template.add_field(\n                TemplateField(\n                    field_type='code',\n                    required=True,\n                    show=True,\n                    name='requests_kwargs',\n                    value='{\"timeout\": 30}',\n                    display_name='RequestsKwargs',\n                    multiline=False,\n                ))\n        if name:\n            if self.template.type_name in {'DirectoryLoader'}:\n                for field in build_directory_loader_fields():\n                    self.template.add_field(field)\n            else:\n                self.template.add_field(\n                    TemplateField(\n                        field_type='str',\n                        required=True,\n                        show=True,\n                        name=name,\n                        value='',\n                        display_name=display_name,\n                    ))\n            # add a metadata field of type dict\n        self.template.add_field(\n            TemplateField(\n                field_type='code',\n                required=True,\n                show=True,\n                name='metadata',\n                value='{}',\n                display_name='Metadata',\n                multiline=False,\n            ))\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        if field.name == 'metadata':\n            field.show = True\n            field.advanced = False\n        field.show = True\n        if field.name == 'unstructured_api_url':\n            field.show = True\n            field.advanced = False\n        if name == 'CustomKVLoader' and field.name == 'task_type':\n            field.options = ['extraction-job', 'logic-job']\n            field.value = 'logic-job'\n        if name == 'CustomKVLoader' and field.name == 'schemas':\n            field.field_type = 'str'\n            field.info = \"please use '|' seperate\"\n            field.is_list = False\n        if name == 'ElemUnstructuredLoaderV0' and field.name == 'kwargs':\n            field.show = True\n            field.advanced = False\n\n\ndef build_pdf_semantic_loader_fields():\n    # file_path: str,\n    #     password: Optional[Union[str, bytes]] = None,\n    #     layout_api_key: str = None,\n    #     layout_api_url: str = None,\n    #     is_join_table: bool = True,\n    #     with_columns: bool = False,\n    #     support_rotate: bool = False,\n    #     text_elem_sep: str = '\\n',\n    #     start: int = 0,\n    #     n: int = None,\n    #     verbose: bool = False\n    file_path = TemplateField(field_type='file',\n                              required=True,\n                              show=True,\n                              name='file_path',\n                              value='',\n                              display_name='pdfDoc.')\n    password = TemplateField(field_type='str',\n                             required=True,\n                             show=True,\n                             advanced=True,\n                             name='password',\n                             value=None,\n                             display_name='password')\n    layout_api_key = TemplateField(field_type='str',\n                                   required=False,\n                                   show=True,\n                                   name='layout_api_key',\n                                   value=None,\n                                   display_name='layout_api_key')\n    layout_api_url = TemplateField(field_type='str',\n                                   required=False,\n                                   show=True,\n                                   name='layout_api_url',\n                                   value=None,\n                                   display_name='layout_api_url')\n    is_join_table = TemplateField(field_type='bool',\n                                  required=True,\n                                  show=True,\n                                  advanced=True,\n                                  name='is_join_table',\n                                  value='True',\n                                  display_name='is_join_table')\n    with_columns = TemplateField(field_type='bool',\n                                 required=True,\n                                 show=True,\n                                 advanced=True,\n                                 name='with_columns',\n                                 value='False',\n                                 display_name='with_columns')\n    support_rotate = TemplateField(field_type='bool',\n                                   required=True,\n                                   show=True,\n                                   advanced=True,\n                                   name='support_rotate',\n                                   value='False',\n                                   display_name='support_rotate')\n    text_elem_sep = TemplateField(field_type='str',\n                                  required=True,\n                                  show=True,\n                                  advanced=True,\n                                  name='text_elem_sep',\n                                  value='\\\\n',\n                                  display_name='text_elem_sep')\n    start = TemplateField(field_type='int',\n                          required=True,\n                          show=True,\n                          advanced=True,\n                          name='start',\n                          value=0,\n                          display_name='start')\n    n = TemplateField(field_type='int',\n                      required=False,\n                      show=True,\n                      advanced=True,\n                      name='n',\n                      value=None,\n                      display_name='n')\n    verbose = TemplateField(field_type='bool',\n                            required=True,\n                            show=True,\n                            advanced=True,\n                            name='verbose',\n                            value='False',\n                            display_name='verbose')\n\n    return (file_path, password, layout_api_key, layout_api_url, n, verbose, is_join_table,\n            with_columns, support_rotate, text_elem_sep, start)\n\n\ndef build_directory_loader_fields():\n    # if loader_kwargs is None:\n    #         loader_kwargs = {}\n    # self.path = path\n    # self.glob = glob\n    # self.load_hidden = load_hidden\n    # self.loader_cls = loader_cls\n    # self.loader_kwargs = loader_kwargs\n    # self.silent_errors = silent_errors\n    # self.recursive = recursive\n    # self.show_progress = show_progress\n    # self.use_multithreading = use_multithreading\n    # self.max_concurrency = max_concurrency\n    # Based on the above fields, we can build the following fields:\n    # path, glob, load_hidden, silent_errors, recursive, show_progress, use_multithreading, max_concurrency\n    # path\n    path = TemplateField(\n        field_type='str',\n        required=True,\n        show=True,\n        name='path',\n        value='',\n        display_name='Local directory',\n        advanced=False,\n    )\n    # glob\n    glob = TemplateField(\n        field_type='str',\n        required=True,\n        show=True,\n        name='glob',\n        value='**/*.txt',\n        display_name='glob',\n        advanced=False,\n    )\n    # load_hidden\n    load_hidden = TemplateField(\n        field_type='bool',\n        required=False,\n        show=True,\n        name='load_hidden',\n        value='False',\n        display_name='Load hidden files',\n        advanced=True,\n    )\n    # silent_errors\n    silent_errors = TemplateField(\n        field_type='bool',\n        required=False,\n        show=True,\n        name='silent_errors',\n        value='False',\n        display_name='Silent errors',\n        advanced=True,\n    )\n    # recursive\n    recursive = TemplateField(\n        field_type='bool',\n        required=False,\n        show=True,\n        name='recursive',\n        value='True',\n        display_name='Recursive',\n        advanced=True,\n    )\n\n    # use_multithreading\n    use_multithreading = TemplateField(\n        field_type='bool',\n        required=False,\n        show=True,\n        name='use_multithreading',\n        value='True',\n        display_name='Use multithreading',\n        advanced=True,\n    )\n    # max_concurrency\n    max_concurrency = TemplateField(\n        field_type='int',\n        required=False,\n        show=True,\n        name='max_concurrency',\n        value=10,\n        display_name='Max concurrency',\n        advanced=True,\n    )\n\n    return (\n        path,\n        glob,\n        load_hidden,\n        silent_errors,\n        recursive,\n        use_multithreading,\n        max_concurrency,\n    )\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/embeddings.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\n\n\nclass EmbeddingFrontendNode(FrontendNode):\n\n    @staticmethod\n    def format_jina_fields(field: TemplateField):\n        if 'jina' in field.name:\n            field.show = True\n            field.advanced = False\n\n        if 'auth' in field.name or 'token' in field.name:\n            field.password = True\n            field.show = True\n            field.advanced = False\n\n        if field.name == 'jina_api_url':\n            field.show = True\n            field.advanced = True\n            field.display_name = 'Jina API URL'\n            field.password = False\n\n    @staticmethod\n    def format_openai_fields(field: TemplateField):\n        if 'openai' in field.name:\n            field.show = True\n            field.advanced = True\n            split_name = field.name.split('_')\n            title_name = ' '.join([s.capitalize() for s in split_name])\n            field.display_name = title_name.replace('Openai', 'OpenAI').replace('Api', 'API')\n\n        if 'api_key' in field.name:\n            field.password = True\n            field.show = True\n            field.advanced = False\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        field.advanced = not field.required\n        field.show = True\n        if field.name == 'headers':\n            field.show = False\n            field.value = ''\n\n        if field.name == 'host_base_url':\n            field.show = True\n            field.advanced = False\n\n        if field.name == 'model':\n            field.show = True\n            field.advanced = False\n        if name == 'BishengEmbedding':\n            if field.name == 'model_id':\n                field.show = True\n                field.display_name = 'Model Name'\n                field.field_type = 'bisheng_embedding'\n                field.advanced = False\n            elif field.name in ['model', 'llm_node_type', \"app_type\", \"app_id\", \"app_name\", \"user_id\"]:\n                field.show = False\n\n        # Format Jina fields\n        EmbeddingFrontendNode.format_jina_fields(field)\n        EmbeddingFrontendNode.format_openai_fields(field)\n\n\nclass OpenAIProxyEmbedding(FrontendNode):\n    name: str = 'OpenAIProxyEmbedding'\n    description: str = \"\"\" Use self-builtembeddingService UsageopenaiTo be performedembed \"\"\"\n    base_classes: list[str] = ['Embeddings']\n    template: Template = Template(type_name='proxy_embedding',\n                                  fields=[\n                                      TemplateField(\n                                          field_type='str',\n                                          required=False,\n                                          placeholder='http://43.133.35.137:8080',\n                                          is_list=False,\n                                          show=True,\n                                          multiline=False,\n                                          value='',\n                                          name='proxy_url',\n                                      ),\n                                  ])\n\n    def to_dict(self):\n        return super().to_dict()\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/formatter/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/formatter/base.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom pydantic import BaseModel\n\n\nclass FieldFormatter(BaseModel, ABC):\n\n    @abstractmethod\n    def format(self, field: TemplateField, name: Optional[str]) -> None:\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/formatter/field_formatters.py",
    "content": "import re\nfrom typing import ClassVar, Dict, Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.constants import FORCE_SHOW_FIELDS\nfrom bisheng.template.frontend_node.formatter.base import FieldFormatter\nfrom bisheng.utils.constants import ANTHROPIC_MODELS, CHAT_OPENAI_MODELS, OPENAI_MODELS\n\n\nclass OpenAIAPIKeyFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        if 'api_key' in field.name and 'OpenAI' in str(name):\n            field.display_name = 'OpenAI API Key'\n            field.required = False\n            if field.value is None:\n                field.value = ''\n\n\nclass ModelSpecificFieldFormatter(FieldFormatter):\n    MODEL_DICT: ClassVar[Dict] = {\n        'OpenAI': OPENAI_MODELS,\n        'ChatOpenAI': CHAT_OPENAI_MODELS,\n        'Anthropic': ANTHROPIC_MODELS,\n        'ChatAnthropic': ANTHROPIC_MODELS,\n    }\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        if name in self.MODEL_DICT and field.name == 'model_name':\n            field.options = self.MODEL_DICT[name]\n            field.is_list = True\n\n\nclass KwargsFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        if 'kwargs' in field.name.lower():\n            field.advanced = True\n            field.required = False\n            field.show = False\n\n\nclass APIKeyFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        if 'api' in field.name.lower() and 'key' in field.name.lower():\n            field.required = False\n            field.advanced = False\n\n            field.display_name = field.name.replace('_', ' ').title()\n            field.display_name = field.display_name.replace('Api', 'API')\n\n\nclass RemoveOptionalFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        _type = field.field_type\n        field.field_type = re.sub(r'Optional\\[(.*)\\]', r'\\1', _type)\n\n\nclass ListTypeFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        _type = field.field_type\n        is_list = 'List' in _type or 'Sequence' in _type\n        if is_list:\n            _type = re.sub(r'(List|Sequence)\\[(.*)\\]', r'\\2', _type)\n            field.is_list = True\n        field.field_type = _type\n\n\nclass DictTypeFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        _type = field.field_type\n        _type = _type.replace('Mapping', 'dict')\n        field.field_type = _type\n\n\nclass UnionTypeFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        _type = field.field_type\n        if 'Union' in _type:\n            _type = _type.replace('Union[', '')[:-1]\n            _type = _type.split(',')[0]\n            _type = _type.replace(']', '').replace('[', '')\n        field.field_type = _type\n\n\nclass SpecialFieldFormatter(FieldFormatter):\n    SPECIAL_FIELD_HANDLERS: ClassVar[Dict] = {\n        'allowed_tools': lambda field: 'Tool',\n        'max_value_length': lambda field: 'int',\n    }\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        handler = self.SPECIAL_FIELD_HANDLERS.get(field.name)\n        field.field_type = handler(field) if handler else field.field_type\n\n\nclass ShowFieldFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        key = field.name\n        required = field.required\n        field.show = ((required and (key not in ['input_variables'] or name == 'SequentialChain'))\n                      or key in FORCE_SHOW_FIELDS or 'api' in key\n                      or ('key' in key and 'input' not in key and 'output' not in key))\n\n\nclass PasswordFieldFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        key = field.name\n        show = field.show\n        if (any(text in key.lower() for text in {'password', 'token', 'api', 'key'}) and show):\n            field.password = True\n\n\nclass MultilineFieldFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        key = field.name\n        if key in {\n                'suffix',\n                'prefix',\n                'template',\n                'examples',\n                'code',\n                'headers',\n                'description',\n        }:\n            field.multiline = True\n\n\nclass DefaultValueFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        value = field.to_dict()\n        if 'default' in value:\n            field.value = value['default']\n\n\nclass HeadersDefaultValueFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        key = field.name\n        if key == 'headers':\n            field.value = \"\"\"{'Authorization': 'Bearer <token>'}\"\"\"\n\n\nclass DictCodeFileFormatter(FieldFormatter):\n\n    def format(self, field: TemplateField, name: Optional[str] = None) -> None:\n        key = field.name\n        value = field.to_dict()\n        _type = value['type']\n        if 'dict' in _type.lower() and key == 'dict_':\n            field.field_type = 'file'\n            field.file_types = ['.json', '.yaml', '.yml']\n        elif _type.startswith('Dict') or _type.startswith('Mapping') or _type.startswith('dict'):\n            field.field_type = 'dict'\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/input_output.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\n\n\ndef build_file_field(suffixes: list,\n                     fileTypes: list,\n                     name: str = 'file_path',\n                     fieldType='fileNode') -> TemplateField:\n    \"\"\"Build a template field for a document loader.\"\"\"\n    return TemplateField(\n        field_type=fieldType,\n        required=True,\n        show=True,\n        name=name,\n        value='',\n        suffixes=suffixes,\n        fileTypes=fileTypes,\n    )\n\n\nclass InputOutputNode(FrontendNode):\n    name: str = 'InputOutputNode'\n    base_classes: list[str] = ['input', 'output']\n\n    def add_extra_base_classes(self) -> None:\n        if self.name in {'AudioInputNode', 'FileInputNode'}:\n            self.base_classes.append('input')\n\n    def add_extra_fields(self) -> None:\n        pass\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        if name == 'Report':\n            if field.name == 'memory':\n                field.show = False\n            elif field.name == 'input_node':\n                field.show = False\n            elif field.name == 'chains':\n                field.show = True\n                field.field_type = 'function'\n                field.display_name = 'functions'\n            elif field.name == 'report_name':\n                field.show = True\n                field.display_name = 'Report Name'\n                field.info = 'the file name we generate'\n            elif field.name == 'variables':\n                field.show = True\n                field.field_type = 'VariableNode'\n        if name == 'VariableNode':\n            if field.name == 'variables':\n                field.show = True\n                field.field_type = 'variable'\n                field.required = True\n        if name == 'AudioInputNode':\n            if field.name == 'file_path':\n                field.show = True\n                field.field_type = 'fileNode'\n                field.required = True\n                field.suffixes = ['.mp3']\n                field.fileTypes = ['mp3']\n            elif field.name == 'openai_proxy':\n                field.show = True\n\n        if name == 'FileInputNode':\n            if field.name == 'file_path':\n                field.show = True\n                field.field_type = 'fileNode'\n                field.required = True\n                field.suffixes = ['.jpg', '.png', '.jpeg']\n                field.fileTypes = ['jpg', 'png', 'jpeg']\n            elif field.name == 'openai_proxy':\n                field.show = True\n\n\nclass InputNode(FrontendNode):\n    name: str = 'InputNode'\n    template: Template = Template(\n        type_name='input',\n        fields=[\n            TemplateField(\n                field_type='str',\n                is_list=True,\n                multiline=True,\n                required=True,\n                show=True,\n                name='input',\n                display_name='输入内容',\n            ),\n        ],\n    )\n    description: str = \"\"\"输入节点，用来自动对接输入\"\"\"\n    base_classes: list[str] = ['input']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass InputFileNode(FrontendNode):\n    name: str = 'InputFileNode'\n    template: Template = Template(\n        type_name='InputFileNode',\n        fields=[\n            TemplateField(\n                field_type='file',\n                show=True,\n                name='file_path',\n                value='',\n            ),\n            TemplateField(field_type='str',\n                          show=True,\n                          name='file_type',\n                          placeholder='提示上传文件类型',\n                          display_name='Name',\n                          info='Tips for which file should upload'),\n        ],\n    )\n    description: str = \"\"\"输入节点，用来自动对接输入\"\"\"\n    base_classes: list[str] = ['fileNode']\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        field.show = True\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass OutputNode(FrontendNode):\n    name: str = 'OutputNode'\n    template: Template = Template(\n        type_name='output',\n        fields=[\n            TemplateField(\n                field_type='str',\n                list=False,\n                multiline=True,\n                required=True,\n                show=True,\n                name='output',\n                display_name='展示输出内容',\n            ),\n        ],\n    )\n    description: str = \"\"\"输出节点，用来表示输出\"\"\"\n    base_classes: list[str] = ['output']\n\n    def to_dict(self):\n        return super().to_dict()\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/llms.py",
    "content": "import json\nfrom typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.constants import (CTRANSFORMERS_DEFAULT_CONFIG,\n                                                      OPENAI_API_BASE_INFO)\n\n\nclass LLMFrontendNode(FrontendNode):\n\n    def add_extra_fields(self) -> None:\n        self.template.add_field(\n            TemplateField(field_type='bool',\n                          required=False,\n                          show=True,\n                          advanced=True,\n                          name='cache',\n                          value=True))\n        if 'VertexAI' in self.template.type_name:\n            # Add credentials field which should of type file.\n            self.template.add_field(\n                TemplateField(\n                    field_type='file',\n                    required=False,\n                    show=True,\n                    name='credentials',\n                    value='',\n                    suffixes=['.json'],\n                    fileTypes=['json'],\n                ))\n\n    @staticmethod\n    def format_vertex_field(field: TemplateField, name: str):\n        if 'VertexAI' in name:\n            advanced_fields = [\n                'tuned_model_name',\n                'verbose',\n                'top_p',\n                'top_k',\n                'max_output_tokens',\n            ]\n            if field.name in advanced_fields:\n                field.advanced = True\n            show_fields = [\n                'tuned_model_name',\n                'verbose',\n                'project',\n                'location',\n                'credentials',\n                'max_output_tokens',\n                'model_name',\n                'temperature',\n                'top_p',\n                'top_k',\n            ]\n\n            if field.name in show_fields:\n                field.show = True\n\n    @staticmethod\n    def format_openai_field(field: TemplateField):\n        if 'openai' in field.name.lower():\n            field.display_name = (field.name.title().replace('Openai',\n                                                             'OpenAI').replace('_', ' ')).replace(\n                'Api', 'API')\n\n        if 'key' not in field.name.lower() and 'token' not in field.name.lower():\n            field.password = False\n\n        if field.name == 'openai_api_base':\n            field.info = OPENAI_API_BASE_INFO\n\n        if field.name == 'openai_proxy':\n            field.show = True\n\n    def add_extra_base_classes(self) -> None:\n        if 'BaseLLM' not in self.base_classes:\n            self.base_classes.append('BaseLLM')\n\n    @staticmethod\n    def format_azure_field(field: TemplateField):\n        if field.name == 'model_name':\n            field.show = False  # Azure uses deployment_name instead of model_name.\n        elif field.name == 'openai_api_base':\n            # openai < 1.0.0\n            field.show = False\n        elif field.name == 'openai_api_type':\n            field.show = False\n        elif field.name == 'openai_api_version':\n            field.show = True\n            field.password = False\n        elif field.name == 'azure_endpoint':\n            field.show = True\n        elif field.name == 'openai_api_key':\n            field.show = True\n            field.advanced = False\n        elif field.name == 'deployment_name':\n            field.show = True\n            field.value = 'chatgpt'\n        elif field.name == 'azure_ad_token_provider':\n            field.show = False\n        elif field.name == 'openai_proxy':\n            field.advanced = True\n\n    @staticmethod\n    def format_contribute_field(field: TemplateField):\n        advanced_fields = [\n            'top_p',\n            'top_k',\n            'max_tokens',\n        ]\n        if field.name in advanced_fields:\n            field.advanced = True\n        if field.name == 'headers':\n            field.show = True\n            field.advanced = True\n            field.value = ''\n\n        show_fields = [\n            'model_name',\n            'temperature',\n            'top_p',\n            'top_k',\n            'max_tokens',\n        ]\n        if field.name in show_fields:\n            field.show = True\n\n        if 'api' in field.name.lower() or 'id' in field.name.lower() or 'key' in field.name.lower(\n        ) or 'base' in field.name.lower():\n            field.show = True\n            field.advanced = False\n            field.field_type = 'str'\n\n    @staticmethod\n    def format_llama_field(field: TemplateField):\n        field.show = True\n        field.advanced = not field.required\n\n    @staticmethod\n    def format_ctransformers_field(field: TemplateField):\n        if field.name == 'config':\n            field.show = True\n            field.advanced = True\n            field.value = json.dumps(CTRANSFORMERS_DEFAULT_CONFIG, indent=2)\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        display_names_dict = {\n            'huggingfacehub_api_token': 'HuggingFace Hub API Token',\n        }\n        FrontendNode.format_field(field, name)\n        LLMFrontendNode.format_openai_field(field)\n        LLMFrontendNode.format_ctransformers_field(field)\n        LLMFrontendNode.format_contribute_field(field)\n\n        if name and 'llama' in name.lower() and 'host' not in name.lower():\n            LLMFrontendNode.format_llama_field(field)\n        if name and 'vertex' in name.lower():\n            LLMFrontendNode.format_vertex_field(field, name)\n        SHOW_FIELDS = ['repo_id']\n        HIDDEN_FIELDS = ['custom_get_token_ids']\n        if field.name in SHOW_FIELDS:\n            field.show = True\n        if field.name in HIDDEN_FIELDS:\n            field.show = False\n\n        if 'api' in field.name and ('key' in field.name or\n                                    ('token' in field.name and 'tokens' not in field.name)):\n            field.password = True\n            field.show = True\n            # Required should be False to support\n            # loading the API key from environment variables\n            field.required = False\n            field.advanced = False\n\n        if field.name == 'task':\n            field.required = True\n            field.show = True\n            field.is_list = True\n            field.options = ['text-generation', 'text2text-generation', 'summarization']\n            field.value = field.options[0]\n            field.advanced = True\n\n        if display_name := display_names_dict.get(field.name):\n            field.display_name = display_name\n        if field.name == 'model_kwargs':\n            field.field_type = 'code'\n            field.advanced = True\n            field.show = True\n        elif field.name in [\n            'model_name',\n            'temperature',\n            'model_file',\n            'model_type',\n            'deployment_name',\n            'credentials',\n            'openai_proxy',\n        ]:\n            field.advanced = False\n            field.show = True\n        if field.name == 'credentials':\n            field.field_type = 'file'\n        if name == 'VertexAI' and field.name not in [\n            'callbacks',\n            'client',\n            'stop',\n            'tags',\n            'cache',\n        ]:\n            field.show = True\n        if field.name in ['cache']:\n            field.show = True\n\n        if name and 'azure' in name.lower():\n            LLMFrontendNode.format_azure_field(field)\n\n        # Release the streaming configuration of the component and cancel the global streaming control\n        if field.name == 'streaming':\n            field.show = True\n\n        if name == 'BishengLLM':\n            if field.name in [\"temperature\", \"top_p\", \"cache\"]:\n                field.show = True\n            if field.name == 'model_id':\n                field.field_type = \"bisheng_model\"\n                field.display_name = \"Model Name\"\n            elif field.name in ['model_name', \"app_type\", \"app_id\", \"app_name\", \"user_id\"]:\n                field.show = False\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/memories.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.constants import INPUT_KEY_INFO, OUTPUT_KEY_INFO\nfrom bisheng.template.template.base import Template\nfrom langchain_community.chat_message_histories.mongodb import (DEFAULT_COLLECTION_NAME,\n                                                                DEFAULT_DBNAME)\nfrom langchain_community.chat_message_histories.postgres import DEFAULT_CONNECTION_STRING\n\n\nclass MemoryFrontendNode(FrontendNode):\n    # ! Needs testing\n    def add_extra_fields(self) -> None:\n        # chat history should have another way to add common field?\n        # prevent adding incorect field in ChatMessageHistory\n        base_message_classes = ['BaseEntityStore', 'BaseChatMessageHistory']\n        if any(base_class in self.base_classes for base_class in base_message_classes):\n            return\n\n        # add return_messages field\n        self.template.add_field(\n            TemplateField(\n                field_type='bool',\n                required=False,\n                show=True,\n                name='return_messages',\n                advanced=False,\n                value=False,\n            ))\n        # add input_key and output_key str fields\n        self.template.add_field(\n            TemplateField(\n                field_type='str',\n                required=False,\n                show=True,\n                name='input_key',\n                advanced=True,\n                value='',\n            ))\n        if self.template.type_name not in {'VectorStoreRetrieverMemory'}:\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=False,\n                    show=True,\n                    name='output_key',\n                    advanced=True,\n                    value='',\n                ))\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n\n        if not isinstance(field.value, str):\n            field.value = None\n        if field.name == 'k':\n            field.required = True\n            field.show = True\n            field.field_type = 'int'\n            field.value = 10\n            field.display_name = 'Memory Size'\n        field.password = False\n        if field.name == 'return_messages':\n            field.required = False\n            field.show = True\n            field.advanced = False\n        if field.name in {'input_key', 'output_key'}:\n            field.required = False\n            field.show = True\n            field.advanced = False\n            field.value = 'answer' if field.name == 'output_key' else ''\n            field.info = (INPUT_KEY_INFO if field.name == 'input_key' else OUTPUT_KEY_INFO)\n\n        if field.name == 'memory_key':\n            field.value = 'chat_history'\n        if field.name == 'chat_memory':\n            field.show = True\n            field.advanced = False\n            field.required = False\n        if field.name == 'url':\n            field.show = True\n        if field.name == 'entity_store':\n            field.show = False\n        if name == 'ConversationEntityMemory' and field.name == 'memory_key':\n            field.show = False\n            field.required = False\n\n\nclass PostgresChatMessageHistoryFrontendNode(MemoryFrontendNode):\n    name: str = 'PostgresChatMessageHistory'\n    template: Template = Template(\n        type_name='PostgresChatMessageHistory',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                name='session_id',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                show=True,\n                name='connection_string',\n                value=DEFAULT_CONNECTION_STRING,\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value='message_store',\n                name='table_name',\n            ),\n        ],\n    )\n    description: str = 'Memory store with Postgres'\n    base_classes: list[str] = ['PostgresChatMessageHistory', 'BaseChatMessageHistory']\n\n\nclass MongoDBChatMessageHistoryFrontendNode(MemoryFrontendNode):\n    name: str = 'MongoDBChatMessageHistory'\n    template: Template = Template(\n        # langchain/memory/chat_message_histories/mongodb.py\n        # connection_string: str,\n        #     session_id: str,\n        #     database_name: str = DEFAULT_DBNAME,\n        #     collection_name: str = DEFAULT_COLLECTION_NAME,\n        type_name='MongoDBChatMessageHistory',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                name='session_id',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                show=True,\n                name='connection_string',\n                value='',\n                info='MongoDB connection string (e.g mongodb://mongo_user:password123@mongo:27017)',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value=DEFAULT_DBNAME,\n                name='database_name',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value=DEFAULT_COLLECTION_NAME,\n                name='collection_name',\n            ),\n        ],\n    )\n    description: str = 'Memory store with MongoDB'\n    base_classes: list[str] = ['MongoDBChatMessageHistory', 'BaseChatMessageHistory']\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/output_parsers.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\n\nclass OutputParserFrontendNode(FrontendNode):\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        field.show = True\n\n\n# class RouterOutputParserFrontendNode(FrontendNode):\n#     @staticmethod\n#     def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n#         FrontendNode.format_field(field, name)\n#         field.show = True\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/prompts.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.frontend_node.constants import DEFAULT_PROMPT, HUMAN_PROMPT, SYSTEM_PROMPT\nfrom bisheng.template.template.base import Template\nfrom langchain.agents.mrkl import prompt\n\n\nclass PromptFrontendNode(FrontendNode):\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        # if field.field_type  == \"StringPromptTemplate\"\n        # change it to str\n        PROMPT_FIELDS = [\n            'template',\n            'suffix',\n            'prefix',\n            'examples',\n            'format_instructions',\n        ]\n        if field.field_type == 'StringPromptTemplate' and 'Message' in str(name):\n            field.field_type = 'prompt'\n            field.multiline = True\n            field.value = HUMAN_PROMPT if 'Human' in field.name else SYSTEM_PROMPT\n        if field.name == 'template' and field.value == '':\n            field.value = DEFAULT_PROMPT\n        if field.name == 'output_parser':\n            field.show = True\n        if field.name in PROMPT_FIELDS:\n            field.field_type = 'prompt'\n            field.advanced = False\n\n        if 'Union' in field.field_type:\n            if 'BaseMessagePromptTemplate' in field.field_type:\n                field.field_type = 'BaseMessagePromptTemplate'\n            elif 'StringPromptTemplate' in field.field_type:\n                field.field_type = 'StringPromptTemplate'\n\n        # All prompt fields should be password=False\n        field.password = False\n\n\nclass PromptTemplateNode(FrontendNode):\n    name: str = 'PromptTemplate'\n    template: Template\n    description: str\n    base_classes: list[str] = ['BasePromptTemplate']\n\n    def to_dict(self):\n        return super().to_dict()\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        if field.name == 'examples':\n            field.advanced = False\n\n\nclass BasePromptFrontendNode(FrontendNode):\n    name: str\n    template: Template\n    description: str\n    base_classes: list[str]\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass ZeroShotPromptNode(BasePromptFrontendNode):\n    name: str = 'ZeroShotPrompt'\n    template: Template = Template(\n        type_name='ZeroShotPrompt',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=False,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=True,\n                value=prompt.PREFIX,\n                name='prefix',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=True,\n                value=prompt.FORMAT_INSTRUCTIONS,\n                name='format_instructions',\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=True,\n                value=prompt.SUFFIX,\n                name='suffix',\n            ),\n        ],\n    )\n    description: str = 'Prompt template for Zero Shot Agent.'\n    base_classes: list[str] = ['BasePromptTemplate']\n\n    def to_dict(self):\n        return super().to_dict()\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        PromptFrontendNode.format_field(field, name)\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/retrievers.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\nSTRATEGY_TYPES = ['keyword_front', 'vector_front', 'mix']\n\n\nclass RetrieverFrontendNode(FrontendNode):\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        # Define common field attributes\n        field.show = True\n        if field.name == 'parser_key':\n            field.display_name = 'Parser Key'\n            field.password = False\n            field.advanced = True\n            field.show = False\n        if field.name == 'combine_strategy' and name == 'MixEsVectorRetriever':\n            field.field_type = 'str'\n            field.required = True\n            field.is_list = True\n            field.show = True\n            field.multiline = False\n            field.options = STRATEGY_TYPES\n            field.value = STRATEGY_TYPES[0]\n            field.name = 'combine_strategy'\n            field.advanced = False\n        if field.name in {'metadata', 'tags'} and name == 'MixEsVectorRetriever':\n            field.show = True\n            field.advanced = True\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/textsplitters.py",
    "content": "from bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom langchain.text_splitter import Language\n\n\nclass TextSplittersFrontendNode(FrontendNode):\n    def add_extra_base_classes(self) -> None:\n        self.base_classes = ['Document']\n        self.output_types = ['Document']\n\n    def add_extra_fields(self) -> None:\n        self.template.add_field(\n            TemplateField(\n                field_type='Document',\n                required=True,\n                show=True,\n                name='documents',\n            )\n        )\n        name = 'separator'\n        if self.template.type_name == 'CharacterTextSplitter':\n            name = 'separator'\n        elif self.template.type_name == 'RecursiveCharacterTextSplitter':\n            name = 'separators'\n            # Add a field for type of separator\n            # which will have Text or any value from the\n            # Language enum\n            options = [x.value for x in Language] + ['Text']\n            options.sort()\n            self.template.add_field(\n                TemplateField(\n                    field_type='str',\n                    required=True,\n                    show=True,\n                    name='separator_type',\n                    advanced=False,\n                    is_list=True,\n                    options=options,\n                    value='Text',\n                    display_name='Separator Type',\n                )\n            )\n        self.template.add_field(\n            TemplateField(\n                field_type='str',\n                required=True,\n                show=True,\n                value='\\\\n',\n                name=name,\n                display_name='Separator',\n            )\n        )\n        self.template.add_field(\n            TemplateField(\n                field_type='int',\n                required=True,\n                show=True,\n                value=1000,\n                name='chunk_size',\n                display_name='Chunk Size',\n            )\n        )\n        self.template.add_field(\n            TemplateField(\n                field_type='int',\n                required=True,\n                show=True,\n                value=200,\n                name='chunk_overlap',\n                display_name='Chunk Overlap',\n            )\n        )\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/tools.py",
    "content": "from bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom bisheng.template.template.base import Template\nfrom bisheng.utils.constants import DEFAULT_PYTHON_FUNCTION\n\n\nclass ToolNode(FrontendNode):\n    name: str = 'Tool'\n    template: Template = Template(\n        type_name='Tool',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=True,\n                value='',\n                name='name',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=True,\n                value='',\n                name='description',\n                advanced=False,\n            ),\n            TemplateField(\n                name='func',\n                field_type='function',\n                required=True,\n                is_list=False,\n                show=True,\n                multiline=True,\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='bool',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value=False,\n                name='return_direct',\n            ),\n            TemplateField(\n                field_type='NestedDict',\n                required=True,\n                placeholder='',\n                show=True,\n                multiline=True,\n                value='{\"arg1\": {\"type\": \"string\"}}',\n                name='args_schema',\n            ),\n        ],\n    )\n    description: str = 'Converts a chain, agent or function into a tool.'\n    base_classes: list[str] = ['Tool', 'BaseTool']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass PythonFunctionToolNode(FrontendNode):\n    name: str = 'PythonFunctionTool'\n    template: Template = Template(\n        type_name='PythonFunctionTool',\n        fields=[\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value='',\n                name='name',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='str',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value='',\n                name='description',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='code',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                value=DEFAULT_PYTHON_FUNCTION,\n                name='code',\n                advanced=False,\n            ),\n            TemplateField(\n                field_type='bool',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                multiline=False,\n                value=False,\n                name='return_direct',\n            ),\n        ],\n    )\n    description: str = 'Python function to be executed.'\n    base_classes: list[str] = ['BaseTool', 'Tool']\n\n    def to_dict(self):\n        return super().to_dict()\n\n\nclass PythonFunctionNode(FrontendNode):\n    name: str = 'PythonFunction'\n    template: Template = Template(\n        type_name='PythonFunction',\n        fields=[\n            TemplateField(\n                field_type='code',\n                required=True,\n                placeholder='',\n                is_list=False,\n                show=True,\n                value=DEFAULT_PYTHON_FUNCTION,\n                name='code',\n                advanced=False,\n            )\n        ],\n    )\n    description: str = 'Python function to be executed.'\n    base_classes: list[str] = ['function']\n\n    def to_dict(self):\n        return super().to_dict()\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/utilities.py",
    "content": "import ast\nimport json\nfrom typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\n\nclass UtilitiesFrontendNode(FrontendNode):\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        # field.field_type could be \"Literal['news', 'search', 'places', 'images']\n        # we need to convert it to a list\n        if 'Literal' in field.field_type:\n            field.options = ast.literal_eval(field.field_type.replace('Literal', ''))\n            field.is_list = True\n            field.field_type = 'str'\n\n        if isinstance(field.value, dict):\n            field.field_type = 'code'\n            field.value = json.dumps(field.value, indent=4)\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/vectorstores.py",
    "content": "from typing import List, Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\n\n\nclass VectorStoreFrontendNode(FrontendNode):\n\n    def add_extra_fields(self) -> None:\n        extra_fields: List[TemplateField] = []\n        # Add search_kwargs field\n        extra_field = TemplateField(\n            name='search_kwargs',\n            field_type='code',\n            required=False,\n            placeholder='',\n            show=True,\n            advanced=True,\n            multiline=False,\n            value='{}',\n        )\n        extra_field2 = TemplateField(\n            name='search_type',\n            field_type='str',\n            required=False,\n            placeholder='',\n            value='similarity',\n        )\n        extra_fields.append(extra_field2)\n        extra_fields.append(extra_field)\n\n        if self.template.type_name == 'Weaviate':\n            extra_field = TemplateField(\n                name='weaviate_url',\n                field_type='str',\n                required=True,\n                placeholder='http://localhost:8080',\n                show=True,\n                advanced=False,\n                multiline=False,\n                value='http://localhost:8080',\n            )\n            # Add client_kwargs field\n            extra_field2 = TemplateField(\n                name='client_kwargs',\n                field_type='code',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                value='{}',\n            )\n            extra_fields.extend((extra_field, extra_field2))\n\n        elif self.template.type_name == 'Chroma':\n            # New bool field for persist parameter\n            extra_field = TemplateField(\n                name='persist',\n                field_type='bool',\n                required=False,\n                show=True,\n                advanced=False,\n                value=False,\n                display_name='Persist',\n            )\n            extra_fields.append(extra_field)\n        elif self.template.type_name == 'Pinecone':\n            # add pinecone_api_key and pinecone_env\n            extra_field = TemplateField(\n                name='pinecone_api_key',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                password=True,\n                value='',\n            )\n            extra_field2 = TemplateField(\n                name='pinecone_env',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                value='',\n            )\n            extra_fields.extend((extra_field, extra_field2))\n        elif self.template.type_name == 'FAISS':\n            extra_field = TemplateField(\n                name='folder_path',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                display_name='Local Path',\n                value='',\n            )\n            extra_field2 = TemplateField(\n                name='index_name',\n                field_type='str',\n                required=False,\n                show=True,\n                advanced=False,\n                value='',\n                display_name='Index Name',\n            )\n            extra_fields.extend((extra_field, extra_field2))\n        elif self.template.type_name == 'SupabaseVectorStore':\n            self.display_name = 'Supabase'\n            # Add table_name and query_name\n            extra_field = TemplateField(\n                name='table_name',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                value='',\n            )\n            extra_field2 = TemplateField(\n                name='query_name',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                value='',\n            )\n            # Add supabase_url and supabase_service_key\n            extra_field3 = TemplateField(\n                name='supabase_url',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                value='',\n            )\n            extra_field4 = TemplateField(\n                name='supabase_service_key',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                password=True,\n                value='',\n            )\n            extra_fields.extend((extra_field, extra_field2, extra_field3, extra_field4))\n\n        elif self.template.type_name == 'MongoDBAtlasVectorSearch':\n            self.display_name = 'MongoDB Atlas'\n\n            extra_field = TemplateField(\n                name='mongodb_atlas_cluster_uri',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                display_name='MongoDB Atlas Cluster URI',\n                value='',\n            )\n            extra_field2 = TemplateField(\n                name='collection_name',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                display_name='Collection Name',\n                value='',\n            )\n            extra_field3 = TemplateField(\n                name='db_name',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                display_name='Database Name',\n                value='',\n            )\n            extra_field4 = TemplateField(\n                name='index_name',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=True,\n                multiline=False,\n                display_name='Index Name',\n                value='',\n            )\n            extra_fields.extend((extra_field, extra_field2, extra_field3, extra_field4))\n\n        elif self.template.type_name == 'ElasticKeywordsSearch':\n            extra_field = TemplateField(\n                name='elasticsearch_url',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=False,\n                multiline=False,\n                display_name='ES_connection_url',\n                value='',\n            )\n            extra_field2 = TemplateField(\n                name='ssl_verify',\n                field_type='str',\n                required=False,\n                placeholder='',\n                show=True,\n                advanced=False,\n                multiline=False,\n                display_name='ssl_verify',\n                value='',\n            )\n            extra_field3 = TemplateField(\n                name='llm',\n                field_type='BaseLLM',\n                required=False,\n                show=True,\n                advanced=False,\n                display_name='LLM',\n            )\n            extra_field4 = TemplateField(\n                name='prompt',\n                field_type='BasePromptTemplate',\n                required=False,\n                show=True,\n                advanced=False,\n                display_name='prompt',\n            )\n            extra_fields.extend((extra_field, extra_field2, extra_field3, extra_field4))\n\n        elif self.template.type_name == 'ElasticsearchStore':\n            extra_fields.append(\n                TemplateField(\n                    name='embedding',\n                    field_type='str',\n                    required=False,\n                    placeholder='',\n                    show=True,\n                    advanced=False,\n                    multiline=False,\n                    value='',\n                ))\n            extra_fields.append(\n                TemplateField(\n                    name='connect_kwargs',\n                    field_type='dict',\n                    required=True,\n                    show=True,\n                    advanced=False,\n                    multiline=False,\n                    value={\n                        'es_url': 'http://bisheng-es:9200',\n                        'es_user': 'elastic',\n                        'es_password': ''\n                    },\n                ))\n            extra_fields.append(\n                TemplateField(name='index_name',\n                              field_type='str',\n                              required=False,\n                              show=True,\n                              advanced=False,\n                              multiline=False))\n\n        if extra_fields:\n            for field in extra_fields:\n                self.template.add_field(field)\n\n    def add_extra_base_classes(self) -> None:\n        self.base_classes.extend(('BaseRetriever', 'VectorStoreRetriever'))\n        if self.name == 'ElasticsearchWithPermissionCheck':\n            self.base_classes.append('ElasticKeywordsSearch')\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        # Define common field attributes\n        basic_fields = [\n            'work_dir', 'collection_name', 'api_key', 'location', 'persist_directory', 'persist',\n            'weaviate_url', 'index_name', 'namespace', 'folder_path', 'table_name', 'query_name',\n            'supabase_url', 'supabase_service_key', 'mongodb_atlas_cluster_uri', 'collection_name',\n            'db_name', 'ssl_verify', 'elasticsearch_url', 'llm', 'prompt', 'connect_kwargs'\n        ]\n        advanced_fields = [\n            'n_dim', 'key', 'prefix', 'distance_func', 'content_payload_key',\n            'metadata_payload_key', 'timeout', 'host', 'path', 'url', 'port', 'https',\n            'prefer_grpc', 'grpc_port', 'pinecone_api_key', 'pinecone_env', 'client_kwargs',\n            'search_kwargs', 'search_type'\n        ]\n\n        # Check and set field attributes\n        if field.name == 'texts':\n            # if field.name is \"texts\" it has to be replaced\n            # when instantiating the vectorstores\n            field.name = 'documents'\n\n            field.field_type = 'Document'\n            field.display_name = 'Documents'\n            field.required = False\n            field.show = True\n            field.advanced = False\n            if name == 'MilvusWithPermissionCheck' or name == 'ElasticsearchWithPermissionCheck':\n                field.show = False\n                field.advanced = True\n\n        elif 'embedding' in field.name:\n            # for backwards compatibility\n            field.name = 'embedding'\n            field.required = True\n            field.show = True\n            field.advanced = False\n            field.display_name = 'Embedding'\n            field.field_type = 'Embeddings'\n            if name == 'ElasticKeywordsSearch':\n                field.show = False\n                field.required = False\n            elif name in ['MilvusWithPermissionCheck', 'ElasticsearchWithPermissionCheck']:\n                field.advanced = True\n                field.show = False\n                field.required = False\n\n        elif field.name == 'collection_name':\n            field.show = True\n            field.advanced = False\n            field.value = ''\n            field.field_type = 'knowledge_one'  # Knowledge base radio type, front-end rendering radio list\n            if name == 'MilvusWithPermissionCheck':\n                field.is_list = True\n                field.field_type = 'knowledge_list'  # Knowledge base multi-select type, front-end rendering multi-select list\n                field.required = True\n        elif field.name == 'index_name':\n            field.show = True\n            field.advanced = False\n            field.value = ''\n            field.field_type = 'knowledge_one'\n            if name == 'ElasticsearchWithPermissionCheck':\n                field.is_list = True\n                field.field_type = 'knowledge_list'  # Knowledge base multi-select type, front-end rendering multi-select list\n                field.required = True\n\n        elif field.name in basic_fields:\n            field.show = True\n            field.advanced = False\n            if field.name == 'api_key':\n                field.display_name = 'API Key'\n                field.password = True\n            elif field.name == 'location':\n                field.value = ':memory:'\n                field.placeholder = ':memory:'\n\n        elif field.name in advanced_fields:\n            field.show = True\n            field.advanced = True\n            if 'key' in field.name:\n                field.password = False\n\n        elif field.name == 'text_key':\n            field.show = False\n\n        elif field.name == 'connection_args':\n            field.show = True\n            field.advanced = False\n            field.value = ''\n            if name in ['MilvusWithPermissionCheck', 'ElasticsearchWithPermissionCheck']:\n                field.show = False\n                field.advanced = True\n"
  },
  {
    "path": "src/backend/bisheng/template/frontend_node/wrappers.py",
    "content": "from typing import Optional\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.template.frontend_node.base import FrontendNode\nfrom sqlmodel import true\n\n\nclass WrappersFrontendNode(FrontendNode):\n    name: str = 'WrappersFrontendNode'\n\n    @staticmethod\n    def format_field(field: TemplateField, name: Optional[str] = None) -> None:\n        FrontendNode.format_field(field, name)\n        if name == 'DallEAPIWrapper':\n            if field.name == 'model_name':\n                field.show = True\n                field.name = 'model'\n                field.value = 'dall-e-3'\n            elif field.name == 'openai_api_key':\n                field.show = true\n                field.name = 'api_key'\n                field.display_name = 'openai_api_key'\n                field.password = true\n            elif field.name == 'openai_api_base':\n                field.show = True\n                field.name = 'api_base'\n                field.display_name = 'openai_api_base'\n            elif field.name == 'openai_proxy':\n                field.show = True\n            elif field.name == 'n':\n                field.show = True\n                field.field_type = 'int'\n                field.value = 1\n                field.info = '生成图片数量，使用dalle3 只能填1'\n                field.advanced = True\n            elif field.name == 'size':\n                field.show = True\n                field.is_list = True\n                field.field_type = 'str'\n                field.options = ['256x256', '512x512', '1024x1024', '1024x1792', '1792x1024']\n                field.value = field.options[2]\n                field.advanced = True\n            elif field.name == 'quality':\n                field.show = True\n                field.field_type = 'str'\n                field.advanced = True\n                field.value = 'standard'\n            elif field.name == 'request_timeout':\n                field.show = True\n                field.name = 'timeout'\n                field.value = 30\n"
  },
  {
    "path": "src/backend/bisheng/template/template/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/template/template/base.py",
    "content": "from typing import Callable, Optional, Union\n\nfrom bisheng.template.field.base import TemplateField\nfrom bisheng.utils.constants import DIRECT_TYPES\nfrom pydantic import BaseModel\n\n\nclass Template(BaseModel):\n    type_name: str\n    fields: list[TemplateField]\n\n    def process_fields(\n            self,\n            name: Optional[str] = None,\n            format_field_func: Union[Callable, None] = None,\n    ):\n        if format_field_func:\n            for field in self.fields:\n                format_field_func(field, name)\n\n    def sort_fields(self):\n        # first sort alphabetically\n        # then sort fields so that fields that have .field_type in DIRECT_TYPES are first\n        self.fields.sort(key=lambda x: x.name)\n        self.fields.sort(key=lambda x: x.field_type in DIRECT_TYPES, reverse=False)\n\n    def to_dict(self, format_field_func=None):\n        self.process_fields(self.type_name, format_field_func)\n        self.sort_fields()\n        result = {field.name: field.to_dict() for field in self.fields}\n        result['_type'] = self.type_name  # type: ignore\n        return result\n\n    def add_field(self, field: TemplateField) -> None:\n        self.fields.append(field)\n\n    def get_field(self, field_name: str) -> TemplateField:\n        \"\"\"Returns the field with the given name.\"\"\"\n        field = next((field for field in self.fields if field.name == field_name), None)\n        if field is None:\n            raise ValueError(f'Field {field_name} not found in template {self.type_name}')\n        return field\n\n    def update_field(self, field_name: str, field: TemplateField) -> None:\n        \"\"\"Updates the field with the given name.\"\"\"\n        for idx, template_field in enumerate(self.fields):\n            if template_field.name == field_name:\n                self.fields[idx] = field\n                return\n        raise ValueError(f'Field {field_name} not found in template {self.type_name}')\n\n    def upsert_field(self, field_name: str, field: TemplateField) -> None:\n        \"\"\"Updates the field with the given name or adds it if it doesn't exist.\"\"\"\n        try:\n            self.update_field(field_name, field)\n        except ValueError:\n            self.add_field(field)\n"
  },
  {
    "path": "src/backend/bisheng/tool/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/api/tool.py",
    "content": "import json\nfrom typing import Optional, Dict\n\nfrom fastapi import APIRouter, Depends, Body, Request\n\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.schemas.api import UnifiedResponseModel, resp_200\nfrom bisheng.mcp_manage.langchain.tool import McpTool\nfrom bisheng.mcp_manage.manager import ClientManager\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsTypeRead\nfrom bisheng.tool.domain.schemas import TestToolReq\nfrom bisheng.tool.domain.services.openapi import OpenApiSchema\nfrom bisheng.tool.domain.services.tool import ToolServices\nfrom bisheng_langchain.gpts.tools.api_tools.openapi import OpenApiTools\n\nrouter = APIRouter(prefix='/tool', tags=['Tool'])\n\n\n@router.get('')\nasync def get_tool_list(*,\n                        is_preset: Optional[int] = None,\n                        login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\"Query all visibletool Vertical\"\"\"\n    res = await ToolServices(login_user=login_user).get_tool_list(is_preset)\n    return resp_200(data=res)\n\n\n@router.post('')\nasync def add_tool_type(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                        req: Dict = Body(default={})):\n    \"\"\" Add customizationtool \"\"\"\n    req = GptsToolsTypeRead(**req)\n    services = ToolServices(request=request, login_user=login_user)\n\n    return resp_200(data=await services.add_tools(req))\n\n\n@router.put('')\nasync def update_tool_type(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           req: Dict = Body(default={})):\n    \"\"\" Custom field updated.tool \"\"\"\n    req = GptsToolsTypeRead(**req)\n    services = ToolServices(request=request, login_user=login_user)\n\n    return resp_200(data=await services.update_tools(req))\n\n\n@router.delete('')\nasync def delete_tool_type(*, request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                           tool_type_id: int = Body(..., embed=True)):\n    \"\"\" Remove Customizer \"\"\"\n    services = ToolServices(request=request, login_user=login_user)\n\n    await services.delete_tools(tool_type_id)\n    return resp_200()\n\n\n@router.post('/config')\nasync def update_tool_config(*,\n                             login_user: UserPayload = Depends(UserPayload.get_admin_user),\n                             tool_id: int = Body(description='Tool Category UniqueID'),\n                             extra: Dict = Body(..., description='Configuration information for the tool')):\n    \"\"\" Update the configuration of the tool \"\"\"\n    data = await ToolServices(login_user=login_user).update_tool_config(tool_id, extra)\n    return resp_200(data=data)\n\n\n@router.post('/schema')\nasync def get_tool_schema(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                          download_url: Optional[str] = Body(default=None,\n                                                             description='MengunduhurlIf it is not empty, download it firsturl'),\n                          file_content: Optional[str] = Body(default=None, description='files uploaded')):\n    \"\"\" Download or parseopenapi schemaThe contents of the Convert to Assistant Customizer Format \"\"\"\n    services = ToolServices(request=request, login_user=login_user)\n    tool_type = await services.parse_openapi_schema(download_url, file_content)\n    return resp_200(data=tool_type)\n\n\n@router.post('/mcp/schema')\nasync def get_mcp_tool_schema(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user),\n                              file_content: Optional[str] = Body(default=None, embed=True,\n                                                                 description='mcpService Configuration Content')):\n    \"\"\" analyzingmcpTool Profile \"\"\"\n    services = ToolServices(request=request, login_user=login_user)\n    tool_type = await services.parse_mcp_schema(file_content)\n    return resp_200(data=tool_type)\n\n\n@router.post('/test')\nasync def tool_run(*, login_user: UserPayload = Depends(UserPayload.get_login_user), req: TestToolReq):\n    \"\"\" Test custom tool \"\"\"\n    extra = json.loads(req.extra)\n    extra.update({'api_location': req.api_location, 'parameter_name': req.parameter_name})\n    tool_params = OpenApiSchema.parse_openapi_tool_params('test', 'test', json.dumps(extra),\n                                                          req.server_host, req.auth_method,\n                                                          req.auth_type, req.api_key)\n\n    openapi_tool = OpenApiTools.get_api_tool('test', **tool_params)\n    resp = await openapi_tool.arun(req.request_params)\n    return resp_200(data=resp)\n\n\n@router.post('/mcp/test')\nasync def mcp_tool_run(login_user: UserPayload = Depends(UserPayload.get_login_user),\n                       req: TestToolReq = None):\n    \"\"\" TestmcpTools for Services \"\"\"\n    # Instantiatemcpservice object, getting a list of tools\n    client = await ClientManager.connect_mcp_from_json(req.openapi_schema)\n    extra = json.loads(req.extra)\n    tool_name = extra.get('name')\n    mcp_tool = McpTool.get_mcp_tool(name=tool_name, description=extra.get(\"description\"), mcp_client=client,\n                                    mcp_tool_name=tool_name, arg_schema=extra.get('inputSchema', {}))\n    resp = await mcp_tool.arun(req.request_params)\n    return resp_200(data=resp)\n\n\n@router.post('/mcp/refresh')\nasync def refresh_all_mcp_tools(request: Request, login_user: UserPayload = Depends(UserPayload.get_login_user)):\n    \"\"\" Refresh all of the user's currentmcpTools List \"\"\"\n    services = ToolServices(request=request, login_user=login_user)\n    error_name = await services.refresh_all_mcp()\n    return resp_200(data=error_name)\n\n\n@router.get(\"/linsight/preset\", summary=\"Get a list of Ideas presets\", response_model=UnifiedResponseModel)\nasync def get_linsight_tools():\n    \"\"\"\n    Get a list of Ideas presets\n    \"\"\"\n    tools = await ToolServices.get_linsight_tools()\n    return resp_200(data=tools)\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/domain/const.py",
    "content": "from enum import Enum\n\n\nclass ToolPresetType(Enum):\n    PRESET = 1  # Provisioning Tools\n    API = 0  # CustomizableAPITools\n    MCP = 2  # mcpTypes of Tools\n\n\nclass AuthMethod(Enum):\n    NO = 0\n    API_KEY = 1\n\n\nclass AuthType(Enum):\n    BASIC = \"basic\"\n    BEARER = \"bearer\"\n    CUSTOM = \"custom\"\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/langchain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/domain/langchain/knowledge.py",
    "content": "from typing import Any, Type, List, Optional\n\nfrom langchain.chains.combine_documents import create_stuff_documents_chain\nfrom langchain_core.documents import Document, BaseDocumentCompressor\nfrom langchain_core.language_models import BaseChatModel\nfrom langchain_core.prompts import SystemMessagePromptTemplate, HumanMessagePromptTemplate, ChatPromptTemplate\nfrom langchain_core.retrievers import BaseRetriever\nfrom langchain_core.tools import BaseTool\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.core.ai.rerank.rrf_rerank import RRFRerank\n\nsystem_template = \"\"\"# 任务\n你是一位知识库问答助手，遵守以下规则回答问题：\n1. 严谨、专业地回答用户的问题。\n2. 回答时须严格基于【参考文本】中的内容：\n- 如果【参考文本】中有明确与用户问题相关的文字内容，请依据相关内容进行回答；如果【参考文本】中没有任何与用户问题相关的内容，则直接回复：“没有找到相关内容”。\n- 如果相关内容中包含 markdown 格式的图片（例如 ![image](路径/IMAGE_1.png)），必须严格保留其原始 markdown 格式，不得添加引号、代码块（`或```）或其他特殊符号，也不得修改图片路径，保证可以正常渲染 markdown 图片。\n3. 当【参考文本】中的内容来源于多个不同的信息源时，若相关内容存在明显差异或冲突，请分别列出这些差异或冲突的答案；若无差异或冲突，只给出一个统一的回答即可。\n\n# 参考文本\n{context}\"\"\"\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(\"{question}\"),\n]\nCHAT_PROMPT = ChatPromptTemplate.from_messages(messages)\n\n\nclass ToolInputSchema(BaseModel):\n    query: str = Field(description='question asked by the user.')\n\n\nclass KnowledgeRetrieverTool(BaseTool):\n    name: str = \"knowledge_retriever_tool\"\n    description: str = \"在知识库中检索与查询相关的文档内容。\"\n    args_schema: Type[BaseModel] = ToolInputSchema\n\n    vector_retriever: Optional[BaseRetriever] = None\n    elastic_retriever: Optional[BaseRetriever] = None\n    rerank: Optional[BaseDocumentCompressor] = None\n    max_content: int = Field(default=15000, description='The max length of the combined document content.')\n    sort_by_source_and_index: bool = Field(default=False, description='Sort by document name & chunk index.')\n    rrf_weights: List[float] = Field(default=None)\n    rrf_remove_zero_score: bool = Field(default=False)\n\n    def _run(self, query: str, **kwargs: Any) -> List[Document]:\n        milvus_docs, es_docs = [], []\n        if self.vector_retriever:\n            milvus_docs = self.vector_retriever.invoke(query)\n        if self.elastic_retriever:\n            es_docs = self.elastic_retriever.invoke(query)\n\n        finally_docs = self._rrf_rerank(milvus_docs, es_docs, query)\n\n        if self.rerank:\n            finally_docs = self.rerank.compress_documents(finally_docs, query)\n        return finally_docs\n\n    async def _arun(self, query: str, **kwargs: Any) -> List[Document]:\n        milvus_docs, es_docs = [], []\n        if self.vector_retriever:\n            milvus_docs = await self.vector_retriever.ainvoke(query)\n        if self.elastic_retriever:\n            es_docs = await self.elastic_retriever.ainvoke(query)\n\n        finally_docs = self._rrf_rerank(milvus_docs, es_docs, query)\n\n        if self.rerank:\n            finally_docs = await self.rerank.acompress_documents(finally_docs, query)\n        return finally_docs\n\n    def _rrf_rerank(self, milvus_docs: List[Document], es_docs: List[Document], query: str) -> List[Document]:\n        if not milvus_docs and not es_docs:\n            return []\n        rrf_rerank = RRFRerank(retrievers=[self.vector_retriever, self.elastic_retriever],\n                               weights=self.rrf_weights,\n                               remove_zero_score=self.rrf_remove_zero_score)\n        finally_docs = rrf_rerank.compress_documents(documents=[es_docs, milvus_docs], query=query)\n\n        # limit by max_chunk_size\n        doc_num, doc_content_sum = 0, 0\n        same_file_id = set()\n\n        for doc in finally_docs:\n            if doc_content_sum > self.max_content:\n                break\n            doc_content_sum += len(doc.page_content)\n            same_file_id.add((doc.metadata.get('document_id'), doc.metadata.get('document_name')))\n            doc_num += 1\n        finally_docs = finally_docs[:doc_num]\n\n        # sort by source and index if only one file\n        if self.sort_by_source_and_index and len(same_file_id) == 1:\n            finally_docs = sorted(finally_docs,\n                                  key=lambda x: (x.metadata.get('document_name', \"\"), x.metadata.get('chunk_index', 0)))\n        return finally_docs\n\n\nclass KnowledgeRagTool(BaseTool):\n    name: str\n    description: str\n    args_schema: Type[BaseModel] = ToolInputSchema\n\n    llm: BaseChatModel\n    chat_prompt: Optional[ChatPromptTemplate] = CHAT_PROMPT\n\n    vector_retriever: Optional[BaseRetriever] = None\n    elastic_retriever: Optional[BaseRetriever] = None\n    max_content: int = Field(default=15000, description='The max length of the combined document content.')\n    sort_by_source_and_index: bool = Field(default=False, description='Sort by document name & chunk index.')\n    rrf_weights: List[float] = Field(default=None)\n    rrf_remove_zero_score: bool = Field(default=False)\n\n    knowledge_retriever_tool: KnowledgeRetrieverTool = None\n\n    @classmethod\n    def init_knowledge_rag_tool(cls, name: str, description: str, **kwargs) -> BaseTool:\n        llm = kwargs.pop('llm')\n        chat_prompt = kwargs.pop('chat_prompt', CHAT_PROMPT)\n        # cancel assistant deep callback\n        kwargs.pop(\"callbacks\", None)\n        knowledge_retriever_tool = KnowledgeRetrieverTool(**kwargs)\n        return cls(name=name,\n                   description=description,\n                   args_schema=ToolInputSchema,\n                   llm=llm,\n                   chat_prompt=chat_prompt,\n                   knowledge_retriever_tool=knowledge_retriever_tool)\n\n    def _run(self, query: str) -> Any:\n        # 1. retrieve documents\n        finally_docs = self.knowledge_retriever_tool.invoke({\"query\": query})\n        llm_inputs = self._get_llm_inputs(query, finally_docs)\n        qa_chain = create_stuff_documents_chain(llm=self.llm, prompt=self.chat_prompt)\n        return qa_chain.invoke(llm_inputs)\n\n    async def _arun(self, query: str) -> Any:\n        finally_docs = await self.knowledge_retriever_tool.ainvoke({\"query\": query})\n        llm_inputs = self._get_llm_inputs(query, finally_docs)\n        qa_chain = create_stuff_documents_chain(llm=self.llm, prompt=self.chat_prompt)\n        return await qa_chain.ainvoke(llm_inputs)\n\n    def _get_llm_inputs(self, query: str, finally_docs: List[Document]) -> Any:\n        inputs = {\n            \"context\": finally_docs,\n        }\n        if \"question\" in self.chat_prompt.input_variables:\n            inputs[\"question\"] = query\n        return inputs\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/langchain/linsight_knowledge.py",
    "content": "import json\nfrom typing import Optional, Type\n\nfrom langchain_core.tools import BaseTool\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.api.services.knowledge_imp import decide_vectorstores\nfrom bisheng.linsight.domain.models.linsight_session_version import LinsightSessionVersionDao\nfrom bisheng.interface.importing.utils import import_vectorstore\nfrom bisheng.interface.initialize.loading import instantiate_vectorstore\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.llm.domain.models import LLMDao\n\n\nclass ToolInput(BaseModel):\n    query: str = Field(..., description='需要检索的关键词')\n    knowledge_id: str = Field(..., description='语义检索库id')\n    limit: int = Field(default=2, description='返回结果的最大数量')\n    call_reason: str = Field(default='', description='调用该工具的原因，原因中不要使用id来描述文件或知识库')\n\n\nclass SearchKnowledgeBase(BaseTool):\n    name: str = \"search_knowledge_base\"\n    description: str = \"\"\"在语义检索库中搜索相关内容。\n\n        用法:在你需要在知识库中进行语义搜索时,调用此工具。\n\n        Args:\n            query: 需要检索的关键词\n            knowledge_id: 语义检索库id\n            limit: 返回结果的最大数量，默认为2\n\n        Returns:\n            包含搜索结果（chunk的列表）的字典\"\"\"\n    args_schema: Type[BaseModel] = ToolInput\n\n    def _run(self, query: str, knowledge_id: Optional[str] = None,\n             **kwargs) -> str:\n        \"\"\"Use the tool.\"\"\"\n        return \"not supported in sync mode, please use async version\"\n\n    async def _arun(self, query: str, knowledge_id: Optional[str] = None,\n                    **kwargs) -> str:\n        limit = kwargs.get('limit', None) or 2\n        if not query:\n            raise ValueError(\"query Parameter shall not be empty\")\n\n        try:\n            knowledge_id = int(knowledge_id)\n            return await self.search_knowledge(query, knowledge_id, limit)\n        except ValueError:\n            return await self.search_linsight_file(query, knowledge_id, limit)\n\n    async def base_search(self, vector_client, query: str, k: int):\n        documents = await vector_client.asimilarity_search(query, k=k)\n        if not documents:\n            # \"没有找到相关的知识内容\"\n            return '{\"状态\": \"无结果\", \"错误信息\":\"没有找到相关的知识内容\"}'\n        result = {\n            \"状态\": \"成功\",\n            \"结果\": [one.page_content for one in documents]\n        }\n        result = json.dumps(result, ensure_ascii=False, indent=2)\n\n        return result\n\n    async def search_linsight_file(self, query: str, file_id: str, limit: int) -> str:\n        \"\"\"检索Linsight用户上传的文件\"\"\"\n        session_info = await LinsightSessionVersionDao.get_session_version_by_file_id(file_id=file_id)\n        if not session_info:\n            raise Exception(\"文件不存在或已被删除\")\n        files = session_info.files\n        file_info = None\n        for one in files:\n            if one.get(\"file_id\") == file_id:\n                file_info = one\n                break\n        if not file_info:\n            raise Exception(\"File does not exist or has been deleted\")\n        class_obj = import_vectorstore('Milvus')\n        embeddings = await LLMService.get_bisheng_linsight_embedding(session_info.user_id,\n                                                                     file_info.get(\"embedding_model_id\"))\n        params = {\n            'collection_name': file_info.get(\"collection_name\"),\n            'embedding': embeddings,\n            'metadata_expr': f'file_id in {[file_id]}'\n        }\n        milvus_client = instantiate_vectorstore('Milvus', class_object=class_obj, params=params)\n        return await self.base_search(milvus_client, query, limit)\n\n    async def search_knowledge(self, query: str, knowledge_id: int, limit: int) -> str:\n        knowledge_info = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge_info:\n            raise Exception(\"Knowledgebase does not exist or has been deleted\")\n        if not knowledge_info.model:\n            # \"Knowledge Base Not ConfiguredembeddingModels\"\n            raise Exception(\"Knowledge Base Not ConfiguredembeddingModels\")\n        embed_info = LLMDao.get_model_by_id(int(knowledge_info.model))\n        if not embed_info:\n            # \"Configured by the Knowledge BaseembeddingModel does not exist or has been deleted\"\n            raise Exception(\"Configured by the Knowledge BaseembeddingModel does not exist or has been deleted\")\n        embeddings = await LLMService.get_bisheng_knowledge_embedding(0, model_id=int(knowledge_info.model))\n        milvus_client = decide_vectorstores(\n            knowledge_info.collection_name, \"Milvus\", embeddings, knowledge_id=knowledge_id\n        )\n        return await self.base_search(milvus_client, query, limit)\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/domain/models/gpts_tools.py",
    "content": "import json\nfrom datetime import datetime\nfrom typing import Dict, List, Optional\n\nfrom pydantic import model_validator\nfrom sqlalchemy import JSON, Column, DateTime, String, text, func\nfrom sqlmodel import Field, or_, select, Text, update, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.utils import md5_hash, generate_uuid\nfrom bisheng.utils.mask_data import JsonFieldMasker\nfrom ..const import AuthType, ToolPresetType\n\n\nclass GptsToolsBase(SQLModelSerializable):\n    name: str = Field(sa_column=Column(String(length=125), index=True))\n    logo: Optional[str] = Field(default=None, sa_column=Column(String(length=512), index=False))\n    desc: Optional[str] = Field(default=None, sa_column=Column(String(length=2048), index=False))\n    tool_key: str = Field(sa_column=Column(String(length=125), index=False))\n    type: int = Field(default=0, description='of the category to which they belongID')\n    is_preset: int = Field(default=ToolPresetType.API.value, description=\"The category of the tool, the historical reason field is not renamed\")\n    is_delete: int = Field(default=0, description='1 Indicates logical deletion')\n    api_params: Optional[List[Dict]] = Field(default=None, sa_column=Column(JSON), description='Used to storeapiParameter and other information')\n    user_id: Optional[int] = Field(default=None, index=True, description='Create UserID， nullIndicates system creation')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass GptsToolsTypeBase(SQLModelSerializable):\n    id: Optional[int] = Field(default=None, index=True, primary_key=True)\n    name: str = Field(default='', sa_column=Column(String(length=1024)), description=\"Tool Category Name\")\n    logo: Optional[str] = Field(default='', description=\"of the tool categorylogoFile URL\")\n    extra: Optional[str] = Field(default='{}', sa_column=Column(Text),\n                                 description=\"Configuration information for the tool category to store the configuration information required for the tool category\")\n    description: str = Field(default='', description=\"Description of the tool category\")\n    server_host: Optional[str] = Field(default='', description=\"The access root address of the custom tool, which must behttporhttpsWhat/the beginning?\")\n    auth_method: Optional[int] = Field(default=0, description=\"Authentication method of tool category\")\n    api_key: Optional[str] = Field(default='', description=\"Tool Authenticationapi_key\", sa_column=Column(String(length=2048)),\n                                   max_length=1000)\n    auth_type: Optional[str] = Field(default=AuthType.BASIC.value, description=\"Authentication method of tool authentication\")\n    is_preset: Optional[int] = Field(default=ToolPresetType.API.value, description=\"The category of the tool, the historical reason field is not renamed\")\n    user_id: Optional[int] = Field(default=None, index=True, description='Create UserID， nullIndicates system creation')\n    is_delete: int = Field(default=0, description='1 Indicates logical deletion')\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass GptsTools(GptsToolsBase, table=True):\n    __tablename__ = 't_gpts_tools'\n    extra: Optional[str | dict] = Field(default=None, sa_column=Column(Text, index=False),\n                                        description='Used to store additional information, such as parameter requirements, including &initdb_conf_key Data field'\n                                                    'Indicates that the configuration information is obtained from the system configuration,For multi-level use.with ')\n    id: Optional[int] = Field(default=None, primary_key=True)\n\n\nclass GptsToolsType(GptsToolsTypeBase, table=True):\n    __tablename__ = 't_gpts_tools_type'\n    openapi_schema: str = Field(default=\"\", sa_column=Column(Text),\n                                description=\"of the tool categoryschemaContent, complies withopenapiSpecified Data\")\n\n\nclass GptsToolsTypeRead(GptsToolsTypeBase):\n    openapi_schema: Optional[str] = Field(default=\"\", description=\"of the tool categoryschemaContent, complies withopenapiSpecified Data\")\n    children: Optional[List[GptsTools]] = Field(default_factory=list, description=\"List of tools under the Tools category\")\n    parameter_name: Optional[str] = Field(default=\"\", description=\"Custom request header parameter name\")\n    api_location: Optional[str] = Field(default=\"\", description=\"Custom Request Header Parameter Position header or query\")\n    write: Optional[bool] = Field(default=False, description=\"Do you have write access\")\n\n    @model_validator(mode=\"after\")\n    def validate(self):\n        # Needs to be populated when echoingapi_locationAndparameter_nameData field\n        if self.extra and not self.api_location:\n            result = json.loads(self.extra)\n            self.api_location = result.get('api_location')\n            self.parameter_name = result.get('parameter_name')\n\n    def mask_sensitive_data(self):\n        json_masker = JsonFieldMasker()\n        # The provisioning tool needs to be desensitizedextraData field\n        if self.extra and self.is_preset == ToolPresetType.PRESET.value:\n            extra_json = json.loads(self.extra)\n            extra_json = json_masker.mask_json(extra_json)\n            self.extra = json.dumps(extra_json, ensure_ascii=False)\n        return self\n\n\nclass GptsToolsRead(GptsToolsBase):\n    id: int\n\n\nclass GptsToolsDao(GptsToolsBase):\n\n    @classmethod\n    def insert(cls, obj: GptsTools):\n        with get_sync_db_session() as session:\n            session.add(obj)\n            session.commit()\n            session.refresh(obj)\n            return obj\n\n    @classmethod\n    def query_by_name(cls, name: str) -> List[GptsTools]:\n        with get_sync_db_session() as session:\n            statement = select(GptsTools).where(GptsTools.name.like(f'%{name}%'))\n            return session.exec(statement).all()\n\n    @classmethod\n    def update_tools(cls, data: GptsTools) -> GptsTools:\n        with get_sync_db_session() as session:\n            session.add(data)\n            session.commit()\n            session.refresh(data)\n            return data\n\n    @classmethod\n    def update_tool_list(cls, data: List[GptsTools]) -> List[GptsTools]:\n        with get_sync_db_session() as session:\n            for one in data:\n                session.add(one)\n            session.commit()\n            return data\n\n    @classmethod\n    def delete_tool(cls, data: GptsTools) -> GptsTools:\n        data.is_delete = 1\n        return cls.update_tools(data)\n\n    @classmethod\n    def delete_tool_by_ids(cls, tool_ids: List[int]) -> None:\n        with get_sync_db_session() as session:\n            statement = update(GptsTools).where(GptsTools.id.in_(tool_ids)).values(is_delete=1)\n            session.exec(statement)\n            session.commit()\n\n    @classmethod\n    def get_one_tool(cls, tool_id: int) -> GptsTools:\n        with get_sync_db_session() as session:\n            statement = select(GptsTools).where(GptsTools.id == tool_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_one_tool(cls, tool_id: int) -> GptsTools:\n        statement = select(GptsTools).where(GptsTools.id == tool_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_list_by_ids(cls, tool_ids: List[int]) -> List[GptsTools]:\n        statement = select(GptsTools).where(col(GptsTools.id).in_(tool_ids)).where(GptsTools.is_delete == 0)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_list_by_ids(cls, tool_ids: List[int]) -> List[GptsTools]:\n        statement = select(GptsTools).where(col(GptsTools.id).in_(tool_ids)).where(GptsTools.is_delete == 0)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_list_by_user(cls, user_id: int, page: int = 0, page_size: int = 0) -> List[GptsTools]:\n        \"\"\"\n        Get all the tools available to your users\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GptsTools).where(\n                or_(GptsTools.user_id == user_id,\n                    GptsTools.is_preset == ToolPresetType.PRESET.value)).where(GptsTools.is_delete == 0)\n            if page and page_size:\n                statement = statement.offset((page - 1) * page_size).limit(page_size)\n            statement = statement.order_by(GptsTools.create_time.desc())\n            list_tools = session.exec(statement).all()\n            return list_tools\n\n    @classmethod\n    def get_list_by_type(cls, tool_type_ids: List[int]) -> List[GptsTools]:\n        \"\"\"\n        Get all the tools under the Tools category\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GptsTools).where(\n                GptsTools.type.in_(tool_type_ids)).where(\n                GptsTools.is_delete == 0).order_by(GptsTools.create_time.desc())\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_list_by_type(cls, tool_type_ids: List[int]) -> List[GptsTools]:\n        \"\"\"\n        Get all the tools under the Tools category asynchronously\n        \"\"\"\n        statement = select(GptsTools).where(\n            GptsTools.type.in_(tool_type_ids)).where(\n            GptsTools.is_delete == 0).order_by(GptsTools.create_time.desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_all_tool_type(cls, tool_type_ids: List[int]) -> List[GptsToolsType]:\n        \"\"\"\n        Get all tool categories\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GptsToolsType).filter(\n                GptsToolsType.is_delete == 0,\n                GptsToolsType.id.in_(tool_type_ids)\n            )\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_all_tool_type(cls, tool_type_ids: List[int]) -> List[GptsToolsType]:\n        \"\"\" get tool types by tool ids \"\"\"\n        statement = select(GptsToolsType).filter(\n            col(GptsToolsType.is_delete) == 0,\n            col(GptsToolsType.id).in_(tool_type_ids)\n        )\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_preset_tool_type(cls) -> List[GptsToolsType]:\n        \"\"\"\n        Get all preset tool categories\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GptsToolsType).where(GptsToolsType.is_preset == ToolPresetType.PRESET.value,\n                                                    GptsToolsType.is_delete == 0)\n            statement = statement.order_by(GptsToolsType.update_time.desc())\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_preset_tool_type(cls) -> List[GptsToolsType]:\n        \"\"\"\n        Get all preset tool categories asynchronously\n        \"\"\"\n        statement = select(GptsToolsType).where(GptsToolsType.is_preset == ToolPresetType.PRESET.value,\n                                                GptsToolsType.is_delete == 0)\n        statement = statement.order_by(GptsToolsType.update_time.desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def _get_user_tool_type_statement(cls, user_id: int, extra_tool_type_ids: List[int] = None,\n                                      include_preset: bool = True,\n                                      is_preset: ToolPresetType = None):\n        \"\"\"\n        Get the value of all tool categories visible to the userstatement\n        \"\"\"\n        statement = select(GptsToolsType).where(GptsToolsType.is_delete == 0)\n        filters = []\n        if extra_tool_type_ids:\n            filters.append(or_(\n                GptsToolsType.id.in_(extra_tool_type_ids),\n                GptsToolsType.user_id == user_id\n            ))\n        else:\n            filters.append(GptsToolsType.user_id == user_id)\n        if include_preset:\n            filters.append(GptsToolsType.is_preset == ToolPresetType.PRESET.value)\n        if is_preset is not None:\n            statement = statement.where(GptsToolsType.is_preset == is_preset.value)\n        statement = statement.where(or_(*filters))\n        statement = statement.order_by(func.field(GptsToolsType.is_preset,\n                                                  ToolPresetType.PRESET.value).desc(),\n                                       GptsToolsType.update_time.desc())\n        return statement\n\n    @classmethod\n    def get_user_tool_type(cls, user_id: int, extra_tool_type_ids: List[int] = None, include_preset: bool = True,\n                           is_preset: ToolPresetType = None) -> List[GptsToolsType]:\n        \"\"\"\n        Get all tool categories visible to the user\n        \"\"\"\n        statement = cls._get_user_tool_type_statement(user_id, extra_tool_type_ids, include_preset, is_preset)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_user_tool_type(cls, user_id: int, extra_tool_type_ids: List[int] = None, include_preset: bool = True,\n                                  is_preset: ToolPresetType = None) -> List[GptsToolsType]:\n        \"\"\"\n        Get all tool categories visible to the user\n        \"\"\"\n        statement = cls._get_user_tool_type_statement(user_id, extra_tool_type_ids, include_preset, is_preset)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def filter_tool_types_by_ids(cls, tool_type_ids: List[int], keyword: Optional[str] = None, page: int = 0,\n                                 limit: int = 0, include_preset: bool = False) -> (List[GptsToolsType], int):\n        \"\"\"\n        By Tool CategoryidFilter Category\n        \"\"\"\n        statement = select(GptsToolsType).where(GptsToolsType.is_delete == 0)\n        count_statement = select(func.count(GptsToolsType.id)).where(GptsToolsType.is_delete == 0)\n        if not include_preset:\n            statement = statement.where(GptsToolsType.is_preset != ToolPresetType.PRESET.value)\n            count_statement = count_statement.where(GptsToolsType.is_preset != ToolPresetType.PRESET.value)\n\n        if tool_type_ids:\n            statement = statement.where(GptsToolsType.id.in_(tool_type_ids))\n            count_statement = count_statement.where(GptsToolsType.id.in_(tool_type_ids))\n        if keyword:\n            statement = statement.where(or_(\n                GptsToolsType.name.like(f'%{keyword}%'),\n                GptsToolsType.description.like(f'%{keyword}%')\n            ))\n            count_statement = count_statement.where(or_(\n                GptsToolsType.name.like(f'%{keyword}%'),\n                GptsToolsType.description.like(f'%{keyword}%')\n            ))\n\n        if limit and page:\n            statement = statement.offset(\n                (page - 1) * limit\n            ).limit(limit).order_by(GptsToolsType.update_time.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all(), session.scalar(count_statement)\n\n    @classmethod\n    def get_one_tool_type(cls, tool_type_id: int) -> GptsToolsType:\n        \"\"\"\n        Get details about a category, includingopenapiright of privacyschemaAgreement Wording\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(GptsToolsType).where(GptsToolsType.id == tool_type_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_one_tool_type(cls, tool_type_id: int) -> GptsToolsType:\n        \"\"\"\n        Get details about a category asynchronously, includingopenapiright of privacyschemaAgreement Wording\n        \"\"\"\n        statement = select(GptsToolsType).where(GptsToolsType.id == tool_type_id)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    async def get_one_tool_type_by_name(cls, user_id: int, tool_type_name: str) -> GptsToolsType:\n        \"\"\"\n        Get the details of a tool category asynchronously\n        \"\"\"\n        statement = select(GptsToolsType).filter(\n            col(GptsToolsType.name) == tool_type_name,\n            col(GptsToolsType.user_id) == user_id,\n            col(GptsToolsType.is_delete) == 0\n        )\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    async def insert_tool_type(cls, data: GptsToolsTypeRead) -> GptsToolsTypeRead:\n        \"\"\"\n        Add Tool Category and the corresponding list of tools\n        \"\"\"\n        children = data.children\n        gpts_tool_type = GptsToolsType(**data.model_dump(exclude={'children'}))\n        # Insert Tool Category\n        async with get_async_db_session() as session:\n            session.add(gpts_tool_type)\n            await session.commit()\n            await session.refresh(gpts_tool_type)\n            if children:\n                # Insert Tools List\n                for one in children:\n                    one.type = gpts_tool_type.id\n                    one.tool_key = cls.get_tool_key(gpts_tool_type.id, one)\n                session.add_all(children)\n                await session.commit()\n        res = GptsToolsTypeRead(**gpts_tool_type.model_dump(), children=children)\n        return res\n\n    @classmethod\n    async def update_tool_type(cls, data: GptsToolsType,\n                               del_tool_ids: List[int],\n                               add_tool_list: List[GptsTools],\n                               update_tool_list: List[GptsTools]):\n        \"\"\"\n        Update Tool Category Information\n        param data: GptsToolsType\n        param del_tool_ids: Tools to removeid\n        param add_tool_list: List of tools that need to be added\n        param update_tool_list: List of tools that need to be updated\n        \"\"\"\n        finally_children = []\n        async with get_async_db_session() as session:\n            # Update tool category data\n            session.add(data)\n            # Delete a list of tools that don't exist\n            delete_old_tools = update(GptsTools).where(GptsTools.id.in_(del_tool_ids)).values(is_delete=1)\n            await session.exec(delete_old_tools)\n            # Add Tool List\n            for one in add_tool_list:\n                one.type = data.id\n                one.tool_key = cls.get_tool_key(data.id, one)\n                session.add(one)\n                finally_children.append(one)\n            # Update Tool List\n            for one in update_tool_list:\n                session.add(one)\n                finally_children.append(one)\n            await session.commit()\n            await session.refresh(data)\n\n    @classmethod\n    async def delete_tool_type(cls, tool_type_id: int) -> None:\n        \"\"\"\n        Delete Tool Category\n        \"\"\"\n        statement = update(GptsToolsType).where(col(GptsToolsType.id) == tool_type_id,\n                                                col(GptsToolsType.is_preset) != ToolPresetType.PRESET.value).values(\n            is_delete=1)\n        tool_statement = update(GptsTools).where(col(GptsTools.type) == tool_type_id,\n                                                 col(GptsTools.is_preset) != ToolPresetType.PRESET.value).values(\n            is_delete=1)\n        async with get_async_db_session() as session:\n            await session.exec(statement)\n            await session.exec(tool_statement)\n            await session.commit()\n\n    @classmethod\n    def get_tool_key(cls, tool_type_id: int, gpt_tool: GptsTools) -> str:\n        \"\"\"\n        of stitching custom toolstool_key\n        \"\"\"\n        if gpt_tool.is_preset == ToolPresetType.MCP.value:\n            return f\"{gpt_tool.name}_{generate_uuid()[:8]}\"\n        return f\"tool_type_{tool_type_id}_{md5_hash(gpt_tool.name)}\"\n\n    @classmethod\n    async def update_tools_extra(cls, tool_type_id: int, extra: str) -> bool:\n        async with get_async_db_session() as session:\n            statement = update(GptsToolsType).where(col(GptsToolsType.id) == tool_type_id).values(extra=extra)\n            await session.exec(statement)\n            statement = update(GptsTools).where(col(GptsTools.type) == tool_type_id).values(extra=text('NULL'))\n            await session.exec(statement)\n            await session.commit()\n            return True\n\n    @classmethod\n    def get_tool_by_tool_key(cls, tool_key: str) -> GptsTools:\n        with get_sync_db_session() as session:\n            statement = select(GptsTools).where(GptsTools.tool_key == tool_key)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_tool_by_tool_key(cls, tool_key: str) -> GptsTools:\n        statement = select(GptsTools).where(GptsTools.tool_key == tool_key)\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.first()\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/schemas.py",
    "content": "from typing import Optional, Dict\n\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.tool.domain.const import AuthMethod, AuthType\n\n\nclass TestToolReq(BaseModel):\n    server_host: str = Field(default='', description='Root address of the service')\n    openapi_schema: Optional[str] = Field(default='', description='openapi schema')\n    extra: str = Field(default='', description='Api After the object is parsedextraData field')\n    auth_method: int = Field(default=AuthMethod.NO.value, description='Certification Type')\n    auth_type: Optional[str] = Field(default=AuthType.BASIC.value, description='Auth Type')\n    api_key: Optional[str] = Field(default='', description='api key')\n    api_location: Optional[str] = Field(default='', description='api location')\n    parameter_name: Optional[str] = Field(default='', description='parameter_name')\n\n    request_params: Dict = Field(default=None, description='User Filled Request Parameters')\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/tool/domain/services/executor.py",
    "content": "import functools\nimport json\nfrom inspect import signature\nfrom typing import Any, Annotated, Optional, Dict, List\n\nfrom langchain_core.callbacks import CallbackManagerForToolRun, Callbacks\nfrom langchain_core.runnables import RunnableConfig\nfrom langchain_core.tools import BaseTool, ArgsSchema\nfrom pydantic import Field, SkipValidation\n\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, StatusEnum, ApplicationTypeEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import ToolInvocationEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, Knowledge\nfrom bisheng.mcp_manage.langchain.tool import McpTool\nfrom bisheng.mcp_manage.manager import ClientManager\nfrom bisheng.tool.domain.const import ToolPresetType\nfrom bisheng.tool.domain.langchain.knowledge import KnowledgeRagTool\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao, GptsTools, GptsToolsType\nfrom bisheng.tool.domain.services.openapi import OpenApiSchema\nfrom bisheng_langchain.gpts.load_tools import load_tools\nfrom bisheng_langchain.gpts.tools.api_tools.openapi import OpenApiTools\n\n\ndef wrapper_tool(func):\n    @functools.wraps(func)\n    async def inner(*args, **kwargs):\n        # Here you can add logic to record tool usage\n        self: ToolExecutor = args[0]\n        status = StatusEnum.SUCCESS\n        try:\n            return await func(*args, **kwargs)\n        except Exception as e:\n            status = StatusEnum.FAILED\n            raise e\n        finally:\n            await telemetry_service.log_event(**self.get_invoke_log_data(status))\n\n    return inner\n\n\ndef wrapper_tool_sync(func):\n    @functools.wraps(func)\n    def inner(*args, **kwargs):\n        # Here you can add logic to record tool usage\n        self: ToolExecutor = args[0]\n        status = StatusEnum.SUCCESS\n        try:\n            return func(*args, **kwargs)\n        except Exception as e:\n            status = StatusEnum.FAILED\n            raise e\n        finally:\n            # RecordTelemetryJournal\n            telemetry_service.log_event_sync(**self.get_invoke_log_data(status))\n\n    return inner\n\n\nclass ToolExecutor(BaseTool):\n    # must provide fields for telemetry logging\n    app_id: str = Field(..., description=\"Application Identifier\")\n    app_name: str = Field(..., description=\"Application Name\")\n    app_type: ApplicationTypeEnum = Field(..., description=\"Application Type\")\n    user_id: int = Field(..., description=\"Invoke User ID\")\n\n    # bisheng tool fields\n    tool_id: int = Field(..., description=\"Tool ID\")\n    tool_is_preset: int = Field(..., description=\"kind of the Tool, api、mcp、preset\")\n    tool_name: str = Field(..., description=\"Tool Name\")\n\n    # langchain tool fields\n    name: str = Field(..., description=\"Tool Name for llm\")\n    description: str = Field(..., description=\"Tool Description for llm\")\n    args_schema: Annotated[Optional[ArgsSchema], SkipValidation()] = Field(\n        default=None, description=\"The tool schema.\"\n    )\n    tool_instance: BaseTool = Field(..., description=\"Langchain Tool Instance\")\n\n    @classmethod\n    def init_by_tool_instance(cls, base_tool: BaseTool, tool: GptsTools, *, app_id: str, app_name: str,\n                              app_type: ApplicationTypeEnum, user_id: int) -> BaseTool:\n        return cls(name=base_tool.name, description=base_tool.description, args_schema=base_tool.args_schema,\n                   tool_instance=base_tool,\n                   app_id=app_id, app_name=app_name, app_type=app_type, user_id=user_id,\n                   tool_id=tool.id, tool_is_preset=tool.is_preset, tool_name=tool.name)\n\n    @staticmethod\n    def parse_preset_tool_params(tool: GptsTools, tool_type: GptsToolsType) -> Dict:\n        \"\"\" parse tool init params \"\"\"\n        # get tool config from tool.extra first\n        params = {}\n        if tool.extra:\n            if isinstance(tool.extra, str):\n                params = json.loads(tool.extra)\n            elif isinstance(tool.extra, dict):\n                params = tool.extra\n        elif tool_type.extra:\n            if isinstance(tool_type.extra, str):\n                params = json.loads(tool_type.extra)\n            elif isinstance(tool_type.extra, dict):\n                params = tool_type.extra\n\n        # special handling for bisheng_code_interpreter, because it needs minio config\n        if tool.tool_key == 'bisheng_code_interpreter':\n            return {'minio': settings.get_minio_conf().model_dump(), **params}\n        return params\n\n    @staticmethod\n    def parse_api_tool_params(tool: GptsTools, tool_type: GptsToolsType, **kwargs) -> Dict:\n        \"\"\" parse tool init params \"\"\"\n        extra_json = json.loads(tool.extra) if tool.extra else {}\n        extra_json.update(json.loads(tool_type.extra) if tool_type.extra else {})\n        params = OpenApiSchema.parse_openapi_tool_params(tool.name, tool.desc, extra_json,\n                                                         tool_type.server_host,\n                                                         tool_type.auth_method,\n                                                         tool_type.auth_type,\n                                                         tool_type.api_key)\n        if \"llm\" in kwargs:\n            kwargs.pop(\"llm\")\n        params.update(kwargs)\n        return params\n\n    @classmethod\n    def _init_preset_tool(cls, tool: GptsTools, tool_type: GptsToolsType, **kwargs) -> BaseTool:\n        tool_name_param = {\n            tool.tool_key: cls.parse_preset_tool_params(tool, tool_type)\n        }\n        tool_langchain = load_tools(tool_params=tool_name_param, **kwargs)\n        if not tool_langchain:\n            raise ValueError(f\"Failed to load preset tool: {tool.tool_key}\")\n        return tool_langchain[0]\n\n    @classmethod\n    def _init_api_tool(cls, tool: GptsTools, tool_type: GptsToolsType, callbacks: Callbacks = None,\n                       **kwargs) -> BaseTool:\n        tool_params = cls.parse_api_tool_params(tool, tool_type, **kwargs)\n        tool = OpenApiTools.get_api_tool(tool.tool_key, **tool_params)\n        tool.callbacks = callbacks\n        return tool\n\n    @classmethod\n    def _init_mcp_tool(cls, tool: GptsTools, tool_type: GptsToolsType, **kwargs) -> BaseTool:\n        mcp_client = ClientManager.sync_connect_mcp_from_json(tool_type.openapi_schema)\n        input_schema = json.loads(tool.extra)\n        return McpTool.get_mcp_tool(name=tool.tool_key, description=tool.desc, mcp_client=mcp_client,\n                                    mcp_tool_name=tool.name, arg_schema=input_schema['inputSchema'],\n                                    **kwargs)\n\n    @classmethod\n    def _init_by_tool_and_type(cls, tool: GptsTools, tool_type: GptsToolsType, *, app_id: str, app_name: str,\n                               app_type: ApplicationTypeEnum, user_id: int, **kwargs) -> BaseTool:\n        if tool.is_preset == ToolPresetType.PRESET.value:\n            tool_instance = cls._init_preset_tool(tool, tool_type, **kwargs)\n        elif tool.is_preset == ToolPresetType.API.value:\n            tool_instance = cls._init_api_tool(tool, tool_type, **kwargs)\n        elif tool.is_preset == ToolPresetType.MCP.value:\n            tool_instance = cls._init_mcp_tool(tool, tool_type, **kwargs)\n        else:\n            raise ValueError(f\"Unsupported tool preset type: {tool.is_preset}\")\n        return cls.init_by_tool_instance(base_tool=tool_instance, tool=tool, app_id=app_id,\n                                         app_name=app_name, app_type=app_type, user_id=user_id)\n\n    @classmethod\n    async def init_by_tool_id(cls, tool_id: int = None, tool: GptsTools = None, *, app_id: str, app_name: str,\n                              app_type: ApplicationTypeEnum, user_id: int, **kwargs) -> BaseTool:\n        if not tool_id and not tool:\n            raise ValueError(\"Either tool_id or tool must be provided.\")\n        if not tool:\n            tool = await GptsToolsDao.aget_one_tool(tool_id=tool_id)\n            if not tool:\n                raise ValueError(f\"Tool with id {tool_id} not found.\")\n        tool_type = await GptsToolsDao.aget_one_tool_type(tool_type_id=tool.type)\n        if not tool_type:\n            raise ValueError(f\"Tool type with id {tool.type} not found.\")\n        return cls._init_by_tool_and_type(tool=tool, tool_type=tool_type, app_id=app_id, app_name=app_name,\n                                          app_type=app_type, user_id=user_id, **kwargs)\n\n    @classmethod\n    def _init_tools(cls, tools: List[GptsTools], tool_types_map: Dict[int, GptsToolsType], *,\n                    app_id: str, app_name: str, app_type: ApplicationTypeEnum,\n                    user_id: int, **kwargs) -> List[BaseTool]:\n        result = []\n        for tool in tools:\n            tool_type = tool_types_map.get(tool.type)\n            if not tool_type:\n                raise ValueError(f\"Tool type with id {tool.type} not found.\")\n            result.append(\n                cls._init_by_tool_and_type(tool=tool, tool_type=tool_type, app_id=app_id,\n                                           app_name=app_name, app_type=app_type, user_id=user_id, **kwargs)\n            )\n        return result\n\n    @classmethod\n    async def init_by_tool_ids(cls, tool_ids: list[int], *, app_id: str, app_name: str, app_type: ApplicationTypeEnum,\n                               user_id: int, **kwargs) -> List[BaseTool]:\n        tools = await GptsToolsDao.aget_list_by_ids(tool_ids)\n        tool_type_ids = [tool.type for tool in tools]\n        tool_types = await GptsToolsDao.aget_all_tool_type(list(set(tool_type_ids)))\n        tool_type_map = {tool_type.id: tool_type for tool_type in tool_types}\n\n        return cls._init_tools(tools, tool_type_map, app_id=app_id, app_name=app_name, app_type=app_type,\n                               user_id=user_id, **kwargs)\n\n    @classmethod\n    def init_by_tool_ids_sync(cls, tool_ids: list[int], app_id: str, app_name: str, app_type: ApplicationTypeEnum,\n                              user_id: int, **kwargs) -> List[BaseTool]:\n        tools = GptsToolsDao.get_list_by_ids(tool_ids)\n        tool_type_ids = [tool.type for tool in tools]\n        tool_types = GptsToolsDao.get_all_tool_type(list(set(tool_type_ids)))\n        tool_type_map = {tool_type.id: tool_type for tool_type in tool_types}\n\n        return cls._init_tools(tools, tool_type_map, app_id=app_id, app_name=app_name, app_type=app_type,\n                               user_id=user_id, **kwargs)\n\n    @classmethod\n    def init_by_tool_id_sync(cls, tool_id: int, *, app_id: str, app_name: str, app_type: ApplicationTypeEnum,\n                             user_id: int, **kwargs) -> BaseTool:\n        tool = GptsToolsDao.get_one_tool(tool_id=tool_id)\n        if not tool:\n            raise ValueError(f\"Tool with id {tool_id} not found.\")\n        tool_type = GptsToolsDao.get_one_tool_type(tool_type_id=tool.type)\n        if not tool_type:\n            raise ValueError(f\"Tool type with id {tool.type} not found.\")\n\n        return cls._init_by_tool_and_type(tool=tool, tool_type=tool_type, app_id=app_id, app_name=app_name,\n                                          app_type=app_type, user_id=user_id, **kwargs)\n\n    @classmethod\n    def _init_knowledge_rag_tool(cls, knowledge: Knowledge, **kwargs) -> BaseTool:\n        return KnowledgeRagTool.init_knowledge_rag_tool(name=f'knowledge_{knowledge.id}',\n                                                        description=f'{knowledge.name}:{knowledge.description}',\n                                                        **kwargs)\n\n    @classmethod\n    async def init_knowledge_tool(cls, invoke_user_id: int, knowledge_id: int, **kwargs) -> BaseTool:\n        knowledge = await KnowledgeDao.aquery_by_id(knowledge_id=knowledge_id)\n        if not knowledge:\n            raise ValueError(f\"Knowledge with id {knowledge_id} not found.\")\n        vector_client = await KnowledgeRag.init_knowledge_milvus_vectorstore(invoke_user_id, knowledge)\n        es_client = await KnowledgeRag.init_knowledge_es_vectorstore(knowledge)\n        return cls._init_knowledge_rag_tool(knowledge=knowledge, vector_retriever=vector_client.as_retriever(),\n                                            elastic_retriever=es_client.as_retriever(), **kwargs)\n\n    @classmethod\n    def init_knowledge_tool_sync(cls, invoke_user_id: int, knowledge_id: int, **kwargs) -> BaseTool:\n        knowledge = KnowledgeDao.query_by_id(knowledge_id=knowledge_id)\n        if not knowledge:\n            raise ValueError(f\"Knowledge with id {knowledge_id} not found.\")\n        vector_client = KnowledgeRag.init_knowledge_milvus_vectorstore_sync(invoke_user_id, knowledge)\n        es_client = KnowledgeRag.init_knowledge_es_vectorstore_sync(knowledge)\n        return cls._init_knowledge_rag_tool(knowledge, vector_retriever=vector_client.as_retriever(),\n                                            elastic_retriever=es_client.as_retriever(), **kwargs)\n\n    @classmethod\n    def init_tmp_knowledge_tool_sync(cls, **kwargs) -> BaseTool:\n        return KnowledgeRagTool.init_knowledge_rag_tool(**kwargs)\n\n    @wrapper_tool_sync\n    def _run(self,\n             *args: Any,\n             config: RunnableConfig,\n             run_manager: Optional[CallbackManagerForToolRun] = None,\n             **kwargs) -> Any:\n\n        if signature(self.tool_instance._run).parameters.get(\"config\"):\n            kwargs[\"config\"] = config\n        if signature(self.tool_instance._run).parameters.get(\"run_manager\"):\n            kwargs[\"run_manager\"] = run_manager\n        return self.tool_instance._run(*args, **kwargs)\n\n    @wrapper_tool\n    async def _arun(self,\n                    *args: Any,\n                    config: RunnableConfig,\n                    run_manager: Optional[CallbackManagerForToolRun] = None,\n                    **kwargs) -> Any:\n        if signature(self.tool_instance._run).parameters.get(\"config\"):\n            kwargs[\"config\"] = config\n        if signature(self.tool_instance._run).parameters.get(\"run_manager\"):\n            kwargs[\"run_manager\"] = run_manager\n        return await self.tool_instance._arun(*args, **kwargs)\n\n    def __getattr__(self, item):\n        return getattr(self.tool_instance, item)\n\n    def get_invoke_log_data(self, status: StatusEnum):\n        # RecordTelemetryJournal\n        return {\n            \"user_id\": self.user_id,\n            \"event_type\": BaseTelemetryTypeEnum.TOOL_INVOKE,\n            \"trace_id\": trace_id_var.get(),\n            \"event_data\": ToolInvocationEventData(\n                app_id=self.app_id,\n                app_name=self.app_name,\n                app_type=self.app_type,\n                tool_id=self.tool_id,\n                tool_name=self.tool_name,\n                tool_type=self.tool_is_preset,\n                status=status\n            )}\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/services/openapi.py",
    "content": "import json\nfrom typing import Dict\n\nfrom bisheng.tool.domain.const import AuthMethod, AuthType\n\n\nclass OpenApiSchema:\n\n    def __init__(self, contents: dict):\n        self.parameter_name = None\n        self.api_location = None\n        self.contents = contents\n        self.version = contents['openapi']\n        self.info = contents['info']\n        self.title = self.info['title']\n        self.auth_type = 'basic'\n        self.auth_method = 0\n        self.description = self.info.get('description', '')\n        self.default_server = ''\n        self.apis = []\n\n    def parse_server(self) -> str:\n        \"\"\"\n        get the default server url\n        \"\"\"\n        if self.contents.get('servers') is None:\n            raise Exception('openapi schema must have servers')\n        servers = self.contents['servers']\n        if isinstance(servers, list):\n            self.default_server = servers[0]['url']\n        else:\n            self.default_server = servers['url']\n\n        security_schemes = self.contents.get('components', {}).get('securitySchemes', {})\n        api_key_auth = security_schemes.get('ApiKeyAuth', {})\n\n        # Get certification type\n        auth_type = api_key_auth.get('type')\n        if auth_type == 'apiKey':\n            self.auth_type = 'custom'\n        elif auth_type == 'http':\n            self.auth_type = api_key_auth.get('schema')\n        else:\n            self.auth_type = 'basic'\n\n        # Set authentication method\n        self.auth_method = 1 if auth_type in ('apiKey', 'http') else 0\n\n        # Dapatkan API Location and parameter name\n        self.api_location = api_key_auth.get('in')\n        self.parameter_name = api_key_auth.get('name')\n        return self.default_server\n\n    def parse_paths(self) -> list[dict]:\n        paths = self.contents['paths']\n\n        self.apis = []\n\n        for path, path_info in paths.items():\n            for method, method_info in path_info.items():\n                one_api_info = {\n                    'path': path,\n                    'method': method,\n                    'description': method_info.get('description', '')\n                                   or method_info.get('summary', ''),\n                    'operationId': method_info['operationId'],\n                    'parameters': [],\n                }\n                if method not in ['get', 'post', 'put', 'delete']:\n                    continue\n\n                if 'requestBody' in method_info:\n                    for _, content in method_info['requestBody']['content'].items():\n                        if '$ref' in content['schema']:\n                            schema_ref = content['schema']['$ref']\n                            schema_name = schema_ref.split('/')[-1]\n                            schema = self.contents['components']['schemas'][schema_name]\n                        else:\n                            schema = content['schema']\n\n                        if 'properties' in schema:\n                            for param_name, param_info in schema['properties'].items():\n                                param = {\n                                    'name': param_name,\n                                    'description': param_info.get('description', ''),\n                                    'in': 'body',\n                                    'required': param_name in schema.get('required', []),\n                                    'schema': {\n                                        'type': param_info.get('type', 'string'),\n                                        'title': param_info.get('title', param_name),\n                                        'properties': param_info.get('properties', {})\n                                    },\n                                }\n                                one_api_info['parameters'].append(param)\n                else:\n                    # no request body get parameters\n                    one_api_info['parameters'].extend(method_info.get('parameters', []))\n                self.apis.append(one_api_info)\n        return self.apis\n\n    @staticmethod\n    def parse_openapi_tool_params(name: str,\n                                  description: str,\n                                  extra: str | Dict,\n                                  server_host: str,\n                                  auth_method: int,\n                                  auth_type: str = None,\n                                  api_key: str = None):\n        if isinstance(extra, str):\n            extra = json.loads(extra)\n        # Stitching request header\n        headers = {}\n        if auth_method == AuthMethod.API_KEY.value:\n            if auth_type == AuthType.CUSTOM.value:\n                location = extra[\"api_location\"]\n                parameter_name = extra[\"parameter_name\"]\n                if location == \"header\":\n                    headers = {parameter_name: api_key}\n            elif auth_type == AuthType.BASIC.value:\n                headers = {'Authorization': f'Basic {api_key}'}\n            elif auth_type == AuthType.BEARER.value:\n                headers = {'Authorization': f'Bearer {api_key}'}\n\n        # Back to initialization openapiRequired input parameters\n        params = {\n            'params': extra,\n            'headers': headers,\n            'api_key': api_key,\n            'url': server_host,\n            'description': name + description if description else name\n        }\n        return params\n"
  },
  {
    "path": "src/backend/bisheng/tool/domain/services/tool.py",
    "content": "import asyncio\nimport json\nfrom typing import Optional, List\n\nimport yaml\nfrom fastapi import Request\nfrom langchain_core.tools import BaseTool\nfrom loguru import logger\nfrom pydantic import BaseModel, ConfigDict\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.utils import get_url_content\nfrom bisheng.common.dependencies.user_deps import UserPayload\nfrom bisheng.common.errcode import BaseErrorCode\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError\nfrom bisheng.common.errcode.tool import ToolTypeNotExistsError, ToolTypeRepeatError, ToolTypeNameError, \\\n    ToolTypeIsPresetError, ToolSchemaDownloadError, ToolSchemaEmptyError, ToolSchemaParseError, ToolSchemaServerError, \\\n    ToolMcpSchemaError\nfrom bisheng.database.models.group_resource import GroupResourceDao, ResourceTypeEnum, GroupResource\nfrom bisheng.database.models.role_access import AccessType\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.mcp_manage.manager import ClientManager\nfrom bisheng.tool.domain.const import ToolPresetType\nfrom bisheng.tool.domain.langchain.linsight_knowledge import SearchKnowledgeBase\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao, GptsTools, GptsToolsType, GptsToolsTypeRead\nfrom bisheng.tool.domain.services.openapi import OpenApiSchema\nfrom bisheng.utils import md5_hash, get_request_ip\nfrom bisheng.utils.mask_data import JsonFieldMasker\nfrom bisheng_langchain.gpts.load_tools import load_tools\n\n\nclass ToolServices(BaseModel):\n    \"\"\" Tool service class \"\"\"\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    request: Optional[Request] = None\n    login_user: Optional[UserPayload] = None\n\n    async def get_tool_list(self, is_preset: Optional[int] = None) -> List[GptsToolsTypeRead]:\n        \"\"\" Get a list of tools visible to users \"\"\"\n        # Get Tool Categories Visible to Users\n        tool_type_ids_extra = []\n        if is_preset != ToolPresetType.PRESET.value:\n            # When getting a list of custom tools, you need to include a list of tools available to the user\n            access_resources = await self.login_user.aget_user_access_resource_ids([AccessType.GPTS_TOOL_READ])\n            if access_resources:\n                tool_type_ids_extra = [int(access) for access in access_resources]\n        if is_preset is None:\n            # Get a list of all tools visible to the user\n            all_tool_type = await GptsToolsDao.aget_user_tool_type(self.login_user.user_id, tool_type_ids_extra)\n        elif is_preset == ToolPresetType.PRESET.value:\n            # Get a list of preset tools\n            all_tool_type = await GptsToolsDao.aget_preset_tool_type()\n        else:\n            # Get a list of custom tools visible to users\n            all_tool_type = await GptsToolsDao.aget_user_tool_type(self.login_user.user_id, tool_type_ids_extra, False,\n                                                                   ToolPresetType(is_preset))\n        tool_type_id = [one.id for one in all_tool_type]\n        res: List[GptsToolsTypeRead] = []\n        tool_type_children = {}\n        for one in all_tool_type:\n            tool_type_id.append(one.id)\n            tool_type_children[one.id] = []\n            res.append(GptsToolsTypeRead.model_validate(one))\n\n        # Get the list of tools under the corresponding category\n        tool_list = await GptsToolsDao.aget_list_by_type(tool_type_id)\n        for one in tool_list:\n            tool_type_children[one.type].append(one)\n\n        # check write permission\n        write_tool_type = None\n        for one in res:\n            if self.login_user.is_admin() or one.user_id == self.login_user.user_id:\n                one.write = True\n            else:\n                if write_tool_type is None:\n                    write_resources = await self.login_user.aget_user_access_resource_ids([AccessType.GPTS_TOOL_WRITE])\n                    write_tool_type = {int(x): True for x in write_resources}\n                one.write = write_tool_type.get(one.id, False)\n            one.children = tool_type_children.get(one.id, [])\n\n            # Data desensitization\n            one.mask_sensitive_data()\n\n        return res\n\n    async def add_tools(self, req: GptsToolsTypeRead) -> GptsToolsTypeRead:\n        \"\"\" Add custom tool \"\"\"\n        # Try to parse theopenapi schemaSee if it can be parsed normally, Save if not possible Do not allow to save\n        if req.is_preset == ToolPresetType.API.value:\n            await self.parse_openapi_schema('', req.openapi_schema)\n        elif req.is_preset == ToolPresetType.MCP.value:\n            await self.parse_mcp_schema(req.openapi_schema)\n\n        req.id = None\n        if req.name.__len__() > 1000 or req.name.__len__() == 0:\n            raise ToolTypeNameError()\n        # Determine if the category already exists\n        tool_type = await GptsToolsDao.get_one_tool_type_by_name(self.login_user.user_id, req.name)\n        if tool_type:\n            raise ToolTypeRepeatError()\n        req.user_id = self.login_user.user_id\n\n        for one in req.children:\n            one.id = None\n            one.user_id = self.login_user.user_id\n            one.is_delete = 0\n            one.is_preset = req.is_preset\n\n        tool_extra = {\"api_location\": req.api_location, \"parameter_name\": req.parameter_name}\n        req.extra = json.dumps(tool_extra, ensure_ascii=False)\n        # Add Tool Category and Corresponding Tools List\n        res = await GptsToolsDao.insert_tool_type(req)\n\n        self.add_gpts_tools_hook(self.request, self.login_user, res)\n        return res\n\n    @classmethod\n    def add_gpts_tools_hook(cls, request: Request, user: UserPayload, gpts_tool_type: GptsToolsTypeRead) -> bool:\n        \"\"\" After adding custom toolshookFunction \"\"\"\n        # Query the user group the user belongs to under\n        user_group = UserGroupDao.get_user_group(user.user_id)\n        group_ids = []\n        if user_group:\n            # Batch Insert Custom Tools into Correlation Table\n            batch_resource = []\n            for one in user_group:\n                group_ids.append(one.group_id)\n                batch_resource.append(GroupResource(\n                    group_id=one.group_id,\n                    third_id=gpts_tool_type.id,\n                    type=ResourceTypeEnum.GPTS_TOOL.value))\n            GroupResourceDao.insert_group_batch(batch_resource)\n        AuditLogService.create_tool(user, get_request_ip(request), group_ids, gpts_tool_type)\n        return True\n\n    async def update_tool_config(self, tool_type_id: int, extra: dict) -> bool:\n        # Get Tool Categories\n        tool_type = await GptsToolsDao.aget_one_tool_type(tool_type_id)\n        if not tool_type or tool_type.is_preset != ToolPresetType.PRESET.value:\n            raise NotFoundError()\n\n        if not await self.login_user.async_access_check(tool_type.user_id, str(tool_type.id),\n                                                        AccessType.GPTS_TOOL_WRITE):\n            raise UnAuthorizedError()\n\n        if tool_type.extra is None:\n            tool_type.extra = '{}'\n\n        json_masker = JsonFieldMasker()\n\n        old_config = json.loads(tool_type.extra)\n        # special handle dall-e config update。 Wait until you unify this configuration with the configuration logic of other tools (the configuration parameters remain unchanged), and then delete this special processing logic\n        if tool_type.name == \"Dalle3-\tpainting;\":\n            # Instructions not toggledtab. Just changed the configuration\n            if (\"azure_endpoint\" in old_config and \"azure_endpoint\" in extra) or (\n                    \"azure_endpoint\" not in old_config and \"azure_endpoint\" not in extra\n            ):\n                # Update the configuration of all tools under the Tools category\n                merge_extra = json_masker.update_json_with_masked(old_config, extra)\n                merge_extra = json.dumps(merge_extra, ensure_ascii=False)\n            elif not old_config:\n                # The description has not been configured before, it is now configured\n                merge_extra = json.dumps(extra, ensure_ascii=False)\n            else:\n                # Instructions switchedtab, you need to overwrite the previous configuration\n                merge_extra = json.dumps(extra, ensure_ascii=False)\n        else:\n            # Update the configuration of all tools under the Tools category\n            merge_extra = json_masker.update_json_with_masked(old_config, extra)\n            merge_extra = json.dumps(merge_extra, ensure_ascii=False)\n        await GptsToolsDao.update_tools_extra(tool_type_id, merge_extra)\n        return True\n\n    @staticmethod\n    async def parse_openapi_schema(download_url: str, file_content: str) -> GptsToolsTypeRead:\n        if download_url:\n            try:\n                file_content = await get_url_content(download_url)\n            except Exception as e:\n                logger.exception(f'file {download_url} download error')\n                raise ToolSchemaDownloadError(exception=e)\n        if not file_content:\n            raise ToolSchemaEmptyError()\n        # Depending on the content of the document, is it possible to`{`At the beginning, what analytical method is used to determine\n        try:\n            if file_content.startswith('{'):\n                res = json.loads(file_content)\n            else:\n                res = yaml.safe_load(file_content)\n        except Exception as e:\n            logger.exception(f'openapi schema parse error {e}')\n            raise ToolSchemaParseError(exception=e)\n\n        #  analyzingopenapi schemaConvert to Helper Tool Format\n        try:\n            schema = OpenApiSchema(res)\n            schema.parse_server()\n            if not schema.default_server.startswith(('http', 'https')):\n                raise ToolSchemaServerError(data={\"url\": schema.default_server})\n            tool_type = GptsToolsTypeRead(name=schema.title,\n                                          description=schema.description,\n                                          is_preset=ToolPresetType.API.value,\n                                          server_host=schema.default_server,\n                                          openapi_schema=file_content,\n                                          api_location=schema.api_location,\n                                          parameter_name=schema.parameter_name,\n                                          auth_type=schema.auth_type,\n                                          auth_method=schema.auth_method,\n                                          children=[])\n            # Parsing to get all theapi\n            schema.parse_paths()\n            for one in schema.apis:\n                tool_type.children.append(\n                    GptsTools(\n                        name=one['operationId'],\n                        desc=one['description'],\n                        tool_key=md5_hash(one['operationId']),\n                        is_preset=0,\n                        is_delete=0,\n                        api_params=one['parameters'],\n                        extra=json.dumps(one, ensure_ascii=False),\n                    ))\n            return tool_type\n        except BaseErrorCode as e:\n            raise e\n        except Exception as e:\n            logger.exception(f'openapi schema parse error {e}')\n            raise ToolSchemaParseError(exception=e)\n\n    @staticmethod\n    async def parse_mcp_schema(file_content: str) -> GptsToolsTypeRead:\n        try:\n            result = json.loads(file_content)\n            mcp_servers = result['mcpServers']\n        except Exception as e:\n            logger.exception(f'mcp tool schema parse error {e}')\n            raise ToolMcpSchemaError(exception=e)\n        tool_type = None\n        for key, value in mcp_servers.items():\n            # analyzingmcpService Config\n            tool_type = GptsToolsTypeRead(name=value.get('name', ''),\n                                          server_host=value.get('url', ''),\n                                          description=value.get('description', ''),\n                                          is_preset=ToolPresetType.MCP.value,\n                                          openapi_schema=file_content,\n                                          children=[])\n            # Instantiatemcpservice object, getting a list of tools\n            client = await ClientManager.connect_mcp_from_json(result)\n\n            tools = await client.list_tools()\n\n            for one in tools:\n                tool_type.children.append(GptsTools(\n                    name=one.name,\n                    desc=one.description,\n                    tool_key=md5_hash(one.name),\n                    is_preset=ToolPresetType.MCP.value,\n                    api_params=ToolServices.convert_input_schema(one.inputSchema),\n                    extra=one.model_dump_json(),\n                ))\n            break\n        if tool_type is None:\n            raise ToolMcpSchemaError()\n        return tool_type\n\n    @classmethod\n    async def _update_gpts_tools(cls, exist_tool_type: GptsToolsType, req: GptsToolsTypeRead) -> GptsToolsTypeRead:\n        exist_tool_type.name = req.name\n        exist_tool_type.logo = req.logo\n        exist_tool_type.description = req.description\n        exist_tool_type.server_host = req.server_host\n        exist_tool_type.auth_method = req.auth_method\n        exist_tool_type.api_key = req.api_key\n        exist_tool_type.auth_type = req.auth_type\n        exist_tool_type.openapi_schema = req.openapi_schema\n        tool_extra = {\"api_location\": req.api_location, \"parameter_name\": req.parameter_name}\n        exist_tool_type.extra = json.dumps(tool_extra, ensure_ascii=False)\n\n        children_map = {}\n        for one in req.children:\n            children_map[one.name] = one\n\n        # Get old under this categoryAPIVertical\n        old_tool_list = await GptsToolsDao.aget_list_by_type([exist_tool_type.id])\n        # List of tools that need to be removed\n        delete_tool_id_list = []\n        # List of tools that need to be updated\n        update_tool_list = []\n        for one in old_tool_list:\n            # Explain this tool Removal required\n            if children_map.get(one.name) is None:\n                delete_tool_id_list.append(one.id)\n            else:\n                # Explain that this tool needs to be updated\n                new_tool_info = children_map.pop(one.name)\n                one.name = new_tool_info.name\n                one.desc = new_tool_info.desc\n                one.extra = new_tool_info.extra\n                one.api_params = new_tool_info.api_params\n                update_tool_list.append(one)\n\n        add_children = []\n        for one in children_map.values():\n            one.id = None\n            one.user_id = exist_tool_type.user_id\n            one.is_preset = exist_tool_type.is_preset\n            one.is_delete = 0\n            add_children.append(one)\n\n        await GptsToolsDao.update_tool_type(exist_tool_type, delete_tool_id_list,\n                                            add_children, update_tool_list)\n\n        children = await GptsToolsDao.aget_list_by_type([exist_tool_type.id])\n        return GptsToolsTypeRead(**exist_tool_type.model_dump(), children=children)\n\n    async def update_tools(self, req: GptsToolsTypeRead) -> GptsToolsTypeRead:\n        \"\"\"\n        Updating tool categories, including updating tool category names and deletions, adding tool categoryAPI\n        \"\"\"\n        # Try to parse theopenapi schemaSee if it can be parsed normally, Save if not possible Do not allow to save\n        if req.is_preset == ToolPresetType.API.value:\n            await self.parse_openapi_schema('', req.openapi_schema)\n        elif req.is_preset == ToolPresetType.MCP.value:\n            await self.parse_mcp_schema(req.openapi_schema)\n\n        exist_tool_type = await GptsToolsDao.aget_one_tool_type(req.id)\n        if not exist_tool_type:\n            raise ToolTypeNotExistsError()\n        if req.name.__len__() > 1000 or req.name.__len__() == 0:\n            raise ToolTypeNameError()\n\n        #  Determine if the tool category name is a duplicate\n        tool_type = await GptsToolsDao.get_one_tool_type_by_name(self.login_user.user_id, req.name)\n        if tool_type and tool_type.id != exist_tool_type.id:\n            raise ToolTypeRepeatError()\n        # Determine if there are update permissions\n        if not await self.login_user.async_access_check(exist_tool_type.user_id, str(exist_tool_type.id),\n                                                        AccessType.GPTS_TOOL_WRITE):\n            raise UnAuthorizedError()\n\n        res = await self._update_gpts_tools(exist_tool_type, req)\n        await self.update_tool_hook(self.request, self.login_user, exist_tool_type)\n        return res\n\n    @classmethod\n    async def update_tool_hook(cls, request: Request, user: UserPayload, exist_tool_type):\n        groups = await GroupResourceDao.aget_resource_group(ResourceTypeEnum.GPTS_TOOL, exist_tool_type.id)\n        group_ids = [int(one.group_id) for one in groups]\n        await asyncio.to_thread(AuditLogService.update_tool, user, get_request_ip(request), group_ids, exist_tool_type)\n\n    async def delete_tools(self, tool_type_id: int) -> bool:\n        \"\"\" Delete Tool Category \"\"\"\n        exist_tool_type = await GptsToolsDao.aget_one_tool_type(tool_type_id)\n        if not exist_tool_type:\n            return True\n        if exist_tool_type.is_preset == ToolPresetType.PRESET.value:\n            raise ToolTypeIsPresetError()\n        # Determine if there are update permissions\n        if not await self.login_user.async_access_check(exist_tool_type.user_id, str(exist_tool_type.id),\n                                                        AccessType.GPTS_TOOL_WRITE):\n            raise UnAuthorizedError()\n\n        await GptsToolsDao.delete_tool_type(tool_type_id)\n        await asyncio.to_thread(self.delete_tool_hook, self.request, self.login_user, exist_tool_type)\n        return True\n\n    @classmethod\n    def delete_tool_hook(cls, request, user: UserPayload, gpts_tool_type) -> bool:\n        \"\"\" After deleting the customizerhookFunction \"\"\"\n        logger.info(f\"delete_gpts_tool_hook id: {gpts_tool_type.id}, user: {user.user_id}\")\n        GroupResourceDao.delete_group_resource_by_third_id(gpts_tool_type.id, ResourceTypeEnum.GPTS_TOOL)\n        groups = GroupResourceDao.get_resource_group(ResourceTypeEnum.GPTS_TOOL, gpts_tool_type.id)\n        group_ids = [int(one.group_id) for one in groups]\n        AuditLogService.delete_tool(user, get_request_ip(request), group_ids, gpts_tool_type)\n        return True\n\n    async def refresh_all_mcp(self) -> list[str]:\n        \"\"\" return mcp server error msg \"\"\"\n        # get user all mcp tool\n        tool_types = await GptsToolsDao.aget_user_tool_type(self.login_user.user_id, is_preset=ToolPresetType.MCP)\n        if not tool_types:\n            return []\n\n        tools = await GptsToolsDao.aget_list_by_type(tool_type_ids=[one.id for one in tool_types])\n        tools_map = {}\n        for one in tools:\n            if one.type not in tools_map:\n                tools_map[one.type] = []\n            tools_map[one.type].append(one)\n        error_name = []\n        for one in tool_types:\n            try:\n                await self.refresh_mcp_tools(one, tools_map.get(one.id, []))\n            except Exception as e:\n                logger.exception(f'{one.name} tool refresh failed')\n                error_name.append(one.name)\n        return error_name\n\n    async def refresh_mcp_tools(self, tool_type: GptsToolsType, old_tools: list[GptsTools]):\n        \"\"\" refresh mcp tools \"\"\"\n        # 1. get all new tools\n        # Instantiatemcpservice object, getting a list of tools\n        client = await ClientManager.connect_mcp_from_json(tool_type.openapi_schema)\n        tools = await client.list_tools()\n        children = []\n        for one in tools:\n            children.append(GptsTools(\n                name=one.name,\n                desc=one.description,\n                is_preset=ToolPresetType.MCP.value,\n                api_params=self.convert_input_schema(one.inputSchema),\n                extra=one.model_dump_json(),\n                type=tool_type.id,\n            ))\n\n        req = GptsToolsTypeRead(**tool_type.model_dump(), children=children)\n        await self._update_gpts_tools(tool_type, req)\n\n    @classmethod\n    def convert_input_schema(cls, input_schema: dict):\n        \"\"\" TukarmcpInput parameters for the tool Formatting for custom tools\"\"\"\n        required = input_schema.get('required', [])\n        properties = input_schema.get('properties', {})\n        res = []\n        for filed, field_info in properties.items():\n            res.append({\n                'in': \"query\",\n                'name': filed,\n                'description': field_info.get('description'),\n                'required': filed in required,\n                'schema': {\n                    'type': field_info.get('type'),\n                }\n            })\n        return res\n\n    @classmethod\n    async def init_linsight_tools(cls, root_path: str) -> List[BaseTool]:\n        \"\"\" InisialisasiLinsight Default Tools, The special point is that the parameters initialized by the local file tool are not fixed, but are determined during rerun \"\"\"\n        # Tools for loading local file operations\n        local_file_tools = load_tools({\n            \"list_files\": {\"root_path\": root_path},\n            \"get_file_details\": {\"root_path\": root_path},\n            \"search_files\": {\"root_path\": root_path},\n            # \"search_text_in_file\": {\"root_path\": root_path},\n            \"read_text_file\": {\"root_path\": root_path},\n            \"add_text_to_file\": {\"root_path\": root_path},\n            \"replace_file_lines\": {\"root_path\": root_path},\n        })\n        knowledge_tools = [SearchKnowledgeBase()]\n        return knowledge_tools + local_file_tools\n\n    @classmethod\n    async def get_linsight_tools(cls) -> list[GptsToolsTypeRead]:\n        return [\n            GptsToolsTypeRead(\n                id=100000,\n                name=\"知识库和文件内容检索\",\n                description=\"检索组织知识库、个人知识库以及本地上传文件的内容\",\n                children=[\n                    GptsTools(\n                        id=100001,\n                        name=\"知识库和文件内容检索\",\n                        desc=\"检索组织知识库、个人知识库以及本地上传文件的内容。\",\n                        tool_key=\"search_knowledge_base\",\n                    )\n                ]\n            ),\n            GptsToolsTypeRead(\n                id=200000,\n                name=\"文件操作\",\n                description=\"本地文件系统的浏览、搜索与编辑工具集\",\n                children=[\n                    GptsTools(\n                        id=200001,\n                        name=\"获取所有文件和目录\",\n                        desc=\"列出指定目录下的所有文件和子目录。\",\n                        tool_key=\"list_files\"\n                    ),\n                    GptsTools(\n                        id=200002,\n                        name=\"获取文件详细信息\",\n                        desc=\"获取指定文件的文件名、文件大小、文件地址、字数、行数等详细信息。\",\n                        tool_key=\"get_file_details\"\n                    ),\n                    GptsTools(\n                        id=200003,\n                        name=\"搜索文件\",\n                        desc=\"在指定目录中搜索文件和子目录。\",\n                        tool_key=\"search_files\"\n                    ),\n                    GptsTools(\n                        id=200004,\n                        name=\"读取文件内容\",\n                        desc=\"读取本地文本文件的内容。\",\n                        tool_key=\"read_text_file\"\n                    ),\n                    GptsTools(\n                        id=200005,\n                        name=\"写入文件内容\",\n                        desc=\"将文本内容追加到文本文件，如果文件不存在，则创建文件\",\n                        tool_key=\"add_text_to_file\"\n                    ),\n                    GptsTools(\n                        id=200006,\n                        name=\"替换文件指定行范围内容\",\n                        desc=\"替换文件中的指定行范围。\",\n                        tool_key=\"replace_file_lines\"\n                    ),\n                ]\n            )\n        ]\n"
  },
  {
    "path": "src/backend/bisheng/user/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/api/role.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/api/user.py",
    "content": "import hashlib\nimport random\nfrom base64 import b64encode\nfrom datetime import datetime\nfrom io import BytesIO\nfrom typing import Annotated, Dict, List, Optional\n\nimport rsa\nfrom captcha.image import ImageCaptcha\nfrom fastapi import APIRouter, Depends, HTTPException, Query, Body, Request\nfrom fastapi.security import OAuth2PasswordBearer\nfrom loguru import logger\nfrom sqlmodel import select\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.schemas import resp_200, CreateUserReq\nfrom bisheng.common.errcode.http_error import UnAuthorizedError, NotFoundError\nfrom bisheng.common.errcode.user import (UserNotPasswordError, UserValidateError, UserPasswordError, UserForbiddenError)\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client, get_redis_client_sync\nfrom bisheng.core.database import get_sync_db_session\nfrom bisheng.database.constants import AdminRole, DefaultRole\nfrom bisheng.database.models.group import GroupDao\nfrom bisheng.database.models.mark_task import MarkTaskDao\nfrom bisheng.database.models.role import Role, RoleCreate, RoleDao, RoleUpdate\nfrom bisheng.database.models.role_access import RoleRefresh, RoleAccessDao, AccessType\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.utils import generate_uuid\nfrom bisheng.utils import get_request_ip\nfrom bisheng.utils.constants import CAPTCHA_PREFIX, RSA_KEY, USER_PASSWORD_ERROR, USER_CURRENT_SESSION\nfrom ..domain.models.user import User, UserCreate, UserDao, UserLogin, UserRead, UserUpdate\nfrom ..domain.models.user_role import UserRole, UserRoleCreate, UserRoleDao\nfrom ..domain.services.auth import AuthJwt, LoginUser\nfrom ..domain.services.user import UserService\nfrom ...common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom ...common.schemas.telemetry.event_data_schema import UserLoginEventData\nfrom ...common.services import telemetry_service\nfrom ...core.logger import trace_id_var\n\n# build router\nrouter = APIRouter(prefix='', tags=['User'])\n\noauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')\n\n\n@router.post('/user/regist')\nasync def regist(*, user: UserCreate):\n    # Captcha Verification\n    db_user = await UserService.user_register(user)\n    return resp_200(db_user)\n\n\n@router.post('/user/sso')\nasync def sso(*, request: Request, user: UserCreate, auth_jwt: AuthJwt = Depends()):\n    \"\"\" Login interface for closed source gateways \"\"\"\n    if settings.get_system_login_method().bisheng_pro:  # Judgingsso Open or not\n        account_name = user.user_name\n        user_exist = UserDao.get_unique_user_by_name(account_name)\n        if not user_exist:\n            # Determine if there is a user under the platform\n            user_all = UserDao.get_all_users(page=1, limit=1)\n            # Automatically create users\n            user_exist = User.model_validate(user)\n            logger.info('act=create_user account={}', account_name)\n            default_admin = settings.get_system_login_method().admin_username\n            # Insert as Super Admin if there is no user on the platform or if the username matches the configured admin username\n            if len(user_all) == 0 or (default_admin and default_admin == account_name):\n                # Create as Super Admin\n                user_exist = await UserDao.add_user_and_admin_role(user_exist)\n            else:\n                # Create as Normal User\n                user_exist = await UserDao.add_user_and_default_role(user_exist)\n            await UserGroupDao.add_default_user_group(user_exist.user_id)\n        if 1 == user_exist.delete:\n            raise UserForbiddenError.http_exception()\n        access_token = LoginUser.create_access_token(user_exist, auth_jwt=auth_jwt)\n\n        # Set the logged in user's currentcookie, .jwtValid for an additional hour\n        redis_client = await get_redis_client()\n        await redis_client.aset(USER_CURRENT_SESSION.format(user_exist.user_id), access_token,\n                                settings.cookie_conf.jwt_token_expire_time + 3600)\n\n        # Log Audit Logs\n        login_user = await LoginUser.init_login_user(user_id=user_exist.user_id, user_name=user_exist.user_name)\n        AuditLogService.user_login(login_user, get_request_ip(request))\n\n        # RecordTelemetryJournal\n        await telemetry_service.log_event(user_id=login_user.user_id, event_type=BaseTelemetryTypeEnum.USER_LOGIN,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=UserLoginEventData(method=\"oss\"))\n\n        return resp_200({'access_token': access_token, 'refresh_token': access_token})\n    else:\n        raise ValueError('Interface not supported')\n\n\ndef get_error_password_key(username: str):\n    return USER_PASSWORD_ERROR.format(username)\n\n\ndef clear_error_password_key(username: str):\n    # Count of cleanup password errors\n    error_key = get_error_password_key(username)\n    get_redis_client_sync().delete(error_key)\n\n\n@router.post('/user/login')\nasync def login(*, request: Request, user: UserLogin, auth_jwt: AuthJwt = Depends()):\n    return await UserService.user_login(request, user=user, auth_jwt=auth_jwt)\n\n\n@router.get('/user/admin')\nasync def get_admins(login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    \"\"\"\n    Get all Super Admin accounts\n    \"\"\"\n    # check if user already exist\n    if not login_user.is_admin():\n        raise HTTPException(status_code=500, detail=\"Quit that! You don't have rights to view this.\")\n    try:\n        # Get all Super Admin accounts\n        admins = UserRoleDao.get_admins_user()\n        admins_ids = [admin.user_id for admin in admins]\n        admin_users = UserDao.get_user_by_ids(admins_ids)\n        res = [UserRead(**one.__dict__) for one in admin_users]\n        return resp_200(res)\n    except Exception:\n        raise HTTPException(status_code=500, detail='User information failed')\n\n\n@router.get('/user/info')\nasync def get_info(login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    user_id = login_user.user_id\n    db_user = await UserDao.aget_user(user_id)\n    if not db_user:\n        raise NotFoundError()\n    role, web_menu = await login_user.get_roles_web_menu(db_user)\n\n    admin_group = await UserGroupDao.aget_user_admin_group(user_id)\n    admin_group = [one.group_id for one in admin_group]\n    return resp_200(UserRead(role=str(role), web_menu=web_menu, admin_groups=admin_group, **db_user.__dict__))\n\n\n@router.post('/user/logout', status_code=201)\nasync def logout(auth_jwt: AuthJwt = Depends()):\n    auth_jwt.unset_access_token()\n    return resp_200()\n\n\n@router.get('/user/list', status_code=201)\nasync def list_user(*,\n                    name: Optional[str] = None,\n                    page_size: Optional[int] = 10,\n                    page_num: Optional[int] = 1,\n                    group_id: Annotated[List[int], Query()] = None,\n                    role_id: Annotated[List[int], Query()] = None,\n                    login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    groups = group_id\n    roles = role_id\n    user_admin_groups = []\n    if not login_user.is_admin():\n        # Query if you are an administrator of another user group under\n        user_admin_groups = UserGroupDao.get_user_admin_group(login_user.user_id)\n        user_admin_groups = [one.group_id for one in user_admin_groups]\n        groups = user_admin_groups\n        # Not an administrator of any user group does not have permission to view\n        if not groups:\n            raise HTTPException(status_code=500, detail=\"Quit that! You don't have rights to view this.\")\n        # Filter bygroup_idand administrator permissionsgroupsDoing Intersections\n        if group_id:\n            groups = list(set(groups) & set(group_id))\n            if not groups:\n                raise HTTPException(status_code=500, detail=\"Quit that! You don't have rights to view this.\")\n        # Query roles under user groups, Intersect with the role filter to get the role that really needs to be queriedID\n        group_roles = RoleDao.get_role_by_groups(groups, None, 0, 0)\n        if role_id:\n            roles = list(set(role_id) & set([one.id for one in group_roles]))\n    # Users filtered by user groups and rolesid\n    user_ids = []\n    if groups:\n        # Query users under user groupsID\n        groups_user_ids = UserGroupDao.get_groups_user(groups)\n        if not groups_user_ids:\n            return resp_200({'data': [], 'total': 0})\n        user_ids = list(set([one.user_id for one in groups_user_ids]))\n\n    if roles:\n        roles_user_ids = UserRoleDao.get_roles_user(roles)\n        if not roles_user_ids:\n            return resp_200({'data': [], 'total': 0})\n        roles_user_ids = [one.user_id for one in roles_user_ids]\n\n        # Automatically close purchase order afteruser_idsis not empty, the description isgroupsDo intersection screening together, otherwise only do role screening\n        if user_ids:\n            user_ids = list(set(user_ids) & set(roles_user_ids))\n            if not user_ids:\n                return resp_200({'data': [], 'total': 0})\n        else:\n            user_ids = list(set(roles_user_ids))\n\n    users, total_count = UserDao.filter_users(user_ids, name, page_num, page_size)\n    res = []\n    role_dict = {}\n    group_dict = {}\n    for one in users:\n        one_data = one.model_dump()\n        user_roles = get_user_roles(one, role_dict)\n        user_groups = get_user_groups(one, group_dict)\n        # If not hyper-managed, data needs to be filtered, Cannot see the list of roles and user groups within a user group not managed by him\n        if user_admin_groups:\n            for i in range(len(user_roles) - 1, -1, -1):\n                if user_roles[i][\"group_id\"] not in user_admin_groups:\n                    del user_roles[i]\n            for i in range(len(user_groups) - 1, -1, -1):\n                if user_groups[i][\"id\"] not in user_admin_groups:\n                    del user_groups[i]\n        one_data[\"roles\"] = user_roles\n        one_data[\"groups\"] = user_groups\n        res.append(one_data)\n\n    return resp_200({'data': res, 'total': total_count})\n\n\ndef get_user_roles(user: User, role_cache: Dict) -> List[Dict]:\n    # Query a list of roles for a user\n    user_roles = UserRoleDao.get_user_roles(user.user_id)\n    user_role_ids: List[int] = [one_role.role_id for one_role in user_roles]\n    res = []\n    for i in range(len(user_role_ids) - 1, -1, -1):\n        if role_cache.get(user_role_ids[i]):\n            res.append(role_cache.get(user_role_ids[i]))\n            del user_role_ids[i]\n    # Query database for role information without caching\n    if user_role_ids:\n        role_list = RoleDao.get_role_by_ids(user_role_ids)\n        for role_info in role_list:\n            role_cache[role_info.id] = {\n                \"id\": role_info.id,\n                \"group_id\": role_info.group_id,\n                \"name\": role_info.role_name\n            }\n            res.append(role_cache.get(role_info.id))\n    return res\n\n\ndef get_user_groups(user: User, group_cache: Dict) -> List[Dict]:\n    # Query a list of roles for a user\n    user_groups = UserGroupDao.get_user_group(user.user_id)\n    user_group_ids: List[int] = [one_group.group_id for one_group in user_groups]\n    res = []\n    for i in range(len(user_group_ids) - 1, -1, -1):\n        if group_cache.get(user_group_ids[i]):\n            res.append(group_cache.get(user_group_ids[i]))\n            del user_group_ids[i]\n    # Query database for role information without caching\n    if user_group_ids:\n        group_list = GroupDao.get_group_by_ids(user_group_ids)\n        for group_info in group_list:\n            group_cache[group_info.id] = {'id': group_info.id, 'name': group_info.group_name}\n            res.append(group_cache.get(group_info.id))\n    return res\n\n\n@router.post('/user/update', status_code=201)\nasync def update(*,\n                 request: Request,\n                 user: UserUpdate,\n                 login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    db_user = UserDao.get_user(user.user_id)\n    if not db_user:\n        raise HTTPException(status_code=500, detail='Pengguna tidak ada')\n\n    if not login_user.is_admin():\n        # Check if is an administrator of a user group under\n        user_group = UserGroupDao.get_user_group(db_user.user_id)\n        user_group = [one.group_id for one in user_group]\n        if not login_user.check_groups_admin(user_group):\n            raise HTTPException(status_code=500, detail=\"Quit that! You don't have rights to view this.\")\n\n    # check if user already exist\n    if db_user and user.delete is not None:\n        # Determine if it's an admin\n        with get_sync_db_session() as session:\n            admin = session.exec(\n                select(UserRole).where(UserRole.role_id == 1,\n                                       UserRole.user_id == user.user_id)).first()\n        if admin:\n            raise HTTPException(status_code=500, detail='Cannot operate admin')\n        if user.delete == db_user.delete:\n            return resp_200()\n        db_user.delete = user.delete\n    if db_user.delete == 0:  # Enable User\n        # Count of cleanup password errors\n        clear_error_password_key(db_user.user_name)\n    with get_sync_db_session() as session:\n        session.add(db_user)\n        session.commit()\n        session.refresh(db_user)\n    update_user_delete_hook(request, login_user, db_user)\n    return resp_200()\n\n\ndef update_user_delete_hook(request: Request, login_user: LoginUser, user: User) -> bool:\n    logger.info(f'update_user_delete_hook: {request}, user={user}')\n    if user.delete == 0:  # Enable User\n        AuditLogService.recover_user(login_user, get_request_ip(request), user)\n    elif user.delete == 1:  # Disabled User\n        AuditLogService.forbid_user(login_user, get_request_ip(request), user)\n    return True\n\n\n@router.post('/role/add', status_code=201)\nasync def create_role(*,\n                      request: Request,\n                      role: RoleCreate,\n                      login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    if not role.group_id:\n        raise HTTPException(status_code=500, detail='User GroupsIDTidak boleh kosong.')\n    if not role.role_name:\n        raise HTTPException(status_code=500, detail='msg.role_name_not_be_empty')\n\n    if not login_user.check_group_admin(role.group_id):\n        return UnAuthorizedError.return_resp()\n\n    db_role = Role.model_validate(role)\n    try:\n        with get_sync_db_session() as session:\n            session.add(db_role)\n            session.commit()\n            session.refresh(db_role)\n        create_role_hook(request, login_user, db_role)\n        return resp_200(db_role)\n    except Exception:\n        logger.exception('add role error')\n        raise HTTPException(status_code=500, detail='Failed to add, check if it is added repeatedly')\n\n\ndef create_role_hook(request: Request, login_user: LoginUser, db_role: Role) -> bool:\n    logger.info(f'create_role_hook: {login_user.user_name}, role={db_role}')\n    AuditLogService.create_role(login_user, get_request_ip(request), db_role)\n\n\n@router.patch('/role/{role_id}', status_code=201)\nasync def update_role(*,\n                      request: Request,\n                      role_id: int,\n                      role: RoleUpdate,\n                      login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    db_role = RoleDao.get_role_by_id(role_id)\n    if not db_role:\n        raise HTTPException(status_code=404, detail='This character does not exist')\n\n    if not login_user.check_group_admin(db_role.group_id):\n        return UnAuthorizedError.return_resp()\n\n    try:\n        if role.role_name:\n            db_role.role_name = role.role_name\n        if role.remark:\n            db_role.remark = role.remark\n        with get_sync_db_session() as session:\n            session.add(db_role)\n            session.commit()\n            session.refresh(db_role)\n        update_role_hook(request, login_user, db_role)\n        return resp_200(db_role)\n    except Exception:\n        logger.exception(f'update_role')\n        raise HTTPException(status_code=500, detail='Update failed, server side exception')\n\n\ndef update_role_hook(request: Request, login_user: LoginUser, db_role: Role) -> bool:\n    logger.info(f'update_role_hook: {login_user.user_name}, role={db_role}')\n    AuditLogService.update_role(login_user, get_request_ip(request), db_role)\n\n\n@router.get('/role/list', status_code=200)\nasync def get_role(*,\n                   role_name: str = None,\n                   page: int = 0,\n                   limit: int = 0,\n                   login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    \"\"\"\n    Get a list of roles visible to the user, Return different data according to different user permissions\n    \"\"\"\n    # Parameter Processing\n    if role_name:\n        role_name = role_name.strip()\n\n    # Determine if it's a Super Admin\n    if login_user.is_admin():\n        # Is Super Admin Get All\n        group_ids = []\n    else:\n        # Query if you are an administrator of another user group under\n        user_groups = UserGroupDao.get_user_admin_group(login_user.user_id)\n        group_ids = [one.group_id for one in user_groups if one.is_group_admin]\n        if not group_ids:\n            raise HTTPException(status_code=500, detail=\"Quit that! You don't have rights to view this.\")\n\n    # Query a list of all roles\n    res = RoleDao.get_role_by_groups(group_ids, role_name, page, limit)\n    total = RoleDao.count_role_by_groups(group_ids, role_name)\n    return resp_200(data={\"data\": res, \"total\": total})\n\n\n@router.delete('/role/{role_id}', status_code=200)\nasync def delete_role(*,\n                      request: Request,\n                      role_id: int, login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    db_role = RoleDao.get_role_by_id(role_id)\n    if not db_role:\n        return resp_200()\n\n    if not login_user.check_group_admin(db_role.group_id):\n        return UnAuthorizedError.return_resp()\n\n    if db_role.id == AdminRole or db_role.id == DefaultRole:\n        raise HTTPException(status_code=500, detail='Built-in roles cannot be deleted')\n\n    # DeleteroleRelated data\n    try:\n        RoleDao.delete_role(role_id)\n    except Exception as e:\n        logger.exception(e)\n        raise HTTPException(status_code=500, detail='Failed to delete role')\n    AuditLogService.delete_role(login_user, get_request_ip(request), db_role)\n    return resp_200()\n\n\n@router.post('/user/role_add', status_code=200)\nasync def user_addrole(*,\n                       request: Request,\n                       user_role: UserRoleCreate,\n                       login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    \"\"\"\n    Resets the role of the user. The scope of the data varies depending on the permissions\n    \"\"\"\n    # Get a list of the user's previous roles\n    old_roles = UserRoleDao.get_user_roles(user_role.user_id)\n    old_roles = [one.role_id for one in old_roles]\n    # Determine if the role being edited is Super Admin, Super Admin does not allow editing\n    user_role_list = UserRoleDao.get_user_roles(user_role.user_id)\n    if any(one.role_id == AdminRole for one in user_role_list):\n        raise HTTPException(status_code=500, detail='Editing is not allowed by the system administrator')\n    if any(one == AdminRole for one in user_role.role_id):\n        raise HTTPException(status_code=500, detail='Setting as system administrator is not allowed')\n\n    if not login_user.is_admin():\n        # Determine which user groups you have administrative access to\n        admin_group = UserGroupDao.get_user_admin_group(login_user.user_id)\n        admin_group = [one.group_id for one in admin_group]\n        if not admin_group:\n            raise HTTPException(status_code=500, detail='No rights')\n        # Get a list of all roles under an admin group\n        admin_roles = RoleDao.get_role_by_groups(admin_group, '', 0, 0)\n        admin_roles = [one.id for one in admin_roles]\n        # Do the intersection to get the list of roles visible to the user group administrator\n        for i in range(len(old_roles) - 1, -1, -1):\n            if old_roles[i] not in admin_roles:\n                del old_roles[i]\n        # Determine if the reset role list is in Under the name of the user group administrator\n        for i in range(len(user_role.role_id) - 1, -1, -1):\n            if user_role.role_id[i] not in admin_roles:\n                raise HTTPException(status_code=500, detail=f'No permission to add roles{user_role.role_id[i]}')\n\n    need_add_role = []\n    need_delete_role = old_roles.copy()\n    for one in user_role.role_id:\n        if one not in old_roles:\n            # Role needs to be added\n            need_add_role.append(one)\n        else:\n            # All that remains is the list of roles that need to be deleted\n            need_delete_role.remove(one)\n    if need_add_role:\n        UserRoleDao.add_user_roles(user_role.user_id, need_add_role)\n    if need_delete_role:\n        # Delete the corresponding role list\n        UserRoleDao.delete_user_roles(user_role.user_id, need_delete_role)\n    update_user_role_hook(request, login_user, user_role.user_id, old_roles, user_role.role_id)\n    return resp_200()\n\n\ndef update_user_role_hook(request: Request, login_user: LoginUser, user_id: int,\n                          old_roles: List[int], new_roles: List[int]):\n    logger.info(f'update_user_role_hook, user_id: {user_id}, old_roles: {old_roles}, new_roles: {new_roles}')\n    # Write Audit Log\n    role_info = RoleDao.get_role_by_ids(old_roles + new_roles)\n    group_ids = list(set([role.group_id for role in role_info]))\n    role_dict = {one.id: one.role_name for one in role_info}\n    note = \"Pre-edit role:\"\n    for one in old_roles:\n        note += role_dict[one] + \"、\"\n    note = note.rstrip(\"、\")\n    note += \"Post-edited roles:\"\n    for one in new_roles:\n        note += role_dict[one] + \"、\"\n    note = note.rstrip(\"、\")\n    AuditLogService.update_user(login_user, get_request_ip(request), user_id, group_ids, note)\n\n\n@router.post('/role_access/refresh', status_code=200)\nasync def access_refresh(*, request: Request, data: RoleRefresh,\n                         login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    db_role = await RoleDao.aget_role_by_id(data.role_id)\n    if not db_role:\n        raise NotFoundError().http_exception()\n    if db_role.id == AdminRole:\n        raise UnAuthorizedError.http_exception()\n    if not await login_user.async_check_group_admin(db_role.group_id):\n        raise UnAuthorizedError.http_exception()\n\n    role_id = data.role_id\n    access_type = data.type\n    access_id = data.access_id\n    await RoleAccessDao.update_role_access_all(role_id, AccessType(access_type), access_id)\n\n    update_role_hook(request, login_user, db_role)\n    return resp_200()\n\n\n@router.get('/role_access/list', status_code=200)\nasync def access_list(*, role_id: int, access_type: Optional[int] = Query(default=None, alias=\"type\"),\n                      login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    db_role = await RoleDao.aget_role_by_id(role_id)\n    if not db_role:\n        raise NotFoundError().http_exception()\n\n    if not await login_user.async_check_group_admin(db_role.group_id):\n        return UnAuthorizedError.return_resp()\n\n    access_type = None\n    if access_type:\n        access_type = AccessType(access_type)\n    res = await RoleAccessDao.aget_role_access([role_id], access_type)\n\n    return resp_200({\n        'data': res,\n        'total': len(res)\n    })\n\n\n@router.get('/user/get_captcha', status_code=200)\nasync def get_captcha():\n    # generate captcha\n    chr_all = \"abcdefghjkmnpqrstuvwxyABCDEFGHJKMNPQRSTUVWXY3456789\"\n    chr_4 = ''.join(random.sample(chr_all, 4))\n    image = ImageCaptcha().generate_image(chr_4)\n    # Right.image To be performedbase 64 <g id=\"Bold\">Code</g>\n    buffered = BytesIO()\n    image.save(buffered, format='PNG')\n\n    capthca_b64 = b64encode(buffered.getvalue()).decode()\n    logger.info('get_captcha captcha_char={}', chr_4)\n    # generate key, Generate Simple Uniqueid，\n    key = CAPTCHA_PREFIX + generate_uuid()[:8]\n    redis_client = await get_redis_client()\n    await redis_client.aset(key, chr_4, expiration=300)\n\n    # Add configuration, whether the verification code must be used\n    return resp_200({\n        'captcha_key': key,\n        'captcha': capthca_b64,\n        'user_capthca': settings.get_from_db('use_captcha') or False\n    })\n\n\n@router.get('/user/public_key', status_code=200)\nasync def get_rsa_publish_key():\n    # redis Storage\n    key = RSA_KEY\n    redis_client = await get_redis_client()\n    # redis lock\n    if await redis_client.asetNx(key, 1):\n        # Generate a key pair\n        (pubkey, privkey) = rsa.newkeys(512)\n\n        # Save the keys to strings\n        await redis_client.aset(key, (pubkey, privkey), 3600)\n    else:\n        pubkey, privkey = await redis_client.aget(key)\n\n    pubkey_str = pubkey.save_pkcs1().decode()\n\n    return resp_200({'public_key': pubkey_str})\n\n\n@router.post('/user/reset_password', status_code=200)\nasync def reset_password(\n        *,\n        user_id: int = Body(embed=True),\n        password: str = Body(embed=True),\n        login_user: LoginUser = Depends(LoginUser.get_login_user),\n):\n    \"\"\"\n    Admin Reset User Password\n    \"\"\"\n    # Get user information to change password\n    user_info = UserDao.get_user(user_id)\n    if not user_info:\n        raise HTTPException(status_code=404, detail='Pengguna tidak ada')\n    user_payload = LoginUser(**{\n        'user_id': user_info.user_id,\n        'user_name': user_info.user_name,\n        'role': ''\n    })\n    # If the user being modified is a system administrator, Need to determine if it's me\n    if user_payload.is_admin() and login_user.user_id != user_id:\n        raise HTTPException(status_code=500, detail='System administrators can only reset passwords themselves')\n\n    # Query the user group the user belongs to\n    user_groups = UserGroupDao.get_user_group(user_info.user_id)\n    user_group_ids = [one.group_id for one in user_groups]\n\n    # Check if there are administrative permissions for the group\n    if not login_user.check_groups_admin(user_group_ids):\n        raise HTTPException(status_code=403, detail='No permission to reset password')\n\n    user_info.password = UserService.decrypt_md5_password(password)\n    user_info.password_update_time = datetime.now()\n    UserDao.update_user(user_info)\n\n    clear_error_password_key(user_info.user_name)\n    return resp_200()\n\n\n@router.post('/user/change_password', status_code=200)\nasync def change_password(*,\n                          password: str = Body(embed=True),\n                          new_password: str = Body(embed=True),\n                          login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    \"\"\"\n    Login user Change my password\n    \"\"\"\n    user_info = UserDao.get_user(login_user.user_id)\n    if not user_info.password:\n        return UserNotPasswordError.return_resp()\n\n    password = UserService.decrypt_md5_password(password)\n\n    # Logged in user told it was the wrong password\n    if user_info.password != password:\n        return UserPasswordError.return_resp()\n\n    user_info.password = UserService.decrypt_md5_password(new_password)\n    user_info.password_update_time = datetime.now()\n    UserDao.update_user(user_info)\n\n    clear_error_password_key(user_info.user_name)\n    return resp_200()\n\n\n@router.post('/user/change_password_public', status_code=200)\nasync def change_password_public(*,\n                                 username: str = Body(embed=True),\n                                 password: str = Body(embed=True),\n                                 new_password: str = Body(embed=True)):\n    \"\"\"\n    Not Logged-In Users Change my password\n    \"\"\"\n\n    user_info = UserDao.get_user_by_username(username)\n    if not user_info.password:\n        return UserValidateError.return_resp()\n\n    if user_info.password != UserService.decrypt_md5_password(password):\n        return UserValidateError.return_resp()\n\n    user_info.password = UserService.decrypt_md5_password(new_password)\n    user_info.password_update_time = datetime.now()\n    UserDao.update_user(user_info)\n\n    clear_error_password_key(username)\n    return resp_200()\n\n\n@router.get('/user/mark', status_code=200)\nasync def has_mark_access(*, request: Request, login_user: LoginUser = Depends(LoginUser.get_login_user)):\n    \"\"\"\n    Get whether the current user has annotation permission,Determine if the current user isadmin Or a user group administrator\n    \"\"\"\n    user_groups = UserGroupDao.get_user_group(login_user.user_id)\n    user_group_ids = [one.group_id for one in user_groups]\n\n    has_mark_access = False\n    # Check if there are administrative permissions for the group\n    task = MarkTaskDao.get_task(login_user.user_id)\n    if task:\n        has_mark_access = True\n\n    return resp_200(data=has_mark_access)\n\n\n@router.post('/user/create', status_code=200)\nasync def create_user(*,\n                      request: Request,\n                      admin_user: LoginUser = Depends(LoginUser.get_admin_user),\n                      req: CreateUserReq):\n    \"\"\"\n    Super Admin Create User\n    \"\"\"\n    logger.info(f'create_user username={admin_user.user_name}, username={req.user_name}')\n    data = UserService.create_user(request, admin_user, req)\n    return resp_200(data=data)\n\n\ndef md5_hash(string):\n    md5 = hashlib.md5()\n    md5.update(string.encode('utf-8'))\n    return md5.hexdigest()\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/const.py",
    "content": "# Stores the number of times a user's password is incorrect.keyareusername\nUSER_PASSWORD_ERROR = 'user_password_error:{}'\n# Store current user logged incookie, keyIs Userid\nUSER_CURRENT_SESSION = 'user_current_session:{}'\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/models/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/models/user.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional\n\nfrom pydantic import field_validator\nfrom sqlalchemy import Column, DateTime, func, text\nfrom sqlalchemy.orm import selectinload\nfrom sqlmodel import Field, select, Relationship, col\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.constants import AdminRole, DefaultRole\nfrom bisheng.database.models.group import Group\nfrom bisheng.database.models.role import Role\nfrom bisheng.database.models.user_group import UserGroup\nfrom bisheng.user.domain.models.user_role import UserRole\n\n\nclass UserBase(SQLModelSerializable):\n    user_name: str = Field(index=True, unique=True)\n    email: Optional[str] = Field(default=None, index=True)\n    phone_number: Optional[str] = Field(default=None, index=True)\n    dept_id: Optional[str] = Field(default=None, index=True)\n    remark: Optional[str] = Field(default=None, index=False)\n    delete: int = Field(default=0, index=False)\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, index=True, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n    @field_validator('user_name')\n    @classmethod\n    def validate_str(cls, v):\n        # dict_keys(['description', 'name', 'id', 'data'])\n        if not v:\n            raise ValueError('user_name Tidak boleh kosong.')\n        return v\n\n\nclass User(UserBase, table=True):\n    user_id: Optional[int] = Field(default=None, primary_key=True)\n    password: str = Field(index=False)\n    password_update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')), description='Password Last Modified')\n\n    # DefinitiongroupsAndrolesQuery Relationships for\n    groups: List[\"Group\"] = Relationship(link_model=UserGroup)\n    roles: List[\"Role\"] = Relationship(link_model=UserRole)\n\n    __tablename__ = \"user\"\n\n\nclass UserRead(UserBase):\n    user_id: Optional[int] = None\n    role: Optional[str] = None  # admin / group_admin\n    access_token: Optional[str] = None\n    web_menu: Optional[List[str]] = None\n    admin_groups: Optional[List[int]] = None  # Managed User GroupsIDVertical\n\n\nclass UserQuery(UserBase):\n    pass\n\n\nclass UserLogin(UserBase):\n    password: str\n\n    captcha_key: Optional[str] = None\n    captcha: Optional[str] = None\n\n\nclass UserCreate(UserBase):\n    password: Optional[str] = Field(default='')\n    captcha_key: Optional[str] = None\n    captcha: Optional[str] = None\n\n\nclass UserUpdate(SQLModelSerializable):\n    user_id: int\n    delete: Optional[int] = 0\n\n\nclass UserDao(UserBase):\n\n    @classmethod\n    def get_user(cls, user_id: int) -> User | None:\n        with get_sync_db_session() as session:\n            statement = select(User).where(User.user_id == user_id)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_user(cls, user_id: int) -> User | None:\n        async with get_async_db_session() as session:\n            statement = select(User).where(User.user_id == user_id)\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def get_user_by_ids(cls, user_ids: List[int]) -> List[User] | None:\n        with get_sync_db_session() as session:\n            statement = select(User).where(User.user_id.in_(user_ids))\n            return session.exec(statement).all()\n\n    @classmethod\n    async def aget_user_by_ids(cls, user_ids: List[int]) -> List[User] | None:\n        async with get_async_db_session() as session:\n            statement = select(User).where(User.user_id.in_(user_ids))\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_user_by_username(cls, username: str) -> User | None:\n        with get_sync_db_session() as session:\n            statement = select(User).where(User.user_name == username)\n            return session.exec(statement).first()\n\n    @classmethod\n    async def aget_user_by_username(cls, username: str) -> User | None:\n        async with get_async_db_session() as session:\n            statement = select(User).where(User.user_name == username)\n            result = await session.exec(statement)\n            return result.first()\n\n    @classmethod\n    def update_user(cls, user: User) -> User:\n        with get_sync_db_session() as session:\n            session.add(user)\n            session.commit()\n            session.refresh(user)\n            return user\n\n    @classmethod\n    async def aupdate_user(cls, user: User) -> User:\n        async with get_async_db_session() as session:\n            session.add(user)\n            await session.commit()\n            await session.refresh(user)\n            return user\n\n    @classmethod\n    def _filter_users_statement(cls,\n                                statement,\n                                user_ids: List[int],\n                                keyword: str = None):\n        if user_ids:\n            statement = statement.where(User.user_id.in_(user_ids))\n        if keyword:\n            statement = statement.where(User.user_name.like(f'%{keyword}%'))\n        return statement.order_by(User.user_id.desc())\n\n    @classmethod\n    def filter_users(cls,\n                     user_ids: List[int],\n                     keyword: str = None,\n                     page: int = 0,\n                     limit: int = 0) -> (List[User], int):\n        statement = select(User)\n        statement = cls._filter_users_statement(statement, user_ids, keyword)\n        count_statement = select(func.count(User.user_id))\n        count_statement = cls._filter_users_statement(count_statement, user_ids, keyword)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(User.user_id.desc())\n        with get_sync_db_session() as session:\n            return session.exec(statement).all(), session.scalar(count_statement)\n\n    @classmethod\n    async def afilter_users(cls,\n                            user_ids: List[int],\n                            keyword: str = None,\n                            page: int = 0,\n                            limit: int = 0) -> List[User]:\n        statement = select(User)\n        statement = cls._filter_users_statement(statement, user_ids, keyword)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        statement = statement.order_by(User.user_id.desc())\n        async with get_async_db_session() as session:\n            result = await session.exec(statement)\n            return result.all()\n\n    @classmethod\n    def get_unique_user_by_name(cls, user_name: str) -> User | None:\n        with get_sync_db_session() as session:\n            statement = select(User).where(User.user_name == user_name)\n            return session.exec(statement).first()\n\n    @classmethod\n    def search_user_by_name(cls, user_name: str) -> List[User] | None:\n        with get_sync_db_session() as session:\n            statement = select(User).where(User.user_name.like('%{}%'.format(user_name)))\n            return session.exec(statement).all()\n\n    @classmethod\n    def create_user(cls, db_user: User) -> User:\n        with get_sync_db_session() as session:\n            session.add(db_user)\n            session.commit()\n            session.refresh(db_user)\n            return db_user\n\n    @classmethod\n    async def add_user_and_default_role(cls, user: User) -> User:\n        \"\"\"\n        Add users and add default roles\n        \"\"\"\n        async with get_async_db_session() as session:\n            session.add(user)\n            await session.commit()\n            await session.refresh(user)\n            db_user_role = UserRole(user_id=user.user_id, role_id=DefaultRole)\n            session.add(db_user_role)\n            await session.commit()\n            await session.refresh(user)\n            return user\n\n    @classmethod\n    async def add_user_and_admin_role(cls, user: User) -> User:\n        \"\"\"\n        Add users and add super admin roles\n        \"\"\"\n        async with get_async_db_session() as session:\n            session.add(user)\n            await session.commit()\n            await session.refresh(user)\n            db_user_role = UserRole(user_id=user.user_id, role_id=AdminRole)\n            session.add(db_user_role)\n            await session.commit()\n            await session.refresh(user)\n            return user\n\n    @classmethod\n    def add_user_with_groups_and_roles(cls, user: User, group_ids: List[int],\n                                       role_ids: List[int]) -> User:\n        with get_sync_db_session() as session:\n            session.add(user)\n            session.flush()\n            for group_id in group_ids:\n                db_user_group = UserGroup(user_id=user.user_id, group_id=group_id)\n                session.add(db_user_group)\n            for role_id in role_ids:\n                db_user_role = UserRole(user_id=user.user_id, role_id=role_id)\n                session.add(db_user_role)\n            session.commit()\n            session.refresh(user)\n            return user\n\n    @classmethod\n    def get_all_users(cls, page: int = 0, limit: int = 0) -> List[User]:\n        \"\"\"\n        Pagination Get All Users\n        \"\"\"\n        statement = select(User)\n        if page and limit:\n            statement = statement.offset((page - 1) * limit).limit(limit)\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_user_with_group_role(cls, *, start_time: datetime = None, end_time: datetime = None,\n                                 user_ids: List[int] = None, page: int = 0, page_size: int = 0) -> List[User]:\n        statement = select(User)\n        if start_time and end_time:\n            statement = statement.where(User.create_time >= start_time, User.create_time < end_time)\n        if page and page_size:\n            statement = statement.offset((page - 1) * page_size).limit(page_size)\n        if user_ids:\n            statement = statement.where(col(User.user_id).in_(user_ids))\n        statement = statement.order_by(User.user_id)\n        statement = statement.options(\n            selectinload(User.groups),  # type: ignore\n            selectinload(User.roles)  # type: ignore\n        )\n        with get_sync_db_session() as session:\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_first_user(cls) -> User | None:\n        statement = select(User).order_by(col(User.user_id).asc()).limit(1)\n        with get_sync_db_session() as session:\n            return session.exec(statement).first()\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/models/user_role.py",
    "content": "from datetime import datetime\nfrom typing import List, Optional\n\nfrom pydantic import BaseModel\nfrom sqlalchemy import Column, DateTime, text, delete, INT\nfrom sqlmodel import Field, select\n\nfrom bisheng.common.models.base import SQLModelSerializable\nfrom bisheng.core.database import get_sync_db_session, get_async_db_session\nfrom bisheng.database.constants import AdminRole\n\n\nclass UserRoleBase(SQLModelSerializable):\n    user_id: Optional[int] = Field(\n        default=None,\n        foreign_key=\"user.user_id\",\n        primary_key=True,\n        ondelete=\"CASCADE\"\n    )\n    role_id: int = Field(\n        default=None,\n        foreign_key=\"role.id\",\n        primary_key=True,\n        ondelete=\"CASCADE\"\n    )\n    create_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP')))\n    update_time: Optional[datetime] = Field(default=None, sa_column=Column(\n        DateTime, nullable=False, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')))\n\n\nclass UserRole(UserRoleBase, table=True):\n    id: Optional[int] = Field(default=None, sa_column=Column(INT, primary_key=True, autoincrement=True))\n\n\nclass UserRoleRead(UserRoleBase):\n    id: Optional[int] = None\n\n\nclass UserRoleCreate(BaseModel):\n    user_id: int\n    role_id: list[int]\n\n\nclass UserRoleDao(UserRoleBase):\n\n    @classmethod\n    def get_user_roles(cls, user_id: int) -> List[UserRole]:\n        with get_sync_db_session() as session:\n            return session.exec(select(UserRole).where(UserRole.user_id == user_id)).all()\n\n    @classmethod\n    async def aget_user_roles(cls, user_id: int) -> List[UserRole]:\n        async with get_async_db_session() as session:\n            result = await session.exec(select(UserRole).where(UserRole.user_id == user_id))\n            return result.all()\n\n    @classmethod\n    def get_roles_user(cls, role_ids: List[int], page: int = 0, limit: int = 0) -> List[UserRole]:\n        \"\"\"\n        Get the user for the role\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserRole).where(UserRole.role_id.in_(role_ids))\n            if page and limit:\n                statement = statement.offset((page - 1) * limit).limit(limit)\n            return session.exec(statement).all()\n\n    @classmethod\n    def get_admins_user(cls) -> List[UserRole]:\n        \"\"\"\n        Get all super-managed accounts\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = select(UserRole).where(UserRole.role_id == AdminRole)\n            return session.exec(statement).all()\n\n    @classmethod\n    async def set_admin_user(cls, user_id: int) -> UserRole:\n        \"\"\"\n        Set user as Super Admin\n        \"\"\"\n        async with get_async_db_session() as session:\n            user_role = UserRole(user_id=user_id, role_id=AdminRole)\n            session.add(user_role)\n            await session.commit()\n            await session.refresh(user_role)\n            return user_role\n\n    @classmethod\n    def add_user_roles(cls, user_id: int, role_ids: List[int]) -> List[UserRole]:\n        \"\"\"\n        Add roles to users in bulk\n        \"\"\"\n        with get_sync_db_session() as session:\n            user_roles = [UserRole(user_id=user_id, role_id=role_id) for role_id in role_ids]\n            session.add_all(user_roles)\n            session.commit()\n            return user_roles\n\n    @classmethod\n    def delete_user_roles(cls, user_id: int, role_ids: List[int]) -> None:\n        \"\"\"\n        Remove users from certain roles\n        \"\"\"\n        with get_sync_db_session() as session:\n            statement = delete(UserRole).where(UserRole.user_id == user_id).where(UserRole.role_id.in_(role_ids))\n            session.exec(statement)\n            session.commit()\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/repositories/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/repositories/implementations/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/repositories/implementations/user_repository_impl.py",
    "content": "from typing import Union\n\nfrom sqlalchemy.orm import selectinload\nfrom sqlmodel import select, Session\nfrom sqlmodel.ext.asyncio.session import AsyncSession\n\nfrom bisheng.common.repositories.implementations.base_repository_impl import BaseRepositoryImpl\nfrom bisheng.user.domain.models.user import User\nfrom bisheng.user.domain.repositories.interfaces.user_repository import UserRepository\n\n\nclass UserRepositoryImpl(BaseRepositoryImpl[User, int], UserRepository):\n    \"\"\"Shared link repository implementation\"\"\"\n\n    def __init__(self, session: Union[AsyncSession, Session]):\n        super().__init__(session, User)\n\n    # accordinguser_idget user info user、user_groups、roles\n    async def get_user_with_groups_and_roles_by_user_id(self, user_id: int) -> User | None:\n        statement = (\n            select(User).where(User.user_id == user_id).options(\n                selectinload(User.groups),  # type: ignore\n                selectinload(User.roles)  # type: ignore\n            )\n        )\n\n        result = await self.session.exec(statement)\n        return result.first()\n\n    def get_user_with_groups_and_roles_by_user_id_sync(self, user_id: int) -> User | None:\n        statement = (\n            select(User).where(User.user_id == user_id).options(\n                selectinload(User.groups),  # type: ignore\n                selectinload(User.roles)  # type: ignore\n            )\n        )\n\n        result = self.session.exec(statement)\n        return result.first()\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/repositories/interfaces/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/repositories/interfaces/user_repository.py",
    "content": "from abc import ABC\nfrom bisheng.common.repositories.interfaces.base_repository import BaseRepository\nfrom bisheng.user.domain.models.user import User, UserQuery\n\n\nclass UserRepository(BaseRepository[User, int], ABC):\n    \"\"\"User Repository Interface Class\"\"\"\n\n    # accordinguser_idget user info user、user_groups、roles\n    async def get_user_with_groups_and_roles_by_user_id(self, user_id: int) -> UserQuery:\n        pass\n\n    def get_user_with_groups_and_roles_by_user_id_sync(self, user_id: int) -> UserQuery:\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/services/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/user/domain/services/auth.py",
    "content": "import functools\nimport json\nfrom datetime import datetime, timezone\nfrom functools import cached_property\nfrom typing import List, Dict, Any, Optional\n\nimport jwt\nfrom fastapi import Request, Response, Depends\nfrom pydantic import BaseModel, Field\nfrom starlette.websockets import WebSocket\nfrom typing_extensions import Self\n\nfrom bisheng.common.errcode.http_error import UnAuthorizedError\nfrom bisheng.common.exceptions.auth import JWTDecodeError\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.database.constants import AdminRole\nfrom bisheng.database.models.group import GroupDao\nfrom bisheng.database.models.role_access import AccessType, RoleAccessDao, WebMenuResource\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom ..models.user import User\nfrom ..models.user_role import UserRoleDao\n\n\nclass AuthJwt:\n    def __init__(self, req: Request = None, res: Response = None):\n        self.req = req\n        self.res = res\n        self.jwt_secret = settings.jwt_secret\n        self.cookie_conf = settings.cookie_conf\n        self._access_cookie_key = \"access_token_cookie\"\n        self._encode_algorithm = \"HS256\"\n        self._decode_algorithms = [self._encode_algorithm]\n\n    def create_access_token(self, subject: dict) -> str:\n        \"\"\" create jwt token \"\"\"\n        if isinstance(subject, dict):\n            subject = json.dumps(subject)\n        payload = {\n            'sub': subject,\n            'exp': int(datetime.now(timezone.utc).timestamp()) + self.cookie_conf.jwt_token_expire_time,\n            'iss': self.cookie_conf.jwt_iss\n        }\n        token = jwt.encode(payload, self.jwt_secret, algorithm=self._encode_algorithm)\n        return token\n\n    def set_access_token(self, token: str, response: Response = None, max_age: int = None) -> None:\n        \"\"\" set jwt token to cookie \"\"\"\n        response = response or self.res\n        response.set_cookie(\n            self._access_cookie_key,\n            token,\n            max_age=max_age or self.cookie_conf.max_age,\n            path=self.cookie_conf.path,\n            domain=self.cookie_conf.domain,\n            secure=self.cookie_conf.secure,\n            httponly=self.cookie_conf.httponly,\n            samesite=self.cookie_conf.samesite\n        )\n\n    def unset_access_token(self) -> None:\n        self.res.delete_cookie(\n            self._access_cookie_key,\n            path=self.cookie_conf.path,\n            domain=self.cookie_conf.domain\n        )\n\n    def get_subject(self,\n                    auth_from: str = \"request\",\n                    token: Optional[str] = None,\n                    websocket: Optional[WebSocket] = None) -> Dict:\n        \"\"\" decode jwt token \"\"\"\n        if auth_from == \"request\":\n            if not token:\n                token = self.req.cookies.get(self._access_cookie_key)\n        elif auth_from == \"websocket\":\n            if websocket:\n                token = websocket.cookies.get(self._access_cookie_key)\n        elif auth_from == \"headers\":\n            if not token:\n                token = self.req.headers.get(\"Authorization\").split(\" \")[-1]\n        else:\n            raise ValueError(\"unsupported auth_from value\")\n        return self.decode_jwt_token(token)\n\n    def decode_jwt_token(self, token: str) -> Dict:\n        \"\"\" decode jwt token \"\"\"\n        try:\n            payload = jwt.decode(token, self.jwt_secret, issuer=self.cookie_conf.jwt_iss,\n                                 algorithms=self._decode_algorithms)\n            return json.loads(payload.get('sub'))\n        except Exception as e:\n            raise JWTDecodeError(status_code=422, message=str(e))\n\n\nclass LoginUser(BaseModel):\n    user_id: int\n    user_name: str = Field(default=\"\")\n    user_role: List[int] = Field(default_factory=list, description=\"Users GroupsIDVertical\")\n    group_cache: Dict[int, Any] = Field(default_factory=dict, description=\"User Group Cache\")\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.user_id = kwargs.get('user_id')\n        self.user_name = kwargs.get('user_name')\n        self.user_role = kwargs.get('user_role')\n        self.group_cache = kwargs.get('group_cache', {})\n\n        if not self.user_role:\n            self.user_role = []\n            user_role = UserRoleDao.get_user_roles(self.user_id)\n            self.user_role = [user_role.role_id for user_role in user_role]\n\n    @cached_property\n    def _check_admin(self):\n        if isinstance(self.user_role, list):\n            for one in self.user_role:\n                if one == AdminRole:\n                    return True\n        return False\n\n    def is_admin(self):\n        return self._check_admin\n\n    @staticmethod\n    def wrapper_access_check(func):\n        \"\"\"\n        Decorator for permissions check\n        ifadminThe user does not perform subsequent specific check logic\n        \"\"\"\n\n        @functools.wraps(func)\n        def wrapper(*args, **kwargs):\n            if args[0].is_admin():\n                return True\n            return func(*args, **kwargs)\n\n        return wrapper\n\n    @staticmethod\n    def async_wrapper_access_check(func):\n        \"\"\"\n        Decorator for asynchronous permission checking\n        ifadminThe user does not perform subsequent specific check logic\n        \"\"\"\n\n        @functools.wraps(func)\n        async def wrapper(*args, **kwargs):\n            if args[0].is_admin():\n                return True\n            return await func(*args, **kwargs)\n\n        return wrapper\n\n    @wrapper_access_check\n    def access_check(self, owner_user_id: int, target_id: str, access_type: AccessType) -> bool:\n        \"\"\"\n            Check if the user has permission to a resource\n        \"\"\"\n        # Determine if it belongs to my resource\n        if self.user_id == owner_user_id:\n            return True\n        # Judgment Authorization\n        if RoleAccessDao.judge_role_access(self.user_role, target_id, access_type):\n            return True\n        return False\n\n    @async_wrapper_access_check\n    async def async_access_check(self, owner_user_id: int, target_id: str, access_type: AccessType) -> bool:\n        if self.user_id == owner_user_id:\n            return True\n        flag = await RoleAccessDao.ajudge_role_access(self.user_role, target_id, access_type)\n        return True if flag else False\n\n    @wrapper_access_check\n    def copiable_check(self, owner_user_id: int) -> bool:\n        \"\"\"\n            Check if the user has permission to copy a resource\n        \"\"\"\n        # Determine if it belongs to my resource\n        if self.user_id == owner_user_id:\n            return True\n        return False\n\n    @wrapper_access_check\n    def check_group_admin(self, group_id: int) -> bool:\n        \"\"\"\n            Check if the user is an administrator of a group\n        \"\"\"\n        # Determine if you are an administrator of a user group\n        user_group = UserGroupDao.get_user_admin_group(self.user_id)\n        if not user_group:\n            return False\n        for one in user_group:\n            if one.group_id == group_id:\n                return True\n        return False\n\n    @async_wrapper_access_check\n    async def async_check_group_admin(self, group_id: int) -> bool:\n        \"\"\"\n            Asynchronously check if the user is an administrator of a group\n        \"\"\"\n        # Determine if you are an administrator of a user group\n        user_group = await UserGroupDao.aget_user_admin_group(self.user_id, group_id)\n        if not user_group:\n            return False\n        for one in user_group:\n            if one.group_id == group_id:\n                return True\n        return False\n\n    @wrapper_access_check\n    def check_groups_admin(self, group_ids: List[int]) -> bool:\n        \"\"\"\n        Check if the user is an administrator in the user group list, one of which istrue\n        \"\"\"\n        user_groups = UserGroupDao.get_user_admin_group(self.user_id)\n        for one in user_groups:\n            if one.is_group_admin and one.group_id in group_ids:\n                return True\n        return False\n\n    async def get_user_groups(self, user_id: int) -> List[Dict]:\n        \"\"\" Query a list of roles for a user \"\"\"\n        user_groups = await UserGroupDao.aget_user_group(user_id)\n        user_group_ids: List[int] = [one_group.group_id for one_group in user_groups]\n        res = []\n        for i in range(len(user_group_ids) - 1, -1, -1):\n            if self.group_cache.get(user_group_ids[i]):\n                res.append(self.group_cache.get(user_group_ids[i]))\n                del user_group_ids[i]\n        # Query database for role information without caching\n        if user_group_ids:\n            group_list = await GroupDao.aget_group_by_ids(user_group_ids)\n            for group_info in group_list:\n                self.group_cache[group_info.id] = {'id': group_info.id, 'name': group_info.group_name}\n                res.append(self.group_cache.get(group_info.id))\n        return res\n\n    async def get_user_group_ids(self, user_id: int = None):\n        if user_id is None:\n            user_id = self.user_id\n        user_groups = await UserGroupDao.aget_user_group(user_id)\n        return [one_group.group_id for one_group in user_groups]\n\n    def get_user_access_resource_ids(self, access_types: List[AccessType]) -> List[str]:\n        \"\"\" Query resources for which the user has the corresponding permissionsIDVertical \"\"\"\n        role_access = RoleAccessDao.get_role_access_batch(self.user_role, access_types)\n        return list(set([one.third_id for one in role_access]))\n\n    async def aget_user_access_resource_ids(self, access_types: List[AccessType]) -> List[str]:\n        \"\"\" Resources with corresponding permissions for asynchronous query usersIDVertical \"\"\"\n        role_access = await RoleAccessDao.aget_role_access_batch(self.user_role, access_types)\n        return list(set([one.third_id for one in role_access]))\n\n    # some methods related to AuthJwt\n    @classmethod\n    def create_access_token(cls, user: User, auth_jwt: AuthJwt) -> str:\n        \"\"\" Create access for userstoken \"\"\"\n        payload = {\n            'user_id': user.user_id,\n            'user_name': user.user_name\n        }\n        token = auth_jwt.create_access_token(subject=payload)\n        return token\n\n    @classmethod\n    def set_access_cookies(cls, token: str, auth_jwt: AuthJwt, **kwargs) -> None:\n        \"\"\" set access token into cookie \"\"\"\n        auth_jwt.set_access_token(token, **kwargs)\n\n    @classmethod\n    def unset_access_cookies(cls, auth_jwt: AuthJwt) -> None:\n        auth_jwt.unset_access_token()\n\n    @classmethod\n    async def init_login_user(cls, user_id: int, user_name: str) -> Self:\n        user_roles = await UserRoleDao.aget_user_roles(user_id)\n        role_ids = [user_role.role_id for user_role in user_roles]\n        login_user = cls(user_id=user_id, user_name=user_name, user_role=role_ids)\n        return login_user\n\n    @classmethod\n    def init_login_user_sync(cls, user_id: int, user_name: str) -> Self:\n        user_roles = UserRoleDao.get_user_roles(user_id)\n        role_ids = [user_role.role_id for user_role in user_roles]\n        login_user = cls(user_id=user_id, user_name=user_name, user_role=role_ids)\n        return login_user\n\n    @classmethod\n    async def get_login_user(cls, auth_jwt: AuthJwt = Depends()) -> Self:\n        subject = auth_jwt.get_subject()\n        return await cls.init_login_user(user_id=subject['user_id'], user_name=subject['user_name'])\n\n    @classmethod\n    async def get_admin_user(cls, auth_jwt: AuthJwt = Depends()) -> Self:\n        login_user = await cls.get_login_user(auth_jwt)\n        if not login_user.is_admin():\n            raise UnAuthorizedError.http_exception()\n        return login_user\n\n    @classmethod\n    async def get_login_user_from_ws(cls, websocket: WebSocket, auth_jwt: AuthJwt = Depends(), t: str = None) -> Self:\n        subject = auth_jwt.get_subject(auth_from=\"websocket\", websocket=websocket, token=t)\n        return await cls.init_login_user(user_id=subject['user_id'], user_name=subject['user_name'])\n\n    @classmethod\n    async def get_admin_user_from_ws(cls, websocket: WebSocket, auth_jwt: AuthJwt = Depends(), t: str = None) -> Self:\n        login_user = await cls.get_login_user_from_ws(websocket, auth_jwt, t)\n        if not login_user.is_admin():\n            raise UnAuthorizedError.http_exception()\n        return login_user\n\n    @classmethod\n    async def get_roles_web_menu(cls, user: User) -> (List[int] | str, List[str]):\n        \"\"\" get user roles and web menu \"\"\"\n        db_user_role = await UserRoleDao.aget_user_roles(user.user_id)\n        role = ''\n        role_ids = []\n        for user_role in db_user_role:\n            if user_role.role_id == AdminRole:\n                role = 'admin'\n            else:\n                role_ids.append(user_role.role_id)\n        if role != 'admin':\n            # is user group admin ?\n            db_user_groups = await UserGroupDao.aget_user_admin_group(user.user_id)\n            if len(db_user_groups) > 0:\n                role = 'group_admin'\n            else:\n                role = role_ids\n            # Get a list of a user's menu bar permissions\n            web_menu = await RoleAccessDao.aget_role_access(role_ids, AccessType.WEB_MENU)\n            web_menu = list(set([one.third_id for one in web_menu]))\n        else:\n            web_menu = [one.value for one in WebMenuResource]\n        return role, web_menu\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/services/captcha.py",
    "content": "from bisheng.core.cache.redis_manager import get_redis_client\n\n\nasync def verify_captcha(captcha: str, captcha_key: str):\n    # check captcha\n    redis_client = await get_redis_client()\n    captcha_value = await redis_client.aget(captcha_key)\n    if captcha_value:\n        await redis_client.adelete(captcha_key)\n        return captcha_value.lower() == captcha.lower()\n    else:\n        return False\n"
  },
  {
    "path": "src/backend/bisheng/user/domain/services/user.py",
    "content": "from base64 import b64decode\nfrom datetime import datetime\nfrom typing import List\n\nimport rsa\nfrom fastapi import Request, Depends\n\nfrom bisheng.api.services.audit_log import AuditLogService\nfrom bisheng.api.v1.schemas import CreateUserReq\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum\nfrom bisheng.common.errcode.user import (UserNameAlreadyExistError,\n                                         UserNeedGroupAndRoleError, UserForbiddenError, CaptchaError, UserValidateError,\n                                         UserPasswordMaxTryError, UserPasswordExpireError, UserNameTooLongError)\nfrom bisheng.common.schemas.api import resp_200\nfrom bisheng.common.schemas.telemetry.event_data_schema import UserLoginEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync, get_redis_client\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.user.domain.models.user import User, UserDao, UserLogin, UserRead, UserCreate\nfrom bisheng.utils import md5_hash, get_request_ip\nfrom bisheng.utils.constants import RSA_KEY\nfrom .auth import LoginUser, AuthJwt\nfrom .captcha import verify_captcha\nfrom ..const import USER_PASSWORD_ERROR, USER_CURRENT_SESSION\n\n\nclass UserService:\n\n    @classmethod\n    def decrypt_md5_password(cls, password: str):\n        if value := get_redis_client_sync().get(RSA_KEY):\n            private_key = value[1]\n            password = md5_hash(rsa.decrypt(b64decode(password), private_key).decode('utf-8'))\n        else:\n            password = md5_hash(password)\n        return password\n\n    @classmethod\n    def create_user(cls, request: Request, login_user: LoginUser, req_data: CreateUserReq):\n        \"\"\"\n        Create User\n        \"\"\"\n        exists_user = UserDao.get_user_by_username(req_data.user_name)\n        if exists_user:\n            # Throwing an exception?\n            raise UserNameAlreadyExistError.http_exception()\n        user = User(\n            user_name=req_data.user_name,\n            password=cls.decrypt_md5_password(req_data.password),\n        )\n        group_ids = []\n        role_ids = []\n        for one in req_data.group_roles:\n            group_ids.append(one.group_id)\n            role_ids.extend(one.role_ids)\n        if not group_ids or not role_ids:\n            raise UserNeedGroupAndRoleError.http_exception()\n        user = UserDao.add_user_with_groups_and_roles(user, group_ids, role_ids)\n        return user\n\n    @staticmethod\n    def get_error_password_key(username: str):\n        return USER_PASSWORD_ERROR.format(username)\n\n    @classmethod\n    async def clear_error_password_key(cls, username: str):\n        # Count of cleanup password errors\n        error_key = cls.get_error_password_key(username)\n        (await get_redis_client()).delete(error_key)\n\n    @classmethod\n    async def judge_user_password(cls, db_user: User, password: str) -> None:\n        redis_client = await get_redis_client()\n\n        password_conf = await settings.get_password_conf()\n        if not db_user.password:\n            raise UserValidateError()\n\n        if db_user.password == password:\n            # Determine if the password has not been changed for a long time\n            if password_conf.password_valid_period and password_conf.password_valid_period > 0:\n                if (datetime.now() - db_user.password_update_time).days >= password_conf.password_valid_period:\n                    raise UserPasswordExpireError()\n            return\n\n        # Determine if the number of errors needs to be logged\n        if not password_conf.login_error_time_window or not password_conf.max_error_times:\n            raise UserValidateError()\n        # Number of errors plus1\n        error_key = cls.get_error_password_key(db_user.user_name)\n        error_num = await redis_client.aincr(error_key)\n        if error_num == 1:\n            # First time setupkeyExpiration date\n            await redis_client.aexpire_key(error_key, password_conf.login_error_time_window * 60)\n        if error_num and int(error_num) >= password_conf.max_error_times:\n            # Maximum number of errors reached, account banned\n            db_user.delete = 1\n            await UserDao.aupdate_user(db_user)\n            raise UserPasswordMaxTryError()\n        raise UserValidateError()\n\n    @classmethod\n    async def user_register(cls, user: UserCreate):\n        # Captcha Verification\n        if settings.get_from_db('use_captcha'):\n            if not user.captcha_key or not await verify_captcha(user.captcha, user.captcha_key):\n                raise CaptchaError()\n\n        db_user = User.model_validate(user)\n\n        # check if user already exist\n        user_exists = await UserDao.aget_user_by_username(db_user.user_name)\n        if user_exists:\n            raise UserNameAlreadyExistError()\n        if len(db_user.user_name) > 30:\n            raise UserNameTooLongError()\n        db_user.password = cls.decrypt_md5_password(user.password)\n        # Under JudgmentadminDoes the user exist\n        admin = await UserDao.aget_user(1)\n        if admin:\n            db_user = await UserDao.add_user_and_default_role(db_user)\n        else:\n            db_user.user_id = 1\n            db_user = await UserDao.add_user_and_admin_role(db_user)\n        # Write users to the default user group\n        await UserGroupDao.add_default_user_group(db_user.user_id)\n        return db_user\n\n    @classmethod\n    async def user_login(cls, request: Request, user: UserLogin, auth_jwt: AuthJwt = Depends()):\n        if await settings.aget_from_db('use_captcha'):\n            if not user.captcha_key or not await verify_captcha(user.captcha, user.captcha_key):\n                raise CaptchaError()\n\n        # get user info\n        db_user = await UserDao.aget_user_by_username(user.user_name)\n        # verify user exists\n        if not db_user:\n            return UserValidateError.return_resp()\n        if db_user.delete == 1:\n            raise UserForbiddenError()\n\n        # verify password\n        password = cls.decrypt_md5_password(user.password)\n        await cls.judge_user_password(db_user, password)\n\n        # gen jwt token\n        access_token = LoginUser.create_access_token(user=db_user, auth_jwt=auth_jwt)\n\n        # set cookies\n        LoginUser.set_access_cookies(access_token, auth_jwt=auth_jwt)\n\n        # Set the logged in user's currentcookie, .jwtValid for an additional hour\n        redis_client = await get_redis_client()\n        await redis_client.aset(USER_CURRENT_SESSION.format(db_user.user_id), access_token,\n                                auth_jwt.cookie_conf.jwt_token_expire_time + 3600)\n\n        # Log Audit Logs\n        login_user = await LoginUser.init_login_user(db_user.user_id, db_user.user_name)\n        AuditLogService.user_login(login_user, get_request_ip(request))\n\n        # RecordTelemetryJournal\n        await telemetry_service.log_event(user_id=db_user.user_id, event_type=BaseTelemetryTypeEnum.USER_LOGIN,\n                                          trace_id=trace_id_var.get(),\n                                          event_data=UserLoginEventData(method=\"password\"))\n\n        return resp_200(UserRead(access_token=access_token, **db_user.__dict__))\n\n    @classmethod\n    def get_user_all_info(cls, *, start_time: datetime = None, end_time: datetime = None, user_ids: List[int] = None,\n                          page: int = 1, page_size: int = 100) -> List[User]:\n        \"\"\" Get user information, including user group and role information \"\"\"\n        return UserDao.get_user_with_group_role(page=page, page_size=page_size, user_ids=user_ids,\n                                                start_time=start_time, end_time=end_time)\n\n    @classmethod\n    def get_first_user(cls) -> User | None:\n        \"\"\" Get the first user \"\"\"\n        return UserDao.get_first_user()\n\n    @classmethod\n    async def get_user_by_id(cls, user_id: int) -> User | None:\n        \"\"\" Get user by username \"\"\"\n        return await UserDao.aget_user(user_id)\n"
  },
  {
    "path": "src/backend/bisheng/utils/__init__.py",
    "content": "import hashlib\nimport io\nimport time\nimport uuid\nfrom typing import BinaryIO, Union, IO\n\nfrom fastapi import Request, WebSocket\n\n\ndef generate_uuid() -> str:\n    \"\"\" generate uuid4 string \"\"\"\n    return uuid.uuid4().hex\n\n\ndef md5_hash(original_string: str):\n    \"\"\" generate md5 hash string \"\"\"\n    md5 = hashlib.md5()\n    md5.update(original_string.encode('utf-8'))\n    return md5.hexdigest()\n\n\ndef get_request_ip(request: Request | WebSocket) -> str:\n    \"\"\" get client real ip address \"\"\"\n    x_forwarded_for = request.headers.get('X-Forwarded-For')\n    if x_forwarded_for:\n        return x_forwarded_for.split(',')[0]\n    ip = request.headers.get('X-Real-IP')\n    if ip:\n        return ip\n    return request.client.host\n\n\ndef generate_knowledge_index_name() -> str:\n    \"\"\" generate knowledge index name \"\"\"\n    return f\"col_{int(time.time())}_{generate_uuid()[:8]}\"\n\n\ndef calc_data_sha256(data: Union[str, bytes, IO[bytes], None]) -> Union[str, None]:\n    \"\"\"\n    calculate sha256 hash of data\n    :param data: str, bytes, or a file-like object (with read() method)\n    :return: sha256 hex digest string or None\n    \"\"\"\n    if data is None:\n        return None\n\n    hasher = hashlib.sha256()\n\n    # Handle str and bytes directly\n    if isinstance(data, (str, bytes)):\n        if isinstance(data, str):\n            data = data.encode('utf-8')\n        hasher.update(data)\n        return hasher.hexdigest()\n\n    if hasattr(data, 'read'):\n        # Assume it's a file-like object\n        try:\n            current_pos = data.tell()\n        except Exception:\n            current_pos = 0\n\n        data.seek(0)\n\n        chunk_size = 65536  # 64KB per chunk\n        while True:\n            chunk = data.read(chunk_size)\n            if not chunk:\n                break\n            hasher.update(chunk)\n\n        # Reset the file pointer to its original position\n        data.seek(current_pos)\n        return hasher.hexdigest()\n\n    return None\n"
  },
  {
    "path": "src/backend/bisheng/utils/consisten_hash.py",
    "content": "import bisect\nimport hashlib\nfrom typing import Dict, List, Optional, Any\n\n\nclass ConsistentHash:\n\n    def __init__(self, nodes: Optional[List[str]] = None,\n                 virtual_replicas: int = 100,\n                 hash_fn: Optional[Any] = None):\n        self.virtual_replicas = virtual_replicas\n        self.hash_fn = hash_fn or (lambda x: int(hashlib.md5(x.encode()).hexdigest(), 16))\n\n        # save hash ring: hash_value -> node\n        self.ring: Dict[int, str] = {}\n        # save sorted hash values for find\n        self.sorted_hashes: List[int] = []\n\n        # save all nodes\n        self.nodes = set()\n\n        # init nodes\n        if nodes:\n            for node in nodes:\n                self.add_node(node)\n\n    def add_node(self, node: str) -> None:\n        if node in self.nodes:\n            return\n\n        self.nodes.add(node)\n\n        # create virtual nodes\n        for i in range(self.virtual_replicas):\n            # virtual node name: node#0, node#1, ...\n            virtual_node = f\"{node}#{i}\"\n\n            # calc\n            hash_value = self.hash_fn(virtual_node)\n\n            # Avoid hash collisions\n            while hash_value in self.ring:\n                virtual_node = f\"{virtual_node}#\"\n                hash_value = self.hash_fn(virtual_node)\n\n            # 添加到环中\n            self.ring[hash_value] = node\n\n        # resort hash values\n        self._update_sorted_hashes()\n\n    def remove_node(self, node: str) -> None:\n        if node not in self.nodes:\n            return\n\n        self.nodes.remove(node)\n\n        # Remove all virtual nodes of this node.\n        hashes_to_remove = [\n            hash_val for hash_val, n in self.ring.items()\n            if n == node\n        ]\n\n        for hash_val in hashes_to_remove:\n            del self.ring[hash_val]\n\n        self._update_sorted_hashes()\n\n    def _update_sorted_hashes(self) -> None:\n        \"\"\"Update the sorted hash value list\"\"\"\n        self.sorted_hashes = sorted(self.ring.keys())\n\n    def find_node(self, key: str) -> Optional[str]:\n        \"\"\"\n        Retrieve the corresponding node based on the key\n\n        Args:\n            key: hash key\n\n        Returns:\n            node name or None if no nodes exist\n        \"\"\"\n        if not self.ring:\n            return None\n\n        key_hash = self.hash_fn(key)\n\n        # Use binary search to find the first node that is greater than or equal to key_hash.\n        idx = bisect.bisect_left(self.sorted_hashes, key_hash)\n\n        # If idx is out of range, return to the beginning of the ring.\n        if idx == len(self.sorted_hashes):\n            idx = 0\n\n        # return node name\n        return self.ring[self.sorted_hashes[idx]]\n\n    def find_nodes(self, key: str, count: int = 1) -> List[str]:\n        \"\"\"\n        Retrieves multiple nodes for a given key (in clockwise order).\n\n        Args:\n            key: hash key\n            count: Number of nodes to be returned\n\n        Returns:\n            Returns a list of nodes that processed the key.\n        \"\"\"\n        if not self.ring or count <= 0:\n            return []\n\n        if count > len(self.nodes):\n            count = len(self.nodes)\n\n        key_hash = self.hash_fn(key)\n\n        idx = bisect.bisect_left(self.sorted_hashes, key_hash)\n\n        if idx == len(self.sorted_hashes):\n            idx = 0\n\n        nodes = []\n        seen_nodes = set()\n\n        while len(nodes) < count:\n            node = self.ring[self.sorted_hashes[idx]]\n\n            if node not in seen_nodes:\n                seen_nodes.add(node)\n                nodes.append(node)\n\n            idx += 1\n            if idx == len(self.sorted_hashes):\n                idx = 0\n\n        return nodes\n\n    def get_ring_size(self) -> int:\n        return len(self.ring)\n\n    def get_node_count(self) -> int:\n        return len(self.nodes)\n\n    def get_all_nodes(self) -> List[str]:\n        return list(self.nodes)\n\n\nif __name__ == \"__main__\":\n    # 创建一致性哈希环\n    ch = ConsistentHash(virtual_replicas=10)\n\n    # 测试数据分布\n    test_keys = [\"key1\", \"key2\", \"key3\", \"key4\", \"key5\", \"key6\", \"key7\", \"key8\", \"key9\", \"key10\"]\n\n    print(\"初始节点分布:\")\n    distribution = {}\n    for key in test_keys:\n        node = ch.find_node(key)\n        distribution[node] = distribution.get(node, 0) + 1\n        print(f\"  {key} -> {node}\")\n\n    print(\"\\n数据分布统计:\")\n    for node, count in distribution.items():\n        print(f\"  {node}: {count} 个键\")\n\n    # 添加新节点\n    print(\"\\n添加新节点 server4\")\n    ch.add_node(\"server4\")\n\n    # 查看添加节点后的数据分布变化\n    moved_keys = []\n    for key in test_keys:\n        new_node = ch.find_node(key)\n        # 这里简化比较，实际应该记录之前分配的节点\n        print(f\"  {key} -> {new_node}\")\n\n    # 获取多个节点\n    print(\"\\n获取处理 'key1' 的3个节点:\")\n    nodes = ch.find_nodes(\"key1\", 3)\n    for i, node in enumerate(nodes, 1):\n        print(f\"  第{i}候选: {node}\")\n\n    # 移除节点\n    print(\"\\n移除节点 server2\")\n    ch.remove_node(\"server2\")\n\n    print(f\"当前物理节点数: {ch.get_node_count()}\")\n    print(f\"当前虚拟节点数: {ch.get_ring_size()}\")\n"
  },
  {
    "path": "src/backend/bisheng/utils/constants.py",
    "content": "from typing import Any, Dict, List\n\nOPENAI_MODELS = [\n    'text-davinci-003',\n    'text-davinci-002',\n    'text-curie-001',\n    'text-babbage-001',\n    'text-ada-001',\n]\nCHAT_OPENAI_MODELS = [\n    'gpt-3.5-turbo-0613', 'gpt-3.5-turbo', 'gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-16k',\n    'gpt-4-0613', 'gpt-4-32k-0613', 'gpt-4', 'gpt-4-32k', 'gpt-4-1106-preview', 'gpt-4o'\n]\n\nANTHROPIC_MODELS = [\n    'claude-v1',  # largest model, ideal for a wide range of more complex tasks.\n    'claude-v1-100k',  # An enhanced version of claude-v1 with a 100,000 token (roughly 75,000 word) context window.\n    'claude-instant-v1',  # A smaller model with far lower latency, sampling at roughly 40 words/sec!\n    'claude-instant-v1-100k',  # Like claude-instant-v1 with a 100,000 token context window but retains its performance.\n    # Specific sub-versions of the above models:\n    'claude-v1.3',  # Vs claude-v1.2: better instruction-following, code, and non-English dialogue and writing.\n    'claude-v1.3-100k',  # An enhanced version of claude-v1.3 with a 100,000 token (roughly 75,000 word) context window.\n    'claude-v1.2',  # Vs claude-v1.1: small adv in general helpfulness, instruction following, coding, and other tasks.\n    'claude-v1.0',  # An earlier version of claude-v1.\n    'claude-instant-v1.1',  # Latest version of claude-instant-v1. Better than claude-instant-v1.0 at most tasks.\n    'claude-instant-v1.1-100k',  # Version of claude-instant-v1.1 with a 100K token context window.\n    'claude-instant-v1.0',  # An earlier version of claude-instant-v1.\n]\n\nDEFAULT_PYTHON_FUNCTION = \"\"\"\ndef python_function(text: str) -> str:\n    \\\"\\\"\\\"This is a default python function that returns the input text\\\"\\\"\\\"\n    return text\n\"\"\"\nPYTHON_BASIC_TYPES = [str, bool, int, float, tuple, list, dict, set]\n\nDIRECT_TYPES = [\n    'str', 'bool', 'dict', 'int', 'float', 'Any', 'prompt', 'code', 'NestedDict', 'variable', 'knowledge_list',\n    'knowledge_one', 'bisheng_model', 'bisheng_embedding'\n]\n\n# Added to recordnode_id And of the relationship between objectskey\nNODE_ID_DICT = 'node_id_dict'\n\n# Used to record preset questions, dict: key is the object of the actionid\nPRESET_QUESTION = 'preset_question'\n\n# redis key\nCAPTCHA_PREFIX = 'cap_'\nRSA_KEY = 'rsa_'\n# Stores the number of times a user's password is incorrect.keyareusername\nUSER_PASSWORD_ERROR = 'user_password_error:{}'\n# Store current user logged incookie, keyIs Userid\nUSER_CURRENT_SESSION = 'user_current_session:{}'\n\nLOADERS_INFO: List[Dict[str, Any]] = [\n    {\n        'loader': 'AirbyteJSONLoader',\n        'name': 'Airbyte JSON (.jsonl)',\n        'import': 'langchain.document_loaders.AirbyteJSONLoader',\n        'defaultFor': ['jsonl'],\n        'allowdTypes': ['jsonl'],\n    },\n    {\n        'loader': 'JSONLoader',\n        'name': 'JSON (.json)',\n        'import': 'langchain.document_loaders.JSONLoader',\n        'defaultFor': ['json'],\n        'allowdTypes': ['json'],\n    },\n    {\n        'loader': 'BSHTMLLoader',\n        'name': 'BeautifulSoup4 HTML (.html, .htm)',\n        'import': 'langchain.document_loaders.BSHTMLLoader',\n        'allowdTypes': ['html', 'htm'],\n    },\n    {\n        'loader': 'CSVLoader',\n        'name': 'CSV (.csv)',\n        'import': 'langchain.document_loaders.CSVLoader',\n        'defaultFor': ['csv'],\n        'allowdTypes': ['csv'],\n    },\n    {\n        'loader': 'CoNLLULoader',\n        'name': 'CoNLL-U (.conllu)',\n        'import': 'langchain.document_loaders.CoNLLULoader',\n        'defaultFor': ['conllu'],\n        'allowdTypes': ['conllu'],\n    },\n    {\n        'loader': 'EverNoteLoader',\n        'name': 'EverNote (.enex)',\n        'import': 'langchain.document_loaders.EverNoteLoader',\n        'defaultFor': ['enex'],\n        'allowdTypes': ['enex'],\n    },\n    {\n        'loader': 'FacebookChatLoader',\n        'name': 'Facebook Chat (.json)',\n        'import': 'langchain.document_loaders.FacebookChatLoader',\n        'allowdTypes': ['json'],\n    },\n    {\n        'loader': 'OutlookMessageLoader',\n        'name': 'Outlook Message (.msg)',\n        'import': 'langchain.document_loaders.OutlookMessageLoader',\n        'defaultFor': ['msg'],\n        'allowdTypes': ['msg'],\n    },\n    {\n        'loader': 'PyPDFLoader',\n        'name': 'PyPDF (.pdf)',\n        'import': 'langchain.document_loaders.PyPDFLoader',\n        'defaultFor': ['pdf'],\n        'allowdTypes': ['pdf'],\n    },\n    {\n        'loader': 'STRLoader',\n        'name': 'Subtitle (.str)',\n        'import': 'langchain.document_loaders.STRLoader',\n        'defaultFor': ['str'],\n        'allowdTypes': ['str'],\n    },\n    {\n        'loader': 'TextLoader',\n        'name': 'Text (.txt)',\n        'import': 'langchain.document_loaders.TextLoader',\n        'defaultFor': ['txt'],\n        'allowdTypes': ['txt'],\n    },\n    {\n        'loader': 'UnstructuredEmailLoader',\n        'name': 'Unstructured Email (.eml)',\n        'import': 'langchain.document_loaders.UnstructuredEmailLoader',\n        'defaultFor': ['eml'],\n        'allowdTypes': ['eml'],\n    },\n    {\n        'loader': 'UnstructuredHTMLLoader',\n        'name': 'Unstructured HTML (.html, .htm)',\n        'import': 'langchain.document_loaders.UnstructuredHTMLLoader',\n        'defaultFor': ['html', 'htm'],\n        'allowdTypes': ['html', 'htm'],\n    },\n    {\n        'loader': 'UnstructuredMarkdownLoader',\n        'name': 'Unstructured Markdown (.md)',\n        'import': 'langchain.document_loaders.UnstructuredMarkdownLoader',\n        'defaultFor': ['md'],\n        'allowdTypes': ['md'],\n    },\n    {\n        'loader': 'UnstructuredPowerPointLoader',\n        'name': 'Unstructured PowerPoint (.pptx)',\n        'import': 'langchain.document_loaders.UnstructuredPowerPointLoader',\n        'defaultFor': ['pptx'],\n        'allowdTypes': ['pptx'],\n    },\n    {\n        'loader': 'UnstructuredWordLoader',\n        'name': 'Unstructured Word (.docx)',\n        'import': 'langchain.document_loaders.UnstructuredWordLoader',\n        'defaultFor': ['docx'],\n        'allowdTypes': ['docx'],\n    },\n]\n"
  },
  {
    "path": "src/backend/bisheng/utils/docx_temp.py",
    "content": "import os\nimport tempfile\nfrom pathlib import Path\nfrom typing import IO, Dict, List, Any, Tuple\nfrom urllib.parse import unquote, urlparse\n\nimport pandas as pd\nimport requests\nfrom docx import Document\nfrom docx.shared import Inches\nfrom loguru import logger\n\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.utils.util import _is_valid_url\n\n\ndef find_lcs(str1, str2):\n    lstr1 = len(str1)\n    lstr2 = len(str2)\n    record = [[0 for i in range(lstr2 + 1)] for j in range(lstr1 + 1)]  # One more person\n    maxNum = 0\n    p = 0\n    for i in range(lstr1):\n        for j in range(lstr2):\n            if str1[i] == str2[j]:\n                record[i + 1][j + 1] = record[i][j] + 1\n                if record[i + 1][j + 1] > maxNum:\n                    maxNum = record[i + 1][j + 1]\n                    p = i + 1\n\n    return str1[p - maxNum: p], maxNum\n\n\nclass DocxTemplateRender(object):\n    def __init__(self, filepath: str = None, file_content: IO[bytes] = None):\n        self.filepath = filepath\n        self.file_content = file_content\n        if self.filepath:\n            self.doc = Document(self.filepath)\n        else:\n            self.doc = Document(self.file_content)\n\n    def _insert_image(self, paragraph, image_path: str, alt_text: str = \"Images\"):\n        \"\"\"\n        Insert image in paragraph\n\n        Args:\n            paragraph: WordParagraph object\n            image_path: Image file path\n            alt_text: Set Alt Text(s)\n        \"\"\"\n        logger.debug(f\"[Simple Illustration] Start Inserting Pictures: {image_path}\")\n        try:\n            if os.path.exists(image_path):\n                # Check file size\n                file_size = os.path.getsize(image_path)\n                logger.debug(f\"[Simple Illustration] Image file exists: {image_path}, size: {file_size}byte\")\n\n                # Insert an image with a maximum width of6Inch\n                run = paragraph.runs[0] if paragraph.runs else paragraph.add_run()\n                logger.debug(f\"[Simple Illustration] Ready atrunInsert a picture in therunQuantity: {len(paragraph.runs)}\")\n\n                run.add_picture(image_path, width=Inches(6))\n                logger.info(f\"[Simple Illustration] ✅ Successfully inserted image: {image_path}, size: {file_size}byte\")\n            else:\n                # Image file does not exist, use original path\n                logger.error(f\"[Simple Illustration] ❌ Image file does not exist: {image_path}\")\n                if paragraph.runs:\n                    paragraph.runs[0].text = image_path\n                else:\n                    paragraph.add_run(image_path)\n        except Exception as e:\n            # Inserting image failed, show originalURL\n            logger.error(f\"[Simple Illustration] ❌ Failed to insert image: {image_path}, Error type: {type(e).__name__}, Error-free: {str(e)}\")\n            if paragraph.runs:\n                paragraph.runs[0].text = image_path\n            else:\n                paragraph.add_run(image_path)\n\n    def _replace_placeholder_with_image(self, paragraph, placeholder, image_path, alt_text):\n        \"\"\"\n        Precisely replace the placeholder in the paragraph with the picture, correctly handle the spanrunPlaceholder for\n\n        Args:\n            paragraph: WordParagraph object\n            placeholder: Placeholder to replace\n            image_path: Image file path\n            alt_text: Image Alt Text\n        \"\"\"\n        logger.debug(f\"[Image Replacement] Start replacing placeholders: {placeholder} -> {image_path}\")\n\n        # Get the full text of the paragraph\n        paragraph_text = paragraph.text\n\n        # Find the location of the placeholder\n        placeholder_start = paragraph_text.find(placeholder)\n        if placeholder_start == -1:\n            logger.warning(f\"[Image Replacement] Placeholder not found: {placeholder}\")\n            return  # Placeholder does not exist\n\n        placeholder_end = placeholder_start + len(placeholder)\n\n        # Anchor placeholder inrunsPosition in\n        current_pos = 0\n        start_run_index = -1\n        start_run_pos = 0\n        end_run_index = -1\n        end_run_pos = 0\n\n        for i, run in enumerate(paragraph.runs):\n            run_len = len(run.text)\n\n            # Find the placeholder start position\n            if start_run_index == -1 and current_pos + run_len > placeholder_start:\n                start_run_index = i\n                start_run_pos = placeholder_start - current_pos\n\n            # Find the placeholder end position\n            if current_pos + run_len >= placeholder_end:\n                end_run_index = i\n                end_run_pos = placeholder_end - current_pos\n                break\n\n            current_pos += run_len\n\n        # Clear placeholder text\n        if start_run_index == end_run_index:\n            # Placeholder is the samerunand within\n            run = paragraph.runs[start_run_index]\n            run.text = run.text[:start_run_pos] + run.text[end_run_pos:]\n        else:\n            # Placeholders span multipleruns\n            # Clear startrunSections in\n            start_run = paragraph.runs[start_run_index]\n            start_run.text = start_run.text[:start_run_pos]\n\n            # Clear EndrunSections in\n            end_run = paragraph.runs[end_run_index]\n            end_run.text = end_run.text[end_run_pos:]\n\n            # Clear middleruns\n            for i in range(end_run_index - 1, start_run_index, -1):\n                paragraph.runs[i].text = \"\"\n\n        # Insert image at placeholder position\n        # Find a suitable insertion location (first non-empty after cleaningrunafterwards\n        insert_run = None\n        for i in range(start_run_index, len(paragraph.runs)):\n            if paragraph.runs[i].text or i == start_run_index:\n                insert_run = paragraph.runs[i]\n                break\n\n        if insert_run is not None:\n            # In therunInsert image after\n            logger.debug(f\"[Image Replacement] InsiderunPosition Insert Picture: {image_path}\")\n            self._insert_image_at_run(insert_run, image_path, alt_text)\n            logger.info(f\"[Image Replacement] Placeholder replacement complete: {placeholder} -> {image_path}\")\n        else:\n            # If a suitable location is not found, use the original method\n            logger.warning(f\"[Image Replacement] No Fit Foundrunlocation, using alternate methods: {image_path}\")\n            self._insert_image(paragraph, image_path, alt_text)\n\n    def _insert_image_at_run(self, run, image_path, alt_text):\n        \"\"\"\n        In DesignationrunPosition Insert Picture\n\n        Args:\n            run: Word runObjects\n            image_path: Image Path\n            alt_text: Image Alt Text\n        \"\"\"\n        try:\n            from docx.shared import Inches\n\n            # Checks to see if file exists.\n            if not os.path.exists(image_path):\n                logger.warning(f\"[Image Rendering] Image file does not exist, use original path: {image_path}\")\n                run.text = image_path\n                return\n\n            # Check file size and format\n            file_size = os.path.getsize(image_path)\n            file_ext = os.path.splitext(image_path)[1].lower()\n            logger.debug(f\"[Image Rendering] Ready to insert image: path={image_path}, size={file_size}byte, ext={file_ext}\")\n\n            # Directly in the currentrunInsert image in\n            run.add_picture(image_path, width=Inches(4))  # Default Width4Inch\n            # Emptyruntext in to avoid displaying excess text\n            run.text = \"\"\n            logger.info(f\"[Image Rendering] InsiderunLocation Insert Picture Successful: {image_path}, size={file_size}byte\")\n        except Exception as e:\n            logger.error(f\"[Image Rendering] runLocation Insert Picture Failed: {image_path}, Error-free: {e}\")\n            logger.debug(f\"[Image Rendering] Error Details of error: {type(e).__name__}: {str(e)}\")\n            try:\n                # Use original insertion method as backup\n                logger.info(f\"[Image Rendering] Try alternate insertion methods: {image_path}\")\n                # DapatkanrunParent Paragraph Object of\n                paragraph = run._element.getparent()\n                # Convert Topython-docxParagraph object\n                from docx.text.paragraph import Paragraph\n\n                para_obj = Paragraph(paragraph, run.part)\n                self._insert_image(para_obj, image_path, alt_text)\n                logger.info(f\"[Image Rendering] Alternate method inserted successfully: {image_path}\")\n            except Exception as backup_e:\n                logger.error(f\"[Image Rendering] Alternate insertion methods also failed: {image_path}, Error-free: {backup_e}\")\n                logger.error(f\"[Image Rendering] Alternate Method Detail Error: {type(backup_e).__name__}: {str(backup_e)}\")\n                # If all methods fail, use the original path\n                run.text = image_path\n                logger.warning(f\"[Image Rendering] All insert methods failed, use original path text: {image_path}\")\n\n    def _replace_placeholder_in_structured_paragraph(self, paragraph, placeholder: str, table_data: List[List[str]]):\n        \"\"\"\n        Simplified table replacement: insert the table directly at the placeholder without adding any structural tags\n        \"\"\"\n        # Clear placeholder text\n        self._clear_placeholder_from_paragraph(paragraph, placeholder)\n\n        # Insert table directly at paragraph position\n        self._insert_table(paragraph, table_data)\n\n        logger.info(f\"Form Replacement Complete of {len(table_data)} Row\")\n\n    def _clear_placeholder_from_paragraph(self, paragraph, placeholder):\n        \"\"\"\n        Precisely clear placeholders from paragraphs to handle spanningrunCONDITION....&#x0D;\n\n        Args:\n            paragraph: WordParagraph object\n            placeholder: Placeholders to be cleared\n        \"\"\"\n        # Get the full text of the paragraph\n        paragraph_text = paragraph.text\n\n        # Find the location of the placeholder\n        placeholder_start = paragraph_text.find(placeholder)\n        if placeholder_start == -1:\n            return  # Placeholder does not exist\n\n        placeholder_end = placeholder_start + len(placeholder)\n\n        # Anchor placeholder inrunsPosition in\n        current_pos = 0\n        start_run_index = -1\n        start_run_pos = 0\n        end_run_index = -1\n        end_run_pos = 0\n\n        for i, run in enumerate(paragraph.runs):\n            run_len = len(run.text)\n\n            # Find the placeholder start position\n            if start_run_index == -1 and current_pos + run_len > placeholder_start:\n                start_run_index = i\n                start_run_pos = placeholder_start - current_pos\n\n            # Find the placeholder end position\n            if current_pos + run_len >= placeholder_end:\n                end_run_index = i\n                end_run_pos = placeholder_end - current_pos\n                break\n\n            current_pos += run_len\n\n        # Clear placeholder text\n        if start_run_index == end_run_index:\n            # Placeholder is the samerunand within\n            run = paragraph.runs[start_run_index]\n            run.text = run.text[:start_run_pos] + run.text[end_run_pos:]\n        else:\n            # Placeholders span multipleruns\n            # Clear startrunSections in\n            start_run = paragraph.runs[start_run_index]\n            start_run.text = start_run.text[:start_run_pos]\n\n            # Clear EndrunSections in\n            end_run = paragraph.runs[end_run_index]\n            end_run.text = end_run.text[end_run_pos:]\n\n            # Clear middleruns\n            for i in range(end_run_index - 1, start_run_index, -1):\n                paragraph.runs[i].text = \"\"\n\n    def _process_resource_placeholders(self, doc, placeholder_map):\n        \"\"\"\n        Work with hybrid placeholders in paragraphs in positional order\n\n        Args:\n            doc: WordDocument object  \n            placeholder_map: Placeholder Mapping Dictionary\n        \"\"\"\n        # Work with placeholders in all paragraphs\n        paragraphs_to_process = list(doc.paragraphs)  # Create a copy as we may modify the paragraph structure\n\n        for i, p in enumerate(paragraphs_to_process):\n            paragraph_text = p.text\n            if not paragraph_text:\n                continue\n\n            # Find all placeholders and their positions in the paragraph\n            placeholders_with_positions = []\n            for placeholder, resource_info in placeholder_map.items():\n                pos = paragraph_text.find(placeholder)\n                if pos != -1:\n                    placeholders_with_positions.append({\n                        'placeholder': placeholder,\n                        'resource_info': resource_info,\n                        'position': pos,\n                        'end_position': pos + len(placeholder)\n                    })\n\n            if not placeholders_with_positions:\n                continue\n\n            # Sort by location from to post-processing\n            placeholders_with_positions.sort(key=lambda x: x['position'])\n\n            # Split paragraph into text segments and placeholder segments\n            self._process_mixed_content_paragraph(doc, p, placeholders_with_positions, paragraph_text)\n\n        # Working with Placeholders in Table Cells\n        for table in doc.tables:\n            for i, row in enumerate(table.rows):\n                for j, cell in enumerate(row.cells):\n                    for one in cell.paragraphs:\n                        cell_text = one.text\n                        if not cell_text:\n                            continue\n\n                        # Check for placeholders in cells\n                        for placeholder, resource_info in placeholder_map.items():\n                            if placeholder in cell_text:\n                                if resource_info[\"type\"] == \"image\":\n                                    # Insert Actual Picture in Table Cell\n                                    image_path = resource_info.get(\"local_path\") or resource_info.get(\"path\", \"\")\n                                    if image_path and os.path.exists(image_path):\n                                        try:\n                                            # Insert a picture in a cell (this will empty the cell and insert the picture)\n                                            self._insert_image_in_table_cell(cell, image_path)\n                                            logger.info(f\"✅ Picture successfully inserted in table cell: {image_path}\")\n                                            # Marker placeholder processed, no need to update text\n                                            cell_text = \"\"\n                                        except Exception as e:\n                                            logger.error(f\"❌ Table Cell Insert Picture Failed: {str(e)}\")\n                                            # Show file name on failure\n                                            cell_text = cell_text.replace(placeholder, os.path.basename(image_path))\n                                    else:\n                                        # Image file does not exist, display path\n                                        cell_text = cell_text.replace(placeholder,\n                                                                      resource_info.get(\"path\", placeholder))\n                                elif resource_info[\"type\"] == \"excel\":\n                                    cell_text = cell_text.replace(placeholder, \"[ExcelTable Filter]\")\n                                elif resource_info[\"type\"] == \"csv\":\n                                    cell_text = cell_text.replace(placeholder, \"[CSVTable Filter]\")\n                                elif resource_info[\"type\"] == \"markdown_table\":\n                                    cell_text = cell_text.replace(placeholder, \"[MarkdownTable Filter]\")\n                                logger.info(f\"Process table cell placeholders: {placeholder}\")\n\n                        # Update cell text\n                        if cell_text != one.text:\n                            if one.runs:\n                                one.runs[0].text = cell_text\n                                for r_index in range(1, len(one.runs)):\n                                    one.runs[r_index].text = \"\"\n                            else:\n                                one.add_run(cell_text)\n\n    def _process_mixed_content_paragraph(self, doc, paragraph, placeholders_with_positions, original_text):\n        \"\"\"\n        Working with paragraphs with mixed content - Insert images and tables inline\n        \n        Args:\n            doc: WordDocument object\n            paragraph: Original paragraph\n            placeholders_with_positions: List of placeholder information by location\n            original_text: Original paragraph text\n        \"\"\"\n        # Extract style information from the original paragraph for subsequent paragraph creation\n        original_style_info = self._extract_paragraph_style_info(paragraph)\n\n        # Split the text into fragments, keeping the original order\n        segments = []\n        last_end = 0\n\n        for item in placeholders_with_positions:\n            # Add text before placeholder\n            if item['position'] > last_end:\n                text_before = original_text[last_end:item['position']]\n                if text_before:  # Keep all text, including whitespaces\n                    segments.append({\n                        'type': 'text',\n                        'content': text_before\n                    })\n\n            # Add the resource corresponding to the placeholder\n            segments.append({\n                'type': 'resource',\n                'placeholder': item['placeholder'],\n                'resource_info': item['resource_info']\n            })\n\n            last_end = item['end_position']\n\n        # Add last remaining text\n        if last_end < len(original_text):\n            text_after = original_text[last_end:]\n            if text_after:\n                segments.append({\n                    'type': 'text',\n                    'content': text_after\n                })\n\n        # Clear original paragraph\n        paragraph.clear()\n\n        # Redesign: segmentation to keep document structure consistent\n        current_paragraph = paragraph\n\n        i = 0\n        while i < len(segments):\n            segment = segments[i]\n\n            if segment['type'] == 'text':\n                # Add text content directly without any cleanup\n                current_paragraph.add_run(segment['content'])\n\n            elif segment['type'] == 'resource':\n                resource_info = segment['resource_info']\n\n                if resource_info['type'] == 'image':\n                    # Images can be really inlined in paragraphs\n                    self._insert_inline_image(current_paragraph, resource_info['path'],\n                                              resource_info.get('alt_text', ''))\n\n                elif resource_info['type'] in ['excel', 'csv', 'markdown_table']:\n                    # Table Inline Processing: Insert the table at its current position, then create a new paragraph for subsequent content\n                    if resource_info['type'] == 'markdown_table':\n                        table_data, alignments = self._markdown_table_to_data(resource_info[\"content\"])\n                    else:\n                        table_data = resource_info.get('table_data', [[\"Table data parsing failed\"]])\n                        alignments = None\n\n                    # Insert table immediately after current paragraph\n                    table_element = self._create_table_element(table_data)\n\n                    # Get the position of the current paragraph in the document\n                    paragraph_element = current_paragraph._element\n                    paragraph_parent = paragraph_element.getparent()\n                    paragraph_index = list(paragraph_parent).index(paragraph_element)\n\n                    # Insert table after current paragraph\n                    paragraph_parent.insert(paragraph_index + 1, table_element)\n\n                    # Create a new paragraph for the subsequent text and update itcurrent_paragraph\n                    if i + 1 < len(segments):\n                        next_paragraph = self._create_new_paragraph_after_table(paragraph_parent, paragraph_index + 1,\n                                                                                original_style_info)\n                        current_paragraph = next_paragraph\n\n            i += 1\n\n    def _insert_table_inline(self, current_paragraph, table_data, segments, current_index):\n        \"\"\"\n        Insert tables inline for text continuity\n        \n        Args:\n            current_paragraph: Current paragraph\n            table_data: Form Data\n            segments: All phrases\n            current_index: Current Snippet Index\n            \n        Returns:\n            int: Number of subsequent text fragments skipped\n        \"\"\"\n        # 1. Insert table paragraph after current paragraph\n        table_paragraph = self._create_new_paragraph_after(current_paragraph)\n        self._insert_table(table_paragraph, table_data)\n\n        # 2. Check if there is a subsequent text fragment and create a new one if there is one\n        remaining_segments = segments[current_index + 1:]\n        text_segments = [seg for seg in remaining_segments if seg['type'] == 'text']\n\n        if text_segments:\n            # Create a new paragraph for the subsequent text\n            next_text_paragraph = self._create_new_paragraph_after(table_paragraph)\n\n            # Add all subsequent text fragments to the new paragraph\n            for j, seg in enumerate(text_segments):\n                next_text_paragraph.add_run(seg['content'])\n\n            # Returns the number of text fragments skipped (so that the main loop no longer processes these fragments)\n            skipped_count = len(text_segments)\n            return skipped_count\n        else:\n            return 0\n\n    def _create_new_paragraph_after(self, paragraph):\n        \"\"\"\n        Create a new paragraph after the specified paragraph\n        \n        Args:\n            paragraph: Topic Paragraph reference\n            \n        Returns:\n            Newly created paragraph object\n        \"\"\"\n        from docx.oxml import parse_xml\n        from docx.text.paragraph import Paragraph\n\n        # Create a new paragraph element\n        new_p_xml = '<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"></w:p>'\n        new_p_element = parse_xml(new_p_xml)\n\n        # Insert a new paragraph after the current paragraph\n        paragraph._element.getparent().insert(\n            list(paragraph._element.getparent()).index(paragraph._element) + 1,\n            new_p_element\n        )\n\n        # Returns the wrapped paragraph object\n        return Paragraph(new_p_element, paragraph._parent)\n\n    def _insert_inline_image(self, paragraph, image_path: str, alt_text: str = \"\"):\n        \"\"\"\n        Insert an image inline in the paragraph, and the image will be in the correct position in the text stream\n        \"\"\"\n        try:\n            # Use an existing image insertion method, but make sure it's inline\n            run = paragraph.add_run()\n            run.add_picture(image_path, width=Inches(4.0))\n            logger.info(f\"[Inline Image] ✅ Successfully inserted image inline: {image_path}\")\n        except Exception as e:\n            logger.error(f\"[Inline Image] ❌ Failed to insert image: {str(e)}\")\n            # Insert original image path\n            paragraph.add_run(image_path)\n\n    def _insert_image_in_table_cell(self, cell, image_path: str):\n        \"\"\"\n        Insert a picture in a table cell\n        \n        Args:\n            cell: Table Cell Object\n            image_path: Image file path\n        \"\"\"\n        try:\n            from docx.shared import Inches\n            import os\n\n            if not os.path.exists(image_path):\n                logger.warning(f\"[Table Cell Picture] Image file does not exist: {image_path}\")\n                return\n\n            # Empty cell contents\n            for paragraph in cell.paragraphs:\n                paragraph.clear()\n\n            # Insert image in first paragraph\n            first_paragraph = cell.paragraphs[0] if cell.paragraphs else cell.add_paragraph()\n            run = first_paragraph.add_run()\n\n            # Insert an image and set the appropriate size\n            run.add_picture(image_path, width=Inches(2.0))  # Use smaller dimensions in table cells\n\n            logger.info(f\"[Table Cell Picture] ✅ Successfully inserted image: {image_path}\")\n\n        except Exception as e:\n            logger.error(f\"[Table Cell Picture] ❌ Failed to insert: {str(e)}\")\n            raise e\n\n    def _csv_to_table(self, csv_path: str) -> List[List[str]]:\n        \"\"\"\n        will beCSVConvert file to table data\n\n        Args:\n            csv_path: CSVFilePath\n\n        Returns:\n            List[List[str]]: Form Data\n        \"\"\"\n        try:\n            # read outCSVfiles, automatically detecting encodings and delimiters\n            import csv\n            import chardet\n\n            # Test file code\n            with open(csv_path, \"rb\") as f:\n                raw_data = f.read()\n                encoding_result = chardet.detect(raw_data)\n                encoding = encoding_result[\"encoding\"] if encoding_result[\"encoding\"] else \"utf-8\"\n\n            table_data = []\n\n            # Try a different delimiter\n            delimiters = [\",\", \";\", \"\\t\", \"|\"]\n\n            for delimiter in delimiters:\n                try:\n                    with open(csv_path, \"r\", encoding=encoding, newline=\"\") as f:\n                        # Read a small part first to detect the delimiter\n                        sample = f.read(1024)\n                        f.seek(0)\n\n                        sniffer = csv.Sniffer()\n                        try:\n                            detected_delimiter = sniffer.sniff(sample).delimiter\n                        except:\n                            detected_delimiter = delimiter\n\n                        reader = csv.reader(f, delimiter=detected_delimiter)\n                        table_data = [row for row in reader]\n\n                        # Delimiter is considered correct if data is read successfully and there are multiple columns\n                        if table_data and len(table_data[0]) > 1:\n                            break\n\n                except Exception as e:\n                    logger.debug(f\"Try Delimiter '{delimiter}' Kalah: {str(e)}\")\n                    continue\n\n            if not table_data:\n                # If all delimiters fail, try a simple line-by-line read\n                with open(csv_path, \"r\", encoding=encoding) as f:\n                    lines = f.readlines()\n                    table_data = [[line.strip()] for line in lines if line.strip()]\n\n            # Cleanup data - Fully preserve the original table structure, including empty rows\n            cleaned_data = []\n            for row in table_data:\n                cleaned_row = [str(cell).strip() if cell is not None else \"\" for cell in row]\n                # Removes blank row filtering, leaving the original table structure intact\n                cleaned_data.append(cleaned_row)\n\n            logger.info(f\"Successfully parsedCSVDoc.: {csv_path}, # of Lines: {len(cleaned_data)}\")\n            return cleaned_data\n\n        except Exception as e:\n            logger.error(f\"analyzingCSVFile failed: {csv_path}, Error-free: {str(e)}\")\n            return [[\"CSVFile parsing failed\", str(e)]]\n\n    def _excel_to_table(self, excel_path: str) -> List[List[str]]:\n        \"\"\"\n        will beExcelConvert files to tabular data, preserving data formats and types\n\n        Args:\n            excel_path: ExcelFilePath\n\n        Returns:\n            List[List[str]]: Form Data\n        \"\"\"\n\n        try:\n            # read outExcelfiles, keeping more of the original formatting\n            df = pd.read_excel(excel_path, sheet_name=0, dtype=str, keep_default_na=False)\n\n            # Limit table size to avoid overly large table effectsWordDocumentation\n            max_rows = 500  # Max row count\n            max_cols = 20  # Maximum Columns\n\n            if len(df) > max_rows:\n                logger.warning(f\"ExcelToo many file lines({len(df)}), before interception{max_rows}Parade\")\n                df = df.head(max_rows)\n\n            if len(df.columns) > max_cols:\n                logger.warning(f\"ExcelToo many file columns({len(df.columns)}), before interception{max_cols}column\")\n                df = df.iloc[:, :max_cols]\n\n            # Convert to list format\n            table_data = []\n\n            # Process header, clean up column names\n            headers = []\n            for col in df.columns:\n                col_str = str(col).strip()\n                # <g id=\"Bold\">Medical Treatment:</g>ExcelAutomatically generated column names (e.g.Unnamed: 0）\n                if col_str.startswith(\"Unnamed:\"):\n                    col_str = \"\"  # Empty column name\n                headers.append(col_str)\n            table_data.append(headers)\n\n            # Add data rows, smart formatting\n            for _, row in df.iterrows():\n                row_data = []\n                for cell in row:\n                    cell_str = str(cell).strip()\n\n                    # Handle Empty Values\n                    if cell_str.lower() in [\"nan\", \"none\", \"null\", \"\"]:\n                        cell_str = \"\"\n\n                    # Handle long numbers for readability\n                    elif cell_str.replace(\".\", \"\").replace(\"-\", \"\").isdigit():\n                        try:\n                            # Try formatting numbers\n                            if \".\" in cell_str:\n                                # Float, keep reasonable decimal places\n                                num = float(cell_str)\n                                if abs(num) >= 1000:\n                                    cell_str = f\"{num:,.2f}\"  # Range Slider Thousand Separator\n                                else:\n                                    cell_str = f\"{num:.2f}\".rstrip(\"0\").rstrip(\".\")\n                            else:\n                                # integer, adding thousands separator\n                                num = int(cell_str)\n                                if abs(num) >= 1000:\n                                    cell_str = f\"{num:,}\"\n                        except ValueError:\n                            pass  # Keep original string\n\n                    # Limit cell content length to avoid too long content affecting layout\n                    if len(cell_str) > 100:\n                        cell_str = cell_str[:97] + \"...\"\n\n                    row_data.append(cell_str)\n\n                table_data.append(row_data)\n\n            # Make sure all rows have the same number of columns\n            if table_data:\n                max_cols = max(len(row) for row in table_data)\n                for row in table_data:\n                    while len(row) < max_cols:\n                        row.append(\"\")\n\n            logger.info(f\"Successfully parsedExcelDoc.: {excel_path}, size: {len(table_data)}Parade x {max_cols}column\")\n            return table_data\n\n        except Exception as e:\n            logger.error(f\"analyzingExcelFile failed: {excel_path}, Error-free: {str(e)}\")\n            return [[\"ExcelFile parsing failed\", str(e)]]\n\n    def _markdown_table_to_data(self, markdown_table: str) -> Tuple[List[List[str]], List[str]]:\n        \"\"\"\n        will beMarkdownTable to table data and parse alignment information\n\n        Args:\n            markdown_table: MarkdownTable Text\n\n        Returns:\n            tuple: (Form Data, Alignment Info List)\n        \"\"\"\n        try:\n            lines = [line.strip() for line in markdown_table.strip().split(\"\\n\") if line.strip()]\n\n            if len(lines) < 2:\n                logger.warning(\"MarkdownTable format is incomplete, at least table header and delimiter lines are required\")\n                return [[\"Format salah.\", \"The form is incomplete.\"]], [\"left\"]\n\n            table_data = []\n            alignments = []\n            separator_found = False\n\n            for i, line in enumerate(lines):\n                # Check if it is a delimiter line\n                if self._is_separator_line(line):\n                    alignments = self._parse_alignments(line)\n                    separator_found = True\n                    continue\n\n                # Parse Data Rows\n                cells = self._parse_table_row(line)\n                if cells:\n                    # Clean cell contents\n                    cleaned_cells = []\n                    for cell in cells:\n                        cleaned_cell = self._clean_cell_content(cell)\n                        cleaned_cells.append(cleaned_cell)\n\n                    table_data.append(cleaned_cells)\n\n            # Validate table structure\n            if not separator_found:\n                logger.warning(\"MarkdownTable is missing a delimiter row, use default left alignment\")\n                alignments = [\"left\"] * (len(table_data[0]) if table_data else 1)\n\n            # Make sure all rows have the same number of columns\n            if table_data:\n                max_cols = max(len(row) for row in table_data)\n                for row in table_data:\n                    while len(row) < max_cols:\n                        row.append(\"\")\n\n                # Make sure the number of aligned messages matches the number of columns\n                while len(alignments) < max_cols:\n                    alignments.append(\"left\")\n                alignments = alignments[:max_cols]\n\n            logger.info(f\"Successfully parsedMarkdownTable, Size: {len(table_data)}Parade x {len(alignments)}column\")\n            logger.info(f\"Column alignment: {alignments}\")\n            return table_data, alignments\n\n        except Exception as e:\n            logger.error(f\"analyzingMarkdownTable failed: {str(e)}\")\n            return [[\"MarkdownTable parsing failed\", str(e)]], [\"left\"]\n\n    def _is_separator_line(self, line: str) -> bool:\n        \"\"\"\n        Determine if yesMarkdownTable Separator Row\n\n        Args:\n            line: Table Row Content\n\n        Returns:\n            bool: Is Separator Row\n        \"\"\"\n        # Remove leading and trailing|Symbols\n        content = line.strip().strip(\"|\").strip()\n        if not content:\n            return False\n\n        # The delimiter line should mainly contain-And:characters. \n        cells = [cell.strip() for cell in content.split(\"|\")]\n\n        for cell in cells:\n            if not cell:\n                continue\n            # Each cell should be predominantly composed of-And:Composition\n            clean_cell = cell.replace(\"-\", \"\").replace(\":\", \"\").strip()\n            if clean_cell:  # Not a delimiter line if there are other characters\n                return False\n\n        return True\n\n    def _parse_alignments(self, separator_line: str) -> List[str]:\n        \"\"\"\n        Parse column alignment from delimiter rows\n\n        Args:\n            separator_line: Separator Row\n\n        Returns:\n            List[str]: Alignment List (\"left\", \"center\", \"right\")\n        \"\"\"\n        alignments = []\n        content = separator_line.strip().strip(\"|\").strip()\n        cells = [cell.strip() for cell in content.split(\"|\")]\n\n        for cell in cells:\n            if not cell:\n                alignments.append(\"left\")\n                continue\n\n            # Determine alignment\n            if cell.startswith(\":\") and cell.endswith(\":\"):\n                alignments.append(\"center\")  # :---:\n            elif cell.endswith(\":\"):\n                alignments.append(\"right\")  # ---:\n            else:\n                alignments.append(\"left\")  # --- OR :---\n\n        return alignments\n\n    def _parse_table_row(self, line: str) -> List[str]:\n        \"\"\"\n        Parse table rows, handle escapes and special characters\n\n        Args:\n            line: Table Row Content\n\n        Returns:\n            List[str]: Cell Contents List\n        \"\"\"\n        # Remove leading and trailing|Symbols\n        content = line.strip()\n        if content.startswith(\"|\"):\n            content = content[1:]\n        if content.endswith(\"|\"):\n            content = content[:-1]\n\n        # Split cells, but handle escapes|\n        cells = []\n        current_cell = \"\"\n        escaped = False\n\n        for char in content:\n            if escaped:\n                current_cell += char\n                escaped = False\n            elif char == \"\\\\\":\n                escaped = True\n                current_cell += char\n            elif char == \"|\":\n                cells.append(current_cell.strip())\n                current_cell = \"\"\n            else:\n                current_cell += char\n\n        # Add last cell\n        if current_cell or cells:  # Process Empty Rows\n            cells.append(current_cell.strip())\n\n        return cells\n\n    def _clean_cell_content(self, cell: str) -> str:\n        \"\"\"\n        Clean up cell contents, processMarkdownFormat\n\n        Args:\n            cell: Raw Cell Contents\n\n        Returns:\n            str: Post-Cleanup Content\n        \"\"\"\n        if not cell:\n            return \"\"\n\n        # Remove extra spaces\n        cleaned = cell.strip()\n\n        # <g id=\"Bold\">Medical Treatment:</g>MarkdownFormatting tags (simplified processing)\n        # Remove bold mark\n        cleaned = cleaned.replace(\"**\", \"\")\n        # Remove italic mark\n        cleaned = cleaned.replace(\"*\", \"\")\n        # Remove code marker\n        cleaned = cleaned.replace(\"`\", \"\")\n\n        # Working with link formats [text](url) -> text\n        import re\n\n        cleaned = re.sub(r\"\\[([^\\]]+)\\]\\([^\\)]+\\)\", r\"\\1\", cleaned)\n\n        # Limit length\n        if len(cleaned) > 100:\n            cleaned = cleaned[:97] + \"...\"\n\n        return cleaned\n\n    def _insert_markdown_table(self, paragraph, table_data: List[List[str]], alignments: List[str]):\n        \"\"\"\n        Insert ExclusivelyMarkdownTable with support for alignment information\n\n        Args:\n            paragraph: WordParagraph object\n            table_data: Form Data\n            alignments: Alignment Info List\n        \"\"\"\n        try:\n            if not table_data:\n                paragraph.add_run(\"Table data is empty\")\n                return\n\n            rows = len(table_data)\n            cols = len(alignments)\n\n            # Simplify processing: insert a table directly at the paragraph position\n            paragraph_element = paragraph._element\n            paragraph_parent = paragraph_element.getparent()\n\n            # Create Table\n            table = self.doc.add_table(rows=rows, cols=cols)\n            table_element = table._tbl\n\n            # Insert table directly after paragraph\n            paragraph_index = list(paragraph_parent).index(paragraph_element)\n            paragraph_parent.insert(paragraph_index + 1, table_element)\n\n            # PengaturanMarkdownTable-specific styles\n            try:\n                table.style = \"Light List - Accent 1\"  # Refreshing list style\n            except Exception:\n                try:\n                    table.style = \"Table Grid\"  # Alternative style\n                except Exception:\n                    pass\n\n            # Populate table data and set alignment\n            for i, row_data in enumerate(table_data):\n                for j, cell_data in enumerate(row_data):\n                    if j < cols:\n                        cell = table.cell(i, j)\n                        cell.text = str(cell_data)\n\n                        # accordingMarkdownAlignment Info Set Cell Alignment\n                        cell_paragraphs = cell.paragraphs\n                        if cell_paragraphs and j < len(alignments):\n                            alignment = alignments[j]\n                            if alignment == \"center\":\n                                cell_paragraphs[0].alignment = 1  # Center\n                            elif alignment == \"right\":\n                                cell_paragraphs[0].alignment = 2  # Halign Right\n                            else:  # left\n                                cell_paragraphs[0].alignment = 0  # Align left\n\n            # MarkdownTable style: The first row is usually the header\n            if rows > 0:\n                for cell in table.rows[0].cells:\n                    # Header Style\n                    for paragraph in cell.paragraphs:\n                        for run in paragraph.runs:\n                            run.bold = True\n\n                    # Set header background color (light gray, better forMarkdownSTYLE #\n                    try:\n                        from docx.oxml import parse_xml\n\n                        shading_elm = parse_xml(\n                            r'<w:shd {} w:fill=\"F2F2F2\"/>'.format(\n                                'xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"'\n                            )\n                        )\n                        cell._tc.get_or_add_tcPr().append(shading_elm)\n                    except Exception:\n                        pass\n\n            # Set Table Layout\n            try:\n                table.autofit = True\n                from docx.shared import Inches\n\n                table.width = Inches(6.5)\n            except Exception:\n                pass\n\n            # Set a more compact line height (MarkdownSTYLE #\n            try:\n                for row in table.rows:\n                    row.height = Inches(0.25)  # .ExcelForms are more compact\n                    for cell in row.cells:\n                        # Smaller margin\n                        cell.margin_left = Inches(0.03)\n                        cell.margin_right = Inches(0.03)\n                        cell.margin_top = Inches(0.01)\n                        cell.margin_bottom = Inches(0.01)\n            except Exception:\n                pass\n\n            logger.info(f\"Succesfully insertedMarkdownTable, Size: {rows}x{cols}Align: {alignments}\")\n\n        except Exception as e:\n            paragraph.add_run(f\"Table insertion failed: {str(e)}\")\n            logger.error(f\"InsertMarkdownTable failed: {str(e)}\")\n\n    def _insert_table_at_position(self, paragraph, table_data: List[List[str]]):\n        \"\"\"\n        Insert a table at the current position of the paragraph, and the table will appear before the paragraph\n\n        Args:\n            paragraph: WordParagraph object\n            table_data: Form Data\n        \"\"\"\n        try:\n            if not table_data:\n                paragraph.add_run(\"[Table data is empty]\")\n                return\n\n            rows = len(table_data)\n            cols = max(len(row) for row in table_data) if table_data else 1\n\n            # Get the position of the paragraph in the document\n            paragraph_element = paragraph._element\n            paragraph_parent = paragraph_element.getparent()\n            paragraph_index = list(paragraph_parent).index(paragraph_element)\n\n            # Create Table\n            table = self.doc.add_table(rows=rows, cols=cols)\n            table_element = table._tbl\n\n            # Insert table before paragraph (so the table appears in the current content position)\n            paragraph_parent.insert(paragraph_index, table_element)\n\n            # Fill in the table data and style it\n            self._fill_and_style_table(table, table_data)\n\n        except Exception as e:\n            paragraph.add_run(f\"[Table insertion failed: {str(e)}]\")\n            logger.error(f\"Failed to insert table: {str(e)}\")\n\n    def _insert_table(self, paragraph, table_data: List[List[str]]):\n        \"\"\"\n        Insert high quality table after paragraph\n\n        Args:\n            paragraph: WordParagraph object\n            table_data: Form Data\n        \"\"\"\n        try:\n            if not table_data:\n                paragraph.add_run(\"[Table data is empty]\")\n                return\n\n            # Add table after paragraph\n            rows = len(table_data)\n            cols = max(len(row) for row in table_data) if table_data else 1\n\n            # Simplify processing: insert a table directly at the paragraph position\n            paragraph_element = paragraph._element\n            paragraph_parent = paragraph_element.getparent()\n\n            # Create Table\n            table = self.doc.add_table(rows=rows, cols=cols)\n            table_element = table._tbl\n\n            # Insert table directly after paragraph\n            paragraph_index = list(paragraph_parent).index(paragraph_element)\n            paragraph_parent.insert(paragraph_index + 1, table_element)\n\n            # Fill in the table data and style it\n            self._fill_and_style_table(table, table_data)\n\n        except Exception as e:\n            paragraph.add_run(f\"[Table insertion failed: {str(e)}]\")\n            logger.error(f\"Failed to insert table: {str(e)}\")\n\n    def _fill_and_style_table(self, table, table_data: List[List[str]]):\n        \"\"\"\n        Fill in the table data and style it\n        \n        Args:\n            table: WordTable Object\n            table_data: Form Data\n        \"\"\"\n        rows = len(table_data)\n        # Calculate the maximum number of columns, taking into account possible empty rows\n        cols = max((len(row) for row in table_data if row), default=1)\n\n        # Set a more professional table style\n        try:\n            # Try a better built-in style\n            table.style = \"Light Shading - Accent 1\"  # Light Shadow Style\n        except Exception:\n            try:\n                table.style = \"Table Grid\"  # Alternative style\n            except Exception:\n                pass  # If the style does not exist, use the default style\n\n        # Populate table data\n        for i, row_data in enumerate(table_data):\n            # Ensure that empty lines can also be handled correctly\n            current_row = row_data if row_data else []\n\n            # Populate all columns of the row\n            for j in range(cols):\n                cell = table.cell(i, j)\n                if j < len(current_row):\n                    cell_data = current_row[j]\n                else:\n                    cell_data = \"\"  # Empty Cells\n\n                cell.text = str(cell_data)\n\n                # Set cell alignment\n                cell_paragraphs = cell.paragraphs\n                if cell_paragraphs:\n                    # Numbers aligned right, text aligned left\n                    cell_text = str(cell_data).strip()\n                    if self._is_number(cell_text):\n                        cell_paragraphs[0].alignment = 2  # Halign Right\n                    else:\n                        cell_paragraphs[0].alignment = 0  # Align left\n\n        # Set header style (first line)\n        if rows > 0:\n            for cell in table.rows[0].cells:\n                # Align Header Centered\n                for paragraph in cell.paragraphs:\n                    paragraph.alignment = 1  # Center Alignment\n                    for run in paragraph.runs:\n                        run.bold = True\n\n                # Try setting the header background color (if supported)\n                try:\n                    from docx.oxml import parse_xml\n\n                    shading_elm = parse_xml(\n                        r'<w:shd {} w:fill=\"D9E2F3\"/>'.format(\n                            'xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"'\n                        )\n                    )\n                    cell._tc.get_or_add_tcPr().append(shading_elm)\n                except Exception:\n                    pass  # If setting the background color fails, continue\n\n        # Auto Fit Column Width\n        try:\n            table.autofit = True\n            # Set table width to page width\n            from docx.shared import Inches\n\n            table.width = Inches(6.5)  # ca.A4Width (%)\n        except Exception:\n            pass\n\n        # Set row height and cell margin\n        try:\n            for row in table.rows:\n                row.height = Inches(0.3)  # Set Row Heights\n                for cell in row.cells:\n                    # Set cell margin\n                    cell.margin_left = Inches(0.05)\n                    cell.margin_right = Inches(0.05)\n                    cell.margin_top = Inches(0.02)\n                    cell.margin_bottom = Inches(0.02)\n        except Exception:\n            pass\n\n        logger.info(f\"Successfully set table style and data, size: {rows}x{cols}\")\n\n    def _create_table_element(self, table_data: List[List[str]]):\n        \"\"\"\n        Create a table element\n        \n        Args:\n            table_data: Form Data [[row1_col1, row1_col2], [row2_col1, row2_col2]]\n        \n        Returns:\n            Form Elements\n        \"\"\"\n        try:\n            # Handling completely data-free scenarios: creating minimal tables\n            if not table_data:\n                logger.info(\"Table data isNoneor an empty list to create a minimal table:1x1\")\n                table = self.doc.add_table(rows=1, cols=1)\n                table.cell(0, 0).text = \"\"  # Empty Cells\n                return table._tbl\n\n            # Calculate table size: keep original structure even if all rows are empty\n            rows = len(table_data)\n            if rows == 0:\n                logger.info(\"The number of rows in the table is0, create a minimal table:1x1\")\n                table = self.doc.add_table(rows=1, cols=1)\n                table.cell(0, 0).text = \"\"\n                return table._tbl\n\n            # Calculate the maximum number of columns, if all rows are empty, the default is1column\n            cols = max((len(row) for row in table_data if row), default=1)\n\n            logger.info(f\"Create Table{rows}Parade x {cols}column\")\n            table = self.doc.add_table(rows=rows, cols=cols)\n\n            # Fill in the table data and style it\n            self._fill_and_style_table(table, table_data)\n\n            return table._tbl\n\n        except Exception as e:\n            logger.error(f\"Form element creation failed: {str(e)}\", exc_info=True)\n            return None\n\n    def _create_new_paragraph_after_table(self, parent, table_index, style_info=None):\n        \"\"\"\n        Create new paragraph after table\n        \n        Args:\n            parent: Parent Container\n            table_index: Index of the table in the parent container\n            style_info: Style information dictionary for applying to new paragraphs\n        \n        Returns:\n            New Paragraph Object\n        \"\"\"\n        try:\n            # Create a new paragraph\n            new_paragraph = self.doc.add_paragraph()\n\n            # Apply style information\n            if style_info:\n                self._apply_style_info(new_paragraph, style_info)\n                alignment_info = f\"inherit styles, aligning={style_info.get('alignment', 'None')}\"\n            else:\n                # Back of pocket: set to left alignment\n                from docx.enum.text import WD_ALIGN_PARAGRAPH\n                new_paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT\n                alignment_info = \"Default left alignment\"\n\n            paragraph_element = new_paragraph._element\n\n            # Insert new paragraph after table\n            parent.insert(table_index + 1, paragraph_element)\n\n            return new_paragraph\n\n        except Exception as e:\n            logger.error(f\"Failed to create new paragraph: {str(e)}\", exc_info=True)\n            return None\n\n    def _extract_paragraph_style_info(self, paragraph):\n        \"\"\"\n        Extract full style information for paragraphs\n        \n        Args:\n            paragraph: Paragraph object\n            \n        Returns:\n            dict: Dictionary containing paragraph style information\n        \"\"\"\n        try:\n            style_info = {\n                'alignment': paragraph.alignment,\n                'paragraph_format': {},\n                'style_name': None\n            }\n\n            # Extract paragraph formatting information\n            if hasattr(paragraph, 'paragraph_format'):\n                pf = paragraph.paragraph_format\n                style_info['paragraph_format'] = {\n                    'space_before': pf.space_before,\n                    'space_after': pf.space_after,\n                    'line_spacing': pf.line_spacing,\n                    'left_indent': pf.left_indent,\n                    'right_indent': pf.right_indent,\n                    'first_line_indent': pf.first_line_indent,\n                }\n\n            # Extract Style Name\n            if hasattr(paragraph, 'style') and paragraph.style:\n                style_info['style_name'] = paragraph.style.name\n\n            return style_info\n\n        except Exception as e:\n            logger.warning(f\"Failed to extract paragraph style: {str(e)}\")\n            return {'alignment': None, 'paragraph_format': {}, 'style_name': None}\n\n    def _apply_style_info(self, paragraph, style_info):\n        \"\"\"\n        Apply style information to paragraphs\n        \n        Args:\n            paragraph: Target Paragraph Object\n            style_info: Style Information Dictionary\n        \"\"\"\n        try:\n            # Apply alignment\n            if style_info.get('alignment') is not None:\n                paragraph.alignment = style_info['alignment']\n\n            # Apply Paragraph Formatting\n            paragraph_format = style_info.get('paragraph_format', {})\n            if paragraph_format:\n                pf = paragraph.paragraph_format\n\n                for attr_name, value in paragraph_format.items():\n                    if value is not None and hasattr(pf, attr_name):\n                        try:\n                            setattr(pf, attr_name, value)\n                        except Exception:\n                            pass  # Ignore formatting application failed\n\n            # Apply style name\n            style_name = style_info.get('style_name')\n            if style_name:\n                try:\n                    paragraph.style = style_name\n                except Exception:\n                    pass  # Ignore style application failed\n\n        except Exception as e:\n            logger.warning(f\"Failed to apply style information: {str(e)}\")\n\n    def _is_number(self, text: str) -> bool:\n        \"\"\"\n        Determine if the text is a number\n\n        Args:\n            text: Text to judge\n\n        Returns:\n            bool: Is numeric\n        \"\"\"\n        if not text:\n            return False\n\n        # Remove thousands separator and spaces\n        clean_text = text.replace(\",\", \"\").replace(\" \", \"\").replace(\"%\", \"\")\n\n        try:\n            float(clean_text)\n            return True\n        except ValueError:\n            return False\n\n    def render(self, template_def, resources: Dict[str, List[Dict[str, Any]]] = None):\n        \"\"\"\n        Render templates for image and table insertion\n\n        Args:\n            template_def: Template Definition List\n            resources: A dictionary of resource information, including pictures,Exceldocumentation   andMarkdownTable Filter\n        \"\"\"\n        doc = self.doc\n\n        # If no incomingresources, using an empty dictionary\n        if resources is None:\n            resources = {\"images\": [], \"excel_files\": [], \"csv_files\": [], \"markdown_tables\": []}\n\n        # Create placeholder-to-resource mapping\n        placeholder_map = {}\n\n        # Image placeholder mapping\n        for img_info in resources.get(\"images\", []):\n            placeholder_map[img_info[\"placeholder\"]] = {\n                \"type\": \"image\",\n                \"path\": img_info[\"local_path\"],\n                \"alt_text\": img_info[\"alt_text\"],\n                \"resource_type\": img_info[\"type\"],\n            }\n\n        # ExcelFile placeholder mapping\n        for excel_info in resources.get(\"excel_files\", []):\n            placeholder_map[excel_info[\"placeholder\"]] = {\n                \"type\": \"excel\",\n                \"path\": excel_info[\"local_path\"],\n                \"resource_type\": excel_info[\"type\"],\n                \"table_data\": excel_info.get(\"table_data\", []),  # Tambahtable_dataData field\n                \"alignments\": excel_info.get(\"alignments\", None),  # TambahalignmentsData field\n            }\n\n        # CSVFile placeholder mapping\n        for csv_info in resources.get(\"csv_files\", []):\n            placeholder_map[csv_info[\"placeholder\"]] = {\n                \"type\": \"csv\",\n                \"file_name\": csv_info.get(\"file_name\", \"UnknownCSVDoc.\"),\n                \"table_data\": csv_info.get(\"table_data\", []),\n                \"resource_type\": csv_info.get(\"type\", \"content\"),\n            }\n\n        # MarkdownTable placeholder mapping\n        for table_info in resources.get(\"markdown_tables\", []):\n            placeholder_map[table_info[\"placeholder\"]] = {\"type\": \"markdown_table\", \"content\": table_info[\"content\"]}\n\n        # Original Text Replacement Logic\n        for replace_info in template_def:\n            k1 = replace_info[0]\n            v1 = replace_info[1]\n\n            # Work with placeholders in tables\n            for table in doc.tables:\n                for i, row in enumerate(table.rows):\n                    for j, cell in enumerate(row.cells):\n                        if k1 in cell.text:\n                            for one in cell.paragraphs:\n                                if k1 in one.text:\n                                    # Checks for placeholders requiring special handling\n                                    cell_text = one.text.replace(k1, v1)\n\n                                    # Processing Placeholders\n                                    for placeholder, resource_info in placeholder_map.items():\n                                        if placeholder in cell_text:\n                                            if resource_info[\"type\"] == \"image\":\n                                                # Insert Actual Picture in Table Cell\n                                                image_path = resource_info.get(\"local_path\") or resource_info.get(\n                                                    \"path\", \"\")\n                                                if image_path and os.path.exists(image_path):\n                                                    try:\n                                                        # Clear cell text\n                                                        cell_text = cell_text.replace(placeholder, \"\")\n                                                        # Insert Picture in Cell\n                                                        self._insert_image_in_table_cell(cell, image_path)\n                                                        logger.info(f\"✅ Picture successfully inserted in table cell: {image_path}\")\n                                                    except Exception as e:\n                                                        logger.error(f\"❌ Table Cell Insert Picture Failed: {str(e)}\")\n                                                        # Show file name on failure\n                                                        cell_text = cell_text.replace(placeholder,\n                                                                                      os.path.basename(image_path))\n                                                else:\n                                                    # Image file does not exist, display path\n                                                    cell_text = cell_text.replace(placeholder, resource_info.get(\"path\",\n                                                                                                                 placeholder))\n                                            elif resource_info[\"type\"] == \"excel\":\n                                                cell_text = cell_text.replace(placeholder, \"[ExcelTable Filter]\")\n                                            elif resource_info[\"type\"] == \"csv\":\n                                                cell_text = cell_text.replace(placeholder, \"[CSVTable Filter]\")\n                                            elif resource_info[\"type\"] == \"markdown_table\":\n                                                cell_text = cell_text.replace(placeholder, \"[MarkdownTable Filter]\")\n\n                                    one.runs[0].text = cell_text\n                                    for r_index, r in enumerate(one.runs):\n                                        if r_index == 0:\n                                            continue\n                                        r.text = \"\"\n\n            # Processing Placeholders in Paragraphs\n            for p in doc.paragraphs:\n                if k1 not in p.text:\n                    continue\n\n                runs_cnt = len(p.runs)\n                s_e = []\n                i = 0\n                while i < runs_cnt:\n                    new_i = i + 1\n                    for j in range(i + 1, runs_cnt + 1):\n                        part_text = \"\".join([r.text for r in p.runs[i:j]])\n                        if k1 in part_text:\n                            # Find the smallest range containingk1right of privacyruns\n                            tmp_i, tmp_j = i, j\n                            while tmp_i <= tmp_j:\n                                tmp_part_text = \"\".join([r.text for r in p.runs[tmp_i:tmp_j]])\n                                if k1 in tmp_part_text:\n                                    tmp_i += 1\n                                    continue\n                                else:\n                                    tmp_i -= 1\n                                    break\n                            s_e.append((tmp_i, j))\n                            new_i = j\n                            break\n                    i = new_i\n\n                for one in s_e:\n                    s, e = one\n                    assert e > 0, [r.text for r in p.runs]\n\n                    if e - s == 1:\n                        replace_mapping = [(k1, v1)]\n                    elif e - s == 2:\n                        s_tgt_text = p.runs[s].text\n                        comm_str, max_num = find_lcs(k1, s_tgt_text)\n                        assert k1.startswith(comm_str)\n                        p1 = comm_str\n                        p2 = k1[max_num:]\n                        n = len(v1)\n                        sub_n1 = int(1.0 * len(p1) / (len(p1) + len(p2)) * n)\n                        replace_mapping = [(p1, v1[:sub_n1]), (p2, v1[sub_n1:])]\n                    elif e - s == 3:\n                        m_text = p.runs[s + 1].text\n                        head_tail = k1.split(m_text, 1)\n                        assert len(head_tail) == 2\n                        h_text = head_tail[0]\n                        t_text = head_tail[1]\n                        replace_mapping = [(h_text, \"\"), (m_text, v1), (t_text, \"\")]\n                    else:\n                        m_texts = [p.runs[i].text for i in range(s + 1, e - 1)]\n                        m_text = \"\".join(m_texts)\n                        head_tail = k1.split(m_text, 1)\n                        assert len(head_tail) == 2\n                        h_text = head_tail[0]\n                        t_text = head_tail[1]\n                        replace_mapping = [(h_text, \"\")]\n                        replace_mapping.append((m_texts[0], v1))\n                        for text in m_texts[1:]:\n                            replace_mapping.append((text, \"\"))\n                        replace_mapping.append((t_text, \"\"))\n\n                    for i in range(s, e):\n                        _k, _v = replace_mapping[i - s]\n                        p.runs[i].text = p.runs[i].text.replace(_k, _v)\n\n        # Unify resource placeholders after all variable replacements are complete\n        self._process_resource_placeholders(doc, placeholder_map)\n\n        # Add Final Document Content Check\n        self._log_final_document_content(doc)\n\n        return doc\n\n    def _log_final_document_content(self, doc):\n        \"\"\"Review final document content\"\"\"\n        try:\n            # Check for unprocessedfile contentlabel\n            for i, paragraph in enumerate(doc.paragraphs):\n                paragraph_text = paragraph.text.strip()\n                if paragraph_text and 'file content' in paragraph_text.lower():\n                    logger.warning(f\"Unprocessed foundfile contentLabel, paragraph{i}: {paragraph_text[:200]}...\")\n        except Exception as e:\n            logger.error(f\"Failed to check document content: {str(e)}\")\n\n\ndef test_replace_string(template_file, kv_dict: dict, file_name: str):\n    # If the file is a web path, download it to a temporary file, and use that\n    if not os.path.isfile(template_file) and _is_valid_url(template_file):\n        r = requests.get(template_file)\n\n        if r.status_code != 200:\n            raise ValueError(\"Check the url of your file; returned status code %s\" % r.status_code)\n\n        temp_dir = tempfile.TemporaryDirectory()\n        temp_file = Path(temp_dir.name) / unquote(urlparse(template_file).path.split(\"/\")[-1])\n        with open(temp_file, mode=\"wb\") as f:\n            f.write(r.content)\n\n        template_file = temp_file\n    elif not os.path.isfile(template_file):\n        raise ValueError(\"File path %s is not a valid file or url\" % template_file)\n\n    template_dict = []\n    for k, v in kv_dict.items():\n        template_dict.append([\"{{\" + k + \"}}\", v])\n\n    doc = DocxTemplateRender(str(template_file))\n    output = doc.render(template_dict)\n\n    temp_dir = tempfile.TemporaryDirectory()\n    temp_file = Path(temp_dir.name) / file_name\n    output.save(temp_file)\n    minio_client = get_minio_storage_sync()\n    minio_client.put_object_sync(bucket_name=minio_client.bucket, object_name=file_name, file=temp_file)\n\n    return file_name\n"
  },
  {
    "path": "src/backend/bisheng/utils/exceptions.py",
    "content": "class IgnoreException(Exception):\n    def __init__(self, message):\n        self.message = message\n        super().__init__(self.message)\n\n    def __str__(self):\n        return self.message\n\n\n# For business exception throwing error message\nclass MessageException(Exception):\n    def __init__(self, message):\n        self.message = message\n        super().__init__(self.message)\n\n    def __str__(self):\n        return self.message\n\n\nclass FileParseException(Exception):\n    def __init__(self, message):\n        self.message = message\n        super().__init__(self.message)\n\n    def __str__(self):\n        return self.message\n\n\nclass EtlException(Exception):\n    def __init__(self, message):\n        self.message = message\n        super().__init__(self.message)\n\n    def __str__(self):\n        return self.message\n"
  },
  {
    "path": "src/backend/bisheng/utils/http_middleware.py",
    "content": "# Define a custom middleware class\nfrom time import time\n\nfrom fastapi import Request\nfrom loguru import logger\nfrom starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint\n\nfrom bisheng.core.logger import trace_id_generator, trace_id_var\nfrom bisheng.utils import get_request_ip\n\n\nclass CustomMiddleware(BaseHTTPMiddleware):\n    \"\"\"Cutting Procedure\"\"\"\n\n    async def dispatch(self, request: Request, call_next: RequestResponseEndpoint):\n        # You can modify the request before passing it to the next middleware or endpoint\n        if request.headers.get('x-trace-id'):\n            trace_id = request.headers.get('x-trace-id')\n        else:\n            trace_id = trace_id_generator()\n        # WithNginx  choose one of two Gotta see.NGINX Configuration of\n        ip = get_request_ip(request)\n        path = request.url\n        trace_id_var.set(trace_id)\n\n        logger.info(f\"| {ip} | {request.method} {path}\")\n        start_time = time()\n        response = await call_next(request)\n        process_time = round(time() - start_time, 4)\n        response.headers[\"X-Process-Time\"] = str(process_time)\n        response.headers[\"X-Trace-ID\"] = trace_id\n        logger.info(f\"| {ip} | {request.method} {path} | process_time={process_time}s\")\n        return response\n\n\nclass WebSocketLoggingMiddleware:\n    \"\"\"WebSocket Log middleware\"\"\"\n\n    def __init__(self, app):\n        self.app = app\n\n    async def __call__(self, scope, receive, send):\n        if scope[\"type\"] == \"websocket\":\n            trace_id = trace_id_generator()\n            trace_id_var.set(trace_id)\n        await self.app(scope, receive, send)\n"
  },
  {
    "path": "src/backend/bisheng/utils/lazy_load.py",
    "content": "class LazyLoadDictBase:\n    def __init__(self):\n        self._all_types_dict = None\n\n    @property\n    def all_types_dict(self):\n        if self._all_types_dict is None:\n            self._all_types_dict = self._build_dict()\n        return self._all_types_dict\n\n    def _build_dict(self):\n        raise NotImplementedError\n\n    def get_type_dict(self):\n        raise NotImplementedError\n"
  },
  {
    "path": "src/backend/bisheng/utils/linked_list.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import print_function\n\n\nclass DoubleNode(object):\n    \"\"\"node_amb\"\"\"\n\n    def __init__(self, data):\n        # Identity Data Domain\n        self.data = data\n        # Identify the previous linked domain\n        self.prev = None\n        # Identify the next linked domain\n        self.next = None\n\n\nclass DoubleLinkList(object):\n    \"\"\"Double linked watch\"\"\"\n\n    def head(self):\n        return self.__head\n\n    def __init__(self, node=None):\n        # Private Attribute Header Node\n        self.__head = node\n\n    # is_empty() Is the linked list empty\n    def is_empty(self):\n        return self.__head is None\n\n    # length() Link List Length\n    def length(self):\n        count = 0  # Number\n        # Current Node\n        current = self.__head\n        while current is not None:\n            count += 1\n            # Move the current node backward\n            current = current.next\n        return count\n\n    # travel() Traverse the entire linked list\n    def travel(self):\n        # Current node accessed\n        current = self.__head\n        print('[ ', end='')\n        while current is not None:\n            print(current.data, end=' ')\n            current = current.next\n        print(']')\n\n    # add(item) Adding elements to the head of a linked list\n    def add(self, item):\n        node = DoubleNode(item)\n        # The next node of the new node is the head node of the old linked list\n        node.next = self.__head\n        # The header node of the new linked list is the new node\n        self.__head = node\n        # The previous node of the next node points to the newly added node\n        node.next.prev = node\n\n    # append(item) Add an element at the end of the linked list\n    def append(self, item):\n        node = DoubleNode(item)\n        if self.is_empty():\n            # When empty node\n            self.__head = node\n        else:\n            # Let the pointer point to the last node\n            current = self.__head\n            while current.next is not None:\n                current = current.next\n            # The next of the last node is the newly addednode\n            current.next = node\n            # Newly added node The previous node is the current node\n            node.prev = current\n\n    # search(item) Find out if the node exists\n    def search(self, item):\n        # Current Node\n        current = self.__head\n        while current is not None:\n            if current.data == item:\n                # Found it.\n                return True\n            else:\n                current = current.next\n        return False\n\n    def find(self, item):\n        # Current Node\n        current = self.__head\n        while current is not None:\n            if current.data == item:\n                # Found it.\n                return current\n            else:\n                current = current.next\n        return None\n\n    # insert(index, item) Specify location (from0Start) Add Element\n    def insert(self, index, item):\n        if index <= 0:\n            # Insert Before\n            self.add(item)\n        elif index > (self.length() - 1):\n            # Add at the end\n            self.append(item)\n        else:\n            # Create a new section\n            node = DoubleNode(item)\n            current = self.__head\n            # Number of traversals\n            count = 0\n            # Find the previous node of the inserted node\n            while count < index:\n                count += 1\n                current = current.next\n            # The next node of the new node points to the current node\n            node.next = current\n            # The previous node of the new node points to the previous node of the current node\n            node.prev = current.prev\n            # The next node of the previous node of the current node points to the new node\n            current.prev.next = node\n            # The previous node of the current node points to the new node\n            current.prev = node\n\n    # remove(item) Delete node\n    def remove(self, item):\n        current = self.__head\n        while current is not None:\n            if current.data == item:\n                # Locate the node element you want to delete\n                if current == self.__head:\n                    # Head Node\n                    self.__head = current.next\n                    if current.next:\n                        # If there is not only one node left,\n                        current.next.prev = None\n                else:\n                    # The next node of the previous node of the current node points to the next node of the current node\n                    current.prev.next = current.next\n                    if current.next:\n                        # If the last element is not deleted, the previous node of the next node of the current node points to the previous node of the current node\n                        current.next.prev = current.prev\n                return  # Return to current node\n            else:\n                # Nothing found, move backward\n                current = current.next\n\n\nif __name__ == '__main__':\n    print('test:')\n    double_link_list = DoubleLinkList()\n\n\n    for i in range(10):\n        double_link_list.append(str(i)+\":hello\")\n\n\n\n    print('--------Determine if it is empty-------')\n    print(double_link_list.is_empty())\n    node = double_link_list.find('0:hello')\n    t = {}\n    t[\"abc\"]=\"abc\"\n    t[\"abc1\"]=\"abc1\"\n\n    print(\"{}\",node.next.data)\n\n    print('-----------Longitudinal------------')\n    print(double_link_list.length())\n\n    double_link_list.append(2)\n    double_link_list.append(3)\n    double_link_list.append(5)\n\n    print('-----------Step Through------------')\n    double_link_list.travel()\n\n    double_link_list.add(1)\n    print('-----------Step Through------------')\n    double_link_list.travel()\n    double_link_list.add(0)\n    print('-----------Step Through------------')\n    double_link_list.travel()\n    double_link_list.insert(4, 4)\n    print('-----------Step Through------------')\n    double_link_list.travel()\n    double_link_list.insert(-1, -1)\n\n    print('-----------Step Through------------')\n    double_link_list.travel()\n\n    print('-----------Cari------------')\n    print(double_link_list.search(4))\n\n    print('-----------Delete------------')\n    double_link_list.remove(5)\n    double_link_list.remove(-1)\n\n    print('-----------Step Through------------')\n    double_link_list.travel()\n\n    print('-----------Longitudinal------------')\n    print(double_link_list.length())\n"
  },
  {
    "path": "src/backend/bisheng/utils/mask_data.py",
    "content": "import json\nimport re\nfrom copy import deepcopy\nfrom typing import Dict\n\n\nclass JsonFieldMasker:\n    def __init__(self):\n        # Define sensitive fields and corresponding desensitization rules\n        self.sensitive_fields = {\n            'phone': self.mask_phone,\n            'mobile': self.mask_phone,\n            'phone_number': self.mask_phone,\n            'tel': self.mask_phone,\n            'id_card': self.mask_id_card,\n            'identity_card': self.mask_id_card,\n            'email': self.mask_email,\n            'password': self.mask_password,\n            'credit_card': self.mask_credit_card,\n            'bank_card': self.mask_bank_card,\n            'address': self.mask_address,\n            'api_key': self.mask_api_key,\n            'api_secret': self.mask_api_key,\n            'openai_api_key': self.mask_api_key,\n            'siliconflow_api_key': self.mask_api_key,\n            'email_password': self.mask_api_key,\n            'jina_api_key': self.mask_api_key,\n            'app_secret': self.mask_api_key,\n        }\n\n        # Record regular expressions for desensitization mode\n        self.mask_patterns = {\n            'phone': r'^\\d{3}\\*{4}\\d{4}$',\n            'id_card': r'^\\d{6}\\*{8}\\d{4}$|^\\d{3}\\*{4}\\d{3}\\*{3}$',\n            'email': r'^[^*@]+\\*[^*@]*@',\n            'password': r'^\\*+$',\n            'credit_card': r'^\\d{4}\\*{8,12}\\d{4}$',\n            'bank_card': r'^\\d{4}\\*{8,12}\\d{4}$',\n            'name': r'^[^*]+\\*+[^*]*$',\n            'address': r'^[^*]+\\*+[^*]*$',\n            'api_key': r'^\\*+$',\n            'api_secret': r'^\\*+$',\n            'openai_api_key': r'^\\*+$',\n            'siliconflow_api_key': r'^\\*+$',\n            'email_password': r'^\\*+$',\n            'jina_api_key': r'^\\*+$',\n            'app_secret': r'^\\*+$',\n        }\n\n    def mask_api_key(self, api_key: str) -> str:\n        \"\"\"ImmunosuppressionAPIKey\"\"\"\n        if not api_key:\n            return api_key\n        return '********'\n\n    def mask_phone(self, phone: str) -> str:\n        \"\"\"Desensitized phone number\"\"\"\n        if not phone or len(phone) < 7:\n            return phone\n        return phone[:3] + '****' + phone[-4:]\n\n    def mask_id_card(self, id_card: str) -> str:\n        \"\"\"Desensitization ID number\"\"\"\n        if not id_card:\n            return id_card\n        if len(id_card) == 18:  # 18bits ID card\n            return id_card[:6] + '********' + id_card[-4:]\n        elif len(id_card) == 15:  # 15bits ID card\n            return id_card[:3] + '****' + id_card[7:10] + '***'\n        return '*' * 8\n\n    def mask_email(self, email: str) -> str:\n        \"\"\"Desensitization email\"\"\"\n        if '@' not in email:\n            return email\n        username, domain = email.split('@', 1)\n        if len(username) > 2:\n            masked_username = username[0] + '*' * 3 + username[-1]\n        else:\n            masked_username = '*' * len(username)\n        return f'{masked_username}@{domain}'\n\n    def mask_password(self, password: str) -> str:\n        \"\"\"Desensitization password\"\"\"\n        return '********'\n\n    def mask_credit_card(self, card: str) -> str:\n        \"\"\"Desensitized credit card number\"\"\"\n        if not card or len(card) < 8:\n            return card\n        return card[:4] + '*' * (len(card) - 8) + card[-4:]\n\n    def mask_bank_card(self, card: str) -> str:\n        \"\"\"Desensitized bank card number\"\"\"\n        if not card or len(card) < 8:\n            return card\n        return card[:4] + '*' * (len(card) - 8) + card[-4:]\n\n    def mask_name(self, name: str) -> str:\n        \"\"\"Desensitization Name\"\"\"\n        if not name:\n            return name\n        if len(name) == 2:\n            return name[0] + '*'\n        elif len(name) > 2:\n            return name[0] + '*' * (len(name) - 2) + name[-1]\n        return '*'\n\n    def mask_address(self, address: str) -> str:\n        \"\"\"Desensitization Address\"\"\"\n        if not address or len(address) <= 4:\n            return address\n        visible_length = min(4, len(address) // 3)\n        return address[:visible_length] + '****' + address[-visible_length:]\n\n    def is_masked_value(self, value: str, field_type: str) -> bool:\n        \"\"\"Determine if the value is already desensitized\"\"\"\n        if not isinstance(value, str):\n            return False\n\n        if field_type in self.mask_patterns:\n            pattern = self.mask_patterns[field_type]\n            return bool(re.match(pattern, value))\n\n        return False\n\n    def mask_json(self, data: Dict) -> Dict:\n        \"\"\"\n        ImmunosuppressionJSONDATA\n\n        Args:\n            data: OriginalJSONDATA\n\n        Returns:\n            Data after desensitization\n        \"\"\"\n        if not isinstance(data, dict):\n            return data\n\n        result = {}\n        for key, value in data.items():\n            if key in self.sensitive_fields:\n                mask_func = self.sensitive_fields[key]\n                if isinstance(value, str):\n                    result[key] = mask_func(value)\n                elif isinstance(value, dict):\n                    # If the value is a dictionary, recursive processing\n                    result[key] = self.mask_json(value)\n                else:\n                    # Desensitization after conversion of other types to strings\n                    result[key] = mask_func(str(value))\n            elif isinstance(value, dict):\n                # Insensitive fields, recursive processing of nested dictionaries\n                result[key] = self.mask_json(value)\n            else:\n                # Non-sensitive fields, leave as is\n                result[key] = value\n\n        return result\n\n    def update_json_with_masked(self, original: Dict, masked: Dict) -> Dict:\n        \"\"\"\n        After desensitizationJSONUpdate originalJSON\n\n        Rule: If the field value after desensitization is still desensitized, it will not be updated;\n             Otherwise, update the original value with the desensitized value\n\n        Args:\n            original: OriginalJSONDATA\n            masked: After desensitizationJSONDATA\n\n        Returns:\n            Updated data\n        \"\"\"\n        if not isinstance(original, dict) or not isinstance(masked, dict):\n            return masked if isinstance(masked, dict) else original\n\n        result = deepcopy(original)\n\n        for key, masked_value in masked.items():\n            if key in result:\n                original_value = result[key]\n\n                if key in self.sensitive_fields:\n                    # Sensitive Fields: Check for desensitization\n                    if isinstance(masked_value, str) and isinstance(original_value, str):\n                        if self.is_masked_value(masked_value, key):\n                            # Still desensitized, don't update\n                            result[key] = original_value\n                        else:\n                            # Restored to desensitized, updated\n                            result[key] = masked_value\n                    elif isinstance(masked_value, dict) and isinstance(original_value, dict):\n                        # Nested dictionaries, recursive processing\n                        result[key] = self.update_json_with_masked(original_value, masked_value)\n                    else:\n                        # Type mismatch, keep original value\n                        result[key] = original_value\n                else:\n                    # Non-Sensitive Fields\n                    if isinstance(masked_value, dict) and isinstance(original_value, dict):\n                        # Nested dictionaries, recursive processing\n                        result[key] = self.update_json_with_masked(original_value, masked_value)\n                    else:\n                        # Non-nested fields, update directly\n                        result[key] = masked_value\n            else:\n                # Keys that are not in the original data, add them directly\n                result[key] = masked_value\n\n        return result\n\n    def safe_update_json(self, original_json: str, masked_json: str) -> str:\n        \"\"\"\n        SafeJSONUpdate: InsightsJSONString, update, re-serialize\n\n        Args:\n            original_json: OriginalJSONString\n            masked_json: After desensitizationJSONString\n\n        Returns:\n            Post UpdateJSONString\n        \"\"\"\n        try:\n            original_data = json.loads(original_json)\n            masked_data = json.loads(masked_json)\n\n            if not isinstance(original_data, dict) or not isinstance(masked_data, dict):\n                raise ValueError(\"JSONData must be of object type\")\n\n            updated_data = self.update_json_with_masked(original_data, masked_data)\n            return json.dumps(updated_data, ensure_ascii=False, indent=2)\n        except json.JSONDecodeError as e:\n            raise ValueError(f\"InvalidJSONDATA: {e}\")\n\n\n# Example Use\ndef main():\n    masker = JsonFieldMasker()\n\n    # OriginalJSONDATA\n    original_data = {\n        \"user\": {\n            \"id\": 1,\n            \"name\": \"Zhang San\",\n            \"phone\": \"13800138000\",\n            \"email\": \"zhangsan@example.com\",\n            \"id_card\": \"110101199001011234\",\n            \"bank_card\": \"6228480402564890018\",\n            \"address\": \"Jianguomenwai Street, Chaoyang District, Beijing1.\",\n            \"details\": {\n                \"emergency_contact\": \"Lisi\",\n                \"emergency_phone\": \"13987654321\"\n            }\n        },\n        \"password\": \"mysecret123\",\n        \"timestamp\": \"2023-10-01T12:00:00Z\"\n    }\n\n    print(\"OriginalJSONDATA:\")\n    print(json.dumps(original_data, ensure_ascii=False, indent=2))\n    print(\"\\n\" + \"=\" * 50 + \"\\n\")\n\n    # 1. Perform desensitization\n    masked_data = masker.mask_json(original_data)\n    print(\"After desensitizationJSONDATA:\")\n    print(json.dumps(masked_data, ensure_ascii=False, indent=2))\n    print(\"\\n\" + \"=\" * 50 + \"\\n\")\n\n    # 2. Simulated modified desensitization data\n    modified_masked_data = deepcopy(masked_data)\n    # Modify some fields\n    modified_masked_data[\"user\"][\"name\"] = \"Pcs*\"  # Keep desensitization\n    modified_masked_data[\"user\"][\"phone\"] = \"13812345678\"  # Change to a new phone number\n    modified_masked_data[\"user\"][\"email\"] = \"zhang@newmail.com\"  # Modify email\n    modified_masked_data[\"password\"] = \"newpassword123\"  # Change the password\n    modified_masked_data[\"timestamp\"] = \"2023-10-02T12:00:00Z\"  # Revision timestamp\n\n    print(\"Modified desensitizationJSONDATA:\")\n    print(json.dumps(modified_masked_data, ensure_ascii=False, indent=2))\n    print(\"\\n\" + \"=\" * 50 + \"\\n\")\n\n    # 3. Update raw data with desensitized data\n    updated_data = masker.update_json_with_masked(original_data, modified_masked_data)\n\n    print(\"Post UpdateJSONDATA:\")\n    print(json.dumps(updated_data, ensure_ascii=False, indent=2))\n\n    # Show updated results analysis\n    print(\"\\n\" + \"=\" * 50)\n    print(\"Field Update Situation Analysis:\")\n    print(\"-\" * 30)\n\n    def analyze_updates(orig, updated, path=\"\"):\n        for key in sorted(set(orig.keys()) | set(updated.keys())):\n            current_path = f\"{path}.{key}\" if path else key\n\n            if key in orig and key in updated:\n                orig_val = orig[key]\n                updated_val = updated[key]\n\n                if orig_val != updated_val:\n                    is_sensitive = key in masker.sensitive_fields\n                    if is_sensitive:\n                        is_masked = masker.is_masked_value(str(updated_val), key) if isinstance(updated_val,\n                                                                                                str) else False\n                        status = \"✓ Updated\" if not is_masked else \"✗ Not updated (still desensitized)\"\n                    else:\n                        status = \"✓ Updated (non-sensitive field)\"\n\n                    print(f\"{current_path}: {status}\")\n                    print(f\"  Original Value: {orig_val}\")\n                    print(f\"  New Value: {updated_val}\")\n                elif isinstance(orig_val, dict) and isinstance(updated_val, dict):\n                    analyze_updates(orig_val, updated_val, current_path)\n            elif key in updated and key not in orig:\n                print(f\"{current_path}: ✓ Added (new field)\")\n                print(f\"  New Value: {updated[key]}\")\n\n    analyze_updates(original_data, updated_data)\n\n    # Test StringJSON<g id=\"Bold\">Medical Treatment:</g>\n    print(\"\\n\" + \"=\" * 50)\n    print(\"Test StringJSON<g id='Bold'>Medical Treatment:</g>:\")\n    print(\"-\" * 30)\n\n    original_json_str = json.dumps(original_data, ensure_ascii=False)\n    masked_json_str = json.dumps(modified_masked_data, ensure_ascii=False)\n\n    try:\n        updated_json_str = masker.safe_update_json(original_json_str, masked_json_str)\n        print(\"Post UpdateJSONString:\")\n        print(updated_json_str)\n    except ValueError as e:\n        print(f\"Error-free: {e}\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/backend/bisheng/utils/payload.py",
    "content": "import contextlib\nimport re\nfrom typing import Dict\n\n\ndef extract_input_variables(nodes):\n    \"\"\"\n    Extracts input variables from the template\n    and adds them to the input_variables field.\n    \"\"\"\n    for node in nodes:\n        with contextlib.suppress(Exception):\n            if 'input_variables' in node['data']['node']['template']:\n                if node['data']['node']['template']['_type'] == 'prompt':\n                    variables = re.findall(\n                        r'\\{(.*?)\\}',\n                        node['data']['node']['template']['template']['value'],\n                    )\n                elif node['data']['node']['template']['_type'] == 'few_shot':\n                    variables = re.findall(\n                        r'\\{(.*?)\\}',\n                        node['data']['node']['template']['prefix']['value'] +\n                        node['data']['node']['template']['suffix']['value'],\n                    )\n                else:\n                    variables = []\n                node['data']['node']['template']['input_variables']['value'] = variables\n    return nodes\n\n\ndef get_root_node(graph):\n    \"\"\"\n    Returns the root node of the template.\n    \"\"\"\n    incoming_edges = {edge.source_id for edge in graph.edges}\n    input_node = {\n        edge.source_id\n        for edge in graph.edges if graph.get_vertex(edge.source_id).base_type == 'inputOutput'\n    }\n\n    if not incoming_edges and len(graph.vertices) == 1:\n        return graph.vertices[0]\n\n    node = {node for node in graph.vertices if node.id not in incoming_edges}\n    if input_node:\n        if node:\n            input_node = input_node.union(node)\n        return input_node\n    return node\n\n\ndef get_root_vertex(graph):\n    \"\"\"\n    Returns the root node of the template.\n    \"\"\"\n    incoming_edges = {edge.source_id for edge in graph.edges}\n\n    if not incoming_edges and len(graph.vertices) == 1:\n        return graph.vertices[0]\n\n    return next((node for node in graph.vertices if node.id not in incoming_edges), None)\n\n\ndef build_json(root, graph) -> Dict:\n    if 'node' not in root.data:\n        # If the root node has no \"node\" key, then it has only one child,\n        # which is the target of the single outgoing edge\n        edge = root.edges[0]\n        local_nodes = [edge.target]\n    else:\n        # Otherwise, find all children whose type matches the type\n        # specified in the template\n        node_type = root.node_type\n        local_nodes = graph.get_nodes_with_target(root)\n\n    if len(local_nodes) == 1:\n        return build_json(local_nodes[0], graph)\n    # Build a dictionary from the template\n    template = root.data['node']['template']\n    final_dict = template.copy()\n\n    for key, value in final_dict.items():\n        if key == '_type':\n            continue\n\n        node_type = value['type']\n\n        if 'value' in value and value['value'] is not None:\n            # If the value is specified, use it\n            value = value['value']\n        elif 'dict' in node_type:\n            # If the value is a dictionary, create an empty dictionary\n            value = {}\n        else:\n            # Otherwise, recursively build the child nodes\n            children = []\n            for local_node in local_nodes:\n                node_children = graph.get_children_by_node_type(local_node, node_type)\n                children.extend(node_children)\n\n            if value['required'] and not children:\n                raise ValueError(f'No child with type {node_type} found')\n            values = [build_json(child, graph) for child in children]\n            value = (\n                list(values) if value['list'] else next(iter(values), None)  # type: ignore\n            )\n        final_dict[key] = value\n\n    return final_dict\n"
  },
  {
    "path": "src/backend/bisheng/utils/threadpool.py",
    "content": "import asyncio\nimport concurrent.futures\nimport threading\nimport time\nfrom typing import Dict, List, Set, Tuple\n\nfrom loguru import logger\n\nfrom bisheng.core.logger import trace_id_var\n\n\nclass ThreadPoolManager:\n\n    def __init__(self, max_workers, thread_name_prefix='pool'):\n        self.thread_group = thread_name_prefix\n        self.executor = concurrent.futures.ThreadPoolExecutor(\n            max_workers=max_workers, thread_name_prefix=thread_name_prefix)\n        # Design one syndication per sync thread\n        self.future_dict: Dict[str, List[concurrent.futures.Future]] = {}\n        self.async_task: Dict[str, List[concurrent.futures.Future]] = {}\n        self.lock = threading.Lock()\n\n    def submit(self, key: str, fn, *args, **kwargs):\n        with self.lock:\n            if key not in self.future_dict:\n                self.future_dict[key] = []\n            if key not in self.async_task:\n                self.async_task[key] = []\n            if asyncio.coroutines.iscoroutinefunction(fn):\n                future = asyncio.create_task(self.acontext_wrapper(fn, *args, **kwargs))\n                self.async_task[key].append(future)\n            else:\n                future = self.executor.submit(self.context_wrapper, fn, *args, **kwargs)\n                self.future_dict[key].append(future)\n            return future\n\n    async def acontext_wrapper(self, func, *args, **kwargs):\n        start_wait = time.time()\n        kwargs.pop('trace_id', '2')\n        result = await func(*args, **kwargs)\n        end_wait = time.time()  # Time when the task actually started\n        logger.info(\n            f'aTask_waited={end_wait - start_wait:.2f} seconds and {func.__name__} executed={time.time() - end_wait:.2f} seconds',\n        )\n        return result\n\n    def context_wrapper(self, func, *args, **kwargs):\n        trace_id = kwargs.pop('trace_id', '2')\n        start_wait = time.time()\n        trace_id_var.set(trace_id)\n        result = func(*args, **kwargs)\n        end_wait = time.time()  # Time when the task actually started\n        logger.info(\n            f'Task_waited={end_wait - start_wait:.2f} seconds and executed={time.time() - end_wait:.2f} seconds',\n        )\n        return result\n\n    async def as_completed(self,\n                           key_list: Set[str]) -> List[Tuple[str, concurrent.futures.Future]]:\n        with self.lock:\n            completed_futures = []\n            for k, lf in list(self.future_dict.items()):\n                for f in lf:\n                    if f.done():\n                        if k in key_list:\n                            completed_futures.append((k, f))\n                            self.future_dict[k].remove(f)\n                if len(lf) == 0:\n                    self.future_dict.pop(k)\n\n            pending_count = 0\n            for k, lf in list(self.async_task.items()):\n                for f in lf:\n                    if f.done():\n                        # Dapatkantask\n                        if k in key_list:\n                            completed_futures.append((k, f))\n                            self.async_task[k].remove(f)\n                    else:\n                        pending_count += 1\n                if len(lf) == 0:\n                    self.async_task.pop(k)\n            if pending_count > 0:\n                logger.info('async_wait_count={}', pending_count)\n            return completed_futures\n\n    # async def async_done_callback(self, future):\n    #     self.async_task_result.append(future)\n\n    def cancel_task(self, key_list: List[str]):\n        res = [False] * len(key_list)\n        with self.lock:\n            for index, key in enumerate(key_list):\n                if self.async_task.get(key):\n                    for task in self.async_task.get(key):\n                        cancel_res = task.cancel()\n                        logger.info('clean_pending_task key={} task={} res={}', key, task,\n                                    cancel_res)\n                        res[index] = cancel_res\n                if self.future_dict.get(key):\n                    for task in self.future_dict.get(key):\n                        res.append(task.cancel())\n            return res\n\n    def tear_down(self):\n        key_list = list(self.async_task.keys())\n        self.cancel_task(key_list)\n        self.executor.shutdown(cancel_futures=True)\n\n\n# Create a thread pool manager\nthread_pool = ThreadPoolManager(5)\n\nif __name__ == '__main__':\n    def wait_(name: str):\n        logger.info('{} enter wait {}', threading.current_thread(), name)\n        time.sleep(10)\n        logger.info('{} done {}', threading.current_thread(), name)\n\n\n    async def await_(name: str = 1):\n        logger.info('{} enter wait {}', threading.current_thread(), name)\n        await asyncio.sleep(10)\n        logger.info('{} done {}', threading.current_thread(), name)\n\n\n    thread_pool.submit('ABB', wait_, 'NO.1')\n    thread_pool.submit('AAA', await_)\n    # time.sleep(3)\n    # thread_pool.submit(\"AA\", wait_, \"~~~~~~~~~~~~\")\n    # thread_pool.submit(\"AA\", await_, \"NO.3\")\n    # time.sleep(2)\n    # thread_pool.tear_down([\"AAA\"])\n"
  },
  {
    "path": "src/backend/bisheng/utils/util.py",
    "content": "import asyncio\nimport functools\nimport hashlib\nimport importlib\nimport inspect\nimport io\nimport logging\nimport re\nimport time\nimport zipfile\nfrom functools import wraps\nfrom typing import Dict, Optional, Union, List, Tuple\nfrom urllib.parse import urlparse\n\nfrom bisheng.template.frontend_node.constants import FORCE_SHOW_FIELDS\nfrom bisheng.utils import constants\nfrom docstring_parser import parse  # type: ignore\n\nlogger = logging.getLogger(__name__)\n\n\ndef build_template_from_function(name: str, type_to_loader_dict: Dict, add_function: bool = False):\n    classes = [item.__annotations__['return'].__name__ for item in type_to_loader_dict.values()]\n\n    # Raise error if name is not in chains\n    if name not in classes:\n        raise ValueError(f'{name} not found')\n\n    for _type, v in type_to_loader_dict.items():\n        if v.__annotations__['return'].__name__ == name:\n            _class = v.__annotations__['return']\n\n            # Get the docstring\n            docs = parse(_class.__doc__)\n\n            variables = {'_type': _type}\n            for class_field_items, value in _class.__fields__.items():\n                if class_field_items in ['callback_manager']:\n                    continue\n                variables[class_field_items] = {}\n                for name_, value_ in value.__repr_args__():\n                    if name_ == 'default_factory':\n                        try:\n                            variables[class_field_items]['default'] = get_default_factory(\n                                module=_class.__base__.__module__, function=value_)\n                        except Exception:\n                            variables[class_field_items]['default'] = None\n                    elif name_ not in ['name']:\n                        variables[class_field_items][name_] = value_\n\n                variables[class_field_items]['placeholder'] = (\n                    docs.params[class_field_items] if class_field_items in docs.params else '')\n            # Adding function to base classes to allow\n            # the output to be a function\n            base_classes = get_base_classes(_class)\n            if add_function:\n                base_classes.append('function')\n\n            return {\n                'template': format_dict(variables, name),\n                'description': docs.short_description or '',\n                'base_classes': base_classes,\n            }\n\n\ndef build_template_from_class(name: str, type_to_cls_dict: Dict, add_function: bool = False):\n    classes = [item.__name__ for item in type_to_cls_dict.values()]\n\n    # Raise error if name is not in chains\n    if name not in classes:\n        raise ValueError(f'{name} not found.')\n\n    for _type, v in type_to_cls_dict.items():\n        if v.__name__ == name:\n            _class = v\n\n            # Get the docstring\n            docs = parse(_class.__doc__)\n\n            variables = {'_type': _type}\n\n            if getattr(_class, 'model_fields', None):\n                for class_field_items, value in _class.model_fields.items():\n                    if class_field_items in ['callback_manager']:\n                        continue\n                    variables[class_field_items] = {}\n                    for name_, value_ in value.__repr_args__():\n                        if name_ == 'default_factory':\n                            try:\n                                variables[class_field_items]['default'] = get_default_factory(\n                                    module=_class.__base__.__module__, function=value_)\n                            except Exception:\n                                variables[class_field_items]['default'] = None\n                        elif name_ not in ['name']:\n                            variables[class_field_items][name_] = value_\n\n                    variables[class_field_items]['placeholder'] = (\n                        docs.params[class_field_items] if class_field_items in docs.params else '')\n            else:\n                for name, param in inspect.signature(_class.__init__).parameters.items():\n                    if name == 'self':\n                        continue\n                    variables[name] = {}\n                    variables[name]['default'] = get_default_factory(module=_class.__base__.__module__,\n                                                                     function=str(param.annotation))\n                    variables[name]['annotation'] = str(param.annotation)\n                    variables[name]['required'] = False\n\n            base_classes = get_base_classes(_class)\n            # Adding function to base classes to allow\n            # the output to be a function\n            if add_function:\n                base_classes.append('function')\n            return {\n                'template': format_dict(variables, name),\n                'description': docs.short_description or '',\n                'base_classes': base_classes,\n            }\n    return None\n\n\ndef build_template_from_method(\n        class_name: str,\n        method_name: str,\n        type_to_cls_dict: Dict,\n        add_function: bool = False,\n):\n    classes = [item.__name__ for item in type_to_cls_dict.values()]\n\n    # Raise error if class_name is not in classes\n    if class_name not in classes:\n        raise ValueError(f'{class_name} not found.')\n\n    for _type, v in type_to_cls_dict.items():\n        if v.__name__ == class_name:\n            _class = v\n\n            # Check if the method exists in this class\n            if not hasattr(_class, method_name):\n                raise ValueError(f'Method {method_name} not found in class {class_name}')\n\n            # Get the method\n            method = getattr(_class, method_name)\n\n            # Get the docstring\n            docs = parse(method.__doc__)\n\n            # Get the signature of the method\n            sig = inspect.signature(method)\n\n            # Get the parameters of the method\n            params = sig.parameters\n\n            # Initialize the variables dictionary with method parameters\n            variables = {\n                '_type': _type,\n                **{\n                    name: {\n                        'default': param.default if param.default != param.empty else None,\n                        'type': param.annotation if param.annotation != param.empty else None,\n                        'required': param.default == param.empty,\n                    }\n                    for name, param in params.items() if name not in ['self', 'kwargs', 'args']\n                },\n            }\n\n            base_classes = get_base_classes(_class)\n\n            # Adding function to base classes to allow the output to be a function\n            if add_function:\n                base_classes.append('function')\n\n            return {\n                'template': format_dict(variables, class_name),\n                'description': docs.short_description or '',\n                'base_classes': base_classes,\n            }\n\n\ndef get_base_classes(cls):\n    \"\"\"Get the base classes of a class.\n    These are used to determine the output of the nodes.\n    \"\"\"\n    if hasattr(cls, '__bases__') and cls.__bases__:\n        bases = cls.__bases__\n        result = []\n        for base in bases:\n            if any(type in base.__module__ for type in ['pydantic', 'abc']):\n                continue\n            result.append(base.__name__)\n            base_classes = get_base_classes(base)\n            # check if the base_classes are in the result\n            # if not, add them\n            for base_class in base_classes:\n                if base_class not in result:\n                    result.append(base_class)\n    else:\n        result = [cls.__name__]\n    if not result:\n        result = [cls.__name__]\n    return list(set(result + [cls.__name__]))\n\n\ndef get_default_factory(module: str, function: str):\n    pattern = r'<function (\\w+)>'\n\n    if match := re.search(pattern, function):\n        imported_module = importlib.import_module(module)\n        return getattr(imported_module, match[1])()\n    return None\n\n\ndef type_to_string(tp):\n    if getattr(tp, '__args__', None):\n        args_str = ','.join(type_to_string(arg) for arg in tp.__args__\n                            if arg is not type(None))  # noqa\n        return f'{tp.__name__}[{args_str}]'\n    else:\n        return tp.__name__\n\n\ndef format_dict(d, name: Optional[str] = None):\n    \"\"\"\n    Formats a dictionary by removing certain keys and modifying the\n    values of other keys.\n\n    Args:\n        d: the dictionary to format\n        name: the name of the class to format\n\n    Returns:\n        A new dictionary with the desired modifications applied.\n    \"\"\"\n    need_remove_key = []\n    # Process remaining keys\n    for key, value in d.items():\n        if key == '_type':\n            continue\n\n        _type = value['type'] if 'type' in value else value['annotation']\n\n        if not isinstance(_type, str):\n            _type = type_to_string(_type)\n\n        # Remove 'Optional' wrapper\n        if 'Optional' in _type:\n            _type = _type.replace('Optional[', '')[:-1]\n            value['required'] = False\n\n        # Check for list type\n        if 'List' in _type or 'Sequence' in _type or 'Set' in _type:\n            _type = (_type.replace('List[', '').replace('Sequence[', '').replace('Set[', '')[:-1])\n            value['list'] = True\n        else:\n            value['list'] = False\n\n        # Replace 'Mapping' with 'dict'\n        if 'Mapping' in _type:\n            _type = _type.replace('Mapping', 'dict')\n\n        # Change type from str to Tool\n        value['type'] = 'Tool' if key in ['allowed_tools'] else _type\n\n        value['type'] = 'int' if key in ['max_value_length'] else value['type']\n\n        # Show or not field\n        value['show'] = bool(\n            (value['required'] and (key not in ['input_variables'] or name == 'SequentialChain'))\n            or key in FORCE_SHOW_FIELDS or 'api_key' in key)\n\n        # Add password field\n        value['password'] = any(text in key.lower()\n                                for text in ['password', 'token', 'api', 'key'])\n\n        # Add multline\n        value['multiline'] = key in [\n            'suffix',\n            'prefix',\n            'template',\n            'examples',\n            'code',\n            'headers',\n            'format_instructions',\n        ]\n\n        # Replace dict type with str\n        if 'dict' in value['type'].lower():\n            value['type'] = 'code'\n\n        if key == 'dict_':\n            value['type'] = 'file'\n            value['suffixes'] = ['.json', '.yaml', '.yml']\n            value['fileTypes'] = ['json', 'yaml', 'yml']\n\n        # Replace default value with actual value\n        if 'default' in value:\n            value['value'] = value['default']\n            value.pop('default')\n\n        if key == 'headers':\n            value['value'] = \"\"\"{'Authorization':\n            'Bearer <token>'}\"\"\"\n        # Add options to openai\n        if name == 'OpenAI' and key == 'model_name':\n            value['options'] = constants.OPENAI_MODELS\n            value['list'] = True\n            value['value'] = constants.OPENAI_MODELS[0]\n        elif name == 'ChatOpenAI' and key == 'model_name':\n            value['options'] = constants.CHAT_OPENAI_MODELS\n            value['list'] = True\n            value['value'] = constants.CHAT_OPENAI_MODELS[0]\n        elif (name == 'Anthropic' or name == 'ChatAnthropic') and key == 'model_name':\n            value['options'] = constants.ANTHROPIC_MODELS\n            value['list'] = True\n            value['value'] = constants.ANTHROPIC_MODELS[0]\n\n        if 'value' in value and type(value['value']) == set:\n            value['value'] = list(value['value'])\n        if 'value' in value and inspect.isfunction(value['value']):\n            need_remove_key.append(key)\n    for one in need_remove_key:\n        del d[one]\n    return d\n\n\ndef update_verbose(d: dict, new_value: bool) -> dict:\n    \"\"\"\n    Recursively updates the value of the 'verbose' key in a dictionary.\n\n    Args:\n        d: the dictionary to update\n        new_value: the new value to set\n\n    Returns:\n        The updated dictionary.\n    \"\"\"\n\n    for k, v in d.items():\n        if isinstance(v, dict):\n            update_verbose(v, new_value)\n        elif k == 'verbose':\n            d[k] = new_value\n    return d\n\n\ndef sync_to_async(func):\n    \"\"\"\n    Decorator to convert a sync function to an async function.\n    \"\"\"\n\n    @wraps(func)\n    async def async_wrapper(*args, **kwargs):\n        return func(*args, **kwargs)\n\n    return async_wrapper\n\n\ndef run_async(coro, loop=None):\n    \"\"\"\n    Run asynchronous functions\n    :param coro:\n    :param loop:\n    :return:\n    \"\"\"\n    if loop is None:\n        try:\n            loop = asyncio.get_running_loop()\n            return loop.run_until_complete(coro)\n        except RuntimeError:\n            loop = asyncio.new_event_loop()\n            asyncio.set_event_loop(loop)\n            return loop.run_until_complete(coro)\n\n    return loop.run_until_complete(coro)\n\n\ndef get_cache_key(flow_id: str, chat_id: str, vertex_id: str = None):\n    return f'{flow_id}_{chat_id}_{vertex_id}'\n\n\ndef _is_valid_url(url: str) -> bool:\n    \"\"\"Check if the url is valid.\"\"\"\n    parsed = urlparse(url)\n    return bool(parsed.netloc) and bool(parsed.scheme)\n\n\n# Retry decorator Asynchronous\ndef retry_async(num_retries=3, delay=0.5, return_exceptions=False):\n    def wrapper(func):\n        async def wrapped(*args, **kwargs):\n            for i in range(num_retries):\n                try:\n                    return await func(*args, **kwargs)\n                except Exception as e:\n                    logger.info(\n                        f\"Retrying {func.__name__} in {delay} seconds... Attempt {i + 1} of {num_retries}... error: {e}\")\n                    if i == num_retries - 1:\n                        if return_exceptions:\n                            # Return Exception Parameters will bee.argsSplit into tuples\n                            return e.args if len(e.args) > 1 else e.args[0]\n                        logger.error(f\"Failed to execute {func.__name__} after {num_retries} retries\")\n                        raise e\n                    await asyncio.sleep(delay)\n            return None\n\n        return wrapped\n\n    return wrapper\n\n\n# Retry decorator\ndef retry_sync(num_retries=3, delay=0.5, return_exceptions=False):\n    def wrapper(func):\n        def wrapped(*args, **kwargs):\n            for i in range(num_retries):\n                try:\n                    return func(*args, **kwargs)\n                except Exception as e:\n                    logger.info(\n                        f\"Retrying {func.__name__} in {delay} seconds... Attempt {i + 1} of {num_retries}... error: {e}\")\n                    if i == num_retries - 1:\n                        if return_exceptions:\n                            # Return Exception Parameters will bee.argsSplit into tuples\n                            return e.args if len(e.args) > 1 else e.args[0]\n                        logger.error(f\"Failed to execute {func.__name__} after {num_retries} retries\")\n                        raise e\n                    time.sleep(delay)\n            return None\n\n        return wrapped\n\n    return wrapper\n\n\ndef calculate_md5(file: Union[str, bytes]):\n    \"\"\"Calculating the Document's MD5 .\n    Returns:\n        str: of the document MD5 .\n    \"\"\"\n    md5_hash = hashlib.md5()\n\n    if isinstance(file, bytes):\n        md5_hash.update(file)\n        return md5_hash.hexdigest()\n\n    else:\n        # Reading Files in Binary Form\n        with open(file, \"rb\") as f:\n            # Read files by block to avoid large files taking up too much memory\n            for chunk in iter(lambda: f.read(4096), b\"\"):\n                md5_hash.update(chunk)\n\n        return md5_hash.hexdigest()\n\n\nasync def async_calculate_md5(file: Union[str, bytes]):\n    \"\"\"of the asynchronous computation document MD5 .\n    Returns:\n        str: of the document MD5 .\n    \"\"\"\n    import aiofiles\n\n    md5_hash = hashlib.md5()\n\n    if isinstance(file, bytes):\n        md5_hash.update(file)\n        return md5_hash.hexdigest()\n\n    else:\n        # Read files asynchronously in binary form\n        async with aiofiles.open(file, \"rb\") as f:\n            # Read files asynchronously by block to avoid large files taking up too much memory\n            while True:\n                chunk = await f.read(4096)\n                if not chunk:\n                    break\n                md5_hash.update(chunk)\n\n        return md5_hash.hexdigest()\n\n\n# Read all files in the directory\ndef read_files_in_directory(path: str):\n    \"\"\"\n    Reads all files in the directory and returns a list of filenames.\n    Args:\n        path (str): Directory Path\n    Returns:\n        list: List of filenames.\n    \"\"\"\n    import os\n\n    if not os.path.exists(path):\n        logger.error(f\"Path {path} does not exist.\")\n        return []\n\n    files = []\n    for root, _, filenames in os.walk(path):\n        for filename in filenames:\n            files.append(os.path.join(root, filename))\n    return files\n\n\ndef sync_func_to_async(func, executor=None):\n    @functools.wraps(func)\n    async def wrapper(*args, **kwargs):\n        loop = asyncio.get_running_loop()\n        bound_func = functools.partial(func, *args, **kwargs)\n        return await loop.run_in_executor(executor, bound_func)\n\n    return wrapper\n\n\ndef bytes_to_zip(\n        files: List[Tuple[str, bytes]],\n        compress_level: int = 6\n) -> bytes:\n    \"\"\"\n    Package byte stream data intoZIPfiles, back toZIPByte Stream for Files\n\n    Parameters:\n        files: Contains(The file name, Byte Stream)List of tuples\n        compress_level: compression level(0-9)，0Indicates no compression,9Represents the highest compression rate\n\n    Return:\n        Date GeneratedZIPFile Byte Stream\n    \"\"\"\n    try:\n        # Verify compression level\n        if not 0 <= compress_level <= 9:\n            raise ValueError(\"The compression level must be0to9Between\")\n\n        # Create in-memory byte streams for storageZIPDATA\n        zip_buffer = io.BytesIO()\n\n        # BuatZIPFile and add byte stream data\n        with zipfile.ZipFile(\n                zip_buffer,\n                'w',\n                zipfile.ZIP_DEFLATED,\n                compresslevel=compress_level\n        ) as zipf:\n            for filename, data in files:\n                # Enter your messageZIPAdd byte stream data to the file\n                zipf.writestr(filename, data)\n                print(f\"Was added: {filename} (size: {len(data) / 1024:.2f} KB)\")\n\n        # will beZIPData is positioned to the starting position and returns a byte stream\n        zip_buffer.seek(0)\n        zip_data = zip_buffer.getvalue()\n\n        logger.debug(f\"\\nZIPFile created successfully, total size: {len(zip_data) / 1024:.2f} KB\")\n        return zip_data\n\n    except Exception as e:\n        logger.error(f\"Packaging process error: {str(e)}\")\n        raise e\n"
  },
  {
    "path": "src/backend/bisheng/utils/validate.py",
    "content": "import ast\nimport contextlib\nimport importlib\nfrom types import FunctionType\nfrom typing import Dict, List, Optional, Union\n\nfrom bisheng.field_typing.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES\n\n\ndef add_type_ignores():\n    if not hasattr(ast, 'TypeIgnore'):\n\n        class TypeIgnore(ast.AST):\n            _fields = ()\n\n        ast.TypeIgnore = TypeIgnore\n\n\ndef validate_code(code):\n    # Initialize the errors dictionary\n    errors = {'imports': {'errors': []}, 'function': {'errors': []}}\n\n    # Parse the code string into an abstract syntax tree (AST)\n    try:\n        tree = ast.parse(code)\n    except Exception as e:\n        errors['function']['errors'].append(str(e))\n        return errors\n\n    # Add a dummy type_ignores field to the AST\n    add_type_ignores()\n    tree.type_ignores = []\n\n    # Evaluate the import statements\n    for node in tree.body:\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                try:\n                    importlib.import_module(alias.name)\n                except ModuleNotFoundError as e:\n                    errors['imports']['errors'].append(str(e))\n\n    # Evaluate the function definition\n    for node in tree.body:\n        if isinstance(node, ast.FunctionDef):\n            code_obj = compile(ast.Module(body=[node], type_ignores=[]), '<string>', 'exec')\n            try:\n                exec(code_obj)\n            except Exception as e:\n                errors['function']['errors'].append(str(e))\n\n    # Return the errors dictionary\n    return errors\n\n\ndef eval_function(function_string: str):\n    # Create an empty dictionary to serve as a separate namespace\n    namespace: Dict = {}\n\n    # Execute the code string in the new namespace\n    exec(function_string, namespace)\n    function_object = next(\n        (\n            obj\n            for name, obj in namespace.items()\n            if isinstance(obj, FunctionType) and obj.__code__.co_filename == '<string>'\n        ),\n        None,\n    )\n    if function_object is None:\n        raise ValueError('Function string does not contain a function')\n    return function_object\n\n\ndef execute_function(code, function_name, *args, **kwargs):\n    add_type_ignores()\n\n    module = ast.parse(code)\n    exec_globals = globals().copy()\n\n    for node in module.body:\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                try:\n                    exec(\n                        f\"{alias.asname or alias.name} = importlib.import_module('{alias.name}')\",\n                        exec_globals,\n                        locals(),\n                    )\n                    exec_globals[alias.asname or alias.name] = importlib.import_module(alias.name)\n                except ModuleNotFoundError as e:\n                    raise ModuleNotFoundError(f'Module {alias.name} not found. Please install it and try again.') from e\n\n    function_code = next(\n        node for node in module.body if isinstance(node, ast.FunctionDef) and node.name == function_name\n    )\n    function_code.parent = None\n    code_obj = compile(ast.Module(body=[function_code], type_ignores=[]), '<string>', 'exec')\n    try:\n        exec(code_obj, exec_globals, locals())\n    except Exception as exc:\n        raise ValueError('Function string does not contain a function') from exc\n\n    # Add the function to the exec_globals dictionary\n    exec_globals[function_name] = locals()[function_name]\n\n    return exec_globals[function_name](*args, **kwargs)\n\n\ndef create_function(code, function_name):\n    if not hasattr(ast, 'TypeIgnore'):\n\n        class TypeIgnore(ast.AST):\n            _fields = ()\n\n        ast.TypeIgnore = TypeIgnore\n\n    module = ast.parse(code)\n    exec_globals = globals().copy()\n\n    for node in module.body:\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                try:\n                    exec_globals[alias.asname or alias.name] = importlib.import_module(alias.name)\n                except ModuleNotFoundError as e:\n                    raise ModuleNotFoundError(f'Module {alias.name} not found. Please install it and try again.') from e\n\n    function_code = next(\n        node for node in module.body if isinstance(node, ast.FunctionDef) and node.name == function_name\n    )\n    function_code.parent = None\n    code_obj = compile(ast.Module(body=[function_code], type_ignores=[]), '<string>', 'exec')\n    with contextlib.suppress(Exception):\n        exec(code_obj, exec_globals, locals())\n    exec_globals[function_name] = locals()[function_name]\n\n    # Return a function that imports necessary modules and calls the target function\n    def wrapped_function(*args, **kwargs):\n        for module_name, module in exec_globals.items():\n            if isinstance(module, type(importlib)):\n                globals()[module_name] = module\n\n        return exec_globals[function_name](*args, **kwargs)\n\n    return wrapped_function\n\n\ndef create_class(code, class_name):\n    \"\"\"\n    Dynamically create a class from a string of code and a specified class name.\n\n    :param code: String containing the Python code defining the class\n    :param class_name: Name of the class to be created\n    :return: A function that, when called, returns an instance of the created class\n    \"\"\"\n    if not hasattr(ast, 'TypeIgnore'):\n        ast.TypeIgnore = create_type_ignore_class()\n\n    module = ast.parse(code)\n    exec_globals = prepare_global_scope(code, module)\n\n    class_code = extract_class_code(module, class_name)\n    compiled_class = compile_class_code(class_code)\n\n    return build_class_constructor(compiled_class, exec_globals, class_name)\n\n\ndef create_type_ignore_class():\n    \"\"\"\n    Create a TypeIgnore class for AST module if it doesn't exist.\n\n    :return: TypeIgnore class\n    \"\"\"\n\n    class TypeIgnore(ast.AST):\n        _fields = ()\n\n    return TypeIgnore\n\n\ndef prepare_global_scope(code, module):\n    \"\"\"\n    Prepares the global scope with necessary imports from the provided code module.\n\n    :param module: AST parsed module\n    :return: Dictionary representing the global scope with imported modules\n    \"\"\"\n    exec_globals = globals().copy()\n    exec_globals.update(get_default_imports(code))\n    for node in module.body:\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                try:\n                    exec_globals[alias.asname or alias.name] = importlib.import_module(alias.name)\n                except ModuleNotFoundError as e:\n                    raise ModuleNotFoundError(f'Module {alias.name} not found. Please install it and try again.') from e\n        elif isinstance(node, ast.ImportFrom) and node.module is not None:\n            try:\n                imported_module = importlib.import_module(node.module)\n                for alias in node.names:\n                    exec_globals[alias.name] = getattr(imported_module, alias.name)\n            except ModuleNotFoundError as e:\n                raise ModuleNotFoundError(f'Module {node.module} not found. Please install it and try again.') from e\n    return exec_globals\n\n\ndef extract_class_code(module, class_name):\n    \"\"\"\n    Extracts the AST node for the specified class from the module.\n\n    :param module: AST parsed module\n    :param class_name: Name of the class to extract\n    :return: AST node of the specified class\n    \"\"\"\n    class_code = next(node for node in module.body if isinstance(node, ast.ClassDef) and node.name == class_name)\n\n    class_code.parent = None\n    return class_code\n\n\ndef compile_class_code(class_code):\n    \"\"\"\n    Compiles the AST node of a class into a code object.\n\n    :param class_code: AST node of the class\n    :return: Compiled code object of the class\n    \"\"\"\n    code_obj = compile(ast.Module(body=[class_code], type_ignores=[]), '<string>', 'exec')\n    return code_obj\n\n\ndef build_class_constructor(compiled_class, exec_globals, class_name):\n    \"\"\"\n    Builds a constructor function for the dynamically created class.\n\n    :param compiled_class: Compiled code object of the class\n    :param exec_globals: Global scope with necessary imports\n    :param class_name: Name of the class\n    :return: Constructor function for the class\n    \"\"\"\n\n    exec(compiled_class, exec_globals, locals())\n    exec_globals[class_name] = locals()[class_name]\n\n    # Return a function that imports necessary modules and creates an instance of the target class\n    def build_custom_class(*args, **kwargs):\n        for module_name, module in exec_globals.items():\n            if isinstance(module, type(importlib)):\n                globals()[module_name] = module\n\n        instance = exec_globals[class_name](*args, **kwargs)\n        return instance\n\n    build_custom_class.__globals__.update(exec_globals)\n    return build_custom_class\n\n\ndef get_default_imports(code_string):\n    \"\"\"\n    Returns a dictionary of default imports for the dynamic class constructor.\n    \"\"\"\n\n    default_imports = {\n        'Optional': Optional,\n        'List': List,\n        'Dict': Dict,\n        'Union': Union,\n    }\n    langflow_imports = list(CUSTOM_COMPONENT_SUPPORTED_TYPES.keys())\n    necessary_imports = find_names_in_code(code_string, langflow_imports)\n    langflow_module = importlib.import_module('bisheng.field_typing')\n    default_imports.update({name: getattr(langflow_module, name) for name in necessary_imports})\n\n    return default_imports\n\n\ndef find_names_in_code(code, names):\n    \"\"\"\n    Finds if any of the specified names are present in the given code string.\n\n    :param code: The source code as a string.\n    :param names: A list of names to check for in the code.\n    :return: A set of names that are found in the code.\n    \"\"\"\n    found_names = {name for name in names if name in code}\n    return found_names\n\n\ndef extract_function_name(code):\n    module = ast.parse(code)\n    for node in module.body:\n        if isinstance(node, ast.FunctionDef):\n            return node.name\n    raise ValueError('No function definition found in the code string')\n\n\ndef extract_class_name(code):\n    module = ast.parse(code)\n    for node in module.body:\n        if isinstance(node, ast.ClassDef):\n            return node.name\n    raise ValueError('No class definition found in the code string')\n"
  },
  {
    "path": "src/backend/bisheng/worker/README.md",
    "content": "# 毕昇异步任务模块\n"
  },
  {
    "path": "src/backend/bisheng/worker/__init__.py",
    "content": "# register tasks\nfrom bisheng.worker.knowledge.file_worker import file_copy_celery, parse_knowledge_file_celery, \\\n    retry_knowledge_file_celery\nfrom bisheng.worker.knowledge.rebuild_knowledge_worker import rebuild_knowledge_celery\nfrom bisheng.worker.telemetry.mid_table import sync_mid_user_increment, sync_mid_knowledge_increment, \\\n    sync_mid_app_increment, sync_mid_user_interact_dtl\nfrom bisheng.worker.test.test import add\nfrom bisheng.worker.workflow.tasks import execute_workflow, continue_workflow, stop_workflow\n"
  },
  {
    "path": "src/backend/bisheng/worker/config.py",
    "content": "from bisheng.common.services.config_service import settings\n\nbroker_url = settings.celery_redis_url\n\ntask_serializer = 'json'\nresult_serializer = 'json'\naccept_content = ['json']\ntimezone = 'Asia/Shanghai'\nenable_utc = False\ntask_routes = settings.celery_task.task_routers\n# redisHealth check interval, unit sec\nredis_backend_health_check_interval = 5\n\nbeat_schedule = settings.celery_task.beat_schedule\n"
  },
  {
    "path": "src/backend/bisheng/worker/knowledge/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/worker/knowledge/file_worker.py",
    "content": "import json\nfrom typing import List\n\nfrom loguru import logger\nfrom pymilvus import Collection, MilvusException\n\nfrom bisheng.api.services.knowledge_imp import decide_vectorstores, process_file_task, delete_knowledge_file_vectors, \\\n    KnowledgeUtils, delete_vector_files\nfrom bisheng.api.v1.schemas import FileProcessBase\nfrom bisheng.common.errcode.knowledge import KnowledgeFileFailedError\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao, KnowledgeTypeEnum, KnowledgeState\nfrom bisheng.knowledge.domain.models.knowledge_file import (\n    KnowledgeFile,\n    KnowledgeFileDao,\n    KnowledgeFileStatus,\n)\nfrom bisheng.utils import generate_uuid\nfrom bisheng.worker.main import bisheng_celery\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\n\n\n@bisheng_celery.task(acks_late=True)\ndef file_copy_celery(param: json) -> str:\n    \"\"\"Copy a Knowledge Base file to another Knowledge Base\n    1. mysqlCopy of\n    2. Copying Files\n    3. Replication of vectors\n    \"\"\"\n\n    source_knowledge_id = param.get(\"source_knowledge_id\")\n    target_id = param.get(\"target_id\")\n    login_user_id = param.get(\"login_user_id\")\n    logger.info(\n        \"file_copy_celery start source_id={} target_id={}\",\n        source_knowledge_id,\n        target_id,\n    )\n    page_size = 20\n    page_num = 1\n    source_knowledge = KnowledgeDao.query_by_id(source_knowledge_id)\n    target_knowledge = KnowledgeDao.query_by_id(target_id)\n\n    target_list: List[KnowledgeFile] = KnowledgeFileDao.get_file_by_condition(\n        target_id\n    )  # All files\n    if target_list:\n        target_list = [t.md5 for t in target_list]\n    while True:\n        if source_knowledge.type == KnowledgeTypeEnum.NORMAL.value:\n            files = KnowledgeFileDao.get_file_by_filters(\n                source_knowledge_id, page=page_num, page_size=page_size\n            )\n\n            if not files:\n                # No more documents Buatmilvus collection And es index\n                create_milvus_col_and_es_index(source_knowledge, target_knowledge)\n                break\n\n            for one in files:\n                if target_list and one.md5 in target_list:\n                    # Duplicate Tasks Prevent Duplicate Writes\n                    continue\n                try:\n                    copy_normal(\n                        one,\n                        source_knowledge,\n                        target_knowledge,\n                        login_user_id,\n                    )\n                except Exception as e:\n                    logger.error(f\"copy file error: {one.file_name} {e}\")\n        page_num += 1\n        if not files or len(files) < page_size:\n            break\n    # Recovery status\n    logger.info(\"file_copy_celery end\")\n    target_knowledge.state = 1\n    KnowledgeDao.update_state(knowledge_id=source_knowledge.id, state=KnowledgeState.PUBLISHED,\n                              update_time=source_knowledge.update_time)\n    KnowledgeDao.update_one(target_knowledge)\n    return \"copy task done\"\n\n\ndef copy_normal(\n        one: KnowledgeFile,\n        source_knowledge: Knowledge,\n        target_knowledge: Knowledge,\n        op_user_id: int,\n):\n    one_dict = one.model_dump()\n    one_dict.pop(\"id\")\n    one_dict.pop(\"update_time\")\n    one_dict[\"user_id\"] = op_user_id\n    one_dict[\"knowledge_id\"] = target_knowledge.id\n    one_dict[\"status\"] = KnowledgeFileStatus.PROCESSING.value\n\n    source_file_pdf = one.id\n    source_file = one.object_name\n    source_file_ext = one.object_name.split('.')[-1]\n    bbox_file = one.bbox_object_name\n\n    knowledge_new = KnowledgeFile(**one_dict)\n    knowledge_new = KnowledgeFileDao.add_file(knowledge_new)\n\n    # migrate file\n    try:\n        target_source_file = KnowledgeUtils.get_knowledge_file_object_name(knowledge_new.id, knowledge_new.file_name)\n\n        minio_client = get_minio_storage_sync()\n\n        # Copy source file\n        if minio_client.object_exists_sync(minio_client.bucket, source_file):\n            minio_client.copy_object_sync(source_bucket=minio_client.bucket, source_object=source_file,\n                                          dest_object=target_source_file, dest_bucket=minio_client.bucket)\n        knowledge_new.object_name = target_source_file\n\n        # Copy GeneratedpdfDoc.\n        if minio_client.object_exists_sync(minio_client.bucket, f\"{source_file_pdf}\"):\n            minio_client.copy_object_sync(source_bucket=minio_client.bucket, source_object=f\"{source_file_pdf}\",\n                                          dest_object=f\"{knowledge_new.id}\", dest_bucket=minio_client.bucket)\n\n        # Copies:bboxDoc.\n        if minio_client.object_exists_sync(object_name=bbox_file):\n            target_bbox_file = KnowledgeUtils.get_knowledge_bbox_file_object_name(knowledge_new.id)\n            minio_client.copy_object_sync(source_bucket=minio_client.bucket, source_object=bbox_file,\n                                          dest_object=target_bbox_file, dest_bucket=minio_client.bucket)\n            knowledge_new.bbox_object_name = target_bbox_file\n\n        preview_file = None\n        target_preview_file = None\n        # Copy preview file\n        if source_file_ext in ['doc', 'ppt', 'pptx']:\n            preview_file = KnowledgeUtils.get_knowledge_preview_file_object_name(one.id, one.file_name)\n            target_preview_file = KnowledgeUtils.get_knowledge_preview_file_object_name(knowledge_new.id,\n                                                                                        knowledge_new.file_name)\n        if preview_file and target_preview_file:\n            if minio_client.object_exists_sync(minio_client.bucket, preview_file):\n                minio_client.copy_object_sync(source_bucket=minio_client.bucket, source_object=preview_file,\n                                              dest_object=target_preview_file, dest_bucket=minio_client.bucket)\n\n    except Exception as e:\n        logger.exception(f\"copy_file_error file_id={knowledge_new.id}\")\n        knowledge_new.remark = KnowledgeFileFailedError(exception=e).to_json_str()\n        knowledge_new.status = KnowledgeFileStatus.FAILED.value\n        KnowledgeFileDao.update(knowledge_new)\n        return\n\n    # copy vector\n    try:\n        if one.status == KnowledgeFileStatus.SUCCESS.value:\n            copy_vector(source_knowledge, target_knowledge, one.id, knowledge_new.id)\n            knowledge_new.status = KnowledgeFileStatus.SUCCESS.value\n        else:\n            knowledge_new.status = one.status\n        KnowledgeFileDao.update(knowledge_new)\n    except Exception as e:\n        logger.exception(e)\n        logger.error(\"source={} new={} e={}\", one.id, knowledge_new.id, e)\n        knowledge_new.remark = KnowledgeFileFailedError(exception=e).to_json_str()\n        knowledge_new.status = KnowledgeFileStatus.FAILED.value\n        KnowledgeFileDao.update(knowledge_new)\n\n\ndef copy_vector(\n        source_konwledge: Knowledge,\n        target_knowledge: Knowledge,\n        source_file_id: int,\n        target_file_id: int,\n):\n    # migrate vectordb\n    embedding = FakeEmbedding()\n    source_col = source_konwledge.collection_name\n    source_milvus: Milvus = decide_vectorstores(source_col, \"Milvus\", embedding)\n    # Saat Inies Exclusion:vector\n    fields = [s.name for s in source_milvus.col.schema.fields if s.name != \"pk\"]\n    source_data = source_milvus.col.query(\n        expr=f\"document_id=={source_file_id} && knowledge_id=={source_konwledge.id}\",\n        output_fields=fields,\n    )\n    for data in source_data:\n        data[\"knowledge_id\"] = target_knowledge.id\n        data[\"document_id\"] = target_file_id\n    milvus_db: Milvus = decide_vectorstores(\n        target_knowledge.collection_name, \"Milvus\", embedding\n    )\n    # Create a new one for the first time collection\n    if milvus_db.col is None:\n        new_col = Collection(name=target_knowledge.collection_name, schema=source_milvus.col.schema,\n                             using=source_milvus.alias,\n                             consistency_level=source_milvus.consistency_level)\n        milvus_db: Milvus = decide_vectorstores(\n            target_knowledge.collection_name, \"Milvus\", embedding\n        )\n    if milvus_db:\n        insert_milvus(source_data, fields, milvus_db)\n\n    es_db = decide_vectorstores(\n        target_knowledge.index_name, \"ElasticKeywordsSearch\", embedding\n    )\n    if es_db:\n        insert_es(source_data, es_db)\n\n\ndef create_milvus_col_and_es_index(source_konwledge: Knowledge, target_knowledge: Knowledge):\n    embedding = FakeEmbedding()\n    source_col = source_konwledge.collection_name\n    source_milvus: Milvus = decide_vectorstores(source_col, \"Milvus\", embedding)\n    milvus_db: Milvus = decide_vectorstores(\n        target_knowledge.collection_name, \"Milvus\", embedding\n    )\n    if milvus_db.col is None and source_milvus.col is not None:\n        new_col = Collection(name=target_knowledge.collection_name, schema=source_milvus.col.schema,\n                             using=source_milvus.alias,\n                             consistency_level=source_milvus.consistency_level)\n        new_col.load()\n\n    # Buates index\n    es_db = decide_vectorstores(\n        target_knowledge.index_name, \"ElasticKeywordsSearch\", embedding\n    )\n\n    es_db.client.indices.create(index=target_knowledge.index_name, ignore=400)\n\n\ndef insert_milvus(li: List, fields: list, target: Milvus):\n    total_count = len(li)\n    batch_size = 1000\n    res_list = []\n    for i in range(0, total_count, batch_size):\n        # Grab end index\n        end = min(i + batch_size, total_count)\n        # Convert dict to list of lists batch for insertion\n        insert_list = [[data[x] for data in li[i:end]] for x in fields]\n        # Insert into the collection.\n        try:\n            res: Collection\n            res = target.col.insert(insert_list, timeout=100)\n            res_list.extend(res.primary_keys)\n        except MilvusException as e:\n            logger.error(\n                \"Failed to insert batch starting at entity: %s/%s\", i, total_count\n            )\n            raise e\n    logger.info(\"copy_done pk_size={}\", len(res_list))\n\n\ndef insert_es(li: List, target: ElasticKeywordsSearch):\n    from elasticsearch.helpers import bulk\n\n    res_list = []\n    ids = [generate_uuid() for _ in li]\n    requests = []\n    for i, data in enumerate(li):\n        text = data.pop(\"text\")\n        data.pop(\"vector\", \"\")  # es Exclusion:vector\n        metadata = data\n        request = {\n            \"_op_type\": \"index\",\n            \"_index\": target.index_name,\n            \"text\": text,\n            \"metadata\": metadata,\n            \"_id\": ids[i],\n        }\n        requests.append(request)\n    bulk(target.client, requests)\n\n    target.client.indices.refresh(index=target.index_name)\n    logger.info(\"copy_es_done pk_size={}\", len(res_list))\n\n\n@bisheng_celery.task(acks_late=True)\ndef parse_knowledge_file_celery(file_id: int, preview_cache_key: str = None, callback_url: str = None):\n    \"\"\" Asynchronously parse one incoming successful file \"\"\"\n    trace_id_var.set(f'parse_file_{file_id}')\n    logger.info(\n        f\"parse_knowledge_file_celery start preview_cache_key={preview_cache_key}, callback_url={callback_url}\")\n    try:\n        # After the warehousing is successful, it is judged whether the file information still exists, and if not, it is deleted.\n        _, knowledge = _parse_knowledge_file(file_id, preview_cache_key, callback_url)\n    except Exception as e:\n        logger.error(\"parse_knowledge_file_celery error: {}\", str(e))\n    finally:\n        db_file = KnowledgeFileDao.get_file_by_ids([file_id])\n        if not db_file:\n            logger.debug(f\"delete_knowledge_file_celery file_id={file_id}\")\n            # If it does not exist, it may have been deleted during the parsing process,\n            # and the data of the vector database needs to be deleted.\n            delete_vector_files([db_file[0].id], knowledge)\n\n\ndef _parse_knowledge_file(file_id: int, preview_cache_key: str = None, callback_url: str = None):\n    db_file = KnowledgeFileDao.get_file_by_ids([file_id])\n    if not db_file:\n        logger.error(\"file_id={} not found in db\", file_id)\n        return\n    db_file = db_file[0]\n    if db_file.status not in [KnowledgeFileStatus.PROCESSING.value, KnowledgeFileStatus.WAITING.value]:\n        logger.error(\n            \"file_id={} status={} not processing, skip parse\",\n            file_id,\n            db_file.status,\n        )\n        return\n    db_knowledge = KnowledgeDao.query_by_id(db_file.knowledge_id)\n    if not db_knowledge:\n        logger.error(\"knowledge_id={} not found\", db_file.knowledge_id)\n        return\n    if db_file.status == KnowledgeFileStatus.WAITING.value:\n        db_file.status = KnowledgeFileStatus.PROCESSING.value\n        KnowledgeFileDao.update_file_status([db_file.id], KnowledgeFileStatus.PROCESSING)\n\n    # Get Splitting Rules\n    file_rule = FileProcessBase(**json.loads(db_file.split_rule))\n    logger.debug(\"parse_knowledge_file_celery_start\", file_id)\n    process_file_task(db_knowledge,\n                      db_files=[db_file],\n                      separator=file_rule.separator,\n                      separator_rule=file_rule.separator_rule,\n                      chunk_size=file_rule.chunk_size,\n                      chunk_overlap=file_rule.chunk_overlap,\n                      callback_url=callback_url,\n                      extra_metadata=db_file.user_metadata,\n                      preview_cache_keys=[preview_cache_key],\n                      retain_images=file_rule.retain_images,\n                      enable_formula=file_rule.enable_formula,\n                      force_ocr=file_rule.force_ocr,\n                      filter_page_header_footer=file_rule.filter_page_header_footer)\n    logger.debug(\"parse_knowledge_file_celery_over\", file_id)\n    return db_file, db_knowledge\n\n\n@bisheng_celery.task(acks_late=True)\ndef retry_knowledge_file_celery(file_id: int, preview_cache_key: str = None, callback_url: str = None):\n    \"\"\" Retry parsing a file that failed to enter the repository or has a different name \"\"\"\n    trace_id_var.set(f'retry_knowledge_file_{file_id}')\n    logger.info(\"retry_knowledge_file_celery start file_id={}\", file_id)\n    try:\n        delete_knowledge_file_vectors(\n            file_ids=[file_id], clear_minio=False\n        )\n    except Exception as e:\n        logger.exception(\"retry_knowledge_file_celery delete vectors error: {}\", str(e))\n        KnowledgeFileDao.update_file_status([file_id], KnowledgeFileStatus.FAILED,\n                                            KnowledgeFileFailedError(exception=e).to_json_str())\n        return\n    try:\n        _parse_knowledge_file(file_id, preview_cache_key, callback_url)\n    except Exception as e:\n        logger.error(\"retry_knowledge_file_celery error: {}\", str(e))\n    finally:\n        db_file = KnowledgeFileDao.get_file_by_ids([file_id])\n        if not db_file:\n            logger.debug(f\"delete_knowledge_file_celery file_id={file_id}\")\n            # If it does not exist, it may have been deleted during the parsing process, and the data of the vector database needs to be deleted.\n            delete_vector_files([db_file[0].id], knowledge)\n\n\n@bisheng_celery.task()\ndef delete_knowledge_file_celery(file_ids: List[int], knowledge_id: int, clear_minio: bool = True):\n    \"\"\" Asynchronous deletion of knowledge files and their vectors \"\"\"\n    trace_id_var.set(f'delete_knowledge_file_{file_ids}')\n    logger.info(\"delete_knowledge_file_celery start file_ids={}\", file_ids)\n    try:\n        knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge:\n            logger.warning(f\"knowledge_id={knowledge_id} is deleted, skip delete file\")\n            return\n        delete_vector_files(file_ids, knowledge)\n    except Exception as e:\n        logger.error(\"delete_knowledge_file_celery error: {}\", str(e))\n"
  },
  {
    "path": "src/backend/bisheng/worker/knowledge/qa.py",
    "content": "from typing import List\n\nfrom loguru import logger\nfrom pymilvus import Collection\n\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.knowledge_imp import QA_save_knowledge, decide_vectorstores\nfrom bisheng.common.errcode.knowledge import KnowledgeFileFailedError\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.models.knowledge import KnowledgeDao, KnowledgeState\nfrom bisheng.knowledge.domain.models.knowledge_file import (\n    QAKnoweldgeDao, QAKnowledge, QAKnowledgeUpsert, QAStatus,\n)\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.worker.main import bisheng_celery\nfrom bisheng_langchain.vectorstores import Milvus, ElasticKeywordsSearch\n\n\n@bisheng_celery.task\ndef insert_qa_celery(qa_id: int):\n    \"\"\"\n    Insert a QA pair into the milvus and es.\n    \"\"\"\n    trace_id_var.set(f'insert_qa_{qa_id}')\n    qa_info = QAKnoweldgeDao.get_qa_knowledge_by_primary_id(qa_id)\n    if not qa_info:\n        logger.error(f\"QA with id {qa_id} not found.\")\n        return\n    knowledge_info = KnowledgeDao.query_by_id(qa_info.knowledge_id)\n    if not knowledge_info:\n        logger.error(f\"Knowledge with id {qa_info.knowledge_id} not found.\")\n        return\n    QA_save_knowledge(knowledge_info, qa_info)\n\n\n@bisheng_celery.task\ndef copy_qa_knowledge_celery(source_knowledge_id: int, target_knowledge_id: int, login_user_id: int):\n    \"\"\"\n    SalinQAkey learning points\n    :param login_user_id: Login userID\n    :param source_knowledge_id: Source Knowledge PointsID\n    :param target_knowledge_id: Target Knowledge PointsID\n    :return:\n    \"\"\"\n    trace_id_var.set(f'copy_qa_knowledge_{source_knowledge_id}_{target_knowledge_id}')\n\n    try:\n        source_knowledge = KnowledgeDao.query_by_id(source_knowledge_id)\n\n        target_knowledge = KnowledgeDao.query_by_id(target_knowledge_id)\n\n        qa_count = QAKnoweldgeDao.count_by_id(source_knowledge_id)\n\n        if qa_count == 0:\n            logger.info(f\"No QA knowledge to copy from knowledge id {source_knowledge_id}.\")\n            return\n\n        source_milvus: Milvus = decide_vectorstores(source_knowledge.collection_name, \"Milvus\", FakeEmbedding())\n\n        # create new collection name for target knowledge\n        new_col = Collection(name=target_knowledge.collection_name, schema=source_milvus.col.schema,\n                             using=source_milvus.alias,\n                             consistency_level=source_milvus.consistency_level)\n\n        target_milvus: Milvus = decide_vectorstores(target_knowledge.collection_name, \"Milvus\", FakeEmbedding())\n\n        # Batched SalinQAkey learning points Start from the first page\n        batch_size = 100\n        for page in range((qa_count + batch_size - 1) // batch_size):\n            page += 1\n            qa_list: List[QAKnowledge] = QAKnoweldgeDao.get_qa_knowledge_by_knowledge_id(\n                knowledge_id=source_knowledge_id,\n                page=page,\n                page_size=batch_size\n            )\n            try:\n\n                # SalinQAkey learning points Batch Insert\n                new_qa_list = []\n                for qa in qa_list:\n                    qa_dict = qa.model_dump()\n                    qa_dict.pop(\"id\")\n                    qa_dict.pop(\"create_time\")\n                    qa_dict.pop(\"update_time\")\n                    qa_dict[\"user_id\"] = login_user_id\n                    qa_dict[\"knowledge_id\"] = target_knowledge_id\n                    new_qa = QAKnowledgeUpsert(**qa_dict)\n                    new_qa_list.append(new_qa)\n\n                result = QAKnoweldgeDao.batch_insert_qa(new_qa_list)\n\n                id_mapping = {qa_list[i].id: result[i].id for i in range(len(qa_list))}\n\n                # Copy Vector\n                source_ids = [int(qa.id) for qa in qa_list if qa.status == QAStatus.ENABLED.value]\n                fields = [s.name for s in source_milvus.col.schema.fields if s.name != \"pk\"]\n                vectors = source_milvus.col.query(\n                    expr=f\"file_id in {source_ids} && knowledge_id == '{source_knowledge_id}'\",\n                    output_fields=fields)\n\n                for vector in vectors:\n                    vector[\"file_id\"] = id_mapping[vector[\"file_id\"]]\n                    vector[\"knowledge_id\"] = str(target_knowledge_id)\n                    vector.pop(\"pk\")\n\n                if vectors.__len__() != 0:\n                    target_milvus.col.insert(vectors)\n\n                logger.info(f\"Copied {len(qa_list)} QA knowledge from knowledge id {source_knowledge_id} \"\n                            f\"to knowledge id {target_knowledge_id}.\")\n\n                # es Salin\n                es_db = decide_vectorstores(\n                    target_knowledge.index_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n                )\n\n                es_texts = []\n                es_metadatas = []\n                for vector in vectors:\n                    text = vector.pop(\"text\")\n                    vector.pop(\"vector\")\n                    es_texts.append(text)\n                    es_metadatas.append(vector)\n\n                if es_texts.__len__() != 0:\n                    es_db.add_texts(es_texts, es_metadatas)\n\n                logger.info(\n                    f\"Updated status to SUCCESS for copied QA knowledge in knowledge id {target_knowledge_id}.\")\n\n                logger.info(f\"Finished copying batch {page + 1} of QA knowledge.\")\n            except Exception as e:\n                logger.error(f\"Error copying batch {page + 1} of QA knowledge: {e}\")\n\n                QAKnoweldgeDao.batch_update_status_by_ids(\n                    qa_ids=[new_qa.id for new_qa in result],\n                    status=QAStatus.FAILED,\n                    remark=KnowledgeFileFailedError(exception=e).to_json_str()\n                )\n\n        # All copied Update statuses\n\n        target_knowledge.state = KnowledgeState.PUBLISHED.value\n        KnowledgeDao.update_state(knowledge_id=source_knowledge.id, state=KnowledgeState.PUBLISHED,\n                                  update_time=source_knowledge.update_time)\n        KnowledgeDao.update_one(target_knowledge)\n\n        logger.info(f\"Finished copying all QA knowledge from knowledge id {source_knowledge_id} \"\n                    f\"to knowledge id {target_knowledge_id}.\")\n    except Exception as e:\n        logger.error(f\"Error copying QA knowledge from knowledge id {source_knowledge_id} \"\n                     f\"to knowledge id {target_knowledge_id}: {e}\")\n\n        KnowledgeDao.update_state(knowledge_id=target_knowledge_id, state=KnowledgeState.FAILED)\n        KnowledgeDao.update_state(knowledge_id=source_knowledge.id, state=KnowledgeState.PUBLISHED)\n\n\n@bisheng_celery.task\ndef rebuild_qa_knowledge_celery(knowledge_id: int, embedding_model_id: int, invoke_user_id: int):\n    \"\"\"\n     RebuildQAThe knowledge base upon,Vector Storage\n    :param knowledge_id:\n    :param embedding_model_id:\n    :param invoke_user_id:\n    :return:\n    \"\"\"\n    trace_id_var.set(f'rebuild_qa_knowledge_{knowledge_id}')\n    knowledge_info = KnowledgeDao.query_by_id(knowledge_id)\n    try:\n        if not knowledge_info:\n            logger.error(f\"Knowledge with id {knowledge_id} not found.\")\n            return\n\n        # DeletemilvusCorresponding data in\n        KnowledgeService.delete_knowledge_file_in_vector(knowledge=knowledge_info, del_es=False)\n\n        es_db: ElasticKeywordsSearch = decide_vectorstores(\n            knowledge_info.index_name, \"ElasticKeywordsSearch\", FakeEmbedding()\n        )\n\n        # InquiryesAll data in Delete\n        es_result = es_db.client.search(body={\n            \"query\": {\n                \"term\": {\n                    \"metadata.knowledge_id\": str(knowledge_id)\n                }\n            }\n        }, filter_path=[\"hits.total.value\"])\n\n        total = es_result.get(\"hits\", {}).get(\"total\", {}).get(\"value\", 0)\n\n        logger.info(f\"Found {total} documents in Elasticsearch for knowledge id {knowledge_id}.\")\n\n        if total <= 0:\n            logger.info(f\"No documents to delete in Elasticsearch for knowledge id {knowledge_id}.\")\n            knowledge_info.state = KnowledgeState.PUBLISHED.value\n            return\n\n        embeddings = LLMService.get_bisheng_knowledge_embedding_sync(model_id=embedding_model_id,\n                                                                     invoke_user_id=invoke_user_id)\n        milvus_db: Milvus = decide_vectorstores(\n            knowledge_info.collection_name, \"Milvus\", embeddings\n        )\n\n        knowledge_info.state = KnowledgeState.PUBLISHED.value\n\n        # Batched RebuildQAThe knowledge base upon Start from the first page\n        batch_size = 100\n        for page in range((total + batch_size - 1) // batch_size):\n            page += 1\n            texts = []\n            metadatas = []\n\n            es_result = es_db.client.search(body={\n                \"query\": {\n                    \"term\": {\n                        \"metadata.knowledge_id\": str(knowledge_id)\n                    }\n                },\n                \"from\": (page - 1) * batch_size,\n                \"size\": batch_size\n            }, filter_path=[\"hits.hits._source\"])\n\n            hits = es_result.get(\"hits\", {}).get(\"hits\", [])\n\n            file_ids = [hit.get(\"_source\", {}).get(\"metadata\", {}).get(\"file_id\") for hit in hits]\n\n            try:\n\n                QAKnoweldgeDao.batch_update_status_by_ids(\n                    qa_ids=file_ids,\n                    status=QAStatus.PROCESSING\n                )\n\n                for hit in hits:\n                    source = hit.get(\"_source\", {})\n                    text = source.get(\"text\", \"\")\n                    metadata = source.get(\"metadata\", {})\n                    texts.append(text)\n                    metadata.pop(\"vector\", None)\n                    metadatas.append(metadata)\n\n                # Insertmilvus\n                milvus_db.add_texts(texts, metadatas)\n\n                QAKnoweldgeDao.batch_update_status_by_ids(\n                    qa_ids=file_ids,\n                    status=QAStatus.ENABLED\n                )\n\n                logger.info(f\"Rebuilt batch {page} of QA knowledge into Milvus for knowledge id {knowledge_id}.\")\n            except Exception as e:\n                logger.error(f\"Error rebuilding batch {page} of QA knowledge: {e}\")\n\n                QAKnoweldgeDao.batch_update_status_by_ids(\n                    qa_ids=file_ids,\n                    status=QAStatus.FAILED,\n                    remark=KnowledgeFileFailedError(exception=e).to_json_str()\n                )\n\n                knowledge_info.state = KnowledgeState.FAILED.value\n\n        logger.info(f\"Finished rebuilding QA knowledge for knowledge id {knowledge_id}.\")\n    except Exception as e:\n        logger.error(f\"Error rebuilding QA knowledge for knowledge id {knowledge_id}: {e}\")\n        # DeletemilvusCorresponding data in\n        KnowledgeService.delete_knowledge_file_in_vector(knowledge=knowledge_info, del_es=False)\n\n        knowledge_info.state = KnowledgeState.FAILED.value\n        QAKnoweldgeDao.update_status_by_knowledge_id(knowledge_id=knowledge_id, status=QAStatus.FAILED,\n                                                     remark=KnowledgeFileFailedError(exception=e).to_json_str())\n\n    finally:\n\n        if knowledge_info:\n            KnowledgeDao.update_one(knowledge_info)\n"
  },
  {
    "path": "src/backend/bisheng/worker/knowledge/rebuild_knowledge_worker.py",
    "content": "from typing import List\n\nfrom loguru import logger\n\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.knowledge_imp import (\n    decide_vectorstores\n)\nfrom bisheng.common.errcode.knowledge import KnowledgeFileFailedError\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, KnowledgeDao, KnowledgeState\nfrom bisheng.knowledge.domain.models.knowledge_file import (\n    KnowledgeFile,\n    KnowledgeFileDao,\n    KnowledgeFileStatus\n)\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.worker.main import bisheng_celery\n\n\n@bisheng_celery.task(acks_late=True)\ndef rebuild_knowledge_celery(knowledge_id: int, new_model_id: int, invoke_user_id: int) -> str:\n    \"\"\"\n    Asynchronous task to rebuild knowledge base\n    \n    Args:\n        knowledge_id: The knowledge base uponID\n        new_model_id: New.. embeddingModelsID\n        invoke_user_id: Call UserID\n        \n    Returns:\n        str: Task Execution Results\n    \"\"\"\n    trace_id_var.set(f'rebuild_knowledge_{knowledge_id}')\n    logger.info(f\"rebuild_knowledge_celery start knowledge_id={knowledge_id} new_model_id={new_model_id}\")\n    try:\n        # Get Knowledge Base Information\n        knowledge = KnowledgeDao.query_by_id(knowledge_id)\n        if not knowledge:\n            logger.error(f\"knowledge_id={knowledge_id} not found\")\n            return f\"knowledge {knowledge_id} not found\"\n\n        # 1. according knowledge_id Found knowledgefile All in the tablestatus=2Andstatus=4File, put thestatusto4\n        files = KnowledgeFileDao.get_files_by_multiple_status(\n            knowledge_id,\n            [KnowledgeFileStatus.SUCCESS.value, KnowledgeFileStatus.REBUILDING.value]\n        )\n        # 2. According to thecollection_namewentmilvusDelete Vector Store in\n        KnowledgeService.delete_knowledge_file_in_vector(knowledge=knowledge, del_es=False)\n\n        if not files:\n            logger.info(f\"knowledge_id={knowledge_id} has no success files\")\n            # Directly update knowledge base status to success\n            knowledge.state = KnowledgeState.PUBLISHED.value\n            KnowledgeDao.update_one(knowledge)\n            return f\"knowledge {knowledge_id} rebuild completed (no files)\"\n\n        # Updating file status to rebuild in progress\n        file_ids = [f.id for f in files]\n        KnowledgeFileDao.update_status_bulk(file_ids, KnowledgeFileStatus.REBUILDING)\n\n        logger.info(f\"Updated {len(files)} files to rebuilding status\")\n\n        # 3. accordingindex_nameFROMesGot it inchunkinformation, reembeddingInsertmilvus\n        success_files, failed_files = _rebuild_embeddings(knowledge, files, new_model_id, invoke_user_id)\n\n        # 4. Update file status\n        KnowledgeFileDao.update_status_bulk(success_files, KnowledgeFileStatus.SUCCESS)\n\n        for file_id in failed_files:\n            file = next((f for f in files if f.id == file_id), None)\n            if file:\n                file.status = KnowledgeFileStatus.FAILED.value\n                file.remark = KnowledgeFileFailedError(data={\"exception\": \"rebuild error\"}).to_json_str()\n                KnowledgeFileDao.update(file)\n\n        # 5. Update knowledge base status\n        if failed_files:\n\n            # DeleteesIndex andmilvusCollections to avoid data inconsistencies\n            _delete_es_files(knowledge, failed_files)\n\n            knowledge.state = KnowledgeState.FAILED.value\n            logger.error(f\"knowledge_id={knowledge_id} rebuild failed, failed_files={failed_files}\")\n        else:\n            knowledge.state = KnowledgeState.PUBLISHED.value\n            logger.info(f\"knowledge_id={knowledge_id} rebuild completed successfully\")\n\n        KnowledgeDao.update_one(knowledge)\n\n        return f\"knowledge {knowledge_id} rebuild completed\"\n\n    except Exception as e:\n        logger.exception(f\"rebuild_knowledge_celery error: {str(e)}\")\n        # Unexpected handles during asynchronous tasksknowledgeSet to4\n        try:\n            knowledge = KnowledgeDao.query_by_id(knowledge_id)\n            if knowledge:\n                knowledge.state = KnowledgeState.FAILED.value\n                KnowledgeDao.update_one(knowledge)\n        except Exception as e2:\n            logger.exception(f\"Failed to update knowledge state after error: {str(e2)}\")\n\n        raise e\n\n\ndef _delete_es_files(knowledge: Knowledge, file_ids: List[int]):\n    \"\"\"DeleteESFile data in\"\"\"\n    try:\n        index_name = knowledge.index_name or knowledge.collection_name\n        embeddings = FakeEmbedding()\n        es_client = decide_vectorstores(index_name, \"ElasticKeywordsSearch\", embeddings)\n\n        if not es_client.client.indices.exists(index=index_name):\n            logger.warning(f\"ES index {index_name} does not exist, skipping deletion\")\n            return\n\n        for file_id in file_ids:\n            delete_query = {\n                \"query\": {\n                    \"match\": {\n                        \"metadata.document_id\": file_id\n                    }\n                }\n            }\n            response = es_client.client.delete_by_query(index=index_name, body=delete_query)\n            deleted = response.get(\"deleted\", 0)\n            logger.info(f\"Deleted {deleted} documents from ES for file_id={file_id}\")\n\n    except Exception as e:\n        logger.exception(f\"Failed to delete ES files for knowledge_id={knowledge.id}: {str(e)}\")\n\n\ndef _rebuild_embeddings(knowledge: Knowledge, files: List[KnowledgeFile], new_model_id: int, invoke_user_id: int) -> \\\n        tuple[List[int], List[int]]:\n    \"\"\"\n    Rebuildembeddings\n\n    Returns:\n        tuple: (Success FilesIDVertical, Failed FilesIDVertical)\n    \"\"\"\n    success_files = []\n    failed_files = []\n    vector_client = None\n\n    try:\n        # DapatkanEShitting the nail on the headchunkMessage\n        index_name = knowledge.index_name or knowledge.collection_name\n        embeddings = FakeEmbedding()\n        es_client = decide_vectorstores(index_name, \"ElasticKeywordsSearch\", embeddings)\n\n        # Get newembeddingModel and createMilvusClient\n        logger.info(f\"[DEBUG] Begin initializing newembeddingModelsmodel_id={new_model_id}\")\n        new_embeddings = LLMService.get_bisheng_knowledge_embedding_sync(model_id=new_model_id,\n                                                                         invoke_user_id=invoke_user_id)\n        logger.info(\n            f\"[DEBUG] Slider Created Successfully.embeddingModel Instance: {type(new_embeddings).__name__}, model_id={getattr(new_embeddings, 'model_id', 'unknown')}\")\n\n        # TestembeddingIs the model available\n        try:\n            test_result = new_embeddings.embed_query(\"Test text\")\n            logger.info(\n                f\"[DEBUG] EmbeddingModel tested successfully, dimension returned: {len(test_result) if test_result else 'None'}\")\n        except Exception as e:\n            logger.error(f\"[DEBUG] EmbeddingModel Test Failed: {str(e)}\")\n            # Model test failure should terminate the entire process, not continue\n            raise Exception(f\"EmbeddingModel not available: {str(e)}\")\n\n        vector_client = decide_vectorstores(knowledge.collection_name, \"Milvus\", new_embeddings)\n        logger.info(f\"[DEBUG] Slider Created Successfully.MilvusClientcollection_name={knowledge.collection_name}\")\n\n        # OthersESWhether the index is present (check in advance, avoid double-checking in the loop)\n        if not es_client.client.indices.exists(index=index_name):\n            logger.error(f\"ES index {index_name} does not exist\")\n            # Index does not exist, all files failed\n            failed_files = [f.id for f in files]\n            return success_files, failed_files\n\n        # Regenerate for each fileembeddings\n        for file in files:\n            try:\n                success = _process_single_file(file, es_client, index_name, vector_client)\n                if success:\n                    success_files.append(file.id)\n                    logger.info(f\"Successfully rebuilt embeddings for file_id={file.id}\")\n                else:\n                    failed_files.append(file.id)\n            except Exception as e:\n                logger.exception(f\"Failed to rebuild embeddings for file_id={file.id}: {str(e)}\")\n                failed_files.append(file.id)\n\n    except Exception as e:\n        logger.exception(f\"Failed to rebuild embeddings: {str(e)}\")\n        # If the entire process fails, all unsuccessful files are marked as failed\n        failed_files.extend([f.id for f in files if f.id not in success_files])\n\n    return success_files, failed_files\n\n\ndef _process_single_file(file, es_client, index_name, vector_client):\n    \"\"\"Processing of individual filesembeddingRebuild\"\"\"\n    logger.info(f\"Rebuilding embeddings for file_id={file.id}\")\n\n    # FROMESGet all of this file inchunks\n    search_query = {\n        \"query\": {\n            \"match\": {\n                \"metadata.document_id\": file.id\n            }\n        },\n        \"size\": 10000\n    }\n\n    logger.debug(f\"ES search query: {search_query}\")\n\n    response = es_client.client.search(index=index_name, body=search_query)\n    chunks = response.get(\"hits\", {}).get(\"hits\", [])\n\n    logger.info(f\"Found {len(chunks)} chunks in ES for file_id={file.id}\")\n\n    if not chunks:\n        logger.warning(f\"No chunks found for file_id={file.id}\")\n        return True  # No data to process, considered a success\n\n    # Extract text and metadata\n    texts = []\n    metadatas = []\n    for chunk in chunks:\n        source = chunk[\"_source\"]\n        texts.append(source[\"text\"])\n        # Removepkfields, avoid insertingMilvusTime Conflict\n        if \"pk\" in source[\"metadata\"]:\n            del source[\"metadata\"][\"pk\"]\n\n        metadatas.append(source[\"metadata\"])\n\n    logger.info(f\"Found {len(texts)} chunks for file_id={file.id}\")\n\n    # Insert data intoMilvus\n    logger.info(f\"[DEBUG] Upcoming Callsvector_client.add_texts，textsQuantity={len(texts)}\")\n    logger.info(f\"[DEBUG] First text example: {texts[0][:100] if texts else 'No texts'}...\")\n\n    try:\n        vector_client.add_texts(texts=texts, metadatas=metadatas)\n        logger.info(f\"[DEBUG] vector_client.add_textsCall successful\")\n        return True\n    except Exception as add_error:\n        logger.error(f\"[DEBUG] vector_client.add_textsCall failed: {str(add_error)}\")\n        raise add_error\n"
  },
  {
    "path": "src/backend/bisheng/worker/main.py",
    "content": "import threading\nimport time\nfrom typing import List\n\nfrom celery import Celery\nfrom celery.signals import celeryd_after_setup, worker_shutting_down\nfrom loguru import logger\n\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.logger import set_logger_config\n\n\ndef create_celery_app():\n    \"\"\"\n    Celery Asynchronous Tasks\n    :return:\n    \"\"\"\n    set_logger_config(settings.logger_conf)\n    # loop = app_ctx.get_event_loop()\n    bisheng_celery = Celery('bisheng', include=['bisheng.worker'])\n    bisheng_celery.config_from_object('bisheng.worker.config')\n    return bisheng_celery\n\n\n_WORKER_START = False\n_WORKER_BEAT_SLEEP = 5  # seconds\nWORKER_ALIVE_KEY = \"celery_worker_alive_queues\"\n\nbisheng_celery = create_celery_app()\n\n\ndef worker_alive_beat(all_queues: List[str]):\n    \"\"\"Worker heartbeat function.\"\"\"\n    logger.debug(f\"Worker heartbeat function: {all_queues}\")\n    while _WORKER_START:\n        try:\n            # upload worker alive timestamp to redis\n            current_timestamp = str(int(time.time()))\n            redis_client = get_redis_client_sync()\n            redis_client.hset(WORKER_ALIVE_KEY, mapping={one: current_timestamp for one in all_queues})\n            time.sleep(_WORKER_BEAT_SLEEP)\n        except Exception as e:\n            logger.error(f\"Error in worker alive beat: {e}\")\n            time.sleep(_WORKER_BEAT_SLEEP * 2)\n            continue\n    logger.debug('Worker alive beat stopped.')\n\n\n@celeryd_after_setup.connect\ndef on_worker_init(*args, **kwargs):\n    global _WORKER_START\n    \"\"\"Worker initialization signal handler.\"\"\"\n    queues = bisheng_celery.amqp.queues\n    all_queues = []\n    for queue_name, _ in queues.items():\n        all_queues.append(queue_name)\n    _WORKER_START = True\n    t = threading.Thread(target=worker_alive_beat, args=(all_queues,), daemon=True)\n    t.start()\n    logger.debug(\"Celery worker alive beat started.\")\n\n\n@worker_shutting_down.connect\ndef on_worker_shutdown(*args, **kwargs):\n    logger.debug(\"Celery worker shutting down.\")\n    global _WORKER_START\n    _WORKER_START = False\n"
  },
  {
    "path": "src/backend/bisheng/worker/telemetry/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/worker/telemetry/mid_table.py",
    "content": "from datetime import datetime, timedelta\nfrom typing import List\n\nfrom loguru import logger\n\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.schemas.telemetry.base_telemetry_schema import UserGroupInfo, UserRoleInfo\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowType\nfrom bisheng.knowledge.domain.services.knowledge_service import KnowledgeService\nfrom bisheng.telemetry.domain.mid_table.app_increment import AppIncrement, AppIncrementRecord\nfrom bisheng.telemetry.domain.mid_table.base import BaseMidTable\nfrom bisheng.telemetry.domain.mid_table.knowledge_increment import KnowledgeIncrement, KnowledgeIncrementRecord\nfrom bisheng.telemetry.domain.mid_table.user_increment import UserIncrement, UserIncrementRecord\nfrom bisheng.telemetry.domain.mid_table.user_interact import UserInteract, UserInteractRecord\nfrom bisheng.user.domain.services.user import UserService\nfrom bisheng.utils import generate_uuid\nfrom bisheng.worker.main import bisheng_celery\n\n\ndef get_yesterday_date_range(mid_table: BaseMidTable, start_date: str = None, end_date: str = None) -> (datetime,\n                                                                                                        datetime):\n    if start_date is None or end_date is None:\n        # default to yesterday's date\n        now = datetime.now()\n        yesterday = now - timedelta(days=1)\n        start_date = datetime(year=yesterday.year, month=yesterday.month, day=yesterday.day, hour=0, minute=0, second=0)\n        end_date = datetime(year=now.year, month=now.month, day=now.day, hour=0, minute=0, second=0)\n    else:\n        start_date = datetime.fromisoformat(start_date)\n        end_date = datetime.fromisoformat(end_date)\n\n    lastest_time = mid_table.get_latest_record_time_sync()\n    if lastest_time:\n        start_date = datetime.fromtimestamp(lastest_time) + timedelta(seconds=1)\n    if end_date < start_date:\n        logger.error(f\"end_date {end_date} is before start_date {start_date}\")\n        return None, None\n    return start_date, end_date\n\n\ndef convert_flow_type(flow_type: int) -> ApplicationTypeEnum:\n    flow_type_mapping = {\n        FlowType.FLOW.value: ApplicationTypeEnum.SKILL,\n        FlowType.ASSISTANT.value: ApplicationTypeEnum.ASSISTANT,\n        FlowType.WORKFLOW.value: ApplicationTypeEnum.WORKFLOW,\n    }\n    return flow_type_mapping.get(flow_type, ApplicationTypeEnum.UNKNOWN)\n\n\n@bisheng_celery.task()\ndef sync_mid_user_increment(start_date: str = None, end_date: str = None):\n    trace_id_var.set(f\"sync_mid_user_increment_task_{generate_uuid()}\")\n    mid_table = UserIncrement()\n    start_date, end_date = get_yesterday_date_range(mid_table, start_date, end_date)\n    if start_date is None or end_date is None:\n        return\n\n    logger.info(f\"Syncing mid_user_increment from {start_date} to {end_date}\")\n    # Here would be the logic to fetch data from the source and insert into mid_user_increment\n    page, page_size = 1, 1000\n\n    while True:\n        user_list = UserService.get_user_all_info(start_time=start_date, end_time=end_date,\n                                                  page=page, page_size=page_size)\n        page += 1\n        if not user_list:\n            break\n        records = []\n        for user in user_list:\n            records.append(UserIncrementRecord(\n                es_id=f\"user_{user.user_id}\",\n                user_id=user.user_id,\n                user_name=user.user_name,\n                user_group_infos=[UserGroupInfo(user_group_id=group.id, user_group_name=group.group_name)\n                                  for group in user.groups],\n                user_role_infos=[UserRoleInfo(role_id=role.id, role_name=role.role_name, group_id=role.group_id)\n                                 for role in user.roles],\n                timestamp=int(user.create_time.timestamp())\n            ))\n        mid_table.insert_records_sync(records)\n\n    # This is a placeholder for the actual data synchronization logic\n    logger.info(f\"Successfully synced mid_user_increment from {start_date} to {end_date}\")\n\n\ndef get_user_from_ids_with_cache(user_ids: List[int], user_map: dict):\n    if user_ids:\n        user_list = UserService.get_user_all_info(user_ids=user_ids, page=0, page_size=0)\n        user_map.update({user.user_id: user for user in user_list})\n    return user_map\n\n\n@bisheng_celery.task()\ndef sync_mid_app_increment(start_date: str = None, end_date: str = None):\n    # Placeholder for syncing mid_app_increment table\n    trace_id_var.set(f\"sync_mid_app_increment_task_{generate_uuid()}\")\n    logger.info(\"Syncing mid_app_increment table...\")\n\n    mid_table = AppIncrement()\n    start_date, end_date = get_yesterday_date_range(mid_table, start_date, end_date)\n    if start_date is None or end_date is None:\n        return\n\n    logger.info(f\"Syncing mid_app_increment from {start_date} to {end_date}\")\n\n    page, page_size = 1, 1000\n    user_map = {}\n    while True:\n        app_list = WorkFlowService.get_all_apps_by_time_range_sync(start_time=start_date, end_time=end_date, page=page,\n                                                                   page_size=page_size)\n        page += 1\n        if not app_list:\n            break\n        records = []\n        user_ids = set()\n        for app in app_list:\n            if app['user_id'] not in user_map:\n                user_ids.add(app['user_id'])\n        user_map = get_user_from_ids_with_cache(list(user_ids), user_map)\n\n        for app in app_list:\n            user = user_map.get(app['user_id'], None)\n            records.append(AppIncrementRecord(\n                es_id=f\"app_{app['id']}\",\n                user_id=app['user_id'],\n                user_name=user.user_name if user else \"\",\n                user_group_infos=[UserGroupInfo(user_group_id=group.id, user_group_name=group.group_name)\n                                  for group in user.groups] if user else [],\n                user_role_infos=[UserRoleInfo(role_id=role.id, role_name=role.role_name, group_id=role.group_id)\n                                 for role in user.roles] if user else [],\n                app_id=app['id'],\n                app_name=app['name'],\n                app_type=convert_flow_type(app['flow_type']),\n                timestamp=int(app['create_time'].timestamp())\n            ))\n        mid_table.insert_records_sync(records)\n\n    # Implement the actual logic here\n    logger.info(\"Successfully synced mid_app_increment table.\")\n\n\n@bisheng_celery.task()\ndef sync_mid_knowledge_increment(start_date: str = None, end_date: str = None):\n    # Placeholder for syncing mid_knowledge_increment table\n    trace_id_var.set(f\"sync_mid_knowledge_increment_task_{generate_uuid()}\")\n    logger.info(\"Syncing mid_knowledge_increment table...\")\n    mid_table = KnowledgeIncrement()\n    start_date, end_date = get_yesterday_date_range(mid_table, start_date, end_date)\n    if start_date is None or end_date is None:\n        return\n    logger.info(f\"Syncing mid_knowledge_increment from {start_date} to {end_date}\")\n\n    page, page_size = 1, 1000\n    user_map = {}\n    while True:\n        knowledge_list = KnowledgeService.get_all_knowledge_by_time_range(start_date, end_date, page=page,\n                                                                          page_size=page_size)\n        page += 1\n        if not knowledge_list:\n            break\n        user_ids = set()\n        for knowledge in knowledge_list:\n            if knowledge.user_id not in user_map:\n                user_ids.add(knowledge.user_id)\n        user_map = get_user_from_ids_with_cache(list(user_ids), user_map)\n\n        records = []\n        for knowledge in knowledge_list:\n            user = user_map.get(knowledge.user_id, None)\n            records.append(KnowledgeIncrementRecord(\n                es_id=f\"knowledge_{knowledge.id}\",\n                user_id=knowledge.user_id,\n                user_name=user.user_name if user else \"\",\n                user_group_infos=[UserGroupInfo(user_group_id=group.id, user_group_name=group.group_name)\n                                  for group in user.groups] if user else [],\n                user_role_infos=[UserRoleInfo(role_id=role.id, role_name=role.role_name, group_id=role.group_id)\n                                 for role in user.roles] if user else [],\n                knowledge_id=knowledge.id,\n                knowledge_name=knowledge.name,\n                knowledge_type=knowledge.type,\n                timestamp=int(knowledge.create_time.timestamp())\n            ))\n        mid_table.insert_records_sync(records)\n    # Implement the actual logic here\n    logger.info(\"Successfully synced mid_knowledge_increment table.\")\n\n\n@bisheng_celery.task()\ndef sync_mid_user_interact_dtl(start_date: str = None, end_date: str = None):\n    # Placeholder for syncing mid_user_interact_dtl table\n    trace_id_var.set(f\"sync_mid_user_interact_dtl_task_{generate_uuid()}\")\n    logger.info(\"Syncing mid_user_interact_dtl table...\")\n    mid_table = UserInteract()\n    start_date, end_date = get_yesterday_date_range(mid_table, start_date, end_date)\n    if start_date is None or end_date is None:\n        return\n\n    page, page_size = 1, 1000\n    while True:\n        result = mid_table.get_records_by_time_range_sync(start_time=int(start_date.timestamp()),\n                                                          end_time=int(end_date.timestamp()),\n                                                          page=page,\n                                                          page_size=page_size)\n        page += 1\n        if not result:\n            break\n        records = []\n        for record in result:\n            es_id = record['_id']\n            record = record['_source']\n            records.append(UserInteractRecord(\n                es_id=es_id,\n                user_id=record['user_context']['user_id'],\n                user_name=record['user_context']['user_name'],\n                user_group_infos=[UserGroupInfo(user_group_id=group['user_group_id'],\n                                                user_group_name=group['user_group_name'])\n                                  for group in record['user_context'].get('user_group_infos', [])],\n                user_role_infos=[UserRoleInfo(role_id=role['role_id'],\n                                              role_name=role['role_name'],\n                                              group_id=role.get('group_id', 0))\n                                 for role in record['user_context'].get('user_role_infos', [])],\n                event_id=record['event_id'],\n                timestamp=record['timestamp'],\n\n                message_id=record['event_data']['message_feedback_message_id'],\n                interact_type=record['event_data']['message_feedback_operation_type'],\n                app_id=record['event_data']['message_feedback_app_id'],\n                app_name=record['event_data']['message_feedback_app_name'],\n            ))\n        mid_table.insert_records_sync(records)\n    # Implement the actual logic here\n    logger.info(\"Successfully synced mid_user_interact_dtl table.\")\n"
  },
  {
    "path": "src/backend/bisheng/worker/test/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/worker/test/test.py",
    "content": "from loguru import logger\n\nfrom bisheng.worker.main import bisheng_celery\n\n\n@bisheng_celery.task\ndef add(x, y):\n    logger.info(f\"add {x} + {y}\")\n    return x + y\n"
  },
  {
    "path": "src/backend/bisheng/worker/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/worker/utils/stateful_worker.py",
    "content": "import asyncio\nimport time\nfrom typing import List, Dict\n\nfrom httpcore._synchronization import ThreadLock\nfrom loguru import logger\n\nfrom bisheng.core.cache.redis_manager import get_redis_client, get_redis_client_sync\nfrom bisheng.utils.consisten_hash import ConsistentHash\nfrom bisheng.worker.main import WORKER_ALIVE_KEY\n\n\nclass StatefulWorker:\n    def __init__(self,\n                 queue_prefix: str = \"workflow_celery\",\n                 bound_nodes_prefix: str = \"workflow_bound_nodes:\",\n                 **kwargs):\n        self.queue_prefix = queue_prefix\n        self.bound_nodes_prefix = bound_nodes_prefix\n\n        self.alive_times = kwargs.get(\"alive_time\", 20)  # how much seconds to consider a worker alive\n        self.consistent_hash = ConsistentHash(virtual_replicas=kwargs.get(\"virtual_replicas\", 10))\n        self.sync_timestamp = 0\n        self.sync_timestamp_sleep = 5  # seconds\n        self.thread_lock = ThreadLock()\n        self.async_lock = asyncio.Lock()\n\n    def _base_update_alive_nodes(self, alive_nodes: List[str]):\n        consistent_nodes = self.consistent_hash.get_all_nodes()\n        add_nodes = set(alive_nodes) - set(consistent_nodes)\n        remove_nodes = set(consistent_nodes) - set(alive_nodes)\n        for node in add_nodes:\n            self.consistent_hash.add_node(node)\n        for node in remove_nodes:\n            self.consistent_hash.remove_node(node)\n        logger.debug(f'Worker alive nodes updated: {self.consistent_hash.get_all_nodes()}')\n\n    async def update_alive_nodes(self):\n        async with self.async_lock:\n            current_time = time.time()\n            if current_time - self.sync_timestamp < self.alive_times:\n                return\n            alive_nodes = await self.get_all_alive_queues()\n            self._base_update_alive_nodes(alive_nodes)\n\n    def update_alive_nodes_sync(self):\n        with self.thread_lock:\n            current_time = time.time()\n            if current_time - self.sync_timestamp < self.alive_times:\n                return\n            alive_nodes = self.get_all_alive_queues_sync()\n            self._base_update_alive_nodes(alive_nodes)\n\n    def _base_get_all_alive_queues(self, all_queues: Dict[bytes, bytes]) -> (List[str], List[str]):\n        if not all_queues:\n            return [], []\n        current_timestamp = int(time.time())\n        alive_queues = []\n        need_remove_queues = []\n        for queue_name, queue_timestamp in all_queues.items():\n            queue_name = queue_name.decode() if isinstance(queue_name, bytes) else queue_name\n            queue_timestamp = queue_timestamp.decode() if isinstance(queue_timestamp, bytes) else queue_timestamp\n            if not queue_name.startswith(self.queue_prefix):\n                continue\n            if current_timestamp - int(queue_timestamp) < self.alive_times:\n                alive_queues.append(queue_name)\n            else:\n                need_remove_queues.append(queue_name)\n        return alive_queues, need_remove_queues\n\n    async def get_all_alive_queues(self) -> List[str]:\n        redis_client = await get_redis_client()\n        all_queues = await redis_client.ahgetall(WORKER_ALIVE_KEY)\n        alive_nodes, remove_nodes = self._base_get_all_alive_queues(all_queues)\n        if remove_nodes:\n            await redis_client.ahdel(WORKER_ALIVE_KEY, *remove_nodes)\n        return alive_nodes\n\n    def get_all_alive_queues_sync(self):\n        redis_client = get_redis_client_sync()\n        all_queues = redis_client.hgetall(WORKER_ALIVE_KEY)\n        alive_nodes, remove_nodes = self._base_get_all_alive_queues(all_queues)\n        if remove_nodes:\n            redis_client.hdel(WORKER_ALIVE_KEY, *remove_nodes)\n        return alive_nodes\n\n    def is_node_alive(self, node: str) -> bool:\n        all_nodes = self.consistent_hash.get_all_nodes()\n        return node in all_nodes\n\n    async def _find_bound_node(self, hash_key: str) -> str | None:\n        redis_client = await get_redis_client()\n        return await redis_client.aget(f\"{self.bound_nodes_prefix}{hash_key}\")\n\n    async def _save_bound_node(self, hash_key: str, node: str) -> None:\n        redis_client = await get_redis_client()\n        return await redis_client.aset(f\"{self.bound_nodes_prefix}{hash_key}\", node)\n\n    def _find_bound_node_sync(self, hash_key: str) -> str | None:\n        redis_client = get_redis_client_sync()\n        return redis_client.get(f\"{self.bound_nodes_prefix}{hash_key}\")\n\n    def _save_bound_node_sync(self, hash_key: str, node: str) -> None:\n        redis_client = get_redis_client_sync()\n        return redis_client.set(f\"{self.bound_nodes_prefix}{hash_key}\", node)\n\n    async def find_task_node(self, hash_key: str) -> str | None:\n        await self.update_alive_nodes()\n\n        # Get the node bound to the key\n        bound_node = await self._find_bound_node(hash_key)\n        if bound_node and self.is_node_alive(bound_node):\n            # judge if the bound node is alive\n            logger.debug(f\"Assigned node {bound_node} for key {hash_key}\")\n            return bound_node\n\n        # reassign the node\n        assigned_node = self.consistent_hash.find_node(hash_key)\n        if assigned_node:\n            await self._save_bound_node(hash_key, assigned_node)\n        logger.debug(f\"Assigned node {assigned_node} for key {hash_key}\")\n        return assigned_node\n\n    def find_task_node_sync(self, hash_key: str) -> str | None:\n        self.update_alive_nodes()\n\n        # Get the node bound to the key\n        bound_node = self._find_bound_node_sync(hash_key)\n        if bound_node and self.is_node_alive(bound_node):\n            # judge if the bound node is alive\n            logger.debug(f\"Assigned node {bound_node} for key {hash_key}\")\n            return bound_node\n\n        # reassign the node\n        assigned_node = self.consistent_hash.find_node(hash_key)\n        if assigned_node:\n            self._save_bound_node_sync(hash_key, assigned_node)\n        logger.debug(f\"Assigned node {assigned_node} for key {hash_key}\")\n        return assigned_node\n"
  },
  {
    "path": "src/backend/bisheng/worker/workflow/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/worker/workflow/redis_callback.py",
    "content": "import asyncio\nimport json\nimport os\nimport time\nimport uuid\nfrom typing import AsyncIterator, Iterator, Dict, List\n\nfrom langchain_core.documents import Document\nfrom loguru import logger\n\nfrom bisheng.api.v1.schema.workflow import WorkflowEventType\nfrom bisheng.api.v1.schemas import ChatResponse\nfrom bisheng.chat.utils import sync_judge_source, sync_process_source_document\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.errcode.flow import WorkFlowNodeRunMaxTimesError, WorkFlowWaitUserTimeoutError, \\\n    WorkFlowNodeUpdateError, WorkFlowVersionUpdateError, WorkFlowTaskBusyError, WorkFlowTaskOtherError\nfrom bisheng.common.errcode.http_error import ServerError\nfrom bisheng.common.schemas.telemetry.event_data_schema import NewMessageSessionEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.cache.redis_manager import get_redis_client_sync\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao, FlowType\nfrom bisheng.database.models.message import ChatMessageDao, ChatMessage\nfrom bisheng.database.models.session import MessageSessionDao, MessageSession\nfrom bisheng.utils.threadpool import thread_pool\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.callback.event import NodeStartData, NodeEndData, UserInputData, GuideWordData, GuideQuestionData, \\\n    OutputMsgData, StreamMsgData, StreamMsgOverData, OutputMsgChooseData, OutputMsgInputData\nfrom bisheng.workflow.common.workflow import WorkflowStatus\n\n\nclass RedisCallback(BaseCallback):\n\n    def __init__(self, unique_id: str, workflow_id: str, chat_id: str, user_id: int, **kwargs):\n        super(RedisCallback, self).__init__()\n        # Unique for asynchronous tasksID\n        self.unique_id = unique_id\n        self.workflow_id = workflow_id\n        self.chat_id = chat_id\n        self.user_id = user_id\n        self.workflow = None\n        self.create_session = False\n        self.source = kwargs.get('source', 'platform')  # only platform or api\n\n        self.redis_client = get_redis_client_sync()\n        self.workflow_data_key = f'workflow:{unique_id}:data'\n        self.workflow_status_key = f'workflow:{unique_id}:status'\n        self.workflow_event_key = f'workflow:{unique_id}:event'\n        self.workflow_input_key = f'workflow:{unique_id}:input'\n        self.workflow_stop_key = f'workflow:{unique_id}:stop'\n        self.workflow_expire_time = settings.get_workflow_conf().timeout * 60 + 60\n\n    def set_workflow_data(self, data: Dict, override: Dict = None):\n        data = self.override_nodes_params(data, override)\n        self.redis_client.set(self.workflow_data_key, data, expiration=self.workflow_expire_time)\n\n    @staticmethod\n    def override_nodes_params(data: Dict, override: Dict = None) -> Dict:\n        if not override:\n            return data\n\n        def replace_param(one_params: List[Dict], one_node_id: str):\n            for param in one_params:\n                param_key = param.get('key')\n                if param_key not in override[node_id]:\n                    continue\n                param['value'] = override[one_node_id][param_key]\n\n        nodes = data.get('nodes', [])\n        for node in nodes:\n            node_data = node.get('data', {})\n            node_id = node_data.get('id')\n            if node_id not in override:\n                continue\n            group_params = node_data.get('group_params', [])\n            for group_param in group_params:\n                replace_param(group_param.get('params', []), node_id)\n        return data\n\n    async def async_set_workflow_data(self, data: dict):\n        await self.redis_client.aset(self.workflow_data_key, data, expiration=self.workflow_expire_time)\n\n    def get_workflow_data(self) -> dict:\n        return self.redis_client.get(self.workflow_data_key)\n\n    def set_workflow_status(self, status: str, reason: str = None):\n        self.redis_client.set(self.workflow_status_key,\n                              {'status': status, 'reason': reason, 'time': time.time()},\n                              expiration=3600 * 24 * 7)\n        if status in [WorkflowStatus.FAILED.value, WorkflowStatus.SUCCESS.value]:\n            # Message Events and StatuskeyConsumption may also be required\n            self.redis_client.delete(self.workflow_data_key)\n            self.redis_client.delete(self.workflow_input_key)\n\n    async def async_set_workflow_status(self, status: str, reason: str = None):\n        await self.redis_client.aset(self.workflow_status_key,\n                                     {'status': status, 'reason': reason, 'time': time.time()},\n                                     expiration=3600 * 24 * 7)\n        if status in [WorkflowStatus.FAILED.value, WorkflowStatus.SUCCESS.value]:\n            # Message Events and StatuskeyConsumption may also be required\n            await self.redis_client.adelete(self.workflow_data_key)\n            await self.redis_client.adelete(self.workflow_input_key)\n\n    def get_workflow_status(self) -> dict | None:\n        workflow_status = self.redis_client.get(self.workflow_status_key)\n        return workflow_status\n\n    async def async_get_workflow_status(self) -> dict | None:\n        workflow_status = await self.redis_client.aget(self.workflow_status_key)\n        return workflow_status\n\n    def clear_workflow_status(self):\n        self.redis_client.delete(self.workflow_status_key)\n        self.redis_client.delete(self.workflow_stop_key)\n        self.redis_client.delete(self.workflow_data_key)\n\n    async def async_clear_workflow_status(self):\n        await self.redis_client.adelete(self.workflow_status_key)\n        await self.redis_client.adelete(self.workflow_stop_key)\n        await self.redis_client.adelete(self.workflow_data_key)\n\n    def insert_workflow_response(self, event: dict):\n        self.redis_client.rpush(self.workflow_event_key, json.dumps(event), expiration=self.workflow_expire_time)\n\n    def get_workflow_response(self) -> ChatResponse | None:\n        response = self.redis_client.lpop(self.workflow_event_key)\n        if self.get_workflow_stop():\n            self.redis_client.delete(self.workflow_event_key)\n            return None\n        if response:\n            response = ChatResponse(**json.loads(response))\n        return response\n\n    async def async_get_workflow_response(self) -> ChatResponse | None:\n        response = await self.redis_client.alpop(self.workflow_event_key)\n        if await self.async_get_workflow_stop():\n            await self.redis_client.adelete(self.workflow_event_key)\n            return None\n        if response:\n            response = ChatResponse(**json.loads(response))\n        return response\n\n    def build_chat_response(self, category, category_type, message, extra=None, files=None):\n        return ChatResponse(\n            user_id=self.user_id,\n            chat_id=self.chat_id,\n            flow_id=self.workflow_id,\n            type=category_type,\n            message=message,\n            category=category,\n            extra=extra,\n            files=files,\n        )\n\n    def parse_workflow_failed(self, status_info: dict) -> ChatResponse | None:\n        if status_info['reason'].find('-- has run more than the maximum number of times') != -1:\n            return self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                            message=WorkFlowNodeRunMaxTimesError(\n                                                exception=status_info['reason'].split('--')[0]).to_dict())\n        elif status_info['reason'].find('workflow wait user input timeout') != -1:\n            return self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                            message=WorkFlowWaitUserTimeoutError().to_dict())\n        elif status_info['reason'].find('-- node params is error') != -1:\n            return self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                            message=WorkFlowNodeUpdateError(\n                                                exception=status_info['reason'].split('--')[0]).to_dict())\n        elif status_info['reason'].find('-- workflow node is update') != -1:\n            return self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                            message=WorkFlowVersionUpdateError(\n                                                exception=status_info['reason'].split('--')[0]).to_dict())\n        elif status_info['reason'].find('stop by user') != -1:\n            return None\n        else:\n            return self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                            WorkFlowTaskOtherError(exception=status_info['reason']).to_dict())\n\n    def sync_get_response_until_break(self) -> Iterator[ChatResponse]:\n        while True:\n            # get workflow status\n            status_info = self.get_workflow_status()\n            if not status_info:\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               message=WorkFlowTaskOtherError(\n                                                   exception=Exception(\"workflow status not found\")).to_dict())\n                break\n            elif status_info['status'] in [WorkflowStatus.FAILED.value, WorkflowStatus.SUCCESS.value]:\n                while True:\n                    chat_response = self.get_workflow_response()\n                    if not chat_response:\n                        break\n                    yield chat_response\n                if status_info['status'] == WorkflowStatus.FAILED.value:\n                    error_resp = self.parse_workflow_failed(status_info)\n                    if error_resp:\n                        yield error_resp\n                break\n            elif status_info['status'] == WorkflowStatus.INPUT.value:\n                while True:\n                    chat_response = self.get_workflow_response()\n                    if not chat_response:\n                        break\n                    yield chat_response\n                break\n            elif status_info['status'] in [WorkflowStatus.WAITING.value,\n                                           WorkflowStatus.INPUT_OVER.value] and time.time() - status_info['time'] > 10:\n                # 10No status update received in seconds, descriptionworkflowNot started, could becelery workerThreads full\n                self.set_workflow_status(WorkflowStatus.FAILED.value, 'workflow task execute busy')\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               message=WorkFlowTaskBusyError().to_dict())\n                break\n            elif time.time() - status_info['time'] > 86400:\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               WorkFlowTaskOtherError(\n                                                   exception=Exception(\n                                                       \"workflow status not update over 1 day\")).to_dict())\n                self.set_workflow_status(WorkflowStatus.FAILED.value, 'workflow status not update over 1 day')\n                self.set_workflow_stop()\n                break\n            else:\n                chat_response = self.get_workflow_response()\n                if not chat_response:\n                    time.sleep(1)\n                    continue\n                yield chat_response\n\n    async def get_response_until_break(self) -> AsyncIterator[ChatResponse]:\n        \"\"\" Continuous accessworkflowright of privacyresponseuntil the end of the run is encountered or pending entry \"\"\"\n        while True:\n            # get workflow status\n            status_info = await self.async_get_workflow_status()\n            if not status_info:\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               message=WorkFlowTaskOtherError(\n                                                   exception=Exception(\"workflow status not found\")).to_dict())\n                break\n            elif status_info['status'] in [WorkflowStatus.FAILED.value, WorkflowStatus.SUCCESS.value]:\n                while True:\n                    chat_response = await self.async_get_workflow_response()\n                    if not chat_response:\n                        break\n                    yield chat_response\n                if status_info['status'] == WorkflowStatus.FAILED.value:\n                    error_resp = self.parse_workflow_failed(status_info)\n                    if error_resp:\n                        yield error_resp\n                break\n            elif status_info['status'] == WorkflowStatus.INPUT.value:\n                while True:\n                    chat_response = await self.async_get_workflow_response()\n                    if not chat_response:\n                        break\n                    yield chat_response\n                break\n            elif status_info['status'] in [WorkflowStatus.WAITING.value,\n                                           WorkflowStatus.INPUT_OVER.value] and time.time() - status_info['time'] > 10:\n                # 10No status update received in seconds, descriptionworkflowNot started, could becelery workerThreads full\n                await self.async_set_workflow_status(WorkflowStatus.FAILED.value, 'workflow task execute busy')\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               message=WorkFlowTaskBusyError().to_dict())\n                break\n            elif time.time() - status_info['time'] > 86400:\n                yield self.build_chat_response(WorkflowEventType.Error.value, 'over',\n                                               message=WorkFlowTaskOtherError(exception=Exception(\n                                                   \"workflow status not update over 1 day\")).to_dict())\n                await self.async_set_workflow_status(WorkflowStatus.FAILED.value,\n                                                     'workflow status not update over 1 day')\n                await self.async_set_workflow_stop()\n                break\n            else:\n                chat_response = await self.async_get_workflow_response()\n                if not chat_response:\n                    await asyncio.sleep(0.01)\n                    continue\n                yield chat_response\n\n    def set_user_input(self, data: dict, message_id: int = None, message_content: str = None,\n                       verify_input: bool = False):\n        if self.chat_id and message_id:\n            message_db = ChatMessageDao.get_message_by_id(message_id)\n            self.update_old_message(data, message_db, message_content, verify_input)\n        # Notify Asynchronous Task User Input\n        self.redis_client.set(self.workflow_input_key, data, expiration=self.workflow_expire_time)\n        return\n\n    async def async_set_user_input(self, data: dict, message_id: int = None, message_content: str = None,\n                                   verify_input: bool = False):\n        if self.chat_id and message_id:\n            message_db = await ChatMessageDao.aget_message_by_id(message_id)\n            await self.async_update_old_message(data, message_db, message_content, verify_input)\n        # Notify Asynchronous Task User Input\n        await self.redis_client.aset(self.workflow_input_key, data, expiration=self.workflow_expire_time)\n        return\n\n    @staticmethod\n    def _verify_input_schema(input_schema_message: Dict, user_input: Dict):\n        \"\"\" Verify that the user input matches the input schema \"\"\"\n        node_id = input_schema_message['node_id']\n        if node_id not in user_input:\n            raise ServerError(msg=\"node_id not found in user input\")\n        user_input = user_input[node_id]\n        input_schema = input_schema_message['input_schema']\n        if input_schema[\"tab\"] == \"form_input\":\n            user_input_keys = {one: None for one in user_input.keys()}\n            for key_info in input_schema['value']:\n                key = key_info['key']\n                if key not in user_input:\n                    raise ServerError(msg=f\"key {key} not found in user input\")\n                user_input_keys.pop(key)\n            if user_input_keys:\n                raise ServerError(msg=f\"extra key {list(user_input_keys.keys())} found in user input\")\n        else:\n            if input_schema[\"key\"] not in user_input:\n                raise ServerError(msg=f\"key {input_schema['key']} not found in user input\")\n\n    @classmethod\n    def _update_old_message(cls, user_input: dict, message_db: ChatMessage, message_content: str,\n                            verify_input: bool = False):\n        \"\"\"\n        if ChatResponse is not None: add new message\n        if ChatMessage is not None: update old message\n        return ChatResponse | None, ChatMessage | None\n        \"\"\"\n        if not message_db:\n            if verify_input:\n                raise ServerError(msg=\"message info not found by message id\")\n            return None\n        # Update the input and selection of the user in the output to be entered message\n        old_message = json.loads(message_db.message)\n        if message_db.category == WorkflowEventType.OutputWithInput.value:\n            old_message['hisValue'] = user_input[old_message['node_id']][old_message['key']]\n        elif message_db.category == WorkflowEventType.OutputWithChoose.value:\n            old_message['hisValue'] = user_input[old_message['node_id']][old_message['key']]\n        elif message_db.category == WorkflowEventType.UserInput.value:\n            if verify_input:\n                cls._verify_input_schema(old_message, user_input)\n            user_input = user_input[old_message['node_id']]\n\n            # If the front-end passes user input, the front-end content is used.\n            if message_content:\n                user_input_message = message_content\n            # Instructions are form inputs\n            elif old_message['input_schema']['tab'] == 'form_input':\n                user_input_message = ''\n                for key_info in old_message['input_schema']['value']:\n                    user_input_message += f\"{key_info['value']}:{user_input.get(key_info['key'], '')}\\n\"\n            else:\n                # Description Dialog Input, Uploaded file information needs to be added, It is related to the data structure of the input node.\n                user_input_message = user_input[old_message['input_schema']['key']]\n                dialog_files_content = user_input.get('dialog_files_content', [])\n                for one in dialog_files_content:\n                    user_input_message += f\"\\n{os.path.basename(one).split('?')[0]}\"\n            return ChatResponse(\n                message=user_input_message,\n                category='question',\n            ), None\n        message_db.message = json.dumps(old_message, ensure_ascii=False)\n        return None, message_db\n\n    def update_old_message(self, user_input: dict, message_db: ChatMessage, message_content: str,\n                           verify_input: bool = False):\n        chat_response, message = self._update_old_message(user_input, message_db, message_content, verify_input)\n        if chat_response:\n            self.save_chat_message(chat_response)\n            return\n        if message:\n            ChatMessageDao.update_message_model(message)\n\n    async def async_update_old_message(self, user_input: dict, message_db: ChatMessage, message_content: str,\n                                       verify_input: bool = False):\n        chat_response, message = self._update_old_message(user_input, message_db, message_content, verify_input)\n        if chat_response:\n            self.save_chat_message(chat_response)\n            return\n        if message:\n            await ChatMessageDao.aupdate_message_model(message)\n\n    def get_user_input(self) -> dict | None:\n        ret = self.redis_client.get(self.workflow_input_key)\n        if ret:\n            self.redis_client.delete(self.workflow_input_key)\n        return ret\n\n    def set_workflow_stop(self):\n        from bisheng.worker.workflow.tasks import stop_workflow\n        self.redis_client.set(self.workflow_stop_key, 1, expiration=3600 * 24)\n        stop_workflow.delay(self.unique_id, self.workflow_id, self.chat_id, self.user_id)\n\n    async def async_set_workflow_stop(self):\n        from bisheng.worker.workflow.tasks import stop_workflow\n        await self.redis_client.aset(self.workflow_stop_key, 1, expiration=3600 * 24)\n        stop_workflow.delay(self.unique_id, self.workflow_id, self.chat_id, self.user_id)\n\n    def get_workflow_stop(self) -> bool | None:\n        \"\"\" In order to stop in timeworkflow, Do not cache memory \"\"\"\n        return self.redis_client.get(self.workflow_stop_key) == 1\n\n    async def async_get_workflow_stop(self) -> bool | None:\n        \"\"\" In order to stop in timeworkflow, Do not cache memory \"\"\"\n        return await self.redis_client.aget(self.workflow_stop_key) == 1\n\n    def send_chat_response(self, chat_response: ChatResponse):\n        \"\"\" Send a chat message \"\"\"\n        self.insert_workflow_response(chat_response.dict())\n\n        # Determine if it needs to be stoppedworkflow, Don't judge when streaming, queries are too frequent and can't be stoppedworkflow\n        if chat_response.category == WorkflowEventType.StreamMsg.value:\n            return\n        if self.workflow and self.get_workflow_stop():\n            self.workflow.stop()\n\n    def save_chat_message(self, chat_response: ChatResponse, source_documents=None) -> int | str | None:\n        \"\"\"  save chat message to database\n        return message id\n        \"\"\"\n        if not self.chat_id:\n            # Generate a fake messageidPrevent duplicate front-end message rendering\n            return uuid.uuid4().hex\n\n        # Judgment traceability\n        if source_documents:\n            result = {}\n            extra = {}\n            if isinstance(source_documents, Document):\n                result = source_documents\n            source, result = sync_judge_source(result, source_documents, self.chat_id, extra)\n            chat_response.source = source\n            chat_response.extra = json.dumps(extra, ensure_ascii=False)\n\n        message = ChatMessageDao.insert_one(ChatMessage(\n            user_id=self.user_id,\n            chat_id=self.chat_id,\n            flow_id=self.workflow_id,\n            type=chat_response.type,\n\n            is_bot=chat_response.is_bot,\n            source=chat_response.source,\n            message=chat_response.message if isinstance(chat_response.message, str) else json.dumps(\n                chat_response.message, ensure_ascii=False),\n            extra=chat_response.extra,\n            category=chat_response.category,\n            files=json.dumps(chat_response.files, ensure_ascii=False)\n        ))\n\n        # If the document is traceable, handle the recallchunk\n        if chat_response.source not in [0, 4]:\n            thread_pool.submit(f\"workflow_source_document_{self.chat_id}\",\n                               sync_process_source_document,\n                               source_documents, self.chat_id, message.id, chat_response.message.get('msg'))\n\n        # Determine if a new session is needed\n        if not self.create_session and chat_response.category != WorkflowEventType.UserInput.value:\n            # Insert a new session without session data\n            if not MessageSessionDao.get_one(self.chat_id):\n                db_workflow = FlowDao.get_flow_by_id(self.workflow_id)\n                MessageSessionDao.insert_one(MessageSession(\n                    chat_id=self.chat_id,\n                    flow_id=self.workflow_id,\n                    flow_name=db_workflow.name,\n                    flow_type=FlowType.WORKFLOW.value,\n                    user_id=self.user_id,\n                ))\n\n                # RecordTelemetryJournal\n                telemetry_service.log_event_sync(user_id=self.user_id,\n                                                 event_type=BaseTelemetryTypeEnum.NEW_MESSAGE_SESSION,\n                                                 trace_id=trace_id_var.get(),\n                                                 event_data=NewMessageSessionEventData(\n                                                     session_id=self.chat_id,\n                                                     app_id=self.workflow_id,\n                                                     source=self.source,\n                                                     app_name=db_workflow.name,\n                                                     app_type=ApplicationTypeEnum.WORKFLOW\n                                                 )\n                                                 )\n\n            self.create_session = True\n\n        return message.id\n\n    def on_node_start(self, data: NodeStartData):\n        \"\"\" node start event \"\"\"\n        logger.debug(f'node start: {data}')\n        self.send_chat_response(\n            ChatResponse(message=data.dict(),\n                         category=WorkflowEventType.NodeRun.value,\n                         type='start',\n                         flow_id=self.workflow_id,\n                         chat_id=self.chat_id))\n\n    def on_node_end(self, data: NodeEndData):\n        \"\"\" node end event \"\"\"\n        logger.debug(f'node end: {data}')\n        self.send_chat_response(\n            ChatResponse(message=data.dict(),\n                         category=WorkflowEventType.NodeRun.value,\n                         type='end',\n                         flow_id=self.workflow_id,\n                         chat_id=self.chat_id))\n\n    def on_user_input(self, data: UserInputData):\n        \"\"\" user input event \"\"\"\n        logger.debug(f'user input: {data}')\n        chat_response = ChatResponse(message=data.dict(),\n                                     category=WorkflowEventType.UserInput.value,\n                                     type='over',\n                                     flow_id=self.workflow_id,\n                                     chat_id=self.chat_id)\n        msg_id = self.save_chat_message(chat_response)\n        if msg_id:\n            chat_response.message_id = msg_id\n        self.send_chat_response(chat_response)\n\n    def on_guide_word(self, data: GuideWordData):\n        \"\"\" guide word event \"\"\"\n        logger.debug(f'guide word: {data}')\n        self.send_chat_response(\n            ChatResponse(message=data.dict(),\n                         category=WorkflowEventType.GuideWord.value,\n                         type='over',\n                         flow_id=self.workflow_id,\n                         chat_id=self.chat_id))\n\n    def on_guide_question(self, data: GuideQuestionData):\n        \"\"\" guide question event \"\"\"\n        logger.debug(f'guide question: {data}')\n        self.send_chat_response(\n            ChatResponse(message=data.dict(),\n                         category=WorkflowEventType.GuideQuestion.value,\n                         type='over',\n                         flow_id=self.workflow_id,\n                         chat_id=self.chat_id))\n\n    def on_output_msg(self, data: OutputMsgData):\n        logger.debug(f'output msg: {data}')\n        chat_response = ChatResponse(message=data.dict(exclude={'source_documents'}),\n                                     category=WorkflowEventType.OutputMsg.value,\n                                     extra='',\n                                     type='over',\n                                     flow_id=self.workflow_id,\n                                     chat_id=self.chat_id,\n                                     files=data.files)\n        msg_id = self.save_chat_message(chat_response, source_documents=data.source_documents)\n        if msg_id:\n            chat_response.message_id = msg_id\n        self.send_chat_response(chat_response)\n\n    def on_stream_msg(self, data: StreamMsgData):\n        logger.debug(f'stream msg: {data}')\n        self.send_chat_response(\n            ChatResponse(message=data.dict(),\n                         category=WorkflowEventType.StreamMsg.value,\n                         extra='',\n                         type='stream',\n                         flow_id=self.workflow_id,\n                         chat_id=self.chat_id))\n\n    def on_stream_over(self, data: StreamMsgOverData):\n        logger.debug(f'stream over: {data}')\n        # Replaceminioright of privacysharePrefix bynginxShare  ugly solve\n        minio_share = settings.get_minio_conf().sharepoint\n        data.msg = data.msg.replace(f\"http://{minio_share}\", \"\")\n        chat_response = ChatResponse(message=data.dict(exclude={'source_documents'}),\n                                     category=WorkflowEventType.StreamMsg.value,\n                                     extra='',\n                                     type='end',\n                                     flow_id=self.workflow_id,\n                                     chat_id=self.chat_id)\n        msg_id = self.save_chat_message(chat_response, source_documents=data.source_documents)\n        if msg_id:\n            chat_response.message_id = msg_id\n        self.send_chat_response(chat_response)\n\n    def on_output_choose(self, data: OutputMsgChooseData):\n        logger.debug(f'output choose: {data}')\n        chat_response = ChatResponse(message=data.dict(exclude={'source_documents'}),\n                                     category=WorkflowEventType.OutputWithChoose.value,\n                                     extra='',\n                                     type='over',\n                                     flow_id=self.workflow_id,\n                                     chat_id=self.chat_id,\n                                     files=data.files)\n        msg_id = self.save_chat_message(chat_response, source_documents=data.source_documents)\n        if msg_id:\n            chat_response.message_id = msg_id\n        self.send_chat_response(chat_response)\n\n    def on_output_input(self, data: OutputMsgInputData):\n        logger.debug(f'output input: {data}')\n        chat_response = ChatResponse(message=data.dict(exclude={'source_documents'}),\n                                     category=WorkflowEventType.OutputWithInput.value,\n                                     extra='',\n                                     type='over',\n                                     flow_id=self.workflow_id,\n                                     chat_id=self.chat_id,\n                                     files=data.files)\n        msg_id = self.save_chat_message(chat_response, source_documents=data.source_documents)\n        if msg_id:\n            chat_response.message_id = msg_id\n        self.send_chat_response(chat_response)\n"
  },
  {
    "path": "src/backend/bisheng/worker/workflow/tasks.py",
    "content": "import time\n\nfrom loguru import logger\n\nfrom bisheng.api.services.workflow import WorkFlowService\nfrom bisheng.common.constants.enums.telemetry import BaseTelemetryTypeEnum, ApplicationTypeEnum\nfrom bisheng.common.schemas.telemetry.event_data_schema import ApplicationProcessEventData\nfrom bisheng.common.services import telemetry_service\nfrom bisheng.common.services.config_service import settings\nfrom bisheng.core.logger import trace_id_var\nfrom bisheng.database.models.flow import FlowDao\nfrom bisheng.utils.exceptions import IgnoreException\nfrom bisheng.worker.main import bisheng_celery\nfrom bisheng.worker.utils.stateful_worker import StatefulWorker\nfrom bisheng.worker.workflow.redis_callback import RedisCallback\nfrom bisheng.workflow.common.workflow import WorkflowStatus\nfrom bisheng.workflow.graph.workflow import Workflow\n\n# workflow execute stateful worker for assigning tasks to bound workers\nworkflow_stateful_worker = StatefulWorker(queue_prefix=\"workflow_celery\", bound_nodes_prefix=\"workflow_bound_nodes:\")\n# Stores global workflow objects\n_global_workflow: dict[str, Workflow] = {}\n\n\ndef _clear_workflow_obj(unique_id: str):\n    \"\"\" Clear Global Workflow Objects \"\"\"\n    if unique_id in _global_workflow:\n        del _global_workflow[unique_id]\n        logger.debug(f'clear workflow object for unique_id: {unique_id}')\n    else:\n        logger.warning(f'workflow object not found for unique_id: {unique_id}')\n\n\ndef _judge_workflow_status(redis_callback: RedisCallback, workflow: Workflow):\n    status = workflow.status()\n    reason = workflow.reason()\n    if workflow.status() in [WorkflowStatus.SUCCESS.value, WorkflowStatus.FAILED.value]:\n        redis_callback.set_workflow_status(status, reason)\n        _clear_workflow_obj(redis_callback.unique_id)\n        return\n    if workflow.status() == WorkflowStatus.INPUT.value:\n        # If it is an input state, place the object in memory\n        _global_workflow[redis_callback.unique_id] = workflow\n        # redis_callback.save_workflow_object(workflow)\n        redis_callback.set_workflow_status(status, reason)\n        return\n    logger.error(f'unexpected workflow status error: {status}')\n    redis_callback.set_workflow_status(WorkflowStatus.FAILED.value,\n                                       f'workflow run failed, unexpected status: {status}')\n    _clear_workflow_obj(redis_callback.unique_id)\n\n\ndef _execute_workflow(unique_id: str, workflow_id: str, chat_id: str, user_id: int, source: str = \"platform\"):\n    redis_callback = RedisCallback(unique_id, workflow_id, chat_id, user_id, source=source)\n    try:\n        # update workflow status\n        redis_callback.set_workflow_status(WorkflowStatus.RUNNING.value)\n        # get workflow data\n        workflow_data = redis_callback.get_workflow_data()\n        if not workflow_data:\n            raise Exception('workflow data not found maybe data is expired')\n\n        # init workflow\n        workflow_conf = settings.get_workflow_conf()\n        workflow_info = FlowDao.get_flow_by_id(workflow_id)\n        workflow_name = workflow_info.name if workflow_info else workflow_id\n        workflow = Workflow(workflow_id, workflow_name,\n                            user_id, workflow_data, False,\n                            workflow_conf.max_steps,\n                            workflow_conf.timeout,\n                            redis_callback)\n        redis_callback.workflow = workflow\n        status, reason = workflow.run()\n        _judge_workflow_status(redis_callback, workflow)\n    except IgnoreException as e:\n        logger.warning(f'execute_workflow ignore error: {e}')\n        redis_callback.set_workflow_status(WorkflowStatus.FAILED.value, str(e))\n        _clear_workflow_obj(redis_callback.unique_id)\n    except Exception as e:\n        logger.exception('execute_workflow error')\n        redis_callback.set_workflow_status(WorkflowStatus.FAILED.value, str(e)[:100])\n        _clear_workflow_obj(redis_callback.unique_id)\n\n\n@bisheng_celery.task\ndef execute_workflow(unique_id: str, workflow_id: str, chat_id: str, user_id: int, source: str = \"platform\"):\n    \"\"\" Implementationworkflow \"\"\"\n    trace_id_var.set(unique_id)\n    start_time = time.time()\n    try:\n        _execute_workflow(unique_id, workflow_id, chat_id, user_id, source)\n    finally:\n        end_time = time.time()\n        workflow_info = WorkFlowService.get_one_workflow_simple_info_sync(workflow_id)\n        telemetry_service.log_event_sync(user_id=user_id,\n                                         event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                         trace_id=trace_id_var.get(),\n                                         event_data=ApplicationProcessEventData(\n                                             app_id=workflow_id,\n                                             app_name=workflow_info.name if workflow_info else workflow_id,\n                                             app_type=ApplicationTypeEnum.WORKFLOW,\n                                             chat_id=chat_id,\n\n                                             start_time=int(start_time),\n                                             end_time=int(end_time),\n                                             process_time=int((end_time - start_time) * 1000)\n                                         ))\n\n\ndef _continue_workflow(unique_id: str, workflow_id: str, chat_id: str, user_id: int, source: str = \"platform\"):\n    \"\"\" Resumeworkflow \"\"\"\n    redis_callback = RedisCallback(unique_id, workflow_id, chat_id, user_id, source=source)\n    try:\n        workflow = _global_workflow.get(redis_callback.unique_id, None)\n        if not workflow:\n            raise Exception('workflow object not found maybe data is expired')\n        if workflow.status() not in [WorkflowStatus.INPUT.value, WorkflowStatus.INPUT_OVER.value]:\n            raise Exception(f'workflow status is {workflow.status()} not INPUT')\n        user_input = redis_callback.get_user_input()\n        if not user_input:\n            raise IgnoreException('workflow continue not found user input')\n        redis_callback.set_workflow_status(WorkflowStatus.RUNNING.value)\n        status, reason = workflow.run(user_input)\n        _judge_workflow_status(redis_callback, workflow)\n    except IgnoreException as e:\n        logger.warning(f'continue_workflow ignore error: {e}')\n        redis_callback.set_workflow_status(WorkflowStatus.FAILED.value, str(e))\n        _clear_workflow_obj(redis_callback.unique_id)\n    except Exception as e:\n        logger.exception('continue_workflow error')\n        redis_callback.set_workflow_status(WorkflowStatus.FAILED.value, str(e)[:100])\n        _clear_workflow_obj(redis_callback.unique_id)\n\n\n@bisheng_celery.task\ndef continue_workflow(unique_id: str, workflow_id: str, chat_id: str, user_id: int, source: str = \"platform\"):\n    \"\"\" Resumeworkflow \"\"\"\n    trace_id_var.set(unique_id)\n    start_time = time.time()\n    try:\n        _continue_workflow(unique_id, workflow_id, chat_id, user_id, source)\n    finally:\n        end_time = time.time()\n        workflow_info = WorkFlowService.get_one_workflow_simple_info_sync(workflow_id)\n        telemetry_service.log_event_sync(user_id=user_id,\n                                         event_type=BaseTelemetryTypeEnum.APPLICATION_PROCESS,\n                                         trace_id=trace_id_var.get(),\n                                         event_data=ApplicationProcessEventData(\n                                             app_id=workflow_id,\n                                             app_name=workflow_info.name if workflow_info else workflow_id,\n                                             app_type=ApplicationTypeEnum.WORKFLOW,\n                                             chat_id=chat_id,\n\n                                             start_time=int(start_time),\n                                             end_time=int(end_time),\n                                             process_time=int((end_time - start_time) * 1000)\n                                         ))\n\n\n@bisheng_celery.task\ndef stop_workflow(unique_id: str, workflow_id: str, chat_id: str, user_id: int):\n    \"\"\" Stopworkflow \"\"\"\n    trace_id_var.set(unique_id)\n\n    redis_callback = RedisCallback(unique_id, workflow_id, chat_id, user_id)\n    if unique_id not in _global_workflow:\n        redis_callback.set_workflow_status(WorkflowStatus.FAILED.value, 'workflow stop by user')\n        logger.warning(\"stop_workflow called but workflow not found in global cache\")\n        return\n    workflow = _global_workflow[unique_id]\n    workflow.stop()\n\n    while workflow.status() == WorkflowStatus.RUNNING.value:\n        time.sleep(0.3)\n    status, reason = workflow.status(), workflow.reason()\n    if status != WorkflowStatus.FAILED.value:\n        status = WorkflowStatus.FAILED.value\n        reason = 'workflow stop by user'\n        redis_callback.set_workflow_status(status, reason)\n    _clear_workflow_obj(unique_id)\n    logger.info(f'workflow stop by user {user_id}')\n"
  },
  {
    "path": "src/backend/bisheng/workflow/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/callback/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/callback/base_callback.py",
    "content": "from abc import ABC\n\nfrom bisheng.workflow.callback.event import NodeStartData, NodeEndData, OutputMsgChooseData, OutputMsgInputData, \\\n    UserInputData, GuideWordData, GuideQuestionData, \\\n    OutputMsgData, StreamMsgData, StreamMsgOverData\n\n\nclass BaseCallback(ABC):\n\n    def __init__(self, *args, **kwargs):\n        pass\n\n    def on_node_start(self, data: NodeStartData):\n        \"\"\" node start event \"\"\"\n        pass\n\n    def on_node_end(self, data: NodeEndData):\n        \"\"\" node end event \"\"\"\n        pass\n\n    def on_user_input(self, data: UserInputData):\n        \"\"\" user input event \"\"\"\n        pass\n\n    def on_guide_word(self, data: GuideWordData):\n        \"\"\" guide word event \"\"\"\n        pass\n\n    def on_guide_question(self, data: GuideQuestionData):\n        \"\"\" guide question event \"\"\"\n        pass\n\n    def on_stream_msg(self, data: StreamMsgData):\n        pass\n\n    def on_stream_over(self, data: StreamMsgOverData):\n        pass\n\n    def on_output_msg(self, data: OutputMsgData):\n        pass\n\n    def on_output_choose(self, data: OutputMsgChooseData):\n        pass\n\n    def on_output_input(self, data: OutputMsgInputData):\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/workflow/callback/event.py",
    "content": "from typing import Any, List, Optional\n\nfrom pydantic import BaseModel, Field\n\n\n# Node start event data\nclass NodeStartData(BaseModel):\n    unique_id: str = Field(..., description='Unique execution id')\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n\n\nclass NodeEndData(NodeStartData):\n    reason: Optional[str] = Field(None, description='Reason for node exec error')\n    log_data: Any = Field(None, description='Log data on node exec success')\n    input_data: Any = Field(None, description='Input variable data for node exec')\n\n\nclass UserInputData(BaseModel):\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n    input_schema: Any = Field(..., description='Input schema')\n\n\nclass GuideWordData(BaseModel):\n    unique_id: Optional[str] = Field(..., description='Unique execution id')\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n    guide_word: str = Field(..., description='Guide word')\n\n\nclass GuideQuestionData(BaseModel):\n    unique_id: Optional[str] = Field(..., description='Unique execution id')\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n    guide_question: List[str] = Field(..., description='Guide question')\n\n\nclass OutputMsgData(BaseModel):\n    unique_id: str = Field(..., description='Unique execution id')\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n    msg: str = Field(default='', description='Output msg')\n    files: List[dict] = Field(default_factory=list, description='Output files', exclude=True)\n    output_key: str = Field(default=\"\", description='Whether the message is stream')\n    source_documents: Optional[Any] = Field(default=None, description='Source documents')\n\n\nclass OutputMsgInputData(OutputMsgData):\n    key: str = Field('', description='variable key')\n    unique_id: Optional[str] = Field('', description='Unique execution id')\n    input_msg: str = Field('', description='default input msg')\n\n\nclass OutputMsgChooseData(OutputMsgData):\n    key: str = Field('', description='variable key')\n    unique_id: Optional[str] = Field('', description='Unique execution id')\n    options: Any = Field(None, description='default msg')\n\n\nclass StreamMsgData(BaseModel):\n    unique_id: str = Field(..., description='Unique execution id')\n    node_id: str = Field(..., description='Node unique id')\n    name: str = Field(..., description='Node name')\n    msg: Optional[str] = Field('', description='Stream msg')\n    reasoning_content: Optional[str] = Field(None, description='Reasoning content')\n    output_key: str = Field(..., description='Whether the message is stream')\n\n\nclass StreamMsgOverData(StreamMsgData):\n    source_documents: Optional[List[Any]] = Field(default=[], description='Source documents')\n"
  },
  {
    "path": "src/backend/bisheng/workflow/callback/llm_callback.py",
    "content": "from typing import Any, Dict, Optional, List, Union\n\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.callback.event import OutputMsgData, StreamMsgData, StreamMsgOverData\nfrom langchain_core.callbacks.base import BaseCallbackHandler\nfrom langchain_core.outputs import LLMResult\nfrom loguru import logger\n\n\nclass LLMNodeCallbackHandler(BaseCallbackHandler):\n    \"\"\"Callback handler for streaming LLM responses.\"\"\"\n\n    def __init__(\n            self,\n            callback: BaseCallback,\n            unique_id: str,\n            node_id: str,\n            node_name: str,\n            output: bool,\n            output_key: str,\n            stream: bool = True,\n            tool_list: Optional[List[Any]] = None,\n            cancel_llm_end: bool = False,\n    ):\n        self.callback_manager = callback\n        self.unique_id = unique_id\n        self.node_id = node_id\n        self.node_name = node_name\n        self.output = output\n        self.output_len = 0\n        self.output_key = output_key\n        self.stream = stream\n        self.tool_list = tool_list\n        self.cancel_llm_end = cancel_llm_end\n        self.reasoning_content = ''\n        logger.info('on_llm_new_token {} outkey={}', self.output, self.output_key)\n\n    async def on_tool_start(self, serialized: Dict[str, Any], input_str: str,\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool starts running.\"\"\"\n        logger.debug(\n            f'on_tool_start  serialized={serialized} input_str={input_str} kwargs={kwargs}')\n        if self.tool_list is not None:\n            self.tool_list.append({\n                'type': 'start',\n                'run_id': kwargs.get('run_id').hex,\n                'name': serialized['name'],\n                'input': input_str,\n            })\n        if serialized['name'] == 'sql_agent':\n            self.output = False\n\n    async def on_tool_end(self, output: str, **kwargs: Any) -> Any:\n        \"\"\"Run when tool ends running.\"\"\"\n        logger.debug(f'on_tool_end  output={output} kwargs={kwargs}')\n        result = output if isinstance(output, str) else getattr(output, 'content', output)\n        if self.tool_list is not None:\n            self.tool_list.append({\n                'type': 'end',\n                'run_id': kwargs.get('run_id').hex,\n                'name': kwargs['name'],\n                'output': result,\n            })\n        if kwargs['name'] == 'sql_agent':\n            self.output = True\n\n    async def on_tool_error(self, error: Union[Exception, KeyboardInterrupt],\n                            **kwargs: Any) -> Any:\n        \"\"\"Run when tool errors.\"\"\"\n        logger.debug(f'on_tool_error error={error} kwargs={kwargs}')\n        if self.tool_list is not None:\n            self.tool_list.append({\n                'type': 'error',\n                'run_id': kwargs.get('run_id').hex,\n                'error': str(error),\n            })\n        if kwargs['name'] == 'sql_agent':\n            self.output = True\n\n    def on_llm_new_token(self, token: str, **kwargs: Any) -> None:\n        chunk = kwargs.get('chunk', None)\n        # azureOccasionally returns aNone\n        if token is None and chunk is None:\n            return\n        if not self.output or not self.stream:\n            return\n\n        self.output_len += len(token)  # Determine if the streaming output has been completed\n        self.callback_manager.on_stream_msg(\n            StreamMsgData(node_id=self.node_id,\n                          name=self.node_name,\n                          msg=token,\n                          reasoning_content=getattr(chunk.message, 'additional_kwargs', {}).get('reasoning_content'),\n                          unique_id=self.unique_id,\n                          output_key=self.output_key))\n\n    def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None:\n        self.reasoning_content = getattr(response.generations[0][0].message, 'additional_kwargs', {}).get('reasoning_content')\n        if self.cancel_llm_end:\n            return\n        if not self.output:\n            return\n        msg = response.generations[0][0].message\n        # ChatTongYi vl model special text\n        if isinstance(msg.content, list):\n            msg = ''.join([one.get('text', '') for one in msg.content])\n        else:\n            msg = msg.content\n        if not msg:\n            logger.warning('LLM output is empty')\n            return\n\n        if self.stream and self.output_len > 0:\n            # Streaming output end needs to return a streaming end event\n            self.callback_manager.on_stream_over(StreamMsgOverData(node_id=self.node_id,\n                                                                   name=self.node_name,\n                                                                   msg=msg,\n                                                                   reasoning_content=self.reasoning_content,\n                                                                   unique_id=self.unique_id,\n                                                                   output_key=self.output_key))\n            return\n\n        # If the output is required, but the stream output is not performed, a supplement is made. This happens when the cache is hit. This is also the case when output is required\n        self.callback_manager.on_output_msg(\n            OutputMsgData(node_id=self.node_id,\n                          name=self.node_name,\n                          msg=msg,\n                          unique_id=self.unique_id,\n                          output_key=self.output_key))\n"
  },
  {
    "path": "src/backend/bisheng/workflow/common/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/common/condition.py",
    "content": "class ComparisonType:\n    EQUAL = \"equals\"\n    NOT_EQUAL = \"not_equals\"\n    GREATER_THAN = \"greater_than\"\n    LESS_THAN = \"less_than\"\n    GREATER_THAN_OR_EQUAL = \"greater_than_or_equal\"\n    LESS_THAN_OR_EQUAL = \"less_than_or_equal\"\n    CONTAINS = \"contains\"\n    NOT_CONTAINS = \"not_contains\"\n    IS_EMPTY = \"is_empty\"\n    IS_NOT_EMPTY = \"is_not_empty\"\n    STARTS_WITH = \"starts_with\"\n    ENDS_WITH = \"ends_with\"\n    REGEX = \"regex\"\n\n\nclass LogicType:\n    AND = \"and\"\n    OR = \"or\"\n"
  },
  {
    "path": "src/backend/bisheng/workflow/common/const.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/common/knowledge.py",
    "content": "from datetime import datetime\nfrom typing import List, Dict, Any, Literal\n\nfrom langchain_core.documents import Document\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.constants.vectorstore_metadata import KNOWLEDGE_RAG_METADATA_SCHEMA\nfrom bisheng.core.vectorstore.multi_retriever import MultiRetriever\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.knowledge.domain.models.knowledge import Knowledge, MetadataFieldType\nfrom bisheng.knowledge.domain.models.knowledge_file import KnowledgeFileDao\nfrom bisheng.llm.domain import LLMService\nfrom bisheng.tool.domain.langchain.knowledge import KnowledgeRetrieverTool\nfrom bisheng.workflow.common.condition import ComparisonType\nfrom bisheng.workflow.nodes.base import BaseNode\n\n\nclass ConditionOne(BaseModel):\n    id: str = Field(..., description='Unique id for condition')\n    knowledge_id: int = Field(..., description='metadata filed belong for knowledge`s id')\n    metadata_field: str = Field(..., description='knowledge metadata field')\n    comparison_operation: str = Field(..., description='Compare type')\n    right_value_type: str = Field(..., description='Right value type')\n    right_value: str = Field(..., description='Right value')\n\n    def convert_right_value(self, field_type: str, right_value: Any, is_preset: bool) -> Any:\n        # no need to convert right value for is_empty and is_not_empty\n        if self.comparison_operation in ['is_empty', 'is_not_empty'] or is_preset:\n            return right_value\n\n        # only for user metadata field, need to convert right value type\n        if field_type in [MetadataFieldType.STRING.value]:\n            right_value = str(right_value)\n            if not right_value:\n                raise ValueError(\"Right value cannot be empty for the selected comparison operation\")\n        elif field_type in [MetadataFieldType.NUMBER.value]:\n            right_value = int(right_value)\n        elif field_type == MetadataFieldType.TIME.value:\n            if isinstance(right_value, int):\n                # timestamp\n                right_value = datetime.fromtimestamp(right_value)\n            else:\n                # iso format\n                right_value = datetime.fromisoformat(right_value)\n            right_value = int(right_value.timestamp())\n        else:\n            raise ValueError(f\"Unsupported metadata field type: {field_type}\")\n        return right_value\n\n    def convert_preset_filed(self) -> (str, str):\n        \"\"\" convert preset field to mysql field in knowledge file table\"\"\"\n        if self.metadata_field == \"document_id\":\n            return \"id\"\n        elif self.metadata_field == \"document_name\":\n            return \"file_name\"\n        elif self.metadata_field == \"upload_time\":\n            return \"create_time\"\n        elif self.metadata_field == \"update_time\":\n            return \"update_time\"\n        elif self.metadata_field == \"uploader\":\n            return \"user_name\"\n        elif self.metadata_field == \"updater\":\n            return \"updater_name\"\n        else:\n            raise ValueError(f\"Unsupported preset metadata field: {self.metadata_field}\")\n\n    def get_knowledge_file_filter(self, field_info: Dict, parent_node: BaseNode, is_preset: bool) -> (str, List[Dict]):\n        \"\"\" get knowledge file filter field info for mysql \"\"\"\n        right_value = self.right_value\n        if self.right_value_type == 'ref' and self.right_value:\n            right_value = parent_node.get_other_node_variable(self.right_value)\n        field_type = field_info.get('field_type')\n        right_value = self.convert_right_value(field_type, right_value, is_preset)\n        if is_preset:\n            field_key = self.convert_preset_filed()\n        else:\n            field_key = f\"JSON_UNQUOTE(JSON_EXTRACT(`user_metadata`, '$.{self.metadata_field}.field_value'))\"\n\n        key_info = {}\n        if self.comparison_operation == ComparisonType.EQUAL:\n            key_info['comparison'] = '='\n            key_info['value'] = right_value\n        elif self.comparison_operation == ComparisonType.NOT_EQUAL:\n            key_info['comparison'] = '!='\n            key_info['value'] = right_value\n        elif self.comparison_operation == ComparisonType.CONTAINS:\n            key_info['comparison'] = 'like'\n            key_info['value'] = f\"%{right_value}%\"\n        elif self.comparison_operation == ComparisonType.NOT_CONTAINS:\n            key_info['comparison'] = 'not like'\n            key_info['value'] = f\"%{right_value}%\"\n        elif self.comparison_operation == ComparisonType.STARTS_WITH:\n            key_info['comparison'] = 'like'\n            key_info['value'] = f\"{right_value}%\"\n        elif self.comparison_operation == ComparisonType.ENDS_WITH:\n            key_info['comparison'] = 'like'\n            key_info['value'] = f\"%{right_value}\"\n        elif self.comparison_operation == ComparisonType.IS_EMPTY:\n            key_info['comparison'] = '='\n            key_info['value'] = 'null'\n        elif self.comparison_operation == ComparisonType.IS_NOT_EMPTY:\n            key_info['comparison'] = '!='\n            key_info['value'] = 'null'\n        elif self.comparison_operation == ComparisonType.GREATER_THAN:\n            key_info['comparison'] = '>'\n            key_info['value'] = right_value\n        elif self.comparison_operation == ComparisonType.GREATER_THAN_OR_EQUAL:\n            key_info['comparison'] = '>='\n            key_info['value'] = right_value\n        elif self.comparison_operation == ComparisonType.LESS_THAN:\n            key_info['comparison'] = '<'\n            key_info['value'] = right_value\n        elif self.comparison_operation == ComparisonType.LESS_THAN_OR_EQUAL:\n            key_info['comparison'] = '<='\n            key_info['value'] = right_value\n        else:\n            raise ValueError(f\"Unsupported comparison operation: {self.comparison_operation}\")\n        if not is_preset and self.comparison_operation in [ComparisonType.GREATER_THAN,\n                                                           ComparisonType.GREATER_THAN_OR_EQUAL,\n                                                           ComparisonType.LESS_THAN,\n                                                           ComparisonType.LESS_THAN_OR_EQUAL]:\n            key_info['extra_filter'] = [{\n                'comparison': '!=',\n                'value': 'null'\n            }]\n        return {field_key: key_info}\n\n\nclass ConditionCases(BaseModel):\n    id: str = Field(default=None, description='Unique id for condition case')\n    conditions: List[ConditionOne] = Field(default_factory=list, description='List of conditions')\n    operator: Literal['and', 'or'] = Field(default='and', description='Logical operator to combine conditions')\n    enabled: bool = Field(default=False, description='Whether the condition case is enabled')\n\n    def get_knowledge_filter(self, knowledge: Knowledge, parent_node: BaseNode) -> (str, Dict):\n        \"\"\" if return is None, filter file is empty, don't need to retrieve from this knowledge \"\"\"\n        if not self.enabled or not self.conditions:\n            return \"\", {}\n\n        metadata_field_info = {}\n        if knowledge.metadata_fields:\n            metadata_field_info = {one[\"field_name\"]: one for one in knowledge.metadata_fields}\n\n        # Built-in metadata fields\n        preset_field_info = {\n            one.field_name: one.model_dump() for one in KNOWLEDGE_RAG_METADATA_SCHEMA if\n            one.field_name != \"user_metadata\"\n        }\n        all_filter_field = []\n        for condition in self.conditions:\n            if int(condition.knowledge_id) != knowledge.id:\n                continue\n            if field_info := preset_field_info.get(condition.metadata_field):\n                filter_field_info = condition.get_knowledge_file_filter(field_info, parent_node, True)\n            elif field_info := metadata_field_info.get(condition.metadata_field):\n                filter_field_info = condition.get_knowledge_file_filter(field_info, parent_node, False)\n            else:\n                logger.warning(f\"condition field {condition.metadata_field} not in knowledge metadata fields\")\n                raise ValueError(f\"field {condition.metadata_field} not in knowledge metadata fields\")\n            all_filter_field.append(filter_field_info)\n        if not all_filter_field:\n            return \"\", {}\n\n        file_ids = KnowledgeFileDao.filter_file_by_metadata_fields(knowledge.id, self.operator, all_filter_field)\n        if not file_ids:\n            # no file match the filter condition\n            logger.debug(f'knowledge {knowledge.id} no file match the filter condition')\n            return None, None\n        milvus_filter = f\"document_id in {file_ids}\"\n        es_filter = {\"filter\": [{\"terms\": {\"metadata.document_id\": file_ids}}]}\n        return milvus_filter, es_filter\n\n\nclass RagUtils(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self._knowledge_type = self.node_params.get('knowledge', {}).get('type', \"knowledge\")\n        self._knowledge_value = [\n            one['key'] for one in self.node_params.get('knowledge', {}).get('value', [])\n        ]\n\n        self._advance_kwargs = self.node_params.get('advanced_retrieval_switch', {})\n        self._metadata_filter = ConditionCases(**self.node_params.get('metadata_filter', {}))\n        if self._advance_kwargs:\n            self._advance_kwargs = self.node_params.get('advanced_retrieval_switch', {})\n            self._knowledge_auth = self._advance_kwargs['user_auth']\n            self._max_chunk_size = int(self._advance_kwargs['max_chunk_size'])\n            self._keyword_weight = float(self._advance_kwargs['keyword_weight'])\n            self._vector_weight = float(self._advance_kwargs['vector_weight'])\n            self._rerank_flag = self._advance_kwargs['rerank_flag']\n            self._rerank_model_id = self._advance_kwargs['rerank_model']\n        else:\n            self._knowledge_auth = self.node_params.get('user_auth', False)\n            self._max_chunk_size = int(self.node_params.get('max_chunk_size', 15000))\n            self._keyword_weight = 0.5\n            self._vector_weight = 0.5\n            self._rerank_flag = False\n            self._rerank_model_id = ''\n\n        self._multi_milvus_retriever = None\n        self._multi_es_retriever = None\n        self._knowledge_vector_list = []\n        self._retriever_kwargs = {\"k\": 100, \"param\": {\"ef\": 110}}\n        self._rerank_model = None\n        self._knowledge_retriever_tool = None\n\n    def _run(self, unique_id: str) -> Dict[str, Any]:\n        raise NotImplementedError()\n\n    @staticmethod\n    def format_timestamp(timestamp: int) -> str:\n        try:\n            return datetime.fromtimestamp(timestamp).strftime('%Y-%m-%dT%H:%M:%S')\n        except Exception as e:\n            logger.error(f\"Error formatting timestamp {timestamp}: {e}\")\n            return str(timestamp)\n\n    def retrieve_question(self, question: str) -> List[Document]:\n        # 1: retrieve documents from multi retrievers\n        knowledge_retriever_tool = KnowledgeRetrieverTool(\n            vector_retriever=self._multi_milvus_retriever,\n            elastic_retriever=self._multi_es_retriever,\n            max_content=self._max_chunk_size,\n            rrf_weights=[self._vector_weight, self._keyword_weight],\n            rrf_remove_zero_score=True,\n            rerank=self._rerank_model,\n            sort_by_source_and_index=True\n        )\n        finally_docs = knowledge_retriever_tool.invoke(input={\"query\": question})\n        all_file_id = set([one.metadata.get(\"document_id\") for one in finally_docs])\n        file_map = {}\n        if finally_docs:\n            if self._knowledge_type == 'knowledge':\n                file_info = KnowledgeFileDao.get_file_by_ids(list(all_file_id))\n                file_map = {one.id: one for one in file_info}\n            for one in finally_docs:\n                if \"upload_time\" in one.metadata:\n                    one.metadata[\"upload_time\"] = self.format_timestamp(one.metadata[\"upload_time\"])\n                if \"update_time\" in one.metadata:\n                    one.metadata[\"update_time\"] = self.format_timestamp(one.metadata[\"update_time\"])\n                file_id = one.metadata.get('document_id') or one.metadata.get('file_id')\n                if file_id and file_map.get(file_id):\n                    for user_key, user_value in one.metadata.get('user_metadata', {}).items():\n                        field_info = file_map[file_id].user_metadata.get(user_key)\n                        if field_info and field_info.get('field_type') == MetadataFieldType.TIME.value:\n                            one.metadata[\"user_metadata\"][user_key] = self.format_timestamp(user_value)\n        return finally_docs\n\n    def init_user_question(self) -> List[str]:\n        # Convert all user questions to strings by default\n        ret = []\n        for one in self.node_params['user_question']:\n            ret.append(f\"{self.get_other_node_variable(one)}\")\n        return ret\n\n    def init_rerank_model(self):\n        if not self._rerank_flag or not self._rerank_model_id:\n            return\n        if self._rerank_model:\n            return\n        self._rerank_model = LLMService.get_bisheng_rerank_sync(model_id=self._rerank_model_id,\n                                                                app_id=self.workflow_id,\n                                                                app_name=self.workflow_name,\n                                                                app_type=ApplicationTypeEnum.WORKFLOW,\n                                                                user_id=self.user_id)\n\n    def init_multi_retriever(self):\n        if self._knowledge_type == \"knowledge\":\n            self.init_knowledge_retriever()\n        else:\n            self.init_file_retriever()\n\n    def init_knowledge_retriever(self):\n        \"\"\" retriever from knowledge base \"\"\"\n        if not self._knowledge_vector_list:\n            self._knowledge_vector_list = KnowledgeRag.get_multi_knowledge_vectorstore_sync(\n                invoke_user_id=self.user_id,\n                knowledge_ids=self._knowledge_value,\n                user_name=self.user_info.user_name,\n                check_auth=self._knowledge_auth,\n                include_es=self._keyword_weight > 0,\n                include_milvus=self._vector_weight > 0,\n            )\n        all_milvus = []\n        all_milvus_filter = []\n        all_es = []\n        all_es_filter = []\n        self._multi_milvus_retriever = None\n        self._multi_es_retriever = None\n        for knowledge_id, knowledge_info in self._knowledge_vector_list.items():\n            knowledge = knowledge_info.get('knowledge')\n            milvus_vector = knowledge_info.get('milvus')\n            es_vector = knowledge_info.get('es')\n            milvus_filter, es_filter = self._metadata_filter.get_knowledge_filter(knowledge=knowledge,\n                                                                                  parent_node=self)\n            if milvus_filter is None and es_filter is None:\n                continue\n            if milvus_vector:\n                all_milvus.append(milvus_vector)\n                milvus_filter = {\"expr\": milvus_filter} if milvus_filter else {}\n                logger.debug(f'retrieve milvus filter: {milvus_filter}')\n                all_milvus_filter.append(milvus_filter | self._retriever_kwargs)\n            if es_vector:\n                all_es.append(es_vector)\n                logger.debug(f'retrieve es filter: {es_filter}')\n                all_es_filter.append(es_filter | self._retriever_kwargs)\n\n        if all_milvus:\n            self._multi_milvus_retriever = MultiRetriever(\n                vectors=all_milvus,\n                search_kwargs=all_milvus_filter,\n                finally_k=self._retriever_kwargs[\"k\"]\n            )\n        if all_es:\n            self._multi_es_retriever = MultiRetriever(\n                vectors=all_es,\n                search_kwargs=all_es_filter,\n                finally_k=self._retriever_kwargs[\"k\"]\n            )\n\n    def init_file_retriever(self):\n        \"\"\" retriever from file user upload \"\"\"\n        file_ids = []\n        for one in self._knowledge_value:\n            file_metadata = self.get_other_node_variable(one)\n            if not file_metadata:\n                # No corresponding temporary file data found, User did not upload file\n                continue\n            file_ids.append(file_metadata[0]['document_id'])\n        if not file_ids:\n            self._multi_es_retriever = None\n            self._multi_milvus_retriever = None\n            return\n        embeddings = LLMService.get_knowledge_default_embedding(self.user_id)\n        if not embeddings:\n            raise Exception('No knowledge base defaults configuredembeddingModels')\n\n        # vectorstore use different collection_name for different embedding model\n        tmp_collection_name = self.get_milvus_collection_name(getattr(embeddings, 'model_id'))\n        milvus_vector = KnowledgeRag.init_milvus_vectorstore(collection_name=tmp_collection_name, embeddings=embeddings)\n        milvus_extra = {\"expr\": f\"document_id in {file_ids}\"}\n        self._multi_milvus_retriever = milvus_vector.as_retriever(search_kwargs=self._retriever_kwargs | milvus_extra)\n\n        es_extra = {\"filter\": [{\"terms\": {\"metadata.document_id\": file_ids}}]}\n        es_vector = KnowledgeRag.init_es_vectorstore_sync(index_name=self.tmp_collection_name)\n        self._multi_es_retriever = es_vector.as_retriever(search_kwargs=self._retriever_kwargs | es_extra)\n"
  },
  {
    "path": "src/backend/bisheng/workflow/common/node.py",
    "content": "import copy\nfrom enum import Enum\nfrom typing import Optional, Any, List\n\nfrom pydantic import BaseModel, Field, field_validator\n\n\nclass NodeType(Enum):\n    \"\"\" Node type \"\"\"\n    START = \"start\"\n    END = \"end\"\n    INPUT = \"input\"\n    AGENT = \"agent\"\n    CODE = \"code\"\n    CONDITION = \"condition\"\n    LLM = \"llm\"\n    OUTPUT = \"output\"\n    FAKE_OUTPUT = \"fake_output\"\n    QA_RETRIEVER = \"qa_retriever\"\n    RAG = \"rag\"\n    REPORT = \"report\"\n    TOOL = \"tool\"\n    KNOWLEDGE_RETRIEVER = \"knowledge_retriever\"\n\n    NOTE = 'note'  # Notes node Knowledge is used to display annotations, not actual execution nodes\n\n\nclass NodeParams(BaseModel):\n    key: str = Field(default=\"\", description=\"Variablekey\")\n    label: Optional[str] = Field(\"\", description=\"Variable description text\")\n    value: Optional[Any] = Field(None, description=\"Value of the variable\")\n\n    # Variable type -> Detailed reference for data format https://dataelem.feishu.cn/wiki/IfBvwwvfFiHjuQkjFJgcxzoGnxb\n    type: Optional[str] = Field(\"\", description=\"Variable type\")\n    help: Optional[str] = Field(\"\", description=\"Variable Help Text\")\n    tab: Optional[str] = Field(\"\", description=\"Variable belongs totab, empty to show all\")\n    placeholder: Optional[str] = Field(\"\", description=\"Variable placeholder text\")\n    required: Optional[bool] = Field(False, description=\"Required?\")\n    options: Optional[Any] = Field(None, description=\"Variable options\")\n\n\nclass NodeGroupParams(BaseModel):\n    name: Optional[str] = Field(default=\"\", description=\"Group name\")\n    params: List[NodeParams] = Field(..., description=\"Group params\")\n    description: Optional[str] = Field(default=\"\", description=\"Node description\")\n\n\nclass BaseNodeData(BaseModel):\n    id: str = Field(default=\"\", description=\"Unique id for node\")\n    type: str = Field(..., description=\"Node type\")\n    name: Optional[str] = Field(default=\"\", description=\"Node name\")\n    description: Optional[str] = Field(default=\"\", description=\"Node description\")\n    group_params: Optional[List[NodeGroupParams]] = Field(default=None, description=\"Node group params\")\n    tab: Optional[dict] = Field({}, description=\"tab config\")\n    tool_key: Optional[str] = Field(\"\", description=\"unique tool id, only for tool node\")\n    v: Optional[int] = Field(default=0, description=\"node version\")\n\n    @field_validator('v', mode='before')\n    @classmethod\n    def convert_v_to_int(cls, v: str | int | None) -> int:\n        if isinstance(v, str):\n            return int(v)\n        elif v is None:\n            return 0\n        return v\n\n    def get_variable_info(self, variable_key: str) -> NodeParams | None:\n        for group_info in self.group_params:\n            for one in group_info.params:\n                if one.key == variable_key:\n                    return copy.deepcopy(one)\n        return None\n"
  },
  {
    "path": "src/backend/bisheng/workflow/common/workflow.py",
    "content": "from enum import Enum\n\n\nclass WorkflowStatus(Enum):\n    WAITING = 'WAITING'  # Waiting for asynchronous task scheduling\n    RUNNING = 'RUNNING'\n    SUCCESS = 'SUCCESS'\n    FAILED = 'FAILED'\n    INPUT = 'INPUT'  # Status to be entered\n    INPUT_OVER = 'INPUT_OVER'  # Entered status\n"
  },
  {
    "path": "src/backend/bisheng/workflow/edges/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/edges/edges.py",
    "content": "from typing import Optional, List, Any\n\nfrom pydantic import BaseModel, Field\n\n\nclass EdgeBase(BaseModel):\n    id: str = Field(..., description=\"Unique id for edge\")\n\n    source: str = Field(..., description=\"source node id\")\n    sourceHandle: str = Field(..., description=\"source node handle\")\n    sourceType: Optional[str] = Field(\"\", description=\"source node type\")\n\n    target: str = Field(..., description=\"target node id\")\n    targetHandle: str = Field(..., description=\"target node handle\")\n    targetType: Optional[str] = Field(\"\", description=\"target node type\")\n\n\nclass EdgeManage:\n\n    def __init__(self, edges: List[Any]):\n        self.edges: List[EdgeBase] = [EdgeBase(**one) for one in edges]\n\n        # source: [edges]\n        self.source_map = {}\n        # target: [edges]\n        self.target_map = {}\n        for one in self.edges:\n            if one.source not in self.source_map:\n                self.source_map[one.source] = []\n            self.source_map[one.source].append(one)\n\n            if one.target not in self.target_map:\n                self.target_map[one.target] = []\n            self.target_map[one.target].append(one)\n\n    def get_target_node(self, source: str) -> List[str] | None:\n        \"\"\" get target node id by source node id\"\"\"\n        if source not in self.source_map:\n            return None\n        return [one.target for one in self.source_map[source]]\n\n    def get_source_node(self, target: str) -> List[str] | None:\n        \"\"\" get source node id by target node id\"\"\"\n        if target not in self.target_map:\n            return None\n        return [one.source for one in self.target_map[target]]\n\n    def get_source_edges(self, target: str) -> List[EdgeBase] | None:\n        \"\"\" get source edges by target node id\"\"\"\n        if target not in self.target_map:\n            return None\n        return self.target_map[target]\n\n    def get_target_edges(self, source: str) -> List[EdgeBase] | None:\n        \"\"\" get target edges by source node id\"\"\"\n        if source not in self.source_map:\n            return None\n        return self.source_map[source]\n\n    def get_all_edges_nodes(self, start_node_id: str, end_node_id: str) -> List[List[str]]:\n        \"\"\" get all branch nodes from start node to end node \"\"\"\n        branches = []\n        def get_node_branch(node_id, branch: List, node_map: dict):\n            # The nodes that have been traversed are no longer traversed, indicating that they are looped\n            if node_id in node_map or node_id == end_node_id:\n                branch.append(node_id)\n                branches.append(branch)\n                return branch\n            branch.append(node_id)\n            node_map[node_id] = True\n            next_nodes = self.get_target_node(node_id)\n            if not next_nodes:\n                branches.append(branch)\n                return branch\n\n            for one_node in next_nodes:\n                tmp_node_map = node_map.copy()\n                tmp_branch = branch.copy()\n                get_node_branch(one_node, tmp_branch, tmp_node_map)\n            return branch\n        get_node_branch(start_node_id, [], {})\n        return branches\n\n    def get_next_nodes(self, node_id: str, exclude: Optional[List[str]] = None) -> List[str] | None:\n        \"\"\" get all next nodes by node id\"\"\"\n        # Get direct downstream nodes\n        output_nodes = self.get_target_node(node_id)\n        if not output_nodes:\n            return []\n        if not exclude:\n            exclude = [node_id]\n\n        # Exclude specified nodes\n        for one in exclude:\n            if one in output_nodes:\n                output_nodes.remove(one)\n\n        exclude.extend(output_nodes)\n        for one in output_nodes:\n            next_nodes = self.get_next_nodes(one, exclude=exclude)\n            if next_nodes:\n                output_nodes.extend(next_nodes)\n\n        return output_nodes\n"
  },
  {
    "path": "src/backend/bisheng/workflow/graph/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/graph/graph_engine.py",
    "content": "import operator\nfrom typing import Annotated, Any, Dict\n\nfrom langgraph.checkpoint.memory import MemorySaver\nfrom langgraph.constants import END, START\nfrom langgraph.graph import StateGraph\nfrom loguru import logger\nfrom typing_extensions import TypedDict\n\nfrom bisheng.utils.exceptions import IgnoreException\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.callback.event import UserInputData\nfrom bisheng.workflow.common.node import BaseNodeData, NodeType\nfrom bisheng.workflow.common.workflow import WorkflowStatus\nfrom bisheng.workflow.edges.edges import EdgeManage\nfrom bisheng.workflow.graph.graph_state import GraphState\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.node_manage import NodeFactory\nfrom bisheng.workflow.nodes.output.output_fake import OutputFakeNode\n\n\nclass TempState(TypedDict):\n    # not use, only for langgraph state graph\n    flag: Annotated[bool, operator.and_]\n\n\nclass GraphEngine:\n\n    def __init__(self,\n                 user_id: int = None,\n                 workflow_id: str = None,\n                 workflow_name: str = '',\n                 workflow_data: Dict = None,\n                 async_mode: bool = False,\n                 max_steps: int = 0,\n                 callback: BaseCallback = None):\n        self.user_id = user_id\n        self.workflow_id = workflow_id\n        self.workflow_name = workflow_name\n        self.workflow_data = workflow_data\n        self.max_steps = max_steps\n        self.async_mode = async_mode\n        # Callbacks\n        self.callback = callback\n\n        # node_id: NodeInstance\n        self.nodes_map = {}\n        # record how many nodes fan in this node\n        self.nodes_fan_in = {}  # node_id: [node_ids]\n        # record how many nodes next to this node\n        self.nodes_next_nodes = {}  # node_id: {node_ids}\n\n        # node_id: 1; Represents fromstartThe longest path from a node to this node\n        self.node_level = {}\n        # List of mutually exclusive nodes, containingconditionNodes andoutputNode (selective interaction)\n        self.condition_nodes = []\n\n        self.edges = None\n        self.graph_state = GraphState()\n\n        # init langgraph state graph\n        self.graph_builder = StateGraph(TempState)\n        self.graph = None\n        self.graph_config = {'configurable': {'thread_id': '1'}, 'recursion_limit': 50}\n\n        self.status = WorkflowStatus.RUNNING.value\n        self.reason = ''  # Failure Reason\n\n        self.build_edges()\n        self.build_nodes()\n\n    def build_edges(self):\n        # init edges\n        self.edges = EdgeManage(self.workflow_data.get('edges', []))\n\n    def add_node_edge(self, node_instance: BaseNode):\n        \"\"\"  Link edges of nodes  \"\"\"\n        if node_instance.type == NodeType.END.value or node_instance.type == NodeType.FAKE_OUTPUT.value:\n            return\n        # get target nodes\n        target_node_ids = self.edges.get_target_node(node_instance.id)\n        source_node_ids = self.edges.get_source_node(node_instance.id)\n        # There are no linked nodes reporting errors\n        if not target_node_ids and not source_node_ids:\n            raise Exception(\n                f'node {node_instance.name} {node_instance.id} must have at least one edge')\n\n        # output Node followed by afake Nodes are used to handle interrupts\n        if node_instance.type == NodeType.OUTPUT.value:\n            fake_node = self.nodes_map[f'{node_instance.id}_fake']\n            if self.async_mode:\n                self.graph_builder.add_node(fake_node.id, fake_node.arun)\n            else:\n                self.graph_builder.add_node(fake_node.id, fake_node.run)\n            self.graph_builder.add_edge(node_instance.id, fake_node.id)\n            self.graph_builder.add_conditional_edges(\n                fake_node.id, node_instance.route_node,\n                {node_id: node_id\n                 for node_id in target_node_ids})\n            return\n\n        # condition And output Need to connect behind the node langgraphright of privacy edge_condition\n        if node_instance.type == NodeType.CONDITION.value:\n            self.graph_builder.add_conditional_edges(\n                node_instance.id, node_instance.route_node,\n                {node_id: node_id\n                 for node_id in target_node_ids})\n            return\n\n        # Links Totargetnode_amb\n        for node_id in target_node_ids:\n            if node_id not in self.nodes_map:\n                raise Exception(f'target node {node_id} not found')\n            if self.nodes_fan_in.get(node_id) and len(self.nodes_fan_in.get(node_id)) > 1:\n                # need wait all fan in node exec over\n                continue\n            self.graph_builder.add_edge(node_instance.id, node_id)\n\n    def build_more_fan_in_node(self):\n        for node_id, source_ids in self.nodes_fan_in.items():\n            if not source_ids or len(source_ids) <= 1:\n                continue\n            # There are multiple fan-in nodes to determine if this node needs to wait\n            wait_nodes, no_wait_nodes = self.parse_fan_in_node(node_id)\n            logger.debug(f'node {node_id} wait nodes {wait_nodes}, no wait nodes {no_wait_nodes}')\n            if wait_nodes:\n                self.graph_builder.add_edge(wait_nodes, node_id)\n            if no_wait_nodes:\n                for one in no_wait_nodes:\n                    self.graph_builder.add_edge(one, node_id)\n\n    def parse_fan_in_node(self, node_id: str):\n        source_ids = self.nodes_fan_in.get(node_id)\n\n        # Whether the hierarchy of all precursor nodes is less than or equal to this node\n        all_source_node_prev = True\n        for one in source_ids:\n            if self.node_level[one] > self.node_level[node_id]:\n                all_source_node_prev = False\n                break\n\n        # in the precursor node Contains The downstream node of this node does not need to wait, it needs to be excludedoutputAndconditionNode, because the two nodes are connected to this node through the conditional edge\n        if not all_source_node_prev:\n            return [], [one for one in source_ids if not one.startswith(('output_', 'condition_'))]\n\n        # Determine if there is aconditionNode oroutputNode (selective interaction) to this node Two unique paths\n        all_branches = []\n        for one in self.condition_nodes:\n            if node_id == one:\n                continue\n            branches = self.edges.get_all_edges_nodes(one, node_id)\n            for branch in branches:\n                if node_id not in branch:\n                    continue\n                branch.remove(node_id)\n                branch.remove(one)\n                all_branches.append(branch)\n\n        def judge_not_same_branch():\n            # Determine if there are two unique paths in all edges\n            for i in range(len(all_branches)):\n                for j in range(i + 1, len(all_branches)):\n                    if not (set(all_branches[i]) & set(all_branches[j])):\n                        return True\n            return False\n\n        # Explain that it is a mutually exclusive ending node, there is no need to wait\n        if judge_not_same_branch():\n            return [], [one for one in source_ids if not one.startswith(('output_', 'condition_'))]\n\n        # Explain that it is not a mutually exclusive closing node, and you need to wait for all the predecessor nodes to finish executing before executing\n        wait_nodes = []\n        for one in source_ids:\n            if one.startswith('output_'):\n                one = f'{one}_fake'\n            wait_nodes.append(one)\n        return wait_nodes, []\n\n    def build_node_level(self, start_node: str):\n        \"\"\" Calculate hierarchy for all nodes \"\"\"\n\n        # Hierarchy of marker nodes\n        def mark_node_level(node_id, node_map: dict, level: int):\n            # The nodes that have been traversed are no longer traversed, indicating that they are looped\n            if node_id in node_map:\n                return\n            self.node_level[node_id] = max(self.node_level.get(node_id, 0), level)\n            node_map[node_id] = True\n            next_nodes = self.edges.get_target_node(node_id)\n            if not next_nodes:\n                return\n\n            for one_node in next_nodes:\n                tmp_node_map = node_map.copy()\n                mark_node_level(one_node, tmp_node_map, level + 1)\n            return\n\n        mark_node_level(start_node, {}, 0)\n\n    def init_nodes(self, nodes):\n        \"\"\" return node id \"\"\"\n        start_node = None\n        end_nodes = []\n        interrupt_nodes = []\n        for node in nodes:\n            node_data = BaseNodeData(**node.get('data', {}))\n            if not node_data.id:\n                raise Exception('node must have attribute id')\n            if node_data.type == NodeType.NOTE.value:\n                continue\n\n            node_instance = NodeFactory.instance_node(node_type=node_data.type,\n                                                      node_data=node_data,\n                                                      user_id=self.user_id,\n                                                      workflow_id=self.workflow_id,\n                                                      graph_state=self.graph_state,\n                                                      target_edges=self.edges.get_target_edges(\n                                                          node_data.id),\n                                                      max_steps=self.max_steps,\n                                                      callback=self.callback,\n                                                      workflow_name=self.workflow_name)\n            if node_instance.is_condition_node():\n                self.condition_nodes.append(node_instance.id)\n            self.nodes_map[node_data.id] = node_instance\n            self.nodes_fan_in[node_instance.id] = self.edges.get_source_node(node_instance.id)\n            if node_instance.type not in [NodeType.START.value]:\n                self.nodes_next_nodes[node_instance.id] = self.edges.get_next_nodes(\n                    node_instance.id)\n\n            # add node into langgraph\n            if self.async_mode:\n                self.graph_builder.add_node(node_instance.id, node_instance.arun)\n            else:\n                self.graph_builder.add_node(node_instance.id, node_instance.run)\n\n            # find special node\n            if node_instance.type == NodeType.START.value:\n                start_node = node_instance.id\n            elif node_instance.type == NodeType.END.value:\n                end_nodes.append(node_instance.id)\n            elif node_instance.type == NodeType.INPUT.value:\n                # Node that needs to abort receiving user input\n                interrupt_nodes.append(node_instance.id)\n            elif node_instance.type == NodeType.OUTPUT.value:\n                # Node that needs to abort receiving user input\n                fake_node = OutputFakeNode(id=f'{node_instance.id}_fake',\n                                           output_node=node_instance,\n                                           type=NodeType.FAKE_OUTPUT.value)\n                self.nodes_map[fake_node.id] = fake_node\n                interrupt_nodes.append(fake_node.id)\n        return start_node, end_nodes, interrupt_nodes\n\n    def build_nodes(self):\n        nodes = self.workflow_data.get('nodes', [])\n        if not nodes:\n            raise Exception('workflow must have at least one node')\n\n        start_node, end_nodes, interrupt_nodes = self.init_nodes(nodes)\n\n        if not start_node:\n            raise Exception('workflow must have start node')\n        self.graph_builder.add_edge(START, start_node)\n        if end_nodes:\n            for end_node in end_nodes:\n                self.graph_builder.add_edge(end_node, END)\n\n        # Calculate hierarchy of nodes\n        self.build_node_level(start_node)\n\n        # Link other nodes\n        for node_id, node_instance in self.nodes_map.items():\n            self.add_node_edge(node_instance)\n\n        # Handle nodes with multiple fan-in nodes\n        self.build_more_fan_in_node()\n\n        # compile langgraph\n        self.graph = self.graph_builder.compile(checkpointer=MemorySaver(),\n                                                interrupt_before=interrupt_nodes)\n        self.graph_config['recursion_limit'] = max(\n            (len(nodes) - len(end_nodes) - 1) * self.max_steps, 1) + len(end_nodes) + 1\n\n        # import datetime\n        # with open(f\"./bisheng/data/graph/graph_{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.png\",\n        #           'wb') as f:\n        #     f.write(self.graph.get_graph().draw_mermaid_png())\n\n    def _run(self, input_data: Any):\n        try:\n            self.status = WorkflowStatus.RUNNING.value\n            for _ in self.graph.stream(input_data, config=self.graph_config):\n                pass\n            self.judge_status()\n        except IgnoreException as e:\n            logger.warning(f'graph ignore error: {e}')\n            self.status = WorkflowStatus.FAILED.value\n            self.reason = str(e)\n        except Exception as e:\n            logger.exception('graph run error')\n            self.status = WorkflowStatus.FAILED.value\n            self.reason = str(e)\n\n    async def _arun(self, input_data: Any):\n        try:\n            self.status = WorkflowStatus.RUNNING.value\n            async for _ in self.graph.astream(input_data, config=self.graph_config):\n                pass\n            self.judge_status()\n        except IgnoreException as e:\n            logger.warning(f'graph ignore error: {e}')\n            self.status = WorkflowStatus.FAILED.value\n            self.reason = str(e)\n        except Exception as e:\n            logger.exception('graph arun error')\n            self.status = WorkflowStatus.FAILED.value\n            self.reason = str(e)\n\n    def run(self):\n        self._run({'flag': True})\n\n    async def arun(self):\n        await self._arun({'flag': True})\n\n    def continue_run(self, data: Any = None):\n        \"\"\"\n        Receive user input\n        data：{node_id: {key: value}}\n        \"\"\"\n        # After receiving user input, proceed\n        if data is None:\n            data = {}\n\n        # Assign user input to the corresponding node\n        for node_id, node_params in data.items():\n            node_instance = self.nodes_map[node_id]\n            node_instance.handle_input(node_params)\n\n        # Resumegraph\n        self._run(None)\n\n    async def acontinue_run(self, data: Any = None):\n        \"\"\"\n        Receive user input\n        data：{node_id: {key: value}}\n        \"\"\"\n        # After receiving user input, proceed\n        if data is None:\n            data = {}\n\n        # Assign user input to the corresponding node\n        for node_id, node_params in data.items():\n            node_instance = self.nodes_map[node_id]\n            node_instance.handle_input(node_params)\n\n        # Resumegraph\n        await self._arun(None)\n\n    def judge_status(self):\n        # Judgment Status\n        snapshot = self.graph.get_state(self.graph_config)\n        next_nodes = snapshot.next\n        # Explain that the execution has been completed\n        if len(next_nodes) == 0:\n            self.status = WorkflowStatus.SUCCESS.value\n            return\n\n        # Determine what needs to be donenodetype, setting the corresponding engine state\n        for node_id in next_nodes:\n            node_instance = self.nodes_map[node_id]\n            if node_instance.type == NodeType.INPUT.value:\n                input_schema = node_instance.get_input_schema()\n                if input_schema:\n                    # Callback events requiring user input\n                    self.status = WorkflowStatus.INPUT.value\n                    self.callback.on_user_input(\n                        UserInputData(node_id=node_id, name=node_instance.name, input_schema=input_schema))\n                    return\n            elif node_instance.type == NodeType.FAKE_OUTPUT.value:\n                intput_schema = node_instance.get_input_schema()\n                if intput_schema:\n                    # output Node requires user input\n                    self.status = WorkflowStatus.INPUT.value\n                    return\n\n    def stop(self):\n        for _, node_instance in self.nodes_map.items():\n            node_instance.stop()\n"
  },
  {
    "path": "src/backend/bisheng/workflow/graph/graph_state.py",
    "content": "from typing import Any, Dict, Optional, List\n\nfrom langchain.memory import ConversationBufferWindowMemory\nfrom langchain_core.messages import AIMessage, HumanMessage, get_buffer_string, BaseMessage\nfrom pydantic import BaseModel, Field\n\n\nclass GraphState(BaseModel):\n    \"\"\" All nodes Global State Management \"\"\"\n\n    # Store Chat History\n    history_memory: Optional[ConversationBufferWindowMemory] = None\n\n    # Global Variable Pool\n    variables_pool: Dict[str, Dict[str, Any]] = Field(default_factory=dict, description='Global Variable Pool: {node_id: {key: value}}')\n\n    def get_history_memory(self, count: int) -> str:\n        \"\"\" Get chat history\n        'Cause it's not.1Right.1, so rewrite buffer_as_str\"\"\"\n        if not count:\n            count = self.history_memory.k\n        if count == 0:\n            return ''\n        messages = self.history_memory.chat_memory.messages[-count:]\n        return get_buffer_string(\n            messages,\n            human_prefix=self.history_memory.human_prefix,\n            ai_prefix=self.history_memory.ai_prefix,\n        )\n\n    def get_history_list(self, count: int) -> List[BaseMessage]:\n        return self.history_memory.buffer_as_messages[-count:]\n\n\n    def save_context(self, content: str, msg_sender: str) -> None:\n        \"\"\"  Save chat\n        workflow In special cases, the process will have multiple rounds of interaction, so it is not one-to-one, reworking the message structure\"\"\"\n        if msg_sender == 'human':\n            self.history_memory.chat_memory.add_messages([HumanMessage(content=content)])\n        elif msg_sender == 'AI':\n            self.history_memory.chat_memory.add_messages([AIMessage(content=content)])\n\n    def set_variable(self, node_id: str, key: str, value: Any):\n        \"\"\" Put the data generated by the node into a global variable \"\"\"\n        if node_id not in self.variables_pool:\n            self.variables_pool[node_id] = {}\n        self.variables_pool[node_id][key] = value\n\n    def get_variable(self, node_id: str, key: str, count: Optional[int] = None) -> Any:\n        \"\"\" Get data from global variables \"\"\"\n        if node_id not in self.variables_pool:\n            return None\n\n        if key == 'chat_history':\n            return self.get_history_memory(count=count)\n        return self.variables_pool[node_id].get(key)\n\n    def get_variable_by_str(self, contact_key: str, history_count: Optional[int] = None) -> Any:\n        \"\"\"\n        Get data from global variables\n        contact_key: node_id.key#index  #indexNot necessarily\n        \"\"\"\n        tmp_list = contact_key.split('.', 1)\n        node_id = tmp_list[0]\n        var_key = tmp_list[1]\n        variable_val_index = None\n        if var_key.find('#') != -1:\n            var_key, variable_val_index = var_key.split('#')\n        variable_val = self.get_variable(node_id, var_key, history_count)\n\n        # Handling of array variables\n        if variable_val_index:\n            if isinstance(variable_val, list):\n                variable_val_index = int(variable_val_index)\n                if len(variable_val) <= variable_val_index:\n                    raise Exception(f'variable {contact_key} index out of range')\n                return variable_val[variable_val_index]\n            elif isinstance(variable_val, dict):\n                return variable_val.get(variable_val_index)\n            else:\n                raise Exception(f'variable {contact_key} is not a list or dict, not support #index')\n\n        return variable_val\n\n    def set_variable_by_str(self, contact_key: str, value: Any):\n        tmp_list = contact_key.split('.', 1)\n        node_id = tmp_list[0]\n        var_key = tmp_list[1]\n        if var_key.find('#') != -1:\n            var_key, variable_val_index = var_key.split('#')\n            old_value = self.get_variable(node_id, var_key)\n            if not old_value:\n                old_value = {}\n            old_value[variable_val_index] = value\n            value = old_value\n        self.set_variable(node_id, var_key, value)\n\n    def get_all_variables(self) -> Dict[str, Any]:\n        \"\"\" Get all variables,keyarenode_id.keyformat;  \"\"\"\n        ret = {}\n        for node_id, node_variables in self.variables_pool.items():\n            for key, value in node_variables.items():\n                ret[f'{node_id}.{key}'] = self.get_variable(node_id, key)\n                # get preset_question and custom_variables all keys\n                if key in ['preset_question', 'custom_variables']:\n                    for k, v in value.items():\n                        ret[f'{node_id}.{key}#{k}'] = v\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng/workflow/graph/workflow.py",
    "content": "import json\nimport time\nfrom typing import Dict\n\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.common.workflow import WorkflowStatus\nfrom bisheng.workflow.graph.graph_engine import GraphEngine\n\n\nclass Workflow:\n\n    def __init__(self,\n                 workflow_id: str,\n                 workflow_name: str = '',\n                 user_id: int = None,\n                 workflow_data: Dict = None,\n                 async_mode: bool = False,\n                 max_steps: int = 0,\n                 timeout: int = 0,\n                 callback: BaseCallback = None):\n\n        # Unique identifier of the run, unique saved to the databaseID\n        self.workflow_id = workflow_id\n        self.user_id = user_id\n\n        # Timeout, how long has the user input not been received terminatedworkflowRun (in minutes)\n        self.timeout = timeout\n        self.current_time = None\n\n        self.graph_engine = GraphEngine(user_id=user_id,\n                                        async_mode=async_mode,\n                                        workflow_id=workflow_id,\n                                        workflow_name=workflow_name or workflow_id,\n                                        workflow_data=workflow_data,\n                                        max_steps=max_steps,\n                                        callback=callback)\n\n    def save_user_input_history(self, input_data: dict | None):\n        if not input_data:\n            return\n        user_input_str = ''\n        for _, msg in input_data.items():\n            # Under the special handling of session input,keyRemove\n            if len(msg) == 1 and 'user_input' in msg:\n                user_input_str += msg['user_input']\n                continue\n            user_input_str += '\\n' + json.dumps(msg, ensure_ascii=False)\n        self.graph_engine.graph_state.save_context(content=user_input_str, msg_sender='human')\n\n    def run(self, input_data: dict = None) -> (str, str):\n        \"\"\"\n        params:\n            input_data: user input data If not empty, executecontinue\n        return: workflow_status, reason\n        \"\"\"\n        # Implementationworkflow\n        if input_data is not None:\n            self.graph_engine.continue_run(input_data)\n        else:\n            # First run time\n            self.current_time = time.time()\n            self.graph_engine.run()\n        while self.graph_engine.status == WorkflowStatus.RUNNING.value:\n            self.graph_engine.continue_run()\n        return self.graph_engine.status, self.graph_engine.reason\n\n    async def arun(self, input_data: dict = None) -> (str, str):\n        \"\"\"\n        params:\n            input_data: user input data If not empty, executecontinue\n        return: workflow_status, reason\n        \"\"\"\n        # Implementationworkflow\n        if input_data is not None:\n            await self.graph_engine.acontinue_run(input_data)\n        else:\n            # First run time\n            self.current_time = time.time()\n            await self.graph_engine.arun()\n        while self.graph_engine.status == WorkflowStatus.RUNNING.value:\n            await self.graph_engine.acontinue_run()\n        return self.graph_engine.status, self.graph_engine.reason\n\n    def stop(self):\n        self.graph_engine.stop()\n\n    def status(self):\n        return self.graph_engine.status\n\n    def reason(self):\n        return self.graph_engine.reason\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/agent/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/agent/agent.py",
    "content": "import typing\nfrom typing import Any, Dict\n\nfrom langchain_core.messages import HumanMessage\nfrom langchain_core.retrievers import BaseRetriever\nfrom langchain_core.runnables import RunnableConfig\nfrom langgraph.prebuilt import create_react_agent\nfrom loguru import logger\nfrom pydantic import BaseModel, field_validator, Field\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng.workflow.callback.event import StreamMsgOverData\nfrom bisheng.workflow.callback.llm_callback import LLMNodeCallbackHandler\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\nfrom bisheng_langchain.gpts.assistant import ConfigurableAssistant\nfrom bisheng_langchain.gpts.load_tools import load_tools\n\nagent_executor_dict = {\n    'ReAct': 'get_react_agent_executor',\n    'function call': 'get_openai_functions_agent_executor',\n}\n\n\nclass SqlAgentParams(BaseModel):\n    \"\"\" SQL Agent Param Model \"\"\"\n    database_engine: typing.Optional[str] = Field(\"mysql\",\n                                                  description=\"Database type, supportmysql, db2, postgres, gaussdb, oracle\")\n    db_username: str\n    db_password: str\n    db_address: str\n    db_name: str\n    open: bool = False\n\n    @field_validator(\"database_engine\")\n    @classmethod\n    def validate_database_engine(cls, v):\n        # Convert to lowercase\n        if v:\n            v = v.lower()\n            if v not in ['mysql', 'db2', 'postgres', 'gaussdb', 'oracle', 'postgresql']:\n                raise ValueError(\n                    \"Unsupported database engine. Supported engines are: MySQL, DB2, PostgreSql, GaussDB, Oracle.\")\n        return v\n\n\nclass AgentNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        # Determine if it is a single or batch\n        self._tab = self.node_data.tab['value']\n\n        # analyzingprompt\n        self._system_prompt = PromptTemplateParser(template=self.node_params['system_prompt'])\n        self._system_variables = self._system_prompt.extract()\n        self._user_prompt = PromptTemplateParser(template=self.node_params['user_prompt'])\n        self._user_variables = self._user_prompt.extract()\n\n        self._image_prompt = self.node_params.get('image_prompt', [])\n\n        self._batch_variable_list = []\n        self._system_prompt_list = []\n        self._user_prompt_list = []\n        self._tool_invoke_list = []\n        self._log_reasoning_content = []\n\n        # Chat Message\n        self._chat_history_flag = self.node_params['chat_history_flag']['value'] > 0\n        self._chat_history_num = self.node_params['chat_history_flag']['value']\n\n        self._llm = LLMService.get_bisheng_llm_sync(model_id=self.node_params['model_id'],\n                                                    temperature=self.node_params.get('temperature', 0.3),\n                                                    app_id=self.workflow_id,\n                                                    app_name=self.workflow_name,\n                                                    app_type=ApplicationTypeEnum.WORKFLOW,\n                                                    user_id=self.user_id)\n\n        # Whether to output the results to the user\n        self._output_user = self.node_params.get('output_user', False)\n\n        # tools\n        self._tools = self.node_params['tool_list']\n\n        # knowledge\n        # self._knowledge_ids = self.node_params['knowledge_id']\n        # Determine whether it is a knowledge base or a temporary file list\n        self._knowledge_type = self.node_params['knowledge_id']['type']\n        self._knowledge_ids = [\n            one['key'] for one in self.node_params['knowledge_id']['value']\n        ]\n\n        # Supported or notnl2sql\n        self._sql_agent_params = self.node_params.get('sql_agent', None)\n        self._sql_agent = SqlAgentParams.model_validate(self.node_params['sql_agent']) if (\n                self._sql_agent_params and self._sql_agent_params.get(\"open\", False)) else None\n        self._sql_address = ''\n        if self._sql_agent and self._sql_agent.open:\n            self._sql_address = self._init_sql_address()\n\n        # agent\n        self._agent_executor_type = 'React'\n        self._agent = None\n\n    def _init_agent(self, system_prompt: str):\n        # Get a list of configured helper models\n        assistant_llm = LLMService.sync_get_assistant_llm()\n        if not assistant_llm.llm_list:\n            raise Exception('Assistant reasoning model list is empty')\n        default_llm = [\n            one for one in assistant_llm.llm_list if one.model_id == self.node_params['model_id']\n        ]\n        if not default_llm:\n            raise Exception('The selected inference model is not in the list of assistant inference models')\n        default_llm = default_llm[0]\n        self._agent_executor_type = default_llm.agent_executor_type\n        knowledge_retriever = {\n            'max_content': default_llm.knowledge_max_content,\n            'sort_by_source_and_index': default_llm.knowledge_sort_index\n        }\n\n        func_tools = self._init_tools()\n        knowledge_tools = self._init_knowledge_tools(knowledge_retriever)\n        sql_agent_tools = self.init_sql_agent_tool()\n        func_tools.extend(knowledge_tools)\n        func_tools.extend(sql_agent_tools)\n        if self._agent_executor_type == 'ReAct':\n            self._agent = ConfigurableAssistant(\n                agent_executor_type=agent_executor_dict.get(self._agent_executor_type),\n                tools=func_tools,\n                llm=self._llm,\n                assistant_message=system_prompt,\n            )\n        else:\n            self._agent = create_react_agent(self._llm, func_tools, prompt=system_prompt, checkpointer=False)\n\n    def _init_tools(self):\n        if self._tools:\n            tool_ids = [int(one['key']) for one in self._tools]\n            return ToolExecutor.init_by_tool_ids_sync(tool_ids, app_id=self.workflow_id, app_name=self.workflow_name,\n                                                      app_type=ApplicationTypeEnum.WORKFLOW,\n                                                      user_id=self.user_id)\n        else:\n            return []\n\n    def init_sql_agent_tool(self):\n        if not self._sql_address:\n            return []\n        tool_params = {\n            'sql_agent': {\n                'llm': self._llm,\n                'sql_address': self._sql_address\n            }\n        }\n        return load_tools(tool_params=tool_params, llm=self._llm)\n\n    def _init_knowledge_tools(self, knowledge_retriever: dict):\n        if not self._knowledge_ids:\n            return []\n        tools = []\n        for index, knowledge_id in enumerate(self._knowledge_ids):\n            if self._knowledge_type == 'knowledge':\n                knowledge_tool = ToolExecutor.init_knowledge_tool_sync(self.user_id, knowledge_id,\n                                                                       llm=self._llm,\n                                                                       **knowledge_retriever)\n                tools.append(knowledge_tool)\n            else:\n                file_metadata_list = self.get_other_node_variable(knowledge_id)\n                if not file_metadata_list:\n                    # Do not retrieve if no file has been uploaded\n                    continue\n                description = ''\n                for one in file_metadata_list:\n                    description += f'<{one.get(\"document_name\")}>:<{one.get(\"abstract\")}>; '\n                tool_init_params = {\n                    \"name\": f'{knowledge_id.split(\".\")[-1].replace(\"#\", \"\")}_knowledge_{index}',\n                    \"description\": description,\n                    \"vector_retriever\": self.init_file_milvus(file_metadata_list[0]),\n                    \"elastic_retriever\": self.init_file_es(file_metadata_list[0]),\n                    \"llm\": self._llm,\n                    **knowledge_retriever\n                }\n                tmp_file_tool = ToolExecutor.init_tmp_knowledge_tool_sync(**tool_init_params)\n                tools.append(tmp_file_tool)\n        return tools\n\n    def init_file_milvus(self, file_metadata: Dict) -> BaseRetriever:\n        \"\"\" Initialize the temporary file selected by the usermilvus \"\"\"\n        embeddings = LLMService.get_knowledge_default_embedding(self.user_id)\n        if not embeddings:\n            raise Exception('No default configuredembeddingModels')\n        file_ids = [file_metadata['document_id']]\n        collection_name = self.get_milvus_collection_name(getattr(embeddings, 'model_id'))\n        vector_client = KnowledgeRag.init_milvus_vectorstore(collection_name=collection_name, embeddings=embeddings)\n        return vector_client.as_retriever(\n            search_kwargs={\"expr\": f'document_id in {file_ids}'})\n\n    def init_file_es(self, file_metadata: Dict):\n        es_client = KnowledgeRag.init_es_vectorstore_sync(index_name=self.tmp_collection_name)\n        return es_client.as_retriever(\n            search_kwargs={\"filter\": [{\"term\": {\"metadata.document_id\": file_metadata['document_id']}}]})\n\n    def _init_sql_address(self) -> str:\n        \"\"\" Inisialisasi SQL Database Address \"\"\"\n        if not self._sql_agent:\n            return ''\n        if self._sql_agent.database_engine == 'mysql':\n            try:\n                pass\n            except ImportError:\n                raise ImportError('Please install pymysql and sqlalchemy to use mysql database')\n            return f'mysql+pymysql://{self._sql_agent.db_username}:{self._sql_agent.db_password}@{self._sql_agent.db_address}/{self._sql_agent.db_name}?charset=utf8mb4'\n        elif self._sql_agent.database_engine == 'db2':\n            try:\n                pass\n            except ImportError:\n                raise ImportError('Please install ibm_db and ibm_db_sa to use db2 database')\n            return f'db2+ibm_db://{self._sql_agent.db_username}:{self._sql_agent.db_password}@{self._sql_agent.db_address}/{self._sql_agent.db_name}'\n        elif self._sql_agent.database_engine in ['postgres', 'postgresql']:\n            try:\n                pass\n            except ImportError:\n                raise ImportError('Please install psycopg2 and sqlalchemy to use postgresql database')\n            return f'postgresql+psycopg2://{self._sql_agent.db_username}:{self._sql_agent.db_password}@{self._sql_agent.db_address}/{self._sql_agent.db_name}'\n        elif self._sql_agent.database_engine == 'gaussdb':\n            try:\n                pass\n            except ImportError:\n                raise ImportError('Please install psycopg2 and opengauss_sqlalchemy to use gaussdb database')\n            return f'opengauss+psycopg2://{self._sql_agent.db_username}:{self._sql_agent.db_password}@{self._sql_agent.db_address}/{self._sql_agent.db_name}'\n        elif self._sql_agent.database_engine == 'oracle':\n            try:\n                pass\n            except ImportError:\n                raise ImportError('Please install oracledb and sqlalchemy to use oracle database')\n            return f'oracle+oracledb://{self._sql_agent.db_username}:{self._sql_agent.db_password}@{self._sql_agent.db_address}?service_name={self._sql_agent.db_name}'\n        else:\n            raise ValueError(f'Unsupported database engine: {self._sql_agent.database_engine}')\n\n    def _run(self, unique_id: str):\n        ret = {}\n        variable_map = {}\n\n        self._batch_variable_list = []\n        self._system_prompt_list = []\n        self._user_prompt_list = []\n        self._tool_invoke_list = []\n        self._log_reasoning_content = []\n\n        for one in self._system_variables:\n            variable_map[one] = self.get_other_node_variable(one)\n        system_prompt = self._system_prompt.format(variable_map)\n        self._system_prompt_list.append(system_prompt)\n        self._init_agent(system_prompt)\n\n        if self._tab == 'single':\n            self._tool_invoke_list.append([])\n            ret['output'], reasoning_content = self._run_once(None, unique_id, 'output', self._tool_invoke_list[0])\n            self._log_reasoning_content.append(reasoning_content)\n            if self._output_user:\n                self.callback_manager.on_stream_over(StreamMsgOverData(node_id=self.id,\n                                                                       name=self.name,\n                                                                       msg=ret['output'],\n                                                                       reasoning_content=reasoning_content,\n                                                                       unique_id=unique_id,\n                                                                       output_key='output'))\n        else:\n            for index, one in enumerate(self.node_params['batch_variable']):\n                self._batch_variable_list.append(self.get_other_node_variable(one))\n                output_key = self.node_params['output'][index]['key']\n                self._tool_invoke_list.append([])\n                ret[output_key], reasoning_content = self._run_once(one, unique_id, output_key,\n                                                                    self._tool_invoke_list[index])\n                self._log_reasoning_content.append(reasoning_content)\n                if self._output_user:\n                    self.callback_manager.on_stream_over(StreamMsgOverData(node_id=self.id,\n                                                                           name=self.name,\n                                                                           msg=ret[output_key],\n                                                                           reasoning_content=reasoning_content,\n                                                                           unique_id=unique_id,\n                                                                           output_key=output_key))\n\n        logger.debug('agent_over result={}', ret)\n        if self._output_user:\n            # Nonstream Mode, processing results\n            for k, v in ret.items():\n                answer = v\n                self.graph_state.save_context(content=answer, msg_sender='AI')\n\n        return ret\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = []\n        index = 0\n        for k, v in result.items():\n            one_ret = [\n                {\"key\": \"system_prompt\", \"value\": self._system_prompt_list[0], \"type\": \"params\"},\n                {\"key\": \"user_prompt\", \"value\": self._user_prompt_list[index], \"type\": \"params\"},\n            ]\n            if self._batch_variable_list:\n                one_ret.insert(0,\n                               {\"key\": \"batch_variable\", \"value\": self._batch_variable_list[index], \"type\": \"variable\"})\n\n            # Handler Call Log\n            one_ret.extend(self.parse_tool_log(self._tool_invoke_list[index]))\n            if self._log_reasoning_content[index]:\n                one_ret.append(\n                    {\"key\": \"Thinking about content\", \"value\": self._log_reasoning_content[index], \"type\": \"params\"})\n            one_ret.append({\"key\": f'{self.id}.{k}', \"value\": v, \"type\": \"variable\"})\n            ret.append(one_ret)\n            index += 1\n        return ret\n\n    def parse_tool_log(self, tool_invoke_list: list) -> list:\n        ret = []\n        tool_invoke_info = {}\n        for one in tool_invoke_list:\n            if one['run_id'] not in tool_invoke_info:\n                tool_invoke_info[one['run_id']] = {}\n            if one['type'] == 'start':\n                tool_invoke_info[one['run_id']].update({\n                    'name': one['name'],\n                    'input': one['input']\n                })\n            elif one['type'] == 'end':\n                tool_invoke_info[one['run_id']].update({\n                    'output': one['output']\n                })\n            elif one['type'] == 'error':\n                tool_invoke_info[one['run_id']].update({\n                    'output': f'Error: {one[\"error\"]}'\n                })\n        if tool_invoke_info:\n            for one in tool_invoke_info.values():\n                # knowledge_retriever_tool belong into rag logic，not show in tool log\n                if one[\"name\"] == \"knowledge_retriever_tool\":\n                    continue\n                ret.append({\n                    \"key\": one[\"name\"],\n                    \"value\": f\"Tool Input:\\n {one['input']}, Tool Output:\\n {one['output']}\",\n                    \"type\": \"tool\"\n                })\n        return ret\n\n    def _run_once(self, input_variable: str = None, unique_id: str = None, output_key: str = None,\n                  tool_invoke_list: list = None) -> (str, str):\n        \"\"\"\n        params:\n            input_variable: Input variables, if yesbatchthen you need to pass in a variablekey, otherwiseNone\n            unique_id: Node Execute Uniqueid\n            output_key: Output Variableskey\n            tool_invoke_list: Tool Call Log\n        return:\n            0: Output results to user\n            1: Process of model thinking\n        \"\"\"\n        # Description is a variable that references a batch, The value of the variable needs to be replaced with the variable selected by the user\n        special_variable = f'{self.id}.batch_variable'\n        variable_map = {}\n        for one in self._user_variables:\n            if input_variable and one == special_variable:\n                variable_map[one] = self.get_other_node_variable(input_variable)\n                continue\n            variable_map[one] = self.get_other_node_variable(one)\n        user = self._user_prompt.format(variable_map)\n        self._user_prompt_list.append(user)\n\n        chat_history = []\n        if self._chat_history_flag:\n            chat_history = self.graph_state.get_history_list(self._chat_history_num)\n\n        llm_callback = LLMNodeCallbackHandler(callback=self.callback_manager,\n                                              unique_id=unique_id,\n                                              node_id=self.id,\n                                              node_name=self.name,\n                                              output=self._output_user,\n                                              output_key=output_key,\n                                              tool_list=tool_invoke_list,\n                                              cancel_llm_end=True)\n        config = RunnableConfig(callbacks=[llm_callback])\n        human_message = HumanMessage(content=[{\n            'type': 'text',\n            'text': user\n        }])\n        human_message = self.contact_file_into_prompt(human_message, self._image_prompt)\n        chat_history.append(human_message)\n        logger.debug(f'agent invoke chat_history: {chat_history}')\n\n        if self._agent_executor_type == 'ReAct':\n            result = self._agent.invoke({\n                'input': chat_history[-1].content,\n                'chat_history': chat_history[:-1],\n            }, config=config)\n            output = result['agent_outcome'].return_values['output']\n            if isinstance(output, dict):\n                output = list(output.values())[0]\n            return output, llm_callback.reasoning_content\n        else:\n            result = self._agent.invoke({'messages': chat_history}, config=config)\n            result = result['messages']\n            return result[-1].content, llm_callback.reasoning_content\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/base.py",
    "content": "import base64\nimport copy\nimport uuid\nfrom abc import ABC, abstractmethod\nfrom typing import Any, Dict, List\n\nfrom langchain_core.messages import HumanMessage\n\nfrom bisheng.core.cache.utils import file_download\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.utils.exceptions import IgnoreException\nfrom bisheng.workflow.callback.base_callback import BaseCallback\nfrom bisheng.workflow.callback.event import NodeEndData, NodeStartData\nfrom bisheng.workflow.common.node import BaseNodeData, NodeType\nfrom bisheng.workflow.edges.edges import EdgeBase\nfrom bisheng.workflow.graph.graph_state import GraphState\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\n\n\nclass BaseNode(ABC):\n\n    def __init__(self, node_data: BaseNodeData, workflow_id: str, user_id: int,\n                 graph_state: GraphState, target_edges: List[EdgeBase], max_steps: int,\n                 callback: BaseCallback, **kwargs: Any):\n        self.id = node_data.id\n        self.type = node_data.type\n        self.name = node_data.name\n        self.description = node_data.description\n        self.target_edges = target_edges\n\n        # Execute Unique Identification of User\n        self.user_id = user_id\n\n        # Global State Management\n        self.workflow_id = workflow_id\n        self.workflow_name = kwargs.get('workflow_name')\n        self.graph_state = graph_state\n\n        # Data of all nodes\n        self.node_data = node_data\n\n        # Parameters required for storage nodes Directly usable parameters after processing\n        self.node_params = {}\n\n        # The value of the other node variables required to store the node\n        self.other_node_variable = {}\n\n        # Used to determine if the maximum number of runs has been exceeded\n        self.current_step = 0\n        self.max_steps = max_steps\n\n        # Callbacks to handle various events during node execution\n        self.callback_manager = callback\n\n        # Storing Temporary Data milvus Collection Name And es Collection Name workflow_id As partition key\n        # samecollectionMedium vector data must be the sameembedding_modelGenerated, so the collection name needs to containembedding_model_id\n        self.tmp_collection_name = 'tmp_workflow_data_new'\n\n        self.stop_flag = False\n\n        self.exec_unique_id = None\n\n        self.user_info = None\n\n        # Parse Simple Parameters\n        self.init_data()\n\n    def init_data(self):\n        \"\"\" Unified parameter processing, nodes with special needs can be processed when initializing themselves \"\"\"\n        if not self.node_data.group_params:\n            return\n\n        for one in self.node_data.group_params:\n            for param_info in one.params:\n                self.node_params[param_info.key] = copy.deepcopy(param_info.value)\n\n    def init_user_info(self):\n        if self.user_info:\n            return\n        self.user_info = UserDao.get_user(int(self.user_id))\n\n    @abstractmethod\n    def _run(self, unique_id: str) -> Dict[str, Any]:\n        \"\"\"\n        Run node The returned results are stored in the global variable management and can be used by other nodes\n        :return:\n        \"\"\"\n        raise NotImplementedError\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        \"\"\"\n         Returns the node operation log, the default return is empty\n        params:\n            result: Node Run Result\n        return:  The outermost layer is the rounds, and inside are the logs for each round.\n        [\n            [\n                {\n                    \"key\": \"xxx\",\n                    \"value\": \"xxx\",\n                    \"type\": \"tool\" # tool: Tool Type Logs, variable: Log of global variables, params: Log of node parameter type,keySHOW: keymain body\n                }\n            ]\n        ]\n        \"\"\"\n        return []\n\n    def get_other_node_variable(self, variable_key: str) -> Any:\n        \"\"\" Get the variable values of other nodes from the global variable \"\"\"\n        value = self.graph_state.get_variable_by_str(variable_key)\n        self.other_node_variable[variable_key] = value\n        return value\n\n    def get_input_schema(self) -> Any:\n        \"\"\" Returns the form description the user needs to enter \"\"\"\n        return None\n\n    def is_condition_node(self) -> bool:\n        \"\"\" Whether it is a mutually exclusive node \"\"\"\n        return self.node_data.type == NodeType.CONDITION.value\n\n    def get_milvus_collection_name(self, embedding_model_id: str) -> str:\n        return f\"{self.tmp_collection_name}_{embedding_model_id}\"\n\n    def handle_input(self, user_input: dict) -> Any:\n        # Update the data entered by the user to the number of nodes\n        self.node_params.update(user_input)\n\n    def route_node(self, state: dict) -> str:\n        \"\"\"\n        counterpart&apos;slanggraphright of privacycondition_edgeright of privacyfunction, only special nodes need\n        :return: node_ambid\n        \"\"\"\n        raise NotImplementedError\n\n    def get_next_node_id(self, source_handle: str) -> list[str]:\n        next_nodes = []\n        for one in self.target_edges:\n            if one.sourceHandle == source_handle:\n                next_nodes.append(one.target)\n        return next_nodes\n\n    def parse_msg_with_variables(self, msg: str) -> (str, list[str]):\n        \"\"\"\n        params:\n            msg: user input msg with node variables\n        return:\n            0: new msg after replaced variable\n            1: list of variables node_id.xxxx\n        \"\"\"\n        msg_template = PromptTemplateParser(template=msg)\n        variables = msg_template.extract()\n        if len(variables) > 0:\n            var_map = {}\n            for one in variables:\n                var_map[one] = self.get_other_node_variable(one)\n            msg = msg_template.format(var_map)\n        return msg, variables\n\n    @staticmethod\n    def get_file_base64_data(file_path: str) -> str:\n        if file_path.startswith(('http', \"https\")):\n            file_path, _ = file_download(file_path)\n\n        with open(file_path, \"rb\") as f:\n            file_data = f.read()\n            base64_data = base64.b64encode(file_data).decode('utf-8')\n        return base64_data\n\n    def contact_file_into_prompt(self, human_message: HumanMessage, variable_list: List[str]) -> HumanMessage:\n        if not variable_list:\n            if isinstance(human_message.content, list):\n                human_message.content = human_message.content[0].get('text')\n            return human_message\n        for image_variable in variable_list:\n            image_value = self.get_other_node_variable(image_variable)\n            if not image_value:\n                continue\n            for file_path in image_value:\n                base64_image = self.get_file_base64_data(file_path)\n                human_message.content.append({\n                    \"type\": \"image\",\n                    \"source_type\": \"base64\",\n                    \"mime_type\": \"image/jpeg\",\n                    \"data\": base64_image,\n                })\n        return human_message\n\n    def run(self, state: dict) -> Any:\n        \"\"\"\n        Run node entry\n        :return:\n        \"\"\"\n        if self.stop_flag:\n            raise IgnoreException('stop by user')\n        if self.current_step >= self.max_steps:\n            raise IgnoreException(f'{self.name} -- has run more than the maximum number of times.')\n\n        exec_id = uuid.uuid4().hex\n        self.exec_unique_id = exec_id\n        self.callback_manager.on_node_start(\n            data=NodeStartData(unique_id=exec_id, node_id=self.id, name=self.name))\n\n        reason = None\n        log_data = None\n        try:\n            result = self._run(exec_id)\n            log_data = self.parse_log(exec_id, result)\n            # Store node output in global variables\n            if result:\n                for key, value in result.items():\n                    self.graph_state.set_variable(self.id, key, value)\n            self.current_step += 1\n        except Exception as e:\n            reason = str(e)\n            raise e\n        finally:\n            # The end log of the output node is created byfakeNode Output, Because it is necessary to wait for the user to complete the input before the log can be displayed correctly\n            if reason or self.type != NodeType.OUTPUT.value:\n                self.callback_manager.on_node_end(data=NodeEndData(\n                    unique_id=exec_id, node_id=self.id, name=self.name, reason=reason, log_data=log_data,\n                    input_data=self.other_node_variable))\n        return state\n\n    async def arun(self, state: dict) -> Any:\n        return self.run(state)\n\n    def stop(self):\n        self.stop_flag = True\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/code/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/code/code.py",
    "content": "from typing import Any\n\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.code.code_parse import CodeParser\n\n\nclass CodeNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self._code_input = self.node_params['code_input']\n        self._code = self.node_params['code']\n        self._code_output = self.node_params['code_output']\n\n        self._code_parser = CodeParser(self._code)\n\n        self._parse_code()\n\n    def handle_input(self, user_input: dict) -> Any:\n        self.node_params.update(user_input)\n        self._code_input = self.node_params['code_input']\n        self._code_output = self.node_params['code_output']\n        self._code = self.node_params['code']\n\n    def _parse_code(self):\n        try:\n            self._code_parser.parse_code()\n        except Exception as e:\n            raise Exception(f\"CodeNode {self.name} exec code error: \" + str(e))\n\n    def _run(self, unique_id: str):\n        main_params = self._parse_code_input()\n\n        main_ret = self._code_parser.exec_method('main', **main_params)\n        main_ret = self._parse_code_output(main_ret)\n\n        return main_ret\n\n    def parse_log(self, unique_id: str, result: dict):\n        return [[\n            {\"key\": \"code_input\", \"value\": self._parse_code_input(), \"type\": \"params\"},\n            {\"key\": \"code_output\", \"value\": result, \"type\": \"params\"}\n        ]]\n\n    def _parse_code_input(self) -> dict:\n        ret = {}\n        for one in self._code_input:\n            if one[\"type\"] == \"ref\":\n                ret[one['key']] = self.get_other_node_variable(one['value'])\n            else:\n                ret[one['key']] = one['value']\n        return ret\n\n    def _parse_code_output(self, result: dict) -> dict:\n        if not isinstance(result, dict):\n            raise Exception(f\"CodeNode {self.name} main function output must be dict\")\n        ret = {}\n        for one in self._code_output:\n            if one[\"key\"] not in result:\n                raise Exception(f\"CodeNode {self.name} main function output must have key {one['key']}\")\n            ret[one['key']] = result.get(one['key'])\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/code/code_parse.py",
    "content": "import ast\nimport importlib\nimport inspect\nfrom typing import Union, Type, Dict, Any\n\n\nclass CodeParser:\n    \"\"\"\n    A parser for Python source code, extracting code details.\n    \"\"\"\n\n    def __init__(self, code: Union[str, Type]) -> None:\n        \"\"\"\n        Initializes the parser with the provided code.\n        \"\"\"\n        if isinstance(code, type):\n            if not inspect.isclass(code):\n                raise ValueError(\"The provided code must be a class.\")\n            # If the code is a class, get its source code\n            code = inspect.getsource(code)\n        self.code = code\n        self.exec_globals = {}\n        self.exec_locals = {}\n        self.data: Dict[str, Any] = {\n            \"imports\": [],\n        }\n        self.handlers = {\n            ast.Import: self.parse_imports,\n            ast.ImportFrom: self.parse_imports,\n            ast.FunctionDef: self.parse_functions,\n            ast.ClassDef: self.parse_classes,\n            ast.Assign: self.parse_global_vars,\n        }\n\n    def parse_code(self) -> Dict[str, Any]:\n        \"\"\"\n        Runs all parsing operations and returns the resulting data.\n        \"\"\"\n        tree = self.get_tree()\n\n        for node in ast.walk(tree):\n            self.parse_node(node)\n        return self.data\n\n    def get_tree(self):\n        \"\"\"\n        Parses the provided code to validate its syntax.\n        It tries to parse the code into an abstract syntax tree (AST).\n        \"\"\"\n        return ast.parse(self.code)\n\n    def parse_node(self, node: Union[ast.stmt, ast.AST]) -> None:\n        \"\"\"\n        Parses an AST node and updates the data\n        dictionary with the relevant information.\n        \"\"\"\n        if handler := self.handlers.get(type(node)):  # type: ignore\n            handler(node)  # type: ignore\n\n    def parse_imports(self, node: Union[ast.Import, ast.ImportFrom]) -> None:\n        \"\"\"\n        Extracts \"imports\" from the code, including aliases.\n        \"\"\"\n        if isinstance(node, ast.Import):\n            for alias in node.names:\n                if alias.asname:\n                    self.data[\"imports\"].append(f\"{alias.name} as {alias.asname}\")\n                else:\n                    self.data[\"imports\"].append(alias.name)\n                # Actual Import Module\n                try:\n                    self.exec_globals[alias.asname or alias.name] = importlib.import_module(alias.name)\n                except ModuleNotFoundError as e:\n                    raise ModuleNotFoundError(f\"Module {alias.name} not found. Please install it and try again.\") from e\n        elif isinstance(node, ast.ImportFrom):\n            try:\n                imported_module = importlib.import_module(node.module)\n                for alias in node.names:\n                    if alias.asname:\n                        self.data[\"imports\"].append((node.module, f\"{alias.name} as {alias.asname}\"))\n                    else:\n                        self.data[\"imports\"].append((node.module, alias.name))\n                    self.exec_globals[alias.name] = getattr(imported_module, alias.name)\n            except ModuleNotFoundError:\n                raise ModuleNotFoundError(f\"Module {node.module} not found. Please install it and try again\")\n\n    def parse_functions(self, node: ast.FunctionDef) -> None:\n        \"\"\"\n        Extracts \"functions\" from the code.\n        \"\"\"\n        compiled_func = compile(ast.Module(body=[node], type_ignores=[]), \"<string>\", \"exec\")\n        exec(compiled_func, self.exec_globals, self.exec_locals)\n\n    def parse_classes(self, node: ast.ClassDef) -> None:\n        compiled_class = compile(ast.Module(body=[node], type_ignores=[]), \"<string>\", \"exec\")\n        exec(compiled_class, self.exec_globals, self.exec_locals)\n        self.exec_globals[node.name] = self.exec_locals[node.name]\n\n    def parse_global_vars(self, node: ast.Assign) -> None:\n        \"\"\"\n        Extracts global variables from the code.\n        \"\"\"\n        global_var = {\n            \"targets\": [t.id if hasattr(t, \"id\") else ast.dump(t) for t in node.targets],\n            \"value\": ast.unparse(node.value),\n        }\n        if isinstance(node.value, ast.Constant):\n            for one in global_var[\"targets\"]:\n                self.exec_globals[one] = global_var[\"value\"]\n\n    def exec_method(self, method_name: str, *args, **kwargs):\n        \"\"\"\n        Executes the method with the provided arguments and keyword arguments.\n        \"\"\"\n        method = self.exec_locals.get(method_name)\n        if not method:\n            raise AttributeError(f\"Method {method_name} not found.\")\n        return method(*args, **kwargs)\n\n    def init_class(self, class_name: str, *args, **kwargs):\n        \"\"\"\n        Initializes the class with the provided arguments and keyword arguments.\n        \"\"\"\n        class_ = self.exec_globals.get(class_name)\n        if not class_:\n            raise AttributeError(f\"Class {class_name} not found.\")\n        return class_(*args, **kwargs)"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/condition/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/condition/condition.py",
    "content": "from typing import Any\n\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.condition.conidition_case import ConditionCases\nfrom loguru import logger\n\n\nclass ConditionNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        self._next_node_id = None\n        self._condition_cases = [ConditionCases(**one) for one in self.node_params['condition']]\n\n        # Store calculated variables and values\n        self._variable_key_value = {}\n\n    def _run(self, unique_id: str):\n        self._variable_key_value = {}\n        next_node_ids = None\n        for one in self._condition_cases:\n            flag = one.evaluate_conditions(self)\n            self._variable_key_value.update(one.variable_key_value)\n            if flag:\n                next_node_ids = self.get_next_node_id(one.id)\n                logger.info(f'Condition node {self.id} pass condition {next_node_ids}')\n                break\n\n        # Guaranteed logic, using default routing\n        if next_node_ids is None:\n            self._next_node_id = self.get_next_node_id('right_handle')\n        else:\n            self._next_node_id = next_node_ids\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        return [[\n            {\n                \"key\": k,\n                \"value\": v,\n                \"type\": \"variable\"\n            } for k, v in self._variable_key_value.items()\n        ]]\n\n    def route_node(self, state: dict) -> str:\n        return self._next_node_id\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/condition/conidition_case.py",
    "content": "import re\nfrom typing import List, Optional, Dict\n\nfrom loguru import logger\nfrom pydantic import ConfigDict, BaseModel, Field\n\nfrom bisheng.workflow.common.condition import ComparisonType, LogicType\nfrom bisheng.workflow.nodes.base import BaseNode\n\n\nclass ConditionOne(BaseModel):\n    id: str = Field(..., description='Unique id for condition')\n    left_var: str = Field(..., description='Left variable')\n    comparison_operation: str = Field(..., description='Compare type')\n    right_value_type: str = Field(..., description='Right value type')\n    right_value: str = Field(..., description='Right value')\n    variable_key_value: Dict = Field(default={}, description='variable key value')\n\n    def evaluate(self, node_instance: BaseNode) -> bool:\n        left_value = node_instance.get_other_node_variable(self.left_var)\n        self.variable_key_value[self.left_var] = left_value\n        right_value = self.right_value\n        if self.right_value_type == 'ref' and self.right_value:\n            right_value = node_instance.get_other_node_variable(self.right_value)\n            self.variable_key_value[self.right_value] = right_value\n        logger.debug(f'condition evaluate ope: {self.comparison_operation},'\n                     f' left value: {left_value}, right value: {right_value}')\n\n        return self.compare_two_value(left_value, right_value)\n\n    def compare_two_value(self, left_value: str, right_value: str) -> bool:\n        if self.comparison_operation == ComparisonType.EQUAL:\n            return left_value == right_value\n        elif self.comparison_operation == ComparisonType.NOT_EQUAL:\n            return left_value != right_value\n        elif self.comparison_operation == ComparisonType.CONTAINS:\n            return left_value.find(right_value) != -1\n        elif self.comparison_operation == ComparisonType.NOT_CONTAINS:\n            return left_value.find(right_value) == -1\n        elif self.comparison_operation == ComparisonType.IS_EMPTY:\n            return left_value == '' or left_value is None\n        elif self.comparison_operation == ComparisonType.IS_NOT_EMPTY:\n            return left_value != '' and left_value is not None\n        elif self.comparison_operation == ComparisonType.STARTS_WITH:\n            return left_value.startswith(right_value)\n        elif self.comparison_operation == ComparisonType.ENDS_WITH:\n            return left_value.endswith(right_value)\n        elif self.comparison_operation == ComparisonType.GREATER_THAN:\n            return float(left_value) > float(right_value)\n        elif self.comparison_operation == ComparisonType.GREATER_THAN_OR_EQUAL:\n            return float(left_value) >= float(right_value)\n        elif self.comparison_operation == ComparisonType.LESS_THAN:\n            return float(left_value) < float(right_value)\n        elif self.comparison_operation == ComparisonType.LESS_THAN_OR_EQUAL:\n            return float(left_value) <= float(right_value)\n        elif self.comparison_operation == ComparisonType.REGEX:\n            right = re.compile(right_value)\n            return right.search(left_value) is not None\n        else:\n            raise Exception('not support comparison operator: %s' % self.comparison_operation)\n\n\nclass ConditionCases(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    id: str = Field(..., description='Unique id for case')\n    operator: Optional[str] = Field('and', description='Operator for case')\n    conditions: Optional[List[ConditionOne]] = Field(None, description='Conditions for case')\n    variable_key_value: Dict = Field(default={}, description='variable key value')\n\n    def evaluate_conditions(self, node_instance: BaseNode) -> bool:\n        # Normally onlyelseNoconditions\n        if not self.conditions:\n            return True\n\n        for condition in self.conditions:\n            flag = condition.evaluate(node_instance)\n            self.variable_key_value.update(condition.variable_key_value)\n            if self.operator == LogicType.AND:\n                if not flag:\n                    return False\n            else:\n                if flag:\n                    return True\n        return True if self.operator == LogicType.AND else False\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/end/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/end/end.py",
    "content": "from bisheng.workflow.nodes.base import BaseNode\n\n\nclass EndNode(BaseNode):\n\n    def _run(self, unique_id: str):\n        return None\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/input/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/input/const.py",
    "content": "from bisheng.common.schemas.rag_schema import RagMetadataFieldSchema\n\n# Enter the metadata definition for the temporary upload file of the node\nInputFileMetadata = [\n    RagMetadataFieldSchema(field_name=\"document_id\", field_type=\"text\", kwargs={\"nullable\": False, \"max_length\": 1024}),\n    RagMetadataFieldSchema(field_name=\"document_name\", field_type=\"text\",\n                           kwargs={\"nullable\": True, \"max_length\": 32767}),\n    RagMetadataFieldSchema(field_name=\"abstract\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"chunk_index\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"bbox\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 65535}),\n    RagMetadataFieldSchema(field_name=\"page\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"knowledge_id\", field_type=\"text\",\n                           kwargs={\"nullable\": False, \"max_length\": 1024}),\n    RagMetadataFieldSchema(field_name=\"upload_time\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"update_time\", field_type=\"int64\", kwargs={\"nullable\": True}),\n    RagMetadataFieldSchema(field_name=\"uploader\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 1024}),\n    RagMetadataFieldSchema(field_name=\"updater\", field_type=\"text\", kwargs={\"nullable\": True, \"max_length\": 1024}),\n    RagMetadataFieldSchema(field_name=\"user_metadata\", field_type=\"json\", kwargs={\"nullable\": True})\n]\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/input/input.py",
    "content": "import copy\nimport json\nimport time\nfrom enum import Enum\nfrom typing import Any, List, Dict\nfrom urllib.parse import urlparse, unquote\n\nfrom json_repair import json_repair\nfrom langchain_core.messages import SystemMessage, HumanMessage\nfrom loguru import logger\n\nfrom bisheng.api.services.knowledge import KnowledgeService\nfrom bisheng.api.services.knowledge_imp import read_chunk_text\nfrom bisheng.api.v1.schemas import FileProcessBase\nfrom bisheng.chat.types import IgnoreException\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.common.errcode.knowledge import KnowledgeFileNotSupportedError\nfrom bisheng.core.cache.utils import file_download\nfrom bisheng.knowledge.domain.knowledge_rag import KnowledgeRag\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.utils import generate_uuid\nfrom bisheng.workflow.callback.event import GuideQuestionData\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.input.const import InputFileMetadata\n\n\nclass ParseModeEnum(str, Enum):\n    KEEP_RAW = 'keep_raw'\n    EXTRACT_TEXT = 'extract_text'\n    INGEST_TO_KNOWLEDGE_BASE = 'ingest_to_temp_kb'\n\n\nclass InputNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        # Node Current Version\n        self._current_v = 2\n        # Whether the record is a conversation or a form\n        self._tab = self.node_data.tab['value']\n\n        # Record what type of variable this is\n        self._node_params_map = {}\n        new_node_params = {}\n        # The maximum length of the input file in the dialog box, more than this length will be truncated\n\n        if self.node_data.v < self._current_v:\n            raise IgnoreException(f'{self.name} -- workflow node is update')\n\n        self._original_node_params = copy.deepcopy(self.node_params)\n\n        # save user set file key -> file key info\n        self._file_key_map = {}\n\n        if self.is_dialog_input():\n            new_node_params['user_input'] = self.node_params['user_input']\n            new_node_params['dialog_files_content'] = self.node_params.get('dialog_files_content', [])\n        else:\n            for value_info in self.node_params['form_input']:\n                value_key = value_info['key']\n                # The file key needs to be re-generated to avoid parse type not ingest to knowledge base\n                if value_info[\"type\"] == \"file\":\n                    value_key = f\"file_{generate_uuid()[:8]}\"\n                    self._file_key_map[value_info['key']] = value_info\n                new_node_params[value_key] = value_info['value']\n                self._node_params_map[value_key] = value_info\n\n        self.node_params = new_node_params\n        self._image_ext = ['png', 'jpg', 'jpeg', 'bmp']\n\n        self._vector_client = None\n        self._es_client = None\n\n    def is_dialog_input(self):\n        \"\"\" Whether the input is in the form of a conversation \"\"\"\n        if self._tab == 'dialog_input':\n            return True\n        elif self._tab == 'form_input':\n            return False\n        raise IgnoreException(f'{self.name} -- workflow node is update')\n\n    def get_input_schema(self) -> Any:\n        if self.is_dialog_input():\n            try:\n                self.handle_recommended_questions()\n            except Exception as e:\n                logger.exception(\"handle recommended questions error\")\n            user_input_info = self.node_data.get_variable_info('user_input')\n            user_input_info.value = [\n                self.node_data.get_variable_info('dialog_files_content'),\n                self.node_data.get_variable_info('dialog_file_accept'),\n                self.node_data.get_variable_info('user_input_file'),\n            ]\n            return user_input_info\n        form_input_info = self.node_data.get_variable_info('form_input')\n        form_variables = copy.deepcopy(self._node_params_map)\n        res = []\n        for one_key, one in form_variables.items():\n            one['key'] = one_key\n            one['value'], _ = self.parse_msg_with_variables(one['value'])\n            res.append(one)\n        form_input_info.value = res\n        return form_input_info\n\n    def handle_recommended_questions(self):\n        recommended_questions_flag = self._original_node_params.get('recommended_questions_flag', False)\n        if not recommended_questions_flag:\n            return\n        recommended_llm = self._original_node_params.get('recommended_llm', 0)\n        recommended_system_prompt = self._original_node_params.get('recommended_system_prompt', '')\n        recommended_history_num = self._original_node_params.get('recommended_history_num', 3)\n        if not recommended_llm or not recommended_system_prompt or not recommended_history_num:\n            logger.debug(f\"{self.name} recommended questions config incomplete\")\n            return\n        chat_history = self.graph_state.get_history_memory(recommended_history_num)\n        if not chat_history:\n            logger.debug(f\"{self.name} recommended questions chat history is empty\")\n            return\n        recommended_system_prompt, _ = self.parse_msg_with_variables(recommended_system_prompt)\n        llm_obj = LLMService.get_bisheng_llm_sync(model_id=recommended_llm,\n                                                  app_id=self.workflow_id,\n                                                  app_name=self.workflow_name,\n                                                  app_type=ApplicationTypeEnum.WORKFLOW,\n                                                  user_id=self.user_id)\n        user_prompt = f\"# Current Conversation Context\\n{chat_history}\"\n        result = llm_obj.invoke([SystemMessage(content=recommended_system_prompt), HumanMessage(content=user_prompt)])\n        result = result.content\n        try:\n            result = json.loads(result)\n        except json.decoder.JSONDecodeError:\n            logger.debug(\"received non-json response from LLM, try json repair\")\n            try:\n                result = json_repair.loads(result, skip_json_loads=True)\n            except Exception as e:\n                logger.error(f\"json repair failed: {e}\")\n                return\n        logger.debug(f\"received response from LLM, result is {result}\")\n        if not isinstance(result, dict):\n            return\n        questions = []\n        for key, value in result.items():\n            if isinstance(value, list):\n                questions = value\n                break\n        if not questions:\n            return\n        self.callback_manager.on_guide_question(data=GuideQuestionData(node_id=self.id, name=self.name,\n                                                                       unique_id=generate_uuid(),\n                                                                       guide_question=questions[:3]))\n\n    def _parse_upload_file_variables(self, key_info: Dict, key_value: Dict) -> Dict:\n        \"\"\"\n         parse upload_file variables\n         Documented metadataData, full-text files, minio file paths, image files path\n        \"\"\"\n        # Compatible processing of historical versions of nodes\n        if self.node_data.v <= self._current_v:\n            if self.is_dialog_input():\n                key_value.pop(\"dialog_file_paths\", None)\n            return key_value\n\n        file_parse_mode = key_info.get('file_parse_mode', ParseModeEnum.INGEST_TO_KNOWLEDGE_BASE)\n        ret = {}\n        if file_parse_mode == ParseModeEnum.KEEP_RAW:\n            if key_info.get(\"file_type\") in [\"image\", \"all\"]:\n                ret[key_info['image_file']] = key_value.get(key_info['image_file'], [])\n            ret[key_info['file_path']] = key_value.get(key_info['file_path'], [])\n        elif file_parse_mode == ParseModeEnum.EXTRACT_TEXT:\n            ret[key_info['file_content']] = key_value.get(key_info['file_content'], \"\")\n        else:\n            ret[key_info['key']] = key_value.get(key_info['key'], [])\n        return ret\n\n    def _run(self, unique_id: str):\n        if self.is_dialog_input():\n            key_info = {\n                \"key\": \"dialog_files\",\n                \"file_content\": \"dialog_files_content\",\n                \"file_path\": \"dialog_file_paths\",\n                \"image_file\": \"dialog_image_files\",\n                \"file_type\": self._original_node_params.get(\"dialog_file_accept\"),\n                \"file_parse_mode\": self._original_node_params.get(\"file_parse_mode\", ParseModeEnum.EXTRACT_TEXT),\n                \"file_content_size\": self._original_node_params.get(\"dialog_files_content_size\", 15000)\n            }\n            # Input in the form of a dialog\n            result = self.parse_upload_file(\"dialog_files\", key_info, self.node_params.get('dialog_files_content', []))\n            res = {\n                'user_input': self.node_params['user_input'],\n            }\n            result.pop(\"dialog_files\", None)\n            res.update(self._parse_upload_file_variables(key_info, result))\n\n            self.graph_state.save_context(content=f'{res.get(\"dialog_files_content\", \"\")}\\n{res[\"user_input\"]}',\n                                          msg_sender='human')\n            return res\n\n        ret = {}\n        human_input = \"\"\n        # The corresponding file upload needs to be processed in the form\n        for key, value in self.node_params.items():\n            key_info = self._node_params_map[key]\n            label, _ = self.parse_msg_with_variables(key_info.get('value')) if key_info.get('value') else key\n            if key_info['type'] == 'file':\n                new_params = self.parse_upload_file(key, key_info, value)\n                ret.update(self._parse_upload_file_variables(key_info, new_params))\n\n                if new_params[key_info['key']]:\n                    content = \"\"\n                    for one in new_params[key_info['key']]:\n                        content += f\"{one.get('document_name', '')},\"\n                    human_input += f\"{label}: {content.rstrip(',')}\\n\"\n            else:\n                ret[key] = value\n                human_input += f\"{label}: {value}\\n\"\n        self.graph_state.save_context(content=f'{human_input}', msg_sender='human')\n        return ret\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = []\n        for k, v in result.items():\n            if (self._node_params_map.get(k) and self._node_params_map[k]['type'] == 'file') or (\n                    self._file_key_map.get(k) and self._file_key_map[k]['type'] == 'file'):\n                continue\n            ret.append({\"key\": f'{self.id}.{k}', \"value\": v, \"type\": \"variable\"})\n        return [ret]\n\n    def get_upload_file_path_content(self, file_url: str) -> (list, list):\n        \"\"\"\n        params:\n            file_url: upload to minio share url\n        return:\n            0: chunks list\n            1: metadata list\n        \"\"\"\n        filepath, file_name = file_download(file_url)\n\n        texts = []\n        metadatas = []\n        try:\n            file_rule = FileProcessBase(knowledge_id=0)\n            texts, metadatas, _, _ = read_chunk_text(self.user_id, filepath, file_name, file_rule.separator,\n                                                     file_rule.separator_rule,\n                                                     file_rule.chunk_size, 0, None,\n                                                     file_rule.retain_images, file_rule.enable_formula,\n                                                     file_rule.force_ocr,\n                                                     file_rule.filter_page_header_footer, file_rule.excel_rule)\n        except KnowledgeFileNotSupportedError as e:\n            logger.warning('input node file type is not support')\n            pass\n\n        return texts, metadatas\n\n    def init_vector_clients(self):\n        if self._vector_client is None:\n            embedding = LLMService.get_knowledge_default_embedding(self.user_id)\n            if not embedding:\n                raise Exception('No default configured embedding Models')\n            milvus_collection_name = self.get_milvus_collection_name(getattr(embedding, 'model_id'))\n            self._vector_client = KnowledgeRag.init_milvus_vectorstore(milvus_collection_name, embedding,\n                                                                       metadata_schemas=InputFileMetadata)\n            self._es_client = KnowledgeRag.init_es_vectorstore_sync(self.tmp_collection_name,\n                                                                    metadata_schemas=InputFileMetadata)\n\n    def parse_upload_file(self, key: str, key_info: dict, value: List[str]) -> dict | None:\n        \"\"\"\n         parse upload_file\n         Documented metadataData, full-text files, minio file paths, image files path\n        \"\"\"\n        # Parsing the file. need return values\n        all_metadata = []\n        all_file_content = ''\n        original_file_path = []\n        image_files_path = []\n        if not value:\n            logger.warning(f\"{self.id}.{key} value is None\")\n            return {\n                key_info['key']: all_metadata,\n                key_info['file_content']: all_file_content,\n                key_info['file_path']: original_file_path,\n                key_info['image_file']: image_files_path\n            }\n\n        file_parse_mode = key_info.get('file_parse_mode', ParseModeEnum.INGEST_TO_KNOWLEDGE_BASE)\n        file_content_max_size = int(key_info.get('file_content_size', 15000))\n\n        file_id = generate_uuid()\n\n        file_content_length = 0\n        for one_file_url in value:\n            url_obj = urlparse(one_file_url)\n            file_name = unquote(url_obj.path.split('/')[-1])\n            # get file original name\n            file_name = KnowledgeService.get_upload_file_original_name(file_name)\n            all_metadata.append({\n                \"document_id\": file_id,\n                \"document_name\": file_name,\n                \"knowledge_id\": self.workflow_id,\n                \"upload_time\": int(time.time()),\n                \"bbox\": '',  # Temporary files cannot be traced because the source files are not persisted\n            })\n\n            file_ext = file_name.split('.')[-1].lower()\n            logger.debug(f\"{self.id}.{key} file_parse_mode is keep_raw\")\n            original_file_path.append(one_file_url)\n            if file_ext in self._image_ext:\n                image_files_path.append(one_file_url)\n\n            if file_parse_mode == ParseModeEnum.KEEP_RAW:\n                continue\n\n            texts, metadatas = self.get_upload_file_path_content(one_file_url)\n            if file_content_length < file_content_max_size:\n                file_content = \"\\n\".join(texts)\n                file_content = file_content[:file_content_max_size - file_content_length]\n                file_content_length += len(file_content)\n                all_file_content += f\"[file name]: {file_name}\\n[file content begin]\\n{file_content}\\n[file content end]\\n\"\n            if not texts:\n                logger.debug(f\"{self.id}.{key} extract file text is empty\")\n                continue\n            if file_parse_mode == ParseModeEnum.EXTRACT_TEXT:\n                continue\n\n            self.init_vector_clients()\n            new_metadata = []\n            # A file corresponding to the same variable, placed in a file_id mile\n            for one in metadatas:\n                metadata = one.model_dump()\n                metadata.update(all_metadata[-1])\n                new_metadata.append(metadata)\n\n            # Uploaded to milvus And es\n            logger.debug(f'workflow_add_vectordb file={key} file_name={file_name} file_id={file_id}')\n            self._vector_client.add_texts(texts=texts, metadatas=new_metadata)\n\n            logger.debug(f'workflow_add_es file={key} file_name={file_name} file_id={file_id}')\n            self._es_client.add_texts(texts=texts, metadatas=new_metadata)\n\n            logger.debug(f'workflow_record_file_metadata file={key} file_name={file_name}')\n            all_metadata[-1] = new_metadata[0]\n        # Documentation metadata, other nodes according to metadataData to retrieve corresponding files\n        return {\n            key_info['key']: all_metadata,\n            key_info['file_content']: all_file_content,\n            key_info['file_path']: original_file_path,\n            key_info['image_file']: image_files_path\n        }\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/knowledge_retriever/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/knowledge_retriever/knowledge_retriever.py",
    "content": "from typing import Any\n\nfrom loguru import logger\n\nfrom bisheng.workflow.common.knowledge import RagUtils\n\n\nclass KnowledgeRetriever(RagUtils):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self._output_keys = [one.get(\"key\") for one in self.node_params.get('retrieved_result', [])]\n\n    def _run(self, unique_id: str):\n        try:\n            self.user_questions = self.init_user_question()\n            self.init_user_info()\n            self.init_multi_retriever()\n            ret = {}\n            for index, question in enumerate(self.user_questions):\n                output_key = self._output_keys[index]\n                if question is None:\n                    question = \"\"\n                try:\n                    self.init_rerank_model()\n                    question_answer = self.retrieve_question(question)\n                    question_answer = [{\n                        \"text\": one.page_content,\n                        \"metadata\": {\n                            \"chunk_index\": one.metadata.get('chunk_index'),\n                            \"knowledge_id\": one.metadata.get('knowledge_id'),\n                            \"document_id\": one.metadata.get('document_id'),\n                            \"document_name\": one.metadata.get('document_name'),\n                            \"upload_time\": one.metadata.get('upload_time'),\n                            \"update_time\": one.metadata.get('update_time'),\n                            \"uploader\": one.metadata.get('uploader'),\n                            \"updater\": one.metadata.get('updater'),\n                            \"user_metadata\": one.metadata.get('user_metadata'),\n                        }\n                    } for one in question_answer]\n                except Exception as e:\n                    question_answer = str(e)\n                ret[output_key] = question_answer\n        except Exception as e:\n            logger.exception(f\"KnowledgeRetriever node run error: {e}\")\n            ret = {\n                one: str(e) for one in self._output_keys\n            }\n        return ret\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = []\n        for index, question in enumerate(self.user_questions):\n            output_key = self._output_keys[index]\n            one_ret = [\n                {'key': f'{self.id}.user_question', 'value': question, \"type\": \"variable\"},\n                {'key': f'{self.id}.{output_key}', 'value': result[output_key], \"type\": \"variable\"},\n            ]\n            ret.append(one_ret)\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/llm/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/llm/llm.py",
    "content": "from typing import Any\n\nfrom langchain_core.messages import HumanMessage, SystemMessage\nfrom langchain_core.runnables import RunnableConfig\nfrom loguru import logger\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.workflow.callback.llm_callback import LLMNodeCallbackHandler\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\n\n\nclass LLMNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        # Determine if it is a single or batch\n        self._tab = self.node_data.tab['value']\n\n        # Whether to output the results to the user\n        self._output_user = self.node_params.get('output_user', False)\n\n        self._image_prompt = self.node_params.get('image_prompt', [])\n\n        # Inisialisasiprompt\n        self._system_prompt = PromptTemplateParser(template=self.node_params['system_prompt'])\n        self._system_variables = self._system_prompt.extract()\n        self._user_prompt = PromptTemplateParser(template=self.node_params['user_prompt'])\n        self._user_variables = self._user_prompt.extract()\n\n        # Data required to store logs\n        self._system_prompt_list = []\n        self._user_prompt_list = []\n        self._batch_variable_list = []\n        self._log_reasoning_content = []\n\n        # InisialisasillmObjects\n        self._llm = LLMService.get_bisheng_llm_sync(model_id=self.node_params['model_id'],\n                                                    temperature=self.node_params.get('temperature', 0.3),\n                                                    app_id=self.workflow_id,\n                                                    app_name=self.workflow_name,\n                                                    app_type=ApplicationTypeEnum.WORKFLOW,\n                                                    user_id=self.user_id)\n\n    def _run(self, unique_id: str):\n        self._system_prompt_list = []\n        self._user_prompt_list = []\n        self._batch_variable_list = []\n        self._log_reasoning_content = []\n\n        result = {}\n        if self._tab == 'single':\n            result['output'], reasoning_content = self._run_once(None, unique_id, 'output')\n            self._log_reasoning_content.append(reasoning_content)\n        else:\n            for index, one in enumerate(self.node_params['batch_variable']):\n                self._batch_variable_list.append(self.get_other_node_variable(one))\n                output_key = self.node_params['output'][index]['key']\n                result[output_key], reasoning_content = self._run_once(one, unique_id, output_key)\n                self._log_reasoning_content.append(reasoning_content)\n\n        if self._output_user:\n            for k, v in result.items():\n                self.graph_state.save_context(content=v, msg_sender='AI')\n        return result\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = []\n        index = 0\n        for k, v in result.items():\n            one_ret = [\n                {\"key\": \"system_prompt\", \"value\": self._system_prompt_list[index], \"type\": \"params\"},\n                {\"key\": \"user_prompt\", \"value\": self._user_prompt_list[index], \"type\": \"params\"},\n            ]\n            if self._log_reasoning_content[index]:\n                one_ret.append({\"key\": \"Thinking about content\", \"value\": self._log_reasoning_content[index], \"type\": \"params\"})\n            one_ret.append({\"key\": f'{self.id}.{k}', \"value\": v, \"type\": \"variable\"})\n            if self._batch_variable_list:\n                one_ret.insert(0, {\"key\": f\"{self.id}.batch_variable\", \"value\": self._batch_variable_list[index],\n                                   \"type\": \"variable\"})\n            index += 1\n            ret.append(one_ret)\n        return ret\n\n    def _run_once(self,\n                  input_variable: str = None,\n                  unique_id: str = None,\n                  output_key: str = None) -> (str, str):\n        # Description is a variable that references a batch, The value of the variable needs to be replaced with the variable selected by the user\n        special_variable = f'{self.id}.batch_variable'\n        variable_map = {}\n        for one in self._system_variables:\n            if input_variable and one == special_variable:\n                variable_map[one] = self.get_other_node_variable(input_variable)\n                continue\n            variable_map[one] = self.get_other_node_variable(one)\n        system = self._system_prompt.format(variable_map)\n        self._system_prompt_list.append(system)\n\n        variable_map = {}\n        for one in self._user_variables:\n            if input_variable and one == special_variable:\n                variable_map[one] = self.get_other_node_variable(input_variable)\n                continue\n            variable_map[one] = self.get_other_node_variable(one)\n        user = self._user_prompt.format(variable_map)\n        self._user_prompt_list.append(user)\n\n        logger.debug(\n            f'outputkey={output_key} workflow llm node prompt: system: {system}\\nuser: {user}')\n        llm_callback = LLMNodeCallbackHandler(callback=self.callback_manager,\n                                              unique_id=unique_id,\n                                              node_id=self.id,\n                                              node_name=self.name,\n                                              output=self._output_user,\n                                              output_key=output_key)\n        config = RunnableConfig(callbacks=[llm_callback])\n        inputs = []\n        if system:\n            inputs.append(SystemMessage(content=system))\n\n        human_message = HumanMessage(content=[{\n            'type': 'text',\n            'text': user\n        }])\n        human_message = self.contact_file_into_prompt(human_message, self._image_prompt)\n        inputs.append(human_message)\n\n        logger.debug(f'llm invoke chat_history: {inputs} {self._image_prompt}')\n\n        result = self._llm.invoke(inputs, config=config)\n\n        return result.content, llm_callback.reasoning_content\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/node_manage.py",
    "content": "from bisheng.workflow.common.node import NodeType\nfrom bisheng.workflow.nodes.agent.agent import AgentNode\nfrom bisheng.workflow.nodes.code.code import CodeNode\nfrom bisheng.workflow.nodes.condition.condition import ConditionNode\nfrom bisheng.workflow.nodes.end.end import EndNode\nfrom bisheng.workflow.nodes.input.input import InputNode\nfrom bisheng.workflow.nodes.knowledge_retriever.knowledge_retriever import KnowledgeRetriever\nfrom bisheng.workflow.nodes.llm.llm import LLMNode\nfrom bisheng.workflow.nodes.output.output import OutputNode\nfrom bisheng.workflow.nodes.qa_retriever.qa_retriever import QARetrieverNode\nfrom bisheng.workflow.nodes.rag.rag import RagNode\nfrom bisheng.workflow.nodes.report.report import ReportNode\nfrom bisheng.workflow.nodes.start.start import StartNode\nfrom bisheng.workflow.nodes.tool.tool import ToolNode\n\nNODE_CLASS_MAP = {\n    NodeType.START.value: StartNode,\n    NodeType.END.value: EndNode,\n    NodeType.INPUT.value: InputNode,\n    NodeType.OUTPUT.value: OutputNode,\n    NodeType.TOOL.value: ToolNode,\n    NodeType.RAG.value: RagNode,\n    NodeType.REPORT.value: ReportNode,\n    NodeType.QA_RETRIEVER.value: QARetrieverNode,\n    NodeType.CONDITION.value: ConditionNode,\n    NodeType.AGENT.value: AgentNode,\n    NodeType.CODE.value: CodeNode,\n    NodeType.LLM.value: LLMNode,\n    NodeType.KNOWLEDGE_RETRIEVER.value: KnowledgeRetriever,\n}\n\n\nclass NodeFactory:\n    @classmethod\n    def get_node_class(cls, node_type: str) -> 'BaseNode':\n        return NODE_CLASS_MAP.get(node_type)\n\n    @classmethod\n    def instance_node(cls, node_type: str, **kwargs) -> 'BaseNode':\n        node_class = cls.get_node_class(node_type)\n        if node_class is None:\n            raise Exception(f'Unknown node type:{node_type}')\n        return node_class(**kwargs)\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/output/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/output/output.py",
    "content": "import json\nfrom typing import Any\n\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.workflow.callback.event import OutputMsgChooseData, OutputMsgData, OutputMsgInputData\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\n\n\nclass OutputNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # minio\n        self._minio_client = get_minio_storage_sync()\n        # Interaction Type\n        self._output_type = self.node_params['output_result']['type']\n        self._output_result = self.node_params['output_result']['value']\n\n        # Result of user processing\n        self._handled_output_result = self._output_result\n\n        # user input msg\n        if 'output_msg' in self.node_params:\n            _original_output_msg = self.node_params['output_msg']\n        else:\n            _original_output_msg = self.node_params['message']\n        self._output_msg = _original_output_msg['msg']\n        self._output_files = _original_output_msg['files']\n\n        # Message Content After Variable Replacement\n        self._parsed_output_msg = ''\n        self._parsed_files = []\n\n        self._source_documents = []\n\n        # Non-selective interaction, then the next node is wiredtarget. Selective interactions, which need to be judged based on user input\n        self._next_node_id = [one.target for one in self.target_edges]\n\n    def handle_input(self, user_input: dict) -> Any:\n        # Needs to be depositedstate，\n        self.graph_state.save_context(content=json.dumps(user_input, ensure_ascii=False), msg_sender='human')\n        self._handled_output_result = user_input['output_result']\n        self.graph_state.set_variable(self.id, 'output_result', user_input['output_result'])\n\n    def get_input_schema(self) -> Any:\n        # Explain that no interaction is required\n        if self._output_type not in ['input', 'choose']:\n            return None\n        group_params = self.node_data.dict(include={'group_params'})\n        return group_params['group_params']\n\n    def is_condition_node(self) -> bool:\n        return self._output_type == 'choose'\n\n    def route_node(self, state: dict) -> str | list[str]:\n        # Selective interaction requires judging the next node based on the user's input\n        if self._output_type == 'choose':\n            return self.get_next_node_id(self._handled_output_result)\n        return self._next_node_id\n\n    def _run(self, unique_id: str):\n        self._source_documents = []\n        self.parse_output_msg()\n        self.send_output_msg(unique_id)\n        res = {\n            'message': self._parsed_output_msg,\n            'output_result': self._handled_output_result\n        }\n        return res\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = [\n            {\n                \"key\": \"output_msg\",\n                \"value\": self._parsed_output_msg,\n                \"type\": \"params\"\n            }\n        ]\n        if self._output_type == 'input':\n            ret.append({\n                \"key\": \"output_result\",\n                \"value\": self._handled_output_result,\n                \"type\": \"key\"\n            })\n        return [ret]\n\n    def parse_output_msg(self):\n        \"\"\" Paddingmsgvariable in, get the file'sshare<g id=\"Bold\">Address:</g> \"\"\"\n        self._parsed_output_msg = self.parse_template_msg(self._output_msg)\n\n        if self._parsed_files:\n            return\n        for one in self._output_files:\n            one['path'] = self._minio_client.get_share_link_sync(one['path'])\n            self._parsed_files.append(one)\n\n    def send_output_msg(self, unique_id: str):\n        \"\"\" SendoutputNode's Message \"\"\"\n        msg_params = {\n            'name': self.name,\n            'unique_id': unique_id,\n            'node_id': self.id,\n            'msg': self._parsed_output_msg,\n            'files': self._parsed_files,\n            'output_key': '',\n            'source_documents': self._source_documents\n        }\n        # where interaction is required, there isgroup_params\n        if self._output_type == 'input':\n            msg_params['key'] = 'output_result'\n            msg_params['input_msg'] = self.parse_template_msg(self._output_result)\n            self.callback_manager.on_output_input(data=OutputMsgInputData(**msg_params))\n        elif self._output_type == 'choose':\n            msg_params['key'] = 'output_result'\n            msg_params['options'] = self.node_data.get_variable_info('output_result').options\n            self.callback_manager.on_output_choose(data=OutputMsgChooseData(**msg_params))\n        else:\n            self.graph_state.save_context(content=self._parsed_output_msg,\n                                          msg_sender='AI')\n            self.callback_manager.on_output_msg(OutputMsgData(**msg_params))\n\n    def parse_template_msg(self, msg: str):\n        msg_template = PromptTemplateParser(template=msg)\n        variables = msg_template.extract()\n        if len(variables) > 0:\n            var_map = {}\n            for one in variables:\n                node_id = one.split('.')[0]\n                # CiteqaDemonstrate traceability when using the Knowledge Base node\n                if node_id.startswith('qa_retriever'):\n                    self._source_documents = self.graph_state.get_variable(node_id, '$retrieved_result$')\n                var_map[one] = self.get_other_node_variable(one)\n            msg = msg_template.format(var_map)\n        return msg\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/output/output_fake.py",
    "content": "from bisheng.workflow.callback.event import NodeEndData\nfrom pydantic import ConfigDict, BaseModel, Field\n\nfrom bisheng.workflow.nodes.output.output import OutputNode\n\n\nclass OutputFakeNode(BaseModel):\n    \"\"\" Used to processoutputInterrupt to determine if user input is required \"\"\"\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    id: str\n    output_node: OutputNode\n    type: str\n\n    def run(self, state: dict):\n        \"\"\" Do nothing, just use it to deal withoutputInterrupt to determine if user input is required \"\"\"\n        self.output_node.callback_manager.on_node_end(data=NodeEndData(\n            unique_id=self.output_node.exec_unique_id,\n            node_id=self.output_node.id,\n            name=self.output_node.name,\n            reason=None,\n            log_data=self.output_node.parse_log(self.output_node.exec_unique_id, {})))\n        return state\n\n    async def arun(self, state: dict):\n        return self.run(state)\n\n    def get_input_schema(self):\n        return self.output_node.get_input_schema()\n\n    def stop(self):\n        pass\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/prompt_template.py",
    "content": "import re\n\nREGEX = re.compile(r'\\{\\{#([#a-zA-Z_][#a-zA-Z0-9_]{0,29})#\\}\\}')\nWITH_VARIABLE_TMPL_REGEX = re.compile(\n    r'\\{\\{#([#a-zA-Z_][a-zA-Z0-9_]{0,29}|[#a-zA-Z0-9_]{1,50}\\.[#a-zA-Z0-9_\\.]{1,100})#\\}\\}')\n\n\nclass PromptTemplateParser:\n    \"\"\"\n    Rules:\n\n    1. Template variables must be enclosed in `{{}}`.\n    2. The template variable Key can only be: letters + numbers + underscore, with a maximum length of 16 characters,\n       and can only start with letters and underscores.\n    3. The template variable Key cannot contain new lines or spaces, and must comply with rule 2.\n    4. In addition to the above, 3 types of special template variable Keys are accepted:\n       `{{#histories#}}` `{{#query#}}` `{{#context#}}`. No other `{{##}}` template variables are allowed.\n    \"\"\"\n\n    def __init__(self, template: str, with_variable_tmpl: bool = True):\n        self.template = template\n        self.with_variable_tmpl = with_variable_tmpl\n        self.regex = WITH_VARIABLE_TMPL_REGEX if with_variable_tmpl else REGEX\n        self.variable_keys = self.extract()\n\n    def extract(self) -> list:\n        # Regular expression to match the template rules\n        return re.findall(self.regex, self.template)\n\n    def format(self, inputs: dict, remove_template_variables: bool = True) -> str:\n\n        def replacer(match):\n            key = match.group(1)\n            value = inputs.get(key, match.group(0))  # return original matched string if key not found\n            if not isinstance(value, str):\n                value = str(value)\n\n            if remove_template_variables:\n                return PromptTemplateParser.remove_template_variables(\n                    value, self.with_variable_tmpl)\n            return value\n\n        prompt = re.sub(self.regex, replacer, self.template)\n        return re.sub(r'<\\|.*?\\|>', '', prompt)\n\n    @classmethod\n    def remove_template_variables(cls, text: str, with_variable_tmpl: bool = False):\n        return re.sub(WITH_VARIABLE_TMPL_REGEX if with_variable_tmpl else REGEX, r'{\\1}', text)\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/qa_retriever/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/qa_retriever/qa_retriever.py",
    "content": "import json\nfrom typing import Any\n\nfrom bisheng.interface.initialize.loading import instantiate_vectorstore\nfrom bisheng.interface.vector_store.custom import MilvusWithPermissionCheck\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng_langchain.chains.retrieval.retrieval_chain import RetrievalChain\n\n\nclass QARetrieverNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # Initialize input\n        self._user_question = self.node_params.get('user_question', '')\n        self._qa_knowledge_id = self.node_params.get('qa_knowledge_id', [])\n        self._score = self.node_params.get('score', 0.6)\n\n        # Inisialisasiretriever, Running Initialization\n        self._retriever = None\n\n    def _init_retriever(self):\n        if self._retriever:\n            return\n        # Vector database client initialization, currently usingMilvus, more rational use of more generic factory methods\n        params = {}\n        params['search_kwargs'] = {'k': 1, 'score_threshold': self._score}\n        params['search_type'] = 'similarity_score_threshold'\n        params['collection_name'] = self._qa_knowledge_id  # [{\"key\":\"\", \"label\":\"\"}]\n        params['user_name'] = UserDao.get_user(self.user_id).user_name\n        params['_is_check_auth'] = False\n        knowledge_retriever = instantiate_vectorstore(\n            node_type='MilvusWithPermissionCheck',\n            class_object=MilvusWithPermissionCheck,\n            params=params,\n        )\n\n        self._retriever = RetrievalChain(retriever=knowledge_retriever)\n\n    def _run(self, unique_id: str):\n        self._init_retriever()\n        question = self.get_other_node_variable(self._user_question)\n        result = self._retriever.invoke({'query': question})\n        # qa have a result; turn out to bedocument\n        if result['result']:\n            # the source documents that store the retrieval results,keyLeft and right plus$As source documentkeyGo to inquiry\n            self.graph_state.set_variable(self.id, '$retrieved_result$', result['result'][0])\n            result_str = json.loads(result['result'][0].metadata['extra'])['answer']\n        else:\n            result_str = ''\n            self.graph_state.set_variable(self.id, '$retrieved_result$', None)\n\n        return {\n            'retrieved_result': result_str\n        }\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        return [[\n            {\n                \"key\": \"user_question\",\n                \"value\": self.get_other_node_variable(self._user_question),\n                \"type\": \"params\"\n            },\n            {\n                \"key\": \"retrieved_result\",\n                \"value\": result['retrieved_result'],\n                \"type\": \"params\"\n            }\n        ]]\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/rag/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/rag/rag.py",
    "content": "import json\nimport time\nfrom typing import List, Any\n\nfrom langchain.chains.combine_documents import create_stuff_documents_chain\nfrom langchain_core.documents import Document\nfrom langchain_core.prompts import (ChatPromptTemplate, HumanMessagePromptTemplate,\n                                    SystemMessagePromptTemplate)\nfrom langchain_core.runnables import RunnableConfig\nfrom loguru import logger\n\nfrom bisheng.chat.types import IgnoreException\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.llm.domain.services import LLMService\nfrom bisheng.workflow.callback.event import OutputMsgData, StreamMsgOverData\nfrom bisheng.workflow.callback.llm_callback import LLMNodeCallbackHandler\nfrom bisheng.workflow.common.knowledge import RagUtils\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\n\n\nclass RagNode(RagUtils):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # analyzingprompt\n        self._system_prompt = PromptTemplateParser(template=self.node_params['system_prompt'])\n        self._system_variables = self._system_prompt.extract()\n        self._user_prompt = PromptTemplateParser(template=self.node_params['user_prompt'])\n        self._user_variables = self._user_prompt.extract()\n\n        self._qa_prompt = None\n\n        self._llm = LLMService.get_bisheng_llm_sync(model_id=self.node_params['model_id'],\n                                                    temperature=self.node_params.get('temperature', 0.3),\n                                                    app_id=self.workflow_id,\n                                                    app_name=self.workflow_name,\n                                                    app_type=ApplicationTypeEnum.WORKFLOW,\n                                                    user_id=self.user_id)\n        self._minio_client = get_minio_storage_sync()\n\n        # Whether to output the results to the user\n        self._output_user = self.node_params.get('output_user', False)\n        self._output_keys = [one.get(\"key\") for one in self.node_params.get('output_user_input', [])]\n\n        # Run Log Data\n        self._log_source_documents = {}\n        self._log_system_prompt = []\n        self._log_user_prompt = []\n        self._log_reasoning_content = {}\n\n        self._milvus = None\n        self._es = None\n\n    def _run(self, unique_id: str):\n        ret = {}\n        self.init_user_info()\n        self._log_source_documents = {}\n        self._log_system_prompt = []\n        self._log_user_prompt = []\n        self._log_reasoning_content = {}\n\n        self.init_qa_prompt()\n\n        self.user_questions = self.init_user_question()\n        for index, question in enumerate(self.user_questions):\n            output_key = self._output_keys[index]\n            if question is None:\n                question = ''\n            question_answer = self.rag_one_question(question, output_key, unique_id)\n            ret[output_key] = question_answer\n        return ret\n\n    def rag_one_question(self, question: str, output_key: str, unique_id: str) -> str:\n        try:\n            self.init_multi_retriever()\n            self.init_rerank_model()\n            source_documents = self.retrieve_question(question)\n        except Exception as e:\n            logger.exception(f'RagNode retrieve_question error: ')\n            source_documents = [Document(page_content=str(e), metadata={})]\n\n        qa_chain = create_stuff_documents_chain(llm=self._llm, prompt=self._qa_prompt)\n        inputs = {\n            \"context\": source_documents,\n        }\n        if \"question\" in self._qa_prompt.input_variables:\n            inputs[\"question\"] = question\n\n        # and one of the reasons thatragIt needs to be traced, so it can't be used universally.llm callbackto return the message. Need to getsource_documentReturn message content after\n        llm_callback = LLMNodeCallbackHandler(callback=self.callback_manager,\n                                              unique_id=unique_id,\n                                              node_id=self.id,\n                                              node_name=self.name,\n                                              output=self._output_user,\n                                              output_key=output_key,\n                                              cancel_llm_end=True)\n        result = qa_chain.invoke(inputs, config=RunnableConfig(callbacks=[llm_callback]))\n\n        if self._output_user:\n            self.graph_state.save_context(content=result, msg_sender='AI')\n            if llm_callback.output_len == 0:\n                self.callback_manager.on_output_msg(\n                    OutputMsgData(node_id=self.id,\n                                  name=self.name,\n                                  msg=result,\n                                  unique_id=unique_id,\n                                  output_key=output_key,\n                                  source_documents=source_documents))\n            else:\n                # If there is a streaming output, the streaming end event is triggered, Because of the need tosource_documentSo do a streaming end event here\n                self.callback_manager.on_stream_over(StreamMsgOverData(\n                    node_id=self.id,\n                    name=self.name,\n                    msg=result,\n                    reasoning_content=llm_callback.reasoning_content,\n                    unique_id=unique_id,\n                    source_documents=source_documents,\n                    output_key=output_key,\n                ))\n\n        self._log_reasoning_content[output_key] = llm_callback.reasoning_content\n        self._log_source_documents[output_key] = source_documents\n        return result\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        ret = []\n        index = 0\n        user_question_list = self.init_user_question()\n        # Determine if the search results exceed a certain length, The reason iswsSending a message that exceeds a certain length will result in an error\n        source_documents = [[d.page_content for d in one] for one in self._log_source_documents.values()]\n        tmp_retrieved_type = 'variable'\n        tmp_retrieved_result = json.dumps(source_documents, indent=2, ensure_ascii=False)\n        if len(tmp_retrieved_result.encode('utf-8')) >= 50 * 1024:  # Lebih dari50kbLog data storage file\n            tmp_retrieved_type = 'file'\n            tmp_object_name = f'/workflow/source_document/{time.time()}.txt'\n            self._minio_client.put_object_tmp_sync(tmp_object_name, tmp_retrieved_result.encode('utf-8'))\n            tmp_retrieved_result = self._minio_client.get_share_link_sync(tmp_object_name,\n                                                                          self._minio_client.tmp_bucket)\n\n        for key, val in result.items():\n            if tmp_retrieved_type != 'file':\n                tmp_retrieved_result = json.dumps([one.page_content for one in self._log_source_documents[key]],\n                                                  indent=2, ensure_ascii=False)\n            one_ret = [\n                {'key': f'{self.id}.user_question', 'value': user_question_list[index], \"type\": \"variable\"},\n                {'key': f'{self.id}.retrieved_result', 'value': tmp_retrieved_result, \"type\": tmp_retrieved_type},\n                {'key': 'system_prompt', 'value': self._log_system_prompt[0], \"type\": \"params\"},\n                {'key': 'user_prompt', 'value': self._log_user_prompt[0], \"type\": \"params\"},\n            ]\n            if self._log_reasoning_content[key]:\n                one_ret.append({'key': 'Thinking about content', 'value': self._log_reasoning_content[key], \"type\": \"params\"})\n            one_ret.append({'key': f'{self.id}.{key}', 'value': val, 'type': 'variable'})\n\n            index += 1\n            ret.append(one_ret)\n        return ret\n\n    def init_user_question(self) -> List[str]:\n        # Convert all user questions to strings by default\n        ret = []\n        for one in self.node_params['user_question']:\n            ret.append(f\"{self.get_other_node_variable(one)}\")\n        return ret\n\n    def init_qa_prompt(self):\n        variable_map = {}\n        for one in self._user_variables:\n            if one == f'{self.id}.user_question':\n                variable_map[one] = '$$question$$'\n            elif one == f'{self.id}.retrieved_result':\n                variable_map[one] = '$$context$$'\n            else:\n                variable_map[one] = self.get_other_node_variable(one)\n        if variable_map.get(f'{self.id}.retrieved_result') is None:\n            raise IgnoreException('User prompts must contain retrieved_result Variables')\n        user_prompt = self._user_prompt.format(variable_map)\n        log_user_prompt = user_prompt.replace('$$question$$', '{user_question}').replace('$$context$$',\n                                                                                         '{retrieved_result}')\n        user_prompt = (user_prompt.replace('{', '{{').replace('}', '}}')\n                       .replace('$$question$$', '{question}').replace('$$context$$', '{context}'))\n        self._log_user_prompt.append(log_user_prompt)\n\n        variable_map = {}\n        for one in self._system_variables:\n            variable_map[one] = self.get_other_node_variable(one)\n        system_prompt = self._system_prompt.format(variable_map)\n        system_prompt.replace('{', '{{').replace('}', '}}')\n        self._log_system_prompt.append(system_prompt)\n\n        messages_general = [\n            SystemMessagePromptTemplate.from_template(system_prompt),\n            HumanMessagePromptTemplate.from_template(user_prompt),\n        ]\n        self._qa_prompt = ChatPromptTemplate.from_messages(messages_general)\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/report/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/report/docx_replace.py",
    "content": "import re\nfrom io import BytesIO\nfrom typing import List, Dict, Any, IO\n\nfrom docx import Document\nfrom docx.enum.style import WD_STYLE_TYPE\nfrom docx.oxml import OxmlElement\nfrom docx.shared import Pt, Inches, RGBColor\nfrom docx.table import _Cell\nfrom docx.text.paragraph import Paragraph\n\n\nclass DocxReplacer:\n    \"\"\"\n    Docx File Content Replacement Tool\n    Supports complex format placeholder replacement, including text, tables, images, titles, etc.\n    \"\"\"\n\n    def __init__(self, template_path: str | IO[bytes]):\n        self.template_path = template_path\n        self.doc = Document(template_path)\n        self.placeholder_pattern = re.compile(r'\\{\\{([^}]+)\\}\\}')\n        self._init_style()\n\n    def check_style(self, style_name: str, **kwargs):\n        all_style = self.doc.styles\n        if style_name not in all_style:\n            style = self.doc.styles.add_style(style_name, WD_STYLE_TYPE.PARAGRAPH)\n            font = style.font\n            for key, value in kwargs.items():\n                setattr(font, key, value)\n        else:\n            style = all_style[style_name]\n        return style\n\n    def _init_style(self):\n        self.check_style(\"Heading 1\", size=304800)\n        self.check_style(\"Heading 2\", size=254000)\n        self.check_style(\"Heading 3\", size=203200)\n        self.check_style(\"Heading 4\", size=177800)\n        self.check_style(\"Heading 5\", size=152400)\n        self.check_style(\"Heading 6\", bold=True)\n\n    def replace_and_save(self, variables: Dict[str, List[Dict[str, Any]]], output_path: str):\n        \"\"\"\n        Replace the placeholders and save the document.\n\n        Args:\n        Variables: A dictionary of variables, with the format of {\"var_name\": [{\"type\": \"text\", \"content\": \"...\"}]}\n        Output_path: The path of the output file\n        \"\"\"\n        self._process_paragraphs(self.doc.paragraphs, variables)\n\n        for table in self.doc.tables:\n            self._process_table(table, variables)\n\n        for section in self.doc.sections:\n            if section.header:\n                self._process_paragraphs(section.header.paragraphs, variables)\n            if section.footer:\n                self._process_paragraphs(section.footer.paragraphs, variables)\n\n        self.doc.save(output_path)\n\n    def _process_table(self, table, variables: Dict[str, List[Dict[str, Any]]]):\n        for row in table.rows:\n            for cell in row.cells:\n                self._process_paragraphs(cell.paragraphs, variables)\n                for nested_table in cell.tables:\n                    self._process_table(nested_table, variables)\n\n    def _process_paragraphs(self, paragraphs: List[Paragraph], variables: Dict[str, List[Dict[str, Any]]]):\n        i = 0\n        while i < len(paragraphs):\n            paragraph = paragraphs[i]\n            text = paragraph.text\n            matches = list(self.placeholder_pattern.finditer(text))\n\n            if matches:\n                insert_index = self._get_paragraph_index(paragraph)\n                self._replace_paragraph_placeholders(paragraph, matches, variables, insert_index)\n\n            i += 1\n\n    def _get_paragraph_index(self, paragraph: Paragraph) -> int:\n        parent = paragraph._element.getparent()\n        return parent.index(paragraph._element)\n\n    def _replace_paragraph_placeholders(\n            self,\n            paragraph: Paragraph,\n            matches: List[re.Match],\n            variables: Dict[str, List[Dict[str, Any]]],\n            insert_index: int\n    ):\n        parent = paragraph._element.getparent()\n        text = paragraph.text\n\n        segments = []\n        last_end = 0\n\n        for match in matches:\n            var_name = match.group(1)\n            start, end = match.span()\n\n            if start > last_end:\n                segments.append({\n                    'type': 'text_segment',\n                    'content': text[last_end:start],\n                    'paragraph': paragraph\n                })\n\n            if var_name in variables:\n                segments.append({\n                    'type': 'variable',\n                    'content': variables[var_name],\n                    'paragraph': paragraph\n                })\n            else:\n                segments.append({\n                    'type': 'text_segment',\n                    'content': match.group(0),\n                    'paragraph': paragraph\n                })\n\n            last_end = end\n\n        if last_end < len(text):\n            segments.append({\n                'type': 'text_segment',\n                'content': text[last_end:],\n                'paragraph': paragraph\n            })\n\n        original_format = self._extract_paragraph_format(paragraph)\n        original_run_format = self._extract_run_format(paragraph.runs[0] if paragraph.runs else None)\n\n        parent.remove(paragraph._element)\n\n        current_insert_index = insert_index\n        current_paragraph = None\n\n        for segment in segments:\n            if segment['type'] == 'text_segment':\n                if current_paragraph is None:\n                    current_paragraph = self._insert_paragraph_at_index(\n                        parent, current_insert_index, original_format\n                    )\n                    current_insert_index += 1\n\n                run = current_paragraph.add_run(segment['content'])\n                self._apply_run_format(run, original_run_format)\n\n            elif segment['type'] == 'variable':\n                for item in segment['content']:\n                    item_type = item.get('type')\n\n                    if item_type == 'text':\n                        if current_paragraph is None:\n                            current_paragraph = self._insert_paragraph_at_index(\n                                parent, current_insert_index, original_format\n                            )\n                            current_insert_index += 1\n\n                        run = current_paragraph.add_run(item['content'])\n                        self._apply_run_format(run, item)\n\n                    elif item_type in ['table', 'image', 'heading']:\n                        if current_paragraph is not None and current_paragraph.text.strip():\n                            current_paragraph = None\n\n                        if item_type == 'table':\n                            self._insert_table_at_index(parent, current_insert_index, item)\n                        elif item_type == 'image':\n                            self._insert_image_at_index(parent, current_insert_index, item, original_format)\n                        elif item_type == 'heading':\n                            self._insert_heading_at_index(parent, current_insert_index, item)\n\n                        current_insert_index += 1\n                        current_paragraph = None\n\n    def _extract_paragraph_format(self, paragraph: Paragraph) -> Dict[str, Any]:\n        return {\n            'alignment': paragraph.alignment,\n            'left_indent': paragraph.paragraph_format.left_indent,\n            'right_indent': paragraph.paragraph_format.right_indent,\n            'first_line_indent': paragraph.paragraph_format.first_line_indent,\n            'space_before': paragraph.paragraph_format.space_before,\n            'space_after': paragraph.paragraph_format.space_after,\n            'line_spacing': paragraph.paragraph_format.line_spacing,\n        }\n\n    def _extract_run_format(self, run) -> Dict[str, Any]:\n        if run is None:\n            return {}\n\n        return {\n            'bold': run.bold,\n            'italic': run.italic,\n            'underline': run.underline,\n            'font_name': run.font.name,\n            'font_size': run.font.size,\n            'font_color': run.font.color.rgb if run.font.color.rgb else None,\n        }\n\n    def _insert_paragraph_at_index(self, parent, index: int, format_dict: Dict[str, Any]) -> Paragraph:\n        p_element = OxmlElement('w:p')\n        parent.insert(index, p_element)\n        paragraph = Paragraph(p_element, self.doc)\n\n        # 应用格式\n        if format_dict.get('alignment') is not None:\n            paragraph.alignment = format_dict['alignment']\n        if format_dict.get('left_indent') is not None:\n            paragraph.paragraph_format.left_indent = format_dict['left_indent']\n        if format_dict.get('right_indent') is not None:\n            paragraph.paragraph_format.right_indent = format_dict['right_indent']\n        if format_dict.get('first_line_indent') is not None:\n            paragraph.paragraph_format.first_line_indent = format_dict['first_line_indent']\n        if format_dict.get('space_before') is not None:\n            paragraph.paragraph_format.space_before = format_dict['space_before']\n        if format_dict.get('space_after') is not None:\n            paragraph.paragraph_format.space_after = format_dict['space_after']\n        if format_dict.get('line_spacing') is not None:\n            paragraph.paragraph_format.line_spacing = format_dict['line_spacing']\n\n        return paragraph\n\n    def _apply_run_format(self, run, format_data: Dict[str, Any]):\n        if format_data.get('bold'):\n            run.bold = True\n        if format_data.get('italic'):\n            run.italic = True\n        if format_data.get('underline'):\n            run.underline = True\n        if format_data.get('font_size'):\n            if isinstance(format_data['font_size'], int):\n                run.font.size = Pt(format_data['font_size'])\n            else:\n                run.font.size = format_data['font_size']\n        if format_data.get('font_name'):\n            run.font.name = format_data['font_name']\n        if format_data.get('color'):\n            if isinstance(format_data['color'], tuple) and len(format_data['color']) == 3:\n                run.font.color.rgb = RGBColor(*format_data['color'])\n        if format_data.get('font_color'):\n            run.font.color.rgb = format_data['font_color']\n\n    def _insert_table_at_index(self, parent, index: int, item: Dict[str, Any]):\n        data = item['content']\n        rows = len(data)\n        cols = len(data[0]) if rows > 0 else 0\n\n        if rows == 0 or cols == 0:\n            return\n\n        table = self.doc.add_table(rows=0, cols=cols)\n\n        if item.get('style'):\n            table.style = item['style']\n\n        for row_data in data:\n            row = table.add_row()\n            for col_idx, cell_content in enumerate(row_data):\n                if col_idx < len(row.cells):\n                    cell = row.cells[col_idx]\n                    self._fill_cell(cell, cell_content)\n\n        tbl_element = table._element\n        parent.remove(tbl_element)\n        parent.insert(index, tbl_element)\n\n    def _fill_cell(self, cell: _Cell, cell_content: Any):\n        \"\"\"\n        Filling Cell Content\n\n        Cell content format:\n            1. Single element (dictionary): {\"type\": \"text\", \"content\": \"...\"}\n            2. Composite elements (list): [{\"type\": \"text\", ...}, {\"type\": \"image\", ...}]\n\n        Args:\n            cell: The cell object\n            cell_content: The cell content, a dictionary or a list\n        \"\"\"\n        if cell.paragraphs:\n            default_paragraph = cell.paragraphs[0]\n            for run in default_paragraph.runs:\n                run.text = ''\n        else:\n            default_paragraph = cell.add_paragraph()\n\n        if isinstance(cell_content, dict):\n            if 'type' not in cell_content or 'content' not in cell_content:\n                raise ValueError(\n                    f\"The cell element must contain the `type` and `content` fields, but got：{cell_content}\")\n            cell_content = [cell_content]\n        elif isinstance(cell_content, list):\n            for element in cell_content:\n                if not isinstance(element, dict) or 'type' not in element or 'content' not in element:\n                    raise ValueError(\n                        f\"The cell element must contain the `type` and `content` fields, but got：{element}\")\n        else:\n            raise ValueError(f\"Not supported data type：{type(cell_content)}\")\n\n        current_paragraph = default_paragraph\n\n        for element in cell_content:\n            element_type = element['type']\n            if element_type == 'text':\n                run = current_paragraph.add_run(element['content'])\n                self._apply_run_format(run, element)\n\n            elif element_type == 'image':\n                if current_paragraph.text.strip():\n                    current_paragraph = cell.add_paragraph()\n\n                self._add_image_to_paragraph(current_paragraph, element)\n                current_paragraph = cell.add_paragraph()\n\n            elif element_type == 'paragraph':\n                current_paragraph = cell.add_paragraph()\n                if element.get('alignment'):\n                    current_paragraph.alignment = element['alignment']\n\n                if isinstance(element['content'], str):\n                    run = current_paragraph.add_run(element['content'])\n                    self._apply_run_format(run, element)\n                elif isinstance(element['content'], list):\n                    for text_item in element['content']:\n                        if not isinstance(text_item, dict) or 'type' not in text_item:\n                            raise ValueError(f\"Paragraph content elements must include a `type` field; got：{text_item}\")\n                        if text_item['type'] == 'text':\n                            run = current_paragraph.add_run(text_item['content'])\n                            self._apply_run_format(run, text_item)\n            if element.get('alignment'):\n                for cell_paragraph in cell.paragraphs:\n                    cell_paragraph.alignment = element['alignment']\n\n    def _add_image_to_paragraph(self, paragraph: Paragraph, image_data: Dict[str, Any]):\n        run = paragraph.add_run()\n\n        try:\n            width = Inches(image_data.get('width', 2))\n            height = Inches(image_data.get('height')) if image_data.get('height') else None\n\n            if isinstance(image_data['content'], str):\n                # local file path\n                if height:\n                    run.add_picture(image_data['content'], width=width, height=height)\n                else:\n                    run.add_picture(image_data['content'], width=width)\n            elif isinstance(image_data['content'], bytes):\n                # bytes data\n                image_stream = BytesIO(image_data['content'])\n                if height:\n                    run.add_picture(image_stream, width=width, height=height)\n                else:\n                    run.add_picture(image_stream, width=width)\n        except Exception as e:\n            paragraph.add_run(f\"Image add failed: {str(e)}]\")\n\n        # set alignment\n        if image_data.get('alignment'):\n            paragraph.alignment = image_data['alignment']\n\n    def _insert_image_at_index(self, parent, index: int, item: Dict[str, Any], paragraph_format: Dict[str, Any]):\n        paragraph = self._insert_paragraph_at_index(parent, index, paragraph_format)\n        self._add_image_to_paragraph(paragraph, item)\n\n    def _insert_heading_at_index(self, parent, index: int, item: Dict[str, Any]):\n        p_element = OxmlElement('w:p')\n        parent.insert(index, p_element)\n        paragraph = Paragraph(p_element, self.doc)\n\n        level = item.get('level', 1)\n        paragraph.style = f'Heading {level}'\n\n        run = paragraph.add_run(item['content'])\n        self._apply_run_format(run, item)\n\n    def extract_variables(self) -> List[str]:\n        variables = []\n        seen = set()\n\n        for paragraph in self.doc.paragraphs:\n            vars_in_paragraph = self._extract_vars_from_text(paragraph.text)\n            for var in vars_in_paragraph:\n                if var not in seen:\n                    variables.append(var)\n                    seen.add(var)\n\n        for table in self.doc.tables:\n            vars_in_table = self._extract_vars_from_table(table)\n            for var in vars_in_table:\n                if var not in seen:\n                    variables.append(var)\n                    seen.add(var)\n\n        for section in self.doc.sections:\n            if section.header:\n                for paragraph in section.header.paragraphs:\n                    vars_in_paragraph = self._extract_vars_from_text(paragraph.text)\n                    for var in vars_in_paragraph:\n                        if var not in seen:\n                            variables.append(var)\n                            seen.add(var)\n\n            if section.footer:\n                for paragraph in section.footer.paragraphs:\n                    vars_in_paragraph = self._extract_vars_from_text(paragraph.text)\n                    for var in vars_in_paragraph:\n                        if var not in seen:\n                            variables.append(var)\n                            seen.add(var)\n\n        return variables\n\n    def _extract_vars_from_text(self, text: str) -> List[str]:\n        matches = self.placeholder_pattern.findall(text)\n        return matches\n\n    def _extract_vars_from_table(self, table) -> List[str]:\n        variables = []\n        seen = set()\n\n        for row in table.rows:\n            for cell in row.cells:\n                for paragraph in cell.paragraphs:\n                    vars_in_paragraph = self._extract_vars_from_text(paragraph.text)\n                    for var in vars_in_paragraph:\n                        if var not in seen:\n                            variables.append(var)\n                            seen.add(var)\n                for nested_table in cell.tables:\n                    nested_vars = self._extract_vars_from_table(nested_table)\n                    for var in nested_vars:\n                        if var not in seen:\n                            variables.append(var)\n                            seen.add(var)\n\n        return variables\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/report/report.py",
    "content": "import io\nimport tempfile\nfrom uuid import uuid4\n\nfrom loguru import logger\n\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.utils import generate_uuid\nfrom bisheng.workflow.callback.event import OutputMsgData\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.report.docx_replace import DocxReplacer\nfrom bisheng.workflow.nodes.report.text_classification import TextClassificationReport\n\n\nclass ReportNode(BaseNode):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self._report_info = self.node_params[\"report_info\"]\n        self._version_key = self._report_info[\"version_key\"].split(\"_\")[0]\n        self._object_name = f\"workflow/report/{self._version_key}.docx\"\n        self._file_name = self._report_info[\"file_name\"] if self._report_info[\"file_name\"] else \"tmp_report.docx\"\n        if not self._file_name.endswith(\".docx\"):\n            self._file_name += \".docx\"\n        self._minio_client = get_minio_storage_sync()\n\n    def _run(self, unique_id: str):\n        \"\"\"Master Execution Process\"\"\"\n        with tempfile.TemporaryDirectory() as temp_dir:\n            logger.debug(\"=== Download report template ===\")\n            template_content = self._download_template()\n            docx_replacer = DocxReplacer(io.BytesIO(template_content))\n            template_variables = docx_replacer.extract_variables()\n            if not template_variables:\n                logger.debug(\"=== Report template not found variables ===\")\n                finally_document = template_content\n            else:\n                logger.debug(\"=== Report template found variables ===\")\n                # Get workflow variables\n                logger.debug(\"=== Get workflow variables ===\")\n                workflow_variables = {}\n                text_classification = TextClassificationReport(temp_dir)\n                for one_variables in template_variables:\n                    variable_value = self.get_other_node_variable(one_variables)\n                    if type(variable_value) != str:\n                        variable_value = str(variable_value)\n                    variable_value = text_classification.get_all_classified_data(variable_value)\n                    workflow_variables[one_variables] = variable_value\n                logger.debug(\"=== replace report template variables ===\")\n                output_docx_path = f\"{temp_dir}/{generate_uuid()}.docx\"\n                docx_replacer.replace_and_save(workflow_variables, output_docx_path)\n                with open(output_docx_path, \"rb\") as f:\n                    finally_document = f.read()\n\n            # SAVE AND SHARE\n            logger.info(\"=== Walking Tongs7: Save and share documents ===\")\n            share_url = self._save_and_share_document(finally_document)\n\n            # Send Output Message\n            self._send_output_message(unique_id, share_url)\n\n            logger.info(\"=== Report Generation Complete ===\")\n\n    def _download_template(self) -> bytes:\n        \"\"\"Download sample\"\"\"\n        if not self._minio_client.object_exists_sync(self._minio_client.bucket, self._object_name):\n            raise Exception(f\"Template file does not exists!: {self._object_name}\")\n\n        template_content = self._minio_client.get_object_sync(self._minio_client.bucket, self._object_name)\n        logger.info(f\"Template downloaded successfully, size: {len(template_content)} byte\")\n\n        return template_content\n\n    def _save_and_share_document(self, document_content: bytes) -> str:\n        \"\"\"Save the document and get a share link\"\"\"\n        # Generate unique file path\n        tmp_object_name = f\"workflow/report/{uuid4().hex}/{self._file_name}\"\n\n        # Uploaded toMinIO\n        self._minio_client.put_object_tmp_sync(tmp_object_name, document_content)\n\n        # Get share link\n        share_url = self._minio_client.get_share_link_sync(tmp_object_name, self._minio_client.tmp_bucket)\n\n        logger.info(f\"Document saved successfully: {tmp_object_name}\")\n        logger.info(f\"Share Links: {share_url}\")\n\n        return share_url\n\n    def _send_output_message(self, unique_id: str, share_url: str):\n        \"\"\"Send Output Message\"\"\"\n        self.callback_manager.on_output_msg(\n            OutputMsgData(\n                unique_id=unique_id,\n                node_id=self.id,\n                name=self.name,\n                msg=\"\",\n                files=[{\"path\": share_url, \"name\": self._file_name}],\n                output_key=\"\",\n            )\n        )\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/report/text_classification.py",
    "content": "# Convert the string to the format required by the docx replacement tool.\nimport os\nimport re\nimport tempfile\nfrom dataclasses import dataclass\nfrom enum import Enum\nfrom typing import List, Dict, Tuple, Any\nfrom urllib.parse import urlparse, unquote\nfrom uuid import uuid4\n\nimport pandas as pd\nimport requests\nfrom charset_normalizer import detect\nfrom docx.enum.text import WD_ALIGN_PARAGRAPH\nfrom loguru import logger\nfrom openpyxl import load_workbook\n\nfrom bisheng.core.storage.minio.minio_manager import get_minio_storage_sync\nfrom bisheng.utils import md5_hash\n\n\nclass ResourceType(Enum):\n    \"\"\"Resource Type Enumeration\"\"\"\n    IMAGE = \"image\"\n    TABLE = \"table\"\n    TEXT = \"text\"\n    HEADING = \"heading\"\n    BOLD_TEXT = \"bold_text\"\n\n\n@dataclass\nclass MatchPattern:\n    \"\"\"Match Pattern Definition\"\"\"\n\n    name: str\n    resource_type: ResourceType\n    pattern: str\n    flags: int\n    handler_method: str\n\n\n# priority by order in the list\nPatterns = [\n    MatchPattern(\n        name=\"markdown_table\",\n        resource_type=ResourceType.TABLE,\n        pattern=r\"(\\s*\\|[^\\r\\n]*\\|[^\\r\\n]*(?:\\r?\\n\\s*\\|[^\\r\\n]*\\|[^\\r\\n]*)+)\",\n        flags=re.MULTILINE,\n        handler_method=\"_handle_markdown_table\",\n    ),\n    MatchPattern(\n        name=\"http_excel_csv\",\n        resource_type=ResourceType.TABLE,\n        pattern=r\"(https?://[^\\s\\u4e00-\\u9fff]*\\.(?:xlsx?|csv)(?:\\?[^\\s\\u4e00-\\u9fff]*)?)\",\n        flags=re.IGNORECASE,\n        handler_method=\"_handle_http_excel_csv\",\n    ),\n    MatchPattern(\n        name=\"local_excel_csv\",\n        resource_type=ResourceType.TABLE,\n        pattern=r\"([^\\s]*[/\\\\][^\\s]*\\.(?:xlsx?|csv))\",\n        flags=re.IGNORECASE,\n        handler_method=\"_handle_http_excel_csv\",\n    ),\n    MatchPattern(\n        name=\"markdown_image\",\n        resource_type=ResourceType.IMAGE,\n        pattern=r\"!\\[([^\\]]*)\\]\\(([^)]+\\.(?:png|jpg|jpeg|bmp|gif|webp)(?:\\?[^)]*)?)\\)\",\n        flags=re.IGNORECASE,\n        handler_method=\"_handle_http_image\",\n    ),\n    MatchPattern(\n        name=\"http_image\",\n        resource_type=ResourceType.IMAGE,\n        pattern=r\"\"\"\n        (?:                         # 非捕获组开始\n            (?:                     # URL协议\n                https?://            # http或https\n                |                    # 或\n                //                   # 协议相对URL\n                |                    # 或\n                file://              # 文件协议\n            )?                      # 协议可选\n        )?                          # 整个协议部分可选\n\n        (?:                         # 域名或路径\n            (?:                     # 域名部分\n                (?:www\\.)?          # 可选的www\n                [a-z0-9][a-z0-9-]* # 域名主体\n                (?:\\.[a-z0-9]+)+    # 域名后缀\n            )                       # 或\n            |                       # 或\n            (?:                     # 本地路径\n                (?:[a-z]:)?         # Windows驱动器(可选)\n                [\\\\/]?              # 可选的路径分隔符\n                (?:[^<>()\\[\\]\"'\\s]+[\\\\/])*  # 路径部分\n            )\n        )\n\n        [^<>()\\[\\]\"\\'\\s]*?          # 文件名(不含扩展名)\n\n        \\.                          # 扩展名前的点\n        (?:png|jpg|jpeg|gif|bmp|webp|tif)  # 图片扩展名\n\n        (?:                         # 可选的查询字符串\n            \\?                      # 问号\n            [^<>()\\[\\]\"'\\s]*        # 查询参数\n        )?                          # 查询字符串可选\n\n        (?:                         # 可选的片段标识符\n            \\#                      # 井号\n            [^<>()\\[\\]\"'\\s]*        # 片段\n        )?                          # 片段可选\n    \"\"\",\n        flags=re.IGNORECASE | re.VERBOSE,\n        handler_method=\"_handle_http_image\",\n    ),\n    MatchPattern(\n        name=\"heading\",\n        resource_type=ResourceType.HEADING,\n        pattern=r'^(#{1,6})\\s+(.+?)(?:\\s+#+)?\\s*$',\n        flags=re.IGNORECASE | re.MULTILINE,\n        handler_method=\"_handle_heading\",\n    ),\n    MatchPattern(\n        name=\"bold_text\",\n        resource_type=ResourceType.BOLD_TEXT,\n        # 严格正则表达式\n        # (?<!\\\\)          - 前向否定断言，确保前面没有转义符\\\n        # (?:\\\\*\\\\*|__)   - 匹配**或__\n        # (?![\\s])        - 后向否定断言，确保后面不是空白字符\n        # (.+?)           - 非贪婪匹配内容\n        # (?<![\\s])       - 前向否定断言，确保前面不是空白字符\n        # (?:\\\\*\\\\*|__)   - 匹配**或__\n        pattern=r'(?<!\\\\)(?:\\*\\*|__)(?![\\s])(.+?)(?<![\\s])(?<!\\\\)(?:\\*\\*|__)',\n        flags=re.IGNORECASE,\n        handler_method=\"_handle_bold_text\",\n    )\n]\n\n\nclass TextClassificationReport:\n    def __init__(self, static_resource_path: str):\n        # Ensure the static resource path exists, save some downloaded files in there\n        self.static_resource_path = static_resource_path or tempfile.gettempdir()\n        assert os.path.exists(self.static_resource_path), f\"{self.static_resource_path} dir not exist.\"\n        self.file_cache = {}\n\n    def get_all_classified_data(self, string_data: str) -> List[Dict]:\n        string_data = [{\"type\": \"text\", \"content\": string_data}]\n        for pattern in Patterns:\n            handle_method = pattern.handler_method\n            handler = getattr(self, handle_method, None)\n            if not handler:\n                logger.warning(f\"Handler method {handle_method} not found.\")\n                continue\n            string_data = handler(pattern, string_data)\n        return string_data\n\n    def _download_file(self, file_url: str) -> str:\n        # Set request headers to simulate browser access\n        file_url_md5 = md5_hash(file_url)\n        if self.file_cache.get(file_url_md5):\n            return self.file_cache.get(file_url_md5)\n        url_obj = urlparse(file_url)\n        filename = unquote(url_obj.path.split('/')[-1])\n        if file_url.startswith((\"https\", \"http\")):\n            headers = {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \"\n                              \"(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\"\n            }\n\n            response = requests.get(file_url, headers=headers, timeout=30, verify=False)\n            response.raise_for_status()\n            # Get filename\n            # accordingContent-TypeInferred extension\n            content_type = response.headers.get(\"Content-Type\", \"\").lower()\n            if \"image/png\" in content_type:\n                filename = f\"{uuid4().hex}.png\"\n            elif \"image/jpeg\" in content_type or \"image/jpg\" in content_type:\n                filename = f\"{uuid4().hex}.jpg\"\n            elif \"image/bmp\" in content_type:\n                filename = f\"{uuid4().hex}.bmp\"\n            else:\n                content_disposition = response.headers.get('Content-Disposition')\n                if content_disposition:\n                    filename = unquote(content_disposition).split('filename=')[-1].strip(\"\\\"'\")\n                file_ext = os.path.splitext(filename)[1].lower()\n                filename = f\"{uuid4().hex}{file_ext}\"\n            file_content = response.content\n        else:\n            # maybe minio file path\n            minio_client = get_minio_storage_sync()\n            if not file_url.lstrip(\"/\").startswith((minio_client.bucket, minio_client.tmp_bucket)):\n                raise ValueError(f\"Invalid minio path {file_url}\")\n            path_parts = url_obj.path.lstrip(\"/\").split('/', 1)\n            if len(path_parts) != 2:\n                raise ValueError(f\"Invalid minio path {file_url}\")\n\n            bucket_name, object_name = path_parts\n            # Call Synchronized minio Method download\n            object_name = unquote(object_name)\n            file_content = minio_client.get_object_sync(bucket_name, object_name)\n\n        # Creating temp file\n        temp_file = os.path.join(self.static_resource_path, filename)\n        with open(temp_file, \"wb\") as f:\n            f.write(file_content)\n        self.file_cache[file_url_md5] = temp_file\n        return temp_file\n\n    def _handle_bold_text(self, pattern: MatchPattern, string_data: List[Dict]):\n        return self._base_handle_string_data(pattern, string_data, self._parse_bold_text_data)\n\n    def _parse_bold_text_data(self, bold_text_str: str) -> Dict:\n        # Remove the ** or __ markers\n        content = re.sub(r'(?<!\\\\)(\\*\\*|__)(?![\\s])', '', bold_text_str)\n        return {\"type\": \"text\", \"content\": content, \"bold\": True}\n\n    def _handle_heading(self, pattern: MatchPattern, string_data: List[Dict]):\n        return self._base_handle_string_data(pattern, string_data, self._parse_heading_data)\n\n    @staticmethod\n    def _parse_heading_data(heading_str: str) -> Dict:\n        heading_level, heading_text = heading_str.split(\" \", 1)\n        level = min(len(heading_level.strip()), 6)\n        return {\"type\": \"heading\", \"content\": heading_text, \"level\": level}\n\n    def _handle_http_image(self, pattern: MatchPattern, string_data: List[Dict]):\n        # Placeholder for actual implementation\n        return self._base_handle_string_data(pattern, string_data, self._parse_http_image_data)\n\n    def _parse_http_image_data(self, image_str: str) -> Dict:\n        # image_str: ![xxx](http://example.com/image.png)  or http://example.com/image.png or /local/path/image.png\n        try:\n            if image_str.startswith(\"![\"):\n                new_image_str = image_str.split(\"](\", 1)[1].rstrip(\")\")\n                local_file_path = self._download_file(new_image_str)\n            else:\n                local_file_path = self._download_file(image_str)\n            return {\n                \"type\": \"image\",\n                \"content\": local_file_path\n            }\n        except Exception as e:\n            logger.error(f\"Failed to parse http image data: {str(e)}\")\n            return {\"type\": \"text\", \"content\": image_str}\n\n    def _handle_http_excel_csv(self, pattern: MatchPattern, string_data: List[Dict]):\n        # Placeholder for actual implementation\n        return self._base_handle_string_data(pattern, string_data, self._parse_http_table_data)\n\n    def _parse_http_table_data(self, table_url: str) -> Dict:\n        # Placeholder for actual implementation\n        try:\n            if table_url.startswith((\"http\", \"https\")):\n                local_file_path = self._download_file(table_url)\n            else:\n                local_file_path = table_url\n            if local_file_path.endswith(\".xlsx\"):\n                table_data, table_alignment = self._parse_excel_data(local_file_path)\n            elif local_file_path.endswith(\".csv\"):\n                table_data, table_alignment = self._parse_csv_data(local_file_path)\n            else:\n                raise ValueError(f\"Unsupported file format for table parsing: {local_file_path}\")\n            return self._handle_table_data_to_dict(table_data, table_alignment)\n        except Exception as e:\n            logger.error(f\"Failed to parse http table data: {str(e)}\")\n            return {\"type\": \"text\", \"content\": table_url}\n\n    @staticmethod\n    def _convert_docx_alignment(alignment: str) -> Any:\n        if alignment == \"left\":\n            return WD_ALIGN_PARAGRAPH.LEFT\n        elif alignment == \"center\":\n            return WD_ALIGN_PARAGRAPH.CENTER\n        elif alignment == \"right\":\n            return WD_ALIGN_PARAGRAPH.RIGHT\n        else:\n            return WD_ALIGN_PARAGRAPH.LEFT\n\n    def _handle_table_data_to_dict(self, table_data: List[List[str]], table_alignment: List[str]) -> Dict:\n        # Convert table data and alignment into a dictionary format\n        content = []\n        for row in table_data:\n            one_row_data = []\n            for index, cell in enumerate(row):\n                # convert each cell to text type with image alignment\n                markdown_image_pattern = Patterns[3]  # markdown_image pattern\n                http_image_pattern = Patterns[4]  # http_image pattern\n                bold_text_pattern = Patterns[6]  # bold_text pattern\n                cell_data = getattr(self, markdown_image_pattern.handler_method)(markdown_image_pattern,\n                                                                                 [{\"type\": \"text\", \"content\": cell}])\n                cell_data = getattr(self, http_image_pattern.handler_method)(http_image_pattern, cell_data)\n                cell_data = getattr(self, bold_text_pattern.handler_method)(bold_text_pattern, cell_data)\n                cell_data[0][\"alignment\"] = self._convert_docx_alignment(\n                    table_alignment[index] if index < len(table_alignment) else \"left\")\n                one_row_data.append(cell_data)\n            content.append(one_row_data)\n        return {\"type\": \"table\", \"content\": content}\n\n    @staticmethod\n    def _parse_excel_data(file_path: str) -> Tuple[List[List[str]], List[str]]:\n        # Use openpyxl read docx\n        workbook = load_workbook(file_path, data_only=True)  # data_only=TrueGet Calculated Value\n\n        # Using the first worksheet\n        worksheet = workbook.active\n\n        table_data = []\n        max_col = 0\n\n        # Read all rows\n        for row in worksheet.iter_rows(values_only=True):\n            # Skip completely blank rows\n            if all(cell is None or str(cell).strip() == \"\" for cell in row):\n                continue\n\n            row_data = [str(cell) if cell is not None else \"\" for cell in row]\n            table_data.append(row_data)\n            max_col = max(max_col, len(row_data))\n\n        # Make sure all rows have the same number of columns\n        for row in table_data:\n            while len(row) < max_col:\n                row.append(\"\")\n\n        # Generate alignment information (default left alignment)\n        alignments = [\"left\"] * max_col\n\n        logger.debug(f\"ExcelFile parsed successfully: {len(table_data)}Parade x {max_col}column\")\n\n        return table_data, alignments\n\n    @staticmethod\n    def _parse_csv_data(file_path: str) -> Tuple[List[List[str]], List[str]]:\n        # Auto-Detect Encoding\n        with open(file_path, 'rb') as f:\n            raw_data = f.read()\n            encoding_info = detect(raw_data)\n            encoding = encoding_info['encoding'] or 'utf-8'\n\n        # Use pandas read outCSVto better handle various formats\n        df = pd.read_csv(file_path, encoding=encoding)\n\n        # Convert to Tabular Data Format\n        table_data = []\n\n        # Add header\n        headers = [str(col) for col in df.columns]\n        table_data.append(headers)\n\n        # Add Data Row\n        for _, row in df.iterrows():\n            row_data = [str(cell) if pd.notna(cell) else \"\" for cell in row]\n            table_data.append(row_data)\n\n        # Generate alignment information (default left alignment)\n        alignments = [\"left\"] * len(headers)\n\n        logger.debug(f\"CSVFile parsed successfully: {len(table_data)}Parade x {len(headers)}column\")\n        return table_data, alignments\n\n    def _handle_markdown_table(self, pattern: MatchPattern, string_data: List[Dict]):\n        return self._base_handle_string_data(pattern, string_data, self._parse_table_data)\n\n    @staticmethod\n    def _base_handle_string_data(pattern: MatchPattern, string_data: List[Dict], parse_method) -> List[Dict]:\n        new_string_data = []\n        for one in string_data:\n            if one[\"type\"] != \"text\" or not one[\"content\"]:\n                new_string_data.append(one)\n                continue\n            content = one[\"content\"]\n            match_flag = False\n            for one_match in re.finditer(pattern.pattern, one[\"content\"], flags=pattern.flags):\n                match_flag = True\n                raw_text = one_match.group(0)\n                before, end = content.split(raw_text, 1)\n                new_string_data.append({\n                    \"type\": \"text\",\n                    \"content\": before\n                })\n                new_string_data.append(parse_method(raw_text))\n                content = end\n            if not match_flag:\n                new_string_data.append(one)\n                continue\n            if content:\n                new_string_data.append({\n                    \"type\": \"text\",\n                    \"content\": content\n                })\n        return new_string_data\n\n    def _parse_table_data(self, table_content: str) -> Dict:\n        \"\"\"Parse the table data while working with the in the table string\"\"\"\n        try:\n            # Analyze the table structure first\n            table_data, table_alignment = self._parse_markdown_table_from_content(table_content)\n            return self._handle_table_data_to_dict(table_data, table_alignment)\n        except Exception as e:\n            logger.error(f\"Failed to parse table data: {str(e)}\")\n            return {\"type\": \"text\", \"content\": table_content}\n\n    def _parse_markdown_table_from_content(self, table_content: str) -> Tuple[List[List[str]], List[str]]:\n        \"\"\"\n        Parsing from file contentsMarkdownTable Filter\n\n        Args:\n            table_content: table content in File contents\n\n        Returns:\n            tuple: (Table Data, Alignment Info List)\n        \"\"\"\n        # Keep all rows, including empty rows - Fully preserving the original table structure\n        lines = [line.strip() for line in table_content.strip().split(\"\\n\")]\n\n        table_rows = []\n        table_alignments = []\n        separator_found = False\n\n        for line in lines:\n            # Skip completely empty rows, but leave empty table rows with only vertical lines\n            if not line:\n                continue\n\n            # Check if it is a delimiter line\n            if self._is_table_separator_line(line):\n                table_alignments = self._parse_table_alignments(line)\n                separator_found = True\n                continue\n\n            # Parse Data Rows - Keep all table rows, including empty rows\n            cells = self._parse_table_row(line)\n            # Remove if cells Condition, leave empty table rows\n            table_rows.append(cells)\n\n        # Use default alignment if no separator found\n        if not separator_found and table_rows:\n            table_alignments = [\"left\"] * len(table_rows[0])\n\n        # Make sure all rows have the same number of columns\n        if table_rows:\n            max_cols = max(len(row) for row in table_rows)\n            for row in table_rows:\n                while len(row) < max_cols:\n                    row.append(\"\")\n\n            # Make sure the number of aligned messages matches the number of columns\n            while len(table_alignments) < max_cols:\n                table_alignments.append(\"left\")\n            table_alignments = table_alignments[:max_cols]\n\n        logger.debug(\n            f\"Successfully parsed table in content, size: {len(table_rows)}Parade x {len(table_alignments)}column\")\n        return table_rows, table_alignments\n\n    @staticmethod\n    def _is_table_separator_line(line: str) -> bool:\n        \"\"\"Check if yesMarkdownTable Separator Row\"\"\"\n        content = line.strip().strip(\"|\").strip()\n        if not content:\n            return False\n\n        cells = [cell.strip() for cell in content.split(\"|\")]\n\n        # At least one cell must contain a delimiter character (-OR:）\n        has_separator_chars = False\n        for cell in cells:\n            if not cell:\n                continue\n            # Check for delimiter characters\n            if '-' in cell or ':' in cell:\n                has_separator_chars = True\n            # Check for anything else after removing the separator character\n            clean_cell = cell.replace(\"-\", \"\").replace(\":\", \"\").strip()\n            if clean_cell:\n                return False\n\n        # Only lines containing delimiter characters can be considered delimiter lines\n        return has_separator_chars\n\n    @staticmethod\n    def _parse_table_alignments(separator_line: str) -> list:\n        \"\"\"Parse column alignment from delimiter rows\"\"\"\n        alignments = []\n        content = separator_line.strip().strip(\"|\").strip()\n        cells = [cell.strip() for cell in content.split(\"|\")]\n        for cell in cells:\n            if not cell:\n                alignments.append(\"left\")\n                continue\n            if cell.startswith(\":\") and cell.endswith(\":\"):\n                alignments.append(\"center\")\n            elif cell.endswith(\":\"):\n                alignments.append(\"right\")\n            else:\n                alignments.append(\"left\")\n\n        return alignments\n\n    @staticmethod\n    def _parse_table_row(line: str) -> list:\n        \"\"\"Parse Table Rows\"\"\"\n        content = line.strip()\n        if content.startswith(\"|\"):\n            content = content[1:]\n        if content.endswith(\"|\"):\n            content = content[:-1]\n\n        cells = []\n        current_cell = \"\"\n        escaped = False\n\n        for char in content:\n            if escaped:\n                current_cell += char\n                escaped = False\n            elif char == \"\\\\\":\n                escaped = True\n                current_cell += char\n            elif char == \"|\":\n                cells.append(current_cell.strip())\n                current_cell = \"\"\n            else:\n                current_cell += char\n\n        # Always add the last cell to ensure empty table rows are also parsed correctly\n        cells.append(current_cell.strip())\n        return cells\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/start/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/start/start.py",
    "content": "import datetime\nimport json\nfrom typing import Any, Dict\n\nfrom langchain.memory import ConversationBufferWindowMemory\n\nfrom bisheng.chat.types import IgnoreException\nfrom bisheng.database.models.group import GroupDao\nfrom bisheng.database.models.role import RoleDao\nfrom bisheng.database.models.user_group import UserGroupDao\nfrom bisheng.user.domain.models.user import UserDao\nfrom bisheng.user.domain.models.user_role import UserRoleDao\nfrom bisheng.workflow.callback.event import GuideQuestionData, GuideWordData\nfrom bisheng.workflow.nodes.base import BaseNode\n\n\nclass StartNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # Initialize Current Time\n        self.node_params['current_time'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')\n        # Initialize chat history\n        self.graph_state.history_memory = ConversationBufferWindowMemory(\n            k=self.node_params.get('chat_history', 10))\n        self._user_info = None\n\n    def _run(self, unique_id: str) -> Dict[str, Any]:\n        if self._user_info is None and self.user_id:\n            user_db = UserDao.get_user(int(self.user_id))\n            user_group = UserGroupDao.get_user_group(int(self.user_id))\n            groups = GroupDao.get_group_by_ids([group.group_id for group in user_group])\n            group_dict = {group.id: group.group_name for group in groups}\n            user_role = UserRoleDao.get_user_roles(int(self.user_id))\n            roles = RoleDao.get_role_by_ids([role.role_id for role in user_role])\n            user_roles = []\n            for one in roles:\n                if one.group_id not in group_dict.keys():\n                    continue\n                user_roles.append(f\"{group_dict[one.group_id]}-{one.role_name}\")\n            if user_db:\n                self._user_info = json.dumps({\n                    \"user_name\": user_db.user_name,\n                    \"user_group\": list(group_dict.values()),\n                    \"user_role\": user_roles,\n                }, ensure_ascii=False, indent=2)\n\n        if self.node_params['guide_word']:\n            self.callback_manager.on_guide_word(\n                data=GuideWordData(node_id=self.id, name=self.name, unique_id=unique_id,\n                                   guide_word=self.node_params['guide_word']))\n        if self.node_params['guide_question']:\n            self.callback_manager.on_guide_question(\n                data=GuideQuestionData(node_id=self.id, name=self.name, unique_id=unique_id,\n                                       guide_question=self.node_params['guide_question']))\n        if not self.node_data.v:\n            raise IgnoreException(f'{self.name} -- workflow node is update')\n\n        # convert preset_question to dict\n        new_preset_question = {}\n        for one in self.node_params['preset_question']:\n            new_preset_question[one['key']] = one['value']\n\n        # convert custom vars to dict\n        custom_vars = {}\n        for one in self.node_params.get('custom_variables', []):\n            custom_vars[one['key']] = one['value']\n        return {\n            'current_time': self.node_params['current_time'],\n            'chat_history': '',\n            'preset_question': new_preset_question,\n            'user_info': self._user_info,\n            'custom_variables': custom_vars\n        }\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        return [[\n            {\n                \"key\": \"current_time\",\n                \"value\": result['current_time'],\n                \"type\": \"params\"\n            },\n            {\n                \"key\": \"preset_question\",\n                \"value\": result['preset_question'],\n                \"type\": \"params\"\n            },\n            {\n                \"key\": \"user_info\",\n                \"value\": result['user_info'],\n                \"type\": \"params\"\n            }\n        ]]\n"
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/tool/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng/workflow/nodes/tool/tool.py",
    "content": "from typing import Any\n\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.tool.domain.models.gpts_tools import GptsToolsDao\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng.workflow.nodes.base import BaseNode\nfrom bisheng.workflow.nodes.prompt_template import PromptTemplateParser\n\n\nclass ToolNode(BaseNode):\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self._tool_key = self.node_data.tool_key\n        self._tool_info = GptsToolsDao.get_tool_by_tool_key(tool_key=self._tool_key)\n        if not self._tool_info:\n            raise Exception(f\"Tools{self._tool_key}Does not exist\")\n\n        self._tool = None\n\n    def _init_tool(self):\n        if self._tool:\n            return\n        self._tool = ToolExecutor.init_by_tool_id_sync(tool_id=self._tool_info.id, app_id=self.workflow_id,\n                                                       app_name=self.workflow_name,\n                                                       app_type=ApplicationTypeEnum.WORKFLOW, user_id=self.user_id)\n\n    def _run(self, unique_id: str):\n        self._init_tool()\n        tool_input = self.parse_tool_input()\n        output = self._tool.invoke(input=tool_input)\n        return {\n            \"output\": output\n        }\n\n    def parse_log(self, unique_id: str, result: dict) -> Any:\n        tool_input = self.parse_tool_input()\n        ret = [\n            {\n                \"key\": k,\n                \"value\": v,\n                \"type\": \"params\"\n            } for k, v in tool_input.items()\n        ]\n        ret.append({\n            \"key\": \"output\",\n            \"value\": result.get(\"output\", ''),\n            \"type\": \"params\"\n        })\n        return [ret]\n\n    def parse_tool_input(self) -> dict:\n        ret = {}\n        for key, val in self.node_params.items():\n            if key == \"output\":\n                continue\n            new_val = self.parse_template_msg(val)\n            if new_val == '' or new_val is None:\n                continue\n            ret[key] = new_val\n\n        return ret\n\n    def parse_template_msg(self, msg: str):\n        msg_template = PromptTemplateParser(template=msg)\n        variables = msg_template.extract()\n        if len(variables) > 0:\n            var_map = {}\n            for one in variables:\n                var_map[one] = self.get_other_node_variable(one)\n            msg = msg_template.format(var_map)\n        return msg\n"
  },
  {
    "path": "src/backend/bisheng_langchain/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/agents/__init__.py",
    "content": "from bisheng_langchain.agents.chatglm_functions_agent.base import ChatglmFunctionsAgent\nfrom bisheng_langchain.agents.llm_functions_agent.base import LLMFunctionsAgent\n\n__all__ = ['ChatglmFunctionsAgent', 'LLMFunctionsAgent']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/agents/chatglm_functions_agent/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/agents/chatglm_functions_agent/base.py",
    "content": "import json\nimport re\nfrom typing import Any, Dict, List, Optional, Sequence, Tuple, Union\n\nfrom pydantic import model_validator, Field\n\nfrom bisheng_langchain.chat_models.host_llm import HostChatGLM\nfrom langchain.agents.agent import Agent, AgentOutputParser, BaseSingleActionAgent\nfrom langchain.agents.structured_chat.output_parser import StructuredChatOutputParserWithRetries\nfrom langchain.agents.structured_chat.prompt import FORMAT_INSTRUCTIONS, PREFIX, SUFFIX\nfrom langchain.callbacks.base import BaseCallbackManager\nfrom langchain.callbacks.manager import Callbacks\nfrom langchain.prompts.chat import (ChatPromptTemplate, HumanMessagePromptTemplate,\n                                    SystemMessagePromptTemplate)\nfrom langchain.schema import AgentAction, AgentFinish, BasePromptTemplate\nfrom langchain.schema.language_model import BaseLanguageModel\nfrom langchain.schema.messages import ChatMessage\nfrom langchain.tools import BaseTool, StructuredTool\n\nHUMAN_MESSAGE_TEMPLATE = '{input}\\n\\n{agent_scratchpad}'\n\n\ndef format_tool_to_chatglm_function(tool: BaseTool):\n    \"\"\"Format tool into the chatglm function API.\"\"\"\n    if isinstance(tool, StructuredTool):\n        schema_ = tool.args_schema.schema()\n        # Bug with required missing for structured tools.\n        required = sorted(schema_['properties'])  # BUG WORKAROUND\n        return {\n            'name': tool.name,\n            'description': tool.description,\n            'parameters': {\n                'type': 'object',\n                'properties': schema_['properties'],\n                'required': required,\n            },\n        }\n    else:\n        if tool.args_schema:\n            schema_ = tool.args_schema.schema()\n            parameters = {\n                'type': 'object',\n                'properties': schema_['properties'],\n                'required': list(schema_['properties'].keys()),\n            }\n        else:\n            parameters = {\n                # This is a hack to get around the fact that some tools\n                # do not expose an args_schema, and expect an argument\n                # which is a string.\n                # And Open AI does not support an array type for the\n                # parameters.\n                'type': 'object',\n                'properties': {\n                    '__arg1': {\n                        'type': 'string',\n                        'title': '__arg1'\n                    },\n                },\n                'required': ['__arg1'],\n            }\n\n        return {\n            'name': tool.name,\n            'description': tool.description,\n            'parameters': parameters,\n        }\n\n\nclass ChatglmFunctionsAgent(BaseSingleActionAgent):\n    \"\"\"Chatglm Functions Agent.\"\"\"\n\n    llm: BaseLanguageModel\n    tools: Sequence[BaseTool]\n    prompt: BasePromptTemplate\n    output_parser: AgentOutputParser = Field(default_factory=StructuredChatOutputParserWithRetries)\n    \"\"\"Output parser for the agent.\"\"\"\n    has_search: bool = False\n    history: List = []\n\n    def get_allowed_tools(self) -> List[str]:\n        \"\"\"Get allowed tools.\"\"\"\n        return list([t.name for t in self.tools])\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_llm(cls, values: dict) -> dict:\n        if not isinstance(values['llm'], HostChatGLM):\n            raise ValueError('Only supported with ChatGLM3 models.')\n        return values\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_prompt(cls, values: dict) -> dict:\n        prompt: BasePromptTemplate = values['prompt']\n        if 'agent_scratchpad' not in prompt.input_variables:\n            raise ValueError('`agent_scratchpad` should be one of the variables in the prompt, '\n                             f'got {prompt.input_variables}')\n        return values\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Get input keys. Input refers to user input here.\"\"\"\n        return ['input']\n\n    @property\n    def observation_prefix(self) -> str:\n        \"\"\"Prefix to append the observation with.\"\"\"\n        return 'Observation: '\n\n    @property\n    def llm_prefix(self) -> str:\n        \"\"\"Prefix to append the llm call with.\"\"\"\n        return 'Thought:'\n\n    def _construct_scratchpad(self, intermediate_steps: List[Tuple[AgentAction, str]]) -> str:\n        agent_scratchpad = ''\n        for action, observation in intermediate_steps:\n            agent_scratchpad += action.log\n            agent_scratchpad += f'\\n{self.observation_prefix}{observation}\\n{self.llm_prefix}'\n        if not isinstance(agent_scratchpad, str):\n            raise ValueError('agent_scratchpad should be of type string.')\n        if agent_scratchpad:\n            return (f'This was your previous work '\n                    f\"(but I haven't seen any of it! I only see what \"\n                    f'you return as final answer):\\n{agent_scratchpad}')\n        else:\n            return agent_scratchpad\n\n    @classmethod\n    def _validate_tools(cls, tools: Sequence[BaseTool]) -> None:\n        pass\n\n    @classmethod\n    def _get_default_output_parser(cls,\n                                   llm: Optional[BaseLanguageModel] = None,\n                                   **kwargs: Any) -> AgentOutputParser:\n        return StructuredChatOutputParserWithRetries.from_llm(llm=llm)\n\n    @property\n    def _stop(self) -> List[str]:\n        return ['Observation:']\n\n    def _tool_history(self, prompt: str):\n        ans = []\n        tools_json = []\n        for i, tool in enumerate(self.tools):\n            tool_config = format_tool_to_chatglm_function(tool)\n            tools_json.append(tool_config)\n\n        ans.append({\n            'role': 'system',\n            'content':\n            'Answer the following questions as best as you can. You have access to the following tools:',\n            'tools': tools_json\n        })\n        query = f\"\"\"{prompt.split(\"Human: \")[-1].strip()}\"\"\"\n        return ans, query\n\n    def _extract_observation(self, prompt: str):\n        return_json = prompt.split('Observation: ')[-1].split('\\nThought:')[0]\n        self.history.append({'role': 'observation', 'content': return_json})\n        return\n\n    def _extract_tool(self):\n        tool_names = list([t.name for t in self.tools])\n        if self.history[-1]['metadata'] and len(self.history[-1]['metadata']) > 0:\n            metadata = self.history[-1]['metadata']\n            content = self.history[-1]['content']\n            if 'tool_call' in content:\n                for tool in tool_names:\n                    if tool in metadata:\n                        input_para = content.split(\"='\")[-1].split(\"'\")[0]\n                        action_json = {'action': tool, 'action_input': input_para}\n                        self.has_search = True\n                        return f\"\"\"\nAction:\n```\n{json.dumps(action_json, ensure_ascii=False)}\n```\"\"\"\n\n        final_answer_json = {'action': 'Final Answer', 'action_input': self.history[-1]['content']}\n        self.has_search = False\n        return f\"\"\"\nAction:\n```\n{json.dumps(final_answer_json, ensure_ascii=False)}\n```\"\"\"\n\n    def get_full_inputs(self, intermediate_steps: List[Tuple[AgentAction, str]],\n                        **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Create the full inputs for the LLMChain from intermediate steps.\"\"\"\n        thoughts = self._construct_scratchpad(intermediate_steps)\n        new_inputs = {'agent_scratchpad': thoughts, 'stop': self._stop}\n        full_inputs = {**kwargs, **new_inputs}\n        return full_inputs\n\n    def plan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        \"\"\"Given input, decided what to do.\n\n        Args:\n            intermediate_steps: Steps the LLM has taken to date,\n                along with observations\n            callbacks: Callbacks to run.\n            **kwargs: User inputs.\n\n        Returns:\n            Action specifying what tool to use.\n        \"\"\"\n        full_inputs = self.get_full_inputs(intermediate_steps, **kwargs)\n        prompt = self.prompt.format_prompt(**full_inputs)\n        prompt = prompt.to_string()\n        if not self.has_search:\n            self.history, query = self._tool_history(prompt)\n        else:\n            self._extract_observation(prompt)\n            query = ''\n        self.history.append({'role': 'user', 'content': query})\n\n        chat_messages = []\n        for message in self.history:\n            additional_kwargs = dict()\n            for key in message.keys():\n                if key not in ['role', 'content']:\n                    additional_kwargs[key] = message[key]\n            chat_messages.append(\n                ChatMessage(role=message['role'],\n                            content=message['content'],\n                            additional_kwargs=additional_kwargs))\n\n        predicted_message = self.llm.predict_messages(chat_messages, callbacks=callbacks)\n        self.history.append({\n            'role': 'assistant',\n            'content': predicted_message.content,\n            'metadata': predicted_message.additional_kwargs['metadata']\n        })\n        full_output = self._extract_tool()\n        return self.output_parser.parse(full_output)\n\n    async def aplan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        \"\"\"Given input, decided what to do.\n\n        Args:\n            intermediate_steps: Steps the LLM has taken to date,\n                along with observations\n            callbacks: Callbacks to run.\n            **kwargs: User inputs.\n\n        Returns:\n            Action specifying what tool to use.\n        \"\"\"\n        full_inputs = self.get_full_inputs(intermediate_steps, **kwargs)\n        prompt = self.prompt.format_prompt(**full_inputs)\n        prompt = prompt.to_string()\n        if not self.has_search:\n            self.history, query = self._tool_history(prompt)\n        else:\n            self._extract_observation(prompt)\n            query = ''\n        self.history.append({'role': 'user', 'content': query})\n\n        chat_messages = []\n        for message in self.history:\n            additional_kwargs = dict()\n            for key in message.keys():\n                if key not in ['role', 'content']:\n                    additional_kwargs[key] = message[key]\n            chat_messages.append(\n                ChatMessage(role=message['role'],\n                            content=message['content'],\n                            additional_kwargs=additional_kwargs))\n\n        predicted_message = await self.llm.apredict_messages(chat_messages, callbacks=callbacks)\n        self.history.append({\n            'role': 'assistant',\n            'content': predicted_message.content,\n            'metadata': predicted_message.additional_kwargs['metadata']\n        })\n        full_output = self._extract_tool()\n        return self.output_parser.parse(full_output)\n\n    @classmethod\n    def create_prompt(\n        cls,\n        tools: Sequence[BaseTool],\n        prefix: str = PREFIX,\n        suffix: str = SUFFIX,\n        human_message_template: str = HUMAN_MESSAGE_TEMPLATE,\n        format_instructions: str = FORMAT_INSTRUCTIONS,\n        input_variables: Optional[List[str]] = None,\n        memory_prompts: Optional[List[BasePromptTemplate]] = None,\n    ) -> BasePromptTemplate:\n        tool_strings = []\n        for tool in tools:\n            args_schema = re.sub('}', '}}}}', re.sub('{', '{{{{', str(tool.args)))\n            tool_strings.append(f'{tool.name}: {tool.description}, args: {args_schema}')\n        formatted_tools = '\\n'.join(tool_strings)\n        tool_names = ', '.join([tool.name for tool in tools])\n        format_instructions = format_instructions.format(tool_names=tool_names)\n        template = '\\n\\n'.join([prefix, formatted_tools, format_instructions, suffix])\n        if input_variables is None:\n            input_variables = ['input', 'agent_scratchpad']\n        _memory_prompts = memory_prompts or []\n        messages = [\n            SystemMessagePromptTemplate.from_template(template),\n            *_memory_prompts,\n            HumanMessagePromptTemplate.from_template(human_message_template),\n        ]\n        return ChatPromptTemplate(input_variables=input_variables, messages=messages)\n\n    @classmethod\n    def from_llm_and_tools(\n        cls,\n        llm: BaseLanguageModel,\n        tools: Sequence[BaseTool],\n        callback_manager: Optional[BaseCallbackManager] = None,\n        output_parser: Optional[AgentOutputParser] = None,\n        prefix: str = PREFIX,\n        suffix: str = SUFFIX,\n        human_message_template: str = HUMAN_MESSAGE_TEMPLATE,\n        format_instructions: str = FORMAT_INSTRUCTIONS,\n        input_variables: Optional[List[str]] = None,\n        memory_prompts: Optional[List[BasePromptTemplate]] = None,\n        **kwargs: Any,\n    ) -> Agent:\n        \"\"\"Construct an agent from an LLM and tools.\"\"\"\n        cls._validate_tools(tools)\n        prompt = cls.create_prompt(\n            tools,\n            prefix=prefix,\n            suffix=suffix,\n            human_message_template=human_message_template,\n            format_instructions=format_instructions,\n            input_variables=input_variables,\n            memory_prompts=memory_prompts,\n        )\n        _output_parser = output_parser or cls._get_default_output_parser(llm=llm)\n        return cls(\n            llm=llm,\n            prompt=prompt,\n            tools=tools,\n            output_parser=_output_parser,\n            callback_manager=callback_manager,\n            **kwargs,\n        )\n\n    @property\n    def _agent_type(self) -> str:\n        raise ValueError\n"
  },
  {
    "path": "src/backend/bisheng_langchain/agents/chatglm_functions_agent/output_parser.py",
    "content": "from __future__ import annotations\n\nimport json\nimport logging\nimport re\nfrom typing import Optional, Union\nfrom pydantic import Field\n\nfrom langchain.agents.agent import AgentOutputParser\nfrom langchain.agents.structured_chat.prompt import FORMAT_INSTRUCTIONS\nfrom langchain.output_parsers import OutputFixingParser\nfrom langchain.schema import AgentAction, AgentFinish, OutputParserException\nfrom langchain.schema.language_model import BaseLanguageModel\n\nlogger = logging.getLogger(__name__)\n\n\nclass StructuredChatOutputParser(AgentOutputParser):\n    \"\"\"Output parser for the structured chat agent.\"\"\"\n\n    pattern = re.compile(r\"```(?:json)?\\n(.*?)```\", re.DOTALL)\n\n    def get_format_instructions(self) -> str:\n        return FORMAT_INSTRUCTIONS\n\n    def parse(self, text: str) -> Union[AgentAction, AgentFinish]:\n        try:\n            action_match = self.pattern.search(text)\n            if action_match is not None:\n                response = json.loads(action_match.group(1).strip(), strict=False)\n                if isinstance(response, list):\n                    # gpt turbo frequently ignores the directive to emit a single action\n                    logger.warning(\"Got multiple action responses: %s\", response)\n                    response = response[0]\n                if response[\"action\"] == \"Final Answer\":\n                    return AgentFinish({\"output\": response[\"action_input\"]}, text)\n                else:\n                    return AgentAction(\n                        response[\"action\"], response.get(\"action_input\", {}), text\n                    )\n            else:\n                return AgentFinish({\"output\": text}, text)\n        except Exception as e:\n            raise OutputParserException(f\"Could not parse LLM output: {text}\") from e\n\n    @property\n    def _type(self) -> str:\n        return \"structured_chat\"\n\n\nclass StructuredChatOutputParserWithRetries(AgentOutputParser):\n    \"\"\"Output parser with retries for the structured chat agent.\"\"\"\n\n    base_parser: AgentOutputParser = Field(default_factory=StructuredChatOutputParser)\n    \"\"\"The base parser to use.\"\"\"\n    output_fixing_parser: Optional[OutputFixingParser] = None\n    \"\"\"The output fixing parser to use.\"\"\"\n\n    def get_format_instructions(self) -> str:\n        return FORMAT_INSTRUCTIONS\n\n    def parse(self, text: str) -> Union[AgentAction, AgentFinish]:\n        try:\n            if self.output_fixing_parser is not None:\n                parsed_obj: Union[\n                    AgentAction, AgentFinish\n                ] = self.output_fixing_parser.parse(text)\n            else:\n                parsed_obj = self.base_parser.parse(text)\n            return parsed_obj\n        except Exception as e:\n            raise OutputParserException(f\"Could not parse LLM output: {text}\") from e\n\n    @classmethod\n    def from_llm(\n        cls,\n        llm: Optional[BaseLanguageModel] = None,\n        base_parser: Optional[StructuredChatOutputParser] = None,\n    ) -> StructuredChatOutputParserWithRetries:\n        if llm is not None:\n            base_parser = base_parser or StructuredChatOutputParser()\n            output_fixing_parser = OutputFixingParser.from_llm(\n                llm=llm, parser=base_parser\n            )\n            return cls(output_fixing_parser=output_fixing_parser)\n        elif base_parser is not None:\n            return cls(base_parser=base_parser)\n        else:\n            return cls()\n\n    @property\n    def _type(self) -> str:\n        return \"structured_chat_with_retries\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/agents/chatglm_functions_agent/prompt.py",
    "content": "# flake8: noqa\nPREFIX = \"\"\"Respond to the human as helpfully and accurately as possible. You have access to the following tools:\"\"\"\nFORMAT_INSTRUCTIONS = \"\"\"Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).\n\nValid \"action\" values: \"Final Answer\" or {tool_names}\n\nProvide only ONE action per $JSON_BLOB, as shown:\n\n```\n{{{{\n  \"action\": $TOOL_NAME,\n  \"action_input\": $INPUT\n}}}}\n```\n\nFollow this format:\n\nQuestion: input question to answer\nThought: consider previous and subsequent steps\nAction:\n```\n$JSON_BLOB\n```\nObservation: action result\n... (repeat Thought/Action/Observation N times)\nThought: I know what to respond\nAction:\n```\n{{{{\n  \"action\": \"Final Answer\",\n  \"action_input\": \"Final response to human\"\n}}}}\n```\"\"\"\nSUFFIX = \"\"\"Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.\nThought:\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/agents/llm_functions_agent/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/agents/llm_functions_agent/base.py",
    "content": "\"\"\"Module implements an agent that uses OpenAI's APIs function enabled API.\"\"\"\nimport json\nfrom json import JSONDecodeError\nfrom typing import Any, List, Optional, Sequence, Tuple, Union\n\nfrom pydantic import model_validator\n\nfrom bisheng_langchain.chat_models.host_llm import HostQwenChat\nfrom bisheng_langchain.chat_models.proxy_llm import ProxyChatLLM\nfrom langchain.agents import BaseSingleActionAgent\nfrom langchain.callbacks.base import BaseCallbackManager\nfrom langchain.callbacks.manager import Callbacks\nfrom langchain.prompts.chat import (BaseMessagePromptTemplate, ChatPromptTemplate,\n                                    HumanMessagePromptTemplate, MessagesPlaceholder)\nfrom langchain.schema import AgentAction, AgentFinish, BasePromptTemplate, OutputParserException\nfrom langchain.schema.language_model import BaseLanguageModel\nfrom langchain.schema.messages import AIMessage, BaseMessage, FunctionMessage, SystemMessage\nfrom langchain.tools import BaseTool\nfrom langchain.tools.convert_to_openai import format_tool_to_openai_function\nfrom langchain_core.agents import AgentActionMessageLog\nfrom langchain_openai import ChatOpenAI\n\n\ndef _convert_agent_action_to_messages(agent_action: AgentAction,\n                                      observation: str) -> List[BaseMessage]:\n    \"\"\"Convert an agent action to a message.\n\n    This code is used to reconstruct the original AI message from the agent action.\n\n    Args:\n        agent_action: Agent action to convert.\n\n    Returns:\n        AIMessage that corresponds to the original tool invocation.\n    \"\"\"\n    if isinstance(agent_action, AgentActionMessageLog):\n        return list(\n            agent_action.message_log) + [_create_function_message(agent_action, observation)]\n    else:\n        return [AIMessage(content=agent_action.log)]\n\n\ndef _create_function_message(agent_action: AgentAction, observation: str) -> FunctionMessage:\n    \"\"\"Convert agent action and observation into a function message.\n    Args:\n        agent_action: the tool invocation request from the agent\n        observation: the result of the tool invocation\n    Returns:\n        FunctionMessage that corresponds to the original tool invocation\n    \"\"\"\n    if not isinstance(observation, str):\n        try:\n            content = json.dumps(observation, ensure_ascii=False)\n        except Exception:\n            content = str(observation)\n    else:\n        content = observation\n    return FunctionMessage(\n        name=agent_action.tool,\n        content=content,\n    )\n\n\ndef _format_intermediate_steps(\n    intermediate_steps: List[Tuple[AgentAction, str]], ) -> List[BaseMessage]:  # noqa\n    \"\"\"Format intermediate steps.\n    Args:\n        intermediate_steps: Steps the LLM has taken to date, along with observations\n    Returns:\n        list of messages to send to the LLM for the next prediction\n    \"\"\"\n    messages = []\n\n    for intermediate_step in intermediate_steps:\n        agent_action, observation = intermediate_step\n        messages.extend(_convert_agent_action_to_messages(agent_action, observation))\n\n    return messages\n\n\ndef _parse_ai_message(message: BaseMessage) -> Union[AgentAction, AgentFinish]:\n    \"\"\"Parse an AI message.\"\"\"\n    if not isinstance(message, AIMessage):\n        raise TypeError(f'Expected an AI message got {type(message)}')\n\n    function_call = message.additional_kwargs.get('tool_calls', {})\n\n    if function_call:\n        function_name = function_call['name']\n        try:\n            _tool_input = json.loads(function_call['arguments'])\n        except JSONDecodeError:\n            raise OutputParserException(f'Could not parse tool input: {function_call} because '\n                                        f'the `arguments` is not valid JSON.')\n\n        # HACK HACK HACK:\n        # The code that encodes tool input into Open AI uses a special variable\n        # name called `__arg1` to handle old style tools that do not expose a\n        # schema and expect a single string argument as an input.\n        # We unpack the argument here if it exists.\n        # Open AI does not support passing in a JSON array as an argument.\n        if '__arg1' in _tool_input:\n            tool_input = _tool_input['__arg1']\n        else:\n            tool_input = _tool_input\n\n        content_msg = 'responded: {content}\\n' if message.content else '\\n'\n        log = f'\\nInvoking: `{function_name}` with `{tool_input}`\\n{content_msg}\\n'\n        return AgentActionMessageLog(\n            tool=function_name,\n            tool_input=tool_input,\n            log=log,\n            message_log=[message],\n        )\n\n    return AgentFinish(return_values={'output': message.content}, log=message.content)\n\n\nclass LLMFunctionsAgent(BaseSingleActionAgent):\n    \"\"\"An Agent driven by function powered API.\n\n    Args:\n        llm: This should be an instance of ChatOpenAI, specifically a model\n            that supports using `functions`.\n        tools: The tools this agent has access to.\n        prompt: The prompt for this agent, should support agent_scratchpad as one\n            of the variables. For an easy way to construct this prompt, use\n            `OpenAIFunctionsAgent.create_prompt(...)`\n    \"\"\"\n\n    llm: BaseLanguageModel\n    tools: Sequence[BaseTool]\n    prompt: BasePromptTemplate\n\n    def get_allowed_tools(self) -> List[str]:\n        \"\"\"Get allowed tools.\"\"\"\n        return list([t.name for t in self.tools])\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_llm(cls, values: dict) -> dict:\n        if ((not isinstance(values['llm'], ChatOpenAI))\n                and (not isinstance(values['llm'], HostQwenChat))\n                and (not isinstance(values['llm'], ProxyChatLLM))):\n            raise ValueError(\n                'Only supported with ChatOpenAI and HostQwenChat and ProxyChatLLM models.')\n        return values\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_prompt(cls, values: dict) -> dict:\n        prompt: BasePromptTemplate = values['prompt']\n        if 'agent_scratchpad' not in prompt.input_variables:\n            raise ValueError('`agent_scratchpad` should be one of the variables in the prompt, '\n                             f'got {prompt.input_variables}')\n        return values\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Get input keys. Input refers to user input here.\"\"\"\n        return ['input']\n\n    @property\n    def functions(self) -> List[dict]:\n        return [dict(format_tool_to_openai_function(t)) for t in self.tools]\n\n    def plan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        with_functions: bool = True,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        \"\"\"Given input, decided what to do.\n\n        Args:\n            intermediate_steps: Steps the LLM has taken to date, along with observations\n            **kwargs: User inputs.\n\n        Returns:\n            Action specifying what tool to use.\n        \"\"\"\n        agent_scratchpad = _format_intermediate_steps(intermediate_steps)\n        selected_inputs = {\n            k: kwargs[k]\n            for k in self.prompt.input_variables if k != 'agent_scratchpad'\n        }\n        full_inputs = dict(**selected_inputs, agent_scratchpad=agent_scratchpad)\n        prompt = self.prompt.format_prompt(**full_inputs)\n        messages = prompt.to_messages()\n        # print(messages)\n        if with_functions:\n            predicted_message = self.llm.predict_messages(\n                messages,\n                functions=self.functions,\n                callbacks=callbacks,\n            )\n        else:\n            predicted_message = self.llm.predict_messages(\n                messages,\n                callbacks=callbacks,\n            )\n        agent_decision = _parse_ai_message(predicted_message)\n        return agent_decision\n\n    async def aplan(\n        self,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        callbacks: Callbacks = None,\n        **kwargs: Any,\n    ) -> Union[AgentAction, AgentFinish]:\n        \"\"\"Given input, decided what to do.\n\n        Args:\n            intermediate_steps: Steps the LLM has taken to date,\n                along with observations\n            **kwargs: User inputs.\n\n        Returns:\n            Action specifying what tool to use.\n        \"\"\"\n        agent_scratchpad = _format_intermediate_steps(intermediate_steps)\n        selected_inputs = {\n            k: kwargs[k]\n            for k in self.prompt.input_variables if k != 'agent_scratchpad'\n        }\n        full_inputs = dict(**selected_inputs, agent_scratchpad=agent_scratchpad)\n        prompt = self.prompt.format_prompt(**full_inputs)\n        messages = prompt.to_messages()\n        predicted_message = await self.llm.apredict_messages(messages,\n                                                             functions=self.functions,\n                                                             callbacks=callbacks)\n        agent_decision = _parse_ai_message(predicted_message)\n        return agent_decision\n\n    def return_stopped_response(\n        self,\n        early_stopping_method: str,\n        intermediate_steps: List[Tuple[AgentAction, str]],\n        **kwargs: Any,\n    ) -> AgentFinish:\n        \"\"\"Return response when agent has been stopped due to max iterations.\"\"\"\n        if early_stopping_method == 'force':\n            # `force` just returns a constant string\n            return AgentFinish({'output': 'Agent stopped due to iteration limit or time limit.'},\n                               '')\n        elif early_stopping_method == 'generate':\n            # Generate does one final forward pass\n            agent_decision = self.plan(intermediate_steps, with_functions=False, **kwargs)\n            if type(agent_decision) == AgentFinish:\n                return agent_decision\n            else:\n                raise ValueError(f'got AgentAction with no functions provided: {agent_decision}')\n        else:\n            raise ValueError('early_stopping_method should be one of `force` or `generate`, '\n                             f'got {early_stopping_method}')\n\n    @classmethod\n    def create_prompt(\n        cls,\n        system_message: Optional[SystemMessage] = SystemMessage(\n            content='You are a helpful AI assistant.'),\n        extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None,\n    ) -> BasePromptTemplate:\n        \"\"\"Create prompt for this agent.\n\n        Args:\n            system_message: Message to use as the system message that will be the\n                first in the prompt.\n            extra_prompt_messages: Prompt messages that will be placed between the\n                system message and the new human input.\n\n        Returns:\n            A prompt template to pass into this agent.\n        \"\"\"\n        _prompts = extra_prompt_messages or []\n        messages: List[Union[BaseMessagePromptTemplate, BaseMessage]]\n        if system_message:\n            messages = [system_message]\n        else:\n            messages = []\n\n        messages.extend([\n            *_prompts,\n            HumanMessagePromptTemplate.from_template('{input}'),\n            MessagesPlaceholder(variable_name='agent_scratchpad'),\n        ])\n        return ChatPromptTemplate(messages=messages)\n\n    @classmethod\n    def from_llm_and_tools(\n        cls,\n        llm: BaseLanguageModel,\n        tools: Sequence[BaseTool],\n        callback_manager: Optional[BaseCallbackManager] = None,\n        extra_prompt_messages: Optional[List[BaseMessagePromptTemplate]] = None,\n        system_message: Optional[SystemMessage] = SystemMessage(\n            content='You are a helpful AI assistant.'),\n        **kwargs: Any,\n    ) -> BaseSingleActionAgent:\n        \"\"\"Construct an agent from an LLM and tools.\"\"\"\n        if ((not isinstance(llm, ChatOpenAI)) and (not isinstance(llm, HostQwenChat))\n                and (not isinstance(llm, ProxyChatLLM))):\n            raise ValueError(\n                'Only supported with ChatOpenAI and HostQwenChat and ProxyChatLLM models.')\n        prompt = cls.create_prompt(\n            extra_prompt_messages=extra_prompt_messages,\n            system_message=system_message,\n        )\n        return cls(\n            llm=llm,\n            prompt=prompt,\n            tools=tools,\n            callback_manager=callback_manager,\n            **kwargs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/autogen_role/__init__.py",
    "content": "from bisheng_langchain.autogen_role.assistant import AutoGenAssistant\nfrom bisheng_langchain.autogen_role.custom import AutoGenCustomRole\nfrom bisheng_langchain.autogen_role.groupchat_manager import AutoGenGroupChatManager\nfrom bisheng_langchain.autogen_role.user import AutoGenCoder, AutoGenUser\n\n__all__ = ['AutoGenAssistant', 'AutoGenGroupChatManager',\n           'AutoGenUser', 'AutoGenCoder',\n           'AutoGenCustomRole']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/autogen_role/assistant.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport logging\nfrom typing import Callable, Dict, Optional\n\nimport httpx\nfrom autogen import AssistantAgent\nfrom langchain.base_language import BaseLanguageModel\n\nlogger = logging.getLogger(__name__)\n\n\nclass AutoGenAssistant(AssistantAgent):\n    \"\"\"Assistant agent, designed to solve a task with LLM.\n    \"\"\"\n\n    DEFAULT_SYSTEM_MESSAGE = \"\"\"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, 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.\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    \"\"\" # noqa\n\n    def __init__(\n        self,\n        name: str,\n        model_name: Optional[str] = 'gpt-4-0613',  # when llm_flag=True, need to set\n        openai_api_key: Optional[str] = '',  # when llm_flag=True, need to set\n        openai_api_base: Optional[str] = '',  # when llm_flag=True, need to set\n        openai_proxy: Optional[str] = '',  # when llm_flag=True, need to set\n        temperature: Optional[float] = 0,  # when llm_flag=True, need to set\n        api_type: Optional[str] = None,  # when llm_flag=True, need to set\n        api_version: Optional[str] = None,  # when llm_flag=True, need to set\n        llm: Optional[BaseLanguageModel] = None,\n        system_message: Optional[\n            str] = DEFAULT_SYSTEM_MESSAGE,  # agent system message, llm or group chat manage will use # noqa\n        is_termination_msg: Optional[Callable[[Dict], bool]] = None,\n        **kwargs,\n    ):\n        is_termination_msg = (is_termination_msg if is_termination_msg is not None else\n                              (lambda x: x.get('content') == 'TERMINATE'))\n        config_list = [\n            {\n                'model': model_name,\n                'api_key': openai_api_key,\n                'api_base': openai_api_base,\n                'api_type': api_type,\n                'api_version': api_version,\n            },\n        ]\n        if openai_proxy:\n            config_list[0]['http_client'] = httpx.Client(proxies=openai_proxy)\n            config_list[0]['http_async_client'] = httpx.AsyncClient(proxies=openai_proxy)\n\n        if llm:\n            llm_config = llm\n\n        else:\n            llm_config = {\n                'seed': 42,  # change the seed for different trials\n                'temperature': temperature,\n                'config_list': config_list,\n                'request_timeout': 120,\n            }\n\n        super().__init__(\n            name,\n            llm_config=llm_config,\n            system_message=system_message,\n            is_termination_msg=is_termination_msg,\n            max_consecutive_auto_reply=None,\n            human_input_mode='NEVER',\n            code_execution_config=False,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/autogen_role/custom.py",
    "content": "from typing import Any, Awaitable, Callable, Dict, List, Optional, Union\n\nfrom autogen import Agent, ConversableAgent\n\n\nclass AutoGenCustomRole(ConversableAgent):\n    \"\"\"Custom agent that can use langchain agent and chain.\"\"\"\n\n    def __init__(\n        self,\n        name: str,\n        system_message: str,\n        func: Callable[..., str],\n        coroutine: Optional[Callable[..., Awaitable[str]]] = None,\n        **kwargs,\n    ):\n        super().__init__(name=name,\n                         system_message=system_message,\n                         human_input_mode='NEVER',\n                         code_execution_config=False,\n                         llm_config=False,\n                         **kwargs)\n        self.func = func\n        self.coroutine = coroutine\n        self.register_reply(Agent, AutoGenCustomRole.generate_custom_reply)\n        self.register_reply(Agent, AutoGenCustomRole.a_generate_custom_reply, is_async=True)\n\n    def generate_custom_reply(\n        self,\n        messages: Optional[List[Dict]] = None,\n        sender: Optional[Agent] = None,\n        config: Optional[Any] = None,\n        **kwargs,\n    ) -> Union[str, Dict, None]:\n        if messages is None:\n            messages = self._oai_messages[sender]\n        message = messages[-1]\n\n        if 'content' in message:\n            query = message['content']\n            reply = self.func(query)\n            if isinstance(reply, dict):\n                reply = list(reply.values())\n                if reply:\n                    reply = str(reply[0])\n                else:\n                    reply = ''\n            return True, reply\n\n        return False, None\n\n    async def a_generate_custom_reply(\n        self,\n        messages: Optional[List[Dict]] = None,\n        sender: Optional[Agent] = None,\n        config: Optional[Any] = None,\n        **kwargs,\n    ) -> Union[str, Dict, None]:\n        if messages is None:\n            messages = self._oai_messages[sender]\n        message = messages[-1]\n\n        if 'content' in message:\n            query = message['content']\n            if self.coroutine:\n                reply = await self.coroutine(query)\n            else:\n                reply = self.func(query)\n            if isinstance(reply, dict):\n                reply = list(reply.values())\n                if reply:\n                    reply = str(reply[0])\n                else:\n                    reply = ''\n            return True, reply\n\n        return False, None\n"
  },
  {
    "path": "src/backend/bisheng_langchain/autogen_role/groupchat_manager.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport logging\nfrom typing import List, Optional\n\nimport httpx\nfrom autogen import Agent, GroupChat, GroupChatManager\nfrom langchain.base_language import BaseLanguageModel\n\nfrom .user import AutoGenUser\n\nlogger = logging.getLogger(__name__)\n\n\nclass AutoGenGroupChatManager(GroupChatManager):\n    \"\"\"A chat manager agent that can manage a group chat of multiple agents.\n    \"\"\"\n\n    def __init__(\n        self,\n        agents: List[Agent],\n        max_round: int = 50,\n        llm: Optional[BaseLanguageModel] = None,\n        model_name: Optional[str] = 'gpt-4-0613',\n        openai_api_key: Optional[str] = '',\n        openai_api_base: Optional[str] = '',\n        openai_proxy: Optional[str] = '',\n        temperature: Optional[float] = 0,\n        api_type: Optional[str] = None,  # when llm_flag=True, need to set\n        api_version: Optional[str] = None,  # when llm_flag=True, need to set\n        name: Optional[str] = 'chat_manager',\n        system_message: Optional[str] = 'Group chat manager.',\n        **kwargs,\n    ):\n        if not any(isinstance(agent, AutoGenUser) for agent in agents):\n            raise Exception('chat_manager must contains AutoGenUser')\n\n        groupchat = GroupChat(agents=agents, messages=[], max_round=max_round)\n\n        config_list = [\n            {\n                'model': model_name,\n                'api_key': openai_api_key,\n                'api_base': openai_api_base,\n                'api_type': api_type,\n                'api_version': api_version,\n            },\n        ]\n        if openai_proxy:\n            config_list[0]['http_client'] = httpx.Client(proxies=openai_proxy)\n            config_list[0]['http_async_client'] = httpx.AsyncClient(proxies=openai_proxy)\n\n        if llm:\n            llm_config = llm\n        else:\n            llm_config = {\n                'seed': 42,  # change the seed for different trials\n                'temperature': temperature,\n                'config_list': config_list,\n                'request_timeout': 120,\n            }\n\n        super().__init__(\n            groupchat=groupchat,\n            llm_config=llm_config,\n            name=name,\n            system_message=system_message,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/autogen_role/user.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport logging\nfrom typing import Callable, Dict, Optional\n\nimport httpx\nfrom autogen import UserProxyAgent\nfrom langchain.base_language import BaseLanguageModel\n\nlogger = logging.getLogger(__name__)\n\n\nclass AutoGenUserProxyAgent(UserProxyAgent):\n    \"\"\"A proxy agent for the user, that can execute code and provide feedback to the other agents.\n    \"\"\"\n\n    def __init__(\n        self,\n        name: str,\n        max_consecutive_auto_reply: Optional[int] = None,\n        human_input_mode: Optional[str] = 'ALWAYS',  # hmean feedback input\n        code_execution_flag: Optional[bool] = True,  # code execution\n        function_map: Optional[Dict[str, Callable]] = None,  # function call\n        llm_flag: Optional[bool] = False,  # llm call\n        model_name: Optional[str] = 'gpt-4-0613',  # when llm_flag=True, need to set\n        openai_api_key: Optional[str] = '',  # when llm_flag=True, need to set\n        openai_api_base: Optional[str] = '',  # when llm_flag=True, need to set\n        openai_proxy: Optional[str] = '',  # when llm_flag=True, need to set\n        temperature: Optional[float] = 0,  # when llm_flag=True, need to set\n        api_type: Optional[str] = None,  # when llm_flag=True, need to set\n        api_version: Optional[str] = None,  # when llm_flag=True, need to set\n        llm: Optional[BaseLanguageModel] = None,\n        system_message: Optional[\n            str] = '',  # agent system message, llm or group chat manage will use\n        is_termination_msg: Optional[Callable[[Dict], bool]] = None,\n        **kwargs,\n    ):\n        is_termination_msg = (is_termination_msg if is_termination_msg is not None else\n                              (lambda x: x.get('content') == 'TERMINATE'))\n\n        if code_execution_flag:\n            code_execution_config = {\n                'work_dir': '/tmp/autogen_coding',  # code save path\n                'use_docker': False,\n            }\n        else:\n            code_execution_config = False\n\n        if llm_flag:\n            config_list = [\n                {\n                    'model': model_name,\n                    'api_key': openai_api_key,\n                    'api_base': openai_api_base,\n                    'api_type': api_type,\n                    'api_version': api_version,\n                },\n            ]\n            if openai_proxy:\n                config_list[0]['http_client'] = httpx.Client(proxies=openai_proxy)\n                config_list[0]['http_async_client'] = httpx.AsyncClient(proxies=openai_proxy)\n\n            if llm:\n                llm_config = llm\n            else:\n                llm_config = {\n                    'seed': 42,  # change the seed for different trials\n                    'temperature': temperature,\n                    'config_list': config_list,\n                    'request_timeout': 120,\n                }\n        else:\n            llm_config = False\n\n        super().__init__(name,\n                         is_termination_msg=is_termination_msg,\n                         max_consecutive_auto_reply=max_consecutive_auto_reply,\n                         human_input_mode=human_input_mode,\n                         function_map=function_map,\n                         code_execution_config=code_execution_config,\n                         llm_config=llm_config,\n                         system_message=system_message)\n\n\nclass AutoGenUser(UserProxyAgent):\n    \"\"\"A proxy agent for the user, that can provide feedback to the other agents.\n    \"\"\"\n\n    def __init__(\n        self,\n        name: str,\n        max_consecutive_auto_reply: Optional[int] = 10,\n        human_input_mode: Optional[str] = 'ALWAYS',  # hmean feedback input\n        system_message: Optional[\n            str] = '',  # agent system message, llm or group chat manage will use\n        is_termination_msg: Optional[Callable[[Dict], bool]] = None,\n        **kwargs,\n    ):\n        is_termination_msg = (is_termination_msg if is_termination_msg is not None else\n                              (lambda x: x.get('content') == 'TERMINATE'))\n        code_execution_config = False\n        llm_config = False\n\n        super().__init__(name,\n                         is_termination_msg=is_termination_msg,\n                         max_consecutive_auto_reply=max_consecutive_auto_reply,\n                         human_input_mode=human_input_mode,\n                         code_execution_config=code_execution_config,\n                         llm_config=llm_config,\n                         system_message=system_message)\n\n\nclass AutoGenCoder(UserProxyAgent):\n    \"\"\"A proxy agent for the coder, that can execute code to the other agents.\n    \"\"\"\n\n    def __init__(\n        self,\n        name: str,\n        function_map: Optional[Dict[str, Callable]] = None,  # function call\n        system_message: Optional[\n            str] = '',  # agent system message, llm or group chat manage will use\n        is_termination_msg: Optional[Callable[[Dict], bool]] = None,\n        **kwargs,\n    ):\n        is_termination_msg = (is_termination_msg if is_termination_msg is not None else\n                              (lambda x: x.get('content') == 'TERMINATE'))\n        code_execution_config = {\n            'work_dir': '/tmp/autogen_coding',  # code save path\n            'use_docker': False,\n        }\n        llm_config = False\n\n        super().__init__(name,\n                         is_termination_msg=is_termination_msg,\n                         human_input_mode='NEVER',\n                         function_map=function_map,\n                         code_execution_config=code_execution_config,\n                         llm_config=llm_config,\n                         system_message=system_message)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/__init__.py",
    "content": "from bisheng_langchain.chains.autogen.auto_gen import AutoGenChain\nfrom bisheng_langchain.chains.combine_documents.stuff import StuffDocumentsChain\nfrom bisheng_langchain.chains.conversational_retrieval.base import ConversationalRetrievalChain\nfrom bisheng_langchain.chains.retrieval.retrieval_chain import RetrievalChain\nfrom bisheng_langchain.chains.router.multi_rule import MultiRuleChain\nfrom bisheng_langchain.chains.router.rule_router import RuleBasedRouter\nfrom bisheng_langchain.chains.transform import TransformChain\nfrom bisheng_langchain.chains.qa_generation.base import QAGenerationChain\nfrom bisheng_langchain.chains.qa_generation.base_v2 import QAGenerationChainV2\n\nfrom .loader_output import LoaderOutputChain\n\n__all__ = [\n    'StuffDocumentsChain', 'LoaderOutputChain', 'AutoGenChain', 'RuleBasedRouter',\n    'MultiRuleChain', 'RetrievalChain', 'ConversationalRetrievalChain', 'TransformChain',\n    'QAGenerationChain', 'QAGenerationChainV2'\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/autogen/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/autogen/auto_gen.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport functools\nimport json\nimport logging\nfrom typing import Any, Dict, List, Optional\n\nfrom autogen import ConversableAgent\nfrom bisheng_langchain.autogen_role import AutoGenGroupChatManager, AutoGenUser\nfrom langchain.callbacks.manager import AsyncCallbackManagerForChainRun, CallbackManagerForChainRun\nfrom langchain.chains.base import Chain\n\nlogger = logging.getLogger(__name__)\n\n\nclass AutoGenChain(Chain):\n    \"\"\"Chain that print the loader output.\n    \"\"\"\n    user_proxy_agent: AutoGenUser\n    recipient: ConversableAgent\n\n    input_key: str = 'chat_topic'  #: :meta private:\n\n    output_key: str = 'chat_content'  #: :meta private:\n\n    @staticmethod\n    @functools.lru_cache\n    def _log_once(msg: str) -> None:\n        \"\"\"Log a message once.\n\n        :meta private:\n        \"\"\"\n        logger.warning(msg)\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Expect input keys.\n\n        :meta private:\n        \"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Return output keys.\n\n        :meta private:\n        \"\"\"\n        return [self.output_key]\n\n    def _call(\n        self,\n        inputs: Dict[str, str],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, str]:\n        message = inputs[self.input_key]\n        # io_output = io.StringIO()\n        # with contextlib.redirect_stdout(io_output):\n        global_chat_messages = []\n        self.user_proxy_agent.initiate_chat(self.recipient, message=message,\n                                            global_chat_messages=global_chat_messages,\n                                            run_manager=run_manager)\n        # chat_content = io_output.getvalue()\n        chat_content = json.dumps(\n            global_chat_messages, indent=2, ensure_ascii=False)\n        output = {self.output_key: chat_content}\n        return output\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        message = inputs[self.input_key]\n        # io_output = io.StringIO()\n        # with contextlib.redirect_stdout(io_output):\n        global_chat_messages = []\n        self.recipient.stop = False\n        await self.user_proxy_agent.a_initiate_chat(self.recipient,\n                                                    message=message,\n                                                    global_chat_messages=global_chat_messages,\n                                                    run_manager=run_manager)\n        # chat_content = io_output.getvalue()\n        output = {self.output_key: global_chat_messages[-1].get('message'),\n                  'intermediate_steps': global_chat_messages}\n        return output\n\n    async def stop(self):\n        self.recipient.stop = True\n        self.user_proxy_agent.event.set()\n        self.user_proxy_agent.event.clear()\n\n    async def reset(self):\n        if isinstance(self.recipient, AutoGenGroupChatManager):\n            self.recipient.reset()\n\n    async def input(self, input: str):\n        self.user_proxy_agent.input = input\n        self.user_proxy_agent.event.set()\n        self.user_proxy_agent.event.clear()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/combine_documents/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/combine_documents/stuff.py",
    "content": "from typing import Any, List, Tuple\n\nfrom langchain.callbacks.manager import Callbacks\nfrom langchain.chains.combine_documents.stuff import StuffDocumentsChain as StuffDocumentsChainOld\nfrom langchain.docstore.document import Document\n\n\nclass StuffDocumentsChain(StuffDocumentsChainOld):\n\n    token_max: int = -1\n\n    def combine_docs(self,\n                     docs: List[Document],\n                     callbacks: Callbacks = None,\n                     **kwargs: Any) -> Tuple[str, dict]:\n        \"\"\"Stuff all documents into one prompt and pass to LLM.\n\n        Args:\n            docs: List of documents to join together into one variable\n            callbacks: Optional callbacks to pass along\n            **kwargs: additional parameters to use to get inputs to LLMChain.\n\n        Returns:\n            The first element returned is the single string output. The second\n            element returned is a dictionary of other keys to return.\n        \"\"\"\n        inputs = self._get_inputs(docs, **kwargs)\n        # print('inputs:', len(inputs['context']))\n        # print('prompt_length:', self.prompt_length(docs, **kwargs))\n        if self.token_max > 0:\n            inputs[self.document_variable_name] = inputs[\n                self.document_variable_name][:self.token_max]\n        # Call predict on the LLM.\n        return self.llm_chain.predict(callbacks=callbacks, **inputs), {}\n\n    async def acombine_docs(self,\n                            docs: List[Document],\n                            callbacks: Callbacks = None,\n                            **kwargs: Any) -> Tuple[str, dict]:\n        \"\"\"Stuff all documents into one prompt and pass to LLM.\n\n        Args:\n            docs: List of documents to join together into one variable\n            callbacks: Optional callbacks to pass along\n            **kwargs: additional parameters to use to get inputs to LLMChain.\n\n        Returns:\n            The first element returned is the single string output. The second\n            element returned is a dictionary of other keys to return.\n        \"\"\"\n        inputs = self._get_inputs(docs, **kwargs)\n        if self.token_max > 0:\n            inputs[self.document_variable_name] = inputs[\n                self.document_variable_name][:self.token_max]\n        # Call predict on the LLM.\n        return await self.llm_chain.apredict(callbacks=callbacks, **inputs), {}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/conversational_retrieval/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/conversational_retrieval/base.py",
    "content": "from __future__ import annotations\n\nimport inspect\nfrom typing import Any, Dict, List, Optional, Tuple, Union\n\nfrom langchain.callbacks.manager import AsyncCallbackManagerForChainRun, CallbackManagerForChainRun\nfrom langchain.chains.conversational_retrieval.base import \\\n    ConversationalRetrievalChain as BaseConversationalRetrievalChain\nfrom langchain_core.messages import BaseMessage\n\n# Depending on the memory type and configuration, the chat history format may differ.\n# This needs to be consolidated.\nCHAT_TURN_TYPE = Union[Tuple[str, str], BaseMessage]\n\n_ROLE_MAP = {'human': 'Human: ', 'ai': 'Assistant: '}\n\n\ndef _get_chat_history(chat_history: List[CHAT_TURN_TYPE]) -> str:\n    buffer = ''\n    for dialogue_turn in chat_history:\n        if isinstance(dialogue_turn, BaseMessage):\n            role_prefix = _ROLE_MAP.get(dialogue_turn.type, f'{dialogue_turn.type}: ')\n            buffer += f'\\n{role_prefix}{dialogue_turn.content}'\n        elif isinstance(dialogue_turn, tuple):\n            human = 'Human: ' + dialogue_turn[0]\n            ai = 'Assistant: ' + dialogue_turn[1]\n            buffer += '\\n' + '\\n'.join([human, ai])\n        else:\n            raise ValueError(f'Unsupported chat history format: {type(dialogue_turn)}.'\n                             f' Full chat history: {chat_history} ')\n    return buffer\n\n\nclass ConversationalRetrievalChain(BaseConversationalRetrievalChain):\n    \"\"\"ConversationalRetrievalChain is a chain you can use to have a conversation with a character from a series.\"\"\"\n\n    def _call(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager()\n        question = inputs['question']\n        get_chat_history = self.get_chat_history or _get_chat_history\n        chat_history_str = get_chat_history(inputs['chat_history'])\n\n        if chat_history_str:\n            # callbacks = _run_manager.get_child()\n            new_question = self.question_generator.run(question=question,\n                                                       chat_history=chat_history_str)\n        else:\n            new_question = question\n        accepts_run_manager = ('run_manager' in inspect.signature(self._get_docs).parameters)\n        if accepts_run_manager:\n            docs = self._get_docs(new_question, inputs, run_manager=_run_manager)\n        else:\n            docs = self._get_docs(new_question, inputs)  # type: ignore[call-arg]\n        output: Dict[str, Any] = {}\n        if self.response_if_no_docs_found is not None and len(docs) == 0:\n            output[self.output_key] = self.response_if_no_docs_found\n        else:\n            new_inputs = inputs.copy()\n            if self.rephrase_question:\n                new_inputs['question'] = new_question\n            new_inputs['chat_history'] = chat_history_str\n            answer = self.combine_docs_chain.run(input_documents=docs,\n                                                 callbacks=_run_manager.get_child(),\n                                                 **new_inputs)\n            output[self.output_key] = answer\n\n        if self.return_source_documents:\n            output['source_documents'] = docs\n        if self.return_generated_question:\n            output['generated_question'] = new_question\n        return output\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        _run_manager = run_manager or AsyncCallbackManagerForChainRun.get_noop_manager()\n        question = inputs['question']\n        get_chat_history = self.get_chat_history or _get_chat_history\n        chat_history_str = get_chat_history(inputs['chat_history'])\n        if chat_history_str:\n            # callbacks = _run_manager.get_child()\n            new_question = await self.question_generator.arun(question=question,\n                                                              chat_history=chat_history_str)\n        else:\n            new_question = question\n        accepts_run_manager = ('run_manager' in inspect.signature(self._aget_docs).parameters)\n        if accepts_run_manager:\n            docs = await self._aget_docs(new_question, inputs, run_manager=_run_manager)\n        else:\n            docs = await self._aget_docs(new_question, inputs)  # type: ignore[call-arg]\n\n        output: Dict[str, Any] = {}\n        if self.response_if_no_docs_found is not None and len(docs) == 0:\n            output[self.output_key] = self.response_if_no_docs_found\n        else:\n            new_inputs = inputs.copy()\n            if self.rephrase_question:\n                new_inputs['question'] = new_question\n            new_inputs['chat_history'] = chat_history_str\n            answer = await self.combine_docs_chain.arun(input_documents=docs,\n                                                        callbacks=_run_manager.get_child(),\n                                                        **new_inputs)\n            output[self.output_key] = answer\n\n        if self.return_source_documents:\n            output['source_documents'] = docs\n        if self.return_generated_question:\n            output['generated_question'] = new_question\n        return output\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/loader_output.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport functools\nimport logging\nimport json\nfrom typing import Any, Awaitable, Callable, Dict, List, Optional\n\nfrom langchain.callbacks.manager import (\n    AsyncCallbackManagerForChainRun,\n    CallbackManagerForChainRun,\n)\nfrom langchain.chains.base import Chain\nfrom langchain.docstore.document import Document\n\nlogger = logging.getLogger(__name__)\n\n\nclass LoaderOutputChain(Chain):\n    \"\"\"Chain that print the loader output.\n    \"\"\"\n    documents: List[Document]\n    input_key: str = \"begin\"  #: :meta private:\n    output_key: str = \"text\"  #: :meta private:\n\n    @staticmethod\n    @functools.lru_cache\n    def _log_once(msg: str) -> None:\n        \"\"\"Log a message once.\n\n        :meta private:\n        \"\"\"\n        logger.warning(msg)\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Expect input keys.\n\n        :meta private:\n        \"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Return output keys.\n\n        :meta private:\n        \"\"\"\n        return [self.output_key]\n\n    def _call(\n        self,\n        inputs: Dict[str, str],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, str]:\n        contents = [doc.page_content for doc in self.documents]\n        contents = '\\n\\n'.join(contents)\n        # contents = json.dumps(contents, indent=2, ensure_ascii=False)\n        output = {self.output_key: contents}\n        return output\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        contents = [doc.page_content for doc in self.documents]\n        contents = '\\n\\n'.join(contents)\n        # contents = json.dumps(contents, indent=2, ensure_ascii=False)\n        output = {self.output_key: contents}\n        return output\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/qa_generation/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/qa_generation/base.py",
    "content": "from __future__ import annotations\n\nimport json\nimport re\nimport logging\nfrom langchain.docstore.document import Document\nfrom typing import Any, Dict, List, Optional\n\nfrom langchain_core.callbacks import CallbackManagerForChainRun\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.prompts import BasePromptTemplate, ChatPromptTemplate\nfrom pydantic import Field\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter, TextSplitter\n\nfrom langchain.chains.base import Chain\nfrom langchain.chains.llm import LLMChain\nfrom langchain.chains.qa_generation.prompt import PROMPT_SELECTOR, CHAT_PROMPT, PROMPT\n\nlogger = logging.getLogger(__name__)\n\n\ndef parse_json(input_str: str) -> str:\n    match = re.search(r'```(json)?(.*)```', input_str, re.DOTALL)\n    if match is None:\n        out_str = input_str\n    else:\n        out_str = match.group(2)\n\n    out_str = out_str.strip()\n    out_str = out_str.replace('```', '')\n    return out_str\n\n\nclass QAGenerationChain(Chain):\n    \"\"\"Base class for question-answer generation chains.\"\"\"\n\n    documents: List[Document]\n    llm_chain: LLMChain\n    \"\"\"LLM Chain that generates responses from user input and context.\"\"\"\n    k: Optional[int] = None\n    \"\"\"Number of questions to generate.\"\"\"\n    text_splitter: TextSplitter = Field(\n        default=RecursiveCharacterTextSplitter(\n            separators=[\"\\n\\n\", \"\\n\", \" \", \"\"],\n            chunk_size=1000,\n            chunk_overlap=100,\n        )\n    )\n    \"\"\"Text splitter that splits the input into chunks.\"\"\"\n    input_key: str = \"begin\"\n    \"\"\"Key of the input to the chain.\"\"\"\n    output_key: str = \"questions\"\n    \"\"\"Key of the output of the chain.\"\"\"\n\n    @classmethod\n    def from_llm(\n        cls,\n        documents: List[Document],\n        llm: BaseLanguageModel,\n        k: Optional[int] = None,\n        chunk_size: int = 512,\n        prompt: Optional[ChatPromptTemplate] = CHAT_PROMPT,\n        **kwargs: Any,\n    ) -> QAGenerationChain:\n        \"\"\"\n        Create a QAGenerationChain from a language model.\n\n        Args:\n            llm: a language model\n            prompt: a prompt template\n            **kwargs: additional arguments\n\n        Returns:\n            a QAGenerationChain class\n        \"\"\"\n        _prompt = PROMPT_SELECTOR.get_prompt(llm) if prompt is None else prompt\n        chain = LLMChain(llm=llm, prompt=_prompt)\n        text_splitter = RecursiveCharacterTextSplitter(\n            separators=[\"\\n\\n\", \"\\n\", \" \", \"\"],\n            chunk_size=chunk_size,\n            chunk_overlap=50,\n        )\n        return cls(documents=documents, llm_chain=chain, k=k, text_splitter=text_splitter, **kwargs)\n\n    @property\n    def _chain_type(self) -> str:\n        raise NotImplementedError\n\n    @property\n    def input_keys(self) -> List[str]:\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        return [self.output_key]\n\n    def _call(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, List]:\n        contents = [doc.page_content for doc in self.documents]\n        contents = '\\n\\n'.join(contents)\n        docs = self.text_splitter.create_documents([contents])\n        # len(qa) = min(len(docs), self.k)\n        logger.info(f\"Split {len(docs)} documents. Gen qa num: min({len(docs)}, {self.k}).\")\n        qa = ''\n        qa_i = 0\n        for doc in docs:\n            try:\n                results = self.llm_chain.generate([{\"text\": doc.page_content}], run_manager=run_manager)\n                res = results.generations[0]\n                qa += res[0].text\n                qa_i += 1\n            except Exception as e:\n                logger.error(f\"Failed to parse response Error: {e}\")\n                continue\n            if self.k is not None and qa_i >= self.k:\n                break\n        return {self.output_key: qa}\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, List]:\n        output = self._call(inputs, run_manager)\n        return output\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/qa_generation/base_v2.py",
    "content": "from __future__ import annotations\n\nimport re\nimport json\nimport logging\nimport typing as t\nimport warnings\nfrom typing import Any, Dict, List, Optional\nfrom collections import defaultdict, namedtuple\nfrom dataclasses import dataclass\nfrom langchain_core.callbacks import CallbackManagerForChainRun\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.prompts import HumanMessagePromptTemplate, PromptTemplate\n\ntry:\n    from llama_index.core.node_parser import SimpleNodeParser\n    from llama_index.core.schema import Document as LlamaindexDocument\n    from llama_index.core.schema import BaseNode\nexcept ImportError:\n    raise ImportError(\n        \"llama_index must be installed to use this function. \"\n        \"Please, install it with `pip install llama_index`.\"\n    )\nimport numpy as np\nimport numpy.testing as npt\nimport pandas as pd\nfrom langchain.prompts import ChatPromptTemplate\nfrom langchain.docstore.document import Document\n# from langchain.schema.document import Document as LangchainDocument\nfrom langchain.chains.base import Chain\nfrom numpy.random import default_rng\nfrom tqdm import tqdm\nfrom .prompt_v2 import (\n    SEED_QUESTION_CHAT_PROMPT,\n    SCORE_CONTEXT_CHAT_PROMPT,\n    FILTER_QUESTION_CHAT_PROMPT,\n    ANSWER_FORMULATE,\n)\nfrom .base import parse_json\n\nlogger = logging.getLogger(__name__)\n\n\ndef load_as_score(text):\n    \"\"\"\n    validate and returns given text as score\n    \"\"\"\n    pattern = r\"^[\\d.]+$\"\n    if not re.match(pattern, text):\n        warnings.warn(\"Invalid score\")\n        score = 0.0\n    else:\n        score = eval(text)\n    return score\n\n\ndef load_as_json(text):\n    \"\"\"\n    validate and return given text as json\n    \"\"\"\n\n    try:\n        return json.loads(parse_json(text))\n    except ValueError as e:\n        warnings.warn(f\"Invalid json: {e}\")\n\n    return {}\n\n\nDEFAULT_TRAIN_DISTRIBUTION = {\n    \"simple\": 1.0,\n    \"reasoning\": 0.0,\n    \"multi_context\": 0.0,\n    \"conditional\": 0.0,\n}\n\nDataRow = namedtuple(\n    \"DataRow\",\n    [\n        \"question\",\n        \"ground_truth_context\",\n        \"ground_truth\",\n        \"question_type\",\n        \"episode_done\",\n    ],\n)\n\n\n@dataclass\nclass TrainDataset:\n    \"\"\"\n    TrainDataset class\n    \"\"\"\n\n    train_data: t.List[DataRow]\n\n    def to_pandas(self) -> pd.DataFrame:\n        data_samples = []\n        for data in self.train_data:\n            data = {\n                \"question\": data.question,\n                \"ground_truth_context\": data.ground_truth_context,\n                \"ground_truth\": data.ground_truth,\n                \"question_type\": data.question_type,\n                \"episode_done\": data.episode_done,\n            }\n            data_samples.append(data)\n        return pd.DataFrame.from_records(data_samples)\n\n\nclass TrainsetGenerator:\n    \"\"\"\n    Ragas Train Set Generator\n\n    Attributes\n    ----------\n    generator_llm: LangchainLLM\n        LLM used for all the generator operations in the TrainGeneration paradigm.\n    critique_llm: LangchainLLM\n        LLM used for all the filtering and scoring operations in TrainGeneration\n        paradigm.\n    chunk_size: int\n        The chunk size of nodes created from data.\n    train_distribution : dict\n        Distribution of different types of questions to be generated from given\n        set of documents. Defaults to {\"easy\":0.1, \"reasoning\":0.4, \"conversation\":0.5}\n    \"\"\"\n\n    def __init__(\n            self,\n            generator_llm: BaseLanguageModel,\n            critic_llm: BaseLanguageModel,\n            trainset_distribution: t.Optional[t.Dict[str, float]] = None,\n            chunk_size: int = 1024,\n            seed: int = 42,\n            prompt: Optional[ChatPromptTemplate] = SEED_QUESTION_CHAT_PROMPT,\n            filter_lowquality_context: bool = False,\n            filter_lowquality_question: bool = False,\n            answer_prompt: Optional[HumanMessagePromptTemplate] = ANSWER_FORMULATE,\n    ) -> None:\n        self.generator_llm = generator_llm\n        self.critic_llm = critic_llm\n        trainset_distribution = trainset_distribution or DEFAULT_TRAIN_DISTRIBUTION\n        npt.assert_almost_equal(\n            1,\n            sum(trainset_distribution.values()),\n            err_msg=\"Sum of distribution should be 1\",\n        )\n\n        probs = np.cumsum(list(trainset_distribution.values()))\n        types = trainset_distribution.keys()\n        self.trainset_distribution = dict(zip(types, probs))\n        self.chunk_size = chunk_size\n        self.threshold = 5.0\n        self.rng = default_rng(seed)\n        self.prompt = prompt\n        self.filter_lowquality_context = filter_lowquality_context\n        self.filter_lowquality_question = filter_lowquality_question\n        if answer_prompt is None:\n            answer_prompt = ANSWER_FORMULATE\n        self.answer_prompt = answer_prompt\n\n    @classmethod\n    def from_default(\n            cls,\n            llm: BaseLanguageModel,\n            chunk_size: int = 512,\n            trainset_distribution: dict = DEFAULT_TRAIN_DISTRIBUTION,\n            prompt: Optional[ChatPromptTemplate] = SEED_QUESTION_CHAT_PROMPT,\n            filter_lowquality_context: bool = False,\n            filter_lowquality_question: bool = False,\n            answer_prompt: Optional[PromptTemplate] = ANSWER_FORMULATE,\n    ):\n        generator_llm = llm\n        critic_llm = llm\n        return cls(\n            generator_llm=generator_llm,\n            critic_llm=critic_llm,\n            chunk_size=chunk_size,\n            trainset_distribution=trainset_distribution,\n            prompt=prompt,\n            filter_lowquality_context=filter_lowquality_context,\n            filter_lowquality_question=filter_lowquality_question,\n            answer_prompt=answer_prompt,\n        )\n\n    def _get_evolve_type(self) -> str:\n        \"\"\"\n        Decides question evolution type based on probability\n        \"\"\"\n        prob = self.rng.uniform(0, 1)\n        return next(\n            (\n                key\n                for key in self.trainset_distribution.keys()\n                if prob <= self.trainset_distribution[key]\n            ),\n            \"simple\",\n        )\n\n    def _filter_context(self, context: str) -> bool:\n        \"\"\"\n        context: str\n            The input context\n\n        Checks if the context is has information worthy of framing a question\n        \"\"\"\n        prompt = SCORE_CONTEXT_CHAT_PROMPT.format_prompt(context=context)\n        results = self.critic_llm(prompt.to_messages())\n        output = results.content\n        score = load_as_score(output)\n        print('context score:', score)\n        return score >= self.threshold\n\n    def _seed_question(self, context: str) -> str:\n        if self.prompt is None:\n            prompt = SEED_QUESTION_CHAT_PROMPT.format_prompt(context=context)\n        else:\n            prompt = self.prompt.format_prompt(context=context)\n        results = self.generator_llm(prompt.to_messages())\n        return results.content\n\n    def _filter_question(self, question: str) -> bool:\n        prompt = FILTER_QUESTION_CHAT_PROMPT.format_prompt(question=question)\n        results = self.critic_llm(prompt.to_messages())\n        results = results.content\n        json_results = load_as_json(results)\n        print('filter question:', question, json_results)\n        return json_results.get(\"verdict\") != \"No\"\n\n    def _qc_template(self, prompt, question, context) -> str:\n        human_prompt = prompt.format(question=question, context=context)\n        prompt = ChatPromptTemplate.from_messages([human_prompt])\n        results = self.generator_llm(prompt.messages)\n        return results.content\n\n    def _generate_answer(self, question: str, context: t.List[str]) -> t.List[str]:\n        return [\n            self._qc_template(self.answer_prompt, qstn, context[i])\n            for i, qstn in enumerate(question.split(\"\\n\"))\n        ]\n\n    def _remove_nodes(\n            self, available_indices: t.List[BaseNode], node_idx: t.List\n    ) -> t.List[BaseNode]:\n        for idx in node_idx:\n            available_indices.remove(idx)\n        return available_indices\n\n    def _generate_doc_nodes_map(\n            self, document_nodes: t.List[BaseNode]\n    ) -> t.Dict[str, t.List[BaseNode]]:\n        doc_nodes_map: t.Dict[str, t.List[BaseNode]] = defaultdict(list)\n        for node in document_nodes:\n            if node.ref_doc_id:\n                doc_nodes_map[node.ref_doc_id].append(node)\n\n        return doc_nodes_map  # type: ignore\n\n    def _get_neighbour_node(\n            self, node: BaseNode, related_nodes: t.List[BaseNode]\n    ) -> t.List[BaseNode]:\n        if len(related_nodes) < 2:\n            warnings.warn(\"No neighbors exists\")\n            return [node]\n        idx = related_nodes.index(node)\n        ids = [idx - 1, idx] if idx == (len(related_nodes) - 1) else [idx, idx + 1]\n        return [related_nodes[idx] for idx in ids]\n\n    def generate(\n            self,\n            documents: t.List[LlamaindexDocument] | t.List[Document],\n            train_size: int,\n    ) -> TrainDataset:\n        if not isinstance(documents[0], (LlamaindexDocument, Document)):\n            raise ValueError(\n                \"Trainset Generatation only supports LlamaindexDocuments or Documents\"  # noqa\n            )\n\n        if isinstance(documents[0], Document):\n            # cast to LangchainDocument since its the only case here\n            documents = t.cast(t.List[Document], documents)\n            documents = [\n                LlamaindexDocument.from_langchain_format(doc) for doc in documents\n            ]\n        # Convert documents into nodes\n        node_parser = SimpleNodeParser.from_defaults(\n            chunk_size=self.chunk_size, chunk_overlap=0, include_metadata=True\n        )\n        documents = t.cast(t.List[LlamaindexDocument], documents)\n        document_nodes: t.List[BaseNode] = node_parser.get_nodes_from_documents(\n            documents=documents\n        )\n        # # maximum 1 seed question per node\n        # if train_size > len(document_nodes):\n        #     raise ValueError(\n        #         \"\"\"Maximum possible number of samples exceeded, \n        #                      reduce train_size or add more documents\"\"\"\n        #     )\n\n        available_nodes = document_nodes\n        doc_nodes_map = self._generate_doc_nodes_map(document_nodes)\n        count_neighbours = sum(len(val) > 1 for _, val in doc_nodes_map.items())\n        if count_neighbours < len(documents) // 2:\n            warnings.warn(\"Most documents are too short\")\n\n        count = 0\n        samples = []\n        pbar = tqdm(total=train_size)\n        while count < train_size and available_nodes != []:\n            print(count, train_size, len(available_nodes))\n            evolve_type = self._get_evolve_type()\n            curr_node = self.rng.choice(np.array(available_nodes), size=1)[0]\n            available_nodes = self._remove_nodes(available_nodes, [curr_node])\n\n            neighbor_nodes = doc_nodes_map[curr_node.source_node.node_id]\n\n            # Append multiple nodes randomly to remove chunking bias\n            size = self.rng.integers(1, 3)\n            nodes = (\n                self._get_neighbour_node(curr_node, neighbor_nodes)\n                if size > 1 and evolve_type != \"multi_context\"\n                else [curr_node]\n            )\n\n            text_chunk = \" \".join([node.get_content() for node in nodes])\n            if self.filter_lowquality_context:\n                score = self._filter_context(text_chunk)\n                if not score:\n                    continue\n            seed_question = self._seed_question(text_chunk)\n\n            question = seed_question\n            if self.filter_lowquality_question:\n                is_valid_question = self._filter_question(question)\n            else:\n                is_valid_question = True\n            if is_valid_question:\n                context = [text_chunk] * len(question.split(\"\\n\"))\n                is_conv = len(context) > 1\n                answer = self._generate_answer(question, context)\n                for i, (qstn, ctx, ans) in enumerate(\n                        zip(question.split(\"\\n\"), context, answer)\n                ):\n                    episode_done = False if is_conv and i == 0 else True\n                    samples.append(\n                        DataRow(qstn, [ctx], [ans], evolve_type, episode_done)\n                    )\n                count += 1\n                pbar.update(1)\n\n        return TrainDataset(train_data=samples)\n\n\nclass QAGenerationChainV2(Chain):\n    \"\"\"Base class for question-answer generation chains.\"\"\"\n\n    documents: List[Document]\n    generator: TrainsetGenerator\n    \"\"\"LLM Chain that generates responses from user input and context.\"\"\"\n    k: Optional[int] = None\n    \"\"\"Number of questions to generate.\"\"\"\n    input_key: str = \"begin\"\n    \"\"\"Key of the input to the chain.\"\"\"\n    output_key: str = \"questions\"\n    \"\"\"Key of the output of the chain.\"\"\"\n\n    @classmethod\n    def from_llm(\n            cls,\n            documents: List[Document],\n            llm: BaseLanguageModel,\n            k: Optional[int] = None,\n            chunk_size: int = 512,\n            filter_lowquality_context: bool = False,\n            filter_lowquality_question: bool = False,\n            question_prompt: Optional[ChatPromptTemplate] = SEED_QUESTION_CHAT_PROMPT,\n            answer_prompt: Optional[HumanMessagePromptTemplate] = ANSWER_FORMULATE,\n            **kwargs: Any,\n    ) -> QAGenerationChainV2:\n        \"\"\"\n        Create a QAGenerationChain from a language model.\n\n        Args:\n            llm: a language model\n            question_prompt: a prompt template for generate question\n            answer_prompt: a prompt template for generate answer\n            **kwargs: additional arguments\n\n        Returns:\n            a QAGenerationChain class\n        \"\"\"\n        generator = TrainsetGenerator.from_default(\n            llm, \n            chunk_size=chunk_size, \n            prompt=question_prompt, \n            answer_prompt=answer_prompt,\n            filter_lowquality_context=filter_lowquality_context, \n            filter_lowquality_question=filter_lowquality_question\n        )\n        return cls(documents=documents, generator=generator, k=k, **kwargs)\n\n    @property\n    def _chain_type(self) -> str:\n        raise NotImplementedError\n\n    @property\n    def input_keys(self) -> List[str]:\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        return [self.output_key]\n\n    def _call(\n            self,\n            inputs: Dict[str, Any],\n            run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, List]:\n        for doc in self.documents:\n            doc.metadata = {}\n        if self.k is None:\n            self.k = 1000\n        dataset = self.generator.generate(documents=self.documents, train_size=self.k)\n        df = dataset.to_pandas()\n        qa_pairs = df.to_dict(\"records\")\n        qa = []\n        for pair in qa_pairs:\n            qa.append({\n                \"question\": pair[\"question\"],\n                \"answer\": pair[\"ground_truth\"][0],\n                \"context\": pair[\"ground_truth_context\"][0],\n            })\n        qa = f'```json\\n{json.dumps(qa, ensure_ascii=False, indent=4)}\\n```'\n        return {self.output_key: qa}\n\n    async def _acall(\n            self,\n            inputs: Dict[str, Any],\n            run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, List]:\n        output = self._call(inputs, run_manager)\n        return output\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/qa_generation/prompt.py",
    "content": "# flake8: noqa\nfrom langchain.chains.prompt_selector import ConditionalPromptSelector, is_chat_model\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\nfrom langchain_core.prompts.prompt import PromptTemplate\n\ntempl1 = \"\"\"You are a smart assistant designed to help high school teachers come up with reading comprehension questions.\nGiven a piece of text, you must come up with a question and answer pair that can be used to test a student's reading comprehension abilities.\nWhen coming up with this question/answer pair, you must respond in the following format and in same language as the text:\n```\n{{\n    \"question\": \"$YOUR_QUESTION_HERE\",\n    \"answer\": \"$THE_ANSWER_HERE\"\n}}\n```\n\nEverything between the ``` must be valid json.\n\"\"\"\ntempl2 = \"\"\"Please come up with a question/answer pair, in the specified JSON format, for the following text:\n----------------\n{text}\"\"\"\nCHAT_PROMPT = ChatPromptTemplate.from_messages(\n    [\n        SystemMessagePromptTemplate.from_template(templ1),\n        HumanMessagePromptTemplate.from_template(templ2),\n    ]\n)\n\n\ntempl = \"\"\"You are a smart assistant designed to help high school teachers come up with reading comprehension questions.\nGiven a piece of text, you must come up with a question and answer pair that can be used to test a student's reading comprehension abilities.\nWhen coming up with this question/answer pair, you must respond in the following format and in same language as the text:\n```\n{{\n    \"question\": \"$YOUR_QUESTION_HERE\",\n    \"answer\": \"$THE_ANSWER_HERE\"\n}}\n```\n\nEverything between the ``` must be valid json.\n\nPlease come up with a question/answer pair, in the specified JSON format, for the following text:\n----------------\n{text}\"\"\"\nPROMPT = PromptTemplate.from_template(templ)\n\n\nPROMPT_SELECTOR = ConditionalPromptSelector(\n    default_prompt=PROMPT, conditionals=[(is_chat_model, CHAT_PROMPT)]\n)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/qa_generation/prompt_v2.py",
    "content": "from langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\n\nSEED_QUESTION_SYSTEM = SystemMessagePromptTemplate.from_template(\n    \"\"\"\\\n您的任务是遵循以下规则从给定的上下文中提出一个问题，规则如下：\n\n    1. 即使在没有给定上下文的情况下，问题也应该对人类有意义。\n    2. 应该可以从给定上下文中完全回答问题。\n    3. 问题应该来自包含重要信息的上下文部分。它也可以来自表格、段落、或者代码等。\n    4. 回答问题时不应包含任何链接。\n    5. 问题的难度应该是中等的。\n    6. 问题必须是合理的，并且必须能被人理解和回答。\n    7. 不要在问题中使用“提供的上下文”等短语。\n    8. 避免使用可以分解成多个问题的“和”字样来构建问题。\n    9. 如果上下文是中文，那么问题也应该是中文的。\n\nExamples:\ncontext:武汉达梦数据库股份有限公司 招股说明书 （申报稿） 1-1-226 表中作出恰当列报。 2、研发费用 2021年度、 2020年度、 2019 年度，达梦数据 研发费用金额分别 为11,786.99 万元、 9,660.26 万元、 6,255.86万元， 各年度研发费用占营 业收入的比例分别为 15.86 % 、 21.46 %、20.74 %。 由于研发投入金额及其占当期 营业收入的比例是 达梦数据 的关键 指标之一，可能存在因为核算不准 确而导致的错报风险。因此， 中天 运会计师 将研发费用的归集和核算 确定为关键审计事项。 针对研发费用的真实性与准确性，会计师执行的 重要审计程序主要包括： （1）了解与研发费用相关的关键内部控制，评价 这些控制的设计，确定其是否得到执行，并对相关内 部控制的运行有效性进行测试； （2）获取研发项目立项、审批资料，抽查重要研 发项目的过程文档，判断研发项目的真实性； （3）获取研发费用按项目、性质分类明细表，分\nquestion:达梦2021年的研发费用占营业收入的比例是多少？\n\ncontext:武汉达梦数据库股份有限公司 招股说明书 （申报稿） 1-1-329 （2）存货周转率 公司与同行业可比公司存货周转率对比情况如下： 公司简称 2021年度 2020年度 2019年度 中望软件 6.93 5.62 10.66 星环科技 3.38 3.21 2.24 金山办公 212.60 175.46 162.91 平均值 74.30 61.43 58.60 本公司 1.13 0.57 0.87 数据来源：可比公司招股说明书、定期报告。 报告期各期， 公司存货周转率显著低于同行业可比公司存货周转率平均水平， 主要是因为公司将未验收的数据及行业解决方案项目所发生的累 计成本均作为 存货核算。报告期各期末，公司存在 “湖北省司法行政数据中心项目 ”、“政法云 大数据中心基础设施服务及大数据中心软件采购 项目”等金额较大且实施周期较 长的数据及行业解决方案项目，导致年末存货金额较大。\nquestion:达梦2021年的存货周转率相较于前一年有何变化？\n\"\"\"  # noqa: E501\n)\n\n\nSEED_QUESTION_HUMAN = HumanMessagePromptTemplate.from_template(\n\"\"\"\ncontext:{context}\nquestion:\n\"\"\"\n)\n\n\nSEED_QUESTION_CHAT_PROMPT = ChatPromptTemplate.from_messages(\n    [\n        SEED_QUESTION_SYSTEM,\n        SEED_QUESTION_HUMAN\n    ]\n)\n\n\nSCORE_CONTEXT_SYSTEM = SystemMessagePromptTemplate.from_template(\n\"\"\"Evaluate the provided context and assign a numerical score between 0 and 10 based on the following criteria:\n1. Award a high score to context that thoroughly delves into and explains concepts.\n2. Assign a lower score to context that contains excessive references, acknowledgments, external links, personal information, or other non-essential elements.\n\nAnd you should only output the score.\n\nExamples:\nContext:\n01-2022.04.30 贷方发生额共 计 2535.43 万元，户名；X 贸易有限公司；\\n③根据用款企业提供的增值税纳税申报表来看，2021 年度用款企业年累计开票额为\\n7826.48 万元，年累计应纳税合计 95.32 万元，年累计已纳税额 86.23 万元；截止至 2022 年 3 月，用款企业累计开票额为 1986.54 万元，累计应纳税合计19.54 万元，累计已纳税额\\n20.23 万元。\\n根据核算用款企业的银行流水及企业会计记账系统，剔除借款人往来转账款，估算用款 企业年营业额约在 6000 万元左右(纳税申报营业额)，全部营业收入约 20000 万元左右，借 款人所在 X 贸易有限公司综合毛\n利润率约为 35%，净利润约 20%左右。\\n\\n| 资产种类 | 坐落 | 产权人 | 建筑面积 | 现价值 | 贷款余额 | 资产净值 |\\n| --- | --- | --- | --- | --- | --- | --- |\\n| 房产 | HN 省 YY 市 PP 小区 5#2-101 | A | 240.20 | 365.23 万 | 165.\nScore: 4\n\nContext:\n认缴出资额 200 万元 实缴出资额 200 万元 持股比例 20% |\\n| 企业所属商圈 | 无 | 是否为已准入商圈 | 是□ 否 ☑ |\\n(1) 企业经营历史及现状说明\\nX 贸易有限公司 (下称“用款企业”) 注册成立于 2015 年 11 月，统一社会信用代码1234567890ACBDEFGH，法定代表人 A，公司注册地址位于 M 市 N 区 JF 路 20 号 NJ 大厦 18 楼1807 室，实际办公地址位于 M 市 N 区 K 广场 C 座 19 楼 1901、1906、1908、1910、1912、1914，办公面积为 880.51 ㎡，经营场所为用款企业租赁房产，租赁期限，现阶段年租金 73 万余元。\\n用款企业是著名品牌“XYZ”的运营公司，是\n以经营短袜、连裤袜、 内衣、家居服、配饰为主要品类的亲体织物公司，致力于为年轻消费群体提供“一站式”多品类亲体织物购物 体验。 作为织物文化的传播者和输出者，用款企业秉承一贯的高品质与原创精神，依托中国 研发团队，创领多项核心技术，不断建立并升级健康织物行业标准，目前拥有实用新型专利 6 项，发明专利 1 项，注册商标 30 余个，为品牌的商标保护构建了全面的商标防御体系。\\n“XYZ”品牌创立于 2006 年，于 2009 年正式进入中国市场，在成立 10 年的时间里，在全国共有 400 余家店面，运营主要有以下三种模式：\\n①直营模式：目前用款企业\n管控的直营店有 100 家左右，其中在 M 地区共有 9 家直营店，分别为 Y1 店、Y2 店、Y3 店、Y4 店、Y5 店、Y6 店、Y7 店、Y8 店、Y9 店。经查看用款企业相关财务系统并截屏 ，用款企业 2021 年度 、2022 年 1-4 月直营店营业收入合计分别为7623.45 万元、1987.23 万元，M 地区 9 家直营店收入合计分别为 1238.67 万元、302.54 万元。根据数据测算直营部分毛利润率65%。\nScore: 7\n\"\"\"  # noqa: E501\n)\n\n\nSCORE_CONTEXT_HUMAN = HumanMessagePromptTemplate.from_template(\n\"\"\"\nContext:\n{context}\nScore:\n\"\"\"  # noqa: E501\n)\n\n\nSCORE_CONTEXT_CHAT_PROMPT = ChatPromptTemplate.from_messages(\n    [\n        SCORE_CONTEXT_SYSTEM,\n        SCORE_CONTEXT_HUMAN\n    ]\n)\n\n\nFILTER_QUESTION_SYSTEM = SystemMessagePromptTemplate.from_template(\n    \"\"\"\\\nDetermine if the given question can be clearly understood even when presented without any additional context. Specify reason and verdict is a valid json format.\n\nExamples:\nquestion: What is the discovery about space?\n{{\n    \"reason\":\"The question is too vague and does not specify which discovery about space it is referring to.\"\n    \"verdit\":\"No\"\n}}\n\nquestion: What caused the Great Depression?\n{{\n    \"reason\":\"The question is specific and refers to a well-known historical economic event, making it clear and answerable.\",\n    \"verdict\":\"Yes\"\n}}\n\nquestion: What is the keyword that best describes the paper's focus in natural language understanding tasks?\n{{\n    \"reason\": \"The question mentions a 'paper' in it without referring it's name which makes it unclear without it\",\n    \"verdict\": \"No\"\n}}\n\nquestion: Who wrote 'Romeo and Juliet'?\n{{\n    \"reason\": \"The question is clear and refers to a specific work by name therefore it is clear\",\n    \"verdict\": \"Yes\"\n}}\n\nquestion: What did the study mention?\n{{\n    \"reason\": \"The question is vague and does not specify which study it is referring to\",\n    \"verdict\": \"No\"\n}}\n\nquestion: What is the focus of the REPLUG paper?\n{{\n    \"reason\": \"The question refers to a specific work by it's name hence can be understood\", \n    \"verdict\": \"Yes\"\n}}\n\"\"\"  # noqa: E501\n)\n\n\nFILTER_QUESTION_HUMAN = HumanMessagePromptTemplate.from_template(\n    \"\"\"\\\nquestion:{question}\n\"\"\"  # noqa: E501\n)\n\n\nFILTER_QUESTION_CHAT_PROMPT = ChatPromptTemplate.from_messages(\n    [\n        FILTER_QUESTION_SYSTEM,\n        FILTER_QUESTION_HUMAN\n    ]\n)\n\n\nANSWER_FORMULATE = HumanMessagePromptTemplate.from_template(\n    \"\"\"\\\nAnswer the question using the information from the given context. \n\ncontext:{context}\n\nquestion:{question}\nanswer:\n\"\"\"  # noqa: E501\n)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/question_answering/__init__.py",
    "content": "\"\"\"Load question answering chains.\"\"\"\nfrom typing import Any, Mapping, Optional, Protocol\n\n# from langchain.chains.combine_documents.stuff import StuffDocumentsChain\nfrom bisheng_langchain.chains.combine_documents.stuff import StuffDocumentsChain\nfrom langchain.callbacks.base import BaseCallbackManager\nfrom langchain.callbacks.manager import Callbacks\nfrom langchain.chains import ReduceDocumentsChain\nfrom langchain.chains.combine_documents.base import BaseCombineDocumentsChain\nfrom langchain.chains.combine_documents.map_reduce import MapReduceDocumentsChain\nfrom langchain.chains.combine_documents.map_rerank import MapRerankDocumentsChain\nfrom langchain.chains.combine_documents.refine import RefineDocumentsChain\nfrom langchain.chains.llm import LLMChain\nfrom langchain.chains.question_answering import map_reduce_prompt, refine_prompts, stuff_prompt\nfrom langchain.chains.question_answering.map_rerank_prompt import PROMPT as MAP_RERANK_PROMPT\nfrom langchain.schema.language_model import BaseLanguageModel\nfrom langchain.schema.prompt_template import BasePromptTemplate\n\n\nclass LoadingCallable(Protocol):\n    \"\"\"Interface for loading the combine documents chain.\"\"\"\n\n    def __call__(self, llm: BaseLanguageModel, **kwargs: Any) -> BaseCombineDocumentsChain:\n        \"\"\"Callable to load the combine documents chain.\"\"\"\n\n\ndef _load_map_rerank_chain(\n    llm: BaseLanguageModel,\n    prompt: BasePromptTemplate = None,\n    verbose: bool = False,\n    document_variable_name: str = 'context',\n    rank_key: str = 'score',\n    answer_key: str = 'answer',\n    callback_manager: Optional[BaseCallbackManager] = None,\n    callbacks: Callbacks = None,\n    **kwargs: Any,\n) -> MapRerankDocumentsChain:\n    \"\"\"Load the map rerank documents chain.\"\"\"\n    if hasattr(MAP_RERANK_PROMPT.output_parser, 'default_output_key'):\n        MAP_RERANK_PROMPT.output_parser.default_output_key = 'answer'\n    prompt = prompt or MAP_RERANK_PROMPT\n    llm_chain = LLMChain(\n        llm=llm,\n        prompt=prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    return MapRerankDocumentsChain(\n        llm_chain=llm_chain,\n        rank_key=rank_key,\n        answer_key=answer_key,\n        document_variable_name=document_variable_name,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        **kwargs,\n    )\n\n\ndef _load_stuff_chain(\n    llm: BaseLanguageModel,\n    prompt: Optional[BasePromptTemplate] = None,\n    document_variable_name: str = 'context',\n    verbose: Optional[bool] = None,\n    callback_manager: Optional[BaseCallbackManager] = None,\n    callbacks: Callbacks = None,\n    **kwargs: Any,\n) -> StuffDocumentsChain:\n    _prompt = prompt or stuff_prompt.PROMPT_SELECTOR.get_prompt(llm)\n    llm_chain = LLMChain(\n        llm=llm,\n        prompt=_prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    # TODO: document prompt\n    return StuffDocumentsChain(\n        llm_chain=llm_chain,\n        document_variable_name=document_variable_name,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        **kwargs,\n    )\n\n\ndef _load_map_reduce_chain(\n    llm: BaseLanguageModel,\n    question_prompt: Optional[BasePromptTemplate] = None,\n    combine_prompt: Optional[BasePromptTemplate] = None,\n    combine_document_variable_name: str = 'summaries',\n    map_reduce_document_variable_name: str = 'context',\n    collapse_prompt: Optional[BasePromptTemplate] = None,\n    reduce_llm: Optional[BaseLanguageModel] = None,\n    collapse_llm: Optional[BaseLanguageModel] = None,\n    verbose: Optional[bool] = None,\n    callback_manager: Optional[BaseCallbackManager] = None,\n    callbacks: Callbacks = None,\n    token_max: int = 3000,\n    **kwargs: Any,\n) -> MapReduceDocumentsChain:\n    _question_prompt = (question_prompt\n                        or map_reduce_prompt.QUESTION_PROMPT_SELECTOR.get_prompt(llm))\n    _combine_prompt = (combine_prompt or map_reduce_prompt.COMBINE_PROMPT_SELECTOR.get_prompt(llm))\n    map_chain = LLMChain(\n        llm=llm,\n        prompt=_question_prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    _reduce_llm = reduce_llm or llm\n    reduce_chain = LLMChain(\n        llm=_reduce_llm,\n        prompt=_combine_prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    # TODO: document prompt\n    combine_documents_chain = StuffDocumentsChain(\n        llm_chain=reduce_chain,\n        document_variable_name=combine_document_variable_name,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    if collapse_prompt is None:\n        collapse_chain = None\n        if collapse_llm is not None:\n            raise ValueError('collapse_llm provided, but collapse_prompt was not: please '\n                             'provide one or stop providing collapse_llm.')\n    else:\n        _collapse_llm = collapse_llm or llm\n        collapse_chain = StuffDocumentsChain(\n            llm_chain=LLMChain(\n                llm=_collapse_llm,\n                prompt=collapse_prompt,\n                verbose=verbose,\n                callback_manager=callback_manager,\n                callbacks=callbacks,\n            ),\n            document_variable_name=combine_document_variable_name,\n            verbose=verbose,\n            callback_manager=callback_manager,\n        )\n    reduce_documents_chain = ReduceDocumentsChain(\n        combine_documents_chain=combine_documents_chain,\n        collapse_documents_chain=collapse_chain,\n        token_max=token_max,\n        verbose=verbose,\n    )\n    return MapReduceDocumentsChain(\n        llm_chain=map_chain,\n        document_variable_name=map_reduce_document_variable_name,\n        reduce_documents_chain=reduce_documents_chain,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n        **kwargs,\n    )\n\n\ndef _load_refine_chain(\n    llm: BaseLanguageModel,\n    question_prompt: Optional[BasePromptTemplate] = None,\n    refine_prompt: Optional[BasePromptTemplate] = None,\n    document_variable_name: str = 'context_str',\n    initial_response_name: str = 'existing_answer',\n    refine_llm: Optional[BaseLanguageModel] = None,\n    verbose: Optional[bool] = None,\n    callback_manager: Optional[BaseCallbackManager] = None,\n    callbacks: Callbacks = None,\n    **kwargs: Any,\n) -> RefineDocumentsChain:\n    _question_prompt = (question_prompt or refine_prompts.QUESTION_PROMPT_SELECTOR.get_prompt(llm))\n    _refine_prompt = refine_prompt or refine_prompts.REFINE_PROMPT_SELECTOR.get_prompt(llm)\n    initial_chain = LLMChain(\n        llm=llm,\n        prompt=_question_prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    _refine_llm = refine_llm or llm\n    refine_chain = LLMChain(\n        llm=_refine_llm,\n        prompt=_refine_prompt,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        callbacks=callbacks,\n    )\n    return RefineDocumentsChain(\n        initial_llm_chain=initial_chain,\n        refine_llm_chain=refine_chain,\n        document_variable_name=document_variable_name,\n        initial_response_name=initial_response_name,\n        verbose=verbose,\n        callback_manager=callback_manager,\n        **kwargs,\n    )\n\n\ndef load_qa_chain(\n    llm: BaseLanguageModel,\n    chain_type: str = 'stuff',\n    verbose: Optional[bool] = None,\n    callback_manager: Optional[BaseCallbackManager] = None,\n    **kwargs: Any,\n) -> BaseCombineDocumentsChain:\n    \"\"\"Load question answering chain.\n\n    Args:\n        llm: Language Model to use in the chain.\n        chain_type: Type of document combining chain to use. Should be one of \"stuff\",\n            \"map_reduce\", \"map_rerank\", and \"refine\".\n        verbose: Whether chains should be run in verbose mode or not. Note that this\n            applies to all chains that make up the final chain.\n        callback_manager: Callback manager to use for the chain.\n\n    Returns:\n        A chain to use for question answering.\n    \"\"\"\n    loader_mapping: Mapping[str, LoadingCallable] = {\n        'stuff': _load_stuff_chain,\n        'map_reduce': _load_map_reduce_chain,\n        'refine': _load_refine_chain,\n        'map_rerank': _load_map_rerank_chain,\n    }\n    if chain_type not in loader_mapping:\n        raise ValueError(f'Got unsupported chain type: {chain_type}. '\n                         f'Should be one of {loader_mapping.keys()}')\n    return loader_mapping[chain_type](llm,\n                                      verbose=verbose,\n                                      callback_manager=callback_manager,\n                                      **kwargs)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/retrieval/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/retrieval/retrieval_chain.py",
    "content": "import inspect\nfrom typing import Any, Dict, List, Optional\n\nfrom langchain.callbacks.manager import (\n    AsyncCallbackManagerForChainRun,\n    CallbackManagerForChainRun,\n)\nfrom langchain.chains.base import Chain\nfrom langchain.schema import BaseRetriever, Document\nfrom pydantic import Field\n\n\nclass RetrievalChain(Chain):\n    \"\"\"Chain to use to combine the documents.\"\"\"\n\n    input_key: str = 'query'  #: :meta private:\n    output_key: str = 'result'  #: :meta private:\n    retriever: BaseRetriever = Field(exclude=True)\n    return_source_documents: bool = False\n\n    def _get_docs(\n        self,\n        question: str,\n        *,\n        run_manager: CallbackManagerForChainRun,\n    ) -> List[Document]:\n        \"\"\"Get docs.\"\"\"\n        return self.retriever.get_relevant_documents(question, callbacks=run_manager.get_child())\n\n    async def _aget_docs(\n        self,\n        question: str,\n        *,\n        run_manager: AsyncCallbackManagerForChainRun,\n    ) -> List[Document]:\n        \"\"\"Get docs.\"\"\"\n        return await self.retriever.aget_relevant_documents(question, callbacks=run_manager.get_child())\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Return the input keys.\n\n        :meta private:\n        \"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Return the output keys.\n\n        :meta private:\n        \"\"\"\n        _output_keys = [self.output_key]\n        if self.return_source_documents:\n            _output_keys = _output_keys + [\"source_documents\"]\n        return _output_keys\n\n    def _call(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager()\n        question = inputs[self.input_key]\n        accepts_run_manager = \"run_manager\" in inspect.signature(self._get_docs).parameters\n        if accepts_run_manager:\n            docs = self._get_docs(question, run_manager=_run_manager)\n        else:\n            docs = self._get_docs(question)  # type: ignore[call-arg]\n\n        if self.return_source_documents:\n            return {self.output_key: docs, \"source_documents\": docs}\n        else:\n            return {self.output_key: docs}\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        _run_manager = run_manager or AsyncCallbackManagerForChainRun.get_noop_manager()\n        question = inputs[self.input_key]\n        accepts_run_manager = \"run_manager\" in inspect.signature(self._aget_docs).parameters\n        if accepts_run_manager:\n            docs = await self._aget_docs(question, run_manager=_run_manager)\n        else:\n            docs = await self._aget_docs(question)  # type: ignore[call-arg]\n\n        if self.return_source_documents:\n            return {self.output_key: docs, \"source_documents\": docs}\n        else:\n            return {self.output_key: docs}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/router/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/chains/router/multi_rule.py",
    "content": "from typing import List, Mapping\n\nfrom langchain.chains.router.base import Chain, MultiRouteChain, RouterChain\n\n\nclass MultiRuleChain(MultiRouteChain):\n    router_chain: RouterChain\n    destination_chains: Mapping[str, Chain]\n    default_chain: Chain\n    output_variables: List[str]\n\n    @property\n    def output_keys(self) -> List[str]:\n        return self.output_variables\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/router/rule_router.py",
    "content": "import asyncio\nfrom typing import Any, Callable, Dict, List, Union\n\nfrom langchain.callbacks.manager import Callbacks\nfrom langchain.chains.router.base import Route, RouterChain\n\n\nclass RuleBasedRouter(RouterChain):\n    rule_function: Callable[..., str]\n    input_variables: List[str]\n\n    @property\n    def input_keys(self):\n        return self.input_variables\n\n    def _validate_outputs(self, outputs: Dict[str, Any]) -> None:\n        super()._validate_outputs(outputs)\n        if not isinstance(outputs['next_inputs'], dict):\n            raise ValueError\n\n    def _call(\n        self,\n        inputs: Union[Dict[str, Any], Any],\n    ) -> Route:\n        result = self.rule_function(inputs)\n        if not result.get('destination') or not result:\n            return Route(None, result['next_inputs'])\n        return Route(result['destination'], result['next_inputs'])\n\n    def route(\n        self,\n        inputs: Union[Dict[str, Any], Any],\n        callbacks: Callbacks = None,\n    ) -> Route:\n        result = self.rule_function(inputs)\n        if not result.get('destination') or not result:\n            return Route(None, result['next_inputs'])\n        return Route(result['destination'], result['next_inputs'])\n\n    async def aroute(\n        self,\n        inputs: Union[Dict[str, Any], Any],\n        callbacks: Callbacks = None,\n    ) -> Route:\n        \"\"\"Route the inputs to the next chain based on the rule function.\"\"\"\n        # 如果是异步function，那么就用await\n        if asyncio.iscoroutinefunction(self.rule_function):\n            result = await self.rule_function(inputs)\n        else:\n            result = self.rule_function(inputs)\n        if not result.get('destination') or not result:\n            return Route(None, result['next_inputs'])\n        return Route(result['destination'], result['next_inputs'])\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chains/transform.py",
    "content": "\"\"\"Chain that runs an arbitrary python function.\"\"\"\nimport functools\nimport inspect\nimport logging\nfrom typing import Any, Awaitable, Callable, Dict, List, Optional\n\nfrom langchain.chains.base import Chain\nfrom langchain_core.callbacks import AsyncCallbackManagerForChainRun, CallbackManagerForChainRun\nfrom pydantic import Field\n\nlogger = logging.getLogger(__name__)\n\n\nclass TransformChain(Chain):\n    \"\"\"Chain that transforms the chain output.\n\n    Example:\n        .. code-block:: python\n\n            from langchain.chains import TransformChain\n            transform_chain = TransformChain(input_variables=[\"text\"],\n             output_variables[\"entities\"], transform=func())\n    \"\"\"\n\n    input_variables: List[str]\n    \"\"\"The keys expected by the transform's input dictionary.\"\"\"\n    output_variables: List[str]\n    \"\"\"The keys returned by the transform's output dictionary.\"\"\"\n    transform_cb: Callable[[Dict[str, str]], Dict[str, str]] = Field(alias='transform')\n    \"\"\"The transform function.\"\"\"\n    atransform_cb: Optional[Callable[[Dict[str, Any]],\n                                     Awaitable[Dict[str, Any]]]] = Field(None, alias='atransform')\n    \"\"\"The async coroutine transform function.\"\"\"\n\n    @staticmethod\n    @functools.lru_cache\n    def _log_once(msg: str) -> None:\n        \"\"\"Log a message once.\n\n        :meta private:\n        \"\"\"\n        logger.warning(msg)\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Expect input keys.\n\n        :meta private:\n        \"\"\"\n        return self.input_variables\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Return output keys.\n\n        :meta private:\n        \"\"\"\n        return self.output_variables\n\n    def _call(\n        self,\n        inputs: Dict[str, str],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, str]:\n        new_arg_supported = inspect.signature(self.transform_cb).parameters.get('run_manager')\n        if new_arg_supported:\n            return self.transform_cb(inputs, run_manager)\n        else:\n            return self.transform_cb(inputs)\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        if self.atransform_cb is not None:\n            new_arg_supported = inspect.signature(self.transform_cb).parameters.get('run_manager')\n            if new_arg_supported:\n                return await self.atransform_cb(inputs, run_manager)\n            else:\n                return await self.atransform_cb(inputs)\n        else:\n            self._log_once(\"TransformChain's atransform is not provided, falling\"\n                           ' back to synchronous transform')\n            return self._call(inputs, run_manager)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/__init__.py",
    "content": "from .host_llm import CustomLLMChat, HostBaichuanChat, HostChatGLM, HostLlama2Chat, HostQwenChat, HostQwen1_5Chat, HostYuanChat, HostYiChat\nfrom .minimax import ChatMinimaxAI\nfrom .proxy_llm import ProxyChatLLM\nfrom .qwen import ChatQWen\nfrom .wenxin import ChatWenxin\nfrom .xunfeiai import ChatXunfeiAI\nfrom .sensetime import SenseChat\n\n__all__ = [\n    'ProxyChatLLM', 'ChatMinimaxAI', 'ChatWenxin', 'ChatXunfeiAI', 'HostChatGLM',\n    'HostBaichuanChat', 'HostLlama2Chat', 'HostQwenChat', 'CustomLLMChat', 'ChatQWen', 'SenseChat',\n    'HostYuanChat', 'HostYiChat', 'HostQwen1_5Chat'\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/host_llm.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\nimport requests\nfrom pydantic import ConfigDict, model_validator, Field\n\nfrom bisheng_langchain.utils.requests import Requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom langchain_core.language_models.llms import create_base_retry_decorator\n\n# from requests.exceptions import HTTPError\n\n# from .interface import MinimaxChatCompletion\n# from .interface.types import ChatInput\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(\n    llm: BaseHostChatLLM,\n    run_manager: Optional[Union[AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun]] = None,\n) -> Callable[[Any], Any]:\n\n    errors = [requests.exceptions.ReadTimeout, ValueError]\n    return create_base_retry_decorator(error_types=errors,\n                                       max_retries=llm.max_retries,\n                                       run_manager=run_manager)\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        additional_kwargs = {}\n        if _dict.get('function_call'):\n            additional_kwargs['function_call'] = dict(_dict['function_call'])\n        if 'metadata' in _dict:\n            additional_kwargs['metadata'] = _dict['metadata']\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n        for key in message.additional_kwargs.keys():\n            message_dict[key] = message.additional_kwargs[key]\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs['function_call']\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nclass BaseHostChatLLM(BaseChatModel):\n    \"\"\"Wrapper around base host Chat large language models.\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('', alias='model')\n\n    temperature: float = 0.9\n    top_p: float = 0.95\n    do_sample: bool = False\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: int = 4096\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    host_base_url: Optional[str] = None\n    is_ssl: Optional[bool] = False\n\n    headers: Optional[Dict[str, str]] = Field(default_factory=dict)\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = 300\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 1\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n\n    verbose: Optional[bool] = False\n\n    decoupled: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['host_base_url'] = get_from_dict_or_env(values, 'host_base_url', 'HostBaseUrl')\n        model = values['model_name']\n        try:\n            if cls != CustomLLMChat:\n                url = values['host_base_url'].rsplit('/', 2)[0]\n                config_ep = f'{url}/v2/models/{model}/config'\n                config = requests.get(url=config_ep, json={}, timeout=5).json()\n                policy = config.get('model_transaction_policy', {})\n                values['decoupled'] = policy.get('decoupled', False)\n                # Host class should set below code\n                if values['decoupled']:\n                    values[\n                        'host_base_url'] = f\"{values['host_base_url']}/{values['model_name']}/generate_stream\"\n                else:\n                    values[\n                        'host_base_url'] = f\"{values['host_base_url']}/{values['model_name']}/infer\"\n        except Exception:\n            raise Exception(f'Update Decoupled status failed for model {model}')\n\n        try:\n            if values['headers']:\n                headers = values['headers']\n            else:\n                headers = {'Content-Type': 'application/json'}\n            if cls.is_ssl and \"https\" in values['host_base_url']:\n                import aiohttp\n                values['client'] = Requests(headers=headers,\n                                            aiosession=aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)),\n                                            request_timeout=values['request_timeout'])\n            else:\n                values['client'] = Requests(headers=headers, request_timeout=values['request_timeout'])\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ChatMinimaxAI API.\"\"\"\n        return {\n            'request_timeout': self.request_timeout,\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            'do_sample': self.do_sample,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            self.client.headers = self.headers\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            max_tokens = kwargs.get('max_tokens')\n            do_sample = kwargs.get('do_sample')\n            params = {\n                'stream': False,\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'max_tokens': max_tokens,\n                'do_sample': do_sample,\n                'function_call': kwargs.get('function_call', None),\n                'functions': kwargs.get('functions', [])\n            }\n\n            # print('messages:', messages)\n            # print('functions:', kwargs.get('functions', []))\n            if self.verbose:\n                logger.info('payload=%s', json.dumps(params, indent=2))\n            try:\n                resp = self.client.post(url=self.host_base_url, json=params)\n                if resp.text.startswith('data:'):\n                    resp = json.loads(resp.text.replace('data:', ''))\n                else:\n                    resp = resp.json()\n            except requests.exceptions.Timeout as exc:\n                raise ValueError(f'timeout in host llm infer, url=[{self.host_base_url}]') from exc\n            except Exception as e:\n                raise ValueError(f'exception in host llm infer: [{e}]') from e\n\n            if not resp.get('choices', []):\n                logger.info(resp)\n                raise ValueError(f'empty choices in llm chat result {resp}')\n\n            resp['usage'] = {}\n            return resp\n\n        return _completion_with_retry(**kwargs)\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            if token_usage is None:\n                continue\n\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        '''用来处理同步请求'''\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(response)\n\n    async def acompletion_with_retry(self, **kwargs: Any) -> Any:\n        \"\"\"Use tenacity to retry the async completion call.\"\"\"\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        async def _acompletion_with_retry(**kwargs: Any) -> Any:\n            try:\n                async with self.client.apost(url=self.host_base_url, json=kwargs) as response:\n                    if response.status != 200:\n                        raise ValueError(f'Error: {response.status} contet: {response.text}')\n                    async for txt in response.content.iter_any():\n                        if b'\\n' in txt:\n                            for txt_ in txt.split(b'\\n'):\n                                yield txt_.decode('utf-8').strip()\n                        else:\n                            yield txt.decode('utf-8').strip()\n            except requests.exceptions.Timeout as exc:\n                raise ValueError(f'timeout in host llm infer, url=[{self.host_base_url}]') from exc\n            except Exception as e:\n                raise ValueError(f'exception in host llm infer: [{e}]') from e\n\n        text_haf = ''\n        async for response in _acompletion_with_retry(**kwargs):\n            is_error = False\n            if response:\n                if response.startswith('event:error'):\n                    is_error = True\n                elif response.startswith('data:'):\n                    text = response[len('data:'):].strip()\n                    if text == '[DONE]':\n                        break\n                    try:\n                        json.loads(text_haf + text)\n                        yield (is_error, text_haf + text)\n                        text_haf = ''\n                    except Exception:\n                        # 拆包了\n                        if text_haf.startswith('{'):\n                            text_haf = text\n                            continue\n                        logger.error(f'response_not_json response={response}')\n\n                    if is_error:\n                        break\n                elif response.startswith('{'):\n                    yield (is_error, response)\n                else:\n                    continue\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        \"\"\"Generate chat completion with retry.\"\"\"\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        if self.streaming and 'infer' not in self.host_base_url:\n            inner_completion = ''\n            role = 'assistant'\n            params['stream'] = True\n            function_call: Optional[dict] = None\n            async for is_error, stream_resp in self.acompletion_with_retry(messages=message_dicts,\n                                                                           **params):\n                output = json.loads(stream_resp)\n                if is_error:\n                    logger.error(stream_resp)\n                    raise ValueError(stream_resp)\n\n                choices = output.get('choices')\n                if choices:\n                    for choice in choices:\n                        role = choice['delta'].get('role', role)\n                        token = choice['delta'].get('content', '')\n                        inner_completion += token or ''\n                        _function_call = choice['delta'].get('function_call')\n                        if run_manager:\n                            await run_manager.on_llm_new_token(token)\n                        if _function_call:\n                            if function_call is None:\n                                function_call = _function_call\n                            else:\n                                function_call['arguments'] += _function_call['arguments']\n            message = _convert_dict_to_message({\n                'content': inner_completion,\n                'role': role if role is not None else 'assistant',\n                'function_call': function_call,\n            })\n            return ChatResult(generations=[ChatGeneration(message=message)])\n        else:\n            params['stream'] = False\n            response = [\n                response\n                async for _, response in self.acompletion_with_retry(messages=message_dicts,\n                                                                     **params)\n            ]\n            response = json.loads(response[0])\n            return self._create_chat_result(response)\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n        if 'choices' not in response:\n            raise Exception(f'LLM return error {response}')\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response.get('usage'), 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the client.\"\"\"\n        minimaxai_creds: Dict[str, Any] = {\n            'model': self.model_name,\n        }\n        return {**minimaxai_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'host_chat_llm'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n\n\nclass HostChatGLM(BaseHostChatLLM):\n    # chatglm2-12b, chatglm2-6b\n    model_name: str = Field('chatglm2-6b', alias='model')\n\n    temperature: float = 0.95\n    top_p: float = 0.7\n    max_tokens: int = 4096\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'chatglm'\n\n\nclass HostBaichuanChat(BaseHostChatLLM):\n    # Baichuan-7B-Chat, Baichuan-13B-Chat\n    model_name: str = Field('Baichuan-13B-Chat', alias='model')\n\n    temperature: float = 0.3\n    top_p: float = 0.85\n    max_tokens: int = 4096\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'baichuan_chat'\n\n\nclass HostQwenChat(BaseHostChatLLM):\n    # Qwen-7B-Chat\n    model_name: str = Field('Qwen-7B-Chat', alias='model')\n\n    temperature: float = 0\n    top_p: float = 1\n    max_tokens: int = 4096\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'qwen_chat'\n\n\nclass HostQwen1_5Chat(BaseHostChatLLM):\n    # Qwen-7B-Chat\n    model_name: str = Field('Qwen1.5-14B-Chat', alias='model')\n\n    temperature: float = 0\n    top_p: float = 1\n    max_tokens: int = 4096\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'qwen1.5_chat'\n\n\nclass HostLlama2Chat(BaseHostChatLLM):\n    # Llama-2-7b-chat-hf, Llama-2-13b-chat-hf, Llama-2-70b-chat-hf\n    model_name: str = Field('Llama-2-7b-chat-hf', alias='model')\n\n    temperature: float = 0.9\n    top_p: float = 0.6\n    max_tokens: int = 4096\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'llama2_chat'\n\n\nclass CustomLLMChat(BaseHostChatLLM):\n    # use custom llm chat api, api should compatiable with openai definition\n    model_name: str = Field('custom-llm-chat', alias='model')\n\n    temperature: float = 0.1\n    top_p: float = 0.1\n    max_tokens: int = 4096\n    host_base_url: str\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'custom_llm_chat'\n\n\nclass HostYuanChat(BaseHostChatLLM):\n    # use custom llm chat api, api should compatiable with openai definition\n    model_name: str = Field('Yuan2-2B-Janus-hf', alias='model')\n\n    temperature: float = 1\n    top_p: float = 0.9\n    max_tokens: int = 4096\n    host_base_url: str\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'yuan2'\n\n\nclass HostYiChat(BaseHostChatLLM):\n    # use custom llm chat api, api should compatiable with openai definition\n    model_name: str = Field('Yi-34B-Chat', alias='model')\n\n    temperature: float = 0.6\n    top_p: float = 0.8\n    max_tokens: int = 4096\n    host_base_url: str\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'yi_chat'\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/__init__.py",
    "content": "from .minimax import ChatCompletion as MinimaxChatCompletion\nfrom .openai import ChatCompletion as OpenaiChatCompletion\nfrom .wenxin import ChatCompletion as WenxinChatCompletion\nfrom .xunfei import ChatCompletion as XunfeiChatCompletion\nfrom .zhipuai import ChatCompletion as ZhipuaiChatCompletion\n\n__all__ = [\n    'MinimaxChatCompletion', 'OpenaiChatCompletion', 'WenxinChatCompletion',\n    'XunfeiChatCompletion', 'ZhipuaiChatCompletion'\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/minimax.py",
    "content": "import json\n\nimport requests\n\nfrom .types import ChatInput, ChatOutput, Choice, Message, Usage\nfrom .utils import get_ts\n\n\nclass ChatCompletion(object):\n\n    def __init__(self, group_id, api_key, **kwargs):\n        ep_url = 'https://api.minimax.chat/v1/text/chatcompletion'\n        self.endpoint = f'{ep_url}?GroupId={group_id}'\n        self.headers = {\n            'Authorization': f'Bearer {api_key}',\n            'Content-Type': 'application/json'\n        }\n\n    def parseChunkDelta(self, chunk):\n        decoded_data = chunk.decode('utf-8')\n        parsed_data = json.loads(decoded_data[6:])\n        delta_content = parsed_data['choices'][0]['delta']\n        return delta_content\n\n    def __call__(self, inp: ChatInput, verbose=False):\n        messages = inp.messages\n        model = inp.model\n        top_p = 0.95 if inp.top_p is None else inp.top_p\n        temperature = 0.9 if inp.temperature is None else inp.temperature\n        stream = False if inp.stream is None else inp.stream\n        max_tokens = 1024 if inp.max_tokens is None else inp.max_tokens\n        if abs(temperature) <= 1e-6:\n            temperature = 1e-6\n\n        chat_messages = messages\n        system_prompt = ('MM智能助理是一款由MinMax自研的，没有调用其他产品接口的大型语言'\n                         '模型。MiniMax是一家中国科技公司，一直致力于进行大模型相关的研究。\\n----\\n')\n\n        if messages[0].role == 'system':\n            system_prompt = messages[0].content\n            chat_messages = messages[1:]\n\n        new_messages = []\n        for m in chat_messages:\n            role = 'USER'\n            if m.role == 'system' or m.role == 'assistant':\n                role = 'BOT'\n\n            new_messages.append({'sender_type': role, 'text': m.content})\n\n        #  role_meta is given, prompt must is not empty\n        system_info = {}\n        if system_prompt:\n            system_info = {\n                'prompt': system_prompt,\n                'role_meta': {\n                    'user_name': '用户',\n                    'bot_name': 'MM智能助理'\n                }\n            }\n\n        payload = {\n            'model': model,\n            'stream': stream,\n            'use_standard_sse': True,\n            'messages': new_messages,\n            'temperature': temperature,\n            'top_p': top_p,\n            'tokens_to_generate': max_tokens\n        }\n        payload.update(system_info)\n\n        if verbose:\n            print('payload', payload)\n\n        response = requests.post(self.endpoint,\n                                 headers=self.headers,\n                                 json=payload)\n\n        req_type = 'chat.completion'\n        status_message = 'success'\n        status_code = response.status_code\n        created = get_ts()\n        choices = []\n        usage = Usage()\n        if status_code == 200:\n            try:\n                info = json.loads(response.text)\n                if info['base_resp']['status_code'] == 0:\n                    created = info['created']\n                    # reply = info['reply']\n                    choices = []\n                    for s in info['choices']:\n                        index = s['index']\n                        finish_reason = s['finish_reason']\n                        msg = Message(role='assistant', content=s['text'])\n                        cho = Choice(index=index,\n                                     message=msg,\n                                     finish_reason=finish_reason)\n                        choices.append(cho)\n                    total_tokens = info['usage']['total_tokens']\n                    usage = Usage(total_tokens=total_tokens)\n                else:\n                    status_code = info['base_resp']['status_code']\n                    status_message = info['base_resp']['status_msg']\n\n            except Exception as e:\n                status_code = 401\n                status_message = str(e)\n        else:\n            status_code = 400\n            status_message = 'requests error'\n\n        if status_code != 200:\n            raise Exception(status_message)\n\n        return ChatOutput(status_code=status_code,\n                          status_message=status_message,\n                          model=model,\n                          object=req_type,\n                          created=created,\n                          choices=choices,\n                          usage=usage)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/openai.py",
    "content": "# import json\n\nimport openai\n\nfrom .types import ChatInput, ChatOutput, Choice, Usage\nfrom .utils import get_ts\n\n\nclass ChatCompletion(object):\n\n    def __init__(self, api_key, proxy=None, **kwargs):\n        openai.api_key = api_key\n        openai.proxy = proxy\n\n    def __call__(self, inp: ChatInput, verbose=False):\n        messages = inp.messages\n        model = inp.model\n        top_p = 0.7 if inp.top_p is None else inp.top_p\n        temperature = 0.97 if inp.temperature is None else inp.temperature\n        # stream = False if inp.stream is None else inp.stream\n        max_tokens = 1024 if inp.max_tokens is None else inp.max_tokens\n        stop = None\n        if inp.stop is not None:\n            stop = inp.stop.split('||')\n\n        new_messages = [m.dict() for m in messages]\n        created = get_ts()\n        payload = {\n            'model': model,\n            'messages': new_messages,\n            'temperature': temperature,\n            'top_p': top_p,\n            'stop': stop,\n            'max_tokens': max_tokens,\n        }\n        if inp.functions:\n            payload.update({'functions': inp.functions})\n\n        if verbose:\n            print('payload', payload)\n\n        req_type = 'chat.completion'\n        status_message = 'success'\n        choices = []\n        usage = Usage()\n        try:\n            resp = openai.ChatCompletion.create(**payload)\n            status_code = 200\n            choices = []\n            for choice in resp['choices']:\n                cho = Choice(**choice)\n                choices.append(cho)\n            usage = Usage(**resp['usage'])\n\n        except Exception as e:\n            status_code = 400\n            status_message = str(e)\n\n        if status_code != 200:\n            raise Exception(status_message)\n\n        return ChatOutput(status_code=status_code,\n                          status_message=status_message,\n                          model=model,\n                          object=req_type,\n                          created=created,\n                          choices=choices,\n                          usage=usage)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/types.py",
    "content": "from typing import Union, List\nfrom pydantic import BaseModel\n\n\nclass Message(BaseModel):\n    role: str\n    content: str\n\n\nclass Function(BaseModel):\n    name: str\n    description: str\n    parameters: dict\n\n\nclass ChatInput(BaseModel):\n    model: str\n    messages: List[Message] = []\n    top_p: float = None\n    temperature: float = None\n    n: int = 1\n    stream: bool = False\n    stop: str = None\n    max_tokens: int = 256\n    functions: List[Function] = []\n    function_call: str = None\n\n\nclass Choice(BaseModel):\n    index: int\n    message: Message = None\n    finish_reason: str = 'stop'\n\n\nclass Usage(BaseModel):\n    prompt_tokens: int = 0\n    completion_tokens: int = 0\n    total_tokens: int = 0\n\n\nclass ChatOutput(BaseModel):\n    status_code: int\n    status_message: str = 'success'\n    id: str = None\n    object: str = None\n    model: str = None\n    created: int = None\n    choices: List[Choice] = []\n    usage: Usage = None\n\n\nclass CompletionsInput(BaseModel):\n    model: str\n    prompt: str\n    top_p: float = None\n    temperature: float = None\n    n: int = 1\n    stream: bool = True\n    stop: str = None\n    max_tokens: int = 256\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/utils.py",
    "content": "import time\n\n\ndef get_ts():\n    return round(time.time() * 1000)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/wenxin.py",
    "content": "import json\n\nimport requests\n\nfrom .types import ChatInput, ChatOutput, Choice, Message, Usage\nfrom .utils import get_ts\n\n\ndef get_access_token(api_key, sec_key):\n    url = (f'https://aip.baidubce.com/oauth/2.0/token?'\n           f'grant_type=client_credentials'\n           f'&client_id={api_key}&client_secret={sec_key}')\n\n    payload = json.dumps('')\n    headers = {\n        'Content-Type': 'application/json',\n        'Accept': 'application/json'\n    }\n\n    response = requests.request('POST', url, headers=headers, data=payload)\n    return response.json().get('access_token')\n\n\nclass ChatCompletion(object):\n\n    def __init__(self, api_key, sec_key, **kwargs):\n        self.api_key = api_key\n        self.sec_key = sec_key\n        self.ep_url = ('https://aip.baidubce.com/rpc/2.0/ai_custom/v1/'\n                       'wenxinworkshop/chat/completions')\n        self.ep_url_pro = ('https://aip.baidubce.com/rpc/2.0/ai_custom/v1/'\n                           'wenxinworkshop/chat/completions_pro')\n\n        self.ep_url_turbo = ('https://aip.baidubce.com/rpc/2.0/ai_custom/v1/'\n                             'wenxinworkshop/chat/eb-instant')\n\n        # token = get_access_token(api_key, sec_key)\n        # self.endpoint = f\"{self.ep_url}?access_token={token}\"\n        self.headers = {'Content-Type': 'application/json'}\n\n    def __call__(self, inp: ChatInput, verbose=False):\n        messages = inp.messages\n        model = inp.model\n        top_p = 0.8 if inp.top_p is None else inp.top_p\n        temperature = 0.95 if inp.temperature is None else inp.temperature\n        stream = False if inp.stream is None else inp.stream\n        # max_tokens = 1024 if inp.max_tokens is None else inp.max_tokens\n\n        system_content = ''\n        new_messages = []\n        for m in messages:\n            role = m.role\n            if role == 'system':\n                system_content = m.content\n                continue\n            new_messages.append({'role': role, 'content': m.content})\n\n        if system_content:\n            new_messages[-1]['content'] = system_content + '\\n' + new_messages[\n                -1]['content']\n\n        payload = {\n            'stream': stream,\n            'messages': new_messages,\n            'temperature': temperature,\n            'top_p': top_p\n        }\n\n        if verbose:\n            print('payload', payload)\n\n        token = get_access_token(self.api_key, self.sec_key)\n        endpoint = f'{self.ep_url}?access_token={token}'\n        if model == 'ernie-bot-turbo':\n            endpoint = f'{self.ep_url_turbo}?access_token={token}'\n        elif model == 'ernie-bot-4':\n            endpoint = f'{self.ep_url_pro}?access_token={token}'\n\n        response = requests.post(endpoint, headers=self.headers, json=payload)\n\n        req_type = 'chat.completion'\n        status_message = 'success'\n        status_code = response.status_code\n        created = get_ts()\n        choices = []\n        usage = Usage()\n        if status_code == 200:\n            try:\n                info = json.loads(response.text)\n                status_code = info.get('error_code', 200)\n                status_message = info.get('error_msg', status_message)\n                if status_code == 200:\n                    created = info['created']\n                    result = info['result']\n                    finish_reason = 'default'\n                    msg = Message(role='assistant', content=result)\n                    choices = [\n                        Choice(index=0,\n                               message=msg,\n                               finish_reason=finish_reason)\n                    ]\n                    usage = Usage(**info['usage'])\n            except Exception as e:\n                status_code = 401\n                status_message = str(e)\n        else:\n            status_code = 400\n            status_message = 'requests error'\n\n        if status_code != 200:\n            raise Exception(status_message)\n\n        return ChatOutput(status_code=status_code,\n                          status_message=status_message,\n                          model=model,\n                          object=req_type,\n                          created=created,\n                          choices=choices,\n                          usage=usage)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/xunfei.py",
    "content": "import base64\nimport hashlib\nimport hmac\nimport json\n# import ssl\n# import threading\nfrom datetime import datetime\nfrom time import mktime\nfrom urllib.parse import urlencode, urlparse\nfrom wsgiref.handlers import format_date_time\n\nimport websocket\nfrom websocket import create_connection\n\nimport _thread as thread\n\nfrom .types import ChatInput, ChatOutput, Choice, Message, Usage\nfrom .utils import get_ts\n\n\nclass Ws_Param(object):\n    # 初始化\n    def __init__(self, APPID, APIKey, APISecret, gpt_url):\n        self.APPID = APPID\n        self.APIKey = APIKey\n        self.APISecret = APISecret\n        self.host = urlparse(gpt_url).netloc\n        self.path = urlparse(gpt_url).path\n        self.gpt_url = gpt_url\n\n    # 生成url\n    def create_url(self):\n        # 生成RFC1123格式的时间戳\n        now = datetime.now()\n        date = format_date_time(mktime(now.timetuple()))\n\n        # 拼接字符串\n        signature_origin = 'host: ' + self.host + '\\n'\n        signature_origin += 'date: ' + date + '\\n'\n        signature_origin += 'GET ' + self.path + ' HTTP/1.1'\n\n        # 进行hmac-sha256进行加密\n        signature_sha = hmac.new(\n            self.APISecret.encode('utf-8'),\n            signature_origin.encode('utf-8'),\n            digestmod=hashlib.sha256).digest()\n\n        signature_sha_base64 = base64.b64encode(\n            signature_sha).decode(encoding='utf-8')\n\n        authorization_origin = (\n          f'api_key=\"{self.APIKey}\", '\n          f'algorithm=\"hmac-sha256\", headers=\"host date request-line\",'\n          f' signature=\"{signature_sha_base64}\"')\n\n        authorization = base64.b64encode(\n            authorization_origin.encode('utf-8')).decode(encoding='utf-8')\n\n        # 将请求的鉴权参数组合为字典\n        v = {\n            'authorization': authorization,\n            'date': date,\n            'host': self.host\n        }\n        # 拼接鉴权参数，生成url\n        url = self.gpt_url + '?' + urlencode(v)\n        # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释，\n        # 比对相同参数时生成的url与自己代码生成的url是否一致\n        return url\n\n\n# 收到websocket错误的处理\ndef on_error(ws, error):\n    print('### error:', error)\n\n\n# 收到websocket关闭的处理\ndef on_close(ws):\n    print('### closed ###')\n\n\n# 收到websocket连接建立的处理\ndef on_open(ws):\n    thread.start_new_thread(run, (ws,))\n\n\ndef run(ws, *args):\n    data = json.dumps(gen_params(appid=ws.appid, question=ws.question))\n    ws.send(data)\n\n\n# 收到websocket消息的处理\ndef on_message(ws, message):\n    print(message)\n    data = json.loads(message)\n    code = data['header']['code']\n    if code != 0:\n        print(f'请求错误: {code}, {data}')\n        ws.close()\n    else:\n        choices = data['payload']['choices']\n        status = choices['status']\n        content = choices['text'][0]['content']\n        print(content, end='')\n        if status == 2:\n            ws.close()\n\n\ndef gen_params(appid, question):\n    data = {\n        'header': {\n            'app_id': appid,\n            'uid': '1234'\n        },\n        'parameter': {\n            'chat': {\n                'domain': 'general',\n                'random_threshold': 0.5,\n                'max_tokens': 2048,\n                'auditing': 'default'\n            }\n        },\n        'payload': {\n            'message': {\n                'text': [\n                    {'role': 'user', 'content': question}\n                ]\n            }\n        }\n    }\n    return data\n\n\nclass ChatCompletion(object):\n    def __init__(self, appid, api_key, api_secret, **kwargs):\n        gpt_url1 = 'ws://spark-api.xf-yun.com/v1.1/chat'\n        gpt_url2 = 'ws://spark-api.xf-yun.com/v2.1/chat'\n        gpt_url3 = 'ws://spark-api.xf-yun.com/v3.1/chat'\n        self.wsParam1 = Ws_Param(appid, api_key, api_secret, gpt_url1)\n        self.wsParam2 = Ws_Param(appid, api_key, api_secret, gpt_url2)\n        self.wsParam3 = Ws_Param(appid, api_key, api_secret, gpt_url3)\n\n        websocket.enableTrace(False)\n\n        # todo: modify to the ws pool\n        # self.ws = websocket.WebSocket()\n        # self.ws.connect(self.wsUrl)\n\n        # self.mutex = threading.Lock()\n        self.header = {'app_id': appid, 'uid': 'elem'}\n\n    def __del__(self):\n        pass\n        # self.ws.close()\n\n    def __call__(self, inp: ChatInput, verbose=False):\n        messages = inp.messages\n        model = inp.model\n        # top_p = 0.7 if inp.top_p is None else inp.top_p\n        temperature = 0.5 if inp.temperature is None else inp.temperature\n        # stream = False if inp.stream is None else inp.stream\n        max_tokens = 1024 if inp.max_tokens is None else inp.max_tokens\n        # stop = None\n        # if inp.stop is not None:\n        #     stop = inp.stop.split('||')\n\n        new_messages = []\n        for m in messages:\n            role = m.role\n            if role == 'system':\n                role = 'user'\n            new_messages.append({'role': role, 'content': m.content})\n\n        domain = 'general'\n        if model == 'spark-v2.0':\n            domain = 'generalv2'\n        elif model == 'spark-v3.0':\n            domain = 'generalv3'\n\n        created = get_ts()\n        payload = {\n            'header': self.header,\n            'payload': {'message': {'text': new_messages}},\n            'parameter': {\n              'chat': {\n                'domain': domain,\n                'temperature': temperature,\n                'max_tokens': max_tokens,\n                'auditing': 'default'\n              }\n            }\n        }\n\n        if verbose:\n            print('payload', payload)\n\n        req_type = 'chat.completion'\n        status_code = 200\n        status_message = 'success'\n        choices = []\n        usage = Usage()\n        texts = []\n        ws = None\n        try:\n            # self.mutex.acquire()\n            if model == 'spark-v2.0':\n                wsUrl = self.wsParam2.create_url()\n            elif model == 'spark-v3.0':\n                wsUrl = self.wsParam3.create_url()\n            else:\n                wsUrl = self.wsParam1.create_url()\n\n            ws = create_connection(wsUrl)\n            ws.send(json.dumps(payload))\n            texts = []\n            while True:\n                raw_data = ws.recv()\n                if not raw_data:\n                    break\n                resp = json.loads(raw_data)\n                if resp['header']['code'] == 0:\n                    texts.append(\n                        resp['payload']['choices']['text'][0]['content'])\n                if resp['header']['code'] == 0 and resp['header']['status'] == 2:\n                    usage_dict = resp['payload']['usage']['text']\n                    usage_dict.pop('question_tokens')\n                    usage = Usage(**usage_dict)\n        except Exception as e:\n            print('exception', e)\n            status_code = 401\n            status_message = str(e)\n        finally:\n            if ws:\n                ws.close()\n            # self.mutex.release()\n\n        if texts:\n            finish_reason = 'default'\n            msg = Message(role='assistant', content=''.join(texts))\n            cho = Choice(index=0, message=msg,\n                         finish_reason=finish_reason)\n            choices.append(cho)\n\n        return ChatOutput(\n            status_code=status_code,\n            status_message=status_message,\n            model=model, object=req_type, created=created,\n            choices=choices, usage=usage)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/interface/zhipuai.py",
    "content": "# import json\n\nimport zhipuai\n\nfrom .types import ChatInput, ChatOutput, Choice, Message, Usage\nfrom .utils import get_ts\n\n\nclass ChatCompletion(object):\n\n    def __init__(self, api_key, **kwargs):\n        zhipuai.api_key = api_key\n\n    def __call__(self, inp: ChatInput, verbose=False):\n        messages = inp.messages\n        model = inp.model\n        top_p = 0.7 if inp.top_p is None else inp.top_p\n        temperature = 0.95 if inp.temperature is None else inp.temperature\n        # stream = False if inp.stream is None else inp.stream\n        # max_tokens = 1024 if inp.max_tokens is None else inp.max_tokens\n\n        new_messages = []\n        system_content = ''\n        for m in messages:\n            content = m.content\n            role = m.role\n            if role == 'system':\n                system_content += content\n                continue\n            new_messages.append({'role': role, 'content': content})\n\n        if system_content:\n            new_messages[-1]['content'] = (system_content +\n                                           new_messages[-1]['content'])\n\n        created = get_ts()\n        payload = {\n            'model': model,\n            'prompt': new_messages,\n            'temperature': temperature,\n            'top_p': top_p,\n            'request_id': str(created),\n            'incremental': False\n        }\n\n        if verbose:\n            print('payload', payload)\n\n        req_type = 'chat.completion'\n        status_message = 'success'\n        choices = []\n        usage = Usage()\n        try:\n            resp = zhipuai.model_api.invoke(**payload)\n            status_code = resp['code']\n            status_message = resp['msg']\n            if status_code == 200:\n                choices = []\n                for index, choice in enumerate(resp['data']['choices']):\n                    finish_reason = 'default'\n                    msg = Message(**choice)\n                    cho = Choice(index=index,\n                                 message=msg,\n                                 finish_reason=finish_reason)\n                    choices.append(cho)\n                usage = Usage(**resp['data']['usage'])\n\n        except Exception as e:\n            status_code = 400\n            status_message = str(e)\n\n        if status_code != 200:\n            raise Exception(status_message)\n\n        return ChatOutput(status_code=status_code,\n                          status_message=status_message,\n                          model=model,\n                          object=req_type,\n                          created=created,\n                          choices=choices,\n                          usage=usage)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/minimax.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\n# import requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import ConfigDict, model_validator, Field\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nfrom .interface import MinimaxChatCompletion\nfrom .interface.types import ChatInput\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ChatMinimaxAI) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs['function_call']\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nclass ChatMinimaxAI(BaseChatModel):\n    \"\"\"Wrapper around proxy Chat large language models.\n\n    To use, the environment variable ``ELEMAI_API_KEY`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from bisheng_langchain.chat_models import ChatMinimaxAI\n            chat_miniamaxai = ChatMinimaxAI(model_name=\"abab5.5-chat\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('abab5.5-chat', alias='model')\n\n    temperature: float = 0.9\n    top_p: float = 0.95\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    minimaxai_api_key: Optional[str] = None\n    minimaxai_group_id: Optional[str] = None\n\n    headers: Optional[Dict[str, str]] = Field(default_factory=dict)\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['minimaxai_api_key'] = get_from_dict_or_env(values, 'minimaxai_api_key',\n                                                           'MINIMAXAI_API_KEY')\n\n        values['minimaxai_group_id'] = get_from_dict_or_env(values, 'minimaxai_group_id',\n                                                            'MINIMAXAI_GROUP_ID')\n\n        api_key = values['minimaxai_api_key']\n        group_id = values['minimaxai_group_id']\n        try:\n            values['client'] = MinimaxChatCompletion(group_id, api_key)\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ChatMinimaxAI API.\"\"\"\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            max_tokens = kwargs.get('max_tokens')\n            params = {\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'max_tokens': max_tokens\n            }\n            return self.client(ChatInput.parse_obj(params), self.verbose).dict()\n\n        return _completion_with_retry(**kwargs)\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            if token_usage is None:\n                continue\n\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        return self._generate(messages, stop, run_manager, **kwargs)\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response['usage'], 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the client.\"\"\"\n        minimaxai_creds: Dict[str, Any] = {\n            'model': self.model_name,\n        }\n        return {**minimaxai_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'minimaxai_chat'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/proxy_llm.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport json\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\nfrom pydantic import ConfigDict, model_validator, Field\n\nfrom bisheng_langchain.utils import requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ProxyChatLLM) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs['function_call']\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nclass ProxyChatLLM(BaseChatModel):\n    \"\"\"Wrapper around proxy Chat large language models.\n\n    To use, the environment variable ``ELEMAI_API_KEY`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from bisheng_langchain.chat_models import ProxyChatLLM\n            proxy_chat_llm = ProxyChatLLM(model_name=\"chatglm_std\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('chatglm_std', alias='model')\n\n    temperature: float = 0.7\n    top_p: float = 0.9\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    elemai_api_key: Optional[str] = None\n    elemai_base_url: Optional[str] = None\n\n    headers: Optional[Dict[str, str]] = Field(default_factory=dict)\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 0\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 2048\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['elemai_api_key'] = get_from_dict_or_env(values, 'elemai_api_key', 'ELEMAI_API_KEY')\n\n        values['elemai_base_url'] = get_from_dict_or_env(values, 'elemai_base_url',\n                                                         'ELEMAI_BASE_URL')\n\n        elemai_api_key = values['elemai_api_key']\n        values['headers'] = {\n            'Authorization': f'Bearer {elemai_api_key}',\n            'Content-Type': 'application/json'\n        }\n\n        try:\n            values['client'] = requests.Requests(headers=values['headers'])\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ProxyChatLLM API.\"\"\"\n        self.client.request_timeout = self.request_timeout\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            max_tokens = kwargs.get('max_tokens')\n            params = {\n                'messages':\n                messages,\n                'model':\n                self.model_name,\n                'top_p':\n                top_p,\n                'temperature':\n                temperature,\n                'max_tokens':\n                max_tokens,\n                **({\n                    'stop': kwargs.get('stop')\n                } if kwargs.get('stop', None) is not None else {}),\n                **({\n                    'function_call': kwargs.get('function_call')\n                } if kwargs.get('function_call', None) is not None else {}),\n                **({\n                    'functions': kwargs.get('functions')\n                } if kwargs.get('functions', None) is not None else {})\n            }\n            response = self.client.post(self.elemai_base_url, json=params)\n            return response.json()\n\n        rsp_dict = _completion_with_retry(**kwargs)\n        if 200 != rsp_dict.get('status_code', 200):\n            logger.error(f'proxy_llm_error resp={rsp_dict}')\n            raise Exception(rsp_dict)\n        return rsp_dict\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(response)\n\n    async def acompletion_with_retry(self, **kwargs: Any) -> Any:\n        \"\"\"Use tenacity to retry the async completion call.\"\"\"\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        async def _acompletion_with_retry(**kwargs: Any) -> Any:\n            # Use OpenAI's async api https://github.com/openai/openai-python#async-api\n            async with self.client.apost(url=self.elemai_base_url, json=kwargs) as response:\n                async for txt in response.content.iter_any():\n                    if b'\\n' in txt:\n                        for txt_ in txt.split(b'\\n'):\n                            yield txt_.decode('utf-8').strip()\n                    else:\n                        yield txt.decode('utf-8').strip()\n\n        async for response in _acompletion_with_retry(**kwargs):\n            if response:\n                yield json.loads(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        if self.streaming:\n            inner_completion = ''\n            role = 'assistant'\n            params['stream'] = True\n            function_call: Optional[dict] = None\n            async for stream_resp in self.acompletion_with_retry(messages=message_dicts, **params):\n\n                role = stream_resp['choices'][0]['delta'].get('role') or role\n                token = stream_resp['choices'][0]['delta'].get('content', '')\n                inner_completion += token or ''\n                _function_call = stream_resp['choices'][0]['delta'].get('function_call')\n                if _function_call:\n                    if function_call is None:\n                        function_call = _function_call\n                    else:\n                        function_call['arguments'] += _function_call['arguments']\n                if run_manager:\n                    await run_manager.on_llm_new_token(token)\n            message = _convert_dict_to_message({\n                'content': inner_completion,\n                'role': role,\n                'function_call': function_call,\n            })\n            return ChatResult(generations=[ChatGeneration(message=message)])\n        else:\n            response = [\n                item\n                async for item in self.acompletion_with_retry(messages=message_dicts, **params)\n            ]\n            return self._create_chat_result(response[0])\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n        if 'choices' not in response:\n            raise Exception(f'LLM return error {response}')\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response['usage'], 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the elemai client.\"\"\"\n        elemai_creds: Dict[str, Any] = {\n            'api_key': self.elemai_api_key,\n            'base_url': self.elemai_base_url,\n            'model': self.model_name,\n        }\n        return {**elemai_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'proxy-chat'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/qwen.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport copy\nimport json\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\nfrom pydantic import ConfigDict, model_validator, Field\n\nfrom bisheng_langchain.utils.requests import Requests\n# import requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage, ToolMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ChatQWen) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        if _dict.get(\"tool_calls\"):\n            additional_kwargs = {'tool_calls': _dict['tool_calls']}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    elif role == \"tool\":\n        additional_kwargs = {}\n        if \"name\" in _dict:\n            additional_kwargs[\"name\"] = _dict[\"name\"]\n        return ToolMessage(\n            content=_dict.get(\"content\", \"\"),\n            tool_call_id=_dict.get(\"tool_call_id\"),\n            additional_kwargs=additional_kwargs,\n        )\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs['function_call']\n        if \"tool_calls\" in message.additional_kwargs:\n            message_dict[\"tool_calls\"] = message.additional_kwargs[\"tool_calls\"]\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    elif isinstance(message, ToolMessage):\n        message_dict = {\n            \"role\": \"tool\",\n            \"content\": message.content,\n            \"tool_call_id\": message.tool_call_id,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nurl = 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation'\n\n\nclass ChatQWen(BaseChatModel):\n    \"\"\"Wrapper around proxy Chat large language models.\n\n    To use, the environment variable ``api_key`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from bisheng_langchain.chat_models import ChatQWen\n            chat_qwen = ChatQWen(model_name=\"qwen-turbo\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('qwen-turbo', alias='model')\n\n    temperature: float = 0.95\n    top_p: float = 0.8\n    repetition_penalty: float = 1.1\n    top_k: int = None\n    seed: Optional[int] = 1234\n    \"\"\"生成时，随机数的种子，用于控制模型生成的随机性。如果使用相同的种子，每次运行生成的结果都将相同；\"\"\"\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    api_key: Optional[str] = None\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 3\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    result_format: Optional[str] = 'message'\n    \"\"\"compatibale with openai\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['api_key'] = get_from_dict_or_env(values, 'api_key', 'QWEN_API_KEY')\n\n        api_key = values['api_key']\n\n        try:\n            header = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}\n            values['client'] = Requests(headers=header, )\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ChatWenxin API.\"\"\"\n        return {\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'top_k': self.top_k,\n            'max_tokens': self.max_tokens,\n            'seed': self.seed,\n            'result_format': self.result_format,\n            'repetition_penalty': self.repetition_penalty,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n        self.client.headers.pop('Accept', '')\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.pop('messages', '')\n            input, params = ChatQWen._build_input_parameters(self.model_name,\n                                                             messages=messages,\n                                                             **kwargs)\n            inp = {'input': input, 'parameters': params, 'model': self.model_name}\n            return self.client.post(url=url, json=inp).json()\n\n        rsp_dict = _completion_with_retry(**kwargs)\n        if 'code' in rsp_dict and rsp_dict['code'] == 'DataInspectionFailed':\n            output_res = {'choices': [{'finish_reason': 'stop', 'message': {'role': 'assistant', 'content': rsp_dict['message']}}]} \n            usage_res = {'total_tokens': 2, 'output_tokens': 1, 'input_tokens': 1}\n            return output_res, usage_res\n        elif 'output' not in rsp_dict:\n            logger.error(f'proxy_llm_error resp={rsp_dict}')\n            message = rsp_dict['message']\n            raise Exception(message)\n        else:\n            return rsp_dict['output'], rsp_dict.get('usage', '')\n\n    async def acompletion_with_retry(self, **kwargs: Any) -> Any:\n        \"\"\"Use tenacity to retry the async completion call.\"\"\"\n        retry_decorator = _create_retry_decorator(self)\n        if self.streaming:\n            self.client.headers.update({'Accept': 'text/event-stream'})\n        else:\n            self.client.headers.pop('Accept', '')\n\n        @retry_decorator\n        async def _acompletion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.pop('messages', '')\n            input, params = ChatQWen._build_input_parameters(self.model_name,\n                                                             messages=messages,\n                                                             **kwargs)\n            inp = {'input': input, 'parameters': params, 'model': self.model_name}\n            # Use OpenAI's async api https://github.com/openai/openai-python#async-api\n            async with self.client.apost(url=url, json=inp) as response:\n                async for line in response.content.iter_any():\n                    if b'\\n' in line:\n                        for txt_ in line.split(b'\\n'):\n                            yield txt_.decode('utf-8').strip()\n                    else:\n                        yield line.decode('utf-8').strip()\n\n        async for response in _acompletion_with_retry(**kwargs):\n            is_error = False\n            if response:\n                if response.startswith('event:error'):\n                    is_error = True\n                elif response.startswith('data:'):\n                    yield (is_error, response[len('data:'):])\n                    if is_error:\n                        break\n                elif response.startswith('{'):\n                    yield (is_error, response)\n                else:\n                    continue\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n\n        output, usage = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(output, usage)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        if self.streaming:\n            inner_completion = ''\n            role = 'assistant'\n            params['stream'] = True\n            tool_calls: Optional[list[dict]] = None\n            async for is_error, stream_resp in self.acompletion_with_retry(messages=message_dicts,\n                                                                           **params):\n                output = None\n                msg = json.loads(stream_resp)\n                if is_error:\n                    logger.error(stream_resp)\n                    raise ValueError(stream_resp)\n                if 'output' in msg:\n                    output = msg['output']\n                choices = output.get('choices')\n                if choices:\n                    for choice in choices:\n                        role = choice['message'].get('role', role)\n                        token = choice['message'].get('content', '')\n                        inner_completion += token or ''\n                        _tool_calls = choice['message'].get('tool_calls')\n                        if run_manager:\n                            await run_manager.on_llm_new_token(token)\n                        if _tool_calls:\n                            if tool_calls is None:\n                                tool_calls = _tool_calls\n                            else:\n                                tool_calls[0]['arguments'] += _tool_calls[0]['arguments']\n            message = _convert_dict_to_message({\n                'content': inner_completion,\n                'role': role,\n                'tool_calls': tool_calls,\n            })\n            return ChatResult(generations=[ChatGeneration(message=message)])\n        else:\n            response = [\n                response\n                async for _, response in self.acompletion_with_retry(messages=message_dicts,\n                                                                     **params)\n            ]\n            response = json.loads(response[0])\n            return self._create_chat_result(response.get('output'), response.get('usage'))\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any], usage) -> ChatResult:\n        generations = []\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': usage, 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the client.\"\"\"\n        return {**self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'qwen'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n\n    @classmethod\n    def _build_input_parameters(cls, model, messages, **kwargs):\n\n        parameters = {}\n        input = {}\n        if messages is not None:\n            msgs = copy.deepcopy(messages)\n            input = {'messages': msgs}\n\n        if model.startswith('qwen'):\n            enable_search = kwargs.pop('enable_search', False)\n            if enable_search:\n                parameters['enable_search'] = enable_search\n        elif model.startswith('bailian'):\n            customized_model_id = kwargs.pop('customized_model_id', None)\n            if customized_model_id is None:\n                raise ValueError('customized_model_id is required for %s' % model)\n            input['customized_model_id'] = customized_model_id\n\n        if 'incremental_output' not in kwargs and kwargs.get('stream'):\n            parameters['incremental_output'] = True\n\n        return input, {**parameters, **kwargs}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/sensetime.py",
    "content": "from __future__ import annotations\n\nimport ast\nimport json\nimport logging\nimport time\nfrom typing import Any, Dict, List, Mapping, Optional, Tuple, Union\n\nimport jwt\nfrom pydantic import ConfigDict, model_validator, Field\n\nfrom bisheng_langchain.utils.requests import Requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\n# if TYPE_CHECKING:\n#     import jwt\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_pyjwt() -> Any:\n    try:\n        import jwt\n    except ImportError:\n        raise ValueError('Could not import jwt python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install PyJWT`.')\n    return jwt\n\n\ndef encode_jwt_token(ak, sk):\n    headers = {'alg': 'HS256', 'typ': 'JWT'}\n    payload = {\n        'iss': ak,\n        'exp': int(time.time()) + 18000,  # 填写您期望的有效时间，此处示例代表当前时间+300分钟\n        'nbf': int(time.time()) - 500  # 填写您期望的生效时间，此处示例代表当前时间-500秒\n    }\n    token = jwt.encode(payload, sk, headers=headers)\n    return token\n\n\ndef _create_retry_decorator(llm):\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n        # raise ValueError(f\"not support system role {message}\")\n\n    elif isinstance(message, FunctionMessage):\n        raise ValueError(f'not support funciton {message}')\n    else:\n        raise ValueError(f'Got unknown type {message}')\n\n    # if \"name\" in message.additional_kwargs:\n    #     message_dict[\"name\"] = message.additional_kwargs[\"name\"]\n    return message_dict\n\n\ndef _convert_message_to_dict2(message: BaseMessage) -> List[dict]:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n    elif isinstance(message, SystemMessage):\n        raise ValueError(f'not support system role {message}')\n\n    elif isinstance(message, FunctionMessage):\n        raise ValueError(f'not support funciton {message}')\n    else:\n        raise ValueError(f'Got unknown type {message}')\n\n    return [message_dict]\n\n\nurl = 'https://api.sensenova.cn/v1/llm/chat-completions'\n\n\nclass SenseChat(BaseChatModel):\n\n    client: Optional[Any]  #: :meta private:\n    model_name: str = Field(default='SenseChat', alias='model')\n    \"\"\"Model name to use.\"\"\"\n    temperature: float = 0.8\n    top_p: float = 0.7\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    access_key_id: Optional[str] = None\n    secret_access_key: Optional[str] = None\n\n    repetition_penalty: float = 1.05\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n\n        _import_pyjwt()\n\n        values['access_key_id'] = get_from_dict_or_env(values, 'access_key_id', 'ACCESS_KEY_ID')\n        values['secret_access_key'] = get_from_dict_or_env(values, 'secret_access_key',\n                                                           'SECRET_ACCESS_KEY')\n        token = encode_jwt_token(values['access_key_id'], values['secret_access_key'])\n        if isinstance(token, bytes):\n            token = token.decode('utf-8')\n\n        try:\n            header = {\n                'Authorization': 'Bearer {}'.format(token),\n                'Content-Type': 'application/json'\n            }\n\n            values['client'] = Requests(headers=header, )\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ZhipuAI API.\"\"\"\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            # messages\n            params = {\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'repetition_penalty': self.repetition_penalty,\n                'n': self.n,\n                'max_new_tokens': self.max_tokens,\n                'stream': False  # self.streaming\n            }\n\n            token = encode_jwt_token(self.access_key_id, self.secret_access_key)\n            if isinstance(token, bytes):\n                token = token.decode('utf-8')\n            self.client.headers.update({'Authorization': 'Bearer {}'.format(token)})\n\n            response = self.client.post(url=url, json=params).json()\n            return response\n\n        rsp_dict = _completion_with_retry(**kwargs)\n        if 'error' in rsp_dict:\n            logger.error(f'sensechat_error resp={rsp_dict}')\n            message = rsp_dict['error']['message']\n            raise Exception(message)\n        else:\n            # return rsp_dict['data'], rsp_dict.get('usage', '')\n            return rsp_dict, rsp_dict.get('usage', '')\n\n    async def acompletion_with_retry(self, **kwargs: Any) -> Any:\n        \"\"\"Use tenacity to retry the async completion call.\"\"\"\n        retry_decorator = _create_retry_decorator(self)\n\n        if self.streaming:\n            self.client.headers.update({'Accept': 'text/event-stream'})\n        else:\n            self.client.headers.pop('Accept', '')\n\n        @retry_decorator\n        async def _acompletion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.pop('messages', '')\n\n            inp = {\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': self.top_p,\n                'temperature': self.temperature,\n                'repetition_penalty': self.repetition_penalty,\n                'n': self.n,\n                'max_new_tokens': self.max_tokens,\n                'stream': True\n            }\n\n            # Use OpenAI's async api https://github.com/openai/openai-python#async-api\n            async with self.client.apost(url=url, json=inp) as response:\n\n                async for line in response.content.iter_any():\n\n                    if b'\\n' in line:\n                        for txt_ in line.split(b'\\n'):\n                            yield txt_.decode('utf-8').strip()\n                    else:\n                        yield line.decode('utf-8').strip()\n\n        async for response in _acompletion_with_retry(**kwargs):\n            is_error = False\n            if response:\n                if response.startswith('event:error'):\n                    is_error = True\n                elif response.startswith('data:'):\n                    yield (is_error, response[len('data:'):])\n                    if is_error:\n                        break\n                elif response.startswith('{'):\n                    yield (is_error, response)\n                else:\n                    continue\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        response, usage = self.completion_with_retry(messages=message_dicts, **params)\n\n        return self._create_chat_result(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        if self.streaming:\n\n            inner_completion = ''\n            role = 'user'\n            params['stream'] = True\n            function_call: Optional[dict] = None\n            async for is_error, stream_resp in self.acompletion_with_retry(messages=message_dicts,\n                                                                           **params):\n                if str(stream_resp).startswith('[DONE]'):\n                    continue\n                output = json.loads(stream_resp)\n                if is_error:\n                    logger.error(stream_resp)\n                    raise ValueError(stream_resp)\n                if 'data' in output:\n                    output = output['data']\n\n                choices = None\n                if 'choices' in output:\n                    choices = output.get('choices')\n\n                if choices:\n                    for choice in choices:\n                        token = choice['delta']\n\n                        inner_completion += token or ''\n                        _function_call = ''\n                        if run_manager:\n                            await run_manager.on_llm_new_token(token)\n                        if _function_call:\n                            if function_call is None:\n                                function_call = _function_call\n                            else:\n                                function_call['arguments'] += _function_call['arguments']\n            message = _convert_dict_to_message({\n                'content': inner_completion,\n                'role': role,\n                'function_call': function_call,\n            })\n            return ChatResult(generations=[ChatGeneration(message=message)])\n        else:\n            return self._generate(messages, stop, run_manager, **kwargs)\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        system_content = ''\n        message_dicts = []\n        for m in messages:\n            if m.type == 'system':\n                system_content += m.content\n                continue\n            message_dicts.extend(_convert_message_to_dict2(m))\n\n        if system_content:\n            message_dicts[-1]['content'] = system_content + message_dicts[-1]['content']\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n\n        def _norm_text(text):\n            if text[0] == '\"' and text[-1] == '\"':\n                out = ast.literal_eval(text)\n            else:\n                out = text\n            return out\n\n        for res in response['data']['choices']:\n            res['content'] = _norm_text(res['message'])\n            res['role'] = 'user'\n            message = _convert_dict_to_message(res)\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response['data']['usage'], 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the openai client.\"\"\"\n        zhipu_creds: Dict[str, Any] = {\n            'access_key_id': self.access_key_id,\n            'secret_access_key': self.secret_access_key,\n            'model': self.model_name,\n        }\n        return {**zhipu_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'sense-chat'\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/wenxin.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\n# import requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import ConfigDict, model_validator, Field\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nfrom .interface import WenxinChatCompletion\nfrom .interface.types import ChatInput\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ChatWenxin) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs['function_call']\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nclass ChatWenxin(BaseChatModel):\n    \"\"\"Wrapper around proxy Chat large language models.\n\n    To use, the environment variable ``ELEMAI_API_KEY`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from bisheng_langchain.chat_models import ChatWenxin\n            chat_miniamaxai = ChatWenxin(model_name=\"ernie-bot\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('ernie-bot', alias='model')\n\n    temperature: float = 0.95\n    top_p: float = 0.8\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    wenxin_api_key: Optional[str] = None\n    wenxin_secret_key: Optional[str] = None\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['wenxin_api_key'] = get_from_dict_or_env(values, 'wenxin_api_key', 'WENXIN_API_KEY')\n\n        values['wenxin_secret_key'] = get_from_dict_or_env(values, 'wenxin_secret_key',\n                                                           'WENXIN_SECRET_KEY')\n\n        api_key = values['wenxin_api_key']\n        secret_key = values['wenxin_secret_key']\n        try:\n            values['client'] = WenxinChatCompletion(api_key, secret_key)\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ChatWenxin API.\"\"\"\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            max_tokens = kwargs.get('max_tokens')\n            params = {\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'max_tokens': max_tokens\n            }\n            return self.client(ChatInput.parse_obj(params), self.verbose).dict()\n\n        return _completion_with_retry(**kwargs)\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        return self._generate(messages, stop, run_manager, **kwargs)\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response['usage'], 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the client.\"\"\"\n        minimaxai_creds: Dict[str, Any] = {\n            'model': self.model_name,\n        }\n        return {**minimaxai_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'ernie-bot-chat'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/xunfeiai.py",
    "content": "\"\"\"proxy llm chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\n# import requests\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import ConfigDict, model_validator, Field\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nfrom .interface import XunfeiChatCompletion\nfrom .interface.types import ChatInput\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ChatXunfeiAI) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict[\n            'content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n        if 'function_call' in message.additional_kwargs:\n            message_dict['function_call'] = message.additional_kwargs[\n                'function_call']\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n    elif isinstance(message, FunctionMessage):\n        message_dict = {\n            'role': 'function',\n            'content': message.content,\n            'name': message.name,\n        }\n    else:\n        raise ValueError(f'Got unknown type {message}')\n    if 'name' in message.additional_kwargs:\n        message_dict['name'] = message.additional_kwargs['name']\n    return message_dict\n\n\nclass ChatXunfeiAI(BaseChatModel):\n    \"\"\"Wrapper around proxy Chat large language models.\n\n    To use, the environment variable ``ELEMAI_API_KEY`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from bisheng_langchain.chat_models import ChatXunfeiAI\n            chat_miniamaxai = ChatXunfeiAI(model_name=\"spark\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model_name: str = Field('spark-1.5', alias='model')\n\n    temperature: float = 0.5\n    top_p: float = 0.7\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    xunfeiai_appid: Optional[str] = None\n    xunfeiai_api_key: Optional[str] = None\n    xunfeiai_api_secret: Optional[str] = None\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['xunfeiai_appid'] = get_from_dict_or_env(\n            values, 'xunfeiai_appid', 'XUNFEIAI_APPID')\n\n        values['xunfeiai_api_key'] = get_from_dict_or_env(\n            values, 'xunfeiai_api_key', 'XUNFEIAI_API_KEY')\n\n        values['xunfeiai_api_secret'] = get_from_dict_or_env(\n            values, 'xunfeiai_api_secret', 'XUNFEIAI_API_SECRET')\n\n        appid = values['xunfeiai_appid']\n        api_key = values['xunfeiai_api_key']\n        api_secret = values['xunfeiai_api_secret']\n\n        try:\n            values['client'] = XunfeiChatCompletion(appid, api_key, api_secret)\n        except AttributeError:\n            raise ValueError(\n                'Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ChatXunfeiAI API.\"\"\"\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            max_tokens = kwargs.get('max_tokens')\n            params = {\n                'messages': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'max_tokens': max_tokens\n            }\n            return self.client(ChatInput.parse_obj(params),\n                               self.verbose).dict()\n\n        return _completion_with_retry(**kwargs)\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {\n            'token_usage': overall_token_usage,\n            'model_name': self.model_name\n        }\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        return self._create_chat_result(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        return self._generate(messages, stop, run_manager, **kwargs)\n\n    def _create_message_dicts(\n        self, messages: List[BaseMessage], stop: Optional[List[str]]\n    ) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError(\n                    '`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        message_dicts = [_convert_message_to_dict(m) for m in messages]\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n        for res in response['choices']:\n            message = _convert_dict_to_message(res['message'])\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {\n            'token_usage': response['usage'],\n            'model_name': self.model_name\n        }\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the client.\"\"\"\n        minimaxai_creds: Dict[str, Any] = {\n            'model': self.model_name,\n        }\n        return {**minimaxai_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'xunfeiai_chat'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning(\n                'Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('spark'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n"
  },
  {
    "path": "src/backend/bisheng_langchain/chat_models/zhipuai.py",
    "content": "\"\"\"ZhipuAI chat wrapper.\"\"\"\nfrom __future__ import annotations\n\nimport ast\nimport logging\nimport sys\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, List, Mapping, Optional, Tuple, Union\n\nfrom langchain.callbacks.manager import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.schema import ChatGeneration, ChatResult\nfrom langchain.schema.messages import (AIMessage, BaseMessage, ChatMessage, FunctionMessage,\n                                       HumanMessage, SystemMessage)\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import ConfigDict, model_validator, Field\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nif TYPE_CHECKING:\n    import tiktoken\n\nlogger = logging.getLogger(__name__)\n\n\ndef _import_tiktoken() -> Any:\n    try:\n        import tiktoken\n    except ImportError:\n        raise ValueError('Could not import tiktoken python package. '\n                         'This is needed in order to calculate get_token_ids. '\n                         'Please install it with `pip install tiktoken`.')\n    return tiktoken\n\n\ndef _create_retry_decorator(llm: ChatZhipuAI) -> Callable[[Any], Any]:\n\n    min_seconds = 1\n    max_seconds = 20\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(llm.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:\n    role = _dict['role']\n    if role == 'user':\n        return HumanMessage(content=_dict['content'])\n    elif role == 'assistant':\n        content = _dict['content'] or ''  # OpenAI returns None for tool invocations\n        if _dict.get('function_call'):\n            additional_kwargs = {'function_call': dict(_dict['function_call'])}\n        else:\n            additional_kwargs = {}\n        return AIMessage(content=content, additional_kwargs=additional_kwargs)\n    elif role == 'system':\n        return SystemMessage(content=_dict['content'])\n    elif role == 'function':\n        return FunctionMessage(content=_dict['content'], name=_dict['name'])\n    else:\n        return ChatMessage(content=_dict['content'], role=role)\n\n\ndef _convert_message_to_dict(message: BaseMessage) -> dict:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n    elif isinstance(message, SystemMessage):\n        message_dict = {'role': 'system', 'content': message.content}\n        # raise ValueError(f\"not support system role {message}\")\n\n    elif isinstance(message, FunctionMessage):\n        raise ValueError(f'not support funciton {message}')\n    else:\n        raise ValueError(f'Got unknown type {message}')\n\n    # if \"name\" in message.additional_kwargs:\n    #     message_dict[\"name\"] = message.additional_kwargs[\"name\"]\n    return message_dict\n\n\ndef _convert_message_to_dict2(message: BaseMessage) -> List[dict]:\n    if isinstance(message, ChatMessage):\n        message_dict = {'role': message.role, 'content': message.content}\n    elif isinstance(message, HumanMessage):\n        message_dict = {'role': 'user', 'content': message.content}\n    elif isinstance(message, AIMessage):\n        message_dict = {'role': 'assistant', 'content': message.content}\n    elif isinstance(message, SystemMessage):\n        raise ValueError(f'not support system role {message}')\n\n    elif isinstance(message, FunctionMessage):\n        raise ValueError(f'not support funciton {message}')\n    else:\n        raise ValueError(f'Got unknown type {message}')\n\n    return [message_dict]\n\n\nclass ChatZhipuAI(BaseChatModel):\n    \"\"\"Wrapper around ZhipuAI Chat large language models.\n\n    To use, you should have the ``zhipuai`` python package installed, and the\n    environment variable ``ZHIPU_API_KEY`` set with your API key.\n\n    Example:\n        .. code-block:: python\n\n            from lib.zhipuai import ChatZhipuAI\n            chat_zhipu = ChatZhipu(model_name=\"chatglm-std\")\n    \"\"\"\n\n    client: Optional[Any]  #: :meta private:\n    model_name: str = Field(default='chatglm_std', alias='model')\n    \"\"\"Model name to use.\"\"\"\n    temperature: float = 0.95\n    top_p: float = 0.7\n    \"\"\"What sampling temperature to use.\"\"\"\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    zhipuai_api_key: Optional[str] = None\n\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout for requests to OpenAI completion API. Default is 600 seconds.\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    streaming: Optional[bool] = False\n    \"\"\"Whether to stream the results or not.\"\"\"\n    n: Optional[int] = 1\n    \"\"\"Number of chat completions to generate for each prompt.\"\"\"\n    max_tokens: Optional[int] = 1024\n    \"\"\"Maximum number of tokens to generate.\"\"\"\n    tiktoken_model_name: Optional[str] = None\n    \"\"\"The model name to pass to tiktoken when using this class.\n    Tiktoken is used to count the number of tokens in documents to constrain\n    them to be under a certain limit. By default, when set to None, this will\n    be the same as the embedding model name. However, there are some cases\n    where you may want to use this Embedding class with a model name not\n    supported by tiktoken. This can include when using Azure embeddings or\n    when using one of the many model providers that expose an OpenAI-like\n    API but with different models. In those cases, in order to avoid erroring\n    when tiktoken is called, you can specify a model name to use here.\"\"\"\n    verbose: Optional[bool] = False\n    model_config = ConfigDict(validate_by_name=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['zhipuai_api_key'] = get_from_dict_or_env(values, 'zhipuai_api_key',\n                                                         'ZHIPUAI_API_KEY')\n        try:\n            import zhipuai\n            zhipuai.api_key = values['zhipuai_api_key']\n        except ImportError:\n            raise ValueError('Could not import openai python package. '\n                             'Please install it with `pip install zhipuai`.')\n        try:\n            values['client'] = zhipuai.model_api.invoke\n        except AttributeError:\n            raise ValueError('`openai` has no `ChatCompletion` attribute, this is likely '\n                             'due to an old version of the zhipuai package. Try upgrading it '\n                             'with `pip install --upgrade zhipuai`.')\n        return values\n\n    @property\n    def _default_params(self) -> Dict[str, Any]:\n        \"\"\"Get the default parameters for calling ZhipuAI API.\"\"\"\n        return {\n            'model': self.model_name,\n            'temperature': self.temperature,\n            'top_p': self.top_p,\n            'max_tokens': self.max_tokens,\n            **self.model_kwargs,\n        }\n\n    def completion_with_retry(self, **kwargs: Any) -> Any:\n        retry_decorator = _create_retry_decorator(self)\n\n        @retry_decorator\n        def _completion_with_retry(**kwargs: Any) -> Any:\n            messages = kwargs.get('messages')\n            temperature = kwargs.get('temperature')\n            top_p = kwargs.get('top_p')\n            params = {\n                'prompt': messages,\n                'model': self.model_name,\n                'top_p': top_p,\n                'temperature': temperature,\n                'incremental': False\n            }\n            return self.client(**params)\n\n        return _completion_with_retry(**kwargs)\n\n    def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict:\n        overall_token_usage: dict = {}\n        for output in llm_outputs:\n            if output is None:\n                # Happens in streaming\n                continue\n            token_usage = output['token_usage']\n            for k, v in token_usage.items():\n                if k in overall_token_usage:\n                    overall_token_usage[k] += v\n                else:\n                    overall_token_usage[k] = v\n        return {'token_usage': overall_token_usage, 'model_name': self.model_name}\n\n    def _generate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[CallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        message_dicts, params = self._create_message_dicts(messages, stop)\n        params = {**params, **kwargs}\n        response = self.completion_with_retry(messages=message_dicts, **params)\n        if response['code'] == 1301:\n            response = {'code': 200, \n                        'msg': '操作成功', \n                        'data': {'request_id': '0', 'task_id': '0', 'task_status': 'SUCCESS', \n                                 'choices': [{'role': 'assistant', 'content': '\"\"'}], \n                                 'usage': {'prompt_tokens': 0, 'completion_tokens': 0, 'total_tokens': 0}}, \n                        'success': True}\n\n        return self._create_chat_result(response)\n\n    async def _agenerate(\n        self,\n        messages: List[BaseMessage],\n        stop: Optional[List[str]] = None,\n        run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,\n        **kwargs: Any,\n    ) -> ChatResult:\n        return self._generate(messages, stop, run_manager, **kwargs)\n\n    def _create_message_dicts(\n            self, messages: List[BaseMessage],\n            stop: Optional[List[str]]) -> Tuple[List[Dict[str, Any]], Dict[str, Any]]:\n        params = dict(self._client_params)\n        if stop is not None:\n            if 'stop' in params:\n                raise ValueError('`stop` found in both the input and default params.')\n            params['stop'] = stop\n\n        system_content = ''\n        message_dicts = []\n        for m in messages:\n            if m.type == 'system':\n                system_content += m.content\n                continue\n            message_dicts.extend(_convert_message_to_dict2(m))\n\n        if system_content:\n            message_dicts[-1]['content'] = system_content + message_dicts[-1]['content']\n\n        return message_dicts, params\n\n    def _create_chat_result(self, response: Mapping[str, Any]) -> ChatResult:\n        generations = []\n\n        # print('response', response)\n        def _norm_text(text):\n            if text[0] == '\"' and text[-1] == '\"':\n                out = ast.literal_eval(text)\n            else:\n                out = text\n            return out\n\n        for res in response['data']['choices']:\n            res['content'] = _norm_text(res['content'])\n            message = _convert_dict_to_message(res)\n            gen = ChatGeneration(message=message)\n            generations.append(gen)\n\n        llm_output = {'token_usage': response['data']['usage'], 'model_name': self.model_name}\n        return ChatResult(generations=generations, llm_output=llm_output)\n\n    @property\n    def _identifying_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the identifying parameters.\"\"\"\n        return {**{'model_name': self.model_name}, **self._default_params}\n\n    @property\n    def _client_params(self) -> Mapping[str, Any]:\n        \"\"\"Get the parameters used for the openai client.\"\"\"\n        zhipu_creds: Dict[str, Any] = {\n            'api_key': self.zhipuai_api_key,\n            'model': self.model_name,\n        }\n        return {**zhipu_creds, **self._default_params}\n\n    def _get_invocation_params(self,\n                               stop: Optional[List[str]] = None,\n                               **kwargs: Any) -> Dict[str, Any]:\n        \"\"\"Get the parameters used to invoke the model FOR THE CALLBACKS.\"\"\"\n        return {\n            **super()._get_invocation_params(stop=stop, **kwargs),\n            **self._default_params,\n            'model': self.model_name,\n            'function': kwargs.get('functions'),\n        }\n\n    @property\n    def _llm_type(self) -> str:\n        \"\"\"Return type of chat model.\"\"\"\n        return 'zhipu-chat'\n\n    def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:\n        tiktoken_ = _import_tiktoken()\n        if self.tiktoken_model_name is not None:\n            model = self.tiktoken_model_name\n        else:\n            model = self.model_name\n            # model chatglm-std, chatglm-lite\n        # Returns the number of tokens used by a list of messages.\n        try:\n            encoding = tiktoken_.encoding_for_model(model)\n        except KeyError:\n            logger.warning('Warning: model not found. Using cl100k_base encoding.')\n            model = 'cl100k_base'\n            encoding = tiktoken_.get_encoding(model)\n        return model, encoding\n\n    def get_token_ids(self, text: str) -> List[int]:\n        \"\"\"Get the tokens present in the text with tiktoken package.\"\"\"\n        # tiktoken NOT supported for Python 3.7 or below\n        if sys.version_info[1] <= 7:\n            return super().get_token_ids(text)\n        _, encoding_model = self._get_encoding_model()\n        return encoding_model.encode(text)\n\n    def get_num_tokens_from_messages(self, messages: List[BaseMessage]) -> int:\n        \"\"\"Calculate num tokens for chatglm with tiktoken package.\n\n        todo: read chatglm document\n        Official documentation: https://github.com/openai/openai-cookbook/blob/\n        main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb\"\"\"\n        if sys.version_info[1] <= 7:\n            return super().get_num_tokens_from_messages(messages)\n        model, encoding = self._get_encoding_model()\n        if model.startswith('chatglm'):\n            # every message follows <im_start>{role/name}\\n{content}<im_end>\\n\n            tokens_per_message = 4\n            # if there's a name, the role is omitted\n            tokens_per_name = -1\n        else:\n            raise NotImplementedError(\n                f'get_num_tokens_from_messages() is not presently implemented '\n                f'for model {model}.'\n                'See https://github.com/openai/openai-python/blob/main/chatml.md for '\n                'information on how messages are converted to tokens.')\n        num_tokens = 0\n        messages_dict = [_convert_message_to_dict(m) for m in messages]\n        for message in messages_dict:\n            num_tokens += tokens_per_message\n            for key, value in message.items():\n                num_tokens += len(encoding.encode(value))\n                if key == 'name':\n                    num_tokens += tokens_per_name\n        # every reply is primed with <im_start>assistant\n        num_tokens += 3\n        return num_tokens\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/__init__.py",
    "content": "from .custom_kv import CustomKVLoader\nfrom .elem_pdf import PDFWithSemanticLoader\nfrom .elem_unstrcutured_loader import ElemUnstructuredLoader, ElemUnstructuredLoaderV0\nfrom .universal_kv import UniversalKVLoader\n\n__all__ = [\n    'PDFWithSemanticLoader',\n    'ElemUnstructuredLoader',\n    'ElemUnstructuredLoaderV0',\n    'UniversalKVLoader',\n    'CustomKVLoader',\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/custom_kv.py",
    "content": "# flake8: noqa\n\"\"\"Loads PDF with semantic splilter.\"\"\"\nimport base64\nimport json\nimport logging\nimport os\nimport re\nimport tempfile\nfrom pathlib import Path\nfrom time import sleep\nfrom typing import List, Optional, Tuple, Union\nfrom urllib.parse import quote_plus, unquote, urlparse\n\nimport cv2\nimport fitz\nimport numpy as np\nfrom bisheng_langchain.utils.requests import Requests\nfrom langchain_community.docstore.document import Document\nfrom langchain_community.document_loaders.base import BaseLoader\nfrom PIL import Image\n\nlogger = logging.getLogger(__name__)\n\n\ndef convert_base64(image):\n    image_binary = cv2.imencode('.jpg', image)[1].tobytes()\n    x = base64.b64encode(image_binary)\n    return x.decode('ascii').replace('\\n', '')\n\n\ndef transpdf2png(pdf_file):\n    pdf_bytes = open(pdf_file, 'rb').read()\n    pdf = fitz.Document(stream=pdf_bytes, filetype='pdf')\n    dpis = [72, 144, 200]\n\n    pdf_images = dict()\n    for page in pdf:\n        pix = None\n        for dpi in dpis:\n            pix = page.get_pixmap(dpi=dpi)\n            if min(pix.width, pix.height) >= 1600: break\n\n        mode = 'RGBA' if pix.alpha else 'RGB'\n        img = Image.frombytes(mode, [pix.width, pix.height], pix.samples)\n        # RGB to BGR\n        img = np.array(img)[:, :, ::-1]\n        img_name = 'page_{:03d}'.format(page.number)\n        pdf_images[img_name] = img\n\n    return pdf_images\n\n\nclass CustomKVLoader(BaseLoader):\n    \"\"\"Extract key-value from pdf or image.\n    \"\"\"\n\n    def __init__(self,\n                 file_path: str,\n                 elm_api_base_url: str,\n                 elm_api_key: str,\n                 schemas: str,\n                 elem_server_id: str,\n                 task_type: str,\n                 request_timeout: Optional[Union[float, Tuple[float, float]]] = 30) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.file_path = file_path\n        self.elm_api_base_url = elm_api_base_url\n        self.elm_api_key = elm_api_key\n        self.elem_server_id = elem_server_id\n        self.task_type = task_type\n        self.schemas = set(schemas.split('|'))\n        self.headers = {'Authorization': f'Bearer {elm_api_key}'}\n        self.requests = Requests(headers=self.headers, request_timeout=request_timeout)\n        if '~' in self.file_path:\n            self.file_path = os.path.expanduser(self.file_path)\n\n        # If the file is a web path, download it to a temporary file, and use that\n        if not os.path.isfile(self.file_path) and self._is_valid_url(self.file_path):\n            r = self.requests.get(self.file_path)\n\n            if r.status_code != 200:\n                raise ValueError('Check the url of your file; returned status code %s' %\n                                 r.status_code)\n\n            self.temp_dir = tempfile.TemporaryDirectory()\n            temp_file = Path(self.temp_dir.name) / unquote(\n                urlparse(self.file_path).path.split('/')[-1])\n            with open(temp_file, mode='wb') as f:\n                f.write(r.content)\n            self.file_path = str(temp_file)\n        elif not os.path.isfile(self.file_path):\n            raise ValueError('File path %s is not a valid file or url' % self.file_path)\n        super().__init__()\n\n    @staticmethod\n    def _is_valid_url(url: str) -> bool:\n        \"\"\"Check if the url is valid.\"\"\"\n        parsed = urlparse(url)\n        return bool(parsed.netloc) and bool(parsed.scheme)\n\n    def load(self) -> List[Document]:\n        \"\"\"Load given path as pages.\"\"\"\n        # mime_type = filetype.guess(self.file_path).mime\n        # if mime_type.endswith('pdf'):\n        #     file_type = 'pdf'\n        # elif mime_type.startswith('image'):\n        #     file_type = 'img'\n\n        # else:\n        #     raise ValueError(f'file type {file_type} is not support.')\n        with open(self.file_path, 'rb') as file:\n            file = {'file': open(self.file_path, 'rb')}\n            result = {}\n            if self.task_type == 'extraction-job':\n                url = self.elm_api_base_url + '/task'\n                # 创建task\n                body = {'scene_id': self.elem_server_id}\n            elif self.task_type == 'logic-job':\n                url = self.elm_api_base_url + '/logic-job'\n                body = {'logic_service_id': self.elem_server_id}\n\n            resp = self.requests.post(url=url, json={}, data=body, files=file)\n        if resp.status_code == 200:\n            task_id = resp.json().get('data').get('task_id')\n            if not task_id:\n                logger.error(f'task_create_fail res={resp.text}')\n                return\n            # get status\n            status_url = url + f'/status?task_id={task_id}'\n            count = 0\n            while True:\n                status = self.requests.get(status_url).json()\n                if 1 == status.get('data').get('status'):\n                    count += 1\n                    sleep(2)\n                elif 3 == status.get('data').get('status'):\n                    # 失败\n                    logger.error(f'custom_kv type={self.task_type} resp={status}')\n                    return []\n                else:\n                    break\n            # get result\n            job_id = 'job_id' if self.task_type == 'logic-job' else 'task_id'\n            match = re.match(r'^(?:https?:\\/\\/)?(?:www\\.)?([^\\/\\n]+)', self.elm_api_base_url)\n            detail_url = quote_plus(match.group() + f'/logic-job-detail/{task_id}')\n            result_url = url + f'/result?{job_id}={task_id}&detail_url={detail_url}'\n            result = self.requests.get(result_url).json()\n            # only for independent key\n            document_result = {}\n            try:\n                result = self.requests.get(result_url).json()\n                file_reuslt = result.get('data')\n                for result in file_reuslt:\n                    independent = result.get('result').get('independent_list')\n                    for element in independent:\n                        if element.get('element_name') in self.schemas:\n                            document_result[element.get('element_name')] = [\n                                el.get('words') for el in element.get('entity_list')\n                            ]\n            except Exception as e:\n                logger.error(\n                    f'task_result_error scene_id={self.elem_server_id} res={result} except={str(e)}'\n                )\n                raise Exception('custom_kv parse_error')\n        else:\n            logger.error(f'custom_kv=create_task resp={resp.text}')\n            raise Exception('custom_kv create task fail')\n        content = json.dumps(document_result)\n        doc = Document(page_content=content)\n        return [doc]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/elem_html.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/elem_image.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/elem_pdf.py",
    "content": "# flake8: noqa\n\"\"\"Loads PDF with semantic splilter.\"\"\"\nimport io\nimport json\nimport os\nimport re\nimport time\nfrom collections import Counter\nfrom copy import deepcopy\nfrom typing import List, Optional, Union\n\nimport fitz\nimport numpy as np\nfrom bisheng_langchain.document_loaders.parsers import LayoutParser\nfrom langchain_community.docstore.document import Document\nfrom langchain_community.document_loaders.blob_loaders import Blob\nfrom langchain_community.document_loaders.pdf import BasePDFLoader\nfrom shapely import Polygon\nfrom shapely import box as Rect\n\nRE_MULTISPACE_INCLUDING_NEWLINES = re.compile(pattern=r'\\s+', flags=re.DOTALL)\n\n\ndef merge_rects(bboxes):\n    x0 = np.min(bboxes[:, 0])\n    y0 = np.min(bboxes[:, 1])\n    x1 = np.max(bboxes[:, 2])\n    y1 = np.max(bboxes[:, 3])\n    return [x0, y0, x1, y1]\n\n\ndef norm_rect(bbox):\n    x0 = np.min([bbox[0], bbox[2]])\n    x1 = np.max([bbox[0], bbox[2]])\n    y0 = np.min([bbox[1], bbox[3]])\n    y1 = np.max([bbox[1], bbox[3]])\n    return np.asarray([x0, y0, x1, y1])\n\n\ndef find_max_continuous_seq(arr):\n    n = len(arr)\n    max_info = (0, 1)\n    for i in range(n):\n        m = 1\n        for j in range(i + 1, n):\n            if arr[j] - arr[j - 1] == 1:\n                m += 1\n            else:\n                break\n\n        if m > max_info[1]:\n            max_info = (i, m)\n\n    max_info = (max_info[0] + arr[0], max_info[1])\n    return max_info\n\n\ndef order_by_tbyx(block_info, th=10):\n    \"\"\"\n      block_info: [(b0, b1, b2, b3, text, x, y)+]\n      th: threshold of the position threshold\n    \"\"\"\n    # sort using y1 first and then x1\n    res = sorted(block_info, key=lambda b: (b[1], b[0]))\n    for i in range(len(res) - 1):\n        for j in range(i, 0, -1):\n            # restore the order using the\n            if (abs(res[j + 1][1] - res[j][1]) < th and (res[j + 1][0] < res[j][0])):\n                tmp = deepcopy(res[j])\n                res[j] = deepcopy(res[j + 1])\n                res[j + 1] = deepcopy(tmp)\n            else:\n                break\n    return res\n\n\ndef join_lines(texts, is_table=False):\n    if is_table:\n        return '\\n'.join(texts)\n\n    flags = []\n    PUNC_SET = set(['.', ',', ';', '?', '!'])\n    for text in texts:\n        flags.append(np.all([t.isalnum() for t in text.rsplit(' ', 5)]))\n\n    if np.all(flags):\n        t0 = texts[0]\n        for t in texts[1:]:\n            if t0[-1] == '-':\n                t0 = t0[:-1] + t\n            elif t0[-1].isalnum() and t[0].isalnum():\n                t0 += ' ' + t\n            elif t0[-1] in PUNC_SET or t[0] in PUNC_SET:\n                t0 += ' ' + t\n            else:\n                t0 += t\n        return t0\n    else:\n        return ''.join(texts)\n\n\nclass Segment:\n\n    def __init__(self, seg):\n        self.whole = seg\n        self.segs = []\n\n    @staticmethod\n    def is_align(seg0, seg1, delta=5, mode=0):\n        # mode=0 edge align\n        # mode=1, edge align or center align\n        res = Segment.contain(seg0, seg1)\n        if not res:\n            return False\n        else:\n            if mode == 1:\n                r1 = seg1[0] - seg0[0] <= delta or seg0[1] - seg1[1] <= delta\n                c0 = (seg0[0] + seg0[1]) / 2\n                c1 = (seg1[0] + seg1[1]) / 2\n                r2 = abs(c1 - c0) <= delta\n                return r1 or r2\n            else:\n                return seg1[0] - seg0[0] <= delta or seg0[1] - seg1[1] <= delta\n\n    @staticmethod\n    def contain(seg0, seg1):\n        return seg0[0] <= seg1[0] and seg0[1] >= seg1[0]\n\n    @staticmethod\n    def overlap(seg0, seg1):\n        max_x0 = max(seg0[0], seg1[0])\n        min_x1 = min(seg0[1], seg1[1])\n        return max_x0 < min_x1\n\n    def _merge(self, segs):\n        x0s = [s[0] for s in segs]\n        x1s = [s[1] for s in segs]\n        return (np.min(x0s), np.max(x1s))\n\n    def add(self, seg):\n        if not self.segs:\n            self.segs.append(seg)\n        else:\n            overlaps = []\n            non_overlaps = []\n            for seg0 in self.segs:\n                if Segment.overlap(seg0, seg):\n                    overlaps.append(seg0)\n                else:\n                    non_overlaps.append(seg0)\n\n            if not overlaps:\n                self.segs.append(seg)\n            else:\n                overlaps.append(seg)\n                new_seg = self._merge(overlaps)\n                non_overlaps.append(new_seg)\n                self.segs = non_overlaps\n\n    def get_free_segment(self, incr_margin=True, margin_threshold=10):\n        sorted_segs = sorted(self.segs, key=lambda x: x[0])\n        n = len(sorted_segs)\n        free_segs = []\n        if incr_margin:\n            if n > 0:\n                seg_1st = sorted_segs[0]\n                if (seg_1st[0] - self.whole[0]) > margin_threshold:\n                    free_segs.append((self.whole[0], seg_1st[0]))\n\n                seg_last = sorted_segs[-1]\n                if (self.whole[1] - seg_last[1]) > margin_threshold:\n                    free_segs.append((seg_last[1], self.whole[1]))\n\n        for i in range(n - 1):\n            x0 = sorted_segs[i][1]\n            x1 = sorted_segs[i + 1][0]\n            free_segs.append((x0, x1))\n\n        return free_segs\n\n\nclass PDFWithSemanticLoader(BasePDFLoader):\n    \"\"\"Loads a PDF with pypdf and chunks at character level.\n\n    Loader also stores page numbers in metadata.\n    \"\"\"\n\n    def __init__(self,\n                 file_path: str,\n                 password: Optional[Union[str, bytes]] = None,\n                 layout_api_key: str = None,\n                 layout_api_url: str = None,\n                 is_join_table: bool = True,\n                 with_columns: bool = False,\n                 support_rotate: bool = False,\n                 text_elem_sep: str = '\\n',\n                 start: int = 0,\n                 n: int = None,\n                 html_output_file: str = None,\n                 verbose: bool = False) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.layout_parser = LayoutParser(api_key=layout_api_key, api_base_url=layout_api_url)\n        self.with_columns = with_columns\n        self.is_join_table = is_join_table\n        self.support_rotate = support_rotate\n        self.start = start\n        self.n = n\n        self.html_output_file = html_output_file\n        self.verbose = verbose\n        self.text_elem_sep = text_elem_sep\n        super().__init__(file_path)\n\n    def _get_image_blobs(self, fitz_doc, pdf_reader, n=None, start=0):\n        blobs = []\n        pages = []\n        if not n:\n            n = fitz_doc.page_count\n        for pg in range(start, start + n):\n            bytes_img = None\n            page = fitz_doc.load_page(pg)\n            pages.append(page)\n            mat = fitz.Matrix(1, 1)\n            try:\n                pm = page.get_pixmap(matrix=mat, alpha=False)\n                bytes_img = pm.getPNGData()\n            except Exception:\n                # some pdf input cannot get render image from fitz\n                page = pdf_reader.get_page(pg)\n                pil_image = page.render().to_pil()\n                img_byte_arr = io.BytesIO()\n                pil_image.save(img_byte_arr, format='PNG')\n                bytes_img = img_byte_arr.getvalue()\n\n            blobs.append(Blob(data=bytes_img))\n        return blobs, pages\n\n    def _allocate_semantic(self, page, layout):\n        class_name = ['印章', '图片', '标题', '段落', '表格', '页眉', '页码', '页脚']\n        effective_class_inds = [3, 4, 5, 999]\n        non_conti_class_ids = [6, 7, 8]\n        TEXT_ID = 4\n        TABLE_ID = 5\n\n        textpage = page.get_textpage()\n        blocks = textpage.extractBLOCKS()\n\n        if self.support_rotate:\n            rotation_matrix = np.asarray(page.rotation_matrix).reshape((3, 2))\n            c1 = (rotation_matrix[0, 0] - 1) <= 1e-6\n            c2 = (rotation_matrix[1, 1] - 1) <= 1e-6\n            is_rotated = c1 and c2\n            # print('c1/c2', c1, c2)\n            if is_rotated:\n                new_blocks = []\n                for b in blocks:\n                    bbox = np.asarray([b[0], b[1], b[2], b[3]])\n                    aug_bbox = bbox.reshape((-1, 2))\n                    padding = np.ones((len(aug_bbox), 1))\n                    aug_bbox = np.hstack([aug_bbox, padding])\n                    bb = np.dot(aug_bbox, rotation_matrix).reshape(-1)\n                    bb = norm_rect(bb)\n                    info = (bb[0], bb[1], bb[2], bb[3], b[4], b[5], b[6])\n                    new_blocks.append(info)\n\n                blocks = new_blocks\n\n        if not self.with_columns:\n            blocks = order_by_tbyx(blocks)\n\n        # print('---ori blocks---')\n        # for b in blocks:\n        #     print(b)\n\n        IMG_BLOCK_TYPE = 1\n        text_ploys = []\n        text_rects = []\n        texts = []\n        for b in blocks:\n            if b[-1] != IMG_BLOCK_TYPE:\n                text = re.sub(RE_MULTISPACE_INCLUDING_NEWLINES, ' ', b[4] or '').strip()\n                if text:\n                    texts.append(text)\n                    text_ploys.append(Rect(b[0], b[1], b[2], b[3]))\n                    text_rects.append([b[0], b[1], b[2], b[3]])\n        text_rects = np.asarray(text_rects)\n        texts = np.asarray(texts)\n\n        semantic_polys = []\n        semantic_labels = []\n\n        layout_info = json.loads(layout.page_content)\n        for info in layout_info:\n            bbs = info['bbox']\n            coords = ((bbs[0], bbs[1]), (bbs[2], bbs[3]), (bbs[4], bbs[5]), (bbs[6], bbs[7]))\n            semantic_polys.append(Polygon(coords))\n            semantic_labels.append(info['category_id'])\n\n        # caculate containing overlap\n        sem_cnt = len(semantic_polys)\n        texts_cnt = len(text_ploys)\n        contain_matrix = np.zeros((sem_cnt, texts_cnt))\n        for i in range(sem_cnt):\n            for j in range(texts_cnt):\n                inter = semantic_polys[i].intersection(text_ploys[j]).area\n                contain_matrix[i, j] = inter * 1.0 / text_ploys[j].area\n\n        # print('----------------containing matrix--------')\n        # for r in contain_matrix.tolist():\n        #     print([round(r_, 2) for r_ in r])\n\n        # print('---text---')\n        # for t in texts:\n        #     print(t)\n\n        # merge continuous text block by the containing matrix\n        CONTRAIN_THRESHOLD = 0.70\n        contain_info = []\n        for i in range(sem_cnt):\n            ind = np.argwhere(contain_matrix[i, :] > CONTRAIN_THRESHOLD)[:, 0]\n            if len(ind) == 0: continue\n            label = semantic_labels[i]\n            if label in non_conti_class_ids:\n                n = len(ind)\n                contain_info.append((None, None, n, label, ind))\n            else:\n                start, n = find_max_continuous_seq(ind)\n                if n >= 1:\n                    contain_info.append((start, start + n, n, label, None))\n\n        contain_info = sorted(contain_info, key=lambda x: x[2], reverse=True)\n        mask = np.zeros(texts_cnt)\n        new_block_info = []\n        for info in contain_info:\n            start, end, n, label, ind = info\n            if label in non_conti_class_ids and np.all(mask[ind] == 0):\n                rect = merge_rects(text_rects[ind])\n                ori_orders = [blocks[i][-2] for i in ind]\n                ts = texts[ind]\n                rs = text_rects[ind]\n                ord_ind = np.min(ori_orders)\n                mask[ind] = 1\n                new_block_info.append((rect[0], rect[1], rect[2], rect[3], ts, rs, ord_ind))\n\n            elif np.all(mask[start:end] == 0):\n                rect = merge_rects(text_rects[start:end])\n                ori_orders = [blocks[i][-2] for i in range(start, end)]\n                arg_ind = np.argsort(ori_orders)\n                # print('ori_orders', ori_orders, arg_ind)\n                ord_ind = np.min(ori_orders)\n\n                ts = texts[start:end]\n                rs = text_rects[start:end]\n                if label == TABLE_ID:\n                    ts = ts[arg_ind]\n                    rs = rs[arg_ind]\n\n                mask[start:end] = 1\n                new_block_info.append((rect[0], rect[1], rect[2], rect[3], ts, rs, ord_ind))\n\n        for i in range(texts_cnt):\n            if mask[i] == 0:\n                b = blocks[i]\n                r = np.asarray([b[0], b[1], b[2], b[3]])\n                ord_ind = b[-2]\n                new_block_info.append((b[0], b[1], b[2], b[3], [texts[i]], [r], ord_ind))\n\n        if self.with_columns:\n            new_blocks = sorted(new_block_info, key=lambda x: x[-1])\n        else:\n            new_blocks = order_by_tbyx(new_block_info)\n\n        # print('\\n\\n---new blocks---')\n        # for idx, b in enumerate(new_blocks):\n        #     print(idx, b)\n\n        text_ploys = []\n        texts = []\n        for b in new_blocks:\n            texts.append(b[4])\n            text_ploys.append(Rect(b[0], b[1], b[2], b[3]))\n\n        # caculate overlap\n        sem_cnt = len(semantic_polys)\n        texts_cnt = len(text_ploys)\n        overlap_matrix = np.zeros((sem_cnt, texts_cnt))\n        for i in range(sem_cnt):\n            for j in range(texts_cnt):\n                inter = semantic_polys[i].intersection(text_ploys[j]).area\n                union = semantic_polys[i].union(text_ploys[j]).area\n                overlap_matrix[i, j] = (inter * 1.0) / union\n\n        # print('---overlap_matrix---')\n        # for r in overlap_matrix:\n        #     print([round(r_, 3) for r_ in r])\n\n        # allocate label\n        OVERLAP_THRESHOLD = 0.2\n        texts_labels = []\n        DEF_SEM_LABEL = 999\n        for j in range(texts_cnt):\n            ind = np.argwhere(overlap_matrix[:, j] > OVERLAP_THRESHOLD)[:, 0]\n            if len(ind) == 0:\n                sem_label = DEF_SEM_LABEL\n            else:\n                c = Counter([semantic_labels[i] for i in ind])\n                items = c.most_common()\n                sem_label = items[0][0]\n                if len(items) > 1 and TEXT_ID in dict(items):\n                    sem_label = TEXT_ID\n\n            texts_labels.append(sem_label)\n\n        # print(texts_labels)\n        # filter the unused element\n        filtered_blocks = []\n        for label, b in zip(texts_labels, new_blocks):\n            if label in effective_class_inds:\n                text = join_lines(b[4], label == TABLE_ID)\n                filtered_blocks.append((b[0], b[1], b[2], b[3], text, b[5], label))\n\n        # print('---filtered_blocks---')\n        # for b in filtered_blocks:\n        #     print(b)\n\n        return filtered_blocks\n\n    def _divide_blocks_into_groups(self, blocks):\n        # support only pure two columns layout, each has same width\n        rects = np.asarray([[b[0], b[1], b[2], b[3]] for b in blocks])\n        min_x0 = np.min(rects[:, 0])\n        max_x1 = np.max(rects[:, 2])\n        root_seg = (min_x0, max_x1)\n        root_pc = (min_x0 + max_x1) / 2\n        root_offset = 20\n        center_seg = (root_pc - root_offset, root_pc + root_offset)\n\n        segment = Segment(root_seg)\n        for r in rects:\n            segment.add((r[0], r[2]))\n\n        COLUMN_THRESHOLD = 0.90\n        CENTER_GAP_THRESHOLD = 0.90\n        free_segs = segment.get_free_segment()\n        columns = []\n        if len(free_segs) == 1 and len(segment.segs) == 2:\n            free_seg = free_segs[0]\n            seg0 = segment.segs[0]\n            seg1 = segment.segs[1]\n            cover = seg0[1] - seg0[0] + seg1[1] - seg1[0]\n            c0 = cover / (root_seg[1] - root_seg[0])\n            c1 = Segment.contain(center_seg, free_seg)\n            if c0 > COLUMN_THRESHOLD and c1:\n                # two columns\n                columns.extend([seg0, seg1])\n\n        groups = [blocks]\n        if columns:\n            groups = [[] for _ in columns]\n            for b, r in zip(blocks, rects):\n                column_ind = 0\n                cand_seg = (r[0], r[2])\n                for i, seg in enumerate(columns):\n                    if Segment.contain(seg, cand_seg):\n                        column_ind = i\n                        break\n                groups[i].append(b)\n\n        return groups\n\n    def _allocate_continuous(self, groups):\n        g_bound = []\n        groups = [g for g in groups if g]\n        for blocks in groups:\n            arr = [[b[0], b[1], b[2], b[3]] for b in blocks]\n            bboxes = np.asarray(arr)\n            g_bound.append(np.asarray(merge_rects(bboxes)))\n\n        LINE_FULL_THRESHOLD = 0.80\n        START_THRESHOLD = 0.8\n        SIMI_HEIGHT_THRESHOLD = 0.3\n        SIMI_WIDTH_THRESHOLD = 0.3\n\n        TEXT_ID = 4\n        TABLE_ID = 5\n\n        def _get_elem(blocks, is_first=True):\n            if not blocks:\n                return (None, None, None, None, None)\n            if is_first:\n                b1 = blocks[0]\n                b1_label = b1[-1]\n                r1 = b1[5][0]\n                r1_w = r1[2] - r1[0]\n                r1_h = r1[3] - r1[1]\n                return (b1, b1_label, r1, r1_w, r1_h)\n            else:\n                b0 = blocks[-1]\n                b0_label = b0[-1]\n                r0 = b0[5][-1]\n                r0_w = r0[2] - r0[0]\n                r0_h = r0[3] - r0[1]\n                return (b0, b0_label, r0, r0_w, r0_h)\n\n        b0, b0_label, r0, r0_w, r0_h = _get_elem(groups[0], False)\n        g0 = g_bound[0]\n\n        for i in range(1, len(groups)):\n            b1, b1_label, r1, r1_w, r1_h = _get_elem(groups[i], True)\n            g1 = g_bound[i]\n\n            # print('\\n_allocate_continuous:')\n            # print(b0, b0_label, b1, b1_label)\n\n            if b0_label and b0_label == b1_label and b0_label == TEXT_ID:\n                c0 = r0_w / (g0[2] - g0[0])\n                c1 = (r1[0] - g1[0]) / r1_h\n                c2 = np.abs(r0_h - r1_h) / r1_h\n\n                # print('\\n\\n---conti texts---')\n                # print(b0_label, c0, c1, c2,\n                #       b0, b0_label, r0, r0_w, r0_h,\n                #       b1, b1_label, r1, r1_w, r1_h)\n\n                if (c0 > LINE_FULL_THRESHOLD and c1 < START_THRESHOLD\n                        and c2 < SIMI_HEIGHT_THRESHOLD):\n                    new_text = join_lines([b0[4], b1[4]])\n                    new_block = (b0[0], b0[1], b0[2], b0[3], new_text, b0[5], b0[6])\n                    groups[i - 1][-1] = new_block\n                    groups[i].pop(0)\n\n            elif (self.is_join_table and b0_label and b0_label == b1_label\n                  and b0_label == TABLE_ID):\n                c0 = (r1_w - r0_w) / r1_h\n                if c0 < SIMI_WIDTH_THRESHOLD:\n                    new_text = join_lines([b0[4], b1[4]], True)\n                    new_block = (b0[0], b0[1], b0[2], b0[3], new_text, b0[5], b0[6])\n                    groups[i - 1][-1] = new_block\n                    groups[i].pop(0)\n\n            b0, b0_label, r0, r0_w, r0_h = _get_elem(groups[i], False)\n\n        return groups\n\n    def save_to_html(self, groups, output_file):\n        styles = ['style=\"background-color: #EBEBEB;\"', 'style=\"background-color: #ABBAEA;\"']\n        idx = 0\n        table_style = 'style=\"border:1px solid black;\"'\n\n        with open(output_file, 'w') as fout:\n            for blocks in groups:\n                for b in blocks:\n                    if b[-1] == 3:\n                        text = f'<h1>{b[4]}</h1>'\n                    elif b[-1] == 4:\n                        text = f'<p {styles[idx % 2]}>{b[4]}</p>'\n                        idx += 1\n                    elif b[-1] == 5:\n                        rows = b[4].split('\\n')\n                        content = []\n                        for r in rows:\n                            content.append(f'<tr><td {table_style}>{r}</td></tr>')\n                        elem_text = '\\n'.join(content)\n                        text = f'<table {table_style}>{elem_text}</table>'\n                    else:\n                        text = f'<p {styles[idx % 2]}>{b[4]}</p>'\n                        idx += 1\n\n                    fout.write(text + '\\n')\n\n    def _save_to_document(self, groups):\n        TITLE_ID = 3\n        TEXT_ID = 4\n        TABLE_ID = 5\n        content_page = []\n        is_first_elem = True\n        for blocks in groups:\n            for b in blocks:\n                if is_first_elem:\n                    content_page.append(b[4])\n                    is_first_elem = False\n                else:\n                    label, text = b[-1], b[4]\n                    if label == TITLE_ID:\n                        content_page.append('\\n\\n' + text)\n                    else:\n                        content_page.append(self.text_elem_sep + text)\n\n        return ''.join(content_page)\n\n    def load(self) -> List[Document]:\n        \"\"\"Load given path as pages.\"\"\"\n        import pypdfium2\n        blob = Blob.from_path(self.file_path)\n        start = self.start\n        groups = []\n        with blob.as_bytes_io() as file_path:\n            fitz_doc = fitz.open(file_path)\n            pdf_doc = pypdfium2.PdfDocument(file_path, autoclose=True)\n            max_page = fitz_doc.page_count - start\n            n = self.n if self.n else max_page\n            n = min(n, max_page)\n\n            tic = time.time()\n            if self.verbose:\n                print(f'{n} pages need be processed...')\n\n            for idx in range(start, start + n):\n                blobs, pages = self._get_image_blobs(fitz_doc, pdf_doc, 1, idx)\n                layout = self.layout_parser.parse(blobs[0])[0]\n                blocks = self._allocate_semantic(pages[0], layout)\n                if not blocks: continue\n\n                if self.with_columns:\n                    sub_groups = self._divide_blocks_into_groups(blocks)\n                    groups.extend(sub_groups)\n                else:\n                    groups.append(blocks)\n\n                if self.verbose:\n                    count = idx - start + 1\n                    if count % 50 == 0:\n                        elapse = round(time.time() - tic, 2)\n                        tic = time.time()\n                        print(f'process {count} pages used {elapse}sec...')\n\n        groups = self._allocate_continuous(groups)\n\n        if self.html_output_file:\n            self.save_to_html(groups, self.html_output_file)\n            return []\n\n        page_content = self._save_to_document(groups)\n        meta = {'source': os.path.basename(self.file_path)}\n        doc = Document(page_content=page_content, metadata=meta)\n        return [doc]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/elem_unstrcutured_loader.py",
    "content": "# flake8: noqa\n\"\"\"Loads PDF with semantic splilter.\"\"\"\nimport base64\nimport logging\nimport os\nfrom typing import List\n\nimport requests\nfrom langchain_community.docstore.document import Document\nfrom langchain_community.document_loaders.pdf import BasePDFLoader\n\nlogger = logging.getLogger(__name__)\n\n\ndef merge_partitions(partitions):\n    text_elem_sep = '\\n'\n    doc_content = []\n    is_first_elem = True\n    last_label = ''\n    prev_length = 0\n    metadata = dict(bboxes=[], pages=[], indexes=[], types=[])\n    for part in partitions:\n        label, text = part['type'], part['text']\n        extra_data = part['metadata']['extra_data']\n        if is_first_elem:\n            f_text = text + '\\n' if label == 'Title' else text\n            doc_content.append(f_text)\n            is_first_elem = False\n        else:\n            if last_label == 'Title' and label == 'Title':\n                doc_content.append('\\n' + text)\n            elif label == 'Title':\n                doc_content.append('\\n\\n' + text)\n            elif label == 'Table':\n                doc_content.append('\\n\\n' + text)\n            else:\n                if last_label == 'Table':\n                    doc_content.append(text_elem_sep * 2 + text)\n                else:\n                    doc_content.append(text_elem_sep + text)\n\n        last_label = label\n        metadata['bboxes'].extend(list(map(lambda x: list(map(int, x)), extra_data['bboxes'])))\n        metadata['pages'].extend(extra_data['pages'])\n        metadata['types'].extend(extra_data['types'])\n\n        indexes = extra_data['indexes']\n        up_indexes = [[s + prev_length, e + prev_length] for (s, e) in indexes]\n        metadata['indexes'].extend(up_indexes)\n        prev_length += len(doc_content[-1])\n\n    content = ''.join(doc_content)\n    return content, metadata\n\n\nclass ElemUnstructuredLoader(BasePDFLoader):\n    \"\"\"Loads a PDF with pypdf and chunks at character level. dummy version\n\n    Loader also stores page numbers in metadata.\n    \"\"\"\n\n    def __init__(self,\n                 file_name: str,\n                 file_path: str,\n                 unstructured_api_key: str = None,\n                 unstructured_api_url: str = None,\n                 force_ocr: bool = False,\n                 enable_formular: bool = True,\n                 filter_page_header_footer: bool = False,\n                 ocr_sdk_url: str = None,\n                 start: int = 0,\n                 n: int = None,\n                 verbose: bool = False,\n                 kwargs: dict = {}) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.unstructured_api_url = unstructured_api_url\n        self.unstructured_api_key = unstructured_api_key\n        self.force_ocr = force_ocr\n        self.enable_formular = enable_formular\n        self.filter_page_header_footer = filter_page_header_footer\n        self.ocr_sdk_url = ocr_sdk_url,\n        self.headers = {'Content-Type': 'application/json'}\n        self.file_name = file_name\n        self.start = start\n        self.n = n\n        self.extra_kwargs = kwargs\n        self.partitions = None\n        super().__init__(file_path)\n\n    def load(self) -> List[Document]:\n        \"\"\"Load given path as pages.\"\"\"\n        b64_data = base64.b64encode(open(self.file_path, 'rb').read()).decode()\n        parameters = {'start': self.start, 'n': self.n}\n        parameters.update(self.extra_kwargs)\n        # TODO: add filter_page_header_footer into payload when elt4llm is ready.\n        payload = dict(filename=os.path.basename(self.file_name),\n                       b64_data=[b64_data],\n                       mode='partition',\n                       force_ocr=self.force_ocr,\n                       enable_formula=self.enable_formular,\n                       ocr_sdk_url=self.ocr_sdk_url,\n                       parameters=parameters)\n\n        resp = requests.post(self.unstructured_api_url, headers=self.headers, json=payload)\n        if resp.status_code != 200:\n            raise Exception(\n                f'file partition {os.path.basename(self.file_name)} failed resp={resp.text}')\n\n        resp = resp.json()\n        if 200 != resp.get('status_code'):\n            logger.info(f'file partition {os.path.basename(self.file_name)} error resp={resp}')\n            raise Exception(f'file partition error {os.path.basename(self.file_name)} error resp={resp}')\n        partitions = resp['partitions']\n        if partitions:\n            logger.info(f'content_from_partitions')\n            self.partitions = partitions\n            content, metadata = merge_partitions(partitions)\n        elif resp.get('text'):\n            logger.info(f'content_from_text')\n            content = resp['text']\n            metadata = {\n                \"bboxes\": [],\n                \"pages\": [],\n                \"indexes\": [],\n                \"types\": [],\n            }\n        else:\n            logger.warning(f'content_is_empty resp={resp}')\n            content = ''\n            metadata = {}\n\n        logger.info(f'unstruct_return code={resp.get(\"status_code\")}')\n\n        if resp.get('b64_pdf'):\n            with open(self.file_path, 'wb') as f:\n                f.write(base64.b64decode(resp['b64_pdf']))\n\n        metadata['source'] = self.file_name\n        doc = Document(page_content=content, metadata=metadata)\n        return [doc]\n\n\nclass ElemUnstructuredLoaderV0(BasePDFLoader):\n    \"\"\"The appropriate parser is automatically selected based on the file format and OCR is supported\n    \"\"\"\n\n    def __init__(self,\n                 file_name: str,\n                 file_path: str,\n                 unstructured_api_key: str = None,\n                 unstructured_api_url: str = None,\n                 start: int = 0,\n                 n: int = None,\n                 verbose: bool = False,\n                 kwargs: dict = {}) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.unstructured_api_url = unstructured_api_url\n        self.unstructured_api_key = unstructured_api_key\n        self.start = start\n        self.n = n\n        self.headers = {'Content-Type': 'application/json'}\n        self.file_name = file_name\n        self.extra_kwargs = kwargs\n        super().__init__(file_path)\n\n    def load(self) -> List[Document]:\n        page_content, metadata = self.get_text_metadata()\n        doc = Document(page_content=page_content, metadata=metadata)\n        return [doc]\n\n    def get_text_metadata(self):\n        b64_data = base64.b64encode(open(self.file_path, 'rb').read()).decode()\n        payload = dict(filename=os.path.basename(self.file_name), b64_data=[b64_data], mode='text')\n        payload.update({'start': self.start, 'n': self.n})\n        payload.update(self.extra_kwargs)\n        resp = requests.post(self.unstructured_api_url, headers=self.headers, json=payload)\n        # 说明文件解析成功\n        if resp.status_code == 200 and resp.json().get('status_code') == 200:\n            res = resp.json()\n            return res['text'], {'source': self.file_name}\n        # 说明文件解析失败，pdf文件直接返回报错\n        if self.file_name.endswith('.pdf'):\n            raise Exception(\n                f'file text {os.path.basename(self.file_name)} failed resp={resp.text}')\n        # 非pdf文件，先将文件转为pdf格式，让后再执行partition模式解析文档\n        # 把文件转为pdf\n        resp = requests.post(self.unstructured_api_url,\n                             headers=self.headers,\n                             json={\n                                 'filename': os.path.basename(self.file_name),\n                                 'b64_data': [b64_data],\n                                 'mode': 'topdf',\n                             })\n        if resp.status_code != 200 or resp.json().get('status_code') != 200:\n            raise Exception(\n                f'file topdf {os.path.basename(self.file_name)} failed resp={resp.text}')\n        # 解析pdf文件\n        payload['mode'] = 'partition'\n        payload['b64_data'] = [resp.json()['b64_pdf']]\n        payload['filename'] = os.path.basename(self.file_name) + '.pdf'\n        resp = requests.post(self.unstructured_api_url, headers=self.headers, json=payload)\n        if resp.status_code != 200 or resp.json().get('status_code') != 200:\n            raise Exception(\n                f'file partition {os.path.basename(self.file_name)} failed resp={resp.text}')\n        res = resp.json()\n        partitions = res['partitions']\n        if not partitions:\n            raise Exception(\n                f'file partition empty {os.path.basename(self.file_name)} resp={resp.text}')\n        # 拼接结果为文本\n        content, _ = merge_partitions(partitions)\n        return content, {'source': self.file_name}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/parsers/__init__.py",
    "content": "from .image import LayoutParser\nfrom .ocr_client import OCRClient\nfrom .ellm_client import ELLMClient\n\n__all__ = [\n    'LayoutParser',\n    'OCRClient',\n    'ELLMClient'\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/parsers/ellm_client.py",
    "content": "# import base64\nimport copy\nfrom typing import Optional\n\nimport requests\n\n\nclass ELLMClient(object):\n\n    def __init__(self, api_base_url: Optional[str] = None):\n        self.ep = api_base_url\n        self.client = requests.Session()\n        self.timeout = 10000\n        self.params = {\n            'sort_filter_boxes': True,\n            'enable_huarong_box_adjust': True,\n            'support_long_image_segment': True,\n            'checkbox': ['std_checkbox'],\n            'rotateupright': True\n        }\n\n        self.scene_mapping = {\n            'doc': {\n                'det': 'general_text_det_mrcnn_v1.0',\n                'recog': 'transformer-v2.8-gamma-faster',\n                'ellm': 'ELLM'\n            },\n            'form': {\n                'det': 'general_text_det_v2.0',\n                'recog': 'general_text_reg_nb_v1.0_faster',\n                'ellm': 'ELLM'\n            },\n            'hand': {\n                'det': 'mrcnn-v5.1',\n                'recog': 'transformer-hand-v1.16-faster',\n                'ellm': 'ELLM'\n            }\n        }\n\n    def predict(self, inp):\n        scene = inp.pop('scene', 'form')\n        b64_image = inp.pop('b64_image')\n        ellm_schema = inp.pop('keys')\n        params = copy.deepcopy(self.params)\n        params.update(self.scene_mapping[scene])\n        params.update({'ellm_schema': ellm_schema})\n\n        req_data = {'data': [b64_image], 'param': params}\n\n        try:\n            r = self.client.post(url=self.ep, json=req_data, timeout=self.timeout)\n            return r.json()\n        except Exception as e:\n            return {'status_code': 400, 'status_message': str(e)}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/parsers/image.py",
    "content": "import base64\nimport json\n# import time\nfrom typing import List, Optional\n\nimport requests\nfrom langchain_community.document_loaders.blob_loaders import Blob\nfrom langchain.schema import Document\n\n\nclass LayoutParser(object):\n    \"\"\"Parse image layout structure.\n    \"\"\"\n\n    def __init__(self,\n                 api_key: Optional[str] = None,\n                 api_base_url: Optional[str] = None):\n        self.api_key = api_key\n        self.api_base_url = 'http://192.168.106.20:14569/predict'\n        self.class_name = ['印章', '图片', '标题', '段落', '表格', '页眉', '页码', '页脚']\n\n    def parse(self, blob: Blob) -> List[Document]:\n        b64_data = base64.b64encode(blob.as_bytes()).decode()\n        data = {'img': b64_data}\n        resp = requests.post('http://192.168.106.20:14569/predict', data=data)\n        content = resp.json()\n        doc = Document(page_content=json.dumps(content), metadata={})\n        return [doc]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/parsers/ocr_client.py",
    "content": "# import base64\nimport copy\nimport requests\nimport base64\nfrom typing import Any, Iterator, List, Mapping, Optional, Union\n\n\nclass OCRClient(object):\n    def __init__(self,\n                 api_base_url: Optional[str] = None):\n        # http://192.168.106.12:36001/v2/idp/idp_app/infer\n        self.ep = api_base_url\n        self.client = requests.Session()\n        self.timeout = 10000\n        self.params = {\n            'sort_filter_boxes': True,\n            'enable_huarong_box_adjust': True,\n            'support_long_image_segment': True,\n            'rotateupright': False,\n        }\n\n        self.scene_mapping = {\n            'doc': {\n                'det': 'general_text_det_mrcnn_v1.0',\n                'recog': 'transformer-v2.8-gamma-faster'\n            },\n            'form': {\n                'det': 'mrcnn-v5.1',\n                'recog': 'transformer-v2.8-gamma-faster'\n            },\n            'hand': {\n                'det': 'mrcnn-v5.1',\n                'recog': 'transformer-hand-v1.16-faster'\n            }\n        }\n\n    def predict(self, inp):\n        scene = inp.pop('scene', 'form')\n        b64_image = inp.pop('b64_image')\n        params = copy.deepcopy(self.params)\n        params.update(self.scene_mapping[scene])\n        params.update(inp)\n\n        req_data = {'data': [b64_image], 'param': params}\n\n        try:\n            r = self.client.post(url=self.ep,\n                             json=req_data,\n                             timeout=self.timeout)\n            return r.json()\n        except Exception as e:\n            return {'status_code': 400, 'status_message': str(e)}\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/parsers/test_image.py",
    "content": "# flake8: noqa\nimport io\nimport json\nimport logging\nimport os\nimport random\nimport tempfile\nimport time\nfrom abc import ABC\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom typing import Any, Iterator, List, Mapping, Optional, Union\nfrom urllib.parse import urlparse\n\nimport cv2\nimport fitz\nimport numpy as np\nimport pypdfium2\nimport requests\nfrom image import LayoutParser\nfrom langchain.document_loaders.blob_loaders import Blob\n\n\ndef norm_rect(bbox):\n    x0 = np.min([bbox[0], bbox[2]])\n    x1 = np.max([bbox[0], bbox[2]])\n    y0 = np.min([bbox[1], bbox[3]])\n    y1 = np.max([bbox[1], bbox[3]])\n    return np.asarray([x0, y0, x1, y1])\n\n\ndef merge_rects(bboxes):\n    x0 = np.min(bboxes[:, 0])\n    y0 = np.min(bboxes[:, 1])\n    x1 = np.max(bboxes[:, 2])\n    y1 = np.max(bboxes[:, 3])\n    return [x0, y0, x1, y1]\n\n\ndef get_image_blobs(pages, pdf_reader, n, start=0):\n    blobs = []\n    for pg in range(start, start + n):\n        bytes_img = None\n        page = pages.load_page(pg)\n        mat = fitz.Matrix(1, 1)\n        try:\n            pm = page.get_pixmap(matrix=mat, alpha=False)\n            bytes_img = pm.getPNGData()\n        except Exception:\n            # some pdf input cannot get render image from fitz\n            page = pdf_reader.get_page(pg)\n            pil_image = page.render().to_pil()\n            img_byte_arr = io.BytesIO()\n            pil_image.save(img_byte_arr, format='PNG')\n            bytes_img = img_byte_arr.getvalue()\n\n            blobs.append(Blob(data=bytes_img))\n    return blobs\n\n\ndef test():\n    file_path = './data/达梦数据库招股说明书_test_v1.pdf'\n    blob = Blob.from_path(file_path)\n    pages = None\n    image_blobs = []\n    with blob.as_bytes_io() as file_path:\n        pages = fitz.open(file_path)\n        pdf_reader = pypdfium2.PdfDocument(file_path, autoclose=True)\n        image_blobs = get_image_blobs(pages, pdf_reader)\n\n    assert len(image_blobs) == pages.page_count\n    layout = LayoutParser()\n    res = layout.parse(image_blobs[0])\n\n\ndef draw_polygon(image, bbox, text=None, color=(255, 0, 0), thickness=1):\n    bbox = bbox.astype(np.int32)\n    is_rect = bbox.shape[0] == 4\n    if is_rect:\n        start_point = (bbox[0], bbox[1])\n        end_point = (bbox[2], bbox[3])\n        image = cv2.rectangle(image, start_point, end_point, color, thickness)\n    else:\n        polys = [bbox.astype(np.int32).reshape((-1, 1, 2))]\n        cv2.polylines(image, polys, True, color=color, thickness=thickness)\n        start_point = (polys[0][0, 0, 0], polys[0][0, 0, 1])\n\n    if text:\n        fontFace = cv2.FONT_HERSHEY_SIMPLEX\n        fontScale = 0.5\n        color = (0, 0, 255)\n        image = cv2.putText(image, text, start_point, fontFace, fontScale,\n                            color, 1)\n\n    return image\n\n\ndef test_vis():\n    # file_path = './data/达梦数据库招股说明书_test_v1.pdf'\n    file_path = './data/pdf_input/《中国药典》2020年版 一部.pdf'\n    output_prefix = 'zhongguoyaodian_2020_v1'\n    start, end, n = 70, 80, 10\n    blob = Blob.from_path(file_path)\n    pages = None\n    image_blobs = []\n    with blob.as_bytes_io() as file_path:\n        pages = fitz.open(file_path)\n        pdf_reader = pypdfium2.PdfDocument(file_path, autoclose=True)\n        image_blobs = get_image_blobs(pages, pdf_reader, n, start)\n\n    assert len(image_blobs) == n\n\n    for i, blob in enumerate(image_blobs):\n        idx = i + start\n        # blob = image_blobs[2]\n        layout = LayoutParser()\n        out = layout.parse(blob)\n        res = json.loads(out[0].page_content)\n        bboxes = []\n        labels = []\n        for r in res:\n            bboxes.append(r['bbox'])\n            labels.append(str(r['category_id']))\n\n        bboxes = np.asarray(bboxes)\n\n        bytes_arr = np.frombuffer(blob.as_bytes(), dtype=np.uint8)\n        image = cv2.imdecode(bytes_arr, flags=1)\n        for bbox, text in zip(bboxes, labels):\n            image = draw_polygon(image, bbox, text)\n\n        outf = f'./data/{output_prefix}_layout_p{idx+1}_vis.png'\n        cv2.imwrite(outf, image)\n\n\ndef order_by_tbyx(block_info, th=10):\n    \"\"\"\n      block_info: [(b0, b1, b2, b3, text, x, y)+]\n      th: threshold of the position threshold\n    \"\"\"\n    # sort using y1 first and then x1\n    res = sorted(block_info, key=lambda b: (b[1], b[0]))\n    for i in range(len(res) - 1):\n        for j in range(i, 0, -1):\n            # restore the order using the\n            if (abs(res[j + 1][1] - res[j][1]) < th\n                    and (res[j + 1][0] < res[j][0])):\n                tmp = deepcopy(res[j])\n                res[j] = deepcopy(res[j + 1])\n                res[j + 1] = deepcopy(tmp)\n            else:\n                break\n    return res\n\n\ndef test_vis2():\n    # file_path = './data/达梦数据库招股说明书_test_v1.pdf'\n    file_path = './data/pdf_input/达梦数据库招股说明书.pdf'\n    output_prefix = 'dameng_pageblock'\n\n    start = 0\n    end = 10\n    n = end - start\n    blob = Blob.from_path(file_path)\n    pages = None\n    image_blobs = []\n    with blob.as_bytes_io() as file_path:\n        pages = fitz.open(file_path)\n        pdf_reader = pypdfium2.PdfDocument(file_path, autoclose=True)\n        image_blobs = get_image_blobs(pages, pdf_reader, n, start)\n\n    assert len(image_blobs) == pages.page_count\n\n    for i, blob in enumerate(image_blobs):\n        idx = i + start\n        page = pages.load_page(idx)\n\n        rect = page.rect\n        print('rect', rect)\n        o = 10\n        b0 = np.asarray([rect.x0 + o, rect.y0 + o, rect.x1 - o, rect.y1 - o])\n\n        bytes_arr = np.frombuffer(blob.as_bytes(), dtype=np.uint8)\n        image = cv2.imdecode(bytes_arr, flags=1)\n\n        image = draw_polygon(image, b0, '0.0')\n\n        textpage = page.get_textpage()\n        blocks = textpage.extractBLOCKS()\n        IMG_BLOCK_TYPE = 1\n\n        # blocks = order_by_tbyx(blocks)\n        bboxes = []\n        for off, b in enumerate(blocks):\n            label = 'text' if b[-1] != IMG_BLOCK_TYPE else 'image'\n            label = f'{label}-{off}'\n            print('block', b, label)\n            bbox = np.asarray([b[0], b[1], b[2], b[3]])\n            bboxes.append(bbox)\n\n            image = draw_polygon(image, bbox, label)\n\n        if bboxes:\n            b1 = merge_rects(np.asarray(bboxes))\n            b1 = np.asarray(b1)\n            image = draw_polygon(image, b1, '0.1')\n\n        outf = f'./data/{output_prefix}_p{idx}_vis.png'\n        cv2.imwrite(outf, image)\n\n\ndef test_vis3():\n    file_path = './data/pdf_input/《中国药典》2020年版 一部.pdf'\n\n    start = 50\n    end = 60\n    n = end - start\n    output_prefix = 'zhongguoyaodian_2020_v1'\n\n    blob = Blob.from_path(file_path)\n    pages = None\n    image_blobs = []\n    with blob.as_bytes_io() as file_path:\n        pages = fitz.open(file_path)\n        pdf_reader = pypdfium2.PdfDocument(file_path, autoclose=True)\n        image_blobs = get_image_blobs(pages, pdf_reader, n, start=50)\n\n    assert len(image_blobs) == n\n\n    for i, blob in enumerate(image_blobs):\n        idx = i + start\n        page = pages.load_page(idx)\n\n        rect = page.rect\n        print('rect', rect)\n        o = 10\n        b0 = np.asarray([rect.x0 + o, rect.y0 + o, rect.x1 - o, rect.y1 - o])\n\n        bytes_arr = np.frombuffer(blob.as_bytes(), dtype=np.uint8)\n        image = cv2.imdecode(bytes_arr, flags=1)\n\n        image = draw_polygon(image, b0, '0.0')\n\n        rotation_matrix = np.asarray(page.rotation_matrix).reshape((3, 2))\n        c1 = (rotation_matrix[0, 0] - 1) <= 1e-6\n        c2 = (rotation_matrix[1, 1] - 1) <= 1e-6\n        is_rotated = c1 and c2\n\n        textpage = page.get_textpage()\n        blocks = textpage.extractBLOCKS()\n        IMG_BLOCK_TYPE = 1\n\n        # blocks = order_by_tbyx(blocks)\n        bboxes = []\n        for off, b in enumerate(blocks):\n            label = 'text' if b[-1] != IMG_BLOCK_TYPE else 'image'\n            label = f'{label}-{off}'\n            print('block', b, label)\n            bbox = np.asarray([b[0], b[1], b[2], b[3]])\n\n            aug_bbox = bbox.reshape((-1, 2))\n            padding = np.ones((len(aug_bbox), 1))\n            aug_bbox = np.hstack([aug_bbox, padding])\n            new_bbox = np.dot(aug_bbox, rotation_matrix).reshape(-1)\n\n            new_bbox = norm_rect(new_bbox)\n\n            print('new_bboxes', new_bbox)\n            bboxes.append(new_bbox)\n\n            image = draw_polygon(image, new_bbox, label)\n\n        print(bboxes)\n        if bboxes:\n            b1 = merge_rects(np.asarray(bboxes))\n            b1 = np.asarray(b1)\n            image = draw_polygon(image, b1, '0.1')\n\n        outf = f'./data/{output_prefix}_p{idx}_vis.png'\n        cv2.imwrite(outf, image)\n\n\n# test_vis3()\n# test_vis2()\ntest_vis()\n# test()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/document_loaders/universal_kv.py",
    "content": "# flake8: noqa\n\"\"\"Loads PDF with semantic splilter.\"\"\"\nimport base64\nimport json\nimport os\nfrom collections import defaultdict\nfrom typing import List\n\nimport cv2\nimport filetype\nimport fitz\nimport numpy as np\nfrom bisheng_langchain.document_loaders.parsers import ELLMClient\nfrom langchain_community.docstore.document import Document\nfrom langchain_community.document_loaders.base import BaseLoader\nfrom PIL import Image\n\n\ndef convert_base64(image):\n    image_binary = cv2.imencode('.jpg', image)[1].tobytes()\n    x = base64.b64encode(image_binary)\n    return x.decode('ascii').replace('\\n', '')\n\n\ndef transpdf2png(pdf_file):\n    pdf_bytes = open(pdf_file, 'rb').read()\n    pdf = fitz.Document(stream=pdf_bytes, filetype='pdf')\n    dpis = [72, 144, 200]\n\n    pdf_images = dict()\n    for page in pdf:\n        pix = None\n        for dpi in dpis:\n            pix = page.get_pixmap(dpi=dpi)\n            if min(pix.width, pix.height) >= 1600: break\n\n        mode = 'RGBA' if pix.alpha else 'RGB'\n        img = Image.frombytes(mode, [pix.width, pix.height], pix.samples)\n        # RGB to BGR\n        img = np.array(img)[:, :, ::-1]\n        img_name = 'page_{:03d}'.format(page.number)\n        pdf_images[img_name] = img\n\n    return pdf_images\n\n\nclass UniversalKVLoader(BaseLoader):\n    \"\"\"Extract key-value from pdf or image.\n    \"\"\"\n\n    def __init__(self,\n                 file_path: str,\n                 ellm_model_url: str = None,\n                 schema='',\n                 max_pages=30,\n                 verbose: bool = False) -> None:\n        \"\"\"Initialize with a file path.\"\"\"\n        self.file_path = file_path\n        self.schema = schema\n        self.max_pages = max_pages\n        self.ellm_model = ELLMClient(ellm_model_url)\n        super().__init__()\n\n    def load(self) -> List[Document]:\n        \"\"\"Load given path as pages.\"\"\"\n        mime_type = filetype.guess(self.file_path).mime\n        if mime_type.endswith('pdf'):\n            file_type = 'pdf'\n        elif mime_type.startswith('image'):\n            file_type = 'img'\n        else:\n            raise ValueError(f'file type {file_type} is not support.')\n\n        if file_type == 'img':\n            bytes_data = open(self.file_path, 'rb').read()\n            b64data = base64.b64encode(bytes_data).decode()\n            payload = {'b64_image': b64data, 'keys': self.schema}\n            resp = self.ellm_model.predict(payload)\n\n            if 'code' in resp and resp['code'] == 200:\n                key_values = resp['result']['ellm_result']\n            else:\n                raise ValueError(f'universal kv load failed: {resp}')\n\n            kv_results = defaultdict(list)\n            for key, value in key_values.items():\n                kv_results[key].extend([v['text'] for v in value])\n\n            content = json.dumps(kv_results, indent=2, ensure_ascii=False)\n            file_name = os.path.basename(self.file_path)\n            meta = {'source': file_name}\n            doc = Document(page_content=content, metadata=meta)\n            return [doc]\n\n        elif file_type == 'pdf':\n            pdf_images = transpdf2png(self.file_path)\n\n            kv_results = defaultdict(list)\n            for index, pdf_name in enumerate(pdf_images):\n                page = int(pdf_name.split('page_')[-1])\n                if page > self.max_pages:\n                    continue\n\n                b64data = convert_base64(pdf_images[pdf_name])\n                payload = {'b64_image': b64data, 'keys': self.schema}\n                resp = self.ellm_model.predict(payload)\n\n                if 'code' in resp and resp['code'] == 200:\n                    key_values = resp['result']['ellm_result']\n                else:\n                    raise ValueError(f'universal kv load failed: {resp}')\n\n                for key, value in key_values.items():\n                    kv_results[key].extend([v['text'] for v in value])\n\n            content = json.dumps(kv_results, indent=2, ensure_ascii=False)\n            file_name = os.path.basename(self.file_path)\n            meta = {'source': file_name}\n            doc = Document(page_content=content, metadata=meta)\n            return [doc]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/__init__.py",
    "content": "from .host_embedding import (BGEZhEmbedding, CustomHostEmbedding, GTEEmbedding, HostEmbeddings,\n                             ME5Embedding, JINAEmbedding)\nfrom .wenxin import WenxinEmbeddings\nfrom .huggingfacemultilingual import HuggingFaceMultilingualEmbeddings\nfrom .huggingfacegte import HuggingFaceGteEmbeddings\n\n__all__ = [\n    'WenxinEmbeddings', 'ME5Embedding', 'BGEZhEmbedding', 'GTEEmbedding',\n    'HostEmbeddings', 'CustomHostEmbedding', 'JINAEmbedding',\n    'HuggingFaceMultilingualEmbeddings', 'HuggingFaceGteEmbeddings'\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/host_embedding.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import Any, Callable, Dict, List, Optional, Tuple, Union\n\nimport requests\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import model_validator, BaseModel, Field\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nlogger = logging.getLogger(__name__)\n\n\ndef _create_retry_decorator(embeddings: HostEmbeddings) -> Callable[[Any], Any]:\n    min_seconds = 4\n    max_seconds = 10\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(embeddings.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(Exception)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef embed_with_retry(embeddings: HostEmbeddings, **kwargs: Any) -> Any:\n    \"\"\"Use tenacity to retry the embedding call.\"\"\"\n    retry_decorator = _create_retry_decorator(embeddings)\n\n    @retry_decorator\n    def _embed_with_retry(**kwargs: Any) -> Any:\n        return embeddings.embed(**kwargs)\n\n    return _embed_with_retry(**kwargs)\n\n\nclass HostEmbeddings(BaseModel, Embeddings):\n    \"\"\"host embedding models.\n    \"\"\"\n\n    client: Optional[Any] = None  #: :meta private:\n    \"\"\"Model name to use.\"\"\"\n    model: str = 'embedding-host'\n    host_base_url: str = None\n\n    deployment: Optional[str] = 'default'\n\n    embedding_ctx_length: Optional[int] = 6144\n    \"\"\"The maximum number of tokens to embed at once.\"\"\"\n    \"\"\"Maximum number of texts to embed in each batch\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = 200\n    \"\"\"Timeout in seconds for the OpenAPI request.\"\"\"\n\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n\n    verbose: Optional[bool] = False\n\n    url_ep: Optional[str] = None\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['host_base_url'] = get_from_dict_or_env(values, 'host_base_url', 'HostBaseUrl')\n        model = values['model']\n        try:\n            url = values['host_base_url']\n            values['url_ep'] = f'{url}/{model}/infer'\n        except Exception:\n            raise Exception(f'Failed to set url ep failed for model {model}')\n\n        try:\n            values['client'] = requests.post\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _invocation_params(self) -> Dict:\n        api_args = {\n            'model': self.model,\n            'request_timeout': self.request_timeout,\n            **self.model_kwargs,\n        }\n        return api_args\n\n    def embed(self, texts: List[str], **kwargs) -> List[List[float]]:\n        emb_type = kwargs.get('type', 'raw')\n        inp = {'texts': texts, 'model': self.model, 'type': emb_type}\n        if self.verbose:\n            print('payload', inp)\n\n        max_text_to_split = 200\n        outp = None\n\n        start_index = 0\n        len_text = len(texts)\n        while start_index < len_text:\n            inp_local = {\n                'texts': texts[start_index:min(start_index + max_text_to_split, len_text)],\n                'model': self.model,\n                'type': emb_type\n            }\n            try:\n                outp_single = self.client(url=self.url_ep,\n                                          json=inp_local,\n                                          timeout=self.request_timeout).json()\n                if outp is None:\n                    outp = outp_single\n                else:\n                    outp['embeddings'] += outp_single['embeddings']\n            except requests.exceptions.Timeout:\n                raise Exception(f'timeout in host embedding infer, url=[{self.url_ep}]')\n            except Exception as e:\n                raise Exception(f'exception in host embedding infer: [{e}]')\n\n            if outp_single['status_code'] != 200:\n                raise ValueError(f\"API returned an error: {outp['status_message']}\")\n            start_index += max_text_to_split\n        return outp['embeddings']\n\n    def embed_documents(self,\n                        texts: List[str],\n                        chunk_size: Optional[int] = 0) -> List[List[float]]:\n        if not texts:\n            return []\n        \"\"\"Embed search docs.\"\"\"\n        texts = [text for text in texts if text]\n        embeddings = embed_with_retry(self, texts=texts, type='doc')\n        return embeddings\n\n    def embed_query(self, text: str) -> List[float]:\n        embeddings = embed_with_retry(self, texts=[text], type='query')\n        return embeddings[0]\n\n\nclass ME5Embedding(HostEmbeddings):\n    model: str = 'multi-e5'\n    embedding_ctx_length: int = 512\n\n\nclass BGEZhEmbedding(HostEmbeddings):\n    model: str = 'bge-zh'\n    embedding_ctx_length: int = 512\n\n\nclass GTEEmbedding(HostEmbeddings):\n    model: str = 'gte'\n    embedding_ctx_length: int = 512\n\n\nclass JINAEmbedding(HostEmbeddings):\n    model: str = 'jina'\n    embedding_ctx_length: int = 512\n\n\nclass CustomHostEmbedding(HostEmbeddings):\n    model: str = Field('custom-embedding', alias='model')\n    embedding_ctx_length: int = 512\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['host_base_url'] = get_from_dict_or_env(values, 'host_base_url', 'HostBaseUrl')\n        try:\n            values['url_ep'] = values['host_base_url']\n        except Exception:\n            raise Exception('Failed to set url ep for custom host embedding')\n\n        try:\n            values['client'] = requests.post\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/huggingfacegte.py",
    "content": "from typing import Any, Dict, List, Optional\n\nimport requests\nfrom langchain_core.embeddings import Embeddings\nfrom pydantic import BaseModel, Extra, Field\nDEFAULT_Multilingual_MODEL = \"thenlper/gte-large-zh\"\n\n\nclass HuggingFaceGteEmbeddings(BaseModel, Embeddings):\n    \"\"\"HuggingFace BGE sentence_transformers embedding models.\n\n    To use, you should have the ``sentence_transformers`` python package installed.\n\n    Example:\n        .. code-block:: python\n\n            from langchain_community.embeddings import HuggingFaceBgeEmbeddings\n\n            model_name = \"BAAI/bge-large-en\"\n            model_kwargs = {'device': 'cpu'}\n            encode_kwargs = {'normalize_embeddings': True}\n            hf = HuggingFaceBgeEmbeddings(\n                \n                model_name=model_name,\n                model_kwargs=model_kwargs,\n                encode_kwargs=encode_kwargs\n            )\n    \"\"\"\n\n    client: Any = None  #: :meta private:\n    model_name: str = DEFAULT_Multilingual_MODEL\n    \"\"\"Model name to use.\"\"\"\n    cache_folder: Optional[str] = None\n    \"\"\"Path to store models.\n    Can be also set by SENTENCE_TRANSFORMERS_HOME environment variable.\"\"\"\n    model_kwargs: Dict[str, Any] = Field(default_factory=dict)\n    \"\"\"Keyword arguments to pass to the model.\"\"\"\n    encode_kwargs: Dict[str, Any] = Field(default_factory=dict)\n    \"\"\"Keyword arguments to pass when calling the `encode` method of the model.\"\"\"\n    # query_instruction: str = DEFAULT_QUERY_BGE_INSTRUCTION_EN\n    \"\"\"Instruction to use for embedding query.\"\"\"\n\n    def __init__(self, **kwargs: Any):\n        \"\"\"Initialize the sentence_transformer.\"\"\"\n        super().__init__(**kwargs)\n        try:\n            import sentence_transformers\n\n        except ImportError as exc:\n            raise ImportError(\n                \"Could not import sentence_transformers python package. \"\n                \"Please install it with `pip install sentence_transformers`.\"\n            ) from exc\n\n        self.client = sentence_transformers.SentenceTransformer(\n            self.model_name, cache_folder=self.cache_folder, **self.model_kwargs\n        )\n        # if \"-zh\" in self.model_name:\n        #     self.query_instruction = DEFAULT_QUERY_BGE_INSTRUCTION_ZH\n\n    # class Config:\n    #     \"\"\"Configuration for this pydantic object.\"\"\"\n\n    #     extra = Extra.forbid\n\n    def embed_documents(self, texts: List[str]) -> List[List[float]]:\n        \"\"\"Compute doc embeddings using a HuggingFace transformer model.\n\n        Args:\n            texts: The list of texts to embed.\n\n        Returns:\n            List of embeddings, one for each text.\n        \"\"\"\n        texts = [t.replace(\"\\n\", \" \") for t in texts]\n        embeddings = self.client.encode(texts, **self.encode_kwargs)\n        return embeddings.tolist()\n\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"Compute query embeddings using a HuggingFace transformer model.\n\n        Args:\n            text: The text to embed.\n\n        Returns:\n            Embeddings for the text.\n        \"\"\"\n        text = text.replace(\"\\n\", \" \")\n        embedding = self.client.encode(text, **self.encode_kwargs\n        )\n        return embedding.tolist()\n\n\n\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/huggingfacemultilingual.py",
    "content": "from typing import Any, Dict, List, Optional\n\nimport requests\nfrom langchain_core.embeddings import Embeddings\nfrom pydantic import BaseModel, Extra, Field\nDEFAULT_Multilingual_MODEL = \"intfloat/multilingual-e5-large\"\n\n\nclass HuggingFaceMultilingualEmbeddings(BaseModel, Embeddings):\n    \"\"\"HuggingFace BGE sentence_transformers embedding models.\n\n    To use, you should have the ``sentence_transformers`` python package installed.\n\n    Example:\n        .. code-block:: python\n\n            from langchain_community.embeddings import HuggingFaceBgeEmbeddings\n\n            model_name = \"BAAI/bge-large-en\"\n            model_kwargs = {'device': 'cpu'}\n            encode_kwargs = {'normalize_embeddings': True}\n            hf = HuggingFaceBgeEmbeddings(\n                \n                model_name=model_name,\n                model_kwargs=model_kwargs,\n                encode_kwargs=encode_kwargs\n            )\n    \"\"\"\n\n    client: Any = None  #: :meta private:\n    model_name: str = DEFAULT_Multilingual_MODEL\n    \"\"\"Model name to use.\"\"\"\n    cache_folder: Optional[str] = None\n    \"\"\"Path to store models.\n    Can be also set by SENTENCE_TRANSFORMERS_HOME environment variable.\"\"\"\n    model_kwargs: Dict[str, Any] = Field(default_factory=dict)\n    \"\"\"Keyword arguments to pass to the model.\"\"\"\n    encode_kwargs: Dict[str, Any] = Field(default_factory=dict)\n    \"\"\"Keyword arguments to pass when calling the `encode` method of the model.\"\"\"\n    # query_instruction: str = DEFAULT_QUERY_BGE_INSTRUCTION_EN\n    \"\"\"Instruction to use for embedding query.\"\"\"\n\n    def __init__(self, **kwargs: Any):\n        \"\"\"Initialize the sentence_transformer.\"\"\"\n        super().__init__(**kwargs)\n        try:\n            import sentence_transformers\n\n        except ImportError as exc:\n            raise ImportError(\n                \"Could not import sentence_transformers python package. \"\n                \"Please install it with `pip install sentence_transformers`.\"\n            ) from exc\n\n        self.client = sentence_transformers.SentenceTransformer(\n            self.model_name, cache_folder=self.cache_folder, **self.model_kwargs\n        )\n        # if \"-zh\" in self.model_name:\n        #     self.query_instruction = DEFAULT_QUERY_BGE_INSTRUCTION_ZH\n\n    # class Config:\n    #     \"\"\"Configuration for this pydantic object.\"\"\"\n\n    #     extra = Extra.forbid\n\n    def embed_documents(self, texts: List[str]) -> List[List[float]]:\n        \"\"\"Compute doc embeddings using a HuggingFace transformer model.\n\n        Args:\n            texts: The list of texts to embed.\n\n        Returns:\n            List of embeddings, one for each text.\n        \"\"\"\n        texts = [t.replace(\"\\n\", \" \") for t in texts]\n        textschange = []\n        for t in texts:\n            textschange.append(\"passage: \" + t)\n        # print(textschange)\n        \n        embeddings = self.client.encode(textschange, **self.encode_kwargs)\n        return embeddings.tolist()\n\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"Compute query embeddings using a HuggingFace transformer model.\n\n        Args:\n            text: The text to embed.\n\n        Returns:\n            Embeddings for the text.\n        \"\"\"\n        text = text.replace(\"\\n\", \" \")\n        text = \"query: \" + text\n        # print(text)\n        embedding = self.client.encode(text, **self.encode_kwargs\n        )\n        return embedding.tolist()\n    \n    \n\n\n\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/interface/__init__.py",
    "content": "from .wenxin import EmbeddingClient as WenxinEmbeddingClient\n\n__all__ = ['WenxinEmbeddingClient']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/interface/types.py",
    "content": "from typing import Any, Dict, List, Union\n\nfrom pydantic import BaseModel\n\n\nclass EmbeddingInput(BaseModel):\n    model: str\n    input: Union[str, List[str]]\n\n\nclass Embedding(BaseModel):\n    object: str = 'embedding'\n    embedding: List[float]\n    index: int\n\n\nclass EmbeddingOutput(BaseModel):\n    status_code: int\n    status_message: str = 'success'\n    object: str = None\n    data: List[Embedding] = []\n    model: str = None\n    usage: Dict[str, Any] = None\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/interface/wenxin.py",
    "content": "import json\n\nimport numpy as np\nimport requests\nfrom requests.exceptions import HTTPError\n\n\ndef get_access_token(api_key, sec_key):\n    url = (f'https://aip.baidubce.com/oauth/2.0/token?'\n           f'grant_type=client_credentials'\n           f'&client_id={api_key}&client_secret={sec_key}')\n\n    payload = json.dumps('')\n    headers = {\n        'Content-Type': 'application/json',\n        'Accept': 'application/json'\n    }\n\n    response = requests.request('POST', url, headers=headers, data=payload)\n    return response.json().get('access_token')\n\n\nclass EmbeddingClient(object):\n\n    def __init__(self, api_key, sec_key, **kwargs):\n        self.api_key = api_key\n        self.sec_key = sec_key\n        self.ep_url = ('https://aip.baidubce.com/rpc/2.0/ai_custom/v1/'\n                       'wenxinworkshop/embeddings')\n        self.headers = {'Content-Type': 'application/json'}\n        self.max_text_tokens = 384\n        self.max_text_num = 16\n        self.drop_exceed_token = kwargs.get('drop_exceed_token', True)\n\n    def create(self, model, input, verbose=False, **kwargs):\n        texts = input\n        if isinstance(texts, str):\n            texts = [texts]\n\n        if self.drop_exceed_token:\n            texts = [t[:self.max_text_tokens] for t in texts]\n\n        cond = np.all([len(text) <= self.max_text_tokens for text in texts])\n        if not cond:\n            raise HTTPError('text exceed max token size 384')\n\n        token = get_access_token(self.api_key, self.sec_key)\n        endpoint = f'{self.ep_url}/{model}?access_token={token}'\n\n        def _call(sub_texts):\n            payload = json.dumps({'input': sub_texts})\n            response = requests.post(endpoint,\n                                     headers=self.headers,\n                                     data=payload)\n            status_message = 'success'\n            status_code = response.status_code\n            usage = {'prompt_tokens': 0, 'total_tokens': 0}\n            data = []\n            if status_code == 200:\n                try:\n                    info = json.loads(response.text)\n                    status_code = info.get('error_code', 200)\n                    status_message = info.get('error_msg', status_message)\n                    if status_code == 200:\n                        data = info['data']\n                        usage = info['usage']\n                    else:\n                        raise HTTPError(status_message)\n                except Exception as e:\n                    raise HTTPError(str(e))\n            else:\n                raise HTTPError('requests error')\n            return data, usage\n\n        data = []\n        usage = {'prompt_tokens': 0, 'total_tokens': 0}\n\n        for i in range(0, len(texts), self.max_text_num):\n            sub_texts = texts[i:(i + self.max_text_num)]\n            sub_data, sub_usage = _call(sub_texts)\n            data.extend(sub_data)\n            usage['prompt_tokens'] += sub_usage['prompt_tokens']\n            usage['total_tokens'] += sub_usage['total_tokens']\n\n        outp = dict(status_code=200, model=model, data=data, usage=usage)\n        return outp\n"
  },
  {
    "path": "src/backend/bisheng_langchain/embeddings/wenxin.py",
    "content": "from __future__ import annotations\n\nimport logging\n# import warnings\nfrom typing import Any, Callable, Dict, List, Optional, Tuple, Union\n\n# import numpy as np\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.utils import get_from_dict_or_env\nfrom pydantic import ConfigDict, model_validator, BaseModel, Field\nfrom requests.exceptions import HTTPError\nfrom tenacity import (before_sleep_log, retry, retry_if_exception_type, stop_after_attempt,\n                      wait_exponential)\n\nlogger = logging.getLogger(__name__)\n\n\ndef _create_retry_decorator(embeddings: WenxinEmbeddings) -> Callable[[Any], Any]:\n    min_seconds = 4\n    max_seconds = 10\n    # Wait 2^x * 1 second between each retry starting with\n    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards\n    return retry(\n        reraise=True,\n        stop=stop_after_attempt(embeddings.max_retries),\n        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),\n        retry=(retry_if_exception_type(HTTPError)),\n        before_sleep=before_sleep_log(logger, logging.WARNING),\n    )\n\n\ndef embed_with_retry(embeddings: WenxinEmbeddings, **kwargs: Any) -> Any:\n    \"\"\"Use tenacity to retry the embedding call.\"\"\"\n    retry_decorator = _create_retry_decorator(embeddings)\n\n    @retry_decorator\n    def _embed_with_retry(**kwargs: Any) -> Any:\n        return embeddings.embed(**kwargs)\n\n    return _embed_with_retry(**kwargs)\n\n\nclass WenxinEmbeddings(BaseModel, Embeddings):\n    \"\"\"Wenxin embedding models.\n\n    To use, the environment variable ``WENXIN_API_KEY`` and ``WENXIN_SECRET_KEY``\n    set with your API key or pass it as a named parameter to the constructor.\n\n    Example:\n        .. code-block:: python\n            from bisheng_langchain.embeddings import WenxinEmbeddings\n            wenxin_embeddings = WenxinEmbeddings(\n               wenxin_api_key=\"my-api-key\",\n               wenxin_secret_key='xxx')\n\n    \"\"\"\n\n    client: Optional[Any] = None  #: :meta private:\n    model: str = 'embedding-v1'\n\n    deployment: Optional[str] = 'default'\n    wenxin_api_key: Optional[str] = None\n    wenxin_secret_key: Optional[str] = None\n\n    embedding_ctx_length: Optional[int] = 6144\n    \"\"\"The maximum number of tokens to embed at once.\"\"\"\n    \"\"\"Maximum number of texts to embed in each batch\"\"\"\n    max_retries: Optional[int] = 6\n    \"\"\"Maximum number of retries to make when generating.\"\"\"\n    request_timeout: Optional[Union[float, Tuple[float, float]]] = None\n    \"\"\"Timeout in seconds for the OpenAPI request.\"\"\"\n\n    model_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict)\n    \"\"\"Holds any model parameters valid for `create` call not explicitly specified.\"\"\"\n    model_config = ConfigDict(extra='forbid')\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        values['wenxin_api_key'] = get_from_dict_or_env(values, 'wenxin_api_key', 'WENXIN_API_KEY')\n        values['wenxin_secret_key'] = get_from_dict_or_env(\n            values,\n            'wenxin_secret_key',\n            'WENXIN_SECRET_KEY',\n        )\n\n        api_key = values['wenxin_api_key']\n        sec_key = values['wenxin_secret_key']\n        try:\n            from .interface import WenxinEmbeddingClient\n            values['client'] = WenxinEmbeddingClient(api_key=api_key, sec_key=sec_key)\n        except AttributeError:\n            raise ValueError('Try upgrading it with `pip install --upgrade requests`.')\n        return values\n\n    @property\n    def _invocation_params(self) -> Dict:\n        wenxin_args = {\n            'model': self.model,\n            'request_timeout': self.request_timeout,\n            **self.model_kwargs,\n        }\n\n        return wenxin_args\n\n    def embed(self, texts: List[str]) -> List[List[float]]:\n        inp = {'input': texts, 'model': self.model}\n        outp = self.client.create(**inp)\n        if outp['status_code'] != 200:\n            raise ValueError(f\"Wenxin API returned an error: {outp['status_message']}\")\n        return [e['embedding'] for e in outp['data']]\n\n    def embed_documents(self,\n                        texts: List[str],\n                        chunk_size: Optional[int] = 0) -> List[List[float]]:\n        embeddings = embed_with_retry(self, texts=texts)\n        return embeddings\n\n    def embed_query(self, text: str) -> List[float]:\n        \"\"\"Call out to OpenAI's embedding endpoint for embedding query text.\n\n        Args:\n            text: The text to embed.\n\n        Returns:\n            Embedding for the text.\n        \"\"\"\n\n        embeddings = embed_with_retry(self, texts=[text])\n        return embeddings[0]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/agent_types/__init__.py",
    "content": "from bisheng_langchain.gpts.agent_types.llm_functions_agent import (\n    get_openai_functions_agent_executor, \n    get_qwen_local_functions_agent_executor\n)\nfrom bisheng_langchain.gpts.agent_types.llm_react_agent import get_react_agent_executor\n\n\n__all__ = [\n    \"get_openai_functions_agent_executor\",\n    \"get_qwen_local_functions_agent_executor\",\n    \"get_react_agent_executor\"\n]"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/agent_types/llm_functions_agent.py",
    "content": "import json\nimport re\n\nfrom bisheng_langchain.gpts.message_types import LiberalFunctionMessage, LiberalToolMessage\nfrom langchain.tools import BaseTool\nfrom langchain.tools.render import format_tool_to_openai_tool\nfrom langchain_core.language_models.base import LanguageModelLike\nfrom langchain_core.messages import FunctionMessage, SystemMessage, ToolMessage\nfrom langgraph.graph import END\nfrom langgraph.graph.message import MessageGraph\nfrom langgraph.prebuilt import ToolNode\nfrom langgraph.utils.runnable import RunnableCallable\n\n\ndef get_openai_functions_agent_executor(tools: list[BaseTool], llm: LanguageModelLike,\n                                        system_message: str, interrupt_before_action: bool,\n                                        **kwargs):\n\n    def _get_messages(messages):\n        msgs = []\n        for m in messages:\n            if isinstance(m, LiberalToolMessage):\n                _dict = m.dict()\n                _dict['content'] = str(_dict['content'])\n                m_c = ToolMessage(**_dict)\n                msgs.append(m_c)\n            else:\n                msgs.append(m)\n\n        return [SystemMessage(content=system_message)] + msgs\n\n    if tools:\n        llm_with_tools = llm.bind(tools=[format_tool_to_openai_tool(t) for t in tools])\n    else:\n        llm_with_tools = llm\n\n    agent = _get_messages | llm_with_tools\n    tool_nodes = ToolNode(tools=tools)\n\n    # Define the function that determines whether to continue or not\n    def should_continue(messages):\n        last_message = messages[-1]\n        # If there is no function call, then we finish\n        if 'tool_calls' not in last_message.additional_kwargs:\n            if '|<instruct>|' in system_message:\n                # cohere model\n                pattern = r'Answer:(.+)\\nGrounded answer'\n                match = re.search(pattern, last_message.content)\n                if match:\n                    last_message.content = match.group(1)\n            return 'end'\n        # Otherwise if there is, we continue\n        else:\n            return 'continue'\n\n    # Define the function to execute tools\n    async def acall_tool(messages):\n        tool_messages = await tool_nodes.ainvoke(messages, None, store=None)\n        return tool_messages\n\n    def call_tool(messages):\n        tool_messages = tool_nodes.invoke(messages, config=None, store=None)\n        return tool_messages\n\n    workflow = MessageGraph()\n\n    # Define the two nodes we will cycle between\n    workflow.add_node('agent', agent)\n    workflow.add_node('action', RunnableCallable(call_tool, acall_tool))\n\n    # Set the entrypoint as `agent`\n    # This means that this node is the first one called\n    workflow.set_entry_point('agent')\n\n    # We now add a conditional edge\n    workflow.add_conditional_edges(\n        # First, we define the start node. We use `agent`.\n        # This means these are the edges taken after the `agent` node is called.\n        'agent',\n        # Next, we pass in the function that will determine which node is called next.\n        should_continue,\n        # Finally we pass in a mapping.\n        # The keys are strings, and the values are other nodes.\n        # END is a special node marking that the graph should finish.\n        # What will happen is we will call `should_continue`, and then the output of that\n        # will be matched against the keys in this mapping.\n        # Based on which one it matches, that node will then be called.\n        {\n            # If `tools`, then we call the tool node.\n            'continue': 'action',\n            # Otherwise we finish.\n            'end': END,\n        },\n    )\n\n    # We now add a normal edge from `tools` to `agent`.\n    # This means that after `tools` is called, `agent` node is called next.\n    workflow.add_edge('action', 'agent')\n\n    # Finally, we compile it!\n    # This compiles it into a LangChain Runnable,\n    # meaning you can use it as you would any other runnable\n    app = workflow.compile(checkpointer=False)\n    if interrupt_before_action:\n        app.interrupt = ['action:inbox']\n    return app\n\n\ndef get_qwen_local_functions_agent_executor(\n    tools: list[BaseTool],\n    llm: LanguageModelLike,\n    system_message: str,\n    interrupt_before_action: bool,\n    **kwargs,\n):\n\n    async def _get_messages(messages):\n        msgs = []\n        for m in messages:\n            if isinstance(m, LiberalFunctionMessage):\n                _dict = m.dict()\n                _dict['content'] = str(_dict['content'])\n                m_c = FunctionMessage(**_dict)\n                msgs.append(m_c)\n            else:\n                msgs.append(m)\n\n        return [SystemMessage(content=system_message)] + msgs\n\n    if tools:\n        llm_with_tools = llm.bind(\n            functions=[format_tool_to_openai_tool(t)['function'] for t in tools])\n    else:\n        llm_with_tools = llm\n    agent = _get_messages | llm_with_tools\n    tool_nodes = ToolNode(tools=tools)\n\n    # Define the function that determines whether to continue or not\n    def should_continue(messages):\n        last_message = messages[-1]\n        # If there is no function call, then we finish\n        if 'function_call' not in last_message.additional_kwargs:\n            return 'end'\n        # Otherwise if there is, we continue\n        else:\n            return 'continue'\n\n    # Define the function to execute tools\n    async def call_tool(messages):\n        tool_messages = await tool_nodes.ainvoke(messages, config=None, store=None)\n        return tool_messages\n\n    workflow = MessageGraph()\n\n    # Define the two nodes we will cycle between\n    workflow.add_node('agent', agent)\n    workflow.add_node('action', call_tool)\n\n    # Set the entrypoint as `agent`\n    # This means that this node is the first one called\n    workflow.set_entry_point('agent')\n\n    # We now add a conditional edge\n    workflow.add_conditional_edges(\n        # First, we define the start node. We use `agent`.\n        # This means these are the edges taken after the `agent` node is called.\n        'agent',\n        # Next, we pass in the function that will determine which node is called next.\n        should_continue,\n        # Finally we pass in a mapping.\n        # The keys are strings, and the values are other nodes.\n        # END is a special node marking that the graph should finish.\n        # What will happen is we will call `should_continue`, and then the output of that\n        # will be matched against the keys in this mapping.\n        # Based on which one it matches, that node will then be called.\n        {\n            # If `tools`, then we call the tool node.\n            'continue': 'action',\n            # Otherwise we finish.\n            'end': END,\n        },\n    )\n\n    # We now add a normal edge from `tools` to `agent`.\n    # This means that after `tools` is called, `agent` node is called next.\n    workflow.add_edge('action', 'agent')\n\n    # Finally, we compile it!\n    # This compiles it into a LangChain Runnable,\n    # meaning you can use it as you would any other runnable\n    app = workflow.compile()\n    if interrupt_before_action:\n        app.interrupt = ['action:inbox']\n    return app\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/agent_types/llm_react_agent.py",
    "content": "import operator\nfrom typing import Annotated, Sequence, TypedDict, Union\n\nfrom bisheng_langchain.gpts.prompts.react_agent_prompt import react_agent_prompt\nfrom langchain.agents import create_structured_chat_agent\nfrom langchain.tools import BaseTool\nfrom langchain_core.agents import AgentAction, AgentFinish\nfrom langchain_core.language_models import LanguageModelLike\nfrom langchain_core.messages import BaseMessage\nfrom langgraph.graph import END, StateGraph\nfrom langgraph.graph.state import CompiledStateGraph\nfrom langgraph.prebuilt import ToolNode\nfrom langgraph.utils.runnable import RunnableCallable\n\n\ndef get_react_agent_executor(tools: list[BaseTool], llm: LanguageModelLike, system_message: str,\n                             interrupt_before_action: bool, **kwargs):\n    prompt = react_agent_prompt\n    prompt = prompt.partial(assistant_message=system_message)\n    agent = create_structured_chat_agent(llm, tools, prompt)\n    agent_executer = create_agent_executor(agent, tools)\n    return agent_executer\n\n\ndef _get_agent_state(input_schema=None):\n    if input_schema is None:\n\n        class AgentState(TypedDict):\n            # The input string\n            input: str\n            # The list of previous messages in the conversation\n            chat_history: Sequence[BaseMessage]\n            # The outcome of a given call to the agent\n            # Needs `None` as a valid type, since this is what this will start as\n            agent_outcome: Union[AgentAction, AgentFinish, None]\n            # List of actions and corresponding observations\n            # Here we annotate this with `operator.add` to indicate that operations to\n            # this state should be ADDED to the existing values (not overwrite it)\n            intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n\n    else:\n\n        class AgentState(input_schema):\n            # The outcome of a given call to the agent\n            # Needs `None` as a valid type, since this is what this will start as\n            agent_outcome: Union[AgentAction, AgentFinish, None]\n            # List of actions and corresponding observations\n            # Here we annotate this with `operator.add` to indicate that operations to\n            # this state should be ADDED to the existing values (not overwrite it)\n            intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n\n    return AgentState\n\n\ndef create_agent_executor(agent_runnable, tools, input_schema=None) -> CompiledStateGraph:\n    \"\"\"This is a helper function for creating a graph that works with LangChain Agents.\n\n    Args:\n        agent_runnable (RunnableLike): The agent runnable.\n        tools (list): A list of tools to be used by the agent.\n        input_schema (dict, optional): The input schema for the agent. Defaults to None.\n\n    Returns:\n        The `CompiledStateGraph` object.\n    \"\"\"\n\n    tool_executor = {one.name: one for one in tools}\n\n    state = _get_agent_state(input_schema)\n\n    # Define logic that will be used to determine which conditional edge to go down\n\n    def should_continue(data):\n        # If the agent outcome is an AgentFinish, then we return `exit` string\n        # This will be used when setting up the graph to define the flow\n        if isinstance(data['agent_outcome'], AgentFinish):\n            return 'end'\n        # Otherwise, an AgentAction is returned\n        # Here we return `continue` string\n        # This will be used when setting up the graph to define the flow\n        else:\n            return 'continue'\n\n    def run_agent(data, config):\n        agent_outcome = agent_runnable.invoke(data, config)\n        return {'agent_outcome': agent_outcome}\n\n    async def arun_agent(data, config):\n        agent_outcome = await agent_runnable.ainvoke(data, config)\n        return {'agent_outcome': agent_outcome}\n\n    # Define the function to execute tools\n    def execute_tools(data, config):\n        # Get the most recent agent_outcome - this is the key added in the `agent` above\n        agent_action = data['agent_outcome']\n        if not isinstance(agent_action, list):\n            agent_action = [agent_action]\n\n        output = []\n        for action in agent_action:\n            if action.tool not in tool_executor:\n                output.append(f\"Tool {action.tool} not found in tool executor.\")\n                continue\n            try:\n                result = tool_executor[action.tool].invoke(action.tool_input, config)\n                output.append(result)\n            except Exception as e:\n                output.append(f\"invoke tool {action.tool} failed: {str(e)[-50:]}\")\n\n        return {\n            'intermediate_steps': [(action, str(out)) for action, out in zip(agent_action, output)]\n        }\n\n    async def aexecute_tools(data, config):\n        # Get the most recent agent_outcome - this is the key added in the `agent` above\n        agent_action = data['agent_outcome']\n        if not isinstance(agent_action, list):\n            agent_action = [agent_action]\n        output = []\n        for action in agent_action:\n            if action.tool not in tool_executor:\n                output.append(f\"Tool {action.tool} not found in tool executor.\")\n                continue\n            try:\n                result = await tool_executor[action.tool].ainvoke(action.tool_input, config)\n                output.append(result)\n            except Exception as e:\n                output.append(f\"invoke tool {action.tool} failed: {str(e)[-50:]}\")\n\n        return {\n            'intermediate_steps': [(action, str(out)) for action, out in zip(agent_action, output)]\n        }\n\n    # Define a new graph\n    workflow = StateGraph(state)\n\n    # Define the two nodes we will cycle between\n    workflow.add_node('agent', RunnableCallable(run_agent, arun_agent))\n    workflow.add_node('tools', RunnableCallable(execute_tools, aexecute_tools))\n\n    # Set the entrypoint as `agent`\n    # This means that this node is the first one called\n    workflow.set_entry_point('agent')\n\n    # We now add a conditional edge\n    workflow.add_conditional_edges(\n        # First, we define the start node. We use `agent`.\n        # This means these are the edges taken after the `agent` node is called.\n        'agent',\n        # Next, we pass in the function that will determine which node is called next.\n        should_continue,\n        # Finally we pass in a mapping.\n        # The keys are strings, and the values are other nodes.\n        # END is a special node marking that the graph should finish.\n        # What will happen is we will call `should_continue`, and then the output of that\n        # will be matched against the keys in this mapping.\n        # Based on which one it matches, that node will then be called.\n        {\n            # If `tools`, then we call the tool node.\n            'continue': 'tools',\n            # Otherwise we finish.\n            'end': END,\n        },\n    )\n\n    # We now add a normal edge from `tools` to `agent`.\n    # This means that after `tools` is called, `agent` node is called next.\n    workflow.add_edge('tools', 'agent')\n\n    # Finally, we compile it!\n    # This compiles it into a LangChain Runnable,\n    # meaning you can use it as you would any other runnable\n    return workflow.compile(checkpointer=False)\n\n\nif __name__ == '__main__':\n    pass\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/assistant.py",
    "content": "import asyncio\nimport logging\nfrom typing import Any, Mapping, Optional, Sequence\n\nimport httpx\nimport yaml\nfrom bisheng_langchain.gpts.load_tools import get_all_tool_names, load_tools\nfrom bisheng_langchain.gpts.utils import import_by_type, import_class\nfrom langchain.tools import BaseTool\nfrom langchain_core.language_models.base import LanguageModelLike\nfrom langchain_core.messages import AIMessage, HumanMessage\nfrom langchain_core.runnables import RunnableBinding\n\nlogger = logging.getLogger(__name__)\n\n\nclass ConfigurableAssistant(RunnableBinding):\n    agent_executor_type: str\n    tools: Sequence[BaseTool]\n    llm: LanguageModelLike\n    assistant_message: str\n    interrupt_before_action: bool = False\n    recursion_limit: int = 50\n\n    def __init__(\n        self,\n        *,\n        agent_executor_type: str,\n        tools: Sequence[BaseTool],\n        llm: LanguageModelLike,\n        assistant_message: str,\n        interrupt_before_action: bool = False,\n        recursion_limit: int = 50,\n        kwargs: Optional[Mapping[str, Any]] = None,\n        config: Optional[Mapping[str, Any]] = None,\n        **others: Any,\n    ) -> None:\n        others.pop('bound', None)\n        agent_executor_object = import_class(\n            f'bisheng_langchain.gpts.agent_types.{agent_executor_type}')\n\n        _agent_executor = agent_executor_object(tools, llm, assistant_message,\n                                                interrupt_before_action)\n        agent_executor = _agent_executor.with_config({'recursion_limit': recursion_limit})\n        super().__init__(\n            agent_executor_type=agent_executor_type,\n            tools=tools,\n            llm=llm,\n            assistant_message=assistant_message,\n            bound=agent_executor,\n            kwargs=kwargs or {},\n            config=config or {},\n        )\n\n\nclass BishengAssistant:\n\n    def __init__(self, yaml_path) -> None:\n        self.yaml_path = yaml_path\n        with open(self.yaml_path, 'r') as f:\n            self.params = yaml.safe_load(f)\n\n        self.assistant_params = self.params['assistant']\n\n        # init assistant prompt\n        prompt_type = self.assistant_params['prompt_type']\n        assistant_message = import_class(f'bisheng_langchain.gpts.prompts.{prompt_type}')\n\n        # init llm or agent\n        llm_params = self.assistant_params['llm']\n        llm_object = import_by_type(_type='llms', name=llm_params['type'])\n        if llm_params['type'] == 'ChatOpenAI' and llm_params['openai_proxy']:\n            llm_params.pop('type')\n            llm = llm_object(\n                http_client=httpx.Client(proxies=llm_params['openai_proxy']),\n                http_async_client=httpx.AsyncClient(proxies=llm_params['openai_proxy']),\n                **llm_params,\n            )\n        else:\n            llm_params.pop('type')\n            llm = llm_object(**llm_params)\n\n        # init tools\n        available_tools = get_all_tool_names()\n        tools = []\n        for tool in self.assistant_params['tools']:\n            tool_type = tool.pop('type')\n            tool_config = tool if tool else {}\n            if tool_type not in available_tools:\n                raise ValueError(f'Tool type {tool_type} not found in TOOLS')\n            _returned_tools = load_tools({tool_type: tool_config})\n            if isinstance(_returned_tools, list):\n                tools.extend(_returned_tools)\n            else:\n                tools.append(_returned_tools)\n\n        # init agent executor\n        agent_executor_params = self.assistant_params['agent_executor']\n        self.agent_executor_type = agent_executor_params.pop('type')\n        self.assistant = ConfigurableAssistant(agent_executor_type=self.agent_executor_type,\n                                               tools=tools,\n                                               llm=llm,\n                                               assistant_message=assistant_message,\n                                               **agent_executor_params)\n\n    def run(self, query, chat_history=[], chat_round=5):\n        if len(chat_history) % 2 != 0:\n            raise ValueError('chat history should be even')\n\n        # 限制chat_history轮数\n        if len(chat_history) > chat_round * 2:\n            chat_history = chat_history[-chat_round * 2:]\n\n        inputs = []\n        for i in range(0, len(chat_history), 2):\n            inputs.append(HumanMessage(content=chat_history[i]))\n            inputs.append(AIMessage(content=chat_history[i + 1]))\n        inputs.append(HumanMessage(content=query))\n        if self.agent_executor_type == 'get_react_agent_executor':\n            result = asyncio.run(\n                self.assistant.ainvoke({\n                    'input': inputs[-1].content,\n                    'chat_history': inputs[:-1]\n                }))\n        else:\n            result = asyncio.run(self.assistant.ainvoke(inputs))\n        return result\n\n\nif __name__ == '__main__':\n\n    # set_debug(True)\n    # chat_history = []\n    # query = \"分析当日市场行情\"\n    chat_history = ['你好', '你好，有什么可以帮助你吗？', '福蓉科技股价多少?', '福蓉科技（股票代码：300049）的当前股价为48.67元。']\n    query = '今天是什么时候？去年这个时候的股价是多少？'\n    bisheng_assistant = BishengAssistant('config/base_scene.yaml')\n    # bisheng_assistant = BishengAssistant(\"config/knowledge_scene.yaml\")\n    # bisheng_assistant = BishengAssistant(\"config/rag_scene.yaml\")\n    result = bisheng_assistant.run(query, chat_history=chat_history)\n    print(result)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/auto_optimization.py",
    "content": "import json\nimport os\nimport re\n\nimport httpx\nfrom bisheng_langchain.gpts.prompts import (\n    ASSISTANT_PROMPT_OPT,\n    BREIF_DES_PROMPT,\n    OPENDIALOG_PROMPT,\n)\nfrom langchain_core.language_models.base import LanguageModelLike\nfrom langchain_openai.chat_models import ChatOpenAI\nfrom loguru import logger\n\n\ndef parse_markdown(input_str: str) -> str:\n    match = re.search(r'```(markdown)?(.*)```', input_str, re.DOTALL)\n    if match is None:\n        out_str = input_str\n    else:\n        out_str = match.group(2)\n\n    out_str = out_str.strip()\n    out_str = out_str.replace('```', '')\n    return out_str\n\n\ndef parse_json(input_str: str) -> str:\n    match = re.search(r'```(json)?(.*)```', input_str, re.DOTALL)\n    if match is None:\n        out_str = input_str\n    else:\n        out_str = match.group(2)\n\n    out_str = out_str.strip()\n    out_str = out_str.replace('```', '')\n    return out_str\n\n\ndef optimize_assistant_prompt(\n    llm: LanguageModelLike,\n    assistant_name: str,\n    assistant_description: str,\n) -> str:\n    \"\"\"optimize assistant prompt\n\n    Args:\n        llm (LanguageModelLike):\n        assistant_name (str):\n        assistant_description (str):\n\n    Returns:\n        assistant_prompt(str):\n    \"\"\"\n    chain = ASSISTANT_PROMPT_OPT | llm\n    chain_output = chain.invoke(\n        {\n            'assistant_name': assistant_name,\n            'assistant_description': assistant_description,\n        }\n    )\n    response = chain_output.content\n    assistant_prompt = parse_markdown(response)\n    return assistant_prompt\n\n\ndef generate_opening_dialog(\n    llm: LanguageModelLike,\n    description: str,\n) -> str:\n    chain = OPENDIALOG_PROMPT | llm\n    time = 0\n    while time <= 3:\n        try:\n            chain_output = chain.invoke(\n                {\n                    'description': description,\n                }\n            )\n            output = parse_json(chain_output.content)\n            output = json.loads(output)\n            opening_lines = output[0]['开场白']\n            questions = output[0]['问题']\n            break\n        except Exception as e:\n            logger.info(f'第{time}次解析失败, 错误信息: {e}')\n            logger.info(f'模型输出结果为{chain_output.content}。')\n            time += 1\n            opening_lines = ''\n            questions = []\n\n    res = {}\n    res['opening_lines'] = opening_lines\n    res['questions'] = questions\n\n    return res\n\n\ndef generate_breif_description(\n    llm: LanguageModelLike,\n    description: str,\n) -> str:\n    chain = BREIF_DES_PROMPT | llm\n    chain_output = chain.invoke(\n        {\n            'description': description,\n        }\n    )\n    breif_description = chain_output.content\n    breif_description = breif_description.strip()\n    return breif_description\n\n\nif __name__ == '__main__':\n    from dotenv import load_dotenv\n\n    load_dotenv('/app/.env', override=True)\n\n    httpx_client = httpx.Client(proxies=os.getenv('OPENAI_PROXY'))\n    llm = ChatOpenAI(model='gpt-4-0125-preview', temperature=0.01, http_client=httpx_client)\n    # llm = ChatQWen(model=\"qwen1.5-72b-chat\", temperature=0.01, api_key=os.getenv('QWEN_API_KEY'))\n    assistant_name = '金融分析助手'\n    assistant_description = '1. 分析上市公司最新的年报财报；2. 获取上市公司的最新新闻；'\n    assistant_prompt = optimize_assistant_prompt(llm, assistant_name, assistant_description)\n    # print(assistant_prompt)\n\n    opening_dialog = generate_opening_dialog(llm, assistant_prompt)\n    print(opening_dialog)\n\n    # breif_description = generate_breif_description(llm, assistant_prompt)\n    # print(breif_description)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/auto_tool_selected.py",
    "content": "from bisheng_langchain.gpts.prompts.select_tools_prompt import HUMAN_MSG, SYS_MSG\nfrom langchain.prompts import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\nfrom langchain_core.language_models.base import LanguageModelLike\nfrom pydantic import BaseModel\n\n\nclass ToolInfo(BaseModel):\n    tool_name: str\n    tool_description: str\n\n\nclass ToolSelector:\n\n    def __init__(\n        self,\n        llm: LanguageModelLike,\n        tools: list[ToolInfo],\n        system_message: str = SYS_MSG,\n        human_message: str = HUMAN_MSG,\n    ) -> None:\n        self.llm = llm\n        self.tools = tools\n        self.system_message = system_message\n        self.human_message = human_message\n\n    def select(self, task_name: str, task_description: str) -> list[str]:\n        tool_pool = [tool.dict() for tool in self.tools]\n        messages = [\n            SystemMessagePromptTemplate.from_template(self.system_message),\n            HumanMessagePromptTemplate.from_template(self.human_message),\n        ]\n\n        chain = ChatPromptTemplate.from_messages(messages) | self.llm\n\n        chain_output = chain.invoke(\n            {\n                'tool_pool': tool_pool,\n                'task_name': task_name,\n                'task_description': task_description,\n            }\n        )\n\n        try:\n            all_tool_name = set([tool.tool_name for tool in self.tools])\n            output = list(set(eval(chain_output.content)) & all_tool_name)\n            return output\n        except Exception as e:\n            print(e)\n            return []\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/base_assistant.yaml",
    "content": "assistant:\n  prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  \n  llm:\n    type: 'ChatOpenAI'\n    model: 'gpt-4-0125-preview'\n    # model: 'gpt-3.5-turbo-0125'\n    openai_api_key: ''\n    openai_proxy: 'http://118.195.232.223:39995'\n    temperature: 0.0\n\n  # llm:\n  #   type: 'ChatQWen'\n  #   model_name: 'qwen-max'\n  #   api_key: ''\n  #   temperature: 0.01\n\n  # llm:\n  #   type: 'HostQwenChat'\n  #   model_name: 'Qwen-1_8B-Chat'\n  #   host_base_url: 'http://192.168.106.12:9001/v2.1/models'\n  #   temperature: 0.01\n\n  tools:\n    - type: \"arxiv\"\n    - type: \"bing_search\"\n      bing_subscription_key: \"\"\n      bing_search_url: \"https://api.bing.microsoft.com/v7.0/search\"\n    - type: \"get_current_time\"\n    - type: \"calculator\"\n      \n  agent_executor:\n    type: 'get_openai_functions_agent_executor'\n    # type: 'get_qwen_local_functions_agent_executor'\n    interrupt_before_action: False\n    recursion_limit: 50\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/base_scene.yaml",
    "content": "assistant:\n  prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  llm:\n    type: 'ChatOpenAI'\n    model: 'gpt-4-0125-preview'\n    openai_api_key: ''\n    openai_proxy: 'http://118.195.232.223:39995'\n    temperature: 0.0\n\n  # prompt_type: 'ASSISTANT_PROMPT_COHERE'\n  # llm:\n  #   type: 'ChatOpenAI'\n  #   model: 'command-r-plus-104b'\n  #   openai_api_base: 'http://34.87.129.78:9100/v1'\n  #   openai_api_key: ''\n  #   openai_proxy: ''\n  #   temperature: 0.3\n\n  tools:\n    - type: \"sina_realtime_info\"\n    - type: \"sina_history_KLine\"\n    - type: \"bisheng_code_interpreter\"\n      minio:\n        MINIO_ENDPOINT: \"110.16.193.170:50061\"\n        MINIO_SHAREPOINT: \"110.16.193.170:50061\"\n        MINIO_ACCESS_KEY: \"minioadmin\"\n        MINIO_SECRET_KEY: \"minioadmin\"\n        SCHEMA: False\n        CERT_CHECK: False\n    - type: \"bing_search\"\n      bing_subscription_key: \"\"\n      bing_search_url: \"https://api.bing.microsoft.com/v7.0/search\"\n    - type: \"get_current_time\"\n    - type: \"calculator\"\n    - type: \"dalle_image_generator\"\n      openai_api_key: ''\n      openai_proxy: 'http://118.195.232.223:39995'\n    - type: macro_china_money_supply\n    - type: macro_china_shrzgm\n\n  agent_executor:\n    # type: 'get_openai_functions_agent_executor'\n    # type: 'get_qwen_local_functions_agent_executor'\n    type: 'get_react_agent_executor'\n    interrupt_before_action: False\n    recursion_limit: 50\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/knowledge_scene.yaml",
    "content": "assistant:\n  # prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  # llm:\n  #   type: 'ChatOpenAI'\n  #   model: 'gpt-4-0125-preview'\n  #   openai_api_key: ''\n  #   openai_proxy: 'http://118.195.232.223:39995'\n  #   temperature: 0.0\n\n  prompt_type: 'ASSISTANT_PROMPT_COHERE'\n  llm:\n    type: 'ChatOpenAI'\n    model: 'command-r-plus-104b'\n    openai_api_base: 'http://34.87.129.78:9100/v1'\n    openai_api_key: ''\n    openai_proxy: ''\n    temperature: 0.3\n\n  tools:\n    # 美团 2019 年的营业收入是多少？\n    - type: flow_knowledge_retrieve\n      collection_id: 699\n      description: \"美团知识库检索工具，从美团知识库进行检索总结\"\n\n    - type: flow_knowledge_retrieve\n      collection_id: 700\n      description: \"永辉超市知识库检索工具，从永辉超市知识库进行检索总结\"\n\n    - type: flow_knowledge_retrieve\n      collection_id: 808\n      description: \"重庆水务集团股份有限公司知识库检索工具，从重庆水务集团股份有限公司知识库进行检索总结\"\n    \n    - type: tianyancha_get_company_baseinfo\n      api_key: \"\"  \n\n    - type: tianyancha_get_company_baseinfo\n      api_key: \"\"\n\n    - type: tianyancha_law_suit_case\n      api_key: \"\"\n\n    - type: tianyancha_riskinfo\n      api_key: \"\"\n\n  agent_executor:\n    type: 'get_openai_functions_agent_executor'\n    interrupt_before_action: False\n    recursion_limit: 50"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/rag_scene.yaml",
    "content": "assistant:\n  prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  llm:\n    type: 'ChatOpenAI'\n    model: 'gpt-4-0125-preview'\n    openai_api_key: ''\n    openai_proxy: ''\n    temperature: 0.0\n\n  tools:\n    # - type: bisheng_rag\n    #   name: \"bisheng_rag_jinyu\"\n    #   description: \"金宇生物技术股份有限公司知识库问答\"\n    #   collection_name: \"rag_finance_report_0_benchmark_caibao_1000_source_title\"\n    \n    # - type: bisheng_rag\n    #   name: \"bisheng_rag_jianghuawei\"\n    #   description: \"江阴江化微电子材料股份有限公司知识库问答\"\n    #   collection_name: \"rag_finance_report_1_benchmark_caibao_1000_source_title\"\n\n    # - type: bisheng_rag\n    #   name: \"bisheng_rag_maiwei\"\n    #   description: \"苏州迈为科技股份有限公司知识库问答\"\n    #   collection_name: \"rag_finance_report_2_benchmark_caibao_1000_source_title\"\n    \n    # - type: bisheng_rag\n    #   name: \"bisheng_rag_xuelong\"\n    #   description: \"雪龙集团股份有限公司知识库问答\"\n    #   collection_name: \"rag_finance_report_3_benchmark_caibao_1000_source_title\"\n\n    # - type: bisheng_rag\n    #   name: \"bisheng_rag_jinyu\"\n    #   description: \"金宇生物技术股份有限公司知识库问答\"\n    #   collection_name: \"rag_finance_report_0_benchmark_caibao_1000_source_title\"\n    \n    - type: bisheng_rag\n      name: \"bisheng_rag_annual_financial_report\"\n      description: \"金融年报财报知识库问答\"\n      collection_name: \"rag_benchmark_finance_report_benchmark_caibao_1000_knowledge_source_title\"\n      max_content: 15000\n      sort_by_source_and_index: True\n\n\n  agent_executor:\n    type: 'get_openai_functions_agent_executor'\n    interrupt_before_action: False\n    recursion_limit: 50"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/test.yaml",
    "content": "assistant:\n  # prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  # llm:\n  #   type: 'ChatOpenAI'\n  #   model: 'gpt-4-0125-preview'\n  #   openai_api_key: ''\n  #   openai_proxy: 'http://118.195.232.223:39995'\n  #   temperature: 0.0\n\n  # prompt_type: 'ASSISTANT_PROMPT_COHERE'\n  # llm:\n  #   type: 'ChatOpenAI'\n  #   model: 'command-r-plus-104b'\n  #   openai_api_base: 'http://34.87.129.78:9100/v1'\n  #   openai_api_key: ''\n  #   openai_proxy: ''\n  #   temperature: 0.3\n\n  prompt_type: 'ASSISTANT_PROMPT_DEFAULT'\n  llm:\n    type: 'ChatQWen'\n    model_name: 'qwen-max'\n    api_key: ''\n    temperature: 0.3\n\n  tools:\n    - type: \"get_current_time\"\n\n  agent_executor:\n    # type: 'get_openai_functions_agent_executor'\n    # type: 'get_qwen_local_functions_agent_executor'\n    type: 'get_react_agent_executor'\n    interrupt_before_action: False\n    recursion_limit: 50\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/config/tools.yaml",
    "content": "- type: arxiv\n  # 1. 用于访问arXiv API的工具\n  \n- type: bing_search\n  # 2. 用于执行Bing搜索的工具\n  bing_search_url: https://api.bing.microsoft.com/v7.0/search\n  bing_subscription_key: \n  \n- type: calculator\n  # 3. 用于执行计算的工具\n  \n- type: bisheng_code_interpreter\n  # 4. 用于执行代码的工具\n  minio:\n    MINIO_ACCESS_KEY: \n    MINIO_SECRET_KEY: \n    CERT_CHECK: false\n    MINIO_ENDPOINT: 192.168.106.116:9000\n    SCHEMA: false\n\n- type: dalle_image_generator\n  # 5. 使用OpenAI的DALL-E模型生成图像的工具\n  openai_api_key: \n  openai_proxy:\n\n- type: get_current_time\n  # 6. 获取当前时间的工具\n  \n- type: macro_china_consumer_goods_retail\n  # 7. 用于访问中国消费品零售行业的宏观经济数据的工具\n  \n- type: macro_china_cpi\n  # 8. 用于访问中国消费者价格指数（CPI）的宏观经济数据的工具\n  \n- type: macro_china_gdp_yearly\n  # 9. 用于访问中国年度国内生产总值（GDP）的宏观经济数据的工具\n  \n- type: macro_china_money_supply\n  # 10. 用于访问中国货币供应量的宏观经济数据的工具\n  \n- type: macro_china_ppi\n  # 11. 用于访问中国生产者价格指数（PPI）的宏观经济数据的工具\n  \n- type: macro_china_shrzgm\n  # 12. 用于访问中国社会融资规模的宏观经济数据的工具\n  \n- type: sina_history_KLine\n  # 13. 用于访问新浪财经的历史K线数据的工具\n  \n- type: sina_realtime_info\n  # 14. 用于访问新浪财经的实时股票信息的工具\n  \n- type: tianyancha_all_companys_by_company\n  # 15. 使用天眼查API按公司名称搜索所有公司的工具\n  api_key: \n  \n- type: tianyancha_all_companys_by_humanname\n  # 16. 使用天眼查API按人名搜索所有公司的工具\n  api_key: \n  \n- type: tianyancha_company_change_info\n  # 17. 使用天眼查API访问公司变更信息的工具\n  api_key: \n  \n- type: tianyancha_company_holders\n  # 18. 使用天眼查API访问公司股东信息的工具\n  api_key: \n  \n- type: tianyancha_get_company_baseinfo\n  # 19. 使用天眼查API访问公司基本信息的工具\n  api_key: \n  \n- type: tianyancha_ic_info\n  # 20. 使用天眼查API访问公司工商信息的工具\n  api_key: \n  \n- type: tianyancha_ip_rights\n  # 21. 使用天眼查API访问公司知识产权信息的工具\n  api_key: \n  \n- type: tianyancha_judicial_risk\n  # 22. 使用天眼查API访问公司司法风险信息的工具\n  api_key: \n  \n- type: tianyancha_law_suit_case\n  # 23. 使用天眼查API访问公司诉讼案例信息的工具\n  api_key: \n  \n- type: tianyancha_riskinfo\n  # 24. 使用天眼查API访问公司风险信息的工具\n  api_key: \n  \n- type: tianyancha_search_company\n  # 25. 使用天眼查API搜索公司的工具\n  api_key:\n\n- type: flow_knowledge_retrieve\n  # 26. 知识库检索工具\n  collection_id: 699\n  description: \"美团知识库检索工具，从美团知识库进行检索总结\"\n\n- type: macro_china_pmi\n  # 27. 用于访问中国采购经理人指数（PMI）的宏观经济数据的工具\n\n- type: bond_zh_us_rate\n  # 28. 指定时间段内交易日的中美两国的收益率数据\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/load_tools.py",
    "content": "import json\nimport os\nimport warnings\nfrom typing import Any, Callable, Dict, List, Optional, Tuple\n\nimport httpx\nimport pandas as pd\nimport pymysql\nfrom dotenv import load_dotenv\nfrom langchain_community.tools.arxiv.tool import ArxivQueryRun\nfrom langchain_community.tools.bearly.tool import BearlyInterpreterTool\nfrom langchain_community.utilities.bing_search import BingSearchAPIWrapper\nfrom langchain_core.callbacks import BaseCallbackManager, Callbacks\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.tools import BaseTool, Tool\nfrom mypy_extensions import Arg, KwArg\n\nfrom bisheng_langchain.gpts.tools.api_tools import ALL_API_TOOLS\nfrom bisheng_langchain.gpts.tools.bing_search.self_arxiv import ArxivAPIWrapperSelf\nfrom bisheng_langchain.gpts.tools.bing_search.tool import BingSearchResults\nfrom bisheng_langchain.gpts.tools.calculator.tool import calculator\nfrom bisheng_langchain.gpts.tools.code_interpreter.e2b_executor import E2bCodeExecutor\nfrom bisheng_langchain.gpts.tools.code_interpreter.local_executor import LocalExecutor\nfrom bisheng_langchain.gpts.tools.code_interpreter.tool import CodeInterpreterTool\n# from langchain_community.utilities.dalle_image_generator import DallEAPIWrapper\nfrom bisheng_langchain.gpts.tools.dalle_image_generator.tool import (\n    DallEImageGenerator, ProxyDallEAPIWrapper,\n)\nfrom bisheng_langchain.gpts.tools.get_current_time.tool import get_current_time\nfrom bisheng_langchain.gpts.tools.local_file.local_file import LocalFileTool\nfrom bisheng_langchain.gpts.tools.sql_agent.tool import SqlAgentTool, SqlAgentAPIWrapper\nfrom bisheng_langchain.gpts.tools.web_search.tool import WebSearchTool, SearchTool\nfrom bisheng_langchain.rag import BishengRAGTool\nfrom bisheng_langchain.utils.azure_dalle_image_generator import AzureDallEWrapper\n\n\ndef _get_current_time() -> BaseTool:\n    return get_current_time\n\n\ndef _get_calculator() -> BaseTool:\n    return calculator\n\n\ndef _get_arxiv() -> BaseTool:\n    return ArxivQueryRun(\n        api_wrapper=ArxivAPIWrapperSelf(top_k_results=5, load_max_docs=5, load_all_available_meta=True))\n\n\n_BASE_TOOLS: Dict[str, Callable[[], BaseTool]] = {\n    'get_current_time': _get_current_time,\n    'calculator': _get_calculator,\n    'arxiv': _get_arxiv,\n}\n\n_LLM_TOOLS: Dict[str, Callable[[BaseLanguageModel], BaseTool]] = {}\n\n_EXTRA_LLM_TOOLS: Dict[\n    str, Tuple[Callable[[Arg(BaseLanguageModel, 'llm'), KwArg(Any)], BaseTool], List[str]]  # noqa  # noqa #type: ignore\n] = {}\n\n\ndef _get_bing_search(**kwargs: Any) -> BaseTool:\n    return BingSearchResults(api_wrapper=BingSearchAPIWrapper(**kwargs))\n\n\ndef _get_web_search(**kwargs: Any) -> BaseTool:\n    \"\"\"Get a web search tool.\"\"\"\n    tool_name = kwargs.get('type', '')\n    tool_config = kwargs.get('config', {}).get(tool_name)\n    search_tool = SearchTool.init_search_tool(tool_name, **tool_config)\n    return WebSearchTool(api_wrapper=search_tool)\n\n\ndef _get_dalle_image_generator(**kwargs: Any) -> BaseTool:\n    # 说明是azure的openai配置\n    if kwargs.get(\"azure_endpoint\"):\n        kwargs['api_key'] = kwargs.pop('openai_api_key')\n        kwargs['api_version'] = kwargs.pop('openai_api_version')\n        return DallEImageGenerator(\n            api_wrapper=AzureDallEWrapper(**kwargs)\n        )\n    if kwargs.get('openai_proxy'):\n        kwargs['http_async_client'] = httpx.AsyncClient(proxies=kwargs.get('openai_proxy'))\n        kwargs['http_client'] = httpx.Client(proxies=kwargs.get('openai_proxy'))\n    kwargs['api_key'] = kwargs.pop('openai_api_key')\n    kwargs['base_url'] = kwargs.pop('openai_api_base', None)\n    return DallEImageGenerator(\n        api_wrapper=ProxyDallEAPIWrapper(\n            model='dall-e-3',\n            **kwargs\n        )\n    )\n\n\ndef _get_sql_agent(**kwargs: Any) -> BaseTool:\n    return SqlAgentTool(api_wrapper=SqlAgentAPIWrapper(**kwargs))\n\n\ndef _get_bearly_code_interpreter(**kwargs: Any) -> Tool:\n    return BearlyInterpreterTool(**kwargs).as_tool()\n\n\ndef _get_native_code_interpreter(**kwargs: Any) -> BaseTool:\n    executor_type = kwargs.pop(\"type\", \"local\")\n    config = kwargs.pop(\"config\", {}).get(executor_type, {})\n    kwargs.update(config)\n    if executor_type == 'local':\n        executor = LocalExecutor(**kwargs)\n    else:\n        executor = E2bCodeExecutor(**kwargs)\n    return CodeInterpreterTool(executor=executor, description=executor.description)\n\n\n# 第二个list内填必填参数，第三个list内填可选参数\n_EXTRA_PARAM_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[Optional[str]], List[Optional[str]]]] = {\n    # type: ignore\n    'dalle_image_generator': (_get_dalle_image_generator,\n                              ['openai_api_key'],\n                              ['openai_api_base', 'openai_proxy', 'azure_deployment', 'azure_endpoint',\n                               'openai_api_version']),\n    'bing_search': (_get_bing_search, ['bing_subscription_key', 'bing_search_url'], []),\n    'bisheng_code_interpreter': (_get_native_code_interpreter, [\"minio\"], ['config', 'type']),\n    'bisheng_rag': (BishengRAGTool.get_rag_tool, ['name', 'description'],\n                    ['vector_store', 'keyword_store', 'llm', 'collection_name', 'max_content',\n                     'sort_by_source_and_index']),\n    'sql_agent': (_get_sql_agent, ['llm', 'sql_address'], []),\n    \"web_search\": (_get_web_search, ['type', 'config'], []),\n}\n\n_API_TOOLS: Dict[str, Tuple[Callable[Any, BaseTool], List[str]]] = {**ALL_API_TOOLS}  # type: ignore\n\n_API_TOOLS.update({\n    \"list_files\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"get_file_details\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"search_files\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"search_text_in_file\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"read_text_file\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"add_text_to_file\": (LocalFileTool.get_tool_by_name, ['root_path']),\n    \"replace_file_lines\": (LocalFileTool.get_tool_by_name, ['root_path']),\n})\n\n_ALL_TOOLS = {\n    **_BASE_TOOLS,\n    **_LLM_TOOLS,\n    **_EXTRA_LLM_TOOLS,\n    **_EXTRA_PARAM_TOOLS,\n    **_API_TOOLS,\n}\n\n\ndef _handle_callbacks(callback_manager: Optional[BaseCallbackManager], callbacks: Callbacks) -> Callbacks:\n    if callback_manager is not None:\n        warnings.warn(\n            'callback_manager is deprecated. Please use callbacks instead.',\n            DeprecationWarning,\n        )\n        if callbacks is not None:\n            raise ValueError('Cannot specify both callback_manager and callbacks arguments.')\n        return callback_manager\n    return callbacks\n\n\ndef load_tools(\n        tool_params: Dict[str, Dict[str, Any]],\n        llm: Optional[BaseLanguageModel] = None,\n        callbacks: Callbacks = None,\n        **kwargs: Any,\n) -> List[BaseTool]:\n    tools = []\n    callbacks = _handle_callbacks(callback_manager=kwargs.get('callback_manager'), callbacks=callbacks)\n    for name, params in tool_params.items():\n        if name in _BASE_TOOLS:\n            tools.append(_BASE_TOOLS[name]())\n        elif name in _LLM_TOOLS:\n            if llm is None:\n                raise ValueError(f'Tool {name} requires an LLM to be provided')\n            tool = _LLM_TOOLS[name](llm)\n            tools.append(tool)\n        elif name in _EXTRA_LLM_TOOLS:\n            if llm is None:\n                raise ValueError(f'Tool {name} requires an LLM to be provided')\n            _get_llm_tool_func, extra_keys = _EXTRA_LLM_TOOLS[name]\n            missing_keys = set(extra_keys).difference(params)\n            if missing_keys:\n                raise ValueError(f'Tool {name} requires some parameters that were not ' f'provided: {missing_keys}')\n            sub_kwargs = {k: params[k] for k in extra_keys}\n            tool = _get_llm_tool_func(llm=llm, **sub_kwargs)\n            tools.append(tool)\n        elif name in _EXTRA_PARAM_TOOLS:\n            _get_tool_func, extra_keys, optional_keys = _EXTRA_PARAM_TOOLS[name]\n            missing_keys = set(extra_keys).difference(params)\n            if missing_keys:\n                raise ValueError(f'Tool {name} requires some parameters that were not ' f'provided: {missing_keys}')\n            extra_kwargs = {k: params[k] for k in extra_keys}\n            optional_kwargs = {k: params[k] for k in optional_keys if k in params}\n            all_kwargs = {**extra_kwargs, **optional_kwargs}\n            tool = _get_tool_func(**all_kwargs)\n            tools.append(tool)\n        elif name in _API_TOOLS:\n            _get_api_tool_func, extra_keys = _API_TOOLS[name]\n            missing_keys = set(extra_keys).difference(params)\n            if missing_keys:\n                raise ValueError(f'Tool {name} requires some parameters that were not ' f'provided: {missing_keys}')\n            mini_kwargs = {k: params[k] for k in extra_keys}\n            tool = _get_api_tool_func(name=name, **mini_kwargs)\n            tools.append(tool)\n        else:\n            raise ValueError(f'Got unknown tool {name}')\n    if callbacks is not None:\n        for tool in tools:\n            tool.callbacks = callbacks\n    return tools\n\n\ndef get_all_tool_names() -> List[str]:\n    \"\"\"Get a list of all possible tool names.\"\"\"\n    return list(_ALL_TOOLS.keys())\n\n\ndef get_tool_table():\n    load_dotenv('.sql_env', override=True)\n    db = pymysql.connect(\n        host=os.getenv('MYSQL_HOST'),\n        user=os.getenv('MYSQL_USER'),\n        password=os.getenv('MYSQL_PASSWORD'),\n        database=os.getenv('MYSQL_DATABASE'),\n        port=int(os.getenv('MYSQL_PORT')),\n    )\n    cursor = db.cursor()\n    cursor.execute(\"SELECT name, t.desc, tool_key, extra FROM t_gpts_tools as t;\")\n    results = cursor.fetchall()\n    db.close()\n\n    df = pd.DataFrame(\n        columns=[\n            '前端工具名',\n            '前端工具描述',\n            'tool_key',\n            'tool参数配置',\n            'function_name',\n            'function_description',\n            'function_args',\n        ]\n    )\n    for i, result in enumerate(results):\n        name, desc, tool_key, extra = result\n        if not extra:\n            extra = '{}'\n        tool_func = load_tools({tool_key: json.loads(extra)})[0]\n\n        df.loc[i, '前端工具名'] = name\n        df.loc[i, '前端工具描述'] = desc\n        df.loc[i, 'tool_key'] = tool_key\n        df.loc[i, 'tool参数配置'] = extra\n        df.loc[i, 'function_name'] = tool_func.name\n        df.loc[i, 'function_description'] = tool_func.description\n        df.loc[i, 'function_args'] = f\"{tool_func.args_schema.schema()['properties']}\"\n\n    return df\n\n\nif __name__ == '__main__':\n    tool = load_tools({\n        \"sina_realtime_info\": {\n\n        }\n    })[0]\n    tool.invoke(input={\"stock_symbol\": \"600519\", \"stock_exchange\": \"sh\", \"prefix\": \"s_\"})\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/message_types.py",
    "content": "from typing import Any\n\nfrom langchain_core.messages import FunctionMessage, ToolMessage\n\n\nclass LiberalFunctionMessage(FunctionMessage):\n    content: Any\n\n\nclass LiberalToolMessage(ToolMessage):\n    content: Any\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/__init__.py",
    "content": "from bisheng_langchain.gpts.prompts.assistant_prompt_opt import ASSISTANT_PROMPT_OPT\nfrom bisheng_langchain.gpts.prompts.assistant_prompt_base import ASSISTANT_PROMPT_DEFAULT\nfrom bisheng_langchain.gpts.prompts.assistant_prompt_cohere import ASSISTANT_PROMPT_COHERE\nfrom bisheng_langchain.gpts.prompts.breif_description_prompt import BREIF_DES_PROMPT\nfrom bisheng_langchain.gpts.prompts.opening_dialog_prompt import OPENDIALOG_PROMPT\nfrom bisheng_langchain.gpts.prompts.select_tools_prompt import HUMAN_MSG, SYS_MSG\n\n\n__all__ = [\n    \"ASSISTANT_PROMPT_DEFAULT\",\n    \"ASSISTANT_PROMPT_COHERE\",\n    \"ASSISTANT_PROMPT_OPT\",\n    \"OPENDIALOG_PROMPT\",\n    \"BREIF_DES_PROMPT\",\n    \"SYS_MSG\",\n    \"HUMAN_MSG\",\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/assistant_prompt_base.py",
    "content": "ASSISTANT_PROMPT_DEFAULT = \"You are a helpful assistant.\"\n\n# ASSISTANT_PROMPT_DEFAULT = \"\"\"\n# # role\n# 你是一名股票市场研究员。\n\n# # skill 1：股票市场行情分析\n# 当用户要求分析当日市场行情时，以表格形式展示当日股市情况：\n# - 行：沪深300、中证500、中证1000 以及 小计\n# - 列指标：当日涨跌幅、今年累计涨跌幅、成交额(单位：亿元)、成交额占比\n# - 小计 说明：对\"成交额\"列进行求和，其他列为空即可\n# - 指标计算说明：当日涨跌幅=实时行情数据涨跌幅; 今年累计涨跌幅=(实时行情数据现价-今年第一个交易日历史行情数据开盘价)/今年第一个交易日历史行情数据开盘价*100%; 成交额 = 实时行情数据成交额； 成交额占比=该指数占所有所有指数成交额的百分比。\n\n# 为了完成上述任务，你可以调用以下工具：\n# 1. 股票实时行情工具：获取当日现价、涨跌幅、成交额\n# 2. 股票历史行情工具：获取历史某日开盘价\n\n# 附：指数代码：沪深300(000300)、中证500(000905)、中证1000(000852)\n# \"\"\""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/assistant_prompt_cohere.py",
    "content": "preamble=\"\"\"You are a helpful assistant.\n\"\"\"\n\nASSISTANT_PROMPT_COHERE=\"\"\"{preamble}|<instruct>|Carefully perform the following instructions, in order, starting each with a new line.\nFirstly, You may need to use complex and advanced reasoning to complete your task and answer the question. Think about how you can use the provided tools to answer the question and come up with a high level plan you will execute.\nWrite 'Plan:' followed by an initial high level plan of how you will solve the problem including the tools and steps required.\nSecondly, Carry out your plan by repeatedly using actions, reasoning over the results, and re-evaluating your plan. Perform Action, Observation, Reflection steps with the following format. Write 'Action:' followed by a json formatted action containing the \"tool_name\" and \"parameters\"\n Next you will analyze the 'Observation:', this is the result of the action.\nAfter that you should always think about what to do next. Write 'Reflection:' followed by what you've figured out so far, any changes you need to make to your plan, and what you will do next including if you know the answer to the question.\n... (this Action/Observation/Reflection can repeat N times)\nThirdly, Decide which of the retrieved documents are relevant to the user's last input by writing 'Relevant Documents:' followed by comma-separated list of document numbers. If none are relevant, you should instead write 'None'.\nFourthly, Decide which of the retrieved documents contain facts that should be cited in a good answer to the user's last input by writing 'Cited Documents:' followed a comma-separated list of document numbers. If you dont want to cite any of them, you should instead write 'None'.\nFifthly, Write 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. Do not insert any citations or grounding markup.\nFinally, Write 'Grounded answer:' followed by a response to the user's last input in high quality natural english. Use the symbols <co: doc> and </co: doc> to indicate when a fact comes from a document in the search result, e.g <co: 4>my fact</co: 4> for a fact from document 4.\n\nAdditional instructions to note:\n- If the user's question is in Chinese, please answer it in Chinese. \n- 当问题中有涉及到时间信息时，比如最近6个月、昨天、去年等，你需要用时间工具查询时间信息。\n\"\"\".format(preamble=preamble)"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/assistant_prompt_opt.py",
    "content": "from langchain_core.prompts import PromptTemplate\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\n# 例如助手的身份、相关完成任务的具体方法和步骤、回答问题时的语气以及应该注意什么问题等\nsystem_template = \"\"\"你是一个prompt优化大师，你会得到一个助手的名字和简单描述，你需要根据这些信息，为助手生成一个合适的角色描述、详细的技能说明、相关约束信息，输出为markdown格式。你需要按照以下格式进行组织输出内容：\n```markdown\n## 角色\n你是一个[助手的角色]，[助手的角色描述]。\n\n## 技能\n1. [技能 1 的描述]：\n  - [技能 1 的具体内容]。\n  - [技能 1 的具体内容]。\n2. [技能 2 的描述]：\n  - [技能 2 的具体内容]。\n  - [技能 2 的具体内容]。\n\n## 限制\n- [限制 1 的描述]。\n- [限制 2 的描述]。\n```\n\n以下是一些例子：\n示例1：\n输入：\n助手名字: 金融分析助手\n助手描述: 1. 分析上市公司最新的年报财报；2. 获取上市公司的最新新闻；\n\n输出：\n```markdown\n## 角色\n你是一个金融分析师，会利用最新的信息和数据来分析公司的财务状况、市场趋势和行业动态，以帮助客户做出明智的投资决策。\n\n## 技能\n1. 分析上市公司最新的年报财报：\n  - 使用财务分析工具和技巧，对公司的财务报表进行详细的分析和解读。\n  - 评估公司的财务健康状况，包括营收、利润、资产负债表、现金流量等方面。\n  - 分析公司的财务指标，如利润率、偿债能力、周转率等，以评估其盈利能力和风险水平。\n  - 比较公司的财务表现与同行业其他公司的平均水平，以评估其相对竞争力。\n2. 获取上市公司的最新新闻：\n  - 使用新闻来源和数据库，定期获取上市公司的最新新闻和公告。\n  - 分析新闻对公司股价和投资者情绪的潜在影响。\n  - 关注公司的重大事件，如合并收购、产品发布、管理层变动等，以及这些事件对公司未来发展的影响。\n  - 结合财务分析和新闻分析，提供对公司的综合评估和投资建议。\n\n## 限制\n- 只讨论与金融分析相关的内容，拒绝回答与金融分析无关的话题。\n- 所有的输出内容必须按照给定的格式进行组织，不能偏离框架要求。\n- 分析部分不能超过 100 字。\n```\n\n示例2：\n输入：\n助手名字: 前端开发助手\n助手描述: 你的角色是前端开发，能帮助我把图片制作成html页面，css使用tailwind.css，ui库使用antd\n\n输出：\n```markdown\n# 角色\n你是一个前端开发工程师，可以使用 HTML、CSS 和 JavaScript 等技术构建网站和应用程序。\n\n## 技能\n1. 将图片制作成 HTML 页面\n  - 当用户需要将图片制作成 HTML 页面时，你可以根据用户提供的图片和要求，使用 HTML 和 CSS 等技术构建一个页面。\n  - 在构建页面时，你可以使用 Tailwind CSS 来简化 CSS 样式的编写，并使用 Antd 库来提供丰富的 UI 组件。\n  - 构建完成后，你可以将页面代码返回给用户，以便用户可以将其部署到服务器上或在本地查看。\n\n2. 提供前端开发相关的建议和帮助\n  - 当用户需要前端开发相关的建议和帮助时，你可以根据用户的问题，提供相关的建议和帮助。\n  - 你可以提供关于 HTML、CSS、JavaScript 等前端技术的建议和帮助，也可以提供关于前端开发工具和流程的建议和帮助。\n\n## 限制\n- 只讨论与前端开发相关的内容，拒绝回答与前端开发无关的话题。\n- 所输出的内容必须按照给定的格式进行组织，不能偏离框架要求。\n```\n\"\"\"\n\nhuman_template = \"\"\"\n输入：\n助手名字: {assistant_name}\n助手描述: {assistant_description}\n\n输出：\n\"\"\"\n\n\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(human_template),\n]\nASSISTANT_PROMPT_OPT = ChatPromptTemplate.from_messages(messages)"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/breif_description_prompt.py",
    "content": "from langchain_core.prompts import PromptTemplate\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\nsystem_template = \"\"\"\n你是一个生成简要描述的助手。接下来，你会收到一段关于任务助手的文本信息，你需要根据任务助手的文本信息生成一段简要的描述，描述不超过40个字。\n\n下面是一些示例\n例子1: \n输入文本：\n# 角色\n你是一个可以帮助用户在家赚钱的机器人，你可以提供各种赚钱的途径和方法，帮助用户实现财务自由。\n\n## 技能\n### 技能 1: 提供赚钱途径\n1. 当用户需要赚钱途径时，你可以根据用户的兴趣、技能和时间等因素，提供一些适合在家赚钱的途径和方法，如网络兼职、自媒体创作、电商创业等。\n2. 你需要向用户详细介绍每种途径的操作流程、注意事项和收益情况等，以便用户做出选择。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地开展赚钱活动。\n\n### 技能 2: 提供赚钱技巧\n1. 当用户需要赚钱技巧时，你可以向用户提供一些实用的赚钱技巧，如如何提高工作效率、如何节省成本、如何增加收入等。\n2. 你需要向用户详细介绍每种技巧的操作方法和注意事项，以便用户能够正确地运用这些技巧。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地实现财务自由。\n\n### 技能 3: 提供创业指导\n1. 当用户需要创业指导时，你可以向用户提供一些创业的基本知识和方法，如如何选择创业项目、如何制定创业计划、如何筹集创业资金等。\n2. 你需要向用户详细介绍每种方法的操作流程和注意事项，以便用户能够正确地开展创业活动。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地实现创业目标。\n\n## 限制\n- 只讨论与赚钱有关的内容，拒绝回答与赚钱无关的话题。\n- 所输出的内容必须按照给定的格式进行组织，不能偏离框架要求。\n\n根据上述输入的文本概括生成一段简要描述: \n针对用户的要求，提供赚钱途经、赚钱技巧和创业指导。\n\n\n例子2: \n输入文本：\n# 角色：Excel全能助手\n## 个人简介\n- 版本：1.0\n- 语言：中文\n- 描述：我是一名Excel全能助手，专注于帮助用户解决Excel相关的问题和提供高效的数据处理方案。\n\n## 功能特点\n- 数据处理：熟练掌握Excel的各种数据处理功能，包括筛选、排序、合并、拆分、透视表等，能够帮助用户快速处理大量数据。\n- 公式应用：精通Excel的各种常用公式和函数，能够帮助用户进行复杂的数据计算和分析，提供准确的结果。\n- 数据可视化：熟悉Excel的图表功能，能够帮助用户将数据以直观的方式展示，制作出美观、清晰的图表。\n- 自动化操作：了解Excel的宏和VBA编程，能够帮助用户实现自动化操作，提高工作效率。\n\n## 使用指南\n1. 数据处理：\n   - 使用筛选功能，快速筛选出符合条件的数据。\n   - 利用排序功能，对数据进行升序或降序排列。\n   - 使用合并和拆分功能，将多个单元格合并为一个或将一个单元格拆分为多个。\n   - 利用透视表功能，对大量数据进行汇总和分析。\n\n2. 公式应用：\n   - 使用常用公式，如SUM、AVERAGE、MAX、MIN等，进行数据计算。\n   - 利用逻辑函数，如IF、AND、OR等，进行条件判断和逻辑运算。\n   - 使用VLOOKUP和HLOOKUP函数，进行数据查找和匹配。\n   - 利用COUNTIF和SUMIF函数，进行条件统计和求和。\n\n3. 数据可视化：\n   - 利用图表功能，选择合适的图表类型，如柱状图、折线图、饼图等，展示数据。\n   - 调整图表的样式和布局，使其更加美观和易读。\n   - 添加数据标签和图例，增加图表的信息量和可读性。\n\n4. 自动化操作：\n   - 利用宏录制功能，记录一系列操作步骤，实现自动化操作。\n   - 使用VBA编程，编写自定义的宏，实现更复杂的自动化操作。\n   - 将宏和VBA代码应用到Excel工作簿中，提高工作效率和准确性。\n\n## 使用建议\n- 熟悉Excel的快捷键和常用操作，可以提高工作效率。\n- 在处理大量数据时，先备份原始数据，以防误操作导致数据丢失。\n- 学习和掌握Excel的高级功能和技巧，可以更好地应对复杂的数据处理需求。\n- 及时保存和备份Excel文件，以防止意外情况导致数据丢失。\n\n根据上述输入的文本概括生成一段简要描述: \n根据用户的需求，帮助用户解决Excel相关问题，包括数据处理、公式应用、数据可视化、使用建议等。\n\n你必须使用上述格式输出结果。\n\n\"\"\"\n\n\nhuman_template = \"\"\"\n输入文本：\n{description}\n\n根据上述输入的文本概括生成一段简要描述:\n\"\"\"\n\n\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(human_template),\n]\nBREIF_DES_PROMPT = ChatPromptTemplate.from_messages(messages)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/opening_dialog_prompt.py",
    "content": "from langchain_core.prompts import PromptTemplate\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\nsystem_template = \"\"\"\n你是一个生成开场白和预置问题的助手。接下来，你会收到一段关于任务助手的描述，你需要带入描述中的角色，以描述中的角色身份生成一段开场白，同时你还需要站在用户的角度生成几个用户可能的提问。输出格式如下：\n[\n    {{\n        \"开场白\": \"开场白内容\",\n        \"问题\": [\"问题1\", \"问题2\", \"问题3\"]\n    }}\n]\n\n下面是一些示例\n例子1: \n输入描述:\n# 角色\n你是一个可以帮助用户在家赚钱的机器人，你可以提供各种赚钱的途径和方法，帮助用户实现财务自由。\n\n## 技能\n### 技能 1: 提供赚钱途径\n1. 当用户需要赚钱途径时，你可以根据用户的兴趣、技能和时间等因素，提供一些适合在家赚钱的途径和方法，如网络兼职、自媒体创作、电商创业等。\n2. 你需要向用户详细介绍每种途径的操作流程、注意事项和收益情况等，以便用户做出选择。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地开展赚钱活动。\n\n### 技能 2: 提供赚钱技巧\n1. 当用户需要赚钱技巧时，你可以向用户提供一些实用的赚钱技巧，如如何提高工作效率、如何节省成本、如何增加收入等。\n2. 你需要向用户详细介绍每种技巧的操作方法和注意事项，以便用户能够正确地运用这些技巧。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地实现财务自由。\n\n### 技能 3: 提供创业指导\n1. 当用户需要创业指导时，你可以向用户提供一些创业的基本知识和方法，如如何选择创业项目、如何制定创业计划、如何筹集创业资金等。\n2. 你需要向用户详细介绍每种方法的操作流程和注意事项，以便用户能够正确地开展创业活动。\n3. 你还可以根据用户的需求和情况，提供一些个性化的建议和指导，帮助用户更好地实现创业目标。\n\n## 限制\n- 只讨论与赚钱有关的内容，拒绝回答与赚钱无关的话题。\n- 所输出的内容必须按照给定的格式进行组织，不能偏离框架要求。\n\n根据上述输入的描述生成开场白和预置问题:\n[\n    {{\n        \"开场白\": \"你好，我是一个可以帮助你在家赚钱的机器人，很高兴认识你。\",\n        \"问题\": [\"如何使用你的服务来在家赚钱?\", \"你能提供哪些在家赚钱的建议和技巧?\", \"你的服务如何帮助我实现财务自由?\"]\n    }}\n]\n\n\n例子2: \n输入描述:\n# 角色：Excel全能助手\n## 个人简介\n- 版本：1.0\n- 语言：中文\n- 描述：我是一名Excel全能助手，专注于帮助用户解决Excel相关的问题和提供高效的数据处理方案。\n\n## 功能特点\n- 数据处理：熟练掌握Excel的各种数据处理功能，包括筛选、排序、合并、拆分、透视表等，能够帮助用户快速处理大量数据。\n- 公式应用：精通Excel的各种常用公式和函数，能够帮助用户进行复杂的数据计算和分析，提供准确的结果。\n- 数据可视化：熟悉Excel的图表功能，能够帮助用户将数据以直观的方式展示，制作出美观、清晰的图表。\n- 自动化操作：了解Excel的宏和VBA编程，能够帮助用户实现自动化操作，提高工作效率。\n\n## 使用指南\n1. 数据处理：\n   - 使用筛选功能，快速筛选出符合条件的数据。\n   - 利用排序功能，对数据进行升序或降序排列。\n   - 使用合并和拆分功能，将多个单元格合并为一个或将一个单元格拆分为多个。\n   - 利用透视表功能，对大量数据进行汇总和分析。\n\n2. 公式应用：\n   - 使用常用公式，如SUM、AVERAGE、MAX、MIN等，进行数据计算。\n   - 利用逻辑函数，如IF、AND、OR等，进行条件判断和逻辑运算。\n   - 使用VLOOKUP和HLOOKUP函数，进行数据查找和匹配。\n   - 利用COUNTIF和SUMIF函数，进行条件统计和求和。\n\n3. 数据可视化：\n   - 利用图表功能，选择合适的图表类型，如柱状图、折线图、饼图等，展示数据。\n   - 调整图表的样式和布局，使其更加美观和易读。\n   - 添加数据标签和图例，增加图表的信息量和可读性。\n\n4. 自动化操作：\n   - 利用宏录制功能，记录一系列操作步骤，实现自动化操作。\n   - 使用VBA编程，编写自定义的宏，实现更复杂的自动化操作。\n   - 将宏和VBA代码应用到Excel工作簿中，提高工作效率和准确性。\n\n## 使用建议\n- 熟悉Excel的快捷键和常用操作，可以提高工作效率。\n- 在处理大量数据时，先备份原始数据，以防误操作导致数据丢失。\n- 学习和掌握Excel的高级功能和技巧，可以更好地应对复杂的数据处理需求。\n- 及时保存和备份Excel文件，以防止意外情况导致数据丢失。\n\n根据上述输入的描述生成开场白和预置问题:\n[\n    {{\n        \"开场白\": \"你好，我是一名Excel全能助手，可以帮助你解决Excel相关的问题和提供高效的数据处理方案。\",\n        \"问题\": [\"如何快速处理大量数据?\", \"如何使用Excel进行复杂的数据计算和分析?\", \"如何将数据以直观的方式展示，制作出美观、清晰的图表?\"]\n    }}\n]\n\n你必须使用上述格式输出结果。\n\"\"\"\n\nhuman_template = \"\"\"\n输入描述:\n{description}\n\n根据上述输入的描述生成开场白和预置问题:\n\"\"\"\n\n\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(human_template),\n]\nOPENDIALOG_PROMPT = ChatPromptTemplate.from_messages(messages)"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/react_agent_prompt.py",
    "content": "from typing import List, Union\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n    MessagesPlaceholder\n)\nfrom langchain_core.prompts.prompt import PromptTemplate\nfrom langchain_core.messages import FunctionMessage, SystemMessage, ToolMessage, AIMessage, HumanMessage, ChatMessage\n\n\nsystem_temp = \"\"\"\n{assistant_message}\n\nRespond to the human as helpfully and accurately as possible. You have access to the following tools:\n\n{tools}\n\nUse a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).\n\nValid \"action\" values: \"Final Answer\" or {tool_names}\n\nProvide only ONE action per $JSON_BLOB, as shown:\n\n```\n{{\n  \"action\": $TOOL_NAME,\n  \"action_input\": $INPUT\n}}\n```\n\nFollow this format:\n\nQuestion: input question to answer\nThought: consider previous and subsequent steps\nAction:\n```\n$JSON_BLOB\n```\nObservation: action result\n... (repeat Thought/Action/Observation N times)\nThought: I know what to respond\nAction:\n```\n{{\n  \"action\": \"Final Answer\",\n  \"action_input\": \"Final response to human\"\n}}\n\nBegin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation\n\"\"\"\n\nhuman_temp = \"\"\"Question: {input}\n\nThought: {agent_scratchpad}\n(reminder to respond in a JSON blob no matter what)\"\"\"\n\n\nreact_agent_prompt = ChatPromptTemplate(\n    input_variables=['agent_scratchpad', 'input', 'tool_names', 'tools', 'assistant_message'], \n    optional_variables=['chat_history'], \n    input_types={'chat_history': List[Union[AIMessage, HumanMessage, ChatMessage, SystemMessage, FunctionMessage, ToolMessage]]}, \n    messages=[\n        SystemMessagePromptTemplate.from_template(system_temp),\n        MessagesPlaceholder(variable_name='chat_history', optional=True), \n        HumanMessagePromptTemplate.from_template(human_temp)\n    ]\n)"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/prompts/select_tools_prompt.py",
    "content": "SYS_MSG = \"\"\"\n你是一个善于分析用户需求的专家，你非常擅长根据用户对任务的描述，从你的工具箱中选择合适的工具给用户。\n你的工具箱中有以下工具，其中tool_name表示这个工具的名字，tool_description表示工具的用途：{tool_pool}。\n\n在选择工具时，你需要遵守以下规则：\n1. 你需要根据用户输入的任务描述，选择最符合用户需求的工具，不要随意选择工具给用户。\n2. 只能从你的工具箱中选择工具，一定不要自己编造工具箱中不存在的工具给用户！\n3. 你只需要返回工具的名称，不需要返回工具的描述以及其他额外的信息，返回的格式为：['tool1', 'tool2', 'tool3']。\n4. 如果你觉得没有合适的工具，请返回：[]。\n5. 当任务描述中出现“Skill”时，你可以重点关注“Skill”中的内容，这些内容可能会帮助你更好地选择工具。\n6. 如果你回答对了，将会获得100块钱的奖励，如果回答错误，将会扣除50块钱。\n\n以下是一些示例:\n例子1:\n任务名: 论文助手\n任务描述: 帮助学生查找相关论文\n建议的工具: ['arxiv', 'bing_search']\n\n例子2:\n任务名: 时间查询\n任务描述: 查询当前时间\n建议的工具: ['get_current_time']\n\"\"\"\n\nHUMAN_MSG = \"\"\"\n任务名: {task_name}\n任务描述: {task_description}\n建议的工具: \n\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/__init__.py",
    "content": "from typing import Any, Callable, Dict, List, Tuple\n\n# from .eastmoney import\nfrom bisheng_langchain.gpts.tools.api_tools.firecrawl import FireCrawl\nfrom bisheng_langchain.gpts.tools.api_tools.jina import JinaTool\nfrom bisheng_langchain.gpts.tools.api_tools.silicon_flow import SiliconFlow\nfrom bisheng_langchain.gpts.tools.message.dingding import DingdingMessageTool\nfrom bisheng_langchain.gpts.tools.message.email import EmailMessageTool\nfrom bisheng_langchain.gpts.tools.message.feishu import FeishuMessageTool\nfrom bisheng_langchain.gpts.tools.message.wechat import WechatMessageTool\nfrom langchain_core.tools import BaseTool\nfrom mypy_extensions import KwArg\n\nfrom .flow import FlowTools\nfrom .macro_data import MacroData\nfrom .sina import StockInfo\nfrom .tianyancha import CompanyInfo\n\n# 筛选出类方法\ntianyancha_class_methods = [\n    method for method in CompanyInfo.__dict__\n    if isinstance(CompanyInfo.__dict__[method], classmethod)\n]\n\n_TIAN_YAN_CHA_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    f'tianyancha_{name}': (CompanyInfo.get_api_tool, ['api_key', 'proxy'])\n    for name in tianyancha_class_methods\n}\n\nsina_class_methods = [\n    method for method in StockInfo.__dict__ if isinstance(StockInfo.__dict__[method], classmethod)\n]\n\n_SINA_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    f'sina_{name}': (StockInfo.get_api_tool, ['proxy'])\n    for name in sina_class_methods\n}\n\nmacro_class_methods = [\n    method for method in MacroData.__dict__ if isinstance(MacroData.__dict__[method], classmethod)\n]\n\n_MACRO_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    f'macro_{name}': (MacroData.get_api_tool, [])\n    for name in macro_class_methods\n}\n\n_tmp_flow = ['knowledge_retrieve']\n_TMP_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    f'flow_{name}': (FlowTools.get_api_tool, ['collection_id', 'description'])\n    for name in _tmp_flow\n}\nfirecrawl_class_methods = [\n    method for method in FireCrawl.__dict__\n    if isinstance(FireCrawl.__dict__[method], classmethod)\n]\n\n_FIRE_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'fire_search_crawl': (FireCrawl.get_api_tool, ['api_key', 'maxdepth', 'limit', 'timeout', 'base_url']),\n    'fire_search_scrape': (FireCrawl.get_api_tool, ['api_key', 'maxdepth', 'limit', 'timeout', 'base_url'])\n}\njina_class_methods = [\n    method for method in JinaTool.__dict__\n    if isinstance(JinaTool.__dict__[method], classmethod)\n]\n_JINA_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'jina_get_markdown': (JinaTool.get_api_tool, ['jina_api_key'])\n}\nsilicon_class_methods = [\n    method for method in SiliconFlow.__dict__\n    if isinstance(SiliconFlow.__dict__[method], classmethod)\n]\n_SILICON_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'silicon_stable_diffusion': (SiliconFlow.get_api_tool, ['siliconflow_api_key']),\n    'silicon_flux': (SiliconFlow.get_api_tool, ['siliconflow_api_key'])\n}\ndingding_class_methods = [\n    method for method in DingdingMessageTool.__dict__\n    if isinstance(DingdingMessageTool.__dict__[method], classmethod)\n]\n\n_DING_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'ding_send_message': (DingdingMessageTool.get_api_tool, [])\n}\n\nemail_class_methods = [\n    method for method in EmailMessageTool.__dict__\n    if isinstance(EmailMessageTool.__dict__[method], classmethod)\n]\n\n_EMAIL_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'email_send_email': (EmailMessageTool.get_api_tool,\n                         ['email_account', 'email_password', 'smtp_server', 'smtp_port', 'encrypt_method']),\n}\n\nfeishu_class_methods = [\n    method for method in FeishuMessageTool.__dict__\n    if isinstance(FeishuMessageTool.__dict__[method], classmethod)\n]\n\n_FEISHU_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'feishu_send_message': (FeishuMessageTool.get_api_tool, ['app_id', 'app_secret']),\n    'feishu_get_chat_messages': (FeishuMessageTool.get_api_tool, ['app_id', 'app_secret']),\n}\n\nwechat_class_methods = [\n    method for method in WechatMessageTool.__dict__\n    if isinstance(WechatMessageTool.__dict__[method], classmethod)\n]\n\n_WECHAT_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = {\n    'wechat_send_message': (WechatMessageTool.get_api_tool, [])\n}\n\nALL_API_TOOLS = {}\nALL_API_TOOLS.update(_TIAN_YAN_CHA_TOOLS)\nALL_API_TOOLS.update(_SINA_TOOLS)\nALL_API_TOOLS.update(_MACRO_TOOLS)\nALL_API_TOOLS.update(_TMP_TOOLS)\nALL_API_TOOLS.update(_FIRE_TOOLS)\nALL_API_TOOLS.update(_JINA_TOOLS)\nALL_API_TOOLS.update(_SILICON_TOOLS)\nALL_API_TOOLS.update(_DING_TOOLS)\nALL_API_TOOLS.update(_EMAIL_TOOLS)\nALL_API_TOOLS.update(_FEISHU_TOOLS)\nALL_API_TOOLS.update(_WECHAT_TOOLS)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/base.py",
    "content": "from typing import Any, Dict, Tuple, Type, Union, Optional, List\n\nfrom langchain_core.tools import BaseTool, Tool\nfrom loguru import logger\nfrom pydantic import ConfigDict, model_validator, BaseModel, Field\n\nfrom bisheng_langchain.utils.requests import Requests, RequestsWrapper\n\n\nclass ApiArg(BaseModel):\n    query: str = Field(description='query to look up in this tool')\n\n\nclass MultArgsSchemaTool(Tool):\n\n    def _to_args_and_kwargs(self, tool_input: Union[str, Dict], tool_call_id: Optional[str]) -> Tuple[Tuple, Dict]:\n        # For backwards compatibility, if run_input is a string,\n        # pass as a positional argument.\n        if isinstance(tool_input, str):\n            return (tool_input,), {}\n        else:\n            return (), tool_input\n\n\nclass APIToolBase(BaseModel):\n    \"\"\"Manage tianyancha company client.\"\"\"\n\n    client: Any = Field(default=None, exclude=True)  #: :meta private:\n    async_client: Any = Field(default=None, exclude=True)  #: :meta private:\n    headers: Dict[str, Any] = {}\n    request_timeout: int = 30\n    url: str = None\n    params: Dict[str, Any] = {}\n    input_key: str = 'keyword'\n    proxy: Optional[str] = None\n    args_schema: Type[BaseModel] = ApiArg\n    model_config = ConfigDict(extra=\"forbid\")\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        timeout = values.get('request_timeout', 30)\n        if not values.get('client'):\n            values['client'] = Requests(headers=values.get('headers'), request_timeout=timeout,\n                                        proxy=values.get('proxy'))\n        if not values.get('async_client'):\n            values['async_client'] = RequestsWrapper(headers=values.get('headers'),\n                                                     proxy=values.get('proxy'),\n                                                     request_timeout=timeout)\n        return values\n\n    def run(self, query: str, **kwargs) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        if query:\n            self.params[self.input_key] = query\n        if kwargs:\n            self.params.update(kwargs)\n        if self.params:\n            param = '&'.join([f'{k}={v}' for k, v in self.params.items()])\n            url = self.url + '?' + param if '?' not in self.url else self.url + '&' + param\n        else:\n            url = self.url\n        logger.info('api_call url={}', url)\n        resp = self.client.get(url)\n        if resp.status_code != 200:\n            logger.info('api_call_fail res={}', resp.text)\n        return resp.text[:10000]\n\n    async def arun(self, query: str, **kwargs) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        if query:\n            self.params[self.input_key] = query\n        if kwargs:\n            self.params.update(kwargs)\n        if self.params:\n            param = '&'.join([f'{k}={v}' for k, v in self.params.items()])\n            url = self.url + '?' + param if '?' not in self.url else self.url + '&' + param\n        else:\n            url = self.url\n        logger.info('api_call url={}', url)\n        resp = await self.async_client.aget(url)\n        logger.info(resp[:10000])\n        return resp[:10000]\n\n    @classmethod\n    def get_api_tool(cls, name, **kwargs: Any) -> BaseTool:\n        attr_name = name.split('_', 1)[-1]\n        class_method = getattr(cls, attr_name)\n\n        return MultArgsSchemaTool(name=name,\n                                  description=class_method.__doc__,\n                                  func=class_method(**kwargs).run,\n                                  coroutine=class_method(**kwargs).arun,\n                                  args_schema=class_method(**kwargs).args_schema)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/firecrawl.py",
    "content": "import time\nfrom typing import Any\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    target_url: str = Field(description=\"params target_url\")\n\n\nclass FireCrawl(BaseModel):\n    api_key: str = Field(description=\"apikey\")\n    base_url: str = Field(description=\"params base_url\")\n    maxdepth: int = Field(description=\"params maxDepth\")\n    limit: int = Field(description=\"params limit\")\n    timeout: int = Field(description=\"params timeout\")\n\n    def search_crawl(self, target_url: str) -> str:\n        \"\"\"crawl from firecrawl\"\"\"\n        url = \"https://api.firecrawl.dev/v1/crawl\"\n        headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": \"Bearer \" + self.api_key,\n        }\n        params = {\n            \"url\": target_url,\n            \"maxDepth\": self.maxdepth,\n            \"limit\": self.limit,\n            \"scrapeOptions\": {\n                \"formats\": [\"markdown\"],\n            },\n        }\n        response = requests.post(url, json=params, headers=headers)\n        if response.status_code != 200:\n            return f\"failed with status code: {response.status_code}, {response.text}\"\n        status_url = response.json().get(\"url\")\n        if not status_url:\n            return f\"not found url from {response.text}\"\n        start_time = time.time()\n        while True:\n            response = requests.get(status_url, headers=headers)\n            if response.status_code != 200:\n                return f\"failed with status code: {response.status_code}, {response.text}\"\n            data = response.json()\n            if time.time() - start_time > self.timeout:\n                return \"timeout\"\n            if data[\"status\"] == \"completed\":\n                return response.text\n            elif data[\"status\"] == \"failed\":\n                return \"failed\"\n            else:\n                time.sleep(5)\n\n    def search_scrape(self, target_url: str) -> str:\n        \"\"\"scrape from firecrawl\"\"\"\n        url = \"https://api.firecrawl.dev/v1/scrape\"\n        headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": \"Bearer \" + self.api_key,\n        }\n        params = {\n            \"url\": target_url,\n            \"formats\": [\"markdown\"],\n            \"timeout\": self.timeout,\n        }\n\n        response = requests.post(url, json=params, headers=headers)\n        return response.text\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"FireCrawl\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = FireCrawl(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/flow.py",
    "content": "from loguru import logger\nfrom pydantic import BaseModel, Field\nfrom typing import Any\nfrom .base import APIToolBase\nfrom .base import MultArgsSchemaTool\nfrom langchain_core.tools import BaseTool\n\n\nclass FlowTools(APIToolBase):\n\n    def run(self, query: str) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        if query:\n            self.params[self.input_key] = {\n                'question': query\n            }\n\n        url = self.url\n        logger.info('api_call url={}', url)\n        resp = self.client.post(url, json=self.params)\n        if resp.status_code != 200:\n            logger.info('api_call_fail res={}', resp.text)\n        return resp.text\n\n    async def arun(self, query: str) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        if query:\n            self.params[self.input_key] = {\n                'question': query\n            }\n\n        url = self.url\n        logger.info('api_call url={}', url)\n        resp = await self.async_client.apost(url, json=self.params)\n        logger.info(resp)\n        return resp\n\n    @classmethod\n    def knowledge_retrieve(cls, collection_id: int = None) -> str:    \n\n        flow_id = 'c7985115-a9d2-446a-9c55-40b5728ffb52'\n        url = 'http://192.168.106.120:3002/api/v1/process/{}'.format(flow_id)\n        input_key = 'inputs'\n        params = {\n            'tweaks': {\n                'ElasticKeywordsSearch-pFFyR': {\n                    'collection_id': collection_id\n                },\n                'Milvus-9KIR6': {\n                    'collection_id': collection_id\n                }\n            }\n        }\n\n        class InputArgs(BaseModel):\n            query: str = Field(description='questions to ask')\n\n        return cls(url=url, params=params, input_key=input_key, args_schema=InputArgs)\n    \n    @classmethod\n    def get_api_tool(cls, name, **kwargs: Any) -> BaseTool:\n        attr_name = name.split('_', 1)[-1]\n        class_method = getattr(cls, attr_name)\n        function_description = kwargs.get('description','')\n        kwargs.pop('description')\n        return MultArgsSchemaTool(name=name + '_' +str(kwargs.get('collection_id')),\n                                  description=function_description,\n                                  func=class_method(**kwargs).run,\n                                  coroutine=class_method(**kwargs).arun,\n                                  args_schema=class_method(**kwargs).args_schema)\n    \n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/jina.py",
    "content": "from typing import Any, Optional\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    # jina_api_key: Optional[str] = Field(default=None,description=\"jina api key\")\n    target_url: Optional[str] = Field(default=None,description=\"params target_url\")\n\n\nclass JinaTool(BaseModel):\n\n    jina_api_key: str = Field(default=None,description=\"jina api key\")\n\n    def get_markdown(self, target_url: str) -> Any:\n        \"\"\"get url from jina api\"\"\"\n        url = \"https://r.jina.ai/\" + target_url\n\n        headers = None\n        if self.jina_api_key and len(self.jina_api_key)>0 :\n            headers = {\n                \"Content-Type\": \"application/json\",\n                \"Authorization\": \"Bearer \" + self.jina_api_key,\n            }\n\n        response = requests.get(url, headers=headers)\n\n        return response.text\n        \n\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"JinaTool\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = JinaTool(jina_api_key=kwargs.get('jina_api_key'))\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/macro_data.py",
    "content": "import json\nimport time\nfrom typing import Any\n\nimport httpx\nimport pandas as pd\nimport requests\nfrom langchain_core.tools import BaseTool\nfrom pydantic import BaseModel, Field\n\nfrom .base import MultArgsSchemaTool\n\n\nclass QueryArg(BaseModel):\n    start_date: str = Field(default='', description='开始月份, 使用YYYY-MM-DD 方式表示', examples=['2023-01-01'])\n    end_date: str = Field(default='', description='结束月份，使用YYYY-MM-DD 方式表示', examples=['2023-05-01'])\n\n\nclass MacroData(BaseModel):\n\n    @classmethod\n    def china_shrzgm(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国社会融资规模增量月度统计数据。\\\n返回月份，社会融资规模增量(单位：亿元)，\\\n以及社融分项包括：人民币贷款，外币贷款，委托贷款，\\\n信托贷款，未贴现银行承兑汇票，企业债券，非金融企业境内股票融资\n        \"\"\"\n        url = 'https://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery'\n        r = httpx.post(url)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json)\n        temp_df.columns = [\n            '月份',\n            '其中-未贴现银行承兑汇票',\n            '其中-委托贷款',\n            '其中-委托贷款外币贷款',\n            '其中-人民币贷款',\n            '其中-企业债券',\n            '社会融资规模增量',\n            '其中-非金融企业境内股票融资',\n            '其中-信托贷款',\n        ]\n        temp_df = temp_df[\n            [\n                '月份',\n                '社会融资规模增量',\n                '其中-人民币贷款',\n                '其中-委托贷款外币贷款',\n                '其中-委托贷款',\n                '其中-信托贷款',\n                '其中-未贴现银行承兑汇票',\n                '其中-企业债券',\n                '其中-非金融企业境内股票融资',\n            ]\n        ]\n        temp_df['社会融资规模增量'] = pd.to_numeric(temp_df['社会融资规模增量'], errors='coerce')\n        temp_df['其中-人民币贷款'] = pd.to_numeric(temp_df['其中-人民币贷款'], errors='coerce')\n        temp_df['其中-委托贷款外币贷款'] = pd.to_numeric(temp_df['其中-委托贷款外币贷款'], errors='coerce')\n        temp_df['其中-委托贷款'] = pd.to_numeric(temp_df['其中-委托贷款'], errors='coerce')\n        temp_df['其中-信托贷款'] = pd.to_numeric(temp_df['其中-信托贷款'], errors='coerce')\n        temp_df['其中-未贴现银行承兑汇票'] = pd.to_numeric(temp_df['其中-未贴现银行承兑汇票'], errors='coerce')\n        temp_df['其中-企业债券'] = pd.to_numeric(temp_df['其中-企业债券'], errors='coerce')\n        temp_df['其中-非金融企业境内股票融资'] = pd.to_numeric(temp_df['其中-非金融企业境内股票融资'], errors='coerce')\n        temp_df.sort_values(['月份'], inplace=True)\n        if start_date and end_date:\n            start = start_date.split('-')[0] + start_date.split('-')[1]\n            end = end_date.split('-')[0] + end_date.split('-')[1]\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n\n        temp_df.reset_index(drop=True, inplace=True)\n        return temp_df.to_markdown()\n\n    # 金十数据中心-经济指标-中国-国民经济运行状况-经济状况-中国GDP年率报告\n    @classmethod\n    def china_gdp_yearly(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国国内生产总值（GDP）季度统计数据。\\\n返回当年累计季度，GDP 绝对值（单位：亿元），同比增长（单位：%），\\\n第一产业 GDP 绝对值，（单位：亿元），第一产业同比增长（单位：%），\\\n第二产业 GDP 绝对值，（单位：亿元），第二产业同比增长（单位：%），\\\n第三产业 GDP 绝对值，（单位：亿元），第三产业同比增长（单位：%）\n        \"\"\"\n        JS_CHINA_GDP_YEARLY_URL = 'https://cdn.jin10.com/dc/reports/dc_chinese_gdp_yoy_all.js?v={}&_={}'\n        t = time.time()\n        r = requests.get(JS_CHINA_GDP_YEARLY_URL.format(str(int(round(t * 1000))), str(int(round(t * 1000)) + 90)))\n        json_data = json.loads(r.text[r.text.find('{'): r.text.rfind('}') + 1])\n        date_list = [item['date'] for item in json_data['list']]\n        value_list = [item['datas']['中国GDP年率报告'] for item in json_data['list']]\n        value_df = pd.DataFrame(value_list)\n        value_df.columns = json_data['kinds']\n        value_df.index = pd.to_datetime(date_list)\n        temp_df = value_df['今值(%)']\n        url = 'https://datacenter-api.jin10.com/reports/list_v2'\n        params = {\n            'max_date': '',\n            'category': 'ec',\n            'attr_id': '57',\n            '_': str(int(round(t * 1000))),\n        }\n        headers = {\n            \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n                          \"Chrome/107.0.0.0 Safari/537.36\",\n            \"x-app-id\": \"rU6QIu7JHe2gOUeR\",\n            \"x-csrf-token\": \"x-csrf-token\",\n            \"x-version\": \"1.0.0\",\n        }\n        r = requests.get(url, params=params, headers=headers)\n        temp_se = pd.DataFrame(r.json()['data']['values']).iloc[:, :2]\n        temp_se.index = pd.to_datetime(temp_se.iloc[:, 0])\n        temp_se = temp_se.iloc[:, 1]\n        temp_df = pd.concat([temp_df, temp_se])\n        temp_df.dropna(inplace=True)\n        temp_df.sort_index(inplace=True)\n        temp_df = temp_df.reset_index()\n        temp_df.columns = ['date', 'value']\n        # temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date\n        temp_df['value'] = pd.to_numeric(temp_df['value'])\n        temp_df = temp_df.drop_duplicates()\n        if start_date and end_date:\n            temp_df = temp_df[(temp_df['date'] >= start_date) & (temp_df['date'] <= end_date)]\n        return temp_df.to_markdown()\n\n    @classmethod\n    def china_cpi(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国居民消费价格指数(CPI，上年同月=100)月度统计数据。\\\n返回月份，全国当月 CPI，全国当月同比增长，全国当月环比增长，全国当年 CPI 累计值；\\\n城市当月 CPI，城市当月同比增长，城市当月环比增长，城市当年 CPI 累计值；\\\n农村当月 CPI，农村当月同比增长，农村当月环比增长，农村当年 CPI 累计值。\n        \"\"\"\n        url = 'https://datacenter-web.eastmoney.com/api/data/v1/get'\n        params = {\n            'columns': 'REPORT_DATE,TIME,NATIONAL_SAME,NATIONAL_BASE,NATIONAL_SEQUENTIAL,NATIONAL_ACCUMULATE,CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE',\n            # noqa\n            'pageNumber': '1',\n            'pageSize': '2000',\n            'sortColumns': 'REPORT_DATE',\n            'sortTypes': '-1',\n            'source': 'WEB',\n            'client': 'WEB',\n            'reportName': 'RPT_ECONOMY_CPI',\n            'p': '1',\n            'pageNo': '1',\n            'pageNum': '1',\n            '_': '1669047266881',\n        }\n        r = requests.get(url, params=params)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json['result']['data'])\n        temp_df.columns = [\n            '-',\n            '月份',\n            '全国-同比增长',\n            '全国-当月',\n            '全国-环比增长',\n            '全国-累计',\n            '城市-同比增长',\n            '城市-当月',\n            '城市-环比增长',\n            '城市-累计',\n            '农村-同比增长',\n            '农村-当月',\n            '农村-环比增长',\n            '农村-累计',\n        ]\n        temp_df = temp_df[\n            [\n                '月份',\n                '全国-当月',\n                '全国-同比增长',\n                '全国-环比增长',\n                '全国-累计',\n                '城市-当月',\n                '城市-同比增长',\n                '城市-环比增长',\n                '城市-累计',\n                '农村-当月',\n                '农村-同比增长',\n                '农村-环比增长',\n                '农村-累计',\n            ]\n        ]\n        temp_df['全国-当月'] = pd.to_numeric(temp_df['全国-当月'], errors='coerce')\n        temp_df['全国-同比增长'] = pd.to_numeric(temp_df['全国-同比增长'], errors='coerce')\n        temp_df['全国-环比增长'] = pd.to_numeric(temp_df['全国-环比增长'], errors='coerce')\n        temp_df['全国-累计'] = pd.to_numeric(temp_df['全国-累计'], errors='coerce')\n        temp_df['城市-当月'] = pd.to_numeric(temp_df['城市-当月'], errors='coerce')\n        temp_df['城市-同比增长'] = pd.to_numeric(temp_df['城市-同比增长'], errors='coerce')\n        temp_df['城市-环比增长'] = pd.to_numeric(temp_df['城市-环比增长'], errors='coerce')\n        temp_df['城市-累计'] = pd.to_numeric(temp_df['城市-累计'], errors='coerce')\n        temp_df['农村-当月'] = pd.to_numeric(temp_df['农村-当月'], errors='coerce')\n        temp_df['农村-同比增长'] = pd.to_numeric(temp_df['农村-同比增长'], errors='coerce')\n        temp_df['农村-环比增长'] = pd.to_numeric(temp_df['农村-环比增长'], errors='coerce')\n        temp_df['农村-累计'] = pd.to_numeric(temp_df['农村-累计'], errors='coerce')\n        if start_date and end_date:\n            start = start_date.split('-')[0] + '年' + start_date.split('-')[1] + '月份'\n            end = end_date.split('-')[0] + '年' + end_date.split('-')[1] + '月份'\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n\n        return temp_df.to_markdown()\n\n    @classmethod\n    def china_ppi(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国工业品出厂价格指数（PPI）月度统计数据。返回月份，当月 PPI，当月同比增长，当年 CPI 累计值。\"\"\"\n        url = 'https://datacenter-web.eastmoney.com/api/data/v1/get'\n        params = {\n            'columns': 'REPORT_DATE,TIME,BASE,BASE_SAME,BASE_ACCUMULATE',\n            'pageNumber': '1',\n            'pageSize': '2000',\n            'sortColumns': 'REPORT_DATE',\n            'sortTypes': '-1',\n            'source': 'WEB',\n            'client': 'WEB',\n            'reportName': 'RPT_ECONOMY_PPI',\n            'p': '1',\n            'pageNo': '1',\n            'pageNum': '1',\n            '_': '1669047266881',\n        }\n        r = requests.get(url, params=params)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json['result']['data'])\n        temp_df.columns = [\n            '-',\n            '月份',\n            '当月',\n            '当月同比增长',\n            '累计',\n        ]\n        temp_df = temp_df[\n            [\n                '月份',\n                '当月',\n                '当月同比增长',\n                '累计',\n            ]\n        ]\n        temp_df['当月'] = pd.to_numeric(temp_df['当月'], errors='coerce')\n        temp_df['当月同比增长'] = pd.to_numeric(temp_df['当月同比增长'], errors='coerce')\n        temp_df['累计'] = pd.to_numeric(temp_df['累计'], errors='coerce')\n        if start_date and end_date:\n            start = start_date.split('-')[0] + '年' + start_date.split('-')[1] + '月份'\n            end = end_date.split('-')[0] + '年' + end_date.split('-')[1] + '月份'\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n        return temp_df.to_markdown()\n\n    @classmethod\n    def china_pmi(cls, start_date: str = '', end_date: str = '') -> str:\n        \"\"\"中国 PMI （采购经理人指数）月度统计数据。\n        返回数据包括：月份制造业 PMI，制造业 PMI 同比增长，非制造业 PMI，非制造业 PMI 同比增长。\n        \"\"\"\n        url = \"https://datacenter-web.eastmoney.com/api/data/v1/get\"\n        params = {\n            \"columns\": \"REPORT_DATE,TIME,MAKE_INDEX,MAKE_SAME,NMAKE_INDEX,NMAKE_SAME\",\n            \"pageNumber\": \"1\",\n            \"pageSize\": \"2000\",\n            \"sortColumns\": \"REPORT_DATE\",\n            \"sortTypes\": \"-1\",\n            \"source\": \"WEB\",\n            \"client\": \"WEB\",\n            \"reportName\": \"RPT_ECONOMY_PMI\",\n            \"p\": \"1\",\n            \"pageNo\": \"1\",\n            \"pageNum\": \"1\",\n            \"_\": \"1669047266881\",\n        }\n        r = requests.get(url, params=params)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n        temp_df.columns = [\n            \"-\",\n            \"月份\",\n            \"制造业-指数\",\n            \"制造业-同比增长\",\n            \"非制造业-指数\",\n            \"非制造业-同比增长\",\n        ]\n        temp_df = temp_df[\n            [\n                \"月份\",\n                \"制造业-指数\",\n                \"制造业-同比增长\",\n                \"非制造业-指数\",\n                \"非制造业-同比增长\",\n            ]\n        ]\n        temp_df[\"制造业-指数\"] = pd.to_numeric(temp_df[\"制造业-指数\"], errors=\"coerce\")\n        temp_df[\"制造业-同比增长\"] = pd.to_numeric(\n            temp_df[\"制造业-同比增长\"], errors=\"coerce\"\n        )\n        temp_df[\"非制造业-指数\"] = pd.to_numeric(temp_df[\"非制造业-指数\"], errors=\"coerce\")\n        temp_df[\"非制造业-同比增长\"] = pd.to_numeric(\n            temp_df[\"非制造业-同比增长\"], errors=\"coerce\"\n        )\n        if start_date and end_date:\n            start = start_date.split('-')[0] + '年' + start_date.split('-')[1] + '月份'\n            end = end_date.split('-')[0] + '年' + end_date.split('-')[1] + '月份'\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n        return temp_df.to_markdown()\n\n    @classmethod\n    def china_money_supply(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国货币供应量（M2，M1，M0）月度统计数据。\\\n返回月份，M2 数量（单位：亿元），M2 同比（单位：%），\\\nM2 环比（单位：%）， M1 数量（单位：亿元），\\\nM1 同比（单位：%），M1 环比（单位：%）， \\\nM0数量（单位：亿元），M0 同比（单位：%），M0 环比（单位：%）\n        \"\"\"\n        url = 'https://datacenter-web.eastmoney.com/api/data/v1/get'\n        params = {\n            'columns': 'REPORT_DATE,TIME,BASIC_CURRENCY,BASIC_CURRENCY_SAME,BASIC_CURRENCY_SEQUENTIAL,CURRENCY,CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL',\n            # noqa\n            'pageNumber': '1',\n            'pageSize': '2000',\n            'sortColumns': 'REPORT_DATE',\n            'sortTypes': '-1',\n            'source': 'WEB',\n            'client': 'WEB',\n            'reportName': 'RPT_ECONOMY_CURRENCY_SUPPLY',\n            'p': '1',\n            'pageNo': '1',\n            'pageNum': '1',\n            '_': '1669047266881',\n        }\n        r = requests.get(url, params=params)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json['result']['data'])\n        temp_df.columns = [\n            '-',\n            '月份',\n            '货币和准货币(M2)-数量(亿元)',\n            '货币和准货币(M2)-同比增长',\n            '货币和准货币(M2)-环比增长',\n            '货币(M1)-数量(亿元)',\n            '货币(M1)-同比增长',\n            '货币(M1)-环比增长',\n            '流通中的现金(M0)-数量(亿元)',\n            '流通中的现金(M0)-同比增长',\n            '流通中的现金(M0)-环比增长',\n        ]\n        temp_df = temp_df[\n            [\n                '月份',\n                '货币和准货币(M2)-数量(亿元)',\n                '货币和准货币(M2)-同比增长',\n                '货币和准货币(M2)-环比增长',\n                '货币(M1)-数量(亿元)',\n                '货币(M1)-同比增长',\n                '货币(M1)-环比增长',\n                '流通中的现金(M0)-数量(亿元)',\n                '流通中的现金(M0)-同比增长',\n                '流通中的现金(M0)-环比增长',\n            ]\n        ]\n\n        temp_df['货币和准货币(M2)-数量(亿元)'] = pd.to_numeric(temp_df['货币和准货币(M2)-数量(亿元)'])\n        temp_df['货币和准货币(M2)-同比增长'] = pd.to_numeric(temp_df['货币和准货币(M2)-同比增长'])\n        temp_df['货币和准货币(M2)-环比增长'] = pd.to_numeric(temp_df['货币和准货币(M2)-环比增长'])\n        temp_df['货币(M1)-数量(亿元)'] = pd.to_numeric(temp_df['货币(M1)-数量(亿元)'])\n        temp_df['货币(M1)-同比增长'] = pd.to_numeric(temp_df['货币(M1)-同比增长'])\n        temp_df['货币(M1)-环比增长'] = pd.to_numeric(temp_df['货币(M1)-环比增长'])\n        temp_df['流通中的现金(M0)-数量(亿元)'] = pd.to_numeric(temp_df['流通中的现金(M0)-数量(亿元)'])\n        temp_df['流通中的现金(M0)-同比增长'] = pd.to_numeric(temp_df['流通中的现金(M0)-同比增长'])\n        temp_df['流通中的现金(M0)-环比增长'] = pd.to_numeric(temp_df['流通中的现金(M0)-环比增长'])\n        if start_date and end_date:\n            start = start_date.split('-')[0] + '年' + start_date.split('-')[1] + '月份'\n            end = end_date.split('-')[0] + '年' + end_date.split('-')[1] + '月份'\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n        return temp_df.to_markdown()\n\n    @classmethod\n    def china_consumer_goods_retail(cls, start_date: str = '', end_date: str = '') -> pd.DataFrame:\n        \"\"\"中国社会消费品零售总额月度统计数据。\\\n返回月份，当月总额（单位：亿元），同比增长（单位：%），\\\n环比增长（单位：%），当年累计（单位：亿元），累计同比增长（单位：%）\n        \"\"\"\n        url = 'https://datacenter-web.eastmoney.com/api/data/v1/get'\n        headers = {\n            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',\n            # noqa\n        }\n        params = {\n            'columns': 'REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME',\n            # noqa\n            'pageNumber': '1',\n            'pageSize': '1000',\n            'sortColumns': 'REPORT_DATE',\n            'sortTypes': '-1',\n            'source': 'WEB',\n            'client': 'WEB',\n            'reportName': 'RPT_ECONOMY_TOTAL_RETAIL',\n            'p': '1',\n            'pageNo': '1',\n            'pageNum': '1',\n            '_': '1660718498421',\n        }\n        r = requests.get(url, params=params, headers=headers)\n        data_json = r.json()\n        temp_df = pd.DataFrame(data_json['result']['data'])\n        temp_df.columns = [\n            '-',\n            '月份',\n            '当月',\n            '同比增长',\n            '环比增长',\n            '累计',\n            '累计-同比增长',\n        ]\n        temp_df = temp_df[\n            [\n                '月份',\n                '当月',\n                '同比增长',\n                '环比增长',\n                '累计',\n                '累计-同比增长',\n            ]\n        ]\n        temp_df['当月'] = pd.to_numeric(temp_df['当月'], errors='coerce')\n        temp_df['同比增长'] = pd.to_numeric(temp_df['同比增长'], errors='coerce')\n        temp_df['环比增长'] = pd.to_numeric(temp_df['环比增长'], errors='coerce')\n        temp_df['累计'] = pd.to_numeric(temp_df['累计'], errors='coerce')\n        temp_df['累计-同比增长'] = pd.to_numeric(temp_df['累计-同比增长'], errors='coerce')\n        if start_date and end_date:\n            start = start_date.split('-')[0] + '年' + start_date.split('-')[1] + '月份'\n            end = end_date.split('-')[0] + '年' + end_date.split('-')[1] + '月份'\n            temp_df = temp_df[(temp_df['月份'] >= start) & (temp_df['月份'] <= end)]\n\n        return temp_df.to_markdown()\n\n    @classmethod\n    def bond_zh_us_rate(cls, start_date: str = \"\", end_date: str = \"\") -> str:\n        \"\"\"\n        本接口返回指定时间段[start_date,end_date]内交易日的中美两国的 2 年、5 年、10 年、30 年、10 年-2 年收益率数据。\n        start_date表示起始日期，end_date表示结束日期，日期格式例如 2024-04-07\n        \"\"\"\n        url = \"https://datacenter.eastmoney.com/api/data/get\"\n        params = {\n            \"type\": \"RPTA_WEB_TREASURYYIELD\",\n            \"sty\": \"ALL\",\n            \"st\": \"SOLAR_DATE\",\n            \"sr\": \"-1\",\n            \"token\": \"894050c76af8597a853f5b408b759f5d\",\n            \"p\": \"1\",\n            \"ps\": \"500\",\n            \"pageNo\": \"1\",\n            \"pageNum\": \"1\",\n            \"_\": \"1615791534490\",\n        }\n        r = requests.get(url, params=params)\n        data_json = r.json()\n        total_page = data_json[\"result\"][\"pages\"]\n        big_df = pd.DataFrame()\n        for page in range(1, total_page + 1):\n            params = {\n                \"type\": \"RPTA_WEB_TREASURYYIELD\",\n                \"sty\": \"ALL\",\n                \"st\": \"SOLAR_DATE\",\n                \"sr\": \"-1\",\n                \"token\": \"894050c76af8597a853f5b408b759f5d\",\n                \"p\": page,\n                \"ps\": \"500\",\n                \"pageNo\": page,\n                \"pageNum\": page,\n                \"_\": \"1615791534490\",\n            }\n            r = requests.get(url, params=params)\n            data_json = r.json()\n            # 时间过滤\n            if start_date and end_date:\n                temp_data = []\n                for item in data_json[\"result\"][\"data\"]:\n                    if start_date <= item[\"SOLAR_DATE\"].split(\" \")[0] <= end_date:\n                        temp_data.append(item)\n                    elif start_date > item[\"SOLAR_DATE\"].split(\" \")[0]:\n                        break\n                    else:\n                        continue\n            else:\n                temp_data = data_json[\"result\"][\"data\"]\n            temp_df = pd.DataFrame(temp_data)\n            for col in temp_df.columns:\n                if temp_df[col].isnull().all():  # 检查列是否包含 None 或 NaN\n                    temp_df[col] = pd.to_numeric(temp_df[col], errors='coerce')\n            if big_df.empty:\n                big_df = temp_df\n            else:\n                big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n\n        big_df.rename(\n            columns={\n                \"SOLAR_DATE\": \"日期\",\n                \"EMM00166462\": \"中国国债收益率5年\",\n                \"EMM00166466\": \"中国国债收益率10年\",\n                \"EMM00166469\": \"中国国债收益率30年\",\n                \"EMM00588704\": \"中国国债收益率2年\",\n                \"EMM01276014\": \"中国国债收益率10年-2年\",\n                \"EMG00001306\": \"美国国债收益率2年\",\n                \"EMG00001308\": \"美国国债收益率5年\",\n                \"EMG00001310\": \"美国国债收益率10年\",\n                \"EMG00001312\": \"美国国债收益率30年\",\n                \"EMG01339436\": \"美国国债收益率10年-2年\",\n                \"EMM00000024\": \"中国GDP年增率\",\n                \"EMG00159635\": \"美国GDP年增率\",\n            },\n            inplace=True,\n        )\n        big_df = big_df[\n            [\n                \"日期\",\n                \"中国国债收益率2年\",\n                \"中国国债收益率5年\",\n                \"中国国债收益率10年\",\n                \"中国国债收益率30年\",\n                \"中国国债收益率10年-2年\",\n                \"中国GDP年增率\",\n                \"美国国债收益率2年\",\n                \"美国国债收益率5年\",\n                \"美国国债收益率10年\",\n                \"美国国债收益率30年\",\n                \"美国国债收益率10年-2年\",\n                \"美国GDP年增率\",\n            ]\n        ]\n        big_df = big_df.drop([\"中国GDP年增率\", \"美国GDP年增率\"], axis=1)\n        big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"], errors=\"coerce\")\n        big_df[\"中国国债收益率2年\"] = pd.to_numeric(big_df[\"中国国债收益率2年\"], errors=\"coerce\")\n        big_df[\"中国国债收益率5年\"] = pd.to_numeric(big_df[\"中国国债收益率5年\"], errors=\"coerce\")\n        big_df[\"中国国债收益率10年\"] = pd.to_numeric(big_df[\"中国国债收益率10年\"], errors=\"coerce\")\n        big_df[\"中国国债收益率30年\"] = pd.to_numeric(big_df[\"中国国债收益率30年\"], errors=\"coerce\")\n        big_df[\"中国国债收益率10年-2年\"] = pd.to_numeric(big_df[\"中国国债收益率10年-2年\"], errors=\"coerce\")\n        # big_df[\"中国GDP年增率\"] = pd.to_numeric(big_df[\"中国GDP年增率\"], errors=\"coerce\")\n        big_df[\"美国国债收益率2年\"] = pd.to_numeric(big_df[\"美国国债收益率2年\"], errors=\"coerce\")\n        big_df[\"美国国债收益率5年\"] = pd.to_numeric(big_df[\"美国国债收益率5年\"], errors=\"coerce\")\n        big_df[\"美国国债收益率10年\"] = pd.to_numeric(big_df[\"美国国债收益率10年\"], errors=\"coerce\")\n        big_df[\"美国国债收益率30年\"] = pd.to_numeric(big_df[\"美国国债收益率30年\"], errors=\"coerce\")\n        big_df[\"美国国债收益率10年-2年\"] = pd.to_numeric(big_df[\"美国国债收益率10年-2年\"], errors=\"coerce\")\n        # big_df[\"美国GDP年增率\"] = pd.to_numeric(big_df[\"美国GDP年增率\"], errors=\"coerce\")\n        big_df.sort_values(\"日期\", inplace=True)\n        big_df.set_index([\"日期\"], inplace=True)\n        big_df = big_df[pd.to_datetime(start_date):]\n        big_df.reset_index(inplace=True)\n        big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"]).dt.date\n        return big_df.to_markdown()\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> BaseTool:\n        attr_name = name.split('_', 1)[-1]\n        class_method = getattr(cls, attr_name)\n\n        return MultArgsSchemaTool(name=name, description=class_method.__doc__, func=class_method, args_schema=QueryArg)\n\n\nif __name__ == '__main__':\n    tmp_start_date = '2024-01-01'\n    tmp_end_date = '2024-01-03'\n    # start_date = ''\n    # end_date = ''\n    # print(MacroData.china_ppi(start_date=start_date, end_date=end_date))\n    print(MacroData.china_shrzgm(start_date=tmp_start_date, end_date=tmp_end_date))\n    # print(MacroData.china_consumer_goods_retail(start_date=start_date, end_date=end_date))\n    # print(MacroData.china_cpi(start_date=start_date, end_date=end_date))\n    # print(MacroData.china_pmi(start_date=start_date, end_date=end_date))\n    # print(MacroData.china_money_supply(start_date=start_date, end_date=end_date))\n    # print(MacroData.china_gdp_yearly(start_date=start_date, end_date=end_date))\n    # print(MacroData.bond_zh_us_rate(start_date=tmp_start_date, end_date=tmp_end_date))\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/openapi.py",
    "content": "from typing import Any, Optional\n\nfrom langchain_core.tools import BaseTool\nfrom loguru import logger\n\nfrom bisheng_langchain.utils.openapi import convert_openapi_field_value\nfrom .base import APIToolBase, MultArgsSchemaTool\n\n\nclass OpenApiTools(APIToolBase):\n    api_key: Optional[str] = None\n    api_location: Optional[str] = None\n    parameter_name: Optional[str] = None\n\n    def get_real_path(self, path_params: dict | None):\n        path = self.params['path']\n        if path_params:\n            path = path.format(**path_params)\n        return self.url + path\n\n    def get_request_method(self):\n        return self.params['method'].lower()\n\n    def get_params_json(self, **kwargs):\n        params_define = {}\n        for one in self.params['parameters']:\n            params_define[one['name']] = one\n\n        path_params = {}\n        params = {}\n        json_data = {}\n        for k, v in kwargs.items():\n            if params_define.get(k):\n                if params_define[k]['in'] == 'query':\n                    field_type = params_define[k]['schema']['type']\n                    params[k] = convert_openapi_field_value(v, field_type)\n                elif params_define[k]['in'] == 'path':\n                    path_params[k] = v\n                else:\n                    field_type = params_define[k]['schema']['type']\n                    json_data[k] = convert_openapi_field_value(v, field_type)\n            else:\n                params[k] = v\n        # if ('api_location' in self.params and self.params['api_location'] == \"query\") or \\\n        #     (hasattr(self, 'api_location') and self.api_location == \"query\"):\n        #     if self.parameter_name:\n        #         params.update({self.parameter_name:self.api_key})\n        #     elif self.params['parameter_name']:\n        #         params.update({self.params['parameter_name']:self.api_key})\n        api_location = self.params.get('api_location')\n        if (api_location == 'query') or (hasattr(self, 'api_location')\n                                         and self.api_location == 'query'):\n            parameter_name = getattr(self, 'parameter_name',\n                                     None) or self.params.get('parameter_name')\n            if parameter_name:\n                params.update({parameter_name: self.api_key})\n        return params, json_data, path_params\n\n    def parse_args_schema(self):\n        args_schema = {\n            \"type\": \"object\",\n            \"properties\": {},\n            \"required\": []\n        }\n        params = self.params['parameters']\n        for one in params:\n            if one.get('required'):\n                args_schema['required'].append(one['name'])\n            field_type = one['schema']['type']\n            if field_type in ['number', 'integer', 'string', 'boolean']:\n                field_info = {\n                    \"type\": field_type,\n                    \"description\": one['description']\n                }\n            elif field_type == 'array':\n                field_info = {\n                    \"type\": field_type,\n                    \"items\": one['schema'].get('items', {}).get('type', 'string'),\n                    \"description\": one['description']\n                }\n            elif field_type in {'object', 'dict'}:\n                field_info = {\n                    \"type\": \"object\",\n                    \"description\": one['description'],\n                    \"properties\": {}\n                }\n                for param in one['schema']['properties'].keys():\n                    field_type = one['schema']['properties'][param]['type']\n                    if field_type in ['number', 'integer', 'string', 'boolean']:\n                        object_field_info = {\n                            \"type\": field_type,\n                            \"description\": one['description']\n                        }\n                    elif field_type == 'array':\n                        object_field_info = {\n                            \"type\": field_type,\n                            \"items\": one['schema'].get('items', {}).get('type', 'string'),\n                            \"description\": one['description']\n                        }\n                    else:\n                        object_field_info = {\n                            \"type\": field_type,\n                            \"description\": one['description']\n                        }\n                    field_info[\"properties\"][param] = object_field_info\n            else:\n                raise Exception(f'schema type is not support: {field_type}')\n            args_schema[one['name']] = field_info\n        return args_schema\n\n    def run(self, **kwargs) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        extra = {}\n        if 'proxy' in kwargs:\n            extra['proxy'] = kwargs.pop('proxy')\n\n        params, json_data, path_params = self.get_params_json(**kwargs)\n        path = self.get_real_path(path_params)\n        logger.info('api_call url={}', path)\n        method = self.get_request_method()\n\n        if method == 'get':\n            resp = self.client.get(path, params=params, **extra)\n        elif method == 'post':\n            resp = self.client.post(path, params=params, json=json_data, **extra)\n        elif method == 'put':\n            resp = self.client.put(path, params=params, json=json_data, **extra)\n        elif method == 'delete':\n            resp = self.client.delete(path, params=params, json=json_data, **extra)\n        else:\n            raise Exception(f'http method is not support: {method}')\n        if resp.status_code != 200:\n            logger.info(f'api_call_fail code={resp.status_code} res={resp.text}')\n            raise Exception(f'api_call_fail: {resp.status_code} {resp.text}')\n        return resp.text\n\n    async def arun(self, **kwargs) -> str:\n        \"\"\"Run query through api and parse result.\"\"\"\n        extra = {}\n        if 'proxy' in kwargs:\n            extra['proxy'] = kwargs.pop('proxy')\n\n        params, json_data, path_params = self.get_params_json(**kwargs)\n        path = self.get_real_path(path_params)\n        logger.info('api_call url={} params={}', path, params)\n        method = self.get_request_method()\n\n        if method == 'get':\n            resp = await self.async_client.aget(path, params=params, **extra)\n        elif method == 'post':\n            resp = await self.async_client.apost(path, params=params, json=json_data, **extra)\n        elif method == 'put':\n            resp = await self.async_client.aput(path, params=params, json=json_data, **extra)\n        elif method == 'delete':\n            resp = await self.async_client.adelete(path, params=params, json=json_data, **extra)\n        else:\n            raise Exception(f'http method is not support: {method}')\n        return resp\n\n    @classmethod\n    def get_api_tool(cls, name, **kwargs: Any) -> BaseTool:\n        description = kwargs.pop('description', '')\n        obj = cls(**kwargs)\n        return MultArgsSchemaTool(name=name,\n                                  description=description,\n                                  func=obj.run,\n                                  coroutine=obj.arun,\n                                  args_schema=obj.parse_args_schema())\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/silicon_flow.py",
    "content": "from typing import Any, Optional\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    prompt: str = Field(description=\"text to image prompt \")\n    negative_prompt: Optional[str] = Field(default=None, description=\"text to image negative_prompt\")\n\n\nclass SiliconFlow(APIToolBase):\n    siliconflow_api_key: str = Field(description=\"params api key\")\n\n    def stable_diffusion(self, negative_prompt: str = \"\", prompt: str = \"\") -> str:\n        \"\"\"silicon stable diffusion api\"\"\"\n        url = \"https://api.siliconflow.cn/v1/images/generations\"\n        headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": \"Bearer \" + self.siliconflow_api_key,\n        }\n        params = {\n            \"model\": \"stabilityai/stable-diffusion-3-5-large\",\n            \"prompt\": prompt,\n            \"negative_prompt\": negative_prompt,\n        }\n\n        response = requests.post(url, json=params, headers=headers)\n        return response.text\n\n    def flux(self, prompt: str) -> str:\n        \"\"\"silicon flux api\"\"\"\n        url = \"https://api.siliconflow.cn/v1/images/generations\"\n        headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": \"Bearer \" + self.siliconflow_api_key,\n        }\n        params = {\n            \"model\": \"black-forest-labs/FLUX.1-pro\",\n            \"prompt\": prompt,\n        }\n\n        response = requests.post(url, json=params, headers=headers)\n        return response.text\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"SiliconFlow\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = SiliconFlow(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/sina.py",
    "content": "\"\"\"tianyancha api\"\"\"\n\nfrom __future__ import annotations\n\nimport json\nimport re\nfrom datetime import datetime\nfrom typing import List, Type, Optional\n\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nfrom .base import APIToolBase\n\nasciiPattern = re.compile(r'[A-Z0-9* ]')\n\n\n# 实时数据Class\nclass Stock(BaseModel):\n    name: str\n    todayStart: float\n    yesterdayEnd: float\n    current: float\n    changeAmount: float\n    changeRate: float\n    vol: float\n    turnover: float\n    highest: float\n    lowest: float\n    buyPercent: float\n\n    def __init__(self,\n                 name,\n                 todayStart,\n                 yesterdayEnd,\n                 current,\n                 highest='0',\n                 lowest='0',\n                 vol='0',\n                 turnover='0'):\n        super().__init__(\n            name=name,\n            todayStart=float(todayStart),\n            yesterdayEnd=float(yesterdayEnd),\n            current=float(current),\n            highest=float(highest),\n            lowest=float(lowest),\n            changeAmount=round(float(current) - float(yesterdayEnd), 3),\n            changeRate=round((float(current) - float(yesterdayEnd)) / float(yesterdayEnd) * 100,\n                             3),\n            vol=float(vol),\n            turnover=float(turnover),\n            buyPercent=0.0,\n        )\n\n        self.buyPercent = 0.0  # 买卖盘五档委比\n\n\nclass StockArg(BaseModel):\n    prefix: str = Field(\n        description='前缀。如果是\"stock_symbol\"传入的为股票代码，则需要传入s_;\\\n如果\"stock_symbol\"传入的为指数代码，则为空。',\n        default='',\n    )\n    stock_exchange: str = Field(\n        description='交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\"sh\"(上海证券交易所)、\" sz\"( 深圳证券交易所)、\"bj\"( 北京证券交易所)',\n    )\n    stock_symbol: str = Field(description=\"\"\"6位数字的股票或者指数代码。\n参考信息：\n- 如果问题中未给出，可能需要上网查询。\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\"sh000300\"和\"sz399300\"两个代码。\"\"\")\n\n\nstockPattern = re.compile(\n    r'var hq_str_s[hz]\\d{6}=\"([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),([^,\"]+),[^\"]+\";'\n)\nkLinePattern = re.compile(r'var _s[hz]\\d{6}_\\d+_\\d+=\\((\\[.*?\\])\\)')\n\n\n# 计算买卖委比\nclass StockInfo(APIToolBase):\n    'sina stock information'\n    args_schema: Type[BaseModel] = StockArg\n\n    def validate_stockNumber(self, stocks: List[str]):\n        stockList = []\n        for stockNumber in stocks:\n            if len(stockNumber) == 8:\n                # 8位长度的代码必须以sh或者sz开头，后面6位是数字\n                if (stockNumber.startswith('sh')\n                    or stockNumber.startswith('sz')) and stockNumber[2:8].isdecimal():\n                    stockList.append(stockNumber)\n            elif len(stockNumber) == 6:\n                # 6位长度的代码必须全是数字\n                if stockNumber.isdecimal():\n                    # 0开头自动补sz，6开头补sh，3开头补sz，否则无效\n                    if stockNumber.startswith('0'):\n                        stockList.append('sz' + stockNumber)\n                    elif stockNumber.startswith('6'):\n                        stockList.append('sh' + stockNumber)\n                    elif stockNumber.startswith('3'):\n                        stockList.append('sz' + stockNumber)\n            elif stockNumber == 'sh':\n                stockList.append('sh000001')\n            elif stockNumber == 'sz':\n                stockList.append('sz399001')\n            elif stockNumber == 'zx':\n                stockList.append('sz399005')\n            elif stockNumber == 'cy':\n                stockList.append('sz399006')\n            elif stockNumber == '300':\n                stockList.append('sh000300')\n\n            return list(map(lambda x: f's_{x}', stockList))\n\n    def devideStock(self, content: str) -> List[Stock]:\n        match = stockPattern.search(content)\n        stock = []\n        if match:\n            while match:\n                stock.append(\n                    Stock(match.group(1), match.group(2), match.group(3), match.group(4),\n                          match.group(5), match.group(6), match.group(9), match.group(10)))\n                match = stockPattern.search(content, match.end())\n        else:\n            stock = [content]\n        return stock\n\n    def run(self, **kwargs):\n        prefix = 's_' if kwargs.get('prefix', '') == 's_' else ''\n        stock_symbol = kwargs.get('stock_symbol', '')\n        stock_exchange = kwargs.get('stock_exchange', '')\n        stock_number = ''.join([prefix, stock_exchange, stock_symbol])\n\n        if self.input_key == 'kLine':\n            date_format = '%Y-%m-%d'\n            date = kwargs.get('date')\n            date_obj = datetime.strptime(date, date_format)\n            ts = int(datetime.timestamp(date_obj) * 1000)\n            stock = f'{stock_number}_240_{ts}'\n            count = datetime.today() - date_obj\n            url = self.url.format(stockName=stock_number, stock=stock, count=count.days)\n            resp = self.client.get(url)\n            if resp.status_code != 200:\n                logger.info('api_call_fail res={}', resp.text)\n            k_data = resp.text\n            k_data = kLinePattern.search(k_data)\n            if not k_data:\n                return '{}'\n            data_array = json.loads(k_data.group(1))\n            for item in data_array:\n                if item.get('day') == date:\n                    return json.dumps(item)\n            return '{}'\n\n        resp = super().run(query=stock_number)\n        stock = self.devideStock(resp)[0]\n        if isinstance(stock, Stock):\n            return json.dumps(stock.__dict__, ensure_ascii=False)\n        else:\n            return stock\n\n    async def arun(self, **kwargs) -> str:\n        prefix = 's_' if kwargs.get('prefix', '') == 's_' else ''\n        stock_symbol = kwargs.get('stock_symbol', '')\n        stock_exchange = kwargs.get('stock_exchange', '')\n        stock_number = ''.join([prefix, stock_exchange, stock_symbol])\n\n        if self.input_key == 'kLine':\n            date_format = '%Y-%m-%d'\n            date = kwargs.get('date')\n            date_obj = datetime.strptime(date, date_format)\n            ts = int(datetime.timestamp(date_obj) * 1000)\n            stock = f'{stock_number}_240_{ts}'\n            count = datetime.today() - date_obj\n            url = self.url.format(stockName=stock_number, stock=stock, count=count.days)\n            k_data = await self.async_client.aget(url)\n            k_data = kLinePattern.search(k_data)\n            if not k_data:\n                return '{}'\n            data_array = json.loads(k_data.group(1))\n            for item in data_array:\n                if item.get('day') == date:\n                    return json.dumps(item)\n\n            return '{}'\n        else:\n            resp = await super().arun(query=stock_number)\n            stock = self.devideStock(resp)[0]\n            if isinstance(stock, Stock):\n                return json.dumps(stock.__dict__, ensure_ascii=False)\n            else:\n                return stock\n\n    @classmethod\n    def realtime_info(cls, proxy: Optional[str] = None) -> StockInfo:\n        \"\"\"查询中国A股（沪深北交易所）股票或指数的实时行情数据，返回收盘价、涨跌额、涨跌幅、成交量、成交额\"\"\"\n        url = 'https://hq.sinajs.cn'\n        input_key = 'list'\n        headers = {'Referer': 'https://finance.sina.com.cn'}\n        return cls(url=url, input_key=input_key, headers=headers, proxy=proxy)\n\n    @classmethod\n    def history_KLine(cls, proxy: Optional[str] = None, ) -> StockInfo:\n        \"\"\"查询中国A股（沪深北交易所）股票或指数的的历史行情数据，返回时间、开盘价、最高价、最低价、收盘价、成交量（股）\"\"\"\n        url = 'https://quotes.sina.cn/cn/api/jsonp_v2.php/var%20_{stock}=/CN_MarketDataService.getKLineData?symbol={stockName}&scale=240&ma=no&datalen={count}'  # noqa\n        input_key = 'kLine'\n        header = {'Referer': 'https://finance.sina.com.cn'}\n\n        class stockK(BaseModel):\n            stock_symbol: str = Field(description=\"\"\"6位数字的股票或者指数代码。\n参考信息：\n- 如果问题中未给出，可能需要上网查询。\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\"sh000300\"和\"sz399300\"两个代码。\"\"\")\n            stock_exchange: str = Field(\n                description=\n                '交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\"sh\"(上海证券交易所)、\" sz\"( 深圳证券交易所)、\"bj\"( 北京证券交易所)', )\n            date: str = Field(description='需要查询的时间，按照”2024-03-26“格式，传入日期')\n\n        return cls(url=url, input_key=input_key, headers=header, args_schema=stockK, proxy=proxy)\n\n    # @classmethod\n    # def history_KLine(cls, stockid: str) -> StockInfo:\n    #     url = 'http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData'\n    #     input_key = 'list'\n    #     header = {'Referer': 'http://finance.sina.com.cn'}\n    #     return cls(url=url, input_key=input_key, header=header)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/api_tools/tianyancha.py",
    "content": "\"\"\"tianyancha api\"\"\"\nfrom __future__ import annotations\n\nfrom typing import Any, Dict, Type, List, Optional\n\nfrom pydantic import model_validator, BaseModel, Field\n\nfrom bisheng_langchain.utils.requests import Requests, RequestsWrapper\n\nfrom .base import APIToolBase\n\n\nclass InputArgs(BaseModel):\n    \"\"\"args_schema\"\"\"\n    query: str = Field(description='搜索关键字（公司名称、公司id、注册号或社会统一信用代码）')\n\n\nclass CompanyInfo(APIToolBase):\n    \"\"\"Manage tianyancha company client.\"\"\"\n    api_key: str = None\n    args_schema: Type[BaseModel] = InputArgs\n\n    @model_validator(mode='before')\n    @classmethod\n    def build_header(cls, values: Dict[str, Any]) -> Dict[str, Any]:\n        \"\"\"Build headers that were passed in.\"\"\"\n        if not values.get('api_key'):\n            raise ValueError('Parameters api_key should be specified give.')\n\n        headers = values.get('headers', {})\n        headers.update({'Authorization': values['api_key']})\n        values['headers'] = headers\n        return values\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        timeout = values.get('request_timeout', 30)\n        if not values.get('client'):\n            values['client'] = Requests(headers=values['headers'], request_timeout=timeout, proxy=values.get('proxy'))\n        if not values.get('async_client'):\n            values['async_client'] = RequestsWrapper(headers=values['headers'],\n                                                     proxy=values.get('proxy'),\n                                                     request_timeout=timeout)\n        return values\n\n    @classmethod\n    def search_company(cls, api_key: str, proxy: Optional[str] = None, pageNum: int = 1,\n                       pageSize: int = 20) -> CompanyInfo:\n        \"\"\"可以通过关键词获取企业列表，企业列表包括公司名称或ID、类型、成立日期、经营状态、统一社会信用代码等字段的详细信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/search/2.0'\n        input_key = 'word'\n        params = {}\n        params['pageSize'] = pageSize\n        params['pageNum'] = pageNum\n\n        return cls(url=url, api_key=api_key, proxy=proxy, input_key=input_key, params=params)\n\n    @classmethod\n    def get_company_baseinfo(cls, api_key: str, proxy: Optional[str] = None) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取企业基本信息，企业基本信息包括公司名称或ID、类型、成立日期、经营状态、注册资本、法人、工商注册号、统一社会信用代码、组织机构代码、纳税人识别号等字段信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/ic/baseinfo/normal'\n        input_key = 'keyword'\n        params = {}\n\n        return cls(url=url, api_key=api_key, input_key=input_key, params=params, proxy=proxy)\n\n    @classmethod\n    def ip_rights(cls, api_key: str, proxy: Optional[str] = None) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取包含商标、专利、作品著作权、软件著作权、网站备案等维度的相关信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/cb/ipr/3.0'\n        input_key = 'keyword'\n\n        return cls(url=url, api_key=api_key, input_key=input_key, params={}, proxy=proxy)\n\n    @classmethod\n    def judicial_risk(cls, api_key: str, proxy: Optional[str] = None) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取包含法律诉讼、法院公告、开庭公告、失信人、被执行人、立案信息、送达公告等维度的相关信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/cb/judicial/2.0'\n        return cls(url=url, api_key=api_key, proxy=proxy)\n\n    @classmethod\n    def ic_info(cls, api_key: str, proxy: Optional[str] = None, ) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取包含企业基本信息、主要人员、股东信息、对外投资、分支机构等维度的相关信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/cb/ic/2.0'\n\n        return cls(url=url, api_key=api_key, proxy=proxy)\n\n    @classmethod\n    def law_suit_case(cls, api_key: str, proxy: Optional[str] = None, pageSize: int = 20,\n                      pageNum: int = 1) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取企业法律诉讼信息，法律诉讼包括案件名称、案由、案件身份、案号等字段的详细信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/jr/lawSuit/3.0'\n        params = {}\n        params['pageSize'] = pageSize\n        params['pageNum'] = pageNum\n        return cls(url=url, api_key=api_key, params=params, proxy=proxy)\n\n    @classmethod\n    def company_change_info(cls,\n                            api_key: str,\n                            proxy: Optional[str] = None,\n                            pageSize: int = 20,\n                            pageNum: int = 1) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取企业变更记录，变更记录包括工商变更事项、变更前后信息等字段的详细信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0'\n        params = {}\n        params['pageSize'] = pageSize\n        params['pageNum'] = pageNum\n        return cls(url=url, api_key=api_key, params=params, proxy=proxy)\n\n    @classmethod\n    def company_holders(cls, api_key: str, proxy: Optional[str] = None, pageSize: int = 20,\n                        pageNum: int = 1) -> CompanyInfo:\n        \"\"\"可以通过公司名称或ID获取企业股东信息，股东信息包括股东名、出资比例、出资金额、股东总数等字段的详细信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0'\n        params = {}\n        params['pageSize'] = pageSize\n        params['pageNum'] = pageNum\n        return cls(url=url, api_key=api_key, params=params, proxy=proxy)\n\n    @classmethod\n    def all_companys_by_company(cls, api_key: str, proxy: Optional[str] = None, pageSize: int = 20, pageNum: int = 1):\n        \"\"\"可以通过公司名称和人名获取企业人员的所有相关公司，包括其担任法人、股东、董监高的公司信息\"\"\"\n        url = 'http://open.api.tianyancha.com/services/v4/open/allCompanys'\n        input_key = 'humanName'\n        params = {}\n        params['pageSize'] = pageSize\n        params['pageNum'] = pageNum\n\n        class InputArgs(BaseModel):\n            \"\"\"args_schema\"\"\"\n            query: str = Field(description='human who you want to search')\n            name: str = Field(description='company name which human worked')\n\n        return cls(url=url,\n                   api_key=api_key,\n                   proxy=proxy,\n                   params=params,\n                   input_key=input_key,\n                   args_schema=InputArgs)\n\n    @classmethod\n    def riskinfo(cls, api_key: str, proxy: Optional[str] = None, ) -> CompanyInfo:\n        \"\"\"可以通过关键字（公司名称、公司id、注册号或社会统一信用代码）获取企业相关天眼风险列表，包括企业自身/周边/预警风险信息。\"\"\"\n        url = 'http://open.api.tianyancha.com/services/open/risk/riskInfo/2.0'\n        return cls(url=url, api_key=api_key, proxy=proxy)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/bing_search/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/bing_search/self_arxiv.py",
    "content": "\"\"\"Util that calls Arxiv.\"\"\"\n\nimport logging\n\nfrom langchain_community.utilities.arxiv import ArxivAPIWrapper\n\nlogger = logging.getLogger(__name__)\n\n\nclass ArxivAPIWrapperSelf(ArxivAPIWrapper):\n    def run(self, query: str) -> str:\n        \"\"\"\n        Performs an arxiv search and A single string\n        with the publish date, title, authors, and summary\n        for each article separated by two newlines.\n\n        If an error occurs or no documents found, error text\n        is returned instead. Wrapper for\n        https://lukasschwab.me/arxiv.py/index.html#Search\n\n        Args:\n            query: a plaintext search query\n        \"\"\"\n        try:\n            if self.is_arxiv_identifier(query):\n                results = self.arxiv_search(\n                    id_list=query.split(),\n                    max_results=self.top_k_results,\n                ).results()\n            else:\n                results = self.arxiv_search(  # type: ignore\n                    query[: self.ARXIV_MAX_QUERY_LENGTH], max_results=self.top_k_results\n                ).results()\n        except self.arxiv_exceptions as ex:\n            return f\"Arxiv exception: {ex}\"\n        docs = [\n            f\"Published: {result.updated.date()}\\n\"\n            f\"Title: {result.title}\\n\"\n            f\"Authors: {', '.join(a.name for a in result.authors)}\\n\"\n            f\"Summary: {result.summary}\\n\"\n            f\"pdf_url: {result.pdf_url}\"\n            for result in results\n        ]\n        if docs:\n            return \"\\n\\n\".join(docs)[: self.doc_content_chars_max]\n        else:\n            return \"No good Arxiv Result was found\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/bing_search/tool.py",
    "content": "\"\"\"Tool for the Bing search API.\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel, Field\nfrom langchain_community.utilities.bing_search import BingSearchAPIWrapper\nfrom langchain_core.callbacks import CallbackManagerForToolRun\nfrom langchain_core.tools import BaseTool\n\n\nclass BingSearchInput(BaseModel):\n    query: str = Field(description=\"query to look up in Bing search\")\n\n\nclass BingSearchRun(BaseTool):\n    \"\"\"Tool that queries the Bing search API.\"\"\"\n\n    name: str = \"bing_search\"\n    description: str = (\n        \"A wrapper around Bing Search. \"\n        \"Useful for when you need to answer questions about current events. \"\n        \"Input should be a search query.\"\n    )\n    args_schema: Type[BaseModel] = BingSearchInput\n    api_wrapper: BingSearchAPIWrapper\n\n    def _run(\n        self,\n        query: str,\n        run_manager: Optional[CallbackManagerForToolRun] = None,\n    ) -> str:\n        \"\"\"Use the tool.\"\"\"\n        return self.api_wrapper.run(query)\n\n\nclass BingSearchResults(BaseTool):\n    \"\"\"Tool that queries the Bing Search API and gets back json.\"\"\"\n\n    name: str = \"bing_search\"\n    description: str = (\n        \"A wrapper around Bing Search. \"\n        \"Useful for when you need to answer questions about current events. \"\n        \"Input should be a search query. Output is a JSON array of the query results\"\n    )\n    num_results: int = 5\n    args_schema: Type[BaseModel] = BingSearchInput\n    api_wrapper: BingSearchAPIWrapper\n\n    def _run(\n        self,\n        query: str,\n        run_manager: Optional[CallbackManagerForToolRun] = None,\n    ) -> str:\n        \"\"\"Use the tool.\"\"\"\n        return str(self.api_wrapper.results(query, self.num_results))\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/calculator/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/calculator/tool.py",
    "content": "import math\nfrom math import *\n\nimport sympy\nfrom pydantic import BaseModel, Field\nfrom langchain.tools import tool\nfrom sympy import *\n\n\nclass CalculatorInput(BaseModel):\n    expression: str = Field(\n        description=\"The input to this tool should be a mathematical expression using only Python's built-in mathematical operators.\",\n        examples=['200*7'],\n    )\n\n\n@tool(\"calculator\", args_schema=CalculatorInput)\ndef calculator(expression):\n    \"\"\"Useful to perform any mathematical calculations,\n    like sum, minus, multiplication, division, etc\n    \"\"\"\n    try:\n        return eval(expression)\n    except SyntaxError:\n        return \"Error: Invalid syntax in mathematical expression\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/code_interpreter/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/code_interpreter/base_executor.py",
    "content": "from abc import ABC, abstractmethod\nfrom datetime import timedelta\nfrom typing import Any\n\nfrom loguru import logger\nfrom minio import Minio\n\n\nclass BaseExecutor(ABC):\n    def __init__(self, minio: dict, **kwargs):\n        self.minio = minio\n        # 将代码生成的文件同步到本地的路径\n        self.local_sync_path = kwargs.get('local_sync_path', None)\n\n    @abstractmethod\n    def run(self, code: str) -> Any:\n        raise NotImplementedError()\n\n    def upload_minio(\n            self,\n            object_name: str,\n            file_path,\n    ) -> str:\n        # 初始化minio\n        if not self.minio:\n            return \"\"\n\n        minio_client = Minio(\n            endpoint=self.minio.get('endpoint'),\n            access_key=self.minio.get('access_key'),\n            secret_key=self.minio.get('secret_key'),\n            secure=self.minio.get('schema') or self.minio.get('secure'),\n            cert_check=self.minio.get('cert_check'),\n        )\n        minio_share = Minio(\n            endpoint=self.minio.get('sharepoint'),\n            access_key=self.minio.get('access_key'),\n            secret_key=self.minio.get('secret_key'),\n            secure=self.minio.get('share_schema', False),\n            cert_check=self.minio.get('share_cert_check', False),\n        )\n        bucket = self.minio.get('tmp_bucket', 'tmp-dir')\n        logger.debug(\n            'upload_file obj={} bucket={} file_path={}',\n            object_name,\n            bucket,\n            file_path,\n        )\n        minio_client.fput_object(\n            bucket_name=bucket,\n            object_name=object_name,\n            file_path=file_path,\n        )\n        return minio_share.presigned_get_object(\n            bucket_name=bucket,\n            object_name=object_name,\n            expires=timedelta(days=7),\n        )\n\n    def close(self) -> None:\n        pass\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/code_interpreter/e2b_executor.py",
    "content": "import base64\nimport os\nimport tempfile\nimport uuid\nfrom typing import List\n\nfrom e2b.sandbox.filesystem.filesystem import WriteEntry, EntryInfo, FileType\nfrom e2b_code_interpreter import Sandbox, Result\n\nfrom bisheng_langchain.gpts.tools.code_interpreter.base_executor import BaseExecutor\n\n\nclass E2bCodeExecutor(BaseExecutor):\n\n    def __init__(self, minio: dict, api_key: str, domain: str = None, timeout: int = 300,\n                 file_list: list[WriteEntry] = None, keep_sandbox: bool = False, **kwargs):\n        \"\"\"\n            timeout: Create sandbox with and keep it running for 300 seconds\n        \"\"\"\n        super().__init__(minio, **kwargs)\n        self.minio = minio\n        self.api_key = api_key\n        self.domain = domain\n        self.timeout = timeout\n        self.file_list = file_list\n        self.keep_sandbox = keep_sandbox  # 是否保持一个sandbox, 默认只有在执行的时候才创建一个沙盒\n        self.sandbox_file_cache = {}  # 缓存已经下载过的文件，避免重复下载\n\n        if self.file_list:\n            new_file_list = []\n            for one in self.file_list:\n                with open(one.data, 'rb') as f:\n                    new_file_list.append({\n                        \"path\": one.path,\n                        \"data\": f.read()\n                    })\n            self.file_list = new_file_list\n\n        self.sandbox = None\n        if self.keep_sandbox:\n            self.init_sandbox()\n\n    @property\n    def description(self) -> str:\n        return \"A code interpreter that can execute python code. Input should be a valid python code. If you have any files outputted write them to `output/` relative to the execution path.\"\n\n    def init_sandbox(self):\n        if not self.sandbox:\n            self.sandbox = Sandbox(domain=self.domain, api_key=self.api_key, timeout=self.timeout)\n            self.sandbox.files.make_dir(\"output\")  # 确保output目录存在\n            if self.file_list:\n                self.sandbox.files.write(self.file_list)\n                # 初始化缓存信息\n                files_info = self.sandbox.files.list(\"./\")\n                for file in files_info:\n                    self.sandbox_file_cache[file.path] = file\n\n    def run(self, code: str):\n        \"\"\"\n        Execute code in the E2B Code Interpreter sandbox.\n        :param code: The code to execute.\n        :return: The result of the code execution.\n        \"\"\"\n        # need to keep the sandbox, then reuse the existing one and do not close it\n        if self.keep_sandbox:\n            return self.run_code_with_one_sandbox(code)\n\n        self.init_sandbox()\n        try:\n            execution = self.sandbox.run_code(code)\n            results, file_list = self.parse_results(execution.results)\n            return {\n                \"results\": results,\n                \"stdout\": execution.logs.stdout,\n                \"stderr\": execution.logs.stderr,\n                \"error\": execution.error,\n                \"file_list\": file_list,\n            }\n        finally:\n            self.close()\n\n    def run_code_with_one_sandbox(self, code: str) -> dict:\n        \"\"\"\n        Execute code in the E2B Code Interpreter sandbox.\n        :param code: The code to execute.\n        :return: The result of the dict.\n        \"\"\"\n        if self.sandbox is None:\n            raise RuntimeError('Sandbox is destroyed.')\n        execution = self.sandbox.run_code(code)\n        results, file_list = self.parse_results(execution.results)\n        return {\n            \"results\": results,\n            \"stdout\": execution.logs.stdout,\n            \"stderr\": execution.logs.stderr,\n            \"error\": execution.error,\n            \"file_list\": file_list,\n        }\n\n    def parse_results(self, results: List[Result]):\n        \"\"\"\n        Parse the results from the E2B Code Interpreter.\n        :param results: The results from the code execution.\n        :return: Parsed results.\n        \"\"\"\n        parsed_results = []\n        file_list = []\n        for result in results:\n            if result.text:\n                parsed_results.append({\"text\": result.text})\n            if result.html:\n                parsed_results.append({\"html\": result.html})\n            if result.markdown:\n                parsed_results.append({\"markdown\": result.markdown})\n            if result.svg:\n                parsed_results.append({\"svg\": result.svg})\n            if result.png:\n                tmp_dir = tempfile.gettempdir()\n                file_path = os.path.join(tmp_dir, uuid.uuid4().hex + \".png\")\n                with open(file_path, \"wb\") as f:\n                    f.write(base64.b64decode(result.png))\n                file_list.append(self.upload_minio(f\"{uuid.uuid4().hex}.png\", file_path))\n            if result.jpeg:\n                tmp_dir = tempfile.gettempdir()\n                file_path = os.path.join(tmp_dir, uuid.uuid4().hex + \".jpeg\")\n                with open(file_path, \"wb\") as f:\n                    f.write(base64.b64decode(result.jpeg))\n                file_list.append(self.upload_minio(f\"{uuid.uuid4().hex}.jpeg\", file_path))\n            if result.json:\n                parsed_results.append({\"json\": result.json})\n            if result.data:\n                parsed_results.append({\"data\": result.data})\n        if self.local_sync_path and os.path.exists(self.local_sync_path) and self.sandbox:\n            # 将沙盒中的文件同步到本地目录\n            files_info = self.sandbox.files.list(\"./\")\n            self.sync_files_to_local(files_info)\n\n        return parsed_results, file_list\n\n    def sync_files_to_local(self, files_info: List[EntryInfo]):\n        if not files_info:\n            return\n        for file in files_info:\n            # ignore hidden files\n            if file.name.startswith(\".\"):\n                continue\n            if file.type == FileType.FILE:\n                if file.path not in self.sandbox_file_cache:\n                    self.sandbox_file_cache[file.path] = file\n                    self.download_file(file)\n                # only download modified files\n                if self.sandbox_file_cache[file.path].modified_time < file.modified_time:\n                    self.download_file(file)\n            else:\n                new_files_info = self.sandbox.files.list(file.path)\n                self.sync_files_to_local(new_files_info)\n\n    def download_file(self, file_info: EntryInfo):\n        relative_path = file_info.path.replace(\"/home/user/\", \"\")\n        local_path = os.path.join(self.local_sync_path, relative_path)\n        local_dir = os.path.dirname(local_path)\n        os.makedirs(local_dir, exist_ok=True)\n        with open(local_path, \"wb\") as f:\n            f.write(self.sandbox.files.read(file_info.path, format=\"bytes\"))\n\n    def close(self):\n        if self.sandbox:\n            self.sandbox.kill()\n            self.sandbox = None\n\n\nif __name__ == '__main__':\n    e2b_api_key = os.environ.get(\"E2B_API_KEY\")\n    e2b_exec = E2bCodeExecutor(api_key=e2b_api_key, keep_sandbox=True, minio={}, local_sync_path=\"./e2b_output\")\n    result = e2b_exec.run(\n        code=\"\"\"import requests\\nimport os\nos.makedirs('./downloaded_wallpapers', exist_ok=True)\n# 选定一个新的可靠高清风景图片链接\ndirect_image_url = 'https://images.unsplash.com/photo-1524758631624-e2822e304c36?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80'\noutput_path = './downloaded_wallpapers/wallpaper_1.jpg'\ntry:\n    response = requests.get(direct_image_url, stream=True)\n    if response.status_code == 200:\n        with open(output_path, 'wb') as f:\n            for chunk in response.iter_content(1024):\n                f.write(chunk)\n        print(f'壁纸已成功下载到 {output_path}')\n    else:\n        print(f'请求失败，状态码: {response.status_code}')\nexcept Exception as e:\n    print(f'发生异常: {str(e)}')\"\"\")\n    print(result)\n    print(11111)\n    e2b_exec.close()\n\n    # boxes = Sandbox.list(api_key=e2b_api_key)\n    # for box in boxes:\n    #     Sandbox.kill(sandbox_id=box.sandbox_id, api_key=e2b_api_key)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/code_interpreter/local_executor.py",
    "content": "import glob\nimport os\nimport re\nimport shutil\nimport subprocess\nimport sys\nimport tempfile\nimport uuid\nfrom concurrent.futures import ThreadPoolExecutor, TimeoutError\nfrom hashlib import md5\nfrom os import DirEntry\nfrom pathlib import Path\nfrom typing import List, Tuple, Optional, Any\n\nimport matplotlib\nfrom loguru import logger\n\nfrom bisheng_langchain.gpts.tools.code_interpreter.base_executor import BaseExecutor\n\nCODE_BLOCK_PATTERN = r\"```(\\w*)\\n(.*?)\\n```\"\nDEFAULT_TIMEOUT = 600\nWIN32 = sys.platform == 'win32'\nPATH_SEPARATOR = WIN32 and '\\\\' or '/'\nWORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'extensions')\nTIMEOUT_MSG = 'Timeout'\nUNKNOWN = \"unknown\"\n\nLOCAL_DESCRIPTION = \"\"\"Evaluates python code in native environment. \\\nYou must send the whole script every time and print your outputs. \\\nScript should be pure python code that can be evaluated. \\\nIt should be in python format NOT markdown. \\\nThe code should NOT be wrapped in backticks. \\\nIf you have any files outputted write them to \"output/\" relative to the execution \\\npath. Output can only be read from the directory, stdout, and stdin. \\\nDo not use things like plot.show() as it will \\\nnot work instead write them out `output/`\\\nprint() any output and results so you can capture the output.\"\"\"  # noqa: T201\n\n\nclass LocalExecutor(BaseExecutor):\n    def __init__(self, minio: dict = None, **kwargs):\n        super().__init__(minio, **kwargs)\n        self.minio = minio\n\n    @property\n    def description(self) -> str:\n        return LOCAL_DESCRIPTION\n\n    @staticmethod\n    def infer_lang(code):\n        \"\"\"infer the language for the code.\n        TODO: make it robust.\n        \"\"\"\n        if code.startswith(\"python \") or code.startswith(\"pip\") or code.startswith(\"python3 \"):\n            return \"sh\"\n\n        # check if code is a valid python code\n        try:\n            compile(code, \"test\", \"exec\")\n            return \"python\"\n        except SyntaxError:\n            # not a valid python code\n            return UNKNOWN\n\n    @staticmethod\n    def insert_set_font_code(code: str) -> str:\n        \"\"\"判断python代码中是否导入了matplotlib库，如果有则插入设置字体的代码\"\"\"\n\n        split_code = code.split('\\n')\n        cache_file = matplotlib.get_cachedir()\n        font_cache = glob.glob(f'{cache_file}/fontlist*')\n\n        for cache in font_cache:\n            os.remove(cache)\n\n        # todo: 如果生成的代码中已经有了设置字体的代码，可能会导致该段代码失效\n        if 'matplotlib' in code:\n            pattern = re.compile(r'(import matplotlib|from matplotlib)')\n            index = max(i for i, line in enumerate(split_code) if pattern.search(line))\n            split_code.insert(index + 1, 'import matplotlib\\nmatplotlib.rc(\"font\", family=\"WenQuanYi Zen Hei\")')\n\n        return '\\n'.join(split_code)\n\n    @staticmethod\n    def extract_code(\n            text: str, pattern: str = CODE_BLOCK_PATTERN, detect_single_line_code: bool = False\n    ) -> List[Tuple[str, str]]:\n        \"\"\"Extract code from a text.\n\n        Args:\n            text (str): The text to extract code from.\n            pattern (str, optional): The regular expression pattern for finding the\n                code block. Defaults to CODE_BLOCK_PATTERN.\n            detect_single_line_code (bool, optional): Enable the new feature for\n                extracting single line code. Defaults to False.\n\n        Returns:\n            list: A list of tuples, each containing the language and the code.\n              If there is no code block in the input text, the language would be \"unknown\".\n              If there is code block but the language is not specified, the language would be \"\".\n        \"\"\"\n        if not detect_single_line_code:\n            match = re.findall(pattern, text, flags=re.DOTALL)\n            return match if match else [(UNKNOWN, text)]\n\n        # Extract both multi-line and single-line code block, separated by the | operator\n        # `{3}(\\w+)?\\s*([\\s\\S]*?)`{3}: Matches multi-line code blocks.\n        #    The (\\w+)? matches the language, where the ? indicates it is optional.\n        # `([^`]+)`: Matches inline code.\n        code_pattern = re.compile(r\"`{3}(\\w+)?\\s*([\\s\\S]*?)`{3}|`([^`]+)`\")\n        code_blocks = code_pattern.findall(text)\n\n        # Extract the individual code blocks and languages from the matched groups\n        extracted = []\n        for lang, group1, group2 in code_blocks:\n            if group1:\n                extracted.append((lang.strip(), group1.strip()))\n            elif group2:\n                extracted.append((\"\", group2.strip()))\n\n        return extracted\n\n    @staticmethod\n    def _cmd(lang):\n        if lang.startswith('python') or lang in ['bash', 'sh', 'powershell']:\n            return lang\n        if lang in ['shell']:\n            return 'sh'\n        if lang in ['ps1']:\n            return 'powershell'\n        raise NotImplementedError(f'{lang} not recognized in code execution')\n\n    @classmethod\n    def _execute_code(cls,\n                      code: Optional[str] = None,\n                      timeout: Optional[int] = None,\n                      filename: Optional[str] = None,\n                      work_dir: Optional[str] = None,\n                      lang: Optional[str] = 'python',\n                      file_path: Optional[str] = None):\n        cmd = [\n            sys.executable if lang.startswith('python') else cls._cmd(lang),\n            f'.\\\\{filename}' if WIN32 else filename,\n        ]\n        if WIN32:\n            logger.warning('SIGALRM is not supported on Windows. No timeout will be enforced.')\n            result = subprocess.run(\n                cmd,\n                cwd=work_dir,\n                capture_output=True,\n                text=True,\n            )\n        else:\n            with ThreadPoolExecutor(max_workers=1) as executor:\n                future = executor.submit(\n                    subprocess.run,\n                    cmd,\n                    cwd=work_dir,\n                    capture_output=True,\n                    text=True,\n                )\n                try:\n                    result = future.result(timeout=timeout)\n                except TimeoutError:\n                    return 1, TIMEOUT_MSG, \"\"\n        if result.returncode:\n            logs = result.stderr\n            if file_path is not None:\n                abs_path = str(Path(file_path).absolute())\n                logs = logs.replace(str(abs_path), '').replace(filename, '')\n            else:\n                abs_path = str(Path(work_dir).absolute()) + PATH_SEPARATOR\n                logs = logs.replace(str(abs_path), '')\n        else:\n            logs = result.stdout\n        return result.returncode, logs, \"\"\n\n    @classmethod\n    def execute_code(\n            cls,\n            code: Optional[str] = None,\n            timeout: Optional[int] = None,\n            filename: Optional[str] = None,\n            work_dir: Optional[str] = None,\n            lang: Optional[str] = 'python',\n    ) -> Tuple[int, str, str]:\n        if all((code is None, filename is None)):\n            error_msg = f'Either {code=} or {filename=} must be provided.'\n            logger.error(error_msg)\n            raise AssertionError(error_msg)\n\n        timeout = timeout or DEFAULT_TIMEOUT\n        original_filename = filename\n\n        if filename is None:\n            code_hash = md5(code.encode()).hexdigest()\n            # create a file with a automatically generated name\n            filename = f\"tmp_code_{code_hash}.{'py' if lang.startswith('python') else lang}\"\n        if work_dir is None:\n            work_dir = WORKING_DIR\n        filepath = os.path.join(work_dir, filename)\n        file_dir = os.path.dirname(filepath)\n        os.makedirs(file_dir, exist_ok=True)\n        (Path(file_dir) / 'output').mkdir(exist_ok=True, parents=True)\n        if code is not None:\n            with open(filepath, 'w', encoding='utf-8') as fout:\n                fout.write(code)\n        try:\n            return cls._execute_code(code=code, timeout=timeout, filename=filename, work_dir=work_dir, lang=lang,\n                                     file_path=filepath)\n        finally:\n            if filepath is not None:\n                os.remove(filepath)\n\n    def run_with_dir(self, code: str, dir_path: str, lang: str) -> (int, str, list):\n        \"\"\"在指定目录下运行代码，并返回日志和生成的文件列表\"\"\"\n        exitcode, logs, _ = self.execute_code(\n            code,\n            work_dir=dir_path,\n            lang=lang,\n        )\n        logs += '\\n' + logs\n        file_list = []\n        if exitcode != 0:\n            return exitcode, logs, file_list\n\n        # 获取文件\n        for root, dirs, files in os.walk(dir_path):\n            for name in files:\n                file_name = os.path.join(root, name)\n                file_ext = os.path.splitext(name)[-1]\n                file_list.append(self.upload_minio(f\"{uuid.uuid4().hex}.{file_ext}\", file_name))\n        # 同步执行结果文件到本地同步目录\n        if self.local_sync_path and os.path.exists(self.local_sync_path):\n            files_info = list(os.scandir(dir_path))\n            self.sync_files_to_local(files_info, dir_path)\n        return exitcode, logs, file_list\n\n    def run(self, code: str) -> Any:\n        code_blocks = self.extract_code(code)\n        logs_all = ''\n        all_file_list = []\n        for i, code_block in enumerate(code_blocks):\n            lang, code = code_block\n            lang = self.infer_lang(code)\n            code = self.insert_set_font_code(code)\n            if self.local_sync_path and os.path.exists(self.local_sync_path):\n                exit_code, logs, file_list = self.run_with_dir(code, dir_path=self.local_sync_path, lang=lang)\n            else:\n                with tempfile.TemporaryDirectory() as temp_dir:\n                    exit_code, logs, file_list = self.run_with_dir(code, dir_path=temp_dir, lang=lang)\n            if exit_code != 0:\n                return {'exitcode': exit_code, 'log': logs_all}\n            logs_all += \"\\n\" + logs\n            all_file_list += file_list\n\n        return {'exitcode': 0, 'log': logs_all, 'file_list': all_file_list}\n\n    def sync_files_to_local(self, files_info: List[DirEntry], root_path: str):\n        if not files_info:\n            return\n        for file in files_info:\n            # ignore hidden files\n            if file.name.startswith(\".\"):\n                continue\n            if file.is_file():\n                self.download_file(file, root_path)\n            else:\n                new_files_info = os.scandir(file.path)\n                self.sync_files_to_local(list(new_files_info), root_path)\n\n    def download_file(self, file_info: DirEntry, root_path: str):\n        relative_path = file_info.path.replace(root_path, \"\").lstrip(os.sep)\n        local_path = os.path.join(self.local_sync_path, relative_path)\n        local_dir = os.path.dirname(local_path)\n        os.makedirs(local_dir, exist_ok=True)\n        shutil.move(file_info.path, local_path)\n\n\nif __name__ == '__main__':\n    tmp_executor = LocalExecutor(minio={}, )\n    result = tmp_executor.run(\n        code=\"\"\"import os\\nwith open(\"output/test2.txt\", \"w\") as f:\\n    f.write(\"Hello, E2222B!\")\\nprint(\"File written to output/test.txt\")\"\"\")\n    result2 = tmp_executor.run(\n        code=\"\"\"import os\\nwith open(\"output/test2.txt\", \"r\") as f:\\n    content = f.read()\\n    print(f\"File read from output/test2.txt=={content}\")\"\"\")\n    print(result)\n    print(result2)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/code_interpreter/tool.py",
    "content": "import itertools\nimport os\nimport sys\nfrom typing import List, Type, Any\n\nfrom langchain_community.tools import Tool\nfrom pydantic import BaseModel, Field\nfrom langchain_core.tools import BaseTool\n\nfrom bisheng_langchain.gpts.tools.code_interpreter.e2b_executor import E2bCodeExecutor\nfrom bisheng_langchain.gpts.tools.code_interpreter.local_executor import LocalExecutor\n\nCODE_BLOCK_PATTERN = r\"```(\\w*)\\n(.*?)\\n```\"\nDEFAULT_TIMEOUT = 600\nWIN32 = sys.platform == 'win32'\nPATH_SEPARATOR = WIN32 and '\\\\' or '/'\nWORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'extensions')\nTIMEOUT_MSG = 'Timeout'\nUNKNOWN = \"unknown\"\n\n\ndef infer_lang(code):\n    \"\"\"infer the language for the code.\n    TODO: make it robust.\n    \"\"\"\n    if code.startswith(\"python \") or code.startswith(\"pip\") or code.startswith(\"python3 \"):\n        return \"sh\"\n\n    # check if code is a valid python code\n    try:\n        compile(code, \"test\", \"exec\")\n        return \"python\"\n    except SyntaxError:\n        # not a valid python code\n        return UNKNOWN\n\n\ndef head_file(path: str, n: int) -> List[str]:\n    \"\"\"Get the first n lines of a file.\"\"\"\n    try:\n        with open(path, 'r') as f:\n            return [str(line) for line in itertools.islice(f, n)]\n    except Exception:\n        return []\n\n\nclass CodeInterpreterToolArguments(BaseModel):\n    \"\"\"Arguments for the BearlyInterpreterTool.\"\"\"\n\n    python_code: str = Field(\n        ...,\n        examples=[\"print('Hello World')\"],\n        description=(\n            'The pure python script to be evaluated. '\n            'The contents will be in main.py. '\n            'It should not be in markdown format.'\n        ),\n    )\n\n\nclass CodeInterpreterTool(BaseTool):\n    \"\"\"Tool for evaluating python code in native environment.\"\"\"\n\n    name: str = 'bisheng_code_interpreter'\n    description: str = \"code interpreter\"\n    args_schema: Type[BaseModel] = CodeInterpreterToolArguments\n    executor: Any = None\n\n    def _run(self, python_code: str) -> dict:\n        return self.executor.run(python_code)\n\n    def close(self) -> None:\n        self.executor.close()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/dalle_image_generator/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/dalle_image_generator/tool.py",
    "content": "import logging\nfrom typing import Optional, Type, Any\n\nfrom langchain_community.utilities.dalle_image_generator import DallEAPIWrapper\nfrom langchain_community.utils.openai import is_openai_v1\nfrom langchain_core.callbacks import CallbackManagerForToolRun\nfrom langchain_core.tools import BaseTool\nfrom pydantic import BaseModel, Field, model_validator\nfrom typing_extensions import Self\n\nfrom bisheng_langchain.utils.azure_dalle_image_generator import AzureDallEWrapper\n\nlogger = logging.getLogger(__name__)\n\n\nclass DallEInput(BaseModel):\n    query: str = Field(description=\"Description about image.\")\n\n\nclass ProxyDallEAPIWrapper(DallEAPIWrapper):\n    \"\"\"Wrapper for OpenAI's DALL-E Image Generator with proxy support.\"\"\"\n    http_async_client: Optional[Any] = None\n\n    @model_validator(mode=\"after\")\n    def validate_environment(self) -> Self:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        try:\n            import openai\n\n        except ImportError:\n            raise ImportError(\n                \"Could not import openai python package. \"\n                \"Please install it with `pip install openai`.\"\n            )\n\n        if is_openai_v1():\n            client_params = {\n                \"api_key\": self.openai_api_key.get_secret_value()\n                if self.openai_api_key\n                else None,\n                \"organization\": self.openai_organization,\n                \"base_url\": self.openai_api_base,\n                \"timeout\": self.request_timeout,\n                \"max_retries\": self.max_retries,\n                \"default_headers\": self.default_headers,\n                \"default_query\": self.default_query,\n            }\n\n            if not self.client:\n                self.client = openai.OpenAI(**client_params,\n                                            http_client=self.http_client).images  # type: ignore[arg-type, arg-type, arg-type, arg-type, arg-type, arg-type, arg-type, arg-type]\n            if not self.async_client:\n                self.async_client = openai.AsyncOpenAI(**client_params,\n                                                       http_client=self.http_async_client).images  # type: ignore[arg-type, arg-type, arg-type, arg-type, arg-type, arg-type, arg-type, arg-type]\n        elif not self.client:\n            self.client = openai.Image  # type: ignore[attr-defined]\n        else:\n            pass\n        return self\n\n\nclass DallEImageGenerator(BaseTool):\n    name: str = \"dalle_image_generator\"\n    description: str = (\n        \"A wrapper around OpenAI DALL-E API. Useful for when you need to generate images from a text description. Input should be an image description.\"\n    )\n    args_schema: Type[BaseModel] = DallEInput\n    api_wrapper: DallEAPIWrapper | AzureDallEWrapper\n\n    def _run(\n            self,\n            query: str,\n            run_manager: Optional[CallbackManagerForToolRun] = None,\n    ) -> str:\n        \"\"\"Use the tool.\"\"\"\n        return self.api_wrapper.run(query)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/get_current_time/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/get_current_time/tool.py",
    "content": "from datetime import datetime\n\nimport pytz\nfrom pydantic import BaseModel, Field\nfrom langchain.tools import tool\n\n\nclass GetCurTimeInput(BaseModel):\n    timezone: str = Field(\n        default='Asia/Shanghai',\n        description=\"The timezone to get the current time in. Such as 'Asia/Shanghai','Pacific/Palau' or 'US/Mountain'.\",\n    )\n\n\n@tool(args_schema=GetCurTimeInput)\ndef get_current_time(timezone='Asia/Shanghai'):\n    \"\"\"\n    获取当前UTC时间以及主要时区的时间，可用于时间、日期等场景相关的计算。当问题涉及到时间，调用此工具来查询和时间有关的内容。\n    \"\"\"\n    tz = pytz.timezone(timezone)\n    current_time = datetime.now(tz)\n    formatted_time = current_time.strftime(\"%A, %B %d, %Y %I:%M %p\")\n    return formatted_time\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/local_file/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/local_file/local_file.py",
    "content": "import os\nimport re\nfrom typing import Tuple, List, Dict, Any, Optional\n\nimport aiofiles\nfrom langchain_core.tools import BaseTool, StructuredTool\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.linsight.utils import format_size\n\n\nclass FileToolInput(BaseModel):\n    file_path: str = Field(..., description=\"要查看的目录路径,默认为当前目录\")\n\n\nclass FileDirToolInput(BaseModel):\n    directory_path: str = Field(..., description=\"文件的完整路径\")\n\n\nclass SearchFilesInput(BaseModel):\n    directory_path: str = Field(..., description=\"要搜索的目录路径\")\n    pattern: str = Field(default=\"\", description=\"文件名匹配的正则表达式模式（可选）\")\n    max_depth: int = Field(default=5, description=\"最大递归深度（可选，默认为5）\")\n\n\nclass ReadFileInput(BaseModel):\n    file_path: str = Field(..., description=\"要读取的文件路径\")\n    start_line: int = Field(default=1, description=\"起始行号（从1开始计数）\")\n    num_lines: int = Field(default=50, description=\"需要读取的行数，最多250行\")\n\n\nclass SearchTextInput(BaseModel):\n    file_path: str = Field(..., description=\"要搜索的文件路径\")\n    keyword: str = Field(..., description=\"要搜索的短关键词(基于完全匹配)\")\n    result_index: int = Field(default=0, description=\"要返回的匹配结果索引（从0开始计数），默认为第一个匹配\")\n    context_lines: int = Field(default=25, description=\"显示匹配关键词前后的行数，默认为25行\")\n\n\nclass WriteFileInput(BaseModel):\n    file_path: str = Field(..., description=\"目标文件路径\")\n    content: str = Field(..., description=\"要写入的内容\")\n\n\nclass ReplaceFileInput(BaseModel):\n    file_path: str = Field(..., description=\"要编辑的文件路径\")\n    start_line: int = Field(..., description=\"开始替换的行号（从1开始计数，包含此行）\")\n    end_line: int = Field(..., description=\"结束替换的行号（从1开始计数，不包含此行，左开右闭区间）\")\n    replacement_text: str = Field(..., description=\"替换的文本内容\")\n\n\nclass LocalFileTool(BaseModel):\n    \"\"\"\n    LocalFileTool is a tool for managing local files.\n    It provides methods to read, write, and delete files.\n    \"\"\"\n    root_path: str = Field(..., description=\"Root path for file operations permission\")\n\n    def validate_file_path(self, file_path: str) -> Tuple[bool, str, str]:\n        \"\"\"\n        验证文件路径是否在允许的目录范围内\n\n        Args:\n            file_path: 要验证的文件路径\n\n        Returns:\n            Tuple[bool, str, str]: (是否有效, 规范化后的路径, 错误信息)\n        \"\"\"\n        # 如果是相对路径，则拼接到默认根目录\n        if not os.path.isabs(file_path):\n            normalized_path = os.path.join(self.root_path, file_path)\n        else:\n            normalized_path = file_path\n\n        # 获取规范化的绝对路径\n        normalized_path = os.path.abspath(normalized_path)\n        root_path = os.path.abspath(self.root_path)\n\n        # 检查路径是否在允许的根目录下\n        if not normalized_path.startswith(root_path):\n            raise Exception(f\"没有权限访问 '{file_path}'，路径超出允许范围\")\n        return True, normalized_path, \"\"\n\n    def list_files(self, directory_path: str) -> List[str]:\n        \"\"\"\n        列出指定目录下的所有文件和子目录\n\n        Args:\n            directory_path: 要查看的目录路径,默认为当前目录\n\n        Returns:\n            目录中所有文件和子目录的列表\n        \"\"\"\n        # 验证路径权限\n        is_valid, normalized_path, error_msg = self.validate_file_path(directory_path)\n        if not is_valid:\n            return [f\"错误: {error_msg}\"]\n\n        directory_path = normalized_path\n\n        # 确保路径存在\n        if not os.path.exists(directory_path):\n            raise Exception(f\"错误: 路径 '{directory_path}' 不存在\")\n\n        if not os.path.isdir(directory_path):\n            raise Exception(f\"错误: '{directory_path}' 不是一个目录\")\n\n        if directory_path == \".\":\n            directory_path = os.getcwd()\n\n        # 获取目录内容\n        items = os.listdir(directory_path)\n\n        # 构建结果列表，标记文件和目录\n        result = []\n        for item in items:\n            full_path = os.path.join(directory_path, item)\n            if os.path.isdir(full_path):\n                result.append({\n                    \"type\": \"directory\",\n                    \"name\": item,\n                    \"path\": full_path\n                })\n            else:\n                # 获取文件大小\n                size = os.path.getsize(full_path)\n                size_str = format_size(size)\n                result.append({\n                    \"type\": \"file\",\n                    \"name\": item,\n                    \"size\": size_str\n                })\n\n        if not result:\n            return [\"目录为空\"]\n\n        return result\n\n    async def get_file_details(self, file_path: str) -> Dict[str, Any]:\n        \"\"\"\n        获取指定文件的详细信息\n\n        Args:\n            file_path: 文件的完整路径\n\n        Returns:\n            包含文件详细信息的字典\n        \"\"\"\n        # 验证路径权限\n        is_valid, normalized_path, error_msg = self.validate_file_path(file_path)\n        if not is_valid:\n            return {\"error\": error_msg}\n\n        file_path = normalized_path\n\n        if not os.path.exists(file_path):\n            raise Exception(f\"文件 '{file_path}' 不存在\")\n\n        stats = os.stat(file_path)\n        line_num = 0\n        str_num = 0\n        async with aiofiles.open(file_path, 'r', encoding='utf-8') as f:\n            async for line in f:\n                line_num += 1\n                str_num += len(line)\n\n        return {\n            \"名称\": os.path.basename(file_path),\n            \"路径\": file_path,\n            \"大小\": format_size(stats.st_size),\n            \"大小(字节)\": stats.st_size,\n            \"行数\": line_num,\n            \"字符数\": str_num,\n            \"修改时间\": stats.st_mtime,\n            \"是目录\": os.path.isdir(file_path),\n            \"是文件\": os.path.isfile(file_path)\n        }\n\n    def search_files(self, directory_path: str, pattern: str = \"\", max_depth: int = 5) -> List[str]:\n        \"\"\"\n        在指定目录中搜索文件和子目录\n\n        Args:\n            directory_path: 要搜索的目录路径\n            pattern: 文件名匹配的正则表达式模式（可选）\n            max_depth: 最大递归深度（可选，默认为5）\n\n        Returns:\n            匹配的文件和目录列表\n        \"\"\"\n        results = []\n\n        # 验证路径权限\n        is_valid, normalized_path, error_msg = self.validate_file_path(directory_path)\n        if not is_valid:\n            return [f\"错误: {error_msg}\"]\n\n        directory_path = normalized_path\n\n        if not os.path.exists(directory_path) or not os.path.isdir(directory_path):\n            raise Exception(f\"错误: '{directory_path}' 不是有效目录\")\n\n        # 如果提供了pattern，则编译正则表达式\n        regex = None\n        if pattern:\n            try:\n                regex = re.compile(pattern, re.IGNORECASE)\n            except re.error:\n                raise Exception(f\"错误: '{pattern}' 不是有效的正则表达式\")\n\n        def search_recursive(current_path, current_depth):\n            if current_depth > max_depth:\n                return\n\n            try:\n                items = os.listdir(current_path)\n                for item in items:\n                    full_path = os.path.join(current_path, item)\n\n                    # 检查文件名是否匹配\n                    if not pattern:\n                        # 无模式，包含所有文件\n                        matched = True\n                    else:\n                        # 使用正则表达式匹配\n                        matched = bool(regex.search(item))\n\n                    if matched:\n                        if os.path.isdir(full_path):\n                            results.append(f\"directory: {full_path}/\")\n                        else:\n                            size = os.path.getsize(full_path)\n                            size_str = format_size(size)\n                            results.append(f\"file: {full_path} ({size_str})\")\n\n                    # 如果是目录，递归搜索\n                    if os.path.isdir(full_path):\n                        search_recursive(full_path, current_depth + 1)\n            except (PermissionError, OSError):\n                # 忽略无法访问的目录\n                pass\n\n        search_recursive(directory_path, 1)\n\n        if not results:\n            if pattern:\n                return [f\"未找到匹配 '{pattern}' 的文件\"]\n            else:\n                return [\"未找到文件\"]\n\n        return results\n\n    async def judge_file_can_read(self, file_path: str) -> (bool, Any):\n        # 验证路径权限\n        is_valid, normalized_path, error_msg = self.validate_file_path(file_path)\n        if not is_valid:\n            return False, {\"error\": error_msg}\n\n        file_path = normalized_path\n\n        # 检查文件是否存在\n        if not os.path.exists(file_path):\n            raise Exception(f\"文件 '{file_path}' 不存在\")\n\n        # 检查是否是文件\n        if not os.path.isfile(file_path):\n            raise Exception(f\"'{file_path}' 不是一个文件\")\n\n        # 尝试读取文件内容\n        try:\n            async with aiofiles.open(file_path, 'r', encoding='utf-8') as f:\n                lines = await f.readlines()\n                return True, lines\n        except UnicodeDecodeError:\n            # 如果UTF-8解码失败，尝试其他编码\n            try:\n                async with aiofiles.open(file_path, 'r', encoding='gbk') as f:\n                    lines = await f.readlines()\n                    return True, lines\n            except UnicodeDecodeError:\n                raise Exception(\"无法解码文件内容，可能是二进制文件\")\n\n    async def read_text_file(self, file_path: str, start_line: int = 1, num_lines: int = 50) -> Dict[str, Any]:\n        \"\"\"\n        读取本地文本文件的内容\n\n        Args:\n            file_path: 要读取的文件路径\n            start_line: 起始行号（从1开始计数）\n            num_lines: 需要读取的行数，最多250行, 默认50行\n\n        Returns:\n            包含文件内容和元数据的字典\n        \"\"\"\n        if not num_lines:\n            num_lines = 50\n        flag, lines = await self.judge_file_can_read(file_path)\n        if not flag:\n            return lines\n\n        # 调整起始行（用户输入从1开始，Python从0开始）\n        start_idx = max(0, start_line - 1)\n\n        # 计算结束行\n        if num_lines > 250:\n            num_lines = 250\n\n        end_idx = min(start_idx + num_lines, len(lines))\n\n        # 提取指定行的内容\n        content = ''\n        for idx in range(start_idx, end_idx):\n            content += f\"第{idx + 1}行内容: {lines[idx]}\"\n\n        # 构建结果\n        total_lines = len(lines)\n        result = {\n            \"文件名\": os.path.basename(file_path),\n            \"总行数\": total_lines,\n            \"读取范围\": f\"{start_line}-{end_idx + 1}\",\n            \"实际读取行数\": end_idx - start_idx,\n            \"内容\": content\n        }\n\n        return result\n\n    async def search_text_in_file(self, file_path: str, keyword: str, result_index: int = 0,\n                                  context_lines: int = 25) -> Dict[str, Any]:\n        \"\"\"\n        这是一个在文本文件中搜索关键词的工具，并返回匹配结果的上下文。关键词需要尽可能短以满足匹配。\n\n        Args:\n            file_path: 要搜索的文件路径\n            keyword: 要搜索的短关键词(基于完全匹配)\n            result_index: 要返回的匹配结果索引（从0开始计数），默认为第一个匹配\n            context_lines: 显示匹配关键词前后的行数，默认为25行\n\n        Returns:\n            包含搜索结果和上下文的字典，包括匹配总数、当前匹配索引和上下文内容\n        \"\"\"\n        flag, lines = await self.judge_file_can_read(file_path)\n        if not flag:\n            return lines\n\n        # 查找所有匹配的行\n        matches = []\n        for i, line in enumerate(lines):\n            if keyword in line:\n                matches.append(i)\n\n        # 检查是否有匹配结果\n        total_matches = len(matches)\n        if total_matches == 0:\n            return {\n                \"文件名\": os.path.basename(file_path),\n                \"关键词\": keyword,\n                \"匹配总数\": 0,\n                \"内容\": f\"未找到关键词 '{keyword}'\"\n            }\n\n        # 检查请求的索引是否有效\n        if result_index < 0 or result_index >= total_matches:\n            raise Exception(f\"请求的索引 {result_index} 超出范围 (0-{total_matches - 1})\")\n\n        # 获取匹配行的索引\n        match_line_index = matches[result_index]\n\n        # 计算上下文范围\n        start_line = max(0, match_line_index - context_lines)\n        end_line = min(len(lines), match_line_index + context_lines + 1)\n\n        # 提取上下文内容\n        context = []\n        for i in range(start_line, end_line):\n            line_number = i + 1  # 用户友好的行号（从1开始）\n            line_content = lines[i].rstrip('\\n')\n\n            # 标记匹配行\n            if i == match_line_index:\n                line_prefix = f\">> {line_number}: \"\n            else:\n                line_prefix = f\"   {line_number}: \"\n\n            context.append(f\"{line_prefix}{line_content}\")\n\n        # 构建结果\n        result = {\n            \"文件名\": os.path.basename(file_path),\n            \"关键词\": keyword,\n            \"匹配总数\": total_matches,\n            \"当前匹配索引\": result_index,\n            \"当前匹配行号\": match_line_index + 1,\n            \"总行数\": len(lines),\n            \"上下文\": \"\\n\".join(context)\n        }\n\n        return result\n\n    async def add_text_to_file(self, file_path: str, content: str) -> Dict[str, Any]:\n        \"\"\"\n            将文本内容追加到文本文件，如果文件不存在，则创建文件\n\n            Args:\n                file_path: 目标文件路径\n                content: 要写入的内容\n\n            Returns:\n                包含操作结果的字典\n        \"\"\"\n        is_valid, normalized_path, error_msg = self.validate_file_path(file_path)\n        if not is_valid:\n            return {\"状态\": \"错误\", \"错误信息\": error_msg}\n\n        # 确保目录存在\n        os.makedirs(os.path.dirname(normalized_path), exist_ok=True)\n\n        # 追加模式\n        async with aiofiles.open(normalized_path, \"a\", encoding=\"utf-8\") as f:\n            await f.write(content + '\\n')\n        lines = []\n        if os.path.exists(normalized_path):\n            async with aiofiles.open(normalized_path, \"r\", encoding=\"utf-8\") as f:\n                lines = await f.readlines()\n        return {\n            \"状态\": \"成功\",\n            \"文件路径\": normalized_path,\n            \"追加行数\": len(content.split('\\n')),\n            \"文件行数\": len(lines)\n        }\n\n    async def replace_file_lines(self, file_path: str, start_line: int, end_line: int, replacement_text: str) \\\n            -> Dict[str, Any]:\n        \"\"\"\n        替换文件中的指定行范围\n\n        Args:\n            file_path: 要编辑的文件路径\n            start_line: 开始替换的行号（从1开始计数，包含此行）\n            end_line: 结束替换的行号（从1开始计数，不包含此行，左开右闭区间）\n            replacement_text: 替换的文本内容\n\n        Returns:\n            包含替换结果的字典\n        \"\"\"\n        is_valid, normalized_path, error_msg = self.validate_file_path(file_path)\n        if not is_valid:\n            return {\"状态\": \"错误\", \"错误信息\": error_msg}\n        flag, lines = await self.judge_file_can_read(file_path)\n        if not flag:\n            return lines\n\n        total_lines = len(lines)\n\n        # 验证行号范围\n        if start_line > total_lines:\n            raise Exception(f\"起始行号 {start_line} 超出文件总行数 {total_lines}\")\n\n        # 调整end_line，确保不超出文件范围\n        actual_end_line = min(end_line, total_lines + 1)\n\n        # 转换为0基索引\n        start_idx = start_line - 1\n        end_idx = actual_end_line - 1\n\n        # 处理替换文本，确保以换行符结尾（如果原来被替换的行有换行符）\n        replacement_lines = []\n        if replacement_text:\n            # 分割替换文本为行\n            replacement_lines = replacement_text.splitlines(True)  # 保留换行符\n            # 如果最后一行没有换行符，且被替换的范围有内容，则添加换行符\n            if replacement_lines and not replacement_lines[-1].endswith('\\n') and end_idx > start_idx:\n                replacement_lines[-1] += '\\n'\n\n        # 记录被替换的内容\n        replaced_line_count = end_idx - start_idx\n\n        # 执行替换\n        new_lines = lines[:start_idx] + replacement_lines + lines[end_idx:]\n\n        # 写回文件\n        async with aiofiles.open(normalized_path, \"w\", encoding=\"utf-8\") as f:\n            await f.writelines(new_lines)\n\n        # 构建结果\n        result = {\n            \"状态\": \"成功\",\n            \"文件路径\": file_path,\n            \"替换范围\": f\"第{start_line}行到第{actual_end_line - 1}行（左开右闭）\",\n            \"原始行数\": total_lines,\n            \"替换后行数\": len(new_lines),\n            \"被替换的行数\": replaced_line_count,\n            \"新增的行数\": len(replacement_lines)\n        }\n\n        return result\n\n    @classmethod\n    def get_tool_by_name(cls, name: str, root_path: str) -> Optional[BaseTool]:\n        \"\"\"\n        Get a specific tool by name.\n\n        :param name: The name of the tool to retrieve.\n        :param root_path: Path to the directory to list files from.\n        :return: The tool if found, otherwise None.\n        \"\"\"\n        obj = cls(root_path=root_path)\n        if name == \"list_files\":\n            return StructuredTool(\n                name=f\"{cls.list_files.__name__}\",\n                description=cls.list_files.__doc__,\n                args_schema=FileDirToolInput,\n                func=obj.list_files,\n            )\n        elif name == \"get_file_details\":\n            return StructuredTool(\n                name=f\"{cls.get_file_details.__name__}\",\n                description=cls.get_file_details.__doc__,\n                args_schema=FileToolInput,\n                coroutine=obj.get_file_details,\n            )\n        elif name == \"search_files\":\n            return StructuredTool(\n                name=f\"{cls.search_files.__name__}\",\n                description=cls.search_files.__doc__,\n                args_schema=SearchFilesInput,\n                func=obj.search_files,\n            )\n        elif name == \"read_text_file\":\n            return StructuredTool(\n                name=f\"{cls.read_text_file.__name__}\",\n                description=cls.read_text_file.__doc__,\n                args_schema=ReadFileInput,\n                coroutine=obj.read_text_file,\n            )\n        elif name == \"search_text_in_file\":\n            return StructuredTool(\n                name=f\"{cls.search_text_in_file.__name__}\",\n                description=cls.search_text_in_file.__doc__,\n                args_schema=SearchTextInput,\n                coroutine=obj.search_text_in_file,\n            )\n        elif name == \"add_text_to_file\":\n            return StructuredTool(\n                name=f\"{cls.add_text_to_file.__name__}\",\n                description=cls.add_text_to_file.__doc__,\n                args_schema=WriteFileInput,\n                coroutine=obj.add_text_to_file,\n            )\n        elif name == \"replace_file_lines\":\n            return StructuredTool(\n                name=f\"{cls.replace_file_lines.__name__}\",\n                description=cls.replace_file_lines.__doc__,\n                args_schema=ReplaceFileInput,\n                coroutine=obj.replace_file_lines,\n            )\n        # 如果没有找到对应的工具，抛出异常\n        raise Exception(f\"LocalFile not found tool: {name}\")\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/message/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/message/dingding.py",
    "content": "from typing import Any, Optional, Type\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    url: str = Field(description=\"钉钉机器人的URL地址\")\n    message: str = Field(description=\"需要发送的钉钉消息\")\n\n\nclass DingdingMessageTool(BaseModel):\n\n    def send_message(self, message: str, url: str) -> str:\n        \"\"\"\n        发送钉钉机器人消息\n        \n        Args:\n            webhook_url: 钉钉机器人的 webhook 地址\n            message: 要发送的消息内容\n        \n        Returns:\n            dict: 钉钉接口的响应结果\n        \"\"\"\n        # 构建请求头\n        headers = {\"Content-Type\": \"application/json\"}\n        # 构建请求体\n        data = {\"msgtype\": \"text\", \"text\": {\"content\": message}}\n\n        try:\n            # 发送 POST 请求\n            response = requests.post(url=url, headers=headers, json=data)\n\n            # 检查响应状态\n            response.raise_for_status()\n            return response.json()\n\n        except requests.exceptions.RequestException as e:\n            return f\"发送消息失败: {str(e)}\"\n\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"DingdingMessageTool\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = DingdingMessageTool(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/message/email.py",
    "content": "import smtplib\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\nfrom typing import Any\n\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    receiver: str = Field(description=\"收件人）\")\n    subject: str = Field(description=\"邮件主题\")\n    content: str = Field(description=\"邮件正文内容\")\n\n\nclass EmailMessageTool(BaseModel):\n\n    email_account: str = Field(description=\"发件人邮箱\")\n    email_password: str = Field(description=\"邮箱授权码/密码\")\n    smtp_server: str = Field(description=\"SMTP服务器地址\")\n    encrypt_method: str = Field(description=\"encrypt_method\")\n    smtp_port: int = Field(default=465, description=\" 端口号（SSL一般465，TLS用587）\")\n\n    def send_email(\n        self,\n        receiver: str = None,\n        subject: str = None,\n        content: str = None,\n    ):\n        \"\"\"\n        发送电子邮件函数\n\n        参数：\n        sender : str - 发件人邮箱\n        password : str - 邮箱授权码/密码\n        receiver : str/list - 收件人（多个用逗号）\n        subject : str - 邮件主题\n        content : str - 邮件正文内容\n        content_type : str - 内容类型（plain/html）\n        attachments : list - 附件路径列表\n        smtp_server : str - SMTP服务器地址\n        port : int - 端口号（SSL一般465，TLS用587）\n        \"\"\"\n\n        try:\n            content_type = \"plain\"\n            # 创建邮件对象\n            msg = MIMEMultipart()\n            msg[\"From\"] = self.email_account\n            msg[\"To\"] = receiver\n            msg[\"Subject\"] = subject\n\n            # 添加正文\n            body = MIMEText(content, content_type, \"utf-8\")\n            msg.attach(body)\n\n            # 添加附件\n            # if attachments:\n            #     for file_path in attachments:\n            #         with open(file_path, \"rb\") as f:\n            #             part = MIMEApplication(f.read())\n            #             part.add_header(\n            #                 \"Content-Disposition\",\n            #                 \"attachment\",\n            #                 filename=os.path.basename(file_path),\n            #             )\n            #             msg.attach(part)\n\n                # 创建SMTP连接\n            if self.smtp_port == 465:\n                # SSL连接\n                server = smtplib.SMTP_SSL(self.smtp_server, self.smtp_port)\n            else:\n                # TLS连接\n                server = smtplib.SMTP(self.smtp_server, self.smtp_port)\n                server.starttls()\n\n            # 登录邮箱\n            server.login(self.email_account, self.email_password)\n\n            # 发送邮件\n            server.sendmail(self.email_account, receiver.split(\",\"), msg.as_string())\n        except Exception as e:\n            raise Exception(f\"邮件发送失败：{e}\")\n\n        return \"发送成功\"\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"EmailMessageTool\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = EmailMessageTool(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/message/feishu.py",
    "content": "from typing import Any, Optional, Type\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    message: Optional[str] = Field(None, description=\"需要发送的钉钉消息\")\n    receive_id: Optional[str] = Field(None, description=\"接收的ID\")\n    receive_id_type: Optional[str] = Field(None, description=\"接收的ID类型\")\n    container_id: Optional[str] = Field(None, description=\"container_id\")\n    start_time: Optional[str] = Field(None, description=\"start_time\")\n    end_time: Optional[str] = Field(None, description=\"end_time\")\n    # page_token: Optional[str] = Field(description=\"page_token\")\n    container_id_type: Optional[str] = Field(None, description=\"container_id_type\")\n    page_size: Optional[int] = Field(default=20,description=\"page_size\")\n    page_token: Optional[str] = Field(None, description=\"page_token\")\n    sort_type: Optional[str] = Field(description=\"sort_type\",default=\"ByCreateTimeAsc\")\n\n\nclass FeishuMessageTool(BaseModel):\n    API_BASE_URL: str = \"https://open.feishu.cn/open-apis\"\n    app_id: str = Field(description=\"app_id\")\n    app_secret: str = Field(description=\"app_secret\")\n\n    def send_message(self, message: str, receive_id: str, receive_id_type: str) -> str:\n        \"\"\"\n        发送钉钉机器人消息\n\n        Args:\n            webhook_url: 钉钉机器人的 webhook 地址\n            message: 要发送的消息内容\n\n        Returns:\n            dict: 钉钉接口的响应结果\n        \"\"\"\n        # 构建请求头\n        headers = {\"Content-Type\": \"application/json\",\"Authorization\":f\"Bearer {self.get_access_token()}\"}\n        # 构建请求体\n        url = f\"{self.API_BASE_URL}/im/v1/messages?receive_id_type={receive_id_type}\"\n        payload = {\n            \"receive_id\": receive_id,\n            \"msg_type\": \"text\",\n            \"content\": '{\\\"text\\\":\\\"' + message + '\\\"}',\n            # \"content\": message.strip('\"').replace(r\"\\\"\", '\"').replace(r\"\\\\\", \"\\\\\"),\n        }\n        try:\n            # 发送 POST 请求\n            response = requests.post(url=url, headers=headers, json=payload)\n\n            # 检查响应状态\n            response.raise_for_status()\n            return response.json()\n\n        except requests.exceptions.RequestException as e:\n            return f\"发送消息失败: {str(e)}\"\n\n\n    def get_chat_messages(\n        self,\n        container_id: str,\n        container_id_type: str,\n        start_time: Optional[str],\n        end_time: Optional[str],\n        page_size: Optional[int] ,\n        page_token: Optional[str],\n        sort_type: Optional[str],\n    ) -> str:\n        \"\"\"获取聊天记录\"\"\"\n        url = f\"{self.API_BASE_URL}/im/v1/messages\"\n        headers = {\"Content-Type\": \"application/json\",\"Authorization\":f\"Bearer {self.get_access_token()}\"}\n        params={\n            \"container_id\": container_id,\n            \"container_id_type\": container_id_type,\n            \"start_time\": start_time,\n            \"end_time\": end_time,\n            \"page_token\": page_token,\n        }\n        if page_size:\n            params[\"page_size\"] = page_size\n        if sort_type:\n            params[\"sort_type\"] = sort_type \n        try:\n            response = requests.get(\n                url=url,\n                headers=headers,\n                params=params\n            )\n        except requests.exceptions.RequestException as e:\n            return f\"获取消息失败: {str(e)}\"\n\n        if response.json()[\"code\"] != 0:\n            return f\"获取消息失败: {response.json()}\"\n\n        return response.json()[\"data\"]\n\n    def get_access_token(self) -> str:\n        url = \"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal\"\n        params = {\"app_id\":self.app_id , \"app_secret\": self.app_secret}\n        response = requests.post(url,json=params)\n        if response.json()[\"code\"] != 0:\n            raise Exception(\"app_id or app_secret error\")\n        return response.json()[\"tenant_access_token\"]\n\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"FeishuMessageTool\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = FeishuMessageTool(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/message/wechat.py",
    "content": "from typing import Any\n\nimport requests\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.gpts.tools.api_tools.base import (APIToolBase,\n                                                         MultArgsSchemaTool)\n\n\nclass InputArgs(BaseModel):\n    url: str = Field(description=\"企业微信机器人的webhook地址\")\n    message: str = Field(description=\"需要发送的消息\")\n\n\nclass WechatMessageTool(BaseModel):\n\n    def send_message(self, message: str, url: str) -> str:\n        \"\"\"\n        发送企业微信机器人消息\n        \n        Args:\n            webhook_url: 机器人的 webhook 地址\n            message: 要发送的消息内容\n        \n        Returns:\n            dict: 钉钉接口的响应结果\n        \"\"\"\n        # 构建请求头\n        headers = {\"Content-Type\": \"application/json\"}\n        # 构建请求体\n        data = {\"msgtype\": \"text\", \"text\": {\"content\": message}}\n\n        try:\n            # 发送 POST 请求\n            response = requests.post(url=url, headers=headers, json=data)\n            return response.json()\n        except requests.exceptions.RequestException as e:\n            return f\"发送消息失败: {str(e)}\"\n\n    @classmethod\n    def get_api_tool(cls, name: str, **kwargs: Any) -> \"WechatMessageTool\":\n        attr_name = name.split(\"_\", 1)[-1]\n        c = WechatMessageTool(**kwargs)\n        class_method = getattr(c, attr_name)\n\n        return MultArgsSchemaTool(\n            name=name,\n            description=class_method.__doc__,\n            func=class_method,\n            args_schema=InputArgs,\n        )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/sql_agent/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/sql_agent/tool.py",
    "content": "from typing import Type, Optional\n\nfrom langchain_community.agent_toolkits import SQLDatabaseToolkit\nfrom langchain_community.utilities import SQLDatabase\nfrom langchain_core.callbacks import CallbackManagerForToolRun\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.messages import HumanMessage\nfrom langchain_core.tools import BaseTool\nfrom langgraph.graph.graph import CompiledGraph\nfrom langgraph.prebuilt import create_react_agent\nfrom pydantic import BaseModel, Field, ConfigDict\n\n_agent_system_prompt = \"\"\"You are an autonomous agent that answers user questions by querying an SQL database through the provided tools.\n\nWhen a new question arrives, follow the steps *in order*:\n\n1. ALWAYS call `sql_db_list_tables` first.  \n   Purpose: discover what tables are available. Never skip this step.\n\n2. Choose the table(s) that are probably relevant, then call `sql_db_schema`\n   once for each of those tables to obtain their schemas.\n\n3. Write one syntactically-correct {dialect} SELECT statement.  \n   Guidelines for this query:  \n   - Return no more than 50 rows **unless** the user explicitly requests another limit.  \n   - Select only the columns needed to answer the question; avoid `SELECT *`.  \n   - If helpful, add `ORDER BY` on a meaningful column so the most interesting rows appear first.  \n   - ABSOLUTELY NO data-modification statements (INSERT, UPDATE, DELETE, DROP, …).  \n   - Double-check the SQL before executing.\n\n4. Execute the query with the execution tool `sql_db_query`.  \n   If execution fails, inspect the error, revise the SQL, and try again.  \n   Repeat until the query runs successfully or you are certain the request\n   cannot be satisfied.\n\n5. Read the resulting rows and craft a concise, direct answer for the user.\n   If the result set is empty, explain that no matching data was found.\n\n6. Include the final SQL query in your answer unless the user asks you not to.\n\nRemember:  \n- List tables → fetch schemas → write & verify SELECT → execute → answer.  \n- Never skip steps 1 or 2.  \n- Never perform DML.  \n- Keep answers focused on the user's question.\"\"\"\n\n\nclass SqlAgentAPIWrapper(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    llm: BaseLanguageModel = Field(description=\"llm to use for sql agent\")\n    sql_address: str = Field(description=\"sql database address for SQLDatabase uri\")\n\n    db: Optional[SQLDatabase] = None\n    agent: Optional[CompiledGraph] = None\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.llm = kwargs.get('llm')\n        self.sql_address = kwargs.get('sql_address')\n\n        self.db = SQLDatabase.from_uri(self.sql_address)\n        toolkit = SQLDatabaseToolkit(db=self.db, llm=self.llm)\n        tools = toolkit.get_tools()\n        self.agent = create_react_agent(\n            self.llm,\n            tools,\n            prompt=_agent_system_prompt.format(dialect=self.db.dialect),\n            checkpointer=False,\n        )\n\n    def run(self, query: str) -> str:\n        messages = self.agent.invoke({\"messages\": [HumanMessage(content=query)]})\n        return messages[\"messages\"][-1].content\n\n    def arun(self, query: str) -> str:\n        return self.run(query)\n\n\nclass SqlAgentInput(BaseModel):\n    query: str = Field(description=\"用户数据查询需求（需要尽可能完整、准确）\")\n\n\nclass SqlAgentTool(BaseTool):\n    name: str = \"sql_agent\"\n    description: str = \"回答与 SQL 数据库有关的问题。给定用户问题，将从数据库中获取可用的表以及对应 DDL，生成 SQL 查询语句并进行执行，最终得到执行结果。\"\n    args_schema: Type[BaseModel] = SqlAgentInput\n    api_wrapper: SqlAgentAPIWrapper\n\n    def _run(\n            self,\n            query: str,\n            run_manager: Optional[CallbackManagerForToolRun] = None,\n    ) -> str:\n        \"\"\"Use the tool.\"\"\"\n        try:\n            res = self.api_wrapper.run(query)\n        finally:\n            if self.api_wrapper and self.api_wrapper.db:\n                self.api_wrapper.db._engine.dispose()\n        return res\n\n\nif __name__ == '__main__':\n    from langchain_openai import AzureChatOpenAI\n\n    llm = AzureChatOpenAI()\n    sql_agent_tool = SqlAgentTool(\n        api_wrapper=SqlAgentAPIWrapper(\n            llm=llm,\n            sql_address=\"sqlite:///Chinook.db\",\n        )\n    )\n\n    result = sql_agent_tool.run(\"Which sales agent made the most in sales in 2009?\")\n    print(result)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/web_search/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/tools/web_search/tool.py",
    "content": "import json\nfrom abc import abstractmethod, ABC\nfrom typing import Type\n\nimport requests\nfrom langchain_community.utilities import BingSearchAPIWrapper\nfrom langchain_core.tools import BaseTool\nfrom pydantic import BaseModel, Field\nfrom urllib3.util.url import parse_url\n\nfrom bisheng_langchain.gpts.tools.bing_search.tool import BingSearchResults\n\n\nclass SearchInput(BaseModel):\n    query: str = Field(description=\"Search query\")\n\n\nclass SearchTool(ABC):\n    def __init__(self, *args, **kwargs) -> None:\n        self.args = args\n        self.kwargs = kwargs\n\n    def _requests(self, url: str, method: str, **kwargs):\n        \"\"\"Base requests method to handle GET and POST requests.\"\"\"\n        if method == 'GET':\n            response = requests.get(url, **kwargs)\n        elif method == 'POST':\n            response = requests.post(url, **kwargs)\n        else:\n            raise ValueError(\"Unsupported HTTP method. Use 'GET' or 'POST'.\")\n\n        if response.status_code != 200:\n            raise Exception(f\"Request {url} failed: {response.status_code} - {response.text}\")\n        return response.json()\n\n    # 抽象类\n    @abstractmethod\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        raise NotImplementedError()\n\n    def invoke(self, query: str, **kwargs) -> (str, list):\n        \"\"\"\n        Invoke the search tool with the given query.\n        returns\n            - str: The search result as a string.\n            - list: A list of search result link info.\n        \"\"\"\n\n        # Here you would implement the actual search logic\n        # For demonstration purposes, we'll just return a dummy response\n        result = self._invoke(query, **kwargs)\n        return json.dumps(result, ensure_ascii=False)\n\n    @classmethod\n    def get_host_from_url(cls, url: str) -> str:\n        \"\"\"Extract the host from a given URL.\"\"\"\n        if not url:\n            return \"\"\n        return parse_url(url).host\n\n    @classmethod\n    def init_search_tool(cls, name: str, *args, **kwargs) -> \"SearchTool\":\n        \"\"\"Initialize the search tool with the given name and arguments.\"\"\"\n        tool_class: dict = {\n            'bing': BingSearch,\n            'bocha': BoChaSearch,\n            'jina': JinaDeepSearch,\n            'serp': SerpSearch,\n            'tavily': TavilySearch,\n            'cloudsway': CloudswaySearch,\n            'searXNG': SearXNGSearch,\n        }\n        if name not in tool_class:\n            raise ValueError(f\"Tool {name} not found.\")\n        c = tool_class[name](*args, **kwargs)\n        return c\n\n\nclass WebSearchTool(BaseTool):\n    \"\"\"web search tools.\"\"\"\n    name: str = \"web_search\"\n    description: str = \"使用 query 进行联网检索并返回结果。\"\n    args_schema: Type[BaseModel] = SearchInput\n    api_wrapper: SearchTool = Field(..., description=\"The search API wrapper to use for web search.\")\n\n    def _run(self, query: str, **kwargs) -> str:\n        \"\"\"Use the tool.\"\"\"\n        return self.api_wrapper.invoke(query, **kwargs)\n\n\nclass BingSearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.base_url = kwargs.get('base_url')\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        bingtool = BingSearchResults(api_wrapper=BingSearchAPIWrapper(bing_subscription_key=self.api_key,\n                                                                      bing_search_url=self.base_url),\n                                     num_results=10)\n        res = bingtool.invoke({'query': query})\n        if isinstance(res, str):\n            res = eval(res)\n        web_list = []\n        for index, result in enumerate(res):\n            # 处理搜索结果\n            snippet = result.get('snippet')\n            web_list.append({\n                'title': result.get('title'),\n                'url': result.get('link'),\n                'snippet': snippet,\n                'thumbnail': result.get('thumbnail'),\n                'site_name': self.get_host_from_url(result.get('link'))\n            })\n        return web_list\n\n\nclass BoChaSearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.base_url = 'https://api.bochaai.com/v1/web-search'\n        self.headers = {'Authorization': f'Bearer {self.api_key}'}\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        # Implement the search logic for BoCha here\n        # For demonstration purposes, we'll just return a dummy response\n        result = self._requests(self.base_url, method='POST', json={'query': query, 'summary': True},\n                                headers=self.headers)\n        if result.get('code') != 200:\n            raise Exception(f\"BoCha Error: {result}\")\n        web_pages = result.get('data', {}).get('webPages', {}).get('value', [])\n        web_list = []\n        for index, item in enumerate(web_pages):\n            web_list.append({\n                'title': item.get('name'),\n                'url': item.get('url'),\n                'snippet': item.get('snippet'),\n                'thumbnail': item.get('siteIcon'),\n                'site_name': item.get('siteName') or self.get_host_from_url(item.get('url')),\n            })\n        return web_list\n\n\nclass JinaDeepSearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.base_url = 'https://deepsearch.jina.ai/v1/chat/completions'\n        self.headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": f\"Bearer {self.api_key}\"\n        }\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        req_data = {\n            \"model\": \"jina-deepsearch-v1\",\n            \"messages\": [\n                {\n                    \"role\": \"user\",\n                    \"content\": query\n                },\n            ],\n            \"stream\": False,\n            \"reasoning_effort\": \"low\",\n            \"max_attempts\": 1,\n            \"no_direct_answer\": False\n        }\n        result = self._requests(self.base_url, method='POST', json=req_data, headers=self.headers)\n\n        choices = result.get('choices', [])\n        web_list = []\n        for index, item in enumerate(choices):\n            item_message = item.get('message', {})\n            for one_web in item_message.get('annotations', []):\n                one_web_info = one_web.get('url_citation', {})\n                web_list.append({\n                    'title': one_web_info.get('title'),\n                    'url': one_web.get('url'),\n                    'snippet': one_web.get('exactQuote'),\n                    'thumbnail': None,\n                    'site_name': self.get_host_from_url(one_web.get('url')),\n                })\n        return web_list\n\n\nclass SerpSearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.engine = kwargs.get('engine')\n        self.base_url = 'https://serpapi.com/search.json'\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        result = self._requests(self.base_url, method='GET', params={'q': query, 'api_key': self.api_key,\n                                                                     'engine': self.engine})\n\n        answer_result = result.get('organic_results', [])\n        web_list = []\n        for index, item in enumerate(answer_result):\n            web_list.append({\n                'title': item.get('title'),\n                'url': item.get('link'),\n                'snippet': item.get('snippet'),\n                'thumbnail': item.get('source_logo') or item.get('thumbnail'),\n                'site_name': self.get_host_from_url(item.get('link')),\n            })\n        return web_list\n\n\nclass TavilySearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.base_url = 'https://api.tavily.com/search'\n        self.headers = {'Authorization': f'Bearer {self.api_key}'}\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        result = self._requests(self.base_url, method='POST', json={'query': query}, headers=self.headers)\n\n        answers = result.get('results', [])\n\n        web_list = []\n        for index, item in enumerate(answers):\n            web_list.append({\n                'title': item.get('title'),\n                'url': item.get('url'),\n                'snippet': item.get('content'),\n                'thumbnail': item.get('favicon'),\n                'site_name': self.get_host_from_url(item.get('url')),\n            })\n        return web_list\n\n\nclass CloudswaySearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.api_key = kwargs.get('api_key')\n        self.endpoint = kwargs.get('endpoint')\n        self.base_url = f'https://searchapi.cloudsway.net/search/{self.endpoint}/smart'\n        self.headers = {'Authorization': f'Bearer {self.api_key}'}\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        result = self._requests(self.base_url, method='GET', params={'q': query}, headers=self.headers)\n\n        answers = result.get('webPages', {}).get('value', [])\n\n        # parse result\n        web_list = []\n        for index, item in enumerate(answers):\n            web_list.append({\n                'title': item.get('name'),\n                'url': item.get('url'),\n                'snippet': item.get('snippet'),\n                'thumbnail': item.get('thumbnailUrl'),\n                'site_name': item.get('siteName') or self.get_host_from_url(item.get('url')),\n            })\n        return web_list\n\n\nclass SearXNGSearch(SearchTool):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self.base_url = kwargs.get('server_url').rstrip('/')\n\n    def _invoke(self, query: str, **kwargs) -> (str, list):\n        result = self._requests(f'{self.base_url}/search', method='GET',\n                                params={'q': query, 'format': 'json'})\n\n        answers = result.get('results', [])\n\n        web_list = []\n        for index, item in enumerate(answers):\n            web_list.append({\n                'title': item.get('title'),\n                'url': item.get('url'),\n                'snippet': item.get('content'),\n                'thumbnail': item.get('thumbnail'),\n                'site_name': self.get_host_from_url(item.get('url')),\n            })\n        return web_list\n"
  },
  {
    "path": "src/backend/bisheng_langchain/gpts/utils.py",
    "content": "# This module is used to import any langchain class by name.\n\nimport importlib\nfrom typing import Any, Type\n\nfrom langchain.agents import Agent\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.chains.base import Chain\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.prompts import PromptTemplate\nfrom langchain.tools import BaseTool\n\n\ndef import_module(module_path: str) -> Any:\n    \"\"\"Import module from module path\"\"\"\n    if 'from' not in module_path:\n        # Import the module using the module path\n        return importlib.import_module(module_path)\n    # Split the module path into its components\n    _, module_path, _, object_name = module_path.split()\n\n    # Import the module using the module path\n    module = importlib.import_module(module_path)\n\n    return getattr(module, object_name)\n\n\ndef import_class(class_path: str) -> Any:\n    \"\"\"Import class from class path\"\"\"\n    module_path, class_name = class_path.rsplit('.', 1)\n    module = import_module(module_path)\n    return getattr(module, class_name)\n\n\ndef import_by_type(_type: str, name: str) -> Any:\n    from bisheng_langchain import chat_models\n    \"\"\"Import class by type and name\"\"\"\n    if _type is None:\n        raise ValueError(f'Type cannot be None. Check if {name} is in the config file.')\n    func_dict = {\n        'agents': import_agent,\n        'prompts': import_prompt,\n        'llms': {\n            'llm': import_llm,\n            'chat': import_chat_llm,\n            'contribute': import_chain_contribute_llm,\n            'chatopenai': import_chat_openai,\n        },\n        'tools': import_tool,\n        'chains': import_chain,\n        'toolkits': import_toolkit,\n        'memory': import_memory,\n        'embeddings': import_embedding,\n        'vectorstores': import_vectorstore,\n        'documentloaders': import_documentloader,\n        'textsplitters': import_textsplitter,\n        'utilities': import_utility,\n        'output_parsers': import_output_parser,\n        'retrievers': import_retriever,\n        'autogenRoles': import_autogenRoles,\n        'inputOutput': import_inputoutput,\n    }\n    if _type == 'llms':\n        if name.lower() == 'chatopenai':\n            key = 'chatopenai'\n        else:\n            key = 'contribute' if name in chat_models.__all__ else 'chat' if 'chat' in name.lower(\n            ) else 'llm'\n        loaded_func = func_dict[_type][key]  # type: ignore\n    else:\n        loaded_func = func_dict[_type]\n\n    return loaded_func(name)\n\n\ndef import_inputoutput(input_output: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    return import_module(f'from bisheng_langchain.input_output import {input_output}')\n\n\ndef import_output_parser(output_parser: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    return import_module(f'from langchain.output_parsers import {output_parser}')\n\n\ndef import_chat_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    return import_class(f'langchain.chat_models.{llm}')\n\n\ndef import_chain_contribute_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    return import_class(f'bisheng_langchain.chat_models.{llm}')\n\n\ndef import_retriever(retriever: str) -> Any:\n    \"\"\"Import retriever from retriever name\"\"\"\n    return import_module(f'from langchain.retrievers import {retriever}')\n\n\ndef import_autogenRoles(autogen: str) -> Any:\n    return import_module(f'from bisheng_langchain.autogen_role import {autogen}')\n\n\ndef import_memory(memory: str) -> Any:\n    \"\"\"Import memory from memory name\"\"\"\n    return import_module(f'from langchain.memory import {memory}')\n\n\ndef import_prompt(prompt: str) -> Type[PromptTemplate]:\n    \"\"\"Import prompt from prompt name\"\"\"\n    if prompt == 'ZeroShotPrompt':\n        return import_class('langchain.prompts.PromptTemplate')\n    return import_class(f'langchain.prompts.{prompt}')\n\n\ndef import_toolkit(toolkit: str) -> Any:\n    \"\"\"Import toolkit from toolkit name\"\"\"\n    from bisheng.interface.toolkits.base import toolkits_creator\n    return toolkits_creator[toolkit]\n\n\ndef import_agent(agent: str) -> Agent:\n    \"\"\"Import agent from agent name\"\"\"\n    # check for custom agent\n    from bisheng_langchain import agents\n\n    if agent in agents.__all__:\n        return import_class(f'bisheng_langchain.agents.{agent}')\n    return import_class(f'langchain.agents.{agent}')\n\n\ndef import_llm(llm: str) -> BaseLanguageModel:\n    \"\"\"Import llm from llm name\"\"\"\n    return import_class(f'langchain.llms.{llm}')\n\n\ndef import_chat_openai(llm: str) -> BaseLanguageModel:\n    \"\"\"Import llm from llm name\"\"\"\n    return import_class(f'langchain_openai.{llm}')\n\n\ndef import_tool(tool: str) -> BaseTool:\n    \"\"\"Import tool from tool name\"\"\"\n    return import_class(f'langchain.tools.{tool}')\n\n\ndef import_chain(chain: str) -> Type[Chain]:\n    \"\"\"Import chain from chain name\"\"\"\n    from bisheng_langchain import chains\n\n    if chain in chains.__all__:\n        return import_class(f'bisheng_langchain.chains.{chain}')\n    return import_class(f'langchain.chains.{chain}')\n\n\ndef import_embedding(embedding: str) -> Any:\n    \"\"\"Import embedding from embedding name\"\"\"\n    from bisheng_langchain import embeddings\n\n    if embedding in embeddings.__all__:\n        return import_class(f'bisheng_langchain.embeddings.{embedding}')\n    return import_class(f'langchain.embeddings.{embedding}')\n\n\ndef import_vectorstore(vectorstore: str) -> Any:\n    \"\"\"Import vectorstore from vectorstore name\"\"\"\n    from bisheng_langchain import vectorstores\n\n    if vectorstore in vectorstores.__all__:\n        return import_class(f'bisheng_langchain.vectorstores.{vectorstore}')\n    return import_class(f'langchain.vectorstores.{vectorstore}')\n\n\ndef import_documentloader(documentloader: str) -> Any:\n    \"\"\"Import documentloader from documentloader name\"\"\"\n    from bisheng_langchain import document_loaders\n\n    if documentloader in document_loaders.__all__:\n        return import_class(f'bisheng_langchain.document_loaders.{documentloader}')\n    return import_class(f'langchain.document_loaders.{documentloader}')\n\n\ndef import_textsplitter(textsplitter: str) -> Any:\n    \"\"\"Import textsplitter from textsplitter name\"\"\"\n    from bisheng_langchain import text_splitter\n\n    if textsplitter in dir(text_splitter):\n        return import_class(f'bisheng_langchain.text_splitter.{textsplitter}')\n    return import_class(f'langchain.text_splitter.{textsplitter}')\n\n\ndef import_utility(utility: str) -> Any:\n    \"\"\"Import utility from utility name\"\"\"\n    if utility == 'SQLDatabase':\n        return import_class(f'langchain.sql_database.{utility}')\n    return import_class(f'langchain.utilities.{utility}')\n"
  },
  {
    "path": "src/backend/bisheng_langchain/input_output/__init__.py",
    "content": "from .input import InputFileNode, InputNode, VariableNode\nfrom .output import Report\n\n__all__ = ['InputNode', 'InputFileNode', 'Report', 'VariableNode']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/input_output/input.py",
    "content": "\nfrom typing import List, Optional\n\nfrom pydantic import ConfigDict, BaseModel\n\n\nclass InputNode(BaseModel):\n    \"\"\"Input组件，用来控制输入\"\"\"\n    input: Optional[List[str]] = None\n\n    def text(self):\n        return self.input\n\n\nclass VariableNode(BaseModel):\n    \"\"\"用来设置变量\"\"\"\n    # key\n    variables: Optional[List[str]] = None\n    # vaulues\n    variable_value: Optional[List[str]] = []\n    model_config = ConfigDict(extra=\"forbid\")\n\n    def text(self):\n        if self.variable_value:\n            text = {}\n            for index, value in enumerate(self.variable_value):\n                text[self.variables[index]] = value\n\n            return text\n        else:\n            return {}\n\n\nclass InputFileNode(BaseModel):\n    file_path: Optional[str] = None\n    file_name: Optional[str] = None\n    file_type: Optional[str] = None  # tips for file\n    \"\"\"Output组件，用来控制输出\"\"\"\n\n    def text(self):\n        # judge if file_path is oss address\n        if not self.file_path:\n            return ''\n        return [self.file_path, self.file_name]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/input_output/output.py",
    "content": "import json\nfrom typing import Any, Dict, List, Optional\nfrom venv import logger\n\nfrom bisheng_langchain.chains import LoaderOutputChain\nfrom langchain.callbacks.manager import AsyncCallbackManagerForChainRun, CallbackManagerForChainRun\nfrom langchain.chains.base import Chain\nfrom pydantic import ConfigDict, BaseModel\n\n_TEXT_COLOR_MAPPING = {\n    'blue': '36;1',\n    'yellow': '33;1',\n    'pink': '38;5;200',\n    'green': '32;1',\n    'red': '31;1',\n}\n\n\ndef get_color_mapping(\n    items: List[str], excluded_colors: Optional[List] = None\n) -> Dict[str, str]:\n    \"\"\"Get mapping for items to a support color.\"\"\"\n    colors = list(_TEXT_COLOR_MAPPING.keys())\n    if excluded_colors is not None:\n        colors = [c for c in colors if c not in excluded_colors]\n    color_mapping = {item: colors[i % len(colors)] for i, item in enumerate(items)}\n    return color_mapping\n\n\nclass Output(BaseModel):\n    \"\"\"Output组件，用来控制输出\"\"\"\n\n    @classmethod\n    def initialize(cls, file_path: str = None):\n        return file_path if file_path else ''\n\n\nclass Report(Chain):\n    # ```\n    # chain Dict:\n    #    object: langchain_object\n    #    node_id: object_key prefix\n    #    input: triger query\n    # variables Dict:\n    #    variable_name: name\n    #    variable_value: value\n    # `\n    chains: Optional[List[Dict]]\n    variables: Optional[List[Dict]]\n    report_name: str\n    stop_flag: bool = False\n\n    input_key: str = 'report_name'  #: :meta private:\n    output_key: str = 'text'  #: :meta private:\n    model_config = ConfigDict(extra=\"forbid\", arbitrary_types_allowed=True)\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Expect input key.\n        :meta private:\n        \"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Return output key.\n        :meta private:\n        \"\"\"\n        return [self.output_key]\n\n    def validate_chains(cls, values: Dict) -> Dict:\n        \"\"\"Validate chains.\"\"\"\n        if values.get('chains'):\n            for chain in values['chains']:\n                chain_output_keys = chain['object'].output_keys\n                if len(chain_output_keys) != 1:\n                    raise ValueError(\n                        'Chain used in Report should all have one output, got '\n                        f\"{chain['object']} with {len(chain_output_keys)} outputs.\"\n                    )\n            return values\n\n    def func_call(self,\n                  inputs: Dict[str, Any],\n                  outputs: Dict[str, Any],\n                  intermedia_stop: list,\n                  chain: Chain,\n                  node_id: str,\n                  run_manager: Optional[CallbackManagerForChainRun] = None,):\n        question = list(inputs.values())[0]\n        _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager()\n\n        if isinstance(chain, LoaderOutputChain):\n            question = 'Get' + ','.join(question)\n        _run_manager.on_text(text='', log='', type='start', category='question')\n        _run_manager.on_text(text='', log=question, type='end', category='question')\n        _run_manager.on_text(text='', log='', type='start', category='answer')\n        message_reply = {'log': question, 'category': 'question'}\n        intermedia_stop.append(message_reply)\n\n        chain_outputs = chain(inputs, callbacks=_run_manager.get_child())\n        result = (chain_outputs.get(chain.output_keys[0])\n                  if isinstance(chain_outputs, dict) else chain_outputs)\n        if isinstance(chain, LoaderOutputChain):\n            for schema in inputs.values():\n                result = json.loads(result)\n                for key in schema:\n                    if result.get(key):\n                        result_str = ('；'.join([str(x) for x in result.get(key)])\n                                      if isinstance(result.get(key), list)\n                                      else result.get(key))\n                        outputs.update({node_id+'_'+key: result_str})\n            result = json.dumps(result, ensure_ascii=False)\n        else:\n            outputs.update({node_id: result})\n        message_reply = {'log': result, 'category': 'answer'}\n        intermedia_stop.append(message_reply)\n        _run_manager.on_text(text='', log=result, type='end', category='answer')\n\n    async def func_acall(self,\n                         inputs: Dict[str, Any],\n                         outputs: Dict[str, Any],\n                         intermedia_stop: list,\n                         chain: Chain,\n                         node_id: str,\n                         run_manager: Optional[AsyncCallbackManagerForChainRun] = None,):\n        question = list(inputs.values())[0]\n        _run_manager = run_manager or AsyncCallbackManagerForChainRun.get_noop_manager()\n\n        if isinstance(chain, LoaderOutputChain):\n            question = 'Get' + ','.join(question)\n        await _run_manager.on_text(text='', log='', type='start', category='question')\n        await _run_manager.on_text(text='', log=question, type='end', category='question')\n        await _run_manager.on_text(text='', log='', type='start', category='answer')\n        message_reply = {'log': question, 'category': 'question'}\n        intermedia_stop.append(message_reply)\n\n        # process\n        try:\n            chain_outputs = await chain.arun(inputs, callbacks=_run_manager.get_child())\n        except Exception as e:\n            logger.exception(e)\n            await _run_manager.on_text(text='', log=str(e), type='stream', category='processing')\n            try:\n                chain_outputs = chain(inputs)\n            except Exception as e2:\n                logger.exception(e2)\n                await _run_manager.on_text(text='', log=str(e2), type='stream', category='processing')\n                chain_outputs = ''\n\n        result = (chain_outputs.get(chain.output_keys[0])\n                  if isinstance(chain_outputs, dict) else chain_outputs)\n        if isinstance(chain, LoaderOutputChain):\n            for schema in inputs.values():\n                result = json.loads(result)\n                for key in schema:\n                    if result.get(key):\n                        result_str = ('；'.join([str(x) for x in result.get(key)])\n                                      if isinstance(result.get(key), list)\n                                      else result.get(key))\n                        outputs.update({node_id+'_'+key: result_str})\n            result = json.dumps(result, ensure_ascii=False)\n        else:\n            outputs.update({node_id: result})\n        message_reply = {'log': result, 'category': 'answer'}\n        intermedia_stop.append(message_reply)\n        await _run_manager.on_text(text='', log=result, type='end', category='answer')\n\n    def _call(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n        verbose: Optional[bool] = None,\n    ) -> Dict[str, str]:\n        intermedia_steps = []\n        outputs = {}\n        self.stop_flag = False\n        # variables\n        if self.variables and self.variables[0]:\n            for variable in self.variables:\n                variable_kv = variable['input']\n                for k, v in variable_kv.items():\n                    outputs.update({variable['node_id']+'_'+k: v})\n\n        if self.chains:\n            for i, chain in enumerate(self.chains):\n                if 'node_id' not in chain:\n                    logger.info(f\"report_skip_nonsence_chain chain={chain['object']}\")\n                    continue\n                if not isinstance(chain['object'], Chain):\n                    raise TypeError(\n                        f\"{chain['object']} not be runnable Chain object\"\n                    )\n                if isinstance(chain['object'], LoaderOutputChain):\n                    # loaderchain questions use new parse\n                    self.func_call(chain['input'], outputs, intermedia_steps,\n                                   chain['object'], chain['node_id'], run_manager)\n                    continue\n\n                preset_question = chain['input']\n                for k, v in preset_question.items():\n                    # log print\n                    if isinstance(v, str):\n                        self.func_call(preset_question, outputs, intermedia_steps,\n                                       chain['object'], chain['node_id']+'_'+v, run_manager)\n                    else:\n                        for question in v:\n                            question_dict = {k: question}\n                            self.func_call(question_dict, outputs, intermedia_steps,\n                                           chain['object'], chain['node_id']+'_'+question,\n                                           run_manager)\n\n        return {self.output_key: outputs, self.input_key: self.report_name,\n                'intermediate_steps': intermedia_steps}\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n        verbose: Optional[bool] = None,\n    ) -> Dict[str, Any]:\n        intermedia_steps = []\n        outputs = {}\n        await run_manager.on_text(text='', log='', type='end', category='processing')  # end father start\n        self.stop_flag = False\n        # variables\n        if self.variables and self.variables[0]:\n            for variable in self.variables:\n                variable_kv = variable['input']\n                for k, v in variable_kv.items():\n                    outputs.update({variable['node_id']+'_'+k: v})\n\n        # functions\n        if self.chains:\n            for i, chain in enumerate(self.chains):\n                if 'node_id' not in chain:\n                    logger.info(f\"report_skip_nonsence_chain chain={chain['object']}\")\n                    continue\n                if self.stop_flag:\n                    break\n                if not isinstance(chain['object'], Chain):\n                    raise TypeError(\n                        f\"{chain['object']} not be runnable Chain object\"\n                    )\n                if isinstance(chain['object'], LoaderOutputChain):\n                    # loaderchain questions use new parse\n                    await self.func_acall(chain['input'], outputs, intermedia_steps,\n                                          chain['object'], chain['node_id'], run_manager)\n                    continue\n                # normal chain\n                preset_question = chain['input']\n                for k, v in preset_question.items():\n                    if isinstance(v, str):\n                        await self.func_acall(preset_question, outputs, intermedia_steps,\n                                              chain['object'], chain['node_id']+'_'+v, run_manager)\n                    else:\n                        for question in v:\n                            question_dict = {k: question}\n                            await self.func_acall(question_dict, outputs, intermedia_steps,\n                                                  chain['object'], chain['node_id']+'_'+question,\n                                                  run_manager)\n\n        # keep whole process paired\n        await run_manager.on_text(text='', log='', type='start', category='processing')\n        return {self.output_key: outputs, self.input_key: self.report_name,\n                'intermediate_steps': intermedia_steps}\n\n    def stop(self):\n        self.stop_flag = True\n\n    def stop_status(self):\n        return self.stop_flag\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/agent.py",
    "content": "import json\nimport time\nfrom datetime import datetime\nfrom typing import Optional, AsyncIterator\n\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.outputs import ChatGenerationChunk\nfrom langchain_core.tools import BaseTool\nfrom langchain_core.utils.function_calling import convert_to_openai_tool\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.linsight.const import TaskMode, ExecConfig\nfrom bisheng_langchain.linsight.event import BaseEvent\nfrom bisheng_langchain.linsight.manage import TaskManage\nfrom bisheng_langchain.linsight.prompt import SopPrompt, FeedBackSopPrompt, GenerateTaskPrompt\nfrom bisheng_langchain.linsight.utils import record_llm_prompt, extract_json_from_markdown\n\n\nclass LinsightAgent(BaseModel):\n    \"\"\"\n    Agent for Linsight, a service that provides various functionalities.\n    \"\"\"\n    file_dir: Optional[str] = Field(default=\"\", description='Directory for storing files')\n    query: str = Field(..., description='user question')\n    llm: BaseLanguageModel = Field(..., description='Language model to use for processing queries')\n\n    tools: Optional[list[BaseTool]] = Field(default_factory=list,\n                                            description='List of langchain tools to be used by the agent')\n    task_manager: Optional[TaskManage] = Field(default=None,\n                                               description='Task manager for handling tasks and workflows')\n    task_mode: str = Field(default=TaskMode.FUNCTION.value,\n                           description=\"Mode of the task execute\")\n    exec_config: ExecConfig = Field(default_factory=ExecConfig, description='执行过程中所需的配置')\n\n    async def parse_file_list_str(self, file_list: list[str]) -> str:\n        file_list_str = \"\"\n        if file_list:\n            file_list_str = \"\\n\".join(file_list[:self.exec_config.max_file_num])\n            if len(file_list) > self.exec_config.max_file_num:\n                file_list_str += f\"\\n用户上传了{len(file_list)}份文件，此处只展示{self.exec_config.max_file_num}份。都储存在./目录下。\"\n            file_list_str = f\"<用户上传文件列表>\\n{file_list_str}\\n</用户上传文件列表>\"\n        return file_list_str\n\n    @staticmethod\n    async def parse_knowledge_list_str(knowledge_list: list[str]) -> str:\n        knowledge_list_str = \"\"\n        if knowledge_list:\n            knowledge_list_str = \"\\n\".join(knowledge_list)\n            knowledge_list_str = f\"<知识库列表>\\n{knowledge_list_str}\\n</知识库列表>\"\n        return knowledge_list_str\n\n    async def _parse_sop_content(self, sop_prompt: str) -> AsyncIterator[ChatGenerationChunk]:\n        # Add logic to process the SOP string\n        start_time = time.time()\n        one = None\n        sop_flag = False\n        sop_content = \"\"\n        answer = \"\"\n        split_tags = [\"<Thought_END>\", \"</Thought_END>\"]\n        async for one in self.llm.astream(sop_prompt):\n            answer += f\"{one.content}\"\n            if sop_flag:\n                yield one\n                sop_content += one.content\n                continue\n            for split_tag in split_tags:\n                if answer.find(split_tag) != -1:\n                    sop_flag = True\n                    sop_content = answer.split(split_tag)[-1].strip()\n                    if sop_content:\n                        one.content = sop_content\n                        yield one\n                    break\n        if not sop_content:\n            one.content = answer\n            yield one\n\n        if self.exec_config.debug and one:\n            record_llm_prompt(self.llm, sop_prompt, answer, one,\n                              time.time() - start_time, self.exec_config.debug_id)\n\n    async def generate_sop(self, sop: str, file_list: list[str] = None, knowledge_list: list[str] = None) \\\n            -> AsyncIterator[ChatGenerationChunk]:\n        \"\"\"\n        Generate a Standard Operating Procedure (SOP) based on the provided SOP string.\n        :param sop: The SOP string to be processed.\n        :param file_list: Optional list of files uploaded by the user.\n        :param knowledge_list: Optional list of knowledge bases to be considered.\n\n        :return: Processed SOP string.\n        \"\"\"\n        tools_str = json.dumps([convert_to_openai_tool(one) for one in self.tools], ensure_ascii=False, indent=2)\n\n        file_list_str = await self.parse_file_list_str(file_list)\n        knowledge_list_str = await self.parse_knowledge_list_str(knowledge_list)\n\n        sop_prompt = SopPrompt.format(query=self.query, sop=sop, tools_str=tools_str, file_list_str=file_list_str,\n                                      knowledge_list_str=knowledge_list_str)\n        # Add logic to process the SOP string\n        async for one in self._parse_sop_content(sop_prompt):\n            yield one\n\n    async def feedback_sop(self, sop: str, feedback: str, history_summary: list[str] = None,\n                           file_list: list[str] = None, knowledge_list: list[str] = None) \\\n            -> AsyncIterator[ChatGenerationChunk]:\n        \"\"\"\n        Provide feedback on the generated SOP.\n        :param sop: The SOP string to be reviewed.\n        :param feedback: Feedback string for the SOP.\n        :param history_summary: Optional summary of previous interactions.\n        :param file_list: Optional list of files uploaded by the user.\n        :param knowledge_list: Optional list of knowledge bases to be considered.\n\n        :return: Processed SOP with feedback applied.\n        \"\"\"\n        # Add logic to process the feedback on the SOP\n        if history_summary:\n            history_summary = \"\\n\".join(history_summary)\n        else:\n            history_summary = \"\"\n        tools_str = json.dumps([convert_to_openai_tool(one) for one in self.tools], ensure_ascii=False, indent=2)\n\n        file_list_str = await self.parse_file_list_str(file_list)\n        knowledge_list_str = await self.parse_knowledge_list_str(knowledge_list)\n\n        sop_prompt = FeedBackSopPrompt.format(query=self.query, sop=sop, feedback=feedback, tools_str=tools_str,\n                                              history_summary=history_summary, file_list_str=file_list_str,\n                                              knowledge_list_str=knowledge_list_str)\n        async for one in self._parse_sop_content(sop_prompt):\n            yield one\n\n    async def generate_task(self, sop: str) -> list[dict]:\n        current_time = datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n        tools_str = json.dumps([convert_to_openai_tool(one) for one in self.tools], ensure_ascii=False, indent=2)\n\n        prompt = GenerateTaskPrompt.format(query=self.query, sop=sop, file_dir=self.file_dir,\n                                           current_time=current_time, tools_str=tools_str)\n        start_time = time.time()\n        res = await self.llm.ainvoke(prompt)\n        if self.exec_config.debug and res:\n            record_llm_prompt(self.llm, prompt, res.content, res,\n                              time.time() - start_time, self.exec_config.debug_id)\n\n        # 解析生成的任务json数据\n        task = extract_json_from_markdown(res.content)\n        tasks = task.get('steps', [])\n\n        return TaskManage.completion_task_tree_info(tasks)\n\n    async def ainvoke(self, tasks: list[dict], sop: str, file_list: list[str] = None) -> AsyncIterator[BaseEvent]:\n        \"\"\"\n        Run the agent's main functionality.\n        :param tasks: List of tasks to be processed by the agent.\n        :param sop: Final SOP to be used in the agent's processing.\n        :param file_list: Optional list of files uploaded by the user.\n        \"\"\"\n        file_list_str = await self.parse_file_list_str(file_list)\n        # Add main functionality logic here\n        if not self.task_manager:\n            self.task_manager = TaskManage(tasks=tasks, tools=self.tools, task_mode=self.task_mode)\n            self.task_manager.rebuild_tasks(query=self.query, llm=self.llm, file_dir=self.file_dir, sop=sop,\n                                            exec_config=self.exec_config, file_list=file_list,\n                                            file_list_str=file_list_str)\n\n        async for one in self.task_manager.ainvoke_task():\n            yield one\n\n    async def continue_task(self, task_id: str, user_input: str) -> None:\n        \"\"\"\n        Continue processing a specific task by its ID.\n        :param task_id: The ID of the task to continue.\n        :param user_input: User input to be processed in the task.\n\n        \"\"\"\n        if not self.task_manager:\n            raise ValueError(\"Task manager is not initialized.\")\n        if task_id not in self.task_manager.task_map:\n            raise ValueError(f\"Task with ID {task_id} not found.\")\n\n        result = self.task_manager.continue_task(task_id, user_input)\n        await result\n\n    async def get_all_task_info(self) -> list[dict]:\n        \"\"\"\n        Get all tasks managed by the agent.\n        :return: List of all tasks info.\n        \"\"\"\n        if not self.task_manager:\n            return []\n        return self.task_manager.get_all_task_info()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/agent_test.py",
    "content": "import asyncio\nimport os\n\nfrom langchain_community.chat_models import ChatTongyi\nfrom pydantic import SecretStr\n\nfrom bisheng.linsight.domain.services.workbench_impl import LinsightWorkbenchImpl\nfrom bisheng.api.services.workstation import WorkStationService\nfrom bisheng.common.constants.enums.telemetry import ApplicationTypeEnum\nfrom bisheng.tool.domain.services.executor import ToolExecutor\nfrom bisheng.tool.domain.services.tool import ToolServices\nfrom bisheng_langchain.linsight.agent import LinsightAgent\nfrom bisheng_langchain.linsight.const import TaskMode, ExecConfig\nfrom bisheng_langchain.linsight.event import NeedUserInput, TaskStart, TaskEnd, ExecStep\n\n\nasync def get_linsight_agent():\n    azure_api_key = os.environ.get('azure_api_key')\n    qwen_api_key = os.environ.get('qwen_api_key')\n    root_path = \"/Users/zhangguoqing/works/bisheng/src/backend/bisheng_langchain/linsight/data\"\n\n    chat = ChatTongyi(api_key=SecretStr(qwen_api_key), model=\"qwen-max-latest\", streaming=True,\n                      model_kwargs={'incremental_output': True})\n\n    # chat = AzureChatOpenAI(azure_endpoint=\"https://ai-aoai05215744ai338141519445.cognitiveservices.azure.com/\",\n    #                        api_key=azure_api_key,\n    #                        api_version=\"2024-12-01-preview\",\n    #                        azure_deployment=\"gpt-4.1\",\n    #                        max_retries=3,\n    #                        temperature=0,\n    #                        max_tokens=1000)\n\n    # 获取工作台配置的工具\n    ws_config = await WorkStationService.aget_config()\n    config_tool_ids = LinsightWorkbenchImpl._extract_tool_ids(ws_config.linsightConfig.tools or [])\n    tools = await ToolExecutor.init_by_tool_ids(config_tool_ids, app_id='linsight_test', app_name='linsight_test',\n                                                app_type=ApplicationTypeEnum.LINSIGHT,\n                                                user_id=0, llm=chat)\n    # 获取灵思预置的工具，本地文件处理和知识库检索\n    linsight_tools = await ToolServices.init_linsight_tools(root_path=root_path)\n    used_tools = linsight_tools + tools\n\n    # 获取本地文件相关工具\n    query = \"分析该目录下的简历文件（仅限txt格式），挑选出符合要求的简历。要求包括：python代码能力强，有大模型相关项目经验，有热情、主动性高\"\n\n    agent = LinsightAgent(llm=chat, query=query, tools=used_tools, file_dir=root_path,\n                          task_mode=TaskMode.FUNCTION.value,\n                          exec_config=ExecConfig(debug=True, debug_id=\"test\"))\n    return agent\n\n\nasync def async_main():\n    agent = await get_linsight_agent()\n\n    sop_template = \"\"\n    # # 检索sop\n    # sop_documents, error_msg = await SOPManageService.search_sop(\"基于目录简历筛选大模型岗位候选人\", 3)\n    # if not sop_documents:\n    #     print(\"没有找到相关的SOP模板\")\n    #     return\n    # print(f\"找到 {len(sop_documents)} 个相关SOP模板\")\n    # print(f\"sop_documents: {sop_documents}\")\n    # sop_template = \"\\n\\n\".join([\n    #     f\"例子:\\n\\n{sop.page_content}\"\n    #     for sop in sop_documents if sop.page_content\n    # ])\n\n    sop = \"\"\n    async for one in agent.generate_sop(sop_template):\n        sop += one.content\n    print(f\"first sop: {sop}\")\n\n    # 反馈sop\n    feedback = \"需要补充更多关于秦始皇兵马俑的历史背景信息\"\n    feedback_sop = \"\"\n    async for one in agent.feedback_sop(sop, feedback, []):\n        feedback_sop += one.content\n    print(f\"feedback sop: {feedback_sop}\")\n    sop = feedback_sop\n\n    task_info = await agent.generate_task(sop)\n    print(f\"task_info: {task_info}\")\n\n    async for event in agent.ainvoke(task_info, sop):\n        if isinstance(event, NeedUserInput):\n            print(\"============ need user input ============\")\n            user_input = input(f\"需要用户输入，原因：{event.call_reason} (任务ID: {event.task_id}): \")\n            await agent.continue_task(event.task_id, user_input)\n        elif isinstance(event, TaskStart):\n            print(f\"============ task start ============ {event}\")\n        elif isinstance(event, TaskEnd):\n            print(f\"============ task end ============ {event}\")\n        elif isinstance(event, ExecStep):\n            print(f\"============ exec step ============ {event}\")\n\n    all_task_info = await agent.get_all_task_info()\n    print(all_task_info)\n\n\nasync def only_exec_task():\n    agent = await get_linsight_agent()\n\n    sop = \"\"\"标准操作流程（SOP）：  \n基于目录简历筛选大模型岗位候选人\n\n---\n\n**1. 问题概述**  \n本流程用于在指定目录下，从所有txt格式的简历文件中，自动筛选出满足如下岗位能力要求的候选人：  \n- Python代码能力强  \n- 有大模型相关项目经验  \n- 具备热情、主动性高等软素质  \n适用于批量简历文件筛查，输出筛选结果报告。\n\n---\n\n**2. 所需的工具和资源**  \n- @list_files：用于列出目录下所有txt文件  \n- @read_text_file：用于读取简历内容  \n- @search_text_in_file：辅助定位关键词  \n- @write_text_file：生成和写入筛选结果  \n**最佳实践：**优先批量处理文件，高效检索软硬技能，多维度关键词搜索。\n\n---\n\n**3. 步骤说明**\n\n1. 使用@list_files获取指定目录下所有*.txt简历文件路径。\n2. 对于每个txt简历文件：  \n   a. 利用@read_text_file整段读取简历内容。  \n   b. 分别搜索硬性条件关键词，例如“Python”，“编程”，“大模型”，“LLM”，“NLP”等，判断是否具备技术要求（可通过@search_text_in_file辅助确认）。  \n   c. 搜索软性素质相关关键词如“热情”、“主动”、“自我驱动”、“积极”等。  \n3. 对所有满足上述三项筛选条件的简历，收集关键信息（如文件名、命中条件摘要）。\n4. 结果输出：将筛选通过简历的关键信息，以Markdown格式写入到筛选报告（如筛选结果.md），便于后续查阅。\n5. 最终输出“筛选结果.md”文件即为筛查结果报告。\n\n---\n\n**示例输出结构（Markdown）**  \n```markdown\n# 简历筛选结果\n\n## 满足条件的候选人列表\n\n### 1. 文件名：resume_zhangsan.txt\n- 技能：Python、NLP、大模型项目\n- 软素质：热情、主动\n\n### 2. 文件名：resume_lisi.txt\n- 技能：Python、LLM开发\n- 软素质：自我驱动、积极\n...\n```\n\n---\n\n**注意事项**  \n- 关键词匹配可适当使用同义词扩展，以防遗漏。  \n- 文件处理应确保不会丢失原始简历。  \n- 报告内容简明，利于人工后续甄别。\n\n（本SOP适用于批量文本简历基于技术与素质条件的快速筛查任务）\"\"\"\n    task_info = [\n        {'step_id': 'step_1', 'description': '获取指定目录下所有txt格式的简历文件路径。', 'profile': '文件检索机器人',\n         'target': '列出/Users/zhangguoqing/works/bisheng/src/backend/bisheng_langchain/linsight/data下的所有txt格式简历文件路径',\n         'sop': '使用@list_files工具，检索所给目录下所有txt文件，返回完整路径列表。',\n         'prompt': '请使用@list_files工具列出/Users/zhangguoqing/works/bisheng/src/backend/bisheng_langchain/linsight/data目录下所有txt后缀简历文件的路径。',\n         'input': ['query'], 'node_loop': False, 'id': 'c984c953e8fd4c4bbee14d6090cf8718',\n         'next_id': ['85e43a1507b94ffabf7195f5559a9209']},\n        {'step_id': 'step_2', 'description': '批量读取每个简历文件内容并筛查是否符合岗位要求，收集通过的简历关键信息。',\n         'profile': '简历筛查机器人',\n         'target': '判断每份简历是否同时符合技术与软素质要求，并汇总关键信息（文件名、命中条件等）',\n         'sop': \"对step_1返回的所有txt文件，依次读取原文，划分为：\\n1. 检查是否包含Python相关技能与代码经验（如‘Python’、‘编程’、‘开发’等关键词）。\\n2. 检查是否有大模型、LLM、NLP、Transformer、深度学习等相关项目或经验描述。\\n3. 检查内容中是否有'热情'、'主动'、'自我驱动'、'积极'等软素质词语。\\n4. 对三个条件全部满足的简历，提取文件名及命中关键词说明，组织成结构化信息。\\n（检索与写作合并，避免大量细节传递）\",\n         'prompt': '你需要读取step_1中每个txt简历，判断：\\n- 是否包含Python代码能力、NLP、大模型、LLM等关键词，并描述相关项目经验；\\n- 是否具备热情、主动、自我驱动等软素质（可扩展同义表达）；\\n对全部符合的简历，记录文件名、技能关键词、软素质关键词。\\n返回一个用于报告的结构化信息列表。',\n         'input': ['step_1'], 'node_loop': True, 'id': '85e43a1507b94ffabf7195f5559a9209',\n         'next_id': ['380b4b7693c14568a45500c4a77f9413']},\n        {'step_id': 'step_3', 'description': '将筛查通过的简历结构化信息按Markdown格式输出为筛选结果报告。',\n         'profile': '报告生成机器人', 'target': '生成并写入筛查通过简历的报告文件（筛选结果.md）',\n         'sop': '根据step_2输出的信息，整理并生成符合指定模板的Markdown格式报告：\\n1. 标题：简历筛选结果。\\n2. 下设‘满足条件的候选人列表’，每个候选人包含文件名、技能命中、软素质命中。\\n3. 调用@write_text_file将该内容写入‘筛选结果.md’。',\n         'prompt': '将step_2中收集到的通过简历关键信息，按如下Markdown格式生成报告内容，并写入筛选结果.md：\\n# 简历筛选结果\\n## 满足条件的候选人列表\\n### 1. 文件名：xxx\\n- 技能：xxx\\n- 软素质：xxx\\n...',\n         'input': ['step_2'], 'node_loop': False, 'id': '380b4b7693c14568a45500c4a77f9413'}]\n\n    async for event in agent.ainvoke(task_info, sop):\n        if isinstance(event, NeedUserInput):\n            print(\"============ need user input ============\")\n            user_input = input(f\"需要用户输入，原因：{event.call_reason} (任务ID: {event.task_id}): \")\n            await agent.continue_task(event.task_id, user_input)\n        elif isinstance(event, TaskStart):\n            print(f\"============ task start ============ {event}\")\n        elif isinstance(event, TaskEnd):\n            print(f\"============ task end ============ {event}\")\n        elif isinstance(event, ExecStep):\n            print(f\"============ exec step ============ {event}\")\n    all_task_info = await agent.get_all_task_info()\n    print(all_task_info)\n\n\nif __name__ == '__main__':\n    asyncio.run(async_main())\n    # asyncio.run(only_exec_task())\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/const.py",
    "content": "from enum import Enum\nfrom typing import Optional\n\nfrom pydantic import BaseModel, Field\n\n\nclass ExecConfig(BaseModel):\n    debug: bool = Field(default=False, description=\"是否是调试模式。开启后会记录llm的输入和输出\")\n    debug_id: Optional[str] = Field(default=None, description=\"调试记录唯一ID, 用来写唯一的文件\")\n    tool_buffer: int = Field(default=50000, description='工具执行历史记录的最大token，超过后需要总结下历史记录')\n    max_steps: int = Field(default=200, description='单个任务最大执行步骤数，防止死循环')\n    retry_num: int = Field(default=3, description='灵思任务执行过程中模型调用重试次数')\n    retry_sleep: int = Field(default=5, description='灵思任务执行过程中模型调用重试间隔时间（秒）')\n    max_file_num: int = Field(default=5, description='生成SOP时，prompt里放的用户上传文件信息的数量')\n    retry_temperature: float = Field(default=1, description='重试时的模型温度')\n    file_content_length: int = Field(default=5000, description='拆分子任务时读取文件内容的字符数，超过后会截断')\n    max_file_content_num: int = Field(default=3, description='拆分子任务时读取的中间过程文件数量，按时间倒序')\n\n\nCallUserInputToolName = \"call_user_input\"\n\n\nclass TaskStatus(Enum):\n    WAITING = 'waiting'  # 待执行\n    PROCESSING = 'processing'  # 执行中\n    INPUT = 'input'  # 等待用户输入\n    INPUT_OVER = 'input_over'  # 用户输入已完成\n    SUCCESS = 'success'  # 任务成功\n    FAILED = 'failed'  # 任务失败\n\n\n# 任务执行模式\nclass TaskMode(str, Enum):\n    REACT = 'react'  # React 模式\n    FUNCTION = 'func_call'  # func call 模式\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/event.py",
    "content": "import time\nfrom typing import Optional, Any\n\nfrom pydantic import BaseModel, Field\n\n\nclass BaseEvent(BaseModel):\n    task_id: str = Field(..., description='触发事件的任务ID')\n    # 时间戳，单位秒\n    timestamp: int = Field(default_factory=lambda: int(time.time()), description='秒级时间戳')\n\n\n# 任务步骤执行事件\nclass ExecStep(BaseEvent):\n    call_id: str = Field(..., description='执行步骤的唯一标识符')\n    call_reason: str = Field(..., description='执行步骤的原因')\n    name: str = Field(..., description='执行步骤的名称')\n    # params: str = Field(..., description='执行步骤的参数')\n    params: Optional[Any] = Field(default=None, description='执行步骤的参数')\n    output: Optional[str] = Field(default=None, description='工具执行的结果')\n    step_type: Optional[str] = Field(default=\"tool_call\",\n                                     description='步骤类型。tool_call: 工具调用；react_step: 固定步骤或回答;')\n    status: str = Field(..., description='执行状态，start: 开始执行；end：执行结束')\n    # 额外信息\n    extra_info: Optional[dict] = Field(default={}, description='额外信息，包含文件上传等其他信息')\n\n\n# 生成子任务的事件\nclass GenerateSubTask(BaseEvent):\n    subtask: list[dict] = Field(..., description='生成的子任务信息列表')\n\n\n# 需要用户输入的事件\nclass NeedUserInput(BaseEvent):\n    call_reason: str = Field(..., description='需要用户输入的原因')\n    params: Optional[Any] = Field(default=None, description='执行步骤的参数')\n    step_type: Optional[str] = Field(default=\"call_user_input\")\n\n\nclass TaskStart(BaseEvent):\n    name: str = Field(..., description='任务名称')\n\n\nclass TaskEnd(BaseEvent):\n    name: str = Field(..., description='任务名称')\n    status: str = Field(..., description='任务状态')\n    answer: str = Field(..., description='任务最终结果')\n    data: Any = Field(..., description='任务数据')\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/manage.py",
    "content": "import asyncio\nimport json\nimport traceback\nfrom asyncio.queues import Queue\nfrom functools import cached_property\nfrom typing import Optional, AsyncIterator\n\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.tools import BaseTool\nfrom langchain_core.utils.function_calling import convert_to_openai_tool\nfrom pydantic import Field, BaseModel, model_validator, ConfigDict\n\nfrom bisheng_langchain.linsight.const import TaskStatus, TaskMode, CallUserInputToolName, ExecConfig\nfrom bisheng_langchain.linsight.event import BaseEvent\nfrom bisheng_langchain.linsight.react_task import ReactTask\nfrom bisheng_langchain.linsight.task import Task\nfrom bisheng_langchain.linsight.utils import generate_uuid_str\n\n\nclass TaskManage(BaseModel):\n    \"\"\"\n    Task manager for handling tasks and workflows.\n    This class is responsible for managing the lifecycle of tasks,\n    including creation, execution, and monitoring.\n    \"\"\"\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    tasks: list[dict | Task] = Field(default_factory=list,\n                                     description='List of tasks managed by the task manager, not include sub task')\n    task_map: dict[str, Task] = Field(default_factory=dict, description='Map of task IDs to Task instances')\n    task_step_map: dict[str, Task] = Field(default_factory=dict, description='Map of step ID to Task instances')\n    tools: list[BaseTool] = Field(default_factory=list, description='List of tools managed by the tool manager')\n    tool_map: dict[str, BaseTool] = Field(default_factory=dict, description='Map of tool names to tool instances')\n    aqueue: Optional[Queue] = Field(default=None, description='Asynchronous queue for task processing')\n    task_mode: str = Field(default=TaskMode.FUNCTION.value,\n                           description='Mode of the task execution, can be FUNCTION or REACT')\n\n    @model_validator(mode=\"after\")\n    def validate_tasks(self) -> \"TaskManage\":\n        self.aqueue = Queue(maxsize=50)\n        self.tool_map = {tool.name: tool for tool in self.tools}\n        return self\n\n    def rebuild_tasks(self, query: str, llm: BaseLanguageModel, file_dir: str, sop: str,\n                      exec_config: ExecConfig, file_list: list[str], file_list_str: str = '') -> None:\n        res = []\n        child_map = {}  # task_id: [child_task]\n        first_task = True\n        for task in self.tasks:\n            if not isinstance(task, dict):\n                raise TypeError(f\"Task must be an instance of dict, not {type(task)}\")\n            if self.task_mode == TaskMode.FUNCTION.value:\n                task_instance = Task(**task,\n                                     query=query,\n                                     task_manager=self,\n                                     llm=llm,\n                                     file_dir=file_dir,\n                                     finally_sop=sop,\n                                     exec_config=exec_config,\n                                     file_list=file_list,\n                                     file_list_str=file_list_str)\n            else:\n                task_instance = ReactTask(**task,\n                                          query=query,\n                                          task_manager=self,\n                                          llm=llm,\n                                          file_dir=file_dir,\n                                          finally_sop=sop,\n                                          exec_config=exec_config,\n                                          file_list=file_list,\n                                          file_list_str=file_list_str)\n            task_instance.first_task = first_task\n            first_task = False\n            if task_instance.parent_id is None:\n                res.append(task_instance)\n                continue\n            if task_instance.parent_id not in child_map:\n                child_map[task_instance.parent_id] = []\n            child_map[task_instance.parent_id].append(task_instance)\n        for one in res:\n            if one.id in child_map:\n                one.children = child_map[one.id]\n\n        self.tasks = res\n        self.task_map = {}\n        self.task_step_map = {}\n        for task in self.tasks:\n            self.task_map[task.id] = task\n            self.task_step_map[task.step_id] = task\n\n    def get_all_task_info(self) -> list[dict]:\n        \"\"\"\n        Retrieve all tasks managed by the task manager.\n        :return: List of task information.\n        \"\"\"\n        res = []\n        sub_task = []\n        for one in self.tasks:\n            res.append(one.get_task_info())\n            if one.children:\n                for child in one.children:\n                    sub_task.append(child.get_task_info())\n        # 将子任务信息也添加到结果中\n        res.extend(sub_task)\n        return res\n\n    @cached_property\n    def get_all_tool_schema(self) -> list[dict]:\n        \"\"\"\n        Retrieve all tools managed by the tool manager.\n        :return: List of tools input schema.\n        \"\"\"\n        # 所有tool的schema里增加一个`call_reason`的必填字段，让模型总结下为啥需要使用这个工具\n        res = []\n        for one in self.tools:\n            schema = convert_to_openai_tool(one)\n            if \"call_reason\" not in schema[\"function\"][\"parameters\"][\"properties\"]:\n                # 所有的工具都加一个调用原因的字段\n                schema[\"function\"][\"parameters\"][\"properties\"][\"call_reason\"] = {\n                    \"type\": \"string\",\n                    \"description\": \"The reason for calling this tool, generated by the model.\"\n                }\n                if \"required\" not in schema[\"function\"][\"parameters\"]:\n                    schema[\"function\"][\"parameters\"][\"required\"] = []\n                schema[\"function\"][\"parameters\"][\"required\"].append(\"call_reason\")\n\n            res.append(schema)\n        res.append({\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": CallUserInputToolName,\n                \"description\": \"在你需要用户帮助或需要用户补充信息或确认内容的时候调用此工具，注意询问用户的时候不能使用回答。例如解决问题的规划，执行一个比较耗时的操作，并且请说明需要人类的原因。\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"call_content\": {\n                            \"type\": \"string\",\n                            \"description\": \"你需要在这里总结询问的前因后果，并生成问题询问用户。\"\n                        },\n                        \"call_title\": {\n                            \"type\": \"string\",\n                            \"description\": \"你可以在这里简要描述你需要询问用户的标题,方便用户理解。\"\n                        }\n                    },\n                },\n                \"required\": [\n                    \"call_content\",\n                    \"call_title\"\n                ]\n            }\n        })\n        return res\n\n    @cached_property\n    def get_all_tool_schema_str(self) -> str:\n        \"\"\"\n        Retrieve all tools managed by the tool manager as a JSON string.\n        :return: JSON string of tools input schema.\n        \"\"\"\n        return json.dumps(self.get_all_tool_schema, ensure_ascii=False, indent=2)\n\n    async def ainvoke_tool(self, name: str, params: dict) -> (str, bool):\n        \"\"\"\n        Add a new tool to the tool manager.\n        :param name: The name of the tool to be executed.\n        :param params: The params of the tool to be invoked.\n        :return: A tuple containing the result of the tool execution and a boolean indicating success.\n        \"\"\"\n        if name not in self.tool_map:\n            return f\"tool {name} exec error, because tool name is not found\", False\n        if not params.get(\"call_reason\"):\n            return f\"tool {name} exec error, because call_reason field is required.\", False\n        params.pop(\"call_reason\")\n        try:\n            res = await self.tool_map[name].ainvoke(input=params)\n            if not isinstance(res, str):\n                res = str(res)\n            return res, True\n        except Exception as e:\n            traceback.print_exc()\n            return f\"tool {name} exec error, something went wrong: {str(e)}\", False\n\n    @classmethod\n    def completion_task_tree_info(cls, original_task: list[dict]) -> list[dict]:\n        \"\"\"\n        目前只支持一级任务串行！！！\n        将模型生成的任务列表转换为完整的任务树信息，补全下游节点的信息\n        \"\"\"\n        task_map = {}\n        task_step_map = {}\n        root_task = []\n        no_root_task = []\n        need_input_task = {}  # step_id: {task}\n        for one in original_task:\n            one[\"id\"] = generate_uuid_str()\n            task_map[one[\"id\"]] = one\n            task_step_map[one[\"step_id\"]] = one\n\n            # 不需要其他任务输入，或者只需要用户问题的 属于根节点\n            if not one.get(\"input\") or (len(one.get(\"input\")) == 1 and one[\"input\"][0] == \"query\"):\n                root_task.append(one)\n            else:\n                # 需要其他任务输入的 属于非根节点。记录下需要哪些任务的输入\n                for input_key in one[\"input\"]:\n                    if input_key == \"query\":\n                        continue\n                    if input_key not in need_input_task:\n                        need_input_task[input_key] = set()\n                    need_input_task[input_key].add(one[\"id\"])\n        # 补充下游节点的信息\n        for one in original_task:\n            if need_input_task.get(one[\"step_id\"]):\n                one[\"next_id\"] = list(need_input_task[one[\"step_id\"]])\n            one['display_target'] = one.get('target')\n            one['sop'] = one.get('workflow', '')\n        return original_task\n\n    def add_tasks(self, tasks: list[Task | ReactTask]) -> None:\n        \"\"\"\n        when generate subtasks call this method.\n        Add a list of tasks to the task manager.\n        :param tasks: List of Task instances to be added.\n\n        \"\"\"\n        for task in tasks:\n            self.task_map[task.id] = task\n\n    async def get_step_answer(self, step_id: str) -> str:\n        \"\"\" 获取某个步骤的答案 \"\"\"\n        if step_id not in self.task_step_map:\n            return f\"not found step_id: {step_id}\"\n        return await self.task_step_map[step_id].get_answer()\n\n    def get_processed_steps(self):\n        \"\"\"Get the steps that have been processed.\"\"\"\n        success_steps = []\n        for task in self.tasks:\n            if task.status == TaskStatus.SUCCESS.value:\n                success_steps.append(task.step_id)\n        return \"你现在已经完成了\" + \",\".join(success_steps) if success_steps else ''\n\n    def get_depend_step(self, step_id: str) -> str:\n        depend_steps = []\n        if step_id not in self.task_step_map:\n            return \"\"\n        task = self.task_step_map[step_id]\n        next_ids = task.next_id\n        while next_ids:\n            new_next_ids = []\n            for next_id in next_ids:\n                if next_id not in self.task_map:\n                    continue\n                next_task = self.task_map[next_id]\n                depend_steps.append(next_task.step_id)\n                if next_task.next_id:\n                    new_next_ids.extend(next_task.next_id)\n            next_ids = new_next_ids\n        return \",\".join(list(set(depend_steps)))\n\n    def get_step_list(self):\n        res = []\n        for task in self.tasks:\n            if task.parent_id:\n                continue\n            res.append({\n                'step_id': task.step_id,\n                'target': task.target,\n                'description': task.description\n            })\n        return res\n\n    async def catch_task_exception(self, task: Task) -> None:\n        try:\n            await task.ainvoke()\n        except Exception as e:\n            task.status = TaskStatus.FAILED.value\n            task.answer.append(str(e)[:-100])\n            raise e\n\n    async def ainvoke_task(self) -> AsyncIterator[BaseEvent]:\n        for task in self.tasks:\n            async_task = asyncio.create_task(self.catch_task_exception(task))\n            while not async_task.done():\n                while not self.aqueue.empty():\n                    res = await self.aqueue.get()\n                    yield res\n                await asyncio.sleep(0.1)\n            while not self.aqueue.empty():\n                res = await self.aqueue.get()\n                yield res\n            if task_exception := async_task.exception():\n                raise task_exception\n            if task.status == TaskStatus.FAILED.value:\n                raise Exception(f\"Task {task.step_id} failed with error: {task.get_finally_answer()}\")\n\n    async def continue_task(self, task_id: str, user_input: str) -> None:\n        \"\"\"\n        Continue processing a specific task by its ID.\n        :param task_id: The ID of the task to continue.\n        :param user_input: User input to be processed in the task.\n        \"\"\"\n        if task_id not in self.task_map:\n            raise ValueError(f\"Task with ID {task_id} not found.\")\n\n        await self.task_map[task_id].handle_user_input(user_input)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/prompt.py",
    "content": "from pydantic import BaseModel\n\n# 生成sop的prompt模板, variables -> query: 用户问题；sop：参考sop; tools_str: 已有工具字符串；file_list_str: 用户上传的文件名列表\n# knowledge_list_str: 用户有权限的知识库列表\nSopPrompt = \"\"\"<背景>\n你需要根据用户需求创建一个指导手册(SOP)，指导手册指的是通过标准步骤指导大模型解决用户的需求。\n</背景>\n\n<指导手册包含内容>\n1. 问题概述 - 简要描述问题和目标，需要体现本指导手册的适用范围\n2. 所需的工具和资源 - 列出解决此类问题所需的工具、库或资源（需要是已有可获取的）,以及使用工具的最佳实践。\n3. 步骤说明 - 提供清晰的步骤指导。\n   3.1 由于每个步骤是不同的Agent来进行处理，不同的Agent之间可传递的信息不宜过多，通过写入中间文件然后读取的方式来传递大量信息。\n</指导手册包含内容>\n\n<指导手册格式要求>\n指导手册结构\n- 概述\n - 背景和适用场景\n - 目标\n- 所需工具和资源\n- 步骤说明\n - 步骤概述\n  - 本步骤目标\n  - 本步骤交付结果\n  - 依赖前序步骤\n  - 拆解为多个互不影响的子步骤执行\n - 步骤详情(标题序号需要是（1）,（2）等等)\n - 注意事项\n- 总结\n\n使用@来说明使用什么工具，文件以及知识库，必须遵循以下格式：\n工具的表示方法：@工具名@\n用户上传文件的表示方法：@文件名的文件储存信息：{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@\n知识库的表示方法：@知识库名的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@\n输出文件的表示方法：文件名\n</指导手册格式要求>\n\n{file_list_str}\n\n{knowledge_list_str}\n\n<已有工具列表>\n{tools_str}\n</已有工具列表>\n\n<参考指导手册>\n{sop}\n</参考指导手册>\n\n<用户需求>\n{query}\n</用户需求>\n\n输出应当是Markdown格式，便于阅读和理解。请确保指导手册是实用的，可以帮助用户解决类似问题。\n你需要先一步一步的思考，然后再输出指导手册。思考需要被包含在<Thought_START>和<Thought_END>\n思考过程：\"\"\"\n\n# 调整sop时的反馈prompt模板, variables -> query: 用户问题；sop：参考sop；feedback：用户反馈; history_summary: 历史执行过程\n# variables -> tools_str: 已有工具字符串; file_list_str: 用户上传的文件名列表; knowledge_list_str: 用户有权限的知识库列表\nFeedBackSopPrompt = \"\"\"基于以下信息创建一个指导手册(SOP):\n\n{file_list_str}\n\n{knowledge_list_str}\n\n<已有工具列表>\n{tools_str}\n</已有工具列表>\n\n<用户需求>\n{query}\n</用户需求>\n\n<待优化指导手册>\n{sop}\n</待优化指导手册>\n\n用户对指导手册的反馈：\n{feedback}\n\n请基于以上内容和反馈创建一个清晰、结构化，且更好满足用户需求的指导手册：\n<指导手册包含内容>\n1. 问题概述 - 简要描述问题和目标，需要体现本指导手册的适用范围\n2. 所需的工具和资源 - 列出解决此类问题所需的工具、库或资源（需要是已有可获取的）,以及使用工具的最佳实践。\n3. 步骤说明 - 提供清晰的步骤指导，最后一个步骤一定要是交付与汇报，在这个步骤里明确描述出交付物是什么。\n   3.1 由于每个步骤是不同的Agent来进行处理，不同的Agent之间可传递的信息不宜过多，通过写入中间文件然后读取的方式来传递大量信息。\n4. 注意需要保持各层级标题的序号，并且序号格式需要和待优化指导手册中的相同（特别注意步骤概述的下级标题需要需要加上括号())。（除非用户反馈说更改序号）\n</指导手册包含内容>\n\n<指导手册格式要求>\n指导手册结构\n- 概述\n - 背景和适用场景\n - 目标\n- 所需工具和资源\n- 步骤说明\n - 步骤概述\n  - 本步骤目标\n  - 本步骤交付结果\n  - 依赖前序步骤\n  - 拆解为多个互不影响的子步骤执行\n - 步骤详情(下级标题序号需要是（1）,（2）等等)\n - 注意事项\n- 总结\n工具的表示方法：@工具名@\n用户上传文件的表示方法：@文件名的文件储存信息：{{'文件储存在语义检索库中的id':'{{id}}','文件储存地址':'{{文件路径}}'}}@\n知识库的表示方法：@知识库名的储存信息:{{'知识库储存在语义检索库中的id':'{{id}}'}}@\n输出文件的表示方法：文件名\n</指导手册格式要求>\n\n输出应当是Markdown格式，便于阅读和理解。请确保指导手册是实用的，可以帮助用户解决类似问题。\n你需要先一步一步的思考，然后再输出指导手册。思考需要被包含在<Thought_START>和<Thought_END>\n思考过程：\"\"\"\n\n# 生成一级子任务的prompt模板, variables -> current_time: 当前时间；file_dir: 用户上传的文件路径；sop: 用户SOP；query: 用户问题\nGenerateTaskPrompt = \"\"\"<背景资料>\n你是一个任务规划专家，请根据用户的问题和指导手册，规划出完成任务需要多少个具体的步骤，每个步骤需要完成哪些任务，以及这些步骤之间是如何协同工作的。\n</背景资料>\n\n<要求>\n1. 根据用户的问题和指导手册，规划出粗粒度的步骤。\n2. 具体哪些步骤来完成这些步骤。以及他们之间的协同工作方式。\n3. 如果用户需求特别简单，例如只需要执行一个步骤，请直接返回一个步骤的Json。\n4. 指导手册中提到的细节，例如使用了工具，对过程的详细描述，各种要求都一定要体现在生成的步骤中。\n</要求>\n\n<已有工具列表>\n{tools_str}\n</已有工具列表>\n\n<步骤规划结果Json格式要求>\n```json\n{{\n    \"total_thought\": \"思考需要拆分为几个步骤，以及为什么需要拆分成这几个步骤。\",\n    \"steps\": [\n        {{\n            \"thought\": \"思考为什么需要这个步骤，以及这个步骤的每一个字段应该有什么内容。\",\n            \"step_id\": \"step_1\",\n            \"profile\": \"step_1的profile\",\n            \"target\": \"step_1的target\",\n            \"workflow\": \"step_1的workflow，需要包含资源（工具，以及工具可能的参数，完整文件路径等等），步骤（当前的步骤）等信息\",\n            \"precautions\": \"step_1的注意事项\",\n            \"input_thought\": \"思考input需要依赖哪些前置步骤，并明确思考需要输入几个步骤的内容，分别的step_id是多少，涉及到工具使用的，需要思考应该使用这个工具的哪个参数。\",\n            \"input\": [\"\"],\n            \"node_loop\": true/false\n        }}\n        ,....\n    ]\n}}\n```\n  <字段解释>\n    \"thought\": 思考为什么需要这个步骤，以及这个步骤的每一个字段应该有什么内容，还需要思考input都需要依赖哪些前置步骤，并明确思考需要输入几个步骤的内容，分别的step_id是多少，涉及到工具使用的，需要思考应该使用这个工具的哪个参数。\n    \"workflow\": 精确描述这个步骤的执行流程，以及需要使用哪些工具，以及工具的参数。用户提供指导手册中的[步骤详情]字段专门用来描述用户期望的步骤的执行流程，你必须尽可能遵守。\n    \"precautions\": 这一步的注意事项。用户提供的[注意事项]字段专门用来描述用户期望的步骤的注意事项，你必须尽可能遵守。\n    \"input\": 本步骤的输入，必须是前置步骤的step_id或\"query\",可以多个。\"query\"代表用户的原始问题。\n    \"node_loop\": 表示本步骤是否在内部需要拆分多个步骤来处理，通常在相似需求需要重复执行的时候需要拆分多个步骤来处理，用户提供的[拆解为多个互不影响的子步骤]字段专门用来描述用户期望本步骤是否进行拆分。\n  </字段解释>\n</步骤规划结果Json格式要求>\n\n<标准信息>\n当前时间：{current_time}\n当前路径：{file_dir}\n</标准信息>\n\n<用户提供的指导手册>\n{sop}\n</用户提供的指导手册>\n\n<用户问题>\n{query}\n</用户问题>\n\n无论如何，你都应该生成完整的步骤 List Json。\n\"\"\"\n\n# 单个agent的prompt模板\n# variables -> profile:agent角色; current_time: 当前时间；file_dir: 用户上传的文件路径；sop: 用户SOP；query: 用户最终问题；\n# step_list: 任务整体规划；processed_steps: 已经处理的步骤；input_str: 用户输入信息；step_id: 当前任务id\n# target: 当前任务目标；single_sop: 当前任务遵循的SOP\nSingleAgentPrompt = \"\"\"你是一个强大的{profile}，可以使用提供的工具来回答用户问题并执行任务。\n在最后的回答中，需要包含接下来需要执行步骤所需的所有信息，例如本次任务的结论，文件保存的路径等等\n\n以下是一些标准信息：\n当前时间：{current_time}\n当前路径：{file_dir}\n\n用户最终问题: \n\"{query}\"\n\n用户提供的完整指导手册(SOP): \n{sop}\n\n这是任务整体规划：\n{step_list}\n\n{processed_steps}\n\n{input_str}\n\n当前任务为：{step_id}，步骤目标为：\n{target}\n当你完成了阶段目标，应该结束执行。\n\n当前应该遵守的指导手册(SOP)：\n{single_sop}\n\n注意事项：\n{precautions}\n\n请根据阶段目标，使用适当的工具来完成任务，如果是最后一步，回答需要明确当前任务的产出内容是什么。\"\"\"\n\n\nclass TaskItem(BaseModel):\n    思考: str\n    标题层级类型: str\n    标题层级: str\n    当前目标: str\n    当前方法: str\n    输出方法: str\n\n\nclass SplitEvent(BaseModel):\n    总体思考: str\n    总体任务目标: str\n    总体方法: str\n    已经完成的内容: str\n    可用资源: str\n    任务列表: list[TaskItem]\n\n\n# 并发agent拆分子任务的prompt模板\n# variables -> query: 用户问题；sop: 用户SOP；step_list: 任务整体规划；\n# processed_steps: 已经处理的步骤；input_str: 前置任务的输出; prompt: 当前阶段问题；file_content: 用户上传的文件内容或者中间文件内容\nLoopAgentSplitPrompt = \"\"\"你是一名专业的流程拆解专家，请根据用户提供的任务要求，将复杂内容拆分为清晰、完整且互不重复的并行操作任务。请按以下规则执行：\n你需要先分析再拆解，分析用户的问题，并根据问题进行拆解。\n你的拆解将会逐个送入接下来的流程节点中进行处理。\n接下来的流程节点会根据你的拆解结果，逐个进行**并行**处理，因此，接下来的流程节点的所有上下文是独立的，需要你确保拆解结果的独立性，因此拆解的任务之间不能互相依赖。\n对于有层级结构的标题，每个层级都应该有独立的任务，并且非最小层级要修改对应的“当前目标”，明确说明只需要写标题。\n！！！一定不能为了节省篇幅，只输出部分示例，必须输出完整的所有的拆分任务。！！！\n\n首先你要输出每个任务都共享的内容：\n1. 总体思考。先判断任务数量，然后根据任务数量判断按照什么粒度进行拆分，分析应该拆分成几个任务。\n2. 总体任务目标。\n3. 总体方法。\n4. 已经完成的内容。\n针对每个任务，你需要输出以下内容：\n1. 思考。一步一步分析以下内容应该如何填写，给出你的理由。\n2. 标题层级类型。当前标题下没有更多的标题，认为是“最小层级”，否则认为是非最小层级，对于非最小层级，标题层级类型为“非最小层级”。对于最小层级，标题层级类型为“最小层级”。\n3. 标题层级。如果输出方法为写入文件，则需要包含标题与标题层级（明确说明每个标题用几个#号），否则为空。\n4. 当前目标。对于非最小层级，目标只需要说明写标题。对于最小层级，目标中需要包含**所有**需要完成的事情。\n5. 当前方法。当前方法要参考总体方法，例如使用工具的情况不能遗漏。\n6. 输出方法。例如总结回答，写入文件，生成图片路径等等,如果为写入文件，需要明确文件地址。\n\n\n用户最终问题: \n{query}\n\n用户提供的完整指导手册(SOP): \n{sop}\n\n这是任务整体规划：\n{step_list}\n\n你现在已经完成了{processed_steps}\n\n{input_str}\n\n{file_content}\n\n请用以下格式模板响应：\n```json\n{{\n  \"总体思考\": \"<总体思考，先判断可能的任务数，然后判断按照什么粒度进行拆分>\",\n  \"总体任务目标\": \"<总体任务目标>\",\n  \"总体方法\": \"<总体方法>\",\n  \"已经完成的内容\": \"<已经完成的内容>\",\n  \"可用资源\": \"<可用资源，例如参考资料，文件等>\",\n  \"任务列表\": [\n    {{\n      \"思考\": \"<思考>\",\n      \"标题层级类型\": \"最小层级/非最小层级\",\n      \"标题层级\": \"<标题层级>\",\n      \"当前目标\": \"<当前目标>\",\n      \"当前方法\": \"<当前方法>\",\n      \"输出方法\": \"<输出类型>\",\n    }},\n    {{\n      \"思考\": \"<思考>\",\n      \"标题层级类型\": \"最小层级/非最小层级\",\n      \"标题层级\": \"<标题层级>\",\n      \"当前目标\": \"<当前目标>\",\n      \"当前方法\": \"<当前方法>\",\n      \"输出方法\": \"<输出类型>\",\n    }}\n  ]\n}}\n```\n\n阶段问题：\n{prompt}\n\n注意事项：\n{precautions}\n\n！！！无论需求列表有多长，你都必须在输出的JSON输出完整的所有的拆分任务，不能有任何的省略。！！！\n\"\"\"\n\n# 并发执行子任务的agent的prompt模板\n# variables -> profile: agent的角色；current_time: 当前时间；file_dir: 用户上传的文件路径；\n# original_query: 总体任务目标；original_method: 总体方法；original_done: 已经完成的内容；last_answer: 上步骤的答案\n# single_sop: 当前任务遵循的SOP；step_id: 当前任务id; target: 当前任务目标；\nLoopAgentPrompt = \"\"\"你是一个强大的{profile}，可以使用提供的工具来回答用户问题并执行任务。\n在最后的回答中，需要包含接下来需要执行步骤所需的所有信息，例如本次任务的结论，文件保存的路径等等\n\n以下是一些标准信息：\n当前时间：{current_time}\n当前路径：{file_dir}\n\n整体任务目标：\n{original_query}\n\n整体方法：\n{original_method}\n\n已经完成的内容：\n{original_done}\n{last_answer}\n\n当前方法：\n{single_sop}\n\n当前任务为：{step_id}，步骤目标为：\n{target}\n\n请根据用户问题，使用适当的工具来完成任务。当你完成了当前用户问题，应该明确当前任务的产出内容是什么，并结束执行。\"\"\"\n\n# 历史记录总结的prompt模板, 在历史记录过长时使用\n# 二级任务： sop: 当前方法; query: 当前目标; history_str: 历史记录字符串\n# 一级任务：sop: sop; query: prompt; history_str: 历史记录字符串\nSummarizeHistoryPrompt = \"\"\"请基于以下对话历史记录尝试回答用户问题，并明确完成任务还需要做什么:\n要求：\n1. 基于已有历史记录对用户问题进行阶段性回答。\n2. 要完成任务还需要做什么？\n3. 输出包含以下三个部分，首先是基于历史记录对用户问题的完整答案，需要尽可能详细。然后是已经完成的内容，最后是下一步需要做的工作。\n\n标准执行步骤:\n{sop}\n\n用户问题:\n{query}\n\n历史记录:\n{history_str}\n\n回答：\"\"\"\n\n# 总结答案的prompt模板, 用于总结一个Agent的执行内容，提取出下一个Agent需要的信息\n# variables -> history_str: 已经执行的步骤内容；step_list: 任务整体规划；step_id: 当前任务的step_id；depend_step: 依赖当前任务的step_id\nSummarizeAnswerPrompt = \"\"\"现在有一个多Agent系统，现在给你其中一个Agent执行的所有步骤内容，你需要总结这个Agent传递给其他Agent所必要的信息。\n已经执行的步骤内容：\n{history_str}\n\n任务整体规划：\n{step_list}\n\n当前任务为：{step_id}。\n\n依赖你输出的任务是{depend_step}。\n\n输出内容需要放入json结构体中，json结构体如下：\n如果是目录，每个目录结构需要有“输出目录层级”这个key，值为目录层级.\n需要有“思考”这个字段，在json的一开始，依赖你输出的任务只依赖现在的输出作为输入，因此需要仔细思考应该输出哪些内容，输出的细节程度是什么样。\n需要有“已执行步骤概述”字段，来清晰总结已经做了哪些事情。\n如果写入了文件，需要给出写入文件的目录结构和层级标题。（markdown格式需要给出#）\n```json\n```\n\n现在你需要总结出所有{depend_step}所需要本任务输出的内容：\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/react_prompt.py",
    "content": "# 一级任务的prompt模板\n# variables -> profile: task角色; current_time: 当前时间；file_dir: 用户上传的文件路径；\n# tools_json: 可用的工具列表；sop: 用户SOP；query: 用户最终问题；\n# step_list: 任务整体规划；processed_steps: 已经处理的步骤；input_str: 用户输入信息；step_id: 当前任务id\n# target: prompt；single_sop: 当前任务遵循的SOP; history: 已经执行的步骤; file_list_str: 用户上传的文件列表\nReactSingleAgentPrompt = \"\"\"你是一个强大的{profile}，可以使用以下工具来回答用户问题并执行任务。\n请使用ReAct (Reasoning + Acting)方法，思考并使用工具解决问题。\n每一步都要清晰地思考你需要做什么，然后采取行动。\n如果出现了多次调用工具失败或错误或多次重复调用，请告诉用户，并通过把\"结束\"设置为True来停止执行。\n\n以下是一些标准信息：\n当前时间：{current_time}\n当前路径：{file_dir}\n\n{file_list_str}\n\n可用工具列表:\n{tools_json}\n\n按照以下格式生成单步回答:\n你可以输出两种类型的react结构体，一种是调用工具，一种是调用固定步骤。\n\n固定步骤结构体说明:\n固定步骤只有两个选择，分别是回答和生成规划。\n以下内容中被<>包围的内容，需要被替换为实际的内容。\n步骤名：回答\n描述：生成回答。\n参数：空字典\n观察：<给用户的最终答案>\n\n步骤名：生成规划\n描述：生成解决问题的规划\n参数：空字典\n观察：<规划的具体内容和步骤>\n\n固定步骤结构体：\n```json\n{{\n    \"思考\": \"<你的推理过程，分析应该使用哪个工具和如何解决问题>\",\n    \"结束\": \"<完成了阶段目标则结束，如果结束，为True，否则为False>\",\n    \"类型\": \"固定步骤\",\n    \"行动\": \"<步骤名>\",\n    \"参数\": {{}} ,\n    \"调用原因\": \"<调用原因>\",\n    \"生成内容\"： \"<生成内容>\"\n}}\n```\n\n工具结构体说明:\n以下内容中被<>包围的内容，需要被替换为实际的内容。\n工具结构体：\n```json\n{{\n    \"思考\": \"<你的推理过程，分析应该使用哪个工具和如何解决问题>\",\n    \"结束\": \"<完成了阶段目标则结束，如果结束，为True，否则为False>\",\n    \"类型\": \"工具\",\n    \"行动\": \"<工具名称>\",\n    \"参数\": \"<工具参数的JSON格式>\"\n}}\n```\n注意，生成工具节点时，观察都为空！！\n... (可重复思考-行动-观察)\n\n用户最终问题: \n\"{query}\"\n\n用户提供的完整指导手册(SOP): \n{sop}\n\n这是任务整体规划：\n{step_list}\n\n{processed_steps}\n\n{input_str}\n\n当前任务为：{step_id}，目标为：\n{target}\n当你完成了当前目标，应该结束执行。\n\n当前应该遵守的指导手册(SOP)：\n{single_sop}\n\n已经执行的步骤：\n{history}\n\n只生成下一步的操作，如果下一步是最后一步，回答需要明确当前任务的产出内容是什么：\n你应该先一步一步思考，思考放在<Thought>和</Thought>之间，再输出json。\n\"\"\"\n\n# 二级子任务的prompt模板\n# variables -> profile: agent的角色；current_time: 当前时间；file_dir: 用户上传的文件路径；tools_json: 可用的工具列表；\n# original_query: 总体任务目标；original_method: 总体方法；original_done: 已经完成的内容；last_answer: 上步骤的答案\n# single_sop: 当前任务遵循的SOP；step_id: 当前任务id; target: 当前任务目标；history: 历史记录; file_list_str: 文件列表字符串\nReactLoopAgentPrompt = \"\"\"你是一个强大的{profile}，可以使用以下工具来回答用户问题并执行任务。\n请使用ReAct (Reasoning + Acting)方法，思考并使用工具解决问题。\n每一步都要清晰地思考你需要做什么，然后采取行动。\n如果出现了多次调用工具失败或错误或多次重复调用，请告诉用户，并通过把\"结束\"设置为True来停止执行。\n\n以下是一些标准信息：\n当前时间：{current_time}\n当前路径：{file_dir}\n\n{file_list_str}\n\n可用工具:\n{tools_json}\n\n按照以下格式生成单步回答:\n你可以输出两种类型的react结构体，一种是调用工具，一种是调用固定步骤。\n\n固定步骤结构体说明:\n固定步骤只有两个选择，分别是回答和生成规划。\n以下内容中被<>包围的内容，需要被替换为实际的内容。\n步骤名：回答\n描述：生成回答。\n参数：空字典\n观察：<给用户的最终答案>\n\n步骤名：生成规划\n描述：生成解决问题的规划\n参数：空字典\n观察：<规划的具体内容和步骤>\n\n固定步骤结构体：\n```json\n{{\n    \"思考\": \"<你的推理过程，分析应该使用哪个工具和如何解决问题>\",\n    \"结束\": \"<完成了阶段目标则结束，如果结束，为True，否则为False>\",\n    \"类型\": \"固定步骤\",\n    \"行动\": \"<步骤名>\",\n    \"参数\": {{}} ,\n    \"调用原因\": \"<调用原因>\",\n    \"生成内容\"： \"<生成内容>\"\n}}\n```\n\n工具结构体说明:\n以下内容中被<>包围的内容，需要被替换为实际的内容。\n工具结构体：\n```json\n{{\n    \"思考\": \"<你的推理过程，分析应该使用哪个工具和如何解决问题>\",\n    \"结束\": \"<完成了阶段目标则结束，如果结束，为True，否则为False>\",\n    \"类型\": \"工具\",\n    \"行动\": \"<工具名称>\",\n    \"参数\": \"<工具参数的JSON格式>\"\n}}\n```\n注意，生成工具节点时，观察都为空！！\n... (可重复思考-行动-观察)\n\n整体任务目标：\n{original_query}\n\n整体方法：\n{original_method}\n\n已经完成的内容：\n{original_done}\n{last_answer}\n\n当前方法：\n{single_sop}\n\n当前任务为：{step_id}，目标为：\n{target}\n当你完成了当前目标，应该结束执行。\n\n已经执行的步骤：\n{history}\n\n只生成下一步的操作，如果下一步是最后一步，回答需要明确当前任务的产出内容是什么：\n你应该先一步一步思考，思考放在<Thought>和</Thought>之间，再输出json。\n\"\"\"\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/react_task.py",
    "content": "import asyncio\nimport copy\nimport json\nimport logging\nfrom datetime import datetime\n\nfrom langchain_core.messages import ToolMessage, AIMessage, HumanMessage, BaseMessage\n\nfrom bisheng_langchain.linsight.const import TaskStatus, CallUserInputToolName\nfrom bisheng_langchain.linsight.event import NeedUserInput, ExecStep\nfrom bisheng_langchain.linsight.react_prompt import ReactSingleAgentPrompt, ReactLoopAgentPrompt\nfrom bisheng_langchain.linsight.task import BaseTask\nfrom bisheng_langchain.linsight.utils import encode_str_tokens, generate_uuid_str, \\\n    extract_json_from_markdown\n\n\nclass ReactTask(BaseTask):\n\n    async def get_history_str(self) -> str:\n        \"\"\"Get the history string for the history.\"\"\"\n        history_str = \"\"\n        tool_messages = []\n        remain_messages = []\n        for one in self.history:\n            history_str += \"\\n\" + one.content\n            if isinstance(one, ToolMessage) or \"tool_calls\" in one.additional_kwargs:\n                tool_messages.append(one)\n            else:\n                remain_messages.append(one)\n\n        all_tool_messages_str = json.dumps([json.loads(one.content) for one in tool_messages], ensure_ascii=False,\n                                           indent=2)\n        if len(encode_str_tokens(all_tool_messages_str)) > self.exec_config.tool_buffer:\n            messages_str = ''\n            for one in self.history:\n                messages_str += \"\\n\" + one.content + \",\"\n            messages_str = messages_str.rstrip(\",\")\n            messages_str = f\"[{messages_str}\\n]\"\n\n            history_summary = await self.summarize_history(messages_str)\n            # 将总结后的历史记录插入到system_message后面\n            remain_messages.append(AIMessage(content=history_summary))\n            self.history = remain_messages\n            return \"\\n\".join([one.content for one in remain_messages])\n\n        return history_str\n\n    async def build_messages_with_history(self) -> list[BaseMessage]:\n        \"\"\"Build messages with history for the React task.\"\"\"\n        # It should return a prompt that will be used in the React task.\n        current_time = datetime.now().strftime(\"%Y-%m-%d %H\")\n        tools_json = self.task_manager.get_all_tool_schema_str\n        history_str = await self.get_history_str()\n\n        if self.node_loop and self.parent_id:\n            prompt = ReactLoopAgentPrompt.format(profile=self.profile,\n                                                 current_time=current_time,\n                                                 file_dir=self.file_dir,\n                                                 tools_json=tools_json,\n                                                 original_query=self.original_query,\n                                                 original_method=self.original_method,\n                                                 original_done=self.original_done,\n                                                 last_answer=await self.get_input_str(),\n                                                 single_sop=self.sop,\n                                                 step_id=self.step_id,\n                                                 target=self.target,\n                                                 history=history_str,\n                                                 file_list_str=self.file_list_str)\n        else:\n            prompt = ReactSingleAgentPrompt.format(profile=self.profile,\n                                                   current_time=current_time,\n                                                   file_dir=self.file_dir,\n                                                   tools_json=tools_json,\n                                                   sop=self.finally_sop,\n                                                   query=self.query,\n                                                   step_list=self.task_manager.get_step_list(),\n                                                   processed_steps=self.task_manager.get_processed_steps(),\n                                                   input_str=await self.get_input_str(),\n                                                   step_id=self.step_id,\n                                                   target=self.target,\n                                                   single_sop=self.sop,\n                                                   history=history_str,\n                                                   file_list_str=self.file_list_str)\n        return [HumanMessage(content=prompt)]\n\n    async def parse_react_result(self, content: str) -> (BaseMessage, bool):\n        response_json = extract_json_from_markdown(content)\n        step_type = response_json.get(\"类型\", \"未知\")\n        thinking = response_json.get(\"思考\", \"未提供思考过程\")\n        action = response_json.get(\"行动\", \"\")\n        params = response_json.get(\"参数\", {})\n        observation = response_json.get(\"观察\", \"\")\n        generate_content = response_json.get(\"生成内容\", \"\")\n        is_end = response_json.get(\"结束\", False)\n        if isinstance(is_end, str):\n            is_end = is_end.lower() == \"true\"\n        if isinstance(params, str):\n            try:\n                params = json.loads(params)\n            except json.decoder.JSONDecodeError:\n                params = {}\n\n        # 说明是工具执行, 执行工具\n\n        if action and action == \"回答\":\n            self.answer.append(str(generate_content))\n\n        if step_type == \"固定步骤\":\n            result_dict = {\n                \"思考\": thinking,\n                \"结束\": \"True\" if is_end else \"False\",\n                \"类型\": step_type,\n                \"行动\": action,\n                \"参数\": params,\n                \"生成内容\": generate_content,\n            }\n            await self.put_event(ExecStep(task_id=self.id,\n                                          call_id=generate_uuid_str(),\n                                          call_reason=response_json.get(\"调用原因\", \"\"),\n                                          name=action,\n                                          params=params,\n                                          output=str(generate_content),\n                                          step_type='react_step',\n                                          status=\"end\"))\n            message = AIMessage(content=json.dumps(result_dict, ensure_ascii=False, indent=2))\n        else:\n            _call_reason = params.get(\"call_reason\", \"\")\n            # 等待用户输入的特殊工具调用\n            if action == CallUserInputToolName:\n                # 等待用户输入\n                self.status = TaskStatus.INPUT.value\n                _call_reason = params.get(\"call_content\") or params.get(\"call_reason\")\n                await self.put_event(NeedUserInput(task_id=self.id, call_reason=_call_reason, params=params.copy()))\n                # 等待用户输入\n                while self.status != TaskStatus.INPUT_OVER.value:\n                    await asyncio.sleep(0.5)\n\n                # 用户输入结束继续执行\n                self.status = TaskStatus.PROCESSING.value\n                observation = self.user_input\n                self.user_input = None\n            else:\n                # 正常工具调用\n                call_id = generate_uuid_str()\n                await self.put_event(ExecStep(task_id=self.id,\n                                              call_id=call_id,\n                                              call_reason=_call_reason,\n                                              name=action,\n                                              params=params,\n                                              status=\"start\"))\n                observation, flag = await self.task_manager.ainvoke_tool(action, copy.deepcopy(params))\n                # 说明工具调用失败\n                if not flag:\n                    is_end = False\n                await self.put_event(ExecStep(task_id=self.id,\n                                              call_id=call_id,\n                                              call_reason=_call_reason,\n                                              name=action,\n                                              params=params,\n                                              output=observation,\n                                              status=\"end\"))\n            result_dict = {\n                \"思考\": thinking,\n                \"结束\": \"True\" if is_end else \"False\",\n                \"类型\": \"工具\",\n                \"行动\": action,\n                \"参数\": params,\n                \"观察\": observation,\n            }\n            try:\n                message = ToolMessage(tool_call_id=generate_uuid_str(),\n                                      content=json.dumps(result_dict, ensure_ascii=False, indent=2))\n            except TypeError as e:\n                logging.error(f\"json.dumps failed with result_dict: {result_dict}\")\n                raise e\n        return message, is_end\n\n    async def _ainvoke(self) -> None:\n        self.status = TaskStatus.PROCESSING.value\n        if self.node_loop and not self.parent_id:\n            return await self.ainvoke_loop()\n\n        is_end = False\n        # json解析失败重试三次\n        json_decode_error = 0\n        for i in range(self.exec_config.max_steps):\n            messages = await self.build_messages_with_history()\n            if json_decode_error > 0:\n                res = await self._ainvoke_llm_without_tools(messages, temperature=self.exec_config.retry_temperature)\n            else:\n                res = await self._ainvoke_llm_without_tools(messages)\n            try:\n                message, is_end = await self.parse_react_result(res.content)\n            except Exception as e:\n                if json_decode_error >= self.exec_config.retry_num:\n                    raise e\n                json_decode_error += 1\n                continue\n            self.history.append(message)\n            if is_end:\n                break\n        if is_end:\n            self.status = TaskStatus.SUCCESS.value\n        else:\n            self.status = TaskStatus.FAILED.value\n            self.answer.append(\"task exec over max steps and not generate answer\")\n        return None\n\n    async def generate_sub_tasks(self) -> list['ReactTask']:\n        sub_tasks_info = await self._get_sub_tasks()\n        return [ReactTask(**one) for one in sub_tasks_info]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/config.json",
    "content": "{\n  \"architectures\": [\n    \"Qwen3MoeForCausalLM\"\n  ],\n  \"attention_bias\": false,\n  \"attention_dropout\": 0.0,\n  \"bos_token_id\": 151643,\n  \"decoder_sparse_step\": 1,\n  \"eos_token_id\": 151645,\n  \"head_dim\": 128,\n  \"hidden_act\": \"silu\",\n  \"hidden_size\": 4096,\n  \"initializer_range\": 0.02,\n  \"intermediate_size\": 12288,\n  \"max_position_embeddings\": 40960,\n  \"max_window_layers\": 94,\n  \"mlp_only_layers\": [],\n  \"model_type\": \"qwen3_moe\",\n  \"moe_intermediate_size\": 1536,\n  \"norm_topk_prob\": true,\n  \"num_attention_heads\": 64,\n  \"num_experts\": 128,\n  \"num_experts_per_tok\": 8,\n  \"num_hidden_layers\": 94,\n  \"num_key_value_heads\": 4,\n  \"output_router_logits\": false,\n  \"rms_norm_eps\": 1e-06,\n  \"rope_scaling\": null,\n  \"rope_theta\": 1000000.0,\n  \"router_aux_loss_coef\": 0.001,\n  \"sliding_window\": null,\n  \"tie_word_embeddings\": false,\n  \"torch_dtype\": \"bfloat16\",\n  \"transformers_version\": \"4.51.0\",\n  \"use_cache\": true,\n  \"use_sliding_window\": false,\n  \"vocab_size\": 151936\n}"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/configuration.json",
    "content": "{\"framework\": \"pytorch\", \"task\": \"others\", \"allow_remote\": true}"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/generation_config.json",
    "content": "{\n    \"bos_token_id\": 151643,\n    \"do_sample\": true,\n    \"eos_token_id\": [\n        151645,\n        151643\n    ],\n    \"pad_token_id\": 151643,\n    \"temperature\": 0.6,\n    \"top_k\": 20,\n    \"top_p\": 0.95,\n    \"transformers_version\": \"4.51.0\"\n}"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/merges.txt",
    "content": "#version: 0.2\nĠ Ġ\nĠĠ ĠĠ\ni n\nĠ t\nĠĠĠĠ ĠĠĠĠ\ne r\nĠĠ Ġ\no n\nĠ a\nr e\na t\ns t\ne n\no r\nĠt h\nĊ Ċ\nĠ c\nl e\nĠ s\ni t\na n\na r\na l\nĠth e\n; Ċ\nĠ p\nĠ f\no u\nĠ =\ni s\nĠĠĠĠ ĠĠĠ\nin g\ne s\nĠ w\ni on\ne d\ni c\nĠ b\nĠ d\ne t\nĠ m\nĠ o\nĉ ĉ\nr o\na s\ne l\nc t\nn d\nĠ in\nĠ h\nen t\ni d\nĠ n\na m\nĠĠĠĠĠĠĠĠ ĠĠĠ\nĠt o\nĠ re\n- -\nĠ {\nĠo f\no m\n) ;Ċ\ni m\nč Ċ\nĠ (\ni l\n/ /\nĠa nd\nu r\ns e\nĠ l\ne x\nĠ S\na d\nĠ \"\nc h\nu t\ni f\n* *\nĠ }\ne m\no l\nĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠ\nt h\n) Ċ\nĠ{ Ċ\nĠ g\ni g\ni v\n, Ċ\nc e\no d\nĠ v\nat e\nĠ T\na g\na y\nĠ *\no t\nu s\nĠ C\nĠ st\nĠ I\nu n\nu l\nu e\nĠ A\no w\nĠ '\ne w\nĠ <\nat ion\n( )\nĠf or\na b\nor t\nu m\nam e\nĠ is\np e\nt r\nc k\nâ Ģ\nĠ y\ni st\n-- --\n. ĊĊ\nh e\nĠ e\nl o\nĠ M\nĠb e\ner s\nĠ on\nĠc on\na p\nu b\nĠ P\nĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠ\nas s\nin t\n> Ċ\nl y\nur n\nĠ $\n; ĊĊ\na v\np ort\ni r\n- >\nn t\nct ion\nen d\nĠd e\nit h\nou t\nt urn\nou r\nĠĠĠĠ Ġ\nl ic\nre s\np t\n= =\nĠth is\nĠw h\nĠ if\nĠ D\nv er\nag e\nĠ B\nh t\nex t\n= \"\nĠth at\n** **\nĠ R\nĠ it\nes s\nĠ F\nĠ r\no s\nan d\nĠa s\ne ct\nk e\nro m\nĠ //\nc on\nĠ L\n( \"\nq u\nl ass\nĠw ith\ni z\nd e\nĠ N\nĠa l\no p\nu p\ng et\nĠ} Ċ\ni le\nĠa n\nat a\no re\nr i\nĠp ro\n; čĊ\nĉĉ ĉĉ\nt er\na in\nĠ W\nĠ E\nĠc om\nĠre turn\nar t\nĠ H\na ck\nim port\nub lic\nĠ or\ne st\nm ent\nĠ G\nab le\nĠ -\nin e\nil l\nin d\ner e\n: :\nit y\nĠ +\nĠt r\nel f\nig ht\n( '\nor m\nul t\nst r\n. .\n\" ,\nĠy ou\ny pe\np l\nĠn ew\nĠ j\nĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠ\nĠf rom\nĠ ex\nĠ O\nl d\nĠ [\no c\n: Ċ\nĠs e\nĠ le\n---- ----\n. s\n{ Ċ\n' ,\nan t\nĠa t\nas e\n. c\nĠc h\n< /\nav e\nan g\nĠa re\nĠin t\nâĢ Ļ\n_ t\ner t\ni al\na ct\n} Ċ\niv e\nod e\no st\nĠc lass\nĠn ot\no g\nor d\nal ue\nal l\nf f\n( );Ċ\non t\nim e\na re\nĠ U\nĠp r\nĠ :\ni es\niz e\nu re\nĠb y\ni re\nĠ} ĊĊ\n. p\nĠs h\nic e\na st\npt ion\ntr ing\no k\n_ _\nc l\n# #\nĠh e\nar d\n) .\nĠ @\ni ew\nĉĉ ĉ\nĠw as\ni p\nth is\nĠ u\nĠT he\nid e\na ce\ni b\na c\nr ou\nĠw e\nj ect\nĠp ublic\na k\nv e\nat h\no id\nĠ= >\nu st\nq ue\nĠre s\n) )\n' s\nĠ k\nan s\ny st\nun ction\n**** ****\nĠ i\nĠ us\np p\non e\na il\n== ==\nn ame\nĠst r\nĠ /\nĠ &\na ch\nd iv\nyst em\nel l\nĠh ave\ner r\nou ld\nul l\np on\nĠ J\n_ p\nĠ= =\nig n\nS t\n. Ċ\nĠp l\n) ;ĊĊ\nf orm\np ut\nou nt\n} ĊĊ\nd d\nit e\nĠg et\nr r\nom e\nĠ âĢ\nar am\nc c\nĠ* /\nE R\nI n\nle s\n_ s\non g\ni e\nĠc an\nĠ V\ner v\np r\nĠ un\nro w\nb er\nĠd o\nl l\nĠ el\nĠs elf\nat ed\nar y\nĠ .\n' ]\nu d\nĠ en\nĠT h\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠ\nt e\n_ c\nu ct\nĠa b\nor k\n. get\nĠ #\na w\nres s\no b\nN ame\nap p\n[ '\nĠal l\nor y\nit ion\nan ce\ne ar\nĠcon t\nv ent\ni a\nĠw ill\nI N\nĠĠĠĠĠĠĠĠ Ġ\nre turn\nĠ< /\nd ata\n) ĊĊ\nR e\np le\nil d\nth er\nĠy our\n\" Ċ\n( $\nĠ out\n) ,\nĠh as\nS tring\ns o\nĠ up\na x\nĠde f\nĠb o\ng e\nal se\nO N\np er\nic h\nĠb ut\nĠ Ċ\nĠ _\n_ m\nad d\nque st\nod el\ns elf\ner y\nf t\nen s\n// //\na ke\n. C\nĠg o\nĠf unction\nĠ K\niv ate\nĠ im\nĠcon st\n. t\nĠ*/ Ċ\n) ;čĊ\nĠv oid\nĠs et\nĠS ystem\nc ri\n( )Ċ\nl i\nĉ if\n. m\nal ly\ns et\ne p\nâĢĻ s\nb o\nde f\n' ,Ċ\nĠm e\nĠ !\nat ch\n\" >\n\" ,Ċ\ne c\nĠI n\np h\nĠ |\n_ f\nĠv ar\nen ce\nI d\nre e\nin k\nle ct\nu g\net h\nĠel se\n-------- --------\ncon t\nĠs o\nat ic\nĠl o\np ro\nt on\ns s\now n\nab el\no int\nou s\nel d\nS T\nT he\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nR E\n\" :\nol or\nt p\ne g\nke y\nu de\nĠS t\nou nd\nĠa r\n\" );Ċ\nen er\ns er\nb ject\ness age\nf er\nĠm ore\nation s\nent s\nĠh is\nĠthe y\n. S\nĠ Y\nu se\nn e\nis h\nol d\n_ d\ni o\ni eld\nĠp er\nC ont\ning s\n## ##\nĠd ata\nĠs a\ne f\nf o\nĠon e\nen g\nĠd is\nA T\nĠn ame\nĠtr ue\nv al\nle d\n. f\nĠn e\nĠ end\n. T\nc re\nar k\nlo g\nE x\nerr or\n_ id\nur re\nang e\nĠn ull\nrr ay\nĠm y\np an\nic t\nat or\nV iew\nL ist\nĉ return\nâĢ Ŀ\nĠp re\nĠ x\ncl ude\nar g\no v\n. h\nĠ >\nĠthe ir\n' )\nir st\nic k\ng h\nL E\nO R\nĠpr ivate\nt em\nčĊ čĊ\nus er\nĠ )\nc om\n. A\n\" ;Ċ\nĠ id\nre ad\nĠwh o\n_ b\n\" >Ċ\nĠt ime\nĠm an\nr y\n==== ====\nrou p\nro p\np ublic\nv el\num ber\nb le\nĠwh ich\n******** ********\nĠan y\nĠf alse\nw e\nĠv alue\nĠl i\n\" )\nnd er\ng r\nĠn o\np aram\nf ig\n.c om\nĠa pp\n_ l\nion s\n. D\nĠC h\nĠab out\nĠa dd\nĠs u\nĠstr ing\nI D\nĠo ver\nstr ing\n. l\nour ce\n_ C\n] Ċ\nĠ qu\nĠS tring\nc a\nS E\nĠ ro\ns h\nu al\nT ype\ns on\nn ew\ner n\nĠa g\nA R\n] ;Ċ\n] .\nĠ ?\nic al\nĠd es\nut h\ni x\nay s\nĠt ype\n' t\na ult\nĠin ter\nv ar\n. b\nĠp art\n. d\nurre nt\nI T\nE N\nen c\n( f\nr a\nv alue\nch o\nut ton\no se\nĠ! =\nat er\nÃ ©\nre ate\nol l\np os\ny le\nn g\nA L\nus ing\nam es\nĠ{ čĊ\nat es\nel y\nĠw ork\nĠ em\nin al\nĠs p\nĠwh en\n.s et\nĠĠĠĠ ĠĠ\n) :Ċ\nt o\nqu ire\nind ow\nle ment\npe ct\nas h\n[ i\nĠu se\n. F\npe c\nĠa d\no ve\nce ption\neng th\nin clude\nad er\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠ\nat us\nT h\nit le\nr it\nv oid\n() .\n( Ċ\nĠof f\nĠo ther\nĠ& &\n' ;Ċ\nm s\nĠbe en\nĠt e\nm l\nc o\nn c\nerv ice\nĠ %\n** Ċ\nan n\nad e\nĊĊ ĊĊ\nlo ck\ncon st\npon se\nĠs up\n+ +\nd ate\nĠa cc\nĠh ad\nĠb u\nĠR e\nĠw ere\nĠf ile\nĠw ould\nĠâĢ ľ\nv en\nis s\nĠ our\nc lass\nr aw\nĠy ear\nD ata\nĠv al\nĠs ome\nf ter\ny s\nĠ// /\nrou nd\nv iew\nĠp e\nĠth ere\nĠsa id\nd u\no f\nl ine\n/ *\nd uct\nĠh er\nĠĠĠĠĠĠĠĠ ĠĠĠĠĠ\nR es\nĠc o\nĠcom m\nis e\nm in\nĠĠĠĠ Ċ\n# include\neth od\n. P\nut e\nĠas s\nI nt\nas k\nlo c\nĠli ke\nod y\nĠle t\nlo ad\nĠa m\nro l\nĠg r\ny p\nĠal so\nĠI t\nur l\nif ic\nor s\n_ P\n_ n\nig h\nĠth an\nC om\nA N\nU L\nat ing\nĠTh is\nre f\n_ S\nĠst atic\nro ll\nĠj ust\nĠres ult\ni an\nid th\nĠthe m\n) );Ċ\nd er\nre ak\nC on\n: //\nu le\n.. .\nar ch\nem ent\nĠ< <\nus h\nen se\nar r\nĠint o\nc ess\nam p\ni ed\num ent\nĠ \\\n] ,\nw o\nal s\nĠwh at\nan c\nV alue\n= '\nol um\nĠp os\nag es\nay er\nĠs c\nu es\n\" )Ċ\n_ T\nĠl ist\n( s\nĠc ase\nC h\nĉĉĉĉ ĉ\n//// ////\npon ent\nĠ z\nĠk n\nle t\nD E\nre d\nĠf e\nĠ} ,Ċ\nĠ ,\n( t\nĠf irst\n' );Ċ\nw ord\nĠ import\nĠa ct\nĠch ar\nC T\nĠT r\nop le\n= {\nĉ f\ni ent\nc ent\n. j\nle ction\n) )Ċ\nĠon ly\nĠpr int\nm er\n. W\no ck\nĠ --\nT ext\nĠo p\nan k\nĠit s\nĠb ack\n[ \"\nĠne ed\nĠc l\nĠs ub\nĠl a\n( (\n. \"\nO bject\nĠst art\nf ile\n( self\nn er\ne y\nĠus er\nĠ ent\nĠC om\nit s\nĠC on\nou ble\now er\nit em\nver y\nĠW e\nlic k\nĠ Q\nph p\nt tp\n' :\nic s\nĠu nder\nĠ* Ċ\n. L\n) ;\nic es\nĠre g\n) čĊ\nĉ public\nS S\nĠth en\nre at\ni ous\n. G\ne k\nire ct\nhe ck\ncri pt\nn ing\nĠU n\nĠm ay\nĠW h\nB o\nI tem\nstr uct\n. st\nre am\nib le\nlo at\nĠor g\nu nd\ns um\n_ in\n.. /\n_ M\nĠh ow\nr ite\n' Ċ\nT o\nw w\nĠpe ople\nind ex\n. n\nht tp\n( m\nect or\nĠin d\nĠj av\n] ,Ċ\nĠH e\n_ st\nf ul\no le\n) {Ċ\nĠsh ould\nop y\nel p\ni er\n_ name\ners on\nI ON\not e\nĠt est\nĠb et\nrr or\nul ar\nã Ģ\nĠ Ð\nb s\nt ing\nĠm ake\nT r\nĠa fter\nar get\nR O\nolum n\nr c\n_ re\ndef ine\nĠr ight\nr ight\nd ay\nĠl ong\n[ ]\n( p\nt d\ncon d\nĠP ro\nĠre m\nption s\nv id\n. g\nĠ ext\nĠ __\n' )Ċ\np ace\nm p\nĠm in\nst ance\na ir\na ction\nw h\nt ype\nut il\na it\n< ?\nI C\nt ext\nĠp h\nĠf l\n. M\ncc ess\nb r\nf ore\ners ion\n) ,Ċ\n. re\nate g\nĠl oc\nin s\n- s\ntr ib\nĠI nt\nĠa rray\n, \"\nP ro\n( c\ness ion\n> ĊĊ\nĠs he\n\" ]\nap h\nĠex p\nert y\nĠS e\nĠp ar\nun c\nE T\nĠre ad\npr int\nĠre l\nĠfor m\nĠd r\nEx ception\nin put\nĠtr ans\n#### ####\nord er\nB y\nĠa w\nit ies\nu ff\npl ay\n. add\nĠâĢ ĵ\nĠw ant\nĠcom p\nment s\nĠ| |\na z\nb e\nĠn umber\nĠre quire\nĠE x\nĠc ol\nĠ key\nem ber\nĠt wo\nĠs ize\nĠwh ere\nU T\nres ult\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nou gh\nor ld\no od\nu ch\nat ive\ng er\nare nt\nĠ/ *\nĠar g\nĠwh ile\n( this\nĠre c\nĠd if\nSt ate\nĠs pec\nr ide\n_ F\nĠlo ok\nA M\nil ity\net er\nâĢĻ t\nĊĊ Ċ\nay out\n---------------- ----------------\nag er\nĠc ould\nĠb r\nend s\nu res\nĠkn ow\net s\nĠI f\nĠS h\n. w\nb ack\nĠs er\nĠ+ =\nĠf r\n() );Ċ\nĠh and\nI nd\nUL L\nI m\n() ;ĊĊ\nĠm ost\nĠtr y\nĠn ow\nrou gh\n> čĊ\nack age\nĠh im\n. _\nif y\nĠb reak\nĠ );Ċ\nre n\n# define\nit t\nĠa p\nĉ c\n( n\nĠY ou\n: ĊĊ\n- m\nĠe very\nust om\nli ent\noc ument\ncri ption\nE rror\n- b\nÐ ¾\n] [\ntr ans\nĠp oint\nĠst d\nĠf il\nT ime\nĠm od\nĠ ->\nĠ error\na h\nĠt ext\nroll er\nlo se\nq l\nĠp ol\n> </\nĠsh ow\nU ser\nas ed\nĠ{ ĊĊ\nĠf ind\nÐ °\nE D\ns pan\nen u\nĠc urrent\nĠus ed\nce pt\ncl ud\nĠpl ay\nĠl og\nut ion\nf l\nĠse e\nindow s\nĠh elp\nĠthe se\nĠp ass\nĠd own\nĠe ven\nas on\nu ild\nf rom\n( d\nĠb l\nl abel\nel se\nÐ µ\nĠ( !\niz ed\n() ,\nĠo b\nĠit em\num p\nU R\nor n\nĠd on\nS e\nm an\nam ple\nt n\n======== ========\nH e\ngr am\nĠd id\nw n\n_ h\niv er\nĠs m\nĠth rough\nĠA n\nch e\nĠin v\nou se\nĠ es\nĠN ew\nex port\nm ary\nut o\nl er\nĠl ast\nĠe vent\ntr y\nï ¼\nil y\nign ed\nin es\noll ow\nic ense\nso le\nle ar\n( int\nĠag ain\nĠh igh\nht ml\nInd ex\nuth or\nĠ/ **Ċ\nĠl ine\nE vent\n_ D\nĠdo es\nit ial\nĠc r\nar s\nĠt em\nca use\nf ace\nĠ `\n_ A\nB utton\nat ure\nect ed\nE S\nist er\nĉ Ċ\nĠbe fore\na le\no ther\nĠbe cause\nro id\nĠ ed\ni k\nre g\nĠD e\nĠd ist\n} ,Ċ\nĠst ate\nĠcon s\nr int\nat t\nĠh ere\nin ed\nĠf inal\nĠ\" \"\nK ey\nL O\nĠd el\npt y\nth ing\nĠA nd\nĠr un\nĠ X\ny m\n. app\nĠv ery\nc es\n_ N\nare d\nw ard\nl ist\nit ed\nol og\nit ch\nBo x\nif e\nĠa c\nĠm odel\nĠm on\nĠw ay\nle te\nĠc all\nĠat t\nĠc al\nver t\nĠde c\nle ase\nou n\nĠ} );Ċ\nf r\nform ation\net ail\nĠn um\na j\nqu ery\nĠw ell\nĠo bject\nĠA s\nĠyear s\nC olor\nI S\nĠdef ault\nW h\nĠin s\na int\nĠjav a\nĠs im\nĠA r\nm on\nt il\n() ;čĊ\n) :\nS et\nat ter\nĠv iew\nĠp res\narr ay\nW e\nA t\nĠb el\nĠman y\nM an\nend er\nĠbe ing\nĠgo od\nĉĉĉĉ ĉĉ\nation al\nw are\n. log\n{ čĊ\nĠus ing\n_ B\nĠ: =\n_ w\nist s\nl ish\nĠst ud\nĠA l\nĠg u\ncon fig\nur ing\nt ime\nok en\names pace\nĠre quest\nĠch ild\nĠ Ã\nlo b\nĠp aram\nĠ} čĊ\nĠe cho\nf unction\n**************** ****************\np s\nE lement\nal k\nlic ation\nb y\nS ize\nraw ing\nĠp erson\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ\n\\ n\nob ject\nin ce\nE n\nF ile\nu f\nff ect\nA C\nĠst yle\nsum mary\nĠ que\n_ r\nĠ( $\nM odel\nid ent\nĠm ethod\nI L\not t\nles s\nIN G\nĠ( )\nĠex pect\ny nc\np ackage\nur s\nĠpro t\n. /\np re\nĠ )Ċ\nm a\nĠs ur\nĠf ound\nIn fo\np ar\nim es\n. e\nain s\nĠp ost\n- d\nole an\nĠs l\nP E\nĠsu ch\nse lect\nain er\nĠth ink\nĠdif fer\n. r\n/ **Ċ\nF F\no ol\npl ate\nqu al\nĠF or\nĠm uch\nu c\n( new\nod ule\nĠs om\nĠh ttp\nĠL ist\nĠc ount\nĠin st\nch ar\nm it\n. id\nak ing\nĠg ener\np x\nv ice\n_ data\nĠN ULL\n} čĊ\nid d\nãĢ Ĥ\nĠm ed\nor g\nid er\nach e\nw ork\nĠc heck\nwe en\nĠ( (\nth e\nant s\n> <\n. B\n- c\nĠop en\nĠe st\nĠĠĠĠĠĠĠĠ Ċ\nĠn ext\nI M\nÑ Ĥ\nO T\nÃ ³\nĠf ollow\ncont ent\nĠĠĠĠĠĠĠĠ ĠĠĠĠ\nĠin clud\nH E\nĠR es\nĠh ref\nÐ ¸\nĠc ar\nyp es\nim age\nU n\nĠbo ol\nA D\nĠg ame\n.F orm\nrow s\n* /\nvel op\n.D rawing\nĠp ath\nis ion\nĠe ach\nĠP l\n_t ype\nP ath\nne ction\nĠa v\n' ).\nĠsup port\nEN T\nre m\n\" ).\nĠo wn\nĠc or\nc ount\nm iss\nu ally\nĠm em\nst d\ni ence\nse arch\n\" ĊĊ\nF orm\nĠs ex\nen ame\nĠs ign\nĠ et\nĠĠĠĠĠĠĠĠ ĠĠ\n', '\nĠA pp\nĠth ose\no ff\nĠ err\nĠs ystem\nĠbe st\nc ode\nĠs ame\nĠd i\nus s\nĠc reate\nath er\nA rray\n. in\nf e\nS ervice\nU N\nat s\nĠ Z\nal th\nĠm ade\ntr ue\nA B\nĠm ark\nr id\nif ied\n, čĊ\ny n\np ress\nĠg roup\nĠf in\nĠL icense\nF ield\neg er\nĠw orld\nin ess\nt y\nĠpro cess\n( b\nĠc re\nar n\niv es\nĠm ain\nide o\n_ g\nA G\nval id\nim g\nP I\nĠc olor\nĠre port\nĠt ake\nri b\nO M\nĠd ay\nRe quest\nĠs k\nb ers\nĉ s\n.A dd\no ot\nIm age\nĠcom ple\nol lection\nĠto p\nĠf ree\nA S\nD e\nĠO n\nI G\net a\nD ate\nĠa ction\nO ver\nit or\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nn ot\nĠind ex\nh er\nic on\nO n\n;čĊ čĊ\niv ity\nm and\n.W indows\nO L\nĠre al\nĠm ax\nl and\n.. ..\nr aph\nĠbu ild\nle g\nass word\n? ĊĊ\nâĢ ¦\no ok\nu ck\nĠm essage\nt est\niv ers\nĠin put\nĠar t\nĠbet ween\nG et\nent er\ng round\nen e\nÃ ¡\n.l ength\nN ode\n( i\nC lass\nf or\nĠâĢ Ķ\nt en\no in\nĠ ke\nu i\nĠI N\nĠt able\ns ub\nĠL e\nĠhe ad\nĠm ust\n//////// ////////\n. util\nCont ext\nĠor der\nĠm ov\no ver\nĠcont in\nĠs ay\nst atic\n.T ext\nĠclass Name\npan y\nĠt er\nhe ad\nr g\nĠpro duct\nTh is\n. âĢĿ\nĠB ut\nlo y\nĠd ouble\ns g\nĠpl ace\n. x\nm essage\nĠin formation\npr ivate\nĠo per\nc ed\nd b\n\"> </\nP aram\nic le\nĠwe ek\nĠpro p\nt able\nid get\npl ace\nP rop\nĠA ll\nel s\nbo x\n.ĊĊ ĊĊ\n. R\nĠT o\nit er\nS h\nur ation\nold er\n_l ist\nc ome\nĠs w\niz ation\nĉf or\nb l\nĠpro gram\n( e\na pe\nche ck\n.Form s\nĠu nd\nateg ory\nag s\nĠres ponse\nU S\nre quest\nĠstr uct\nes cription\nĠc ode\n_ H\nuff er\nĠwith out\nlob al\nMan ager\nil ter\nP O\nĉ this\no ption\nĠs ol\nĠ= ==\nak es\nCont roller\nM essage\nĠre f\ne ver\nĠS o\nain ing\n.app end\nĠst ill\nĠpro vid\nĠass ert\nm ed\nĠc ap\nus iness\nĠre p\nt ings\nv ed\n. N\nap i\nO D\nĠf ield\niv en\not o\nâĢ ľ\nc ol\n( x\ng ht\nRes ult\nC ode\n. is\nl ink\nĠc our\nA n\nĠte am\nĉ int\nif t\nĠse cond\nĠgo ing\nĠr ange\n_ E\nn ess\nĠf am\nĠn il\nĠC ont\nail able\nut es\nat ab\nĠf act\nĠv is\n( &\nĠA N\nA l\nt itle\nĠand roid\nC E\n\\ \"\nir t\nĠw rit\nÐ ½\nĉ m\nft ware\non d\nĠre t\nos ition\nĠh ome\nĠle ft\narg s\nmer ic\nĠd irect\noc i\nP l\nA s\nre t\nad o\nO f\nch n\nĠG et\ne e\nro ss\n() ;\n__ __\n.p h\nI t\nout e\nĠex per\ncho ol\nww w\n} ,\nĠall ow\nĠ Â\n() )\ns ize\nis m\na i\ntr act\nan e\n.. .ĊĊ\ncont ext\nĠbe g\nC H\nĠp age\nh ip\nn o\nc ore\ns p\nĠdiffer ent\ni able\nĠM e\n_ IN\nb utton\nĠI s\nerv ices\nĠc a\nĠa round\nA pp\nr ation\nĠre ce\nĠre ally\nĠim age\nĠt arget\nĠde p\nopy right\ntr a\ning le\nit al\nL ayout\nĠbo th\nOver ride\nar m\n= >\nater ial\nile d\nĠp ut\nQ u\nÑ Ģ\nun g\nm ap\nĉĉĉĉ ĉĉĉĉ\nĠle vel\nCom ponent\nbo ok\ncre en\n_ RE\nĠcon fig\nã ģ\nO r\n. data\nĠd ocument\n\", \"\ntrib ute\nu x\nL og\nfer ence\np ost\n_ e\nĠloc al\nand om\nass ert\nV al\nlect ed\nin a\natab ase\nA dd\nĠcont ent\n.p rint\ns igned\nr ic\n.\" ĊĊ\nĠf a\n! ĊĊ\n- f\niv ed\nĠ quest\n. ex\nĠf loat\nĠde velop\nÐ¾ Ð\nM ap\nad ing\nĠpos s\nU E\nn amespace\n_ O\nĉ b\n.G et\n> (\nj son\netail s\nĠto o\nĠext ends\nĠN one\nĠf ore\n( String\nform at\nĠg reat\nint er\nca le\nÑ ģ\nr on\niv ing\nE nt\nenc y\nx t\no y\nĠmon th\nĠh app\nĠsup er\nb ar\ndef ault\n_ de\nord s\nl n\n( {Ċ\nĠI nd\nas es\nĠt itle\nĠcont ext\no h\n- p\nE m\nĠm et\nT est\nĠl ife\n_ v\nĠU S\nU I\noc ation\nm d\nĠ[ Ċ\nĠ ]\ns w\nĠin cre\ns cript\nent ial\nw ays\n. de\nĠs rc\nĠc atch\nĠA meric\n// Ċ\nĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠ\nĠp ay\npl it\nâĢ Ķ\nĠc oun\nob j\n.ph p\nĠch ange\neth ing\n' re\nast er\nlo s\nl ation\nĠĠ Ċ\nL e\nÃ ¤\n( {\nread y\nĠN o\nĠpos ition\nĠo ld\nĠbo ok\nable d\nb ug\nH and\n} ;ĊĊ\nis play\nav ing\nĠgo ver\nĠv ersion\nS ystem\nn ect\nres ponse\nSt yle\nU p\nang u\nĠth ree\nin it\ner o\nĠl aw\nend if\nĠb ase\nem ail\n( l\n_ V\nĠcon f\nAT E\nĠd uring\nt es\nĠcon sole\nĠP r\nĠs pe\nv es\np ath\nial og\nd ition\n_t o\nard s\nĠagain st\net work\nĠP h\n_ L\nc ur\nim it\nW ith\nĠp ower\ni um\n' ;ĊĊ\nĠw om\nle ft\nour ces\nat ri\nĠI m\nĠM an\nor th\n$ {\nqu als\nes e\n_s ize\nĠis s\not al\n- g\ni que\nr ame\nĠw idth\ner g\n) (\nitt le\nT R\nĠThe y\nenc es\nr l\non s\nĠl abel\n. y\n- t\nup date\nan el\ns c\n.t o\nĠpro ject\nÃ ¼\nĠe lement\nĠsu ccess\nĉĉ Ċ\n.s h\nr am\nch ed\n() )Ċ\nĠ( Ċ\nĠd ate\nĠto t\n_ ST\nA ll\nific ation\nĉ var\nĠt ri\nch em\nm y\nĠb ig\nĠA d\nĠA t\not s\nn um\nA ct\nĠm ap\ner a\nco pe\n. $\n, âĢĿ\nĠp op\nĠf ew\nĠl en\nu id\net ers\nu les\nÃ Ń\ns ource\nhttp s\nĠd em\nĠe ar\n######## ########\nĠm atch\nor ies\nac es\nĠC l\nĠn ode\nir c\nloc al\nun ity\n} ;Ċ\nĠan other\n< <\nog le\nĠs it\new ork\nT E\n. I\nN S\nolog y\nou ght\n.C ont\n> >\nĠc are\nst ate\nĉ private\nĠe ffect\n++ )\n_f ile\nend ing\nL ine\nF or\ni or\nĠS c\nĠf un\n.S ize\nĉ else\n] )\nst art\nv ious\nĠ} ,\nour s\nĠle g\nĠs ervice\nĠs ince\nir on\nL abel\nĠn on\nĠl os\nict ion\nĠf ull\nact er\nbo ard\ng ress\nĠt urn\nith er\n.s ize\nĠb ody\nres h\net urn\n( _\ny les\norm al\np i\nĠsom ething\n! --\nu int\nĠpro du\nĠst and\nĠpro ble\nĠav ailable\nm t\nĠB l\nĠ ...\nĠb lock\nIn put\nĠke ep\nC ount\nop en\nĠ[ '\nĠth row\nuild er\nA ction\nĠth ings\nTr ue\nĠ url\nĠB o\nprint f\nĠre d\nj s\n.c reate\nĠO r\nSt atus\nIn stance\nĠcont rol\nĠcom e\nĠc ustom\nloc ation\nm odel\nĠ čĊ\nĠs ource\nĠe as\n. out\n] ĊĊ\none y\nĠaw ait\nĠpart ic\nA P\nub lish\nod es\n_p ro\np ly\nrit er\nĠpro v\nĠm ill\nH T\n] )Ċ\nĠch ang\nĠas k\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠ\nĠout put\nĠem ail\n.p ush\nĠ} čĊčĊ\nin ation\natri x\nT able\nu ccess\n] );Ċ\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠdis c\n( [\nĠb usiness\nhe ight\n. html\nt a\nf ield\nĠrequire d\n_ R\nĠgover n\n} čĊčĊ\nle x\n. ,\nĠS et\nur ch\n// /\nt s\na f\nĠm ight\nist ory\nS tr\nĠne ver\nRes ponse\nar se\nad a\nĠH ow\nĠ* )\nĠ ;\nĠh ard\nA d\nĠinter n\nus ed\n( data\nm od\nann el\nĠn p\nug g\nĠ/ >Ċ\nĠcal led\nb ody\nĠch o\n( r\n_s et\nir d\nĠ> =\nĠ} ;Ċ\nĠo ptions\nĠG ener\nĠhe ight\nP oint\nY ou\net y\nC lick\nĠsm all\nĠ ide\nĠacc ess\nangu age\nĠprot ected\nĠj ob\nĠTh ere\nD ef\nĠadd ress\nĠu int\nN ot\no o\nap s\n< div\nain ed\nat ur\nĠs um\n- w\nĠD ate\nĠl ittle\nĠf ri\nY PE\nĠp ort\ne h\npr ing\n_p ath\nĠst atus\na im\nbo ol\nĠap pe\nĠo s\n. name\nens ion\n_ G\nĠup date\nCon fig\na ff\nER R\nĠ< =\nat ely\n# if\nu ction\nĠT e\nĠl ink\nĠU ser\n.f ind\n. org\nm e\nĠg iven\nO ut\n# endif\nĠbet ter\nP age\nĠfe el\nen n\nM L\nĠal ready\nĠinclud ing\no ogle\nr u\nic ally\npro p\nle an\nout er\nĠal ways\nord ing\nI f\nor age\nĠp arent\nv is\nĉĉĉĉ ĉĉĉ\nĠg ot\nst and\nĠle ss\n/ s\nĠA ss\nap t\nire d\nĠA dd\nĠacc ount\np loy\nĠd er\nres ent\nĠl ot\nĠval id\nĉ d\nĠb it\npon ents\nĠfollow ing\n_ ex\nS ON\nĠs ure\noc ial\nĠp rom\nert ies\nhe ader\n.p ro\nĠbo olean\nĠse arch\nk en\nĠor ig\nĠ er\nE d\nE M\na ut\nl ing\nal ity\nBy Id\nb ed\nĉc ase\neth er\npos it\nĠinv est\nĠO R\nĠs ays\nmiss ion\nAM E\nĠtem p\no ad\nĠre st\nin fo\nĠinter est\nA rg\nĠper form\npon s\nĠV iew\nĠv er\nl ib\n( const\nU til\nList ener\nar ge\nĠm ult\nĠd ie\nĠs ite\n../ ../\nE L\nĠval ues\nĠ} )Ċ\np en\nN o\nic ro\nĠbe h\nĠ' ./\nac y\nre c\n() ->\nĉ ĠĠĠ\n\" ))\nCont ent\n_ W\nple ment\nĠw on\nĠv ideo\nad i\np oint\n% %\nĠg l\nerv ed\nv iron\nI F\nut ed\nã ĥ\n' m\nĠc ert\nĠpro f\nĠc ell\nar i\nĠpl ayer\na is\nĠc ost\nĠh um\n( R\nĠoff ic\nk s\n.t ext\nat ures\nĠtot al\nĠ*/ ĊĊ\no pe\nĠst at\nU M\nĠlo ad\night s\nĠc lear\nu ro\nĠte chn\nup port\nI R\nĠ row\nĠse em\nĠ q\nĠsh ort\nĠN ot\nip p\nG roup\nse ction\nm ax\nir l\nĠover ride\nĠcom pany\nĠd one\n\" );čĊ\nĠg re\n. Re\nĠbel ie\nr ist\nĠhe alth\nAN T\n() ĊĊ\nĠB e\n. value\nĠG r\nott om\nĠarg s\nP T\nst atus\nf unc\num ents\n- h\nN umber\n: čĊ\nĠL og\ner ver\nĠ) ,Ċ\nam ent\nĠob j\nin c\nĠchild ren\nic y\nI Z\nand s\nab ly\nĠdist rib\nĠc ur\ner ial\nĠd ays\nre ated\nre ct\n- l\nir m\nidd en\nom b\nĠin itial\n.j s\nĠ â\nQu ery\nĠon line\nim al\n. con\na u\nU rl\ncont rol\nire ction\nĠin stance\nOR T\nĠF r\nwh ere\nĠjav ax\nĠorg an\nap ter\nĠre ason\no ptions\nĠM ar\n( a\nĠwith in\n.âĢĿ ĊĊ\nO DE\n_ DE\nad min\nend ed\nĠdes ign\nĠD ata\nun e\nĠF ile\nro ot\nĠc ent\nĠa rr\n_ add\nl en\np age\n, '\n_ str\nĠb ro\nab ility\nou th\n/ c\np ose\nirt ual\near ch\n_ url\narg in\nH ttp\nĠs chool\nav a\nĠcons ider\n.l abel\nĠA rray\nwe b\no pt\n.print ln\nul ation\nĠf unc\nP L\nĠ\" \\\nĠT ext\nact ory\n(f unction\nn ull\nĠen g\nd own\nĠin clude\nĠE n\nĠD r\nĠd b\n! !\ns ide\nĠin it\nquire d\nĠS he\nC olumn\nre act\nĠan n\nĠst op\nĠl ater\nĠTh at\nent ion\nd f\nU G\nI LE\nĠc lient\nra ft\nff er\nPO ST\nel per\nĠlo ve\nqu ote\nou d\nĠj son\nĠab le\nĠm en\nA X\nĠC opyright\nÃ ¶\nav ig\nre q\nC lient\n} );Ċ\n.C om\ner c\nil t\npec ial\n_c om\nro om\n. Name\nĠg ive\nam b\ni ke\nĠcon dition\ncl ient\nator s\n: \"\nĠc opy\nut ure\nivers ity\nern al\n{ {\nĠC an\nou nc\nd o\nĠo cc\nĠapp ro\nth ers\nz e\nĠe ither\nĠF l\nĠimport ant\nĠle ad\nat tr\nAR T\nE qual\nĠd a\net ch\nent ity\nĠfam ily\nadd ing\nĠo ption\nĠex ist\nic a\nĠO bject\n' ve\nv ers\nition al\nout put\nĠTr ue\nĠO F\n_t ime\nĠof fer\nĠ} );ĊĊ\nH ER\neg in\n\" \"\nĠw ater\nĠc he\nĠM y\nore d\nĠst ep\nanc es\nC K\nA Y\nà ¸\nstr uction\n( C\nou ch\nSt ream\nact ive\nam a\nEnt ity\npro duct\n() {Ċ\nĠgovern ment\nĠI D\naj or\nA nd\nĠdis play\nÐ »\nĠt imes\nĠf our\nĠf ar\nĠpres ent\nĠN S\nĠ\\ Ċ\nue st\nĠb as\ne cho\nch ild\nif ier\nHand ler\nĠl ib\nProp erty\ntrans lation\nĠro om\nĠon ce\nĠ[ ]\ncent er\n================ ================\nĠresult s\nĠcontin ue\nĠt alk\n_ get\nĠg row\n.s w\ne b\nĠP ublic\nO P\nec ute\nol s\nĠ **\n\" );ĊĊ\nĠm ass\nure d\n.c lass\nom ic\nĠme an\nip s\nĠa ut\n);čĊ čĊ\nĠun til\nĠmark et\nĠare a\nu it\nĠl ength\nĠW ith\nstruct or\ne vent\n\"> <\nĠS p\nI V\nĠm us\nif f\nĠk ind\na uthor\nound s\nm b\n_ key\nw idth\nposit ory\nĠl ight\nu k\nR ow\noh n\nal f\nviron ment\napp er\nollection s\nĠs ide\n_in fo\nĠex ample\nim ary\nĠw r\nĠc amp\ncri be\n\" /\nĠm iss\nw ay\nĠb ased\nĠpl an\nV is\nom ain\nun k\nĠaw ay\nU P\n< T\nO S\ni od\nĠM on\nâĢĻ re\nĠli k\nÃ §\niv ely\n. v\nim er\niz er\nS ub\nĠbut ton\nĠU p\nĠexper ience\nC L\nĠre nder\n_ value\nĠn ear\nUR L\nal t\nĠcoun try\nib ility\n() ,Ċ\ne ad\nĠa uthor\nĠspec ific\nb ase\n( name\non es\nĠD o\nĠal ong\ny ear\nĠexp ress\n. '\nen v\nĠbeg in\nĠso ftware\nĠim p\nĠw in\nÃ³ n\nĠth ing\nTr ans\nĠT HE\nĠ< ?\nĠwh y\nĠdoes n\ni j\ng ing\nĉ g\nĠs ingle\noff set\nar ning\nog raph\nle y\n_c ount\nĠan al\ncre ate\n/ m\nĠR eg\nun ch\n= $\nis k\nĠright s\n( M\nĠ\"\" \"Ċ\nap er\n.m odel\nĠp o\nem pty\nart ment\nĠa nt\nĠWh en\nĠwom en\nĠE d\nĠse ason\nĠde st\nÃ £\n( h\nĠposs ible\nĠse ver\nĠb tn\nĠdid n\nĠs ent\nĠen c\nĠcomm and\nĠ ],Ċ\n_ x\nĠre cent\nol ution\nv ector\nĠB y\nĠM ay\nĠA ct\n» ¿\nĠm oney\nIN T\nbs ite\nĉ p\n. čĊ\nï »¿\ns l\natter n\nĠC lass\nĠto ld\nud io\nc urrent\nĠe qu\nĠa uto\nĠSt ate\nd a\nms g\n)) ;ĊĊ\nĠwork ing\nĠqu ery\nĠB r\nĠw indow\na uth\non ly\nĉ t\nĠle ast\nag n\nĠex pl\nit ter\nar ing\nĠc olumn\nĠGener al\n\": \"\ner al\nri or\nĠrec ord\nI B\nE X\nĠd at\nĠm aking\nu ed\nĠC ar\nem p\n\" .\nĠM ed\nĠc lose\nĠper cent\nĠp ast\n( g\n: (\nĠw rite\nĠm ove\nĠp at\nCont rol\n.T o\nĠv i\n*/ Ċ\nin ate\n' ll\nag ed\nN ull\nĠspec ial\nIZ E\nĠc ity\n/* Ċ\nĠE ng\nix ed\nin ary\np y\nĠe ff\nar io\nĠt ell\nav or\nĠse lect\nle vel\nim um\nop er\nB uilder\nI P\n') ,Ċ\nes c\nĠf ont\n\" ;ĊĊ\nĠA m\nish ed\nill s\nInt er\nO W\nĠcour se\nĠl ate\nidd le\nĠam ount\nĠas ync\nin o\nc ul\nĠ ì\nand le\n_ user\nĠb en\nĠC al\nĠ$ _\nĠR ep\nĠen ough\nT oken\n. user\n( j\nS c\nW idth\nn ow\nat form\nĠlook ing\nĠh old\nM odule\nIT Y\nv o\nis on\n.D ata\ny c\nĠp ot\nĠTr ump\nid ual\nid es\nr t\nĠprop erty\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠ\nam ework\ng o\nĠl ow\nĠpar a\nĠpr ice\nur y\nĠto day\nro y\nĠ' /\nĠpol it\nĠ' '\nym b\nP h\nĠad v\nĠatt ack\nĠS te\nRO M\nan a\nĠme ans\nĠst ory\nid s\nak en\nĠme et\nĠm om\nĠâĢ ĺ\nĠ? >\nĠd en\nob ile\nch ange\nĠĠĠĠĠĠĠĠ ĠĠĠĠĊ\nic i\nn a\nĠF orm\nĠs ort\nSe lect\np are\nĠth ought\n_ con\nĠt ask\noc us\nĠD E\nĠM in\nĠo pt\nĉb reak\num er\nK E\nth en\nĠd et\nĠT est\nport s\nĠre view\n(' /\nm ove\nĠsw itch\nER T\np atch\nann ot\nã Ĥ\nĠab ove\nit ive\nĠquest ion\nĠQ u\nãĢĤ ĊĊ\ng le\nĠw ord\nĠprov ide\nĠR eturn\nĠre search\nÃ£ o\nu str\nĠp ublish\nchem a\n} }\nĠC ON\n- in\nall back\nĠco ver\n\\ \\\nc olor\nĠI S\nĠwh ether\nim ate\nis c\nB ar\nĠd iv\nB e\nour n\nĠh aving\nle m\npl ayer\nab s\nam era\nne y\nĠex c\nget her\npl ied\na o\n[ $\nĠ+ +\ni pe\nsh ow\n/ d\n[ :\nag ement\nle v\n_ ID\nr ary\nad es\n_ se\na use\nĠem ploy\nĠ*/ čĊ\nĠf re\nĠ' @\nĠcomple t\nĠl arge\nr al\n\\ x\nĠf ac\n< String\nĠcre ated\nup er\n.st ate\nĠh ost\nener ic\n/ b\n( !\nwh ile\ni as\nB UG\nĠ );ĊĊ\nĠro le\nRe g\nĠC olor\nSt art\nĠp orn\nt op\nĠwe b\nĠde v\nĠde al\n++ )Ċ\nInt eger\npos ition\n. on\nĠ( \"\nä ¸\nĠproble m\ns v\nĠp ress\nAB LE\nAT ION\nĠSe e\nan ch\nĠth ough\nle ep\nĠ< !--\nĠpoint s\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠ\n. J\nĠ ::\np tr\nD B\n++ ;Ċ\n.p ng\nn ode\nso ft\npon d\nĠe ver\n-------------------------------- --------------------------------\nM enu\n(' #\nĠs ervices\np g\n} )Ċ\nparam s\nĠact ually\nĠ\" /\nEm pty\nM ethod\nĠid ent\nun ic\nĠmill ion\nĠa ff\nst yle\nĠcon c\ni os\nign ment\nUL T\nP r\n\" ;čĊ\nĠunder stand\nu ary\nĠhapp en\nĠser ver\nĠC o\nS C\nĠle s\nĠfile s\nG rid\ns ql\nĠof ten\nĠin fo\n_ tr\ns rc\non y\nĠsp ace\num b\nĠpass word\nĠst ore\n, ĊĊ\nĠWh at\ng ed\nĠF alse\nU s\nsw er\n_ index\nĠform at\nm ost\ns m\nN ew\nĠd etails\nĠpro b\nĠAN D\n() čĊ\nil ar\nĠ$ {\nry pt\n.C ollections\n$ this\nĠF ree\n_ of\n(f alse\nd ated\nĠ> >\nĠf ace\nCT ION\nĠs ave\nĠt yp\nde v\n(\" #\nAG E\ncont ainer\ned it\nQ L\nĠitem s\nĠs ocial\ni en\nĠRe act\n) .ĊĊ\nĠm ar\nĠre du\nĠR E\n.p ut\nĠm ajor\nC ell\nn ext\nĠexpect ed\nĠy et\nĠin div\ntrib utes\nat is\nam ed\nĠf ood\nS ource\n( string\nĠ+ Ċ\nit es\nd r\nĠmem bers\nĠcom b\nitem s\nĠP er\nT H\n= True\nĠb ar\n_ SE\ncom m\n( w\n)ĊĊ Ċ\nĠs end\nĠin c\nun signed\nF A\nĠparam s\napp ing\nro s\nug in\nf a\nĠcon nection\nĠ} ;ĊĊ\nĠbe come\nM ode\nĠe v\nĠdif f\nĠUn ited\nHe ight\nful ly\nim ages\nĠm akes\nĠg lobal\nĠcont act\n' :Ċ\nĠab s\nÐ° Ð\nf loat\nĠex cept\nĠP ol\nCh ild\nt yp\nĠcert ain\ni Ã³n\nO UT\nĠim pro\nile s\nĠ-- >Ċ\nĠP art\nval ues\nos s\n/ **\nil it\nĠE vent\ncur ity\nst er\nĠchar acter\nĠnew s\nĠ\" ,\nĠde vice\nc el\nlog in\nhe et\nDef ault\n@ \"\nĉ Ġ\nc lick\n( value\nĠA b\nĠpre vious\nERR OR\noc al\nĠm aterial\nĠbel ow\nĠCh rist\nĠmed ia\nco ver\nĠU I\nĠf ail\nĠbl ack\nĠcom ponent\nĠAmeric an\nĠadd ed\nĠbu y\nst it\nĠc ame\nĠde lete\nprop erty\nod ing\nĠc ard\nrop s\nĠhttp s\nĠro ot\nĠhand le\nC C\nB ack\nem plate\nĠget ting\n_b y\nm ail\n_s h\n. assert\nĠD ec\n( true\nĠcom put\nĠcl aim\n' =>\nĠS ub\nĠa ir\nop s\nn av\nem ents\n( id\nĠent er\nang ed\nE nd\nĠloc ation\nĠn ight\nĠdo ing\nĠR ed\nl in\n}ĊĊ Ċ\nvid er\nĠp ick\nĠw atch\ness ages\nĠhum an\nĠd am\np end\nd ir\nĠt ax\nĠg irl\nre et\nĠbo x\nĠstr ong\n( v\nre l\nĠinter face\nĠm sg\nf ect\n_ at\nĠh ouse\nĠtr ack\n' );ĊĊ\nj e\nĠJ ohn\nist r\n( S\nub e\nĠc e\nitt ed\nV ER\n* )\np arent\nĠapp lication\nan y\n.sw ing\nĠp ack\n\\ u\nĠpr act\nĠse ction\nct x\nĠun signed\n.P oint\nĠO ne\nÄ ±\nip le\na id\nÑ ĥ\nV ector\nby te\nĠw ait\nĠÃ ł\nÃ ¥\nĠto gether\nĠth rows\nF O\n' ))\nh ost\nis ing\n. view\nĠter ms\nfr amework\n- r\nĠapp ly\nĠs ession\nO ptions\nugg est\nĠo thers\nw itter\nĠf und\nIn it\n__ (\nens or\nG ET\nĠsever al\ni i\n[ j\nI O\nĠtem plate\nP osition\nĠe con\nach ine\nĠ il\n.s pring\nm ain\nel t\nim ent\nRe c\nm m\nĠUn iversity\nurs or\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠ\nG L\nict ure\nith ub\nc er\nc ast\nF rom\na les\nĠsub ject\np assword\nn y\nĠes c\n.w rite\nï¼ Į\nWh at\n. H\nĠh istory\nĠF e\nĠindiv idual\nun it\nĠ-- >\nĠd u\nI ST\nĠus ers\nf s\nf alse\nun t\nT itle\nĠm ot\nĠf uture\nach ed\nĠstart ed\nĠm ode\nĠ' <\n_ array\nĠa x\n'] ;Ċ\ni res\nTh ere\nug ht\nt ml\npos ed\nic ult\nĠto ok\nĠg ames\nĠ} }\nĠ? >Ċ\nĠproduct s\nI s\nĠb ad\nĠD es\n.p ath\n' ĊĊ\nĠP ost\nav el\n( :\nĠneed s\nĠkn own\nF l\nĠex ec\nĠse en\num e\nĠb order\nĠl ive\ntem p\nP er\nĠvar iable\ni et\nĠD ef\nĠg e\nem e\n_b ack\nf irst\nĠprovid ed\n//////////////// ////////////////\nĠfil ename\nĠh ope\nul y\na uto\nf ind\n_ string\nb tn\nit ude\nAt tribute\nĠyou ng\n.t xt\nĠwe bsite\nĠP rop\nĠe y\n> ();Ċ\nion al\nAR R\niction ary\nur ther\n. </\nAL L\nĠstud y\nil i\nĠn etwork\ny l\nist ance\nO K\nN U\nre st\nĠS T\nicro soft\nĠl imit\nĠc ut\n() :Ċ\nĠc ou\nog n\nĠsize of\niv al\nĠw ent\n. z\nL ink\nĠf ire\nĠac ross\nĠcomm unity\nreg ion\nN E\nRe f\nĠoffic ial\nĠvis it\nol ve\nĠrece ived\nĠto ken\nĠmonth s\nĠan im\nĠpartic ular\nst yles\nic o\nĠ ess\n.Cont rol\nĠ Ã©\nb all\nĠle arn\nind ing\nV ar\nĠde cl\n( err\nLE CT\nO ne\nph a\nĠ ~\nf ort\nas ure\nĠm ind\nĠE nd\nC heck\nĠqu ick\n\" ),\nAN D\nut ions\nB ase\n____ ____\nĠcom ment\nIN E\nâĢĻ ve\nB ut\nĠE l\nĠU s\nĠad min\nm ark\nĠN ame\n` Ċ\nĠT ype\nam ic\np c\nlo or\nF T\nĠo pp\nck et\n) ->\nt x\nĠp ur\nu el\nymb ol\nu ation\nang er\nĠback ground\nec ess\nef ined\n.... ....\nĠdes cription\nĠrep resent\n\") );Ċ\npress ion\nrow ser\nĠser ies\nward s\n($ _\na ise\nĠh ot\nac ity\nri es\naction s\nC reate\nad io\namp les\nĠorig inal\nens ive\nf ont\nst ream\nï»¿ using\n.spring framework\nser ver\nĠb ill\nAC K\nil ename\nĠfr ame\nĠ= Ċ\nEd it\nadi us\nĠd raw\nank s\nĠd eter\nĠcom es\n_ int\nĠfore ach\nang le\nĠe lect\npect ed\nHe ader\nist ration\nF alse\nĠG ame\nĠfil ter\nAct ivity\nĠl arg\nin ition\nĠ\" <\nis ed\nĠrem ove\nĠTr ans\nm et\nse e\nForm at\nCom mand\nĠE X\nN one\nĠfr ont\nA SE\nĠR ec\nound ation\nĠv o\n= \\\"\n( *\nCh ange\n.W rite\ng roup\ni ents\nu y\n******************************** ********************************\nĠd ig\nh r\n( -\nĠg en\nn umber\nve c\nuro pe\nent ry\nL L\nĠst e\nVal id\n'] ,\n_p aram\nĠse lected\nĠacc ording\nĠD is\nĠ util\nB uffer\n_ error\nĠass oci\n_S IZE\nĠw or\nĠprint f\nr ag\nÂ ł\nD D\nĠV al\nĠact iv\nE ng\net ime\nĠv irtual\na ign\na ur\nĠP res\nĠEx ception\nĠany thing\nĠO ff\nĠh ours\nĠw ar\nArg s\nag ing\nĠmodel s\nĠT ime\nO b\nam s\nj oy\nĠear ly\n. read\nĠc enter\nĠIn itial\nĠl anguage\nl ength\nx y\nĠs n\nĠin f\nP ost\nĠag o\nĠeas y\n_c ode\nĠAN Y\n_ ch\nĠdown load\n( T\nav ed\nâĢ ĵ\nĠstud ents\nĠf ig\nl ight\nx x\nĠbu ffer\nĠD ep\nĠM ath\nIT H\nĠvar i\nĠd ue\nF actory\nĠp or\nĠe p\not ype\nĠcan not\nĠwh ite\n< int\nter n\nĠreg ister\nĠpre d\ncl us\n_d ate\nĠ/ **\nĠa uth\nĠ[ ]Ċ\nĠper iod\nn own\nĠv ot\nĠs creen\n' d\nT ypes\nĠt mp\nÐµ Ð\nur al\nĠben ef\n_ y\nĠn et\nĠSt ates\n'] ['\nĠN e\nĠN OT\nĠn eg\nĠcomm on\ns cope\nĠc red\ng es\n_T YPE\nĠs uggest\no om\n.ĊĊ Ċ\nĠac cept\nĠr andom\ner m\nĠV ector\nw ith\nT ER\n( str\nĠres pons\nĠh it\n.S et\ngr id\nri a\nĠc lick\nund le\nC ase\nins ert\nUtil s\nĠ\"\" \"\nĠim plement\nat al\ntem pt\ntem plate\noc r\nreturn s\nĠplay ers\nus ers\ned ef\nĠTh ese\nĠam ong\nĠde b\nh a\n.get Element\nĠc irc\nĠan swer\nĠw alk\nĠt reat\nĠG e\nĠC reate\nĠa ge\nĠre q\nO ST\nang ular\nÑ ı\nĠf ive\nĠdistrib uted\nĠfri end\nT P\nĠc lean\now s\n.Control s\nd is\nĠw ords\n. io\nz y\nĠhe ader\nĠC heck\nâĢĻ m\nj ust\nh older\n=\" <?\nĠG NU\nĠC ol\nim est\nent ic\n{ ĊĊ\nĠt re\nl ast\nl a\nĠY ork\nL o\nĠdisc uss\nĠG od\nĠiss ue\nre w\nW indow\nĠl and\nĠst ream\nĠP ar\nĠqu ality\nP ar\n_n um\nĠs al\nel ves\nOR D\n( user\nĠwork s\nĠh alf\nens es\nv as\nĠpol ice\n(\" /\nu a\nĠsim ple\nAdd ress\nĠem pty\nes h\nUp date\nĠC reated\n(' .\n). Ċ\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠ\nĠag re\nĠF ROM\nĠco ok\nĠevery thing\nil ities\n.st atus\nĠrel ations\next ern\nĠno thing\nĠrun ning\nĉ void\nR I\n_ a\n_C ON\np or\n.s ub\nre quire\nĠC ity\nĠW est\nĠm or\nst ore\nE quals\nod er\nĠn a\nĠ[ [\nĠ( '\nĠD on\nER S\n/ p\n.j son\nab or\nĠsome one\n_t ext\n.c ss\n.T ab\nĠS ome\nat o\nd ouble\nĠsh are\n( void\n_d ir\nĠ ur\nSt ack\nĠW orld\n. X\nstr act\nH ow\n.G eneric\nic les\nĠent ry\nĠchang es\nĠperson al\n( A\nĠoff set\n_p tr\nĠp ie\nĠJ an\n-g roup\nm odule\nItem s\nĠHow ever\nver age\n.F ont\nĠevent s\n.m in\nĠinv ol\nz a\nĠwho le\nĠneed ed\nĠlik ely\nri ef\nOR M\nv ersion\nĠf ight\nĠe in\nF rame\ng en\nĠO ut\navig ation\nL ength\nil led\nqu ence\nĠ! ==\nĠSo ftware\nĠwrit ing\nĠr ate\n'] ,Ċ\nP anel\nin ner\nĠ[ \"\nĠt w\nc d\nĠ ;Ċ\n_st ate\nĠS m\nĠM ark\n)) ĊĊ\npro t\nĠM r\nm ethod\nustom er\nI con\nĠcor rect\n( object\nĠM ore\nĠf all\nĠv ol\nĠdevelop ment\nent ly\nĠs i\nmed i\nv ing\nP P\nak er\nĠin du\nĠel if\nĠpre t\nĠbelie ve\nn s\nom et\nĠInt ern\nR ect\nS o\n. error\nRe ad\nĠfe atures\nĠmin utes\n-- -\nas ing\ncre t\n\"> čĊ\n. annot\nĠcol lection\n' .\nĠsim ilar\nĠt aken\n(\" %\nOr der\n'] Ċ\n-m d\nĠT H\nac ed\nĠis n\n/ j\nĠs on\ngr aph\nĠInt eger\nĠn ecess\nre en\nĠ um\nĠ\\ <\nĠmom ent\nĠbr ing\nĠind ic\nys is\nLe vel\nver se\nurre nc\n_t est\nĠent ire\nD own\nĠ}ĊĊ Ċ\n( result\nĠRe ad\nÃ ¨\nM od\nĠtry ing\n\") ,Ċ\nĠm ember\nĠC or\nOD O\n- control\nun time\nĠS im\nD ialog\npl ot\n_ on\nĠph ys\n} /\nĠn amespace\nĉ čĊ\nac c\nPl ayer\nA RE\nĠf oot\nĠbo ard\np art\nĠs us\nw ise\nĠM c\nĠp ush\nAT A\nĠp lease\nri ed\nwe et\nb it\nid ed\nV E\nĠS w\nU B\nĠt ypes\ned ia\nĠc los\nace book\nWh en\nĠed it\nig ger\nĠen erg\nCont ainer\nĠph ot\nĠC ount\nĠE urope\n.I s\nĠR uss\npe ed\nĠS tr\nĠp y\nĠc ult\nĠdef ined\ncc ount\nĠob t\n.L ocation\nĠth read\nil le\nĠinst ead\nstr ong\nĠS ec\nU RE\nĠide a\n. se\nem y\nselect ed\nCon nection\nac ing\nth read\n.n ext\nĠc oll\nĠfil m\nist ic\nĠcomp et\nĠcon n\nth ough\nĠcom pan\nock et\nĠte ach\n= (\nĠph one\nĠact ive\nde lete\ntr ies\nĠm o\nĠde ath\n} );ĊĊ\noc ol\nW idget\nĠart icle\nro du\nand id\nÑ ĭ\nĠC r\nk a\n() :\nlo od\nĉĉĉ Ċ\nĠal most\nĠs ell\nerv let\nri p\nUn it\nĠapp lic\nĠcon nect\nĠfe ature\nĠv ia\n' ),\nĠl im\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠG u\nEng ine\nĠen s\nĠen vironment\nb lock\nHER E\nN ULL\ng y\nt ag\n) ).\nex p\nĠcom pl\nĠinst all\nĠcomple te\nque ue\natur al\nĠgener al\nth on\nĠask ed\no res\n( res\nĠres erved\nS P\nĠâĢ ¦\nÅ Ĥ\nĠsign ific\nO ff\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠA g\nĠJ ust\nĠE rror\nĠin fl\nad ata\nĠ icon\nask s\n' '\n_ LO\n? .\nac count\nĠ( *\n' )ĊĊ\nr ap\n_ var\nĠF OR\nĠpart y\nĠY our\nc at\nstr y\n. new\nbo ot\nĠN ov\nĠv ector\nĠn ormal\nĠf urther\nRe pository\nĠd atabase\natt le\nĠmus ic\nĠspe ed\nĠd oc\npro cess\nIG HT\n.p arse\nĠt aking\nĠvi ol\nce ed\nĠA fter\nĠfor ward\nĠc rit\n\"/ >Ċ\nro t\nĠfa iled\nef ore\nĠconc ern\no e\nb a\nĠs ender\nĠter m\nh as\n=\" #\nĠpot ential\nN um\nĠpublish ed\n.c lose\nĠIm age\nstr aint\nU D\nĠO b\nĠprob ably\nl im\n\" :Ċ\nolum e\nĠcon sum\nag ue\nens ions\nĠinvest ig\n- year\n') ;\n-s m\nĠen joy\nor ig\ner ing\nc p\nle ased\nple ments\nĠreturn s\np at\nB O\nĠH ouse\n.L abel\nĠwe ight\nigh b\nĠcondition s\nĠex ception\nd escription\nĠtr ad\n- to\nĠ{ }\nĠmod ule\nEN D\n. ap\n.p rops\nĠcon structor\nav es\nĠf avor\nĠN ow\n; i\nĠM ain\n_ k\ner ies\nâĢĻ ll\ntrans form\nimest amp\nP re\nĠm er\n. res\nst ant\nL ocation\n_N AME\nĠlos s\nĠ ĊĊ\nn et\nĠeng ine\nB lock\nĠiss ues\nĠpar se\nĠB ar\nĠst ay\nĠJ SON\nĠd om\nair s\nw ner\nĠl ower\n\", čĊ\nĠD em\nuf act\nĠp s\nĠper fect\nR L\nĠed uc\nl s\nem ory\nARR ANT\nu ge\nĠex act\n. key\nal led\ne ch\nie f\n\\ /\no ke\nĠfor mer\nal loc\nĠs ix\nid a\nĠm argin\nĠhe art\nal d\np ack\n.getElement ById\nĠW ARRANT\nĠr ather\nĠbuild ing\ner man\nlic e\nĠquest ions\niz es\nle ge\nirect ory\nĠj e\nĠc as\npro ps\nut f\nĠse curity\nĠhow ever\nwe ight\nĠins ide\nĠpres ident\nCh ar\nĠW ITH\n.m ap\nĠgr aph\nĠt ag\n_st atus\nĠat tempt\nop p\nus es\nĉ const\nĠr ound\n, $\nĠfri ends\nEm ail\n? >\nRes ource\nKE Y\nos p\n. query\nĠN orth\nable s\nist rib\n_c lass\nel lo\nTh at\nÐ º\npecial ly\nĠPres ident\nĠcamp aign\nĠal t\nare a\nĠch all\nĠop port\n.C on\nĠenerg y\nli ke\n. string\ning ton\n) *\ny y\nĠprof ession\nir th\nĠse g\næ ľ\nĠh or\ni ers\nc an\nĠbeh ind\nPro duct\nf g\nĠS k\n.j pg\n? :\n] ;ĊĊ\nĠcall back\nĠH ttp\nÑ Į\nl ong\nM S\nAT H\nĠr aise\nĠwant ed\nrow n\nut or\nl t\n] =\nel ine\nM A\nĠse par\nc s\nse mb\nD is\nbs erv\nĠW ill\nĠpol icy\nĠth ird\nph one\nĠb ed\n/ g\n. __\nĠIn c\niz ing\n.re move\nin stance\n.t ype\nĠs erv\nE ach\nĠh ar\nĠM essage\n( key\nSE LECT\nP os\n)) ;čĊ\nĠre comm\nĠtr aining\nĠE nt\nĠCh ar\nic ht\n(f ile\nĠp rior\nG ame\nĠex it\nParam s\n.c ore\nP C\nn es\nanc ed\n( request\nP assword\n} >Ċ\nĠm ag\nĠre lease\nĠsh all\nud ent\nĠS outh\nand o\n: '\n.Tab Index\ns k\nann er\nis set\nĠout side\nled ge\nĠ å\nĠR ob\nĠim m\n! Ċ\nĠWe b\nD es\nB C\nanc ial\nR oute\nD ec\nfer ences\nĠp urch\nĠM odel\nct or\ng n\n_st art\n_ un\n. *\nis es\nĠg round\nĠun ique\nĠbe aut\n{ \"\nĠp our\nĠO ct\nĠt ree\nset s\n_ res\n') ->\n_re g\n(\" \\\nĠby te\nB l\nĠd ating\nĠm atter\nĠR em\nĠ' ../\nĠA ug\nĠL a\nĠ$ (\nourn al\ni am\nĠshow s\nw rite\nĠb all\nĠsim ply\nĠf ast\nĠmem ory\nA SS\nĠO f\nov ed\nant e\na ul\nist ry\n)) );Ċ\nĠf it\n< string\nĠpolit ical\nanc el\n_ .\nc ard\n.c urrent\no ch\n_ image\n\\ t\n# Ċ\n( L\nĠindu stry\ncom ing\nĠex tra\nĠreport ed\n.st art\nĠres ources\nĠim g\nfl ow\n_E X\n(n ull\nĠP re\nĠwr ong\ninter face\nParam eter\nn ers\ná »\nt ure\ners ist\noun try\nĠseem s\nal ance\nde st\nĉ String\nĠm aint\nĠun it\nact ers\nĠT R\nif ul\nexport s\npro ject\nApp lication\nleg ate\nĠt akes\nter m\nĠet c\nust er\nĠappe ar\nadd ress\nĠf em\nh s\nĠh om\n, -\nĠdiff icult\nĠcom ing\nO pen\nĠset tings\nĠW ar\nĠTh en\nĠaut om\nĠF oundation\nĠqu ite\nD escription\nĠb log\ni qu\nP S\n_f ield\nJ son\nSS ION\nĠS ch\nĠL O\nĠdes cri\nĠevery one\nĠpret ty\nĠlong er\nĠm enu\nĠcurrent ly\nse c\nĠrelations hip\n################ ################\nĠM ap\nas et\nĠparam eters\nĠcr ush\n\" čĊ\nIL ITY\nig ration\nĠc out\nt otal\nĠn ames\nnd ef\n\") ;\nri end\nyn amic\nĠeff ort\nĠact ual\nĠfield s\nO UN\nt ers\nĠf ix\n_m odel\nĠc ases\nC A\nM y\nInter face\nĠS E\n] ]\nal le\nĠN ational\nĠArray List\nin line\n. V\nar a\nref ix\nas c\nRe ader\nĠÐ ¿\nast ic\n( ()\nC l\n.annot ation\nĠperform ance\nail y\n.to String\n.n et\nview s\n. end\nay ers\nl ate\nĠA pr\ned eral\n'] )\n.b ody\nĠhigh er\n_f l\nc r\nal ert\n_n ode\nĠG oogle\nĠit self\nA uth\nurrenc y\nĠsignific ant\napp end\nĠres pect\nstr ap\nĠun a\nriter ia\nP ORT\n.ap ache\nOut put\nĠpro gress\nĠm id\nĠM icrosoft\nĠres ource\nab lish\nĠd im\n. load\n.A pp\nĠd irection\nĠadd itional\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠ\nĠnum bers\nĠcompan ies\n.T h\nĠs ound\nuser name\nĠstat ement\nĠal ert\nĠcon tract\nh ome\n_l ength\n.Com ponent\ne v\n. Ex\nï¼ ļ\n\" ;\nĠH igh\nĠ )ĊĊ\nĠP oint\nop h\nĠl ines\n-> _\n\" )ĊĊ\no x\napp lication\nĠ ]Ċ\nĊĊĊĊ ĊĊ\nĠso on\nction s\ning er\nĠj oin\nĠP e\nĠ ë\nĠl as\n. E\nc ss\n/ or\nĠSt art\nĠT O\nĠsub s\ncon n\ncom ponents\nDE BUG\nqu are\nF unction\nend ar\n. index\nĠf ill\nÄ Ļ\nĠcho ose\nh ow\nĠAmeric a\nass ets\n-------- ----\nĠV alue\nĠoff ice\nĠv eh\nĠtrans form\nĠAr t\nĠin de\nĠf n\nĠim plements\nang o\nple te\n+ \"\nt mp\nam ily\nĠhas h\nmiss ions\nE ST\ng t\nPro vider\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠ\nĠfl ag\nĠpartic ip\nd en\nĠReturn s\nĠnot e\nÃ¼ r\np m\nide os\nĠspec ified\nĠE N\nest er\nol id\nĠup on\n( std\nĉ v\nĠ' \\\nu z\nĠv ert\nĠv ict\nĉ self\nĠ\" $\n. k\nĠgroup s\ng ithub\nl ang\nĠm ut\nT O\nĠv e\nĠP lease\n;ĊĊ Ċ\nac cess\nĠ{ \"\nre a\nĠr isk\nick er\nog gle\nĉ while\nAN G\n.s end\nĠwom an\nĠget s\nĠ ign\nĠI d\n_ log\nON E\nĠe vid\nĠH ar\n_s ub\nĠend l\nĠinclud ed\n() );ĊĊ\nĠA p\nig r\nĠs em\nĠBl ack\nd oc\n_t able\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n- up\nĠca use\nĠ ..\nĠv an\n_d ict\nĠf ocus\nIN D\nCE SS\n.L og\nĠmult iple\nid o\nĠreg ard\n- M\nand ler\nour se\nĠde g\n. U\nĠadd ition\nĠvar ious\nĠrece ive\nÐµ Ð½\nĠH T\nOb j\nD F\nĠincre ase\nĠO pen\n] ;\nĠcomm it\n? Ċ\nateg ories\nat ory\nsh ip\nĠM ich\nĠh tml\nrom ise\nĠle ave\nĠstr ateg\nav en\nĠCon sole\nk nown\n- n\n_ LE\n.com ponent\nĠb re\nS ession\ni ance\nĠal ign\ntyp edef\n_ result\nĠW HERE\n.s plit\nĠread ing\nFA ULT\nĠc lo\nĠnot ice\n_p r\nar ter\nĠlo ck\nĠstand ard\net ic\nell ow\nĠp adding\nĠH is\nĠst ates\n_c ast\n( P\na a\nĠintern al\ne an\nĠP RO\nĠK ey\nĠes pecially\nm ing\nĠc ross\nĠn ational\n_ object\nf ilter\nĠs cript\n. update\n_ i\nĠAss ert\n/ core\n%% %%\nĠproble ms\nist or\nĠ. =\nĠar ch\nĠwrit ten\nĠm ilit\nM ENT\n. ch\nca pe\nĠM us\n_ config\nĠA PI\nfo ot\nĠim ages\nend l\n. In\nF irst\nĠpl atform\n.pro t\nO ption\nst e\nĠT ODO\nĠfor ce\n. cont\nĉ echo\nĠD av\nP tr\n( B\nR T\nĠB ase\n] ['\nĠann ounc\ncon sole\nĠP y\nd s\n. as\nĠpre vent\nap an\nĠ{ '\n} </\nĠS ervice\nĠS en\nad or\npro file\nT op\nĠit er\np o\nI ES\nJ SON\nI E\ni ant\nãĢ ģ\n_ j\nĠSe pt\n_m ap\nb um\n( context\nĠH ome\ni ans\nG B\nĠl iving\nĠp attern\n( input\nic ient\nC ore\nĠent ity\nĠint eg\nCh anged\nĠuse ful\n.in fo\nĠto ol\n( item\nĠo k\nĠfe ed\nI X\nÃ© s\nĠNew s\nrem ove\nerr y\nĉĉĉĉ ĉĉĉĉĉ\nip ment\na res\nD o\nC urrent\n. content\n.G roup\nustr al\nĠ Ñģ\n} )\nĠpop ular\nĠst re\nĠmethod s\n_ ERROR\nLe ft\nc al\nbs p\n.To String\nĠd ir\nĠallow ed\nĠimp act\n\") ]Ċ\n. config\nĠelement s\nĠpro te\nĠtr ain\n. tr\nr s\nĠRep ublic\nĠT ask\nar ies\n( D\n( get\nâĢ¦ ĊĊ\nĠrel ated\nĠv ers\nĠs il\nĠ\" \";Ċ\nĠc md\nĠtechn ology\n.w idth\nF loat\nĠU se\nB ody\nsh ould\n.j oin\nF ont\nll um\nyc le\nĠB rit\nĠm it\nĠs cale\nĠ( _\nern el\n\") )Ċ\nĠsc ore\n/ v\nĠstud ent\nU C\n.sh ow\nĠa verage\nEn abled\n( ex\ncom mon\nim ation\n: @\"\nch ie\nĠ ...ĊĊ\nr iver\nĠM arch\nc ategory\nf in\nĠcour t\nÐ ²\nS erver\nĠcont ainer\n- st\n_f or\nĠpart s\nĠdec ision\nob s\nou b\nm itted\nĠ$ ('#\nĠs aw\nĠappro ach\nIC E\nĠsay ing\nĠany one\nm eta\nS D\nĠs ong\nd isplay\nO per\nout es\nĠch annel\nĠchang ed\nÃ ª\nĠfin ally\n_n umber\nP lease\nà ¤\nor ing\n- re\nĠk ill\nĠdr ug\nw indow\nĠcon vert\nomb re\nĠw ays\nH elper\nĠF irst\n( __\nur ity\nĠW indows\ne es\nĠm at\nr apper\nĠpl us\nang es\n\" ].\naz on\n/ t\nl at\nast e\nĠpro file\nĠread y\n#if ndef\nro te\nĠs ense\nG ener\nĠCon fig\nom y\nĠJ une\nĠlate st\nĠsa f\nĠreg ion\nĠde ep\nw itch\nĠP ark\n} `\nĠF rom\nI I\nĠc v\nĠre ach\nĠcount er\nĠW ork\nĠU RL\nĠUp date\n', čĊ\nĠim medi\nc lose\nad os\nfer red\nĠweek s\nur g\nĠdam age\nĠl ost\nan i\n_ lo\nĠhim self\nĠd og\n) ]Ċ\nï ¿\np ir\nt t\nĠp aper\nĠthe ms\nse cond\nĠst aff\nĠIn put\n\" +\nĠF acebook\nĠal loc\nĠs ched\nAC E\nĠthems elves\nĠCom ponent\nĠdr iver\nj a\n(p ath\nĠc ategory\nall s\np u\nllum inate\nĠA ction\n.b utton\nĠG L\nist ics\nĠo il\nĠst ock\n> '\nĠde ad\nV AL\nQ UE\n**************************************************************** ********\nĠch arg\nR eturn\nĠf ul\nd om\nĠr ules\nĠmod ify\nĠe val\nh am\nat ement\n\\ <\nul a\n= False\nR A\nĠcont ains\nĠst ack\nm ar\nĠ{ }Ċ\nĠund efined\nA ss\nĠCh ina\nve y\n* Ċ\nĠplay ing\n) /\nact or\nĠb ottom\nli er\nĠN umber\nĠcou ple\nD C\nĠS O\ng or\n.set Text\ns uccess\ncom mand\nF ilter\nĠO ur\n_ item\nĠc tx\nĠro ad\nV ersion\nc ase\nur t\nav ior\ny ch\nsemb ly\nĠPro duct\nĠh eld\na fe\nĠinclud es\n< quote\nĠa void\nĠF in\nĠM od\nĠt ab\nan o\nÃ ±\nipp ing\n- e\nĠins ert\nt arget\nch an\n.M odel\nIM E\n\\ Ċ\nĠm achine\nav y\nĠN O\nĠInt er\nĠoper ation\nmod al\nT ag\n] :\nĠprodu ction\nĠare as\nĠre n\n_f rom\nn bsp\nĠoper ator\nm en\napp ed\n_p er\nz en\n(\" .\n.s ave\n=\" {{\nĠt or\n( response\nĠc andid\nĠcon v\na iled\nĠL ib\ncom p\nur a\nï¿ ½\nĠH ere\nĠarg ument\nh ood\nĠest ablish\nograph y\nĠon Click\namb da\nĠs ch\nĠmov ie\nĠse c\nĠact ivity\nØ §\nĠs ql\n_ all\ninc ip\nĠprovid es\nĠs ys\nack et\nĠwas n\nĠus es\nĠF unction\n.g oogle\nĠRes ult\nVis ible\nag ma\nel come\nĠS y\nĠC ent\nAL SE\nac iÃ³n\nEX T\nĠl icense\nĠL ong\nĠacc om\nĠab ility\n. height\nAct ive\nolog ical\nol y\n)) ,\n.S e\nĠparam eter\npr ite\nAB ILITY\n.s ervice\nĠG roup\n_ query\nĠI tem\nin ing\nĠj ud\nim s\nf ix\nind er\nag ram\nĠfunction s\nĠexper i\nĠE m\nĠro t\nĠp en\n.b tn\nĠA S\n#if def\nĠcho ice\nĠP age\n_P RO\nQ U\nå ı\nant ity\nÂ Ń\nword s\nĠread only\nĠf lex\nprot ected\nĠAn y\nĠchar acters\nenc ed\nĠJ uly\nil er\nC ard\nur ance\nĠre v\n.e vent\nal y\nĠwon der\nĠP ort\nĠleg al\nro le\nĠt en\nĠgo es\nM P\nwh ite\n): čĊ\n)) čĊ\nĠre ference\nĠm is\nĠPro ject\nick s\n> &\nC ON\nĠre pl\nĠreg ular\nSt orage\nram ework\nĠgo al\nĠt ouch\n.w idget\nĠbu ilt\nd es\nP art\n( re\nĠw orth\nh ib\ng ame\nĠÐ ²\nac ion\nĠWh ite\n(t ype\n( `\nĠn atural\nĠin j\nĠcal cul\nĠApr il\n. List\nĠassoci ated\nĉ System\n~ ~\n= [\nĠst orage\nĠby tes\nĠtr avel\nĠs ou\nĠpass ed\n! =\nas cript\n. open\nĠgr id\nĠb us\nĠrec ogn\nA b\nĠh on\nĠC enter\nĠpre c\nb uild\nHT ML\nĠS an\nĠcoun tries\na led\nt oken\nk t\nĠqu al\nL ast\nad ow\nĠman ufact\nid ad\nj ango\nN ext\nx f\n. a\nĠporn o\nĠP M\ner ve\nit ing\n_ th\nc i\n= None\ng s\nĠlog in\nat ives\n'] );Ċ\nÄ ħ\nĠ ill\nI A\nchild ren\nD O\nĠlevel s\nĠ{ {\nĠlook s\nĠ\" #\nTo String\nĠnecess ary\nĠĠĠ Ċ\nc ell\nEn try\nĠ' #\nĠext rem\nSelect or\nĠplace holder\nL oad\nĠre leased\nO RE\nEn umer\nĠT V\nSE T\nin q\nP ress\nĠDep artment\nĠprop erties\nĠres pond\nS earch\na el\nĠre qu\nĠB ook\n/ Ċ\n( st\nĠfin ancial\nick et\n_in put\nĠth reat\n( in\nStr ip\nì Ŀ\nÃ§ Ã£o\nĠevid ence\n)) ;\nĠB ro\nĠ[ ];Ċ\nĠ ou\nb uf\nS cript\nd at\nĠr ule\n# import\n=\" /\nS erial\nĠstart ing\n[ index\na e\nĠcon trib\ns ession\n_ new\nut able\no ber\nĠ\" ./\nĠlog ger\nĠrecent ly\nĠreturn ed\nč čĊ\n)) )Ċ\nition s\nĠse ek\nĠcomm unic\nĠ\" .\nĠuser name\nE CT\nD S\nĠother wise\nĠG erman\n. aw\nAd apter\nix el\nĠsystem s\nĠd rop\nĠstruct ure\nĠ$ (\"#\nenc ies\nann ing\nĠL ink\nĠRes ponse\nĠst ri\nÅ ¼\nĠD B\næ Ĺ\nand roid\nsub mit\not ion\n( @\n.t est\nĊĊĊĊ ĊĊĊĊ\n] ;čĊ\nĠdirect ly\nĠ\" %\nr is\nel ta\nA IL\n) {čĊ\nm ine\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠ\n( k\nb on\nas ic\np ite\n__ _\nM ax\nĠerror s\nĠWh ile\nĠarg uments\nĠens ure\nR ight\n-b ased\nWe b\nĠ- =\nĠint rodu\nĠIn st\nĠW ash\nord in\nj oin\nD atabase\nĠgr ad\nĠus ually\nIT E\nProp s\n? >Ċ\nĠG o\n@ Override\nRE F\nĠ ip\nĠA ustral\nĠ ist\nView ById\nĠser ious\nĠcustom er\n.prot otype\nod o\nc or\nĠdo or\nĠWITH OUT\nĠpl ant\nĠbeg an\nĠdist ance\n() ).\nĠch ance\nĠor d\nc ame\npr agma\nĠprot ect\nrag ment\nĠN ode\nen ing\nÑ ĩ\nĠr oute\nĠS chool\nh i\nĠne ighb\nA fter\nlic it\nĠcon tr\nĠpr imary\nA A\n.Write Line\nutil s\nĠb i\nR ed\n.L inq\n. object\nĠlead ers\nun ities\nĠg un\non th\nĠDe v\nF ILE\nĠcom ments\n_l en\nar row\nam ount\nR ange\ns ert\nGrid View\nĠup dated\nĠM o\nĠin form\noci ety\nal a\nA ccess\nĠh ab\nĠc reat\n_ arg\nĠJan uary\nĠD ay\n\") čĊ\nup le\nd ocument\ngor ith\nm enu\nĠO ver\nb b\n.t itle\n_ out\nĠle d\nur i\nĠ? ></\ng l\nĠb ank\nay ment\nĉ printf\nM D\nĠs ample\nĠhand s\nĠV ersion\nu ario\nĠoff ers\nity Engine\nĠsh ape\nĠs leep\n_p oint\nSet tings\nĠa chie\nĠs old\not a\n.b ind\nA m\nĠsa fe\nSt ore\nĠsh ared\nĠpr iv\n_V AL\nĠs ens\n) {\nĠrem ember\nsh ared\ne lement\nĠsh oot\nV ert\nc out\nĠen v\n_l abel\nĠ >Ċ\nr un\nĠsc ene\n( array\nde vice\n_t itle\nag on\n] čĊ\nab y\nĠbe came\nbo olean\nĠp ark\nĠC ode\nup load\nrid ay\nĠSept ember\nF e\nĠs en\nc ing\nF L\nC ol\nut s\n_p age\nin n\nĠim plied\nal ing\nĠyour self\n.C ount\ncon f\nĠa ud\n_in it\n. )\nĠw rote\nN G\n. Error\nä »\n.f or\nĠe qual\nĠRe quest\nĠser ial\nĠallow s\nX X\nĠm iddle\nch or\nÃ ¸\nerv al\n.C olumn\nread ing\nĠesc ort\nĠAug ust\nĠquick ly\nĠwe ap\nĠC G\nrop ri\nh o\nĠc op\n( struct\nĠB ig\nĠv s\nĠfre qu\n. Value\nĠaction s\nĠpro per\nĠin n\nĠobject s\nĠm atrix\nav ascript\nĠon es\n.g roup\nĠgre en\nĠp aint\nool s\ny cl\nenc ode\nol t\ncom ment\n. api\nD ir\nĠun e\niz ont\n.p osition\nĠdes igned\n_ val\nav i\nir ing\nt ab\nĠl ayer\nĠview s\nĠre ve\nra el\nĠO N\nr ics\nn p\nĠc ore\n() );čĊ\nM ain\nĠexp ert\nĉĉ čĊ\n_ en\nĠ/ >\nut ter\nI AL\nail s\nĠK ing\n*/ ĊĊ\nĠM et\n_ end\nadd r\nor a\nĠ ir\nM in\nĠsur pr\nĠre pe\nĠdirect ory\nP UT\n- S\nĠe lection\nh aps\n.p re\nc m\nVal ues\nĠ\" Ċ\nc olumn\niv il\nLog in\nin ue\nĠbeaut iful\nĠse cret\n(e vent\nĠch at\num s\nĠorig in\nĠeffect s\nĠman agement\nill a\nt k\nĠset ting\nĠC our\nĠmass age\nĉ end\nĠhapp y\nĠfin ish\nĠc amera\nĠV er\nĠDem ocr\nĠH er\n( Q\ncon s\nit a\nĠ' .\n{ }\nĉ C\nĠst uff\nĠ :Ċ\nĠA R\nT ask\nh idden\ner os\nIG N\nat io\nĠHe alth\nol ute\nEnt er\n' >\nĠT witter\nĠCount y\ns cribe\nĠ= >Ċ\nĠh y\nf it\nĠmilit ary\nĠsa le\nre quired\nn on\nboot strap\nh old\nr im\n- old\nĠD own\nĠm ention\ncont act\n_g roup\nod ay\nĠto wn\nĠsol ution\nu ate\nell ing\n] ->\not es\nent al\nom en\nosp ital\nĠS up\n_ EN\nĠsl ow\nSE SSION\nĠbl ue\nag o\nĠl ives\nĠ ^\n. un\nin st\nen ge\nĠcustom ers\nĠc ast\nud get\nï¼ ģ\nic ens\nĠdeter min\nSe lected\n_ pl\nue ue\nĠd ark\n// ĊĊ\ns i\nther n\nĠJ apan\n/ w\nP U\nĠE ast\nov ie\nĠp ackage\nĠn or\nĠap i\nb ot\n\" ];Ċ\n_p ost\nul ate\nĠcl ub\n') );Ċ\nĠlo op\nPI O\nion e\nsh ot\nIn itial\nĠplay ed\nreg ister\nrou ght\n_m ax\nac ement\nm atch\nraph ics\nA ST\nĠexist ing\nĠcomple x\nD A\n.C h\n.com mon\nm o\nĠ' ../../\nit o\nĠanal ysis\nĠdel iver\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nid x\nÃ ł\nong o\nĠEng lish\n< !--\nĠcomput er\nEN SE\nĠp as\nĠr ais\nH ash\nĠm obile\nĠo wner\nF IG\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nth es\nĠat tr\nw d\n.t ime\naw n\nĠtreat ment\nĠA c\n. View\nim pl\nm ore\np ass\nĠh a\n.f rom\nĠle ading\nFF FF\n( error\n. ui\nat ar\nad ers\nd ates\nĠz u\nĠfl ow\nT arget\nĠinvol ved\nĠi o\npar se\n$ _\nhe st\n. int\n- item\nas y\nS p\nĠsh ift\nN T\nĠt f\n_T R\n. web\nC S\nĠ} )\nĠey es\n_ z\n' );čĊ\nif orn\nĠ{ @\nĠn ice\n.l ist\nĠĠĠĠ čĊ\nĠf loor\nĠred irect\nĠU K\n( ['\nĠw ish\nĠcap t\nleg al\nĠI O\nĠst age\n. String\nĠA fr\nig en\nĠS H\nDe lete\nell s\nĠsol id\nĠmeet ing\nĠwork ed\nĠed itor\nin y\nÐ ¼\n_ read\n. Id\ne ff\nOff set\nch a\nUS ER\nĉĉ ĠĠĠ\nipp ed\nĠd ict\nĠR un\n.h pp\nĠan g\nx ml\nim ple\nĠmed ical\n_t oken\ncon nect\nĠh our\nĠcont roller\n_m essage\nU ID\nG r\nand ed\n_C H\nĠbook s\nĠspe ak\nam ing\nĠm ount\nRec ord\nĉ struct\n.W eb\nond on\nĠ// Ċ\nĠf elt\n.A uto\nid ge\n_p os\nP R\nĠmod ern\nC ollection\n_m sg\nC D\nĠL o\nĠsecond s\nib ly\n.e quals\nĠintern ational\n# pragma\noo th\nW riter\ni ate\nĠce le\nĠB it\niv o\niv ery\nr d\nHE CK\nĠc ache\n.c ount\nĠro ll\n.Re ad\nRE D\nĠset up\nizont al\nmodel s\narg v\nĠconsider ed\n=\" ../\nset tings\nĠR el\nĠgrow th\nĠm ix\nĠWash ington\nĠpl t\nĠI M\ná º\nĠturn ed\nĠDate Time\nĠW ed\n( url\nĠ\" -\nĠlet ter\nAs ync\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠ\nĠOct ober\n_l ine\nĠatt ention\nĠcol lect\nĠH ash\nĠim ag\nT ree\nĠsit uation\net te\n_n o\nIV E\nĠv on\n.t arget\nĠknow ledge\nĠdr ive\n.p ost\nĠb lood\nĠc it\npr imary\nĠconfig uration\nte e\nĠph oto\nis ode\nTr ace\nĠg ave\nĠsh ot\nĠA ir\nĠm other\npr ice\nĠmor ning\n)) {Ċ\n- x\nĠtr ade\nĠdes c\nĠ&& Ċ\nĠparent s\nA pi\nå Ī\nt ed\nw er\nĠ æ\nĠs y\nĠK e\nPar ser\nå ħ\nanc y\nĠpie ce\niforn ia\nto String\nr an\nid ing\nPT ION\ncom es\n/ lic\n.c lient\nE l\nL ong\nĠprofession al\nru pt\nv a\nĠcomplet ely\nĠpract ice\nĠse lection\nR em\nin i\nĠc am\nRE E\nĠsit es\np a\nAT US\nÑģ ÑĤ\narr ant\n* (\n_ KEY\nĠB utton\nĠF riday\nse qu\nĠre ader\nĠm essages\nè ¯\nĠbu f\nK e\nĠn ov\nH P\nM sg\nal ign\nar ily\nĠ' ,\n_w ith\nĠd as\nĠhe ard\nat omic\nri al\n) [\nĠdis e\n@ end\nĠg old\nĠf air\nĠsa les\n. Button\nstr ict\ns ave\nĠme asure\nĠ\" +\nec ause\nView Controller\nĠT able\n.p aram\nĠdec ided\n(( (\nIN FO\nĠopport unity\nT e\nIC ENSE\ncc ording\nk i\nĠU N\nĠcont ain\nĠman ager\nĠp ain\nĠF ire\nrom e\nĠpl ans\nF ound\nl ay\nĠDec ember\nĠinfl u\nÃ º\nren ch\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ\naz ing\nb rief\nc all\nwo od\nĠload ed\nĠgr and\n/ f\nim p\n_ U\nST R\nâĢ ¢\nĠcred it\n.C olor\nor ge\nQUE ST\nĠdiffer ence\nĠP C\nw args\nĠp ub\nund ay\nĠf ra\n.m ax\nĠtri ed\nann els\ns end\nĠreport s\nĠad ult\nä º\nĠcons ist\nĠSt reet\nĠPro gram\nS QL\nM atrix\nounc il\n- A\nĉ w\nĠwho se\nĠrel ig\nĠS ex\nĠg ives\nn one\n.m essage\n( G\n.aw t\n- right\nĠNov ember\nell ig\nut ive\nÄ ĥ\nover n\nĠeas ily\nĠide as\nĠÐ ½\n/c ss\nly ing\nel le\nC an\n_c olor\nÐ¾Ð ²\nĠp air\nng th\nĠs plit\nd rop\nart y\non a\nĠcap ital\nĠhe ar\nĠex ists\nĉ log\nem o\nR un\no i\nĠpar ser\nĠM ethod\nĠeduc ation\n[ k\nĠlib rary\n> \";Ċ\n_ UN\nĉ std\nod ed\nĠcall s\nh ere\nR el\nĠbr and\nback ground\ng a\n_add ress\n_param s\nC ategory\nĠInd ia\n_e vent\nĠ ing\nR ender\n.c l\nump y\nĠp et\nF C\nĠA nt\nEx t\nĠchar ge\nen ed\ngr ad\nE O\nĠdep end\nĠ .ĊĊ\nfr ame\nĠd f\nĠh uge\nĠP ART\ned s\n; ;\nĠA M\nĠbas ic\nĠL et\nlic h\nĠar m\nĠst ar\nĠf ederal\nW ork\nĠcar ry\nĠIs rael\n( obj\n={ {\nĠs aved\nĠs yn\nĠconst ant\nV ENT\nĠpos itive\nĠcon duct\nĠsk in\nĠear lier\nĠl ayout\nĠI P\nO UR\nĠt im\nstyles heet\n_ cl\nĠC ard\n++ ){Ċ\nĠtem per\nĠDav id\nĉ try\n.d art\nĠwant s\nĠp icture\nĠv ideos\nĠCom m\nis ions\n_M AX\nM apping\n- content\nĠE ar\n- de\nĠpre m\nbr uary\nĠcom ponents\nĠthrough out\nĠp ull\nĠp ages\nent e\nres pond\nĠg as\ncript or\nĠed ge\nĠb ound\nA CT\n**** **\nĠcre ating\nĠC H\nĠnull ptr\nB r\n+ '\n.c o\n> ::\nĠle arning\n.L ength\n_S H\nĠpat ients\nA IN\nĠk ids\nĠcom fort\nĠsh own\nug ins\nĠB ack\nell a\n_C L\nĠl at\nĠdis patch\nĠclass es\n. at\n.b egin\nĠsuccess ful\nb an\nĠobt ain\nĠS l\nĠl ack\niter ator\nTh read\n(s ize\nĠn one\n.h as\n_ X\ns ort\nn ap\np et\nb in\nĠCan ada\nThe y\nĠd ans\nĠM at\n< td\nĠh air\nĠ' ',Ċ\nĠc u\nĠlaw s\nlet ed\np ed\nĠp ow\nĠk new\n_C OM\n_ ,\nĠM ag\nid ents\n( req\nĠ ),\n- center\nĠw ide\nĠA uthor\nst ants\nĠjob s\nĠm ath\net imes\nBo olean\nĠs cope\n_ is\nĠme as\nĠkey s\nel ay\nĠexact ly\n'=> '\nĠP aul\nm as\nĉ print\n(l en\nf d\nĠ) ;\n. Event\nq li\nir it\nield s\nom an\nĠT op\nĠv ote\nĠm ask\nĠthem e\n- Ċ\nĠpro ps\nĠf ine\nĠwrit er\n_ offset\nc ar\nĠal tern\nĠc opyright\nĠdest roy\npp er\nĠgener ate\npp ed\nâĢĻ d\nĠĠĠĠĠĠ Ċ\nm ake\nĠSh ow\nĠb rowser\nĠfavor ite\nĠcare er\nĠhappen ed\n( char\nĠrecomm end\nĠl iter\n.f ilter\ngr ade\nĠÂ £\nPh one\nom s\nĠn amed\n- label\nip o\nĠO ther\nĠp anel\nĠro ck\nS cale\nĉ assert\nÐ ´\nĠtr ust\nfr ont\nĠdem on\nA r\nN et\nĠecon omic\nfoot er\nĠr ace\n(n ode\nĠO ption\ns plit\nĠphys ical\nif est\nĠrem oved\n. http\n)) ,Ċ\nĠlook ed\n' ;\nd ing\ng est\natur day\n/lic enses\nPr ice\nĠd ro\nĠto wards\nĠun s\nĠC L\nĉ static\nĠ rows\nĠdef ine\n.re place\nĠf ather\nĠDes ign\nass ign\nm ut\nDe vice\nD id\n') )Ċ\nomet ry\nay load\nĠh istor\nĠP aram\nĠBo olean\nĠn ature\nĠj s\nĠn ation\ni h\nĠdis cover\nse m\nHand le\nĉ r\nĠTe chn\nĠw all\n{ $\n@ property\nĠ\" ../\nĠex am\n.d raw\nopp ing\nĠnear ly\nĠco ol\nĠinde pend\nRE S\nĠhand ler\nĠMon day\nĠs un\nSt yles\nous ly\nĠ ĉ\nv est\nD isplay\n( y\natic ally\nĠpred ict\ny ing\nĠsom etimes\n\" ]Ċ\nĠdr ink\nĠb ul\nific ations\n. insert\n.re g\nĠtest s\nAl ignment\nĠal leg\nĠat tribute\nĠN ote\nĠmy self\nart s\nN ow\nĠinterest ing\nli ents\nĠpop ulation\nĠCal ifornia\n\" I\nå ¹\nĠgre ater\nues day\nĠth ous\nĠcost s\nĠla unch\n\\ Http\nk er\nb and\nĠPl ay\nĠb and\n.sh ape\nes ome\nart icle\n.r f\nĠw er\nÃ¡ s\nem bers\nus r\nB A\nic an\net t\nvalid ate\nult i\nĠimmedi ately\nz er\nĠfig ure\no es\nell er\nirc le\nĠS ign\n.d b\nĠr ank\nBy tes\nĠproject s\n_re c\nUL AR\nA PI\nĠL ine\nP ort\nĠp oll\nĠg iving\nid ence\n-- Ċ\nĠpl ot\nic ial\nĠw arrant\nIT ION\nĠD ouble\nĠbill ion\ngorith m\nĠequ ipment\nD ATE\nĠ@ \"\nE E\nĠp le\ni ation\nĠhead ers\nĠpro ced\n.Component Model\nĠOb ama\nĠp a\nĠB est\nim ately\n.get String\n. \\\nmp loy\nĠr aw\n_b lock\nund red\n\" },Ċ\n.Group Layout\nĠb rought\nNS String\nth row\ncre ated\n.N ew\n_ view\nC P\nep s\nO p\nĠgr atis\nĠ' \"\nĠinter view\n\"\" \"Ċ\nĠpart ial\nĠa ria\nb ing\nA uthor\nBo ok\nĠP at\num an\nUs ers\npl us\nĠD irect\nven ue\nal pha\nUC CESS\nĠC all\nĠ );čĊ\nim ated\nĠrem ain\nĠant i\nĠL ondon\nĠsaf ety\nPO SE\no les\ncont roller\nBy te\nĠCour t\nĠPh il\nĠAss oci\nen a\nå Ĳ\n_ST R\nco in\nresh old\nĠb atch\n_C lick\nentic ation\n> ';Ċ\nent y\nĠbegin ning\nĠz ero\nĠCon vert\nĠt err\nĠp aid\nĠincre ased\nc atch\n-s ize\nact ivity\ne quals\nĠque ue\nĠ\" '\nĠIntern ational\nĠf Ã¼r\nurs day\nĠsc ient\nall ow\nax is\nĠapp ropri\ned ge\nĠid x\nS uccess\nent ifier\n: \\\nx is\nĠmax imum\nark s\nĠb irth\n( index\nĠmay be\n.p y\nfile s\nĠlim ited\n_ check\nlo ok\npl ies\nĠmov ement\n'] .\nĠbro ad\nĠB E\nĠUn ityEngine\n.c pp\nĠE very\nAd min\nĠf ans\np ared\nĊ ĠĠĠĠĊ\nĠfore ign\nĠp an\nĠt our\nĠOr der\nĠmov ing\nĠa uf\nC all\nc b\nÅ Ł\nvent ory\nĠS ql\nĠful ly\nClick Listener\nW ORD\nĠannounc ed\n) čĊčĊ\nĠagre ed\nri e\nĠe arn\n_l ink\n. array\n(t ext\nĠmaterial s\n, p\nff ff\nv g\nĠÂ ©\nĠun less\naj ax\nLO G\nĠsex ual\nĠ\\ \"\n- time\nĠco ach\nĠsupport ed\nĠphot os\nif orm\n.C reate\n) ]\nri er\nĠd ialog\nav er\nig e\n) +\n_id x\n: [\n_m in\nĠC ong\nĠpress ure\nĠteam s\nS ign\nb egin\nri an\nNE SS\nL S\nĠimpro ve\nĠS unday\nĠdef inition\nig er\nroll ers\nĠthink ing\nT emplate\n- F\nĠem erg\npl ates\nĠUS A\n.set State\nĠAl so\nre v\nĠen able\nĠC O\nPE CT\nĠcon cept\n) -\nĠâĢ ¢\nĠset s\nĠmean ing\nem on\nĠCon s\nc mp\ned er\nann ed\nicens ed\nĠS uper\nĠd aily\nĠmult i\n_ u\nĠchall eng\n_m ode\nĠP romise\nĠstr ict\nj o\nint on\n( list\nOn ly\n> {\nĠveh icle\ní ķ\nĠPl ayer\nĠD el\nĠp ool\n. url\nnes day\n();čĊ čĊ\nĠ\" );Ċ\nL ocal\n. \");Ċ\nĠorgan ization\nre nder\nĠApp lication\nĠsum mer\nex pected\nN A\nĠr ap\n_ obj\nĠsur face\nĠP UR\nĠ}, ĊĊ\nĠvariable s\n(m essage\nĠop in\n.b ack\nÐ° Ð½\nĠwork ers\nv m\nC o\nught er\nĠm aster\nĠ\" \",\nĠst ories\n. User\nĠcele br\nines e\nB S\nĠCom mand\nash board\nĠo g\nk g\n. image\n.st yle\nĠstep s\nĠB en\n( args\nĠP erson\n, y\nĠofficial s\n| Ċ\nĠsk ills\nv c\nĠbuild er\nĠg ar\nA ccount\nĠA uth\nç Ķ\n'] )Ċ\nĠA T\nn n\n. Int\nSS ERT\nĠeffect ive\nLE TE\nĠto ols\nAR D\nĠdig ital\nD ouble\nĠF ind\nR C\nĠin line\n/ r\nAR AM\nAS K\nĠint ent\na ight\n_add r\nĠrequest s\n.f irst\nĠde bug\nĠsp ent\n() ));Ċ\nÅ Ľ\nĠpr incip\nLog ger\nclud es\n. use\nĠsur v\nmed ia\nĠFe bruary\nĠM ac\nĠmiss ing\nĠw ife\nĠtalk ing\nĠM ake\nĠc art\nĠloc ated\nE nc\n- a\nch ron\nĠc ards\nĠgu y\nĠp ers\nĠY es\nate ver\nĠA ng\nol ar\nĠE ven\nĠacc ur\nĠP ower\nĠG old\nc lear\nPro cess\nĠrec ords\nĠk illed\n.c lear\nĠWARRANT IES\nĠpur pose\npan el\nJ ECT\nÃŃ a\nĠex erc\nW S\n/ L\n. exports\nĠ__ _\nĠs in\nS ervlet\nĠd Ã©\n.de lete\nro ke\nS l\nug h\near s\nĠpoint er\nĠh op\nall ery\nĠo bs\nco very\nĉ char\nĉĉĉĉ ĉĉĉĉĉĉ\nĉ def\noc ity\nitch en\nul ations\nĠF IT\nĠ ).\nstraint s\nvent ion\nĠrequ ires\nĠO per\nM E\nOUN T\nal let\nĠn orm\nI RE\nex as\nĠprogram s\nĠwe ak\n' .$\nu ing\nĉ ĠĠĠĠĠĠĠ\nĠm il\nĠf irm\ninit ely\n_VAL UE\nap se\natis f\nĠdem and\n_m od\nĠdescri bed\nĠpl aces\nV ID\nĠal one\nĠex port\nĠv ec\nĠM ax\nĠactiv ities\nict ures\ng ener\nĠm a\nĤ ¬\nĠexpress ion\nC allback\n_ content\nĠM ost\nĠtest ing\nE C\nCH ANT\nĠad just\n.Th reading\n( ctx\nĠag ree\nig hest\nĠu i\nĠL aw\n. Y\n> <?\nĠp od\n-l g\nâĢĿ ĊĊ\nĠdes cribe\nĠEurope an\n- sh\nĠPUR POSE\nOR Y\nĠcon vers\nĠI lluminate\nĠA v\n( ch\n? \"\nch en\nim a\nD ocument\nĠoper ations\nw in\nĉf unction\n. Image\nĠsc en\n/ h\nĠS C\nĠexp lo\n: %\n/** čĊ\nN AME\næ Ī\n( var\nĠdirect or\nON G\nĠy ield\nĠfe et\nĠS earch\nĠI l\nĠrest aur\ndu c\nĠint eger\nĠ' ';Ċ\nĠhigh ly\ncheck ed\nĠPART IC\nER CHANT\nï¼ ī\nĠopt im\nQ ueue\nĠL I\nit ation\nĠtrans port\niss ion\nf ill\nus ion\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĉ bool\n- th\nu pt\nĠess ential\nant ed\nĠbenef its\nĉ S\n' ;čĊ\nik i\nĠgirl s\nic ed\nb uffer\n] +\nĠso cket\nĠpr ices\nĠF re\nĠs at\nĠw ood\nMenu Item\nAR G\nĠAd min\nOW N\nd k\nĠres et\nĠfor ms\nĠÐ ¸\næ ĸ\nĠT uesday\nĠInitial ized\n_tr ain\nor ary\nateg or\nĠd t\nT otal\ncon struct\nil ies\nĠgu ys\nÐµ ÑĢ\nĠin struction\ny led\nĠintern et\net adata\nad y\nf aces\nje ction\nĠJ ack\nĠre ct\n[ -\nĠL eg\nĠdev ices\nO C\nĠ* čĊ\nor ation\nert ain\nĠgu ard\nost ream\nĠen um\n.l ayout\nĠ\" ;Ċ\nvo ke\nĠO k\nH ome\n( tr\nET H\nĠdel ay\nĠpurch ase\nd c\nĠare n\n_on ce\nĉĉĉĉ Ċ\nr or\nd raw\n.r un\n(m odel\nTime out\nli k\nĠAr g\n. en\nĠf ish\nc py\n_f e\nERCHANT ABILITY\n( X\n_ output\n? ?\nĠj o\nand ard\nĠd oll\nerror s\n_b ase\nĠPARTIC ULAR\nĠle ader\nĠcomp ar\nĠd oub\nĠV is\nStack Trace\n- C\nĠSt ud\nstit ute\nM ore\nĠD escription\nW ARE\nad s\nĠÐ º\nb ind\n= self\nem ploy\n[ n\n. all\n- B\n& &\nal m\nĠcult ure\nh ouse\nĠsu ffer\nĠ' %\nĠstr aight\nĠSt ar\nud o\nĠd ed\nĠC OM\nĠconf irm\nĠG ood\n.s c\n________ ________\nD R\nConfig uration\nDate Time\nĠad vert\nĠcould n\nas ync\nst ack\n') čĊ\nK it\nĠh ous\nĠme chan\nr ate\nĠa udio\nĉc out\nco res\nĠsp ot\nĠincre asing\nĠ ##\n)) )\npoint s\nĠcomp ared\nl ig\nĠbeh avior\nĠB Y\nĠAt t\nc raft\nhead ers\net e\nend region\nĠd etail\nU LE\nĠCom mon\nĉ protected\nst on\nĠFIT NESS\nĠf resh\n\"> ĊĊ\n.ex ample\nber g\nĠmov ed\nĉ e\nĠS aturday\nĠpay load\nÄ ĩ\n) :ĊĊ\nĠbe y\nur er\n< script\nĠs ymbol\nĠass um\nĠp ul\nE ffect\nĠh undred\nTo ol\nak ed\ncon nection\nĠvo ice\nĠp d\nĠtrans action\nĠlink s\nE rr\nĠInd ian\nT C\natal og\nn i\ns ign\n<< \"\nj i\ny a\nĠdemon str\nul ated\n. St\nĠinst it\nĠbo ost\nĠcell s\nol ic\n.P ro\n: </\nEvent Listener\nify ing\nĠD i\nor row\n.ex ecute\nĠcol lege\nY our\nĠlarg est\n.d is\nĠqu i\nĠindividual s\n_b uffer\nĠn g\nS A\nĠCont rol\nĠs ing\nĠsu it\nĠĠĠĠ ĉ\nS G\nĠj ump\nĠsm art\nom a\nĠEx p\nĠ' -\nĠass ist\nĠsuccess fully\ns ys\nĠC re\n_ ref\nĠTh ursday\nĠb ur\nĠÐ ´\nĠbey ond\nĠn odes\nD etails\nin ct\nĠJ ames\nĠa ffect\nex ception\nĠtype of\n( čĊ\n- se\nĠf etch\n` ,\nĠcrush er\n} .\nĠB O\nSh ow\nĠr ates\nĠb on\n- icon\nĠMed ia\nRE SS\nĠVal id\nÐ¾Ð »\nĠf uck\nack s\nĠstud ies\nM e\nĠown ers\n} else\nĠgrow ing\nVar iable\nĠB el\n.r andom\nv ement\non ym\n( F\nĠF ALSE\nĠtor ch\n( row\nig o\nstruct ure\nĠcertain ly\nD ep\nĠG reen\nquest ion\nĠadd ing\nĠDe velop\n_ def\nĠm ach\n= %\nĉĉ Ġ\ncond s\nPro ject\nĠre ject\nĠ Î\nĠpo or\nĠaw are\nĠB uild\nĠBrit ish\nĠN E\nĠnum er\nre es\ncl aim\nĠm ock\nĠo m\nĠs cre\nOL D\n. pl\nel er\nĠcor respond\n_ HE\nĠb inary\n_ order\nĠS QL\nĠadv ant\nĠpre v\n. [\n.assert Equal\npl ier\nar p\nĠclos ed\nĠenc our\nĠQ String\na ud\nĠdevelop ed\nĠper mission\n.de bug\noper ator\nĠ' Ċ\nĠs ym\nat ively\nÃ© e\n-c olor\nĠG ET\nk y\nĠal though\n_re quest\n_e lement\n........ ........\n_D ATA\nĠam azing\nĠs b\nĠDef ault\nEvent s\nĠfail ure\nac le\nProp erties\nĠd ream\nĠdist r\nĠa u\nĠgener ated\næ ķ\nĠTe am\nU SE\nĠin come\nĠey e\n_n ot\n\" ],\n_ form\nS upport\nord ers\n.P rint\nv ille\nĠWed nesday\nol ver\nĠopp os\nis ation\nol a\nC lose\n< p\n_w idth\nIn valid\nx b\nĠstr ugg\n_ action\nĠt xt\nĠP ath\nal ar\nĠM ERCHANTABILITY\ns ervice\nĠMich ael\nable View\nDe bug\nok es\nS he\nĠgu ess\nĠJ ava\n_P ATH\nĠparticular ly\nĠI I\nĠd omain\nå¹ ´\nĠredu ce\n- left\nre al\nĠappe ars\nĠcom o\nĠUn it\nĠG overn\nal i\nalle l\nĠJ ew\n_ I\nĠc os\n.c olor\nĠG lobal\nĠte le\nb en\n_ trans\nĠreason s\nĠem b\nens ity\nl ines\nom in\nS creen\nÐ° ÑĤ\npect s\ncl ip\nfo o\nre nt\nĠa f\nĠd anger\nil ing\nN ames\nO ur\nĠdistrib ution\nWh ile\nS L\nW rite\nĠg oto\nĠcolor s\nĠpower ful\nk in\nĠdep th\nerc ial\nĠCong ress\nĠMark et\nD b\nu nder\nĠL ast\nÃ Ł\ng reg\nĠpost s\n_ URL\not os\nD on\nĠm icro\nĠar rest\nÐ ¿\nĠ( @\nĠH ot\nĠInd ex\n; &\n# !\nĠN or\nĠC ap\n- (\nĠinterest ed\npe ar\nĠre nt\nĠal bum\nol icy\n.l ang\n. trans\n. format\nĠ{ čĊčĊ\nph ere\nĠax is\nĠB usiness\nersist ence\nur r\nĠmin imum\nend or\nĠS D\nĠIntern et\nå ¤\nEx p\niver se\nM M\nĠob vious\nĠbas is\nĠsc ience\nĠb udget\niz ations\nP A\nĠfl ags\npre t\nLO CK\nĠvari ety\nĠtr uth\nd t\nĠg one\nĠb attle\n< std\nĠS il\nr f\nud a\nĠer ot\nĠC am\nĠst ation\nĠ' </\nchem e\nĠS un\nĠfin ished\nĠsh op\nĠK ore\nĠe ight\n_RE G\nN D\n> ,\n\"> <?\n(n um\nĉ inline\nTrans action\n. On\nĠm ail\nre y\nresult s\nĠn av\nIM IT\n_id s\nM ake\nå Ĭ\nMod al\nĠLO G\nĠS ur\nĠinstance of\nĠover all\nĠIn formation\nĠcon struction\n_F ILE\nb ut\nĠmed ic\nĠd uration\nit ness\nag ent\nA V\nĠse ven\nol f\nĠ} }Ċ\n\" ],Ċ\nĠcall ing\nĠan s\nth rows\nor izontal\nĠuse State\n.f l\nĠSt atus\nĠOn line\nR R\nĠR ich\nĠH ill\nĠbr ain\nĠfollow ed\nem ic\nĠsl ight\nĠins urance\n.A rray\nĠab stract\nĠS um\nred irect\nown er\n( msg\nĠCl inton\nN on\nĉ ex\nĠv olume\nĠEvent Args\n- L\nĠD im\nĠM art\nĠc ursor\nĠimplement ation\nurre d\nĠlarg er\n);ĊĊ Ċ\n' +\n. transform\nĠup load\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nD raw\nn el\nĉf loat\nq rt\nĠN etwork\nĠt it\nA xis\n. android\nĠcomplet ed\nĠm ur\nĠcolumn s\nx c\nĠsup ply\nim inal\nĠs pr\n================================ ================================\nĠun its\n( u\nm i\nre place\n[ key\nà ¹\nant ic\nĠpay ment\n, B\nĠApp le\ng in\nRe quired\n# +\nland s\nĠs qu\nĠfact or\nde c\nĠstre ngth\nĠbo y\nĠb alance\nĠs ources\ns creen\n-t op\nĠAm azon\nĠh idden\nÐµ ÑĤ\n_ client\nĠe at\n.d isplay\nĠÂ »\nĠtr igger\nan ager\nĠt ro\nĠclaim s\nf ord\nĠCom pany\nĠg ift\n, :\n_ app\nh andle\nĠprodu ce\n/ lib\nĠ- *\nĉ set\n'] ;\nar c\nand er\nĠEng ine\nĠat tributes\nt ask\n< =\n( N\nĠw arm\nwh ich\nĠF ore\nagn ost\nm ys\nĠt al\nĠS al\ng i\nĠP rint\nĠTR UE\nĠÐ ¾\n. UI\nĠfl ash\nrop erty\n. location\nĠM ill\nb i\ncon tr\n.re quest\nĠS am\nĠneg ative\nk it\nĠset t\n.print StackTrace\nab e\nĉ i\nĠb urn\nĠs ociety\nC ache\nĠSec urity\n.model s\nĠWARRANT Y\n_ up\nce ive\nĠc lients\n.T r\nĠprovid ing\nĠr out\nm aterial\nĠ|| Ċ\nĠS er\nĠOff ice\nFT WARE\nĠ' $\nĠf oc\nĠexc ell\nĠc at\nn ormal\nĠdeter mine\nĉ uint\nP ane\nĠemploy ees\nĠT exas\nĠtr aff\nĠRe port\nant a\nĠBo x\nĠd jango\nĠpart ner\nE B\nL INE\nĠfeel ing\nĠc ivil\n(f loat\nS ql\nĠwould n\n.in it\n. left\n- v\n_ level\n' }\nA F\nĠlo ading\nĠOn ly\nĠcook ies\nĠG l\nC O\nĠstrateg y\n(' ./\nĠsh ip\npos es\nĠsign al\nĠal pha\n.p op\nR adius\nĠre place\n_D IR\ncount er\nbserv able\nel a\nWe ight\nh ash\nbo se\nf x\nĠE mail\nĠre fer\nlocal host\n_ RO\niqu es\nSt ep\nĠa head\n( View\nĠS ervices\nĠJ son\ness or\nĠp un\nĠappropri ate\nak ers\nos en\npos ing\nĠag ent\nf c\nĠtrans fer\nĠin valid\nĠRes earch\nVert ex\nĠg ay\nĠj ournal\n[ x\nĠ\" \",Ċ\nĠW ell\n.T asks\nS pec\nĠo l\nĠsp end\nĠAustral ia\nM atch\n.j unit\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠ\nĠM AX\niz able\nclus ive\n_ valid\nĠqu arter\ny an\nĠEd it\nard en\n= new\nĠfr ag\nB it\nz i\nain e\nu dd\n. Object\nde bug\nĠc ash\n_ IM\nĠe en\nĠcomm ercial\nĠV ideo\nlo ader\nĠf ixed\nĠapplic ations\nĠ_ ,\nĠRuss ia\nit ect\n_ (\nĠB lock\nĠs an\nĠT om\nĠper haps\nĠs ig\nlev ant\nĠcor por\nat aset\nron ic\nx e\nĠ eth\nS ome\np op\n_O K\nĠt end\n. Res\n_ and\nĠreview s\nĠw ild\nĠdeg ree\n. O\n.object s\n_ args\nn il\nĠdis abled\nP arent\nĠnot es\nĠ\" \"Ċ\n( state\nistr ict\nĠlog ging\n.I O\nĠM al\nD M\nĠx ml\nĠRob ert\nel en\nl ayout\nf ol\n'] ))\n, b\nĠJ er\nf ilename\nĠf an\nĠC ustom\n=\" \"\nĠD ie\nB undle\n.util s\nĠtri p\nM B\nĠso ft\n_M ODE\nĠapplic able\nĠup per\nER VER\n_ al\n_LO G\nH ere\nw p\nĠS erver\nĠC lient\nĠch em\nSc roll\nĠh ighest\nĠSe lect\nĠ\" @\nĠWh y\nS ec\nhe el\nOper ation\nĠconn ected\nir med\nĠcit iz\nĠC he\nĠfor ces\nĠw ww\nR oot\nAN CE\nMan y\nic ip\nrg an\nĠT or\nĠP ress\nĠM or\n- line\nu led\n> \\\nĠth us\nĠReg ister\nh ol\nĠCh inese\nĠpost ed\nĠm agn\nab ilities\nĠdise ase\nĠrem ains\nĠPro f\n- form\nĠc in\norg an\nic ate\nĠst ress\n] *\nĠ ----------------------------------------------------------------\n_ context\nor ry\nĠd ied\nm at\nĠstart s\n.M essage\nĠrun s\nĠgu ide\nĠwarrant y\nential s\nd ict\nĠS ize\nul er\nĠrespons ible\n_SE T\nĠcont aining\nĠPr ice\n| |\nF S\nĠem p\n_b utton\n( uint\nĠsu ff\np th\nĠdef initely\nput e\nĠmarket ing\nĠW H\nĠS ie\n+ =\nOL OR\nĠcons ult\nĠs igned\nĠse quence\nle e\nĠrequire ments\nh y\nEx press\nM T\nse y\nĠ ult\nå ®\nellig ence\nĠanal y\nĠd ress\neng ine\nĠG reat\nĠAnd roid\nĠA lex\nm ode\nD ictionary\n.D ate\nä ½\nV ICE\nĠfam ilies\nĠRuss ian\nĠT imes\n.c all\n$ (\nPro file\nĠf older\nch es\nĠleg is\n_ row\nun es\nÙ Ħ\nĠ} ).\nAss ert\nag en\nĠH and\nI ter\nĠbig gest\nore ach\nĠpol ic\nĠper missions\nĠshow ed\nĠE lement\nĠtop ic\nâĢĶ âĢĶ\nro ad\nĠB ank\nrec ord\nĠpart ners\nĠR ef\ness ions\nĠass ess\nU ST\nĠPart y\npro du\nL C\nĠ ul\n. form\nh ide\nc opy\nUT F\nĠSO FTWARE\nčĊčĊ čĊ\nĠL in\nun a\nug ar\nĠadmin istration\nĠopen ing\nĠsc an\nĠcontin ued\ncom ponent\n.s p\nĠhapp ens\num my\nĠP R\n.F ile\nĠDown load\nLo ading\nd i\nĠwait ing\n_A DD\nT ab\n.query Selector\nĠecon omy\nĠF rench\nt xt\nĠf ant\n_ ;Ċ\nH older\nS H\nĠn umpy\nĠst reet\nĠm ale\n\\ Model\nang ing\nĠB ill\nĠprevious ly\nB I\nĠSec ret\nĠm ist\nĠF ield\nup s\nĠPro cess\nĠke pt\nĠO T\nĠtrad itional\n. i\nam in\nĠhelp s\nAn y\norig in\nilt ers\nj u\nd esc\nĠA ccount\nĠ) čĊ\nk top\nol ly\nĠf s\nĠ ê\nĠ ut\nĠcent ral\n(t est\n.A n\nĠs atisf\nG R\nĠF ull\nĠhe at\nib er\nĠon to\nm os\nS chema\nĠfact ory\n\" .$\naw s\nSt atement\n(t arget\nĉ new\n.b e\nĠg uest\nĠm al\nAR Y\nĠre ached\nĠm ouse\nĠchall enge\nĉd ouble\nĠT em\nĠt error\nĠex tract\n_T O\nĠsepar ate\nĠm ir\nh elp\nĠcap acity\nĠProp erty\nk an\n_c reate\nĠL ight\n.p arent\nĠunderstand ing\nĠeas ier\nĠ| =\nĠen h\nĠf at\nĠprot est\nam m\n_ AT\n- of\nil s\nĠO h\nĠps ych\nĠ$ .\nind s\nĠrel ative\nsh op\nsh ort\nĠS and\nuest ion\nĠf ear\n/ ĊĊ\n. context\nĠschool s\nĠser ve\nz one\n_d b\nĠmajor ity\nex ample\nĠl ang\nĉ ĠĠ\nReg ister\nend o\nĠprocess ing\n_t emplate\n- user\nĠe g\nC OM\nĠBl ue\ni ro\nĠrem ote\nĠI T\n#! /\nĠred istrib\nra z\nĠS ince\nĠT ur\nBack ground\n== =\nĠref lect\nĠpro s\nc md\nĠwh om\nCom pat\nĠA re\nId entifier\nĠTh om\n_ port\ng u\nĠmon itor\nr m\nĠpat ient\nver ter\nĠg ain\n- ui\nIn st\nĠd ies\nA rea\n_f ilter\nĠgr at\nĠreal ity\nord inate\nol ved\nCont act\nĠcompl iance\n_ or\nĠV ar\nd l\nĠapp end\nG ER\n(m ax\n.re nder\nĠd ynamic\nordin ates\n_ options\n_c olumn\nĠb atter\ns pace\nL a\nĠS ource\n/b in\nĠd os\nĠBo ard\nĠTh read\nĠA L\n( config\nĠM er\nĠm iles\n_ header\nETH OD\niz z\nĠbenef it\nĠinteg r\n(c urrent\nul o\n. default\nĠD iv\nĠt on\no th\nerv ation\ned om\nĠb aby\nce ived\n.t op\nrior ity\nĠL ocal\nri age\nĠattack s\nĠh ospital\nĠfem ale\nĠLog in\nĠFl or\nĠch ain\nash ion\nText ure\nS ave\nĠf arm\n.cont ains\n.T est\nĠknow s\nĠgener ally\nip eline\nĠme ant\nenc ia\nĠn icht\nĠcont ents\nP M\nched ule\n( line\nC G\nj ob\nĠRe al\nu er\nf irm\nĠ Ø\net ro\n\" `Ċ\nĠspe ech\nĠth r\nfore ach\nĠw arn\nĉ l\nĠhe avy\n< li\nN e\nĠinvestig ation\nM ath\n- title\nĠch urch\nĠdes pite\nch ain\nĠwh atever\nar ian\nf n\nĠm eta\n} )ĊĊ\nU FF\nĠregard ing\n_S UCCESS\nm es\nĠInt ent\nĠres olve\npos s\nir a\nfor ce\no ice\nÃ ¢\nĠp m\nĠup dates\nA rr\nĠ Ñ\ntest ing\nĠto ward\nnt ax\në ĭ\nĠlist en\nĠgo als\nInstance State\nD r\nĠr are\nĠtr ail\nKe ys\nC al\nC ar\nĠPe ople\nĉ local\nclass es\nRe ference\n.for Each\nem b\nact iv\nĠpr im\nred ict\nĠr ad\næķ °\n.B ack\nĠsp read\nĠc lock\nĠv ir\ned itor\nĠeffort s\nĠbr anch\nĠind ust\nĠmot or\nĠam b\nĠdat etime\nĠren cont\nĠChrist ian\nĠAmeric ans\nf ull\nĠf mt\n.m ain\nĠca used\n_ update\nĠCont ent\nAT CH\nĠb ath\nĠE ach\nĠr adio\nach ment\nuz z\nSub mit\nĠre strict\nab in\nĠL oad\nĠext ension\nĠess ay\nĠh at\navi our\nto Be\n\": [\nĠoffer ed\nĠv ill\n(d ouble\næĹ ¥\nb c\n_f ree\nĠM iss\nĠB er\nĠ è\nĠL ike\nĠhelp ed\n.get Name\n_ AL\nĠsp irit\nĠAp ache\nw s\nĠthere fore\n( params\n_ img\nĠpe ace\nĠinc or\nĠEX PECT\nĠmin or\nip es\nĉ data\nselect or\nc ity\ntr ie\n.b ase\n_f rame\nĠopen ed\n/ json\nL Y\nn u\n.D e\nt f\nm argin\n.P arse\nĠp i\nĠe q\nb d\nField s\nĠT ree\nĠb an\nist an\nĊ ĠĠĠĠĠĠĠĠĊ\nĉg l\nĠprodu ced\ns ystem\nM ark\n_h ash\nĠb g\nĠconst it\nĠLe ague\nĠmiss ion\n_ format\n([ Ċ\nclus ion\n! \"\nÐ ·\nb reak\nĉs witch\nĠth er\nTrans form\nĠfoot ball\n- link\nr oute\n. auth\nĠb ag\nov ers\nĠen abled\nĠr ac\n( I\nC R\nanc ing\nĠman aged\n_ q\nNG TH\nĠm ac\nĠA uto\nament e\nĠ' ',\n.App end\nĠp in\n. item\nack ing\nĠocc as\np erson\nĠt i\n.Re g\nĠh aven\nĠg lass\nĠ\" </\nĠSim ple\nP rint\nĠsur round\nN O\nãĢĤ Ċ\nĠĠĠĠĠĠĠĠ čĊ\nĠMan y\nĠ\" _\nĠweek end\nĠsom ew\n.param s\nsm all\nAT ED\nĠpl ugin\nfield s\nĠInitial ize\no on\nat ile\ny e\nĠv ous\nL AG\nĠold er\nĠg am\nĠextrem ely\nĠh et\nen um\nĠS ET\nx ff\nĠt imer\n/ index\nĠcrit ical\nRow s\n_arg ument\nĠex ecute\nĠshow ing\n.x ml\n- list\nR ole\ntyp ename\n_m ethod\nth at\nch er\nĠâ Ĩ\nX T\nĠthous ands\nĉ n\nĠres p\n_pr ice\nol ut\nA g\nĠT wo\nĠbe comes\nĠh us\n.U se\nth eme\nur b\nĠ/* Ċ\nerial ize\nAR N\nĠlo se\nL ower\nĠv el\nĠdef ense\ncond ition\nĠb es\nĠd ry\nĠsc roll\n.S how\nI EL\nÐ¾ ÑĢ\nĠR est\nWh ere\nood s\nĠJ es\nĠw ire\n_IN FO\nĠstr ings\ng ment\nĠmatch es\nĠelect ric\nĠexcell ent\nĠC ouncil\nid ade\nĠw x\np ush\n_ entry\nĠtask s\nĠr ich\ns a\nĠSm ith\nUN CTION\nPoint er\npect ive\nĠw idget\nist a\nĠag ency\nĠs ich\nolog ies\nĠtri al\nal ysis\n. check\nAR K\nĠon Change\nab out\n', $\n( val\nĠpl aced\n_N O\nĠd an\n.e qual\nĉ ĠĠĠĠĠ\nĠwe ather\n.g ame\nĠdest ination\n_ USER\nie ce\nĠprovid er\n.l ast\nple x\nN ote\n/ js\nĠp Ã¥\nĠpl anning\nat tribute\nP RO\natch es\nĠ< -\nĠsee ing\nĠcan cel\n_ ind\n.key s\nĠvis ual\nĠC urrent\nĠCol lege\nĠR ock\nĠagre ement\nĠSt ore\nov ing\nĠcor ner\namp ions\nI SE\nF in\nĠprote ction\nĠf i\nPl ay\npl ugin\n) }\n.f rame\n- z\nĠtrans ition\nig in\nĠcandid ate\nĠUn ion\n_ values\n(m ap\nc le\nĠtre nd\nw ide\nare n\nL oc\nUT H\nĠB ay\nĠsmall er\ni us\nw ell\nĠcr iminal\nĠconf lic\nb ert\n_IN T\nĠinvest ment\nc ustom\nĠS ession\n_w rite\nan ia\nĠM ass\n_E Q\n_N OT\nĠviol ence\nArg ument\n_ email\nĠbel ong\n_f unction\nĠen emy\nem a\nĠAdd ress\n. empty\nĠin ner\nĠCont act\nLo ader\n< input\nĠC A\nl ot\nĠp ictures\nĠS upport\n_n ames\nL ayer\nĠC lick\nS um\nÃ ¦\nĠL ook\nu ous\nL ib\nFl ags\nte am\nE P\nh at\nover ride\naps ed\nĠlabel s\nqu is\nĠSt ream\n_de vice\nĠCom mit\n( root\n\" }\n.is Empty\nĉ M\nĠan gle\nĠB ecause\n%%%% %%%%\nĠa im\nĠst ick\nst mt\nag raph\nans wer\nĠcl in\nĠIs l\n. ext\nĠIN T\nĠst yles\nĠb orn\nĠsc r\nĠexp and\nĠrais ed\nText Box\nIL L\n-------------------------------- ----------------\nHT TP\n> )\n_ char\nres ource\nĠep isode\nĠ' _\nĠE s\nĠEar th\nÂł Âł\nUP DATE\nĠS ou\nu is\nt ypes\nĠm as\nĠf av\nĠcon struct\n_r ate\ner as\nĠ| Ċ\nrop erties\nĠext ernal\nĠap plied\nĠpre fix\not ed\nl ers\nĠc old\nĠS P\nĠCh urch\nĠOut put\nlos ed\nç ļ\nific ate\noper ation\nher it\nx FF\n. env\n_ err\nos h\nD irection\nC ancel\nĠFr ank\nĠfind ing\n. )ĊĊ\nĠr outer\nãĥ »\ns es\nĠc row\n== '\nĠs and\nĠr id\nit ure\nĠent re\nĠo bserv\nĠv ac\nð Ł\n- T\nA rt\nn ight\n. search\nĠex change\nĠdistr ict\n. os\nĠdep artment\nĠdoc uments\nĠcent ury\nĠN ext\nH ost\nĠK IND\nĠsus p\n- P\nre nd\n. em\nu ite\nist ers\n( json\nĠAn n\nw t\nat i\nĠHT ML\nwh en\nD irectory\nĠsh ut\n< a\ned y\nĠhealth y\nĠtemper ature\nĠG en\nĠmet al\nĠsub mit\nĠD O\nĠat tract\nĠ{ };Ċ\nĠW ord\nĠl l\nĠseem ed\nk o\nI ED\nĠl abor\n.Cont ext\nĠas set\ny ou\nĠc ars\nĠC olumn\nĠr Ã©\nĠs quare\nĠNS String\nâĢĿ ,\nap es\n.. .Ċ\nĠthan ks\n( props\nĠt ick\nĠexper iment\nĠpr ison\nt ree\n- text\nĠIO Exception\n-w idth\n_ST ATUS\nf ast\n-b ody\n- header\nĠgu ar\ncre te\nĠT im\nĠclear ly\nĠRepublic an\nĠjust ify\nÐ¸ ÑĤ\nĉ ĠĠĠĠ\nc ache\n; //\nĠpres ence\nĠfact ors\nĠemploy ee\n] ))\nM ember\nĠselect or\nb or\nĠM ex\nçļ Ħ\nut ex\n_t ag\nail ure\nĠN et\nĠre li\nE G\nĠf printf\nĠte en\nlo ss\nĠle aving\nDe legate\nĠbe at\nĠmin ute\nsub scribe\nĠredistrib ute\nCon stants\nĠcan cer\n/ {\nB L\nĠs pan\nĠCh ild\nC enter\nĠear th\nY S\nĠLe vel\nĠse a\n.s upport\n.in ner\n. Item\nill ing\nĠĠĠĠĊ ĠĠĠĠĊ\nĠL abel\nĠE st\n( arg\nbo Box\nĉf oreach\nc os\nF ailed\nsw ers\nEd itor\nr ont\nĠM P\nex pr\nĠL ife\nĠ? ?\nÃ¶ r\nĠatt end\nĠQ ue\nĠspec ies\n- D\nĠa us\nStr uct\nĠadvant age\nost on\n-b lock\nin itial\nC RE\nĠtr uly\nĠcomp are\nor ney\nĠs pect\nF ull\nb es\nĠvis ible\nĠm ess\nst ances\nĠcl oud\n_v ersion\nĠf urn\nic ago\nLO W\nĠtraff ic\nĠf ol\nrypt o\nĠdecl ar\nĠsl ot\nĠEx t\nĠEng land\nĠU nder\nĠt a\nlet ter\nĠoffic er\nĠDon ald\nY es\n_ json\nIT ableView\nĠU SE\nmploy ee\nĠopin ion\nĠA ut\nb order\nĠad vice\nĠautom atically\nis co\nĠm m\n. vis\nam l\nĠinitial ize\nĠ( {\nĠ ;ĊĊ\nĠgener ation\nĠb its\nclip se\nĠun f\nut ors\npl t\nĠdel ta\nest roy\nis is\n< br\nĠlimit ations\nĠend ed\nĠM ad\nil m\nTh ese\nĠMin ister\nĠch art\nF ragment\nĠindepend ent\nY ear\nĠin str\nĠt ags\nA VE\nĠAr ch\nst op\nPro gress\nĠm i\nĠlearn ed\nG e\nĠhot el\nS M\nT YPE\nĠc y\nERS ION\nun ately\nl imit\ns el\nĠmov ies\nĠste el\no z\ng b\nĠC amp\ns ite\nĠLog ger\nP LE\nÐ¾Ð ´\n. right\nĠC ore\nĠm ixed\nst ep\nĠput s\ns uper\nR outer\n. Http\nly ph\nĠColor s\nĠandroid x\n. str\nĠinn ov\nĠde ck\n' >Ċ\nap ers\n] (\ncont inue\ns pec\nĠR oad\nAS H\nili ar\nĠcontin ues\nĠapp oint\nĠ# Ċ\nĠV ir\nĠ?> \"\nĠb in\n} \",\ngo ing\ne ach\nB D\nĠA ccess\nD oc\nĠMan agement\nB ER\nask et\n.get Instance\nĠestablish ed\nso cket\nIN S\nĉv irtual\nĉ result\nRE AD\n_ height\nĠF ont\nĠ( );Ċ\n_ html\nĠneighb or\nl or\nĠg ather\nĠ} )ĊĊ\nĠid entity\nĠf ab\np adding\nĠR oute\nEnumer able\nÃ ´\nĠfor ced\n/j query\n.ĊĊ ĊĊĊĊ\nres ents\n_ left\n.P aram\nĉ throw\nĠH am\nĠevent ually\nac er\np ub\nĠtr a\nun ique\nd el\nĠFlor ida\nĠC lean\nx a\nĠÂ ·\nĠvalid ate\nVis ual\nEx pression\n_f unc\nm ember\nĉ h\ntr l\nĉ G\nnap shot\nĠProp Types\nv in\n] )ĊĊ\now l\nif ies\nĠ$ ('.\nĠCont ext\nĠTo ast\n. Key\nĠoffic ers\n/ n\ns n\nund efined\n. items\nut ow\nam age\nĠaccount s\nook ie\nSe ction\nici ans\nĠad vis\n( is\n[: ,\nĠFr ance\nF unc\nic ious\nĠto k\nCh annel\nĠA D\n_N UM\nĠtime out\nlem ma\nrem e\nu j\n.A l\nuc lear\n( os\n(\" <\n[ Ċ\nf etch\nĠb al\nĠgu id\n- align\nĠW rite\nĠOn ce\nutow ired\nOD ULE\nĠp itch\nC F\nby tes\nĠCom mission\nĠincre d\nP ER\n_ response\nĠL os\npar ser\nĠass ume\n. Request\nĠT oken\n_p osition\nĠn om\n- term\nĠrem aining\ni ostream\nĠpie ces\nap y\nĠL ess\nr ange\numb n\npr ise\n_ option\nIm pl\nk wargs\nĠbusiness es\nAl ert\nĠpart ies\nĠCont ainer\nĠPr ivate\nĠPl an\nĠregister ed\nĠj our\nack er\nÐµÐ½ Ð¸\n/ >\nch at\nse ct\nĠcre ation\nolut ely\nĠinst ant\nĠdel ivery\nick en\ny es\nĠFr anc\nbl ing\nend a\n[ (\n_r ange\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠ\nĠsched ule\nCon n\nĠthan k\nx d\nĠh ook\nĠdocument ation\nParam eters\nH ello\nv t\nĠart icles\nĠw est\ndef ined\n. select\nok ens\nĠV AL\n.f ile\nres et\nĠmy s\nĠM A\n] ),\nĠc ities\nrel ated\nå Ľ\nĠappe ared\nĠw id\n.p anel\nĠIn s\n. entity\nĠde cre\nĠL ou\n(t ime\nĠTh ank\n.create Element\nĠmention ed\noun ce\nĠT ry\nĠW all\n/ images\nĠM enu\n' čĊ\nĠE r\nĠcrit ic\nĠY ear\n( param\nĠf lo\nN N\noot er\nĠ ];Ċ\nĠA ff\n\" github\nroom s\nĠh yp\ng lobal\nĠa vec\næľ Ī\nĠcomplet ion\nĠcon d\nonym ous\n( temp\nĠst ars\nĠre levant\nĠcover ed\nĠel im\n_t ypes\n( bool\nĠt u\n_ex ists\nĠsec ure\nĠst ored\n] /\nx F\nĠCont roller\nĠm igr\nM I\nĠD en\nĠann ual\nU IL\n- and\nĠcr ime\nb el\nĠk itchen\n@ g\n_p h\nourn ament\nĠS ocial\nĠS pecial\nlog ger\nĠt ail\nĠun known\nd ed\nĠapp rec\n(d b\nc f\nĠass ign\n- out\nĠM ont\nd p\nw idget\nĠst one\n- primary\n. grid\nResult s\naz z\nĠda ughter\nĠcur r\nĠl in\nĠs outh\nform s\nĠO UT\nlet te\nak s\nig ure\nĠE U\nvar iable\nĠb rief\nĠSc ott\nĠcon ference\nand a\n_ lock\nor al\nĠe ine\nOR S\n//////////////////////////////// ////////////////////////////////\ness o\nĠr is\nĠg ender\nest ic\nL icense\n( out\nĠm s\nSe e\nĠwill ing\naz e\nĠs ports\nĠy es\nl u\nĠp urs\n/j avascript\n- pro\nnav bar\n_pro duct\n/ bootstrap\nĠdr iving\nĠ Ä\nĠpro pos\nult ip\nup lic\n. email\nĠappro x\n( cl\nĠwe ar\nĠrep ly\nass et\nĠ ice\nĠt x\nk r\nĠGerman y\nĠGe orge\nĠc b\nĉ err\nM ove\nĠpol y\nvo ice\n} \"\nĠan imal\nA v\nĠL ocation\nĠn ative\n] [\"\n< double\nĠm ais\n, int\nĠpre par\nĠinter val\nplement ation\n_ ERR\nĠb ug\n> \"\nst at\nĠ} ,čĊ\n< span\nĠfa ith\nĠ rom\npre v\nĠE lect\nF ind\nĠg od\not or\n// ----------------------------------------------------------------\norig inal\nC pp\nĠSen ate\nĠposition s\nĠweap ons\nĠco ff\nĠpur poses\np ol\nĠim press\nĠanim als\n. Entity\n(n p\nĠmur der\nĠ` `\nfl ag\nĠsol utions\nĠAct ive\nĠb right\n.d ate\nĠsit u\nï¼ Ī\n. ID\nĠs ie\n), čĊ\nak t\nS pace\n.d at\n.index Of\nh an\naz ine\nĠZ e\nĠcr ash\n( /\n> =\nÐ ±\niv a\n.Auto Size\nĠL at\n_ ext\nInitial ize\n.reg ister\nOP Y\nĠre verse\n_d is\n'] [\nĠprom pt\nont o\nĠJ ournal\nr outer\nĠmys qli\n# else\n) \"\n-x s\nlet s\nph an\n. LE\nW ill\nĠaff ord\nĠsk ill\n-t oggle\nN C\nB ind\nT S\nJ ust\niter al\nY P\nĉ unsigned\nĠw ind\n)) :Ċ\nĠw arning\nĠW ater\nĠd raft\nĠc m\nĠs am\nĠhold ing\nz ip\nĠSc ience\nĠsup posed\nG en\nĠdi et\n< h\nĠP ass\nv i\nĠhus band\nï¿½ ï¿½\nn ote\nĠAb out\nĠIn stitute\nĠcl imate\n.Form at\nĠn ut\nest ed\nĠapp arent\nĠhold s\nf i\nnew s\nC M\nv ideo\n': '\nD ITION\np ing\nĠsen ior\nw a\n-- >Ċ\n_ default\nĠD atabase\nre p\nE SS\nner gy\n.F ind\n_m ask\nĠr ise\nĠk ernel\n:: $\n. Q\nĠoffer ing\nde cl\nĠC S\nĠlist ed\nĠmost ly\neng er\nĠblock s\nol o\nĠgover ning\n\\ F\nĠcon cent\n.get Text\nĠm b\nĠocc urred\nĠchang ing\nSc ene\n_C ODE\nB eh\n\" The\nĠt ile\nĠAssoci ation\nĉ P\nal ty\n_ ad\nod ies\ni ated\nĠpre pared\nposs ible\nĠm ort\nTE ST\nĠign ore\nĠcal c\nĠr s\nĠassert Equals\nĠs z\nĠTH IS\n. \"Ċ\nĠcan vas\nj ava\nĠd ut\nVAL ID\n.s ql\n. input\nĠa ux\nS up\nĠart ist\nV ec\n_T IME\n.string ify\net ween\nĠC ategory\nĠ[ -\nĠDev Express\nĠJ ul\nĠr ing\n. ed\nY Y\nL et\nText Field\nĠfl at\n_p rint\nĠOT HER\nad ian\nĠcheck ed\ne le\nAl ign\nstand ing\nĠ[ ],\nĠl ab\nuck y\nĠChrist mas\n( image\n.m odule\nĠl ots\nĠslight ly\n(f inal\ner ge\nè ¿\nĠPol ice\nĠR ight\nĠaw ard\nĠO S\nĠ{ }ĊĊ\nĠp tr\nov es\nic ated\nÐµÐ ¼\nĠman age\nolid ay\nAm ount\nool Strip\nt body\nN av\nw rap\nB B\nĠwatch ing\nari os\nĠoption al\n_ K\nĠL icensed\n.M ap\nT imer\nĠA P\nĠRe v\n( o\n, c\num in\neta iled\nĠH y\nĠbl ank\nag ger\nĠS elf\n() [\n.m ake\near n\nch annel\n< pre\nble m\n_p assword\n_s p\nic ing\ne z\nĠthe ory\nĠT er\n, n\nlog o\nĠHT TP\n() ))\n.h andle\n> ;Ċ\nW orld\nĠpy thon\nĠl if\nĠtr av\nĠcon ven\ncom pany\nĠCl ub\nV er\nB tn\nĠz one\nproduct s\nĠE duc\nĠver ify\nĠM il\non o\n] );ĊĊ\nEN CE\nĠpack et\nĠc er\nĠen umer\nĠpar s\nform ed\nĠocc up\nt re\nĠexerc ise\nD ay\n_s um\nĠask ing\napt ion\nĠord ers\nĠsp ending\nĠE RR\n.D is\nĠU til\nâĢľ I\n\\ '\n? )\n/ >Ċ\nĠem ot\nĠinflu ence\nĠAfr ica\natt ers\nÙ ħ\n.s ession\nĠch ief\nĉĉĉĉĉĉĉĉ ĉĉĉ\nĠto m\nclud ed\nser ial\n_h andler\n.T ype\nap ed\nĠpolic ies\n- ex\n- tr\nbl ank\nmer ce\nĠcover age\nĠr c\n_m atrix\n_ box\nĠcharg es\nĠB oston\nP e\nĠcirc um\nĠfil led\nĠn orth\nicture Box\nĉ res\nè ®\nĠter min\nĠ[ âĢ¦\nIRE CT\nĠb er\nĠ\" ../../\nret ch\n.c ode\n_c ol\nĠGovern ment\nĠarg v\nĠL ord\nas i\nEx ec\nĉ let\nvert is\nĠdiscuss ion\nen ance\nout ube\ntype of\nĠs erved\nĠP ut\nĉ x\nĠs weet\nB efore\nateg y\n. of\nĠM aterial\nS ort\nON T\nig ital\nWh y\nĠs ust\nĠ ç\nab et\nĠseg ment\nĠ[ ],Ċ\nĠMus lim\nĠfind ViewById\nc ut\n_T EXT\nĠM ary\nĠlo ved\nĠl ie\nĠJ O\nĠis set\nmon th\nĠpr ime\nt i\nĠCar ol\nU se\nĠP op\nĠS ave\nInt erval\nex ecute\nd y\nĠI ran\n_ cont\nĉ T\nĠph ase\ncheck box\nwe ek\nĠh ide\nĠt il\nĠj u\nC ustom\nb urg\n/ M\nT ON\nĠqu ant\nĠr ub\nix els\nĠinst alled\nĠd ump\nĠproper ly\n( List\nĠdec ide\napp ly\nH as\nĠkeep ing\nĠcitiz ens\nĠj oint\np ool\nS ocket\n_ op\nĠweap on\ngn ore\nĠEx ec\nott en\nĠM S\nĠ( -\nĠRe view\nĠex amples\nĠt ight\n! (\nD P\nĠMessage Box\nĠphot ograph\nUR I\nÃ© t\nl ow\nĠGr and\n.p ersistence\nĠmaint ain\nĠnum s\nĠz ip\nial s\nĠG ets\npe g\nĠB uffer\n~~ ~~\nra structure\nĠP L\nu en\nob by\nsize of\nĠp ic\nĠse ed\nĠexperi enced\nĠo dd\nĠk ick\nĠproced ure\navig ator\n- on\n, j\nĠAl though\nĠuser Id\nac cept\nBl ue\nIC olor\nl ayer\nav ailable\nĠend s\n.t able\nĠdat aset\nb us\nĠexpl ain\n( pro\nĠCommit tee\nĠnot ed\n] :Ċ\nD im\nstd io\n. \",Ċ\n_s ource\nĠWe ek\nĠEd ge\nĠoper ating\nĠest e\ni pl\nag ination\nĠpro ceed\nĠanim ation\n.Model s\nĠW atch\ni at\nĠopp on\n/ A\nRe port\nĠs ounds\n_b uf\nIEL D\nĠbu nd\nĉ get\n.p r\n(t mp\nĠk id\n>ĊĊ Ċ\nĠy ang\nNot Found\nÑ Ĩ\nm ath\n@g mail\nĠL IMIT\nred ients\nĠv ent\navig ate\nL ook\nĠrelig ious\nĠr and\nri o\n( GL\n_ ip\nu an\nici ency\nĠCh ange\n> čĊčĊ\nĠEnt ity\nĠrencont re\nĠR et\npl an\nÃ© n\nBO OL\nur ies\ntr ain\nDef inition\n======== ====\nz z\nAn imation\nĠO K\n_m enu\n.b l\n_s core\nĠac ad\n( System\nĠref resh\n'=> $\n.G raphics\nament o\np id\nt c\nĠt ips\nĠhom es\nĠf uel\nâ ĸ\n_h elper\nĠĠ čĊ\nĠR oom\n.C lose\n_ attr\nĠM ount\nĠE v\nar ser\n_t op\ne ah\nĠDe lete\nãĢ į\nu ke\nĠus age\nar ia\n_de v\nĠtext ure\nĠconvers ation\ne per\nBe an\nd one\nnon atomic\nĠSe cond\nĠshoot ing\n_p re\nCom ponents\nĠ] ĊĊ\n__ ,\nstit ution\n.Ch ar\n> ();ĊĊ\nĠpresent ed\nĠw a\nok er\n- ĊĊ\nin er\nĠbe coming\nĠinc ident\nAt t\nĠreve aled\nfor c\nĠbo ot\n.p age\nEnumer ator\n_ ->\nPh oto\nĠs pring\n. \",\nĠD ictionary\nB JECT\nĠloc ations\nĠs amples\nInput Stream\nĠB rown\nĠst ats\nqual ity\nÑ ħ\n-d is\nĠhelp ing\nĠp ed\n( se\nĠWh o\nal ian\nint ernal\nĠf t\n> ().\n-> {\nĠm ine\nĠs ector\nĠg ro\nĠopport unities\nĠÃ ¼\nĠm p\nĠalleg ed\nĠdoub t\nM ouse\nAb out\n_p art\nĠch air\nĠstop ped\nlo op\nent ities\nĠapp s\nans ion\nĠm ental\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠ\nF R\nĠdef end\nc are\nĠide al\n/ api\nur face\nĠe le\nul ator\nĠR ights\nangu ages\nĠfund s\nĠad apt\nAt tributes\nĠdep loy\nopt s\nĠvalid ation\nĠconcern s\nu ce\n.n um\nult ure\nil a\nĠc up\nĠp ure\n.F ore\nĠHash Map\n.value Of\nas m\nM O\nĠc s\nĠst ores\nĠ ************************************************************************\nĠcommunic ation\nm em\n.Event Handler\n. Status\n_ right\n.set On\nS heet\nĠident ify\nener ated\norder ed\nĠ\" [\nĠs we\nCon dition\nĠA ccording\nĠpre pare\nĠro b\nP ool\nĠs port\nr v\nĠR outer\nĠaltern ative\n( []\nĠCh icago\nip her\nis che\nĠDirect or\nk l\nĠW il\nkey s\nĠmy sql\nĠw elcome\nk ing\nĠMan ager\nĠca ught\n) }Ċ\nS core\n_P R\nĠsur vey\nh ab\nHe aders\nAD ER\nĠdec or\nĠturn s\nĠr adius\nerr upt\nC or\nĠm el\nĠin tr\n( q\nĠA C\nam os\nM AX\nĠG rid\nĠJes us\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠ\n.D E\nĠt s\nĠlink ed\nf ree\nĠQ t\nĠ/** čĊ\nĠf aster\nct r\n_ J\nD T\n.C heck\nĠcomb ination\nĠint ended\n- the\n- type\nect ors\nam i\nut ing\nĠum a\nX ML\nU CT\nA p\nĠR andom\nĠr an\n.s ort\nĠsort ed\n. Un\n_P ER\nit ory\nĠprior ity\nĠG al\nĠO ld\nh ot\nĠD isplay\n(s ub\n_T H\n_ Y\nĠC are\nload ing\nK ind\n_h andle\n, ,\nr ase\n_re place\n.add EventListener\nĠR T\nĠenter ed\ng ers\nĠ ich\n( start\n/ app\nĠbro ther\nM emory\nOut let\nĠ utf\npre c\nĠn avigation\nOR K\nĠd st\nD etail\nĠaud ience\nĠd ur\nĠcl uster\nun ched\nĠ ],\nĠcomfort able\n. values\nĠT otal\nĠsn ap\nĠstand ards\nĠperform ed\nh and\n(\" @\nå Ń\nĠph il\nib r\ntr im\nĠfor get\nĠdo ctor\n.Text Box\nicon s\n, s\nĠO p\nS m\nSt op\nĉ List\nĉ u\nCom ment\n_V ERSION\n.X tra\nP erson\nr b\nLO B\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĊ\nĠCent ral\nIC K\nra q\nĠput ting\nĠm d\nĠL ove\nPro gram\nB order\no or\nĠallow ing\na fter\nĠent ries\nĠMay be\n] ).\nĠSh ort\n) \\\n.n ow\nf riend\nĠpre fer\nĠG PIO\nos is\nĠGame Object\nĠsk ip\nĠcompet ition\n_m atch\nlic ations\n_CON T\n.group Box\nĠal s\n\" We\n_e q\nl an\n_ search\nĠMus ic\nas is\nĠb ind\nĠIs land\nr um\n( E\nĠse at\nV ideo\nĠa ck\nree k\n={ ()\nĠr ating\nĠrestaur ant\nDE X\n(b uf\npp ing\nual ity\nĠle ague\nĠfoc used\nap on\n$ data\nCL UD\nCLUD ING\nĠabs olute\n( query\nĠtell s\nA ng\nĠcomm unities\nĠhon est\nok ing\nĠap art\nar ity\n/ $\n_m odule\nĠE nc\n. an\n.Con fig\nC re\nĠsh ock\nĠAr ab\nI ENT\n/ re\nĠre trie\nycl er\nis a\nĠO rgan\n. graph\nĠ í\nĠB AS\nEn um\nĠposs ibly\nÑĢ Ð°Ð\nĠJapan ese\nĠc raft\nĠPl ace\nĠtal ent\nĠfund ing\nĠconf irmed\nĠc ycle\n/ x\nG E\nĠhe aring\nĠpl ants\nĠm outh\np ages\nor ia\nĠRem ove\n_t otal\nĠo d\noll apse\ndo or\nĠb ought\nĠadd r\nAR CH\n_d im\ndd en\nĠdec ades\nRE QUEST\nĠvers ions\nf ire\nĠmov es\nf b\nĠcoff ee\n.con nect\nĠR ow\nĠs chema\nS cope\n- Type\nĠfight ing\nĠret ail\nĠmod ified\nT F\nFile s\nn ie\n_com mand\nst one\nĠ ÑĤ\n_ thread\nĠb ond\nĠDevelop ment\nĠp t\nF ORM\nple t\nĠident ified\nc pp\nĠc oding\nok ed\nĠM aster\nID TH\nĠres idents\nred it\nĠPh oto\n= -\nun te\nate ur\n_ST ATE\nĠS ing\nĠshe et\n. val\nor se\nĠh ers\nĠdetermin ed\nCom mon\nĠw ed\n_ queue\nP H\nĠAt l\ncre d\n/L ICENSE\nĠm es\nĠadv anced\n.j ava\n.S h\nG o\nk ill\nf p\n_set tings\nĠp al\nĠtr uck\nĠcomb ined\nĠ\" ${\nĠCor por\nĠjo ined\nĠJ ose\nĠC up\nun s\nest ival\nlev ision\nĠbro ken\nĠmar riage\nĠWest ern\nĠrep resents\nĠT itle\nĠs s\n.A ss\nongo ose\nient o\n< >();Ċ\nĠabs olutely\nĠsm ooth\nTER N\nĠUn less\nW ord\nĠmer ge\nig an\nĠV ol\nĠn n\n.get Id\nĠÐ ·\nĠsex y\nĠseek ing\nS ingle\n. this\nĠk om\nb ound\n; \"\nĠfont Size\n_d f\nĠinj ury\n( H\nĠiss ued\n_ END\n: self\nĠp atch\nĠle aves\nĠad opt\nFile Name\nãĢ Ĳ\nĠexec utive\nĠBy te\n] ))Ċ\nĠn u\nout ing\nclud ing\n- R\n. options\nĠsub stant\nav ax\nĠB UT\nĠtechn ical\nĠtw ice\nĠm Ã¡s\nĠun ivers\ny r\nĠdr ag\nĠD C\nĠs ed\nĠb ot\nĠP al\nĠH all\nforc ement\nĠa uch\n.m od\nnot ation\n_file s\n.l ine\n_fl ag\n[ name\nĠres olution\nĠb ott\n(\" [\nend e\n( arr\nF ree\n( @\"\nĠD istrict\nPE C\n: -\nP icker\nĠJ o\nĠĠĠĠĠ Ċ\nĠR iver\n_ rows\nĠhelp ful\nĠmass ive\n--- Ċ\nĠmeas ures\nĠR untime\nĠwor ry\nĠS pec\nĉ D\nãĢ ĳ\nĠ) {Ċ\nĠwor se\n(f ilename\nĠl ay\nĠmag ic\nĠThe ir\nou l\nst roy\nĠWh ere\nĠsu dden\nĠdef e\nĠb inding\nĠfl ight\nĠOn Init\nĠW omen\nĠPol icy\nĠdrug s\nish ing\n(' ../\nĠM el\npe at\nt or\nĠpro posed\nĠst ated\n_RE S\nĠe ast\nĠCON DITION\n_d esc\nĠwin ning\nfol io\nM apper\nĠP an\nĠAn ge\n.s ervlet\nĠcop ies\nL M\nĠv m\nå į\nĠd ictionary\nS eg\nel ines\nĠS end\nĠ iron\nĠF ort\n.d omain\nĠdeb ate\nNot Null\ne q\nach er\nl f\nĉf mt\nĠlaw y\nÄ Ł\nĠM en\nĠtr im\n( NULL\nĠ! !\nĠp ad\nĠfollow s\n\"] [\"\nre qu\nĠE p\n.g ithub\n( img\net o\n(' \\\nS ervices\numbn ail\n_m ain\nple ted\nfort unately\nĠw indows\nĠpl ane\nĠCon nection\n. local\nu ard\n} \\\n== \"\nand on\nĠR oy\nw est\nig inal\nem ies\nit z\n') :Ċ\nĠP eter\nĠt ough\nĠredu ced\nĠcalcul ate\nĠrap id\nc ustomer\nĠeff icient\nĠmed ium\nĠf ell\n. ref\nĠC as\nĠfeed back\nS peed\n( output\naj e\nĠc ategories\nĠfe e\n} ;\nĠde leted\nre h\nĠpro of\nD esc\nB uild\nĠs ides\n.Array List\n- %\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠ\nØ ±\n.m atch\nÐ» Ð¸\nĠfe els\nĠachie ve\nĠcl im\n_ ON\nĠC D\nĠteach er\n_c urrent\nb n\n_P L\nist ing\nEn able\nG EN\nĠt v\nĠso ck\nĠpl ays\nĠdis count\nĠK E\nĠDe bug\nF ore\nĠI raq\nĠappear ance\nM on\nĠst yled\nĠH uman\ni ot\nĠH istory\nĠs ac\nĠC ollection\nĠrecomm ended\n.Se lected\nĠorgan izations\nĠdiscover ed\nco hol\nad as\nĠThom as\nM ay\nĠcons erv\nĠdom in\nĠF ollow\nĠSe ction\nĠTh anks\nUser name\nĠrec ipe\nĠwonder ful\n.s leep\n_ if\nĉĊ ĉĊ\norn o\nĠr u\n_t arget\n.\" \"\nà ¦\nEvent Args\nĠinput s\nĠf if\nĠv ision\nc y\nĠS eries\n) (((\nĠtr ading\nĠmark er\nB egin\nĠtyp ically\nĠca uses\ndrop down\n_DE BUG\nĠdet ect\nc ountry\n! \");Ċ\nĉ R\napp y\nĠc ref\n(' <\n\" =>\nĠL E\nread er\nĠadmin istr\nÃ µ\nuck et\nĠf ashion\n. char\niz ar\nĠdis able\nĠsu c\nĠL ive\niss ue\nĠmet adata\nfl ags\nĠ ðŁ\nĠcomm itted\nĠv a\nĠr ough\nĠ'' 'Ċ\nĠhigh light\n_var s\nV O\nĠenc oding\n- Z\n_s ign\n$ (\"#\nĠr ain\nreate st\nĠEN D\nSe lection\nĠcandid ates\nĠs av\n. Empty\nĠdec isions\nĠcoll abor\nrid ge\nfe ed\nress ion\nĠperson s\nV M\neg a\n_B IT\nA ccording\nack ed\nĠdoll ars\n_lo ss\nĠC ost\n} \"Ċ\nNot ification\nĠpro stit\nĠauthor ity\n.re c\nĠsp okes\nĠT oday\nist ant\nĠHe ad\nâĢĿ .\nertain ment\nce an\ncul ate\nĠv en\nHow ever\n_ arr\nĠtok ens\nG raph\nĠJ ud\nĠVir gin\nĠS erial\nun ning\nM utable\nag ers\n.c sv\nĠdevelop ing\nĠinstruction s\nĠprom ise\nĠrequest ed\n_ encode\n/ \"\nĠI con\nu ilt\n- day\nĠint elligence\n. IS\nĠO bservable\nĠH ard\nBo ol\nident ial\n.An chor\nĠsell ing\nC I\nAG ES\nt le\nb ur\nUFF ER\nR Y\nĠbig ger\nĠr at\nĠfam ous\nĠtyp ename\nĠexpl ained\n} }Ċ\nĠn uclear\n- N\nĠcr isis\nĠEnt er\nĠan swers\n/ ${\n/ pl\nĠse qu\n_n ext\nm ask\nĠstand ing\nĠpl enty\nĠC ross\nĉ ret\nd ro\nĠC ast\n= true\nĠCh ris\nic io\nĠM ike\nDec imal\nadd Component\nL en\nĠco ck\nĠ# {\nUR N\n< tr\nĠauthor ities\nRes ources\n- H\nB ottom\n_ qu\nput er\nester day\nDis patch\ns ince\nĠfam iliar\n, i\nV C\nĠm ent\n, C\nĠfre edom\nĠr outes\nĠB uy\nĠcomm ands\nĠm esh\n/ C\nĠSet tings\n- style\nĠw itness\nĠc le\nĠun ion\nef ault\nare t\nĠthought s\nĠ ----\n_pro cess\n_ us\ning ly\nU ES\nT ouch\nĠÐ ¼\n_ open\nĠV ec\nĠre ward\n.C lick\n/ :\nĠn ie\nCh anges\nM onth\nï¼ Ł\nĠexec ution\nĠbe ach\n( Integer\nĉ a\n/ '\n.Font Style\nĠab ort\nĠS ingle\n( isset\nĠd p\nĠ}} </\nĠM a\n.R ows\nĠP et\n% )\nr and\né Ģ\nR ule\nĠh el\nR ITE\nĠqu iet\nĠr atio\nĠCONDITION S\nos oph\nĠI L\nĠad vent\nc ap\n; </\nĠUS B\nD river\nĠour s\nĠJohn son\n. K\n_de lete\n. q\nĉ str\n/ common\nĉ string\nĠP DF\nact s\n.A ction\nĠQu ery\n. response\nĠG irl\nĠprocess es\n< Integer\nim o\nĠadd s\nĠentire ly\nĠwas h\n/ ************************************************************************\nĠanim ated\nĠprof it\nenc ing\n/ S\nĠS ym\nĠman ual\nDown load\nĠ(! $\nĠmot ion\nweb pack\n-b ottom\nĠgrat uit\nP G\n(: ,\nĠ era\nĠh o\nĠJ im\nqu ir\nĠBAS IS\nÃ¡ n\nD ER\nĠexp ensive\n_c o\nB ounds\nW ell\nĠDemocr atic\nĠâĨ Ĵ\n.R em\n_S Y\nn ames\nĠV i\nĠis instance\n\\ \">\nĠ* =\nĠP S\nĠdanger ous\n[ p\nOM E\nO ther\nĠString Builder\nPoint s\nhead ing\nĠc urrency\nĠpercent age\n_A PI\nĠclass ic\nthe ad\nĠM O\nF E\nId x\naw ait\nĠÃ ¨\nĠacc ident\nĠvari ant\nĠm yst\nĠL and\nĠB re\nĠh arm\nĠA cc\nĠcharg ed\nion es\nVis ibility\nar ry\nĠL anguage\nĠwalk ing\n\" .ĊĊ\nif er\nĠleaders hip\n.F rom\nyn am\nĠt imestamp\ni pt\nĠH as\nREF ER\nĠIt s\nĠlist ener\nUT E\n_d escription\nĠexperi ences\nĠcre ates\nR S\nc art\nbl ack\nĠcho ices\nw ar\nĠ'' '\nĠorder ed\nĠeven ing\nĠp il\nĠt un\nĠB ad\n( app\nr andom\nĠexp licit\nĠarr ived\nĠf ly\nĠecon om\n-m ail\nĠlist s\nĠarch itect\nĠP ay\nĠd s\nĠS ol\nĠveh icles\nH z\n- com\nĠk ing\n_e qual\nĠH elp\nĠab use\n-- ;Ċ\nĠex tr\nĠchem ical\nä ¿\nĠor ient\nĠbre ath\nĠS pace\n(e lement\nw ait\nDE D\nig ma\nĠent r\nĠs ob\n- name\nĠaff ected\nik a\nĠco al\n_w ork\nĠhundred s\nĠpolit ics\nsub ject\nĠconsum er\nANG E\nĠrepe ated\nS end\nĠ# [\nĠprot ocol\nĠlead s\nuse um\nE very\nIm port\n(c ount\nĠchalleng es\nĠnov el\nĠdep art\nb its\n.C urrent\nĠ` ${\not ing\n( \\\nĠcreat ive\nĠbu ff\nĠintrodu ced\nus ic\nmod ules\nA re\n-d oc\nl anguage\n_c ache\nĠto d\n? ></\nom ething\nĠh un\nå º\nat ers\nInt ent\nĠimplement ed\nĠC ase\nChild ren\nĠnot ification\nRender er\nW rapper\nObject s\nt l\n.Cont ains\nPl ugin\n. row\nĠfor g\nĠper mit\nĠtarget s\nĠI F\nĠt ip\nse x\nĠsupport s\nĠf old\nph oto\n} ,čĊ\nĠgo ogle\n$ ('#\nĠsh aring\nĠgood s\nv s\nĠD an\nR ate\nĠMart in\nĠman ner\nl ie\n. The\nInt ernal\nĠCON TR\nM ock\nR IGHT\nĠ' {\nĠcontrol s\nM at\nĠm and\nĠext ended\nO k\nĠem bed\nĠplan et\nĠN on\n- ch\n) \",\nep ar\nĠbelie ved\nĠEn vironment\nĠF riend\n- res\nĠhand ling\nn ic\n- level\ns cri\nX ml\nB E\nung en\nĠal ter\n[ idx\nP op\nc am\nĠ( ((\nĠsh ipping\nĠbatter y\niddle ware\nM C\nĠim pl\not ation\nĠL ab\n< form\nĉ name\nĠG ames\nr ay\nEx tra\nT wo\n( player\nĠL es\nÂ °\nĠchar set\nĠjour ney\net ing\næ ĺ\nâ Ķ\nçĶ ¨\nĠd in\nĠper man\nĠsol ve\nĠla unched\nĠn ine\nĠs ending\nĠtell ing\n.p assword\nĠM atrix\ner ic\nĠgr ab\n. u\nĠLib rary\nĠdeb t\nIN K\n.find ViewById\nĠfrequ ency\n. ad\n_T EST\nĠneg ot\nĠAfr ican\ns ender\nÅ ¡\nG lobal\nĠexpert s\n++ )čĊ\nĠdep ending\ngr ay\nĠjud ge\nĠsent ence\nlos ure\nA c\nĠtr ace\nEd ge\nĠfriend ly\nĠconcern ed\nb log\nĠclaim ed\n} '\nint eger\n_t ree\nĉ continue\nx i\nĠaccept ed\n_ one\nĠEduc ation\nublish ed\ng on\napp oint\nout s\nĠmin ing\nĠsong s\nĠhers elf\nĠgr anted\nĠpass ion\nĠL ake\nĠlo an\nu ent\nch ant\nĠd etailed\nex cept\n_c md\nĠH E\nRel ated\nz t\n' },Ċ\nĠspecific ally\nSt atic\nĠcar ried\nAN S\n\\ \":\nC reated\nĠc ul\n] -\n_ api\nF P\nĠsit ting\nĠ\" \")\nĉg oto\nĠE qu\nĠass ault\nk ins\nanc er\nog en\nĠvot ers\nĠPro t\nDes criptor\nãĥ ¼\n.Ass ert\nbs ites\nost er\n-m enu\nĠar ms\n.C lient\n.back ground\nav ity\nĠv ul\n_M ASK\nĠhous ing\nĠbe ar\n_ iter\np ired\nĠmark ets\nĠSt udent\nĠt icket\nĠmill ions\nfl ater\n) =\nĠre cover\nĠFor ce\nĠBo th\nĠvict im\nĠD isc\nre port\nĠfour th\nĠAs sembly\n/ user\nNull Or\ntext area\nĠa th\nĠ( [\nĠch annels\nĠJust ice\ncho ice\nLOB AL\nex ec\nem ale\nĠe lem\n_ le\nĠrespons ibility\nĠT w\nIC ATION\nĠelse if\nĠf o\nast s\nĠt reated\ns en\nĠV ict\nsum er\n_B ASE\nĠa st\n> {{\nĠRes ource\nĠSt andard\nĠP rem\nup dated\nival ent\nĠas sets\n_t emp\nĠinterest s\nĠhard ware\nĠR om\nĠSh are\nĠ' 'Ċ\nĠ* ,\nĠT ake\nĠIm ages\n_C HECK\n(type of\nĠJ un\n\\< ^\nĠli qu\nĠwor st\nymb ols\nĉĉĉ ĠĠĠ\nĠdr ivers\nĠD ocument\nen o\nĠTechn ology\nĠappro ved\nump s\nĠs now\nform ance\n_A SSERT\nu its\nÙ Ĩ\nĠdiffer ences\n. Visible\nĉĉĉ čĊ\nĠP s\n_f etch\nĠto do\n. ',Ċ\nĠs el\nur ers\nin valid\nĠt weet\nV EL\nĠresearch ers\nĠs printf\nĠR O\nĠp el\n.Tr ans\nĠil legal\nd ialog\nsm arty\nl g\n_M IN\nĠher o\nf inal\nĠp p\n.L e\nĠc i\nĉ RT\nĠsuggest ed\np df\nach ing\nĠR o\nĠProp erties\nĠS i\nĠbuy ing\nĠm u\nĠl ands\nif iers\nĠF ILE\nRO UP\nĠh older\nĠS on\nĠsym pt\n.r oute\n) ?\nĠarg c\nĠfor t\nĠcas ino\n_c ategory\nĠfor um\np refix\napt ure\nT ube\nem s\nim ize\nĠn ue\na us\nc ourse\nAT OR\n() ),\nAd vertis\nING S\nĠack now\nĠKore a\npl ing\nĠwork er\nPL IED\nh al\nĠRich ard\nElement s\nĉĉĉ Ġ\nst ar\nĠrelationship s\nĠche ap\nAC H\nĠX ML\n, &\nĠLou is\nĠr ide\n_F AIL\nĠch unk\n[ s\n_O UT\nĠch osen\n_ [\n/ (\nĠJ eff\n_s l\npr iv\nĠCan adian\nĠun able\n_F LAG\nĠn os\nh igh\nĠl ift\nf un\n() {\nel ly\nycler View\n_ as\n_L IST\nĠr adi\n.get Value\nĠAnge les\nĠS pan\n_in stance\nit ors\nĠm igration\nA K\nO h\nÂ ®\n. selected\nĠG T\nĠadv ance\nĠSt yle\n.Data GridView\ne ction\nÑ İ\np io\nro g\nĠsh opping\nĠR ect\nI lluminate\nO U\nĉ array\nĠsubstant ial\nĠpre gn\nĠprom ote\nIE W\n.L ayout\nĠsign s\n/ .\nĠlet ters\nBo ard\nct rl\n\" \\\nĠJ ones\nĠvert ex\nĠj a\nĠaff ili\nĠwe alth\nĉ default\nĠsignificant ly\nĠe c\nĠx s\nact ual\n.p er\n_st ep\nan vas\nm ac\nĠtrans l\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nIter ator\nĠo ch\nagnost ic\nĠD uring\nĠDE FAULT\nĠt ill\nĠsign ature\nĠb ird\nĠO l\nĠI r\nH S\nav atar\nESS AGE\nĠe lev\nĠm t\nĠN av\nĠrel ax\nĠpl ate\nIT EM\n( date\n.n ot\nĠgr ade\nĠ} ),Ċ\n? \"ĊĊ\ni ences\nH igh\nĠD IS\ndis abled\nQ UI\nĠno ise\na ux\nĠU P\nos a\nĠv oc\nĠ ))\noc om\n_O FF\nĠD b\nL ock\n.e clipse\n, d\nĠD raw\nĠ\" (\nĠvis ited\nĠâ Ī\nĠsuc ceed\nĠim possible\na ire\nĠT urn\nĠd ish\nF G\nĠs ensor\nAN N\nab a\nĠsur g\n] );čĊ\nĠf p\n_ an\n- J\n- G\nĠJ ob\nCon vert\nĠKE Y\nĠauth ors\n_s erver\n\\ r\nĠ-* -\nf lex\nĠs oc\nR et\nĠs alt\nĠâĢ¦ ĊĊ\nĠC lear\n(p age\n-d anger\nĠroom s\ncon v\n# {\n. op\nĠA rea\n_S C\nh en\nĠbeg ins\n- y\nĠexc ited\nĠign ored\nĠbon us\nst udent\nĠM ember\nĠrel atively\nĠL ow\nĠPro du\nate way\npos ure\nĠth ick\nani el\n( view\nĠCr ush\nExt ension\nI l\ne ed\nLO C\n. im\n. Items\nĠconflic t\n.pre vent\nĠon Create\nu v\nis er\nĠw ave\nM ar\nĠComm unity\nic he\nĠNo thing\n[ m\nĠLe e\nri ends\nÃ¨ re\n!! !\nan z\n. result\nĠS K\n_P ARAM\nĠdem ocr\nBack Color\n.ex ists\n\" It\n( options\nra zy\nas er\n\\ Database\nal endar\n_ ass\n; }Ċ\nvert ex\nine craft\nW arning\narg o\nĠact or\nĠInst ead\nĠUs ing\nS elf\n@ interface\nĠspe aking\nĠPar is\nĠL ICENSE\n.n ode\nĠF ood\nE IF\nĠB i\n. Start\nĠI B\nĠun iversity\nĠHe ader\n.pro duct\nC opy\net c\nr ical\nĠ> >>\nbook s\nĠal gorithm\nĠ' __\n(j avax\nĠnumer ous\nSh are\nH ave\nĠrec ru\nĠpro ve\n.sub string\nhe alth\nÐµ Ð»\nĠdec imal\nĠcomm ission\ns cription\nx C\nĠsum mary\natt ed\nĠclo ser\nfin ished\n() ){Ċ\nĠW ood\n_field s\nk u\n_ items\nFl ag\nĠconf idence\nĠF ederal\ndu x\nĠcomp at\nĠvert ical\nÐ ¹\nÃ¨ s\n; \">Ċ\n_m anager\n() ))Ċ\nID E\n: \",\n__ Ċ\nĠW ay\nÑ Ī\nT emp\nĠS TR\nrit ten\nS ync\nĠA V\nĠC EO\nĠG uid\nĠenvironment al\nĠcorrespond ing\nĉ console\nĠjust ice\nĠJ S\nĠl ived\ng ar\nĠG raph\nĠSt at\nĠi Phone\n. al\nĠH D\nĠocc ur\nĠth reshold\nĠon click\nRE G\n.Graphics Unit\nM eta\nÅ ¾\nĠc um\n.g nu\nÃ «\nĠobt ained\nĠcompl aint\nĠe ating\nĠt ar\n_t ask\nĠopt s\n( to\nP ass\nĠpl astic\nt ility\nĠW in\n.prevent Default\np ile\nĠG ar\nĠqu antity\n_l ast\nĠg reatest\nD ao\n_D IS\nĠUs ed\nĠH P\nrit ing\nS ION\nbl ue\nd omain\nĠs cores\nN ormal\n_ admin\nĠA SSERT\nTh en\n** *\nd ist\nl on\nĠh ate\nsh al\nImage View\nd atabase\nĠp and\nĠlog ic\n= false\nb g\nĠConfig uration\nĠn ur\nO G\nĠmar ried\n: +\nĠdro pped\nĠreg istration\nÐ¾Ð ¼\nult iple\niz ers\nsh ape\n.c opy\nĠwe aring\nĠC ath\nĠded icated\nĠ.. .Ċ\nĠadv oc\nĠF amily\nĠstat ements\nem atic\nampions hip\nĠmot iv\nĠH ave\nĠbl ow\nJ ob\nc ert\n_v ector\ninst all\nĠC OPY\nem bed\nD IR\nĠS pring\nĠex hib\ncd n\nĠCom ment\nĠOption al\n. player\nĠD ark\n( pos\nĠSh ould\nĠcent re\nĠGu ard\nÃ³ w\nĠtr ouble\nEN ER\n( unsigned\n_s ervice\nĠn s\nul ing\nĠMex ico\nĠN Y\nmys ql\nĠl ic\nå ľ\nM r\n- fl\nĠC ustomer\nid i\nĠ? >ĊĊ\nri ble\nĠÐ¿ ÑĢ\nĠs izes\n_STR ING\nvalid ation\nĠJ on\n( Http\nadd Class\nN odes\nĠfrag ment\nĠsp oke\nĠw aste\nJ oin\nĠill ustr\nel i\nc ient\nĠa id\nĠpro sec\n') {Ċ\nĠpass ing\nĠf aces\nSh ape\n_ Z\nit i\nĠal le\nĠro bot\nĠĠĠĠĠĠĠ Ċ\nĠS pe\nĠrece iving\nĠD etails\nĠ\" )\nm g\n_RE F\nĠcompar ison\n* ,\nĠF ound\n_s ession\n( U\n/ F\nĠx xx\nN etwork\nd ers\nĠcap ture\nĠcor re\nĠL td\nĠAd v\n[ @\nĠcl ip\nM ill\nĠPro file\nĠend if\nĠob lig\ndes cribe\n.e lement\nriter ion\nL D\ner ed\nĠfav our\ns core\nĠF ilter\nat tributes\nĠcheck s\nIn flater\nĠPl us\nĠscient ific\nĠpriv acy\nHe ad\nĠfe at\nĠdeg rees\nĠP ale\n; \">\nĠfil ms\nĠA udio\nĠT ag\nĠE nergy\nit ar\npar ator\nĠf ellow\nĠev t\nĠT ri\nĠD AM\ncl oud\nĠP assword\nĠDemocr ats\nĠAc ad\n$ lang\nĠre b\n() )ĊĊ\nÐ½ Ñĭ\nĠB ur\nread cr\nĠh ex\nCon sole\nct l\nous el\nĠWill iam\nĠa z\n_P ORT\nĠpract ices\nĠany where\nĠP osition\nĠ- >Ċ\ni ams\n.user name\nplace holder\nĠo der\nĠSecret ary\nĠi T\nmon d\nevent s\n? âĢĿ\n.S ub\nĠatt ached\nĠn Ã£o\nĠest ate\n. action\nĠfig ures\nĠ} );čĊ\nĠsubs cri\n.t ag\nn am\n. plot\nno on\nli ament\nChar acter\n.t ab\nĠw inter\nĠVar iable\nĠtre es\nĠpr oud\n( V\n_ load\nĠh ier\nĠE con\nĠf d\nĠvict ims\nR est\nian a\nĠf ake\n.Print ln\nĠstr len\nĠs ad\nĠb le\nPro t\nĠbutton s\nĠte levision\nĠlog o\next ension\nĉ j\nste in\nacion es\nĠ\"\" \"ĊĊ\nĠsim p\nĠrecord ed\nĠbr ings\nĠprincip al\nĠfe es\n(s ource\nk dir\nĠutil s\nĠcorrect ly\nf il\nĠw el\nP air\n-b utton\ns cale\nver ify\n[ c\nĠ-- -\nĠes cape\nik es\nLower Case\nic ian\nĠch apter\nĠT YPE\nĠsh adow\nĠaw esome\nW E\nel if\nĠl ambda\nĠdist inct\nĠb are\n- off\nĠcol our\n.append Child\nole c\nag a\n.f ill\nĉs uper\nĠad j\n( position\n.get Item\nSh ort\nĠtot ally\nV D\nĠT re\n_ ep\nv ements\nĠS olution\nĠfund ament\nF ollow\nĠfac ility\nĠhappen ing\nO F\n.text Box\nS pan\nĠÂ «\nid en\nĠex ceed\n(p arent\nĠc p\nç »\nĠhas n\nĠp ri\nĠcon sequ\nn en\nĠIN TO\nI gnore\nĠF uture\nĠcar bon\nĠSte el\nf mt\nok ie\nĠs pl\n(t itle\n- info\nĠde als\nĠfix ture\ne a\nD iv\nĠtest ed\n_ return\n)ĊĊ ĊĊ\nupport ed\nĠC ook\nĠpay ing\nĠI ll\nĠarrest ed\nĠPr ime\n_c allback\n> ,Ċ\ndr iver\nOn ce\nab b\n_by tes\nĠS ets\n( Object\nĠc c\nĠsh ell\nal o\n); //\n( log\nct ors\n) </\nĠneighbor hood\nail ability\nv ol\nĠyou th\nĠtechn iques\nĠS chema\nu h\nment e\nĠre pository\nim m\nĠcook ie\nJ S\nov ies\n: {\nCom plete\nS ince\nĠla ugh\n_B O\nen able\nĠDo es\nĠW alk\nwh at\nk es\nĠmult ip\nim ents\ne ur\nĠvict ory\nGener ator\nĠM os\nro vers\nĠcomput e\nĠprovid ers\nĠMed ic\nL P\n_CON FIG\nĠv eter\nst ers\n_w indow\numer ic\nĉĉĉĉĉ Ċ\n. Response\nĠrepl aced\n. root\n-f ree\n- container\nĠmatch ing\nĠEd itor\n= ${\nĠS af\nĠs ind\n(b uffer\nå ĩ\n.ed u\n) ];Ċ\nĠN FL\nay a\nĠdog s\nĠdes ire\nĠM iddle\nC art\nTh eme\nĠm ob\nĠdisplay ed\nig it\nĠadult s\n\"\" \"\nĠdeliver ed\nvis ible\n\": {Ċ\n<< <\nĠG O\nsc roll\nx E\nĠass igned\nĠB ool\nĠw p\nĠcomb at\nĠH aw\n. -\nĠsupport ing\n.Cont ent\nirc raft\nĠsp in\nĠC R\n.m y\nà ¥\nt pl\nĠsp aces\n? ,\nĠSy ria\nĠpattern s\n- box\nĠfr amework\n/ %\n(l ong\nĠteach ing\nARN ING\n_key s\nĠtable s\nUN C\nin ations\n- weight\nr adio\nĠP ac\n.s erver\n.Char Field\nr ing\nĠqu ote\nann a\nĠwer den\nĠc ream\nĠmach ines\n- k\nĠst im\nĠSt ock\nr ick\nĠimport ance\nr x\nÃµ es\nÙ Ī\nĠst roke\nag ra\nĠt aste\nĠDE BUG\nTh anks\nĠRe quired\nov a\nM edia\nĠsi ÄĻ\n(b ase\npost s\nĠfile Name\nCheck ed\nĠinter rupt\nĠ( )Ċ\npy thon\np air\nĠcirc le\nĠinit i\n_st ream\nĠcomp reh\nlear n\nP ublic\nĠhum ans\nĠbring ing\nograph ic\n_l ayer\n- like\nupport Initialize\nide bar\nĠvot es\nĠdes ired\nM ask\nĠrel ation\n. Instance\nH elp\nĠins pir\nĠMon o\nView Model\nomet imes\nĠbackground Color\nĠrot ation\nĠm ari\n/ test\nINS ERT\nSt ar\nph y\nId s\n_G ET\nĠincre ases\n_c lose\n_F ORM\nĠ[âĢ¦ ]ĊĊ\naz a\nTE XT\nĠÃ ¤\nĠV an\nĠl ights\nĠGu ide\nĠd ates\n.Com mand\nam an\nĠpath s\n. edit\nĉ add\nd x\nĠre action\nĠBe ach\n.get Message\nEn vironment\ninter est\nĠmin ister\nĠread ers\nĉ F\nĠdom estic\nĠfile d\nC ity\nĠm apping\nĠD ES\nĠrep air\nt ics\nix ture\nĠn ombre\n.IS upportInitialize\nz o\n.Is NullOr\nĠCarol ina\nĠD er\nĠE VENT\nĠg est\nĠh ist\nres ources\nĠor phan\n.A re\nĠIn vest\nREFER RED\n.Log ger\nĠR oman\nĠcult ural\nfe ature\npt s\nb t\nĠd ot\nĠdi am\nus pend\n_ access\n() {čĊ\nĠsurpr ise\nab il\nĠv irt\nĠb omb\nar on\n_ IS\nĠv ast\nRe al\nep end\nict ed\nĠpick ed\nĠF L\nĠRepublic ans\n.z eros\nPress ed\ns up\n.C ore\nM icrosoft\ns ervices\nag ic\niven ess\nĠp df\nĠro les\nr as\nĠindust rial\nĠfac ilities\nè ¡\nĠn i\nĠb a\nĠcl s\nĉ B\nC ustomer\nĠimag ine\nĠex ports\nOutput Stream\nĠm ad\n( de\n) {ĊĊ\nĠf ro\nh us\nĠcommit tee\nìĿ ´\n, x\nĠdiv ision\n( client\n(j ava\noption al\n. Equal\nĠPh ys\ning u\nĠs ync\nĠN a\n}} </\nOL UM\nit Ã©\nĠident ifier\now ed\nĠext ent\nĠh ur\nV A\ncl ar\nĠed ges\nC riteria\nĠinde ed\nin herit\nĠN ight\nĠreport ing\nĠen counter\nĠkind s\n_p red\nĠconsider ing\n. (\nĠprote in\nT yp\ngr icult\nĠB all\n@ Component\nĠE ss\nĠR ub\nul p\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠ\nit ud\n. attr\nient e\nĠsp ell\nĠJ oe\nENT ER\n_h ost\nit an\nĠm atters\nĠemerg ency\nu ated\nĠCh at\n={ '\ncontr i\nark er\næĪ Ĳ\nip er\nĠs cheme\n(std err\nĠ* (\nce iver\n.c olumn\nĠmark ed\n_AT TR\nĠb odies\nĠIM PLIED\nG ap\nĠP OST\nĠcorpor ate\nĠdim ension\nĠcontr ast\nerv iew\nĠERR OR\nĠcap able\nĠadvert ising\nurch ase\nĠP A\nĠFranc isco\nĠfac ing\nãĢ Į\ng it\nĠbe er\nĠsk y\ndown load\nĠC ur\nm c\nann y\n.f loor\nĠc riteria\nĠparse Int\n` ,Ċ\nĠas pect\nĠbund le\nC ould\nĠt ank\n- id\nĠh urt\nĠbroad cast\nOK EN\now nt\nnull able\nC ap\nĠal cohol\nĠC oll\nĠH elper\nĠA f\n.m ethod\nĠpl anned\npl er\nĠS ite\nĠres c\nom ent\nĠJava Script\nS ERVER\nĠr hs\ner es\n(\" ,\nif i\n.f ields\nĠpark ing\nĠis land\nĠs ister\n_ Ċ\nCon straints\nĠA ust\nd im\n_point s\nĠg ap\n_ active\nĠvo or\nĠP O\nB ag\n-s cale\nl ambda\n.Dis pose\nr ule\nĠown ed\nĠMed ical\nent ries\nĠsol ar\nĠresult ing\nĠest imated\nĠimpro ved\nD uration\nemploy ee\n$ .\nAction s\nL ike\n, (\n( Request\n% s\n. Open\n) \"Ċ\nĠp ixel\nĠad apter\nĠre venue\nog ram\nĠL A\nĠM achine\nĠ Ø§\nĠf le\nĠb ike\nIn sets\nĠdis p\nĠconsist ent\na Ã§Ã£o\ng ender\nĠTh ose\nper ience\n.Back Color\n. play\nĠr ush\nĠax ios\nĠne ck\n_m em\n.P REFERRED\n_f irst\nC B\nĠW idget\nĠse q\nh ar\nĠh its\nĠâ Ĥ¬\nĠcont ained\nri ent\nw ater\nLO AD\nĠVirgin ia\nĠAr m\nĠ. /\nÂ »\n_ root\nĠass istance\n[ ],\ns ync\nĠve get\nes cape\nic er\nbo ost\nĠF loat\n- W\n*/ čĊ\n* >\nĠ$ (\".\n.p os\nĠbo ys\nĠwed ding\nĠag ents\n=\" _\nĠAr my\nĠh int\nv ision\nĠte ch\nĠCon nect\nĠleg end\nĠB et\n.B ase\nSub ject\nĠl it\nRem ove\nĠ\" :\nĠF inal\npear ance\nĠiT unes\nĠparticip ants\nĠPy thon\nĠbus y\ni el\nvert ices\nĠtemplate Url\nĠC lose\nIm g\nĠCorpor ation\nt imestamp\nĠext end\nĠwe bsites\nĠposs ibility\nÐ¾ ÑĤ\nĠk Ã¶\nĠme at\nĠrepresent ation\nĠ ĉĉ\n_ST ART\n.app ly\nĠVal ley\nĠS uccess\nH i\nĠn ob\nĠI Enumerable\n_ select\nge o\n. \")Ċ\nĠturn ing\nĠfab ric\n(\" \");Ċ\nĠpers pective\né Ĺ\nĠS n\nTh ank\n; j\n.Param eters\nĉ ĠĠĠĠĠĠĠĠĠĠĠ\nĠfact s\nĠun t\n.in stance\n################################ ################################\n- end\nĠJO IN\nĠH en\nĠur i\nåĲ į\nĠÐ½ Ð°\nĠIn fo\nĠconduct ed\nĠÃ ¥\nOUR CE\nĠw ine\nJ ohn\n.Error f\nĠA ge\nound ed\nĠreal ize\nĠ] ;\nĠsub sequ\n, m\n( User\nian o\nĠaccom pl\nis p\n.st d\né ĩ\nĠB ed\n.set Attribute\nB R\nke ep\nĠA LL\nĠis ol\nam ma\nP ackage\nĠoccas ion\n-s uccess\nÐµÐ ´\nĠLIMIT ED\nst rip\n() ĊĊĊ\nistrib ution\nColor s\nĠ+ :+\nDid Load\nal er\nĠt id\nĠL ED\nĠLink ed\nĠC art\n() )čĊ\n_RE AD\nĠkill ing\nĠP HP\nfe ction\nĠinst ances\nc v\n\"/ >\nĠs f\nĠtax es\n_ location\nĠBit coin\nu able\nr ank\nign ore\ntr ack\nÐº Ð°\nĠshould n\nĠO P\n=> {Ċ\nĠk m\nĠh elper\n_ head\nĠWh ether\noc o\n_b l\nĠstat istics\nĠbeaut y\nĠto g\nt ip\nëĭ ¤\nĠc sv\n(s ql\nstd lib\nwe ak\nĠlik es\nÄ į\nĠrepe at\nĠap artment\nĠem ph\n_ edit\nĠv it\nĉ type\nE ven\nut en\nĠcircum stances\nb ian\nĠs ugar\nW indows\nì ŀ\nĠobs erved\n/ data\nĠcal endar\nĠstri ke\nĠR ES\n_s c\nf ony\nore m\n( z\np ower\net ect\nĠS at\n.d escription\nĠg ang\nĠS ports\nong s\nĠB undle\n.s um\non ce\nĠacc used\nĠexplo re\nĠapprox imately\nĠlos ing\nthes is\nĠF und\nĠdi agn\nA utowired\nprop erties\nĠ_ .\nĠc nt\nced ure\nĠy y\nĠgr ant\nso ck\n.inner HTML\nĠ] );Ċ\nĠCON FIG\n=' $\n] ];Ċ\nUN D\nĠg lob\nĠd ire\nuff le\n_M EM\nĠauth entic\n> (\"\nĠdec ade\nĠIm port\nĠorigin ally\nĠj Query\nĠindic ate\nĠours elves\nS w\n.l bl\nener ate\nĠbas ically\nĠH om\nĠ+ #+\nĠBrit ain\nĠK ar\nto Equal\n.st op\nĠmod al\nis i\nĠsuggest s\nĠd type\nĠt ur\nb f\nĠconnection s\nĠB efore\nist ed\nm ouse\nĠpul led\n.b uild\nĠlegis lation\nĠfor th\np ad\neg o\n.N ow\nĠexc iting\n}ĊĊ ĊĊ\nĠcom pr\nĠsh ares\nĠr ig\ng reen\n_ vec\nĠenumer ate\nA uto\nic ator\nĠR ay\nas se\nĠh oliday\nĠnull able\ng un\n_d etails\nĠwr apper\nse q\nĠYou ng\nju ana\nĠ\" __\nlic ense\nser ve\n^ (\nid ers\n.Rem ove\nrop down\n' S\np in\n(t oken\n.D efault\nĠreason able\namp ion\nĠS ociety\nĠbe i\nerv es\nr ad\nĠF ox\n_ images\nĠw heel\n') [\nĠc fg\n( By\nCon structor\nĠv ary\n.sw ift\nĠpro xy\nĉ H\nĠAn other\nĠP en\nĠcheck ing\nĠj est\nman ager\nOr igin\nug s\no ir\n>< !--\nĠexpress ed\nĠmod er\nĠag encies\nĠi h\n-h idden\nious ly\nĠR od\nĠso le\nM ed\n.A ny\nĠp c\nb al\nEx ample\nĠS ale\nĠst rip\nĠCom p\nĠpresident ial\nM ost\nput ation\n( ref\nĠF our\n_f ilename\nĠen forcement\nØ ¯\nĠGe org\nwe ights\n/ l\nĠag gress\nĠd rawing\nand y\n< I\n- j\nak a\nh ref\nĠteach ers\n_ Q\n( it\nĠM B\nĠtemp orary\nire base\nstr a\næĹ ¶\nè ´\n( label\nou p\nĠtop ics\nĠport ion\nid os\nĠJew ish\nĠre covery\nĠstand s\n# [\nĠafter noon\nĠArt icle\n_ att\nĠexpl an\nĠP ak\n.setOn ClickListener\n. children\nĠi k\n+ (\nl ag\nĠdis k\nĠcont rovers\n\"> &\nas p\nĠw ie\nĠAustral ian\nĠYou Tube\nAt tr\ncont ains\ndu ce\nĠM att\nat ern\nĠvol unte\nĠnew sp\nV P\nolt ip\nĠde legate\n_m eta\nĠaccur ate\nĠEx ample\n% ,\nĠD aily\nĠc abin\nĠS W\nĠlim its\nk ip\nĠar my\nĠend ing\nĠb oss\nĠD ialog\nAl so\n=\"# \"\nord an\nrow se\n- min\nĠ\" &\n_ loc\nU X\nĠdevelop ers\nĠaccur acy\nĠmaint enance\nĠhe av\nĠfil ters\n.T oolStrip\nĠn arr\nĠE mp\nORD ER\nĠM obile\n.S erial\n.out put\n.c ol\nM aterial\num a\nĠconsum ers\nsh ift\nĠp ued\nĠmin i\nc ollection\nĠk an\n.c enter\nH istory\nĠben ch\n() );\nitor ies\nĠcrow d\n_c all\nĠpow ers\n- E\nĠdis miss\nĠtalk s\nĠCh annel\nfor ward\n_ control\n/s rc\ni est\n**************** ********\nĠbet a\n(c olor\n_O BJECT\nĠA pi\nĠeffect ively\nC amera\ns d\nuss y\nD ict\nĠE ffect\nib ilities\nĠreturn ing\nĠF ar\nĠ' ')\nĠmod ules\nil ation\nĠ( %\nTR GL\nĠst orm\non na\nĠEX P\nĠs pons\nĠdis pl\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠ\nf all\nå Į\nign Key\n_ US\net rics\nĠhand les\nT L\n_ amount\now a\nbr and\nĠT ool\nĠus ual\n. Z\ncre ment\nad ium\nst ock\nĠserv ing\nĠB on\nĠline ar\nĠT arget\nĠR adio\nH L\nSh ader\nom atic\nag ues\nin ity\nd iff\n_ iterator\nqu ot\nĠ ,Ċ\nc allback\nĠsympt oms\n[ _\nĠB ul\nĠF eb\nund o\n_ account\nĠtyp edef\nÐ¸ Ñģ\ntr as\nUser Id\nĠP enn\nĠSup reme\n} >\nuser Id\nĠK im\nĠg a\nĠart ists\nå ¸\nĠAb stract\nok emon\nĠh am\no val\nĠch a\nat en\nå Ĩ\nF ixed\nĠvul ner\nĠParam eters\nqu antity\n.C lear\nServlet Request\nĠy a\nĠsou l\ntrans action\nĠsol o\nĠp airs\næ Ķ\nĠG re\n_ word\nĠC C\nĠg i\nz ie\nĠsched uled\nrot ation\ngy pt\nul ous\n:: _\nĠE ll\n< !\nĉĉ ĠĠ\nl p\nah a\nC opyright\nĠdr am\nĠdi agram\nĠM em\nĠg arden\nCom p\nĠattempt s\nuff ix\n> ()\nĠphil osoph\n_re l\nå ¼\nĠs v\n.se cond\nant o\n.J son\nĠTe le\n_ local\n_s end\nĠas pects\nì Ĺ\nIB LE\nĠr ail\nĠwid ely\nash ed\ni ar\nin f\nup per\nd jango\n_result s\niss ing\nĠequ ivalent\nOUN D\nĠt y\nĠpotential ly\nAdvertis ement\nĠRec ord\nresent ation\n_w idget\nound ing\nĠrelig ion\nĠcons c\nĠL im\n. am\nH tml\nĠ' :\nP ATH\n_s pec\nort ed\nid ades\n_sh ape\nĠkeep s\n.S ave\nĠL oc\nor i\nĠT EST\nunic ip\nĠreg ions\nĠbelie ves\n/ en\npos ite\n{ '\npre pare\n_ const\ns ample\nĠWill iams\nĠstr t\n_ Get\nĠAnd rew\n. active\nĠl ayers\nVisual Style\naz y\nĠK n\nĠac id\nĠAs ia\nĠex cess\nĉm y\nĠkey board\nens us\nĠcre w\nĠmiss ed\nm aster\nĠW ild\nĠnew ly\nĠwin ner\nĠst ub\nic ode\n.m ove\nD omain\nĠS ar\nĠfore st\nLE D\nclaim er\n.ex it\nĠW indow\nĠres istance\nĠC HECK\n(\" -\nĠR yan\nĠp ipe\nĠco ast\nDE F\n// !\n_ off\nex it\nĠult imately\nimit ive\nĠKe ep\nĠhistor ical\nĠany way\nĠJack son\nock er\nER N\nĠU INT\ny ntax\nER Y\nis ms\nĠc n\nĠocc urs\nĠ; ;\nText View\nA E\n/ img\nĠy esterday\n- default\nĠt iny\nĠpro c\nĠal ive\nĠRE G\n. th\near ing\n.get Logger\n< link\n_ login\nF older\nab c\nlyph icon\nÐ½ Ð¾\nĠnot iced\nod igo\nĠed ition\nim ator\n. Enabled\n.parse Int\nĠy ards\nĉĉĉĉĉĉĉĉ ĉĉĉĉ\nĠver bose\nÐ» Ñı\n_B Y\n.log in\n.* ;Ċ\nĠM id\nÃ© es\nĠg lo\nĠbuild ings\nĠz e\nĠI ter\nĠt ube\nĠP ot\n\\ M\n< th\nbr idge\nĠS cript\nĠM odule\nĠv acc\nĠinstall ation\nv y\nVisualStyle BackColor\nĠS M\n.t otal\nb at\nĠfind s\nĠat mos\nSub view\niz ard\nĠrepl acement\nlic ated\nap is\nĠlog ged\nĠLe ft\nG ui\n_ Type\nt m\nP ad\nĠhouse hold\nĠre le\nĠpropos al\n_CL ASS\n:: ::\nĠinf rastructure\nIn ject\n/ html\nĠad s\niz za\nĠm g\nctr ine\n% Ċ\n< html\n- image\nĠatt orney\n< m\n(' ,\nĠcan n\nĠprint ln\no ose\nĠy ellow\n.ex p\np ayment\nĠtable View\naw ay\nĠopp osition\nĠAg ain\nĠH andle\nĠex clusive\nin ar\nÃ© r\nÐ¾Ð ±\nĠC ODE\nemp orary\nĠre act\npi pe\nc z\n. activity\nĠlarg ely\nĠdis s\nax y\nes is\nĠR en\nĠc orn\n.Use VisualStyleBackColor\nd ays\nĠfr uit\nIn sert\n_ enc\nE st\n_de c\nĠL uc\nĠÃ¼ ber\nparam eters\nP ERT\nex press\n_pro file\nUn known\nĠrev olution\n.add ress\n_re quire\nĠun iform\nĠP ack\nl ar\nĠU ITableView\nĠdep ends\nValid ation\nconf irm\nO wner\nĠt rib\nh et\nĠI de\nans as\nL anguage\nu et\nĠP o\nĠSte ve\nĠcont est\n_DE FAULT\nĠapparent ly\nRE EN\nĠfrequ ently\nĠtrad ition\nocol ate\nS I\nĠArg ument\nF ocus\nert e\nĠL ayout\nĠd x\nĠgener ator\nĠW ait\nP olicy\nl ights\n.Ex ecute\nP y\nĠbed room\ned a\nra id\nĉs ize\nĠan cient\nĠp ump\nĠd w\nĠ(! (\nĠspec ify\n( status\nĠF BI\n.ex ception\nĠrem ark\nly mp\nant ee\nUp load\nern et\né ¡\nin ent\nĠR ender\nd m\nĠM emory\nr ich\nĠT ools\nĠk ne\nĠper m\nb ad\nĠd inner\n.res et\nĠj Label\nFe ature\n.S ervice\nĠ( {Ċ\nĠre ferred\n.class List\nĠinit With\nĠText View\nĠne ither\nĠcount y\nĠ\" {\nç §\nĠt ack\nclass Name\nĠUS ER\nĠre new\n` `\nget Name\nĠb rown\nErr ors\nert o\nĠsust ain\nS O\nlet es\nĠIn valid\nĠen emies\nun ge\nĠexist ence\nerr a\nĊ ĠĠĊ\nutor ial\n# a\np ay\nchar ge\nĠI re\nate st\nĠexp los\nĠf ired\nN ER\nĠT y\nic ion\nU ri\nĠobvious ly\nĠC olum\nĠ' +\nĠDe vice\n- related\n_ ARG\nĠv or\nĠLess er\n_O P\nSerial izer\nĠup grade\nL ight\nĠc odes\n++ ;čĊ\nĠwrit es\nfo od\nĠÃ© t\n@ section\nĠtrack s\nĠserious ly\nch t\n(size of\nĠimmedi ate\nĠscient ists\nĠ{ $\n_ ne\n.Anchor Styles\nĠaccom mod\nĠHar ry\nĠs ight\nĠPale st\nersist ent\nĠ Ñĥ\n- input\nĠco ordinates\nÂ ·\nW elcome\n.con f\nĠgre w\nĠb old\nĠC PU\n(m y\nĠperfect ly\nĠmom ents\nĠM ovie\n- data\nyst al\n_W IDTH\nĠS creen\næ Ŀ\nĠdis ap\nĠredu ction\n.Get Component\n_M ODULE\nĠgener ic\nĠd y\nall er\nĠc url\nĠB ody\nĠb anks\n, t\nav g\nĠev il\nĠmanufact urer\nĠrece iver\nColumn s\nĠing redients\nĉ out\nqu es\n.L oad\nĠslow ly\nĠT own\nĠC ell\n_n ormal\n_p refix\nĠAl ert\n(\" {\nÃ¤ r\nâĢľ The\nĠM D\nĠcour ses\nath an\né Ļ\noc c\nĠS ER\nes ign\nAdd r\n= ['\n(\" ./\n] }\n.f ont\nĠInst agram\nĠB order\nod a\nĠh all\nĠr um\n_b it\nĠs aving\n_d own\nR andom\n_reg ister\n( Context\nĠoppos ite\nR oom\nY ES\nÐ°Ð½ Ð¸\nĠenjoy ed\n_r un\nC lear\nâĢ ĺ\nĠF ord\non ic\nost en\n\"] )\n_ auth\n// čĊ\nĠsuff icient\nLE S\nĠph en\nĠo h\n_c sv\nĠrout ine\n.Are Equal\nay lor\nĠb asket\n_COM M\nrypt ed\nS im\nĠSh op\nĠstud io\nat os\n( W\n[ string\nÃ¤ t\nog a\nĠsh r\nĠs ick\nAn other\nĠdo ors\n_N E\nĠTH REE\n. order\nraz il\nĠmap s\n_TR UE\ntrans late\nĠnear by\nĠn ach\nLO AT\nb atch\nĠl ux\nash es\nang ers\nâĢ¦ âĢ¦\n_E VENT\n_ UP\nĠact s\nin v\n_M ETHOD\ncc ion\nĠret ain\nut ch\nĠÐ ±\nĠknow ing\nĠrepresent ing\nN OT\np ng\nCon tract\nĠtr ick\nĠE dition\nuplic ate\nĠcontrol led\nc fg\nj avascript\nĠmil k\nWh ite\nSe quence\naw a\nĠdiscuss ed\nĠB ush\nĠY ES\n.f actory\nt ags\nĠt act\nĠs id\n$ $\nĠE num\nĠfr ames\n} );\nĠreg ul\n'] ;čĊ\nReg ion\nff f\nĠc ro\n( com\n=\" +\nSt udent\nĠdis appoint\nRES ULT\nCount er\nĠbut ter\nĠH a\nĠD igital\nĠb id\n\"> {{\ning ers\nĠC ountry\n_t pl\n\"] )Ċ\n/ k\nd ating\n: #\nĠD ATA\nyn chron\n_b ody\nolly wood\nĠval or\nip ient\no ft\nUB L\ndoc s\nĠsyn chron\nĠform ed\nru ption\nĠlist a\nRequest Mapping\nĠvill age\nĠkn ock\noc s\n\" {\n_fl ags\nĠtrans actions\nĠhab it\nĠJ e\ned en\nĠa ircraft\nir k\nĠA B\nĠfair ly\n. inter\n.A ct\nĠinstr ument\nremove Class\n.com mand\nÑ ī\nĉm em\n( min\nĠo t\nĠcol le\n= s\ntime out\nĠid s\nĠM atch\nij n\nz ero\nĠnetwork s\n.g ov\nĠint el\nĠsection s\nout ine\n(c md\n(d ir\nĠLI ABILITY\nĠB log\nĠbr idge\nĠC V\ncon vert\nĠ\" )Ċ\nĠB ern\n_P O\ne val\n( set\nto ol\nĠpay ments\nBeh aviour\nĠcon crete\nĠel ig\nĠacc eler\nĠh ole\n_ o\nTE GER\nĠgraph ics\nO wn\nForm atter\non der\nĠpack ages\n/ a\nĠK now\nOr Default\nĠdut y\nW ait\nÐ½ Ð°\n_rec ord\n[ t\nM esh\nĠon going\n.be ans\nĠt an\nĠinter pret\nast ers\nQU AL\nĠleg s\n\\ Request\n- file\n_m utex\nĠS aint\n// #\nĠpro hib\n( info\n: =\nlin ux\nĠb lo\not ic\nĉf inal\n_ex p\nĠSt op\nap ing\n(s aved\n_p ush\nĠe ase\n_F R\npons ive\nstr cmp\n: ĊĊĊĊ\nä» ¶\nol i\nĠextrem e\nĠprof essor\nIm ages\n.IO Exception\nĠaddress es\nplement ed\nĠincor por\nĠuse Effect\n_O F\nĠD a\nn ombre\nIR ST\nĠdisc rim\nĠcomp ens\ngreg ate\nanc ell\nach es\nĠC riteria\n$ result\nD estroy\nĠsecond ary\nW atch\nĠS em\nĠMc C\nĠacad emic\nU pper\n:: ~\nut ral\nĠD og\nad ed\nValid ator\nĠder ived\nĠset Timeout\nĠK en\nĠtyp ical\nĠB ob\nĠb ounds\nĠSe ason\nĠc razy\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠ\n-r outer\nitt est\nĠM ir\nĠemot ional\n, v\nc n\n/ st\nå ½\non om\nĠdecl ared\n> .\nail ing\nĠ/* <<<\nĠnorm ally\n(M e\nev in\nlik ely\nĠpoint ed\nĠSt ack\nĠw alls\n. Vector\nme an\n] ]Ċ\nĠlist ening\nad v\nĠsw ap\nIF T\nØ ª\n. argv\nul s\n< option\nnot ations\nĠemail s\nĠU kr\nast a\nĠTh us\nĠSt one\nĠappe al\n. âĢĻ\nĠreg ulations\nPre ferences\nĠPh one\nul f\nĠD R\nĠtechn ologies\nĠpar agraph\nĠnecess arily\n.e ach\n< float\nres a\nĠunder st\nĠf inger\npress ed\n-b y\nif fer\nw atch\nĠB a\nA IM\nĠwe ights\nĠR on\n') }}\n[ self\n-------- --Ċ\nper iment\nĠto String\nx ic\nĠC amera\n! ĊĊĊĊ\naur ant\nP refix\nĠinstit utions\n: int\nĠex posure\np attern\nĠLin ux\n.n umber\nred ient\nArgument Exception\nĠCh ief\n\" },\nĠelect ronic\nr ong\ner d\nsp Net\nra it\n/ ',\nĠOh io\nCont rollers\nĠcontin uing\nĠT emplate\nĠE th\ns z\n/ env\nEn v\n% .\nart ers\n) ((\nĠT ABLE\nĠÃ ®\nper ature\npro gress\nP res\nê °\nim plementation\nĠb ien\nĠstre ets\n_M SG\nNew s\n## #\n: /\nĠcut ting\nx B\nress ed\n_EN ABLE\nl ab\nĠca using\n] ));Ċ\nb ra\nx FFFF\nil ly\nplet ion\nw ill\n_b ar\nĠstruct ures\nĠI mp\nÛ Į\nĠ< >\nĠ ----------------\n_B UFFER\n.d ir\nĠpl ain\nĠpe er\ng g\noint s\nĠsomew hat\nĠw et\nĠemploy ment\nĠtick ets\nir ms\nĠt uple\ns is\n$ sql\nr ig\nĠcon version\nĠg es\nĠconfig ure\neg r\nĠC a\nĠ__ ('\nou ston\n.t oken\nBl ack\nĠmag azine\nA W\n. IN\nos ing\nĠbro ke\nĠC ru\nDE LETE\nĠdestroy ed\n(M ath\nĠappro val\n-d om\nĠI II\ntable View\nĠdesign s\nĠcrush ing\nĠcons ent\ndir name\nom p\nĠc rypt\n? (\nor ough\n. o\nĉ list\nams ung\n.\"\" \"Ċ\nerr ing\nG oogle\n_p air\n_IN IT\nrem arks\nĠg ear\nF ill\nl ife\n} \")Ċ\nĠsuit able\nĠsurpr ised\n_RE QUEST\nĠman ifest\natt en\nĠfr ustr\nov ement\n.c lick\nĠi i\nĠexp ansion\nig s\nP arse\n.Reg ular\nR ob\n_l ayout\nì ł\nĠtrans lation\nĠBe aut\nB est\n_C OLOR\n< label\nĠliqu id\nIT S\nĠpro d\nĠoper ate\nUI Kit\nĠn atur\narg ument\n_d etail\nĠCent re\nĠ\" --\nĠ}} \"\nlo cale\n.t v\n_se q\nĠup coming\nCh art\nĠDiv ision\nĠclin ical\nCom pany\nS epar\nl as\nĠH un\n: s\nĠhead ing\nÐ¾Ð ³\nĠ\" \");Ċ\n[ id\nb ia\nĠst retch\nic ide\nĠre produ\n.pro ject\nleg end\nend ers\nĠrespons es\nĠon t\nrit ical\nĠref uge\nĠL i\nĠ: ĊĊ\nĠTh ree\n.cont roller\n_IN DEX\n_F OR\n\\Model s\nj ax\nĉex it\nĠâ ĸ\nĠc overs\nĉ y\n- .\nIND OW\nĠfail s\nin cludes\nĠf ault\nĠl y\nÃ± o\n.s lice\nILE D\nĠP ur\nĠAs ian\n_b atch\n.M ax\nv l\nĠCOPY RIGHT\nĠg iant\nĠMan ual\nĠC opy\nClass Name\nHe alth\nC ursor\nIB Outlet\nĠt we\næ ³\n_label s\nĠcol lected\nĠfurn iture\nĠdeal ing\nControl s\nĠHot el\nck s\nĠch ose\nâĶ Ģ\nod d\nS R\nÙ Ĭ\nì Ħ\nĠacc ord\nĠM ove\nĠM ode\nĠM ock\nĠthread s\n++ ++\nĠO ptions\nRef resh\nĠD id\n'] ->\nu cc\n_ch annel\n. abs\nĠ{ },Ċ\nĠW al\ner ior\nĠmain ly\nĠDr iver\nNotFound Exception\nĠcount s\ne am\nĠ& =\nQ uestion\nĠA li\nĠany more\nd etail\nt ail\nĠm ile\nĠF air\nĠs orry\nĠsurround ing\nĠad m\nDe v\nĠmari juana\nĠS ound\nĠA sh\nF D\nTe am\n. port\nĠ[ ]ĊĊ\nub ble\nĠas c\nĠint ention\nA cc\nch i\nust ers\nĠins pired\nse g\nCL U\nĠman ip\nM etadata\nCon nect\nĠB eh\nĠfind ings\nĠas sembly\nw orld\nĠrem ained\nĠu id\n( .\nĠm x\nLo op\nĊĊĊĊ Ċ\nĠfant astic\nwh o\nak i\nĠB asic\nĠY et\nĠUs ers\nik ip\nĠhead s\nĠMich igan\n_ it\nĠTor onto\nĠrec ording\nĠsub mitted\n_var iable\nmedi ate\n.graph ics\nĠst ood\nĠre ar\nvel ocity\n_M ESSAGE\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nro les\nĠT our\n_ year\nend ment\namp s\nĠIre land\nm al\nĠyoung er\nĠstrugg le\nĠc able\nĠSD L\n(' -\nan es\nĠNe ed\n.R ow\nP ol\nĠP H\n_s cript\nag em\nĠB as\n_s pace\n. loc\n: i\nad r\nĠengine ering\nit en\n) &\nĠu k\nĠL ittle\n_C OUNT\nx A\nArray List\næ į\nĠ\" \")Ċ\nAn chor\nĠh ang\nt witter\nĠcompet itive\n.s rc\nãģ Ĺ\nĠtrans late\nĠCre ates\nook s\nĠR oll\n'' 'Ċ\n/ sh\ns ome\nEnc oding\n.res olve\nĠdesign er\nĠSt orage\nĠz a\nĠN ever\nĠsomew here\nĠbox es\n.s ource\nĠpy game\nĠgrow n\n.t w\n() ),Ċ\n', ['\nĠoppon ent\n(s rc\n.l ayer\nAP P\nĠAct iv\nĠguest s\nĠVAL UES\n};ĊĊ Ċ\n.n ative\nĠamount s\n. RE\nĠcl one\nĠwer en\nĠ\" <<\n_ ac\nĠbreak ing\nĠreli able\n.P OST\nĠSk y\nĠ' &\nĠsaved InstanceState\nast ing\nill ion\ncom ments\nult y\n.m enu\n/ config\nĠ ĊĊĊ\nT ODO\nĠpurch ased\n_c or\nĉ auto\nCompat Activity\ncom plete\n_ graph\nis odes\nĠsitu ations\nĠH or\nRe ceive\nâĢľ We\nĠent ities\n.assert Equals\nÐ¾Ð º\nĠS ans\nv ince\nrom pt\n= Ċ\nĠ/ .\n.Se lect\nyl v\nĠb att\nA udio\nĠincreasing ly\n.B undle\nĠexpl ains\nthe ast\n. offset\nĠh al\nĠtechn ique\n_l imit\nĠdraw n\nAY ER\nĠfeature d\nyy yy\nat in\nph en\nach el\n! \\\nl ower\nĠG R\nĠp ag\nĠP arse\nĠt ou\nä¸ Ģ\nD istance\nIndex Path\nĠh ell\ns im\nUT TON\nUs age\nelen ium\nĠF all\nĠ\" .$\nĠM u\nĠcr uc\nĠs ont\nREF IX\nĠinter ior\nĠO lymp\n.Auto Scale\npar a\nAxis Alignment\nĠr iver\nD to\nĠwith draw\nRe act\n- class\nb efore\n_ alloc\nCont ents\nĠW as\nI CT\nĠform ula\nĠindic ates\nĠĠĠĠ ĊĊ\n_st ore\nit ting\nĠIt alian\n_S et\n_re port\nĠp id\n_V ER\nĠw ins\nĠCl oud\n\") {Ċ\nch ester\nĠden ied\nĠw ird\nĠSte p\nĠinvest ors\nb old\n_d isplay\nou ver\nor er\nRes et\nĠsurg ery\nĠstrateg ies\n/m aterial\n_ unit\nĠc ouncil\n.P er\nĠâĢ ŀ\nĠre form\nF ramework\nĠlist ing\n_b tn\nĠb is\n% d\neg as\nĠsudden ly\n_S ER\nĠa o\n_d irectory\nf as\nĠprem ium\nĠtrack ing\nĠB L\nĠm ature\nĠbath room\nĠ'/ '\nĠÄ ĳ\nPer formed\nĠsold iers\narn ings\nĠwalk ed\n- con\nb ottom\nĠsurpr ising\nĠg ene\nUs uario\n.DE FAULT\nĠM IT\nC ODE\nĠE gypt\np icker\nys ql\nAT URE\nd etails\nĠCon ference\nIn formation\nĠM ail\n-d own\nr aries\nb ro\nĠsubject s\nĠ' *\nè¯ ·\nor ient\n: @\nver bose\nE F\nĠto ler\neng ers\nĠend point\nĠstr ange\nĠcol on\nĠpre ferred\nde p\nĠE V\nARR AY\nĠw he\nĠp up\n_n odes\nĠtalk ed\nĠinstit ution\ndb c\nĠex posed\nte en\nĠFr ont\nT T\n_N ONE\n\\/ \\/\npro gram\nĠencour age\n. `\nsh ire\nĠIsl am\ne en\nN I\n' \"\n.W idth\nĠlik ed\nĠ{ ...\nĠSystem s\nĠvot re\nĠmanufact uring\nCon verter\nĠIn f\nì ļ\nD TO\nĠin ches\nĠ à¤\nÃ ¹\nĠChar les\nB U\n\")) ;ĊĊ\nĠL abor\nun n\nĠest im\nm obile\nĠL earn\n_C ALL\nâ Ħ\nĠind ices\nĠt ub\nikip edia\nC ost\nrow able\në ¡\ng age\nĠfunction ality\nuzz le\nem os\n.l ib\nĠd ass\nÐµÐ º\nenn a\nĠsh ots\nĠrest ore\n/ D\nFor Key\n], [\nal ias\nl int\n.st ream\næ ł\n_FORM AT\nĠsil ver\n.re pository\nĠlegis l\n.B order\n_fe atures\nPer mission\nĠhous es\nĠW ars\n_COM P\nĠinj uries\nĠconstant ly\nfl utter\nEN U\nĠCon f\nĠrecogn ized\nĠpract ical\nĠde cent\nB J\n] );\nast y\nĠAct ivity\n-m ode\nĠsl ide\n.IsNullOr Empty\nĠY OU\nP ower\nind ices\nĠqual ified\nĠthrow n\nh ello\nĠN ick\nl ah\nas sembly\nĠSm all\nold ing\nSh ould\nĠSil ver\n(saved InstanceState\nĠtog gle\n.N ot\nC trl\n: nil\nĠCont inue\nĠB oot\næ ī\nĠM ur\nd on\nĠF A\nS napshot\nĠassoci ation\nfo x\n, a\naz ione\n] )čĊ\nCT YPE\nĠf ade\nĠD ar\n.n avigation\nĠl uck\nSC RI\nĠDe ad\nĠterm inal\n_LE NGTH\nĠeff iciency\nĠun w\nĠn arrow\niment o\n( Color\nĠSe a\n_ area\n, A\n_ opt\nĠHill ary\n.t ask\nĠJ ac\nast ed\nĠAd am\nĠIl legal\nĠsearch ing\nInstance Of\nJ ava\nĠForm at\nĠreal ized\nĠChild ren\nĠk il\n(f rame\nâĢĿ .ĊĊ\nĠscen ario\n\"] );Ċ\nĠincred ible\nli x\nIO Exception\nĠQ uest\nil ty\nĠun lock\nâ Ĥ¬\nĠre ferences\nĠV ert\nB inding\neg ative\nĠwr ap\n.d atabase\n( content\nB uf\nĠTr ad\nĠA ud\ntr ace\n.m ock\nĠther apy\nĉ L\n.To Int\nĠKing dom\nB us\nha ust\n\"\" \"ĊĊ\n( end\n.draw able\n[ ];Ċ\nĠH ospital\nĠph arm\n---- -\nĠA G\nÃ© d\n> \");Ċ\nĠw allet\nat able\n) $\nĠmonth ly\nĠdi agnostic\nS ymbol\nĠiter ator\nun finished\nĠimm igration\ns r\nRO W\n(g ame\nĠclo thes\nĠU nt\nĠactiv ation\n_C on\n.h ash\nĠinitial ly\n.H ash\nĠcut s\nf ound\nĠSt ory\nÑĨ Ð¸\nac ao\n_T YP\npro to\nest r\n-p age\nah r\nĠincor rect\nĠJose ph\nTextBox Column\n_st yle\nĠD aniel\ns heet\nĠl iv\nl ined\nĠr a\nR untime\n_ empty\nsl ug\n_ struct\në Ĭ\nm u\nĠper mitted\nĠreg ional\nĠsob re\nĠS uch\nĠ[ _\nĠro of\n.Al ignment\nt imes\n.m sg\nĠche st\nĠT ab\nĠest a\nÃ¤ n\nĠsubs cription\n( command\ns pecial\nĠme al\n\") :Ċ\n_ ctx\nĠclos ely\net ry\n- be\nad el\nĠR am\nig est\nĠSpan ish\nĠcommit ment\nĠw ake\n* >(\nP HP\n_ {\nck er\n< List\n_n ull\nĠRes erved\nĠin her\n.Column s\n.A spNet\n_IN VALID\nĠParam eter\nĠex pr\n} {\nCell Style\nĠval uable\nĠfun ny\nIn v\nĠst able\n* t\nĠp ill\npl iers\nĠC SS\nĠCon dition\nĠS peed\nublish er\nĠoff ensive\nce st\nic as\nĠsp ark\nĠPro te\nset up\nIF Y\nĠT ax\nWh o\nF amily\n- for\n. uk\nĠf asc\nsv g\n\") ).\nĠbirth day\nâĸ Ī\nve h\nel led\nĠimport s\nĠIsl amic\nT A\nĠSt an\nwe ather\nĠsus pect\ne ature\nenn es\nW M\n.m inecraft\nav id\nè ½\n.se curity\nin os\nG ood\nĠm arch\nĠposs ess\nus uario\nCon s\nam ber\nched uler\nĠhor se\nç ½\n(b ody\nĠTrans form\n_de code\n.s vg\nĠf oo\nĠd ella\next ends\nam er\nĠprocess ed\nĠH arr\nĠA I\nĠk o\nCH AR\n( %\nĠt ap\n({ '\nc roll\nD OM\nĠte a\nĠre in\nĠworld wide\n_f n\nsh a\nĠb ir\nÃ§ Ãµes\n=\"# \">\nĠrepresent ed\nill er\n(ex pected\nĠd ance\nĠvisit ors\n.con cat\n-b it\nUR RE\nĠR og\nv p\nip h\nĠL LC\nit led\niam i\nC oll\n_re al\n_sh ow\n_f older\nĠd ar\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠl atter\narch y\nĠb ow\nĠout come\nĠPost ed\nĠris ks\nĠThere fore\nĠowners hip\nĠpar allel\nĠp ending\nge ometry\nĠrecogn ize\nST EM\nĠC P\nĠimm igr\nIT LE\nĠĠĠĠ ĉĉ\nconn ected\nĠsm ile\n(d ocument\n\\ Component\nvert ical\nĠconsum ption\nĠsh oes\n. impl\nun ks\n. \";Ċ\nĠfood s\n_ );Ċ\n.assert True\nĠp ipeline\nĠcollection s\nĠearn ed\nĠC ert\nĠpartners hip\n( action\nĠc d\nĠV ery\nOption al\nĠscre ens\nĠtit les\nener ator\nĠab andon\nk ind\nIL TER\nĠclos ing\nlic a\n_ inter\nĠcamp us\nset ting\nS prite\nãģ ¯\n_re ply\nTo List\n: \\/\\/\ned e\nĠfol ks\nĠbo at\n( argv\nĠperman ent\nĠcarry ing\nĠconserv ative\nimport ant\n. img\nĠIm m\nĠdim ensions\nal and\ns ingle\nEx it\n-------- --\nari ant\ntern al\nSe conds\nĠIt aly\not lin\n.Res ume\n=' \"\n) ==\ncept or\nĠs ca\n/m ain\nSec urity\n_d at\nĠlet s\nĠa qu\nĠwhen ever\nb erry\nĠact ing\nant i\np d\n& gt\næ Ń\nZ one\nT oday\n! .\nTo Props\nab is\nit able\nĠg al\n] {\niz ona\nĠin contri\nN ET\n/// Ċ\n[ in\n_s ave\nĠex em\nĠK enn\nĠev olution\nvar s\n_st ats\n- only\nĠColor ado\nĠwatch ed\nb our\nĠsever e\nĠprofession als\nport ion\nĠguar ante\nÐ ³\nĠpush ed\nĠG i\nï ½\nĠt um\nĠA z\nĠEdge Insets\n\")) ;čĊ\nis se\n. ac\nSet ting\nĠapprec iate\nĠValue Error\nĠsur ve\nĠR ole\n. Inter\nplot lib\nj et\nd am\nĠplatform s\nte le\nUT O\nĠInt ernal\n+ :\n} ;čĊ\nGener al\n\\ Entity\nĠlawy er\nqu iv\nĠPost s\nis o\nĠacc um\nob e\nĠmark s\nĠ] ;ĊĊ\nĉ text\n.s uccess\ncur r\nas a\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠ\nĠth in\n_ over\nare st\nĠO s\n( address\nĠvel ocity\nĠ[] ;ĊĊ\n=\" ../../\nĠPr iv\nb ow\nĠguar antee\n% ĊĊ\nĠeval uate\n.LE NGTH\nĠin ventory\nq a\n_de bug\n.On ClickListener\nĠl ies\nĠassess ment\ndat etime\n.background Color\nĠ*/ čĊčĊ\nra f\nun wrap\nĠF oot\nĠnot ify\nĠlow est\nDO CTYPE\nĠl anguages\nex tra\n- back\nĠein en\ntem plates\n_p ass\nĠM ust\nĠest Ã¡\n_c ore\nĠSc ot\nA I\nĠb ias\nations hip\nCon stant\nĠprogram ming\nIn s\nuspend Layout\nĠPRO VID\nant es\nĠsh irt\nin ated\n. OK\n[ a\nĠthink s\n? ĊĊĊĊ\nĠregard less\nĠMag ic\nul ating\nĉ class\nadd Group\nRE ATE\nĠS U\nĠsim pl\nc opyright\nĠb unch\nĠun iverse\nĠE rr\nĠpresent ation\nc ategories\nĠatt ach\n.s ign\n_A C\nĠdisc ipl\nĠregular ly\nĠprim arily\nink s\n[ [\n.r and\n.sh ould\nownt own\n=\" '\nĠs ans\nĠsupport ers\nse quence\nG O\n. .ĊĊ\nĠS pr\nĠcare fully\nU IColor\ndest roy\nĠtod os\nĠOR DER\nott ed\nĠd ont\naud i\n_ player\ng re\nĠO il\n< body\n_st ack\n.P adding\nĠProduct s\nĠpriv ile\nĠinj ured\nĠF urther\nĠal ias\n.Resume Layout\n_LE N\nĠs es\n'] ;ĊĊ\ncre ens\nĠdirect ed\n.S uspendLayout\nod ge\n.A t\nmark s\nĠUn ivers\nert s\nĠE sc\nĠnav bar\nĠutil ity\nagnost ics\nĠin ject\nĠD NA\nĠ\" ,\"\nam ar\nĠe u\nĠrestaur ants\n_p ut\nut ers\nTool Strip\nt w\nist ro\nĠz oom\nĠleg it\npec ific\nĠC ome\nĠlocal Storage\nĠabs or\n.P anel\nĠDesign er\nĠo w\nIC AL\n_ uri\n(f ield\nĠsup erv\nEx ists\nĠrespect ively\nĠSt and\nCon f\nuss ian\nĠar c\nĠ nd\nuck s\nĠre str\nĠseason s\nĠCh apter\nĠSw itch\np ic\nĠh i\nload ed\nĠfl uid\n-b tn\nĠrun time\n. it\nB N\nOp acity\nas ant\nry ption\n-n ative\nĠta ught\nå ¯\nag ment\nĠm ul\nReg istry\n_ grid\nĠBro ok\n: Set\nĠm ongoose\nAM ES\ninner HTML\nĠs oci\nĠInt el\nget Id\nC md\nĠaccess ible\nr ames\nle ton\nĠ__ (\nĉ delete\nĠS quare\n\" ĊĊĊ\nĠbu cket\navor ite\nĠB reak\n++ ]\nĠbr ush\nĠt ensor\n/ http\nT ile\nĠfunction al\nĠ\" *\nwh el\nĠt ent\nĠChar acter\nĠse es\n. ST\nB ig\nĠext ern\nUrl s\n)) )),\nĠJ r\n.B uilder\n. ;\nn l\n_ Init\nĠH ER\nÅ¼ e\nmys qli\n_ icon\nv an\nĠfeel ings\nĠle an\nĠhop ing\nT V\n=\"<? =\nĠcur ve\n_st d\n_L INE\nd st\nĠmor al\nem es\nog y\nĠur ban\nĠas ide\nĠedit ing\nAD D\nSe cond\nTr ack\nĠvot ing\nĠhon or\n. ',\nell en\nCh at\nĠimpro vement\n'] ĊĊ\nł ģ\nĠpars ed\nĠĠĠĠĠĠĠĠĠ Ċ\nĠla zy\nĠfall ing\nSerial ize\nĠP a\n_ gr\nĠfore ver\n. white\n. Query\nB ed\nĠD u\nĠres ume\nĠp apers\nĠIn it\nĠsuffer ing\nâĢ ĭ\nĠdeclar ations\n() -\nĠexec uted\nĠH ol\n.b lock\nãĥ ³\nS K\nĠst uck\nĠL ock\nincip al\nNull able\nĠs essions\nun i\nĠcou p\napp ro\ngh an\n_p ool\nĉ id\nĠsl ots\nĠmedic ine\nĠgl ad\nĠMono Behaviour\nat re\nĠ$ ('\nmeric an\nag g\nĠk ann\n_con nect\nĠbr ands\nĠs ke\nĠdig it\n< n\nĠback up\nĠperson ally\n.P roperty\n.com mit\nĠc ry\n_count er\nĠm alloc\nĠgr an\nĠD rop\npl atform\nred entials\nink ing\nĠU IL\nub s\nĠm l\nless ly\nGener ated\nere otype\nĠb at\nLayout Panel\nLO T\n\");čĊ čĊ\nĠmus cle\nĠcert ificate\nAND LE\nĠhard er\nĠp ixels\n) \",Ċ\n. Header\nĠdevelop er\nĠL as\neg an\n. <\nĠexpl ode\nĠparticip ate\nP attern\n(t able\nĠT EXT\nconst ants\nx D\nth ew\n}, ĊĊ\nãģ ®\n_d es\nĠsub str\nĠSm art\nĠsc ala\ng ent\n-b ar\nession al\num bs\n.ex ec\n' \\\nT K\nun ist\npro of\nc ial\npro c\n={ \"\n.h ref\n=$ (\nĠl unch\nisc al\nĠEn try\nĠout door\nsem ble\nĠessential ly\n/ G\n[] )\n% \"\nst en\nUSE D\nĠd ust\nå °\nĉ ĊĊ\nĠret ire\nĠf ib\nAl though\nĠlo ves\nĠread s\nyc les\nĠH el\n_ uint\nĠ' .$\n_in itial\nN amed\nĠfundament al\nAD ING\nĠto w\nĠA DD\nĠAcad emy\n: String\nĠcompreh ensive\n.s cal\nĠM eta\nM essages\n.annot ations\n\\ Response\nĠacknow led\nĠA RE\n] ==\nĠclean ing\nè ¾\nEnt ities\nĠS ales\nĠW is\n.ext end\nall enge\nĠg aming\n$ query\nIC ES\nET CH\nH orizontal\nqu ential\nB ACK\nde velop\nis or\n(c ode\n- K\n_P IN\nrequ ency\nĠQ uestion\n_ container\n_mod ules\nĠJer sey\n_d iff\n. el\nĠ* ((\nc nt\nĠS a\nC PP\nin ite\nĠun us\n- white\net ary\nĠinvol ving\nĠ? >čĊ\nb est\nall as\nent ed\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĊ\n_con nection\nĠrep o\nen abled\nÐ°Ð º\nĠsh a\nĠmembers hip\nStatus Code\nin ating\n_s m\n_c ustom\n_ weight\nĠc ss\nSt at\n_ env\nlink s\nTR L\nĠH it\n, r\nup id\nĠop ens\nĠg ent\n_v is\nĠj oy\n< w\n_c ost\nĠPy Object\nren ce\nĠGeorg ia\nĠBro ad\nm ma\nâ Ĥ\np f\nĠ\" \\\"\nĠ( &\nom o\nĠliter ally\nĪ ĺ\nmet ric\nĠb ars\nz ed\n(w indow\nĠIsrael i\nĠform al\nident ifier\n.d ao\nĠDe ath\n% ;Ċ\nĠdecl are\nar ms\nRE AM\nPERT Y\nĠconsequ ences\nto ols\nPe ople\nĠWh ich\n> ();čĊ\n.de code\n_A CT\nButton s\n.f loat\n.F irst\në ¥\nĠPol it\nĠX CT\nT ags\nĠCG Float\n= str\nĠle af\n- check\nĠI ss\n.s ystem\nlog out\nach t\nAng le\ns in\nch art\nINT ER\nĠN UM\nB asic\n.P roperties\nä¸ Ń\n_ change\nĠB razil\nAb stract\nĠ: +:\n_ use\nÐ° Ð»\nĠL y\nIB UT\nĠout er\nĠ-- >čĊ\nĠrel ief\nl ap\nqu er\n_p arent\nhe ap\nLO SE\nĠcomb ine\nĠR ose\now ers\nĠproced ures\nĠS ort\nan im\nvar iant\neh icle\nĠsign ing\nPr imary\nc urrency\nĠsex e\no en\nth eta\nem an\nĠimpress ive\n(' _\nĉ U\nĠText Style\n_c nt\nĠs lice\n(' :\nĠunderst ood\nH is\nĠinform ed\nĠn ick\n(T AG\nh d\nĠelection s\nest ure\nĠS anta\nĠCo ast\n.p df\ninc iple\n.cl one\nb orn\nut a\nĠl icensed\nC r\nĠb read\nĠH ouston\nĠn od\nĠhop es\nĠCG Rect\nĠgu ilty\n.g if\nĠro se\n.Com mon\nT ip\nAN K\nĠF C\nD uring\nĠSym fony\nĠdef ensive\nk m\n) >\narch ive\nĠU RI\nycl ing\n- o\nĠWe bsite\nAM P\nish ment\nĠdo ctors\nD irect\nAR I\nĠRed irect\nier en\n_d ist\ny o\nĠPro gress\nĠz um\nĠmem or\nĠE D\nĠj ur\næį ®\n_T ABLE\nĠu uid\nEx pr\n. head\n(' %\npoint er\nĠest imate\nĠG reg\nĠlo ader\nĠi OS\nĠm ens\n[ y\nĠref used\nĠprec ision\nis ch\nĠA CTION\nCl oud\ns With\n( ret\n_ADD R\n_con f\n(d f\nĠlock ed\nĠr ising\nãĥ» ãĥ»\nĠM s\nĠscen es\n_EX T\n_ raw\n_ the\npe ople\nĠre con\nĠF un\nĠb less\nĠUp dated\nÃ¼ n\nĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\npe ction\nRe lease\n.log ger\nĠS Y\nĠcoun sel\nur d\n_ true\nĠevery body\niv ot\nĠh ence\nĠN AS\nĠoppos ed\nunk nown\nĠDES C\nĠCh air\nfa iled\nĠIN CLUDING\nĠwrit ers\n{ }Ċ\nÃŃ t\n_c opy\n} :\nĠB at\nĠconvert ed\ned ing\npl acement\nĠH ost\nS ound\nÐ¸ Ð¼\nĠs ought\nm id\nĠsal ary\nog g\nâĦ ¢\nb ul\nĠw ir\nvalid ator\n_ST AT\n.st ore\nĠB attle\nÄ± n\nĠ-- >ĊĊ\nTr ump\nd ot\nĠCON T\n.f etch\nĠcontin u\nw as\nĠfra ud\n_t mp\nmit ter\n.p ictureBox\nG A\nĠt ournament\n. Input\n[ r\nex ion\ncent age\nĠKore an\nund ef\nĠAv ailable\nresh ape\nĠk it\nĠStr uct\nĠS UB\nAn swer\n_l ib\n.t witter\nĠo re\nĠDr agon\n.Ex t\n, k\nĠexplan ation\nref s\nĠDr ive\nĠTr aining\n.H as\nint age\nb ig\nolog ist\nenn is\nÙ ĩ\nĠch icken\nĠĠĠĠĠĠĠĠĠĠ Ċ\nç Ľ\nãģ §\nĠpe ak\nĠdrink ing\nĠen code\nĠNE W\nm alloc\nĉf printf\nĠ= ================================================================\nin cluding\nĠprincip les\nĠM ah\nst orage\n- key\nĠkey word\n% ;\nĠtr ained\n.con trib\nĠk v\n__ ':Ċ\nĠB oy\nparam eter\nĠsu ite\nĠthous and\nĠco ordinate\n-g enerated\níķ ĺ\ngener ated\nĠad mitted\nĠp ussy\n# w\nĠsw im\nun ion\nN a\nĠRoy al\n.ch annel\nUp dated\n_RO OT\nĠv ital\nra ction\nĠCrush er\nĠpre ced\nĠhor izontal\nBlue print\nĠattr s\nĠsm oke\nÐ Ĵ\n. Equals\nF B\nĠRes ources\nroll ing\nĠpass es\nĠN um\nrot ate\net ype\n\\ \",\nĠsens itive\nĠt all\n? âĢĿĊĊ\nPro xy\ni y\n_ section\nâĢĶâĢĶ âĢĶâĢĶ\nbr id\nĠcirc uit\nat an\nEN C\nĠdr iven\nĠvot ed\nĠeduc ational\nĠinter action\nabet es\nĠt one\nĠInitialize Component\nĠmer ely\nĠì ŀ\nco okie\n_ div\nĠUIL abel\nvel y\n} );čĊ\n_ ENT\n#+ #+\nart icles\nĠSou thern\nĠstrong er\nĠG iven\nĠE ric\nĠI R\nab stract\nU nder\nn able\nĠincre ment\nov en\nĠco in\n_t imer\nĠsuffer ed\nĠF REE\n'] .\"\nĠQue en\nst ats\nĠmeet ings\nĠenter ing\nĠalong side\n(s ession\nit als\nĠfound ation\nĠC redit\n. div\n_ ALL\npc ion\n_st at\nick ing\nDefault s\n_s rc\nĠoutput s\n/ B\nĠent hus\n-b l\n.Fore Color\nĉ temp\nF ace\nĠinter act\nĠwe ird\nM ount\nre ll\nud ents\nĠrequire ment\nĠS us\nI ER\nĠe lected\nre ference\nĠM E\nĠserv ers\n.w ait\nĠsnap shot\nil ton\nĠtri es\nĠt ipo\n.T ime\n> w\nĠmount ain\nĠp ounds\nĠ[ ...\nex ists\nĠng On\n_M AP\nĠf lying\nxi ety\nĉ value\n_D B\nun o\nĠse ats\nT URN\n. author\n! )\nor ce\nĠindic ated\n.s in\nĠass ignment\nim iento\nĠF rame\n_g en\nin ery\n_ )\nm essages\n.set tings\nĠMe an\nĠM useum\nir q\natt ach\nĠPalest in\n_ QU\n_t ags\nĠcas ual\nem en\nASS WORD\n$ s\nĠC irc\nÐ¾Ð ¹\net ric\n/ P\nĠep och\n< head\n_C MD\nĠg it\nĠpen alty\nor ph\n_ users\nours es\n.Date Time\natern ion\n_pro ject\nĠsuper ior\nĠD am\nĠSe attle\nX Y\n> The\nĠA k\nĠgr ass\n/* čĊ\n(d is\nĠgun s\nĠt b\nĠK evin\n. args\nĠA h\nop ed\n( J\ncolumn s\narg uments\nĠWith Events\n_f ull\nĠDef ense\nS imple\nĠdeath s\nĠext ensive\nĠSt ill\nĠEx pression\nĠAg ency\nĠperform ing\nF X\nĠus uario\nU AL\nS ide\nod os\napt op\nĠcred entials\n_c ap\nat ient\nĠDis ney\nĠa i\nĠch ip\nĠvol t\n.make Text\n%%%%%%%% %%%%%%%%\nĠbelie f\n_LO C\nĠC ivil\nN avigation\nĠreve al\nĠviol ent\nĠF il\nĠc atalog\nem ed\nsc an\n. control\nĠconstit ution\nC ountry\nSepar ator\n_A PP\ntop ic\nuet ooth\nM IN\nĠdes criptor\ny t\nET HER\nĠdistrib ute\n' }Ċ\n.tr im\n.L ine\nĠl bl\nassert Equals\nĠD et\nomb ok\n( width\nĠt ort\nĠEXP RESS\nac o\nUs ing\nĠBr and\nw all\nEM ENT\nĠComm unic\n< uint\nĠG UI\nEG IN\nĠR ange\n/ i\nĠT aylor\nc ost\nĠrespond ed\nĠTh eme\nn ce\nIS H\nĠfeat uring\nReturn s\nĠK r\nĠ .Ċ\nĠn am\n_c b\nTest ing\nĠ{ },\ny al\n.f ield\nĠ/ =\n_SH ORT\nm ates\nTest Case\nain less\nĠeval uation\n_ ITEM\nĠPac ific\nĉ k\nĠc ant\nĠR os\n) s\nĠf et\nSTR ING\nĠDis pose\ng al\nĠJ oin\nĠP orn\nĠCath olic\nAR GET\ncp u\nç łģ\n.sc roll\nIS ING\nifest yle\nanc ement\nĠm erc\nĠB rowser\neter min\nĠover flow\nAv ailable\nĠbott le\n: UI\nific ial\nĠco ord\nclar ation\nĠcon j\nG LOBAL\nok u\nĠk wargs\ncond itions\nul um\nĠg enu\nĠH ero\nå İ\nĠun expected\nĠDAM AGES\nĠk a\nĠC ould\nUP PORT\nĠPh otos\nĠconf ident\nĠdet ected\nde g\nrg b\nĠstrong ly\nĠ} ;čĊ\nĠ) :\nĠle ct\nurs ive\nRO L\nĠWe ight\nĠent ertainment\nĠ) );Ċ\nĠg onna\nĠb b\n.d o\nG S\nĠmist ake\nD L\nĠPROVID ED\near ning\nL imit\niss ions\n[ v\nä¸ į\nir ty\nD el\nĠunder lying\npre ne\nĠj aw\nĠD I\npe er\nĠobject ive\nĠde posit\nĠk on\nĠes p\n.set Visibility\n/ login\n< typename\nĠfr anch\n/ e\nPar allel\nĠsc ored\nĠH on\nĠV ill\nig a\nĠant icip\n_ assert\nĠO pt\nĠdescri bes\nw an\nm ount\nĠmonitor ing\nĠt out\nëĬ Ķ\n}, {\n................ ................\n= int\nĠc ust\n---- --\nĠatmos phere\nP AR\nort e\nIS IBLE\nĠI ron\nĠNot ification\n.log ging\nĠBO OL\n-p oint\nĠaf raid\nent a\nĠtom orrow\n@ implementation\nĠeng age\nĠAn th\nĠF loor\nĠU l\nTo ols\nĠb ab\nĠcare ful\nãģ Ħ\nĠcruc ial\nĠcalcul ated\nĠS A\nĠw y\nD X\n_T AG\nind ed\nĠj et\nĠEngine ering\n.M AX\nen z\nv d\nĠpublic ation\nĠ## #\nĠfac ed\nra ham\nĠC apt\nAs set\nĠCon stants\nĠlo ans\n_ IP\nĠF ish\nRed uc\n_m at\nDate Format\n_m e\n[] []\nĠintegr ity\nĠC ourse\nlob als\nĠfac ilit\nĠem br\nĠN g\n.S ystem\nĠmanufact urers\nĠpro ven\n.on Create\nĠal arm\nĠÂ §\nĠcomm only\nic os\næĸ °\nĠSt ation\n} ).\nĠF ilm\nw i\nç ī\nĠeng aged\nSt ats\nĠgovern ments\nĠafford able\n_p roperty\nĠag es\n(' --\nĠf Ã¶r\nĠProf essor\nĠhy dro\nP ush\nĠorgan ized\nAc cept\nÃ© m\n_c ell\nĠn b\np b\nArt icle\nĠrem oval\nĠauth entication\nĠF R\nl ide\nĠple asure\nap ol\nĠpart ition\nĠS ide\nĠcr imes\nĠdem o\nhold ers\nĠPak istan\nIn struction\nĠexpect ations\n.sc ene\nĠ' )\nh es\nino is\n_P ro\nĠm olec\nand al\n_sh ort\nĠdefault s\nĠn ations\nin en\nĠr t\nO CK\nP acket\nS B\nĠSH ALL\n_cont ents\nise conds\nvert y\nÃ¡ t\nG uid\nn om\nĠcon clusion\n. Update\nĠlo vely\nĠem it\nb ec\nĉĉĉĉ Ġ\nĠintel lect\nĠb rew\nec ycle\nF ire\nĠad mit\nĠar bit\nĠarr ang\nĠM IN\nM ail\nĠN ative\nC ur\nĠcon vent\n.R untime\n\" }Ċ\n.R un\nĠprint ed\nĠconven ient\n. ar\nm ock\nĠAdmin istration\nãģ ¾\nĠelect ron\nfl ate\nĠl ombok\nĠjava fx\nn h\nĠsup plies\nĠvisit ing\nah l\nĠpow der\nĠult imate\nĠorient ation\nut as\n_s cale\nCon firm\nph ones\nĠOper ation\n/ T\n_IN TER\nĠair port\nĠmet rics\nĠphen omen\na udio\nĠm ai\n( K\nh u\nall ing\nrodu ction\nĠTrans port\nĠNOT E\næĸ ĩ\nĠfew er\n_T IM\nì §\nÐº Ð¸\nA ge\nF IN\nĠì Ŀ\nĠAt tribute\ngroup s\ner k\nat to\n. define\n.AspNet Core\nategor ia\nĠS ir\n( form\n< User\n. round\n_d ay\n.A ll\nServlet Response\n.N o\nl arge\nIG H\nqu ent\nĠvir us\nĠret ro\nĠim per\nBit map\nĠv ice\nĠoff ense\nist e\nĠA UTH\nĠê °\nToolStrip MenuItem\nG u\nĠr ape\nĠDav is\nĠover whel\n: flutter\n- table\nĠCon structor\nPr ivate\ne ven\nch r\nĠap plies\n_at tribute\nĠcon tribute\nE VER\nL ines\nĠAf ghan\nVis itor\nĠS L\nse ason\nC U\nĠintrodu ction\nĠmat plotlib\nÅ ĳ\nĠnewsp aper\nâĢĶ and\n< tag\nĠin i\nĠd iverse\nIgnore Case\nĠU r\nAg ent\nĠb ull\n.em it\n( Exception\nar Layout\nĠincred ibly\nĠTr ust\n={ (\n- nav\nĠe quals\nĠl ady\nĠP od\nd isc\nal am\nĠI V\nâ Ļ\niv idual\nph i\nadd ed\nĠdifficult y\nĠcomp act\nĠAction Result\nc ers\n_class es\nNon Null\nĠqu it\nĠp ou\nS witch\nir s\n- test\nĠK ind\nĠCal endar\nĠstream ing\n} ',\nS W\nĠst ead\noc a\nĠprov ince\nĠcol span\nĠperson nel\nĠE mployee\nĠprodu cer\nĠevery where\nod b\nÐ Ł\nbs olute\nact ivate\nĠgr inding\nĠBuild ing\nĠSand ers\n(s c\nĠOff set\n//////// ////\n} ;čĊčĊ\n({ \"\nĠscan f\nĠY Y\nĉdef er\nĠj ew\nĠrestrict ions\n.m p\n[ l\nä¸ ĭ\nlabel s\nred icate\naw esome\nĠw aves\nĠcon front\nĠmeas ured\nĠdat as\n_ex it\not ton\nĠshould er\nask a\n+ #\nĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĊ\nĠtro ops\nĠU nd\n_c ard\nw ich\nĠn ous\nĠ\"/ \"\ns b\nĠcommunic ations\nEx port\nĠdec ode\nth s\ninter pret\nBy Name\nĠSp irit\ned ges\nO LE\nĠE M\nt it\nĠTh rough\nĠb io\nĠP ackage\nor ne\nĠ} .\n` ;Ċ\nĠok ay\nĠZe aland\nident ity\n(n ext\nĠB ang\nLib rary\nĠheav ily\nil on\nĠdi pl\nĠrot ate\nput s\n) ',Ċ\nĠData Table\nĠmay or\n.to LowerCase\nĠsome how\nĠNor thern\nal c\nĠcap abilities\nĠv ibr\n+ Ċ\nĠS u\nĠRes et\n_m ean\nĠc ig\n.cl oud\nĠB and\nĠF actory\nĠAr izona\n_ io\nop her\nĠconsc ious\nĠÃ ¶\n\\ Controllers\n_s peed\nĠF ac\n_C om\nĠB ible\nw en\nED IT\nĠun n\nĠSt aff\nĠIn n\nĠmechan ism\nĠM embers\nĠmigration Builder\n'] .'\n.get Int\n< void\nĉf ree\noid s\n\\ Support\nĠautom atic\nĠch ances\nÐ ¶\nĠcomp licated\n[ row\nah oo\nĠ}ĊĊ ĊĊ\nModel s\nW in\nĠt ape\nir us\niz on\non omy\n(\" _\n: .\n.st ereotype\n( env\n_re ct\n(w ith\nĠassert That\nĠcon straints\nput y\nE mployee\nT D\nĠgu itar\nĠJew s\n.pro cess\nĠf iction\nĠSh ared\nâĶĢ âĶĢ\nĠprop ag\n.N et\nĠachie ved\nĉ Q\nĠn urs\nSh ared\n_FAIL URE\nĠbeh aviour\nĠcol s\nism o\nĠfem in\nĠchalleng ing\nĠpost ing\nenc il\nĠcapt ured\nĠD ou\n( word\nĠTur key\npan ies\nĠre putation\nORM AL\nĠelig ible\nprot ocol\nid as\n(f rom\nĠfin ance\n- per\nĠg otten\nH A\nd uration\nĠP arent\nĠin vent\nĠre start\nÐ¾Ð» ÑĮ\nr ition\n(r s\n< bool\ni ert\nĠmod ification\nĠT X\nreadcr umb\nb ank\n$ /\nĠMill er\n] ),Ċ\n.Check ed\nĠsac r\nse curity\nĠp ose\nĠBr ad\nĠfit ness\nĠannounc ement\nation Token\nĠserv es\nne ed\nĠge ometry\nAR S\næ Ģ\nandid ate\nĠs prite\n_s plit\nWe ek\nad ies\n> (Ċ\n?> \"\nĠ/// Ċ\nĠein er\nĠweek ly\nĉlog ger\n_p op\n_m an\nĠmigr ations\nĠask s\nĠb s\nĠfall s\n.W here\n- height\n_fe ature\n.M in\nĠhy per\nĠvol atile\nĠtw enty\nTyp ography\nUn able\nD et\n, f\n-m od\nĠsett lement\nĠcontract s\nn ome\nB ad\nĠB rian\n(user name\n!! !!\nĠh ack\n.F ield\nH R\nĠJ ordan\niz a\nĠÂ ł\nĠSh er\n. header\n( other\nĠD ub\n( op\nĠR ound\nĠv ie\nĠap pl\nĉ J\nĠIn sert\nĠL P\nreg on\nĠM PI\nĠan chor\nac a\nÃ¸ r\nĠa de\nanch or\nque e\nĠTree Node\nĠtarget ed\nĠla id\nAB EL\nv et\nĠOr igin\nA nt\n. ');Ċ\nex pect\ned Reader\nĠM ajor\nĠin ch\nCom par\nĠpre view\nĠill ness\nĠCONTR ACT\nĠInd epend\nu uid\nĠn ome\nĠt c\nĠA venue\nis an\nĠph rase\n_m ove\n\") [\nĠprov ision\nĠconcent r\n_ IR\nĠU t\n() +\nĠn as\n! ,\nĠRob in\ni ations\nat itude\nĠp x\nĠWith out\n/b ash\nek t\nre ement\nOb server\nĠReg ion\nUBL IC\nĠ{ //\nK N\nå ·\nGame Object\nå ¾\nenc oding\nĠ** *\nproject s\nĠt k\nĠche ese\nEM PL\nar o\nĠØ§ ÙĦ\nĠcons ists\nref resh\nure au\nĠSc anner\nĠso il\nĠfl avor\nData Source\nEx ecute\nÐµÐ½Ð¸ Ðµ\nĠsh it\nåĪ Ĩ\n< any\nĠretrie ve\nĠbelong s\n.st rip\nabs olute\nĠexp anded\nbo y\n): -\nĠresc ue\n.J Label\nĠre ly\nĠal ignment\n-f amily\nĠre nd\nOLUM N\nĠb orrow\nĠqu otes\nĠL ew\nĠsh ower\nĠDE LETE\n_lo op\n! \"ĊĊ\nĉ re\nĠattempt ed\naver age\nĠP aint\nquis ition\nol en\nĠliter ature\nĠRe ference\n_TEXT URE\nĠS eg\nĠInd ust\nct ype\nD UCT\n_H OST\nĠTr ade\nĠpl ugins\nĠbre ast\nul se\nĠcreat ure\nãģ Ļ\nĠW i\nĠsup plied\nc oll\n! (\"\nĠfuck ing\nĠCh rome\nĠU ri\nĠN ation\nĠvert ices\nT HE\nĠOr iginal\non de\nĠsh arp\nĠcook ing\nĠ{ /*\nĠPs ych\nĠH ollywood\n=$ _\n.D ock\nĠg er\nĠb one\n_con n\n_se c\nys ics\nĠ= \"\nS al\ns f\nĠdeep ly\nang les\nT erm\nb ell\nĠQu ick\nener ation\nadio Button\nåħ ¥\n}čĊčĊ čĊ\nĠcapt ion\nl c\nĠE L\n, [\nĠĠĠĠĠĠ čĊ\nret t\n(m ethod\nĠFl ash\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nW ISE\n.s cale\nĠrough ly\n_ child\nm emory\nay ing\nĠinitial ized\nin ator\nÐ° ÑĢ\nĠsc alar\nĠH o\nai res\n(c olumn\n.de stroy\nP ACK\nĠh em\nang el\n_S UB\n. qu\nĠ ×\nDE FAULT\npos itories\nĠL ength\nĠF ast\nĠsign als\nĠ// $\nri ers\nĠd ummy\nAN Y\nĠperson ality\nĠa gricult\nPl atform\nER O\nĠT ra\nĠen orm\nĉ W\nAction Result\nĠa ver\n[ str\nĠ' --\n.S printf\nĠdeb ut\nĠ Ñĩ\nh ex\n_ utils\nĠp b\nU ITableView\nĠz ur\n. encode\nĠv ag\n.error s\nÐ¾ Ð½\nĠm r\nĠA ward\nĠc pu\nĠpress ed\n' est\nĠF estival\n' T\nĠa k\nres olve\n.m e\nĠn ic\nĠgen re\nĠat trib\nĠMo on\nĠarr ive\nĠD ating\nĠt m\n.Config uration\n. red\nĠgl m\nĠst ations\nsw itch\nĠt ied\näº º\nĠ/ ></\nQu antity\nquir y\n_t ab\nĠal g\nTo ast\nres ize\nquest ions\ns chema\nL iteral\n( entity\nNE CTION\nch anged\n_F IELD\n_HE IGHT\nĠorgan ic\nP RE\nĠC at\n.D raw\nE s\nĠl oud\nĠĠĠĠĠĠĠĠ ĉ\nĠK at\nĠhe ap\nâĢľ It\net r\nĠun likely\ner als\n/ auth\nt odo\nPl ace\nPost ed\nCom ments\nĠTe ch\nĠFin ally\neg ration\nĠmin imal\nĠFile s\nĠt amb\në¡ ľ\nĠRe lease\n.res ize\nĠ Ï\ncol lect\n= p\nĠLI ABLE\nĠprodu cing\n-w rapper\nĠsing les\nĠN BA\nor r\ner en\n.add Action\nĠthe sis\nd n\nPT Y\n.d es\nĠb acter\nĠEx press\nĠ* )Ċ\nå ĳ\n/ admin\nsecond s\nåĬ Ł\nuss ion\nab eth\nĠCom puter\nĠr uling\n(\" ../\n.G ET\nĠMed al\nition ally\ncom mit\nf ocus\n_LE VEL\nind a\nF act\n= np\n=\" \">Ċ\nĠsubsequ ent\npos able\n-fl uid\nĠth orough\nĠpublic ly\napt ers\nĠWil son\n_P RE\ny ard\nä ¼\nĉ in\nĠre vers\nĠbul let\ncri bed\nnes ota\nĠ($ _\nann on\nc ursor\nĠclo thing\nĠM ulti\n: ',\nĠv ess\nordin ator\nĠein em\nC annot\nĠar med\nĉ V\nä¸ Ĭ\n.F lat\nĠS ep\nĠSub ject\n_f ont\nĠcharacter istics\nD one\nel n\n######## ####\nPO S\nĠd ensity\nĠPl atform\n- items\nĠo vers\nĠpush ing\nç ¤\n.Con nection\n_ term\nĠinitial ization\n________________ ________________\nç ¬\n.d ocument\nles h\nĉd ocument\nĠP in\nÃ§ a\nĠdefinition s\n.P ath\n_W RITE\nĠ ĉĊ\n? >ĊĊ\nĠter rible\nbe an\nick ets\nĠS V\nB uy\n(t ask\nĠreg ime\ng oogle\nĠcr ack\n.vis it\nN UM\nener gy\nĠstr uck\n_s ample\n.p ayload\nĠre vis\nĠSc ene\nĠp g\nĠbreak fast\nURRE NT\n.char At\n_ex ception\nĠAnt on\nĠguid elines\nĠex haust\nĠFin ancial\nĠind ent\nĠdes ktop\nH idden\nF ailure\nĠpr inciple\nĠ iv\nĠse ks\nn etwork\nĠnumber Of\nĠAl bert\nĉ long\n, .\nĠz eros\nf ade\nĠT yp\nĠT erm\nĠAr ts\n.App lication\nĠbeh alf\næĪ ·\nĠm ere\n(` ${\nĠaware ness\nelp ers\nf lix\nĠwe igh\nĠestim ates\n. child\n/ O\nĠBit map\n.b ottom\nĠ************************************************************************ **\nEx pect\nent o\nĠFor um\nver al\nĠj ail\nĠab ilities\nĠH OLD\nĠC it\nĠd ynam\nĠgr ay\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉ\n.next Int\nant ly\nĠAR ISING\n( private\nĠreject ed\nĠN ic\nĠle ather\n= {Ċ\naly tics\nth etic\n.T op\n.P age\n={ `\nĠ ;čĊ\nde pth\nm ann\nW D\nĠS om\n.R ight\nĠ) }Ċ\nĠtr ait\nÃ Ĺ\ni ac\nĠr v\nS ample\n.X ml\nopp ed\nĠÑ Ħ\nlist s\nĠt ear\nivers ary\n.c ollection\nĠCon stitution\nĠHttp Response\nĠbr ill\nĠP rom\nh over\nĠM iami\nĠarg ue\n_f loat\nĠ ãĤ\nĠn at\nĠT al\nĠinteg ration\n(c ur\nĠrem oving\nĠco eff\nĠTh ough\nĠfore cast\nĠV egas\nS ite\nĠtr ab\nĠHen ry\n- i\nĠinvol ves\nB T\nĠs lo\nIn voke\nĠl ucky\nr at\nĠ? Ċ\nĠhand led\n(f d\ncont ents\nĠO FF\nR F\nĠst y\nĠM otor\nter y\nt ax\nM AP\nĠMr s\nĠph ones\nĠUI View\n\")) );Ċ\n( dev\nĠIr ish\nĠw s\nD I\n_OFF SET\nĠEvent s\nĠst ages\nĠ} //\nĠhab en\nST ANCE\nĠS in\nĠM oney\n(t op\nĠappoint ment\nVER SION\nmet adata\n_com ment\nĠcolle agues\nmap s\nâ ĺ\nĊ ĉĊ\n( al\n_re q\nĠf ut\nĠarchitect ure\nĠWH ETHER\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n_s creen\nĠstyle Urls\nĠmon ster\n. up\nph ia\nĠprocess or\nĠT err\n= ',\nĠMan ufact\nĠN T\nk el\nib ern\nĉf ile\nA li\nrient ation\nĠ// !\nap ore\nane ous\nĠC reat\nf older\nĠh ay\nSup press\n( left\nĠe uro\nĠdis claimer\nustr y\nsh ips\n_f d\nĠF a\n_in sert\nĠro l\nif ting\nĠCom ments\n_b r\nĠloss es\nĠAdd ed\nch arg\nĠÐ¿ Ð¾\n_s ystem\nĠS ometimes\nĠSp ain\n(g roup\nial is\nĠdoll ar\nĠAr gs\nqu ires\nĠT en\n.s css\nĠsurv ive\nus age\nĠj un\nim iter\nï¼ģ ĊĊ\nĠfif th\nt oggle\nĠdecl ine\n($ \"\n(L ong\ning e\nĠpil ot\n-l ight\n-r adius\nĠpod cast\nĠnatur ally\nP ages\nä¸ º\nĠDes pite\nĠlight ing\nĠcr ate\nĠB inary\nĠredu cing\nĠe leg\nĠM ouse\nĠTest Bed\nĠbefore Each\n_ ARRAY\nRed irect\nĠf lood\nĠsh ips\nĠelectric ity\n)* (\nê ¸\nĠV iet\nher o\nĠd ia\nĠK ent\nhe art\nĠthreat s\n_ acc\nĠs ymbols\nis chen\n_in st\nC riterion\nĠT IM\n. Height\nĠ âĢĻ\n();ĊĊ Ċ\nProduct s\n_S P\nĠC y\nĠdepend ent\nest e\nĠdat os\nd it\nÐ°Ð ²\nIGN AL\nĠless on\n\"> '\nĠC over\nĠH ope\nĠT imer\nĠd ad\nvid ers\nĠPh ot\n/ ?\nrop y\nom ing\nas ion\nĠ\\ (\nĠE T\nĠRe ading\nĠep isodes\nl m\nech a\nĠne uro\nĠhar mon\nĠlib eral\n- ind\nD ATA\nĠevery day\nĠdiv ided\nĠActive Record\nfig ure\nU A\nä ¹\nriend ly\nte ch\n.game Object\nÐ¸ÑĤ ÑĮ\nĠmo on\nft ime\nĠno ch\nĠT ORT\nĠV M\n.in itial\n( child\nĠmus ical\nĠo c\nb as\nĠH ay\n_l ong\nĠmem set\nile y\nadel phia\nS V\nro at\n_t x\nĠl on\nĠngOn Init\nb p\nĠGold en\nAC HE\nĠwor ried\naz i\nE ar\nT ake\n(f p\nbur gh\n_ Data\ng res\nĠO nt\np us\nĠtrans parent\nĠp ocket\nĠr am\nigr ations\n. čĊčĊ\nĠ[ (\nĠadopt ed\nĠreported ly\nĠD ream\nĠ} ));Ċ\nlos ing\nĠte eth\nĠBook s\n\", &\nenn y\nLE MENT\nĠg el\nĠPl ant\n! âĢĿ\n.h ost\nĠRep ly\nre ngth\nĠrecogn ition\nĠ}} >Ċ\nL A\nĠmir ror\nĠassist ant\n( device\nĠspirit ual\nb uilder\nÂ §\nĠou tr\nĠt t\nĠP ER\nĠrad ical\nMethod s\nĠp ace\nud y\nĠg ut\nĠG reek\nĠnon atomic\nĠP aper\n_G PIO\nĠob st\n.A d\nviron ments\nĠS ov\n( con\nĠTrans action\n. assign\nĉc atch\nel ter\nĠbit coin\n_G R\nĠ<? =\n_l ang\nìĿ Ħ\nB rowser\nĠconsider ation\nĠExec utive\néĹ ´\n; \\\nĠJSON Object\nĠB ell\nĠspokes man\n~~~~ ~~~~\nock ey\nĠG ro\nĠA w\nCon straint\nĠPr act\nĠE ver\npr im\n: {Ċ\n_ im\nP N\nMill is\nUM ENT\nĠb ags\nÃ¥ r\nANN EL\nĠ ic\nĠtransport ation\nĠS audi\nh andler\nD rag\nĠh d\nc ollapse\n_P H\nĠ ub\nAR M\nĠA PP\nĠton ight\nĠd ining\nRec ogn\nĠb c\nig t\n(n umber\nBo ot\nĠelse where\nĠar row\narg a\nĠdel icious\nĠS N\nW R\nValid ate\nĠQ uality\n( email\nĠinter pre\nig ation\nĠch ocolate\n_ edge\nĠstop s\n: function\n) |\nĠth ai\nĠLo ading\nSt ory\nTr igger\nbr anch\nĠt d\nentic ated\nĠadvent ure\nĠblock chain\nEvent Handler\nĠs qrt\n.P r\nL ng\nB ecause\nĠv iv\nĠo cean\nylv ania\nÐ° Ñģ\nĠUtil s\nĠdes per\nĠdef er\nĉ require\nh l\nRe quire\n] \\\nĠdirection s\n_res ource\nĠsubs cribe\nĠÃ º\nĠHe art\nest s\n-s ub\nĠR h\nfor Each\nĠdel ight\nĠterr itory\n.con current\nĠ( +\nj pg\nĠprepar ation\nĠround ed\nCom m\n.Le ft\nĠopin ions\nĠN avigation\n(f irst\n\", $\nĠh ire\nĠdet ection\n.getElement s\nĠe ps\nĠsk learn\nĠc z\nĠ/ >čĊ\nmet ic\nĠtrans formation\nåı ·\nĠr gb\nistrib utions\nĠimp licit\n/ in\ndest ination\nÐ°ÑĤ ÑĮ\nZ ero\nĠun set\n. where\n.g o\nĠform ation\nĠdeclar ation\n() čĊčĊ\nĠEx pl\nĉĉĉ ĠĠ\n/ pro\n.J SON\nĠdes k\n.sub str\n//---------------------------------------------------------------- ------------\nly n\np son\ndis able\nĠF unc\nĉ Assert\nĠM ARK\nĠdefe at\nĠbl ind\nĠconst ants\n. headers\nUIL D\nĠexp enses\nP ixel\nĠh r\nĠf el\nĠEast ern\n_d el\nĠC ub\nĠs q\nĉc ount\nĠD irectory\nĠex clus\nĠhistor ic\nĠ ------------------------------------------------\nĠcom position\nĠdata GridView\nĠB urn\nĠB C\nM aster\nĠsp awn\nĠbe aring\n.Set Active\nil o\nĠg allery\nĠfound ed\nĠav ailability\n.s qrt\nĠp es\nĠD OM\nm ate\nO ct\nĠmatch ed\nit ivity\nĠan xiety\n.pr ice\nĠIn stant\nì Ĭ\nĠt ut\nIC ollection\n.sh ared\n_s ql\nt bl\nlib rary\n_de stroy\nerm al\nĠNot es\nĠE in\nĠsou thern\nĠOTHER WISE\nĠmac ro\n.l ower\ncl s\nContent View\n.l ink\nconst ant\nĠB es\nĠsome body\nn b\n\"> {\n( local\n.. ...\nĠN ull\nm x\nĠÃ §\nĠp ause\n-------- ---\n_M O\nĠC M\nĠfor Key\nĠD VD\nĠclose st\n_DE VICE\nĠSte phen\nĠB BC\nĠTr avel\nP aint\nĠResult s\nĠR ule\nĠt p\nĠrat ings\nc in\nc sv\n> /\nĠG OP\nl ad\nĠ ÑĢ\nĠindex Path\nm atrix\n= f\nars ed\nĠ} );\nĠC os\nĠS core\nĠt ak\nĠE SP\nĠIN C\n_N ULL\n-f lex\n\"] [\nint o\nel and\nAuthor ization\n_F ALSE\nĠg ate\nĠv id\nist ent\nT IME\nĠre write\nĠt ie\nĠarch ive\n.event s\n.get Parameter\nĠPer mission\nĠprogram me\nĠ é\nj ud\nĠcam eras\n(s ys\nĠSy rian\nĠimpro vements\nĠh ip\nĠsu icide\nĠsch olar\nĠcompat ible\nrem ote\n.d own\nF UNCTION\nĠman aging\nĠUI Kit\n. raw\n>> >>\nĠdem ands\nell ite\nĠd ent\nĠM icro\nåı ĸ\n'] [$\nĠI E\nim ension\nĠt rem\nĠg ained\n.w ith\n. ok\nh ou\nĠb om\namp aign\nĠjoin ing\nf ish\nĠadd Subview\nĠnor thern\n.c or\nore t\nD ie\nin ish\n_com p\nĠatt ended\nĠcoll apse\nĠS S\nac ent\n_E QUAL\nĠDe ep\nR GB\nĉ test\nol ves\nus et\nUn ityEngine\nw riter\nRes olver\n, %\nif ference\n_re move\nond a\nĠfem me\nde code\nBr anch\nĠfl ush\nĠinnov ative\nTest s\nĠ[' ./\nĠcover ing\n. admin\nultip art\n(l ambda\nï»¿ namespace\nĠS port\nĠ! (\nac les\nĠde pression\nĠK ong\nĠp ert\nĠCon n\nĠOther wise\n/ home\ns upported\nĠp ink\nĠinv ited\nÃ± os\n_en abled\nĠ- Ċ\nF W\nen ers\nĠM Y\nĠsuggest ions\nCan vas\nĠf er\nĠMarket ing\n@ Test\nunt u\nĠV en\nĠC ou\niv als\nDon ald\nlim ited\nĉĉĉĉĉĉ Ċ\nĠanal yst\n( entry\nĠrepresent ative\n_at tributes\nĠf ur\n.h ide\nres p\nado res\nrid es\nĠJ osh\nro bot\nĠN AT\nĠs esso\nĠintegr ated\n: true\npart s\nĠst upid\n: event\n@end section\nĠp u\n.T able\nĠY ii\n` ;ĊĊ\nĠcl ang\n=\" \">\neng an\n_param eters\n.int ernal\nĠMod ern\nĠmet ric\nĠsem i\n={ {Ċ\n.am azon\nĠB B\naint y\nview port\nĠstart Activity\ndis patch\n**** *\nĠfl av\niffer ent\n[ this\nĠst ake\nĠarg ued\nvious ly\n.w ork\nĠO ak\nO ld\n( async\nnot es\nĠfl ip\nĠdis ag\nĠT E\nĉ error\n< '\nĠÂ» ĊĊ\nĠfilter ed\nĠM ach\nĠh ung\n_d ump\n_s amples\n-dis miss\nĠr ay\nIm plemented\nD K\nĠj ed\nĠbreak s\nĠf its\n. gr\nĠZ ero\nor o\nĠequ ally\nĠ' [\nĠconcern ing\n< meta\nplay ers\n_P OS\n_s im\nJ an\nĠyour s\nĉ N\nĠsp ir\nĠch ampion\nĠAn alysis\nap a\nĠNS Log\n_l ines\nÃ± a\nĉĉ ĠĠĠĠĠĠĠ\n.S c\nRe p\netro it\nur able\nM IT\ncom pat\nown ed\n_ind ices\n], čĊ\nĠdis covery\nĠDie go\nob i\n. Index\nĠtrend s\nPL AY\n.n o\nĠl ens\n_c fg\nĠan no\nag an\nĠperiod s\nter ms\ny z\nĠattack ed\nib ration\nPEC IAL\n_ grad\nĠaccord ance\n.Read Line\n.de vice\nri x\n. container\nm ay\nerc ise\nĠL u\nĠr g\nĠÑģ ÑĤ\nĉĉĊ ĉĉĊ\n( un\nTERN AL\nĠless ons\nĠalleg ations\nĠtrans mission\n.Re f\nM obile\nĠT ournament\nĠN ut\nĠG a\nĠCap ital\ndef inition\n- exp\nc lean\nĠfant asy\nĠenh ance\nent ence\n'] :Ċ\nack ets\nĠcelebr ate\n@ \",\nSerialize Field\nĠarray s\nt b\nĉ st\n[ assembly\n( reg\n.c ategory\nĠimpro ving\nĠsal ope\nByte Array\nOr iginal\nĠ[ {Ċ\nåĽ ŀ\nĠCl in\noen ix\nĠS amsung\nĠmaint ained\nĠag enda\nf ail\nĠpres ents\nĠtim ing\n.m ark\n' ><\nĠprom ot\nĠin cl\n_ only\në¥ ¼\nĠAtt orney\n- date\nĠlands cape\nĠf u\nS Y\n.p rop\nĠA rr\np ag\nParallel Group\n': čĊ\nĠlog s\na unch\nunc i\nn ama\nTable Cell\niss ues\n. {\nec urity\n_ex ec\nold s\nĠhost s\nĠpro to\n_ import\n_s ort\nĠB ow\nĠN ormal\nĠF arm\n.create ParallelGroup\nR otation\n. err\nĠp leased\nit age\n.W h\nĉĉ ĠĠĠĠ\nM R\nĠM ORE\nĠN atural\n_ transform\nB ASE\nener al\nut down\n.common s\nW T\nĠa an\n. Result\nd og\nĠclick ing\n), ĊĊ\n# line\nOper ator\nĠc iv\nĠm erg\nob uf\nng then\nĠ[ {\nĠcan cell\ntr igger\n. :\nW ORK\ndecl are\nĠdecre ase\nÅĽ ci\nlo om\n.N one\nĠM I\nĠJ ason\nĠhealth care\niam ond\ns ylvania\n* x\nĠR a\n[ b\nĠprint ing\nph abet\nĠLab our\nop per\nĠz ijn\n-t arget\n_F UNCTION\nĠo ct\nÐµÐ½Ð¸ Ñı\nåľ ¨\nĠwest ern\nĠcomput ers\nĠR ET\nHash Map\n[ String\nget Value\n_D ATE\n.N ext\nĠF if\nÃ© l\nick ed\næ İ\n-M M\nĠ{ ĊĊĊ\nĠcontact s\nĠdig its\nPro du\nĠunus ual\nĠrapid ly\nt ures\nĠang ry\nc ancel\nxx xx\n_p arser\nid ity\n_P REFIX\nĠme hr\nĠrare ly\net he\nop es\nĠ% .\nwork s\nĠthe ta\nĠcontrib ution\nĠT ony\nĠsqu ad\nÐ°Ð ¹\nĠÃ® n\nth ere\nout ed\nĉ q\nĻ Ĥ\ng ood\nL I\né¡ µ\nĠL iving\niz abeth\nĠk t\nĠD allas\n] ],Ċ\nĠ/ >ĊĊ\nĠrais ing\n/r outer\n_g ame\nĠC UR\nz ens\n. es\nĠfont Weight\n(f unc\nnot ification\nĠ'../../ ../\nĠbl ame\nãĢĤ ĊĊĊĊ\nan co\nId entity\nf ollow\nĠart s\nx s\nĠofficial ly\nĠSt udio\nĠrecommend ations\nĠloc ale\nĠam ateur\nĠEn able\nĠcap s\n. End\n- add\n_g shared\nĠC T\nFor ce\nĊ ĠĠĠĠĠĠĠĠĠĠĠĠĊ\nĠor ange\nĠl p\nĠanswer ed\n.G rid\nĠd ual\nĠstrateg ic\nĠnob ody\nĠf atal\n_ est\n( el\nĠì ł\nĠB udd\nA IT\n_f actor\n- one\nĠH AVE\n\" čĊčĊ\nPro f\nĠÃ¤ r\nstr ings\nĠdir ty\nĠF ace\nĠB egin\nĠB us\nĠw is\nåŃ Ĺ\nĠspe aker\nĠcar rier\nĠO m\nĠhad n\nAll ow\n:: __\nĠver b\nĠCom plete\nĠE asy\nĠb ills\nĠĠ ĊĊ\nVert ical\nĠpr on\nĠDef ine\nĠlook up\nvariable s\nĠpand as\num es\nĠinn oc\nĠset Up\nĠCh ampionship\nart ist\nĠC Type\nF oundation\nà¹ Ī\nĠSet up\nĠrec ipes\nĠU IColor\nĠF ight\nĠauthor ized\n_c lick\n_s uccess\nang an\nĠMount ain\nĠDo ctor\nĠeg g\nĠMedic ine\nc les\n` .Ċ\n[ int\nd ashboard\nĠApp ro\n-d r\nĠprodu ces\nĠrent al\nĠre load\nĠarr ival\nsp ot\nĠund ert\nĠequ ipped\nĠpro ved\nĠcent ers\nĠdef ines\nal so\nĠop acity\nĠUn fortunately\nĠIll inois\nĠÐ½ Ðµ\nĠTem ple\nĠTr ail\nĠK elly\nĠmeasure ment\nĠsepar ated\n-c ircle\nH ey\nĠRE AD\nig its\nĠ ib\nĠM OD\natter y\nÐ°Ð ·\nĠv end\nÐµÐ½ ÑĤ\nĠHttp Client\ns afe\n_A SS\nic it\nĠCon struct\nĠC lo\nĠS ix\n_T OKEN\n(b lock\nĠwarn ed\n/* !\n! </\nac ades\nĠm arg\ner ase\nĠdispl ays\nistr ator\nget s\nĠg tk\n_G ENER\nn ed\n_ %\nĠfavour ite\nĠB ru\nĠÃ ¡\nsecond ary\nĠm ast\nĠs oph\nĠSaf ety\nh ard\nra ise\nĠEx change\nĠcont emporary\nĠdream s\nĠt el\nĠneighb ors\nĠH oly\n.m ean\nem it\nĠM ess\nC ast\nNE CT\npl ugins\nĠr b\nw r\nĠh ub\nĠStud ies\nĠposs ession\n$ ('.\nens itive\nĠadd Criterion\n__ .\nĠexpert ise\nAr ch\nĠc ub\nerv ers\nĠpartic les\nu ar\nĠbound ary\n) ',\naj o\nĠpre f\n: `\nĠhar ass\ni u\nĠreach ing\nĠme g\nĠz o\n( ID\n_re quired\nĠs Ã©\nĠQ ueue\nA O\nĠg em\npt on\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nij k\n( {čĊ\nĠcoll ision\nĠUkr aine\nĠ-* -Ċ\nNS Integer\n_B LOCK\nĠText ure\nĠdecl ined\nn an\n_w ait\nĠpolit icians\nĠco ins\nĠder iv\nh elper\nĠPer haps\n.re ct\nĠPol y\nab ling\n}/ >Ċ\nĠinnov ation\n_ \"\nĠ );čĊčĊ\nĠsp ots\nĠcho osing\n.c s\nĠflex ible\nU Int\nĠscr atch\n- al\nĠf estival\nĠout standing\n================================ ================\nM ean\nĠO regon\ns ymbol\n. account\nd ney\n'' '\n! \",\nĠpart icle\nÃ ĥ\n[ MAX\nIV ER\nER ENCE\nNS Mutable\nĠColum bia\n_ ĊĊ\n.f r\nĠc ogn\nV R\nĠMethod s\nĠM ade\nĠB R\nĠEl se\nĠeg gs\nĠsw ing\nĠIn v\nĠdise ases\nĠf irms\nĠle mma\n}` );Ċ\nl ings\nĠg ym\numin um\n.T rim\nM em\nĠcritic ism\nibern ate\n_T X\nion i\nĠguid ance\nĠrepeated ly\nĠsup plier\nĠpaint ing\n.F ragment\ned Exception\nĠw iring\nĠcour ts\nW EB\næľ ī\n\\ .\nill ance\nĠb rows\nĠP attern\nPL ICATION\nĠSum mer\nCh ain\nĠc ute\nmer cial\nĠd il\nĠFrank lin\nĉg lobal\nIN CLUDING\nh istory\nĠl st\nQ t\nSD L\nal ia\ni ere\n( ...\nĉc in\niff s\nvel ope\nĠR oot\ncl uster\nUser Name\nign e\n< S\nĠf est\nĠindic ating\nke eper\nĠc ada\nÃ© g\ncons in\nĠG B\nĠl b\nem ony\n-icon s\n_d oc\nAct or\ne lem\n.De lete\nĠin fection\nĠPriv acy\nĠgreat ly\nĠP os\nĠT reat\nFl ow\nĠattract ive\nĠMar c\ns udo\ntes y\n- an\nab ama\nĠW ould\nĠsu ck\nindex Path\nĠE t\nT imes\nĠclub s\n_ass oc\nĠac quired\n(\" :\nĠint ense\n.m aps\nEx pected\nT oggle\nĠa y\nĠl ifestyle\n-c alled\nĠS now\nV olume\nĠcann abis\nĠD irection\nĠLim ited\n-s pecific\nĠd owntown\n/ icons\nĠre ven\nL eg\n= null\nKey board\n') ).\nĠ\"\" ;čĊ\nĠatt itude\n.n avigate\n- error\nAM PLE\nĠJ ay\nv r\nc ow\n.com pile\nĠmem ories\n_m ark\nĠMin nesota\nĠk osten\nĠprob ability\nw arning\nĠgen etic\nF ixture\nĠHash Set\nN ombre\n_m onth\nÆ °\n- start\nxy gen\nĉ ft\ni agnostics\nĠMat thew\nĠconcept s\nĠcon str\n. State\nÐ¸ Ð½\nN ov\nÎ ±\nĠP anel\nä¸ ª\ncom pare\n> ()Ċ\nĠapply ing\nĠprom ised\nĠo x\nnc ia\nĠValid ation\nort s\n_c ur\ne lect\ney e\n( Data\nĠreport er\nĠB uff\nĠs r\nĠ\" ;\nick y\nĠtemp or\nS N\nĠres ident\npi res\nys ical\nĠend orse\nĠS ong\nis Empty\nle et\n_ util\nĠdist ingu\nĠT alk\nĠM ot\n( default\n.A rg\ngorith ms\n_ words\nim mer\n_res et\nf amily\nW W\nĠsav ings\nĠâĢ Ŀ\n_en able\nside bar\nRun ning\nĠal i\nĠtest im\nĠwarn ings\nĠCh em\nĠEx it\nĠfound er\npect or\nĠr m\n_d ataset\nĠD as\nĠh an\nGet ty\nÃ¡ l\nĠn y\nĠpo verty\nĠresult ed\n.b y\nĠVis it\nĠobt aining\n/ '.$\nĠĠĠĠĠĠĠĠĠĠĠ Ċ\nsh all\n_LE FT\nUI Image\n_ Name\nh ave\nĠN ob\nl r\n- footer\nĠn aked\nĠG arden\n\\F acades\nĠgrad uate\nĠfranch ise\npl ane\nĠcontrib utions\nĠstring With\nĠc rypto\nĠmov ements\nath ers\nĠlif etime\nĠcommunic ate\nj ar\nĠFr agment\n_ IF\nĠN avy\nĠF igure\nĠsim ulation\n_st op\nĠreport ers\nĠvers us\naj a\nĠÎ ±\nĠgovern or\nList Item\nĠse aled\n.Back ground\ned i\nash ing\nĠl ip\nĠI h\nmer ge\nĠn ec\nel ocity\nATE G\nĠse eds\nĠflo ating\n_F A\nw alk\nĉ user\n_de pth\nĠw age\n@ app\nN il\n( [\"\n( vector\nĠsecret ary\nĠj Panel\nve z\nÂłÂł ÂłÂł\nd irection\nĠE P\nĠh unt\nJson Property\nĠP ORT\n] \",\nÐ°Ð ¿\nĠFore ign\npan ic\nĠtri als\nĠA le\nĠr ural\n- value\nauthor ized\nĠScot land\n.d rop\nĠM T\nç ±\nrow th\nFile Path\nĠrec all\nif le\nĠc el\nĠSE LECT\nk n\n_c ase\nĠc rop\ns ure\np ot\nIC S\nĠst em\nĠindust ries\nP ut\nĠa ber\nroad cast\nIcon s\n) \")Ċ\næĪĲ åĬŁ\ng ui\nĠassum ed\nĠr x\nE A\nè §\nEL L\nĠdo se\nĠin e\nĠde eper\nl ider\nĠord inary\nĠg olf\n_IM AGE\nĠN AME\n(m odule\nĠat om\nĠbel t\nĠoff ices\nb eta\nĠphilosoph y\n( JSON\n-f ield\nĠintrodu ce\nĠconven ience\nopt im\n> \"Ċ\nath y\nĠemploy er\nqu ate\nĠed ited\nArg uments\nĠN ations\n__ )\nĠno se\nĠS ample\n' )ĊĊĊ\nĠc ake\n.get Attribute\nH D\nMod ified\nĠpredict ed\nÅ Ħ\nan ie\nS orry\n(d oc\nw ind\nie ve\nĠprov isions\nAT ER\nOT E\nM Y\n.A utowired\nĠB ath\n. Boolean\nĠback end\n.M ouse\nater al\np aper\nCon st\nĠV R\n_ entity\n_C TRL\nĠProte ction\nĠG M\nĠStud y\nĠsou p\not ime\n' use\n] \"\n/ users\na ug\nĠH ong\n_n orm\nãģ ¨\nĠse cre\n(B uild\nĠCon tract\nol as\nĠsa uce\nĠaggress ive\nĠrac ial\nchar acter\n@ @\nĠcomp ile\nĠV oid\n_re m\n_m emory\nk k\nĠm ic\nS ame\nU tility\nĠH tml\nĠX ml\nRead y\nĠg all\nĠalleged ly\nĉĉĉĉ ĠĠĠ\nĠMet al\nĠPerson al\nĠborder Radius\nrx js\nobject s\nĠwant ing\nĠb owl\nv endor\noffset of\nĠR s\nĠR ating\nĠr ally\n_N ODE\nĠM ix\nĠadvert is\nĠnarr ative\ns al\nĠm c\nSE rror\nĠf ingers\nĠaccom pany\nĠt ired\nĠstr ide\nĠgu i\nel ist\nLoc ale\nĠrele ases\nik ing\nĠan ger\n)) )ĊĊ\nalle st\nSum mary\n( O\n(f or\nĠbasket ball\nĠroad s\nĠInst all\nĠF ab\nit map\nĠ) )Ċ\nĠinter section\nighb or\nĠB ry\nĠHER E\nSo ftware\nelf are\nac s\nĠtrail er\n.get Class\nch ars\nĠreg ulation\nĠref ers\nĠde struction\nĠcontin uous\nĠAust in\né ¢\nak an\n.w indow\nĠTem plates\nĠabs ence\n: n\nĠdis order\nfl ash\nĠde let\nbo ards\nĠĠ ĉ\nRO P\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠac qu\nĠlaws uit\nĠRe views\nĠgar age\nt imer\nĠe j\nĠRect angle\nĠflow ers\nil st\nĠIn stance\nS uper\nd et\ndis posing\nĠE S\nĠI C\nver e\nS k\n_ch annels\nput ed\n/ null\nnn en\nĠG allery\n_g lobal\nAuth entication\nĠR ank\nĠblock ed\nĠcal m\nmark et\nĉ val\nĠa ug\nper iod\nĠCon stant\nĠ?> \">Ċ\nĠl obby\np al\nĠs ink\nia h\nÐ ¡\nurn ame\nĠcon ver\nĠinvestig ate\nCh rist\nH ub\nĠIN D\nĠP ed\nur as\nĉ url\nĠT ro\nĠpre ferences\nĠguarante ed\n` ĊĊ\nĠport ions\nĠeval u\n' ></\n() {ĊĊ\nenc oded\nz illa\n.C lass\nĠ* _\n_ '\nĠview ed\nĠPhil adelphia\n. rows\nAdd ed\nĠT ouch\n.de legate\nquee ze\nsl ide\nĠSen ior\n(t ag\nĠinter views\nĠsu a\nat as\n@ ĊĊ\nd istance\nĠse in\nlate st\nĠPr ince\nĠlux ury\nĠre fr\nĠK itchen\nÑ Ħ\n( at\nF inal\nÃ¼ ck\n_z ero\nĠA BC\nĠMan chester\nĠc ow\nC OL\n_NUM BER\nch anges\ngener ate\n.Print f\nsh are\nSt ock\nĠP T\nAn im\nang a\nĠ ig\nupload s\nĠpack ed\nĠ} ];Ċ\n(s ender\nĠW ire\nis ons\nĠplay off\n\\ E\n/ R\nĠhead ed\nAl pha\n( order\nĠoppon ents\nack son\n_m ember\nT urn\nĠSov iet\nìĹ Ĳ\nau ge\nĠin coming\nĠj ak\n-g ame\nĠM ale\nĠMon th\nSt age\n.ex e\nOwn Property\n.set Item\nĠd c\nä½ ľ\nĠbr ut\nĠattempt ing\n.l en\nĠjud gment\nĠs ab\nĠc ad\nĠItem s\ncom fort\nel ize\n/ log\nĠentre prene\nĠcomp iler\n_valid ation\nre view\nĠtext Box\nĠfra ction\nĠB al\n> ;ĊĊ\n.AutoScale Mode\nĠc ats\nĠreg istry\nul us\nF I\np ayload\n- search\nĠstay ing\nac ious\nDec oration\nRe view\nIn f\nKe ep\nit is\n, String\nCo ord\nĠper o\nS ex\nĠAtl anta\nuest a\nArg b\n> *\n} _\nF ooter\nĠemploy ed\n_b ound\nv ide\n.f unc\n$ scope\nĠsp o\nĠAn al\nounc ed\nar ound\nĠrestr iction\nĠsh ops\nå Ģ\nĠLat in\n-c ol\nĠbare ly\nĠE uro\nE r\nĠfa ire\n_d istance\n_un lock\nQu ote\nIV ATE\nĠå Ī\nĠaim ed\nĠRet rie\n. iter\nĠwr apped\nĠagre ements\nstr ument\n( product\nĠstud ied\n.set Value\nĠy e\nĠC ache\nMB OL\nĠquarter back\nĠsy ntax\n.getElements By\n.v ersion\nwe bsite\nRun ner\n_s ingle\nat iv\nĠAl tern\nĠBeaut iful\nright arrow\nĠd iversity\npl ash\n( co\n.F ill\nĠtyp ing\nĠcl ar\nH it\nO O\nac co\nw orth\nĠscript s\nĠMuslim s\nĠL L\nerv ing\n( boolean\nĠbase ball\nĠC AN\nMA IL\nde pend\nĠrespect ive\nĠconst expr\n.* ;ĊĊ\n'] ))Ċ\nĠy ard\nĠident ical\nif ecycle\nUS H\nup iter\n. validate\ncl i\nIST ER\nInd icator\nF ail\nĠdemocr acy\n. var\nĠsatisf ied\n------------ -\nenc er\nh or\nĠr ounds\nDA O\no a\nĠfl ask\n= c\n[ ]Ċ\n/d ist\nĠpart e\nĠconfirm ation\ner on\naw are\n<? >\nĠdepend encies\nĠV ideos\n- row\nĠ** /Ċ\nĠn ou\nĠh over\næ ŀ\nĠn in\nĠUS D\nM ac\n_L oad\nĠout comes\n_s ocket\nĠqu eries\nw m\nĠhit ting\nin ux\nM ich\nud ge\nAT AB\nĠvulner able\nä ¾\nĠport folio\n: YES\nĉm ap\nB ound\nĠiter ation\nin cess\nĠact ors\nĠQ ual\n_c lean\nãĢĳ ãĢĲ\nMS G\nG reen\nĠOff icer\nĠsm oking\n> ',\nĠF lo\n++ ;\noly gon\nĠbul k\nĠdr ama\nĠexception s\nos ed\nĠ+ čĊ\nĠleg acy\nC V\nĠcontrib uted\nĠTer ms\nĠb t\nĠunt uk\nĠal ien\n=== Ċ\nĉ Vector\nĠl s\nOn line\n.f acebook\nnum eric\nock ets\nA ut\nb ury\n-re dux\nĠRed istributions\nGLOBAL S\nurrenc ies\nĠt ons\nâĢĻ ,\nĠÃ ª\n(c ol\nĠS ymbol\nĠstay ed\nĠM L\nĠm unicip\nĠsex o\nS en\nn r\nĠg ains\nĠshort ly\n.M enu\nÃ ½\nKN OWN\nĠoper ators\n- V\nĠPat rick\n/ add\n_C O\nir ation\n(p ost\nPost s\n/ _\nĠpl ug\nĠintellect ual\nĠmet ab\nĠpregn ancy\nĠPrem ier\nn m\nĠpred iction\nĠMin istry\nTh ree\nval uate\nĠMin i\nb u\nÐ¾Ð ·\n< ul\nĠd d\nol ving\nĠC ut\nĠs chem\n.tr ain\nit ate\nĠr ice\nĠbird s\nãģ «\nm iddle\nstruction s\nĠn erv\na que\nĠfl u\nĠsurv ival\nĠGal axy\nĠF ant\n. Order\nAt trib\nirt s\nÃ© c\nM ovie\nĠcon ce\nqu arters\nĠm ood\n.Add Range\nĠres olved\nãĥ Ī\nĠburn ing\nĉĉĉĉ čĊ\nĠW E\nĠhost ing\nL AB\nĠman agers\nĠstre ngthen\n< const\nĠFire base\non ed\nĠJ ean\n' </\nĠ:= Ċ\nal gorithm\nĠA rc\nĠfro zen\n_event s\nĠover se\ng oods\nĠf ait\nĠvi agra\nos es\nĠcomp iled\nĠA th\nĠsub stance\nan imated\nP F\npre vious\nĠro ots\n(f ilter\nolum es\nĠint ro\n(e vt\nĠB ag\nĠDef inition\nĠFe atures\nAn notation\nĠav g\n(s um\nQUI RE\nĠrender er\nĠF ix\n.dat etime\n= device\nS pe\nget Instance\nĠext ensions\n_n et\nĠPar liament\nĠcom ic\nĠP ick\nar ma\nĉm odel\nĠ --------------------------------\nĠm eng\nman ual\nad apter\n} -\ned back\nĠelect rical\nĠCount er\nApplication Context\n_by te\n( byte\nĠAut om\nĠterror ist\nç Ĳ\nth rough\nĠf iscal\non ing\nĠspect rum\nĠbit map\nĠs le\npro d\nĠag ed\nĠb ene\nĠS pi\nĠbrill iant\nĠst ability\nĠdi abetes\nĠconfig ured\nb one\nous es\n.google apis\nF ACE\nĠinspir ation\nĠD etroit\nen ch\nÑĢ Ñĥ\nveh icle\nSt ation\nĠh oles\nĠd urch\n.M edia\nĠC NN\nin ning\nĠPenn sylvania\nĠem otion\nSec ret\nÃ¡ rio\nĠR ate\nDep th\nĠmod es\n(id x\nĠh es\nĠgre y\nSt andard\nQ uest\nb uy\ns ur\nĠTr ack\nom m\n.g l\nĠ( \\\nt wo\n_ IO\nose x\n_ role\nç¤ º\nr outes\nSh op\nĠA SC\nĠmem cpy\nd irect\nĠ* ĊĊ\nĠB M\nĠP or\n_h istory\nĠResponse Entity\n.set Font\nĠeng agement\n, h\nĠWord Press\nfe cha\nĠentr ance\nDes pite\nID ENT\nĠsan it\nĠGener ate\n(\" \",\n_v ideo\nStr ategy\n_ ok\nĠt ies\nĠlog ical\nĠB ron\n( File\nĠM oh\n.S plit\n.T ry\nĠH ind\nĠsc oring\nĠapproach es\nĠfl our\nV RT\nUST OM\nscript s\nĠEp isode\nĠA mb\n_ OR\nĠfra uen\nĠun like\nĠr iding\nĠp it\nĠtrans f\nart e\nà¹ ī\nra pe\nret val\n_a fter\n\" <<\nĠBer lin\nĠt issue\n.Int ent\nĠÐ´ Ð»Ñı\nĠst unning\nĠH al\n. Integer\nĠwhere as\nĠde leg\nĠuser Name\nĠform ats\nĠcompens ation\nĠH um\narr ing\nĠuns afe\nP in\ncl ub\nkey word\n_th eme\nĠcall er\nĠg host\nĠent itled\nĠM as\nĠdemonstr ate\nĠHow ard\nD rop\n# undef\nĠinv oke\nĠB ridge\nend en\nib ling\nSl ot\nATAB ASE\nĠtemper atures\nser ies\nĠRem ember\nCal endar\nB F\n= ?\nĠA F\n( http\nm akers\nfin ity\nprec ated\nW H\nolid ays\n- un\nia le\n\\ User\nre ason\n', ĊĊ\nOW ER\nĠpredict ions\npro b\n.n n\nĠ' ;Ċ\n.From Argb\n_L ONG\nĠtr oub\nĠun ittest\neli hood\nĉ is\nĠcon sec\nLE ASE\nĠclick ed\nĠtem plates\nB Y\nper m\nmatch es\nl aw\n(t f\n_r atio\nitem pty\nĠcre ator\nB its\nEnc oder\n* .\nĠU IT\nĠM ask\nc url\n-g o\nĠO cc\ncor rect\nĠG er\n(l ayout\nun ct\n.dis patch\n; amp\n.is Required\nĉd o\nm ir\nĠp thread\n- auto\nĠI ce\nĠviol ation\nĠcon cluded\nĠvar s\ncan vas\nĠT emp\nĠPhil ipp\nĪ ëĭ¤\ncre ase\nĠfish ing\nab bit\nĠconcent ration\nirth day\nĠg ross\nĠk i\nĠH andler\nĠimmigr ants\nè Ģ\nU nd\np n\nr ac\nĠCons ult\nf old\nĠstrugg ling\nhe at\nG eneric\nĠrid ic\nĠCO VID\nom itempty\n_O PTION\nê° Ģ\nĠcreat ures\n_P AGE\ne i\n(h ost\n_H PP\nĠX XX\nĠaw k\nasc ade\nĠpre g\npro vider\nP al\neg en\ncl one\n.Reg ister\nĠatt achment\nbe it\nthe less\n( Date\nĠFore st\nCG Rect\nĠchild hood\nam ine\nax es\n'] =\nN avigator\nĠre plied\n_in v\n, T\nĠFe ature\n{ -\nL ANG\nĠcon vey\nçĶ¨ æĪ·\nĠSer if\nĠA us\nlic he\nĠun used\nĠm ont\nn odes\nĠse u\n.class Name\nn orm\n_S ERVER\nĠw ing\nin x\nR aw\nĠJ am\nĠins ight\nĠN G\nĠInter face\nĠst mt\nĠn an\ncul ator\n- app\n(B undle\nMessage Box\nà ®\nĠme ets\nub y\nOption Pane\nit arian\nĠcollabor ation\nm ovie\nĠarm or\n_b its\nĠH aving\nĠn ude\nĠSet ting\nĠsu cc\nD elay\n.com ponents\nach uset\nĠAlex ander\nÂ ©\nĠmet ers\nĠprepar ing\nĠin cent\nå ĵ\nĠkÃ¶ nnen\nĠCons erv\nĠnum ero\nachuset ts\n- int\nĠemph as\nlayout s\nEx cel\nIB Action\nĠres idential\nel ing\nĠN C\nĠAll en\nĠc ette\nĠmind s\n.re quired\nØ ³\nĠGirl s\nĠ} ;\nĠstringWith Format\nĠaddress ed\nth ey\nĠB lood\npos er\nĠj am\nÈ Ļ\næķ° æį®\nĠstd out\nĠU TF\nClass es\n> \";čĊ\nĠS av\n.B old\nĠen ables\nĉt mp\nĠman ually\nĠS qu\nuser id\n.f unction\n.c ache\nLO PT\n.S ervices\ndd it\nt im\n< img\nĠTh ings\nĠEvery thing\nĠa pt\nem and\nĠroll ing\në ¦\n. level\nĠst om\nĠW inter\nĠview ing\n( values\nocom plete\nv ia\nup o\nĠabort ion\ni Ã¨re\nï¼ ĳ\n_B UTTON\n_d omain\nĠb ra\nĠA st\nin as\nĠstat ist\nc od\nL R\nĠdr ives\nĠfollow ers\nĠall ies\nĉc urrent\necess ary\nĠdam aged\n_ pt\nand les\noun tries\nĠsim ult\ne u\nĠcontrovers ial\n_G ROUP\nĠr ib\n. Info\n: mm\n.n ormal\n_ADD RESS\nĠ íķ\nadd le\nĠD ur\n. Element\nW arnings\nĠcred its\nĠin hib\nĠem issions\nĠh az\n.y outube\nugg ed\nĠbo ther\nĠK ansas\nĠF ixed\nĠTest s\nĠF IX\nUn iform\nĠk ont\n>> >\nst ation\nlo re\nat ype\nish op\n/ ****************************************************************\nCom boBox\nĠvac ation\nĠiniti ative\nĠdefault Value\ncon cat\nĠK h\nĠW elcome\nized Name\nM igration\nĠgrad ient\nH ot\nĠhard ly\nel o\nĠStud ents\nĠlo ose\nat z\n.S end\n' /\nĠunivers al\nĠenter prise\nĠreg ex\nĠvis itor\nĠF ly\nSe q\nà¸ Ļ\nĠVis ual\nĠlib raries\nato es\nP ayment\nĠp ent\nĠgather ed\nVRT X\nĠD M\nS plit\nĠlet ting\nÐ Ŀ\n_error s\nep och\nP ARAM\nc u\nÑģÑĤ Ð²\nol utions\nEdit ing\nfont s\nĠalloc ated\nĠB ased\n( Y\nĠJud ge\nĠbro thers\nFILE S\nÃ§ o\nw b\n_P I\n' ^\nĠs word\n.s ervices\nĠn l\nT im\nig g\nĠMo ore\nĠcrypt oc\nåĩ º\n_post s\not ate\n? '\n... .ĊĊ\nĠk l\n=\" $\nĠdec oration\náº ¡\nĠD IRECT\nG UI\n) =>{Ċ\nĠnews letter\nĠprec is\n(p oint\nĠEqu ipment\nut y\nĠD ave\nĠparticip ation\nu arios\nx it\n.A s\nET ER\nor ous\nĠsh ield\n[] >\nilit ary\n. origin\nĠprom otion\nU nt\nĠc t\nTR A\nView Holder\nĠsig ma\nd elta\nare house\ncon tract\n( Vector\nĠcompet e\n/ form\n/ components\nĠn r\nĠInd ones\nĠÐ¾ ÑĤ\nĠV olume\n.f iles\n(res p\n/ models\nĠsur f\nstand ard\n/ o\nĠXCT Assert\nV ICES\n.C ode\nSE D\nĠact ivate\nD elta\nĠlimit ation\nri j\nĠpregn ant\n: ^(\nĠs our\np ie\nĠexp ense\nic ation\nĠL arge\nĠÂ ±\nĠB owl\n(model s\n/ N\nP a\n.re load\nĠwonder ing\nExec ution\nĉ ĠĠĠĠĠĠ\nĠG raphics\nĠCont in\n_j ob\nĠget Name\nĠM agn\nĠD WORD\nm ad\nĠn h\nfe atures\n} \");Ċ\nhe ets\n(tr ain\nz n\nĠrecru it\n.con nection\nĠbar rel\nĠste am\n_set ting\nĠang ular\nane ously\nĠb il\nĠN orm\n(! $\nib t\n% (\nĠpos it\nĠF ather\nint endo\nL ive\nĠport s\nĠme j\nĠland ing\npon der\nĠc od\n_HE ADER\n.M argin\nĠball s\nĠdiscuss ions\nĠbl end\nH ex\nĠfarm ers\nĠmaint aining\nĠĠĠ čĊ\ns yn\n[ T\nr us\nuff ers\nĠcontrib utors\n_s ys\n.De bug\nĠconstruct ed\nom es\n? id\nsl ider\nĠsup pliers\nscri ber\np es\nÐ ŀ\n\": čĊ\n\\ Controller\n)) ĊĊĊ\nĠl ua\nM ulti\nEN S\nS rc\nĠpet ition\nĠsl ave\nlook ing\nV ERT\nĉ vector\nS pecial\nh h\nan ne\nĠN iger\n/ views\nz ing\nend ant\n< C\ns peed\nĠ{ };ĊĊ\nBegin Init\nĠf open\n@ RequestMapping\nEnd Init\nĠp unch\nS ender\né Ķ\nget Message\n/t ypes\n.P I\n(' ');Ċ\noc used\n( all\nĠdrop down\n). __\nĠV in\n.Fore ignKey\ncan f\nou red\nĠOrgan ization\nĠÐ °\nĠC ulture\n(cl s\n, _\nrg ba\nìĿ ĺ\n.data GridView\nĠdo zen\nĠG es\n_sh ared\nn ick\nĠh osp\nom eter\nĠclaim ing\nib les\nri k\næĺ ¯\nen ario\nĠd engan\nob b\nm ont\n_r ank\n('/ ',\nĠap olog\nP s\n_p ower\nĠG ree\nĠful fill\nĠfire base\nĠf are\nĠH im\nĠbe an\nâĢ¦ .\nĠS PI\n_R X\nĠper ception\nrel ative\ncomp ile\nu um\nut os\na uc\nĠAs k\nĠindic ator\n/ th\n.set String\nĠWis consin\n.D omain\nĠart ificial\nDe velop\nĠSar ah\nĠl ying\n( search\nĠEmp ire\nurr ing\næĹ¶ éĹ´\n=\" ${\nĠget Id\nĠP ayment\ntrans ition\nĠ ].\nix in\nV T\n- select\nĠdemonstr ated\nĠlast Name\nemploy ment\n.get Property\nĠf ought\nfile Name\nĠP ers\n-c ard\na str\nattr s\nĠprom inent\nDes ign\nanc ouver\nãģĹ ãģ\nard o\nse cret\nĠr ag\nĠpo ison\n-m an\n, omitempty\nĉ un\nit zer\nĠCas ino\nĠR oss\n- foot\n(result s\nPl an\nĠlas er\nê¸ °\n_D R\nF acebook\nĠbo ards\nst a\n] ],\nĠt iles\nS IZE\nĠ= ~\nĠprem ier\noc ab\nĠenc oded\nĠres erve\nĠAfghan istan\nĠList Node\nurl s\nĠsub mission\nĠne u\nĠ# +#\n_P OST\nĠmo ist\nell i\nellig ent\n. alert\nÃ³ d\nb re\nĠCol lect\nĠgraph ic\nĠlong itude\nĠPro vid\nĠCal culate\nx ffff\nc riteria\nĠw aters\nro ck\nlo quent\nĠT rib\nĠbur st\nĠsuff ix\n.Ext ensions\nish es\niv el\nĠLI KE\nĠGet ty\n.Action Event\n.s lf\nĠH AL\nup al\nE AR\nud i\n_time out\nU F\nĠSing apore\nĠAd vent\n_int erval\ncha ft\nĠE mer\nĠtele phone\nĠTur k\n_ interface\nĠO wn\nĠencour aged\n< Object\n_T ext\nĠOnt ario\nĠApp ly\n.f irebase\nĠant ib\nP riority\nene z\nD ays\nc id\nurre nce\n; /\ninn ed\nÑģ Ñı\nĠve z\nf w\n// $\natt ack\nĠstart up\nain ers\n.f ragment\nop acity\n( conn\nhe im\n.n etwork\n( stream\nĠN ON\nt ol\nĠX box\nĠD S\nĠc ached\nĠprostit utas\nĠB alt\n(' [\nĠno except\n\" '\nĠs d\n. valid\n_ ag\nĠr aces\nĠro d\nitud es\n< >(\n.Pro duct\nForm s\nNE W\nP ay\nĉ boolean\n_ contact\nĠElect ric\nsk ip\nĠw ur\nĠch ronic\n_d river\nĠS ab\nĠU lt\nĠR ad\nST ATUS\nĠLew is\nO B\nĠgift s\n.Re c\nTR UE\nĠint ensity\nMark er\n.com pare\nff ic\nC ookie\nĠB aby\nĠBig Decimal\nile t\nĠHOLD ERS\nĠL ady\nĠl ung\nĠAl abama\nĠd ess\n` );Ċ\nĠB uilder\n_reg ion\nĠne utral\nBo th\nĠh p\nĠh orn\nĠseg ments\nĠE C\n\"=> \"\n( rec\nĠP i\nG M\nĠl aptop\nSc alar\nis d\n-d ialog\nĠAnd erson\nĠmist akes\nĠH an\nj es\nest ination\nĠprom ises\nb id\nĠSc ient\nG IN\nĠPer formance\nb age\n. users\nle ading\nĠor al\nG raphics\n_P TR\nh ang\nĠin ev\nprocess ing\nF actor\nĠN A\n$ string\nĠground s\n.Save Changes\nc lock\ncri pcion\nĠNew ton\ng c\n.in cludes\nĠbl ast\nĠ'- '\nĠpued e\n.S ession\nĠgre p\n_f inal\nĠG ay\nĠG ive\nir i\n-st ar\nĠUI Image\n_ep och\nub b\nent h\nĠel ite\nĠcampaign s\nĠP orno\n_ assign\nProt ocol\nĠBe ing\nĠAir port\nĠconvent ional\nĠW at\nĠC I\nET A\nĠAnth ony\nĠtable t\n( format\nĠconsist ently\nĠI owa\nĠav atar\n.c ursor\n! [\nĠh anging\nH er\nS uch\n';ĊĊ Ċ\norge ous\n() ==\nĠview Model\nĠ ãĥ\nĠel s\nĠAg ent\nF etch\nap or\nĠc x\np read\nĠP ier\noe ff\nS n\nĠV irtual\nA pr\n.Wh ite\n_M OD\nĠPoint s\nå¤ ±\nĠgen es\nĠv endor\nĠmain stream\n< src\nĠEl izabeth\nDec oder\n- state\nĠG lass\nnc y\nadi ans\n_m on\nĠRem ote\nĠwire less\nĠM i\nå ī\nè¡ ¨\nst age\nĠT ile\nll ib\nV ariant\n== Ċ\nĠgold en\n(Q String\n.put Extra\nĠD om\nĠAn imation\nĠinter active\nif act\néĻ ¤\nLE T\nĠfrequ ent\nĠ< >Ċ\nF ilename\nĠs ne\nĠFoot ball\nĠr ival\nĠdis aster\nion ic\nĠD amage\n. Resource\n- en\nĠT ypes\nget String\n( board\nĠb ol\npl ain\nz ym\nà¸ ²\nĠsc anner\nild er\n_msg s\næ ı\n(int ent\nĠde struct\nĠb ust\nĠE mploy\non i\nĠUI ViewController\nĠodd s\near er\nGe ometry\nĠy ii\n_EX PORT\nĠAtt ack\nĠn iet\nĠim pression\nĠG il\n_pro b\nĠC F\nĠEx perience\n/pl ugins\n.M ethod\nĠbelie fs\nN ative\n_b uild\nĠv ig\nĠr anks\ncover ed\ns uch\nG uard\n.p ack\nadd er\niv ia\nl ng\nĠÐ² Ñĭ\nT imestamp\n_n ow\nĠp oker\nĠun c\nĠsh apes\n-t ypes\n_per iod\np k\nĠveter an\nĠson o\nĠappoint ed\nover flow\n.d river\n_c at\nut t\npl ant\nim b\nĠAc cept\nĠconc ert\nĉ node\nĉ z\n? >čĊ\nĠb anned\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠto xic\nĠdisap pe\nÈ Ľ\nĠgr ace\nate ful\nRe ply\nĠCru z\nĠsc rap\nĠkey words\ns imp\nĠmort gage\nĠcy ber\nĠEx ecute\nĠlat itude\nif u\n.C OM\nd bo\nĠsort s\nĠG as\nom ial\n.L ocal\nCell s\n.Re place\nString s\n.f it\nĠTh ird\n% \",Ċ\nĠ{} \".\nĠS ony\nĠ[ :\nĠfall en\n. ')Ċ\nin h\nĠM C\nĠred is\nC odes\nĠprofile s\nh ook\nReduc er\n_F UNC\nĠn avigate\nstr len\nĠh orm\ná ŀ\nĠS R\n. boot\nĠdig est\nĉ header\n.find One\næ ģ\nDb Type\nn ia\n_m erge\nĠdon ne\n/ Getty\n_CH AR\nĠb ands\n. URL\nart ial\nĠf req\nĠs ist\nN g\nĠrender ing\n\\ Core\nWidget s\nĠV A\nĠactiv ists\nSt e\n= _\nall a\nSt amp\nĠload s\nĠx x\nĠL earning\n.M vc\nu ir\n(\" $\nĠconnect ing\nRead Only\nur u\nĠE ag\nB IT\n_DE L\nå §\narr ass\next ernal\nĠY OUR\nĠB rew\nĠF ive\nĠres ize\nig id\ner ation\nĠÑ į\nåĬ ł\nĠC atch\nÙ ģ\nĠLe on\nam il\n.B ody\nCl ip\n/ list\n.b r\nEdit Text\nĉ db\n.G ame\n(Build Context\nback end\n.R ed\nface book\n.url s\nm r\nrol led\n---- ---\nĠinter vention\nĠretire ment\nĠK it\nĠP RE\nUpper Case\nĠS ocket\nĠ: -\nĠstudy ing\nĠMet ro\nard ed\nĠconvers ations\nC alled\nĠexam ine\nert ificate\n.g z\n-res ponsive\nĠref und\n_n etwork\nallow ed\nem pt\nĠme als\nC ategories\nĠtravel ing\nĠk g\nĠsh ame\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠexplicit ly\nĠmath ematic\nĠS uite\nĠR GB\n****** /\nĠmix ture\nlear ning\n.t emplate\natt s\nw x\nĉ ctx\n.p roperties\nĠdrink s\nĠE ither\nset Text\n.get Data\n.z ip\nĠreve als\n< table\n.Hash Map\nĠH ur\n) \");Ċ\n.f ramework\nĠST ART\nfeed back\nĠsaf ely\n. icon\nconfig ure\n. lock\n.l ayers\n/> .Ċ\nĠrank ed\n_ impl\nĠHand les\nĠhost ed\nĠup dating\nal bum\né Ŀ\nĠsh ader\nEdit ors\n- round\n[] {\nĠse p\nĠH i\nTE M\nlook up\n.m an\n_IN PUT\nĠthreat ened\n_IM PORT\nĠd rops\nru it\ns id\nbo th\nĠEx cel\nĠj er\nord inary\nÐµÐ ¹\nV IEW\nre ply\nĠ) :Ċ\ncolor s\nver ified\n_T r\n_p arse\nĠcon gress\nP romise\nint s\nĠM other\n.A pi\nĠD uration\nĠfirst Name\ninherit doc\nĠM ars\nĠa pr\nOD Y\nĠvis its\nĠhe aling\nlet ters\n)) );čĊ\nf uture\n.F ramework\nĠk iss\nĠinv olve\nĠsil ent\nad ows\nĠany body\ns ch\nĠsole ly\n- img\nĠprop ri\nĠin struct\nĠlic enses\nĠm eth\nĠcond em\nĠD omain\nĠHarr is\nĠs Ã¥\nCE PT\nB atch\n@ extends\nĠCONTR IBUT\n.Data Frame\n_p acket\nrec ision\nĠfoc using\n. ht\n__ \":Ċ\n: Get\nĠK C\nĠpass age\nSeg ment\n_c enter\n-z A\n_B L\nĠconv in\nĠclass ified\nĠNS Mutable\n_ ap\nt ile\nRect angle\n(n ums\nv ens\nĠUI Button\nĠF eder\nam o\nĠout line\nĠPar ser\nĠâ ī\nĠWork s\n.S chema\nĠeng ines\n_com mon\n_ old\nĠset ContentView\nĠ/// <\nĠB T\nf m\nĠd ivers\n_ weights\nem ark\nĠA CT\nĠpro portion\nover lay\n.dir name\nĠG it\n_REF ERENCE\n< >\nl b\n_r ule\nè´ ¥\nĠPut in\nĠsleep ing\n() :čĊ\nĠpres erve\nĠpar liament\nĠLook ing\nĠpick ing\nĠDis patch\nĠsl ip\në ĵ\nĠL yn\n_sign al\nconfig uration\nĠP itt\nad en\npro cedure\nĠenthus i\nf ight\nĠCons ider\nĠt orn\nConn ected\n.c os\n_group s\nĠTh ink\nĠdel iber\nĠres id\nwork ing\n.column s\nĠCal led\nĠes lint\n> \",\n_D OWN\nh ist\nĠAdv anced\nĠre wards\nact ors\nĠsil ence\nĠmy th\nĠne ur\nĠa uction\n.Get String\nek s\n( project\nĉ msg\nĉ output\nĠcomplaint s\n, S\nĠt bl\nĠ, ĊĊ\nri ors\nah ren\nĠlawy ers\nre dux\n_s ymbol\noff ee\n_RES ULT\n( Name\nUT C\n.current Time\nĠorgan is\n. arg\nĠmin im\nw ick\nĠrece ives\nB alance\nĠspeak s\nĠD ays\nĠBel ow\nt ipo\nP resent\nĠres erv\nh p\nĠr it\n_R IGHT\n-- )\nĠchair man\nD IS\nĠBO OST\nĠexper iments\n__ );Ċ\nĠst amp\nĠf ert\nĠf ond\nT er\nel ve\nure n\n+ i\nend ency\nĠvirt ually\n... \"\nï½ ŀ\n- cent\n_un ique\nĠpr icing\nm ic\nRES H\nĠ:: :\nĠan notation\nĠC ircle\nong odb\nit as\nĠ% (\n( component\nĠÐ¾ Ð±\n( port\n-h our\n. obj\nL BL\nĠj ury\nGB T\nĠsp y\nĠProf essional\nĠ\"\" ;ĊĊ\nĠstri king\nĠdiscrim ination\nĠp ays\nlic t\nent es\nĠthrow ing\nĠPl ugin\n( def\nĠRuntime Exception\nĠM igration\nĠd ic\nb ag\non ia\nĠcor ruption\n( Map\nĠpr z\n.d to\nĠac quire\nState ToProps\nĠlo ving\nÐ¾Ð ¶\n_p attern\nĠemot ions\nĠpublish er\n_b e\nĠcoup les\no j\nĠCh art\nĠt rop\n.t ool\nĠestablish ment\nĠd ol\nĠto wer\nĠl ane\nĠSy dney\nĠfill ing\nclaim ed\nĠdialog ue\nĠcon vention\nbook ing\npare ncy\næ ±\nĠGener ic\n\\ Schema\nĠr anges\n/ ch\nĠpan els\nĠr uled\nçĶ Ł\n.t s\n_s ets\nĠclean up\nPre vious\nĠAn imal\n($ (\nĠA ve\noll ar\n_e val\nĉ Name\n(t ree\nĠ\" ]\nĠdut ies\n=' /\nClick ed\nĠdifferent ly\nĠCl ark\nĠd it\nolog ists\nĠsy nd\nĠs ends\n- known\nk b\nĠMod al\nit ative\nĠr acing\nĠhigh lights\nĠSim on\nĠCapt ain\nä¿ ¡\nĠC B\ncont in\nar an\nĠphys ics\nret ty\net al\n.m d\nax ios\nĠspeak ers\nĠpre p\nĠaward ed\nì§ Ģ\nĠC orn\nĠN ature\nUD IO\nĠpro j\n- pre\n[ u\nFe atures\nĠis Equal\nB inary\ns ig\nĠconf usion\nĠH at\nĠkt Ã³\n.config ure\nM ON\n/ edit\n_A dd\n, true\nĠc li\nError Message\n- loader\nDim ensions\nultip ly\nĠ{ !!\nĠSql Command\nĠsp oken\nĠp ics\nĠto y\n( Key\nĠLo op\nØ ¨\nE ATURE\nin ction\n_set up\nw rapper\nĠt ong\nc ular\nO pt\n.P l\n=\" ,\n(l ength\num n\nĠch rom\nĠse vent\nĠIllegal ArgumentException\nĉ start\nĠbeg un\nCE PTION\ndat aset\nĠF ailed\ncol s\nĠkne e\nim ore\n.sp lice\nsh ell\nig gers\nĠthem es\nĠD J\nĠAss istant\n- $\nMay be\nĠorder ing\nĠInt elligence\nĠMass achusetts\nĠfail ing\nel son\nG reat\n= i\n.re st\nĠinv ite\n-dis able\n.Group Box\nâĢĻ est\nĠtack le\ng v\net ter\nĠ), čĊ\n_r ules\n.w arn\nfunction s\nĠChrist ians\nĠback ed\nĠsl ider\nĠenjoy ing\nn est\nĠh ij\n_m s\n// *\nAn notations\nĠVariable s\n< V\n( server\nĠOr acle\nelement s\nĠorgan isation\n_point er\nĠHe aders\n[ d\nĠdead line\niss a\nĠkn ife\nĠNAS A\nĠHe ight\nĠAs ync\nĠven ue\n.d om\nbour ne\nĠHaw ai\nĠmem o\nict ions\nĠsurve illance\nom i\n/ assets\nĠed u\nÄ Ľ\nĠro ster\nĠh ired\nĠT ok\nĠpl acement\nur ations\nĠset State\nĠMag azine\nĠhor ror\nT ry\nĠl ag\nĠEvery one\nth ur\n)) ;čĊčĊ\n. return\nĠsy mp\nâĸĪ âĸĪ\nĠn ights\nwork er\nĠa le\nennes see\n.st ep\nĠsynchron ized\nour i\nDo es\n. change\nf on\n.set Background\nirc ular\n+ -\nĠC IA\nĠJ ane\nĠSim ilar\n- I\nlevel and\nĠpros pect\n_f ound\nĉc olor\n.D iagnostics\nĠann ounce\nĠassum es\n/ tr\nĠb d\nĠCar bon\nĠanal ys\n.de st\nn ik\nĠL ie\n- index\nDraw able\nĠT AG\nĠtri angle\n_F LOAT\nĉĉ ĠĠĠĠĠ\n.bl ack\nv ue\ncur acy\nĠaffect s\nĠsure ly\nSl ider\nuk i\nc ery\nĠun ter\n.pro file\nord on\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nle ave\nĠsmart phone\ng ie\nĠcons pir\nĠt utorial\nç± »\nĠc ab\nĠSum mary\n* ĊĊ\nÃ¤ h\n\" This\nĠsl ides\n\" </\n.de v\n' <\nĠR ing\nÅĤ a\nĠk otlin\n.d umps\nĠb ass\nì ĭ\nPO INT\nĠ utter\nĠÃ© s\n.f ull\nOL L\nĠcer emony\nsl ot\nĠa ims\nto oltip\n.s core\n- dd\nĠpro x\nRecogn izer\nd ynamic\nÃ¤ nd\n/ std\nD U\nĠNot Implemented\n(\" --\nRA W\nĠeth nic\nann o\nĠch ampionship\n, self\nĠaccept able\nĠS prite\n[ type\nÃ¼ h\nĠV K\n(j Panel\nit r\në ł\naur a\nĠfac ulty\nav ers\nĠRec ords\n.S ecurity\nĠcon straint\n.B l\nU int\nb alance\nĠcomm e\nĠN ik\nSuppress Warnings\nĠO cean\n_ Id\nData Set\nĠinsert ed\n\" ;čĊčĊ\nâĢ ³\nipp et\nĠann iversary\nĠret ired\nor ch\nĠper pet\n\\ Form\nĠinvol vement\n_user name\nale m\n_SER VICE\nĠIndian a\nĠcig aret\nart z\nĠR C\nĠmeasure ments\nç½ ®\nĠaffili ate\nac ional\n- section\n_ controller\nv ard\n_ el\nĠTo y\n< P\nM achine\nÃº mer\nĠY eah\n\" You\nĠm ol\n.C l\ncont rollers\nĠsusp ended\n++ ;ĊĊ\nAT T\nĠpro jection\nP adding\n.m ath\nf actory\nĠgam ma\n() >\nc ycle\nĠB ull\npath s\nĠun p\nĠview DidLoad\n_M odel\nĠassert True\nĠr ated\nDe cl\nvert ed\nĠD at\nb rew\nĠpoint ing\nM s\nĠPoint er\n) '\n_n on\nĠSE C\nĠy eah\ng ency\ninitial ize\nf ly\n[ pos\n, g\nTe le\nĠj oke\nĠcl ause\n.find ById\nen es\n( instance\nÂ £\nĠs lic\n_h ome\nĠ*/ }Ċ\n_p ages\n(s ervice\nR P\nĠAm ong\n.get Current\nãĤ ¹\nĠs lee\n= <?\n_p rop\nfl ush\nĠM M\nB el\nNot es\nĠ*/ ĊĊĊ\nĠr h\nTable s\nĠJ u\nĠ\\ čĊ\nlich en\nĠIns urance\n] ĊĊĊ\nĠco oper\nâĢĶ the\n.m at\nĠf oi\n(a uto\nM argin\nĠres idence\nĠH istor\nĠ~ =\nD i\nĠ' )Ċ\nĠex clude\n.D rop\n' \";Ċ\nĠc oc\n_ upload\nH ide\nĠUn known\nĠnormal ize\n_re t\n.' ĊĊ\n.n odes\n.Data Source\nble ms\nĠgent le\n: $\n' ));ĊĊ\n.Res ources\nâ Ī\nĠT ai\nV ED\nĠG un\nle ans\nĠD oc\n.V oid\nĠAm endment\ness ed\nĠrec ipient\n. Node\nov o\nĠalign Items\nĠUn ity\nĠR ome\nb urn\nĠvolt age\nĠSH A\nĠGO OD\nhelp ers\n/** */\nĠelim inate\nw ap\n_ angle\nĠrefuge es\nĉassert Equals\nĠpro be\n(' ../../\ny our\nĠmer ch\nUB LE\nĉ response\n_DE F\nĠen vironments\nous ing\nĠrestrict ed\nĠCONTRIBUT ORS\nĠcompan ion\náº £\np ow\nurt le\nb ie\n.Per form\n= n\nred is\nĠdiv ide\nĠcollect ive\nD iff\nD ynamic\nis Selected\nast ype\nĠL ot\nĠSt atement\nicip ant\nak h\nĠserial izer\n_C FG\nav al\nĠview ers\nĠF O\nO cc\nĠrob ust\nĠM it\n_ AND\nTrans ition\nun ate\nĠpr ide\nĠdram atic\nĠP ages\n_t uple\nĠcop ied\nm n\nĠ ought\nĠequal ity\n_h as\n_W R\nem i\nĠsur ge\nil lo\n() }\nĠper f\nul k\nĠinvest ments\nĠgener ations\nĠres ort\nĠtrust ed\n_f req\nĠform a\nATION S\nĠH u\nĠGr ad\n_c pu\nĠ\" ,Ċ\nres se\n( **\nĠhere by\nĠl ake\n_ST ACK\nĠB ureau\nĠsustain able\nĠP E\nĠde i\nĠAn swer\nPl us\n/ web\nĠst er\nĠmount ed\n_c lear\nf ono\nian ces\n_f ind\nĠconf used\n_b in\nDE CL\nĠinstant ly\nU IT\n_D O\nSet up\nke e\n_print f\n_st mt\nĠSte am\npro f\nl v\nĠsol ving\nl ator\not ypes\nAnd roid\n_ escape\nLe ave\n.get Time\nif s\nĠc ov\nĠClass ic\n-d ark\nDispatch er\n- gray\nĠPalestin ian\n.de ep\nĠIn ject\nĠref lection\nĠhyp o\ncon structor\n.app lication\nyst er\nâ ķ\ns chool\nĠC ow\nĠfoot age\n- ins\nĠ/** <\nat om\nĠprof its\nĠbook ing\n_th reshold\nĠL iver\nĠcitiz en\nb x\nĠSt orm\nĠCor p\nĠw ider\n\")) {Ċ\n_A CTION\ni ors\nais es\n: none\nĠc ited\n\" fmt\nA ug\ncom b\nĠwh ites\nĠs ess\n^ ^\nigh th\nĠt ang\n_C AP\nĠinter actions\nĠg ard\nĠpr ize\naf ka\nT ri\n\\E loquent\nĠD ynamic\nçĲ Ĩ\ng p\nĠreal m\nĠN i\nĠEd ward\nĠident ification\nĠphys ically\næľ ¬\nĠpick s\n-f riendly\n< i\nif ice\n_A P\nLog ged\n} \".\n/ utils\nĠ ....\nENT IAL\n( Action\n'] );ĊĊ\nĠprotest s\nol ine\n_RE TURN\nĠpop ulations\nĠR ain\nd up\nor ial\nĠAuthor ity\n_ex pr\n. us\nĠcor rupt\nĉ import\n< char\nĠLE FT\nĠcabin et\nĠneighb our\nĠSql Parameter\natter ed\nem ia\nĠreview ed\nĠH ello\nblock s\n( process\nĠobserv ation\nr ating\n.g lobal\nĠpre ference\n.pre pare\nĠdo zens\nWork er\nĠcalc ulation\nĠT ower\nair y\nĠIS O\nĠhuman ity\n.as InstanceOf\nĠd ys\nĠp ier\nig ue\nĠassoci ate\nĠint im\nnot ify\n({ },\nĠRep resent\nph et\nse udo\nëĭ Īëĭ¤\n.P osition\nĠclos ure\n( class\nĉ time\nĠOr ange\n_ ops\nĠpop up\nĠIm pro\n_se cret\nĠE u\n.set Layout\nul ly\nĠscre w\nĠS ized\nĠCOM P\nĠnot ifications\nTrans fer\nE mitter\n( old\nlet ic\nĠ- ĊĊ\nĠpan ic\nĠL CD\nr ules\nĠaff airs\nĠF ill\n_IR Q\natt achment\nĠv om\n< button\nĠtext s\nĠactiv ated\n. access\n( reader\nT em\nĠcor on\nro ph\nDM IN\nĠemerg ed\nĠinfl ater\nĠIndepend ent\nor ious\nĠDel hi\nĠg lyphicon\nĠCar l\nS i\nĠexperiment al\n.b ar\nI AN\nĠsql ite\ncc iÃ³n\n_B ACK\n, name\nh ort\nĠt ens\nê ³\nus ive\nĠgenu ine\nĠbu ck\n/ div\n. room\n_NE W\nest ado\nĠAr k\noc ols\n.g enerate\nt ouch\nf ixed\nĠ' (\nĠref erring\nĠoverwhel ming\n( let\nĠf ue\n_EN V\nw oman\nF igure\nan imate\nĠM ort\nĠlong est\ncol n\nT M\n: _\nri el\n, N\nĠR AM\nĠjustify Content\nĠact ively\n/ public\nĠë °\nG iven\nOT AL\nå¤± è´¥\nSe quential\nĠsup plement\n. ab\nĠc ategor\n} },Ċ\nah an\n' un\nos ity\nĠaccompl ish\nUtil ities\n.view s\n.c n\nce il\nĠC BD\nĠR F\nPE G\nĠG ift\nAY S\nĠW IN\npan ied\nĠ ÅŁ\nĠob server\nĠsm ell\nĠ{ :\nLink ed\n> [Ċ\nol er\nĠlib ert\nĠ` Ċ\nĠw enn\nl ated\nĠimm une\n( Node\nĠPro blem\nĠA bs\nlog s\nĠ ../\nĠA DC\nĠ}} \">Ċ\n> ');Ċ\n= b\nĠW ind\nlah oma\nĠalloc ate\nor ian\nĠpres cription\n- quality\nĠMay or\nin ely\nend foreach\nĠCom plex\nk om\nT Y\n] ].\n. Style\n_m any\n',' $\nĠbar rier\nĠF etch\nĠMar vel\nĠres ist\nÐ¾Ð³ Ð¾\nb idden\nĠRun nable\n: false\nĠbuild s\nĠSt age\nĠd ub\nemp o\n.s ite\n;ĊĊ ĊĊ\nĠDen ver\nĠre vel\nĠtrigger ed\nĠd ice\n_f ail\nĠg c\nĉ X\nĠTh rowable\n.r outer\nĠRev olution\nÑĢ Ð°\n_N ON\nŁ ¥\nĠel der\nĠab road\nĠÐ µ\nĠAd ult\nbl r\ng lyphicon\nĠprom oting\nĠ iz\nĠS olid\n_lo ader\near ly\n.en abled\n- edit\nĠU L\n_ play\nĠInt errupt\nĠadvant ages\nuc le\nĠmechan ical\n.table LayoutPanel\nĠWork ing\nĠan onymous\nR ating\nig ious\n_ph one\n.addAction Listener\nĠfr an\nund en\nĠ*) &\n_ bool\nul ative\nĠcon e\nĠM ult\nĠm Ã¶\nĠFor ward\n] ):Ċ\nĠconvin ced\nact ed\nãģ ĵ\nĠConfig ure\nĠce iling\nD er\nĠpass engers\nGroup s\nĠsoc cer\n/ W\navi ors\nsw ith\nĠZ one\n. Options\nĠM om\nied er\nArray s\nĠtreat ments\nĠprotect ing\nf ac\nĠpick le\nButton Item\nĠblock ing\nstr ar\nÃ ²\nĠEx port\nĠth rew\nott a\nĠB ASE\n.w s\n.LE ADING\norder By\n_d elay\nĠP u\n.d ll\nĠCh oose\nPol ice\nĠBE GIN\nbox es\nĠdiam ond\n, l\nĠ ĉĉĉ\nĠcur ious\nt v\nĠerot ische\nack ages\nĉ Set\nT ick\n.b order\nstatic method\nĠch er\nin voice\nĠcr u\nĠdef ect\n_m etadata\nre lation\nik an\n[ N\n(Q t\n( Base\næģ ¯\nbe at\nĠEm pty\nĉ o\n_sh ift\nĠreg ret\nTh ose\nC ent\nĠPort ug\nĠIs lands\nĠT IME\nMan agement\n-s p\nÃª me\nĠnot ion\nun ifu\nP K\nè¡ Į\nĠCUR LOPT\n\\\" \\\nU V\nç º\nd ra\nc ou\n= `\nĠD estroy\nr p\n.c ancel\nG G\nr untime\nĠV ue\nĠprogress ive\n/s ervices\nĠrun ner\n_FR AME\n.ToolStrip MenuItem\nĠ' ,'\nd elay\n= utf\nĠscreen ing\nĠpull ing\nom as\nĠan th\n- new\n/ local\nĠi Pad\nĠt witter\nĠd ying\nĠhe aven\nĠU Int\nĠSen ator\nĠpres um\nĠWalk er\nĠover come\nete ction\nĠemb arrass\nCh ina\nIn clude\nRO LL\nĠdata Type\nD avid\nà¸ £\nlo p\n-m onth\nĠsc ar\nĠS afe\nĠ ****************************************************************\nĠaccess ories\nĠr amp\n_U SE\nĠcontr ad\n)) ]Ċ\nĠpre st\nĠH R\nĠR ap\nĠus ize\nĠcap ability\nĠc ort\n- next\nĠbur den\n_read er\nĠ@ @\nreg ular\nĠK a\nM AN\nĠa str\nĠ' ')Ċ\nĠf ed\nĠpars ing\nĠY ears\nĠbro ker\n\": {\"\nĠa kt\nIn ventory\nabe led\nĠarg parse\n****** *Ċ\nvers ation\nĠc ord\nĠT i\nĠhope fully\nĠa h\nver b\nĠst olen\n. Entry\nĠexpect ing\nO rientation\nĠpower ed\nĠp ersist\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n'] );\n')) ,Ċ\nĠC ash\nĉ item\ngr ades\nrop ol\nb asic\nĠ\" );čĊ\nĠaw ards\n(r ange\n- all\nĠIB Outlet\nĠInd eed\n---------------------------------------------------------------- ------------\nĠstom ach\nĠfl ower\nĠs ew\n_t imes\nav is\nQ String\nĠR outes\n_pro t\nĠcom edy\nĠlog out\nĠwood en\nĠpost er\np iece\n.J oin\nĠP ok\ncel ona\nmut ex\n;čĊ čĊčĊ\nĠstri kes\nLoad ed\n) arg\nes a\nUn ited\nE p\nPE LL\nĠAtl antic\nul let\napp le\nĠsett led\na con\nĠprint er\nĠG C\nå® ļ\nĠrender ed\n, âĢĻ\nhe it\ns ocial\n. ge\nĠR ick\nĠUt ah\ng ot\non ical\nĠSc roll\nĠSc iences\nĠj ug\nĠam pl\nent i\nLE FT\nĠt abs\nĠenorm ous\n.get Key\nloc ate\n. EX\n.st orage\n.W e\nĠto ast\nĠAdd itionally\nĠN OW\n_ UPDATE\nĠtrans ferred\nth a\n.D isplay\n_ ui\nID EO\nĠmeaning ful\nĠMos cow\n, this\nĠVict oria\næĶ ¹\nĠÐ Ł\n.st ack\nĠB arn\npared Statement\n: string\nĠb ij\nĠST ATE\nĠemploy ers\nĉ input\n( |\nĠle x\nin voke\nĉ num\n++ ,\nat ial\nors es\nĠfor k\n_t xt\nĠAnton io\nĠ( <\naver se\nĠdev ast\nãĢ Ģ\n.D ec\nĠG ard\n/ ui\n. %\ntr i\nĠrol led\nValue Pair\nitt en\nĠTh er\nĠv rou\nĠFl ow\nĠFin ance\nĠCom b\nH C\n.set Visible\nis l\nĠp k\nĠup set\n( raw\nĠV ice\ne atures\nĠL ang\nLook ing\nĠA ST\nĠtri ps\nĠJust in\nb rowser\n=\" '.$\n. vertices\n- co\n}/ {\nĠ? ,\nĠD omin\nĠBel g\n\" <\nĠsup pose\nadd y\nĠwalk s\nERR U\n_f ilters\nPre ferred\nsc ene\nÐµ Ñģ\nĠAff airs\nĠ\"# {\nĠon Submit\nĠstock s\n/ view\ng ree\n- get\nh it\nJ o\n.get C\nInitial ized\nÑĤ Ð¸\nc uts\n( Type\nĠAg reement\nĠViet nam\nĠ/* !\nĠp izza\n- view\n_ em\nĠl hs\nĠm uy\nĠId ent\nĠF riends\nĠab und\n_A D\n.t imestamp\n- '\nĠd uplicate\nĠhun ting\nĠregul atory\nia o\nam ous\nĠEnt ertainment\n[ A\niat ric\n_CL IENT\nĠK ids\n/p kg\nB reak\n)) );ĊĊ\nĠSh ape\nĠrel ating\nInt errupt\nable Opacity\nemb re\nĠmyst ery\nĠjournal ists\nrit able\n.L ink\nĠstop ping\nCRE T\n.D B\nĠpopular ity\nĠg ew\nĠim pr\nset Value\nFL AG\nĉm ax\nĠb ake\nw y\nĠEcon omic\nĠen contr\nĠf name\n/ de\nR ank\nĠbug s\n.s m\nĠmed ian\nD OWN\nĠS ure\nAt Index\nĠD ick\nĠ( __\n.d elta\nF r\nĠsuggest ing\nĠRec yclerView\n, e\nST ART\n/************************************************************************ ****\nxf ord\nĠrece ipt\nCL AIM\nread only\nĠeng aging\nC a\nas ma\nĠens uring\nEng lish\nĠV ancouver\nhy th\nĠpurch asing\nĠP I\n. word\n(s p\n.h ome\n: def\nĠg ig\nĠV e\nfor um\nĠM itch\nB ay\n_F L\nĠs oll\n_column s\nĠminor ity\nb ird\nĠhand ed\nSS L\nST AT\nĠnerv ous\nĥ ½\nĠfile Path\nCRE ATE\nA w\nĠp ens\nse ed\nĠCom pute\nol k\nĠAs set\nre ach\n'), čĊ\nn avigation\nL F\n/ util\nĠP ub\nĠâ Ķ\nc ion\n## Ċ\nII I\nTag Name\nĠam id\nper mission\nif iable\nxFFFF FFFF\nÐ½ Ð¸\n.B uffer\n_ irq\nd ark\nĠret val\n.f ire\nprodu ction\n.list en\nĠWe ather\nĠbuy ers\n. ne\ner p\nĠP ent\nĠw elfare\nĠpage Size\nĠSt adium\nert a\nĠle v\namp a\nP ager\nĠcharg ing\nĠNet flix\n| null\n_r andom\n.x path\nĠst ere\nĠIS IS\npons es\n( loc\ney ond\nĠOff icial\nĠMary land\nData Type\n_p ar\n{ },\nĠEn joy\n_SH IFT\nĠA wards\n_ENT RY\nĠseem ingly\nentic ate\nĠheart s\n_ ;ĊĊ\nĠH IV\nĠindiv id\nĠFl ag\n_ ctrl\nĠC allback\n, z\nĠG PU\nĉ obj\nĠPh oenix\nĠB US\nĠrub ber\n_A UTH\nĠSol utions\n( location\nVariable s\n.set Enabled\n_h igh\nW O\nG esture\nĠre try\nĠobject ForKey\nallow een\nĠm os\nĠC ele\nĠik ke\n(c ell\nĠM ODE\nren a\nĠdescri bing\nĠph i\nĠr d\nĠdes erve\nĠwhe els\nå¸ Ĥ\nĠcrit ics\nN amespace\nĠF ra\nĠ ĊĊĊĊ\nĠall a\nĠrequ iring\næľ Ł\nut ation\nĠdelay ed\nĠadministr ative\nĠb ay\n.h idden\nT ex\nĠbound aries\nĠ] );ĊĊ\nĠFollow ing\n~ /\nF i\n_con v\n_T ITLE\nĠdes de\nICollection View\nAli as\nĠb ite\npat ient\n_COMM AND\nCom pleted\nĉ elif\n( <\nB usiness\nĠP ool\nĠpurs ue\nĠB an\n_st eps\n_DE CL\num ble\nĠcom bo\nĠL ayer\n.x r\nĠd up\n-------- -\nĠmod ifier\nro b\nre z\nĠath letes\nUs ed\nw ear\nĠlegit imate\nĠ\" ĊĊ\nĠh v\nSt d\nĠH old\nĠsurv iv\nĠAll iance\nĠEar ly\nBeh avior\n(f ont\n/lib s\nĠrect angle\nĠs inger\nĠam p\nEqual To\nĠ\" .\"\nĠgirl friend\nå ±\nline ar\nobs erv\nĠpi Ã¹\nĠcomple ment\nWith Value\n(p assword\nt ake\nBl ank\nĠCom par\n' \",\n_p olicy\nm ongoose\n_FA ILED\n.re port\nR atio\n.Perform Layout\nus able\nm ers\n_re nder\nPE ED\nĠles b\nĉ E\n_t ool\nĠl adies\nÐ¾ Ñģ\n)) ))Ċ\n;; ;;\n.d ot\nĠn est\npe ak\nuk kit\nec a\n_S W\nĠ& (\nĠOk lahoma\nĠbank ing\nĠN intendo\nĠreprodu ce\n_element s\n_m ac\npro xy\nĠremark able\n}/ ${\nĠout s\n.has Next\nM ODE\nĠan ime\n.con n\nUn ique\nD om\nĠimportant ly\nitt y\nĠju ice\nT w\nĠPart ners\nĠattack ing\nĠport able\nam iento\n.P ictureBox\n.g en\nĠopt imal\nĠre cre\nĠjournal ist\nĠEx tract\nĠMore over\nĠmargin Top\n.A p\nĠf iring\nNa N\nĉ template\nÐ°Ð ´\n. En\nĠdef ence\nĠT el\nil en\nj an\n= data\nĠU rl\nĠRe uters\n(t otal\nĠFif th\nĠess ays\nĠinterpret ation\nĠchar ity\nĠR ules\nĠsub section\nst yled\naz er\nl ags\nL IST\nĠupload ed\nĠtr ash\nĠreg istr\nĠsell er\n>' ;čĊ\nĠstart Time\nç Ļ\ns y\n(Http ServletRequest\nĠtr ap\nG C\nĠembed ded\nĠsurround ed\nim its\nT X\nyl inder\nĠF al\nĠsent ences\nĠJ a\nIF ICATION\nwe apon\nov ation\nĠco at\nĠinter pol\nĠl ips\nĠK y\nĠv ectors\n_ am\nĠint ake\n.w orld\nĠin box\nĠM AC\n_ ab\n(name of\nĠent ert\nĠgather ing\nĠS IM\n++ .\nny a\n' }}\nĠUP DATE\nĠp ac\n( html\nĠS ant\ni ating\nĠIde as\nĠspr ay\nĠH art\nĠver ification\nades h\n/ modules\nĠM ind\nĠSized Box\nĠsh elter\nĠher oes\natt y\nĠcert ified\ns j\nĠÃª tre\nÅĤ o\nĠpublish ing\nĠMal ays\n.get User\nĠPro vider\nĠLinked List\nĠB or\nRO UND\nd id\nt ain\np ire\nĠJ enn\nt el\nand e\n_f ront\nĠMc G\nTest Method\nà¸ Ń\nĠoccasion ally\nĠW ales\nĠexerc ises\nĠÐ Ĵ\n- plus\nĠvalid ator\nĠpr ayer\nL ATED\n_ author\nĠlab our\n++ Ċ\n-e quiv\nĠG PL\nĠface book\ns imple\ng ly\nProcess or\nip y\nĠ* >\nĠcle ared\nĠP ush\nĠpen is\nStruct ure\nli j\nĠM organ\nĠhand ful\n\" .Ċ\n| \\\nĠ ********************************\nĠA qu\n_ IC\n.load s\nĠm eter\nĠMar ine\n:: {\nĠT S\nĠArray s\n.T itle\nGR AM\nter min\nĠco inc\nEl se\n_st ates\n-r un\nm embers\nast ro\nĠon Press\nĠbe ings\nĠabandon ed\nĠtax p\nown ers\n.m ode\nĠdiagn osis\nĠ_ Ċ\nĠK night\nĉ A\nĠob serve\n), '\n! \")Ċ\nĠPar a\nĠvari ation\n( False\nĠAnt i\nĠg ri\nĠhome less\n? v\nĠbe z\n.S erver\nre lease\nĠP atri\nĠchar s\nĠrank ing\nactiv ation\nĠw ides\nq r\n.S ql\nac ular\nĠB ot\n_s ync\nĠhapp iness\nĠvolunte ers\nĠs its\n/ <\n[ e\n(file Name\nĠcap ac\nĠMar ia\nf ather\nĠgr am\n* i\nĠcas o\n_d raw\nĠR aw\nĠIter ator\nĠP adding\nP D\nBO X\nĠS PECIAL\nĠfe cha\nĠv ide\nĠLe ader\nä» ¥\n$ (\".\nĠdiam eter\nĠm ild\nĠrock s\napp ings\nd irectory\n.fl ush\nĠJ ess\nUN IT\nĠP ear\nĠmand atory\nS ur\nq t\nĠstream s\nĠco operation\nĠS ac\nĠche aper\nĉ ch\nan imation\nf are\n( height\n( True\nN Y\nĠw rest\nĠpoll s\nĠencounter ed\nĠMarket able\n_P ASSWORD\n_SE LECT\nĠArab ia\n_c lock\nĠv oy\nĠÐ¸ Ð·\nĠst ir\nis ible\n-e ffect\n.c reated\nĠto ys\nĠTrad able\nĠr ust\nĠstr cpy\n_t imestamp\nĠtalent ed\n, null\nĠJ obs\nĠPort land\nĠweak ness\nTh row\nĠAng el\nä¿ ®\nĠun cert\nï¼ī Ċ\nĠìĿ ´\nWh ich\nĠ[- ]:\nS omething\nĠconv icted\nk le\ned ium\nĠbranch es\nĠb ases\nç ®\nĠcomplex ity\nĠF ig\n. reshape\n$ db\n_CON ST\nĠT es\n.r untime\nĠden y\nĠB SD\nĠk r\nh att\nĠSt atic\nĠunivers ities\nRe place\nĠdro ve\nĠad oles\n_pl ugin\nĠL GBT\nĠt ex\ndu ction\nED I\nĠT ed\n_ URI\nĠre ception\nart en\n.S ingle\nr ice\nsc ious\n_b g\nĠw ages\nĠS ervlet\nUIL ayout\nĠform atted\n.M od\n< class\nis en\nĠrepresent atives\n\"] =\nĠport al\nĠHun ter\nĠh iring\n__ )Ċ\nric ulum\nu o\nli est\nĠt ears\nL at\nĠliter al\n.In sert\nĠc urs\nĠCom put\nĠterror ism\nĠswe ep\nĠ[] čĊ\nĠpass enger\nĠeast ern\nĠtwe ets\nĠoper ated\nw nd\nĠS yn\n.t ools\nĠW M\nul ates\nĠbacter ia\n( bytes\n.set Data\nĠvis ibility\n// ================================================================\nel m\nĠgener ating\nĠm v\nĠk h\nj en\n/ search\nĠaccount ing\nse gment\nact ic\n. ip\nĠdeploy ment\nĠfoot er\n> ',Ċ\nĠexpand ing\nĠHam ilton\nĠCon trib\n.T ables\nAct iv\nH H\nocom merce\n_ ;\nĠamong st\now ing\nĠC old\nAP H\nĠpsych ological\n_t ensor\nĠpack aging\nĠSw eden\nĠp are\nĠag gregate\nĠmoder ate\n_h and\nĠdesign ated\nĠdr um\nĠget User\nĠC reek\n_s cope\nĠTrans fer\nĠM arg\nĠfight ers\nW nd\nĠS el\nĠLa unch\nĠemerg ing\nif rame\nĠAdd itional\nĠf ears\nĠsat ellite\n_ :\nĠdis posing\nGet Value\nHttp Post\nAT IVE\nul ary\nView s\nĠatt ending\nĠT ennessee\nĠM ission\nĠmedic ation\nĠW y\nĠAn na\nØ ¹\nĠVert ex\n.t ypes\nO rgan\n.DataGridView TextBoxColumn\nĠR S\nĠtemp o\n( App\nVersion UID\n.p oint\nĠD utch\nH ours\nL U\nĠqu oted\n.b uilder\nĠPer fect\nĠAl ways\n_t wo\nĠexclus ively\nĠC ra\nific ar\nĠA WS\ning ham\ncom plex\nk ernel\nĠgr avity\nĠw i\nĠover view\nĠW ant\nĠW P\n( sh\n. rotation\nSt ates\nĠTe en\n_com ponents\nì Īĺ\nRe ceived\nĠly rics\nrit es\nĉĉĉĉĉ Ġ\n-A merican\n[ num\n/ python\nĠU ART\nĠapp le\nĠJon athan\nĠmoment um\nà¸ ±\nĤ ¹\nĠm ich\nand ra\nĠbi ological\nĠM ens\nĠ% %\nelse a\nĠMex ican\n.rand int\nĠt ale\nĠValid ate\nĠdefe ated\n.ht m\nĠcop per\n= /\ncos ystem\nĠr ip\ndec imal\n.V ISIBLE\nĠT a\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉ\nĠdownload ed\nen vironment\nĠnom ine\nbuild ing\nĠSp ot\nipher al\nĠal to\nqu et\nĠF T\n/ get\n/m aster\nW IN\nåħ ĥ\nW est\narg c\nĠprodu cers\nĠM uch\n_st orage\ncred it\nCON T\nĠv et\nĠvo ices\n(' ',\nĠinstr uments\nĠM SG\nes se\nre pository\nom ics\nĠdeal er\nSt ill\nĠb anner\nasc ii\nĠrem arks\n[ js\nĠshort er\ng ulp\nĠmyst er\nĠk un\nĠB ird\nĠti ene\nn ut\nĠU m\nĠw ise\nY eah\nINE SS\n_b egin\n- heading\nC ourse\nĠ čĊčĊ\nomb ie\ngrad ed\nĠG PS\nĠ Å¼e\nF it\nc aption\nÃ¶ n\n/ image\nl ia\n(m od\nĠle ak\nen za\n/ H\nĠH appy\nD ist\nn x\nĠGovern or\n(l ast\nte acher\nĠS ent\ns upport\nject ory\nĠ Ùħ\nReg istration\nĠGr ay\n, false\nĠadjust ed\n( settings\n< R\nĠM age\nĠpl aint\n_ )Ċ\nĉ it\nomet ric\n. bootstrap\nĠcar ries\nI p\nĠ! $\nĠswim ming\nĠMar io\nĠQuest ions\nP ACE\næĸ ¹\ne or\n}} \"\nĠo ven\nĠK on\nĠwis dom\nĠac quisition\ness ment\nag ine\nĠexpress ions\nSequential Group\nF ront\nul pt\naw k\n'] )ĊĊ\n_ AR\nĠanal og\nul in\n_PR INT\nĠL G\nĠb lob\nĠFurther more\n_com ponent\nĠC ole\nL AN\nSCRI PTION\nĠl ap\nicens ing\n_TIME OUT\nĠF ro\nĠli ability\nĠcom posed\n.create SequentialGroup\n_p erson\nĠbe am\nĉ ĠĠĠĠĠĠĠĠ\nĠNot Found\n. 'Ċ\nÃŃ s\n.Text View\nP DF\nĠk ar\n__ ('\nĠ\" :\"\n_m essages\nĠhar vest\n.h istory\n> 'Ċ\n-f old\næ Ĭ\nĠBet ter\nĠ\"\\ <\nsp acing\nĠfurn ished\nos er\n] }Ċ\nĠ$ \"\np ull\n.P ost\n( ip\nĹ ı\n.f ront\nnt e\nĠF M\ng uid\nĠnegot iations\nagon al\nĠtrem end\nunge on\nAd v\ncar ousel\nÃŁ e\n_DE SC\nĠham mer\náº Ń\nĠĠĠĠĠĠĠĠ ĊĊ\n-c ore\n-s ervice\nĠcorn ers\nĠS F\np red\n> A\nĠJ Label\nĠrom antic\nĠtestim ony\nos c\nĠGener ation\nas ures\n_int ernal\nĠprint s\nĠ] )Ċ\nĠC leveland\nre po\nD isc\nĠ\" >Ċ\nï¿½ï¿½ ï¿½ï¿½\nĠne arest\n_t b\n( require\nEO F\n- child\nĠbu dd\n.Xtra Editors\nalt ies\n\\\": \\\"\nW ords\nĠloc ally\nĠpurch ases\nDraw er\nex tract\nĠexec ut\n} '.\nuser data\nĠfocus es\n-min ute\nĠP ublish\nog o\nĠmount ains\nB ot\n} >{\nĠt ension\nro d\nm esh\nĠtransform ed\n, R\n() }Ċ\n.l ong\nĠg orgeous\nĠS chedule\nĠol dest\nĠsub process\n( IN\ny ect\nĠCo oper\narn ess\nĠMon itor\n.p art\nĠN BC\nĠc otton\nĠh ol\nĠrg ba\nĠB io\nCont inue\nP od\nĠparticip ating\nclus ions\n(By Val\nÃ ¬\nĠH OW\n_set opt\nĠaccompany ing\nat on\nĠ/ \\\nĠAuth entication\ni Ã©n\nĠBar ack\n/* .\nĠe ager\nĠC ancel\n< lemma\nep h\nĉ window\nĠinc idents\n), (\n.D es\nib e\nĠFunction s\nĠhosp itals\nĠo xygen\nroot Scope\nĠd rew\nĉ request\nnot ice\nak u\nam ents\nf ar\nĠprec ise\n_w rapper\nĠlisten ers\nA Z\n.b ounds\nĠA verage\nfield set\n_ axis\nĠexam ination\n' .Ċ\nmon s\n++) {čĊ\nĠForm s\níķ ľ\nCpp Method\n_tr ace\nĠengine er\nĠFl at\nĠrev ision\nĠhe ating\n/ profile\n.r u\np riority\nĠin fer\n_ST REAM\nĠ* )(\n> $\nOLE AN\nOK IE\nIB ILITY\nU AGE\nĠSur vey\nĠres ign\nw ing\nĠsecre ts\nĠch ips\nJSON Object\nDes ktop\n_SY MBOL\n(res ource\nĠ</ >Ċ\nĠnew est\nul i\nĠdes ert\nĠd ip\nĠP ow\nĠequ ation\nĠposs ibilities\nĠF ed\nos ph\nĠ[ %\nĠb ubble\nether lands\nĠc ement\n. auto\n_ AN\nâĢĻ .\nse lection\nĠB ond\nD en\n- O\n.get Type\n.W indow\np res\nĠsw inger\n\" })Ċ\nĠp ip\nĠm ice\nĠcomp ound\n- plugin\nik o\nĠcent uries\nic ular\n-in line\nĉ key\n> \\<\nEN SION\nĠ[ čĊ\nĠprecis ely\nĠÃ©t Ã©\nĠP ast\nĠCam bridge\n-f ull\nĠanaly ze\nĠSte ven\nĠn em\nd ue\nore n\nĠmus cles\nij ing\n/ -\nĠKenn edy\nR M\noss ible\nĠact ress\nĠd olor\nå½ ķ\nNe ed\n.t oggle\nĠR ace\nw ers\n.m aterial\nĠD ue\nĠP el\n# print\nĠindepend ence\nex us\nSh adow\nĠenc oder\n( level\nĠSw ift\n.d oc\n_se lection\nĠserial VersionUID\nLabel s\nĠperform ances\n.T ag\nĠN HL\niz en\n/ UIKit\n_CONT ROL\nĠearn ings\nĠAl t\n_H ANDLE\nC tx\nĠpers u\nĠtr an\nç ¨\n_CH ANNEL\nĠsatisf action\nĠG P\nio x\nm itt\nland o\nĠp ig\ninal s\nÃª ncia\nS urface\nĠU UID\nĠbenef icial\nĠsequ ences\nĉmem set\nĠmag ical\nÂ «\nĠw orn\nAS C\npop up\nCOM P\n_b efore\nen ess\nU i\nL es\n.re quire\n.Serial izable\nadd Gap\nĠauthor ization\n.py plot\nurr ay\nlat itude\nfr ames\naj s\nĠcomp ass\nĠobserv ations\n_s up\n.en viron\nĠtri ple\nĠRub y\nĠdr ain\n_F ILTER\nS an\nUM P\nNull Exception\nĠG ab\now e\nĠTurk ish\n_se quence\nĠGr ant\nuel a\nĠw o\nĠc ube\ni q\nĠdis orders\nĠextra ordinary\nĠc trl\nĠSe q\nent r\nĠsan ctions\nuts ch\nRe ports\nĠin herit\nPer iod\nĠphot ography\nĠF ramework\nĠspecial ist\nĠ? ĊĊ\n_ selected\n.P layer\nĠal location\n( account\nĠstruct ural\nv able\n- offset\n.App CompatActivity\nÐ°Ð ¼\n.Add WithValue\nĠicon s\nĠshut down\n_l ow\nĠCom pare\nĠC e\n= head\nl am\n.p redict\n_DE C\nĠS leep\nĠGr atis\nĠsuggest ion\nĠD EL\nca ff\nav irus\nNo thing\nŀ ĭ\nĠwides pread\nĠmechan isms\nĠtext Align\nocc up\nĠR ail\n: NS\nĠf iber\nĠm k\nĠv intage\n-l ong\n.re duce\n. Entities\n( record\nĠple asant\nFR ING\n.C ells\nOT T\nĉelse if\n_con firm\nĠView Group\ns ym\nĠpr ay\nĠsus pected\nCont ains\nĠb orders\nĠcomponent Did\nASS ERT\nĠinf inite\n- order\nĠh ello\nĠGr ade\n.currentTime Millis\napol is\nz h\nĉ Object\n: \\\\\nH O\nval uation\nĠvoc ab\nĠcou pon\natab ases\n.Get Type\nL earn\n] =\"\nĠG ary\not ive\nĠas h\nĠb ib\nXX XX\nĠbal anced\nVAL UE\nĠN at\n_A d\n< E\nåĮ º\nĠMethod Info\nL IB\nĠconsider able\nĠInd ustry\ntest s\n.set Title\nĠBl uetooth\nĠm apped\nĠBru ce\nĠMain Window\nĉ status\nĠr az\nĠM and\nĠclass ification\nPer missions\nĠ---------------------------------------------------------------- ------------\nĠcontain ers\n: set\n_x ml\nĠwh ilst\nTh rough\nĠval ign\nĠworld s\nC ORD\nED IA\nÑĢ Ð¾Ð²\nĠsp are\nĠH ad\nĠDE F\n(p tr\nĠwarm ing\nà¤ ¾\nĠcons ensus\nag ne\nCT L\nĠì ķ\n.M ain\nweb Element\nĠp ist\nFl ash\nApp end\n.tw img\nT ap\nĠveget ables\nal g\n.s ample\nĠcoach ing\n( ind\nCell Value\nCheck Box\nĠH ell\nRO OT\nĠst adium\nĠinvestig ating\n) %\nst ed\nĠW riting\nĠê ²\nĠun o\nĠ{{ --\nĠco ords\nĠun ser\norgan ization\nĠCr ime\nĠDemocr at\nĠv in\n/ file\n- api\nĠA y\nĠfund ed\nĠBre xit\nĠG h\nent ina\nc ases\nĠd ash\nĠ!! }Ċ\nH I\nOff ice\nĠcapt ain\nĠwor ship\n\\ C\nĠglo be\n_ board\nĠbab ies\nĠconsec utive\nĠenh anced\nere um\nĠAd vis\nĠgr ain\nĠc raw\nancell ationToken\n. alpha\n_W ITH\nĠO tt\nĠC ool\n.b atch\nĠver ified\n(c allback\nĠreg ards\nĠInt Ptr\nouch er\nĠk in\nĠtou ched\nit Ãł\nath on\nĠadj acent\nĠaccom panied\nLE AR\nĠim plies\nĠh ill\nĠBalt imore\n=\" -\nFin ally\nS am\nic opt\nĠs od\nĠm aj\nĠSh ipping\nĠget All\nĠcoach es\nĠdon ations\nil ot\nĠT ar\nc err\nĠbad ge\nĠmark ers\nĠR and\nais ed\niss ance\nĠexpl oring\nuc ed\nĠIndones ia\nĠbene ath\nĠmagn etic\nĠm useum\nmatch Condition\nĠdis rupt\nĠrem ind\nĠT M\nĠ/ ><\nĠf ool\nĠes k\n.N ull\nĠD ies\n_OUT PUT\n_TYP ED\nĠpaint ed\nĠsoph istic\nĠB ear\n* n\n_P ACK\nĠdeliver ing\nĠC OUNT\nåį ķ\nĠj eg\n-c ar\nf name\nĠr anging\nĠN eg\n/ ******/\nĠCH AR\nĠul tra\nGr ad\n= t\nĠjud ges\nĠD ise\nann ers\nĠsc al\n_c al\nĠCON NECTION\n_ embed\n(f n\nĠC raft\nĠP as\n\") ->\n.con vert\n.res ource\nĠST ATUS\nÃ´ ng\nĠT it\nĠclass room\nĠArch itect\nĠK ings\nĠstead y\n/* !Ċ\nĠG ene\n) \";Ċ\nic ia\nst an\nĠCon struction\num per\nw c\nĠC BS\ning ing\n-p arty\n(d river\nM ARK\nĠn ested\new ard\nĠdepend ency\nĠm ales\nĠO NE\nĠProdu ction\n][ $\nãĥ¼ ãĥ\n_LO AD\nĠB ol\nel ry\nł éĻ¤\nĠRe quire\nĠpl acing\nxx x\nCA LE\nĠth umb\nCh oose\nĠprot otype\nVO ID\nĠles bian\nĠtra its\nSh arp\nĠconsum e\nTr uth\nĠaction Performed\nĠEnvironment al\nĠDe an\nĠest ado\ns ame\nĠnumer ic\nĠtrans it\n. Email\n-s ide\n_R UN\nĠVill age\n_OP EN\nè ¦\n.re m\n-w arning\nany a\nProperty Changed\nĠ(! _\n( check\nil ia\nĠSo ft\nst eps\nĠMad rid\nMemory Warning\nĠhand lers\nĠexperi encing\nĠins pect\nbutton s\nReceive MemoryWarning\nchem y\nLink s\nĠur llib\n.System Colors\nĠE igen\nĠpun ishment\n:UI Control\nbar a\n- set\nĠ}čĊčĊ čĊ\nĠtoler ance\nĠinter faces\n. redirect\nighb ors\ncs rf\n_back ground\n. Utils\n_H T\nĠInter est\nim os\nĠgr ants\nĠexam ined\nÐ Ķ\nĠc f\nfor ge\nback s\nĠObject s\n_s ent\n. entry\nĠTH EN\nell ido\nc ia\n, res\n/std c\n. nd\n( Int\nĠAuth ors\nĠApp CompatActivity\n' {\nĠmed i\nM usic\nig m\nce ipt\nĠa uss\nĠtarget ing\nĠKe ys\nh n\n: ]Ċ\nĠmin eral\nÃ ®\n.c a\nom ed\nĠshe ets\nĠc amb\nĠdead ly\n.in ject\n( unit\nĠSe lection\n.g ms\n( connection\nĠ$ (\"\nÃ© mon\nĠCurrent ly\npt e\n_path s\nle af\nĠimp lications\npos al\nä½ į\n[ /\nanc ia\né Ľ\nm ul\nc ie\nĠge ile\nim als\nUI View\nĠs urre\nserial ize\nIS O\nĠarbit rary\nĠsock addr\n.f n\nĠM erc\nĠcast ing\nKey Down\nĠnew Value\nop ens\nT odo\nĠflex ibility\nĉĉĉĉ ĠĠ\nV elocity\nÃº n\nrow ing\nĠcomput ed\n` )Ċ\nst atement\nĠr i\n_c art\nL ow\ntrans fer\n.n av\nĠgr ave\nĠDo or\nĉ alert\n.sub scribe\n- profile\nĉb ase\nĠâĪ Ĵ\n__ ĊĊ\nĠengine ers\nĠexplos ion\nĠd ari\nĉ Log\non al\nĠisol ated\n{ i\nĠM sg\nF uture\nĠrac ist\n-w rap\nĠV ers\nb org\nIS ION\nĠ ÑĢÐ°Ð\nĠY an\ninit With\nĠn omin\n( empty\nÃŃ n\nãĤ ¤\nĉ width\nĠch amber\n/ ajax\nEM P\nĠnec es\niv os\nlog ic\n*) &\ncript s\nRow At\nib lings\nĠe ars\nĠcomput ing\nĠm aker\nĠNe ither\nb readcrumb\nĠserial ize\nĠWith in\nĠd ell\n_TR ACE\n= a\nĠwish es\n-in ch\nĠD or\nĠinnoc ent\nĠD ol\nĠint ens\nfor ced\nĠB IT\nĠphotograph s\nĠcas a\nĠL en\n\\F ramework\n.S imple\nĠde ar\n)/ (\nip pi\nĠown s\nPl ayers\nĠpropos als\n.p i\nus alem\nD amage\nĠcal ories\nĠCreat ive\nĠ[ $\nĠ// čĊ\nAnd View\nÃ¨ me\n.c ustom\n_f actory\ncommand s\n_lo ok\nĠstr cmp\nY N\na ired\nĠaud it\nÐ¾ ÑģÑĤ\nĠRe verse\nropri ate\net ics\n< vector\n.s elenium\n. or\nĠpred icate\nĠfinish ing\nĠk le\nĠRep os\nĠK han\nĠM aking\nĠF S\nĠp ute\nĉ state\n_S UPPORT\n' -\norient ation\nĠexist ed\natur a\nĠexpect s\nĠSh adow\nĠorgan iz\nå ŀĭ\nĠsusp ension\nĠu it\nĠsimult aneously\nĠAff ero\n: \");Ċ\nĠro cket\nc as\neter mine\nace ut\nx l\nĠA MD\n( graph\nass oci\n_C R\n.ar ange\n(j Label\nĠbe ef\nQu ick\n.c ard\n] ):\n- gr\n.G ONE\n_C LOSE\nĠNe v\nÃŃ as\nĠste pped\nĠFre edom\nĠW R\nNS Array\n_r x\n_d ialog\nĠhot els\nĠ( \\<\nĠD iamond\nĠassum ption\num i\n( items\nč ččĊ\næ³ ķ\nĠn el\nBook s\nåİ ¿\nus b\nĠF IN\næ ¬\nĠcorpor ations\nUS A\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n.p roperty\new ise\n_ plot\n\"> ';Ċ\nĠpe pper\nĠsh ed\nĠMed ium\nĠC ookie\nĠoverse as\ned or\nasure ment\nåŃ ĺ\nĠ' .'\nĠph p\nĠPRO C\nĠexception al\n( th\nĠJ et\nĠoccup ied\n.set Image\nĠRel ated\nuck er\nM embers\nPR INT\nĠG lo\n_V IEW\n} \",Ċ\nĠad option\n[] )Ċ\nĠMiss ouri\nĠLin coln\neral d\nPop up\nĠf ate\n- bootstrap\nfe ctions\nĠP oll\n_ARG S\nin ance\n-h ome\n. ),\n_d one\n: ĊĊĊ\nĠdiscuss ing\nĠSQL Exception\nĠelect ro\nĉ req\nĠz w\nĠl ui\nĠover night\n$ user\nĠW AY\nĠall erg\nĠdisappoint ed\nĠradi ation\nĠimpress ed\nific ates\nĠto b\nCL ASS\nĠc uda\n_d et\n- post\nul u\nTrans lation\n-h and\n.y ear\nĠM ongo\nĠun clear\n. engine\nWEB PACK\nr ices\n_AC CESS\nĠh olidays\nper cent\n.Id entity\nĠG ov\nĠpassion ate\n!! .\nĠGree ce\nplus plus\n')) ;\nG P\nĠexc it\n.tab Page\n_ cond\nĠspons or\nM ODULE\n_pro c\nĠ$ Ċ\nĠr ational\n.T ool\nĠi hr\ncc a\nåĵ ģ\nĠE state\nIB UTE\nAction Performed\nĠS olar\n¦ Ĥ\nĠequ ity\nt id\nĠrec ip\n.s imple\nm k\nĠL uke\nĠGuard ian\nĠenc rypted\nĠdomin ant\n. place\nĠN V\nĠtong ue\n( Get\nĠst ainless\n.P lay\nĠe b\nac i\n.b uffer\nreadcr umbs\nĠvacc ine\np rom\nĠuser Info\nĠsl ug\nSerial izedName\n-w ide\nĠre actions\nĠY ang\nĠAdd s\n(user Id\nĠpl ates\nĠM EM\nĠb ail\nIn side\net ed\nĠels if\nĠs ake\nĠc ycles\nĠì Ĺ\nĉ I\n-c ollapse\nĠG MT\nDe claration\nĠg ros\nĠreach es\nĠcust ody\nUnt il\nt u\nĠCh en\nĠn x\n( addr\nĠO ffer\nĠcol leg\nass ador\nĠm apper\nĠS IGNAL\nĠB loom\nĠH oll\nĠIm per\n-d es\n_s ite\nPro c\nE qu\nĠat omic\nĠW oman\ns ent\nsc ar\nĠint elligent\nĠGet ting\nĠReg istration\nĠPh ill\nĠkill er\nunic ode\nĊ ĉĉĊ\nĠJac ob\nĠCon st\nĠloc ate\nĠca us\nĠSch olar\nĠconstitution al\nĠinfl ation\nĠG ot\n= array\nend um\nĠtransl ated\nĠdiv orce\nEn tries\nĠs or\nĠQu ote\nirl ines\nU K\nĠexc el\n( opt\nĠAD V\n,: ,\nĠcontact ed\nĠD A\nĠr ings\nĠIndust rial\n.get Context\nĠforg otten\nĠT an\nĠp ants\nĠo v\nĠdec oder\nĠPart ial\nĠv c\nĠbatt les\nA rial\nFRING EMENT\nir ates\n, w\naint enance\nĠO d\nĠTechn ologies\nåī į\nĠCar ter\n.find All\nN ome\nB en\nĠUs age\nĠP icture\nĠbad ly\n_p anel\nĠpat ent\nĠProt ocol\nlot te\nĉ player\nje ctions\nĠd ou\n_re lease\nurn iture\n_t ax\nĠF ields\n.d ataset\n_m aster\nCLU DE\nĠPh arm\nb st\nĠoper ational\n.c ell\nĠident ifying\nĠj wt\nt uple\nĠT C\nĠC ro\nix map\n- components\ngener al\nĠo z\n_D e\n_d ouble\nĠTo o\n.View Group\ng ate\nd ings\nph otos\nĠgrand e\nol lect\n_l in\nĠaw ful\nf ilters\nĠaltern ate\nes p\nĠcomp ress\ne o\nĠS cale\nĠind irect\nĠinv oice\nĊĊĊĊĊĊĊĊ ĊĊĊĊĊĊĊĊ\nStart ing\nĠPl ayers\nie le\n. then\nOr d\nĠT uple\nĠb out\nĠStat istics\nPre view\nĠp uzzle\nĠW idth\nST ATE\nĠover lay\nĉ on\nĠin fr\nĠsm allest\nlock ed\nÑĤ Ð¾\nss l\nĠde emed\nĠs co\nre ck\nĠj Button\nĠmiss ions\nç§ °\n.Selected Index\nT ABLE\nSe pt\nĠacknow ledge\nĠstrt otime\nĠT ell\nĠD ak\nĠal uminum\nĠf ence\nĠSt ars\nCON FIG\nĠretro fit\nĠemph asis\n/ header\nĠS omething\nin ished\n=' \".$\nĠValid ators\nĠpol ar\nsection s\n.as px\nĠas pir\n.M ock\nCode Gen\nĠpe ut\nĠaccept ing\nĠback ing\nP icture\n/ ap\nÐµÐ ³\n_SE C\n- use\nannot ation\nĠcogn itive\nĠg rip\nh our\nĠLeg al\nĠep ic\n.t oolStrip\n.not ify\n.L ast\nOR IZ\nM iddleware\ncri ptions\nl ash\n_F OUND\nĠLiver pool\nĠ{} \",\nInst all\nĠn it\nĠfig ured\n[ len\n.W in\n.pl atform\nĠgam bling\n(d t\nav ery\nĉ include\nWh ether\nR outing\nĠther ap\nRem ote\nĠL oss\ny ll\nĠappro ached\nĠV ehicle\nĠAl pha\nĠvoc Ãª\nans wers\nNS Dictionary\ncons ider\nun used\nĠF an\nor able\nf re\nĠDIS CLAIM\nĠAct or\n. ]\nto Have\n.user Id\nĠspeed s\new ay\nĠrec urs\nĠÐ ³\n_pr iv\n! âĢĿĊĊ\nCh oice\nĠsett le\nĠplan es\n' },\nT om\nIT ER\n! \"Ċ\nå »\nachel or\nĠsepar ation\nĠd al\nad j\nĠreg isters\nr iz\nĠNot ice\nĠl u\nĠcour age\nĠax es\ncell ent\n.as ync\nĠcompat ibility\nç «\nĠ! ĊĊ\nĉ title\nY LE\nĉ message\nU UID\nOLD ER\nĠH H\nĠStyle Sheet\nĠaccess ed\n. validation\nt asks\nĠpoll ution\n.c anvas\nĠing redient\nĠC abin\nA h\nold own\nĠNO I\nĠÃ Ĺ\n[ f\ned uc\ny alty\n(n ot\n_ State\nam en\nĠda o\nud ad\nell ers\n} &\nlic ity\n_W INDOW\nĠt atto\nval or\n.R ange\nĠrefer enced\nĠRes erve\nM oney\nSCRI PT\n/ product\ncho ices\nĠt in\nãĤ ĵ\nĠsepar ator\nĠp kg\nam med\nĠM AT\n! !ĊĊ\nĠr aid\nĠmotiv ation\nĠX P\nĠBack ground\nĠQu aternion\n.define Property\nik er\nĉp arent\nĠOrigin ally\nant age\nĠH ans\nĠtim eline\n.c ur\nop ic\nĠSe qu\nm ust\nĠCo al\nĠform atter\n_R GB\nĠ_ (\"\n'} ),Ċ\nĠ= ================\nĠF UNCTION\nĠl ng\nic ates\nl ive\n_ engine\nĠtown s\n')) ĊĊ\nĠP K\n( api\nĉs canf\npack et\n.ph one\ná Ģ\nĠAnd y\n_N AMES\nPL Y\nĠmin s\nim i\nĠbr ick\nĠbl ade\n.std out\n}` ;Ċ\nSh ift\nĉs b\nĠCheck s\nĠphenomen on\nAv atar\nĠmin istry\nro se\nĉ File\nĠtit led\n( LOG\nĠg an\ndes ign\n(), čĊ\nĠb ones\nst m\nÅĽ Äĩ\nĠInput Stream\nĠvol unt\nĠSerial izable\nĠfight er\nĠDr ag\nT witter\nĠsubs id\nç ¼\nĠfor ums\n.load ing\nlog ged\n_ this\nĠterr ain\nĠir re\nĠIn g\nĠC N\n_object s\n. uid\nĠconscious ness\nT INGS\nĠG all\nĠport ray\nĠDevelop er\nĠparticip ant\nĠ\" ;čĊ\n/ model\nĠOper ations\n^ \\\nĠL ater\nĠrais es\n-n one\n.m eta\n=' .$\nFin ished\nĠrepl acing\nĠsam pling\nĠJ en\n\" There\nRE AL\nA LE\nìĬ ¤\nOr ders\n_param eter\nĠOlymp ic\nĠtr Ã¨s\nĠare na\ni ol\n; ?>\nĠimpact s\nĠW S\n: get\nĠfl ights\nĠRuss ell\nc amera\nF n\ns igma\nĠfor cing\nĠloc als\nĠdepart ure\nĠcelebr ation\nĠS ay\nï¼ Ĵ\nĠH ills\n.has OwnProperty\nĠtyp ings\n.A PI\nĠdon ation\nOperation Exception\n.Act ivity\nc plusplus\nĠChar lie\nĠimport ed\nĠd ann\nĠoccas ions\nĠimplement ing\nĠpur ple\n.d ialog\nSQL Exception\nern o\nĠw ars\nĠpast e\nĠdecre ased\nĠhar sh\nĠel abor\ninput s\nĠView s\nĠerror Message\n_m ul\nĉ write\nĠC op\nĠAnn ual\n(b utton\nĠv ida\nb ars\nĠHar vard\nĉex pect\nĠindex es\nĠdocument ary\nĠf lesh\nOR LD\nĠD elta\nM AND\nBr ush\n-c olumn\nĠdevelop ments\nmethod Visitor\ns lice\nĠP DO\nĠinvest ing\nir able\nĠxml ns\nï¼ Ľ\nart a\nĠthe ories\n_c ity\nĠ$ __\nCre ating\n( pr\nD ropdown\nism atch\nĠN ET\n'] )){Ċ\nĠVal ues\nĠSE O\nĠST AT\nĠe cosystem\nĠtem pt\nĠ\\ \\\nĠ// {Ċ\nĠChrist opher\nĠKent ucky\nĠHttp ServletResponse\nĠhy brid\ny on\nĠfeed ing\nĠEx tra\nN orm\nIT CH\nĠSe an\nĠUp load\nm un\np ur\nĠp ersistent\nĠID C\nĠPer form\n.m erge\n_ room\nMean while\n! ='\nĠW el\nArgs Constructor\n.D atabase\nĠcount ing\n() *\nĶ åĽŀ\nĠT OP\nm ill\nĠD T\nIGN ED\nĠK B\nĠcomp ly\nS outh\n_c ollection\nCh apter\nĠexpl aining\n_ AM\n_t s\nc ards\nĠqu el\nĠp ole\nĠtouch down\nĠO thers\nĠpe ers\nĠType Error\nĠsix th\nĠche er\nĠdis pute\nus c\n) ],\nth umb\nĠh iding\nĠS IG\nlik es\nĠP AGE\n.Ref lection\nĠhead quarters\nT ING\nĠG host\nM LE\n$ Ċ\nĠcontr ary\next end\n'] ).\nFF ECT\nĠP interest\nÃºmer o\nric ane\nĉs ession\nĠcr ystal\n- Control\novern ment\nog raf\n- action\nv olume\nft en\nĠun con\nĠan imate\nĠle ase\nsc r\nĠref use\nãĢ ĭ\nft p\nin formation\nĠeval uated\nĠin jection\nĠj ack\nĠwork shop\næ³ ¨\nPT H\nĠT s\noff er\nĉ os\nĠking dom\nM issing\nĠlaw makers\next Field\nĠsing ing\nab i\n/ client\n.m edia\nATEG ORY\nSign ature\n% ',Ċ\nĠF uck\n][ :\nĠsens ors\n/ com\nĠPr imary\n.S QL\n_pro gram\nĠp ills\nĠinteg ral\nĠfle et\nĠdro pping\n.s l\nBe en\nĠp ets\nĠadvis ed\nĠdr agon\n_ EDIT\n( im\nF ER\nĠDr ug\n(r andom\nĠcomp ression\nou st\n[ %\nĠbuy er\nh op\nR oles\nman age\nĠpain ful\nĠBr anch\n-mod al\nen ant\nĠM esh\n/ font\nĠG raham\nĠâ ĺ\nĠn c\nĠFranc is\nĠspec ification\nĠdam ages\n- config\nĠthe oret\nsec ure\n_m ulti\naceut ical\nĠdemand ing\nen ne\nIST S\n() ));ĊĊ\nRe ason\nRe cent\nph ase\nĠps y\n_M AN\nĠvolunte er\nå ¿\nistrib uted\nli o\nĠproduct ivity\n_com m\nS pring\nn is\n. weight\nĠC ancer\nAl loc\nĠT weet\nĠsepar ately\nĉ check\n_p roperties\n. Unit\n_CL K\nĠg t\nĠ( );ĊĊ\nĠhand y\nĠThom pson\nĠunn ecessary\nĠRe ader\nG N\n= request\nĠU tility\n.Re pository\nĠA x\nhy dr\nie u\nĠth y\nĠl t\n_m ail\nä¿® æĶ¹\nail and\nĠPhil ip\nĠbit ter\nĠbet ting\nĠtim ed\nock s\n' a\nĠal gorithms\nĠre interpret\nĠto ss\nro gen\nĠhop ed\n( selected\nĠvent ure\nTE X\nĠLe ave\n.Sub string\nĠgr ateful\nuk a\nĠCon sumer\nĠag greg\nC ircle\nà¸ ģ\n_block s\nĠleg ally\nĠ\" |\nãĥ ĥ\n. board\n.A b\nFunction s\nrec ipe\nè ĩ\nĠO xford\nĠwho les\n.B uild\n_ch anged\nh ai\nĠdepart ments\nI mp\nĠcoal ition\nIN FRINGEMENT\nĠemp ower\nitch es\nN orth\nĠinfl amm\nON SE\nĠmiss ile\nĠR aj\nĠIss ue\nĠat oi\nca led\n.Cont rollers\nĠW olf\nĠcrush ers\ná» ĩ\n.A uth\n.add Attribute\nh is\nĠbo ots\n.c lean\nc amp\nĠten ant\nĠt une\nĠ{} '.\nĠwork out\nRe po\nĠpartial ly\nMI SSION\nj amin\nĠS B\nĠdetermin ation\nĠ' ');Ċ\nĠB eng\nĠv os\nĠin hab\n/ lang\ns burgh\nExec utor\nh one\nĠCh allenge\n_link s\n.Le vel\nĠunder ground\n-c ode\nĠoptim ization\nlog ging\n_de st\nĠsn ake\nĠchemical s\n_IMPORT ED\nado op\nĠTH AT\nman aged\nĠredu ces\nĠRE AL\nĠG uy\n_GENER IC\n/ ********************************\n. amount\nĠd ere\nget Time\nĠp ant\nan onymous\nĠharmon y\nĠAl an\nĠscen arios\nĠd irt\nht ags\nM c\nSh ell\nr in\n{ čĊčĊ\n.p ow\nĉ client\nĠconspir acy\nĠad mission\nĠReg ional\nĠView Controller\nĠPhilipp ines\nĠde pos\nĠp ap\nĠP ad\nP aul\n.Com boBox\nĠt utor\nĠRec ipe\nw riting\nĠcontrib utor\nOT H\nSm all\nV I\nĠh acer\ne qu\nĠEx amples\nh uman\n.m essages\nĉt yp\nĠ( čĊ\nĠS SL\nLE N\nĠRom ney\n( grid\nĉ min\nĠ> ĊĊ\nĠfr uits\nĠvot er\nIn line\npan e\nĠC ollections\nchar set\nĠsp am\nz b\nitem ap\nĠsucceed ed\n_C OL\nĠel apsed\nim eter\nĠrecover ed\nT ensor\nhatt an\n.set up\nist o\n( head\nĠS IZE\nĠtact ics\nĠdist ur\nĠpre val\nici os\n( Value\n_c ols\nĠF at\nĠse al\nĠs ons\nĠens ures\nĠpress ing\n= &\nigen ous\nĠharass ment\n_ JSON\nĠign or\nyn omial\nom er\n_st atic\nĠsignific ance\nĠcirc les\n_S ystem\nĠdiscipl ine\nĠdress ed\nĠs phere\nĠclim b\n_ actions\nĠB ab\nĠ' =',\n_s chema\n\" use\nĠund ers\nĠc ups\n.s creen\n/ new\nĠappe aring\nT OP\nvis ed\ncl ang\nĠinvestig ators\nĠmyster ious\nĠprom ising\nĠqual ify\nĠc ave\nĠequ ip\n= x\nG T\n( link\n. velocity\n. erase\not er\n++++ ++++\npro fit\nĠz ones\n_ uid\n- ser\nĠobject ives\nĠmil f\nweb kit\n(m atch\nne h\nĠAssoci ated\nĠT odo\n= d\nC am\nĠv ocal\nĠs udo\n( EX\nĠtr ou\nAB C\n.b ean\nĠG round\nĠRE ST\nwe ets\nIn g\nim on\n_b us\nĠC OLOR\nun to\nĠf oss\nĠLink s\nÃ¤ ng\n/ forms\npr ises\nĠachie vement\nC ALL\nÐµÐ» ÑĮ\nĠVer ify\n_S OURCE\napt cha\nID D\n_re ference\nG old\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĊ\nRe ceiver\nĠa j\n_d irection\n} ]\nĠCom pet\nĠb ang\nĠC ass\n- url\nte chn\nĠJer usalem\nlong itude\n' );čĊčĊ\nĠwin ners\nT asks\nĠD MA\nĠtool tip\nİ ·\nĠB ra\n_d uration\ncur y\nparent s\n---- </\nĠpass port\nW C\nĠÐ »\ncess ion\nĠY ellow\nĠenc ryption\n' ĊĊĊ\nĠlist ings\nĠCommunic ations\n._ Ċ\nĠ\"\"\" čĊ\nĠf b\nĠstrict ly\nĠL iter\nĠEnter prise\n_b ottom\nA KE\nk et\nĠt am\nB etween\n_T OP\nDis able\nĠfil ing\nĠCh ron\nSE QU\nĠ& ___\nĠf al\nĠS LOT\nEm bed\nuth er\nĠRest aurant\nĠreal istic\n! ');Ċ\nĠDE AL\nĠPer iod\n.get X\nĠse hr\n\"] ').\ness a\nĉmem cpy\nĠacknowled ged\nsen al\nĠUnivers al\nĠ' ';ĊĊ\n/w iki\nien ne\nĠNS Array\nĠaccept ance\nĠl iver\nĠtoo th\nĠacc us\nĉ LOG\nval u\nåĢ ¼\nĠs ectors\nperiment al\n/ class\n_g o\nMich ael\nol atile\nĠPRO F\nĠcomp rom\nspecial chars\nĠâ ľ\nĠisEqual ToString\nĠH ung\n.as List\n/ go\n> >(\nĠK ir\nĠint ros\nĠsk etch\nĠsk illed\nĠim mer\nĠade quate\n_re p\n( header\n_ like\nĠper ceived\nss h\nĠassum ing\nĠf f\n_u uid\nul as\nĠdemocr atic\n. entities\nS eries\naph ore\nĠnew er\n} (\nSE C\nai ro\nĠcomm od\nĠprivile ge\nĠde ux\nĠH op\n.' /\nct ic\n. ';Ċ\n<? =\nĠU T\net ies\n_CONT ENT\n.re lease\n.dis miss\nĠf c\noun ge\np wd\n_p rev\nM gr\nĠBuffer edReader\nw ritten\nĠE b\nĠ )ĊĊĊ\nuit o\nĠcontrovers y\nĠdis posed\nĠf oto\nList View\n/ create\nĠC OL\ncomm unic\nĠfre ely\nun al\nov id\nĉ tr\np agination\nĠCommon s\nE lem\nĠR EM\nĠcorre lation\n() +\"\nĠH ide\nand ing\n( vec\nit os\nĠC ult\nĠnut rition\nval s\nĠdetermin ing\nl ord\nĠsc andal\nĠshall ow\nod ash\n_s erial\nĠS lo\nĠdis pon\nPl ot\nick le\nĠ ell\nĠun employment\nF M\nron s\nl Ä±\nM o\nEx ist\nID S\nCh o\nĠKey board\n.p arser\n.Get Object\nĠsp ells\nĠges ch\nĠmagn itude\n_S L\nisd iction\nĠ' );Ċ\nili ans\nĠsh ar\nĠPro b\nuilt in\nĠtun nel\n> C\nĠWar ren\nĠoptim izer\nĠSER VICES\n_ oper\nget Attribute\nĠMc K\n_s elf\n.r s\n\" )ĊĊĊ\nGet Component\ner ce\nĠt ous\nun its\n'] );čĊ\nZ oom\n/ E\nĠobs c\nĠfast est\non line\nĠpeace ful\nff en\nĠc argo\nĉ pr\nĠseek s\nz u\nTr im\nĠw ard\nĠver d\nĠblog s\n.exception s\nĠPrem ium\nĠN etherlands\nS afe\nFin ish\nĠAl bum\n_A CC\n= this\nv irtual\n] >\n_L ABEL\nĠN ich\n_w in\nĠA aron\nW P\n; $\naim s\nĠImage View\nĠend less\nER A\n_DIS ABLE\nĠcancel led\n- us\nĠins pection\nem in\nĠG rey\n- open\nĠiter ations\n. owner\nĠk eras\n.P assword\nĠR y\nĠIN S\nA ir\nĠSe veral\n.Tab Stop\nING LE\nĠH air\nĠCan vas\nAA AA\nĠfl aw\nced es\n.Re port\ní Ĭ\nĠT ips\ncript ors\n.trans action\n.S pring\nĠview er\nĠins ights\nè¾ ĵ\nord ion\nU INT\nse ek\nĠA uf\nìŀ Ĳ\nĠstr ain\nTo oltip\nĠd z\nign al\nad t\nĠu c\nfin ite\nĠn m\n.c md\nĠMy Sql\n[ data\n.j ackson\n.t ree\nRequest Param\n_ agent\n\") ]čĊ\nĠass ass\n( Constants\n: ss\nĠM AN\n+- +-\nĠB ottom\nprint s\nĠS ame\n@ Autowired\nsw ap\nici Ã³n\nĠprotest ers\nĠh oney\nĠV eter\n(C alendar\n- ad\nĠBrook lyn\nL ife\n_V AR\nze ch\nĠC ALL\n_C AST\nĠE lection\nĠthick ness\nV ery\n_IN TEGER\n- dev\n)) ))\nap at\noo oo\nd emo\nĠparse Float\nĠR ather\nST IT\nm aker\n[ current\nchron o\nĠch rist\nãģ ª\nĠD etail\nÆ° á»\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠs ul\nid ency\nQ ue\nĠeleg ant\nap ons\nĠdish es\nĠinteg ers\n( read\nfind ViewById\nĠAm ount\nĠSk ip\nĠhab its\n* )(\nĠmon sters\nM AC\n: end\nĠfr ank\nAs sembly\nĠd fs\nĠne ut\n_TYP ES\ne qual\nloy d\n( uri\nĠch i\nĠdefend ant\nĠconflic ts\nĠv il\n- js\nĠPe ace\nĠmut able\n) sender\nĠF ocus\nå» º\nĠapprec iated\ns leep\nĠR ED\nC ulture\nĠdesign ers\n_g enerator\nc odes\n/ ex\n.Get Value\numb led\n.scal ajs\nper or\nĠveter ans\nĠ} )čĊ\nĠun fortunately\n_C REATE\nM ass\nĠCL AIM\nĠMe et\n_s upport\nB ank\n() .Ċ\nD ark\n_LO W\nĠMin ing\nĠO wner\nier a\nClient e\nĠencour aging\n> S\nĠboy friend\nĠH alf\nĠA CC\nA ff\n_ ar\n-l ife\nc x\n.J Button\niz ado\n.z ero\n.open qa\not on\n.text Content\nĠto ll\nat ie\nĠball ot\n- number\n. Exception\nĉ params\nc ircle\n-m ap\nĠn ap\nĠRob ot\nĠI ch\nreg istration\nAm azon\nroll ment\n( exp\nĠt anks\nĠG ordon\nĠmach inery\nĠbas eline\næ ĭ\nØ ©\nĠCon vention\nĉ config\nook ies\nm ult\nRec ords\nĠE ST\nĠgar bage\nĠcon form\nid al\nĠb arg\nĠsurv ived\nĠinvestig ations\n.contains Key\n---------------------------------------------------------------- ----------Ċ\nort ion\nĠhor r\n_ http\nĠm ant\n] ;čĊčĊ\nb inary\nem pl\nĠin quiry\nĠMean while\nĠcollect ing\n.Entity Framework\n\", ĊĊ\nĠP ic\n@ Inject\nick ness\nĠB inding\nĠcont rolling\nre verse\nĠch airs\nsemb led\n( add\nDis abled\nan as\n.trans late\n-------- ---Ċ\nĠref lected\n\"] ĊĊ\nEx ternal\nAr row\nSingle ton\n% x\nĠ Å\nĠan cest\nĠOr leans\nĉc md\nĠprohib ited\nith metic\n(ch annel\n_c ss\nFor ward\n.s ocket\nĠl uc\nâ Ĩ\nĠFire fox\nĠM ovies\n) _\n. ends\n( shape\nĠde alt\nĠs aves\nĠgl ory\nĠmej or\nĠbreath ing\nĠ eller\nget Data\nĠang les\nĠtool bar\nĠsp acing\nIP S\nĠflo ors\n_ACT IVE\nĠsh uffle\n/ shared\nĠE le\ned ish\nĠweb cam\n.ex pect\nil oc\nĠIn cludes\nĠtweet ed\nĠ: )\nĠEss ay\nF ix\n-b etween\n_ web\n.con v\nĠrac ism\nĠreflect s\num m\nÐ¸ÑĤ Ðµ\n_f ooter\n/d ocs\nĠP our\nNg Module\n.initial ize\npattern s\n_ In\nĠAb b\n* čĊ\nĠsent iment\nb uff\n_count s\nĠre use\nch unk\nĠim posed\nPrimary Key\nFore ground\nĠconsum ed\n? !\nĠd ick\nĠch ron\nĠF ern\nĠrespons ive\nĠin sect\nicult y\nĠr w\nĠal ike\nĠsub set\nĠCook ies\nĠP air\nĠt ier\nIF O\nav our\nĠQ U\n, sizeof\nĠmerg ed\nm v\nit ol\nyl on\nĠjump ed\n. role\nens aje\nR ules\nĠb rowse\nAn imator\nĠy oga\nĠvari ants\nĠcour tesy\nur an\np bs\nelse if\nAl t\nĠL ane\nCL K\nIM ARY\n_PRO PERTY\nï¼ Ĳ\nĠch an\nĠgrad ually\nĠsh ake\nĠbl onde\n... \");Ċ\n-se x\nĠgame play\nac ies\n.ref resh\nUS B\nĠPl ot\nW as\niss ippi\nĠT ensor\nĠcryptoc urrency\nĠdifficult ies\nDe leted\nWith out\n_ append\n_ ver\n\")) čĊ\nĠhonest ly\nĠp ivot\nĠtem ps\n_p s\nĠUn like\n[: -\nV S\n_in f\nĠjun ior\nĠanim ations\nĠfile path\n? </\n[ \\\nĠoper ates\n_ red\nĠBoot strap\nle ad\ne ffect\nÂ ½\nĠS ter\nĠB uck\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠde puty\nTh an\náº ¿\nON ENT\nĠHe at\nethe less\n] ){Ċ\nĠkosten los\n(); //\nĠdeploy ed\n>{{ $\nĠun icode\npl aces\nĠC offee\n.S E\nĠP AR\n(t xt\nge bra\nĠf ires\nMain Window\nmed ium\nĠ( âĢľ\nĠl g\nĠc mp\n/ base\n_l ayers\n_ entries\nĠadmin ister\nĠSU CH\nB P\nĠScott ish\nĉčĊ ĉčĊ\ngu ard\nĠStr ong\nIn sn\nĠC AP\nas ury\nĠSE E\nC lock\ner ie\n\\ models\nĠ$ $\nĠC ab\nĠwur de\nĠsold ier\nĠcl ips\nĠarrang ement\nĠW onder\nĠH orn\nĠsc ared\nĠc ure\nm kdir\nĠal igned\nĠP ink\nĠland ed\nDim ension\nScroll Pane\n.ch at\n.W ith\nĠTr ain\n] .Ċ\nĠth irty\nĠdur able\nĠl d\nĠlate init\nĠch arts\nĠins ult\n.F atal\n_ ct\nĠm asks\nCLU DED\nPres ident\nĠcol ours\ng ments\n.at tributes\nĠF lex\nĠC lock\nÃŃ cul\nim en\nJ O\nĠReg ex\n_L INK\nĠc ouch\nĠIN PUT\nĠbe ating\nb usiness\npre ced\n. unit\nĠF el\nN ever\nosp el\n.start swith\nĠE PA\n. only\nĠprevent ing\ny er\nColumn Name\nĠelev ation\nfl u\nicy cle\nĠoff line\nTool bar\nĠcompet ing\n) ].\nĠm og\nĠis Valid\nAs k\n_ av\n_l at\nAN C\nĠJ oh\nk ers\nĠgu ards\nĠch ains\nĠSimple DateFormat\n.st atic\nĠvess el\nĠm ud\nĠst abil\nĠst ret\ng m\nam ation\nç ľ\n-w ith\nĠro s\n_P A\nĠresult ado\nĠconf idential\nĠTok yo\nĉ using\nĠMath f\nomb ine\nĠESP N\nĠdeal ers\nĠdismiss ed\nTR Y\nĠte ens\nrec ords\nĠw ings\ng allery\naccount s\n_L IB\nĠj acket\nĠNS Object\nĠst ones\nĠDel ivery\nĠD iet\n/w atch\nĠto ilet\nĠG uest\n.d ay\nĠint val\nVis it\nĠinvestig ated\nĠpent ru\nĠThe atre\nandid ates\nL ang\nĠS erv\nĠcont rollers\nĠset Title\nN P\nam y\nfl at\n( ui\n_d ocument\nè ĥ½\nĠC oin\nĠAd ams\npt ic\nĠproduct ive\nĠaccompl ished\nčĊčĊ čĊčĊ\nĠdefer red\nient es\nĠs inc\nol ars\nRight arrow\nĠvari ations\n( offset\n.Layout Inflater\nĠsus pend\nĠprevent ion\n_pr ivate\n_ js\nâĺ ħ\nĠw ieder\nat um\nĴ Į\nĠappear ances\n.D ocument\nĠvalid ates\ncal endar\n} \";Ċ\n.d emo\ncon ut\nĠcorre ction\nĠDe al\nĠbatter ies\n.d uration\n, \\\n_m arker\nm ulti\nĠh alt\nĠc ms\nĠsh aped\nB ro\nre duce\nĠ ####\nCT OR\nĠBen ef\nĠicon ic\nĠp iano\nĠeffect iveness\n| .Ċ\nĠa jax\nĠv olumes\nà¸ ¡\nĠcl js\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nath s\nra its\nå¤ §\nÑ ĸ\n_m ult\nĠfasc inating\nA verage\nĠpr Ã©\nĠChair man\n.find Element\n_p in\nĠcomp aring\nĠdark ness\n-F i\n- server\nĠselect ing\nster dam\nĠPart s\nFORM ATION\nĠnot ing\nĠp ile\nog s\nĠpa lette\n_d o\nit ize\n() (\nĠdef ining\nĠremain der\nUn its\n_T ASK\nHttp Client\nS ocial\nĠfund ra\nN R\nch est\nC urrency\n.ad apter\nĠd op\nun ting\nANG UAGE\n\" He\nĉ index\n_p ackage\n.I con\nĠrep et\nm ass\n=\" .$\nĠS ud\nĠl id\npro vince\nì ľ\nG PIO\nÐ ļ\nĠMy SQL\nĠdoc s\nĠG A\nĠip sum\nK ernel\nĠaccept s\nĠfit ting\nĠcu ando\nĠd uplic\nĠBro ther\nĠK le\nnum s\nĠmor ph\nĠ ########\nĠCG Point\n< unsigned\nä¾ ĭ\nĠD uke\n.set Bounds\nq s\nor ic\nj er\nĠregard ed\nHttp Request\nĠbond s\nĠthorough ly\nenc ent\nĠhighlight ed\nĠac res\nĠwork place\nĠL ux\nĠqu ot\n.in flate\nĠdocument ed\nĠadd iction\nĠmut ation\n.c ity\nĠbott les\nĠRepos itory\non n\nerr no\nARI ABLE\nåº ¦\n_B EGIN\ngl as\n' })Ċ\nĠMass age\nĠWh it\nreg ex\nW A\nĠout let\n- head\nĠexp ired\nĠTh ai\n/ include\ngrad ient\nscan f\nĠse am\nw al\nĉb uf\nB earer\nĠprec ious\nif acts\nco ord\nĠexpl oration\n.get Y\n(h andle\nTop ic\nĠV ent\nr hs\n---- --Ċ\nĠB right\nĠg uild\nm other\nst orm\nĠmunicip al\nĠin k\n.T YPE\nw l\n... </\n_DE V\n=\" ./\n_ book\nth y\nitzer land\nop les\ntr action\nĠCam eron\nĠAnd re\n. results\nĠch rome\nĠsec ured\nĠsur faces\n) <\nĠtob acco\nĉs printf\nĠesc al\nĠstd err\nĠMel bourne\nĠdistrict s\nĠm att\noh en\nĠdataGridView CellStyle\n( Model\nĠsens itivity\nK A\ntrans port\n.get Date\nĠsub tle\nUG IN\n.m ouse\nĠaltern atives\nĠel le\ncor ation\nre ation\næ Ľ\n_N ORMAL\nDisplay Name\nĠf ancy\nISE D\nM OD\n.Read Only\nĠU b\nĠC u\nic ol\nĠN elson\nĠC OR\nan za\nĠSp ark\nĠ\"\\ \\\n-- ĊĊ\nwo ocommerce\nĠremember ed\nver ity\nĠExt ension\nĠP D\nĠsearch es\n.s o\nĠF ooter\nĠ= '\nĠW ARNING\n- lo\nĉ table\nĠdraw er\np icture\nĠFant asy\nst ory\nĠm Ãªme\n# ĊĊ\n_s lice\nolt age\nH ar\n/ y\nĠE R\nd ie\nĠP OS\n. actions\n(M ain\new art\nape ut\nĠS TE\nidd ing\n.read Line\nĠsearch ed\nW ed\n.f igure\nught ers\n(). __\nĠor bit\nsh ipping\nĠfriend ship\nĠSh ift\n- or\nqu o\nW HERE\nĠE sp\n.for ward\noff ice\nĠi Ã§\nĠCh elsea\nItem Selected\nach ers\nde leted\nrou s\nĠ\"- \"\nĠGr an\nĠðŁ ĺ\n-p ower\net ta\nĠrem inder\nens ors\nĠAll ow\nÄĻ d\n_t eam\nĠc rown\nt icket\nĠcollection View\nl ace\nĠfix es\nĠH ub\nc atalog\nĠId entity\nĠexcess ive\nĠN avigator\n_B R\n- play\nĠCamp aign\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nas ive\nĠw c\nĠBe ijing\n/ www\nĠmake up\nĠdist ances\nĠsatisf y\nCON D\nĠw ound\n() ]\nĠviol ations\nĠst ays\n/ #\nil ine\n\\ Exception\nĠM otion\nĠhe al\n_pl an\nr ases\n(m ain\nApp le\nĠcomple ting\nĠdetermin es\nSc an\nĠste al\nĠS oc\nAn alysis\nĠfavor ites\nĠcamp o\non er\nĠFl ight\n.. .ĊĊĊĊ\n)) )));Ċ\n-c ount\nĠp w\nAs String\nĠsex ually\nFirst Name\nĠEsc ort\ncal c\nĠW ikipedia\nĠdo cker\nĠS weet\n' id\nInt o\nĠH unt\n.equal To\nĠlabor atory\nĠBUS INESS\nFile Dialog\nTree Node\n.E nc\nĠMax imum\nĠmo thers\næ µ\nĠfr act\n.start sWith\nĠhard core\n. ob\nå§ ĭ\nĠ> </\n_ ro\n(( *\n?? ??\n_ vertex\nke it\nĠH alloween\nT I\nĠV a\n_c ar\n=\"{{ $\nĠrandom ly\nÐ°Ð½Ð¸ Ðµ\nĠshock ed\nĠPok Ã©mon\nsign al\nĠSD K\nm iddleware\nĠtre ating\nĠburn ed\nDep artment\nĠS pect\nĠclient e\nĠRed dit\n_ avg\nĠinstall ing\n_ alpha\n, data\nĠset Id\nĠList View\n( property\nĠcross ing\nĠOb j\nĠW ard\nĠRedirect To\nĠP resent\nĠdraw s\nched uled\nĠlegisl ative\nĠtw ist\nĠS tra\nĠA FP\nĠCh ap\n- pr\n: CGRect\nĠc es\nR outes\nn of\nĠvis a\nĠT CP\nĠEV EN\niv ial\nĠLet ter\nR AY\nĠimpl ode\n.e q\n=' +\nĠmotiv ated\n.vis ible\n.sh ort\n> manual\nĠTechn ical\nĠcorpor ation\nĠH W\nank a\nT AIL\nist as\nĠperform s\nĠBeh avior\n.F or\n_ ORDER\nĠK ick\nĠcallback s\n_d r\nue go\nh ub\nuff icient\nsk y\nĠb p\nht able\nĠON LY\nĠAUTH ORS\n.Arg ument\n\" };Ċ\nĠTh under\nĠK om\n.Sh ould\nA UTH\nah u\n_p ayment\nĠst arter\nìĦ ľ\nìļ ©\nB log\n.p atch\nĠgovern ed\nass y\n-f ound\nĠthe ater\nĠFont Weight\nĠBat man\n\" If\n.R andom\n_d elta\nĠC E\nAuth enticated\nĠdr one\nĠc ous\nr adius\nM er\n( None\nĠN J\n_ headers\nĠam er\npy test\nĠA ctions\nĉĉĉ ĠĠĠĠ\nĠet t\nĠh oly\nĠun comfort\nĠN in\nĠDec imal\nĠM essages\n.s ender\n] ])Ċ\nĠembr ace\nTh ough\n/ sp\nĠcult ures\nĠhigh way\nt ar\n.f ail\n_h idden\nĠcomponentDid Mount\nĠW right\nĠj ag\n_ il\n../../ ../\nig u\nF ood\nĠa ce\nĠa Ã±os\nUS D\nĠmut ual\nLog ic\nĠtem ple\nĠbrief ly\nĠT rip\nclass method\ndefault s\nĠch unks\n,, ,,\nĠRe ason\n$ id\n-up s\nĠdam n\nĠtruck s\nĠun limited\nĠsc ulpt\nĠC ards\nĠaut or\nĠTest ing\nĠdies e\nsh ops\nç ´\n(p ayload\nĠP ATH\nĠMem orial\nĠridic ulous\neg ree\n-w inning\nĠre hab\nĠsophistic ated\nwp db\nĉ path\n! \";Ċ\n_S YS\n.s peed\nĠso ap\ns uffix\nW rap\nĠenh ancement\nÃ ī\nÃº b\nĠplay list\nĠmix ing\nant idad\n=\" \";Ċ\nĠRev ision\nĠBe at\n.in c\n-w ay\nenc ias\nul ers\nC at\nid el\nĠSh ip\n.set Color\nĠthreat ening\n.mod ules\nĠafter wards\nĠD ashboard\nĊ ĠĊ\nSign al\nĠpr imer\norne ys\nici ary\nĠl igne\n_p redict\nĠa est\n_ https\n> :\nĠL ex\nĠrencont res\neg ral\nsc ala\n_f amily\nÃŁ en\n_s ym\nĠuncert ainty\nĠVAL UE\nĠ} ;čĊčĊ\nĠbro ader\nĠh orses\nãģ Ŀ\nĠK al\nob a\n_IN ET\nĠK ill\nj query\nam ination\n[ @\"\nĠm uj\n## #Ċ\nFirst OrDefault\nthen Return\nC he\n/ footer\nĠpark s\nas je\nĠG ulf\nĠmod est\n. Init\nï¼Ł ĊĊ\nĠpros pects\nĠs vg\nĠå ı\n.D ialog\n_N ET\nĠ( ($\nĠe k\nĠW arning\nĠM K\n< LM\nĠ' čĊ\ni em\nh etic\nĠi x\nth ink\n-sh adow\nĠE ld\nĠNev ada\nĠLe af\nĠG ROUP\nĠprom o\nent ine\nĉ Map\nĠModel s\nĠK rist\n_k ernel\n-m ade\nĠc err\nAs sets\nell ar\nĠinv oked\n.v ue\nĠcult iv\nC losed\nĠgener ates\nffff ff\nthes ize\ns qrt\nĠCast le\n.c ar\nĠke en\nund a\nĠC row\nĠSing h\ny thon\nĠbe ans\nl arg\næĸĩ ä»¶\nAw esome\nunc ate\nPath s\no ji\n(c urr\nCON DS\nĠm im\nĠshould ers\nH ard\nast es\nÐ° ÐµÑĤ\nĠconv ince\nde cess\nm ade\nĠC MD\n. Im\nĠcha os\nens ively\nĠcool ing\nĠbur ied\n(' @\n_S e\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉĉ\n.com pany\n.sub mit\nph ant\nĠboot strap\n_h elp\nà §\n.d ump\nĠdif er\n_m apping\nĠcirc ular\nĠescort s\nĠb ere\nĠgrad u\nĠLeg end\nim edia\nĠBar celona\nĠbed s\nåĪ °\nãĢ Ĭ\n_v olume\nĠtremend ous\nĠsc aling\nĠp ins\nen as\ntype param\nD ashboard\nrender er\nĠsp i\nĠ& $\nĠSk in\nalm art\nĠh ockey\nĠ'\" .$\nĠerr no\nĠb ew\nFollow ing\n.M odule\ner able\nĠM ilitary\nĠR io\n_ available\nĠSur face\nĠst ab\nIF IER\nĠL IST\nĠd ashboard\nĠcl usters\n.pl ugin\nĠj ou\nĠDec or\nF our\nĠdel le\n****** /Ċ\nia z\nin de\nch ing\nĠget Item\n.Add ress\nment ed\nA meric\nPl ain\nĠus b\nĠPract ice\n_ ment\n.bl ue\nH int\nÑĢÐ°Ð ²\nĠconn ector\nĠinher ited\nÐ¸ Ð²\nĠinterval s\nĠc ere\nĠu d\nĠin con\n.Ex ists\nĠM ic\nF K\n(c ard\n.Set tings\nĠexhib ition\nĠon Pressed\nĠrest ored\neng u\n. def\nĠrec v\n.\" );čĊ\nenc oder\nather ine\n( dest\naz ed\n# endregion\nsem bl\n, M\nob y\nĠÐ¿ ÐµÑĢ\n.C all\nĠattend ance\n-b order\nĠaddress ing\nÃª n\nĠLe v\nĠb ash\nben ch\nC redentials\nSp acing\n( of\n_RE SET\nig uous\nĠcr uel\nĠcross ed\nĠle ur\nĠG olf\nor rect\nĠpack ets\nĠData Set\nĠpart ly\nSEQU ENTIAL\nĠindic ation\nĠS alt\nac ia\nĠ* );Ċ\nĉ info\nĠView Bag\non z\nĠeditor ial\nĠA rena\nĠs ir\n_ Static\n( socket\ns u\ncho ose\n.m onth\n.M y\nÃ© ri\n; font\ndo es\nĠcon verter\nĠsal v\nĠl r\nĠinflu enced\n(f eature\nĠQue ens\nlet t\n_M ON\n& amp\nTouch ableOpacity\nO FF\nĠmetab ol\n( iter\nĠvit amin\nĠIND IRECT\naut om\n_p ublic\nĠadjust ment\nĠspecial ized\nw indows\n.add All\nĠaccording ly\nĠJ OptionPane\nĠcell spacing\nĠqu ad\nĠcre ep\nĠout lets\n}` )Ċ\nĠpri est\n_TH READ\nĠMar x\nĠBy Val\nĠc ual\néĿ ¢\nĠtempor arily\nAn n\nke leton\nå ¥\nĠLO C\nau er\nder ive\nĠbeh aviors\nas ename\nĠCent ury\nĠhor rible\nME SS\n_ List\nwe i\nP at\nĠCh oice\n_F ROM\nĉ line\n.in voke\n.B ottom\nĠnow here\n.\" ĊĊĊĊ\n_ export\nĠstrugg led\n.Ap pearance\nĠJ Button\nĠJer emy\n([ [\nĠkick ed\nmar shal\nst aff\nes ity\nĠqu iz\n_e ffect\nĠ} ));ĊĊ\nm el\nb anner\nĠP IN\nĠin vention\nĠcons olid\nĠop s\nĠB etween\nj ack\nern ational\nĠsacr ifice\nag ation\nĠJ oy\nĠam endment\nĠS old\nĠprison ers\nÐ°Ð½ Ð½Ñĭ\nDoc uments\n) ])Ċ\nust ed\nĠLine arLayout\nos o\n_E M\n.s elf\n.M iddle\n) //\nĠ\\ '\nĠfuck ed\nĠM urray\nĠprof ound\n_E LEMENT\nult a\nil ers\nport folio\nJ une\nt cp\nmod ified\nĠTr ace\nĠK el\naly zer\n) =>\nĠRep air\n_B E\nBr and\nu art\npre view\nĠiniti atives\nrun ning\nb ang\nĉ update\nĠCo ach\nR ich\nĠy outube\nĠrit ual\napp a\nĠRobin son\nprec ision\n//////////////////////////////////////////////////////////////// ////////////\n=[ ]Ċ\nĠcelebr ated\nOT O\nĠin clusion\nJ P\n' ;čĊčĊ\nĠnot able\n(_ .\nMan aged\nĠgu ides\n& nbsp\nated Route\nĠAd just\nĠcol ored\n_s cores\nĠTes la\n_pro gress\n.in st\n[' _\n.fl ags\nĠf close\n_O PER\nÅ¼ y\n_n ote\nĠtrans gender\nå ķ\nRI PT\nĠabs ent\nĠam et\nĠoper and\në ©\nĠh ood\nto LowerCase\nav o\nĠCirc uit\nĠL ind\n-- }}Ċ\n= m\nĠsup press\nĠM AP\ni ang\n- admin\nĠside bar\nĠB u\nĠH ex\n, F\nĠSign al\nĠtrans parency\nĠFeder ation\n/ V\nRe q\nĠpul se\nĠt ends\nNum bers\n% '\nĠde port\ndat as\n_U INT\n_ tra\nok o\nĠ\" ?\ncomp et\nsole te\nund ry\nĠover lap\n}` ,Ċ\n. ly\n_sum mary\nĠL ost\n.C enter\nĠdis ability\n.Serial ization\nĠge om\nĠ? :\nĠW o\nĠsh ipped\nĤ æķ°\nĠu gly\nĠexcit ement\nĠext erior\nĠcheck out\nĠk ur\n, D\nĠAl aska\nĠsyn thetic\nĠB udget\nĠSub scribe\nĠ& Ċ\nÈĻ i\nĠY u\nĉ query\n} .Ċ\nĠtr aged\nass en\nĠaccommod ation\nĠphys ician\nĠren amed\nĠtid ak\nz Äħ\nĠmin us\nny ch\n_EX CEPTION\nthread s\nĠt ire\n_c reated\nens ure\nĠworth y\nĠexc use\nĠclo th\n.parent Node\n/pl atform\nĠU FC\nĠG tk\nun ny\nĠg ibt\nke ley\nh um\n(t x\nĉ dev\nĠout fit\ndo ors\nĠf on\nic ut\nvol atile\nĠhom osex\nMax imum\nĠexp end\nĠ});ĊĊ Ċ\nE q\nond ers\ndep artment\nĠPhys ics\n\" });Ċ\nĠpar ad\n.S tr\nĠse le\nIF IED\nĠdel ivers\niv an\nĠrespons ibilities\nĠadvoc ates\nè µ\nĠR ID\n.param eters\nM etrics\nron ics\nĠUITableView Cell\nA bsolute\nip se\nyl um\nMLE lement\n_VAL ID\n< title\nD lg\np aces\nĠsynd rome\nbe ans\n_d atabase\noz illa\nĠM eg\nDB G\nĠl ub\nBag Constraints\nab ad\nĠproject ed\n_BY TE\n.Size F\nst reet\nĊĊĊĊ ĊĊĊĊĊĊ\nĠLO SS\nĠdirect ors\n/ news\nĠnurs ing\nĠD one\n. HTTP\ndis count\nĠR ot\nTo Many\nĠen abling\nĠauss i\nost a\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\nè½ ½\nĠhel icopt\nĠIn side\nä¿¡ æģ¯\nis per\nĠAll ah\nARCH AR\nĠroll s\nCom pare\nX P\nIndex Of\nS UM\nĠass ured\nĠPhys ical\nEnd point\n.G lobal\n.d etail\nĠthe ft\n.j upiter\nĠhum or\n.R ender\nA lex\n.c ap\nĠbuff ers\nĠdis pose\nt ion\n.p resent\nz el\n, P\nĠdesper ate\n.get Column\nĠtw in\nì ĸ\n.c an\nĠf lee\nĠIran ian\nĠstick y\nĠU TC\nL T\n//////////////////////////////// ////////////////\nĠl icensing\n_PO INT\nĠM aps\nĠl ol\n= models\n-t ab\nĠN ash\n_log ger\ntor ch\nĠCON SEQUENTIAL\nNot Empty\n/ react\nĠp f\nĠassert ion\nĠsubsequ ently\n_c an\nĠpand emic\nog ue\n\"+ Ċ\n_ ent\n_P aram\n.ĊĊ ĊĊĊĊĊĊ\nRes earch\nC apture\nĠbel oved\nd em\nĠextract ed\nĠf ights\nER C\n(a uth\nposition s\nĠrevers ed\n(st ack\nĠ_ )\nuto ff\n_fl ow\nç Ĥ¹\n( Game\nĠex cluded\nĠCS V\nc g\nĠT itan\np ause\nĠcer ca\nĠdump ster\nL ess\nĠkotlin x\naster xml\nĠpoint ers\nĠfl ows\nĠT un\nĠMain Activity\nĠdis cret\nĠcomb inations\nvis it\n_b ind\noot ing\nd ater\n_look up\n.n io\nĠswe at\nĠR d\nĠscient ist\nĠP ixel\n@ NgModule\nPlay ing\nĠunf old\nTrans late\nĠLaw rence\nĠFIX ME\nB ill\nĠR IGHT\nĠwhere ver\nĠo ok\nvid ence\nĠ] ];\nĠSk ill\nunist d\nĠðŁ ĻĤ\nĠfem ales\n-- )Ċ\nİ· åıĸ\nĠF red\nOver all\nÙ Ĥ\nĠess ence\nĠthere by\nĠw ounded\nĠD OWN\nles son\ntext ure\nR ound\nĠautom ated\nĠÐ ¡\nĠUp dates\nĠsh ade\np ublish\nĠG ear\n= lambda\nĠle ver\n) +\"\nh ill\nĠrad ar\nry ing\nĠ\" ).\nf illed\nĠline up\nĠd l\nĠworks pace\nV o\n_d t\në ²\n_ Item\nNS URL\n. verify\nĠHawai i\nG od\nM arch\nĠ[âĢ¦ ]\nĠpel o\nur ious\nĠPitt sburgh\n. It\nC lean\n> \\<^\nĠi os\ns ound\n\"] ;\nĠfre ed\nrot tle\nĠL ower\n[ count\nå Ŀ\nĠp ale\nĠWay ne\near th\n_c ategories\nU CK\n.m etadata\nĠsum mon\nH OME\nÐ¾Ð»ÑĮ Ð·\nĠmanufact ured\nĠdo ck\nĠcompet itors\n_MODE L\nok ia\nĠH ey\nÎ ¿\nĠback ward\nĠPO SS\nrop a\nĠc ri\n_O BJ\nTrans port\n-h igh\nĠerot ik\n_s lot\nĠart ic\n_f ramework\n-ser if\nĠSql DbType\n') (\n+ \"/\nĠw ore\nS il\nĠst oring\nĠPh ase\nu ant\nĠb ump\nin ho\nĠd ign\nĠback s\nq q\n(h ash\nĠge o\nĠt ender\nLog o\n! )Ċ\nĠM X\nĠAr thur\nesso a\n_C h\nĠbed rooms\n=\"# \"><\nĠth roat\nins ic\n.int eger\nĠpr imitive\nTruth y\nĠfacilit ate\nĠcreat ivity\nĠD NS\nĠg ra\nue z\nĠcount less\nĠPol and\n' M\nĠD ist\nĠv est\nĠcert ification\ná» ĳ\nh eld\next ensions\n( static\nĠgr ades\nĠU ber\nãģ Ł\nĠ[ ])Ċ\ndat os\nĠget Data\nĠCh arg\nĠB S\n.m icrosoft\n.v ideo\n.d irection\n->{ '\nl ua\nape st\nĠbo iler\nere k\nĠdec ides\n.j ar\nIS C\nĠW ords\n(C ON\nEMPL ATE\nree ze\nsh ots\napp s\nunt ed\n.set Name\n:: <\n-b old\nê ²\nå¯ Ĩ\nLong rightarrow\nĠunf air\nĠear ning\nĠsh elf\nURE MENT\nĠid le\n_M ENU\n.C ustom\nAG ER\n- \"\n_s witch\nb ecause\n) view\nm are\n_ condition\nĠStart ing\nM vc\n(p re\nd ump\n_LO CK\nat etime\n.c allback\nĠC er\nop ol\nib rary\nĠres ervation\nĉĉĉĉĉĉĉ Ċ\nlect or\ngrad uate\nĠgener ous\nĠ ion\nric ao\nm q\n_com plete\n(c ursor\nĠForm Control\n: center\nĠsub stitute\nĠPl anning\nĠp ension\nĠrecommend ation\nĠT ags\nĠg ef\nĠalbum s\nĠwash ing\nro c\nĠtr ains\nat ings\nĠex ponent\nack bar\n- ln\nÃ¡ g\n.Data Annotations\nĠE IF\nĠMalays ia\nĉ PORT\non us\nĠcle ver\nĠpe u\n> ĊĊĊĊ\nĠArg uments\nĠdebug ging\n( right\n' D\ncom pute\nĠfin est\nOR AGE\nĠspect acular\nph rase\nĠind ia\nĠlegend ary\nb irth\nĠcom posite\nĠg rows\nĠT D\nĠep id\nĠlaunch ing\n] ][\nMin utes\nĠCh a\nĠclean ed\nĠwitness es\nuk an\nĉ Type\nĠhab e\npar agraph\nĠJ Panel\nĠH ann\nĠvar ied\nĠP okemon\nĠM UST\nåĬ ¨\n.vis ibility\nop up\n^ [\n.exp and\nĠ\" ',\n.f asterxml\n_ auto\nĠShe et\nmark er\nPar cel\new s\nĠStr ategy\n-m aking\nĠun ve\nĠtrail ing\nĠclick s\nĠGet Component\nĉ content\nIG ENCE\nERN EL\nNSMutable Array\nĠb reat\nĠharm ful\n¶ Ī\nĠbes ides\nĠb oring\nĠbrut al\nv ang\n(p arse\nqu ick\nĠpy test\nĠswitch ing\n() ]Ċ\nĠì Ħ\nL ER\nĉf ont\nĠnet t\n) ]ĊĊ\n(/ \\\næŀ ľ\nto Array\nĠbre ed\nĠC AR\nĠWe apon\nA bs\nt ot\nĠset Name\napt ive\nĠ: ,\nĠesc aped\nord en\nĠP ri\nth umbnail\nĠdescri ptions\n/ styles\nĠPC I\nĠal phabet\nastic search\nNOT E\nĠc ialis\nĠGr iff\nĠpor que\nĠprote ins\npl ays\nĠst ating\nĠimag ination\nĠfac ial\nĠMe chan\nĠarr anged\n_ used\nĠarrang ements\nĠP ipe\nhost name\nĠprov inc\nT it\n.Flat Style\nĠS plit\nĠLo ader\n.c c\nĠclin ic\n---------------- ------------\nĠb aking\nĠEN T\nne ath\nãĢģ ĊĊ\nAN E\n.EntityFramework Core\napp ers\n. ic\nĠNg Module\nĠF ORM\nĠ' ;\n-pro fit\nh w\nen emy\nĠE ye\nĠca ution\nt own\nĠur ged\nĠJim my\nynchron ous\n-s ized\nm aking\n, {\n] ',\n_ Object\nah oma\nĠactiv ist\nIN VAL\nĠCom mercial\nĠOr lando\n(t ab\nĠØ ¨\nAl gorithm\nĠher itage\nGet Mapping\nĠfail ures\nri os\nat iva\nĠt et\nĠcar pet\n( Z\nth ree\nĠdisc losure\n. ERROR\n_c alled\nĠd ial\nĠoccas ional\n.E rr\nĠfunc ion\ncaff old\nĠrele asing\nï¼ī ĊĊ\n_ Value\nĠV ari\ny ellow\nĠstrugg les\n.c al\nĠDak ota\nĉc lose\nĠsand wich\nĠanaly tics\nĠ** )\n& #\nĠJ os\nĠpass ive\nAT TR\nTh rowable\nĠM un\nĠU int\n(dis posing\nar ak\nĠLe aders\nĠaffect ing\nĠitem View\nĠeconom ics\nf v\nà¹ Ģ\n.r b\nĠOver all\nĠwealth y\nĠev olved\nnd a\nĠH us\nre strict\num en\nĠA gricult\n! ĊĊĊ\nĠexp ires\nĠspokes person\nint erval\nĠÃ ¢\nĠque en\n(n il\ning o\nHe ap\nÙ İ\nĠcompl ain\nS ym\nĠCl one\nĠR u\nĠW ILL\nĠCr ystal\n/ content\ning en\noint ment\nLast Name\nav icon\nĠIB M\nĠDim ension\nan h\nicip ants\nĠAn ne\n.pro gress\nĠal go\nob il\nĠV oice\nĠF E\nĠg li\nĠv ed\nĠprevent s\n\\ Column\nĠfol k\nett i\nĠm n\nĠCL ASS\nĠdisplay ing\nĠK l\nĠF err\nd uto\n. ib\nĠd ados\n' name\n-s pace\nĠit alian\nĠin verse\nĠd ense\nut er\nĠI Enumerator\n-s ign\nĠnation wide\nĠperson a\nĠsol ved\nĠdram atically\nLog out\nĠgr av\nĠanalys es\nol lo\nĠl amp\n. team\nĠE rot\n= [\"\nĠd ancing\nĠ?> /\nĠc ater\nff e\nĠSh a\nĠB os\nĠRE QUIRE\nĠMon ster\nĠR B\nĠI DE\nĠsu its\nĠform Data\n( theta\nĠsp atial\n= NULL\nĠSql Connection\nĠ à\nĠV enez\nĠMor ning\nĠpublic ations\nĠNON INFRINGEMENT\nfirst Name\nud s\nW ould\n_HE AD\nĠinvest ed\nst able\nf red\nĠcommand er\nSE S\nâĢĶ a\nan che\nĠM ovement\në ³\nS uite\nĠjur isdiction\në¦ ¬\nĠB eth\nj Query\nĠIs a\nĠd ental\n, *\nĠL imit\nili ation\n=\" {\nb ast\nĠt urb\nis y\nO OK\nĠadvoc ate\nim ag\nLE CTION\nÐ» ÑĮ\n(c ategory\n.de c\nĠun iqu\n_s n\nĠattract ed\nĠÃ ī\nĠRun ning\n_ edges\nĠDis able\n_A S\nåĽ ¾\nĠnetwork ing\n_br anch\nH aving\ntoBe Truthy\nG I\nĠcamp s\nse p\n-p art\nĠ)ĊĊ ĊĊĊĊĊĊ\nustral ia\nĠRe ports\nrit o\nĠwa ist\n_pl us\nĠW W\n-p erson\nApr il\nĠs ar\n.t ar\nĠagricult ural\nt ic\nĠt cp\nĠset Value\nagent o\nĠAp pe\np iler\nCA DE\nĠan che\natch er\nĠcom ics\nĠl bs\n_se gment\n'] =$\nitt ers\nich er\nG INE\nĠutil ize\nĠC ursor\n_ex pression\nĠd ag\n< long\nĠr hyth\næı Ĳ\nĠconsult ation\nY et\n\")) ĊĊ\n_M AC\nc ould\nĠ' \\\\\nĠV o\nĉ http\nĠg s\nph er\n- grid\nJ ames\nJ ul\nĠsch on\nĠtensor flow\nĠLOG GER\nam as\nĠsc ipy\nĠconv iction\n. ag\nĠadministr ator\n)) {čĊ\nĠn un\n\" group\nP or\nĠnur se\nex pression\nak y\nĠHe avy\n. opt\n.get All\nĠover l\n/ \",\n_c ountry\nç İ\nĠG ENER\n_r oute\nĠD al\nÂ ´\nol oad\nĠuncomfort able\n(m enu\nĠhost name\n' \");Ċ\nĠcalcul ations\n-c lick\nĠprotect ive\nãĤ ¯\n_F orm\nung s\nAct ual\nm f\nĠProcess ing\nĠIn ventory\n(m atrix\napp ropriate\nw eg\nij a\nĠch r\nĠr ifle\n-w sj\nk ar\nĠindepend ently\nI OS\nĠconsist ency\nv n\n/s ystem\nĠCh anges\nĠexp ose\nici ents\nĠrel ate\nĉ next\nè ¨\nud es\nĠglass es\nF XML\n.... ..\nĠP df\nĠappro ve\nĠ{ \\\nĠexist e\n)) (\nARE NT\nÐ¾Ð ¿\nĠL atest\nĠNiger ia\n.Inter faces\nĠrem oves\nEn emy\nĠen force\nvert s\nĉ pos\n_text ure\nW ARD\nĠINC IDENT\n( container\nĠdef ending\nĠR X\nĠH ook\nbr is\nĠFl ask\nGr ay\n. )Ċ\nvis ibility\nĠRedirectTo Action\nerr al\n_e lem\nĠres on\nfront end\n_variable s\nater ia\nĠ+ \"\nave led\nRI X\nĠdef icit\n_C heck\nYY YY\nTo One\nsp y\nĠun ited\nend ent\nĠp ode\nãģ Į\nC AT\n(f mt\nĠBon us\nĠre ck\nÂ º\nMod ules\nĠvac uum\nR adio\nĠDAM AGE\nP en\nĠPark er\n; ;Ċ\nĠRe ally\n_n eg\np ending\nĠnomine e\nĠC ategories\nĠUl tra\nWe apon\nĠdef ender\nI ss\nĠG ender\nĠD ress\nĠimpr ison\nĠbank rupt\nimension al\nPH A\nĠStr ateg\nĠPROF ITS\nĠp atri\n//////////////////////////////////////////////////////////////// ////////////////\nde legate\nĠfor State\nĠdev oted\n_m ake\nĠterror ists\nĠS nap\n_n av\nĠA A\nĠI an\nĉ app\nPl acement\n_h dr\n< K\nĠs ang\nst roke\n- Q\n><? =\n-m odel\nav ana\nĠW ang\nĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nĉ init\nĠentreprene ur\nat ivo\nL ove\n- over\nW ater\nĠmod s\ng ence\nTe chn\n> x\n.T ask\nm oney\nib aba\n' });Ċ\nĠSpec ific\nĠLine ar\n_O PT\nHash Code\n( Player\n.Contains Key\nĠcoll apsed\ntrans parent\n_R ANGE\nView er\n(c fg\nĠsort ing\nĠinf ected\nĠN ach\nĠaccommod ate\n.element s\n_P ART\nĠSex y\n= get\n( year\nĠx hr\n: ]\nows ki\nĠsum mar\nĠÂ ¿\nĠint e\nĠwork flow\nĠTai wan\nvers ions\nåı ĳ\nĠsurprising ly\nĠopt ical\nĠpro ces\nĠdisag ree\nĠnue vo\nĠC AM\nsort ed\nle ases\nist le\nId ent\nĉ event\nject ed\nCh unk\nV ars\n.pro vider\nĠproceed ings\nĠin clusive\nĠart work\nend ants\nï¼ļ Ċ\nse en\nĠl ig\nĠm akers\n_f un\nĠlength s\nPath Variable\n[ item\nà¸ µ\nDe ad\nFFFF FF\nĠUr ban\nup les\nich en\n(null ptr\n.s pec\n, System\nUR ATION\n(j ob\nå¼ ı\nĠtrack er\nÅ Ļ\nĠM R\nĠSQL ite\nĠd to\nĠ; ;Ċ\nĠm int\nĠInt roduction\nca o\nĠquestion ed\nĠf itted\nrev ision\ns q\nĠm ig\n_un its\n_ async\nĠf lick\n});ĊĊ Ċ\nĠnot re\n}` ,\nF ilters\nĠm undo\n_d ays\nĠfr m\nut c\nĠval s\new idth\nĠGener ator\nĠArt ist\nĠID s\nĠArt icles\nre ater\nĠComponent Fixture\n. =\nĠr ou\n- no\n.b ukkit\neg g\nĠD iff\natic s\nÑĥ Ñĩ\nâĢĶ ĊĊ\nĠChar lotte\nby e\nĠ} );čĊčĊ\nĠV ik\nĠB row\nĠl v\nĠG ib\n-w ing\nGL IGENCE\n(I l\nĠEngine er\n.W ait\nĠP ictures\nĠr het\nĠth ermal\nĠpr aise\n< >();ĊĊ\nĠSp ider\nP ause\nĠB aker\nĠsl ower\nĠ} ]Ċ\n_en queue\nĠdisappe ared\nĠT icket\nIN UX\n_LOC AL\nÐ°Ñģ Ñģ\n@Inject able\ncomm unity\nGesture Recognizer\nåĽ ½\nĠsca les\nĠ- (\n/ '+\nĠS it\nĠexecut ives\nard ing\nĠad vers\nĠback wards\nĉ context\nĠH amp\nĠP F\nĠDe ck\nĠCra ig\nA merican\nĠb ell\nĠpro l\nuf en\nĠr ng\nar shal\nĠSim ply\nfirst name\nsh ore\nJ uly\nĠmort ality\nĠâĨĴ ĊĊ\nHelp ers\nĠbench mark\nem ade\nĠorganis ations\n.g son\nĠText Field\nĠciv ilians\n.Array s\nĠMiss issippi\nĠinter mediate\nget User\n_cl uster\nRel ative\nfore ign\n.querySelector All\nFore ignKey\nĠreason ably\n-------- -Ċ\nC ards\nĠK am\nĠTh or\nĠroll er\n-e lement\nĠC urrency\ndd ie\nALL Y\nĠR A\nĠper met\naa aa\nĠhom ework\nĠV it\nĠm old\nĠF er\n[ start\nĠstatist ical\nĠsc ary\n_H OME\n.B egin\nCon struct\nogen ic\nĠDEAL INGS\nĠtamb iÃ©n\nix on\n. ind\nac re\nĠtransform s\nĠN ap\n.B lock\nuss ia\npir ation\nul ent\nĠce il\nCl ause\nna ire\nT ES\nĠne at\nST D\nĠReg Exp\nper form\n: )\nĠun ions\nĠs ublic\nĠw inds\nlo ating\ng lich\nĠp agination\nS kill\nApp ly\nĠOper ator\nist ogram\nĠqual ities\nC ross\nĠde com\n], \"\nĠJ uan\n.mod al\n.Ch ild\nĠRog er\nSTIT UTE\n:CGRect Make\na lette\nĠst a\nas ide\nĠbl ur\nĠW a\nif etime\nre ed\ncontrol s\nĠb ins\nĠÐ¿ Ð¾Ð»\n*/ ,Ċ\nU IS\nĠR ou\nĠDem o\n- awesome\nĠCh ain\nĠh asta\nĠB art\n. KEY\nĠvend ors\nnof ollow\nĠD est\n_b uilder\nĠarg ues\n_ answer\ng oto\nĠRES ULT\nĠM ON\nĠp oder\no ons\n_C ASE\nĠrep lic\nĠfin ancing\nĠD ATE\nc ern\n_tr ack\nt ies\n/ logo\nĠNE GLIGENCE\nget Type\n> T\nb et\ng irl\nĠINCIDENT AL\n-s ite\n.tr igger\nĠL isa\n_input s\nĠrel atives\nLogged In\nConfig ure\nI K\n. accept\nRes ume\nĠD raft\nĠ* >(\nĠW A\ned ian\nern ess\nĠLayout Inflater\n*/ čĊčĊ\noth y\nĠoblig ation\nSub scribe\nĠth umbnail\nex ist\nĠins isted\nĠU ICollectionView\nĠAng ular\nĠtable ts\nĠImp act\nãĢį ĊĊ\nah o\nĠcharacter istic\ng d\nĠ= ================================================\nour t\n` .\nApp ro\nCo ordinate\nRem ember\nĠmar ine\n] =='\nĠAdmin istrator\n.get Default\nĠforg ot\nĠStruct ure\nV ue\nars ing\nm oment\nk w\n_c ursor\nAtt ack\nĠath letic\nĠdiagn osed\nĠend e\nåĪ łéĻ¤\nH ouse\nĠP ARAM\nĠw iki\nĠO pp\nĠcons ervation\nĠs nd\n_t em\nsub str\nĠC ape\n.s im\nUT ION\nan an\nâĢĻ un\nĠg y\n- work\nĠcomp elling\n=' #\nĉs ub\nĠdirect ories\níĬ ¸\nĠtouch es\nout ines\n.C ollection\ns chedule\n.l at\nĠDo ctrine\nCA A\nĠRe fer\nĠshift s\nĠlik elihood\npre ter\nĠF emale\nĠinter cept\nĠl ou\nçĻ »\nĠr ug\nĠC rown\nĠ************************************************************************ ****\n- product\nĠprompt ed\nung le\nd ocker\nĠT u\nĠUn ique\n_ Error\nul os\nĠâ Ħ\nĠ( `\nGet ting\n_s cal\nĠEn h\nÃ¼ t\nĠsust ained\nĠp atches\nĠpros per\nĠG aza\n_l ight\nĠin cons\n-------- Ċ\nĉĉ ĠĠĠĠĠĠ\nS F\nC N\n: \";Ċ\nĠColl ins\n( *)\nĠcomp ilation\n'] čĊ\nĠcon sequence\n, ...\nĠd m\nĠB LOCK\nCl uster\nĠsk i\n(arg c\nT uple\nĠjo ins\nĠSher iff\nW ar\nind i\nĠcomment ed\nH OST\nĠinv itation\napan ese\nĠperm its\npreced ented\n_z one\nĠA my\n_R D\nMin imum\nĠinv ocation\n.en able\nicht en\n- owned\n\" id\n_PO INTER\nF ac\nĠspecific ations\nĠnom ination\nĠg p\n< (\nĠrob ots\nĠJ erry\nĠhold ers\nĠw and\nc ms\nĠ} ))Ċ\n.To ast\nĠI List\nB ased\nz oom\n/ style\nĠBe ck\nM en\nĠcontrib uting\nĠund o\nĠO H\nĠadd Object\nĠe igen\nsign up\néĶ Ļ\nĠdist ant\nPAR ATOR\nĠM ari\nĠm Ã¡\nE mp\nÃ³ s\nĠì Īĺ\nev t\n+ j\np ark\nĠSt ay\nĠD un\nĠso y\n> %\naz ines\nĠti empo\n(m e\np resent\n.Th is\nĠedit ors\nF IELD\n.W ork\nĠUn iverse\nĠdr unk\n.t imer\nĠalter ed\nĠN ar\nëł ¥\n.Act ive\nid or\nç Ń\n.delta Time\nĠawk ward\n& quot\nĠSaf ari\nĠtr icks\nMENT S\ndiv ision\nĠvary ing\nĠHigh way\nĠphotograph er\nĠSt ewart\nĠlast ing\n.P re\n.amazon aws\nĠL uck\n.D escription\nĠN az\nn eg\nĠc Ã³\n<<\" \\\nĠSur v\nĠU nc\nRec ipe\n.Border Style\nĠmod ifications\n- at\nAT FORM\nh dr\nak o\nĠsublic ense\nĠJ ump\nĠbe im\nĠMan hattan\n. bool\n_h w\nÑĤ ÑĮ\nB in\nĠg ateway\n\" \":\nĠU IS\n:\" +\n- def\nĠReg ular\n/ testing\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nstring stream\nĠdis par\nĠmob il\n- read\nĠAd apter\nĠCh ampions\nĠsched uler\nĠk ills\nĠM ultiple\nir ror\nĠgod s\nAD O\nak te\nĠUs uario\n.c ircular\nĠre cept\nĠEx pr\nĠelder ly\nĠnic ely\nĠbest e\nW ant\nĠclass ical\n.s prite\nobj c\nĠM ason\nĠsist ema\n.Bl ack\nes o\nĠZe it\nĠdiv id\nĠent ers\n_sub ject\nĠPlan et\n.w arning\nĠG ram\n_t okens\nĠhousehold s\n_c ustomer\nuser Name\nc ross\nĠp ione\nĠass ists\n_S M\nib o\nĠlo yal\nĠuse less\n# elif\nĠUlt imate\nC ome\ng el\nĠd ich\nxy z\nik el\nob ra\n_s can\nĠInter ior\nĠN ice\nĠpl ac\nĉt arget\nĠvir al\nass o\n() /\nund e\nĠAd obe\nO s\nvis ited\nĠO W\nĠFe ed\nĠSe quence\nĠman ages\nin son\nĠLouis iana\n{ })\nĠH ab\nĠL D\nĠb ip\npr ites\n(e lem\n.h ibernate\nÃ©l Ã©\nĠoh ne\n_trans action\nĠann unci\nP ublished\nĠH onda\nĠT am\nĠP acket\n_ selector\nĠchalleng ed\nProcess ing\n-h over\nĠtr ainer\n_c ancel\nĠNS Dictionary\nab ric\nĠM LS\n_s ensor\nĠshr ink\nĠF X\nth reshold\nĉH X\n-m ark\n` .`\nS cheme\n(f ull\n_w riter\nĠS ys\nĠf led\nĠC in\n-w idget\nĠPre vious\nG ender\n_ question\nFe ed\nĠscr ut\n(p refix\nãĢĤ ãĢĤ\nĠin fections\nPart s\nĠhier archy\n_DE LETE\nĠPat ient\n_p ay\nĠprom oted\nĠì ĭ\nĠcivil ian\nĠagricult ure\nĠP iece\nĠst ance\nuts che\nAss ign\n.A CTION\nF ig\n_r adius\nĠS ync\ndu cer\nf ailure\nens ed\npt ime\nB M\n_dat etime\nqu ivo\nQUE UE\nèĢ ħ\nAp pear\nĠsum mit\n: void\nĠv ine\nè® ¤\non ne\n_TR ANS\n.g reen\n_ cc\nĠhung ry\nĠ\" >\n() );čĊčĊ\nEx tract\niz ens\nĠsol ver\nNot ify\nĠeng lish\nĠSh opping\ninter faces\nRE Q\nĠil leg\nĠUI ImageView\nĠdis connect\nĠUnt il\nĠConserv ative\n@ Column\nĠshift ed\nĠ: čĊ\nĠf ich\nĠd la\nĠsh oe\n\"), čĊ\nular ity\n_RE SP\nWe ather\nUI Application\n. iterator\nĠag ing\n.P arent\now ie\n(e qual\nĠCon v\n/ default\nĠmeas uring\n.pre v\n.Is Valid\n.F at\nĠs Äĥ\nkey words\nwith out\nĠso vere\nĠex changes\nĠm elt\nĠis lands\nĠInt egr\nĠjump ing\nĠg le\nĠjournal ism\nĠd ated\nLocal ized\nĠRef resh\nPart icle\nĠa a\nĠSTR ICT\nĠb od\n.Pro cess\n_A UTO\nĠP ublished\ne very\nĠtechn ological\nls x\nĠir rit\nAdd itional\nĠdel imiter\n_l anguage\n- area\nbo ys\nĠT ube\nĠw at\nĠmechan ics\n_ owner\nSp ell\nĠSt ories\n.Append Line\nTable View\nh em\nst ick\noll ower\nI FF\nĠU V\noll ision\nS UB\nĠcompar able\nĠdon de\ns ales\nll vm\nĠ} ],Ċ\nOTT OM\nĠPur pose\nL ab\nĠinterview ed\no is\nas il\n.set Id\nĠIn struction\n-- >\nĠMod ified\nation ally\nĠMe eting\nè¯ ¯\n# region\nĠrout ing\n.f ocus\nĠYou th\n< D\nĠN ag\ncontact s\nĠform ing\nĠm ie\n',[' ../\nĠB P\nĠapp et\nĠTe acher\nĠT P\nĠann ually\nouted EventArgs\nĠSpe aker\nĠre name\nCF G\n(\" //\næİ ¥\n/p ages\nĠpr Ã©s\nĠSp ell\n.All ow\nĠINT ERRU\nĠ( #\nâĢĻ ĊĊ\n_G eneric\n.im show\n_t im\n- face\n(& (\natin um\nĠrevolution ary\nĠH ours\nr ain\nĠany time\nĠab b\n.j sp\nScroll View\nĠTr uth\nĠanticip ated\nĠacc ent\n. checked\nĠspec ifies\nĠca f\nĠcell padding\nĠcook ed\nĠH ugh\npe ek\n_R ATE\nĠd orm\n/ čĊ\nIV ITY\n.Cont roller\n(p art\n.con straint\nĠinv asion\nMO VE\nĠgl uc\nl ename\nĠam en\neng lish\nĠSw itzerland\n\";ĊĊ Ċ\npe st\n.col lect\nN ib\nĠD ict\nĠE mb\n(sub ject\nĠoutr age\nĠdec iding\nĠsent enced\nF echa\n\" A\nĠqu er\nĠfont Family\nĠqu adr\n- Y\n_C ACHE\nĠanaly zed\nĠg aining\nĠAgain st\nĠSou l\nta u\nĠlight weight\nĠT F\nĠEffect s\n.T ypes\n.add Class\nĠv egan\né ģ\n.' \"\nĠExpl orer\n.d etect\n.sh ift\nĠoblig ations\nlast Name\nĠassoci ations\nĠTime Span\nun ter\nĠF resh\nCompat ible\nP ub\nid ges\n. option\nvar i\n.hash Code\nĠg eb\n. section\n- not\nĠSub mit\nT N\nreg istry\n_m edia\nĠn aj\nff t\nĠm ate\n-th ird\nĠp ockets\nest a\nĠb ent\nĠN ord\nĠretail ers\nĠMor ris\n.\"\" \"ĊĊ\nW rong\nĠ ÅĽ\nR ay\n. ec\nĠB ind\n_H AND\n(n on\nis Valid\nĠsimilar ly\n_L IMIT\nĠdynam ics\nĠdist inction\nãģ Ĩ\n< N\nĠor th\nĠToy ota\nĠK ate\nĠL S\nor ie\nĠSpr ings\nĠf reak\nlast name\n_M ULT\n-st ep\n\" (\nAD DR\nĠentert aining\n_CON F\nĠdec oded\nĠst reak\nĠwait ed\nĠnot ified\nrodu ced\nvis ual\n.Layout Params\næ °\nes ian\nf its\ns pring\nĠBern ie\nUser Defaults\nĠped est\nAp pearance\nĠW iki\nĠNOT ICE\nĠs sh\nĠdur ante\nĠZ ip\nÄ± r\nĠNAT O\nĠtw elve\nĠro yal\nï ¸\nĠmer chant\nĠF urniture\n'] ),Ċ\n, X\nĠfold ers\nĠG ate\nĉf unc\np ick\n_us uario\nĠV erm\nment ion\nur pose\nĠalert s\nx ious\n_s ig\nĠF u\nĠ( :\nĠd umb\nåħ ³\nĠaccur ately\néĩ į\nR B\n-s creen\nĠV ER\nj our\nĠrom ance\nuc ceed\n. choice\nĠad ip\n_d ims\nSerial izable\nãĤ ĭ\n.j ob\nĠpro g\nuch ar\nĠg ently\nĠR SS\nict ured\n_ENABLE D\nĉ label\naw ks\nĠEn sure\nrem ember\nìł ķ\nĠtrans mit\n{{ $\n.Trans action\nur se\n_rel ative\nĠs ized\nĠX X\nĠPr incess\nĠL arry\nĠpr Ã³\nĠÑģÑĤ ÑĢ\nĠs isters\nestr uct\nĠcheck point\n: length\nĠCar los\n/ icon\n_T ARGET\nT okens\nĠpat ience\nĠSe lected\nq ty\n.show Message\nĠwild life\nĠP rops\nb m\n- arrow\nĠpar cel\nfire base\nĠBen jamin\ncess o\n.t im\nĠG arc\n. any\nĠHOW EVER\nĠK o\nĠgrab bed\n_f rames\nĠobject AtIndex\nĠADV ISED\nĠsub ur\nĉ GL\nĠ}) }Ċ\n-l ength\nìĭ ľ\nĠPot ter\n_b uff\n.g ui\nĠEnc oding\nE lect\n-m essage\nĠ ï¿½\nĠ ÈĻi\nĠArgument NullException\nÐ° ÑĨÐ¸\nĠmin imize\nĠrespond ing\n$_ ['\nĠInd ividual\nÃ¡ c\nĠIN TER\nĠmast urb\nĠB in\n(' $\nëĵ ľ\nĠopen ly\nĠ> <\nĠun to\nolog ically\nĠM ul\nVID IA\nĠsl im\nĠCommission er\n( on\nĠunder neath\n/ db\nv ote\n( Message\nĠP ope\nDef ined\nĠsw ift\nur f\nĠadapt ed\nSE L\nĠreven ues\nĠdiv ine\n= y\nGrad ient\n_ act\nĠ/*! <\nĠpoly gon\nĠF DA\nĠC arr\nat ables\n(std out\nĠrefr iger\nĠco ordin\navor ites\nÑĪ Ð¸\nĠcompass ion\nĠPOSS IBILITY\n- secondary\nur acy\nĠcomp romise\n_A V\n_ os\nĠbes ide\nĥ Ŀ\nĠl n\n.pl ugins\nCap acity\nal ah\n.b in\nĠC RC\n_b alance\nĠflex Direction\nĠam bit\nĠnick name\nĠFor ces\nC LE\nĠSh ell\nĠs ail\nĠW riter\nĠA lice\nd w\nĠInd ians\nĠMar shall\n_S RC\nĠnormal ized\nĠJ ag\nãĤ Ĵ\nze it\nr pc\nÃŃ c\n.in line\nĠtrav ers\n_n umeric\nĠutil ities\nĠev ac\nIN PUT\nĉ register\nM X\nĠCamp bell\nĠdatas ets\nĠdem anded\nĠinitial State\ng an\nĠe i\nUn expected\n- web\ntr ait\n, Y\nĠT odd\nĠske leton\nĠoptim ize\nç¬ ¬\nĠU pon\nĠSt Object\nĠap lic\n.' </\nAC C\nal ous\nĠhash Code\nĠB ib\nIN AL\nĠinv isible\nĠh eter\nĠsa fer\n} //\n. theme\n.navigation Controller\n_m esh\nsk ill\nĠVi ol\nÂ ²\nĠE OF\nĠK i\nym metric\nĠmax length\nÅ £\nf riends\nĠEv ans\nĠle mon\nĠ( .\nSl ide\nĠTh ailand\nĠC ann\nĠam end\nĠc ir\nĠsil ly\nes imal\n_p ic\nprocess or\nJava Script\nĠevid ent\n_d i\n> P\nv ron\n. UN\nĠpaint er\nizar re\nĠl av\nĠp om\np reg\n= function\n( serial\nific a\num ing\nåľ °\nãģ Ĥ\n- op\nU CH\nĠH end\n.prop Types\nĠy o\nĠrout ines\nĠcar ing\nS em\nĠres erves\nĠprior ities\nred its\nIST R\nContent Type\nĠSch w\n/ media\nĠe str\nĠclim bing\n- week\ncher che\ns ensor\nTo Array\nĠMont real\nĠcloud s\nĠInject able\nĠR ice\nĠpropag anda\n_pro vider\nĠind oor\nĠin aug\nĠdipl om\nĠmess aging\n_m ut\nå ¦Ĥ\nĠk w\nON S\nari ans\nR PC\n) ]čĊ\n-r ay\nĠS or\nm all\nĠmarket place\nĠv tk\nM a\nog an\nig i\nĠspons ored\nĠD ani\n.S EVER\n>' .$\nm ultipart\nĠW ol\nĠtable Name\nĠUser name\nBackground Color\nĠf right\n_E MAIL\nSept ember\n_val s\nop ia\nĠsp otted\n- Ch\nĠdata Source\n/ \"Ċ\nÐµÐº ÑĤ\nĠRequest Method\nĠRe place\n-d o\nah n\nĠPh D\n] .ĊĊ\nN ON\ng ement\nĠTh r\nĠquiet ly\nĠtort ure\nĠte as\nĠC Y\nĠa tr\ndevelop ment\n-d etail\nĠlight er\nĠarg uing\nĠdes erves\nĠcur riculum\n_CON TEXT\nÅĤ y\nH ITE\nĉ ID\n/ uploads\nĠt its\nre o\n_d rop\n. UTF\nĠpick up\nĠgro cery\nĠP ure\nĠeas iest\nPh il\n.f eature\n(\" *\nĠinvest or\nt ok\nĠj ar\nL os\nâĢĶâĢĶâĢĶâĢĶ âĢĶâĢĶâĢĶâĢĶ\n. queue\n-s peed\nM al\num blr\nĠCON ST\nĠH RESULT\nĠD ance\n(file Path\nĠattrib uted\nà¥ į\nĠB und\nco ins\nĠs Ã£o\nĠp ir\nperson al\nĠpre lim\nĠprop ose\nĠT L\n] ])\nĠSub scription\nĠK re\n, len\n.First OrDefault\n) --\n_product s\n.Get Bytes\nSh ip\nĠenc rypt\nĠS G\nĠM yst\nh ir\nĠiter ate\nĠint end\n.mock ito\nĠch apters\n( angle\nĠV lad\nè® ¾\n' .ĊĊ\nResponse Body\nĠAb d\nde al\nĠbar riers\n-out line\nb ill\nĠF alls\n_se cond\n. include\n. ceil\nĠoccup ation\nph ony\n.move To\nĠJenn ifer\nAST ER\n; \"><\nĠEn abled\nĠtermin ate\nĠI o\nl ations\nĠTHE ORY\nĠear liest\nĠr ack\nĠSc ar\nsh ake\nch ip\nĠu v\nĠall iance\nÐ¿ Ð¸Ñģ\nĠGOOD S\nz ione\nĠV I\nĠ{ -\nĠfilter ing\nĠmis con\n.Dock Style\nĠb ush\nĠj unk\næ Į\nĠQ UE\nĠhook s\nĠfirm ware\nĠmiddle ware\nd ic\nĠOak land\nĠarr ives\nP ayload\np ixel\n] |\nĠstart Date\n.P RO\n_a udio\nĠmid field\nigid body\nĠSw iss\nĠCl ip\nĠD ump\nĠText Box\nĠg eh\ny ield\nod s\nĠrefer endum\nBack end\nĠC ream\nĠdomin ated\nĠArch ive\nĠrid ers\n.prepare Statement\nĠqu ando\nĠche f\nw iki\nin el\nam pling\n(\" \\\\\nĠs ag\n_pro xy\nãģ ķ\np do\n.getElementsBy TagName\nĠdemonstr ation\nĠN PC\nĠarch ivo\nend ance\nĠefficient ly\n( actual\n.t ableView\nĠm ush\nĠbe ars\n_thread s\nj as\nah un\nĠne ural\nĠdesign ing\nĠG DP\nĠlift ed\nçĽ ®\nĠJ oint\nĠIn clude\nĠGi ants\nĠwithdraw al\nĠR ent\nn ative\nĠSe ek\ngress ion\n_C PU\n\\ S\nĠSh ield\nĠsol ic\nĠbo om\nyect o\nĠmanufact ure\nĠâĢ ĭ\nĠb box\nĠearth qu\nollect ors\n:@\" %\nĠlo ops\nJ e\nalk ing\nĠWh ats\nĠBo ys\n. book\nARG E\n_p ixel\nĠsus pects\nÎ ¹\nus p\nĠBM W\nie ces\n(p erson\nå¼ Ģ\né »\nĠPod cast\nĠb ou\n( Item\nÃ »\n( Input\nHttp Get\nĠb urg\n) ^\nBO ARD\n*/ ,\nĠg ulp\nĠB enn\nĠdeck s\n.status Code\nĠac ute\nĠh ug\nug u\nĠp led\n,\" %\nh ape\nĠÐ· Ð°Ð¿\nĠMain e\n.re al\nĠd alam\nĠMin or\n.F loat\ndis p\nĠt l\nĠen count\n=> $\nĠf g\nte es\nĠRec omm\nÃ¤ l\nĠchem istry\nBlock s\nO ID\nĠfore x\nĠApp end\nĠ{ *\nĠSup ply\nCG Float\n(b l\nĠat e\nador a\nĠg ust\nAss oci\n> .Ċ\nF ETCH\n.s erial\nwidget s\nard less\nie fs\n_F ULL\nernet es\nĠP red\nØ Ń\näº ĭ\nub ernetes\nĠL aura\nĠl abeled\nHigh light\nĠanno ying\n/ update\n(d escription\nĠintim id\n$ c\n\")) )Ċ\n.A P\nĠ[] *\nĠEX IT\n.H ost\nĠOP EN\n.send Message\n_c amera\n_t ile\nĠth erm\nonom ous\nĠdis adv\nĠna ar\nindex Of\nĠP P\n.prot ocol\nAF E\nĠtext ures\n################################ ################\numb ai\n.st ats\nĠG E\nĠi e\nĠST D\nĠM ann\n.ref lect\nK B\nĠd ive\n.w av\n/* ----------------------------------------------------------------\n/ settings\n.l ifecycle\nĠda ughters\nor us\nub er\nN ING\nst ri\nĠT ip\nĠz n\nĠswitch ed\nin et\nuff y\nĠTransport ation\n( conf\nfr ica\nĠX L\nĠLe ad\n_per cent\n< Map\nĠthr ust\nor b\nik k\nĠtra uma\nAccess or\nĠF it\nĠString Buffer\nex pl\n(s creen\nĠaud iences\nĠO PTION\n_ round\n[ node\nbe h\n-> __\nper missions\nĠD etermine\n.M an\nĠadv ances\n. InputStream\nĠstrong est\nĠe Bay\nĠ# -\nĠdir name\nĠS MS\nĠmedic ations\nĠam ended\nĠchurch es\nĠImper ial\n$ row\nĠMad ison\nĠIn sp\nĠaff air\nĠpsych ology\nv h\nĠsever ity\nâĢ Ĳ\nĠstri ps\nA H\nvert ising\nĠcon se\nIM AGE\nĠSt ats\nĉs c\n.C ursor\nĠfree ze\nss on\n(x ml\nĠSus an\n.t ile\ned ed\nĠĠĠĠ ĉĉĉ\nuel le\nĠMitch ell\nb ased\nOper and\n½ æķ°\nĠF F\nĉstr cpy\nounc es\nild o\n.execute Query\nĠapproach ing\nĠSe ven\nĠn uts\nĠr ic\nass ignment\nĠcalcul ator\nĠMur phy\nĠB ou\ní Ħ\nĠbut t\nĠt icks\nProject s\nil ib\n.text Color\nm ov\n_log o\n( template\nĠIN IT\nĠimage View\nscri ptions\nOR ITY\nCon sumer\nĠun precedented\nĠtour ist\nĠbr on\nĠcontract or\nĠlic ence\nĠN am\næ ¯\n( transform\n_AT T\nP ref\nĠG am\nĠvess els\nĠh av\nL ater\n.To Lower\nĠurl s\nĠbreak down\nĠpen alties\nĠf oster\nĠU E\nĠcl ue\ncom ed\nåĲį ç§°\n-m ain\nĠp ts\nĠcount ed\nict s\n/ post\nĠget attr\nĠp ing\nANCE L\nĠp ec\nÑħ Ð¾Ð´\nant om\nĠBlue print\nĠEvent Emitter\nĠl Ã¤\næ ²\nĠstr aw\n( comp\n' une\n> N\n- client\nes Module\n-b ase\nĠret reat\n_s imple\nĉĉĉĉĉĉ Ġ\nfe e\n') čĊčĊ\nControl Item\nĠsubscri bers\nple ase\nĠE ff\nĠp ound\nĠBy tes\nĠTe a\n_ activity\nĠmax im\nĠop code\nB SD\n. constant\n; }\nomb res\nĠcare ers\n) .ĊĊĊĊ\nĠsp reading\n-exp anded\nĠOr d\namar in\nĠmob ility\nUn fortunately\nak k\nN L\n_ redirect\nĠP G\nĠS ensor\nb ol\nt ap\n_MEM ORY\nĠUI Alert\nplit ude\nWe bsite\nĠLog o\nlo ve\n[ ind\nĠalto gether\nĠwonder ed\nĠes per\nĠLib eral\nĠo ss\nĠel it\nĠst iff\nod ox\n_ment ions\nĠDou glas\n_p id\nĠC K\nĠinitWith Frame\n.b log\np kg\nang hai\nQUI RED\nu u\nĠm kdir\nAT AL\nĠun h\nin ces\nst h\nĠhypo thesis\nĠc ata\nĠT B\nĠCl ar\nĠpre decess\nĠsitu ated\n-w orld\n)) /\nĠhead lines\n.st at\nĠout break\nsp ath\n_FLAG S\nĠServlet Exception\nS un\nF ROM\nĠD ir\nãĥ»ãĥ» ãĥ»\n_co ord\nĠOpt im\nMon itor\n.b it\nXX X\nĠtod as\nf eld\nÑĢ Ð¸\nim ir\nĠpolit ically\nĠmolec ular\nĠtrad ed\nĠ{{ $\nĠSw edish\nĠ'@ /\n_RE AL\nĠw arehouse\nt oday\n, L\nor p\n< section\n- br\nym e\nĠUser Service\nĠlib erty\nĠmoment o\n( Image\n< size\nS ch\nĠj og\ni ology\narent ly\nĠquant um\nĠAb u\nĠr im\nĠman a\nFont Size\nBuild ing\nst airs\nAIL ABLE\nĠ& '\nĠs ect\nĠs igh\n(b atch\n.I Container\np oll\nĠCor ps\nÎ µ\nar u\nĠK ay\n.r ange\n_click ed\nĠRobert s\n.N etwork\nfin ish\n- Man\nĠcolleg es\nĠF ine\n\")) ,Ċ\nf ilm\nĠrem inded\nĠgest ure\nout il\nĠthread ing\nĠobj et\nĠt ours\nactiv ated\n.m kdir\n= user\nĠre de\nf Ã¼\n_SY STEM\np v\nĠcon gr\nĠmass asje\nĠpract ition\nUn iversity\nĠtab index\nÐ ĺ\nS ets\nĠcount ies\ng uest\nf an\nĠword en\n.d i\nÐ½Ð° Ñĩ\nÂ ¿\nig Decimal\nĠsh ore\nĠg Ã¶\nĠrep airs\nĠhelp ers\nĠcenter ed\nOL LOW\nĠmap StateToProps\nĠc ents\n< A\nĠexpect ation\nOct ober\nĠbg color\nca les\n.C ON\nĠV el\nĠcry ing\n-se ason\nĠfunction ing\n_LOC ATION\nÃ¼ ss\nber y\nPar a\nomin ator\n- le\nĠeth ical\nhas htags\nemp lo\nĠn Ãºmero\n( activity\n.St op\n.str ftime\nIL D\nĠto e\nĉ Node\n\") čĊčĊ\nĠPu erto\nĠexec uting\nĠG UID\nĠoppos ing\nal ph\nĠexhib it\n_fl ash\nĠme ille\nĠjson Object\nH ero\naint ed\n_D OM\nĠw il\nĠslo pe\nĠm Ã¥\nĠIraq i\nĠorgan ize\nĉj Query\nH UD\nsh ine\n. we\nĠSk ills\npons or\nĠcon clusions\nĠre forms\nĠrel uct\nn amed\nĠOl iver\nĠ// }Ċ\n- looking\nĠf og\nĠH O\nĠF ried\nĠinev itable\nĠData GridView\nH our\nil les\nlog ical\nĠconnect ivity\n.tw ig\nĠK yle\n(d st\n- Sh\nĠStud ios\n( Level\n.j et\n_PRO TO\n-de coration\nOT HER\nĠread ily\n.Param eter\nĠmultip ly\nĠL IB\nar med\nĠsoon er\næ Ħ\n_ ES\nĠfoss il\nĠA nc\nâĢľ This\nl odash\nPy thon\nĠhist ogram\nwest ern\nĠinf ant\nĠco ordinator\nĠn ib\n: m\nĠres pected\nĠdef init\n& T\n_p ad\nĠTr igger\nth al\nĠimage Named\nĠbeat en\nĉ rc\nĠPal ace\nĠhaz ard\nĠisol ation\n_ rc\ncont re\nOUT PUT\nĠre ign\nĠPl ate\nAT ES\nĠfl ux\nĠpack s\n.get Selected\nĠparticip ated\nĠneed le\n-de pth\n:::: ::\n-l aw\nins pace\non itor\n= no\nĠAt omic\nĠBr ain\nEdit able\n-s c\nred ential\nĠP erry\nk ie\nĠ ----------Ċ\n.st roke\n( Intent\nĠun ity\num lah\nF urther\nĠpr ze\nĠs Ã¸\nãĤ Ĭ\nĠPROC UREMENT\nĠH ousing\nĠatt orneys\nĠcomp ose\natter ing\n\" What\ndra ul\nĠstraight forward\nIn stant\n.J TextField\nĠtr ades\nÐ» Ð°\nĠ{ !\nĠl ately\nIM G\nĠA ld\nĠIN NER\nĠcart oon\n.S ource\nF ALSE\nĠd ough\nf en\n( rect\nData Table\nN ick\nĠBut ter\nread s\n_com ments\nEN V\nĠConnect icut\n-F IRST\nĉĉĉ ĠĠĠĠĠ\nach i\n.M sg\nre ction\nĠrelax ed\nĠsha ft\nĠe f\nĠAdd ing\nĠbre ach\nĠ ï¼ļ\nram a\nĠconduct ing\nĠ( ;\n(g l\nĠCA USED\nash i\nĠF LAG\nĠCom merce\nĠIN TEGER\nh ours\nĠSchool s\nĠn ucle\nAg ain\npro j\nĠsevent h\nEMPL ARY\n(m ock\n'] ,čĊ\n_S PEED\n> false\nĠsp a\nĠN ear\nì ķ\nĠintr ig\n_m embers\nw ave\nĠanalyst s\n_O S\ned in\nĠF ri\nĠretrie ved\nReg ular\n_ obs\nEX PORT\n')}} \"\n\" class\n__ ((\nb ucket\nĠst ro\nĠP atch\nyst ick\nful ness\nap os\nD a\nĉĉĉĉĉ ĠĠĠ\nĠen rich\nun ordered\nh ole\nC ong\n< Product\nĠC urt\n( the\n_l ower\nĠavoid ing\nĠbu zz\nĠv iable\nub a\n- is\nare l\nĠact ed\n-d etails\nà¸ ĩ\nĠThe ory\nĠP un\nĠAn onymous\n... \"Ċ\nÃ¨ res\nåı ¯\nĠV ision\n_se m\nash a\nĠcelebr ity\nĠend Date\nĠpop ulate\nĠcu is\nqu ant\nf loor\nĠglob ally\nĠcru ise\nĠStan ley\nĠb ikes\n.get Connection\nĠpoor ly\n_ other\namp ing\n.\" );ĊĊ\nod i\n_A DMIN\n.color s\nĠG aming\n> ';ĊĊ\nSTR UCT\nQ R\nID s\n(arg uments\n_a ux\n( Event\n_PR IVATE\nĠTre k\nĠdownload s\nm utable\n_STR UCT\n(w x\nĠdom ains\njs px\nĠVi agra\nCommand s\nJ s\n.c fg\nContent Pane\nĠEdit Text\nà¥į à¤\nAtt ach\nĠAR M\nposit ive\nĠGener ated\nĠse ized\n= :\nĠelectron ics\nĠApp Component\n/ ',Ċ\n.equals IgnoreCase\nDo ctrine\nd isk\nĠPolit ical\nCH O\n< F\nĉ height\nĠB ug\n. le\nik h\nĠmill iseconds\nĠconstit u\nm ag\n.n l\n-r ange\nang gal\n', [\nropol itan\nĠÃ ľ\nĠU C\n.d esc\n-L AST\nf stream\nib il\nĠf ier\nVER Y\nĠë ³\nIR T\n_ UI\n( abs\nĠkne es\nĠro okie\nĠV ac\nare na\ncomm end\n- \\\nĠSUB STITUTE\nSo ft\nĠpart ir\nwe alth\nè¦ ģ\n(d ataset\nĠCl imate\n- show\nĠreli ability\n_ch unk\nä» £\n_st ock\nĠEX EMPLARY\nï¸ ı\nĠv ÃŃ\nĠsm iled\nĠdr ill\n.F unction\nĠS I\nĠreg ression\n- X\nĠJ ar\np ref\nĉs uccess\nĠHit ler\nĠinst inct\nĠfem mes\nĠlo ver\n< Ċ\nĠmulti plier\nr il\nRes ize\nĠAuthor ization\nĠK an\nDispatch ToProps\nĠc rops\nt okens\nec n\nential ly\nĠINTERRU PTION\nf ake\nUnd efined\nĠA K\nĠTest Case\nĠr ab\nĠtor rent\nĠO t\nB ars\nĠlect ure\nĠen jo\nĠrespond s\nĠindex ed\nOf Work\n_ch ain\n)) ->\nĠBeaut y\nĠ` <\nĠtouch ing\nĠ| --\nĉf lag\nnormal ize\nĠtr apped\nĠestablish ing\n/b uild\nA J\nf y\n- react\nav n\nRI PTION\nĠk ut\nĠF ashion\nĠIn form\ncur ities\n< byte\nĠUkr ain\nĠs ug\nĠconsist ing\nood le\n. ctx\n.To List\nĠcomment ary\nĠtransf ers\nĠn ost\nih ad\nĠU pper\nĠconf using\nmiss ing\n- cl\nĠbound ing\nĠcongress ional\nĠreve aling\nd h\nr up\nĠt res\nre peat\n, ĊĊĊĊ\n_t ac\nĠexp ed\nG irl\nh orizontal\nĠ\"../../ ../\n( option\nĠwe iter\nĉs ql\nĠ=> {Ċ\nĠgar lic\nĠre pr\nĠrepl ies\n( prop\nĠspir its\nĠins pire\nĠbas ement\n.re ject\nĠhint s\nĠpoll ing\nĉ ĠĊ\n_r ating\nĠc ath\nav ier\nĠcomp ressed\nĠV S\n] '\nĠjud icial\nĠT rend\ntr aining\nEST AMP\nogn ition\nÄ ģ\nSE NT\nvent ions\nĠconsult ant\num ph\nĠuser Service\n, NULL\nk h\nD ear\n_B AD\nit ations\nĠmet aph\n' Ã©\nand ise\n-f ont\n.ch art\nĠs g\n_ Controller\n.j peg\nĠUL ONG\nĉg ame\n( ss\nĠM aj\nĉg o\nĠS ad\nĠB erg\nĠM ine\nP ack\nĠres istant\nĠR OM\nĠp eg\nĠStan ford\nĠY ahoo\nĠsca led\nĠl an\n= []\n\"/ ></\nĠpl ots\n.* Ċ\nĠtr aveled\nĠO scar\nV L\nĠlink ing\nĠt ires\nĠ'* '\nĠBuffer ed\ner i\nĠ ****\nĠover look\n.N on\nĠr Ã©s\nĠe gy\nå° ı\nĠattack er\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉ\n.s ync\nAS CADE\nG round\nĠdec ay\nĠT on\nĠjew elry\nĠby pass\nĠmem br\nR NA\n< System\nĠMedic are\n(n et\nos i\nH B\nDE C\n{ EIF\n_f ill\nĠtrav elling\nob server\nĠconsult ing\nRE AT\nPh ase\n(i i\nĠS UM\n> ččĊ\nĠs ud\nĉ background\nĠsch olars\n-m uted\nar Ã¡\nĠ= ====\nĠ__ __\nC reat\nene ver\n/w p\nĠV PN\nError Code\n) ],Ċ\n(b uilder\nĠEn emy\nS ensor\nus a\nĠtr iggers\nĠplayoff s\n_RE Q\nĠ( ~\nĠBar ry\nĠperman ently\nĠR UN\nĠb ure\n.Fat alf\nĠch ick\nĉ panic\nps i\nok a\néĢ ī\n> [\nĠunderstand s\nĠJun ior\nĠIN FO\n= mysqli\nust ain\n-s ource\ns erv\nĠC REATE\n. au\nĠsell s\nĠĠĊ ĠĠĊ\nE urope\nz w\npre h\nĠNS A\nĠx y\nà¸ ´\nĠB eyond\nInst ead\nNon Query\nĠar ise\nĠavoid ed\n.em place\n_model s\n} ),Ċ\nĠh id\nĠ& _\n.p oints\n.get Width\n.Ex ec\nĠ// //\nĠS essions\n... \\\nĠCol omb\nĠacceler ation\nrest ore\nĠ ile\nob ic\n< Node\nĠD X\nĠBes ides\n. age\nĠCont ains\nN ational\nĠIm plementation\nĠeff ic\nĠR M\nH y\nĠWed ding\nok ies\nĠrec ursive\nĠprosec utors\n.Se lection\nĠForm ula\nBeen Called\n[i i\nĠFr an\nĠtraged y\n_F EATURE\nĻ ¨\ncomp ass\nĠB h\n? ĊĊĊ\n.w riter\nĠH our\nDb Context\nio v\nam on\nre pr\né ĥ\nĉf i\n'] ]\nĠD ry\n. ro\nĠO bserv\næł ĩ\nForm er\nĠB alance\nĉ json\nĠpr zy\nI SS\n( sock\nĠL INE\nĠde ce\nĠal ly\nĠtend ency\nF un\nĠschem es\nĠinter ven\næĺ İ\nĠad verse\nquote lev\nĠsacr ific\n_s ide\nĠmut ex\nAG IC\nĠocc urring\nĠCommunic ation\num ar\nç¼ ĸ\nĠTreat ment\n.p erson\nĠL C\nĠe ch\n( (\"\nĠDise ase\nÃ¤ d\nĠA Z\n.A ccount\nĠcontinu ously\nEND ING\nĠRET URN\n- string\n.f ilename\nsyn thesize\nRes ponder\n( opts\nreg s\nĠn uest\nPe er\n// ------------------------------------------------\nĠg auge\nĠK in\n.s chema\nĠarr ange\nĠBl ake\n_Type Info\nC over\nĠHamp shire\nP aper\n-in ner\nutil ity\nĠcross origin\nF OR\nĠign oring\nĠD D\nav an\nĠtrad itions\nĠget String\nĠeth ics\nĠMaterial s\nDE SC\nĠen zym\nio let\nĠCh ip\nĠMc Donald\nĠn erve\nç Ħ\n\") ]\næ± Ĥ\nĠS ugar\n_S IM\nj peg\nĠdiscret ion\nĠT N\nbo ve\nĠMin imum\nĠForm Group\nĠwork force\nĠExec ution\nerr er\nĉ ĠĠĠĠĉ\nĠpres cribed\n.Text Align\nOP EN\nĠP B\nim ity\nĠEx ternal\nÂ° C\nĠApplication Controller\nĠb arr\nimp licit\n_d ot\nĠCol on\nC OLOR\n.Pro ject\n* </\n-x l\nĠo sc\n(p attern\n') }Ċ\nsuccess ful\nal og\nSt udents\n] string\nant on\natt i\nchem ical\n.in f\n(d r\n:UIControl State\nto Int\n] </\nÐ° ÐµÐ¼\nĠ Å¾\n.Action Listener\n.SEVER E\nĠSal v\n_TR AN\n/ internal\nĠwel comed\n.com ment\nmut ation\nĠFA Q\n. one\nĠL AB\n\" }}\nĠR ol\nie ved\nĠadvent ures\nĠfun eral\nĠsp ouse\n( open\nĠRead y\nĠtour ism\nad in\n_f ace\nâĤ ģ\nĠmigr ants\nĠP urchase\nc ord\nĠOUT PUT\n)) čĊčĊ\nSeg ue\nt abs\nĠd ots\nĠn ail\nbor ne\nĠdes ires\nĠprevent ed\n'] ==\nĠtim ely\nIC A\nSc anner\nĠLuc as\nĠg ithub\n'] []\nd ia\ncon omic\nĠdies er\nund ers\n. Handler\n? \",\n.d atab\nĠadv ise\n.an imation\nĠover head\nĠobst acles\n_j oin\nĠm Ã©\nFl at\n.dis pose\nĠEx pected\nĠfle w\nĠemb od\n_sl ug\nĠnam ely\nĠwitness ed\ns olid\n. legend\nQ ual\n_s urface\nãĥ ©\nAmeric a\nĠaffili ates\nĠPro s\n_ext ension\nb inding\nST ALL\n. ready\nĠcopy ing\nĠH ence\nĠdisc ord\n_s hip\nProperty Name\nĉĉ ĠĠĠĠĠĠĠĠĠĠĠ\nĠachie ving\nĠB ec\nZ ip\nS ometimes\nãģ ĭ\nĠcon tra\nĠpun ish\nĠins ulin\nĠdisap pear\n_en um\n. aut\nĠhas attr\naff ected\ns he\n$ table\nks i\nĠlack ing\nĠdiscount s\nSt mt\nĠArg entina\nĠun pack\nĠR outedEventArgs\nĠ' ?\ninter op\nĠso fa\nĠd yn\nĠGr ace\nĠinteg rate\nÙ ĥ\nĠdel ays\nĠIm plement\nPro of\nĠapplic ants\nĠLe ather\nìĸ ´\nĠenjoy able\nSp inner\n/ z\nĠfo am\nĠLabor atory\nĠresearch er\nĠChristian ity\nĠcustom ize\nĠc ipher\nĠd od\nĠs Ã³\n@ Entity\nON LY\nin ventory\nĠcon clude\nĠcu enta\nĠC ohen\n-in come\nmb H\nment ation\nĠver w\nud p\nAM L\n.com boBox\nf h\nj obs\nFile Sync\nĠBar bara\nĠSc an\ncreens hot\nĠOr th\n.view DidLoad\nĠAR RAY\n, @\n/ int\nGener ate\nĠdemonstr ates\nĠZ end\nåĪ Ĺ\nĉv olatile\n= r\nĠf m\nĉb uffer\nen ate\n.C ombine\nĠm isc\nchem as\nĠpure ly\nĠgl Vertex\n.R est\nĠrec alled\nĠfre el\nĠs que\nTr acker\nĠPh p\nĠD istance\nĠbe ast\nCom plex\nĠcons iders\nç½ ĳ\ntrib ution\nĠcompl iment\n_lin eno\nĠM utable\nĠund ef\nĠG em\nĠcomp ounds\n.u uid\nĠan onym\nĠst airs\nĠDb Set\nw ort\nĠS ens\n.B efore\nĠend foreach\nĠTo gether\nat ility\nĠmoist ure\n- ${\n( Test\nT B\nm usic\nĠins ist\nĠhead line\n.A nd\nP ATCH\nĠPre pare\nĠswitch es\n* p\nĠY e\n_ abs\n.h andler\nĠassign ments\nPre ference\nENT ITY\nĠp ipes\nĠAlert Dialog\nograph ical\nĠpat io\nĠweb pack\nb ps\nNav Link\n.N umber\nĠArm or\nĠP eters\nĠD esc\ndu ino\nĠI cons\n.get Height\nĠtext View\nĉ NULL\nalloc ate\n} ${\nĠPr ize\n- num\n.M ove\nè¾ĵ åħ¥\n.c amera\nPro blem\nĉtyp edef\n( store\nĠDISCLAIM ED\nĠsubstantial ly\nFF F\nĠeps ilon\nĠine quality\n_ children\nä¸ ĩ\nrel u\nP iece\nan try\nb abel\nvet ica\nĠsurve ys\nĠdet ector\nĉ args\n.Selected Value\nĠinter ference\n... )Ċ\n. STRING\nĠTy ler\nĠC atalog\nVert ices\nĠProject s\nĠLe ban\n.\" )ĊĊ\n.k ernel\nĠr ides\nĠM ut\nan th\nÐ¾ÑĢ Ð¼\nenn ial\n.t asks\n.set Property\nategor i\næľ Ģ\n/ con\nbr ace\nĠN SError\n'] ));Ċ\nlist ed\nĠPre view\nAct ivate\nĠc ycl\n- active\nh ad\nTo o\nĠreg ist\nlic al\nĠpo etry\nIm ports\nï¼ģ ï¼ģ\n: <\nĠchar m\nĠC oun\noll ider\nĠh w\n} `Ċ\n= args\nĠNe uro\nit ical\nien en\nĠD ot\n_ON LY\nD N\nĠPlay Station\nĠste ep\nĠpract ically\nĠapplic ant\nĠa rom\nan ic\nĉd isplay\nĠtermin ated\nĠcl arity\nĠMenu Item\nĠK ur\nij e\n_ week\n(d ict\n_rec ords\nĠCost a\nĠk et\nExt ensions\nĠneu ken\nins i\n_in c\nĠæ ĸ\nĠein f\nĠR isk\nĠelev ated\np ers\nUD A\nĠK N\nĠl ined\nĠM orm\n);ĊĊ ĊĊ\n> }Ċ\npl aint\nget Text\nĠindivid ually\nĠcheck box\nU Y\nĠL amb\nĠdys function\nĠL ar\nà °\nĠCre ating\n');ĊĊ Ċ\n\" They\nloc ations\n_C ORE\nInter action\numbn ails\nĠPart ner\nb rit\nĠless er\nĠSl ot\nset Attribute\nĠW ave\n.p o\n/ store\nĠbrows ing\n_p d\nsum e\ns ed\nCur ve\nĠpl asma\nĠsusp icious\nìĿ ¸\nĠB ah\nĠExp licit\n_C C\n.Client Size\n\\ View\nĠsub stit\nlo on\nĠG AME\nĠB rid\nĽ å»º\n_ User\nĠsqu ares\nf one\nĠsac red\nug hs\n] interface\nĠTh row\nĠK irk\nĠemp ire\nĠassess ed\nT ax\nĠHe aven\n-b uffer\n_STAT IC\nÃ©n Ã©\n-b ordered\nĠpun ct\n(m ode\nĠke ine\nS ent\nĠCal cul\nĠE ve\nĠsty lish\nĠoil s\n.Test Case\nĠtrad emark\nĠliter ary\nĠconcentr ations\nĠRel ations\n( Class\nĠstd in\nĠv Ã¦\nback up\n. VERSION\n.AutoScale Dimensions\nst arter\nTransaction al\n- panel\nSt udio\nk c\nĠCh amber\nĠSpi el\nĠr ho\nØ§ ÙĦ\n! '\n.At tributes\nĠmurder ed\napeut ic\nĠint imate\nĠtext Field\nĠBuff alo\nd ummy\n\" %\nĠLib erty\nob ar\nĠT ank\nĠPop ular\nerv isor\nĠIn iti\nĠM all\nĠP rior\nC AP\nĠCl ay\nĠCert ificate\n.L ock\n-st rip\n-dr iven\n/ all\nĠMessageBox Buttons\n_SE CRET\n_p b\nĠr ats\nà¤¾ à¤\nĠn t\n.R outer\n_top ic\nĠt ennis\nĠP UBLIC\nĠActiv atedRoute\nĠ' ,Ċ\nĠcost ume\nĠj okes\n. Handle\nĉ byte\nĠflav ors\n( cc\nĠperson as\nĉ image\nĠN azi\nĠgram mar\nĠÃº lt\nĠval ve\nĠv ic\nĠR achel\n_in valid\nP refs\nstd int\n(r oute\nĠhtml specialchars\nĠpe oples\npl ine\nĠn v\nĠQu ant\nopp ers\nĠcurrent User\nĠC atal\nĠrecon c\nĠconj unction\nl x\namb urg\nĠinflu ential\nd anger\nind ers\nĠ% @\",\n.config uration\nos ome\n. identity\nĠpick er\nn ost\nĠDI Y\nAug ust\nab lo\nLe af\nĠRec o\nck o\nDO C\nĠH erm\n: any\nĠInt erview\nĠT ex\nx fe\n( work\nĠle ap\nHe ading\nĠqu arters\n\\ Bundle\nre b\nPer haps\nĠG mbH\nB irth\nĉ sum\nĠWat son\n.n il\nç ¡\n{ }ĊĊ\nica id\nGet ter\n\" name\nĠ\" čĊ\n_n one\nz m\nac ute\nuest o\nĠs ous\nĠre build\nĠnewsp apers\nĠH az\nĠk its\nif o\nBl ur\nĠsu ited\n- In\nà ¯\nĠKe ith\nĠNor way\nIN IT\nire ccion\niet ies\n_us age\nĠDou g\nr ise\nĠtr illion\nim ited\nĠR EL\nal ic\nĠcritic ized\nthe orem\nĠce ase\nĠsid ew\nĠT erry\nĠsubs idi\nĠfirm ly\nĠaw s\nĠh ott\nĠdress ing\nbad ge\nĠApp lications\nè¿ ĶåĽŀ\nĠlaugh ed\nĠh obby\nĠmus icians\nĠ* .\n. placeholder\nĠcount ers\nĠCap itol\nSD K\nĠhel met\nand box\nqu it\nĠcriminal s\nĠteen ager\n( update\nG l\n.se lection\nĠdis charge\nĠpresent ing\nufact urer\n_UN KNOWN\nĠstress ed\nå Ļ¨\nPro to\n_cor rect\nha us\nĠren ov\nĠfire arms\nĠtechn ically\n-b rowser\nĠc andy\nSt roke\nĠexec utor\nĠocc urrence\nĠIP v\n_INTER FACE\nĠRetrie ve\n.b ad\nEx change\nNav bar\nĠK id\n(get ApplicationContext\n_ST OP\nĠB oss\nList eners\nĠshoot er\nĠAl b\nÃ¤ ch\nĠp ix\n.key Code\nal one\nĠabs urd\nĠC um\nĠNewton soft\nik t\nĠlaugh ing\nĠcapital ism\nree Node\nT x\n_QU ERY\n.S leep\n( login\nWeb Element\nĠcelebr ating\nĠde precated\nĠma ar\nĠart istic\n_ASS OC\nĠBorder Radius\nĉw p\nĠsurviv ors\nIn ner\n- red\nĠprosec ution\n_ pp\n(\" </\nĠ^ =\nĠl am\nĠTr ading\nfl are\nDet ector\nM F\nĠEmer gency\nĠEag les\nqu ad\nĠIn cre\npl iance\n\\M igration\nĠup grades\nC PU\nag gi\nf printf\nig ion\nĠbeautiful ly\nĠd ried\n_H IGH\nĠg pio\nM SC\nĠDe puty\nĠDe cl\nĠtre asure\nsg iving\n_s idebar\nĠapart ments\nĠW r\nĠbo ats\nĠb or\n.l anguage\nĠU i\nl it\nfr m\nanc ies\nĠmass es\nĠAss ign\nĠP OL\nĠmap DispatchToProps\nĠbr acket\nĠP ap\nĠC i\nĠInt o\nĠteam mates\nĠfor all\nul ui\nĠC arn\n_IN S\naz ioni\nce p\nĠtour ists\n-bl ue\nĠL ed\nĠpen et\nĠF o\nĠim aging\npr a\nĠsl aves\noler ance\nĠincorpor ated\n& ,\nu ably\nĠK ap\nXml Element\nĠMu eller\nChange Listener\nĠH oliday\nĉ ĠĠĠĠĠĠĠĠĠ\nF lex\nĉ User\n\"] ))\n_sub mit\n.b old\nĠlock s\nĠCub a\nud son\nH ook\nĠWar ner\n_st ar\n\"=> $\nĠcomm a\nun checked\ngraph ics\nr ors\nG ROUND\n( public\nĠcustom ized\nĠArk ansas\nĠR ew\nĠexp iration\n× ķ\nĠC ul\nĠn ons\n.F ilter\nĠsen ator\n_def inition\nash ington\nym ph\n/ J\nĠf use\nram id\nĠSup plier\nĠaut ocomplete\nĠ} ),\n.\" ĊĊĊ\n_function s\nĉ to\n.e val\nĠT Object\nRe ferences\nĠhe ated\nH AL\nĠ)) }Ċ\n} $\nĠB arr\n_UN IT\n+ $\nĠget Value\nip ed\nch ied\n(v m\nc ue\n_int eger\n_c ourse\nth ird\nĠrevis ed\n** /Ċ\n_D IRECT\nOut Of\n(\" (\nĠFe el\nĠre ass\nĠsub title\nper i\nn f\nĠenjo ys\nĠtreat s\n) this\n-t abs\nanc ers\nĠcontin ent\nĠcard io\nS er\n. question\nĠph rases\nValid ators\nĠpop ul\nĠl ÃŃ\ns ong\n_IN TERNAL\nĠadvis er\nĠp uzz\nĠambit ious\nĠT ob\nĠD P\nĠpres idency\nĠsurre nder\nĠwatch es\n_b inary\nĠSo on\nĠcan ada\n(\" \")Ċ\n] ='\nĠBr andon\neps ilon\nr w\n.add Child\n.C opy\nPr incipal\nPh otos\nĠmarg inal\nĠbas ics\ne ing\nM ust\n_ String\nĠo le\nM agento\n.c ustomer\n(p rev\nà¸ ¥\nĠlo yalty\nC og\nĠprot ocols\nĠCom panies\nĠtheoret ical\nĠaccess ing\nĠZ en\n. ones\natt ice\n_w orld\nz es\nĠtatto o\nĠmen os\nĠinter sect\n\"] ;ĊĊ\nbel ie\nĠin active\n.read line\n-label led\n.d one\nlick r\nĠW ORK\nĠderiv ative\nĠd atabases\nâĤ Ĥ\nĠs x\n.is Array\nĠy s\nĠp ada\nĠBul let\n(` /\nis Active\nĠCG Size\n(equal To\nĠColum bus\nĠmar ry\nDE V\n_l imits\nron es\nI AS\nĠt au\nmin o\n_W rite\nĠW ine\nĠ[ ['\nĠP ull\nrit ers\nri ents\nĠsh ifting\nup p\n_TIM ER\nĠCondition s\náº ¥\nĠOr ders\nĠSt rength\næī Ģ\nĠvalid ity\nĠf ot\net ur\nĠb olt\nåĨ ħ\nĠAl ong\nos hi\nĠassum ptions\nĠmag azines\n_S PI\nĠp unt\n_PRO DUCT\nĠrel ay\nĠJ avascript\n. te\n- es\nĠwidget s\n(f s\n< Item\n_ex tra\nĠrecru iting\nE t\nĠnecess ity\np w\nĠnov els\nuss els\nCre ator\nĠM VP\nĠO C\nth ood\ncl ients\n)) *\nĠcharacter ized\n_SE ND\nut i\nT y\n.from Json\n@ Service\nãĤ Ĥ\nCh ris\n_ Is\nĠJohn ny\nĠclean er\nĠInitial izes\nUN K\n( axis\nÐµÐ ·\nie val\nĠWar riors\n} )(\nDM I\nâĻ Ģ\nĠTre asury\nĠfe as\nĠsl a\n_EN UM\nl hs\nĠIn stit\nipp ers\nLine ar\nRe ading\nquir ies\n-c ell\nch rome\n.S earch\nIN A\nç±» åŀĭ\nĠĊ ĠĊ\nĠSam uel\nĠmill s\nĠdon ate\nĠGe o\n( rows\nĠshe ep\nĠÃ© l\nä½ ĵ\nĠb em\n_UN USED\nĠR CC\nĠintrodu cing\natt a\nĠP riority\nĠF B\nĠSer ge\n> \";\natch ing\nĠKnow ledge\nĉ The\n; margin\nless ness\nop ard\num atic\n() ));čĊ\nĠf als\n(c ache\nType Id\néĢ ļ\n_ choice\nĠGo th\nĠS ites\nM G\n_b order\nInd ices\nCompar er\nĠRed istribution\nĠclo set\nĠvers atile\nInput s\n**************** ****\nĠob esity\nqu iz\ngr a\n(g lobal\nåĬ ¡\nĠcollect or\nĠk or\nov able\nAD C\nĠEvent Handler\n. nc\nĠplay back\nient os\n_p erm\n_W ARNING\nĠOlymp ics\n.n orm\nĠBroad cast\n_sm all\ndr ive\n. iloc\nĠtyp ed\nM EM\n_con s\nDM ETHOD\nĠl un\n.d istance\n(p ar\npo on\nĠb ast\nactiv ities\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n: čĊčĊ\nS ER\n) &&\n_l st\nĠPol ish\nĠknock ed\nĠfrustr ation\nau kee\nĠph osph\niqu id\n_c oeff\næŃ ¤\nL atest\nĠD ust\nT ipo\nĠmaint ains\nĠmar sh\ninc inn\nl bl\nC are\nĠneighborhood s\n_g pio\nĠAr senal\nD em\nĠW he\n_h ook\nĠl dc\nĠHar per\nĠBer keley\nĠgrad uated\nPer cent\nĠarr iving\nĠAdvent ure\n(s cope\n(' *\nqu arter\nĠMar ie\nSpe aking\n_code gen\nĠimm un\nc aster\nãĤ Į\nåķ Ĩ\nĠDim ensions\n.rec ord\nĠtext o\nĠMich elle\nP ending\n( by\n_P AR\nuch t\nbe e\n.Th read\namp ire\nk now\nĠClin ical\nĠmargin Bottom\nĠdistingu ish\n.F ull\n. undefined\nĠSequ elize\n################################################################ ############\nĠeduc ated\n_O VER\nåº ı\nĠÂł ĠÂł\n_e ach\nĠur ge\nde part\nĠdon ors\nĠA u\nĠbill ions\nĠbelong ing\n_ age\n_ Int\nĠsub stances\nm achine\n!! !ĊĊ\nĠjson ify\nib bean\nĠC ad\nĠend Time\nĠc ycling\nĠUIT extField\nĠle verage\nĠvan illa\ne at\nLa unch\n( pt\nst ates\nĠControl s\nĠRes pons\nĠJ ake\nĠas leep\nfort unate\n.next Line\nSize Mode\nìĿ ¼\nTesting Module\nG erman\nĠInvest ig\n.re verse\nĠB ACK\n( DateTime\nĠnon profit\nĠEx pect\nĠt anto\n'] ),\nĉ the\nM ultiple\n(get Activity\n_W AIT\nĠj Ã¡\nde cor\nlev ance\nĠGit Hub\nmin ation\n_qu antity\n.Sc anner\nĠL ion\néĶĻ è¯¯\nĠd re\nĠtan tra\nĠcontent Type\nĠf id\n_ alt\nNS IndexPath\n- pl\nåĮ ĸ\nĠantib iot\ntable s\nac ial\nĠReg istry\nĠol ive\nig ers\nĠsubscri ber\n_p res\nĠSy ntax\nĠlo vers\n. Byte\nold ers\n_for ward\nal ways\nC aption\nPr iv\nĠT ampa\nis ateur\n-labelled by\nĠTo String\nĠì Ĥ¬\nĠinit iated\nW F\nĠinstitution al\nin ject\nĠSc r\nĠdo ctrine\nĠsp acious\nis ure\nĠAn a\n\" time\ness aging\nĠc id\nĠN an\nĠin complete\nT AG\n-b uild\nDec ember\nĠres idual\n(P DO\nĠList en\nĠg lyph\nĠg aps\nne a\n.R ect\nĠsa u\nĠPhot ograph\nĠexec utable\nĠExp ert\nCor outine\n_s izes\nĠN L\n.is Valid\n); }Ċ\n- reg\nĠc iting\nc wd\nĠOtt awa\nĠB att\nĠrenew able\nĠprelim inary\nĠas ylum\nĠw rist\nĠutil iz\nĠdet ention\nF ast\nĠan ge\nincinn ati\nĠste ering\nĠNa N\nios ity\n/ page\nĠè ¿\nster ol\nĠdis g\n( DB\nĠDESC RIPTION\nĠ_ $\nĠobst acle\nĠb izarre\nĠextr action\n_ex pected\nĠlos es\nĠCele br\nĠhtml For\nĠexplo it\nÐ¾Ð»ÑĮÐ· Ð¾Ð²\nXY Z\nĠmagn et\namp ed\nĠat oms\nS ources\npect ives\nÑģ Ð»Ð¸\nĠ= čĊ\nĠd are\nĠWal ter\nĠbright ness\nĠan notations\në ı\nis ke\nS chedule\n. images\nros so\nĠ\" ..\ng amma\nĠin structor\nĠover write\n- am\nĠdevast ating\nĠSaint s\nĠh s\nĠbon uses\n$ output\nij d\n(Action Event\nmon itor\nĠmatt ress\nJan uary\n.j p\nĠcar acter\nĠim pose\n_re st\nĠSign ature\nĠcoron avirus\nãģ Ĭ\n_com pare\nMe asure\nit ated\nel ijk\nig os\nes ar\nĠrush ed\nmet ry\n_SE PARATOR\n_W E\n_ATTR IBUTE\nĠy aml\nĠspec s\nĠR ah\nph eric\nĠInvest ment\nÃ¤ ll\nĠappe aling\nĠview port\nç ©\nĠmargin Left\nĠsub tract\nĠED IT\nĉ ArrayList\ngr ading\nĠF ailure\nas per\nEE K\n(n ow\n< object\nĠAl ignment\nple ado\nq tt\n( ERROR\nĠIN VALID\nĠuser id\nra ises\nID I\nĠvari ance\nĠN il\n/ delete\n_M AIN\n.T oken\n.C ategory\n> )Ċ\nColl ision\nĠGre ater\nĠR acing\nal an\nĠmon etary\n, new\nĠS orry\n. Enable\nĠInstant iate\noll en\në© ´\nĠCall ing\n_h our\nAD A\nĠsh y\n) **\nĠ== >\nĠes pecial\nĠinterpre ted\n! =\"\nĠpharm acy\n.s ingle\nĠC ialis\nĠpar as\n.to UpperCase\nĠDem on\nPr ime\nĠrank ings\nAdd ing\n_H ASH\nĠEx am\nÚ ©\nĠVict or\nOk ay\n\"] ;čĊ\nĠfort une\nĠF ETCH\nexp and\n.Inter op\nĠb arn\næ ¶Ī\nue vo\nĠspec ulation\nâĶĢâĶĢ âĶĢâĶĢ\nĠN u\nĠBl ues\n(f name\nĠinhab it\nĠ\\\" %\nC ES\nular io\n_c r\nĠvalid ated\nĠmid night\nank ing\nĠincorpor ate\nĠpurs uit\nEX P\npr ime\nP id\n- US\nĠN urs\nĠW heel\né ĺ\nĠin p\nĠsupport ive\n.m ember\nĠSh ot\n.Check Box\nĠaff irm\nT or\nFull Year\nĠconsider ably\ncred entials\n_ opts\nR oll\n( round\nĠcom ent\n_U ART\nĠext ending\nR G\nresult ado\nit u\n.get Session\nĠattr action\n& D\n$ html\nĠJess ica\nĠAssoci ate\na Ã±\n_ ed\nĠL ag\nĠorig ins\n()) ->\nadd EventListener\nIAL OG\nåĲ ¦\n.Com pare\nAl bum\nĠK u\n< Q\narg est\nĠpro long\nĠconfig urations\nĠaccident ally\n_ph oto\nĠ'' ;čĊ\nĠver se\nB ob\nĠfarm ing\ndel ivery\nĠM ack\nĠuse Selector\n.bootstrap cdn\nkeep ing\nen y\n. upload\nĠM ETHOD\ncre ator\n< _\nĠE aster\n. --\nUI Button\nãĤ ī\nom eters\nĠsh ine\nĠh ogy\n\\ s\nĠh arness\n.C ell\nĠlif ting\nĠcomb ines\nĠOcc up\nex clude\npat ial\nĠres pir\n_f it\nĠfif ty\nĠM ol\nĠtun ed\n-d imensional\nĠq s\nĠto ps\n> \";ĊĊ\nquis ite\nch annels\n/ res\nĠAn alytics\n.app compat\n/ to\nĠon Error\n( attr\nIR M\nĠrag az\n- as\n.Se cond\norient ed\nĠdon n\nĠlight ning\nf id\nĠP le\nãģ¾ ãģĻ\nt ro\n.Tr ue\nO bservable\n× Ļ\numb ing\nĠpros pective\n-f ilter\nĠpurs uant\n(p oints\n.B ind\nĠp alm\nclear fix\nÃ¶ s\nĠG onz\nĠwe aken\nDr ive\nen ido\nl ld\nob ox\nane an\nG ot\nä¿ Ŀ\nReg ex\næ ĥ\nĠsal ad\nass is\n\" net\ninherit Doc\nĠR V\nqu ier\nĠcl azz\nÄ± ÅŁ\noster one\nĠair line\n.list dir\nĠdownload ing\nĠP alm\nw aukee\n& lt\n.B L\n_IN LINE\noff s\n<< (\n_new s\nĠch ase\n/ ><\nĠeuro s\nĠEgypt ian\nĠSt ainless\n_BO OL\nĠG uild\nĠD ynam\n[index Path\nĠ ï\nĠmemor able\nĠCh ampion\nResource Manager\n.Log in\nĠForm er\nyp ed\nĠl leg\n; \",\nD WORD\nĠtax i\nĠbom bs\nra h\n.t ags\n_test s\nst ones\nâĢĿ )\n[ g\nr type\nĠv u\nĠhost ile\nCh ars\nĠPatri ots\n/ status\n< B\nĠIn come\nĠD ad\nĠpat rol\n_CH ANGE\nĠup graded\nĠch ina\nset q\nStart ed\n.U ndef\nĠcheck sum\nĠfrustr ated\n{ o\nĠen f\nĠwood s\nĠAny one\nEnc ode\nĠQt Widgets\nare as\nĠshe er\nsk i\nend point\n_T est\nS oup\n~~~~~~~~ ~~~~~~~~\n(f iles\nĉĉĉĉĉ čĊ\n.sp ark\nĠval ued\nĠ% Ċ\n.control s\nĠXCTAssert Equal\nĠf ame\nĠR ic\nD OT\nĠAlbert a\nä½ ¿\nos al\n.Web Controls\nĠ ------------\nĠM is\nĠS YS\nNon null\n= item\nĠexp ire\nDec ode\n_ operation\nĠValid ator\n.C ENTER\nuff s\n* m\nĠav ant\næ¬ ¡\nâĢľ You\n.per mission\n... )\nĠL ic\n_co ords\n.n ombre\nc lo\n.Int ernal\nĠCh o\n_s w\nĉ Il\ncl k\nĠcast le\n(l ayer\np it\nĠgu ided\nĠâĸ Ī\nĠsuper b\nĠsup plements\n_c ent\nĠpe ek\nIN ARY\n.Content Alignment\nf alls\n\")) ;\nW all\n). čĊ\nĠD anny\nirm ingham\nIAL IZ\n( create\n\" In\nService Provider\nĠpr iced\nmac ro\nam ac\n. box\n---- Ċ\nãĥ «\nĠS uit\nur st\nbr u\nourn als\nnum ero\n__ ()Ċ\nD as\nĠM itt\nud er\n? \\\nf u\n[ B\nĠ: )ĊĊ\n(int er\nbr ains\nĠatt itudes\nVer ify\nĠsign atures\nack Bar\nĠg d\nJ ack\n.c at\nĠz z\nwar f\nFT ER\n\");ĊĊ Ċ\nAl ive\nIC LE\nĠWh atever\nĠout lined\ns prite\nÐµÐ ²\n_A B\n_DE PTH\nĠcrush ed\naa a\n(e v\næľ º\nAnt i\nIC O\nis EqualTo\n.s un\nic ulo\ns ale\n_h ex\nĠV k\napt or\nUn ion\nĠDis count\nlist a\n.Undef Or\nĠautom ation\nN or\nå¯ ¹\nåı Ĥæķ°\nĠref lex\nĠLa ure\n.showMessage Dialog\n.t emp\nĠa kan\nĠ__ ____\n.Is True\nARE D\nag le\nE nergy\nĠquant ities\nâĢĻ Ã©\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠcitizens hip\nm outh\nĠin appropriate\nĠOut door\nWhite Space\nAn onymous\nload s\nwebElement Properties\nT en\nĠacc idents\nĠadvertis ement\nĠY emen\n(c all\nĠsl avery\nÑģ Ð¿\nĠL am\n_BIT S\nome ga\nĠO le\nĠkid n\n_A n\nĠR aid\nCre ation\ns aved\nĠpro port\nW ARNING\n\\ P\nĠp wd\nData Reader\nis cher\nade on\nĠP redict\nĠreason ing\nĠdestroy ing\nH el\n* d\nĠLeg isl\n_P r\nĉĉĉ ĠĠĠĠĠĠĠ\nĠsymp ath\nĠch ess\nĠm am\n: hover\nĠconvert s\nĠp ela\nĠprogress ion\nĠ\"_ \"\nĠG ill\nĉ show\nĠsupposed ly\nac curacy\nel in\nĠunf olding\nĠHy per\nĠw anna\nĠup s\n( #\nĠCr iminal\n( Point\nat Lng\nact ly\nĠcontract ors\n'] }\ndraul ic\nÃ³d igo\nĠT T\nĠW ide\nĠAR G\n_ ic\nFLAG S\nS chool\nĠclear ing\n-be ing\n={ [\n, const\nman ent\nOver lay\n(' \"\néĩ ı\nĠT imestamp\nĠmail ing\nĠC ake\n.Th at\nĠmed itation\nq p\nĠemp resa\nĠL ions\nĠw eld\nĠLinked In\nĠc ush\nĠgen ome\n.Index Of\nag ain\nĠf allback\nĠcamp ing\nre dd\n-strip ed\nĠd v\nFe bruary\nĠPro xy\nus k\nĠdies el\nW RITE\nRE AK\nL orem\n.In voke\n- div\nInter ceptor\nĠD H\nia les\nĠvill ages\nØ ´\nĠEN V\nS ys\n.X R\nĠpo em\nÃ Ĥ\nc ade\npl ots\nĠ{ (\n.g it\n/s vg\nnc mp\nĠÄ į\nain es\nåĩ ½æķ°\nĠ( )ĊĊ\nops is\nĠRel ationship\n_ aut\nĠB omb\nĉ com\n* sizeof\noff icial\n_p ayload\nĉĉĉĉĉ ĠĠ\n.m anager\nĠA round\nĉs end\nĠEx ercise\nĠB illy\niv i\nĠneed ing\n_url s\n_t asks\nĠH em\nĠtear Down\nenc rypt\n.t ie\nĠas m\nIC H\nĠCGRect Make\nìĦ ±\nul ong\nĠit r\nĠG ST\nĠoffer ings\nro be\nEE E\noper ators\n_PRO P\nind ent\nA DE\nor f\në Ĳ\nĠbless ed\nvas cular\nĠcon oc\nH appy\nB ridge\nilit ation\nj oint\nĠAdmin istr\n- transform\nĠmeant ime\n/ K\nĠBed room\nĠrig id\nĠbrows ers\nEM PTY\n.S erialize\n_ ED\nĠst itch\nĠj an\nell t\nĠbr ace\nĠtr ails\np ublished\nå¯Ĩ çłģ\n} ')Ċ\nĠac ids\nĠ! !!\n_d irect\n> ());Ċ\naj Äħ\n_O CC\nĠplan ets\næ Ł¥\nĠDub lin\nĠser ie\n.print f\nde ep\n` )\nĠ\\ $\nĠÎ ¼\n_V IDEO\nend ors\nĠC rypto\nF ar\n.Trans parent\n.T R\nias m\n_tr aining\nĠteach es\nĠB elt\nĠlimit ing\nĠK ath\nĠIndex Path\nĠachie vements\nĠser Ã¡\ninterop Require\nĠdis se\n.I f\narm ing\nuls ion\nP o\n_DE TAIL\nProt otype\nĠC AL\nĠagre es\n.v o\n.Execute NonQuery\nĠTop ic\nĠ' {}\nAr m\nĠe cc\nM ag\nĠserial ized\nĉ conn\nc ached\n= tf\nĠByte Array\nprot obuf\nvar char\nĉ ASSERT\nĠlist e\n_tr igger\n· ¸\nFe el\nT ahoma\nĠL ik\nĠstruct ured\nerg us\n.In itial\n_ ge\ncl js\n.cont act\nĠand ere\n$ stmt\n_C URRENT\nĠDis cover\n$ res\nform atter\nH a\nvang st\nĠem erge\nãĢĤ âĢĿ\nĠCabin et\n-s quare\néĥ ¨\nĠr age\nĠA J\nĠV T\nsh adow\nĠFa ith\nen ames\npret ty\nhas il\npart y\nĠvar char\nĠf otos\nĠal um\nĠBelg ium\n.y label\nĠde j\n_num bers\nĠh u\n.set Adapter\nĠUs ually\n(s ample\n.Sh ared\nĠbook ed\nĠ>> =\nĠmin erals\n\"><? =\nĠadjust ments\nĠD L\nĠvibr ant\nĠDep endency\nĠz ap\n/ X\nĠfont s\ntr ip\nÐ¸ Ñĩ\nĠtub es\ncl amation\nĠë §\nĠprot agon\nou pon\nĠBr ush\n(p red\nour ney\n'] )->\npro g\nbo o\n_m d\n_p ack\n(ex press\nut z\n\\ Auth\n, id\nĠCh ile\nact ice\nĠrecruit ment\nĠpos es\nĠvulner ability\ninst anc\nor um\nd ess\nĠx l\n%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%\n( fig\nĠdelet ing\n.d el\n) ')Ċ\nĠWeek ly\n?? ?\n(str cmp\nsm ith\nĠpurs uing\n- so\nĠApp s\n/ 'Ċ\nĠdec is\nFO RE\nEvery one\nĠl anes\nV irtual\n. attach\n( Log\nĠMed icaid\n( Path\nĠTurn er\n/ application\nĠport rait\nĠopp ose\ncheck out\nĠfinish es\n_M E\nBar rier\nS ong\nV AR\nEar lier\nrell a\nĠh ast\naz ar\nĠpull s\nng x\nĠinspir ing\nÑĥ Ñİ\n-d irection\nĠexplos ive\nĠcreated At\nst o\nĠwhe at\nĠB uilt\n' ai\nĠtrack ed\nham mad\nRowAt IndexPath\n_ heap\nD ue\nĠconnect s\n.p ublish\nem u\nĠbul lets\nB AR\nol ate\nĠintern ally\nĠcatch ing\n-p assword\nou ched\næĢ §\ne ous\nĠx range\nQ uality\nv v\nMan age\n( ($\nac ements\nĠBro thers\nĠHE AD\nĠUn supported\ns an\nes i\n** *Ċ\nĠadapt ation\nĠWork er\n'] /\n.save fig\n( trans\nØ ¬\nne e\nCor rect\n... \")Ċ\nĠsubmit ting\n-p ath\nĉ last\niss an\n.x label\nĠS epar\n/ no\n_b est\nĠM ills\n_s ock\n(f lag\nĠdest inations\nem ption\nĠF AIL\nå ĴĮ\nĠr p\nf act\nĉ len\nD AY\nĠse iz\n_d st\nl ip\n.Line ar\nĠB asket\n$ t\n$ i\n- brand\nĠNe il\nĠE q\nĠth ou\nog ene\nĠscholar ship\næĽ ´\nĠs wo\nag inator\nen i\n( book\nĠbl ink\nth us\nĠcancell ationToken\nĠPalestin ians\nĠprofit able\nĠback pack\nens on\n< Long\nĠp ools\nĠst icks\nĠspokes woman\nBe ing\nĠHer itage\nĠN ike\nSH A\nĠNotImplemented Exception\n$ core\nĠR ico\n/ latest\nĠC zech\nner Radius\n(l ines\nĠsem ester\nĠw ounds\nPro cedure\n.m ail\n() ):Ċ\nĠcor rid\nter ed\nĠN CAA\nĠgal axy\n_k ind\nil k\nĠtr as\n_P OL\nĠH et\nĠrefuge e\nĠteen age\n.b inding\npost al\nĠiÃ§ in\nĠData Type\né ĸ\nycl erview\n, value\n_id entifier\n< b\nĠout file\nčĊ ĠĠĠĠčĊ\nĠcr Ã©\nĠrespond ents\nĠBe ast\nce led\nĠinter f\n-th eme\ng if\nĠR angers\nIT AL\nĠauthentic ate\nCom pletion\nurs ors\nĠcin ema\nĠdisc our\nĠJ aw\nOCK ET\nĠpr ayers\nĠL uis\nfr ag\n=[ Ċ\nĠbr ave\n_p ose\nC ertificate\n- fe\nifer ay\nĠFl ags\nContainer Gap\nĠC rit\nResult Set\nĉc ur\nĠcorrespond s\nSt aff\n.Http ServletRequest\nĠneur ons\nĠMain AxisAlignment\ned ar\nĠg ad\n_p arts\nĠÎ ²\nĠf x\n/ files\nĠB ros\nhip s\nĠgluc ose\nĠfar ms\nĠment ally\nrest aurant\nTable Name\nĠMer cedes\n. Visual\nĠan ch\ninal g\n_r untime\nĠpropri etary\nĠintent ions\niz i\nS lice\n; \"></\n_W ORD\n\\M igrations\nĠEN ABLE\n_PARAM ETER\nĠB ishop\n.sub ject\nill as\n.m atrix\nurrenc es\n* y\nĠcost ly\nĠCh uck\nĠclos es\nĠM ight\n- store\nĠm all\niet en\n.A bs\nĠcouple d\n.b asic\nĠ:: ::::::\nM aker\nc annot\nĠa ch\nĠE li\nâĪ Ĵ\norn a\nĠc ps\nĠthere of\nĠ@ {\nĠNSMutable Array\nÎ ½\nproduct ive\nS quare\ntempt s\nĠelim inated\n< M\nĠconserv atives\nĠS urg\n.p ar\nĠB uch\n* b\nF ort\nCol our\nĠCh i\ned ic\n> true\nĠNY C\nĠb ored\nĠD etect\nĠapp ar\nĠje ans\nĠT ak\nI OD\nĠH orse\n( FILE\n( ?\nri que\noptim izer\nn at\nlo ys\nĉ Token\noub ted\nu ess\noco a\nData Member\n_P OWER\nclass List\nPush Button\nĠWi Fi\n. Stream\n.g uild\nĠn og\nĠPortug al\nĠUnt er\nPr imitive\nb oss\nĠDe utsch\nĠerot ic\nĠstr conv\n.Try Parse\nĠgr ams\n.S uccess\n_p k\nĠHar vey\n-m inded\n.c ountry\n[] \"\nĠang el\nĠbe ats\nĠV or\nil io\n.m aster\ns omething\nĠP ACK\n( if\nRequest Body\nĠant es\n/w idget\nĠmod o\nĠA W\nfind er\nĠoptim ized\nĠmiss iles\nN B\nĉint ernal\nt ex\nĠS ri\nĠdam aging\nĠM ais\n- Allow\nĠZ h\n- alt\nĠ ));ĊĊ\nè ī\nĠinflu ences\nĠc atal\n_REG ISTER\nĠAPI s\n-cent ury\nĠbi ology\nĠAct ual\nĠhe els\nTR ACE\n_D IG\nD ataset\nĠM atter\nĠclass ifier\n.w ikipedia\nĠRog ers\nĠdon ated\nraw ler\nen en\nĠcas inos\nort al\nĠpr ive\ns pe\nduc ers\n. ep\nĠgr asp\nac ji\nĠd airy\nĠb uses\n.com m\n. ins\nĠI RS\nĠBe er\nad c\no ard\n_M ET\nĠ' +'\nr ans\nĠkind a\nĠâĶ Ĥ\nĠM aur\nÐ°Ð ³\nĠband width\nib us\nĠD ifferent\n(m at\nĠRes ume\n_UN S\nest ablish\nĠfon ction\nSub scription\n_com pany\nĠlight ly\n.con firm\n.y aml\nĠBo ost\nCom merce\n- template\n_DEL AY\nĠH I\nĠn avig\n(S ender\nĠH S\n_ \"+\nĠRE QUEST\nĠw ifi\n=\" \"Ċ\n]) ->\nĠro pe\nĠviol ated\nĠgl ance\nĠK urd\nĠè ®\nde ck\nĠIS BN\nĠin fect\nĠF oo\nĠget ter\nĠt ener\nap pe\n.h h\n_h ot\n< AM\np oly\n! \",Ċ\nĠconver ting\nĠW WE\nRO S\n(' {\nCom mit\n) L\nĠO re\nĠsp arse\nĠdis posal\nĠcan celed\nåĲ İ\nĠa er\nĠvin yl\ná» ĥ\nrec ogn\nark ing\nĠtrick y\n* s\nĠproceed s\nĠis o\nĠco conut\nĠcraft ed\nIEL DS\nĠquest o\nĠcomm un\n_CON NECT\nĠtraff icking\nDe ep\na Ã§Ãµes\nc odigo\nve au\nĠbet ray\nint a\nT ED\nÃ¦ r\nm art\n_B US\n/ sc\nial ly\nĠcigaret tes\nè¯ ģ\n(n n\nĠmodel ing\n/ products\nw arn\nĠmet ro\nĠI v\n& )\nĠC able\nÎ »\nCompar ison\ng ary\nĠB A\nP ART\nĠp v\n_up dated\nC redit\north y\nobserv able\nĠthe atre\nB LE\n; }ĊĊ\nla unch\n_str ings\nug o\nĠR PG\n- auth\nÐ ł\nhol m\nĠP and\nU id\nĠim ply\nìľ ¼\n'] ='\n/ User\nĠstr cat\nÐ½Ñĭ Ð¹\nData Adapter\nĠland sc\nĠdipl omatic\nï¼ ĵ\n************************************************************************ ****\nĠCh icken\nĠbc rypt\n.In f\n[ col\nĠQu antity\n- position\nĠdiet ary\nĠfil mm\nIs rael\nPre v\nĠMill ion\nĠrem ed\nĠbill ing\nĠout doors\n.t m\nĠn ad\nF org\nZ Z\nĠs sl\n], '\nK T\nf req\n= document\nbl ur\n¬ ¸\nĠJeff erson\nC s\n(s ave\nĠstr ap\nInd ia\nĠide ology\nBO SE\nĠF P\n( ans\nĠfe ver\nĠY am\nK ing\nà ²\nAT ING\nbo hydr\nroll back\nĠnew Node\nĠN VIDIA\nĠhon our\nĠCon firm\nxb d\nĠsuccess or\n/ u\nl iv\nourn aments\nAtt achment\nĠgr up\nĠtri be\nĠca res\ne ft\n_s ame\n' label\nĠ ãĢĲ\nM otor\nĠin exp\nĠ\" (\"\n_POS ITION\nĠval ley\nĠResult Set\nĠpres erved\nĠmut ations\nĠquestion ing\nmun ition\nparse Int\nĠS r\nĠMet adata\nâĢĿ ï¼Į\ntimestamp s\nĠtrans itions\ní Ļ\nÑ Ĭ\ni om\n.D o\nĠp ine\nĠf ung\nĠtrans mitted\nct ime\nĠF am\nRe vision\nB as\nUP ER\nD estination\ntoHave BeenCalled\nĠun fortunate\nIN ES\n_pro f\nAm ong\nĠCy ber\nĠB attery\ngen re\nĠView Model\n- =\nĠutil ized\np aint\n.Integer Field\nern ity\ncomp iler\nâĢĭ ĊĊ\nĠM asters\n.To Array\nĠstrt ol\nĠUkrain ian\n} ));Ċ\nĠsh emale\n\" That\nfor all\n/ download\nĠrhet oric\n.l atitude\nĠWH EN\nĠshock ing\nIF IC\n.N ormal\n_F OLDER\nĠdr ift\nĠmount ing\n- book\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nĠWire less\n> \".$\nĠrel ies\n( Console\nInt ernational\n-> {$\nM id\nĠdis sert\ndd s\nĠdepos its\nĉd river\n# ga\npr ising\nprint ln\nĠpres enter\nĠmin es\nC SS\nĠD ual\n(! (\nĠk am\nĠis Loading\nĠProt ect\n. upper\nar ium\n]: ĊĊĊ\nY ii\n-sh irt\nĠIM AGE\n_color s\nĠur gent\n.Cont ainer\n! (Ċ\nS aturday\nĠsoci eties\nĠTh an\nĠC od\n= @\nĠattach ments\n.m obile\nĠsp ite\nĠb ounce\nraw l\ninstanc etype\nĠTr uck\nĠmanip ulation\n( Config\n-in st\nĠst or\nit ution\nPreferred Gap\nĠmain AxisAlignment\nĠlist ened\n'' 'ĊĊ\nott age\n- project\n.AP PLICATION\nĉ root\nĠwh it\nĠb ilder\nĠk er\nĠappl iances\nrow ave\nìĿ Ģ\nematic s\nĠO rg\nop ing\n_SE ARCH\nĠch am\nadd ContainerGap\nĠ( ).\nĠAr row\nIl legal\nCurrent ly\nĠus a\nĠpassword s\nĠre nown\nav ern\nĠEv il\nĠconc at\nĠdu o\nĠv ale\nĠBe an\nĠindic ators\ncm ath\nĠP ump\nNov ember\nific ant\n_DOM AIN\nreg ar\nĠPort al\n\" $\nĠformer ly\n\"] :Ċ\nĠVis ibility\n.getElementsBy ClassName\n_RE D\nĠch ampions\nà ´\nVal or\n_ es\n* a\n-re peat\nB and\n.st age\nĠbure auc\nC nt\net en\n- function\nĠm uito\nP ID\n_ editor\nĠcrash ed\nde ad\nk at\nag h\nĠEX T\nass er\n-sm all\nĠreal iz\n( Entity\nÃº s\nĠAct ually\nĠEl ite\nĠhel m\n(non atomic\nash er\nComm unity\nall eng\nir y\nĠG rowth\nĠs ue\nĠfrequ encies\n_des criptor\n.At tribute\nĠrecip ients\n_N S\n/ \"+\nib an\nĠath lete\nĠI gn\n_D MA\n(d s\nĠRequire ments\nAD I\nere z\n\\ Admin\nbr aska\nĠR ust\nRel ation\nC OD\nĠV ERSION\nem ma\n)) {\n.D uration\nĠC amb\n- logo\nĠread able\nĠcre ators\n() ];Ċ\nUp Down\n-h alf\n.get Month\n(s f\nP ic\nĠhun ger\n.t x\nĠexceed ed\n_se ed\n( ^\n_s k\n.per form\nĠ> ::\nĠm ongo\n= float\nbind Param\nSm art\nif a\nĠse curities\nĠpre jud\nĠ, \"\nĠcor ps\nĠv ra\namac are\nit err\n(M edia\nuch e\nĠc ob\nĠlib er\n. geometry\nLoc ator\nĠsl iding\nĠsurg ical\n_C UR\nĠcon sect\n[ *\nĠRes ort\nSt ub\n_DO UBLE\nĠS oph\nĠelect oral\n_dis able\nĠÑģ Ð¾\nĠLight ning\nĠment ions\noc y\nĠle aked\nĠrelax ing\nPres enter\nv sp\nĠgu ilt\n=- =-\n.re ply\nĠMir ror\nC amp\nĠ+#+ #+#+\nĠ+#+#+#+ #+#+\n.A uthor\nĠdirect ive\n-h ook\níĦ °\n}ĊĊ ĊĊĊ\n@ pytest\n_r and\nm is\nĠcolor ful\nu je\nlass es\nĠClass es\n.h ave\n% ),\né¢ ĺ\nĠdistur bing\nsub string\nĠK oh\nIn vest\np urchase\nĠrec ycling\nĠA RT\nier archy\nĠf ps\n.check Box\níķ ´\n_m aterial\nduc ation\nĠf w\nud it\nĠreview ing\nĠS id\nS yntax\nĠW ritten\narg ar\nUM E\n/ q\nClass ifier\nOff icial\nĠj azz\nĠom ega\nPh ysics\nĠl ugar\n_access or\n.command s\nAb ility\nĠB atch\nR AM\nĠencount ers\n. Qu\nBY TE\nĠD istribution\nĠus o\nĠReco very\nappro ved\nĠden ial\n/sh are\nLinked List\n)čĊčĊ čĊ\nudd y\nĠf ines\nĠr y\nUn icode\nĉ render\nĠprem ises\nĠp on\nali ases\n/F oundation\nc uda\nĠC ock\n,: )\n(f older\nĠm Ã©d\ndr ag\nĠtal ents\nĠĠĠ ĊĊ\nÐµ ÑģÑĤÐ²\nm ob\n.y ml\nĠa ster\nĠdis cre\ngo al\nĠGT X\nĠS UCCESS\nĠL ONG\n(f ind\nĠsing ular\n_s z\nĠEth ereum\n.. Ċ\nĠir res\n')) {Ċ\nĠmin isters\nSt eps\nivers al\nĠNever theless\n- led\nĠ( %)\nç¡ ®\nĠtime zone\nĠstr anger\n(re nder\nĠsh util\nĠm ph\nĠtri o\npp y\nĠpred omin\nĠend ors\nĠRuss ians\nĉ row\nĠw izard\n.s erialize\nĠcompl ained\nĠs ido\nĠdelight ed\n-m e\nĠR av\nH uman\nad ays\nrec v\nWork ing\nJ ump\nĠÃ¥ r\nĠAut omatic\n_B ase\næł ¼\naur ants\nÂ ¯\næ ¸\n(C Type\nIF I\n( amount\nĠbelie ving\n= mysql\nĠf ir\nĠrest oration\nere co\nÐ ¢\n_ '+\nĠe book\nĠde bris\n(input s\nAY OUT\nĠscre aming\nav ia\nland er\nĠdist ress\nĠas sembled\nĠA void\n( thread\nĠR PC\n_EX IT\n( queue\nÐ¸ ÑģÑĤ\nD ll\nĠsk ull\n_p ub\nche z\nmin ate\nens en\nĠins ane\nb ounds\nĠR osen\nĠcondition ing\nprocess ed\nv ideos\nf our\n.Con v\n| ;Ċ\nPerson al\ncer pt\n:UIControlState Normal\nĠdos es\nĠKar l\nĠFre qu\n.B ASE\nĠV ote\nĠcon current\nĠMessageBox Icon\nĠÃ ĸ\nĠDub ai\nĠR etail\n: number\nĠOb server\nĠBig Integer\n_ origin\n_W ORK\nF rames\nĠnot ably\n. âĢľ\nĠtrop ical\nĠn iche\nam ina\n.s ys\n(t okens\nmod ify\nos it\nst rom\nĠCom ics\nO PTION\nT icket\nĠfact ories\nĠdis put\n_F ile\nĠFin n\nee e\nĠDisc ord\n_m oney\n.t pl\n_s afe\nL B\nĠgl ut\nJ K\n.fl ow\n- cont\ng os\nĠhor izon\nĠR ush\n:: *\nP ipe\null a\nbor ough\nhe imer\n(m ove\n( Text\n} );čĊčĊ\nw elcome\nĠCom ponents\nĠgovern ance\nc losed\nĉm argin\nĠla undry\nĠTerm inal\niz ards\n. âĢĶ\n.rem ote\n.r adius\nĠQue bec\nĠd h\nT ech\nĠM ist\ns eller\n_l iteral\nĠgen ius\nĠbr ains\ng em\nĠMe asure\nĠcata st\nr ance\n.Text Field\nĠconsum ing\nĠ'\\ ''\noubted ly\nĠC ertain\nE v\nert i\nbe ing\nEx perience\nĠ// [\nĠArab ic\nĠC rist\nĠAz ure\nĠhor a\nl adesh\n\\ Blueprint\nd ar\n.re l\nĠsup rem\nĠRe agan\nĠAt tributes\n-s idebar\nĠuse Styles\nĠA irlines\nĠh ills\n/x html\nv inc\n_m ock\nĊ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\nĠP ill\n.Layout Style\nĠCommand er\n] <\nsign ature\nĠ{ }čĊ\nĠhat red\nĠë ĭ\nole sterol\nĠ ********\nancell or\nc rop\nT IM\nĉĉ ĊĊ\nys qli\nuit ive\nĉun set\n_s el\nĠmen us\nt ick\nĠconstit ute\nĠElement s\nĠRed is\nagg io\n_f p\n_de pend\nem as\nCA ST\nor ange\nj on\nĠEm ily\nĠpot atoes\nĠre ceptor\nĠElect ronic\nĠL ights\nĠcomb ining\nĠSome one\nĠ######## .\nĠT OD\n/ show\nX d\n.\" '\naf x\nĠtr agic\nSt yled\nĠMar co\nG allery\nd ale\n.âĢĿ ĊĊĊĊ\nÃ© rie\n/s ervice\näº Ĩ\nĠamb ient\n_SET TINGS\n.Ad apter\nl ene\nĠtrav els\nNot ice\nĠcle ans\nĠF em\nch air\nÑĥ Ð½\n/ my\n_b ad\nĠEcon omics\nIS A\n_C NT\n(M enu\näº İ\nĠR idge\nĠlength y\nD ot\nĠjump s\nĠhe y\n$ pdf\nĠw orm\nĠs ut\nĠsh er\niam o\nĠCal c\ntrie ve\nĠc ops\nĠCh rom\nĠreg ulated\nreat ment\nĠHigh er\nok s\nĠde ze\nLOC ATION\nongs To\nĠfin ite\nĠvar ies\nĠposition ed\n' il\néĩ ĳ\nĠh ike\n(d one\nplay list\nĠad a\nĠcoast al\nĠN ancy\n.DateTime Field\nCpp CodeGen\nĠSimilar ly\nre ur\nĠCon tr\nĠH idden\nĠB eta\natch ed\n_inst all\n. Output\nLook up\nĠRich mond\nqu ared\nĠm anga\n-control s\nĠBern ard\nL arge\nĠslic es\nĠoff ence\nĠM ega\nĠest ar\nĠjoint s\nĠsum m\n_pl atform\nB uff\n.add Subview\nĠret ained\nLet ter\n.d im\nĠess ere\nĠS caffold\nEX PECT\nĉ RE\n.long itude\nÃ¼ nd\nĠstat ue\n.add Widget\nĠCar ibbean\nadd PreferredGap\nil de\nUIL abel\nĠOp port\nĠimper ial\nurs ion\nĠmand ate\nĠpromot ional\nĠv k\nia ÅĤ\nĠp yl\nĠCre ation\nÐ¾Ð· Ð´\nĠsim pler\n. what\nĠRec ent\nSt orm\n. quantity\nĠL ov\n\" -\nubb les\n_not ification\n(w orld\nur ger\n* (-\n: \"Ċ\nh m\nans hip\nĠAl most\nĠmotor cycle\n_f ee\nĠabsor b\nĠVin cent\nĠsound ed\nÃŃ st\nĠpharm aceutical\nht ag\nĠKind le\nital ize\nĠEm peror\noust ic\nĠspecial ists\nåħ ¬\nBorder Style\n/ \\\nRE LATED\n(', ',\n(ex pr\nĠh t\nåį Ī\n_C reate\nĠspecial ly\nĠ[] ;čĊ\nĠhe el\nĠse pt\n_ arch\n(in itial\n% .ĊĊ\n\\\", \\\"\nĠdiscuss es\nĠu pt\nĠ[ &\nĠman us\n.h and\nĠM AIN\nĠDen mark\nĠ], čĊ\nĠcr yst\nĠn ack\nCo ords\n_in ner\nĠmid st\nĠaw ake\nĠÐ ŀ\n-b reak\nÃŃ vel\n_P ASS\nĠParam s\nĠdet r\nĠsp ider\nĠCon cept\nĠpre nd\nCH ED\n.Ex it\nĠpop ulated\nĠvirt ue\n_SE SSION\nĠnou vel\no auth\nĠÐ´ Ð°Ð½Ð½Ñĭ\nr ink\n.Header Text\natur ated\nĠer st\nĠå ħ\nà¥ ĩ\n_vis ible\ney er\nĠli able\nĠde be\nĠb w\n{- #\n_W IN\ndf s\nH over\nĠP UT\n- angle\nĠnob le\nĠtr aces\nenc v\nĠuser Data\n_in s\nĠS uz\nĠnews letters\nĠMod i\nĠentreprene urs\nĠtrib ute\nĠrum ors\nĠr r\nĠQu arter\nê³ ł\nĠfeed s\nÃ³ g\nĠen velope\nĠle ar\nĠk Ã¸\ndevelop er\nSim ilar\n: \")Ċ\nsub scription\nMod ifier\nital ic\nĠn asty\nĠtermin ation\nĠchar ming\nĠâ Ł\nton s\n.tr ace\nh ots\nĠU R\nM ont\nĠjust ified\nĠG ang\nine a\nĠb og\n( ap\n_ $\nĠcont amin\n.D ot\nĉ Debug\n( exports\nĠpa ired\nĠAss ignment\nĠautom obile\nĵ į\nĠph ases\nv w\n@ SuppressWarnings\n= \\\nr ant\n- ed\nĉ await\nĠcert ificates\n'> \"\nĠint act\nCT RL\nM ike\ngreg ation\nAT TERN\nĠre public\n_up per\nili ary\nĠcomput ation\nh ire\nĠSh in\n_ ANY\nĠManufact urer\nĠC arm\nĠbear ings\n_c omb\nc ad\nur istic\nĠwholes ale\nĠdon or\n.inter faces\npress o\nĠBr un\n-c lose\npro ve\n_S K\nĉf rame\net ros\nĠP ain\n_EX P\nĠL T\n_f s\n.dat as\nĉ ss\nvo ir\nĠA xis\nM ajor\n=\" <\n[ h\nĠprof ess\nigr ate\n(s core\nKey word\n\" os\nĠĠĠĠ ĉĊ\nan alysis\nĠre play\n.p ass\n\\ d\nt ls\nĠsan ct\n.l ight\n_m obile\nÑģÑĤ ÑĮ\nĉt otal\nu ity\nĠpa used\nN AS\nĠen core\nlo e\nĠ-* -ĊĊ\n.h igh\nam pler\nĠSec ure\nĠfrag ments\n_ vel\nill ary\nĠSte in\nĠD awn\nĠmax imize\nà¸ ¢\nĠ/ ^\nĠcontin ually\nĠsh adows\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠI ActionResult\nĠinform aciÃ³n\nC HECK\n.Selected Item\nb undle\nol ley\n< Int\nAIN ER\nĠW ing\ntit les\nount ain\nC Y\nĠLoc ale\nform er\n< context\nR adioButton\n_s chedule\nĠfab ulous\nRob ert\n_PRO FILE\nĠg ates\nIM P\nĠPent agon\ng old\nb ach\nemploy ees\nR otate\nĠch amp\nĠsel bst\nAl tern\nĠconvert View\n/ ,\nĠ~ (\nSt reet\n_ place\nĠpersonal ized\nP ublisher\nĠSO CK\n_NAMES PACE\nĠStand ards\nso ever\n_C ENTER\nInter est\nÃ´ t\ntem perature\nView port\nget Resource\nĠeat en\nĠsem pre\nĠab normal\nĠc ylinder\nĠtroub les\nn od\nÑĭ Ð²\ng ames\n_g l\nPl ane\ng rey\n_t bl\n.Component Placement\nĠCh ase\nLog ging\nman y\nì Ĩ\nĠfl ame\n=\"<? =$\nĠGroup s\n- U\nÑĢ Ð°Ð½\nĊĊĊĊ ĊĊĊ\nĠv ault\nom on\npro blem\nĠtrad ers\nĠper ipheral\nĠhome page\n(d es\nĠSuccess fully\nĠre boot\nĠcell ular\nii i\nĠPl ans\nlist ing\nĉd is\nĠRef lect\nĉex cept\n\") (\nĠtamb Ã©m\nV ehicle\nacc i\nl ush\nOrder By\nĠimag ined\ncode c\nĠdate Time\nM icro\nĠrem inds\nĠfrustr ating\nĠV ista\nTr ain\nĠÐ² Ñģ\nĠmolec ules\nav in\nĠdoub led\nĠbr ake\nĠcalc ium\nF riday\nĠId entifier\nå Ł\nÑĭ Ð¹\nĠJ ah\nR en\nĠsc am\nĠD ennis\n.set Int\nâ Ł\nĠappe als\nĠA ur\nĠspl ash\nequals IgnoreCase\nwh y\nĠs ap\nSupport ed\nĠser a\nĠ: \"\nĠVerm ont\nĠre un\nĠNov a\nĠĠĠĠĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĠĠĠĠĊ\nR ated\nĠlay ing\nĠK aren\n.Des erialize\nĠcode c\nĠtaxp ayers\n; \");Ċ\nĠcr ude\nĠm ole\nĠuse Context\nĉres p\nĠp kt\nĠC annot\nP ipeline\nåĨ Ĩ\nt ical\nAction Bar\na eda\nĠC ritical\nĠN ad\nĠble eding\nĠll vm\n/c ustom\nĠSim pson\nS y\nit ably\nĠSum mit\n()) ).\nEL LOW\n$ ',\nM et\nIn voice\nol ist\nĠsp ine\naut iful\np aid\nĠlock er\n_ arm\n\\ \"><\nĠtra jectory\n_r ing\nĠhydro gen\ntr on\nĠstat ute\nĠcondition al\nĠtr ay\n-s chool\n(w idget\n$ config\nĠrequest ing\n. uint\net on\nbrit ies\nOf Type\nAD MIN\np redict\nĠg egen\nĠH app\nOC UMENT\nĠA part\nĠ---- -\nro e\nu ide\njust ify\nĠSqu ad\nĠprof es\n.b ot\n_c urrency\ninn en\nĠM umbai\nĠNum bers\navana ugh\nagn itude\nâĢľ There\n= http\nçī ĩ\nĠv b\n+' </\nĠorgan izing\nan ium\nIn Section\n. and\nĠet ernal\nĠsou ls\n_ ONE\n_n s\n_b asic\nĠret Val\n-sh aped\nif def\nĠMo zilla\nĠe ig\ncom pleted\nNot ifications\nTE CT\nri en\nco ordinates\nĠpret end\npons ored\n.std err\nĠgam ers\nĠdef ended\nTool Tip\nuit ar\nĠfran ca\nĠW oods\nĠih re\nĠp seudo\nĠcrow ds\nĠSY STEM\nle c\n.k eras\nĠcirc ulation\ne er\n.c b\nuz zy\ní ĺ\n.read er\nĠsequ el\nSe veral\n.port al\n---- -Ċ\nistr ar\nï»¿ //\nP i\nĠ\\ \"\"\nĠcustom s\nĠdisplay Name\nĠnot ices\nĠcar b\n._ ĊĊ\nĠproduct o\nĠÑģ Ð»\nĠnumer ical\nĠun int\nĠc odigo\nOrd inal\nString Utils\nĠdÃ© c\nĠL an\nĠshow case\nĠar ithmetic\n-s croll\n_T EMPLATE\nĠRouter Module\nĠSh ader\nĠÐ Ŀ\np olicy\nPer formance\nĉb order\n(file path\nç© º\n_ energy\n_C S\nThe ir\n.sp acing\n(d p\nĠL ANGUAGE\nĠhistor ically\n\">{{ $\nĠin ode\ns il\nĠh ace\nĠsever ely\nĠOver view\nĠspr aw\nĠbeach es\n: left\n· »\n($ {\nĠF IRST\nĠSp a\n- ass\nĠb aise\nĠN ODE\nĠP izza\nP et\n(se q\n\\ \">Ċ\nCppMethod Pointer\nĠv p\nĠi a\n_se conds\nem et\n/b lob\n_TH RESH\n... čĊ\nD est\nĠN H\n.data Source\nit Ã©s\nĠJ ak\ns ell\nĠwork shops\n< u\nĠr ivals\nĠEX ISTS\nh om\n-t oken\ncompat ible\n.J Panel\nĠphys icians\nart in\nĠdes irable\nĠdistinct ive\n.D ep\ng id\nili ate\n, max\nĠprem iere\nĠq Debug\nĠadvoc acy\nĠwh isper\nP t\nĠun changed\n_q ty\nè¯· æ±Ĥ\nSe ason\navel ength\nĠP ul\nĠd ÃŃa\n'] ]],Ċ\nal is\n(\" &\nbor o\nĠb m\nĠR adi\nw rong\nĠGo ing\nime Type\nij i\n- feedback\nĠN ames\nĠB apt\nĠprob able\nĠE ther\nĠPolit ics\n_prot ocol\nlin ing\nS at\nĠcor rel\n.Pr imary\n(null able\nRI ORITY\nĠcolor ing\nĠutil izing\nd as\nĠexport ed\nĠcar riers\nCon v\n. editor\ni Ã³\n(h andles\nĠapprec iation\n. import\nĠAust ria\nĠStr ip\nil ight\nĠappropri ately\nĠP rest\nĠW ir\nĠUI Application\nal chemy\nĠM ob\nĠD etermin\nergus on\nregister ed\n_con vert\nĠVlad imir\n.Show Dialog\nref lect\nĠsh ook\nĠass ure\nĠO ften\nĠcivil ization\nĠvocab ulary\nfore ground\nĠS cope\nĠunw anted\nact ing\nĠ( []\nĠmark ing\n. original\nĠMO VE\nĠsport ing\nception s\nNS Number\nS izes\nĠprovinc ial\n_Tr ans\nĠproblem atic\nd igit\nĠEm ma\nlock s\nĠC rew\nib a\n') :\nish a\nĠm amm\nĠocc ured\nw cs\n(r ule\nĠmerch andise\nes pecially\nĠT win\nĠn aming\nĠs log\nĠimpro ves\nĠad her\n: text\n.h adoop\n_HT TP\n.to List\n.dis abled\nĠl enses\n.in i\nĠR are\nĠUb untu\nĠsc ram\nol ation\ntit ulo\nEvery thing\nĠnod ded\nicht ig\n_const ant\nz c\nl ift\nĠNot ify\nond o\nĠIN F\n(\" +\nĠK az\nĠd read\n.m apper\nle ur\nĠCome y\nĠN B\nic ers\n.P ush\nĠH ack\nĠBrazil ian\n_pro d\nĠ// ĊĊ\nĠb icycle\nĠun available\nĠadoles cent\nbl k\nĠmit ig\n_bl ue\nì ĺ\nfade In\nĠUtil ities\nĠM N\n; k\n< style\n- status\nind o\nĠinn ings\nĠg j\nĠ|| =\n.e u\n: Number\nĠcuis ine\nĠURL s\nie k\nĠw ires\nĉ ps\nie g\n.m k\nso ap\nĠsom etime\nĠst ap\n_s eries\n.T arget\næ º\n.dest ination\nOUN TER\nR aises\n& A\nĠsmart phones\nNI Env\n.s dk\nĠhelicopt er\nĠim pe\nĠB irth\nA U\nb readcrumbs\nco ords\nĠexplo red\nĠl od\nĠI p\ng able\nian e\nĠart ifacts\nBox Layout\nØ§ Ø±\nlist ener\n.c art\nĠH uff\nĠHind u\nĠData Types\nĠDr upal\nIGN ORE\nĠoffset s\nĠR TC\n- login\næ ®\nĠQ Object\nĠprosec utor\nR ock\n_ch at\nW ay\nì ²\nĠneg lig\nĠd ude\n; <\nĠdeleg ates\n_f ailed\n/ dev\n/ work\n( New\net able\n() \"\n( Icons\nĠp ork\nĠModel AndView\nĠV IP\nĠK or\nm ix\nĠox id\nĠSC REEN\nĠFour th\n/ \",Ċ\nĠte e\nĠSte vens\nt icks\nĠp ledge\nib bon\nĠLo an\nĠne o\nn umpy\nĠShared Preferences\n- oriented\nĠLogger Factory\nĠGraph QL\nzen ia\n\" _\nW omen\n.c ast\nĠdeliber ately\n+ b\nĠAr n\nfont Size\nĠm aze\nĠbl amed\n.m as\n} )čĊ\neler ik\nĠsc anning\nĠWork shop\nĠfind en\nĠca ut\nUI Font\n( return\nal in\ncast le\n//////////////////////////////////////////////////////////////// ////////\nĠincent ive\nop ath\nb lob\nĠcigaret te\nĠfert il\n*/ ĊĊĊ\nĠSh ar\nĊ ĠĠĠĠĠĠĊ\nĠunc ertain\nĠS ton\nOper ations\nĠSp encer\nĠdef in\nĠS olo\non est\n·» åĬł\nĠu omo\nG ive\nĠdent ro\n; padding\nent ai\nĠC ars\nĠenthus iasm\nĠOper ating\nS kip\npar ation\nĠprotect s\nĠre ver\nd g\nĠC incinnati\nĠconsect etur\nĠm uss\nemploy ed\na uses\nink le\n. Values\n£ ¼\nlo v\n_W ARN\nĠbook mark\nĠAp ollo\n. axis\nĠm Ã©t\nĠop ener\nĠtum or\nd an\nĠelement ary\nĠsk ipped\nĠK er\nas ia\n_res p\nĠdem ol\nĠCan adians\nĠt astes\nU Integer\nĠ' ${\n.aw s\nRO ID\nri ans\nM Q\nord able\nĠcous in\nProp agation\n(S ession\nph alt\nUL D\nĠSc alar\nĠblo ody\nĠ à¦\n.m ask\n, q\nĠUn its\nĠcent res\nĠPr im\n. ]ĊĊ\nĠSh aw\nP rom\nĠTh ought\nCheck er\n_output s\n( chan\nE INVAL\nĠb ob\n_c mp\nP ed\nĠmat rices\nĠvrou wen\nĠgenu inely\nhigh light\n(d isplay\n) !=\nĠdel icate\nĠL uther\nĠM iles\nĠuser ID\n% =\nate urs\n_B UF\n---- ---Ċ\nimit ives\nĠsh elves\nsl ow\n_in formation\nLE G\nW r\n.form s\ncel and\n/ un\n: &\n.âĢĻ ĊĊ\n=\" %\nĠpro st\nĠfont size\nuc iÃ³n\nget ic\nam t\n=\" .\nDec or\nB rit\nĠ\"\" ).\nĠfound ing\n.File Name\nĠT ier\nĠdisc lose\nÃ¡ m\n.s yn\n.View Holder\nlic ant\n_st age\nMon day\nĠdes erialize\nt alk\nĠtradition ally\næĢ ģ\nØ ®\nLE X\nĠe h\nĉ ROM\nĠ{ })Ċ\nQuest ions\nnc py\nĠfix ing\nÐº Ñĥ\n_ Key\n: x\nĠSTR ING\nĠÑĦ Ð°Ð¹\nĉ left\nĠBen ch\nell ij\nUR RED\nĠDi agram\n} catch\n/ time\nĠMiss ing\ndb name\nĠs ore\nĠW alt\nugg ing\nrep resent\nĠG S\nne ys\nĉ page\nĠvol can\n(b tn\nĠexceed s\nĠ erg\nĠpil ots\nĠS ed\ners ions\nĠpat ron\nR V\n/ top\n. asset\n_c ross\n. Editor\n.t b\nĠwel coming\nSC REEN\n) findViewById\nC oder\n<I ActionResult\n_ QUEUE\ná ĥ\nĠheight s\nRequest s\nĠsymbol ic\nččĊ ččĊ\nĠcou pons\n-f ive\nĠDes ktop\nĠm ismatch\nĠ'_ '\n_D IV\nAS ON\n.trans pose\n(m ask\nĠC elt\n. Hand\nat u\nj ÄĻ\nĠ{ });Ċ\nM iss\nĠpr ima\nm und\nol v\nĠP retty\nĠre bel\nĠF D\nast ically\nOL T\n- axis\nux e\nĠeinf ach\nĠChem ical\n_se g\nleet code\nlo pe\n_ orig\nĠĠ ĉĉ\n(D ouble\nĠPay Pal\n.Background Image\nĠhom emade\n. ).\n(p arser\nat ro\nacc ordion\nDef ine\nĠìŀ Ī\nĠA UTO\n.sum mary\nsc alar\nĠH ood\nqu in\n_d er\nĠGes ch\n.com pute\nFe edback\nĠpharm ac\nĠÅŁ i\nĠg loss\nĠF ILTER\nIN STANCE\nĠk al\n.P L\n_F REE\nGr ade\nĠâ Ļ\n.m etrics\nĠc age\n.Xtra Grid\n_d s\nz ig\ninteropRequire Default\n.remove Class\n============ =\nĠm asters\nState Exception\nill ery\nĠBr ady\nĠl ining\n_c s\nins ula\nĠ} :\n[ position\nĠR x\nĠBY TE\nĠStr ike\nĠÐ ļ\nĠCl uster\n.down load\nAll owed\nĠamen ities\nĠon Tap\nful Widget\nĠstrength s\nt weet\nĠasc ending\nĠdisc losed\ngr av\nd istrict\n) <<\n), \"\n(def un\n_ |\nĠg aze\nÐ° Ñı\nĠfor ty\n======== ===\nSc ience\nsemb ler\nĉb ody\n_trans fer\nĠlong time\nĠcomp lications\nĠbo oth\nV ERR\nĠy ields\nĠn avigator\n::_ ('\nECT OR\n_Con fig\nĠlast ed\nus al\nçĻ» å½ķ\nĠglo ves\nĠbel ly\nS ales\n(M ethod\n(m ember\nĠRe ed\npass ed\nSign In\n, num\nUL ONG\nĠL EG\nn els\nĠment or\n( rc\nĠOb viously\n. if\nĠFre der\nHE AD\n@ author\nCondition s\nĠgard ens\nĠR ip\n( users\nĠOk ay\nĠwrest ling\nimest one\nĠCert ified\nĠver dict\naid a\n.inner Text\nic ast\nĉ at\nĠpresum ably\nĠF UN\naj es\nÐ Ĺ\n> \",Ċ\n_P in\nues e\nĠover rides\n_ ready\nAdv anced\nĠop i\n-c art\n(\"/ \",\nĠDe b\nCR Y\nĠVert ical\nĠO VER\nĠCorpor ate\nĠ\"\" ;\nĠste pping\ne j\nĠaccus ations\nĠor az\n_t ail\nĠindu ced\nĠel astic\nĠbl own\n, //\nĠbackground s\nâĢĻ une\n-s dk\nĠset Interval\nĠincent ives\nĠveget able\n_ On\nexp anded\np ix\n_sh ader\nĠSP DX\n@ example\nĠW rapper\n.Z ero\nPos itive\nĠsp inner\nĠinvent ed\nĠG ates\nÐ¾ÑĤ Ð¾ÑĢ\nĠcompar isons\nè ·\n.pr imary\ndata Provider\nadd itional\nĉ options\ns napshot\n.set Horizontal\nĠ\" {}\nĠFish er\nhal ten\n< Type\nĠmax Length\nĠM t\nĠê° Ģ\n.jet brains\nĠident ifies\nĠflow ing\nĠDisc ussion\nats by\nĠsch w\nught y\nĠr ivers\n.un ique\n_PH Y\ned ral\n( ll\nĠcs rf\npp ers\nÃ¼ l\nĠEs pecially\nport ed\nĠHarr ison\n****** */Ċ\nText Color\nìĬ µ\nw ire\nĠstatus Code\nĠFin ish\nc ence\nĠMcC ain\nĠW or\n( await\nĠ) ->\nĠRegister ed\nIN ED\nk al\npar ison\nĠobj eto\nV i\nmand a\nĠrenew ed\nĠS of\ness el\n.nd array\nĠcr ap\nç® ¡\n.ab spath\n( up\nĠclear ance\nĠT W\n_C OPY\nĠĠĠĠĠĠĠĠĠĠĠĠ ĉ\nĠforest s\nĠarg uably\nĠA SS\nhe y\nam el\n_f ore\nĠSou theast\nĠab used\nĠpract icing\naked irs\nä¸ »\n_res ources\nĠp ond\n.F ixed\nLast Error\nĠPsych ology\nĠ\" //\n! :\nRe usable\nĠmens aje\nĠro spy\nĠb our\nĠvar ieties\nĠem path\n(( {\n_ org\nĠM es\nĠMag ento\nIST ORY\nUn less\nĠh j\nĠD uty\nJ un\n, size\nĠpaint ings\nĠdisp ens\nd art\nĠbehavior al\nĠr pc\ncal culate\nfr uit\n_m m\nĉp thread\nMax Length\nĠc urrencies\n_cap acity\nĠO z\nĠfire arm\nĠcoeff icient\nĠbankrupt cy\nw art\nĠfat igue\nAV A\nĠes pa\n_p c\nĠQu otes\n_L IGHT\nĠT ickets\nĠrel ates\nĠpublish ers\nĠunlock ed\nĠ// ----------------------------------------------------------------\nĠInterrupt edException\nĠout look\nr n\nĠreb els\nW ritten\nĠas ian\not to\nĠ ĉĉĉĉ\n_g pu\nT xt\n.Image View\nĠsu is\n_t ables\n.Rec yclerView\nĠwhat soever\nè ģ\n] ++;Ċ\nassert True\n_ verify\nĠR ivers\nĠ ][\nJ et\nid ian\nS ibling\nĠgen res\n.A ccess\nOP S\nĠtr ivial\nà¸ ª\nal en\nÐ² ÐµÐ´\nĠS word\nĠscrut iny\n(c b\nĠcomm erce\nĠguarante es\n_ad v\nĠL ET\nrec io\nĠh ilar\nĠback yard\nãĢ ı\nĠillustr ated\n/v endor\n. Util\nĠw ow\nLO Y\nĠMar shal\n\"> '.$\nĠB ak\nĠmod ifiers\nd ictionary\nĠSt re\nm ultiple\n\")) ,\nĠC ort\n'] \").\n( admin\nĠCre ator\nInt ernet\n( ms\nlog y\nDECL ARE\nĠMarc us\n<< <<\nãģ ł\n_m y\n(in st\nĠsc iences\nND ER\n. enter\nĠit u\nĠbeh ave\nP an\nomb ies\n=' <\n')) ;čĊ\nĠM ENU\nĠWork ers\n.No Error\nĠbind ings\nĠdis abilities\n{ \\\nĠM unicip\nĠco res\nur ple\nĠN okia\nus ions\nĠF itness\n.handle Change\nĠjav ascript\nìļ Ķ\n( dec\nĠpack ing\n-de pend\nĠtrans cript\nz eros\n_ alert\n? \",Ċ\nlib s\n± Ð¾ÑĤ\nĠ| ĊĊ\ntr ained\nĠG ent\nĠR ab\nx p\n_config uration\nå¤ ©\n_ accept\n.rec yclerview\n: url\nĠMu hammad\nĠprivile ges\n_b ank\nuk u\nw allet\nĠRO OT\nĠenc uent\n? family\nĉ position\nĠc g\nĠprec ip\nmethod s\n_f ast\nin crement\nĠT iger\n_OCC URRED\nqu ip\nĠH AS\n_d om\nĠw reck\nb j\nĠd ern\nĠorg ans\n. entries\nĠ_ ('\nram ento\nĠJam ie\nĠp unk\nIP P\nĠprogram a\nĠatt ain\nĠpro ves\n/s ign\nĠanswer ing\nĠl adder\n************************ ****\nĠW almart\nĠCONT ENT\nduct or\nĠver bal\nĠP ID\nc rypto\n_CALL BACK\nĠ= ================================\nĠpot ent\nĠshort s\n.U ri\n.un iform\n; border\nĠW er\nĠhere in\nll a\nĠI hr\nP ixmap\nl iteral\n! )ĊĊ\ng eneric\nr ust\n_script s\nost o\nit us\nĠCoal ition\nĠrem ot\nde ploy\nĠEag le\nãĢģ ãĢĮ\nĠimportant e\nĉ object\nĠseason al\nne j\naid u\nBind View\nĠSi erra\n-b g\nĠmake Styles\n[ offset\nG ames\nĠhorm one\nAR IO\nhead s\n( select\nĠStart ed\n@ param\n_de cl\n_b log\nĠa Ã±o\n\\ Api\nĠMil waukee\nPro vid\nAn imated\nĠcool er\nĠSe ed\n. Edit\nÏ Ħ\nĠT aking\nĠborder Color\n-found er\n.Logger Factory\nĠ\"\" ĊĊ\nAL T\nĠL ate\nEDI ATE\nĠ);ĊĊ Ċ\naf a\nĠcancell ation\nAt om\nĠB irmingham\nemp resa\nHE MA\nasc al\nĠup side\n.V ersion\nĠF older\nĠE ight\nĠV intage\nĠApp Delegate\nĠPre vention\n.se parator\nST M\n( room\ngener ator\nĠc attle\nĉ Z\nĠPart icle\n' };Ċ\nĠneighb ours\nĠState less\nĠalt itude\nĠsa int\nÐ¾Ð± Ð°Ð²\nĠconv inc\nĠCont ents\nĠje une\n(t s\nSerial ization\n(c ollection\nĠJ azz\nĠD od\nĠR och\nac io\ncomm ended\nDEF INE\n.on load\nĠspecial ty\nPL ACE\n_MO VE\nĠaccount able\nRe uters\nĠf icken\nĠde pr\nW ow\nV oid\n.s pace\nà¸ Ĺ\nĠt q\nĠP ets\n< $\n(C urrent\nber ries\nplan ation\nĠlist Of\nĠTh u\nĠPR INT\nĠm ismo\nĠdo i\nch k\nĠUn icode\n( role\nĠvir gin\n< Point\n_RESP ONSE\n-h ouse\nĠVenez uela\nEM AIL\nĠp Ãºb\n_ex ist\nB all\n.C L\nre ferences\nĠBeautiful Soup\nĉ Expect\nTH IS\nÑĥ Ð´\nb ane\nĠtemp oral\nER IC\net as\nĠrefresh ing\nĠsec ular\n@ synthesize\nac cur\nĠn ella\nĠS OL\n.p ipe\nCh annels\nèĩ ª\nĠinsert ion\ná» ĭ\nel ia\nĠadjust able\nCan ada\nĠI TEM\nĠcur ves\nĠChe ap\nlet ing\nĠoptim istic\nal lo\nĠpolit ician\n_down load\n= edge\nORT H\nĠmodel o\nart o\n. rotate\nĠs elenium\næĪ ĳ\n_al ias\nĠrenown ed\n.' .\nĠc zy\nĠal les\n.Com piler\nĠB ass\nConn ector\n.R ole\nL INK\nĠc riterion\nlem etry\nSuccess fully\n/p ng\nĠey eb\nasp berry\n( gr\nĠd angers\nĠcorrect ed\nĠgl ow\nĠelabor ate\nĠB ears\naw ai\n=\" '+\nĠpromot ions\nĠmathematic al\nĠ\" `\n_Generic Class\nĠChe f\n.S ort\ntable Name\nR IC\nĠvolunt ary\nĠBl ade\n-e lect\nĠCom bat\nĠAb ility\nĠab dom\nĠd uck\nT mp\nåħ ¨\nĠer ase\n.P h\nĠDefault s\np artment\n_US B\nÃª te\n; '\nĠp ads\nĠOb amacare\n.T otal\nĠdiv ert\nĠcr icket\nĠrecre ational\n( red\nĠC le\nR U\nĠmist aken\nĠMont ana\nĠstr ive\n_sl ider\nĠPl astic\nĠdecor ated\nĠV P\nlic o\nĉf alse\nĠpre fs\n( \\\"\n_f alse\ni endo\nĠ@ $\nB ucket\nact ical\nĠZ hang\n.c ols\n.B inding\nĠw ax\n_ST ORAGE\nĠlaw n\nĠr f\n.Sc ene\nĠCal culator\n.d esign\nĠres il\nÐ» ÐµÐ¼\nE mploy\nĠPr ices\nĠP WM\nag i\n.e valuate\nĉ param\nĠbr ass\nbb en\nĠinflamm ation\null ivan\nĠan not\nĠp H\niam eter\nĠB TC\n( box\nStory board\nĠcl ay\n.assert Raises\n| string\n.App ly\nĠmatch er\nund ed\nĠsatisf ying\nĠìł ķ\nRender ing\n_app ro\nind rome\nAN EL\n_f ix\nbr ush\n.M atch\nĠsm iling\non aut\nS unday\nĠdelet ion\nĠencour ages\nP ull\nĠreven ge\nĠqu arry\ntr ade\nĠc ables\n(d elta\nites pace\nĠf h\n.b unifu\nĠvi el\n_IN CLUDED\nĠT ail\nad ar\nof s\nĠmet als\ng om\n_method s\nĠn j\n.St d\n(w in\n$ ('\nĠt urtle\nur on\nĠen rolled\nĠH z\nĠBox Decoration\nĠp ont\nrel ationship\nB i\n³ »\nĠmas cul\nĠsh ades\nĠv r\nĠLog ic\nĠa in\nĠD IST\nĠcoll ar\n\" profile\nGenerated Value\nĠP ossible\nĠe ines\nĥ ģ\n.time out\nĠE c\nĠjer sey\n.D ouble\nĠqual ifying\nv or\nCRE EN\n_A pp\n_rec v\nĠali ens\nIt s\nE sc\ni ator\nĠE clipse\nĠg h\nV ict\nĉ html\nto o\n. const\nĠant erior\nĠW u\n(key s\nĠul tr\n_p oly\nĠT ap\nĠB ud\nA WS\nĠcrash es\n_t ot\nCont in\n-h anded\nalth ough\nà¸ ļ\nific ent\nĠde ve\nut ory\nĠW orth\n_M S\nĠfloor ing\nĠsell ers\nĠThank sgiving\nĠp ng\nĠval ores\nĠslee ve\nĠfil le\nÐ Ĳ\nĠappoint ments\nĠv im\nUser Info\nBO OST\nĠpos ed\ninitial ized\n.product s\nĠLeaders hip\nman uel\n' %\nem arks\nPer centage\n(d ist\n. avatar\n(h Object\nä» Ĭ\n_ iff\nic one\n; )\n_n il\nĠab ol\nÐµ ÑģÑĤ\nĠven ues\n.Con vert\n! ')Ċ\n.B itmap\nsk in\n_C OLUMN\nRe v\nG RESS\ng ow\nĠw ished\ntract s\n.assert False\nĠscreens hot\nĠfo is\nCom b\nLine Width\nĠGr ab\nĠint ensive\nĉ sh\n+ )\n.first Name\n_PRO CESS\nĠt ilt\nit ored\n.L OG\nĠb ak\nĠintention ally\n.play ers\n(c anvas\n)) )čĊ\n.Pro vider\n_P UBLIC\nT alk\nĠL iv\nched ulers\nĠl c\nad ic\nfeature d\n.res ources\nFull Name\nĠmean while\nB uffers\nĠres olver\nĠS AP\n_T E\nG NU\nĠForms Module\n_ wh\nĠS we\n.widget s\nĠcabin ets\nĠsus cept\nĠB ott\nactiv ex\nav ar\nant ics\nĠ\" =\"\n_k wargs\nĠgame Object\nĠAng le\n.I ter\nmar sh\nĠB irthday\nĠC MS\nrequest s\nĠPear l\n_E OL\nĠlin ux\n( org\n_M ouse\n.con structor\nĠz d\nĠk icks\nart isan\nĠe ax\nK n\npon ge\nĠFin land\nĠmet res\nĠAss essment\npart ner\n/ pre\n! ',Ċ\n[ Int\nĠos lo\ndate picker\n/ String\nop lay\nĠHe brew\n, double\nĠtrab al\n+\" \\\nĉ EIF\n/ text\n_F IRST\nĠP ete\nĠe go\nĠextr as\nP DO\nĠreg ulate\nĠQ Widget\nst s\nĠSh ows\nĠN HS\n.c ourse\np thread\nĠF uel\n.t imes\nĠÂ °\nĠstr ides\n($ ('#\n( words\nĠrhyth m\nĠsp ont\nĠsens ation\nĠsp ike\nC losing\né¡µ éĿ¢\nN umeric\nĠbreat he\nĠfin ale\n_F ACT\nin ion\nĠch ill\nĠform ally\nANG ED\nĠ' :'\nĠÐ¿ÑĢ Ð¸\na q\nĠFab ric\n(l at\nĠPr incipal\nĠer ro\noc ale\nN om\nĠf ost\n_C USTOM\n.int ellij\nert ools\nĠcl asse\nadi ents\nĠfundra ising\nEN E\n_OPTION S\n_ ob\n// }Ċ\nĠprote ctions\n.se ed\nN V\nterm inal\n;; ;\nP redicate\nĠì ¶\nĠbomb ing\nG F\nĠch ew\n)) ).\nqual ified\n] ={\nlist en\nC ENT\nd igest\nE ast\nĠd iver\nĠend points\nĠe e\nĠcolle ague\nĠdissert ation\n_com mit\n_D AT\n. rc\nĠbre asts\nĠR ug\nĠP il\nContract s\nĠBry an\nWeb View\nĠconcent rate\nĠIn ner\nĠ' |\nstd out\n_S ub\n> -->Ċ\nV ol\nĠS SD\n)) ),\n. Optional\nĠnurs es\nĠor b\n_ pe\n);čĊ čĊčĊ\npl aced\ness er\nĠther apeutic\nĠwhites pace\nĠa ston\nSuccess ful\nĠpr aised\nĠW es\nĠe ighth\nir al\nĠvrou w\nĠf action\n_b ias\nĠw itch\nĠnp c\n(s b\nĠRod rig\n_b ig\nDep endency\nĠAb raham\nard i\nC AR\nn os\nĠabund ance\nĠnut rients\nin stein\n.V ert\nĠI SS\n< U\nĠsum s\n_h ist\nĠfar mer\nĠA br\nSh ot\nĠBad Request\nĠh ass\nĠR ails\nĠaffili ated\næĿ ¥\nĠer f\nIN F\nĠView Holder\nmin i\nĠR oth\nĠfaith ful\nĠPhill ips\nAND OM\n]. [\n_P AY\nĠAr ctic\nf aker\nD igit\nM ale\nstd err\nse ys\nĠ Å¡\n_rem ote\nli que\nĠin def\nĠIndust ries\nit ra\n_p airs\n< iostream\nĠsal aries\nik en\n.F rame\nPL IC\n_S PEC\nĠMed iterr\nĠsystem atic\nĠinter rog\nIcon Button\nse a\nint ro\nĠIss ues\nenc rypted\nĠintern ationally\nĠsn printf\nĠpast a\nĠBrad ley\n_ Status\nAL K\n_P AD\n.l aunch\n< select\nĠhar dest\nĠph y\nĠ(( *\n-s lide\nĠNob ody\nS u\nĠas ÃŃ\nclose st\n_initial izer\nĠsupport er\n-g en\nĠt ales\nĠcor p\n_f u\ns at\nne ighbor\n.M igrations\nĠal gun\nĠsin on\n.S pec\n? ,Ċ\n.G L\nm ale\nĠmon itors\nyl an\n-L icense\n.m atches\nĠA BS\nĠM ast\nĠW allet\n($ (\"#\nDir ty\nĠco pe\nĠinterpol ation\nous ed\nĠJ ets\n.F LAG\n.C ancel\n.Event s\nne ver\nĠM Hz\n> D\nĠs ervlet\nbast ian\nĠ> &\nS ID\n_cl k\nĠdiv isions\n} ',Ċ\nĠd ildo\nĠpar ade\nm ajor\nĠab oard\n; ++\nĠf usion\n\"}, {\"\nĠDialog Result\nĉ arr\n- em\n_n r\n(h andler\n.N ET\n.Xtra Reports\nĠSh ah\nĠB rief\n- ,\nĠprec io\nĉĉĉ ĠĠĠĠĠĠ\nĠt ant\nĠGrand e\n/ xml\n_IC ON\nĠR etro\nun que\nĠn ag\nto Fixed\nX L\nĠdecl aring\nĠCon crete\nĠAm azing\nĉprint k\nĠdeb ates\nD ATED\nĠaest hetic\nemet ery\nRouting Module\nĠNash ville\nW AYS\nĠw olf\nĠobserv ers\nOT A\nans on\nĠe a\nĠgreen house\nĵį ä½ľ\nĠst air\nĠimmigr ant\n_app ly\npe are\nĠBloom berg\n_PL AYER\nRes p\næŃ £\nCho oser\nĠI Collection\nP eter\nEr ro\n.detect Changes\nMap s\nĠs queeze\nĠHom es\nweg ian\nĠformat ting\nĠnegot iate\nul d\nĠN ep\nĠQ B\nĠeconom ies\nĠ*/ ,\nĠredu nd\nĠA ber\n.IsNullOr WhiteSpace\nyc led\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĊ\n_S h\nĠske pt\nĠre created\nĠget Type\nĠmarg ins\nĠcolon ial\nch arts\n// @\nĠprocess ors\nè¯ ´\nb atis\næĦ ı\nator io\nmention ed\nP atient\nĠpre y\nCheck box\n_x path\n.s kip\nĠMorm on\nĠMemory Stream\nCRE MENT\nĠk u\nm eld\n\\ Data\nĠK ernel\nil tr\néĢ ģ\n( profile\nCar bon\nRO LE\n( pl\n] *(\n.m emory\nĠmed al\nĠadvis or\nit Ã¤t\nĠh dr\nier ung\nĠProvid es\n( alpha\nĠteen agers\n- parser\n.L atLng\n] ()Ċ\nĠfel ony\nĉĉĉĊ ĉĉĉĊ\nBO OK\nĠsl ash\nĠclear fix\nĠPro phet\nå® ¹\nright ness\n-f i\n.k ind\nert on\nJ im\nĠmanip ulate\nĠworks heet\nol in\nst ars\nĠart ifact\n_EM PTY\nĉm ain\n------------- </\n/ static\nIT IES\nĠCoun sel\nĠW C\nĠBL ACK\n-s ystem\nĠTri ple\n.b t\nso ftware\n] ').\nIn jection\n_not ify\nĠfif teen\nĠamb assador\nbreak ing\nURI Component\nĠPro test\n.Res et\nĠMP s\nv ro\n.get Status\n_m ore\nc up\nĠKen ya\nå· ²\nĠam munition\n×ķ ×\nĠD ash\nĠunder go\nĠbudd y\nÑĤ Ð¾ÑĢ\net ically\n_O ut\nĠBroad way\nª Į\nĠF itz\nĠstri pped\n-c ache\nĠ umb\nĠan om\nĠs iblings\nocument ed\nInterrupt edException\nĠp eng\nl st\n_AL IGN\n-c ap\nR D\ncell s\nĠMot ors\nĠtransl ations\nust ering\né ļ\nĠle aks\nfile Path\nĠout going\n_end point\n_G L\n.l iferay\nric ht\nĠOpen GL\n.j pa\nĠaff ection\nfl ux\nĠg ly\nĠb ud\n>' ;\nĠexpress ing\nĠI Q\nĠF act\n/************************************************************************ *******Ċ\n_m ass\n)) :\nĠcon dom\nĠcreate State\nomet own\nĠir r\nĠ> (\n> B\niter ation\nãĥ ª\nĠshirt s\nount y\n-> $\n_S IGN\nĠD ale\nĠj j\nE asy\nF re\nĠN y\nĠch lor\nmatch ed\nĠG erm\n- UA\nĠN athan\neduc ation\n-y ard\n- che\nh ouses\nr itional\nĠprox imity\nĠdies em\náºŃ p\nĠd rought\n.a udio\nĠLe o\nĠfavor able\nin ch\nĠD aw\nrib ly\n_st udent\nid able\nO VE\nĠlack s\nounc ing\n.b usiness\nĠre open\nmay be\n_G LOBAL\nĠdress es\nĠEd wards\nens ible\nĠHard ware\nĠEx cellent\nĠTime Unit\nCTION S\nĠsched ules\nĠseg ue\nOp ens\nam men\n- Identifier\nĠst aring\nĠhapp ily\nĠH ob\n' _\nĠ\" );\nament os\net ched\nĠ/> }Ċ\n. Users\nĠinterrupt ed\nContact s\nĠreg istro\nin burgh\nCH A\n_ imp\nph is\ns ay\nĠretail er\n.N ODE\n/ maps\n_L AST\nĠCh arge\n_g uard\nColl ider\nĠStateless Widget\n\": [\"\n(\" ../../\niox ide\nĠS und\nĠ'' ;\nun set\nadd Widget\nÐ» Ñİ\nel les\nalk er\nA rc\nĠded uct\nG UILayout\nĠV illa\nĠfor bidden\n_ where\nĠ\\ /\nĠT ib\n_A X\n] čĊčĊ\nĠB ir\nĠb end\nĠMA KE\nĠM ET\nĠfut ures\nĠweight ed\n\"\" \"čĊ\nĠauthor ize\n(pro gram\n}, {\"\nĠcoeff icients\nÃª s\nPer Page\nĠBath room\nĠPublish ing\nG PL\nĠsub missions\nĠNUM BER\nj Äħ\nĠaddition ally\nem pre\nĠSh el\not yp\nS olution\nĠth under\n_ ec\nĠĊ ĠĠĠĠĊ\nĠF ellow\nĠk ay\nĠnew State\nONT AL\nIm plementation\n.L ook\nĠ ents\nĠl ors\nĠB IG\nf ab\nĠaver aged\nĠFe edback\nĠW ells\nĠm artial\nĠind ul\nĠComm unist\nĠFore x\nĠAgricult ure\n\" [\nĠqu ar\nĠK ont\nĉ view\n. Bytes\ndes ktop\nĠM akes\nakes peare\n.Null able\nĠspot light\nV B\now y\n(t orch\ntr idge\n_b ounds\nĠapolog ize\n.add Item\nant d\n* );Ċ\n, u\n(g en\nç» ĵ\nre ator\nĠC ord\nou pper\n.m etro\nĠ ew\nĠW ORD\n.A fter\nĠdet ained\nĠHam mer\nex isting\nĠo st\nĠmon ument\n-c ustom\nUser ID\nĠN om\nĠre jection\n(d im\nĠsingle ton\nĉd ie\nari ance\nre ports\n] !=\neld a\nĠpreval ence\n_reg s\n.\" .\nĠfemin ist\nCode c\nĠ **Ċ\n(label s\n_M ARK\nFA ILED\nĠadminister ed\nW N\nĠĠĠĠĠĠĠĠ ĉĉ\nĠn oun\nw ig\nĠg otta\nĠr if\n- im\nĠPaul o\nĠCommand Type\n] ))ĊĊ\n-z ero\nTr aining\nĠl ord\n_ art\nre ddit\nC ert\nĠpes o\nR ot\nĠend anger\n.d r\nuser Info\nun ts\nn v\nĠTrail er\n-f irst\n(m ake\nĠbenef ici\n-bl ack\ni ÃŁ\nĠund oubtedly\nĠm ex\nĠAnc ient\n( as\nĠdes cent\nP ick\nĠrep lica\n$ obj\nÃ¤ hr\nĠar rows\nft y\nĠLib ya\nug a\ncharg ed\nT ur\nĠh omic\niss en\nĠF ake\nĠbe ers\nĠsc attered\n( Time\nUT IL\nĠbureauc r\n/pl ain\nĠstick ing\nFA IL\nĠC ovid\nTh ird\n_p resent\nĠPier re\nĠë ª\nĠ[... ]ĊĊ\nPro b\nĠTra ffic\nica o\ndo ctor\nĠ), ĊĊ\nT abs\nal u\nï¼ļ âĢľ\nĠinher ent\n_N o\nrit is\nĠPro of\n.b asename\nä¼ ļ\nĠch im\nĠProt ected\nc rit\nĠpr one\nĠÐº Ð¾Ð½\nĠHero es\nĠan xious\nĠan os\nĠweek ends\nĠs ext\nĠredu cer\n= UTF\nh alf\nĠS aw\n.m m\nĠnue va\n.current Target\n.l ua\n_EXT ENSION\nĉ reg\nĠC trl\n_ align\naccept able\nĠrush ing\nfr ac\nĠbo asts\nF ive\nÂ ±\nĠTem perature\n> ):\nĠchar ter\nRE ATED\nĠsubject ed\nĠop c\nhealth y\nä½¿ çĶ¨\nĠScient ific\nĠfra u\nri ages\nà¸ Ķ\n.in ventory\nation ale\nM ad\nmin utes\n>> ();Ċ\nĠEn v\nĠrecord ings\nĠsusp icion\nsql ite\nĉ read\nãģ ¦\nĠwor ries\n.put String\nĠSh anghai\n( uid\nr er\nĠvÃŃ de\n\") :\nĠmethod ology\nĠÐº Ð¾ÑĤÐ¾ÑĢ\ncc c\nav ad\nĠindu ction\nĉ Thread\n, string\náº¡ i\nneh men\nu ition\nĠ* __\n.em f\nĠì ľ\n/th emes\nĠN ine\n. One\nĠEm bed\nĠf az\nu ations\nĠpriv ately\nĠl ing\n[ F\nush i\nĠlaunch es\n( KEY\nG MT\nĠaim ing\npat ible\nĠB iden\ni w\nĠD egree\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠ$ ('<\nÃ¡ rios\nto UpperCase\nìł ľ\nĠE UR\nĠovers ight\nĠtable sp\nUp dates\n.m akedirs\nĠhum idity\n/ template\nAl ways\n( IS\n_c ert\nD ig\nĠunder way\nort on\nĠHur ricane\nĠsp ends\nĠSeg ment\nĠfl ies\nĠT oggle\nĠLyn ch\nĠs enses\nĠK os\nset Enabled\nist ically\nĠtest er\nĠadministr ators\nĠtag ged\nÐ ĵ\nĠshort cut\nĠRes olution\nĠsuperv ision\nĠAsh ley\nTr acking\nul atory\nand el\nist en\nĠun re\n(d iff\nANT S\nĠr ider\nĠs Äħ\n.S eries\n_ orders\nORIZ ONTAL\nĠret ention\nãĢĤ </\n.Test s\nS yn\n.parse Double\nk ode\nz ent\nGener ation\nĠadm its\nĠLe ak\nĠa ka\nRO WS\nĠAng ela\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠ\nĠno on\nĠst ark\nĠdrag ged\nãĥ¼ ãĤ\nĠrec yclerView\nĠSil icon\n_s uffix\nJ on\nco ck\nĠProb ably\nInt roduction\nĠT error\n( This\nĠBase ball\nĠj enter\nchest ra\n.n an\n= g\nĠclar ify\ny ii\nro ots\nĠnote book\nĠEx cept\nĠr ises\nĠBr ussels\nator ies\n. USER\nrosso ver\n/ upload\nĠEvent ually\nCons ider\nĠB ound\n. identifier\n(un ittest\nĠinfer ior\nĠc rc\nĠaut ism\nUI Alert\nĠK avanaugh\nin ement\nqueue Reusable\nS kin\n.back end\n.get State\nund ing\nĠsub class\nĠref ined\nĠanno y\nĠr nd\nDirect or\nĠë Ĥ\nbe cca\nm ongodb\nĠCommon wealth\nA z\nĠTh ing\nĠre com\nun ing\nĉ con\nĉ ĠĠĠĠĊ\nem ics\nec d\nĠhorn y\nAT RIX\nĠmis leading\nĠB ew\n/ node\nc stdio\nà¸ §\nĠaddition s\nr ir\n_request s\nĠre cherche\nst udents\n_position s\nert ext\nĠEv olution\nand ez\nĠdist urb\nkey up\nĠBut ler\n.read lines\n_std io\nĠbe e\nĠArch ives\nĠnever theless\nUR ITY\nĠdr ones\nur ities\nĠâĺ ħ\n\"> čĊčĊ\nĠdi agonal\nĠC ancellationToken\n_ Internal\nĠru in\n.Q t\nocr atic\nT el\nĠAn swers\nm atic\nĠx p\nat em\n_j obs\n_ any\nĠsen iors\nĠland mark\nĠQ List\nĠman eu\not ify\n/ \";Ċ\n/ server\nĠPhil osoph\nuten ant\n( io\nh z\nĠauthentic ated\nd v\n- Compatible\nOrigin ally\n, function\nãĢĤ čĊ\nĠRepresent ative\nas ily\nirc uit\n.d t\n(m ath\n.M arshal\n[ ,\nĠC ities\n_ turn\n| )Ċ\nĠcant idad\nal ter\nĉ ui\nĠNe braska\nĠsk irt\n.b g\nShared Preferences\n( style\nĠg rief\ng ew\nĠsaf eg\nol ang\n_l ists\nì Ľ\nĠgran ite\nĠhott est\n.j dbc\n.C ustomer\nĠâī ¤\nĠwa ar\n_sc ene\n+' /\nĠJ TextField\nĠse ating\nĠwe ars\nĠ` /\nC ases\nĠY outube\nÄ± m\nĠbal con\n, G\nMeta Data\n- price\nSC R\nUn ity\nĠtr unk\n={` ${\nĠearthqu ake\nPart ial\nĠsub st\nĠelim in\n=\" '.\n//* [@\nĠsuperv isor\nvro let\n_ article\nĠp ane\nb io\nĠmot ors\nN M\nF rank\nĠon ion\n- word\nItem ClickListener\nĠb rit\nend encies\nCom puter\n_r unning\n( day\n- he\n(n amed\nĠS ach\nÐ¾ Ñĩ\nc ampaign\n.Ab stract\n(w rapper\n.p ay\nĠu w\nGe o\nr ails\n/ select\nicht e\nson s\nE VENT\nĠal iment\nPro viders\nA wait\n_INTER VAL\n. off\nĠgl uten\n_cl oud\nĠw en\n.ex tract\nĉ button\n/ MM\nPart y\nĠdem ographic\n_err no\nĠh iking\n(' ')Ċ\n\", @\"\nĠw it\nr Ã¡\nolog ie\nĠSt yles\nĠBrowser Module\n.Request Mapping\nic ans\nP AGE\ncre ation\nĠF erguson\nud ed\nnum bers\nĠGT K\nĠpresent ations\nĠB obby\n_s pan\nest yle\nĠilleg ally\nabel a\nĠbattle field\ncap acity\nter ror\n] \");Ċ\nĠwar rior\nle ader\nĠDB G\nĠRe venue\nĠvig il\nĠcounter parts\n( Error\nACT ER\nĠhe eft\nĠselection s\nze ug\nt om\n-t wo\n. ;Ċ\n_st atement\nĠA id\nĠV ul\n_r gb\nĠpr izes\nĠedit able\nĉ form\nÄ±n Ä±\n.de cor\nD emo\nlic es\nĠen ctype\nrat ulations\nĠR OS\n_ch ars\nĠJ ahr\npart ial\nÑĥ ÑĤ\nĠRe ceive\nĠL ands\nAP TER\nĠch opped\n.. \"\nĠAn aly\nĠU ID\nĠR adeon\nĠB ee\nĠun m\n> M\n.find all\nToken izer\nĠWH AT\nĠs j\nD rawing\nE ss\nON D\nĬ ¶\n(p acket\nâĢĶ but\nInv ocation\nĠN uclear\n? ;Ċ\nĠgrand es\nĠC rypt\nrem ark\nĠ'../../ ../../\nĠin ability\nm agic\nc ats\nĠsim ulate\n: ${\nin flate\nĠen er\n: NO\nip les\nĠmer it\nĠR ated\nĠgl ue\n/b log\nĠg ren\nĠthr illed\n.C H\nunc an\nĠPR IMARY\nĠper sec\nĠfe ared\n.M IN\nĠThe ater\né Ĵ\nategor ie\næ® µ\nĠappet ite\ns quare\nĠAlex and\n.User Id\n_g t\n_ enter\nĠgradu ates\nFragment Manager\nAuthor ize\n-N LS\n(M y\nĠtri umph\nust ing\n_PARAM S\nChar acters\n(: ,:,\n_B UILD\nM Hz\nĠwash ed\nĠun cle\nSte ve\nard own\n<std io\n_ terms\nĠM AR\nĠh ose\nuc us\nĠCl aim\nĠR ams\nĠmodel Builder\nĠn Ã©\nuser ID\n= json\n.Response Writer\nĺ è®¤\nĠgr upo\n- it\nĠK O\n-M ail\nĠcon ferences\nIF A\nĠAss ad\nĠpron ounced\nĠancest ors\nĠTR ACE\nĠGe Force\nĠpriv at\np ell\nemo ji\nĠ ÙĪ\nGen re\nĠconcentr ated\nj ang\nM OTE\nĠZ oom\ntool bar\nĠutter ly\nĠen compass\nĠSoc cer\nĠe urope\n- air\n.an im\n_C TL\nher ent\nre x\ninter active\nãģ§ ãģĻ\nĠK as\nĠdesper ately\n( ar\nĠb ik\nĠtr averse\ne urs\nRec yclerView\nĠMarg aret\nĠhope ful\nĠM ig\n_MEM BER\nre ceiver\nMatch er\ndepend ent\nĠexcell ence\nÐ°Ð ¶\nLO S\nAs pect\nĠad alah\nĠEcon omy\nul ously\nĠevalu ating\nĠdev iation\next er\n/d at\nC ols\nĠP oker\nboard ing\n.Child ren\nANG LE\nÃ ¯\nĠY oga\nĠh ated\nAd am\nĠF CC\nIM AL\nĠf aint\n_DIS PLAY\nĠev olve\nĠfr idge\nĠrÃ© g\nĠemotion ally\nâĢľ If\naw ei\neres a\n', \"\nB EGIN\nĠV ARCHAR\nĠx i\nf actor\nt z\n_ph ase\nSE Q\n(r and\nĠmathematic s\nĠcontext s\n- ac\nĠF IG\nĠC aption\nĠWait For\n-w est\nĠfire fight\n_LE D\ne ctions\nĉ throws\nĠT akes\nob re\nĠAv atar\nĠInn ovation\nĠcal ibration\n: this\n_enc oding\nĠcalcul ating\nĠ ################\nĠProgram s\nĠH IGH\n.configure TestingModule\nP olygon\n_DB G\n\"], čĊ\nÐ°Ð ±\nĠsimilar ity\nĠprze z\nĠF irm\nĠmis under\nĠM oving\nĠMO V\nĠre actor\nRequest ed\nex pects\nĠer ect\nlic ht\nould er\nID GET\nĠdev il\nĠprogram mes\nĠCommon Module\nĠ\"' \"\n(A uth\nãĢĤ ï¼Į\nĠState fulWidget\nè® ¡\n/ open\nin ally\n.R ound\nĠW ish\nĠhuman itarian\nAccess Token\nĠSO C\nĠp okemon\nĠv apor\n_add ed\nĉ Get\nsp ell\nĠIniti ative\nĠH EL\nair ro\nb led\nĠÐ± Ñĭ\nĠsens ible\nĠL ua\n| (Ċ\nĠfix tures\nĠorg asm\nC ut\nuk t\ng ue\nĠcred ibility\n: image\nĠC PP\n.s n\n(d esc\nĠRe id\n-de gree\n_s ound\nCl one\ná» Ļ\nak si\n> ${\n_confirm ation\nĠtro phy\nWork s\nĠElect ronics\nĠMediterr anean\n_m etrics\nĠannounc ing\nĠD AY\n_pro to\nĠp ear\nbase Url\nĉĉĉĉĉĉĉĉ Ċ\nĠcoord ination\n: N\n.an imate\nĠC otton\n_h it\nâ ľ\nĠjet zt\nif ter\n(f ields\nown load\nific acion\n.c uda\nĠLi u\n> equals\nĠA ce\nÑĢÐ°Ð ¼\nĠSuper man\nĠGarc ia\nĠarrest s\nag ar\nĠ{} )\nĠmac ros\nrou pe\nÃª tre\nĠtw isted\nstr uments\n_ (\"\n_ vertices\nĠTrans ition\nÐ¸ Ðº\n[ max\nm ind\nĠaccess Token\nĠun le\nm us\nc op\nĠF actor\nĠcon ced\nĠre tr\n.l inalg\n-s lider\nob l\n_Static Fields\nĠz ombie\ns elling\nĠch ap\nĠsh aking\nĠTrans late\nĠAm sterdam\nĠE TH\n_EX TERN\nk d\n_d isc\nĠpreced ing\nĠpri x\nObject Name\n_mod ified\nard ware\nĠ?> \">\nĠD W\n` ${\nĠ?> \"><?\nuy en\nĠdon na\nĠx si\nĠ$ \"{\nĠD rawing\n, nil\nĠon der\nB G\nO bserv\nĠconsider ations\nbo at\nĠB anks\nĠind ict\n, I\nĠBl u\n(v ersion\nclient e\nol an\nLE SS\nassert Same\n_ void\nĠW AS\nĉ enum\nĠmix er\nE W\naff e\nĠblow job\ntext Field\nĠimm ense\n_re po\nĠglob als\nant ages\n.t oday\nTh ursday\nĠBr ig\n{ })Ċ\nĠIm agine\n(G PIO\nĠest o\nĠPro vince\nĠM ental\n_c ells\nĠJul ian\n.S creen\nĠc andle\nĠmon de\nĠv erg\niter als\n-l ayout\nG uest\nĠv ind\nĠE cho\n') }\nĠman n\n_BO OLEAN\nh ap\nĠnight mare\nUG H\nĠnon etheless\nĠa the\nĠHoll and\nĠB orn\n\\ ORM\nan ut\n_level s\nĠpet ite\n- art\n_SH OW\nnumber Of\n_th umbnail\nam ins\nĠDef ines\nĠ\" =\n.Status Code\nĠdign ity\nĠB ike\n.New Line\nĠGl as\n( logger\nĠcatch es\nv otes\nĠexam ining\n/ register\nĠspec ifying\n_f ixed\nĠdraw ings\nTh reshold\nA x\nĠArchitect ure\n(p id\nW ire\n( cont\nl ane\nList s\nĠs print\nĠgrand father\n_A G\nĠsched uling\nCL US\natur ity\nĠlock ing\n[ size\n_st yles\nĠw b\n-- >ĊĊ\nĠspin ning\n_p ending\nMatch ers\n. Keys\nĠP V\nen us\nant is\nĠdisc ard\nĠh aul\nĠem pir\nĠpath way\nĠo ak\nÐ¼ ÐµÐ½\n-ind uced\nĠimp air\nĠCal gary\n.is Hidden\nd z\n_ include\nĠg m\nĠ' ('\nP Y\nuggest ions\nĠcommod ity\nc ro\n/ sub\nĠget Instance\nĠLeg acy\nĠK il\nB al\n( short\nIn form\n+ x\n* r\nĠHope fully\nor ate\nĠmach en\nĠtreat y\nĠO ri\n.p ublic\n-h orizontal\nĠtact ic\nĠb ord\nw ares\nĠam mo\nĠL ists\nĠequ ations\n/ her\nĠNS W\nB ounding\n_C ollections\nĠav ail\n.Drop Down\nè °\nĠh h\nĠl Ãł\n.p b\nĠmemor ial\nĠAT TR\nĠexhaust ed\nĠt sp\nĉ redirect\nĠlik ewise\nST ER\nL java\nĠcondem ned\noca ust\n(str ict\nĠexem pt\nĠs ms\nĠex agger\nS YS\nĠl ounge\n: ^\nĠto dd\nde b\nator ial\nĠPort er\nĠtu ition\nĠexem pl\nĠp aren\n.line To\nĠkid ney\nĠÃ§ a\nĠc ui\nï¼Į è¯·\nX C\nĠmo Å¼\nĠnomin ated\nl ung\nIm Gui\nĠB uzz\nĠstere o\nport al\nres as\nĠk lass\nĠdraft ed\nĠproject ile\n/g pl\n(param eters\n* )Ċ\nĠassist ed\nĠNS Integer\ns itemap\n:n th\n.View s\n.Argument Parser\nĠme er\nz ier\nĠD ig\n<? =$\n_per mission\nĉ Add\nolog ia\nĠsc i\nĠfinancial ly\nĠscroll ing\n.d ist\n_H AS\nub untu\n.p ages\nIn cre\nbur se\nĠAm ateur\næº Ĳ\nB lob\nĠch olesterol\nDE S\nmin imum\nĠref using\nunn ed\nÐ ľ\nĠR D\n.S ervlet\nĠ*/ ;Ċ\nudd en\nĠview Box\nĠmetabol ism\nĠste aling\nĠB ever\nagn etic\nVERR IDE\n_A UDIO\nÑĢ Ñĭ\nĠarch ives\n.line ar\n={ <\nunc ated\nAccess Exception\nĠpicture Box\nĉ select\nL atitude\nvis or\nre ib\nĠp ak\nH ope\nĠIter able\n.response Text\nĠQu ad\nĠBrook s\nĠT ot\nO PT\nel ong\nĠcoc aine\nĠan o\nD an\nĠps i\nÐ°Ð» ÑĮ\n.get Child\nĠRE F\n- ab\nĠTri angle\n< Text\nĠColomb ia\nink y\nèī ²\n) }>Ċ\nĠpl ag\np ine\nĠblank et\nĠ: </\nĠTrans lation\nn ov\nĠper fection\nĠConf eder\n.st ub\n.Interop Services\n. Store\nĠen rollment\nĠde er\nM ovement\n- from\nh c\nĠev angel\nĠIll ustr\nĠtr ump\n_ Start\nplan es\nĠB il\nInf os\n- trans\nĠr anch\nĠL inda\n_m ar\nRE T\n/ net\nL aw\nN F\nĠPre vent\nĠc ried\nĠeduc ate\nast ics\ny i\n.Line arLayout\nM ETHOD\nĠE g\nm apper\næ ĻĤ\n.as array\nÏ ģ\ni Ã§Ã£o\nRe use\n_re v\nĠPRO DUCT\n_C ode\nĠĠĠĠĠ čĊ\nĠSER VICE\n_c over\n. ,Ċ\n.Execute Reader\nĠD ining\n. arch\nĠot ro\nĠDis covery\nĠKey Error\nĠBenef its\n_SH A\n.Un marshal\nHE ADER\nM utex\nAM A\nĠinit iate\nSt ay\nL ittle\nĠ( ),\nĠdecent ral\nRes olution\n. health\nĉf close\näº ¤\nĠstake holders\nĠarch ae\nD igital\nles cope\n_p en\nĠItem Stack\nĠCan on\nĠK end\nĠÃ ¸\n_ ajax\ning redients\nDel ivery\nSe ctions\nĠdisappoint ing\nĠG ren\n, re\nĠdec rypt\nolog ic\n_f mt\nĠSl ider\nn ah\nW ashington\nz ung\nĠÑ Ĩ\nyc z\nie ves\n.DE BUG\nĠT I\nĠh acking\nĠcent r\nfl ows\nĠdid ReceiveMemoryWarning\nĠaccount ability\nC OUNT\nÐ»ÐµÐ¼ ÐµÐ½ÑĤ\nb lo\n/ id\nĠSl ow\nizz ard\n.remove EventListener\nĠìŀ ħ\n/ I\nis ma\nĠH udson\n} },\num ed\nĠreal ise\nuns afe\nĠz us\nĠshort age\nol ia\n_p riority\nĠflo oding\noper ations\nP oly\nab an\n[ cur\nĠesk orte\n_DE SCRIPTION\n_n at\nĠmal icious\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ\nĠPark s\nĠtaxp ayer\nĠF oster\nĠsexual ity\nç ³»\në °\n\\ čĊ\n.se ek\nÐ°Ð½Ð¸ Ñı\n/ article\nè¿ ĩ\nĠU hr\nĠgrand mother\nĠB le\nf urt\namb ah\nnot ifications\nde precated\nĠuint ptr\nok i\n( Array\nĠaut onomous\nĠo br\nÂ¯ Â¯\nĠbas ename\nĠunve iled\ns ol\nĠNotImplemented Error\nĠde press\n_ '.$\nĠUN IT\n% ',\n-t ag\ng rep\nĠM aintenance\nĠwar fare\n_RES OURCE\n(s pec\n(c v\nĠn ada\nçĶ µ\nĠcrow ded\nBel ow\nĠZ ach\nEst ado\n_pr ime\nĠtrab ajo\nĠinform ative\nSc ott\nĠserial izers\nĠN as\nTh unk\nĠmerc y\n, ...ĊĊ\nĠadd ict\n. constants\nĠdata frame\n_re ason\ngom ery\nìĬµ ëĭĪëĭ¤\nĠneg lect\nĠL ines\nĠmem b\n_EX EC\nass age\nĠY ard\n{} '.\nĠlot tery\nte in\n_c alc\nik u\n_RE CORD\nW arn\nĠhealth ier\nure ment\nĠy arn\nĠCor ner\n( zip\n( init\nĠL it\nH W\nsub set\nĠM F\nET ERS\n_ rot\nĠ ere\nĠOver ride\nW allet\n_re ward\nĠs age\nset Visible\nĠJson Response\nIC Y\nè¯ ¢\nVar Char\na at\n-g reen\nĠir q\nan ity\nĠwho ever\n_sh are\nĠf out\nroll s\nĠwilling ness\n.component Instance\nĠhon ored\nur vey\nB er\nĠrun ners\nĠlie u\nor por\n_ structure\nBar ButtonItem\nad x\nĠBenn ett\nĠdil ig\nĠfl uct\nIDD EN\n_Se lected\n( div\nĠquick er\nal ong\ngraph ql\nine z\nĠc ite\nĠIn structions\nĠinsert ing\n.cloud flare\ncou pon\ned List\nĠSt ores\n_m alloc\nç¬ ¦\nĠAw esome\nĠl amb\nRE ST\nĠint est\nĠNav bar\n.f eatures\nIn crement\nĠP om\nĠins ufficient\n_LOG IN\nPLE MENT\nĠO Auth\n. INFO\nĠex otic\nĠC ASE\nĉ ĠĠĊ\nĠG and\nthes es\nĠnov o\nĠD ell\nâĢ¦âĢ¦ âĢ¦âĢ¦\n_s oft\nĠagree ing\nc ents\nlo an\n' \",Ċ\nĠR an\nDE L\nĠorgan ised\n+ n\nĠHealth care\nĠdeter ior\nĠimplement ations\nĠcar n\nĠ, '\nĠLO AD\nĠplant ed\næľ ª\nForm Control\n_m atches\nĠperiod ic\n_T o\nĠJo el\nĠan kle\nĠmilit ants\nĠW itch\nun iform\nuent a\nOf Week\nĠperpet r\nĠinter ventions\n(w riter\nant ine\nProgress Bar\nĠle agues\ncom press\niz ione\nĠE A\n\"] =\"\nĠSte phan\nmin us\ns stream\n_ led\nĠ================================================================= ========\n\" When\nAl ready\nĠcont empl\nĠat au\nĠCongress ional\nĠrap port\nĠB our\nish i\nĠt ym\nĠAr men\nĠÑĢÐ°Ð ·\n- format\n_ Read\n(column s\nĠne ue\n_box es\nĠSand y\n_ ,Ċ\nĠW izard\nĠor den\nĠfiles ystem\nfl ight\nĠw sz\nance led\nĠd awn\nĠG son\n_w arning\nĠI celand\nĠsl ut\nĠset Is\n_id ent\nĠoff shore\nĠSk etch\n; %\nĠtrib es\n_SP ACE\nĠot ros\nComp iler\nĉ End\nĠ] ),Ċ\nGr avity\nĠt ensions\nĠsmooth ly\nK now\noo thing\nĠStart up\nĠH yp\nĠam azon\nĠRe ceived\nzen ie\në ŀ\nĠCh ocolate\nĠÄ °\n\" No\nĠA LS\nĠProgram ming\nĠDog s\nĠgood ness\n(err no\n/ es\nĠremot ely\nĠH ooks\nU uid\nĠover ly\nĠå Ĳ\nĠg pu\nĠstim ulus\n(st ep\n. You\nĠbi om\nIN C\n.b its\n(m Context\nĠamer ican\nĠterr itories\nĠN D\n] \"Ċ\nĠM apping\nĠproceed ing\n. ax\nĠsub string\nB UTTON\nĠI g\n- pane\nĠAn s\nĠgrad uation\nĠpers pectives\nM ixin\n_min us\nĉĉĉĉ ĠĠĠĠ\n\")) )\nnormal ized\n.last Name\nĠcl an\nAs ia\n(M ouse\npag inate\nĠg if\nel ig\nĠpost ers\nn ings\nĠÏ Ħ\nĠap ost\nĠIh re\nDll Import\nĠE qual\nĠdistingu ished\nne apolis\nĠback drop\nĠAltern atively\n/ mod\nĠl end\nĠSH OW\n_c odes\nĠat Ã©\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n-c ase\nch te\nĠdon c\n: add\nN egative\nf avorite\nĠattr actions\nint Color\nĠP ir\nConn ell\nMan ifest\nte ams\nĠ};ĊĊ Ċ\nĠpl ural\nĠover time\nĠEu ropa\nĠBang ladesh\n( an\nĠl ingu\nit ime\ninst on\n.sh adow\nç¨ ĭ\nĠU SS\nServer Error\nIV ERS\nĠJ in\nĠhum ble\naut oload\nare z\nâĢ ²\nĠA str\nicol on\n.View Models\nob o\nĠsw ipe\nĠre cession\né ķ\nĠì ĺ\nner g\ning redient\nmail to\nĠF ame\nPrint ing\nP ixels\nĠB ash\npost a\n_J O\nĠinf amous\nĠL anc\n(local Storage\n.bl it\nĠyoung est\nĠfield Name\nĠcont ing\nĠw ool\nĠIm Gui\nĠN ST\n.p refix\nTo Int\nĠSo x\nĠhabit at\n(\" |\n=' \"+\nING TON\n_w rap\nuck ets\nĠW RITE\nĠmedic ines\nĠmembr ane\nĠJ Text\nĠreprodu ction\n_re ceive\nTable Row\nqueueReusable Cell\nh ooks\nĠre lying\nĠdr illing\n_I l\n(ex ception\nĠdur ability\nĠhes itate\nĠcomp art\nIL ING\nĠEld er\nĠca ffe\nĠdevelop s\nish er\nĠp ly\nĠto l\n_PL AY\nĠfr iction\n(al ways\nĠind igenous\nĠOper a\nĠCamp us\nanc ements\nĠl itter\n.l imit\n( Token\nen is\nĠhighlight ing\nĠA ub\nĠvalid ators\n-h ost\nw heel\n< {\n)) +\nĠNews letter\n_ average\nĠsod ium\nĠH il\nĠM ile\nĠAuth Service\nStat istics\nĠNut rition\nĠspons ors\noven ant\n============ ==\n.A bsolute\nĠf Ã¥\nHand ling\nĠ---- ---Ċ\n(d irectory\n\"). Ċ\nan ol\n.b rowser\nĠGr inding\nĠc k\nF requency\n() ['\nAd just\ncre w\naf ety\nĠg n\nĠw ives\noo o\nĠprostit u\nĠo Ã¹\nif ty\nĠlit igation\nĠE z\nJ eff\n.p k\nĠSh oes\nc orn\nyy vsp\nĠad ap\n= u\nCON F\nAND ARD\nĠelev ator\nb illing\nĠc and\nĠcar p\n[ field\n- lib\nsequ ently\n> -\nĠl cd\n------------ ---\n(\" \"\nĠtact ical\nĠRon ald\nex tr\nĠF est\nĠf uer\n-n avigation\nĠk b\ngh ost\nĠhandle Change\n_cl s\n() !=\nCom parator\n.v m\nĠCo x\n_re view\n/ @\n_c ookie\nĠrecogn ised\nld ap\nThread s\nĠSex ual\nĠB earing\n(S QL\nĠx r\nĠth igh\nURL Connection\nĠSU V\nĠm Context\nĠinc idence\nĠE ste\n.s up\n_t e\n(EX IT\nC MD\n/ \">\nAl most\nĠU ne\nĠand eren\nĠSingle ton\nĠb ore\nTh ink\nĠn arc\n] initWith\n_sh op\n(str ategy\n! ',\nher its\nĠDes k\n_m achine\n.net ty\nÄ± nda\n= <\nĠQ R\nĠS idebar\n.split Container\nĠon Success\nĠmon key\nEn joy\n(n odes\npect rum\nĠ(* (\nĉU INT\n, height\nĠNetwork s\n.t ail\n.l inspace\nĠ\" ...\nList en\nÆ ¡\n.Ch annel\n- defined\nRe peat\nad just\nER M\n_ application\n.assert NotNull\n- stream\nĠr abbit\nĠposition ing\nĠw oke\nĠf ing\nĠmulti player\nĠregister ing\nun til\nÃ¥ n\n( ::\nuss ions\nĠpot ato\nĠE quals\n.S up\n/ap ache\nĠ( =\n. \")\n.p tr\nĠSpe ech\n.cl ip\nĠGab riel\nĠmusic ian\n/ issues\n.sh op\nĠH ier\n_RE T\n_b ucket\nãĥ ¡\nav s\nĠro z\nfl ower\nWrite Barrier\nĠMil an\nĠlegisl ature\nĠD oll\nĠprov ing\n.concat enate\nâķ Ĳ\nĠg char\ncdn js\nb les\nĠList ing\nÐ» Ð¾\n.xr Label\nĠS ak\njust ice\nĠVal entine\nun less\nĠp iger\n(r un\nĠtest ified\nAN A\nĠRem oves\n)) ));Ċ\nrec ated\nĠRuntime Method\nĠcon qu\nãĤ ¢\nĠt issues\nail er\nÃ©t Ã©\n- Star\nĠfl ames\n.set Icon\nĠsup ern\nĠvag ina\n- variable\nĠwell ness\nC UR\nĠbel le\n.get Request\nĠp oco\nben h\nag ens\nĠsp ill\nĠJ ur\nĠdispatch er\nÐ½ Ð¾Ð³Ð¾\nemon ic\n(dir name\nĠÐ Ķ\nĠpas se\nĠg anz\nric ing\nE U\nĠmuj eres\ness en\n.at tribute\nj j\nĉĉ ĠĊ\n[ ^\nĠstrtol ower\nlex er\nect ar\nhot el\n.s quare\nĠr all\nĠlower ed\nhand led\nMark et\nĠUs es\niv as\n.B usiness\nãģĹãģ ¦\nD IV\nĠw asted\nĠav oir\nÃª m\n_ACC OUNT\n. et\nĉ SDL\nk ap\nĠf ox\nup pet\n{ },Ċ\n\", '\nF avorite\nP END\nĠA ES\n} ),\nĠded uction\nĠpol ÃŃt\nĠcomponent Will\nĠT elerik\n_SE LF\nĠm use\nC raft\nĠd ens\nà¤ ¿\n( tp\nĠt asty\nĠbal ances\nĠded ication\nĠWall ace\nĠun law\n\\\"> \\\nĠm um\n- update\nement e\nĠs oda\nRe public\nas mine\nÃ© ric\n( Status\nĠJson Convert\nĠD isk\n.Red irect\nĠfilm ing\n/m ol\nR o\nĠv ille\nĠtrab aj\nĠsyn thesis\nreg a\nĠr l\nS cheduler\nISH ED\ncurrent User\n(error s\n' h\n_b ot\nx imo\nĠUS ART\n_s uper\n_DEC REF\nÐ½ Ð¾Ð¹\n_RO W\nĠprom otes\nĠT A\nĠhor as\nĠRep resents\nĠname of\nĠEx c\nĠGar age\nĠse ine\n, #\nĠher b\n/ resources\nĠple aded\n.r adioButton\nĠæ ĺ\nO ps\nĠN est\nc string\nĠDef ence\nĠref ere\n_le af\nĠrevel ation\në §\n.execute Update\n_W ORLD\nĠexp ans\n(\" \\\"\nj ab\nĠdoub ts\nĠGe ometry\nĠintrodu ces\nĠsen ators\nĠcan al\n.h elper\nĠBi ology\n_SE NS\n.pre vious\n-t ouch\nab it\nĠimpact ed\nĠbr ackets\n.d irect\nacc um\nĠtest osterone\nĉ action\nĠCh ance\nĠpe aks\nCppCodeGen WriteBarrier\nĠun belie\n_p ress\n.R el\nang led\n/ templates\n-- >čĊ\nl ime\nĠsufficient ly\n_ nt\nExp and\n.is file\nĠis Empty\nĠq t\nĠmul her\nac ob\nGe orge\nå¸ ¸\nĠass im\nas o\nĠcompr ised\nO V\n(CON FIG\nĉw riter\nĠdes p\nĠten ure\n(c r\n.p ool\nĠB rend\nĠc ensor\n(time out\nĠple a\n.W rap\nĠtight ly\nĠW ere\nĠI gnore\nabe i\nĠbr idges\nĠcondem n\nĠsimp licity\nĠrout inely\nĠblack s\nj b\nĠP it\nU tf\nĠ/ Ċ\nre load\nĠset Object\n/g lobal\nĠf atty\nĠsock s\nCould n\nĠerot isk\næĿ ¡\nĠPress ure\nĠM az\nn pos\ntol ower\nĠE Q\nute ur\nĠM oment\nĠet a\n{{ --\nĠgraph s\nĠGu ar\nr ine\n( --\nĠHttp Status\n(st udent\n* np\nĠrail way\nĠas ynchronous\n_v m\n'] ,'\n, text\nmer chant\n(G uid\nĠG ra\nix er\nfetch All\n.add Listener\nfl ip\n* $\n> (),\nĠsun light\nass igned\nĠab c\nĠC OLUMN\nĠðŁĻĤ ĊĊ\n) ...\nĠen semble\nĠnew line\n_S INGLE\nied ad\nĠdark er\norm ap\nĠl ion\npl its\nĠillustr ation\nĠI EEE\nĠv ista\nous ands\n****** *\nĠTom my\nĠh ue\nS el\nĠa ura\nĠTher apy\nĠanim ator\n.con straints\nĠv ague\n(\" \")\nĠvill ain\nĠbless ing\nĠstring Builder\nĠM isc\nĠD IR\nf ax\n- node\nĠWalk ing\nĠA U\ns ess\nĠgr ill\nVERT ISE\nĠF oods\nĠt ournaments\nÃ ĵ\nĠMar sh\nĠw onders\nLong itude\n.Command Text\n= input\n_enc oder\npage Size\nĠget State\n> >Ċ\n.g rey\np od\nĠread ings\nĠre consider\nStart up\nĠexc er\n.b alance\n_c ycle\n_T ime\nLOC AL\nĠE FI\nĠRe yn\n.set Foreground\nby n\nĠdis connected\nACT IVE\nĠembed ding\nick ers\nĠsurround ings\n* c\nĠgar ant\nĠb f\nĠw ipe\nĠ ä¸ĭ\n_T RA\nado x\nç ķ\nĠsu cks\nĠS ongs\nĠAssoci ates\nĠB ald\nĠB rett\nven ile\nĠv t\nĠin ade\nĠres igned\nĠGl enn\n.p attern\n.Data Bind\nÑĥ Ð¼\nLayout Inflater\nch et\nĠTest ament\n.m s\nĠp av\nĠReact DOM\nur dy\nAD ATA\nM u\n/ actions\nĠJ s\n_ex tract\nĠBr ing\n: id\nstr t\niv ation\nĠoutr ight\naz u\nloy ment\nÐ¸ Ñı\nal do\nĠP ublisher\nE ducation\nPa lette\n_d rv\nĠ($ (\nĠAnd a\nĠrem edy\nĠincons istent\nte ction\nĠregul ators\nĠshort est\n(p air\nĠInstall ation\nĠdefend ants\nĠ( );\n-l arge\nM el\nĠthreat en\nÐ½ Ñı\nĠfet ish\not ine\n_d ic\nĠ< $\nĠst agger\nsp i\n$ response\nS erv\n-b orn\nj os\nĉ img\nĉW HERE\n_l t\nå½ ĵ\n.c ost\nĠT ue\n.label s\nĠL V\nwcs store\nĠJes se\nà¸ «\nTr ade\nĠpredecess or\në Ĥ\nfin ally\n_g eneral\nogg ler\n_REG ION\nn ement\nĠblog ger\nĠHar bor\nĠD ataset\n[ w\nĠattend ees\n. ico\nmax imum\n.Un lock\n_SY NC\nÃ¡g ina\nĠdown s\nĠW ii\n]) /\nĠkick ing\nunic ation\nĠD AC\nĠID S\nĠR ental\nĠcurrent Time\nĠvacc ines\nĠDev il\nĠn ors\n_m ouse\nurre ction\n(n o\nĠ> čĊ\nĠaggress ion\nĠbre eding\n.s ymbol\nim an\nAbsolute Path\nĠWH O\n_fl ush\n- root\narn a\n& M\nĠf athers\nĠR ocket\nive au\nĠw ander\nĠcom pos\nĠWar rior\nĠSe at\nĠClin ic\n_in voice\n(dis patch\nProduct o\nat uring\noss ier\nĠM AY\nĠd agger\nĠsanit ized\nĠR FC\nĠpro ph\nĠur ine\nĠgr ind\nĠExp anded\ndes cripcion\n-f w\nĠK erry\n= name\nĠch k\nĠnation ally\nĠthe e\nIn c\nĠ? >>\n.R adioButton\n.Http ServletResponse\n/ Y\nĉf ield\nĠhom me\ny per\nPh ysical\n= v\nĠdr iv\nĠErr ors\nĠc Äĥ\nDe ath\nĠW INDOW\nĠpo et\nĠSh arp\nĠImm utable\nĉ create\nĠge ht\nĠRe form\nais er\nĠInitial ization\nĠimm unity\n.com pose\nĠlat ency\nĠLeban on\nĠPar ad\nĠfu els\nĠEx hib\nco h\n% \">Ċ\nĠCL I\n) initWith\n-Z a\n_C LEAR\nreg n\nĠfin ances\n.st andard\n_C ATEGORY\n.lib rary\nĠtravel ers\n_w p\nĠE valuation\nstart ing\nĠ )),Ċ\nep isode\nĠV ariant\nĠda emon\nĠJul ia\nĠN R\nĠdoub les\n< v\n/r untime\nĠinterpre ter\nĠIN DEX\nĠHol mes\n_D IM\nĠp addle\n_ex ample\nĠfore ground\n.r outes\nĠs owie\nS UCCESS\nĠC DC\nĠB D\n_ -\nas ured\nW riting\nĠcurrent Page\n( answer\nĠASC II\nà ¨\nĠsocial ly\nyy y\nĠSpecial ist\n(c ustomer\nist ani\nke st\nĠM ak\nĠth o\n. pt\n( comment\nĠCon verter\ng am\nb ins\n. tele\nĠVeter ans\n_AL LOC\nÐ¾Ð»ÑĮÐ·Ð¾Ð² Ð°ÑĤ\ninn amon\n; width\noh l\nĠfant as\nĠs ung\nĉ K\n( Json\nĠneighbour hood\nĠv ow\nĠs ins\non acci\nĠepoch s\nim agen\n.Ch ange\n.my batis\nSe ek\nW ER\nç®¡ çĲĨ\nĠinter ess\n_ Event\neder land\nĠterr itor\nĠci udad\nuck ed\nĠsn ack\nĠtransport ed\nĠMan ifest\nĠD AT\n_th eta\nĠw ont\n.ĊĊ ĊĊĊĊĊĊĊĊ\nĬ¶ æĢģ\nĠEp ic\nDe ck\nl tra\n_Z ERO\nĠ[] ;\n/ scripts\nĠ---------------------------------------------------------------- ----------------\næĥ ħ\nĠwe ed\nN BC\nĠrap ed\nĠG ateway\n[ M\nĠTime out\nench mark\n.View Model\nĠporn os\nĠY a\nth ritis\nĠFly nn\nĠme ga\nac in\nĠtrib al\n.app le\nĠB lo\nÃ¢ n\nib i\nro v\nĠL ives\n^ .\nget Request\nĠEst ablish\ncont ainers\nĠst arring\nĠcele brities\nĠRel ative\nĠHe ights\nĠtq dm\nĠNorth west\niv ic\nĉ cl\nĠautom otive\nent ric\nĠfort unate\nĠfire place\nse ud\nnick name\n; s\n_C AL\nh alt\n(n s\n_de leted\nDevelop ment\nm ovies\nĠident ities\nĠprompt ly\nØ§ ÙĨ\nĠant e\nĠ\" ','\nåı £\nimp se\nĠy ap\nType Name\nĠb itch\nĠassoci ates\nHE ME\n- empty\nĠØ ª\nol vers\nĠpist ol\nSc oped\nag ner\n'] =='\nĠI MP\nex c\nĠo mitted\nĠmind set\nĠ[] (\nĠor n\n_C AM\nA vg\nLocalized String\nĠN atur\nĠcom poser\nĠPlay ing\nĠover d\n_ utf\n.s k\nĠF ol\n$ page\n, Object\nĠbe es\nal ary\nbul let\n_lib rary\nO ffer\nloc ated\nĠ(_ ,\nâĢľ He\nĠOwn ers\n) ).Ċ\nĠb ri\n.Ad min\nkt ion\nÐ»Ñİ Ñĩ\nĠerot ici\nCancel led\nĠa gr\nre views\n_d ma\nRI CT\nĠg fx\nmp i\npp o\nĠ// @\nĠupper case\nĠcommit ting\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nUser Data\nĠv ai\nĉs ort\nĠcongr at\nĠd ioxide\nÐ´ Ð°\n. area\nĠJosh ua\nĠK och\n_b reak\naz ure\nist ical\n_AL PHA\n_ views\nĠelim inating\nOM B\nen umer\nĠHy dro\n(* (\nERT ICAL\nĠinev itably\nĠst ole\n-e ast\nier on\nĠl inger\n/d oc\nÅ º\nĠAl ready\nas io\nĠ-- Ċ\nĠabb rev\nĠAt om\nh im\nĠINS ERT\ns un\nâĻ ª\nCON NECT\ner ator\nĠM anning\nĠ: (\ng as\n=> '\nĠquery set\n; }čĊ\nĠPop ulation\nuted String\nres ident\n_F ONT\nĠRes pond\nĠobsc ure\nĠo bservable\nĠContrib utors\nk on\nĠMus k\nex ao\nĠT ub\nBoot Application\nS OR\n.H orizontal\n.find By\n.p ower\nĠposit ively\nven ience\nĠJ ong\nĠwh istle\nĠÐ· Ð½Ð°Ñĩ\nĠl ending\nĠdestruct ive\nĠon Delete\nauthor ization\n(); ?>\n_ original\nsc ience\nat ra\n?, ?,\nĠAs c\nĠconvinc ing\n$ a\norg en\n_D ate\nĠPro vide\nĠlon ely\n) 'Ċ\nex change\n; ?>Ċ\n.f ast\nS amples\nL ondon\n'] )čĊ\nĠI onic\nĠp esso\nĠKn ights\nĠR af\n_attr s\nĠrepe al\n> Main\nĠOrder ed\n_N ew\n=\" \"></\nurl patterns\nATION AL\npe ech\nĠId aho\nĠpr incess\nĠCustom ers\naw ays\nad b\nĠBry ant\nnon ce\nĠad ul\nĠ`` (\nĠafter math\n= dict\ntext Box\nĠs perm\nĠc ough\nH or\nâĢĻ S\n.Component ResourceManager\nĠreg ulator\nĠpartnership s\n/ projects\ntr ys\nĠL aser\nâŁ ©\nĠF unk\nĠuncon scious\nĠcr ust\nĠTe ams\nĠB anner\nĠH oney\nle ms\nĠmax Width\nPointer Exception\nfade Out\n- St\nĠstr angers\n_G O\nW ritable\n_ Info\n.Non Null\nannot ations\nĠG D\nĠendors ed\nĉToken Name\nĠDep ending\nYN AM\nĠMet eor\nĠIn crease\n.M any\n== (\n.U UID\n_K ERNEL\nĠvid Ã©\nĠp q\nĠQt Gui\nĠVar ious\nĠj ohn\n_p atch\nĠt outes\nĠF ail\nĠsurv iving\n(\" ${\nĠĠĠĠĠĠĠ čĊ\nĠimage Url\n.word press\ns ources\nĉgl Vertex\nâĢĻ a\nĠes col\nR ARY\nĠSn ake\nĠqu int\nĠlast s\nĠHar mon\nĠco il\nĠexplo itation\nle en\n'> \";Ċ\nĠS ERVER\nĠHE ADER\n_ velocity\nĠIn voke\n.timestamp s\nĠs ulf\nI QUE\nĠinhabit ants\nph ins\nazz o\nĠmon o\nLeg end\nĠnon ce\nIF E\n; \";Ċ\n- create\n\" \",Ċ\nper mit\nĠImm igration\nĠpath name\nffect ive\nâĻĢ âĻĢ\nĠex ams\n- event\nĠT ill\n[m id\nF IX\n; color\n( Order\n_tra its\nĠorder By\nĠs unt\nĠNich olas\nØ ²\nĠsun ny\nin ers\nĠaccess ibility\nĠH B\n.com p\nĉ op\nĠminor ities\nethe us\nĠcollabor ative\npr it\nH IR\nĠwr aps\nĉd raw\ng od\nĠI X\n.app s\nĠN M\nĠirre levant\nĠT igers\nĠdi ag\nG V\nĠAccess ories\nk ont\nĠsimpl ify\nĠF avorite\n_t ools\n([] );Ċ\nĠtow ers\nB es\nĠhun ter\nĠsal on\n(b uff\nĉ debug\nĠmal ware\nM oving\n- options\n) +'\nĠLO VE\n_S OCKET\n_f in\nĠDel aware\nĠsher iff\n-in valid\nĠF ULL\nĠÐ¿ Ð¾Ð´\nel as\n\" strings\nĠRepresent atives\ns urface\nres olved\nht docs\n)) :čĊ\nĠpress ures\nĠnorm s\nĠpl a\nĠs urname\nĠpost al\nĠDep art\nĠsla ughter\nor ida\nĠhe bben\nĠdes ar\ncomp act\n_L ANG\nåĲ Ī\nop oly\n_r ad\nĠST DMETHOD\nL azy\nĠĠĠ ĉ\n... ,\n( web\nĠP ont\nĠet was\nĠup ward\n_h at\nĠ], ĊĊ\nĠbase Url\nĠworry ing\n-add on\n(get Class\nS PI\nĠcapt uring\n) },Ċ\nEffect s\nĠcompet ent\nĠf oul\nĠsubscri bing\nĠO BJECT\nIX EL\nb ucks\n( edge\n(p ass\nĠPet erson\nĠbo obs\nĠD elay\n_s quare\nel im\not ers\n_P C\n% E\non click\nĠSV G\nĠto pped\nĠf ist\nsm art\nĠR alph\n( owner\nj ours\nĠbron ze\nĠArgument Exception\n( original\n_S CALE\n_c p\nĠrecomm ends\n.set Style\nS ure\nL AND\nĠrepe ating\nM att\n. Visibility\nĠenter prises\n.Set up\n(sc ene\nĠRe active\nur ge\nb w\n.P ut\np ersist\n.c ookie\nĠAud i\n` s\nsup plier\n( Form\nÂ ¡\n_s o\nĮ Ģ\nĠLeg ion\nt te\nN d\nL oss\n( attrs\n.sc atter\nĠg room\nĠgl impse\nĠn ails\nĠcum ulative\nĠf azer\n_s ervices\n.N um\nib ilit\n_res olution\nĠT x\numin ium\nop a\n.s chedule\nsm tp\nà¸ ķ\nur ry\nÃ¼ k\ngo og\n_sign ature\n.int o\nĠSte ps\nĠhome owners\nĠNS URL\nĠP AC\nĠĠĠĠĠĠĠĠĠĠĠĠ ĊĊ\n> ')Ċ\nen h\nĠinc ap\n$ MESS\nĠmo ins\nĠF i\nĠoff season\npress ions\n> .</\nĠMark er\nĠon Close\nLE VEL\nĠinterf ere\nĠCol in\nĠRes istance\nDis count\nĠWeb Element\nĠbath rooms\nleg acy\nĠC apture\nĠar ising\nĠ\" );ĊĊ\nÑĪÐ¸ Ð±\nĠIn finity\nAdvertis ements\nĠCom ing\nĠPRO JECT\n_PROTO COL\nĠuse Dispatch\n.ch annels\nĠCit izens\nent re\n_m p\n.Con stants\nĠS erialize\n_IN C\n(l ua\nĠcl ash\n_with out\n.key Set\nĠrece ivers\næĸ¹ æ³ķ\n(m em\nĠH orizontal\nĠcock tail\nĠcho oses\n.In ner\nĠreli ed\nount er\nĠ\" ^\nĠten ants\n\" `\n_P M\ners ed\nĠ}} \"></\nĠprov inces\n_R AW\n\\ App\nĠprostit uer\n_g ain\n.t encent\nffect s\n(p k\nsk u\nĠus able\nER VED\nĠant enna\nhe a\npl ist\n_PL UGIN\nÑģ Ð»\n. lookup\ná» ģ\nĠen larg\nĠp iss\nH am\nim ap\nĠin validate\nĠsil k\n=\"# \">Ċ\nĠGr ass\nĠGo al\n_p df\nHand lers\nĠstack s\n.get FullYear\n=[ ];Ċ\nè½ ¦\n, V\n(s plit\nÑĥÐ½ Ðº\nĠbake ca\nĠ~ /.\npe z\nt ails\nĠG len\nĠset Image\nĠCom ic\nB LOCK\nĉ This\no ader\nĠcapital ist\n_ST EP\n( Boolean\nĠCor rect\nr ina\nĠconc aten\nå® ŀ\n() :ĊĊ\nĠun anim\nll i\nal ars\n- ne\nĠdiv or\nĠKick starter\n]. _\n< number\n/m enu\nGR APH\nvis itor\nĠimpro per\n_N EXT\nĠb isa\nbackground Color\n/ input\nĠmo i\nGo al\nli qu\nĠmiscon duct\nĠcompr ises\naw ns\nĠP ie\nra is\nrole um\nĠcur se\ny u\n_p oll\n.current User\nES H\n]) [\nĠstory t\n)? ;Ċ\n* =\nĠB urg\n/ layout\n_back end\n; ?></\nĠWhats App\nĠMount ains\nvis ions\nflu ence\n.create Component\nĠPs y\nfor get\ns rv\n_COMP ONENT\nĠN exus\nĠ) {\nend i\nIM UM\nĠG F\nç» Ħ\nâĢĶ that\nb k\nM ozilla\nĠdefend ers\n- settings\nim ming\nĠO PT\nĠC W\nĠthat s\nĠOpen ing\nRe leased\nn pm\nĠh rs\nĠgroup ed\n/ \".$\nĠHistor ical\n($ \"{\nov ic\n(s ign\nĠPhot ography\nĠsign up\n_ ARCH\n.test ng\n/ angular\nRest Controller\nsh it\nul le\n.p ause\n([ ],\n( question\nil ogy\nĠE ug\n- local\nĠk vin\nĠreserv ations\nob ia\nĠsubsidi ary\nĠaccum ulated\nĠQ Variant\nĠB JP\nĠNorm an\nĠInt egration\n. Variable\n( Resource\n******************************** ********\nEx pose\nĠ' }\n.C OLOR\nĠÑĩ Ð¸Ñģ\nA jax\nĠth ru\nM ovies\nĠpro position\n/ theme\nModel Property\nĠA ws\nĠAnd rea\nĠMer ge\n.f inish\n(re quired\nĠP rel\ne led\næ ĵįä½ľ\n.T RA\nM AS\nĠreal ised\nroid s\nĉf n\nr h\n.\" </\nvid ia\nĠdep uis\nĠB V\nL n\nĠl ust\nAs c\nĉĉĉĉĉĉĉ Ġ\nis le\n-c are\n_IN V\nĠD rew\nĠwhat s\nĠCap acity\nP arm\n_mon itor\n.st udent\nĠR NA\n.ends with\nb ih\nĠML B\n/ project\nĠrest ing\nse parator\ny d\nert ia\nĠmon itored\n\"> *</\n.F C\nĠNE WS\nĠC alls\nĠade qu\nCheck ing\nest imate\nĠrec alls\n_f requency\nĠuse Ref\nĠGro ve\nĠX ia\nĠÃ Ń\ness enger\n-c ost\n.f c\nĠK umar\n.F ocus\nell aneous\n.Al ert\ne ax\nĠor ch\n.p m\nĠland lord\n(p op\n_ actual\nĠL B\nGr and\n.render er\nĠl ob\ncustom ers\nĠcapt ures\nW INDOW\nĠdo ch\nĠap ology\nĠJ ama\n@ [\n.t ake\nno op\nĠl um\nĠdifferent ial\nĠeffic acy\nĉ IN\n_BO X\n_s d\n_r t\nc oder\nounc ement\nhas Class\nĠrisk y\nĠEst ado\n- DD\nĠCar son\nS uffix\nĠto da\nĠTr acker\nĠDe legate\n`, `\nĠPark ing\nĠn er\naz o\nĠFile InputStream\nĠrec ount\nq i\nck en\nĠsocial ist\nĠIn voice\nĠÐ¿ÑĢ Ð¾\n% \",\nenn en\nĠv ivo\nĠorganiz ational\nĠun common\nut ar\nĠh ull\nT uesday\nĠassess ments\n( application\nĠprem ise\nStart Time\nĠd k\nĠinter fer\nĠQueens land\nĠcred ential\nĠle isure\nY Z\nĠC md\nB US\nus an\nĉ vec\ni ological\nĠL ots\nĠen light\nĠfresh man\nĠCOM MAND\nĠAction Listener\nut m\nari us\nTw ig\nĠswe pt\n-to ol\nÄ Ĳ\nch apter\n- grade\nĠcur iosity\nĠsustain ability\nĠM inecraft\nw end\nIf Exists\nĠCult ural\nĠSac ramento\nL ayers\nSub scriber\n.G raph\nĠl m\nest y\nad vert\n$ p\nĠH ockey\nĠD ET\nset Title\ny ang\nĠb abe\nels ius\nTr avel\nĠmes mo\n(map StateToProps\n_SE L\n-p op\nĠem ission\nâĢĻ .ĊĊ\n.sw itch\not ions\n.ph oto\nL V\nam odel\nĠword t\nIG GER\nĠTOD AY\nOL S\n_ID ENT\nĠcomment ing\nD atos\nĠhilar ious\n( any\nĠd amp\n-control led\nĠ\" <?\n_bl ack\nNet Bar\n.set Selected\nC ss\nĠqu art\nĠow ning\nĠF IELD\n.re lu\nĠl is\nìļ °\n.RE LATED\nĠl ok\nĠFl ip\nĠprest igious\nĠd g\nĠInputStream Reader\nĠus u\nĠg ir\nĠan a\n_p y\nun nel\nĉs ystem\nĠco ating\nĠGen re\ner ro\nĠCL IENT\nĠstret ched\n.Has Value\n;;;; ;;;;\nçī Ī\nĠfinal s\n.get Children\nĠ-- }}Ċ\nĠCow boys\nĠEd inburgh\nĠPl aza\nab en\nArt ist\nUR A\nĠHugh es\nobb ies\n_no ise\n.Object s\nExpress ions\nĠanth rop\n')) čĊ\n). \"\ncript ive\nĠsal mon\nĠw ast\nr ho\n.t ick\nĠexplo res\nĠAl gorithm\nChar Array\nà¸ Ħ\n_PACK ET\nJ E\n\"] ];Ċ\n.n ote\nBack ing\nĠH older\nre ich\nĠZ ion\n/ gr\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nM otion\nĠTrib une\nĠcrit ically\nĠCR M\nĠblow ing\nĠcommission er\nJ oe\nĠTe levision\nĉ pre\nĠTR AN\nĠVik ings\nĠB ET\nw ould\n.C aption\nĠba con\nh ma\nmer ged\nĠsubscri ptions\noccup ied\nLive Data\nĠallow ance\nrig esimal\ndd d\n.log out\nĠT ang\nĠwarm th\nModel Index\nĠP ra\nĠsc ent\nĠhack ers\nĠillustr ate\nI ch\nĠdi as\nC ASE\nĠSc i\n$ url\nĠM ODULE\nush ort\nli ers\nĠDev ices\nmin ster\nun ame\nĠun r\nEx amples\nĠris en\n. ai\nch rom\n_work er\nĠali ases\nMouse Event\nĠset ter\nĠPur ple\nJoin Column\n= e\nTH OOK\nĠT ow\nĠCrush ing\nĠJ edi\nĠGriff in\nĠk os\n_F S\ning es\nso les\n(n ames\nĠB id\n-power ed\nM ult\nam iliar\n.clean ed\nĠZ immer\nĉc lear\nĠuns upported\nCall able\nĠre ps\nal tern\n_RE PORT\n.getColumn Index\n_ST ORE\nĠsuch t\nsub title\nĠper d\n« ĺ\n.N OT\n} ></\n: d\nmd i\nbind Value\nĠDec ision\nReturn Value\n, index\nxf c\nĠser um\nget Field\nConnection String\n- object\n.rec v\nĠunder graduate\n.Inf rastructure\nĠK ab\nĠadvis ory\n-t ree\nĠm ue\nin form\n.em bed\nĠerror Code\nm icro\nĠspark ed\nĠimag ery\ncon c\n_m issing\nĠsur plus\nK S\nĉR THOOK\nT ell\nri um\nĠR adius\nri ka\nlos ion\nĠH ern\nG amma\nĠF ee\nĠN amed\nĠCan yon\nĠJSON Array\nĠz wei\nĠS SH\nĠserv ant\nco al\nĠden ying\nĠspl its\nIn correct\nĠto x\nĠAnal yst\nĠacc red\nub le\nĠw t\nĠT rial\n.ext ension\nĠCare er\nĠsec uring\nĠL il\nĠpro jections\nĠye ast\nM ade\nĠfound ations\nac ific\n.v olume\nĠmir rors\n################################################################ ################\nĠviol ate\nars ers\nĠsoc io\nĠtk inter\nĠL INK\n.get Size\nĠWh ole\n)view DidLoad\nĉd one\nude au\n\\ \"></\nAnd rew\ner b\nĠf Ã¶\n.cl uster\nĠdisc ourse\n_DE FIN\nĠpued en\nĠL OW\n. av\nĠpre ca\nĠqu o\nĠvel oc\n,' '\nĠx yz\nĉp adding\nĠtom atoes\nĠB ent\n_c urr\nNS Date\nĠget Current\nĠ[ `\nWed nesday\n.B ar\nĠV ous\nin z\nĠQu inn\nex cel\nd os\nĠout dated\nOUT H\nĠM aker\nepend ency\nĠd ull\nĠW inn\nog e\ncl ave\nĠnov a\nĠa val\nC apt\nĠSpot ify\nĠj ul\n) tableView\nĠfil enames\nĠesk ort\nåĳ ¨\nĠsk ew\nter ior\nĠfin anc\nĠtab la\nĠU IB\nĠ( ):\nĠD ocker\nper centage\nMe et\nich i\nĠinter im\nĠ' ='\n.JSON Object\n(f id\nĠd ownt\nĠtrans ient\nĠSte ph\nĠignor ance\nĠC odes\n=' ',\nĠI CE\nĠtran qu\nĠExt ended\nĠm und\nĠH OME\nĠkil ometers\nĠimag en\nou x\n(s z\nYou ng\nuff ed\nĠW ake\nĠa ide\nPRO C\nĠR at\nĠL ith\nb art\nĠArr ange\np rompt\nÐ £\n( ct\nĠInt erval\nde pt\nD aniel\nĠf ills\n.t ensor\n(tr im\nĠje alous\nF eb\n\\ Common\nĠamend ments\n_ operator\n_custom ize\nĠ] ]\nĠb n\nĠdisappoint ment\nĠmill enn\n. when\nĠob ey\nĠoff enders\nW ild\nĠcell For\nĠappar atus\n.a fter\nĠE PS\nĠad orable\noper and\n(list ener\nve al\nĠ) (\nĠcardio vascular\nuplic ates\nrist ol\nĠref uses\n(Q Widget\nĠelement o\nNumber Of\n.d elay\n.group s\n\"> '+\nåĿ Ģ\nac ency\n( URL\n_h alf\n= l\nĠlist View\n( section\n.to Array\n+ /\nĠRodrig uez\nist ream\nĠelig ibility\n:: -\n.new Instance\nP B\nĠAs sets\nĠCom posite\nĠL abs\nĠHam as\n++ );Ċ\nĠbl k\nĠNe o\nL uc\n@ login\nĠun aware\n.m et\n_RE LEASE\n( ST\nAM IL\nri ke\nĠ( ){Ċ\n(s printf\nĠAccount s\nĠV IEW\nĠA j\nãĤ °\nĠwh isk\nĠid i\nĠro de\nĠih n\nĠElement ary\nQ ty\nĠintrig uing\nĠå ¤\nJ obs\nĉ offset\nĠAh med\nĠTal iban\nĠè İ·åıĸ\nĠinject ed\n.Auth entication\n_line ar\n.Dec imal\nĠapp les\nĠshare holders\nĠb aked\n.d iff\nĠE ddie\nok ers\nĠconfront ed\nvo ices\nĠt us\nĠSp in\nN ODE\n_ Un\nCT X\n/g oogle\nTem perature\nĠ' ').\nĠmagn ificent\nĠstart Index\nsemb les\nAny one\nz k\neh en\nĠD ame\n. strict\nĠrepl aces\nĠline back\nĠpush es\nĠche ek\nĠSh i\n_BY TES\nRE A\náº£ n\n_CON NECTION\nG ateway\nĠTr avis\nĠA X\nĠBas ically\nĠUp grade\nà ª\nth emes\nerm o\nk or\nF emale\n_att ach\nĠìĤ¬ ìļ©\nĠpo z\n============ ==Ċ\n(s ymbol\nĠS ector\n__ )ĊĊ\n_p adding\nï¼ļ \"\nĠf abs\nĠr anged\nset Name\nĠp error\nâ Ĺ\nĠFile Reader\nĠful filled\n_C urrent\nĠdom inate\nĠsm ugg\nPost Mapping\n_for ce\nĠb loc\nĠG iant\n(v ideo\nĠC U\nSystem Service\nĠ elf\nĠkont akt\në ª\nke es\ngt k\nĠparam Int\nĠmark up\nu ales\nĠaccount ed\nĠgang bang\nRY PT\nĠW rong\nĠcred ited\nĠM ESSAGE\nĠfl aws\nĠbb w\nĠmetab olic\nĠO EM\n/ event\n(C ollectors\nmont on\nap pear\nĠopt ed\nĠche at\nĠd av\nĠPro ceed\nĠê ¸\nank ed\nÐ¸ Ð·\nans k\nĠH ang\nĠC ler\nĠdis gu\nĠc map\n.cl js\nĠa ument\nle z\nĠJo ined\n_re ceived\nĠa erial\not el\nĠgre et\n\" s\nĠGen esis\nĠCal if\npan ion\nĠtail ored\nm apping\nand Expect\n.tr ack\nat omy\nĠO w\null ah\n.Y es\nĠSimple Name\ndb h\n' en\nĠnons ense\nĠphilosoph ical\n(get Context\nĠis so\nĠA CE\nstart Date\nĠb ÄĻd\nĠAUTH OR\nĠGlo be\nĠinsect s\n_A l\nush ing\nè® °\n/ Home\nĠLocal Date\nneed ed\nhes ive\nĠill usion\näº Į\nĠtr at\nx o\n/d etail\n_M ATCH\nĠbroad band\nĠw al\nĠIllegal StateException\nIRE CTION\nĠnor theast\nes ium\nĠClient e\nul ance\nnt y\nĠt ecn\nDev ices\nĠgr ains\nĠO g\nĠS EL\nud iant\nĠ++ ;Ċ\nĠexplan ations\noc co\nĠdi ets\nĠco hort\n( controller\n.Iter ator\n-r ich\nro cess\nG D\nĠcar bohydr\nĠfri ed\nĠEmploy ment\nìŀ ¥\nĠLeon ard\n_ ${\nqu ares\nĠcompan ions\nĠpar is\nĠstim ulation\nĠZ oo\nĠre levance\nĠCol our\nĠspe ar\not ional\nĠL ite\nĠK osten\nĠÃ ³\n_att achment\norph ic\nĠdam it\nĠd lg\nĠthr ive\nCH ANGE\nĠApp arently\nĠat ual\nĠroot ed\n( images\naw i\nari at\nĠch erry\nSTAT IC\nm nt\nĠUser Id\nil let\nĠHis panic\nĠn ak\nĠcent ro\nĠdim s\n_initial ize\nÄ± k\nĠCent ers\nRE N\nĠevolution ary\nĠTop ics\n_d amage\nem er\nĠr und\nĠpun ished\nĠcub ic\nf air\n[] ;ĊĊ\nĠinstant iate\nĠover see\n- delete\nunte er\nstart Time\nĠP ipeline\n_G AME\nĠC ir\nĉ Null\n.Format ting\nuc umber\nĠR ide\nĠz oo\nĠcheck er\nåĲ Į\n= C\nĠg rit\n\"); //\n_x y\nĠDe claration\nĠcall able\nF oo\nĠList Item\nĠin accur\nml in\nĉ Data\nĠev olving\naw an\nĠca fe\nfol k\n_ID X\nĠAny thing\nĠPalest ine\nĠGrid View\nĠcol ony\nĠGerm ans\n( +\n.p id\n.js x\nĠSuper ior\nChrist ian\nĠL ect\nĉ Game\nĠinstrument al\nAnim ations\nÐ´ Ð°Ð»\nĠMos es\nĉĉčĊ ĉĉčĊ\nz s\nk te\nä¸ ļ\n_D IST\nbit map\nd B\nĠp ersistence\nÑĢ Ð¾Ñģ\n$ l\nB ron\nĠ{ |\n_ch art\nĠCon sum\nĠh emp\nĠ\" ))Ċ\nĠattack ers\nĠknowledge able\nĠc et\nĠvir uses\n' I\nĠpitch er\nĠsweep ing\n= list\napt ops\n.de pth\nĠinstruct ed\nĠR us\nbenh avn\nĠÐ¸ Ð½\nS ports\nĠon set\næĿ ĥ\n. RED\n_s i\nĠP ST\n.on Change\n> tag\nĠR oh\n_char acter\nĠLaw s\nĠB achelor\n_s wap\n.re activex\nĠreward ing\nMed ium\n- [\nĠRec ently\nJ oint\npart ition\nĠMin utes\nĠind o\nĠabsor bed\nĠG N\n_IN D\nĠsab er\nSp awn\noutput s\nĠJeff rey\nĠmed ieval\nh ed\nGu ide\nĠpsy cho\nĠgl am\nE lim\nÃ¤d chen\n_pl ain\nĠS au\n-f our\nĠanaly zing\nQU ERY\nĠtom ato\n_button s\nV EN\n.set Status\n. Url\n+ ĊĊ\nĠcompl aining\ndeg ree\nconf irmed\nĠsub t\np arsed\nĠtor que\nĠtroub led\nĠT ARGET\nĠtrad emarks\nĠCo ordinate\nĠV iv\nĠ// }ĊĊ\nĠapr Ã¨s\n.get Position\n(Key Code\nĠSil va\nĠmet eor\nĠendorse ment\nOver view\nĠP oss\n.In ject\nĠeven ly\nĠvisual ization\nĠw char\nĠH DMI\nĠfun ct\nick name\n',' ','\nĠfor wards\nManaged Object\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠ\nĉ server\nĠOut look\nĠChron icle\nĠdub bed\nĠd ok\nĠW ear\n.A L\npare n\n. Interface\nInter faces\n.c od\nĠd ib\n.Global ization\nĠAcad emic\nĠass ms\nAut om\nĠl w\nĠN W\nĠ&& čĊ\nĠproble ma\nĠManufact uring\nlim its\n-m obile\nĠfil me\n/ map\nĠdo it\nĠIn k\nĠsu ed\n. arr\nĠunder min\nĠPro c\ncroll View\n__ $\nĠsidew alk\n( that\nà¸ ·\n[ q\ngram mar\nĠt Ã«\nqu ito\nĠspir al\next ended\nĠf ocal\nĠdig ging\np as\nĠT all\n.pro xy\nit ures\nTR ACT\nĠRe alm\nĠf eder\nĠorient ed\nĠAltern ative\nĠo we\nĠsour ced\nink er\n.d et\nS ep\nĠQ ui\nĠPal mer\n(_ ,\ns amples\noy er\null an\nque z\nEd ges\nĠsh out\nĠA chie\nĠha ar\n_Con struct\nĠprem ature\nĠre vert\n'). Ċ\nĠs chn\nfilter ed\nnull ptr\nS aved\nitect ure\nCL A\nĠv l\nst ell\nĉ Me\nĠL ip\nn ational\nĠwh olly\nĠspr ings\n.T imer\nĉs rc\nels en\nåħ ¶\nĠcommunic ating\nĠQu iz\nĠt eng\nĠge z\nĠOut side\n.S ign\n(c s\nĠdisput es\nĠWe iss\nann es\n> No\nĠB ach\n.remove All\nre fer\n/d ashboard\nĠA jax\nIndex Changed\nĠWe ak\n' \"Ċ\nĠs ights\naccess Token\nĠJ oi\n(d omain\nĉc v\nĠcontin uation\nĠpl um\nad ir\n.set Message\nĠ ï¼Į\nĠsw allow\nĠL amp\nĠq w\nĠu u\nC oin\nub ic\nĠDe als\nr ace\nĠdict ator\nĠmem e\nturn ed\nĠJul ie\n.grid Column\nĠpup py\nĠp am\nĠ) {čĊ\nĠinv iting\nĠf rench\nv im\nĠwr apping\nĠ#- }Ċ\n([ -\nEar ly\nĠsh iny\n.f aces\nĠreb ell\nabc def\nÃ¤ lt\nĠest imation\nph ys\nlos ures\n_RE L\nĠex clusion\nĠSk ype\nwe ise\n-st op\nno thing\nĠE gg\nis ors\nRich ard\nĠcounsel ing\nĠcomm em\nĠQ MessageBox\nĠSy nd\nĠFro st\nĠCompet ition\nĠAw ake\nĠt ed\nic iones\nĠDev Components\nVERTISE MENT\nott i\n.run ner\nĠuniqu ely\n.fl ag\nĉ rs\n_g eneric\nĠ`` `Ċ\nACH INE\nĠme in\n( Application\n( br\nĠrat ios\n: ,\nĠXCT est\nustain able\n- www\nit les\n_T EMP\nĠs yst\numeric UpDown\nĉassert True\nĠw f\n. peek\nĠBul g\nĠterr ifying\n.M ODE\nĠG W\nÃ¡ r\nĠf ic\nĠcommit ments\n- tech\nĠL iquid\nope z\nz heimer\na Ã±a\n-m edia\n( animated\n_go al\nĠg um\nyst one\n.S ET\nĠW end\nset CellValue\nĠmsg s\nc ash\nAL LOC\n/ aws\nĠmic rowave\n.Point er\nĉ Console\n_s orted\nĠFil ip\nPro d\nĠ//! <\ning roup\nĠk s\n_T RI\nĠteas poon\nĠAT T\nĠrecover ing\nĠG LOBAL\n.P ar\nĠ/> ;Ċ\nĠmar ble\nul ators\nĠC ycle\nĠher bs\n_m etric\n) !\n_C LOCK\n_ Button\nH arry\nè¿ Ľ\nĠstr ains\nĠApp Bar\nĠCh an\n/v ideo\nĠb am\n.Pro gress\n$ f\nlem en\nĠir regular\nĠD uncan\nĠM int\n-v ideo\nà¦ ¾\nÃ³ wn\nĠEM PTY\nĠstack ed\nĠH A\n_c ut\nĠwhere in\nĠW ays\n(count er\nè¯ ķ\nForm Group\nĠble w\nc ourses\nĠproduct os\nry s\nĠRest r\nĠsty ling\n> s\nĠp iv\nĠit ertools\nget Repository\nĠI k\n_dev ices\nlay ui\nĠhalf way\nĠfran Ã§\nĠtun ing\nO A\n_N ode\nar de\nĠfier ce\nlic ted\n# čĊ\nĠbreak through\nĠE rik\nĠb ride\nĠ. \"\ncul us\nins ide\nĠIndian apolis\nĠE E\nĠy og\nurre t\n.f s\n. grad\n_c ards\n_ac curacy\n_ep i\nqu eda\n/ org\né ªĮ\nĠcom pte\n)) [\nOut side\nG reater\nĠRender er\n. actor\nAccount s\nId le\n_h ours\nern er\nJo ined\nĠmen j\nrequ ires\nĠO PER\n.remove Child\nĉs p\nĠes se\nr ift\nxF E\nĠSh akespeare\n________ ____\nĠbudget s\nModel State\nfill able\n- component\noc os\nĠBUT TON\n/ io\n, out\ns ms\nTh omas\nĠAr med\nres ume\nĠrot ating\nĠV ault\nĠse us\n. (*\nĠa mino\nĠ[] );ĊĊ\nĠprov oc\nno x\n.Get Enumerator\n==== ===Ċ\næĸ Ļ\n_sc roll\nĠfil med\nĠS oci\ng ap\ng ro\nV ote\n\" But\n_R C\nAn imal\nÂ Ģ\nib ile\nĠaw aken\nore st\nin ja\nĠI van\n( Command\nĠ *****\nÎ ·\nĠkv inder\n/h elpers\n_c ases\nt g\nìĦ ¸\nRegister ed\nĉp ass\n_d igits\nĠcont our\nĠinf ants\nĠjust ification\nĠFort unately\nCon tr\nĠonCreate View\n_S AMPLE\nĠallow Null\nĠn ud\nĠfet ched\n_e qu\nĠUn able\n=\\\" \"\n> {Ċ\nĠcommit tees\nist ema\n+ \".\nÃŃ an\nm ant\nĠsou theast\nï¼Į Ċ\ndialog s\nPRO JECT\ncharg er\n- port\n(u uid\n. export\nS ix\nĠR P\nP rem\nĠconsc ience\nĠmargin Right\n_d istribution\ny aml\nres izing\nD ock\nĠLoc ations\nG Y\nSe ed\nB UFFER\noss ip\null en\nTh ings\n- self\n.p oll\nPL AYER\nĠå ®\nG ROUP\nĠA way\nĠg ospel\nxf d\nM ary\nĠPort able\nT URE\nĠutil is\nĠse it\nĠstr and\nĠtrans c\nĠ( ^\nĠAl fred\n.m em\n.c ircle\nĠ~ /\nfor cing\nĠr iot\npro x\nTH ON\niz aciÃ³n\nĠN I\nro st\nĠdis pro\n_in stances\nï¼Į âĢľ\nograph er\nend as\nĠIsa ac\nĠP ine\n/d is\nĠcolor With\niter ate\n_str ide\nĠpun to\n.Event Args\n( center\nĠneighb oring\nĠPr ison\nĠMess enger\nĠepid emic\nda o\n_com plex\nĠgr avel\n_D IP\nÃ© ment\nĠA ri\n_bit map\n.qu it\n( valid\nĠp end\nĠrespir atory\nĠre bound\nDefault Value\nãĥ Ń\nĠcomm its\n.test s\n_f r\nit et\n.s f\nĠspace craft\nc ritical\nĠde pressed\nĠAny Object\nĠun b\nĠdisc ern\n(m ysql\nL atin\nĠB og\nĠWild life\nTo File\niox id\n@ RestController\nĠ\"$ (\nĠ<< \"\nĠdefect s\nĠdat um\nh in\nĠreal izar\nany ahu\nĠS ig\n@ Data\nad aptive\nĠC atherine\n.c r\nĠCO OKIE\nĠp ictured\nĠFight er\nQuery able\nĠAny way\nĠGL FW\n_n amespace\n_ ft\nĠ] )\nOrgan ization\nĠconstit utes\nĠqu and\n(ch unk\n\"/ >čĊ\nĠL akes\nmain window\nCar thy\nsp in\n(c sv\n: red\n-com merce\nà¸ ¹\nĠdiscover ing\nĠe co\n_f ac\ninc eton\nĠGre ens\nj wt\nØ µ\nĠBron cos\nĠGood s\n(G TK\nĠreturn Value\nĠsi empre\nĠneut r\nw ent\nĠN atal\nĠenthusi astic\ná» į\nF N\n/d atabase\nC atalog\nĠbr un\nĠK ash\n_P l\nisc rim\n, width\nĠin mates\nAss ignment\nĠH aven\nĠplay ground\nex am\n@ Controller\nul iar\n.get Parent\nĠ\" ;ĊĊ\n: size\niss ors\nĠf is\nĠal c\nens ation\nĠN ixon\nĠmight y\n- str\n_s pecial\n_A DC\nĠTw ig\num bling\n- address\nĠher oin\nY TE\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĊ\nF riend\nĠa ve\nĠP NG\nĠKurd ish\nDataSet Changed\nĠbl ades\nbr al\nSt eam\nĠsig u\nIRT UAL\nac os\nUD P\n(d atabase\nhe c\nĠString s\n_scal ar\nĉd esc\nĠT LS\n; \"Ċ\nĠCor byn\nSimple Name\nu ell\nĠEnt re\nell ites\n- place\nĠfrank ly\nĠE rf\nCE L\nĠpa ÃŃs\nĠh edge\nĠlat ent\nĠIR Q\nĠH erald\nĠP rec\në³ ´\n.T EXT\nSal ary\nĠaut umn\nĠtrav ail\n.S um\nĠc ared\nM or\nĠint uitive\nĠj ournals\n_ IT\nĠT rou\nä¼ ł\nHas ColumnName\nCom posite\nĠsp ice\n_d isk\n_CODE S\nĠInt roduced\nion a\nĠnue stra\no ct\nĠĠĠĠĊĠĠĠĠĊ ĠĠĠĠĊ\n(param eter\nĠstud ios\nĠproject Id\nĠbd sm\n.Sql Client\nim izer\nĠC ARD\n+ t\na an\n.s ol\n_Ad just\nĠright eous\nĠLog ging\n.f ilters\n_T AB\nĉs ys\nroph ic\nother apy\nĠB rowse\nkey board\nR ON\n+ \\\nro pped\nĠext ensively\nf k\nĠl ime\nyear s\nEx c\nĠs ph\nĠche ating\nand ro\nÃŃ o\nĠpr ince\no ire\nĠD estination\nĠConvert s\nĠup stream\no led\nĠserv ants\nĠsem antic\nĠcr unch\nĠevent ual\nrun ner\n/ error\nSp in\nĠsecret ly\nĠas semble\n.P erson\nend error\n_ <\nĠp endant\nS leep\nĠChem istry\nĠboss es\nl k\n)) ),Ċ\nBlock ly\nDE VICE\nĠreflect ing\nĠam ple\nMill iseconds\nĠPresident ial\nĠus uarios\nĠN Z\nĠSal ary\nĠA manda\n_n p\nj ury\nĠkÃ¶ n\nĠtherap ist\nĠhomosex ual\nĠDr ake\n-w indow\nĠLoc ated\n.D river\nĠV IDEO\nĠmerch ants\nĠC hest\n- lock\n/ php\nĠmil ano\n_ST YLE\narg er\nide a\nG UID\nadv anced\nme al\nOptions ItemSelected\n=' %\nĠCh am\n: data\n(st at\nWill Appear\nĠinform al\naj i\nĠre productive\nĠC AS\nãģ £\nF UNC\nĠR uth\n)+ (\nCON ST\nĠF ans\nĠgroup Id\nxffff ffff\nĠsam pler\nĠ}} \">\n. the\nĠh ollow\nW AY\nĠFac ulty\nAttrib utedString\nĠLook s\nĠR ex\nj k\nĠM IL\nĠb ard\n.L ong\nĠliv est\nĠsk al\nic ism\nMA IN\nĠmu cho\nB ODY\nĠes e\nĉ use\nF oot\n.SQL Exception\nĠinherit ance\nre ceived\nĠput as\ned is\nals a\nĠError Message\nBook ing\nĠtr act\nac z\nĠC ant\n_reg ex\nĠide ological\nĠj ihad\nh os\n/s ys\ncol m\n(p ool\nĠest Ã¡n\nĠP ending\nem Ã¡s\nĠktÃ³ ry\n));ĊĊ Ċ\ntrans actions\nĠw ield\nit ere\nert ure\n_s s\nĠstretch ing\nĠprison er\n.Read All\nĠbes ch\n-- ;čĊ\nĠcr isp\n_SC AN\nĠa e\nStr ict\nĠMin neapolis\nĠBo eing\nar is\nre k\n_p ipe\nĠpri ests\n(E IF\neh icles\nĠInter active\nb etween\nĉNull Check\nĠBl air\nĠL t\n_in line\neth yl\nÂ ¼\n_p ackages\nĠbarrel s\n_ he\nĠreg exp\n_ pts\n_H andler\ning ular\nĠN issan\nĠR anch\nĠper ch\nUn supported\nSm ith\nĠLeg ends\nM i\nĠg f\nst eder\nĠacqu iring\nĠsim ulator\n() ,\"\nre ceive\nĠin place\nA CTION\nĠWeb Driver\nfiles ystem\n< Order\nlo pen\nĠHE IGHT\n.set Border\nį °\n__ [\"\nĠcl amp\nSeg oe\nb ands\nto List\namb a\n>' +Ċ\nĠcred ible\nam at\nplay ing\n.setImage Resource\nqu el\nĠpod r\nge om\nE k\nĠQ atar\nĠg eld\n? ',Ċ\nĠc yl\n( ax\nĠW I\nur ally\nĠBr asil\nĠsen za\nale y\non en\nĠb ah\nĠmolec ule\nR ad\nè¿ °\nAN CH\n- background\n- agent\nĠprol ifer\n: boolean\nĠt ide\nerial izer\n_ ;čĊ\nF ee\n** )\nerg y\nĠHon or\n.Log ging\nir is\nĠunder mine\nĠD y\nĠt yr\nĠde que\nĠdam er\n([] )Ċ\n.layout ControlItem\npe ated\nC AN\nrag ments\nL and\n) ]);Ċ\nĠS ah\nĠDE CL\nWith in\nĠN amespace\nan other\nsem bling\n.des cribe\nCon sum\nĠF ear\ng iven\nOr ange\n< boolean\nĠstead ily\npa Repository\nĠresult Set\n_ ENTER\n_re peat\nĠt ones\nĠPRO P\nn al\npart icle\nĠsign aling\nĠaccess ory\nĉĉĉĉĉĉ ĠĠ\nĠvie le\nĠNo ah\n- ag\nĠmur ders\nĠa ired\nĠPL AY\nĠS ullivan\n_C ore\nĠul ong\nĠblog ging\n> This\nĠdata Index\nĠprint able\nĠE yes\n_target s\n(P y\n. over\nĠbr u\nam pton\nĠplaint iff\n< Key\nb ull\nĠâŁ ¨\nIss ue\n.cor nerRadius\nC ritical\n_p hi\n. angle\nĠdynam ically\n! \");čĊ\n> );Ċ\nin vest\n.* ĊĊ\nĠt Ã©lÃ©\nĠsuper f\nĠcas cade\nDT D\nĠviv id\nĠsubsid ies\nĠH ass\nĠcoll aps\nĠcer amic\n{} \".\nĠLeak age\n-tr ash\ncoll apsed\n-s ocial\nĠCh ad\nĠincl ined\nĠst o\nĠstory board\n.p ayment\nstack overflow\nĠRaid ers\nĠ# '\nolic ies\nìľ¼ ë¡ľ\nem ap\nĠk j\nĠqu ota\nĠGard ens\në² Ī\nĠAng els\nĠof t\nĠlower case\nĠi Param\nĠche apest\nun ta\n_p kt\nic ators\nĠle urs\nĠdecre ases\nĉ define\nPRE C\namm ers\nĠPre paredStatement\n(d irection\nĠcre ws\nark ed\nĠMem phis\nĠS ell\nG TK\nĠm aid\n: disable\néĽ Ĩ\nĠP f\nĠal beit\nopen h\n?> \">Ċ\n.get Source\n(s cale\nD u\nĠP IL\n_ref resh\nĠbet s\n(c ar\nĠV on\n| --------------------------------------------------------------------------Ċ\nĠGr at\nM uch\n( Dialog\n.stop Propagation\nĠte k\nĠex its\n'], $\nĠphone Number\nuc s\nec imal\n------------ --\nin p\n.po jo\nĠcor pus\nĠpractition ers\n.p ic\n\" testing\nĠstring By\n.Not Null\nĠr ang\n.D ynamic\n_R ender\nÐ°ÑĤ Ð°\nWait ing\nĠW ik\nĠoverwhel med\n% \">\nĠA E\n}} >Ċ\nu w\n_t yp\nĠbuck ets\nĠgre eting\nĠla ughter\nĠant agon\nuggest ion\n- email\nĉt op\nĠer os\n_tr i\nĠiss uing\nĠh Ã¡\nĠisol ate\nOver flow\n, E\nĠnut ritional\nĠAbb ott\nĠn f\n.t ouch\n.fetch all\n_z ip\n\") }Ċ\nĠam at\nĠC isco\nĠn Ã¥\nPLE X\nĠse i\nf oto\n.to Json\nå¤ ļ\nĠKle in\nĠlib c\nĠmin ers\nå ¢\n- print\nĠP ride\nT odos\nĠmask ed\nĠset Data\nĠtele fon\nĠunh appy\nĠT ables\nge b\n( debug\n_all owed\n- access\nĠlog istics\nĠg ems\nĠM ature\nĠr sp\nĠAl le\n.get Bytes\n\\ web\nynchron ized\nPar agraph\nĠth rottle\n.sql ite\ncons ulta\nĠSe ah\nC e\nĠsub mar\nER E\nV ous\nĠre ddit\nĠsql alchemy\n-m ile\noc ide\nP our\n}} \">Ċ\nst ead\nĠ@ (\nĠ[ ])\nĠAd s\nĠover load\nr idden\nĠDes ert\nĠW rap\nĠPortug uese\net z\nĉf irst\nĠmile stone\næĹ ł\nÑĥ Ñī\n(s uccess\n< Vector\nco ol\nĠ[ ]);Ċ\nerv als\nĠin vert\n\" io\ncur so\nfr agment\nĠfeas ible\n.set Position\nĠel m\nĠimag in\n@ Spring\nĠb ats\npu Ã©s\nga lement\nns ic\ngi ene\nell ation\nĠBa iley\nSh ar\nĠT ul\nĠH K\nĠfree zing\ngl m\nce ans\n-c ut\n_c ircle\nåĳ ĺ\nn egative\nĠind ian\ns alt\nĠt ing\nĉm od\nĠs int\nak in\num l\nĠText Input\nĠpop ped\nT MP\nĠpark ed\n×Ļ ×\nĠF usion\nĠhe ater\nET F\nro zen\nh all\nĠM ik\nlev ard\n- heart\nĉ order\nM aking\nĠpled ged\nĠdir s\n$ post\nĠH err\nstant iate\n, \"Ċ\n.get Color\nĠS AT\nĠtimed elta\nĠM ai\nĉm ethod\nĠid iot\nĠTr av\nident ified\nĠDiv ine\n.get Path\nD ash\nĠinf iltr\nĠhandle Submit\nbro ok\n.g eneric\n.short cuts\n................................ ................................\nĠdat ings\nĠM V\nï»¿ #\n} \"ĊĊ\nĠimprison ment\nason ic\nrou d\nuc ion\næĬ ¥\nĠdia lect\nĠon Mouse\nconst expr\n.label Control\nĠwe aker\nĠman kind\nĠRE CE\nĠd iz\nĠapp Bar\nĠqu Ã©\nf ra\n_default s\nĠal iqu\n_at om\n: indexPath\nĠmiss es\nĠvis ually\nĠH ands\nSTR U\ni ates\n_ asset\nF inder\nmid t\nĠsn acks\n(__ ('\n. uri\nĠIn strument\nven ir\n($ __\n.Dot NetBar\nĠconfig s\nĠguess ed\nà¤¿ à¤\nĠinitial izer\nĠ? \",\nĠVer izon\nman ifest\nge ben\n.d etails\nG ate\npons ible\nĠEl im\n, str\nĠwrit ings\nĠD erek\nĠCo ordinator\nĠpill ow\nĠnotice able\nR s\nĠduplic ates\nern els\nk J\n.z z\noll and\nĠSE CTION\n_f name\nuff led\n'].' </\n_C M\nĠy r\npl at\nob ody\nnd e\n( Element\nĠAtl as\nĠ ï¼Ī\nĠn ivel\nĠins ists\n[ P\nĠenthusi asts\nĠìŀħ ëł¥\nĠbe verage\n{} \",\n: right\nĠnou veau\nĠCom ple\nĠP ag\nown s\nĠrem embers\nĠPr adesh\nĠch alk\nĠLa uren\n\\ Service\n_G EN\n> \")Ċ\nĠD ollar\nĠem oji\nCar ousel\n- player\nĠadjust ing\nĠjug a\nalleng es\ng ene\n(body Parser\nlop edia\nĠBeh ind\nĠslee ves\nĠdrag ging\nĠChe vrolet\nĠb iz\niv ities\nĠFrequ ency\n, char\n.W HITE\n_pre view\n) ';Ċ\n_ ax\nION S\n.c pu\n.input s\nUB E\n_fe ed\nĠSup plement\n! ).\nes us\nĠU DP\nĠmicro phone\nĠconf irms\n.is NotEmpty\n\":\" \",Ċ\n_S CREEN\nĉ expected\n+-+- +-+-\nĠH ait\nfast call\nĠdep ict\nv b\n_p icture\nĉd escription\nĠW ife\nuc i\nĠv icious\nä» ĸ\nue ba\nĠset User\nãģ ¡\nĠd iving\nĠoper a\nuser content\nar ah\n) },\ny un\nvel t\nĠun covered\nĠh ips\nĠosc ill\nĠassert ing\nĠX i\n.re store\nke a\nĠsp elling\nĠder ive\nab we\nĠD ow\n.set Type\n_v s\nĠco zy\n.c ategories\nO rg\n_m gr\nĠd ungeon\ncollection View\nĠBl ank\nac ias\nÃ¤ Ã¤\n_clean up\n_ACT IVITY\nĠtri angles\n.Menu Item\nĠip hone\nĠW on\n] ]ĊĊ\nĠCompar ison\n.D oc\nĠcan onical\nĠSud an\n') {\nUp Inside\nb uiltin\nENC Y\nx be\nĠch uck\nĠcontrad ict\nĠnuest ro\nĠarchitect ural\nĠF ib\nĠcomp ares\n* k\nC fg\nçĦ ¡\nnt en\nMatch es\nĠDOWN LOAD\n_HAND LER\nman agement\n[ S\nEN G\nÂĢ Â\nf ang\nĠsl ipped\nĠL anka\nesc aping\nĠtack les\nĠPed ro\n.P rop\n.' '\n.G enerated\n.New Guid\nat rigesimal\nill on\nĠstat istic\nspec ies\nhold ing\nDr upal\nĠfundament ally\nĠbond age\nĠres olutions\nInline Data\n\\ Type\nest ion\n.w rap\nĠwar riors\nĠLOC AL\nArch ive\nĠembr aced\ná» §\n.V er\nĠAff ordable\noles ale\nĠAp plied\nĠCon version\nm ega\n_c am\nĠcer emon\naur us\nĠVol k\n.op ens\n/ about\nĠSt d\nj ournal\n()) {čĊ\n,\" \\\n( Arrays\nĠD ense\nase Ã±a\nÃ¤n ner\n/ stat\nuser Data\nĠg erman\nĠt z\nworth y\nFormat Exception\nph erd\nĠsm iles\nĠWh enever\n( adapter\n.bad logic\nĠbrief ing\n.Grid Column\n- char\ndim ension\nĠC opper\nĠnin th\nĠ' {{\nĠr av\n_T able\nĠderiv atives\nĠR aise\nĠF ut\narm or\n-p adding\nĠre min\nĉ style\nĠMembers hip\nĠspread s\nĠgall eries\nĠClar ke\nĠcon ception\nmin ute\nĠab usive\n_ad j\nĠterr ific\nĠover t\nour cing\nĠentr ada\nlevel s\nĠcrit ique\nĠrespect s\nĠM MA\ni ene\nĠenc aps\nĠRay mond\nDiv ider\niv able\nb az\nĠ@ _;Ċ\nĠCl aire\nĠur ging\nCE E\nĠtransform er\ndisc ord\nĠJ ourney\nt os\nĠcompet itions\nĠO BJ\nĠB is\nĠrelax ation\nid y\n_IN STANCE\nĠP ref\nd ados\nici encies\nĠMedia Query\nĠC ube\nĠStr ange\ng pu\n(d ays\n_Init Struct\nĠfinger print\nem at\nĠGe cko\nĠr ails\nĠL um\nstr action\nig ung\n(m ovie\n_d ictionary\n_int errupt\nĠQ C\nik ed\nappend Child\nrec ipient\nr Ã©\nV e\nĠtow el\n.last IndexOf\nĠplace bo\nĠW ie\n.es p\n( Debug\noper ative\nĠdece ased\n& id\nĉm utex\nel ic\nĠb apt\nĉ čĊčĊ\nĠfar ther\nH alf\n.dis able\n.menu Strip\nle ccion\nĠresult Code\nĠc ans\n-e lection\nf emale\n_F IX\naus ible\nĠP OWER\nĠrecon struction\nĠsc ans\n.Xtra Bars\nâĢĺ s\nRem oved\nĠparagraph s\n_m argin\nĠl ymph\nĠb os\nling ton\nĠBapt ist\nĠadvertis ements\nĠMan age\n/ yyyy\nIO US\nENC ES\nĠF iction\nĉm enu\nĠFile OutputStream\nov an\nĠF eng\nĠsk ipping\nget Class\nann i\nĠreb ounds\nĠpublic ity\nĠing res\nuse ment\nĠthought ful\n.Ch art\nĠhat te\npass port\nĠhook ed\nĠL ens\nĠflag ship\nĠst ip\nĠG EN\nĠcl ues\nip v\nĠR ise\nĠG ew\ntab lename\nĠfore most\n_ validate\n_an alysis\noll a\nĠqual ifications\nĠdistrib utions\nĠFl ower\nĠt ense\nĠthank ful\nĠcl utch\nĠun ified\nro ads\nĠsit i\nĠst all\n_P RIORITY\nc stdlib\n_USER NAME\n.by tes\n? page\nermal ink\nĠVe get\n/v nd\n- author\n.N ONE\nĠCon current\nĠC ry\nĠstart ers\nĠInter action\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠ\nĠLE VEL\nE ll\nĠcom boBox\nĠTh eresa\nte k\n_H andle\nĠab y\n.g dx\n, end\n(L ocal\nO l\nkn ife\nar ial\nĠH off\nĠprostituer ade\nDo ctor\nInst ances\n.Set Value\nĉf rom\nĠlux urious\nInd ent\nAlloc ator\n_D RAW\n(\", \",\nĠFr ances\nĠgroup Box\n(s chema\nPrint f\nOR IES\n- gradient\nĠre put\nar in\n_D ONE\nin cre\nig nty\nĠex ert\nĠ- .\n/ App\n-th rough\nĠdecl ining\nĠdess ert\nĠinc umb\nĠdesign ation\n.P ORT\n, strong\nĠsand box\nĠw ines\nĠP av\n$ str\nask ell\nĠh Ã¶\nĠP Y\nGet Instance\nText Input\ngame Object\n/ events\ncreated At\nĠlocal Var\nĠWH ITE\nper ed\nile ge\neff icient\n, color\nc ate\nĠC afe\nĠsimilar ities\nĠp umps\nĠHung ary\n.User name\nĠsk ate\nĠtouchdown s\nĠacceler ate\nĠH elen\nOM EM\nĠK un\n_v ol\nĠfind All\nĠMens chen\na head\n); \"\nkom men\nĠpossess ed\n.arg max\n.trans ition\nAR P\nOLUM E\n(s cript\nĠÐ ĺ\nĠF inding\non ces\nI o\nB old\nĠrenew al\n_D IALOG\nĠdis reg\nINT ERN\nĠt oute\nĠelect r\nĠG ross\nĉ true\n.F ields\nĠW IDTH\nĠD ent\nĠÃ ģ\nNS Notification\nĠa os\nĠme lee\n. Validation\nĠDE C\n-depend ent\nĠsu ic\nT raits\n$ message\nĠD ear\nĉ FILE\nl anguages\n.P rot\n.add r\n-g eneration\nIC ON\nĠtrans plant\n-d escription\nĠch asing\nĠche es\nĠ} */Ċ\nTr ad\nqu eries\n/widget s\nsub package\nĠes pec\nĠcr acked\nĠcompet itor\nP urchase\n- team\nolec ular\nor Thunk\n& P\nĠrel ent\n/ #{\nĠproduct Id\nĠè ¾\nĠL av\nĠAl ter\n.M ode\nAD IO\ngr p\næ ·»åĬł\nQu it\nĠdepth s\n-c ategory\nĠD ATABASE\nS PELL\nĠFal con\nĠQString List\nĠ'' .\nĠIn stitution\nd amage\naz or\nbel ongsTo\nver ages\nĠN ONE\nipp ets\n, \\Ċ\nĠfoot print\n_ archive\nn ak\n.get Field\nĠRef lection\nĠ' ]\nĠH BO\n_dis count\nĠin cest\nĠD odge\nĠW ade\n.N O\n\" encoding\nĠBlock chain\nĠlaws uits\nĠM aint\nch ten\nĠÃ©t ait\nĠktÃ³ re\n_ ctl\n(t imer\nB attle\niz o\nay ed\nI OR\nĠGlas gow\nĠsyn th\n_log s\n.p ose\n_Adjust orThunk\n(( &\nĠuns ure\nyst ate\níķĺ ëĬĶ\nO ULD\n. ng\nĠdefault dict\nwork space\nĠselect ive\nPicker Controller\nYNAM IC\n.method s\nĠpath ways\nĠF ew\nK G\nCRY PT\nfollow ing\nĠD LC\nĠS ara\nĠpres et\nestruct or\nĠK urt\nĠair plane\nĠo mp\nĠParent s\nĠMart inez\n.com plete\nĠbroad ly\nĠsc are\nĠM Ã©\nĠelim ination\nĠpou red\n/ sw\nĠcom un\nĠm asc\nĠOrgan ic\nĠString Utils\nil ateral\nĠreluct ant\n- age\nĠn z\n.\" \\\nĠpast or\nale z\nĠe fect\npro v\n/ init\nĠp enn\nund s\nĠs size\nĠPro j\nbas ename\nĠsh ells\nĠNe ck\nĠEn forcement\nvid ed\nst own\nS phere\n$ r\nuss en\naf il\nĠTele gram\nĠanaly tical\nÐ½Ñĭ Ðµ\nus ually\nx n\nĠhistor ian\nĠGreg ory\nol ph\nĠUn a\nĠcon tributes\n% -\nanti ago\nÑĢ ÐµÐ´\n.reg ion\nĠab rupt\nĠUnsupported OperationException\nĠT ASK\n_f inish\nĠnot orious\nĠV s\nĠM Q\nĠsun set\nĠun acceptable\nar cer\nĠill umin\nĠOr b\nĠb h\nE ste\n_dis patch\nĠr ipped\nĠtou jours\nĠPar cel\n_ ll\n.user Name\n.class es\nS OURCE\n( Number\nÐµÐ» Ñı\nĠhead phones\n(s ide\nconst itution\nann ah\nčĊ ĠĠĠĠĠĠĠĠčĊ\nĠcl iff\n- ref\nĠmo strar\nĠPow ell\n+ y\nĠB G\n_f ragment\n.P ort\nĠreal izing\nparam ref\nĠh ometown\n@ Table\n+\" </\nom id\nĠd ug\nĉb tn\nĠsubject ive\n/b rowser\nĠus hort\nĠMont gomery\n-r ate\nĉ puts\nlet ics\norn s\nâĢľ What\nee per\n.In variant\nĠconce aled\n_n umpy\n======== =\n(p s\nLoc ations\n. astype\nĠCH ANGE\n.Order By\n; height\nĠg ente\nĠgr unt\nĠPl ane\nĠsad ly\nĠLog an\n_use c\n.d gv\nĠsinc er\nĠp n\nĉg tk\nĠinstall er\nĠdispl acement\nĠburn s\nÑĥ Ñģ\niver ed\n: ])Ċ\nse at\nan ing\n} )ĊĊĊ\n_ roles\natic an\nĠgener ators\nĠhur ts\nĠsn ippet\nĠg son\nĠseg reg\nĠdistrib utor\nĠadv ancing\npost gres\nĠus r\nĠL is\n.assert Is\n_c d\nĠhy draulic\n.count er\nĠIndepend ence\nĠdiff Ã©\nUn like\nĠto mb\nv ik\npost ed\nw f\nĠdesc ending\nd yn\nament al\nĠF ruit\nĠY o\n.d ouble\nĠI A\nie v\nib rate\nĠRel igion\nMany ToOne\n-T a\nĠban ana\nĠAv engers\nĠHol ocaust\nĠget C\nĠcon do\nĠGoth ic\nĠprosper ity\nTR ANS\nĠdoes nt\nĠCha os\nIT T\nĠC URRENT\n\\ helpers\n_S AVE\nav it\ncom puter\n_s heet\nĠBrew ing\nĠrob bery\nĠê² ½\nĠÐº Ð¾Ð¼\nĠn Ã¤\n.reg ex\nĠdis ruption\nĠSim ulation\nap id\nĠsup reme\nÎ ¼\nĠcommission ed\nĠabsor ption\nĠNew castle\nĉ constructor\nTer ms\nĠr iv\nĠrelig ions\nWith Tag\n.H tml\nlink ed\nComp ound\nĠM ans\nĠl akes\nizz le\n.set Size\nab er\nĠNe eds\npack ages\n.Tab Page\nĠref s\nĠi outil\nĠDo ing\nĠ\"\\ (\nĠphenomen a\n.Get Int\nAL TH\nĠparliament ary\nĠref usal\nĠinexp ensive\nĠ}ĊĊ ĊĊĊ\nĠsolid arity\nĉp ush\nha ul\nĠB ere\nS izer\nInd ividual\nĠan ce\nĠd ile\nĠPe ak\n(h r\nEditing Controller\nH N\n_PER IOD\nET S\nB anner\nerror Message\n.C ASCADE\n- ignore\nĠS IGN\nĠO B\n_ dd\n( DEFAULT\nĠso o\nĠVict orian\nĠcur t\nĠdis crete\nry lic\nimb abwe\n.to Fixed\nl Ã¤\n.std in\nĠq ty\nROLL ER\nmedi ately\nĠpl umbing\nĠProperty Changed\narrant y\nĠBreak fast\n.set Header\n.py thon\ncom merce\nop encv\n> --}}Ċ\nF rench\nEntity Manager\nĠPl ain\n//////////////////////////////////////////////////////////////// ////\nÂ ³\n( RE\nc apt\nĠorgan isms\nĠj ets\nol ocation\nĠApp RoutingModule\nĠgl orious\næľ į\nĠdisc arded\nĉĉĉĉ ĠĠĠĠĠ\nĠArn old\nl ug\nĠpar l\nĠhorm ones\nĠm ah\nĠSon ic\nĠorgan izers\n_PL ATFORM\n.in v\nĠch ord\nvent ional\nĉ of\nEp isode\n. Enum\nunk t\nĠD h\nĠJ ared\nĠN ak\nĠint ends\nEnd ian\nĠa ustralia\n_c v\n(res olve\nĠclin ics\nlik ed\nASH INGTON\nin ha\n' *\nĠN P\n_b eh\nĠh f\nĠw Ã¼r\nc ategoria\n$ form\nĠsub way\nĠis Active\npop ular\nC our\nĠco oldown\nĠa insi\nĠGL uint\nere al\nĠarray Of\nĠh atch\n======== ==\nress es\n_P P\n. ^\n_dec ay\nĠB less\nmet rics\nĠCOPY ING\nĠDump ster\nĠJos Ã©\nĠDesign s\n<V oid\nçº ¿\nĠ? ><\nĠ\" }Ċ\ntime zone\nĠe er\nmax cdn\nĠE SC\nig aret\n_conn ected\n_re verse\nĠquestion able\nĠUS C\nĠtut ti\nĠdrop out\nĠActiv ities\nĠW inds\n')) );Ċ\nĠcon gest\nÄŁ Ä±\nĠprolong ed\nè¿ Ļ\nĠCross AxisAlignment\nLE EP\nĠVAL ID\nĠG az\nĠdepend ence\nĠP rix\n.Compiler Services\nj ump\nĠstr at\nc irc\nĠC USTOM\nx aa\nĠb mp\nĠb ureau\nĠw aren\nN X\n( Window\nĠChrist ie\n_F E\nĠt n\nĠOm ega\ncommunic ations\nHome Page\ncom pletion\nĠsupply ing\nYP ES\nÃ¡ vel\nåĪ ¶\n(c lick\n\\ Contracts\n/ questions\nĠe z\nAM S\n.m esh\nĠ' <?\nj Ãł\nIn i\n. #\nĠCard inals\npc iÃ³n\nC ube\nĠPat ients\n_p ref\nAction Button\n(b uild\nĠVis a\nov el\n( ArrayList\nI gn\nĠrehab ilitation\nĠpal ace\nĠspeech es\n} 'Ċ\nHttp Response\nĉc ode\nD ummy\nĠacad emy\n.m ovie\nĠincorrect ly\nĠc yc\n( UnityEngine\nĉc allback\nĠSat an\nĠF UNC\nĠch ant\nĠHealth y\n: ',Ċ\nSh ipping\n_m c\nĠD ylan\nĠProdu cer\nĠresp uesta\nĠpol ished\nB roadcast\nĠbal ancing\nĠSl ide\nĠC aps\nst ill\nĠhapp ier\nĠG ospel\ntr an\n.path name\nActive Sheet\nĠCh ang\n> \\Ċ\nRob ot\nJson Object\nĠD F\nĠProcess or\n_sh ould\n.prot obuf\n- users\nĠemb ry\nF ONT\nĠstart ups\nĠData Source\n) #\nuro s\n_C olor\nĠstand alone\n} [\nj d\nĠforg ive\nĠng x\nĠGener ally\nĠconfig urable\n/ order\nĠv as\n') \";Ċ\nĠR R\nĠT roy\nĠcomprom ised\nĠSw an\nint endent\nCent ral\n_ keeper\nĠar quivo\nĠRead Only\n_cur ve\nk v\nent in\nè ±\nĠE y\n.im read\nĠP am\nif fe\nat ivity\nxb c\nĠgr im\n-f illed\nnames e\n'] :\nĠa ur\nĠGib son\n.Mouse Event\nĠl ado\navad oc\nĠfam il\nĠM oder\nf ps\nãĢĢ ãĢĢ\n- example\nĠAl zheimer\nĠU tf\n_arg uments\nCon clusion\ntext Content\nrem aining\nĠinterrupt s\nĠBack up\nĠM ong\nĠrecept ors\nh istor\n.cor outines\nĠsh outed\nAl arm\nĠcomb ust\nĠg rote\nult ural\n( ids\n---------------------------------------------------------------- ----------------\nipl inary\nO pts\nĠY ale\nlocal Storage\nĠequ ival\nĠF leet\n\\ b\n* pi\nĠQ Label\næ ¡\nĠv x\nĠA CL\nĠsu cesso\nĠper c\nĠNot re\nĠan arch\nR ing\nsp b\nĠstr pos\nst ores\nĠMap le\n(Main Activity\n(\" \"))\nĠview Holder\nQu ad\nĠig ual\nors che\n.m argin\nĠind ie\nĠfr anc\nĠForm Builder\nĠPart icip\n.fl ash\nĠstorm s\nU lt\nĠf en\n[ new\nE ver\n=\" Ċ\nĠlocal ized\n_f ollow\nĠn ave\nĠdomin ance\n(t ile\nJ ournal\nĠV C\nĠpenet ration\nï¼ ķ\nĠcomp artment\nĠb ids\nForm atted\n****** /ĊĊ\n(c ity\nâĢĶ it\n[ C\nĠuse Callback\na ub\n) ?.\nĠV AR\nĠSe bastian\nĠM oss\nĠabund ant\nG reg\nÑĤ Ð°\n_c i\nĠbib li\nCR M\nĠAt tempt\nism e\nd ash\nãĢ İ\n_m u\n.Formatting Enabled\nInd eed\n-d irect\nĠsuck ing\nĠp ne\nocab ulary\nĠPack ers\n.N avigation\nĠp ied\ncri bing\nĠSt uart\n.To Double\nĠSecond ary\nS aving\nĠD ut\nĠM add\nM agic\n, H\n.document Element\nĠB ST\nĠdiff ers\nĠmore over\n_ nd\nSE ARCH\nÐ¿ ÑĢÐ°Ð²\næ ´\nto Match\nĠdecre asing\n-m ember\namp us\n( boost\nD aily\nData GridView\nĠHttp Context\nĠh ipp\n_work ers\n-l anguage\né ĵ\nĠconsist ed\nath ing\nĠMer cury\n$ content\nĠpract iced\nĠMod ules\n_D AY\nĠweakness es\nĠL odge\nĠn ar\nĠM ate\nĠj p\nĠHttp Headers\nĠsm o\nĠT OKEN\n] )(\nĠaqu i\nsw agen\nĠs rv\nĉ ans\nA round\nĠMan uel\nĠfiction al\nĠIM G\nĠ. '\nĠB erry\nĠwall paper\nsex ual\nier o\nĠ çļĦ\nìĨ Į\nBacking Field\nĠAd rian\nBASE PATH\nĠrepe ats\nĠbl ues\nĠunp redict\n_c oll\nst acle\nĠT umblr\nĠEl f\nĠass urance\nĠc ensus\nĠIM PORT\nEND ER\nan os\nĠ= (\nĠEll is\n\" ĊĊĊĊ\n.w in\nĠA bove\nal on\n_t ick\nĠrepresent ations\nĠæ ķ\nw id\nĠAr ms\nList a\n_f ailure\n_c m\n.Flat Appearance\nĠthr one\nP atch\nĠV oy\neng l\nĠnegot iating\n> `\nĠshoot s\nĠF PS\n.Y ear\nĠK iss\nenc iÃ³n\nreet ing\nFrom File\nĠresign ation\nØ ·\nĠtw ins\nÆ°á» £\nĠge bru\n.get Content\n.T ree\nĠEmploy ees\nĠF IFA\nĠcert ainty\n(C l\nĠtot als\nedit able\nà¥ Ģ\n.Report ing\nM as\nqu iet\n.r ules\nĠV O\ncon exion\n, K\nĠalloc ator\nĠPow der\n\\ Repository\nBe at\n_t ipo\nĠ[' ',\n_IN TR\nĠ<< <\n< hr\n\") ==\nugg age\nĠC raw\nĠÃ© galement\nĠg inger\nĠprim era\nĠprod uto\nlt k\n.User Name\nĠstr error\nm ith\n_n b\nĠdis comfort\n']; ?></\nQ T\nĠer upt\nĠDan ish\n\\ Active\n_ad apter\nĠb ubbles\nrol lo\norg ot\nÐ½Ñĭ Ñħ\nVE CTOR\noc ode\nĠBull s\nĠbo il\n> \");čĊ\ndrop IfExists\nĠB eg\n_H AL\nĠcross AxisAlignment\nĠE vidence\nĠpec uliar\nĠinstit ute\nve is\nĠf ft\nÃ ģ\nĠzo ekt\nan aly\nĠHom eland\nĠpen etr\nudden ly\nĉ element\nĠB ren\nĠTr udeau\nĠCub an\nj am\nus lim\n_e v\nĠst ems\n} %\nĿ å§ĭ\nĠbrand ing\nĠcorrespond ence\n.j query\n¢ åįķ\nĠRead s\n(Http StatusCode\nass in\n(s lot\nĠGrad uate\n/// <\nĠinform ations\nEN ABLE\nĠp uis\nĠfind er\nĠBr is\nĠnett steder\n_m id\nĠo gs\nĠSter ling\nĠar rog\nstr ftime\n| ĊĊ\nĠvo x\nĠReg ardless\nĠes o\nĠCom fort\n.Boolean Field\nĠu h\nAC Y\nĠsque ez\nĠV ic\ncont ro\n. lo\nĠ ire\nĠCom edy\në ¶\nĠorigin ated\nĠsh ipment\n| max\n_g uid\nlev ation\nÐ½Ð° Ñı\n( undefined\nĠD DR\nĠshoot ings\nĠLat ino\nEND OR\nĠaver aging\nĠgre eted\nĠthe aters\nÐ¾ Ðµ\nĠd B\nĠg st\nĠdef inite\n. Storage\n.h er\nĠa fore\nĠRe ality\nĠGod s\nvers ed\nĠhands ome\nĠex cluding\n( ad\nQu otes\nĠS cheme\n? q\nĠT amil\nT icks\nĠp est\n' n\nĠporn ography\n_mod al\nĠ ----------\nĠdis posable\nF REE\nĠsh ark\nC HE\nĠdep icted\nĠdemonstr ations\nĠK illed\nĠR ULE\nĠobs essed\nĠsimpl ified\nPost al\nĠconcept ual\nĠp st\nL as\n_PRO JECT\nucceed ed\nol u\nÄŁ i\nĠpersonal ities\nĠres hape\nĠenc losed\nĉp tr\nĠtutor ials\nĠexpl oded\n_DIRECT ORY\nåĨħ å®¹\nĠcan on\nĠrecogn ise\nP AD\nĠAppro x\nĠRest ore\nĠImport ant\nĠheav ier\n.Se quential\nEar th\nĠMil k\n.set Request\n.t em\nĠre construct\nĠskept ical\n_Pr ivate\nBU F\nqu a\n: a\nĠse k\nĠd well\noss a\nĠreward ed\nÐ¸ Ð¹\n(top ic\n_part ition\nĠ__ ________________\nKey words\nĠFr anco\nL ite\nĠn aken\nĠÐ· Ð°\nO BJECT\nĠcraft s\nĠSw ap\n.X na\n.Con nect\nĠbalcon y\n(re al\nĠBarn es\nb ir\nĠTw enty\nay an\nat ars\nĠProp el\nĠIh nen\nUp grade\nĠcur b\n- second\nĠn eph\n.p res\nìŀ ħ\n.se q\nĠp added\n\" ?\nj l\nãĥ ¬\n') </\nĠciv ic\ng ons\n> a\nCo ordinates\nĠen acted\nENT S\nĠl ac\n.f inal\nĠPhp Storm\nc alled\nĠin quiries\n.m iddleware\nĠD owntown\n/ ';Ċ\nĠkil omet\nac cel\nĠqu ien\nw string\nset Data\nĠman era\nĠmod ular\nrim p\nĠtar iffs\nâĢĻ il\n_TH ROW\n/c olor\nĠHT MLElement\nĠcar ro\nĠpr ere\nĠplot ting\nĠPos itive\nĠMach ines\nOT ES\ná» Ľ\nple asant\nĠal te\nĠa inda\nth ese\nĠc ors\nip ay\nĠAdvis ory\nĠRub io\nj q\nĠl imestone\nĠdet ached\nè®¾ ç½®\nten ant\nĠDep th\nal ore\nĠÑģÑĤÑĢ Ð¾Ðº\nĠF ORE\nĠL ay\np resentation\n) ');Ċ\n.sub plots\nÏ ĥ\nN OW\nG ar\nhand les\nab ra\nput ies\nĠElect rical\nM iddle\nrop ic\nĠJ D\nĠD yn\nĠB ristol\nĠMc Carthy\nĠstri ker\nĠenumer able\nĠEv an\n.default s\nqu ences\n) ||\nĉt oken\nâ Ĺı\n-d ropdown\nST ORE\nĠGraph ic\n( pp\nEx pl\nĠup wards\nĠD istributed\nĠW EB\nJ er\nis NaN\nçĶŁ æĪĲ\n> R\nÃ¼ss en\nef s\nĠun cover\nĠl ud\n.cal culate\nĠint ptr\nĠmidfield er\n. Headers\nĠm f\nere f\n.M etro\nĠSpe aking\n: b\nĠcryptoc urrencies\nĠdem ons\nĉ EXPECT\nĠw icked\ny outube\n: Int\nĠHind i\nĠC AT\nĠØ ¹\nr ar\nom ore\n/ per\n/lic ense\nĠre im\nĠawait ing\nĠle thal\nĠE F\nround ed\nĠPl atinum\nĠÐ²Ñģ Ðµ\n.co ords\n.De vice\n/ item\nĠW enn\ncompile Components\nĠK inder\n.remove Item\nĠand a\nbn b\nĠpr a\n( transaction\nĠembarrass ing\nĉ BOOL\n.content View\nĠevent data\nat ore\nĠprovided In\nir ma\nĠz ona\n_H W\næ Ļ\nĠst ove\nĠcounter part\n_Pro duct\n_MAN AGER\nĠinfr ing\nĠE RA\n_p arty\nÑ ĳ\nĠin ici\n_ Request\nĠmir acle\nĠcancel Button\nS py\nat Ã³\nĠpol ish\nĠNic ole\n.display Name\n\\Request s\nĠuse History\nRouter Module\nĠst ared\nID ER\nÑĥÐ½Ðº ÑĨÐ¸\nĠnot a\n$ arr\npec ified\nĠto pp\n_DR IVER\n/ ng\nå ł\n_t m\n% timeout\n< s\nĠ( *)\nĠHttp Request\n_TR ACK\n(n ote\nĠExp lore\n_s erv\nĠç »\nB inder\n+ \",\n. att\nĠEth i\nĠc Ã³digo\n=' \\\n.l ines\n( Of\nå° Ĩ\nmiss ible\nĠv Ã©\nĠac oustic\nĠcraft ing\nn it\n.b a\nĠLuc y\nĠi Pod\nĠpup ils\n-m ax\n_w r\n(c p\nĠRE PORT\nĠd ns\nĠRe ferences\nĠundert aken\nĠkÃ¸ benhavn\nĠch ai\nĠC roat\n_ Log\nrown ed\n_m ed\nĉ date\n# __\nĠcost umes\nĠRe quires\naff le\nç Ĭ¶æĢģ\n-S emit\nela ide\nÐµÑĤ Ð¾Ð´\nĠp estic\nĠd ra\nDOC UMENT\nĠ... čĊ\n}` }Ċ\nĠA uction\nĠD ock\nxxxx xxxx\n(get String\nħ į\nĠborder Width\nĠMach inery\nĠpredict able\n.S H\nĠam plitude\n.for Root\nIN avigation\nTable Model\nat trib\nĠmaneu ver\nĠexc av\nB ERS\nĠd apat\nĠinstall ations\n.A sync\nĠr ays\n= âĢĿ\n; ččĊ\n.c rypto\n_db g\nĠEnum erable\nOf Size\n_epoch s\nm w\nM ENU\nout line\nĠP apers\n============ Ċ\nĠuniform s\nĠG ig\n- package\nĠJen kins\nĠHome Page\n.is Selected\nĠmechan ic\nM K\nĠS ounds\n//---------------------------------------------------------------------------- -Ċ\nĠresearch ing\nĠinf os\nograph ics\ners et\n([' /\nĠTim ber\n. agent\n.to JSON\n_command s\npar ing\n_ad just\n.n ome\n(g lm\nStatus Bar\nfile path\n? âĢĻ\nĠdetect ive\nĠunser er\nĠTib et\nEN DED\n(se ed\nĠsne ak\nĠam or\n=\" //\nĠPan thers\nall ax\nĠL IVE\nĉD WORD\n]= -\nĠtorn ado\n/ min\nĠlung s\n-c urrent\nĠBook ing\nåĪĹ è¡¨\nĠenjoy ment\nà¤ °\nJ A\ntyp ed\n.B tn\nf at\nug al\nĠSh ares\nĠdis gr\nĠB AR\nĠFO X\nOp code\nĠS z\nkey down\niction aries\nĠdetail ing\n} ))Ċ\nĠp ok\nĠdemonstr ating\nĠnot ation\nl ayers\n@ if\nĠN PR\n.strict Equal\nĠRec ipes\n.T ensor\nĠliqu or\nĠdeb ts\n.ends With\nW heel\n.P os\nCS V\n$ arity\nĠun stable\n( loss\nENS OR\nĠele ven\nĠL opez\nĠHop kins\ncon om\nĠS eth\nĠpo ems\nQu ant\nĠg sl\nĠsy rup\nĠs ibling\nĠc ass\n-v ous\nÃ¶ t\n_P ATTERN\n_SE CTION\nest imated\nup grade\n.m ongodb\nĠBo at\n_C TX\nĠfetch ing\nust in\npi el\nM arg\nRef lection\nĠd uct\nĠMunicip al\nĠb x\n.Get Current\nml ink\nĠAccount ing\nĠGene va\n_P os\nĠpass er\nĠhear ings\ncom pan\nĠfrag ile\nInitial izer\nwalk er\n.M aterial\nĠHun ting\ntrys ide\nĠk at\nĠcl erk\ná Ł\ndo ing\nĉg roup\nĠsan ction\n.l b\nĠL azy\nĠCon straint\nP agination\nĠpou vez\nĠInd icates\nM ER\nĠcour s\nĠyear ly\nĠgros se\nabb rev\nĠD ON\nĠproceed ed\nent lich\nĠproperty Name\nĠTe aching\nst adt\nĠc utoff\norn ers\nĠa frica\nĠrend ers\nĠYan kees\nĠTool bar\nsp aces\n.fill Style\nĠseg undo\n_str len\n.F irebase\nå¤ Ħ\nĠmention ing\n\\ (\nĠVal ve\nSet ter\nĠsp ans\nĠAl cohol\nĠLet ters\n\\x e\nĠT K\n_B LE\n.get Result\n< Player\nĠP att\nĠeas ing\nĠtur key\nĠF en\n') \"\nĠconf ined\nĠin clus\nSup erview\n(with Identifier\nenc ial\nĠstuff ed\nTh eta\nĠeconom ists\n} ));ĊĊ\nco okies\nĠRo ose\nĠChe ese\nĠfich ier\nĠen forced\nAB B\nno ÅĽci\n_AL LOW\nĠrecru ited\nĠexpend iture\n-n ight\nĠassert NotNull\n_ex ecute\nĠØ ¯\nIN DEX\n_F MT\nĠresc ued\nĠMonth ly\nĠCons ervation\nĠG eb\nOb ama\nEp och\nic ies\nĠOr t\nĠso it\n( icon\nF riends\nm ol\nĠground ed\nĠC ause\nad ena\nWE EN\nĠL un\nIT IVE\n. loop\n_un til\nĠcor r\n.ed ges\nĠhyp oth\nched uling\ntrans lator\nĠÐ ľ\nR om\nãĢĳ ĊĊ\nĠX amarin\nĠviol ating\n. anchor\n--- ĊĊ\nĠtr ader\nAD VERTISEMENT\nĠuns ere\nĠD AO\nĠbl ond\nĠP AT\n.g lob\nĠè¾ ĵ\nĠsplit ting\nĠun subscribe\nĠatmos pheric\nĠTr im\nĠcit ation\nĠin ference\nĠF t\nĠDar win\nfind One\nĠG el\n( Convert\nĠaccess or\n; text\n(s orted\nĠjud ged\n); \\\n: p\nĠme ine\nĠS lim\n.Command s\nĠper ceive\ncoh olic\n< Data\n.entry Set\nĠassert False\nĠPat rol\nense m\nÅĤ Äħ\n¨ ¡\nW IDTH\nĠRes cue\nĠU IF\n_THRESH OLD\nĠMich el\nATER IAL\nopens ource\nĠD iana\nĠinv ites\n_B ODY\nĠreserv oir\nĠro i\nc ust\n(t c\nï¼ģ \");Ċ\nĠfest ivals\nĠperform ers\nĠclim bed\nĠj ungle\nString Length\nĠunlaw ful\nier re\nvertis ement\nĠst akes\nĠh ats\nMod ify\nĠLET TER\n.H ide\nĠstat utory\n_ white\nĠPer l\nuten berg\nem ple\n.W orld\nĠoverlook ed\nĠcon cludes\n/* ================================================================\n-w ise\nĉ stream\npop ulation\nĠevent o\nĠillustr ations\nft s\nĠaut of\nĠPro cedure\nĠdes erved\n-t imes\nĠg ol\nN SError\ncre st\nĠPak istani\nany ch\nget Current\nĠl ar\nnt l\nĠRe becca\nĠm ateria\nĠfind By\n/ ad\nCallback s\nĠAl s\nĠKat ie\nĠObservable Collection\nĠDocument ation\nTyp ed\nĠCulture Info\nĠTim othy\nĠlater al\n\" type\nĠun authorized\nĠteach ings\nĠdebug ger\n[ value\nĠal ors\nĠu z\nĠsc atter\nĠdown ward\nĠmig li\nstatus Code\nĠ( ))\nĠM W\nĠÐ¼ Ð¾Ð¶\nRO SS\n.b uf\nĠfair y\nĠInf rastructure\n=> \"\nt lement\n$ (\"\nFrom String\nĠB ild\nĠconvent ions\n_n ative\nĠIns pector\nĠP ist\nub ar\nĠreg s\nĠP ilot\nTh us\n>' +\nĠc ela\n.new s\n( Product\nL iving\nR ussia\nĠfac et\net ical\nĠ[' $\n/ [\nĠD ire\nĠg ases\nĠIN FORMATION\nĠE at\nĠFor ums\nĠChar acters\n_m et\nĠìĭ ľ\nĠk ings\nach ie\nĠL ambda\nĠtim ers\nĠLight ing\nĠCase y\nadd ir\nand ex\n. answer\nĠH ip\nĠPr incip\nStart Date\nĠ ãĢĮ\nt res\nĠ& #\n.Max Value\nĠPro blems\nĠlat ex\nOf Class\nĠLyn n\n// '\nĠvoy age\nĠshut tle\nĠRoll er\nĠRuntime Error\nuy a\nD ic\nĉb uilder\nĠbul lying\nĠsimple st\n.c alled\nĠL R\nĠmor ality\nĠst urdy\ntr acking\n.sw agger\n_B IND\nIT OR\n-url encoded\nĠÑ ħ\nĠTr inity\nĠtr aps\nĠ| -\nĠset Text\nĠbarg ain\nĠbr akes\n.get Code\nĠmigr ate\nĠrib bon\n) return\nĠcharg er\nac om\nADI US\nĠAmb assador\n-a fter\nĠann i\nĉs pin\nCon cept\nĠHend erson\nĠH OST\n.r ank\nĠNor theast\nĠber lin\nĠrequ is\n.f eed\nĠsource Mapping\nĠRen contre\n. ajax\nnest js\nĠtre k\nĠN acional\nĠ& [\nĠpay able\nort ex\nĠde pt\nfield Name\nĠcomple tes\nĠR VA\nĠon ions\nal ignment\nForm ats\nĠ' {$\nHash Set\nĠB od\n.Invariant Culture\nĠsettlement s\nĠhy dr\n. updated\nvent h\n( seconds\n=\"/ \"\nĠweb page\n( ĊĊ\nĠt ir\nĠto es\nĠBr ick\nĠamb ition\nP ot\n= max\nET IME\nĠdep ot\nc alls\nĠNor wegian\n` :\nĠbur ger\nĠprofess ors\nĠAl locate\n-third s\n-ch art\nĠfor d\n* N\n.k otlin\nĠpaper work\nĠDE VICE\n% @\",\nres pect\n(m p\né «ĺ\n- if\nĠcush ion\nob ot\nĠpar c\nSP ACE\nĠNet anyahu\nĠself ish\nfe at\nĠclient es\n-to ols\nĠpor ch\nĠj q\n. verbose\nĠlib erals\n] )ĊĊĊ\np ies\nNot Blank\n( term\nÈĽ i\n_Param s\n.normal ize\nB ullet\nAS IC\n(h ex\n_client e\n+ ,\n_D I\nĠforth coming\n} \")]Ċ\nse o\nU m\n> Name\nĠcomfort ably\nirection al\nW ITH\n/ pr\nĠP oor\nĠVit amin\nv ic\nG H\nĠprior it\nĠN N\nĠC losed\n¤ í\nĠis Open\n\\ Console\nAnd Feel\n.S UCCESS\n_OPER ATION\npol ation\nĠT as\nps z\n> '.\nC URRENT\nV endor\nhost s\nĠE rd\n>tag ger\nĠsourceMapping URL\nĠmar athon\n_c losed\nĠexem ption\nĠrecogn izes\nides how\n' $\n('/ ');Ċ\nm its\nwar z\nĠCh erry\nµ ¬\nn or\nport e\nĠw l\n_back up\n.get Boolean\n.get Resource\nĠdefinit ive\n. EditText\nĠs ÃŃ\n.C ONT\nĠPL AYER\n.c ards\nĠSh ore\n('/ ')Ċ\ncl uir\nWeb Driver\n(m onth\n-re lease\nĠins pector\nå £\nĠN F\n_cl ip\nåŃ Ĳ\nĠinteract ing\n.t mp\nĠ'' 'ĊĊ\nĠde e\nĠfro st\n\"] ))Ċ\nĠPl aces\nTh rows\nf ork\n/ day\ni Phone\nĠM IC\nĠfold ing\nĠcro re\nĠCh iefs\npher ical\n( price\n.Write String\nĠexit ing\n] ',Ċ\night ing\nIng redient\n( vertex\nĠscroll View\nh f\n: new\nSE N\nse ctor\nĠsp ins\nĠS cheduler\note chn\nsem icolon\nFont OfSize\nĠSpecific ally\nfl amm\n.Object Id\nĠcont a\n_per missions\nĉF ROM\nIC ODE\n/ kg\nĠHot els\n-m ed\nĠD in\nĠn avy\nget Param\nĠm end\nĠportray ed\nĠMet ropolitan\nPaint er\nĠref erral\n_g ood\nĠmar vel\nosa ic\n> (&\n. ur\nĠest os\nWill iam\nĠtim ber\nĠquel ques\nĠDoc uments\n.X aml\nĠbatch es\néģ ĵ\nĠRe leased\nT ail\nCO OKIE\nhe id\n_st ation\nĠV ia\nS ale\nĠRe peat\nĠprom in\nĠZ o\n- forward\nĠI on\nit ary\nĠj us\n- request\nĠproud ly\nĠStream ing\n(Mouse Event\nĠS print\n_ rotation\nRe positories\nĠt art\nĠÑģ Ð²\nĠm appings\nè ª\nC u\nC ycle\nĠb un\nĉl ua\nãĥ ī\nĠ(( !\nĠcollect ively\nĠCon d\nĠwsz yst\n(l ib\nopenh agen\n_s kip\n.Column Header\né Ĥ\nperi enced\nı è¿°\n_p rops\nĠcontr ace\nĠmatch up\nab etic\n.m embers\nRE CT\n(d at\nĠs og\nren om\n_M ethod\nCustom ers\nfull name\nZ N\nre try\nĠk ap\nĠNe u\nè Ĭ\nadd Child\nwill Return\n_p ermalink\nĠener getic\nĠW et\nĠMor r\nĠg cd\ncount s\n, type\nd ig\n( Login\nĠcr acks\nĠbacter ial\nĠMe at\nĠArm strong\nĠBron ze\nĠapprox imate\n_dir s\nlig a\nÅĤ ad\nĠkind ness\nĠcont re\nĠE VERY\nM ET\nĠannounc ements\ng pio\nĠWaitFor Seconds\nĠPhotos hop\nĠdis contin\n/ dd\nĠtop ology\nan ical\n. interface\nauc oup\n.Hash Set\nARI ANT\n(r outes\nĠT eh\nĠh ype\n] \").\nĠsl am\nĠbro th\n- inter\nĠR id\n-m anager\nCancel ar\nĠP agination\nĠsound track\nĠpost erior\nĠscr ub\ncre ating\n- *\nir teen\n.d y\n.s ymmetric\nĠ\"\" .\n============ ===\nĠch assis\nĠnumberOf Rows\nDevelop er\n_b ins\nĠO UR\nri eb\nPro s\nĠwi ÄĻ\n\" d\nĠasync io\nze igen\n_s pi\n.A LL\nĠscre ws\nCh inese\nĠapi Key\nĠun successful\nĠSeah awks\nOR G\nç« ł\nĠprofession ally\nĠCou pon\nåŃĹ æ®µ\nCon vention\nĠpol ym\næī ĭ\nĠsalv ation\nĠengine ered\nĠW rest\nĠG CC\nĠwar mer\nLayout Constraint\nĠag grav\nScript s\nvent ure\nĠrefriger ator\nĠinnov ations\nĠRun ner\nN IC\nĠRoll ing\nControl Events\nĠlo os\np ac\nĉ panel\nef e\nĠBudd ha\n------------ --Ċ\nåº ĵ\n(for Key\nĠl umin\nĠ( ?\nĠA IDS\n, user\nim ientos\ncontent Type\nant lr\né ¦\nĠW elt\nProdu ction\nm ight\nĠV II\n\", (\nĠobserv ing\nĠdeliber ate\n( control\nĠwith d\nĠsem ana\nST ACK\nuch en\nN ice\nĠDeutsch land\nĠSpec ifies\nd ma\niz io\nĠF acts\n_pop up\nĠDirect ors\n{ :\n[ R\nĠÑį Ð»ÐµÐ¼ÐµÐ½ÑĤ\nĠpl at\nĠdirect ing\nä¸ ī\nĠGil bert\nâĢ¦ .ĊĊ\n.q ml\nĠthere after\nĠdis position\nd raft\nĠsurge on\nĠIns ider\nBl end\nĠT rev\ntr insic\nTop ics\nrie ve\n_FILE NAME\nĠaut res\nJ ose\nProdu cer\ner us\nĠpet it\nĠN EXT\nĠF ilters\nĠreplic ate\n\"] ).\nĠl enders\n] \",Ċ\n; charset\nCpp Object\nĠfl oral\nĠT ipo\nĠcirc uits\ne asy\n(& $\nitt a\nery l\n_COMM ON\n'}} >Ċ\n-back ed\n(var iable\n( Index\nĠvo ir\n_loc ations\n++) {\nĠLouis ville\nĠgrat itude\n.Mock ito\nĠP owers\nie urs\nĠge ographic\nra le\nĠc ra\nĠSp urs\niph ertext\nAC ION\n- common\nĠvict ories\nĠFinal s\n.sh uffle\n-m illion\n_PRO C\nass ume\nĠil s\nDB C\nBoot Test\nĠl avor\n.test ing\n. ast\n\"] /\nm oid\nĠqual ification\nges ch\nĉ put\nĠair ports\nJ I\nTe acher\n_un iform\nĠn ama\nĠB ast\nert ype\nc apture\nget All\nĠReyn olds\noo led\n.com ments\nĠch in\n). *\nĠÐ¸ Ð»Ð¸\nt gl\nud os\nĠd ÃŃas\nch ai\n.pro gram\nĠps z\nĉ icon\nph il\nent ral\n_WR AP\nov i\nĠnost alg\nIn finity\nĉy ield\nĠvit amins\nQu aternion\nS ink\n_g oods\nĠ ........\nĠW ings\nur idad\n-st ory\n\"] )ĊĊ\nidel ity\nType Def\nG tk\nĠí Į\n_M ain\nĠche z\nĠR aven\nĠpay roll\nĠfreel ance\nLL U\nĠM end\ned ay\nApi ModelProperty\n.Form BorderStyle\nĠeconom ist\nstan bul\nĠfre ight\n-A gent\n(m eta\nĠsym metry\nĠ' ..\n.C alendar\n- aut\ng f\np ent\nyc lopedia\nĠwish ing\nĊĊĊĊĊĊĊĊ ĊĊĊĊ\nĠgentle man\nĠê ³\n= #\nĠlect ures\nâĢľ In\nĠ! _\nĠh b\nĠV endor\nRecent ly\n_n otes\næıĲ ç¤º\n\" My\nHeaders Height\n_S O\nĠunw illing\nĠsuper hero\ng io\nps y\nĠPe er\nj avax\n& apos\nĠCr isis\nord inal\nMem cpy\n++++++++ ++++++++\n- val\nĠwork book\n- ap\n= k\nĠmetal lic\n_ peer\nBy PrimaryKey\n_S D\nu ator\n_SH ADER\n) Math\n.Trans form\nĠc ows\nPh i\nĠC lem\n(_ (\"\nĠL ud\n-d elay\nĠSec urities\nĠOrth odox\nSym fony\n(re port\nĠent ertain\nE PS\niz oph\nex ual\nIR D\nä» İ\nĠl ith\nĠsanit ize\nĠfemin ine\nIS BN\n.auth entication\n_p ipeline\n/ constants\nĠCON F\nĠluc r\nric ia\n.t tf\n.set Content\nĠst an\nore an\nĠL loyd\n.raw Value\nĠg or\nĠBrow ns\nRe gression\nĠlower ing\nna issance\nĠbl ows\nĠam azed\nĠun related\nRe views\nĠrub y\nĠMod ifier\nĠgi ants\n. thread\nĠcontain ment\nĠStart Coroutine\num at\nore lease\nĠR andy\n@ endif\nD igest\nĠsubur ban\n=\" );Ċ\nĠann once\n. variable\n\\F oundation\nĠa cre\nV an\nĠt uples\nd ns\nĠStand ing\n_l arge\nĠbox ing\nSupport ActionBar\nĠFort une\nĠR um\n_m ultiple\narch ical\nĠf write\n_ quote\nĠfool ish\nĠcompr ising\nĠÐ¾ Ð¿\n- selected\nv f\nma id\nN ama\n(d atetime\nĠindirect ly\ng art\nfix tures\nch os\nĠH alo\nĠrec urring\n- news\nv il\nĠNurs ing\n- produ\nĠH Q\n\\Http Foundation\nenc i\nau en\nĠv y\nocr acy\nĠdeleg ation\nĠas phalt\nĠset Selected\nk ok\n/ rest\nmet ics\nĠNS Date\nĠtravel led\nĠrec ib\nĠm ime\nCL IENT\nĠG U\nĠH ANDLE\n/ Q\n[ z\nĠbother ed\nĠBB Q\nÃ§ as\n_ex amples\n_F IN\nĠwhite Color\nĠastr onom\n-d ir\nĠsovere ign\nĠb reeze\nĠin ning\nĠEd monton\ng li\n.blog spot\njs x\nĠvers a\nĠMoh ammed\n.J ob\n-t oggler\nĠÐ¿ Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ\nard on\nĠnew born\nĠnav al\nnote q\nĠtum blr\nĠh entai\nĠTyp ically\nĠlo ot\n.S prite\nFl ight\nĠw avelength\n-s k\nĠEl le\n_ exports\nĠ Ñı\nĠI H\nizoph ren\nĠí ģ\n_pr imary\nĠmo is\nĠB N\nĠsystem ic\nĠdifer entes\nIN CT\nĠ'' ĊĊ\n$ q\nWidget Item\ncl ide\n$ file\nL emma\n/ table\nag rid\nĠMongo DB\nint e\nĠapp rent\nÂŃ ing\n.D b\nĠÃ Ĥ\nham mer\n=' ';Ċ\nĠbro kers\nit lement\nsembl ies\nE le\n{ x\nĠlast name\n< -\nĠfl atten\n_b and\n.R oot\n.read FileSync\n==== ==\n.r x\n? čĊ\nĠmetaph or\nT i\ncon te\nĠdeb it\nĠcont empt\nCpp Type\næĶ ¯\nForm Field\nr atio\nos opher\nĠimpl ant\nP URE\nĠal ta\n_man agement\nĠref ine\nĠCheck Box\nĠChar l\n- version\ncond itional\nven ues\nĠrif les\nĠoff spring\nĠmill ing\nĠshar ply\nĠunder water\n( origin\n_ Control\nĠ. $\nPl ugins\nĠdry ing\nĠillustr ates\n- u\nĠveget arian\nn pc\nHe art\n; ',Ċ\ncom ma\nte enth\nas an\n/s pec\n_m oves\n-m argin\nĠing en\nÂłÂł Âł\nĠpro jet\nĠo tra\nĠbr as\n. utc\nĠsle pt\n= sub\nab ilit\npost er\nĠs dk\nounc ill\nĠw d\nPre paredStatement\nĠDr um\n( attribute\nĠEther net\nĉ DB\nCal ifornia\nc ube\n[ I\n.C reated\nĠH M\nĠtr acing\nForms Module\n- you\n.c urrency\nfeed ing\nĠt body\nL i\nacc ion\nn as\nĠtr ouver\nN ONE\n\"} ,čĊ\nĠf tp\nWith Identifier\npol ate\nFile Info\nĠpurs ued\nĠĠĠĠčĊ ĠĠĠĠčĊ\nDE SCRIPTION\n} */Ċ\nFrom Nib\nĠdecor ative\n_S SL\n(ch at\nT LS\nĠsurpr ises\nal culate\nĠS plash\n( Configuration\nĠS EM\nim son\n/lib rary\n< Double\n. robot\nÂłÂłÂłÂł ÂłÂłÂłÂł\nĠCP F\nĠUnder standing\nĠcos metic\nĠX t\nt ips\n+ k\n(\" '\nĠP DT\nW AR\n.get Object\nĠTrad itional\n.sl ug\nĠDi pl\n=\" \",\nĠFil ms\nĠAn im\n.h elp\nĠemb assy\nĠBoot s\nĠb unk\n-r isk\nĠp ci\nĠ/ \\.\nĠI PT\nĠcrash ing\nĠip v\n_ ke\nĠRES P\n.Log Error\nĠinade quate\nI on\nĠF Ã¼r\nric ula\nĠshould Be\nal ready\n'].\" </\nĠSt uff\nDig ite\nĠtransl ator\n_s prite\nlet al\nĠmai or\nĠSex e\nth anks\nĠCom pleted\nĠgas oline\n.attr s\nbag ai\nĠOr ig\n: ],\n. locale\nĠR oma\nÃŃ f\nĠfav ored\nĠv ain\nĠsp oon\nĠJ ahren\nĠn ing\nWW W\n, float\n_D ATABASE\nBoot strap\nĠC BC\nĠCh unk\n_int o\nĠK ol\nĠdef enses\nored Procedure\nball s\nText Changed\nĠsh aping\nĠ}} >\nG ED\nfa q\nĠoption ally\n_D is\nĠSuccess ful\nĠC ensus\nĠinc arcer\n_C ARD\nĠav iation\nĠG ym\nAuthor ity\n.B ean\nsh ader\nNot Exist\n_Text Changed\nĠST OP\n( team\n\" H\nw g\nĠgr inder\nĠstri pe\nĠpres ervation\nCl aim\navers al\nware house\ntarget s\nTr ust\nĠal lev\n, www\nous se\n_ch an\n_S ize\nsystem s\nĠobj ection\nĠK ane\nĠcor ros\nĠD SL\nĠu a\nĠM H\nĠStrateg ic\n_t cp\nĠê° Ĵ\nĠborrow ed\nĠA ch\nĉ command\nĠg ps\nle ston\niche ver\nĠU A\nĠassault ed\nĠspecial izes\nĉ search\nHot el\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\nĠP itch\nĠ Ùģ\nREAD Y\nĠparent al\nĠg Ã©nÃ©\nĠdonn Ã©es\nĠdet ain\nT ARGET\nĠprotagon ist\nĠclear Interval\nĠIcon Button\nĠGet All\nType Info\nE H\nâĢľ They\nĠ{ [\nĠg ag\nĠ Ú©\nĠD ropdown\n.f ree\ng one\nim ens\nĠinst al\nĉc url\n_C AN\nĠB one\nï¼ Ķ\nony ms\n-g overnment\n.binding Navigator\nĠD ans\nĠMc L\n( en\n>( _\nÐĴ Ñĭ\n.* ;čĊ\n= j\n-c or\nS on\n.ToolStrip Item\n- around\n_X ML\nend Date\nĠsl ack\nĠrot ated\nĠno qa\nĠc ottage\nĠencontr ar\n_s kill\nhou ette\n! čĊ\n. weather\nĠemphas ized\nå® ¶\nĠÑģ Ð¿Ð¸Ñģ\nĠComp iler\n( android\nĠâĢ º\n. turn\nĠsup pression\n_c alls\nĠ* @\n(str len\n.h ex\nĠB ills\nĠR SA\nÏ Ĥ\nĠEs cape\nement ia\nĠfront end\nĠp int\n_ex c\nzz o\n[ ],Ċ\nĠ\"',' \"\n. Environment\nĠafore mentioned\nĠend ure\nprot otype\nther apy\nss i\nD eg\n_pl ugins\n.user Info\nPrint er\nĠPRO GRAM\nĠru ins\nĠempir ical\nĠcraw l\nĠBo iler\n- comment\n.sub plot\n_ et\nĠ'. ',\nmin or\nĠCustom s\nĠy aw\nunder line\nĠCom o\n( ('\n(m ean\nĠcha que\nĠBlock s\n.r ad\nilib rium\nĠweb driver\nĠmel hor\nd ana\nĠAb use\nĠSouth west\nĠP aren\nPERT IES\nĉ IL\nĠscre am\nv u\nĠin comes\nĠn im\nĠl ace\nĠcompens ate\nRe verse\nD at\n_att ack\nĠn our\nach en\nce k\n< Func\nw ie\ncom pressed\n-m atch\n(\" \")]Ċ\nim ized\n. orientation\n.compare To\nĠmass aggi\nĠìľ Ħ\nĠel bow\nĠant ioxid\nundred s\n/ tools\nĠR OW\nan mar\nĠW ow\n_t icket\nProgram ming\nĠthe or\n-re view\n() )));Ċ\nĠRichard son\nĠP ocket\n] []\nam pp\n_ health\nĠP OP\nĠNav al\nGu ess\nĠancest or\n.Get All\n.local Scale\nĠM apper\nĠaccum ulation\nĠsim ulated\nĠDr ivers\nĠd Ã©s\ncur ring\nĠele phant\nĠadvert ised\nĠmail box\nSH IFT\nĠMon ica\nĠan c\nĠward robe\nIng redients\nĠ|| čĊ\nipp y\nĠantibiot ics\nav ings\n(c x\nĠFerr ari\nĠAn imator\n.d type\nrem oved\norder by\nĠc res\noc Ãª\nĠp ym\nĠCirc ular\n@ index\nĠW arm\nS ay\nĠAss istance\nĠcur tain\nĠMont e\nIL ER\nĠC VE\nĠD uck\nĠAll ows\n_f ire\nĠDer by\nĠre pos\nĠhttp Client\nĠpsych iat\nĠnow adays\nĠcaut ious\nĠComput ing\nĠcompletion Handler\nĠWel sh\nĠB EST\nĠstress ful\n_P E\næĹ¥ æľŁ\nĠData Frame\nĉ Integer\n_P rint\nM oves\nĠtransform ing\n.B atch\ny ahoo\nPosition s\nze j\nĠno od\nio res\n_ *\nĠcl k\nĠF loyd\nĠh ap\nfont size\nĠn az\n.not ification\nĠDep ression\nĠac ne\n*** ĊĊ\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĊ\n.cont ents\nyn th\nĠStra ight\n')}} \"></\nĠbul b\nR X\n//---------------------------------------------------------------------------- --Ċ\nĠcom unic\nĠR N\n-m edium\nLE AN\n= len\nPhone Number\nerv ations\nAcc uracy\nĠAn notation\n_key word\n_h int\nĠAth ens\nĠassist ing\nĠH C\n.Initial ize\n')) )Ċ\nup a\nĠsu iv\nĠI PC\n<T Entity\nĠbr anded\noom la\nlar Ä±\nĠXML HttpRequest\nĠdÃ© jÃł\nĠtrans cription\nĠpreval ent\n.pl an\nĠst are\nĠwork outs\nĠEduc ational\nĠmess y\nĠM OT\n.Command Type\nQ ed\n(g ca\nĠLinearLayout Manager\nĠBl ow\nĠAl uminum\nĠswinger club\nĠTrans it\nĠex pos\nv ir\n( second\nĠbelong ed\nSt one\néķ ¿\nĠS ul\nĠg id\nĠal loy\nerv a\nise cond\n_RE NDER\nĠang els\nĠPhilosoph y\nop us\nĠm oo\nengu in\n_V ARIABLE\n_DE ST\n(a ux\nĠh oe\nĠdo b\nattach ments\nĠcorrid or\nĠdivid end\nĿ ¼\nĠThrough out\n. optim\n$ new\nĠb erg\nĠspread sheet\n.Try GetValue\nĠp ayout\nĠOn Destroy\nauth entication\nĠMig uel\nrt c\nĠChrist ine\nĠA IR\nĠjur is\nĠdes pair\nĠpat ents\n-h as\n% ^\nä» ĺ\n_str dup\nĠR ear\net tes\n( properties\nĠwrit able\n.is Null\nol ics\n_b lob\nĠcual quier\naf i\now ych\nè İ·åıĸ\nÃ ĩ\nĠCard inal\nĠtem a\n\" And\nPage Size\nç§ Ĵ\n.Simple DateFormat\nĠW inner\nĠcorre o\n_ we\n.add Object\n(c ourse\nĠh og\nop ro\nĠprob ation\nun able\n( active\nåĽ¾ çīĩ\nĠpert aining\nĠemphas ize\nĠPrint er\n= .\nĠup grading\n/ contact\n=[ [\n-s an\nĉ values\nĠdos age\nS olid\nĠRoose velt\nåķĨ åĵģ\nĠrecre ation\nĠTer min\n.B ad\nĠB olt\nS ky\n_ Image\nĠsqu ir\nĠC ob\nOR N\nĠa uc\n.LE FT\n' B\n-res istant\n> \"+\nĠtoken izer\nĠsovere ignty\nĠP ence\n() \");Ċ\nĠpesso as\n.G e\nĠIn cluded\nĠpag ina\nĠex posing\nÐµ ÑĪ\n_SC RIPT\n/$ ',\nTh umbnail\n× Ķ\nwebElement X\nwebElementX paths\npress ure\nĠCur ry\n_C P\nOL UTION\nILE S\nprot ect\nool a\nWork space\n{ };Ċ\nĠU NS\nĠsymp athy\nro ker\nĠrem odel\nĉc ell\nĠat op\n.Full Name\nĠfa ut\nĠE asily\n_d ynamic\nĠfr amed\nĠmot ive\nè· ¯\ns am\nĠmar ca\nĠText EditingController\nĠde structor\ncre am\nĠr ude\nĠB old\nĠInd igenous\nĠg ens\nĠrel acion\n(s ystem\nĠUIF ont\n_char ge\nUST ER\nE V\n.N amespace\nĠmer ger\nĠcal loc\ng ang\nBad Request\nĠs per\n-d esign\nĠâ ĩ\nCh an\nĠorgan ism\n, )\n= id\n_pl ane\nĠC ases\nelf ast\nĠLegisl ature\nĠF aker\nĠinv oking\n- utils\n(). '\n.f ace\nĠguard ian\nmy Modal\nĠclip board\nĠAT M\nĠpe as\nĠS ylv\n.c alc\nĠContact s\nint Value\nĠmodify ing\nĠBar b\n. loss\n_per centage\nAsk ed\n(l st\nategor ical\n- files\nĠRoman ia\n.A c\nĠh ai\nĠF lying\nĠ Å¼\nj p\nĠTr ainer\n. arc\n_de g\nĠtrace back\nOr Fail\nF LOW\n. old\noy a\ng mt\nis empty\nĠvacc ination\nĠob solete\nrecogn ized\nĠru ined\nĠRe in\nĠTr acking\nxf b\nØ§ ÛĮ\nĠvÃ¦ re\nĠbr yster\nĠIT S\nĠdest iny\nĠsw ear\nĠred es\nĠcl f\nĠfl ipped\nĉ head\nBl uetooth\nĠOver rides\n: Boolean\n_ =\n_l r\nsp awn\n: index\nVAL UES\nis key\n? \");Ċ\n.syn thetic\nĠCheck ing\nstruct ures\nip ing\nĠvoc als\n- Up\nĠManufact urers\nĠMar riage\nä»£ çłģ\nĠgar ner\n_C lient\npar allel\nRI END\nĠvine gar\nseg ue\nJ B\nĠcontact ing\nĠCar roll\nĠout reach\nt ensor\n_var iant\nĠthe at\nlic able\n{ |\nt iny\n_ letter\nĠp encil\nHeadersHeight SizeMode\nilt ro\n.auto configure\n.d rag\n.use State\nĠB MI\nh int\nCom pile\n* \\\nen ary\nĠl vl\n.C ache\n+ =\"\n_t v\nruit ment\nĠf read\nArt icles\nf ila\nĠpack aged\nâĺ Ĩ\nAT HER\nĠPl anned\ns cheme\nĠdi ary\nĠoff enses\n/ <?\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠ\nProgress HUD\nĠG or\n.get Title\nĠmock ed\nĠT ory\nĠ\") \";Ċ\n# g\nĠli ed\nĠs vc\n_g ui\nENT RY\nĠserv icio\nmouse over\nSA CTION\nãĤ ³\nĠre ife\nlect ric\n_c reation\nRe ality\n(' +\nproduct Id\nSup plier\n- Le\n.re po\nuck ing\n_S tr\nĠRel ay\nÐ¸ Ð¸\nĠp erv\nCh icago\nĠmais on\nĠst icker\n_p ressed\nSw ap\nĠI G\nĠsuscept ible\noc ado\nĠg in\nex e\nighbor hood\n) `\nĠdiagram s\nĠinflamm atory\nĠt Ã©\nĠPop up\nĠapp reh\nĠPort folio\nĠw ors\n.en ums\nÐµÐ³ Ð¾\n/ Button\nĠPh antom\nĠ# :\nĠd ik\np ager\nft ar\nĠorgan izer\n( children\nĠMun ich\nĠstr ang\nĠR W\nãĤ ¿\nM ah\npt ide\nĠlearn s\nĠredu ctions\nĠRe placement\nOT S\nal con\n(p arts\nb ash\nĠCit izen\nį° ìĿ´\nĠHttp Servlet\n_SC HEMA\nme ans\nĠhorr ific\nVER IFY\nĠDC HECK\nĠ( /\n.b efore\n.text ure\nget Mock\nĠS ense\nIns pector\nText Node\n( AL\n.get Node\nĠbo yc\nĠBris bane\nĠbatt ling\nĉt x\nĠlobby ing\nb uilt\nĠSEE K\nĠrandom ized\ngn i\n_cl usters\n_id entity\nĠcard iac\nĠnew User\n.V ideo\ndu it\n] init\nAt l\n) value\nText Utils\nĠÐµ ÑģÐ»Ð¸\nCom pute\n= ('\nĉĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠar ter\nĠT WO\n')) ,\nĠD IV\nĠprivile ged\nĠPartners hip\nĠHe ather\nb ay\natisf ied\ninst agram\n_S end\nĠAS F\n$ name\nĠbo o\nĠdÃ© f\n_F ield\nĠE du\nc andidate\nr uby\nĠaccum ulate\n(Int Ptr\nĠbusiness man\nĠeconom ically\nĠR ings\nĠInput s\n¹ Ħ\nac ie\nĠAl arm\nĠLog out\n.se quence\nĠVi enna\nop r\nĠdr ums\n= config\nqu i\nĠdat o\nĠpoly mer\nĠCh anged\nWeb Request\nĠAdv ance\nĠunder going\n.Con sole\nĠcurrent Node\nĠW ool\nĠp Ã¡gina\nREG ISTER\nĠs aga\nĠY ORK\naman ho\nå® Į\nĠBund es\nĠDialog Interface\ngeo is\nunc iation\n? $\n.Assert ions\nĠse ated\nĠSp y\nP ose\n\" C\nĠah ora\nĠÑĦÐ°Ð¹ Ð»\nĠë³ Ģ\nĠwar p\nPro jection\nĠSing les\nĠAd vertising\nL inux\nust y\nĠpen al\nUS IC\nod ia\n.net beans\nĠU g\nĠB rent\n- log\n/c ategory\nĠCustom ize\nire n\nï¼ļ </\nin ars\nĠ( ++\nGo ing\nEX EC\n(m esh\nĠper imeter\nC ls\nce iving\nm ensaje\n() )){Ċ\nĠpro state\n_b uy\nĠRo of\n.R eturn\nĠmar riages\n_th umb\nç ¾\nà¯ į\nText ures\n( TEXT\nshort cut\nTransform er\nAT IC\nĠSnow den\nscri bers\nmark ed\nĠâĨ ĳ\nh ora\nOP ER\nĠF Y\nĠAuth entic\nĠaud i\nram er\nĠLiter ature\nĠitem Id\n.A tt\n(c nt\nĠK S\n-l inux\nĠPart icipant\nĠCru ise\nit ulo\nust rial\nĠcl ase\nĠ= $\n_d ates\ncurrent Page\nix a\nex act\nĠt sl\n.S o\n/d ocument\nh art\n_ID LE\n{} .\ny et\nI ron\nĠTh rones\ns nd\n\\x a\nĠbe verages\n_trans port\nĠfo il\nĠt asting\nĠgo ed\nM emo\nĠnit rogen\n.M ember\n.f lat\nĠill um\nmin ent\n.z oom\nĠP tr\noc io\nĠConsult ing\nĠC one\nĉ items\nĠL M\nĠo auth\nĠProgram me\noch ond\n( selector\nĠwater proof\nĠMer kel\nĠsuff ers\nĠnp m\nè± ¡\nĠLand ing\nĠL AN\nĉĉĉĉĉĉ čĊ\n/ is\nĠsÃ© rie\nĠG UILayout\ng ive\n_C Y\nB rowse\n.m ultiply\n=\" $(\nus o\n-p arent\n.M ath\n.number Of\nĠt ienen\nĠres ent\nĠpitch ing\n\"] ),Ċ\n. Utilities\nĠmultip lication\n: type\nĠp print\nian i\nåĪ Ļ\nĠlaunch er\nĠrug by\nçİ °\nĊ ĉĉĉĊ\nh id\nAng les\nĠgood bye\nĠinput Stream\n.w atch\nG oods\nĠS ays\n> F\nĠSt ick\nĠc erc\nĠS lee\nĉĉ ĠĠĠĠĠĠĠĠ\n< Image\nĠè® ¾\n- editor\npie ces\nĠD rama\nĠ// ////////////////\nĠT asks\nAR C\ng ateway\n.get cwd\n.M etadata\nĠguess ing\nåľ° åĿĢ\nĠsm arter\nĠGet Enumerator\nĠe fter\n/ operators\nĠGL float\nĠf Ã¸r\nĠop aque\nä¿Ŀ åŃĺ\nSp read\nSY STEM\nĠinv ersion\nĠBasket ball\nĠsim ulations\nĠden ies\nĠa vez\n_list ener\nĠenh ancing\nĠMy th\nĠL akers\n_M D\nNd Ex\nD ATABASE\nĠt á»\nar th\n[ left\nĠcontest s\nst ile\n(K ERN\n_f c\n_p m\nĠpres idents\nĠhospital ity\nĠfade In\nRO PERTY\n_m aps\nĠDefinition s\nĠassess ing\nĠus ar\nĠquant itative\nmo z\nBe autiful\n[ ((\nb ons\nf requency\nCont ain\nĠpuzz les\nĠCast ro\nĠv illa\nĠkind ly\nFont Awesome\nern a\nepoch s\n_dat as\nĉ ip\n.p adding\nĠCont est\nĠed itions\nĠdispro portion\nĠI CO\nĠcome back\n= value\nri ad\n-s ort\nSub mitted\n(n etwork\nĠC el\nĠinstall ment\nl ashes\n.List View\nĠV atican\n(Media Type\nIV ED\nreach able\n: Is\nĠC ITY\näº ¬\nĠHelp ful\nĠba ÅŁ\n% čĊ\nĠpsych iatric\nĠrec ycled\nFORM AT\nĠG row\nb ine\nG it\n.s s\nĠWe apons\nĠSt y\n_ arrow\n* self\nire ment\nĠdeg li\nApp Delegate\n_b anner\nĠcoordin ated\nĠWeb cam\nĠcelebr ations\n. act\n******************************** ****************\n( show\nĠweek day\nĠconc erts\nÐ¾Ð» Ð½\ncl in\nĠcr on\nĠN im\n.set Vertical\nĠEll en\nØ³ Øª\nĠS AM\nE ff\ng z\nste am\nĠant ique\nph ysical\nĠForm Data\n.set ter\nĠPO INT\nB on\nĠflav our\nerv ention\n_ENT ITY\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠ\nĠintr insic\nĠæ İ\nappend To\naram el\n) ])\nĠRecomm end\n) m\nOutOf Range\nĠkn ight\nĠsat ellites\nĠTit ans\nĠweigh ed\nĠD ana\ne ase\nĠs ip\nS IM\nĠDevelop ers\nmal ink\n/ check\n_P LL\nn ung\nĠdry er\n= A\n.d w\n_S QL\nĠsub plot\nD ROP\nĠprot otypes\nĠhour ly\ndisplay Name\nĠas i\nĠViol ence\nĠastr onaut\nĠdat atype\nĠinformation al\nĠinvestig ative\netermin ed\nren al\n; '>\nĉc ol\nV G\n_ boolean\nre cent\nĠ* )ĊĊ\nĠRain bow\nom men\nĠl ur\nĠopp ression\n(\", \");Ċ\nĠFac ility\nDEF INED\nĠne on\nĠoff ender\nAF P\nĠClean ing\n[] ):\nĠund ocumented\n.Re positories\nĠG uitar\nÐ°ÑģÑģ Ð¸Ð²\nSk ills\nĠtestim on\nrypt ography\nĠAm ber\nĠSt alin\nĠl one\nĠap enas\nĠdies es\nĠAr duino\nè½ ¬\n== -\n_A ct\nĠc oded\nâĸ ł\namb urger\n-link s\nĠarm our\n.H igh\nget Content\nst ag\nĠhe ck\nĠìĹ Ĩ\nĠMc Connell\nĠCon cert\nĠAl loc\nÃ¤ re\n.replace All\nĠpart itions\nrot t\nĠF le\n_T REE\nreason able\nĠReport ing\nĠbillion aire\ns cores\nmin s\n- eye\nM ORE\nab ort\nĠSW T\nĠin verted\nĠTe achers\n; n\nĠast ro\nÐ½ Ð¾Ð²\nÐ°Ð½Ð¸ ÑĨ\nproduct o\nc ountries\nĠO wen\nĠcont amination\nĠv ibe\nĠEll i\n.s cript\nĠOl ive\nD MA\nv ier\n: semicolon\n-m odule\ngress ive\nag u\n_ players\nĠresult ados\nstart ed\nscroll Top\n==== =\nĠweigh ing\nĠ[[ [\nz ahl\n( NS\nĠAssert ion\nle ague\n.setText Color\nĉ Message\nĠmom s\n_A F\n. wh\nAL S\nĠaut re\n] ĊĊĊĊ\n.op acity\nĠBudd hist\nĠde af\nĠOrgan isation\n(G lobal\nens ch\nĠhead ache\nĠAli en\n_in ode\nĠSt ark\nĠæ ī\n-l nd\nore f\n_fe at\nĠpedest rian\nĠnom inal\nĠbal loon\nĠspr ites\nPrototype Of\nĠA post\nĠF EATURE\nO H\nĠre cess\nĠDon na\ncon sumer\n$ GLOBALS\nĠG IF\n- frame\nIn icio\nĠpass ages\nDate String\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠ\n.by te\nB ug\ninitial izer\np kt\nod ium\nĠD ER\n. ops\nler i\nĠgift ed\nĠdet ach\nter rain\nelt ers\nãģ ı\n. loader\nĠN GO\nstr ncmp\nK h\n(font Size\nro cket\nĠpreced ent\nĠAur ora\nĠEx periment\nis phere\nEnc oded\nĠâĢĵ ĊĊ\nĠpy ramid\nĠAnn iversary\nof il\në Ł\n( plugin\nC oeff\nĠcooper ate\nĠpredomin antly\nIS M\nPh rase\n_DEF INE\nFl ip\nAMIL Y\nĠMark ets\nĠStream Reader\nĠComb ine\nĠmanus cript\nz za\n, tp\nWh atever\nIT ICAL\nighb our\nData Provider\n.Text ure\npriv acy\n.S DK\nĠre charge\nĠc pp\nĠC FG\n(h older\n(p y\nm ot\nĠsav oir\nĠR osa\nĠPC s\nĠí Ļ\n.her oku\nĠf ren\nĠR iley\nag ate\nĠs ond\n.x lsx\nĠh acked\nst ad\nG i\nĠsan ity\nĠSql DataAdapter\n... \",\nĠP ussy\nĠ ****************\nĠhass le\n_P ARENT\nĠU AE\nĠbegin ners\n( Client\nĠstatist ically\n.h our\ned elta\nĠtr action\nuel ve\nar at\nĠsa una\nIN VALID\nĠindict ment\nAL LE\nĠdiss ent\nĠTyp ography\nĠintention al\ns it\nĠAn imals\nĠcoun tryside\nĠu art\n} \\\"\nĠseam less\n¾ ç¤º\nĠaut os\nĠ\"' \";Ċ\nFl ush\nANN OT\nĠal gebra\nass oc\nĠW aters\nĠprepar ations\nron ym\n[, ]\nS ans\nĠarm ies\nipe g\nĠcream y\n. art\net re\nĠAn imated\nĠun pleasant\neme an\ng reat\ni Äħ\nĠEar lier\nĠch ic\nĠpres erving\n(ex ec\nĠInvest igation\nĉG PIO\nĠrig orous\nij o\n= num\nĠtool Strip\n) set\n+\" &\nĠAcc eler\nĠdevelopment al\nis posable\nĠflaw ed\nre ne\nUp dating\nĠwatch dog\nĠden ominator\nĠsubur bs\nĠ... )\nĠconv ictions\nc losure\n.I P\nĠtransl ates\n.sw t\n.Tr ace\nĠmet tre\n.is Enabled\nĠEffect ive\n.to Int\nĠen chant\nĠst unned\nĠpo i\n/ code\nad m\n.datab inding\nĠL orem\n________________________________ ________________________________\nĠled ger\nĠcar a\nĠG ir\nĠwa its\nUn o\nĠc wd\nè¾ ĳ\nĠT Result\nĠre jo\nĠem itted\nĠWest minster\nä¸Ģ ä¸ª\nne k\n_T is\nĠen act\nĉ with\norg ia\nĠj ue\nPer form\nSP ATH\n.top ic\nĠD aten\náº §\nĠsit io\n_M M\n\" So\nb ial\nĠsc oped\nRe quires\nĠT OTAL\nĠCh ancellor\n( contents\nĠste alth\ndev ices\n-p ass\nili h\nĠMal colm\nĠDep ot\nĠconfig ur\na ussian\n_con straint\nÐ² ÐµÑĤ\nG RA\nĠR ates\n.dataGridView TextBoxColumn\nĠNob el\nit ics\nĠignor ant\nĠReport er\nĠEb ola\nĠSh ock\n_re lation\nĠNin ja\n) c\nĠt icker\n.is Checked\nĠSup pliers\nĠRap id\nLevel s\nâĤ¬ âĦ¢\nĉ queue\nĠch op\nĠUn ix\nre ject\n-c alendar\n(s ort\nÃ¨ ne\nerc icio\nĠh ect\nCALL TYPE\nrou pon\nĠrent als\nauth ors\n{ name\nĠF IFO\nĠl assen\nĠN ous\nĠsn apped\nĠfert ility\n\" log\nclick ed\nĠplant ing\nĠg b\n/ output\nPE AT\nĠc ategoria\nĠb ach\nProf essor\nin th\n\"] čĊ\nRec order\nser de\nĠTrans mission\ntr ad\nĠtur bo\n_VER TEX\n\\ Event\nil ver\nĠbod ily\nĠS ources\nĠkill ings\n.xr TableCell\nĠfold ed\n/ legal\nun er\nĠR ifle\nĠM IDI\n_Selected IndexChanged\n.Size Type\nĠWeb Socket\nĠsele ccion\nS and\not ros\nĠenv ision\n/ etc\nĠMel issa\nSp ot\nÐ½Ð¾ Ðµ\n_ ARM\nAt tempt\nĠB I\nãģ Ķ\nĠD U\nĠback lash\nstr ide\n/ classes\nĠtext Color\n_st aff\nob lin\nagent a\n.c ollections\nill age\n' čĊčĊ\nfl atten\n_s ales\n_M ASTER\nT W\n_d a\nP itch\nph ies\nĠz ombies\nĠV ERY\nĠPharm acy\nĠprogress Bar\nĠhas htag\nS idebar\n@ stop\n(p c\nÐ¾Ð» Ð¶\nMA KE\nĠCor on\nĠkv inner\nĠM aid\nb ob\n.title Label\nĠsuccess es\nĠDemocr acy\nĠSurg ery\nĠcou gar\nĠcur so\nĠl oro\nist ency\nSen ior\nÃ¦ k\nĠA AA\nĠBO OK\nÐº Ð¾\nW STR\nĠ*/ ,Ċ\noy al\n.v ector\nĠS PEC\nSS F\nĠcomp uls\nĠAppe als\nĠW inston\nĠMock ito\ncon trib\n. available\nentity Manager\nari as\n_s ale\n_r s\nĠdec oding\nĠloc ator\nol ith\nĠk ol\nĠasc ii\nĠR ut\n/ interface\nĉĉĉĉĉĉ ĠĠĠ\nĠN umer\n.fl ip\n-d el\nĠbol ster\non omic\nĠz m\nL G\nFind By\nĠadapt ive\nlo o\nĠv ue\n(re verse\n_c anvas\n. roles\nific ado\nven ient\n\" As\nĠEn tr\nal igned\nĠbere its\n/// ĊĊ\n.g wt\n. employee\n_cl i\nĠanticip ate\néĻ Ĳ\nĠp ik\nĠmush rooms\n(t t\nĠo ma\nĠSan chez\n_g oogle\n. Valid\nĠFile Name\niv ative\nk ed\n-w ar\nĠm aturity\nÐ¸ Ð´\nĠmin er\nReduc ers\nĠLat Lng\n_ST D\nD igits\nCal c\n-up load\nĠhand ic\nà¸µ à¹Ī\negr ated\nĠST M\nC lients\nĠTur bo\nSY NC\nĠphotograph ers\n. Out\n.char acter\nB UILD\n.un lock\nĠar ises\nĠCommand s\n(\" \");čĊ\n_F ORE\n; ',\n+\" '\n. Images\n\") {\nĠM eyer\nĠneg atively\nĠD LL\nĠex e\nĠdef iciency\nĠwild ly\n-s witch\ncon struction\nĠexception ally\nĠL iz\n/j ava\nĠtheir s\nĠCont emporary\nl is\n.fill Rect\nĠN FC\nĠre he\n(num bers\nĠr aster\nĠfig uring\nĠshow c\nĠJ ill\nĠarc ade\nĠConstruct s\nmd l\n(' |\nĠident ifiers\nĠst ellar\n( Connection\nĠ\" {{\ny or\n(m ysqli\nĠdo ve\nOf Birth\n.dis connect\n_h i\nĠzw ischen\nĠGr und\ni ros\n_A rray\n.on click\nans om\nAn swers\nĉ remove\nF a\nĠhur ry\n-in f\nĠget Class\nĠReg ulation\nĠFLAG S\nm isc\nK en\n_ heading\nG Hz\n- entry\nĠbi ography\nS ig\n-m f\nWatch er\nâĢľ A\n} px\nĠsp icy\n_s q\nL ost\n(tr ack\nÐ° Ð»Ð¸\nDesc ending\n< bits\nqu ine\nĠAdv oc\n_S N\nĠHann ah\nPO P\nĠem itter\nĠc yn\nĠC AD\n? ).\n/ set\nĠS ister\nĠEnd point\nĠmen or\nĠinter p\nr k\nid le\nĠout fits\n. vertex\nĠc lic\nARE N\nĠpost ure\nĠOpport unity\nv x\nĠFor bes\n.D irection\nĠres ide\nĠremember ing\nnest y\nAuto resizing\npro viders\nĠA H\nĠhur ting\nĠL ily\neval uate\nlij k\np apers\nĠSm ash\nĠL AST\nĠwell s\nw asher\n_RO LE\nĠD anger\n* ((\n_re pository\nĠRes olve\nĠRoom s\n_R G\nĠQ T\no op\nĠHe ap\nĠslow ing\nĠgrat uite\n_c atalog\nĠpol ynomial\nL y\npc s\nF ox\nĠC yr\nĠdim in\n/ month\nS alt\nĠh ind\n.P ER\nFor um\nc en\n_p ol\níĺ ¸\nĠin ser\n( ~\n@ test\nĠGold man\nĠupload ing\nF c\nĠkom mer\nĠm itt\n_log ged\nĠbu cks\n-l ayer\n) };Ċ\nĠO M\nĠv eg\ncol our\nĠÐ¾Ð± ÑĬ\nStd String\n_ que\nĠT ian\nĠspecial ize\nÐ¸ Ð¿\nĠÐº Ð»\ntr ial\n- edge\nĠm ars\nOG LE\nĠempath y\nĠB om\nĠcoll isions\nĠcart e\nĠTe il\nĠM PL\nĠporn Ã´\nĠa irlines\nA ws\nN s\nĠSp awn\n( use\né» ĺè®¤\nĠy acc\nst or\nĠconf ess\nĠpe que\nr age\n? \"Ċ\n/dat atables\nĠSh ower\n__ /\nĠcryst als\nĠbus car\nĠH aus\niz aÃ§Ã£o\n_ entities\nķ Į\nļ Į\nx cc\nv irt\n-che vron\n( Result\nc ake\nCOM E\nĠprohib it\nĠCh ess\nĠbe aucoup\nĠÑĩ ÑĤÐ¾\nR UN\nĠI K\nÃ³ ÅĤ\n_ Update\nĠsle ek\nĠSpec ify\n_c redentials\nÅŁ t\nĠUser Name\nĉ Value\nĠarray List\nĠex changed\nips is\n.re lated\nĠSe ite\n_B AR\nĠL em\nĠW ATCH\nĠC lients\nĠ. *\nĠEar l\n-re port\nĠforeign ers\nĠstrengthen ing\nĉ Description\n(g o\n.tool bar\nĠcalcul ates\nĉs ource\nĠcz as\nĠre cl\nab o\nĠlocal host\nĠ^ {Ċ\n.P op\nĠDes igned\n\\ Abstract\nH old\nĠGuid elines\nipl ine\nĠc aching\n.Re ader\n_ext ernal\n.str ptime\nĠWeek end\n-M ar\nĠBe i\nĠ{* }\nĠR ud\nĠexpl or\nĠBou levard\nC ash\nĠprep ares\nĠserial ization\new ater\nĠad c\n: ĊĊĊĊĊĊ\nRe fer\nĠsc anned\n} }ĊĊ\nĠF ul\nĠtour ing\nãĥĥ ãĤ¯\n> ((\nsur vey\nĠí ĺ\n... ')Ċ\nĠDiv ider\nos l\n_C ANCEL\n_pre pare\nst in\nĠHe ath\n.Primary Key\nĠâĨ Ĳ\nĠLocal DateTime\nĠcooper ative\nL earning\n.en queue\nĠgo og\nĠReg ression\nim ates\nĠvoy eur\nĠDr ink\npl ug\nĠl ender\nman a\nĠperson nes\nyp se\nĠun link\nĠRav ens\nĠhur d\nĠperiod ically\nARG S\nĠG H\nchar acters\n... \"ĊĊ\n- establish\nĠd n\n( condition\nĠGr avity\nĠest as\n_f ocus\nCreat ure\n(s ite\nĠc arr\nĠR L\nĠR I\nĠM oto\nAS F\nĠLuck ily\nĉ Route\nĠent ropy\n(\" ,\"\nCol lect\n( contact\nĠFlo rence\nĠpremium s\nĠlif ecycle\nĠb ans\nx ef\nWeb Kit\nĠFlo ating\nĠcos a\nSpec ific\nĠLo ans\nb read\nĠdes criptors\nĠ{ :.\nTH READ\nĠT rent\nĠsc op\nQ A\nĠAnt ar\np el\n_d ifference\n_ch anges\n(... )\nĠR otation\nĠLG PL\nĠJ UST\n(T ask\n_sub set\nĠTR ANS\nåĬ Ľ\nĠSc out\n-p opup\nĠsm oked\n_C lass\nĠturn over\nbr akk\nĠRock y\nt as\n.Regular Expressions\nĠElli ott\nĠSp inner\nDU CTION\nĠlib re\nĠmol to\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠ\nĠF TP\nm peg\n(f eatures\nĠb ald\nĠV id\nĠsh outing\nL int\nĠsock ets\nĠpro w\nĠnouvel le\nisc ard\nĠS ponsor\nĠconsult a\n)) );\nInd ian\nĠR aspberry\nĠteam mate\nĠJ WT\nĠGh ana\nĠc akes\npr imer\nform a\nerg arten\n_M anager\nĠpre season\nG AME\n| \"\nĠBro ck\nĠoccup y\nĠdecor ations\nÃ¡ nd\nĠc ot\nĠpar an\nD isk\nrem ain\n> ?\nStr ong\nĠfr ance\nĠE ra\n-c r\n.Buffer edReader\nĠParad ise\nĠV AT\nĠAnd ers\nĠlim b\namp oo\nĠimper ative\nUT ILITY\nĠRec ognition\nĠragaz ze\nĠpop s\nyp ress\nĠemb argo\n// {Ċ\nĠsy ll\nP TR\nåŃĺ åľ¨\nĠdid nt\nMail er\nĠacad emics\nĠFra uen\nne ider\n- rel\nĠrain bow\n( In\nĠslic ed\n============ =Ċ\n(s end\nNSMutable Dictionary\nv os\n(p ackage\nĠord inance\nview er\nĠSant os\n-s elling\nĠgo v\nett le\nĠfound ers\nĠw aking\nsl ashes\n-p ound\nre cht\nØ§ Øª\n.on Click\nĠn ord\nst Ã¤nd\n_ when\nUT ERS\nic c\nĠcaps ule\nĠW id\nM arc\nà¸ ¸\nro red\nUG E\nLO UD\nĠAud it\nip ients\nop ian\nĠS ue\nĠwur den\n.H elpers\nĠf actions\n[ np\n-th an\nĠre co\nĠk as\nĠcmd s\n/n etwork\nxb f\nget Color\nĠbi ased\nĠL ak\nD atas\nvent s\nĠë ²\n_P S\n. Validate\nInv oker\nĠne uen\nĠju venile\nV ISION\nĠdev ote\nĠlin ha\nĠdiscount ed\n\\ Config\nĠworth while\nĠskin ny\nĠC ourses\nle ys\nĠMort gage\nK evin\nĠannounc es\n]) *\nres ervation\nĠæķ °\nĠprejud ice\nĠString Comparison\nĠbe ard\n-w in\nĠS Ã£o\nĉ ms\nj al\nĠE arn\n_ ports\nĠN ombre\n_C OR\nĠB UILD\n.s ound\nY ellow\nĠlineback er\nĠchar itable\nj ug\n_NON NULL\nĠD ental\n\"> ${\nĉm atch\nR ussian\nĠvers ch\nĠp inned\nĠadopt ing\nOptions Menu\nP ag\nĠpair ing\nĠt read\nerc ises\nĠSp read\n) i\nĠB AD\n_t f\nUI ImageView\npop ulate\nb ab\nĠÏ ĥ\n[ ++\nĠopi oid\nĠ## Ċ\nd type\nĠStart s\n('/ ')\nĠperson als\n-mark et\nĠredund ant\nĠEss ential\nĠscrap y\nĠÐ¸ Ð¼\na cl\nĠcre ar\nĠB end\nĠrel ieve\n- room\nw ife\nĠv Ãł\nĠQ Point\nĠqu asi\nĠmethod Name\n\\x c\nĠPer u\n/ The\n. orm\nĠv iz\n/p df\nLoc ated\nĠconfront ation\nĠChampionship s\nĠhyp ert\nĠd j\nĠUser Info\nĠåĪ Ľå»º\n\\x b\n(s im\nĠ== Ċ\nĠst aging\nĠdr astically\nåŃ ¦\nl ords\n. less\nÐ²ÐµÐ´ Ð¸ÑĤÐµ\nĠB ucket\nĠM am\n. term\n_p i\nc zy\n.p ub\nprec io\nĠV irt\nĠrom an\nit at\nL ex\n_inf os\nÄ °\n. other\nVE LO\nĠp onder\nĠh anno\n( Page\ndo i\nĠpol ite\nĠprogram mer\nD ies\n$ d\nĠrep lication\nadd Column\nfr ican\nĠl eng\nbe er\no it\nĠw asting\nyl im\nme asure\nN eg\nĠpart ie\n.con sole\nĠGu inea\nTE L\n_f act\n.ch unk\nĠl ent\nĠall er\nĠà¤ ķ\n_id le\nĠad missions\nJSON Array\nĠv ibration\n.h elpers\nå¤ ĸ\nĠh en\nj ohn\nĠì ĥĿ\nĠjud gement\nĠge en\nter ra\n^ {\nĠI z\nĠc Ã¢\ninst ances\nĠthreat ens\nĠm Ã¼ssen\nKind OfClass\nĠstoryt elling\n_d emo\nri as\nPriv acy\nh ift\nĠY i\nes or\níķ ł\nens itivity\n.W riter\nà¸ Ĥ\nD istrict\n.get JSONObject\nIm pro\n(get Resources\nĠS PELL\nrodu ce\nĠslow ed\nĠlin ewidth\nĠhonest y\nĠCo ord\nĠF ork\nĠDispatch Queue\nĠCl iff\nĠW iring\n_TIM ESTAMP\noll ah\nav oid\n++ ];Ċ\nsem antic\n-c ss\nĠv eto\nĠM err\nĠlegisl ators\nCEE DED\nĠquestion naire\nĠP ills\nCal culate\n(c ore\n' e\nĠdis like\nĠPre ferences\n_EX TERNAL\nè° ĥ\nĠd odge\næľį åĬ¡\n.n ames\n.draw Image\n_p rom\nuck land\nĠ<$ >\nÄ± z\n/s ite\né¡ ¹\nrop he\nĠcomp elled\nĠl aptops\nĠun i\nC LOSE\nĠcasual ties\nĠUn iform\nTerm inal\n. \",\"\nD AT\n(T reeNode\nĠGand hi\n(st mt\nAX B\n* M\nĠumb rella\nan imal\nĠgr pc\nĠwhere by\nĠfloat s\nĉ arg\nĠdb g\nĠexceed ing\nEvent Type\n.SaveChanges Async\nĠ{ {{\nĠow ed\nahren heit\nĠì §\nĠequ ipo\nur ai\nĠid ol\n] \")Ċ\n_m ajor\nĠentire ty\ninger print\nÃ§ os\n/ account\nĉ right\nurs os\nĠE DT\n_INS ERT\nĠsh ining\nĠ< :\nEdge Insets\nĠcolon ies\n. IM\nĉĠ ĉ\nRO AD\nCC CC\npl acing\nĠget Activity\nem acs\n' %(\n.click ed\nĠTh em\nis ia\nBus car\n.re name\nĠo ath\nĠafter ward\nĠU FO\nAP S\nĠJackson ville\n.s ome\nConf irmed\n.s can\nig Integer\nDecor ator\nsh ield\nress ive\n.d id\nè¯· è¾ĵåħ¥\nĠsh utter\nD am\nĠparent ing\ney ed\n$ item\n-de velop\nĠextract s\nĠdecentral ized\nĠEl sa\n_sp in\n]) +\n-in itial\nĠmult itude\nĠsens ory\nĠMODE L\nĠsafeg uard\nì ¹\nĠhunt ers\nĠT iny\nIN O\ndecor ate\nĠNo Such\nH o\n( Response\nĠr uler\nĉ short\nĠc aster\nĠclient Id\nĠp db\nëı Ħ\nit ic\nĠGame State\nĠnew Item\n)ĊĊ ĊĊĊĊ\nou is\nn oc\n.BL ACK\n_V ECTOR\n---------- </\nĠexam ines\nĉb lock\nĠadd on\nĠsurvey ed\nĠList ener\nĠfront ier\nĠlack ed\nJ UST\nĠÑį ÑĤ\nĠt int\nĠMyst ery\ndate Time\nĠT utorial\nĠfull Name\nĠDrag ons\n_FILE S\nĠPrint Writer\nĠbe et\nĠL adies\n_t ip\nĠJah re\nor ama\nĠins ulation\n( Environment\n_ ast\nber ger\nlen a\nogene ous\n_MON TH\n-p resent\nĠframework s\nQ Q\nPHP Excel\nĠcount down\nĠF W\n(cl uster\n: c\nĠok http\nob serve\n[ player\n. he\nĠPan ama\nA ustralia\nĠ ounces\nĠaggress ively\nĠwarn s\nĠcustom ization\n_ Query\nw is\nĠin val\nA FF\n(c amera\nW ir\nĠnegot iation\nĉ O\nĠrespect ful\nĠdiamond s\n' av\nappro x\n/d r\nĠgr abs\nĠaccom panies\ncon straint\nĠre z\n( region\nĠb ait\ntermin ate\nĠBelg ian\nass ium\nĠ] čĊ\nSystem s\noused own\n.b us\nSet Value\nĠPre p\nĠconvenient ly\n.m id\ncase cmp\nNum ero\nd aily\nĠC oding\n( destination\n# $\nuj Äħ\nĠemerg ence\n_p ara\n_IN CLUDE\n# :\nĠrecogn izing\nĠf ug\n\"} },Ċ\nĠbuild ers\nĠTerr itory\nĠinher ently\nĠder iving\n. eth\nĠD inner\n.set ObjectName\nĠcelebr ates\nĠque ues\nĠMark s\nAL TER\nĠD art\np oke\n_CH ANGED\nĠpa ar\nl ies\n.v olley\nĠMean ing\nĠOFF SET\nens ing\nĠfr Ã¥n\n.local Storage\nĠë ©\n({ });Ċ\ndec oder\nĠrou lette\nĠdis mant\nI r\nĠins urg\nĠ'' :Ċ\n.âĢĿ Ċ\nĠbrun ette\n. assets\n_NET WORK\nà¸ Ĭ\nn ym\n_S ource\n\\ Tests\nEs cape\nc rypt\n.X ML\nĠsound ing\nop code\nĠclass ify\nĠembarrass ed\nĠLOG IN\nĠresid ue\nĠNE ED\n.deep Equal\nper c\n-c al\nRed is\nT ra\n(_ )\nask ets\ngrad ation\nĠenzym e\nĠStephan ie\n.In valid\n'] ?></\nĠdispl aced\nĠelement os\n(d uration\nrow Count\nĠF Star\nlet a\n/p opper\nĠstat o\nĠperform er\nĠdiscipl ines\nĠF ully\nicular ly\nĠer sten\nĠPoly gon\nĠdisc iples\n.is dir\nĠtest ify\n_S R\nprising ly\nĠGL int\nĠw iped\nĠcar ved\nĠD ish\n.heroku app\nst itial\nĠM ATCH\ncl air\nĠDay ton\n/ ')Ċ\nIDD LE\nĠinf ra\nĠl ively\nĠde ps\nĠ[... ]\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉĉĉ\nĠL on\nEx tras\nTrans ient\nÐ² ÐµÑĢ\n/m odule\nĠend urance\n_t ex\nĠ\" ~/\n_y label\nĠob ed\n/g ame\nops y\nĠfirst name\n.for ce\nĠm art\n\\ Client\nĠlegit im\n.fl atten\n\" ',\nosex ual\nĠj ours\nM H\nex pires\nĠst yl\n.int erval\nK nown\nĠf ollower\nĠd alla\npir y\n_s sl\nish list\nĠRe y\nĠsuper market\nOb viously\n- enter\nĠprob abilities\nĠH V\nĠCin ema\nĠc types\nĠB CM\n_T AC\n; a\n.button s\nĠretrie ving\nilar ity\nĠundert aking\nĉ stack\nĠk el\nĠX en\n( phi\nĠtough er\nĠS eller\nc aps\nĠEm ber\nĠCh in\nĠla ughs\nCon version\n.list ener\n& B\nĠparad igm\nĠj unction\n$/ ,Ċ\n[ o\nĠConserv atives\nÏ Ģ\nl ates\n_ Exception\nĠmeille ur\nĠstr aps\nquis ites\nĉs n\nĠmass acre\nott es\n_g reen\nTit les\n// --------------------------------\nĠReg ulations\nar l\n_short code\nĠDraw er\nĠpar ole\nĠwild erness\nis son\nĠA FTER\nC redential\nBlock ing\nĠHT C\nS in\n(a uthor\nĠcort ex\n') {čĊ\nï¼ī ï¼Į\nĠdump ed\nĠSh ut\nĠKey Event\nĉ Player\n.get Player\nĠign ores\ntoggle Class\nĠEx clusive\n> ();\n.get P\nany e\nĠneur on\nif old\nĠK nown\nBit coin\nAny way\nay ette\nĠ' ['\nÃł nh\nm gr\nĠcor related\nĠn ause\nĠment ality\nhas Many\nĠF G\namp ie\nIT U\nF s\n.S p\n_b etween\nDep endencies\nou g\nPlace holder\n= text\nĠMan aging\nocal ypse\nåĮ Ĺ\n_m ag\nf ld\nâ ĳ\nC AM\nĠHelp ers\nĠd ost\n/ out\nĠassass ination\n.get Image\nĠKenn y\n.' )ĊĊ\n){ //\nĠR anger\nĠg ek\nĠsinc ere\n< Value\nĠD OT\nĠVict ory\nĠleg ends\nĠpr isons\n(ex pression\nĠR abbit\n_s entence\nĠbit es\nĠon Failure\nĠâĪ Ī\nK im\n.g ender\nĠÎ »\nĠ[ .\n\"] );\nland ing\n-d igit\nTE MP\nĉ entry\nĠstrt ok\nĠdesc endants\num no\nĠlean ing\nĠspecific s\nq n\nĠSp art\nĠpor r\nEDIATE K\nĠse per\n' aut\nĠSTE P\nĠBorder Layout\nĠret ros\nĠSalv ador\nĠEN GINE\nx dc\nT weet\nv k\nĠì ²\n] <<\nhet ics\nc oding\nRe ach\n.re q\ngu ide\n.s cope\nsh irt\nrog ate\nSET TING\nĠProte in\nĠe ing\n. EMPTY\n.d f\nĠclear er\nĠc rossover\nĠTo ys\nĠco ated\n.M onth\nĠAtt ach\n/ run\n.t abs\nĠogs Ã¥\nB rown\n.D ATE\nĠf os\nåŃĹ ç¬¦\nW ood\n-th ree\nher ited\nĠ rop\n( ac\nĠembod iment\nĠKenn eth\nĠcan non\nĠb idding\n<I Enumerable\nĉset Timeout\n_d igit\nĠelim inar\n( ne\nb udget\nCS I\nĠìķ Ħ\nĠA SP\nGroup Id\n_C OUNTER\ncons ult\nĠif rame\nleg en\n_DECL ARE\nShar per\nĠFriend ly\nule t\n- command\nĠÐ ł\nc ycles\nĠW aste\nĠt apped\nĉ Buffer\nâĢĶ in\nĠĊ ĠĠĊ\nĠIde al\nĠC andy\n_S yntax\nÃª t\nìĿ Į\nab ove\nĠNaz is\nĠf st\nse in\nĠkun nen\nw ik\nĠS aving\n.ext ensions\nĠDes erialize\nour g\n.at trib\nï¼ļ ĊĊ\nĠW ins\n.e ql\nR yan\n_ ack\nOUR CES\nĠon s\ngre se\naf ia\nMod ern\nĠad here\nĠb ios\n( acc\nk bd\nTh rown\n© ëĭĪëĭ¤\nĉ Http\nĉ xml\nEnd Date\n(p arsed\n.get env\nreg istr\nn ell\nion ario\n.inner Width\nrt l\nP V\n_p iece\nĠDep osit\ny ers\nĠNS Number\nĠg int\nensem ble\nĠnew com\nĠViet namese\n_h p\nĠacc using\nĠqu is\nĠinvestig ator\ness ential\nĠC X\n.for Name\ndef s\nĠanaly se\n_an imation\nĠth a\ntab oola\nĠTH C\nÃŃcul o\nĠgl owing\nĠhon ors\nb stract\nk p\nIT ES\nĠ ################################################################\n# get\n/ Desktop\nĉgl m\nĠz inc\nÃ¡t ica\nĠ<< Ċ\nV ML\nĠUn limited\nv re\n-b ed\n_n once\nĠG I\ntr avel\nĠis KindOfClass\nĠanonym ity\nFire store\nĠem ailed\n_FL ASH\nĠf Ã¥r\nâĺħ âĺħ\nĠ: ]\nH um\n.res erve\nÃ¼ m\nĠkosten lose\nĠS CP\nut an\nĠG ore\nĠch ats\n/ >čĊ\n.get Resources\nĠl ump\n_const s\n( ext\nĉd ir\nâ Ŀ\nĠpadding Top\nĠobs ession\nĠb anning\nĠApp Module\nĠpart isan\nĠcatalog ue\nĠmin ors\nĠpitch es\nwe ep\nĠundert ake\nĠthem ed\naud it\n.scroll Top\nĠr er\nĠsympt om\nĠopen ings\n.block s\nopen id\nĠas sh\n-s ave\nĠP ig\nĠreg ain\nĠin icial\n/f avicon\nĉ exp\nĠsp ices\nisk a\nclaim s\nm ak\ndefinition s\nĠcorrespond ent\nĠCann abis\n__ ,Ċ\nĠL ucky\nĠGa ussian\nĠN early\nC AD\n'] ]Ċ\nĠadequ ately\nĠT ITLE\nconstitution al\n-m m\n_ override\nĠbl as\n.ready State\nĠremin is\nĠrein forced\nĠColl abor\nĠdecor ating\nĠb achelor\nERRU PT\nĠup right\nip ation\nĠNob le\nĠvalue ForKey\nĠset Loading\n.I gnore\nå ģ\nG lobals\nĠM ent\nAS SES\nĠlim bs\nĠH UD\ninc i\n. iv\nĠQ ModelIndex\nF use\nĠped al\n_F REQ\n( verbose\nĠlong itud\nĠChar ter\nê ·¸\nĠbund les\n. ignore\num bo\nEM A\n.... ...\ns x\n.C ard\nĠhe ute\nĠste er\nj umlah\nĠ{ _\n_Check ed\nĠf ax\nĠG ust\nitch ens\nĠ ))ĊĊ\nĠremark ably\n/ XML\n- remove\n_b t\nĠinc ub\n.p ackage\n.current Thread\nĠHigh lander\n.s ide\ns plash\nĠ ici\n= D\nĠp uck\nĠball ots\nĠhug ely\nco eff\nĠp Data\n.C OLUMN\nĠHe aling\nĠord in\n! ),\nĠ' ',čĊ\n(m d\nĠS ask\n< strong\nĠsurviv or\n.s eries\nĠcaffe ine\nĠ` (\n.TRA ILING\n_ Input\n(\" ^\nz d\n& );Ċ\nĠP ing\nĠv oucher\n.r ating\n-sh irts\nĠRetrie ves\n.al ibaba\nOr acle\n_MO V\nOld Data\nĠ/* čĊ\nĠg boolean\nĠ=> čĊ\nĠr Ã¡\nĠbl unt\nĠImage Icon\nif ik\nRT C\nĠfib ers\nĠto ile\n.s ent\nĠPy Qt\n$ app\nĠmed io\nĠgrant ing\nĠtsl int\nĠM Ã¶\n(fig size\nĠhur ricane\nĠlif es\nĠÃ Ħ\nrocess ing\n_st andard\n- option\n')) )\nĠvac ant\nå· ¥\nĠH ollow\nhandle Change\nĠdiv ider\nĠEngine ers\nĠsv ens\nĠcompl iant\nt anggal\nĠC redits\nĠEm irates\nRule Context\nĠreal ization\nĠdistr acted\n]+ =\nĠaug ment\nĠD w\not p\nor rent\nEdit ar\n.st ock\nSt udy\npe ctions\nĠGame Manager\n= cut\nĠf lock\nĠRom ans\nth em\n-h op\nĠscreens hots\nĠ/* !Ċ\nĠconvers ions\nĠnormal ization\n(config uration\nĠa eros\n_se curity\n! 'Ċ\nB onus\nĠDR IVER\nĉ Date\nt ie\nĠWy oming\nSt and\nit re\nĠsh oppers\nĠdisadv antage\nĠlik ing\nç¬ ĳ\nĠunderstand able\nSE E\nĠh oy\nĠnin ete\nĠcon fer\nĠnow rap\nĠV ern\n, čĊčĊ\nimest ep\nLayout Manager\nà ·\nĉw ait\nPLE TED\nJ apan\nĠindu ce\nĠå ¯\nÐ¾Ð· Ð²\n_END POINT\n.h orizontal\nĠacceler ated\nrim on\nIV ES\nTrans actions\nLe an\nĠSO UR\nwh ether\ny g\nĠo id\nĠEntity Manager\nOUN TRY\nĠfil a\nOLUM NS\nIN UE\nĠAn chor\nTR AN\nwo o\nblock quote\nĠN urse\nĠCar p\nĠrede em\n. try\nĠJ P\nĠtimestamp s\nĠ?> \"><\nĠREM OVE\nĠStar bucks\nRe ally\nĠflood ed\n.C allback\nDrop Down\nip ro\nĠt ended\nl te\nĠproport ions\n- te\nĠR ena\nlic ate\nfor ces\n.ex tra\n.auth enticate\nÐ² Ð¾Ð´\n¡ °\nĠfor ControlEvents\nĠsen ha\nĠke in\nĠmin ist\nĠPre ference\nĠTele graph\nÑĥ Ð¿\nstr pos\nĠillness es\nĠp igs\nĠget Intent\nS ol\nĠÂ ¡\n(c pu\n[ prop\ns creens\n'); ?>\nĠAct s\nĠstr dup\nĠaver ages\nan al\nĠCas ual\nGroup Box\nĠHand book\n/ comments\nĠnumber ed\nĠbroadcast ing\nçĽ ĳ\n.native Element\n.m u\nĠupdated At\nĠDoes n\n.A C\n.c oll\nĠrec order\n_sh a\nB g\nb il\nĠbol ts\nĠç ¬\nĠim posing\nĠInformation en\n_flash data\ne conomic\nRem ark\nuc as\nĠOff icers\nĠT ER\nW alk\nĠmerc ado\n_g enerate\nH Y\nCall ing\ns nap\nscript Id\n. operation\nĠFl ame\nl iness\nĠrent ed\n_t oggle\n-ch anging\nĠT Y\n' util\nEE P\nĠgraph ql\nĠUn i\nĠimp ulse\n.B asic\nĠenerg ies\nM ARY\nĠMar cel\nĠmort al\nĠf res\nm ens\nm otion\nĠsample d\nâĢľ That\nid ay\nqu ipment\nget Int\nĠA bsolute\n,' \"\nun ed\n.sh are\nĠ} )(\nmm m\nĠR ising\nä» »\nĠun employed\nx fa\n.f ollow\nĉĉĉĉ ĠĠĠĠĠĠ\nsl t\n.P hone\nĠkn ives\nĠe ve\non Click\n] ))čĊ\nĠW itness\nĉ NS\nĠE OS\nĠSte fan\nĠPri est\nâĢĶ which\nGet String\n. By\nĠup stairs\nĠdetr iment\nbro ken\nemb ro\nĠnic otine\nil ion\nĠaston ishing\n_ aff\nĠLess on\nĠaccident al\nod or\nĠdec ir\nĠnew Name\n+ .\nçĽ ¸\nigs list\nĠG ithub\nĠsuccess ive\nrac ial\nĠen viron\néªĮ è¯ģ\nĠredirect ed\nT OTAL\nĠgrab bing\nĠL ance\nĠfor fe\n_C B\nå¾ ®\nEl apsed\n_w ay\n(Dialog Interface\n_me asure\nx bb\nD og\nDep art\n-s rc\nres olver\nwith standing\n_sh ell\nĠLast Name\nĠAv iation\nĠbegin ner\n(\"% .\n(to ol\nĠÐ½ Ð¾Ð²\n: init\n(A PI\nĠMorr ison\nvt Color\nĠstap le\n/ INFO\nĠsupern atural\nĠste ak\ntim eline\nzz le\n\" `ĊĊ\nSecond ary\nĠNep al\n.String Utils\nĠad am\nĠ( ...\nĠsub stitution\nĠboard ing\nĠKey word\nĠAss ault\ndbc Template\nĠorder Id\n( engine\n.assert That\nĠVen us\nĠhomic ide\nĠA val\nĠg utter\nĠSupport ed\n/p art\nĠac claimed\nH istor\nĠmes es\nÃ¼ ber\nĠRen ew\nĠgr as\nĠE k\nĠin file\nind y\n.m usic\n.S croll\nĠA ges\nĠNar uto\nĠG ather\nĠconfirm ing\n= (\"\nĠpitch ed\nole y\nFr ance\n+' \"\n$ total\nĠon de\nĠd itch\n_s igma\nĠcontinu ity\nre ward\n- load\nĠproces o\nLock ed\nst aw\nĠsp inal\nl azy\n! ==\nj est\nĠd un\nĠRod gers\nĉ grid\nĠlog os\nĠBeng al\n.s uper\nProvid es\nĠnut rient\n.T imestamp\nIZ ATION\nåĨ Į\nĠf ats\nĠX xx\nct ica\nTarget s\nĠcont ours\nĠre ordered\n: Array\nĠtoler ate\nV ir\nĠter ribly\nĠbr icks\n(& _\nh b\nPort al\nĠB read\n. which\nÂŃ t\nas InstanceOf\nĠj object\nĉ length\n_M T\n; \">čĊ\n_EX IST\nĠmat ernal\nRE L\nĠê²½ ìļ°\nhe e\nĠlayout s\nĠL ap\nais y\nĠst umbled\nĠU IG\nĠS co\nĠimp aired\nRES SED\nĠab uses\nV F\nAR B\n.N AME\nr ch\nprim ir\n_com pleted\nĠp enny\nCh rome\n(b egin\nern en\n- checkbox\nPlain OldData\nĠL PC\nr ade\nsp ir\nĠcon ceived\nT ips\nĠIo T\nĠG an\nèģ Ķ\nĠbi ases\nĠconsult ants\nple d\n_ ht\nassoci ated\n], ĊĊ\nĠdelight ful\nĠÑĤ ÐµÐº\nHel vetica\n( load\n-exp and\n_W IDGET\nto a\nĠA kt\nĠom n\nĠcl auses\nInt el\n*/ }Ċ\n_reg istration\nĠold Value\nĠrest oring\nĠun real\nO VER\nĉĊĉĊ ĉĊ\nAT S\n_pro be\nĠdiv isor\n.update Dynamic\nå¹ ³\nProdu ces\nst amp\n.j boss\nĉt ask\n! (:\nĠpsych ic\n@ class\nM artin\nĠPass ed\nclar ations\nh el\nÐ° Ñĩ\nĉc opy\n-b in\nz an\nig ram\nà¦¾ à¦\n(s ig\nĠC aval\n_ ##\nĠ% =\nout lined\nĠAc id\nĠunpredict able\n-d ashboard\nHex String\n+ c\n.P ublic\náº ©\nĠconvey or\nĠE B\nĠselect s\nĠknock ing\nĠC ec\nIBUT ES\nowa Äĩ\ng atsby\n* v\nent ropy\nĠdispatch ed\nĠcam el\nĠSat urn\nĠover weight\n( phone\npar able\n% B\n_v ectors\nĠbrew ing\nĠT k\nĠDownload s\nĠS aved\n.Pr ice\nĠcur ved\nĠParen thood\nè ¶\n.p nl\nplet ely\n.D ay\nĠadvertis ers\nĠej ec\nĠpr zed\në ¯\n! ';Ċ\nĠK ush\nĠT AB\nĠquest s\nĠcoinc idence\numm ies\nĠKash mir\nĠEth ics\n_g rowth\nĠakt iv\nĠgroup ing\nå¢ ŀ\n_tr uth\nåĲ ¬\nt odos\nis et\nTex Coord\nÃ¤ tt\nĠZ ur\nro ys\n_M AGIC\nĠbrew ery\n( State\nĠSM ALL\nĠPl ants\nit bart\neach er\nĠAd elaide\nL u\nĠf ick\nund les\n_load ed\nÐ¸ Ðµ\nP oll\nrit ic\nEL Y\nĠ+ '\nĠProf ession\nĠst amps\nĠS ew\nscroll View\nĠcomm unist\n/pro blems\n}čĊčĊ čĊčĊ\n, o\nĠu dp\nĠob ese\nappro ve\nancell ation\n_G ame\nĠHas htable\nadaptive Styles\nĠpossess es\n.match er\nfunction al\nM rs\nĉs ave\nĠDb Type\nĠk en\nget Context\nĠm ans\n( rel\nĠBrother hood\n) `Ċ\nè§ £\n.In formation\nOutOfRange Exception\nĠS ek\nC as\nĠblog gers\nE ither\n(\" \"\"\nĠpin ch\nĠco arse\n) p\nĠP ulse\nĠlear nt\nĠdent ist\nĠon change\nĠdirect ives\n( actions\nny der\nĠSh ir\nT rait\n_de p\nĠP ET\nĠRE P\n.App Settings\ncu ador\niden av\nĠenv i\nĠsl ammed\nĠSh oot\nĠdate Format\n.j oda\nve ys\nĠ) .ĊĊ\nĠcare g\nĠPar allel\n_ translation\n.function s\n. obs\nRuntime Exception\n[] =\nover view\nĠSch l\nĠno isy\nĠOn PropertyChanged\nS ending\nĠunf amiliar\nU pon\nĠPrint s\n.t yp\nĠflee ing\nĉm ove\n( Un\nĠq r\n× ľ\n_b eta\nĠsk ies\nĉm e\nW ND\nĠstick ers\nbl as\nĠinsert s\nĠvers es\nĠD ew\nĠtang ible\nĠhe cho\nP OL\nĠte ardown\nom nia\nIB E\n.c over\n_str ategy\n^ -\nset Position\nu ale\nS igned\nĠif ace\nas eline\n.set Time\nĠMin eral\nĠFight ing\nsk ins\nĠdiscrim in\nĠdans k\nĠPr inceton\nac ist\nĠ( ));Ċ\ntr acks\nimon ial\nad ecimal\nEP ROM\nugg le\n.Not ification\n$ mail\nc antidad\nĠJ ung\nĠseek ers\nĠpl ausible\nt ier\nÐµÐ ¶\nĠr apper\nĠMan a\nĠHttp StatusCode\nĠburn t\nlos es\nĠF oto\nĠJson Object\nInst agram\nĠsys call\nĠreal ities\nĠMAT LAB\n:^ {Ċ\nTER M\nĠC bd\nĠPar agraph\nĠtrav Ã©s\nĠconstruct ing\nĠsw al\nĠp ige\nLL LL\n-ex isting\nG ets\nĠmelt ed\nĠmitig ate\nH en\nĠh m\nim as\nĠA o\nĠP erez\nĠD AL\nĠëĭ ¤\nĠdiv is\nStoryboard Segue\nĠMod ify\nĠÃľ ber\n_O VERRIDE\n.p em\nunt os\nĠespa Ã±\nĠ{ ?\nĠP AY\n_ip v\nĠF ury\n__ .__\nel ow\n-center ed\ncheck s\n_ Reg\n-J avadoc\nĉ load\nĠLik ewise\nØ§ Ùħ\nUN E\n.se m\nx cb\nĠC ave\n_s leep\nĠsil ently\nĠExt reme\n.To Upper\nĉC HECK\nĠc ue\nĠQ ByteArray\nĠcorrupt ed\nĠD Ã©\nĠimp ed\nGet Name\nĠinaccur ate\nĠso ber\nÐµ Ðµ\nĠbar code\n-- ){Ċ\nink i\nĠÃ© p\nĠd ri\nĠAL T\n>>>> >>>>\nont a\n[ L\nĠinter es\nver ting\nĠdi agnostics\np dev\nè ©\nĠIntegr ated\n). '\n_g c\n$ text\n.g ames\nĠT erra\n' Re\n.trans fer\n_F IFO\nget Model\nĠbl and\nĠCole man\nĠpr imes\nĠæ Ī\nĠcross es\nn k\nG ING\nĠ' ^\nĠB lob\nĠinter course\nĠBl vd\nĠweigh s\n_reg ular\nĠPer th\nĠsepar ating\nĠb illed\n.tab Control\nĠpup pet\nĠutil ization\nĠâĸ ł\nĠsucc es\nĠl amps\n_pro j\nE ric\nĠren ovation\nĠFam ilies\nĠB its\npart ials\n-M en\ns olution\nĠd warf\n.IN TEGER\nĠLO CK\n. ct\nĠexcer pt\nĠP ix\nĠFirst Name\nANT ED\nĠAd mir\n-h elp\nP rior\nĠAl ign\n.IN STANCE\nLine Edit\n('/ :\nĠin et\nod us\n.p kl\nĠK Y\nup ert\nĠn erves\n_grad ient\n} ','\n_un ref\nĠs aturated\nĠConn ected\nĠF N\nEX IT\nĠtele port\nĠav ait\nPage Route\nĠdivor ced\n(l ang\nf st\nĠT yr\nĠmess enger\nif stream\nX S\nĠBank ing\nĠinfect ious\nĠM ons\n_LO OP\nĠzur Ã¼ck\nĠobt ener\n/re pos\nV el\nac ro\nĠuser Repository\nstyle Type\nĠS RC\nVML INUX\nrec ursive\n/ bar\n_ch ip\nomin ated\nĠN it\nâĢĶ to\nĠBudd h\nÐ¾Ð¼ ÐµÑĢ\nĠM AG\nĠC HE\n_d en\n. raises\n_de gree\nĠpump kin\n_tem plates\n_M EDIA\nĠTim eline\nĠb ots\nObject Type\nĠbu ys\n.post s\nC AL\nwait ing\nĠDani els\nĠd abei\nĠS igma\nil or\nig el\n, W\nAD S\n( panel\nì² ´\nit ating\n.p alette\nĠmos quito\nĠt ego\n(parse Int\nĠdes puÃ©s\np romise\nĠw ij\ntypes cript\nĠT v\n_IDENT IFIER\n).ĊĊ Ċ\n_fl at\nits u\nUS R\nex perience\n-f it\nph inx\n_th resh\nĠide ally\nĠFre eman\n, DB\n_r w\nçŃ ī\nU b\n_stat istics\n=\" \"><\nĠch ore\nĠy ork\ninst alled\nAdd itionally\nĠp stmt\nyl ko\n:: Ċ\nFore st\nĠhead set\nĠgall on\nÑĢ ÐµÐ¼\nĠwithdraw n\nĠC andidate\nĠmel ting\nĠfree zer\nĠh l\n_HE LP\nm ime\n( /*\nĠth irst\n$ return\nmember of\nÐµÐ ±\nĠHttp ServletRequest\n( ob\n_ Result\nĠassert ed\nĠfulfill ing\nĠstret ches\npar ated\n-f unded\nĠå Ľ\ning les\n_c a\n. condition\nĠDis plays\nĠor ang\nĠC RE\nĠgl Bind\nĠSelect or\n/ type\nĠAlex a\nched ules\nĠPen insula\nĠpar ity\nĉ dest\nĠDo ors\nčĊ ĉčĊ\n_dim ension\nĠa load\n.St oredProcedure\n(p aren\nĠBur ke\n') ]Ċ\n- engine\nĠqu ir\nĠHy brid\nĠDo e\nĠout lines\nĠTrend s\n_N V\nper iments\nĠH in\n? ',\nĉ Text\nF UL\nĠsm ells\nĠs lick\nĠmis erable\nĠArray Adapter\nĠparam String\nH om\n_l iterals\nus uarios\nĠprompt ing\n_l azy\nĠActiv ation\n_ oc\nWe ak\nĠan ecd\nĠU CLA\n= re\nisse ment\nĠEsc orts\nEx cellent\nĠP ause\nĠre positories\nT OR\nari ate\n_is o\nup dates\nhal b\nudi ante\në¡ Ŀ\nĠna ive\nĠP eg\nĠL ounge\nARG IN\n(b in\nOn ClickListener\nĠFA ILED\nĠl ite\nĠd zie\nĠL iteral\niv or\nfc ntl\nĠe ats\nĠq ed\nUn lock\nrid ing\nund ai\n= M\nAT TER\nConfigure Await\nici as\nustom ed\nĠsuccess ion\nend Time\nĠJ upiter\nĠjud ging\nd ration\n_d ocs\n.m o\nĠeduc ators\nĠV ine\nCon d\n[ out\nq b\n\\ Validator\nĠmean ings\nĠpresent ly\nĠdiv iding\notten ham\nasc ular\nĠtrail ers\nĠC LOSE\nÐ°Ð¼ Ð¸\nâĢĻ ai\nĠG ain\nw or\nĠpl anner\nĠdistrib uting\nv at\nmonth s\nx label\nH F\nV iol\n.BASE LINE\nÐµÑĤ ÑģÑı\nĠR otate\nĠtx n\n: bold\nĠb loss\nForg ery\n( embed\nĠjak o\ns printf\nthe ir\nĠexhib its\n- static\nhe cy\nget ActiveSheet\n.c lients\nãģ į\n_h ide\n[ word\nC b\nadd Item\nax e\n_r adio\nal ion\nmod ifier\nĠsat uration\nĠden om\n_p ixels\nm ess\n(f l\nat if\nĠse cs\nĠpro stitution\nĠgrand children\nĠparad ise\nĠF eld\n_B INARY\nit ous\nà¹ Ħ\nĠflash ing\n-s ided\nĠcontrad iction\n/* ĊĊ\ny label\nĠT et\nĠadm ire\nres o\nĠlet z\nĠSE ARCH\nsl ots\nĠRew ards\nĠH og\nĠNS Data\nst ash\nF all\nĠA mer\nLine arLayout\n/ photos\nĠfe ather\nĠ| čĊ\nDownload s\n.Start sWith\nĠ// #\nine Transform\nĠaff id\nV tbl\nĠRog ue\nscri bed\nĠfa uc\nĠMon roe\nĠdecl ares\nmod ern\nre on\nay be\nP ASS\nf ers\n_MULT I\nĠMath ematics\nĠsud ah\n_ATT ACH\nĠnumber With\nĠSol omon\nj in\nograf ia\nÃ¶ l\n_d esign\ncul ated\nĠL una\nies z\nĠ=> '\nĠrevel ations\nAl ong\n( ed\nĠF ilename\nĠy label\nSec ure\nĠbus ca\nagn osis\n_RE CE\nĠoverl apping\nExt ent\nĠanticip ation\nCheck s\nĠALS O\nor c\niling ual\nit ational\nĠadv ancement\nou ro\nĠP redicate\nå¾ Ĺ\ner ia\nĠPier ce\nor io\nĠmer its\nĠpe anut\n.P ackage\nĠCon duct\n_SENS OR\nĠbo iling\nĠin tra\nĠI GN\nĠF ur\n.Ref resh\nĠRe ach\n_dec oder\n.Ex p\nĠÑĤ Ð°Ðº\np ill\n, Q\nĠGr ill\nĠpop ping\n.A g\nĠpro yecto\nĠmile age\nĠec ological\n] ]);Ċ\nĠÂ Ń\nsub plot\nac ad\nĠTry ing\nrec ipes\n$ criteria\nĠPers ian\n-b ound\nM ASK\nĠG esture\nĠk k\nĠP VC\nĠprohib ition\nĠcom ando\nĠLO OK\nSh opping\nĠdist ortion\n< Boolean\n.Get Length\num pt\n\\ Product\nell ery\nĠfire wall\nform atted\n.red is\nĠes a\nĠRh ode\nS om\n.n on\nĠ' ).\nĠget View\náº¡ n\npr us\nMat thew\nĠs ia\nĠF ors\nG PU\nient ras\n_IN ST\nĠol arak\nĠimport ing\nT CP\n/ \");Ċ\ne ither\nĠfresh ly\nc ascade\n(char acter\nĠJe ep\not ics\n_ UTIL\n.Xtra Printing\n.first Child\nĠEx cell\nĠd vd\nĠt aller\nĠr as\nyp ass\nĠassign s\nĠgri ev\n-m ore\nJ D\nĠBurn s\n' >čĊ\n.D ependency\n.Query String\n.O wner\nĠexp iry\nTh u\n( Vec\nĠhazard ous\nĠr pm\nAP ON\nĠadd Target\nsv ille\np Net\nĠIm g\nĠTIM ER\n.An imation\nĠbe k\nĠass ort\nĠle bih\nĠbody Parser\nĠvibr ating\nID L\nĠbutter knife\nint ers\nĠpersu ade\nĠLGBT Q\nè ĭ\n.s oft\nĠbe ams\n_s ur\n.D ef\nĠl abs\nĉ plt\nĠsk ins\nĠtransf erring\nĠimag inary\n_E nd\n; background\nĠl aps\n_COM MENT\n(S DL\nond s\n.Rec ord\nĠIm plements\n_t icks\n() ))ĊĊ\nĠa rose\n] ?\nĠM p\nĠI Command\nĠsculpt ure\nĠcontract ed\n< HTML\nĠcal end\nat y\n/ Sub\nĠkv inn\n_ IGNORE\nĠSh ane\nML S\nĠstim ulate\nPart ition\nĠm un\nÃ³ m\neral a\n- account\n.B inary\nc Ã©\nĠse ize\nconnection s\nĠĊ ĠĠĠĠĠĠĠĠĊ\nĠDi agnostic\nV ISIBLE\nĠRun s\nĠimpress ions\ns uite\nob le\n~ -\nak ukan\n< Person\nĠN os\nĠG ui\n.wait For\nRE SET\nĠpost pon\nDis cover\narr ison\nsh aw\nb lood\nAJ OR\næĽ´ æĸ°\nĠM use\næĶ ¶\nĠret aining\not te\nĠmos que\nĠS ne\nĠstandard ized\nĠmain land\n_th ree\nunge ons\nget Doctrine\nĠwh ale\nĠag g\nĠP orsche\nnow led\nlat ent\nĠRel ation\nĠ// '\nĠshut ting\nĠRem ix\n_c ov\nĠs ailing\nĠv owed\nĠp ots\nout u\nĠhair y\ncast s\nRel oad\nĠre connect\nter a\n.child Nodes\nĠR ack\nĠcurrent Index\nĠall en\nĠ çĶ¨æĪ·\nĠC ubs\n[ X\n_SE Q\n_RE MOVE\n.get Action\n(/ ^\nerr ar\nĠ ether\ncur ve\nĠsl ap\nĠu om\nO thers\nĠen gr\nDis position\nĠst aged\nE ye\nĠA ux\nauth enticate\nĠ$ ?\nĠAndre as\nĠset w\n.A rt\nĠforecast s\nĠa unt\n-m iddle\nĠmis d\ndes k\nĠescort e\nĠCas a\nrop ical\nĠexem ple\nplan et\n(U INT\nĠwh ip\nĠPC B\nclide an\n=\" \\\nĠox ide\nĠsucceed s\nder ived\nĠEcon om\n_co ordinates\nir as\nD raft\nĠvisual ize\nB rian\n_ASS UME\nĠObject Id\nĠtrain ers\n_FOR CE\nĠcon soles\n- process\nlic her\nĠSim mons\nT aking\nĠCl aims\nĠdiffÃ© rent\nActivity Result\nĠsn s\néĢī æĭ\nĠCr us\nĠll am\nr ab\nĠJo an\nAA A\nĉf ilter\nish ops\nget ting\nà µ\nĠquant o\nP ast\nov ich\nĠin justice\nĠF LOAT\nĠal right\n\\ DB\n( GameObject\nu ish\n(b ot\nĠgall ons\nĠR Ã©\nĠS aid\nĠSTDMETHOD CALLTYPE\nais ing\n_process or\nell idos\nter dam\nĠBe am\nText Area\nĠret orno\n.M ake\nĠ$ (\"<\nĠlock down\nĠremed ies\nĠve el\nx ee\ndo ctype\nF il\nĠExp and\nĠemp loys\nĠsession Storage\nPh p\nP ublish\nĠret al\nf abs\nynam ics\nĠtoss ed\nĠnumberOfRows InSection\nx path\n\\ modules\nĠdis astr\nĠM ULT\n.M esh\n-st age\nĠs df\nit ung\nug es\nĠ?> \"></\n_index es\nĠval uation\nĠlif elong\nĠexped ition\n(Y ii\nĠp ains\nĠP RI\nĠM ixed\nĠCh anging\nGerman y\ncommunic ation\n.org an\nĠMar athon\nget Path\nĠAcc uracy\nĠG lobals\n') }}</\nĠOW NER\nâĢ¦ âĢĿ\nĠstab bed\nĠsch izophren\nĠF n\nĠC ORE\nĠData Row\nĠL TD\nĠmy ths\nĠfam ously\n| ,Ċ\nĠSe oul\nS ir\nĠBer k\nReg Exp\n.get Row\nĠDec ode\nR N\nĠm ang\nĠemploy ing\n_n ombre\n<T ask\nĠGu ys\nĠArt ikel\nB erry\nz ure\nĠvale ur\nh its\nĠlucr ative\nĠin format\nCl inton\nĠt es\nĠCert ification\n_w s\nĠoff ences\neb ra\nĠAx ios\nre start\nL N\n.Enc ode\nm ium\nĠFeature d\nÑĪÐ¸Ð± ÐºÐ°\nĠDe pt\n;& #\nĠMy ers\nĉ transform\nT exas\n× ¨\nĠYork shire\nl name\nB re\nãģĵ ãģ®\nĠscen ery\nĠf Ã¼h\nĉĉĉĉ ĠĠĠĠĠĠĠ\nĠDo om\nĠA DMIN\n( es\nĠÐ¼ Ð°ÑģÑģÐ¸Ð²\n_ ascii\n/ Data\nlesh ooting\nB an\nĠmem oir\nĠ ÙĨ\nĠA uss\n) paren\nĠgu iding\nĠb az\nÃ¸ y\nAD M\nĠd ma\n. Queue\nĠSup plies\nĠMc D\nĠAg ents\n_b b\nsl ash\nĠhash es\nĠcr ank\nĠR ag\nĠaut onomy\nÃŃt ulo\nĠrecurs ion\nĠC razy\n_tr acker\nĠM b\n_p hy\nfo obar\nĉs peed\nĠcam pos\nĠm ould\nĠchar ities\nHE IGHT\nĠe auto\n_s olution\nĠD G\nmar vin\nY esterday\nĠBec ome\n< ll\nor is\n[ next\nĠincumb ent\nĠD up\nĉ override\nå® ī\nĉc fg\nĠs Ã¶\nĠdes e\n-d i\nĠont vangst\nĠdecis ive\nä» ·\n_ keep\n(D atabase\n_ /\nĠC LL\n-m ethod\nĉ Point\nĠByte Buffer\nĠtr aced\nadd To\nìĦ¸ ìļĶ\nany ak\nĠemp resas\n(re pository\n.create Statement\nĠel a\nForgery Token\nĠis empty\nas in\nĠLook up\nÐµÐ½ Ð°\nĠviol ates\nĠSm arty\nĠz ak\n($ .\nSH OW\nĠÐ ¢\nar us\n( TEST\npack ed\nĠhistor ia\nĠcan cers\nĠKre mlin\nRed uce\n/ how\nĠÄ Ĳ\nT ITLE\n.local Position\nli able\nĠç¬ ¬\nĠfranca is\nĉ hash\nĠin icio\nĠCr ash\nĠ{ .\nĠclock s\nduct ory\nĠP v\në Ŀ¼\nĠdo is\n\\ -\nĠja ar\nĠMay a\nmo zilla\nĉ resource\n!! Ċ\nays cale\nĠ'- ',\nåıĸ æ¶Ī\nĠst ale\nCor ner\nÃ¨ le\nit ives\nz as\nic orn\n.Ex pression\nÃ³ t\nApp lications\nRest r\n_ Index\nį°ìĿ´ íĦ°\nĠJ Frame\ns ix\n_IM G\nè Ĺı\nĠN umeric\nĠw irk\n_S UM\n< DateTime\nĠpyl int\nĠl ament\nĠP ose\n_ent ropy\nĠencour agement\nĠl ain\nåĪ Ľå»º\n- fr\nĠcorre ctions\nph as\nu ur\nategor ias\nĠcatal yst\n. alt\nĠFern ando\n.DataGridView CellStyle\nĠher bal\nĠR G\nST EP\nIF n\nĠT ong\nÅ¾ e\nĠIN CLUDE\nĠh c\ntr acker\nĉString Builder\nĠDest iny\nĠsoph omore\nĠD ed\nĠPAR A\nizont ally\n- change\nend id\néĢīæĭ ©\nij ke\nĠAth letic\nb ai\nget Position\n.n amespace\nè® ¢åįķ\nRA CT\nĠrel ieved\nĠpour ing\nĠi y\nro ve\nĠadoles cents\nĠa we\nre as\nAnti ForgeryToken\nrow ning\nĠUnc le\n.Con n\nĠMedia Type\n.or acle\nINTERN AL\n, and\nĠfa ux\nip map\n$ model\nĠGe off\n_AX IS\n( ())Ċ\nĠneg lected\nĠquarter ly\nĠdies en\nĠdrag ons\nN ight\n/ Web\n< Vec\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠO bs\nb dd\nĠhe ir\n- angular\nMenu Strip\nĠ' \">'\nkin son\nĠÐº Ð¾Ð»\nogn itive\n_ li\nĠim minent\nĠaff inity\n.sign al\nĠnot ch\nĠSteel ers\nmax length\nK K\nĠEug ene\n_P WM\nro i\nĠâ Ĺı\nĠH amburg\n.M ust\nĠax e\nen ef\nĠamb itions\nĠSpec ies\nĠSt ress\nĠa while\nĠÐ± ÑĥÐ´\nĠwith stand\nĠDec oder\n_in ventory\nĠ{ ččĊ\nĠt gt\nĠrail road\nW ASHINGTON\nĠnegot iated\nN ST\n- phone\n, U\nĠexerc ising\ná» ¥\n_P IXEL\nav ors\niter ated\nĠv ampire\nad al\nIn grese\nĠun g\nject ive\n.c ells\nĠn ano\nĠmark down\n_R ULE\n(event s\nĠl uggage\nMESS AGE\nig keit\n$ count\nAttribute Name\nIG INAL\n_E nt\nĠB F\nĠCOM MENT\n_in i\nĠEurope ans\nĠB elle\nåĳ ½\n) ['\nåº Ķ\nĠUse ful\n.re ference\n() \",\n_ grade\nĠK aw\nĠsent encing\nĠsocial ism\nmon ster\n_L AYER\nĠdee pest\nw k\nĠNo ise\n### ĊĊ\nĠpr Ã©c\not le\nÑĤ Ðµ\na uf\nib al\nĠcon quer\n> Email\nĠamb ulance\nO AD\nĠ(\" %\nĠF I\n.f ixture\nĠter se\nĠĠĠĠ ĉĉĉĉ\nĠsanct uary\nug i\nĠCom parator\nDefinition s\nĠast hma\nĠl act\nĠhard wood\n.c lock\nĠattract ing\nĠM our\n(d istance\nic its\nĠbon ne\nĠAC CESS\n.Deserialize Object\nĠTyp ed\nĠje u\nĠapp Id\nĠCl ara\nĠH F\nĠRe ich\nipp les\n//---------------------------------------------------------------- ----------------\n_del ivery\nerial ization\nĠplaint iffs\nSc ient\nsh opping\nĠD ummy\nĠW ald\nGroup Name\nĠins cription\nel og\n:::: ::::\n_ ld\nBack Pressed\n.R aw\nĠOn Trigger\nĠmuse ums\nĠBe en\nĠAdvent ures\nĠsl ate\nĠlet t\nĠsu nd\nĠG in\nĠMechan ical\n.s hip\nApp Component\nĠdest ined\nĠdw elling\nProf iler\nPre pare\nze ich\nĠsil icon\n(h as\nĠ# %\nVID EO\nĠcollabor ate\nL in\nĠsc opes\n( className\n(s d\nand in\n.h am\nService Impl\n-des cribed\nĠiron y\nst ial\nĠHu awei\n(re po\nĠunexpected ly\nĠK ai\n.inst all\n\\x f\nĠexhib ited\n_T CP\nĠO x\n_CH O\nĠprostitu erte\nĠv Ã¤\nĠsit o\nĠconstitu ents\nĠContin ued\nĠS AVE\nr ss\n/ message\nub es\nĠmisd emean\nĠtax ation\nĠstory line\nh air\nĠFind s\nS IG\nver ification\n~ =\n.h p\nIter able\nÑĭ Ðµ\nator i\nĠc tr\nR x\n_ );ĊĊ\nd ag\n.p in\nĠp seud\nĠinv o\nÑģÑĤ ÑĢ\n_p ix\nä¸º ç©º\nĠsw orn\nâĢĶ or\n_reg istry\nĠdis asters\nĠRO I\nĠâĢ ķ\nakt u\nfore st\nbe iten\nâĢĶ I\nue va\neg t\nĠsp ikes\nURE S\nĠRecomm ended\nĠexplo ited\nĠFreder ick\n_COMP LETE\nĠDr ugs\n!!!! !!!!\nĠR iv\nST OP\nRO OM\nĠP ASSWORD\nC ookies\n.E l\ná» Ń\nĠB ert\nĠhash ed\nic ester\nĠdecor ator\nĠquery String\n: ;Ċ\nĠ\" [\"\noto pe\n-A meric\nĠMatthew s\nUR AL\nâĢľ ,\nSum mer\nf os\n_CONT AINER\n_A CK\nĠfil tr\n_dis p\n_ Re\nĠfac ile\nÐ° ÑĪ\nĠìķ Ĭ\nĠe ben\nĠspr ink\nĠQ uint\n> V\nĠhistor ians\nour met\nĠMonitor ing\nled ger\nc ott\nĠw are\nGG LE\nc ars\nĠM EDIATEK\nĠvol upt\n_ View\nHE L\n(c opy\n(st ats\nĠchrom osome\nĠCurt is\n- conf\n( asset\nĠhv or\nFile System\n< >();čĊ\noc oder\nĠC annon\n) x\nĠSm ooth\nĠS AS\n_ ce\nĉ prev\n_m ovie\nE c\n_w all\n< Button\nĠF AST\nĠon View\nul an\nĠS UPPORT\nĠgesch ichten\nĠS ons\nIm m\n$ IFn\nĠfair ness\nĠd pi\nats u\nJ osh\nEqual ity\nĠ} ()Ċ\n_ less\nĠR atio\nĠC ats\nĠS tern\nMon ster\nĠmer cury\nÃ¼ hr\nĠplus ieurs\n.des erialize\nsc opy\n.F alse\n) animated\nĠExp erts\nĠ\"\") {Ċ\n.W hen\nsee also\n.un pack\nLE M\n.select All\nĠperception s\nud ing\nir ling\nĠPrint ing\ngram s\nĠFile Stream\nerv ille\nil og\nic mp\n_C ount\nĠlivest ock\n- ca\ndoc uments\nĠpo les\nĉw ant\nĠflu ores\nĠstand point\nĠH uge\nĠradi ans\nĠUIB ar\nEDI UM\nĠHistor ic\n_h older\nĠMar ines\nĠt Ã¤\n.L ight\nquir er\nason ry\ndiv ider\nĠFl utter\n_f b\nrestrict ed\nĠEvery body\nN Ã£o\nĠkn ot\nĠT witch\nĠhall way\n(C ollider\nInput Element\n? )Ċ\n/ off\n/ )\nplay ed\n[ OF\nĠbat ting\n_d l\nĠcom edian\nĠÃ© v\nĠD EM\nĠEd en\n: white\n' ',\nCon struction\nacer b\nĠtask ed\n.man age\nRel ationship\nĠph on\nn z\n_B GR\nValidate AntiForgeryToken\n_ air\nâĢľ When\nĠgl fw\nĠCon versation\n_T OTAL\n, Z\nĠg raz\nĠiter able\nĠP ASS\nĠadvert ise\nĠmÃ¶ glich\n/ train\nĠVolk swagen\nĠcreep y\nĠ\" )čĊ\nQU ENCE\nĠalt ar\nĠed its\ncomp iled\naw ning\nĠD ungeon\nĠo sg\nNavigation Bar\nĠtrend ing\nĠE co\nogg les\ncd ot\n| -\nS ie\nec ret\nĠN egative\nĠL ing\nĠD IM\nĠC WE\nĠCar rier\nĠcar tridge\n_us b\n= os\nĠJack ie\nĠo tras\nĠcommod ities\nĠP resentation\n)&& (\nĠMar tha\nĠCath olics\nĠM ond\nÐ¾Ð± Ñĭ\n_ absolute\nĠash amed\npons ors\nt al\nĠsad ness\nĠpu Ã²\nF ade\n-pre view\nĠRequest s\nĠCal vin\nh orn\nReuse Identifier\n(pro vider\n/app s\nime o\nĉ Class\nS amsung\nĠW ORLD\nĠc innamon\ndot env\nĠI User\nĠDE V\n_C har\n.ib atis\net i\n/ me\ns st\n.s ym\nĠRug by\n-m aster\naj ar\nĠY EAR\nĠo dp\nĠR oles\nĠbip artisan\nail le\nĠblock er\nĠgre ens\n.SE CONDS\nĠbelie vers\nĠL ikes\nF LOAT\nĠm ak\nĠg cc\nâķĲ âķĲ\n(\" ~/\nSCRIPT OR\nĠton nes\nĠS ang\nĠtrans pose\nenn ai\nP red\nĠsoll te\n.github usercontent\n( print\nĠH ole\nçľ ĭ\nad get\nĠprompt s\nĠgen etically\nĠH od\nĠvert ically\n_control s\nÑģÑĤ Ð°Ð½\n\") {čĊ\n$ title\nĠ} ),ĊĊ\nĠstate wide\nĠCor respond\nĠAt tr\nit ant\nElement Type\nĠout ward\nĠfam ilia\n( article\nĠbl at\nÂł Ċ\nĠgl Get\nĠRe ceiver\nĠ% -\nad am\nW inner\nĠtail or\n_p wd\nert en\nSt an\nĉ all\nal ive\nstrt otime\nï¿½ s\ns essions\n$ conn\nass ist\nĠchat ting\nĠM ant\nĠ% @\nĠ\"\" );ĊĊ\nĠd gv\nĠíķ ¨\n.re peat\n_M essage\nĠadvis ers\n/ path\nĠk es\n) }</\nM isc\nĠb son\nĠtrim med\nĠA ck\nVertex Attrib\nç´ ¢\nu ates\n.m ysql\nĠdest in\nĠpro bl\n( Constant\nass es\n- images\n_A REA\n__ */\n[] (\nĠsign In\nÄ ĳ\nx r\nah ir\n.fire store\nĠsequ ential\nĠIde a\n-b asic\n_p ag\nĠinst agram\not ron\n_al ignment\n\\\\ \\\\\n.F actory\n.r ule\n.ch dir\nĠlib ro\n(game Object\n.ToolStrip Button\nĠdisc overs\n.Arg s\nd ob\nĠv n\nâĨ Ĵ\nĠd Ã¼\nĠX M\nĠalum ni\nĠh one\nĠsecure ly\n_d ropdown\nDis claimer\nĠd zi\n(t imestamp\n') ]\nĠcultiv ation\n...ĊĊ Ċ\nĠTreat y\nĠD iss\nĠconflic ting\n.get Selection\nĠplay able\nĠSil k\nĠE quality\nĠm oy\nĠfl att\nĠmot ives\nPer fect\n.ex ist\nĠt weak\nĠo mit\nĠTw ilight\nĠk issing\nĠchrist ian\n( SE\n_ define\nĠP eng\nSort ed\n' in\nLog s\ná»ĩ n\nĠn ylon\nD ump\nIm agine\nre name\nĠbefore hand\npy game\nĠb py\nĠD j\nĠtit ulo\nĠn ltk\nĠSch midt\nĠC av\n( one\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠ\n.get Model\nĠP t\nato i\n.loc als\nburse ment\nPro vince\nĠAppro ved\n() <<\nÃ³ ria\nus ch\nĠJ enny\narr ants\nĠLib ert\nL ord\nĠRem oved\n_code c\n.b undle\nĠGonz alez\nop ers\nĿå§ĭ åĮĸ\net ting\nĠgod dess\nri pe\nĠmus cular\nĉĉĉĉĉĉĉĉ Ġ\nĠH ugo\nĠmej ores\nlo id\nrit eln\ng is\nadd on\nĠ( (((\nappoint ment\nres erved\nĉf riend\n_ avatar\nBO OLE\nah i\n- END\nĠif f\nÃ³ b\nĠBr uno\nrows able\nĠPo ison\n(f lags\nurt les\nĠAn ime\nĠmigr ant\nĉstr cat\n(re ply\nĠRef uge\nĠB W\nef ul\n$ value\nf ed\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nèµ Ħ\n(c m\nĠvulner abilities\nĠ[ ('\nĠunbelie vable\nstr iction\nenti eth\nĠpr aying\nCl aims\nĠka ufen\nn Ã©\nĠpoison ing\nc ollections\nĠinit State\nĠSe verity\nĠcontent ion\nĠĊ ĉĊ\n.cont rollers\nstruct ured\nict im\nĠO ber\nĠ/* #__\n_ OT\nĠAmeric as\nĠAd a\nPro duto\n.m ulti\nĠg rape\nb eg\næŁ¥ è¯¢\nĠqu artz\nĠRom ance\nĠMid west\nĠhous ed\nĠfurn ish\nic ont\n.un shift\not re\nĠÃº n\nip ple\nĠsub urb\nual i\nV oice\n.Is Any\n, column\nĠPro sec\nID A\nĉ post\npt oms\nv Ã©\nĠIng redients\nÃ¶ ff\n. operator\nĠ<< =\nlast ic\nĠre semble\nUn authorized\nĠtut to\n_SW ITCH\n_READ Y\n} =\nnow ledge\nĠapp ended\nung an\nâĢĻ en\nĠL oren\np ublisher\nĠM G\n} ,\"\nĠWal sh\nTem plates\n_s ocial\nĠpar ish\nĠS pl\nmin ated\n(F ALSE\nĠfore front\nmod ity\nĠbil ateral\nĠcompet it\nĠc andles\n.d p\nĠcollect s\ntele fono\nĠatt ent\nĠL emon\niz ada\nĠtherap ies\nĠpar adox\nĠt as\n-sub mit\nek er\nINavigation Controller\nĠmet avar\nĠsew ing\nĠZ imbabwe\nĠlaw ful\nĠl ore\nĠLoad s\nĠÑģ Ð¾Ð·Ð´\n.p romise\nĠF aces\n.Pl atform\n.get Location\nĠtrou bling\nĠvÃŃde o\nĠFe aturing\näº §\nq ed\nĠon Bind\nĠtodd ler\nC lo\nDiv ision\n-g allery\nĠG eld\nspec ific\nField Name\n_ex cel\n\\ htdocs\nĠD V\nĠ& :\nĠtw ig\nĠCon cern\nĠshot gun\nĠnick el\nĠLux ury\n_KEY S\n.n py\nÅ ¯\nĠfore head\nÎ ²\nĠendanger ed\n/ the\np ipeline\nÅ ±\nne o\nExp lore\nSpec Warn\nĠinter change\n(p i\nb irthday\nData Row\nĠS PR\nĠo ste\nĠ\" ~\natisf action\nN H\nord o\n-f ocused\n' A\nĸ ī\n.b est\nĠSpec ification\n/> .ĊĊ\nogen esis\nĠOPTION S\nupt ools\nĠmilit ant\nĠex ited\nig ar\nĠCOM M\nĠDis posable\nay cast\nĠrow span\nĠsyn thes\nĠsond ern\nĠ<!-- <\nĠEnd e\n. variables\nĠconsequ ently\ns dk\nSup ply\nres ponsive\nOpen ing\nph ot\nĠ} \\\nĠbull shit\nĠbe acon\n_s at\nĠsn aps\nĠG Hz\nL ONG\n<p air\nĠ[ ĊĊ\nĠV erg\nĠE ine\n/ posts\nĠar ab\nĠsum a\nãĥ³ ãĥĪ\nĠsc arc\nĠole h\nĠ? ??\nĠOff ers\nx ed\nĠfull Width\n- actions\nOut er\nĠEx po\nÃ©r er\n. He\nD H\nĠh il\nĠMill enn\nÐµÐ½ ÑĮ\nI ce\n_ gray\nĠÐ¿Ð¾Ð» ÑĥÑĩ\nĠP unk\nĠtime val\nĠis a\nĠCH tml\n.Data PropertyName\nĠdi y\nt our\nĠj TextField\nĠj elly\nĠak ka\n- era\nDep recated\n_IM PL\nĠMon ths\n_ ITER\nĠar te\nĠHe ading\nĠB oh\nĠpr ag\nĠdown stream\nĠBO ARD\n_key words\nĠMetro Framework\n)- (\n< Event\náº¥ t\nĠP recision\nĠM RI\nher ence\nix o\n)) ){Ċ\n() ?>\nĠsa at\nĠW arehouse\n_at omic\nĠvo iced\nItem Click\nĠĠĠĠĠĠ ĉ\n.Result Set\n/ plugin\nĠh alls\n= form\nĠW agner\nemail s\n%% Ċ\nUN KNOWN\nĠR im\nuint ptr\nĠLib erals\nĠterritor ial\nĠMur der\nĠL aden\nĠpresident e\n(c ap\nĠ}, {Ċ\navour ite\nfind All\nĠappl aud\nĠë© Ķ\n/ photo\n_s yn\n.w alk\nĠsun shine\nĠstub born\nĠdown side\nĠL TE\n-build ing\nQuery Builder\n_dis abled\nT err\nak ra\nRefresh ing\n_pro bs\nĠf oll\n> b\nĠcoll ateral\n$ error\nĠa compan\n_ iv\n+ d\naj u\nĠâ Ŀ\ns urname\n. article\nĠb icy\n\": ĊĊ\n><? =$\nÐº Ð»ÑİÑĩ\nec ome\nF inding\n(p d\nĠrect angular\nest o\nih il\n=' ')Ċ\nĠm ansion\n_filter ed\nan ed\nPRO DUCT\nLOG Y\n_ ir\n.Rem ote\nĠexec utes\notechn ology\nĠPRO CESS\nĠrow Index\nget X\nM ut\nins ky\n(str ings\nĠMo z\nF loor\n.Str uct\n_pred iction\nĠcar riage\nĠcollect ors\nĠWhe els\nĠbund led\nax ed\nk ol\n_c rop\nĠblo om\nBes ides\nĠover ridden\nĠsub net\nien ia\n* >::\nĠPr imitive\nĠæ ł\n.Char acter\nè¡¨ ç¤º\nĠAD HD\nRO Y\nJ apanese\nO US\n:UIControl Event\nĠP AL\niz acion\nĠcher che\nort ing\nĠorg as\n.U tc\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n\\ Domain\nOR A\nĠterr ace\nĠpr is\nĉĉĉĉĉĉĉĉĉ Ċ\nĠra ids\n_in crement\nĠun just\n$ options\non Change\nB lood\nF ilm\nĠhand ing\nĠm ug\nSO LE\nãĥ ķ\nicon ductor\nĠIslam ist\nĠ\"\" );čĊ\n- overlay\n, col\né ľ\narr ings\n_con tract\nĉ ll\np ip\n_embed ding\nĠperm ite\nĠmod em\nĠtrigger ing\n(h wnd\n. \")]Ċ\nĠs ant\nĠext inction\nĠcl ashes\n.A udio\nĠsu o\n.m ult\nĠseason ed\n. VarChar\npower ed\n\" context\nĠm enc\n(G raphics\n$ where\nĠrec uper\nack le\nĠnew Data\nĠBreak ing\nerg ed\nĠCPP UNIT\nĠM ull\nĠkom mt\nĠLe eds\n',' =\n.next Token\nĠR ig\nRE TURN\nĉt imer\n} _{\nĠMar ina\nĠslog an\nIZ ED\nOpen GL\n_P age\nativ as\nĠhaz ards\n' value\nĠcorp se\nĠFl owers\n_on line\nd al\nĠColl ision\nÃł ng\nĠf erry\nĠpo ke\nĠTour ism\niner ary\n/ Set\n.E mployee\n> @\n, val\nĠMil f\nave z\nRet ry\n.\" /\nĠround ing\n- placement\nĠc erv\nM ex\nĠMsg Box\n_s ink\nman ia\n_c redit\nGuard ar\nĠvan ity\nĠimm utable\nĠcontamin ated\nÐº Ð°Ð·\nä¸ ²\nach a\nĠh ath\nĠenumer ation\n.get By\náº¿ t\nĠD ao\nobi erno\nĠG ut\n_PI PE\n.ad v\nĠG utenberg\nad h\në ¬¸\nf usc\n.V K\npt a\nĠE MP\n.First Name\nĠreal izes\n.c g\nĠun ite\nPL IT\nĠAbd ul\nĠM ED\nRA INT\nĠquest a\nstd in\nĠcal orie\nĉgl Bind\nĠar ma\nyll and\nOM P\n- q\nĠK hal\nsal ary\nĉ AND\nsg i\n_th an\n-b uilt\nĠ+ /-\nĠn args\n_l aunch\nĠS Q\nz on\nĠB ened\n_un ion\n> ();čĊčĊ\nĠSim s\nĠD ates\nĉ Connection\nĠP erc\ngr ant\namp il\nĠaggreg ation\nese lect\n_S UP\n({ ĊĊ\n. om\nĠw m\n.con tract\n- Origin\nĠg eme\nfree ze\nNUM BER\n.c urr\nĠGl ad\nsl a\nĠRe b\nÐµÑģÑĤÐ² Ð¾\nar bon\n/ controllers\nSl ots\n.deep copy\nF ULL\nu ire\n@ student\nà¹ī à¸Ń\nTrans lator\nĠprefer ably\nchem istry\nĠJac obs\nn ar\nĠ(\" \\\nn ear\nif ique\nĉc olumn\nĠmin utos\nig es\nĠest able\n-d isc\n( Char\nk ov\nex amples\n__ (\"\nĠÐº Ð°Ðº\nĠBor is\n(d x\ns pr\nĠover haul\nato on\nĠHar ley\nic amente\nâĸĪâĸĪ âĸĪâĸĪ\nev ity\nush er\n.Visual Studio\nW ave\nĠNorm ally\nst ood\norn ings\nĠhand made\n(log ging\nĠcar cin\nac ja\nĠsup ers\nĠsie ge\nĉ If\nĠI Logger\nU ART\nAnimation Frame\nĠt apes\nĠa ids\nĠColon el\nve edor\nĠm dl\nph on\nDis miss\nAv ailability\nUniform Location\nĠide als\nqu ette\nke iten\nĠE MAIL\nĠN eb\nĠsummon ed\nĠgovernment al\nĠHor ror\nch anging\nĠAct ivate\nI ll\n< tbody\ncre ative\nĠB LE\nĠmad ness\nOr Nil\nĠh in\nÅ ĵ\n.Get Key\n_con sole\n\" Our\nĠgu int\nĠam i\nĠreflect ive\nĠcr acking\nĠR i\nR AL\nurs ed\np ure\nĠrep aired\nĠt iger\nĠNic olas\nV s\nn th\n.ex pression\nĠse as\n_AC CEPT\nĠfor c\nĠFra u\nĠth resh\nĠÏ Ģ\n(B ASE\n_O pen\nW unused\nĠDom estic\n( priv\ngu ess\n// !Ċ\nget Item\n() )ĊĊĊ\nmut ations\nĠst s\nĠd ementia\nsp oken\n$ params\nĠpat rons\nĠrun way\nĠB UY\n.W arning\nĠneutr ality\nz hou\nÑĢÐ° Ñī\nak ter\nĠConstruct ors\nÃĵ N\nĠProgress ive\nĠBur ger\nĠinc urred\nĠimplicit ly\n_en vironment\nĠex acerb\nĠend uring\ns ic\nĠPart icipants\n_B lock\nĠen roll\n_ employee\nĠPe pper\nla ughter\nãĥ ĸ\n']; ?>\n=' .\n(re name\nĠsh elters\nĠA MA\n_g ap\nĠRE UTERS\nx ampp\nOM IC\nĠped ido\nĠdÃ© velop\n__( /*!\n_ od\nw ere\n_N umber\n_multi plier\nKE EP\nĠshow ers\nĠm age\nĠs ino\nc row\n.id x\n_not ice\nue il\nĠmy riad\nĠAv ailability\ncent ral\nĠAB OUT\nĠincorpor ating\nĠ---------------------------------------------------------------------------- -Ċ\n_widget s\nĠsystem FontOfSize\nÃ¶ rt\n/j peg\nĠSM TP\n(b rowser\ng uns\nset w\n_AV AILABLE\nĠincorpor ates\n/ android\ny x\nå¸ ĥ\n_l ab\nĠle aking\nĠH int\nÃ¼n chen\n.S cale\nĠfire works\nĠl Param\nbs d\nax on\n(p redict\nCong ratulations\nĠSpect rum\nIR C\nĠAdministr ative\nĠimprison ed\nR Spec\nĠret ains\nĠsett ling\nĠcit ations\nĠWorld s\nstr conv\nous and\nĠBegin ning\nĠAndrew s\nĠSh aron\nExec uting\ngroup Id\nadd Field\nĠexp ands\nĠkilomet res\nlink y\nĠgr p\nIN ATION\nBrit ish\nĠcom port\n.DataGridView Column\nĠProdu ctions\nild en\nĠun ix\n_g allery\n_PRO VID\norder ing\n_ ann\nb h\n.D esign\nĠtre ffen\nĠunder line\n_num s\níķľ ëĭ¤\n) v\nus ize\nĠdisap pearance\nTo Bounds\nĠp cl\nĠWinn ipeg\nĠSh erman\n_l ambda\nn ant\nĠroot View\n.F lags\nĠcensor ship\ns entence\n.read Int\n_ass ignment\nĠvers chied\nĠF raction\nĠnational ist\nĠj uego\nĠDe aler\nĠpredict ing\nau pt\nh elm\n_PR ICE\n_D S\n(\"# {\nl ifting\nĠpos ing\nĠNSMutable Dictionary\nĠsm ash\nĠa kin\nĠcamp uses\nĠOut line\nĠEl astic\n_Checked Changed\n(I Enumerable\ns queeze\npt une\n_FR ONT\nm h\nĠìĥĿ ìĦ±\nRun With\nĠturn out\ns iblings\n) e\n_ARG UMENT\nĠGrid BagConstraints\n_PO OL\n.R IGHT\nigg ins\ntele phone\n\\ Extension\nĠAr ist\nit ur\nĠfri es\n_d up\nExp anded\n- ro\nĠWorld wide\nĠC ork\nÃ³ l\nL im\nĠd enn\nP retty\nĠf y\nTri angle\nFeature d\n( Common\n_e ff\nĠ\"\" čĊ\ná»Ľ i\n_LINE AR\nĠR ica\nĠcaf Ã©\nĠapp ell\nĠn iveau\nĠ& ,\nĠfab rics\n_P layer\nĠhy giene\nĠdisastr ous\nĠshared Instance\n_p itch\nr z\nen ment\nN ear\n_STAT S\nĠst ain\nĠD NC\nĠiss u\n^ K\nĉt ree\n_bl k\nse z\nl ain\nam u\n_ owned\nUS ART\n.has Class\nIS ON\nĠf oe\nush ed\n_UNS IGNED\nĠindex ing\nĠFirebase Auth\nĠliter acy\nĠS UR\nĠCol ts\nbec ue\nĠInt ro\nĠcha otic\nĠan i\nĠAnn ie\nÆ°á» Ŀ\n.d x\ndis connect\nĠarch ived\n[ List\n= N\n.p resentation\nRest aurant\nĠrock ets\n= https\n/ op\nĠpur se\nĠK ris\nĠcor al\nset Parameter\nĠir rig\nQue en\nNS Data\nĠvast ly\n.F iles\nĠfemin ism\n( Stream\nĠa trib\nĠliquid ity\n< File\ntr ag\n[ contains\nĠh indi\nĉc p\nhome page\nĠsur pass\nĠday light\nauthor ize\nĠCon sequently\nAsync Result\nĠDi ary\n.P attern\n. */Ċ\nens chaft\nĠJud iciary\nAd ult\n(& :\nĠje opard\nĠBl izzard\nĠg g\n\"; //\nX HR\nĠpass wd\n> }\n'), '\nĠcompar ator\n.ch ain\nĠins ured\n_ED GE\nĠt ylko\n_M AJOR\nw av\n\\ File\nEn tr\n' app\nĠforg iveness\nĉd st\n\": -\n.m on\nĠ( ĊĊ\nĠcap ita\nĠinit Components\nĠs words\nĠOutput Stream\nĠhe ars\nĠSP ACE\n-ins pired\n_ boot\n.n one\n.get InputStream\nĠdev ise\nĠped iatric\nans i\n_part ial\nĠsh ard\nĠfur ious\nĠdraw able\n% ).\n( em\nĠB ake\nĉp error\nĠRel igious\n- \"+\nĉĉĉ ĠĠĠĠĠĠĠĠĠĠĠ\nĠSecret s\n(n ormal\nAC ES\nĠStock holm\n-n ormal\nĠacc ustomed\nĠbout ique\nĠSw ing\nĠf im\nĠP U\n.S ocket\nĠ'\" '\nan j\nMan ual\nĠmuj er\nĠphys iological\ncont ain\nM erge\nĠsu as\nĠ' {\"\nn ego\nĠsubscri bed\nto ast\n_VER BOSE\nĠkn it\nĠArt ists\nĠheart beat\nĠfirefight ers\nss a\n[ {\nĠunders core\nĠhist ories\nigm oid\nField Value\nTo Add\n.C o\nĠHar old\nA void\nighb ours\nor de\nĠtruth s\n/ al\nĠw ired\nĠIt alia\nĠserv icios\nĠA UDIO\nĠ' \"+\nĠpump ing\nĠC lement\nÃĥ O\nåİ Ł\n> n\nĠstr Sql\nj dbc\nâ ģ\nĉ SET\nĠB UFFER\n:// \"\nĠcircum stance\nUITableView Cell\n. vertical\nĠJohn s\ntol ist\nĠdriv eway\nĠlearn ers\nto ber\nw inner\n-y our\n.st ates\nH M\nĠgr adients\nĠseiz ure\nĠm ater\nĠdet al\nĠRed uce\n(m ouse\nĠRe Sharper\n-r outing\nĠØ ´\nĠjoint ly\nĠF amil\n< Message\nexp ire\n_tr ade\nâĢ¦ ..\nĠFUNCTION S\nĠx en\nĠ{} ;\nF ab\nĠfe ast\n(D b\nFirst Responder\nÄ± lÄ±\nĠmax Value\nĠ- :\napt ic\n.G son\nĠR over\n_c n\nl oud\nĠcham bers\nĠÐ· Ð°Ð´\n.f oreach\n.get Email\nç Ł¥\n.N odes\nĠV W\nĠWait ing\n(Qt Core\nĠsÃ³ lo\nr q\nangu ard\nĠre sembles\n:[ [\nĠg ed\n_E P\n( Activity\nĠIs n\nĠCrush ers\n_RUN TIME\nĉ open\nĠHigh lights\nÃ© ration\nĠy elling\nĠL IGHT\nPh ot\nven ge\nĠSus p\nĠCh r\n.D istance\nars imp\nlic as\n.M on\nĠsuck ed\nprint ed\nm ute\nĠset Error\n. Option\nĠimpair ment\nno ise\nĠpartner ed\nÃ į\nd ens\nic z\nĠwait For\nĠover looking\nĠFORM AT\nĠT String\nĠrent ing\nĉ component\n.F ree\nĠLaunch er\n= date\nĠPod s\nAG MENT\nC odigo\nBit Fields\nĠub iqu\n-car ousel\nĠSim ulator\nin ode\n'] ){Ċ\nĠBag hd\nĠnorth west\nht aking\n< &\nĠtr am\nĠforward ed\nĠerror Msg\n_ASS IGN\nĠEnt ities\n.P art\nreat ure\n(U ri\nĠDr iving\nĠinv asive\nigration Builder\nosa urs\nĉ port\nĠbr an\nitt ings\nDo or\nĠ{ %\n(l imit\nĠsqu ared\nĠDIS PLAY\n.Ac cept\n.base Url\n. Enter\nĠ... )Ċ\nĠow l\nĠsl ated\n.f echa\n_SE G\n={ $\nĠON LINE\nON Y\nĠÐ´Ð°Ð½Ð½Ñĭ Ñħ\nont e\n_CL ICK\nS a\nImport ant\nĠcar ousel\nĠappe aled\nĠN ie\n/ book\n[] >(\nĠx max\nĠl ange\n.Sup press\nĠTh inking\nAddress es\nĠS ally\n-T V\nĠChar leston\n) \"ĊĊ\nĠt ally\nĠ ull\nĠloc ales\new an\nĠincrement al\nëĲ ľ\nĠcare t\nj ure\nĠd or\nĠlocal ization\nĠsea food\nĠRub ber\n.Th ere\nĠF ishing\nYY Y\nm age\nĠFlex ible\nĠGENER AL\nek a\nĠthr iving\nĠs is\nĠbour geois\nF ake\n, \\\"\nĠÐ¾ Ð´\nC OR\n-effect ive\nĠsk u\ned ly\n## ĊĊ\nĠH olly\nĠFL ASH\n/ TR\n.n s\npro be\ng ift\now itz\n- navbar\nĠs ack\nçº §\nĠTh reat\nZ A\nX M\n'), ĊĊ\nĠLL VM\nas z\nEd ited\nWith String\nSil ver\nyn a\n_render er\nĉ DEBUG\n( operation\nĠSl ots\nĠAub urn\nx ec\nĠhomosex uality\n.Rest Controller\ners ive\nĠprof il\nĠMy anmar\nros se\n_IRQ n\nĠsend Message\nĠtechn icians\nĠman e\ncommon s\nĠsh redd\nBo ost\nĠsympath etic\n-e ff\nĠCertain ly\nĠw Ã¤h\nĠRoch ester\nucc i\nur m\nemp or\nĠ\"\" :Ċ\n-sp acing\nĠsix ty\nĠâľ ĵ\n_report ing\nW il\noy o\nĠdid Select\n.get Long\n.set Error\n_ nc\nĠD ong\nĉ async\nĠHigh ly\n] :čĊ\nLe aks\n, ...Ċ\nvalu ator\ndict ions\nox el\nĠgest ures\n=\" ?\nb ags\nĠRel ief\nsubset eq\n(n amespace\n} |\nĠmicro bi\nĠpur ity\nch io\n} ?\n_M UT\n_ activation\nĠP irates\nĠ% #\nific aciÃ³n\nå ĭ\nĠN RA\nÃ§ on\n}) ();Ċ\nĠChe ster\nâĢĵ âĢĵ\nget Connection\n. arguments\nFetch ing\nĠF ry\nĠD it\nĠz ich\np ast\n- library\nĠHay es\nĠb ounty\nĠSpring field\nP OR\nĠA PR\nĠEmb assy\nQUEST ION\nĠSold ier\nert as\nĠN ORMAL\nĠd us\nb olt\nĠd ort\nĠL ift\nĠget Random\n.Run With\n, ),Ċ\nĠvar argin\nĠhandle Click\n\\ Html\nĠhom mes\nc idade\n( ep\nJ a\n/d ialog\n.r ate\nĠWe i\nfull screen\nĠN Unit\n.me asure\nV als\nĠS igned\nĠr us\nĠra ft\nĠBl onde\nĠn ets\nĠMet ric\nich TextBox\nĠ ure\nĠinter racial\nĠ' }Ċ\n(st orage\nInt egration\nĠban co\nAS Y\nĠj int\nĠde gradation\nĠH AND\nuer do\n=' '\nĠstro kes\nrew rite\n( Set\nĠMat Dialog\nĠd ossier\nĉ and\nADD ING\nĠmut ually\nĠpreced ed\n} };Ċ\nĠsub type\nĠres olving\nĠge ometric\n[ column\nĠC TRL\nĠH L\nĠd ah\nĠ( ;;\nR ails\nÃ ľ\nĠGener ates\n- Length\nped o\nogen ous\nĠRobert son\n. Bool\nod ers\n_AG ENT\npass wd\nĠN odes\n.b i\nĠW B\nĠpro phet\nsl ave\nĠå ¼\nĠwe il\n% </\nĠcar bs\næ° ´\nĠexpress ly\n\\x d\n- eyed\nĠCreat ure\ncont ained\n(S IG\nĠEnh ancement\nĠC ors\nG al\n_S IGNAL\nre interpret\nĠQ PushButton\n_N one\nĠgen ocide\nĠSe al\nä¸Ĭ ä¼ł\n( per\nÐ»ÑĮ ÑĤ\nĠÃł s\n.T emplate\nĠ) čĊčĊ\n.single ton\nĉs leep\nĠspawn ed\nĠposs essions\nget Config\nĠt ai\nl ude\nĠM eter\nĠbib lical\nmarsh aller\n.Tool kit\nĠLes bian\n.sm art\nĠboyc ott\nĠf ry\n-d esc\n_S ervice\nĠmach t\nĠC airo\nÃł i\n_pre vious\n.trans port\nMed ical\nCG Point\nQU ARE\nĠbright er\nĠcheck Box\nĠF OUND\n.br anch\nĠbl ah\nĠPrel ude\nOff line\nList ing\n/** /*.\nĠJ R\nph ants\nget Y\n.Find Control\n\" ...\nÐº Ðµ\nH RESULT\nĠcheck list\n( ast\nĠborrow ing\nâĢ¦ and\nĠÐ Ĺ\nĠproc urement\n-t ask\n_h al\nPlay list\n.st ar\n_SUPPORT ED\nAS M\n% A\nrest rial\nĠÐ¸ ÑģÐ¿\nĠp ager\nĠDi abetes\nĠMah ar\nt an\nAct ually\n> //\nĠX V\nà§ į\nĠse ja\n.vis ual\nk ker\n];ĊĊ Ċ\nĠtype Name\n.B ut\nClient Rect\nical s\nĠD jango\nĠR ape\nĠpay day\n(res ources\n.b iz\nto i\n(R untime\nĠDynam ics\nĠInvalid OperationException\n(t ypes\nĠT abs\n.Middle Left\nx ab\nĠ_ (\nĠDream s\n_G roup\n(c or\nLe ader\nĠgrad ual\n(B igDecimal\nĠtext area\nlet ion\nĠFin ished\nĠP ole\nĠt apping\n& (\nĠfl irt\nĠterr ified\nĠp ady\nere g\neld om\nĠstation ary\nĠp ony\nĠREG ISTER\n_ac cel\nĠHer z\nĠmat riz\nĠC af\nx ac\nasc us\nĠen large\nACH ED\nyy val\nĠs ic\nĠCan al\n: v\n= ?,\nĠImpro vement\n? }\",\nNS Object\nĠesc aping\nĠNull able\nĠh Ã¤\nw ant\nElim inar\nĠCLL ocation\nĠreuse Identifier\nBuffer Size\nÃŁ er\nĠAsk ed\n'] ],Ċ\nĠsh ields\ngr and\nĠTown ship\nĠPub Med\nect l\nf ive\nĠReactive FormsModule\nĠGL enum\nD ar\nif ace\n-ind ent\nForm ula\n.s napshot\nCOMP ARE\nĠbel ts\nĉc ache\nld ata\nĠed ad\nĠBO X\n(c art\n_L AYOUT\nĠf flush\nĠL OS\nĠS orted\n.s lide\nĠt ijd\nĠTex ans\nĠP urch\nĠLevel s\nĠsem antics\nĠTeh ran\nb mp\n.url encoded\n_x label\n(g ulp\nĠButton s\nĠBro ker\nçĽĳ åĲ¬\n$ email\nÙ Ĳ\nĠclass ics\ncom pose\n( bs\nĠun healthy\nEx ercise\ncre ts\nĠP ars\nĠDetermin es\naf ort\n( obs\nĠn ast\nĠih ren\nĠro yalty\nserial izer\nie ux\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nexec ution\nĠview Controller\nĠre pro\n. pe\nĠcapital ize\nåĩ »\nĠtun nels\n.D ATA\npir it\nC ollections\n) }}\nĠO D\nĠf uzzy\nIm mediate\nl j\n; ?>\"\n[ var\nĠvol atility\nreg lo\nĠprolifer ation\nĠor acle\nĠC v\nĠnun ca\nPRINT F\nĠbreak point\n. EN\nĠbest en\nĠrebell ion\nPa used\nĠfl own\nĠvic inity\nw right\n, cp\nisc ing\nouch ers\nA sh\ny ar\nĠE j\nrepresent ed\nod ic\n.c ross\nĠcre ations\nĠP ablo\nf est\nĠH ilton\nReport er\nĠD il\nilen ames\nĠexpend itures\n_EDIT OR\nĠA rial\nĠpl ung\nĠunn amed\nOr Else\nĠre create\nĠHe arts\n> alert\n.get Password\nĠMust ang\nV K\nĠaccomplish ments\nApp ending\nĠC ay\nĠUser Model\nĠsubs ystem\nLeg al\nynchron ize\n_PER MISSION\nĠAp artment\nl ige\nĠaffili ation\n( DEBUG\nT s\nĠColor ing\nĠW ohn\nn ice\n(list a\nà ±\nploy ment\nãģ¾ ãģŁ\nå¥ ½\nsub st\n'] ]['\nab ol\n=' _\nà§į à¦\norph ism\n.l iteral\nĠPl ug\nĠm w\nom al\nĠ\"' \",\nus i\nĠsigh ed\nicult ural\n.* ,\nĠPro stit\n( console\nIP LE\nĠTr ap\nX R\nĠEditor GUILayout\n_v ocab\nĠin compatible\nĠun constitutional\n-l a\nĠerot ique\nĠde puties\nquis itions\nnew Value\nad ia\nĠh wnd\ng ings\nĠV as\nĠIn crement\nĠFl int\namb ia\n_P oint\n-d isplay\nĠFun ny\n.to ast\n.d ark\nBind ings\nĠdes criptive\nare nd\n.R et\nĠrecurs ively\nĠM k\nĠT ILE\n.create TextNode\nĠR AW\nĠinfl ux\nçī ©\nT ok\n- board\nRec ording\nSt rength\nĠrain fall\n( dd\n.f xml\nn ets\n.Im aging\nĠB IOS\n] +\"\nO E\nĠresid ency\nZ E\nW B\n.s pan\n_def ined\nB OT\n> null\nform Data\nCppMethod Initialized\n_US ERS\nĠNov el\nins ki\n>{ @\net to\nn atural\nĠStr ict\n: w\n.s afe\nĠtow els\náºŃ t\n.g sub\në £\nin qu\nĠa ides\nĠin com\nget ter\nĠwas her\nact ories\nĠget ters\nm ite\n_s ources\nĠharm less\nĠun os\npreh ensive\nĠn odo\nĠge ographical\nĠSelect List\n.S cript\n.En ums\nĠEN TER\nw ald\nĠBar on\nĠpartic ul\n.current Page\n@ Transactional\n[ line\nĉd es\nJ ason\n.get Count\nĠPenn y\nĠP ayload\nsh arp\n[ right\nvent a\nĠa pl\nĠprodu its\nĠo tt\nTr acks\n.And roid\nĠsil icone\nĠEL SE\nanim ations\nulture Info\nĠblue print\nof stream\nĠ[] []\nĠS erve\nĠtr ig\nĉs ervice\nĠStr at\nĠSav age\nĠob js\nĠNot ifications\n, pos\nTh ing\nĠR BI\nop athy\nĠna ughty\nl bs\nep rom\n> \".\nĠpione er\nĠj apanese\nA ud\nĠal ley\nĠPets c\n'] ?>\nĠK iller\n.get AbsolutePath\n_c aps\nÅ «\nĠsubstr ate\n.assert In\nìķ Ħ\nĠthy roid\nĠDel uxe\nĠfactor ial\nĠpress es\nĠAcc om\n= open\n.get S\nĠexpl orer\nĠres ides\nAssoci ated\nĠtransform ations\nT u\nĠRich ards\n_b irth\n= #{\n-s pe\n( nd\nĠvisual s\n_st amp\nĠterminal s\nr outine\n** */Ċ\nĠJ ab\nK L\nCon trib\nĠsouth west\nĠP ep\nĉ entity\nĠlin er\n.Status OK\nĠSch ul\n(C L\nĠm ijn\nast os\n_d igest\nĠpersist ed\n- contact\nĠod or\nĠdiscover ies\n_F IELDS\nF ly\nĠr z\nĠList a\nRes erved\ntax onomy\n) section\n/ \")Ċ\n/ request\nĠsom eday\nc ities\n/f ire\nĠobj ections\nĉ DECLARE\n.navigation Item\n.set default\nreturn Value\nUC CEEDED\nĠoblig ed\nĠQ aeda\nĠh yster\nest hes\ndist inct\nÃł y\nĠCom bo\nĉs f\nĠâ Ĭ\nĠdiscre pan\nĠins ign\nĠRESULT S\nĠValidation Error\nĠHttpResponse Redirect\nĉQ String\nĠautof ocus\nD ur\nĠRE LEASE\n-d ollar\n.Com mit\nĠkh Ã´ng\nĠla under\n. =\"\nĠæĸ ĩ\nĠby e\n.Get KeyDown\nĠg io\n_s id\nĠg ql\n.c m\n_S LOT\n.Get Instance\nre use\n.sh utdown\nĠjer seys\n_M P\npat ibility\nĠè®¾ ç½®\nĠrepl acements\nĠpreced ence\nĠbuffer ed\n.b s\n_G REEN\nbr ain\nÃ¡ ch\nav ailability\nĠE TF\nĠf ret\nist ine\nĠlift s\nEx isting\nĠstere otypes\nĠem pt\nm ongo\n.tr aining\nal ist\n.Is Enabled\nĠ\" !\n<? Ċ\nuid o\nĠint Value\n.el asticsearch\nLOG IN\nĠreli ance\nĠview Type\nĠdim inished\nS arah\nĠAppro ach\n_W EB\nĠdr m\nĠcolumn ist\nMark up\nĠaqu ÃŃ\nĠD iane\nĠc w\nĠT ick\n.ob serve\nIR ON\nIn Background\nĠeb ony\nĠCour tesy\n: null\n****** */ĊĊ\n/ resource\nIter ation\ndefault Value\natt ention\nĠÑĢÐ°Ð ±Ð¾ÑĤ\nĠwa iver\nĠprodu it\nĠGrad ient\nĠpercent ages\nĠS AL\nĠM d\n(s napshot\nĉ io\nik ers\nWeb pack\nĠset Password\nĠdefe ating\nĠJ eg\nel apsed\nhold s\n_sh adow\nĠoff ended\nĠP ant\nĠCall able\n_IN FORMATION\nff ee\n( employee\nĠY AML\nposs ibly\nĠmax imal\nell ular\nĠS nyder\ndes criptor\nĠP LEASE\nDlg Item\nĠart illery\n` }Ċ\npos ium\nĠle er\n% c\nĠdis pos\n.m ul\nĠge ography\nĠgraph ical\nĠdr ank\nĠmot ions\nĠr uth\n******************************** ************************\nĠprodu ctions\nĠcreate Time\nĠScript ure\nbb b\nuch s\nä¸į èĥ½\n.B igDecimal\ns izes\n_s olver\n_F rom\n_j oint\nĠpath lib\nĠg ears\nĠÑĦ Ð¾ÑĢÐ¼\nĠconce al\nĠdifferent iate\n< GameObject\nĠj eden\nĠa lo\ng lobals\nerv ative\nĠp add\nĠP ly\n_t y\nĠpresent e\nĠpropri et\n_l s\nĠP unch\nĠCraw ford\nbel ow\nCpp Generic\nĠCONT ROL\nĠo ceans\nĠR OUT\nĠrand int\nĉ addr\nĠHon est\nĠen velop\nĠtra umatic\nĠL AT\nĠt g\nìĬ¤ íĬ¸\nExt ended\nĠun checked\nĠob struct\n_time zone\nP ersistent\nĠl lev\n/**************************************************************************** **Ċ\nĠFl a\n.ph ysics\nĠfor ged\nĠL aur\nĠmon opoly\nĠchrist mas\ng ov\nĠSm oke\n[ df\nĠb ishop\nlocal Object\norr h\nont vangst\nd ry\nĠer fol\n- ce\nĠOrdered Dict\nĠh x\nĠRE SET\nS uc\nĠreck less\nalam at\nBig Integer\nĠbul bs\nĠm ute\næĶ ¾\n.U ltra\nL on\nĠclear Timeout\n<R igidbody\nsw iper\nĠCom es\n\\ db\nĉ mp\nĠrest s\nM oved\nĠL ore\n.D imension\nĠMan it\n.h xx\n==== ===\np itch\nff ield\nsk ills\n_al bum\ntrans lated\nĠX I\nĠve in\nĠDavid son\nĠA uckland\nys sey\nĠauthentic ity\nĠAss ist\nĠcom prise\nCreate Time\nĠt rench\n. week\n-- ;\nĠUIAlert Controller\n_rel ated\nC MS\nrem ely\nĠlex er\nirm ware\nElements By\n-up per\nĠst agn\n---------------------------------------------------------------- ------\n_s napshot\n/XML Schema\n_ Order\nĠann ex\n_EN COD\nĠAl to\nar ious\nD J\nĠabort ions\nCom bat\nĠLic ence\nuggest ed\n[ K\n, ))Ċ\n(' //\n.C an\nse cs\nqu otes\n_ try\nĠS age\nĠM ov\n' on\nreg ist\nĠW rites\nĠD igest\nĉ container\n-pro gress\nĠgo at\n_s cheme\n.Get Child\nĠas ym\n.mybatis plus\natic a\npg sql\n_ assets\n> K\nĠa fin\nN SS\nĠN AV\n('. ',\nĠ` \"\nĠaud itor\n_MO USE\nĠwallet s\nĠm ou\nrun s\neter angan\nĠRes ervation\nĠexperi encia\nĉ process\n- import\n_R eturn\nĠMac ro\nĠPen is\np ixels\nĠset Email\n(M igrationBuilder\n(x s\nĠE ston\nĠB ubble\nAL LOW\nĉh andler\n$ ret\nĠcompliment ary\n-c ity\nĠel los\nĠSOUR CE\nĠAdvis or\nolog ÃŃa\nĠf aded\n.p c\n_RGB A\nAF X\nĠrep ay\nĠFal cons\n_ issue\nomid ou\n.ba omidou\nĠinfring ement\nurn ing\n/st orage\n_qu ant\nĠQt Core\nĠm ell\n_d ensity\nĠK nox\nĠSurv ival\n.get Username\nĠcommercial ly\ngr ass\nĠme is\näº ¿\nĠPer missions\n_QU OTES\niph one\nĠL OT\nĠthr iller\nĠChap el\nĠR is\n> i\n- ID\nĠright ly\nC rypt\nĠI stanbul\nred s\n_res ize\nPop ulation\n(f etch\nĠH OT\n: first\nĠgad gets\nPy Object\nĠmerg ing\ndu ced\nleg ates\nub ectl\n% /\nalle e\nĠzus ammen\n.Prop Types\nast o\n: *\nre ce\nResponse Type\n/ group\nĠbar bar\nĠCarol ine\nour ced\nç» ı\nĠlub ric\nins pection\namm ad\nĉ Image\nĠi err\nĠcurt ains\n_AR B\nĠOr al\nĠall ied\nĠStatus Code\nĠClear ly\nPreferred Size\nqu ina\nĠs pos\nĠoptim ism\nĠcompr ar\nĠl ug\nĠBo om\nconfirm ation\n_D URATION\n_b rowser\nĠrepet ition\nĠke eper\nĠadd To\n( js\n.St at\n.C ond\nĠHern andez\npa que\nĠvolunt arily\nĠj erk\nĠL ey\nĠdocument o\n_de ad\nĠTE CH\nĠin ception\n(\" {}\nĠon Load\nx dd\nĠIS P\nspec ified\nĠë ¬¸\nPRO CESS\n( alert\n.M M\nĠcreate Store\n( unique\n.get Block\nëŀ ĺ\nun os\nĠtro phies\n_h over\nĠD addy\n.M e\nĠC OUR\nO BJ\natem ala\nĠP si\nĠnorm als\nac ier\nĠM BA\nĠp awn\nÏ ħ\nĠspont aneous\nĠaux iliary\nĠinaug ural\nĠfast ing\nĠFile System\nĠz en\n_BL UE\nĠsub tree\nĠpre process\n-tr ack\nChar les\nĠdepos ited\nĠquery Params\nÐ¾Ð»ÑĮ ÐºÐ¾\ni embre\nĠpr aw\nx FC\nĠp anc\n_n om\nher oes\n.j av\n:: $_\nĠØ§ÙĦ Ùħ\nSG lobal\næı ıè¿°\n= temp\nest i\nĠconstruct ive\nĠSh im\nĠDirection s\nĠB ing\ndir ty\n-r unning\n_file path\norder Id\ng ard\n_or ient\nĠsc out\nĠpsych ologist\nì ¶\nĠå Ń\nde que\nĠHerm ione\nĠPower Point\nĠ ella\nĠUIBar ButtonItem\nSub views\n@ Repository\n\"\"\" ĊĊĊ\nĠret our\nĠcir ca\nGraph ic\nĠGrat uit\ndd y\nĠtechn ician\nĠClean up\nĠperson ne\nĠres in\n.M ult\n$ m\nĠOr chestra\nĠwheel chair\n.S C\nĉ GameObject\nĠmo Å¼e\nOpen ed\nĠchick ens\not as\n_tem perature\nĠdetect ing\nĠacqu aint\nĠ<? =$\n> ]\nĠmen str\nĠd ye\nRob oto\n.un its\nĠVin yl\ncur a\nrypt on\ned d\n= test\nĠtro v\nConfirm ation\nĠthe ology\nĠHold ings\nu ating\nP redict\n[ user\nĠ: '\nĠS esso\nparent Id\nCode At\nab bo\nĠTrev or\nĠQ uit\n_ship ping\n_R A\nĠkle ine\nç ¦\n_L abel\nĠO mar\nĠG REEN\n/ )Ċ\nro k\nĠro asted\n_R T\nĠâĢ İ\n@ RunWith\n> NN\nĠt and\n+ '.\ncr ud\n.key board\nast ery\nB AD\nĠColumn s\n.Com pany\nĠsem inar\nĠget ContentPane\nĠcatast rophic\nĠemb roid\ni ative\nĠcruel ty\nb is\nĠin se\nĠBro ken\nĉf s\nĠm View\nÐ°ÑĨÐ¸ Ð¸\n- facebook\nĠc aches\nãĢĤ ãĢĤĊĊ\nĠOR M\nĠD istrib\nĠScene Manager\n_trans ition\nome z\nĠS HE\nĠwork load\nSupport edException\nĠr ies\nĠå ľ\n(c at\nHas MaxLength\nApp s\n.T ABLE\nĠKey ValuePair\ned ido\n.Render ing\nĠelect rom\nĠarbit ration\nĠvari ability\napol lo\nĠut most\nopens sl\nĠh Ã¥\n(' &\n.St andard\nĠdist raction\nif ax\nĠë ķĮ\nth ose\nisp ens\nv ak\nĠS UP\nĠIs PlainOldData\n, key\nfrag istics\nĠJoy ce\nĠF iber\n.Servlet Exception\n_A ll\nĠback ers\nĠAttribute Error\n{ ĊĊĊ\n@ yahoo\n-d irectory\nĠun install\nĠflu or\nliqu id\nĠl Ã¡\nĠfright ening\nad an\nĠA UT\nĠtatto os\nĠpropag ation\n. translation\nÐŁ ÑĢ\n_s cheduler\nãĢĤ âĢľ\nĠc airo\nĠHttpClient Module\nĠN DP\nĠH its\nĠTrans formation\nĠCa esar\nst im\nĠBur ton\nw yn\nĠcommand ed\nĠClo thing\nĠRuntime Object\nre ally\ncl a\n.s a\nĠSh annon\nĠcomm issions\nĠJan et\nĠdisg usting\nĠopt imum\n_s ol\nur ons\nĠSH ARE\nAttr s\nĠS che\nĠBig Number\nĠcig ar\n(de pth\nĠfr ac\nĠCur ve\nL AST\nĠSC RIPT\nê³ ¼\nM alloc\n.group by\nĠLes lie\nĠwh ichever\nSm arty\n/ we\nĠA mp\n, in\nlo ps\ndepend ency\nced ures\nĠ` {\nx ico\nCol lector\nĠh ac\nĠDark ness\nffff ffff\n'=> \"\nĠple asing\nconn ector\nz os\nPC I\nv ac\nĠInc orpor\nĠn ed\n_FACT OR\n.f b\nĠ ounce\n_s aved\nĠØ ±\nĠde eds\nĠDol phins\nĠbu en\nES C\n, time\n_A UT\nec s\nĠSen ators\n.out er\nĠS elling\nĠr in\n> `Ċ\n. observable\nĠcost ing\nD G\nĠw inding\nĠsk a\nĠcirc ulating\nĠform idable\namp o\nĠR aised\nĠveget ation\nUFF IX\nK ill\npt ive\n(r v\nĠC ountries\nĠN aked\nĠJ A\n)) \"Ċ\nud as\nĠb ark\nĉ level\nĠf oes\n> Add\nYou Tube\n; t\nNC Y\nCl ub\nE in\n-- čĊ\nĠconstr ained\nET witter\nY G\nDes cripcion\nUN CH\nĠen queue\nĠdis ks\nĠW ent\nĠm uit\nĉ location\nĠrevis ions\nĠA CK\n-f ixed\ntras ound\n\\ Test\nStart Position\n- html\nĠproblem as\n_INT ERRUPT\nĠST ORE\næ ¨¡\nili ated\nĠR PM\n[ temp\nach ten\nĠc ic\nĠAutom ation\nĠhigh s\n/( ?\n: ')Ċ\nsp ark\nrel s\nĉm ov\nUT ES\n.Author ization\nĠSch neider\nĠche eks\naddress es\nard in\nĠrem ovable\n.Bad Request\nicion ar\nĠDies el\nth an\n/ ~\nĠd azu\nReg istro\nff i\n_D LL\nĠnie u\nĠmoist ur\n- events\nĠthr ill\n.get Entity\nĠtog g\nĠw av\n) did\nat k\n(sub str\nĠIn jection\n_m b\n.D iv\nĠende avor\nĠ( Â£\nĠcl utter\nĠur gency\nĠinstruct ors\n- ',\n- standard\nc em\nĉ handle\n. ft\nStep hen\nR on\nãģĻ ãĤĭ\nsc i\nĠAt mos\nĠcater ing\nĠfi at\n.Per cent\nĠC ongo\nx df\n.m ozilla\nĠse hen\n.show Toast\nO OT\n- result\nÌ ģ\nĠghost s\nĠB uen\nĠR ider\nĠDo ctors\nĠur anium\nĠloud ly\nĠpo ised\nĠfav ors\n( AP\nLE Y\nĠsick ness\nĠchat te\nĠintegr ating\nĠY up\nC losure\nĠT ales\nĠline a\nĠey el\n.C ryptography\nun expected\na lement\nc it\net Address\nLe ad\nx cd\n_n egative\n_cor r\nig raph\n- channel\nĠdis co\nSe eder\nbe am\n_d p\nCC C\nĠProvid ed\nĠjson Data\n_W H\nF INE\nB X\n.Data Access\nĠtempt ed\nĠf ined\nis Checked\nĠfraud ulent\nF ri\nĠd omic\nQu iz\nĠUnder ground\nab ras\nĠID isposable\nĠPerson a\nĠro gue\nĠB ey\nget Client\nek en\nĠ'' 'čĊ\nW iki\n(Http Status\nSt retch\nĠG est\nĠ íķĺ\nĠent itlement\nĠdo en\nblog s\nĠvit ro\n\" Oh\nĠSum mon\nĠBack bone\nĠg Ã¼\nget Column\nĠWIN API\nĉv a\n_RE QUIRED\n. throw\nĠset Current\nduct ed\n( Function\nels inki\n_P er\nfl ies\nĠin compet\nĠju Å¼\n() %\nĠ-- -Ċ\num as\nĠOld er\nĠdis puted\n_RE QUIRE\n.mat mul\nun ken\nä¹ ĭ\nãģĭ ãĤī\nĠt tl\nunders core\nĠPat ricia\nĠt aper\nĠse iner\nĠsay a\nåı °\nier i\n.se cret\nĠx or\nĠmit ochond\nĠcard board\n}` }\n-B EGIN\nĠd avid\nou los\nĠPeters burg\nĠ\" \",čĊ\nsh elf\n-w ater\n-by te\nĠÐ¾Ð±ÑĬ ÐµÐºÑĤ\nĠstir ring\nìĹ ´\nĠcom pt\nĠPot ential\nRA FT\nĠe apply\nĠswing ing\nĠf ec\nAR A\nĠwand ering\nĠpref ers\nJ esus\nĠpir ate\nĠIs is\n.Min imum\nĠV ale\n_B T\nren ched\nc ors\n(item View\nĠg Ã¥\n.Cont act\nView Child\ninds ay\nconfig s\nD uplicate\nâĢ¦ I\nz yst\n(t odo\n.Remove At\n_D IFF\nĠBott le\nĠvol ta\ntra ffic\nL ee\nĠì ¤\nĠt unes\nĠE cuador\nĠY un\nĠunder went\nic om\nĠ' '){Ċ\n-p ol\nflamm atory\nM utation\nĠrec ap\n_ vert\nOT ION\nCD ATA\nic ine\n_bound ary\nSc alars\nĠUlt imately\nE Q\nmet al\nks es\nm pl\nĠcont en\nS old\nESS AGES\nĠb inder\nĠlin en\nĠMy App\n-m eta\nĉ raise\noul try\nĉm odule\næĺ ¾ç¤º\nn ÃŃ\nĠy rs\nĠphys ic\n- platform\nĠsw ingers\n( headers\n. ')\nĠB U\nĠIn contri\nSc enario\nA mb\nĠprem iÃ¨re\n/ articles\nĠMajor ity\nCLUS IVE\non or\nĠhab ÃŃa\nå· ŀ\nĠmid i\nĠL ac\n.find Index\nĠPaint ing\n.border Color\n* j\nĠcongest ion\n_D ICT\nol le\narn ation\n(text ure\nĠu f\nĠEin stein\n( Thread\nĠindo ors\nscr atch\nĠm aken\n.ST ART\nĠJud y\nfor ums\nĊĊĊĊĊĊĊĊ Ċ\nB ILE\nĠv ou\nMY SQL\nĠger ne\nĠImport Error\nĠS urre\n< nav\nĠDies e\new are\nĠëª ¨\nim plemented\nS IGN\nĠ'{ @\nr ze\n.minecraft forge\n.inner Height\nbe ck\nĠcur ry\nĠform ulas\nag og\nend et\nĠP aid\nĠRobert o\nĠunp aid\n= headers\n.P ower\nĠb red\nor Else\nox ide\nĠfinal ize\nset Color\nĠSt adt\n(' \\\\\nism ic\nĠhe le\n.Prot ocol\n.Host ing\n_M enu\n_ conditions\nĠpur ge\n.x aml\nb are\nFR AME\nĠcub es\nĠJoh annes\nocr ats\n.D irectory\n) a\n? ):\n_LIB RARY\nĠget Token\nĠecho ed\n= h\n_s oc\nĠE valuate\nĠê¸ °\nĠDe leted\nE u\nĠcl oned\nstat istics\n.C anvas\nĠh acker\nĠgang s\n.res ume\npe ace\nÐĴ Ð²ÐµÐ´Ð¸ÑĤÐµ\nĠProceed ings\nç ¥\nĠj apan\nĠ?> >Ċ\nĠ${ ({\n.rect angle\ng w\nĠO rientation\n% m\n. \"));Ċ\nĠLie utenant\n. true\nĠel t\nĠDIRECT ORY\nÎ ¯\n.d ays\nutt gart\nĠunder wear\n, )Ċ\nC ID\nim eline\nĠBl end\nph asis\nĠper se\nĠgl itter\nĠun iq\nĠCom boBox\nĠsession Id\nuster ity\nID GE\nÐ¾Ð± Ñī\nÐ ¤\nrend ers\n_pos itive\n_sl ots\nb roadcast\nĠM old\n/ Core\nĠB annon\nTool Bar\nabel le\n_ aw\nolec ule\nĠde letes\nĠÃ¡ rea\nĠproport ional\nM W\nĠw ary\nĠinter medi\nĠ ************************\n.ST ATUS\n_t w\nĠarom a\nĠactiv ism\n.Is NotNull\nu at\nĠpost Data\nĠp em\n_ ctor\nĠRap ids\n- offsetof\nĠine ffective\nĠon Destroy\nĠMet rics\nĠpadding Left\n- enabled\nĠGo als\nynchron ously\nĠy er\nItem At\nĠMY SQL\nces o\n. Kind\nte c\n(b undle\nĠrefere e\n.\" ;čĊ\nĠcon ex\nĠbik ini\n_AP PLICATION\nĠsw elling\nĠbe ads\nĠbarg aining\n----------- ĊĊ\nĠk ita\n* ft\nMin i\nĠTon ight\nĠmanip ulated\nM irror\nĠPost al\nĠm are\nD W\nĠcomp iling\nĠfore nsic\n.get View\nep ing\nC os\nĠaccred ited\nĠobjet ivo\ncare t\nP airs\n) >>\nĠse Ã±\nĠqu otation\nĠBr ands\nub i\nyp y\nĠIn line\nim eters\nW invalid\nĉ link\nĠB elfast\nĠMe asurement\n_NOT IFICATION\nĠro y\nĠCG Context\nĠwed dings\nUR NS\nĠpodcast s\nĠS erg\nĠë į°ìĿ´íĦ°\nĠearn est\ncover age\nite Database\nEmploy ees\nĠDem and\nĠcont enido\nĠQ Vector\n\",\" \\\nĠG erald\n() `\nĠgrid BagConstraints\nRES OURCE\nĠS ag\nabil idad\nĠco erc\nounc ements\nĠIs le\n. edge\nĠext er\n) ][\nĠPlay list\nĠBl ind\nĠV ital\nĠl attice\nr ated\ndepend encies\nĠ`` `\nĠK ang\nm ach\n.f ade\nĠGu ess\n* [\nN atural\n.O k\nĠRena issance\nĠth uis\nĠli ken\n* h\n\\ ',\n-c lock\nĠObject ive\nfind OrFail\nĠD irty\nĠsc and\nĠV ARIABLE\nĠcompar ative\nyp ad\n( Source\nec o\nĠjus qu\nĉ api\nB uilt\nĠ ################################\nĠlabel ing\nĠhead aches\nĠm uff\nĠOr ch\nĠh ates\n-break ing\n/ button\nĠBuy ing\nM etric\nĠuns pecified\n/ head\nĠst ing\nĠrein force\nĠCom Visible\nbl ink\nĠAh mad\ndb g\n_l bl\nĠh tt\nìĽ Ĳ\nropol is\nĠ(( __\nĠper me\nĠapp arel\nST REAM\nch ts\nĠse ins\nfill Type\nì £¼\nROWS ER\nump ing\nĠNiger ian\nâĢĶ is\n_log ic\n. Ordinal\nlo st\n/ usr\nA f\nĠIter ate\nib s\na al\nĠsym metric\n, input\nĠP LL\nuz ione\nc aptcha\nĠT ale\nExp ired\nĠObject Mapper\nc ido\n.get Next\nĠmenj adi\n: selected\nĠr ien\n_s ender\nP wd\nĠF lickr\n.J ava\n_v ote\n_M ode\n. ${\nĠfuck s\nĠAl ibaba\nĠins ider\nac imiento\nĠfranÃ§ ais\nJSON Exception\nĠJ wt\nM it\nle ich\nĠpractition er\n/ source\nĠo gni\nĠphil osopher\nSn ackBar\nstell ung\n(b itmap\nĠaster oid\nĠmap le\nuch a\nitem Id\nĠste ht\nOrder ed\nen burg\n/t oken\né ħį\nĠWeb b\now anie\nĠW AIT\nĠH DR\nĠE va\nATT LE\n(m aster\nĠ ers\nal oad\nĠsm tp\nuni q\nĠgu it\nĠRaf ael\n\" in\n( UI\n( LayoutInflater\nor an\nĠserv i\nne z\nĠTor res\n.Middle Center\nĠm oll\nĠText Align\n_upload ed\nĠMe hr\nĠhom o\n-link ed\nun ner\n_length s\nĠdiff use\nĠAutom otive\nY ears\nĠli en\n[ counter\nk lass\nÑģÑĤ Ð¸\n. Engine\nĠmen y\nult z\nĠinf antry\nV ia\nsect s\n.d ashboard\nĠsponsor ship\n.Mod ified\n; -\nĠV elocity\ntract ed\n(m etadata\nĠpl ague\nNS UserDefaults\nappro val\nprob ably\n-s ix\n_V IS\n:' ',Ċ\n. enc\n.M essages\n_PRO GRESS\nĠneck lace\nĠT emporary\n_mark up\nĠFunction al\nĠJ i\nĠtest Case\nĠ( );čĊ\n_C ell\nĠRes idential\nĠRail way\n((& ___\nĠdefault state\nĠein mal\n.f ac\n* f\nĠpic nic\n(e val\nĠfurn ace\nassoci ation\n{ !!\nĠCom pile\nx eb\nE val\nĢ ìŀ¥\n(c al\nĠmark eters\n_h elpers\nlocal ctx\nĠyog urt\nĠv ita\n, length\nĠInput Decoration\nĠinterven e\nĠcomput ational\nDen ied\n/en vironment\ni id\n. Box\n- Time\nĠexc uses\ntrans pose\nĠoutrage ous\n(S erver\nd ims\n\"] );čĊ\nĲ ľ\nĠE isen\n( Op\nĠhash lib\n( li\n~ ,\nÄ± nd\nĠS phere\nĠB ella\n- transition\n.read String\nhe ard\nĠZ ucker\nĠw ann\nĠj ailed\nĠTal ent\noph obia\nÂ ¶\nĠoper ands\nSome one\nĠLib raries\nprimary Key\n× ª\nU r\nĠm ates\nĠÑ Ī\n-d uty\np our\n< Entity\n> You\nCre ators\nWith Name\n' int\nĠR ational\n= B\n.Auto Field\nĠFound er\nĠM egan\n.image View\nb ows\nĠwith Router\nĠlib eration\nĠfor am\nĠcit as\noch en\n.sw ap\nĠ.. Ċ\n.c vtColor\nĠA ware\nĠque er\nå¤Ħ çĲĨ\nĠIn finite\n/ string\nĠbl ended\n- Col\nĠw ys\nĠsich er\n.Last Name\n_w ater\n_R em\nĠar thritis\n.A PP\nĠExp ansion\nx db\nest ro\nf avicon\nVer ified\nĠdeliver ies\nark et\nĠget Image\nĠJ PEG\nĠT RI\nĠE lev\nf usion\nĠj peg\ncoll ision\nĠdesc end\n.f ore\nĠLog s\nĠpolic ing\nunt as\n.host name\naccept ed\nà¥ ĭ\nĠWend y\n.read File\nĠS antiago\nĠG ol\nrib bon\nstr ation\nĠp udd\nĠ// _\nis Loading\n_SER IAL\nĠinstant iated\nĠpod s\nĠw arrants\nĠadmit ting\nĉ connection\n_b uffers\nĠIn ch\nĠZ ERO\nw ert\nĠCl an\nĉ il\n(sh ader\nĠpil gr\nĠå Ĭ\nD st\n_bar ang\n:' #\nButton Text\nter e\n_am t\nĠFore ver\n.Link edList\nu ards\nur ous\nĠS ender\nvari ants\n_m agic\nĠaccommod ations\nap GestureRecognizer\nP rompt\nĠ?> čĊčĊ\nĠreprodu ced\n_p recision\nĠr ut\nmon ds\n; x\nĠ}, čĊčĊ\nçĶ »\nĠV ita\nĠpro poses\nĠPart ition\nH ING\nĠ#{ @\nĠess a\n(b ar\nĠZ elda\n.c atch\n_ex cept\nĠoverwhelming ly\nĉ TEST\n_CONT ACT\n__ ;\nĠSem i\nĠtrabal ho\nrad ouro\n_s quared\nà ¶\n% D\nĠpr at\nite z\n(element s\nPl ant\nag ua\nĠihr er\n.C ol\nĠMc N\nĠCore y\nONE Y\nC ele\nre ment\nĠm alt\nĠL uk\nç» Ł\nP MENT\nĠanaly zer\nĠH ank\n_ unicode\nĠbur ial\nĠCelt ic\nE FF\nL ot\nw on\nĠN ude\nĠN ate\nĠS inger\nĠS ITE\n(b it\nb iz\nĠdet on\nREAD ME\n: Add\nĠH olding\n{ return\nnc ias\n> čĊčĊčĊ\nru ptions\n.re act\nurs al\nà¸ Ľ\nĠD ONE\niv ated\n.n otes\nĠstrip es\nri pp\nir an\nĠsl ab\nĠBurn ing\n( ent\n.se c\nG U\n_g old\n]) ).\nel iness\nÐ¾Ð± ÑĢÐ°Ð\nĠâĪ Ģ\nĠcos mic\n'] ):Ċ\ncc iones\nc ision\ncom parison\nĠEv angel\nĠSh irt\nl agen\nĠi ÅŁ\nĠfill er\n.pro d\nĠ ĉĉĉĉĉ\nĠÑĦ ÑĥÐ½ÐºÑĨÐ¸\nĠZero Constructor\nAt A\n]) čĊčĊ\nĠconstruct ors\n_SH ARED\nĉ device\nĠAd vice\n:@\"% @\n> }'\n.Is Empty\nĠint s\nmost at\nĠSign up\ng ear\n(path s\n, {\"\n/ Documents\n< Category\nUE ST\nĠget Description\nĠ\"{ \\\"\nĠJo ey\nod en\n_g uess\nE UR\nĠh err\nĠsed an\nĠreact ed\n_cl one\nĠRe vel\nĠfor b\nRem aining\n\\ Services\nĠav is\nbat im\nze pt\nĠDB Null\nConnection s\nĠdispon ible\nph in\nĠst u\nĠscholar ships\n-sh aring\nform ing\nĠB ri\nVar Insn\n/s ession\nĠamb iguous\nĠap resent\n_r d\ns ites\n/ action\ntract or\nĠdile mma\nĠS X\n] -->Ċ\nĠJ acket\nR ATION\n.getSelected Item\n- init\nĠReg isters\n_se p\nĠTool kit\n.d ict\nĠx label\n\\ Table\nt oc\n_com bo\nĠComp act\nĠr ugged\nà¥ĩ à¤\n-man agement\n')}} \">Ċ\nĠSt amp\nÄ± l\nro x\nĠlandsc apes\n_NOT E\nmon ary\nc ab\nĠmo et\nx af\nrc ode\n- cli\n_g ate\n[ event\nSP ORT\ng ia\nĠS UPER\n/ Login\n_sh utdown\nint errupt\nĠpret ending\nĠfr inge\nĠRed s\nĠC UDA\nĠUN IX\nv it\nĠbr ig\ndr v\nĠConn ector\nThere fore\nĠl ia\nD etection\n_ actor\nĠtemp file\nĠecc entric\n- role\nĠpad x\nd ent\nWest ern\nĠê ·¸\nĠApplication Record\nĠcampaign ing\n_run ner\nĠC ivic\nale igh\nĠdire kt\n.s ul\nĠĠ ĉĉĉ\nant en\nĠiss uer\nĠassert ions\n( orig\nAT IO\nĠlean ed\nÃ¤ s\n.D TO\nexpl ode\n.O bservable\nĠstagger ing\nĠkidn apped\nĠprogram mers\nĠInn ov\n.param eter\nĠdom ination\nĠske ptic\nĠæĺ ¯\nĠavoid s\n.Ver ify\nub by\nĠAS N\nĠformat o\nĠBeat les\n_b rand\nĠin set\ny outu\nĠto c\n-f inal\nShow ing\nĠD oub\nĠM esa\nAd j\n_m edium\nCre ates\n(end point\nĉ UP\nbb ie\nĠst alk\n.datab ind\n.S can\nag ents\n$ ,\nind ividual\n+ )/\nĉv m\n(not ification\nĠin ex\nĠClass ification\nren o\nĠo lig\n-r ated\nĠform ulation\n', {\nĠa cept\n_un pack\n_C A\n.P ow\nĉ im\nĠal uminium\nAN O\nĠx n\nĠcÃ³ mo\nĠIng redient\nĠseiz ures\nåħ ±\nific ador\nĠsigu iente\nĠIn fragistics\nĠduplic ated\nĠDe e\nĠn Ã¸\nĠAC CEPT\n(c rate\nÐ¸ÑĤ ÐµÐ»ÑĮ\n- less\nĠinf inity\nAn alyzer\n-D ay\nrit t\n(c in\nĠG y\nĠmulti plied\nuch i\nĠBald win\n/ ip\nĠshort cuts\n.A DD\nĠvig or\n_in struction\n( ;\n_ eta\nè¿ ŀ\nutor ials\nĠboost ing\nb v\nĠacknowled ges\nList ening\nFA Q\n; b\n(( -\nĠarchitect s\nĠz we\nĠpul s\nĠget Count\nver bs\nãĢ ľ\n(C ollection\nk re\nĠjuris dictions\n_b ridge\nĠCr ack\nĠDiff iculty\nK O\nRes ervation\n_re quires\nT our\nãģĹãģ Ł\n.set Current\nĠk y\nĠAlb any\nĠè §\nll er\nagn a\nwork ers\n.bl ank\nĠPr ayer\nM IC\nĠresil ience\nTe X\nĠL anguages\nst udy\nĉc urr\nĠenzym es\nSl ug\nĠíĮ Į\nstr al\nĠtum ors\nĠseg unda\n=' {\nin struction\nĠL isp\n/ info\nĠ\" {$\n,: ),\nĠg v\n( ErrorMessage\nĠ' =\n}- ${\n.Doc uments\n\" Well\nĠreminis cent\nĠg az\niro pr\neh r\nĠsup pressed\ners h\n.scroll To\nĠcad ena\nĠgame State\nÃŃ m\n( conv\nĠTom orrow\nĠC CT\nM ongo\nul g\n.C amera\n.hand lers\nm ph\nĠst k\nĠgen etics\nAC ING\nTr ivia\nĠB am\n(m arker\n.St retch\nĠSun ni\nĠBet ty\n.t olist\nun likely\n.Rect angle\nob solete\nIL ON\ninner Text\nemb ourg\na N\nĠV ehicles\nun lock\n: utf\nn ob\nĠSee ing\nĠNE VER\nĠt ls\nĠfil les\nĠbenef ited\nĠCl int\n*/ ),\n.f old\nĠpos ible\nA DED\nth ouse\n.D AL\nĠO dd\nro kes\nĠSun ny\nĠPartial Eq\n_B uffer\nĠLe vi\nlong rightarrow\neld on\ng ages\n_w arn\n.Create Table\nĠD ip\n_ questions\n.log ic\nĠ# \"\n={() =>\nĠt ep\nĠju icy\nì Ĥ¬\nen ko\nia lect\nÙ ī\nĠon board\nĠæ ı\nĉ rt\n_ UTF\nĠQ Action\nâĢ ŀ\n( Component\n(a udio\n.h it\ng te\nĠprogram med\nstate Params\nĠpoly ester\nf ires\nby ss\n] =(\n_ quality\nOf Day\nĠFair y\nĠy elled\nop l\n(user Name\nĠD ifference\nĠevalu ations\niff any\nĠcycl ists\nĠc idade\nĠtext book\nĠprof iling\n__ ),\nde a\n. activate\nĠindic ations\nÐ ķ\nTouch UpInside\nĠinval uable\nĠM ASK\nĠcont end\nF req\nĠrecru its\n(int erval\nĠUser Profile\nĠ'./ ../\ned u\n_C allback\nĠanal ogy\nĠTro phy\napp hire\nV ideos\nĠCh er\nĠH av\nâĢ¦ \"\n. validator\ng fx\nĠU Object\nclass names\ntri angle\nĠEnc oder\n.s py\nĠpred ators\n= status\n-s afe\n: \",Ċ\nĠIn cluding\nĠ{} ;čĊ\n* cos\nĠend ured\n.sul ake\nĠnurs ery\nĠfrag rance\nĠre building\nĠn th\nĠFr aser\n.set Date\nĠV ince\n_RE ST\nĠvent ilation\næµ ·\ncri bes\n.as m\nlp Vtbl\nĠA be\nuis ine\n, array\nĉ className\nerr als\nĠ' ĊĊ\nCheck out\nĠsol icit\nA ux\n_c apture\nĠrib s\nrag on\nvi ol\ntop ics\nFunction Flags\nĠM arty\nb ike\nĠT ucker\n(k ernel\nĠO ps\nClose Operation\n/d emo\nild a\nĠlÃŃ nea\nAPP ING\nĠsu ites\n.visit VarInsn\nur us\nĠMin ute\n(m anager\nĠbutter fly\nĠap are\nĠw olves\nJ WT\nĠSal on\nĉd elay\n-es lint\nis ations\n.r pc\n)| (\nĠSnap chat\n/m m\nM N\ncer ies\n.text Alignment\nĠFrank furt\nĠad o\n(new Value\n( access\n( Expression\nĠSign In\nĠHait i\n_t p\n.set Parameter\nMin ute\nĠmanual s\nric anes\nĠP TR\nĠOut er\nĠget line\noc ations\n_C D\nĠLy on\n/g ui\n_l ive\nid an\n.ge om\nĠborder Bottom\nim uth\n_check point\nĠme u\nĠIr ving\nĠpeu vent\n(M AX\nĠAR CH\nĠp ov\n.source forge\nĠjam ais\nĠar k\nĠBaghd ad\nĠC LEAR\nMenu Bar\nĠtro is\nCHED ULE\nĠ# čĊ\n(C all\n$ order\n(M aterial\nĠencontr ado\n$ list\nĠMETHOD S\n.begin Transaction\n_M AG\nStyle Sheet\nĠmaj ors\nĠindef initely\nclean up\nĠhom eland\n(d to\nD ates\nP resentation\nĠD K\n={` /\nĉ Key\n( Block\n_check box\nne eds\nĠon Complete\nric o\nĠgle ich\nĠx m\nO OD\nB etter\nĠSQL ITE\n. Book\nx ad\nĠG one\nĉd p\nĠdev otion\nĠst m\nĠobs ess\nĠBack end\nQu eries\nI k\n// ****************************************************************\nĠdivid ends\n.parent Element\n} \")ĊĊ\nĠMaterial PageRoute\n: num\nĠexp lic\nĠO L\nle ast\nO ops\niment os\nĠins urers\nĠhero ic\nĉf ields\n.img ur\n.btn Cancel\nĠDetect ive\n(s m\nĠMutable LiveData\n.l ab\n(( [\nĠha irst\nĠTrans actions\nå¼Ģ å§ĭ\nĠstd Class\nuent o\nG IS\n_c od\nInstruction s\nC alls\nPointer Type\nĠR w\nĠassort ment\nĠD IG\n+ r\n_C ERT\nĠinst ability\nĠv ib\non as\nĠro ku\nap ellido\nĠan gl\nprene ur\nĠfluid s\nise ase\nĠde ed\nqu ist\n_CONST ANT\nĠequ ilibrium\n_de legate\nĠQuant um\nre i\nCap abilities\nrect angle\n? ><\nal ien\nĠJ ug\nD NA\nT ickets\nOcc urs\nĠHaw k\n.setHorizontal Group\n\\ Collection\nff iti\nĠre arr\n.setVertical Group\nĠc avity\nĠadult e\nFac ade\n- wh\nĠL OL\nØ °\nĠgrand parents\nSw ift\nĉw x\næīĢ æľī\nif en\nff set\nB eyond\n// }ĊĊ\nĠw ager\nĠb ury\nĠcomm ence\nreg istro\nsc ient\nĠPer cent\nĠÐ´ Ð¾Ð»Ð¶\n( identifier\n.set Model\nĠs eldom\nnt on\nĠappl iance\nam us\nrys ler\nĠpant ies\nengu ins\nĠmim ic\nĠon Changed\nĠal coholic\n.reload Data\nCh arge\nĠF ax\nĠj ScrollPane\nEmp resa\nĠsh attered\nx ba\nFont s\n? s\nĠpost season\nret ain\n_r ates\nĠrequest Code\n.t odo\nÂ´ s\nCH K\nĠKeep ing\nenge ance\nĠvs code\nIPP ING\nDefault CloseOperation\n_ raise\nĠO culus\nogram s\nra j\npc i\nĠcorros ion\n.handle Submit\nAccess ible\nĠP iano\nl ittle\nAC L\nÄĩ e\n.un wrap\nĠCon vers\nĠLe ben\nione er\nĠMer chant\nĠJ orge\nĠembr acing\nĠvent a\nÃ¡ st\nĠvi ene\n< QString\nĠexplos ions\nĠdistur bed\n.\" <\nm emo\nĠAb original\nĠcomple to\nTex Parameter\nĠuom ini\n( agent\nÑĥ ÑĢ\nĠWh olesale\n/ am\nĠBook mark\ndr agon\nĠglo ve\nĠ\" \"));Ċ\niv ariate\nnow rap\nIn Children\n.B r\nĠcon exion\nĠback bone\nĠe clipse\nĠpersec ution\n': ĊĊ\n/ link\nĠP ero\nand as\nĠT ek\n. \");\n-an alysis\nĠer ad\nMar shal\nĠanch ors\nog er\nĠconver gence\nst icky\nĠnave g\nint ern\n_DE SCRIPTOR\nĠConsult ant\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nĠA uch\nĠer re\nÅĽ li\nĠHor izon\ncol a\nInstall ation\nhot mail\nC NN\n.C ollectors\nch s\n(tr ace\nĠEnc rypt\nĠ---- --\nĠBase Controller\nĠag ua\nĠre active\nid l\nĠclass Names\nĉ Session\nĠDod gers\nH ad\n_l v\nIs Valid\nĠHEL P\nut to\nĠVer ification\nĠget env\n_p a\n.b mp\n: f\nĠLou ise\n(' ;\n/ socket\nGr anted\n.c alendar\n( IP\nĠP X\n.R oom\nĠprogram m\nens i\nĠtablesp oons\nĠle ve\nĠmo str\n.t ipo\n/ an\n(d i\nĠb iod\nĠdb Context\nĠJS X\nĉ results\n. END\nht e\nl ify\nP recision\nèĬ Ĥ\nARS ER\n)did ReceiveMemoryWarning\nat tempt\nIS P\n& a\n_P OP\nĠT ac\nĠprepared Statement\nĠÐ·Ð°Ð¿ Ð¸Ñģ\nĠow ing\n, start\nĠreview er\nĠr st\nĠprop Types\nĠrock y\n_lo cale\nĠStrateg ies\nĠWe ber\n.C ascade\n_equal To\nĠcos as\nĠDe letes\nĠMax im\nĠsh rimp\nre trieve\n.In clude\nIG IN\nĠO E\n] );čĊčĊ\n.en umer\nĠco ef\n_N ull\nR a\nty ard\nĠSh awn\nkeep ers\nĠq q\n_s b\nom ens\nĠExec utes\n# \"\nTT Y\nĠValue Type\n); */Ċ\nĠAbs olutely\nĠT ottenham\n/ art\nĠbless ings\nĠswift ly\nb uster\nĠa vid\nCOM M\n, temp\nĠ} ?>Ċ\n-g rowing\nĠdeep copy\nA ck\negg ies\nĠ__ (\"\nĠno ir\nterror ism\nĠanth em\nag ency\n_PACK AGE\nĠC losure\n.reg istry\nĠmamm als\n< L\nU ICollectionView\nĠLED s\nĠvol ley\n( Buffer\n_N ATIVE\nlib c\nimpl ode\nScroll Bar\nĠMar ion\n.Con tracts\n_A t\nĠWe instein\ncompare To\nĠH ose\nen ity\n.create Query\n_r outer\nĠstim uli\nĠ++ )\nĠCh amp\nĠBay ern\nass a\n.v a\nĠdistrib utors\nĠfile private\nĠdepart ed\ncc cc\n@ click\nĠL unch\n> L\nĠbl uetooth\n.De ep\n- standing\nÃ¡c il\nĠro oft\nĠPath s\n_iter ations\nInvalid ArgumentException\n.s pi\nĠUIAlert Action\nuy e\nsign in\n.p riority\nĠEss ays\n=' {$\nĠè¿ ĶåĽŀ\n_s igned\n.p ersist\nĠred esign\nTo Lower\nĠNew man\n= start\nĠIsrael is\nasis wa\nSpe ech\nĠnum eros\nhand lers\nĠW ong\nĠÐ¼ ÐµÑĤÐ¾Ð´\nWe ights\nĠGu jar\nte il\nĠNon etheless\n_E FFECT\nĠv ect\nĠO sc\nĠco ats\nĠW heat\nĠge ek\nĠPRO PERTY\nw orm\n_const ants\nĠB oulder\nĠP arm\nco le\nĠdefault Center\nĠRou ge\n: A\nxc f\nĠVen ice\nmed ian\nĠred emption\nF resh\nĠcos m\nĠfig ur\nĠref urb\nCO PE\n.c d\nĠch ords\nĠS gt\nÅ į\nVP N\nĠS END\nain en\n_account s\nĠtent h\nĠdiss olved\n< App\nĠCover age\nuse State\nÃ© ro\n.. <\nĠì £¼\nĠdream ing\nĠFore cast\n.C ursors\nĠvis as\n/ script\n_start ed\nĠga str\n(P RO\n]; //\n.T ile\n* sin\n( Adapter\nĠSand ra\n_S IG\nard ash\nĠO val\nĠdescri pcion\n(s l\nĠDes criptor\nĠ` $\n/f ree\nĠKey words\nĠt udo\nion ale\n(f ound\n.x yz\nĠGeneration Type\n_DISABLE D\n( area\nĠel ites\nĠh ombre\n(m essages\nĠR ac\nĠext ingu\nĠEst a\nop o\n. vel\nmouse out\nĠconv olution\nĠHand ling\nĠceil ings\nT ek\nĠAre as\n.writer ow\n< View\nĠCorn ell\n_B IN\n.in valid\n'' 'čĊ\nie Å¼\n_P osition\nĠk idding\nPC ODE\nĠwatch er\nlo x\nĠâ Ĺ\nD ave\n_all ow\nĠbis exual\nĠun ordered\nĠSch we\n_se gments\nĠt earing\nIN LINE\nĠund es\n.g oods\n.c am\nĠL W\nĉ where\nCal culator\n-th reat\n- alert\nĠSuz uki\nĠIP A\nĠAtt achment\nAC CESS\n(d type\nO pp\n_s ymbols\nĠdans ke\nl age\nor get\nres olution\nÐµ Ñĩ\nĠQ Color\nĠBar rett\nÐ°ÑĨÐ¸ Ñı\n= \\'\nĠNav Controller\n/ ref\n(c ountry\n_H DR\nĠterse but\npet ition\nĠsu f\ncred its\nà¹ Į\nx m\nĠDav ies\n.re ddit\nĠw oven\nĠO bl\nĠK M\nĠConsider ing\nens ored\n.per iod\nĠd dl\n$ wp\nĠextrem ist\n; \\Ċ\nĠk im\nal ers\nĠspan ning\nĠco herent\nĠconse gu\n.text Label\n.g eneral\n_d ashboard\nÐ» ÐµÐ½Ð¸Ðµ\nk ick\n_P ID\nĠExt ensions\nreg exp\nĠCl ause\n_m ov\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠ\nĠR eward\nĠLEG O\nA k\n=-=- =-=-\nĉ parser\nĠon ze\néĢ Ģ\nâĢĿ ãĢĤ\n_b all\n(r hs\nĠch orus\n< count\nas urable\nĠwirk lich\nĠEr in\nĠMS NBC\nĠet ter\nĠC ron\n_F LOW\nĠ, čĊ\nĠcal idad\nĠFile Writer\nĉ stmt\n( Byte\n_p at\nĠte lescope\nĠgre ed\nĠT ort\n(w rite\n\\ application\nĉRT LR\nĠConfiguration Manager\nUn ix\nEnd Time\nIn cludes\nĠHar vest\nen berg\nĠAustral ians\nĠë ĵ\nĠr n\nĠreput able\nĠbl ending\nUL ATION\nĠBrend an\nd ad\nĠm Ã¸\nĠW oo\n_d c\nU ne\nĠr ue\nwith in\nang ep\nĠp ouch\n\\\" \",\nĠS ic\nâĢĿ ),\naly ze\nĠG ef\nc overs\nĠd bo\nreplace All\nĉ Logger\nTry ing\n[ state\n-p iece\néĸ ĵ\nbeh avior\nall ows\nl rt\n_p ython\nert ura\n-c ountry\nĠT G\n.UI Manager\nb ens\nale x\nĠBre itbart\nb ac\nĠpredict s\nĠg ab\nĠcard inal\n.Time Unit\nĠVis itor\nĠM ing\nĠliv re\nĠparent Id\nport un\nĠdimension al\nĠV est\nen ic\nà ³\nĠ Ùĩ\nĠBL UE\nĠitem Count\nĠfe athers\nĉp stmt\nĠPol ar\n{ //\nund i\nÑĥ Ð¶\nz ar\nError Response\nì ĥģ\nRep resentation\n* _\n+ ]\npre pend\nĠ' >\nĠlegitim acy\nĠo o\nS linky\nĠnation als\n. words\n; p\ntr ap\noman ip\nĠc ues\nĠgradu ating\nĠsem aphore\n\"] );ĊĊ\nace y\nRE ET\nGr ab\nĠFel ix\n( Id\n_ne ighbors\nĠmeaning less\n(d el\nĠj eder\nĠContent Values\n.abs olute\n/ cl\nĠx b\ndat um\nĠtort ured\nĠrub bing\nS cores\nĠðŁĺ ī\nĠav ons\nĠam sterdam\nE OS\nH al\nĠtrust worthy\n# =\n.EX TRA\nĠman o\nis icing\n-s upport\nĉc ursor\nĠSp o\naim assage\nM ission\n[] {\"\nĠprint ers\nG REEN\nĠt eg\nĠabdom inal\n! ĊĊĊĊĊĊ\n.Sh ort\nÐ°Ð· Ð²\nĠGift s\n} \")\n(b inding\nx ce\nâĢ ĳ\ninf os\nForm Data\nĠd art\nĠele ms\n(in v\nY L\nt in\nGEN ER\ná» ¯\nĠT aken\nuck le\n: e\nĠspect ral\n.b aidu\n/ ');Ċ\nĠgre edy\nes ion\n,,,, ,,,,\nĠ/> ,Ċ\nInternal ServerError\nNSNotification Center\nĠA i\nĠsp it\nĠaug mented\nĠstandard UserDefaults\nFIN ITY\nR ace\n: C\nĠRE CORD\nĠHigh light\nĠ' `\nĠdef icits\nĠne i\nĠresearch ed\nT a\nĠc opp\n.Get HashCode\n): čĊčĊ\nOn Click\nĠWell ington\nĠrev ival\næ¯ Ķ\néĹ ®\nĠN SS\nĠfor n\nĠint Ã©\nĠKu wait\n_fl ip\n_ bo\n_ \\\nĠocc urrences\nĠScient ists\nS RC\nog ens\nigr ant\nRE MOTE\nĠS ID\n. opts\nu ve\n() ])Ċ\nĠlibert arian\nĠGl ide\nles en\nĠform e\now ania\nĠannoy ed\nDef s\nĠExec utor\nĠcast s\n.set Checked\nĠSh aring\n.Serialize Object\nĠselect ors\n_ OTHER\në¯ ¸\n(s uper\n( OS\n_VER IFY\nid unt\n< header\nĠ/> ';Ċ\nĠvidÃ© o\nĠNeg ro\nĠL ords\nĠT ours\nĠsoft ly\n.re ceive\nĠE RC\nĠdata Set\nBad ge\nĉ Event\nĠper l\nĠ{} \\\n(s entence\nOr Update\nĠdim inish\nP IN\n(d raw\n.To DateTime\n.Equal To\n(p in\n-p encil\nlu ent\nĠCall er\nĠplay ful\n- '+\nx ca\nsw ick\n){ }Ċ\n}: ${\nĠM eth\n.get Cell\n.b reak\nĠy max\n=' <?\n- json\nĠprime iro\nĠind ice\nãĤ £\nĠUN ITY\n( ab\nÑĨÐ¸ Ð¸\n_H AVE\n-year s\nĠErd ogan\n-st ack\nĠdis charged\nĠbreat htaking\nĠgrass roots\nĠAs ide\nh ell\nĠsn akes\n/ logout\nĠmin Width\nĠH ear\nĠSton es\nĠWis dom\nĠEven ing\n_bl ank\nĠProm otion\nĠM MM\nĠB ars\nãĤ ·\nn j\n_T I\nĠSocial ist\nĠE G\n- opt\n=\\\" $\n(d ialog\nĠbeh old\nĠintr icate\nĠerect ile\nExtract or\nĠs cl\nĠcl as\n(h istory\nident ally\nĠpne um\nR and\nĠL aptop\ncall er\nĠF lood\nopen ed\nudd er\nĠGet ter\n_w alk\n( weight\nĠAlexand ria\nĠtable au\nV ari\nĠ --------\nèĩ ³\new orthy\nSpec ification\nĠthreshold s\n(\" \");ĊĊ\n_f our\nĠSad ly\nĠ(_ )\nism atic\nĠJ ail\ntoHaveBeenCalled With\n.m ar\nĠpre views\nĠsca ff\nind icator\nĠcode cs\nĠaut oc\n(r t\n.get Hours\nĠR H\nĠSur ge\niv amente\nĠcont ender\nCppGeneric Class\nĠ;; ^\n::* ;Ċ\n- record\nĠm ama\nĠimg s\n.is Loading\nĠneed les\nĠencuent ra\nod ata\nĠBuffered Image\nĉ java\nĠT omb\nUN ITY\nĠlinger ie\nĠJama ica\nbug s\n** ĊĊ\nĠM ao\n.begin Path\nĠprostit ut\nĠPhilipp ine\n_s f\n_p ow\nĠS cho\nx de\n' Ã©t\nâĢĻ aut\nais on\nĠFile Info\nturn stile\nd ream\nĠi Var\ns yntax\nill iseconds\nprofile s\n_REG EX\nĠÐ´ Ð¾\nĠComm un\nB et\nip zig\nĠM emo\n.id s\nĠphotograph ed\nĠapprox imation\n: variables\nĠmod ificar\n_SM ALL\nĠH emp\nĠdis respect\nĠcont ested\nĠinnoc ence\nill is\nS ymbols\nĠinspir ational\nĠdiscipl inary\nĠPer manent\nĠdes cr\nĠUN DER\nÑģ Ñĭ\npress or\nIM ER\nĠmount s\nĠmor ally\n_SE COND\n.file Name\nãĥ Ĺ\nĠconstruct s\nĠS UN\nES P\nFin ancial\nĠN ur\nÃ´ le\nric ular\nĠUser Manager\nibil idad\nĠon Response\nĠfilmm aker\nĠal ot\n_THREAD S\nĠenvironment ally\n................ ........\nĠr ash\nĠLy rics\nĠip airs\nBack up\nSign up\nĠ@ {Ċ\nJ Unit\nwork flow\nĠCom pletion\nĠint uition\nð Ŀ\nĠm ia\nĠSn ackbar\nĠT in\nĉ instance\nĠMus ical\nĠwel comes\nĠred raw\n_col our\n_REAL TYPE\n_s ince\nĠByteArray OutputStream\n-d emand\nare th\n.p ad\nse k\n', ...Ċ\n-f ire\n. |\nĠnum b\nĠDO UBLE\nAM AGE\nch mod\n- il\nĠalarm ing\nC op\nå¤ ĩ\ninv ite\n_ITEM S\nĠle uk\nĠre el\nĠfulfill ment\nRest ore\n_ rr\n( classes\nĠp aging\nym ax\nr apped\níĻ Ķ\n}` }>Ċ\nĠH iro\n( TRUE\nas urer\nĠcu er\nU ber\n. Operation\nĠol an\nĠthr illing\n< Response\nĠF emin\nĠtravers al\nĠp oc\nĠset Status\ndecl ar\nstd afx\nĠaddict ive\nĠB tn\nĠexplos ives\nĠCook ing\nĠPl aint\nĠaccum ulator\nĠApp ointment\n, password\nĠF AR\nlu et\nFurther more\ndecl spec\n_Static s\n.D ictionary\n\"> '.\nĉ valid\n\" \",\nIn strument\n> J\nĠno str\nĠR ift\n_P ort\nĠvec es\n[ ['\nĠrall ies\n- series\nĠv v\n. uc\nĠr tn\nState Changed\n( ins\nĠCl a\n------------ Ċ\nc us\nĠRel oad\n//---------------------------------------------------------------- --------------------------------\n.se conds\n_dest ination\nĠscrew ed\n> c\nTh ickness\nDesign er\nĠgr ids\nn Äħ\n( cookie\nT rip\n-M obile\nĠv oll\nĠgen ital\nĠconf isc\nĠConfeder ate\nĠweb View\nĠm ise\nĠcl er\n(se lection\n$ date\nĠshar pen\nrag en\nAnd Update\nĠrem ix\nĠh tons\nR W\nM PI\nĠretrie val\nĠric hest\n.Dec ode\n:init Components\nĠT Value\nS aint\n@ include\nĠPER SON\n.se p\nĠLD AP\ng ba\nĠgro ÃŁe\nĠreli ably\nĠD FS\n.getItem Id\nĠprÃ©s ent\n.get Token\nĠch inese\nĠMe al\nY OU\n\"><? =$\n( choice\nĠphenomen al\nĠSte ele\nÂ ¢\nĠPackage Manager\nĠSynd rome\nDirect ories\niv ar\n.un subscribe\nlie ÃŁ\nmon o\n_connection s\n_pres ence\nyn y\nKn ife\nĠgro ove\nĠsco op\nTEM PL\nas aki\n.ham crest\nĠhar bor\nc ov\n* z\nĠX u\nĠpro posing\nĠFR AME\nCh ip\nĠE en\nĠìł Ħ\nĠsm ashed\nUn signed\n( ..\n_f inished\nĠget Status\nĠfib re\nAx es\nĠ'/ ',\ny ards\nM DB\n- bs\nint ent\nĠboost er\n.d st\n.Dialog Result\nĠM ets\nĠbe asts\nincre ments\n.k afka\nUIAlert Action\n- ever\n_b al\nĠh elt\nĠfre open\nĠRec ruitment\nlic ts\nforget table\nDisplay ed\n_V ENDOR\nCol lege\nASC II\nĠS ink\nĠM aced\nĠc tor\nĠest Ã£o\nĠWinds or\n_check ed\n_d etect\natt end\nĠx min\nĠind ispens\n/p erson\n_DETAIL S\nRED IT\nH ay\nab olic\nĠfunct ools\nia is\nFT P\n_R ect\nĠInd y\n- public\noh an\n_man age\nCom puted\nìĹĲ ìĦľ\nĠS lice\nĠg ays\nĠa lex\na its\nĠreceipt s\nS PEC\nĠBE FORE\nĠP refix\n_vis it\nĠsp un\nLET ED\nĠd ow\nĠlegal ization\nabb age\nĠcl aw\nĠT cl\nx ima\nĠco vert\nN i\nĠthank ed\nĠallerg ic\nlo ver\nĠBre ast\n.is Active\nĠgeb en\nVER SE\nZ ONE\nĉ Result\n'). '\nĠg ee\nĠSer iously\npur ple\nĠEsp aÃ±a\nif ie\n-p ack\nPart icles\nĠ'/ ../\nĠmult imedia\naut ocomplete\nĠTH READ\nĠrefer encing\nreet ings\nĠqu oting\nĠassist ants\njen is\nh appy\nĠl ays\nlib ft\nx da\nĠf ou\npi ar\nRe commended\nĠBird s\nĠW arranty\nÃ¼r lich\n.IN VISIBLE\n_ anchor\nâĢĿ :\nF ant\n_def s\nĠdream ed\nĠ______ _,\npl a\nÃ¤ ft\nod ka\nÄ± s\nĠd addy\ns chemas\n= zeros\nĠr att\nĉĉ ĠĠĠĠĉ\nie j\nĠdr ills\n- <?\nAB A\n.l inks\nĠDependency Property\n.l ow\nhe ed\n_BL ACK\n/ Admin\nĠam igos\ning ed\nĠMic key\n.Get Axis\nĠNeed ed\nĠEnc ode\nÃ©rie ur\nĠMan ila\nĠCol leg\nad astro\nĠch icas\nä½ ł\nĠones elf\nxe a\ndu k\nĠg w\nurg ical\nĠCent ro\nĠa es\nfe el\nĠt rot\nĠelectron s\nĠritual s\nĠB ilder\nĠdecor ate\nĠToken Type\nĠl ure\nApi Client\ngr pc\nĠO rc\nContext Menu\nP REFIX\n-th emed\n_f ifo\n.InputStream Reader\n_spec ific\nĠD SP\n=sub process\n/s he\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĊ\nĠda unting\nĠclear s\nĠM oves\nĠmyst eries\n-b est\nĠV u\nol ib\nĠI sh\nĠcar act\n( Label\nĠDe bian\nĠEx perimental\nĠc av\n.To Decimal\nĠRh odes\nĠHaw ks\nĠf ountain\n_P ENDING\n_S U\nĠwx String\nĠP ew\n.c li\nÑĦ Ð¾ÑĢÐ¼\n.web kit\n_C N\nĠ;; =\nĉ namespace\nĠw Param\nĠpup pies\nĠtermin ology\nĠadd icted\nĠfor ge\nĠGard ner\nĠp essoa\nĉ ResultSet\nĠatt enu\nang ement\n_ inds\nCh i\nar ith\nEncoding Exception\nm ousedown\nĠBET WEEN\nwe igh\n\" For\n. dd\nit el\nY O\nĠD ice\nun ix\nĠOb t\nĠC edar\nĠspec imens\np orn\nĠun official\né» ĳ\ns ometimes\nĠBul ld\ntr ust\nget Result\nĠsm okers\nĠsandwich es\nĠex h\nĠF ade\n_D C\nĠmasturb ation\nfort awesome\nTH ING\n_ android\nĠded ic\n-s ensitive\nĠnack t\nLIB INT\nĠag on\nĠDIS ABLE\nones ia\nb ies\nĠZ IP\nĠha unted\nĠc uid\n/c art\nk os\nĉRT LU\nĠh inder\nĠadip isicing\nI ENCE\n.b ank\nĠCy prus\nm ixed\n.c y\n-s ingle\n< len\nCom ing\nĠfault s\nĠfore see\nget line\n\" a\nĠbr ag\nĠdisc s\nĠr ipe\nĠn Ã¦r\nĠG G\nSH OT\nder abad\n( edit\nTo Left\n[] );Ċ\nĠdo Get\nv ature\nNeed ed\nĠCh eng\ncc i\nEF I\nĠfe ud\nĠlun ar\n.Sh ape\nN obody\n_TR IGGER\nC y\nground Color\nĠRem oval\n(b ottom\n$ msg\nSC II\nrit z\nĠfre nte\nĠcomp ost\nanswer ed\nĠRod r\n_HT ML\nĠsil houette\nĠQUE ST\nĠCath edral\n.Com ment\nĠM n\n-n etwork\n.get File\n.g enerator\nĠCheck out\n_z oom\nĠencode URIComponent\n_T C\ns om\nĠSer ie\nĠbase URL\nĉ run\nĠh uh\n.selected Index\nĠST AR\n~- ~-\nabcdef gh\n.m apping\n= datetime\nC ool\nn im\nĠDirect ive\nF ederal\nĠmenu Item\nĠÐ Ĳ\nAn na\nĠRec reation\nry an\n- aged\nzer bai\nâĢ¦ âĢĿĊĊ\ncamp o\nĠmini ature\ndet ach\nmean ing\n_ emp\nPe ak\nĠb cm\nĠHung arian\nĠC ascade\nĠs acks\nĠtr uncate\nĠâĸĪ âĸĪ\nĠwh ales\nĠsort able\nĠassert s\nĠse als\nocy tes\n] )))Ċ\nal arm\nress ing\n(s ignal\nĠem peror\nĉ ON\ncommit tee\nĠtr ilogy\n.Transaction al\nG row\n_u art\nĠsw ings\nĠspect acle\nâĢĻ av\nĠSent inel\nĠ ÙĦ\nĠT ou\nĠwid ow\nger ald\n, uint\nĠunus ually\n< Card\nĠRest art\nm or\nãģĤ ãĤĬ\nixed Reality\nĠhand gun\nâĶĢâĶĢâĶĢâĶĢ âĶĢâĶĢâĶĢâĶĢ\nĠlith ium\nRes olve\nget Bytes\n/ functions\nĠtack ling\nOut lined\nĠ} </\nĠSex o\nĠAn k\nĠr ationale\nremove Attr\nĠmunicip ality\nĠassault s\nCHO OL\nĠRe e\nĠb aud\n¦ ¬\nĠenh ances\nĠÐ¿ÑĢ ÐµÐ´\nĠcon cess\n.inst agram\n.get Response\nseg ments\nĠwell being\n};ĊĊ ĊĊ\nh ung\nãĥ Ĩ\nĠrenov ated\n.ex pected\nĠrad ial\nĠcomm unal\nuser Manager\n+ a\nĠfundament als\n.T H\nè Ĥ\nĠr ant\nĠStr aw\nĠOle Db\naz io\nĠh amburg\nĠpaint s\nĠth umbs\nĠNull PointerException\nĠg roupe\nĠHome Component\nĠbal lo\nĠINIT IAL\n_ are\nĠP es\nurs es\nĠbard zo\n.get Length\nam oto\n.notify DataSetChanged\nien es\nen zie\n_ emb\num ni\nsm ooth\nĠD ro\np aste\nĠN arr\n---- ĊĊ\nÏ ī\nĠA utor\nĠout ros\nĠL ABEL\n.p a\n.St udent\n(X ml\nĠethnic ity\nĠI vy\nãĤ Ī\n_f ake\n? (:\nupload ed\nget Manager\n-Q aeda\nod iac\nConn or\nih an\nM AT\n(m id\nĠAl ban\nĠso ir\nCom bo\nĠPublic ation\nop oulos\np is\nĠtemp les\nong yang\n_cl ients\nĠro ds\nĠx c\nij ken\nĠre ap\nĠä¸ĭ åįĪ\nĉ connect\nF ocused\n, count\niet et\nĠh acia\n_alloc ator\nĠtoxic ity\n(se quence\nĠnuest ros\nĠPrincip les\nĠl le\nalar ia\n.write String\nĠA FL\nif ndef\nĠD os\nÅĽ cie\nĠAg gregate\nĠsacrific es\n_offset s\nld b\nĠl atch\nĠfull screen\nmiss ive\nOPTION S\nĠTele phone\nĠar senal\nje jer\nĠH osp\nĠfavour ites\nr ive\n.in crement\nĠb v\nĠFant astic\n.s ay\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠmedic inal\nĠD ROP\nĠp ity\nmet is\nĠw ollen\nĠbe f\n_B l\nĠ> >ĊĊ\nb ower\nĠsw apped\n/ install\nĠs inks\netr ize\nĠdecl ines\nĉm ysql\nĠC String\nĠMotion Event\n.L anguage\nR oad\nÑĤ ÐµÑĢ\nasc imento\n')) ->\n. about\n( editor\nĠR atings\nin come\nÅ¡ e\n.de queueReusableCell\nĠAust rian\nĠs ulla\nĠTrib unal\nĠDid n\nÐ¾Ð² Ð°ÑĢ\nĠins pections\nB oss\nĠcock tails\nĠapolog ized\n_sub plot\nop al\n+ =(\nĠreson ance\nib u\nĠë ¦¬\nrom a\nres erve\npl s\nĠT ah\nax ies\nOP LE\nĠDar ren\nĠZ ombie\n_M ap\nĠ] )ĊĊ\nĠQ i\nĠS ail\nĠrestrict ive\nĠeros ion\n- par\nWH ITE\nĠold u\nĠap erture\nĠbit coins\ntext o\nĠCom cast\nĠtime less\nen kins\nĠfeed er\n/ tmp\nres den\n+' _\n.D estroy\nĠÃ§ ok\nĠD OCUMENT\n.l ng\n.tag Name\nĠk ullan\neg rate\nĠ(* .\nç¼ĸ è¾ĳ\nĠhand shake\ns oc\n_ geometry\nĠDam ascus\nMin or\nĠK afka\nìĹ ¬\nFl orida\n_com pute\n.ex pr\nĠpar alle\nĠD iaz\nc ir\n[ target\nĠj oking\nĠgl or\n(set q\n_hand lers\nH ang\nĠf err\nrim inal\nĉĠĠĠĠ ĉĉ\nent ies\ndef ines\n-t ax\njson p\nĠU PS\nmet ro\n__ ;Ċ\nĠUg anda\n])) :Ċ\n_t d\nx ae\nl w\n. OS\nĠLog ged\nac id\nĠMay o\nas pect\nĠvag inal\nĠinitial izing\nĠster oids\nf iction\nG RE\ng end\nĠli abilities\nĠL ets\nM ech\n( nc\n( change\nĠconnect ors\n: k\nĠt ast\n! \");ĊĊ\nth ings\nro phy\nluet ooth\nĠSign Up\n. ctrl\nĠthere in\nord a\n. escape\nig ator\nĠpet rol\nĠspec imen\nĠdeb uted\n- Pro\nĠcr ises\n.add View\nëı Ļ\n-d oor\nĠmon et\nĠmill is\nĠv ier\nInternal Enumerator\nĠadmin s\nĠL air\nz in\nget Query\numb les\nL IMIT\nĠV ig\n_s ong\n< Character\n:: .\n_h om\n_b p\nĠSup ervisor\nsub mission\nab ile\nĠno i\nOr Create\nĠpe el\nĠon Start\nĠsent iments\nveh icles\nĠclass rooms\nĠs zer\nĠb ending\nĠlong evity\nĠa cl\nĠAle ppo\nĠU M\nĠR icht\nĠmultip rocessing\nDOM AIN\n\",\" +\n_Y EAR\nĠsc rape\nĠsol itary\nĠ\"] \";Ċ\n/ errors\nìŀ ¬\nľ ëł¥\nb etter\nĉ number\nĠL F\nĠAc ross\nPub Med\n\\\" \"\nĠExcell ence\nĠus ando\nĠU IP\nActivity Indicator\n_V OID\nĠbre eds\nï½ ¥\nuest as\nĠTre asure\nustral ian\n(f ace\nĠT ennis\nĉ Int\nĠHans en\nç µ\n: I\nĠâľ Ķ\nGR AY\nO USE\nĠhe pat\nł í\nA IR\nÃ³ Å¼\nĠque ued\nvinc ia\nĠChrom ium\nĠcompet ence\nung al\nill i\nĠget By\nĠF inder\nĠincap able\nĠs add\nĠc ites\nĠChurch ill\nS dk\nMore over\nAs pNet\n( Float\n$ password\nĠConn or\n-s ession\n_d m\n* ))\nĠde utsch\nĠN X\nĠper ks\n_S ORT\n_TO OL\n_V ISIBLE\n.as p\næĪ ĸ\nĠBre ath\nD etect\nĠD uel\n.c mb\n[ it\n.Set Bool\nĠnarc iss\nĠab ide\nĠej emplo\nĠâĦ ķ\nĠm ornings\nĠcomput es\n.s sl\nj t\nĠmuch os\n_S S\n[ end\nĠbas in\nĠalgun os\nĠCroat ia\nlin ewidth\n(t ags\n(h idden\nÃŃc io\nĠap ar\nĠÐ ¶\nä¸ İ\n. food\nĠR ural\nĠbread th\nå½ ±\n(s ess\n+ \")\nĠP aste\nĠserv idor\nĠBit Set\nĠTr an\nla us\nv ette\ney es\nĠCL ICK\nĠV III\nĠTurn s\nĠLe Bron\nĠM uj\nĠD eg\nĠAdult s\n_s uite\nprocess able\nĠPH Y\ng hest\n.F ail\nĠSl ack\nce j\n\\ Carbon\nĠsuper star\nĠhold ings\n( forms\nĠ'# '\nM ultip\n(\"[ %\n-s olid\n/ url\n-t ier\n[ length\nĠStream Writer\nĠMarket place\nget text\n_T ICK\nĠFor ge\nĠblack jack\nĠDO ES\nĠM atters\nw aves\nĠwhisper ed\nĠl ush\nìĺ ¤\nd igital\nĠwr ink\nĠH ogan\nĠrust ic\n.Apply Resources\nĠHard y\nos omes\nA UT\n.ST ATE\nĠnarr atives\nĉ store\nb ib\nĉ Scanner\nĠC ody\n\\ Repositories\nĠre union\nand um\nâĢĻ h\nĠsn iff\nNS Bundle\nĠcompreh end\n_US AGE\n_ occ\nURRE NCY\nJ NI\nĠspecial izing\nĠvis ions\nĠdol ore\nĠv Ã¡\nĠChe vy\nĠSt yled\nimp act\nall en\nĠk art\nĠTable t\nst uff\nre esome\nÐ°ÑĤ Ð¾ÑĢ\n//---------------------------------------------------------------- -----------Ċ\n_Ad min\nĠcell phone\nĠaut oplay\nĠcamb io\nĠmar itime\n_BO OT\n- quarter\nĠlat ina\nĠAJ AX\ne quiv\nĠFront ier\nĠX Y\n} ]Ċ\nĠR ough\n.pro to\nĠcorrect ness\nĠfac il\nĠRe ached\nãģĿ ãģ®\nV IS\n.p s\nĠstr ncpy\nĠdiff usion\n.start Activity\nï¿½ï¿½ ï¿½\nĠaccom p\nAMES PACE\nimon ials\nĠBl ast\naby rin\nĠd ome\nĠextr av\nĠy en\nĠcul inary\nP RI\nĠComm unities\nn id\n_oper ations\n.h s\nĠMil ton\nĠno ises\nAutoresizing Mask\n(c id\n}ĊĊ ĊĊĊĊ\n] },Ċ\nĠD etection\ntab la\nĠlib erties\n_D YNAMIC\nw get\nĠT Ã¼r\nĠP ascal\nTrans parent\nDelay ed\n] ()\nĠHer bert\n< ActionResult\nch allenge\nĠmush room\n.insert Before\nĠR in\nĠhum our\nĠf Ã¸\napi Key\nalloc ated\nĠconf ession\n. \",čĊ\nĉassert That\nĠS ORT\nĠL ORD\nĠexport er\n.set Level\np okemon\nash tra\nĠf Ã©\nur ator\n(M SG\nĠt up\nĠH ull\nĠyield ed\n.Sub ject\n\\ Route\n! ?\nĠÑĥ Ð´Ð°Ð»\n\\ Security\n- ar\nĠalleg ation\n( Settings\nÃ¤ nder\nĠell ipse\nĠRetro fit\nĠregul ating\nĠM olly\nĠL ok\n_C ustom\nĠProm o\nis in\nĠres umed\nĠmet ropolitan\n.error Message\n: -------------</\n.m l\nsc opic\n.ref s\napt ors\nĠIn struments\nĠpropag ate\n} ->\nĠpas ado\nth ank\n_De lete\nĠBright on\n, unsigned\nä½ľ èĢħ\nĠaspir ations\n-h ow\nR ose\n= ((\n_ne eded\n_pl ural\n< Application\nĠW EEK\nĠUn lock\nĠT EMP\nS ou\nĠschizophren ia\nĠt roll\nĠcomplement ary\nĠNET WORK\nĠbl ir\nĠprogress Dialog\n\" %(\nĠAttribute Set\nĉ ts\n.iter items\nè¯ Ŀ\nĠesc rit\nv ous\n_pl aces\nH K\nĠseg uir\n_f w\nĠR ounded\nĠdis posit\nè§ Ĩ\npar m\nw ow\nSTRU CTION\n. allow\nĠChar Sequence\nĉ extern\nĠprosec uted\nĠmort ar\nĠJ uda\n- msg\nĠest ud\n.get Description\nĠs ow\namb re\nĠrom a\nEn h\nbon us\nĠsqu at\nĠdist ra\ned Image\nĠpe ppers\n-per formance\n, ĊĊĊ\n, file\nĠM IME\n_con cat\nAB S\n-f ashion\nĠunder cover\nOne ToMany\nĠre claim\nC OPY\nĠb inds\nĠT ape\nĠg ossip\nĠEqu ity\n/ Card\n. activ\n' am\nĠdrain age\n< Scalars\nĠonBind ViewHolder\n() ?.\nĠs orrow\nĠI b\nup y\n_U UID\nĠCh arm\nĠElection s\n.on Destroy\nĠInterest ingly\nounding Box\n_d etection\n-h eld\n_ unknown\nĠrefr ain\nĠmÃ©t odo\nĠe Book\nEN OMEM\nĠd ang\nProf essional\nĠd ictionaries\n/m ysql\nĠST UD\nĠmas se\ns cape\nĠdre i\n: name\n.log o\nSign Up\nĠt ahun\n( theme\nĠFem me\nĠbom ber\nĠJ ade\nĠT ay\nĠsubmar ine\n_cl ause\nzy ch\nĠsimult aneous\nĠcas os\n. boolean\n(l hs\nĠcontin ental\n-s ale\nĉ env\nĠC ute\nĠFactory Girl\nab us\n/ value\nĠj adx\nĠst ern\n> >ĊĊ\nĠsurf aced\nĠìł Ģìŀ¥\npl atz\nĉ email\ncept ors\n\"> (\nĠep ile\nè¯ »\nĠDe bt\nåĳ Ĭ\nN OP\n\" https\n: j\nForm Item\n_L ICENSE\n.get Double\nĠAg enda\nĉf inally\n(f ilters\n( av\nç¾ İ\nAP ER\nĠl ava\nÐµÑĢ Ð¶\n)) ))ĊĊ\nĠfault y\n_n m\nĠtr ava\n(B itmap\nĠspeed ing\n> ').\nĠscreen ed\n_ roll\nĠMac Book\nĠA UD\nĠdiagn ose\n.G enerate\nĠ^ ^\nĠstr s\n[ Test\nĠr ansom\nĠDH CP\neld en\nĠinterpret ations\n() ].\nflat Map\nĠline Height\n_m ount\nĠW izards\nĠsl uts\neh ler\nod al\nĠmilit ia\nå ²\nearn ed\nĠmis ery\nint val\nf und\nĠh ides\nĠdi arr\nĠWes ley\nĠx mm\nĠqu em\nĠAr abs\nif th\nategor ized\nDis posable\nP ure\n_NOT IFY\nsn ippet\nĠGar rett\n.run ning\n. weights\nĠ( --\nĠin variant\näºĭ ä»¶\nĠAll owed\ndir s\nĠpass ions\nĠl ad\nĠFl ush\nmen us\n: block\nĠcompr a\n.ch omp\nalloc ator\nĠcur ated\nĠKnow ing\nĠPatt erson\nĠtel ah\n' ex\nĠdo omed\nĠphil anth\nott y\n.st yles\nOwn ed\nĠallerg ies\n= params\noc ese\nit elist\nĠS ending\nb ef\norr ar\nĠN Ã£o\nĠF argo\nĠL ub\nĠComb ined\n_g iven\nĉĉĉĉĉ ĠĠĠĠ\nĠreconc iliation\nPattern s\naz ard\nĠbiom ass\nĠH ouses\nresp uesta\ncc o\n/top ics\nĠY uk\nĠweaken ed\n_c alendar\nĠmulher es\nĠMar l\nĠs ine\nĠT il\nĠSou ls\nĠDe utsche\nĠF OLLOW\nĠpip elines\nĠBever ly\n_DIP SETTING\n\" #\nĠPro to\n.b ig\nĠSav ings\nĠT anz\nj un\nĠG amma\nĠS add\nĠadvis ors\nĠro ast\nĠun ters\nud ies\n_l on\n-point er\nĠElement Ref\n\\ Builder\nexample Input\n.web driver\ndata Type\nĠQu ite\nĠCelt ics\nu il\n-def ense\nb ish\nĠUI Window\nĠS uddenly\n.h ot\n.re ason\nĠg Ã¶r\nAM D\n.M ulti\nauth enticated\nreg ions\n; (\nÐ° ÑĢÐ°Ð¼\nĠKir by\n$ route\nPREC ATED\nĠDur ham\now o\nĠPer forms\nĠdisreg ard\nn st\nĠP ols\nĠget P\n\"] :\n-col ored\n( Keys\nĠAl leg\n_mod ify\n_ loading\nstr ained\nĠat roc\n_p hr\n< Sprite\nĠsatisf actory\nm anship\n.p ipeline\nT ony\nĠth ief\npol ator\n( lock\nbur st\nĠOptim ization\nĠsurf ing\n\" Yes\nĠdesc ended\næ Ĵ\n_C lear\nĠc ries\nĠFro zen\nD IRECT\n- Con\nĠLe icester\nå¥ ³\nO OM\n= db\nĠget Message\n< Student\n_b atches\n.M ask\n_ eth\n\\ )\nĠsom a\nC atch\n[ ch\nOwn ers\nind le\n: auto\n. vert\niv r\n.set Location\nĠfl uent\n_END IAN\nĠCar lo\ncept s\nadd Action\n.o auth\n< UnityEngine\nre ements\n.S kip\n? )ĊĊ\n.default Props\nĠc abe\nĠSh en\neros is\nĠPro fit\nĠpo is\n_C REATED\nĠremove From\n(w s\n? action\n( Field\nĠerr one\n.min imum\nĠRetrie ved\nĠd ado\nĠPR IVATE\n-s pec\nĠg zip\np data\nĠpos Y\n(l ow\nĠqual quer\n/ cloud\nê² Į\n( common\nĠAr beit\norgan isation\nĠtid y\nĠRol and\n( ph\n.z one\nĠgent lemen\nÆ°á»£ c\nå± ±\nĠenc losure\nĠMan afort\nĉ Color\nSt encil\nN ic\nĠthe orem\nĠV G\nĠcol oured\nV BoxLayout\nuls ive\nDrag on\nc ff\net est\nens a\nof day\n.A zure\n:UIControlEvent TouchUpInside\n_up dates\nĠtrend y\nug as\nweak Self\nĠr idge\nib ri\nĠì¶ Ķ\n(C G\nĠMon key\n.write Int\n.tim edelta\nViewController Animated\nĠProvid ence\nãģ Ī\nĠbl ends\n/Sub threshold\nĠAp pl\nĠat an\nĠreload Data\numb otron\nst Ã¼t\nO Auth\nĠG iving\nĠìĦ ¤\nĠFinn ish\ncheck ing\n. Embed\nsequ elize\nĠinitial izes\nĠOs lo\nØ ¶\nget Extension\n_AL T\n(bl ank\nĠfatal Error\nĠdem ise\n**** *Ċ\nĠX S\n(A F\nĠEn s\nan tha\nĠP OR\nĠn ich\n.N amed\nĠgig antic\nĠObserv atory\n.Res olve\nĠPay ments\ng uild\nĠcurrent State\n============ ===Ċ\nĠS ey\np Data\nĠdead lines\nĠcentral ized\nĠScholar ship\n_s upported\n.ch rome\n() ]);Ċ\nĠc yan\nĠC age\nAuth ors\n_ čĊ\n/ os\nk im\nde e\n.t ex\nĠyours elves\nĠm gr\nĠal k\n-inst all\nĠdraft ing\nĠrum or\nĠstat ues\nPool ing\nol ina\nAAAA AAAA\n/* ----------------------------------------------------------------------------\nĠextrem ists\nCal cul\nighth ouse\nIn set\n(IN PUT\nĠsynchron ization\niv irus\n. axes\nĠG ap\n- An\n_T emplate\nĠgam er\nĠCr icket\nĠl int\nĠauthor itarian\nNS UInteger\nĠred o\nĠadip iscing\n_F ETCH\nche id\nĠF ang\n. indices\nt one\nÐ´ ÐµÐ»\nĠ{{-- <\nbra him\nĠsal a\nget Code\nĠcommunic ated\nstart sWith\nert z\nRead able\nItem Id\noref errer\ncred ible\nÃ¡ ria\nĠcombine Reducers\n** /ĊĊ\nĠbl iss\nĠad orn\ndep ends\nĠRO OM\nĠfr aming\nĠ? ',\naut y\n_p ot\n_t abs\nEx act\n, \",\nĠ'} ';Ċ\nĠarbit r\nahr ain\n.getString Extra\nĠ$ \\\nĠoutput Stream\nĠcomm enc\nan us\nch y\n< Employee\nĠhex atrigesimal\nĠn acional\n(serial izers\n_put char\n_S AFE\nential Action\nItemSelected Listener\n.Dis patch\nConf lict\n_ about\nos aur\nBound ary\nĠclear Color\n( Location\nĠMON TH\nĠT aste\n- General\nĠW AR\nĠer halten\n-s aving\nĠcou pling\n-tr igger\nm otor\nĠy yyy\nĠPat ent\npt o\nĠmisdemean or\nvas ion\nĠAdmir al\nà¹ī à¸²\n_P WR\nĠdevast ated\nfol ios\nITU DE\nurre ct\nĠrobot ic\nĠSan ct\nĠHawai ian\n.R oute\n- condition\nĠr k\n/**************************************************************************** Ċ\ncreate Element\nĠK op\nign ant\n. rollback\nĠsal ud\n_ ',\nĠAN SI\nEx cept\nĠDraw able\n.Utc Now\n\":[ {Ċ\nĠk ole\nL ua\nĠBel ieve\nCom put\nĠhall uc\nĠSign s\nr st\n.h u\nĠKN OW\nW i\nĠBr ass\nĠR as\n@ hotmail\nĠsed iment\nĠap k\nĠì ĥģ\n_reg ions\nĠpod ium\n< Book\nÐ¶ Ðµ\nĠsix teen\nĠAli as\nĠinfr ared\nĠV ander\nĠLe ading\nuc ing\n,: ,:\n_h or\nw at\nĠdÃ© cou\n_W idget\nS ounds\n_n avigation\nĠschn ell\n(g enerator\nuc ene\nĠrem ake\nIP v\nĠrÃ© al\n_IN CREMENT\nĠhypoth etical\n_ ang\nĠof s\nĠ! Ċ\n.com pleted\nGet Type\nĠkom men\nÃ¡l ido\nadd On\nĠz ÅĤ\nUL A\n_ind icator\n'] ĊĊĊ\nap ache\n_S elect\nĠGre ene\nWh ats\n_an im\nĠrepet itive\nm uch\nĠTh reshold\nĠl f\n(C ategory\ncon e\nM ix\n_MET ADATA\nays ia\nNe ighbors\nĉĊ ĉĉĊ\nIP HER\nĠFr ag\nĠC ells\nĠnames paces\n( back\nĠRest aurants\nsv c\nĠÐ» Ð¸\note ch\n-s l\n¥ ¿\nĠW T\nĠRed uction\nĠd otted\nĉf ound\nĠTE AM\nB orn\nĠM ush\nĠCompar able\nĠh itch\nAT O\nĠmax Height\nbegin Transaction\nÃŃ v\n_b n\nĠher d\nĠrevers al\nĠH ond\ndel imiter\nĠconf use\nĠh ops\nĠcent roid\nĠcourt room\n.decor ators\nĠm pi\nĠImpro ved\nIN NER\nĠBang alore\nĠT amb\nĠbo ast\n() ))čĊ\nĠil licit\nĠMor occo\ngreg ator\n_res ume\nĠcrack down\nĠport raits\n/h igh\n( \\'\nĠay ud\n_fe edback\nĠc ate\n/ avatar\nĠhe b\nPoint Cloud\nĠå ĴĮ\nĠ< ![\nĠget Resources\n} :{\nOper ating\nĠF og\nĉt ab\nĠResearch ers\nĠfabric ation\n.datas ets\nĠCamp o\nĠKa uf\nĠd ll\nlig t\n] ));ĊĊ\nst ellen\nACK ET\nl vl\nĠGl ory\n.date Time\nĠcomm ute\nĠonCreate ViewHolder\nĠX Element\nĠT okens\n< thead\n_p ick\nì ¤\nv on\ndepart ure\n(render er\nphone Number\n(P erson\ngen es\nĠL ars\nĠ) {ĊĊ\nĠJson Result\nĠmet odo\nVO KE\n.get UserId\nAcc eler\nĉ required\nĠchampionship s\nBuild Context\n/t ask\n/re leases\nC ategoria\n_over lay\nĠscar ce\n_l im\nn gr\nah len\nĠArt ificial\nsp read\nĠbow ling\n.an alysis\nSM TP\nĉp assword\nĠbath s\n] )){Ċ\ncurrent ly\nac iente\n_se parator\nĠde ber\nĠDis abled\ni Ã¨res\nĠâ ķ\n_process ing\nĠprotest ing\nĠR OT\ngr ab\nĠÐ· Ð°Ðº\nĠpro active\nword press\nĠSe ver\nind en\nĠw ikipedia\n){ čĊčĊ\n_w indows\nis lation\nĠun rest\nĠdismiss al\n.N UM\n_F AST\niss ued\nĠF ACE\n_u nder\nĠpl ugged\nĠå °\nĠbÄĻd zie\nĠI CC\nĠcombust ion\nĠkiss ed\nĠstar red\nĠW atts\nĠspi elen\n-p urpose\nĠE val\narg es\n, result\ntechn ology\nĠnational ity\nic us\nĠN ug\nĠÑĤ Ð¾\nĉĉĉĉĉĉĉ ĠĠ\ncol o\nĠg astro\nante ed\nOL ID\n.b ias\n_t ele\n.ins pect\nĠve il\n. footer\nĠneglig ence\nĠjud gments\nRoom s\nyn n\nĉcount er\noccup ation\nĠ çĶŁ\nun as\nĠ(^ )(\nL ambda\nf el\n.Param s\nĠÐ´ Ð¾Ð±Ð°Ð²\nset Layout\nĠdeport ation\nĠlocal Object\nĠPharm aceutical\ncept ive\nĠN ome\nEqu ipment\nF an\nUn iversal\nĉ socket\nĠgr in\nĠex poses\nĠhab er\nĠsincer ely\nĠc ams\nĠm Ã¼\nen ia\nE mer\nC rypto\nSl ow\n(x hr\n! =(\n-s ervices\nĠP W\nĠprend re\nĠm Ã¤dchen\nem ons\nÐ¾Ð·Ð² ÑĢÐ°Ñī\n.M anager\nì Ļ\nĠg raf\n- ra\nmet rical\n/ fl\nĠc emetery\ng ens\nĠp ÅĻ\nĠMySql Command\n- To\nĠv Ã¥\nĠa irst\noment um\nĠserv o\nm illion\nĠMir anda\n\" She\nĠadvoc ating\n-c aption\nĠAt tribution\nĠwel che\n_v endor\nĉ Status\narr is\nĠprint k\n\",\" #\nĠrel ativ\nif ferences\nizz es\nĠdec imals\nĠPro v\n.max imum\nAr n\nĠhelicopt ers\n_B OTTOM\nch ure\nod ings\n' (\n\")) );čĊ\n( bean\n.f d\nF und\nĠhang s\napp id\n/k ernel\n.p oi\n.Min Value\n- validation\nL uke\nc df\nĠFun eral\nĠS amples\nĉ de\nĠto astr\nĠtax able\nĠcl ustering\nĠ'\\ '\nĠre straint\nec ed\nch ains\nãĢĤ ï¼Ī\n_GR APH\nĠfue led\néľ Ģ\nH p\nå¤ į\nT iles\nĠa unque\nJ C\nĠhost age\nĠE sk\nĠm av\nĠgest ion\nĠb anners\n} {$\n.int Value\n.' \"ĊĊ\n_M ATRIX\nĠce ased\nĠG OD\n_CAM ERA\n.Allow User\ntr acked\nC ook\nb airro\n( company\nĠview point\n.get Writer\nĠN ets\nw ives\nĠ( ))Ċ\nexample Modal\nĉ child\nĠmyth ology\nĠ// \"\n_ axes\nib old\n.D ark\nĠMax well\nĠg pointer\nolic itud\nB at\nul ner\nbal anced\nmail er\nĠcont empor\næīĭ æľº\n(\" __\nĠ\" )\"\nre ar\nĠHu ang\n] ')Ċ\n× ©\nFT A\nĠCalling Convention\nĠOutput s\nP k\n.Re ference\nlect ual\nĠ) :ĊĊ\nĠbrace let\nug er\nĉ Error\nS weet\n(\"/ \");Ċ\nh x\nĠun reasonable\nInter preter\nĠlo ft\n_product o\nĠsoci etal\n.P arser\nĠAd apt\n. foo\n( where\n.F eature\nĠYam aha\ng lass\nFor ge\nĠprohib its\nĠcapac ities\nĠíķ¨ ìĪĺ\nĠper mutation\nĠih m\nF ld\nel ial\n======== ===Ċ\n@ Configuration\nĠge ared\nios o\niest a\ntrans lations\nInput Change\nPop ular\nĠPL US\nĠv f\n_F ree\nb box\nĠcaus al\nPI LE\nĠsch Ã¶\nĠiron ic\nM ir\n. @\nåį Ĺ\nĠè ĩ\nR ew\nul ence\nfl en\nĠcan Activate\n- response\nĠacc ents\nign ored\nÂ° F\n.Dependency Injection\nĉ point\nĠconting ent\nĠsqu ash\nĠpar ms\nĠC emetery\nĠdelta Time\nĠD OS\nĠvan ished\nÐ°ÑĢÐ°Ð¼ ÐµÑĤ\nĠD PS\nt foot\nĠZ us\n_IN STALL\nG AN\nĠar b\nĠmunicipal ities\nInto Constraints\nAutoresizingMask IntoConstraints\n, image\n_ ignore\nĠdanger ously\nquis a\npl uck\nĠhar us\nup pe\nHttp Exception\nBr acket\n.' 'ĊĊ\nĠT ol\nĠView er\nzb ollah\n.Code Analysis\nÃ¬ nh\nĠcorrect amente\n.d a\nĠAl ger\n× Ĳ\nba um\nĠPan ther\npart icipant\nå¿ ħ\n-s up\nĠem ulator\nĠf ading\nĠW olver\ncre ates\nĠbook ings\n.Q uestion\n§ è¡Į\nĠstress es\nĠre written\n.PI PE\ned es\nĠc bd\n\": \"/\nĠenh ancements\n_s y\nB IN\nĠSl ip\nIns pect\nĠW eg\nĠcon gregation\nĠ_ :\n_r m\nFrame buffer\nĠ'& #\nĠFall out\nIs Required\nĠPear son\nĠF ACT\nĠrel ie\nĉ box\nĠShe pherd\nĠWiki Leaks\nĠCollect or\nĠres ized\nmethod Name\nĠevent Type\nĠA then\nDes criptors\nĠb ers\n- oper\nĠInitial ly\nå ¡\n_B TN\nĠĠĠĠĠĠĠĠĠ čĊ\nÃ¡ b\n_c ampaign\n_w atch\nF ord\n-date picker\nĠvis c\nĠsat u\n_s ms\nĠcont ador\n-s vg\nĠDO I\n$ args\nĠkn ob\n.B OLD\nĠdeb ated\nimg s\nsock opt\ntr uth\nĠFe es\nĠh Wnd\n_f ood\nĠab ras\nĠnot ions\nĠT od\n: create\nĠConf lict\nUs uarios\nOT OS\nĠm sm\nK HTML\n([ (\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠ} ]\nw izard\nĠm ientras\nĠdata List\nĠemerg es\nÄĥ ng\n.Read Int\nPG A\nILL ISE\nI Enumerator\n(t uple\nChrist mas\nLook AndFeel\nog enerated\nĠ# ĊĊ\ncontrol led\nĠex quisite\nĠa cest\nRead Write\nG ain\nãĢį ãĢĮ\nĠcopyright ed\nĠdo om\n.Table LayoutPanel\nĠD ort\nĠch ili\nĠwer k\nĠEVENT S\nĠBe acon\nĠship ments\nĠse bagai\nup on\nut om\n.con verter\n.Drop Table\n={ }Ċ\nf ic\n~ ĊĊ\nĠlesb ians\n_n a\nFore ign\nĉ then\n/ ms\nĠor i\nget Property\nĉsn printf\nhes ion\nãģ ¤\n\"} ,\"\nĠac rylic\nP ers\n@ Enable\nI sl\n(C ard\n. Stack\nL icensed\n_G UID\n: title\nĠh ust\nĠprincipal Table\nan itize\n/ embed\nĠens ured\nĠE GL\nÙĪ Ø±\nĠåĪ Ĩ\n/ ,Ċ\nĠfundra iser\nKey Name\nĠmarch ed\n_VAL UES\nĠSc enario\nĠmet ic\n_ass oci\nĠPast or\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉĉĉĉ\ner ate\nĠinv itations\nquo ise\nĠbl aming\nĠd aring\nUM MY\nĠrich er\nem aker\nĠIdent ification\nĠìĿ ¸\nĠBinding Flags\nch as\nĠresil ient\n_p g\nĠre leg\nĠI RA\nST E\nĠtr actor\n- loading\nĠPre viously\nĠV acc\n/ be\nĠn Ã¥r\nĠurl encode\nĠNor folk\n.Re lease\nĠNe utral\nä¸Ń åĽ½\nĠAr lington\nĠalleg es\nĠW riters\nTest er\nĠR ally\nĠc Ã¡\nĉ Print\nĠâĩ Ĵ\nĠUser Controller\nĠSeek ing\n.V AL\nList Node\n_ ff\nĠPhill ip\nFA CT\nĠc aramel\nĠM ultip\nĠCom pared\nĠSer bia\nŁ ³\nĠrev ive\nĠK anye\nĠver ge\nĠBulg aria\nget Body\nĠ| >\nce ph\n.DateTime Picker\n.\" ;ĊĊ\nĠT ie\n, item\nĠm enn\nG as\noch a\n_v irtual\nĠmaster piece\n_se quences\nL TE\nĠSub mission\nCall er\n$ \\\nS port\nag us\nConstraint Maker\nĠcol oc\nĠw ig\nĠÐ £\nĉ Array\nLook s\nĠGT A\n.st eps\natch ewan\n_r anges\next Alignment\nĠBren nan\nĠab straction\nuler Angles\n.m isc\nĠantib odies\nĠexponent ial\nĠCH ANNEL\nexp ense\n' y\nĠdetect ives\nĠpur ported\nY STEM\nĠradio active\nĠLat ina\n.Enc oding\n.T AG\nx in\nD egree\nur acion\npr ices\nĠRefer entialAction\nĠr arity\nĠp iles\ng ende\n_project s\n_g lobals\n.start Time\nĠê µ¬\nSE CTION\n_p ublish\nF ault\nDD L\n_p rior\nM om\nĠth icker\nĠsequ elize\nĠessential s\nstr as\nin tr\n>( ()\n.man agement\ne il\néĹ Ń\nA ware\n.C ity\nĠAr bit\n_D M\n_key board\nL Object\n- webpack\nĠNew port\nĠprincipal Column\nleg ant\nĠp allet\nĠfract ure\nĠg mail\n.M eta\nA bove\n.Key Event\nj it\n_mac ro\n_P USH\ná» ©\n/ controller\nåĬł è½½\nĠsuperf icial\nexter ity\nĠmens agem\nW ind\nist on\n.open api\nÐ¸ ÑĢÐ¾Ð²\nĠSerial izer\nuct ive\nĠz ar\nPl aces\n.St atic\nB a\nĠin advert\nĠIndones ian\n_IP V\n(h orizontal\nĠget Title\nide press\nĠConsole Color\nip ers\n$ out\nĠfest ive\nĠeven ings\n.Get Data\nuit ka\nĠManual s\nuss ed\n_M ax\n.Ch at\nĠA ircraft\n= com\nFO UND\nap ro\nĠtre asures\n_al ive\nĠgad get\nek ing\nButton Down\nB rowsable\n.PER MISSION\nP ASSWORD\nĠH ASH\nf Ã©\n\\ TestCase\nLO SS\no thers\n, J\nĠassh ole\nwer k\nĠm Ã£\n. ie\nev il\nkont akte\n//////////////////////////////////////////////////////////////////////////////// Ċ\n= sys\nĉ lock\n-- ;ĊĊ\n_F UN\nFill Color\nÃ³ a\npre nd\nĠcompress or\nM other\nĠAr cher\n.g oto\nĠwÃ¼r de\nĠbam boo\nï¼ İ\nĠT rees\nĠb umper\nĠsa usage\nĠEl asticsearch\nĠhor izontally\nĠG ul\nIm mutable\nĠlos er\nĠabort ed\n-d emo\nĠH atch\nĠund e\nĠprocess o\n-c all\nIn come\nå ĥ\n_ returns\n'].\" '\n(s w\nC BS\nam ilies\nĠYour self\nĠH olt\n.M ON\nà§ ĩ\nÑĪ Ðµ\nan on\nĠFont Awesome\nprodu cer\nj r\nĠm au\nĉint er\nĠdish onest\nĠmagn a\nĠCollect ive\nĠvra iment\nĠcho ix\nst ay\nĠweld ing\nr ising\n, min\nĠF ate\ng lob\nRGB A\nĠdet te\nV en\nĠembarrass ment\n.DE LETE\ngreg ar\n-re nder\n(b ucket\n\"> ĊĊĊ\n.wait Key\nBus y\nĠdifferent iation\nĠC ST\n.Con stant\nĠline Number\n(m atches\nĠweb socket\nĠbar red\nĠpued es\nM ono\nC ORE\nI ID\nĠĠĠĠ čĊčĊ\nĠpÃºb lico\nlean ing\nĠcleans ing\nĠcr is\nĠDev ils\n_SET TING\nunt ary\n. );Ċ\nĊ ĠĠĠĊ\n[ curr\nts y\nĠAlex is\nrit el\nĠpet roleum\n.pre processing\nm atter\nFor Result\n- license\nĠtrav ellers\nĠDispatch er\nenn ifer\nĠdigest ive\nP ED\nhib ition\nMAS ConstraintMaker\nĠW att\nBen ef\n.set View\nd to\nTE E\nĠPel osi\n_EX TRA\nĠmed als\nx hr\nfore cast\nĠn argin\noun s\n-f ill\n_CUR SOR\nĠsuperv ised\nĠtur f\nĠEd gar\nPOS ITION\nĠcategory Id\nâ ī\n_ ER\ná»§ a\nSh own\n. ll\n_POL ICY\n(), '\nĠPre v\nĠString Field\nĉG lobal\nass ed\nThrough out\no stringstream\n.awt extra\nĠslo pes\nĠSe quential\nĠgi orn\nĠz elf\nĠvers atility\nlene ck\n.c gi\nĠdou bling\nĠBang kok\nĠbu urt\nĠusu Ã¡rio\nst udio\nĠje unes\nĠm uted\nĠ ips\n_f raction\n&& (\nĠst unt\n'); ?></\nĠL iga\nĠqual itÃ©\nAssign able\nĠwork around\nĠsp ur\nĠsle w\n_G E\nĠAgricult ural\nĠrelent less\n( Query\nĠSe ctions\nĠreview ers\nR ain\ndl g\nassert False\nĠnomine es\n__ ).\n.d ynamic\nĠP BS\nCh anging\nĠslight est\nĠM ang\n} >čĊ\nĠev apor\nb able\nĠPR ICE\nĠæ ³\nlu cent\nĠv amp\nĠTechn ician\nĠuniqu eness\nM es\nur ban\n.param etrize\nĠRe play\nS essions\nem br\n-Americ ans\n_PRO XY\nĠp ian\nĠtri e\nĠD estructor\nGame State\nĠIM F\nch in\nĠport e\nĠSw al\nåŁ İ\nSub string\nim ing\n/L ibrary\nĠfright ened\nw rites\nĠrecurs os\nar Result\n_INIT IALIZ\nĠBad ge\n_c rc\nE ight\nĠDIST INCT\nĠth ro\n@ Xml\nĠLegend ary\n-t witter\n_e asy\nĠ+ ++\n(D ATA\n.L ocale\nĠk Ã¤\nĠn urt\nĠcr uis\n_ ios\nĠsens ing\n_L ine\nĊ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\npon g\nole on\nĠwild card\nçĶ¨æĪ· åĲį\nĠbeg ging\nR od\nĠÃ İ\n_C ELL\nResearch ers\n. selector\n_ ing\nĠaspir ing\nĠimm ortal\nĠy min\n_ robot\nĠpl ur\nB TC\nĠD ID\nĠpier cing\n* u\n_DEFIN ED\nĠTh i\nita ire\n(m edia\n- ons\nĠche fs\nĠ\"* .\n/ AP\nĠraz or\nĠsearch Data\nĠ= &\nĠ ãĢĤ\nĠm ourn\nting ham\nĠo li\nĠVern on\n_R S\nŀ æĢ§\nĠf Ã¡cil\nang en\ncel ain\nĠa il\nle st\nĠQ COMPARE\ng ain\nĠÎ µ\nĠK ob\nĠF ault\n_config s\nç»ĵ æŀľ\n. +\ncal ar\n(color s\nM ul\n_ ART\nĠexperiment ing\nerm en\nĠAng lo\n.Fixed Single\nSe a\nĠc txt\n.s lider\nC ollapse\nG rey\nĠf ld\n-pro of\n.cap acity\nget Parent\nĠCom pliance\nĠburg l\n- rec\nĠover written\nM U\nĠrout ers\nĉ Model\nĠfantas ies\nav ian\n_p rec\nĠSc andin\nĠ// <\n/o ct\nĠceremon ies\nMonth s\nund y\nĠqu ed\nĠN ou\nĠV ibr\n.r gb\nĠcit rus\nĠbr aces\n-upper case\nget Table\nĠdop o\nĠK err\n_CH ILD\n- cloud\nĉ Matrix\nĠgard ening\nS ing\nal most\nRequire ments\nugu ay\n( Property\nsub scriber\nFA ST\nre action\n(l p\n) })Ċ\n` ).\n.w allet\n_ex change\n.Max imum\nĠVer b\nâĶ ģ\n() <\nï¼Ľ Ċ\nRO T\nC ARD\nub it\n{ @\n_k el\nĠTool tip\nMy SQL\nMain Activity\nar f\nĠm align\nĠse inen\nap ist\nĠ< %\nMethod Impl\nM il\nĠM ick\n.de pend\n< ID\nĠpredict ive\nĠAP PLICATION\nle f\ndim ensions\nĠconoc er\n/ conf\nĠTr acy\nF oto\n_rem aining\n= file\nĠpage Index\nĠPar ish\nĠt exas\nĠM AGIC\nĠH ew\nd ifference\nĠalt ura\nc um\nĉdata Type\nĠcaracter es\navi ours\nĠV OID\nè¿ ĳ\nP UBLIC\nB io\nĠstringBy Appending\nParse Exception\nĠS uff\nĠN orton\n/d etails\n.n ull\n>> &\nĉ ok\n-l ow\n. usuario\nn ested\nX B\nOUR S\n.Border Color\nĠb row\nĠÐ ķ\ncor r\nĠRed skins\n.get Tag\n.get Transaction\nĠst igma\nhard t\nĠPlayer Prefs\nals y\nuc son\nL anguages\nĠOl ivia\nĠt ac\nĠb li\nĠc aval\nĠconsolid ated\nĠper il\nĠde le\nĠform ulated\nĠhigh ways\n.sp awn\n== $\nĠN iet\nĠv eggies\nyp o\n-r ule\nĠV ie\n/e pl\nĠenf ants\nstring Literal\nĠtou ghest\nbuy er\nĠcov ariance\nĠil i\nĠSoph ie\nĠB AB\nĠ\" ),\nĠU k\ncurrent Index\n_user data\n.code c\nĠPun jab\nĠSN P\nl ol\nadv ance\nĠcom fy\nJson Ignore\nĠfashion able\nĠI CON\nĠor a\nĠP ricing\n< num\nĠI RC\nER V\nĠMe in\nĠID ictionary\nAD OW\nis New\nĠDev on\nat l\n(request Code\nĉ PreparedStatement\nIM PORT\nĠmar ital\n_SELECT ED\nget Response\nar Down\nB V\nib Name\nĠP ATCH\nÃ¤ Ã¤n\nĠda ar\nĠFile Mode\nĠm arty\n.Spring Application\nc ene\namp oline\nget Size\nRest art\næķ Ī\n.project s\nĠEthi opia\nĠstatus es\nT ION\n(b g\nĠX unit\nTemp orary\nĠEng agement\nĠx f\nĠprox ies\nĠgen esis\nPager Adapter\nĠSl ave\nĠsung lasses\nĠCh loe\nĠko ji\nad em\nĉ JSONObject\nÎ ³\nĠh ors\n* w\nÃ³ r\nes ch\nĠcritic ised\nz ial\nĠSale m\n.Vert ical\nĠR ash\n> E\nter ing\n/s creens\nĠheight ened\nÐ°ÑĢ ÑĤ\nAuthor ities\n_b box\nÃ¼n st\n.font Size\nĠBO OLEAN\ndiv ide\nĠSlo ven\nuc er\nÙ Ĵ\nst ub\nĠnavig ating\n: animated\n_N OW\n_v ect\n} {Ċ\n@ (\nĠtele com\nĠcontract ing\nĠAss ange\nĠextract ing\nĠgr Ã¶\nc obra\n.D IS\nĠcr ab\nĠtw itch\nĠvert s\nĠreject s\nĉ format\nĠreg eneration\n.S ys\ns olve\nĉd ialog\nsh i\nm eter\n(b est\nvalid ators\nĠon wards\nĠg uru\nĠmoder ator\now ied\nex periment\nr ub\nĠm qtt\nĠCa ucas\nĠnational ism\nĠm ange\nĉ ImGui\n/ Edit\nĠin h\nĠint ellig\nero kee\nĉ export\nĠdiscrim inate\nsub tract\nĠM oodle\nens er\nĠGuid es\nR AP\n-h ot\n_gr p\n.p icture\nX A\nĠinit View\n_Com m\nĠoverd ose\nĠ+ ĊĊ\nĠSil ent\nshow s\nĠinterpol ate\nForm ation\nĠb isc\nmark ets\n( SC\nZ e\nĠNetwork ing\nĠad renal\nĠG uns\nete or\nDecl ared\norget own\nĠk arena\n/ password\n_address es\nITER AL\nB uzz\nĠCon way\n(c ase\nP WD\nhe iro\n( act\n** čĊ\n());ĊĊ Ċ\nĠan v\nĠ. .ĊĊ\n(Menu Item\n(m ail\n_section s\nĉ net\nĠpl ut\nĠw rench\n/ object\nĠI st\nĠV IS\n/p ub\nal ten\nĠguit ars\nĠantibiot ic\nï¼ ĸ\nÂ ¹\nĠ\" +\"\nform ula\nĠbab es\nĠP rompt\nĠen im\n/ player\nĉ ref\nĠby Äĩ\nĠconsum es\nĠH ast\nĠT ao\nĠ' ))Ċ\nĠcl am\nĠthigh s\nĠmot if\nApi Operation\nĠW L\nget C\nĉf lags\noint ments\nĠeconom ical\nneed le\nx ls\npr actice\nut zer\ntime ofday\n- output\nĠfind ById\nĠBudd y\nÐŀ ÑĤ\nSe ven\nĠB ark\nĠenv oy\n_al gorithm\nåĪ ©\nĠball istic\nç§ »\nr ades\nĉd oc\nrodu cing\nĠE ating\nUn mount\n/data Tables\n_b onus\nĠl itt\npp s\n) localObject\nper f\nĠHel vetica\nsh utdown\n/ ml\n.t okens\nĠHard core\n, row\n/b g\nSc aler\nâĢĶ as\n_log its\nâĢĻ int\nĉ App\nImp licit\n.F printf\nET O\nĠterr a\nĠpossess ing\n.r strip\n, ),\n= yes\nĠStr ipe\n? =\nne utral\n.g ood\nĠk ennen\nĠS ung\nf ault\nystate change\nCan adian\n',' \".$\nĠM its\nÃ¦ nd\nĠSTR UCT\nĠURL WithString\nĠCom pass\nĠ-- ĊĊ\nĠNS LayoutConstraint\n| min\n-ad just\nĠreb uilt\nL IGHT\n/ se\n-m ount\nvp n\nvalid ated\n(Q Object\nĠign ition\nĠCharg ers\nRYPT O\n]initWith Frame\nĠFl uid\nĠcad re\nĠnomin ations\nNe ill\nĠH ou\nĠcurrent s\n_g ene\n(in p\nPar is\nz ÄĻ\nag gregate\nĠass oc\nweet ed\nerr at\nâĢĵ ĊĊ\nĠ'/ ',Ċ\nfix ture\nĠH ighest\namb ient\nĠch mod\nĠcon te\nĠsens ual\nĠgar ment\nz ers\nĠPower ed\ndom ains\nR eward\ni omanip\nĠcock pit\nout file\nĠbuilt in\nĠins isting\n. vars\nzip code\nĠ ï¿½ï¿½ï¿½ï¿½\nf ails\nĠconsolid ation\n_ oid\nPlan et\nĠ= \",\nĉ el\nUIL T\nÃ¤t z\naf ari\nĠMc Cl\nTim eline\nEst a\nĠfr am\nY E\nĠcere bral\nOf Month\nĠP regn\nĠÐºÐ» Ð°ÑģÑģ\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\nĠF res\nAppro ved\n.S pecial\nĠProtest ant\nĠallerg y\n_p cm\nĉC opyright\nĠsuper Class\n\" strconv\nĠMoh amed\nĠ' //\nFore Color\nAr thur\nĠJ ungle\nĠve ins\nS ad\nĠback ups\nĠOp inion\nÃ» t\nĠinter mitt\nody n\nĠChrist ina\nĠand re\nĠevac uation\npa lette\nh orse\nĠRes ident\nĠHass an\n.N il\nĠa isle\nĠG rowing\nĠblog info\n/s ql\n_io ctl\nSc aling\nĠMon ad\n_c pp\nĠH utch\nĠApple WebKit\nExp ense\n_J OB\nĠpoint less\nFrom Body\nant al\nĠdepict ing\nĠC ELL\nĠref in\nĠC NC\nì¹ ĺ\n_dim ensions\nĠS AN\nĠa ft\nĠfoot steps\ncc oli\n_PH ONE\n/m ath\n-k ind\nĠMe ans\nich ael\n.g una\nĠinaug uration\n-dr iving\n( delete\nĠtotal Count\n_M C\n.Ext ension\nCom mercial\nĠz Index\n< Customer\n\" g\n-sh are\nĠp act\nag ara\nĠS IL\n_m odes\nĠM olecular\nĠsystem atically\n< G\n_s cr\nĠO ro\nas ers\nĠb ic\nĠdest roys\nPI PE\n.Start Position\nĠc á»§a\nire z\n.B unifu\n_F unction\nĠs Ã¼\n_f uture\nĠWe alth\nĠNatur ally\næĢ »\n_y es\nĠabrupt ly\nString Encoding\nĠCGPoint Make\nĠz h\nĠimp erson\nĠpiv otal\nĠSom alia\nĠsegment ation\n_AN AL\nĠLogin Component\nCons ult\nĠtr uncated\n] \";Ċ\n.get Config\nĠintern ship\nB aby\nê° ľ\nĠstrengthen ed\n_M I\nb asket\nĠnicht s\nĠTV s\nĠSh an\nãĤ µ\nrac use\n.Re LU\n/ interfaces\nĠgetItem Count\nĠret iring\nĠspecial s\nĠentity Manager\nbel ief\nĠs older\nda ughter\nij kl\nĠutil izes\n.f ixed\nS U\nĠdr astic\nĠh acks\ngr und\nĠM U\nĠSt arter\n.Com ponents\n_m otor\nGold en\nĠl odge\nĠ ));\nĠCor inth\nÐ¸Ñĩ ÐµÑģÑĤÐ²Ð¾\nÃ³n ico\ngre SQL\nĠFl uent\nĠmar c\n.Load Scene\n.Group s\nĠer h\nĠAut umn\nSt opped\nĠitalian o\nĠmin ions\nĠAssert ions\nĠm ux\nB u\nĠ---------------------------------------------------------------- --------------------------------\nĉ up\nread ystatechange\n_M eta\nĠcurrent Date\nĠChap man\nUnd o\nSe an\nap r\nĠpar m\n_ icons\nĠSt a\nÃ¡ z\nĠsub division\nĠalter ing\nP NG\nponent ial\nĠpost gres\nĠB DS\n-ex istent\nĠBrad ford\nĠO MX\n_W HITE\n_PRO GRAM\nq c\nĠtypings Slinky\nĠP ics\n_M ETA\nIT TER\n_sub scription\nIRON MENT\nĠHy undai\n();ĊĊ ĊĊ\nĠØ ³\nĠj ac\nĠelimin ates\n) });Ċ\nĠcomp rend\nĉ insert\n_f aces\n\"> $\nĠeb ay\nĠcapt ive\npl iant\nĠCalcul ates\nol ta\nest ing\n_re vision\nĠm Ãºs\n+ m\n\",\" \",\"\nWH AT\nĠcompassion ate\nh arga\n[ random\nĠmod ulo\n(s n\nĠoccup ations\n//// Ċ\nĉ board\nĠB alk\nwi Äħ\nĠW ifi\n.Pro file\n:m aj\nĉm at\nLOCK S\n(j Button\nĠ(' $\nM ur\næĮ ī\nb ble\nĠf rog\n-h ide\nĠbroad caster\nà¸ ŀ\nha led\nĠam using\n_predict ions\n_in tr\nĠe agle\nÐ°ÑĤ ÐµÐ»ÑĮ\nĠget List\nps ilon\nĠcharacter ization\nAR DS\nĠre location\nĠr ulers\nP AY\nĠDef initely\n_A ction\nĠclos ures\nĠfact ual\nodyn amic\nĠpreca utions\nnie j\nĠPart ies\nĠSub aru\nĠcous ins\nar beit\n.m oney\ngun ta\n( and\nget item\n.Style Priority\nĠsl id\nsingle ton\nĠg arn\nĠP AS\nĠd azz\na Å¼\nĠbog us\nĠM og\nĠrival ry\nis ol\nĠland marks\nÃ± as\nB ern\nĠSach s\nĠ\" )ĊĊ\nĠhost ility\n_m ex\nm ere\nM ot\np ictureBox\nDef ense\nĠaffid avit\nother wise\n.d irectory\n_ UnityEngine\n-b log\n.s kin\nph em\nAp ellido\ner chant\n[ class\nĠw art\n.\" [\nale ur\n/ back\nĠĠĠĠ ĉĠĠĠ\nĠprecip itation\nĠob struction\nĠp Obj\nĠr upt\nUCK ET\nay e\næİ Ĵ\ng x\nĠe cl\nĠsecre cy\n/ Header\nĠLes b\nĠle i\nĠBullet in\nĠgive away\n.H ome\n_RO OM\n\" W\nĠcow ork\n_ ra\nĠC ycling\nĠP aw\nĠpup il\n/ arch\nĠFile Utils\né¦ ĸ\nr sp\nĠfreed oms\nĠL ear\n}` ).\nĠbow ls\n/b lock\n_log ging\nĠmeth ane\nĠhorn s\nĠwonder fully\nĠalter ations\nĠex ile\nls en\n_p ause\n_L ANGUAGE\nĠUS DA\n_m ysql\n_AM OUNT\nĠL IFE\nĠyoung sters\nĠri ots\n[ E\nĠun forgettable\n, },Ċ\nDis posed\nĠAss assin\nUN G\nĠNew sp\nUser Service\n: aload\n+ ',\nĠsett lers\nĠscre ams\nĠincon venience\n.R otate\nĠj ars\nĠP uzzle\nĠm est\nars i\nĠSh arma\n| (\n.d s\nĠSac red\n_e vt\nĠexpress es\nĠh och\nĠD uch\n.c alls\nth r\nĠShe ffield\n.Alert Dialog\nĠrad ically\nĠtr ous\nĠprev ailing\nĠWW II\nâĢĻ n\nens ely\nĠY esterday\nĠSir ius\nĠkill ers\nĠF FT\nĠo val\n') :čĊ\nĠìłķ ë³´\nour age\nĠCheck box\nWork book\n.def er\n_f loor\nĠc ouncill\nĠnors ke\nmo il\nore a\nĠmarket ed\n_S UR\nx AA\nĠst ained\ne ut\nĠM eng\nĠi eee\n. extern\neg ie\nĠr app\nĠPy ongyang\n' class\nM ob\nĠinitial Value\n_w ave\nĠj ab\nĠmascul ine\nĠampl ifier\nĠt ty\nPath Component\n_ xt\nĠG FP\n/ sec\nĉdis patch\nmark down\nĠS chn\nbo le\nÂ· Â·\nmouse move\nĠerr Msg\nĠas ign\n_m ono\nTo Selector\nĠZ u\n(R ect\nĠError Code\nlat in\nang ible\nv tk\nCG Size\nP okemon\nĠclass mates\nĠattract s\nĠT atto\nult an\nol Ã³g\nĠhalt ed\nà¤ ¨\nĠK art\nĠ ue\n_Init Structure\nTest Class\nĠAir bnb\n_ \",\nĠchar coal\nĠip c\nĠSt retch\n.g lide\nlates AutoresizingMaskIntoConstraints\nĠpot ion\nITT LE\nĠcount ert\n_h d\npre pared\nAd s\nĠV ampire\nrob ots\n.Create Index\nStatus Label\nĠt ucked\naf Ã¼r\nU t\nĠswe ater\n_F N\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĉ\nata ka\nĠeyeb rows\nac oes\nud en\n.LinearLayout Manager\nĠsw ay\nĠmult in\n() )))Ċ\nĠNS UInteger\nĠMy Base\nPart ner\nuts chen\nĠC ater\n.setBackground Color\nĠaccompl ishment\n_pro blem\n.d td\nĠpage Number\nĠj ackets\nĠcro pped\nu els\nĠH ep\nĠc apped\n* Math\n_callback s\nĠpub b\nĠBrun swick\n.res pond\n[\" _\nĠbed ding\nhyth m\nO X\n(s peed\nĠpestic ides\nĠ---- ---\n.Bl ue\nĠnood les\nĠGo es\nĠs aver\no xy\n_com pletion\nĠSw inger\nĠget Date\nĠmind ed\nint egration\nĠLot us\n(st op\n(', ');Ċ\nĠflood s\nĠWork flow\nĠerupt ed\nMac ro\nĠSau ce\nĠevent Name\n\\ Input\nBreak ing\nĉ when\n_p w\nIND ER\nĠWell ness\nĠvox el\nĠM ell\nĠM EDIA\nSE NS\nĠFund s\nĠM ild\n< Array\n- this\nump ed\n/f w\nĠDb Context\nW I\ngirl s\nH OW\n'); ?>Ċ\nĠtempt ing\nĠtest ament\nĠb ible\nĠconsult ed\nĠIndex Error\nè¨ ĺ\nĠkey pad\nizz o\n( ok\nĠwhats app\nĠRemote Exception\nĠteam ed\nâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ\nÂ» ,\nĠget Time\ndi ag\niss y\nĠh ed\nĠkn ots\nj om\nĠfun nel\n-m ails\nĠexport ing\nĠV L\nĠK arn\nĠBuddh ism\nĠAll an\n_R ADIUS\nĠw ording\nĠFor get\nĠCor ona\nip hy\nĠlim burg\nugg y\nĠUser Repository\nim in\n(e le\nĠlabel led\nç¤ ¾\nĠH erman\n.q q\nĠ\" ));Ċ\nie ber\n.Trans late\nry n\nĠdes env\num d\nSim ply\nĉm ode\nR pc\nĠVal encia\nĠstaff ers\nĠsel v\nĠSpi ke\nĠdel ic\nĠer u\n_D T\nJ udge\ná» ķ\nĠBas in\n.m utable\n\" url\nĠtar iff\nĠSlee ve\nĠfl are\n.drop out\nĠbr ides\n)) ,čĊ\n_con straints\nde struct\nOut line\nĠdisappe ars\n_lock ed\nĠNS LocalizedString\nck e\nĉ null\nad resse\nĠto pping\nĠJ oker\nb ishop\nÐ½Ð¾ ÑģÑĤÑĮ\nand ering\n_ amp\n= time\n_S pace\n_P ULL\n' =\nĠant iqu\nĠc ach\n___ ĊĊ\nON ES\nÐ¾ Ñı\nĠun read\n.p olicy\noooo oooo\nëŁ ¬\nĠu sted\nĠRe ce\nĠal lem\nãĥ¼ ãĤ¹\nĠThought s\nve illance\nistr ate\n_l ane\nĠfam ed\n.Get Name\nĠsmo other\nĠQual ified\naz ers\n_ geo\nF ax\nĠM inds\nĠR aises\nĠtrans cripts\nCon versation\nĠremark ed\nëĤ ĺ\nd ling\nĠdeploy ing\nĠshared Application\nĠk p\nFontAwesome Icon\n_d ummy\nreib en\nĠJane iro\nDirection s\n.get Bean\ns ass\nĠcommand ers\nv ation\nerror Code\nĠAl loy\n.local ized\nÐ ĳ\nĠdish washer\nĠSou p\nN u\n_D efault\nĠune ven\nĠ/> \";Ċ\n-B ased\nĠseam lessly\n- null\nĠX C\nĠst ew\n(d elay\nAT ORS\nĠWhe eler\n\" <?\nĠCh andler\nĠretal iation\nĠbudd ies\n-s izing\nĠE ins\nĠ... ,\nqu ete\nĠD OC\nĠfals ely\nĠfl ats\nNIC ALL\nĠlib r\nBe Null\nim ulation\nĉ Query\n_ ut\nĠpl aque\nb ild\nĠscre amed\n.m vc\n.W idget\nĠdiffer ing\n/s upport\n_V OLUME\n.node Type\nĉ Write\nĠr Ã³wn\nbook mark\n_CON N\nĠCre ed\nĠinhib ition\nĠRe hab\nuv re\nĠdump s\nowe j\n_ placeholder\nĠHW ND\nĠder mat\n.det ach\nĠfinal ized\nger ies\nid ak\n_pro g\nĠupdate User\nly s\n.G oogle\nĠl uego\nĠant s\næłĩ é¢ĺ\nĠDR M\nÐ» ÐµÐ½\n-d b\nerr ick\n_l n\n.. \\\nik it\nĠD ien\nĠparam etros\nkey press\nĠK erala\nĠdr ained\nfÃ¼ g\nĠcap it\n_a ug\nt ant\nNav Bar\nĠroll back\nĠle y\nà¸ Ī\nĠB SP\nĠPredict or\nĠw agon\nĠ\"| \"\nS erve\n.D one\nĠD urch\nPro vide\nĉs core\n_ OD\n. weapon\nĠunivers ally\nĠinj unction\n_SC ROLL\n.M atrix\nĠMongo Client\nb uffers\nĠbad ges\nĠsh arks\nĠSh ark\nMODE L\n. READ\nĉt ag\nĠstrt oupper\nER GY\nb ias\nĠaccount Id\nĠEm manuel\nĠres orts\nĠsv n\nw arnings\n_ IE\nL AS\nĠnull a\nĉ as\nĠdem ean\nâĢľ As\nAuthor ized\nĠtend encies\n- setting\nĠpre load\nĠc nn\nâĢľ No\n% )ĊĊ\n= T\nust o\nĠF IRE\nre search\nĠÐ ĵ\nĠLess ons\n.Append Format\nĠinit iation\nĠC ous\nar er\npro jection\nĠShe ets\nĠF old\nRed dit\nDe leting\nĠz am\nĠNe ural\nĠFe cha\nĠÂ ®\nĠt asted\nĠEn emies\nĠJohn ston\nĠd ancers\nĠdis abling\nĠpet ty\nĠW eld\n/ --\n(s prite\nIG O\narg out\nĠquarterback s\ndispatch er\nĠS ustainable\nen arios\nĠSk i\nĠfact o\nill in\n_ext ensions\nÉ µ\n> H\ne ast\n. air\nâĢľ But\nObject Context\nsuccess fully\n_l and\nĠfold s\n_CO ORD\nĠsub po\n.get Address\nin str\nMaterial s\nÑĥ ÑģÑĤ\nde posit\n-l ast\n_GR AY\n= find\nĠmut ant\nĠlesb ienne\nlet cher\nRO UGH\nure ka\n.c apture\nĠen n\nĠ([ [\nĠFl u\nĠtask Id\nĠHus sein\n.f older\nĠa usterity\nISTR ATION\n_ Impl\næ³¨ æĦı\nĠdec ree\n- chat\nĠimp lication\nĠguess es\nul kan\nAn alytics\n. plus\nCOM MAND\nÐµ Ð»Ð¸\nÂ» ĊĊ\n_S ITE\nĠequal To\nSupport FragmentManager\nĠRec ording\nå®Į æĪĲ\nĠbag gage\nĠpitch ers\nĠE h\no que\nĉc nt\nĠ=> $\n/ foo\nIR A\nĠSat ellite\nbor ah\nĠ}} \"Ċ\nĠEnd s\nĠSpr ay\n, param\n.Ch rome\n* q\nth ought\nibr ated\nĠth ieves\nĠbenefici aries\nEnter ed\nottes ville\nĠveter in\nBy ID\nqu ipe\num ption\n- unit\nExecution Context\n@ s\nĠG iov\n.Tool Tip\n_f riend\n( attributes\nĠdump ing\nĠJ C\n_D OCUMENT\nĠArm our\n( insert\n.Horizontal Alignment\nĠQ ed\nãģĦ ãģ¾ãģĻ\n/g it\nĠY YYY\nĠCard iff\nĠap a\norgan ic\nĠWhere as\nĠæ Ŀ\nĠM ia\nĠdemol ition\nĠsc ars\nĠp ai\nĠre tries\nĠr q\nĠDen is\n( Utils\nĠallev iate\nĠP IC\nid ue\nĠacknowled ging\nĠ// ////////////////////////////////\nç¡® å®ļ\nÄ «\n\\ Json\n.b inary\nĠx type\nsign als\nĠAp pearance\n& r\n} s\nC i\nĠI llum\npor ate\nh og\nĠindex Of\n\\ Command\n_par allel\nĠSher lock\ní ĥ\nĠ\" \")čĊ\n//////////////////////////////////////////////////////////////// ////////////////////////////////\nĠcritic ize\nĠSo ap\nĠMatch er\nĠgr illed\n* T\nĠad ore\null ing\nĠjed och\n_ref s\nlean up\nĠJ AXB\nĠro ses\nĠL iam\nsize i\nĠget char\nĠtar de\n-to oltip\nĠqual ifier\nĠInter mediate\n_W indow\nĠMal ta\nDis connect\new here\nCamp o\nĠirr ational\nled o\nĠD N\nARG V\nĠout ro\nĠth irteen\nJose ph\nM AR\n/g l\nJ ess\nĠPsych iat\nĠpadding Bottom\n- loop\n/ fonts\n_se en\nTe ams\nReact DOM\n(m an\n(x path\n.get SimpleName\n>( *\nĠP vt\nĠel ders\nĠp ies\n.user Agent\n- region\nĠGree ks\n(f ragment\nst u\nĠcouncil s\nĠst amina\nĠGod dess\nè ¥¿\nĠphilosoph ers\nĠpers one\nĠL ose\nĠCL R\nĠD ocs\nĠso ak\nĠHOLD ER\nĠb ells\nhash Code\nR ATE\n_WE IGHT\nin ous\nend ra\noph obic\nĠpro se\nĠfin ely\n/o auth\n(s pace\nad ge\nĠM ama\nĠstring Buffer\nĠst int\nĠmis ma\nĠvill ains\nĠCrime a\nĠdipl oma\nĠÐ¿Ð¾ ÑģÐ»\nĠBe a\n(j oin\nĠíķ ´\nCH AT\nper ing\nĠC ros\nĠmon keys\nĠpred s\nyl a\n,, ,\nĠvibr ator\nĠN U\nåħ Ī\nf ant\nz et\nĠb ietet\nun ft\nsw orth\n.F low\nĠpsy ched\nĠContin ental\n> t\nĠqu ilt\n. UP\nĠexpans ive\nDis pose\n(l anguage\nC aps\n_Z ONE\nĠrec ycle\nĠMan aged\ncurrent Color\n.b roadcast\nsign In\n.p rom\nll u\nue blo\nĠpunch es\nĠautom at\nĠassign ing\nĠcreate User\nĠAll ied\nĠconduct or\nĤ ¨\nĠs addle\nĠd ni\nomed ical\n-W est\nPositive Button\nĠit alic\n? [\n(tr igger\nĠele phants\n\":\" \",\"\nĠcal iber\nraft ed\nd igits\nĠmar shal\nmill iseconds\nmark ers\nm om\n/ place\nĠhol istic\n: t\n# ,\nĠb oto\nĠnause a\nĠSh ooting\nite ch\nĠtext Status\n< Class\nĠDes cribe\nĠbuff et\ng il\nĠlog its\nstd call\nmod s\nĠSk ull\nĠB are\nh ope\nĠIn tr\nF air\nĉ pt\nĠacompan h\nĠf kk\n_r pc\nInst alled\n_ ans\n.get Minutes\nâĢ¦ \"ĊĊ\n- thread\nĠpres chool\nAIL S\nĠdiff ic\n( convert\nĠN ath\nĠDO J\nĠreg imes\nĠenthusi ast\nĠwarrant ies\nĠfasc inated\n_b inding\n_N ot\noft en\n_R W\n/m ail\nĠtitle Label\nĠvill agers\nĠJ iang\nĠsw agger\n.Row Index\n_img s\nrap y\nVER AGE\n. Up\nĠno op\nc io\nĉ ST\nĠdecre ment\nĠmagn esium\n_ rotate\nS it\nĠnieu we\nĠter med\níķ ©ëĭĪëĭ¤\nĠur g\n_t ouch\nĠsw arm\nĠcl ave\nth est\nĠL af\nH X\nĠH ulk\nĠplaint ext\nĠSof a\nget Session\nL ed\nĠecosystem s\nhe i\nĠK ills\nĠhus bands\nÑħ ÑĢÐ°Ð½\n(d om\n_t iles\nNib Name\nĠdon ating\n. acc\nĠlifes pan\n.b n\n_RG CTX\næ ¥\nans en\nĠmod elling\nLayout Params\nĠonChange Text\nrs a\n- location\n.P e\n(b us\n(s ong\nĠprodu k\nĠSH OULD\nĠC J\nĠs os\nĠHome Controller\n.load ed\n(D ocument\n.s ocial\nt iles\nĠl ame\n= df\n.parse Long\nĠpr ac\nĠdet ox\nĠV E\nĠpunt os\nĠdo ctr\nĠan cor\nCA PE\nĠc mb\nçĦ ¶\n*) \"\n:// /\nValue Type\nĠmort gages\n; q\nĠRock ets\ns port\nUG C\nct s\nãĤ ģ\nie ur\nĠAppe al\n(n b\n//////////////////////////////////////////////// ////////\nIM ATION\nĠC res\nĠMan ip\nC ause\nat ypes\nman ufacturer\n# ----------------------------------------------------------------------------\nĠsp or\nes on\nĠpun ched\nĠbook marks\nĠBul k\nComplete Listener\nĠTalk ing\nĠEr nest\nĠrub bish\nk ills\nĠDE FIN\nĠneighbour ing\nar lo\nĠP CA\nĉm atrix\nlo k\nĠat las\nĠG ur\nĠw yn\n-n egative\nĠt ul\nĠre lic\nĠV oltage\nĠPre is\nĠJ NICALL\nĠPM ID\nak et\nĉ attr\nĠet iqu\nĠM J\nĠG mail\ncl r\n_exec ution\néĶ ®\npos itor\n. af\nN r\nGe orgia\nTop ology\nĠperch Ã©\nĠmus lim\nĠepid emi\nĠsab ot\nact us\nĠë ĮĢ\nĠIO Error\n. est\np refs\nĠKr ish\n.Read Key\nNAS A\nu Ã§Ã£o\n_D b\numer ator\nW ide\n(st atement\n.end point\n.... .....\nĠ[ *\nstream s\nm time\nP x\nat r\nĠt pl\nR oman\nĠscen ic\n.n z\nĠSe conds\nsub menu\nĠìĭ ¤í\n_b undle\nĠde ÄŁ\nĠS isters\npre ferences\nĠport a\nAd visor\nmax Length\nĠG REAT\n__ (Ċ\nole st\nĠLabel s\nĠen fer\nĠĠĠĠĠĠ ĊĊ\nĠThe ft\n_F ILL\nĠW ise\n) application\nun ami\n> ())Ċ\nADD RESS\nB ST\net zt\nĠQ gs\nS ense\nException Handler\nĠCh u\n.get OwnProperty\nĠexerc ised\niot ic\nĠRe leases\nĠp interest\nol ie\nis oft\nĠsequ encing\nĠpad re\n] ));čĊ\n(r adius\n.m ed\naint ies\n.Object Model\nĠem ple\nĠseg uro\nSt ars\nĠqual itative\nlem n\ná» ±\n> \").\nĠg x\n-c ert\nĠAST M\nĠfull name\nĠte lemetry\nĠCamb odia\n_ ul\nĠCl are\nC USTOM\nQ C\nĠUn s\nĠHTTP S\nĠPark inson\nancy box\n',' .\nT ue\n.get Last\nĠab i\nÄħ d\nA st\nĠEd iting\n.Un ity\nj mp\nĠm ats\nĠshared Preferences\nCapt ain\n.page Size\nĠr tl\nĠan meld\nRuntime Object\nĠdemand e\n(\" ;\nse ite\n-head ed\nĠK ra\nĠF ONT\n` \\\nClass NotFoundException\n. avg\natic al\nA j\nĠpermit ting\nPro j\nERR Q\nĠcre ampie\nĠBuy er\n-mod ules\nĠSund ays\n| `Ċ\nĠday time\nĠ+ (\nĠgl itch\nĠOper and\nĠtox ins\niny a\nD NS\nĠS as\nC ake\nĠNation als\n.add To\nĠs inking\nĠcompreh ension\nĠsc or\nag ements\nĠt ard\nĠmarch ing\nĠM TV\nĠs ane\nCreate Info\náº ¯\nĠend Index\nĉ layout\nĠåĲ į\nS ITE\nĠT HERE\nĠ[ {'\nopath ic\nĠtrans mitter\n/ body\nĠp und\nĠC losing\nĠset attr\nĠbound ed\nAt las\nsum ing\n(t imes\npar er\nyn om\nfe it\nĠf rem\n- leg\nĠBr as\n> #\nĠì¶ ľëł¥\nĠIN STANCE\nĠC ouch\n_host s\nlik elihood\n.M arker\nĠM asks\nĠcere al\nutil ities\nĠelement al\nĠdist orted\nin active\nc ry\nW L\nUPPORT ED\n.Th rows\n/s chema\nser ie\n.\" ',\nĠBened ict\n-p icker\nig gs\nĠPir ate\nåĳ¨ æľŁ\nĠTh ema\nĠSouth ampton\nĠarray With\nĠPaul a\nĠpredict or\n- Ass\n.user id\nĠper i\nĠexagger ated\nur ate\narse ille\nĠCon cent\nĠP ik\nĠ@ _;ĊĊ\nĠform ations\nĠden omin\n\"/> .Ċ\nended or\nĠpan cre\nĠam t\nĠon Resume\non Delete\nĠB CH\n) (\"\nm ovement\nĠpot assium\n<!-- [\nĠmem es\n_SET UP\n_g amma\nĠcolorWith Red\nĠgr aves\nĠstat utes\nĠaqu arium\nĠL amar\nĠx Axis\nWebpack Plugin\n_f old\n. geo\nĠFe et\n-spe aking\né¢ Ŀ\n_c os\nĠA vec\nan st\nĠE EPROM\nĠdealers hip\nĠUnter nehmen\n, Integer\nĠÃª tes\n.` |`Ċ\nv ine\nĠKn ife\n_ vertical\n.D ownload\nĠovers ized\nl id\nĠpill ar\nca ught\nĠflag ged\n(r outer\n( REG\nĠbar becue\nb rowse\nĠFitz gerald\nĠÐ¿ÑĢ Ð¾Ð²\nir ie\nĠer ste\nel ib\n_P RESS\nĠhe aled\nĠh aut\n>x path\nĠW en\ngr unt\n.Key word\n-has popup\nn w\nS Z\ng abe\nInteraction Enabled\npre ch\nĠprim o\nstri pe\nalt ed\n_B ORDER\nfind By\n_ annotation\nWeb Socket\nB ur\nĠdiplom acy\n(t d\nĠSim pl\nd etect\nper formance\nĠcarbohydr ates\n/i outil\n------ +\n_s r\nme eting\nĠ| --------------------------------------------------------------------------Ċ\n_V ar\nĠro ver\nĠcas i\nĠM atches\nq ry\n_BO OK\nĠpresum ed\nĠM Ã©t\n/ items\nĠC redentials\n] ).Ċ\nĠK ardash\nAdmin istr\nĠSlo vak\n(', ')Ċ\nĠcon quest\nP ersist\nĠDr ain\nb ij\nĠdo v\nĠsÃ¸ ger\nW onder\nASE T\n[ min\ng una\ng rown\nĠ} )ĊĊĊ\nA UD\nĠbelie ver\nis ers\n(s ent\nJ ackson\nĠp ais\nĠcuda Memcpy\nĠflash es\nb ere\nĠmult if\nĠC argo\nElementsBy TagName\n( epoch\nĠK unden\nRecogn ition\nĠSet Value\nĠSun shine\nAC P\n: str\nĠamb igu\nĠíķ ľ\n-line ar\nĠW OW\n(c ustom\nĠis Enabled\nB AT\n_di ag\n_G UI\nHe at\nĠas semblies\nĠC ette\n/c ard\nĠDecl are\nĠup held\nĠCl aud\n- flow\nĠhook up\nIR Q\nF ather\nDe letes\n)); //\nĠPT SD\n); ččĊ\neg al\n. arrow\nĠM PU\nÃ³ j\nĠmot ivate\nĠK atherine\n.f rames\nĠth i\n< Result\n. gray\nĠKush ner\nĠC ement\nĠB url\nInt erview\n=' \".\nPO WER\nĠCD s\nĠ[& ](\nĠchang er\n>> ,Ċ\n- we\nĠCL K\nĠAd ri\nĠc il\n= X\nĠsend o\nĠC elsius\nblock ed\nOutOf Bounds\n. !\nopro ject\nand es\nedit ing\nĠpump ed\n(); }Ċ\nà¦ ¿\n_EVENT S\nĠFried man\nĠ> /\nĠ******************************** ********\nĠtempt ation\nĠIp sum\nĠC es\nĠnot icing\n_e le\nAcc ent\nĠN vidia\nĠam usement\nĠintro ductory\nĉret val\nĠl il\nir im\nen queue\n-h istory\nĠcounsel or\nTRANS FER\n_V ector\ncategory Id\nper y\nF ILTER\n( remote\nĠsepar at\nĠEmbed ded\nĠBa con\nterra form\nĠrespect able\nich a\na ic\n+' \\\nĠstr ay\nÐµÐ½Ð¸ Ð¹\nĠAud itor\nentic ator\nĠclo ak\nĠUN KNOWN\nĠAm en\nvo x\nast reet\n... ]\nĠ` %\n- property\nĠQual comm\ned ited\nĠdiscre et\n-M uslim\n.rec ipe\nĠv andal\nĠu Å¼y\nsen ha\n, is\nĠPom pe\nĠKn icks\n() ',\n(t b\nĠH ID\nĠp ew\nĠcarro ts\nĠpolic ym\n. li\nĠtw entieth\n_p rompt\nsc enario\n.J Frame\nĠMQ TT\nĠIndividual s\ntoMatch Snapshot\nÃŃst icas\n\" D\nĠf od\nĠr icht\nĠZ ar\nĠres urrection\nĠmilit ar\nĠMan agers\n_GR ID\nnon null\nB ERT\nOutput s\nĠĠĠĠ ĊĊĊ\nĠpredecess ors\nĠis Selected\nĠcyber security\nåĨ Ļ\n.m c\nQ ui\nĠalleg ing\nĠt ic\nMan ufacturer\nĠEnh anced\nĠB iz\nĠread Only\nÃ´ n\nĠl umber\na ed\nĠr ains\npro vide\nL ate\nĠpedest rians\nj av\nActiv ation\n'B rien\nĠvac ancy\n// -\nĠbl adder\nĠag ile\nĠste als\nĠregistr ar\nĠelect orate\nG overnment\n'] =\"\nalbum s\ne lection\nab l\nĠO rient\nĠp irates\nĠlo oph\nĉ reader\nĠÃºlt imo\nĠP etro\nĠÑģÑĤÑĢ Ð°Ð½Ð¸ÑĨ\nĠs amp\nin verse\n.grad le\nĠD ont\nx on\nĠc read\nert ility\nrg ctx\nĠpolÃŃt ica\nValue Changed\nApi Response\ncom bo\nĠU X\nĠd aha\n' an\n-m y\nâĢľ My\npe e\nlat long\n\\ Base\n.w ik\nĠP OT\nĠpunct uation\nq us\niny in\n= min\nĠnucle us\nĠconcess ions\n. average\nuser info\nĠtablesp oon\nĠNe ighborhood\n( Throwable\n> v\nov y\nXXXX XXXX\nist i\nĠb art\nï»¿ Ċ\nEnc rypt\n= end\nĠin cur\nĠpert inent\n_MIN OR\n) \">Ċ\nch ief\nĠv d\n( `Ċ\nur gy\nabyrin th\nĠSh apes\nĠvag y\n. dds\nmem cmp\nĉ It\nsem ester\nĠE mit\nĠins an\nĠbrush ed\n_F ATAL\n\" errors\nĠdisrupt ive\n% n\nĠcomposition s\nĠbach eca\nĠdisag reement\nProt ect\nLI KE\n.File NotFoundException\nĠwe itere\nĠMon aco\n_ <?\nĠmode led\nste el\ne enth\nĠ[] ).\n(reg ex\nen ie\n.F lush\n.pop up\nĠO vers\n.Debug ger\n> `;Ċ\nn ite\n. quote\nĠc og\nĠw akes\nĠWrest ling\nInt ro\nĠser de\nĠre usable\nĠComp ound\nImpl Options\nĉ Item\nĠnum Of\nĠCH R\nĠBol ton\nPL US\nbound ing\n( ++\nĠ\", \";Ċ\nĠGuest s\nĠdepr ived\nĠmel ody\nZ IP\n>> ()\nĠconced ed\n_d ie\nĠjo ystick\nĠan atomy\nĠT oolStrip\nĠEn ough\n\" *\nint osh\nhab i\nĠSy racuse\nĠIncre ased\nM us\n.p atient\nĠincre ments\nĠP IX\nĠboot y\n.pr ivate\nerto ire\nĠcut ter\nĠbe kan\nĠdraw ers\n_AL IAS\nAnim ating\n_ answers\n. attack\nw riters\nĠga an\nik on\nĉ controller\nĠfac ade\nĵ åĲį\n, status\n.f e\nĠpostpon ed\nĠFont s\nĠBench mark\nident al\nĠch illing\nĠK iev\nĠbrush es\n-w heel\nĠH ire\n(pro c\nĠchem otherapy\nĠÐ±Ñĭ ÑĤÑĮ\nĠN olan\n(i err\nĠJ ude\n-A ug\numn os\ncon versation\nĠBehavior Subject\nba ugh\nĠguitar ist\n. offer\nĠacc use\np ard\nre ff\n.Re act\nĠu char\nĠoffset of\n$ status\n/ email\n.conn ected\n/ +\n@ qq\nar avel\nĠf v\n.P ersistent\nen stein\n... ]ĊĊ\n.grid View\nĠJO B\n- '.$\n.layout Control\nĠc arg\nĠK ot\n_e quals\nĠwithd rew\nATE ST\n-button s\nĉUP ROPERTY\nĠUIG raphics\nĠPublic ations\nĠIN TERN\nĠeth anol\nÃ¤ng er\nSE ND\nĉs lot\nÐ» ÐµÐ½Ð¸Ñı\nĠpas o\n_ext ended\north and\n(s heet\nĠproced ural\nĠkidn apping\n// ----------------\n[ msg\nOcc urred\nA lice\nĠC AST\nĠk ata\næ³¨ åĨĮ\nche ap\nic ity\nĠread iness\n**************************************************************** ****************\nĠSY N\nĠMag gie\nric a\nĠy i\nĠT we\nign on\nand en\nĠj query\nĠstart Y\nĠa venue\nAn th\n_c aption\nĠR ows\nÂ¯Â¯ Â¯Â¯\nsequ ences\nÐ¸ ÑĦ\n(\"/ \")Ċ\ncr ate\nĠS aga\nJ ud\nĠfac ets\n_s caled\nR uby\nĠP Q\nĠcr us\nI ran\n.s queeze\nĉf d\nĠper ce\nĠdat ap\n^^ ^^\n_S COPE\nĠSal mon\nĠtail le\nĠVal or\nAG EMENT\nR p\nĠGuard ians\nĠread File\nĠneg ro\nĠob ra\n.Par cel\nC ACHE\nret ched\ncr m\nqr st\nou fl\ní ļĮ\n.n om\nss id\nĠsaf est\n.Err ors\n_p ng\nConverter Factory\n< Self\nĠsepar ates\n_j Button\nĠmis use\nexception s\nĠ[ {\"\nĠP AD\nçŃ ¾\nk Hz\n= en\nĠh Ãłng\nH Z\nĠX avier\n{ id\nĠstair case\ntext field\n/d ocker\n(table Name\nĠtele communications\non so\noc l\nParent s\n/ parser\n-d rop\n( styles\n_mod ifier\nRequest Id\n.b rand\nĠCo ins\nĠk unt\n.G r\nĠH ISTORY\n(d rop\nBr ad\nĠseks i\n_s dk\nĠins pected\np redicate\n.f i\nG OR\nĠc ocoa\nĠI Queryable\n--- </\nĠdern ier\nĠUser Defaults\n_T S\nĠe os\nĠbl ender\nĠlou der\nSpan ish\nlin er\n\\ widgets\nĠschem as\n_CAP TURE\n.m icro\nãĤ Ń\nĠðŁ ĳ\nĠand er\nalt ung\nĠ== '\nĠen forcing\nĠEx ist\nuv w\nirts chaft\nĠG reatest\nĠMos ul\n_p o\nĠsim mer\nĠprogress ed\nĠrot ary\nĠn to\nNo ise\nĠch ased\nĠinstinct s\nPublic Key\nĠsnap shots\nĠSup erv\n.m ac\nĠBib li\n... )ĊĊ\nĉ old\nK EN\nĠCl im\nĠProgress Dialog\nlic ants\n_sl ide\n+ h\nĠempower ed\nInject or\nĠinflu enza\nĠplanet ary\nWill iams\nĠmon d\nen an\n.random UUID\n( Position\nĠh ombres\nĠin secure\nĠver bs\n_rect angle\nIN STALL\nĠParse Exception\n_T A\n$ field\n.Image Icon\nĠGujar at\n-l ived\n_s ome\nĠcl ipping\n.get Component\n.close st\n.l ive\nĠinc id\nčĊ ĉĉčĊ\nĠprod utos\n_m usic\nSql Connection\nĠPred iction\nĠX T\n- notes\nĠJew elry\nrem en\n(re ason\nS nap\nAff ineTransform\nangel og\nĠdict ate\nĠz osta\nBar Controller\n/ shop\ne id\n-s w\nC ourses\nfont Weight\nĠHoff man\n_N um\nK R\nĠWill ie\nark an\n-s cal\nĠaud ition\n.d isc\nĠtw ists\nĠdep icts\nĠb anyak\nĠK its\nĠHe zbollah\nn orth\nĠG RE\nÃ¶ g\nqu oi\n-threat ening\nĠworm s\nĠP N\nĠsex date\nĠmon uments\nMM C\nb ots\nĠSDL K\nde ath\nĠp its\n_ choices\n(s olution\nĠpro claimed\nĠQ ing\nĠs scanf\nstr ategy\nde aux\nĠF ischer\n_ IV\nĠin ward\nDate Picker\nĠsew er\nĠeu rop\nĠhomeless ness\n.Spring BootApplication\nĠSpace X\nĠinform ing\nĠ' !\nĠpl aster\nInitial ization\n.b eta\nĠPerson s\nugg ling\nĠsh ampoo\nĠJ eh\nĠs err\nĠmax Size\nĠst itches\n[ path\n.re t\nĠP ret\nNe il\nConvert ed\nĠMaz da\nPOS IT\nTool kit\nĠREAD ME\nCustom Attributes\narch ivo\n.P aint\nget Object\nI Q\n.Web Driver\nĠantib ody\nĠL ima\ninc orrect\nF raction\nĠDead line\nsend Message\n. Offset\ned io\nĠ× Ĳ\nĠsm oothing\n. bo\nĠC ENT\nel astic\n.char CodeAt\nRefresh Layout\nAG ED\n); \\Ċ\nĠ[] )ĊĊ\nĠt aps\nD V\nâĢ ķ\nĠC oy\nĠout weigh\n' gc\n\\Exception s\nĠGram mar\nĠGu atemala\nĠG uru\nĠte j\nĠfriend ships\nĠcop ing\n( updated\n_d x\nAn al\n-M ay\nĠmatch making\nĠjun to\nPACK AGE\nĠrent s\nĠèĩ ª\nc akes\nãĢĤ ',Ċ\nrend ing\n_F ramework\n- )\n( upload\nĠo portun\nĠcaus a\nĠprol ific\nRow Count\nĠnack te\nĠSo y\nSh utdown\nè Ī\n_EX PI\nĠHar bour\nĠto re\n\\ Message\n/ U\nOMB RE\n.se gment\nĠcom ed\nrom an\nĠseg Ãºn\nS igma\nĠski ing\nĠTerr ain\nĠbench marks\nĠAtt ention\nĠ} */ĊĊ\nĠge il\nĠcart oons\nĠattrib ution\nĠrot or\nen ha\nĠÎ ³\nĠtr aj\nĠc Ã´ng\nĠsh akes\nĠClem son\nĠbrut ality\nĠ ;čĊčĊ\nĠeight een\nĠAware ness\n( rest\nĠviol in\n_RO UTE\n.Field Name\nĠA de\niz ia\nĠHel m\nĠt ying\nĠProgress Bar\naut or\nĠl ondon\n& w\ng oo\nIST RY\n/ Create\nĠUS ING\nĠG X\nĠE FFECT\nF cn\nĠEnc ryption\nC ED\nf ine\n- array\nĠpush ViewController\n@ $\nUpload ed\n-w rite\n.get Page\n_est ado\nANT LR\nĠView Data\nĠ${ (\nĠal mond\nĠLog ical\nĠshoot ers\nĠìł ľ\nĠp uff\nĠun comment\nĠcustom izable\nÄĥ r\nDirect ive\nĉ idx\nCh allenge\nĠsummar ize\nĠA vg\n.User ID\n.dispatch Event\nĠcook er\nĠconnection String\nĠshr inking\nj ad\nĠTh emes\nand atory\nĠdub ious\nĠc ep\nsp inner\nĠsub reddit\nĠi ii\n/c ache\ndef er\nĠsubstit uted\nĠgun man\ncl ing\nĠì °\n( ctrl\nOrder Id\n_ eng\nĠfilmm akers\nĠforward ing\nĠstr anded\nĠLe an\nĠë§ Į\n( Unit\nĠdid Set\nl ake\nground s\nåĽ ł\nĠun register\nĠmin ha\nĠV egan\nĉi Var\n---------------------------------------------------------------- ------Ċ\nott le\nIP C\nĠpr agma\nĠI ID\n_M in\n% ;\">Ċ\n_r am\ndr ivers\nĠCh ick\nĠcl r\n_B UFF\nĠÐ²Ñĭ Ð±\nM erc\nju ven\nĠsh im\nÑĭ Ñħ\nĠtheoret ically\n/ forum\nĠsp iders\nĠgo ose\nĠPhot on\nĠprof iciency\nĠCler k\n_f ig\nCon cern\n(c ost\nĠre dd\n.en vironment\nC rop\nĠâī ¥\nyect os\n.Batch Norm\n- comp\n$ image\nĠNik on\nĠd mg\n[ ::-\nPL L\nunc ios\nf ocused\nĠtu o\nĠhv ordan\nĠatt ained\nĠprot ector\nĠK ant\nĠsh ores\nĠEth an\n_s chool\nĠneat ly\n.Sh apes\nĠN em\nh cp\n.' /'.$\nĠMÃ© xico\nstruct uring\nĠl akh\nĠad resse\n',' #\nĠH askell\n_EN GINE\nĠrep ent\nĠc uck\n.F IELD\nĠS ke\n@@ @@\nH its\nĠimpl ants\nĠConstitution al\nĠPHP Unit\nĠtoile ts\n.al bum\nä¸ĭ è½½\nĉset State\n(\" ----------------\n.A mount\nect ure\nĠTh ousands\nNe ither\nĠpres ets\nĠAss ume\n(f actory\nĠl ick\nĠgoal keeper\n< State\n-se curity\n_ ie\nes ktop\nĠL v\nĠSym phony\n.s amples\nĠhypert ension\nÅĤ u\n.j ust\nM ensaje\n!= -\n<T Key\nĠsp ying\n, date\norgan ized\nĠĠĠĠĠĠĠĠĠĠ čĊ\n(c uda\n_M etadata\nub ishi\n-B enz\n_A ss\nĠElse If\nĠles ions\nĠPrest on\nTechn ical\nĠpl atinum\n/ pi\nIndex es\nĠpar aph\nĠover throw\nip ated\nont ology\nĠdem ographics\nĠcan e\nĠprofit ability\nĠestablish ments\n] &\n: absolute\nentr ada\nT p\nĠshare holder\n.' _\nå¦Ĥ æŀľ\nnp j\nvr ir\nĠEX EC\nĠPol icies\nĠfellow ship\nĠCGRect Get\n_rec ipe\n_RE C\nun u\nĠrob bed\nĠtur moil\n) ::\n.start Date\nĠevac uated\n-e qu\nĠfour teen\n@Spring BootApplication\nĠæķ° æį®\nn ants\nth ren\nS ony\nDF S\n-c igaret\nĠaggrav ated\nĠn ederland\nĠF uj\nu ces\n/ use\num mer\n( STD\nê° Ħ\n* >&\n.per cent\ni ants\nĠC t\nV AS\n_T HEME\nĠsn iper\n_E L\n-work ers\nS now\nĠA ura\nie go\nĠG lob\nNamed Query\n_B G\nĠLive Data\nĠSend Message\nĠresponds ToSelector\nenc ers\nin structions\n( It\nåĳ½ åĳ¨æľŁ\nĠG omez\ncharg es\n.Generated Value\nĠMac ron\n( PORT\nĠProcess es\n.on Resume\nĠf ie\nBuild ers\n) get\n_w allet\nĠcan c\nĠMob ility\nĠal arms\nros is\nama Ã±o\nĠp is\nĠ ãĥ»\nSh a\nĠconf essed\n( INFO\n(' ,'\n_S erver\nĠbl asted\nĠFarm ers\nru z\nck editor\n_IM PLEMENT\nĠmot to\nĠC ARE\nĠy dk\nB one\nĠad emÃ¡s\n+\"/ \"+\nProp Types\n_S Z\n.p aint\n.p ixel\nĠMessage Type\nĠtwe aks\n` .ĊĊ\nVer ification\nne ck\nb erra\nĠmind ful\nSur v\nĠ: -Ċ\nĠany ways\nĠAd mission\naccess ible\nFlat Button\nĠ\"' \");Ċ\nĠh aha\nTo Point\nĠburg ers\nget State\n\\ Helper\nĠFUN CT\nĠE LEMENT\nĠC ERT\nĠACC OUNT\ncharg ing\n_c andidate\n_re cent\nĠIn structor\nĠdr unken\nY SQL\nor ative\n\": \"\"\nĠtag Name\n_N EG\nĠq p\nĠUnd efined\nĠgre ase\nĉĠĠ ĉ\nĠeager ly\nTexParameter i\nd istributed\nAdmin istrator\nD istribution\nĠDec omp\nĠTransform er\n.btn Save\nĠG os\n( Enum\nca iro\n-c i\n/re port\nĠPost er\n_depend ency\nĠexplo its\nset Flash\nĠx t\nĠjew ellery\nĠd ai\n_R AM\nĠber ries\nĠgr anny\nF atal\nÃ© al\n-m ost\n.Visual Basic\nĠP end\nbe i\nj ak\n; */Ċ\nBo y\n> Select\nind rical\nTechn ology\nĠAll ison\ndat atype\n' clock\nĠk ost\nĠb ajo\n.C ountry\nZ end\n.w rapper\nà ½\nĠFilip ino\noc re\nSS H\nĠS AMPLE\n_initial ized\n); ?>Ċ\nĠporn ost\nes an\nĠCut ting\nĠmix es\n_ag ain\nĠform ulario\n[ V\nĠtele fono\n/ us\nĠload Data\n.re ferences\nĠmap View\n+\" _\nĠSQLite Database\nit on\nColumn Type\nĠEver ton\n. Results\n/ not\nĠget File\nherit ance\nĠget Height\n$ username\nwith draw\n_ );čĊ\n. ut\nĠQ Application\nurn al\n-down load\nbur ger\npre ci\nĠThank fully\n.E VENT\nĠgreat ness\nĠloos ely\nĠm ash\nĠgeh en\n_ ant\nĠimp ending\n.is Present\nĠst ains\nIM S\n.back ends\nĠirrig ation\nĠT at\n/test s\nĠKing ston\n.trans latesAutoresizingMaskIntoConstraints\nĠvom iting\n-re quired\nĠbl aze\nĠStaff ord\nR ID\n/fw link\nĠk ale\ns old\n(pro gress\n(ch art\nĠc yst\nĠdilig ence\n/ mp\nĠcl ergy\nĠBrowser Router\nĠAP K\nĠCONT ACT\nBar Item\n- Disposition\nĠMotor ola\n_s al\nĠWood en\nĠTHE Y\nĠcomment ators\nĠcommercial s\n= model\n. \"),Ċ\nĠPl ugins\nd ain\nhead ed\nĠCo ordinates\nJ ane\nĠPre ferred\nĠpod emos\n.is Blank\nĠSt ap\nĠw sp\nĠC OLL\n_b id\nĠprob es\nu ania\n(s ym\nĠcuer po\nĠmanip ulating\nĠamazing ly\n.D AY\numpt ech\nacob ian\nTer minate\nĠstation ed\nSet Branch\nS creenshot\nesthes ia\nĠwalk er\n# from\nco ordinate\n_ interest\nĠhelp less\nĉp ub\nng a\n_ Ex\nĠn w\nĠtext ual\nĠpl ugs\nĠmin ion\nma res\n< >Ċ\nAC A\nCompany Name\n( ec\nĠLands cape\n_PROVID ER\nc w\nĶ Ħ\nAccount Id\n$ :\nĠPerson ally\nproperty Name\nĠK ub\n' i\nĠGi ul\nĠprior itize\nFORM ANCE\nĠPar ade\n) \\Ċ\nstd bool\nĠalert Dialog\nĠLe h\n.c atalog\nĠweb inar\nĠimport er\nproject Id\nTY PO\n__ čĊ\nG W\nsum mer\nĠsin ister\n.f ailed\nĠbes oin\nis man\nDE ST\nĠnh áºŃp\nĠmoÅ¼ na\n_in str\nĠp aved\nĠprefix es\nĠramp ant\nĠy Axis\nĠæ³ ¨\n_m iddle\nĠscholar ly\nĠprostit utes\nĠmor ale\n.per missions\n.get List\nĠreject ing\nĠloop ing\nĠSpec ifications\nĠimm ensely\nĠMed ian\n(ch ain\nĠc lich\n/ flutter\nac f\n.ur lopen\nutter stock\nĠspect ra\nĠadm ir\n/ max\n.E mit\n( weights\ni ÄĻ\nInst alling\nJ u\nĠF ell\nĠF RE\n.d en\nĠBig Int\n\"> @\nĠ* );ĊĊ\nĠBi ological\nĠpat ented\n.p agination\n. roll\nĠD ul\nĠdesar rollo\nReg ardless\nĺ ìĿ´\nĠro be\nÐĿ Ðµ\nĠBoy d\n/ ************************\nre ceipt\nĠAss igned\natt endance\n- choice\nets y\n_ else\n, next\n_ex isting\nĠ' '),Ċ\nĠlibert in\ntra its\nat te\nCompar able\nĠC ov\nĠAd oles\n, the\nĠLoad ed\n| r\n= index\nĠG ast\nĠinject or\nĉ stop\n-g oogle\nĠfet al\nĠal lo\nyle ft\nget Parameter\nâĢĿ âĢĶ\n_se ctor\n.U tility\nos cope\n.e ase\nĠMagn etic\nArray Of\nĠfear ful\nĠIn fer\nĠF uk\nJohn son\n$ array\nĠsa is\n_con tr\nDes cri\nĠD etailed\n_le ave\n_RO T\nĠn Ã¤ch\nĠk ami\nDC ALL\n: eq\nĠmon k\n_obj s\n( Service\nfin ance\nĠpod em\n_re store\nĠdecor ators\nĠadvis ing\nĠÐ¿ Ð°ÑĢ\n.p erm\nĠH ai\nĠf k\nunte ers\nĠRT WF\n_ ix\nAC S\nĠbreak out\nd ireccion\nĠSun set\n_f x\nolk ata\n-r adio\nH et\n.util ities\n_b asis\n(k ind\nĠCon c\nTh umb\nĠM iche\ndel ivr\nĠg ute\nĠFile Path\nĠTri be\n\\ \")\n_c uda\nD ifference\nĠMon sters\nĠset Type\n.Content Type\nĠd um\nEn velope\nag t\nĠun load\n_check er\nĠrest o\n_ people\nPr ices\nPro files\n() \\\nF UN\nĠ\"# \"\nĠPattern s\nĠSP D\n_RO WS\nOr ig\nbl ade\nĠl Ã©\n% i\n++ +\nL ifecycle\n------------ ---Ċ\nT ar\nThan Or\n& q\nĠcritic isms\n- ph\nElement Exception\n_g uest\nĠë ¶\n_A s\nĠCar ry\n_B IG\nake up\n_re try\nĠnÃ© cess\nĠMI SS\nis u\nĠSpirit ual\n_ $_\nĠreflection s\n< t\nĠfun Ã§Ã£o\nĠmon arch\nĠPat el\n_v oltage\nĠrain y\nc ourt\nĠul trasound\ni OS\n_AL WAYS\nW o\n_BLE ND\nok sen\nĠtravel er\nĠdata Table\nset Current\nWork flow\n.y ellow\n]) -\nAB SPATH\n_iter ation\nÐ´ ÑĢ\nĠub ic\nĠme ats\n/ em\nĠDis order\nĠenv iar\nSE O\nĠheav ens\n_st ub\nĠad ress\nĠT rie\nĠL indsay\nle i\nĠpl ata\n.set ting\nĠele k\nĠ($ {\nAut omatic\nĠdown stairs\nPI X\nic ional\nab al\n-st orage\nich ier\nĠAl phabet\n, label\n@ Ċ\nĠintest inal\nĠvar a\n.m a\nĠpro gn\nĠneph ew\nTim ing\nclass name\nĠloc om\nĠSam antha\nĠAccording ly\nĠXCTest Case\nĠPl ains\nĠLen in\nn op\nĠTy son\nĠren al\no ine\n( TestCase\nĠL omb\nB ang\nĠv olum\n_g ender\nĠl ut\nĠ ï¼\nConfig urer\nĠstroke Width\n.Http Servlet\n| x\n.J ScrollPane\nĠcons ort\n.b umptech\ntr idges\nĠbenef iciary\n= require\nre nc\nĠO U\nent ario\nĠur ges\nâĢĶ not\nC ampaign\nd re\nĠRivers ide\nĉt b\nĠoutput File\nĠab st\nĠstruct s\nĠr val\n\\\"> \"\nĠac quisitions\nBL ACK\nĠtr unc\nĠannot ated\nset Up\nT OKEN\nĠC oca\nDis appear\n: value\nĠa ided\ntt l\nl ux\nĠac uerdo\nĠF inger\n.Ge ometry\n] ');Ċ\n.g f\nT XT\nĠScot ia\nav ra\nĠv ip\nĠwh opping\n-g irl\nĠcurs ed\n][ -\nĠcirc ulated\nunct ure\norm an\nĠm Adapter\nĠâĢĶ ĊĊ\nFile Manager\n(i Param\nImage Button\nDA Q\nArm or\nĠsp at\n.js delivr\nĠmis og\n.ec ore\n'] }Ċ\nimport s\nĠdin osaur\n-F ree\nĠann on\nĠtrib unal\nY a\n.g uid\nmost ly\n==== Ċ\nĠimag em\nS uit\nk as\nĠCh annels\nB udget\nĠDiv ide\nj em\nĠG ri\nĠindic ative\n\\ Factory\n.re positories\nĠA MP\n.s np\nĠa Ã§\n\" k\nĠÂ µ\ndec oded\n_ arc\n- Clause\nĠAd j\nĠnew Array\n( GET\nĠlat in\nĠw z\n: uint\nåĪ «\n\" ..\nConnect ing\nenn on\nå¹ ¶\nĠS es\nĠbelong ings\n+' &\nĉ settings\nIN V\nĠp Ã©\nĠadul thood\nam ble\n_m asks\n-res olution\nr ats\nĠíģ ´\nĠv og\nĠSh o\nĠC ovenant\nĠrem inding\norn ado\ni ad\nå¼ Ĥ\nCreat ive\nĠST YLE\nĠanom aly\n\\ Application\nĠmanifest ation\nĠN ano\nMap View\nide al\nach inery\nĠVa ugh\nprint er\nVer dana\n/ component\nĠadd Child\nĠlear ner\nĠdec rypted\nĠtight er\næĿ Ł\nĠje j\nĠ .ĊĊĊĊ\nĠL obby\nle p\nÃ¤ nn\nle igh\n/r outes\nĠcan opy\nĠF iscal\n: ;\"\nĠbur dens\n/f ull\nĠCS R\n.Shared Preferences\n/t ree\nĠdro it\nIm plement\nGet Current\n(p ush\n$ x\nÑı Ð·\nAC ITY\n======== ==Ċ\nj c\n_h ref\n.get Root\nĠK D\n(l s\n[c nt\nĠd all\n(b p\nĠE W\nKey Event\nlo be\nĠhtml entities\nĠfal ta\nĠval ves\nĠs izing\nP orn\nĠshow Error\nĠF rid\nĠÃ ĩ\n.rand n\nĠtan tr\nĠs ax\nuro vision\nthe on\n_R CC\nxF D\nInit Struct\nĠcann ed\nĠquant idade\n.W ARNING\nĠBrit t\n- register\nact ively\nĠNatal ie\nãģ ¿\nĠCON NECT\nz ek\nĠmill ones\n] int\nĠ', ',\nĠpr in\n\": [-\nĠ// .\nĠintimid ating\nraz ione\n.ib m\nĠJak arta\nÐ¼ ÐµÑĢ\nĠload Children\n_UP LOAD\nĠWeek s\nĠget Text\nĠðŁ Ĵ\nĠ] ]Ċ\nĠCost s\nÄĻ p\npay ments\n.M ovie\nl h\n´ Ī\n_c ertificate\n= q\nlib raries\nĠA er\na uss\nĉf ail\nOUN DS\nsend Keys\nĠsc ams\nw arts\nH ist\nĠEs sex\nĠf ury\nĠtit re\nĠC openhagen\nĠpre defined\nsc p\ns errat\n. ensure\nile e\nMer it\n_UN LOCK\nĠCor rection\nNormal ization\nĠ ä¿®æĶ¹\nĠst ool\nĠåĪ łéĻ¤\nShort cut\nch osen\nĠbul ly\nĠfunc iÃ³n\nãĥ¼ãĥ «\nĠçĶŁ åĳ½åĳ¨æľŁ\n.al ias\n> Total\nĠS TEM\np eng\ncal er\nper fect\nĠbond ing\nPh ones\nĠpul p\në¶ Ģ\nIE WS\nĠDe er\n_L CD\nĠCon cord\nW izard\nĠof rec\nĠEmer ald\nten ess\nn avigator\nThe ory\nĠguard ar\nĠful fil\nĠUn authorized\nĠB out\nĉ host\nĠR ib\n( ft\nDoc s\n.get Body\nå¿ ĥ\nĠRiver a\nĠw aving\nĠper fil\nBounding ClientRect\n.f a\np aged\nĠAff iliate\nĠpro let\n} ->{\n(s cores\nĠvit ae\n{ Name\ns cheduler\n_S AN\nĠN ec\nĠBe ef\n_t c\nL IN\nĠEvent Type\nĠBuffered Writer\nĠso fter\nĠV oting\nĠGesture Detector\nĠun seen\nĠSC O\nĠel o\ncomb ine\n_make Constraints\nĠunder gone\nĠOfficial s\n, opt\nĠlayer ed\nI ÃĵN\nĠbank ers\nĠsegreg ation\nĠr ussian\nĠvent ana\nget Key\nS anta\n.ToolStrip Separator\nĠA eros\n.put Int\nĠinform s\n_b ill\në¦ Ħ\n.set Max\nĠ} >Ċ\nĠI PS\nĠA lic\n\" }ĊĊ\nĠus her\nĠNg uyen\nĠabs olut\nĠguard ed\nĠRe bel\nĠZ w\nĠAnn unci\nĠpr Ã¡\nabcdefgh ijkl\nĠVer ified\n[ ix\nĠt iers\nÃ¢ t\n. \")čĊ\nij u\nl iving\nG PS\n.Test Tools\nSize Policy\nĠmass ages\nassert InstanceOf\nĠposs ÃŃvel\nĠbus c\nĠJuda ism\nĠindispens able\nĠMost ly\nIT A\nĠget Content\nBrowser Router\n-count er\nĠob ten\nĠ/> );Ċ\nÐ¸ Ð»\nhead line\n(h ome\nal ice\nld re\n_M odule\nCom panies\nN PC\nĠtor so\n.con s\nĉ address\n_p urchase\nĠB ard\ng st\n-an imation\n_p aid\n.s pecial\nĠdel im\nĠtake over\n(h and\nenu ine\n-g rey\nĠA BI\nSession Factory\ninstall er\n_DIST ANCE\nĠF avorites\nł Ģ\n'> {\nĠLaure nt\nÑĩ ÐµÑĤ\nĠstrips lashes\nĠest aba\n& t\n.p an\nĠPART Y\nĠB ali\ncs i\n(m emory\nĠT odos\nĠSO AP\nagn et\nĉb efore\nOptions Resolver\nib en\nĠÙħ ÙĨ\nĠadd itive\nĠMe lee\nĠManit oba\nĠPer centage\n= (-\n.k ill\nĠl x\nan ca\nĠfot ograf\nĠbl anc\nĠRes idents\np ink\nH BoxLayout\n.un ion\nĠH Y\nĠcontent View\n-f at\nĉ has\në£ Į\nĠwh ipped\nv endors\nub re\nIT HER\n.function al\nĠÐ² ÐµÑĢ\nC anceled\n-c n\nIn Out\n.Row Styles\nĠtr ata\nĠInd oor\n-fashion ed\nĠBo oth\n.Label Control\nĠp ope\nĠCarn egie\nner gie\nĠB X\nãĢĤ \",Ċ\nĠWeb ster\nĉ div\nN arr\nĠconj ug\nk id\nĠmoder ation\nĠam y\nĠS olve\nV IC\nĠE Z\nill ac\nĠC ipher\nĠAccept ed\nL ABEL\nĠwr ath\nĠmin Value\nĠka Å¼\nĠDa ughter\n). ^\n(d c\nĠres olves\nsc ss\nabout s\nultipart File\nĠfe ats\nĠlaunder ing\nĠcomp aÃ±\nĠseg uridad\nĠh obbies\n-f acing\n\" value\nget Image\nSql Server\nĠwith Styles\n> Date\nĠEx ped\n$ json\néĵ ¾\nĠACTION S\nS ensitive\nbl ast\nĠÃ¶ ff\nf te\nCT STR\nĠLog Level\ncontract s\n.d jang\n\"> ččĊ\nET YPE\nĠobj c\n_S OUND\n_sp acing\n_class ifier\nĠro c\nClass ic\nĠë³ ´\n_in verse\n- acre\nĠF IL\nĠDVD s\nĠsw allowed\nv illa\nĠRe plies\nF irebase\nĠphys ique\nĉ that\nĠRes ize\n>>>> >>>\nN early\n. artist\n- {\n?> čĊčĊ\n.l r\n. ir\n([ $\nian ne\nĉ ob\n,' %\nĠkn ex\nĠcor ro\nĠOw ens\n= nil\nl ays\nap g\nÃ ĸ\nEN O\nHen ry\nJust in\nelect ric\nĠNord ic\næĮ ĩ\nĠex cludes\nEurope an\nĠt ents\n(String Utils\n( peer\nyst ore\nP ocket\nf uel\net us\nĠMar in\nÑĢÑĥ Ðº\nè¯ Ħ\nĠP ens\nĠin efficient\nĠet ernity\n.' &\nĠPack ages\nĠApp Config\nĠmult id\ncul o\nĠborrow ers\nĠDe bbie\nĠfront s\nJ J\nĠ\"../../ ../../\nĠ\"+ Ċ\n================================================================ ================\nĠG avin\nĠm ish\nâķ ĳ\n_ATT ACK\nInd epend\nà¯į à®\nÃ¡ f\ng ars\nĠParticip ation\nVer bose\nS pr\nS vg\n(Value Error\nĠreconc ile\nĉ DBG\nme et\nĠLogin Page\n-un used\nĠj ong\nĠancor a\nĠØ £\n> Z\n= w\nĠR eno\nv ie\notion Event\nĠList Tile\n_R untime\nĠup hold\nĠOb tain\npro vided\nĠDate Picker\nĠCG I\nĠBlack Berry\nach o\nĠIsa iah\næķ ´\nĠAbd ullah\nĠup p\nĠurl patterns\nĉsize of\nĠpiss ed\nĠpreferred Style\nAP PER\nĠV B\nĠTer esa\nogn ito\nEM Y\nĠeleg ance\nĠClay ton\nativ os\nĠAnal og\nĠga ussian\nĠH ibernate\n[] [\nĠsweet ness\nĠNi elsen\nĠDut erte\n(s el\n, +\nĠextra ordin\nfl ake\n[ Double\n/// čĊ\nĠmuch as\nĠBroadcast ing\nAssoci ation\nex ercise\n.Rel ative\nĠubiqu itous\nSB ATCH\nÄ± na\n- food\nĠcryst all\nÑĥ Ð±\nĠ' ~\nĠÐ ĳ\nĠd unk\nĠz i\nĠM ug\nĠde ception\nĠEm acs\nĊĠĠĠĠĊ ĠĠĠĠĊ\nĠÄĳ Æ°á»£c\nĠW olves\nament i\nĠ' )[\nform ats\nRec v\nD etailed\n(H WND\n_tr ial\nag rant\nO m\ncon scious\nĠo sp\nqu Ã©\nĠg on\nĠmere ka\narend ra\nM ine\n.link edin\nĠfif o\n.m onitor\nĠrun e\nmn op\nĠspec ulate\neg l\nĠv ascular\n. tech\nĠmag ma\nĠle st\num ann\nĠDriver Manager\nĠ ort\nĠling ering\nĠo stream\nĠspark ling\n.conn ector\nĠt ails\nĠk ernels\nUSER NAME\nĉ cc\nĠon Select\n/M PL\nt ape\n.djang oproject\nG ene\nâĢĻ in\n/ filter\n-en velope\nĠappl ause\nĠregist ros\nĠC ory\noff line\n- shot\nles c\not ent\nĠnumer ator\n.e ffect\npl acements\nĠA FC\n.Se quence\nĠ---------------------------------------------------------------------------- Ċ\nynth ia\nĠGriff ith\nel man\nset Description\nĠN ights\n. orders\nĠ` ,Ċ\nĠSal ad\nji ang\nĠrec ur\nĠSTAT IC\n-s ponsored\nyl ene\n, email\n__ ))\n) \").\nCE LL\nam ment\nL AY\n, std\n.p ref\n.C or\nred o\nĠFuck ed\nĠr uss\nĠestablish es\nn varchar\n.Get FileName\nĠp emb\nĠS aud\n_p ackets\n.in voice\n.get Total\nHome Controller\nĠt Ã¶\nag her\n. ent\n.Absolute Constraints\nĠgen us\nĠBab ylon\nĠ ../../\nĠMid night\nĠw g\nĠd ancer\n- imm\nd ire\nh azi\ncert ificate\nĠm Data\nĠc ured\nsv n\n\" B\nib re\nĠdraft s\nCap ital\nĠconc ise\nĠPe ach\nĠ| \\\nĠp pm\n_cont ains\nA utor\nAuto Size\n_l b\nĠso lemn\nĠfing ert\nĠInd icator\nĠS v\nP ark\n$ type\n_M ISS\nann ual\nP aid\nm asters\nĠW D\nĠv uel\nĠej ac\nĉgl ut\nĠun finished\neste em\ngroup Box\nRem oving\nĠein ige\nĠScript s\nget to\n.Handle Func\n\"] ),\nĠdisadv antages\n- front\n> p\nset OnClickListener\nĠland lords\nĠM Ã¼\nĠpre processing\n)} >\n- context\n, bool\nQU IT\nĠ\") \");Ċ\nĠWe bsites\nĠCharl ottesville\nL atch\n.direct ive\nĠHuff ington\n_dir ty\nexp iration\nĠT PM\nĠed x\nĠWebDriver Wait\nĠadm ired\nĠlist ens\nĠV il\nd ifferent\nĠliv elihood\nĠWar craft\nĠpos icion\nĠimpe achment\nJ ay\nĠposit ives\nĠj unge\nĠS MB\n/ includes\n('../../ ../\nArgument NullException\ndesc ricao\nABC DE\n- AA\nĠinv aded\nĠamer ica\nued e\nĠPh aser\nĠsc orer\nĠdiscour aged\nth in\nĠabdom en\nĠI PP\nĠHam pton\n/ Delete\n[ src\nC String\nĠN un\nĠep ith\nâĢ »\n.t ables\nĠHe in\nĠwh irl\nĠclar ification\nĠw edge\nĠh Ã¤r\nĠT ina\nĠth wart\nĠCost ume\nion age\nC od\n_a cl\nĠres h\nĠMerc y\nĠD ixon\nĠdesar roll\nVir gin\n** )&\nĠLen ovo\nĠer ased\nent ions\nĠsl ipping\nåĽ Ľ\nĠcr aving\npl ants\nĠget text\nĠmass ively\nĠR ename\n.h ero\nãĤ »\nĠto mar\nĠC OST\nĠPract ices\n.Media Type\nĠFund ing\nF ine\niger ia\nU nc\nĠsw apping\n>' .Ċ\ninter p\nart ifact\nĠB ags\n.view Model\nqu oted\nĉ Long\n_SC ORE\nĠsav vy\nn elle\nkl Ã¤\nCount s\nÚ ¯\nField Type\nok able\nĠRT L\n# index\nĠ% {\nĠar ist\n.Get Mapping\n(Adapter View\n=\" \")Ċ\nĠdis in\nĠTouch ableOpacity\nĠMO Z\nĠD unn\nCap ability\nakh stan\nUI ViewController\n(sock fd\nĠJac ques\n= tk\nar Params\ncond a\nĠadvoc ated\nĠpenet rate\nJE CTION\nĠë° ĺ\nĠF IND\nĠearn s\napp en\nê ±\nĠthrough put\nĠp ensions\nĠf uss\nHTTP Request\nn uts\noch t\n-establish ed\nĠAL IGN\nĠj spb\nDis p\n_embed dings\nĠre pt\nĠYork er\nÃ² ng\nĠjour neys\nĠAppro val\nĉ SELECT\n(G raph\nÐ¼ Ð¸\nĠdoll s\nĠsex ist\nĠp ans\nĠm pl\nĠoper ative\nĠTor rent\nY M\nĠPass ion\næĸ Ń\n.com piler\nĉC String\n= color\norian Calendar\nĠKn ock\nĠh ailed\n/ state\nĠset uptools\nĠM are\nĠsynchron ize\nĠSw ipe\nĠgam ble\n,' ']]],Ċ\nĠdefect ive\n_OBJ C\nĠden im\nĠt ad\nĠKim ber\nĠneuro logical\nÃª ncias\nĉc b\n.set Password\nĠPle asant\nĠPh i\n-t ags\nĠcont ag\nĠCor al\nĠdistr act\nit izer\nĠsun rise\nset Id\nĠCh ennai\nĠO gre\n_H ISTORY\nPRE SSION\n_S UFFIX\nd uplicate\n.auth Service\nĠsp aced\nĠBeng als\nS olver\nĠbureaucr acy\n_h its\nĠÑĤ Ð¸Ð¿\nĠc Ã©\nĠdisgr ace\nè§ Ĵ\nis Open\nCh em\n_ license\n_host name\n_B REAK\nĠfi ery\n: D\n/ linux\nTit ulo\nR adians\niz ons\nR am\nod ian\ni angle\nĠnin ja\nEvery body\n(\" >\nĠtak Å¼e\nĠground breaking\nĠdir ig\nHT MLElement\nĠUn comment\nche in\nĠçĶŁåĳ½åĳ¨æľŁ åĩ½æķ°\n% \"Ċ\nĠtip os\nChar Code\nĠProduct o\nf ait\n' l\n-th umbnail\nus u\n_form ula\n.T OP\n.b uy\nĠmie ux\nCent ury\npe i\nĠt bsp\n-P acific\nog i\nĠfat to\nĠfant ast\nĠSA LE\n. ads\nĠpill ars\n_tr ip\nĠt ua\nĠap ellido\n.set CellValue\nĠ(( _\nĠN ina\n< c\nin ium\ndf unding\n- working\nĠEst ados\nĠM ali\n< f\nur ances\npag ina\n_P K\nĠun armed\nogg led\nC andidate\nR ather\nĠfranch ises\nĠc ovenant\nÂ ª\nipp ines\nG un\n-fe ira\nĠline age\n_GR ANTED\ngen res\n.El apsed\nĠlarg o\nÐ Ľ\n- ready\n_process ed\nlang s\nÃºmer os\nf q\n/n pm\n_s rv\nĠattend ant\niv id\ne vice\nAB I\n(b inary\n_VALID ATE\nĠadd Item\n_co ef\nale b\nograph ically\nBorder Color\nĠass ay\nĠcatch Error\nĠCh rysler\nog h\nĠkey Value\ndec ision\n-off s\nĠlie gt\n(Data Type\nĠir is\nĠe up\nr iger\non ica\nĠrop es\nĠnarrow ly\nĠQu adr\nĠep ub\nest inal\n- turn\nĠlang s\nçĽĳåĲ¬ é¡µéĿ¢\nĠqu ello\n, args\nig ate\nĠSe ems\nĠfor te\nCL I\n_LO ADING\n.R ule\nĠyouth s\n(x x\nĠAss uming\nagh etti\n)ĊĊ ĊĊĊ\nĠon OptionsItemSelected\nOcc up\nĠdetriment al\nĠinn ate\nĠBar rel\nu encia\nĠon Blur\nĠlib s\n[ last\nĠcp f\n.Time out\nest ation\nĠw iel\nĠutil izar\nĠdisgu ise\nĠD um\nOC I\nONG O\nĠ( ?,\nĠP atio\nVertex Array\n.author ization\nro z\nĠH os\n.S pace\nĠVir us\n(key word\nTO COL\n_CONT ROLLER\nĠBlock ed\nĠCh op\nwi ÄĻ\n\\ Routing\n/ package\nĠpersu aded\nbe its\nL CD\nĠm uc\n_FOR WARD\nĠout law\nĠz aw\n_ vehicle\nĠJ ensen\n.G reen\nĠ// ///\nIR CLE\n-b usiness\n.H idden\nĠkon nte\np q\nĠpare ce\nĠlandsc aping\nĠDec oration\nĠG RA\n_pro files\nĠF lem\nCL ICK\nĠFAIL URE\nĠ ions\n_T imer\n.D oes\nĠb ouncing\nup py\nul is\n/ ag\nĠG arn\nĠh ud\nĠres ponder\nĠstr chr\nĠcho ke\nĠst ash\n_check sum\nĠstamp ed\n@ GetMapping\n. ByteArray\nĠD ys\natern ity\n(r b\nĠedit Text\nĠere ction\nĠc ess\n_e very\n_g ateway\nĠ' \".\nĠstaff ing\nĠinvo ices\nin icio\n} ],Ċ\n, var\nyc in\nĠD ion\nĠ% %Ċ\n', (\n-s pan\nĠth Ãłnh\nĠb orne\nĠKath leen\nè¿ŀ æİ¥\n_c ube\nĠinform aÃ§Ãµes\nng er\n/ File\nĠd ara\nĠm L\n**** **Ċ\nĠmark ings\nb be\nĠrec urrent\nĠRank ing\n_int egral\n] >Ċ\nĠunanim ously\nĠdiplom ats\nĠI OS\n; \"><?\nĠMat te\nĠR aleigh\nĠImpro ve\nex istent\nĠf aker\nĠHigh land\nst em\n- ms\nList Of\n. Listener\n(w ait\n_R ST\nUn a\nĠoccup ational\n-m emory\nĠSur f\nĠbr ute\n_ Element\ndd dd\nĠDec re\n.p si\n-de vel\nĠOnTrigger Enter\nTo Delete\nĠher ald\nĠsoc iales\nĠboost ed\n.I toa\n* \"\nĠant idepress\nĠM aver\n__ ))Ċ\n(D uration\nest ate\nbr ate\nC la\nĠ ä¸Ĭ\nëĲ ĺ\nri Ã¨re\nbreak er\n_ leg\n}else if\n_func s\nu ÃŃ\n.page Y\ncre ature\nĠcann abin\nĠAst ro\nloc als\nĠL AS\n_con version\nĠCR UD\n.s kill\nĠstrateg ist\n.p ol\n(se gment\nĠpe e\n} \");ĊĊ\n.pre view\nJ am\nĠhe fty\niv ating\nGrid Column\nĠcu dd\nĠin jections\nĠN IL\n-old s\nfl ation\nĠLeaf s\nĠs pherical\nĠfall out\namin er\nĠ:: =\n.point er\n-M art\nĠmat te\nĠco quine\nĠdiscontin ued\nĠREG ION\n.Right ToLeft\nĠsqueez ed\n_POINT S\nbest os\n-l asting\n( utils\n< Base\nĠp ardon\nStr ide\nc dr\nĠnarr ator\nv olution\nĠuser Input\n_contact s\n( enemy\nĠCham bers\nzi el\nĠblock Size\nAnimations Module\nĠimm ersive\nĠout ing\nuest os\nT ween\nĠke p\nĠrÃ©s ult\nĠB ollywood\nD LL\nĠSure ly\n.Row Style\n(t m\n_g eneration\nĠSt ir\nĠdata Snapshot\nch urch\nĠconfidential ity\n_s uspend\nv ip\nĠK athy\nãĤ ¦\nĠviol ently\np ets\nĠmess ed\nĠtext books\nĠĠĠĠĠĠĠĠ ĉĉĉ\næ¶Ī æģ¯\nĠLar avel\nĠArc ade\nĠent h\nĠben ign\n_D ROP\n- enable\nâĢĿ ).\nuvw xyz\n_list ing\nĠN IC\nãģķ ãģĦ\n(\". \",\n-round ed\n-p aced\npat rick\nSe le\n.get First\n.EX IT\netermin ate\nG ram\n// ****************************************************************************\n.ext ernal\nĠwrong doing\nĠEl m\nĠs ank\nTe en\nĠThom son\np rior\nj eta\nĠA DS\nĠP ersistence\nĠF olk\n{ \\\"\nb ond\n_S PECIAL\n_L AT\none ksi\nĠmother board\nĠshe ar\nFull Screen\n* K\n( Blueprint\nMethod Info\nB ecome\nĠh ail\nĠD ob\nĠgener osity\nĠ? \";Ċ\nĠwh iskey\nĠth inner\nĠC p\nĠintersection s\nC rit\nrais al\nre ffen\nWh enever\nĠcomm enced\nTrans formation\n/ write\n=\" \"\"\n( ld\nĠnors k\nAM ENT\n.shared Instance\n_h ouse\nĠgl Enable\nè½ ¯\nĠn ao\nĠde position\nĠdin osaurs\nĠtime Stamp\n__ );ĊĊ\n.R ibbon\nĠLind sey\n: user\nĠÃ Ģ\n_form s\nmin ating\nĠOl iv\nĠdÃ© but\nbar code\nsim ilar\nĠplate au\nĠind em\nRe alm\nĠfertil izer\nĠc ape\nĠchamp agne\nĠself ie\nĠplain ly\nĠcatast rophe\nĠbetray ed\nvers ible\nUpdate Time\n. OutputStream\nbi ased\nb ounce\nĠSport ing\nCo ordinator\ndevelop ers\nĠtr acer\nĠmust ard\nS Q\n_term inal\nĠco oled\nĠavoid ance\nLog ical\nĠy ell\n_r outes\nĠar tery\nĠBear ings\n.m vp\n.G UI\nUIS creen\nym m\nit Ã¤\n() [\"\nĠA zerbai\nĠcondition er\nĠw ag\nĠscal p\nvinc ial\now ler\n.' );ĊĊ\nBL UE\nĠÂ§ Â§\nB oston\nĠLinked HashMap\nDocument ation\n.L erp\nĠden ne\nĠhes itation\nĠCelebr ity\nĠHy de\nĠcommand ing\nac ellular\nĠpav ement\nĠHam mond\nass ic\nPL UGIN\nĠrev oked\nDocument o\n.ph otos\nĠWill ow\nĠV iking\nĠup front\nĠL ifetime\nĠ% [\nD ream\nå¤ ´\nĠacceler ator\nPerson a\n_top ics\nï¼ī ãĢģ\nĠ( _.\nĠsÃ© cur\nĠK w\n_c ash\nĠsoo thing\nĠLov ely\nĠH ers\nel on\nL ICENSE\n_c ached\n.sh a\nR FC\n.File InputStream\n- Al\nĠuser List\nĠn Ã¤r\nH illary\nĠp ago\n.Pl ugin\nĠC ove\n_y aml\n_r sp\n' post\n-d uration\nĠsent ido\nĠmin Height\nĠt urret\n- energy\nĠç ī\nÑĢÑĥ Ð³\not eca\n_ qual\nSelect ive\nĠBE LOW\nĉ admin\nĠ} },Ċ\n' user\nSV G\nĠc ulo\n( World\n-b inding\nn br\nĠS ends\nĠsuprem acy\nĠsk ating\nĠc reek\nĠaccus ation\napg olly\n.ID ENTITY\nĠmand ated\nĠg own\nĠwidth s\nĠLS U\n/ version\nĠRead ers\nĠRon aldo\nĠb aff\nĠ` ;Ċ\nGL ISH\n(d ot\nĠOper ators\n.Scene Management\nmer c\n_re ports\n-cent ric\nĠCe iling\n={ !\nmon y\nĠADD RESS\nå¯¹ è±¡\nMatch ing\nĠun k\nĠkey Code\nĠ'/ ')\n) data\nĠVol unteer\nĠla z\nĠGu ang\nĠC andidates\nEn sure\ni age\ns ucc\nC ertain\nĠleft over\nin in\n-element s\npi ke\nĠslides how\n.toolStrip Separator\n.ph ase\nĠentert ained\nĠCar rie\nĠMoh ammad\n.log ged\nĠscroll Top\nĠAbb ey\nim ony\n(result Set\nĠad hesive\n_D AMAGE\nĠio ctl\nb rown\nIN ST\n.Cl one\nĠlo oming\nDes erialize\nĠl uz\nqrst uvwxyz\n. ident\nHe avy\nĠd io\næĺ¯ åĲ¦\nĠF urn\néĤ ®\nz immer\nãĥ¼ãĥ ī\nspe aker\nĠG ed\nĠun identified\nInterface Orientation\nĠSurv ivor\nde en\nĠB org\nto Double\n_b w\nĠpublish es\n_AL ERT\nang s\nier es\nĠhe i\nĠI Configuration\nĠconstit uted\nW ATCH\npriv ation\nĠGran ite\n.Text Alignment\n_k w\n; \",Ċ\nc ot\nĠNew ark\nro ach\n) obj\nComp ilation\nCategory Id\n.set User\niv y\nĠIm aging\night ed\nĠw get\nĠmouth s\n.l in\nĠRadio Button\n.C md\ns se\nĠmesh es\nĠS ole\n.rec ords\nĠant is\n(m on\nĠÑĩÐ¸Ñģ Ð»Ð¾\nĤ Ń\nĠìŀĪ ëĬĶ\nAll ArgsConstructor\nĠsurre al\nĠMar ried\nĠx path\n\\ f\nBr ing\nĠy ahoo\nĠE tsy\n_d aily\nĠthrow able\nĠPl asma\n/ Public\nimize Box\nĠv es\nĠt rom\n_r hs\n- alpha\nĠAr bor\n)) -\nF ish\nfe eds\nĠcal f\nĠSerge ant\n( enum\nĠRam sey\nĠIdent ify\n.init State\nĠfluct uations\n_ATTR IBUTES\nĠp wm\nES A\ncp f\nSim ulation\nĠyouth ful\nĠInf antry\nĠgl anced\nĠPro per\nä¹ ī\nĠK raft\nC it\no ops\n= url\npost ing\ndecl aring\nĠp Node\nJ avascript\nĉĉĉĉĊ ĉĉĉĉĊ\n.co ordinates\nri et\nĠS q\n_C AT\nĠP apa\nand i\n//////////////////////////////////////////////// ////////////\nMe eting\nĠìŀ Ĳ\nIm agen\nÃ©ri ence\nAg gregate\n.p oly\nĠw aved\nĠinv ers\nsearch Model\nĠt rolls\n[ level\nĠLow e\nul lo\n( place\nĠNAS CAR\nĠorb ital\n.st ory\nĠauthor itative\n.text View\nĠal ph\n_re duce\nĠFr ames\nĠB rom\nred i\n(Method ImplOptions\nmac en\nT ot\nĠm idd\nÙ ı\nĠBase Model\nĠV ega\nĠ?> \"Ċ\nĠR igidbody\n.set ContentType\naa S\nBas eline\nĠblank ets\ns ap\nĠcas ually\nUn ivers\nĠTr ay\nĠA ires\nĠmax Y\n_PRO PERTIES\nĠhelm ets\nÂ ¦\n_desc r\nsh int\n_C PP\num o\nad ay\n( plot\nenz yme\nĠException s\n_vis ual\n: ]ĊĊ\n(target Entity\nph eres\nun an\nĠsel on\nw il\nĠRender ing\nK C\nĠconstitu ency\nSCR IBE\nes y\nĠFellow ship\nåı ¸\nĠfut uro\nĠarm ored\nlist e\nor as\nm ultiply\ng eme\nco ef\nÐ¾Ð±ÑĢÐ°Ð ¶\nĠDel iver\neng o\n.user Service\nON US\n.on readystatechange\nĠ\"/ \",\namb io\n_Pro ject\n') ?>\nĠfl ipping\nw omen\n.C ross\nĠh olland\nĠcin ematic\nĠwhistle bl\nĠlingu istic\n.Get ter\nĠm Ã¤nner\nĠLeg o\nĠSch umer\nass essment\n_ch k\nĠrecomm ending\n.scal a\nĠGuar antee\nĠ@ _\n.A UTH\nĠy Pos\nlat ex\nĠAlbert o\næŃ ¥\nth ora\nà¸· à¹Ī\nURL Exception\nG host\n.Tool bar\nĠend ian\néĹ ¨\nstr actions\nFile NotFoundException\nĠstim ulating\nbs ervice\natÃ³ rio\nit ious\nĠauth Service\n_TRANS FER\nĠredirect To\nĠmens en\nĠS PL\nĠÂ» ,\nĠac et\n_B ack\nà¤ ķ\na ac\nĠR iot\n_F B\nĠZ a\nPl ate\nĠlabel Text\nĠÐ² ÑĢÐµÐ¼\nht on\nĠMc A\nĠAppend ix\nĠK ok\nĠinterview ing\n_sp ell\nĠSubject s\nĠburn er\nå¯ ¼\nill ian\nĠb umps\nPass ed\nĠContrib utor\nY o\nbl a\nĠs out\n.ex c\nNot ifier\nsh iv\n.Unit Testing\nuel les\n_S LEEP\nĉ opts\nĠpres criptions\nĠrev ise\nEDIT OR\nĠann Ã©es\n_p kg\nĠTr acks\nà¹Ī à¸²\n= forms\n.R UN\nĠa seg\nĠp Ã¡\nĠj es\nG re\nac r\nOfficial s\nuk es\ncom panies\n\\ Query\nĠPrint able\nå® ¢\n_V O\nĠde ix\nĠdevice Id\nĠdisturb ance\nn ist\n.is o\npar alle\n-described by\nĠL if\nĠbreast feeding\nĠfemin ists\nleg round\nĠd ame\nĠcompuls ory\nM ERCHANTABILITY\n- results\nformed URLException\n:[ Ċ\n- interest\nĠs Ã¤\nĠnostalg ia\nĠclar ified\nĠPH OTO\nĠrevis it\nĠcaps ules\nĠsh ines\nĠcraft sm\nsubject s\nĠĠĠĠĠĠĠĠĠĠĠ čĊ\nä¸įèĥ½ ä¸ºç©º\nĠSchw artz\nre u\nĠmad rid\n.p ending\nĠL IN\nĠun st\nĉm v\nĠviv astreet\nĠspo il\nÃ¸ j\nëĭ ¹\nĠbu ena\nĠdigital Write\nsub s\nĠUN IVERS\nĠSu icide\n< Guid\n.e lem\n_con struct\nĠamid st\nĠë ı\n- esteem\nĠIntegr ity\n.f ml\nOutOfBounds Exception\n-Semit ism\nB eta\n-go ing\nSeg ments\nĠM ae\nĠPerson ality\nurb ation\nåı ³\nĠserv icing\nĠbip olar\n_ST AGE\n.J PG\n')}} \">\nish ly\nIV ERY\nĠInsp ired\n.s erv\n(d atas\nĠdiv ides\n< Real\nvert ure\nĠmotiv ations\nver te\nEN CH\nf ds\nĠrev olt\nweb token\ninst ead\nĉ opt\nĠMari juana\n_ad c\nb ao\n[ SerializeField\nĠgra ffiti\n-a os\nem iah\nĠf ÃŃs\nĠeth ic\n' all\n: key\nëĵ ¤\nĠrestrict ing\nĠX HTML\nere o\nund os\nĉ endif\n[: ,:,\nĠst ehen\nakh ir\nĠju ices\ndata Source\n_m k\n.de leted\nCong ress\nimm el\nElect ric\na os\nĠOver lay\nĠA CLU\nr nd\ness es\nĠLux embourg\nparse Float\nĠg uts\nclass ified\nĠdef Style\nĠT cp\npe ating\nCh arts\n_ ur\n_l atest\n) !Ċ\nc ation\n.Get env\n( loop\nĠun l\n_d type\nze ÅĦ\n(J NIEnv\n.fetch one\nĠsig moid\nĠO LD\nĠMin ist\ní ģ\nĠK Ã¶\nĠfra ctions\nĠs iz\n==== =Ċ\n.Print Writer\n_Add ress\nĠAud ience\nCom o\nĠBru ins\n. activities\nĠance stry\nÑĥ Ð»ÑĮÑĤ\nĉ Return\np un\nĠgr apes\nIL og\nĠdi jo\nĠPer kins\nĠVM ware\n_auth enticated\nÃ® tre\nover write\nĠH d\nĠgal axies\nach u\nH ref\n[ D\nĠpar ce\nLat Lng\n_pattern s\nĠSH ORT\nĠrum ours\ncount y\nĠGR ID\nĠ[ /\nĠSky rim\nDataGridView TextBoxColumn\nĠc en\nĠc ucumber\n. INT\n_CONF IRM\nĠc tl\nper l\nil los\nĠA CA\nĠGe orgetown\n_call able\nĠCraft s\n/ co\nĠin bound\nĠTechn iques\nset Checked\nĠp name\ncom put\nSte el\nĠhand held\nĠAl am\nabstract method\né¢ ĳ\nIN Y\nb attle\n_E VT\nĠce ux\nĠat of\nĠA byss\n_valid ator\nĠh airs\nVertexAttrib Array\nĠcomm ons\n-b ind\nM ui\nĠcos metics\nĠmir ac\n.m arker\nSC ALE\n.W ord\n- ul\nĠD iversity\nĠD DS\n.c wd\n_x yz\nĠComput es\n(click ed\nTEMPL ATE\nĠz oning\nĠf ins\nĠP J\next View\nCharacter istic\nig ators\nĠpro claim\nĠpr istine\nĠdata store\nĠdiscour age\n_n sec\nĠninete enth\nĠcel ui\nJon athan\nĠam ph\nĠCross ing\nĠHum ans\nĠBook er\nÃ¢ ce\nget Post\nĠMon ter\nĠFl avor\nMedia Type\n\" âĢĶ\nĠArch ae\n@ return\n- aware\nor u\n- The\nample d\nK F\n.T emp\nĠD re\n({ _\np olygon\nĠÃ ¦\nĠDef ender\nï¼ ĺ\n_ ),\n.Un supported\n_ ^(\n(ID C\n$ v\nĠworth less\nĠSE G\nil iki\nNo ArgsConstructor\nĠMer ch\nĠn op\nĠforget ting\nĠdop amine\nj ual\ne on\nĠReason s\nsort By\n('- ',\n-s ync\nec edor\nK P\n(co ord\n( Chat\n\\ $\nest ring\nce f\n.handle Error\nÛĮ Ø¯\nÑģ Ðº\nĠhand c\nel ijke\nĠSp ir\nĠB ucks\nĠQ Rect\nSet Font\n.exec SQL\n:: ĊĊ\nĠsuic idal\nsee ing\nĠc ider\nProgress Dialog\nĠm olding\nĉ trace\nĠemphas izes\nĠmultip les\n_P T\n_Out put\ncap ital\nNe eds\n_D IRECTION\n.is Visible\nĠrest e\nĠo var\n( shared\n-com pose\n.back ward\nĉ rect\nAm azing\n.did ReceiveMemoryWarning\nSER VICE\nĠIn jury\nBr ain\nĠaus ge\n( pe\n// ************************************************************************\nor ption\n_M AIL\noh a\nĠs no\nĠbo iled\nilden afil\nĠW elfare\nĠQu artz\nĠcapt cha\nĠW EST\nĠM aze\nĠgraph ene\nĠper k\nĠmist ress\n.Form StartPosition\nĠexperiment ation\n*) ((\nĠbroadcast s\nĠremove All\nĉG UI\nåĥ ı\nabcdefghijkl mnop\nĠun ins\nAS P\n+ w\nm ur\nĠd ine\nĠa rou\nĠesc apes\nĠTob acco\n.n amed\nĠPat reon\n_F ACE\n_sp inner\nm oving\n_v otes\nOh io\n. encoding\nDeg rees\n\" To\nĠprest ige\nos phere\nĠLanc aster\nï¼ Ĺ\nĠon Cancel\nĠH IS\nÐŀ ÑĪÐ¸Ð±ÐºÐ°\nĠorch estr\nĠrefresh ed\nD ating\n(m u\nĠJ ed\nĠEditor ial\nSetBranch Address\nCppType Definition\nĠBron x\nĠgather ings\nĠ'' čĊ\npost Data\nĠF ram\nClip board\nĠX Path\nr ays\nĠbak ery\nĠrow Count\nĠlow s\nand Where\n_v ersions\nĠG unn\nĠwe er\nĠcontext ual\nĠKey Code\nĠSask atchewan\nĠPhil ly\nĠM outh\nĠdo Post\nĠpercent ile\nĠbuffer Size\n(f req\n$ smarty\ni erte\niss ant\n_f ps\nĠintim acy\n_ booking\nĠdecom position\nunicip io\nĠNS IndexPath\nĠK R\nĠturb ine\n-p rom\n_C ART\n(co ords\nec om\nĠcow ard\nĠway point\n-Col a\nĠprofound ly\nĠE RP\nbound ary\nĠpoor er\n/ example\nĠren contr\nĠn icer\nç ģ\n- chain\nĠEntity State\nĠgr ading\nAL IGN\nĠP icks\n. ak\n- vector\nĠEn tries\nĠSerg io\nĠ******************************** ************************\nOD B\nĠå ½\nĠcoron ary\nĠsh aved\nĠa que\nemploy er\nĠp arch\nĠmeas urable\nĠbo is\njoin ing\nĠvolcan o\n: M\n.th reshold\nĠDo yle\nverb osity\nĠâĸ º\nĠsp ouses\nĠres umes\nN at\nz M\n_ Enable\nĠUSE D\nĠCare y\nĉf p\nPat rick\nĠO sw\nP ossible\n. leading\nahr ung\nâĻª ĊĊ\nĉĉĉĉĉĉĉĉĉ Ġ\nãĢĤ ãĢĮ\n.add Edge\nĠec x\n' LBL\nĠT CL\nĠbirth s\nĠtheat rical\nĠp ij\ngre ater\nĠF String\nB ED\níĻ ĺ\n.C ast\nC X\n/ Main\npe ater\nĠpersu asive\ncont o\nx lsx\n_A BS\nĠB un\nmanaged Type\nÐ³ Ð¾\nĠSc ala\nr ador\nĠrecogn izable\ntr u\nĠt j\n\\ Mapping\n_BO ARD\nĠto Json\nĠbow el\n) d\n' })\n(h Wnd\nhr s\nc ant\n__ ()ĊĊ\nĠinterrog ation\nlic ative\nĉĉĉ ĊĊ\nĠTw ins\nĠA O\nB ird\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nper haps\nof ile\nĠp enc\nĠtree Node\nĠtop ical\n- private\nçī ¹\nĠDisc uss\nĠdes n\nR ua\n.V ERTICAL\nãĢį ãģ¨\nIF ORM\nĠcour tyard\nĠÑģ ÐµÑĢ\nĠ## #Ċ\nĠempower ing\nĠFac ilities\n\\\", \\\n½ Ķ\n: Object\nĠV otes\nis el\nĠe uch\nor st\n(Cl one\n.c ookies\n$ tmp\n( indices\nerg ency\nĠplag ued\nĠD ia\nyc lic\n} ))\nê² ½\nĠdu el\nĠheter osexual\n.add Component\nSE CRET\nler o\ncon straints\nĠget Connection\nĠLe bens\nĠP on\nĠChron icles\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\nĠMour inho\nĠoccup ancy\n_sl ave\nORIZ ED\nĉ Y\n.high light\n_s ensitive\nĠspect ro\n. encrypt\nĠspo ilers\n.Size Mode\nĠprofessional ism\n> In\nEx pires\nA u\nĠHV AC\nrel ations\nĠAT K\n_GENER AL\nĠS ight\nĠk itchens\n: Register\nĠed m\nĠtoler ated\nĠSE SSION\nier z\nĠIN ST\n.path s\nĠperpetr ators\neb p\npect ing\neduc ated\nĠP ioneer\n_RE V\nĠbust y\nstatus es\nRes pond\nsh uffle\nĠT inder\nEx actly\nill isecond\nĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ðµ\n(A ccount\n. &\niz r\nass uming\nĉ Optional\nSen ha\nĠen rol\nt ur\nĠarrog ant\nĠJ Object\nolith ic\nm apped\nĠt ipped\n. UPDATE\nÃ¨ mes\nGNU C\nW X\nĠmon ks\n.border Width\nĠSh utdown\nĠHarmon y\nclass ification\nĠde queueReusableCell\nĠ] ;čĊ\n.G en\nĠlavor o\nĠLeon ardo\nĠ& )\nĠdep ois\nĠV olt\nE th\nĠLe one\nĠN ederland\nĠEX TRA\nRes olved\nĠpen insula\n_V M\nG er\nØ§ Ø¯\n.p rompt\n. align\ning ga\nfil ms\nH ANDLE\nĠc arts\n(S ome\n< Audio\nĠenlarg ement\nĠgro ceries\n-h older\nĠirrit ation\nComm unication\nĠprim aries\nht ub\n_in icio\nĠcoordin ating\n( qu\nĠfa is\nĠv isto\nguid ed\nĠv lan\nĠes presso\nÃ¨ te\nse hen\n_p eng\nĠroof ing\nĠAl ive\nAxis Size\nĠst un\nĠrest ed\nul lets\nĠMalays ian\n, UnityEngine\nĠenv y\n'] ;čĊčĊ\nĠO st\n_j ump\nĠcontr aseÃ±a\n\" x\nĉ Page\n) [\"\nĠS IP\nĠGe ographic\nĠca ucus\n_T ER\nâĢĿ ;\nPost Execute\nim show\nĠCOMP ANY\nĠNe al\nĠH earing\n( actor\nB id\n.P R\n.Product s\nĠE mm\nĠæ Ľ\nĠpul ses\n_E V\n/ exp\n_m otion\nĠg bc\nĠnavigation Controller\nĠCour ts\nĠIcon Data\nw u\n_r f\nĠR age\n-fl at\nĠHim self\n_ch unks\nĠovers h\nĠc if\n( Is\npe aker\nĠCP Us\nirect or\n, title\n.set Description\nĠearthqu akes\nĠw n\ng lyph\nulum i\nĠspeed y\nĠesp acio\nĠem ulate\nĠ\\\" $\n_IN F\nc alloc\n- query\n(val s\nĠse ab\nĠhav oc\nĠInter state\nĠtri angular\nbind ings\nĉĉĉĉĉ ĠĠĠĠĠ\nĠ ĉĠ\nbc rypt\nĠcredit ors\nĠsem if\nl le\nien za\nĠK eller\nĠmon str\nĠMar cos\n(re interpret\nĠh ive\nSc r\n_h result\nĠì ¡°\nĠSql DataReader\nann ounce\n_pre ferences\nĠtrust s\nE rot\n- worker\nĠt ween\nĠStre ets\nĤŃ ìłľ\nĠFr anz\nĠâĢ¦ .\nUIT extField\n.get Items\nĠto lua\nâĢľ Our\nĠs á»ĳ\nĠvirt ues\nĠp oultry\n= row\nc oded\nNo Such\nĠk od\nls i\nĠk eto\nĠgroup Name\nas n\nĠun comp\nĠtext ile\ntool Strip\n.P open\nĠpro stitute\nĠpromot er\n\"; }Ċ\nĠcoll ider\nBro ker\ndatas ets\nĉ NSString\nang ler\nRI ES\nat oms\nĠrend ez\nap o\nĠë Ħ\n.g c\nĠS OME\nĠf gets\nG LE\nĠz al\nĠOpp osition\nhandle Submit\n_m ath\nĠsp re\nĠshort ened\nĠc aves\nS MS\n-con scious\nĠS aves\n.BackgroundImage Layout\nĠelectrom agnetic\n( iterator\nĠun be\nject ories\nĠmedi ante\nĠÃ® nt\n\", -\nĠAS M\nè®° å½ķ\nĠconf inement\nâĢ¦ ĊĊĊ\nException s\n-m ajor\nĠVan illa\nĠLOC ATION\nĠel usive\nU ARIO\nĠIN LINE\nĠproduct Name\n_qu eries\n... \";Ċ\nĠX iao\nWindow Title\nlet tes\nĠperpet ual\nSe verity\nĠAchie vement\nÃ¢ ncia\nĠremind ers\nsort able\nĠafford ed\nĠinflu encing\nĠTun nel\n. learning\nĠQu Ã©\nphet amine\n.B AD\n.met amodel\n- device\nĠKont akt\nâĶģ âĶģ\n- summary\n(' <?\n) <=\nĠwis ely\n_ ot\n: model\nĠU W\nĠOpen SSL\nĠJ paRepository\nCon exion\nT OT\n.created At\n(tr aining\nĠb ishops\nĠvent ures\n.En queue\nĠTh ermal\nĠBrew ery\not en\nĠF atal\n_sup ply\nĠcondition ed\nĠsuperior ity\nĠI brahim\nĠcor po\nu ously\nĠPract ical\n// [\nĠAfr icans\nĠB ahrain\nĠster il\nĠClass NotFoundException\n.Reg ion\nĠtrans itional\nĠinterpre ting\n.S ound\nĠfront al\nĠharvest ing\n~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~\nata ire\n.Http Status\nK M\nĠErot ische\nĠerot iske\nF ight\nPackage Name\nĠC ACHE\nwing Constants\nĠZimmer man\n/c ar\nĠQ uran\nM etal\nĠuser Manager\nĠmast ery\n(U UID\nĠview WillAppear\nĠsum med\n(- (\nĠĠĠĠĠĠĠ ĊĊ\nT aken\nĠclock wise\nĠCaf Ã©\n( letter\nĠCross Ref\nĠA ston\nĠAssembly Version\néĿ ŀ\nnt s\nĠ$(' [\n_R ATIO\nicient e\nĠr ichtig\nĠped ig\n( ix\nÑģÑĭ Ð»\nAssignable From\nbound ed\nĠal kal\n_pr ices\nĠg ÅĤ\nanch ise\n_re ceiver\nIG ATION\n_p ull\nĠStat istical\n_tool bar\nam ide\nĠAsync Task\nret a\nĠì ¢\nĠRE ALLY\nĠburst s\nĠIn quiry\nĠbig ot\nsan itize\nĠHom er\nQu Ã©\nĠR outing\n.collection View\nĠBill ion\nSTRUCT OR\n.e jb\nĠen ch\n.set Timeout\nR ub\n- road\n.output s\ncont est\nĠsph eres\nĠres urrect\n\" .\"\nĠI ris\nĠì ļ\nĠX K\nĠR arity\nĠI Service\nath a\nĠå ĩ\nĠprev ail\nĉ pp\n.L o\nget Width\nĠw w\nĠw ichtig\n@ Getter\nĠJ ays\nĠspec ulative\n( att\nĠted ious\nĠscr atches\nĠpel ÃŃcul\nĠb orough\nĠm Ã³\nRep resent\nator ium\n(C amera\nĠcolumn Name\nĠre iterated\nĠCast ing\n.get Header\nĠâĢľ [\nĠJu ice\nch u\n. HTML\nĠAnt wort\nGL uint\nĉ Iterator\nĠAN AL\nĠun popular\n(L ocale\nĠmit igation\nĠad res\náº ·\n}, {Ċ\nĠSch war\n_PA IR\n> (),Ċ\nou v\nĠAl f\nxE F\nçľ ģ\nĠes cri\nLO UR\nSE LF\nĠT max\nT re\nl ots\nĠ( ...)\n]+ $\nĠam eric\n/re ference\nĠOd yssey\nĠM ines\nĠag ora\nĠprop hecy\nĠOpport unities\nprof essional\n(pro xy\nphan umeric\nĠEd ited\nolog na\n.is Open\n( vertices\nĠR icky\n_over lap\n> ;\n.D OM\n{} _\nĠCOM PUT\nredirect To\nĠsh aken\nĠr ation\nĠn ell\n_b c\nĠN er\nand Return\nĠer ected\nCh ief\nĠdin ero\nĠj asmine\n------------ -Ċ\nf arm\nĠH ate\nT ASK\nANN ER\n'] ]]Ċ\nĠN igel\nhib it\nĠQ Text\n.L en\nĠte Å¼\nsl ides\nf elt\nĠRE V\n_h old\nĠCou ple\nesc aped\n- export\n> I\new ish\n(A pi\nĠ(! [\nN ous\nOT OR\nĠse aling\nW ie\nĠkann st\n+ xml\nĠmx Array\nĠadm iration\n.n b\nĠjew el\n.T eam\nĠprosec ute\n.xml beans\nch w\n( background\nĠAv iv\nĉf ill\nĠdispar ity\nà º\n_APP END\nĠPv P\nãĥ Ĳ\nĠV ive\nĠgrand son\n.add Element\nAt omic\nĠprimary Key\nĠcontin ents\nĠFuck ing\n% 'Ċ\n@ mail\nĠcult urally\nangan ese\nìł Ħ\nfollow ers\nĠ urn\nĠr acks\nĠS AFE\n// čĊčĊ\n(\"/ {\n_INIT IAL\n_ Response\nEvent Data\n'> $\nstart s\nà ©\nĠth aimassage\nĠspecial ization\nĠìĦ¤ ìłķ\ned o\nĠcompens ated\n_char set\n}. {\n/ entities\n_f k\n------ ĊĊ\nasc ar\nĠcellFor RowAtIndexPath\nĠProp osal\nĠOt to\nĠ__ ___\nĠ\"* \"\nĠtool kit\nĠexpect ancy\nDown List\n-d a\nĠprovoc ative\nĠme io\nĠ================================================================= ================\n(() =>{Ċ\n$ link\ninc are\nĠ icy\nĠH ist\nAccept ed\nĠcl ones\nĠQ A\nĠconf ort\nĠprop rio\nĠV og\n(m ark\n_S earch\nĠend while\nĠ$ #\nãģĹãģ ĭ\n_L T\nInstance Id\nb ard\nr ne\nreg or\nĠnor ge\n\\ :\nÑĢÑĥ Ð·\n.btn Add\nĠpill ows\nĠParameter Direction\nHand les\nĠdeal ings\nĠconv ex\nĠChar ity\n.N umericUpDown\nĠS keleton\nĠZucker berg\nes en\nĠF AA\n_st e\nĠhum id\nj m\nch g\n.get Local\nĠtand em\nist les\n_m t\n.account s\nĠIns pection\nĠFra ud\nĠk Ã¼\nĠsynchron ous\nĠRic ardo\nĠH ue\nĠConnection s\nIM ENT\noch astic\n\\ data\nĠEnter prises\n-s imple\nĠimage Data\nĠU mb\n-s cript\n/g eneral\nAP T\nĠT ut\nim ization\nĠid ade\nĠK em\nels if\n.AL IGN\nĠT ories\nĠBas il\nog onal\nh ack\nNullOr Empty\n\"), ĊĊ\nãĥĥ ãĥĪ\nĠ'% '\n_R F\neg ot\n.as pect\n( Project\nLE NGTH\nplement ary\n_pred s\nĠH olds\ncar rier\nĉl ayer\nAtt ached\n-p resident\nind h\n'].' \"\n.AC CESS\nĠC ENTER\nQual ified\nĠo str\n.S ymbol\nt ahun\nĠL ANG\n_b usiness\nĉ Start\ner re\nĠas hes\nĠAd vertisement\n.H ow\nĠ// ------------------------------------------------\nĠob liv\nĠble ed\nĠs vo\n.node Name\nĠitem Name\nĠB ANK\nÃŃcul os\nĠEm my\nĠDomin ican\n') ['\nĠreal loc\nul ses\nè¾ĵ åĩº\nĠOffer ing\nëĬ ¥\n-pro gram\nĠÑģÐ¾ Ð¾Ð±Ñī\nMO V\nĠnode Id\nÐµÐ ¿\nfl uid\nĠte ase\nÃ¸ re\nĠcom rades\nĠunre liable\nĠpost Id\nget ID\nograph s\nT ank\nĠQ VERIFY\nĠflo ated\n_TH IS\nc imiento\nĠNic ar\nsh r\nBounding Box\nĠin order\nĠG loss\nWith Title\nunc io\nĠpers ists\nĠdirect s\nacc iÃ³n\nSam pler\nĠblack list\nĠa Decoder\nĠinv okes\n_s kin\n> If\ntr uncate\n.S in\nso on\nĠdis fr\nĉ Vec\n## _\n.s chool\nĠbl inds\nĠac ab\nĠpath etic\nĠvolcan ic\nĠr df\nĠcultiv ated\nĠU INavigationController\nĠi pt\nĠg land\nĠevid ently\nPh ys\nĠsw amp\nĠimage Name\n.L ayer\nuf e\n, ['\nĠCr imson\néĢ ł\n< footer\nĠb iking\nĠÐ´Ð°Ð½Ð½Ñĭ Ðµ\nm oves\nc rc\nill ation\nĠla ure\nÑĢÐ°Ð ±Ð¾ÑĤ\nÑĥ Ðº\nĠC ain\nĠp ys\nĠcoll ide\nĠ| _|\n(s pan\nĠg ing\nĠobed ience\nout ers\nSo on\nĠWhit ney\nĠIm ports\n: UITableView\n* &\nĠb k\nWith Error\n- ext\n_RD ONLY\n_tr acking\nnoop ener\nÃ¼ ns\nĠGtk Widget\nsk b\nSA VE\nO bs\n('. ')[\nĠauth ored\n- /\nL ouis\n.get OutputStream\nĠgeneral ized\ní Į\nĠart isan\n(c ps\nĠD mit\nÐ»Ð¸ ÑĨ\n.Image Layout\nĠsuch en\n] },\n.c ollider\nTab Page\n]= [\nhy dro\n_st rip\nĠl icking\nĠboost s\nĠskeptic ism\nĠj ogo\nĠcompet ed\nĠëĤ ´\nNode Type\nX F\nĠposs ibilit\n-c opy\nĠtr itur\nĠAtt acks\nĠn Ã«\nID AD\nograph ies\nTime Stamp\notyp ing\n-A pr\nĠÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ ÐµÐ»Ñı\nĠ\" ;\"\nĠH ale\n/ apis\nĠ: ]Ċ\n_h dl\nĠD ial\nĉ Config\n_FR AGMENT\n_E dit\n/******************************** ************************\nĠcandid acy\nĠCom pression\n_loss es\n*> (&\nInt egral\nĠpar ody\nĠinitial ise\nf ills\nĠal tri\n_ELEMENT S\nada strar\ncor reo\nĠw att\n_DR V\nĠFor got\nĠget Context\nĠshort ages\nĠO CT\nweet alert\nĠOp ens\n* l\nĠK itty\nâĢĻ Ã©t\nĠPic asso\n.to ByteArray\nÐ¾Ð» ÑĥÑĩ\nĠD EN\nå§ ĵåĲį\nW inter\nant an\n__ [\nPr im\nĠrooft op\nĠBill board\ntest Case\nprod uto\n-th umb\nĠres ets\nge bn\n> Error\n.de partment\nĠe arrings\nĠCar ousel\n(ex ample\nĉ em\n\\ Container\nĠEl vis\nĠ---------------------------------------------------------------- ------------------------------------------------\nEng land\ncred ited\n_con structor\nĠl or\nĠDaw son\nB urn\nĠBrig ade\nĠM utex\nĠTrans itional\nĠMouse Event\ng row\n.min ute\nĠG MO\n=[ ],\nĠs ushi\nĠaest hetics\nOC US\nĠSEL F\nĠAssertion Error\nĠM CU\nĠhint Text\nĠse aw\nng le\nĠexp elled\nPRO PERTY\n). </\n- operation\nĠImm un\nĠl icens\nib ia\nĠb ieten\nĠgri ps\nCH ANNEL\n_ERROR S\n_rec ursive\nUlt imately\nĠMaj esty\nĠde activate\nĠEX AMPLE\nuc iones\nĠcurrent Value\nĠevalu ates\n/G raphics\n\" text\n_p alette\nĠT MP\nĠB eds\n.C os\nà¸± à¸Ļ\n= torch\nĠPACK AGE\nill ard\n.c p\nķ ìĿ¸\n- approved\nĠNorth western\n< textarea\nĠCom patible\n_RD WR\n. Quantity\n@ Id\n_orient ation\nget Url\nĠtransl ating\nĠWe aver\nĠjson Array\nĠem blem\n.Is Null\nĠCh arts\n[] }\ng ae\n_n ested\ntem ps\npath name\nC W\n-w ritten\nĠP ARK\n( cond\n_al arm\nĠg ere\nĠG iz\nĠN gb\nĠ. _\napp iness\nĠDep loyment\ni Pad\n\"] ]\nĠstr str\nĠton umber\n(d l\nĉ word\n[ to\n_FIX ED\nEx piration\n: return\nO nt\n> Please\nget Title\n.split ext\ncomb ined\nO d\nĠnovel ty\n\" S\nĠs vm\nCover age\nĠH ut\nĠres isted\nĠel lo\nĠmÃ¶ chte\nK ay\n. like\ncc ione\nĠre sembl\nDe aths\nĠep it\n( rgb\n.Class es\nĠÐ´ Ð¾ÑģÑĤ\ncapt ures\n]+ \\\nam ient\nĠPas o\n.Send Message\nĠRen ault\nĠN arendra\nt out\nĠhad de\nĠT ween\nÃ¥ de\nĠout field\n/ ></\n@ \\\nĠDur ant\nĠab re\n_st ory\nĠperf ume\nCppTypeDefinition Sizes\nĠÐ¿ Ð°ÑĢÐ°Ð¼ÐµÑĤ\nchem es\nĠSadd am\np renom\nusp ended\nĠBenef it\nĠs cept\n_M ove\nĠN aj\n- On\nr ud\nImage Path\nÂ® ,\nĠanalys ed\nĠO G\nelle icht\nbird s\nek te\nĠAl ison\nĠathe ist\n{ %\nab h\n- photo\nin strument\nĠhint ed\nĠOff line\n) \");ĊĊ\n_P REF\nĠsty list\nĠK ubernetes\nĠf erv\nĊĊĊĊĊĊĊĊ ĊĊĊĊĊĊ\n(\" =\"\n.get M\nĠnot eworthy\nĠsc outing\n_trans late\nĠbegin nings\nĠLu o\nĠ ql\n_al igned\nĠer w\nu ars\n_P ath\n.' .$\nĠh oc\nĠder p\nlo i\nĠMcK in\nè¯´ æĺİ\n/ =\nLink Id\nstd def\nre ducers\nis ans\n.h ist\n' />Ċ\nĠTo xic\nĠdisappe aring\nĠc is\n(d o\nĠmain Screen\n_B ANK\nĠdemonstr ators\nĠPa lette\nu ely\nR are\nĠres iding\nĠamb iente\nĠm ism\n- question\nĠopp ressed\nĠle tra\n< dynamic\nĠF otos\n-p olicy\nist em\n.ex change\nst re\n$/ ,\níķĺ ê¸°\n$ ĊĊ\nĠR ene\nĠtout ed\n- Core\nĠCr an\nĠTr ader\nĠd ew\nĠfl ap\nĉf ilename\nĠin mate\n(M ock\nĠS ob\nis bn\nĠno e\nĠFor bidden\nĠe les\nĠd ing\n_s a\n) */Ċ\nar ie\nĠSupport s\nĠmod ulation\nĠen sl\nĠSh adows\npr incipal\nang ent\n-J an\nĠP ants\n, tr\nĠfit te\nĠgar ments\nMarg ins\nL TR\nĠM iy\nvent us\nĠMÃ¶ glich\n[ attr\n/ respond\nĠt tk\nĠoldu ÄŁ\nĠCon se\nPrem ium\nĠfranca ise\n_h orizontal\n_ ib\nĠF are\nĠharvest ed\nend ir\n(h it\n> */Ċ\nĠI Repository\nyl ie\nĠdetect s\n: no\nâĺ ´\nĠdise Ã±\nĠunser en\nĠmock ing\ns outh\nr ates\nĠhyp oc\nĠShort ly\nĠBlack s\nÑĤÐ¸ ÑĢÐ¾Ð²\nĠAS AP\nreb be\nie c\n.Add Days\nĠep is\n-in flammatory\n- net\nĠp all\në Ķ\nĠissu ance\nĠcontent ious\n.Are as\nÐ¸ Ð»ÑĮ\nĠcont iguous\n[ action\nĠexp res\n! \")ĊĊ\nUL O\nĠw re\nĠsub div\nĠturn around\nĠacc el\nĠUn iv\nĠUnivers idad\nset t\ndesc r\n.G eneration\nĠpatri ot\nĠf as\n**** Ċ\nQ P\nĠå į\nopp el\nĠjue gos\n.draw String\n- confirm\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠ\n< Props\nĠfam ille\nĠHel met\nerti ary\nath i\nĠcult ivate\nĠdup lication\nĠspy On\n*/ )Ċ\nĠHun ger\nOr th\nĠpin point\nĠH ag\nĠtim etable\nmargin Top\nĠrecip ro\nf ell\nĠP ersistent\nãģ ©\npl ural\nque ued\nĠgr acias\nÃ¡t ico\nĠhard ship\nĠApart ments\nĠJ unk\nĠRe ve\n_M sk\nĠsup ra\nĠA TP\nĠset Show\nåŃĹç¬¦ ä¸²\nĠNot tingham\nSt even\nĠM und\nr anges\nĠupload s\nĠb fs\np z\nult imate\nĠEff iciency\nAM I\nå¾ Ħ\n_RE PEAT\nĠacad emia\n.toolStrip Button\nTo End\nrv ine\nĠTh y\nĠElect oral\nĠRE QUIRED\nĠpl unge\nĠRevolution ary\nĠT ent\nĠgren ade\n\":[ {\"\nĠm our\nP ow\nĠevangel ical\nTECT ED\nĠover turn\nĉ Input\nre commend\n% C\nĠsl ag\nĠB har\n_enc rypt\nĠWar fare\n( age\nATEG ORIES\nm ile\nĠheaven ly\nam mer\n()) [\nader a\nh g\nĠLA W\nĠpackage Name\n_type Definition\n( be\nDB Null\n_t ar\nĠhe uristic\nĠW anted\nĠSt ub\nĠk itt\nRE C\nĠpas ar\n.new Builder\nĉ graph\nios a\n.column Header\nĠset Open\nĠTh irty\nĠ\"% .\nAl bert\nĠs ama\nĠrock ing\nCom ple\nM V\n| ()Ċ\n_read s\n(var argin\noul ouse\nĠSIM D\nĠcarbohydr ate\nwh ole\n, None\nĭ è¯ķ\nĠCh and\ncz as\n_query set\nĠexist ential\nĠed ible\nĠag ility\nĠWill is\nĠh ym\nĠBr ill\nÐ¸ Ñħ\nĠNotFound Exception\nĠ( ()\nAP SHOT\nĠsubstant ive\n_typeDefinition Size\nĠvac ancies\nEN GINE\nĠand ers\nĠs ymb\nĠet ree\n). _\nĠtransport ing\nim ps\n/c op\nact able\n_fl ux\nĠnew Instance\nato ire\nĠcolumn Index\nĠG io\nĠsub titles\n.Win Forms\nÐ»Ñı ÐµÐ¼\nĠalert ed\nĠstri pping\nwend ung\nĠMethod Invocation\nError Handler\nScroll bar\nPort folio\ncon sum\nĠCOM MON\nL f\n_b ased\nocal y\nĠeff et\nv vm\nri psi\nĠflour ish\nch ter\n======== =Ċ\nĠrequ er\n. questions\n(\" ?\nĠpos X\nĠPC R\nĠOrgan izations\npr Ã¼\nEx am\nĠIncorpor ated\n_phr ase\nĠpray ed\nĠhome owner\nĠT aj\nz x\nĠIde ally\n_M ACHINE\nĠRem oving\nCoeff icient\nĠeduc ating\nĠ?> &\nĠp ours\nir am\n_ peak\nĠnest ing\naby te\nn ature\nĠa fs\nĠR oo\nc argo\nobj et\nĠfree ing\nqu ake\nD ensity\nĠdesc ricao\n/ ********\nĠd ashed\nĠgro ÃŁ\nook y\nĠPE OPLE\n_P ost\nĠcerv ical\nĠAdjust able\nens ual\nĠRe vised\n(re ference\nĉ Base\ness im\nM aint\nĠget Size\nĠSand wich\nrad ient\ns ink\n:// '\n_t t\nF PS\nĠArmen ian\nprev State\n_L INES\nĠtight en\n< [\n] <<\"\nĠTra ff\nĠliqu ids\nĠar cs\n_Com mand\n@ protocol\n- ish\nĠrub bed\nB BC\n/f irebase\nApp Bar\n< X\nĠS INGLE\n.Status InternalServerError\nĠvert e\n/ query\nĠget Config\nĠDirect X\nph ysics\nyc op\nĠbreak er\n-v olume\ndata Table\nâĢĻ e\nri ott\nĠE ternal\nget Height\nĠon ItemClick\nĠqu aternion\nĠk inky\ndes erialize\n(S pring\nĠpeace fully\n_De vice\n(M atrix\niÃ¨re ment\n(t yp\n.va adin\n.get Method\nĠâĢĿ ĊĊ\nĠthread ed\nĠF amous\nĠG amb\nĠì§ Ģ\nĠÐ ¤\nĠf akt\nĠe cht\n_ ub\n.J paRepository\nĠun ge\n- ending\nĠCAM ERA\ncred ential\nĠPass port\nĉRT DBG\nĠextr ad\n- origin\nĠsacrific ed\nĠSch ultz\nĠT urtle\n.center X\nĠshowc asing\nĠb zw\ny ro\nis Null\n.is Directory\nm aint\n_b i\nĠSpring er\n} ()ĊĊ\niss uer\n- arm\nes k\nlin ha\nĠk ort\naj as\nal ink\n( Button\nĠRest oration\nĠinc r\nĠZ hou\nĉ ĠĠĠĠĠĠĠĠĉ\nĠDis claimer\nĠkvinn or\nĠD are\nĠ< ->\nè¯ ¦\nĉĉĉĉĉĉĉĉĉĉ Ċ\n.Cl amp\nĉs cope\nĠM um\n<<<< <<<\n/ {{\n_ artist\nĠRe action\nĠNick el\n_Rem ove\n(( ((\në ĮĢ\nĠdyn asty\nĠTh rows\nĠC oul\n_r ng\nĠD ok\n.list View\nĠT ucson\n(t ok\nĠPhilip pe\nTo Show\nĠdi eta\nĠUl tr\n.T ick\nĠGet Type\niet e\nĠLe ah\nHard ware\nĠCom prehensive\nCOM MON\nĠindust ri\nir ical\n-bed room\nĠgy ro\nĠÐº Ð¾ÑĢ\nĠ- /Ċ\nc our\nĠBrush es\nMulti plier\nĠuser data\nĠRec ogn\nĠoblig ated\nĠLe vin\nance stor\nĠmen ing\nĠU d\n, json\n( assign\nĠnd array\n_cor ner\n@ AllArgsConstructor\néªĮè¯ģ çłģ\nad ors\nĠrespond ent\nGOR ITH\nĠteng o\nĠset Message\nĠI PO\narr ays\nĠAG AIN\n' [\nĠ\"- //\nÃ¤ m\nãĢĤ \\\n.on ce\ncurrent Time\nG ov\nĠget opt\nml x\nĠT one\n'] ];Ċ\nĠpred ator\nW y\n/ entity\nĠman tra\n) >=\nog rad\nĠmel an\nĠsort By\nĠDEF INE\nProt ected\nc decl\n'> \".$\n< cv\ncri re\n- Trump\nĠuc first\nc assert\nĠacknowled gement\nĠIN V\nĠU NU\n.square up\nĠS ax\nret te\n() ĊĊĊĊ\nĠData Base\nĠPatri ot\n_R ow\nĠExhib ition\nĠdetain ees\nĠString IO\n_D EN\nMod ifiers\nas ar\nir ting\nĠtranqu il\n( enc\nĠãĤ ³\nnc oder\n_un used\nĠB ian\nVer b\n_ex cerpt\n/ export\nĠS ext\nD s\nAM PL\nOf String\n_tr acks\nw j\noton in\nĠI TE\nIV EN\n- original\nĠFIN AL\n__ )ĊĊĊ\nĠen se\nĠU tt\n: **\nĠSurre y\nĠK aiser\nadmin istrator\n-l argest\nĠletz ten\nĠch ained\n' H\nĠdocument ing\nĠLect ure\nR H\noll apsed\nsk irts\neld er\nĠSix th\nĠalleg iance\nISO String\nUsage Id\n.h ardware\nĠpar i\nĠwÃ¤h rend\nĠr dr\nĠhj em\nLO OR\nĠLP ARAM\nĠÐ¼Ð¾Ð¶ ÐµÑĤ\nĠhom age\nout side\nĠChar Set\n< Game\nï¼ Ļ\n_MUT EX\n)) /(\n_re ordered\ntext Input\nANC ED\nĠT ee\nĠcorner back\nQuery String\nĠlongitud inal\nĠH olidays\nABCDE FG\n.Key Press\n. ul\ny dro\nĠT ate\nĉr outer\nsp ots\nĠp aul\n- prev\nĠknow ingly\nĠKur ds\nĠEu rop\n.c ert\nB IG\n(co eff\nĠCl aus\n/ex amples\nĠFar ms\nĠ// (\nSP AN\nĠcirc us\nĠM IS\nĠTra its\n-c lear\nĠreg imen\nĠbackground Image\nus aha\n_Metadata UsageId\nĠr he\nC lin\nĠDomin ic\n.next Double\n(d etail\nThread Pool\nĠCarp enter\nsort ing\nĠgovern ors\nĠsing ers\nun link\nĠring ing\nĠschem atic\nĠerr msg\nĠbe b\n.\" +\nĠIncre ases\n\" All\nĠa conte\nz ia\n.Text Changed\nĠTo Do\n,: );Ċ\nn age\nch l\now el\nĠger ade\n_ fft\nĠest amos\nST AR\nĠdisg ust\ngr an\nport unity\nĠaut obi\n{} {Ċ\nĠCou pons\n_G AIN\nĠT CHAR\n/p ass\nçĶ ±\nĠfoot wear\n(b ounds\nap us\nc ite\nBO OT\nĠCode c\nlog ue\n- properties\nautom ation\nĠSh oe\ns pect\n(m m\nĠK et\n[ param\nĠbas il\nĠAngular Fire\nĠadvent urous\n_U Class\nĠindul ge\nĉc uda\nĠinsult ing\n.Ex pressions\nĠonCreate OptionsMenu\nUE L\nĠbit ing\n(! _\nĠEnc yclopedia\nĠb ert\nĠV era\nĠBib lical\nins ics\n_SIM PLE\nĠsal ida\nrequest ed\nĠCom position\n.A toi\n(Key Event\nere a\nĠdeport ed\nĠQ ur\nĠn ipples\nis Array\nĠÑĥ ÐºÐ°Ð·\nĠbr ink\nmet ros\nEnumer ation\nĠBuild s\nert os\nĠsa ints\n.de ploy\neth ereum\nĠkind ergarten\nvan ized\nĠcomb in\nĠpou voir\nK in\nar Ä±\nĠ.. ...\nï¼ ¾\n.G o\nĠquir ky\nÄ±nd an\nĠaction Types\nĠQU ERY\nT aylor\nĠR K\nt at\n.p acket\nĠIMPORT ANT\nĠcush ions\nbul k\nduct ive\nben ef\nocr isy\nĠfuer on\nĠcurs es\nĠfil ings\nel ier\n( ?:\n_dr ive\nĠcontact o\nĠPark way\nvid es\ng ne\nav age\n\\\\ .\nfull Name\nd ll\nĠshock s\nĠ ################################################\n_p x\n@ Web\n.P ersistence\nĠs unk\n.tool tip\naut ical\nNews letter\nĠwait er\nĠin quire\nÐ°ÐµÑĤ ÑģÑı\n(' __\nt og\nIENT ATION\nĠcompany Id\nĠBas ics\nĉJ Label\nĠmac OS\nĠM ats\n_t el\n-p refix\nĠmut ate\n} ')\nch eng\nĠM ilit\n\" &\nfind ing\nĠData Loader\n.G PIO\nĠLe vy\nĠsne akers\nĠcr Ã©d\naw ner\nx ia\n/s imple\nCH R\nĠfl otation\n.s ensor\nB razil\nĠSeason s\nĠSpe ak\n-b all\nĠM utation\nuk kan\nĠOm aha\nâĢĻ on\nĠCu omo\nĠJud icial\nĠcheck points\nĠF rem\nĉ Id\negr ity\n_ af\n@ NoArgsConstructor\nĠt abela\n[ #\nnot a\nĠF actors\n(group s\nis wa\nIV O\nĠs cri\nac et\nĠMe h\n(cl azz\nĠ[ <\nper ial\nĠsur passed\nĠj oked\nĠr ud\nĠim balance\nĠFr age\nss p\nĠind icted\n.mark et\n; m\nĠrepair ing\n-n ote\nDebug ger\n( Web\nĠs ings\nĠL oy\nĠDES IGN\n.Com p\n- controller\nĠav ocado\nĠBow ie\ncont ador\nul ings\nuch os\nspec ifier\nĠVol vo\nĠdem os\nĠPro duto\n.Not Found\nĠni Ã±os\nĠB ols\n_ outer\nS her\nA UTO\nĠj ov\nĠFre ddie\nor ias\nĠa fect\nĠfacilit ating\nĠdomin ating\nParcel able\n',' -\nmo on\nĠmet ast\nĠscar f\nĠTh erm\nCall Back\nÑģÑĤ Ð°Ð²\n. Import\nĠbetray al\nic ulos\nĠwe iÃŁ\nåĮ ħ\n_ ^\nw ifi\nĠS ENSOR\n_BUS Y\n$ b\n_F IND\nĠpl astics\nĠCON VERT\nĉc all\nĠPr ague\nĠgarner ed\n_ learning\nsh oot\n'] ))čĊ\nĠG inger\n= pd\n, test\nPro fit\nĠest imator\nĠb ree\nĠ// </\n_h ave\nĠK od\n_IM M\nizz as\nmight y\n× ŀ\nĠOn ClickListener\nãĥ ĩ\nĠScient ist\nFilter ed\nav l\nh ay\n_g enerated\n] 'Ċ\nĠAuthor ities\n: param\nĠst att\n-m aterial\nĠl ider\nĠC rop\nĠB unifu\nĠnext Props\nor z\n_ ord\n< x\n_IO CTL\nĠMus cle\nĉex ec\nEN AME\n_ letters\n#### #\nĠC s\n'] ==\"\nĠ\" ')\nClean up\n. structure\nÎ º\néĢļ è¿ĩ\n']; ?>\"\nĠLat itude\nbb ing\nĠban anas\nre ctions\nĠRand all\nNY SE\nĠap rend\n.Response Entity\nĠtest Data\n\\ e\nĠW K\n.Add Component\n_r uns\nÃ§o is\n-min i\nfold ers\nĠlos ers\nĠT owers\n- Encoding\n: r\ncho oser\nĠflatt ened\nÑģÑĤÐ°Ð½ Ð¾Ð²\nĉP y\nä¸ ľ\nĠdam ned\nDe pt\nw ed\nĠp isc\ng ies\n_g ames\n.m ass\n( Equal\nĠn atives\n.th umbnail\nl tr\nĠe ql\n_in come\nĉ headers\n-h aired\nĠmedi ocre\nĠWith draw\nĠbit te\nÙ ¾\n= in\nock ed\nF ully\nĠT EMPLATE\nÃº de\nO dd\nille z\nTele phone\nĠĊ ĉĉĊ\n(\" '\"\n_s ched\ner ne\nÂ ¾\n.p ick\nĠMS I\nĉ ff\nDis covery\nĠC OD\nĠL ack\nĠsens ational\nmo th\nĠLegisl ative\nÑ į\nĠvi ability\nĠget Email\nĠunanim ous\nĠpel let\nĠ\" ()\nco at\nago on\nĠAL WAYS\n\\u C\n_std out\nAnd y\nĠnew List\nĠMahar ashtra\n, __\n= username\nĠscript ing\nĠT min\n< Action\n={ },\ns ymbols\nĠf encing\nĠvÃŃde os\nĠMaur ice\ncor lib\nĠk em\n\"} ),Ċ\nĠClass ical\ncol lege\nĠHome page\nĠ} }ĊĊ\n_M sp\nĠCom plaint\nĠsand y\nAs ian\n_serial izer\nĠL ah\nĠb uds\nolog ne\nĠresponse Data\noph ile\nk ategori\nEnd ed\nlect ic\nĠcl aws\n... ');Ċ\nĠpl anners\nĠZ ak\nĠGlo ves\n\") }\nĠfashion ed\nbr on\nĠnewcom ers\nv ana\nĠpier ws\nRe ceipt\n- env\nĠr uta\nĠFar mer\nod ore\nm ui\nĠrom ant\nĠinf lict\nĠsem inars\n= cv\n(st ock\nĠextract or\nĠT iffany\n_u v\n.cont acts\n'), ('\nĠsol ves\n.Connection String\n/ debug\nĠA very\nãĥ £\nĠmax X\nSp ark\n< this\nĠh ikes\nKey ValuePair\nĠQui et\nst ab\nĠKom ment\nly cer\nĠM SM\nĠLan tern\nĠconj unto\nhs i\nM ULT\nWith Duration\natt ached\nĠA ster\nĉ points\nĠS iber\nĠMethod ist\n/s ites\nĠfort unes\nPart icipant\nĠcustomer Id\n) init\n_s ervers\nĠwe ave\nĠTR AIN\nĠharass ed\nìŀ ĳ\nabcdefghijklmnop qrstuvwxyz\n_f ar\nAl chemy\n.line Width\nĠtherap ists\nĠL ob\nequ ipment\nĠre cht\n.m ipmap\n.n ickname\nĠunt ouched\nAG ON\nĠS aul\nĠworks heets\nĠVeter an\noud en\nac lass\n_ asm\nĠtem pl\nĠExp ense\ne ight\n# SBATCH\nz ones\n.p arts\nat rice\nl aws\ntoBe Defined\nEffect ive\nĠP ieces\nart i\nĠinhib itors\nĉ parameters\nĠtele gram\nbour g\n_not ifications\nĠposition al\n-de als\nĠ/* ----------------------------------------------------------------\nĠsh aders\n] =$\nĠde co\net ypes\ncl are\nĠG SM\n.util ity\nTo Str\naf en\nĠX m\n_part icles\nĠfl uffy\nMark eting\nĠstand ings\n? ĊĊĊĊĊĊ\nUM AN\n_PAY MENT\nĉ Time\nraw n\nor ro\nĠeer ste\nĠpage Num\nĠC OP\nĠplag iar\nUp loader\n$ self\nl ater\nerial ized\nĠalign Self\nĠâĻ ¥\n.array copy\nĠnos otros\nĉg pio\nĠpl otted\niter ations\nĠRel ax\nc ipher\nG ift\nĠB ett\nĠX R\nĠstrip ed\n( environment\neg ers\n_RES ERVED\nĠkÃ¶n nte\nĠin ferred\nP df\ns orry\npar ate\n.Con cat\nĠlip id\n.B O\nĠor m\nĠCon sort\nĠoversee ing\nĠam ber\nĠple thora\nĉ Action\nquer que\nĠh uis\nĠ= [\nĠprogress es\njud ul\nĠconvert ible\n.embed ding\nĠ{ ?>Ċ\nĠredu x\n[ label\n: \");čĊ\n.on line\nquarter ed\nĠschool ing\nĠ\"\\\" \"\n[ list\nAl an\n' }ĊĊ\nyp sum\nĠstr iving\nĠRespons ible\nĠíĮĮ ìĿ¼\n.Int Ptr\nri kes\nenv ille\n.setLayout Manager\nĠPass enger\nĠdis ob\nĠfer ment\n.P ixel\n> ('\nĠcont enders\n-b eta\nĠaffirm ative\nÐ½Ð¾ ÑģÑĤÐ¸\nia Ã§Ã£o\nRe commend\nimit ers\n_ ylim\nĠsubsid y\nĠer b\nFile Size\n(s r\nĠpo orest\nĠvo i\nS id\nĠsl ips\n_min utes\nĠu g\nÆ¡ n\nĠnat Ã¼rlich\nãĥ ŀ\nb ear\n}_ ${\nĠf isse\nĠdiscrimin atory\nĉĉ ĠĠĊ\nĠCo il\n_if ace\n. ver\nĠmin ed\nĠassass in\nĠunset t\n.request s\n. US\nimage Url\nĠstrateg ically\n-b and\nĠtrous ers\nX D\n{ /\nlection s\n` ()\n\" P\nĠsketch es\nclient Id\nĠS rc\nopen ing\nPut in\nĠPo etry\nĠP ROM\nILLISE CONDS\nĠbo oming\nSimilar ly\n: last\n.work er\n.get ID\n.S P\ns ervers\noc ular\nĠspin ach\nIS K\nÃ °\n']) [\nĠch iefs\nĠgro ÃŁen\nrie ving\n. ask\n-s ur\nV V\n/ >\";Ċ\n( remove\nĠK L\nĠH aley\n@ ResponseBody\n- &\nSw agger\nĠzn aj\n.on Error\nreg o\nel ix\nĠAV AILABLE\nĠsep erti\ni ap\n_m iss\nĠsur geries\nĠimp artial\nĠC ot\nakt ion\nĠwhit elist\nĠÐ° Ð²\n_m ix\nĠBed rooms\nĠprime ira\nĠsignific a\n/ by\nĠstart ling\nĠS PE\nucc iÃ³n\nN umer\nIB M\n.f ragments\nR ent\nĠrÃ³wn ieÅ¼\n.A UTO\n.For Each\nĠZ hu\nĠC unning\nĠW arn\nĠB H\n_DOWN LOAD\nBy Key\n) âĢĶ\nĠcommand e\n_ ANS\nCh ron\nF IT\n_at oms\n_SK IP\nĠv ap\n( Box\nĠld ap\nun processable\nITION S\nÃ©r Ã©\n, msg\nĠout set\nĠdr illed\nĠdÃ©velop p\nĠCo at\nĠBeng hazi\nH ooks\nĠMiss ile\n_ Reset\n>/ <\nĠ\"- \"Ċ\n() =>{Ċ\nĠH och\n.aw ait\nAd resse\nĠdigit ally\n\" These\nople vel\nĠas ynchronously\nĠD ucks\nRE SP\nI RO\n.f ix\nĠRad ar\nvert ise\nÃŃ ses\nIter ations\nmouse up\nm int\nF IRST\nĠpay pal\n_up grade\nWr apped\n; čččĊ\n+ s\nĠcatch er\n. Op\n_NOT ICE\nparalle led\nC VE\nf orgot\nĠpan or\nĠoff re\nĠenorm e\n() čĊčĊčĊ\nadi ator\nadd All\n[ text\n( util\n.P romise\nan ism\n_off er\nEND IF\nd ots\nĠK ro\nĠsp elled\nĠapp Name\nActiv ities\nĠSp ice\ne ated\nĠsk b\nĠkÃ¶ z\nĠtorch vision\nC ivil\nĠh os\n_H elper\ni Äĩ\n_ unsigned\nè® º\nâĢľ And\nĉk free\n. raise\nĠcal le\nĠL ans\nĠant ig\n\\\"> \";Ċ\nbranch es\nlog radouro\nĠst alled\naly zed\nDer ived\n: not\nĠg ibi\nĠTurn bull\n.user Data\n( Table\nĠDer ived\nĉ conf\nĠalg ae\nĠk afka\nĠnak ne\nĠHe ating\nĠT ire\nad ult\nĠDate Format\nop c\nens agem\n.T ools\n.M ixedReality\nra i\nĠWonder ful\n)] )ĊĊ\ni ard\nTheme Provider\nĠevent Data\n# ad\n.get Url\nĠtool box\nĠover riding\nCONT ENT\n- products\nw ild\n_exp and\nina ire\nB ru\noll s\nĠÑį ÑĤÐ¾\nct est\nĠpunch ing\nDR V\n_sp aces\nĠSuper intendent\nĠlay ui\n(f eed\nt od\nĠv h\nĠinsult s\nĠS uc\nik s\nTor rent\n.k r\n_ activate\nĵ ĺ\nj ee\nim ers\nru its\nĠprec inct\n.Re quired\nĠsatisf ies\nĠche ering\nĠarr iv\nĉ rec\nĠC obb\nĠconc ussion\nuj et\nNotFound Error\nJ ean\nĠphot on\n> _\nĠBar cl\nam d\nĠ% }Ċ\n=\\\" #\nInt ern\nĠCommit tees\n.b el\nnum mer\nĠlev itra\n_ verbose\n(code c\nĠSt itch\n=\" \";čĊ\nĠregret s\nĠmultin ational\nĠre structuring\nĠM EN\nynchron ization\nĠmedi ator\nk ir\nPr ince\nĠinhib it\nĠg ost\nĠM MC\nĠs ided\n_d ark\n(b lob\n> Lorem\n> \");ĊĊ\nsc anner\n: inline\n.car ousel\not ide\nĠW WW\nĠdrum mer\n.f amily\nĠord inal\nå½ĵ åīį\nĠdiplom at\nĠsupplement al\nĠd afÃ¼r\nĠF AT\nĠY ong\nhap us\nĠJ unction\nz l\n.Use Font\nĠhash Map\n- Re\nĠ\" **\n.setBackground Resource\nĠimper fect\n.Find Element\nĠL LP\nĠmurder er\nĠtext e\nis Ã©\nact ics\nTo y\nGr ant\n_dis connect\nĠbras ile\nĠemerg encies\n_l vl\nĠ@\" \\\n} */ĊĊ\n_S OC\nN ORMAL\n/g allery\nas ics\nEvent ually\nĠgr ap\nĠcr ist\nĠproject or\nĠge omet\nĠdet ectors\nĠcritic izing\nĠch icks\nĠH ij\n/ frame\n-m oney\n\" description\nĠtext ing\nĠsex ism\nĠM VC\n-g eneral\nĠover turned\nĠm over\nĠPh rase\nĠUNU SED\nĠEntre preneur\nTE GR\nell ipse\nMark down\n__( *\nĠKardash ian\npp elin\nĠG ott\nĠd yst\nĠRed ux\nH ola\n? !ĊĊ\nĠReal ty\nSur vey\nĠMcG regor\n_h andles\nĠintrig ued\nĠget Url\nĠde vised\nĠPay pal\nĠthink ers\nĠStatus Bar\nĠEl ig\nĠcomplex es\nĠÐº Ð¾Ð´\nstock s\n-initial ized\nĠscand als\nĠcomfort ing\nĠRock s\nĠl ions\nloc ator\n! ]\nĠP ony\nD atum\nĠF et\nĠoffset Y\nĠRET URNS\nĠbre aches\nTime Interval\nĠvi elen\nVer se\nĠk ad\nĠga at\n(\"- \",\nĠmouse Y\n( Post\nĠU h\nelig ible\nal ta\nĠutil ise\nf acts\nH IP\nĠor chestra\nĠSp aces\nis piel\nĠmultip art\n- opacity\nSearch ing\nĠPl ato\nV ision\nĠl ul\nĠApp rent\nç» ľ\n[ rand\n-dis abled\nĠF letcher\nĠtrans ports\n& e\ntp aram\np ole\nĠBuen os\nÃºb lica\ninter action\nĠh ob\nĠinf licted\nl ite\nĠPARAM ETERS\nĠSt am\n(m x\nĠAuto Mapper\nil ian\nĠqu itting\n={ }\nĠJon as\nĠlocal ity\nĠSil ence\n_fl utter\nĠn br\nl iter\nĠNormal ize\nĠac um\nBr ains\nequ ip\n] ==\"\nĠdest ino\nĠD ios\n.Mult iline\nag ree\n)ĊĊ ĊĊĊĊĊĊ\nĠst ellen\nĠcur ly\n. Office\n- about\nĠ'./ ../../\nĠUT IL\nĠR p\nâĢ º\nĠmap a\n.D O\nag al\n.w indows\nĠadvers ely\n.Xtra Layout\nmed ical\nĠuns ur\nther mal\n.Model Admin\n. actual\nset Content\nĠpost fix\nP W\nĠCh airs\nĠgr amm\nĠcomp lic\nDIS PLAY\nĠMo ose\nha ar\nA LES\nĠl da\n/**************************************************************************** *Ċ\nĠ'/ 'Ċ\nAS N\nĠBar ber\nĠm ains\nĠmain Window\nÐ°Ð·Ð² Ð°Ð½Ð¸Ðµ\nĠem an\n_col lect\nĠrem pl\n.t ax\nb ah\nĠPsychiat ry\nDes criptions\nĠexec utions\nĉLOG GER\n& E\n: bg\nĠk d\n.d amage\nĠn isi\næ¬ ¾\nĠCam el\nin idad\nĠL ifestyle\nĠTH IRD\nĠà¤ ¸\nĠpoly gons\nĠatt ire\nal ent\n_US ART\nĠm alaria\nlo bs\nĠ] }Ċ\n( register\n- ps\n_opt imizer\n(AL OAD\nĠv ape\n.s ock\nĲ èĹı\n$ product\n( ERR\nck pt\nbu querque\nĠ}} \">{{\nĠH ive\nĠM ash\nĠE pid\nĠL und\n_trans actions\nĠsub classes\nE ase\n_C lose\n_check out\n\" ',Ċ\nS ector\no ise\n- temp\n) \")\nhy per\nerc ul\nstack path\n_N R\nIL LE\nĠrel aciÃ³n\nĠMat th\n_CODE C\nĠhandle Error\n_O ne\nal borg\nĉĉ ĠĠĠĠĠĠĠĠĠ\nĠUp loaded\nN m\n// =\n* S\n_EX PECT\nĠfraction al\nC ou\nĠscal able\nĠC ID\n< Post\nĉ thread\nhard ware\n.ch anged\n.Element At\nĠartic ulate\ned ores\nEst ablish\n={ [Ċ\n! *\nĠS J\nM eter\n.re p\nĠV OL\nĠO u\nl Ã©\nĠpneum onia\n_p icker\nexp lo\nĠìŀ ĳ\nĠSw im\nd ress\nst ories\n/ nav\nV a\nĠØ Ń\n/ self\nĠveter inary\n(D ense\nĉ boost\nĠIs Not\nĠtrust ing\nĠLeban ese\n$ request\nxffff ff\n_rem oved\nĠup dater\nØ§ Ø\nDOWN LOAD\nĠIm mediately\nĠro aming\nĠHorn y\n.c odigo\nĠFig ures\nĠpan try\n(s amples\nĠB EL\nĠset Content\num or\næĶ¯ ä»ĺ\n_MIN US\nĠunle ashed\nĠprof icient\nĉ UI\n.Exception s\nĠs rand\nPress ure\n.assert Not\n(serial izer\nĉt xt\nPort s\nĠneces ario\nĠrev ived\nĠmile stones\ncan o\nEsc ort\nĠent end\nA PE\nip c\n. atomic\nĠP emb\nĠreach able\nĠk ans\nwh atever\nList Box\nĠC ly\np ictured\nĠElect ro\nab ic\nĠfun k\nĠdiarr hea\nĠç Ļ\nĠS olver\nĠB ac\nĠske letal\nĠï Ĥ\nĠFile NotFoundException\nĠ\" )[\nĠT rait\nud oku\n---------- ĊĊ\nAng el\nag r\nĠsimp les\nĠb anc\nĠAlert s\nĠConfirm ation\nĠA ly\ncallback s\nĠfun ktion\nĠg raft\nYP D\n/ AFP\nW K\nk ur\nCK ET\nĠS late\nĠSte f\nĉR untime\nĠE SL\nĠpre aching\nB road\nĠset Description\naz el\n= ĊĊ\nĠjack pot\nĠ// !Ċ\nvi ar\nĠe id\nĠat iv\nĠreflex ivity\n.List en\nĠly ric\nĠver k\nĠcoll usion\naza ar\nĠw ink\nĠM ud\n/ operator\nĠextern ally\nĠbar u\nĠb askets\nt icker\n( photo\n_e ven\nĠs ponge\nĠheight For\nget Child\n_form ats\n.Exec ution\n_P roperty\nre pos\nthe id\n_PH YS\nĠevid enced\n. heading\nAng ular\nĠVen ue\nĠHO USE\nĠEston ia\nÐ¼ Ð°\nrgan ization\n/ device\nIR R\n_ then\nare m\nĠag gi\nEM ON\nĠÑģ Ðº\nĠE ph\nĠM SP\nĠlog file\n- leading\nath am\nĠun matched\nĠSit uation\n(){ }Ċ\nĉ change\nĠCh apters\n. RESULT\nĠo e\nET Y\n_ vid\n... ',\nĠaltern atively\n_W S\nĠPl enty\nĠCr ate\nasion ally\nĠL awn\nĠIM M\nĠVan ity\nĠV oor\nåĲ ¯\nĠm ij\nster reich\nĠR DF\nĠC riterion\n.In v\n.St ep\n_F rame\nĠEN UM\nï ¾\nHope fully\nNav Controller\nĠì¶Ķ ê°Ģ\nĠV ader\nĠruth less\n$ key\nck t\nin em\nil ent\nĠrespect ing\nl cd\n(b t\nĠEll iot\nĠUn idos\n( Channel\nĠe ius\nĠastronaut s\nĠHost ing\nĠc aste\nĠhar med\noup les\n< Role\n.D esc\n-c ourse\nĠCart oon\nile ged\nĠmyst ical\nĠç ±\n(field Name\nWITH OUT\n, sum\n' acc\nĉ rows\nĠget Password\nĠcock s\np ivot\nname of\nĠfeas ibility\nĠcommenc ement\nĠD ome\n.JSON Exception\nĠHy derabad\nĠList ed\nĠComput ers\n[ val\nĠis ot\nĉw in\nĠne h\n( INT\nRepublic an\nĠÐ¿ÑĢÐ¾Ð² ÐµÑĢ\nF at\nĠequ iv\nĠDat um\nast i\nĠso ils\nup uncture\npress ive\n_ ));Ċ\n.W arn\nĠhar b\n.on OptionsItemSelected\nĠcl own\nĠOW N\nĠexam inations\nĠEx isting\njour d\nĠcon cession\nĠFirebase Database\nĠupt ake\nĠen listed\nĠCar b\nĠf us\nĠab using\n.pro duction\nyn ch\nily n\nref und\n-h ave\n(arg ument\nĠf scanf\ncon cept\n_L ANE\nĠeng ages\nĠEx actly\nalt ura\n( Address\nĠsyn onymous\nT own\nĠPay ne\nro it\nper iences\npart icles\n_b d\nĠGr inder\nManagedObject Context\n(b b\n[ tmp\n- cons\nao ke\nĠst eward\nĠView Child\n.draw Line\nĠW ARN\nĠp ues\nmod ation\nĠz s\nA gregar\nĠ\". \",\n.center Y\nĠflaw less\nĠde utsche\nĠL iqu\nite it\n_int ro\n- used\n, target\nĠH DD\nĠ% +\nore nt\n/ Object\nĠdisrupt ed\nÃ¢ te\nĠacc eso\nĠLow est\nĠWilliam son\n_c reator\nS ell\nĠB UG\n_re pr\nèĢ Į\nĠarchae ological\nom ers\nĠEl on\nĠScroll View\nĠlin estyle\nis Required\nisk o\n_r b\nf Ã¼h\nĠĠĠ ĉĉ\n( define\nĠSC M\nĠDI FF\n_b s\npend icular\np aced\nĠJournal ism\n.JSON Array\nĠData Access\nM aria\nĠB Ã¼\nHE LL\nĠMAT RIX\nOLT IP\naps ible\n] :ĊĊ\nn aires\n_h istogram\nĠfl air\nh aving\nĠUser ID\nĠRelationship s\nRe placement\nĠr sa\nĠenrich ed\nĠrehe ars\nĠw Ã¤re\nĠload ers\nĠE lena\nĠWatch ing\nĉ job\nNE WS\n/settings dialog\nive c\n_EQUAL S\nTemplate Name\nĠB ODY\n.ad apters\nwo ff\ncom boBox\n.New Reader\n| required\n_prob ability\nĠ( ::\nĠc raz\nĠU F\nTest Id\nĠes pecific\nib el\np awn\në į\nĠM arr\nĠstart X\n_s ites\n/ >ĊĊ\nĠimp licated\n( inner\nĠeffort lessly\nÂŃ tion\naw ard\nĠhover ing\np ri\n$ template\nu ang\nĠautom ate\nĠ** /ĊĊ\nib li\nĠnut rit\n). (\nee ee\nApi Controller\n/ owl\nĠW omens\n-d ouble\nĠOrder ing\nsp m\nM oder\n.N ative\nĠBer ger\nes da\nerd ings\n_e cho\nĠsummar ized\nĠelev ate\n_qu ad\nĠw oo\nul ant\nProperty Value\nĠpl ist\nĠGR APH\nĠSTD ERR\n) ').\nAssert ion\nlink plain\nĠacceler ating\nĠsn ippets\nĠSal man\nab cd\n.e cho\n_idx s\nĠp cm\nocaly ptic\n_co ordinate\n(pre vious\n-sh ort\n.sub tract\n(B it\n? t\nĠNote book\nĠKat rina\niffer ential\nsil ent\ntermin ated\nĠtang ent\n: T\nĠcos Ã¬\nĠparan oid\nĠde privation\n/ {{$\nĠhem isphere\nĠre inst\nec z\nter r\nĠPL ATFORM\nĠtroub leshooting\nĠvalid ating\nĠOr ion\nas uring\nÐ¸ Ð½Ð°\nĠh ubs\naren ce\nĠCh allenges\nĠze al\nS po\nĠS creens\nĠmund ane\nĠD unk\nĠ#### #\nĠRE FER\non et\n.c ase\n- positive\nIN TEGER\n.metro Label\nS AN\nĠprof essions\nĠty res\nPal indrome\nĠSE COND\n.G REEN\nĠS napshot\nUL K\n_c id\n$ I\nĠc unt\nestr uction\nPs ych\nĠHttpResponse Message\nemb ali\n_re views\nSelect able\n_PRE SENT\nĠJson Request\nĠTh eta\n_inter p\nR aster\n# error\n, obj\nĠtweet ing\n_G PU\n_t oday\n_se cs\nne es\n.get SystemService\nĠv node\nĠReg ulatory\nĠF ahrenheit\nĠsc aler\n_mark et\n. allocate\nt ickets\nata k\nĠP ike\nĠL or\nd itor\nĠlocation Manager\nĠinit Data\nĠW are\nĠInc ident\nĠcomment ator\nuent es\nĠIn flate\nĠå Ĩ\nĠactiv idad\nĠB j\nEN UM\nĠre used\nĠÐ¼ ÐµÐ½\nĠses iÃ³n\n. '));Ċ\nãģĵ ãĤĵ\n/ ge\nagain st\n, line\n(Un managedType\n) =\"\nĠy t\nudiant es\nroll able\nå¡ «\n_COL LECTION\nol is\number land\n(\"\" \"Ċ\nĠzip per\nČ Ċ\n/sign up\nĠstr ands\nr ax\n.con sumer\nĠuncert ainties\nDebug Enabled\nĠdefe ats\nĠdr v\nĠreal ism\nagram s\nX E\nĠHaz ard\n- needed\n(t ableView\n. Elements\nĠS AR\nĉe lem\n(p kg\nSim on\nT intColor\nĠPh en\n_E MP\nØ Į\n? >ĊĊĊ\n_at trib\nĠbox Shadow\nĠCG AffineTransform\nĠCan berra\nĠstart Pos\nĠR ak\nĉc err\nĠTanz ania\nu ong\nca f\n.basic Config\no ins\nCont ained\n= set\n_g it\nĉp acket\nĠc of\n( TR\næł¼ å¼ı\n({ })Ċ\nĠdire ccion\nĠplay lists\nĠaff ine\n.set Selection\nĠam mon\nĠconqu ered\nĠR amos\nĠP SP\n= sum\nĠcorrel ations\nĠroad map\nĠext inct\nĠadvis able\nĠbom bers\nĠUI Responder\n_B P\nĠÐ±ÑĥÐ´ ÐµÑĤ\nĠPrem iere\nĠR U\ntr ash\n(cl js\ngn u\n.P ages\nĠinspect ors\nMex ico\nĠV ere\nP rec\nĠSc al\nisp ers\nRun nable\n. orig\nĠsail ors\nP arsing\nĠVis itors\n& type\npop over\n< (),\nĠow es\nĠre acts\nĠDef ined\nĠreal mente\nĠdictator ship\nadmin istr\nid end\n= L\nstr casecmp\n] %\nÐ¾Ð³ ÑĢÐ°Ð¼\ned ula\n-des igned\nCO VER\n_Ch annel\nĠproj eto\nym oon\nCHK ERRQ\néĩ Ĭ\nĠver ifying\n/ key\n.from CharCode\n.B it\n_b udget\nĠ% \"\nvey or\nĠy um\nĠextrem es\n_C RE\nget Status\nsub section\nĠso aked\nĠgen au\n_CHAR ACTER\næĮ ģ\n-on line\n.to CharArray\ncer er\n\"], \"\nĠst roll\nĠY uan\nĠW ander\nĠsist em\n_ uc\n(n ombre\nchant ment\n(c lose\nm eth\n-se cret\np seudo\nCount y\nCONT ROL\nĠsol vent\nĠso aring\nĠsp ies\nNav Item\nĠresembl ance\n(b its\nĠcell ul\nĠassoci ative\n.im write\n.co ordinate\n], $\n(s k\n*/ )\nĠmock s\nĠj ung\n_D OC\n-r untime\nĠG ives\nun j\n(se g\n([ \\\nĠn ah\n_ex pect\nRow Index\n(f orce\nĠGet Value\nĠsumm aries\n_SH ARE\n-tr ained\nĠBl anc\nĠf ittings\nĠwater front\n.N ote\nĠW and\nover e\npred iction\nĠcs r\n.top Anchor\nĠSt roke\n_F ilter\nat he\nĠ\"\\ \\\"\nĠA FF\n=\"/ \">\n.Request Method\nĲľ ç´¢\nĠwitness ing\nApp arently\nĠm di\nst icks\nĠAl v\nÃ¤ ÃŁ\n_cont in\nĠbo ilers\nĠMarx ist\nIO C\nner o\ninn acle\nL it\nce c\nKey Press\nGet Data\nĠis nt\nÑĢÐ¾Ð² ÐµÑĢ\nĠq ry\nRoot Element\nĠNS Coder\n.get Num\nĠth reesome\nUs es\n.\" _\nĠContin uous\nĠpopul ist\nĠPsych ological\n_c ycles\nĠif def\nipher als\nĉ ĠĠĠĠĠĠĠĠĠĠ\nĠadvis es\nĠCom panion\ntr ight\nĠgrow ers\nĠSOCK ET\nym ce\nR SS\nmember Of\nTouch able\n_arr ays\nĠj umper\nĠher pes\nĠT its\nĠTele fon\n_P ANEL\nug en\nåĮĹ äº¬\n.S ite\n_un register\n_ch r\n.t f\n-h uman\nĠas oci\nĠque ens\nAnth ony\nĠstring ent\nĠmole st\nset Icon\nHE EL\nHE LP\nDD S\n.c ms\nISTR IBUT\nc ies\n.for Child\n.ch k\nĠOtt oman\nĠT PP\nĠm io\nĠB uf\nbo a\nV ersions\n( locale\nĠRail road\nb cc\n/** <\n-p aid\nĠcel ery\natis che\nget Option\nor iously\nĠadapt ers\nSt ores\n/s ave\nĠB asis\nÑİ ÑĤ\nĠL ad\n_rel ationship\nĠClub s\nĠà ¨\n:\" <<\n_M ISC\nVisual ization\nĠmir rored\nes per\nStr Ln\nĠresponse Object\nåĲ ĳ\n. encoder\n-------- -ĊĊ\nĠgrid View\n_ind ent\nant wort\nĠarr ivals\nĠSet tlement\nView Init\n- values\nĠwater fall\nĠincarcer ation\nĠTe ens\nĉs ign\nimm une\n.second ary\nĠvideo er\nĠè¾ĵ åħ¥\nĠintimid ation\nend ale\n################################################################ ########\nĠinsight ful\nĠs ands\nĠphotograph ic\nP aginator\nĠdiscipl ined\n_T LS\n] )),\nrl en\n< center\n_P CM\nK elly\n-b illion\n.c x\nĠje ux\nĠfile List\nĠQ Dialog\ntract ive\nD t\nĠest rogen\nĠst arch\n_ emit\nĠÐ·Ð°Ð¿ ÑĢÐ¾Ñģ\nĠQu art\nĠinadvert ently\nĠtr ong\nship ment\nĠN OR\nĠScreen ing\nĠDis connect\nmen o\nĠWor st\nĠN r\n{ k\ns pl\n_ ctr\n.sort ed\n- placeholder\n(); \"\nh urst\n-h it\n.s olve\nç® Ĺ\nĠund ead\nĠwh ims\nĠget Default\nĠNik ki\nas semble\nĠre located\n- ret\nIt alian\n: System\n.s cheduler\nâĢľ So\nFor bidden\nAV OR\nz iaÅĤ\n.A dam\nĉc anvas\nĠpartner ing\nĠgym n\nĠman ic\nD ifferent\nĠÃ¥r hus\nĠfert ile\ncl f\n- čĊ\n.re view\nod able\nĠB ounds\nob ao\nĠPaper back\nĠmod ific\ncheck point\nĠApp Bundle\nĠstabil ize\nĠAudio Clip\nmonth ly\n.b eh\nĠfl or\nĠbond ed\nĠWork out\ncom ings\nĠrab bits\nĠB AL\nCC R\n_v ue\nĠLev itra\nĠlibert ine\nĠchalleng er\nĠVac ation\nTo F\n} $/\n_D raw\nĠf ences\nĠdatas ource\nĠpap el\ns lick\n_m es\nĠUI StoryboardSegue\n(T ag\nĠå¯ ¹\nĠ'- ')\n_CL ASSES\n(R ender\nĉf write\nU ED\nA ES\n(json Path\nĠsl ows\n> Description\nĠenrich ment\nĠitem prop\nĠPo verty\nĠabsor bing\nĠPsy cho\næ± Ł\n, .ĊĊ\nIn verse\nĠadj ud\nigid Body\nz ioni\nĠ\"' .$\nä¸į åŃĺåľ¨\nTh ai\nĠsl ain\nĠbrut ally\nĠPers pective\nĠRet irement\n$ rs\nĠservice Name\nĠì Ī\n- processing\nbr ands\n: error\n(property Name\nĠBo eh\n/c m\n/ read\nAM B\nĠrot ations\n.work space\n: y\nĠup hol\nunk y\nĠBr ace\n/m eta\nĠBr ave\nac je\n(U Int\nĠvie ille\nr adi\n_d yn\nN W\nlo ser\nerus form\nĠBart on\nĠfa res\nĠM uk\ná»ĩ u\nĠAudio Source\n(( _\n.B ig\n.organ ization\nĠTr ick\nĠbl ush\n(T YPE\nĠRelative Layout\nlect ron\n] }\"\nĠZ ap\nĠTw elve\n: L\nĠstiff ness\n_HE L\nĠspe p\n(c oder\nĠt amanho\nĠantioxid ant\nĠhospital ized\nG PC\nĠscrut in\ná»ģ n\nĠS Z\nĠJul ius\nĠS abb\nel or\n(m c\néĩ Į\nĠP ins\nĠmoder ately\nĠK Ã¼\norgan izations\nĠSC ORE\nĠsc our\nĠch or\nĠUI EdgeInsets\nĠsk ulle\n_oper and\n.g static\n/ng inx\nĠget Width\nB attery\nĠSet ter\nm A\n( Resources\n_play list\nĠm ango\nĠOR D\nank ind\new ays\n? ),\nĠGL UT\nĠjust e\nĠp ayer\n(c am\nĠTe ach\nĠFl ux\nĠout spoken\nĠString Util\nĠZh ao\n.H elper\nĠest ilo\nĠAnth rop\nĠGu ards\nV ocÃª\n: ['\nĉ product\nupdated At\nĠins pires\nq w\nBLE M\nak istan\nĠcz ÄĻ\n-heart ed\nĠComp ensation\nÐ¸ Ð³\nĠcom a\nĠF iat\nĠxml http\nĠref errals\nĠspect ators\nĠT os\nis os\nIM PLEMENT\nĠentrepreneur ial\nĠSc outs\nĠAl one\nbro ker\nProduct Id\nĠK obe\nĠch aud\n/ features\nĠroom mate\nĠPro jection\navour ites\n_JO IN\nĠA VC\n_ph ys\nKey Pressed\n, <\nĠun reachable\nĠC itation\n[ channel\nstart swith\nĠJag uars\n.Is False\nmembers hip\nAtt ention\nĠremodel ing\nĠC indy\nĠclin ically\nĠmillenn ials\nĠÎ ´\nĠr fl\nen et\nĠobr ig\nĠvolunte ering\nC redits\nĉ ar\nĠres isting\nĠProdu kt\n== =\"\nĠcon ect\nĠr ij\nĠ× Ķ\nĠpublic Key\nĠo y\nĠBut t\n_m isc\nĠBest e\nĠP LC\nĠæ Ł¥\nĠBox Fit\n\"\" .\nTest Fixture\nĠch atter\nĠdoor way\nys ize\nĠÑĩ ÑĤ\nICT URE\n=' ../\nsh own\n_ weather\nĠLog Manager\n] }\"Ċ\nĠcolour ful\nĠrum ored\nĠl Ã¥\nĠpro bs\nĉb uild\nĠå ¦Ĥ\n.re v\nĠintercept ed\nG ay\nList Component\nĠpi Ã¨\n\" At\nĠag ar\nĠG und\n_A ES\nì ĥ\nİ ĺìĿ´\nĠauthor ised\nĠCh all\n_log out\nc ron\nateg ies\np ersistent\nĠAnd Also\nus z\n_re start\nĠdec id\nz f\nĠpag inator\noll er\nĠH G\nO paque\nse au\nĠO MIT\nĠTh ickness\nĠAir ways\n_d em\nyt ic\nĠprotest ed\nĠup rising\nĠsu ing\nĠShel by\n. energy\nĠalle le\n-b ig\nString Builder\nĠsid elines\nĠT U\n_ ai\n.H ORIZONTAL\nĠr aging\n.to Locale\n.m ust\nxFF F\n.n ih\nĠ'{} '\nÙĪ Ø¯\nĠpul monary\nĠåı ĳ\nĠn Ãºmeros\nĠNap oleon\n_Method Info\nlast ing\nĠexpos ures\nĠemb ark\n_ udp\nK ids\n_CONNECT ED\nĠwe eds\nPO OL\nĠk rij\nĠn uis\nJNI EXPORT\naaaa aaaa\nĠí ı\nä» ½\nĠrepl en\nĠTri als\nw ash\nr ut\n-b efore\n_ATTACH MENT\nUN T\n\\ Validation\nT on\nĠhead ings\nProb ably\nĠfabric ated\nSocket Address\nĠlet tre\n) \">\nĠvacc inated\n: http\nĠcond ol\nsh ed\nĠSp iele\nãĥ Ķ\nDep loy\n.Con tract\n- bo\n# /\nĠinter ception\nĠis bn\nĠman ners\n/ ac\nĉ Check\n_f g\nĠend Point\n_ weapon\nĠunint ention\nĠqu its\n_M IC\napi ro\nĠballo ons\nĠgrad s\nmar ried\nĠ< *>\nĠdist ort\n_M ESSAGES\nĠP SA\n_P D\nalse x\nĠDialog ue\nĠregistr ations\nĠOrig ins\nĠfl ank\n? ;ĊĊ\n;ĊĊ ĊĊĊ\n]- $\nĠD ess\n.Status BadRequest\nĠinhab ited\nĠg ilt\nĠST DCALL\n.th eta\n$$ $$\nic lass\nA part\n.list Box\nĠBel arus\nĠden en\nĠSus sex\nĉd el\n_E C\nne arest\n\\ Order\nP ackages\nformer ly\n) ï¼Į\nè´ £\nSex y\nĠhorr ors\nROAD CAST\nAppro x\nDes k\nAM ED\n.Normal ize\n_p ublished\nĠDe borah\nç§ ĳ\nĠp ounding\nĠEs per\nĠD ancing\nĠLO OP\nĠRoy als\nĠins ure\nĠInvest ors\nĠthe ological\nApp ointment\nĠcategor ical\nĠcr an\nValid ity\nĠrespond ers\nĠ( )čĊ\nep ad\nB ITS\nĠLamb ert\nsum m\nac idad\nĠlogged In\n= W\n.Local ization\nrid o\n' \")Ċ\nĠWeb View\nlo th\nĠte aser\nĠC and\nĠepile psy\nIn crease\nivity Manager\nentr ant\nTele fono\n.current State\nĠNo el\nĠĠĠĠĠĠĠĠĠĠĠĠ ĉĉ\nĠexhaust ion\nel ian\nĠcov eted\n- production\n(std in\nĠprefer able\nĠoff ending\n(com mit\nĉ al\nĠre locate\nĠanom al\nĠDise ases\nĠFor g\nĠW IFI\nĠK illing\nq v\nĠf map\nĠlle var\ntit re\n. emp\n,$ _\nav r\nCan Be\n_m a\nĠHaw kins\n_RO UT\nĠload Image\nĠW ah\nĠDem s\nĠindent ation\nprec ation\nĠæĸĩ ä»¶\nĠBud apest\nĠut c\n(h ours\nĠtr anny\nAn s\nzy Äĩ\n. vehicle\nCo ins\nĠBra un\nĉ Response\nĠv rij\nĠstrang ely\nĠF asc\n\\ Session\nMouse Listener\nĠRoll s\náº§ n\n.gr pc\nInteger Field\nĉ afx\nDock Control\n% \\\n% ;\"\nĠg igg\nĠborrow er\nĠdispon ibles\n_RE CT\nĠTh in\nĠpear l\nxF B\nĠrip ple\nĠk Hz\n.ac quire\nb ios\ntable Future\n/ antlr\nor acle\nĠARE A\nĠintens ely\nĠprot obuf\nĠL ENG\nĠHead quarters\nath ed\nM ind\nin iz\nĉ Path\nXML Loader\nĠalloc ations\n.s lot\nProc Address\nĠrole Id\n; ';Ċ\nĠB REAK\nĠPerform ing\n.Ordinal IgnoreCase\n-g l\n: h\nĠdownload able\nĠSub scriber\nan se\nĠcharacter ize\nĠshr ugged\nĠsc p\nĠgust a\nĠmet all\nĠlabor atories\nĠX in\nĠMotor cycle\nĠe get\nĠfin anced\nĠMOD IFY\n* R\nA i\nĠextrem ism\nĠHal ifax\nĠv amos\n$ num\nĠimp art\nbr ick\nĠç± »\nĠfu era\nĠRO LE\n.Con current\n_OPER ATOR\nĠcyn ical\nĠReg ina\nget Error\nØ £\nbs ub\nJ apgolly\nĠinhib itor\nJust ice\nã ħ\nNever theless\n- sem\n. ogg\nrequ ent\nĠnos so\nH air\n.L ibrary\nmd ir\nĠh ari\nĠT ara\nĠPort o\nnet inet\nĠall iances\nells chaft\n_S urface\nĉ View\natur days\nĠpop corn\n_PAR SE\nĠRip ple\nĠph antom\nĠmon do\n.create Class\nĠKore ans\nĠf ase\nĠW ochen\nĠEqu ip\n-e ight\nĠStat ements\nĠadap ting\nP recio\nĠC ure\nĠcamb iar\næ° ĳ\nĠhex adecimal\nspir acy\nb ilt\nĠY ug\nĠ-- ->\nĠP PC\nis z\nake FromNib\nĠDis p\nĠAth letics\nĠnight club\nGO OD\n.set Geometry\n+ [\n/s end\nĠbin aries\nĠrÃ¡ p\n: req\n-con suming\nert ime\nUP DATED\n_null able\nV IN\nul ia\nc yan\nĠmisunder standing\nor ical\ndeg rees\nLe ading\n.A R\nic kest\nN uevo\nuf oria\nĠgood ies\nĠf ores\n() <<\"\nad emic\nAction Creators\nserver name\n( nt\ndb Context\nĠair borne\nĠexhib itions\nce le\nĠt ela\n< Movie\n(' {}\nEx planation\nĠh Object\nĠbear er\nens ibly\nn ip\nĠJer ome\nĠC Z\nĠdate Formatter\nÃ© cial\nSet Name\nou ce\nĠreg ress\n& C\n() \">\n.set PreferredSize\nĠM ID\nĠA less\nĠhorse power\nĠat m\nĠPack aging\nĠc iphertext\nRequest Method\nĠbe iden\nè £\nĠP OW\n.Write Header\ndirect or\n-b ut\nãģł ãģķãģĦ\ninc er\n_d n\n!! !!!\nĠmanufact ures\n.Text Utils\nĠconsc iously\nĠb ounced\nc ulture\nĠS par\nĠP iper\n.p ress\n- owner\nĠevalu ator\nĠST REAM\n.PictureBox SizeMode\nĠsug ars\nScreen Width\nĠnext State\nĠiv ory\nĠbr unch\nd ensity\n_O W\nĠCoron avirus\nĠC FR\nb ak\n\\ Category\næķ° ç»Ħ\nĠinvoke virtual\n} ()Ċ\nĠsu jet\n-m arker\nisd igit\nĠM obil\nĠJsonRequest Behavior\n_RE MOTE\n.exists Sync\nĠrich es\n.pres enter\nĠgl Color\nĠh anya\nĠfort ress\nĠflash ed\nv iz\nrequ ently\nbu at\n$ con\n> |\n.F unc\nĠhum orous\nu em\n.Z ERO\nĠST L\nĠB uk\n/s ample\nĠG ros\nRec ipes\nĠinfl ated\nĠsw ung\n: F\nF acing\n.Th eme\nÐ½Ð¸ Ðº\nĠspl endid\nĠrequest Id\n.Center Screen\n/ autoload\nembed ded\n_de part\nĠPort s\nà¹ ĥ\nÐ°Ð¹ Ð´\ndisc ussion\n_con sum\nĠsc outs\nĠcol abor\n.St age\n.n ano\neld orf\nĠgem acht\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nĠpolicym akers\n_P KT\n, Th\nok y\n_ UID\nP ing\nĠor chest\nĠopt ics\nu han\nĠX OR\nĠespaÃ± ol\nĠAd idas\nr ng\nm ans\n.v stack\nĠget away\nĠhier archical\nano ia\nĠBitmap Factory\nre alm\nĉ ap\n_app s\n-div ider\n.draw er\nĠH ARD\n']; ?>Ċ\n-p acked\næ² »\n_STRUCT URE\n[ Y\ni Param\n(e q\nĠencompass es\nĠ\\ ĊĊ\n-> [\n& utm\ng roupon\nstr ate\nD Y\nom orphic\n': [\nĠgrav itational\nĠMich a\nĠT encent\nĠco ached\nì¶ ľ\nÑĥÐ¼ ÐµÐ½ÑĤ\n/m obile\nMouse Down\nb ud\nĠY as\nĠPro viders\nN Z\nĉ report\nerr msg\nĠimage Path\nacter ial\nĠM anga\nwick lung\n( usuario\n\")) ;čĊčĊ\n/** *\nĠorgan ise\nIndex ed\n_ QUAL\n(Py Object\nĠsurrender ed\nPO CH\nĠNOT ES\n\\ \\\"\n- job\nĠsevent y\n#### Ċ\nĠMan or\nĠdown right\nĠtime frame\nins urance\ncheck er\nĠSE CRET\nĠecho es\nĠCarm en\n.setHorizontal Alignment\nĠis Checked\nĠT OR\n_n n\n(' (\nFetch Request\nĠPrint ed\nFl uid\nĠST ACK\nG ES\na igned\nig or\n.Un known\nC BC\nĠCarl son\n. URI\nĠpl ight\n/ start\nĠPerson nel\nĠP REFIX\n, **\nĠlim ite\n_ heat\n% ï¼Į\nĠDon ne\nget Node\nĠScient ology\nĠcom et\nĠwen ig\nAs ide\nĠM PEG\n' ?\nvari ably\n.end Date\nĠun cont\nĠS cores\nĠLogin Form\n.g enerated\n, ch\n-m ar\nĠN ed\nĠevent Id\n+ p\nĠS IN\n/ reset\n.RE ACT\nĠMess i\n_R ANK\n.write File\nĠcri pp\nest hetic\nERS IST\nĠreim bursement\nCurrent Value\nĠun in\nDown Latch\nĠpadding Right\nĠstock ed\n/ '.\nĠrep ayment\ntr ak\n/ backend\nĠÐ¸Ð· Ð¼ÐµÐ½\nCS R\nĠprevent ive\nĠpant alla\n_tr im\nPed ido\nh ospital\nĠmanage able\nroute Params\ntext ures\n..... .ĊĊ\nĠsÃ© lection\nName ValuePair\nĠpoll ut\nM odes\nĠLa ud\nj ay\nĠU rs\nĠsign er\nĠJ J\nĠCh erokee\n_EX ISTS\nĠd war\nĠ($ ('#\nĠre ef\n> {$\nĠBay lor\nĠModel State\n- _\nĠStruct ures\nĠsou vent\nSpec ify\n(p ipe\nĠfr acking\nĠG PA\nĠbe le\nĉĉĉĉĉĉĉ ĠĠĠ\nĠMinor ity\nĠt ud\nĠopen ness\nĠIllustr ated\nĠoxid ation\nĠN K\nĉ Update\nĠE MS\nĠTed dy\nĠgener als\nĉM at\nĠradi os\nĠAnt ique\ncon omy\nĠSquad ron\n) ','\nå£ °\nĠyou re\nĠMain Page\nĠbeh aviours\neng ht\n(@\" %@\",\nĠtest case\nĠComp ilation\nĠflav ours\nĠExt end\nill ator\nĠco h\nĠspl ine\nĠK G\n-p ay\nĠcommun ism\nĠBusiness es\nock ing\n.Max Length\nass andra\nqu iring\nadd en\nĠJ eb\n_f ault\n[ file\nĠpromin ence\ndisc iplinary\nâĢĶ they\n_ext ent\nĠV IC\nĠent ails\n.part ner\nĠhipp oc\nLe ague\nçĶ ·\nw ipe\n-sp inner\nĠsal ute\nĠSurg ical\n(output s\nwork ed\n[str len\nappoint ed\nĠH eg\nĠAC PI\n([ ^\nual a\n_t ol\nĠR it\n.P ayment\nk owski\nĠw almart\nrequire ments\nĠFIN SEQ\n_BACK GROUND\nĠOs borne\n(error Message\nReport ing\nĠauction s\nĠcomb os\nĠNot iced\n_o ct\nĠprim ero\nta ire\n_h r\nĠÐ¼ Ð¾Ð´\nĠcontradict ory\n=\" @\nach ines\n(opt arg\nĠP enguin\nĠAb bas\nĠsub lime\nĠpage able\nĠDef ensive\nĠdistinct ly\nĠAutom atically\nUnder standing\nEquality Comparer\ng ota\nĠ\" ::\nĠpul ver\nĠBatt les\nĠun paralleled\nT CHA\nĠconstr ued\n- aff\nĠprec ursor\n-l fs\nĠmad uras\nĠD aisy\nĠAr beits\n.Man agement\nĉ In\nĠro bes\nĠsp Ã©c\nâĢľ (\nĠmat ernity\next ent\nĠSp acer\nDid Appear\nĉ us\n.getRequest Dispatcher\n(c ols\nĠplum met\nì ħ\nĠ{ ĊĊĊĊ\nÃ©ric a\nĠS izes\n.en um\n.High light\nĠ!! }</\nATTER Y\nĠSor os\nGL float\nãĤ Ħ\nĠJenn ings\n? ?ĊĊ\nĠRome o\nĠ? >ĊĊĊ\nW enn\nĠclim ax\nĠc rem\n_th at\n[ âĢ¦\n_dom ains\n_RE PLY\nĠcomple ta\nVE ST\n_p article\nĠs op\nĠfatal ities\nimpl ify\nĠSK F\nĠinf usion\nĠJ avier\nĠb allet\nĠam igo\n.w ant\nĠcoll agen\nĠLaw yer\n.St atement\n.r t\nba ar\nEnd Point\nĠB ek\nSH IP\nĠpatri arch\nĠA unt\n_T M\nĠm ÃŃn\nĠmaster ed\nW XYZ\nĠes pos\n= logging\nĠrighteous ness\ntor rent\nĠb st\n_CH AIN\nĠout skirts\n( rotation\nĠ'. ')\nigr ants\n+ lsi\nĠCCT V\n_PH ASE\n. azure\n_Pro cess\nv ae\nĠT ropical\nĠAnk ara\nimage View\n_RUN NING\nĠ*) __\náº¿ n\n(cl i\nsc atter\nĠs che\nReg istrar\nĠair ing\nĠpy plot\nis iÃ³n\n/c ustomer\nĠsim plement\nĠclass y\nĠD WC\nĠBash ar\nĠDE VELO\nĠV ick\nav ail\nĠH Ã¶\n_ext end\ndr Fc\n.is NotBlank\nĠpl ais\n| }Ċ\nĠporn ofil\nl abs\nĠha us\nĠorigin ating\nĠsurround s\nĠQ UAL\nm eg\n/ logger\n[ obj\nĠirres ponsible\nĠPublic Key\nH ONE\n:' /\nib ox\nĠF Vector\n| {Ċ\natal oader\nh awks\nH DR\nĠescal ation\nĠPods Dummy\nel ite\nĠpres up\nC ached\n> G\n. optimizer\nĠVis ible\n´ Ģ\nĠn en\nĠp cs\nĠId le\n[ Any\nĠkey boards\nĠCOMP ONENT\nĠtit anium\n(m ut\nĠLed ger\nĠprosper ous\netro fit\n_L L\n_p atient\nĠp data\nĠkont akte\nSw ipe\nĠcheer ful\nĠHond uras\n\"] [$\nĠhem orrh\n\":\" +\nĠle asing\nĠinstall s\nĠP ax\nĠLog istics\nĠkin etic\nĠPh on\n_m ovement\nĉ bytes\nĠcin co\nĠMad ness\n\") +\nĠJ E\n_ ij\nScene Manager\nĠB ust\npt est\nae a\nĠb esser\nÃŃ g\nÐ´ Ð¸Ð½\n(t asks\n(\" (\"\nset Type\n(out file\nĉ reset\nĠAR C\nĠmÃºs ica\nĠSh elf\nĠmin Y\np ch\nĠwe iber\niss or\nĠtrou ve\nĉ Button\nĠreg enerated\nÅ£ i\nim achinery\nblock ing\n.data Tables\n_f rac\nĠAdv antage\n.visit Method\néĩį æĸ°\nĠextr apol\nĠte asing\nĠH itch\nĠGe ek\nES CO\nĠw ich\nĉ ax\n_de cor\nĠscreen Width\nĠSoph ia\nForg ot\n.un i\nĠVent ure\n_c ollision\nĠlaw maker\n( Edit\nbl ers\nĠget Next\nâĢĶ you\nMedia Player\nĠHor de\nĠCongress man\nobserv ations\nĉ property\nĠ< --\nCreated At\nuby te\nĠquar antine\nĠdist ressed\n_AP B\nĠGood man\nãĤ «\nĠrecom end\n_PRINT F\nD ONE\nBind able\nr strip\ncent aje\nĠUn expected\nĠS CHOOL\nĠProfession als\nĠGP Us\nLess on\nEx clusive\nĠatr av\nĠD ank\nĠLaw yers\nĠWal ton\n> []\nĠal oud\n=\"../../ ../\nĠdeb ating\nĠAV G\n_V OL\n/c gi\n.de g\n: g\n.Info f\nMeasure Spec\n.s ong\nmt ree\null s\nJ ordan\nĠC overs\nĠattrib utable\nĠjed is\niat rics\nĠrot terdam\nĠm eld\nĠContent Type\nĠmant le\nĠa lice\n_d uplicate\n/ Internal\nĠfile size\nĉf ire\nre se\nond ere\nĠfamiliar ity\nĠC rest\nĠk arma\nĠtor ino\nĠmes a\n/ temp\nĠch ir\nĠOver flow\nĠten emos\nun ik\nN EXT\nAl le\nĠn xt\nM art\nĠat l\nĠperiod o\n_y ou\nĠ} )).\nint estinal\n.Adapter View\nĠhes itant\nĠcompar atively\n.U Int\n(view Model\nĠsang at\nĠRes ponsive\nĠZ ack\nâ ħ\nJ AVA\nĠFull er\nĠâĿ ¤\n.Con sumer\nĠan k\nĠreact ors\nf uck\n_r at\nĠsession Factory\n_back ward\nĠscram bled\nĉ th\nĠins ensitive\nĠch amps\nĠng inx\nĠcon hec\nĠJ asper\n.f m\nStrict Equal\nach sen\n-N ov\nlass en\n.int egration\n(l bl\nCom pose\nĠF on\nÃ ļ\nGr atis\nĠL ime\nĠAdapter View\nĠpoison ed\nanch ors\nè®¾ è®¡\n'] ?>\"\nĠpro cur\nIt aly\n.MON TH\nĠL UA\nĠLith uania\nĠHe ads\n_CH UNK\nĠP USH\nAspect Ratio\nĠwe g\nĠv ids\nĠWe in\nĉ INT\nsession Id\nInd ustry\nĠden ounced\nJK LM\nĠVan essa\n.Id entifier\nprop ri\nĠÐ¸ Ð³\nĠtÃ© cn\nĠm osaic\nStream Reader\n- Th\nfor th\nĠadher ence\nb ate\nĠkn ights\ns ounds\nĠsal le\nOM ET\nãĤ¹ ãĥĪ\n-t m\nĠR he\n.File OutputStream\nåĪĨ ç±»\nĠEN G\nh oliday\nĠCong ratulations\n) (Ċ\nĠaggreg ates\nHO OK\new ire\nSen ator\nĠembed dings\nep y\n(C OM\nĠrob ber\nÃ¤ ter\nw ang\n_t eacher\nĠresent ment\nĠlett uce\ner reur\n( ic\nĠT actical\nĠContract s\nĠm Ã¦nd\nĠsit ios\nĠbast ante\nĠnue vos\nĉN drFc\nĠprivate Key\nuc ch\nMM dd\nĠè¾ĵ åĩº\numb a\n@ foreach\n:\" );ĊĊ\nĠslip pery\nĠKe ystone\nĠpione ering\n_tri angle\n(\" Ċ\nĉĉĉĉĉĉĉĉ ĠĠ\nĠInt ervention\nSC I\nĠc JSON\nĠtermin ating\në ¹Ħ\nĠbab ys\nSub set\nĠë ¡\nĠseu lement\nĠmue stra\nEnt re\nä»¥ ä¸Ĭ\nng o\n\" bytes\nQR ST\nĠy pos\nperson a\nĠDep loy\nce e\nĠ à®\n.go al\nĠhabit ats\nĠis Admin\nĠexplo iting\nĠvent il\nĠB alls\nØ§ Ø¨\nĠmind fulness\n(k wargs\nĠre sembling\nĠcho ir\nĠon BackPressed\nĠSEC URITY\n/g test\nĠjust ices\nĠinteger Value\nbl ah\nĠA im\n_final ize\nke h\nĠComplex ity\nĠaug ust\nget ElementsByTagName\nĠpre ach\nĠpron unciation\nĠTr ash\n-per cent\n_PR IV\nĠHun ts\nĠCur se\nu ellen\nĠheavy weight\nX i\nĉ selected\nĠMcC oy\nå¼Ĥ å¸¸\n| =Ċ\nĠBattle field\nItem Image\nĠdeduction s\nĠElement al\n() );//\nĠBur k\n}) čĊčĊ\nsw ift\n/ function\nUs ually\n_ St\n_fe ats\nĠIs Valid\nĠz ad\nImage Context\nĠclass name\nĠdon ner\nĠ-- >ĊĊĊ\nĠmotor cycles\n+' /'+\nĠset Background\n\\C MS\n.All ArgsConstructor\nĠLex ington\n.ex amples\nĠP urs\nPush Matrix\nĠ================================================= =============\n.add Target\npor a\nFull screen\nĠgo of\nh len\nÃ¤ ge\nĠC URL\nĠInterest ing\nĠretrie ves\n_O bj\nin ness\n---- -ĊĊ\n.t sv\n( IM\nĠBr aves\n_IS R\nost i\ná» ĵ\nĠEx terior\nĠCourt ney\nĠresid ues\nT ier\n.* ;čĊčĊ\n: black\nweb View\n\" path\nĠmas a\n] !='\nĠMatch ing\nd ur\nJ vm\n= context\n_R ING\nĠpro ponents\nĠQString Literal\nĠinfl ate\n< Float\nĠDon ovan\n( IO\nH ORT\nĠdisag reed\nisk y\nask ing\n_V EC\nH ASH\nĠmath s\nĠLast ly\nĠdepress ing\n. estado\nĠh alo\n_b le\nĠGab ri\n<T Result\nĠtro op\nĠen ums\nĠSER IAL\nnum erusform\nĠCh ic\n-ex ec\nĠback log\nĠBr avo\nPop Matrix\nĠBr ut\nĠblo que\nĠj unit\nĠWh ilst\nÑĨÐ¸ Ñı\nf ew\n¬ ģ\nĠVari ety\nĠPolit ico\nex emple\nUser Controller\nĠhard ened\nak ens\nĠSe eder\now ards\ncheck sum\nĠS ai\nVER TEX\nRes ponses\npl ode\n-h ard\nSpec ies\nRender Target\n_CH AT\nĠshow cases\nit imate\n_FORE ACH\n_CONFIG URATION\neb a\nĠEss entially\n(p oly\n- learning\nĠg Ã¥r\n_s ucc\n(M at\nĠco ils\nbr as\nĠam a\n_match ing\nind ustry\nĠNor ris\nĠEx posure\nĠperv asive\nĠde z\næĹ ı\nĠelectron ically\nDD R\nĠSt im\nĠÑĦÐ°Ð¹ Ð»Ð°\nĠmad re\nn emonic\nk ich\nĠFr agen\nĠR une\nĠon Touch\nĉs cale\nĠPharm ac\nĠMand atory\nĠSt o\nĠB ram\n_ Left\n_ST AR\n) }}\"\nsc iously\nÐµÐ· ÑĥÐ»ÑĮÑĤ\nç« Ļ\ngr avity\n+ C\n} <\nANG ES\nĠcontr action\nĠWall paper\n.F ace\nĠprÃ³ ximo\n.f ig\nl angle\nĠÐ¿ÐµÑĢ ÐµÐ¼\n_C REAT\nBas ically\nĠaw aits\nĠCHAR ACTER\nĠv pn\nH on\nĠev itar\nĠUnd o\nQ S\nĠEd mund\nĠmir acles\nĠTim ing\nĠVenez uel\n.S qrt\noid al\nĠerr s\n-------- ĊĊ\nĠDECL ARE\nĠvig orous\narg on\nĠaggreg ated\nĠSh arks\nĠCyr us\nĠrepr Ã©s\nmatch er\nĠgui Active\n? \")Ċ\nĠJ NI\n.char set\n' |\nĠgo ats\nind re\n.get Day\nĠpar ses\nĠIh ren\n__ .'/\nile ges\nn avigate\nĠBuff y\nPHP Unit\nĠmass a\nalt ar\n') ],Ċ\nĠoverse es\nĠ{ }čĊčĊ\nĠW LAN\nclip board\n_ Instance\nĠglad ly\n( series\nĠv ad\nĠget Page\n[ of\n.Int erval\nin us\nchar At\nole m\naint ing\n.A F\n_min or\n_ IL\n; y\nĠTele com\nĠP ond\nĠm map\n/ ^\nĠY ak\nĠRab bi\nen os\nĉ Context\n. vec\n( Attribute\nĠcategor ized\nĠdi abetic\n(r ank\nĠpa ÃŃses\nĠ@\" \";Ċ\nĠj ika\nars ity\nĠ/ (\n.H elp\n-b anner\nĠBy ron\nĠunreal istic\nĠ| _\nĠStop watch\nĠexem ptions\n/c ards\nĠto string\nng ine\nĠspraw ling\nĠl td\nĠUnder stand\nĠÑĤÐµÐº ÑģÑĤ\new itness\nĠcall Back\n- Year\nF uel\n= *\nĠinvent or\nĠbest selling\nĠhard ness\nĠT us\nĠkey note\nĠbe au\n_ab ort\nĠprop or\nĠcom erc\n_REF ER\nP as\nh aven\n-f ix\nCan onical\nĠlook out\nExpl orer\nĠcer co\n(s ensor\nĠJson Serializer\nĠv oksen\nĠbright est\nĠstab bing\n.B e\n.add Property\nĠHum ph\nĠis Authenticated\næ² ¡\nĠpo res\nĠj ego\nĠShow ing\nĠ?> \">čĊ\n_C OST\niline ar\nĠWork space\nĠsp el\nag ogue\nĠMillenn ium\nĠPop ulate\nĠn id\n.parse Color\nS olar\nĠG ad\nĠì¤ ĳ\nĠK amp\nĉr m\nĠben z\nĠHonest ly\nĠelectro de\nĠPra irie\nĠPRO FILE\nĠOri ental\nĠO LED\n/cop yleft\nawai i\n( products\n) \\<\n- created\n.Many ToMany\n\" How\nĠÐ²Ñĭ Ð¿\nĠmitochond rial\n_test ing\n( created\nĠget Field\n_E VAL\n]. \"\nĠF SM\nĠR ita\nĠåı Ĥæķ°\nĠc Ã´t\nĠIns ight\nĉm ysqli\n_tim ing\nID O\n)) )))Ċ\nCO VERY\n.im ag\nC DF\nl ust\nick t\n_F P\n. ','\ng cc\nĠkur z\n_p wm\nĠodp owied\nĠBar rier\n/************************************************************************ ***Ċ\np ak\n- Israel\nĠRut gers\nĠselected Item\nĠRam irez\nF arm\nĠcalend ars\ng zip\nĠblock buster\nĠPly mouth\nçľ Į\nres ponses\n.Dialog Interface\n-gr and\nĠget Source\nĠdej tings\nĠt ieten\nĠcondemn ation\nĠcontinu ar\n.Mock Mvc\n/ english\nĠMedia Player\ncom puted\nĠCl ippers\n(de legate\n.S lf\nĠë¡ ľ\nĠT ide\nĠih rem\nĠW an\nÑĥÑİ Ñī\n} ><\nDisc ussion\nĠw atts\n-min us\nĠJul iet\néĽ ħ\nĠcon cluding\nands cape\nĠÃºlt ima\nĠDER P\nĠsign Up\nĠSecond ly\nW AIT\nld s\n.callback s\n(h our\nim ators\nvol ent\nAA F\ned river\nĠMath ematic\n<T uple\nĠ/ >'\n{ j\n_AB ORT\nE ther\nĠeduc ator\nĠpreca ution\nĠfingert ips\nget Var\ncam atan\n-de bug\nĠR AF\n[ arg\nĠr aced\nĠts unami\n.f link\nĠgly c\nuk o\nĠM ultiply\nĠredistrib ution\nAG O\nĠR outine\nĠo pr\n(l ower\nĠFunk tion\n.d k\nĠe gt\n_B ASIC\nsys call\nĠL SD\nĠD uplicate\n_s ell\nĠerror Handler\n_ ips\nĠ erv\nann ie\n(resource Name\nĠbott led\nĠcraw ling\neg ment\n.set Tag\nĠr ss\nĠQu arry\n_ex act\n.j wt\nĠBo ards\nop i\nĠnas al\nĠX YZ\n. ud\nNor thern\nĠactiv ating\ned x\nov ah\nĠind x\nAlert Dialog\nĠt ienes\nann ya\n_p an\n( decimal\n.D ict\nĠsubsidi aries\nProduct Name\nF ew\nd ato\nod ied\n- under\nĠê² ĥ\nçīĪ æľ¬\nat ism\n[ Math\n.' <\n(in file\nĠden otes\n$ class\n_SEC URITY\nĠsew age\nmel on\n( Character\n/g ithub\nĠgl aring\n.G uid\n_s parse\nĠM argin\n_d ns\nĠme iner\nĠleft ist\nĉ loc\naby tes\nĠequip ments\nexp o\nĠSom erset\nE K\næį ¢\nĠlect urer\nĠmem iliki\næł ¸\nç´ ł\npr on\n: pointer\nb orrow\nĠProtect ive\n_c f\nĠÐķ ÑģÐ»Ð¸\nb pp\n';ĊĊ ĊĊ\natur ally\n_N AV\nĠpe ptide\n> d\nĠif stream\n_FACT ORY\n'); //\njo ined\nm ong\nĠtimes pec\nĠdest abil\nĠaut op\n-l imit\npublic ation\nĠD enn\n.M emory\n(s kb\nĠAna heim\n_RETURN TRANSFER\nou eur\n(_ ('\nleg t\nisting u\nĉ priv\nĠredirect s\nM t\nĠalle en\nĠPoint F\nĠo min\nĠc itt\nĠT age\nĠW alls\ná» ī\nĠoccup ying\nxB F\nr angle\nĠrel ational\n- org\nĠj pg\n- derived\nĠmal function\nĠB enson\n(s croll\nĠX D\nH oly\n(command s\nĠt ipping\nĠpr imitives\nĠsex le\nCall Check\nĠM ASTER\n_TE AM\n.setRequest Header\n_spec s\nĠser ge\n.M aster\nĠim s\n.Spring BootTest\npay pal\nĠW ANT\n.In st\nĠCar pet\nĠwrong ly\n($ ('.\nĠb ild\n.R oll\nĠU rb\n-c an\nãģı ãģłãģķãģĦ\nolib eral\n<!-- <\nâĢĶ for\nĠneg ate\n(n orm\na ec\n_s alary\nplaint ext\nodes k\nĠBos ch\nScient ists\nindex es\nĠmp z\nĠground water\n} });Ċ\nÐ°Ð»Ð¸ Ð·\nĠ ero\nĠpres cribe\nĠEx tr\n< ArrayList\nĠatroc ities\nAre as\nĠT Int\n( players\nĠd atab\nĠw ym\nãģ Ľ\nĠdu as\n_p ossible\nĠinstruction al\nition er\n/a udio\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĊ\nst ored\nOM PI\nĠapprent ices\nT enant\nĠC out\nĠcontrace ption\nLo an\n_vis ibility\n' ||\n.Parse Exception\nĠcoinc ide\n.get Window\nĠMart ial\n_t ls\n/ books\nĠoutr aged\nĠ(~ (\nstr str\nĠBox es\né ĥ½\nãĥ ¥\nRO I\nFunction al\nĠPro d\n< Test\nĠvide ot\nĠam ore\nab br\nĠMon ument\nĠrein forcement\nĠCo conut\n.send Status\n. ke\nĠLe ap\n_ articles\nP ie\nĠI rvine\nABCDEFG HI\nĠEx planation\ngroup By\nĠover he\nĠan Ã¡l\nĠclass ifiers\nĠMix er\n/color s\nĠUser Data\n_AR ROW\n_v lan\n.Create Directory\nĠH ak\nĠB ones\nĠApi Response\nĠMo ody\nD AC\nget c\nè¶ ħ\n.F ire\né £\nĠh itter\nf resh\nà¹ ģ\nĠChild hood\nx or\n- http\nĠM OR\n.send Keys\n_sh apes\nĠU ps\nĠAr rest\naz zi\n_op code\n.N ombre\nĠprÃ³ p\nĠz x\nĠtremend ously\nSp aces\ne cc\nĠvel vet\nĠmem oria\nĠL AP\n.Draw Line\nĠtarget Type\nre striction\nĠDR V\n[ top\n! âĢĻ\n/ chat\nĠson ic\nTor onto\now i\n.d ocs\nĠInitial ise\nĠ< !\n.t bl\n.Pre paredStatement\n/d om\n. rot\n_P ROM\nKeep ing\nĠh arga\nĠj orn\nĠident ifiable\n[ ip\nP ink\n_ Header\nÃ ĳ\nad le\nç½ĳ ç»ľ\nsequ ent\nActiv ated\ntm pl\nĠP all\nĠfat ally\n}} )Ċ\nPop over\nĠMcL aren\nChanged EventArgs\nĠForm ation\nN am\nnews letter\n.from String\n_ imm\nAPP ED\n, node\n(d et\nĠparalle ls\nĠlas ers\nĠch ocol\n/ port\naff en\n(d etails\nĠrep licated\nAs Stream\narm ac\n] ]=\nal ach\n_s essions\nAlgorithm Exception\nĠverb osity\n.Column Styles\n( USER\nĠsleep s\nĠaqu atic\n_b ulk\n=' ./\nourn Ã©e\nĠM SD\nĠB loc\nĠG le\nĠre pression\nĠent onces\nĉĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nY NC\n.Allow Get\nĠt urtles\nĠ' ~/\ness on\nĠD IE\nĠAqu a\nĠSE Q\n;;;;;;;; ;;;;;;;;\n.put s\nĠMA K\n(C ustomer\nĠdess erts\nĠemb ell\nĠtax ed\nåº Ĺ\nĠsch l\nres co\nĠF rog\nĠPending Intent\n_L ocal\n/ security\nĠR ox\nĠspo iled\n_WINDOW S\nJ ennifer\nĠdat i\nUn load\n.grid x\n(st age\ná» Ĺ\nSql Command\n.m x\nĠbl itz\nĠFort ress\nĠBrowser AnimationsModule\nw ine\nN SE\n-r anking\ny re\nĠlink age\nÃ¡ k\nĳ ľ\nats app\nĠC ycl\nĠec ology\nĠblat ant\nĠPer f\nĠXia omi\nĠDort mund\nresult Set\nĠgi Ãł\nĠfauc et\nĠDal ton\nĠfre es\nB UFF\n.par allel\nĠAst ros\nĠV ECTOR\nĠstand out\nÃ³ mo\nĠframe border\n_PARAM ETERS\nĠF alk\nĠD igit\nĠelectr Ã³nico\nĠv err\nUIAlert View\n(S ql\n- INF\n\")) );\n' 'Ċ\n(E FFECT\nĠZ um\n_D P\n) ];čĊ\nĠant enn\nĠabbrev iation\nĠse ismic\n_TRAN SL\nµ ľ\n.M illisecond\n, lat\nĠAn ch\n_M od\nAl right\ndd a\nĠÂ ¥\nUND LE\nĠÐ· Ð°Ð³\nĠsulf ur\nĠS ith\nĠNim bus\nĠEx amination\n_w ifi\n}` );ĊĊ\nĠsens ations\naf s\n_CL R\nĠinf initely\nĠsyst Ã¨me\n_font s\nImp act\nPower ed\nĠ< =>\n_ne ed\nDEC REF\nĠ// ////////////////////////////////////////////////////////////////////////\nĠRep o\nget Service\n$ n\n_p ct\nEr reur\nĠNGO s\nĠ* ĊĊĊ\n.at an\n_T MP\nĠcollaps ing\nĠsh o\n_P CI\n. oper\n( adj\nĠg iov\n> ).\nĠin contro\nard a\nĠap ex\nĠmed ida\nĠShe ikh\nĠArmen ia\nassoci ate\n-w ow\nĠTurn ing\nĠFre ud\nĠF ool\nĠL DS\n------- ĊĊ\nol son\n.F ILE\n_det ector\nD omin\nĠdeploy ments\nĠfare well\n(b ind\nĠnov ice\ntd own\nĠget Element\nĠvel it\nast han\nĉ channel\n_FRAME BUFFER\n.tr ailing\n.set Editable\n; ,\nĠID F\n_P B\nget Last\nĠCoast al\nĠHand y\nling er\nãģ§ ãĤĤ\nP ersistence\n.get Service\nĠÐ¾ Ðº\nĠnot withstanding\n(P R\nUM B\n'])) {čĊ\nembr ance\nex cerpt\na qu\n_b loc\nĠPro vision\nĠMc Don\nĠGold berg\nĠcomponentWill Unmount\nĠbase Path\n-f ired\nĠfoll ando\nĠT iles\n@end foreach\nENC IL\nĠBox ing\niqu er\nA chie\nEn ums\nBase Url\n(s can\nĠPass ive\nab ella\n/s n\n.n umericUpDown\nĠv ern\nlocal ized\nĠM iz\nĠresult List\n/v ue\nER VICE\n. od\nĠl ign\nĠString Tokenizer\nĠtr ag\nAcc ordion\nĠn oreferrer\nms corlib\nÃ¡t is\nby ter\nĠshow down\nĠsem aine\nĠ--> čĊčĊ\nĠMah m\n} \";ĊĊ\nĠd q\nĠPublish ers\nĠAm pl\nĠDani elle\nĠt ern\nèµ ·\nno ÅĽÄĩ\ne in\nĠAsync Storage\nun ger\nrou w\nĠsc issors\n/ assert\n.b ucket\n/ archive\n_M an\nĠint oler\nĠ() =>\nĠÐĴ Ñĭ\nĠsa i\n.x y\n.\" čĊ\nĠur inary\nes ub\nIST ICS\nĠÎ º\nĠcompl iments\nĠtypings Japgolly\nih ar\nExp ansion\nĠS erving\n_st udents\nĠX BOOLE\n( il\nĠì² ĺ\nĠj Ã³\n(t ol\n( JS\nĉC G\nĠD RAW\ntw ig\nĠo at\n_sm ooth\nĠC SL\nĠos ob\nĠens uing\nĠbank er\nĠBack pack\n_p ing\nĠwish list\n= ax\nĉĠĠĠ Ċ\nDis ney\nstead y\n\"> %\nĠproph ets\nĠZ X\nĠminimal ist\n.PL AIN\nSe attle\n. ordinal\nĠPI PE\nĠret orna\nĠjug ador\nĠB ret\nĠâĶ ľ\nĠpl ush\nUL ATOR\nSort ing\n.grid y\nect omy\n_ activ\nr ack\nInter active\nĠAntar ctica\nĠv engeance\nen so\n_k nown\nup plier\n.Mod ules\nĠConnection State\néļ ĲèĹı\n@ FindBy\nĠpl acer\n\\ model\n< ()>\n.is Successful\n-g ood\nb z\nĠDr aco\nAss istant\n-ex tra\nÐ°Ð± Ð»Ð¸ÑĨ\nĠhyp ocrisy\nĠt st\nĠA gr\n$ txt\nĠlog istic\nlic ensed\nĠH of\nĠt at\n( iv\nĠinto xic\npost Id\n_st rike\nĠhum iliation\npc odes\n\" sync\n(rec ipe\n+ N\nrent e\nĉ Client\nycop g\nĠZur ich\nĠPro files\nC ountries\nĠp ict\nĠroll out\nrequ encies\nĠpatch ed\nĠcar tridges\nĠsh ading\nJ ar\nĠsalv age\nĠTax es\nĠstand by\napor an\nE igen\n. angular\nĠN ested\näº «\nĠis Visible\nĠDw ight\n_BR ANCH\n.D elay\nĠk end\nĠfacilit ated\n.flat Map\nĠs anta\nĉS end\n/m essages\nĠof Type\nĉs wap\n# plt\nĠTur ks\nN ES\nĠprogress ively\nĠRes idence\nĠT REE\nĠno en\nd io\nĠn elle\nĠsog ar\nitt i\nweek ly\nĠambigu ity\n_Set tings\nW are\n.ne o\n_D ST\nĠæĸ ¹\npre p\nlob by\n@ email\n/m ovie\nĠfun kc\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nÂŃ s\nĠguard ians\n- pos\nĠconfig uring\nĠC PS\nĠDe us\nĠvidÃ© os\n_ empresa\nĠsl apped\n< Model\nĠunders cores\nU h\n.access Token\nSET S\nĠS parse\nĠCal d\n: path\nĠS ervers\n= batch\nĠkn itting\nĠx a\nĠsearch Bar\nĠsn ag\nĠinf used\n.b am\nle ver\nĠtax onomy\nÃ İ\nĠatt aching\nĠh ern\n_N OP\nClick able\n(P arse\nĠDynam o\n-b uilder\nĠdere g\nĠsc attering\nè¿Ľ è¡Į\nan zi\nĠShe pard\n\"> ',Ċ\n_X DECREF\nĠBuzz Feed\n_M ARGIN\nP LOY\n.sm all\nĠm imeType\nĠh olog\nĉc amera\nli as\nĠsusp ense\nody nam\nb au\nĠgrave yard\n_n amed\n\":\" '\nĠ******************************** ****************\nĠgame Over\nĠLENG TH\nĉs creen\nĠdo InBackground\n_depend encies\nĠr tc\n/ up\n_ ROM\nH all\nĠdef iciencies\n( te\n' #\n_e quiv\nĠpre order\nĠA xe\nÐ¾Ð¼ Ñĥ\n.send File\nĠfil t\nĠLim its\nĠCaval iers\n.dis count\nâĨ Ĳ\nĠW it\nQRST UV\nĠi j\nĠt egen\nĠ: \",\ndiff iculty\np unkt\nĠEmail s\nch lor\n(f un\n.U int\nĠSt all\n_ verified\nu D\nFile Type\nĠple asures\nĠjud iciary\nĠsh am\nip ur\n_PL US\noff ers\n( foo\n_G T\nĉc ore\nENT ION\nĠLib eration\nCommand Line\n_de partment\n.A r\n_ne ighbor\nĠSub mitted\nĠ<!-- [\nĠloc ating\n.M apper\n_st rength\n[ ...,\nĠJ al\n/ load\nĠbuff s\nĠmotor ists\nĉc s\nasc ending\nĠWhats app\nĠN ass\n_C OLUMNS\nLe on\np pe\nelt as\nĠt jejer\n_KEY WORD\nqual ification\nh ra\nĠridic ulously\n$ info\nFE ATURE\ndoes n\nĠK W\nĠEnumerable Stream\n_M AT\nĠStream Lazy\nĠscratch ing\n.t icket\nĠshort comings\nell ipsis\n= current\nĠcre st\nĠwh ore\nĠPet roleum\ncontext s\nĠæ Ń\n-p ython\n(json Object\nĠPr ism\nĠy acht\n· ¨\nflash data\nĠle icht\nĠMort on\nĠster ling\n_it r\n_ ud\nF aces\nĠh ires\nff a\n', {Ċ\n-c amera\n_RE ASON\nĠHel ena\nr ug\night ly\nĠper mutations\nĠTor ah\nĠæĺ¯ åĲ¦\nĉ record\nÃ Ģ\n.g mail\nFort unately\n(M od\nOcc urrences\nĠde preci\nĠvag uely\n/ Z\nV N\n.t p\n_g ener\nĠ{: ?}\",\nw ahl\nI KE\nĠLeg islation\nĠh inter\nĠad el\n(h igh\næıĲ äº¤\n/d omain\n.t iles\nĠTibet an\nĠSter eo\nĠfile Size\ngr upo\nia e\nSC P\nĠv ouchers\nĠPand ora\nĠdis may\nĠl Ã©g\nĠBehavior al\ncr an\nN ested\nac com\nĠN ah\nĠBalt ic\nĠDE ST\nĠkiss es\nV in\nĠprov oke\n_ Context\nĠweek days\nurg ence\nL ik\nĠpl aza\nĠb lev\nĠre aff\n_T itle\n(G tk\nĠc elle\n# ================================================================\nĠJ oomla\n\"> //\nMonth ly\n.to Double\n( entries\nĠN RF\n(g cf\nĠM iddleware\n}- {\n_H IDE\nĠlow ers\n(S elf\nåıĳ éĢģ\nĠis LoggedIn\nĠbiod iversity\nĠmus chi\n(c andidate\nĠAn si\nĉs m\n/ im\n+ ')\ncd c\nĠalg una\nĠsacrific ing\n/v endors\n/ API\nAd vertising\nĠGENER ATED\nĠDis orders\nĠSerial ization\nĠsav age\nĠé »\nĠIns ights\nĠre voke\nĠjur ors\ns uit\nĠCamp ing\n_pro fit\nb uch\n.A ctions\nĠIDE A\nol ulu\nL ikes\në²Ī íĺ¸\n.B LL\nv Ã¤\nĠcard i\nĠdisproportion ately\nĠins anity\n.e of\nĠPl atz\n.first name\nĠSl ash\n_C F\nj andro\nĠG auge\nĠS under\nĠB unny\n_ um\nèģĶ ç³»\nĠi Phones\nĠB IO\nĠk ho\nx FA\nĠFriend ship\nĠcalm ly\n_th r\n_An im\nĠrais on\n/ root\n.get ById\nĠSav annah\nĠInter pret\nkill er\nĉw g\n]) ]\nÑĥ ÐµÑĤ\nKey Value\n[ G\nst retch\n-play ing\n% ;čĊ\nĠpl ank\nĠpe ach\nĠD errick\nÐ´ÑĢ ÐµÑģ\nĠSh am\nAP PLICATION\n.progress Bar\nĠtransition ing\n_d rag\n.Request Body\n.M obile\nJ ones\n.Ph oto\nĠax le\nz ug\n/ options\n]] )ĊĊ\nĉ no\n[ href\nĠag regar\nĠService Exception\nning en\nDiff iculty\nBO OLEAN\nAdd s\n-h andler\nĠG at\nĠEb ony\náºŃ n\nb right\nĠcorps es\n.Checked Changed\nĠm ating\nĠHart ford\nĠz ou\nĠd udes\n_al g\nĠJul i\noc up\nĠÐ¿ ÑĢÐ°Ð²\nĠKat y\n_Internal Array\n.Column HeadersHeightSizeMode\nMethod Manager\nĠRed e\nĠlist Item\n.B ounds\nĠa venues\nĠC ognitive\nExt end\ntechn ical\nâĢ ļ\nsn ake\nFrom Class\nile ss\nĠ= {\nure tte\n/ thread\nF IELDS\nIV ING\nĠPOS IX\n_ ak\nĠ ../../../\nM p\nĠanonym ously\nTarget Exception\naff er\nany thing\n\" is\ngres o\nĠL ara\niz ados\nĠm ing\n.t a\n_th row\nR h\nĠsolid ity\nnah me\nich age\nĠm ound\nol io\nary a\nAS URE\nĠw ohl\nĠfurnish ings\n. sections\nĠap ologies\napi key\nĠS crew\nĠWars aw\n/ graph\nĠS ATA\nys es\n/ buttons\nÐµÐ½ Ð¾\nUG HT\nĠporn star\nP ictureBox\n_Text ure\nĠa Ã±\nĠn erd\n- connected\nĠouts iders\nĠoper atives\nab ble\n/ man\nĠple ad\n\\ Db\nĠCover ed\n= S\nĠFl ames\nï¿ ¥\n_t itles\nĠre tract\nĠcollabor ating\nĠbeh and\n.DataGridViewColumn HeadersHeightSizeMode\nĠlab ore\nĠtotal Price\nĠspo iler\nĠd ipped\n\")) {čĊ\n_S B\nĠLe i\nĠinclus o\nv ell\nĉ pl\nIn active\nĠUSS R\nond en\nĠrout ed\n. struct\nà «\nĠMal ik\nĠH EX\nĠC ust\n_PER CENT\n_ep isode\næĭ ī\nVER S\nĠcru ising\nBook mark\nâĢ¦ ĊĊĊĊ\ncheck Box\noufl age\nĠnon zero\nĠa prox\nĠPur due\nco on\nleg s\nĠLot tery\nSl f\nH AV\n> k\n> An\nĠsl ender\ns ched\nTele gram\nR ick\n_Str uct\n_B C\nĠcustom ary\nĠDam on\nurch ased\nĠk ob\nĠt ion\n(p rompt\nĠim b\nx CC\nĉ WebElement\nĠh emos\nà¦ °\nĠCN BC\nĠAL LOW\nç± ³\nĠEN C\n.scal atest\nĠT BD\nget Reference\nĠImport ed\nà¸ °\nĠi w\nol on\nm il\n:// ${\n.Man ifest\nĠl h\nĠitem List\n_ ads\nInspect able\nĠTo ledo\nĠDis aster\nUpdated At\n) '),\nĠP AN\nFile Chooser\nĠy uan\nit m\nĠÐµ Ð³Ð¾\nĠI bn\nH at\n_ ulong\nap l\nĠUr uguay\nÃ© ny\nĠCra igslist\ndo ch\nĠb ile\nĠprodu kt\nĠelectro ly\n.C ourse\nĠm q\nunct uation\n/ ****************\nu ju\nMM MM\n_LE G\nĠneut ron\nĠplur ality\nĠ++ $\nf oundation\n.Column Style\nĠHo over\n.A CT\nĠB raz\nlesson s\nfÃ¼ hr\nà¤ Ĥ\nĠClass ics\nra ig\nĠm h\nĠk ettle\nStr ike\nerd ale\nENT A\nĠTable Column\nĠSh ake\nĠW F\nĠL icensing\nua Ã§Ã£o\nĠsec ara\nĠnew Val\nSe leccion\nPref ab\nfight er\nLaunch ing\n' \";čĊ\n.l on\n.utc now\nĠH undreds\nest ead\nĠOver watch\n_A FTER\nĠrem nants\n). \\\nĠlobby ists\nĠunint ended\nĠë Ĳ\nys z\nĠlib ros\n-p ages\nINTER FACE\nĠdetermin istic\nĠUN IQUE\nĠett Ã¤\nSingle Node\nĉĉĉĉĉĉĉ čĊ\n-st at\nĠhash ing\n/ access\nt ell\nĉ username\nĠD atos\nBit Converter\n: host\nĠaltern ating\nĠâĢĭ âĢĭ\nĠwave form\n< Element\nĠC anton\nĠdest ac\nt ent\n.get Max\nĠst encil\nĠAc quisition\n.Generation Type\nĠM ER\n_c ombine\nĠ[ ].\n_BIT MAP\nld r\nĠcan v\nĠJ VM\np ars\nĠdown hill\nDetails Service\n( NAME\nĠre juven\n_with in\nAccess ory\nĠS Ã©\n/ inc\n\") ]ĊĊ\nPublic ation\n_ro i\nĠm obs\n.No ArgsConstructor\nĠevent os\n.v endor\n_SELECT OR\nÃ© fono\n=\" [\nĠla at\nĠbl urred\nĠBorder Side\nxFFFF FF\n_w ritten\nĠj ente\n/t iny\n.w p\n.style able\nĠCharg er\nĠbath ing\nĠP anda\nÃ© li\nĠpac iente\nĠgio chi\nĠView State\nc gi\n.log ical\nDonald Trump\n, copy\nem m\n_L ink\nĠinsign ificant\nff mpeg\n/p ay\n_qu it\nIO Device\nĠEx ists\nĠcook s\nj unction\nĠT XT\n( egt\nani u\n_part ner\nĠfac ult\nĠUn ified\n/s bin\nĠN eh\nĠKaz akhstan\npost code\nĠv egas\nĠsein em\n} ],\nt et\n-p ayment\nĠComment ary\nĠguid eline\n); $\nĠConsort ium\nç³» ç»Ł\nvis o\nĠBill ing\nici ar\nĠType Info\nĉ trans\n< Texture\nath om\nla ughs\nĠinter ceptions\n(E VENT\nFore cast\nTr ap\ntr x\nĠWh ites\nsub mitted\nal go\nĠtransport er\nound ary\nĠIn herits\nĠCon exion\n.client X\nĉ project\nheart beat\n- other\nĠ' ;čĊ\nÃ« r\norp ion\n(c ors\nĠE LECT\nĠP ere\nĠuse Memo\new riter\nĠsqu irt\n/ extensions\n/ as\n.CL IENT\nĠg ourmet\nĠauto Complete\nRE V\nĠbr aking\n_SE LECTION\nãĥ¡ ãĥ³ãĥĪ\n_l ife\n_g round\n_ ter\ns ns\nĠS PORT\nĴ áŀ\næ »\nUnique Id\nĠd rip\n_B ROWSER\n-m eter\nend ez\nĠexhaust ive\n(S K\nĠBurl ington\nwo ord\n(p ow\nĠsearch Text\nħ Į\nhe els\nst eller\n.s ig\nY OUR\n. ali\nĠData Column\nĠproject Name\n_f echa\nĠrefund s\nĠtop o\nĠCH ILD\nĠMar ble\nĠfor Cell\nĠp essim\nĠcris py\nifest yles\nĠover due\nolar ity\nĠamat Ã¸r\nM d\nP RESS\nĠins urer\nocr at\nĠfacilit ates\n/ čĊčĊ\nĠhurd les\n_H I\nLet ters\nmine craft\nax ter\ny k\nĠecon Ã³m\nĠÐ½Ð° Ñĩ\nĠSW ITCH\nCons ulta\nĠN ora\nCK ER\n_C T\n.app spot\nĠ// --\nĉ BOOST\n_c ourses\nĠwilling ly\në§ Į\nff d\nf iler\nĠMe asures\nĠle ases\nĠDor othy\n: ].\nsub scriptions\nĠcho is\nĠal an\nĠab rir\n.P opup\nEst imated\nĠPL AN\nàµ į\nĠEL F\nĠdist ancing\nĉ answer\nĠr ugs\nK i\náŁ Ĵáŀ\nG uild\nex tras\nc ps\nMock s\nĠtek st\n* g\n.request Focus\nĠalter ation\nĠC ategoria\nimm ers\nĠDrop box\nĠAdd r\nå¼ ķ\nde ps\n.Message Box\n! ,Ċ\n.get B\nĠmigr ated\nĠH obby\nĠM g\n.Vert ex\nĠforg iven\nĠDe V\nĠwer d\nĠArab ian\nĠSm oking\nĠstraw berry\nĠC MP\ndb l\nĠD HS\n- errors\n.p ag\nĠR NG\nĠsh ave\nĠtwe e\nĠassert Null\nĠD ensity\ndo jo\nain ment\nĠp j\n.Y EAR\nĠ* ));Ċ\nibr aries\nJ ets\nExec utive\n_d ense\n.get ContentPane\nch andle\nain a\n-re ference\nĠli ar\nĠHE ALTH\n[ test\n.is nan\nChar lie\nĠp upper\nĠk ir\n: hidden\nis Visible\nĠkom t\nĠacqu ainted\nĠDr uid\n(C s\n.last name\nDS A\nĠdiss olve\nç¼ĸ åı·\nVar ious\nĠD ex\n_ angles\n/ap imachinery\nĠexpl oding\n(Char Sequence\nĠHis pan\n++) {ĊĊ\n.Model Serializer\nQRSTUV WXYZ\nçĤ¹ åĩ»\n= settings\nà¥ ģ\nPC S\nĠIN TERNAL\nĠH UGE\nĠmicro scope\nis Admin\n\\ v\n.require NonNull\nÐ¾Ð» Ð¾Ð²\nicer ca\n_SE NT\nĠdep iction\nĠUser Control\nĠMem or\nĠAl location\nĠBed ford\nĠæĽ ´\nĠtor ment\naze era\n.T oday\nĠReg arding\n_EN C\n_R ANDOM\nLog Level\n= R\nĠGreen land\nĠstr ained\nĠmagn ets\nĠalert Controller\nĠCh ronic\n_register ed\nĠli j\nĠEntry Point\nĠReg iment\nuc id\nĠCould n\nĠAct ing\n_r ay\nĠn ab\n-se parated\nĠp nl\nCo ach\nAT YPE\nĠsup plementation\nac ers\nf leet\nInput Border\nĠStruct ural\nĠde ine\nĠbrew eries\nano i\nĠtransl ators\nĠeigen en\nĠd ances\nt am\nĠCo operation\n_request ed\nĠMag ical\nĉ LEFT\nĠ\" \"),Ċ\n+-+-+-+- +-+-+-+-\nĠNo ir\nĠEst imate\nĠThread Pool\nĠHe ck\nĠ'* .\nTur key\nĠsucceed ing\ndr ug\nv io\nĠp oner\nĠJ ad\nizz ly\nevery thing\nĠ{} ).\nĠInstit utes\nĠnu ovo\nĠinitWith Title\nĠlua L\nown ik\nĠth or\nĠk lar\nĠnot oriously\nĠd ong\nem ens\n_pro jection\n_G RE\n. eye\nĠwater ing\nĠT ik\no S\nĠStr anger\nĠĠ čĊčĊ\np aging\n_inter sect\nĠColon ial\nL isa\n.un link\nĠm ip\nan uts\nam azon\nĠID ENT\nst asy\nJ wt\n------+ ------+\nĠE VP\nContent Loaded\nĉB IT\n.parent s\nĠalloc ating\nĠG OLD\n}` ;ĊĊ\nAL AR\nĠprec isa\nDist inct\nse i\nĠsubpo ena\nĠp omp\nĠPol o\nco e\nv j\n.work flow\nest re\nĠconn exion\nim etype\n.Row Count\nĠD habi\nĠem its\n.Border Size\n(p olicy\n, message\nOn Init\n)( _\nĠfin er\n[ number\nĠscript ure\nRef lect\n-tool bar\n(P ATH\nĠEN TRY\n(... )Ċ\n-d omain\n(st rip\n)( *\nĠconvey ed\nĠattent ive\nÃ¨ ge\n_L D\nĠGr ants\n-high light\nĠbre thren\nÙĪ ÙĦ\nĠdequeueReusableCell WithIdentifier\nap ult\n.bottom Anchor\nĠop cion\nĠout File\nre ating\nd in\n_s ampler\nĉgl Enable\npt ype\n_CON DITION\n-eff icient\n& o\nĠj c\nÐ §\n/ Form\n) frame\nĠb inge\n_c losure\nIM A\n(next Props\nĉc d\nĠget Menu\nĠget SupportActionBar\nĠman ifold\nZ R\nch anger\nass ing\nd ish\nĠM ou\n.net flix\nĠpost code\nĠwom b\nĠAr s\nâĢ¦ )\nĠline Width\nDe al\nar as\nĠGr anted\nĠho ax\nĠdirection al\n.Key Char\nĠ= =\"\nĠVer de\n_K P\nĠsur rogate\nĠD UI\nupy ter\nĠp ense\nĠR AND\n(ex c\nĠmisunder stood\nĠC UT\nĠ ä¸Ń\nĉt i\n_in side\nĠbicy cles\nĠde an\ndirect ive\n. peer\nic ina\n_it ers\nĠimply ing\n.ob tain\nĠpsychiat rist\nuser Service\nel ivery\nĉp art\nĠhur ried\nĠb um\nĠhepat itis\nj id\n'] >;Ċ\nĠuncon ventional\nĠfasc ist\nĠP ey\nè¯ Ń\n') }</\n.Cl uster\nĠBit Converter\ned ata\nÎ¿ Ïħ\nâĶ Ĥ\nApp Bundle\n.http Client\nĠap o\nAIN S\nĠV F\n_g id\nĠo de\nERR Y\nĠRe ceipt\nĠC andle\nĠmission ary\nĠCr ane\nĠSTAT ES\nb out\nay aran\n... \",Ċ\nĠit inerary\n(l atitude\nĠCON S\n/s idebar\nSp ider\nGR ID\n.debug Line\nĠ` '\n-y ellow\nĠref inement\nĠMake up\nĠD ann\n();čĊ čĊčĊ\nĠover coming\nĠB atter\n/p ackages\nĠÐ² Ð¸Ð´\nĠar y\nâĢĿ ?\nrell as\nĠgrup os\nĠTyp ical\nĠMons anto\nInter section\nĠty re\n==== ==Ċ\nÎ ®\n; ;ĊĊ\nĠtr ivia\n_t aken\nĠsmugg ling\nĠnarrow ed\náº© m\nĠpal abra\nce a\npart icularly\nAccess Type\nĠco le\nTo Fit\nĠv ere\nĠC OS\n/v ideos\nĠ($ (\"#\nĠcr ane\n.has More\n$ path\niv ism\nĠsuperv isors\nĠFlo res\nprogram s\n.Z ip\nĠimpact ing\nĠm oto\nĠT J\npeg awai\n_K IND\n_inter faces\n/******************************** ********\nĠLe aving\nText Style\nbe iter\nĠWin ning\n- param\nG ary\nĠSun s\nal Ä±ÅŁ\ndu ck\nĠthread Idx\nĠpo ets\nĠple ading\nĠCorinth ians\nf cc\nawait er\n* -\nĠperse ver\nĠactiv idades\n_out line\n- plan\n.scroll View\nqu at\nĠs amsung\nĠlevel ing\nĠsplit ter\n_ge om\nĠpromin ently\nĠSe eds\nåľ Ł\nu ais\nef ully\nI Enumerable\nadd s\nvers ations\nĠdis ables\nAND ROID\nĠWe iter\n_Form at\n_s plits\nĠActive Support\n(c ss\n_m icro\nstri ke\nĠCa uses\nĠvis ibly\nCancel able\nĠY osh\nĠdr aining\nĠcol i\nas ley\nĠRespons ibilities\nĠS utton\n* this\nSh ares\n- graph\nĠenlarg ed\nR outine\nĠframe buffer\nĠair flow\nĠtr x\nĠLe igh\nĠK ens\n( heap\nĠsp illed\nSC ALL\nĠVel vet\nact ually\n_ENCOD ING\nĠW orm\n)) }Ċ\nĠDanger ous\nĠsuper intendent\n. look\nĠsh el\n/ fs\nS afety\nå® ĭ\n.DE FINE\n_f actors\nĠpart ido\nĠoptim izing\nDouble Click\n-com mercial\nĠlog ically\nc ych\nur ve\nÂ µ\nAIL Y\nĠreact ing\n_EX PR\nk Ã¶\n.localized Description\nĠast ounding\nĠpa stry\nĠgloss y\nĠbeh aves\n/ ec\nĠcl ipped\nĠprow ess\nĠU B\n/* ------------------------------------------------\nĉ alpha\nĠextrav ag\nĠfin ns\n(S ocket\nĠUn safe\nĠqui ere\n_enc oded\nolum bia\nĠz ab\nstrict ed\nĠm nie\nĠM OS\nĠath letics\nĠKend all\nĠìĺ ¤\nAV AILABLE\nino x\n_O PCODE\nĠItem Type\nĠcentr if\nĠinter state\n_ books\n.del ivery\nĠList e\nors i\n_sec ure\ng rowth\nĠv ente\nĠpsych ologists\nĠC CS\nud ence\nĠcraw ler\n/ manual\nĠtext Style\nĠpal indrome\nĠconduct s\ntab l\nWith URL\n/ right\nĠD ra\n.M ail\n( sec\no ftware\nĠse ul\nĠwrink les\n_F W\nA y\nĠEr nst\nun bind\nĠcomm end\n_h ooks\nĠMon etary\nĠQ Q\nunit OfWork\nĠEntity Type\nĠhorm onal\n.F AIL\n@ Slf\n/ channel\nson o\nD ans\n_ Register\nH an\nOR B\nJKLM NOP\nvent ed\nĠlong standing\nĠbg Color\nĠ; )\nĠRob bie\n(\" .\"\nĠa just\n.handle Click\nrat ings\npt er\nĠerot ico\nĠJ elly\n****** čĊ\n.Does NotExist\nĉ be\n$ temp\n\">& #\nçĽ ´\nĉP ublic\nĿ ì²´\nĠBuild ings\n-al one\n,' \\\nĠsw aps\nĠper plex\n_process ors\nĠÐ´ Ð²\nĠN YPD\nPC R\næ¯ ı\nĠho je\nEdit Mode\nĠvul gar\nĠver de\nĠ() =>{Ċ\n/ frontend\nĠtele fone\nĠlan tern\n.page X\nĠD ud\nlimit ations\nĠnot ifier\nĠMess aging\n! important\nĠsurge ons\n) =(\nFixed Size\n.Z oom\nin an\nĠcred s\nĠB UF\n. StackTrace\nĠwarrant ed\nĠsour cing\nĠcon na\n_F RE\nĠw oll\nĠref ining\n_ALLOW ED\n_m v\nĠW orce\nĠSin clair\nCheck sum\nĠunlock s\nĠMark down\nĠfish ermen\nD ub\nĠBon nie\nĠĠĠĠĠĠĠĠ ĉĊ\nĠver z\n>, </\n>< ![\n[' <{\nj ec\nĠE rg\nr ather\nĠpal abras\nĠPACK ET\nm ise\nda q\nĠOk tober\n(GL FW\nĠHen ri\nĠF ot\nĠDu o\nĠN ES\nĠs alsa\nĠun biased\n@Spring BootTest\nĠoff s\nåħ¬ åı¸\nĠamount ed\nFull Path\nĠqu at\nĠmaid en\nĠSub set\nĠApplication DbContext\nmir ror\nn ex\n.st reet\nset Query\n$ results\nader o\ngress or\n_b ug\nis ser\nĠS ears\nĠfill Color\n.m asks\nĠDi ablo\n_AND ROID\nÐŀ Ð±\nĠfreak ing\nĠrin se\n(p kt\nĠbook let\nĠsanction ed\nĠstream ed\ntab panel\nĠReturn ing\nPlain Text\nLOY EE\nales ce\nÐ¾Ðº Ð°\nĠF ixture\nass adors\nĠdis belief\nĠL ust\nĠradical s\n.F eatures\n_in ches\n( primary\nĠJ MenuItem\n_t ake\nĠCo ke\nUnit OfWork\nĠW CHAR\nĠcons cient\nonen umber\nP ING\nab ajo\n] (\"\n.s ales\n_h ere\nĠoffset X\ntag Name\nĠ ÙĬ\n_R ight\nil ig\nthe Value\noc ard\nĠconsult ancy\nĠb lij\ng orm\nN avigate\nÄ± c\nIllegal ArgumentException\n_ ve\n.CONT ENT\nurope an\n.r adio\nĠenvision ed\nĠS OM\n.s d\nANT ITY\nĠCALL BACK\nĠh g\ndec rypt\nç® ±\n\\ Queue\nĠMIL F\nĠrec urse\nĠD ante\n.g amma\nork s\n(\" \"))Ċ\nĠGr im\n.op eng\nĠMiche le\nAn aly\nĠPr u\n_redirect ed\n_p al\nf allback\nĠåŃ Ĺ\nĠdin ners\nGener ating\n$ \",\nhistor ic\nget SimpleName\nĠMill ions\n-g lobal\nr outing\nĠconsolid ate\nĠreco il\nObject OfType\nĠdesper ation\nAny where\nĠget Model\n_k ill\nob ook\n/d isplay\n\"/ >ĊĊ\nĠmay o\nĠÑģÐ¿Ð¸Ñģ Ð¾Ðº\nĠgoal ie\nx DF\nĠPre paration\nĠdepend able\n.IN VALID\n... '\nn atal\nmodule Name\ncar bon\nP AL\nĠme e\nĠc asing\né¡¹ çĽ®\nnic as\nĠH amm\nĠB abe\now ane\nĠsyn onym\nĠQ in\ni oc\nem otion\nĠfer mentation\nĠcum pl\nĠElectric ity\n( ROOT\ntest er\nĠHus band\nĠB au\n_MAC RO\naken ing\nĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĊ\n.f in\nĠConf idential\nie z\nMB ER\nĠsper ma\nĠHP V\ntx n\nCONT ACT\n.Th row\nĠm ural\nĠTw ist\n(& ___\nĠj d\nĠempower ment\nĠdist int\nĠbomb ings\nOut come\nĠshort en\nå¾ Į\nACC OUNT\n_cover age\nenc o\n_re fer\nset Message\nĠre perc\npt ides\nĠde ity\nuchs ia\n( ht\n.sub scription\nĠredistrib uted\nĠDyn asty\n_v c\n- framework\nry fall\nĠg ating\nĠLoren zo\nood oo\nĠdigest ion\nĠfoot ing\nĉ HashMap\nreal DonaldTrump\nĠap ache\n(val or\nĠpoison ous\n.Per mission\nĠparam ount\nwe it\nll and\nĠhypo theses\nĠP ry\nĠhom em\n( Device\nind ice\nev a\npres ence\nĠBent ley\nĠEnd ing\nĠdom est\nĉ tp\nĉ errors\ncor ner\nld a\nĊ ĉĉĉĉĊ\n_PER SON\nĠSerge y\nĠPars es\n-f iction\n.Background Color\nĠsom mes\nĠco olest\nĠrub ble\n.j obs\nĠd rowning\nador as\nĠw inger\nĠIncre asing\nÙĬ Ø©\nBB BB\n(R ole\nĠodd ly\nDev Express\n- util\nĠSh emale\npr imitive\nĠaff irmed\n.return Value\n-l ive\nĠAction Controller\nÃ« l\nercul osis\nĠpr akt\nĠge opol\np ics\nC DC\n.F l\n.s id\nrieb en\n(var s\n+ self\nĠinter iors\nĠAugust ine\n\": @\"\nĠSte alth\nĠget Color\nĠGent le\n~ \":\"\nĠwh im\n(' </\nĠS SE\nĠV iolet\n_c red\nĠat a\nĠAzerbai jan\nĠ? ????\n.e very\n( connect\nĠDr one\nĠtoler ant\nsub total\n_sh uffle\nustain ability\npre ferred\nĠS EX\nĠcongress man\nĠnam oro\nĠhonor able\nĠafter Each\nĠÅ¼ yc\nH AM\n.t om\nĠel ong\nĠSer ious\n-Semit ic\nÐ¡ ÑĤ\nĠfl am\nt ener\n.T EST\nĠTR ACK\nĠPhil ips\nĠA ren\nĠH icks\no ined\nĠF ah\nisse ur\nĠcircum cision\n(t weet\nĠpo il\nĠSe en\n_M APPING\nĠin variably\nĠF use\nĠ' ?'\n= password\nĠëĤ ĺ\nĠI Http\nst ype\nfit ness\n.T ags\nĠê° ľ\n(D WORD\nĠqu a\nĠMar vin\n\" M\n.is Authenticated\n.g uard\n) ?ĊĊ\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉĉĉĉĉ\nĠSh ips\nĠsens it\n};čĊ čĊčĊ\nah aha\nĠlie utenant\nĠJag uar\nĠ// --------------------------------\nU CE\nIn sp\naint er\n_p olygon\n.D own\nĠtext ured\n.set Action\nog r\nĠscientific ally\nĠshr ine\nĠcloud y\n.H our\nPost Back\nAZ Y\n_c andidates\n(S earch\nĠcommission ers\nĠB ien\nĠdoctor al\nĠFe eling\n_V ERTICAL\nĠB d\nng inx\nĠåľ ¨\n_arg v\nR SA\nĠel dest\n-he avy\nCON N\nĠHttp NotFound\n-column s\nĠNPC s\nĠcaf es\nĠg Ã©\nĠst alls\nĠfor ks\nĠp obl\nStream s\nĠbast ard\nĠR aptors\nĠGram my\nĠG eh\n_T ick\n(p reg\nĠlip stick\n_r u\n< H\nĠÄĳ i\n.C ar\nĠsp ared\nmon ic\nin ctions\nA frica\n(d ictionary\nĠ** )&\n`` `\n_press ure\nm ie\nĠRoman ian\n/m ark\nĠmaint enant\nĠt ren\nĠPost greSQL\nRE LEASE\nJ PEG\nĠded icate\nMake Range\nĠrobot ics\nakt iv\n%% %\na ar\nview Model\n(m ac\nuch er\nĠdeb en\nLocal ization\nÐ¾Ð·Ð²ÑĢÐ°Ñī Ð°ÐµÑĤ\n.set ToolTip\n.fast json\nĠper ennial\n-ch ief\nk ish\nĠatt ic\nSub title\nĠSl am\nĠLiter ary\nern es\nĠÑĤ Ð¾Ð»ÑĮÐºÐ¾\nĠstartActivity ForResult\n.Error Message\nbin ations\n\" L\nĠfor bid\nĠlod ged\n.List Box\nĠP SD\nĠcult ura\nUN CT\n\" One\nĠGu ill\nĠBatt alion\nĠcareg ivers\nĠK lo\nBeh ind\nĠsearch able\n_B OUND\nRO C\nĠst ereotype\nĠpre pend\ninter section\nB asket\n( lo\nĠfile Info\nĠUIS crollView\necess arily\nĠCh es\n-in stance\nĠapp art\nĠAm ar\nĠrow Data\nĠay uda\nĠcar avan\n_p ickle\nĠch aining\n) ];ĊĊ\nĠbox ed\nae per\nĠE VER\nyn thesis\n-f ast\nĠë° °\nåı¯ ä»¥\nĠvolunte ered\nĠex ig\nS IDE\nĠPhone Number\nula ire\nĠK ad\nĠd arn\nĠy ak\nĠB link\n.sp inner\nĠor deal\n_en emy\nĠget S\nĠBo o\nLine Number\n_LO OK\nEL COME\nĠse ams\nĠs agen\nisc losed\n(r ay\n[ group\nPT S\n.N avigate\nĠO wl\nĠdb us\nĠimp atient\nĠGu pta\n(object s\nĠapr il\n- qu\nĠou tras\nĠTHE M\nĠE MC\nEm pleado\nĠgr ub\nI AM\nĠven om\nĠtransc end\nĠvict orious\nĠM ayer\nĠÑĤ Ð¾Ð²Ð°ÑĢ\nĠKel ley\nInput Group\nĠref ill\nWith Type\nĠcha uff\nold em\n_t id\nĠflush ed\n\\ system\n.rand range\nĠPOS ITION\nĠTen ant\ncon version\ncall ing\n() )),Ċ\nÐ¾ Ð½Ð°\nĠsidew ays\nĠl ax\nĉ rep\naeper nick\nĠn eger\nĠFly ers\nĠ\"@ /\nup akan\n_el apsed\nt ube\nPos X\n.se x\nĠlÃ¤ sst\nĠGr ave\nåı Ĥ\n( emp\n(str tolower\ncon verter\nĠS ponsored\n( worker\nĠmat rimon\nCom mission\n(h w\n_SIGN ATURE\nm ek\nĠalgun as\n_ ET\nistr ing\nL v\nSl ides\nĠweak Self\nĠw k\nĠZ ig\nĠpub s\nĠB RA\nĠfluores cent\ncar ry\n. erb\nĠIn i\n.Draw String\nĠSE P\nut ters\nÙ ĳ\nR oyal\nĠc abbage\nĠS uk\n] >=\nĠEd ison\nĠspec ulated\n.down case\nĠt ph\nĠÃ ĥ\nĠgun shot\nr pm\nĠfl utter\nĠan x\naz es\nQ Object\nĠF avor\nĠmodule Name\n& s\nle h\n.We ight\nĠW AL\n_V ARS\nĠW asser\nĠout bound\nĠerfol gre\n.val or\n(l ight\nĠMagn us\nĠzo ek\ny h\nĠstyles heet\n> m\nWh itespace\nĠ[' /\nĉ Request\n_in crease\n-d istance\nic olor\nh ci\nĠK ING\nP X\no il\nem ing\nnam ents\nDef ines\nĠ[ --\nĠvar ios\nĠP RESS\n, axis\nĠColl ider\n) }ĊĊ\nĠforc ibly\nĠsta at\n_ST ANDARD\nĠocc ult\nĠbapt ism\nĠCunning ham\n_b uiltin\nCP F\n[max n\nĠR HS\nĠOn es\n(_ :\nĠin security\n.reg istration\nimpl ified\nĠSym posium\nh read\nĠqu elle\nĠfren zy\nCal ibri\nĠS PEED\nou i\n() ],Ċ\nacc ording\nĠm cc\nĠas iat\nĠadj acency\nĠA ble\nĠsal do\nnost i\nĠd ime\net ration\nĠMod ification\nĠHer b\nĠpla ats\nĠinter personal\nĠíĻ ķìĿ¸\narm e\nĠcom ercial\nĠB ates\n(c ards\n.get Client\n.N ORMAL\nĉ Test\nĠĠĠĠĠĠĠĠčĊ ĠĠĠĠĠĠĠĠčĊ\nĠR azor\nwe is\nITH UB\nĠENT ITY\nag it\nĠmine craft\npro posal\nĠsal ty\nand r\nĠCon clusion\nĠpr udent\nĠ[ @\nĠP uppet\nig on\nĠGoth am\nĠche ers\nĠSh ay\nĠj i\nĠG DK\nexp ert\nĠfun ky\nĠZ am\n[ NUM\nDe que\n_T WO\n\\ views\nĠproj ekt\nĠd rowned\nk ids\n.s heet\nĠn ond\nĠcour te\nĠ.. .ĊĊĊĊ\nĠpictures que\nĠtub ing\n(). \"\nj ets\n_P ublic\nĠF arr\nĠAr d\nOUR SE\nĠk adar\nĠProgram m\n.key word\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nied ades\nat ology\nĠD und\n= count\nĠslow down\n- \",\n.Fore groundColor\nRun s\n.Type Of\n$ current\nĠup scale\nĉ union\n(ch ip\num idity\n=[] čĊ\nĠh art\nĠ$_ [\nyn ec\n. Usuario\nĠoct ave\nĠportray al\nĠÐ½ Ð¾Ð¼ÐµÑĢ\nĠOccup y\n_n an\nĠSmart phone\nh ind\nĠwind shield\nĠlon eliness\n/ chart\nĠactiv ates\n. ribbon\nĠlag i\nĠpar ach\nHy per\ns caled\nT es\nĠBe et\nĠdis sect\nĠC ic\nĠ}, ĊĊĊ\n> ()ĊĊ\n.st udy\nĠcontrast ing\nZ ERO\nĠt una\nĠCh ow\n_v a\nf avor\n[ Index\nĠPower Shell\n(pro to\n')) :Ċ\n_form atter\nChrist opher\nOr Null\nC ISION\n_con sumer\nP aste\n(n ome\nent on\nĠunr avel\n_d on\nĠparen theses\nĠN UIT\n/ ]\nĠâĪ §\nst acles\n/ comment\nut ting\nĠslo ppy\n([ {\n.s av\nto Json\nĠë ¹Ħ\nĠPr att\n.mod ify\n.Is Checked\nĠv enez\nĠSET TINGS\nj aw\nĠfire store\nĠconsort ium\nĠk ab\nĠSupport ing\nĠTh esis\nĠnon linear\nĠtext box\n.\" \"\"\nĠE nerg\n.J OptionPane\nĠinter ruption\nÃ¨ tres\nĠsh ale\nĠPlay ed\nĠsoc iale\nYG ON\n_B ATCH\nĠtr imest\nĠPro cedures\nĠatt ends\n\" ${\neval uation\n.Progress Bar\nĠAlex andra\nch Ã©\n_SE QUENCE\nĠcro chet\nR os\nĠih nen\nĠ\" ***\nĠa rous\nĠmod ulus\n_L INUX\nStack Size\niation Exception\n.M utable\nĠ) [\nĠp ii\nf ifo\n_P ICK\nP urpose\n( Student\nĠN ico\nes z\n/s m\nĠP PP\n[ input\nåı ĺ\nĠbl asts\nĠMut ual\nrol ley\nĠutil iser\n: The\nåŁ º\n.dec oder\nĠobjet os\nĠawaken ing\nĠEn light\nĉ align\n_re write\n/c urrent\nĠdara uf\nC antidad\n, np\nĠveloc ities\nCL R\nĠmis information\nĠstream lined\nĠgroom ing\nĠa zi\nol g\nĠconstit uent\nĠwe e\nÑħÐ¾Ð´ Ð¸Ð¼\nĠAl onso\niet f\nct er\nĠther mostat\n(C C\nĠstack ing\n_con verter\nĠDisney land\nĉf iles\nIC I\n_TOP IC\nĉ Element\narg as\nĠ\\ @\nanco ck\nĠBase Entity\n(\" ---\nr brakk\nĠneg atives\nĠv w\n=f open\nchem ist\nArch ivo\nĠ` .\nĠF OUR\n( ai\nTable WidgetItem\n<? >>\n.p red\nTr ail\n-f actor\nĠImage Button\nper ia\nĠCelebr ation\n.Response Body\nurch ases\nĠget Key\nĠCr ab\nĠq i\nĠW ick\nĠch ast\nĠ.... ..\nĠcom enz\nĠsh ards\nĠdÃ© cor\nĠhal ves\nQU ENCY\nĠpower house\nL ING\nClass Loader\ncent re\n-s end\nm ah\nĠshredd ed\nĠT IFF\nink a\n.ĊĊ ĊĊĊ\nĠdesign ate\nĠNight mare\nĠGen etic\n_ch ance\n( animation\nqu ila\n_spec ies\nNE Y\no ystick\nrel lo\nÎ ¬\nĠdivis ive\nĠRE C\nĠst umble\n(f ake\nĠL ace\nant aged\nake st\nprom otion\nĠF owler\n= center\nĠCi udad\nR adi\nĠSleep ing\nut ron\nĠqu oi\nĠR AD\nĠexponent ially\nĠBre ed\nĠmon opol\nh ighest\nxml ns\nInt Ptr\nĠtut te\nĠRef riger\nĠ é¡µéĿ¢\nĠz onder\nl brakk\n; element\nĠH ed\nRel ations\në ħ\nCor reo\nåł ´\nĠMight y\nANG O\n_com pile\n.getC mp\nĠinv ade\n.spring boot\nĠT une\n_s nap\n_FE ED\nĠdec ipher\n= size\n_f re\nĠTill erson\nÐ¸ ÐºÐ°\nt ight\nĠcul prit\nRT L\nĠP are\n(p ub\neg ov\nĠp onto\nĠcons ul\nJS Import\nĠverw endet\nĠBo oster\nå¾ ħ\nĠcar rot\nver ige\n(L P\nĠwx T\nĠimproper ly\n\") :čĊ\nĠsu ce\n/ modal\nĠI CT\n. ).ĊĊ\n_m arks\nĠC ached\nĠCur riculum\nB s\nĉJ OptionPane\nĽ Ħ\nĠcogn ition\nĠNeg ot\n= result\n_F ont\nar ine\nĠcons pic\nĠCalc ulation\nĠCEO s\n- transparent\nĠBere ich\nç¨ĭ åºı\n.h y\n.Al ign\nĠhope less\nĠcol omb\nur bed\nĠS AX\nĠein z\n( zone\nĠm uzzle\nĠtres pass\nĠAbr ams\nĠcomp Ã©t\nĠSanct uary\nĠNST extAlignment\nĠst av\nĠprag matic\nst rength\nWith Options\n.b and\naph ael\nA ustralian\nĠO SError\nMan chester\nI de\n\\ Resource\nÐ¾Ð´ ÐµÑĢÐ¶\nĠz ie\nH arness\n.T ween\nc ams\nâľ Ķ\n-scal able\n- ok\nĠj long\nĠOl son\nĠO aks\n.s lim\nĠs ÅĤ\nĠnew Obj\n.In ventory\nĠk enn\nĠnight mares\nirc les\n. nt\ng ren\nĠT EN\nĠSc ots\nĠDis ability\n_man ifest\n.s idebar\nĠsh uffled\nĠhum ility\n.t ap\nĠGr ain\nnot iced\nï¼ī ãĢĤ\n_h pp\nĠd ilation\nĠhandic ap\nget Date\nĠdz iaÅĤ\n'). '</\nre cover\nys i\n( gray\nah kan\nĠinterfer ing\n_TO UCH\n_re duction\nAl ter\nĠc uc\nExp ert\nĠL ump\n[: ]\nĠre loc\nĠcon duc\nChar sets\n.list eners\n-in verse\nĠsum mons\nĠÃºn ico\nĠO V\nĠS icher\nĠJ Factory\n.get BoundingClientRect\nj h\nĠskeleton s\nĠAs ians\nĠAM C\nise lect\n.client Height\n(f r\nHas ForeignKey\n.rel ative\nĠØ ®\nĠmult icultural\n_C OLL\nĠmicro bial\nĠimportant es\nSp ain\nĠcyl inders\nien ie\n_OW NER\n(D IS\nĠf andom\n(n x\nĠaplic aciÃ³n\noc ator\ness ian\nĠCla ude\nĠint olerance\nÅĤ em\nĠSem antic\n.Middle Right\nARE ST\nĠsie ve\nÄ± ÄŁÄ±\nic able\nerg ic\nĠbatt led\nor bit\n)|| (\nue le\nĠfasc ination\nĠd Ã¥\nĠT ight\n_INC REF\n.Is Success\n, O\nĠst Ã¸r\nĠpress ured\n.TR UE\nĠTh ousand\nĠgeme ins\nĠz b\nĠspirit uality\nĠZe us\nĠPower ful\nb attery\nist es\nĠí ĥ\n.sh iro\nĠH ipp\ndecl type\n.j face\n.tem perature\nĠmar que\n_b ag\nAt ual\npr icing\nClear ly\n_A bstract\nÃ© k\nahr ungen\nIn str\nĉ ĊĊĊ\nĠchew ing\nĠCo aching\n$ LANG\nm allow\nĠserious ness\n_c utoff\nĠQuarter ly\n} ')ĊĊ\n\")) );ĊĊ\nè§ Ħ\n.Pos itive\n-p o\nx ito\n.R ad\nĠbr isk\nĠL ifecycle\næķ°æį® åºĵ\nf atal\nĠx pos\n.D etail\nen al\nM ATCH\nĠhe ed\nĠa frican\nD ados\nber apa\nĠh elf\n',' ',\nĠentrepreneur ship\nĠcert s\ne ce\n> r\n_f ixture\nĠpool ing\nĠmog elijk\nĠset Date\næĶ ¿\n-com plete\n_R ADIO\nĠk ul\nĠg ob\n_SL AVE\nĠfur ry\nĠNUIT KA\nIL ITIES\nĠno che\nĠc uff\nĠcontest ants\nĠW V\nĠpass ports\nĠ ÅĤ\nĠN ail\n_dec imal\nast le\nĠSold iers\nRec ipient\nĠcourse work\nĠ ime\nĠSe ats\n_D L\nĠconsult ations\n_AD V\nĠI kea\nĠof icial\nĠreg iment\nĠBath s\n-p in\n_B UCKET\nABCDEFGHI JKLMNOP\n\"] ));Ċ\n< Mesh\n\", {\nĠder ives\nâĢľ For\nĠYug osl\nis Enabled\nĠsoll ten\nĠpet itions\nover all\nĠget Total\n_H INT\nMin us\nĠanomal ies\nĠPick up\n== ='\nle itung\nĠD ek\nYS IS\n.s essions\nĠcar c\n_ Items\nĠintermitt ent\n.Json Property\nĠm Map\nĠK ak\nain contri\n_se ek\nĠun ame\n_put str\nF d\nL imited\ns now\nĠPav ilion\nĠEx act\nĠpost ings\nĉd ist\n<std lib\nL ights\nĠfil tro\nWork ers\nĠsys log\nGirl s\nĠG um\n_year s\n'} }Ċ\nĠh Ã¤t\ng ay\n(pro b\nell as\nĠw ilt\n.opt imize\n_D UMP\n(X ML\nĠDX GI\nĠmÃ© th\nIT IZE\nelect ron\n.c z\nĠsub sets\nĠres posta\nĠbe ad\nÂ» .\nĠO SC\n& page\ng ps\nan ian\nP urple\nĠac ronym\nROW N\nA udit\nĠcour ier\nal ie\nĠW ass\nĠaud its\nĠPO V\nĠFac ial\n_str cmp\nĠ+ %\nĠĠĠĠĠ ĊĊ\n` );ĊĊ\nEH ICLE\n[\" @\n-n ational\néĽħ é»ĳ\nè½¯ éĽħé»ĳ\n_c odigo\nĠun question\nilm ington\nrequest Code\nĠI W\n.str ategy\nĠSY MBOL\nĠgrÃ¶ ÃŁ\n_beh avior\nĠrefresh Token\nĠm ong\niment ary\nĠSh ops\n(' ?\n_high light\n_ lex\nĠillumin ated\nĠpal p\n- insert\nĠstr ives\nĠfor ts\nĠembod iments\nmp jes\n_TO O\nĠdrag gable\nĠimm ersion\np ins\nĠReg istr\nĠFree BSD\n_x lim\nĠTul sa\nSn ackbar\n/ date\nĠdav on\nĠaut orelease\nĠvac ations\nĉĉ Ġĉ\nice ps\nĠR amp\nĠC ynthia\n_pop ulation\n$$ $\nĠT AR\neng a\nĠp us\nĠå ¹\nĠt imestep\nL ifetime\nĠfil mer\nY ST\nĠGaz ette\nĠouts ider\nĠEX PORT\nGORITH M\n.f lex\nĠRoot s\n(p ixel\nzc ze\nair ie\nĠover loaded\nST RACT\nĠCour ier\nãģ ĸ\ncont inent\nF red\nĠs emp\nĠSt ella\nĠdoubt ful\nadmin s\nĠopt ing\nLO TS\nĠmanifest o\n-f older\n_drop out\nut ures\nÃŃ veis\nachie vement\nĠco y\nfa ith\n_HAL F\nirect ed\nĠcont ato\nSem aphore\nP si\nĠvital ity\nĠFlat Button\nItem Type\nĠimpe cc\nĠbu oy\nu in\nĠsky rocket\nĠSl ayer\nĠRC MP\nĠSe venth\n_ Interface\nĠfier c\nst ations\nĠG raf\nlic ed\nĠenumer ator\nCont ainers\nĠo i\nÃĩ ÃĥO\n- ton\nRE P\n(f low\n.co ord\nG ab\nĠMor ph\nĠZ oe\nĠhar bour\n.m essaging\n_option al\nĠBase Activity\nres enter\nĠn bytes\nĠcourage ous\n= !\n' It\nĠfor s\nĠcorrid ors\nĠBE EN\nĠf used\n= image\n.Grid View\nĠsem en\nig roup\nupt ime\nĠX B\næİĴ åºı\nĠintegr ates\n_O C\nĠbail out\nĠtest e\nĠoc up\nau led\n_ odd\npg a\nĠAS US\nĠT SR\nĠoccup ants\nSet Title\nS chedulers\nĠbe kommen\nB right\nĠMain Form\n_ ('\nFrom Array\nĠind ica\nH AND\nOr den\nĠTem per\n.status Text\npol itical\nĠPerc y\nãĢĤ ĊĊĊĊĊĊ\n.set X\nget List\nho les\nP ix\nĠouts ourcing\nĠmessage Id\nĠget Session\nĠV IR\nOf File\nĠSp atial\n.Float Field\n)( __\nĠSw imming\nAC LE\nĠsent ir\nĠplung ed\nĠau jourd\ngun akan\n(v olume\nĠcr ater\n.x ls\nÂĢÂ Ļ\nRender Window\n.user model\nĠfun ctor\nDom ains\ninter pre\nĠabnormal ities\narg ing\nDem ocrats\nĠpal ms\nâ łĢ\nÃ¸ d\n* A\nFrom Date\n| [\nĠAltern ate\nĠp udo\nĠcond ensed\n( plan\ndel iver\nĠbullet in\n'] ],\nĠcrÃ© er\n- ip\nW s\n\"\" \",Ċ\nĠi kea\nĠvis ite\nĠmult is\nResult ado\nĠPhotograph er\n... ',Ċ\nĠmigli ori\nĠThread s\nget Style\nera Ã§Ã£o\n<T Source\nĠG ing\n'] \",\nĠsign aled\nSuppress Lint\nĠd word\nĠHunting ton\nĠA AP\nANG LES\n.c redentials\nsw agger\n- console\n\" --\n.Text Input\nĠN ORTH\nĠnight ly\n.F ONT\nĠquot ient\nä¹ Ł\nĠsch Ã¶n\nĠPl anner\nĠread line\nĠconfront ing\n` }\nItem Count\nĉ active\nĠrÃ© pond\nel met\nĠg imm\n, nonatomic\nĠACT IVE\nhe ure\n/ Private\nĠme c\n.S ecret\nĠC IS\nÅĤ ug\n( period\nĠlleg ar\nur ia\nDes cribe\nĠpare ja\nĠV ed\n-effect s\nĠP arsing\n- resource\nĠab a\nĠ* ,Ċ\nĠan atom\nĠ(* )(\n-re al\nĠVent ures\nĠSh ields\nĠUnivers ities\nPRE SENT\nĠQ Latin\nÅ ¥\nĠW iley\nA aron\nĠracial ly\nĠNad u\nĠhttp Response\nÃŃt ica\nĠë° ©\nĠgr Ã¡tis\nä» ĭ\nom ap\nĠan on\nĉp op\nav atars\nĠsub paragraph\nd zi\nProject ile\nDT V\nlist ening\n_reg eneration\nĠSh elter\n< Vertex\n/ md\n( le\nĠv ak\nselected Index\n_ ]\nĠSyn thetic\napp Id\nĠF ired\nĠpam ph\n_lat ency\nin file\n(c riteria\nserial ization\nR CT\nĉ ev\nĠS CH\nĠOpt ical\nĠstir red\nĠP otion\neth ical\n:: {Ċ\nĠP enguins\nPH Y\nDec ision\nk art\nĠexport ers\nĠPoly ester\ncont res\nĠLaw son\nĠEmploy er\nĠs ass\nĠdownt ime\nĠbroker age\nĠRot ary\nĠW ahl\nW ARN\nĠset Active\ntem pl\nChe ers\n-sh ell\nF itness\nĠqu il\nĠclean ers\nĠç Ľ\nĠMil ano\n- associated\n}} },Ċ\nPF N\nĠon Page\n_stream s\nĠsculpt ures\nĠna iled\n= sc\né¦ĸ é¡µ\nÐ¸Ð¼ Ð²\nconn exion\nJ OB\nĠKar ma\nĠSwift UI\nĠDe z\n/ UI\nĠì Ļ\ngetClient Original\nĠpun ishing\nĠod ense\n, right\nener ative\nĠPro ble\nĠApp State\nĠdisc losures\nĠCan ter\ncom poser\nup aten\nĠsuccess ors\n\"> 'Ċ\nĠpres erves\n.op end\n_N ormal\n/ hr\nR anges\n, long\nĉĉĉĉ ĠĠĠĠĠĠĠĠĠĠĠ\nproduct os\nĠfly er\nĠGr upo\nNick name\nH ier\nĠDE A\nS prites\nĉm ask\n_res erved\n-sh op\n.not ifications\nĠdiv isible\nios k\nker ja\ning t\nĠFif ty\nĠaccount ant\nĠExpl oration\n_b roadcast\nĠextraordin arily\nĠk ot\nĠcircum ference\nrou ch\n[ Boolean\nc rawler\n/ remove\nare lla\nĠsex es\nH ints\nĠg amb\nĠd ared\ntest ed\n_ KEEP\nĠfiltr ation\nic key\nĠIn fluence\nĠspecific ity\n_ID S\nĠRod ney\n_IRQ Handler\nOn Error\nĠprev State\nie gel\nĠL ESS\nĠawake FromNib\nĠL U\num ably\nort ality\nĠmand ates\nĉ version\nĠparent Node\nĠp ests\nĠcas c\ncept ar\nĠWo ody\nere e\n_p f\n.P OS\nist ra\nle w\nY ang\nĠsystem d\nĠro am\n.G ray\nĠcon du\nâĢĶ including\nViol ation\nMah on\nĠM USIC\nĠSir i\nĠEnter ed\nĠcert ains\nel ah\nĉ Main\n.Date Field\n. Health\nĠKas ich\nĠcan ine\n= root\nudd le\n\\ common\nĠS ultan\nfin ancial\nĠQ Sql\nĠas cent\nĠpr ueba\nzie hung\n.get Error\nĠGl oria\nE cho\n_CHO ICES\n_ eps\n/pro vider\nPH ONE\nåħ³ éĹŃ\nĠcomprom ising\n_APP RO\nProcess Event\nĠbyte Array\nĠCr uc\nÂ ¨\nĠ icing\nĠPC M\nv ect\nA my\nĠVac uum\ninc ident\nĠus ern\nzb ek\n]+ )/\nĠ}} \"><\nĠGet Data\ncnt l\nĠsag t\n_PR IMARY\nĠl er\nĠF UCK\nĠSt arr\nI H\nÃ¶r per\ny ms\n]) ]Ċ\n/ tool\ncomb ination\nĠt amp\nĠBe it\nĠN IGHT\nĠann Ã©e\n( am\n\\ Traits\n: \\\"\nĠc arga\n. ide\nĠdik ke\nCom pet\nĠsco oter\nĠx Pos\n(int erp\nĠhas il\ncl id\nĠhe ures\ngl omer\nsh ares\nï¼Į ĊĊ\npon de\náº£ i\n_d uplicates\ns ongs\n} ];Ċ\nĠSn iper\nĠTh ur\nro pp\nĠgr ues\nĠo res\nush ima\nĠus ability\néĴ Ł\n/m ember\noldem ort\nIs Active\nGet Enumerator\nm ux\nWINDOW S\nNegative Button\nà¸ ³\n-m akers\nãĤ¤ ãĥ³\nĠB erm\nBy Example\nĠR Ã¼ck\nSh ows\ngh i\nĠIhr er\nĠCr ud\nch ef\n_a uc\nĠap Ã³s\nank an\nĠK DE\nIL LS\nĠangl ais\n- refresh\nĉr ange\nx mm\n( edges\nĠapp el\n\"; }\nĠed i\nĠsw ollen\nĠbut cher\nic ides\nh ound\nĠ^ (\nĠE valu\nĠkeyboard Type\nSS ID\nro bat\nĠn ik\nĠstraw berries\n\\ \"]\nn osis\nM ED\nç Ī\näº Ķ\nim ax\n\\ Annotation\nĠnur u\nĠMin imal\nĠword press\nĠc older\nĉ parse\n/st retch\næī §è¡Į\nrom osome\nD IM\nĠtent ative\n:NS UTF\n, img\nĠM ATERIAL\nĠJet Brains\nLegend ary\nĉstr ncpy\nĠdef s\nNumber FormatException\nĠbyte code\nĠw issen\n_M ORE\nłí ĥĿ\nĠC off\n.Cond ition\nĠdÃ© part\nds n\nĠparam etro\n\\ L\n.nano Time\nB OTTOM\n.W hat\në Ħ\nĠD ix\n_D A\n( Container\nay ar\nFlex ible\n.R aycast\nĠEd win\n[ url\nÂ Ĵ\n.stroke Style\nĠPol ynomial\nilit ating\nĠQ VBoxLayout\n(re p\n.v n\n- assets\nCH ASE\nĠEss entials\nj ylland\nĠax s\nĠT rem\n.main loop\nĠWINDOW S\n. REQUEST\nĠre int\nĠLib re\nche on\nĠgu err\nĉNdrFc Short\n.soft max\nĠAs us\n-s core\nĠJO HN\n> Status\n> Edit\nĠC ame\nĠAs he\n_ using\nĠL one\nĠles en\nĠrevers ing\nngr x\n.sign ature\n-Ass ad\n/n ative\n_r atings\nĠn ya\nĠad idas\n( optional\n\"] (\nĠrec urrence\nĠB MP\nÏ Į\n_g p\n\"> \\\n_w rong\nyp s\n.Pro xy\n_ UDP\nQt Core\nLinked In\nĠc avern\nĠsp Ã©cial\n_w ire\nĠnan op\n.b all\nĠredu cers\nĠm ailed\nd ong\nĠoppos es\nĠHans on\nĠS aturdays\nacom ment\n_Meta Data\nĠGal actic\n(\"/ \")\nĠClean er\n_T ERM\nĠcl aro\n. OUT\nå® ¡\nĠs lik\nĠjed nak\nHandler Context\nĠirr adi\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\n.t ight\nB readcrumb\nf rey\nĠê° Ŀì²´\nl brace\nLEG AL\n-g un\nĠBlog s\nĠShir ley\nĠP une\nurs ions\nĠsub traction\nĠ** *Ċ\narm acy\nĠsam t\n=\" ).\nĠper missible\n(r d\nĠW ATER\nĠprofes ional\nĠhand book\nĠmour ning\nare fa\nĠas n\nis ex\nĠcont enu\nĠUN C\n.get Price\nĠPump kin\n/ ĊĊĊ\nĠcos ine\nĠn ied\nĠBr ake\nData URL\nĠDataGridView CellStyle\nĠReturn ed\new ood\niqu Ã©\nĠble ak\nĠweb hook\n. They\nar b\nLANG ADM\n_order ed\nĠpr ank\n.New Request\nĠliter als\n' }>Ċ\nserial ized\nkt or\n(r x\nĠget Y\nĉString Buffer\n(s lice\nr brace\nement o\nĠl anc\nDep loyment\nĠconcentr ating\nSk etch\nĠbright ly\nBegin ning\nĠD ah\nT k\nIns ensitive\nĠs abe\n(M odule\nĠc edar\n_ continue\nĠwith Object\nĠcolumn a\nĠCal der\nĠÐ¿ Ð¾Ð¼\n_soft c\nsh aled\nert ation\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n:@ \"\"\nĠfa Ã§on\nust um\nst k\n_C RC\nod zi\nĠasc end\nfg ang\nĠpref ab\nĠfind et\n:' +\nåįķ ä½į\numbled ore\n.in validate\nĠto i\nangep icker\n_A I\nh il\nSe at\nĠpist on\nf ib\n_blue print\nãĤ ¸\n_ Record\nret s\nF ran\nĠC ait\nĠpel ic\nĠd na\nĠupdate Time\nĠ/ ^[\nĠrall ied\nĠH imal\nSS I\n_pl anes\nĠOut standing\nApplication Builder\nst ud\n_loc ator\nĠabol ition\nĠ($ )\njer ne\nĠA AC\n/w indows\n-C al\n_SE CONDS\nĠ'' }Ċ\nÃ¡ ny\nĠy ummy\næīĭæľº åı·\nĠV GA\nil ate\nĠSur veillance\nĉG tk\nðŁ ĺ\nĠsh immer\naltern ate\nFor Segue\nue stra\n- cover\nas l\nĠIn sets\nlij ah\n: S\nĉc ategory\nĠf j\nÃŃ lia\nĠM AD\n@ js\næ Ł\nĠp ooled\nĠtreat ies\nĠB ik\nĠHaz el\nAl locate\nĠair planes\nĠser mon\nĠPosition s\nĠM AIL\nSt opping\nav ored\n(T emp\nĠche ats\n.user ID\nĠput a\n- yyyy\nUi Thread\nĠof stream\n\\ Seeder\nĠC ottage\nĠ^ Ċ\nĠAL TER\nĠquant ify\nreib ung\nĠnecess ities\n.Local Date\nĠ æĹ¥\np ictures\nĠcr ud\næľ ¨\nĠdownt urn\nact oring\nĠD erm\nĠe struct\nĠMus ik\nĠml x\n.m ajor\n.Http Session\n? <\nye ah\nĠmo jo\nĠUnity Editor\nĠr ake\n_t weet\nĠradio Button\nĠDomin ion\nas String\no zy\nĠv odka\nog lob\nĠAl umni\nbal ances\n_man ual\n.load txt\n_f riends\nĠXml Document\n[ first\nKey Code\nĠpo etic\nmin a\nĠopc iones\næī ĵ\n_sup plier\n.From Result\n_d istrict\nĠG ala\n.q t\nĠcontract ual\na cons\n- anchor\nĠy up\nĠun answered\nĠmax len\nErr Msg\n-s n\nĠhyp not\n_W M\n() ][\nĠdes erving\now ment\n(R andom\nĠvet or\nĠI ST\nÐ°Ð½ Ð´\n-l ang\nĠs ik\ncre asing\nĠport als\nĠBulld ogs\nprom o\nĠprov oked\n] };Ċ\nĠI bid\nerg lass\n_W IFI\napp ropri\nĠredes igned\nĠ// ----------------\nz ik\n$ o\nult on\nĠRel atives\nĠmet ros\nĠment oring\nat Äĥ\nush man\nĠinher its\nĠR t\n/pre ferences\nim ed\nJO IN\n(inter face\nĠade pt\nĠOff ensive\nĠAG RE\non ian\n.p arsers\nĠpass phrase\nĠun serialize\nVis ited\nĠget Property\nĠn oc\ned ad\nĠ#- }ĊĊ\nvid a\ns olver\nĠMor ales\nĠkvin ne\nĠAcc ident\nĠve ut\nĠmis guided\nĠRevel ation\nĠrap ide\np unk\n# ----------------------------------------------------------------\nObject Id\nabin et\nextr acomment\nĠb unny\nĠDe ferred\nut ta\nua e\nb usters\nĠSo il\nG ST\n.Current Row\nãģ ĳ\nĠgrat uits\nĠcruis er\n× ĳ\nĠT enn\nj sc\nĠíķ Ħ\ndis posed\nAB OUT\n} ččĊ\nexp ired\nĠXml Node\nĠTatto o\nV otes\nF old\nEl izabeth\n_FILE NO\nĠcon co\nĠG dk\nop ies\n}} }\nQU OTE\n- II\nsp am\n- li\nĠcart a\n.layout s\nĠbes poke\nĠam ateurs\nĠcou leur\nit amin\nĠirres pective\nĠblack Color\n.y ahoo\nĠwe ary\nĠswe ets\n? \";Ċ\n=\\\" %\n_work space\nĠD iameter\nĠam d\nĠNe ue\nĠdb Name\nJer emy\nlog file\nat rib\nĠHttp Session\nĉ Create\nidd y\n.P ARAM\nĠf ian\nĠsz cz\nĠq real\n_ES CAPE\nusaha an\n.d igest\nĠget Parent\n.DropDown List\nĠth Ã©\nĠmonstr ous\nĠber hasil\n\"\"\" čĊčĊ\nSupported Content\nĠGather ing\ninc y\n.Key Code\nĠfet us\n.c ent\nĠbes onders\nnil ai\nLTR B\nĠh inge\nPRO P\n.f oundation\nnum er\n-r anked\nè į\nĠpain fully\nĠ(;; )\nform e\nL ady\n/app le\nĠCon stit\nĠstock ings\næ´ »\nĠment ors\n> Create\nĠInternal Enumerator\nĠtele vised\nToken Type\nĠb rib\ncreate View\n/ DTD\nGit Hub\n(b ig\nĠmÃ¡ ximo\nå¾® è½¯éĽħé»ĳ\n.c f\nĠÂłĠÂł ĠÂłĠÂł\n< typeof\nĠprogress ing\n.set Width\n(t v\nĠunfair ly\nĠAn ita\nary awan\nD al\nUR Y\nogene ity\nef a\n/**************************************************************** ****************\nĠde ja\nO SE\nr ail\nro of\n_qu otes\n< j\nãĤ ¨\n(set ting\nlevel name\n_hand ling\nÃ© ra\n$ j\nĠdar ling\n.Path Variable\n[ source\nMethod Name\nĠOut let\næĴ Ń\nĠC ocoa\nUb untu\nĠmoo ie\nĠfl orida\nĠre think\nĠget X\nget Element\nĠrad ix\nĠG amer\nde alloc\nleft Join\n_SY N\nGrid Layout\n\" go\n(e ach\nĉsc ene\nĠPy Err\nHow ard\n.S ignal\nĠT EM\nĠç §\nVENT ORY\nĠsim ul\nĠ<< -\nĠturb ines\nĠsur tout\nal to\nĠun ary\n` čĊ\nĠS cri\nĠMon k\nĠunfold ed\nCom position\nPP ER\nĠs iding\n', {'\nĠtre ff\n_UN ICODE\nĠdere cho\nĠpol arity\nĠor c\n< Document\n(t oday\n.)ĊĊ ĊĊ\nĠseem ing\n\\ V\n> ID\nĠfib onacci\n(m aterial\nFL ASH\ndirect ories\nest ers\nTE CTION\nwr apped\n-se lection\n- relative\n(ch r\nĠport folios\nĠshow Dialog\ningle ton\nĠT ICK\nĠInvest or\nĠbr av\nĠSV N\nĠhate ful\nri ps\nexp iry\n_c oin\n> ĊĊĊĊĊ\nĠmarginal ized\nĠexceed ingly\nnavbar SupportedContent\n( extension\nĠadvantage ous\n.M icrosoft\nĠens uite\n-v iol\n_d ue\nK H\nĠRom antic\nin and\nec i\nreport ed\nĠCor pus\nĠspan king\nĠCros by\n.F oundation\n\\ _\nĠann onces\nAttach ments\nà¸² à¸£\nĠW ax\nï¼ģ ï¼ģĊĊ\nĠsa iled\n.E uler\nĉs croll\nĠpeas ants\nĠBuild ers\n.G eneral\nARE A\nĠmess ing\nver n\nĠdi aper\nĠoccup ies\nĉ login\n.L OC\nig ans\nï¼ģ âĢĿ\n_f oot\n_t au\n-p ackages\nre cur\nAltern ative\nï¼ģ ãĢį\nar oo\nĠtrust ee\n,: ]\næĸ¹ å¼ı\n? >>\n.Min ute\nĠal can\nĠConcept s\nchild Nodes\nC ourt\nĠcell ar\nle k\nak is\nB ubble\nĠobject ed\nĠ ï»¿\n: ]:Ċ\n.parse Float\nĠsp arks\n-f ind\nvar iation\nH ack\nF ans\n_p arsed\nEntity Type\nau ce\n_t rees\nĠEg gs\nUI BarButtonItem\n_tax onomy\nĠSH OP\nTw enty\n_check s\nĠL X\nutsche in\n( platform\nĠaut opsy\nRequire ment\nĠRE CT\nto Contain\n',' %\n/ editor\nĠq b\nĠE EG\nht a\n_T ILE\n- sum\nĠAl buquerque\nĠshort code\nĠsin us\nĠdes ks\nĠpo op\n.opens ource\nĠC ollapse\n.d er\nĠh awk\nĠV anguard\nĠMar riott\n_T arget\nĠBan ana\n_att ention\nĠA riel\n_t en\nĠb aker\nâĢĶ he\nÄħ Å¼\nvelop ment\nEl f\n_g chandle\nRepublic ans\nĠitem Builder\nW on\n_acc um\nĠnew Password\nĠde void\nĠMark us\nda emon\n.Http Context\nK rist\nĠa alborg\n_tr ials\n( assert\nãģ£ ãģ¦\nb elt\nĠmild ly\nerv oir\nĠdesc endant\nĠGiov anni\nĠdecl type\n-Sh irt\nĠa pro\nAp plied\n.get Param\nh of\nur ar\nĠO BS\n_s er\n(se cret\n[ layer\nĠuseful ness\nĠK ou\n_sub mission\n_H ORIZONTAL\n, tmp\n/ .Ċ\nĠless en\n_w c\n_F INAL\nÐ½ Ð¾Ð¿\n.t odos\n.X Path\nĠI Data\nĠdoor step\nĠcom posing\nĠh ut\nĠV LAN\nĠout f\nè¯ ¥\n(b eta\n** */ĊĊ\nĠInd o\nĠk la\n_config ure\n.M ark\nose conds\n( Vertex\norgan isms\nĠf fm\nĠdemol ished\nĠ\" ---\nles i\nĠSid ney\n.get Index\n.Mon ad\nSelected Item\nĠNav Params\naz ole\nABCDEFGHIJKLMNOP QRSTUVWXYZ\n_sent ences\nĠincl ination\nĠF athers\naccount Id\nh ari\n) >Ċ\n/ raw\nĠ'' );ĊĊ\n+ l\n(c d\nĠun zip\nĠglam orous\n# \",\nĠn aw\nĠmin ib\nĠBr an\nN ach\n_t weets\nĠC CP\n% \"><\nĠSteph ens\nmas Ä±\n' es\nĠre par\n_doc uments\n.c losed\n-r ing\n/c ategories\nĠDeep Copy\nS UP\n.new axis\nĠg dy\nh oe\nĠRe ef\nĠpolit ic\nĠRequire ment\nĠsh eds\nse aled\nĠpath ology\n\"/ ><\nmod o\nĠstem ming\nĠtab oo\nĠS avior\nĠ}čĊčĊ čĊčĊ\n.c v\nĠjou eur\nĠCorn wall\nĠRe ception\nĠillum ination\nĠg db\nVE C\nod u\nContent Alignment\nstant ial\nbas eline\n_bus y\n/ ĊĊĊĊ\nĠplayer Id\næ £\n_p et\nĠMir acle\nure nt\nĠMer lin\nub en\nĠset Color\nĠdar kest\nst ery\nĠcar ic\nĠret ard\nĠHouse hold\nĠj al\nĠy p\n\",\" \");Ċ\nĠA cer\n[ W\nolk ien\nay o\nPrivate Key\nĠSTAT S\nĠÐ½ ÑĥÐ¶\n:' .$\nĠthank fully\nĠdistr ust\nget Default\n/ facebook\nĠCon rad\nĠutiliz ando\nĠK ag\n/ name\nĠb amb\n.From Seconds\nĠm util\nĠLag os\nĠBless ed\nil legal\nie i\n_T P\nĠmat lab\nĠcyc lic\nĠwith held\nĠhor ribly\n-h ours\n- Headers\nĠoverl aps\nĠcu atro\nĠequ itable\nĠcol ormap\nĠsh in\nĠSuit es\n_l ua\n( vo\n_RESULT S\nĠVik tor\nDown loading\nno ch\nM oon\nĠdecided ly\nãģĶ ãģĸ\n_R PC\nInter polator\nĠv ans\n{ T\n_sp awn\nĠEx xon\n_C all\nĠClass room\nĠser otonin\nĠDipl oma\nbed tls\nĠProt otype\n.exec ution\nĠdatings ide\nĠG oku\n_ rooms\nâĢĻ am\ngr af\nace ous\nĠaccommod ating\n}, '\n.d imension\nerror Msg\nĉm esh\nF illed\n.pre ference\nĠsm arty\n_c oupon\nĠÃ¶ ver\nĠcon ceive\nod on\nd ice\nTo Date\nad amente\n-m ask\nĠescal ating\nâĢ¦ )ĊĊ\nIn Range\n_E m\nĠutil iza\nĠle vy\n<! [\nĠJen ner\nĠRES OURCE\n_START ED\nĠvolley ball\nĠm ga\nĠRoss i\nCh ance\nĠEnd ed\n.un til\nĠknock out\n_ex e\nĠPres cription\nĠCOUNT Y\n.h r\niers hip\nER VE\né ©\nãģ§ ãģ¯\nĠper ÃŃ\nĠimg Url\nec x\nĠW yn\nĉ Returns\n_ eye\nĠA ging\nque ues\nĠåĪ Ŀå§ĭåĮĸ\n.Serial izedName\n.h ours\nĠis e\n.A ctor\næĿ¡ ä»¶\nap pl\nT an\n/c atalog\n/ Resources\nel an\n(' {{\nĠins n\nĠnode Name\nĠcook book\n','= ','\nROM E\n.tem plates\nec ure\n- keys\nĠgl Uniform\nĠge Ã§\nĠRec over\nID X\nĠKrist en\nĠpont os\n` ='$\narg ent\nĠarr anging\nè¨ĺ äºĭ\nĠer le\nened or\n() ));\nÃ¦k ke\nĠGil les\n\" }>Ċ\n.m ovies\n- selector\n. learn\nĠpot ency\nĠfin o\nĉb g\nĠle het\nĠl Ã¶\nĠer m\nĠas bestos\nĠdest e\nĠblock ade\nĠR OUND\nĠl name\nĠSepar ate\nÃ¤n ge\nĠf uzz\nĉ UN\n_n ome\n_link ed\nĠShare Point\nhaus en\nĠlo af\n-e conomic\nĠdid Finish\ny en\nĠbl asting\nĠWe ird\nIC LES\nĠG FX\nĠsuff ice\neb in\nĠappro ving\nĠRe yes\nĠRT AL\nig li\n_t ok\nord ova\nCar l\nĠPl ays\nloss en\npa ired\nAG MA\nwiÄħ z\nlink edin\nĠeg al\n(p redicate\nĠRESP ONSE\nĠmin X\nĠch ancellor\nĠRECE IVER\nĠasc ertain\nĠz er\nĠWorks heets\nN K\nĠvow el\nv ant\nUP S\nâĢľ .\nĠHay den\nĠSpart an\nright s\n.get In\nĠin land\nĠN ile\nĠTrans lator\nĠrect angles\nButton Type\nĠS olic\nĠragaz za\n/ tag\nĠirres ist\n# End\n****** *čĊ\nĠrestr ained\nĠch iropr\n/ Sh\n-fl ight\nconvert ed\nĠsk irts\n(ch ars\n$ view\nĠinput File\ng mail\n_DI AG\nĠnum el\nĠG ina\nell ungen\nĠtax a\nĠdri pping\n=\" \"/>Ċ\nĠborder ed\nĠtough ness\nlen ess\nĠB ieber\n_W AKE\n( et\nĠsant Ã©\nĠT EX\n_DIS CONNECT\nĠp ien\nĠFont Style\n_ UL\n-t otal\nw olf\nĠMar itime\nĠOPTION AL\n- rest\nĠmem buat\nĠB SON\n_sim ilarity\n. overlay\nĠpal ate\nĠBrid ges\nAnd Password\nĠCh avez\nhet to\n.offset Height\nĠundes irable\nĠapl ik\nĠ/> \\\n, to\nĠrem over\nĠModel ing\nĠpurch aser\nĠCho osing\nople ft\nĠmutable ListOf\nĠS istema\nĠI PL\nicker View\nHas ColumnType\nĠsob ie\nub ern\nĠal uno\nĠimagin ative\nĠInter ested\n() }</\nĠdiv ersion\n_tool tip\n.S ample\nĠFut ures\ncont enido\nĠE INVAL\n( encoded\nĠSha un\nĉp ayload\nde k\n> Your\nI so\nTr aversal\nic ie\n.c rop\nĠJ B\nING ER\nĠexempl ary\n_re lu\nann is\nÐµÐ·ÑĥÐ»ÑĮÑĤ Ð°ÑĤ\ncl ubs\nâĨ ĳ\nĠscram ble\nĠUn block\nĠd ors\nĠsh ack\nĠminim izing\nĠPass ing\nadd Element\ná» Ŀ\nĠroof s\nĠj class\ncord ova\nPos Y\n(C anvas\n(f in\n- loss\n.btn Close\ndocument ation\nĠR J\nam ong\nM os\nling en\nĠAg u\nol ynomial\n] <=\nĠdiffic ile\nĠWin ners\nå± ķ\nS tra\nĠcon greg\nĠEn ables\nĠSym ptoms\n_s g\nĠR iding\n_head s\nĠCos metic\nÃ® t\n.Single ton\nĠNicar agua\nĠ ĊĊĊĊĊ\nĠm ÃŃ\n'} ,čĊ\nĠBos nia\n> X\n//* [\nĠp iled\ncast ing\nĠgr Ã¢ce\nĠH elsinki\nG ro\n# af\nìĭ Ŀ\nĠsou ha\nĠInd ie\n_n ear\nĠimm obil\n.Ex cel\nĠradi ant\n_M B\nĠK eto\nvent ario\n_ag ents\nTableView Cell\nĠThe odore\n======== Ċ\n, list\n(s i\nicip ation\nART H\nset Display\n.F uture\nĠST ANDARD\nĠO ID\nĠf rowned\nĠMar ilyn\nol are\nP u\nĠsÃ©cur itÃ©\nRed ux\nSC O\nĉĉĉĉĉ ĠĠĠĠĠĠ\nr iv\np ert\nĠsoft max\nĠsen ate\n= email\nĠestim ating\nĉ td\nF uck\nĠWater loo\nĠmex ico\nNew ton\nS ab\n, âĢ¦ĊĊ\nĠcele stial\nĠQ Name\nĠget App\nN ie\n_p ci\nĠQPoint F\n_list a\n.N VarChar\nĠC oc\nK ar\nĠbust ed\niz ational\nour d\n_conn ector\nĠS eks\nÐ½ ÑĥÑİ\nÐ Ĥ\n/ List\n/ ic\n\\Framework Bundle\nux t\nĠhead phone\nEX TERN\n- reset\nĠGe ile\nĠtri ang\nĠAN N\nĠt ÃŃ\nĠS PA\nĠMaced onia\nĠcri ar\nĠclim bs\nĠS ON\nĠCrit ics\nĠd Ã³\n_S PLIT\nĠBound ary\n_ Insert\nC old\n.create Cell\n_s aida\n.BL UE\nBig Decimal\n( Bytes\nĉ State\n--- @\nView Set\nak ah\n_ Report\n-c ross\n.getCurrent User\nult ur\n( Fl\nĠIm ag\nCT est\nì ĥĿ\nĠst ag\nĠo zone\nĠk Ã©\nrep air\n) \");čĊ\nĠv ows\n.Al ter\nĠAl gebra\nĠA head\nget t\n.Inner Text\nĠZh eng\n.real path\nĠdistra ctions\n, event\nĠIN CLUDED\n.M atcher\n.sp otify\nĠcons id\n.M apping\nĠFo am\nĠN AND\nĠdev ant\n] \")]Ċ\nL aura\nĠs acked\n_x or\nĠreal ms\nĠRobot ics\n.Se ek\n.$ $\nĠR ibbon\nĉH RESULT\nĠCres cent\nE FR\nĠMed itation\n.get Z\nĠÐºÐ¾Ð¼ Ð¿\njson webtoken\n: ?\nf af\nV IOUS\nall ah\nĠpip ing\nĠmoder ne\npostal code\nĠlever aging\nĠCH IP\npc m\nma i\nĠi P\nAK ER\ndata GridView\n_de ps\n-d river\nL ie\ndisc ard\nyntax Exception\nĠe ct\nĠExhib it\nĠ( **\nĠë Ķ\nChange Event\nĠsuper markets\nĠsh m\nprof its\npill ar\nra ison\nW at\nĠpharm acies\nĠnr w\n// ================================================\nĉw orld\nStream ing\nD iamond\nĠEnum erator\nĠen quiry\n.l ambda\nb ek\nRO TO\nĠPdf P\nĠhist o\nĠget Child\n/stretch r\nĠAMA Z\nĠArgument OutOfRangeException\n\" user\nĠsan itation\nĠClo thes\n.n umpy\nf ec\nĠ ############\nÐµÐ¹ ÑģÑĤÐ²\n_l p\nĠaz ure\nX Path\nV ent\nL abor\nĠmistaken ly\nĠcon duit\nĠFair fax\nget StatusCode\nĠM oy\nList Adapter\nĠ( ?)\nGener ally\n.is Connected\nvid o\nMouse Button\nGeneration Strategy\n_der iv\nĠle kker\nMe asurement\n_CO OKIE\nĠ**************************************************************** ****************\nĠcompetit iveness\nĠgam le\nĠretros pect\nĠEdu ardo\nĠData Service\nĠescort ed\nĠQ ty\nH oliday\nĉ raw\nle urs\nB irthday\nĠhe ats\n.in verse\nĠ_ čĊ\nill um\nokable Call\n_m l\nL iked\nenumer ate\nFin ite\n- prop\nArea View\nĠmed iation\nĠchant ing\n_N T\n_ unc\nsm outh\nĠpig ment\nPassword Encoder\nĠv Ã©r\nĠwast ewater\n-P ack\nĠj oven\na es\nK Y\nP interest\nĠmus ica\nl aces\nĠW ich\n( rot\n( ir\nĠì ĤŃìłľ\nãģĿ ãĤĮ\n_T HE\nget File\n[ property\nĠend ings\nizz are\n= train\n-lo ving\nĠnou ve\nĠcomm as\nĠcamb i\nĠZus ammen\nĉ Ext\n( observer\nform ik\nĠqu indi\nĠIv ory\nĠBol ivia\nas ad\n_ legend\nC ities\n_F IRE\nas df\n.Dep th\nValue GenerationStrategy\nup d\n.Get Response\nĠurg ently\nIn variant\nGet X\nĠst ature\nĠimag ining\nate au\nMO VED\n( Transaction\n_p or\nRef Ptr\n.global Data\ngr ave\nimest eps\nfound land\nSal ir\nart ists\nĠcreate Action\nĠS anto\nĠÐ½ ÐµÑĤ\nĉĉĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n-s ong\nĠnuis ance\nĠimp over\n_ )čĊ\nĠcrow dfunding\nĠt imp\nP ictures\nĠlod ging\néĴ ®\natas ets\nãĥŃ ãĤ°\nperson s\ncon duct\nĠev ade\nĠha unting\nĠ!! }\nĠL ARGE\nĠk itten\nĠup hill\n(min utes\nĠE manuel\n' C\nĠSky walker\npur pose\n_m apper\nĠadapt ations\n.fill Text\nru k\nĠrep ertoire\n(p riority\n(m apped\nRob in\nĠerrone ous\nĠin hal\nBO VE\n(\", \")Ċ\nuel lement\nĠfinger prints\nĠPY THON\n-d em\nlean or\nzÄħ d\n\" People\nas ier\nĠpatri otic\n.f reeze\nI J\nĠB anco\nĠis Success\n( vehicle\n( Layout\nĠcar ving\n_c ipher\nĠvez es\n('_ ',\nĠFirst ly\nĠful lest\nĠList ening\n_sign als\new olf\nĠSC R\nĠM erry\n/test ify\n_SAN ITIZE\nio ctl\nIE EE\n= Math\nĠen qu\nĉa ux\nâĻ ¥\nĠdisp ersed\nh are\nber n\nĠAm end\nĠins iders\nĠAlv arez\nĠZ ug\n/c alendar\nĠhe ure\n-p aper\nĠso fort\nĠsm ith\nĠp ob\n(r ate\nĠsoci Ã©tÃ©\nĠw oes\nĠbrush ing\nq d\nolog ue\nsock ets\n_Y ES\n.add Column\nĠev asion\nSO FTWARE\nab ox\n.y lim\nĠeng ulf\n//////////////////////////////////////////////////////////////////////////// ///Ċ\nĠngOn Destroy\nĠn ossa\n.l st\n() }>Ċ\n.k wargs\nĠcontext o\nĠP UB\nF u\nĠbigot ry\nĠbr id\nĠster oid\nĠvigor ously\nĠburst ing\nĠv ene\nĠsal ads\nĠVARIABLE S\nĠO nc\nĠfire Event\ns andbox\nĠtouch screen\ns ans\n/ Instruction\nĠe of\nlect ure\n? -\n.local ization\nV ES\n_v oice\nit ura\n.report ing\nĠ] );\nN ova\n_COMP AT\nĠoutbreak s\n.client Width\nif lower\n_G RA\nInitial izing\n_per f\n() },\n= P\n_IM ETHOD\nĠtight ening\nĠtab Bar\nĠB K\nĉ Double\n/h ash\nĠme z\nTo Upper\nT G\n(ind ent\nĠsil ica\nĠ// ////\nÃ¶ k\nĠel ves\nem plates\n.Compare To\nĠgun fire\nanim als\nĠkep ada\nĠC PR\n_L SB\nĉ vertex\nĠÐ¿ÐµÑĢ Ð²\n, !\nĠd uly\n_P ATCH\nEN A\nĉ CC\ncom position\n_s v\nL bl\nje j\nÑģÑĤÑĢ Ð¾Ð¹\n.Edit Value\nåħ ·\nant as\nĠb readcrumb\nĠTest er\nĠMeasure ments\n/ Input\nĠR az\n_P OLL\nIndepend ent\n.l ucene\nĠMechan ics\ncol on\n.s urface\nĠun as\nr ado\nPLIC ATE\nC RT\n.set Default\n% H\nĠrespons able\nĠper pendicular\nĠRes pir\nĠTun isia\n\\ Array\nè·¯ å¾Ħ\nĠp aw\nĠdeb ounce\n(M PI\nĠØ¯ Ø±\nĠel k\nĠRelay Command\n/ light\n.serial ization\nBS ITE\n)(( ((\nĠB ios\n_s vg\n(s urface\nD uplicates\nĠ( >\n_A ST\n.n ick\n\" Why\nĠIntel lectual\nabbrev iation\near able\nĠconsegu ir\n( Be\n_P ods\n< Animator\n_UN DEFINED\nARR Y\nĠ// ~\nper ator\n.write FileSync\nAl s\nld er\nĠmie js\nĠfunc s\ninc ible\nĠdust y\nĠDr ill\nĠcontin ual\nĠElect ron\n.en emy\n(p b\nĠreun ited\nSm oke\n-f aced\nInt ensity\nĠTree Map\nĠArgument Error\n.write Head\nĠT RE\nSplit Options\n/ ******/Ċ\nĠ\\< ^\nĠInvest ments\nSUM ER\nĠd ac\nAN I\n.Yes No\n(of Size\ny th\nel oad\nĠimp res\nĠblo bs\n.re trieve\nĠtyr anny\nĠcancelButton Title\nĠh aci\nĠCas inos\nĠd he\nR etail\nĠPorn hub\nĠCr imes\nO il\n(IS ervice\nRes izable\nĉ So\nO ften\nĠcommon place\n_G C\nald i\nath lon\n(View Group\n(E mployee\nĠsafeg uards\néĢĢ åĩº\n_A URA\nĠun noticed\nĠTh orn\nmode le\nĠac ordo\nĠW enger\nim us\nens burg\nomb a\nc iÃ³n\n\" http\n_M atrix\n|| ||\norn ecedor\nĉBuffer edReader\nreg isters\nre leased\nĠadd Observer\nĠVal ent\n(C ultureInfo\nĠman nen\nĠburgl ary\n_min ute\nĠinter ceptor\nocr ates\natt ro\nĠY E\ness ler\nlist eners\n/p rom\nĠç ¤\ntouch es\nE sp\nĠAb ort\nĠf fi\nĠcl ums\nN IL\n_V IRTUAL\nĠlo in\nynom ials\nĠ× ľ\nĠg z\nĠNe on\nIS IS\namer ate\n_av ail\nĠmax i\nĠis Array\nColumn Info\niz in\nĠpers o\nĠ oud\nial ized\nym i\nĠconfident ly\n=\"/ \">Ċ\n.datas ource\nĠpay check\nĠB av\n/ Branch\nĠT ear\nĠmer upakan\nĠBra h\nĠÐºÐ¾Ð½ ÑĤ\nï Ĥ\n, path\nĠdazz ling\nĠU CHAR\nĠprovision al\nÐ¿ Ð¿\nĠlegal ized\n_al go\n_R SA\naltern ative\nĠDET AILS\nTo Do\nref lection\n_W EEK\nĠC LEAN\nĠslog ans\nĠëĵ ±\nĠVeter inary\nid f\n.dateTime Picker\nicont rol\n( play\nĠull am\nĠ' )čĊ\nĠche que\nå®ĭ ä½ĵ\nĠunser em\nĠArchitect s\nament als\nĠv max\nĠj emand\nCE ED\nĠOliv ier\nse verity\nR K\nDis connected\nĠweapon ry\nui Ã§Ã£o\nĠb ingo\nd ont\n_CHANNEL S\nĠD ag\nĠd Ã¤r\nÃ©ri que\ngrad able\nĠCOMP LETE\nĠspan ish\nĠinstrument ation\nvas ive\nD RAW\nĠf puts\nĠSp end\nĠRes pect\nCour tesy\nĠs cho\nĠpost age\nĠMe adows\nĠtutor ing\nerv o\nAbs olutely\nÃ¡nd ez\n½Ķ ëĵľ\nĠSH R\nph oon\nĠDep os\n=' 'Ċ\nĠphys iology\n* time\nĠT ough\nd ock\n/ he\n(H ave\nĠMo ines\nST YPE\nĠB ride\nĠstr on\nĠworld view\nĠgratuit o\nĠaeros pace\nĠIh rem\nĠq c\nĠmanifest ations\nsla ught\n< Account\nĠInf os\namb il\n_F inal\nĠadministr ations\nĠcollabor ated\n.j desktop\nol uciÃ³n\nas ctime\n_alloc ate\narr ival\nJ OR\nĠsh ady\nĠpine apple\nãĤ ı\nĠsat in\nbr ero\nĠL ies\nĠtens ors\nĠInt elligent\n.SelectedIndex Changed\nĠradi ator\nass istant\n$ fields\nĉ step\nĠMit gli\nĠEver ett\nĠS cheduled\nH ora\n\"] ->\nĠm ots\nĠD ST\nfont Name\nĠWar wick\n_T ask\n* C\nãĥ §\nob el\n_DE T\nĠsoci ology\nĠKat z\nic ions\not land\nado o\n_p ars\nĠr ipping\nich o\nĠnutrit ious\nĉd amage\nK y\nĠanch ored\nĠartificial ly\nĠJu ventus\n/per l\nĠexpress ive\nx EE\nĠEnum eration\n.M ESSAGE\n(de g\nå¿ Ĺ\n#### ##\nĠ\"\" ),\nkl Ã¤r\n\\M ail\nDes igned\nĠstaff er\nĠsal ts\n***** čĊ\nĠâ ģ\nĠsetTitle Color\nD VD\n.Write All\nell ant\nĠcoerc ion\nĠSort ing\nè¨ Ģ\nĠstar vation\n// {{\n. heap\nĠMed ieval\nĠ* ----------------------------------------------------------------\nï¼ĳ ï¼Ĳ\nĠw ards\nĠH erc\nĠHog warts\n-com ments\nĠLaud erdale\næ ¼\nĠr ift\nĠze it\nĠproof s\n.view port\n$ start\nĠB ought\n.r ichTextBox\nĠcl ing\nĠ' **\nOwners hip\nĠBoeh ner\n(d ynamic\nĠmed ically\nĠW TF\nĠMain Menu\nè´ Ń\nĠdifer ente\n/ results\nent hal\nĠWidget s\nr ush\nĠR MS\nĠVol ley\nĠremoveFrom Superview\nĠLaf ayette\nĠFetch Type\nac as\nĠpath ogens\nĠM MO\n.C urrency\noc ious\nĠsprite Batch\nd oll\nĠvamp ires\nlaunch er\nĠpe aked\nĠdeb unk\nĠA SD\nĠune qual\nĠsqu ads\n}. ${\nman i\n\" E\nĠF ahr\nĠIS I\nĠun avoid\noph one\n[: ]Ċ\nĠDirect ed\nĠbush es\n.f ailure\nĠimm ersed\nex o\nH istogram\nĠK ann\nĠpir acy\nĠCr unch\nĠl Ã¦\n// \"\nĠmon ot\nĠSa unders\nĠSe vent\n(A bstract\nĠsm oker\nr one\n.client Y\nĠ\"- \",\nĠF ountain\nĠin ne\nìĥ ī\nC tr\n$ input\nPRO FILE\nĠDon ation\nWith Email\nĠfract ures\nK eeper\nĠmeis jes\nĠarchitect ures\nĠL ung\n' image\nhar ma\nĠabandon ing\nAL LED\nsub type\nre ira\nĠm oss\nĠPar sons\naked own\n= obj\nĠsu cess\nĠwear able\nãĤ §\nĠadult i\n. um\nĠvibr ations\nĠsw ell\nĠDisc losure\nĠR DD\np airs\nang gan\nĠmain Bundle\nĠD IN\nĠrock ed\nshould Be\n.g b\nĠI MD\nĠW N\n, arg\nâĢ¦âĢ¦âĢ¦âĢ¦ âĢ¦âĢ¦âĢ¦âĢ¦\n[] =$\n.S M\nĠalg uns\nadd ons\n_Com mon\n_REF RESH\nĠÙģ ÙĬ\nĠTY PO\nĠEc ology\nĠgl u\n.Data Type\nĠPro be\nL ux\now ego\nĠre k\nĠPlaint iff\nach able\n.n ama\n* out\n}} {{\nĠCAP ITAL\nä½ Ĩ\nImport er\n.create Server\n_res olve\n_E PS\nst ellar\n_Pro file\nĉs w\n-m on\nude v\n\\ Plugin\n_M IX\nĠDisc rim\n.from LTRB\nĠStr and\nAny thing\np owers\n]] čĊ\n.T IM\nĠadd slashes\nĠes i\n@ Before\nĠs ak\nĠ'/ ';Ċ\nc oc\nÅŁ Ä±\nĠ ));čĊ\n_ab ove\nĠE CC\n/c pu\nĠc ade\n.Std err\nĠpel lets\nĠPal in\nĠg Ã©n\n_j ava\nĠsal ah\nĠberg en\n_SW AP\nĠg ib\ni Ã£o\n_dist ances\nĠC inder\nĠanarch ist\nim at\nĉm ock\nãģĹ ãģ¾ãģĻ\nO mega\nĠbah wa\n_P arse\n.p aper\nĉ Intent\nren s\n/ grid\nĠfil thy\n.e v\n#### #Ċ\nĠs are\nĠso aking\nĠReg ions\n_U SED\nĠS ik\nifik asi\nĉ Editor\nL uck\nĠìĹ °\nÄĥ m\n.\" ;\nĠZ iel\nĠgr ayscale\n(F unc\nãĥ ģ\n.D ense\n- leaning\nĠgrace ful\nGraph Node\n_COMM IT\nĠCV S\nĠpl ains\nĠre j\npc iones\nĠundermin ing\n_c ats\nfe b\nCollection View\nSE MB\nĠth u\ntext box\n( Android\nĠrig or\nĠY ield\n.is Playing\n: view\nremain der\nĠP ip\n) index\nĠBe cker\nto Locale\naut orelease\nĠRom ero\n.Hand led\nĠCabin ets\n) V\nĠr te\nĠH ulu\nici el\n/ animations\nĠpres ume\n.trans parent\nĠsub menu\nq m\niert en\nĠtext Size\nĠstar ving\n/j ob\nAp ache\nĠyield ing\n- article\n'=> $_\nĠè ¡\n<Sprite Renderer\nĠSh ia\n): (\nĠpub li\nzie j\nĠte lesc\nĠte il\nLeg acy\nĠPl acement\n()) {\nĠtroubles ome\næĺ Ł\nĠpers Ã¶n\n_A spNet\n= }\n(user ID\nS us\nãĤ º\n- average\nĠQ Image\n.Str ict\nte borg\n- functions\nREG ION\n> New\n_ choose\n(c i\nĠunle ash\nĠRIGHT S\nĠS pear\nĉm ake\nĠt ys\nanel a\nĠW X\n_M AKE\n/ setup\nĠon Save\nĠclin icians\nĉ back\n.Link ed\nĠcon serve\nĠb itten\n_var iance\nĠl ire\nĠin ertia\nuff les\n_M PI\nidd les\n[ arr\n.v ocab\nĠsh itty\nĠn este\nss ize\nĠK T\nb ler\n_l inux\nĠm ongodb\nĠITE MS\nK on\nĠBur st\n_ph otos\nColor ado\nĠacknowled gment\nĠo ily\nĠn fs\nĠZion ist\nĠadd icts\nĠadd User\nĠM ish\nĠk W\nĠW ants\n(rec ords\noc urrency\nJ SGlobal\n.el apsed\nĠN b\nĠp pt\n\\ Dependency\nR ol\nĠÃ§ alÄ±ÅŁ\nĠexpans ions\nb ubble\nĠmid term\nĠ'# {\nct xt\nIS yntaxException\nĠVal le\nĠCad illac\nĠ\"\" },Ċ\nĠsem ua\nrich Text\nsoft max\nobj PHPExcel\n.h stack\n_c ritical\n( <?\nd j\nĠcon son\nĠroom Id\nDOM ContentLoaded\npar ms\nĠze igt\nT PL\n-not ch\nĠopp ressive\nC oding\nĠLe aves\n(D isplay\n.sign In\n// --\nĠO pr\nct a\nĠmet av\nSerial ized\nĠun affected\nĠAT L\nĠK P\nAtl antic\n, url\n, state\nĠb ist\nen eg\nĠsimpl istic\nĠbid der\nĠper cept\nĠcel ib\nĠTH ROW\n(/ [\nT cp\nĠfurther more\n.A cc\nopp able\nä¸ ¤\nĠT art\nĠBen z\nĠembod ied\n( Const\nĠ+ -\nPart icipants\nĠhttp Request\nac cent\nĠS Ã¼\nĠhorr ifying\nĠ/> ,\nĠenact ment\nĠUN ION\n/log s\nĠscreen Height\nĠet wa\nä¾ĭ å¦Ĥ\nĠa Ãºn\nå· ¦\n_tim eline\nĠ\" \"))Ċ\n': ''\nB W\nĠrenov ations\nĠ< Ċ\nP ale\n> :</\nS keleton\nĠget Users\n_data frame\nab r\nmaterial s\n&e acute\n.Display Name\nĠh vis\n_l anguages\n.s y\nt ower\nIFICATION S\nĠbarr ic\nĠPl uto\n` ;\nãĥ ĭ\ncent e\n# ab\nĠlex ical\nĠB RO\nĠr ulings\nHE Y\n.i OS\nreturn ed\n. books\nĠH ubb\ne of\n>> ::\nĠì Ĩ\nĠgo To\nèĢ ĥ\nãģ¨ ãģĨ\n< Form\ncop ies\n.qu ant\nĠPot ato\nĠCous ins\nĠs Ã»\nG overn\nĠg aler\nĠF IR\n_W idth\nĠSh eldon\n.D ev\nĠRespons ibility\nson ian\nĠsuper class\nbit set\ned dar\nĠLabor atories\nĠco ined\nĠTechn ique\n(C ore\nĠspray ed\nĠp ong\n(N etwork\nĠro ar\nĠE AST\nstr ain\nĠmenstr ual\nomb at\nĠcal ming\nĉ Dim\n_m ovies\nĠRA ID\n-dismiss ible\nĠfre und\n- chan\nĠres istor\n_C opy\nocr ine\nĠesp ionage\ng ado\nND AR\nĠpor celain\nth alm\nĠ` [\nĠgr ado\nÐ¸ ÑĢ\nDO UBLE\nĠaccess es\n.F loor\nĠâĨ Ķ\nĠtoken ize\nan alytics\n.Create Instance\nĠsu che\nĉ ent\nign er\nĠÐ¿ÐµÑĢ ÐµÐ´\nĠcond iciones\n.lib s\n\" ';\nPDO Exception\nĠon Data\nĠAut ism\n-h elper\nĠre wind\nĠcoff in\nãĥ¼ãĤ ¸\nĠtransmit ting\n.set Alignment\nĠdeal loc\nĠance stral\nog ie\n.COM P\n: frame\nmm o\n': \"\nĠReg ents\nĠche ated\n.g g\nĠp aced\nĠest ad\noc ene\nls a\n(f c\n/ groups\n/m isc\nĠShut tle\nU PI\nÃ¡ o\n-c ycle\nĉ props\nĠrot ten\nRe jected\n# ac\n. ua\nĠAm nesty\nĠpenn ed\nIN CREMENT\n< dim\n.set Up\nĠT weets\nĠMad uro\nĠ ÙĤ\nĠC Active\nĉB YTE\n(se parator\n.Res ize\nuff man\nsupport s\nĠur b\nĠFound ed\n_h ard\nĠec lectic\n.F ilters\nĠRounded Rectangle\n_s ampling\nĠJet zt\namer ican\n.invoke Later\nĠButter fly\n(connection String\nĠNa omi\nĠJa ime\nr ts\nĠmag ically\n.m achine\nĠApp alach\n\" +\"\nv ale\n-mount ed\nĠa che\nM J\nĠUIImage PickerController\n-J un\nMan a\nkr aine\nDC F\n/ Product\nĠRES ERVED\nĠF HA\n:@\"% @\",\nĠProj ekt\nĠN ir\nĠCarn ival\nĠ* &\nĠQ S\nWH O\nĠw elt\nĠmar rying\nAlex ander\nĠReview ed\nacter ia\nĠw an\n( robot\nĠWindow Manager\nĠmonument al\nĠD oming\n/ weather\n_second ary\nOper ators\n_S IDE\nK at\n- zone\nĠsign ifies\nĠHttp Method\n/ context\n\" čĊčĊčĊ\nĠRodr igo\nĠb ub\n/m usic\nĠser ont\nĠm RNA\n_email s\nĠ' >'\nĠG eme\nĠÑĢ Ð°Ñģ\nĠ~ ~\nĠd ucks\nĠFre und\nEx periment\nĠreopen ed\nĠ\\\" {\nĠell ipt\nĠconcaten ate\nĠpol o\nTime Zone\nĠĠĊ ĠĠĠĠĊ\nĠcapt ions\nr icks\n.f req\n.m emo\nĠsm b\nDr ug\n][ /\n_BACK END\nĠEll a\nĠPort ions\nĠfetch Data\nĠcor outine\nĠest ava\nĠGen ius\n:` ~\nĠSwan sea\n(p ayment\nV otre\nĠPru itt\n.offset Width\nary l\nĠuniform ly\nĠWar p\nĠSE A\nĠdeduct ible\nĠbull ied\nĠBes ch\nĠPros pect\nOS P\n\" Yeah\nĠAng ry\n. Val\nĠg igs\nĠbul ky\neter ia\n.get Start\nĠM ETH\nĠco herence\nĠmed iated\nÐµÐ³ Ð¸ÑģÑĤ\n.... Ċ\nĠstroke Line\nm j\nĠUn sure\nath room\n(B inary\n_Key Press\næŀ Ħ\nin herits\nĠre preh\nĉS chema\nĠun restricted\n. definition\n] ?.\nĠ ith\nåł ±\nĠsl ime\nmsg s\n_J S\nĉ Version\n_SEC URE\nĠcost o\n.R estr\ncs r\n_TO OLTIP\np cl\nĠâĨ ĵ\nSelf Permission\n.r avel\nĠmemb res\nAs sembler\nrom ium\nsur f\nĠUP DATED\n( branch\n( include\nĠId ol\n\\ Object\nĠcl oning\nĠis NaN\nĠan z\nÆ°á»Ŀ ng\nĠon c\n_CL USTER\nĠ{} ),Ċ\nim inary\nĉcontent Pane\ntr ail\nĠnin ety\nĠNi agara\nĠAnd r\nÃ©s z\nĠd ific\nut ra\n'}} >\nãĤ¤ ãĥĪ\ns par\nĠ\"\\ \",\nĠmy file\nff c\nĠnotice ably\ney a\nĠPut ting\nJ V\n.dim ensions\ner ca\ngen esis\neffect ive\nĠper der\n. OR\n_COMP ARE\n: len\n/ red\nĠArist otle\nĠquer ied\nĠforesee able\nĠUI Control\nrem inder\nĠc ena\nĠh ic\nĠ\"\" ;čĊčĊ\n/b asic\nĠafford ability\n, err\nĠÑģ Ð¸Ð¼Ð²\nĠIS R\nlic enses\nVO ICE\n.L ang\n.rel ationship\nĠl ends\nĠnut zen\nĠespec ÃŃf\ni enda\n< Pair\nT v\n_RE TRY\nĠhon oring\n_de claration\n(N O\nĠH ick\nĠmin length\nĠGesch ichte\nap esh\nAT OM\n') \");Ċ\nenter prise\n> }</\nĠpolit ique\ned ition\n_De bug\nAn ne\n.S cope\nct p\ncan onical\n>> ;Ċ\nMen us\nĠfierc ely\n.On ce\nĠB orrow\nĠs ost\nĠserv ings\n- flag\nĠv ested\nĠfr on\níķ ¨\nĠfam ine\n\"] )){Ċ\nere Ã§o\nĠk ijken\nĠFloor ing\nçĲ ĥ\nobs ervation\nĠuser Dao\n=\" \">čĊ\nCO VID\nb aby\nĠtr ough\nĠSe am\nĠFight ers\nom it\nĠCharg es\nR uss\nĠquel que\nGet Position\nĠMin isters\n_re ceipt\nĠroot Node\nm ultip\n$ search\n\")) ))Ċ\nt akes\nĠ(! !\nĠB AT\nch ang\nÄ ĵ\n. oc\nĠsk illet\nĠSK U\nĠGall agher\nĠcres c\nweek day\nerv ised\nCard Content\n.ac cel\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĊ\nT ai\nĠCom patibility\nx CF\n_re wards\nr df\nAP PLE\n-f ed\nĠdep ended\n-g enerator\n( Process\nÐ¼ Ð¾Ð¶\nĠdiscrepan cy\nĠphosph ate\nNetwork ing\nè®¾è®¡ åĻ¨\n( ro\nĠconc urrency\nĉ auth\nPl ug\nATAL OG\nsub j\n/ team\n( avg\nok in\nĠpled ges\nĠcollabor ators\nĠemb arked\nĠDo ch\nĠD airy\ncompet ition\nĠMutable List\n-se ven\nĠconcurrent ly\nĠV ij\nĠreset ting\nd pi\nĠsl it\nĠPO INTER\nĠC ART\n.d ex\ncul os\n_person al\nĠanaly tic\n# create\n_mem cpy\n(List Node\n_T ag\nĠI rr\n\"> ';čĊ\nShort ly\n.t ip\n\\ [\nĠRep resentation\n_L ITERAL\n.c bo\nĠKarn ataka\nĠCompet itive\nĠR ue\nĠrun off\nĠSp ells\nf close\nc is\nF ra\nĠrem orse\nĠC ologne\nĠr anger\nĠM org\nfight ers\n.Request Param\nC ors\nĠden ote\nĠch oses\nÃ¢ nd\n.rec ycle\nĠLog istic\nĠDE AD\n- loaded\nĠClear s\nĠk ell\nraph ic\nĠM ane\nEM BER\nĠmask ing\nĉ editor\nH allo\n: list\nĠeth n\n-se at\nĠ*) [\nĠG ly\nĠA CS\nĉ stat\n/ Common\nĠdisgu ised\nFin ance\nĠEle phant\ntemp orary\nĠCar ly\nĠcoc os\nĠJud ith\nĠwr appers\nĠLun ar\nĠrÃ© cup\n- setup\nĠs izable\nĠĠ ĉĠ\nclass ifier\nĠfig size\nĠmast ur\nĠæĽ´ æĸ°\nĠRw anda\n) t\nĠC ups\nAz ure\n() },Ċ\nSP ARENT\n(d ic\nĠText FormField\nĠde form\nĠdire cciÃ³n\nĠy az\nĠgl ued\nĠatrav Ã©s\nco ffee\nĠUp dating\nĠColleg es\nÃ¤ll t\nandel ier\nĠsal ir\nĠS CALE\nq e\nê³ µ\n(re ceiver\nm db\n\" math\nis nan\ntele fone\nRE PORT\n.add MouseListener\ndu ed\n{} ]\n() ):\nĠwork ings\n});ĊĊ ĊĊ\nĠcomponentWill Mount\nS ervers\n_CLOSE D\nIZ ER\nĠbo ob\nĠCON CAT\nĠHapp iness\nĠcomm une\nx AB\nowners hip\n_NE AR\n_H ARD\nĠY A\nl ion\nĠsp iel\nĠtag ging\nĠimm oral\n- ground\nĠth unk\nĠloc us\nĠLat via\niz ioni\ncl arsimp\nĠpatient ly\n\\ Has\nĠsub ordinate\nĠWH ICH\nention Policy\nĠde pleted\nFS IZE\nĠ[ ,\nĠBi ography\nĠS ands\nSH ARE\nChar set\n.w rit\n_S US\nĠMore no\nĠbro ccoli\nĠV X\nam ics\n.Get User\nĠCom mod\n.s cheme\n(v s\nĠanalog ous\nPs y\n= line\n.p ublisher\nĠon ward\nÐµÐº Ñģ\nĠDeal ers\nĠto Array\nĠCho ices\nÐĶ Ð¾Ð±Ð°Ð²\nĠdefault Message\nĠag reg\nĠCon cat\nH V\nĠCircular Progress\n_s vc\nT AB\n_f il\n.Map Path\nz burg\nĠget Product\nĠVER IFY\n.M ongo\nĠpund its\np ulse\nlic ting\ngi atan\nĠ... \"\nĠf iz\nĠant im\nĠCh att\n_TYPE DEF\nG uy\nĉtest s\nĠSloven ia\nĠCommand Line\nĠbenefici ation\nĠbind ActionCreators\nNT AX\n-C s\nĠchar ismatic\n. alloc\n_n f\nĠassault ing\nĠÑĤ Ð°Ð±Ð»Ð¸ÑĨ\nĠc Ã¡c\nĠScroll s\nH AS\nyyyy MMdd\nĠG ale\nĠPro zent\nĠThor nton\nde aler\nĠev iction\nĠan ale\nâĢ İ\n=\" (\nĠe ag\n(' ');ĊĊ\nĠcontempl ating\nh yp\nbel um\nĠF its\nĠEx aminer\nĠB ucc\nĠmembr anes\nĠbrilliant ly\nĠCer amic\nÃ¨ ve\nĠP ound\nĠtre asury\n.' );čĊ\nĉt c\nec ake\nCurrent User\n.h abbo\nĠtre ason\nĠF TC\nM UX\nĠnumber ing\nRI A\n-- )čĊ\nĠbe ige\nĠAr tem\nb ases\n_B AND\nĠP avel\nÑģÑĤ ÑĢÑĥÐº\nth ed\n_n br\nĠÐ± Ð°Ð·\nslide Up\nĠTax i\nĠaqu el\nĠMisc ellaneous\nel u\nĠins ulated\nĠas sez\n.Config ure\nĠqu ella\nĠparas ites\nA way\nduc ible\n(' ='\nĠv ero\nĠWat kins\nĠSepar ator\naps es\nen vironments\nĠapp raisal\npa used\n_de ath\nĠsitu aciÃ³n\nĠfr aternity\nĠinsist ence\n_c rypto\nAttrib Pointer\n\"] ],Ċ\nĠoxid ative\nĠneur onal\nĠQ Graphics\n\"> ',\nĠSm ile\nObject ive\nĠSak ura\nZ O\nam ientos\n.Local DateTime\n/ unit\n-f requency\n- CS\n\" };ĊĊ\nĠre lev\nAl location\n% M\nĠDust in\nĠsw iper\nĠN arc\nt atus\nĠlong ing\nĠthuis ontvangst\nĠcomm odo\nĠA DA\nim u\n_for um\nang i\nĉ Application\n[ from\nĠBeth esda\not ropic\nĠM UCH\nĠpred ic\nfil me\n( grammar\n( APP\nĠC url\nĠsh orthand\naff iliate\n] **\n_n th\ni ability\nb omb\nY T\n(\" --------------------------------\nĠB icycle\nim ating\n.n ii\nĠK ara\nask an\nreact strap\nĠw lan\nograph ers\nĉ ĠčĊ\npag inator\nih anna\nĠmatch ups\n_P ADDING\n_reg isters\ny te\nĠprice y\nĠf ooth\nĠH uck\nPART MENT\nĠprohib iting\n.is DebugEnabled\nà¤ ¸\nle in\n= res\n/******************************** ****************\ndd l\nm pr\nĠê° Ļ\nĠW ALL\nĠrev olves\nĠPER F\n); }\nĠT oby\n/ ../\nĠk ao\nĠforecast ing\n_ Content\nĠ} )),Ċ\np orno\nle aders\n-h ooks\nistrib utor\n/st ory\nĉ lines\n-re ply\nĠadrenal ine\nFlow Layout\n.r outing\nĉ timeout\nĠraid ed\nĉ DD\nĠdis dain\ncons istent\nge ist\n(\" :/\n(st ates\nĠH IT\n-R ay\n- health\nĠ// -\ntem ent\n.navigate To\nĠben ches\new ing\nenz hen\n-s plit\nRe ject\nĠpyl ab\nĠflash light\nĠiniti ating\nĠOE CD\nĠent rega\nN ature\n.or ange\nĠÃºlt imos\nĠe cs\n.h over\nĠdel uxe\nR oger\nĠT ic\n\", __\nĠplace holders\nĠsp awning\nĠnur ture\nĠex changing\nCreate Date\nĠl amin\nĠSem iconductor\nĠ*/ ĊĊĊĊ\nĠfÃ¸r ste\nĠinitial s\nĠpro verb\nĠAct ress\nCon cat\nĠNic ola\n-sh opping\niv itÃł\nit ian\nĠW ert\n.Add Scoped\nĠsales man\nb os\nĠF erry\nC ENTER\nmodel o\nĠR oe\nĠIsland ers\nupert ino\nDecl are\nĠvow els\nĠbox er\n(tool bar\nĠhal ftime\nn in\nĠBro oke\nĠV es\nÐ» Ð°ÑĤ\nĠmot ivo\npro tein\nk us\nbus y\nĠstring Value\nĉ My\nN ut\nuz zi\nĠse z\nĠold s\nĠmeth yl\nĠb Ã¼\nhib a\nĠInsp iration\nĠawait ed\nBru ce\nB ALL\nĠTR Y\n-l ite\nĠunder estimate\nĉr v\n.m ov\nĠhist Ã³\nĠE rie\nc name\n/ connect\ncon ference\n_tr ait\nĠkvin de\nĠInv ocation\nĠDateTime Offset\nwe chat\nCE O\nĠLib yan\n.cap italize\nĠgrace fully\nĠre els\nin crease\n.max cdn\nf avorites\nIT ED\n< Scalar\n.F etch\nĠsusp icions\n[MAX N\n_TRAN SACTION\nĠcyl indrical\n.next Element\nĠmorph ology\nĠC ed\nĠc name\n(raw Value\nW alking\nLoad s\n_ALIGN MENT\n_RO UND\nĠRO CK\ncl usters\n\" h\nue ur\npl ans\nĠathe ists\nĠv at\n=\" __\naw ah\nerv atives\nĠfind One\nĠnote books\nĠT TL\n.Get Async\nĠm Ã¼nchen\nm Ah\nbr tc\n_P Y\nBuilder Interface\nĉg bc\nĠbl anks\nĠdÃ© m\nRec ursive\n.ManyToMany Field\n_P ARSER\nĠende avors\nĠd rib\n_ph p\nĠautomobile s\nlo it\nĠOrt iz\nĠU D\n(d AtA\nĠMits ubishi\nAttribute Value\nĠpo ate\nçĽ¸ åħ³\nĠcaval ry\n.Match ers\nĠing ress\nĠJeh ovah\nĉ seq\n_st reet\nĠSof ia\nĠscroll s\nvin ces\nelect ronics\n\\ param\nĠz end\nĠsk im\n.p ix\nen k\n_ areas\nĠBo ise\n- validator\nĠun earth\nof ilm\nĠB CE\nov sky\nĠLe ver\nĠpolic eman\nĠm ies\nĠPort rait\nĠpot ions\n_m ot\nmass age\nÐµÐ½ Ñĭ\nĠc ud\nĠmanus cripts\ncontin uous\n.t c\nÃ¼ z\nĠFree ze\n_: *\n.h m\nĠCS RF\nĠM Ã¤dchen\n- peer\nĠput StrLn\nĠim show\nĠ@ {$\nĠB auer\n(tol ua\nĠw rought\nĠG ian\nĠÃ¶ n\nf ung\nButton Titles\n}) \",\nĠMur doch\nK W\nĠReport ed\ns ie\nĠmeille urs\nĠK aepernick\nĠd sp\nĠEvery day\nrend s\nĠCon ce\nĠin contr\n.remove Attribute\nãģ¾ ãģĹãģŁ\nĠre w\nĠPres ence\n/g in\n.Cl aims\nĉs l\nDrag ging\nĠsp ree\nĠactual izar\nĠn oss\nĠl ifestyles\n; c\nUD GE\nIn Millis\nĠit k\nab by\n(p a\niss ent\nĠPres idents\nĠHex atrigesimal\nec ided\n(t ex\nĠcrown ed\nPhil ip\nĠS ark\nĠAdd ition\nĠCol bert\nĠG LES\nĠQ LineEdit\nĠdr ains\nĠsort Order\nesc ort\nT ed\nĠmanifest ed\n. variant\nĠREFER ENCES\n(g c\n/ {$\nocy te\nĠorn ament\nĠbook store\nH ol\nĠV all\n/ ')\nac ak\nĠNav Bar\nĠn ye\n_D ec\nolv imento\nM RI\nĠho op\nĠĠĠĊ ĠĠĠĠĊ\nĠPost ing\nĠout lining\nag ascar\n.break points\ncat id\n_trigger ed\nĠrun nable\n/tr unk\n-ch air\nĠb aiser\nfac ility\nĠpoll en\né Ł³\nĠ[ [\"\nĠCGSize Make\nĠass ail\nĠAthen a\nĠAdd iction\nil and\n; br\n.Key board\n_f m\nA ce\nĠRE Q\nĠNew est\n; .\nĠMA DE\nset Timeout\nServlet Context\nĉĉĉĉĉ ĠĠĠĠĠĠĠ\nĠL up\n-review ed\nĠAn alyzer\n.N aN\nut ura\nGe om\nym es\n_s in\nĠtrust ees\n// ===\nĠadmitted ly\nĠa ko\nĠUE FA\n_h ero\nG ithub\n_est imate\nĠcorro bor\nent iful\nĠSte ering\nĠM itar\nĠP ipes\nĠk Ã¥\n_se ason\nĠBCH P\n/ software\nnet te\n* \",\nund ra\nĠget Request\n.Buffer ed\nfer n\nM ario\nĠdisp ers\n_c ategoria\nĠend lessly\ngu ards\nĉ atomic\nsc oped\nĠund one\nSH OP\nĠTor ch\nĠHast ings\nĠFILE S\n_S ave\nWith Many\nW is\nĠintens ified\n. argument\nĠApi Service\nĠJS Import\nek i\nIns urance\nst y\n.d sl\nĠ---------------------------------------------------------------- -----------Ċ\nlt re\nSE G\nDR AM\n-block ing\nÐ½ Ðµ\npir ing\nĠP RES\nĠF ach\nĠs arc\nĠS ME\nĠE lem\nĠCal iforn\nUn safe\nĠCom poser\n(de p\nĠAtt end\nĠ*) ((\nĠte ased\nĠAT I\n(p m\nĠ\"( \\<\n'] +\nĠsect arian\nĠPh arma\nE I\nĉTokenName Identifier\nÃ§ u\nĠaug mentation\nĠsa ja\nĠcol ore\ndead line\n. ITEM\nĠR iy\nma al\nĉc lick\nPer manent\nH ouston\nRes ponsive\nĠEr gebn\nĠ\"% \"\n.to Object\nĉp id\n.Sub Items\nĠ[ +\nĠfung us\nĠbro chure\nĠApprox imately\nĠm ik\nvelop er\nĠpag amento\nåĬ¨ çĶŁæĪĲ\nĠcy t\nĠTem pl\nen iable\nĠCon an\nĠset back\nobl ins\nĠNT N\noss al\nVER BOSE\n.b io\nĠÅ ŀ\ná» Ł\nĠG rip\n< *\nTR IES\n. choose\nPh oenix\nĠprovinc ia\nMF LOAT\nC ars\nĠretros pective\nĠag ony\nĠl len\nĠbump ed\ny lation\nĠw arto\nĠtodd lers\nl av\n(p atient\nĠ() ->\ncl c\nĠon ActivityResult\nĠem ulation\nĠbul ld\n_AUTH OR\n> O\n/ qu\nĠÂ ¶\nĉ hr\nstd Class\nĠsp acer\nTranslate f\n.ad j\n: item\nĠexhaust ing\npl x\nĠrev ital\nÅĽ nie\nĠcal ifornia\nset State\n/t ab\ninds ight\n_ Level\nim ilar\n.n avigator\nĠtemper ament\nĠdif ÃŃc\nĠinex perienced\nĠim print\nĠRes ist\n_F OLLOW\nĠRet ry\nĠeng agements\nCanBe Converted\nĠsing led\n. icons\nĠcondom s\nĠFe ather\nl ernen\n) b\nĠN pgsql\nĠCons olid\npe kt\nç« ¯\nstring Value\nG am\nĠSin ai\nĠObject Type\n_in p\nĠpart i\nĠWater proof\nĠcoll ided\nĠair s\n/w orld\n/ Search\n_s yntax\nÅŁ i\n_ annotations\nĠT aco\nL AT\nĠOp code\nãĢĤ âĢĿĊĊ\nĠle ash\nĠAlic ia\nï¼Į é»ĺè®¤\nĠT SA\nĠhot ter\n_Handle TypeDef\ngin as\nĠind ifferent\nCustom Label\nĳ Ĳ\nodynam ics\nOn UiThread\nĠCar a\n.dev ices\nĠFore ignKey\n>' );čĊ\n.b ut\n.t if\nĠæĸ °\nĠOk HttpClient\n( Texture\n.S OCK\n(in str\nm ist\nUn named\nS r\n* num\n(N UM\n***** ĊĊ\n/h elp\nbe eld\n.ad just\n_P arms\n_ ANGLE\nT REE\nĠest udio\nwork sheet\n//---------------------------------------------------------------------------- Ċ\nAd vice\nÃ¶ ÃŁe\nn Enter\na Äĩ\nĠage ing\nĠKurd istan\n_R TC\nb anks\n. UR\nĠinc arnation\nĠglam our\nĠãĤ ¹\nĠimperial ism\nìŀħ ëĭĪëĭ¤\nĠsid eline\n.Array Adapter\n#### ##Ċ\nĠSy rians\nĠAtt endance\n-es que\nĠgren ades\n_q os\nOS C\n_d oor\n.C ap\nD AL\nĠamb ush\nĉ es\nTo Json\nMan ufact\nEmer gency\nĠQ File\nĠå ķ\nĉ LP\næ Ĳľç´¢\nĠGar land\n.connection s\n.Read File\nĠH wy\nâĢĶ even\nx DE\nĠnouvel les\nĠH uss\nDep osit\n_fore ign\nab aj\nĠP oz\ndb us\nĠi od\nÃĹ ĊĊ\nĠChe ers\nJess ica\nĠsa ison\nĠP ty\n\">< !--\nino a\nex cluding\nĠbitter ness\nuel ing\nPro tection\nĠBerg en\nĉĉĉ ĠĊ\nB EL\nĠTob ias\nĠup d\në² Ħ\nĠfol iage\n_P UR\nĠAdvoc ate\nĠon Request\n.part ition\nĠDevelop ed\nĠc rib\nÑģ ÐºÐ¸\nv oucher\nĠInter section\nĠn iece\nĠl k\nĠCa ucus\n([ čĊ\nĠDet ector\n/ lg\nĠH edge\nĠsl ugg\nang strom\nĠController Base\nĉ yy\n.p p\nĠK ling\nĠL TS\nâĨ ĵ\nar ra\nget JSON\n_ website\nĠidi ots\nĠMeg han\nButton Module\nĠ% >\nĠproject iles\ns word\nĠĠĠĠ ĉĉĉĉĉ\nĠass es\nĠSuch e\nĠk ed\nrÃ¡ f\nĠsar Ãł\nLE ncoder\nR AND\nĠSome how\nĠS ala\nĠmult im\nĠnum Rows\nĠRock ies\nĠx d\nĠdisproportion ate\nĉRT LI\nĉ URL\nag li\nĠSub LObject\nĠGr aves\n_regular izer\n_char acters\n.an alytics\n.mod s\nĠimpro vis\nĠBlock Pos\n_inst alled\n_CONT INUE\n/ down\nS OC\n.api Url\n.User Service\nT rees\næĬ ķ\n_over flow\naus al\nbox ed\n& Ċ\nĠJac qu\n_ usr\nIN TR\nĠsign age\nĠco ch\nNormal ized\nĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ\nĠsust aining\nĠSc rap\npra ak\n- avatar\n. website\n(g ui\n= response\n( operator\nĠeffort less\nĠAction Bar\nFF E\nç« ĭ\nĉ Register\nAR SE\n) n\nĠM OST\n_S PR\n_CH IP\nas d\nĠtop Left\nĠT xt\nÐ°Ð¶ Ð´\n.V olume\nĠin let\nĠfract ured\nĠLong itude\nĠD ram\n.Connection Strings\nab ee\nper ate\nj ni\n` t\nf inger\nĠJess ie\n, ll\nĠR udy\nĠgener ously\n_CON VERT\nĠeius mod\nĠD ai\nimag in\nĠG Object\nĠÄĳ Ã£\nid ious\nrid ged\nĠs opr\nÐ» Ð°Ð´\nĠstitch ing\nĠk rb\nĊĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĊ\nĠlav ish\nĠC iv\nStart Element\nĠL ol\nĉ util\n'] ].\nĠMal ay\nĠ. čĊ\nç ı\n_ Invoke\niv ist\nDep ending\n) \";čĊ\nĠto fu\nĠM CP\nĠstock ing\nĠcath edral\nĠquadr atic\nale za\n.moveTo First\nColor Brush\nĠE rect\nĠR CS\n: before\n= node\nĠprobl Ã¨me\n_r ho\nĠsvens k\nR oy\nbase Path\nĠk ond\nĠÐµ ÑģÑĤÑĮ\nget Singleton\nĠD SM\nI an\nĠhunt ed\nĠTerr ace\nĠchild care\nĠcoeff s\nĠgrad ed\nĠLuc ia\nĠjson Obj\nable Object\nV ault\nÃŃst ica\n_p ago\n_P F\nand re\nĠAn atomy\n.J ComboBox\nou re\nĠgen otype\nbench mark\nĠba ik\nĠQuÃ© bec\n()) čĊčĊ\nĠkun ne\nĠPoss ibly\nĠBe ispiel\nĠcondol ences\n= query\nĠv Ãµ\nĠnue vas\nĠAp ocalypse\nve ction\nĉs prite\nlev ator\n.\" ]Ċ\nget Next\n( Register\nĠun sub\ntree view\nNode Id\nĠì Ĭ\n& )Ċ\nfl t\nĠhot spot\nĠgastro intestinal\nfig caption\nower ed\nĠC ss\n_ ros\n_scal ing\nĠedit ar\n'] ]);Ċ\n.n eg\nĠfut uristic\nĠst ata\nuct or\nUL ATE\nĠw ÅĤ\n- character\nĠĠ ĊĊĊ\nĠBe au\nĠperm alink\nByte Buffer\nĠdict ates\nĠM LA\n_ Login\nCondition al\nSY M\nArr ange\nĠStock s\nĠmeas les\nà¤ ¤\nEnc ryption\nĠEnt ire\nĠmin Occurs\nĠh ugs\n/ window\nĉ prop\n=$ ((\nĠU CS\nĠF ir\n.C lock\n-des ktop\nĠmal formed\nĠAber deen\nĠÃ ħ\nĠRoad s\nĠBeh aviour\n() '\nå± ŀæĢ§\n.Com parator\n_m o\n_I OS\nĠOri oles\n.Look up\nĠf seek\n_ IB\n/ star\n+ </\n_D estroy\n- tra\n('. ')\nĠFor CanBeConverted\nĠForCanBeConverted ToF\nĠForCanBeConvertedToF oreach\nĠA ad\nĠairst rikes\nis Ok\nĠfeder ation\nĠLab rador\n_launch er\nal ogy\n>> ();ĊĊ\nĠJ ub\nut r\nistingu ished\nab ant\nReg ions\n/h elper\n_list en\nĉ Toast\nĠFile Manager\nitor is\nĠelectro des\nGRA DE\nĠbeg ged\nĠPl ates\naf one\n!! !Ċ\nĠe bx\nĠdefault Props\nĠcompare To\nĠS CC\n.ext ent\naut os\nĠì ĸ\nĠT olkien\n::* ;ĊĊ\n* ',\n.doc uments\ns ing\n= BitConverter\nĠKrish na\nĠplais ir\nĠb uggy\nĠregul ates\nĠfr iday\nĠcomple teness\nĠaud ible\nĠRecognition Exception\nĠshed ding\n[] ){Ċ\n(b all\nĠChat Color\n( Code\n(), ĊĊ\nĠt ertiary\nĠS IDE\n(JSON Object\n¤ æĸŃ\nRem arks\nĠlist Box\n.image Url\nĠdelay ing\nĠsocio economic\n.l p\n< My\n.on Start\nĠSc or\nbyter ian\n- rock\n_m eter\nĠrep mat\nĠpre gunta\nĠM ETA\n(g t\nĠF RIEND\nĠsort e\nĠhe p\nonom ies\nĠautom Ã¡t\nĠForm ats\nstate Provider\n-f loor\n_M UX\n( Content\nĠIN STALL\nĠTitan ium\nr uc\n.D ataset\nas co\n.M ATCH\nĠfest ivities\nMS N\n. ot\nĠGet LastError\ni ens\nĠ__________________ ĊĊ\n_G F\n_ plate\nĠF ormal\n- letter\nK ate\nap ia\nĠ************************************************************************ ******/Ċ\n/g enerated\nĠD ing\nĠFried rich\nĠ') '\nUBL ISH\nĠAb ilities\nĠunlock ing\n.y y\nĠInt err\nno throw\nip op\nĠCOR POR\n[ array\n< WebElement\n_S ID\n. qual\nDi agnostic\n:\" \",Ċ\n(m oment\nj ured\nĠter restrial\ner ule\nĠ& );Ċ\nĠbureaucr atic\nopp ins\nĠj apon\nle on\n_re name\n_DEST ROY\n.End sWith\nĠeru ption\n************************************************************************ *******/Ċ\nP ET\n_re load\nĠsupplement ary\nĠz ien\nCL Location\nĠkle in\n_ ef\n: {}\nĠcoment arios\n( validation\n.x text\n_IM AGES\n.set Input\nĠDecomp iled\n_T BL\ncomplex Type\n_feature d\nĠ?> <?\n.v ote\nĠFrid ays\n.con sume\n.M EDIA\nĠsy nerg\nİĺìĿ´ ì§Ģ\n_HEAD ERS\nx AC\n_n v\nÎ Ń\nĠSim one\nC errar\nadd ock\n.serial izer\nĠClass ified\n.Items Source\nĠpre condition\nãģĿ ãģĹãģ¦\nD IST\nImage Url\n/r andom\nĠer Ã³t\n[ root\nALL ERY\nc j\nx AD\n############################################################################ ###Ċ\nĠitalian i\n| #\nĠreg enerate\nĠstr r\n( ||\nĠEm erson\nĠP IE\ncl iffe\nĉ an\n> Password\nto Date\nC ipher\nĠconv oy\nĠXCTAssert True\n/ __\n-f ocus\nĠRh ino\nĠgo o\nĠbot on\n.No Such\nĠRed uced\nMI SS\nĠWin chester\nurl encode\nĠm uddy\ni ya\nĠM bps\nĠst al\nod afone\nä» ¬\nĠph áº©m\nĠ\"/ \";Ċ\nĠAm mo\nNew Prop\nĠ= ĊĊ\nĠÐŁ ÑĢ\nĠp az\nĠlib ero\nĉ Resource\nne ighbors\n, response\n_at tempts\nĠn k\nĠmilit ias\n_PAY LOAD\n.Byte String\nĠÑģ Ð¾Ð´ÐµÑĢÐ¶\nart on\n> Hello\nlight ly\now ell\nĠguard ing\nĠT OK\nĠwhere abouts\n_d w\nĠRou lette\nĠg yr\nĠFed ora\n.Button s\nĠex claimed\nĠSom mer\nAuth Guard\n-r ating\nMethod Beat\n.position s\nMed ian\n. âĢ¦ĊĊ\nĠgl ac\nĠundermin ed\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n_th ird\n. keep\nĠh aya\nĠto JSON\nĠLaur ie\nĠ ĉĠĠĠ\nĠAcc um\nĠpr une\nur ved\nĠNS F\nĠG rape\nFL ICT\nè ²\nĠpred is\n_ptr s\nĠmult icast\n( Group\nĠhe iÃŁ\nĠfeder ally\n_PA USE\nĠmal aysia\nĠRec all\nĠrod z\nĠS entence\nint el\n_drv data\n-sc enes\n< y\nĠfoo led\nĠL oud\nĠant ivirus\n.pl ist\nĠverw enden\nĠWol fe\n) item\nĠtw isting\nĠes pan\natern o\nĠAcc ord\n() ],\nRE MOVE\nde hy\n_P re\nĠmisc ar\nv la\nĠsem bl\nĠt ether\nĠB ij\n/ 'ĊĊ\nĠCop ies\n-p attern\n.on View\n-t aking\n_sim ps\nãģĹãģĭ ãģĹ\nĠDAC A\nor ning\nĠP essoa\norn y\n_p as\nĠeight y\nT ac\n_ST OCK\n.loc ations\n\") },Ċ\nĠt Ã¡\n-f ields\nok ane\n/k ubernetes\nĠch ica\nĠart ÃŃculo\nì Ĥ\nCRE ASE\nAS A\nĠL ond\nĠex emplo\nAll ows\nhtml specialchars\n( vis\nĠj r\nçģ «\nĠE CM\nĠem bar\n_AD APTER\nĠdil uted\n_off ice\nĠsk incare\nAG ING\nĠÃ ¾\nĠSM ART\n/ Table\nĠbas al\nCon currency\nĠV ox\nĠUICollectionView Cell\nĠw ol\nĠS OUTH\nĠfrom Date\nĠc ords\nEM S\n.we ixin\n' elle\nĠå ±\nĠgo alt\nu ib\nĠNe ptune\n( ord\nÄ±n Ä±n\nĠmicro bes\nWe apons\n- Dec\nĠRo oney\nĠSw agger\nëª ħ\n_l a\nĠgener ado\nĠH ir\nCom ic\nĠcar ve\n_r q\nic ter\nĠcart el\nanc ias\nĠPan asonic\nĠroad side\nĠfresh water\nĠdb c\n_text s\n_s ku\nĠSum mers\nĠP ictureBox\n.group Control\nV ARCHAR\nRe LU\nĠsabot age\nčĊ ĠĠĠĠĠĠĠĠĠĠĠĠčĊ\nĠscroll bar\nĠbatter ed\nc ip\n-p icture\nĉ stats\n.c reator\n_C LEAN\n.M OD\nĠbig int\nĠTerror ism\n_S how\nĠSp icer\n_ ETH\nĠÄĳ á»ĥ\nĠsum mers\nĠU ran\n/m emory\nReview ed\nĠd ues\nset Scale\nĠR ays\nĠC SC\nin coming\n-b uy\nĠproc ure\nent ar\nĠbull s\nĠ ĉĉĉĉĉĉ\nĠFib onacci\n-s chema\nm akes\nE f\n_D escription\n/ alert\nĠjson String\nuff ling\nĠK ERNEL\nĠH oy\nĠgrant Results\non ald\nĠPro vincial\ns ending\npt om\nĠÐŀ Ð±\nĠconstr ain\nĠÅ¡ to\nĠRaised Button\nUT DOWN\nĠGL sizei\nĠç¤ º\nãĥ ĳ\nĠG on\nPL IER\n'] }</\nclass ic\nĠengr aved\nĠmascul inity\nMar sh\nss ql\n( Gravity\nĠlob ster\në¶ Ħ\n_ Inter\n\\ base\n': ['\nĠdet alle\nt weets\nĠjealous y\nag enda\n, it\nsw ire\n+ B\nĠtr out\n_al tern\n:\" #\nĠD warf\nĠSh apiro\nero on\nĠn ok\n_long itude\nĠW erner\nĠv iolet\nurs ively\n- await\nĠ}ĊĊ ĊĊĊĊ\nĠL ennon\nĠAntar ctic\nĠb Ã¥de\n_s lope\nmand o\nounc er\n- ion\nĠD estruction\niss enschaft\nP izza\nĠGe ological\nBO UND\nĠc ine\nD emon\n. people\n_TO GGLE\nĉn odes\nbus car\n.process or\nN h\n/s dk\nĠmy cket\na uction\nM eg\nGM EM\nĠiron ically\næ¸ ħ\nĠconver ge\nĠUITableView DataSource\nAr duino\n> e\nJ oy\nĠShould er\nĠD uc\nPR IMARY\n.* (\n-p res\nĠdialog Ref\nimage Name\n_in voke\n\\ Template\nO I\nĠv riend\nĠGu err\nĠprere quisite\nĠP GA\nĠRes p\n) \",\"\nll en\nĠsn apping\n_F irst\nK IT\n.set Focus\nĠC ypress\ncraft ed\n/ ;Ċ\nweight ed\nv oy\n_t F\n_in sn\nĠInst alling\nĠGall up\nAD OR\nĠA LOG\nContext Holder\nĠT out\nĠF oley\nĠcont emplate\nĠCoin base\nX Ã£\nw and\n.Create Command\nS ock\nĠun wrap\nclass path\n< Resource\n_E ST\n= random\nĠSh ade\nĠd ici\nØ¯ ÙĬ\nĠk itty\nÐ°ÑĤ ÐµÐ³\ná»į n\n.Com pleted\npl orer\nĠb abel\n.On ItemClickListener\nĠMc Mahon\nĠrest Template\nĠt ess\nSet Up\n/oct et\nĠcal am\nĠh inges\nĠarter ial\nĠTr uman\nĠCh eryl\n_D DR\nĠtm pl\nĠL er\n[ hash\nK ER\nĠpropor cion\nĠcoast line\nac ios\n\"> --}}Ċ\nĠdisadv antaged\nTouch Listener\nĠS ega\nco es\nIllegal AccessException\n< Box\nĠIn credible\nUp dater\nFL T\nin ame\nĠInter faces\n+ )\\\nend imento\nĠpanc akes\nĠincons ist\n.p et\nĠkey of\nInner Text\n> ')\nDe an\nĠP Ã©\n( Control\nĠsp ar\nlin ik\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠD ane\n_P AGES\nĠset BackgroundColor\nsub category\nĠString SplitOptions\nAll en\n!(\" {}\",\nĦ ìŀ¬\nĠb ac\n_PRODUCT S\nupper case\n=$ (\"#\nÄĻ k\nĠUIT apGestureRecognizer\nM ETA\nĠscarc ely\né ł\n_man aged\nĠconsum o\nMouse Move\nĠSpec s\nĠSearch ing\nHeader View\n: ')\nĠm icrosoft\nĠKos ovo\nem ann\n. fft\nĠHubb ard\nĠd ex\n_TER MIN\n_F C\nĠphil ippines\n\\C ollections\nĠte h\nĠqual ifies\nĠinput Value\nĠG OT\n(s a\nIL LED\nĠsl ang\nĠke inen\nĠfel on\nĠEr ick\nabil idade\n.s er\nĠrun es\nĠUn real\n( or\nĠë¬¸ ìŀĲ\nĠb idi\nĠ irc\nĉ iter\n\" nil\n/ ubuntu\nĠmurder ing\nĠ? .\nunk er\nRect Transform\n')) ĊĊĊ\nĠar ity\nĠFre el\n.m ount\nCOM MENT\nĠ\"* \",\nenc ryption\n[ model\n\"}} >Ċ\n.T ouch\n/th umb\nĠpre z\n/ company\nĠr Ã³Å¼\nĠsoft en\nĠposs ibile\nĠE CB\n_ Bool\nĠ---- -Ċ\nĠinter tw\n_st a\n_B AL\n.navigation Bar\nĠRGB A\ngr ily\nst off\nack y\nQ B\n@ Api\npec ia\nĠR pc\nĠam ps\nĠF ence\nĠgen omic\n( alias\nV ien\nSpin Box\n.get Seconds\nĠglobal ization\nĠc us\nk ubectl\nĠth rott\nĠin ert\nĠScr atch\nÃĹ </\n. issue\ness ay\n-I sl\nĠmÃ¡ r\nĉb it\nĠabol ished\n.in finity\nlin eno\n.al gorithm\nors ch\nEmail Address\nĠD AG\nbr inging\n.my application\n.S upport\n_le ader\nĠDev in\nĠ[] čĊčĊ\nĠr ms\nĠbuck le\nig lia\n/pro blem\nĠha ute\nĠinstit uted\nI U\nl ama\nEXPECT ED\nĠBeck ham\nĠHy draulic\nStatic s\n_normal ized\n. `,Ċ\nĠmim etype\nĠsh aving\nOver rides\nĠMerc er\ntr fs\n-st ats\nos pace\nĠantioxid ants\nin finity\nR ocket\nĠE uler\n- valu\nĠl Ã¸\n- IN\nH mm\n- return\nĠP ANEL\nĠtermin ator\nĠte kn\nĠpred icates\nStamp ed\nĠs ve\nan ter\nĠcycl ist\nĠEp stein\nĠh itters\ndog s\n.Add Listener\n_exception s\nĠFO OT\nic are\n[ tag\n-f etch\nUP LOAD\n.d ropdown\nĠcent roids\nĠar be\nĠhij o\nĠDatabase Reference\nPol itical\nĠBAS IC\n- force\n| $\nĠRE VIEW\n.decor ate\nĠAs pect\nĠcommem or\nĠclean se\nĠClaud ia\ngener ation\nHL T\ntype orm\npre fer\nover lap\nbi ology\nStream er\ncom mission\nĠth umbnails\n.Current Culture\nĠurl parse\nĠgi orno\nĠdev s\n_as pect\nĠcher ished\nĠNach richt\nĠrig ged\n/log ging\nh unt\nType Error\n< Select\n(pro g\nĠGrid Layout\nè Ĳ\nĠEX PER\nĉ KEY\n.d m\nĉc ard\nĠT au\nĠnot amment\nĠhero ine\nĠbat htub\nat ron\nĠæ Ķ\nï¼Ĵ ï¼Ĳ\ncon omics\nĠrevers ible\néĩĳ é¢Ŀ\nĠjs x\nĠSpe akers\nDes erializer\n.to Float\nĠÐ¿ÐµÑĢÐµÐ¼ ÐµÐ½\nĠProvid ing\nè´ ¦\n[ element\n* :\n> Returns\nĠtit ular\nĠheart breaking\n_N B\n.Arg uments\nĠopt ic\natt acks\nĠVul ner\nĉ keys\nĠcont role\n.R GB\nĠsub group\nmand atory\nĠC AB\nĉ engine\nãģ °\nM EDIA\n/ trans\nĠd ank\nĠserv iced\nĠincarcer ated\nĠF reak\nĠupt o\ndraw er\n[\" +\nĠent wick\ng L\nModel Error\nĠre addir\nistrib ute\nĠgl are\niqu ement\nch ina\nĠKap lan\nĠSt ability\nposit es\nĠJAXB Element\nĠtotal mente\n( comm\n_process es\nTh ousands\nĠI ls\nert ainty\nĠSh ades\nact al\nlogged In\nĠNich ols\nĠMid lands\ndev il\nĠstr SQL\n\" })\nĠJ ord\n( ff\nĠJun i\nå° ±\nartisan lib\nĠmo ons\nĠun resolved\nĠw itches\nĠG Ã¼\nĠG oblin\nans son\n| %\nĠb z\nĠdup lex\nĠ\" ))\n. likes\n( vertical\nĠcow boy\nSele ccione\nĠ'* ',\nĠS ap\nĠSabb ath\nS ORT\nà¦¿ à¦\n_cent ers\n\\ Post\n(T ree\nĠpart es\n_y aw\nare mos\nse ven\nĠhi atus\n_int ensity\n-m any\nĠDoll ars\n-un styled\nĠgri pping\nĠmarvel ous\nĠreception s\nĠover clock\nber man\nĠhead quartered\nx BB\nclass CallCheck\nĠobserv es\nSubmit ting\nÐ¸Ñĩ ÐµÑģ\nĠHttpStatusCode Result\nĠhier onta\nro pping\nFOR CE\nĉ utils\nĠv ents\nadd ers\nĠM IX\nĠE legant\nĠac os\n(m achine\nĠmed dling\nĠv ile\n-com patible\nĠcream s\nĠTable Row\nĠRehab ilitation\nAb b\n(user Info\n_ex pired\n.Object Meta\nĠgod t\nus ual\n.bindingNavigator Move\nĠReg istrar\nm igration\napt ured\n, params\nĠcenter Y\now an\nlo cales\nInput Module\nĠvigil ant\nĠn cols\nĠing r\nĠcÃ´t Ã©\nvert ime\nĠwid est\nĠH DF\nĠAlger ia\nĠch att\n$ select\n\"] )čĊ\nĠmul ter\nĠChen ey\nfusc ated\n='\".$ _\nĠDen ise\nĠr iff\nAbs ent\nĠt amaÃ±o\nĠjes zcze\n.Pro gram\nĉ br\nera is\nĠsand als\nĠ, ,\nĠdiss olution\nĠunters chied\nPro v\n.trans actions\nĠTrou ble\n.m iddle\n.get Declared\nĠswe ating\nĠH ancock\nè´ ¹\nĠp og\nĠK ia\nĠmod ne\nĠAccess ibility\nĠleak age\nĠde ceptive\nĠW OM\nĠÐ¾ Ñģ\nĠcs ak\nac ock\n.S yntax\nĠ, [\n. '),Ċ\nĠfore closure\nĠunf avor\nĠex cl\nC UDA\nd ense\n< Unit\nĠv aping\nĠmaj estic\ni ators\nĠaut istic\n.g ateway\nUrl Parser\nH ell\nĠCost co\nĠH IP\nObserv ers\nĠPe oples\nĠSpot light\nĠT avern\nĠTO UR\npl ings\n.W RAP\nĠal d\nN AL\n(\" ***\nset Property\n_ Stop\nann ouncement\nĠIm mediate\nĠH SV\n_TEST S\nĠcr ave\n_ UC\n.dec rypt\n(R oles\nĠsub j\n_ Integer\n.not Null\nĠG st\nĠBy rne\nĠAqu arium\nĠC anc\n_CH AN\nĠD TO\n.h l\nĠmeng gunakan\nFr anc\nDialog Content\n... 'Ċ\nĠKun st\nĠAlloc ator\nUS AGE\nKnow ledge\nĉc pu\nĠmor als\npat ients\nĠil k\nĠc riter\nĠV et\nĠMess iah\n__ :\naven ous\n_view er\n(D ictionary\nĠB odies\nhas One\nÐ¸Ð¼ ÐµÑĢ\nĠzip code\nS ter\nĠb Ã¡s\n_D isplay\nĠfir ma\nĠRa ider\nĠK H\nWith Data\n( ARG\nĠpro tr\nĠm sec\nĠlav ender\n( Util\nĠÐ¿ÑĢ Ð¾Ð³ÑĢÐ°Ð¼\n_m ux\n_l atitude\nPort rait\nĠsit com\nĠad icion\n(const ants\nĠAn xiety\nĠRos es\nĠstim ulated\nĠchron o\nĠfoss ils\nĠAir bus\nlef tright\nĠMÃ©t odo\n\" w\nĠkle inen\nĠcli que\nom ination\nĠmot el\n/ vector\ndeclar ation\nĠnew Y\n[ H\n.scal ar\nom bo\nh ud\n; set\nft ype\n(' ').\nord es\nyn os\n'] ,ĊĊ\n_FL USH\nident ify\n/dev ices\nĠdict ated\nĠde jar\nĠE min\nĠP endant\nĠon Update\n] )))\nĠB arker\nOr m\nè¯· éĢīæĭ©\n_g uide\nÃ¡b ado\nop he\nĠ\" .Ċ\nĠBrew ers\nĠbr idal\nĠC ES\n_C ategory\nĠBT N\nĠDar th\n# for\neth nic\narch itecture\nĠCou pe\nid ores\nĠfasc ism\nĠcontrad ictions\neffect s\nInitial State\nĠç¤º ä¾ĭ\nmat plotlib\n.des ktop\nĠÐ Ń\nĠQ Pixmap\nĉb egin\nĠw nd\nĠcont iene\n(h elper\n.Not ify\n( Book\nĠGuar anteed\npl l\ni ola\nĠfung i\niv ent\nĠO A\næ²¡ æľī\nĠwiÄĻ cej\nĉĊĉĊ ĉĊĉĊ\nï¼ļ \"+\nĠTalk s\n.start ed\noc ities\nĠes ports\n< Input\nĠEX CEPTION\nĠact u\n. imp\nĠ\"/ \"Ċ\nOther wise\nĠP ension\nĠW aves\nÆ° Æ¡\ni ards\nĠ* </\nurge on\nĠSC I\nĠLaure l\net ag\nNet flix\nĠRes ponses\nĠne oliberal\nis Contained\n= my\nĠre print\nonest ly\nĠdepart ing\nP WM\new hat\n=\" <<\n.y ang\nĠTrad ition\n+ \":\ndep ending\n_ Unit\nĠCod able\nĠwhisk y\nĠcorrel ate\nĠdire t\nLast ly\nĉ Output\n(in ode\n\\ Log\nĠDep endencies\nWill Disappear\nĠPan els\nĠâĶľ âĶĢâĶĢ\nĠost ensibly\n| --\nAnn ual\nĠaut oload\nValue Handling\n.c oin\ned uct\nZ Y\nĠCan ucks\nĠsm ear\nĠreal idad\nĠ{ {Ċ\niv ol\net SocketAddress\nĠK emp\n/F ramework\nĠqu ickest\n_ \".$\nĠwith holding\nĠintr igue\nĠADD R\nDies e\nWeek ly\n____ _\nĠInvalid ArgumentException\nol ated\nRun Loop\nĠpass Ã©\n.firebase io\n.e ulerAngles\nist ence\nĠfear ing\nĠElement Type\n/ Test\nĠæŁ¥ è¯¢\nĠfond o\nĠP arr\nĠz est\nĠTransform ers\nLine Style\nĠeth ernet\naff les\nĠnamed tuple\nĠSc alars\nNSURL Session\n- extension\n(M essages\nĠat enciÃ³n\nĠJer seys\nbed Pane\nĠSt unden\nĠvo iture\nĠé» ĺè®¤\n.op engl\nĠ\" }\nĠRe venge\nĠ---------------------------------------------------------------- ---------Ċ\nInstant iate\nĠen r\nValidation Error\n_AL READY\nL ots\no ce\nĠsc rim\nĠem body\nÑĢ Ð°ÑĤ\nĠconced e\nass el\nĠB RE\nPLE ASE\nĉd iff\nç»ĵ æĿŁ\n.f p\nb am\nMe al\nĠMad onna\nĠpunish able\niff ies\n_un ix\nìĻ Ģ\nĠG aga\n\" struct\nTo Send\nĠO CR\nĠpr aising\nget Store\nĠe uth\nĠar reglo\nĠf erm\nf df\nCo oldown\nĠRec ycling\nAn a\nind r\n_H P\nĠGovern ance\nĠbarr age\n/ ca\nĠ, (\nF Ã¼r\nĠIS Ps\nĠmen ace\nVirgin ia\nĠf anc\nĠn ombres\n.in structions\nĠescal ated\nag ina\nĠLev ine\nĉf ind\n_ er\nĠdejtings aj\nsv p\nag os\n(s ol\nĠL id\nPR IVATE\nĠIMP LEMENT\nef eller\n(T arget\nà¹īà¸Ń à¸¡\nh ousing\n.set Cursor\nĠneh men\n.re ceiver\nĠT utor\nĠmatter ed\nmd at\nreg ulated\nĠget Address\nĠMin uten\nĠI U\nÐ» Ð°Ð²\nĠturn overs\nĠsuit ability\nĉ esc\ncal cul\n_ Stream\n_f ilenames\n- vars\n.... .ĊĊ\nD ia\nĠsw ims\nOpt imizer\n< boost\nĠPer mit\n'])) {\n\\ OptionsResolver\næ¡ Ī\nĠhect ares\n( us\nĠDevelop ing\n_x s\nĠnovel ist\nĠCon venience\nwalk ing\nĠchar ms\nĠLe ase\nĉH AL\n([ &\nĠrestart ed\nM age\nIp v\nĠÑį Ðº\nRL F\nĠas sembling\nĠE cc\nvin fos\nped ido\nĠsyn opsis\nĠSt anton\nstart up\n.get value\nĠK itt\npro per\nĠpre trained\nĠP EN\n.T erm\nĠpe qu\neph ir\nĠAll ies\nĠmodel AndView\nĠbutter flies\nĠK irst\nĠCheck er\nĠc unning\n.set Y\n_M aster\nIncre asing\nĠhurd le\nĠf ists\nĠSlovak ia\nĠnombre ux\nĠ:: Ċ\ntask Id\nĠf olly\n<T reeNode\nĠV oldemort\nĠbl ister\nÅĤ e\n.Entity Manager\n.D OWN\nĠGreg g\n-co ordinate\n(v c\nÃ¡ bb\n.T oggle\nĠLis bon\nç ¢\nĠÐ¿ Ð¾ÑĤ\nparent Node\n.set Scale\n_MISS ING\nĠou tra\nĠk up\n` ]\n_v ia\ned ics\nĠB orders\nĠip ad\nĠed t\nĠCart esian\n/m ac\nĠbar ley\nĠScar let\nĠĠĠĠĊĠĠĠĠĊ ĠĠĠĠĊĠĠĠĠĊ\nquery Params\nĠrhyth ms\nĠg earing\nZ X\nhy dration\nST S\nĠpl entiful\ncor p\n} @\nint egr\n/ at\n.de b\nĠund eniable\nĠopens sl\n.de ad\nĠPill ow\nĠBe ans\n. ant\n_q s\n-in formation\nĠë³Ģ ìĪĺ\n% \"),Ċ\nĠÐ´ ÑĢÑĥÐ³\nĠS ponge\nĠs ift\ntest imonial\nĠunn atural\nUIS crollView\nver gence\n(text Box\n-p agination\nĠDis qus\n_pro duk\nagn ar\nKey Up\nĉĉĉ ĠĠĠĠĠĠĠĠ\nÐµÐ» Ðµ\n< source\n. il\n.at om\n_Com ponent\nĠy n\n[' __\nĠwe akest\n_dec rypt\n/ msg\ncb c\nĠpolit ely\nom at\nĠenlight enment\nĠcre a\nĠbr uk\n_al ready\nĠsock fd\nun pack\norg es\nĠUN ESCO\ninal ity\nĠsent inel\nĠaff luent\nĠthrow Error\ni ets\nAN JI\nĠSuff olk\nber o\nket Ã¸y\nEnd points\nexec utor\nG a\n.L A\n_port folio\nuns ch\nel age\nĠg obierno\nĠBi ol\nMod ification\nĠDecimal Format\nĠV ocÃª\nĠmethod ologies\n[ ].\nĠG V\nĠreplic as\nâĢĶ with\n); );Ċ\npos ix\nSuccess Listener\np he\n_normal ize\nĠL arger\nĠreperc ussions\n_V ert\nĠhost el\nĠincompet ent\nhe v\n_DEL TA\nĠpued o\ninstall ation\n_f rag\n( rr\nĠM AV\nĠLocal ization\n(\" \").\nĠ ---------\nč ĊĊ\nĠPy Tuple\nĠJul io\nĉGL uint\nmark up\n_F AMILY\nPRO GRAM\nĠFirm ware\n* size\nW ifi\nĠvisit a\nĠE rl\nFind Object\n.UN RELATED\nph thalm\nĠpersonal ize\nĠcrÃ© ation\nĠĠĠĠ ĉĠ\n.p recision\nĠset ters\nĠnew Size\nĠCatal an\nĉ option\nĠpi el\nĠc ages\nĠSt em\nd rawing\nexpl ained\nĠæİ §\nĠdread ful\nerrupt ed\n.getValue At\nĠelapsed Time\nĠindef inite\nĠTH ANK\n_start up\nS URE\nĠkid neys\nĠC uisine\n| array\nSend Message\nf av\nĠAeros pace\n_me ans\nĠne b\nĠO TP\nĠch urn\n/ fr\nĠRe ign\n_class ification\nĠMac Donald\n\" .ĊĊĊĊ\nĠch illy\nĠ è¯·æ±Ĥ\nih at\nST A\n'aut res\nĠl asc\n.m ix\nĠbl ot\nĠID D\ndat atable\nsp iel\nĠÃ© xito\nart ic\n.A xis\n.adv ance\nĠmouse X\n' Ãł\nĠrec ieved\nĠpos i\nĠfour n\nĠM afia\nĠp ca\nbel ongs\nably typed\nAUTH ORIZED\n.scal ablytyped\nìľ Ħ\n-d ot\nĠemphas izing\nMembers hip\n* pow\n-s pin\nr uta\nhe vik\n_A SYNC\n_comp iler\n.F lag\nĠel bows\n.C REATE\nM etro\n.log s\nz man\np one\nÄĻ Å¼\nĠint ers\nĠwe bs\n_H IDDEN\nĉ now\nComm unic\n$ tpl\nsc opes\nĠZ ika\nĠstring stream\nĠUnc ategorized\nF Y\n/sw agger\nP enn\nime Interval\nĠcont ends\nx ies\nĠSales force\nĠut ens\nĠund is\nCr ystal\n.nd im\nĠform ul\nĠF av\nå¹ ¿\nr isk\nn ad\n/t os\nĠPER FORMANCE\nĠwrit eln\nĠcol lo\nant ically\nUD ENT\nR gb\nĠof ere\nĠmerg es\nfid f\nĠk z\nVict oria\nĠ/ ^\\\nĠk ube\nĠApost le\nĠdef ends\n< =(\nĠMEM ORY\n\\ Id\nĠActive Form\nĠOne Plus\nHttp ServletRequest\nĠTemp Data\nìł ģ\n.A SCII\nÙĦ Ø§\nK I\nĠfr at\n_C IPHER\n.S urface\nĠpit falls\n-med iated\nyp i\n-al ist\nx BC\nte achers\nĠC yc\nĠpsyched elic\nĠD umbledore\n\") .ĊĊ\nĠTh atcher\nĠPr inciple\nTo gether\nĠfl ora\nweek s\n_c riteria\nb ones\n.int ernet\nĠblock Dim\n.Single OrDefault\nD ice\nĠE vel\nĠT Label\nĠI gor\nĠC opp\nĠinaug ur\n/ private\nĠab err\nnd s\n; if\n-r anging\nach ts\n_mar shall\nĠ__ ________________________________\n.end Time\nĠModel Renderer\n( food\n(\" ~\nĠsup pl\n(\"\\ (\nS q\nTrans lated\nĠContin uing\nĠpos sono\nFIX ME\nĠAnge bot\nie ver\nĠKy oto\nc il\nNew UrlParser\n.D i\nĠhum ane\nD emand\nĠMart ian\nwood s\nĠHe al\nĠY ue\nĠcour thouse\nĠv ont\nĠb ons\nint egral\nĠ$('# '\netermin ation\n.mod ified\nĠprincip als\nĠal armed\n.create Object\n//------------------------------------------------ --------------Ċ\n/ count\nĠent renched\n\\ a\nĠintr usion\nĠN x\nĉĉĊĉĉĊ ĉĉĊ\nchem atic\nĠsl iders\nĠselect able\n_n l\nies e\n_est imators\nĠS vg\nĠdelete User\n(m apping\nĠì²ĺ ë¦¬\nĠantagon ist\nĠkin ase\nĠweld ed\nĠL ena\ned ith\nial i\n(p ic\nĠbre ached\nP IC\nĠco aster\nF DA\nĠk re\nper fil\nĠG ems\n_f ence\nURL Request\nâĢĻ app\nREFER ENCE\n.Ex port\nĠminim ized\nip el\nid ata\n) dealloc\nesc al\n_f wd\nmem cpy\nĠL ori\n_ Ref\nĠbar a\nĠS ellers\nĠdeterior ation\nf raction\n) ];\n/ play\nÂ ¥\n-test s\nOff sets\nO i\nĠK laus\nĠquery ing\nw ish\nap el\n_work ing\nmyModal Label\nĠto Date\nper malink\nĠf rec\nolec ules\nĠGo ose\n-widget s\nt urtle\nImpro ved\nĠroad way\nke hr\nĠastr onomy\nComb ine\nĠcig ars\n_G ATE\n/ manage\nĠGer ard\nĠProt ector\nSub system\n/ find\n/ YYYY\nĠtotal ing\nÐ¼ Ð¾ÑĤ\nĠO man\nĠinf init\n-off ice\nĠinstant iation\n. Â§\nce u\n(at om\nĠDrop out\níģ ¬\nĠcondem ning\n_b asename\n] }</\nData Context\nĠWash ing\n. ON\nĠmom my\n() };Ċ\nĠ; )ĊĊ\n/ ext\nforeground Color\nuns upported\nĠsoll en\nĠcome Ã§\nDIS ABLE\nĠon Pause\nĠÑĩÑĤ Ð¾Ð±Ñĭ\nĠA in\nG s\nĉ Task\nh awk\n\" Not\nAG R\n.get Table\nĠdiver gence\nĠneg oci\nRe placing\n] })Ċ\nill usion\nĠÎ Ķ\n_KEY BOARD\nK r\nĉ or\nç¡® è®¤\nĉprint ln\nĠSearch es\nĠFres no\nĠverd ad\n\\M iddleware\nĠì µľ\n}) ();\ntext Align\nink el\n.T xt\nĠoptim izations\nyou ng\nĠle ased\nJ T\nĠIonic Module\net tings\nese hen\nĠfavour able\nan ey\nĠother ButtonTitles\nĠTh ames\nĉ unit\nC OLUMN\nĠlo i\n, proto\n_P RI\nĠwander ed\nĠs api\nback ward\nara oh\nĠF H\nĠAl g\nĉ ac\nar ro\nåİ Ĩ\nĠS OS\nĠD read\nVector Xd\n.r mtree\n_exec utor\nĠpregn ancies\nĠpr acy\nĠW ww\nĠArch bishop\nĠme inen\nF U\n. Env\nĠenlight ened\nĠorig inate\nåı Ĭ\nĠz lib\n_S A\nĠw astes\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\npr as\nĠhorr ified\nĠCald well\nto y\n_sh ot\nĠles bi\nĠMagn et\nox ic\nS urname\nĠshow Toast\nĉD estroy\n.get External\nIL I\nĠNe ville\nts ky\nĠmel akukan\nĠ\"& #\nĠflower ing\nĠveterin arian\nĠharmon ic\nĠCass andra\n(C reate\nper se\nPer m\n) NSString\nĠis In\nĠFloating ActionButton\n/ New\nĠ ðĿ\ncap ability\nĠcuck old\nĠB ain\n(){ čĊčĊ\nPE AR\nĠj aws\nĠg ode\nĠcass ette\n.f requency\nSC ORE\n.int ent\n: [\"\nĠå¦Ĥ æŀľ\nï¼Ł âĢĿ\n/ Image\nĠsi endo\n_al location\n: B\n/ Register\n_k ategori\nun ya\n.in stances\nĠUNIVERS ITY\nĠpleasant ly\nĠg lands\nĠY ELLOW\nĠTh ick\nA mt\nĠpr y\nĠl uk\n(pro blem\nĠproject ing\n[ now\nĠest oy\n(() =>\nĠway points\nĠB lick\n.Re quire\nL ake\nĠIGN ORE\nĠQ HBoxLayout\n_res ponses\n.w r\n& action\n.char acters\nI W\npage Num\nĠdistr acting\n]- '\npe es\nounc y\nĠseg u\n.getSelection Model\nIn lining\n' aff\nĠPres erve\nĠacquaint ance\nĠan us\nin stitution\nĠ// *\nĠS ick\nĠK odi\nĠAV R\nĠbet r\nĠBern stein\n,c v\ncc b\nCA F\nĉs ignal\nè¨ Ī\nResults Controller\nĠsal opes\nĠphen otype\nub ah\n_datas ets\nĠgr acious\nĠClip board\nĠg enders\ndownload s\nEx perimental\nĠbekan nt\nĠn ive\n. Ed\ndis miss\n\\ Twig\n.A v\n/t asks\n.p ickle\n* B\ncest or\ncap italize\n.Get Service\nKey Id\n.p itch\nĠControl led\n.s aved\nĠz aj\nĠCath y\n(C ancellationToken\n-an imate\n\\\\ \\\nĠJ asmine\n.L INE\nĠboth ers\nĠbuff alo\nĠFORE IGN\nĠtack led\n_HE AP\nĠserv ic\n>> ,\nĠAct ors\n.T x\neb x\n_vis itor\n_mar shaled\n, map\nĠheat ers\nĠu Local\nĠKap oor\nĠmin ut\n.read As\nĠ ................................\n_V OLT\n.b z\nĠcorrect ing\nSE P\nbr ing\nH u\nĠG us\nA AD\nier an\nfr ared\n_ rom\nĠscarc ity\nĠapolog ise\nĠsol ids\nĠForm atter\nĠ'% $\n- vis\n\",\" \",\nUN DER\n!!! !ĊĊ\nĠEle ven\n)) ]\nĠsat ire\n\\u B\nĠsevent een\nLANG UAGE\nĠadvers ary\nĠstr ftime\nĠn exus\nub its\nĠ'% \"\nĠSK IP\nK HR\n.b at\nĠJe ans\n. ?\nĠim post\n.q ty\nCom pression\nĠprincip ales\non io\nĠbar celona\nĠCh ili\n_m ost\n. uf\nĠcontent Values\nĠF ist\nug ador\nText Writer\nBACK GROUND\nĠliv ro\nĠDes ire\nme asurement\nPro be\nĠpudd ing\n.show Error\nĠunter stÃ¼t\nãĢģ ãĢģ\nĠ Äĩe\nĠpun itive\næŃ ¢\nList Group\n.A rea\nĠðŁĺī ĊĊ\no ord\nĠscrap ing\n(t icket\nĠWo che\nĠexpected Result\nĠKosten los\nconfig ured\n_str error\n.add Handler\nmouse leave\nĠFel ipe\nĠCh im\n_C SR\nPC A\nific aÃ§Ã£o\n++ ĊĊ\ny as\nĠæĸ¹ æ³ķ\nĠID M\nĠanimate WithDuration\nĠsam en\n.sub title\n_ KeyDown\nĠT rey\nĠtempor ada\nĠsp d\nĠR c\nĠMass ive\nĠb ows\nH ospital\nĠg root\nĠp aving\nĠcho res\nĠAl ly\nĠcert ifications\nĠx box\nselect All\nGame Over\nĠcorner stone\nRe covered\nĠde em\nU ltra\nĠget Last\nĠal ma\n.text Field\nĠwa ived\n>( {Ċ\nĠE str\nis able\nĠpro ton\n_f acebook\n_TRA IN\nĠcooper ating\nung i\nAr izona\n# echo\n-ex pression\n.min utes\nĠpref ixed\nĠfish eries\n.cor rect\nĠn Ã¦\n(S prite\nMod s\nĠV ide\nĠget ById\nĠKey nes\nĠEgypt ians\n_C OD\nB ien\nre open\nigh et\nRED ENTIAL\nĠunw ind\n$ čĊ\nĠr acket\nĠfloat Value\nĠSpecial ty\noc ate\nmount ed\nAt tempts\nOff icers\nHash Table\nĠdÃ©velopp ement\nĠd ap\nĠm tx\nNarr ated\nk B\n_ST A\n- Class\nĠd ul\nĠLe ads\nĠtr Ãªs\nfriend ly\nĠFilter ing\n-pro vider\nĠÑĥ ÑģÐ¿\nĠK olkata\nmask ed\nID ata\nĠ[ |\nÂ ¤\nĠRe ese\nĠHon olulu\nTo Object\nĠthr ift\nass i\nĠcongrat ulations\nSK I\nent arios\nĠFR ONT\nu fig\nh on\nĉget line\nĠheart y\ncal ing\nĠÃ© conom\nĠ** */Ċ\n_H ERE\n` (\nMich igan\nBe ans\n-r oute\nĠpr inc\nĠGuid ance\nĉ emit\n. OP\nth ic\nel ope\nĠI Request\nĠhandle Close\ndata Array\n.Execute Scalar\nEP HIR\nĠConvers ely\n( Font\nĠmet re\nĠSpi eler\nEll ipse\nĠP VOID\nĠData Context\nconstruct ed\nAND ING\n----------- */Ċ\nBon jour\n_P HP\nprogress bar\nNot SupportedException\nĠverd ade\n/ change\nors k\nĠarom atic\nres pons\nre alloc\natis ch\n, ev\nĠSi oux\nte a\nĠP oe\nä¹ Ī\n_c mos\nĠal b\n(l r\nĠApp arel\nĠdel lo\nĠÑĤ Ð¾Ñĩ\nĠstream line\nw char\nAd obe\n, module\nĠunins ured\n} \")čĊ\n(\" //*[@\n- phase\nĠfe u\n_t A\nzo ek\nĠfol lic\nĠt ug\nĠbe find\nĠt allest\n(m t\nied y\n_L ength\nĠst aunch\nĠremove Object\nĠfl akes\ngres ql\nĠin kl\nĠS CSI\nĠK eeper\n; l\nĠHind us\n_P ED\n_CON D\nĠLa undry\n++ ]=\n_A UX\nĠby ÅĤ\nĠaument o\nmargin Left\ne quality\nĠL uz\nĠE ck\n_m as\n_l ens\nĠster ile\nclient es\n'} )ĊĊ\nĠgood will\nĠEll ison\nSpace Item\nĠshow Message\në¡ľ ê·¸\nĠcontr ato\nPost ing\n.inter polate\n(f ill\nĠbull pen\n.g ener\nĠh ues\nĠmemor andum\nto Promise\nĠBy z\n(p x\n( Program\nRE SSION\nb fd\nĠplant a\n.mouse Position\nĠSp am\nè´ §\ntele gram\nag y\nĠgef unden\n.D om\nĠlin eman\n.btn Delete\nĠselect ively\nëĵ ł\nIF S\nĠGet HashCode\nĠret ir\nĠrequis ite\nBT Tag\npl ib\nĠfire fox\n.tr ade\nĠ# $\n.com press\nĠl aden\nĠDirectory Info\nĠM odes\nĠk one\nĠdiv ul\nĉ hs\ncro ft\nĠWH Y\nx CE\n/ Grid\n_A UD\nĠS cre\nĠerror Thrown\nSad ly\nat itis\nĠneglig ible\n.Register Type\nĠMo ist\næµ ĭè¯ķ\nĠB MC\nleaf let\ny ne\nro ken\nĠv inc\nt ty\nĠbe urette\nĠAl pine\nĠMc M\nSpo iler\nd istribution\n-r ays\nĠë° Ķ\n_parent s\nĠcr ates\nĠcomm uters\nĠArg entine\nï»¿ /*Ċ\n/ framework\nĠchannel Id\ngre ens\n.setStyle Sheet\nĠin accessible\nit ates\nĠwar med\nF abric\nget attr\ndisplay Text\n_MON ITOR\nĠsidewalk s\nInt ialized\nĠk omen\nĠdiscrim inator\nĠN avigate\n(D irection\nĠSp it\n_add itional\nĠh ton\nĠesper a\nĠdel ve\nĠcompart ir\nĠpre empt\nprocess ors\n-g it\nbe en\n.S UB\nĠRee ves\n/ gen\n; top\nĉM PI\nZ W\nG EST\nabil ir\nĠprogress ives\nha ft\nA uf\nĠAction Type\nle o\nĠut an\nIn icial\n> User\nĠ});ĊĊ ĊĊ\nĠØ¨ Ùĩ\nĠCh ains\niss pace\n/ rem\nSQL ite\nĠcease fire\n$ ar\nTR S\n:// {\nĠSpir its\nØ º\n( Size\nĠn ug\nĠO lsen\nĠchlor ide\nĠDisplay Name\nĠP ert\nĠget Max\nĠEdit ors\nĠP ais\nasm us\nV ac\nĠTable Name\nĠnu anced\nFor Member\nĠsleep y\nad visor\nĠst alking\n.m edian\n_A tt\nĠget Node\nĠF ancy\næķ° éĩı\n.Attribute Set\n(in struction\nx BD\nĠk op\nAff ected\n/ navbar\nĠail ments\nĠRam adan\nĠAcc ent\nĠParam ount\nĠG AM\nä½į ç½®\n= */\n.IN PUT\n< Project\nLe ast\nĠGen ome\nAccessor Type\nleftright arrow\nvent ing\n/p ayment\n_P tr\nĠt ame\nĠMEM BER\nĠBit coins\n.ep am\n.P lease\nĠsch war\nCppMethod Intialized\nĠun icorn\nĠbed eut\n_H S\nĠaut ogenerated\nĠL illy\nĠAss ess\nĠHe idi\n.s ources\n.t ell\narg ins\n(\" '\",\nÐ» Ð¾Ð¶\nĠErot ic\nĠjust o\nĠes ac\ncom a\nĠCol ony\nĠp ct\nĉ en\nĠem pez\nĠDe leting\nN EL\nĠen am\nPress Event\nĠRes olver\nĠR TE\nF x\nĠInc orrect\nĠy c\n_ reading\n; base\nĠhas htags\nĠMar iners\n.Set Float\nĠreass uring\nirs ch\n(user id\nĠ=== =\n] )));Ċ\nk f\nĠt iled\neg uard\nClient es\næĻĤ éĸĵ\nd sl\nR ights\nĠPs alm\nd uring\nClear Color\nust a\n< Comment\nĠno zzle\nĠPL ACE\n/h istory\nih u\ni Var\nĠg erm\nĠtrim ming\nĠHunt ers\nĠRS VP\nInterest ingly\nj ian\n)) {ĊĊ\n.Ex pect\nĠTo ilet\nĠwall papers\n.Web Servlet\nar pa\n/main window\nh q\nĠu y\nĠind ign\nChecked ChangeListener\nĠcall ers\nĠMouse EventArgs\nĠJ ScrollPane\nĠw ÅĤa\nre positories\nĠÅĽ w\nĠrefer encia\nĠi ota\nĠc argar\n_ observer\nH CI\nsil ver\nĠdevast ation\n-sem ibold\nĠExpl ain\nĠBlock ly\n.X r\nesture Recognizer\nCancel Button\nĠLock e\nT rial\n_PL ACE\njual an\nĠRub in\nStr ipe\nĠmeta Data\nconf idence\n_b attery\nĠis l\nĠbo a\n.target s\nlij ke\nĠadolescent e\nb ew\n, False\nĠy Offset\nPre viously\n= path\n_A A\nĪ æĿĥ\nĠbake ka\nĠle e\nĠBlock ing\n/ title\nĠå¼ Ģ\nĠStevens on\n) object\nist ros\n.get Server\nĠplant ation\n_ Box\nĠ'; '\nt ica\n)) ];Ċ\nĠdispar ities\nÆ°á» Ľ\nicro bial\nĠsp as\n/ DD\n(point er\nĠmid point\n.get ClassName\nĠTot ally\nĠcon gen\nĠt Ãªte\n.x lim\nCOMP LETE\n(f i\now ard\nÐ¼ Ñı\n. asc\nĠpag inate\nĠlur king\n.sign up\nST YLE\nĠwor sh\nh v\nĠdef ensively\nĠLuther an\n.f un\nĠÐ¸Ð½ ÑĦÐ¾ÑĢÐ¼\nps c\nĠad mon\nĠEst imated\nĠMySql Connection\n.status Strip\nĠant igen\nĠherr amient\nĠConsum ers\nĠY T\n.masks ToBounds\n.x ticks\n: request\nĠM oo\n- au\nĠto Return\nĠS apphire\nco x\nexampleInput Email\nĠcor az\n(p iece\nĠreconstruct ed\n_sign up\n']) ?\nB illing\nĠCrow ley\nstorm s\nfor cer\nĠsuprem acist\n_w heel\nĉp c\n.get Document\n.un squeeze\n. grade\nell ung\n.sh opping\ncustomer Id\nĠmed idas\nĠMom ents\nenu ous\nIFIC ATE\n#### ###Ċ\næĸĩ ç«ł\ná»į c\norm sg\nal om\n-tr ade\nĉb t\n/ student\nbr ig\nann ess\n( ra\nĠr icerca\nSpe aker\nr Ã³\ng test\nG lyph\nÃ¼ gen\n@ Json\n(sum mary\nK om\nb eth\n/ engine\nCl imate\nsubmit Button\ne ve\nĠ================================================================= ============Ċ\np edia\nĠusern ames\nĠJ M\nĠm se\nins pect\nĠSnap dragon\nĠdefense man\nĠUITableView Delegate\nindh oven\nĠBo yle\nĠAl ta\nard u\nĠwrest ler\nĠStr ait\nĠe greg\n_b aseline\nEnvironment al\nĠinv it\nĠB TS\nĠIS IL\nĠco op\nh ores\n# @\nĠcomp el\n(s kip\néĺ ³\n_DE PRECATED\niph ers\ndouble Value\nĠAR R\n.S core\nĠchrom osomes\ncl ause\nĠLu igi\nĠsun screen\nĠcy tok\n.toJSON String\nĠpro pre\npo ons\nmitt ers\nĠkitt ens\nĠcath olic\n.l t\nÂ ¬\n_qu ick\nĠvra i\nĠI ReadOnly\nĠH iggins\nĠsh oved\nĠlia ison\n_ own\nĠmosquito es\n_ ng\n.Set KeyName\n_Render er\n_O sc\n.un register\nMessage Type\n-f ounded\nĠsoutheast ern\nĠhas htable\n.ind ent\nĠjoy ful\n_se x\ns ad\n.de bian\n_g as\nĠper ish\nĠh ete\n_single ton\n( grad\nĠktÃ³ ra\nĠdw ind\nitt al\nSee ing\nĠR ookie\nĉ Label\nsh an\n<<<< <<<<\nĠr Ã¨\nies el\narr era\nch rist\nĠcur vature\nĠe phem\nFormat ting\n.d ictionary\n.Set ter\nĠH istogram\nĠSt uttgart\nĠp acing\nut ations\nĠNS K\nĠPam ela\nĠB ail\nĠpolar ization\nĠG Ã¶\nĠEl aine\nĠkick off\nĠchap el\n= post\nĠmid way\new is\n_M R\nie ee\n- testing\nme z\n> --\nĠdoctr ines\nĠmil ieu\nĠR ADIO\nt aken\nRes pons\nĠhand set\nĠcont ro\nĠAp plies\néĺ Ł\n.Binding Source\nĠØ ¬\nĠhum ili\nĠMel ania\nOver lap\n( Parcel\nĠware houses\n.Get ById\nĠfrank furt\nĠW itt\n.pro j\nĠS asha\nĠRe ver\nĠartic ulated\nanch es\nĠSem inar\nĠD agger\nĠAg ile\nOW L\nĠB s\nok lyn\nE ta\nĠag osto\níķĺ ìĹ¬\nĠopt arg\nĉon Change\nĠRO AD\nGB K\nĠent fer\n.Auto Complete\nĠhelf en\nC heap\nĠapprent ice\niot ics\næĬ Ģ\nOf Year\ninder ed\n.M SG\nĠMar ÃŃa\n(in place\nĠfin de\n( DE\n.Serial izer\n$ time\nunn able\nMain Thread\ndeploy ment\nĠmp fr\nrichText Panel\n);ĊĊ ĊĊĊ\nĠd anych\n_BE FORE\n_ ary\nĠBa um\nĠturb ulent\nĠMult imedia\nĠphysic ist\nåľ º\nAn imate\n= F\nP ago\n/t witter\nott ie\nuc ursal\n_p agination\n. archive\n-d ocument\nin ine\nS eller\nad ress\néĵ¾ æİ¥\nÐ°ÑĤÐµÐ³ Ð¾ÑĢ\n_f rm\nno DB\nig ated\nĠOs ama\npet to\n> y\n- Un\nĠcopp ia\nAlmost Equal\n. lex\nĠleve led\nĠSC IP\n_H OOK\nILog ger\nne au\nï¼ ŀ\nÛĮ ÙĨ\nikh ail\nĠup loader\nĠCarol yn\n.add Value\nth inking\nprint Stats\nĠcamb ios\npo i\nĠB ED\nĠxb mc\n. ï¿½\nĠsar cast\nĠN EC\n$ body\nAll Windows\nĠyoung ster\nĠune asy\n( AT\nĠnostalg ic\nPR ICE\nĠSe iten\nĠm aka\nĠlim p\nĠcontr asts\nC offee\nĉg en\nĠper ms\nĠNeed less\nou ve\narch ing\n_pen alty\nrow ad\nong an\n_d ur\nĠif ndef\nia ux\nĠcapac idad\nĠN orte\nĠ-*- čĊ\nif es\nĠM ansion\n# Region\nC ancellation\nĠnear ing\nĠl angu\nere quisites\n_ex periment\nond heim\n], &\nĠCool ing\nĠsaf ari\nĠpione ers\nĠfarm house\nĠdist ancia\nĠdesert ed\nĠN arrow\n.s g\nĠentr ar\n. ra\nĠrefurb ished\nĠinter connected\nĠsurv ives\nĠqual ifiers\n_CH ARS\n- ajax\nĠR ory\nĠkole j\n/ GL\n_ legal\nĠT YPES\nĠVo ices\nĠF erd\nuj emy\nĠscore board\nĠB OT\nx DD\nĠIv anka\nĠh sv\nnod iscard\nĠTHE SE\nmo jom\nĠtick ing\npe q\nĠæ ·»åĬł\nĠNic ol\nĉ angle\n_alloc ated\nĠstr ut\nx DB\nE valuate\nĠV ARIANT\nĠreferenced ColumnName\nlo h\nĠRequest Options\nĠc oco\nĠble ach\n_ organization\nĠCH O\nHTTP S\n_bar rier\n.visitMethod Insn\nĠv ite\nĠ- $\n[ cell\nĠcess ation\nĊĊĊĊĊĊĊĊ ĊĊĊ\nĠÑģ Ð°Ð¹\nE valuation\nĠC IM\nqual ities\nXml Attribute\nĠEm oji\nĠ\" ('\nĠT URN\nx sd\nĠG IS\nĠcreate Selector\nripp le\nĠunn ecessarily\nĠnew Pos\nĠsymbol ism\nob utton\nĠsam o\nĠ(* ((\n.re ward\nK ERNEL\n(j ScrollPane\nĠby stand\n_ic all\nĠd ungeons\nĠconst ellation\nĠembr aces\nĠInf ant\nA ustin\n. abstract\nĠcomp agn\nĠCondition ing\nM ais\nVer ifier\nĠPy ramid\nĠm Listener\n_build ing\n.Red is\nĠTo oth\nLOG GER\n.Async Task\n_pr incipal\nexampleModal Label\nĉ Local\nMark ers\nĠdol phins\n.Text Edit\n' al\nĠover st\n-dr ive\nĠins omnia\nĠad b\n_que ues\nE b\nĠDam n\nistring stream\nĉD uel\nib ble\nĠim read\n.f inished\nĠmis represented\nÅĦ st\nion ales\n\" Now\n.Select SingleNode\nĠweaken ing\n_in structions\n- os\nĠstart Point\nĠM ime\nĠH eld\n|| (\numm ings\nok ino\nĠre fl\nrid or\nInt egrated\nE Object\npe ats\nC ircular\nĠS odium\nĠpodr ÃŃa\nmed icine\nĠpar anoia\n/ background\n(b order\n_s low\nĠpresent ViewController\nĠconting ency\nĠPas adena\nlo ops\nĠO c\napp lications\nĠm pg\nĠA Q\n.Win Controls\nled on\nĠRe q\nĠAc res\nib ir\nĠget Window\nĠY ah\nĠneed y\nâĸ º\nĠT OM\n([ ...\nĠf q\nĠCam den\nordin ated\nĉ children\nve get\nĉd irection\n< Field\n_cor rection\n( END\nHE ET\nF alsy\n.dy lib\n_RE PO\nĠbrill iance\nog rÃ¡f\nl od\nĠpowder ed\n(A rt\nĠM ILL\nÐµÐ´ Ð°Ðº\n_sim ulation\nĠsm ashing\nĠurl String\nĠdread ed\nri eg\n/ ns\nĠInter preter\n: max\nder iv\nĠP ett\nĠmod Ã¨le\nĠampl ified\nĠSign als\n.nav Ctrl\nå ĸ\nĠsepar ators\nĠSH IFT\nĠf idelity\n.s on\n( ca\nĠPL UGIN\nĠlight en\nP BS\nf loating\n( loader\nĠpe eled\nh ic\nĠt aped\nĠnov embre\nĠstuff ing\nĠFire arms\n.Draw able\nĠcort ical\nĠGUI Content\nĠVer onica\n_r sa\nĠcommem orate\n.S YSTEM\nĠdam s\n.is True\nĠPregn ancy\nìĭ ł\nĠaud itory\n(C ell\nĠinv ading\nĠfor Each\nĉ Draw\nMarc us\nProcess ed\nĠspr aying\nĠOutline InputBorder\nesser act\nĠ æľĢ\nP g\n- quarters\nĠsk l\n/pro viders\ntoHaveBeenCalled Times\nĠcos mos\nĠfinal ists\nĠslee per\nĠMaterial App\nd ac\nĠbusiness men\nÄŁ er\nB ias\nd atal\nUp Edit\nĠT ir\nIST IC\nĠH era\n_inter section\nĠL ama\nĉ append\nĠpollut ants\nĠS ikh\nĠcollabor ations\nnut rition\nĠh amm\nĠD illon\n_D OT\nĠfirst hand\nSO AP\n= z\n.pr iv\nM ismatch\n.send Redirect\n.link Label\nĠw reak\nMar vel\n/s l\n################################ ########\nĠmov able\nÑĥ Ð¹\nĠDr inking\nace a\nĠtrov are\n.C SS\nĠk ern\nv fs\næķ° åŃĹ\nĠst esso\nĠFOR CE\nĠl ief\nĠachie ves\nĠE lijah\nGet Property\n/* @\nĠHuman ity\n( The\nw arm\n> \")\nĠcomput ations\n.t intColor\nĠus leep\nĠGPL v\nnd ata\n/ cli\nM oh\n> \"čĊ\n.b ridge\nĠenc yclopedia\nĠB IN\nĠSup pose\nĠØ¨ Ø§\nrie ved\np agen\nir se\nP acific\n.full Name\nĠal lege\nill ustr\nĠê² °\nĠdeter rent\nĠNap les\nin cluded\nR ates\nĠhas Next\nĠJer emiah\nĠFern andez\nĠget Order\n.Sub scribe\nP oss\n: )Ċ\nĠWork sheet\nbl end\nĠw itty\nĠcounter feit\n_d y\n/ Runtime\nĠsod om\n/ do\nĠ< |\nĠRec ru\nå£° æĺİ\nĠmodel os\nĠbit rate\n.c rm\nl us\nĠfile Type\nå° ĳ\nĠmar row\nĠVenezuel an\nĠsc av\nĠST OCK\nĠIm possible\nnavigation Bar\nĠsight ings\nĠcellFor RowAt\nĠrect s\nĠa irl\nĠL ester\nĠnod s\n@ register\nx CD\np name\nĠpot tery\nĠz war\nĠSunder land\nâĢ¦ but\n/ control\nĠcalcul us\n(is olate\nplace holders\n*) _\nĠ} }čĊ\nĠKoh ana\ncod ile\not eric\nĠprep aid\nĠgrand ma\nĠsul ph\nĠG aines\n\\ Module\nĠcoun selling\n-g eneric\nĠT ues\n.G radient\nĠTh urs\nĠent ra\nĠadv ancements\nSW EP\n_MARK ER\nĠkl ub\nĠm Ã©g\nffff fff\n\"] ){Ċ\n/ compiler\nadi ens\nString Value\nĠSc ulpt\npan els\nå½ ¢\näº§ åĵģ\nar ÃŃa\nĠder ail\nĠL och\nĠpe pp\nmp z\nĠâ ŀ\nK V\nĠDiet ary\nARR IER\nĠp oo\nĠR ANDOM\nè ³\nĠHom ework\n.Validation Error\nĠMarx ism\nÑĥ ÑĤÑĮ\nĠcoment ario\n_B OTH\nĠpr m\ncast Hit\nipl ina\nĠV oters\n. assignment\nnet t\nS AMPLE\nj is\n\" title\n.valid ators\nĠ\" ?\"\nun idad\n_f igure\nĠacc ru\nĠRem ark\nFound er\n.initialize App\nĠPres ents\nĠMULT I\nv ester\n.visit Insn\nĠget Path\n_d ifferent\nĠlo osen\nĠarrog ance\nĠj uni\nĠZ ahl\nĠGC BO\nĠmoder ators\nLine Color\nĠNode Type\n_b elow\norg t\nĠHar lem\nĠOr well\n_UN IX\n.re start\nit he\nĠgen ie\nĠcl ad\n': {'\nĠshowc ased\nĠlar vae\nMich elle\nĠL H\n.get Log\nConstruct ed\nĠh va\n_sub s\nĠd ab\n.document ation\nĠn ig\nĠMand arin\nâĢĶ are\n-p ic\n_c orners\n.B ot\n][ (\n__ ':čĊ\n.Editor Button\n-s yntax\nSand ers\nĠT anks\ndes ired\nstantiate ViewController\nG ear\nĠuser Model\nĉ control\nData Base\nĠDeb ate\nines is\nĠx e\n.m agnitude\nĠy an\nĠApi Exception\n( which\nather ing\nConsider ing\nĠAL PHA\nç ¯\nĠRank ings\n.l ife\nê° Ĵ\nOFF SET\n.tele gram\nĠfav icon\n_s sh\nĠED GE\nRe fs\nand an\nĠadoles cence\nĠSh ank\nĠSw amp\n_p erc\nĠcontr ario\n.n y\n.\" ),\nĠun ten\n_EN SURE\n/ orders\n(c f\nĠunt reated\naz en\n( InputStream\nĠapproval s\nĠgerman y\nĠaver e\nTri ple\n-b ars\nĠset Page\nJ ac\nĠF ires\nĠD AYS\nç¨ ¿\nĠscratch ed\nĠB EN\n-w ife\nĠintellectual s\nĠpou co\nĠstabil ization\nĠpel os\nĠST ORY\n< fieldset\nĠMaid en\n.C ircle\nĠsm Ã¥\n//////////////////////////////////////////////// ////\n/ end\nèĭ ±\n(n umpy\n.panel Control\nchr ift\ncontin ental\n_p el\nDS L\n< \\/\nĠO PS\nĠNo on\nĠund isclosed\nĠY in\nsp o\nĉdes cribe\ntog roup\nĠdi apers\nĠm Handler\nĉC lose\nĠrend ition\n={ ({\nEnt ering\n(D IR\n_ OLD\nĠSt ing\nĠP awn\nuss es\nĠget Code\nItem List\nĠind is\nĠ> \",\nĠcon fl\nĠdomin ates\nthes ized\nster ed\nĠc ac\nĠG enuine\n< Path\nĠHod g\n-f ly\n.c id\nĠobject Id\n(# )\n.moveTo Next\nDialog ue\n<p cl\nte arDown\n') }}Ċ\næ¸ ¸\nL iver\nMatrix Xd\nĠcr appy\n_DE AD\n.p artial\n.DropDown Style\nf ur\n.C ollapsed\n-t own\nIC IAL\nD ireccion\nĠset Result\n/ result\nĠShe ep\nys cale\ncont i\nĠrecon oc\né ¾\n[ block\ncl azz\nĠbenef iting\nA AP\n.re quires\n.C ookie\nĠcapt ivity\n.Se ction\n] ));\n-c aret\n(v a\nĠv Ã¤l\nĠHigh lands\nNot a\nĠF ML\nw inter\nĠag endas\n__, __\nd emand\nĠt utors\n_SY M\n( CH\nĠune quiv\n.trans itions\nĠCal ories\nĠEconom ist\n.P in\nĠdef lect\nEx posed\nĠg ep\n.Layout ControlItem\nĠr ak\nf iber\nĠap opt\nĠEnum s\nite ur\nĠmod ifies\nĠreluct ance\nĠsp ills\nAsc ending\nĠtemper atura\n- interface\nĠcowork ers\nĠ: \\\nĠRoundedRectangle Border\n<Key ValuePair\nP arsed\nĠwithd rawing\n(h ist\nĠtheor ists\n- ng\nĠch iff\në¥ ¸\nPA IR\nĠBrew er\nK a\nĠBow ling\n_t l\n'} ).\nĠprob ing\nA rs\n.re alm\nĠest ates\nv ary\nĠK es\nĠ\", \",\n}, čĊčĊ\nPl anning\nĠRe con\nĠcon clus\nv ault\nĠincent iv\nĠb innen\nĠPhill ies\n.L oader\nĠFall en\n_T wo\nĠB ias\nRole Id\nĠParcel able\nĠD odd\nĠ$(\"# \"\näº¿ åħĥ\n-m ean\n( Output\nATTR IBUTE\nĠsecret ive\nĠPer ipheral\nĠF iled\nĠå ·\n_m edian\n. IC\nĠArray Buffer\n(T ABLE\nĠ] ĊĊĊ\nĠanth ology\nĠobsc ene\nop ause\nĠE SV\nÃ¡ veis\nose mite\nGr upo\nĠMO CK\nĠunavoid able\nĠcov id\nh ower\n.N ever\nSet Active\n{ text\n_pro ba\n\\ Configuration\nĠBry ce\nĠco erce\nĠVander bilt\ng ements\nleg g\nĠre but\nĠV IN\nåĪĨ éĴŁ\nĠobsess ive\n/c md\nĠkom ment\nĠLa ugh\nëĭ Ī\nĠs elves\nor ra\n. rooms\nĠcomplex ities\nĉ operator\nAltern ate\nĠsort ie\nget Num\nĠreal izado\nDo ing\n_G rid\nĠset SupportActionBar\nÃ¤h lt\nå Ķ\n: {čĊ\nInter ested\nĠdimin ishing\nĠL oot\nAdapter Factory\n-run ner\ns aving\n( sem\nf ad\nED URE\n_document o\nĠC aleb\nĠgu ise\nĠMc Gu\n(un its\nĠbez ier\nĠp att\nĠpel vic\nĠcon osc\nact ivo\nĠMal one\n.T ake\n(s qrt\nstash op\n- ended\nĠM idi\nĠB anc\nĠPep si\n_M AY\nĠpl l\n/in et\n-en h\nĠIt al\nm our\nĠreluct antly\n.rc Params\nĠp als\n.p kg\nĠform as\nlieÃŁ lich\n- books\nom aly\nĠre command\nPLIC IT\ni Äį\n.cg Color\n( Board\nÐµÐ½Ð¸ Ð¸\nĠL EN\n_- _\nĠUn o\nĠNOT IFY\nh ana\n[ slot\n\\ admin\nIn Inspector\n) const\nĠfl attering\nigram s\nc ac\nĠheart felt\nInd ustrial\nAir port\nX I\nĠvalid ar\nrep resentation\nĠRent als\nĠo mission\nĠmyth ical\nĠEntr ance\nĠserge ant\nĠwrite To\nĠNor wich\nĠLion el\n-b al\nĠZ we\n_re nt\nĠrem ar\nĠBah amas\nĠB ale\n:\" \",\nState Manager\nĠb Ã©nÃ©\nĠ! ***\nĠblock ers\n.s el\n( LED\nĠf sm\nĠw iping\nĠz aman\nĠRe i\nagu ay\n.. '\nĠlou ng\net code\nĠl anz\nc itation\n[ `\n- el\nas bourg\nĠS OLD\nĠOrch ard\nCH andle\nĠLo ft\n.div ide\n- With\n/d esign\n.Service Model\nM is\nĠraw Data\nĠinter acts\nĠErot ik\nĠon PostExecute\nè Ļ\nĠv ex\nĠstring ify\nyn es\n_E mail\n_ OM\nqu ite\n_effect s\nAD X\nĠadorn ed\nss f\nedit ar\nĠMad ame\nĠref ute\nĠLu ca\nĠWolver ine\nsex o\nAnd re\n< Route\nĠSc enes\nĠre order\n_m x\ncreate Time\nĠsy nt\n, model\nic rous\nĠMO USE\nê ¹\ncom pression\nĠpr inces\nĠshame ful\nĠp au\nĠT ED\n(coeff s\nà¯ ģ\n/ umd\nĠcan yon\n/ render\n. used\nĠAg ree\nĠJew el\n/ command\nBar code\n(de ad\nweb socket\num u\nG LOSS\nĠfor tn\nĠbo asted\nĠ\"\\ \">\nist ung\n-m achine\nĠincident al\nĠm M\n-read able\n.f x\nĠPOL IT\nĠsy mlink\n( using\nx ED\nĠ\"\" \".\n.Std out\nĠè ĭ\nĠal macen\nĉ trigger\n-t ip\nĠCOM MIT\n. ingredients\nĠmanifest s\nĠO SS\nĠH aut\n/ loading\n.Type String\n(c lean\nĠL IC\nĠBar bie\nOO SE\n. âĢ¦\nĠInv itation\nĠrede emed\n). '</\nĠim db\nĠbel ang\nĠscr apped\n-n il\nĠP roud\nÐ° ÑģÑĤ\n.S IZE\nĠset Visible\nĠr aining\nĠleng ht\nĠan ak\n_C MP\nĠpanor amic\nĠg im\ns aid\nĠpro gen\nĠGB P\nâĢ ł\nĠinvestig ates\nĠpr Ã¨s\n/n avigation\n.m otion\nĠLight weight\nĉĉ ĠĠĠĠĠĠĠĠĠĠĠĠ\nĠont ology\nĠNI H\n(s imp\n.p ull\nĠpro positions\n@Web Servlet\nĠre define\nĠEN ERGY\nìł ¸\nORIZ ATION\nĠVer fÃ¼g\n}} ],Ċ\nĠwe gen\nà¹ ĩ\n&o acute\n. Board\nĠcul pa\nĠGen etics\nĠ} >\nĠadam ant\nãģķ ãĤĮ\nĉa udio\nê¸ Ģ\nĠnum eral\nĠrestr aining\n. INTERNAL\nĠM oms\nĠIP Address\niment i\nĠalphabet ical\nĠJ FK\nĠAt tempts\nfr age\nĠd arm\nĠbas eman\n= log\n, error\nĠDISCLAIM S\nĉtext ure\n- covered\nĠPl um\nĠåķ Ĩ\nĠp Ã©ri\n(re view\nĠFor ced\nF H\nĠì ´Ī\nĠeyeb row\n_REG S\nĠchest s\nĠL argest\n]] :Ċ\nUT OR\nĠen quiries\nĠco ke\n-c atching\nĠGe ography\nat el\n(pro d\nor Where\nN ine\nĠP ied\nĠadjust s\n(p rom\n_m enus\n_ex am\nĠNotification Center\nĉd s\nLI K\n_t witter\nC RC\nĠe ux\nĠSt able\niy or\nĠcarbon ate\n.s al\nM apped\nie ving\n) y\nynam odb\n.Compare Tag\nĠsever ed\n' email\nĠfor sk\nlex port\nIMIT ER\nĠAp ex\nĠh mac\nĠO dds\nover rides\n:\" ;čĊ\nĠopi oids\nĠmes mer\nĠG AL\n-l ines\nĠapply Middleware\nĠser ia\nES IS\nĠnil ai\nĠm alls\nĠPa olo\nĠL ent\n.build ers\n/ &\nĠCl ips\nĠJur assic\nâķ Ŀ\n- cond\nãĥ¼ ãĥĪ\n| wx\n.h ouse\nĠher aus\nĠh k\nĠC oco\n\" \\Ċ\nĠaccred itation\nĠR ach\nert est\nshort code\nĠvalid ations\nUL SE\nĠexcer pts\nSeek Bar\nĠget Location\nĠf enced\n(g s\nĠl ys\nĠhar ms\nĠHom o\nâĢľ She\nĠâĢ »\n= session\n_COM PILE\nMe ans\nĠpetition er\nIM O\n\"] =>\nd be\n_g ps\nĠm j\n_exp ire\nĠD AN\nĠx v\nĠfunc iones\nĠsh aky\nS ugar\nĠget Result\n<T oken\nhttp Client\n.on Pause\nst i\nSn ake\nM appings\nĠRe aper\nĠfre i\nĠCos mos\nu ers\nĠH aj\nĠBl aze\noj is\nCr Lf\n.pro c\nĠo tp\nĠDraw s\nĉ REG\n(' ''\nĠgener a\nĠAtt ached\nRE M\n% ;\">\nurn ished\n_r p\nĠzo als\nĠass orted\nit ized\nĠcam ino\nĠab ducted\n.to Be\n'] ):\nĠMo or\nIn cluding\nĠgraz ing\nset Status\nairo bi\n_ Execute\nif iant\neld o\naut omatic\n($ )\nĠle aps\noned DateTime\n(l ayers\n-produ ced\nĠWork book\nĠenorm ously\nĠdepress ive\nĠa aa\nEmbed ded\nB UM\nĠel les\nĠboard ed\nÅĽ my\nĠmas ih\n_gen es\nĉ Texture\nist ar\nĠAugust a\nĠApp MethodBeat\nĠk ode\nabe z\n_p ieces\nC urr\nĠliberal ism\nD ick\nA le\nĠqu ale\n} ';Ċ\n. answers\nĠJ AN\nĠP URE\nĠcan oe\nĠS AME\nQual ifier\nĠdb name\nĠInn oc\nĉ TRACE\niv re\nĠme ch\nas el\n\", [\nĠas ia\nĠCanter bury\n.DataBind ings\nk ah\n() )))\nĠdz iew\nre te\nĠscreen ings\n.M OUSE\nĠbus iest\nĉ renderer\nĠtestimon ials\nĠas pire\nfort une\nĠM SC\nĠd amping\n\\ \",Ċ\nW el\nW ik\nĠìĹ ¬\n(t id\nĠCann es\noc op\n> \"+Ċ\nfac et\nĠsl ashed\nĠLib eria\nSm ooth\n_ che\nLab our\nĠem inent\n: X\n\\ Backend\nĠ++ )Ċ\nĠteam work\n_ agg\n.S erve\nĠS ND\nĠP ICK\nĠw ipes\n/ Typography\nĠA PA\nik ki\nĠc oder\ng aben\nĠun know\n.Dep artment\nà¸± à¸ļ\nĠplayer Name\n* e\n< Block\n_up d\nĠGib bs\nle asing\nĠColomb ian\n(P HP\nĠ*** !Ċ\nĠìĿ ¼\nĠCurt ain\n/ ay\nÙĦ Ùī\ns ports\nĠdes ea\nir Ã¡\nĠun conditional\nĠth rom\nĠCHR IST\nĠH OR\nosc opic\nĠya ÅŁ\nĠnost ro\n... \");čĊ\nĠsl ur\nĠh atten\nĠpestic ide\nĠfre eway\nĠC oh\nĠwann once\nĠme iden\n_sub str\n_C SS\nĠS ymbols\nà¸· à¸Ń\nDE T\nĠMadd en\nĠrequest er\n.v irtual\nĠwx Default\nĠautomÃ¡t icamente\nbr ids\ni T\n.P riority\n'); </\nb ung\nDead line\nCon crete\nĠnext Page\nĠë° Ľ\nĠSt oke\nk op\nĠÐ± Ð¾Ð»ÑĮ\nĠProdu k\n-m aker\nĠProject ile\nancell able\nĠTHE IR\nTo Remove\nEM U\ncom mercial\nAV ED\nĠwe aving\nĠbi ome\n@ Setter\nq ml\nĠbroad en\nĠÑģ Ð¿\nIS R\nĠde activated\nĠselected Index\nri ous\nelp s\n.E scape\nĠpol led\nqu ia\n_ref l\n_m ime\n<Audio Source\n( Transform\neven odd\nĉr andom\nloc s\nĠde ut\nre placement\nĠexam iner\nHas Key\nĠë¦¬ ìĬ¤íĬ¸\nĠClo th\nĠà¤ ª\nĠReg istro\nĠEst her\nĠShared Module\n.b orrow\nĠoscill ator\nĠf ools\nº «\nĠbo asting\n_p ulse\nsh aring\nĠpist ols\n_PL AN\nĠsept ember\nĠmust er\nĠmarch Ã©\nCHE MY\nĠsu i\nĠgebru ik\n. ='\nerr ated\nĠL ia\nĠha unt\nĠC ush\nroute Provider\n\" |\nend php\n\"] ]Ċ\nĠav a\nï¼ģ \",\nì§ ¸\nĠcol a\n_S PELL\nĠal Ã©m\n(L anguage\n(d ummy\nĠbunk er\nĠEmp resa\nĠcreate Context\n: min\nĠBO OT\nĠMer edith\nZ h\nĠDown ing\nwj gl\n.d c\nsd ale\nĠincon venient\nĠread me\nNavigation View\nCON DITION\n.de p\nĠrÃ© uss\nĠopc iÃ³n\nĠAccount ability\n.M ar\n-g uid\nED GE\nEvent Manager\nĠdisc iple\nuck les\n}} >\ninter ested\nFilter Where\nĠp uss\n-pro xy\n_status es\nĠ[ #\nun fold\nĠRon nie\n&& !\nĠa cesso\nu os\n_y ield\n(c alendar\n(s ound\nĠdata Array\nĠY ates\nĠprocess ion\nE FAULT\nĠG HC\nam ura\nĠstr icter\n.B OTTOM\nĠhabit ual\nx AF\nAV ING\nĠsetup s\nĠ= {Ċ\n** (\nĠs ok\nĠret ina\nĠFire place\nin vert\nĠFor rest\n< data\n\\ Action\nO UGH\nĠcare less\n.get Active\nes es\nĠzd jÄĻ\n)) *(\nSE M\nĠPan ic\nTouch es\nĠpre co\n/ accounts\nä¾ Ľ\nPostal Codes\n- plugins\n< message\n(p ower\nĠperc ussion\nĠc Ã©l\næİ ¨\nĠd anced\n_SCAN CODE\nĠS itting\nĠL oki\nSh aring\n.D ir\nĠsch wer\n_L A\n.Menu Strip\n_z eros\nĠfix ation\nĠA mit\nĠcom plied\n.space Between\nĠarrest ing\nĠS ug\nĠper for\nĠkom ple\nĠEss ence\nĠple in\nsim ulation\nĠcreated By\nĠExped ition\nï¼ģ ĊĊĊĊ\ntr ainer\n\"] =$\nĠsu ction\nm Pid\nnot in\nĠprec ios\nĠAss urance\nĠL al\n.\" &\nĠmin Length\nĠMin erals\ntra jectory\nSA FE\nĠnu ances\n(ex tra\n_v ideos\n[] ={\nĠhone ymoon\n_p rep\nĉĉĉĉĉĉĉĉĉĉ Ġ\nĠpur pos\nĠan zeigen\n.str uts\nĠpag ar\n.AutoSize Mode\nĠwen iger\nĠpag an\nĠacid ic\ng Maps\nĠbew are\n_ip c\nĠmed s\nĠdise Ã±o\n)) )ĊĊĊ\nCh urch\nĠnurt uring\n_m pi\nĠresult ant\nĠPist ol\ns Pid\nM sp\nM oment\nĠUP LOAD\nN ano\nb lick\nĠmes ure\nĠL ayers\n_tr aj\nĠbutton WithType\nĉ common\nĠMy Class\nØ¨ Ø±\nxo ops\n_ Height\n_WARN INGS\nSet Text\nĠHispan ics\nNull PointerException\n.f actor\nĠvi elleicht\nĠsh outs\ntr usted\nĠnew Row\nĠFran Ã§\n[j j\nâĢĶ who\nĠQ Dir\n_adv anced\n(Have Occurred\nĠun pl\n/ ros\n.e asy\nĠB ALL\nç Ŀ\n/lg pl\nĠsub conscious\nĠ'- ';Ċ\nĠ' );\nĠÑ ĸ\nĠsc ant\n_s ess\n_play ing\n_IS O\nĠset Size\n_de ck\n_L ARGE\nĠM ey\nCh icken\niff in\ndis pose\nHE ST\nLa ugh\nĠL CS\nĠon site\n.is LoggedIn\nĠirrit ated\nĠbrig ade\nĠde queue\nclass Names\nĠM Ã¡s\nĠAt ari\n( IOException\nR achel\n-s ample\nĠeig entlich\nIF DEF\n.ne ighbors\nĠseper ate\nĠList ings\n. ff\n( import\nModel Attribute\nĠsp ender\nĠmot ifs\nss ue\nĠApprent ice\n-c at\nr Pid\n//////////////////////////////////////////////////////////////////////////// /Ċ\noc z\nin ions\n/ container\nĠplagiar ism\nWritable Database\n/ .ĊĊ\nĠF ever\n- Version\nac ija\nĠwe i\n- ing\nĠtem as\nĠsur ged\nĠc ria\nĠar d\nbit coin\n.time zone\nĠobject Mapper\nĠĊ ĠĠĠĠĠĠĠĠĠĠĠĠĊ\nĠy lim\nĠI CU\nĠDep recated\n) ();Ċ\nARG ER\nungal ow\nTest Data\n( pts\nFILE NAME\nup ply\nĠpac ientes\n, left\nĠWrite Line\nĠparc els\n_f olders\nĠD irk\n.assertIs Instance\nMc C\n_Var iable\n(a a\nĠP ork\n.P ublish\n-g ay\nĠPet ra\nĠConnect ing\nTab Control\niver ing\n(S creen\nĠch illed\nĠa io\nTouch Event\nĠacc ession\nĠLo is\n/m oment\nĠanv Ã¤nd\nĠsuic ides\n(h elp\nand ers\nĠV ID\nBe i\nevent o\nĠAng us\nV ers\nĠBor deaux\n.stream ing\nĠrou ge\nĠcraftsm anship\noss il\n_F ALL\n@ media\nile aks\nData Service\nĠTrip Advisor\nĠMa ar\nCur so\nPostalCodes NL\n(); ++\n$ PostalCodesNL\nĠo cor\nĠt ainted\nĠle m\n-out s\nĠxxx x\nĠirrit ating\nox id\noint ed\nĠTor o\n_ ov\n.b irth\n+ %\nĠCharacter istics\nĠBet ting\nĠoff end\nĠPH YS\nĠIC MP\nx DC\nĠC d\n.get Map\natch et\n.current Index\nER AL\nĠk appa\nid ences\nP aren\nĠSerge i\n-f in\n'], ['\nÃ¡m ara\nG rowing\nG lass\nĉm eta\nver batim\n/G PL\nĠK ah\n(s vg\ncl ist\nĠBlow job\noc can\n.ab ort\nodel ist\nĠdiffÃ©rent s\n_OPT S\n= req\nĠinto x\nĠdi agon\nĠ[ (\"\n& R\nĠobject ively\nĠbl inking\nĠL oves\nring e\n* );ĊĊ\nĠBond s\nĠL oved\nel ts\nĠdispar ate\nĠEn rique\n\" With\nrem ium\naj aran\ntry ing\n-R ussian\nnew Instance\n.TR AN\nĠor anges\n/ locale\nĠDIS P\nĉ ns\nĠSh utterstock\nĠC LOCK\n(r ad\nĠass urances\nĠr asp\nUber graph\nEm ily\nĠinvent ions\nri ot\nĠtoss ing\nĠmake over\nĠunit OfWork\nbutton Shape\nåĪ Ŀå§ĭåĮĸ\nĠpart ed\nâĸ ĳ\n.s igmoid\nĠred irection\nĠdisturb ances\nĠintimid ated\nĉC reated\nag et\nĠcor res\nĠNE G\nit one\n/ front\nĠVer se\ngam bar\nĠpremier ed\nĠIM O\nĠG obierno\nĠif s\nay ah\n.C OL\nĠfre der\nĠsub merged\nĠN ero\nmod ifiable\n/F ooter\n-cent ral\nĠg ouver\nĠT ried\nĠdiz zy\nQuery Param\n\">'+ Ċ\n_pr imitive\nç¨ İ\n.g pu\nĠvo z\nen ze\nĠWild erness\nĠprob abil\n/ rec\nĠacc es\nĠTrust ees\nG b\nĠpadding Horizontal\nSh ield\nĠN amen\nudd led\nĠPriority Queue\nP oor\nĠS AF\n-- [[\nĠchlor ine\nĠverb ally\nĠa ire\n> ;čĊ\nil ha\n[ color\nandal one\n.add Row\nĠS ok\nĠCon or\nĠmejor ar\n' ils\ndet alle\nĠ\" ),Ċ\n% @\n.l azy\n.j ump\nost e\n+ F\nĠinf uri\nĠson ra\nitem id\n$ log\nĠmurder ous\nLE C\nĉ nil\nĠM Ã¤r\n(p g\nile o\nAsc ii\nĠLock heed\nĠThe o\nB ell\nacion ales\n.create New\nĠå ¾\n-foot ball\nĠe commerce\nĉS imple\nc ly\n.Inner Exception\nĠpes os\nĠtro pe\nĠAR GS\nM iami\nĠPal o\nĠSuz anne\n_m appings\n#{ @\nĠOccup ational\n_b uckets\ngo als\n_R un\n-pre pend\nss s\nmar shall\nĠequival ence\nĠWel ch\n(Op Codes\nĉc lock\nĠMed ina\nTER S\nor ang\nTh ought\nĠo ats\n_T EX\nR ICS\nĠind ifference\nĠall ot\n.Use Text\nĠTr icks\naw e\n.F ILL\n- php\n.v oice\nĠPath finder\n_TAG S\nĠT rit\næĮī éĴ®\nbb c\nĠadd itives\nĠsch le\nĠKeyboard Interrupt\nĠuse Params\nĠBuch anan\nri angle\nĠmultip lying\nĠsel ber\nĠY ep\nCh air\n-re ported\n_S DK\n, no\nĠFall ing\næ ¹\nĠ( ),Ċ\np db\nĠB orough\n.remove From\nĠoversh adow\nig ail\nĠt ung\nĠmm c\n[ parent\nEx tern\nav iolet\n') \"Ċ\nĠcountert ops\nĠub untu\næ ·\nĠÎ ĵ\nĠunp ublished\nĠInd ies\nUN ET\nĠof erta\nĠd ames\nĠaster oids\nĠnov ember\ncontr ast\n.Add ModelError\n+ Sans\nĠscram bling\ntext View\n/c rypto\nUse Program\n@ update\nDes de\nS AT\nĠdis ple\nann Ã©e\n\\Dependency Injection\nĠit m\nĠç ¼\nĠeth os\nA PO\nĠGarc ÃŃa\nid is\nĠSte ak\nrib a\n_ver ification\nĠF K\nĠEins atz\nĠpersonal ised\n-m otion\nĠMel anie\nÃ¶ h\n_V C\nĠdr ifting\n.con struct\nĠí ĶĦ\nĠbatch ing\n../../ ../../\nER P\n_ utc\nĠmult it\nĠm rb\ncc ak\nch unks\nĠtrans lucent\nĠpay off\nâĢĶ an\nĠs ill\nĠor naments\ng ua\nUB Y\n(st eps\nĠB ORDER\nĠS OUND\n` `Ċ\nen aries\nĠBit te\nĠglyph s\nĠover run\nĠblock Idx\nĠM ST\nĠgen omes\ntensor flow\nDirectory Name\n_l hs\nĠf int\nadd togroup\nĠstead fast\nĠclo ves\nĠSov iets\nĠIS A\nÂ£ o\nurg ery\nso v\nĠÐ²Ñĭ Ð²Ð¾Ð´\nĠp ud\n-w atch\nĠHosp itals\n} while\n################ ########\ná» £\nĠakt ual\nĠkil ograms\nĠF AC\noph ys\npr s\n* @\ny b\nsec ured\nĠalg Ãºn\nĠà¤ ¹\nph ans\nAdd on\nĠcentr ally\n_SU ITE\nInterest ing\nult imo\nAgain st\nĠEz ra\nĠHe b\nuid a\nĠsk ys\nOL VE\nBenef its\nĠpr ise\n.* ?)\n.is Defined\nĠstand off\nĠplan o\n.l atest\nĠ($ .\nĠG ould\nĠcaution ed\n'] (\nĠn uit\nĠH CI\nfoot ball\nĠwill en\nPro ceed\nĠint ending\nt if\nĠspons oring\noh ana\nD os\nMor ning\nĠ! \");Ċ\n.sh ell\nĠREL ATED\nĠp imp\n/c ourse\nĠram ifications\nĠp ixmap\nĠpower less\nĠdou che\ncr ime\ncontrib utors\n( protocol\nĠget Position\nSET TINGS\nĠvi et\niss es\nWithEmail AndPassword\nReturn Type\nAp pe\nĠI KE\n.C ookies\n.m edium\n.get JSONArray\n_F or\n/tiny os\nĠTable Cell\nĠRE PLACE\n.Network ing\nĠb owed\nĉm d\n=\"{ !!\nĠh onda\nĠE ur\nĠind onesia\nĠh end\n.view model\nĉ ctrl\nĠTable ts\n-or ange\nerr as\n_graph ics\n{ s\nĠTit les\nĠdiagn oses\nou ple\n_D ouble\n[ result\nĠj itter\n_NUM ERIC\n> f\n_M Y\nÐ¸ÑģÑĤ ÐµÐ¼\nstore Id\nĠrel inqu\ne os\nĠwid ening\nĠt acos\n.Y ES\n] +'\nĠIndex ed\nĠprofession nel\nĠStr ap\nBuffer Data\nee a\ner in\nANC ES\n_T XT\nĠ{} .\n(con tract\ny w\nĠblind ness\nCH AN\nĉgl Color\nĠcurrent Position\nĠCaucas ian\n$ img\n# aa\nĠse an\nM ess\n*= *=\nĠcapac itor\nalf a\n.Remove All\nĠW PARAM\nul ado\nnic os\nĠorg y\nG X\n_DE VICES\nour ke\nĠk B\nĠsophistic ation\n_a udit\n/ IP\nĠLy ft\n/ St\nĉc ancel\nĠovar ian\nmar ine\nk ÄĻ\nĠY M\nĠMil o\nĠMat Table\nĠAb by\nn ze\nĠLud wig\n_arm or\nĠscaff old\ná»Ĺ i\nauthor ity\náº¥ y\n.get Product\nĠOr bit\n_Param eter\n.date Format\n/t ags\n.S peed\n( Line\nĠpol ishing\nĠk omb\nĠr trim\n' icon\nri ere\nĠPre fer\nstr tolower\nReg s\nC BD\n- >Ċ\nĠparas ite\nends With\nĠC obra\n: test\nĠNug gets\nÅ¡ t\nCore Application\n/b ind\nĠMc Int\nit unes\n[ --\nĠSur prise\n_ ING\nĠF aster\nÐĿ Ð°\n: E\nĠd int\nn ge\n.\" ','\".$\nĠad jective\n.b c\ncon sume\nB OR\n( anchor\nĠeste em\nĠbreak up\ndec ay\nĠ$ ĊĊ\nEd ward\nAS I\nĠatt aches\n_DIS K\nĠW ilmington\nĠK ul\nĠ[ []\nĠDepart ments\nĠreturn Type\nĠUNIT ED\nobject ive\nĠgirl friends\n_G U\n@ store\n- Out\n.m oves\n(start Date\nĉJ Button\nĠP ace\nĠBe ats\nĠlic z\nĠeth ereum\nĠche ered\nĠauc un\nReg arding\nĠmigr ating\nĠfut ile\nĠTac oma\n_Char acter\nĠv g\nĠCop a\nØ «\nĠn al\nĠland fill\nĠt amil\nĠperpetr ator\nĠPac ers\n.get Order\n| čĊ\nGet Object\nĠbl a\nĠH aram\nport let\nĠlok al\nMer chant\nPassword s\non ent\nĠarter ies\nĠInt elli\n\\ System\n= localhost\n. avi\nĠV end\n(t bl\nCor rection\nĠut erus\nĠsal iva\n++ ;čĊčĊ\n('* ',\nĠsn atch\nĠST REET\n) [:\nçĦ¡ ãģĹãģ\nS entence\n(). '/\n: relative\nķ ãĤĵ\n_user id\nol ing\nĠCl ash\nĉset up\n(m i\nĠj it\nĠScandin avian\nĠPh ones\n\" ';Ċ\nĠtum ult\nĠInt l\nĠS inn\n(new s\nĠd bs\nĠRem arks\nK itchen\nĠadm irable\n_d ash\nĠDOM AIN\nadd Listener\n\"]. (\nĉ Method\nmark t\n, exports\nĠout number\n_A SC\npre mium\n) NULL\nĠBow man\n.setOn ItemClickListener\nĠRegex Options\nK el\n/m at\nãģĵ ãĤĮ\nĠwear er\nin is\n[ dim\nĠNut zung\nis bury\nåĪ Ŀ\nĠroot Reducer\ney J\nIn cluded\n-Le ague\nan ax\n(in flater\nĠField Type\nĠsh ove\nĠfull file\nData Manager\n.get Left\nĠF s\ndrop out\nĠë² Ī\nĠman iÃ¨re\nĠfl aming\nĠcomplet amente\nâĢ °\n| .\nEn emies\nos ci\nĠS AY\nĠm ary\n(Runtime Object\nĠ~ >\nĠSimpson s\n'] .$\n_members hip\n) \":\nĠlayout Manager\nĠRock efeller\nĠ'| '\nIP H\nD ON\nach te\nPe ace\nht ar\n@ \"Ċ\nĠtread mill\nĠsp urred\nĠK V\nm idd\nĠflow ed\nÃ£ este\nGen esis\n== >\nĠVent ura\n_el im\nĠÐ¸Ð¼ Ñı\nĠsong writer\ncreate Form\nIG HL\nĠmold ed\nĠrever ed\nUnder Test\nimb ledon\n_S ession\nĠmasc ot\nĠal f\në© Ķ\n> Welcome\nĠknock s\nĠEqu ation\n.touch es\n_L ast\nĠup beat\nbig int\nĠen vis\n/b anner\nãģĤãĤĬ ãģĮ\nĠDown s\n_S F\nĠrun App\nĠquest i\nTrad itional\n_wait ing\npick up\n('@ /\nĉ se\nĠK ern\nĠDel icious\nĠsat urn\nĠJSON Exception\nãĤ į\nJ R\n} ());Ċ\nĠSom ali\nu ai\nim agem\nand FilterWhere\nÃ¨ les\nin box\nĠyap Ä±\nĠme isten\n` ](\nSW G\n, class\nàµį à´\nta ient\nĠFran Ã§ois\nAuth Token\nĠp uesto\nĠj l\nĠg ated\nĠDeath s\nĠS idd\nĠprev ailed\n- Ãªtre\n(al bum\nĠq int\nmar ca\nĠNA FTA\nĠtight ened\n_G AP\nENSION S\nĠLibert arian\n_styles heet\n.Set Int\n_p ublisher\npage Number\nzs che\nĠSQL Alchemy\nĠho of\nget Token\nĠne ben\nl und\n.m it\nerr s\n.set Minimum\n-pr iced\n(p o\neng age\n_F T\n// ĊĊĊ\nĠto me\nĠ\" ></\nV ectors\nĠTest Utils\nfil tr\nUs u\nĠdictionary With\nĠobr as\nĠBDS M\n.get Target\nĠallow able\nĠInsert s\nĉ None\nĠliber ated\nK ent\nĠWish list\nĠL ager\nĠju in\nĠn ues\nĠmon astery\nĠmicro seconds\nĠH anna\nÐ¾ÑģÑĤ Ð¸\nwe apons\n_sp ot\nod om\n.Model Form\nĠorder ly\nFIN ITE\nĠresid ences\n_t C\nCG Color\nĠÅ¾ e\nĠscreen play\nĠpym ongo\nĠdÃ© t\nĠdest a\nĠNeuro science\nni est\n@ GeneratedValue\nEL SE\n< l\nĠdis joint\n.p ublished\nell an\nĠString Writer\n.B roadcast\nĠFe instein\nam phetamine\nKey Spec\nĠGr imm\nett el\nà¸ ľ\nO t\nibr altar\nce b\nĠtim ings\nine e\nĠAnd rÃ©\nEss ay\n.j d\nĠBundes liga\nReturn ed\nĠapp alling\n.B igInteger\nĠS EN\nĠHom emade\n.ch apter\n- valid\nĠATTR IBUTE\nust ria\nĠent Ã£o\nReturn ing\nvertis er\n.Package Manager\nCl ark\nĠquot as\nĠscale Factor\nĠco z\n_m ini\nĠmut ated\n. activation\n* math\n.vert x\n< article\nĠembroid ery\n/b usiness\ncket t\nscient ific\nĠG iles\nĠrac er\n_per formance\nĠlam inate\nĠPH I\nR Ã©\nĠA the\nco les\nĠsa ÄŁ\nĠInk Well\nĉs ig\nĠspaces hip\nĠins ol\nĠU Class\n.leading Anchor\ntot als\nĠspr inkle\nĠMod ular\nĠ' \\\"\nor on\n.ReadAll Text\nĠĠĠĠ ĉčĊ\n/ ion\nDE PTH\n_min imum\n\\ Cache\nĠdivers ified\nign et\nĠdo jo\nĠUIAlert View\n/t ty\nĠS ass\nĠ/\\ .(\nĠIM AGES\nĠdatings ider\nĠExp los\n.gen re\n\\ Events\nĠenumer ated\ncurrent State\nitr ust\nCallable Wrapper\nFound ed\nĠroy alties\n( Properties\nĠUS PS\n----------- čĊ\n.Read ToEnd\nĠcos y\nĠa pe\n_definition s\nĠpage No\nĠdzie ci\nstand en\nĠbes ar\nit in\nĠconsequ at\nĠpr v\nĠspl itted\nĠespos a\n= findViewById\nW alker\nĠH earth\nibr ator\not omy\nagg able\nĠå½ ĵ\nï¼ģ ');Ċ\nion ate\n/ year\nĠset C\nĠMedia Tek\n- boy\n.toolStrip MenuItem\nConfig s\natt ended\nĠem oc\nĠB ai\nopol itan\nĠintr usive\nĠz ug\nĠffm peg\n_ boost\nĠmo zilla\nĠslic ing\nW G\npages ize\nProperty Descriptor\nĠAle jandro\nUSE S\nHost ing\nĠrisk ing\nĠInv ite\nĠJ azeera\nĠreg ained\nĠH ague\nĠgu erra\nĠenc losing\n'] \")Ċ\n< Transform\n.N ORTH\nĠcr im\nIN U\nĠcl en\nĠMo thers\nĠOwners hip\nDr ink\nĠbe berapa\n.on error\n)+ Ċ\nĠtab Index\nĠD io\nĠFort y\n( Link\nĠsegment ed\nĠj ames\nĠTarget s\nĠR TS\nĠÐº Ð½Ð¾Ð¿\nĠvar ias\nĠt ÃŃtulo\nĠd Ã¼r\n/ Game\nrans ition\nĠdistingu ishing\nukt ur\nan je\nĠMcC abe\np ai\n(t k\nD estructor\nGameObject WithTag\n$ h\nĠa fr\n.set Email\nĠrepet itions\nland ers\nĠShe a\n_cl aim\nĠa cess\nB enchmark\n.E st\n.P O\nĠN Ã¤\nĠit ching\nĠcondom inium\n_F WD\nĠreal time\nĠcivil ized\n_ph ysical\nR al\nĠw inters\nĠY ad\nĠfor a\nĠcal ibrated\nP ets\nĠstorm ed\nĠj el\nĠS SP\ndat agrid\nĠL au\nun ar\nulf illed\nER ING\nĠT rio\nØ± ÙĪ\nForeground Color\n= out\n/************************************************************************ ******/Ċ\nĠv ient\nĠA DM\n_Con nection\n-c ancel\n('. ');Ċ\nĠs ails\nĠequival ents\nN b\nĠfly ers\nĠG IR\nkel ig\n-w all\n.Re quires\nĠc ose\nĠAN C\nĠj ade\nĠAle c\nĠend region\nĠEX TI\ned ere\nTerr ain\nSpec ifications\nĠSwe ep\nset Item\nĠsm irk\nĠscript ed\n[ System\nç§ ģ\nĠsync ed\nĠsq r\ngew ater\nĠjew els\nĠh dc\nà¥įà¤ °\nÏ Ĩ\nÃ¼ss eldorf\nli en\nB orders\nĠAtomic Integer\nĠpar alysis\nClass ification\nĠgl ide\nĠ ump\nĠ/> }\nĠv ending\nà¸´ à¸Ļ\nnot if\n& _\nĠEmer ging\natic on\nĠpropag ated\n- orders\nag as\nurg ent\n(Time Span\nAL CHEMY\n/b ower\nìĤ °\n. boost\n.depend encies\n.S wingConstants\nunt let\n.ch ars\n-cigaret tes\nĠMod s\nĠĠĠĠĠ ĉ\nĠbr avery\nĠcounter ed\nrel ude\n_m ob\nAIN ED\nngo ing\nĠunder grad\nGet Method\nD ual\n_j ournal\n, No\nĠsid el\nĠLar son\n+ \",\"+\nĠnarr ation\nĠSub way\nĠLex er\nĠN ing\nind ic\nth ane\n.S IG\n- earth\nĠb erry\nĠTe uchos\nĉ Entity\ners pective\nN os\nĠOwn ed\nB UR\nĠlin eno\nĠF iji\nGet Int\nString Ref\nĠ'& '\nu ada\n.c aption\napp Name\n( off\nĠver st\nĠtyp o\néľĢ è¦ģ\nater angepicker\nĠq emu\nĠG EO\n_C l\n. IT\nĠN unes\n[ Z\nĠCom pletely\n.L ive\nĠJ as\nĠwe it\ncos ity\nĠpolic emen\n(target s\nitled Border\nĠè§ £\n.G lide\nĠdemon ic\nInter ior\n---------------------------- --\nĠD ota\nĠor bits\nAM Y\nĠTr inidad\nic um\n.z a\nĠget Int\nAtl anta\nĠam nesty\nĠRah ul\nĠ_ |\nhi ro\nĠT AKE\nĠj umlah\nĠAutom obile\ná» ı\nwh ose\n_S AMPL\nPat ients\nĠÑĤÐµÐº ÑĥÑī\n.sub scriptions\nĠM ention\nTo World\nip a\nĉ MessageBox\n<Application User\nĠØ ¥\nf abric\nke letal\nBar Button\nĠarch etype\nin stant\nĠintern acional\nĠVoy ager\n(t ouch\nĠV alk\n/M IT\nĠca ul\n' Connor\n(\" !\n( OP\nfac ulty\nĠBat on\nĠVol unteers\nt ank\n_BIND ING\n; line\nĠVers ions\nY LES\nĠje ep\n( Encoding\nĠge ological\nN ich\n(p df\nĠanaly zes\nĠcapt ivating\nĠh izo\n.m dl\nĠj ap\nĠfl ips\nĉd f\nĠP iet\nĠn rows\nĠkam u\nĠÐ² Ð¾Ð·\nĠpr uning\nac ula\nĠtrav eller\nSh oot\n. epsilon\nĠFlem ing\nib ur\noper ate\night er\nĠbeg s\nĠWal nut\n( Parser\nĠwithdraw als\nisc opal\nĠbill board\nke k\n-open ing\nĠD ude\ncon i\nx EB\nĠcal or\nam aha\n.T XT\nD ry\nĠmission aries\n_V ersion\nĠmult iline\nâĢĶ we\nĠcomponentDid Update\nF avorites\nigh am\nĠj ournÃ©e\nĠam used\nĠOm ni\nt gt\nĠw ah\net ine\nĠph ased\nĠon Stop\ncreative commons\nS oph\nĠun born\n= E\nĠFed Ex\nnorm ally\nĠl yr\nMatrix Mode\nĠze igen\nA th\nĠK um\nÃ¤h len\n/ \";ĊĊ\nĠd alle\nĠl ance\nĠSuit able\nĠcounsel ors\nåħ¨ éĥ¨\nĠfast a\nĠbl azing\nì§ Ħ\n/t utorial\n.t cp\næĻ ¯\nManager Interface\nĠSam ar\nĉgl Uniform\nĠprere quisites\nĠanticip ating\nra quo\nks en\nM agnitude\nutom ation\nH ierarchy\nĠdev iations\nim et\nCC I\n= (Ċ\nĠant lr\nĉ initial\nĠRes orts\nh omes\nĉp ool\nĠmat Ã©\n? option\n: mysql\n( utf\n.Tab Control\n> Title\nĠAd opt\n.Is Match\nĠentr usted\nS usan\nsw ing\nimagen es\nĠsele cion\nĠa iding\n([] *\nĠset Frame\nsp irit\n/r ss\nIt alic\nĠPropel Exception\nĠT oll\n.Find GameObjectWithTag\nin ant\nĠself ies\n]| [\nĠapplication Context\nix e\nc db\neb b\nĠO verse\nĠsql Command\nHost Name\n-l aunch\nR isk\n; r\n.S pan\n_C ITY\n_M A\n/ \"ĊĊ\nP awn\nĠY elp\nBundle OrNil\nĠmayor ÃŃa\nStack Navigator\n! ;Ċ\nĠth ugs\nĠBarn ett\nãĥ»ãĥ»ãĥ» ĊĊ\nĠê² Ģ\n_CON V\nĠbuzz ing\nk eterangan\nM ilitary\nwe ed\nĠdel imited\nèµĦ æºĲ\nĠÐ° Ðº\n_HEL PER\nĠREAD Y\nLo oper\n**** /Ċ\nĠTr ucks\nåİ »\n_p od\nOM ATIC\n- java\nĠun ify\n/ Area\nĠ'/ ');Ċ\nĠGam bling\n.H it\nĠFar rell\n_f itness\nre commended\nz end\nod ie\n_b eam\nĠpl age\nnd on\n.assert j\nĠgr ate\nMe asured\n.c entral\ngest ure\nĠGlobal Key\npy x\nĠNeck lace\nåį İ\n.Add Column\nĠR udd\nĠPres byterian\nund ler\n#! [\n_l ahir\n() ==\"\nAccess ibility\n-tr aining\nĠTh ou\n_P IX\n_TR Y\n< J\nÆ°Æ¡ ng\nl uck\n_MAX IMUM\nĠth aw\nUn ified\n> Contact\n-P resident\n- parse\nĠP icker\nMar co\ntr s\nÎ ´\n.$ .\n_M ESH\nĠsag te\n+ ='\nÐ ¯\n(par cel\niv ors\nĠdivert ed\nAG AIN\nĠn ess\nĠval leys\nĠ... (\nĠE QUI\nĠOut s\nĠDemon str\nDet alle\nĠë¶ Ģ\nPoint XYZ\n. eps\nĠsyn onyms\nĠ== (\nâĢľ Yes\n'util isateur\nN aming\nLE V\nprot ocols\nĠì Ľ\nĠget Username\n- var\n_m tx\nĠspec ular\nĠnot as\nHorizontal Alignment\nĠB ayer\ns us\nĠĠĠĠ ĉĉĊ\nĠSh ack\nres her\nĠimm ature\nbr acht\nIS CO\n.c redit\nĠv ines\n_L P\nEE DED\nĠScar borough\nÃ¡ nt\n) =='\nĉd elta\n_COLOR S\n.Custom Button\nĠaf irm\nĠJ ing\nPar ms\ncent ers\n-> ___\nĠL DL\n-con trib\nĠD resden\nĠP ixels\nĠ\"\"\" \",Ċ\nLET TE\nx BE\nĠH ust\nĠExecution Context\nĠBuff ett\ncl amp\n.Art icle\nĠR ath\nĠPey ton\nĠL OWER\noo ke\nĠtid al\nĠun heard\nĠSh all\nĠbomb ard\nan ova\n[ mask\n( credentials\nĠEuro s\nĠbranch ing\nĠstrong hold\nĠcivil izations\n- connect\nĠL STM\n-m oving\nĠut en\ncr ast\n_DIS P\nĠCont rollers\nu pe\n.p en\nĠdess a\nĠdifÃŃc il\nuit able\nof ire\n[ child\nREFER ENCES\nĠdece it\nĠU rg\n< Edge\nĠdes i\nĠB OTH\nĠ') ';Ċ\ntype Name\nCommand Event\nwhere In\n( optimizer\nĠrÃ© alis\nĠomin ous\nĠBr acket\nĠdate String\nĠsing ly\n(J Frame\nâĢĻ T\nes lint\n( hero\nĠMar a\nĠcatch y\n,c allback\nĠc type\np reset\nĉgl fw\nÐµ Ñī\nh k\nĠtit an\nA ceptar\nãģ¡ ãģ¯\n_ass igned\n_ erase\nĠinf ancy\nReview er\nĠRec order\nĠsc m\nĠBig gest\nĠGo a\nĉ SC\n_L ocation\n_or i\nk il\nrend e\nĠmar zo\nString Util\nÑĥÑī ÐµÑģÑĤÐ²\nĠHow e\nÆ°á»Ŀ i\nfo is\nX MLElement\nĠdere chos\nĠd ung\nĠW ak\nĠG aw\n} \\\\\n! \");\nĠJohannes burg\nĠsubmar ines\nĠacc ol\nĠfost ering\n.ĊĊĊĊĊĊ ĊĊĊĊĊĊ\n. Operator\nĠnu ova\nĠtra jectories\n.s chedulers\nĠFollow ers\nĠAnders en\nĠPeg gy\n.f re\nÄ±c Ä±\nĠk vp\nc ob\n-l en\nĠm ails\nĠacc r\nĠJ AVA\nĠadminister ing\nDefault CellStyle\nĠclick able\nĠJack ets\n; display\nĠb readcrumbs\nch al\n: ';Ċ\nĠH over\nucch ini\nĠt ec\nĠstop watch\n_ Release\nMay or\náŀ ¶\nĠYan kee\nch ner\nArt ifact\n.b anner\nĠk f\n_st udy\nfo v\nĠMeet ings\nÃ¶ m\nĠinj uring\n/document ation\nBC M\nst yl\nĉr b\nĠoriginal s\nĠfl ere\nĠTerr aria\ntoken izer\n-l iter\n'); \"\nĠpet its\nĠB bw\nĠTh ief\nUILT IN\nRO UT\nĠsn ug\n>> )\n-n ine\nĠ} ];ĊĊ\nĠBel lev\nĠel Ã©\nĠy yn\nynam o\ng les\nĠsp ed\n.B UTTON\nĠdisp ersion\noub les\nĠnov eller\n\"]. \"\nĠpriest hood\nĠ\"\" )ĊĊ\nĉg ui\n- inc\nXml Node\nĠstud s\n.Is Active\nĠtr Ã¤\nĠord ained\nĠByteArray InputStream\nĠrequest Body\nĠR TP\nRESULT S\n(c oll\nĠre loading\n.N avigator\n_count ers\nĠbudd ing\nĠlicense e\nolog i\nĠs áº£n\nĠK is\nĠFl atten\n_p ri\nĠappropri ation\nè¯Ħ è®º\n_R SP\ncom bat\n_P G\nĠhistogram s\nd q\nEnter prise\nĠNO AA\nĠSpeed way\nĠbag i\nĠBew ert\nF loating\nĠKimber ly\nPro sec\nJim my\nĠEli as\nĠarbitr arily\nĠ ä½¿çĶ¨\nĠCount s\nust e\nFirst Child\nĠC leans\n.p urchase\nĠinterpol ated\nĠbuild up\n_ST ENCIL\nE gypt\nĠa ure\n.tr uth\nfe of\nĠG im\noc ache\nĠUtt ar\n_COM PLETED\nSe en\nĠNap oli\n(d m\nĠgrit ty\n.enter prise\ncon exao\nĠg athers\nĠset Search\nĠCliff ord\nĠSn ape\nĠSalv ation\nLogin Form\nCritical Section\n.user details\nĠrep aint\nãģĤãĤĬãģĮ ãģ¨ãģĨ\nH unter\nZ en\nT iny\nml and\nert il\nĉb uff\n_O ffset\nĠsm elled\nR iver\n-top ic\nĠa comp\nĠRoute ServiceProvider\nĠ< +\nom bs\nĠCooper ative\nĠse ule\nĠa ime\nshould Receive\nH ong\nĠo asis\nĠGem ini\nrap id\nD up\n(Qt Gui\nod ont\n-g nu\nĠS elenium\n') ?></\nĠNo pe\nGreater Than\n. Observer\nĠApp ropri\nĠLon ely\nĠhair cut\nĠall erdings\nÃ³ pez\nz Åĳ\nĠsl ump\nĠG ins\nĠgiorn i\nĠpaper back\n.File Reader\nd af\ncre ds\ntyp ings\ndehy de\nco il\nSou thern\nĠmouse Clicked\nzeich net\nuser Repository\nDestroy ed\nint ernet\nĠE id\nĠlink er\nâĢĻ B\nĠslaughter ed\nĠP err\nĉRuntime Object\ns aida\nĠpage Count\nĠRand olph\nĠJ NIEnv\n_super user\n-direct ed\nĠID b\nĠBernard ino\nĠNin th\nĠAl gorithms\nb db\n@test able\n. arm\nbell ion\n(s id\nĠbrief ed\nâķ Ĺ\néħį ç½®\nĠU ma\nĠInd ices\nĠBucc ane\nĠay ant\nFre edom\nĠY uri\nets k\n_P h\nĠit alia\nc losing\nĠwr ists\nĠ* }\nsec utive\nEn viar\nra ith\nĠHaw th\n× ĵ\nĠ**************************************************************************** **Ċ\npage Title\nĠdh cp\nĠìĭ¤í ĸī\nw ishlist\nĠbl ames\nĠsid l\nudd ed\nĠcontrovers ies\nè ı\n(user Data\nĠl inspace\nĠD ifferences\n_de posit\nDE TAIL\n.de ck\nĠcontinu um\nĠsac ram\nom ite\nĠn fl\nC um\nĠso f\nĠev ils\nĠent idad\nĉ sock\nĠL emma\n.S hip\nĠz ig\nTele fone\nID ES\nĠNumer ous\n.m etric\nins n\nĠcopyright s\nĠcomp lication\nĠURL Session\nĠd ipping\nĠc q\nĠB usty\nrelationship s\nĠCor vette\nSum mon\nevent Name\nIss ues\nĠirresist ible\nĠgr is\nC ASCADE\nĠpa uses\nĠled ge\n_G P\n.I mp\nĠorder by\nĠOrgan izer\nĠGreen wich\nO ak\n-m embers\nĠWeb GL\nĠg amm\nmodule Id\nĠfull Path\nlog en\n(event Name\n(\". \");Ċ\nĠk rist\nĠcl iffs\nĠPer ception\nET ING\nĠl áº¡i\nĠinter v\nĠopport un\nĠJud ges\nĠComb ination\ncontin ued\ncon o\n.draw Rect\n.Com pose\nĠsigu ientes\nĠD uffy\n( encoding\nĠVul kan\nĠG err\nĠpar fait\n( yy\n_TH AN\nĠget Service\n_ ORD\n, ep\ngraph ic\nĠQu eries\nĠparticular s\nĠH avana\n= o\nf ans\nĠun ilateral\nĠRF ID\nCompat ibility\nstr and\nĠw aktu\nĠqual idade\nProperty Params\nre ten\n(host name\n_C AR\nĠwid ened\nĠX peria\npol lo\nAb ort\n!! )Ċ\nĠW ag\n-- +\nĠÑĤ ÑĢ\nĠRec ursive\nĠan ne\nĠGame play\n< Client\n. Usage\nĠISS UE\nĠj dbc\nis ory\n_mac ros\np ickle\n.games erver\nĠtv b\nÑĤ Ñĭ\n. OPEN\nĠpred etermined\nĠs ire\nĉĉĉčĊ ĉĉĉčĊ\niscrim ination\nĠrepe aled\nĠcon ject\nĠPre conditions\nĠtilt ed\nĠin oc\nĠeurope an\nab d\n_DE LETED\nĠ- ,\nâĢĵ and\n@ FXML\nĠ) ]Ċ\nR ING\nĠaliqu a\nĠgrues ome\nĠIn ches\nPlay ed\n( confirm\nĠNV IC\n_T otal\nis as\nĠOn ion\nĠsecond o\nĠGet User\n\\ Url\n_ abstract\nĠde vez\nĠcup board\ntext s\nĠIs les\n_M ATH\nSk ipping\n_cost s\n= output\nib ili\nĠkn ull\n_coeff s\n_at tempt\nĉ Run\ng enden\nrupt ed\nĠso ared\n_h s\nĠad opts\n_MOD IFIED\n\\F actories\nĠSwe at\nĠdok ument\nĠTe lescope\nĠFix es\nor que\n.Chart ing\n_D AC\nĠsecret ion\nĠrhet orical\nPer fil\nĠmÃ¶ chten\n, ',\nĠview Pager\nBU Y\nĠon Focus\nos als\nĠbisc uits\nĠv box\nĠforce fully\nN intendo\nĠv Ã¡l\nĠcl ans\nf rog\nĠborder Top\nB rief\n.Border Factory\n-s erving\nĠquot ations\nĠGar ner\nĠAl ley\n\" ?>Ċ\n(sc anner\nĠent ail\nĠ// ================================================================\n(` <\n.des cripcion\n_ By\nĠìļ Ķ\nĠpak istan\nel ho\nEngine ering\nĠbo on\nĠLo ose\nier ge\nSen ate\nĠL Y\nresponse Object\ni ore\nÃ¡ genes\nĠ ä¸į\nĠadd Action\nĠM ACHINE\nang kan\n_m i\n_ ARR\nL iter\nOL F\nĠsup per\nĠpath Match\nĠO rr\nÃŃ d\n(filter ed\nĠauth Token\nĠâĦ Ŀ\n- </\n(t ensor\nĠrev olving\nĠinici ar\nĠSch warz\ndef group\ncolumn Name\n_tra jectory\nà¹Ħ à¸¡\negas us\nĠìĿ´ ë¦Ħ\nĠe ater\nĠunder estimated\nĠb tc\nĠìĦ łíĥĿ\nen ade\nĠS EXP\nem outh\nOMET RY\nenter ed\n.phone Number\nĠV oc\nĠexcess ively\nĠC ATEGORY\n_UP DATED\nĠmon archy\narch s\nĠcave at\nw ins\nĠplay book\nsh ade\nĠset Username\nĠacc uses\nĠmoÅ¼ li\nĠlors que\nĠa jud\nhe ar\nĠps ycopg\n( EC\nĠmel anch\nth roat\nn ih\nWO OD\nĠvol ts\n_NE ED\n_ while\nĠR iders\n× ¢\nĠ ................................................................\nNet Message\nMod ificar\n.s ess\n(\" \"),\nè© ±\nĠpr aises\nĠl cm\nĠmakes hift\nĠNOT HING\nĠArt ifact\nw ij\ntyp ically\n(' ^\n< k\nÄĻ ki\nĠÐ¾ÑĤ Ð¿ÑĢÐ°Ð²\nĠ á\nĠdefStyle Attr\nincer ely\nÃ© st\nIn The\nst ime\nĠfragment ed\nĠf rying\ngr im\nfield name\nĠcross ings\nĠam o\n_O ptions\nĠha ired\n/w ait\nĠparch ment\nĠcreate Element\nHttp Status\nĠer klÃ¤\nizz azione\nth umbnails\nlov ak\nĠb anging\nĠun imagin\nĠO ven\n(A udio\naps ulation\nĠr amps\nçķ ª\nĠWood ward\néĹ® é¢ĺ\nro gram\nÑĢÑĥ Ð¿Ð¿\nĠWor ship\nĠst ad\nĠn ef\nĠJa une\nb uzz\nal us\nOND ON\n-s u\nĠout patient\nj ac\nES PN\nÃ¦ lland\nm yp\nĠshow room\nMont serrat\n.get Drawable\nÃ©t ico\nĠvÃł o\nIB C\nExp erts\nM bps\n\"> #\nĠnortheast ern\nĠMe j\n(m illiseconds\nâĢĶ all\n-re aching\nĉre ply\n? type\nĠcr uz\nĠ> <?\n.Find Async\n(c ircle\nĠSh ine\nĠMaver icks\nĠsafe zone\nĠL azar\nĠdist inctions\n- feed\n.set Code\nà¤ ª\nĠt Ã©c\nĠser ait\nĠMIC RO\nĠConsum ption\n^ n\n.from Function\nĠR upert\nĠharass ing\n- Co\nĠt ik\nĠS vens\n.Image Align\n_wh itespace\nĠk icker\nĠcada str\nC ette\n_not ifier\nĠF AG\nĠpr imal\nĠhom ogeneous\nĠastronom ical\nĠB urr\n.Copy To\ngraph s\nit to\nOS H\nĠshow Alert\nant ro\n\" default\nem phasis\nWe i\nout come\nĠa ku\nĠcamp aigned\n) \";ĊĊ\nĠrecipro cal\nĠRoy ale\nĠ ############################################################################\n.T IME\nĠ< *\nOffset Table\ncomp ound\nwait For\nue gos\n.string Value\n_S CHED\nĠf att\nÂłÂłÂłÂł ÂłÂłÂł\n.d isk\nĠwar ped\nĠcrit iques\n? 'ĊĊ\n(s kill\nĠmoder ated\n_e lems\nKey Listener\nĠseason ing\nĠpour quoi\n_F D\npr d\nh ya\n\"> ÃĹ</\nĠnouve aux\nĠgive aways\næĬ¥ éģĵ\nMain Menu\n; /*\nĠG ron\nquiv os\n;čĊ čĊčĊčĊ\nĠinflu encers\n(T IM\nShared Ptr\nĠdialog s\n**** */Ċ\n.At omic\nĠMor se\nĠp cb\nĠA PC\n.Im mutable\nĠres izing\nĠLump ur\nĠHuman ities\n_s olve\n_h uman\nety l\nĠH urt\nĠEstablish ed\ncl ared\nĠcompart ments\nBe am\n_R M\n.f alse\n( Grid\nĠQ Size\n_fl g\nist ica\n> Login\n:UI ButtonType\nĠEx iting\ncl as\nĠar sen\n(m etric\nrows ing\nquery Selector\n_F RIEND\n- io\nĠconfisc ated\nĠdef iant\nĠMOT OR\nreg unta\nĠM orrow\nĠB ers\nC raig\nĠC PA\nĠsex kontakte\nĠsam men\n/ Auth\n.L ib\ncr aper\nic email\ncr atch\nĠW ired\nĠadvert iser\nĠget Client\nĠrespons ibly\nĉU Object\n.set Rotation\n.Count er\n_H OUR\nTest Category\nĠh indsight\n\\ controllers\nw alls\n.set Maximum\nĠpub erty\n_te ams\n_MOD AL\n.C O\nĠbad ass\n) '],Ċ\nÃºs queda\nir ut\nCh elsea\n.transform s\nĠcapital ists\nMar ca\nĠA ry\n-c oded\nçİ ¯\nURE D\n< Transaction\nĠParliament ary\n) $_\nĠsubt ly\nĠsil ky\nĠD irt\nĠpuzz led\n} ');Ċ\nquest s\nFoot ball\nĠConf idence\nuz u\nbul an\nĠhum ming\nmouse enter\nRet ention\nĠs dl\noked ex\n','= ',$\nĠK uala\nS AM\nĠtransform ative\nPK G\nill us\nĠroot ing\nĠWitness es\nĠRaj asthan\nå¼ ł\n- added\nĠTerr itories\n(s quare\nr abbit\n_ Resource\néĸ ĭ\nà¸ ĵ\nĠwin nings\nĠs ple\nĠd Ã¨s\nĠM DB\nÃ© rt\nĠMatt is\nail les\n_ weak\n/j av\nĠcollaps es\nĠĠĠĠĠĠ ĉĉ\nĠsw irl\nĠNSString FromClass\nĠvol ver\n.Re ceive\nĠD exter\nĠtab lename\nreat ive\n.Get Files\nvo or\nĠH oe\nVER N\nĠO PC\níĥ ľ\nram ids\nçĦ¡ãģĹãģ ķãĤĵ\nS pirit\nĠN OP\nĠMaint ain\n(s igma\not r\nMouse Clicked\nquier da\n_w f\nÐ¾Ðº Ð°Ð·\napp able\nĠHold en\nĠCount down\n.s igma\nch alk\nb ilder\nĠvision ary\nĉ On\n$ update\nĠGing rich\nroom Id\n>N ama\nĠyy type\n.Decimal Field\nmac ros\n.setLayout Params\nĠr nn\nĠIMD b\nç§ į\nem ales\nĠincid idunt\nRestr icted\nĠped als\nĠJ og\nĠAd aptive\nĠf ades\n.Event Systems\nĠPa ige\nĠse is\nĠappropri ated\nFF T\ngor it\nĠco hesive\nĠN icht\n_work flow\nli us\nĠFort nite\n_I W\nAt Path\nĠintox icated\nnost ic\nBin Content\n.re ducer\n) ?Ċ\n'] *\nĠObserv ation\n_p refs\n.res olution\n.P ayload\nM ixed\nĠR ai\n(p dev\n(@ (\nic ot\n$ is\nĠc ree\n?= .*\n.Q Label\nĠGeorg ian\nx CA\nĠdef icient\nth rown\nĠrap ing\nup os\nĉ cli\nget View\nHighlight ed\nCpp Guid\nĠreleg ated\nĠleader board\nReceive Props\n.h ar\nĠcon di\nIMIT IVE\nĠMc Cart\n) throws\nbu ie\nbu ah\n.c oeff\nĠAuss ie\nĠSab ha\n(f abs\nre land\nĠF Ã¶r\nbar ang\n, top\nĉ elsif\nStep Through\nĠskew ed\nĠUn used\n') }>Ċ\nY e\nc allee\nH ibernate\nĠEver est\nimport Default\nĠt arn\nĠNow adays\nY A\nĠChall enger\n_log ical\nĠcreate Date\nĠGl ouce\nĠcu anto\nĠH AR\nĠCh ill\n\" ^\nĠcurs os\n.E OF\nĠn ije\nĠanger ed\noc using\n< Contact\nĠAtmos pheric\nĠWol fgang\nĠB J\nchild s\nĠB ugs\n_HE X\n(S P\nÃ¥ l\n_eval uation\nĠR ANGE\nĠS OP\n_token ize\nmsg id\nĠre x\nĉp m\nCopy ing\n* L\nD allas\n- State\nul fill\nĠby ÅĤo\nĠContract or\nDid n\nAST E\nĠP IO\n.T ele\n.w ater\nde z\nĠan grily\nĠutil isateur\nĠv ortex\nCor porate\natur as\nĠpr ized\n' url\nug lify\nĠimp ulses\nĠchron ological\npl en\n_n ama\n/ on\nĠOff ices\nĠC PI\nĠAfter wards\nãģĵãĤĵ ãģ«\n_BLOCK S\nGr ace\n/**************************************************************** ********************************\nĠKab ul\nĠæĪ Ĳ\nĠLe ipzig\nà¦ ¨\nSh ock\nA us\nĠmur m\n_start s\nĠb Ã¤\nĠZ y\n\" F\n-right s\nĠbeh aving\n(' >\nĠmos ques\n* width\n\"/> .</\n.un splash\n.get Activity\nU U\nĠSh ak\n_r g\n_E quals\n' https\nĠO xygen\nĠPort smouth\nâĢĶ one\nĠwatch ers\nĠCh oi\nĠs ider\npect ral\nmq tt\n.create User\nject ives\nur ma\nReg istr\nPerson ally\n= key\nĠN EO\nĠFAQ s\nibil idade\ncks Ã¥\nĠCollabor ation\nĉl bl\n.S ERVER\nĠab ound\nĠB ene\nw anted\n-h ole\nĠmut tered\nĠp ep\nn esc\n. Upload\nsem i\nx EC\n'> \"+\nĠembry o\nĠFixed Update\nCast le\n.model o\nĠpl s\nĠenvelop es\n_re main\nQu arter\nalert View\n_form atted\nĠl ashes\nz elf\nhom me\n.flow LayoutPanel\nair port\nĠMem ories\nĠHER O\nĠAs hton\nĠexhib iting\n( SELECT\nSub mission\nSt uff\n_s un\nĠperÃŃ odo\nĠdes pre\nĉ edit\nĠD type\ncess ive\na ad\nĠdes con\nnel ly\nĠ------------------------------------------------ ------------\nĠscript ures\nĠonView Created\nĠE VE\nĠB allet\n; };Ċ\nUD O\nĠProb ability\nquir rel\nCont aining\nĠPl at\nè ¢\n/b it\nĠJ Query\nĠti ener\n/dr ivers\nĠPres idency\n\\u D\nĠI ve\nien a\nĠhyp ers\nĠSp ending\n< W\nĠTHE ME\nĠuser Profile\nĠan num\nret weeted\nĠ\\ ''\nb undles\n() </\nĠC ylinder\nĠout liers\nĠdisse mination\n/ apt\nĠNat asha\nĠrender Item\nĠCh ips\nĠround up\nĠimpro v\nĠcommunic ator\nĠsk ype\nMM M\nrij k\n.Pl ace\nĠpas a\nĠSY NC\nens is\nĠAx el\nen Ã§a\ngetString Extra\nabilit Ã©\nĠem acs\n.gr avity\nĠcher ish\nĠISS N\nĉ Json\nuy o\nĠu ptime\nĠrandom ness\nĠlo fty\nB ow\nCre ar\nĠtow ering\nc ategorie\n/p ower\n/w elcome\n| R\nĠb arring\nid ia\nqu am\nÃº do\nex perimental\nĠcl a\nĠcur ator\nream ble\nind x\nLL L\nĠ} ):\nĠhist oire\nsim ulate\n< Any\nĠGl am\nĠB arg\nValue Collection\nĠInstit uto\nAsString Async\nĠa dec\nĠfell ows\np ipes\nĠPlace holder\nĠK g\nĠAlbum s\nĠ* (*\n_GO OD\n) \",čĊ\n.Q Rect\nÃ¢ m\nĠ} ččĊ\nMarshal As\nB achelor\nĠBar code\nĠTr averse\nĠod io\n.set Parent\nĠsem iconductor\nALLE L\nĠban quet\nĠNewsp aper\nDOM Node\nĠNa ughty\nFormatted Message\nĠdisrupt ing\næĺ ĵ\nĠlook ahead\nĠgratuit es\nĠchees y\nĠSP F\nn P\nĠar son\nĠantenn as\n_M IDDLE\n_M ALLOC\n.go Back\nĠProp osition\nĠMicha els\n_pro of\nĠÐ½ Ð°Ð¹Ð´\nÃ¤tz lich\n- roll\nED A\nÃ¡n ÃŃ\ng overnment\nÃ¶ tt\nĠEstablish ment\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n_H IT\nĠA IM\nad ol\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\n_REFER ER\nĠformat Date\nuct ose\nĠdown loader\nText Edit\nĠdis arm\nĠH APP\nÐ¾Ð´ Ð°\n! ).ĊĊ\n/ process\nĠbrain storm\nĠOR IGINAL\n.Table Name\nĠKosten lose\nĠdÃ© p\nĠIs abel\nĠastronom ers\nQUI RES\n:\" -\nup loader\n:// %\nĠam is\nFile Version\nĠ, $\nco ok\n,S IGNAL\n', //\nĠSup press\nĠLat inos\nĠwith hold\nĠmn emonic\n_CY CLE\nĠh od\nĠW orse\ner de\nĠtype id\nĉ exports\nĠach ter\nos as\nĠfoot note\nh ani\n( Parameter\nĉ Render\nĠYY STACK\nĠX II\nĠs iden\nĠarou sal\nĠO O\nBit te\nĠnear er\nĠCirc us\nĠCOLOR S\nĠwield ing\n.File System\nĠgr ille\nĠD over\nĊ ĠĠĠĠĠĊ\n( geometry\nĠstap les\nĠAnn ouncement\nĠë² Ħ\nĠfort unately\n.S ome\nĠm anganese\nĠinterview er\nY RO\nĠcrypt ography\nĠch ambre\n.re try\nĠim itation\n$f data\nĠlot ion\n( identity\n.p g\nĠpresum ption\n_S UPER\nv ocab\nĠSem ester\nĠAb el\n_appro ved\n.com pat\nĠwart ime\n] ];ĊĊ\nl ut\n_A ccount\n? ('\nco op\n/ reg\n.set To\nites se\nĠHy dra\nB ins\ncad ena\n> /',\n. \\\"\nĉ account\nĠD ahl\nĠd rown\nĠga uss\nĠtransform ers\nĠMetal lic\nĠHer bal\nach s\n_b ut\nĠiter ative\nĠFre ed\nj ur\n| M\n; break\n_F F\n(d ownload\ná»ĥ n\n.check SelfPermission\nNET WORK\n: flex\nĠC TL\nĠAr b\nĠProdu ce\nĉs ynchronized\nâĢľ Oh\n.dat atables\nĠcon es\nD Ã©\nÑĨ Ð°\nAl g\nĠfuncion a\nĠUb isoft\nĠgeopol itical\nĠsie ht\nĠhy dration\nsth rough\nĠDud ley\naz Äĥ\nĠtax ing\nĠÐ·Ð°Ðº Ð°Ð·\n_A SM\nNe utral\ntrad itional\nPlay able\nĠsp aghetti\nĠi Cloud\nĠDayton a\nĠwer de\nĠAN T\nĠP ron\nĠSt ations\nĠatt est\nĠfull er\nĠnov amente\n] \\\\\nc ce\n(de ck\n/ay ushman\nigs aw\nĠadult es\nĠter re\n. Orders\nĉ properties\nD IG\nĠTIM ES\n\" indices\n! <\nMon ad\nĠnon existent\nĠAtl antis\nĠgriev ances\nure nce\nĠIPP ROTO\nâĻĢâĻĢ âĻĢâĻĢ\nĠem pleado\nĠ Ùĥ\n.Move Next\nĠI so\nbe autiful\nĠsol uble\nĠslugg ish\nĠdiff s\n_O BS\nx min\nĠtum ble\nĠUn ary\nĠzip file\nĠsvens ka\ner land\n/c upertino\nĉs cript\nis ches\nModified Date\nĠv eya\nĠdetermin ant\nĠG orgeous\ng boolean\nĠL OD\nd cc\nsc enes\nĠTSR MLS\n(Type Error\nĠcam ouflage\nĠbur ge\nTh em\n.Ass ign\nĠlast Index\n_s phere\n_A BI\nÃ Ħ\nil age\n\\x ff\nĠkay ak\nĠf izz\nuit en\n.Should Be\nĠhton l\nĠPet ite\nĠhe als\nĠOs aka\nN J\nIn Parameter\nĠBir ch\nĠcomment aire\nĠSie ge\nĠkey code\n-int ensive\nprop Types\nEx ports\nĠbutton Text\nĠGod zilla\n.Ex change\nĠunderstand ably\nĠaccord ion\nĠrÃ©g ion\nĠmarked ly\nano oga\nĠcontr at\n_l ift\n[ date\nĠsc orn\nĠData Manager\nâĢ¦ âĢ¦ĊĊ\n_COMP ILER\nĠCl aw\nod ate\nĠunder age\nĠIm plemented\nC li\nK al\nProduct os\nĠenfer med\nÃ© is\nĠdis credit\nĠSam oa\nĠPresent ed\nĠcin emat\n\\Active Form\nĠf ern\nĠPr imer\næ Ĥ¨\ng ere\nĠill usions\nnot ated\nĠpo j\nĠmodel Name\nĠPM C\nĠdec ad\nĠfore stry\nvo ie\n...ĊĊ ĊĊĊĊ\nĠ} };Ċ\nĠtoken Id\namm u\nĠPerson en\nĠVER BOSE\nĠpatrol s\nĠant ic\n_de ep\neg end\nĠSet Property\nĠG areth\nĠM AS\n.rest aurant\nĠHeaven ly\nied o\n_le ad\nĠFu ji\nQ N\nMass age\nĠparam Map\nĠc ita\n_S peed\n(b box\nĠJ UL\nâĢĻ an\nĠm ente\nĠShow case\nĠCS I\n> Type\n.S n\notyp ical\nĠFall on\n. UTC\nĠpred atory\nĠorgan ising\nc old\nĠpars ers\nui en\nĠcomp ilers\nĠ[ =\nĠE uras\nM OST\nĊ ĠĠĠĠĊĊ\nR AR\n.S chedule\n. operations\nuf s\nÃ± ana\nĠpre ocup\n-t reated\n.get World\n. ':\nĠA TH\n: start\nĠauto immune\nĠBlack jack\n_FIN ISH\n(f loor\nĠwreck age\nUR T\n.B rand\np ais\nc imal\nci Ã³\nN FL\n-equ ipped\n.content Offset\nĠover crow\nĠT Z\nĠo dom\nĠCell ular\nĉw ritel\n(input Stream\n(p ref\n-st ock\nĠDen ied\n-s upported\nĠ' ((\nanc ode\n.filter ed\nD ims\nĠj b\nĉ price\nĠ@@ Ċ\nn ock\n.open Connection\nĠant ics\nresult Code\nPlay back\nĠcel ular\nĠFO OD\nĠPod esta\n= message\n.per formance\nĠDmit ry\nalt imore\nĠpl ated\nĠtub erculosis\n_g em\n( Editor\nT pl\nĠc rian\nĠbuffer ing\nè§Ĩ é¢ĳ\nĠ' )ĊĊ\nV u\nMath f\nĠtim elines\nĠT ata\n/ pp\nĠpl ast\nĠTr uly\nĠSub stitute\nki em\nka ar\nĠV ish\n'h ui\nĠMag ick\n/ Layout\nuran Ã§a\n_t tl\nHide InInspector\n.key words\nList Model\n_S uccess\nili han\nĠblack mail\nĠSer bian\nqu elle\nĠDys function\nĠPre pared\nĠj MenuItem\nĠlogin User\nset attr\n.C R\n_l cd\nĠbytes Read\nĠc decl\nĠtown ship\npe k\nijk stra\nĠmaxim izing\n.pro viders\nInvest igators\nĠshoot out\nĠair space\ntool box\nQ Widget\n=p k\nĠport er\nĠPred ator\nĠSun rise\nĠdev our\nĉU Int\nitt ance\nSP A\n_end ian\nĠNag ar\nven ida\n/ opt\nBy Email\nĠPhys ician\n\\ D\nĠÐ¼ Ñĭ\nY EAR\nIC C\n/ portfolio\n.exec utor\nud em\nF allback\nud u\nS lim\nÃ³ ln\n^ {-\nans ke\nĠhust le\nĠIre ne\nĠaby ss\nĠRob bins\nĠindex er\nS audi\nĠwholes ome\n-s lot\nĠT ecn\nĠpage Title\nĠcontest ant\nicopt er\nĠcourse Id\nCh r\nĠAX IS\nf order\n_T UN\nTra ffic\nĠtype alias\nĠdar f\n- uri\nts x\n.destroy AllWindows\nĠiter ating\nRe action\nĉ AM\nĠcu ent\n- cookie\nĠflav ored\nst oi\nĠfl irting\nãĢĭ ï¼Į\nà¤ ®\n_C RYPTO\n[ token\nĠprolet ariat\n.âĢĻ âĢĿĊĊ\nĉd c\n.String Var\nĠlegit imately\n_decor ator\nLock er\nĠJ enna\nUR ING\nåĨ į\n_Print f\nAT ORY\n-d ist\nĠ\". \");Ċ\n.qu iz\nĠir gend\n-le ague\ng ien\nĠProdu ced\nHel met\nåı¯ èĥ½\nPlatform s\nĠResource Manager\nĠH undred\nrom eter\neng kap\nH op\nĠposs ui\nBefore Each\nĠCH K\nĠI MS\nT icker\nĠgr inned\n.get As\nĠim poses\n] \")\nFor get\n/ import\nĠinject ing\nL ov\nĠab ril\n_s lices\n- comm\nĠPRODUCT S\nĠO asis\nĠÃ¸ ns\nĠRe ject\nĠregular ization\nimplicit ly\nn az\nSpec ifier\nĠimpover ished\næ ļ\nĠnom inate\nĠO VERRIDE\nĠB ands\neth yst\nĠJ ian\nĠnewcom er\nĠN ab\nĠe bp\nĠP ager\nĠH umb\n/ cc\nĠexp Ã©rience\nud ging\nM b\ndb uf\n' />\nĠo cksÃ¥\nĠj dbcTemplate\nĠSH IPPING\nĠinter disciplinary\nĠC ET\naut op\n-s ymbol\nave c\nĠcomp ounded\nĠCh ung\n_S MS\n- ie\nĠProsec utor\nĠLe ia\nĠMand ela\nSingle OrDefault\nĉRE QUIRE\nat own\nurre ts\næĸĩ åŃĹ\nĠCON TEXT\nENS ITY\nĠinsurg ents\nĠD ias\n.st ation\nĠK lan\n_me asurement\n_Q MARK\nĠst oi\nMO OTH\n> ');ĊĊ\nĠing estion\nĠGl ow\nut ches\nb earing\n.to astr\nĠfragment ation\nipp o\n_SEG MENT\nĠst umbling\nim ar\nstin ian\n_ ()Ċ\nĠmotiv ational\nListItem Text\nĠwom ens\nOpen Helper\nib and\nĠbtn Save\nĠincorpor ation\nĠdocument aries\nic l\nĠN d\nĠA ra\nĠqu ake\nĠC ummings\nht m\naster ed\n.d tp\nĠcond os\nĠGund am\n/dis able\nhydr ate\nĠEp och\nĠnational ists\nĠde ver\n, request\n.get Version\nCE LER\nĠSal ah\nĠm ote\nĠMell on\nspot ify\nĠorig en\nĠn ale\nĠadvers aries\n.J Table\nforc ements\nĠRet reat\nĠarch ivos\nĠsl ashes\n.Mouse Down\n< ::\n_th rough\nAl amat\n.bl ur\n_f inder\nĠall ure\nPer ipheral\n_pass ed\n_ch allenge\nĠPale o\nIN I\nD ire\ns phere\n(C OLOR\nack ers\nĠG lyph\n(int eger\nĠÐº Ð¾\nĠRe levant\nĠ Ù¾\nĠat as\n_pr im\nĠM UT\nning er\nautorelease pool\n= __\nĠSign ing\níķĺ ì§Ģ\nĠu cz\nEditing Style\nĠHe ater\nĠFair field\nĠBe ard\n, en\nus at\n(' .'\n/ stream\nĠget SupportFragmentManager\nĠm Current\n_STAT ES\n_w ind\nCH APTER\nprob ability\n( annotation\nĠ*/ čĊčĊčĊ\n.Un ique\n.Add Field\nHigh er\n.d igital\n.ex perimental\naw l\nĠwh ence\nern ote\nS AME\n.ip v\ntoBe Falsy\nbr ane\n_c ategorical\nA ura\nĠType Script\nĠspont aneously\nlong leftrightarrow\nik al\n_T ODO\nĠWy att\nĠfl urry\nd if\nĠreck on\nĠCor outine\nĉff lush\nĠwork flows\nĠF AMILY\ns prites\n_W ork\n.Get Size\nĠCon straints\nBig Int\nit ia\nget Row\nĠd uk\nĠis New\nĠProdu kte\nxC B\nisi ert\nfunc s\nĠAd emÃ¡s\nBinding Util\nomp iler\n-in v\nĠch ants\nĠents prech\n(t i\n_ IA\nÐ¾ÑĢ Ð´Ð¸Ð½\nĠF ALL\nim d\nĠlocal time\n< Link\nÐ½Ð¸ ÐºÐ°\nĠprof iler\nĠget UserId\nĠPhys icians\nR AD\nĠh mm\nĠN ess\nĠTemp o\nĠJ T\nĠrecon naissance\n< translation\nĠent icing\nĠqu aint\nĠcou pe\n__ ',\nNAS DAQ\nĠÐ·Ð½Ð°Ñĩ ÐµÐ½Ð¸Ñı\nPER ATURE\nĠP ai\nĠtet as\nC AS\nIRR OR\nĠk c\nĠto te\nĠdraw back\nĠpars ley\nĉ Function\nist y\nĠD UP\n_C ID\n_ UT\nĠk si\nĠj Ã¤\n= val\n.to HexString\næĿ ¿\n.cl ips\nĠoff en\nĠTECH NO\nĠSh ame\nĠsuscept ibility\nĠstupid ity\nĠTr out\nĠChamp agne\nethyl ene\nĠbe gr\n_ redis\nY ep\nĠh ans\nĠDef endant\nĠd ashes\nĠuser Type\n_d atos\nĠun ic\nk rit\nĠrecept ive\nĠG ret\n(m b\nĠIn flu\nÃ« n\n}/ >\ninterest ing\nUT URE\nĠimage Size\nĠgr d\nĠabs ol\n/ fa\n. gradient\nĠw yst\n] }>Ċ\nleg ation\n//---------------------------------------------------------------------------- --ĊĊ\nĠBl ender\n__ );\nĠuser Email\nĠPh ar\nle hem\n)) ?\n(R eturn\neg ra\nut ivo\nĠappend ix\nĠRT VF\nĠSE AL\nĠg ypsum\n_A rg\nĠillum inate\nĠSch iff\nqu il\n.ComboBox Style\n'] ))ĊĊ\nĠalt ers\nĠpract ise\nĠu st\nĠD imit\n- Regular\nĠcreep ing\nĠCan adiens\nĠret orn\n-cor ner\nĠ\" ]\"\n(r ng\nĠcan adian\nĠpost o\n.assert AlmostEqual\nĠBeck y\n/ ss\nĠhost ages\nĠbi ologist\nĠHospital ity\nĠEl k\nĠBar ang\nëª ©\nbb bb\n. teacher\nĠtermin ates\nĠis Error\nĠKend rick\nend ars\nĠS uggestions\nC el\nĠService Provider\nĠWich ita\n] )),Ċ\nĠhead lights\n_ venta\nANT I\nĠprop iedad\nĠen list\nĉ org\nM essenger\n.l and\n\" 'Ċ\nasp ers\nĠt ers\nf ilt\nĠFun ctor\nĠsl ing\n_BL K\n-E uropean\nĠAch illes\n\\ Entities\n.Display Member\nĠre development\nĉ help\nĠ[' -\nĠJul ien\n= Integer\n.is NullOrEmpty\nĠWo W\nPay ments\n(h dr\nĠb aja\nĠJ ComboBox\nFire fox\nĠcon glomer\n_c ust\n$ \")Ċ\nĠmut ants\nM agn\nĠMP H\n{ _\n_w arnings\nĠg ast\nL t\nĠtrain able\nTrad emark\nB ASH\nĠE CS\nRet rieve\n' O\nĠinitial ised\nĠchem in\n.Trans port\nĠY ing\nas ions\nĠm oc\n_LOG GER\nGEN CY\nĠB logger\nĠ\") \"Ċ\nPE nd\nĠaccomp agn\n.C ODE\nĠm List\n- educated\n, /\nĠMerr ill\n/ people\n.'' 'Ċ\n_t odo\nĠg Ã¼n\n_FULL SCREEN\n.clean up\nUn marshaller\n.Suppress Lint\nĠon slaught\nĠM arseille\nedi ator\n_ENT RIES\n, default\nmeld ung\nelf th\nĠGovern ments\nĠple as\nott s\nĠpl under\nread Only\nĠdysfunction al\n' Neill\nĠun loaded\nĠsqueez ing\nĠdo od\n.add Data\nĠAs i\nM ES\n(s chedule\nĠadvent urers\nexpect Exception\nĠ}} >{\nCL S\nĠre cher\nĠdern iÃ¨re\n.D etails\nĠrandom Number\nĠi ar\nĠL ange\new e\nĠEm il\nĠadvert s\nĠdram as\nĠK omm\nĠĠ ĉĉĉĉ\n_Test Case\nĠCl arence\nÐµÐ½ÑĤ Ð°\nt oupper\n.on Submit\nca a\n_AL ARM\n* )ĊĊ\nĠë³Ģ ê²½\n.Pr ivate\nĠsky line\nRA IN\n(c url\nos ite\nIgn oring\nĠv z\nĠved ere\nĠOS X\nban ana\nĠmet am\nĠtranslate Y\nĠMc Gr\nâĢĻ acc\nä»¥ ä¸ĭ\nĠspirit ually\n( enabled\nĠrest ores\nĠbtn Cancel\nvan ished\nĠN uevo\nSal var\ncaff e\nĠmaster ing\nidd led\n.is digit\nĠgr avy\naged List\n\\ Resources\nĠdown fall\n.P ass\nĠalt ijd\nĠp izzas\nĠ} ))\nper ms\night on\nĠrep ell\nĠ'' ),\n.normal ized\nĠmarch es\nĉres olve\nChild ScrollView\nĠInstit utions\nAtt endance\nl se\nerd em\n.get Input\nHas Been\napeut ics\nĠ* \\\nĠRit ual\n_L S\nĠspot ify\nĠsp Ã¤ter\nĠTh umbnail\n(c ert\nĠget Resource\n_pl ots\nĠst aining\nadjust ed\nĠ× ©\nDiv Element\nĠT TC\nĠa prove\n.view er\n| =\nget Source\nçĶµ è¯Ŀ\n_T B\n_b illing\n-L ife\nĠpsy che\nĠtab Page\nĠIn fect\nxff f\n_h id\nĠap ocalypse\nĠN FS\nĠI TER\nWindow Size\nhe its\nĠincrement ed\nĠBr ay\neneg ro\nĠal monds\nYP RE\nNormal ize\nâĢľ Well\nĠApi Controller\n[ Unit\nGen res\nĠN ex\nĠL NG\nĠfore going\nĠtend on\nĠH p\nC ouncil\nĠSaud is\nĠDe ze\nĠscrap ed\nĠbott leneck\nĠOr n\nĠunm anned\nĠinvoking State\nĠEx odus\n_AT OMIC\nSub Menu\n_com press\n# .\nDr v\n.push Button\nĠsuit case\noss ed\nbit rary\nSn ippet\nĠEpid emi\nDis allow\n_CH K\nĠver ifies\nĠCatal yst\nâĢĶ from\nĠcontamin ants\nJohn ny\n(f il\nĠder en\nĠout cry\nĠJoh ann\n<T ag\n_s an\nĠstd dev\nĠpar alyzed\nĠL exus\nos ate\nĠChar set\nĠRe alt\n=? \",\n( Default\nĠTre asurer\nE ine\nĠun true\nĠfin anzi\nĠbehaviour al\nĠn ipple\nĠRad ical\nĠP az\nĠMais on\n- employed\nĠwer eld\nĠj os\nĠD ied\nentre prise\n$ rows\nĠspo of\nĠÂ» .\nĠkey points\nĠcup cakes\nĠ{ });ĊĊ\nch ine\nâĢĭ âĢĭ\n, LOCATION\nĠply wood\nĠmag g\nĠR ao\nĠD PR\nĠe books\n) size\nĠspecial ised\n# ae\nĠmich ael\nĠSTD OUT\nĠP ell\nAM ERA\nangel o\nĠing in\nĠm Auth\nĠlegal ize\nĠCu ando\nĠcert o\nĠlit res\nĠEx tras\nSH ORT\nĠpremature ly\nĠSem aphore\nH EN\nĠamph ib\nĠh Ã©\nEx iting\neu illez\nĠTM Pro\n.pre ferences\n.get Info\nÃ©t ica\n\"\" \".\n.new ArrayList\nĠk ron\nĠB LL\ncl ine\n_g b\nĠTom as\nprob ante\nITION AL\ná»ĳ i\nĠL od\nIs n\n, {Ċ\nĠkom mun\nwd x\ngen ome\néĢ £\ntoHave Length\n' E\nĠpÃºb lica\nĠDet ected\nĠ_ ĊĊ\nÑĮ Ñİ\n+ S\nclo th\nR otor\n.num ero\n_st and\nG CC\nê µ\n_v p\n_F AR\nA head\n{} \\\n(c orrect\n\" crypto\nmod ulo\n_UTIL S\n. Var\n-m en\nĠven iam\nĠMcC orm\nget Location\n[ code\n% f\nĠdiffer ed\nIP Address\nĠStraw berry\nĠSah ara\ncreate Class\n! /\nĠmembership s\nĠpron ounce\n.Con straint\nĠEn rollment\nĠrenew ables\n.g t\nizz ie\nr zy\ners en\n< =$\nDEL AY\nĠsign in\nĠPS U\nApp Name\n}\\ .[\nEG A\nĠc ient\nĠSyn opsis\nĠletter Spacing\nĠchild s\nĠSc aling\n) prepare\nĠcomm uter\nSl ash\nous er\nĠwater mark\nĠUIS creen\nol ian\nĉ vertices\n> Action\nĠa ph\nh ands\nĠO CC\nH U\nĠse cluded\nĠvisc eral\nĠvide og\nĠSam urai\nĠZ uk\nĠWid ow\nacc ine\nĠl ille\nĠRy der\nĠProgram mer\nExport er\nĠmov imiento\nap as\nĠle ider\nul ares\ni eme\n-d ensity\ndesc ending\n( IT\nĠscr aper\nĠice berg\n_CR ITICAL\nĠa ute\n_ Style\nĠM AL\nĠH ector\n- Christian\nĠdifferent iated\nĠB ison\nĠĠĠĠĠĠĠ ĉ\n.pop ulation\nR io\n- Tr\n= Value\nĠLu ft\nĠGiul iani\nçľ Ł\nC oupon\nĠhaci endo\nãĥ Ŀ\npon ce\n_res idual\nĠli á»ĩu\n\\ uff\nÐ¾Ð± ÑħÐ¾Ð´Ð¸Ð¼\nĠrespect o\nĠDes ired\nData Stream\n.s ax\nĠm op\nĠH acker\nANT A\nA nc\nV enta\nĠWord press\nĉe ffect\nad apt\nĠInterview s\nĠdraw backs\nALLE NG\nĠgÃ©nÃ© ral\n-b adge\nRes istance\nĠOS I\nt ournament\nĠRe putation\nĠEisen hower\nFile d\nĠhe bt\n# \\\ncreate QueryBuilder\næľī æķĪ\nv anced\n.Has Key\nd de\n(start Time\nĠInst aller\nĠIm pl\nco ach\nĠpre ached\nĠbrew ed\nInst aller\nol vable\nĠal as\n(sp ell\n################ ############\nĠdef amation\n( Arg\nĠuser Details\nĠlicens ors\nĠInvestig ations\nĠd iner\nĠf ict\nSt ick\nNe ighbor\nto Throw\n-se ctor\nĠris ult\nâĢĻ :\nJ NIEnv\nyp ical\ndesign ation\n(w p\nĠconfirm Password\n- ios\nĠ\"- \";Ċ\nĉassert NotNull\nadd Error\nav ras\nV m\n(j Query\nĠVict ims\nĠreli ant\nĠBl itz\nĠout age\nĠfluor ide\nĠT NT\n.Dis claimer\nĠSN MP\nv ably\nĠphot ons\n.Read AsStringAsync\nS cheduled\nĠjew ish\nĠGeoff rey\nĠGr anny\n~ Ċ\n-m essages\n(go al\nĠarg ent\nĠP est\nĠcongrat ulate\ninos aur\nĠwh ispers\nĠsist emas\nĠF Ã©\n/ Index\n.M ILLISECONDS\nĠachie vable\nĠBritt any\n++++++++++++++++ ++++++++++++++++\nĠReturn Type\nĠinf ix\n.is Success\n.C ategories\nĠout lier\n.As set\not ec\nĠw izards\nĠboot loader\n_ ber\nĠrehab ilit\nant or\nĠV ivo\nĠGar min\nobject Id\n@ Path\nĠÃºn ica\nĠYork ers\nGuid Id\n$ errors\nĠ+= Ċ\nĠax iom\nĠPS I\nĠS ucc\nĠSp okane\nĠ'\".$ _\nĠL N\n.new Line\nĠintersect s\nlich keit\nĠI AM\n.DropDown Items\nĠcourte ous\nĠSmith sonian\nĠH mm\nQ Debug\nstr aight\n_s old\nB ulk\nTri State\nĠadd Button\nĠH iring\nTrans pose\nĠUIT extView\nist encia\n/c pp\nĠÐ¿Ð¾Ð» Ñı\nĠCook book\n/ Application\ngen ic\nĠWoo Commerce\n, vector\nĠB ite\n.h w\nĠdock ing\nĠTan tra\nĠS VC\nĠMaur it\nial ias\nĠA ure\nĠb ols\nLOC ITY\nĠWest brook\nĠB PM\nĠF ey\nĠS overe\nĠp anda\nĠqu izzes\nĠcre o\nspe ech\n/d ir\nĠÐ¸ÑģÐ¿ Ð¾Ð»ÑĮÐ·Ð¾Ð²\nĠfound ational\n- append\nn The\nĠapi Url\n.X PATH\nĠL ingu\nĠEx haust\nP akistan\nĠo map\nĠfont Style\nÐµÑģÑĤ Ð¸\nĠmans laughter\n_L ong\nĠcarp ets\nCh ess\nel ight\nDrawer Toggle\nĠP atty\n_cross entropy\nĠtwe aking\nÑĤ Ñĥ\nĠCAL C\ns ip\nĠJ MP\n________________ _ĊĊ\nTree View\n-w ave\nĠpast ure\nelim inar\nĠ ery\nĠrest less\nê µ¬\nĠmari age\nĠEll ie\n_ ='\nĠv min\nK ick\n.tool box\nĠMar ino\nyp sy\nstd arg\nptr diff\nĠPe aks\n_ Val\nĠing est\nĠcomp s\nDe be\nĠDe clarations\nir con\n= all\n.Debug f\nPred iction\nĠd au\n(M ember\nĠchief ly\n/ animate\n.Att ach\nĠgastr ic\nĠUser Details\nÃ¶ ren\nko a\n- boot\nĠsp lice\nle a\not i\n[ op\nS quared\nĠscroll To\nĠNew foundland\nĉ ERROR\nW al\nEM ALE\nGet Y\nĠcab ins\nĠab sl\n.m ixer\nĠc dr\ncon cert\nĠSylv ia\nB K\nä»Ĭ å¹´\n_CL AMP\nÑģÑĤÑĢÑĥÐº ÑĤÐ¾ÑĢ\n/g ames\nÅĵ ur\n< location\nĠclose Button\nĠHa irst\náº¡ o\nĠcr umbling\nĠsulf ate\nĠalg uien\nĠJ DBC\nĠK v\nPI P\n_s urf\nĠuÅ¼y tk\nĠman ned\nĠOcc asionally\nobj s\nMin imal\n-d ess\nĠW AV\nĠError Handler\nĠset Location\nĠi ets\nĠsub routine\nĠtong ues\n_qu iz\nMill er\nĠBase Type\nĠVu ex\nir ate\nSer iously\ntype id\nĠkut je\nĠpres cribing\n_s urvey\n.C t\nĠblind ly\n.get Label\n, \");Ċ\nĠpot rze\nĠS words\nSort able\nĠBlack burn\nĠM ata\nĠpond s\nĠprotest ors\nĠEn semble\n: focus\nĠitalian a\nĠdorm ant\nĠN el\nIN CLUDE\n( Conv\nĠbu flen\nĠCD N\n.x html\nH dr\nĠcarcin oma\nĠWorce ster\nnd l\nuse Ral\nuseRal ative\nuseRalative ImagePath\nĠtake away\nelement GuidId\n.label X\n[ ID\nAL ER\nĉu v\n> ()->\n/ li\n+ len\nĠprop el\nĠcab o\n\\\" \");Ċ\nĠvoc ational\n-p ill\n.n lm\nĠerot ica\nop ot\nlands cape\nins k\nĠplac ements\n.set Auto\nĠhomic ides\n_Field OffsetTable\n: l\nĠannot ate\n-r ise\n, alpha\nĠinterven ing\namb i\n. ='<\nĠpar ler\nï½¥ ï½¥\nĠcomp lying\n-h andle\nĠinter ruptions\npl ers\nroup s\n_D ef\nĠpicker View\nĠpier ced\nĠerad icate\nmob x\n[ train\nDe ferred\nĠtot aled\nChild Index\nĠRecommend ations\n_WORD S\nĠsign ify\nĠA ero\n_ bootstrap\n_ Up\nproduct Name\n- any\nĠp pl\n_P UT\nĠly on\n_I List\nĠÃ© crit\n(g uid\nĠcontag ious\n_Se lection\n/ language\nqu an\nĠac upuncture\nĠof rece\nĉR TE\n.G una\nĠsens ed\nĠKr ak\nĠunl ucky\nav ic\ntitle Label\nĠhay stack\n.b itmap\nĠCounsel ing\nPL ATFORM\n_T ool\nT am\nW ere\nÑĢÐ°Ð ·\n_S PE\nĠon Animation\n=<? =$\nĠS le\nĠGu inness\nĠtwe aked\n- pressure\n_month s\n) o\nProb ability\nĠCam pos\n.CON FIG\nV intage\n> window\nĠFactory Bot\npostgres ql\nĠtable top\nĠC ata\nh oc\n_ asc\nâĤ¬ âĢľ\nBack Stack\nÃ© o\nĠS ous\nset ter\n') ])Ċ\nvel le\nĠAl uminium\nx BA\n.m ongo\nĠVari ation\nyt ut\nneh mer\ná»ĥ m\nĠeff ected\nĠ** /čĊ\nĠrecount ed\nPr actice\nC ANCEL\ncz nie\nL arry\nĠq a\nĠHuff man\nget Drawable\nĠenf rent\nĠon Cancelled\nĠle o\nĠX SS\nĠHur ricanes\nĠj on\nĠTest ed\nĠMor al\nĠbed time\nĠJ ADX\nĠech ang\nĠnue stras\nPC M\n) ..\nĠìĪĺ ìłķ\nĠborder line\nĠassist ir\nĠHelp s\nĠD ive\n_s nd\nw it\n_bl end\nĠis First\nĠheap q\n(' =\nĠas sembler\nĠMyst ic\nor gh\nĠhij os\n_K HR\n(dec oded\nĠQ UI\nĠ× ĳ\nĠcontrol Id\nSp acer\n.ag gregate\nĠsh alt\n_tr ap\nĠFamil ie\nÎ ¸\nort a\n.Post Mapping\nì °\nĠ'.. ',\nz Ã¡\n/ arm\n.g allery\nĠimpecc able\nĠwindow Height\nsl ack\nff b\n_q p\nlad en\nĠT ERM\nset Label\nĠSingle ChildScrollView\ny Ã¼k\nĠpul umi\n-g ap\nuni acid\nĉ holder\n.add Field\nĠtrip les\nĠJud gment\nĠC ena\np arsers\n.draw Text\nĠÐº Ð°Ð¶Ð´\nĠac ct\nh ive\nĠmus ique\nĠY az\n- posts\nĠfil s\nĠ// {čĊ\n_p uts\nĠStat ue\nd iamond\nStorage Sync\nĠsh uts\nĠget timeofday\nĠA ABB\nich ern\nget Locale\nint ree\nĠfruit ful\nB ear\nĠpl umber\nq id\nCH IP\nĠmotiv ating\nĠescal ate\n.b ulk\nĠPlay ground\n_m irror\nĠPe el\nĠd ane\nin voices\nHasBeen Set\n- vertical\nĠFrances co\nĠAS A\nĠÐºÐ¾Ð» Ð¸ÑĩÐµÑģÑĤÐ²Ð¾\nÃł n\nFour th\nĠCreate Table\nc ctor\nĠfr antic\na ab\nĠKar achi\n_im ag\nĠnat uur\nE at\nĠst ump\nĠroll ers\nĠtrait ement\nĠÐ¿ÑĢ Ð¾Ð´\nĠreal istically\nĠe Pub\nĠZ ag\ndam n\nĠAnn ex\npec ies\n(ex it\nĠspect ator\nĠBulg arian\nĠme get\nĠm atures\nĠdet ections\nĠz ahl\nenef it\nak ov\nĠadult os\nmiddle wares\nis Object\nK enn\nĠun ethical\nsub net\nGraph QL\nĠG ael\n.Drop out\nĠbureaucr ats\nĠRed emption\n.D to\n.E valuate\nĠog gi\nĠtrat amiento\nĠrec alling\nisting uish\n/re lease\n_WR ONLY\nĉm kdir\nType Enum\nĠD ARK\næµ ģ\nĠV apor\nĠat ol\nĉ inst\n.` );Ċ\n/ el\nĠre claimed\nÃŁ erdem\n_lo st\nĠAl a\nĠÐ¾ ÑĪÐ¸Ð±\nĠBar th\nCol on\nop or\n_pass wd\n_ex clude\nAP A\nflow ers\nĠE book\nĠST A\nUN S\n_DIS PATCH\nAC IÃĵN\ntermin ation\nĠnest led\nadr atic\nRow Animation\n_k m\nĠr ond\n]] ></\nä½ Ļ\nĠcos play\nĠmillenn ium\n_s erialize\nĠverschied enen\nant t\nĠAm id\ncret ion\n)? $\nĠtow ing\n.f il\n.File Writer\nĠa is\nĠe Sports\npr t\nIP A\n.F ALSE\nĠpr ick\nEnd ing\nĠprÃ©s ident\n_g lyph\nĠsup plemented\nĠcont ar\n\".$ _\nĠBuy ers\nu ja\nĠTime Zone\nenn ent\nIn Progress\nĠS ustainability\nĠPros per\nCont ours\nĠstart led\n_le ast\nĠCo vent\nchn itt\nĠMil ky\nĠ\" ->\net ak\nĠt ussen\n-p aying\n_access ible\nBat man\n(it r\nIALIZ ED\nĠText Area\nan ke\n_J UMP\nĠbeh aved\n, options\nx iv\n.P LL\nq x\n.on Next\nĠver ifier\nĠdu Å¼\nĠFuk ushima\nĠCORPOR ATION\n_t D\nĠMe adow\nĠpro yectos\nĠ(' \\\nĠBarcl ays\nĠleg ality\nĠh amburger\nĠe ins\nInd iana\nĠT Key\nclo ak\n< algorithm\nĠpre acher\n{ lng\n. articles\nset Image\nR ename\nĠbloss om\nĠB loss\nĠu ur\nĠd ads\nĠTitan ic\nĠĠĠĠĠĠĠĠ čĊčĊ\nĠordin ances\nĠm Ã¤nn\nĠer k\nĠdist illed\nĠÃ¤ l\nĠrupt ure\nĠCam eras\nÃ¹ ng\nĠhairst yles\nĠembry os\nâĢĿ Ċ\n.N av\nĠstr m\nĉ usage\n.A I\nĠTO UCH\nĠIllegal AccessException\nê² °\nk oneksi\n! \")\nĠesc ap\nud ios\nstart time\nĠmein em\nĠSp iral\nĠErect ile\nival ence\nĠitem Type\nĠaba ixo\nVert s\nt aking\np st\nĠOsc ars\nĠD x\net ty\nM AL\nĠNeed le\nĠCOMPUT ER\nä»» åĬ¡\nĠnew X\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\nple vel\nAC EMENT\nĠJoh an\nPoint F\nĠrest room\nver o\nĠel Åĳ\nprodu k\nĠYE ARS\nĉ actual\nUP LE\nConvert ible\nĠpor rf\nInject ed\n_ both\n/G ate\ncal culator\nemail er\n.P od\nĠZ ot\n_sm art\nb asis\n< Color\nĠcr avings\nDr ivers\n(c os\ndat able\n-m etal\nĠP c\n.copy Of\nĠorient ations\nĉ ast\nĠZ ombies\nĠbom bed\nHost name\n_ raises\nmens agem\nĠcort isol\nĠF iona\nlic os\nhe avy\nĠê°Ģ ìł¸\nomen cl\nĠcult ured\nĠart ikel\nÅ¡ ÃŃ\nj dk\nĠvandal ism\nĠ} ]);Ċ\nStra ight\nĠrehears al\nE dition\nĠInsp ir\nĉw c\nĠform ulate\nan zeigen\nĠpath ological\nĠkennen lernen\n> {\"\nĠd iced\nĠbrace lets\nĉĉ ĠĠĠĠĊ\n*> *\n/t arget\n.A gent\n.m agic\nĠide ologies\nTR ACK\n_ind ividual\n< decltype\nĠRECE IVE\n/ boot\n:@ {\nQ M\nĠM andal\nN AMESPACE\nĠter cer\nĠReg gie\nĠNich olson\nĠF ulton\nst aking\nĠreson ate\nlp arr\nĠconvert ers\nĠ( \"/\nĠMarl ins\nInform e\n'=> ['\nĠro bert\nĠH IM\nwe bs\n.trailing Anchor\n. ascii\nĠM asc\nĠtechn o\net xt\nĉ ĠĠĠĠĠĠĠĠĊ\nÎ± Î¹\n( Seq\nĠ?> :</\nĠP eb\n[ selected\nJECT ED\nCast Exception\n? f\nĠey ewitness\nĠmen o\nĠDam ien\n_I Enumerator\nĠ ................\n.SE LECT\nĠcr ay\n_p aper\n.Roll back\nIDE OS\nrp arr\nine ar\n_R el\nĠWil de\nĠWonder land\nĠSh uffle\nĠstrike outs\nsig moid\n! (\"{\nep am\nĠrich ness\nĠende avour\nmenu Item\nĠÐŁ Ð¾Ð»ÑĥÑĩ\nĠfrustr ations\n_sub scribe\nĠboo ze\nĠL icht\nĠpe asant\nĠweight ing\nĠå ¿\nAction Code\n.tr acks\nĠÃ ĺ\nĠmillion aire\n( ur\n'] )ĊĊĊ\nĠ\".$ _\n_E DEFAULT\nĠcurl s\n_Com CallableWrapper\n.set Viewport\nĠd end\nĠaut our\nĠFour ier\nĠbo ils\nĠJ PG\nĠdig s\nĠcompl ains\n-l ined\nĠBl ades\n_dict s\nĠI ps\nrefer er\nĠany how\nant ar\n-s heet\nĉ play\nier ce\n.M essaging\nè§ ģ\nĉ progress\n.Data Visualization\nĠSt ops\nInterval Since\n@ brief\n.w ind\nĠget Input\nĠK A\nĠRESP ONS\nĠt arg\nvisual ization\nĠEsp aÃ±\nn ier\nĠD ove\n_is r\nĠAP PLY\nbed o\n[] {Ċ\nĠevac uate\nĠmicro scopic\næŃ£ ç¡®\ner ot\n- operative\nik ut\nĠd bl\nĠaj out\n. ix\nĠĠĠĠĠĠĠĠĊ ĠĠĠĠĊ\ntest e\nn ivel\n.s nap\nut zt\n.is Admin\n( IC\nĠob en\nĠEff icient\nD Device\nĠindem n\nĠfro ze\n,r p\nĠdec ember\nç» Ļ\nĠmel odies\nĠE TA\nãģĵãĤĵãģ« ãģ¡ãģ¯\nĠqual che\nĠset DefaultCloseOperation\nOR IA\nĠz ag\nĠallow ances\n/ ph\n- Token\nĠP ou\nĠminist ries\n.LOG IN\nĠsearch Term\nĠhur ricanes\nĠFl our\nĠS US\nTh emes\nree ce\nĠent rev\nDX VECTOR\nĠBrend a\nError Msg\n: )];Ċ\nĠdom ina\nĠIn visible\n< >(\"\nput c\nH AVE\nE valuator\nmatch ing\n-n ames\nĠla h\n_Y UV\næľįåĬ¡ åĻ¨\n.W RITE\n): \\\n- definition\nĠchim ney\n.c ls\nknow ledge\nĠAlexand re\nĠco leg\no ÅĽci\n.C ho\nĠsoft ened\nĠrot ates\n-st ates\nê ·\nviol ent\nĠ: )Ċ\nĠacc iÃ³n\nn ika\nĠL atter\n_F loat\nĠegreg ious\nod ial\nSyn opsis\n(x i\nĠ}, {\nc xx\nEm ma\nĠConcurrent HashMap\n_C amera\nĠpe anuts\nãĤ³ ãĥ¡ãĥ³ãĥĪ\n_b ed\nĠerror Callback\nĠPap ua\n, True\n¶ ļ\nĠstadium s\nĠkn obs\nific aciones\nĠpurpos ely\nĠPure Component\nĠÐº Ð»Ð¸\n.Tr ack\nss c\n( Job\n(Http Context\nĠchois ir\nĠì »\nĠaus p\nup pen\nAd venture\nĠFL AC\nĠappell ant\nĠ( (\"\nÏ ĩ\nĠtr if\nĠdur ations\nĠNG X\n.b p\naction Date\n.in stant\n- Requested\n' &&\nĠÑĩ ÐµÑĢ\n= bool\nĠl ords\nlic ing\nĠmar in\nĠbl inded\n/ layouts\nfe ito\nizz ling\nE vt\nĠbull ish\nex clusive\nâĢĻ es\n.getOwnProperty Descriptor\nĠbapt ized\nĠÑģÐ» ÑĥÑĩ\nĠCec il\n.e ffects\nĠcrypt ographic\nĠV ille\nu ft\nĠAnth em\nĠseek er\nĠnick named\nĠcamp ground\nĠaction Bar\nĠEp isodes\nĠ --------Ċ\nBuilder Factory\n_UNS UPPORTED\nV ILLE\n.Reg istry\nTon ight\nĠm aks\nĠadd ons\nĠDec rypt\n.sk ills\n(f h\nĠj ugg\nĠC ouples\nĠAm ir\nĠ= =========\nĠend ereco\n.String s\nĠharm ing\nĠbust ling\n(first Name\n.s parse\nIT O\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\næĿ¥ æºĲ\node ga\nan agan\n.Handler Func\nĠt inder\nĠ# (\nĠimagin able\nĠa un\nPres ence\nPackage Manager\nĠlud icrous\ni Ã¨me\nĠget Object\nbox ing\nĠsqu id\nÃª tes\nDa emon\n_ likes\nĨ µ\n//---------------------------------------------------------------- ------------------------------------------------\n. www\nss el\nete ctions\nda e\n/download s\nĠClass ifier\n_SUB JECT\nz ego\n_GROUP S\nact ices\n_l ite\nĠdan mark\n/ bl\napy rus\nTIM ER\nĠScript ures\nÑı ÑĤ\nsp a\n\" G\nĠpenetr ating\nĠconform ity\nnew line\nĠl yn\nĠM MP\nĠINTER FACE\nĠAction Types\n.c riteria\ná»ĳ ng\nĠrest itution\nĉF OR\n< path\n=? \";Ċ\n( percent\nnd o\nĠA CM\nĉ ct\n@ a\nĠt Ãº\nĠspot ting\nÃ¼r n\nĠG ER\n.write Value\n_block ed\nY md\nĠin eff\nĠRadi ation\nĠOil ers\nBe er\nro ts\nĠT rot\nr na\nport er\nen ery\nĠporn ofilm\nëĶ Ķ\n_ ck\n.Com pute\nĠ[] ĊĊĊ\ng ium\nĠTE LE\nĠInst ances\n* I\nĠwire Type\non ium\nesh ire\nĠput char\nĠawaken ed\n.de gree\nhe iten\n-await ed\nĠneuro trans\n-test id\nĊĊ ĠĠĠĠĊ\nĠç» ĵ\nĠk ino\n_D AYS\nĠVal erie\nnt ity\n@ Bean\net Code\n< Renderer\n\" \"Ċ\nĠb ern\nĠtotal itarian\nclin ic\nĠM Ã¼nchen\nno inspection\nis ce\n_t uples\n.Point s\nĠpast oral\nJ ak\nken ing\n/c olumn\n-produ cing\nĠabol ish\nfe as\nresponse Data\nredirectTo Route\nĠobserv ational\np Next\nz te\nCho ices\nĉL CD\n& S\nĠbillion aires\n_E OF\nĠcoh orts\nank en\n.com bine\n( Optional\n_CON SOLE\nActivityIndicator View\nĠpharmac ist\nĠD ough\nĠOper ational\nç ²\nĠj ams\nS olo\nĉd uration\n.r m\nĠT oni\n. leave\nĠpued a\nĠF ay\nDet ach\n.Max imizeBox\nĠmarty r\nĠh aze\n/ ne\nĠm amma\nselector Method\nĠpilgr image\nĠAs phalt\nĠvalid o\nEnd Element\nĠl apse\nĠ========================================================================= ===Ċ\nil os\nern als\nConnection Factory\nĠL oving\n.Com pile\nĠc ork\nĠBy e\nibName OrNil\nest ar\n\\ GeneratedValue\n( LL\nĠRaise PropertyChanged\nĠIran ians\nĠget Price\nm aries\nj umbotron\nĠReb els\nDI FF\nĠMo j\nort ic\nĉconst expr\nnt p\nĠmagic ian\nĠpatriot ism\n. ce\n.Simple Button\nĠPR IV\nhist oire\nhigh er\nrefix er\nC JK\nĠOsw ald\n.s prites\n.I l\nĠarc ane\nĠCh un\n_ Of\nĠevery time\nÑİ Ñī\nĠle tras\nil an\nbar u\n-b ot\nĠSign ificant\nĪ ìĬµëĭĪëĭ¤\nâĢ Į\n- issue\nĠinsan ely\nateg ic\n_V E\n: CGPoint\nM arks\n.pro blem\n'].' /\nĠredund ancy\nĠdec ryption\nH ung\n- validate\nĠAng elo\nJ M\nĠpop over\nde bit\nComputed Style\n) __\n(s in\nĠ' ),\n(def var\nÃ´ te\nThanOr EqualTo\n.z h\n(N ote\nib BundleOrNil\nĠSon ia\nym ous\nãĢĤ <\nĠfil my\nĠearth ly\nĠLearn ed\n[ section\n.js oup\nstr up\nĠPat ron\nĠ) *\nset Font\nĠhe g\nĠdelta Y\n_S CR\n.c ut\nĠvb CrLf\n.Object Mapper\nĠrÃ© ponse\nY u\n(){ }ĊĊ\n- parameter\nÄ±s Ä±\niaz za\nIZ ES\n_SUP PLY\nk its\nĠre ins\n(d ocs\n% !\nĠsystem ctl\nĠPs r\nĠW erk\nPhil adelphia\nB REAK\n.append To\n(l on\nA br\n/ renderer\nĠE leanor\nC ERT\nParameter Value\n$ get\nĠà ²\nĠJ L\nĠign ite\nĠb áº¡n\nĠC aul\nĠh aste\nĠdom ingo\nTes la\n/config uration\n(ex pect\nus ra\nĠpre fect\nĠfro gs\nĠassign able\nĠinterven ed\n. choices\nUI StoryboardSegue\nĠb Ã©\nĠL Ã¶s\nal phabet\nĠpre amble\ndb a\nĠem itting\n.m ore\nĠBas el\n(date Time\n() });Ċ\nĠnode List\nĠF PGA\nw el\nĠl odash\n_auth entication\nÃ³ rio\n(r untime\n_SC ENE\nĠc uffs\nĠAd resse\n: <?\n_cmd s\nT Ãªn\nĠe ject\nĉ ERR\n< O\nĠK ramer\nâĢ¦ Ċ\nsome one\nĠC PL\nï¼ į\nlock ing\n.F ooter\nĠal m\nĠAd olf\n). /\nĠMatth ias\nĠ\", \"Ċ\nenu ity\nĠL over\nĠaliment os\nple ts\nÃ¤t ze\n(rec v\nur aa\nSTD OUT\nant z\n.Float Tensor\nĠR ae\np ig\nĠter ug\nĠthe olog\nĠtax is\ncom posite\nsh er\nle Db\nĠRah men\nĠ; -\nInd ented\nĠt rolling\nERIC AN\nget Email\n_EN CODE\nget Cell\nĠWr ath\n(s uite\nnot Empty\n.get Right\nĠbreath able\nãģŁ ãģł\nĠset Time\n' options\nĠpayload s\naug a\ned m\n( weather\nĉ sem\n(f ront\nĠpayout s\n.setText ure\n, [],\nĠP acks\nĠc azzo\nWith Path\nPro g\nmm as\nĠk ok\n.C ss\nĠdel a\nA ward\nÃ¼ lt\ns oup\n([ ('\noll ipop\n,S LOT\nch ia\nĠbl anco\nOL UTE\n- plane\n, List\nx ing\nIM ATE\n-m ort\nĠgr avid\nĠH anging\nĠsco ff\n.item Id\nTH EN\nin fer\nĠmis placed\nĉM ono\nway ne\nĠed ged\n_n ick\nĠM ART\nĉst atement\nĠEvent Bus\n> About\nĠburge oning\nĠcic lo\nLO OP\nĠdef y\nĠelement Type\nĠconserv atism\nWeb Host\n.Dis abled\nĠcl ap\nĠAle ks\nr oring\niss ional\n-B old\nIR TH\n.item View\nq ing\n? key\nĠVen om\nĠant id\nĠFormat ting\nQ PushButton\nĠAssembly Title\n_res erve\n.D irect\nAn ime\nĠmaterial ly\nĠadj unct\n.setToolTip Text\nlass ian\n(n r\nĠning Ãºn\nĠmisunder stand\nĠApp lying\n_com pat\nĠmix in\nĠjeopard y\nÑĭÐ² Ð°ÐµÐ¼\nĠcoc ina\n_WR ONG\nAT AR\nK D\nĠcategory Name\nHttp Context\nĠb ubb\nĠank les\nower ing\nFramework s\nĠseg undos\n.As sembly\n_Ent ity\nH Q\nĠf ours\nĠforfe iture\nv lan\n-d ominated\n- away\nIC IENT\n.Read Byte\nam ax\n. =\"<\n_s prites\nĠRem aining\nLO OD\n_require ments\n' article\nĠPompe o\nĠt Ã©r\nĠD rops\nHome As\nHomeAs Up\nÃº a\n.n asa\n_b io\nĠY oshi\nElect ronic\nĠj ose\nĠintel ig\nĠ?>> <?\n>{ !!\n_pro v\n= DB\n<!-- Ċ\n-f loating\ny um\n.J MenuItem\nĠNation wide\nIm possible\nè¯¦ æĥħ\nJ erry\nĠdesc argar\nìķ ¼\nDec rypt\nĠtemper ed\nĠe ks\nÃŃ cia\n.l arge\nĠunf olds\nĠh ver\nĠAV L\n.t t\nâĤ Ģ\n=% .\nĠtopp ings\nĠst out\nĠsem inal\nx es\nĠOUT ER\nad ro\nĠy ok\nĠD ere\nĉf reopen\n_l ng\nCh unks\n.get OrElse\n(el m\nĠ( ));ĊĊ\nCele br\n_cap ability\nĠsoc iedad\nĠintimid ate\nĠBl azers\nig th\nend code\nUIL DER\nĠHann ity\nĠ---------------------------------------------------------------- ------Ċ\nĠÐ¸ÑģÐ¿ Ð¾Ð»ÑĮÐ·\nĠT ook\nĠM oved\nĠpr onto\nĠMart ins\nData Exchange\n.P ool\ne us\nĠjob Id\nĠAx es\nĠham string\n.r mi\nData Task\nĠMagic Mock\nĠG AS\nĠN aw\nĠsn el\n_sc enario\nĠemail Address\nĠM uss\nĠph oenix\nĠdens ities\nĠMac OS\nre ma\nĠtest ers\n)? ;ĊĊ\nĠp ups\nl aps\ndd b\n/ Peak\nĠback stage\nĠback Button\n(n av\nx AE\nstr cpy\nicht et\nĠR if\nà¸ģ à¸£\nĠhon oured\nĠgrap pling\nVertex Buffer\n.get Account\n- New\nĠopp ress\nĠutter ed\nĠUS AGE\n_LE AVE\n_c ollections\n_ Util\n(\" \"));Ċ\nĠqui eter\n` ),Ċ\nĠtype Id\nĠser if\nst alk\nĠprimary Stage\nxE A\n:NS Layout\n_R B\n_APP S\nSK U\n* scale\nĠCou gar\nĉRE TURN\nifi Ã©\ntim ing\nĠid ols\nëŀĺ ìĬ¤\nâĢĶ if\n(form atter\nĠam alg\nset Width\n,m id\nore al\n.R oles\nĠde vel\nĠget Index\nĠst ools\nĠsnow y\nĠgrand i\nÑı ÐµÐ¼\nigu iente\nÐº Ð¾Ð²\nĠC utter\nros cope\nair a\nÑĥÑĢ Ñģ\nĠt abel\nĠdef iance\n.To Boolean\nĠper g\n- community\nĠpurs uits\n(m etrics\nM uslim\nĠRiy adh\nĠâ Ĥ¹\n.Web Element\nĠH arden\nĠCor ruption\nĠA e\nĠT anner\nĠinde b\nĠCharg ing\n_PRO D\nĠâ ĵĺ\nĠcenter X\ntyp ing\nĠu x\nĠTo e\nĉ loop\nf lo\nReg ional\n_a a\nĠview points\n> this\n-res ources\nĠIm am\nĠSh iv\nĠand ra\nRE QUIRED\nĠseed ed\num ont\nĠto aster\nĠhomes chool\nÛĮ Ø±\n_extract or\nm odes\nĠM undo\n_fire store\nĠpunish ments\nĠbored om\nj uries\n.S afe\namb ique\nĠadvers ity\nUL ER\nĠan alsex\nm orph\nĠOm n\n() \">Ċ\nĠG IVEN\nS z\nĠnoun s\nĠqu am\nĠWik imedia\nĠdziew cz\n.comm unic\nCour ier\nB ond\n.comm unication\n.P reference\nslide Down\n/g cc\nĠvib es\nAPI View\nĠOvers ight\n_v k\nĠemp res\nĠar isen\nĠ*/ )\n(' ('\nĠb tw\nĠconex iÃ³n\nĠU zbek\nĠìĦ ľ\nĠimage URL\nãĤ ª\nst opped\nĠWould n\nĠCh ew\ngr Ã©\nĠtruth ful\nĠTrans parent\n(s erv\nĠMcK ay\n= read\nĠS ao\nĉ Grid\nĠindu ces\n.list Files\nĠcarr era\nĠicon Name\nĠCarl ton\n.Event Type\nĠdr aped\n_SAMPLE S\n( est\nĠRu iz\nĠcapt ains\nĠm afia\nĠR aphael\nĠG AP\nim pan\ncom ic\nĠmant en\n$ L\nĠafter market\n× Ĺ\nĠC f\nĉt ile\nApp State\nĠwholes alers\nlow est\nDem ocratic\nĠpower ing\nap ot\nĠCort ex\n(s ingle\noph ysical\n. utf\nï¼Ł ãĢį\nĠt area\nEqu ip\nĠk lik\nĠr ua\nĠa Value\nĠMin er\nĠV eg\nany l\nC ow\n@ c\n_LO ADED\nĠA HL\nw ake\n.Log Information\n(c ategories\nĠQUEST ION\n. uml\nĠCreate Map\nme er\nĠrencontr er\n_s u\nĠat least\n( PropertyName\nĠY ao\nĠH aupt\nBlock Size\nĠS AC\nĠLeg s\nb ite\nĠlog arith\nĠI Message\nBack drop\nĠg dk\nìľ¼ ë©´\n.ex clude\nAD OS\n-sh ift\nath lete\n_comb ined\nĠreb ate\nĠp ard\nĠimped ance\nre au\n_ čĊčĊ\nĠd agen\nkel as\nĠingres ar\nĠBR AND\n.mkdir s\nĠreign ing\nT alking\n/** ĊĊ\n_RES OURCES\nĠPRO GMEM\nĠdata Size\nãĥ ł\nden y\nIR S\nĠtele vis\n=_ ('\neg is\n<? ,\nĠup setting\nĠsau ces\nĠpu erto\nĠV ogue\nid ine\nĠGreen wood\nz ion\n/ qt\nå± Ģ\n.l anguages\nĠPlay boy\nonn ement\nĠPosition ed\nĠ ä¸»\nĠF ritz\nInitial ly\nnode Value\n_TRI ANGLES\n-back end\nto ISOString\nĠGovern ors\nYL ON\n. ORDER\nDO I\nĠChe vron\nĠdeck ing\nĠSh aria\nother mal\nEmpty Entries\n( Initialized\nd orf\n.l u\n(R oom\n.Y ellow\nĠAbr am\n_l m\nĠÐ½ Ð°Ð¿\nĠTH AN\n~-~- ~-~-\n. Override\nĠS VM\nĠSusp ension\nĠabsor bs\n_tra ffic\nĠ\" >\"\n.f its\nĠrein forcing\nĠmoy en\ner er\nĠRosen stein\nĠWest on\nĠconf ines\nOL A\norr aine\n_GR P\nĠstr apped\nĠm ingle\nĉV k\nĠno stra\nĠactress es\nĠSam my\nl igne\nIGHL IGHT\nĠst up\nict ory\nĠconv ict\nĠsup p\npe on\nv rier\n################################################ ########\nĠtrot z\nĠmel tdown\nark ers\n.Select Command\nĠLi ability\nĠBec ame\nĠluck ily\nĠÐ¿ Ð¾ÑĢ\nĠreass ure\nĠContr ast\nĠAud rey\nĠConsult ants\nĠQu entin\n- Owned\nocr in\n_STR IP\nĠret ali\nĠrally ing\nĠRequest Context\nĠmass ac\nĉ gr\nLE E\nĠca ÅĤ\nĠJo anna\ná»Ń a\nhh h\nĠsql Session\nÄ± kl\nCom poser\nĠcurrent Player\nag ini\nĠBar bar\nĠHello World\nloom berg\n.H ere\nĠdisg usted\nĉĉĉĉĉĉ ĠĠĠĠ\nok us\nV eter\nĠch ops\nĠFOR WARD\nĠE ig\nĠPartial View\nĠim poss\nĠconsequ ential\nĠ[' #\nĉlog ging\nĠEl is\npro cs\n, </\n_p ins\n\\ Doctrine\nU vs\nĠG IT\nĠt ah\n(r ules\ncreate From\nĠ'- ')Ċ\nhand ling\nexternal ActionCode\nRO DUCTION\nFor Resource\ns burg\n< TextView\nthink able\nang ling\nĠ\" }\\\nPR S\nAppro val\nĠk lient\nn oun\nĠDiamond s\nH G\nĠTrib al\n.p x\nĠprop Name\nĠh ely\nÐ»Ð¸ Ñĩ\nĠBout ique\n\"); }Ċ\n/ host\nĠstatus Bar\n> Data\nĠdis content\nĠfr ail\n.element At\nĠem anc\nĉf un\natt les\nĠprop ulsion\nĠinterchange able\nĠTamb iÃ©n\nĠv ener\n_LOW ER\nĠp do\nĠdeter gent\nĠt avern\nVen ue\n.j asper\ny tt\nĠJ ihad\nâĢĻ Ãł\nĠmedia Player\n? p\npc f\nandon ed\nĠrece ber\nOT P\n(i OS\n(' ${\nP ts\nĠmanager ial\nĠT ud\nĠW ELL\no ze\nĠAnt oine\nĠ\\ \\Ċ\nĠV ect\nĠW imbledon\nism et\nĠbother ing\nios is\nget Method\nĠinput Data\nĠB inder\nĠd ct\nÃ¡ ln\n_B OLD\nĠJug end\nĠBegin ners\ni oms\nĠrelent lessly\nĠMond ays\nä¼ ĺ\nTom orrow\nĠS amp\n\\P ersistence\nMA STER\n(predict ions\n(num ero\n.t witch\n.Restr ict\nĠZ Z\nĠM LM\n.S mall\n] byte\nĠView Pager\nĠAg encies\nĠparticip ates\nĠinitWith Style\n% X\nĠ` ,\n. Obj\nĠ? \");Ċ\nCare er\nĠ< %=\nk ul\nCpp I\nĠMush room\nur at\nm ia\nC d\nardu ino\nĠcountry Code\n_pl acement\n(\" ================\n-b el\nAssert ions\nĠprÃ³ xima\n() \")Ċ\n_ eg\nSS IP\nu ze\npl acer\namb iguous\n_INITIALIZ ER\nĠH ats\nĠGO OGLE\nĠag itation\n(m utex\nH IGH\n: \")\nĠinv aders\nĠ) }ĊĊ\n.man ual\nĠSi emens\nĉJ Panel\nbind ung\nec era\n/m et\nĠÃ© c\n(st ation\nĠpos iciÃ³n\n_ issues\n_ aliases\n_top ology\nĠAut odesk\nAck nowled\n!* \\Ċ\nĠFre ight\nĠF XMLLoader\nich el\n(Chat Color\nĠdiss oci\nĠanalog ue\n< usize\n- ev\nĠtend r\n> All\nĠUS ERS\n.res p\n_int egration\nDisplay Style\nFAIL URE\nÑĩ Ð¸ÑĤ\nild ed\n_sem aphore\nacad emic\nĠscl erosis\nF al\n, st\n` =\nif ton\nĠsubstit utes\nĠSupport ers\napp licant\n(k v\nĠBerm uda\nĠdiscrepan cies\n.S olid\nween ey\nĠg ul\nĠfile type\nĠresult at\nSender Id\nĠgez ocht\nĠBerk shire\nĠ(\" <\n( ml\n( shift\n_RED IRECT\nOL ON\n/b rowse\n:NS MakeRange\nĠwa ive\nĠex ce\nĠcatalog s\nä¹ ¦\nill ions\n.GetCurrent Method\nĠb ilingual\nĠCascade Type\nĉ Transform\n_CUSTOM ER\nis ify\nĠÐ± Ð»\nĠWho ever\nĠE AR\nĠ[ =[\nĠÐ¼Ð¾Ð¶ Ð½Ð¾\nĠj ardin\n@ show\nĠhe irs\nĠabandon ment\nĠTrans cript\n] ^\n:Set Point\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\nĠF action\n( entities\nf action\nmt x\n_re call\n.N ULL\n. optional\n(pred iction\nAG ENT\nĠðŁĺ Ģ\nâĢĻ y\nâĢĻ util\nĠang st\n.Ex perimental\nh oot\nasy arak\naut oplay\nĠSplash Screen\nĠhect ic\nĠmetic ulously\nĠcom er\nKe ith\nĠfr ase\n_UN IQUE\n.M agenta\n(M ax\nĠscale Y\nĠput t\n( IF\nĠAPP LE\nP orno\n.add Cell\nĠm olt\nch imp\nĠleg gings\nĠflo p\nâĢĻh ui\nRT OS\n/ span\n.b ed\n.Log ic\nĠun translated\nC LEAR\n; left\nĠB FS\n-group s\nto ok\n_accept ed\nĠcash ier\nevent Id\nĠdown grade\nĉĉĉĉĉĉĉĉ ĉĉĉĊ\nÐ°Ð½Ð¸ Ñİ\nÃ¤nd e\nĠcouncill or\nĠd red\nd T\nWR APPER\n. ol\nä¸Ģ é¡µ\nME A\nĠkin etics\nĠj mp\n_f light\nF ear\nĠCh anel\n_m igration\nh dl\nere quisite\n.r ar\n- One\nĠshe pherd\n.e asing\n(des criptor\nĠsub total\nãĥ ĵ\nComp iled\nĠCol t\nd le\n/m ock\n) row\nĠres ett\nter o\nĠaer obic\n.int ro\nĠcheck boxes\nĠMcCart ney\nĠCly de\nï¼Į å¹¶\nco oldown\n-inst agram\nĠMP G\nĠLe isure\nĠnaw et\nĠN XT\nRegular Expression\nĠr ave\nB ILL\nĠbart ender\nEn large\nĠv ais\nĠ: ĊĊĊĊ\n.End point\nĠ\" ,čĊ\n}} \">{{$\nt rees\n. eng\n* log\n:[ ],Ċ\nĠbatt alion\nSubject s\nĠex position\nĠTo astr\nĠtop Level\nĠC EL\nĠg ubern\nun subscribe\ncon a\n_appro x\nT Z\nĠTree Set\n.comm unity\nĠnarrow er\n( Expected\nCl r\nĠg ore\nĠacqu itted\nĠEU RO\ně [\nĠrepublic an\nĠautobi ography\n_f ds\nColl apsed\nĠčĊ ĠčĊ\n-p ills\nMB ED\nĠi NdEx\nĠresponse Type\ngl fw\n- turned\nåıĳ å¸ĥ\nĉ Boolean\n. Or\nin ia\nĠhover ed\nĠsort er\nĠN h\nĠEx ercises\nlement s\nid on\nTo e\nĠrÃ© fÃ©\nSSF Workbook\nĠorganis ers\nĠresult Map\n_H OR\nD od\nLocal Storage\nĠjson Response\nAuth Service\nĠsm e\nemb ros\nĠlobby ist\nog ui\n.sp in\nĠCor rections\n_R AD\nĠL SM\n(c urrency\nĠæ Ģ\nĠpre fetch\n. Head\n- reader\nĠR oz\nĉm ouse\nĠT LC\nĠQ TableWidgetItem\nĠST ORAGE\nanne er\nĠìĹ Ĳ\nac en\nS X\nImage Relation\nĠres urgence\niz zy\nil ogue\nIV AL\nĠsm ack\nrr ha\n(P ARAM\n! I\nĠMe ch\nĠIM apper\nĠg ist\nĠP OD\nv ore\nula Ã§Ã£o\nĠ, -\nĠinvol untary\nQ RS\n= title\nĠBi om\nĠShel ley\nĠC SP\nP es\nd rops\nĠÑĥÑģÐ¿ ÐµÑĪ\ndiv es\n! [Ċ\nĠLe ast\nĠk ako\nĠModel o\nĠfunction Name\nĠch oking\nĠde formation\n',' ');Ċ\nca Ã§Ã£o\nĠsquir rel\nset Background\nBro ken\npol it\nNon ce\nĠkey ed\nMesh Pro\n.user InteractionEnabled\nĠflush ing\nĠb pp\nĠAng lic\nT rou\nĠWalt ers\nĠst utter\nH ip\n_w ar\niv ement\nC orn\nĠund ue\napat kan\nĠmind en\nsign ificant\n( quantity\n$ insert\nĠAL ERT\n.Un icode\nih n\n]: =\nĠpin Mode\nĠfra is\ninter preter\n' action\nĠble iben\n¡ ´\nrows ers\nG IT\n_DIR S\nFore ver\nĠPdfP Cell\n| m\n.set Height\nĠfore arm\nĠbatt leground\nĠÐ¿Ð¾ÑģÐ» ÐµÐ´\nĠH ath\nĠAuthor ized\nĠcon ferred\nĠB OTTOM\n.get Float\nograph ed\nard y\nĠservi Ã§o\noto xic\n/auth entication\nĠreprÃ©s ent\nĠcomplex ion\nĉ Common\n_b h\nWh ole\nImage Data\nĠt ink\nequal To\nĠTH R\nĠdel tas\nĠA GE\niz ador\nadmin istration\nqu ets\n_f illed\nĠH Ã¤\nallo ca\nĠBo one\nĉl cd\nFolder Path\n.R aise\n_ #{\nert ino\nĠThr one\nà® ¿\nox etine\npr ay\nĠdilig ently\nĠAr chie\n.m ultipart\nĠse o\n.get Project\nĠp aj\ncl erosis\namer on\nĠtou red\nĠn ike\nĠBak ery\n, parent\n_T EM\nS patial\nl apping\nProduces ResponseType\n(b alance\nH undreds\n-term inal\n\" Do\nContent Size\nĠb bc\nĠdÃ©cou vrir\nutil us\n. undo\n, output\ngroup Name\n$ max\nĠAll a\nĠÐº Ð°ÑĢÑĤ\n. ONE\n_dec ision\nEE EE\nĠx Offset\nç ª\nĠrun away\nĠhand job\nĠgen itals\n(j TextField\n.r adians\nĠPad res\ndepend ence\nĠswallow ing\nrote in\nĠfle ets\nĠcar atter\n(c an\nĠFlor al\n_M sg\nĠdeclar aciÃ³n\nls ru\nschool s\nĠdeleg ated\nĠPen al\nĠCh ern\nSmart Pointer\nstory book\nĠN ylon\næĢ Ŀ\n_LE SS\n/ address\nĠC ORS\nĠìĿ´ ë¯¸\nĠmod a\nmd p\nĠder by\nĠPharmaceutical s\nĠey ed\n_c pus\nè¦ ĭ\n| |Ċ\n.m ag\n( QL\nĠCivil ization\né Į\n_D ep\nĠsw earing\nĠShort s\nue bas\nĠdel ine\nĠAdvis ors\nĠìŀ Īëĭ¤\n_F INE\n} ):\n, assign\nĠPCI e\n{{ {\nSc i\nĠamb os\nile en\nĠtun er\nĠparam Name\n, total\n(Local Date\nĠs pp\nĠerro res\nĠHelp ing\n_m erged\n.time Scale\n_E LEM\n_S OL\nĠa vent\n< d\nJun ior\nĉb ar\n.l v\nĠì ¹\n= wx\nĠmirac ulous\nĠRandom Forest\nĠFrank en\n` `,\n(Initialized TypeInfo\nĠsuper heroes\nĠans ible\n_Type Def\nĠPer m\nOL ER\nGr an\n- notification\nĠk az\nĠexh ilar\nser ter\nĠstore front\n_ ends\n################################################################################ Ċ\nĉg it\nD SP\nCH AIN\n¬ ´\nInvalid OperationException\nĠS ly\nï¼ļ <\nBrit ain\n/s lider\nĠz mq\nĠb aj\nb red\n.VAL UE\nĠg rieving\nĠpornÃ´ s\nig ua\nIN CLUDED\nW ake\ncb d\nĠMong olia\nin visible\nĠcorrect ive\nĠcenter piece\nCa ught\nĠkar akter\nalm Ã¶\nĠbel um\nĠad joining\n? (\"\nĠVisual ization\nk ke\nific ados\nsp d\n_C BC\n-L anguage\nĠst il\noret ical\n(com pletion\nĠVerfÃ¼g ung\n_T ree\nrip pling\n.Remove EmptyEntries\nĠT AX\nĉ Code\nåĭ ķ\nurg a\nĠÑĥ Ð¶Ðµ\nĠa ider\nĠPres cott\nĠfil ament\nĠ---------------- ----\nther os\nÐµÑĢ Ð°\nde bian\nÃ¤ hl\nol ah\n_UN ITS\nAr k\nMount ed\n.Trim Space\n.get Number\n_e of\n.n r\nĠSHARE S\nil ater\nĠw icht\n_com parison\nĠ) \"\nclin ical\nĠT Entity\nven es\n.get Properties\nĠrel at\nĠannoy ance\nbe b\nĠan esthesia\n_int ervals\n_f h\nĠsud oku\nĠdis en\nconnect ing\nĠo a\nĠâĸ ĳ\nZ F\nĠc uz\nSO EVER\nĠMÃ¶glich keit\nchart ed\nĠhas her\nĠKe eps\nAE A\nĉlog rus\nĉN amespace\north o\n$ action\nĠR oc\n'); ?>\"\nĠPRO T\n@ api\nch sel\n/g if\n( Handle\nĠan unci\n/ py\nin validate\nĠM EP\ntem s\n; ]/\nè ĥ\nè¿ Ĳ\nĠt aco\nAD V\nh pp\nButton Click\nĠbring en\nĠTIME OUT\nĠastro logy\ndate Format\nO GRAPH\nFile Stream\nå®¡ æł¸\n.Com m\n' b\nĠGET GLOBAL\ne ating\nand est\nĠSET UP\nĠAdv ances\n.scroll Height\nAZ E\nend time\nweather map\nĠM ango\nĠR IP\nĠiter ators\nĠco ax\nĠåĽ ¾\n< main\nr ms\npc b\nĠvacc inations\nĠdisag reements\nĉ events\n< Location\n.Me asure\nĠqu eda\nĠsign alling\nĠde graded\nĠAm elia\n-conf idence\ndb Name\n_in active\non ation\nĠper ipherals\næł ·\nS UPER\n' R\n.w ay\nPL AIN\nĠEng el\nrel ay\nĠdeb ido\nĠTro tsky\nè Į\nĠÐ° Ð´ÑĢÐµÑģ\nĉ users\netch up\nte p\nĠnew Position\nĠwa ivers\nedic ine\nĠtang gal\nĠammon ia\n-d et\n/ exec\n(p adding\nĠShopping Cart\nĠPrint f\nHand led\nĠN AMES\n(c lock\nĠ{} :\nĠsim s\nĠT ears\nĠ---------------------------------------------------------------- ---------\n_C ANNOT\nLEG RO\n.Set Parent\nåħ¶ ä¸Ń\nĠer reur\nip i\n< Expression\n.tim eline\nĠ'_ ',\nĠcoat ings\nĠuse Form\n.t k\nĠFe ast\n.S K\nÃ¤ sent\nchw itz\nĠinvent ive\nĠMe i\nĠvest ib\nĠnÃ¤ch sten\n/b ig\nĠret reated\nĠpro pane\nv ictim\nA kt\nĠPres ervation\nĠP is\n_SH ADOW\nĠprice less\nr Ã³d\nobb led\nĠrole Name\nĠGD PR\nĠ' \",\nCent re\nArch itecture\nCpp Class\nĠmattress es\nĠbe ep\nĠDam ian\næĿĥ éĻĲ\nb ett\n_a es\n(c ells\nĠë°° ìĹ´\nĠbit mask\ncould n\n- now\nĠinnov ate\nĠhac en\nĠLy ons\nth ickness\nĠwhistlebl ower\n$ filter\nĠe uler\nĠH arm\nĠle ds\nĠKel vin\n.qu ick\nĠL Ã³pez\nre ve\nĠn igeria\nĠj ylland\n.empty List\nĠunsett ling\nus band\nĠtrack ers\n=\\\" \";Ċ\nĠcontin ua\nĠNum ero\nend on\nĠG erry\n.T ODO\nRe peated\nĠSer ena\nÐ¸Ð¼ Ð°Ð»ÑĮ\npro fil\nĠÐ²ÑģÐµ Ñħ\n@ admin\n.L ines\nĠtrans missions\nĠc j\nan Ã§a\nåĪłéĻ¤ æĪĲåĬŁ\nĠgetMenu Inflater\nuf req\nĠMathematic al\nNavigator Move\nĠf wd\nun ittest\nĠsynthes ized\nĠcre ed\n( Frame\nps ych\nv od\nu C\náº§ u\nĠâĢľ âĢ¦\nĠk rat\ndraw able\nÃ¦ re\n= top\n( Logger\nError Exception\nais al\n/w s\nul led\nAR ING\nĠn Index\nĠintern als\nĠeff iciencies\nĠ# @\n_b rightness\n_norm als\nĠSt out\nĠunve il\nĠSh ots\n- company\n_ elt\n(dl lexport\nĠprodu cciÃ³n\nC isco\nBl ake\n-m outh\nP ear\nĠÐ´Ð¾ÑģÑĤ ÑĥÐ¿\nĠJ ACK\nĠíĺ ¸\nĠstop words\nĠT ess\nĠpost e\nraz ier\nè Ń\nM essaging\n· æĸ°\nT ambah\nĠnarc otics\nĠcam per\nĠtrip od\nĠgl End\nĠgi oc\ncom be\nUser Role\nU l\nEqu ivalent\nĠg nome\nĠFu ÃŁ\npackage Name\n_ ue\nDisc losure\nam ate\n_t ensors\nĠKath ryn\n_B ar\nThread Id\nĠver ifica\n.assert Null\nĠOd in\nb Ã©\nĠÑģ Ð¾ÑģÑĤ\nĠj t\n.Selected Items\nĠaction able\nĠReg ards\nhe k\n:num el\n, GL\nĠPH ONE\nĉ Default\nĠel ast\nĠbe ck\n= create\n: 'Ċ\nar hus\nmod ifiers\nint ptr\nĠprop io\nï¼Ī ç¬ĳ\nĠrequest Options\nĠimp lic\nĠd uro\nĠP CS\nDel imiter\n(log its\n.E VT\nWith Context\nĠo ltre\n_EXEC UTE\nolic ited\n_Ent er\n/ from\nĠÑģÐ» Ð¾Ð²\nĠH orm\nuib Modal\n_IN FINITY\nï¼Į ãĢĬ\nUG INS\nON GL\n, buf\nĠpour rait\np j\n(c ube\nĠu gl\nĠSaw yer\nIF EST\nAp is\nĠCore Data\nĠses ame\n.p th\n.get UserName\nc ased\nĠvan ish\n_A pi\n// :\n/ non\n.d ocker\n.s i\nalert s\nĠintest ine\npart icipants\n- visible\nem sp\nm ue\n_p v\nĠC ri\nog ra\n_ex perience\nĠINTER VAL\n_re gression\níķĺ ìĦ¸ìļĶ\nend ereco\nlat able\n.local time\nĠB ITS\nĠF olding\nĉĠ ĉĉ\nÃ© se\n-b earing\nĠX PAR\nOPS IS\n'^ $',\nin cl\nĠOpr ah\nĠbooth s\nĠRoh ing\n.Border Side\nat atype\nCreated By\n,âĢĻ âĢĿ\ndo ctrine\nĠbreath ed\n_b eg\nĠaff licted\nMount ain\nB loc\nĠru ining\n.An notations\nĉint ent\nĠstatic ally\n_ Utils\nLaunch er\n: normal\nĠuser info\n-J ul\nK yle\n.Read UInt\n(url s\n/ if\nmitt el\nb cm\n@ Module\nĠConstant in\nĠb j\nern aut\n< r\nĠMent or\nĠeg ret\n_o auth\n.Data Context\n_CL I\n( Constructor\nĠset Position\nres ar\nent ing\nà¸¹ à¸¥\nTrans mission\nĠnotify DataSetChanged\nĠMouse Button\nĠ* \"\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ čĊ\nĠLy dia\nĠsw ore\nĠplata forma\nĉ buttons\nĠspr ung\n(Token Type\nC x\nA qu\nĉĉĉĉĉĉĉĉĉ ĠĠ\nĉ ADD\nuid s\nĠà¤ ®\nĠ æĹ¶éĹ´\n.Action Bar\nĠo cur\nĠil ma\n-ne utral\nĠ\". \";Ċ\nĉ Size\nP ieces\nĠst if\nĠ\" =\",\nĠEqu ivalent\nĠ igen\ndf d\n_th ickness\n_read able\n/ false\nĠtool tips\nop last\nh ua\nhandle Request\n.L AZY\n<U Function\nimm utable\nih ilation\nĠorth odox\n.pop ulate\nĠv era\nĠo ber\ns and\nv ig\nCon ference\n(C ollision\n/ auto\nĠSolid ColorBrush\n* '\n, address\nĠsweet heart\nÃ¡t icas\nan ine\n_pay ments\nĠunm ist\nĠtrump et\nB AL\nĠfile Id\nnie js\nAD F\nĠmn ist\nĠF ehler\nãĢĳ ,\nCharacter Set\nĠV ance\nInsert ed\nĠdown wards\nĠrot ational\nĠencount ering\nMB ProgressHUD\n/ System\n/p op\nĠ}) čĊčĊ\nĠ. '</\nï¼ī čĊ\nĠd cc\nasyarak at\nĠprincip ally\nå®ļ ä¹ī\n( choices\n.p aginator\nĠup bringing\nĠdot env\n()) /\nĠT AS\ng cd\n_int f\n.m utex\npre stashop\nĠb Ã¶r\nd ap\n_d emand\n\\ Desktop\nto Float\nĠsegreg ated\nĠclim ates\n.OrderBy Descending\n(', ')\nPull Parser\nAt oms\nĠben Ã¶t\nĠhom er\nant u\nIs Empty\nĠBeg ins\n> Show\nĠSup plements\nocc us\nĠdo pe\n. booking\nĠAl mighty\n[ edge\nĠEb ay\n_r ace\nF rozen\n_tr avel\nĠpast ors\n_SUR FACE\n_gen re\n_H OT\n,d im\nT bl\nmt s\npredict ions\n_c um\nĠdetal les\n-trans itional\nĠwake up\nPerson s\n.color bar\nStr ange\nØ¯ Ùĩ\n& W\nĠAR P\n_SO FT\n_d raft\nIV A\nĠg rop\nĠlie be\nĠi id\nØ§ Ø³\nc andidates\nget As\n=_ (\"\n.Get Ordinal\n)) ==\nannot ate\nĠLum ia\nIRM WARE\n_OPEN GL\n(form Data\nent imes\nĠwaters hed\nĠÐ± ÐµÐ·\nĠflo ppy\nT owards\n(comp act\nDD D\n{ n\nĠp oking\n@ m\nĠrec ycl\nstruct ors\nkey Code\nĠveh ement\nĠlit re\nĠB IND\nĠFranco is\nĠnud ity\nĠis ize\nĉon Click\nyst als\nĠget SystemService\nWeb Response\nfile size\nĠCh lor\ncol i\n_se at\n.Add InParameter\n) test\nĠqu es\nĠcaut iously\n\" display\n.s html\nĠGUID ATA\n(\" **\nĠgrand daughter\nĠAssembly Description\nFor Each\nWil son\n, eg\nĠbelie vable\nĠcross word\nlob ber\nĠStap les\n( ship\nĠw aged\nĠBols hevik\n.Add Item\n( Filter\n_A BC\nĠ` \\\nÐ¾ Ñī\nĠm box\nĠN es\nĠAVC apture\nĠcon he\nĠINTERN ATIONAL\nos g\nĠ] )->\nSK TOP\nĠk idd\nĠS ST\nĠåħ ³\nĠEth nic\nERS HEY\nĠmult ic\n_M UL\nĠFind ObjectOfType\nĠExp enses\ngetMock Builder\n-g uide\n' L\nĠçĻ »\nĠr aj\nĠBl anch\nĠAddress es\nN x\nĠIslam abad\nÐ¾Ðº ÑĥÐ¼ÐµÐ½ÑĤ\nĠBe aver\n.st udents\nĠAsync Callback\ns heets\nec ast\nĠFund amental\nĠverd ienen\nĠexacerb ated\nĠModer ator\nCCCC CC\nĠtimeout s\nĠsubdiv isions\nĠcomprom ises\nuz zer\n}, ${\n_block ing\nerm ann\nĠM ikhail\nĠSel bst\néĶ Ģ\n.sh ows\nä¸ĩ åħĥ\nĠT f\nĠIHttp ActionResult\nĠI Entity\nĠi q\nF ML\nod em\nst p\nuction s\n.f avorite\n.Get DirectoryName\nĠgr ac\nĠxml Doc\n_push Button\ncollect or\n= explode\nĠdestination ViewController\nĠSerial ized\n: message\nĠC CC\n_re covery\n- kit\nsh ima\nrot ch\nĠ` }Ċ\n_sup p\nTab la\nÑĢÐµÐ´ ÐµÐ»\nGtk Widget\nĠSIM PLE\n.ph i\nĠLib erties\n-- [\nĠunve iling\nĠext ents\nb cd\nĠhv ad\nĉc r\n.re addir\nĠread ability\nĠdismiss ing\nC amb\nĠcasual ty\nĠIP V\nmit es\nĠpur ified\n.O rientation\nĠl j\nim ulator\nfr am\n/ location\nĠcommunic ates\n:UI Alert\n/s ocial\nely n\nD EN\nĠ× ŀ\nĠbefore Send\nĠUnt ers\n'). \"\nĠ' ');\n.write Object\n(grammar Access\nĠApplication Context\nBy Username\nĠsk ips\nĠfil ho\nĠvie ux\nĠm RecyclerView\nĠarous ed\n. owl\nĠcur led\n/c allback\n(': ')[\nĠin und\nĠbreak points\n-e ven\n.st em\nĠder og\nĠn ep\nĠComple tableFuture\n- Line\n/* /\n.H ex\nĠrus se\nĠb if\nĠF ond\ni ect\nĠall otted\ndet ector\nĠ/ ĊĊ\nem ode\nu he\nuis se\nĠFIX ED\nmath rm\nĠuns us\nĠAut os\nĠ........ ..\n.tr avel\nNA V\nĠlesb isk\nĠÃ¼ zer\nĠcl eric\nĠlimit less\nol ucion\nĠneck line\nĠdrift ed\nĠRel iable\nĠC ary\nĠten ÃŃa\nĠ?> '\n/common s\nĠG MC\n_N PC\nĠBl iss\nĠBur ma\nåĲĮ æĹ¶\n(de pend\n-s uite\nĉst age\nD oug\nident ification\n_res olver\nB egan\n[ thread\nĠ ;ĊĊĊ\nNT STATUS\nĠdisob ed\n| h\nĠaccum ulating\nĠ\", \");Ċ\nu Param\n.b ill\nrit ch\nCr ime\nÐµÑģ ÑĮ\nĠRem ain\nçĦ¡ æĸĻ\n_TH AT\n` \"]Ċ\n.st amp\nĠparan ormal\nĠM PC\n\" urls\nĠEst ates\nTo Front\nTh irty\nB eth\n' u\nĠì ½Ķëĵľ\nU FACT\nĠC rom\nĠM ister\nĠE QUAL\nen heim\nĠ// {\n_w as\nĠbou quet\nĠMiddle ton\niz u\n_hash es\nĠh enne\nĠL INUX\nĉ Service\nĠT AM\nĠ` _\nĠAT A\nĠdang ling\np ain\n_B OUNDS\nprogram ming\nĠcurrent Item\nĠbes ie\nem ble\n(c alc\n.S kin\nĠpear ls\nĠB urb\n-m onitor\n/c s\nf ir\n( ver\n[ args\nÃ¼ck en\nepar ator\nD ou\n. Ent\nĠE SA\n(f m\nton es\nĠZ ac\nks am\nâĢĻ all\nĠM SS\n\" Don\nĠsimple x\nĠCon scious\nĠApp licant\npell ier\nĠpedest al\n$ http\nĠA va\n.C G\nĠintÃ© ress\nĠInt egral\nre de\n= format\n.Path s\n_PART ITION\nĠse h\nĠQu ando\nY outube\n.put Text\nì£¼ ìĦ¸ìļĶ\n.A WS\nĠC sv\nCursor Position\n-b egin\n_c ountries\n-r andom\nåį ³\nPh ill\nĠpan orama\nĠther es\nåı ª\nĠsil enced\nĠC umberland\n.Visible Index\n.stat istics\nĠprop elled\nAmeric ans\nĠvalid a\nĠGu am\nĠF EMA\n.s yntax\nd ge\nĠdeep en\nĠĠĠĠĠĠĠĠ ĉĉĉĉ\nĠSpecial ists\nĠSant ana\nĠBeet le\nĠ% ĊĊ\nUser Profile\n(\" $.\nĠemp loi\nĠemail ing\nget OrElse\n_UP PER\n.dr ive\nĠred head\nFOUND ATION\nĠmultip lic\n/e ffects\nĠhand writing\n_t a\nĠB az\nÃ¶ff ent\np rix\nĠchip set\nĠip Address\nÃŃ da\nĠU ng\nĠSch a\n.F LOAT\nĠqu iero\noch rome\nĠre efs\nb son\nĠm Ãº\nĠtr ays\nB omb\nĠmy List\nx imity\nĠD eng\nUn i\n-S eries\nog any\nlÄ± k\n/c al\nĠreal iza\nĠH ib\nĉĊ ĉĊĊ\nĠhumili ating\n[ ${\nĠpret ended\nĠDat ensch\nans ible\nĉre load\nĠmigli or\n_b et\nĠtotal Time\nĠB axter\nĠen amel\n/ Images\nĠS ES\nĠSpring Application\n)initWith Frame\nĉc al\nE LEMENT\nĠG uth\n(B igInteger\nĠMed i\n.M embers\nĠrejo ice\nĠdo f\nPEnd Point\nĠcl it\n_RE USE\nM akes\nĠs zy\nĠsh aded\nĠfav oured\nist ol\nd ex\nĠflex Grow\nħ §\n_print er\n.f name\nper ation\nĠn Ã³s\ng ger\nèĢ ģ\nĠÐ²ÑĢÐµÐ¼ Ñı\n(e ffect\nBy Url\nĠA PS\nt utorial\ne js\nSql Parameter\nĠscr aps\nG reetings\nF ed\nĠR ENDER\nĠblo oms\nĠdeb ilitating\nomet rics\nĠsim il\n- hero\nĠreal path\ndepart ments\nB IND\nĠCass idy\nli an\nSK IP\n-c lean\nĠs ildenafil\n_m ultip\njson Data\nAg ents\n.f hir\nĠtri um\nĠa store\nĠn ex\n: update\nĠÐ´ Ð°\nà¤ ²\n; \")Ċ\n.Text ImageRelation\nĠmicro scopy\nS UR\nank y\nĠPet it\nmark eting\nĠver ificar\nam aged\nct h\nĠinconsist encies\nĠmaj Äħ\nĠget Info\nĠpassion ately\nĠic mp\n[] >Ċ\nSing apore\nĠNew town\nĠrail ing\nĠEnlight enment\nuther land\nle ine\n_reg istro\nĠEric a\n_t ickets\n/m ethod\nizz ato\nG att\n- feature\nĠ:- )\nĠser pent\nĠGroup Layout\nN ike\nung a\nĠM im\nĠin cess\nĠde pletion\n_l ot\nĠbirth days\nĠrent ers\nĠequip os\nĠLe hr\n_P lay\nĠsp iele\nĠL AND\nĠEnc ounter\niz ando\nĠper u\nĠslam ming\nĠre install\nĠang i\nInThe Document\nĠversch ill\nĠvers o\n.st aff\n(v p\n(account s\nget Application\nĠmant ener\n.S O\n.A D\nĠMorm ons\nĉ real\nĠhot line\nĠCard io\npage Index\nbj erg\nF o\nĠconse ils\nĠmigr aine\nĠlat ino\nĠtor pedo\nj abi\n/ rs\nub ber\nĠCl asse\nà ¼\n(/ ^\\\n_de ploy\nG RES\nĠWHAT SOEVER\nĠar cpy\nĠmie jsc\nAr my\nĠschÃ¶ ne\nĠb mi\nĠ: \";Ċ\nĠCru iser\nq h\n.pre pend\nĠv ive\norias is\nĠ!= Ċ\nte ga\named i\nProject ed\n-b re\n, readonly\nĠsub Title\nĠm istr\nĠIn hal\ncover ing\nĠz ij\nĠART ICLE\nR ULE\nĠalt ro\nĠsett les\nidel berg\n:\" .$\n(f e\n_b m\nĠpropriet or\nĠke er\nSepar ated\n_NE AREST\n(str pos\nĠComput ational\nĠ ern\nIn View\nAc ross\nĠfr uity\n_m apped\nĠgratuit ement\nĠ{ }ĊĊĊ\npot ential\np ants\nĠsentiment al\nĠLinked in\n(p atch\nĠadapt or\nĠUI Storyboard\nĠsl ashing\n(\"/ :\nĠtext Decoration\n.di ag\n\\ Redirect\nĠneuro science\nĠAdjust ment\nĠScot ch\nĠCos by\nSE A\n= view\nĠev olves\nĠSal isbury\nãĢģ âĢľ\nevery one\n( arc\nĠapar theid\nĠaz imuth\nĠSh aman\nØ ¥\nÃ³n ica\n: class\nĠInject or\nah as\nab ler\n_est imator\n_C UBE\nĠK rank\nĠunfavor able\nĠre puted\nĠCondition al\nĠmil fs\nĠRestr ictions\n(h ref\nJ uan\n< Entry\nĉtemplate Url\n_pro duction\nType ID\nĠb alk\nĠnew Arr\nĠlic ences\n.s olution\n.s am\nĠH v\nĠtrem bling\nY aw\nĠflee ce\nĠsh ovel\nW er\nĠp atter\n= Y\nĠFr m\nS creens\n$ \"\nĠBl ond\nĠÑģ Ð¸ÑģÑĤÐµÐ¼\n( od\nĠno ct\nount ers\nuse ppe\n| int\n.rem aining\nĠult imo\nĠmasturb ating\nmm c\n= G\n\"] }Ċ\nĠfear less\nĠalg umas\nc ult\nAltern atively\nå² ģ\nODE V\nĠAd option\nĠwealth iest\nĠment re\n/g oto\nĠinform ant\nĠR out\nof i\nĠhammer ed\nĠEst o\nâĢĻB rien\nĠÅ ļ\nĠdem i\nĠÑģÐ» ÐµÐ´\nĠClint ons\nìħ ĺ\nå¤§ å°ı\nE CH\nĠanarch ists\nĠBever age\nĠg ou\nĠbri bery\nĠpick ups\nĠub er\nĠsy nergy\nfc n\nĠH entai\nĠBas ement\nĠmor b\n_c u\nj adi\n(pro j\nĠB ingo\n_c ate\n[ email\n* X\n_SE P\nĠprincip io\nup dating\n// }}\n... (\nĠDO E\nĠz g\nsh apes\n= tmp\nCr ud\nĠwork places\nĠstabil ized\nĠtent ang\n.product Id\nĠTr ident\nĠorchestr ated\nĠBuccane ers\n_t olerance\nigraph y\nÃ¼ ler\nĠØ µ\nA Q\nĠathletic ism\nĉ Server\new ed\nDid Enter\nReg isters\n_em lrt\nĠfunctional ities\n(h dc\n_mark ers\nO regon\n( Str\nĠGet ById\nĠzw arte\nĠO CI\nĠJ ame\n_c rit\nĠstock holm\nĉ Dictionary\n_cap abilities\nCT R\nĠnum a\n_first name\nĠNS Range\nĠmo stra\nĠArr ival\n(IService Collection\nĠteas poons\nĠSet Up\nĉĉ čĊčĊ\n(g uild\n.\" ]\nĠm á»Ľi\nb ff\nD ATES\n() ]ĊĊ\nĠhuman oid\nth ro\n(k lass\nĠV ad\nf sp\n-S ah\nĠUSER NAME\nĠPropertyChanged EventArgs\nĠles ion\n_DEN IED\nĠTH INK\nĤ ¤\nment al\nĠprec arious\nĠN ose\nĠcon cl\nĠwild fire\nĠT Branch\nĠB AM\n/c sv\nĠN AN\nĠClear ance\n\\ Block\n.annot ate\næī ¾\nĠWH ILE\ngeb ung\n> List\nsh m\nR oss\naf d\n[t id\nPer Pixel\n+ (\\\nĠC yan\nĠK not\n_v log\n/ var\n[ __\nĠhash map\n(); ččĊ\nĠam assed\nĠdate Picker\nĠSat oshi\n_CAP ACITY\nĠbu z\nĠMin h\nSet Color\n+ ='<\nĠIn vent\nor ca\nign um\nĠAm ph\nĠre flux\nĊ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\nuh n\n(T M\nal ley\nĠleft overs\nfd c\nâĢľ These\nĠcraw led\n(V oid\nig te\nðŁ Ĵ\nset Default\nĠBegin ner\nP ok\nĠH LS\nĠgame Id\nĠAmb ient\n_P RED\n.\" },Ċ\nÃ¼hr ung\n.S ync\nĠin ve\nĠNurs ery\nĠgl azed\n« ìŀĲ\n_f atal\n_dispatch er\n[] )čĊ\nĠde utschen\nê± °\nSh apes\nĠirre versible\n_p es\n_ esc\nĠtherm ometer\nãĥĶ ãĥ¼\n_s qrt\n\"] ==\"\nĠcul mination\nWord Press\nĠle ven\nVertex Uvs\nĠHay ward\nĠAsset Image\nĠma ize\nĠch icago\nĠt av\nexp enses\nÐ Ń\n+ f\n.\" '\";Ċ\n-S A\nĠK ota\nMain Frame\n.s ale\n_B U\nĠst ren\n_f ilt\n/ print\n(P acket\nĠÐ· Ð°Ð²\nAct s\nÐµÐ»Ðµ ÑĦ\nĠrem atch\nĠr idden\nĠ}) ();Ċ\nĠend oth\nĠcert ify\nĠUIP ickerView\n\\ Notifications\nĉ Title\nĠine qualities\nĠMor an\nĠDa emon\nles ia\nĠh opping\nĠgust o\nĠFirebase Firestore\nĠpoly line\nĠsp iked\n% \");Ċ\nĠLAT IN\nLabel Text\nĠstr apon\n_f id\n-s pecial\narg ed\nĠST ILL\nQualified Name\n. RES\n# c\n.w riteln\nĠImmutable List\nĠTh umb\nĠsim d\nDesc ricao\n.Set Text\nĠnon profits\nWith draw\n- encoded\ns bin\nĠam ort\nĉ dd\nr if\nĠpat ernal\n.Map From\n_ ask\nĠrec ourse\nĠback story\nĉ manager\n_D GRAM\nĠB ihar\nint elligence\nĠsk image\n( encoder\nĠsw irling\nĠApp et\n_s alt\nĠat te\nĠS QUARE\nĠNet z\n_p aint\nas Ä±\nisc i\nF lo\n-go al\n.set Stroke\nĠAus chwitz\nĠAb del\nĠan ew\nĠå® ŀ\nĠtotal Pages\nĠref actor\nĠcreat ively\nem ax\nodo xy\n_tx n\n.S ockets\nĠRid ley\ná»± c\ns amp\nMin Max\nĠwors ening\nount ains\nart ner\n-pro f\ns ingular\n= is\nĠF EC\n_F M\nĠæĪ ĸ\nĠCa ught\n_S CL\nĠexp o\ninf ra\nĠM ES\nch ap\nal te\nark in\n/m L\nĠsend Data\nĠfranÃ§ aise\nĠs Ã¦\n_DEFIN ITION\n****** ĊĊ\n\\ Customer\nĠâĸĪ âĸĪâĸĪâĸĪâĸĪ\nĠperpetr ated\nĠF urious\nĠteng a\nle ared\nUL LET\nin ic\nearch Bar\n< Car\nĠRenew able\nĠcontempl ated\n/ format\nĠforg iving\n.Sub Element\nPUT E\n.content Size\nĠrespect fully\nâĢľ ĊĊ\nĠpo ignant\nur ile\n}) \"Ċ\nsequ ential\n/f ast\npr ung\nĠSt unning\nĠBY U\nĠcompar er\nĉ rd\nunic orn\nÆ° a\n.Get Item\nĠsection al\njud ge\nux tap\nĠsund ay\nĠp Ã¤\nMin nesota\n\" N\nĠapplication Will\nANG ER\nĠreason ed\nĠZ END\nz ap\n= back\nosph ate\nèĬĤ çĤ¹\nĠt itten\nĠAss oc\nActivity Created\n)[ -\n?\" ĊĊĊĊ\nĠj ot\nØ ¸\nĠun compressed\n.Is DBNull\nĠv ase\nĠl orem\nĠentre prise\nĠCons ent\nãĥ© ãĥ³\nBy Version\nĠquien es\nĉ cont\nĠBlack hawks\nĠBl asio\nĠtank er\nĠstart time\nĠSe as\npi os\n.Split Container\ncompet itive\nĠp Buffer\nĠconsent ing\n.add Observer\nitch ed\nĠmisc ellaneous\nĠT ops\nĉl p\ncmd s\n.de part\nĠf Name\nĉb est\n: P\nĠsw ath\nĠv oks\nall on\nĠHtml WebpackPlugin\n.logged In\nb uckets\nĠhom ophobic\nĠsub dued\nĠmessage box\nWhats App\nĠdiss ip\nĠMAN UAL\nLIK ELY\ntest data\n- Oct\nEx ited\nĠTas mania\nl ac\nĠth Ã´ng\nSt ories\nĠbio chemical\nor re\nĠecl ips\nĠAssembly Product\nrt le\nĠWil helm\np izza\n_D H\ncon j\nĠp ueblo\nĠli que\nĠcup id\nĠActivity Compat\n.S m\n\"] }\nmail box\n.opt String\n- ob\nĠMa ui\nata ires\nĠm erry\nR nd\nĠcaracter ÃŃsticas\nT ro\n(c n\n. ld\n-p oints\n.s b\nĠve j\nĠcareg iver\nĠn au\nDIRECT ORY\n( ang\n( .)\nĠexplan atory\nelse y\nĠOver night\nĠla isse\nĠR ATE\nĠG ow\nRecognition Exception\nich ert\nĠrev olutions\n$ category\nĠundef eated\n/ community\n-p arts\n- application\n+ A\n/s weetalert\nĠK m\nil ated\nat at\nP AT\nÄį e\nĠT ec\n.on ActivityResult\n\\ Web\nĠL ug\nov olta\nĠal tru\nig y\nĠbÄĻd Äħ\nĠactiv ations\nĠaud iting\nER GE\nĠèĭ ¥\nCar los\nĠk Instruction\nmin er\nĠ}} /\nAnd HashCode\nĠBour bon\n.pro f\nĠim primir\nĠFerd inand\nÐ¼ ÐµÐ½ÑĤ\n/{ }/\nĠCl air\nĠOn Collision\nsal do\nra ised\nĠA BOVE\n() =>\nĠdeutsch land\nhib ited\nExt reme\n/h ooks\nĠd out\nĠV OC\neth oven\nPM C\nĠrestart ing\nĠSC N\nĠE O\nĠDJ s\nPassword Field\n.Access ible\nĉb us\nSTRU CTIONS\nĠlat en\nĠSN AP\n_H ERSHEY\nĠon stage\nå°ı æĹ¶\nĠsail or\nĠCur so\nĠimpro vised\nĠgeneral ize\nĠbu eno\nĠceremon ial\nĠC NS\nĠpige on\nms p\n/A IDS\nline Edit\nĠFin ancing\nĠj Table\nĠbottom s\nĠTextInput Type\nĠmeis je\n-s igned\nĠGre enville\noph ilia\nIcon Module\nĠcl andest\nem ain\nSC AN\n_TIM ES\nĠle cken\n(c ancel\nĠec stasy\n.M ULT\nĠmo eten\nĠappropri ations\nĠQ LD\nĠGu il\nĠtr apping\nx DA\nĠkÃ¶ ln\nen ums\nâĢľ To\nport o\nning ar\nĠTO O\n- ST\nĠMath s\nĠk urs\nĠRE PL\n_con trib\nĠPh y\nr ang\n.m aven\n-f ollow\nĠ -----------\nÄ± ÄŁ\n_w inner\n.C riteria\n(data Source\nĠset Input\nĠTIM ESTAMP\noper ands\nget Window\n.face VertexUvs\nĠInvest ing\nV y\nĠpersec uted\náº¿ u\nĠPl umbing\nONG ODB\nE vidence\nĠSt rom\nqu ota\nLiver pool\nĉ attack\nmin imal\nĠon KeyDown\nĠmodule Id\nĠVer anst\nm ort\nac ists\nĠM ASS\n_UN DER\n.get Runtime\nENT ICATION\nRO KE\nĠscale X\nĠs erta\nĠFrequ ently\n_TRANS FORM\nĠtw ilight\nĠMcK enzie\nled ged\nĠ@{ @\"\n_ACT IV\nĠhook ers\n= default\nĠwal nut\nĠuse NewUrlParser\nĠChe er\nĠwrong ful\nn io\nb tc\n.str ide\nĠsucces fully\nĠT roll\nific io\n. cond\nĠhe aps\n_PH OTO\n< Address\nĠSt icky\nĠnight time\nĠd ando\nĠB ILL\nĠÐ¾ÑĤ Ð²ÐµÑĤ\nD etermin\nĠf z\n(sign ature\nĠvind en\n.CON NECT\nru ise\nĠx u\npre vent\nFO X\nUIApplication Delegate\nS plash\nĠembroid ered\nĠHil fe\n.sh ader\nĠdoub ted\nResponse Status\nĠunst oppable\nun load\n+ \"]\n\" label\nĠfreel ancer\nDirect ed\nĠvor hand\nĠS no\nexist ence\nord ial\nz ag\n.A ge\nĠsp awns\nĠP SG\nstit utions\nĠsight ing\n-t alk\nĠÑģÐ¾ ÑħÑĢÐ°Ð½\nener ima\nĠBent on\n_ Store\nTransparent Color\nĠExp losion\n_I SS\nCheck point\nĠdef late\nÐĴÑĭ Ð±\n- transfer\nĠBab ies\nĠim a\n. usage\nĠneg ativity\nĠExt remely\nk j\nDown loader\nĉ act\n[ char\nNorm als\n_re ferences\nĠdra con\ná»¥ c\n_TR NS\ncompany Id\nĠVer d\nan io\nĠMatch ers\n( relative\nĠre election\n. HE\nT au\nĠÑģÑĤÑĢÐ¾Ðº Ð¸\nĠMet als\nĠCock tail\nĠap render\n_pre ference\n.S cheme\nĠglGet UniformLocation\nUsing Encoding\nÑĢ Ð³\nĠ\"] \");Ċ\nLe aders\n' Ãªtre\n_D elay\nProcess es\nicult ure\n\\\": {\\\"\nâĢĶ \"\nEm oji\n-g row\nĠC CD\ncom posed\nM aintenance\nĠRy zen\n( ag\n.pro b\nĠSin atra\nĠhor rend\nĠMount ed\n_PE ER\nĠc uk\nĠsÃ¸ ker\nĠQu ar\n_RES OLUTION\n'e au\nĠbour bon\nĠat Index\n/p ol\nĠê ´Ģ\nĉp w\n}) }Ċ\n.form Data\nĠu den\nĠro aring\nNotification Center\nĠcluster ed\nĠpair wise\nmult iline\nGame Data\n.L arge\n) ':\nĠÑģÐµÑĢ Ð²ÐµÑĢ\nĠUI Manager\nS vc\nĠPlay station\n.M ore\n. quality\nĠconfig File\n-cont aining\nĠGo at\nenc ion\nĠliken ess\n- using\nĠse aside\náº© u\nantic ipated\nF olders\n- Level\nop cion\n)prepare ForSegue\n> ())\n= add\n\\ grid\nĠy g\n_DR IVE\nĠGet Name\n.D AO\nĠh ann\nĉc at\nĠv ign\nĠH eller\nĠC REATED\nber os\nbut t\nĠb ends\nĠLe er\nÐ ¦\nĠS MP\nV ect\nĠobject Type\n: async\nĠcompet ency\nĠQt Aws\nL ou\n/c at\nPro stit\n- ves\nĉt v\nĠE I\nAnd Wait\nĠTO OL\n} *\n_ Res\nĠalign ments\nì ¡°\nĠCl amp\n-p ad\nĠwrite File\nĠApp rec\nâĢĻaut res\nud ades\nĠlug ares\nsp ender\n[ image\nEX IST\nĠde ceive\nĠhun ts\n_VO ICE\n_D X\nC AC\nĠ( ('\nis ks\n, filename\nĠle ans\nInput Dialog\nData Contract\nĠsmooth ed\nĠrecruit ers\nĠtang led\n_T ab\nĠFile Access\nY C\nĠv X\n< dyn\nLex er\nĠâĺ Ĩ\nĠgl Gen\nTemp oral\nĠAT F\nank o\nUser Code\nĠK otlin\n. .ĊĊĊĊ\nENC ED\n.un tracked\n_m r\nĠwavelength s\nĠdich o\nĠim u\n_c re\n[ J\n_D F\nĠattain ment\nĠlit ers\n[key s\nĠlist ar\nHttp s\nĠbrew ers\nĠacomp aÃ±\nĠto asted\n.f riend\nĠrel u\nĠPsych ic\nMan ip\nd na\nP ri\n-fl ash\n( artist\nĠK ov\npres erve\n_p emb\n.set Progress\nĠd usk\nĠcannabin oids\nĠK und\nĠCount ies\nĠí İĺìĿ´ì§Ģ\nĠren aming\nĠRus so\nNSS et\n(EX PR\nåħ¶ ä»ĸ\nDi agram\n, last\n(with Duration\nĠindeb ted\nĠDick ens\nĠAl ps\nĠDeg rees\nid ar\n-b lood\n+ offset\nĠH ud\nound er\nulner able\nĠp rio\nbl ind\n(p ack\nĠnight life\nĠillustr ating\nĠnut shell\nĠbroadcast ers\nĠcompany Name\nit ore\n.right BarButtonItem\nb ote\nĠP IT\n-scroll bar\nĠwind y\nĠQ MainWindow\nh ue\n. epoch\nĠcam er\nĠCL UB\nif ar\nUn available\n- quote\nĠG raz\nĠval u\n_M ATERIAL\nĠpen y\nĠtr att\nĠl icked\nĉc an\nĠTaiwan ese\nPage Index\n.T ipo\n_R ed\nĠv fs\n_tr ampoline\nĠM PS\nĠPe anut\nĠLock ed\nĉ AT\nj spb\n_NODE S\n' We\nĠCon venient\n_success ful\n+ z\nY Leaf\nĠpedig ree\nx z\nĠsal var\n_D esc\nĠnest a\nĠhard coded\n.g old\n.Image Field\n_B S\nL K\nCh ocolate\n.Start up\nĠanecd otes\n.M a\n? ]\n/ topic\n.Scroll Bars\nÑģÑĤÐ² Ð°\nĠM OM\nĠq os\nary ana\nÃ¤ch st\nĠMcG ill\nĠED UC\n(post s\nĠEnt wicklung\n_sk ills\n-g uard\nĠtext iles\n| unique\nĠAr ithmetic\nLoad Identity\n); }ĊĊ\nĠass ures\nWild card\nĠdefault ed\nĠNot SupportedException\nĠTom ato\n.Sum mary\n! \".\nuther ford\nĠlooph ole\nĠc make\n-d at\nĠrag azzo\nĠcap itals\nĠImport ance\nĠD ungeons\n_z ones\n.s at\nĠĠĠĠĠĠĊ ĠĠĠĠĠĠĊ\nc ategorias\nĠdat atable\nĠnaj le\n(g p\n- ren\nĠpan icked\nĠSk yl\nĠQU ICK\nvalue Of\nStat istic\nĠdemean or\nnder n\nĠAppe ars\nPr agma\n_p ast\nHas htable\nĠthank ing\n.cs rf\nĠp ave\nĠVict im\nĠP Ã¥\nFirst name\nC ATEGORY\nile stone\n')-> __('\nĠincap ac\nStream Writer\nĠcomm union\n_std err\nèĩª æ²»\nĠhuman ities\nĠÐ» Ñİ\nĠPar as\nlo ff\nHeader Text\ngreg ated\n.XR TableCell\nĠentity Id\nĠMast ery\nold t\n')) );ĊĊ\nhum idity\n... \");ĊĊ\nDelta Time\nĠmk time\nPh oton\nĠpens ar\nsc aling\n_y ellow\n_m ultiply\nĠVul can\nĠPear ce\n_l c\n-ex clusive\nIs Unicode\nĠpad r\n_PC IE\nĠgl imps\nĠramp age\nĠP aginator\nĠconvey ing\nn ore\n_det ach\n'] !='\nĠb ona\nĉ Con\nN az\nĠseg uint\nĠm iesz\nĠes os\nĠ'/ ')Ċ\nĠfaith fully\nĠbe kom\nÐ°Ðº Ñģ\nwhel ming\n.t wo\nĠS CE\n- na\nĠ() {\nĠDam en\n_t gt\nadal afil\nĠM MI\nTh in\nĠdepreci ation\nĠabsent ee\nĠsal ario\nĠSome body\nĠSlo an\nĠerfolgre ich\n:NS LocalizedString\nĠgeh Ã¶rt\nĠem o\nĠLag una\nÃ¡s a\nistr ates\nR aise\nĠAst roph\nĠ'\\\\ '\n_p ed\nĠTH ROUGH\nĠNiet zsche\nener ating\nop layer\nĠrod ents\nÃ¼ hl\nGame Manager\nĠHeader Component\nĠmil an\nque en\nĠP OLL\nĠL yme\nĠBrig gs\nec er\nw agon\n.D ESC\nĠgl Begin\nStat ements\net ri\nĠmock er\nĠBlueprint ReadOnly\n/content assist\nema akt\n/ loader\n_lower case\nc ivil\n_val or\n_G lobal\nĠad r\nit izen\n.S ide\nĠEm blem\nĠthird s\n_SHA PE\nRe gressor\nPY THON\nĠpsych otic\nĠcv s\nĠApplication User\nĠal unos\nToggle Button\nĠn ga\nĠmÃ£ e\nad vertisement\nåĪĨ äº«\n. ov\nĠA OL\nRE W\nĠØ§ Ø³Øª\nĠGin ny\nĠ// ////////\nS ongs\nac ic\nC MP\nĠrecogn izer\nĠp Ã«r\nD IC\n; \\\">\nĠcl ot\n: Event\n.T O\nĠC ursors\n\\ Storage\nĠIonic Page\n_j et\n(Bit Converter\nĠchild ish\nTr ader\n<HTML InputElement\n_FRE QUENCY\n=\" ;Ċ\nyst ack\nJ ur\nĠé Ķ\nĠt cb\nĠrecib ir\n.s z\nĠíģ´ ëŀĺìĬ¤\nPER SON\nn ova\nĠco er\nĠMahm oud\nĠWork place\n\"\" \"),Ċ\n.Page Size\nget Root\n(base Url\n[ U\nĠM CS\nĠClark son\n.v ol\nĠ\"\" }Ċ\nĠpe ux\nĠProduct Service\nĠmon day\nĠTest Data\nĠM aul\nĠstr ncmp\nĠshop per\nthe ory\nĠetiqu ette\nlic ence\nsc al\n- cluster\nĠhist Ã³ria\nĠSub tract\nĠfib erglass\n_last name\nĠRew rite\n/t odo\nĠoverflow ing\nĠGa uss\nok ay\nĠclums y\n(x y\nĠex emp\nanaly ze\n-t icket\nn ine\nĠDead pool\nĠc olum\nĠJ K\nĠ[], čĊ\nĠAs pen\nĠmalign ant\nh Ãµes\nSc ala\nin ne\nĠCONST ANTS\n_P rice\n# %%\nĠar sch\nĠNS AttributedString\nĠFile Type\nal location\n_s ingular\n( Pointer\nann ies\nSt ored\nĠ' ;ĊĊ\nâĢĻ ex\ndr s\nB rightness\n/ OR\nText box\nĠkn ack\nĠj enis\nĠoc as\ndat ap\nĠgame Time\nĠà °\nnd x\nĠEV T\nBy Text\nĠattribute Name\nĠj ugar\n_seq s\nĠFEATURE S\n: date\nf be\nri pper\nç¨ į\n.Ex pr\nUr ban\nid ot\nĠobliv ious\n(Db Context\nCar ol\n(', ',$\nĠBrill iant\nk ad\ncent ration\nĠk uk\nĠMAN AGEMENT\n_WE APON\nĠjihad ists\nĠent reg\nĠdo ÄŁ\nĠapp ending\nĠZ i\n_ct xt\nĠquadr ant\nelement Type\n= img\nbr uar\nIC AST\nĠintellect ually\n.An notation\nĠcampaign ers\n.DataGridView AutoSize\nĠÅŁ ek\nĠ/ ^(\n.Data Table\nĠweb log\n(l ibrary\nĠF us\nĠO ST\n_P assword\nĠBuck ley\nh off\nAl igned\n_ Real\nENT IC\n/ graphql\nĠWe ed\nĠL SB\nocc asion\nadd afi\nL ets\n(\" `\nĠwid en\n( visitor\nĠ\"\\ Ċ\nAN TE\n-c ampus\n- Bar\ncam el\nF mt\n: description\n. are\nĠAn ast\nĠLong er\nser ious\nĠdah er\niz zer\nMultip licity\nĠHoll ande\nĠAn notations\n() ?\nĠprot ester\nĠUr du\nĠspecial ties\n_ ly\nC ad\nan nt\nj sp\nĠj oe\n) r\nĠP ersist\nĠob l\nĠdead lock\nĠser i\nRelative To\nĠY us\n(P rint\nabil ia\nĠun protected\nĠAS IC\n.N ome\nĠWeb Client\nĠIT V\nÃ¼rn berg\nitor i\nSign ing\nĠRead only\nĠel dre\nĠCheck ed\nal num\nSource Type\nlex ical\nĠillustr ator\nĠDirector ate\nĠT rom\nm pp\nlog g\n.in strument\nĠwood ed\nĠUser Type\nĠRen contres\nmodel Name\nBTTag Compound\n> To\nĠfree zes\nĠCont e\nĠC redential\ncal a\n/work space\nĠlib ido\nchl uss\nolley Error\nĠacc iones\nĠJin ping\nat Ã©g\nInter stitial\n)) )));čĊ\ny brid\nĠRol led\nModel Creating\nĠRef lex\nĠLuc ifer\nĠe her\nĠcarn ival\n! \";čĊ\n_LOOK UP\nĠsucc Ã¨s\nĠreopen ing\nĠcread o\nĠS my\nĠEnt s\n.S ince\nĠFish eries\n/ connection\nĠC SA\nĠÐ¿ÑĢÐ¾Ð³ÑĢÐ°Ð¼ Ð¼\nlsru he\nĉ actor\nĠStra uss\nJson Value\nĉe val\nlock er\nĠX IV\n_h yper\nĠPol ly\nâĢ¦ the\nĠG URL\nÐµÑģ Ñģ\nĠd ives\nuge ot\nin ema\nbers ome\nCom pra\n-c ultural\nĠgr ands\nS ac\nĠBar ney\n_ QUESTION\nĠm aman\nĠhast ily\nĠclub house\nĠgr und\n_W ALL\nĠpur ification\nĦ ä»¶\nÐ² Ð°\nvest ment\n.Display Style\n_c ores\n% S\nĠos Ã³b\nĠdis b\nĠFrank ie\nĠind iscrim\n_B egin\n( er\n; o\nãĥ³ ãĤ°\nnode Name\nĠrefund ed\nĠdis mal\nĠHuff Post\nĠund ecided\nw riteln\nk Ã³w\nĠB ose\nĉ lib\nop lan\ninterpre ted\nĠM ONEY\nu vo\nĠnto hs\nise um\n> j\nĠun fit\nĠh ugged\nĠJ est\nmp s\nĠb rom\n' o\nĠf ov\nĠSh rine\nĠE ITHER\nyc astle\nĠs atur\nrequest Data\n[ dir\nOU CH\n_D o\nĠy ol\nĠinitial Values\n[ vertex\nservice Name\n.s alary\nĠAuth enticate\nè¾ ¾\n_V LAN\n([] );ĊĊ\nĠSer um\nPath Param\nform ulario\nĠsummar izes\nOC R\nor am\nLD AP\nb ic\np icked\n-th at\nĠc ds\nĉ anim\nĠintr ic\nĠW ort\nĠV LC\nĠShi ite\nSt udies\n.dispatch er\n( enable\n.m ixin\nĠSey mour\nĠbi omedical\nĠSp oon\nĠNor se\nĠint ents\nĠÃ© quip\nĠDress es\nLP ARAM\n.set Result\n.delete ById\nĠnew found\nĠO SD\nous y\nĠest ados\n[ Byte\nCh uck\n.onView Created\nĠContrib ution\n_E nc\nIN ET\nĠflavor ful\nĠãĤ ¢\nvis a\nĠHerc ules\n.get App\nĠY ok\n.Main Activity\n). [\nĠla ut\nInv ite\nĠChurch es\n,' #\nÙĬ Ø±\n( SS\nĠv enda\nas jon\n. INTER\niph ery\n(S yntax\nond rous\nĉ center\nBracket Access\nĠCap com\n.get Font\nĠVault s\nĠdiseÃ± ador\n: o\n( shell\nĠe Commerce\nĠalt re\n_att ached\nĠis r\nĠobt ains\n.Context Compat\nĠattend ee\nĠTw ice\nĠM ood\néĤ® ç®±\nnod oc\nĠPIX I\nso far\nĠBlo ody\n.Com plete\nĠB ER\nĠget Category\nĠdis qualified\n_Tr ue\n' er\n-to o\nĠhyper link\n_max imum\nNe al\nĠp Info\n.getElements ByName\ns cheduled\np ayer\nĉ verify\n- entity\nmet atable\nbild ung\nĠdelta X\nem place\nĠre verted\nrep id\nlear ner\n} ))ĊĊ\nuc ose\nĠr ico\nĠb anged\nĠAf ro\n(in ertia\nans a\nĠÃ¤ ven\nK aren\nĠsuper st\nĠfr uition\not ch\nĠP ays\nRes idents\nĠpr ism\n& );ĊĊ\n.j ms\nĠSl ug\n=' ')\nĠg uten\nĠSpiel berg\nĠT Form\n(b efore\nĠFin ite\næĸ° å¢ŀ\nĠmeille ure\nÐ¿Ð¸Ñģ Ð°Ð½Ð¸Ðµ\n_E rr\n- ft\nn ano\n.Add r\nĠ// čĊčĊ\nĠJon ah\nĠDis co\nĠlunch es\nĠD FA\nexp licit\n] ';Ċ\nĠref inery\nĠString Type\nuns queeze\nĠLik ely\nW rites\n.b pm\nĠp Item\noun sel\nSt anding\nĠch oked\nĠans ch\nup il\nĠDebug ger\nâłĢ âłĢ\n< Group\nĠSc alia\nĠsubstit utions\nĠclim bers\nĠ*) \"\nĠnanop articles\nĠAPP RO\nĠpurch asers\nĠQ Test\nĠAw akening\nĉ Serial\n.re paint\nĠsav ory\nĠpor ous\nĠa Var\nĠSu arez\n-E ast\nBox es\nĠWe iner\nĠC RA\nĠê°Ĵ ìĿĦ\nĠx lim\n\" ?ĊĊ\nĠwash ington\nìļ ´\nĠtot alement\n_m time\n.set Scene\nĠll ama\nĠc bo\nef d\nĠund errated\nra ising\nĠN ATIONAL\nĠ************************************************************************ ******/ĊĊ\nopt ic\nide as\nĠæı Ĳ\nĠl ak\n!! ,\nĠkom m\npar agus\nS ites\nĠstress ing\nĠMat ButtonModule\nĠConvert ed\nan ame\n_READ ONLY\n] =>\nĠbord el\nĠbibli ography\nĠgrid Column\nĠjournal istic\nìŀ Ħ\nĠr aspberry\nst ice\nĠabras ive\nĠDB Helper\nĠint f\nĠRT BU\n}' \",\nĠH ao\nsw ana\nĠjan vier\nĠinstit utes\nĠSe bast\n_COL S\nĠfig ura\nĠZ ust\nfo y\n> ());ĊĊ\nĠLie be\nAg ency\nĠìĭľ ìŀĳ\nĠTh umbnails\ntext Theme\nĠecho ing\nem perature\nĠfire power\ned b\n: ');Ċ\nÃ© gor\n/ feed\nĠh url\n- available\nĠR enders\nĠf ds\nĠJ SGlobal\nĠCitizens hip\nkie go\nStandard Item\n.pl aces\nĠscal ability\nĠTr ails\nf ollower\nĠservi Ã§os\nĠ?> \"/>Ċ\n[ method\n( ib\nĠridic ule\nĠadap table\nf iltro\nĠket ogenic\n.Image TransparentColor\nĠC FO\nĠP ED\nĠ\" \");\noglob in\n[ sizeof\nBr andon\n.To Short\nĠni Å¼\nĠTER MIN\n.get StatusCode\nĠdeb tor\nĠCONST RAINT\nĉs ide\nĠDom ino\nÑĤ Ð¾Ð¼\nĠgl acier\nĠg rou\nz p\nĠCar la\n-F eb\nP el\n.read Value\ncl imate\nĠtile Size\n.tr ip\nENT E\nĠch ubby\nĠim position\nLOW ER\n.by Id\n.Look AndFeel\nari h\n.findById AndUpdate\nĠSt ored\nĠbourgeois ie\nHTTPRequest Operation\nĠsu cker\n.de queue\nlick en\nĠsub range\n_M EDIUM\nIsl am\nĠSp arks\nï¼ļ %\nimport e\nĠ` -\nĠjo ys\ngroup id\nF lying\nĉ bs\ng ross\nĠF iesta\nĠc st\nĠaf icion\noph on\n_C I\nj n\nBe auty\nĠs ce\nĠcrack ers\nap k\nĠg ord\nĠpre text\nĠ[ \\\nĠC andid\nGo als\nAction Types\n, number\nĠpopul ace\nĠent ren\nĠAut of\néĻ ¢\nBase Context\nBal ancer\n(B order\nĠmin ced\nrec all\nc ba\nĠappro ves\nĠKlo pp\nerm int\n_front end\nes co\nĠninete en\nDr iving\nĠX VI\nĠT actics\nĠprogram as\nies en\nM ov\nd iet\naut Ã©\n(\". \")\nĠgover no\n_A nd\n/ mit\nĠcaf eteria\n-tr acking\nĠcomm uting\n. unknown\n_type of\nĠS SA\nPRO TO\n.M erge\nĠforCell ReuseIdentifier\nĠS atisfaction\nĠ################################################################ ########\nIM PLIED\nĠRestr icted\nĠMag num\nÐ½ Ð¾Ð¼\nK ansas\nay light\nĠTow ards\nĠT ome\nĠT ender\n_de pt\n.c rt\ntre cht\nST ONE\nĠempt ied\nĠ' );ĊĊ\nà¸ģ à¸²à¸£\nÑı ÑĤÑĮ\nle ck\nĠ[ ~,\n.ex pires\nĠT ig\nĠIron ically\nĉ LL\n.Not Nil\nĠåĬ ł\nĠG over\nĠPers pectives\nĠD VR\nĠlok ale\nĠres end\nĠdoub ly\nĠcomun idad\nĠAssembly Company\n( turn\nĠsub list\nĠendorse ments\n_REG ISTRY\n! \")čĊ\n); ;Ċ\nĠgan ze\nĠH arness\n_match ed\nä¾ ¡\nâĢ¢ ĊĊ\nChe f\nĉ Initialize\n); \">Ċ\nĠFar age\nr ish\nalt et\nDe aler\n.Log Warning\n(a fter\nĠG arten\nĠexpl odes\n.CL ASS\nĠuse Router\n-L a\nĠsadd ened\nar ov\nTo Update\nĠæ ŀ\npi i\n' ĊĊĊĊ\nĠTRAN SACTION\nong a\nlog an\nC row\nĠbrit ish\nĠContent View\n_B B\nolv ency\nload Model\nTO OLS\nhet en\n_n h\nAB L\n- vers\nA rena\n.singleton List\n(p at\nĉn ames\n(s q\nĠval ore\n$ req\nĠanthrop ology\nTh inking\nĠmis chief\nĠarch ival\nà¤ ¹\n.Set ToolTip\npr ar\nan ja\nĠfirst ly\nĉ light\n-- ,\nĠSpe ars\nĠo gl\nste en\nim plements\nr ists\n+ E\nĠB ans\nĠfast ball\nĠHerm es\nve led\ntw enty\nĠneces ita\nĠMor occan\nis LoggedIn\nC LOCKS\n.Ab stractions\n.P acket\nĠmen acing\n-ves m\nĠLiving ston\nĠo ci\nĠextrad ition\nĠ$ ($\nĠL ocker\nĠRe bellion\nĠmix ins\nct al\n/r fc\nĠSG D\n, idx\nĠble ibt\n(\\ $\nĠp eter\nĠbar ren\nĠphosph ory\nĠg oggles\n.h om\n@ d\n=' -\n.is User\nak ash\n_h ub\nip elines\nĠ@ }\n.s urname\nInter op\nĠin File\nĠespecial mente\nĠaut onom\nĠZ ambia\n_C OUNTRY\n<C ourse\nide ographic\nĠCam eroon\nfind ById\n) \".\nĠDep ends\nrit os\n. Our\nĠsubsid ized\n',' \"+\nĠg lean\nĠAssembly Copyright\npic able\nĠunw itting\nĠo mdat\nĠE ase\nĠemb odies\n(p DX\nĠV oter\nAss igned\nre veal\nĠf end\n(parse Float\nĠd ps\ntpl ib\nassert Count\nx max\nUn used\n(f b\nĠsub mits\nĠRep lica\n(d y\nĠband e\n.sem antic\nĠsearch String\nĠSan ford\nĉf ull\npr m\n_util ities\nUN USED\nĠsc anners\nĠb fd\n.O rganization\n-c ur\nR ail\nĠxn xx\n% );Ċ\nĠover posting\nV iet\nĠtaper ed\nĠcame o\nĠView ing\nĠdismant le\nĠf iss\nĠS entry\nheat map\nĠÃ¡ reas\nĠGr Ã¼\nĠj ig\n.clear Rect\nevent Type\nĠturb ulence\nck ill\n.F ocused\nĠintermedi ary\nĠOb esity\nateg o\nm onto\nĠAlam ofire\nĠShe ila\nĠCOL LECTION\nCard Body\nĠHab it\nPL AN\n.visual ization\n% ).ĊĊ\nĠIntelli J\nĠGlo ver\n.s patial\nĠgreet ings\nĠOpen FileDialog\n{ /*\nĠT Ã©lÃ©\nĠE f\nĠ\"[ %\nĠmag istrate\nĠLite coin\nĠSe le\nĠcomm erc\nprint w\nnext Int\n.getChild At\nĠGet Current\nĠeurop Ã©\nĠA IS\net ten\n.Event Queue\nan ford\nun akan\n.set Output\nĠcmd line\n, get\nĠHe ard\n.content Type\nem d\nĠRet orna\nac d\nĠPlay off\nac man\n.web socket\nClient Id\n.ex am\nĠattenu ation\n.set Character\nĉC ollection\næ° Ĺ\nĠpredict ors\nĠSher idan\nrim inator\n( Stack\n_P KG\n=' '):Ċ\n(p ad\nĠN odo\nĠinter oper\nĠTrans parency\nĉd x\nz em\nĠprat ique\nĠf ibr\n() ?;Ċ\n_MO BILE\n. REG\n_Y ELLOW\nT itan\n')ĊĊ ĊĊ\nĠcomponent Name\nĠCool er\nis Function\n.feed back\nĠperf ected\nĠpa ed\n-s cripts\nS usp\n< Option\nĠD t\níĦ ´\n' RE\nĠN RL\nĠM anny\nĠro g\nĠG arr\n_c ookies\nS pl\nĠpromot ers\n* dt\n\\ API\nĠe voke\n_ Entry\nĠfirefight er\niv idad\nJ acob\nĠleg ion\n(p ol\nĉf lash\noo keeper\n.clips ToBounds\nĠgraph ite\n' http\n_TRI ANGLE\nĠDrop Index\n.sm tp\nĠUNS IGNED\n_P ICTURE\n_OR IENTATION\nĠO PP\n# '\nÃ¡f ico\n.h istogram\nĠB enny\n> We\nĠrep ost\nĠf iance\nĠB ounty\nst ress\nD atetime\n: H\nĠS phinx\nNorm ally\nap ixel\nĠuser Agent\nĠMor i\n/l ab\n.MODE L\nĠEm otional\nS caled\ndevice Id\nĠê³ Ħ\nce ased\n< IM\nceed ed\nĠlibr arian\n) null\nĠmic ron\nĠF ou\nul en\n/l ive\nrs chein\nfe a\nĠhab il\nĠNav Link\nn ecessary\n.c odes\n-m ake\nĠp Parent\n_rel ations\nĠrush es\nĠprop ensity\nĠSkin ny\nW EST\n_cor pus\n(re ordered\nf db\nĠGet Message\nB run\n.v s\nĠp ÅĤ\nĠcrunch y\nBo om\nP J\nJ ake\nçº ¦\n$ client\nĠ} ])Ċ\nĠcon verse\nĠGR AT\nĠC RS\n.L ow\n( validate\n_CLICK ED\n.b luetooth\nĉx type\nĠclose Modal\n_int ent\nĠprogn osis\ns av\nC tl\nĠcho oser\nĠSud oku\n= User\n.cl f\nĉexp licit\nĠpotential s\nĠGeorg es\nĠel ic\nĠts lib\nĠR agnar\n_rep resentation\n-leg ged\nham ster\nĠFire store\nconvert View\nComb ined\nĠÐ´ ÐµÐ»\nĠes pect\nĠãĤ Ĵ\nĠSt amina\nlook s\nEN ARIO\n/ fixtures\n.s ms\nĠsem iclass\nĠsemiclass ical\n.Pe ek\n] $\n_D SP\n_L VL\nV IRTUAL\nĠCap itals\nĠS CT\n.Wh ile\nĠSub stance\n-d one\nĠensl aved\nclass ify\nent anyl\nĠVeget able\n_DE PEND\nD ani\nĠqu ieres\nĠabb iamo\nĠLib er\naf c\néĢ Ł\npredict ed\n.P NG\nĠWh ip\n//================================================================ ================\nĠâī ł\nĠå Į\nDE M\nCC A\n/c lose\nĠ/// </\nĠmes ma\nĠBe irut\nĠInitial izing\ná»Ļ t\nMON TH\nĠí ĽĦ\nP arking\nCom fort\nĠEng ines\nwer p\n@ RequestParam\n- Key\nĠback light\npass es\n.numberOf Lines\n/L inux\n( HTTP\nĠHttp URLConnection\nos os\n.x x\nĠfil mpjes\nĠ=== >\nopt imize\nCan on\nĠ... \"Ċ\nĠ'\" ';Ċ\nĠcÃ© lib\nĠprincipal mente\nĠProperty Value\nOUN CE\nĠexc ursion\nĠAccess Token\nrequ ete\nV oltage\nex plain\n}) ();ĊĊ\nUR LOPT\nĠfung al\nG reek\n-bl ind\nĠfeud al\nĠSon ata\nĠDi agnosis\n$ xml\nedit ary\nĠstim ulates\nP ont\n.Has Prefix\nbo ats\nĠSc atter\nĠGENER IC\nĠfish es\n= length\nĠmel hores\nsp ent\nÃ´ m\nĠIn gram\n> .ĊĊ\npar ity\n.Video Capture\nĠTub es\nĠcom edic\nĠprocess Data\nAD B\n(new State\nåģ ľ\nĠWeb seite\n_O ff\n, body\nĠsub contract\nĠch ute\nĠcart esian\nth resh\n.C art\nĠmet od\ncustom ize\nL td\nĉs ound\nWeb Service\nĠH indered\n[ res\n(T ile\ncap abilities\n_OVER FLOW\nĠÑģ ÑģÑĭÐ»\nĠCo ch\nĠtest Name\nWORD S\n\\ Modules\n? url\n_contin uous\nĠQ Icon\nĠst ares\nĠe jected\nĠIn vasion\nfinal ize\nĠge v\n< g\nĠEditor GUI\nBer lin\n.line Edit\n-reg exp\nĠs led\nĠE ACH\nu co\nĠseed ing\nĠlocal ize\net u\n_al most\npan se\nĠS ensors\n_S I\n* sp\nĠProperty Info\nĠaprox im\nĠdataGridView TextBoxColumn\n× ł\nĠdifer encia\nLO OK\nĠomn ip\nĠT uring\nĠun idades\nï¼Ł Ċ\n.Row Headers\n_ACTION S\nĠD aly\nĠfort ified\nĠW age\n.sim ps\n( issue\nĠle pt\nOwner Id\n' order\nåı į\nç¥ ¨\nĠre writing\n.It alic\nĠForg otten\n( IL\nĠNoSuch ElementException\new n\nĠpop ulous\nĠSh ed\n# ${\nĠA lo\nDevice Info\n(IN VOKE\nĠpen a\nĠB BB\n.b b\nĠt ors\nĠconduc ive\n-p urple\nĠsquare ly\n//---------------------------------------------------------------- -----------ĊĊ\nÐº ÑĢÑĭ\nfast a\nĠc pt\nĠIn gen\nĠ{? }\nÑĥ Ð³\nPer l\n.s ky\n-aut omatic\nim plement\norn ment\n. IMAGE\n-S peed\nĉ Field\nĠp ounded\nĠL Z\nĠauto Focus\nĠ à¹Ģ\n.Com panion\nĠV im\nunc ia\n_s kb\nĠun married\nĠS our\nga ard\nLe od\nĠà ª\n.Cl oud\nĠrein forces\n'] >\nĠfel iz\nĠU AV\nr ances\nåį ģ\nToList Async\n.Exec utor\n-t s\nĠ'. ';Ċ\nĠKin ect\nãģĦ ãģĨ\nĠbe vor\nĠEx traction\n_draw er\n$ sub\nĠup lifting\n.btn Exit\n(' //*[@\nRED IS\nstd except\nde o\nĠg iver\n_bind ings\nTo Device\n.m i\nĠEst imates\nalle le\n?? ?ĊĊ\nĠStream s\nĠaff lict\n.s ap\nĠqual i\nĠG aul\nSpec ifies\nĠz k\nĠsanit ary\nĠnew Index\nspec s\nĠfragment Manager\nĠN ecessary\nĉS pring\n= ~\nĠO MAP\ncare er\n(\"- \");Ċ\nĠDar ling\nit ag\n: pk\nĠSt ellar\nĠinf ertility\nlex ible\nUn ary\nĠ: ],\n.N EW\ng sub\n_U Function\n.sl ides\nĠdivers os\n_loc als\n\\\\ /\nĠp cap\nĠO ok\n.DataGridView ContentAlignment\nerson ic\nĠtre buie\nĠsequ entially\nab ar\nĠIP CC\nĠdev out\n\\ Helpers\nET weet\nĠtrabaj ar\nĠWil kinson\nĠda ÃŁ\nHum ans\nTe achers\nĠData View\nĠY og\nĠj ede\nĠamb iance\ntr and\nĠerr atic\nĠtá» «\n.r abbit\nĠnew bie\nĠentr ances\nĠorth ogonal\nĠDIS PATCH\nĠSch ro\n_T URN\n: invoke\nĠtant al\nĠZ ones\nstat ements\nL imits\nĠG Ã¤\nia ÅĤa\n.p redicate\n.F R\nĠChrist oph\n.C ons\nĠH orton\n_C ustomer\nĉ MD\nĠel kaar\nĠM SE\nĠIs Active\n] *)\n\\ Unit\nĠe o\nFor Object\neli ac\n-develop ment\nĠte al\nĠstitch ed\nĠOut come\non cÃ©\nembed ding\nĠon Next\nĠíķ´ ëĭ¹\n(ex isting\n.b id\nĉassert False\n{ l\nLE rror\n_b ullet\n(H tml\nĠe Books\nper Page\n/ question\n.f ake\n.m b\n_d ll\nĠcum shot\nĠMad agascar\nH OLDER\nĠpes quisa\n_DECL S\n], [-\nĠAlban ia\n-to ast\nĠprotagon ists\nĠmy ocard\nĠwalk ers\nĠ===== ==\n/ Page\n=<? =\nĠenqu anto\n_TR UNC\nĠsept embre\nĠlayout Params\nĠ'../../ ../../../\nĠTraff ord\nĠpal avra\nĠrund own\nĠbrit tle\nÃ¤ che\n.Y ELLOW\nĠCer emony\nĠnew Text\nvec s\nĠess en\nĠMet odo\nĠGUID E\nĠpost pone\nĠV Stack\n[\" $\nĠMicro systems\n\\ Page\npm at\n_FA ULT\n_m B\nState Machine\nFac ulty\n.w x\nĠMoz art\nan ime\nĠpy t\nĠB ukkit\n- INFRINGEMENT\nĠsearch er\n-b asket\nĠo mas\nĠTun is\nĠPl att\nĠ{čĊčĊ čĊ\ny ah\ntol ua\nInt roduced\nsup ply\nĠmisog yn\nĠWa ist\nĠE H\n- operator\nĠdark en\nĠCos mic\nĠglac iers\nĠ ččĊ\n][ _\nCompany Id\nĠRe construction\nizz lies\nĠlÃŃ der\nĠcolleg iate\nĠPet ty\nOUR NAL\ndecor ators\nram s\n( (Ċ\nĠAstr onomy\nĠr io\nĠCyr il\nju an\nĠre inc\nĠPist ons\nĠBus y\nptr on\nĠpom oc\nĉRT CK\nBuy ing\n// **Ċ\nĠWr apped\nĠMe er\nĠim ap\nĠbest imm\nĠAg ility\n.To Table\nstin ence\n]) **\nĠAutom ated\nd sp\nĠGar lic\ni ode\nex els\nint ros\nĠbest owed\n( visible\nĠhydr ated\nno xious\nĠAuthentication Service\nĠshow Modal\nĠcompos ers\nGENER AL\nCT S\nĠSh r\ncre at\nĠclo sets\nĠground ing\nĠCOM MENTS\nĠ+ #\nĠground work\n(index Path\ngr atis\nupp ies\nĠk vm\nĠcu ales\n.Deep Equal\nĠal loys\n-b udget\n(__ _\nĠcon ectar\n-r ad\nĠit ch\nl amp\n.gr p\n-add ons\nĠseab orn\nĠneglig ent\n_D etail\nĠser ene\nĠbarr acks\nĠb q\nĠS ect\n(d atos\nĠthem atic\nĠpoll uted\nĉ animation\nH ugh\nExec utable\n('/ ')[\nĠapopt osis\nĠabbrev iated\nfo on\nRank ed\nĉh it\nĉĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nContin uous\nĠmove To\nDB Object\nĠconce ivable\nĠG wen\nĠÃ¡ ll\n__ ()\nĠL ana\nĠein zel\nĠrecount s\nystem s\now any\n): ?>Ċ\nĠAk ron\nol ini\nCor p\naph rag\nĠ\" '.\nĠconven ed\nĠ... .ĊĊ\nĠcal lee\nĠClo ver\n.des criptor\n.Item Stack\nĠper verse\n_C E\n= @\"\n--- čĊ\nĠbe v\nsum a\naccum ulator\nĠl izard\nĠÐ¾ Ñĩ\nget Description\nĠSar as\n.next Sibling\nĠelastic ity\nĠch ac\nm oved\n_T op\ntr er\n(d own\nele ms\nob ili\n.post Message\nĠ( âĪ\nC sv\nĠY osemite\ns weet\nM ATRIX\nigr ated\nĠfor ging\nĠPage Size\ntransform s\n= YES\nĠdisc losing\nĠPed iatric\nĠDead ly\nResource Id\n-b inary\nĠRow e\nĠC air\n_ex traction\nDec re\nĠOb st\npl r\nĠPhys iology\nm vc\nht i\n.T e\nĠextravag ant\nĠAnt ib\nÃ³ st\nout dir\nĠcar ne\nView Pager\nĠimpl anted\nSearch Params\nÃ¼r ger\ncon de\nac ente\n_C UDA\n$ val\n\" While\nĠtemp List\nĠsyn agogue\ncm c\nĠÑĢÐ°Ð±Ð¾ÑĤ Ñĭ\nĠsez nam\nĠsess uali\nĠcabe za\net Ãł\nĠfa Ã§\nge h\nced e\n\" Some\n: on\n-form ed\nby name\nĠë°ĺ íĻĺ\nĠna Ã¯\nĠA UG\nĠe ased\n]) {\n(p thread\nĠjed em\n(f ixture\nĠPar l\n] });Ċ\nĠexp ulsion\nĠIn etAddress\nĠM LP\n. ');\nĠor o\nĠSe villa\nĠformula ire\n- terrorism\n/Web API\n* angstrom\nc rawl\n_lo an\n_DIG EST\nĠKnox ville\n.g ca\nĠDi y\nnt ag\nable ViewController\n.F eed\n- shared\nĠcoc ci\n_inv ite\nĠBuck ingham\nĠGl uten\nĠend emic\nR aised\nĠquery Interface\nĠm artin\nB áº¡n\nĠh are\nĠde in\nr arian\nmy file\nĠang uish\nText o\nĠB UFF\n( ln\nm ars\n_sub title\n_g ift\nĠbold ly\nĠSing ular\n(Log Level\n< Article\n/st ats\nĠÐ¿ Ð¾Ð²\nĠit ens\nĠdenom ination\n.DataGridView TriState\n_L R\nĠDuch ess\nĉ Block\ntr acer\n-C N\n\\App Data\n.l ists\n(R oute\nĠGOOD MAN\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\nĠtin ha\nĠever lasting\na Data\n(com pare\nĠr pt\n\\ Php\n.F ILES\nĠsp aring\nSc ar\nĠØ§ÙĦ Øª\nĠBeth lehem\nĠback page\nsp lice\nf Ã¶r\n@ dynamic\ná»© c\nì ¦\n.p aging\nĠBel mont\n.EX P\nĠinter le\nĠCheck list\nĠUn icorn\nB EST\nget Player\n.args ort\nĠwith String\nĠModer ate\n} \">Ċ\n.setImage Bitmap\nĠtrench es\nĠgener ar\nĠfer mented\nĠdej ting\nCtr ls\nĠdisag rees\nQui et\n(SQL Exception\nĠTensor Flow\nON A\nPort land\n.P tr\nll x\nast on\nCl usters\nĠUs uarios\nĠk hi\nĠg ia\nĠDol phin\nÅĳ s\nĠl uder\nĠdisposit ivo\nĠV y\nomp son\nĠíķ ł\nĠk cal\nĠCalc ium\nSections In\nĠC asc\nĠgratuit i\nos omal\nĠunder cut\nĠC ah\n: params\nĠreturn Url\nĠE re\nÃ© rc\nĠint l\n}/ #{\nĠoutput Path\nĠfalse hood\nĠUser Role\n< HashMap\nĠCreate User\nĠCow boy\nĉ Use\n] (Ċ\nĠShop ify\nView State\nAdv ance\n-t ank\n\" T\nĠJ ens\n= options\n(\" ..\n.m ime\nĠC RT\nĠhÃ¤t te\n( so\n.UN KNOWN\nĠdar Ã¼ber\nĠCO VER\nG em\nC ro\n_RE CV\n_h ierarchy\nCho osing\nJ EXEC\nĠdors al\n+\" <\nĠN ey\nW oman\nBe zier\nĠrig s\nĠont vang\nï¼Į åĪĻ\nĠG aut\nc mb\nN hap\nĠmon oc\nĠenerg ia\nobserve On\nst akes\n-* -\nĠN ack\n}} \"Ċ\nerv as\nĠHindered Rotor\nAdj acent\nĠIntern acional\nĉ area\nĠðŁ Ķ\nĠspark le\n(). _\n. idea\nĠut recht\nĠmapped By\nĠCol o\nĉ TR\nPost er\nĠcomb ating\nĠYellow stone\nier rez\nac ct\nĠs Ã¡ch\n.New s\nĠfield Value\nĠc az\nĠFre em\nĉĉĊ ĉĊ\nĠus ur\nĠsol a\nĠcum bersome\nĠcat apult\n\" ./\nĠExec utors\nĠAm es\nĠ'< %=\nfill na\n, âĢĶ\n:Set Text\n-c ategories\n- archive\nĠPoll ution\n. Of\nâĢľ At\n_CHAR SET\n( Column\nâĢĻ )\nĠunmist ak\nĠe arm\nĠPlatform s\nĠMoment um\nVector izer\nraw er\n(pass port\n( plane\nĠrepresent a\nĠpub key\nĠJ ain\nĠm ennes\nĠinstant aneous\nĠeth ers\nĠn ests\nĠPat ton\nĠH ACK\npack ing\nIS ervice\nĠrock er\nĠf ica\nĠGl adiator\nĠU PC\nĠLow ell\nb earer\nĠv iper\n_g lob\nĠm ashed\nĠhairst yle\nĠundermin es\nrest aurants\nĠreaction ary\nĠbill ig\n} \");čĊ\nĠv istas\nĠop endir\nĉ labels\nall is\nĠWol ff\nĠC PC\nĠrail ways\nĠVaugh an\nĠAs king\nca i\nĠG n\n_PRO F\n-S ep\n.cur ve\nM ultiply\nÑĢ Ð°Ð½Ð¸ÑĨ\nĠmeet up\nget Db\n(G UI\nĠreim burse\n: result\nT umblr\n.C losed\nĠcon forms\nĠH ok\nied ade\nNew Label\nĠnav Ctrl\nDo ctors\nĠìķ Ī\nĠb outs\nĠis c\n/ ';ĊĊ\nuh l\n.U i\n-s ama\nĠCan onical\nĠmetic ulous\nĠgro tes\nĠ// ////////////////////////////////////////////////////////////////////\net es\nĠlang ue\nĠf Chain\nĠType face\nĠBr igham\ni are\n'Ã©t ait\nĠE FF\nĠdestroy er\n_mat rices\nN Ãºmero\ncall able\n_period s\nstr uk\nm aj\n.r l\n.l ift\nÙĬ ÙĦ\nÃ Ĳ\nRet Val\nDen ver\nĠTrib ute\nki ye\nz ew\nĠSp are\nĠleuk emia\nĠwait ress\nĠplut Ã´t\nAli ases\nĠLoc ate\næ ¶\nIdent ification\n.t el\n-d ays\nter rit\nim bus\nĠButter Knife\nëĤ ´\nrupt cy\nĠGr ades\nĠunders ide\nĠhard ships\nune i\n-cont ained\nĠ[' .\nOb solete\n.R etrofit\nĠur anus\n_r gba\nĠrap es\nĠK are\n[âĢ¦ ]\nĠFin ch\n.bunifu FlatButton\nquis ar\nĠNurs es\neg ade\nĠh n\nEx clude\nĠst ochastic\nĠs otto\nĠPen alty\nĠson st\nĠro sa\n_F ind\nĠIn validate\nListItem Icon\n', ččĊ\n_p du\nĠMe als\najÄħ c\nĠO ops\nĠNot ices\nĠderiv ation\n[] čĊ\nè º«\nyst ery\n_f ive\nE arn\n= event\nĠo gr\n- REAL\nĠL ips\nselect ors\nad ier\nĠsetBackground Image\n( thing\nĠsoft ball\n\\x aa\n( ident\nĠJ ury\nĠVoy age\nĠT Array\n(P aint\nW arm\nEX TERNAL\nas u\nĠ(! ((\n.F ETCH\nĠsk irm\nORE D\ncancel led\nitt el\nĠseed u\nlich es\noh o\n, retain\n( WebDriver\nipt ables\nER ICA\nĠclean liness\nellow orld\nĠco hesion\ng ist\n]. '\nerg ing\nĠis p\n.offset Top\n(f actor\nun iversal\nĠPlay back\nĠByte String\nĠdam ning\nĠS SR\nac us\nĠStat en\nĠåķĨ åĵģ\nĠP ee\nĠSam pling\nator ia\nstart Index\nåĲ «\nĠì´Ī ê¸°\nĠOlive ira\nĠFl ake\nbo om\n_M SK\nĠF acing\norgh ini\nfood s\nTree WidgetItem\nĠHAL F\n\"\" \")Ċ\nĠCH APTER\nĠEvel yn\n> +\nĠHorn ets\nwo ke\nĠ/ [\nath olic\n.se gments\n.navigate ByUrl\nĠMan us\nĠpe ptides\nĠfle eting\nĠAT V\nĠSh ib\nInt Array\nĠmo z\npro blems\nog ne\n.O ther\nAdmin istration\n%% */\n\"] ==\nĠAnd res\nAd a\nh ints\n\\\" \";Ċ\n(p ng\nĠê°Ģ ëĬ¥\nãĥ Ĭ\nre jected\nĠmov ers\nçİ ĩ\nĠparen thesis\n(assign s\nEl ite\nRem inder\nĠsuffer ers\nĠResource Bundle\nth ag\n>' čĊ\nant ino\nPer iph\nĠSh ard\nChart Data\n(j j\nĠo stat\nh uge\n-auth ored\n.c i\nĠpym ysql\nĠlin ers\nĠAT S\n> Last\n) \")ĊĊ\nĠget pid\nGet Size\nĠext ortion\n[ float\nĠE INA\n/ Base\n.setOn Action\nÐ¾Ð» Ñı\nĠGl acier\n_ az\nĠtransport e\nĠS ms\nth umbs\nĠtre asurer\nĠm z\nist ik\nRED IENT\nĠis i\n_st uff\nPOSIT ORY\nstart date\nĠZ inc\næ± ½\nĠk ak\nĠerf ahren\n_COM BO\nĠuc words\n.P ay\nĠkingdom s\nĠexcel ente\nign ite\n_var iation\nĠnaveg ador\nä¸ ĵ\nview Controller\nri re\nH onestly\nC ascade\netr ain\nArg entina\nc q\nĠMar ian\n/ ar\nĠinter esse\nur ahan\n( PC\nĠfr ivol\nĠTrust ed\n(I Configuration\nĠR ihanna\nendo za\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nĠpro clamation\nĠpredomin ant\nĠconst s\n-ne ck\nW olf\n.check box\nĠst anza\nĠent ender\n// (\nHand s\nĠbilled er\nĠTos hiba\nabb ix\nENC IES\nĠj im\nP UR\n. lesson\nĠber th\nlar Ä±n\nB lo\nĉ ext\ne el\nĠdem asi\nĠcolon ization\n/d isc\nï¼ ı\nCertain ly\nç®¡çĲĨ åĳĺ\nĠjog ador\nu Ã©\nColumns Mode\nĠJ V\nĠInstit ut\n_s pectrum\n.d ense\nĠShort cut\nĠse buah\nĠflash y\nReg ards\nĠshar per\nc ancellationToken\n_det alle\nĠScar lett\nĠÐ¼ Ð°ÑĤ\nĠneg ocio\nà¸ ĸ\nĠJ W\nweb driver\n.w all\nĠx amarin\nop aque\n.Add Parameter\n( Controller\n-ab ortion\n_FUNCTION S\nCustomer Id\nĠven ir\nĠB uster\n_predict ed\n/r ules\n- Methods\nĠgd zie\n\"] ');Ċ\nĠP x\nCON S\n.S lice\nĠrev amped\nĠTable View\nĠd icks\nĠíĺ¸ ì¶ľ\nĠAux iliary\nOper a\n/ rc\nĠun thinkable\nĠdeduct ed\nl z\nĠL age\nĠRow ling\npro ved\nOff ers\n, set\nRG BO\nĠF U\nĠCent OS\noz o\nĠTro jan\nĠma Ã±ana\nĠ// =\n** :\nĠ{ \\Ċ\nĠBow en\nKnow ing\nĠå º\n=-=-=-=- =-=-=-=-\nĠeben falls\n]= {Ċ\nB MI\n(); )\n( permission\nAnd erson\nĠde grade\nSo ap\nu ÅŁ\nĠP uppy\nĠEthi opian\nĠTEST ING\nense x\nĠdress er\nĠCh ore\nUn handled\nAssoci ate\n.add itional\nĠdiffÃ©rent es\nis que\nĠnecess Ã¡rio\nĠgener ics\n(p f\nĠ\\ `\nĠNear by\nap oration\nĠTheme Data\nWi Fi\n.Re al\nacy j\nL iv\nĠpsych ologically\nmethod PointerType\nĠNik ol\nĠDed icated\n_PORT S\nĠJ ae\nNS AttributedString\nĠamb assadors\nĠHand lers\nĠAn at\nĠvocal ist\nĠr ar\nĠdev uelve\n.g s\nĠx cb\nĠsub module\nĠASS IGN\nure en\nĠcl ases\nemo th\n_CNT L\n_j wt\nĠë§ Ī\nĠout post\nĠIn box\nĉf lex\nĠGro cery\nIL INE\n.m ob\nĠCon str\n]= ]\n(w allet\nĠsed e\nf al\nĠimp ass\n={ ['\nĠun fore\nf use\n_ Lean\nĠaval anche\n= rand\nĠadul tery\nĠG ee\nĉ InputStream\nĠc abel\n_M OUNT\nĠnot icias\nĠRa um\nĠbyte array\nĠon Hide\nĠ ).Ċ\n$ instance\nĠdidSelect RowAtIndexPath\nac am\n-c ollection\nĠup he\nPot ential\nĠS DS\n_appro val\nDam n\n: convert\nĠMod ifications\nĠìĺ Ī\nĠun ab\nĠsc rolled\n+ \");Ċ\nĠga uche\nĠH OL\nantan amo\nĠcolumn Header\nĉZ EPHIR\nz ac\nĠout ings\nĠapplaud ed\nh oria\nmod x\nĠmillenn ia\n& m\n.Json Ignore\nĠpione ered\nĠC avs\nĉ js\ndeparture day\n_k b\n.P atient\nĠpet als\nport rait\n\"} }Ċ\nHomeAsUp Enabled\n.p retty\n, cljs\nĠmed ios\nhash ed\nem odel\nĠMo jo\n.from RGBO\n- pe\nĠint imately\nĠel gg\n[] ;čĊ\n/O bservable\nĠobed ient\nĠJam al\nRequired Mixin\nĠListView Item\nĉ placeholder\n_trans aksi\n< Service\nĠens ued\nĠR ican\nS aga\nA UDIO\nĠj m\n-s ales\n-m ulti\n% \";Ċ\nĠclass ifications\nĠt Ã£o\nCo al\n; ');Ċ\nĠdel ights\n_h z\n_b old\nDE PEND\nĠÐ¡ Ð¾Ð·Ð´\nate e\n_sub net\nĠTown send\nĠCast illo\nĠpr t\n$/ )\nĠfil ib\n('/') [-\nĠuphol stery\nĠcomponent e\nĠX F\n.Re verse\n_t unnel\nIm mediately\n-m ove\nĠal ist\nW SC\nstruct ural\nistor ical\nT anggal\nĠCOUR T\nĠobsc ured\nĠlands lide\nĠbed side\nĠbar ang\n-e lected\nĠcer amics\n-- */Ċ\nĠW anna\nD yn\nĠverschied ene\nĠindu cing\nĠfl ute\n.Append Text\nĠZ ub\nĠPul itzer\n: both\n.max Length\n.Property Type\naw y\nitem Name\nĠNarr ative\nrev olution\nĠhal ten\nĠError Response\ng ather\n/util ity\n: ''\nĠK ee\nĠOlymp ia\nClin ical\n: green\nĠP lex\nĠKens ington\nĠPhon etic\nĠdistrib utes\n_ex empt\nWatch ing\n.M isc\nĠdomain e\n:\" .\nãĥķ ãĤ\n_MODULE S\nĠhab lar\nĠLa os\n.setText Size\n.pa used\n_T W\nĠoverwhel m\nĠhem at\nLuck ily\nĠS ENT\nĠInvestig ators\n>( {\n(f out\nĠA UX\n.raw Query\n- strong\nĠre sembled\nĠSha ft\nĠX III\ns uggest\nĠsing apore\n_ ability\n$ k\nĉi NdEx\n\\ Image\nC adastro\n.p ivot\nĠman power\n_att s\n.set Fill\new orld\nconst s\nGet Width\nĠgratuit a\nĠPet r\n- answer\nĠHem isphere\nĠC aj\nĠTr ades\nÄĩ i\nĠFre ddy\nOn Change\nĠporn ografia\nĠSUM MARY\n_me as\nĠDR IVE\nĠC ree\n_m ale\nĠsu k\nĠmaneu vers\nset Visibility\nall i\nĠdiscretion ary\nreg ation\nYST ICK\n: href\nĠtar af\nĠch u\nĠ@ [\nEn ough\n.Trans fer\nIf Needed\n:) ])\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n[ axis\nTrans lations\n.s ervers\nĠK EEP\n', )Ċ\ns ponsor\narch ives\n.Ultra Win\nĠHon our\n'] ));\nĠin eligible\nĠAntwort en\nĠApplication Exception\nĠcategor ie\nĠWE IGHT\nĠBund y\nĠP IXEL\nĠdu ke\nT ower\nSc otland\nĠrefere es\nĠAssembly Trademark\nĉstart Activity\n.One ToOne\nĠAus wahl\nĠstrength ens\n.Qu it\nĠURL Request\ne ec\nĠregist razione\nĠh oses\nActual izar\n/ array\nĠconstruction s\ncc d\nĠFile NotFoundError\nTh Ãªm\n(result ado\nĠSER IES\nSpe ak\n_A HB\nBlock ed\n-font awesome\n: ])\nob ble\n( links\nĠCatal onia\nGe V\n.Date Format\nĠfle a\n. ef\nĠsolic itud\nĠD Y\ncode gen\ny the\nĠep oll\n_T D\nĠaffirm ation\n_f a\nIST A\nĠE aton\ncreate Query\nĠlog istical\nĠRay castHit\nĠcaul iflower\nĠul cer\n.Al pha\nin ke\n[ ..\nEX AMPLE\n-w age\nĠstat i\nect ive\n.get Min\nĠSUB JECT\nĠAudio Manager\nzz arella\nĠSelect ListItem\nĠ$ čĊ\nĠoh io\nĠTah oe\nĠk Wh\nquery String\nĠdepart amento\n= admin\nĠwork station\n) ++;Ċ\nHeader InSection\nĠTri umph\nChar lotte\nĠS MA\nC Ã³mo\nĠver m\nĠthe ano\nbg color\n\\\" \",Ċ\nĠRem inder\nB illy\noral Type\nge ber\n(cl one\nĠK ut\n/> .\nA pollo\nĠsh l\nZ H\nTh under\nĠg ifs\n_k elas\nĠRoth s\nĠ} (\nĠBroad com\nĠDep ths\nĉIN NER\npar cel\nĠej ercicio\nĠindepend ents\nill ow\nexec utable\nEvent o\nĠz ost\nĠH MAC\n[ DllImport\nal les\n_der ivative\nApi Key\nĠste pper\n= plt\nget Index\nĠvale urs\nPol itics\nĠID X\nĠUs a\nĠL TC\n.min Length\nst ro\n_N C\nĠstagn ant\nĠmont age\nĠbl ouse\nel ige\nĠtur quoise\nĠSup ern\næŃ ³\nvar a\nNew Item\n_EXT ENDED\nĠwood working\nĠEp iscopal\n.p air\n.User Info\nĠdire nt\n/t cp\nĠfra ught\nSl ave\n.get Latitude\nĠTool box\nĠearn ers\nĠH OUR\nÐ°Ð» Ð°\npos ables\ncondition ally\n_x x\nĠlan Ã§\n(r p\nCh a\nĠinc arn\n.D ao\n./ (\nØ§ Ùģ\nT d\nCE F\n/r and\n.V irtual\nĠdb Helper\nam ines\nĠl z\nĠst os\nĠAt kins\n_D D\nitor io\nĠminim ise\nhip ster\n({ ...\n_S RV\n[ frame\nĠR oku\nGR P\nĠbar ber\n.F echa\nĠë° ľ\nĠgran ularity\nĠS aying\n_ likelihood\n.bar DockControl\nĠfront line\nĠWh ale\nĠsm elling\nĠContrib utions\niv ant\nĠc rippling\npre load\nĠHerr era\n_W ATCH\n- et\n: expr\ninvest ment\neder ation\n_m gmt\nĠho ops\nmon key\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ċ\ninter sect\nĠcr imson\nĠsu oi\nĠ[] :Ċ\nX Object\nSF ML\nE QUAL\n(' ~\ncent roid\nĉ restore\nĠpre natal\nĠMist ress\nĠq x\ntp s\nĠresp awn\nĠ[] ),Ċ\nĠkont rol\nãģĤãĤĬãģĮãģ¨ãģĨ ãģĶãģĸ\nModule Name\nĠnew Path\nĠP aging\nĠr ins\n_m aker\n\\ brief\nĠb isher\nĉ Read\nĠjihad ist\n.p ersistent\nĠRob ots\n/gr pc\nĠJ ou\nÃ¤ ren\nï¼Į åľ¨\n- pt\nĠzd arma\n_N M\nĠConnect ivity\n(b c\nĠFlor ian\nĠSoci ology\n_ wo\nAnd Serve\n_ ();Ċ\nĠFL T\n_D ER\nĠCon nie\nĠBroadcast Receiver\n{ (\nĠcomment er\nĠdemocr at\nĠampl ify\n---------- čĊ\nĠH MS\nĠtr ailed\nĠS oda\n-test ed\nul ist\n) new\n_ Thread\nT odd\nĠdeb ian\nV k\nĠpresent a\nĠcomfort s\nĠWash er\nĠg arg\nĠHuck abee\nĠÑģ Ð°Ð¼\nĠ! \"\nAdapter Manager\nĠE a\nĠAssoci ations\nĉĉĉĉĉĊ ĉĉĉĉĉĊ\n.get WritableDatabase\nĠnucle i\nÃ©gor ie\nĉ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\nB AB\nĠup keep\nĠT up\n.with Opacity\nly a\nĠlux e\nup ro\n- eng\nĠrel aÃ§Ã£o\nĠkey Pressed\nĠhy brids\nlf w\nOperation Contract\nĠname Label\nĠH ort\n_gr upo\nĠband a\nI x\nHealth y\n.get End\nfra u\n( Scene\n(C ollections\nĠSk ipping\nub o\nĠf Ã¼n\n\"> -->Ċ\nĠdro its\nĠhomosexual s\nĠab duction\nĉw idget\n$ headers\nĠD AR\nĠfl a\nth reat\nĠlou is\n.Get Property\n\" Just\n(f rames\nry o\nprof ession\n| i\níķ´ ìĦľ\n(s v\nĠun recognized\nI onic\nF ashion\nScreen State\nĠIn coming\nNot Nil\nĠsync ing\nem ie\nĠtherm o\n_pro cs\nĠincons istency\nrel igious\n.m j\nĠperson n\nĠmoment os\nor arily\nĠæ Ĭ\n_ne urons\nIll ustr\nim oto\nil ik\nĠW oj\nTr ading\nĠapp are\nĠentre prises\nach at\nĠÂ ¬\nĠne igh\nBUTTON DOWN\nĠMah er\nag han\n-h ash\n\" f\nĠclient ele\n.add Button\nĉ SP\nQ i\nĠgr ated\nPOS ITE\n: >\nĠHow ell\nĠCompar ative\nĠIS C\nÂŃ i\nO cean\nD avis\nĠFil me\nW ins\nĠJ IT\noc cer\nĠC orm\nENCH MARK\nrch ive\nica Ã§Ã£o\nĠm ata\nĠchild birth\nĠOption ally\nEn s\nĠx http\nĠel ucid\n_Osc InitStruct\n)) ):Ċ\nĠint uit\nĠDon ate\nĠcorrel ates\n> Delete\nĠequ ipe\nĠb oca\nĠinfl atable\ner ah\nĠDateTime Kind\nĠcal ves\n\\ Lib\nĠem lrt\nĠTr ilogy\nĠP anc\nĠD uis\nĠpelÃŃcul a\nWAR DS\n_DE TECT\n-section al\ndh cp\nFor Row\n-de struct\nĠPres enter\n/s lick\n, on\nĠCit adel\nlogged in\n_sub type\nĠsig ue\nĠc uring\nĠFire wall\nĠfluores cence\nĠItal ians\nÐ¸ÑĤ ÑģÑı\n.get Style\nIn Seconds\nj ie\n-S mith\nĠx link\nĠsub missive\nÐ¾Ð½ ÑĤ\narbon ate\nĠF aul\n_go als\nĠCommission ers\nchart Instance\n_POST FIELDS\nĠmed ial\nĠman os\nĠdel t\nsv m\n.Ap is\nep hy\nĠasym pt\nĠapp Delegate\nĠimpro bable\nck a\nsim d\n/ Error\n. âĢĵ\nĠP TS\nde er\nĠs ina\nm agnitude\nID ADE\n'] }'\nĠmay ores\nĉ comment\n/ console\n\" @\nv olt\n.s ell\nĠM acy\nĠmel od\nĠim Ã¡genes\n_ch g\nĠin out\nident e\n) '),Ċ\nd ni\n.b lob\nĠtyp ography\nĠe erie\n_O ID\npes an\naj an\nĠch opping\nĠbl uff\nad f\n_b ases\n.Form atter\nĠ\\ %\nĠPage Info\nCar rier\nĠCal ibration\ncom o\n-b odied\nĠfinanc ier\nĠIN A\n. ERR\nĠhood ie\nĠSan ity\ngu arded\n.opend aylight\nISM ATCH\nHigh lights\nÃ¼n k\nani em\nanger ed\nassign ments\nĠregistr ado\nĠU PPER\nampil kan\nash ire\nĠNik ola\nĠC FL\nĠH DC\nĠp oids\nĠIP s\nĠprevent ative\nips oid\nif ix\n.c amel\n.g a\nV olumes\n- ste\nY ahoo\n_s ibling\nH ighest\nopt group\nĠkvin na\nâĢĿ ãĢĤĊĊ\nĠAppl iances\nĠ\" ><\n') \")Ċ\nht t\nĠIdent ified\nĠpenc ils\nĠmember Id\nĠappend String\n.load Data\nĠmock Mvc\nĠj ub\nĠSl ut\nĠTai pei\nst att\nPol it\nĠpart ager\nDid Change\nIncre ases\n) }.\nĠB aba\n_CL IP\n[ unit\nĠÐº Ð»ÑİÑĩ\nĠalc uni\nĠL ola\nĠcl inging\n@ PostMapping\n(con cat\nĠss id\nĠFa uc\nok it\nĠRecord ed\nÃ¡ lez\n($ ('<\n.assertIs Not\nĠk ali\nV olt\nĠwarm ly\nĠsca res\nget ti\nfÃ¼h rt\n_d oes\n. EMAIL\nim ations\nĠspring fox\nĠDec om\narc y\nĠgl itches\nĠM off\nĠV oll\n.b etween\nĠcoord en\nĠPart icularly\nGB P\nĠsem ble\nEast ern\n_M SB\n]) {čĊ\nm organ\nĠE VAL\nd ere\nHO USE\nmo ire\nist ique\n_l stm\n-com mit\nyster ious\nĠtw ink\n-th umbnails\nen ÃŃ\n:' ',\nĠblack out\nĠFlo ors\nĠso fas\nĠou i\nlesh oot\nĠRa q\n- abs\nĠk ra\nM ining\nsha ft\n.set Columns\nCl azz\nPRE TTY\n.play list\néĸ ¢\n-Sah aran\nM ING\nĉ bl\nè® ®\nj f\nDO CKER\nhope fully\n( ignore\nĠUsers Controller\nĠMitar beiter\nĠL ES\nHam ilton\n-m etadata\nĠK K\nikt ig\nĠwoll te\negr ator\n] bool\n, current\nĠvalue Type\nĠexcav ation\nol and\nĠv erv\n/file path\nAuth Provider\nĠpro crast\nĉ ULONG\n_MEM BERS\nĠup lift\nĠAut onomous\nĠart works\nĠOut reach\nĠp ore\nHome page\nDialog Title\nĠGener ating\nPAR SE\nĠsem anas\nĠhuman o\nJSGlobal Scope\nĠvol te\nĠb ella\n(is instance\nĠpl c\n\\C atalog\nĠeste emed\néĽ ·\n(s uffix\nĠswe eps\nĉ ORDER\nĠdo ivent\nĠSw arm\nĠComp iled\nget Page\nAD R\n.R ichTextBox\nĠN aming\nag ged\nĠG ANG\nr asing\node led\nĠg ala\nĠJS Name\ndd f\nĠill ust\nĠLans ing\n[ port\n-de ath\nĠdin heiro\nĠE ighth\nĠb ian\nst Ã¥\nĠvers iÃ³n\nĠLinear Gradient\nĠHard ing\n. *)\nec zy\n$ header\nĠv Ã¥r\nUn checked\nĠko je\nĠPal adin\n() )),\nG iving\n() })Ċ\nĠd ips\nF riendly\nĠport rays\nĠhel ium\nĠinsurg ency\n_ex piry\nĠstringByAppending String\nĠa antal\ns lope\nm ast\n.get Integer\nĠ################ ########\n_PIPE LINE\nĠdens ely\nĠmut ating\nm idi\nĠSe it\nay ne\nNOW LED\nĠDes mond\nĠF Name\nĠN airobi\n\\ Context\nĠcalc ular\n-d en\nĠc ott\n] ):čĊ\nĠRecommend ation\nĠRole x\nĠvalidation Result\n.p at\nĠn Ãły\nĠRest Client\nĠG PI\nĠAshe ville\nĠO SP\nĠPER MISSION\nÐĶ Ð°ÑĤÐ°\n/ notification\nK night\n_W ord\nĠB ender\nrank ing\nĠpart ida\n_res ervation\nÌ Ģ\nĠm Name\nĠget ch\nĠb orr\nĠdilig ent\nDisc uss\næŃ£ åľ¨\nape ake\nion ed\n-N azi\n.c um\nĠK ron\n=$ ('#\n/s ingle\nĠerot isch\nĠV ib\nĠrat ified\nĠconcert ed\nĠREG ARD\nĠdo br\n.Driver Manager\n' r\nPort able\nĉs uite\nĠrel aciones\nĠD op\nemplo i\nDO B\nĠcr umbs\nĠx ls\n_App lication\n(': ',\nĠ---------------------------------------------------------------- --------Ċ\nm se\nĠber k\nĠReturn Value\nĠBel ly\nĠcam ar\nĠPe ek\nels ing\nĠnot ifies\nĠTr istan\nĠG AR\nem me\nĠElev ated\n_C SV\n(ch alk\nĠtw enties\nĠSearch Result\n= search\nĠMix ing\nÃ½ t\nĠrecru iter\nĠIDE OGRAPH\nĠA go\n( Operation\n$ values\nĠworld ly\nĠRosen berg\nĠConfigure Services\n>* </\nK ANJI\nĠchuck led\nĠstr ife\nĠBomb ay\nĠBACK GROUND\net at\nenumer ator\nĠsÃ» r\nĠ ãģ®\n_p edido\n/D k\nĠje an\n_C olumn\nĠheat map\n.P ending\nĠun successfully\nĉ ep\nĠsin ful\nĠAnt ony\n_F OCUS\nText Label\n_re action\nĠID irect\nĠcarn iv\nWork sheet\nĠsu ede\nĉRT CT\nĠset backs\n.un bind\nĠsi Ã¨\nL iquid\n_RENDER ER\nM ate\nĠMillenn ials\nĠep oxy\nizz iness\nĠb razil\nÐ¾ÑģÑĤ ÑĮ\n& view\n/g pio\nJam ie\n.Gr avity\n=\".$ _\nĠV AN\nĠID R\nap pearance\n.S elenium\nLe ap\n.Relative Layout\nSign als\nAcceler ation\nĉH ANDLE\n/ Open\nĠget Logger\nS pi\n-w riting\nĠÐ²Ñĭ Ð·\n-w orthy\nĠw cs\nĠQ Timer\nĠPoly mer\nĠv ant\nĉ Delete\nit te\nWh ilst\nĠalg um\nĠshield ing\nĠk ms\nĉĠĠĠĠ ĉĉĉ\nM eteor\nĠaggreg ator\nĠS ind\nHost Exception\n=' ',Ċ\nĠJS BracketAccess\nON O\n_B uild\nĠstri pper\nĠL J\n< Component\n/s ources\nĠerg onomic\nĠAcc red\nun ce\non is\nze igt\nĠSk ate\nĠRect Transform\nIn complete\nĠingen ious\nĠco isa\nĠcity Name\nhab it\n_T V\nĠAN SW\n... \">Ċ\nĠsn ork\n_op acity\nĠinitWith NibName\ni ado\nA AC\nĠ] ).\n; z\n_par agraph\nĠnos es\nstand s\nif r\n_m E\nI raq\n.P redicate\nena ire\n]] ];Ċ\nĠun idad\nĠretire es\n_h ello\nĠmode le\nĠUIT ableViewController\nf write\n_num ero\n_vis ited\nĠrece be\n( Notification\nFant astic\n_sub menu\nĠP EM\nĠCup ertino\napprox imately\nclass ed\n.Read String\nĠdomic ile\n_P W\nĠball park\nĠK ale\ncon tra\n_f avorite\n/ of\nQu ite\nĠOT A\nĠacceler ometer\ndid n\n| ^\nĠRohing ya\nivic rm\nann abin\nÐ¾Ð±Ñĭ ÑĤÐ¸\nor ado\n') +\nHa unted\n, ID\n( UIAlertAction\nur v\n_b el\nĠMex icans\n/ terms\nĠPaint er\nInput Label\nĠV inci\nĠRos ie\n\\ uc\n< Menu\nĠcool ant\n(current User\n_d ual\n) \"},Ċ\n& p\nĠconver ged\nĠrestr ain\nĠYugosl avia\n= target\nĠimp uls\nds a\nSearch Tree\nĠh box\nĠImp ress\nÂ§ Ãĥ\nget FullYear\n(d a\nĠY YS\n.al ignment\n.Get Text\n.token ize\nĠOlymp us\nĠmur ky\nore station\nĠdiss atisfaction\nĉT Array\n_ kses\n.Add Singleton\nĠStart Time\nĠfan atic\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĉ\nĠentity Type\n. override\nĠ -------------\nĠDat agram\nf out\n(with Id\nĠ# __\nŁ èĥ½\nek yll\n.f riends\name leon\nĠz ach\n.simple Button\nret orno\nĠkon k\n/s mall\nĠQuick ly\nun read\nDon ate\nDetail View\nĠdu a\nĠpenetr ated\nOM UX\nĠn ir\n_p data\n\"], [\"\nĠlow es\nĠdop ing\nĠas ymmetric\nĠneed less\nour cem\nĠup ro\nĠGu zzle\naf b\nĠsext reffen\n-c ollar\nĠcol ossal\nMon key\nn ish\nĠhandle Message\nIncre ased\n* dx\nĠChatt anooga\nf org\nĠOr den\nĠsh ri\nĠV and\nĠ\" @\"\nImage Sharp\nĠWild cats\npon ible\n.sc enes\nĠpaint ers\nĠPf izer\nĠZ ah\nTo Local\nĠFl am\nĠÃ© taient\n)) ^\nĠSand box\nĠTR ADE\nĠchrom ium\nĠac claim\nĠpac man\nÂ´ t\n) reader\nM ari\n.Dispatch er\n.A DMIN\nĠRem ed\nSw eden\nĠoverl ays\n. er\nĠp ang\nĠclean ly\naven port\nToy ota\npatch es\nĠv tx\nĠE is\ncl ado\nĠR itch\nRO LS\nĠh ade\nĠconspic uous\nĠdo cks\n(j q\nĠPrem iership\nĠBe z\nĠâĦ ĸ\nĠÑĥ ÑģÐ»\n_tot als\nĠprov a\nĠC ue\nĠsa Ãºde\nĠGame Controller\nIM IZE\n, port\nãĢĤ (\n.C decl\nInstant iationException\nĠcoll age\nĠIO C\nĠb ais\nĠon Finish\n-st ars\nset Size\nĠmog ul\nĠdis illusion\nĠche vy\n(S chedulers\n( IR\n_loc s\nĠcann ons\nĠcancell ing\n/b us\nĠbuf io\nĠY ours\nĠPik achu\nĠter me\nr Ã¥\nf ahren\nĠowner Id\nĠoblig atory\nĠcul p\nĠacid ity\n-m ult\nĠBam boo\nĠ' \">\n_g s\nĠcomp il\nn ard\n-ex c\nĠrh yme\nĠbut to\ns ays\nant asy\në ¸\nĠcitt Ãł\nĠche g\nTime String\nĠpos itivity\nĠD abei\nĠw ang\nĠes cre\n\" c\nĉv ideo\nĠRank ed\n.str ings\n>> >(\nĠÐ¸Ð½ ÑĤÐµÑĢ\nĠrest a\n[: ,:\nĠrend re\nĠdes er\nJ os\nĠdis ruptions\nĠÐ¾Ð¿ ÐµÑĢ\ns ampling\nsup press\nĠcontainer View\nĠSeam less\nĠair y\nĠon load\n.Window Manager\nĠPL A\nbr aco\n.set PositiveButton\nĠp du\nĠg si\nĠC li\n_gr adients\nÑı Ð´\nĠWh isper\nc stdint\nĠl Ã¤ng\nĠform ulations\nÃ©n om\nourn emouth\n[$ _\nĠordin arily\n.set Username\nĠfacult ies\nMIT TED\n/ values\nĠwe ir\nĠA pt\nM Z\nĉc f\nuck en\nĉĉĉĉĉĉĉĉ ĉĉĉĉĉĉĉĉĉĉĉĉ\ndef ense\n[i Var\nĠBusiness Exception\nSelect ors\n(co ordinates\nĠRes ets\nĠDr inks\nole ans\n(st ypy\n_IO C\n.x xx\nĠSl ater\nĠBel ize\nĠ/ ************************************************************************\nadd in\n_ep isodes\nĠis chem\nlegal ArgumentException\nD anny\nĠp ared\n.code haus\nĠAss y\nĉ Rect\nâ ŀ\n.list a\nĠÐ² Ð°ÑĪ\nĠv ets\nHW ND\nison er\nĠx o\nĠor ally\nĠSt mt\n.r nn\nĠD PI\nĠStr ikes\n.setViewport View\nĠèĩª åĬ¨çĶŁæĪĲ\nY ELLOW\nGL enum\npart ners\nĠImp licit\nĠtak o\nâĢĻ elle\nĠerm Ã¶g\ntotal Count\nG il\nĉ work\nĠpr atic\nin ati\nab ies\nĠSk inner\nĠspir ited\nĠpancre atic\nĠh df\n' em\nĠpsych osis\nolic it\nĠ\" {\"\n_at ual\nĠÃ© lect\nTE AM\nĠd ak\nĠSW AT\n.Fragment Manager\nĠprovision ing\nl ifetime\n_EXTENSION S\nĠC ASCADE\nĠ! [\n(K P\nĠv em\nĠInterr acial\n'] },Ċ\nsp acer\n_k v\nW arehouse\nR DD\n_f sm\n.Stretch Image\n, Yes\nĠRefuge e\nĠBr inging\nĠv Ã¡lido\n.inter section\nĠsp ooky\n_port al\nĠmo th\nĠZ odiac\nĠSOC IAL\nM imeType\n'] }}</\nĠres izable\näº Ľ\n( phase\n(mapped By\nĠmund ial\nĠcon vo\n/ left\n/doc uments\nw ashing\nĠAm Ã©rica\n_qu ota\n.post er\n'] \");Ċ\nĠst ellt\nĠDISCLAIM ER\n[ opt\nĠed s\nĠR aces\nvent as\nĠp z\nĠCap ac\nĠUser Dao\nit est\nPro veedor\nĠShot gun\nĠthirst y\nĠBal anced\niqu eta\nĠhe aler\n/ \")\n.S dk\nĠt ert\n\" data\n_pro vince\n.A utomation\nĠfont WithName\n_ ANT\nçķ Į\nood les\nĠRE PRESENT\n_G PS\nĠpersu asion\nĠDisc ussions\nĠf red\nNE G\n: border\nĉ initialize\nĉg log\n-cap ital\nĠIm Vec\nĠde vis\nC andidates\n.anim ations\nĠragaz zi\nĠProm etheus\nĠK idd\nĠprogram ma\nCert ificates\nCont a\n.es presso\nĠëĲ ĺ\nĠbe ide\néĻ Ĩ\n.get Raw\nĠFull Name\nĠi am\n(* )(\nma ids\nB H\nĠCon spiracy\n_D U\nĠblat antly\nĠ\\ |\nĠW ig\nĠCon j\nRendering Context\nM itch\nĠalle les\nĠæ³¨ æĦı\nĠr ims\nĠNe ighbor\nĠK ylie\n.p arty\nt ors\nĠì¡° íļĮ\nĠw es\nĠCraft ing\n[\" .\n.s ponge\nĠê ±\nIsl amic\nĠprosec uting\nĠw ik\n.os gi\noning en\nGram mar\n' im\nĠax ial\nClean ing\n.getExternal Storage\n= ./\nĠchrom at\nÐµ Ñħ\nab ay\nĠb ola\n.Ag gressive\n'], $_\niz acao\nPre paring\n: Any\n. ENTER\n-w indows\nĠenr aged\n_d ice\nĠdet ta\nec al\n_OR IGIN\nĠ---- -->\n_Bl ue\nĠbot anical\nĠfr ags\nĠfamil ial\n- du\nĠse izing\n(block s\n.r d\n.check NotNull\nĠmis er\nĠmax x\nĠK nee\nView Item\nInner HTML\nD anger\n(( __\nĠprz ypad\ncreate Url\n** ,\nĠDecor ating\nATEG Y\n?> /\n.Design er\nhex digest\nĠEvery where\nall eries\n.TEXT URE\n.Block s\nz ell\nĠpre Ã§o\nS uddenly\ninput Email\n(s ync\n.b d\ngold en\n> ');\nĠDick inson\n>> (Ċ\nĠQUE UE\nĠget Column\nĠS AND\n.p iece\nlic er\nFl utter\nĠget Version\nĠresource Id\nog l\nÅĤ aw\n.Br anch\nĉ web\nĠfr amerate\nPP P\nĠfr ay\nC NT\nĠinformat ie\n'] čĊčĊ\nne as\nHeader Code\nĠæ ¸\nĠtr g\nraw types\nH onda\nĠmark eter\nĠrequest Data\nĠP g\nĉ not\nĠpage Info\nĠakt uellen\nãģķ ãĤĵ\nĠA MS\npush ViewController\nĉ AL\nĠv ests\nprodu ce\n-m Ãªme\nĠRah man\nF unny\nE Z\n_ Valid\nĠsquad ron\nĠl ash\nĠ irm\nias co\nĠPar an\nĠpet ites\nĠDec ay\nĠun initialized\npriv ileged\nĠm bedtls\nå¤ĩ æ³¨\nĠ^ .\nĠec static\nD etroit\nĠpart en\nĠsou venir\n.get Login\nÐ¼Ð¾ÑĤ ÑĢ\nen Ã§Ã£o\nĠmÃŃn imo\nĠAccess ed\nri Ã³\nM ic\nĠV ocal\n.Set String\nĠmens ajes\nåĢ į\nĠattr avers\nĠA ph\nĠ' );čĊ\nÃ¼nd e\nĠench anted\nĠRoot State\nĠCLOSE D\nĉĉĉĉĉĉĉĉ čĊ\nĠcal iente\nor ris\nĠphysic ists\nh wnd\n_v i\nĠrÃ¡p ido\nĠcapital ized\ned By\nĠmach ining\nĠhub by\nĠSt acy\n.B us\ndr ink\nH ur\nĠprop ia\nUnit Test\nĠmiscon ception\n__ ));Ċ\n/d c\nĠMay weather\n_m C\n.create From\nĠQ Painter\nrops ych\ninn itus\nay as\nĠg eg\n(d w\nĠus ado\nĠtrick le\nĠann ihil\nĠP asta\nĠ++ Ċ\n(Expected Conditions\n.post Value\nic ap\nĠDon etsk\n_s oup\n-p ublish\nĠP b\nment ions\nAC CEPT\n.P ull\n,âĢĻ âĢĻ\nĠret arded\n_AT OM\nĠTermin ator\n-c ourt\nĠCLLocation Coordinate\nĠrever ence\nĠS SC\nut ely\nĠW ON\nĠG SL\nfre i\n.get Longitude\nĠopen FileDialog\n.B utter\n- important\n_M ANY\nĠG ong\nâĢľ How\nĠg orge\n= msg\nĠEz ek\ncreate Command\n: checked\nĠinf ographic\n.W EST\nDir s\nĠguard a\nĠbeet le\n< small\n- android\nĠcred itor\nĠM Ã©d\nĠfinal ist\nĠab l\nne v\n_inter action\nĠMonter ey\nj ah\nĠcand ies\nĠQu incy\nèª Ń\nĠbatch Size\nak it\nĠo be\n(p ara\nĠexperiment ed\nĠcouncill ors\nĠcl ashed\ns qu\n-st rokes\nĠG K\nĠEx pires\nĠprosec utions\nĠCreat ures\nĠy Ã¶\nx lim\n_IM P\nEntry Point\nĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\n.Default CellStyle\nĠbre ve\nĠBrit ann\nĠsweat y\nĠle th\nĠflash back\nper manent\nĠJ DK\n_D etails\nE uro\np pt\nĠrich TextBox\n/ board\nĠtr ance\n.c ycle\n'); \");Ċ\nĠtox in\n_de init\nĠover arching\nĠconfig parser\nĠKaw asaki\n.th umb\nĠplay a\nĠJose f\n+ _\nĠzero es\nĠa up\nĠH ari\ncomm itted\nN it\n.file Path\nĠDis abilities\nman ufact\n-al igned\n.RE SET\nĠrust y\nE y\nĠou sted\ncos a\nStruct ured\n.get D\nĠs Ã¡bado\n> Loading\n_m A\n.get Random\nbl ings\nĠchees es\ntt i\n. âĢ¢\nĠBurg ess\nender it\n. ',čĊ\n(\" \"+\nac b\n% p\nindex ed\n_pred icate\nnes ia\nĠb ied\nĠC IT\n( Pos\n_r adi\nä»· æł¼\nB iz\nĠAdoles cent\nĠvi Ãªn\nc ycl\n_C ancel\nĠcon clusive\nĠappell ate\ninform atics\nS J\nĠelect ive\nrole Id\nFetch er\nĉ Command\n(\" (%\nĠf art\nIL A\nget Block\nA USE\nĠÐ´ Ð°Ð½\nĠAr te\nĠnot ifying\nĠge le\n.s ame\nĠReg el\nĠBa ÅŁ\n.c reation\nĠV N\n_comm unity\nĠuns ustainable\nSE X\nĠgrid Size\nres cia\navers able\n(', ')[\nĠPh elps\ná»ķ i\nANCE LED\n- IS\n.run ners\nĠSt okes\n.P rodu\nĠwh ipping\n_ac quire\nĠinvestig aciÃ³n\nf ried\n.copy With\nĠHard cover\n- Se\náŀ¶ áŀ\ninv itation\nles ai\nĠD orm\nĠÑģÐ¿Ð¸Ñģ ÐºÐ°\nĠconcaten ated\noph il\nĠthink er\n/font awesome\nĠLe opard\nĠ\"/ \");Ċ\nĠresidual s\nĠMic rowave\nĠconform e\nth rop\nĠdis emb\nĠO MG\nĠDisc ipline\nĠAc robat\n/re pository\ndf a\n_M ED\nbuf io\nĠmÃ©th ode\n_H OLD\nias i\n_ legacy\n) ččĊ\næ£ Ģ\nGet ProcAddress\nĠy ay\not ence\norder id\n-t w\nĠdear ly\nIn coming\n/ il\nĠneu rop\nuc z\n); čččĊ\nĠInnov ative\nĠprof und\nig mat\nSelection Mode\nre levant\n.G O\nĠbru ises\nĠs ach\node f\nĠre imb\n/d esktop\n-s pot\nund ance\nEnt ropy\n\\ core\nĠsug er\nĠM vc\nĠGN OME\n_ind x\nĠYY STYPE\nĠMat lab\nĠC IF\nĠ* ))\nĠproduct List\nĠAl right\nac emark\nÑĤÐ¸ Ð²\nmod ification\nint ernational\nĠhom ers\nĠdict s\nĠQ Font\n.SQL ite\nĠtransplant ation\nĠMessageBox Button\nĠEl ves\n'] ])Ċ\n(Q Icon\nĠcin emas\nCO ORD\n- China\nĠkh áº©u\næĪĳ çļĦ\nĠskull s\nĠpain staking\nf ce\n.XR Label\nĠspec ifier\nĠpref erring\n/ activity\n( Photo\nÃ¡ lt\n.l ot\n' '.\nann once\n.google code\n-p df\nĠP oke\n_A CL\nĠend owed\ndis cover\n.om g\nĠwood land\n.M agic\nĠvol ont\nNot Allowed\nĠch ave\nBM W\n',' =',\nĠS IX\næĪĳ ä»¬\nĠkos her\nĠaspir ation\nint l\n_ref ptr\n'+ Ċ\nment or\n.cl ub\nWindow State\n.A RR\nĠz za\nĠmessage Type\n.e qu\nTh or\nĠin just\nĠg ums\nĠborder Side\n//// /\nĠTrans mit\nĠbuf size\nĠh ak\nĠell as\nR ANDOM\nĉm c\nĠpe a\nek o\ndocument o\nĠhyster ia\nĠaren as\nĠgun men\nĠm ike\nĠimp unity\natis ation\n_Z ero\n_COMP ANY\nĠG ors\nĠuse Class\n( redis\nĠRUN NING\nĠB air\nvel te\nĠ',' .\nÐ°ÑĤÑĮ ÑģÑı\nÃ¶ st\nencode URIComponent\n_re strict\nĠdec als\nĠPed ido\nĠalter cation\nDis plays\nĠApp licants\nC US\nText area\nĠAng ola\n.f uture\nĠUS HORT\nĠsuppress ing\nĠset zen\nAP olynomial\nĠto ch\nĠhall mark\nĠ$ $$\nĠCHAR SET\n.r pm\nĠD ich\n---------------- ----\n_p arm\nè¿ ĺ\nacc iones\nh ait\nWAR DED\n_r outing\nĠN OM\nĠen clave\nĠLot to\nĉf r\ncomplex Content\nĠBall ard\nk ube\n/w in\n.getColumn Model\n_RE PLACE\nHeader Value\nĠest udiantes\nĠap is\nĠb pm\nĠType Name\nAnd Get\nrit a\nPl ans\n> Note\nĠfet isch\nĠton ed\n_g oto\nons ense\nĠm olds\nĠinfiltr ation\nĠGuerr ero\nub bo\nck i\n($ (\".\n_ activities\n(ch anges\nĠof App\nĠKe pler\nĠD emp\nĠCont inent\n.T icks\nĠUn signed\nĠJah res\nĠfresh men\nĠArch ived\nĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÐ¹\nĠ' ::\nT utorial\nC c\nĠtable LayoutPanel\nfrom Json\n.level s\n_trans ient\nĠendors ing\nĠD IC\nla uf\nĠsh red\n_E MIT\nific antly\nAL A\n/ proto\nĠnarrow ing\nU tc\nFact ors\nĠsent ient\næŀ Ĳ\nlix ir\nĠC ROSS\nmet eor\nĠgro in\nĠm db\nĠRot terdam\nĠcom ida\nĠOp Code\nĠDefault Value\nPermissions Result\nĠheter ogeneous\nĠm oot\nĠde ceived\n-in dependent\nĠObject OutputStream\nĠover power\n.d up\nĠl db\nĠdomest ically\nĠbest ellen\nĠlo v\nĠContract ors\nTri angles\nĠfod der\nĠfilm es\nä¼ ģ\nĠrev olver\nStartup Script\n/ validation\nĠResource Type\ni ÅŁ\nĠL az\nf ef\nĠlst m\n{ *\n. attachment\n.h its\new ith\nDO G\nAl abama\nĠmedium s\n.m Context\n-c ols\nåı ĭ\n.not ice\nĠat tn\nĠP acking\nĠL n\n_COM PLEX\n/ Users\n.sav etxt\nĠR ounds\n?,?, ?,?,\nĠing l\nĠR OC\n_f emale\nĠSt ard\n]] ;\nĠwrest lers\nĠtorrent s\nĠsin h\nï»¿ ĊĊ\në³ µ\ns ense\nhow ever\n.Ph ysics\nInf rastructure\nĠSac r\nF el\nĠD ISTRIBUT\nÃ© ments\nĠValid ates\n################################################ ############\nĠ| /\nĠes l\nĠrÃ© seau\nĠB ip\nBY TES\n_W ATER\nTurn ing\nEL S\nĠj uxtap\nĠlesb ische\nÃ½ ch\n( Unknown\nNe o\n@ JsonProperty\nĠal umnos\nĠRaq qa\nime i\n.get Bounds\n.Mouse EventHandler\n#### ###\nGeneric Type\n/c ms\nĠturn o\nĠÐ¼ Ð¸Ð½\nĠfolk lore\nĠE vo\nĠconduct ivity\nĠle ben\nĠgear box\n-v s\nĠÏ Ĩ\nĠdrink ers\nĠcon exao\nĠTe eth\nĠget Arguments\nĠR AT\nent ious\nE duc\n+ W\nĠInstitution al\nĠB ord\nis Equal\n(p wd\nĠign ited\nĠR ousse\nĠimpact ful\nĠM alk\nĠg eral\nĠP ivot\nĠa zt\nĠcsv file\nĠR ope\nĠSOL UTION\nĠArbit rary\nĠlet to\n.Mouse Adapter\nĠ} }}\nĠSail or\nder a\nPut ting\nĠconcentr ates\nĠauth Domain\nâĢĿ çļĦ\n-f inals\n, strlen\nMu on\nĠOrd inary\nfire fox\nĠLa TeX\nĠH und\nengine ering\n/ blue\ned TextBox\n(\" \");\nĠC DDL\nke pt\nĠGet String\nK ir\n() ='\nĠO CD\nant ium\n$ menu\nĠAppalach ian\nSecret ary\në¥ ĺ\nà¸µ à¸¢\nSem antic\nĠ* [\nest one\nung kin\nMax Y\n-t one\n\"} ;čĊ\n_P art\n< Member\ntr am\nĠtrans istor\nĠ---------------------------------------------------------------- ----------Ċ\nĠDes de\nĠright ful\nĠCorn el\næ ĳ\n.H OUR\nĠsidel ined\nref errer\nm aze\nĠhol ster\nĠcripp led\nĠDate Formatter\noph age\n_m D\nĠdes elect\nra ud\nĠPK K\nrow Data\nĠlock smith\n.res ponses\n(product Id\n_ST MT\nKey Type\n.Th en\nz ee\nĠcr t\nĠGrand ma\n@ Resource\nĠbit wise\n-c mpr\nãĢĤ www\nzeit ig\n& display\nCart Item\n- No\nĠnum Ã©ro\nĠm aur\nĠinst ancia\nĉd t\n_n pc\nĠskate board\nâĢľ All\nĠCrow d\nĠÃ¤ n\nĠb raz\nca e\nyn et\n/p m\n/s creen\nOPT ARG\nĠV Box\nĠle opard\n_g reater\nc pt\n< dd\nĠmechan ically\nosp els\n) f\n.l wjgl\n.get Port\nĠP REF\n.Add Transient\npp ard\nĠí ļĮ\nEther net\nĠsal ine\n(level s\nĠservice Provider\n.A ngle\nalt itude\nilla ume\nĠs cape\n_CAL C\n_ quest\nĠDiss ertation\nĠE DM\n-C ds\nĠhon orary\nst ops\nĠsub dir\nĠV H\nĠChe at\nĠright fully\nQ E\n.Write Byte\nfig ures\nenn ie\n( DBG\nĠvoks ne\nĠexp ended\nUN ICATION\nil inx\nĠRec ap\n_ verts\nĠtra umat\nĠget Player\nĠverb ess\nĠcultiv ating\nĠiniti ator\nTh Ã´ng\nfind First\n_per ms\nĠbu c\nĠ\"\"\" čĊčĊ\nT YPES\nobject Manager\n(Configuration Manager\nĠtim id\nĠsnap chat\nĠcon seg\nĉd istance\n_right s\n_D es\nĠF lesh\n- ver\nĠa fl\nfra uen\nĠblas ph\nĠQual itÃ¤t\nma f\nMonitor ing\n.D iff\nĠshore line\nĠresponse Body\nmem set\n< decimal\nSmarty HeaderCode\nĠin sets\nĠBinary Tree\named a\nĠn ihil\nĠN ay\nym ology\nĠW G\nĠt api\nĠInst alled\nm aintenance\n)} \"Ċ\nĠX O\n-per iod\ns ar\nĠning una\nORM AT\n.set PrototypeOf\nĠK b\nĠHen rik\nÃ©t ique\nĠLah ore\nĉ Address\nĠmel ts\nN y\n_adv ance\nĠveloc idad\nĠalum no\nĠsanit izer\nĠph ishing\nĠCom et\nĠch iar\nĉs pec\ntrim med\n(state arr\non nen\nRe venue\nL ens\nĠcha ired\nĠAss umes\nTr ash\n_un set\n\\ Bridge\nPoint Size\nĠPol ic\nĠsex uales\nĉd fs\nĠWide String\nĠaccru ed\nY W\n_S CHEDULE\nĠk ite\nĠparach ute\n[ table\nĠactive ClassName\n.Qu ad\nIsrael i\nĠÅ ĵ\nĠho og\nĠch á»ī\new ear\nĠtire lessly\nset Error\n.get Amount\n.set Items\nĠM anson\nĠBay esian\n_F lag\nAC HER\n/ original\nĠimm ac\nĠLos ing\n' >ĊĊ\nL ic\nĠMir age\nĠAssembly FileVersion\nTe V\nĠValue EventListener\n-s olving\nTh o\nrou lette\n_W P\nĠunint errupted\nĠfield Type\n.T yped\nĠam our\nĠmock ery\n(v ol\nĠSub committee\nĠR uf\nero x\n:UIButtonType Custom\nĠBl ur\nĠwy kon\nnc es\nASH BOARD\n!! \");Ċ\nĠmurder ers\n.d aily\nĠDI AG\nj ing\nĠdol phin\nĠl Ã²ng\nĠb Ã¶\nĠV ocabulary\n.St Object\n') \">\nĠz un\nĠscrim mage\ntr Ã©al\nĠL ig\n[ vi\nC ole\nĠfrost ing\n.Pl ayers\n- translate\nFe els\n=\\\" /\n.Butter Knife\nĠ?> ;Ċ\nĠav i\ninn ie\n.F ailure\nĠsp indle\nConfiguration Exception\n_h op\nĠpos iÃ§Ã£o\nĠA wait\nUIImage PickerController\nĉ day\nĠgen om\nC ab\nĠÑĢ ÐµÐ·ÑĥÐ»ÑĮÑĤÐ°ÑĤ\nOR IGINAL\nĠejac ulation\n(t cp\nSE COND\nĠton ic\nĠList Box\nĠ ĉĉĊ\n() >Ċ\nĠqu atre\nÆ°á»£ ng\nwith Errors\n.M aybe\n, âĢ¦\ntoken Id\n_UN DEF\nĠfresh ness\nĠAmend ments\n.map box\n.C V\n(b log\n_get time\n. quest\ns parse\nĠres ale\nĠenthusi astically\nĠProstit utas\nW a\nC argo\n.Parcel able\nSENS OR\nĠRy u\nLa ughs\n_N ative\n/ pg\nyst s\nĠphot oc\nç® Ģ\nado pt\n.spec ies\nconc iliation\nAdjust ed\n.Firebase Auth\nut tle\nord ination\nĠm unch\nĠSt ake\n.p ing\nank er\n(QString Literal\nĠsub script\nĠĠ ĉĊ\nĠM CC\n_C md\nse xy\ni ou\nĠM ANY\nĠn anny\nTR AIN\nĠflour ishing\nĠW atches\nĠQ Map\nĠF erm\nĠwas m\nĠA bed\n_ UD\nĠGlass es\n+ v\nAtt end\n.Ch ain\nĠdec ency\nĠSupplement ary\nh unter\n-t xt\nĠ\" }\";Ċ\n.set WindowTitle\n(\" <?\nĠnumberWith Int\nĠaf ar\nç§» åĪ°\nrit te\n/ lists\n) âĢĿ\nĠdivers as\nĠem ber\n.React Node\nĠk ang\nĠStam ford\n[ at\n.close Path\nĠcontrace ptive\n(loc ations\nĠav anz\nĠCont ainers\nĠSch olars\n.ac curacy\nĠÐ²ÑĭÐ¿ Ð¾Ð»Ð½\nåķ ı\n=\" --\nĠWrest le\nĠGu antanamo\nĠn ymph\n(g uess\n.set Column\n_t E\n.content Mode\nĠinvalid ated\nĠSh ooter\nĠM ater\n.Sub mit\nĠang led\nnavbar Dropdown\nA o\nĠæ µ\nÐ¸Ñģ Ðº\nĠSC AN\nĉc m\nĠMark t\ntr uck\n; 'Ċ\n//////////////////////////////////////////////////////////////////////////////// ĊĊ\nĠg hetto\nĠbu iten\nĠCl own\n: !\nĠchim pan\n' field\nam mo\nĠDep end\n) })\n( FLAGS\nĠR CA\nĠCh oir\nLogin Page\nĠG ord\nComp act\n-p ocket\nĠconsult ar\nĠInter cept\nÅŁt ir\nuet ype\non ents\nĠstart Position\nĠpos ix\nĠWohn ung\n_EX PRESSION\nĠLogin Activity\n(op code\nĠT ango\nĠNumber Of\n. overflow\nĠW CS\nĠOccup ation\n_c g\n.Top ic\nĠCare ers\nAR ATION\n.get Line\nĠì¢ ħ\nĠN acht\nĠto Item\nin clusive\navi est\n- appointed\n(int ernal\nCON TEXT\n(d igits\n={ \"/\nĠplay wright\nĠdead liest\nle ads\n.P UT\nĠ* }ĊĊ\nĠP act\nĠDiscount s\nLocalized Message\nĠM Ã¤nner\n_ >\nĠmasc ara\n( Profile\nåĬŁ èĥ½\nimit Ã©\nĠwild fires\n- ROM\n.is On\n(group Id\nRe pair\naccum ulate\nĠ< \",\nĠhand written\nĠach eter\nĠM GM\nĠIr ma\n->{ _\nge e\ncr iminal\nĠèĭ¥ è¦ģ\nĠmoment arily\n\") !=\n_l it\nĠexpires In\n.\" ).\néķ¿ åº¦\nĠfr Ã¦kke\nvl c\nĠor bs\n), $\nĠvent ured\n/ >\\\nchar m\nN uitka\neld ig\naton in\nW itness\n-l at\nĠset Hidden\nĠrelic s\nĠcons ulate\n. IGNORE\n\" After\nĠset Address\nĠbeste ht\nĠ'' )ĊĊ\n.x axis\nĠser Ã£o\nĠmis led\n_UN IFORM\nĠV IA\ninc r\nĠzen ith\nĠvis cosity\nĠthin ly\n.get SharedPreferences\n.Error Code\n\"), \"\nĠMillion en\nĠ/> )Ċ\nScroll Indicator\n-se eking\nĠPOLIT ICO\nas ca\n_r l\nN avig\n(full file\nĠsol itude\nĠju ven\nĠhaul ing\nĠMac ros\nĠG ry\nĠexerc itation\nĠATT ACK\nTick Count\nĠr ites\nĠdo e\nParticle System\nĠsl u\nWindow Text\nĠClass Name\nĠsl ander\nĉ Port\nj ong\n? a\n.D ial\nâĢĶ at\n$obj PHPExcel\nĠso ar\nEN N\nappe ared\nĠquot id\nem achine\nĠn ip\nĠmicro time\nĠAl ma\n; !\n---------------------------------------------------------------- --------------------------------\nĠPass age\nĠdump sters\nĠEx clude\nĠsuggest ive\nĠCircularProgress Indicator\n_cl r\nArray Type\nILL A\nElapsed Time\nDr iven\nĠresource Name\nĠG arrison\nser ir\n-a head\nĠp innacle\nĠEs presso\nS parse\nĠass ays\nĠGirl friend\nim id\n]=' \\\nONGL ONG\nĠportray ing\nL ane\nĠb Ãºsqueda\nĠrein forcements\nĠSpread sheet\nĠArray Collection\n, arr\nlight box\nic ana\n< \"\nbuild ers\nK id\nĠMat SnackBar\nEX PR\nod cast\nĠFound ations\nĠind s\n=' ${\nF izz\n-function al\n(work space\nĠstem med\n_p atches\nĠJar vis\nREAD ING\nĠdisrespect ful\nĠQ Dom\nĠ$ {Ċ\nest atus\nRe ached\n! .ĊĊ\nIL T\nĠN DEBUG\nĠCour age\nbirth date\nĠT ing\nĠutil izado\nÃ¡n chez\nOut door\nĠhand guns\nRef Count\nÉ Ļ\nrom o\nĠt ts\n.S he\nĠP ane\nãĢĳ, ãĢĲ\nĠIO CTL\n/ black\nins cription\nĠbi opsy\nĠTime Interval\n.Test Check\nĠGUI Style\nĠCap ability\nĠBeit rag\ndon nees\nT reatment\n.back up\nĠsign ings\nĠB oca\ndr m\n.M AIN\nĠgo ede\nĠMark up\nG REE\nĠBase Service\n.C reator\nĠj ails\nĠK ahn\nIp Address\nACH I\nĠinhib ited\nĠ@ $_\nĠAss ass\nĠenvi ado\nHero es\nÐŁ ÐµÑĢ\nĠM aven\n.l s\nĠ ive\n| RF\nĠresize Mode\nĠrum pe\n_attach ments\nT U\nĠtact ile\nAttempt ing\nĠro bin\ny aw\nĠmerc enaries\nĠHab itat\nend date\nĠo xy\nĉR andom\noh on\nIs Null\nĠValidation Result\nãĥ ļ\num bed\npp v\nĠar p\nich ick\n_r nn\nĠT FT\nTex Image\n\" On\nĠSam pler\ntop l\nĠj ane\ny ling\nĠUN ICODE\nTab Index\n< {Ċ\ns uspend\nuv ian\n, application\nÐ¾Ð» Ð¸ÑĩÐµÑģÑĤÐ²Ð¾\ny at\nez ier\nĠCH UNK\nĠAd ler\n/ Add\nĠKey Value\nĠspos Ã³b\nSam pling\nch ers\n_AM D\nR u\n.Must Compile\nN ation\nAss oc\nMan aging\nĠEng l\n_G B\nĠsucc inct\nĠdis liked\nĠI ke\nBullet in\n_ARCH IVE\nProp osal\nĠjog ging\n.C REATED\nĠch ol\nè£ ħ\nĮ ¨\n-p ush\nĠreserv a\ncore v\nÃ¨ tre\nTH R\nĠincompet ence\nĠchar isma\næĦ Ł\nĠ\" ==\nBT N\nĠLoc ator\niv et\n('. ')Ċ\nĠfor IndexPath\nÃ´ me\nĠcapac it\nw aters\nĠWR ONG\nho a\nĠM IPS\nĠem iss\nĠJacqu eline\n(c mp\nĠe ens\nLe o\n.tim ing\nCLUS ION\nĠ(\" -\nåĵ Ī\n.k ode\nĠUnd ert\nĠbew ild\nĠEss en\n.h d\nĠren egot\nĠm ower\nĠl sp\nĠpen chant\nĠman oe\nĠag li\nĠrec al\nĠOPER ATION\n(^ )(\nĠÎ ½\nĠSc oped\nĠ@ \"Ċ\n= label\n[ loc\nInt l\nĠN z\ntable t\n.Column Name\nĠscreen Size\nDB us\nco oked\n- registration\nâĢľ One\n-n on\nĠwiÄĻ c\nĠcost a\n.add Tab\n. conditions\nĠH ess\nMEM ORY\nĠAval anche\n() }}Ċ\nĠtri plet\nĠl abyrinth\nĠNode List\nĠNY T\nĠy eni\nd ff\n.Html Controls\nAV IS\n/ Math\nĠmem cmp\nØ§Ø ¡\nÐ¾Ñģ ÑĮ\nc rap\n(p ages\nĠl xml\nĠQ DateTime\n_t cb\nĠopen id\nĠsyn aptic\nĠMD MA\n(s lug\nigm atic\nen or\nĠcr amped\nG OP\nŃ Ĳ\n.is File\nĠD ifferential\nĠ=\" \";Ċ\nĉĉĉ ĠĠĠĠĉ\nĠC ooke\nĉU FUNCTION\nĠpersever ance\nRelative Layout\nIMPORT ANT\nĠex on\nĠÐ¾ Ð½\nib ase\n(C ONT\nn ovation\nä½ ķ\n[ sub\nAdmin Controller\nHTTP Header\ncre ar\nĠN IR\nĠDrop DownList\nĠval ide\nĠde hydration\n. ']\n(W IN\nĠ... \\\nĠphotos hop\nĉ Init\n_c ou\nĠtime Zone\ndar win\nrom atic\nNavigation ItemSelectedListener\nbr ates\n] --;Ċ\nĠtraged ies\nĠPed iatrics\nSM ART\n-A PI\nĠMessage Lookup\nĉ vo\nĠprejud ices\nĠm A\nU ps\nĠMISS ING\nĉ ad\nC ream\nĠT b\nĠMon a\n_ ghost\nĉt ypes\nEm b\nĠDocument ary\n');ĊĊ ĊĊ\nĠl up\n_ Reference\nĠB ATCH\nĠintertw ined\n< Cell\nĠCab r\nn ation\nĠis Connected\n.remove Listener\nĠcon g\n_t i\nĠSil icone\nĠê²° ê³¼\nĠW AN\nĠG ibraltar\n/ response\nĉp erson\nch ants\nV IP\nem ergency\nPixel Format\n- Am\nĠsouth western\n_pl l\nif ers\n_ON CE\nĠF ayette\n.nc bi\n_P anel\n.Q ual\nĠpol ys\nĠcreate StackNavigator\nï¿½ t\nĠlay offs\nĠBl anco\nFe at\nĠV imeo\n_ch i\n_l ifetime\nPOINT S\n, private\nĠunb earable\nprint ing\nĠc gi\n.B ACK\nĠintern s\nĠNew ly\ninf eld\n( IB\nĠK ata\nĠDef endants\nTh r\né¢ Ħ\n_V F\nFFFF FFFF\nĠdavid jl\nĠbitter ly\nS uggestions\n.set Cancelable\nFIN AL\nason s\n_rw lock\n_WRAP PER\nĠhapp iest\n(row Index\nÃ³s ito\nTOT YPE\nAutom ation\nLog File\nĠcons olation\nãĥ Ģ\nĠt Ãªm\nĠpr er\nrg yz\nĠG eg\nĉd to\n.default Value\nĠK ami\nĠA SE\noptim ized\nĠíı ¬\nĠorigin ates\nerr Msg\nĠespa Ã§o\n(S YS\nĠMc B\nd ance\n_det ected\nĠfr Ã¼\nĉĉ ĠĠĠĠĉĉ\n< Date\n(com b\nĠDec ide\n\\ Field\nĠProp osed\nR ib\nĠdis likes\nĠW ien\nĉ Document\nĠtr af\nĠst oria\nĠT ells\n') ==\nC ri\n( VALUE\nĠBurn ett\n, void\nĠdan h\nĠc cp\nBlock chain\n:\"- \"`Ċ\nIC lient\nIS ODE\nIss uer\n) }čĊ\n, but\nĠU ph\n( Sub\nĠtÃ©lÃ© phone\nĠonData Change\nĠmarsh aller\n-an alytics\n, content\nĠdeb acle\n_Value Changed\nĠfa una\nĠ# =>\nĠf oyer\n'util isation\nĠMÃ¼ ller\nĠFet ish\nĠdefault Manager\nĠback track\nB ah\nExp licit\n_A SCII\nĠm Activity\n(M sg\nĠê² Į\nĠTER MS\nĠAng ie\nHS V\nĠMos que\n.N ames\níĬ ¼\nrest e\n_p arms\nĠgap ing\nĠcro pping\nData Frame\nĠrespons iveness\n_ undo\n_tr an\n. terminate\nĠitalian e\nĠwalk through\nĠattract iveness\nÐ´ Ðµ\n_ST S\n_ learn\nĠchocol ates\nier archical\n-th inking\nĠ )))\nish ments\n.Log f\nĠTM Z\nĠCan ary\nfo il\nĠVacc ine\n.v x\nĠSur round\nInter mediate\nĠi ov\nv ais\n'; \";Ċ\nï½ŀ ĊĊ\néĢģ æĸĻ\nâĢ¦ it\nSe ats\nCl ar\nW ars\nĠHutch inson\nĠHas an\n! ')ĊĊ\nĠRich ie\nche iden\n($ ('\nY ork\nĠl ids\nĠal phanumeric\nĠG lock\n.sh apes\nĠspark ing\n_ epsilon\nuplic ated\n.dir ty\n]) ==\nĠìľĦ ì¹ĺ\nĠsc n\nĠ/ ****************************************************************\n_PRE VIEW\n_H C\nield ing\nf gets\nĠAdd ison\nĠproduct Service\n- figure\n(ret val\nz ano\nĠaut ob\nĉs d\n_n umer\nĠSet LastError\nĠF ior\nific ance\nUnt itled\nĠin field\nĠ{} ));Ċ\nĠsp ac\nĠro okies\n(des cribing\nng en\nà®¿ à®\n.r df\n.M utex\nĠkne eling\nĠQ E\nset Max\nRead Stream\nĠvent as\ns ut\ncm peq\n.WriteAll Text\nĠEx perienced\n$ __\nĠka um\nĠL IS\nĠdocument os\n_HE ALTH\nicont ains\nĠart isans\nOWN ER\nĠblink ed\nget Display\nĠto en\nĠrow Num\nĠav ril\nĠinv is\nĠK ear\ntoBe InTheDocument\nap ur\nĠr acked\nĠMc Master\n_ATTR IB\nH az\nĠfact ura\n/ ts\nĠÑĢÐ°Ð· Ð¼ÐµÑĢ\nĠz f\nĠshort fall\n.f asta\nĠCONST ANT\n.man aged\ng ems\nShared Pointer\nĠblur ry\nb rightness\n( components\nĠ... \"ĊĊ\nSE LL\nĠIllustr ator\n.get Channel\nĠtrou vÃ©\nyst ers\nĠvo is\nĠLind en\nĠem ojis\nĠb rawl\nĠMS R\nĠE lo\nĠCroat ian\nPopup Menu\nL ewis\n.J WT\nĠaston ished\nB ush\n(item Id\nĠdet achment\nĠEnc ore\nå° Ķ\nĠre kl\nĠcr am\n)$ /\n.get Host\n_re commend\n- HT\n_cal ibration\nAuth enticate\n.firebase app\nUN IX\nĉC amera\nĠHE AP\nI deal\n. office\nĠgoof y\n(S ymbol\nĠjou er\n_part itions\nĠrapid ement\nĠGN UNET\nid User\nĠsuperv ise\n( Contact\nAW N\nãģ ĺ\nĠna am\nĠa ust\nåľ¨ çº¿\n_soft max\nAllow Anonymous\namm able\nRO UTE\n* D\nĠad en\nĠCrist ina\nĠCrist iano\nĠblood stream\nsub class\n_person a\nCH ILD\n-k now\nĠnavigation Options\nĠZuk unft\nĠPix ar\nTy ler\nĠunder world\nĠsincer ity\nĠdispens er\nĠk ter\nidd ers\n.add Node\n- checked\nĠke yst\nĠW TO\n.sign als\nĠadvent urer\nĠP ang\n\\ R\n= pos\nĠdispens aries\nĠClo set\n(\"{ \\\"\nide on\nĠnÃ©cess aire\n() \"Ċ\n_RECE IVED\nĠrÃ©sult ats\nĠmod en\nĠIceland ic\n; d\n. allowed\n(new User\nĠmerc iless\n.Wait For\nĠday care\nĠCon veyor\nç ĸ\nð ¬\nç ĥ\nç Ĺ\nç ł\nè Ħ\né ²\nå ¦\nçĿ Ģ\nå¾ Ī\né ħ\nç ĭ\né ª\næ Ĥ\né ¥\nè ħ\næĥ ³\nå ¨\né ¹\nç Ĥ\nå Ĵ\nç Į\nè´ ¨\næ ¢\næ° Ķ\nð «\næķ Ļ\nç Ł\nå Ħ\nåıĳ å±ķ\nåĪ Ľ\nè ĳ\næ ħ\nå ŀ\nåģ ļ\næĪ ĺ\næ Ĳ\nå¼ º\næ· ±\nåĩ ł\nç ¿\nå ©\nè ŀ\nå§ Ķ\nåĲ Ħ\nè İ\né ¸\né º\nåı Ĺ\nèģ Į\nå ĺ\næ ½\né£ İ\nèĲ ¥\nåħ ļ\nè ľ\néĤ £\né¢ Ĩ\nç ĳ\né ³\næľ ¯\nä» Ģ\næĪ ¿\nç² ¾\nå ª\né Ĩ\nå¤ ª\nèĤ ¡\nè Ľ\nåħ ī\næŀ ģ\nåĬ ŀ\nè ĵ\nç ĺ\nå ´\nå Ĺ\nèĬ ±\nçł Ķ\nå¿ «\nå¸ Ī\nè¶ Ĭ\nè§ Ĥ\næ ¤\næ ¦\nç ŀ\nèĤ ²\nçĪ ±\nçĻ ½\nä¸ ĸ\nä»Ģ ä¹Ī\nçľ ¼\nå ³\nè Ĵ\næ ĵ\nè¢ «\nå¹ ²\nçĹ ħ\nå£ «\nç Ĵ\nè ¸\næ ¾\nå·¥ ä½ľ\nè® ©\nçĥ Ń\nè¾ ĥ\nåĦ ¿\nåĬ ©\nç§ ¯\nç ³\nç ĵ\nç £\nå Ĥ\nè ¹\nè ļ\nå· ±\nçĻ ¾\nåĬ ¿\nèµ Ľ\næ ¨\næ ¿\nè ĸ\næĿ ĳ\nå¸ ¦\nå¢ ĥ\næĬ ¤\né Ń\nå «\nèĩª å·±\næµ İ\nä½ İ\nåĮ »\néĺ ²\nåĨ ľ\nè Ĩ\nç Ĩ\né «\nåĨ Ľ\næĪ ı\nåį ĩ\næĸ ¯\nä½ ı\nèĲ ½\nåħ »\nèĩ ´\nç Ĭ\nç ĩ\nç ħ\nè Ķ\nä¼ģ ä¸ļ\nåĽ ¢\næī į\næł ¡\nåĩ Ĩ\nå¥ ĩ\nåī ¯\né ¼\næ¼ Ķ\né© ¬\nèµ °\nç¥ ŀ\nåħ ĭ\næľ Ľ\næ² ¹\nè¾ ¹\nåį ĥ\nå¾ Ģ\nåĪ ĩ\næ ©\nç ¶\nå Ļ\néĻ ħ\nçī Į\nç¤¾ ä¼ļ\næ¸¸ æĪı\næĸ ½\nç ħ§\næİ §\næ» ¡\nè¯ Ĩ\néĩį è¦ģ\nè¶ ³\nçķ Ļ\nç» Ĩ\nåį ı\néĢ Ĥ\næ ĩ\næ §\né Ħ\nè Ŀ\nå¸Ĥ åľº\nç»ı æµİ\nä¹ ł\næĸĩ åĮĸ\néļ ¾\nä¹ Ĳ\nåĨ ³\næ¬ ¢\nè§ ī\nåĽ Ń\nåħ ´\nåħ ħ\nä¸ ¾\næī ¹\nè ķ\næĬ Ĭ\næĬĢ æľ¯\nç© ¶\nç¬¬ ä¸Ģ\nä¾ ¿\nåĵ į\nçİ ©\nåĿ ļ\nèŀ į\nåį Ĭ\nåĸ ľ\nå± Ĥ\nç¦ »\nä» ħ\né Ł\nåĳ ³\nå¿ µ\nåŃ £\nç´ §\nä¹ ħ\né ¤\né ŀ\nè ¤\nåĢ Ļ\nåĨ µ\nç Ł³\nåģ ¥\næĢ İ\nå® Ŀ\nè¡ Ģ\nåŁ Ł\næĹ ©\nçŁ¥ éģĵ\nè´ Ł\nåį ļ\nå· ´\näº ²\nå± ŀ\nä¸ ¥\näº ī\nå¯ Ł\nè º\nç °\nå»º è®¾\näº§ ä¸ļ\nåĲ ĥ\nåŃ ©\næĹ ħ\næł ¹\næĿ Ĳ\nä¼ Ĺ\néļ ı\nå® ĺ\nåº ķ\nå½ ©\nå¯ Į\næ¸ ©\nåį «\nåī §\nçĽ Ĭ\næĬ Ĺ\nè´ ¢\nçº ª\næ Ĩ\nçĶŁ æ´»\nçº ¢\nçĶŁ äº§\nè¿ ľ\néĴ ±\nåĶ ®\nç¾ ¤\nçı Ń\næ¥ ¼\néĩ ĩ\nèī º\nå± ħ\nåģ ĩ\nè° Ī\næĻ ļ\né ¬\nèĪ ª\nå® ³\nè Ĺ\nç į\nå µ\nçİ ĭ\nåº ·\nè İ·\nç» Ń\näº ļ\né£ Ł\nåİ ĭ\næĭ Ľ\nèĮ ĥ\nè® ¸\nåĽ ´\né ½\néĻ į\nçº ³\nåĵ ª\næķĻ èĤ²\nå·² ç»ı\nå¾ ·\næŀ Ĺ\nå®ī åħ¨\né¾ Ļ\nå¤§ å®¶\néĿ Ĵ\nåº ľ\næ² ³\nåı ¤\nèį ¯\nåĿ ĩ\næĻ º\nä¹ ¡\nçķ ¥\nåĨ ·\nç¦ ı\nå® ¤\nç» ´\næī ¿\nå± Ĭ\nè¯ ī\nåĪ »\nè Ł\næ ª\nå°± æĺ¯\nè¿Ļ ä¸ª\nä¸Ń å¿ĥ\nä¸ĸ çķĮ\nåŁİ å¸Ĥ\néĿŀ å¸¸\nåĪ Ĵ\nåı Į\næĢİ ä¹Ī\nåĪ° äºĨ\næľ ĥ\nåı ²\nä¾ Ĩ\nå¾ ĭ\nå¥ ĸ\nç» Ī\nåª Ĵ\nå® ģ\nè¯ ¾\nèģĮ ä¸ļ\nåħ į\næµ ĭ\næĢ ¥\næķ ĳ\nçĭ ¬\nèŃ ¦\né¤ Ĳ\næĦ ¿\nè´ «\nçĸ ĳ\nå ļ\nå¥ ¹\nåı Ī\nåĽł ä¸º\nä¸į æĺ¯\nå¤ Ł\næĸ¹ éĿ¢\néķ ĩ\näº Ĵ\néħ Ĵ\nè® ²\nçĸ Ĺ\næĺ ¥\næ¹ ĸ\nå¤ ľ\nè´£ ä»»\näºº æ°ĳ\nåħ °\nçŁ Ń\næķ ħ\nåĩ ı\næĻ ®\näº ®\nä¾ Ŀ\nåį °\néĿ Ļ\nåĢ ĭ\nå¾ ģ\nåĲ ¸\nç¼ º\næĶ »\nåĩ Ģ\nåħ ¸\nåĽ º\nè® ¿\nç ¹\nç Ģ\næıĲ ä¾Ľ\nç» ĩ\nå¾Ī å¤ļ\nçłĶ ç©¶\nè· Ł\nä¸» è¦ģ\næĥħ åĨµ\nçŃ ĸ\næŃ »\nå¤§ åŃ¦\næĶ¿ åºľ\nå½± åĵį\nä¹ °\nåħ Ń\néĻ ©\nåħ «\næŁ Ĳ\nè´¨ éĩı\nåį ł\nå· ®\næĽ´ å¤ļ\næľ ĭ\néĿ ©\nå® £\nçł ´\nè½ »\nåº §\næĺ ¾\nç¨ ³\nè´ µ\nèĥ Į\nèī ¯\nçĸ «\næ¯ Ĵ\nä¹ İ\nåĢ Ł\nè¿ ·\nçŃ Ķ\næ¿ Ģ\nåĳ ¼\näºĨ ä¸Ģ\nè¶ £\nä¼ ´\nä¼ Ļ\nè ¼\nð¬ Ń\nåĽ½ å®¶\næ´» åĬ¨\nçİ° åľ¨\nç§ĳ æĬĢ\nåį ¡\nä¸į åĲĮ\nä¸ª äºº\nè®° èĢħ\nä¸į æĸŃ\néĹ »\nä¹ Ŀ\nèĳ Ĺ\nç» ¼\nä¸ ĥ\næł ĳ\næľĭ åıĭ\nåį ĸ\nä¼ ¤\næ² Ļ\nåĸ Ħ\nå¥ Ĺ\nè½ ®\nç© ¿\nè¡ ¥\nä¸Ģ å®ļ\nçª ģ\nçĿ £\nè¿ ½\nå¨ ģ\nåı ¦\nåĽ °\næŀ ¶\nç» Ŀ\næķ £\næİ ¢\næ´ Ĺ\nä¸ ´\nä¼ ¼\nè´ ¸\nä¸ °\næĺ¯ ä¸Ģ\nç« ŀ\nè¿ İ\nèģ ļ\nè «\næį Ł\næī §\né© ¾\nè¿ Ŀ\nè ¥\nè ł\nä»ĸ ä»¬\næĹ¶ åĢĻ\nå® ĥ\näºº åĳĺ\nè¿Ļ æł·\nå·¥ ç¨ĭ\nåĪĽ æĸ°\nåŃ© åŃĲ\nå¸ Į\néĥ¨ åĪĨ\néĵ ¶\nä»£ è¡¨\né¦ Ļ\nå¸ ®\næİ¨ è¿Ľ\nçĽ ĺ\nç§¯ æŀģ\néĥ¨ éĹ¨\nåŁ ¹\næŃ ¦\nä¸į ä¼ļ\nçŃ ĳ\néĢ Ļ\nçİ© å®¶\næĭ ¿\nåİ Ĥ\næ¯ Ľ\nçģ µ\næŃ Į\nç »¿\nå¦ Ī\nçĽ Ľ\né¦ Ĩ\né¡ º\nèĦ ¸\nå° ¼\nä¸ ½\nå¥ ¥\néģ ĩ\nè¯ į\nå° ģ\nä¸ Ŀ\nå¥½ çļĦ\næĭ ħ\nèĦ ±\næģ ¶\nåİ ļ\nåĬ ³\nçĽ Ł\næĬ ĺ\nåı ¥\næĢ Ģ\næŁ ĵ\nä¹¦ è®°\nåĨ ł\né² ľ\næ ¦Ĥ\néļ Ĳ\nå¹ ħ\nèµ ŀ\nå¹ ķ\næ¥ Ń\néģ Ĺ\nåĪ ¤\nè ĺ\nå ¶\næĬķ èµĦ\nè¡Į ä¸ļ\näº ĳ\nçİ¯ å¢ĥ\nåŃ¦ çĶŁ\nåĲĪ ä½ľ\nåģ¥ åº·\né£ ŀ\nä¸Ģ æŃ¥\nä¸Ģ çĽ´\nåıĳ çĶŁ\néĺ ¿\né¢Ĩ å¯¼\nåĸľ æ¬¢\nåºĶ è¯¥\nçĤ º\nè® Ń\næĿ Ģ\næ¸ ¯\näº¤ éĢļ\néĺ ¶\néĴ ¢\nä» ¤\nå° ½\næ¯ į\nè¡ £\nç² ī\né¡ ¶\nä¹Ł ä¸į\næĬ ĵ\nèĭ ¦\nå¹ ¸\nç¤ ¼\nç¬¬ ä¸ī\nå¤§ çļĦ\néģ İ\nçĥ Ł\néģ ¿\nä» į\nåº Ĩ\næĢ ķ\nè° ¢\nçĽ ĸ\nå° Ħ\néľ ²\næĸ Ĺ\nç Ĭ¶\nåŃ ¸\næ¯ ķ\nå· ¨\nçŁ ¿\nçļ ĩ\nå¸ Ń\nçĹ ĩ\næī ¬\nå» ¶\nä¾ §\næ· ¡\nçļĦ ä¸Ģ\nç¶ ²\næ´ ģ\nç ¸\nè§ Ī\nçŃ ¹\nç§ ĺ\nè¯ Ĭ\nçı ¾\nèª ī\næ¯ «\nð ¨\nåį ´\næĪĲ ä¸º\nèĥ½ åĬĽ\né» Ħ\næĹħ æ¸¸\nèĪ ¬\næ¯Ķ è¾ĥ\nèµ· æĿ¥\näºĨ è§£\nèĩª çĦ¶\nä¸Ģ æ¬¡\nåŁº æľ¬\næĽ ¾\nç»¼ åĲĪ\nèı ľ\nè§ī å¾Ĺ\nç¬¬ äºĮ\nè· ĳ\næ³ ¢\nåĢ Ĵ\nç¡ Ģ\nåħ µ\nèį ī\nçĶ ³\nçĶ °\næĤ £\nè§Ħ å®ļ\nèĥ ľ\nèµĦ äº§\næ¢ ¦\næľ Ŀ\nè¿Ļ éĩĮ\nå¤ «\næĮ ¥\nä½ Ľ\nå® Ī\néĽ ¶\næĸ ¼\nç¯ ĩ\nå² Ľ\nåĵ ¥\néŃ Ķ\nä¸į åĪ°\næī ĺ\nåº Ĭ\næ¬ §\nèį £\næ± ĩ\næī ©\nåģ ı\nå¢ Ļ\nè® ¯\nå© ļ\næĥ ł\næ´ ĭ\nå® ľ\næ¶ ¦\næħ ¢\néĢ ı\nå® ½\né¡ ¾\nç´ ¯\næ± ¡\nçĪ Ĩ\nç§ Ł\næĥ Ĭ\næ¶ ¨\né¥ °\néĺ µ\né¥ ®\næļ ĸ\nåº Ł\næĹ Ĺ\néļ Ķ\nç¶ ĵ\nåĭ Ļ\nå¯ ¦\néĢ Ķ\næī «\nçĥ Ī\néĽ »\nåĪ ĳ\néĹ ľ\néĹ ª\nå¥ ĭ\nå Ĥ¨\nç¼ ©\nä¾ µ\nå ¬\nð¬ ¶\nåĽ½ éĻħ\nç»Ħ ç»ĩ\nä¸ĵ ä¸ļ\nåıĳ çİ°\nå¸Į æľĽ\nç»ı èĲ¥\nåı «\næĿ¥ è¯´\néļ ľ\nä»» ä½ķ\näº¤ æĺĵ\néĩį çĤ¹\nçļ ®\nç» į\næ´ ¾\nç§ĳ åŃ¦\nåºĶ çĶ¨\nå»º çŃĳ\nèĤ ī\næĶ¹ éĿ©\nåŁº ç¡Ģ\næ± ī\nåĩº æĿ¥\nè¿Ļ ä¹Ī\nåĪ ļ\nåĿ Ĳ\nä¸į ä»ħ\nä¼ļ è®®\néĿ ł\nåªĴ ä½ĵ\næ° ¸\nåĨ ²\nèĭ ı\nå¤ ®\nçĪ ¶\nåł Ĥ\nå®ŀ éĻħ\nè¡ Ĺ\nç« ¥\néĺ ħ\näºĭ æĥħ\nåİŁ åĽł\néħ ¸\nä»¥ æĿ¥\nå¨ ±\nå® «\nåĿ Ĺ\nç» ©\néĩ İ\nä¸į å¾Ĺ\nä¼ł å¥ĩ\nç¡ ¬\nåİ ħ\næĹ ¢\nç» ĥ\nèĦ ĳ\nå¼ ±\næİ Į\nè´ ´\næĮ Ĥ\nåħ³ éĶ®\nå° ļ\né¥ Ń\nåº Ħ\nçĻ ¼\nåľ ĭ\næİ Ī\nä¸ª æľĪ\näº Ī\nå¸ ģ\nè· Ŀ\næ² ī\nç« Ł\nåĨ ¬\næĬ ½\néĨ Ĵ\nå¼ Ł\nè§ ¦\nèģ ĺ\nè± Ĩ\næļ ´\nåĳĬ è¯ī\nè± ª\nèµ ¢\nè· ¨\nè³ ĩ\nçĪ ¸\næĬ ±\næµ ª\néº »\nä» ª\nè¡ ¡\nå¥ ¶\nçģ ¾\nèµ ¶\nèĤ ¥\nå§ Ĳ\nåĢ º\néľ ĩ\nè® ¢\næ¬ Ĭ\nç ·\nå» ī\nä¿ Ĺ\nå¿ ĺ\nå¦ ĩ\nç¼ ĵ\nåŃ ķ\næ¼ «\nè£ ģ\nçĩ ĥ\né» ĺ\nçī ¢\nçĪ ·\næĬ µ\nå® ¾\næľī ä¸Ģ\nè¿ ¹\nè¿ «\nè² Į\næľī çļĦ\nð¬ ĺ\nè¿ĺ æĺ¯\næīĢ ä»¥\nä¹Ł æĺ¯\nè¿Ļ äºĽ\nå¯¹ äºİ\nåĲ §\nçĽ® åīį\nèĩªå·± çļĦ\nèĥ½ å¤Ł\nå¦Ĥ ä½ķ\næľº æŀĦ\nåıª æĺ¯\nç½ĳ ç«Ļ\nåħ¨ éĿ¢\nä¸º äºĨ\nå¼Ģ åıĳ\næĸ° éĹ»\néĩĳ èŀį\nç» §\nå®¢ æĪ·\nä¸Ģ èµ·\nèĮ ¶\nåħ³ æ³¨\næ°´ å¹³\nåİĨ åı²\nå¢ŀ éķ¿\né ±\nåŁº éĩĳ\nåº Ń\nåı ¶\nä¿ ĥ\néĽ ¨\næ¶Ī è´¹\nèĪ ¹\nçŁ¥ è¯Ĩ\næĪĺ çķ¥\nç»ı éªĮ\nå³ °\næĽ ²\nèĦ ļ\nåĨ °\nå¤ ı\nå½ Ĵ\nç¬ Ķ\nèĻ ĳ\nçĶ ²\nåľ Ī\nè¯ Ĺ\né½ Ĳ\nå®¹ æĺĵ\nçłĶ åıĳ\néª ¨\nçº ¸\nè· µ\næĹ §\nçķ ¶\nåĪ ¸\nè´ ·\nåı ¬\nç§ ĭ\næ¶ ²\nè¡Į æĶ¿\nçĮ ®\nèĤ ¤\néĢ Ĳ\nè¶Ĭ æĿ¥\nè¶ĬæĿ¥ è¶Ĭ\næĦı è§ģ\nèĪ ŀ\nåī Ĥ\næ¶ ī\nç¨ĭ åº¦\nåħ¬ åħ±\næ¢ °\næľ «\nçº ¯\nåĶ ±\næ´ ²\næĬ ¢\næ¤ į\nå¿ Ļ\nä¼ °\nå¼ ¹\næ³ ī\næľĢ å¤§\nè¶ ĭ\nå· §\nç¦ ģ\næī ¶\nåį ±\nçı ł\nçĨ Ł\næĭ ľ\nä¸» ä¹ī\næĿ Ĥ\néĻ Ħ\néģ į\næĲ Ń\næĮ ¯\nå¤ļ å¹´\næķ ¬\næĳ Ħ\nçº ·\nå¼ ĥ\næ¹ ¿\nå¨ ĺ\næ¡ £\né© ¶\næľ Ĺ\næ® ĸ\næ¦ ľ\nåĵ ¡\nä¸Ģ ä½ĵ\næŁ¥ çľĭ\nç¹ ģ\næµ ĵ\nåħ¬ å®ī\næ½ ľ\nè´ ¯\néª Ĺ\næ Ĳľ\nå· ¡\nè ¬\né Ĭ\nå§Ķ ä¼ļ\næĤ ł\nåī ©\næı Ń\nåŃ£ åº¦\nð «ĺ\nð¬ ¬\nä ´\nð ª\nä½Ĩ æĺ¯\néĥ½ æĺ¯\nå¹³ åı°\nåŃ¦ ä¹ł\nåĵģ çīĮ\nä¸ Ķ\nè¿Ļ ç§į\næĶ¿ çŃĸ\næĭ ¬\nè®¤ ä¸º\nä¸Ģ èĪ¬\næłĩ åĩĨ\næĶ¯ æĮģ\næ¨¡ å¼ı\nåħ³ ç³»\nçļĦ æĺ¯\nè¿Ļ ä¸Ģ\nä¸į è¦ģ\nçĶ ļ\nç²¾ ç¥ŀ\næĭ ¥\nåĪ© çĶ¨\nä¿Ŀ æĬ¤\nä½ľ çĶ¨\nèĭ ¥\nåĽ½ åĨħ\nä»ĭ ç»į\nä¸Ģ ä¸ĭ\nå·¥ ä¸ļ\nçĽ® æłĩ\næľĢ åĲİ\nä»· åĢ¼\nå° į\néĵ ģ\nè° ģ\nç»ĵ æŀĦ\néĽ ª\næĻº èĥ½\nä¼ł ç»Ł\nä½ĵ èĤ²\nçĶŁ æĢģ\næĭ į\næİ ª\nåĨľ ä¸ļ\nçī¹ èī²\nè§Ħ æ¨¡\næĹ¶ ä»£\nè¿ĩ ç¨ĭ\néĴ Ī\næĿ ¾\nåĶ Ĳ\nåĮ» çĸĹ\nçģ ¯\nåĪ¶ éĢł\næł¸ å¿ĥ\nä¸į åı¯\nç³» åĪĹ\nåĲ ī\nåľ £\nåĢ ĳ\nä½ ³\næĿ¥ çľĭ\næ¯Ķ èµĽ\nä¸ĭ æĿ¥\nåĩº äºĨ\nå¹² éĥ¨\nå¾® ä¿¡\nå½ĵ åľ°\nåį ·\nåį« çĶŁ\nä¼ Ł\nçĸ« æĥħ\nè° ·\nåĩł ä¸ª\néĺ ´\nçĶŁ çī©\nå° ¤\nä¼ Ĭ\nèĤ ¯\néĿ¢ ç§¯\nåĪĽ éĢł\næı ¡\nåľ Ĩ\næĻ ĵ\næĪĲ äºĨ\nåĩ ¡\nçĸ ¾\nç«ŀ äºī\nè® ¨\nä¸» é¢ĺ\né² ģ\nè¿ ª\nä¿ Ħ\næĢ ª\nä¸ ¦\nèĻ ļ\næ½ ®\nçĥ §\nèĢ ³\næ± ł\néĢĤ åĲĪ\næł¹ æľ¬\nåĬł çĽŁ\nçĶµ è§Ĩ\næ· ·\nç¼ ĺ\nçª Ĺ\nçĬ ¯\næĥ ¯\næĦı ä¹ī\nåĬŀ æ³ķ\nä¼ ĳ\næ» ĳ\nåĭ ĩ\næķ ¢\nå¯ »\nè¦ Ĩ\néĢ ĥ\nç»ı çĲĨ\nåĿ ı\næ³ ½\nä¹ ĺ\nåĪ º\nå± ı\né¡ ¿\näº ¡\néĤ Ģ\nåħ ¼\nåĭ ¤\næ® ĭ\næĺ ł\næ¯ķ ä¸ļ\næĪ ª\nè· Į\nå£ ģ\nåı¦ ä¸Ģ\nçľŁ å®ŀ\nç£ ¨\nè¯ ļ\nå¿ħ è¦ģ\næģ ĭ\næĩ Ĥ\nå¾ Ĵ\nè° ĵ\næķ ı\næ Ļ¨\nèĥ ¸\næĭ ¼\nå¦ Ļ\nè¯ ¸\nèģ Ĭ\næĤ ī\néº ¼\nåĩ Ń\nèĪ Ĵ\næ¶ Ĥ\nè¿ ģ\næ² ¿\nå¡ ĳ\næĽ ¿\næ¾ ³\nå¿ į\nèĢ Ĺ\néľ ¸\nåĩł å¹´\nåĪ Ĭ\nèĦ ī\nèħ Ĳ\næ¡ Į\nçº ł\næ» ļ\næĤ ²\nåĨ Ĵ\nå¦ ¹\nçķ ħ\nçº µ\næĳ ĩ\nå¤ º\nè·¯ ä¸Ĭ\nå¿ ½\nèĸ ª\næģ Ĳ\næĦı æĢĿ\nå« Į\næı ´\næ° §\nèĢ Ģ\néĺ »\nè½ ¨\nå¹ »\næį ķ\nåĿ ¦\nåĵĪ åĵĪ\nçĭ Ĳ\næ» ¨\nè² »\nè¿ Ł\näºº éĥ½\nç» ĺ\nåı ¹\nçµ Ĳ\næī °\næ» ĭ\nå¥ ĳ\nåĭ Ł\nç¢ º\nð ¦\néĽĨ åĽ¢\næĿ İ\nå¼Ģ å±ķ\næıĲ åįĩ\nåħ¨ åĽ½\næ±½ è½¦\nåŃ¦ æł¡\næł¹ æį®\nè¿Ļ æĺ¯\nåĩº çİ°\néĻ Ī\nç½ Ĺ\nèİ· å¾Ĺ\nåĪ ĺ\néĶĢ åĶ®\næľª æĿ¥\néľĢ æ±Ĥ\nå®ŀ æĸ½\nåĿļ æĮģ\nåħ¨ çĲĥ\néĵ¶ è¡Į\næİ§ åĪ¶\né¡ »\nåľ° åĮº\næīĵ éĢł\nçļĦ è¯Ŀ\nå¸® åĬ©\nä½ĵ ç³»\nè¾¾ åĪ°\nè§Ħ åĪĴ\nåŁ¹ è®Ń\nä¸¤ ä¸ª\næĬ¥ åĳĬ\nåľ° æĸ¹\nå®Į åħ¨\næİ ī\nç»ĵ åĲĪ\nå®£ ä¼ł\næ³ķ å¾ĭ\nèīº æľ¯\nçĶµ å½±\nèª ª\nä¸Ģ çĤ¹\nè¶ħ è¿ĩ\nçĶµ åŃĲ\næĢĿ æĥ³\næķĻ åŃ¦\néĺ¶ æ®µ\nåķĨ ä¸ļ\nçī© æµģ\nåĪĽ ä¸ļ\næĸ¹ æ¡Ī\nçİ° ä»£\næ¡ ¥\nèĲ½ å®ŀ\nå¸¦ æĿ¥\näº§ çĶŁ\nç§ Ģ\næ³ °\nä¹ ±\nåħ· ä½ĵ\nåĸ Ŀ\nèĵ Ŀ\nå® Ĺ\nåįĩ çº§\næ·± åħ¥\nä¿Ŀ éĻ©\nç®Ģ åįķ\nçĹ Ľ\nç¨³ å®ļ\nè¾ Ĩ\nå±ŀ äºİ\nå· Ŀ\nä¸į å°ĳ\nåĴ ¨\nä¸ľ è¥¿\nå½¢ å¼ı\nå¨± ä¹Ĳ\næŃ£ å¸¸\né¸ ¡\nåħħ åĪĨ\nå®ŀ è·µ\néĩĮ éĿ¢\nè· ³\nèĻ İ\næĪĲ éķ¿\næļ Ĺ\nçĿ ¡\nç½ ª\nçĲĨ å¿µ\næĮ ĳ\nèµĦ æľ¬\nå¤ļ å°ĳ\nä¸ĭ éĿ¢\nå¸ Ŀ\nåħ¬ å¼Ģ\næ¸ Ĳ\néķ ·\nå± ĭ\næ¬¢ è¿İ\nå¿ĥ çĲĨ\nçĤ İ\næ¹ ¾\nè® ĵ\néĤ Ħ\nç³ ĸ\nä¹ Į\nåĬ ±\nçī Ļ\nèħ ¿\nå² Ĺ\nä¼ į\næĪĲ åĳĺ\nåŃ Ķ\nå°ı ç¼ĸ\nèĳ £\næ³ ¡\nåħĪ è¿Ľ\nåħ §\nåĺ ´\nè´ Ŀ\nè »\næĲ ŀ\næ³ Ľ\né¸ Ł\nç½ ²\nèĽ ĭ\nä¸» ä»»\nçĽ® çļĦ\nä¹ ı\næ´ ¥\næĪ ´\nä¸¥ æł¼\nçħ ¤\nçĮ «\nåĶ ¯\nå° Ĭ\nçĶ ľ\nåŀ ĥ\nåľ ¾\næĭ Ł\nçĦ ¦\né« Ķ\nå® ı\næ© Ł\né© »\næĹ ģ\nå½ »\néĥ½ ä¸į\næĳ ©\nä» ĵ\nä¹ ³\nå² ¸\nè° ĭ\nå¤§ å¤ļ\nçģ Ń\nèħ ¾\næŁ ľ\nèĪ į\nåħļ çļĦ\nå° ĺ\nåįģ å¹´\næĭ Ĵ\nè£ ¡\næŁ Ķ\nå¹ ¼\néĶ ģ\nä¸ĵ é¡¹\næī İ\né©¾ é©¶\nç¢ İ\nè¢ ĭ\néĶ ĭ\nå£ ®\nå° ĸ\nçĶµ æ±ł\nè¿ Ķ\næ¼ ı\nå¾ ª\nèı Į\nèĥ ĥ\nè¾ ħ\néĢ Ĵ\nèĥ İ\néĻ ª\nå¯ ¿\nå¥ Ķ\nçĮ Ľ\nçº ¹\nçŁ¥ åĲį\nå¿ Ĩ\næ¡ ĥ\næ£ ĭ\néĢ Ĩ\nçĤ ¼\nç± į\nçī §\næł· çļĦ\nè¾ Ľ\nåł Ĩ\nå®ŀ åľ¨\nä¼ ı\nå® ¿\nèµ ı\nè£ Ĥ\nåįĬ å¹´\nåĢ ¾\næ»¡ æĦı\næ¢ ¯\næĦı åĳ³\nåŃ ¤\nç¥ Ŀ\næĻ ¶\nèµ Ķ\nåģ ¿\nèĦ Ĥ\nç½ ļ\nç¢ į\næ² ĥ\næ ĵį\nå´ ĩ\næļ Ĥ\nè· ĥ\næĲ ¬\nå© Ĩ\né ī\néī ´\nåħ´ è¶£\nèĲ¥ ä¸ļ\nè® Ĭ\nèĦ ı\nè¾ Ī\nå·ŀ å¸Ĥ\nè´« åĽ°\nç© ·\nä¸Ń å°ı\næ¼ Ĥ\nçĻ Į\nèľ ľ\nä¼Ļ ä¼´\nçī µ\næĤ Ł\néĻ ·\nèµĽ åŃ£\næ¨ £\nåģ ¶\næĺ Ĩ\nè¢ Ń\næį Ĳ\nèī °\næ Ĥ¬\nçĶ ¢\nèĳ ¡\nçĽ Ĺ\nå© ´\nå° İ\nçº ½\nåĢ ¡\næī ®\nè¨ Ń\næĬ ĳ\nç¡ ķ\nè¾ ĸ\néĥ ģ\nè¾ ©\néĤ »\nçİ° åĩº\nè¦ ı\nå½ ¹\néĺ Ķ\nåī µ\nè¯ ±\næĥ ĳ\næ· Ģ\né¢ Ī\nä¾ ¦\næģ °\næ£Ģ å¯Ł\néĨ «\nçĦ¶ æĺ¯\nåĭ ĥ\nèĮ «\nä ĵ\nð ¬¸\nä½ľ ä¸º\nçļĦ äºº\néĤ£ ä¹Ī\nç¾İ åĽ½\nè¿ĺ æľī\næıĲ é«ĺ\nèĻ ½\nåħ· æľī\nåĮħ æĭ¬\næĪĸ èĢħ\nä¸į è¿ĩ\nä¸Ĭ æµ·\nåĮ» éĻ¢\nèµĦ éĩĳ\nçĶļ èĩ³\nåĪ¶ åº¦\nè§£ åĨ³\nèģĶ ç½ĳ\nç»§ ç»Ń\nå»º ç«ĭ\nè¿Ľ ä¸ĢæŃ¥\næĿĲ æĸĻ\nä»Ĭ å¤©\nå¿ħ é¡»\nåĲĦ ç§į\nçİ° åľº\nä»ĸ çļĦ\nå¢ŀ åĬł\né¢Ĩ åŁŁ\nåıĤ ä¸İ\næĮģ ç»Ń\nä¹ĭ ä¸Ģ\nçī¹ åĪ«\né± ¼\nåħ± åĲĮ\nåĬ ª\nçİ ī\näºº ä»¬\nåħĪ çĶŁ\nä¼ĺ åĬ¿\nä¿Ŀ æĮģ\nä½ľ åĵģ\nçī Ľ\næĪĲ æľ¬\næĶ¶ åħ¥\nåıĬ æĹ¶\nè´Ł è´£\næİ¥ åıĹ\nèį Ĳ\nåıª è¦ģ\nçľŁ çļĦ\nå¯¼ èĩ´\næľº åĪ¶\nè¡Į åĬ¨\næĸ° çļĦ\nå®Į åĸĦ\nä¸º ä»Ģä¹Ī\nä¸Ń å¤®\næĪĲ ç«ĭ\næĦŁ è§ī\nåıĺ åĮĸ\nåıĹ åĪ°\nå¹¶ ä¸į\nåŃ Ļ\næĸ½ å·¥\næĺİ æĺ¾\nè¿ĩ åİ»\nåıĳ æĮ¥\nçľŁ æŃ£\nåŁº åľ°\næĺİ ç¡®\nèĥ ¡\nè®¸ å¤ļ\nä¸Ģ å¹´\næĸ¹ åĲĳ\næģ ©\nçĽ¸ ä¿¡\nåľ ³\nè¯¦ ç»Ĩ\näºĭ ä¸ļ\nçĶŁ åĳ½\nåĴ¨ è¯¢\næĸĩ æĺİ\nçĳ ŀ\nç»¿ èī²\nèİ «\næĦı è¯Ĩ\næĬķ åħ¥\nåĬł å¿«\næ¢ ħ\nç¿ »\nå¼Ģ æĶ¾\næĻ® éĢļ\nåįı ä¼ļ\næĪĲ ç»©\nä» Ļ\nå¯ Ĵ\nè¯ģ åĪ¸\nè®¤ è¯Ĩ\nä¸ ¹\nå¤§ éĩı\nè¿ ħ\nåģļ åĪ°\nè®¾ æĸ½\nè´¸ æĺĵ\nèĥ½ æºĲ\næĹ¶ æľŁ\nä¸Ģ å¤©\næ²» çĲĨ\nåĺ ī\nå® ĩ\nä¸° å¯Į\nä¸¾ è¡Į\næĪĲ æŀľ\nèĤ¯ å®ļ\nçĭ Ĺ\nåĬ¨ åĬĽ\næ£ ®\nåĩł ä¹İ\nåĽł ç´ł\næ°ĳ æĹı\næ´ ŀ\nç½ĳ åıĭ\nåĲĪ çĲĨ\nå¹¿ å¤§\næ® Ĭ\næ´ Ľ\næĿ ¯\nèĴ Ļ\nçĶ¨ äºİ\nèŀį èµĦ\nç¥ ĸ\næľº æ¢°\nä¸¾ åĬŀ\nèĩª åĬ¨\nåĬŀ åħ¬\né» ŀ\néĽ Ħ\nåĢ¼ å¾Ĺ\nçĮ ª\nä»¥ ä¸º\næĺ Į\nè·Ŀ ç¦»\nåĲ¸ å¼ķ\nç» ķ\néļ Ĩ\nè®¡ ç®Ĺ\néĺŁ ä¼į\nå¤§ ä¼ļ\nå¼ķ èµ·\nçī¹ çĤ¹\nèĥ ¶\nå¹´ è½»\næľ¬ èº«\næľº åħ³\nå®ĺ æĸ¹\néĥ ĳ\næµ Ļ\nè§Ĵ èī²\nèĳ£ äºĭ\nä¸º ä¸»\næĹł è®º\nä¹ł æĥ¯\næ¥ ļ\næĭ ĵ\nç»Ł è®¡\nåħ Ħ\nå¹¿ æ³Ľ\nåį Ģ\næ±¡ æŁĵ\nè« ĭ\nèĬĤ çĽ®\nä¼ ¦\nè¦Ĩ çĽĸ\nèĢ Ĳ\næī¶ è´«\nç»ı åİĨ\néĩįè¦ģ çļĦ\nèĤ¡ ä¸ľ\næĭĽ èģĺ\nåĽĽ ä¸ª\næĩ ī\nèĥ ŀ\næĳ Ĩ\né«ĺ éĢŁ\néº ¦\nåİŁ åĪĻ\nèİ ±\næĽ´ å¥½\néķ ľ\nåĩ Į\nåŀĥ åľ¾\néĢ ²\nçģ °\néĵ º\näºĭ æķħ\nçĶ ĺ\nç©º æ°Ķ\né¾ Ħ\nèı ²\nçĵ ¶\næĺ ¨\næĹ¥ æĬ¥\næµ ®\nåľ° åĽ¾\nåĳ Ī\nå¤§ åĬĽ\nç» ª\nå¸ ħ\næľį åĭĻ\nä¸į éĶĻ\nä¹¡ æĿĳ\nå± ¥\nå¹³ æĸ¹\néĹ ²\næī £\nç´ł è´¨\nèµ ´\néģ Ń\nèĲ ¨\nèĩª ä¸»\néĩĳ å±ŀ\nèī¯ å¥½\nä¸¤ å¹´\næ³ ¥\né¢ ľ\nç²¾ å½©\nä¸Ń åįİ\næĻ ĭ\nä¹ł è¿ĳ\nä¹łè¿ĳ å¹³\næĪĺ å£«\nåģļ çļĦ\néª ĳ\næ» ´\nçĵ ľ\nçīĪ æĿĥ\nèĤ ł\næľĥ åĵ¡\nçı į\nç¨ ®\nä »¿\nçī© ä¸ļ\nåĢĭ äºº\nå¦ »\nä¼ ¸\næ± Ĺ\næĹ º\nçĲĨ æĥ³\næĳ ¸\nè¿Ŀ æ³ķ\nå®Į æķ´\nåİ ¦\nè¸ ı\næĸ ĳ\næ¡ Ĥ\nä½ĵ åĪ¶\nå¸ «\næĿ Ĩ\næ® ¿\næ¯ ģ\né¦ Ī\nè§Ĵ åº¦\næ¬ £\nçĥ ¦\nèĤ º\néĩĩ è®¿\næĳ ĺ\næĮ ¡\næ· ĺ\nåħ» èĢģ\nçĤ ¸\nè¿ Ī\nåİ ī\nåĿ Ĭ\nè¾ £\nåĩ Ŀ\næ³ ª\nçĸ ı\næİ ĺ\nåĥı æĺ¯\néĽ ķ\nç¼ Ŀ\nèį ·\næį ·\nåł ¡\nåı¥ è¯Ŀ\nçĸ ¼\næł ı\néģ µ\nç¢ ³\nå·¥ åķĨ\næĲ º\nåĪ ¥\nä¹ Ļ\næĹ ĭ\næĥ ľ\nä¸Ģ å¤§\nå±Ĥ æ¬¡\nèµ ĸ\næĬ ¬\næ¨ Ĥ\nè¯ ŀ\nåħ Ĵ\nç¯ ®\nèĤ ĥ\nå§ ¿\næĬ ļ\nçĵ ·\nçĶµ åĬ¨\næĸ° åĨł\næ¶ µ\nç¢ ĳ\næ· ®\næĹ ¨\nè¸ ª\næ¸ Ķ\næĦ Ī\nåı Ķ\nåįĹ çľģ\nç¾ ©\nå§Ķ ä¹¦è®°\nè² ¸\næ¶ Į\nè« ĸ\nèĲ Ħ\næı ı\nå¿ §\nè¾ ¦\nå¦ Ĩ\næī Ń\nåĳ µ\néģ ¥\nè¨ ±\nä» ĩ\nåįģ ä¸ī\nåī ²\nèª į\nèĪ °\né¢ ĩ\né¥ ±\nçĭ ł\né«ĺ çļĦ\nçµ ±\næħ İ\né¢ ģ\nåĲĪ éĢĤ\næµ ´\nèµ ĭ\næĬ ¼\nå¦ ¥\néĻ¢ éķ¿\nèĢ ķ\nè¾ ¨\næħ °\nåįģ åĽĽ\næľ µ\nèĵ Ħ\næŀ ¢\nå» ·\næĤ Ħ\næ¶ ¯\nçŁ ©\nåŃĲ éĩĮ\nçĬ ¹\nå±Ģ éķ¿\né Ĳ\nå¥ ł\nä¼ļ éķ¿\næĵ ļ\nä¸į åıĬ\nåįģ ä¹Ŀ\næ¬ º\nèº º\néĺ Ĳ\nçº Į\nè¨ »\nåĨ Ĭ\nèŃ ĺ\né«ĺ çŃī\nèħ º\nå¤ ķ\nç» ĳ\nåĶ ¤\nèķ ´\nçķ ľ\næħ ĭ\nåı Ļ\nåı ĥ\nå³ ¡\näºº å¤§\néħ ¿\néģ ©\nå¥ ¢\nåı£ æ°Ķ\néĮ Ħ\né ı\nåĭ ĺ\nè´ ¿\néļ ª\né ĭ\néļ ¶\nð ¥\nð¬ £\nð £\nð« į\nð¬ ³\nð« ĵ\nð« Ħ\nð« Ł\nð¨ ±\nä Ĺ\nä»¥ åıĬ\næľī éĻĲ\nåĳ ¢\nåĲ Ĺ\nçľĭ åĪ°\nè®¡ åĪĴ\nè¿Ľ åħ¥\nçĽ´ æİ¥\nåĪĨ æŀĲ\nåıª æľī\nè®¾ å¤ĩ\nåħ¶ å®ŀ\nåĬł å¼º\nä¸Ń çļĦ\nä¿Ŀ éļľ\nèĢģ å¸Ī\näºº æīį\nå¾Ĺ åĪ°\né£İ éĻ©\nä¸Ģ ç§į\nç©º éĹ´\næĪĳ åĽ½\nä¹ĭ åīį\nä¸ĵ å®¶\næĿ ¨\næĹ¥ æľ¬\nç¾¤ ä¼Ĺ\nåıĤ åĬł\næķĪ æŀľ\næľī åħ³\nå®¶ åºŃ\nåĮº åŁŁ\nåĬª åĬĽ\néļı çĿĢ\næĹł æ³ķ\näº¤ æµģ\nè¡Į ä¸º\næ£Ģ æŁ¥\næľŁ éĹ´\nå¦Ĥ æŃ¤\nèĤ¡ ä»½\nå½ĵ æĹ¶\nè£ħ å¤ĩ\nåĩĨ å¤ĩ\néħĴ åºĹ\nè¿Ĳ åĬ¨\næıĲ åĩº\nå·¦ åı³\næİª æĸ½\né£Ł åĵģ\næ¶Īè´¹ èĢħ\nåŃ¦ éĻ¢\næĮĩ å¯¼\nè¿Ĳ èĲ¥\néĩį å¤§\nåĨľ æĿĳ\néĢł æĪĲ\næĶ¿ æ²»\néĴĪ å¯¹\næŃ£ å¼ı\nåıĸ å¾Ĺ\néĤ£ ä¸ª\néĽĨ ä¸Ń\nåıª èĥ½\nå¿« éĢŁ\nèº« ä½ĵ\nåħļ åĳĺ\nèģĶ åĲĪ\nåĬĽ éĩı\néĥ½ æľī\næ ħ§\nå¡ Ķ\nåĪ« äºº\nè¡¨ çİ°\næķħ äºĭ\nä¸Ģ åĪĩ\nå° ĩ\nèµĦ æĸĻ\nåŁ¹ åħ»\néĺħ è¯»\næľī äºº\nèĲ¥ éĶĢ\nçĽĳ çĿ£\nçİ¯ ä¿Ŀ\nèĢĥ èĻĳ\næ·± åľ³\nä¸¥ éĩį\nèĮĥ åĽ´\nå§Ķ åĳĺ\nçĽĳ ç®¡\nä¸ī ä¸ª\nè£ħ ä¿®\nåħ¬ éĩĮ\nåĪĨ åĪ«\nçĲĨ è§£\néŁ ©\nåĬł å·¥\nè®¤ çľŁ\nä¸į å¥½\nåİ» å¹´\néĻį ä½İ\næľº ä¼ļ\nåįı è®®\nç¬¦ åĲĪ\nå¢ŀ å¼º\næĬĢ èĥ½\né¦ĸ åħĪ\nç§ ¦\nä¸ ģ\nå° ¾\næľī äºĨ\nåľ° äº§\næ¸ ł\næĸ¹ ä¾¿\nç§» åĬ¨\néĢŁ åº¦\nå°¤ åħ¶\néĢļ çŁ¥\nåĿ Ľ\néģ¿ åħį\næģ ¢\nè´ ¡\nèģĮ å·¥\nå®ŀ åĬĽ\næĺ¯ä¸Ģ ç§į\nåĲ¯ åĬ¨\nçĸ¾ çĹħ\næĿ¥ äºĨ\nçĽ¸ å¯¹\nçİ° å®ŀ\nèŀį åĲĪ\nåĲĮ æł·\nåħ¬ åĳĬ\nçī¹ æ®Ĭ\nç´ «\nä¸ĭ åİ»\nä¼ł æĴŃ\næľĢ å¥½\nä¼ĺ è´¨\næ² Ĵ\næĮ º\næĹ ¦\nè¯ º\nä¸Ģ åĲį\néģĵ è·¯\nç¤º èĮĥ\nè¿ĩ æĿ¥\nåĲĮ åŃ¦\né¼ ĵ\næĿ Ń\næľ¬ æ¬¡\nåĲĮ æĦı\nä¸ĸ çºª\nç¾ Ĭ\næ¬ ²\nå·¥ èīº\nçĵ ¦\näºº å£«\næľī æīĢ\nä»İ äºĭ\næľī å¾Īå¤ļ\nä¸į äºĨ\nå²Ĺ ä½į\nåıĺ å¾Ĺ\nåĬ³ åĬ¨\nå¤Ħ äºİ\nå¹³ åĿĩ\nå½¢ è±¡\nå¡ ŀ\nåħ± äº«\nçĿ Ľ\nåĪ© æ¶¦\næŃ£ æĺ¯\nå¾Ģ å¾Ģ\nçĽ¸ æ¯Ķ\næ¨ ª\nåĪ ·\næµĻ æ±Ł\nå¤§ éĥ¨åĪĨ\nå¤ļ ä¸ª\næĤ¨ çļĦ\nçĶµ åķĨ\nå¾® åįļ\nå§ĭ ç»Ī\nçĬ¯ ç½ª\næĺ¯ åľ¨\nç»Ħ åĲĪ\nåİŁ æĿ¥\næ¸ħ æ¥ļ\nåĲĦ åľ°\næĦŁ åıĹ\nå½ĵ ä¸Ń\nè¶ĭ åĬ¿\næĻ¯ åĮº\nçľŁ æĺ¯\nä¾Ľ åºĶ\nè½¬ åŀĭ\nçĭ Ĥ\nèĨ ľ\nèĭ Ĺ\nå¿ ł\nå¾Ī å¤§\nèĤ¡ æĿĥ\nç¾İ åħĥ\næİĴ åĲį\nåĬ¨ çī©\néĶ ħ\nå¢ ¨\nä¸» å¸Ń\nå¾Ī å¥½\nç»Ŀ å¯¹\næĿ ľ\nè½¬ è½½\nçĴ ĥ\næĿĳ æ°ĳ\nåĲ ¨\nåĽŃ åĮº\né«ĺ åº¦\nçī© è´¨\nè¾ ī\næĹ¥ å¸¸\næı Ĵ\nä¸ī å¹´\nä½ĵ çİ°\næīį æĺ¯\nä»£ çĲĨ\nä¸į ç®¡\næģ Ĵ\nåľ° ä½į\nç² ®\nèĸ Ħ\næĺİ çĻ½\nä¸Ģ èĩ´\næĽ ¼\nåĵ Ń\nåĩ ¤\nåĬ ²\næķ Į\næĪĺ æĸĹ\nä¸» ä½ĵ\nåħ¬ å¸ĥ\nåıĤ èĢĥ\nèĪª ç©º\nå¯ º\nåŃ¦ ä¼ļ\nåıį æĺł\nç¾İ ä¸½\nå¤ª éĺ³\nå»º æĪĲ\næħ¢ æħ¢\nåĲĦ ä¸ª\néĤ ¦\nç»Ħ æĪĲ\nä¸ī å¤§\néĶ ¦\nå¤§å¤ļ æķ°\næ¦Ĥ å¿µ\néŃ Ĥ\nåħ¬ çĽĬ\nèį Ĵ\nèº« ä»½\næ·± åĪ»\nåħ ©\nç»ı åħ¸\nåĲĦ é¡¹\nèĻ ķ\nè¿Ľ æŃ¥\nåįģ äºĮ\næī§ æ³ķ\næĥ³ åĪ°\næĦŁ æŁĵ\nåķĨ åĬ¡\nå°ı ç»Ħ\nèĶ ¬\nçıŃ åŃĲ\nåĲĮ å¿Ĺ\néĿ¢ ä¸´\nçĤ Ĵ\nå¤ļ ç§į\nè§Ĥ çĤ¹\nåĵª éĩĮ\nå° Ŀ\nå§ Ĩ\nèħ ¹\nåŁİ åĮº\nå¤ª å¤ļ\nçĹħ æ¯Ĵ\nåľ¨ äºİ\næīĢ è°ĵ\næĻ °\næŀ Ŀ\næĭ ĸ\nå® ħ\næķ´ æ²»\nä½ı æĪ¿\nåģ ·\nçĨ Ĭ\nèµ ģ\næ° Ľ\næł¼ å±Ģ\nåŁºç¡Ģ ä¸Ĭ\nèĥ Ĩ\nåħ ½\néĽ¶ åĶ®\nåĿ ¡\nå¥³ åŃ©\næĴ ŀ\nåħ¨ åĬĽ\nåĴ ĸ\nèĤ ©\nçľ ī\nèĩ³ äºİ\nåħļ ç»Ħ\nä¸Ģ ä»¶\næĭ Ĩ\näºĭ å®ŀ\nåĤ ³\næ¹ ĺ\nç¶² ç«Ļ\nå¾ª çİ¯\nåĲĮ æ¯Ķ\næĭ Ķ\nåĮ» èį¯\nåħ» æ®ĸ\nåĽº å®ļ\nå®ŀéĻħ ä¸Ĭ\nè®° å¾Ĺ\nåĪ© äºİ\næĤ ¦\næĭ ³\nèĤ Ŀ\næķĪ çĽĬ\nè© ²\næ°ĳ ä¸»\nçĹĩ çĬ¶\né¢ ¨\nå¹¼ åĦ¿\nå§ ĳ\næĪ Ĵ\nä¸ĭ çļĦ\næ¸ ¡\nå¹´ åºķ\nè®° å¿Ĩ\nåĲ Ĳ\nå¤§ å¹ħ\nå¾ ½\nåħ¬ ä¼Ĺ\nä¿¡ å¿ĥ\nçİ Ľ\nä¼ļ ä¸Ĭ\nä¹ Ķ\næĳĦ å½±\næ£ĭ çīĮ\néĻ ķ\nåºĶ æĢ¥\næĶ¶ è´¹\næİ§ èĤ¡\nä»ª å¼ı\nçŀ ¬\næīĢ åľ¨\nç¢ °\nå§ ĵ\né¡ Į\næĶ¯ éĥ¨\nä½¿ åĳ½\nçĤ ī\nå¯ Ħ\nç¿ ¼\nåľ° ä¸ĭ\nè¾ ŀ\nä¿ ±\nä¸» æĮģ\nè´§ å¸ģ\næģ ¨\nèĤ Į\nçĽ Ī\néĶ »\nå¿Ĺ æĦ¿\nç±» ä¼¼\næĮ ĸ\néĢ »\nç¸ ½\nçºª å¿µ\nåķ ¥\nå¼ ¯\nåĲį åŃĹ\nåģ¥ èº«\nçļĦ å¿ĥ\né© ±\nèĥĮ åĲİ\næ³ķ å¸Ī\nç² Ĵ\nèĥ½ éĩı\nè¾ °\nèī ³\nå½ ¼\næ®µ æĹ¶éĹ´\nåĲĪ æ³ķ\næĵ ¦\nç¾ ½\nåİ ¨\næĪĳ è¯´\näºĭ åĬ¡\nåĩł å¤©\nåħ ģ\nç¼ ´\nåį ĵ\nä¸¤ ç§į\nçĭ¬ çī¹\nå¸ ¶\néĴ »\næĥ ©\né¢Ĩ åħĪ\nè¶³ å¤Ł\nå£ ³\næĦıåĳ³ çĿĢ\nåĪĨ å¸ĥ\nä¹ ĥ\néģ ĭ\nä½ ©\nè° ±\nçģ £\nèį ¡\nè´¯ å½»\nå¹ ¾\nç£ ģ\nåħ¸ åŀĭ\nåī ĩ\nåĨ »\næ¬ ł\nä¸į ä¹ħ\næµ ¦\néŃ ħ\nå¼Ģ äºĨ\nä½¿çĶ¨ èĢħ\nè¿Ļ æ¬¾\nå° Ī\nèĦ± è´«\næĶ» åĿļ\nç®Ĺ æĺ¯\nç¨ Ģ\næĹł äºº\nåł µ\nå¥ ı\néĥ½ å¸Ĥ\nåı¯ è§ģ\nä¸į åĩº\næ ·»\näº ı\nç¾İ å¥½\nèĥ ĸ\néŁ µ\næłĩ å¿Ĺ\nèĬĤ èĥ½\næĬ «\nå° º\nå¯ ¸\nä¸Ģ ä»£\né¢ Ĺ\nèĢ ¶\nèĴ ¸\nåĸ ®\næ »¿\nçĮ ľ\næµ Ĩ\nåŁ ĥ\nåįĥ ä¸ĩ\nèµ Į\nèģ ²\nä½ľ é£İ\nè³ ª\nå¯ ¨\nå¹´ äºº\nåį° è±¡\næ¡ ¶\næĴ ¤\nåįģ äºĶ\næ¯ ħ\næ² ª\nåĽ½ æľī\nå¤§éĩı çļĦ\nå¾ ¡\nå¯ ĵ\nè¦ ĸ\næ¼Ĥ äº®\nçľ ł\nç ĤŃ\né» İ\nèĻ ¹\nåĪ© äºļ\nèŃ ī\næµ ı\nåįģ åħ«\nä¸ ¢\nè¾ ½\næľīä¸Ģ äºĽ\næħ Ī\nåģľ è½¦\nå® ł\nè§£ æĶ¾\næľī å¤ļ\néĤ Ĭ\nå¸¸ è§ģ\næĬ ¹\nçº ¤\nè¦ ª\næ¡ Ĩ\nèİ ŀ\næ°§ åĮĸ\nè¿Ļ ä»¶\nåĩ °\næŁ ´\nåıĳ çĶµ\né¼ ł\nè½¬ åĮĸ\nå¨ ĥ\næĮ ¤\nç½ ©\nå¯Ĩ åĪĩ\næĪĳ ä¸į\né«ĺ æĸ°\nä¸Ģ ç¯ĩ\nè¿Ľ ç¨ĭ\nè¡ °\nè¿ĺ ä¸į\nç ħĮ\næĸ° åįİ\nèĤ ¿\næ» ©\nä¸Ģ æµģ\nè¯ Ī\nå®ŀ ä½ĵ\nå¤ĸ åĽ½\nèº ²\nèµ ł\nè¦ º\næ¢ Ŀ\nä¸į è§ģ\nè¨ Ĭ\nåĮ ¹\nåį µ\nçĩ ¥\næħ ķ\né½ ¿\nå® ´\né¥ ¼\nèĳ¡ èĲĦ\nå°ı å¿ĥ\næģ ¼\néĻ Į\næĺ Ĥ\nåĥ ¹\nèĬ Ŀ\næ¯ı ä¸ªäºº\nåīį æıĲ\nä½ĵ ä¼ļ\næ¨ Ļ\næĲľ çĭĲ\nå¯¹ åħ¶\nä¸ §\nèľ Ĥ\næµ ¸\nèª ¿\nåĿ ª\né¢ ĸ\nåĲį ä¸º\nç¬ ¼\nèĪ Į\næľ¬ ä¹¦\nèģ ¯\nçº º\nç®Ģ çĽ´\néĽ ¢\nç¾İ çļĦ\néļ ¨\né«ĺ å³°\nè¿Ļ å®¶\nå Ĥ¬\nå° ¸\nç¡ķ å£«\nèŃ ·\nè° ¨\næĺ ı\næĶ¿ åįı\nè¡ Ķ\nç¿ Ĵ\nåľ Ĵ\nåĽ½ æ°ĳ\nä¸» è§Ĵ\nè£ ķ\nä¼ ª\nåº ŀ\næ°ĳ èĲ¥\næĥ §\nç§ĺ ä¹¦\nçĹ ķ\nçĻ¾ åĪĨ\næº ¶\næĹł çĸĳ\nçļĦ çľ¼\næĵ İ\nä¼Ł å¤§\nå½ °\nåħ¬å®ī å±Ģ\nç³ ķ\nå¼ ¥\nåĤ Ļ\nä¹ ¾\næ¯« ä¸į\næ³¨ æĺİ\nåī¯ æĢ»\næĦ ī\næķ ¦\né¦ ¨\næĶ Ģ\néĢ Ŀ\nåı¯ éĿł\nå¤ ¸\nåľ ĺ\néĿ¢ ä¸Ĭ\næĬ ĸ\nèĦ Ĩ\né© °\nä¼ Ĳ\nå¦ ¨\nå®ļ äºĨ\nç³ Ĭ\næŃ ¡\néĥ¨ éķ¿\nç§ ī\nèĪ Ĩ\nåĪĳ äºĭ\nåĲ µ\næ¤ Ĵ\nè¡ ĵ\nè± «\nèı ©\nåŃ µ\né¥ ²\nå°± å¥½\nåł ª\nä¸ī è§Ĵ\nåľº æ¯ĶèµĽ\nä¸į åģľ\næĵ ħ\nåħ¨ æĸĩ\næ³ ģ\nåŃ¦ ä½į\næ± °\néł ĺ\nåı ł\néļ Ľ\nå¸ Ĳ\nçľĭ åĩº\nåĮ ł\nå±Ģ éĿ¢\næ³ Į\nè° Ĭ\nåĲĮ æľŁ\næĬķ æłĩ\nå¥ ´\næĿ¥çľĭ çľĭ\nèĦ ¾\nèŀ º\næŃ ī\nçĽ ¯\nç¨İ åĬ¡\nå» Ĭ\næİ ©\næħ ¨\nçĽ ¼\nèĬ Ĵ\nè® Ģ\næĮ £\nèĮ ħ\næĸ ¥\næ¤ ħ\nåĪ° æĿ¥\nèĳĹ ä½ľ\nçĭ ±\näºĮ æīĭ\nä»İ æĿ¥\nçĸ ²\nåºĬ ä¸Ĭ\næĸ° æµª\næ³ Ħ\nå¢ŀ åĢ¼\nä¸ Ľ\næļ ĳ\nä»İ ä¸ļ\næ· ĭ\nå¤ļ æł·\næľ ´\nä»½ é¢Ŀ\næŀ £\nè¥¿ çľģ\næľ¬ è´¨\næ·± æ·±\nèī ĩ\nç» µ\näº§ åĢ¼\næ¼ ł\nèħ »\nçŃ Ľ\nåİ Į\næģ Ń\nå«Į çĸĳ\næĪ ¶\næ» ŀ\nèĨ Ģ\nåĬ £\nåº§ è°Ī\nå¸¸ æĢģ\nçļĦ æĥħ\nè¦ ½\nå¯ Ĥ\nåĮ Ĩ\nèĩ º\né¡ ¯\nçķ ı\néģ £\nåį ľ\nçŃī å¥ĸ\nè² ¬\næº ¯\né İ\nçĤ¹ å¤´\nèĵ ¬\næ± º\néħ ¬\néģ Ĭ\nè³ ¼\nè¨» åĨĬ\næľ¬ æĬ¥\nçµ ķ\næ´» æĢ§\nåħ ĳ\néĮ ¯\nåĨ ¶\nåĸ »\næº ĸ\nèĤ ¢\næº ĥ\næĹ ¬\nåī Ĭ\nçĲĨ äºĭ\nå± ł\næ² §\nèļ Ģ\néĽ» åŃĲ\nä¸º æŃ¢\nå¸¸ å§Ķ\nçµ Ĥ\néĬ ·\nçĭ Ģ\nä¾ £\nèĥ Ģ\nèŃ °\nçĶ¨ è½¦\nåĻ ª\næŃ ·\nåį Ķ\nåĪ ¹\nç«Ł æĺ¯\né© Ĺ\nèĲ Ŀ\nçĻ «\nçĹ «\næŃ §\nå¼ Ĭ\nåª ½\nçı Ĭ\nè¡ ·\néľ ī\nåŁº çĿ£\néļ ±\næ° ¨\nç» ¸\nå°¼ æĸ¯\nçĥ ĺ\næľŁ åĨħ\nè° ħ\néĽ ĩ\néļ Ļ\nå ĸī\nåī ¥\nçĹ ĺ\næĮ ½\nçĵ £\næ¹ Ľ\næ¨ ±\næ¾ İ\næ¹ ĥ\nåĨ¬ å¥¥\næ£ µ\nå® °\nåŀ Ĵ\næ§ ĭ\nä¾ Ī\nèĮ Ħ\nåĺ ¿\nèı ĩ\nç ĻĤ\nåĬ ĥ\né į\nèĶ ½\nçŀ Ń\næķ ŀ\nä¹ ĸ\néŁ §\nè¾ ľ\næĩ Ī\nä½ £\nçŀ »\nåŁ Ķ\nèĪ ħ\nå®ŀ äºĭ\né ¨\nå§ ¥\nçµ ¡\nåĺ »\nçķ ¢\næ²ĥ å°Ķ\nè¿ Ħ\nèĤ ĩ\næħ ĳ\nã §\nä ı\nð ł\nð¬ ĩ\nð« Ń\nð« Ĳ\nã ³\n© ½\nð« ł\nã Ľ\nð¬ į\né ¿\nð¬ Ĵ\nã Ļ\nð¬ ¤\nð ¬´\nð« ĸ\nð ¤\nã ¬\nä ²\nð« Ķ\nð« ļ\nè¦ģ æ±Ĥ\nä¸Ģ äºĽ\nå®ŀ çİ°\nèĢĮ ä¸Ķ\nåĽł æŃ¤\nçĶ± äºİ\nåħ³ äºİ\nçĦ¶ åĲİ\næİ¨ åĬ¨\nä¸Ģ æł·\næĮī çħ§\nè¿Ļæł· çļĦ\nå½¢ æĪĲ\næľī äºĽ\næĽ´ åĬł\nç»ı è¿ĩ\nå»º è®®\næ²» çĸĹ\nä½ł ä»¬\næīį èĥ½\nä¿ĥ è¿Ľ\nåĳĺ å·¥\nä½ĵ éªĮ\nèĪ ĩ\nåģļ å¥½\nä¿Ŀ è¯ģ\næķ´ ä¸ª\næĺ¯ ä¸Ģä¸ª\néĩĩ çĶ¨\nçĲĨ è®º\næ¯Ķ å¦Ĥ\nä¸Ĭ çļĦ\næİ¨ èįĲ\nçĶ³ è¯·\nå¤© ç©º\néĥ¨ èĲ½\nåįģ åĪĨ\næĿ¥ èĩª\nä¹ĭ éĹ´\nè°ĥ æķ´\næ¯ı å¤©\nè°ĥ æŁ¥\næĤ£ èĢħ\nè¿ĩç¨ĭ ä¸Ń\né¦Ļ æ¸¯\nå¹¿ åĳĬ\néĿ¢ å¯¹\næ»¡ è¶³\néķ¿ æľŁ\nè§Ħ èĮĥ\næķ´ ä½ĵ\næĶ¹ åıĺ\næĻº æħ§\nå¦Ī å¦Ī\nå¦Ĥ ä»Ĭ\nåĲĪ åĲĮ\néĥ½ ä¼ļ\nåĦ¿ ç«¥\nåĩı å°ĳ\néŁ³ ä¹Ĳ\nç»ı å¸¸\nä¸Ĭ å¸Ĥ\nä¼ĺ ç§Ģ\nçļĦ éĩįè¦ģ\nä¸Ģ æĿ¡\næµ· å¤ĸ\nåı¦ å¤ĸ\nä¸Ģ å®¶\nåİĭ åĬĽ\nå¤§ åŀĭ\nçľĭ çĿĢ\nåĪ Ģ\nå¹¸ ç¦ı\næİ¨ å¹¿\nåĲ Ľ\nå¾ Ĳ\næī¾ åĪ°\näºİ æĺ¯\nèĩª èº«\nä¸Ģ ä½į\nåľŁ åľ°\nåĬł åħ¥\næİ¢ ç´¢\næ¢ ģ\nä¸» åĬ¨\nå°± ä¸ļ\nå¥³ æĢ§\nçªģ çł´\nä¸įåĲĮ çļĦ\nè¿Ĳ è¾ĵ\nèĩª çĶ±\nå±ħ æ°ĳ\næŃ¤ æ¬¡\nçļĦ æĹ¶éĹ´\nå®¶ éķ¿\nä¸Ģä¸ª äºº\næ£Ģ æµĭ\nåĨħ éĥ¨\nå¹¿ å·ŀ\nçĽ´ æĴŃ\nä»İ èĢĮ\nè´· æ¬¾\nåı¬ å¼Ģ\næĶ¹ éĢł\näºº çĶŁ\nå±ķ ç¤º\næ¯ı å¹´\nå¥³ äºº\nçļĦ æĸ¹å¼ı\næķĪ çİĩ\nå±± ä¸ľ\næ¸ł éģĵ\nä¼¼ ä¹İ\næ¡Ī ä»¶\nåĪ© çĽĬ\nçľĭ çľĭ\nå¿ĥ éĩĮ\nç»´ æĬ¤\nå®Ŀ å®Ŀ\nç½ĳ ä¸Ĭ\nè®º åĿĽ\nå°± åı¯ä»¥\nä¸į è¶³\næģ¢ å¤į\nå¸ĥ å±Ģ\nè´¡ çĮ®\nä¸ĭ éĻį\næİĮ æı¡\nçļ® èĤ¤\nå·¥ åħ·\néĩį åºĨ\nåĵģ è´¨\næİ¨ åĩº\nçĶ· äºº\næī¿ æĭħ\nçªģ åĩº\nèĢĮ è¨Ģ\næ² Ł\nåįı è°ĥ\næĺ¯ ä»Ģä¹Ī\næ± ¤\næĴ ĳ\nçĭ¬ ç«ĭ\nçİ¯ èĬĤ\næī© å¤§\næ´ ª\næĿ °\nçĽ Ĳ\nä» ģ\næ¶ī åıĬ\nèĢģ äºº\nåį³ ä½¿\nåįĹ äº¬\néħį åĲĪ\né¬ ¼\nçĪ¶ äº²\nç½Ĺ æĸ¯\nå°ı åĮº\næķĻ æİĪ\nåĨ³ çŃĸ\né¢Ħ è®¡\næľ¬ äºº\nä¼ ¯\nç« ¹\nåĪ° åºķ\nå¸Ĥ æ°ĳ\nåĩº åı£\néĩĩ è´Ń\næĢ» ç»ĵ\næŃ¦ æ±ī\nåĬł å¤§\nå¹¿ ä¸ľ\næµģ ç¨ĭ\näºº åı£\nå¦Ĥæŀľ ä½ł\nåĩº åİ»\nåĩ ī\nåĨľ æ°ĳ\nçİ° è±¡\nåĬĽ åº¦\nç»Ļ äºĪ\nåħļ å§Ķ\nè¯Ń è¨Ģ\nçº¿ ä¸Ĭ\næĢİ æł·\nåĦ¿ åŃĲ\nç¡® å®ŀ\nä¹ĭ å¤ĸ\néĥ½ åľ¨\nèī ¾\nçļĦ æĥħåĨµ\néĩĮ çļĦ\nåĽ´ ç»ķ\næĽ´å¤ļ çļĦ\nä¾Ŀ æ³ķ\nåħ¬ åĽŃ\nå®¶ éĩĮ\næ¯į äº²\nä¸į åĨį\nèĭ ¹\næ³ķ éĻ¢\néŁ© åĽ½\nçĽ¸ å½ĵ\nä¸į çŁ¥\nè¯Ħ ä¼°\nä¸į çĶ¨\né¡º åĪ©\néĩį è§Ĩ\nè´¢ åĬ¡\nä»ĸ åĢĳ\nåıĳ è¡Į\nä¸ĵ éĹ¨\nåħ· å¤ĩ\nå¹¶ ä¸įæĺ¯\nè¶³ çĲĥ\né ŀĭ\nåıĳ è¡¨\næ°¸ è¿ľ\nèĲ¥ åħ»\néħį å¥Ĺ\næķ´ åĲĪ\nè´ º\nåĽŀ çŃĶ\næĶ¶ çĽĬ\nä¹Ł è®¸\nè» Ĭ\næİ¥ è§¦\næĶ» åĩ»\nåĽĽ å·Ŀ\næĢ§ èĥ½\nåĽŀ åĪ°\nèħ °\nä¹Ł æ²¡æľī\nå¼ Ħ\nè®¾ ç«ĭ\néĺ² æİ§\næĬĢ å·§\néĢļ å¸¸\nè´¢ æĶ¿\néĥ¨ ç½²\nåľº æĻ¯\næ±Ł èĭı\nè¡¨ è¾¾\nåĸ ·\nå¥³ åĦ¿\nèĪ ¶\nçµ ¦\nä¼ļ åĳĺ\næĪĸ è®¸\näº ©\nä¸ľ æĸ¹\nå¤© æ´¥\nè¿ĳ å¹´\nçľĭ æĿ¥\næ¯Ķ ä¾ĭ\nå² ©\néĵ ľ\nçİ »\nå®ŀ éªĮ\næĢĿ ç»´\næĭħ å¿ĥ\næ² Ī\nèº« è¾¹\næ·± åĮĸ\nç²¾ åĩĨ\nç§ģ æľį\næ¶Ī éĺ²\nåİ» äºĨ\nç»Ĩ èĥŀ\nçĲĥ éĺŁ\næĺİ æĺŁ\né£Ł çī©\nå¾Ī å¿«\nè®© ä½ł\nä¿¡ çĶ¨\nåĶ¯ ä¸Ģ\nåħ¶ å®ĥ\nçŃī æĸ¹éĿ¢\nå¾ĭ å¸Ī\næŃ» äº¡\næ Ł³\nä¸Ģ æī¹\nä¸Ĭ æ¶¨\næľº åľº\nå½¢ åĬ¿\næĦ¿ æĦı\néĽĨ ä½ĵ\næĸ° åŀĭ\næįŁ å¤±\næĽ ¸\nä¸ĭ åįĪ\næ¯ı æ¬¡\næĪĲ å°±\nåħ¬ è·¯\nèĻ «\nåĴ ±\nè¥¿ å®ī\næľĢ ä½³\nç§ĳ çłĶ\nå¤į æĿĤ\næľº åĻ¨\nçĪ± æĥħ\nçħ§ çīĩ\nå¹´ é¾Ħ\nè³ĩ æĸĻ\nç² Ĺ\nåĩĨ ç¡®\nåĬł ä¸Ĭ\nåĩº çīĪ\nè° Ĳ\nå®¶ å±ħ\nèĥĮ æĻ¯\nä¸Ģ çº¿\näºĭ é¡¹\nåĬ¨ ä½ľ\nç¥ ¥\næĢ» ä½ĵ\næĪ¿ åŃĲ\nä¹Ł å°±æĺ¯\nå¤§ æ¦Ĥ\né«ĺ æķĪ\nåĲ ¹\næİ ĪæĿĥ\néĻĦ è¿ĳ\næ¡Ī ä¾ĭ\néĹ ¹\nçĪ¸ çĪ¸\nå½© ç¥¨\næĢ Ĵ\nä¸¾ æĬ¥\næĻ® éģį\nçķĻ ä¸ĭ\nè¡£ æľį\næĹłè®º æĺ¯\nåħħ æ»¡\næ·± åº¦\næ¡ ĳ\næĪª èĩ³\nå¸¦æĿ¥ çļĦ\néĻ µ\næĦŁ æĥħ\nèµ ļ\nåĵª äºĽ\næķ´ æĶ¹\næĪĲ çĨŁ\nå¨ ľ\né¼ »\nçŁ Ľ\nçĽ ¾\nå¥½ å¥½\nç¬¬ åĽĽ\nåĨł åĨĽ\nè´¢ å¯Į\næľĢ å¥½çļĦ\nè½¦ åŀĭ\néĸ Ģ\nåį³ å°Ĩ\nåĪĨ ä¸º\néĿĴ å²Ľ\nçº· çº·\nä»Ĭ æĹ¥\nå¹³ è¡¡\nå¹³æĸ¹ ç±³\néĤ£ ç§į\nåĩº çĶŁ\néĿĴ æĺ¥\näºº ç¾¤\näºº å·¥\nä¹ĭ ä¸ĭ\næ¹ĸ åĮĹ\nåľ¨ æŃ¤\nåįļ å£«\næĹ¶ åĪ»\næ²³ åĮĹ\næĶ¾ å¼ĥ\néĢļ éģĵ\næ£® æŀĹ\nçĸ Ĩ\næķ ¸\nèĬ ³\næīĵ åĩ»\næĽ ¹\nåĮĸ åŃ¦\næĥ³ è±¡\nä¸ĩ äºº\nè´¢ ç»ı\nåħĥ ç´ł\nä¼ļ è®¡\nåħ¨ ä½ĵ\næĦ Ľ\né«ĺ ä¸Ń\næľº éģĩ\nå£° éŁ³\næĹħ è¡Į\næµ ©\næŁ ±\nå°ĳ å¹´\nåĽ½ å¤ĸ\nèĳĹ åĲį\nçĶŁ åŃĺ\nå§ ľ\nå¸¦ é¢Ĩ\né¢ľ èī²\nä¸Ĭ ä¸ĭ\näº§ä¸ļ éĵ¾\næĽ´ å¥½çļĦ\nå² Ń\nä¼ĺ æĥł\nä¾¿ æĺ¯\nåħ§ å®¹\nä¸Ģ åıª\nçĲ ´\næ¢¦ æĥ³\nç§Ł èµģ\nå¼Ģ åĲ¯\nè´Ń çī©\nåĮħ åĲ«\nåĪ© çİĩ\nèµ· äºĨ\næľī åĬĽ\néĤ£ éĩĮ\nå®¡ æī¹\nå¯¹ æīĭ\nçİ° éĩĳ\nå¤© çĦ¶\nçĽ Ĵ\nçĪ ½\nå¿ħ çĦ¶\nåĮĸ å·¥\nä¸ĵ åĪ©\nåķ ¡\nå¼Ģ å¿ĥ\näºº ä½ĵ\néģĵ å£«\næĢģ åº¦\nç©º è°ĥ\næĭĽ åķĨ\nå§ »\nç¬¬ äºĶ\næ£ Ĵ\nä¸Ģ ç³»åĪĹ\nåį± æľº\nè½¬ åıĺ\nåľº æīĢ\né¸ £\næĪ¿ éĹ´\néĢ ¼\nè¯ķ çĤ¹\nå¯¹ å¤ĸ\nåĩº åı°\nåľ¨ è¿Ļ\nåİĤ å®¶\nå·¨ å¤§\nç®Ģ ä»ĭ\nçľĭ äºĨ\nåħļ å»º\næĮĩ æĮ¥\nçŁ³ æ²¹\nä¸į åı¯èĥ½\nèİ ²\nä¸į å¤ª\nåĪĽ æĦı\nç¬¬ ä¸Ģä¸ª\nè´µ å·ŀ\nè¿ĩ äºĨ\næľ¬ æĿ¥\néģĵ å¾·\nçŃĶ æ¡Ī\néĻ ¶\nä¸Ģ è·¯\nèĤ ĸ\næ¸ħ æ´ģ\næľī æľº\nåĲį åįķ\næĿ ±\nåĳ¼ åĲ¸\nä¸ Ī\nç¦ı å»º\nè¯ķ éªĮ\nå¼ķ åıĳ\nä¹Ł æ²¡\nä¸į ä½ı\nçĨŁ æĤī\nèĲ ¬\nä¸į èī¯\nçł ĸ\nèĩ´ åĬĽ\nçŃ¾ è®¢\nåĲ Ĭ\nä¾ ¯\nçĺ ¦\nå§ĳ å¨ĺ\næĸ ¤\nå¦» åŃĲ\næĺ¥ èĬĤ\nçĪ ¬\næĽ Ŀ\nçĥŃ æĥħ\néķ¿ æ²Ļ\nèĲ¥ éĢł\néħ ·\néĵ Ŀ\nåŁºæľ¬ ä¸Ĭ\nåĳ¨ åĽ´\nä»Ģ éº¼\nè®¤ åı¯\nåĪĨ åŃĲ\nä¸Ģ æĸ¹éĿ¢\nè½ ´\nå¼ ·\né©¬ ä¸Ĭ\néĽ ¾\nèĩ £\nå° ¿\nçĶŁ æĦı\nå®ī å¾½\nç¥ŀ ç»ı\nåĩº å¸Ń\nèį¯ åĵģ\nçĲĨ çĶ±\nåįı åĲĮ\næµģ åĬ¨\nåıĳ åĬ¨\nåĿļ å®ļ\nè¡¨ æĺİ\nåĲİ éĿ¢\nä¹ī åĬ¡\nå¦ ĸ\næľī åı¯èĥ½\nå¹´è½» äºº\nå¤§ éĻĨ\nå² ³\nä¸į èµ·\nçŀ¬ éĹ´\nä¸įå¾Ĺ ä¸į\nçŃ¾ çº¦\nåĲĪ æł¼\nåħļ æĶ¯éĥ¨\næµİ åįĹ\nä¾¿ åĪ©\néļı æĹ¶\nå¥ ī\nç§° ä¸º\näº§ æĿĥ\nåĲ ķ\nçĽ Ĩ\nè¯¾ åłĤ\nç· ļ\næ£ ī\nçº¿ ä¸ĭ\nèĩª è¡Į\nä¸¾ æİª\nåİ¦ éĹ¨\nèĩª ä¿¡\nå½± è§Ĩ\nä» Ķ\nçĶŁæ´» ä¸Ń\næĿĥ çĽĬ\nçĻ½ èī²\nå°± ä¸į\nè¿Ľ å±ķ\næ¯ı æĹ¥\nä¾Ľ ç»Ļ\næĿĥ åĪ©\næĹł æķ°\nçĲĨ è´¢\nä¾Ŀ æĹ§\nä¸Ĭ åįĪ\nè¯Ĩ åĪ«\nçĽĪ åĪ©\nçł Ĥ\nè®¸ åı¯\nåĲĮ äºĭ\nåĺ Ľ\néģ ¸\nçĿĢ åĬĽ\néĹ¨ åı£\nä¸į å¤ļ\nåħ¶ æ¬¡\nç¢ §\nçī© çĲĨ\nåĨħ å¿ĥ\nçĻ¾ å§ĵ\næĢ» ç»Ł\nå¹² åĩĢ\nç§¯ ç´¯\nåıį é¦Ī\næłĳ ç«ĭ\nç¤¾ äº¤\nç§ ©\nåįģ ä¸Ģ\néĤ ĵ\né©± åĬ¨\nå±ķ è§Ī\nèĪĴ éĢĤ\nåŁº åĽł\nå·® å¼Ĥ\nè½¬ è®©\nå°ı å§Ĳ\næł· åŃĲ\nç¿ Ķ\né«ĺ åħ´\nå½±åĵį åĬĽ\næīĭ ç»Ń\nçĽ¸ åĲĮ\nçĽ¸ åºĶ\næĻ Ĵ\nè§ Ģ\nå¸Ĥ å§Ķ\nèĬ ¯\nå±ķ çİ°\nåľ° çĲĥ\néĤ ª\nä¸Ģå®ļ çļĦ\nåħģ è®¸\nä¿¡ ä»»\næī ĳ\néĻ¢ æł¡\nç®Ģ ç§°\nåģļ æ³ķ\nä¹ĭ è·¯\næĹĹ ä¸ĭ\nèħ Ķ\næ¶Ī å¤±\nä¸ĸçķĮ ä¸Ĭ\nåŁİ ä¹¡\nèĪŀ åı°\nå¾Ī å¤§çļĦ\nç»Ł çŃ¹\nåħ¬ å¹³\nèĤ ¾\nçļĦ å¥½\næ± ģ\nçľ¼ åīį\néĽ £\nå¹ ½\nåħ± äº§\nä¸» åĬŀ\nå¤Ħ ç½ļ\nåº Ļ\néģĵ çĲĨ\nå¼ µ\næİ¥ çĿĢ\nçĮ İ\nçģ Į\nçĶ± æŃ¤\näºº åĬĽ\næµģ è¡Į\nä¾ ł\nåı¯ä»¥ è¯´\nèĴ ĭ\nå½¢ æĢģ\næĹ¥ åŃĲ\næ¼ Ĩ\nçķĻ åŃ¦\nçĽ¸ éĹľ\næľĢ å¤ļ\nåĩŃ åĢŁ\nåħ¬ äº¤\næĮĸ æİĺ\næĿĤ å¿Ĺ\nä¸» äºº\néļľ ç¢į\næł¡ éķ¿\næĸ¹ ä½į\nä¸Ĭ çıŃ\nå¤ļ åħĥ\nè ĥģ\néŃħ åĬĽ\nèĮ Ĥ\nåħħ çĶµ\nå¼º å¤§\nçĥ ¤\nå¥ĭ æĸĹ\nå®ŀ çĶ¨\néĺ ģ\nç»Ļ äºĨ\næľ¬ ç§ĳ\næł ĭ\næĭ ¨\næķĻ ç»ĥ\néĥ½ çŁ¥éģĵ\næ¯ķä¸ļ çĶŁ\nç¢ Ĺ\nåŀ Ĥ\nè® ¼\nå®ģ æ³¢\nåŃ¦ èĢħ\nè°¢ è°¢\nåŁİ éķĩ\næĢİä¹Ī åĬŀ\néģ Ķ\næĪĲ äº¤\næ½ľ åĬĽ\nåį §\næĸ° å¼Ģ\néħį å¤ĩ\nä¸» åĬĽ\nåĳ³ éģĵ\nçĥ Ĥ\né£ŀ è¡Į\nå« ģ\nå¤§ å¤§\nç»Ļ å¤§å®¶\nå¤ĸ éĿ¢\néĨ ī\nåıĳ è¨Ģ\næĹ© é¤Ĳ\nåĲĦ èĩª\nå® Ļ\nèį£ èªī\næĬ« éľ²\né¡ ŀ\nåĨħ çļĦ\nèĤ ª\nè¾ Ĳ\næ³ µ\næĬ Ľ\næĺŁ æľŁ\nä¸Ģ å¸¦\nçĶŁ ç´ł\nç»ı éĶĢ\nåĩ ¶\nåľ° ä¸Ĭ\nåĳ½ è¿Ĳ\nåĵ ²\nä¸Ĭ åİ»\næĸĩ çī©\nè¯ ĳ\næĮ¯ åħ´\néķ¿ æĹ¶éĹ´\nç¥ Ń\nåĲĪ èĤ¥\nè¿Ŀ è§Ħ\nèģ ª\nä½İ äºİ\néĢĤ å½ĵ\næľī åºı\næľ¬ ç½ĳ\nçķĻ è¨Ģ\næĥ³ æ³ķ\nçŃ¾ ç½²\nå§ ļ\næĢ§ æł¼\nèĴĻ åı¤\næŁ ı\nåŀ «\nåŃ¦ åİĨ\nä»ħ ä»ħ\nè®² è¯Ŀ\néĶ Ĳ\næĢ ĸ\nåī ª\nèĭ į\nåĲ ĵ\nå¼º çĥĪ\nåģ¥ åħ¨\nçĸ ¯\nåı¤ ä»£\nå¥ Ī\nä¸į çĦ¶\nä¹¡ éķĩ\næľĭåıĭ ä»¬\nåĤ ħ\nèģ ½\nä¸ª æĢ§\næ³ķ è§Ħ\nå°ı éķĩ\nçĶ» éĿ¢\nç¬¬ åħŃ\nç¶² è·¯\nåīį æĻ¯\nåĲ¬ è¯´\nä¼ł åªĴ\næĿ¡ ä¾ĭ\nåĪ« çļĦ\nä¸į æĩĤ\né¡¾ éĹ®\nå¼º åº¦\néĺ¿ éĩĮ\nèµ° åĬ¿\nå¸ ½\nçļĦ ç¡®\nåĮº åĪ«\néĮ ¢\nä¸» ç®¡\nä¸Ģ çľĭ\næĸ ľ\nåŃĺåľ¨ çļĦ\nä» ²\nåį± å®³\néĵ Ń\næ¸¸æĪı ä¸Ń\néħ ±\né¾Ļ å¤´\näºº å¿ĥ\néĢĢ ä¼ĳ\næµı è§Ī\nåĬ «\néĺ² æ²»\nç® Ń\nå± Ī\nè¾½ å®ģ\nå£ ¤\nè¿İ æĿ¥\néŀ į\nçĶ¨ æĿ¥\nå¤§ åľ°\nä» °\néĢļ è®¯\nå¼Ģ å·¥\nè£ ¤\nå¦Ĥ åĲĮ\néª ¤\néĺŁ åĳĺ\nè½ ©\nç¾İ æľ¯\nèĻ Ł\nåĲĮ ä¸Ģ\nåľ ĸ\nä¹¦ æ³ķ\næīĵ åį°\nåĲ« æľī\néĽĨ æĪĲ\néĹ ·\nå¸Ĥåľº ä¸Ĭ\næĹģ è¾¹\nåľ° æĿ¿\näº§çĶŁ çļĦ\nç² ¤\néĩį ç»Ħ\nè¡Ģ æ¶²\nçŃ ĭ\nåĬŀ äºĭ\nå¸¸è§ģ çļĦ\nä¸Ĭ åįĬå¹´\nå±ı å¹ķ\nåĲī æŀĹ\nå· ©\nåĸľ çĪ±\nç¿ ł\nä¸ī ç§į\næ¡Ĩ æŀ¶\nä¸ľ èİŀ\nçĶĺ èĤĥ\nèĬ ¬\nåĽ¾ ä¹¦\nåĩ¤ åĩ°\næ°Ķ åĢĻ\nå° ´\nå° ¬\nä¸¤ å¤©\nè¾ħ å¯¼\nåĢŁ æ¬¾\næĹ¥ èµ·\næ´ Ĵ\nä¸Ģ åº¦\nè¹ Ī\næ½ Ń\næī ĩ\nçĻ ľ\næĸ° åħ´\nåĤ ²\nè¯¸ å¤ļ\nè´ ª\néĻ· åħ¥\nèĪ Ł\nèĤº çĤİ\nä¸Ģ æł·çļĦ\nåİ ĺ\nåľ° çĲĨ\næĬķ æ³¨\néļ Ĭ\nåħī ä¼ı\nä¿Ŀ åģ¥\nåħ Ķ\nåħ¬ åĬ¡\næīĵ çł´\nçĶ· åŃ©\nåĬ³ åĬ¡\nä½ł ä¼ļ\nçĶ¨ åľ°\næº ¢\nåıĳ è¾¾\nèĤ ļ\nè¿ĩ äºİ\nèĩ Ĥ\néĢĻ æ¨£\nè½» è½»\nä¸Ń åħ±\nåĲĦ åĽ½\nåĶ ĩ\nå®ŀ ä¹ł\nèĻ ¾\næ§ ½\nä¸į ä¸Ĭ\nåħį çĸ«\nåįł æį®\nå·¥ ä¼ļ\nåĽ Ĭ\nèĪª å¤©\nåı¯ çĪ±\næĸĹ äºī\nçĺ ¤\nå¦Ĥ æľī\néĽ ĸ\nå¯¹ æĪĳ\nåĩº ç§Ł\nå¥½ çľĭ\nå¤ª å¤§\næ°´ åĪ©\nåĬ¿ åĬĽ\nåħ¨ æ°ĳ\nç½ ¢\nèµ¢ å¾Ĺ\nçĶµ ä¿¡\nè½¦ éĹ´\næĻĤ åĢĻ\nå°ĳ æķ°\néĵ ¸\nåħ³ èģĶ\nä¸įä»ħ ä»ħ\nä¸º æĤ¨\nåĴ ¸\næľº åĬ¨\nè£ Ļ\nåĵį åºĶ\néģ ł\nè² ·\nç© ´\nå¢ ħ\néĶ ¡\nçµ Ħ\nçģ« è½¦\nè³ĩ è¨Ĭ\nåĨ³ èµĽ\næ±¡ æ°´\nèª ŀ\nå´ Ľ\nç´§ å¯Ĩ\nç¼º å°ĳ\nå¤ļ äºº\næĢ» ä¹¦è®°\néĶ Ī\nèĳ Ľ\nå¿ĺ è®°\néĻĮ çĶŁ\néķ¿ å¤§\nåħĪè¿Ľ çļĦ\nç¡ ħ\nåıĳ æĺİ\nå©´ åĦ¿\næīİ å®ŀ\nèĽĭ çĻ½\nä¸Ģ çĻ¾\nçĽ® åħī\næ ħĮ\nåĬł æ²¹\nåĲ ŀ\nä¸Ģ ç¾¤\nä¸Ń ä»ĭ\nå¸ ĸ\nå¿ Į\nèģĮ èĥ½\nå¹¿ æĴŃ\nçĽĳ å¯Ł\nç§ĺ å¯Ĩ\nçĭ ®\nè¿Ļ æĿ¡\néĢ ¢\næĢ ¨\nåįģ åħŃ\nè© ¦\nè¯´ åĪ°\nåĩĿ èģļ\næĮĩ ç¤º\næ° ¢\nå¼ ĺ\néĺ Ģ\næĸ ©\néł ħ\nä¸Ģ å¼Ģå§ĭ\næİĴ è¡Į\nåľ¨ æĪĳ\nçºª å½ķ\næĬ Ħ\næł ª\nè¯´ æ³ķ\nä¸Ń èį¯\nå¥½ å¤ļ\nåıª ä¸įè¿ĩ\nçķĻ åľ¨\nä¸ª å°ıæĹ¶\nè®¤ çŁ¥\nçķ «\nè§ģ è¿ĩ\nå°ı å¾®\nä½Ľ å±±\nçľ ¾\nè®² è¿°\næ¢ ³\nç§° åı·\næĹ¥ æĻļ\nè¢ ĸ\nåķ ¤\næľª ç»ı\næľĢ æĹ©\næī® æ¼Ķ\nè¡Ģ ç®¡\nçº ±\næĥħ èĬĤ\nç¬¬ ä¸ĥ\næį §\nä» Ĺ\næ¿Ģ çĥĪ\næĹł çº¿\nä¸į å®¹æĺĵ\nå¼Ģ å¹ķ\næĸ° çĶŁ\nä¸ĵ æ³¨\nèĳ ±\nåįĹ æµ·\nçĩ Ł\nèµ· ä¾Ĩ\næ´¾ åĩº\nåĦ Ĵ\nä¾ ¨\nè¼ ĥ\nåįļ è§Ī\néĢ ¾\nåĮ Ģ\nç»ıæµİ åŃ¦\næ¸ Ĺ\nä¿Ŀ èŃ·\nçī º\nçī ²\nçİ «\nçĳ °\næľĢåĲİ ä¸Ģ\næĶ¿ åĬ¡\næ§ Ľ\nèĻķ çĲĨ\néļĲ æĤ£\næī¿ åĮħ\næ¥ µ\næ¡ ©\nçĽ ²\nå¯¼ åĲĳ\nèĩ´ å¯Į\nç¼ Ĩ\næģĭ çĪ±\nä¸į åĬ¨\nç»Ļ äºº\nå· ¢\nè¡¨ æĥħ\nä¸ľ åįĹ\nåĨħ å¤ĸ\nè¾Ī åŃĲ\nåı ī\nåįļ ä¼ļ\nåĬŁ æķĪ\næ¸ ´\nå± ¬\næİĴ éĻ¤\néĢ Ľ\nä¸Ģ ä¼ļ\nä¸į å¼Ģ\nå¼Ģ å¥ĸ\né»ĳ é¾Ļ\né»ĳé¾Ļ æ±Ł\nå¿« ä¸ī\nåº¦ åģĩ\nåĿ ¤\néĤ® ä»¶\næĩ Ĵ\nä¾Ľ çĶµ\nå» £\nå¥½ è¯Ħ\nç§ĺä¹¦ éķ¿\næĪĺ åľº\nå¥½ å¥ĩ\nä¾µ æĿĥ\næĨ ¾\næľĢ åĪĿ\næī¹ åıĳ\nåİ ķ\nè¼ ķ\næŀ ¯\nä¸ļ åĨħ\nè´Ń æĪ¿\nä¸į åľ¨\nçºª å§Ķ\næīĢ éľĢ\nå¸Ĥ éķ¿\nè³ ½\nå¼ķ æĵİ\nçģµ éŃĤ\néĬ Ģ\næ» ¤\nçĿ Ĳ\nå¤ļ é¡¹\nåĽŀ å¤´\nèī ĺ\nå¤į å·¥\néĥ¨ ä»¶\nç´§ ç´§\næŁĲ ç§į\nä½¿ åħ¶\næĸ° äºº\næŀ ļ\næ³ķ å®ļ\nå·´ å·´\næ¶µ çĽĸ\nç¨ »\næĭ ¾\næĻ ķ\nè½ ¿\néĢļ è¡Į\nåĵ Ģ\næ³ Ĭ\næ¸© é¦¨\néĽĨ èģļ\nçĨ Ļ\nåĩ ĳ\nåįģ ä¸ĥ\næ°Ķ æģ¯\næıĲä¾Ľ çļĦ\næ³ ³\nå¥¥ è¿Ĳ\nçģ¾ å®³\nåĩĢ åĮĸ\nè·¨ è¶Ĭ\nåĵª æĢķ\néŁ ¿\nå¢ŀ æ·»\nçĦ Ĭ\næ®ĭ çĸ¾\nç¢ Į\næĤ Ķ\nè§ģ è¯ģ\nè¾ĸ åĮº\nå¿ĥ èĦı\néļ §\nåį ¸\nåı¯èĥ½ æĢ§\næľī è¶£\nåī¯ ä¹¦è®°\nåĮĸ å¦Ĩ\nä¿ Ĥ\næ£ ļ\néĨ ĩ\nå¸¦ å¤´\néł Ī\nè¿½ ç©¶\næĳ Ķ\nè¿Ļ éĥ¨\nä¸į è®º\nç¥ ¸\nå ³»\néģ ķ\nçĶŁ èĤ²\nå¤ ł\nå¤ĸ äº¤\nè¯Ħ ä¸º\nä»İ å°ı\nå°ı å°ı\né ¥¿\næĴ ¼\nè·¨ å¢ĥ\nè¢« åĳĬ\nåįĹ å®ģ\nèº« å¿ĥ\nåĨį çĶŁ\næīĢ è¯´\næĹ¶éĹ´ åĨħ\nåĪĹ åħ¥\néĿĴ æµ·\nçĪ± å¥½\nçª Ħ\nèĪ Ī\nè¿ĩ æ¸¡\næ¿ Ł\néĽ Ģ\nå®¡ è®®\nåĽ½ èµĦ\næŃ¥ ä¼Ĳ\nè½¨ éģĵ\nä¿¡ å¿µ\nä¸ī åĪĨ\nçĨ ¬\nåŃµ åĮĸ\nç¼ ł\néĥ Ĭ\nèĪĴ æľį\nçºª æ£Ģ\nä¸Ģä¸ĭ åŃĲ\néĽ» è©±\nè² ł\néĴ ¥\nåĮ Ļ\nçĹ ´\nè¶ ģ\nç» £\nçĪ µ\nè½ °\néª Ħ\nå§ ¨\næĭ ĺ\nçĮ ´\nè® ¶\nè¿Ļ åº§\nçį ¨\næ·ĺ æ±°\nçĹħ ä¾ĭ\næ²Ļ åıĳ\nè§Ĩ ä¸º\nå¤´ æĿ¡\nå¿ħè¦ģ çļĦ\nåı¯ è°ĵ\nè¯Ŀ è¯´\nç¯ Ħ\næĹ© çĤ¹\næŀ¢ çº½\nç¾ ¡\nçĪ± åĽ½\nçªģ åıĳ\néĢ Ĭ\næ½ į\nèį£ èĢĢ\nèŁ ¹\næ¦Ĥ çİĩ\nå¾Ī ä¹ħ\næĥ ķ\nè¨ ´\nåľĨ æ»¡\nçļ ±\nåĪĨ æ³Į\nåħħ è¶³\nçľĭ æ³ķ\nè¾ Ł\næĭ ¦\næĭ ©\nå¯¹ åºĶ\nä¸º æł¸å¿ĥ\nèħ Ĭ\nå¤ļ ä¹Ī\næµ ĳ\nå®ı è§Ĥ\nèĦ ĸ\nåĲĪ èµĦ\nçĶŁ æ¶¯\nå®ŀ è´¨\nä¼ĺ çĤ¹\nçĶ¨ æ°´\nå¯¿ åĳ½\næ² «\nåĲ ģ\nè© ¹\nåĽ½ éĺ²\nå´ ©\nåĿ İ\nèĨ ı\nä¸Ģ è½®\néģĹ äº§\næ¹¾ åĮº\nç» İ\nåįķ çº¯\næ¾ Ħ\nåīį åĪĹ\nèº« å½±\né»ĺ é»ĺ\næį ī\nçĴ °\nèı Ĭ\næĢ ľ\nåħĭ æĢĿ\næĢ» å±Ģ\nçĩĥ æĸĻ\nä¸ļ æĢģ\nåĲĦ æł·\nåĴ ½\nåĩº èī²\nåĪĿ å¿ĥ\nåı Ľ\nçłĶ è®¨\nè¡ «\nåİĨ ç¨ĭ\nç¦ ½\nè¶³å¤Ł çļĦ\nèį Ĩ\nçľĭ å¾ħ\nè´ ©\nåĨ³ å¿ĥ\nè£ ¹\nå¸Ī èĮĥ\nåŀ Ħ\næĿ ł\nåĩ ¸\nçĬ¹ è±«\nçĥŃ è¡Ģ\nåĲĪ ä¼Ļ\néħ µ\nèĲ½ åľ¨\nåįł åľ°\nè¡ ¬\nèĵ ī\næĦ ¤\næ¸ Ĭ\nåĪĨ æķ°\nç¬ĳ çĿĢ\nå¤ª å¹³\nçĤ «\næİ¨ ä»ĭ\næĸ¯ åĿ¦\nå½¢ å®¹\næĵ Ĭ\næĦŁ åħ´è¶£\nåĨĽ äºº\nåĩĮ æĻ¨\nå¯¹ çħ§\nåıĳ çĹħ\nå· ¾\nèĪ ī\næª ¢\nç¬ĳ äºĨ\nç¡® è¯Ĭ\nè´Ł åĢº\nå£® å¤§\næĪ ļ\näºĴ èģĶ\nèª ²\nèħ ¦\næĹ ±\nåıĹ æ¬¢è¿İ\nåį ī\néĻ¢ å£«\næ© ¡\nä¸Ģ å¯¹\nè¾ ±\næ² Ĥ\nåı² ä¸Ĭ\næĲ ı\nå´ ĸ\nä»£ è°¢\nç£ ·\né¡ ĺ\næµ ĩ\nå¸¸ çĶ¨\nåį ĳ\nåĩº åĽ½\nè¯ ł\nç¨³ æŃ¥\nç»ı çºª\nå¤ļ å¤ļ\næīĢ å¾Ĺ\nä¸º ä¸»é¢ĺ\nä¸Ģ åĪĨ\næł ½\né¡ §\nçº ²\nåĥ ħ\nå£ ĵ\nåĦ ª\nç¿ °\næİ Ģ\näºº ä¸º\nåª ³\næ´ ½\nèĿ ¶\nå¤į åħ´\nä¼ļ å½±åĵį\nåĲĦ çķĮ\néĤ£ ä¸Ģ\né¢ ¤\nçĢ ı\nçĢı è¦½\nå¯ ŀ\nåı¯ æĢķ\nåį³ æĹ¶\nçķ ´\nä¸ĭ åįĬå¹´\nç¬Ķ è®°\néĻĦ åĬł\nçĥŃ æ°´\nå¥ ¸\nç£ ħ\næĿ ī\næ¸ħ åįİ\néĸ ±\nç° ¡\nå¤Ħ å¤Ħ\nåĲĪ éĩĳ\næ²³ æµģ\nç´ °\nè´Ł éĿ¢\nçļĦ çľŁå®ŀ\nåĻ¨ æ¢°\nèĴ Ĳ\nè¥¿ äºļ\nå· ħ\nç² ¹\nåİŁ æĸĩ\næŀ ķ\nè¡Ģ åİĭ\nåļ ´\nå¸ ĺ\nåĨ Ģ\næĮ «\nçĶµ è·¯\nå°ı ä¼Ļä¼´\nèĿ ´\næľĢ å¿«\næĭ Į\nå® ª\næĸ ·\nç¿ ħ\nåĴ ³\nåĹ ½\nç¾ ŀ\nèºº åľ¨\nèµĽ è½¦\næ² Ĳ\néĻĲ åº¦\nä¸º ä¸Ģä½ĵ\nèĴ ľ\nå¹ «\næĲ ħ\nåĭ ĭ\nåī ĸ\nçº³ ç¨İ\néķ¿ æķĪ\nç½ ķ\nåī¯ æľ¬\nç© į\néĴ ©\nç¹ ¼\nåĽ½ åľŁ\nè¼ ī\nä¸į å¿ĺ\nèŃ¦ ç¤º\nçģ ¿\nå¿ĥ å¾Ĺ\næĦ ļ\nå¿½ çķ¥\nåĽŀ äºĭ\nåįł æľī\næ· Ħ\nçī ¡\nçĽĳ äºĭ\nç¿ ¡\néĴĪå¯¹ æĢ§\nçª ĥ\nè£ ½\nèĨ Ŀ\nç³ Ł\næ¸¯ æ¾³\nå¤ª å¤ª\næ¾ ¡\nç»Ĩ åĮĸ\nåĶ® åĲİ\nå®ŀåľ¨ æĺ¯\nç« £\nçį ²\nåĢ¾ åĲĳ\nå¼ķ çĶ¨\né¹ ħ\nç¬ĳ å®¹\nä¹Ĳ è¶£\næ°ĳ æĶ¿\néĹ¨ æĪ·\nå± ģ\nè¿· å¤±\néĶ Į\nå°ı åº·\nåĭ ī\næ³ ¼\nä¾ĭ åŃĲ\nä¸ī ä½į\nå» ł\nèĶ ĵ\nå¹¿ éĺĶ\nèĢ į\nèĢģ èĻİ\nåĭŁ éĽĨ\nèĦļ æŃ¥\næĭ ¯\nåŃĹ åı·\nçĦ °\né¢ ł\nèļ Ĥ\nèļ ģ\né£ ¯\näºº æĢ§\næĴ °\nåİ ¢\nå±Ģ éĻĲ\næľª æĪĲ\nåĵª åĦ¿\nå¤§ åıĳ\nä¸į å®ļ\nå¾ģ æ±Ĥ\néĥ µ\nåĢº æĿĥ\nçĪ± ä½ł\nèº ģ\nä»ħ ä¾Ľ\nè¿ľ å¤Ħ\néĨ Ľ\nåĥ µ\nç§¯æŀģ æĢ§\næİ ¡\nåīį ä¸ī\näºİ ä¸Ģä½ĵ\nçŀ Ħ\nçĿ ģ\næ² ¸\nåħ± èµ¢\néĢĢ å½¹\nè´Ŀ å°Ķ\næİ ı\næĪ ²\nè¡ į\néĶ Ĥ\nä¸ĩ ä½Ļ\nç§ĳ åĪĽ\næ¼Ķ åĶ±\næ¬§ åħĥ\næ·¡ æ·¡\néĿĴ å±±\nèĹ Ŀ\nç» ½\nä»¤ çīĮ\néĽĨ ç¾¤\nä½ľ çī©\nçĢ ĳ\nå¤ ¯\nç½ĳ æ¸¸\nåħ« å¤§\néª ļ\nèª ĵ\nä¼ļ å±ķ\nåħļ åı²\næ£Ģå¯Ł éĻ¢\nåĸ ĺ\néĺ ±\nèĢĮ åĩº\néĢļ è½¦\néĴ ĵ\næĥħ äºº\næ¸ Ľ\nä¸Ń ç§ĭ\nçĪ Ń\nåıª åī©\næĺ Ķ\néĩİ çĶŁ\nç¡ «\nèĲĿ åįľ\næĬµ æĬĹ\nçĻ« çĹ«\néĻ Ģ\nèĶ ļ\nå¸ ľ\næ»¡ æ»¡\nèı ±\néļĨ éĩį\næĺŁ çº§\næ½ ĩ\nåħ¬ åħĥ\nè° £\næ¯Ķ äºļ\næ¡Į åŃĲ\nèµ £\nè² ¼\næĦ¿ æľĽ\né¡ ½\næ´¾ éģ£\nç¥ Ľ\nåª ļ\néĺ ľ\nèĳ «\nèĬ ¦\næ³ »\nå¡ Į\nçĭ Ń\nå»ī æĶ¿\nå¥ĳ æľº\næĹĹ èĪ°\næĥ «\nä¸¥ åİī\nåıĭ æĥħ\nå¦ Ĭ\nå¨ ł\nåĵª å®¶\nèĨ ¨\nè¶ Ł\næĮ ª\nèĻ Ĳ\né łģ\nçŀ ©\néº Ł\nç¨ £\nèģĶ éĢļ\nåı ®\nçİĭ èĢħ\nä¸į ç¡®å®ļ\nç ĳľ\nè° İ\nçī¢ è®°\nç¢ ¼\næĬ¤ èĤ¤\né¡ ·\nçĦ ķ\nåģļ å¼º\néļ± ç§ģ\néļ±ç§ģ æ¬Ĭ\nåıĹ å®³\nä¸į çĶ±\nçĥ ¹\né¥ ª\né© ³\nä¼ ½\nä¸Ŀ ç»¸\nè¥ Ħ\nåįģ ä½Ļ\néº Ĺ\næ¬Ĭ åĪ©\nèģ ŀ\nåı¤ èĢģ\néģ ı\nåĲĦ å¼ı\nå°± è¡Į\nåħ¥ å¢ĥ\nç ĥģ\nèľ ĺ\nèĽ Ľ\nçº ¬\nçŁ «\nè» Ł\næ´Ĺ è¡£\næĦ §\né¢Ħ æ¡Ī\néľ Ĩ\næ·± åİļ\néĺ¿ æĭī\nåĨĻ åŃĹ\nåį ¦\néķ Ģ\næ¨¡ æł·\nåĤ į\næĲ į\nèĸ ¯\nåł ħ\nåħ¬ ç§¯\nè¨ İ\nä¼ł æŁĵ\næ¯ ¯\nçĲĨ å·¥\nåĨ· éĵ¾\nç«ĭ æĸ¹\næ¢ Ń\nåľ£ è¯ŀ\nç»¼ èīº\nçİ© ç¬ĳ\næĥ³ ä¸įåĪ°\næĳĩ å¤´\næ· ¹\nåģĩ æĹ¥\nåĢ ĺ\nèĢ ½\nèİ ĵ\nåŁ ·\nèĩª è´¸\nåįĬ å¤©\næª Ķ\næ¾İ æ¹ĥ\néķ ĳ\nä¸ «\néĩĮ ç¨ĭ\nå¼Ģ èįĴ\nèı ı\nå®Ŀ è´µ\nèŃ ¬\nåķ Ł\næŁ ł\næª ¬\né© Ń\næ± Ľ\nçĨĬ çĮ«\nèķ ī\néļı ä¹ĭ\nå± ĳ\nè¾ĥ å¼º\nèĥ ³\nèĨ Ĭ\néĿĻ éĿĻ\nåĴ ª\næĭĽ åĳ¼\nä»£ è¨Ģ\nä¿¡ ç®±\nè£ħ éħį\næĤ į\nåįķ è½¦\nèĲ İ\nå¤ļ å½©\néĻ ¸\nä»İ ä¸¥\næ© Ħ\næ¦ Ħ\néĢ ®\néĩĮ æĸ¯\nå§¿ æĢģ\nå¤ª æŀģ\néĩ Ŀ\næº ī\nè¿ Ń\nç§ ¸\nç§ Ĩ\nå·¥ å§Ķ\næ± ķ\nèģ Ĩ\nä½ ¬\nç¼ ħ\nçĶ ¸\nåī¯ å±Ģéķ¿\néĹ º\nèª ¤\nè¤ Ĳ\nä¸į éĻĲ\nèħ ķ\nåĳ ķ\nçŁ ¶\nåĨľ å®¶\nç®¡ å§Ķä¼ļ\né¥ º\nèĬ ľ\næ¾ Ī\nè© ¢\nå¨ģ å°¼æĸ¯\nä½ķ åĨµ\nå°ı ä¼Ļ\nå¥¢ ä¾Ī\nè¿Ļ ç¯ĩ\nè¯ µ\nç«ł ç¨ĭ\nç´ Ģ\néĲ ĺ\néĤ ¢\nç³ Ļ\nç¼ Ģ\nä¹ Ĵ\nä¹ ĵ\nçī¢ åĽº\nåĿ ŀ\nå¼ Ī\nä¾ĭ å¤ĸ\nå» ³\nè§Ħ ç«ł\nèĬ Ļ\nç¯ ·\nèº ¯\næł Ī\nåĿļ å®ŀ\nåŁº å»º\nçĿĢ çľ¼\nç· ´\nèĳ ©\nç¼ ļ\næ¦ Ĩ\nä¸» åĭķ\nç¥ Ģ\näºĴ éĢļ\nå°¤ ä¸º\nå® Ľ\néª ¼\næ± ²\nä¾ ĥ\næĤł ä¹ħ\næĳ §\næĭ ĩ\né« ĵ\néº Ĵ\néĻ Ľ\næŀ ¸\næĿ ŀ\nè´ ¬\nå°ı é¾Ļ\nåĵ ®\nèĵ¬ åĭĥ\nåĮ Ī\nçķľ çī§\nå¨ ©\nä¸ª å¤ļ\næ² ¥\næĺ §\nçĦ ļ\næĬĳ éĥģ\nçĸ ¡\nèĺ ĳ\néģİ ç¨ĭ\næ© ±\néĿ ĵ\nå¤§ çĲĨ\né« ¦\nåĪĨ è¾¨\næ¸ ¤\nçĸ ¤\nåĬ¨ èĥ½\nå¼ł å®¶\nä¸ĩ åįĥ\næ» ¥\né¥ ¥\nåºŁ å¼ĥ\nå¸ ³\næ¼ ³\nè± Ĳ\nä» ĳ\nå« ī\nå¦ Ĵ\nçŀ Ĵ\nè¡ ħ\nçĭ ¸\nå¾ģ ç¨ĭ\néĤ ¯\néĥ ¸\nç¥ Ī\nç¥ ·\nè¶ ´\nç»ĵæŀĦ æĢ§\nè§Ĩ åĲ¬\nè¬ Ŀ\nçĴ Ģ\nçĴ ¨\nåĩº å¤Ħ\nè¯ Ģ\nå¾ ĺ\nå¾ Ĭ\nçľ ¨\nåĸ ĩ\nåı Ń\nåĺ ²\nçķ ¸\nå¹² äºĭ\næļ §\næ² Ľ\nåĦ Ħ\nå» ĵ\nåİ¿ éķ¿\nèĥ ļ\nçĲ ¢\nçŃ ·\néĩ ĭ\nä¾ ®\nåĲ ©\nåĴ Ĳ\nåĮ ¿\næĬ¬ èµ·\næ³ £\næ¶ ¤\néº ½\næĽ Ļ\nåī¯ éĻ¢éķ¿\nåħļ åĴĮ\næķ£ åıĳ\næ¶¦ æ»ĳ\nåĵ º\næĥ ¬\næ¼« éķ¿\nä¸į æĩĪ\nåŁ ł\nåĹ ĵ\nèĢģ çĪ·\nè® ½\næĪĺ ç»ĦåĲĪ\næ£ ł\nåħ¨ åŁŁ\nèł ¢\nè¯ ¡\nåīį çŀ»\næķ Ľ\nä¸Ģ å°ģ\nå¹ Ĥ\nèİ Ĩ\nè¯Ŀ è¯Ń\nç»Ĩ åĪĻ\nå± ¿\nåµ Į\néĢ į\nåĺ ±\næ¸ ²\nçĥ ¯\nçĿ ¹\né¦ Ĵ\nèħ ¥\næĬĹ åĩ»\nçĿ «\nèį Ķ\néļ İ\næ³ī æ°´\nè¬ Ĥ\nç Ĥ¬\nåĩı æİĴ\nè¸ Ĭ\nè ·»\næ· Į\néľ ¾\nå¥ĩ çº³\nå¯ Ŀ\næ¤ İ\næŁ ¬\næĸ¯ åŁº\nåħ¬ ç«ĭ\nè¨ ĵ\né£ Ļ\né© ¿\nåĤ µ\nèĽ Ļ\nç¯ĩ ç«ł\nåĪĨ æĶ¯\nä¸Ĭ å¹´\nçŃ Ŀ\nç¼ ¤\nèĢģ æĹ§\nåĻ ¬\næľ ¦\nèĥ §\næ¶Ī è²»\næĵ Ķ\næ¦ ´\næ¿ Ĵ\nç³ ¯\næ³ ¸\næį Ĩ\nç» ļ\nèµ İ\nçĲ Ĳ\nèµ Ĥ\næħ ®\næ² Į\nçĦ Ļ\næĴŃ æĬ¥\næ· ĩ\nåĪĩ åħ¥\nçĳ ķ\nçĸ µ\néģ ´\nç¨ ļ\nç© ©\nèŀ ĥ\næ£ ķ\næĨ §\næĨ ¬\nä¼ º\næ¯ Ĺ\næį į\næĬ ī\nç´ Ĭ\nå¼ Ľ\næĭ Ń\næĹı èĩªæ²»\nåĿ ·\nç« ¶\nè© ³\nè¿Ħ ä»Ĭ\nè° ´\nçŀŃ è§£\næŁ ¿\né¢ Ĭ\nç° §\nçĥŁ èĬ±\nä¾ ¥\nçĿ ¦\néħ Ŀ\næ° ĵ\nçĲ ī\nå§ Ĭ\næ² ®\næħ ·\nèľ ķ\nçĳ ļ\néĩĩ çŁ¿\nåł °\nåºķ èķ´\nèĨ ³\nè¾ ķ\néŁ Ń\nåĴ Ļ\nç² ½\nåī Ķ\næ² ¦\nèĤ ´\néķ ¶\næĺ ¼\nè¾ Ĺ\nå© ª\nåĮ ®\næĸ ĵ\næ± ¶\néĥ ´\néł »\nçª Ĵ\nè¢ ±\nåĽ ±\nèĢ ĺ\nè ļĮ\nçĭ Ļ\nçĹ ¹\nç¥ ī\næı ®\næ· Ĩ\nç£ ĭ\néĺ ª\næ «\nã ¸\nĻ ¶\nã ĳ\nð£ ²\nä ¢\nã Ń\nð¬ ¨\nð¬ Ģ\nð¬ ®\nð¬ ¯\nð¬ ľ\nðª ¨\nð« Ĺ\nð¬ Ĭ\nð¬ ±\nð¬ Ł\nä İ\nð ¡\nä ĥ\nã ł\nð ©\nð© ¾\nð¬ º\nð¬ Ļ\nãĢ Ķ\nãĢ ķ\nçļĦ æĹ¶åĢĻ\næľīéĻĲ åħ¬åı¸\nä¹ĭ åĲİ\nä¸ļ åĬ¡\nåķ Ĭ\nèĻ½ çĦ¶\næĭ¥ æľī\näºĴ èģĶç½ĳ\néĤ£ äºĽ\nä½ł çļĦ\nåĨ³ å®ļ\néĻ¤ äºĨ\nåĽ¢ éĺŁ\nåı¯ æĺ¯\nä»¥ åĲİ\nç¤¾ åĮº\nçļĦ éĹ®é¢ĺ\nå¹¶ ä¸Ķ\næķĻ å¸Ī\nå°± ä¼ļ\nå¤©ç©º éĥ¨èĲ½\næľĢ ç»Ī\nå½ĵ çĦ¶\nä¹Ł æľī\nç¡® ä¿Ŀ\næĥ³ è¦ģ\nè´Ń ä¹°\näºº çļĦ\nåĲ ´\nçļĦ åıĳå±ķ\nä¸į çŁ¥éģĵ\nè½¯ ä»¶\næĪĳä»¬ çļĦ\nçĪ¶ æ¯į\nåī ĳ\nèĢĮ æĺ¯\nå®ī æİĴ\nåĲİ æĿ¥\nçļĦ åľ°æĸ¹\nèµ µ\nèĢĥ è¯ķ\nçªģ çĦ¶\nä¸Ģå®ļ è¦ģ\nåĪ¶ ä½ľ\nè¯Ħ ä»·\nåħį è´¹\nè´¹ çĶ¨\nç»Ł ä¸Ģ\nçĦ¶ èĢĮ\nè¿Ļ æ¬¡\néĿĴ å¹´\näºº ç±»\näº ¦\nè®© äºº\nè´Łè´£ äºº\néĩĩ åıĸ\nçļĦ äºĭæĥħ\nä¹Ł ä¼ļ\nè½¦ è¾Ĩ\næĽ´ æĺ¯\nå¼º åĮĸ\næĪĳ åĢĳ\nä»¥ åīį\nä¼ĺ åĮĸ\nå§Ķåĳĺ ä¼ļ\nåĽ° éļ¾\nå¹´ åº¦\nä½į äºİ\næĮĩ åĩº\nåĨį æ¬¡\nåĬŀ çĲĨ\næ¯ı ä¸ª\nå¯¹ æĸ¹\nè¿Ľè¡Į äºĨ\næľĢ é«ĺ\nè¯¾ ç¨ĭ\nèº« ä¸Ĭ\næĽ¾ ç»ı\nåĮ» çĶŁ\nå®ī è£ħ\næľ ±\nè¿Ĳ è¡Į\nåıĮ æĸ¹\næľĢ å¤§çļĦ\næŀĦ å»º\nè¿ŀ ç»Ń\nçļĦ å°ı\nå¥¹ çļĦ\nçŃī çŃī\næĶ¹ åĸĦ\nåĲĦ ç±»\néģĩ åĪ°\næľī çĿĢ\näºº çī©\næĢ» æĺ¯\nè¿ħ éĢŁ\nåĪ¶ å®ļ\nå®ĥ ä»¬\nå®ĺ ç½ĳ\nè¿ĺ è¦ģ\nç»Ī äºİ\næĪ¿ åľ°äº§\nè¯ģ æĺİ\nèĤ¡ ç¥¨\nåºĶ å½ĵ\nèĭ± åĽ½\nè¿Ĳ çĶ¨\næľĢ æĸ°\näº« åıĹ\nè®© æĪĳ\næĻļ ä¸Ĭ\nå¾ ŀ\nå°ı è¯´\nå°¤åħ¶ æĺ¯\nè®Ń ç»ĥ\nåħ¨ å¸Ĥ\næĮĳ æĪĺ\næľī çĤ¹\nå¸¦ çĿĢ\nçļĦ ä¸ľè¥¿\né£İ æł¼\né»Ħ éĩĳ\nå¼ķ å¯¼\næŃ¤ å¤ĸ\næľĢ è¿ĳ\nè¿½ æ±Ĥ\nå¼º è°ĥ\nä¹Ł åı¯ä»¥\næĦŁ åĪ°\nèĩª æĪĳ\nçī¹åĪ« æĺ¯\næĪĲ éĥ½\néĢĲ æ¸Ĳ\nå¿« ä¹Ĳ\nä¹ĭ ä¸Ń\næĬķèµĦ èĢħ\nä»ĸä»¬ çļĦ\næ° ı\nå·¥ä½ľ äººåĳĺ\näºĨ ä¸Ģä¸ª\nåķ ¦\nä¸Ģ åĢĭ\nåŁº å±Ĥ\næ²Ł éĢļ\nç¬¬ä¸Ģ æ¬¡\nå¹¶ æ²¡æľī\nçļĦ å·¥ä½ľ\nåľ¨ è¿ĻéĩĮ\næŀ ª\næĶ¯ æĴĳ\næĹ¶ å°ļ\næĿ¥ åĪ°\næĶ¶ è´Ń\néĿ© åĳ½\næĺ¯ ä¸įæĺ¯\nè®¨ è®º\nä¸ļ ç»©\nå°± èĥ½\nç«ĭ åį³\nè¡Ĺ éģĵ\nåľ¨ ä¸Ģèµ·\næľĪ ä»½\né«ĺ ç«¯\nå¾Ī éļ¾\nä¿Ħ ç½Ĺæĸ¯\næīĭ æ®µ\nåģļ åĩº\nä¼Ĺ å¤ļ\nå®ŀ è¡Į\næīĵ å¼Ģ\næ¸¸ å®¢\nä¾Ŀ çĦ¶\nå°± åĥı\nç¦» å¼Ģ\nè¯´ éģĵ\næĸ° èĥ½æºĲ\næº ª\näº ķ\nä»¤ äºº\nä¸Ģ åľº\næĪĳ æĥ³\nä¸¤ äºº\nèĩ³ å°ĳ\nçļĦ çĶŁæ´»\næĺ¯ ä¸ª\nèĭ± è¯Ń\næ²Ĵ æľī\næĢĿ èĢĥ\néĻĲ åĪ¶\nåı° æ¹¾\nä¸Ģ æĹ¦\nçļĦ ä¸Ģä¸ª\né«ĺ çº§\nåĬŀåħ¬ å®¤\nå¾· åĽ½\næĪĳ å°±\nå®ļ ä½į\néĢĤ åºĶ\næĮĩ æłĩ\nåħ¨ çľģ\nä¸Ĭ è¿°\nå®ĥ çļĦ\nåĽŀ å®¶\næ¬§ æ´²\néĵģ è·¯\né¼ĵ åĬ±\nçļĦ å½±åĵį\né«ĺ æł¡\nå¤© ä¸ĭ\né«ĺ è´¨éĩı\næĿŃ å·ŀ\nèµĦ è®¯\næĶ¾ åľ¨\næľī ä¸Ģä¸ª\nå°± è¦ģ\nä¸Ĭ éĿ¢\nè§£ éĩĬ\néĢĲ æŃ¥\nå°½ ç®¡\næľī ä»Ģä¹Ī\nçļĦ äºĭ\nçĻ» è®°\näººæ°ĳ å¸ģ\nè§Ĥ ä¼Ĺ\nè§Ĥ å¯Ł\nçĶµ èĦĳ\nçļĦ åĲĮæĹ¶\nä½ľ ä¸ļ\nå®£ å¸ĥ\nçļĦ ä½ľçĶ¨\nåĽŀ æĿ¥\néļ¾ ä»¥\næīĢæľī çļĦ\nå°ı åŃ¦\næıĲ åīį\næ¤į çī©\nåĩ ¯\nä¸Ĭ äºĨ\nå°± åľ¨\nåħĪ åĲİ\næīĭ æľ¯\néĥ Ń\néĿ¢ åīį\næ¯ķ ç«Ł\näºĮ æĺ¯\nçº¢ èī²\néĺ³ åħī\nèĭ¹ æŀľ\nå¾Īå¤ļ äºº\nç»Ļ æĪĳ\nåĵ ¦\nçľ¼ çĿĽ\néł Ń\nä¸Ģ æĺ¯\nåıĳå±ķ çļĦ\nåıį åºĶ\næĪ¿ å±ĭ\næľŁ å¾ħ\nç§į æ¤į\næĸĩ åŃ¦\nåį³ åı¯\né¦ĸ æ¬¡\nèĭ± éĽĦ\nå¤ļ æ¬¡\nåĮħ è£ħ\næ²³ åįĹ\nä¹ĭéĹ´ çļĦ\nä»į çĦ¶\nåĲ¬ åĪ°\nèĳ£äºĭ éķ¿\nè§Ħ åĪĻ\nä¸Ģ ä»½\nå¤§ ä¼Ĺ\nä½¿ å¾Ĺ\nè¿Ľ åı£\nä¸Ģ çīĩ\næĢ§ çļĦ\nçļĦ å¤§\næĪĳ æĺ¯\näºĴ åĬ¨\næ° £\nçļ Ĩ\nåħ¬åı¸ çļĦ\nä¸Ģ è¾¹\nåıĬ åħ¶\nèī¯ å¥½çļĦ\næĭĵ å±ķ\nå½ĵ å¹´\nå¹¿ åľº\nåģļ äºĨ\nåŁº äºİ\næıĲ éĨĴ\nåħĦ å¼Ł\nèĢģ æĿ¿\nè¿ĳ æĹ¥\nçĬ¶ åĨµ\næ³¨ éĩį\nåĪļ åĪļ\nè°ĥ çłĶ\nå¿ĥ ä¸Ń\næĬĬ æı¡\néļı åĲİ\nä¸į å¤Ł\nåĪĽ ä½ľ\nç«Ļ åľ¨\nçĽ¸ äºĴ\nçĸ«æĥħ éĺ²æİ§\nå¹´ ä»£\nå¸¦ åĬ¨\nä¼¤ å®³\nç«Ł çĦ¶\nå¼ķ è¿Ľ\nç´¯ è®¡\nè®© æĪĳä»¬\nåĽŀ æĶ¶\næĬ¥ åĲį\nåĬ© åĬĽ\nèģĶ çĽŁ\nçŃĸ çķ¥\nåĳ¨ è¾¹\nåĭ Ĵ\nè¿ĺ åľ¨\næµģ éĩı\nå¯» æī¾\nçĶµ åĬĽ\nèĪ¹ èĪ¶\nè¿ĺ èĥ½\næĭħ ä»»\nçļĦæĥħåĨµ ä¸ĭ\nçļĦ åİŁåĽł\nç¼º ä¹ı\nçĲĥ åĳĺ\nå²ģ çļĦ\nçĶ· åŃĲ\nå·¥ èµĦ\nè¿ĳå¹´ æĿ¥\nåĳ Ģ\næıĲä¾Ľ äºĨ\nå¥¹ ä»¬\nå®¶ åħ·\nçĩ ķ\nè½» æĿ¾\næł¡ åĽŃ\nèĢĥ æł¸\nåį± éĻ©\nåħļ ç»Ħç»ĩ\næĢ» ç»ıçĲĨ\nçļĦ æĸ°\nçİ» çĴĥ\nè¿Ļ ä½į\nå¯¹ æŃ¤\nå®¶ äºº\nçļĦ è¦ģæ±Ĥ\næ¸© åº¦\næĮĩ æķ°\nçĽ´ åĪ°\næŃ¤ æĹ¶\næ¹ĸ åįĹ\néĥ½ è¦ģ\nä½ľ åĩº\nåĲĦ ä½į\nèĢĥ çĶŁ\nä¾Ŀ æį®\nè¯´ è¯Ŀ\næĪĳ ä¹Ł\nå·¥ åİĤ\nåıĺ æĪĲ\nä»ĸ äºº\næĪĳ è§īå¾Ĺ\nåĲĦ çº§\nä¼łå¥ĩ ç§ģæľį\nä¸Ĭ åįĩ\nå¥½ åĥı\nåĬł éĢŁ\näºĮ åįģ\nè¢ ģ\nè£ħ é¥°\néĥ½ èĥ½\nä¸Ģ å¼ł\nåĬ¨ æĢģ\nå¹´ çļĦ\nè¿Ļ å°±æĺ¯\nä¹Ł è¦ģ\nèµĦ æł¼\næĪĺ äºī\næĦŁ è°¢\nåŁ¹ èĤ²\nå¤© æ°Ķ\nå¥³ å£«\nåı¯èĥ½ ä¼ļ\nçļĦ äº§åĵģ\nä¹Ł å°±\nä¸»è¦ģ æĺ¯\nåĪº æ¿Ģ\nç»Ļ ä½ł\nå¤§ æķ°æį®\nåĮ» åŃ¦\nåĪ ¤æĸŃ\nä»ĸ è¯´\nè¡¨ æ¼Ķ\näºļ æ´²\nä¸ĵ é¢ĺ\nç«ŀäºī åĬĽ\néĤ£ æł·\nå±ķ å¼Ģ\nå¹³ æĹ¶\næİ¥ ä¸ĭæĿ¥\næī¿ è¯º\næ³ķ åĽ½\nåħ³ å¿ĥ\nä¼ļ æľī\néĤĢ è¯·\né¢Ħ éĺ²\nå¯¹ æİ¥\nå¥½ äºĨ\nåĴ± ä»¬\nçļĦ æĦŁè§ī\næĢĿ è·¯\néĥ½ æ²¡æľī\nçļĦ æĸ¹æ³ķ\nå¥³ åŃĲ\nåı¸ æ³ķ\nè¿ĺ ä¼ļ\nè¶ĬæĿ¥è¶Ĭ å¤ļ\nåĽł çĤº\næµ· åįĹ\näºº æķ°\nå°Ĩ ä¼ļ\nä¸ļ ä¸»\né¤Ĳ é¥®\nå±ħ ä½ı\nåıĳ åĩº\nè¿ĳ æľŁ\nå¼ķ é¢Ĩ\næľºåĻ¨ äºº\nåĩºæĿ¥ çļĦ\nçľĭ è§ģ\nä¿ Ĭ\nè®© ä»ĸ\nä¸į æĥ³\nå·¥ä½ľ çļĦ\nè¡¥ åħħ\næµ ħ\nçī¹ å¾ģ\nä¸Ĭå¸Ĥ åħ¬åı¸\nç¾İ é£Ł\nå¹¿ è¥¿\næ¯ı ä¸Ģä¸ª\nèĲ½ åľ°\nåĵģ ç§į\nåĴĮ è°Ĳ\nå½» åºķ\né«ĺ èĢĥ\næĺ¨ å¤©\nåīį å¾Ģ\nçĽĳ æµĭ\nçĻ¾ åº¦\nåľ¨ ä¸ŃåĽ½\nçļĦ éľĢæ±Ĥ\näº¿ ç¾İåħĥ\nåŃ¦ æľ¯\næĶ¶ åĪ°\næĿ¿ åĿĹ\nä¸Ģ æ®µ\næŀĦ æĪĲ\nä¼ģä¸ļ çļĦ\nè¡¨ éĿ¢\næķ´ çĲĨ\nç»ĵ å©ļ\näºº å®¶\nåģľ æŃ¢\nåŃ¦ ç§ĳ\næĺ¾ å¾Ĺ\nä¼ĳ æģ¯\né¢Ħ æľŁ\næĪĸ æĺ¯\nçļĦ ä¸»è¦ģ\nåºĶ å¯¹\nèµ° äºĨ\nä¸Ń éĹ´\nèµ° è¿Ľ\nåĳĪ çİ°\næĲŃ éħį\né¹ ı\næĺ¯ åĽłä¸º\næĥħ ç»ª\nå®ļ æľŁ\nç¤¾ä¼ļ ä¸»ä¹ī\nçŃī çº§\nçŁĽ çĽ¾\né£ŀ æľº\nèĩ³ ä»Ĭ\næĶ¶ éĽĨ\nçļĦ æķħäºĭ\nåĪĩ å®ŀ\nå®ŀçİ° äºĨ\nå½¢ æĪĲäºĨ\nåįĹ æĸ¹\nä¸Ń åŃ¦\næµ· æ´ĭ\nåĲ¦ åĪĻ\næĭį æĳĦ\nå¤§åŃ¦ çĶŁ\nåĩºçİ° äºĨ\næĦı å¤ĸ\nä¹Ł èĥ½\nçļĦ èĥ½åĬĽ\nåĿĲ åľ¨\nåĪĻ æĺ¯\nèĢĥ å¯Ł\nå°Ĭ éĩį\néĺ² æŃ¢\nç´§ å¼ł\nè¯» ä¹¦\nåĩº è¡Į\nå°± æľī\nå±¥ è¡Į\nçİ°ä»£ åĮĸ\nåĽ½ åĬ¡\nåĽ½åĬ¡ éĻ¢\nç»´ ä¿®\nåİŁ åĪĽ\næĺ¯ æĮĩ\nä¼ĳ éĹ²\nçĤ ®\næĸ° æĹ¶ä»£\néĢĻ åĢĭ\nä¸į æķ¢\nå®Į ç¾İ\nç»Ĩ èĬĤ\néŃ ı\nèĶ¬ èıľ\né¢Ĩå¯¼ çıŃåŃĲ\nè¶ħ çº§\nè¡Į æĥħ\näººå·¥ æĻºèĥ½\nåį° åº¦\nåŁºç¡Ģ è®¾æĸ½\nåıĪ æĺ¯\nèį¯ çī©\nåĲ¸ æĶ¶\nåį´ æĺ¯\néĥ İ\nå¥ĸ åĬ±\nçļĦ æľĭåıĭ\nä¿Ŀ çķĻ\nè§Ħ å¾ĭ\næĸ° çĸĨ\nè¿ĺ åı¯ä»¥\næİ¥ è¿ĳ\næŃ¤ åīį\næī¹ åĩĨ\næĢİä¹Ī æł·\nçļĦ ä½įç½®\nä¸Ģ åĿĹ\næĭĴ ç»Ŀ\né¡¾ å®¢\nä¹Ł åľ¨\nä¸Ģ çĶŁ\néĥ¨ éĺŁ\nå¹´ åīį\næĸ¹éĿ¢ çļĦ\nå°Ŀ è¯ķ\nçľŁæŃ£ çļĦ\nç¦ģ æŃ¢\nè¿ĺ æ²¡æľī\næ°ĳ çĶŁ\nèµ° åĲĳ\nèĦ¸ ä¸Ĭ\nå½ĵ å¤©\néĽĨåĽ¢ åħ¬åı¸\nçļĦä¸Ģ ç§į\nè¥¿ æĸ¹\nåĽŀ åºĶ\nä¸Ģ å£°\nå¸¸ å¸¸\næıĲ åĪ°\nèħ¾ è®¯\næľį è£ħ\nä¸º ä½ķ\näºĳ åįĹ\nå°± ç®Ĺ\nä¼ł æī¿\nåıį èĢĮ\nä¸ĩ åĲ¨\nè´¢ äº§\nå¦Ĥ ä¸ĭ\næĹ¥ åīį\nåİŁ æľ¬\næľĢ éĩįè¦ģçļĦ\nè®¤ è¯ģ\nä¸Ģ éģĵ\nä¿¡æģ¯ åĮĸ\nå¾Ĺ åĪ°äºĨ\néĢ² è¡Į\næĪĳ è¦ģ\néĢļ ä¿¡\nå®¤ åĨħ\nèµļ éĴ±\næĶ¶ èĹı\nè§£åĨ³ æĸ¹æ¡Ī\næĪ¿ äº§\nçĭ ¼\næ´» åĬĽ\nç»ıæµİ åıĳå±ķ\nçŃī å¾ħ\nä¹Ł å¾Ī\nåĿ ĳ\nå¾Ī å¥½çļĦ\néļ¾ åº¦\nä¸į å¦Ĥ\näººæ°ĳ æĶ¿åºľ\nåĩº åıĳ\nåīį æľŁ\næ¼Ķ åĳĺ\nå¥³ çĶŁ\nèģļ çĦ¦\nå®¡ è®¡\né¢Ħ æµĭ\nä¾Ŀ æīĺ\näºĶ å¹´\nè¡¥ è´´\næ¸ħ æĻ°\néª Ĥ\nçľĭ èµ·æĿ¥\nçļĦ åŃ©åŃĲ\né¢ĳ éģĵ\nä½ı å®ħ\néĿ¢ åĲĳ\næľĢ ä½İ\næĹ¢ çĦ¶\nä¸Ģ å¥Ĺ\næķ° åŃ¦\nç¾¤ ä½ĵ\nåĮĹäº¬ å¸Ĥ\nå±ħ çĦ¶\næ°Ľ åĽ´\néĢĶ å¾Ħ\nçļĦ åŁºç¡Ģä¸Ĭ\nèģĮ è´£\nåı¯èĥ½ æĺ¯\nåĨĽ äºĭ\næĪĲ æķĪ\nåŃ©åŃĲ ä»¬\nè®¡ç®Ĺ æľº\nèµ ¤\näº§ä¸ļ åıĳå±ķ\nå·¨ å¤§çļĦ\nå·¥ äºº\nçĶŁ éķ¿\néĥ½ åı¯ä»¥\nçļĦ æľºä¼ļ\nèµĦ è´¨\nçĹĽ èĭ¦\nç²ī ä¸Ŀ\nå¢ ĵ\nå¹³ å®ī\nç®¡ éģĵ\nè·Ł çĿĢ\né¥® é£Ł\nåķĨ å®¶\nå¤ļ å®¶\nåı¸ æľº\nåºĶè¯¥ æĺ¯\néĢı éľ²\nè®¤ å®ļ\nè¡Įä¸ļ çļĦ\nçļĦ ä¼ģä¸ļ\næ¯ı ä¸Ģ\nèĮĥåĽ´ åĨħ\nè¾ĥ å¤§\nè´ ¤\nå¤§ èµĽ\nå¤ļ äºĨ\né¸ ¿\nä¸´ åºĬ\nåľ¨ è¿Ļä¸ª\nçļĦ åĨħå®¹\néĶĢ éĩı\nå¾Ī å°ĳ\nåŃ Ł\nç»´ æĮģ\nåĴĸ åķ¡\næľ¬ åľ°\nèī² å½©\nå¹¶ éĿŀ\nèĢĮ å·²\næ¸© æļĸ\nèĲ §\næĬĵ ä½ı\nèĢĮ ä¸įæĺ¯\nåĸ Ĭ\nçļĦ åħ³ç³»\nçī© åĵģ\néĤ£ æĺ¯\nåĨľ äº§åĵģ\nè¿Ļ æĹ¶\nå©ļ å§»\næ°´ æŀľ\næĶ¶ èİ·\nä»ĺ åĩº\nå®¢æĪ· ç«¯\næ¼Ķ åĩº\nåħ¨ æĸ°\nè¿Ļ ä¹Łæĺ¯\næĺ¯ çĶ±\nè§Ĥ å¿µ\næľī ä¸ª\néĢł åŀĭ\nèĥľ åĪ©\nä¸ī æĺ¯\nè¶ħ å¸Ĥ\nåħļå»º å·¥ä½ľ\næĶ¾ å¿ĥ\nçº¿ è·¯\næĭĽ çĶŁ\nåĲĥ é¥Ń\nè½ ī\nå°½ éĩı\nè§ģ åĪ°\nåĲĮæ¯Ķ å¢ŀéķ¿\nåįİ ä¸º\næĪĳ å¸Ĥ\næıĲ åĩºäºĨ\næ°ĳ èŃ¦\nåįļ çī©\nåįļçī© é¦Ĩ\nè¯ļ ä¿¡\nåīį éĿ¢\nå±± è¥¿\nè¾ħ åĬ©\nè½¬ ç§»\næĽ´ ä¸º\nä¸°å¯Į çļĦ\nåį ¢\nå¿« éĢĴ\næĺ¾ èĳĹ\nçī© èµĦ\nåĪ° è¾¾\næľī åĪ©äºİ\nåĳ Ĩ\nåŃ©åŃĲ çļĦ\nä¸į ä½Ĩ\nçłĶç©¶ éĻ¢\nçĶ³ æĬ¥\næļ ¨\næ°ĳ éĹ´\nåį »\nçļĦ å£°éŁ³\nå¸Ĥåľº çļĦ\nä¸Ģ åı¥\nçľģ çº§\næĿ¥ çļĦ\nåĵª ä¸ª\næīį ä¼ļ\nåĪĨ éħį\nèĶ ¡\nä»ĸ åľ¨\nåħ± æľī\nå¡ ĺ\nèĴ Ĥ\néľ į\nåıĤ è§Ĥ\nä¸Ī å¤«\nä¾Ŀ éĿł\næľī æĹ¶\näºĨ å¾Īå¤ļ\nä¸ĸçķĮ æĿ¯\nå®¶ æĹı\nä¸į éľĢè¦ģ\nå¤§ å¸Ī\nèŀį åħ¥\néĿŀ æ³ķ\nçĹħ äºº\nåĲİ æľŁ\nå¤§å®¶ éĥ½\nç½ĳ åĿĢ\nåİŁ æĸĻ\nä¾¿ å®ľ\næ¶ Ľ\nä»¿ ä½Ľ\nå·® è·Ŀ\nåı¦ä¸Ģ æĸ¹éĿ¢\näº§åĵģ çļĦ\nèµ «\næĥħåĨµ ä¸ĭ\néĴ¢ éĵģ\næľ¬ ç«Ļ\nçº³ åħ¥\nå·² æľī\næľī æ²¡æľī\nä¼° è®¡\né£ ĺ\næľŁ è´§\nåĢĭäºº è³ĩæĸĻ\nä¸ĵä¸ļ çļĦ\nçĪĨ åıĳ\nèĩ´åĬĽ äºİ\nçİ°åľ¨ çļĦ\næľī åĵªäºĽ\nçł´ åĿı\næķ°åŃĹ åĮĸ\nåľ° éĿ¢\né»ĳ èī²\nå¹¼åĦ¿ åĽŃ\nçļĦ ç²¾ç¥ŀ\näº Ń\nå¯¼ æ¼Ķ\nçİ° æľī\næŃ¦ åĻ¨\nèĭı å·ŀ\nçİ Ħ\næ±Ł è¥¿\nå»¶ ä¼¸\nè®º æĸĩ\nè¾ĥ ä¸º\nçİ© æ³ķ\né¼ İ\nåĲĮ æŃ¥\néĩĬ æĶ¾\næĽĿ åħī\nåĿļ åĨ³\nå§Ķ æīĺ\nå°Ĩ åľ¨\näºĪ ä»¥\nä½ľ æĸĩ\nèĢĮ åľ¨\nä¼ĺ åħĪ\nåĽŀ åİ»\nä¿® å¤į\nåĽ½åĨħ å¤ĸ\nçŃĸ åĪĴ\nåıĳ æĶ¾\nå¿ĥ æĥħ\nçļĦ åİĨåı²\néĿ¢ è¯ķ\nä¸ľ åĮĹ\nä¿¡ åı·\nç²® é£Ł\nè¯ģ ä¹¦\næŁĲ äºĽ\nè¿Ĳ ä½ľ\nåĨ² åĩ»\nçĥŃ çĤ¹\næĹ¶ æĹ¶\næĹ¶æĹ¶ å½©\nåľ° çĤ¹\nä¸Ģä½ĵ åĮĸ\néļ¾ é¢ĺ\næĽ °\nç«ĭ åĪ»\næĺ¯ éĿŀå¸¸\nåħ± åĴĮ\nåħ±åĴĮ åĽ½\næ¿Ģ åĬ±\næľīæķĪ çļĦ\nå¤Ħ ç½®\nè¯¥ åħ¬åı¸\næ£Ģ éªĮ\nèŃ¦ æĸ¹\nè´ ¾\näºĨä¸Ģ ä¸ĭ\nä»Ĭ åĲİ\nçħ ®\nçĶ¨ åĵģ\nè¯» èĢħ\næĪĳ åľ¨\nåĽŀ å¤į\nä¸Ģ åº§\nè¿ĺ æ²¡\nå®ļ åĪ¶\næ²¡ æĥ³åĪ°\nå¤ ¹\nä¼ł éĢĴ\nä¸Ģ æ¬¾\nå¼º å¤§çļĦ\nçļĦ è¡Įä¸º\nå¤ı å¤©\nåıĳåĬ¨ æľº\né¢ĨåŁŁ çļĦ\nå®ŀéªĮ å®¤\nä¸Ģ æĬĬ\næĺ¯ ä¸ºäºĨ\néĻķ è¥¿\næĭħ ä¿Ŀ\nè¾¾ æĪĲ\nè¦ģ æĺ¯\næĺİ å¤©\nç»Ļ ä»ĸ\nå»ºç«ĭ äºĨ\nä¸į è¡Į\nä¸Ń æĸĩ\nåľ° è¯´\nåĲİ çļĦ\nçĽĳ æİ§\néĢ ¸\næĢ» éĥ¨\næľ¬ æĸĩ\né¹ ¿\næĻ¯ è§Ĥ\nçļĦ çĽ®æłĩ\nèĽ ĩ\nåĨ ¯\nä¸Ń åĮ»\næķĪ åºĶ\näº§ éĩı\nåŃ Ŀ\nè´¦ æĪ·\nè¿Ŀ åıį\nèĳ£äºĭ ä¼ļ\näº¬ ä¸ľ\nè´£ä»» ç¼ĸè¾ĳ\nåķı é¡Į\nçĪ± å¿ĥ\nèŃ¦ å¯Ł\né¤Ĳ åİħ\nå¸Ĥ æĶ¿åºľ\nå¤© å¤©\næĸ° é²ľ\néĥĳ å·ŀ\nè¶ħ è¶Ĭ\nå½ Ń\nçŁ¥è¯Ĩ äº§æĿĥ\nåĽŀ å¿Ĩ\nè·¯ çº¿\nå»ī æ´ģ\néĿĴ å°ĳå¹´\nåıĸå¾Ĺ äºĨ\nçľĭ åĪ°äºĨ\né¦ ¬\nç²¾ åĵģ\nåľ° éĵģ\næĮģ æľī\nä¸ĭ äºĨ\næľī æĹ¶åĢĻ\nä¸Ģ äºº\næĴ Ĵ\nä»Ķ ç»Ĩ\nèĢģ åħ¬\näºĭå®ŀ ä¸Ĭ\nèģĶ èµĽ\nä¾ĽåºĶ éĵ¾\né¢Ħ ç®Ĺ\nåĪ¶éĢł ä¸ļ\nå®īåħ¨ çĶŁäº§\nä¿± ä¹Ĳ\nä¿±ä¹Ĳ éĥ¨\nçļĦ æł¸å¿ĥ\næīĵ ç®Ĺ\nå½± çīĩ\næĲŃ å»º\nä¹Ł ä¸įä¼ļ\næĭħ å½ĵ\nå±Ĥ éĿ¢\nåŃ¦ åĳĺ\nä¸´ æĹ¶\nçĽ¸ ç»ĵåĲĪ\nå¯¹ æ¯Ķ\nä»ĸ æĺ¯\næĸ° åĮº\nè¿Ľ åİ»\nçĻ¾ å¹´\nä¿ ©\nå°½ å¿«\nçĶµåŃĲ åķĨåĬ¡\næĽ´ æľī\næ¸ħ çĲĨ\nåı¦ ä¸Ģä¸ª\nåĤ »\nä»Ģä¹Ī æł·çļĦ\næĺ¯ æľĢ\nåĳ¨ å¹´\nå¾Ī å®¹æĺĵ\nåĽ¢ ç»ĵ\nç´ Ħ\næĹ© å·²\nçļĦ åıĺåĮĸ\néľ ŀ\næĹ¥ ä¸ĬåįĪ\nå¤± åİ»\nä¸Ń åľĭ\nçļĦä¸Ģ äºĽ\nå°ı åŃ©\nä¸ĭ è·Į\néĶ» çĤ¼\né ĳ\néĳ «\nå¿ĹæĦ¿ èĢħ\nèĤ¡ å¸Ĥ\nèµĽ äºĭ\nè®¸åı¯ è¯ģ\nåı¯ æĮģç»Ń\nåĳĬè¯ī è®°èĢħ\néĢ» è¾ĳ\nå¼ķ åħ¥\nçļĦ è¿ĩç¨ĭä¸Ń\nè§Ĩ è§ī\nèĩªæ²» åĮº\nè¯ģ æį®\nè£ħ ç½®\nç¬¬ä¸ī æĸ¹\nå¹´ æĿ¥\nå¹¿ä¸ľ çľģ\nå¸¦æĿ¥ äºĨ\néķ¿ æ±Ł\nè®¿ éĹ®\nå·® ä¸įå¤ļ\næĺ¯ æĪĳ\néģŃ éģĩ\næĬĵ å¥½\né«ĺ è¾¾\nå¹¶ åľ¨\nèĩª è§ī\nä¾ĽåºĶ åķĨ\næĥħ æĦŁ\nä½ı äºĨ\nçļĦ èģĮä¸ļ\nçļĩ å¸Ŀ\nè¥¿ éĥ¨\nåĴĮ å¹³\nçļĦ åĬĽéĩı\næ± ª\nåħħåĪĨ åıĳæĮ¥\næĬķ è¯ī\nèµ· åĪ°\näºĴ çĽ¸\næ¾³ éĹ¨\næİ¥ åĪ°\næ°´ æ³¥\næ¨¡ åŀĭ\nä¸Ģ åįĬ\nç§© åºı\næĪĳä»¬ åľ¨\næī¿ è®¤\nä¸Ģ éĥ¨åĪĨ\nåįł æ¯Ķ\nå¦ĩ å¥³\nç² ĺ\näºĨè§£ åĪ°\nä¸Ģå®ļ ä¼ļ\nåĲĦ å¤§\nèµ° åĩº\nä¸º å¤§å®¶\né«ĺ éĵģ\nåı¯ä»¥ åľ¨\nä½Ĩ åľ¨\nçĶŁæĢģ çİ¯å¢ĥ\nèı ¯\nçļĦ ä»·æł¼\néº» çĥ¦\næ¿Ģ åıĳ\néĤ£ å°±\nçļĦ æł·åŃĲ\nä¸º æŃ¤\nå¤© åľ°\nçļĦ çĽ®çļĦ\nåĢº åĪ¸\nå·² ç¶ĵ\nåĽĽ å¤§\nåĲĮæĹ¶ ä¹Ł\nå½¼ æŃ¤\næĭ¿ åĪ°\nåĲ« éĩı\nåįģ å¤§\néļ¾ éģĵ\nå¼ Ĺ\nä¸Ģ æ®µæĹ¶éĹ´\nçħ§ é¡¾\næķ°æį® æĺ¾ç¤º\næĪĲä¸º äºĨ\nèµ° åĪ°\næľ¬ åħ¬åı¸\nç»Ī ç«¯\nä¹Ł ä¸įæĺ¯\nå¤´ åıĳ\nå¤§ çº¦\né£İ æĻ¯\næ¶Ī èĢĹ\nå®¡ æŁ¥\näºī åıĸ\næ³ķ æ²»\näºĭ çī©\nç¼ĵ è§£\næĥ ¨\nçĽ¸åºĶ çļĦ\nçļĦ æķĪæŀľ\nåıį å¤į\nåıĳçĶŁ äºĨ\néĢĻ äºĽ\nç»ĥ ä¹ł\nåİ¨ æĪ¿\nå¼Ģ æĭĵ\næ¬£ èµı\nå¤« å¦»\nä¸į ä¸Ģæł·\näº§ èĥ½\nèĬ¯ çīĩ\nè¦ģ ç´ł\nåıį å¯¹\nçİĩ åħĪ\nè´§ çī©\næĹ¥ çĶµ\nä½ľ å®¶\næĶ¹ è¿Ľ\næĪĲ åĪĨ\nåĽł èĢĮ\nåĩı èĤ¥\næ½ ĺ\nå±±ä¸ľ çľģ\nåĬ Ŀ\nåŁ ĭ\næŃ¦ è£ħ\næ±ĩ æĬ¥\nä¸Ģä¸ª æľĪ\nçĥŃ éĹ¨\nå¤§ éģĵ\næ´» åĭķ\néĥ½ å¾Ī\nçĶµ æ¢¯\nç´§ æĢ¥\nåĢº åĬ¡\nå®¢ æľį\nä¸Ģ éĥ¨\nä½ł æĺ¯\nçİ° çĬ¶\næŃ£ç¡® çļĦ\nä¹ĭ å¤Ħ\nç¼ĸ åĪ¶\nä½ł åı¯ä»¥\nçŃī åľ°\nèİ ī\nå¯¹ è¯Ŀ\næ·ĺ å®Ŀ\nè°ĥ èĬĤ\næİĴ æĶ¾\nåºĵ åŃĺ\nç´ ļ\nçļĦ ä¼ĺåĬ¿\næĿĥ å¨ģ\nä»¥ä¸ĭ ç®Ģç§°\nä¸Ģ é¡¹\nèģļ éĽĨ\nä¼łç»Ł çļĦ\næ·· åĲĪ\nè¿Ļä¸Ģ çĤ¹\nä¸Ģ çľ¼\næĹł éĻĲ\nèİ·å¾Ĺ äºĨ\néĢī æīĭ\nåĪ¶ åĵģ\nåįı ä½ľ\nçĭ¬çī¹ çļĦ\nä¸Ģ çº§\nè¿Ļä¸ª éĹ®é¢ĺ\næĸ Į\næĺ¯ æĪĳä»¬\næķĮ äºº\næ¸ħ æ´Ĺ\nä¸ĢçĽ´ åľ¨\nå°ı ç±³\nçļĦ è¿ĩç¨ĭ\nåľ¨ åĮĹäº¬\nä¸Ģ æĶ¯\næĹ© ä¸Ĭ\næĸĩ èīº\nç¦ı åĪ©\né£Ł çĶ¨\næĦŁ åĬ¨\nåħ¨ ç¨ĭ\næĶ¯ åĩº\næĸ° å»º\nå¸ ķ\næĺ¾ çĦ¶\nçľŁ çļĦæĺ¯\næĸ°éĹ» ç½ĳ\nèĥ½ åĲ¦\nåįı åĬ©\näº² èĩª\nå¾Ī æľī\nçĻ¼ å±ķ\næĦı å¤§\næĦıå¤§ åĪ©\nçĶµ ç½ĳ\næĹ¥ çĽĬ\nçĨ ±\nèĤĮ èĤ¤\nçĶ· æĢ§\nç»Ħ å»º\nçŃī éĹ®é¢ĺ\næ¶Ī éĻ¤\næĬ¤ çĲĨ\nå¡ĳ æĸĻ\nä¹Į åħĭ\nä¹Įåħĭ åħ°\nåķĨ æłĩ\nçĲ ³\næĸ° æīĭ\nçļĦ çī¹çĤ¹\nåĴ ¬\nå½ĵ ä¸ĭ\nè®¾è®¡ å¸Ī\nèµĶ åģ¿\nç¬¬ åįģ\næĻºèĥ½ åĮĸ\nå¼Ģåıĳ åĮº\nåı¯ä»¥ éĢļè¿ĩ\nåħ±äº§ åħļ\nåİī å®³\nçģµ æ´»\næĹ¶ åħī\néĥ¨ ä½į\näºº æĸĩ\nè¿Ľ æĿ¥\nä¹ĭ æīĢä»¥\nä¸ī åįģ\nçļĦ åŃ¦çĶŁ\néĺ² æĬ¤\nåĽ½ äº§\næ·±åľ³ å¸Ĥ\néĤ£ å°±æĺ¯\nåĪ° ä½į\nçī¹ æľĹ\nçī¹æľĹ æĻ®\nå®ŀ æĹ¶\nåı° çģ£\nèĢĮ ä¸į\næĮĩ å®ļ\nåĿ Ŀ\nèħĲ è´¥\nçī¹ å®ļ\nå¢ŀ éĢŁ\næłĩ çŃ¾\næĪ¿ ä»·\næĦ ģ\nè´¯å½» èĲ½å®ŀ\næĢ§ è´¨\nçłĶç©¶ çĶŁ\nç¾İ å®¹\næī¹ è¯Ħ\nç©¶ ç«Ł\näººåĬĽ èµĦæºĲ\néĸĭ å§ĭ\nåĽŀ å½Ĵ\nèĲ¥ åķĨ\nèĲ¥åķĨ çİ¯å¢ĥ\nä¸ŃåĽ½ äºº\nçļĦ åŁºæľ¬\nè¯Ŀ é¢ĺ\næłĩåĩĨ åĮĸ\nè¥¿ èĹı\nåĭ ¾\nçļĦ è®¾è®¡\nç®Ģåįķ çļĦ\nå¤į åĪ¶\næ¸Ĳ æ¸Ĳ\nä»¥ å¤ĸ\nèģĶ åĬ¨\nä¸¤ æ¬¡\næĢ§ åĴĮ\næĽ´ å¤§\nçļĦ åĲįåŃĹ\néŁ ¦\nä½ł è¦ģ\nå¢ĥ å¤ĸ\næĹ© æľŁ\nåĪĿ æŃ¥\nè´¦ åı·\nå®³ æĢķ\næĺ¨ æĹ¥\nåĪļ æīį\nç¥ŀ ç§ĺ\nç²¾ å¿ĥ\næµģ éĢļ\nåħ¨ æĸ¹ä½į\nä»¥ å¾Ģ\nä¹Ł å°Ĩ\næĺ¯ ä¸ŃåĽ½\nåĽ½å®¶ çº§\nå°Ĩ åĨĽ\næĳ Ĭ\næľĢ ä¸º\nç¬¬ä¸Ģ æĹ¶éĹ´\næ¶Ī æ¯Ĵ\nå°Ĩ äºİ\nå¨ģ èĥģ\nèĭ± æĸĩ\næīĭ ä¸Ń\nçĲĥ è¿·\nè§Ĥ çľĭ\nç¦» å©ļ\næľ¬ åľŁ\nåĪĨ æķ£\næĻ ´\nè¦ģ æ³¨æĦı\næµª è´¹\nç®¡ æİ§\nåĩº åĶ®\næĢ» è£ģ\nä¸Ģ éĺµ\nå¨ ĩ\näºĶ ä¸ª\nå½ĵ åĪĿ\nçºł çº·\nä¸ĵ çĶ¨\nå¤ĩ æ¡Ī\nåĪĿ æľŁ\nå®ĥ æĺ¯\nåĮº åĿĹ\nåĮºåĿĹ éĵ¾\nå¤§ è¿ŀ\nè¿Ļ ç±»\nåıĺ æĪĲäºĨ\néĤĦ æĺ¯\nåįļ å®¢\nçı¾ åľ¨\nä¸Ģ æĸ¹\nå®ĮæĪĲ äºĨ\nè¿Ļä¸ª æĹ¶åĢĻ\nåħ¨ å¹´\nä¸Ĭ çº¿\nç½ Ĳ\nç«ŀ èµĽ\nåĩºçīĪ ç¤¾\nåĵ¥ åĵ¥\nå¯ «\nå¾Ĺ ä»¥\nèĬ± åĽŃ\näºĨ èµ·æĿ¥\nèĦ±è´« æĶ»åĿļ\nçļĦ åİŁåĪĻ\nè®² è§£\næ¶Ī åĮĸ\næįŁ å®³\næļĤ æĹ¶\nå¾Ĺ çŁ¥\néĢĤ çĶ¨\néĹ¨ åºĹ\nè§£ è¯»\næĻ® åıĬ\näººæ°ĳ æ³ķéĻ¢\nåī¯ ä¸»ä»»\nå¿ĥ çģµ\nè¯Ĭ æĸŃ\nç¾İ å¥³\næŁ ¯\nå¹´ ä»¥æĿ¥\næ´» è·ĥ\nåĢŁ åĬ©\nåħ± å»º\nè¯ī è®¼\næĶ¾ æĿ¾\nçªĹ åı£\nä¼ģ æ¥Ń\nåĬł æĭ¿\nåĬłæĭ¿ å¤§\nä¹° äºĨ\nä¸» æµģ\næĩĤ å¾Ĺ\nå°Ĩ åħ¶\néĢı æĺİ\nå·¥ä½ľ ä¸Ń\nèĤ¡ ä»·\næ¡£ æ¡Ī\næ²¡æľī ä»»ä½ķ\nåĳĬ çŁ¥\nå¹´ åĪĿ\næĹ¥ ä¸ĭåįĪ\nåİĤ åķĨ\nèĬĤ å¥ı\nä¸» å¯¼\nè£ Ŀ\nåħ³éĶ® è¯į\nèģĬ å¤©\nåĨĻ ä½ľ\næĶ¹éĿ© å¼ĢæĶ¾\næľī æľĽ\néĢļ æĬ¥\nèĲ Į\næĢ» é¢Ŀ\nçŁŃ æľŁ\nä¸Ģ çķª\nçĶŁæ´» çļĦ\nåĮĸ çļĦ\næĺ¥ å¤©\nè¿Ļ åľº\næĸ°å¼Ģ ä¼łå¥ĩ\næĺ¯ è¦ģ\nå°ļ æľª\nåıĺ æĽ´\nä¸Ģ åĳ¨\nå®¢ è§Ĥ\næĹ¥ èĩ³\né¹ °\nçİ ²\nå°Ĩ æĿ¥\nå®¢ äºº\nåıĺ éĿ©\nè¯´ äºĨ\nåİŁ çĲĨ\nèģĮ åĬ¡\nåıĪ æľī\nä¸Ģ åı¥è¯Ŀ\næĦŁ åıĹåĪ°\nç¬Ķ èĢħ\nç§» æ°ĳ\nè¥¿ åįĹ\nä¹ĥ èĩ³\næŃ£ è§Ħ\nåĪĿ ä¸Ń\nçĬ ¬\nå½ĵ äºĭ\nå½ĵäºĭ äºº\næĪĳä»¬ è¦ģ\nåħ¥ åı£\néĤ£ æĹ¶\næľīéĻĲ è´£ä»»\nå°ĳ å¥³\nè¿Ļä¹Ī å¤ļ\nåĪĨ åħ¬åı¸\nå®ĩ å®Ļ\nçļĦ éĢīæĭ©\nå§Ĳ å§Ĳ\nåıĳ èµ·\nè» į\næĽ´å¥½ åľ°\néĻĨ ç»Ń\næľ¬ æľįåĭĻ\nå« ©\nèµ¶ ç´§\nèĦĤ èĤª\nç¬¬äºĮ å¤©\næĪĳ ä¼ļ\nä¸¤ ä½į\næķ ²\nåħ¬å®ī æľºåħ³\nç§ĳæĬĢ åĪĽæĸ°\nå°º å¯¸\nè¾Ĳ å°Ħ\nå®Ĺ æķĻ\nè½¬ æį¢\nåĩº çİ°åľ¨\nä¸Ģ é¢Ĺ\næľŁ éĻĲ\nåĲĮåŃ¦ ä»¬\nåĮĹ æĸ¹\nä½ł å°±\nä¸Ģå¸¦ ä¸Ģè·¯\nèĢģ å©Ĩ\næ¸¸æĪı çİ©å®¶\nçļĦ ç»ĵæŀľ\nè¡¥ åģ¿\nå¤ĸ è´¸\nå¯¹ å¾ħ\nç»´ çĶŁç´ł\nç»ıéĶĢ åķĨ\nè¿ĺ å°Ĩ\nåŃĲ å¥³\næĽ´ é«ĺ\nä¸į å¤§\néī´ å®ļ\nè®© ä»ĸä»¬\næīĢè°ĵ çļĦ\næŃ» äºĨ\nå¸® æī¶\nåĵ² åŃ¦\nä»¥ä¸Ĭ çļĦ\nçļĦ åħ³éĶ®\næĹ© å°±\næĬ¥ ä»·\néģµ å®Ī\næī© å¼ł\næĺ¯ å¾Ī\nå¼Ģ éĢļ\næĸ° åĬł\næĸ°åĬł åĿ¡\nç¿» è¯ĳ\nè¯¢ éĹ®\né¸ Ń\nä½ĵ åĨħ\nä¸¤ ä¸ªäºº\nçĪ ¹\néľ ľ\nä¹¡æĿĳ æĮ¯åħ´\nçĿ¡ è§ī\nå®ĺ åĳĺ\nåĪĽ å§ĭ\nåĪĽå§ĭ äºº\nä¼Ĺ äºº\nåį³ ä¾¿\nçĸ« èĭĹ\nä¼ģä¸ļ å®¶\næ¸ £\nç²¾ åĬĽ\nå¤ĸ éĥ¨\nèģª æĺİ\nè¿Ļ ä¹Ł\nå½ķ åıĸ\nåĨ² çªģ\nåħ¨ èº«\nåŃ£ èĬĤ\nå¿½ çĦ¶\nçļĦ æĢģåº¦\nåĤ¨ å¤ĩ\nä¿Ŀ åħ»\nçļĦ æĥ³æ³ķ\nä¸Ĭæµ· å¸Ĥ\næĲº æīĭ\nçļĦ ä¿¡æģ¯\nåķĨ åľº\nçļĦ æĢĿæĥ³\næĿĥ åĬĽ\næ¯« æĹł\næĢĢ åŃķ\nç¡¬ ä»¶\nåĨħ èĴĻåı¤\næİ¢ è®¨\nåħ» çĶŁ\nçļĦ è¡¨çİ°\nç©º ä¸Ń\næģĲ æĢĸ\nå¾Ī é«ĺ\nç»ıæµİ ç¤¾ä¼ļ\nä¸Ĭ æĿ¥\nå»¶ ç»Ń\néĩį å¤į\néĺ² èĮĥ\nçļĦ å½¢å¼ı\næľĪ åºķ\nèĢģ å¹´äºº\nç»¿ åĮĸ\nå±± åĮº\næĭ¿ åĩº\næĹħ å®¢\næĽ´ æį¢\nåħ¬ ä¸»\nèĬĤ çº¦\nåħ¨ åİ¿\nåĽŀ æĬ¥\nçĲĨ æĢ§\nçĸ¯ çĭĤ\næ¶ī å«Į\nåī§ æĥħ\nåĨ¬ åŃ£\nåĲİ ç»Ń\nè¿Ļæĺ¯ ä¸Ģä¸ª\næ¼Ķ è®²\nä¸Ģ å±Ĥ\næľīåħ³ éĥ¨éĹ¨\næĹł å¥Ī\nç§į ç±»\nçĽ¸åħ³ çļĦ\næĪĸèĢħ æĺ¯\næī¶ æĮģ\nå¤ļ æķ°\nçļĦ ä½ľåĵģ\nä¸ĭ ä¸ĢæŃ¥\nå¸Ī åĤħ\né«ĺéĢŁ åħ¬è·¯\nå¥½ åıĭ\nä¼ĺç§Ģ çļĦ\nè¿Ľ äºĨ\næģĲ æĢķ\näºĨ åĲ§\nå¤§ è§Ħæ¨¡\nçļĦ ä¸ĸçķĮ\næĢĢ çĸĳ\nå· ·\nåħ´ å¥ĭ\næĪ °\næĿĳ éĩĮ\næľĭåıĭ åľĪ\nåĨ¬ å¤©\nä¸Ńåįİ äººæ°ĳ\nåįı åķĨ\nè¯Ħ éĢī\næĹ Ń\nå¢ŀåĬł äºĨ\nåıĹ ä¼¤\nä¸Ģ èĤ¡\nä¾¿ æį·\nä¸ ĳ\né¹ ¤\nå¤ĸ è§Ĥ\nå·¥ç¨ĭ å¸Ī\nåĴĮ åħ¶ä»ĸ\nè¿Ļ å°±\nä¸Ńå°ı ä¼ģä¸ļ\nè¥¿ åĮĹ\nåĽ½æľī ä¼ģä¸ļ\nèĭ¥ æĺ¯\nåı¯ æĥľ\nçĶŁ æĹ¥\nåĩ ½\nä¹° åįĸ\nç¥Ŀ ç¦ı\näººæ°ĳ ç¾¤ä¼Ĺ\nåħī æĺİ\nåħ¬ å¯ĵ\næĺ¯ è°ģ\næĪĳ çŁ¥éģĵ\nè¯Ń æĸĩ\næķı æĦŁ\nä¸įéĶĻ çļĦ\næĿ¥ è®²\næ³¢ åĬ¨\nçļĦ ç¬¬ä¸Ģ\nåľ° éľĩ\nåľ¨ åħ¨åĽ½\néª¨ å¹²\nå®ī ç½®\nå®¶ çĶµ\nä¸İ æŃ¤\nä¸İæŃ¤ åĲĮæĹ¶\nåıĹ çģ¾\nçĥŃ çº¿\nçļĦ æĬĢæľ¯\næµĭ éĩı\nä¾Ŀ èµĸ\nä¸ŃåĽ½ çļĦ\nçī¹ æĢ§\nè¾ĥ é«ĺ\nè¸ ©\nä¼ļ åľ¨\nå»º éĢł\nå¯¼ èĪª\næĥ³ èµ·\nåħ¨ ä¸ĸçķĮ\nå»º æĿĲ\nç¯ Ģ\nçļĦ åŁºç¡Ģ\nèĩªåĬ¨ åĮĸ\nåīį åĲİ\nçĿ¡ çľł\næİ¨ è¡Į\næį® äºĨè§£\nä»Ģä¹Ī æĹ¶åĢĻ\nä¸į åĸľæ¬¢\nçħ¤ çĤŃ\néĤ£ä¹Ī å¤ļ\nå¸Ĥåľº åĮĸ\nä¸įç®¡ æĺ¯\nç«ĭ åľº\néĥ½ æ²¡\nè¯¾ é¢ĺ\næĪĳä»¬ å°Ĩ\nè¿ĩ çļĦ\nåĨį åĬłä¸Ĭ\nçĪ ¾\nèº« æĿĲ\nçĶ· å¥³\nè¿ľ è¿ľ\nçĶ· çĶŁ\nèĩªèº« çļĦ\nè´Ł æĭħ\nçĻ¾ ä¸ĩ\nè¥¿ çıŃ\nè¥¿çıŃ çīĻ\nåĩĢ åĪ©æ¶¦\næ¾³ å¤§\næ¾³å¤§ åĪ©äºļ\nä¸į åİ»\næī¿ åıĹ\næ¥¼ çĽĺ\nå¢ĥ åĨħ\næ·· åĩĿ\næ··åĩĿ åľŁ\næĢĿæĥ³ æĶ¿æ²»\nå¸Ĥ åĮº\næĭĽ æłĩ\nåĽ¢ ä½ĵ\nè¿Ľ åº¦\nåĨĽ éĺŁ\nåıį å¼¹\näºĨä¸Ģ äºĽ\næİ¥ å¾ħ\nçļĦ åŃ¦ä¹ł\néħį éĢģ\né£Łåĵģ å®īåħ¨\næĽ¿ ä»£\næĺ¯ ä»¥\néĢļ çĶ¨\nçłĶç©¶ æīĢ\nç¦ ħ\næī Ķ\néļĶ ç¦»\nä¸ĩ å¹³æĸ¹ç±³\nçļĦ è§Ħå®ļ\nç»Ļ æĪĳä»¬\næ¿Ģ åħī\nä¼ļ åĩºçİ°\nçŁŃ ä¿¡\nç©¿ çĿĢ\næ²Ī éĺ³\næķĻ æĿĲ\néĺ² çĸ«\nä¼ĺ èī¯\nçº¦ å®ļ\næĪĳ çľģ\nåħ¬ æ°ĳ\néģ¸ æĵ\néģ¸æĵ ĩ\nå·² æĪĲä¸º\nä¸į å¿ħ\nç¥ĸ åĽ½\nå¹¶ æľª\nåľŁ å£¤\nå¾® ç¬ĳ\näºĭä¸ļ åįķä½į\nçļĦ æ¸¸æĪı\nåħ¬ ç¤º\nåĲĪçĲĨ çļĦ\nçª Ŀ\næ°Ķ è±¡\nå®¶ ä¸Ń\näº® çĽ¸\nåį« æĺŁ\nè®° è½½\nè§Ĩ éĩİ\nåľ°åĮº çļĦ\nä½Ĩ ä»ĸ\nèĤĮ èĤī\näºı æįŁ\nåĬŀ åŃ¦\nä¸Ģ è¡Į\nè¯ŀ çĶŁ\nåıĳå¸ĥ çļĦ\nçļĦ æľįåĬ¡\nçļĦ çłĶç©¶\nåĳ¨ æľ«\näº§ä¸ļ åĽŃ\né«ĺ æ¸©\næĪĲåĬŁ çļĦ\næŃ¥ éª¤\nåŃĺ åĤ¨\nåŃĲ åħ¬åı¸\nè®© å¥¹\nä¸Ń æľī\nåĺī å®¾\nå¦ ®\næĺİ å¹´\näºĨ åĲĹ\näºī è®®\næĪ Ī\nä¸Ģ æľ¬\nç¾İä¸½ çļĦ\nä½ł è¯´\nå¤§ äºº\næĶ» çķ¥\nä¸į æľĥ\nå¾ħ éģĩ\nä¸Ģ è¾Ĩ\nçīĪæĿĥ æīĢæľī\næ°ĳ ä¼Ĺ\nåĬŁ å¤«\nå±ķ ä¼ļ\nå¤§ èĦĳ\næ¯ı æľĪ\nå°ı éº¦\næµĻæ±Ł çľģ\nçļĦ æīĢæľī\nä¸ĭ æ»ĳ\nèĵĿ èī²\nè¦ģ æĥ³\nåŃ¦çĶŁ çļĦ\nå½ĵ ä½ł\nä½ľ æĪĺ\nå®¶ ä¹¡\nå¤ļ åĲį\né«ĺ äºİ\nåĿļ å¼º\nè¿ŀ éĶģ\nåĲİ æŀľ\näºº äºĭ\nç´ ħ\næ¿Ģ åĬ¨\nè¿Ľ æĶ»\nç© Ĩ\nä¸ ĺ\nè®© èĩªå·±\nä»¥ æŃ¤\nå¤« äºº\nå¼Ģ è®¾\næ°Ķ è´¨\né¸¡ èĽĭ\nçĦ¡ æ³ķ\nåĲĥ äºĨ\nåĪĨåĪ« ä¸º\nèģĶåĲĪ åĽ½\nå½ĵ ä»£\nå¦Ĥæŀľ æĺ¯\nè¿ľ ç¨ĭ\nåĸ Ĥ\nè®° ä½ı\næ¸ħ åįķ\nåĲĪä½ľ ä¼Ļä¼´\nåİ» åģļ\næķħ éļľ\næ¨¡ æĭŁ\nå¸Ī çĶŁ\nåīį æĿ¥\nçĶµè§Ĩ åī§\nçĥŃ çĪ±\néľ² åĩº\né«ĺ å±Ĥ\nçĶµ åĻ¨\nçºª å¾ĭ\nå¼Ģåıĳ åķĨ\néķ¿ å®ī\nè½½ ä½ĵ\nçļĦ å°±æĺ¯\nè¢« äºº\nåıĹ çĲĨ\nç¯® çĲĥ\nèİ İ\näº¤ ç»Ļ\næľªæĿ¥ çļĦ\nä¸¤ å¤§\nåĲķ å¸ĥ\nçŃī äºº\nçļĦ æĹ¥åŃĲ\nåĲĪä½ľ ç¤¾\næĮĳ éĢī\nåŃĺ æ¬¾\nç³»ç»Ł çļĦ\næĬĬ å®ĥ\næ²¡æľī ä»Ģä¹Ī\nä»İ æŃ¤\nä¸Ń åįĪ\nçĸ¼ çĹĽ\nå·© åĽº\næµª æ¼«\nçĽ¸åħ³ éĥ¨éĹ¨\néķ¿ åŁİ\nçº¤ ç»´\nä¸Ĭ éĹ¨\nçĪĨ çĤ¸\nèµ· çĤ¹\nçļĦ éĢļçŁ¥\nèĢĮ æĿ¥\nçļĦ èĢģ\næīĭ éĩĮ\nè¯Ń éŁ³\nè¾Ľ èĭ¦\næ±Łèĭı çľģ\nçĶ¨ äºĨ\nèº«ä»½ è¯ģ\næľī åĬ©\næľīåĬ© äºİ\nçī© èģĶç½ĳ\nåĩº éĹ¨\nå¼Ł åŃĲ\næĥ ¹\nè¿Ļä»¶ äºĭ\næĪĳä»¬ åı¯ä»¥\nçļĦ çĶŁåĳ½\næľīä¸Ģ ç§į\nåºĹ éĵº\nåıĮ æīĭ\nçļĦ æ¶Īæģ¯\nèĢĲ å¿ĥ\nå°´ å°¬\néĤ£ å¤©\né¦ĸ æī¹\næĺ¯ä¸Ģ å®¶\näºº æ°Ķ\nåıį æŃ£\næĪĳ åĴĮ\nå®ł çī©\nä¸į å¯¹\nå¯» æ±Ĥ\nçĽ¸ ä¼¼\nåľ¨ ç¾İåĽ½\nåı« åģļ\nåĹ İ\nç«ĭ è¶³\nçĶ¨ éĢĶ\nåħ Ĩ\nå¤§ æ°Ķ\nåĲĳ ä¸Ĭ\nä»ĸ å°±\né¡¹çĽ® å»ºè®¾\nèĭ¥ å¹²\næĺ¯ æľī\næ¿Ģ æĥħ\nçļĦ æĦıä¹ī\næĺ Ń\nä¸¥éĩį çļĦ\nå¯Ĩ éĽĨ\nèĪŀ è¹Ī\nèį£ èİ·\nèİ· æĤī\næ±Ł åįĹ\nåģĩ å¦Ĥ\næĪ· å¤ĸ\nçº¿ ç´¢\nç§ģ äºº\nè½¬åŀĭ åįĩçº§\nçļĦ ä»·åĢ¼\nåįķ çĭ¬\nèĢģ çĻ¾å§ĵ\nå°į æĸ¼\nåĽ½éĻħ åĮĸ\nä¼° åĢ¼\næľįåĬ¡ ä¸ļ\nèĩ Ń\næİī äºĨ\nè§£åĨ³ äºĨ\nä¹Ł ä¸įèĥ½\nåħ ¹\næĸ¯ çī¹\næķħ æĦı\nè¿ĩ åº¦\nèĬĤ æĹ¥\nçĻ½ çĻľ\nçĻ½çĻľ é£İ\nç»§ æī¿\näºĨ ä¸įå°ĳ\näºĮ äºº\nè§ģ éĿ¢\næĥ³ æĥ³\nå¤į åĲĪ\nåº· å¤į\nåİ¿ åŁİ\nåľ¨ åĽ½åĨħ\nåľº åľ°\néĻ¶ çĵ·\nè¿Ļ é¡¹\nçľ¼ ä¸Ń\nçł ¸\næĦŁè§ī åĪ°\næŀľ çĦ¶\næĶ¾ åħ¥\nçº¦ æĿŁ\næİĴ æŁ¥\nè½¦ ä¸»\nçļĦ æĦıæĢĿ\næĸ° åŁİ\næĥ³ çĿĢ\néģ Ĥ\nèĮ¶ åı¶\nä¹° æĪ¿\nåĨľ æĪ·\né«ĺ æīĭ\nçİī ç±³\næĸ°åĨł èĤºçĤİ\nçħ§ æĺİ\næĮĩ åįĹ\nè¸ ¢\næķĳ æı´\næĻ¯ çĤ¹\nç¨İ æĶ¶\nçļĦ æīĭ\næŃ£ å¥½\nè¦ģ æĬĬ\néļı æĦı\nåħ¶å®ŀ æĺ¯\nç»Ļ èĩªå·±\nè°Ī åĪ¤\næ¯ıå¤© éĥ½\næĢģ åĬ¿\né¢Ħ çº¦\nåİĨåı² ä¸Ĭ\nå®Ŀ è´Ŀ\nåīį è¿Ľ\nä¹Łå°±æĺ¯ è¯´\nçļĦ æĦıè§ģ\nåı£ ç½©\nåİĺ ç±³\nèĬ± è´¹\nä½ĵèĤ² æĬķæ³¨\nåħ¬ä¼Ĺ åı·\nèĳĹåĲį çļĦ\nå¼Ģ æĪ·\næĭį åįĸ\nå²ģ æľĪ\nåĨħ æ¶µ\nå®Įæķ´ çļĦ\né«ĺ åİĭ\nåħ¬åĬ¡ åĳĺ\nä½¿çĶ¨ çļĦ\nçĶŁäº§ çº¿\nå¦¹ å¦¹\nèµ° è®¿\næĺ¯ åı¯ä»¥\nåľ¨ å®¶\næļ´ åĬĽ\næ³° åĽ½\nè´¨ çĸĳ\nä¸į éģİ\nå¤©çĦ¶ æ°Ķ\nç¼º çĤ¹\nå°ı åŀĭ\nä¸įä»ħ æĺ¯\né»ĳ æļĹ\næ¢ ¨\næĸĩ æĹħ\nè¦ģ æľī\nä¸Ń å±±\nçļĦ æķ°æį®\nå¾Ĺ å¾Ī\nä»¥ ä¾¿\nå¯¹ ä»ĸ\nåĬł ä»¥\nçĻ¼ çı¾\nè®¾ å®ļ\nèĤļ åŃĲ\néĿ ĸ\nå¥ī çĮ®\nä¸į åıĺ\nåı£ ç¢ĳ\nåľ¨ åĵªéĩĮ\nä½ Ĳ\nè¿Ļ ä¸¤ä¸ª\nçļĦ æĸ¹åĲĳ\næŀ «\näºĮ æ¬¡\nçīĩ åĮº\néł Ĳ\nç£ Ĭ\næĭ¿ çĿĢ\nå·²ç»ı æĪĲä¸º\nä¹ĭ ä¸Ĭ\nå®Ĺ æĹ¨\nå¥¶ å¥¶\né«ĺæĸ° åĮº\nç¤¾ æľĥ\nè·Ł è¸ª\næľįåĬ¡ ä¸Ńå¿ĥ\næī ¯\næīĭ æĮĩ\nç¤¼ çī©\nå®¿ èĪį\nçĶ¨ å¿ĥ\næıĲé«ĺ äºĨ\näº® çĤ¹\nä¸į æĦ¿æĦı\næĴŃ æĶ¾\nå¤ļå°ĳ éĴ±\næ²¡ ä»Ģä¹Ī\næķ° åįģ\næĢ» çĽĳ\nçļĦ åŁİå¸Ĥ\næī¾ åĪ°äºĨ\nåĨħ åľ°\nåĪ° çİ°åľ¨\næĪĺæĸĹ åĬĽ\nåİŁ å§ĭ\nåĥ §\nåĢĴ æĺ¯\næľĢ åħ·\nè´«åĽ° æĪ·\néĢģ åĪ°\nçº§ åĪ«\nåĩº èµĦ\næĪª æŃ¢\nç§į åŃĲ\nèĥ½ ä¸įèĥ½\nå¹¸ è¿Ĳ\nèĸ ĩ\né¡¹ éĵ¾\næĮĤ çīĮ\nä¸Ģ æ¨£\nä¹ĺ å®¢\nèĲ½ åĲİ\nä½Ĩ æĪĳ\næĹ© åľ¨\nåĬ¨ æ¼«\nå¹³ çŃī\nå¯¹ ä½ł\nä¸į æĢķ\nå¤ĸ çķĮ\nå¤ļå¹´ æĿ¥\né¦ĸ ä¸ª\næ²³ åįĹçľģ\næĪĸ åħ¶ä»ĸ\néķľ å¤´\nåįĹ æĺĮ\nä¸Ģ éĿ¢\néĢłæĪĲ çļĦ\nå´ Ķ\nçŃ Ĵ\næķĻèĤ² éĥ¨\nåľ° åŁŁ\næĺĨ æĺİ\nå·´ é»İ\næīĭ æ¸¸\nä¸Ģ æĹ¶\nçł į\né¡¶ çº§\nåħ± è®¡\nåİŁ æ²¹\nè¾ī çħĮ\nè¯´ æĺ¯\næĸ°åįİ ç¤¾\nç»ıåİĨ äºĨ\nä¸į æŃ¢\nè¦ģ ä¹Ī\nèĢħ çļĦ\næĢ» æĬķèµĦ\nè¡Į é©¶\nä¸Ĭ å¸Ŀ\nå¹´ çºª\nçĲ ¼\nä¼ł è¯´\nç²¾ èĭ±\næĸ¹ éĴĪ\næ±Ł æ¹ĸ\næĪĲ çĤº\næĢ» éĩı\næĬķ æĶ¾\nåĬ¨ çĶ»\nèĹ ¤\nçĶµ æºĲ\néĴ Ļ\nåĲĮ è¡Į\næĻ®éĢļ çļĦ\nåĽ¾ä¹¦ é¦Ĩ\nè¯Ī éªĹ\næħĪ åĸĦ\nè¿Ļ ä»½\nä¸»æĮģ äºº\nå°± è¿Ļæł·\nèĢĮ æĪĲ\nèĩªè¡Į è½¦\nä¸ŃåĽ½ çī¹èī²\nèĤ¿ çĺ¤\nåĲ ¾\nå¼Ł å¼Ł\nåıĹ çĽĬ\néĢīæĭ© äºĨ\næĺİæĺ¾ çļĦ\næĬ¥ èĢĥ\nç¬ĳ éģĵ\néĽĸ çĦ¶\næ¸© å·ŀ\néĿŀ æ´²\nç§į ç§į\nåıĤåĬł äºĨ\nè´§ è¿Ĳ\néļı ä¾¿\nå°± æ²¡æľī\nç¸ £\nå¤® è§Ĩ\nç©¿ è¶Ĭ\nçļĦ çİ°è±¡\nåĩł æ¬¡\nçļĦ é£İéĻ©\næŃĮ æĽ²\næľ¬ å±Ĭ\nå¹´ åĨħ\nä¸į è¶ħè¿ĩ\nè¿ĩ å¤ļ\nå¿ħé¡» è¦ģ\nç»ĵ è®º\nåĢŁ éī´\nç¥ŀ å¥ĩ\næľŁ æľĽ\nä¸ĵ äº«\néĿŀå¸¸ éĩįè¦ģ\næĦıè¯Ĩ åĪ°\nåĲĪ å¹¶\næĬĬ èĩªå·±\nå¥Ĺ è£ħ\néŃĶ æ³ķ\nå¤ı åŃ£\nä¸į åĥı\nå¢ĥ çķĮ\næĥĬ åĸľ\næľīä¸Ģ å¤©\nçĦ¦ çĤ¹\næĪĳ è®¤ä¸º\nåħ° å·ŀ\nçĶµ æ°Ķ\nèģĶç³» æĪĳä»¬\nç§ĳ æĻ®\nå¥¹ è¯´\nçļĦ æĸĩç«ł\nå¥ĩ æĢª\nåıĭ å¥½\né¥® æĸĻ\nçļĦ æĶ¯æĮģ\nçŃĶ åºĶ\néĩį éĩı\nçĳ ¶\nåĩı è½»\nç§ĳåŃ¦ å®¶\nå·´ è¥¿\néĩĳèŀį æľºæŀĦ\nåħļ å§Ķä¹¦è®°\nè²¸ æ¬¾\nç²¾ èĩ´\nä»İ æľª\nåį° åĪ·\nåĽŀ é¡¾\né¦ĸ éĥ½\nåıĳ èĤ²\néĹ® éģĵ\nè¾¾ åĪ°äºĨ\nå¿į ä¸įä½ı\næīį æľī\næįĲ èµł\nä½Ľ æķĻ\nä¸į æ¸ħ\néĺŁ éķ¿\nçĽ¸ åıį\næĬ¥ èŃ¦\nå¤§ åħ¨\næ¬§ çĽŁ\nå¸® å¿Ļ\nçļĦ æĻĤåĢĻ\nçĽ® å½ķ\nè¶³ ä»¥\nèī° éļ¾\nä»ĸ ä¹Ł\nå·¥ ä½ľèĢħ\nå¤´ èĦĳ\nç¼º éĻ·\næĪĲç«ĭ äºĨ\nå°± å¼Ģå§ĭ\nè®¤ åĲĮ\né»Ħ èī²\nçĹħ æĥħ\nè¦º å¾Ĺ\nè¿Ļ ä¸¤\nä¿¡ ä»°\nåľĭ å®¶\nä¸įä»ħä»ħ æĺ¯\nçĭ¬ å®¶\nèĪ¬ çļĦ\næĿĲ è´¨\næµ· ä¸Ĭ\nçĤº äºĨ\næľºåĬ¨ è½¦\nçĽ¸å½ĵ äºİ\nå¤ļåħĥ åĮĸ\næĽ´ å¤§çļĦ\nèĽ ®\nåģĩ æľŁ\nå¼ı çļĦ\näº¤éĢļ è¿Ĳè¾ĵ\nçľģ å§Ķ\nä¸į ç®Ĺ\næĶ¾ ä¸ĭ\néĹ ¯\näºº åľ¨\næ¸¯ åı£\næĹ¨ åľ¨\nåĳ½ ä»¤\næŁĲ ä¸ª\nå¹³ ç¨³\nåıª å¥½\näºº äºº\näº ŀ\näºĮ ç»´\näºĮç»´ çłģ\næŀģ ä¸º\nåĪ« å¢ħ\nåħ¶ ä½Ļ\nå¤§ äºĭ\nä¸»ç®¡ éĥ¨éĹ¨\næĹł éĶ¡\néĹ µ\néģŃ åĪ°\nè¯´ è¿ĩ\nä¸º ä½ł\nè§£ çŃĶ\néªĮ æĶ¶\nçļĦ ç»ıéªĮ\nåĮ¹ éħį\nçģ« ç®Ń\nè±ª åįİ\næŁĲ æŁĲ\nçļĦ æĹ¶ä»£\nä¹¦ éĿ¢\næģĴ å¤§\nå»¶ éķ¿\nä¸Ģ åĲĮ\næľª èĥ½\näº¤ æį¢\nçĶ¢ åĵģ\nçŃī åĪ°\nåĪĨ ç¦»\næīĵ çĶµè¯Ŀ\nå¹² çĩ¥\nè¾ĥ å¤ļ\nå¤ļå¹´ çļĦ\nèĥĮæĻ¯ ä¸ĭ\nä¸º ä¾ĭ\næĳĺ è¦ģ\nå´Ľ èµ·\næŃ¤ åĪ»\næľī æľºä¼ļ\næĿ¡ æ¬¾\né¢Ĩå¯¼ å°ıç»Ħ\nçļĦ èº«ä½ĵ\nåįķ ä¸Ģ\nå¤® è¡Į\nä¸įæĸŃ æıĲé«ĺ\nä»·åĢ¼ è§Ĥ\nèĬ ½\nèĲ į\næ³ķå¾ĭ æ³ķè§Ħ\nä¸į éĶĪ\nä¸įéĶĪ éĴ¢\nåĩº äºİ\nèĻļ æĭŁ\næį® æĤī\nçĥ¦ æģ¼\nåħ¨ æĸ°çļĦ\næī« æıı\nçĻ» éĻĨ\nèīºæľ¯ å®¶\nçļĦ é£Łçī©\nçļĦ åŃĺåľ¨\nå®¢ åİħ\næĪĳä»¬ å°±\næŁ¥çľĭ æĽ´å¤ļ\nè¯Ħ å®¡\nå¸Ĥ åł´\nè¬ Ľ\nå·¨ å¤´\nä¸ŃåĽ½ ç»ıæµİ\näºĨ èĩªå·±çļĦ\nåĨ³ è®®\nçĽĳçĿ£ ç®¡çĲĨ\næĬķ ç¥¨\nåĨį åº¦\nè¡Į çĤº\næ³¨ åħ¥\nä½ľä¸º ä¸Ģä¸ª\næ¯ıä¸ªäºº éĥ½\nåįķ åħĥ\nè¦ģ çŁ¥éģĵ\nè¢« ç§°ä¸º\nä¹ĭ éĻħ\nè§£ éĻ¤\nä¸ ¸\næº «\nä¸ī æĺŁ\né²ľ æĺİ\nä¹Ł éĥ½\næĹ¶ æľº\nåĩº æīĭ\næĥħ å½¢\nåķĨ è´¸\néĢī ä¸¾\nå¯¹ èĩªå·±\nçĶŁ åĬ¨\nåħĭ æľį\nä¸ª ä½ĵ\nèĭ ĳ\nç¨ ±\nå¤§ åİ¦\næĺ¯ å¯¹\nåĪ© æģ¯\nè¿ĲåĬ¨ åĳĺ\nåĮĸ è§£\nåīį æ²¿\næĦŁ æģ©\næĢ» ä¹ĭ\né«ĺæĸ° æĬĢæľ¯\nåĿĩ ä¸º\nåħ¨ åĮº\næ°Ķ æ°Ľ\nåı¯ä»¥è¯´ æĺ¯\nä½ı å®¿\nåħļåĳĺ å¹²éĥ¨\nåĹ ¯\nè·µ è¡Į\nçļĦ ä¸ĵä¸ļ\nèĢĥ éªĮ\nèķ ¾\nåħ¬ åŃĲ\nçļĦ çĬ¶æĢģ\næ½® æµģ\nä¿¡ æīĺ\nè´ ¼\nåĲĦ æĸ¹\næķĳ åĬ©\néĿŀå¸¸ çļĦ\næ¡¥ æ¢ģ\nåħ¬ æĸ¤\nä¼¼ çļĦ\nçľĭ å¥½\nå±Ģ éĥ¨\nå®ī éĿĻ\néħį ä»¶\nå¸¸ è§Ħ\nå¼Ģ è½¦\nç¬¬äºĮ æ¬¡\nä¸Ĭ çº§\nåıĤ èµĽ\nå®¶ å±ŀ\nå¼º åĬ¿\nåľ¨ ä»ĸ\nåĲĳ åīį\nä¹ĭ åľ°\néĥ ¡\nè¡Į ç¨ĭ\nèŃ¦ åĳĬ\nè§Ħå®ļ çļĦ\nåķĨ åŁİ\näºĶ å¤§\næķĻ å®¤\nåįģ è¶³\næīĢä»¥ åľ¨\nå°Ĩ ç»§ç»Ń\nçŃī æĸ¹å¼ı\nå®¶ ä¼ģä¸ļ\näº¤ ä»ĺ\nçĤ¹ è¯Ħ\nç»ĵ ç®Ĺ\nä¹Ł åı¯\nå¤ĸ æ±ĩ\nè¿Ļç§į æĥħåĨµ\næİĪ äºĪ\nå¸ĥ ç½®\næĪĲç«ĭ äºİ\né¢Ħ èŃ¦\nç®¡çĲĨ äººåĳĺ\nå©ļ ç¤¼\nç»ĵæĿŁ åĲİ\nåħ¥ éĢī\næĹł æ¯Ķ\nåĴĮ åıĳå±ķ\nçĻ½ éħĴ\nçİ© åħ·\nä¸ĩ ç¾İåħĥ\nçļĦ æĪĲç»©\næĭį çħ§\nèĢĥèĻĳ åĪ°\nä¼ģä¸ļ åıĳå±ķ\näºĨ ä¸ª\nçĶŁ æ°Ķ\nçļĦ å¥³äºº\näºĶ åįģ\nçĪ· çĪ·\nçº½ çº¦\néĥ½ è¢«\nä¸Ĭ è¯¾\nçĽ ¡\nä¼łç»Ł æĸĩåĮĸ\næ½ľ åľ¨\nåıĳ å°Ħ\nä¸Ģ èº«\néĺ² å®Ī\nåĪ ®\né¢ĺ çĽ®\nåľ¨ åĨħçļĦ\nç¾İ å¥½çļĦ\nè¿ĻéĩĮ çļĦ\nä¸Ģ ä¸Ŀ\näºº åĿĩ\nåĢ¡ å¯¼\nèº« åĲİ\næī© å±ķ\nå¤§ éĹ¨\nå°± è¢«\nè¯¥ é¡¹çĽ®\næŀ¶ æŀĦ\nä¸Ģ åı£\nä¿¡æģ¯ æĬĢæľ¯\nå¼Ģ ä¸ļ\næĶ¶ åıĸ\nç½ĳ é¡µ\næĶ¯ æı´\nå°ģ éĹŃ\nå¡ĳ éĢł\nå¤§ èĥĨ\nå¿«éĢŁ åıĳå±ķ\nçľĭ ä¼¼\næ¸ Ŀ\nè¿Ļæł· ä¸Ģä¸ª\næ¨¡ åĿĹ\næ³¨æĦı åĪ°\nçł´ è§£\nèĩª ä»İ\nåĳµ åĳµ\nä¹ĭ å¾Į\nä¹ĭ æĹħ\nè·Ł æĪĳ\næ³ķ äºº\næİĴè¡Į æ¦ľ\nåĿļ å®Ī\nå¥½ å¤Ħ\nçŁ³ å¤´\nå¹¶ å°Ĩ\nèĪ ±\næŃ ĩ\nä¸¤ å²¸\nå¤ļ ä¹ħ\nè±¡ å¾ģ\nä¸ªæĢ§ åĮĸ\nçļĦ è§Ĵåº¦\nå¸ Ĩ\nç¦ı å·ŀ\næŁ¥ å¤Ħ\nä¸¤ åĽ½\nåĲ¸å¼ķ äºĨ\né¦ĸ å¸Ń\nå¤§ åĵ¥\né¤ Ĭ\næ¶¨ å¹ħ\néĢī çĶ¨\nè¨± å¤ļ\nèĲ½ æĪ·\nåĵĪ å°Ķ\nåĵĪå°Ķ æ»¨\nåģļ ä»Ģä¹Ī\nä»¥ åħį\né¾ į\næĹł éľĢ\nåĪ°åºķ æĺ¯\næĢ ¡\nåĳĬè¯ī ä½ł\néĺ² æ°´\nè¿Ļ æĹ¶åĢĻ\næ¬¢ ä¹Ĳ\nè½¬ åĲĳ\nè¿Ļä¸ª åľ°åĽ¾\nåħ¥ é©»\nèįī åİŁ\næĹ¶ä»£ çļĦ\nåıĺ åĬ¨\nåĬłå¼º å¯¹\nåģ¶ å°Ķ\nå®Ī æĬ¤\næ°Ķ æ¸©\näºº éĹ´\næľĿ é²ľ\nç»ı è´¹\nåĽŃ æŀĹ\nå·¥ åľ°\nè§Ħ æł¼\nåĩł åįģ\nè¯ķ åĽ¾\nå¦ ĥ\néĤ£ æĹ¶åĢĻ\nå¼ĺ æī¬\nä¸ļ çķĮ\nçļĦ éĢŁåº¦\nä¼ļ ä¸įä¼ļ\nèĲ¥ æĶ¶\nå°ıå¾® ä¼ģä¸ļ\nçľĭ è¿ĩ\næĬĬ ä»ĸ\néģµ å¾ª\nè¿Ļ è¾¹\næ²¡æľī äºº\nå£ ¶\næ¹ĸ åįĹçľģ\næŀģ åħ¶\nçļĦäºº çĶŁ\nä»ĸ è¿ĺ\nè½¬åĮĸ ä¸º\nèµ° è¿ĩ\næĬ± çĿĢ\nçīĽ å¥¶\nä¸ĩ äº©\nå¿ĥ æĢģ\næĹ¥å¸¸ çĶŁæ´»\nä½ĵ æ£Ģ\næĻ ĥ\nçŃī é¢ĨåŁŁ\næĩī è©²\nåı¯ä»¥ çľĭåĪ°\næī¾ ä¸įåĪ°\nèĢģ å¹´\næĬĬ æĪĳ\nç§¯ åĪĨ\næ¢³ çĲĨ\nç» ³\nçļĦ æĶ¿æ²»\nå¸Ŀ åĽ½\néĻª ä¼´\næ´Ľ éĺ³\nåħ¬ æŃ£\nå¼Ģ åı£\nçī¹èī² çļĦ\nåĽ° å¢ĥ\nä¸Ĭ æľī\nç«ĭ ä½ĵ\næīĵ å·¥\nåķ¤ éħĴ\nåľ¨ éĤ£éĩĮ\néĤ£ è¾¹\nä¸ª åĪ«\nä¸Ģå®ļ æĺ¯\nçļĦéĩįè¦ģ æĢ§\nä¸» å¼ł\nåĴĮ æľįåĬ¡\nä¸Ĭ ç½ĳ\nè¡¥ åĬ©\nåıª éľĢ\nå¼ ¦\néģ ®\nåĬĽ äºī\nåº¦ è¿ĩ\nèĳ ¬\né¡¿ æĹ¶\néĦ ī\nçºº ç»ĩ\nåľ° åĿĹ\nä¿¡çĶ¨ åį¡\nç½ļ æ¬¾\nåĳĬè¯ī æĪĳ\néĽ Ļ\nä¹¦ çĶ»\nè¨Ń è¨Ī\næĢ» ä¼ļ\nåĪ¤ åĨ³\nä¿¡ èªī\nä¸ª èĤ¡\nå¹³ å¸¸\næĢİ éº¼\nä½ĵ çİ°åľ¨\né»Ħ æ²³\nåĽĽå·Ŀ çľģ\nçľŁ çĽ¸\nåĲĦé¡¹ å·¥ä½ľ\nåĬ¨ åĳĺ\nå³° ä¼ļ\nä¸Ģ æľŁ\næľī ä¸Ģå®ļçļĦ\né«ĺåº¦ éĩįè§Ĩ\nç¹ģ èį£\nåıĳçİ° äºĨ\nç½ĳ çº¢\næīĭ æ³ķ\nå®¶ åĽŃ\nä»ª åĻ¨\nè¾ĥ ä½İ\nçļĦ å®īåħ¨\næ¡ Ĳ\nä»ĺ æ¬¾\næĬĳ åĪ¶\nåįĵ è¶Ĭ\næŃ£ éĿ¢\nåĵ ĳ\nå¼º åĪ¶\nä»Ĭå¤© çļĦ\næĪĺ èĥľ\næ¥¼ å¸Ĥ\næĭ¿ ä¸ĭ\né¢ľ åĢ¼\nä¸ľ éĥ¨\nçłĶ åĪ¶\nçļĦ æĪĺçķ¥\nåľ¨ ä¸Ģä¸ª\nä¸ī äºº\nå®Į äºĨ\næĸ° æĬĢæľ¯\nç»ıæµİ æķĪçĽĬ\nå¯Į æľī\næ¾³ æ´²\nåĬ© çĲĨ\né¢Ĩ åıĸ\nè° Ń\nçĩĥ çĥ§\nç´ł åħ»\néĤĦ æľī\nè¿Ľ èĢĮ\nä»Ģä¹Ī æĺ¯\nçłĶç©¶ ä¸Ńå¿ĥ\néĢĤ çĶ¨äºİ\næİ¥ æĶ¶\nå¤± æľĽ\näºĮ çº§\néĹ´ çļĦ\nåİŁ æłĩé¢ĺ\nèªį çĤº\næį ¡\nå¯¹ çĿĢ\nå¯¹ éĿ¢\nä¸Ń åİŁ\néĵ ĥ\nçĶŁäº§ çļĦ\nåıĳå¸ĥ ä¼ļ\nå£« åħµ\nè¿Ļ åı¥è¯Ŀ\nç¼´ çº³\nä¸Ģä¸ª ä¸ª\nåŃ¸ çĶŁ\nçĸĳ éĹ®\näº¤ èŃ¦\nç¤ºèĮĥ åĮº\nå¤© ä½¿\nåľ¨ ä¸Ĭæµ·\nåĲĮ æĻĤ\nè½» æĺĵ\nåĶ¯ä¸Ģ çļĦ\nçĥŃ éĹ¹\nä¹Ĳ è§Ĥ\nçļĦ èº«ä»½\nåĸĦ äºİ\nå¤§ åİħ\nèĤ¯å®ļ æĺ¯\néĺ² çģ«\nå¤ĸ åĩº\næį® è¯´\né¡¹çĽ® çļĦ\nä¸Ģ åı°\nèĻļ åģĩ\nä¸Ģ ç¬Ķ\nç«ĭ æ³ķ\nä¸¥ èĤĥ\næī¿ åĬŀ\nåįģ åĩł\nçļĦ ç©ºéĹ´\næľ¬ ç½ĳç«Ļ\nåģļ å¾Ĺ\nä¿Ŀ æ¸©\næľĪ åĪĿ\nåľ¨ ç½ĳä¸Ĭ\nåĲĦ æĸ¹éĿ¢\nä¸ī å¤©\näº¤æĺĵ æīĢ\nè§£ æŀĲ\nåħļ ä¸Ńå¤®\nè¿Ľ åĩºåı£\nåĴĮ ç¤¾ä¼ļ\næ¬¡ æķ°\nä¹ĭ å®¶\nç»´ åº¦\næ´¾åĩº æīĢ\näº§çĶŁ äºĨ\nå¸¦ æľī\nå¾Ī å¼º\næľīäºĽ äºº\nå¹´ åĲİ\näºĨ è®¸å¤ļ\nå¯Ĩ åº¦\nåŃ¦ æľŁ\nçıł æµ·\næľĢå¤ļ çļĦ\nè¾¹ ç¼ĺ\nå®¹ éĩı\nç¬¬äºĮ ä¸ª\nä¸ĢçĽ´ æĺ¯\nä¸į ç¦ģ\næŃ ²\nä»ĭç»į äºĨ\nä¼ĺ éĽħ\næ¯Ķ è¼ĥ\nèģĮ ä½į\næ¸© æŁĶ\næľī éĴ±\næľĢ é«ĺçļĦ\nåįļè§Ī ä¼ļ\nä¸į æĪĲ\néĶĻ äºĨ\nè¯ģ çĽĳ\nè¯ģçĽĳ ä¼ļ\næĪĲ äºº\nåĿĩ åĮĢ\næľī åĪ©\nè¶Ĭ åįĹ\næīĵ äºĨ\nå¥½ åĲĥ\nç³» çµ±\nè·Ł éļı\nçļĦ åľ°ä½į\næŃ£ å¦Ĥ\nç¨į å¾®\nåį° åıĳ\nåĪĽ ç«ĭ\né£İ åħī\nå°Ĩ æĪĲä¸º\nä¸į é«ĺ\né¢ĳ ç¹ģ\nè®¾ æľī\nä¼ ŀ\næĭĨ éĻ¤\nå½± åĥı\næ¸Ĺ éĢı\nå¹´ å¼Ģå§ĭ\nç½ĳ æĺĵ\nè¦ģ åģļ\nçĶµåĬ¨ è½¦\nçľŁ å¿ĥ\næµ· åĨĽ\nä¼ł æĿ¥\nå·® åĪ«\nè°¨ æħİ\nçĥŁ åı°\nåįĥ å¹´\nè¯ģ å®ŀ\nçĲ ª\nçļĦ åħ·ä½ĵ\nåĪ° å¤Ħ\nä¸į å®ľ\nèľ Ģ\nèĥ½åĬĽ åĴĮ\nçīº çī²\nçļĦ éĴ±\nå¤§ éĺŁ\né¦ĸ è¦ģ\nä¸į æĦ¿\nçİ« çĳ°\näººæ°ĳ ç½ĳ\nè¿ĺæĺ¯ è¦ģ\nåĽĽ å¹´\næįŁ ä¼¤\nçļĦ åģļæ³ķ\néĿ Ī\nè¡Ķ æİ¥\nåĲĪ æĪĲ\næ²¡ äºº\néĹ¨ æ§Ľ\nä¿¡ è´·\nçļĦ çĽ¸åħ³\nä¸ľ é£İ\nç¤¾ ä¿Ŀ\nä¸ĭ æ¸¸\nåĿĹ éĴ±\nè¿ĩ åĲİ\nçļĦ åºĶçĶ¨\né¥ ¶\né¢ģ åıĳ\nä¸Ģ å¤Ħ\nåįİ å¤ı\nä¸º ä¼ģä¸ļ\nåıª ä¼ļ\nä¾µ å®³\nçļĦ åĬŁèĥ½\nåŃ¸ ç¿Ĵ\nä¸Ńåįİ æ°ĳæĹı\nåıĳå¸ĥ äºĨ\nè¿İ æİ¥\næĪĳ èĩªå·±\nè¿ĺ éľĢè¦ģ\nå¤ªéĺ³ èĥ½\nåİ» ä¸ĸ\næĺ¯ ä½ł\nåĲĪ åĬĽ\nç»ĺ çĶ»\nåı° åĮĹ\nçĿ£ ä¿ĥ\nåĮĹ éĥ¨\næľī å¤ļå°ĳ\nå¾Ī éĩįè¦ģ\nåĪĴ åĪĨ\nåı· çº¿\næĶ¾ å¤§\nä¼ļ è¢«\nèİ· å¥ĸ\nä¹ĭ åĨħ\nå¤± åİ»äºĨ\nçİ©å®¶ ä»¬\néĩĩ éĽĨ\nå£ ¹\nå®¶ ä¼Ļ\nçĻ½ å¤©\nåĽłä¸º ä»ĸ\nç¤¾ä¼ļ æ²»çĲĨ\nå¼Ģ åĪĽ\nçĶµ ç¼Ĩ\næĸ° ä¸Ģä»£\nå¹¶ è´Ń\nå°± å·²ç»ı\nçļĦ ç¤¾ä¼ļ\néĻ¤ éĿŀ\nåı¯ä»¥ çĶ¨\nå© ī\næ¯Ķè¾ĥ å¥½\nå®ŀ ä¸ļ\nåĪĽ åĬŀ\næıĲ èµ·\né» ĥ\nä½ı åľ¨\nå¸Ĥ æĶ¿\néĿ¢ä¸´ çļĦ\nèĥ½ åľ¨\nçŁŃ çŁŃ\nçľŁ äºº\næĺİ æĺİ\nèµĦ åĬ©\nçļĦ ä¸įåĲĮ\nå°ı æľĭåıĭ\né¢ĺ æĿĲ\nç¾İ åĳ³\næĺŁ åº§\nä¸į ä¸Ģæł·çļĦ\nçľĭ ä¸Ĭåİ»\nä¸Ģ æł¹\nå¹¿ å·ŀå¸Ĥ\nåıĳçĶŁ çļĦ\né«ĺ ç§ĳæĬĢ\nä¸Ģ è¾ĪåŃĲ\näº¤ åıī\nä½ĵç³» å»ºè®¾\nåĽłä¸º æĪĳ\nçıį æĥľ\nä¸Ĭ åŃ¦\næĪĺ æľ¯\næŃ¤ ç±»\näº¤ å¾Ģ\næĮī æĳ©\näººä»¬ çļĦ\nåħ¶ å¯¦\nåİŁ æĿĲæĸĻ\næ¸´ æľĽ\nçĽ¸ å¤Ħ\nå¾® å¾®\næ® ·\nä¹ĺ åĿĲ\nå¼Ģå±ķ äºĨ\né«ĺ åĵģè´¨\næĹłäºº æľº\nä¸įæĺ¯ å¾Ī\nçļĦ æĬķèµĦ\nèĬĤ çľģ\nèĩ ī\nç²¾ éĢī\nçļĦ æłĩåĩĨ\nåįĹ éĥ¨\nè®¤è¯Ĩ åĪ°\nå¹³ éĿĻ\nèĹ ¥\næī« é»ĳ\næī«é»ĳ éĻ¤\næī«é»ĳéĻ¤ æģ¶\néĢĻ ç¨®\nå»ºçŃĳ éĿ¢ç§¯\nç¡® ç«ĭ\nç®¡çĲĨ åĬŀæ³ķ\næĦı å¿Ĺ\nä¸ ¨\nè®© åŃ©åŃĲ\næķĳ çģ¾\nå½ĵ ä»Ĭ\nçģ« çģ¾\nåĲĦ éĥ¨éĹ¨\nä¾µ çĬ¯\næ¯ı åĳ¨\næı ½\nä¸Ģæ¬¡ æĢ§\nåħ¶ä»ĸ äºº\néĶĻ è¿ĩ\nä¸İ åħ¶\nåĭĩ æ°Ķ\nçĩĥ æ°Ķ\né¦ĸ å±Ĭ\næľį é¥°\nç² ¥\nå®Į æ¯ķ\nå°± æĬĬ\nåĬŀäºĭ å¤Ħ\nä¸Ģä¼ļ åĦ¿\nç¦» ä¸įå¼Ģ\nå¦Ĥæŀľ æĤ¨\nä»ĵ åºĵ\nå¯¼ å¸Ī\nåĲĪéĢĤ çļĦ\næ¯« ç±³\nå®īåħ¨ æĢ§\nä¾Ŀ çħ§\näº§ä¸ļ åĮĸ\nä½ł çľĭ\nçľŁçļĦ å¾Ī\nåŃ¤ çĭ¬\néĺ² å¾¡\nå¾Ī ç®Ģåįķ\né£İ æ°´\nä½Ĩ ä¹Ł\næİ¨ åĩºäºĨ\næ°ĳèĲ¥ ä¼ģä¸ļ\nçłģ å¤´\nå¤įæĿĤ çļĦ\nç»ĦæĪĲ éĥ¨åĪĨ\nåħħæ»¡ äºĨ\nè¿ĳ åĩłå¹´\nçľģ æĶ¿åºľ\næľī å¿ħè¦ģ\néĻ ³\nä¹ĭ ç±»\nä¹ĭç±» çļĦ\næĢ§ ä»·\næĢ§ä»· æ¯Ķ\nåķĨ åºĹ\nå¸Ĥ åĢ¼\näººæīį åŁ¹åħ»\næ·± åıĹ\nç®¡çĲĨ å±Ģ\næģĲ æĥ§\nä»ħ æľī\næĬµ è¾¾\næµ· åħ³\nèµĭ äºĪ\näºĭ åĦ¿\nä»· éĴ±\næīĭ ä¸Ĭ\nèĩª å¾ĭ\nåħ³ çĪ±\näº« æľī\néģĹ æĨ¾\nå¾Īå¿« å°±\næĽ´ å¿«\næłĩ è¯Ĩ\nåºĨ ç¥Ŀ\nä¹Ł å¥½\nä¸į æĺĵ\næĪĳ å¾Ī\næĶ¹éĿ© åıĳå±ķ\nå¤ĸ åľ°\næĬµ æĬ¼\nè¯Ĺ äºº\nåİķ æīĢ\næĸ° åªĴä½ĵ\nèĸ Ľ\nè°Ī è¯Ŀ\nä¸Ģå®ļ ç¨ĭåº¦\nèµ° åľ¨\næľĢ å¼º\nåĬŁ çİĩ\nåħ± è¯Ĩ\nå¤§ æ¡¥\nä¸ĭ æĸ¹\nå¤ĸ èµĦ\nç¢ ±\nå·¡ è§Ĩ\næ¹ĸåĮĹ çľģ\nä¸ª çĻ¾åĪĨ\nä¸ªçĻ¾åĪĨ çĤ¹\nçļĦ è´£ä»»\nçļĦ åĵģçīĮ\nåĬ© æİ¨\nåĪĽéĢł äºĨ\nä»» èģĮ\nå¿« æį·\næĿĳ åºĦ\nåİ» çľĭ\næīį èĥ½å¤Ł\nå± ¤\næĪĳ å®¶\næĺ¯ä¸Ģ æ¬¾\nç¾ ħ\nåĨ° éĽª\næŀģ å¤§\nçģ¯ åħī\néĨ ĭ\nä¸İ åħ¶ä»ĸ\næıĲåĩº çļĦ\néĿł è¿ĳ\nè°ĥ åĬ¨\nå°½ åı¯èĥ½\nåıĳ åĬĽ\nç»Ļ å¥¹\néĢĤ éĩı\nè·¨ åĽ½\nåħĪ è¡Į\næĸ° æĿĲæĸĻ\nä½ľ äºĨ\næ»¡ äºĨ\nä¸į æ»¡\nçļĦçľ¼ çĿĽ\nçľĭ å¾Ĺ\nè¿Ļ ä¸Ģæ¬¡\né½Ĳ åħ¨\nçļĦä¸Ģ éĥ¨åĪĨ\nä¸ Ļ\næ¸ħ æĸ°\nèªª æĺİ\nèº«è¾¹ çļĦ\næīĢæľī äºº\nå½° æĺ¾\nè± ¹\nåį ¿\nè¿Ĳ è½¬\næĮĩ å¼ķ\nå¸Ĥ åħ¬å®īå±Ģ\nåıĤ å±ķ\nä¹ĭ æĹ¶\néĩĳèŀį æľįåĬ¡\nèµĦæľ¬ å¸Ĥåľº\nèĥ½ è®©\nå¿ĺ äºĨ\nå¤© åłĤ\næ¯Ķå¦Ĥ è¯´\néĬĢ è¡Į\nèĽĭ ç³ķ\nçĶ ©\næł¸ å®ŀ\næĻ® äº¬\nä¼ĺ ç¾İ\nåı£ èħĶ\næ¼« çĶ»\nçľ¼ éĩĮ\näºĨ ä¸ĭæĿ¥\næĪĳä»¬ ä¹Ł\nä¾ į\nä¸º ä¸Ńå¿ĥ\nå¥ĩ è¿¹\néĿĴ çĿĲ\næĪªèĩ³ çĽ®åīį\nåĩº ä¾Ĩ\næĢ» åħ¬åı¸\nå¼¥ è¡¥\nç®Ĺ æ³ķ\nå·¥ä½ľ å®¤\næīĢä»¥ æĪĳ\næ°´ åĪĨ\næīĢ å±ŀ\nä¸į è¯´\nä½Ĩæĺ¯ åľ¨\nè¦ģ åİ»\nåĪĽä¸ļ èĢħ\nä¸į æ¸ħæ¥ļ\nåĽĽ åĳ¨\næĺ¯ ä»İ\nçļĦ æł¹æľ¬\nçģ ¶\næ¯Ľ æ³½\næ¯Ľæ³½ ä¸ľ\næµ· åı£\nåĽĽ åįģ\nä¹Ł è¢«\nèģ ·\nä¸Ģ æīĭ\nç»© æķĪ\nçļĦ çĶ·äºº\nä¹¦ ç±į\nä¸Ģ èĦ¸\nå¤§ äºİ\néĽ¶ éĥ¨ä»¶\nåħ³ æĢĢ\nå¹³ ç±³\næļ´ éľ²\nå¾Ĺ å¤ļ\nä¸ī çº§\næľ¬ åĳ¨\nä¸¤ èĢħ\nå¯¹ ä¸ŃåĽ½\nåıª è§ģ\næ¬§ ç¾İ\nå¦Ĥæŀľ æľī\nå·²ç»ı æĺ¯\nçľĭ å®Į\nçģ« éĶħ\nèµ Ĳ\nä¸Ģ éģį\næĦŁ åĨĴ\nç»ĵ å±Ģ\nä»ĵ åĤ¨\nå®ŀ åľ°\nåī¯æĢ» ç»ıçĲĨ\nä¹Łä¸į çŁ¥éģĵ\nç¢° åĪ°\nåĲĪ è®¡\nå®¢æĪ· çļĦ\nç½Ĺ é©¬\næĦī å¿«\né£ Ľ\nçĥŃ çĥĪ\nä¼¦ æķ¦\nåĮ» ä¿Ŀ\néĺ¿éĩĮ å·´å·´\nåĨį è¯´\nä¸º åŁºç¡Ģ\nçĶŁäº§ ç»ıèĲ¥\nè¿ĻäºĽ äºº\nåĪĹ è½¦\næ²³åĮĹ çľģ\nè¿Ļ æ®µ\næ´»åĬ¨ ä¸Ń\nå© ·\nçĶŁ çĲĨ\nä¸ŃåĽ½ äººæ°ĳ\néĦ Ĥ\nåĲ¬ åıĸ\nå¤į ä¹ł\næľī çĽĬ\næĶ¶ æĭ¾\nå¾Ī åı¯èĥ½\nç½ĳç»ľ æ¸¸æĪı\nä»¬ çļĦ\nèµĭ èĥ½\néļ¾ å¾Ĺ\nåĪĨ æīĭ\nçľŁ è¯ļ\nåħ¬åı¸ åľ¨\nåĿĩ è¡¡\nåı£ åĳ³\nçīµ å¤´\nä¸ĢèĪ¬ çļĦ\nè½¿ è½¦\nçŃī äºİ\næ²ī é»ĺ\næĪĳ éĥ½\nå°ı ç¨ĭåºı\nä¸Ģ åī¯\næī¿ è½½\nåľ° è´¨\nçķĮ éĿ¢\nçĶµ æľº\nçĦ¦ èĻĳ\néĶĢåĶ® é¢Ŀ\næĸ° è½¦\nä¸Ĭ æ¸¸\nä¸» æ¼Ķ\néļĲ ç§ģ\nåıĳå±ķ æĪĺçķ¥\nçļĦ åĬªåĬĽ\nå¼Ģ åħ³\nè§£åĨ³ éĹ®é¢ĺ\nçĿ£ å¯¼\nå¯¹ æĬĹ\nå¾Īå¤ļ äººéĥ½\næĹł æķĪ\näº§åĵģ è´¨éĩı\nå®ī å¿ĥ\nåįİ äºº\nä¸į ç¬¦åĲĪ\nèĩª å®¶\néĺµ å®¹\nçļĦ åĲĦç§į\nçļĦ çĲĨå¿µ\nçļĦ æĸĩåĮĸ\nä¸º èĩªå·±\nå±± æ°´\næ¸¸ æ³³\néľĩ èį¡\nçĶŁæ´» æĸ¹å¼ı\nè¿ľ ç¦»\nçŁ³ åĮĸ\næŃ¤ äºĭ\næĺ¯ çľŁçļĦ\nçļĦ æ¯Ķä¾ĭ\nçĶ¨ çĶµ\nå¥¥è¿Ĳ ä¼ļ\nä¿Ŀ å®ī\nèĽĭçĻ½ è´¨\nçļĦ å¿ĥçĲĨ\nå· «\nåı· çłģ\næ°Ķ ä½ĵ\nåıĳ æĶ¹\nåıĳæĶ¹ å§Ķ\nåĮ» å¸Ī\næ¶Ĥ æĸĻ\næĺ Ĭ\nå¸Ĥ çº§\nä¸ĸçķĮ çļĦ\nåĪĨåĪ« æĺ¯\nçł´ äº§\nä¸Ģ æĿ¯\næĭī å¼Ģ\nå¹³ åĩ¡\nçļĦ åıĳçĶŁ\nåĬ¨ æīĭ\nä¸ĢçĽ´ ä»¥æĿ¥\næīĭ å·¥\néĩĮéĿ¢ çļĦ\næĹł åħ³\nä»ĭ åħ¥\nèµ° ä¸Ĭ\nå°±æĺ¯ è¦ģ\nå¹´ éĹ´\nåĩº çı¾\nå½± éŁ¿\nå¹ħ åº¦\néĽ ģ\néģĵ åħ·\nçĽ®çļĦ åľ°\nåĲİ èĢħ\nä¸Ĭ æ¼Ķ\näºĨ åĩł\næ®ĭçĸ¾ äºº\nå¿Ļ ç¢Į\næĺ¯åĲ¦ æľī\nå¹¶ å¯¹\nä¼ļ å¯¼èĩ´\næ°´ åºĵ\nç»Ĩ èĩ´\nåĲİ æĤĶ\nå¿ĥ æĢĿ\nåģļ äºĭ\nåİĤ æĪ¿\nçĿ ¿\nè¿ĲèĲ¥ åķĨ\nå¤´ éĥ¨\nçļĦ è§Ĵèī²\næĺ¯ ä»ĸ\næĹ¢ æľī\nå°ıæĹ¶ åĢĻ\nå¼º åĬ²\nä¸» æĴŃ\nåħ¨åĽ½ åĲĦåľ°\næį ı\næįŁ åĿı\nåķĨ ä¼ļ\nä¿Ŀ ç½Ĺ\nçľģ å¸Ĥ\néļ§ éģĵ\næľī ä¸įå°ĳ\nè¦ģ åľ¨\nå»ºè®¾ é¡¹çĽ®\nç³ĸ å°¿\nç³ĸå°¿ çĹħ\næĿ¡ä»¶ ä¸ĭ\nä¼ĺè´¨ çļĦ\né¦ĸ åıĳ\nå½ĵæĹ¶ çļĦ\nä¸° çĶ°\nå¤§ çĽĺ\nçĽ¸ ç»§\nå®ģ å¤ı\nåħ¥ ä½ı\næĪĳ è¿ĺ\nåħĭ æĸ¯\nå®ļ ä»·\nå¹³æĸ¹ åħ¬éĩĮ\nçļĦ çŁ¥è¯Ĩ\næĪĳä»¬ ä¼ļ\nåħĥ å®Ŀ\nä½ĵ éĩį\nè³ £\nå¯¹ æĪĳä»¬\nçŁ³ å®¶\nçŁ³å®¶ åºĦ\nç²¾ åįİ\nå½¢ çĬ¶\nåıĹ åĪ°äºĨ\nä¿® è®¢\nç¾İ åľĭ\né«ĺ æ¸ħ\nçľ¼ éķľ\nè§īå¾Ĺ èĩªå·±\nå¸¦ ç»Ļ\nåĶ® ä»·\néĹ¨ ç¥¨\nåŃķ å¦ĩ\nçĶµè§Ĩ åı°\nåıĳ ä½ľ\nçļĦ åĳ³éģĵ\néķ¿ è¿ľ\nåħ¬åħ± æľįåĬ¡\næŃ£å¸¸ çļĦ\næľī è¿ĩ\né£İ æĥħ\næ¯Ķ éĩį\nåĲ »\nç®¡çĲĨ å·¥ä½ľ\nç»¼åĲĪ æĢ§\nå·² è¢«\nè¯´ èµ·\næİĴ æ°´\nä¸įæĸŃ åľ°\næĥħ æĢĢ\nè¾ĵ éĢģ\nè¿ĩ æķı\nçļĦ åı¯èĥ½æĢ§\næľį çĶ¨\næľī è®¸å¤ļ\nå§Ķ åī¯ä¹¦è®°\nåĮĸå¦Ĩ åĵģ\næļĤ åģľ\næĬķèµĦ äºº\nçıŃ çº§\nè¯´ çĿĢ\nåįĹ åĮĹ\nåĪĨ è¡Į\nçıł å®Ŀ\nå¯ ¶\nå¢ŀ å¤ļ\nè¢« åĬ¨\nçī¹æ®Ĭ çļĦ\néĹľ ä¿Ĥ\nçļĦ èĦ¸\næĥ Ł\nä¸į ä¸Ģå®ļ\nç¶ Ń\nçģ« çĪĨ\nç§Ł éĩĳ\nçŀ §\néĩį å»º\nè· ª\nä¸Ģ ç¨®\nçļĦ åĲĪä½ľ\nå®ī æħ°\nä»į æĺ¯\nä¸ĵä¸ļ åĮĸ\nè°ĥ è§£\nä¸į å¦¨\néĢĻ æĺ¯\nå¿ħ éłĪ\nä¼Ĭ æľĹ\nå¾Ĺ äºĨ\næľįåĬ¡ å¹³åı°\nå§ ¬\nåħĪ éĶĭ\nçİĭ åŃĲ\nçļĦä¸Ģ åĪĩ\næĢ» çĲĨ\nåĵ ¼\nçª ĳ\nçļĦå¿ĥ æĥħ\nçļĦ éĩįå¤§\nçĳ Ł\nä¸Ģ ç¬ĳ\nåıĳå±ķ ä¸Ń\nåģ¥åº· åıĳå±ķ\nåĵģçīĮ çļĦ\nç¦ ®\nä½Ļ äºº\nä»Ĭå¹´ ä»¥æĿ¥\næķ° çłģ\nçŃ¾ è¯ģ\nåİ» æī¾\nåŁºéĩĳ ä¼ļ\næĬ± æĢ¨\næŃ£ å½ĵ\nçıŃåŃĲ æĪĲåĳĺ\nä¸į åĲĪæł¼\nåĪ¶ å®ļäºĨ\nç¼ĵ æħ¢\nåĪ¶ çº¦\næłı çĽ®\nå¸Ĥåľº ç»ıæµİ\nç»ĦæĪĲ çļĦ\nä¸¥ å³»\næĹ¥ è®¯\nä¸ĢçĤ¹ çĤ¹\næĺ¯ æĢİä¹Ī\nçļĦ çħ§çīĩ\néĺ» æŃ¢\næ¨¡ ç³Ĭ\nç¼ ¸\néģķ åıį\næĲ¬ è¿ģ\néĩĳ éĴ±\nå½ ¬\nä¸į å®ī\næĪĺçķ¥ åĲĪä½ľ\nå¡« åĨĻ\nè®² ç©¶\nåħħåĪĨ åĪ©çĶ¨\nèĥ½ å¤ł\nèĳ¡èĲĦ éħĴ\néĩĩçĶ¨ äºĨ\nåľ¨ ä»Ĭå¹´\nä¸Ńå°ı åŃ¦\nåľ¨ æĦı\nçļĦ åİĭåĬĽ\nä¸į å¹¸\nåĪ¶ èį¯\nåı¯ä»¥ è®©\nè¢« è¯Ħä¸º\nç»Ĩ èıĮ\næĪı åī§\nåįĬ å¯¼\nåįĬå¯¼ ä½ĵ\nè§Ĩ è§Ĵ\nåĸľ æŃ¡\nå¾ģ æĶ¶\nè°ĭ åĪĴ\næŀģ å¤§çļĦ\nçĤ¹ èµŀ\nè®°èĢħ ä»İ\nä¸¤ åĲį\nèĩª åĬ©\nèµ· æŃ¥\næĬ¤ å£«\nå®Ŀ é©¬\nå¤ª åŃĲ\nå°ıå°ı çļĦ\næ¸© æ³ī\nåĩºç§Ł è½¦\nç§Ł æĪ¿\nä¸¤ å®¶\néľĩ æĴ¼\nç§ī æī¿\nä¸Ģä»¶ äºĭ\nçĥĪ å£«\nå®ĺ åħµ\nè½¬ èº«\nä¹Ĳ åĽŃ\nçĻĮ çĹĩ\næ¨¡ èĮĥ\næĦ £\nè¿ĩåİ» çļĦ\nä»£ ä»·\nçļĦ æ¦Ĥå¿µ\nåĩł çĻ¾\nè´µ éĺ³\næĭħ å¿§\néĢĤ å®ľ\nçİ¯å¢ĥ ä¿ĿæĬ¤\nçĥ «\nä½ł æĥ³\næŃ¤ åĲİ\nä½ł ä¹Ł\nçį İ\néĻ¤ æŃ¤\néĻ¤æŃ¤ ä¹ĭå¤ĸ\nè°ĥ åº¦\nç§ĳ çĽ®\næīĢè¯´ çļĦ\nåĬ ĩ\nå¿½ è§Ĩ\nä¸ī æ¬¡\nä¸Ģ æĹ¥\nåŀĤ çĽ´\nç«ŀ æĬĢ\néĿ¢ åĮħ\nå¤§ æĪĺ\næĲº å¸¦\nå¦Ĥæŀľ æ²¡æľī\nåħ» æĪĲ\nåĩº è¡Ģ\nçĪ±å¥½ èĢħ\næīĵ éĢļ\nèµ· è¯ī\nåĳĪ çİ°åĩº\næŃĮ æīĭ\nåľ¨ å¤ĸ\né¢Ĩå¯¼ å¹²éĥ¨\nåĨ ¥\nèĪĨ è®º\næıĲ åıĸ\néĺ¿ å°Ķ\næľĽ çĿĢ\nä¸ī äºļ\nè² ¡\nåĪ ·æĸ°\næĻļ æĬ¥\nè¿ĺæľī ä¸Ģä¸ª\nåĨ° ç®±\nç½ĳ çĤ¹\nåĩº åħ·\nå¼ºçĥĪ çļĦ\næĪĳ çĽ¸ä¿¡\nå¸ĮæľĽ èĥ½\nçīĻ é½¿\näºĭ å®ľ\nä¸ļåĨħ äººå£«\nä»£ æĽ¿\nåıĺ å½¢\néĽ ²\nè°ĥ æİ§\nåĪĽæĸ° åĪĽä¸ļ\næĭĨ è¿ģ\næł¸ æŁ¥\néĢ Ĺ\nåħ¥ åŃ¦\næĦı åĲĳ\næı Ľ\nä¸ĭ æ¬¡\nä¼ł è¾ĵ\nä»ĸä»¬ åľ¨\nèĢĮä¸Ķ è¿ĺ\næĹ¥ åľ¨\næķĻ è®Ń\næ´» çĿĢ\nçļĦ æľīæķĪ\nå¤įå·¥ å¤į\nå¤įå·¥å¤į äº§\næĺ¯ä¸Ģ ä»¶\nçŃī çĿĢ\nå¾ ©\nåĭĩ æķ¢\néģŃ åıĹ\nå¥Ķ é©°\nè®² åº§\nè¯´ å®Į\nç»Ļ åĩº\nè° ¦\nè¯Ĭ çĸĹ\nçĽ² çĽ®\nå®¢ è¿Ĳ\nå°± è¿ŀ\nå¼Ģ åħĥ\nå¼Ģåħĥ æ£ĭçīĮ\nä¸įæĸŃ æıĲåįĩ\nçĶ¨æĪ· çļĦ\næĴ ķ\nä¾Ľ æ°´\nç¶ĵ æ¿Ł\nä¸Ń åĮ»èį¯\nèģĶ æĥ³\nåħ¬äº¤ è½¦\nèĪª çıŃ\næĬĢ è¡ĵ\nå¼ķèµ· çļĦ\nå° ¹\nèµĦ æ·±\nåĽ½èµĦ å§Ķ\nèĺ Ń\né¼» åŃĲ\néĹ ½\næİĴ éĺŁ\nè§Ĥ åħī\néģĹ åĿĢ\nä¸ľ äº¬\né¥Ń åºĹ\nä¸įæĸŃ çļĦ\nå°±æĺ¯ ä¸Ģä¸ª\néķ¿ ä¹ħ\nçļĦ è§ĤçĤ¹\nå¨ ¶\næĪĳ çİ°åľ¨\nçķ °\nå¾Ĺ åĩº\nå¿ħ å®ļ\nä¸į åıĹ\nåıª éľĢè¦ģ\nåĽ° æī°\nç§ĳåŃ¦ æĬĢæľ¯\nçīĽ èĤī\nè¾ĥ é«ĺçļĦ\nè·ĳ æŃ¥\næ² ¾\nèı© èĲ¨\næľĢ å¾Į\nä¿Ŀ å¯Ĩ\næ²» å®ī\néĤ ±\nå¸¸ è¯Ĩ\nèĦ¸ èī²\nåĮĹ å¤§\næ±ĩ èģļ\næĳĨ èĦ±\né¾Ļå¤´ ä¼ģä¸ļ\nå¥³ åıĭ\nçŃī å·¥ä½ľ\nä¸Ń ç¾İ\nèģĮ åľº\nèĦĳ è¢ĭ\nåĨĻ çļĦ\né¥² æĸĻ\nåĬ³ åĬ¨åĬĽ\nå± ¯\næĮģ èĤ¡\nåĽ¾ åĥı\nè¿ĩåİ» äºĨ\nè² ¨\nè¾ ²\néĹ® æĪĳ\nè·Ł ä½ł\nçĶŁ æŃ»\nå®¡ ç¾İ\né¢Ĺ ç²Ĵ\nä¸Ń æĸ¹\nåĬł çĥŃ\næĹħè¡Į ç¤¾\nçĻ¼ çĶŁ\nä¸į åłª\nåĤ ·\næ¥ ł\nåĬŀ æ¡Ī\næŁ Ħ\næĹ¢ æĺ¯\nå¤Ħ åĪĨ\nçľŁå®ŀ çļĦ\næĬ¥ çº¸\nå¸Ī çĪ¶\nå®īå¾½ çľģ\nåī¯ ä¸»å¸Ń\nä¹ĭ éģĵ\nå¯¼ å¼¹\nåŃ¦æł¡ çļĦ\nåŁİå¸Ĥ çļĦ\nè°Ī åĪ°\næ¢ Ĺ\nå¹³ éĿ¢\nè¯´ ä»Ģä¹Ī\né¢ĳ çİĩ\néķ¿ ä¸īè§Ĵ\nçļĦ åĪ©çĽĬ\né» ¨\nè±Ĩ èħĲ\nå®ŀéĻħ æĥħåĨµ\næŀĹ ä¸ļ\nçºªæ£Ģ çĽĳå¯Ł\nä½ı éĻ¢\nçļĦ æķ´ä½ĵ\nåīį è¡Į\næĮ ¨\nçħ¤ çŁ¿\nåī¯æĢ» è£ģ\nå°ı åĲĥ\næŀģ ç«¯\nå©Ĩ å©Ĩ\nçİ° è´§\nè¯Ĺ æŃĮ\néĴ¥ åĮĻ\nç¼© çŁŃ\nä½Ĩ è¿Ļ\næĸ° åĵģ\nè¿Ļ å¯¹\nçŁ¥åĲį åº¦\nå¿ĹæĦ¿ æľįåĬ¡\nå¤§ å±Ģ\nè¡¡ éĩı\nä½ĵçİ° äºĨ\næ¡ĥ èĬ±\nåĲ¸å¼ķ åĬĽ\nåł ¤\næĵħ éķ¿\nåĴ Ĵ\nçĽ¸ æľº\nä¸Ģ ç«Ļ\nä¸Ģç«Ļ å¼ı\næľĢ ç¾İ\næ°¸ ä¹ħ\nçļĦ éĥ¨åĪĨ\nåĪĨ å·¥\nå·¥ç¨ĭ å»ºè®¾\næĲŃ è½½\næ°´ ä¸Ń\nèĮ ¨\nçļĦ æĵįä½ľ\nç»Ł æ²»\nçķħ éĢļ\nåħļçļĦ åįģ\nè¼ ¸\næ¸ ¬\nç¾İ è§Ĥ\nä¸į åĪ©\nåıį æĢĿ\néªĦ åĤ²\næłĩ çļĦ\næĿĢ äºº\néĺ¿ å§¨\né£Ł æĿĲ\nåĲĥ çļĦ\nåĲİ åĨį\nçŁ £\nä¸¤ ä¾§\næ¸ħ æ°´\nè¿Ľ çĲĥ\nå¼Ģå§ĭ äºĨ\nåĲ¬ äºĨ\nçĦĬ æİ¥\nçŁ ®\nå¨ Ł\nä¸º äºº\néĢģ ç»Ļ\nåĨĴ éĻ©\næķ ·\nç»Ī æŃ¢\næīį çŁ¥éģĵ\nè¿Ĳ æ°Ķ\néĢļ é£İ\næĥĬ è®¶\nç§ĳåŃ¦ éĻ¢\næıĲ éĹ®\nå¤ª åİŁ\nçĽ¸åĲĮ çļĦ\nä» ķ\nèģ ĸ\næĥħ æ³ģ\né¢Ĩå¯¼ äºº\nåĩºæĿ¥ äºĨ\næ²¿ çº¿\néĻ ½\næĦŁ è¦º\nä»į åľ¨\næ© Ļ\nçº¦ ä¸º\nåĸĿ éħĴ\nçĶ¨ èį¯\nä¸ĭ ä¸Ģ\næ³ķ å®ĺ\né¡º åºı\nåģļ ä¸Ģä¸ª\nåĭ ¢\næŃ ª\nçĶµ ç«ŀ\nä¼´ éļıçĿĢ\nä¹ĭ åĬĽ\nä¹ĭ äºº\näºĳ è®¡ç®Ĺ\nåĪ«äºº çļĦ\nç§ĳåŃ¦ åıĳå±ķ\nç¬¬ åħ«\nå¹² æī°\nå¥³ ç¥ŀ\nè¿Ļæł· åģļ\nå¤Ħ åľ¨\næ°´ è´¨\néķ¿ æĺ¥\nå¸Ĥåľº éľĢæ±Ĥ\nç»´ æĿĥ\nèĢ³ æľµ\næĸĩåĮĸ çļĦ\nå¥¶ ç²ī\nä¼ł è¾¾\næīĭæľº çīĪ\næĽ¾ åľ¨\näºĮ æľŁ\nåİŁåĽł æĺ¯\næºĲ å¤´\nåıĪ èĥ½\nè£ ¸\næĬĢæľ¯ åĪĽæĸ°\næĸĩåĮĸ æĹħæ¸¸\nåıĳ ç¥¨\nå¹´ çº§\nä½ł ä¸į\nä¹ĭ å¿ĥ\næķ° çĻ¾\nåĲĳ å¾Ģ\nèĢģ å®¶\nåľĭ éļĽ\nçļĦ é«ĺåº¦\næľĿ éĺ³\næ¸ħ éĻ¤\nèĩª æľī\nä¹¦ ä¸Ń\næ¸¸æĪı è£ħå¤ĩ\nä¸ĩ å¤ļ\né©¾é©¶ åĳĺ\nä½ł çŁ¥éģĵ\nåĽ½ åºĨ\né£Ł åłĤ\næİ¥ åı£\næĢ» æķ°\nåħ¶ä»ĸ çļĦ\nçĶŁåĳ½ çļĦ\nä½ł åľ¨\nçļĦ çĽ®åħī\nè¿Ļ æĸ¹éĿ¢\néĥ½ è¯´\nçĸĹ æ³ķ\nåĭĩ å£«\nåľ¨ åħ¨çĲĥ\nä¿ĿéĻ© åħ¬åı¸\nçĿ£ æŁ¥\nåĸĦ èī¯\nè¡¨ å½°\nè¹ ²\nè·¯ æ®µ\næľĥåĵ¡ è¦ı\næľĥåĵ¡è¦ı ç¯Ħ\næĪ· åŀĭ\nä¿ĥ ä½¿\nä¿® å»º\né«ĺ æ°´å¹³\nåģļ åĩºäºĨ\nä¸» åľº\nè¡Į èµ°\nç©º çĻ½\næľīäºº è¯´\nè¿Ļä¸ª ä¸ĸçķĮ\nåĲį ä¹ī\nå®Į ç¾İçļĦ\nç¾¡ æħķ\nåıĬ åħ¶ä»ĸ\nåı¯ çĶ¨\næĭ Ĳ\nè¾ĥ å¤§çļĦ\næĬĢæľ¯ åĴĮ\nå°¼ äºļ\nçĻ¾ è´§\næı ī\néĢī è´Ń\néĺŁ åıĭ\nä¼ł æĦŁ\nä¼łæĦŁ åĻ¨\nåıªè¦ģ ä½ł\nä¸ºä»Ģä¹Ī è¦ģ\nä¸ĵæ³¨ äºİ\nä½Ļ é¢Ŀ\nåħ¸åŀĭ çļĦ\nçĽ®åīį å·²\næ¬² æľĽ\nèģĶ ç»ľ\næµģ ä¼ł\nçļĦ å®¶åºŃ\nåı· åı¬\nçıį è´µ\nä¼Ł å¤§çļĦ\néī´ äºİ\nè·Ł ä»ĸ\näº§ çī©\nä¸į å·²\nè¿Ŀæ³ķ è¡Įä¸º\nå¤´ ä¸Ĭ\nåĪĨ è§£\nåı¯ä»¥ çľĭåĩº\næł¡ åĮº\nåŃĹ ä½ĵ\nä¿® çĤ¼\nçĶļèĩ³ æĺ¯\nå¾®ä¿¡ åħ¬ä¼Ĺ\nåıĸ ä»£\nèĲ¥ä¸ļ æĶ¶åħ¥\næ½į åĿĬ\nä½ł èĥ½\nç¤¾ä¼ļ ä¿Ŀéļľ\næ¯ĶèµĽ ä¸Ń\næ±¡æ°´ å¤ĦçĲĨ\nå¤« å¦ĩ\nä¸Ģ å¹ħ\næ²¿ æµ·\nåı£ æĦŁ\nä½Ĩ åį´\nå½ĵ æĹ¥\nçļĦ æľĢå¤§\næ¯ı ä¸Ģä½į\næ²¡ äºĭ\nçī¹ åĪ¥\nå¼Ģ åŃ¦\nè·¯ éĿ¢\nå¿ĥçĲĨ åŃ¦\næĶ¾ ç½®\néĩįåºĨ å¸Ĥ\nä½ł èĩªå·±\næ¶Īè´¹èĢħ çļĦ\nä¸Ģ æ³¢\nèŃ¦ æĥķ\nåį§ å®¤\næ³¨ å°Ħ\né£İ éĽ¨\næ²¿ çĿĢ\nåĳĬ è¨´\nè¡¨ çİ°åĩº\nåĽĽ æĺ¯\nåı¤ åħ¸\næĽ´ éĩįè¦ģçļĦ\nå¥½ äºĭ\nçľ¼ æ³ª\næ¨ ĵ\nå®¡ åĪ¤\nç¢° æĴŀ\nè½¦ ç«Ļ\nè¿Ľåħ¥ äºĨ\néĽĨ åĲĪ\næł¼ å¤ĸ\nå®¾ é¦Ĩ\næĶ¯ä»ĺ å®Ŀ\nå¥¹ æĺ¯\næĺ¯ å¦Ĥä½ķ\näºº æ¬¡\nçļĦ æĪĲåĬŁ\næĹł åĬĽ\næµ· æĭĶ\næĺ¥ åŃ£\néĥ½ ä¸įä¼ļ\nçŃī å¤ļç§į\nä¸Ģä¸ª å°ı\nåģľè½¦ åľº\nè®© æĽ´å¤ļ\nè¿Ļ çĤ¹\næĪĲ åĵģ\néĴ ī\néģĩ è§ģ\nçıŃ ä¸»ä»»\næĦı æĦ¿\nçļĦ åĲĮåŃ¦\næ¸¸ è§Ī\nåİĭ ç¼©\nåľ¨ ä¼łå¥ĩ\nå¼¹ æĢ§\næĹ¥ åĨħ\nç¦ıå»º çľģ\nè§Ĵ èĲ½\nåĪĨ å¼Ģ\nä¼ļ è®©\nå¤ĸ åĽ´\nçĨŁæĤī çļĦ\nçĨ Ķ\nä¸ĩ è¾Ĩ\nå¤ľ éĹ´\nè½¦ èº«\nä¸Ń æľŁ\nå®ĮåĸĦ çļĦ\nåĵģ ç±»\nåıĭ è°Ĭ\néĢīæĭ Ķ\néªĳ å£«\nå½ ¦\nçļĦ çľĭæ³ķ\nåĽ½ çİĭ\nè¾£ æ¤Ĵ\nåıĳå¸ĥ æĹ¶éĹ´\nåı¤ åŁİ\néļı æľº\nç« ĸ\nå¼Ģ è¾Ł\nä¼Ĺ çĶŁ\næ²¡ åĬŀæ³ķ\nåįĥ éĩĮ\næĿ¥æºĲ äºİ\nçļĦ æĿĥåĪ©\næ¯Ķ åĪĨ\næ»¡æĦı çļĦ\nä¿® è¡Į\nåĿ ł\nå¤§ æµ·\nèİ ¹\nåĩº èº«\nè« ĩ\nåħ³ èĬĤ\nåĲį äºº\néľĢè¦ģ æ³¨æĦı\næĹ© æĻ¨\nå¤ĸ åįĸ\nåıĪ è¦ģ\næ¶ī æ¡Ī\nçĶ³è¯· äºº\néĻĦè¿ĳ çļĦ\nåĬłå¿« æİ¨è¿Ľ\næĸ° å¹´\nå¤§ è¡Ĺ\nä¸Ģ é»ŀ\nèĭı å®ģ\næĤĦ æĤĦ\nèĦ¾ æ°Ķ\nå¸Į èħĬ\néļı åį³\næķ¢ äºİ\nå®ŀè·µ ä¸Ń\næĺ¯ æ²¡æľī\næľīè¶£ çļĦ\næĿ¥èĩª äºİ\nè£ģ åĪ¤\nå¥³ åŃ©åŃĲ\nèĩ³ åħ³\nèĩ³åħ³ éĩįè¦ģ\næĻº åĬĽ\nèµ° åĩºåİ»\nçŁŃ æĿ¿\nå¤§ åĽ½\nçļĦ è®¤è¯Ĩ\nå¹´ å¤ľ\nåĨį åĪ°\nåĲĮ æł·çļĦ\nå¯Ĩ å°ģ\nå¤ĸäº¤ éĥ¨\nçĶŁ æķĪ\næĤ¨ åı¯ä»¥\nä½ł åĢĳ\nè¿ĩ å¹´\nå¼ ĵ\nè¡Į æĿİ\næ¯Ķ èµ·\nèº« é«ĺ\nè¿Ļä¸ª äºº\nä¸Ń å¤ĸ\néģĵ æŃī\nçĽ¯ çĿĢ\näº² åŃĲ\néĹ ¸\nçĻ½ äºĳ\nèĦĸ åŃĲ\nä¸ĢåĪĩ éĥ½\næ· ĳ\nè° ľ\nåģ¶ çĦ¶\néĿł è°±\né«ĺ ç®¡\nä¸ĭ åıĳ\næĶ¾ åĪ°\nç±» åĪ«\nä¸ĭ åĪĹ\næ·· ä¹±\nåĲĪæ³ķ æĿĥçĽĬ\nçİ¯ çĲĥ\næľīæķĪ åľ°\nåķĨ æĪ·\næ¹ĸ äºº\næµ· å²¸\næĬķ äº§\nä¸¤ ä¸ªæľĪ\néĥ½ éĿŀå¸¸\nå¢ŀå¼º äºĨ\næĿ¥ åĪ°äºĨ\nåī© ä½Ļ\næĤ¨çļĦ åŃ©åŃĲ\næµģ æ°´\næŃ£ ä¹ī\nå¤© çĮ«\nåģļ è¿ĩ\nä½ķ æĹ¶\næĪĳ åİ»\nçľģ ä»½\nå¥ĸ éĩĳ\nè¯¥ å¦Ĥä½ķ\nä¸ĭ çıŃ\nåģ¶ åĥı\næĳĨ æĶ¾\næĸ° æ¨¡å¼ı\næĬķ è³ĩ\nè·¯ åı£\nåĨľæ°ĳ å·¥\nå¤§ åŃ¸\nä»¶ äºĭ\næł¹æľ¬ ä¸į\næµĵ åº¦\næµĵ åİļ\nè½® èĥİ\næĪ¿ ä¼ģ\néĿŀå¸¸ å¥½\nä»İ ä¸Ń\näºº æł¼\nç¿ ģ\næĹ¶éĹ´ åĴĮ\nè¿Ļ ä¸įæĺ¯\nåĪ¸ åķĨ\næĥĬ äºº\nåĻ¨ å®ĺ\nåĩĨ åĪĻ\næĥħ æĻ¯\næĽ´ é«ĺçļĦ\nåŃ¦ å®¶\næ³¡ æ²«\nåľ°æĸ¹ æĶ¿åºľ\nå°± çŁ¥éģĵ\nåĳ¼ åĲģ\nç»ı è´¸\nèĬ± éĴ±\næľī ä¸Ģæ¬¡\næĦŁ æħ¨\nä¸Ģ åįĥ\nå¤ľ æĻļ\nè©¹ å§Ĩ\nè©¹å§Ĩ æĸ¯\nè¦ģ éĹ»\nç» Ĵ\næºĲ äºİ\nçļĦ è´¨éĩı\næ³¨æĦı äºĭé¡¹\næħ¢ æĢ§\nç¨³å®ļ çļĦ\nå»ºè®¾ åĴĮ\næĻ¯ è±¡\néĩı åĮĸ\nçļĦ è©±\nè¯Ħ çº§\næº ľ\nçº¢ åĮħ\néĢļ éģİ\nç¤¾ä¼ļ è´£ä»»\næĸ° äº§åĵģ\nåĨ· éĿĻ\nçľĭ ä¸įåĪ°\nèģĶ éĤ¦\néŃ Ħ\nçļĦ åīįæıĲ\nçļĦåīįæıĲ ä¸ĭ\nè¾ĥ å¥½\nçļĦ æĦŁæĥħ\nå®¢æĪ· æıĲä¾Ľ\nçĭ¬ èĩª\nå¢ŀ æĶ¶\næĸĩ çĮ®\næĭ¼ åĳ½\nç®¡çĲĨ åĴĮ\næµģåĬ¨ æĢ§\nåħ¨ å®¶\nä¸Ĭ æĸ¹\næİ¨åĩº çļĦ\nä¸ī åĽ½\nä¸Ģä¸ª æĺ¯\næĸ° ä¸Ģè½®\næĸĩåĮĸ éģĹäº§\næ® º\nå¤§ æ¹¾åĮº\néĥ½ éľĢè¦ģ\nçļĦ å®ŀéĻħ\nç· Ĭ\nå¤§ å¥ĸ\nåħī èĬĴ\nä¾¿ äºİ\nçļĦ è¡¨æĥħ\næ¼Ķ ç»İ\nçº¢ åĨĽ\nå½ĵ æĪĳ\næ²» æĦĪ\né¢Ŀ åº¦\néĿ ľ\nä»»ä½ķ äºº\nè¡Ĺ å¤´\nçī¹ æĸ¯\nçī¹æĸ¯ æĭī\nåĮ»çĸĹ æľºæŀĦ\nç»Ļ åŃ©åŃĲ\nè§Ħ çŁ©\nè£ ľ\nçļĦ èº«å½±\nä¸ĵ æłı\næĿ¥ ä¸´\nç«¥ å¹´\nå¤į èĭı\nè¨ Ĥ\nåŀĭ åı·\nåĽ¾ æ¡Ī\nç®Ģ åİĨ\næĭ ±\nèį· åħ°\nä»» æĦı\næī¿ æİ¥\nè¿Ļ æīį\nå®¢ è½¦\næľĿ çĿĢ\néłħ çĽ®\nåı° é£İ\nçļĦ æĪ¿åŃĲ\néª ı\næĿ± è¥¿\néģĹ ä¼ł\nè¶Ĭ å¤ļ\näºĨ ä»ĸçļĦ\nä¸Ĭ åĳ¨\nç®¡çĲĨ åĪ¶åº¦\nå¤± ä¸ļ\nçĶ· åıĭ\næİ¥ ç§į\nå¨ģ åĲį\nçĴ° å¢ĥ\nåıĳçĶŁ åľ¨\nä¸ª åĽ½å®¶\nåĪĽæĸ° åıĳå±ķ\næĶ¹åıĺ äºĨ\nåģ¥åº· çļĦ\nåĢ¼å¾Ĺ ä¸Ģ\nåĢ¼å¾Ĺä¸Ģ æıĲ\nåĽ¢ ä¼Ļ\nåģĩ è®¾\nåı° ä¸Ĭ\nè§ĦèĮĥ åĮĸ\néĻª åĲĮ\nåº§ æ¤ħ\nåı¯ æĢľ\nåħĭæĢĿ ä¸»ä¹ī\næ³ķå¾ĭ è´£ä»»\nä¸Ģ é¡¿\næĬ¬ å¤´\nä¸º éĩįçĤ¹\nè¿ľ æ´ĭ\néĢı è¿ĩ\nåħ¨çĲĥ åĮĸ\nè¶£ åĳ³\nç¥¨ æĪ¿\næ¯ı äºº\nåĲĦç§į åĲĦæł·\näºĨ åĩºæĿ¥\nç»Ŀå¯¹ æĺ¯\nä¸ĭ å±ŀ\nä¸Ģ åıĮ\nè¿Ļ åĿĹ\næĬĹ çĸ«\nè¦ģ çĤ¹\nå½¢æĪĲ çļĦ\næĪĳ çľĭ\nä¸ĩ éĩĮ\nèĢĥ çłĶ\nä¸º åħ¶\næ°ĳ å®¿\nå¤ļ ä½į\nå¤§ èĩ´\nä»ĺ è´¹\nåħ¥ æīĭ\nå±ħ å®¶\næīĢåľ¨ åľ°\näºº èº«\nè¿ĩ å¾Ĺ\nè¯ķ è¯ķ\nè®¿ è°Ī\nåĬł éĩį\nå°± ä¸įä¼ļ\nçĶŁäº§ ä¼ģä¸ļ\nåĽŀ åĽ½\nåºķ çº¿\nèµ¶ åĪ°\næĶ¯ éĺŁ\næĪĳä»¬ éĥ½\néĤ® æĶ¿\nçĽ´ èĩ³\néĴ¢ çĲ´\nåħ ľ\nçłĶè®¨ ä¼ļ\næľĪ äº®\nåĿļæĮģ ä»¥\nåħ¬å®ī éĥ¨\néĴ¢ ç®¡\nå°ı çĻ½\nç½® ä¸ļ\nèģ ĭ\nä¹¦ åĨĻ\næĿ ı\néħį æĸ¹\nèĢĮ åıĪ\nçĳŀ å£«\nçķĮ çļĦ\nèĢģ å¤§\næĪĲçĨŁ çļĦ\nå¹² ä»Ģä¹Ī\nä¸ĵé¡¹ æĸĹäºī\nçŃī å¤ļä¸ª\nèĦ± ç¦»\nä¸ī ä¸ªæľĪ\nçłĶç©¶ åĳĺ\næĹĭ è½¬\næŀģ èĩ´\nåħį è´£\nåħįè´£ å£°æĺİ\nå¾Īå¤ļ çİ©å®¶\nè½¦ ä¸Ĭ\näº¤ äºĴ\nå·² æĺ¯\nä¸Ģ å°ı\nçļĦ éĩįçĤ¹\nèĬ± äºĨ\nä¸į æĺİ\næľīåħ³ è§Ħå®ļ\nçĬ¹ å¦Ĥ\nçľ ¸\nå¯ ¡\nçļĦ è¡£æľį\nåĮħ è£¹\nèº« åŃĲ\nå¸ĪèĮĥ å¤§åŃ¦\näºĭ åħĪ\nçº¿ æĿ¡\næ³ķ åĪ¶\nåħ» æĬ¤\nç¨³å®ļ æĢ§\néĤ µ\nåŀĦ æĸŃ\né¡ į\nèĢĥ åı¤\næĿł æĿĨ\nèĭı èģĶ\næ°´ çĶµ\nåħ·ä½ĵ çļĦ\næ¿Ģ æ´»\næĪĳ æł¡\nåĪļ å¼Ģå§ĭ\nåĩ¸ æĺ¾\nç¦ ¾\nåħ¼ èģĮ\néĢı éģİ\nåľ¨ æ¸¸æĪıä¸Ń\nç¤¾ä¼ļ åıĳå±ķ\nå¥½ çİ©\nå¹» æĥ³\nä¸į ä»£è¡¨\næ³¨æĦı åĬĽ\næ£ į\nçĶ¨ æīĭ\nç¾İ äºº\nè®¸å¤ļ äºº\nå¾Ī æĺ¯\nçļĦ çłĶåıĳ\næīĵ åĩº\nåĲĪä¼Ļ äºº\nä¸Ģ å¤ľ\nç¼ĵ ç¼ĵ\nä¿® æŃ£\næĦŁ çŁ¥\nç»Ī èº«\næ¿Ģ ç´ł\nçİ¯å¢ĥ ä¸ĭ\næ¬¡ ä¼ļè®®\nç»ıæµİ å¢ŀéķ¿\næī Ľ\nåıĳ éħµ\nåĪĨæŀĲ å¸Ī\nåľ¨ æľªæĿ¥\nä¸»è¦ģ æľī\nä¸Ģ åŃ£åº¦\nçļĦ è¯´æ³ķ\nä»İæĿ¥ æ²¡æľī\nè´§ è½¦\nç¼© å°ı\nå¤ª è¿ĩ\næķĪ åĬĽ\nä¸į ä¸ĭ\næĬķ ç¨¿\nèį¯ ä¸ļ\nç»Ħ éķ¿\nç«Ļ çĤ¹\nå¾Ī åĸľæ¬¢\néĲ µ\nåĬ¿ å¤´\næ¼ı æ´ŀ\næĦ¤ æĢĴ\nåħħ å®ŀ\nåĪĽä¸ļ æĿ¿\nçĪ ª\næľª å¿ħ\nåºķ éĥ¨\nå¾Ĺ åĪĨ\näººæ°ĳ åĮ»éĻ¢\näºĮæīĭ æĪ¿\nå·²ç»ı è¢«\nå¤§ æ¥¼\næĸ° æĪ¿\nè¾¦ æ³ķ\nçĶ¨ åĬĽ\næĭĵ å®½\nåĨħ åľ¨\næĴŃ åĩº\né¥° æ¼Ķ\nä¹Ł è®©\nä½ľ çĤº\nçī©ä¸ļ ç®¡çĲĨ\nåį´ ä¸į\nä¸º ä¸ŃåĽ½\nå±Ģ åĬ¿\nä¸į èĤ¯\næľĢ æĸ°çļĦ\nåı¯ä»¥ éĢīæĭ©\næĺ¾ çİ°\nå°± ç®Ĺæĺ¯\nåľ¨ æł¡\né¾ Ł\nä¸¤ æĿ¡\nçļĦ å®ŀåĬĽ\nè¶Ĭ å¥½\nå¥¹ åľ¨\nå¿ł è¯ļ\nä¹Ł éľĢè¦ģ\næ¸¸æĪı æĵįä½ľ\nè¶ħ åĩº\nå¦Ĥæŀľ ä¸į\næīĢåľ¨ çļĦ\nä½ł è¿ĺ\nä»¥ åĨħ\næľī ä¸Ģå®ļ\nåı¯ è¾¾\nè·ĳ åĪ°\nåī Ľ\nå»ºç«ĭ åģ¥åħ¨\næķ´ è½¦\nåīį æĸ¹\néĹ´ æİ¥\nçŃ¹ å¤ĩ\nçĸ² åĬ³\nç¦» å¼ĢäºĨ\næ± Ŀ\néĿ¢ éĥ¨\nä¹ĭåīį çļĦ\nåıĺ ä¸º\nå¦Ĥæŀľ è¯´\nå¯¹ ä»ĺ\nåĿĩ åı¯\nè¢«åĳĬ äºº\nç²¾ ç¾İ\nèģļ ä¼ļ\nçĿĢ æĢ¥\nè°· æŃĮ\nä¸Ģ åı·\nçº¢ åĪ©\nä¼łå¥ĩ æ¸¸æĪı\nå» ĸ\nè´ ŀ\nä¹° åĪ°\néŃ ļ\nä½ĵ è´¨\nå°ĳ äºĨ\næ³ī å·ŀ\nåĲ Ł\nç»Ŀ ä¸į\né»ĳ æģ¶\né»ĳæģ¶ åĬ¿åĬĽ\nä¸Ĭ æĺł\nçļĦè¯Ŀ é¢ĺ\nä¸ĩäºº æ¬¡\nä¸ĸ éĹ´\nçĶ¨ å·¥\nè´¯ ç©¿\nå®Ŀ çŁ³\nä½ł å¥½\nåĪĩ åī²\nå¼º åĽ½\nåĽŀ èĲ½\næ°´ æĻ¶\næ¨¡ ä»¿\næ´ª æ°´\néĢĻ éº¼\nåįģä¸ī äºĶ\nä½ ĳ\néĻ Ħä»¶\nçļĦ å¢ŀéķ¿\néĻĦ å±ŀ\nçİ° å·²\nå¸® ä½ł\néĩĳ çīĮ\né«ĺ åİŁ\nåľ¨ å®¶éĩĮ\néĺ² èħĲ\nç¡®å®ŀ æĺ¯\nå®£ è®²\nå¤© æīį\nç»ıèĲ¥ ç®¡çĲĨ\néĶħ çĤī\nåĲĪ ä¸Ģ\nè§Ĥ èµı\néķ¿ è¾¾\nä¸»ä¹ī æĢĿæĥ³\néĤ£ éº¼\né£İ äºĳ\nä¸ºä¸» çļĦ\næļĳ åģĩ\næĮģ ä¹ħ\nå¼Ĥ åľ°\nå¼Ģ éĹ¨\næ¨¡ æĿ¿\næī¹ æ¬¡\nä¸į ä¾¿\nå¤© çĶŁ\nåĩł ä¸ªæľĪ\nä¸ĵ ç§ĳ\nåı¦ æľī\nåħ¬å¸ĥ çļĦ\næĩ ·\nåľº åĲĪ\nçļĦå¿ĥ æĢģ\nè¿ĺ å¥½\nå®ŀ æĪĺ\nèĢģå¸Ī çļĦ\nåħ© åĢĭ\nåı¯ åľ¨\néĤ£ ä½į\nå¥ł å®ļäºĨ\nä¿ĥ éĶĢ\næı´ åĬ©\nä¸ĩ çī©\næĥħ æĬ¥\né¦ĸåħĪ è¦ģ\næĸĩåĮĸ åĴĮ\néĥ½ å·²ç»ı\nä¸Ĭ ä¸ĸçºª\nåĨľ åľº\nå¤§ æī¹\næĺİçĻ½ äºĨ\nçļĦ æĪĲéķ¿\nçļĦ æ¯ĶèµĽ\nå¤± è¯¯\nåģļ æĪĲ\nä»Ĭå¤© å°ıç¼ĸ\né¢Ĩ è¢ĸ\næıĲåįĩ äºĨ\nå¾Ĳ å·ŀ\nä»į æľī\nè¿ĩ æ»¤\nå¹½ é»ĺ\nçĥŃ éĩı\nä¸Ģ é¦ĸ\næ¼Ĥäº® çļĦ\nåĩł ç§į\nåĢ¡ è®®\nå°±åı¯ä»¥ äºĨ\næİĴ åĪĹ\néĩį éĩį\nä¼ģä¸ļ åĴĮ\nä¸ĵ å±ŀ\nçħ İ\näº² æĪļ\nçĻ¾åĪĨ ä¹ĭ\nç¨¿ ä»¶\nè¿ĺ å¾Ĺ\näºº åĵ¡\näºī å¤º\næĽ´ å®¹æĺĵ\nå¤§ èĩªçĦ¶\néĽ» èħ¦\nå¤ª ç©º\nåľ° å¤Ħ\nå¤ ¢\nä»ĸ å¯¹\nå¿ħ å°Ĩ\nä¸į å½ĵ\nä¸¥ è°¨\nåĩº åľº\nå·²ç»ı æľī\né¢Ĩ åĨĽ\né«ĺ æ¡£\nä¸Ģ æīĢ\næł Ĺ\nè®© åŃ¦çĶŁ\næĽ¹ æĵį\næŁĲ ä¸Ģ\nä¼¸ åĩº\nèĬ± åįī\næ¸ħ éĨĴ\nèģĶç³» æĸ¹å¼ı\nåĪĨ å±Ģ\nèħ ³\næ©¡ èĥ¶\néķ¿ å¾Ĺ\nç»¿ åľ°\nè¢ į\nçļĦ èīºæľ¯\nå¥³ æľĭåıĭ\nä¸Ń è¶ħ\nç¦» åŃĲ\nå¤ļæł· åĮĸ\néĺ³ åı°\nä½İ ç¢³\nä¸Ģ ç±»\nçŃīæĸ¹éĿ¢ çļĦ\nå¾Ĺ å¥½\næ¨¡ åħ·\nä¸ĩ äº¿\nçķĻ æĦı\nä¸´ æ²Ĥ\nå°ĳ éĩı\nçľĭ åĲĳ\nç»ıèĲ¥ èĢħ\nçķĻä¸ĭ äºĨ\nåĿı äºĨ\nåĳĬ åĪ«\nçľŁ çĲĨ\nç¼´ è´¹\næĬĬ ä½ł\nçļĦ ä»»åĬ¡\næĪĳ å¯¹\nä¹° åħ¥\nçĻ» ä¸Ĭ\næľī ä¸¤ä¸ª\nä¸Ģ å¤´\næĵį æİ§\nåħ¨ è¦ĨçĽĸ\nçĿĢ æīĭ\nå¢Ļ éĿ¢\nå¤ļ æĸ¹\nåı¯çĪ± çļĦ\nä¹Ł åı¯èĥ½\næľĢ æľī\nè¿ĻäºĽ éĥ½æĺ¯\næĥ ¡\nå® ®\nå¾Ī å°ı\néĹ®é¢ĺ æĺ¯\nåĿĩ æľī\nå¾ģ éĽĨ\nè¯´ åĩº\næľī æĦı\né¢ Ĥ\næī¬ å·ŀ\nåķĨä¸ļ æ¨¡å¼ı\nçĶŁ èĤĸ\næįĲ æ¬¾\nå² Ĥ\nç¾İ æĻ¯\nè¿ĺ çľŁ\næĭ¥ æĬ±\nèº«ä½ĵ åģ¥åº·\næ·± å¤Ħ\nçľ¼ ç¥ŀ\nçļĦ å½¢è±¡\nä¼ĺ è¶Ĭ\nå½ĵ æĪĲ\nåĮº åĪĨ\nåİ» éĻ¤\næ³¨ å®ļ\nå§Ĳ å¦¹\nåĮº åĨħ\né© ļ\næļĹ ç¤º\næĺİ äº®\næħ° éĹ®\nå¸Ĥåľº ä»½é¢Ŀ\nçĮª èĤī\nçļĦ èµĦéĩĳ\nåİĨ ç»ı\nå§ĭç»Ī åĿļæĮģ\nçĶŁ æľº\nä¸į é¡¾\néĩĳ åĪļ\nå¤§ å£°\néĻķ è¥¿çľģ\né² į\nåĨľä¸ļ åĨľæĿĳ\næľī å®³\néĹ¨ è¯Ĭ\næ¯ı ä¸Ģæ¬¡\nçļĦ åĽłç´ł\né¢Ŀ å¤ĸ\nåİ¿ çº§\nçļĩ åĲİ\nåĽ½ ä¼ģ\né¦ĸ éĢī\nç¼ĸ åĨĻ\næĭ¿ èµ·\nåģ· åģ·\nä¸İ ä¸ŃåĽ½\nåįĸ å®¶\nç»Ļ ä»ĸä»¬\nç¥ŀ è¯Ŀ\nåŃ¸ æł¡\næĪĳ ä¸ĢçĽ´\nçŁ¥éģĵ äºĨ\nåį Ĵ\nåĴĮ åľ°åĮº\nä»Ģä¹Ī éĥ½\nçĶ» å®¶\næľ¬ çĿĢ\nä½Ļ åĲį\nå®¡ çĲĨ\nä¸Ģ åĲĳ\nåıĳå±ķ è¶ĭåĬ¿\nåĮº éĹ´\næ³¨åĨĮ èµĦæľ¬\nçĲ ¦\nä¸į åı¯ä»¥\nçļĦ åĦ¿åŃĲ\nåĢ¼ çıŃ\nä¸¥æł¼ çļĦ\nå®ŀä½ĵ ç»ıæµİ\næľī æĿĥ\næĪĳ åıĪ\néĵ¶ æ²³\nç«ĭ é©¬\næĿĢ äºĨ\nåĮħ å®¹\nç®¡ å®¶\nèº« é«Ķ\néĵ ħ\nå°ı åŃĲ\nç®¡çĲĨ ç³»ç»Ł\næľīçļĦ äºº\né£İ çĶµ\næĻºèĥ½ åĪ¶éĢł\nç²¾ ç¡®\næĭĽåķĨ å¼ķ\næĭĽåķĨå¼ķ èµĦ\näºĮæīĭ è½¦\nåİ¿ å§Ķ\nèīº äºº\nå¥ ķ\nè¿İ æĿ¥äºĨ\nç»ĵæĿŁ äºĨ\nçļĦ ä¼łç»Ł\næĭ¼ æĲı\nå¥¥ è¿ª\nçĸĳ æĥĳ\nä¹ĭ æĹ¥èµ·\næłĩå¿Ĺ çĿĢ\nåľ° åįĢ\nè¯ł éĩĬ\nåĪ° æľŁ\nåħ¨ éĥ½\nçŁŃ æļĤ\næĺ¯ æĪĳåĽ½\næĪĳ å·²ç»ı\næ»´ æ»´\nå¤© èµĭ\nå¯¹ å¥¹\nåį«çĶŁ éĹ´\nçĶŁäº§ åŁºåľ°\næĹ¥ è®°\nçļĦ æķĻåŃ¦\nåĵ ĩ\næ°ĳ äºĭ\nè¿ĺ åİŁ\næīĭ ä¸ŃçļĦ\nçļĦ èī¯å¥½\næ· «\nä¸Ńåħ± ä¸Ńå¤®\nåĪ ĥ\nåĵ Ħ\nåľ¨ ä»ĸçļĦ\nå°Ī æ¥Ń\nåľº éĿ¢\néĤ» å±ħ\nçĹ Ĵ\nå¦ Ħ\nå¤ĸ ç§ĳ\nä¸į éĢĤ\nä¸¾åĬŀ çļĦ\né Ĥ¹\nåħļçļĦ å»ºè®¾\nçĻ¼ è¡¨\nè·¨ çķĮ\næ²ī æ·Ģ\nå¤§ çīĩ\nè¶Ĭ é«ĺ\nå°Ĩ æĺ¯\nè§ī éĨĴ\nåĤ¨ åŃĺ\nå¢ŀ å¤§\nä¸į è®©\næķ´ å½¢\nå¹³åı° ä¸Ĭ\nåĩł ä½į\nè¯ī æ±Ĥ\nå¥½ ä¸įå¥½\nåľ į\næĸĩ æľ¬\néĢ² åħ¥\nç´ į\næł¹ æĵļ\nèįī æ¡Ī\nåħŃ ä¸ª\nåĭ ¿\nåĪ¶ æĪĲ\né¥® æ°´\næ°¸ æģĴ\nèĩª æĿĢ\nåı¸ é©¬\néļ¾ çĤ¹\nä¸º æĪĳä»¬\nå¼ §\nåī© ä¸ĭçļĦ\nåĩĨå¤ĩ å¥½\nçļĦ æľĢä½³\nèģĶåĲĪ ä¼ļ\næĤ£èĢħ çļĦ\næĪĳä¸į çŁ¥éģĵ\nä¸ĭ ä¸Ģä¸ª\nåıĳå±ķ æĸ¹åĲĳ\nç¬ ¨\næīĢä»¥ æĪĳä»¬\nåĨĻ äºĨ\néĢł æĪĲäºĨ\næ²Ļ æ¼ł\nçŃĽ éĢī\nçģ¾ åĮº\nä¸Ĭ çľĭ\néħ ¶\næ»ļ åĬ¨\néļ¾ åħį\nåĲī åĪ©\nä¸Ģ ä¸Ģ\nç²¾ å¯Ĩ\nä¼¸ æīĭ\nç¤¼ ä»ª\nåħ¨ æĺ¯\nè¶Ĭ å¤§\nä¸Ń æłĩ\nåıĸ åĨ³\nåıĸåĨ³ äºİ\néĢĶ ä¸Ń\nè®¨ åİĮ\næīĭ åĨĮ\nç¬¬ ä¹Ŀ\nåŃĶ åŃĲ\nçĦ¶ å¾Į\nä¸Ģ åħ±\næµ· æĬ¥\næ¬¾ å¼ı\næķ´ å¤©\nè¾¹ çķĮ\nè·¯ è¾¹\næĻĭ çº§\nåĲĲ æ§½\nçļĦ åħ³æ³¨\næĪĳ æ²¡æľī\nå°±æĺ¯ åľ¨\nçĽ® çļĦæĺ¯\nåį³ä½¿ æĺ¯\né¡¶ å°ĸ\nå·²ç»ı åľ¨\nå®īåħ¨ éļĲæĤ£\næłĩ æĿĨ\nåįĹ éĢļ\nä¼ļ å¯¹\nåº§ ä½į\nèµ¢å¾Ĺ äºĨ\nåİŁæĿ¥ çļĦ\nèº« ä¸º\nä¹¦ åºĹ\nè¢Ń åĩ»\nä»Ĭ æĻļ\nä»¥ èī²\nä»¥èī² åĪĹ\næĬĸ éŁ³\nåį´ æ²¡æľī\nä¸§ å¤±\nçļĦ å±ĢéĿ¢\nåįģåĽĽ äºĶ\nçŃī çĽ¸åħ³\næ±ĩ æĢ»\nå¤ĸ è¡¨\nä¸º æ°ĳ\néľĩ æĥĬ\nå¥Ĺ è·¯\nçĬ¯ç½ª å«Įçĸĳ\nå°Ĩ ä»¥\nçİĩ é¢Ĩ\néħĴ åĲ§\nè¡Įä¸ļ åıĳå±ķ\nå¹´ èĩ³\nåĻ¨ æĿĲ\nåĴĮ æĬĢæľ¯\næľĢ å°ı\nè¿Ļä¸Ģ åĪĩ\nèģĮ ç§°\nå½ĵ ä½ľ\næİĢ èµ·\nåĴ ĭ\nä¸Ń éĥ¨\næīĭ èĩĤ\nç½¢ äºĨ\nåª³ å¦ĩ\næ´½ è°Ī\næĹ¶ä»£ ä¸ŃåĽ½\näººçĶŁ çļĦ\næŀģ éĻĲ\nç¦ Ħ\nåĮº æĶ¿åºľ\næľ¬ éĴ±\nç¤¼ åĵģ\nçļĦ éĤ£ä¸ª\nä¾¦ æŁ¥\nå¤ªå¤ļ çļĦ\nå®ŀæĸ½ æĸ¹æ¡Ī\né«ĺ æłĩåĩĨ\næĮĩæĮ¥ éĥ¨\nåĢ¾ æĸľ\nçī¹èī² ç¤¾ä¼ļ\nçµĲ æŀľ\néĴ» çŁ³\nç§» æ¤į\nçī¹ ç§į\nèĩª æĦ¿\næĭľ çĻ»\nåįķ èº«\nåį´ åıĪ\nåĪ¥ äºº\nåĲĪ è§Ħ\næľº çĶµ\nçī¹ æĦı\nå½ĵåīį ä½įç½®\nä¹° å®¶\nåĲĪ çº¦\nèĤ© èĨĢ\nä¸º åĩĨ\nå®¶ è£ħ\nçļĦ çĥŃæĥħ\néĿŀ éģĹ\nçļĦ éŃħåĬĽ\nåİŁ åĳĬ\nç¤¾ä¼ļ åĲĦçķĮ\nä¹° çļĦ\nå¤ļ åĲĥ\néĽķ å¡ĳ\nèµ· ä¹ī\nåĬł åī§\néĤ£ä¸Ģ åĪ»\nå°Ĩ è¿Ľä¸ĢæŃ¥\næ¡Ĥ æŀĹ\næĽ´ å¼º\nå¯¹ ä¼ģä¸ļ\næĹł æĦı\nä¹łè¿ĳå¹³ æĸ°\næµģ å¤±\nå¾® è½¯\nçĽ¸ å¯¹äºİ\nåº§è°Ī ä¼ļ\nä¸» èĲ¥ä¸ļ\nä¸»èĲ¥ä¸ļ åĬ¡\nç§ģ åĭŁ\nå±ķç¤º äºĨ\nå¸¸æĢģ åĮĸ\nè² ´\nç¬¦ åı·\nå¹´è½» çļĦ\nå°± éľĢè¦ģ\nä¹Ł æĽ¾\nçļĦæĥħ ç»ª\nè¾¾ æłĩ\nèĩ ¨\nä½į å±ħ\nä»ħ ä¸º\né¦ĸ å®¶\néĺ´ éĺ³\nä¸įåĨį æĺ¯\nåĽłä¸º å®ĥ\nä¼ģä¸ļ åľ¨\nçĺ ¾\nåĲ¬ è§ģ\nåİŁ æľī\nåĪ¶ è£ģ\nå¯Ĥ å¯ŀ\néĢļè¿ĩ å¯¹\næ»ĳ éĽª\nè¿Ļ å¼ł\nçļĦ çĲĨè§£\næĸ° ä¸ŃåĽ½\nè¿Ļ åĦ¿\nä½İ ä»·\næĥ³ è¿ĩ\nçļĦ ä¿¡å¿ĥ\nå»ºçŃĳ çī©\nçļĦ é¢ľèī²\nä¸į åºĶè¯¥\næĹłçĸĳ æĺ¯\nå¼ķèµ· äºĨ\nåħ¨ åĳĺ\næĿ° åĩº\nè¿Ļæĺ¯ æĪĳ\nèª °\nèĺ ĩ\néĺµ åľ°\nåħħ åĢ¼\nçŁ¿ ä¸ļ\nçĿĢ ä»ĸ\nä¿¡ è®¿\nä¸ĩ è¾¾\næĳ© æĵ¦\nå¼Ģ ç«¯\nèı² å¾ĭ\nèı²å¾ĭ å®¾\nè½¦ åŃĲ\næľ¬èº« çļĦ\nçģ«è½¦ ç«Ļ\nå¸¸ å·ŀ\nä¸º ä»£è¡¨\nä¸ºä»£è¡¨ çļĦ\nå¹¿ çĶµ\näº² äºº\nåı³ æīĭ\néĽĨ è£ħ\néĽĨè£ħ ç®±\nçļĦ åį°è±¡\næ©Ł æľĥ\nåĮĨ åĮĨ\nåħī çĶµ\nå¤§ æĸ¹\nè¿ĺ æľª\nåĪ© å¥½\nç»Ŀ å¤§å¤ļæķ°\nåľ¨ è¿Ļç§į\nä¸Ģ ç»Ħ\næĸ° èĤ¡\nè½¬ åıĳ\næ³ķ åºŃ\næĹł æīĢ\néģĵ è·¯ä¸Ĭ\nçŁ¿ å±±\nèĳ ī\næĶ¶ åĽŀ\nç§° ä¹ĭ\nç§°ä¹ĭ ä¸º\næıŃ éľ²\nåı£ å²¸\nåĲ ¼\nå¿ĥ æĥ³\nçļĦ æ¢¦æĥ³\néĽ ¯\nä¹ĭ åĪĿ\nå¥ĸ é¡¹\nè®¢ éĺħ\nèĵĿ å¤©\nåĿ¦ åħĭ\nç«ĭ æ¡Ī\nèģĶ æīĭ\nä½Ĩæĺ¯ æĪĳ\nå¸® æĪĳ\nä»ħ ä»£è¡¨\nè¯´ æĪĳ\nçļĦ è¶ĭåĬ¿\næ¯Ķè¾ĥ å¤§\nèµ° å»Ĭ\néĩįçĤ¹ é¡¹çĽ®\nèµĮ åľº\nåĲį çīĩ\næĦŁ åı¹\nåľ¨ åľ°ä¸Ĭ\nåıĳ çĥŃ\nèĮĥ çķ´\nçļĦ éģĵè·¯\néĩĳ èī²\nä»ĸ åıĪ\nä¼ļ äº§çĶŁ\næ°ĳ åĽ½\nå®ĺæĸ¹ ç½ĳç«Ļ\næĶ¶çĽĬ çİĩ\nçļĦ åĪ°æĿ¥\nçļĦ åĬŀæ³ķ\næĶ¹ åĪ¶\nä¸ĩ ç§ĳ\nä¸į äºĪ\nè¿ĻäºĽ éĹ®é¢ĺ\nçĪ± ä¸Ĭ\nçĲĥ åľº\nè´£ ä»¤\næİĪ è¯¾\nåľ¨ é¦Ļæ¸¯\nç»Ĩ èħ»\nå¤ļ ä¸ĩ\nåĲĮ å¹´\nå¤§ ä½¿\næĸ ĭ\nä¹Ł ä¸º\næĥł å·ŀ\nåĲī ç¥¥\nçĶ° åĽŃ\nåĽ½å®¶ éĺŁ\néĩį çĶŁ\nåľ¨ åħ¶\né¦Ļ åĳ³\nè´Ł èį·\näº² åĪĩ\nèĩª è±ª\næ²¡ éĶĻ\nåĽłä¸º åľ¨\næĺŁ æĺŁ\néĤ ĳ\nè¿ĺæľī å¾Īå¤ļ\næĳ© æīĺ\næĳ©æīĺ è½¦\næŃ¥ è¡Į\nç®¡çĲĨ ä½ĵç³»\nèĦļ ä¸ĭ\néģİ åİ»\næ±ī è¯Ń\nå¯¹ ä¸įèµ·\nçļĦ ç»ıåİĨ\nåıĬ çĽ¸åħ³\nä¸įå°ĳ äºº\néĩį ç£ħ\nåĬ³åĬ¨ èĢħ\nå¤§åĬĽ åıĳå±ķ\næĢİä¹Ī åģļ\nçĭĹ çĭĹ\nä¸ľåįĹ äºļ\nåĭĩ äºİ\nåħ¬ éĸĭ\nçĵ· çłĸ\nåıĤ çħ§\nå¹¿æĴŃ çĶµè§Ĩ\nä¸¾ åĬ¨\næ±Ł è¥¿çľģ\næķĪ èĥ½\nåĶ¯ æľī\néĿ¢ è²Į\nèĩªåĬ¨ é©¾é©¶\næ¦ľ åįķ\nå½ĵ æĪĳä»¬\nä»² è£ģ\næľ¨ æĿĲ\nç±³ åħ°\nçĻ½ éĵ¶\nçļĦ äººéĥ½\nå°± åĥıæĺ¯\næŃ¥ åħ¥\nåįł çĶ¨\nåĩ» è´¥\nè®© å¤§å®¶\nä¼ļ è®©ä½ł\nåİ¿ æĶ¿åºľ\nè¦ģ çĶ¨\nçŃī å½¢å¼ı\nåįĩ é«ĺ\nè´£ä»» æĦŁ\nå¤ĩ çĶ¨\nä»ĸ è®¤ä¸º\næ¸ħåįİ å¤§åŃ¦\nä»ĸ èĩªå·±\néĸ± è®Ģ\nå¤ªå¹³ æ´ĭ\néĶģ å®ļ\nçŃ Ĩ\nè¿Ļ çīĩ\næī§ æĶ¿\nè¿ĶåĽŀ æĲľçĭĲ\nå°± æŃ¤\néģĩ åĪ°äºĨ\nå¼Ģå¹ķ å¼ı\nç®¡çĲĨ éĥ¨éĹ¨\nå§¿ åĬ¿\nè®¾ æĥ³\nåĽĽ åŃ£\næĬĢæľ¯ äººåĳĺ\nå·® çĤ¹\nè¾ŀ èģĮ\nèĢģ å¸«\nçļĦ æĦŁåıĹ\nä¹Ł éĿŀå¸¸\nå¹´ ä¸ĬåįĬå¹´\næĢª çī©\nèĮĥ æĸĩ\næĪĺ å½¹\nåĲ« ä¹ī\nåħ¨ è¿ĩç¨ĭ\nèĢĮ éĿŀ\néĢļè®¯ åĳĺ\nè¿Ļæł· æīįèĥ½\næľº ç»Ħ\nè£ ı\nçķ¶ çĦ¶\nèµĮ åįļ\nåĲĦ æľī\nå·¥ä½ľ æľºåĪ¶\näºĭ åĲİ\nåī§ éĻ¢\nå±Ĭ æĹ¶\nåĺ´ éĩĮ\nä¸» çº¿\nä¸Ģ åľĪ\nä¸»è¦ģ åİŁåĽł\nå°¸ ä½ĵ\nåĮ»çĸĹ åĻ¨æ¢°\nä½ł æĢİä¹Ī\nä½Ĩ çĶ±äºİ\næĹ¶ ç©º\nçĶ· æľĭåıĭ\nçĶľ èľľ\né«ĺ åľ°\næĻ ĸ\nèĴĲ éĽĨ\nåĩĿèģļ åĬĽ\nå¤ĩ åıĹ\næĸĩ åĪĽ\né©¬ æĿ¥\né©¬æĿ¥ è¥¿äºļ\næŁ´ æ²¹\nä½¿ äºº\næķĻ ä¼ļ\nç§ĭ å¤©\næĺİ çıł\nåħŃ åįģ\nçİ¯å¢ĥ ä¸Ń\næ¸ħ æĻ¨\nç§¯æŀģ åıĤä¸İ\nå·ħ å³°\nä¸º æľŁ\nçŃ¾ åŃĹ\næĦŁ æ¿Ģ\nç§ĭ åŃ£\næĿĳ åŃĲ\næ¢ħ è¥¿\næļ´ éĽ¨\nçĶŁæ´» åľ¨\nçªĹ æĪ·\næģ¶ åĬ£\nçº¯ ç²¹\nåľ¨ æİ¥åıĹ\næ²¡ èĥ½\nè¡Į äºº\nåĭ º\næĭ¨ æīĵ\nä½ľ åĩºäºĨ\nçļĦ ä¸»é¢ĺ\næľª ä¾Ĩ\nä¸Ń æľĢ\næ¾ ľ\né«ĺ è¡Ģåİĭ\nåħ´ èµ·\næŃ£ èĥ½éĩı\nåŁ¹è®Ń çıŃ\næİ¥ åħ¥\nçĦ¶åĲİ åĨį\nåŃ¦çĶŁ ä»¬\né¢ĨåħĪ çļĦ\nçģ« çĥŃ\nä¸ĵ èģĮ\næĪĸèĢħ è¯´\nå»º è¨Ń\né» ı\nå¯¹ åħ¬åı¸\nçī¹ æľīçļĦ\nåħī èį£\nå½ĵ åľº\néĿ¢ åŃĲ\nèµĦäº§ ç®¡çĲĨ\næĹ¶æľŁ çļĦ\nçŀ İ\nåįİ ä¸ľ\nåıĪ ä¸Ģæ¬¡\nèĥİ åĦ¿\nå®ļ çĤ¹\nå¤´ çĹĽ\næ¶² ä½ĵ\næĺ¯ä¸Ģ ä½į\nå¸½ åŃĲ\nå¹´ èµ·\nä¸į ä½İäºİ\nè¾ĥ å°ĳ\néĿ¢ä¸´ çĿĢ\nå±Ĥ å±Ĥ\nèĿ´ èĿ¶\nèī° èĭ¦\néĺ¿ æł¹\néĺ¿æł¹ å»·\næ¦Ĥ æĭ¬\nè¯· éĹ®\nèµ· åºĬ\nå±Ģ å±Ģéķ¿\nç¨³ åģ¥\nå¦Ĥæŀľ æĪĳä»¬\néħĴ ç²¾\næĪ· åı£\næĦŁ æĤŁ\næĪĳä»¬ éľĢè¦ģ\næĬĢ èīº\nèĩª åªĴä½ĵ\nè¿Ľ åĮĸ\næ¿ĢçĥĪ çļĦ\nä½ĵ æ¸©\nèļ ķ\nèĩ´ è¾ŀ\nå®ª æ³ķ\nä¸Ģ çŃīå¥ĸ\nçĵ¶ é¢Ī\næĥł æ°ĳ\nèµ° è·¯\nçİ° ä»»\nåķĨ éĩı\nä¸ĭ è½¦\nåĪ ł\nè²¬ ä»»\nèŀįåĲĪ åıĳå±ķ\nç´ł æĿĲ\næ²¹ ä»·\nåģļ äºº\nçŀ ª\næĶ¹éĿ© åĪĽæĸ°\nçļĦ åĮºåĪ«\nè·¨å¢ĥ çĶµåķĨ\næ¶īåıĬ åĪ°\næīĺ ç®¡\næĪĳ è¿ĺæĺ¯\nåĿĲ æłĩ\nç½ĳ è®¯\nå½ĵåľ° çļĦ\nè¿½ æº¯\nåľŁ èĢ³\nåľŁèĢ³ åħ¶\nåºķ ä¸ĭ\nåĩł åįģå¹´\nç©¿ è¿ĩ\nçĶŁæĢģ æĸĩæĺİ\næİ¨ èĸ\næİ¨èĸ ¦\néł Ĩ\nåĴ³ åĹ½\nåĪĨ æĪĲ\nçĹķ è¿¹\næĪ· ç±į\néĥ½ ä¸įèĥ½\næĻļ ä¼ļ\nåĢ ©\nä½ĵ åĬĽ\nè¿Ļä¸ª èģĮä¸ļ\næĹł å½¢\nåıª æĥ³\nè¿Ľ åıĸ\næĿĢ æŃ»\nèĦ Ĭ\näºĳ åįĹçľģ\næľª çŁ¥\nç¾İ èģĶ\nç¾İèģĶ åĤ¨\nå¤ĸ å½¢\nè¯± æĥĳ\nçĽ £\nè¡Į ä½¿\nåłĨ ç§¯\nçĨŁ ç»ĥ\néĺĲ è¿°\næľĢå¤§ éĻĲåº¦\nå·¡ æŁ¥\nå¤º åĨł\nä¼ģä¸ļ æĸĩåĮĸ\nçĭ® åŃĲ\nä¿Ŀ å®Ī\nä¸ºæł¸å¿ĥ çļĦ\næī© æķ£\nåĪ¶éĢł åķĨ\næŁĶ è½¯\nä¸ºä¸Ģä½ĵ çļĦ\næ¸¸ çİ©\nçĶŁ çĹħ\nå¹« åĬ©\nåĶ± æŃĮ\næīį åı¯ä»¥\nå®½ æĿ¾\nè¦ģ æ¯Ķ\næĺ¯ æĢİæł·\nçģ° èī²\nçİĭ åĽ½\næĲħ æĭĮ\nè®¡ éĩı\nåĳ¨åĽ´ çļĦ\næĻºèĥ½ æīĭæľº\nå¸¸ åĬ¡\nå¸¸åĬ¡ åī¯\né© ´\nå°Ĩ è¿ĳ\nå¯» å¸¸\nä¸ŃåĽ½ å¸Ĥåľº\nå®¹ åĻ¨\nå±± ä¸Ĭ\nèĥĮåĲİ çļĦ\näº² å¯Ĩ\næīĢä»¥ è¯´\néİ ®\nçļĦ çĲĨçĶ±\nå¤§ åŁİå¸Ĥ\nå¸¸ å¹´\næĹħæ¸¸ ä¸ļ\nå°±æĺ¯ è¿Ļæł·\nåĨį æĿ¥\né«ĺ ä½į\nåĨħ é¥°\næŀĦ éĢł\nä¸Ģ èµ·æĿ¥\nçĶ³ è«ĭ\nå·²ç»ı å¼Ģå§ĭ\nçļĦ åĬ¨ä½ľ\nè¢« è¿«\néģį å¸ĥ\nåīĸ æŀĲ\nå°ı äºĭ\nå¿ĥ ä¸ŃçļĦ\nä½ĵåĪ¶ æĶ¹éĿ©\nçļĩ å®¶\næķĻ åłĤ\nåĲĥ å®Į\nåĽ½æ°ĳ åħļ\næĺİç¡® äºĨ\nåıĳå±ķ è§ĦåĪĴ\nç¬¬ä¸Ģ æŃ¥\nå¾Ĺ èµ·\nåľ¨ åĵª\nçļĦ è·¯ä¸Ĭ\né» Ķ\nçķ¶ æĻĤ\nå¤§åĬĽ æĶ¯æĮģ\nåıĮ éĩį\nçŁ¥éģĵ èĩªå·±\nåĲĪä½ľ åįıè®®\næ°Ķ åĬ¿\néķ¿æķĪ æľºåĪ¶\nç½ķ è§ģ\nåĽŀ æĿ¥äºĨ\nä»ĸ ä¼ļ\nä¸Ń æĸ°\nä¸Ńæĸ° ç½ĳ\nçļĦ åķĨåĵģ\nèµł éĢģ\næ±º å®ļ\nå¸Ĥåľº çĽĳç®¡\nçķĻ åŃ¦çĶŁ\nçĶµ åİĭ\näºļ é©¬\näºļé©¬ éĢĬ\nè¿ĺæĺ¯ æ¯Ķè¾ĥ\nä¿ĥè¿Ľ äºĨ\næµģ åħ¥\næĳĦ åĥı\næĳĦåĥı å¤´\næıĲ åıĬ\nåıĳ æİĺ\næī¾ åĩº\næ¢Ŀ ä»¶\nç¹¼ çºĮ\næĪĳ åĸľæ¬¢\nå¥ İ\næ¦ľ æł·\nå¼Ģ èĬ±\næ²ī éĩį\nåŁº åĩĨ\nä»ħä»ħ æĺ¯\nè½¨éģĵ äº¤éĢļ\nåĶĲ å±±\nçŃī ä¸Ģç³»åĪĹ\nä¸įè¿ĩ æĺ¯\nåŃĺåľ¨ çĿĢ\nèĬ± çĶŁ\nå¤ ·\nç»Ī ç©¶\nä¹Łæĺ¯ ä¸Ģä¸ª\nåįģ åŃĹ\nèĸª éħ¬\nä¼¤ å¿ĥ\næĺ¥ ç§ĭ\nåĨ· åį´\nç²¾ çģµ\nçļĦ åľ°åĽ¾\næ¯Ķ çī¹\næ¯Ķçī¹ å¸ģ\næĢ§ åĪ«\nä½Ļ ä¸ĩåħĥ\nä¸įå¿ĺ åĪĿå¿ĥ\nå¿ĥ çĸ¼\næĽ² çº¿\né«ĺ ä½İ\nè¦ı å®ļ\næĻ¯ èī²\nè¦ģ è¯´\nåħ¬åı¸ å°Ĩ\næ¶² åİĭ\nè¿Ŀ çº¦\nåİļ åº¦\nåºŀ å¤§çļĦ\nè¿ĺæĺ¯ å¾Ī\né¦ĸåħĪ æĺ¯\nçµ ²\nåĬ¡ å®ŀ\nä¸¦ ä¸Ķ\nå¢ŀ è¿Ľ\nç»Ħç»ĩ å¼Ģå±ķ\nèµ·æĿ¥ äºĨ\nè¾ĥ å°ı\nå¯¼ æ¸¸\nä¸¤ åľ°\nç¿ ĺ\nçģ¿ çĥĤ\né£İ éĩĩ\næĶ¯ çº¿\næĶ¯çº¿ ä»»åĬ¡\nå¨±ä¹Ĳ åľĪ\nå¤©æ´¥ å¸Ĥ\nåĮħ åĽ´\næľ¬ èµĽåŃ£\néĩįè¦ģ è®²è¯Ŀ\nåıĮ åĲĳ\nåįİ ä¸½\néĶ ¤\nåĦ¿ å¥³\nåįĸ åĩº\nä¾Ĩ èªª\nä»ĭç»į ä¸Ģä¸ĭ\nåĲ¦ è®¤\nåĭ Ŀ\næĻ®éĢļ äºº\nçļĦ åĬ¨åĬĽ\næ¶¨ åģľ\nåŁºéĩĳ ç®¡çĲĨ\nä¸Ģä¸ª éĩįè¦ģ\nè¿Ĳ æ²³\nçħ ŀ\nè´¢æĶ¿ éĥ¨\nè¡Įä¸ļ åįıä¼ļ\néĥ½ å°Ĩ\nè¨Ģ è®º\nä¸ĭ ä¾Ĩ\nå¢¨ è¥¿\nå¢¨è¥¿ åĵ¥\nåĽłä¸º ä»ĸä»¬\næĢİä¹Ī åĽŀäºĭ\nåĬłå¤§ å¯¹\nèĬ Ń\nçīĮ åŃĲ\nä¼ļ ä½¿\nå¦¹ åŃĲ\nç«Ļ éķ¿\nå¿ħ å¤ĩ\næłĳ æľ¨\næģ¶ æĦı\næ²³ éģĵ\nå¯Į è£ķ\nç¹ģ åįİ\nä»£è¡¨ åĽ¢\næµĳ èº«\né¦ĸ ä½į\nèĪªç©º åħ¬åı¸\néĽ» å½±\nä¸ĵ è¾ĳ\næ°´ æºĲ\nä¸Ń æ¯Ĵ\nä¸¦ ä¸į\nèĢĮ åİ»\né ĥĿ\näºİ æŃ¤\næĸĩåĮĸ å»ºè®¾\nèĤ¯å®ļ ä¼ļ\nå¸ĮæľĽ å¤§å®¶\næıı åĨĻ\nä½İ è°ĥ\næĸ°åħ´ äº§ä¸ļ\næ·Ħ åįļ\næĶ¾ å¼Ģ\nçļĦ æĢ§æł¼\nçĸ¾çĹħ çļĦ\næķ´ é¡¿\nçº¿ä¸Ĭ çº¿ä¸ĭ\néĢī é¡¹\nçļĦ è®¤åı¯\næķ´ é½Ĳ\nçĶļ ä¹Ī\nçľģ åĨħ\nåı¤ äºº\næ°ĳ ä¿Ĺ\nçī¡ ä¸¹\néĹ¨ çªĹ\néĤ£ æł·çļĦ\nçĽĳäºĭ ä¼ļ\nç¿¡ ç¿ł\nç¦ ¹\nåįĥä¸ĩ ä¸įè¦ģ\næĶ¶ ç¼©\nçļĦ æĸĩåŃĹ\nåĴĮ å°ļ\næĮĩ ä»¤\nåħ±äº§ åħļåĳĺ\nçļĦ çĪ¶äº²\nå®Į å·¥\nåĬ¡ å·¥\né©¬ æĭī\né©¬æĭī æĿ¾\næµĭ è¯Ħ\nå² ļ\nä¸į åģļ\nä¸ĥ å¹´\nåĿĩ ä»·\nä¸» è§Ĥ\nå¾Ī ä¸įéĶĻ\nèĤ¡ä¸ľ å¤§ä¼ļ\näºĶ ä¸Ģ\né£İ åĲ¹\nå¼Ģ éĩĩ\nè¿Ļä¹Ī å¤§\nèĥ½ çľĭåĪ°\nèĢĥ è¯Ħ\nåį³ ä¾¿æĺ¯\nçİ°ä»£ åĨľä¸ļ\næ¯Ķè¾ĥ é«ĺ\nè¦ģ çľĭ\næ²¡ äºĨ\nè§£ æ±º\nçİ¯ æ¯Ķ\nåĨ² åĬ¨\næ·± å¤ľ\nåĩł åįĥ\nä¿ ı\nç½ĳ æ°ĳ\nå°± æ²¡\nä»ĸ è¡¨ç¤º\néĩı åŃĲ\næĹ©é¤Ĳ åĬłçĽŁ\nåįĬ å²Ľ\næĲŀ ç¬ĳ\nä¸Ĭ æĬ¥\nå¯ ©\né¢Ħ è®¢\nèľĤ èľľ\næŁ¥ æī¾\nä¼Ĺ æīĢ\nä¼ĹæīĢ åĳ¨\nä¼ĹæīĢåĳ¨ çŁ¥\næĹ© æĹ¥\nåıĳ æī¬\nåĴĮ ä¸ªäºº\nåĬłåħ¥ äºĨ\nåĸ® ä½į\nåĪĨ æĺİ\nç¬¬ä¸Ģ æī¹\nç¾İ åĨĽ\næĿĢ æīĭ\néĹ¨ å¤ĸ\nåķĨ åľĪ\nä¸Ģ åĪ»\nçļĦçľ¼ ç¥ŀ\néľ Ħ\näºĽ ä»Ģä¹Ī\nåĬł æ·±\næ¯ı ä½į\nå¸Ĥ éĿ¢ä¸Ĭ\nåıĶ åıĶ\nçļĦ éĤ£ç§į\nç²¤ æ¸¯æ¾³\nè´´ å¿ĥ\næĸĩåĮĸ äº§ä¸ļ\nçº¢ æĹĹ\nåĺī åħ´\næĶ¶ çĽĺ\nå®ĮæĪĲ åĲİ\nä¼ģä¸ļ ç®¡çĲĨ\nçºµ æ¨ª\nä¸į ä¿¡\næĪĲ éĥ½å¸Ĥ\næ´Ĺ æ¾¡\nä¸¾è¡Į çļĦ\nçĶ¢ çĶŁ\nç©¿ ä¸Ĭ\nåĪļ å¥½\nåħī çº¿\næīĵ æŀ¶\nè¿Ļ æľ¬ä¹¦\nåĶ®åĲİ æľįåĬ¡\nåĩł åĪĨ\nä¸Ĭ æ¬¡\nä¸į åĪĨ\näº§ åĲİ\néģ¿ å¼Ģ\nç»Ī æŀģ\nä»£è¡¨ å¤§ä¼ļ\næ¼Ķ æĬĢ\nåĽŀ è´Ń\nåŃ¦ è´¹\néĺ» ç¢į\nä¸Ģå¤§ æī¹\nç«£ å·¥\nåĨ³ å®ļäºĨ\nä½Ĩ å¦Ĥæŀľ\nçĶµ æµģ\nä¸Ŀ æ¯«\nèĥ½å¤Ł åľ¨\néĶĢåĶ® æĶ¶åħ¥\nåľ¨ åŃ¦æł¡\næ°´ åĩĨ\nè§Ĩ çº¿\nèĩª åľ¨\nåķĨä¸ļ éĵ¶è¡Į\nä¸ºäºĨ è®©\nçį² å¾Ĺ\nçİ©å®¶ æľĭåıĭ\néĿ¢ èĨľ\nåĪĨ åī²\nåī§ æľ¬\nç« Ń\nè¯´ å¾Ĺ\næĥ³ çŁ¥éģĵ\nçļĦäºº çī©\nèĮħ åı°\nåĲĮ ä¸Ģä¸ª\næķ°æį® ä¸Ńå¿ĥ\nçĶ Ħ\nåĸľ æĤ¦\nä¸ĭæĿ¥ çļĦ\nå®ļ åĲĳ\næŀģ åħ·\nçļĦ åľŁåľ°\néĤ£ åĢĭ\næĳĦ åħ¥\näºĨ æĪĳçļĦ\né©¬ è·¯\nåħ¨ ç¤¾ä¼ļ\nè®® æ¡Ī\nå±ĭ åŃĲ\nåĲį åı«\nåĮ ª\nåľ¨ å¤ĸéĿ¢\nåįİ åįĹ\nåıĳ è´§\nå¯Ĵ åĨ·\né«ĺçŃī æķĻèĤ²\nè¯¦ç»Ĩ çļĦ\nä¸ª é¡¹çĽ®\nçĶŁäº§ åĬĽ\næĹ¶ å¸¸\nå°± æľĥ\nä¸ĩ èĤ¡\néĻĮçĶŁ äºº\næıı ç»ĺ\nå½ĵ çĦ¶æĺ¯\næĭī åĬ¨\néĵ¾ æĿ¡\næī£ éĻ¤\nä¸ĢçĽ´ éĥ½\nå°ı åŃ©åŃĲ\nä¼¤ åı£\nç¬¬äºĮ å±Ĭ\nè´Ń ç½®\nçļĩ é©¬\næĹł èģĬ\nè¡¨ åĨ³\nè¯¸ å¦Ĥ\nåĵį èµ·\né£İ æļ´\nä¸Ģæµģ çļĦ\nç ·¨\nè§£æĶ¾ åĨĽ\nå®¤ å¤ĸ\nå°± è¿Ļä¹Ī\nå³ ¶\næīĢæľī äººéĥ½\næĲľç´¢ å¼ķæĵİ\nçļĦ æĪĲæľ¬\nåħļ æĶ¿\nåıĳè¡Į äºº\nçļĦ äºĭå®ŀ\nå¯¹ è¯¥\nåıĹ æįŁ\nä¿Ħ ä¹Į\né²ľ èĬ±\nåĨľ èį¯\næŀģ éĢŁ\næĢ¥ æĢ§\nä¸¤ ä¼ļ\nä¸ĢèĪ¬ æĿ¥è¯´\næµ· é²ľ\nåĨ Ī\nçĶ¨ äºº\nçĶ¨äºº åįķä½į\nåĢ ª\nåĦª æĥł\næł¹ æºĲ\nåĽ¢ è´Ń\nç¾İ æ´²\nä¸ĭ è¡Į\nå¹´ æľ«\nèľ ¡\nè¯ģ ä»¶\nåľ¨ æĪĳåĽ½\nä¸į åºĶ\næĮī æĹ¶\nåłª ç§°\nåľº ä¸Ĭ\nå¹²éĥ¨ èģĮå·¥\næľī å¾Īå¤§çļĦ\næķ°åŃĹ ç»ıæµİ\næ¼Ķ ç»ĥ\næį® ç»Łè®¡\nå¾Ģ æĿ¥\nå¹¿åĳĬ æľįåĬ¡\nçļĦ è·Ŀç¦»\næŃ ¸\nè¨Ģ è¯Ń\nè¢« èªī\nè¢«èªī ä¸º\nåĭī å¼º\nå°Ĭ æķ¬\nä¸ĩ äº¿åħĥ\nä¸ŃåĽ½ åĽ½éĻħ\nå¹² é¢Ħ\nå¹´ äº§\nèĢķ åľ°\nèĮ İ\nåį³ æĺ¯\næĺ¨ æĻļ\næĪĲä¸º ä¸Ģä¸ª\nçºł æŃ£\nåĳ½ åĲį\né¢ģ å¸ĥ\nçĮľ æµĭ\nä¿ĿèŃ· æĶ¿çŃĸ\næĭ ¢\næ´» æ³¼\nçŃī éĥ¨éĹ¨\nåŃ¦ åĪ°\nå¢ŀåĢ¼ ç¨İ\nèĪª çº¿\nåĨ ¤\nåįģ åĩłå¹´\næİ§èĤ¡ èĤ¡ä¸ľ\nä¸Ģ éĹ¨\nä¸ª å·¥ä½ľ\nä¸ªå·¥ä½ľ æĹ¥\næĸ° è¥¿\næĸ°è¥¿ åħ°\nè®º è¯ģ\nä» Ĩ\nåı¦å¤ĸ ä¸Ģä¸ª\næĶ¹ ç¼ĸ\nä¸¥ ç¦ģ\nåĸľ å¥½\nä¸ªäºº ä¿¡æģ¯\næ»¡æĦı åº¦\nåĵ ¨\nå¸Ī èµĦ\næĶ¹ ä¸º\nç«ŀäºī å¯¹æīĭ\nåĩº çĤī\nåķĨ äºº\nå¤§ æ£ļ\næĮĩå¯¼ ä¸ĭ\nå¦ĩ ç§ĳ\nè¼ ª\næī ģ\nåĲĮæĹ¶ è¿ĺ\nå¹¶ éĢļè¿ĩ\næĪĺ éĺŁ\nèĶĵ å»¶\nä¿ ŀ\néĢĤå½ĵ çļĦ\nåīį è¾Ī\nåĵģ åĳ³\næ¹¿ åľ°\næĪĲ åŀĭ\nä¸į åıªæĺ¯\næĥ© ç½ļ\nåĩºåı° äºĨ\nçİ© æ¸¸æĪı\næīį åıĳçİ°\nåºĶ èģĺ\nå¤ĸ æĿ¥\nåįł é¢Ĩ\nå±ķ æľĽ\nå« Ĥ\næ¸¯ èĤ¡\næ¡Į ä¸Ĭ\næĶ¯ æŁ±\nçļĦæĥħ å½¢\nå¹¿éĺĶ çļĦ\næĶ¯ è¡Į\nå´© æºĥ\næľĪ ä¸Ń\næľĪä¸Ń æĹ¬\nç»į åħ´\nä¸´ è¿ĳ\næĬ¤ æłı\næļ ®\nåįķ èģĮä¸ļ\nè¾¹ å¢ĥ\næĹ¥ çħ§\nä¸Ģ åłĨ\nçĽ´ å¾Ħ\nåħ±åĲĮ ä½ĵ\næĸ°åįİ ç½ĳ\næīĵ å¥½\nçĶµåĬ¨ æ±½è½¦\nä¸į æĺİçĻ½\néĢĻ è£¡\nçĽĽ å¤§\nçİĭ æľĿ\nåĨį ä¸Ģæ¬¡\nåĬŀåħ¬ åİħ\nè´¨ æĬ¼\nåĲĪ åĩ»\näººä»¬ å¯¹\néĽ¶ é£Ł\néĥ½ä¸į çŁ¥éģĵ\nçļĦ è¯Ńè¨Ģ\nåĭŁéĽĨ èµĦéĩĳ\nåĬ¨ èĦī\nå½ ¤\nè¿Ļ åĩłå¹´\nçŁŃ è§Ĩé¢ĳ\nå¤ª é«ĺ\nå¸¸ å§Ķä¼ļ\nåĬł çıŃ\néĩį å¿ĥ\nåªĴä½ĵ æĬ¥éģĵ\næ²¡ æ³ķ\néĹ» åĲį\nçĥŃ åº¦\nå¹¿æ³Ľ çļĦ\nåħŃ å¤§\nçī© ä½ĵ\nä¸į è¯¥\né¢ĺ ä¸»\nç²¾å½© çļĦ\nä¸º è¿Ľä¸ĢæŃ¥\nèĻ ŀ\nåĽº çĦ¶\nè´µå·ŀ çľģ\nçºł ç»ĵ\nä»£çĲĨ äºº\næ³ķå®ļ ä»£è¡¨\nåı¦ä¸Ģ ç§į\nä¸į åĲ«\næĭ¯ æķĳ\nä¼ļ ç»Ļ\nè¯Ĺ è¯į\nåĲĮ ç±»\nå¾Ĺ ä¸įåĪ°\næĬĵ ç´§\nä»¥ åħ¶\nåħ¥ åħļ\nè¿ĺ åı¯\næľŁ åĪĬ\nå¾Īå¤ļ æĹ¶åĢĻ\næĹ¥ åĲİ\nåħ¬ çº¦\nä¸Ģ ä¸¾\næ¯Ķè¾ĥ å¤ļ\néĩĳ æ²Ļ\næį ŀ\næİĴ åĩº\næŃ¦ æľ¯\nä¸į æĸ·\nä¸Ń èĢĥ\nä¿¡ èµĸ\nä»İä¸ļ äººåĳĺ\nçģ« çĦ°\néĨĴ æĿ¥\nä½İ æ¸©\néĢ¾ æľŁ\nåĬ± å¿Ĺ\néħ ¥\nåı¯è°ĵ æĺ¯\nè¿Ļ æĦıåĳ³çĿĢ\né¢ł è¦Ĩ\nåĮĹäº¬ å¤§åŃ¦\nä¸ĵ çº¿\nåıĬ ä»¥ä¸Ĭ\nè¨ ª\nèĢĮ åĲİ\nçŁ¥ ä¹İ\nä¸Ģå¯¹ ä¸Ģ\nå¨ĥ å¨ĥ\nçģ¾ éļ¾\nåħ¨ å±Ģ\næīĢå¾Ĺ ç¨İ\nå®ŀ æĥł\nèļĤ èļģ\nä¹Ł çŁ¥éģĵ\næ¸© åĴĮ\nèĲ½ ä¸ĭ\nåŀĭ ä¼ģä¸ļ\nåĨį ä¹Ł\nä¾Ľ çĥŃ\né«ĺ æ½®\nçĢıè¦½ åĻ¨\nçļĦ å·¨å¤§\nåħĪ å¤©\nå¹´ ä¸ŃåĽ½\nç±»ä¼¼ çļĦ\nçĲĨäºĭ ä¼ļ\nç©º éĸĵ\nçģµ æĦŁ\nåĬĽ æ°Ķ\nå¸¦ ä¸Ĭ\nä¸įå¥½ æĦıæĢĿ\næľī ä½ķ\nå·² åľ¨\nåıĸ åĩº\nè¿Ŀæ³ķ çĬ¯ç½ª\nåŃ¦ä¹ł è´¯å½»\nåľ° å¸¦\næ¥¼ æ¢¯\nçŃī æĥħåĨµ\nä»İ åīį\nçļĦ ä¹łæĥ¯\nç³Ł ç³ķ\nå°± èĥ½å¤Ł\nè© ķ\nä¸Ģ å¾ĭ\næĮ« æĬĺ\nåİŁæĸĩ åľ°åĿĢ\nå½ĵ å±Ģ\nä¸į éĢļ\næķ° åįĥ\néĺŁä¼į å»ºè®¾\næĹ¶ èĬĤ\nåģļ èµ·\nçļĦ è®°å¿Ĩ\nç½ĳç»ľ å®īåħ¨\nåĩ¡ æĺ¯\næ° ¯\néĽķ åĪ»\nåŁĥ åıĬ\næĪĳ åı¯ä»¥\nçĽĳ çĲĨ\næĽ´ åħ·\nåŁİ ç®¡\nèĭ ¯\nåı¥ åŃĲ\nèĭ¥ æľī\nä»İæĿ¥ ä¸į\nçĽ¸åħ³ è´Łè´£\nå®īåħ¨ æĦŁ\næĽ´ è¦ģ\nçļĦæĥħ æĦŁ\nçī¢ çī¢\nè¾ĥ å¥½çļĦ\næ° ®\nç¬ĳ è¯Ŀ\nè½¦ å±ķ\nä¹ĭ ç¾İ\nç®Ģ çº¦\nç±»åŀĭ çļĦ\nèĢģ åĮĸ\nçľĭ ä½ł\nè¿ĩ åĪĨ\néĹ¨ åīį\nä¸Ģ éĹ´\næĥ³ åİ»\nåª Ľ\nåľŁ è±Ĩ\nåıĪ ç§°\nä¸Ń ä¿¡\nåŃĺ éĩı\né©¬ äºĳ\nèĩ´ ä½¿\nåħĪ åīį\nèĢģ åŃĲ\næīĵ æī®\næ¯ķä¸ļ äºİ\næ¯ķä¸ļ åĲİ\nç¾İå¥½ çĶŁæ´»\nå·¥ä¸ļ ä¼ģä¸ļ\nå°±å¥½ äºĨ\nèħĲ èļĢ\nçıį çıł\nåĪ° è¿ĻéĩĮ\næīĢéľĢ çļĦ\nè¿Ļæĺ¯ åĽłä¸º\nçĲĨæĥ³ çļĦ\nå·®å¼Ĥ åĮĸ\né ®\né® ®\näºļ å¤ª\næĹł ç©·\næıĲ çİ°\nä¸ĵä¸ļ æĬĢæľ¯\nçĶ¢ æ¥Ń\nåŃ¦ åŃĲ\nç§ĳ å¹»\nåįłåľ° éĿ¢ç§¯\nä¸į åĩĨ\næľªæĪĲ å¹´äºº\næĶ¶ å½ķ\nè¿ĺ æ¬¾\néĴ¢ çŃĭ\næ¼ ¢\nå¾Ĺ æĦı\nç»¼åĲĪ ä½ĵ\næŀģ é«ĺ\nåįķ è¯į\né«ĺæķĪ çļĦ\néª¨ å¤´\næī§ çĿĢ\nçĽĽ ä¸ĸ\næ¨¡ çī¹\næĽ´ èĥ½\nç»Ŀ æľĽ\nå¯¹åºĶ çļĦ\næ¨ Ĭ\næĸ° ä¸ī\næĸ°ä¸ī æĿ¿\næģ° æģ°\nåĲį å®¶\næł¸å¿ĥ æĬĢæľ¯\nä¸ª å°ı\næĢİä¹Ī ä¼ļ\nè¯´ ä¸įå®ļ\nè¥¿ çĵľ\nåĵ İ\nç¢ Ł\nå¿ħ ä¸įåı¯\nå¿ħä¸įåı¯ å°ĳ\nä¹ĭ éĸĵ\nåĪĨ ç®¡\näº¤éĢļ äºĭæķħ\nå¼Ģ åĬŀ\nå¾ģæ±Ĥ æĦıè§ģ\näº ¨\néĽ»åŃĲ éĥµ\néĽ»åŃĲéĥµ ä»¶\nä¿¡æģ¯ æľįåĬ¡\nä½ł è§īå¾Ĺ\nçĽ´ è§Ĥ\nå·² å®ĮæĪĲ\nåĪĨ ä¼ļ\nåĽŀ åįĩ\néļ »\nå¥½ äºº\näºĨè§£ ä¸Ģä¸ĭ\nåį« æµ´\næľĢ çĪ±\nåºŀ å¤§\nå®¢ æĪ¿\nçĳŀ åħ¸\néĥ½ ä¸įæĺ¯\né¤ ¨\nèĹ ī\nçļĦ åĲĦé¡¹\nä¸º çĽ®æłĩ\nçļĦ è®¤çŁ¥\nå½±åĵįåĬĽ çļĦ\nå¤¸ å¼ł\nä½© æĪ´\næ±ĩ çİĩ\nçļĦ çĪ±æĥħ\næĺ¥ é£İ\næĺ¯ æĪĳçļĦ\næ¨ ¹\nåįĬ å°ıæĹ¶\nå±± åİ¿\nå±± è¥¿çľģ\nèĢĮ è¿Ļ\næĽ´å¤ļ ä¿¡æģ¯\nè¿ĺ æľīä¸ĢäºĽ\nç²¾ ç»ĨåĮĸ\nç¾İ åŃ¦\nçĶ± æĸ¼\nä»ħä¾Ľ åıĤèĢĥ\nå¾Ī é«ĺçļĦ\nåıł åĬł\nè¿Ļä¹Ī è¯´\nå±ķ åĩº\nåĽĽ å¤Ħ\nä¸ĩ å®¶\næĭĽ åĭŁ\nçļĦ å¼ºå¤§\næĤ£ æľī\nå°ı äºİ\nä¹Łè®¸ æĺ¯\nå¯¹ èĩªå·±çļĦ\nèģĮä¸ļ æķĻèĤ²\næĿ¥ è¿Ľè¡Į\næ¡£ æ¬¡\næīĵ èµ¢\néĥ½æľī çĿĢ\nåº ¸\nè¯Ń æ°Ķ\nçĶ² éĨĽ\nç©º åĨĽ\nè½¦ åĨħ\nåĽłä¸º ä½ł\nå®ŀ æķĪ\næĥħ ä¾£\nåıĳè¾¾ åĽ½å®¶\néķľ åŃĲ\næ¯į å©´\nä½Ĩæĺ¯ ä»ĸ\nç§¯æŀģ æİ¨è¿Ľ\nå¤§å¹ħ åº¦\nçļĦ å¥³åĦ¿\né¤Ĳ æ¡Į\nåĲ¬ å¾Ĺ\nçļĦ ç§¯æŀģæĢ§\nå¥½ åĲ§\næĹ¥ æ¶Īæģ¯\næľī ä»»ä½ķ\næ¯Ĵ åĵģ\næĹ©çĤ¹ åĬłçĽŁ\nç¬¬ä¸Ģ å¤©\nå°½ åĬĽ\næł ĸ\nä¸» æīĵ\næĺ¯ä¸Ģ åĲį\nçĪĨ æĸĻ\näºĭä¸ļ åıĳå±ķ\nå¾® åķĨ\näºİä¸Ģä½ĵ çļĦ\nçĶŁ çĮª\nèĩªçĦ¶ èµĦæºĲ\nçŀĦ åĩĨ\nè§Ħæ¨¡ åĮĸ\nå¹¶ ä¸İ\nèĤ¥ èĥĸ\nå®¶ çĶ¨\nå¤§ çĪ·\né¢Ħ åĳĬ\næĿ¥ åģļ\néĺ³ åİ¿\næŀĦ çŃĳ\né¢ģ å¥ĸ\nåİĨåı² æĸĩåĮĸ\næľįåĭĻ æĪĸ\næĢ» åĨ³èµĽ\nåıĳ åŀĭ\næĪĳ çľŁçļĦ\næĽ ¦\nåıĤ ä¼ļ\nèĦĨ å¼±\nåĩĨ åħ¥\nèħ¹ éĥ¨\nåı¸ ä»¤\næĤ² åī§\nå¤© ä¸Ĭ\nåı£ ä¸Ń\nä¸ĩ ä¸ª\nåŃ¦ ä¸ļ\næıĲ åĢ¡\nä¸¤ è¾¹\nå¤§ èĤ¡ä¸ľ\nåı¤ éķĩ\nè¡Ģ ç³ĸ\nçļĦ ç¨ĭåº¦\næ£ī èĬ±\nåĲİ åı°\nå°± åĮ»\næķ´ æķ´\nèĴ ²\nçĽĪåĪ© èĥ½åĬĽ\nç± ½\nèĦ «\nçľĭ éĩį\nå®¶ éķ·\nèģĺ çĶ¨\nèµĽ éģĵ\nåīį èĢħ\nå»º èŃ°\nå¾ĭå¸Ī äºĭåĬ¡\nèīºæľ¯ åĵģ\næľī èĩªå·±çļĦ\nåĲ¦ å®ļ\nç¤¾ åĽ¢\nåĳ¨ äºĶ\nå¸¦ åĪ°\nå·¥ä½ľ ä¼ļè®®\nèĤ¡ æľ¬\nå¤ĸ åĮħ\nå®¶ åħ¬åı¸\nçĽĳ çĭ±\nèĪ Ĭ\nåĲį æł¡\nè¥¿ æ¹ĸ\nè¶ħè¿ĩ äºĨ\nåįĹ å±±\nç»Ħ ä»¶\nåĢ¼å¾Ĺ æ³¨æĦı\næĮ£ æīİ\näºĭ è¿¹\nç¶ĵ çĩŁ\nç§ĳ å®¤\nå¥½ åĲĹ\næ¤ħ åŃĲ\nåľĪ åŃĲ\nä½Ĩ å¥¹\næµģ çķħ\nåĲĦèĩª çļĦ\nèģĮ åĳĺ\nè¡į çĶŁ\nåħ¨ åľº\næĴ¤ éĶĢ\nåį´ è¢«\nå®ģ éĿĻ\nåīį æīĢ\nåīįæīĢ æľª\nåīįæīĢæľª æľī\nä¸» ä¸ļ\nåĮĹ ç¾İ\nè¯Ħ å®ļ\nåĵģ å°Ŀ\nå¤§å®¶ éĥ½åľ¨\nä¸» å¸ħ\nç»Ĩ å¿ĥ\nä¿¡æģ¯ æĬ«éľ²\nçļĦ ç«ŀäºī\néĢĻæ¨£ çļĦ\nç§ĳåĪĽ æĿ¿\néĩĩ æĳĺ\nç¥¨ æį®\néĢĲ å¹´\nèĭ± è¶ħ\nè¡Įä¸ļ åĨħ\näºº å¯¿\nåĲİ åĭ¤\nå¦Ĥ æĦı\nç¬Ķ è¯ķ\næ·¡æ·¡ çļĦ\nä¸į èĪĴæľį\nä½ĵ ç§¯\nä¹Łä¸į è¦ģ\néĿ¢ æĸĻ\næł· æľ¬\nç¥ ģ\næĮī è§Ħå®ļ\nå¤§æ¦Ĥ æĺ¯\næĥħåĨµ è¿Ľè¡Į\nåĲĦ åįķä½į\nçļĦ ç¬ĳå®¹\nåĩºèī² çļĦ\nä»£è¡¨ æĢ§\nçļĦ ç¾İå¥½\néĴ ¦\nå¾® çĶŁçī©\nè¶Ĭ æĺ¯\næĸ¹ åı¯\nå¹² èĦĨ\néģĬ æĪ²\nçļĦ åħ´è¶£\néĹ® è´£\nåĽłä¸º æĪĳä»¬\nèĢĥ éĩı\nçĶŁ çĶŁ\néĺ» åĬĽ\nä¸į åħģè®¸\næıĲ è®®\nåĩı æĮģ\nåıªæĺ¯ ä¸Ģä¸ª\næĪĳ æĬĬ\nåıĳçİ° èĩªå·±\nå¢ŀ å¹ħ\nå¦ į\nèĹĿ è¡ĵ\nä¸Ģå®¶ äºº\nåĪĨ çº§\nçļĦ æķ°éĩı\nè½® èŀįèµĦ\nçŃī åĽłç´ł\nå¤§ å¤«\nèģĺ è¯·\né£İ æľº\nç»½ æĶ¾\nä»»ä½ķ ä¸Ģä¸ª\néł Ĥ\néĺ¶ çº§\næĬĬ å¥¹\nè¿Ľ åĨĽ\nèĥ½ åģļåĪ°\nåŁ¹è®Ń æľºæŀĦ\nçī© æĸĻ\nç«¥ è¯Ŀ\næĮĩå¯¼ æĦıè§ģ\néĺ ®\næ·±åħ¥ æİ¨è¿Ľ\nä¸» æľº\næ¸Ķ ä¸ļ\nä¸į æľį\næµĵ éĥģ\nè¡Ĺ ä¸Ĭ\nä¾Ŀ æ¬¡\næĹ¶ æ®µ\næ¢ µ\nçļĦ åĸľçĪ±\nå¾Ī éķ¿\nåĪĿ çº§\næŀľ æĸŃ\næĬ¢ æķĳ\né¼ĵ èĪŀ\nä¾Ľ éľĢ\næ·±åħ¥ å¼Ģå±ķ\näº§ä¸ļ éĽĨç¾¤\nåĻª éŁ³\nåĲ¬ çĿĢ\næ·±åĪ» çļĦ\nå¿į åıĹ\nçĶµ ç£ģ\nå¼º èĢħ\næ»ĭ åĳ³\næĽ¼ èģĶ\nåı¯ä»¥ çĽ´æİ¥\nå¤§ ç±³\næŃ· åı²\næĶ¿åĬ¡ æľįåĬ¡\nåħ¬ å¼ı\nç¤¾ ç¾¤\néģĵå£« èģĮä¸ļ\nä¹ĭ æĥħ\næµ· æ°´\næ¼Ķ å¥ı\nåºĹ éĩĮ\nè¿¹ è±¡\nåıĳå±ķ çĲĨå¿µ\né«ĺ ç©º\nåĳ¨ åĪĬ\nåĽŀ åĪ°äºĨ\nä¸į éĢĤåĲĪ\nåłµ å¡ŀ\nåĬ Ī\næ°´ ä¸Ĭ\nçĢĳ å¸ĥ\nçº³ç¨İ äºº\nçĩĥ æ²¹\nå·¥ç¨ĭ é¡¹çĽ®\nå³¡ è°·\næľī éĴĪå¯¹æĢ§\nåľĨ å½¢\næľ¬ å¸Ĥ\nè¿Ļ è¯Ŀ\nç®¡çĲĨ èĢħ\nç¡®è¯Ĭ çĹħä¾ĭ\næĬĬ æīĭ\nå½© èī²\nä¸Ĭ åīį\nå¤¯ å®ŀ\nç¾Ĭ èĤī\nå¾Ģ å¹´\næĵħ èĩª\nè¿· äºº\nèĪª æ¯į\nç²¾ ç»Ĩ\nåľ¨ æĪĳçļĦ\nåĪĽ æĬķ\néº¦ åħĭ\næľĪ ç»ı\nåĮĹ æµ·\nä¹ĭ æĺŁ\nåı¶ åŃĲ\nå¸Ĥåľº ç«ŀäºī\nè¿Ļ äºĭ\nåıĥ èĪĩ\näº§ åľ°\nåĶ ī\nåķĨåĵģ æĪ¿\nèĪª è¿Ĳ\nä¼ĺ å¼Ĥ\nä»ĸä»¬ æĺ¯\néĽ¨ æ°´\nè¯į æ±ĩ\nåĨľ çĶ°\næ¬§ éĺ³\nçŁŃ çº¿\nç®¡ ç½ĳ\næł¹ åŁº\nåıªæľī ä¸Ģä¸ª\néŀĭ åŃĲ\nå¸Ĥ å§Ķä¹¦è®°\nåĪ» æĦı\nè¡Į è½¦\nåıĪ è¢«\nåı¯éĿł æĢ§\nè´ ±\nä»» åĳ½\nåºĶ åľ¨\nå°± å¾Ĺ\næľįåĬ¡ ä½ĵç³»\næĶ¿ æĿĥ\nåıĳè¨Ģ äºº\nè¿ĩ å¾Ģ\nä¸¤ åıª\nèĻ½ è¯´\néĢģ ä¸Ĭ\nä»Ģä¹Ī äºĭ\næķ£ æĸĩ\næİĮ æİ§\nèĸĦ å¼±\nä¸ĭéĿ¢ å°±\nä¸»è¦ģ åĨħå®¹\nå¾Ī éĩįè¦ģçļĦ\nå°± è¯´\nçĻ½èī² çļĦ\néĤ£ä¸ª æĹ¶åĢĻ\nç»ıçºª äºº\nçļĦ æ¯įäº²\nç¬Ķè®° æľ¬\nåºķ å±Ĥ\nè¿ĳ ä»£\nè§£ è¯´\nè²ł è²¬\næľĢå¤§ åĮĸ\nåķĨ éĵº\næł¡ åıĭ\næ² ģ\nä¸į åĩºæĿ¥\néĻ· éĺ±\nç¨ ħ\nåħ¬å¸ĥ äºĨ\nåĩĢ åĢ¼\nçĽ¸å¯¹ è¾ĥ\nç¬ Ľ\næł¸ ç®Ĺ\nåįİ ä¾¨\næĢ¥ æķĳ\næĮº å¥½\nåħĴ ç«¥\näºĮ èĥİ\nåĩº èĩª\nåĿ Ł\næīĭ ä¸ĭ\nå± ¡\nåĪĽéĢł æĢ§\nä¸¥æł¼ æĮīçħ§\nåĨį åİ»\nä¸ľ çĽŁ\näºº æµģ\näºĨä¸Ģ å£°\nå°ıæĹ¶ åīį\nè´µ æĹı\néľ ĸ\nä¹Łæĺ¯ éĿŀå¸¸\néĢ ±\nçľĭäºĨ çľĭ\nç¹ģ æ®ĸ\nèĩ³ æŃ¤\né¢Ħ å¤ĩ\nå¾Ī æĺİæĺ¾\næ¼Ķ èīº\nåĿĲ çĿĢ\nä¿Ħ åĨĽ\nåľ¨ è¿ĩåİ»\nä¹ĭ äºĭ\næĬĵ èİ·\nåĿĲ ä¸ĭ\nçĶ± ä¸ŃåĽ½\nä¹Ł å¼Ģå§ĭ\nçŃĶ å¤į\nåŀĥåľ¾ åĪĨç±»\néĴĵ é±¼\nåĲĦ ç¨®\nçĽ¸ éģĩ\nä¸įåģľ çļĦ\næī¹ éĩı\néĩįè¦ģ ä½ľçĶ¨\nå§Ķ å±Ī\nåħŃ å¹´\nä¸ĥ åįģ\nä¹ĭ æĪĺ\né£İéĻ© ç®¡çĲĨ\néŁ³ æ¨Ĥ\nè¡ĮæĶ¿ å¤Ħç½ļ\næľ¬ äºĭ\næĴ° åĨĻ\nèģļ åĲĪ\néĢĤ æĹ¶\næĲ¬ å®¶\nç¢İ çīĩ\nçĽĽ å®´\nç®Ģ æ´ģ\nåı¬ éĽĨ\nç®Ģ åĮĸ\nåĮĹäº¬ æĹ¶éĹ´\nç¬¬ä¸ī å±Ĭ\næĿ¥ åĽŀ\nå¸¸çĶ¨ çļĦ\näº¬ æ´¥\näº¬æ´¥ åĨĢ\næ¢¦ å¹»\nè¯ķ è¡Į\næľº åºĬ\nåĪ° æľĢåĲİ\nåĬ© æīĭ\nåĪĨ å½©\nåĩº åĵģ\nåĪ¹ è½¦\nåĲ¯ åıĳ\nä¾§ éĿ¢\næ¯ı å½ĵ\nçĽ¸åħ³ è§Ħå®ļ\nä¸ĸ äºº\nè´Ń è½¦\nå¿ĥ çĽ®\nå¿ĥçĽ® ä¸Ń\näºĶ éĩĳ\nè¿ĺ è®°å¾Ĺ\nä¾Ŀ çĦ¶æĺ¯\næıĲ æ¡Ī\nçĶµåķĨ å¹³åı°\nåģļ åĪ°äºĨ\næĿľ ç»Ŀ\nå®ī åįĵ\nä¸ĸçķĮ åĲĦåľ°\nåīį éĢĶ\næ´Ĺ åĩĢ\nå¥ĭ åĬĽ\nåŁİå¸Ĥ å»ºè®¾\nå¤ļ åĬŁèĥ½\nä¼ļ éĢłæĪĲ\nåıĳå¸ĥ ä¼ļä¸Ĭ\nç©¶ ç«Łæĺ¯\nåĪĨ çº¢\nçŁ¥ èŃĺ\néĿ¢ æĿ¿\næĹł å£°\næĢ¥ éľĢ\nå¤± çľł\nçĪ¸ å¦Ī\näº Ĥ\nåħ¨ æĻ¯\nç»ıåħ¸ çļĦ\nåī§ ä¸Ń\né¢Ĩå¯¼ ä¸ĭ\nåħļ åĨħ\nåħ¥ ä¾µ\næĭī æĸ¯\nä¸Ģ å¹ķ\nåĬł ä¹ĭ\nèĤ Ĩ\nèĭ± æł¼\nèĭ±æł¼ åħ°\nå·§ åħĭ\nå·§åħĭ åĬĽ\nä¸Ģ å¿ĥ\nèģ Ĥ\nå¾Ģå¾Ģ æĺ¯\nç®¡çĲĨ å±Ĥ\nçĻ» åħ¥\nå»ºç«ĭ èµ·\nå»º åĽ½\nåŃĲ å®«\nåºĶ ä»ĺ\næİ¢ ç©¶\nç¬¬ä¸Ģ ä½į\nä½Ļ å®¶\nçŃī æ´»åĬ¨\næīĢ èĩ´\nè¾ĥ å¿«\næĺ¯ éĿŀ\næıĲ åĲį\näºĮ èĢħ\nåıªåī© ä¸ĭ\nåħ¶ä¸Ń åĮħæĭ¬\nç¼ĸ ç¨ĭ\nçł´ ç¢İ\nä¸Ń ä¸ľ\nå·¥ä½ľ æĬ¥åĳĬ\nçŃ¾ åĲį\néħĴ ä¸ļ\nçŁ¥ æĻĵ\nçĥŃ å¿ĥ\néĿŀ åĩ¡\nèĲ¥ä¸ļ æī§\nèĲ¥ä¸ļæī§ çħ§\näººå¤§ ä»£è¡¨\nä¸Ģä¸ª æĸ°çļĦ\nå¨ģ æµ·\néĤ£ äºº\næ¶¨ ä»·\næ¶Ī çģŃ\néļ¾ å¿ĺ\nç¶ĵ é©Ĺ\nåı£ è¢ĭ\nç³» æķ°\næĸĩ ä¸Ń\nå¥½ è½¬\næĸ° éĽ¶åĶ®\nè®²è¿° äºĨ\nå¼Ģ çĽĺ\nçķĻ ç»Ļ\næħ¢æħ¢ çļĦ\næĤ² ä¼¤\næľ¬ æľŁ\näºĨ å¤ļå°ĳ\nè¿Ļ è®©\nåĲĮ çŃī\næ¸ħ æĺİ\nä¸ª åŁİå¸Ĥ\næºĸ åĤĻ\nåĩłä¹İ æĺ¯\nå¼º åĬĽ\nä¿ ¯\næ°´ ç¨»\nåĽºå®ļ çļĦ\næł¸ åĩĨ\nè¯´ æľį\né¡¯ ç¤º\nè¿Ļ å¥Ĺ\næĻºæħ§ åŁİå¸Ĥ\nå±ĭ é¡¶\nä¸į æĿ¥\nçĶŁ é²ľ\nçŁ¥ æĥħ\næĬķ èº«\nåĳĬè¯ī æĪĳä»¬\nä¸ī åĽĽ\nä¸ĩ ä¸Ģ\nè¾Ĩ è½¦\nä¸º ä¹ĭ\nåĪ° æĹ¶åĢĻ\nè¿Ļ æīįæĺ¯\nåĲį çīĮ\nåºŁ æ°´\nåİ»å¹´ åĲĮæľŁ\nå¹´ éĻĲ\néģĭ åĭķ\nåıĮ çľ¼\nè¦ģ ç´§\nå¯¹ çŃĸ\nåľº é¦Ĩ\nçĻ¾ ç§ĳ\nè¶Ĭ éĩİ\nå¯Į åĲ«\nå¤§å¤ļæķ° äºº\næľĢ å°ĳ\nåı¬ åĶ¤\nåħ¸ èĮĥ\nåĨľ æľº\næŃ£ æĸĩ\nåºĶçĶ¨ äºİ\næ·± èĢķ\nä¿ Ń\nä»Ģä¹Ī ä¸ľè¥¿\nå¥Ĺ é¤Ĳ\nå½ĵ éĢī\nå·¦ æīĭ\nè°ĥ çĲĨ\næĻļ é¤Ĳ\néļ¾ åħ³\nåĩŃ è¯ģ\nçĪ± äºº\næĮĩ è´£\nè´£ ç¼ĸ\nçļĦä¸Ģ æ¬¾\néĵ ²\nåįģ ä¸ª\nèĢ »\næľįåĬ¡ åķĨ\nåľ° çĭ±\nè¿ŀ å¿Ļ\nåĽ° æĥĳ\nçļ ĵ\nä¸į åĲĥ\nçİ°åľ¨ å·²ç»ı\nçĽĺ çĤ¹\nä¸įåģľ åľ°\nç®¡çĲĨ æ¨¡å¼ı\nè¿Ļ æ®µæĹ¶éĹ´\næ¤ °\nç¤¼ åĮħ\næµģ è½¬\næī« çłģ\néĽĨä¸Ń åľ¨\næ±Ĥ åĬ©\nåįĬ ä¸ª\nå¿«éĢŁ å¢ŀéķ¿\nå¾Ģ ä¸ĭ\nè¯Ħ åĪĨ\nå°± æĥ³\nåķĨåĬ¡ éĥ¨\næľī éĹ®é¢ĺ\nèİ· åĪ©\næ¯Ľ çĹħ\næĦŁ åºĶ\nèī¯ æĢ§\nåĪĨ æŃ§\nåĨ ī\næĪĳä»¬ çİ°åľ¨\nè¦ģ åĬłå¼º\nå·§ å¦Ļ\nèŀº æĹĭ\nåĪĩ æį¢\nçĭ Ħ\né¡º çķħ\nå°¤åħ¶ æĺ¯åľ¨\nèĬĿ éº»\néļ¾ è¿ĩ\næĹĹ å¸ľ\nå¤į åį°\nå¤įåį° ä»¶\nå¿ħ éľĢ\nå¯¹å¤ĸ å¼ĢæĶ¾\néļ¾ åıĹ\nåİŁæĿ¥ æĺ¯\nç®Ĺ äºĨ\né«ĺ å±±\nç¦» èģĮ\nçµĦ ç¹\nçµĦç¹ Ķ\nå±ģ èĤ¡\nçĻ¾ å®¶\néģĩ ä¸Ĭ\næĺĶ æĹ¥\nä¸į å®¹\nçĽĳç®¡ éĥ¨éĹ¨\nä¸» æĦı\næµģ åŁŁ\nè·Į å¹ħ\nèĩ³ ä¸Ĭ\nåĪ« è¯´\næĺ¯ æ¯Ķè¾ĥ\nå®ıè§Ĥ ç»ıæµİ\nå¸Ĥåľº ä¸»ä½ĵ\næ±¡æŁĵ çī©\næķĳ æ²»\nä¸° æĶ¶\nåŃĺ æĶ¾\nåĩ Ħ\néĩĳ å±±\næį¢ äºĨ\nä¸ĵ äºº\néĹľ æĸ¼\næĹ¢ è¦ģ\nåĽ½ è¶³\néļ ĭ\nåıį åĩ»\nèµ· èº«\nåħĪ æĺ¯\nå¸ĮæľĽ èĥ½å¤Ł\nåĪ¶ è®¢\nåºĹ éĿ¢\nåĸ Ģ\næķĻ ä½ł\néĻį æ¸©\nåĬĽ æ±Ĥ\nä¸ī çĻ¾\nçī© ä»·\nä¸¢ å¤±\nå¢Ļ ä¸Ĭ\néĥ¨ ä»½\næł· æĿ¿\nä¹ĭ æĦı\nç½ĳ å°ıç¼ĸ\nä¸ĸ ä¸Ĭ\nè°ĥ è¯ķ\næ±¡æŁĵ éĺ²æ²»\nå½± éĻ¢\nå®Įåħ¨ åı¯ä»¥\néĢļ åħ³\nä¹īåĬ¡ æķĻèĤ²\næ²¡æľī åĬŀæ³ķ\nèĢ ¿\nå¦ ³\næĹł æĥħ\nå¾Ĺ çĽĬ\nå¾ĹçĽĬ äºİ\næľŁ çĽ¼\nå¨±ä¹Ĳ åľº\nçĶ² æĸ¹\nä¸Ģ æ±½\nçĹ °\nçĸĳ ä¼¼\næĸ°æµª å¾®åįļ\nå¼º è¡Į\nå½ĵ ä»ĸ\nèĥ º\nçĶ¨æĪ· æıĲä¾Ľ\nåĮº å§Ķ\næĦ¿ æĻ¯\næĬĺ æī£\nå¤± è¸ª\nè¿« åĪĩ\nåŃĹ æ¯į\nåĴ ¯\nèªį èŃĺ\nä»Ģä¹Ī æĦıæĢĿ\nçĽĴ åŃĲ\nå½ķ éŁ³\nå»ºè®¾ å·¥ç¨ĭ\nä¸ļ ä½Ļ\nå®ŀè·µ æ´»åĬ¨\nçľŁ ç©º\nçĤ ĸ\nåľ¨ è·¯ä¸Ĭ\nä¸»è¦ģ åĮħæĭ¬\nè¯¥ æĢİä¹Ī\næĢ» æľī\næĢ§ æĦŁ\næ°ĳ èĪª\nå¼Ģ åºĹ\næ¬º éªĹ\nçªģ åĩ»\nç¼º å¤±\næī§ ä¸ļ\nåľ° éģĵ\nå¹¶ æĹł\næ°ĳ åĬŀ\nç»Ħç»ĩ çĶŁæ´»\næĪĳ å¦Ī\nè¨ĺ èĢħ\nç®¡ åĪ¶\næī¾ ä¸ª\nèĹ »\nçĤİ çĹĩ\näºĴ åĬ©\næµıè§Ī åĻ¨\nçİ©å®¶ æĿ¥è¯´\néĻįä½İ äºĨ\nè£ Ķ\næĮ£ éĴ±\nåķĨ æľº\næĶ¹ è£ħ\næµģ æµª\næĶ¿ æ³ķ\nèĢģ å¤´\nçĶŁäº§ åĴĮ\nç© Ĺ\näº² çĪ±\näº²çĪ± çļĦ\nå±¥ èģĮ\nåŁİ éĩĮ\nç»Ĩ åĪĨ\nåĬ³åĬ¨ åĲĪåĲĮ\nåľ¨ æĹ¥æľ¬\nå¨ģ å°Ķ\nåį« è§Ĩ\néĢ£ çµĲ\nçĿĢ éĩį\næĬĺ ç£¨\nåĽ¾ ä¸º\nçľ ·\nå·¥ åºı\næĵ ģ\næĵģ æľī\nç½ĳç«Ļ åľ°åĽ¾\nçļĦä¸Ģ å¤§\nç»Ħç»ĩ å®ŀæĸ½\næĬĽ å¼ĥ\nåĴĮ æĶ¯æĮģ\næ³ķ åĪĻ\næµª æ½®\nçİ° æľīçļĦ\nåĩł çİĩ\nä¸º å®¢æĪ·\nåįģ ä¸ĩ\nè ¹Ħ\nçªģåĩº éĹ®é¢ĺ\nåıĥ åĬł\néĥ½ä¼ļ æľī\nçĽ ¤\nè°ģ éĥ½\næīĭ åĬ¨\nçĽ´ è¾¾\nçĤ¹ å¤ļ\néĺ¶ å±Ĥ\nä¸į ä½³\néĤ£ æ®µ\næ»¨ æµ·\næĺ¯ åĽ½åĨħ\næĪĳ å¸ĮæľĽ\nåĲĽ åŃĲ\nè§Ĥ éŁ³\nåģļ é¥Ń\næ±½ è»Ĭ\nåħ³ ç¨İ\nçľ¼åīį çļĦ\næ°´ éĿ¢\nèĢ³ æľº\nè¿½ è¸ª\næİ¨ éĢģ\néĴ± åĮħ\næģ¶ å¿ĥ\næµ· åŁŁ\nå· į\nå¼Ģ æĿ¥\nè¡¨ æĢģ\nä»ª è¡¨\nå¹³ åİŁ\nåįģ å¤ļå¹´\nä¹Ł æĹłæ³ķ\nåħ¼ é¡¾\nè¡£ æŁľ\næł½ åŁ¹\næĪ¿ æºĲ\nè®¾ç«ĭ äºĨ\nä¸ĩ åĲį\næķ° é¢Ŀ\nè¦ģ åĿļæĮģ\nåĲīæŀĹ çľģ\nè¯· èģĶç³»\nç»ıåİĨ è¿ĩ\nçļĦ æľ¬è´¨\nåħ¥ éĹ¨\næľ¬ æ¡Ī\nçİĩ è¾¾åĪ°\nåı° éĺ¶\néĴ ŀ\næĪĳ èĥ½\nèİ² èĬ±\néĴ ł\nä¸Ģ äºĭ\nåİŁ æľīçļĦ\næ¯ı åĢĭ\næ¯Ķäºļ è¿ª\næ£ĭçīĮ æ¸¸æĪı\nä¸įä¼ļ æľī\nå½Ĵ æĿ¥\näºĶ çĻ¾\nè¿ĩ é«ĺ\néĽ· è¾¾\nä¸Ģèµ· åİ»\næķĻ å¯¼\nå°± è¯Ĭ\nå°± å¾Ī\nä¸įåĲĮ äºİ\nä¿ º\nå¸ĸ åŃĲ\næĶ¿åįı å§Ķåĳĺ\nçĸ«æĥħ å½±åĵį\nåĪĨ è£Ĥ\nä¸ºä»Ģä¹Ī ä¼ļ\näºĶ æĺŁ\nå°ĳ åĦ¿\næĬ¢ éĻ©\næ¢¦ è§ģ\nè®°èĢħ éĩĩè®¿\nå±± è·¯\næĪĳ ä¸ªäºº\næ²Ļ æ»©\nè¹ Ń\næĶ¹ è®Ĭ\næĸ°åŀĭ åĨł\næĸ°åŀĭåĨł çĬ¶\nåĮ» æĬ¤\nåĮ»æĬ¤ äººåĳĺ\næµ· å°Ķ\nåħ³äºİ æĪĳä»¬\néĻ¤ å¤ĸ\nåº ļ\nå®£ åĳĬ\nä¸ī åįĥ\næ¦ ¨\nç§ĳæĬĢ å¤§åŃ¦\nä¸ĥ åħ«\né¡º åºĶ\nçĪ¸çĪ¸ å¦Īå¦Ī\néĢī åıĸ\nåī§ çĥĪ\nä¹¡æĿĳ æĹħæ¸¸\nç§¯æŀģ æİ¢ç´¢\nè¡¨çİ° ä¸º\nå¾Ī æ¸ħæ¥ļ\nå¤§ åĨĽ\næĿ¥ çĶµ\nå¥Ĺ æĪ¿\nçİ° è¡Į\näº« åıĹåĪ°\nçľĭ çĤ¹\nåĽºå®ļ èµĦäº§\nä»¥ äººä¸º\nä»¥äººä¸º æľ¬\nä¸į å®Į\néĻį éĽ¨\nåģļçļĦ äºĭæĥħ\nå¹¶ äºİ\né¡½ å¼º\nèĢ ¸\nåĺ´ å·´\nçĽ¸åħ³ ä¿¡æģ¯\næĪĳ æ²¡\næĪĺçķ¥ æĢ§\næĢĿ å¿µ\nåĪĺ å¤ĩ\nåĬ© æĶ»\né£İ è²Į\néĿ¢å¯¹ éĿ¢\nç§¯æŀģ å¼Ģå±ķ\nçĸĹ æķĪ\nçľĭ ä¹¦\nç¼º åı£\nåĽ½æ°ĳ ç»ıæµİ\nä½¿çĶ¨ æĿĥ\néģ¥ è¿ľ\nå¡« è¡¥\nç¬¬ä¸ī äºº\nåįĬ å¤ľ\næŃ¦æ±ī å¸Ĥ\næĪĳ åıĳçİ°\nä¼ĺæĥł æĶ¿çŃĸ\né£İ åı£\nå°± ä¸įèĥ½\nä¸º ä¸»è¦ģ\næµģ åĩº\nå´ĩ æĭľ\nå¹¶ ä¸įèĥ½\né«ĺ ä¸ī\nä¸ĸçķĮä¸Ĭ æľĢ\næĥ³ å¿ħ\nåħ¶ æīĢ\nåĢĻ éĢī\nåĢĻéĢī äºº\nä¸į çĪ±\nåī¯ ä½ľçĶ¨\näººæ°ĳ æĹ¥æĬ¥\næĪĳ ä¸įæĺ¯\nå®ŀ çī©\nçĶµ åİĤ\nä¹Ł ç®Ĺæĺ¯\næľī éĹľ\næľī èĥ½åĬĽ\næĮĤ åľ¨\nçľ¼ ä¸ĭ\nçº¦ ç¿°\nå°ı åŃ¦çĶŁ\nèµ· åĪ°äºĨ\nå·¥ å¤«\nåĲĮ å¿ĥ\nåĿ¦ è¨Ģ\nçł Į\nåıĳæĮ¥ äºĨ\nèģĮä¸ļ éģĵå¾·\nè¿ĻäºĽ å¹´\nå¿µ å¤´\nèĢģ é¼ł\nåħ¨ èµĦ\nåħ¨èµĦ åŃĲ\nä¸Ģ åĳ³\nå¤ļ ä¸ĩåħĥ\næł¼ æľĥ\néķ¿ éĢĶ\nå¸¦ èµ°\nèĭ± å¯¸\næĸĩ ä½ĵ\nå¯¹ ä»ĸä»¬\nåĵŃ äºĨ\nå¡« æĬ¥\nçīĪæĿĥ å£°æĺİ\nçĶµ çº¿\nè´Ńçī© ä¸Ńå¿ĥ\né¥± æ»¡\nä½İ å¤´\nå¼º è¿«\nä¿Ŀ æ´ģ\næ¬§ åĨł\nçĽ¸ è¿ŀ\nè®¤ è´Ń\nçģ« æĺŁ\né«ĺ å°Ķ\né«ĺå°Ķ å¤«\nèĳ« èĬ¦\næłĩ æ³¨\nçļĦ çĲĨæĥ³\næł¸ éħ¸\næł¸éħ¸ æ£Ģæµĭ\nåĬ ī\nä¸ĢèĪ¬ æĺ¯\næĢĿ ç´¢\nè½¨ è¿¹\nçĥŃ å¸¦\néĻ £\nåĩĨç¡® æĢ§\næĪ´ çĿĢ\nåľ¨ çĶŁæ´»ä¸Ń\næīĢ èĥ½\næľ¯ åĲİ\nå¸¦ ä½ł\nç¥ ł\næ®ĭ éħ·\nä¹Ł åıªæĺ¯\nçĶ³ è´Ń\nä¸¾åĬŀ äºĨ\næľī æĦıä¹ī\næĹº çĽĽ\nåľ¨ ç¶²\nåľ¨ç¶² è·¯ä¸Ĭ\nå¾Īå¤§ ç¨ĭåº¦\nç®¡ è¾ĸ\nçĸ«æĥħ æľŁéĹ´\nè§¦ æĳ¸\néĺ¶æ®µ æĢ§\nä¼ļ è§īå¾Ĺ\nçļĦ çĶ»éĿ¢\næİ¥åıĹ äºĨ\nè¡¨è¾¾ äºĨ\néĤĵ å°ı\néĤĵå°ı å¹³\nåħļ é£İ\nåħļé£İ å»īæĶ¿\nåķĨ åŃ¦éĻ¢\nåħĳ æį¢\né£Łåĵģ èį¯åĵģ\néĿŀå¸¸ å¥½çļĦ\nçľ ¯\nçº³ ç±³\nåĬ¨ æĳĩ\nåĽŀ éģ¿\nçľĭ èĳĹ\næ¬¾ é¡¹\nåħ« å¹´\nåģļ ä¸ª\næĸĩ æ¡£\néĩĳèŀį ç§ĳæĬĢ\nåħ¶ä¸Ń æľī\näºĨä¸Ģ ç³»åĪĹ\næĹĹèĪ° åºĹ\nç§° èµŀ\néĽ¢ éĸĭ\nåĪ¶ åĨ·\nå®¶ éĹ¨åı£\nåįģ å¤ļ\nä¼´ ä¾£\nçľĭ çĹħ\næĭī çĿĢ\næī Ĵ\nçĸ² æĥ«\nå°ĳæķ° æ°ĳæĹı\nåĽ¾ å½¢\nè½ §\nå¢ŀ éĩı\né¥² åħ»\nçģ« å±±\næ¯ı ä¸ªæľĪ\nä½ľä¸º ä¸ĢåĲį\nè½´ æī¿\næĸĩ ä¹¦\nç¼ ķ\nåħ·ä½ĵ æĥħåĨµ\nçĹĽ çĤ¹\nçĽ´ éĶĢ\nå¡ Ĭ\nä¹Ł æľĥ\nçĥŃ æ½®\nå¹³ æ°ĳ\næ¼ĶåĶ± ä¼ļ\næķĻ çłĶ\néĢĥ éģ¿\nä¸Ģ è´¯\nå°± è¶Ĭ\nå®ŀ å®ŀåľ¨\nå®ŀå®ŀåľ¨ åľ¨\nä¹łè¿ĳå¹³ æĢ»\næº º\nå¿ĥ åºķ\néķ¿ å¾ģ\nåª½ åª½\nç¬¬ä¸ī æ¬¡\nåĩº æ¼Ķ\nçĭĢ æ³ģ\nå°Ķ æĸ¯\nä»£çĲĨ åķĨ\nçĨ ı\nçļĦ å¯¹è±¡\nçĶµ éĩı\nè¡Į åĪĹ\nåĽ½ äºº\nè·ĳ äºĨ\nåįĶ åĬ©\nèĲ¥ è¿Ĳ\nå¸Ī åħĦ\næ¦ ®\næĥ³ åĥı\næĢ§ å¼º\nç§ĳåŃ¦ çłĶç©¶\nå»¶ å®ī\nä¸¥æł¼ èĲ½å®ŀ\né¢Ĩ ä¼ļ\nçĽ¸ å·®\nè·¯ äºº\nçĶ «\næľī ä»·åĢ¼\næľīä»·åĢ¼ çļĦ\nç¾İ åĽ¢\næ°ĳä¸» çĶŁæ´»\næĪĳ æīį\nç¾İåĽ½ äºº\næ°Ķ åĳ³\nåıį å°Ħ\nçļĦ åĨ³å¿ĥ\nå¤§ è±Ĩ\näº¤ ä»£\nè¿Ľ åĩº\nåıį æĬĹ\næĮĩ çļĦæĺ¯\nä»· ä½į\nè¿Ľ é©»\nä¸Ĭ çĻ¾\nä½į åĪĹ\nä¸ŃåĽ½ ä¼ģä¸ļ\nçļĦå¥½ å¤Ħ\nä¸» ç¼ĸ\næ±½ æ²¹\nä½Ĩ æĪĳä»¬\næĢİä¹Ī çľĭ\né»Ħ å±±\nå¤ļ åªĴä½ĵ\nåĲİ åį«\nèİ·å¾Ĺ æĽ´å¤ļ\nåĬ¡ å¿ħ\nä¸º å¥ĳæľº\né¦ĸ é¥°\nä¸ĩ åįļ\nè¶ĬæĿ¥è¶Ĭ å¤§\nä¸ĵé¡¹ è¡ĮåĬ¨\nå¥ĭ è¿Ľ\nä»į çĦ¶æĺ¯\nè´¨ æĦŁ\nå¦Ĥæŀľ ä¸įæĺ¯\nç«Ļ èµ·æĿ¥\nä¹¾ éļĨ\nåı¯æĢķ çļĦ\nå¯Į è´µ\næ¸ħ ç®Ĺ\nåĲĳ ä¸ĭ\nåĢ ļ\nçļĦ çŃĶæ¡Ī\nèĪ¹ ä¸Ĭ\nçļĦçľŁå®ŀ æĢ§\nçŃī åĬŁèĥ½\nåĸľ åī§\nå¨ģ åĬĽ\næĸ° é¢ĸ\næł¸ çĶµ\næĬ¥ éĶĢ\næķħ ä¹¡\nä¼´ éļı\néŀ Ń\nå¦Ĭ å¨ł\nåĪĨ åĮĸ\næľī å¾Īå¤§\næĢİä¹Ī è¯´\næĻĤ ä»£\näº§ åĩº\nä»ĭç»į è¯´\nå¤ĦçĲĨ åĻ¨\nèĨ¨ èĥĢ\nåī¯ å¸Ĥéķ¿\nçļĦ å¦»åŃĲ\næł· åĵģ\nåĲĮæ¯Ķ ä¸ĭéĻį\nåħĥ å·¦åı³\nçĶ¨ èĩªå·±çļĦ\né«ĺ éĽĦ\næĺ¥ æĻļ\nä¹Ł æľīå¾Īå¤ļ\nçľ¼ çĲĥ\næķ£ æŃ¥\nä»ĸä»¬ éĥ½\nç¬¬ä¸Ģ å®¶\nåĬŀ å¥½\nå®ī éĺ²\nä¸Ģ ä¸ĩ\nåľ¨ éĩĮéĿ¢\néŁ³ é¢ĳ\nåı£ åı·\nä¸Ģ è¶Ł\nç¦ı çī¹\né³ ŀ\næĥĬ èī³\næĸ° å¨ĺ\nç»¿èī² åıĳå±ķ\nä¸Ń å¼ı\nä¹Ł åıªæľī\nçİ° èº«\nåı¯ ä¾Ľ\næ¯ı ä¸Ģä¸ªäºº\nç¬¬ä¸ī èĢħ\nåľ° å½¢\néĴ¢ ç»ĵæŀĦ\nçĽĳçĿ£ æ£ĢæŁ¥\nåı« æĪĳ\nèĩ´ æķ¬\næ´Ĺ æīĭ\nä¸ĭ è°ĥ\nåº· çĨĻ\næĪĲäº¤ éĩı\nä¹Ł æĪĲä¸º\nåħī æ»ĳ\nå®Įæķ´ æĢ§\nçģ ¼\nç¶² éłģ\néķ¿ å¯¿\néģ© çĶ¨\nçļĦä¸Ģ é¡¹\nçŀ© çĽ®\næĬĬ èĩªå·±çļĦ\néĵ¶è¡Į åį¡\nå°± å¿ħé¡»\nç¾İ çĻ½\néŀį å±±\næľ¬ é¢Ĩ\nä¸Ģ ç¢Ĺ\næīĵ æ³ķ\næĤ¨ å¥½\nå¯¹ åŃ©åŃĲ\næĬ¥éģĵ ç§°\nä¼ł åĩº\nå¤§ èĩ£\nç¬ ĭ\nçĽ ı\né¾ ļ\nçĽ´ çº¿\næĻº åºĵ\nç§Ł è½¦\né£İ åĳ³\nçľĭ ä¸Ģä¸ĭ\næİ¨ éĶĢ\néĥ¨ éĥ¨éķ¿\nè´¨éĩı åĴĮ\nåĪĬ çĻ»\nå·¥ä¸ļ åĮĸ\nçİĩ ä¸º\néĽ¶ ä»¶\nç¡¬ åĮĸ\nä¸Ĭ åįĥ\nç»ıéªĮ åĢ¼\nå¹³ è¡Į\nå£° éģĵ\næľįåĬ¡ è´¨éĩı\nçĶŁ çĶ¢\næľĢ å®¹æĺĵ\nä¸Ģ æŀļ\nå¹´ æĬ¥\nåħ¬ ç½ĳ\nåħ¬ç½ĳ å®ī\nåħ¬ç½ĳå®ī å¤ĩ\nçļĦ èĥ½éĩı\nå®ŀéĻħ è¡ĮåĬ¨\nè¦ģ ä¸įè¦ģ\næĹ¥æľ¬ äºº\nèĢ¶ ç¨£\nç¼ĸ åī§\næ¶ ©\nåį° å°¼\nä¸Ĭä¸ĭ æ¸¸\nåĩł åı¥\nä¸Ń éĵģ\nç°¡ åĸ®\nèĩª å¸¦\nçĶŁ äºİ\nä¸Ģ åı£æ°Ķ\nåĭ¤ å¥ĭ\néĻį ä»·\nå±ķçİ° äºĨ\nå¸ĥ æĭī\nä¼ļ éĢīæĭ©\nçļĦ ç»ıåħ¸\nå¥½ æľĭåıĭ\nè½¦ éģĵ\næķ´ åĢĭ\nåľ ĵ\néķ¿æľŁ ä»¥æĿ¥\næĬķ å½±\nçļĩ åĨł\nè¿ĩ å¤§\nåĳĬè¯ī ä»ĸ\nä¼ģä¸ļ æıĲä¾Ľ\næĬ½ è±¡\néĢĤ åº¦\nçļĦ å¥³åŃ©\nèµ· ä¼ı\nçļĦ åĬŁæķĪ\nä¸ĵé¡¹ æķ´æ²»\nåı¯ éĢļè¿ĩ\nä¸įåĲĮ ç¨ĭåº¦\nå¼Ĥ è®®\nåĩĢ èµĦäº§\nåĳ Ĺ\nä»Ģä¹Ī åĳ¢\nå·¡ éĢ»\nè¸ı ä¸Ĭ\nä½Ĩ å®ĥ\nç²¾ åº¦\nç®¡ å±Ģ\nç¬¬ä¸Ģ åĲį\nåĨħ åŃĺ\næĳĨ åľ¨\nåī© ä¸ĭ\nä¸»ä½ĵ è´£ä»»\nçĤ¹ åįĬ\nä»¥ èĩ³äºİ\nåħ»èĢģ ä¿ĿéĻ©\næĦŁåıĹ åĪ°äºĨ\nçŁ¥åĲį çļĦ\nå¯Į è±ª\nå¦¥ åĸĦ\nåŃĻ åŃĲ\néĵ Ĥ\nè¯´ èĩªå·±\nè®© æĤ¨\næķ° æİ§\nçļĦçľ¼ åħī\næ³¨ éĶĢ\nçļĦ çģµéŃĤ\nè¿ĺ ä¸įéĶĻ\néĹ® ä»ĸ\nèĩªä¸» çłĶåıĳ\nèĵ ĭ\nç´« èī²\nåĽ½å®¶ å®īåħ¨\nè¾½å®ģ çľģ\nä¹Ł æ¯Ķè¾ĥ\nç¾İ èĤ¡\nä¸įç¡®å®ļ æĢ§\nå¿ĥ å¤´\næĪ ³\nçº§ åĪ«çļĦ\nè®º è¿°\nçļĦ åĽŀçŃĶ\nä¿Ŀè¯ģ éĩĳ\nçŃī è¡Įä¸ļ\nå¹¸ç¦ı æĦŁ\næŃ§ è§Ĩ\næľº ç¥¨\næ´¾ äºº\nèĩ´ åĳ½\nåĺ´ è§Ĵ\næĸ°éĹ» ä¸Ńå¿ĥ\næĶ¾å¼ĥ äºĨ\nå®ľ å±ħ\nåĨĻ ä¸ĭ\néĹ® çŃĶ\nè¿ĻéĩĮ æĺ¯\nå¤ļ åľ°\nåĮºåŁŁ åĨħ\nåīµ æĸ°\nçľĭ ä»ĸ\næī§æ³ķ äººåĳĺ\nåĬ¨ æľº\néŁ³ åĵį\nçļĦ åĳ½è¿Ĳ\né¡¶ éĥ¨\nåĵ Ł\néĥ½ æľĥ\næīĵéĢł æĪĲ\næĦı åĽ¾\nçļ ĸ\nåĢĴ åħ¥\nå·´ èĲ¨\nåĬ© åŃ¦\nå¤į åı¤\nåĲ¯ çĶ¨\nåĽ½éĻħ å¸Ĥåľº\nåĤ¨ èĥ½\né»ĳé¾Ļæ±Ł çľģ\nä¹ĺ è½¦\nè¿ĲåĬ¨ ä¼ļ\nä¿Ŀ åĪ©\nçŁ³ æĿĲ\nçµ ®\nçĤĴ ä½ľ\nçļĦ ä¿¡ä»»\nå°± æĪĲäºĨ\nåı¯ è§Ĥ\nçļĩ ä¸Ĭ\nè¿Ļ åĩłå¤©\nä¸Ģ éĶ®\nåĨ· åĨ»\nä¿Ŀ åį«\næł¸ æ¡ĥ\nåĲĪä½ľ åħ³ç³»\néĢģ åĩº\næĹĹ ä¸ĭçļĦ\nåľ¨ ä¹İ\nä¸º å¹¿å¤§\nåįĪ é¤Ĳ\nä¸ĵ è®¿\næĪĸ å°Ĩ\néĿĴå²Ľ å¸Ĥ\nå¥Ķ è·ĳ\næĹ¥ æĬ¥éģĵ\nå¥ĳ åĲĪ\næĸ° æĺ¥\nä¸į å°ıå¿ĥ\nä¸¤ ä¸ī\næĦıæĢĿ æĺ¯\nåĨ· èĹı\nçļĦ çĹĩçĬ¶\næĢ§ åĳ½\nè¶ħ æłĩ\nå¯Ĩ ç¢¼\nç§ĳæĬĢ èĤ¡ä»½\näºĨä¸Ģ æī¹\nçĿ£ å¯Ł\nåªĴ ä»ĭ\nå°Ħ æīĭ\nä¿® åħ»\nçīĩ åĪ»\néĢĤåĲĪ èĩªå·±\nåıªè¦ģ æĺ¯\nåĲĥ è¿ĩ\néĩĳ éĵ¶\nçĽ´ å±ŀ\nåŃ¦ éĹ®\nåİĭ åĪ¶\nçªĹ å¤ĸ\næĶ¶ åĪ°äºĨ\nåħ¨åĽ½ äººå¤§\nä½Ĩæĺ¯ å¯¹äºİ\nåľ¨ æķ´ä¸ª\nçļĦ èĥĮåĲİ\nåĩıå°ĳ äºĨ\nåıį èħĲ\nåıįèħĲ åĢ¡\nåıįèħĲåĢ¡ å»ī\næĹ ·\nåĪĨ æľŁ\nåľ¨ æ·±åľ³\næīĵ çĿĢ\næī« ä¸Ģ\næī«ä¸Ģ æī«\næĶ¿åºľ éĥ¨éĹ¨\næİ¥ è¿ŀ\nå±ŀäºİ èĩªå·±\nåŃĲ å¼¹\nåĲĮæł· æĺ¯\næĢ» åħ±\nè½¦ ä¼ģ\næ¢ ĵ\nåħ¬ é¡·\nåıĳ å£°\néĴ Ľ\nèµ°åĬ¿ åĽ¾\nä¸» èĲ¥\nåĸ Ķ\næķ°æį® åĪĨæŀĲ\nä¸į è¿ľ\næľī åĲį\næľīåĲį çļĦ\nåģ¿ è¿ĺ\nå¾Ī ä½İ\nè®ĵ äºº\nèĿ ī\né«ĺ è´µ\nå°ĳ è®¸\næ° Ł\nå¹ ¢\näº² æĥħ\nè¿Ļä»¶ äºĭæĥħ\nçĶ¨ é¤Ĳ\nçĽ¸åħ³ æĸ°éĹ»\nå°± åºĶè¯¥\nç»Ī çĤ¹\næĺ¯ å¤ļå°ĳ\nçĻ» åľº\nè¯ķ ç®¡\nè¯ķç®¡ å©´åĦ¿\nåģļ å¤§\nåģļå¤§ åģļå¼º\nçļĦ ä¾ĭåŃĲ\nåħ« ä¸ª\næĺİ æĹ¥\nçĤ ³\nèµ° åİ»\néģ º\nå¢ ©\nä½ĵä¼ļ åĪ°\nåĴ ı\nä¸ĭ è¾¾\nå¤į åıĳ\nè¿½ éĢĲ\næīĵ åĵį\nçļĦ éļ±ç§ģæ¬Ĭ\nåħ·æľī ä¸Ģå®ļ\nè¿Ļä¹Ī å¤ļå¹´\næłĳ æŀĹ\næľĢ éķ¿\nåĲĮ èĥŀ\nåħī æ³½\nåŁŁ åĲį\næĮĩ åĲĳ\nåıĹå®³ èĢħ\næłĳ èĦĤ\næľīå¤ļ å¤§\nå¤§ éĿ¢ç§¯\næĹł ç¼Ŀ\næĶ¹ æŃ£\næĽ´å¤ļ çļĦæĺ¯\næľŁ æľ«\næŃ ¼\nä¹ī ä¹Į\néĤ£ ä½ł\nçļĦ ç¬¬ä¸Ģä¸ª\nèĮ µ\nå° §\nèį «\nä¸įä»ħ åı¯ä»¥\næ¶Į çİ°\næĢ» éĿ¢ç§¯\næĸ°éĹ» åıĳå¸ĥ\næ°ĳ çĶ¨\nå°± è¯»\næīĵ è´¥\nå¤ĸ è¯Ń\næĪĳä»¬ ä¸Ģèµ·\né¢Ħ å®ļ\nçĥ¹ é¥ª\næľĢ ä¸»è¦ģ\næľĢä¸»è¦ģ çļĦ\nçīĮ çħ§\nåĽł åħ¶\nä½İ ä¸ĭ\nä¼ļ åĲĮ\nè§ģ è§£\néĹ´ éļĶ\næķĻ ç¨ĭ\nå° ī\nå¸Ĥ ä¸Ńå¿ĥ\nåħ³éĶ® æĺ¯\næµ· åįĹçľģ\nçī¹åĪ« æĺ¯åľ¨\nä¸ŃåĽ½ å¤§éĻĨ\nåħħè¶³ çļĦ\næĹ¢ èĥ½\nåĤ³ çµ±\nçĳľ ä¼½\nåħ¥ åĽ´\næħ¢æħ¢ åľ°\næĬ¥ éħ¬\næī¹ å¤į\nå·¥ä¸ļ åĽŃåĮº\nä¸İ åıĳå±ķ\nèĥ¸ éĥ¨\nåľ¨ ç½ĳç»ľ\nåľ¨ç½ĳç»ľ ä¸Ĭ\näº¤ è°Ī\næĽ´ æĶ¹\nåįłæľī çİĩ\nä¸Ŀç»¸ ä¹ĭè·¯\nè¡ Ľ\nçłĶ åĪ¤\nåĪ ª\nåĪª éĻ¤\nè¿Ļ åıª\nçļĦ æ°Ķæģ¯\nåĬł å·ŀ\néĴ §\nçĲĨäºĭ éķ¿\nä¸ĸ å®¶\næµģè¡Į çļĦ\nå¾Ī æľīåı¯èĥ½\nä»¬ éĥ½\nç»ıèĲ¥ æ¨¡å¼ı\nè¡Įä¸ļ ä¸Ń\néĢļçŁ¥ ä¹¦\nåĳ½ é¢ĺ\næľ¬ ç¶²ç«Ļ\næ²Ļ çī¹\nåıĳ åħī\né«ĺ ä»·\nå·² çĦ¶\nåıĮ åįģä¸Ģ\nä¸Ĭ è¯ī\nç¿ħ èĨĢ\nè¿Ļä¸Ģ å¹´\nå¤§ä¼ļ ä¸Ĭ\néĩ ī\nå®Įåħ¨ æĺ¯\nå¾Ĺ å¤ª\nä¸ĢèĪ¬ äºº\nè¿ĺ ç®Ĺ\næĬĺ åıł\næĬķ æľº\nçĤ¹ çĩĥ\nçİ°éĩĳ æµģ\nåħĶ åŃĲ\nç½ĳ æł¼\næİ¥ è¿ĩ\nä¾Ľ è´§\néĺ´ å½±\nåİŁ åħĪ\næį £\nå·¦ ä¾§\nåħĭ æĭī\næīĵ åį¡\nç§ĳ æ¯Ķ\næ±ĩ éĽĨ\nåľ°çĲĨ ä½įç½®\nè¯Ħ å§Ķ\nç»ĵåĲĪ èµ·æĿ¥\nè¿Ľåħ¥ åĪ°\nåı¯ è¡Į\nåı¯è¡Į æĢ§\nè®© å®ĥ\nåĪ¶åº¦ æĶ¹éĿ©\nçĶĺèĤĥ çľģ\nåĵ Ĺ\nåģı åģı\nè¡£ çī©\nç¥Ŀ è´º\næºĲ èĩª\nå¹¶ä¸į ä»£è¡¨\nåĽ½ åº¦\nå¥½ åĿı\næĿ ĸ\næĿŃ å·ŀå¸Ĥ\næ¹¿ åº¦\né² ¸\nåįļ å½©\næ³° å±±\næĿĳ èĲ½\næĸ° èģŀ\nèĤ ĭ\nåı¤èĢģ çļĦ\nçļĦ ç§ĺå¯Ĩ\nä¸Ģä¸ª éĹ®é¢ĺ\néģı åĪ¶\nåįĥ äº¿\nè¿ĩ ç¡¬\nå°Ħ åĩ»\nèĩªçĦ¶ æĺ¯\näº§ åĮº\nçĤ¹ çĤ¹å¤´\nåı¯ä»¥ å¸®åĬ©\nè¯´ å®ŀ\nè¯´å®ŀ è¯Ŀ\næĪĳ åıªæĺ¯\nä¹ĭ ä½Ļ\nåĲĮæĹ¶ ä¹Łæĺ¯\nä¸ŃåĽ½ éĺŁ\nå»ºæĪĲ åĲİ\nä¹Ĳ è§Ĩ\nåĳ¨ å²ģ\nèį¯ åºĹ\néĩĳ åįİ\nä¸¥éĩį å½±åĵį\nè´¨ åľ°\næĹħ éģĬ\nåħµ åĻ¨\næķĻèĤ² æķĻåŃ¦\nç¦» åİ»\nåĲĦå¼ı åĲĦæł·\nä»ĭ ç´\nä»ĭç´ ¹\nå¼Ģ å¤´\nå°Ĩ èĩªå·±çļĦ\nåĲ¬ åĬĽ\nä¿¡æģ¯ ç³»ç»Ł\nä»İ æł¹æľ¬\nä»İæł¹æľ¬ ä¸Ĭ\næİĮ å£°\næ¬¢ åĸľ\nå±ķ åĮº\nåķ ¸\nå¤ªå¤ļ äºĨ\néĹ² ç½®\nèĥ¡ èĲĿåįľ\nå§Ķ å®£ä¼ł\nå§Ķå®£ä¼ł éĥ¨\nåįĹ éĺ³\nå·ŀ åĮº\nä¸İ æĹ¶\nä¸İæĹ¶ ä¿±\nä¸İæĹ¶ä¿± è¿Ľ\nå«Įçĸĳ äºº\nèī¯ å¿ĥ\nå¤´ é¡¶\nè´¢ æĬ¥\nä½Ľ æ³ķ\nå¾ µ\nåİŁ ä»¶\nåĭ ŀ\nçĶ· ç¯®\nå¤ĸåĽ½ äºº\nè¿Ŀ çºª\næī¾ äºĨ\næįķ æįī\nçĽ¸ è¯Ĩ\næĲľ éĽĨ\nçļĦ ä¼Łå¤§\nä¸ī ç»´\nå°±è¡Į äºĨ\nçĭĲ æľĪ\nçĭĲæľĪ å±±\nå¸ĮæľĽ éĢļè¿ĩ\nèĢĮ å¯¹äºİ\néĿ¢ å°į\nåĨĽ åĽ¢\nè¡Ĺ åĮº\næĤ¬ æĮĤ\nä¾¿ ç§ĺ\næľīä¸Ģ çĤ¹\nä¼ļè®® ä¸Ĭ\nä¸ĭ æīĭ\nå»£ åĳĬ\näºĶ è¡Į\nçŃī åĢĻ\nç´§ç´§ åĽ´ç»ķ\næĭ¿ äºĨ\næ¡Į éĿ¢\nç¥ŀ æĥħ\néĽĦ åİļ\nçŀ ³\næ¥¼ ä¸ĭ\nå½ ª\näºĭ åıĳ\nåĨį è§ģ\né¤ ĺ\né¢Ħ åĶ®\nåİ» çľĭçľĭ\næĪĳä»¬ åºĶè¯¥\nä¸ī å®¶\næµ Ĭ\nä¹Ĳ éĺŁ\nçľĭ ä¸įè§ģ\nèĦĳ åŃĲ\næĮģ æľīçļĦ\nçĻ½ èıľ\néĹª çĥģ\nåĸĿ æ°´\næİ§åĪ¶ ç³»ç»Ł\nä¸ĵ åĮº\næľĿ å»·\næĪĳ å¿ĥéĩĮ\nå±ķ åİħ\nèľĺ èĽĽ\nåĨ» ç»ĵ\nç² ª\nåº Ĳ\nåĲĳ ç¤¾ä¼ļ\nåĨ³çŃĸ éĥ¨ç½²\nçŁŃ æľŁåĨħ\næĸ° ä¸ļæĢģ\næľ Ķ\næĹ¶ æĬ¥\nä½¿ ä¹ĭ\nåĽł åŃĲ\nåıĤä¸İ èĢħ\nçļĦ å¹´è½»äºº\næīĭ è¡¨\nå°ģ éĶģ\nä¸ºä»Ģä¹Ī ä¸į\nåĲ¸ çĥŁ\næ¯Ĵ ç´ł\nåĪĳ æ³ķ\nçŁ« æŃ£\nèº« æĹģ\nåİŁ è°ħ\nçĽĳ æĬ¤\næŃ¤ å¤Ħ\néļ¨ æĻĤ\næŀľ å®ŀ\nåĮ»çĸĹ æľįåĬ¡\nä¸į åĲĪçĲĨ\næĲŀ å¥½\nçļĦ èĦļæŃ¥\nå¤ĸ å¥Ĺ\nç¶ĵ éģİ\næĶ¾ ç¼ĵ\nåģľ çķĻ\næĺŁ çĲĥ\nçļĦä¸Ģ éĿ¢\nåĩł ä½ķ\nè½® åĽŀ\næ¯Ľ å·¾\nä¿® çĲĨ\nä¸įçŁ¥ ä¸į\nä¸įçŁ¥ä¸į è§ī\næķ´ ä¸ªäºº\næ¯ģ çģŃ\nåı° å·ŀ\nä½¿çĶ¨ å¯¿åĳ½\né»ĳ çĻ½\næĳ¸ ç´¢\né¼ł æłĩ\néĿ© æĸ°\néº µ\nä¸ĵéĹ¨ ä¸º\nå¾Īå¤ļ æľĭåıĭ\nå·¥ä½ľ ç»Ħ\nåĲĪ å½±\nçĤº ä»Ģéº¼\næŀģ åº¦\nçļĦ è¿ĽæŃ¥\nå½ĵ ä¹ĭ\nå½ĵä¹ĭ æĹł\nå½ĵä¹ĭæĹł æĦ§\nè´´ è¿ĳ\nå°º åº¦\nåľ¨ çİ°åľº\néĻį ä¸´\nåħ»èĢģ éĩĳ\nç£ ķ\nåı¯ä»¥ ä½¿\nç®¡çĲĨ æ°´å¹³\næľ¬æĬ¥ è®°èĢħ\næ³ķ ä»¤\nåį¡ è½¦\nä¸ľ æµ·\nå¤ļ éĩį\nåħ¶ éĹ´\nç´ Ļ\néĩįå¤§ é¡¹çĽ®\næ±Ĺ æ°´\nç»Ħ å§Ķä¼ļ\nä¿¡æģ¯ åħ¬å¼Ģ\nä¸įè®º æĺ¯\nä¸Ģ åĲ¬\nèĴ¸ æ±½\næıŃ ç§ĺ\nè¶ħ éģİ\nè§¦ åıĳ\nå© ¦\nåħ³èģĶ äº¤æĺĵ\nå°± ç»Ļå¤§å®¶\nå¥½ ä¹ħ\nåĢŁ è´·\næ¸¸æĪı è§Ĵèī²\nå¼ĢåĲ¯ äºĨ\næİ ł\nåħļçļĦ åįģä¹Ŀ\nä¸ĭ éĽ¨\nçŁŃ æĹ¶éĹ´åĨħ\nå¯ ħ\nå¯¼ åħ¥\nå·¥ä½ľ ç»ıéªĮ\nä¹Ł åıªèĥ½\néĽ· éľĨ\nè·Ł è¿Ľ\nåį¡ éĢļ\né¢ĩ æľī\næľº ä½ĵ\næĪĺå£« èģĮä¸ļ\nå¥³ ä¸»\nä½ĵåĪ¶ æľºåĪ¶\nè¶³ åįı\nèĪĴéĢĤ çļĦ\nåĢŁ åı£\næī¹ åĪ¤\næķ° åĢ¼\nè« ¾\néĺ¿æĭī ä¼¯\nåĺ İ\næħ ¶\nè¾¾ äºº\nå¼Ģ æ°´\nå¤§ éĽ¨\næ¸© å®¤\nä½İ è¿·\nä»į æĹ§\néªĹ åŃĲ\näº² å±ŀ\nçĲĨ æĻº\næľ¬ åŁºéĩĳ\nå¨ ħ\nåĨĻåŃĹ æ¥¼\nå¢Ļ å£ģ\nå® µ\nèĻ½ çĦ¶æĺ¯\né¡º çĿĢ\nåħ« åį¦\nåķĨ çĶ¨\nä¸į å¤±\nè¿· èĮ«\né¡º ä¾¿\næļĳ æľŁ\næ¬º è´Ł\né¢ĳ é¢ĳ\nè¯¥ æł¡\næĸĻ çĲĨ\næ·± æĥħ\nåīį éĶĭ\nä¿Ŀ èŃī\nèģĮä¸ļ çĶŁæ¶¯\nåħ¬ å¼Ģåıĳ\nåħ¬å¼Ģåıĳ è¡Į\nåħ¥ æĪ·\néł ĵ\nåĢ¾ åĲ¬\néŃ ģ\næĦī æĤ¦\nåĽŀ åĲĪ\nåħ¨åĬĽ ä»¥\nåħ¨åĬĽä»¥ èµ´\nåĥ¹ åĢ¼\nèĥ½åĬĽ å¼º\nç»ı å¼Ģ\nç»ıå¼Ģ åĮº\nè¿ľ æĸ¹\nçļĦ éģĵçĲĨ\nçĽ´ åįĩ\nçĽ´åįĩ æľº\nä¸ºä¸»é¢ĺ çļĦ\nç»Ļ æĤ¨\nè¿ĺ æĥ³\næ¯Ķ æĪĳ\nåĨľ çī§\næµ· åºķ\nçŃ¾è®¢ äºĨ\nå¯¹äºİ æĪĳä»¬\næĹ¶ è®¸\néĶ® çĽĺ\nå®ŀéĻħ æİ§åĪ¶\nçļĦ æ¨¡æł·\nåıįæĺł äºĨ\nä»£ åĬŀ\nåĮ» çĶ¨\néĽĨ ç»ĵ\nåıĳå±ķ åīįæĻ¯\næĮĩ çĿĢ\nåįİ åĮĹ\nè¿Ļ åĩłä¸ª\nåĲį æ°Ķ\nåĤį æĻļ\nèĩª åıĳ\næ³¢ åħ°\nå¤§åĬĽ æİ¨è¿Ľ\nèĩª ç§°\nèįĨ å·ŀ\næĲį å®³\näºĨä¸Ģ åı¥\næľĢåĪĿ çļĦ\néĩĳèŀį åį±æľº\næĢĢ å¿µ\nè¡Į åĭķ\nå¥³ æİĴ\nä¸į è§£\nä¼ł éĶĢ\nè½¬è½½ è¯·\né¥° åĵģ\nåıª ä¸º\nä¸İ ä¼Ĺ\nä¸İä¼Ĺ ä¸įåĲĮ\nèĥ½ èĢĹ\nèı© æıĲ\nè¿ĳ ä¸¤å¹´\nè¿Ķ ä¹¡\né©¬ä¸Ĭ å°±\näºĮ çŃīå¥ĸ\næ°´ ç®¡\næ³ķ åŃ¦\nçģŃ çģ«\nå¤§ å§Ĳ\nåĳ¨ è½¬\næľī æľŁ\næľīæľŁ å¾Ĵ\næľīæľŁå¾Ĵ åĪĳ\nå°į æĸ¹\nç¥ŀ èī²\næ²¹ èĦĤ\nä¸ī çĤ¹\nä¸į åĪ©äºİ\näºĭä¸ļ éĥ¨\nå°± è·Ł\nå¼Ģ æĶ¯\nå°ı å¥³åŃ©\nåħ±åĲĮ åĬªåĬĽ\nçĶļèĩ³ è¿ĺ\nè¿Ļ åĲį\nè¿Ļ ç¬Ķ\nçİ¯ åį«\næľī ç§į\nè§Ĩ åĬĽ\nçĨŁ çŁ¥\nåħ¬ç§¯ éĩĳ\næ¶Īéĺ² å®īåħ¨\né¢ĩ ä¸º\nå¤§ èħ¿\néĿ ¶\nçī¹ æķĪ\næľįåĬ¡ åĮº\nå¼Ģ åĩº\næ·±åº¦ èŀįåĲĪ\næĹł å¿§\næŁ¥ éĺħ\nç»Ī ç»ĵ\nä¿Ŀ ç¨İ\nè¨İ è«ĸ\nå½ĵ åģļ\nè·³ èĪŀ\nå¯ §\nå¥³ çİĭ\nè®°èĢħ åľ¨\nåħ¨ äº§ä¸ļéĵ¾\nè´¯ éĢļ\nåħ´ ä¸ļ\néĻį åĪ°\nå°ģ éĿ¢\nåħ¨éĿ¢ æİ¨è¿Ľ\nå¥¶ èĮ¶\néĢī åĿĢ\näºĨä¸Ģ åľº\nåĲĮ ä¼´\nè®® è®º\næĲ ĵ\nè¯¸ èĳĽ\nè¯¸èĳĽ äº®\nå¹² åĺĽ\næµģ æĦŁ\nä¸ĵä¸ļ çŁ¥è¯Ĩ\nçĶµ ç«Ļ\nåĩı å¼±\nåĩº åħ¥\nåĲĦ çľģ\néĿŀå¸¸ é«ĺ\nåľ° æ¯¯\nåıĳ æĸĩ\nçĦ ī\nçĥ§ çĥ¤\nå£ģ çº¸\næģ¶ åĮĸ\nèĬ ¸\nèĥĸ åŃĲ\nçĩ Ĵ\nçľģ éĴ±\nçĻ¾ å¼º\nçĲĨå·¥ å¤§åŃ¦\néĴ¢ æĿĲ\nåĽ½æľī èµĦäº§\næĪĺ æľº\næ³Ħ éľ²\nåĲİéĿ¢ çļĦ\næ°´ èµĦæºĲ\næ¢ħ èĬ±\nåĨĻ çĿĢ\nä¹ĭ å£°\næĹł åı¯\næĺİ æľĿ\nç«ĭæĸ¹ ç±³\nç· £\næĶ¾ è¿ĩ\nç¦ı çĶ°\nå¾Ĺ ä½ı\nåıĹ ä¼Ĺ\nä¸Ń çº§\nçĹħ åıĺ\nä¸Ģ çŀ¬éĹ´\næĿĥ éĩį\näººæĢ§ åĮĸ\nåĮ»çĸĹ åį«çĶŁ\nä¸įåĪ° ä½į\næĻºèĥ½ å®¶å±ħ\né¥® çĶ¨\næ¼Ķ åıĺ\né«ĺ ç´łè´¨\nä¹Ļ æĸ¹\nåģľ çķĻåľ¨\nèİ· æī¹\nç©¿ æ¢Ń\nå®¢ åľº\næĮ½ åĽŀ\näº¬ åŁİ\nçĶŁåĳ½ åĬĽ\nå¯¦ éļĽ\nçĩ Ī\nåĨį çİ°\nçİ°å®ŀ ä¸Ń\næľī ä¿¡å¿ĥ\nçĸı éĢļ\nåĺ´ åĶĩ\néĽ· éĶĭ\nèıľ åįķ\néħ ¯\nè¶ħ é«ĺ\nå¾Ī é«ĺåħ´\nçĶŁ æ®ĸ\néĢł ä»·\nè¯¯ åĮº\næĨ ĭ\nå¥½ æ¶Īæģ¯\nå´ Ń\nä»¥ èĩ´\nå¼Ģ çİ©ç¬ĳ\nçĽĳ è§Ĩ\nå·¡ å¯Ł\nå¾· å·ŀ\næĹ© æĹ©\néĹª çĶµ\næĪª åĽ¾\nåı¯ä»¥ æł¹æį®\næīĭ èīº\næİ¥ è½¨\nç§į æĹı\næĢĢ éĩĮ\nåİ» åĮ»éĻ¢\nä¸Ģ äºĮ\nå¼Ģ éĺĶ\nåĩı éĢŁ\nä½Ĩ ä»İ\néĢĻ ä¸Ģ\nåĩı åħį\nä¸»é¢ĺ æķĻèĤ²\nå¼Ģå·¥ å»ºè®¾\nè¹ ¦\næľĪ é¥¼\nä¸ĭ æ²ī\nå°Ĭ ä¸¥\néĻ ĩ\nå®ŀ æľ¨\nå»ł åķĨ\nå£° ç§°\nèĢĥ åľº\nå¸ĥ é²ģ\nèĩª æĿ¥\nèĩªæĿ¥ æ°´\néĴ ¾\nå¹´ ä»¥ä¸Ĭ\nå¤§ åıĶ\nä»ĸ å·²ç»ı\nåħ¨ æĿĳ\nèģĶç³» çĶµè¯Ŀ\nä¸º å¯¼åĲĳ\nåĪ¤ å¤Ħ\nå¯¹ éĺµ\nçĽ® æ¨Ļ\nåĲį é¢Ŀ\nå®¢ æ°Ķ\næ¨ª åĲĳ\nçŃī åĨħå®¹\nåĩł çĤ¹\nè°Ī è®º\nä¸į ä¹ı\nå±ķ çİ°åĩº\nè¾ĥ éķ¿\néĢĨ è½¬\nå°ı æĻĤ\næĺ¯ å¤ļä¹Ī\næľ¬ æľĪ\nè¿ĳ è§Ĩ\næĪĲç«ĭ ä»¥æĿ¥\nä»£è¡¨ çĿĢ\næĬ¥ å¤į\næĪı æĽ²\nè¨Ń åĤĻ\nåħ¥ èĤ¡\nå¾ģ æľį\né«ĺ åĩº\nèĪŀåı° ä¸Ĭ\nå¿ĥ åĬ¨\nä¸¤ çĤ¹\nçĽ¸ çķ¶\nèĻ Ľ\nä¸» é¡µ\nåĩł å®¶\næĹł ä¸į\nåįı å®ļ\næĸ Ĳ\nå¯ĵ æĦı\nåħ¨ çº¿\næįķ é±¼\nåı¯ä»¥ ä»İ\næľī è¿Ļæł·çļĦ\næģ¶ éŃĶ\nåĮħ åŃĲ\næģ ¤\nå¼Ģå¥ĸ ç»ĵæŀľ\nä¸į æŃ»\nèĹ į\nå¼¯ æĽ²\næµ· å³¡\néĶĢ æ¯ģ\nçļĦ çĭ¬çī¹\nç¤º æĦı\nä¸įèĥ½ åĨį\nèĥ½ æĬĬ\néĺ² çº¿\nä¸įå°ĳ äºİ\næ± Ģ\nçļĦ éĤ£ä¸Ģ\nçľŁ æĥħ\nåŀ ®\nè¢« æīĵ\nåĽ½ å®ī\nç¾İ å¦Ļ\nè¿Ļ åĩł\nåĩº éģĵ\næľįåĬ¡ äºİ\næĪĲæŀľ è½¬åĮĸ\næīį åįİ\nå¤© é¹ħ\nåĩł ä¸ªäºº\nåĢĺ èĭ¥\nèĢ½ è¯¯\næĬĹ æĪĺ\nè¡Į éĬ·\næĿ¥ è¢Ń\nåĢŁ éĮ¢\nèįī èİĵ\nä¸¥æł¼ æī§è¡Į\nä¸¾è¡Į äºĨ\nå¤ĸ ç±į\nå·² è¾¾\næĿĳ åħļæĶ¯éĥ¨\nè¡ Ŀ\néĻį èĩ³\næµ· éĩı\né¤Ĳ é¦Ĩ\næĢ¥ å¿Ļ\næ·± è¿ľ\nå¾Ģ è¿Ķ\nç¨İåĬ¡ å±Ģ\nå¹¿æ³Ľ åºĶçĶ¨\nè®® åĳĺ\næĹł æķĮ\nçľ¼ åħī\nçĥŃè¡Ģ ä¼łå¥ĩ\næŃ Ĳ\näºĨ äºĽ\nè¿Ŀ èĥĮ\nè¿Ļ æĺ¯ä¸Ģç§į\nä¸į ç¨³å®ļ\nå¤§å®¶ åĪĨäº«\nè¡¨ çı¾\nåīį åįģ\nè·¯ è¿ĩ\næĴ ©\nåĲĮ æĥħ\nä¹ł ä¿Ĺ\nåıĳ è´¢\nåºĶ æľīçļĦ\næĿİ æŁĲ\nèĤ Ľ\né©¬ åħĭ\néĢļ åĳĬ\nå·¨ äºº\nä¸Ģ åĽ¢\néĢĻ æ¬¡\nä¸į äºĨè§£\næĸ½ è¡Į\nèĳ¡èĲĦ çīĻ\nåıĺå¾Ĺ æĽ´åĬł\næı £\nåĪĽæĸ° èĥ½åĬĽ\nçķħ éĶĢ\nè¡¨ æī¬\næ¯Ķ åĪ©\næ¯ĶåĪ© æĹ¶\nåĮ»çĸĹ ä¿ĿéĻ©\næĵį çºµ\nä¼¤ äº¡\næµİ å®ģ\nåıĺ äºĨ\næľ¬æ¬¡ æ´»åĬ¨\nåľŁ è±ª\næĥ³ åĬŀæ³ķ\næĺ ķ\nå½ĵ æĻļ\nåĩº å±Ģ\nçĥŃ è®®\nè°Ī è°Ī\næĻĭ åįĩ\nåĬ¿ å¿ħ\nçĻ» å±±\néĤ£ åĦ¿\nåĲĥ åĪ°\nä¹ĭ åŁİ\nå¿« æĿ¥\næ¹Ľ æ±Ł\nç¬¬ä¸ī ä¸ª\nåħ¨éĿ¢ æıĲåįĩ\nå¥ĸ åŃ¦\nå¥ĸåŃ¦ éĩĳ\næĬķåħ¥ ä½¿çĶ¨\né½Ĳ é²ģ\nåı¯ä»¥ æĬĬ\nåĴĮ ä»ĸçļĦ\nè´ŃæĪ¿ èĢħ\næŃ£å¼ı åĲ¯åĬ¨\nåįİ æ¶¦\nä¸įæĸŃ å®ĮåĸĦ\néĴ¢ æĿ¿\nç´¯ ç§¯\næ»¡ èĦ¸\nåĽĽ æĸ¹\nè´¢ çī©\nä»ĸä»¬ ä¼ļ\nå¤ı æĹ¥\néĤ£ ä¸ªäºº\néĿł çĿĢ\nçĤ¹ äºĨ\nçĤ¹äºĨ çĤ¹å¤´\næ© ĭ\nåıĪ å¥½\nåıĪå¥½ åıĪ\nåıĪå¥½åıĪ å¿«\néĺµ éĺµ\nå°ģ å»º\næľ¬ çĶ°\nçī©ä¸ļ æľįåĬ¡\nèĩªè´¸ åĮº\nåĲ ı\nä¾¿åĪ© åºĹ\nåĽ½å®¶ æłĩåĩĨ\néĿ¢ ç²ī\nèī° è¾Ľ\næĶ» åħ³\næīĵ åĮħ\nè½¦ éĺŁ\näºº éĢī\nåı¯ ä¸įæĺ¯\näºĮ åįģå¹´\nåĲį å¸Ī\næµ¦ ä¸ľ\nåħ¬ è¯ģ\nè¿Ĳ éĢģ\næĺ¯ æľĢå¥½çļĦ\næŁĶ åĴĮ\nçİĭ æŁĲ\nçĹħ æĪ¿\nåĨ¶ éĩĳ\nä¸Ģä»¶ äºĭæĥħ\nåį ¤\nåı¯ æİ§\nçī Ł\næĭ Ĥ\nå·² äºİ\näºº éĢł\nçĶŁçī© åĮ»èį¯\nä½ĵ çİ°åĩº\nèĤ² åĦ¿\nèĢģ å®ŀ\nåľĸ çīĩ\nè« ¸\nç´¯ äºĨ\næĦŁåħ´è¶£ çļĦ\nåĽ¾çīĩ æĿ¥æºĲ\nä¹Ł æĺ¯ä¸Ģç§į\næ¾İæ¹ĥ æĸ°éĹ»\næĹ¶ è¡¨ç¤º\nåħī è¾ī\næĬ¥ åºŁ\nå²ģ æĹ¶\néħ ®\næ£Ģ ä¿®\nåıĺ éĢŁ\nåıĺéĢŁ ç®±\nåľ¨ èģĮ\néı ¡\næį Ĥ\nçĿ£ åĬŀ\næ°¸ ä¸į\nåģļ ä¸ĢäºĽ\nåİĨ æĹ¶\nå·¥ç¨ĭ æľºæ¢°\næģ° å½ĵ\nå°± åľ¨äºİ\nç§° åĳ¼\néĢļå¸¸ æĺ¯\næł· å¼ı\nåĳ¨ ä¸Ģ\nèĭ± éķĳ\nåĿĩ çº¿\nä¼ł éĹ»\nçĶ¨æĪ· ä½ĵéªĮ\nèµŀ åĲĮ\néª¨ æĬĺ\nä¸ºä¸» ä½ĵ\næ±Ł å±±\næ¸ħ æľĿ\næĶĢ åįĩ\nä¸į çĽ¸ä¿¡\néĿ ´\næŃ¦ åĬŁ\nåĭ¤ åĬ³\næĿ¥ æī¾\nå°Ĩ æĮģç»Ń\nä¸« å¤´\næ¨Ļ æºĸ\nè£ ´\næ·±æ·± çļĦ\nåŃķ èĤ²\nè§ĦåĪĴ å»ºè®¾\næ¸ħ çĪ½\nç²¾åĩĨ æī¶è´«\næīĵçł´ äºĨ\nè¿Ļä¸Ģ å¤©\nå·¥ä½ľ æĢ»ç»ĵ\næĹħ ç¨ĭ\nä¸ľ èĲ¥\næĶ¾ å°Ħ\næľī åĩłä¸ª\néĿŀ çī©è´¨\nåĲĥ å¾Ĺ\nåĹ ¨\nä¼ļ åıĳçĶŁ\nç¯® æĿ¿\nå¼Ģ å°ģ\néº» å°Ĩ\nèıı æ³½\nä¸į åĲĪ\nç³»åĪĹ äº§åĵģ\nèŃ¬ å¦Ĥ\nç¾İ èªī\nèĩªå·± åĸľæ¬¢\näº¤æĺĵ ä¸Ńå¿ĥ\nåĲĪ åĶ±\nä½¿ æĪĳ\nåĥı ç´ł\nå¸¦ éĺŁ\nä½Ĩ å¯¹äºİ\næĬĬ è¿Ļä¸ª\nèĤĿ èĦı\nåįķçº¯ çļĦ\næĶ»åĿļ æĪĺ\nçĽĽ ä¼ļ\nåĳµ æĬ¤\næª Ģ\nèµ¶ ä¸Ĭ\næ¥ Ĭ\nä¹ħ äºĨ\nç¡ Ŀ\nçŃĶ é¢ĺ\nä¿ĿæĮģ çĿĢ\nè§ģ è¯Ĩ\nçĤ¹ åĦ¿\nåįĬ ä¸ªæľĪ\næ» ĩ\næµ¸ æ³¡\nä¼ł éĢģ\nåľ¨ å¸Ĥåľºä¸Ĭ\nä¹ĭ ä¹¡\nçī¹ éķ¿\néĽ ŀ\nèª ł\nèº« å¤Ħ\næŁł æª¬\nèº« ç©¿\nçľģ åħ¬å®ī\nçľģåħ¬å®ī åİħ\nåıĻ åĪ©äºļ\nåĩł åĪĨéĴŁ\näºº åĢĳ\nåľ° æ®µ\nèĩª åŃ¦\nä¹Ł è¶ĬæĿ¥è¶Ĭ\nèģĮ æĿĥ\næĸ §\nèĩ »\nå½Ĵ çº³\né©¾ é©Ń\néĥ¨åĪĨ åľ°åĮº\næ²¡æľī æĥ³åĪ°\næĴ ĩ\nä¹Į é²ģ\nä¹Įé²ģ æľ¨\nä¹Įé²ģæľ¨ é½Ĳ\nèĤ² äºº\nçļĦ æŃ¥ä¼Ĳ\nå»¶ æľŁ\næ²¹ æ°Ķ\nåģļ å®Į\nåľ£ åľ°\nä¸° åİļ\nå®½ å¸¦\nåı¯éĿł çļĦ\nåºŃ éĻ¢\nåŃ ľ\nå°ıåº· ç¤¾ä¼ļ\nå®īåħ¨ ç®¡çĲĨ\nå¹´ ç¬¬\næİĴ æ±¡\nèĥĮ åĮħ\nå®¶ ä½ı\nåħ¶å®ŀ å°±æĺ¯\nä¼ļ è§ģ\nå¸®åĬ© ä¼ģä¸ļ\nç½ĳ è´Ń\næĺ¯ ä¸įä¼ļ\né£¯ åºĹ\næŃ» åİ»\nåħįçĸ« åĬĽ\næľ ķ\nåĸĿ äºĨ\nè½» å¾®\nä¸ªæľĪ åĨħ\nç»Ħ åĽ¢\nåĴĮ å®ĮåĸĦ\né¸ ½\næıĲ éĢŁ\nè¥¿å®ī å¸Ĥ\nä¸Ńå¿ĥ ä¸»ä»»\næĹ¶éĹ´ ä¸º\næľŁ æĿĥ\nè¶ ķ\nä¸įä»ħ è¦ģ\næľį ä»İ\né¡ĺ æĦı\nä¸į å°ı\nä¸įå°ı çļĦ\nç° ĩ\nçª ¦\nåĪĩ æĪĲ\nåĵĪ åĪ©\nå¤© çľŁ\nä¸Ģæ¬¡ æ¬¡\néĩĳ å¸ģ\næĢİä¹Ī èĥ½\nç½ĳ è´·\nä¼ļè®¡ å¸Ī\nçŁŃ ç¼º\nå¯¹ æłĩ\nåıĺå¾Ĺ æĽ´\nåīį åĩłå¤©\néĺ² æ±Ľ\nå½© èĻ¹\nåĵģ ä½į\nè¡¨ æł¼\nä¸¥ å¯Ĩ\næ¯Ľ åĪ©çİĩ\nçļĦ åį±å®³\nå½ķ åĪ¶\næ°´ åĬ¡\nèĥ½å¤Ł è®©\nå¹³ æĿ¿\nä¹³ æĪ¿\nè¸ı å®ŀ\né¦ĸ åĪĽ\né¦Ļ èķī\næĬ¥ è¡¨\nä¸Ģ æĬ¹\nåĩºçĶŁ äºİ\nè²» çĶ¨\nåĩº è®©\nåĲĪæ³ķ æĢ§\nå°¼ åħĭ\nåĨ° åĨ·\né¦Ļ æ°Ķ\nåı· ç§°\nèµ· çłģ\nåŁİ åİ¿\nçİ© èĢį\nä¸Ĭ éĻĲ\nä¼ļè®® ç²¾ç¥ŀ\næĹģè¾¹ çļĦ\nä¾¿ ä¼ļ\næıŃ æĻĵ\nçİ© æĦı\néĽª å±±\nåĲĳ çĿĢ\nä½ĵèĤ² åľ¨çº¿\nè¯´æĺİ ä¹¦\nåĮĸ èĤ¥\nåħļç»Ħ ä¹¦è®°\nåĬ¨ äºº\nä¹ĭ æīĢ\næľĪ èĩ³\næľĢå¿« çļĦ\nèĬĤ åģĩæĹ¥\nä¸ĵ åľº\nèĢĥ ä¸Ĭ\nçª Ł\né²ľ è¡Ģ\nè¾ĥå¼º çļĦ\næĤĦ çĦ¶\nå¤ļä¸ª åĽ½å®¶\nçªĹ å¸ĺ\næŀģ å¤§åľ°\nä¸įçĶ¨ æĭħå¿ĥ\nè¿Ļä¹Ī åģļ\nåĥ¹ æł¼\nç¾İä¸½ ä¹¡æĿĳ\nå°ıæĹ¶ åĨħ\nç´§ è¿«\nå¤§ çģ«\nèĥ³ èĨĬ\næĵįä½ľ ç³»ç»Ł\næ®ĭ çķĻ\nåĨĻ åĩº\nç¦ģ å¿Į\nåĬłçĽŁ åºĹ\nè¿ĳ çĻ¾\nä¾¿ åı¯\næķ´æĶ¹ æİªæĸ½\néĩĩè®¿ æĹ¶\nåĶĲ ä»£\næ·±åĮĸ æĶ¹éĿ©\nçŁ ¢\néĥ½ åĸľæ¬¢\nè¶ĬæĿ¥è¶Ĭ é«ĺ\nèĬ± æľµ\nå¤´ çĸ¼\nå®ī åº·\nå¢ŀéķ¿ çİĩ\nçľ¼ çľĭ\nå°±æĺ¯ ä¸ºäºĨ\nèĢĮ å¯¼èĩ´\nåĬłå¿« å»ºè®¾\nèĬ± æł·\nåĨħå¿ĥ çļĦ\næĺĨ å±±\nè³ĩ æºĲ\nåĽŀåĪ° å®¶\nèıĬ èĬ±\næ°´ éĩı\nå¾ģ ä¿¡\nè¡ĮæĶ¿ åĮº\nä¹ĥ æĺ¯\næĬķèµĦ é¡¹çĽ®\nå«ģ ç»Ļ\nç¥ŀ åľ£\nç¨ ł\næľ¬æĿ¥ å°±\néĢĲ ä¸Ģ\nèģĮä¸ļ æĬĢæľ¯\nä¸įèī¯ ä¿¡æģ¯\næīĺ è¿Ĳ\nåĲ¯ ç¤º\nä¹ĭ åħ§å®¹\néŁ ¶\nå¥¢ åįİ\næıŃ ç¤º\næĪĲä¸º ä¸ŃåĽ½\næ¶Īè´¹ åĵģ\nåħ¬ çĶ¨\næĲŀ å®ļ\nè¯· ä½ł\næŁ ļ\nåĨħ è¡£\nä½Ĩ ä»ĸä»¬\nä¿Ŀ æ¹¿\nè¯¥ åİ¿\né¥± åĴĮ\næİ¨ åĲĳ\nèµĦæĸĻ æĺ¾ç¤º\nä¸į å½±åĵį\näºº äººéĥ½\nåıĳå±ķ å£®å¤§\nåħ»èĢģ æľįåĬ¡\nçĶŁæ´» æ°´å¹³\nåĲĦ åİ¿\nä½ł éľĢè¦ģ\nè¯´ çļĦæĺ¯\nå¤ĸ åªĴ\næŃ¤ äºº\næ¬¡ è¦ģ\nè¿½ èµ¶\nåºĶè¯¥ å¦Ĥä½ķ\næĹ¥ åĩĮæĻ¨\nçķ¥ æľī\néĥ½ æĥ³\næ¸¸ ä¹Ĳ\nè¿Ļæ¬¾ æ¸¸æĪı\nå¹³ æ·¡\næĺ¯ä¸Ģ åĢĭ\nå¤ĩ èĢĥ\nåĪ¶ æŃ¢\nä¸Ģå®ļ èĥ½\nå¾Ĵ å¼Ł\nä»¥ çĤº\nåįĥ åħĥ\näºĶ åħŃ\nè¿ª å£«\nè¿ªå£« å°¼\néĺ³ æĢ§\nåĨ¬å¥¥ ä¼ļ\nå°±æĺ¯ åĽłä¸º\næĮĤ éĴ©\næ¦Ĥ åĨµ\nåıªè¦ģ æľī\næ²¹ çĶ»\nåľ° æłĩ\nä¸Ĭ è°ĥ\näº§ä¸ļ åĽŃåĮº\nåħ« åįģ\næ£ ±\næ¶² æĻ¶\næĿĳ å§Ķä¼ļ\nçŃ¾çº¦ ä»ªå¼ı\nè¿Ļ åħ¶ä¸Ń\nåĨĻ éģĵ\nç¤ºèĮĥ åŁºåľ°\néĩİçĶŁ åĬ¨çī©\néĽ»åŃĲ ä¿¡ç®±\nåĽ½éĻħ è´¸æĺĵ\näºº æĿĥ\nä¿Ŀ ç®¡\nèĭ¥ æĤ¨\nåİĭ æĬĳ\né» Ľ\nåľ° çľĭçĿĢ\néĻ °\nä¸Ģå¹´ å¤ļ\nä»İ å®¹\nä¸Ń æĸŃ\nå¯Ł è§ī\nç§» äº¤\néĶ ¯\næĪĸè®¸ æĺ¯\nç¶ ł\nä¸¤ é¡¹\næľĢ åĸľæ¬¢\næľĢåĸľæ¬¢ çļĦ\nå¤ľ éĩĮ\nåĲĮ ä»ģ\nåĪĽæĸ° é©±åĬ¨\nè°ģ èĥ½\né£ ¾\nåħī åŃ¦\nåİ Ħ\nèĦ± é¢ĸ\nèĦ±é¢ĸ èĢĮåĩº\nè¿ ¦\næĺ¯ ä¸įåı¯èĥ½\nçª ¥\nèĥ½ æ»¡è¶³\nå®½ åº¦\nä¼¦ çĲĨ\nåı¯ä»¥ èİ·å¾Ĺ\nè½¬ ä¼ļ\nå±± æĿĳ\néĵº è®¾\nåĩº åĩ»\næĸĩåĮĸ èīºæľ¯\nä¼ļè®® å®¤\næŃĮ å£°\næ» Ķ\nèĲİ ç¼©\næľįåĬ¡ åĳĺ\nåıĳè¡¨ äºĨ\næĸ¼ æĺ¯\næĺİç¡® è§Ħå®ļ\nç»´ å¥ĩ\næ°´ äº§\næĬķ ä¿Ŀ\néĺ´ éģĵ\nèµ¶ å¿«\nå¤º å¾Ĺ\nä¸ĭ åįķ\nçī©æµģ åħ¬åı¸\nçİ¯ ç»ķ\nå½ Ī\nä½ľé£İ å»ºè®¾\næĹħæ¸¸ æĻ¯åĮº\næľī æĽ´å¤ļçļĦ\nä¸°å¯Į å¤ļå½©\nçĲĨè´¢ äº§åĵģ\nåĩº å·®\nä»İä¸¥ æ²»\nä»İä¸¥æ²» åħļ\nçĽ¸ å¹²\næ»ĭ æ¶¦\nä¸»åĬŀ æĸ¹\nåī§ åľº\næ»ļ çĲĥ\næ©Ħ æ¦Ħ\nèĩªä¸» åĪĽæĸ°\néĢļ å¾Ģ\næł¼ å°Ķ\nçļĦ ä¼ĺçĤ¹\nèĥĮ ä¸Ĭ\nçª ľ\nçĪĨ åĩº\nå¹³ æķ´\nä¸Ģ èĦļ\nåħ¨ä½ĵ åĳĺå·¥\néĻĲ å®ļ\nåŁİéķĩ åĮĸ\næ· ³\néĢ® æįķ\nè¡ĮåĬ¨ è®¡åĪĴ\næīĵ å¾Ĺ\nåİļ éĩį\nçºªå½ķ çīĩ\nåĿļ ä¿¡\nå¤® ä¼ģ\nåĨį ä¹Łä¸į\nå¤© æ¶¯\nåıĤèĢĥ èµĦæĸĻ\næľī æ¯Ĵ\nåĲ¸ çº³\nè¶Ĭ åıĳ\néĩįè¦ģ æĦıä¹ī\nåĽ½éĺ² éĥ¨\nè¿Ļä¸ª è¡Įä¸ļ\næĻ® æŁ¥\nå¼Ĥ æĢ§\nå»¶ è¿Ł\nå°ı å¹ħ\nèī² æĥħ\nç»¼åĲĪ æ²»çĲĨ\næŃ£æĺ¯ åĽłä¸º\näº§ä¸ļ ç»ĵæŀĦ\nçłĶç©¶ æĬ¥åĳĬ\nåģľ ä¸ĭ\néķ¿ èĢģ\néĩĿ å°į\nåįĹäº¬ å¸Ĥ\nçģĮ æºī\nè½¬ è¿Ĳ\næ¬º è¯Ī\néĢł åģĩ\nåĪĨå¸ĥ å¼ı\næĦŁ è§¦\næĪĳ å½ĵæĹ¶\nåıĳ è§ī\nåĽ¾ çº¸\næĶ¹ èī¯\nçĭł çĭł\nåĨ² åĪº\næĸ° äº¬\næĸ°äº¬ æĬ¥\nç¥ŀ åĻ¨\nç§¸ ç§Ĩ\nçĪ º\nå°Ĩ è¿İæĿ¥\nå·¥ ä¿¡\nå·¥ä¿¡ éĥ¨\néĻĲ éĩı\næŃ¢ æįŁ\nåŃ¦ä¼ļ äºĨ\nåįİ çĽĽ\nåįİçĽĽ é¡¿\nå¾Į ä¾Ĩ\nä¸ĭéĿ¢ æĺ¯\nä¸ĭéĿ¢æĺ¯ å°ı\næĲ¬ è¿Ĳ\nç¾İæľ¯ é¦Ĩ\næ¸ħ åĩī\nå¤ļå¹´ åīį\nè© ŀ\nåįĥ ç±³\nè¡¨ è¿°\næ±Ł éĹ¨\nåĬłæ²¹ ç«Ļ\næľ¬ èĥ½\nå¯¼ è¯»\nåĽ´ è§Ĥ\nå¹¶ åĲĳ\nåŁºæľ¬ æĥħåĨµ\næīĵ å¼ĢäºĨ\nè¿Ļ ä¸īä¸ª\næ±ķ å¤´\nå¼º æľīåĬĽ\nå¼ºæľīåĬĽ çļĦ\nè¿Ľ åľº\nä¹Ŀ æ±Ł\nçĲĥ æĺŁ\nå¥½çľĭ çļĦ\nå¤§ æĪ·\næ¹ ¯\nå¥ĩ å¦Ļ\nä¹Ĳ åĻ¨\næĪĳçļĦ å¿ĥ\nçľī å¤´\nåĨľä¸ļ çĶŁäº§\nç¼ĸ çłģ\nåŁº ç¤\nåŁºç¤ İ\nå¤© æĸĩ\nåĢĭäºº è³ĩè¨Ĭ\nåİ» è¿ĩ\nèģĨ åĲ¬\næĶ¾ åģĩ\nä¸į åħ·å¤ĩ\næ·Ģ ç²ī\nå¤§ ä½¬\nåħ¨ å¤©\nåħ¨éĿ¢ å»ºæĪĲ\néļĲ å½¢\nç¼ħ çĶ¸\nåĲ ³\nè¡ĮæĶ¿ æī§æ³ķ\nåŁİ åł¡\nèİ« æĸ¯\nèİ«æĸ¯ ç§ĳ\næīĢæľī æĿĥ\néĽĨ åľĺ\nå±Ģ åī¯å±Ģéķ¿\nåĩłä¹İ æ²¡æľī\næ´ģ åĩĢ\nçĶµå½± èĬĤ\nåŃ© ç«¥\næīĢ åģļçļĦ\næ¸ħ ä»£\næĸ° çīĪ\néĵĿ åĲĪéĩĳ\nä¸º æĬĵ\nä¸ºæĬĵ æīĭ\nåĪ¤ å®ļ\nçī¹ äº§\næīĭ æ©Ł\nä¸įåı¯ æĪĸ\nä¸įåı¯æĪĸ ç¼º\nå¸Ĥåľº è§Ħæ¨¡\nåĿ ¯\nåĮ» åŃ¦éĻ¢\nå¿« è¦ģ\nèĮ ľ\næĬĺ èħ¾\näºĨ è¿ĩæĿ¥\næĬ¥åĳĬ æľŁåĨħ\nçī© ç§į\nç»Łè®¡ å±Ģ\næī© å»º\næ¶ ħ\nè´£ä»» äºº\néĺ İ\nè¯Ħ è®®\nå¾Ģ äºĭ\næīĢ ç¤º\næķ´ æ´ģ\néĹº èľľ\næĹħ éĢĶ\nå®ŀ è®Ń\nä¹ĭ ç§°\nå·´ å£«\néĢŁåº¦ å¿«\nä¸įä»ħ å¦ĤæŃ¤\nå®Ŀè´µ çļĦ\nåºŁ çī©\næ²³ æ°´\næİ¥ çº³\nç²¾ æ¹Ľ\nåħ¶æ¬¡ æĺ¯\né¡º å¾·\nåħ¬åħ± åį«çĶŁ\nè¤Ĳ èī²\nä¸į æĥľ\næĬĢæľ¯ æľįåĬ¡\næİ ·\næ±Ĥ èģĮ\nä¸ī å³¡\næĬķåħ¥ åĪ°\nå¤ª åĲİ\nåĲ¯åĬ¨ ä»ªå¼ı\nçĽ´æİ¥ å½±åĵį\næĸ° æ¬¾\nä¸ª ä¹¡éķĩ\nçĻ¾ äº¿\nåº «\nä¹Ł æŃ£æĺ¯\nåı¶ çīĩ\næľĢæĹ© çļĦ\næĪĺ ç»©\nå·¥ æľŁ\næĻļ æľŁ\nè¿Ļæł· è¯´\nè¯į è¯Ń\nä¾ Ħ\næķ£ çĥŃ\néĽĨæĪĲ çĶµè·¯\nåĲį è¯į\næĻº åķĨ\næĭ¥ åłµ\nçĭĤ æ¬¢\nè¿Ļ èĪ¬\næµ´ å®¤\nåĳķ åĲĲ\næľªæĿ¥ åıĳå±ķ\nä¸īä½į ä¸Ģä½ĵ\nåªĴ é«Ķ\nä¸įå¾Ĺ è½¬è½½\nåĽłä¸º å¥¹\næĺ¾ç¤º å±ı\nä¾Ľ æļĸ\néĨ« éĻ¢\næľī æĦıæĢĿ\næľīæĦıæĢĿ çļĦ\nå¨±ä¹Ĳ åŁİ\nåįµ å·¢\nåĪĽéĢł åĬĽ\nç«ł èĬĤ\näººå¤§ å¸¸å§Ķ\nèĢĮ çİ°åľ¨\nå¤ĸ å©Ĩ\nå¢ŀ æĮģ\näºĶ åįĥ\nèĢģå¸Ī ä»¬\næ´Ľ æĿī\næ´ĽæĿī çŁ¶\næİĮæı¡ äºĨ\nä¸ŃåĽ½ æĸĩåĮĸ\næĸ° æĶ¿\nä¸»è¦ģ çĶ¨äºİ\nåıĳ çĥ§\nç±»ä¼¼ äºİ\nåĮĹ æŀģ\næĪĳä»¬ è®¤ä¸º\nå¼¥ æ¼«\nåħ¨çĲĥ ç»ıæµİ\né¢ Ĳ\nä¸Ģèµ· è£ħä¿®\næĶ Ĵ\næĭī èĲ¨\nå¸¶ ä¾Ĩ\nåĨ· æ°´\nä¸ī åĨľ\næĿ¿ æĿĲ\nè¿ŀ è¿ŀ\néĵ ®\nç»ıèĲ¥ çĲĨå¿µ\nå±± é¡¶\nå¾Ī æĥ³\nçĺ «\nå§ĭç»Ī ä¿ĿæĮģ\nåľ¨ å¹¿å·ŀ\nä¸įåĲĮ æĦı\nåıĺ åİĭ\nåıĺåİĭ åĻ¨\näº§ éĶĢ\nè¡¨ éĿ¢ä¸Ĭ\næīĢä»¥ ä»ĸ\nç»ıéªĮ ä¸°å¯Į\néĥ¨ å§Ķ\nåħµ åĽ¢\næīĢ è¿°\næķ¦ çħĮ\nç»ıèĲ¥ èĮĥåĽ´\nåı£ è¯Ń\nå¤± ä¿¡\næ¯ıä¸ªäºº çļĦ\næīĭ æĮģ\næģĲ æħĮ\nåł¡ åŀĴ\né¦ ħ\néĵ¸ éĢł\næĭ¿ åĩºæĿ¥\næİ¢ æµĭ\nå¤§å®¶ ä¸Ģèµ·\nå¥ §\nå®ŀè´¨ æĢ§\nå°ı åĦ¿\nèĩº åįĹ\nèĩºåįĹ å¸Ĥ\nå¼Ģåıĳ èĢħ\nåı¯ æł¹æį®\nç®± åŃĲ\né¥º åŃĲ\nå¿Ļ çĿĢ\næĿ¥ ä¸įåıĬ\nçĽ¸ ä¼ł\nåĽ½ ç½ĳ\nèħ¹ æ³»\nè¿ĻéĩĮ æľī\né£İ æĻ¯åĮº\nåıĤ ä¿Ŀ\næŃ» èĢħ\næĪ´ ä¸Ĭ\næ©Ł æ§ĭ\nè¯ķéªĮ åĮº\nä¼ł æİĪ\næµ· è¾¹\næ³ª æ°´\nçĽ¸åħ³ åĨħå®¹\néĥĳ å·ŀå¸Ĥ\nåħĳ çİ°\nä¸¤ åĳ¨\nèĬľ æ¹ĸ\nçĶµåŃĲ ä¿¡æģ¯\nçº¢ å¤ĸ\næĹħæ¸¸ å±Ģ\nå¾Ģå¾Ģ ä¼ļ\nè¿ħ çĮĽ\nä¼ł çľŁ\næ¸ħ æ¾Ī\nå°± è¿ĳ\nå¾®ä¿¡ ç¾¤\nç³»åĪĹ æ´»åĬ¨\nç»ıå¸¸ ä¼ļ\nè§Ĥ æµĭ\nå¿ĥå¾Ĺ ä½ĵä¼ļ\néĻĪ åĪĹ\nåĮĹ æĸĹ\nè« ®\nè«® è©¢\nè¿ĺæĺ¯ ä¼ļ\næµĭ ç®Ĺ\næĺŁ ç©º\nå®½ å®¹\nçī©ä¸ļ åħ¬åı¸\næĪĴ æĮĩ\nå¸ħ æ°Ķ\nä¸ĢæŃ¥ æŃ¥\nåħ± é¸£\nåĨ³ ä¸į\næİ¥ ç®¡\nå¦ĩ èģĶ\næ¯Ķ åĸ»\né²ģ è¿ħ\næĮģ çºĮ\nçĽ¸ äº²\nå¨ģå°¼æĸ¯ äºº\nç«ĭ é¡¹\nåĪ Ŀå§ĭ\nèĩª åĪ¶\nè¿Ī è¿Ľ\nä¸Ĭ æ±½\nå®ı ä¼Ł\næł¹æľ¬ æ²¡æľī\næĸ°åĨł çĹħæ¯Ĵ\nåĵª ç§į\nåº· åħ»\nè¡° èĢģ\nå½ķ åĥı\né«Ķ é©Ĺ\nç»ĳ å®ļ\né¢Ŀ å¤´\näºĶ æľĪ\nèĬ± å¼Ģ\nä¸Ģçº¿ åŁİå¸Ĥ\nåĪ° åľº\næĬķ éĻį\nçĹĺ çĹĺ\nåıĹ ä¸įäºĨ\næīİ æł¹\næĽ´ ä½ķåĨµ\næĬ½ æŁ¥\nåĩº è·¯\nå®¡è®® éĢļè¿ĩ\nä¸į åĥħ\nèī² è°ĥ\nçĻ¾ ä½Ļ\nèĤł éģĵ\næ·±åİļ çļĦ\né©¬ åĬĽ\næĹ© æĻļ\næŃĮ èĪŀ\néĺ² æĻĴ\næľĢåĲİ ä¸Ģä¸ª\næ¨± èĬ±\nå°ıä¼Ļ åŃĲ\nåľ¨ å½ĵåľ°\nå°ıä¼Ļä¼´ ä»¬\nèµ· æºĲ\nåħ¨ åªĴä½ĵ\nç° ½\néħ± æ²¹\næĹłè®º å¦Ĥä½ķ\nè£¤ åŃĲ\nåģľ äº§\nä¸įçĶ± å¾Ĺ\nçīµ å¼ķ\nä¼ł åĬ¨\nä¹Ŀ é¾Ļ\nåĬł åĽº\nä¹Łä¸į æķ¢\næĬĢæľ¯ æĶ¯æĮģ\nä¸Ĭ å²Ĺ\nç»ıéªĮ åĴĮ\næł¼ æŀĹ\nåĲ¸ éĻĦ\næľªæĪĲ å¹´\nå¥¢ä¾Ī åĵģ\nè¿½ æį§\nå¥½ ä¸įå®¹æĺĵ\nèķ´ åĲ«\nä¿Ŀ å®ļ\næĬ¥ ä¸ļ\næµ· åĨħå¤ĸ\nä½ł çİ°åľ¨\næ²¹ èĢĹ\nè´¨éĩı ç®¡çĲĨ\næ½ľ æ°´\nä¸½ æ±Ł\nè½¬ åħ¥\nè¿Ļä¹Ī ä¹ħ\næĺİ ä»£\nè´£ä»» åĪ¶\néĩį å·¥\nå¤§ å·´\nè§¦ åıĬ\nèµ· åĪĿ\nå¤§ å¦Ī\næĸ¯ å¡Ķ\nåĨĽ å·¥\nä¹¦ éĻ¢\nå³ ¨\næİ¨ çĲĨ\nè¿Ļç¯ĩ æĸĩç«ł\nè¿ģ ç§»\nåľ¨ åĲĮä¸Ģ\nç»Ĩ ç»Ĩ\nåīĬ å¼±\nä¹¦ æĪ¿\nç¶ĵ å¸¸\nè¯ķ é¢ĺ\næĤ£ ä¸Ĭ\nçĻ«çĹ« çĹħ\nåĨ² æ´Ĺ\nå¤ĸ æı´\nåħĭ åĪ¶\nåįģ æľĪ\nåģļ ä¸įåĪ°\nç¾İ åĮĸ\nå¦Ĥ æľŁ\nè¿ĺ éľĢ\nå¤© åºľ\nå°± æĦıåĳ³çĿĢ\nçļĦç¡® æĺ¯\néªĹ å±Ģ\nå°ıç»Ħ èµĽ\nè© ©\nä¹Ŀ å¹´\næĻĵ å¾Ĺ\nçłĶç©¶ äººåĳĺ\nå¤§ éħĴåºĹ\nç§ĳ åŃ¸\nåħŃ åĲĪ\nçķĮ å®ļ\nè½¦ è½½\nå¼Ģ çĿĢ\næ¯« æĹłçĸĳ\næ¯«æĹłçĸĳ éĹ®\nè¿Ĳ ç»´\nç¦ģ åĮº\nèĦ± èĲ½\nè®² å¸Ī\näº§ä¸ļ åŁºåľ°\né«ĺ æĢ§èĥ½\nåħī å½©\nçİ° éĺ¶æ®µ\nåĩ ¿\nè¾ĥ å·®\né¥® çĶ¨æ°´\néĸĭ çĻ¼\nç½ĳ åĲ§\nçĮ´ åŃĲ\næŃ¦ æŀĹ\nå®ī åİ¿\nä¸įåı¯ æĢĿ\nä¸įåı¯æĢĿ è®®\néĬ· åĶ®\nè´« ç©·\nä¸º åķ¥\néº ĵ\nå¹¾ åĢĭ\nè§Ħæ¨¡ ä»¥ä¸Ĭ\næı ļ\nè¢« åĽ°\nç¼º å¸Ń\nå¿« é¤Ĳ\næĬ¢ åįł\næĻ Ł\nå¤į æ´»\næľ¬æĬ¥ è®¯\nåĪĽ ä¸ĭ\næµ· æ»©\néĩı äº§\nå¦Ĥä½ķ åİ»\nè½¦ ä½į\nå¯ ĩ\näºĮ åįģåĽĽ\nç»ıæµİ æįŁå¤±\néħįå¥Ĺ è®¾æĸ½\nåŁºæľ¬ éĿ¢\näºī è®º\nå°±å¥½ åĥı\nçłĶç©¶ æĪĲæŀľ\néĻĪ è¿°\næīĵ åĬ¨\nä¸ĭ å·´\nç§Ĵ éĴŁ\nå¯¹ äººä½ĵ\næĬĢæľ¯ çłĶåıĳ\nåİŁ åŃĲ\næĺ¯ä¸Ģ é¡¹\näºĨä¸Ģ ä»½\næĮĩ çĶ²\nçĶ¨ éĩı\nè¿ĺä¸į å¤Ł\næĶ¿åºľ éĩĩè´Ń\nçŁ¥è¯Ĩ çĤ¹\nä¸ŃåĽ½ æ¢¦\nå¾Ī å¼Ģå¿ĥ\nç¤¼ è²Į\néĿŀå¸¸ å¤ļ\néĿŀå¸¸å¤ļ çļĦ\nåĽ ļ\næĹħ é¦Ĩ\nå°½ æĥħ\næŃĮ åĶ±\næ²Ļ é¾Ļ\nè½¦ åİ¢\nå®¢ æµģ\nåģı å·®\nç§¯ç´¯ äºĨ\næ¡ Ķ\nçĶ» çĶ»\nä¹Ł åºĶè¯¥\nåºĶçĶ¨ ç¨ĭåºı\nèĥĥ èĤł\nä»¥ å¾Į\nè±ª å®ħ\næ·± åĬłå·¥\nçĽ´ è¨Ģ\nåĮĸ çŁ³\nåĽ½ éģĵ\nä¸ĥ ä¸ª\nä»İèĢĮ ä½¿\nèĤł èĥĥ\næĹ¥ è¶ĭ\nçĪ¶ åŃĲ\nç· ©\næĭĽ çīĮ\näº§ å¦ĩ\nçķª èĮĦ\næĪĳ éĻ¢\nå»ºçŃĳ å·¥ç¨ĭ\nå±ķè§Ī ä¼ļ\nå®¶éķ¿ ä»¬\nåĨľ ä½ľçī©\næĹ¥ å¤ľ\næĶ» æĵĬ\nè§Ħ éģ¿\nèĪŁ å±±\nä¾¿ æ°ĳ\nåħ« åŃĹ\nä¸į æĽ¾\næĶ¯ éħį\nçĨ¬ å¤ľ\näºº é¡ŀ\nç´Ģ éĮĦ\nç»ıèĲ¥ æ´»åĬ¨\nå¤§ æ¶¨\nå¸Ĥå§Ķ å¸¸å§Ķ\nåĪĨ éĲĺ\nä¸Ģä¸ª èģĮä¸ļ\nçĹħ åĽł\nè¿Ļ å¯¹äºİ\nä¸įå¾Ĺä¸į è¯´\nåıĳçĶµ æľº\næľīæīĢ å¸®åĬ©\nçĽ®æłĩ ä»»åĬ¡\nåĽł åľ°\nåĽłåľ° åĪ¶\nåĽłåľ°åĪ¶ å®ľ\nå°Ĩ è¾¾åĪ°\nç²Ĺ ç³Ļ\nç¨³ åĽº\nå« £\nçİ°åľ¨ å¾Īå¤ļ\nä¸ĸçķĮ çº§\nå¼ł æŁĲ\nçĤ¹ ç¼Ģ\nèĳ µ\nç¤¾ä¼ļ ç»Ħç»ĩ\nå¾Ģ åĲİ\nåĬł æģ¯\nåĻª å£°\næľī åħ´è¶£\nä¸ºæĤ¨ æıĲä¾Ľ\næ²¹ æ¼Ĩ\nç¬¬åĽĽ å±Ĭ\nçļĩ å®«\nä¹Ĵ ä¹ĵ\nä¹Ĵä¹ĵ çĲĥ\néļ¨ èĳĹ\néģ© åĲĪ\nåįĹ éĿŀ\næĵ ´\nè¥¿ æ´ĭ\nåĬł å¯Ĩ\næĪĲåĬŁ ä¸¾åĬŀ\nåı£ æ°´\næĪĲ å¹´äºº\næīĢ æıĲä¾ĽçļĦ\néļĶ å£ģ\nåľ¨ äº¬\nå½ĵåľ° æĹ¶éĹ´\nçŃī åĲĦç§į\né£İ æ°Ķ\nå±ĭ éĩĮ\nä¸Ģ åŃĹ\nçļĦæĹ¶éĹ´ éĩĮ\nåĺ¿ åĺ¿\nå¿« è®¯\nä¸Ń åľº\nä¸Ģ çĵ¶\næ» ķ\né¢Ĩ è·ĳ\nå¥½ èİ±\nå¥½èİ± åĿŀ\næ²¡ åħ³ç³»\nåĩº å¢ĥ\nä¸įæĺ¯ ä¸Ģä¸ª\néĥ½æĺ¯ éĿŀå¸¸\néľĩ åĬ¨\nèİ· èĥľ\nåįļ å¼Ī\næĬļ åħ»\nå¯¹ ç«ĭ\næľįåĬ¡ æľºæŀĦ\nè°£ è¨Ģ\nç¤¾ä¼ļ ç§ĳåŃ¦\nåĲ¬è¯´ è¿ĩ\næī ³\næīĵ ç£¨\nåı£ æľį\nå¥½ åĥıæĺ¯\nä»¥åıĬ åħ¶ä»ĸ\nçī¹ è´¨\näº² è¿ĳ\nä¸Ģ ç»ı\næ¶ Ŀ\néŃĶ æľ¯\néģĵè·¯ äº¤éĢļ\nè§Ħæ¨¡ æľĢå¤§\nå®ŀæĸ½ æĦıè§ģ\nä¹ ŀ\nä¸Ģ ä¸ĸ\nåŁ· è¡Į\nè±Ĩ çĵ£\nåĪĹ ä¸º\næķħ å®«\nçĶŁ åĳ½åĳ¨æľŁ\nä¸īç§į èģĮä¸ļ\nè¯¦ç»Ĩ ä»ĭç»į\nå®Į å¤ĩ\nå²© çŁ³\néļı æīĭ\né£ ²\næķĪæŀľ åĽ¾\nç§ĭ åĨ¬\nåĬŁ å¾·\nè§Ħç«ł åĪ¶åº¦\næĹ¥ æ¸Ĳ\næīĢ éľĢè¦ģ\næīĢéľĢè¦ģ çļĦ\nå²Ľ ä¸Ĭ\nåĩº åľŁ\nåĽ¾ æĸĩ\nç§ĳæĬĢ è¿ĽæŃ¥\néĢļ èĥĢ\nèĢģ å¤ªå¤ª\nèĭĹ æľ¨\néĵ¶ å·Ŀ\nå¸Ĳ ç¯·\néĿŀ è¦ģ\néħį çĶµ\nå¤Ħ å¢ĥ\nèĤ¡æĿĥ æĬķèµĦ\nä¸ĢçĽ´ åĪ°\nåĿĩ çĶ±\næĬĹ æĹ¥\næį® ä»ĭç»į\nä½ł åĸľæ¬¢\nåĪĽæĸ° åŀĭ\nåıĺ è¿ģ\nè§Ĩ å¯Ł\nå®Įåħ¨ æ²¡æľī\nåħĥ æĹ¦\nåı¯ ä¿¡\nåı¦ è¡Į\næĿĳ çº§\nåħ¥ åľº\næĲŃ æ¡£\nä¹Ł åĽłæŃ¤\næį¢ æĪĲ\nä¸į è´Ł\näºĨ å¤§éĩıçļĦ\néģĶ åĪ°\nå¸Ĥ åİ¿\nå¹´ è¼ķ\nå¿« æīĭ\nå¸Į å°Ķ\nèĩª èĲ¥\néĽª èĬ±\næĲ ģ\nçľ¼ ç§ĳ\næŃ£ ç¢º\nçļĦ å§¿æĢģ\nåĿļå®ŀ çļĦ\næĮĩ çº¹\næªĶ æ¡Ī\nç½® äºİ\nä½© æľį\nè±ª éĹ¨\nåĵ Ĵ\næģ° å¥½\næª¢ æŁ¥\nåĪĿ è¡·\nå¤§ åĶĲ\nçº¦ ä¼ļ\nèĴ¸ åıĳ\nçŃ¹ åĪĴ\nå¹´ ç»Ī\nè¡Į æ¥Ń\nåħ± éĿĴ\nåħ±éĿĴ åĽ¢\nä¼ļ å¼ķèµ·\nä¸Ń ç§ĳ\nä¸Ńç§ĳ éĻ¢\næĮ¯ åĬ¨\nåį´ åıĳçİ°\nä¸įåĬ¨ äº§\nèĮ ¹\næĪ¿éĹ´ éĩĮ\nè´§å¸ģ æĶ¿çŃĸ\næ²» çĻĤ\næħİ éĩį\nå¡ŀ å°Ķ\nåĽ½ ç±į\nåĽł æŀľ\nçŃī çī¹çĤ¹\nå±± è°·\nä¸ĭ è¼ī\nè®ĵ æĪĳ\né¥® éħĴ\nè¿Ļä¸ª æ¸¸æĪı\nç»Ŀ å¤§éĥ¨åĪĨ\nåĴ¨è¯¢ æľįåĬ¡\nå¹² æ´»\nè®® ä¼ļ\næ¦Ĥ è¿°\nåĪĨ åĮº\næŃ» åĲİ\nç«Ļ çĿĢ\nä¸»è¦ģ é¢Ĩå¯¼\nåĲĮ åŁİ\nå¤§ æłĳ\nå¯¹ åŃ¦çĶŁ\nç¤¾ä¼ļ ä¿ĿéĻ©\nå¢ŀ èµĦ\nä¸»äºº åħ¬\nå®£ä¼ł æķĻèĤ²\næĸĩåĮĸ äº¤æµģ\nå®¢ æĪ¶\nçŁ¥åĲį åĵģçīĮ\næ»ŀ åĲİ\näºĴ è¡¥\næĦŁ äºº\nåī ¿\nåĲİ ä»£\näºī éľ¸\næķĻèĤ² åŁ¹è®Ń\néĿĻ èĦī\nä¹ı åĬĽ\nè¯´ åĩºæĿ¥\nçİĭèĢħ èį£èĢĢ\nåĢ «\nåįĩ èµ·\néķ ģ\nåĩº æ¸¸\néĢļè¡Į è¯ģ\nå·¥ä½ľ å²Ĺä½į\nåĮł å¿ĥ\næĭ¿ æĿ¥\næ´Ĺè¡£ æľº\næĪĳä¸į æĥ³\né¢Ħ è§ģ\næ¼Ķ ç¤º\nä¸ĢçĽ´ æ²¡æľī\nè·Ł å¥¹\nå¯¹çħ§ æ£ĢæŁ¥\nç° ¿\nä¸ĵ å¿ĥ\nè®® äºĭ\nåīį ç«¯\nåį¡ å°Ķ\nè¨Ń å®ļ\nè®¾ç½® äºĨ\nå©ļ çº±\nåľ¨ åĽ½å¤ĸ\nåı³ ä¾§\nè³¼ çī©\nå¥ĩ èĳ©\nå¢ŀåĬł åĢ¼\nå¥½ è¿Ĳ\nåĽ½éĻħ æľºåľº\nä¸ĭ ç§°\nçĽ®åīį ä¸ºæŃ¢\nç¥ŀ ä»Ļ\nå®ĥ åı¯ä»¥\næ¾Ħ æ¸ħ\nèĥ½ ä½¿\næ¸¸ åĩ»\næ¸¸åĩ» éĺŁ\nåĩ ¹\nä¸įè¦ģ åĨį\nåĨ³ èĥľ\nåĨ³ æĪĺ\næĭ ½\nçĽĽ åħ¸\nå¾Īå¥½ åľ°\næľĢ ç¾İçļĦ\nåĥ ļ\nå·´ åŁº\nå·´åŁº æĸ¯åĿ¦\næľĢ éĢĤåĲĪ\né«ĺ èģĮ\nä¿Ŀ å§Ĩ\næİĪ æ¬Ĭ\nè¯´åĪ° è¿ĻéĩĮ\næİ¨ å¼Ģ\nçİĩ è¾¾\nä¸īåĪĨ ä¹ĭä¸Ģ\nç®¡çĲĨ ä¸Ńå¿ĥ\näº¤ æ±ĩ\næ£®æŀĹ åħ¬åĽŃ\nå¾Ģ ä¸Ĭ\néªĳ è¡Į\næį® æŃ¤\nçº½ å¸¦\nç» ŀ\nä¸ī æĸ¹\næĦıä¹ī ä¸ĬçļĦ\næİ¨ è¿Ł\nå¤ļæł· æĢ§\næĥ³ èµ·äºĨ\næİĴåĲį ç¬¬\nå·¨ é¢Ŀ\næĿŁ ç¼ļ\nå®ī å®ļ\näºĭ å¯¦\nçļĦ æĦ¿æľĽ\nè£ħå¤ĩ åĪ¶éĢł\näºº å±ħ\näººå±ħ çİ¯å¢ĥ\nå¿ĺè®° äºĨ\nè¯¥ æ¸¸æĪı\næ¥¼ ä¸Ĭ\nå¼Ģ ä¼ļ\næģ ³\nåıĭæĥħ éĵ¾æİ¥\nç¡ Ĵ\nç»ĻäºĪ äºĨ\nåģı å¥½\nåĵ ī\näº¤éĢļ å®īåħ¨\néĽ Į\næ²» çĹħ\nè§īå¾Ĺ å¾Ī\nè¡¬ è¡«\nå¿ĥ æĦ¿\næ´ŀ å¯Ł\næ°ĳ æ£Ģå¯ŁéĻ¢\næıĲ çĤ¼\nè¦ģ è¿Ľä¸ĢæŃ¥\né©¾ è½¦\næĻ® æĥł\næķ ĸ\nç¦ı éŁ³\néĢģ è¾¾\nè§ĦåĪĴ è®¾è®¡\næīĭ å¥Ĺ\nå®ī ä¿Ŀ\nè¿ĺä¸į å¦Ĥ\nåīį è¿°\næłĩ è®°\nç´§ æİ¥çĿĢ\næ§ Ĳ\næ·±æ·± åľ°\næ»¡æ»¡ çļĦ\næĺ¥ è¿Ĳ\næĹ¥ äº§\nçĪ± æĬ¤\nåħ¨ æĹ¥\nåħ¨æĹ¥ åĪ¶\nè½¬ åĬ¨\nç¥Ń ç¥Ģ\nä¹° ä¸ľè¥¿\nå¯¹ æľªæĿ¥\næ¶Īå¤± äºĨ\nåļ´ éĩį\nä¸ī æĿ¡\néħ¸ å¥¶\néĽĨåĽ¢ èĤ¡ä»½\nè¥¿ è·¯\nåıª å¾Ĺ\néĢģ åİ»\nçĭł æĬĵ\nåĪ©çĶ¨ çİĩ\nä¸ĭ åĳ¨\nå¥ĭ æĪĺ\næĺ¥èĬĤ æľŁéĹ´\nè´Ł è´£ä»»\næĺĤ è´µ\nå°¾ å·´\nç¯ĩ æĸĩç«ł\nåħ ®\nè®Ĭ æĪĲ\nå¹ ¹\nçĻ» éĮĦ\nä½ Ī\nå·¥ åĮł\nåĵªæĢķ æĺ¯\nåıį åĵį\nç§ ĥ\nåĩº è½¨\næĹ¥ åĨĽ\nåĲį èªī\næķı éĶĲ\næľįåĬ¡ æ°´å¹³\nçħ§ å°Ħ\nä¼Ĭ æĭī\nä¼Ĭæĭī åħĭ\nåĨħ éĺģ\nèĬĴ æŀľ\nä¸ĩ åĪĨ\néĢĢ æ¬¾\nçĽ´æĴŃ éĹ´\næĭ¿ åĪ°äºĨ\nå°İ èĩ´\nç©ºæ°Ķ ä¸Ń\nå®¢æĪ· æľįåĬ¡\nè¿Ĳ åĬ¿\nç»ĵ çŁ³\nä¸į å¿ħè¦ģçļĦ\nèĥ¶ åĽĬ\nçĲĨ ä¼ļ\næĬ½ åĩº\nç©ºæ°Ķ è´¨éĩı\næ¯ķ ç«Łæĺ¯\nåĨ· æ¼ł\nä¸Ģ å¦Ĥ\nä¸Ģå¦Ĥ æĹ¢\nä¸Ģå¦ĤæĹ¢ å¾Ģ\næĤ£ çĹħ\nåĬł æĮģ\nèµŀ åĬ©\né« ®\nåĳ½ ä¸Ń\næĦıä¹ī ä¸Ĭ\nä¸į èĪį\nåģļ æ¢¦\næīĵ æī«\næĺŁ åħī\næĸŃ è£Ĥ\nåħ¨ å¥Ĺ\nè£ģ å®ļ\né©¬ åħĭæĢĿ\néª¨ éª¼\nä¸Ģ è·¯ä¸Ĭ\nå®ļ æĹ¶\nå·¥ç¨ĭ æĬĢæľ¯\nå½¼ å¾Ĺ\næ±² åıĸ\nä¸Ģ è§Ī\nåĲµ æŀ¶\nä¿Ĺ ç§°\næłª æ´²\nåºŁ æĹ§\nè¡Į æĺŁ\nåıĳçĶŁ åıĺåĮĸ\né¦ĸ ä»ĺ\nåįģåĪĨ éĩįè¦ģ\næĬĬ è¿ĻäºĽ\nç¥ŀ å·ŀ\næıĲä¾Ľ åķĨ\næ¥ ·\nå± İ\nçĬ¶ åħĥ\nåŁİ å¢Ļ\nçľĭ ä¸Ģçľĭ\nçĶŁäº§ èĥ½åĬĽ\nåŁºæľ¬ä¸Ĭ éĥ½\næīĵ æī°\nåĪĿ æ¬¡\nåĩº ç¤º\nåħ¶ä¸Ń ä¸Ģä¸ª\nçĶŁæĢģ ç³»ç»Ł\næīĭ æİĮ\næµİåįĹ å¸Ĥ\nåľĭ åħ§\næŃ£ åĢ¼\nå¹¾ ä¹İ\næİ¨èįĲ éĺħè¯»\nè¿Ń ä»£\nè°ĥ ä¾ĥ\né¥® åĵģ\nå¢Ļ ä½ĵ\nåıĺ çİ°\näºĨ å¥½\näºĨå¥½ åĩł\nä¸į çķĻ\nçĪ ²\nå°½ æĹ©\næŃ£åľ¨ è¿Ľè¡Į\nåĩº éĻ¢\næĿĢ å®³\næıĲ æ¬¾\nåıĳå±ķ ç©ºéĹ´\nåīį èº«\nä¸įæĸŃ å¢ŀå¼º\næ·± å±Ĥæ¬¡\nå®¹ çº³\néĤ£ ä»½\nå·¥ä½ľ æķĪçİĩ\næľ¬ åĽ½\nå¤± èĲ½\næŃ£ åĽłä¸º\nèĬĤ æ°´\nä¸ĭ ä¸Ģä»£\nçłĶåıĳ ä¸Ńå¿ĥ\nä¸į çĲĨ\nå®Į å¥½\nä¿ĿæĬ¤ åĮº\nç»ĵæŀĦ è°ĥæķ´\nå¥ł å®ļ\nå®£ ç§°\néĺ» æĮ¡\næĴ¤ ç¦»\nä¸į æĸ¹ä¾¿\nåĴ ķ\nç¬ĳäºĨ ç¬ĳ\nçİ¯å¢ĥ æ±¡æŁĵ\nä½ı æĪ·\nç»Ŀ ç¼ĺ\néĻ¤ å°ĺ\né«ĺ å°ļ\næĢİä¹Ī åı¯èĥ½\néĿ¢ èī²\nåķĨ æ¥Ń\nçĸ ¹\nèµĦæºĲ ä¼ĺåĬ¿\nè¾ĸåĮº åĨħ\nèĢĢ çľ¼\næĳ§ æ¯ģ\nä¸ĸçķĮ ç»ıæµİ\nå¼ķ æĿ¥\nä¸Ģ åĪĻ\næĭĩ æĮĩ\næĬµ å¾¡\néĽ į\nåĩĨå¤ĩ å·¥ä½ľ\nçıł ä¸īè§Ĵ\nç¨Ģ åľŁ\nèİ·å¾Ĺ æĦŁ\næĪĲåĬŁ çİĩ\nç½ĳ çº¦\nç½ĳçº¦ è½¦\nèĦ Ĳ\næķ¬ ä¸ļ\néĩĳ ä»·\nç²¾ é«ĵ\nä¹° è½¦\nåħ³ åı£\nåĨį å¤ļ\næŀģ åĵģ\nåĲĦ å®¶\nä¸¾æĬ¥ çĶµè¯Ŀ\nèļ Ĭ\næĸ¹ å½¢\nç§ĳæĬĢ æĪĲæŀľ\næľĢå¥½ æĺ¯\néĹ® åĢĻ\nçº¢ éħĴ\nåĽĽ ç§į\nç¿Ĵ æħ\nç¿Ĵæħ £\nåŀ ¦\néĤ£ åıª\né¢Ĩ æĤŁ\nçľ¼ éĥ¨\næ³° å®ī\nä»» æľŁ\nç£¨ æįŁ\næĽ¿ æį¢\nåħ¸ ç¤¼\nç¬¦åĲĪ æĿ¡ä»¶\nè¿ĺæľī ä»Ģä¹Ī\nåħ±äº« åįķè½¦\nåı¯ åĪĨä¸º\nåŃ£ åĲİ\nåŃ£åĲİ èµĽ\nä¸ľèİŀ å¸Ĥ\nå¿ĥ æĦı\næīŃ æĽ²\nä½ľä¸º ä¸Ģç§į\nè¿Ļ éĥ¨åĪĨ\nåıĤä¸İ åĪ°\nç½ĳ çĲĥ\nå¯¦ çı¾\nç»Ħ è£ħ\nåĲĳ å¤ĸ\nå·¥ä½ľ æĸ¹æ¡Ī\nåįģ æĿ¡\nèª² ç¨ĭ\né¢¤ æĬĸ\nåĵ ©\néĤ® å¯Ħ\näº ¢\nåħį è²»\nç§ ¤\nåºĶæĢ¥ ç®¡çĲĨ\nåĽĽ äºĶ\néºĴ éºŁ\nå¾Ĵ æŃ¥\nè¨ĺ å¾Ĺ\nçĴ Ĳ\næĺ¯åĲ¦ ä¼ļ\næĦıè§ģ åıįé¦Ī\néļ¾ æĢª\nçª į\näº¤ æİ¥\nä¸¤ åįĥ\næĩī çĶ¨\næľŁ éĸĵ\næĲ¬ åĪ°\nè®® é¢ĺ\nç¢§ æ¡Ĥ\nç¢§æ¡Ĥ åĽŃ\nåģļ çĶŁæĦı\néĻĽ ä¸ĭ\nè· ĭ\nèĢģäºº å®¶\nå¸¦ åĽŀ\næŀ¸ æĿŀ\nè¡Į éķ¿\nåĨħå®¹ ç®Ģä»ĭ\næ¢ ¢\næĮĩ æİ§\néĩį çĹĩ\nç½ĳåıĭ ä»¬\nçı¾ ä»£\nç±» äº§åĵģ\nå¥Ķ æ³¢\næ¸ º\nç²ī ç¢İ\nè¿Ļ åıªæĺ¯\næ£Ģå¯Ł æľºåħ³\né½ Ĭ\næĪ¿ ç§Ł\nå¾· æĭī\nå²ģ ä»¥ä¸Ĭ\nçº¯ åĩĢ\nåĪĨå¸ĥ åľ¨\nèĥ½ å¾ĹåĪ°\nä¸į å°½\nç«ŀ ä»·\nçļĦ å¸¦é¢Ĩ\nçļĦå¸¦é¢Ĩ ä¸ĭ\nä¸Ńèį¯ æĿĲ\næĿĳ éķĩ\nä¸įåı¯ éģ¿åħį\néľ² å¤©\nå°ı å§ĳå¨ĺ\nçī© ä»¶\nèĳĹä½ľ æĿĥ\næĭĺ çķĻ\néĥ½ è§īå¾Ĺ\næĽ² æĬĺ\næ·»åĬł åīĤ\nåı¬ åĽŀ\næīİå®ŀ æİ¨è¿Ľ\næĬĦ è¢Ń\nåĮĸ èº«\nçĽ´ èĲ¥\nä¹Ł å¸ĮæľĽ\nèį£èªī ç§°åı·\nåįĸ ç»Ļ\næľī ä¸įåĲĮçļĦ\nå¥ĩ çī¹\néĥ½ è®¤ä¸º\nå¦ ŀ\næĪĲéķ¿ ä¸º\nè¾© æĬ¤\nä¸» æķĻç»ĥ\næ³ķå¸Ī èģĮä¸ļ\næ¤į åħ¥\nç´¢ å°¼\nåĲ¬ è¿ĩ\nä¹łæĥ¯ äºĨ\nå¤º åıĸ\néŁ ĵ\næľ¬è´¨ ä¸Ĭ\næİ¥ åĬĽ\näºĳ ç«¯\nè¦ģ åģļå¥½\nè·¯ çģ¯\nåįıåĲĮ åıĳå±ķ\næľī å¾ħ\næ°´ åŁŁ\næĲľçĭĲ é¦ĸé¡µ\nè´¨éĩı å®īåħ¨\nåįģäºĮ äºĶ\nåĵ® åĸĺ\nèĵ¬åĭĥ åıĳå±ķ\nåĲį å£°\nèº« äº¡\nçİĭ åºľ\nåİŁåĪĻ ä¸Ĭ\nçĥĺ å¹²\néģĹ æ¼ı\néĿ¢ çĽ®\nåĽ½ ä¼ļ\nä¸ĢçĽ´ éĥ½æĺ¯\næľīä¸Ģ ä½į\néħį æľī\néĻª çĿĢ\nä¼ģ åĽ¾\næĮī ä¸ĭ\nèĵĿ åĽ¾\næ© ĺ\nå¤§å¤ļ æĺ¯\nè¾© è®º\næĹĭ å¾ĭ\næĬ¥ éĢģ\næĿ¡ è§Ħå®ļ\nåĬ¨ éĿĻ\nåĮĪ å¥´\næĭľ è®¿\nä¸Ģ åĪĢ\nä»ĸ çŁ¥éģĵ\nä¸» æĿĥ\nä»ĸ æĽ¾\næĴŃ ç§į\nå£ģ åŀĴ\nçī¢è®° ä½¿åĳ½\nåľ¨è¿Ļ æĸ¹éĿ¢\næīĭ èħķ\næĶ¯ æŀ¶\nä¾Ĩ èĩª\néĩį å¡ĳ\nå¤ļ å±Ĥæ¬¡\nä»ĭ è´¨\néĿ¢ åŃĶ\næ½® æ¹¿\nåİ¿ åŁŁ\næ¸¸æĪı å½ĵä¸Ń\nå£ ŀ\nåĪĹ åĩº\nèµĽ åĮº\nå¤ļ åįĬ\néĩįçĤ¹ å·¥ä½ľ\næĪĳä»¬ å¿ħé¡»\næŁı æŀĹ\né²ģ èĥ½\næĸ½ å±ķ\nåĲĦ åĮº\nåħį ç¨İ\nèµĽ åĲİ\næľĢ éĩįè¦ģ\nä¸Ģä¸ª å¥½çļĦ\nè¿Ŀæ³ķ è¿Ŀè§Ħ\näºĨè§£ æĽ´å¤ļ\næķ¬ è¯·\nç¬ĳçĿĢ è¯´\nä¸įæĸŃ åıĳå±ķ\næĳĦå½± å¸Ī\nä»¥ éĺ²\nçĤ¸ å¼¹\nå£° åĵį\nç¤ ģ\næĩ ¿\nèĪĨ æĥħ\nèĩªçĶ± è´¸æĺĵ\næķı æį·\nä¸īå¤§ éĺ¶æ®µ\nèĭ Ķ\næĹº åŃ£\nä¸į æ»¡æĦı\nå¾®ä¿¡ åı·\nä¿® ä¸º\nçł´ è£Ĥ\néĢĥ ç¦»\næ¯ı èĤ¡\nè¾¾ ä¸įåĪ°\næ¯ıå¹´ éĥ½\nçģ¯ ç¬¼\næŃ¤ åŁºç¡Ģä¸Ĭ\nåĥı ä¸ª\nåĪĨ å¨©\næĻ ¾\nä¸į èĩ³äºİ\nçº¢ çº¿\nè¯¯ è§£\nä¸ľ è·¯\næ·® å®ī\näº§ åŃ¦\näº§åŃ¦ çłĶ\nèī¾ æ»ĭ\nèī¾æ»ĭ çĹħ\nåīįæıĲ æĺ¯\næ¯ı ä¸Ģå¤©\nä¸ĥ å¤§\næłĳ åı¶\nèµ° å¾Ĺ\nè¿Ļ ä¸¤ç§į\næİı åĩº\næİ Ĳ\né¢Ĩå¯¼ èĢħ\nä¸Ģ æľµ\nä¸ªå¤ļ æľĪ\nä¸Ń åħ³\nä¸Ńåħ³ æĿĳ\nè¯¾åłĤ æķĻåŃ¦\nå¤§ åĴĸ\néģĭ çĶ¨\nè¯ļ æĦı\nç»Ħ åĽ¾\nè¯ķ çĿĢ\nä¹Ķ æ²»\nè¿ĺ ä¸įæĺ¯\næľī æĽ´å¥½çļĦ\nåĲİ å¤ĩ\næĸ°çĶŁ åĦ¿\næ°Ķ è¡Ģ\næ²¥ éĿĴ\nå±ı éļľ\næ¥Ń åĭĻ\næĪĳ ä»¥ä¸º\néķ¿ çĽ¸\nèĢģ çĪ¸\néķĩ æ±Ł\næľºæ¢° è®¾å¤ĩ\nä½Ĩæĺ¯ å¦Ĥæŀľ\nåĿļå®ļ ä¸į\nåĿļå®ļä¸į ç§»\nåĨ² éĶĭ\nç®ĢçĽ´ æĺ¯\nåĤ¨ èĵĦ\nçº¯ çĶµåĬ¨\næ¼« æŃ¥\nä¸¾ èµ·\næģ¶ æĢ§\nè¨ĺ éĮĦ\nèģĮèĥ½ éĥ¨éĹ¨\nåħ¨ éķ¿\néĽ» è¦ĸ\nä¹³ èħº\nä½ķ å¤Ħ\næ¶Ī æŀģ\næŃ£ å¤Ħäºİ\nå®ī å®ģ\næĪĲ éķ·\nåıĻ è¿°\næºĥ çĸ¡\nä½Ĩ çİ°åľ¨\nå¥³ æĺŁ\nå©´ å¹¼åĦ¿\næĬķ èŀįèµĦ\néĹ® éĹ®\næıŃ å¼Ģ\nè¯ ı\nåĲį å½ķ\nèĺĳ èıĩ\nåĲĬ é¡¶\næ¹ĸ åĮº\nåįĸ åľº\nå»º ç¯\nå»ºç¯ ī\nèİ ½\nåĲ¬ åĲ¬\nç«ŀäºī ä¼ĺåĬ¿\nåĩº ä»»\næľī ä¸¤ç§į\næ©± æŁľ\nè¤ ª\nè¯ķ åį·\nç»ıæµİ æĬĢæľ¯\næ·± å±Ĥ\néĩįè¦ģ åĨħå®¹\né£İ æİ§\nçĬ¶æĢģ ä¸ĭ\néĥ¨ éĸĢ\nå¹¿ æ±½\nè§Ĥ æĳ©\néģĹ çķĻ\nè½¬ è´¦\næĮģ ä»ĵ\næĢ» è®¡\nåľĺ éļĬ\næĪ¿ ä¸ľ\néĺĢ éĹ¨\nåħ¬ åħ³\nåħ³ åĪĩ\nèĤ ĺ\næķ¸ æĵļ\nä¸ī åįģå¹´\nè§ģè¯ģ äºĨ\nå± Ĩ\nçģ° å°ĺ\næ¦ľ é¦ĸ\nè¦ĨçĽĸ çİĩ\nä»Ļ å¥³\nçĶŁäº§ æĢ»\nçĶŁäº§æĢ» åĢ¼\næĪ¿ è´·\næ±Ł åĮº\nåħħçĶµ æ¡©\nçĻ¾ åĲĪ\nç¢º èªį\nè½¬ ç§»åĪ°\néĥ½ æĹłæ³ķ\nçºªå¿µ é¦Ĩ\nçŃ¾ç½² äºĨ\nå¹¶ä¸į å¤ļ\næĮ ł\nä¸įå¤ª å¥½\nä¸ĸ ä»£\nè¯¯ å¯¼\né«ĺå³° è®ºåĿĽ\nåħ¼ å®¹\néľ¸ æ°Ķ\næĿ¥ è®¿\næīĢ å¸¦æĿ¥çļĦ\næĺ¯ä¸Ģ éĥ¨\næĻļ é¥Ń\nåİĨ ä»£\nåĲ¦ åīĩ\nä¹ħ ä¹ħ\næľīæķĪ æľŁ\nè¯± åıĳ\næĢ» èµĦäº§\næľ¬èº« å°±æĺ¯\nçĶŁäº§ åİĤå®¶\næĹ¶ é«¦\nèĢĲ çĶ¨\nä»İå°ı å°±\næĿ¡ çº¦\nèĭ± åĭĩ\nä¿Ĺ è¯Ŀè¯´\nå¯º åºĻ\nå¿ĥçĲĨ åģ¥åº·\nä»Ģä¹Ī äºĭæĥħ\næ±ī åŃĹ\nçķĻ ä½ı\nåįĹ è·¯\nä¸ī é¡¹\nä¸¢ äºĨ\næĥ³ åĪ°äºĨ\nçŃ¹ éĽĨ\néĻĦåĬł åĢ¼\nè¥¿ è£ħ\nä¹ĭ ä½ľ\nåģļçļĦ äºĭ\nçķ¶ æĤ¨\nçķ¶æĤ¨ åľ¨\né¦ĸ æ¬¾\nä¸įåľ¨ ä¹İ\nå·¥ç¨ĭ æĸ½å·¥\néļĲ éļĲ\nåıĺ èº«\næ²¿ éĢĶ\næĤł æĤł\nä¿Ŀ æļĸ\nçĶŁæ´» åŀĥåľ¾\næ¸¤ æµ·\næŃ¦ ä¾ł\nå¥³ ä¸»è§Ĵ\nä¸¾ ä¾ĭ\næ ·¨\nçĻ½ é¢Ĩ\nè£Ļ åŃĲ\nè¿Ķ è¿ĺ\nè¿Ī åĩº\né¾Ļ éĹ¨\nç»ıæµİ ä½ĵ\næĶ¶ å®ĺ\nçķĮ éĻĲ\nè·³ åĩº\nåįĩ åĢ¼\nç»µ éĺ³\nçĸ¤ çĹķ\nçľĭ æ¸ħ\næĭĴ çµķ\nè¥Ħ éĺ³\nè¯¾ å¤ĸ\nåŃĲ åŃĻ\næŃĮ è¯į\næĪĲ åĲį\næº¶ æ¶²\nåĦĴ å®¶\nåķĨä¸ļ åĮĸ\nè¾¨ åĪ«\nå¤ļ è¾¾\nç½ĳ åºĹ\nä¹Ŀ å¤§\nä¹Ŀå¤§ ç²¾ç¥ŀ\næŃ¤ ä¸¾\nè¿ŀ è½½\nä¸Ģ åĢĭäºº\nèī² æ³½\næ¶µçĽĸ äºĨ\nè¦ı åĬĥ\nåĽ½ æĥħ\nåį«çĶŁ åģ¥åº·\nç§¯æŀģ åĵįåºĶ\næĭ Ļ\nåĪ¶ åĬ¨\næĥ³è±¡ åĬĽ\nçļĦ ä¹Ĳè¶£\nå¼łå®¶ çķĮ\nå´ İ\néĩį åŀĭ\nå¤ĸ å¢Ļ\næĶ¾ åŃ¦\nè®¤çľŁ åŃ¦ä¹ł\nè´¬ åĢ¼\næ³ķ æ¡Ī\næĬ¤èĤ¤ åĵģ\néĻ·åħ¥ äºĨ\nè¯· æĤ¨\nåŀ ¢\næķĻèĤ² èµĦæºĲ\näº¤æĺĵ å¹³åı°\næĹ¶ è£ħ\nä¼łæŁĵ çĹħ\næ¹ĸ æ³Ĭ\nèµĦ ç®¡\nåİ¨ å¸Ī\néĹľ éį\néĹľéį µ\nåĵĪåĵĪ åĵĪ\nçĽĹ çªĥ\nçĶľ ç¾İ\nåºĦ åĽŃ\nçĽ®åīį å·²ç»ı\nè¾¹ ä¸Ĭ\nçģ« èĬ±\næĬ¥ è®°èĢħ\næģĭ æĥħ\nç´§ åĩĳ\næ°´ æµģ\nè¿Ļæĺ¯ æĪĳä»¬\næ³¥ åľŁ\næĽ¾ ä»»\næĸ¹ è¨Ģ\nåĳ¨ åħŃ\nåı· æ¥¼\nä¼ĳ åģĩ\nè¯¯ ä¼ļ\nåĽ½ åĢº\nåīį å¤ķ\nä¸¤ å¼ł\néĹ «\néŃĶ é¬¼\næĬĬ æĮģ\nèĬĤèĥ½ çİ¯ä¿Ŀ\næ¸ħæ´ģ èĥ½æºĲ\nèĤ¥ æĸĻ\né«ĺ é¢ĳ\nå°± æľīäºĨ\näº¤ ä¼ļ\næ²¡ éĴ±\néĽħ æĢĿ\nè¦ģ åıĬæĹ¶\nåŁ¹åħ» åŃ¦çĶŁ\næ¬£ åĸľ\nçĥŃæ°´ åĻ¨\né¾Ļ æ¹ĸ\näºĮ æ¥¼\næĸ°æµª è´¢ç»ı\næĸ° åĬ¨èĥ½\nèµ£ å·ŀ\næĭ³ å¤´\næµģ åĲĳ\nä¹Łæĺ¯ å¾Ī\nåıĳ åĶ®\nä¸Ń åĲ«æľī\nåĲĵ å¾Ĺ\nå·¨ æĺŁ\næĹł æīĢè°ĵ\næ¯Ľ åŃĶ\nåħ¬åħ± äº¤éĢļ\nçĤİ çĥŃ\nèµ· èįī\nåĬłçĽŁ åķĨ\nè¯´ ä¸įåĩº\nå¤§åŃ¦ æ¯ķä¸ļ\nå·¥ä¸ļ åĽŃ\néłĺ åŁŁ\nåºĨ åħ¸\næµģ äº§\nèģ² éŁ³\nä¼¼ä¹İ æĺ¯\nè´§ æºĲ\næ·± åĪĩ\næ²»çĸĹ æĸ¹æ³ķ\nèµĦæºĲ éħįç½®\nç¶² åıĭ\nçĶ £\näº ¥\nèº² åľ¨\nç¤¾ ç§ĳ\nè»Ł é«Ķ\nå¥³ è£ħ\næŃ¡ è¿İ\nç»¼åĲĪ å®ŀåĬĽ\næł¼ å°ĩ\nåħļåı² åŃ¦ä¹ł\næľĢ åŁºæľ¬\næľĢåŁºæľ¬ çļĦ\nçľĭ æľĽ\nåıĹ è´¿\nä¸įä»ħ èĥ½\nä½ķ å¿ħ\nä¸Ģä¸ª å°ıæĹ¶\nç¾ Į\næĭĽ æĶ¶\nçĤĴ èĤ¡\næĿĳ å¹²éĥ¨\nçĽ¸ çĪ±\næ½ľ èĥ½\nä¹ į\næĹ¶ è¾°\næ¬£ æħ°\néĵ¶ è¡Įä¸ļ\nçĭŃ çªĦ\néĩįçĤ¹ é¢ĨåŁŁ\nçİ°å®ŀ çĶŁæ´»\néĮ¯ èª¤\næĸ° è§Ħ\næ»¥ çĶ¨\næĹ¶ ä¸į\næĹ¶ä¸į æĹ¶\nå¸³ èĻŁ\nç¨Ģ ç¼º\nåĲĳ ä¸ľ\nä¿Ŀåģ¥ åĵģ\nçıŃ éķ¿\näºĴ åĭķ\nç¬¼ ç½©\næ½ Ľ\næļĸ å¿ĥ\nè½° çĤ¸\nåºĨ å¹¸\nè²Į ä¼¼\næĵ º\nèĢĲ ç£¨\nä¸ĵä¸ļ äººå£«\nä¸ĢèĪ¬ éĥ½æĺ¯\næ¼³ å·ŀ\nåħ¨ èĩªåĬ¨\nå½ķ çĶ¨\nå¤§ è·Į\næľīæķĪ æĢ§\nèĩª åĭķ\nä¸īä¸ª æĸ¹éĿ¢\næ¸¯ åĮº\nä¿¡ è²¸\néĢļ è¯Ŀ\né«ĺ æ¶¨\næ³Ħ æ¼ı\néħį ä¸Ĭ\nåħļ å·¥å§Ķ\nè¢« è®¤ä¸º\nè¢«è®¤ä¸º æĺ¯\nä¸įä¼ļ åĨį\nè°ĥ åīĤ\nåıĤ èĤ¡\nèĦ± åıĳ\nå¿ł å®ŀ\nåĨħ åĪĨæ³Į\nç¹ģ å¿Ļ\nåıĮ åĪĽ\né©» æĿĳ\nåĪĴ ç®Ĺ\néģİ ä¾Ĩ\nåľ£ ç»ı\nèıľ é¸Ł\næĭ¼ å¤ļå¤ļ\nä¸ŃåĽ½ æ±½è½¦\nçĥŁ èįī\nçĽ´ æµģ\näºĨä¸Ģ åı£æ°Ķ\nä½İ æĪĲæľ¬\næī¾ åĽŀ\nèĩª åįĳ\nç¸½ æĺ¯\næĸĩåĮĸ åĪĽæĦı\nå¤© æ²³\næ¨± æ¡ĥ\néªĳ åħµ\néĩĮéĿ¢ æľī\nçİ ®\nèĥ½ æī¾åĪ°\néĢĥ è·ĳ\nåĪĩ å°Ķ\nåĪĩå°Ķ è¥¿\nä»¥ä¸ĭ æĺ¯\nå²³ éĺ³\nçļĦ æ¦Ĥçİĩ\næĬµ åĪ¶\nå¸Ī äºĭåĬ¡\nå¸ĪäºĭåĬ¡ æīĢ\nåĩĨ æĹ¶\nå±¬ æĸ¼\nè®¢ è´Ń\nåįłæį® äºĨ\nä¸Ń éĢĶ\nå° ĭ\né»ĳ é©¬\nåİ¿ åħ¬å®īå±Ģ\nä¸ĥ æľĪ\nèī² ç´ł\nå¿ĥèĦı çĹħ\næĹ¶ éĻĲ\næ¯į åħ¬åı¸\nå¹ķ åĲİ\nä¸Ĭ æ¦ľ\nåĢ¾åĲĳ äºİ\nçº¸ ä¸Ĭ\næ¡ ĵ\néĽĨä½ĵ ç»ıæµİ\næĥħ å¢ĥ\nè¦ģ åģļåĪ°\nç©į æ¥µ\nåıª æĢķ\næ¹ĺ è¥¿\nçļ± çº¹\nåħ¨ åľĭ\nçĦ¡ è«ĸ\nå¥½ æĦŁ\nåįķ ä»·\nè¿Ľç¨ĭ ä¸Ń\næĺĨ ä»ĳ\nåĪĽ å®¢\nåħħ æĸ¥\nåħĪ æĬĬ\nè¯¥ æĢİä¹ĪåĬŀ\nåĵģ å¾·\nåħ¨éĿ¢ åıĳå±ķ\nè¨Ī åĬĥ\næĢ» å·¥ä¼ļ\nä½Ľå±± å¸Ĥ\næĬĹ è¡¡\nå¼Ģ åľº\néĴ± å¸ģ\nåıĭ ä»¬\nå«ī å¦Ĵ\nç´¢ èµĶ\nè®Ĭ åĮĸ\næĮ¤ åİĭ\næĮĳ è¡ħ\nçŃī ä¸Ģæī¹\næĿ¨ æ¬¢\nä¸ĵå®¶ åŃ¦èĢħ\nèĥ½ è¾¾åĪ°\nèµ° è¿ĳ\nè´«åĽ° åľ°åĮº\néĻĲ æľŁ\nä¸į å¹³è¡¡\nåĽ½åĨħ å¸Ĥåľº\nèµĽ åľº\néħį èµĦ\nè¦ģ èĢĥèĻĳ\nä¸ĩ åı°\næľĪ æľ«\néĶ ¥\nåŃ «\næİ¥è§¦ åĪ°\nåĩº äº§\næķĻ åŃ¸\nä½ľ å¼Ĭ\nçļĦ æľĢåĲİä¸Ģ\nä¿ĥ æĪĲ\nåĲ¸ åıĸ\næ½ľ èīĩ\nè¢« éªĹ\nè¾ĵ äºĨ\nçĭĲ çĭ¸\nåįĩ éĻį\nè¿ĻäºĽ ä¸ľè¥¿\næĬķèµĦ åŁºéĩĳ\nçĶŁçī© åŃ¦\nç½ĳç»ľ èĲ¥éĶĢ\nåĲĳ è®°èĢħ\nèįī åľ°\næĢ ¯\næľįåĬ¡ èĥ½åĬĽ\néĥģ éĹ·\nåįķ åĵģ\nå¾Ĺ ç½ª\næĺĵ äºİ\nä¸ªå¤ļ å°ıæĹ¶\néĩį ä»»\nä¸Ĭ å®ĺ\næľ¬ éĩĳ\nçı¾ åł´\næº¢ ä»·\næĺŁ è¾°\næ´»åĬ¨ çİ°åľº\nä¸¹ éº¦\nå¸Ŀ çİĭ\næŁ¥ æĺİ\nåŃĺåľ¨ äºİ\né¦Ļ æ°´\næĬ½ æ£Ģ\nå®ŀéĻħä¸Ĭ æĺ¯\næĸ° å¾ģç¨ĭ\nè´¢åĬ¡ ç®¡çĲĨ\næİ Ľ\nåĨľ åİĨ\néĥ½ èĥ½å¤Ł\néĤ¯ éĥ¸\nçľŁ å¯¦\nç» Ĭ\nåĨµ ä¸Ķ\nç½® èº«\nç¥Ī ç¥·\nçĿģ å¼Ģ\næĮĩ çĤ¹\nå¼Ģ æľº\nè¥¿ å®ģ\nåĮĹ çº¦\nç§¯ æ°´\nåĩº åĬ¨\nåıĳå±ķ æ¨¡å¼ı\nè½¬ æĬĺ\nèĢĥ çĤ¹\næľī ç½ĳåıĭ\nè´«åĽ° æĿĳ\næĪĳä»¬ çŁ¥éģĵ\nåĪĨ éĶĢ\nå±± èĦī\næ¯Ķ æĭŁ\nä¼° ç®Ĺ\næĶ¹ å»º\nå£® è§Ĥ\nç§ī æĮģ\næı ª\nç¦ Ģ\nåĮĸåŃ¦ åĵģ\nä¸ŃåĽ½ åĪ¶éĢł\nä¸Ģ æŀ¶\næīį è¡Į\næĭĽ å¾ħ\nåıĺ æį¢\nåīį çº¿\nå¹¸ å¥½\nè¿Ļæł· çļĦè¯Ŀ\nå¿ĥ è¡Ģç®¡\næĢ§ çĸ¾çĹħ\nåħ¨ èĥ½\nåĪĳ ä¾¦\nä¿¡æģ¯ åıĳå¸ĥ\næĺ¾ çĦ¶æĺ¯\néĿĴ éĵľ\nåĲĥ ä»Ģä¹Ī\nçĶµ ä»·\næ³ķå¾ĭ è§Ħå®ļ\nçħ ²\nçĵ· åĻ¨\nèĤī ç±»\næıĴ åħ¥\nåĹ ľ\nè¿Ł è¿Ł\nä¸ĢçĤ¹ éĥ½ä¸į\nè¿ĺ åĮħæĭ¬\nèĪį ä¸įå¾Ĺ\næłĩå¿Ĺ æĢ§\næľĪ ä»¥æĿ¥\nç³ĸ æŀľ\néĥ½ åºĶè¯¥\nçİ¯å¢ĥ åį«çĶŁ\nèĪª è¡Į\néĥĳ éĩį\nç½ĳ æĬķ\nåįģ ä½³\nç§ģ ä¸ĭ\næļ´ è·Į\nåĬłå¿« åıĳå±ķ\näº§åĵģ çłĶåıĳ\nåĪĽéĢł åĩº\næĢ» è§īå¾Ĺ\nåºķ çĽĺ\nèķ Ĭ\nåĩºå¸Ń ä¼ļè®®\nä¸» æĿ¿\næĹ¥æĻļ éĹ´\nå®ĺæĸ¹ å¾®åįļ\nå¼ķçĶ¨ æĹ¥æľŁ\nåī¯ æķĻæİĪ\nçĶµåŃĲ äº§åĵģ\nè¡° éĢĢ\nçķĻ åŃĺ\nçģ« åĬĽ\nçĴ §\nçļ Ĥ\nåħ¼ åħ·\néĩį è¿Ķ\né¢Ĩ çķ¥\nåĪĩ éĻ¤\nåĨįçĶŁ èĥ½æºĲ\nå®ŀåľ¨ å¤ª\nçĲĨè®º ä¸Ĭ\nä¸ī å±Ĥ\nä¸ĸçķĮ åĲĦåĽ½\nå®ľ æĺĮ\nèĢ³ è¾¹\nå®½ æķŀ\næ±ī æĹı\nçĻ½ çĻ½\nè¿ĻéĩĮ éĿ¢\nçĶŁæ´» ä¹łæĥ¯\nèµŀ èµı\nçĶ· å£«\nä¸Ń ä¿Ħ\nè½¦ ç¥¸\nåīĤ éĩı\néĻ¤ åİ»\nå·¦ è¾¹\nçŃĳ çī¢\nçīĽ å¸Ĥ\nå®¶ åĬ¡\nåķ ĥ\nç½® æį¢\nç´« å¤ĸ\nç´«å¤ĸ çº¿\nå¾Ģ åīį\nåĬĽ åŃ¦\nç´§ è·Ł\nçĽ®çļĦ åľ¨äºİ\nç» ®\nç¥ Ĥ\nå®£ è¨Ģ\näºĮ æ°§åĮĸ\näºĮæ°§åĮĸ ç¢³\næĹł ç¼ĺ\nç²¾ éĢļ\nè¨ º\nå¼ķåıĳ äºĨ\næľĢ åħĪ\næ´¾ é©»\nä¸į å¿į\næĪĳ çĪ¸\nå¹´ ä¸ĭåįĬå¹´\næ·ĭ å·´\næ²¡ éĹ®é¢ĺ\nåºĹ åĨħ\nè·Ł æĪĳè¯´\nçĶŁäº§ çĶŁæ´»\nè§Ĥ æľĽ\næ¸ į\nè¢« æī§è¡Į\nè¢«æī§è¡Į äºº\nèĪ ľ\næİ º\nä¸Ģ ç§Ĵ\nèįī åĿª\nåĳ¼ åĴĮ\nåĳ¼åĴĮ æµ©\nåĳ¼åĴĮæµ© çī¹\näººæ°ĳ éĵ¶è¡Į\nçĦķ åıĳ\nè¯ģåĪ¸ äº¤æĺĵ\nçķ Ķ\næľº èĥ½\nå¦ ¾\næĻļ å¹´\nå·¥åķĨ èģĶ\nåİŁ åŀĭ\nè§Ĵåº¦ çľĭ\næĬ¥ ç¤¾\nè¯į æĿ¡\nèº² éģ¿\néĩį åĲ¯\nå¤ķ éĺ³\nèĤ¡æĿĥ è½¬è®©\nåľ¨ ä¸Ģ\nåľ¨ä¸Ģ æĹģ\nç¤¾ä¼ļ åĮĸ\nåıĳå±ķ åİĨç¨ĭ\næĭĸ æ¬ł\nä½¿ èĢħ\nä¸İ åĲ¦\næĸ° å±ĢéĿ¢\nä»Ĭå¤© æĪĳä»¬\né½Ĳ èģļ\nå¯¹ æĪĳè¯´\néĢĴ äº¤\næľª æĽ¾\nèİ Ĭ\néĸ ī\näº² æīĭ\nè§Ĵ éĢĲ\næľī é»ŀ\nç¨İ çİĩ\nä½İ å£°\né»ĺ å¥ĳ\næĻ® æ³ķ\nå¤§ ä¸ĵ\nç¬¬äºĮ å¤§\nä½ı åĿĢ\næĶ¾ è¿Ľ\näºĮ æĪĺ\näº² èº«\nåĽº åĮĸ\nä¸ĭ ä¹¡\nåħ³éĶ® æĬĢæľ¯\nåĽŀ æĥ³\næĬ¥ åĪĬ\næ¶Ĥ æĬ¹\nèĹı çĿĢ\nç¥Ŀ æĦ¿\nåįĩ æ¸©\nçĶļèĩ³ è¿ŀ\nåħ¬åħĥ åīį\nç¾İ æĸ¹\nè¯ļ å®ŀ\næĹł åģ¿\nåīµ æ¥Ń\nå°ıå¿ĥ ç¿¼\nå°ıå¿ĥç¿¼ ç¿¼\nä¸¤ æīĭ\næ¸©é¦¨ æıĲç¤º\nä»¿ çľŁ\næĥ ¶\nèĥ¡ åŃĲ\nå·¥ä½ľ ç«Ļ\nç¡¬ çĽĺ\nç« ¿\nåĤ³ éĢģ\nåħ¨ æł¡\né²ľ æ´»\nçĴĢ çĴ¨\nç»ĵ å°¾\næį¢ æĿ¥\næĪ Ģ\nä½İ ä½į\nä¸ĩåħĥ ä»¥ä¸Ĭ\nåĬł åĪĨ\næİ¨ä»ĭ ä¼ļ\nçĲĨ èµĶ\nå¾· å°Ķ\næĬĹ è®®\næ´ ¼\nåĸ §\nåŁİ éĻħ\nå¾Ī æ£Ĵ\näºº æŃ»äº¡\nä¼ļå±ķ ä¸Ńå¿ĥ\näºĴèģĶ äºĴéĢļ\nèĸĦ èĨľ\néĩį é»ŀ\nç¦ģ æ¯Ĵ\nåĨ· ç¬ĳ\nå¤§å®¶ åı¯ä»¥\né¦ĸ çĽ¸\nè¿ĳ è·Ŀç¦»\næµ® çİ°\nç§ĺ è¯Ģ\nèµ· é£ŀ\næĲ ¶\nçľŁ åģĩ\næģ ķ\nå°ı åºĹ\næ°ĳ çľ¾\nåıĳå¸ĥ åħ¬åĳĬ\nä¾§ éĩį\nå¾ĺ å¾Ĭ\næĢ Ķ\næª Ĳ\næķ° çĽ®\nåī¯ ç§ĺä¹¦éķ¿\nä¸¤ åı¥\néļĲ çŀĴ\nåıĮ åıĮ\næīĭ æĦŁ\nèĳ¡ äº¬\néģĹ å¿ĺ\né¬ ¥\nè¿Ļä¸ª åľ°æĸ¹\nè¯´ çļĦè¯Ŀ\nå·¡ åĽŀ\nè¿Ŀ ç«ł\næī¾ å·¥ä½ľ\næĶ¯ çĲĥéĺŁ\nè£¡ éĿ¢\næĺ¾ç¤º åĩº\nèĩ³ å°Ĭ\nä¸¤ çº§\nåīį æ®µæĹ¶éĹ´\nçĺ¦ èº«\nèĤ¢ ä½ĵ\næ¯į è¦ª\næīĭç»Ń è´¹\næ±½è½¦ è¡Įä¸ļ\næİ© çĽĸ\næİ§èĤ¡ éĽĨåĽ¢\nåı£ å¾Ħ\næĶ¿çŃĸ æİªæĸ½\næµ· ç»µ\nåħ¨ éķĩ\näºĭ åħ³\nå¸Ń æī§è¡Į\nå¸Ńæī§è¡Į å®ĺ\néĤ£ æ¬¡\nåı¯èĥ½ åĩºçİ°\nä¸Ńå¿ĥ åŁİå¸Ĥ\nç¿» èº«\nä¹Ł ç®Ĺ\nä¾µ çķ¥\nåĸĩ åıŃ\næ¯ıæ¬¡ éĥ½\nè§ ħ\néĻ¢ éĻ¢éķ¿\nå§ĭ äºİ\nèŃ¦ åĬ¡\nèį¯ æĿĲ\nå±ł æĿĢ\næľ¬èº« å°±\néļıæĹ¶ éļı\néļıæĹ¶éļı åľ°\nåĶ® åįĸ\næĹłäºº é©¾é©¶\né¢ ħ\nåĵģ è³ª\nåĺ² ç¬ĳ\nè·ĳ åİ»\nåħĭ éĩĮæĸ¯\nçķ¸ å½¢\nä¿® é¥°\nçŁ© éĺµ\néŁ³ä¹Ĳ ä¼ļ\næŁ³ å·ŀ\né½ ¡\nä¼ļ è°Ī\næŃ£ çīĪ\nä¹Ł åĲĮæł·\næļ§ æĺ§\nè¡ĮæĶ¿ éĥ¨éĹ¨\nä¹ĸ ä¹ĸ\nèĤ¤ èī²\næĹ¶ ä»»\nçľŁ åĪĩ\næľĪ ä¸ĭ\næľĪä¸ĭ æĹ¬\nä¸ľæĸ¹ è´¢å¯Į\nè£ħä¿® åħ¬åı¸\néĢĢ è¿ĺ\nåĭĺ å¯Ł\nåĵ¥ ä¼¦\nåĵ¥ä¼¦ æ¯Ķäºļ\nçĭ¬ ä¸Ģ\nçĭ¬ä¸Ģ æĹł\nçĭ¬ä¸ĢæĹł äºĮ\nè°ĥ åĳ³\nåİĭ è¿«\nåħ¨çĲĥ æľĢå¤§\nåī¯ æł¡éķ¿\næĽ´ ä½İ\nåĪĨéĴŁ åĲİ\nåĽŀ ä¾Ĩ\nåĪ¶ åīĤ\nåĳĬè¯ī å¤§å®¶\nçĤ¹ éĴŁ\nåįģä¸ī å±Ĭ\nåĳ¨ åĽĽ\nè¿Ļæł· ä¸Ģ\nè¿Ļæł·ä¸Ģ æĿ¥\nèĭ Ł\næľĽ åİ»\næĪĲ è¯Ń\nå½ĵ åį³\nç¬ĳ å£°\nä¹ĭ åĬ¿\nåĪĳäºĭ æ¡Īä»¶\næĮĤ çĿĢ\nä½ķ ç§į\nå°ı æ¸¸æĪı\nåĽ½å®¶ æĪĺçķ¥\nåĨ· åĨ·\nå®ľ å®¾\næĲº ç¨ĭ\nè¶ĭ äºİ\nåıį çľģ\nå¸¸ è¯´\nä¸ĩ æĪ·\nåĥµ å°¸\nåįĥä¸ĩ åĪ«\nåıĳçİ° éĹ®é¢ĺ\nåı¯ çŁ¥\néĹ¨æĪ· ç½ĳç«Ļ\nåģ¥åº· äº§ä¸ļ\nåı³ è¾¹\næµ· è¿Ĳ\nè¿ĳ ä¹İ\nåĮ» æ²»\næĢ» ç®Ĺ\nä¸Ģ åĪĨéĴŁ\næĭ §\nä¹Ł æľīä¸ĢäºĽ\nä¾ĽçĶµ åħ¬åı¸\nå»ī ä»·\nå¸® ä»ĸ\næŃ¤æ¬¡ æ´»åĬ¨\nåıªèĥ½ è¯´\nèĬ ĭ\nçīĩ æ®µ\nåŃĺåľ¨ éĹ®é¢ĺ\nä½łä¼ļ åıĳçİ°\nè½® å»ĵ\nç½ĳ éĢļ\næ»¨ æ±Ł\næİĪ ä¿¡\né»İ æĺİ\nä¸į å±ŀäºİ\nçº¦ åįł\néķ¿æ²Ļ å¸Ĥ\nèĥļ èĥİ\nåħĥ ä»¶\néĻĨ åĨĽ\nè³¼ è²·\næĮĩ æľĽ\nå®ŀä¹ł çĶŁ\nçī¹çĤ¹ æĺ¯\nçıł æ±Ł\nçľĭ ä¸įåĩº\nä¸įè§ģ äºĨ\nç¼ ī\néĺµ èĲ¥\nåĶĲ æľĿ\næ²¡ å¿ħè¦ģ\nåĽ½åľŁ èµĦæºĲ\nç»ıæµİåŃ¦ å®¶\nåĲĪèĤ¥ å¸Ĥ\nçĲ¢ ç£¨\nç¡® åĪĩ\nåŁİå¸Ĥ åıĳå±ķ\nçŃ· åŃĲ\näººæ°ĳ æľįåĬ¡\næ»¡ åĪĨ\nè¿· ä¿¡\nä½ľèĢħ æľ¬äºº\næĸĩç«ł æĿ¥æºĲ\nç«Ļ ç«ĭ\næŀĦ æĪĲäºĨ\nè¾Ľ åĭ¤\nè¶ħ å¼º\néĶ ļ\nåīįä¸ī åŃ£åº¦\nå°± è§īå¾Ĺ\nå´ĩ é«ĺ\nè¶Ĭ ä¾Ĩ\nè¶Ĭä¾Ĩ è¶Ĭ\nå¸Ĥåľº èĲ¥éĶĢ\nç»¼åĲĪ ç´łè´¨\nåŃ ļ\nä¾® è¾±\näºĮ åŃĹ\nå·¥ä½ľ ä»»åĬ¡\nåı²ä¸Ĭ æľĢ\næľĢ ä¼ĺ\nåĲ© åĴĲ\nè¡¨ çĻ½\nèİ« åĲį\nèİ«åĲį åħ¶\nèİ«åĲįåħ¶ å¦Ļ\nå¹ £\nåĲĮå¿Ĺ ä»¬\nå»ºè®¾ çĶ¨åľ°\nåĦ Ģ\néħį åģ¶\nå¼ ©\nåĶ± çīĩ\næīĭ èĦļ\nåħ¼ ä»»\nåģľ æĶ¾\næŃ£ å®Ĺ\næĸ° åĨľæĿĳ\nåĤ¬ çĶŁ\næīĢ åŃ¦æł¡\nå¿µ ä½Ľ\nåĶ¤ éĨĴ\nåħ± åĪĽ\næĭī ä¸ģ\nèĥĮ çĿĢ\nçĶŁæĢģ ä¿ĿæĬ¤\nåı£ å¤´\næĸ¹åĲĳ çĽĺ\nèª¿ æķ´\næĭĽèģĺ ä¿¡æģ¯\nåħ¶ä»ĸ åĽ½å®¶\nç®Ģ æĺĵ\nåĮ¿ åĲį\nè¯Ħ æµĭ\næĺ¯ä¸Ģ åº§\nçīµ æīĭ\nè¶³ è¿¹\nçĲĨè§£ åĴĮ\næľĢ åıĹ\nå¿ĥ è·³\nçĪ¶ è¦ª\néĿŀå¸¸ åĸľæ¬¢\nèĭ¦ éļ¾\næĬĢ å¸Ī\næ°ĳ æĦı\næĪĺ åĽ½\næĽ¿ è¡¥\næ´¥ è´´\nä¸ŃåĽ½ ä¼łç»Ł\nåĲĦ è¡Į\nåĲĦè¡Į åĲĦ\nåĲĦè¡ĮåĲĦ ä¸ļ\nç¬¬äºĶ å±Ĭ\nèį· èĬ±\næĦı èŃĺ\nç¥¨ ä»·\nåĪĨ æµģ\næĿİ çĻ½\næ±Ł åĮĹ\næİĴ æĸ¥\nä½ĵ éĩı\nåĮħåĲ« äºĨ\nåĪĺ æŁĲ\nçİ° å¦Ĥä»Ĭ\nå·¥èīº åĵģ\nè¿Ļç§į æĸ¹æ³ķ\nåĬŀåħ¬ æ¥¼\nçĶµ å·¥\nçħ Ļ\nåį¡ çīĩ\nå¹´ å¹´åºķ\nä¸ĵé¡¹ èµĦéĩĳ\nåĮ» ç§ĳ\nåĮ»ç§ĳ å¤§åŃ¦\nåĽŀå¤´ çľĭ\nä¸į å±ĳ\nèĩª é©¾\næ²¡ æĶ¶\næīĵ çĮİ\nèĦ¸ éĥ¨\nåıĥ èĢĥ\nå°Ĩ å£«\nè´«åĽ° äººåı£\nçĲĨæĥ³ ä¿¡å¿µ\né£İ å°ļ\näººæīį éĺŁä¼į\nçĳ ¾\næĿ¥ è¿ĻéĩĮ\næ´Ĺ æ¶¤\nå¹´ èĸª\nèĭį çĻ½\nä¸ĩ äºĭ\nè¯¾ æľ¬\nåºĵ éĩĮ\nçī¹ æ´¾\nçī¹æ´¾ åĳĺ\nèµŀ ç¾İ\nç©¿ æĪ´\nè£½ ä½ľ\nèµŀ æĪĲ\nä¸Ģ ä¾§\nå½ĵåľ° äºº\næĭ İ\nçº¸ è´¨\nä½Ļ ä¸ª\néĶĤ çĶµæ±ł\næľº åŀĭ\néĻ¢ éĻ¢å£«\nåģļ å·¥\nå¼ł è´´\nç¥Ľ æĸĳ\næ®ĸ æ°ĳ\nå¥ĳ çº¦\næ¹ĺ æ½Ń\næĲ ĸ\nåŃĺ è´§\näº¤éĢļ å¤§åŃ¦\nè¶ģ çĿĢ\næĸĩçī© ä¿ĿæĬ¤\nå¤ĩ æĪĺ\néĩĩ çº³\nåįĬ æľĪ\næľĢ åħ³éĶ®\næľĢåħ³éĶ® çļĦ\næİ¥ éĢģ\næĶ¶ åī²\nåıį åĢĴ\nçĥ Ľ\næ ½Ķ\nä¼Łå¤§ å¤įåħ´\nçļĦè¯Ŀ è¯Ń\nå®¹ å¿į\nå®ļ éĩı\næķ Ĺ\nåĵģçīĮ å½¢è±¡\næīŃ è½¬\nåĽ½å®¶ éĩįçĤ¹\nèĨĿ çĽĸ\nä¸Ģ æ¥¼\nå¤§ éĻ¸\néĤª æģ¶\nåĽŀ åĳ³\nçĮ ¿\nçĿ¡ åīį\næĹł è¾ľ\nçĹħæ¯Ĵ æĦŁæŁĵ\næľºæ¢° åĮĸ\nçĤ¹ äº®\næº¶ è§£\nåĩłä¹İ æīĢæľī\nè·ĳ éģĵ\nçĶµè§Ĩ æľº\nåı ¨\næĳĩ äºĨ\næĳĩäºĨ æĳĩå¤´\nèĩª è´Ł\nç»¼åĲĪ åĪ©çĶ¨\nèĩª å¦Ĥ\nåİŁ ä¾Ĩ\nä¹Łä¸į æĥ³\nèĬĤ è¯¾\nè¿ĩ åī©\nçĶ² çĬ¶\nçĶ²çĬ¶ èħº\næĸ° ä¸ĸçºª\nèĩªä¸» åĵģçīĮ\né«ĺ å±Ĥæ¬¡\nä¸Ģ è§Ĵ\nè¡Į äºĭ\nç¥ĸ åħĪ\nå©ļ åĲİ\néĹ´ éļĻ\nç¼Ŀ éļĻ\nè¿Ļ æĶ¯\nä¸įæĸŃ åĪĽæĸ°\nå¾® åŀĭ\næĽĻ åħī\näº« çĶ¨\nä¸ŃåĽ½ ç§»åĬ¨\néĹŃ çİ¯\næī§ æĦı\nåıĳå±ķ æł¼å±Ģ\næł¸å¿ĥ åĮº\néªļ æī°\nåħļåĴĮ åĽ½å®¶\nä¸ŃåĽ½ æĶ¿åºľ\nå¸¶ èĳĹ\nä¸ĩåįĥ çĵ¦\nåħ© äºº\näºİæĺ¯ æĪĳ\nåĽº ä½ĵ\nçªģ å¦Ĥ\nçªģå¦Ĥ åħ¶\nçªģå¦Ĥåħ¶ æĿ¥\néĩĮç¨ĭ ç¢ĳ\nçĪ± ç¾İ\næŁ¥ éªĮ\nåıĮ èµ¢\néĹª åħī\næ¥¼ å®ĩ\næĻ ı\næľī è¶³å¤ŁçļĦ\næŁĶ æĢ§\nä¿¡æģ¯ å®īåħ¨\nç®¡ çº¿\nå¹¶ ä¸įä¼ļ\nåĻ¨ ä»¶\nä½ł åºĶè¯¥\nçĿĢ å®ŀ\næĺİ æ¸ħ\næĬĹ çĶŁç´ł\næīĵ æŃ»\nå®Įåħ¨ ä¸įåĲĮ\nèĬ± æ¤Ĵ\næĶ¾ å®½\nä½İ ç«¯\nåĽĽ èĤ¢\nåĮĹäº¬ èµĽè½¦\néĽĨ å¸Ĥ\næľª å©ļ\nå¤§å¹ħ æıĲåįĩ\nå»ºçŃĳ è®¾è®¡\nçĭ¬ æľīçļĦ\næİ¢ éĻ©\næ²³æµģ åŁŁ\næħķ å®¹\nè¢« çĽĹ\nåĵº ä¹³\nèı ģ\næĥ¬ æĦı\nè¶ĬæĿ¥è¶Ĭ å¥½\nå¹¿å¤§ ç¾¤ä¼Ĺ\nå¾· èĤ²\nå¸Ĥåľº ä»·æł¼\nå¥¥ å·´\nå¥¥å·´ é©¬\nèĬĤçĽ® ä¸Ń\nä¸¤ æ¬¾\nä¸ĩä½Ļ åħĥ\nç»´ å°Ķ\nçĶŁçī© ç§ĳæĬĢ\nåĲ¬ èµ·æĿ¥\nçł ļ\næĭŁ å®ļ\næ²¹ çĶ°\nå£° èªī\nå»ºçŃĳ ä¸ļ\néĻĲ è´Ń\nçīĩ åŃĲ\nçķľ ç¦½\nç½ĳ é¦ĸé¡µ\nä¼Ĺ çŃ¹\næĴŀ åĩ»\nåīį ä¸įä¹ħ\nåīį ä¸ĸ\nåĽĽä¸ª æĦıè¯Ĩ\næµĭ ç»ĺ\néĺ² ç©º\næ¼«éķ¿ çļĦ\næ²Ĳ æµ´\næ¯Ķè¾ĥ ç®Ģåįķ\næµĭ å®ļ\nåĽŀ è°ĥ\nè®© äººä»¬\nèĴĭ ä»ĭ\nèĴĭä»ĭ çŁ³\nç»ĵ æĻ¶\nå¢ŀæ·» äºĨ\næĿ¡ è¯Ħè®º\nåī¯ ä¼ļéķ¿\nä½ı æīĢ\nç»Ļ åĩºäºĨ\nè°ĥ éħį\næ² ĸ\næľī çĶ¨\næľīçĶ¨ çļĦ\nä¸ĢæĿ¡ é¾Ļ\néĩİ å¤ĸ\nç¼ĺ åĪĨ\næ°¸è¿ľ ä¸įä¼ļ\næŀľ æłĳ\nå¤§åıĳ å¿«ä¸ī\néº» éĨī\näºĳ éĽĨ\nåİ» åĵªéĩĮ\nåħ¥ å¸Ĥ\nä»» æĢ§\nå»º æ¡£\nå»ºæ¡£ ç«ĭ\nå»ºæ¡£ç«ĭ åį¡\nä¸Ģ æ£µ\nç¤¾ åįĢ\nçĽ¸ ä¼´\nåļ ·\nå¡« åħħ\nä¸Ģ æĹı\nç¾ ģ\nåıĸ è¯ģ\nèĪ° éĺŁ\nåİĤ åĮº\nè¡· å¿ĥ\nåıĳå±ķ éĺ¶æ®µ\né«ĺ å¼ºåº¦\nåĹĵ åŃĲ\né¢Ĩ è¡Ķ\næ¥¼ ä¸»\nå¤§ èĴľ\næŀķ å¤´\nç²® æ²¹\né»Ħ çĵľ\næĵ Ĵ\nå°ı çĭĹ\næĶ¹éĿ© å§Ķ\nåįģ åĪĨéĴŁ\né²ľ èī³\nåħ³ ç¾½\nçĭĢ æħĭ\nå®ŀçĶ¨ æĢ§\nå°ĳ è§ģ\né£ŀ æī¬\nçĶ° éĩİ\næĲ Ĥ\nè¿Ļä¸ª è¯į\nåºĶæĢ¥ é¢Ħæ¡Ī\nè§Ĵåº¦ æĿ¥çľĭ\næķ¬ çķı\næ³ķ å®Ŀ\nåĸĦ æĦı\næīĵ æĸŃ\nå¯¹ åĨ³\nçµķ å°į\nåĢŁ æŃ¤\nå¼Ģ æºĲ\nå°ı èªª\nç¥ º\nå²ģ ä»¥ä¸ĭ\néĢĢå½¹ åĨĽäºº\nä¸įä¹ħ åīį\nåĩº åİĤ\nè®½ åĪº\næĿ¥çľĭçľĭ åĲ§\néŃĶ åħ½\nçķĻ ä¸ĭæĿ¥\nå±ħ å®¤\nåłħ æĮģ\nçľĭ äºĨä¸Ģ\nçľĭäºĨä¸Ģ çľ¼\néĽĨåĽ¢ æĹĹä¸ĭ\næĪĺ æĪĺç»ĦåĲĪ\nè®¤çľŁ èĲ½å®ŀ\næ±½è½¦ äº§ä¸ļ\nçī©çĲĨ åŃ¦\næķ µ\néĴ Ŀ\nåĽ¢ éķ¿\nä¸įæĸŃ æī©å¤§\nèĤ© è´Ł\nåıĳå±ķ çĽ®æłĩ\nè³ĩ éĩĳ\nåīį ç½®\nä¸ŃåĽ½ åı¤ä»£\næŃ» åĪĳ\nåħħåĪĨ ä½ĵçİ°\nåħ³ éĹ¨\nç¾İ æĦŁ\næīĵ åħ¥\næĬĳéĥģ çĹĩ\nå°ĳ çĪ·\næłĳ æŀĿ\næ¶Īæģ¯ ç§°\næ´Ľ åħĭ\nåį ¯\nè¿Ī åĲĳ\næİ¨ åĭķ\nä»İä¸ļ èĢħ\nåİ» ä¹°\næ¬¢ å¿«\næĭ¥ æĮ¤\né©¬ æ¡¶\næĬĬ æİ§\næĶ¿ åħļ\nå¼ł æī¬\nå®¢ æłĪ\nçº¢ æĺŁ\néĢģ æĿ¥\nåħ¨åŁŁ æĹħæ¸¸\nèĩª ç§ģ\nåįģäºĮ æĿ¡\nåı¹ æģ¯\nä¸Ģ èīĺ\nä¿Ŀ è´¹\næĸ½å·¥ çİ°åľº\næľī å¹¸\nç»Ń èĪª\nåı¯èĥ½ æľĥ\nèĥĮ åıĽ\nä½£ éĩĳ\nä¸ī çŃīå¥ĸ\nå¾Ī æ»¡æĦı\næ¸¸æĪı åī¯æľ¬\nç¾¤ éĩĮ\næŀĦ ä»¶\nåºı å¹ķ\nå¤ª æ¹ĸ\næľ¨ è´¨\næĻĭ æ±Ł\nçµĤ æĸ¼\nè·³ è·ĥ\nåĢºæĿĥ äºº\nçŃī è¯¸å¤ļ\næĶ¾ åĩº\nåħ³éĶ® æĹ¶åĪ»\næĦŁæŁĵ èĢħ\né£ŀè¡Į åĳĺ\nèĥĨ åĽº\nèĥĨåĽº éĨĩ\næĬ± æŃī\nåĳ¨ äºĮ\næĸ° æĹ¶æľŁ\nåĨ·éĵ¾ çī©æµģ\nè¿Ļç§į æĸ¹å¼ı\nè¯¥ æĿĳ\nåĽŀ é¦Ī\nåŁºçĿ£ æķĻ\näºº åıĤ\næŀ¯ çĩ¥\næī¹åıĳ å¸Ĥåľº\nåħħåĪĨ èĤ¯å®ļ\nå¸Ĥ æĶ¿åįı\näºĭ æ¥Ń\néľ¸ çİĭ\nçĥŃ æĲľ\nåįģä¹Ŀ å¤§\nä¼´ æľī\nç¾İåĽ½ æĢ»ç»Ł\nåŁİå¸Ĥ ç®¡çĲĨ\nä¸ĭ ä»¤\nèĥ¸ åı£\nåıª çŁ¥éģĵ\nåĳ¨ ä¸ī\nçĶ¨ æĪ¶\néŃ ¯\nå¿ĥ è¡Ģ\nå¸¦å¤´ äºº\nåĮ» åĬ¡\nåĮ»åĬ¡ äººåĳĺ\næİ§åĪ¶ åĻ¨\nä½ľåĵģ åĨħå®¹\næĪĺ åıĭ\nåİĨ å¹´\nä¸į åħĭ\nä¸įåħĭ ä¸įåıĬ\næĹ¥ æŃ£å¼ı\nè±Ĳ å¯Į\nç¨İ è´¹\næĹ¶ æķĪ\nå±ķ ä½į\nè¡¡ éĺ³\næĪ¿ è²¸\nçĪĨ æ¬¾\nä¹Ĳ æĦı\nçĶ· ä¸»\nå¯ ¬\næľĥ èŃ°\nä¹ĭ å¤ľ\nåĲĮ æ¨£\nä¸įè¦ģ å¤ª\nä¼Ĭ æĸ¯\nä¼Ĭæĸ¯ åħ°\nåŁºæľ¬ åİŁåĪĻ\nåİ» æİī\nä½İ ä¿Ŀ\nä¸ª äº¤æĺĵ\nä¸ªäº¤æĺĵ æĹ¥\nèģĬ èģĬ\nåĽĽ ä½į\nåħļç»Ħ æĪĲåĳĺ\nä¸»è¦ģ ä»İäºĭ\nå½± éŁ³\nåĨĴ åĩº\nåĳ¼åĲ¸ éģĵ\nè¾¾ å°Ķ\næľ¨ åľ°æĿ¿\nè¯¡ å¼Ĥ\nçģ¯ åħ·\nçģ« çĥ§\nè§£ èĦ±\næĦĪ åıĳ\næ¹ĸ å·ŀ\né£İ ä¿Ĺ\næĸ° å½¢åĬ¿\næĸ°å½¢åĬ¿ ä¸ĭ\nè² Ŀ\nèĦ ĵ\nåĬ¨åĬĽ çĶµæ±ł\né£ŀ èĪ¹\néŁ§ æĢ§\nåĪ© çī©\nåĪ©çī© æµ¦\nä¸į è®¤è¯Ĩ\nç¼ĸ ç»ĩ\nä½ľ åĿĬ\nèģĮä¸ļ æĬĢèĥ½\nçľĭ è¦ĭ\nåĽ´ æ£ĭ\næĺı è¿·\nå½Ĵ å±ŀäºİ\næĤ¬ å´ĸ\néĨ« çĻĤ\nå®ĭ ä»£\nåºĦ æĿĳ\nèĹ ķ\nçĮĽ çĦ¶\nçĩĥæĸĻ çĶµæ±ł\nå®ŀä½ĵ åºĹ\nä¸įè¶³ ä»¥\næĥħ ç·\næĥħç· Ĵ\nå»Ĭ åĿĬ\nçĶµ åı°\nåºĶ åĬĽ\nä¸Ńå°ı åŃ¦çĶŁ\nèĥ¡ åĲĮ\néī´ åĪ«\nåĨħ ç½®\nä¹± è±¡\næ¬Ĭ çĽĬ\nå¼ĢæĶ¾ å¼ı\nåįļ æĸĩ\nè®² è¯¾\nçŃī åİŁåĽł\nç©· äºº\näº¤ æĽ¿\næĬ¤ çħ§\nåıĳå±ķ æľºéģĩ\nå®¢ åķĨ\nåıį ä¹ĭ\nç±³ é¥Ń\nå¹¶ åıĳ\nå¹¶åıĳ çĹĩ\næ±ī åŃĲ\næŀľ åĽŃ\nå¯¹æĪĳ æĿ¥è¯´\nåģı åĲĳ\næī¹ ç¤º\nè¯» åĲİ\nè¯»åĲİ æĦŁ\næĺİ æĻº\nåĽ´ çĿĢ\nåıį è½¬\næĿ¨ å¹Ĥ\nä¸ĵ åįĸ\nä¸ĵåįĸ åºĹ\nåıĹ éĻĲ\nåºŁ è¯Ŀ\næŀģ å°ĳ\nåįĪ åĲİ\nè¿Ľ ä¿®\nåīĬ åĩı\næľ¬ç§ĳ çĶŁ\nä¼ĺ éĢī\nåħī çħ§\nåıĻ äºĭ\nåıĸ æļĸ\nåĮĹ è·¯\næ¦ ķ\nèİĨ çĶ°\næ¥¼ å±Ĥ\nå¤© èĬ±\nå¤©èĬ± æĿ¿\nçĤ ľ\nå·²ç»ı æľīäºĨ\nè¶ ¾\nçĶ³ åįļ\nçĶµ éĺ»\nåĬŁ è¯¾\næŃ¥ æŃ¥\néĤ£ä¹Ī å®¹æĺĵ\næŃ¤ æĸĩ\nä½ °\nè®¡ è¾ĥ\nçīĩ éĿ¢\nçĶµå½± éĻ¢\nä¸į åħ¬å¹³\nä¸ī æľŁ\næĹħæ¸¸ èµĦæºĲ\nå¤ļç§į å½¢å¼ı\nè£Ĥ ç¼Ŀ\nåĲİ æİĴ\nç¡¬ åº¦\nåĽŀ æļĸ\néģĵ æķĻ\nè´« è¡Ģ\næ¸ħ é¦Ļ\nä¼¤ çĹħ\næĦı ç¾©\nçļĦ ç¼ĺ\nçļĦç¼ĺ æķħ\nåºĦ ä¸¥\nåıªæĺ¯ ä¸ºäºĨ\næīĵ æĬĺ\nä»¥ ä¾Ĩ\næ»¿ è¶³\nçİĽ ä¸½\né¢¨ éļª\næĸĩ ç§ĳ\néħįå¤ĩ äºĨ\nè¿Ľ é£Ł\næ¶ ¡\nè·¯ ç¨ĭ\nåı« å£°\nä¸Ńå¿ĥ åŁİåĮº\næľīæīĢ ä¸įåĲĮ\nå¼µ è²¼\né¢Ħ æĬ¥\næľīå¤ļ ä¹Ī\nè¿Ľè¡Į åħ¨éĿ¢\næĽ¾ ç¶ĵ\nä¸ī ä»£\nå®ı å¤§\næ¸ħ æī«\néĢī åĩº\nåĵª ä¸Ģä¸ª\nä¸» ç¾©\nä¾Ŀ æĵļ\nçļ® éĿ©\nèµ¶ æĿ¥\nçŃĽ æŁ¥\næ¨ Ł\nä¿Ŀ èįĲ\nåĲĥ æĥĬ\næľĭåıĭä»¬ å¯¹\nä»ĸ æĺ¯ä¸Ģä¸ª\nåºŁ æ°Ķ\næ» ħ\nè´¢ ç¨İ\næĿĳ æĿĳæ°ĳ\nèµĦäº§ è´ŁåĢº\nå®ī å¨ľ\nçĽ®åīį åĽ½åĨħ\næĦŁè§ī èĩªå·±\nçµĲ åĲĪ\néĶ¦ æłĩ\néĶ¦æłĩ èµĽ\næĽ´ æ·±\nåŁº æķ°\néħ¿ éħĴ\nçī¹èī² äº§ä¸ļ\nåİĭ å®ŀ\nä¾Ŀæ³ķ è¿½ç©¶\næ·¡ å®ļ\nç®ĢçĽ´ å°±æĺ¯\nå£ĵ åĬĽ\næ°ĳ å¿ĥ\nä¸į åĲĪéĢĤ\nçĶ±æŃ¤ åı¯è§ģ\nèµŀ èªī\næ¾ ¤\nåĩłå¹´ åīį\nåĲī ä»ĸ\nçł´ æįŁ\nè½»è½» åľ°\nå²Ľ å±¿\næĦı å¢ĥ\nä»Ģä¹Ī åı«\nåģĩ è£ħ\néĢģ è´§\nå¹ķ å¢Ļ\nå¦¥ åįı\nåĽ½ æĹĹ\näºĨ å¾Īä¹ħ\nåĪĨè¾¨ çİĩ\nç´ Ķ\néĺ³ åĮº\nåĩŃ çĿĢ\nåģľè½¦ ä½į\näº¬ éĥ½\néĶ £\næĵ ¾\nè¿Ľ éĹ¨\nåĪĺ æµ·\nåĽĽ çº§\nå¥³ è¶³\nè¡ĮæĶ¿ å®¡æī¹\néģ¥ æİ§\nä¸į éĮ¯\nå¾Ĺ å¾Īå¥½\nä¸º çĽ®çļĦ\nä»į æľª\nç²¾ è£ħ\néĢį éģ¥\nå°½ å¤´\nçºł ç¼ł\néłĺ å°İ\næĭħ è´Ł\næĪĸèĢħ åħ¶ä»ĸ\nåıªä¸įè¿ĩ æĺ¯\nåı® åĺ±\nåģĩ åĨĴ\næļĸ æ°Ķ\nçĽĲ åŁİ\nè¢« è§Ĩä¸º\nè¯º è´Ŀå°Ķ\nç»ĻäºĨ æĪĳ\nè¿ĳ åįĥ\néĩį åĽŀ\néĨĴ äºĨ\nçĶµ è§£\nå¿½çķ¥ äºĨ\nèĥĮ éĥ¨\næĸĩæĺİ åŁİå¸Ĥ\næº ħ\nè² ĵ\næĬµ æĮ¡\nåĸľæ¬¢ åĲĥ\néĿĻéĿĻ åľ°\nå¾Ī æ·±\nåŁºç¡Ģ çŁ¥è¯Ĩ\nè¿ĩ éĶĻ\nçĲĨ ç§ĳ\näº¤æµģ åĲĪä½ľ\nèĪ Ķ\nèª¿ æŁ¥\næħĪ æĤ²\néĴ °\nèĩ´ çĶµ\nå®£ä¼ł æ´»åĬ¨\nåıĺ éĩı\nçļĦäºº æĿ¥è¯´\næĹ¶ éļĶ\nä¸įç®¡ ä½ł\nçĽ¸ è¿ĳ\nè´µ éĩĳå±ŀ\nä¹Łä¸į åı¯èĥ½\nç²ī æľ«\nåįĹ çĵľ\nçĻ½ é©¬\nåħī æºĲ\néĩĳ å¥ĸ\nçĭ¬ è§Ĵ\nçĭ¬è§Ĵ åħ½\nå¦¨ ç¢į\nç»Ļ åĬĽ\nä½Ĩ ä»į\nå¼łå®¶ åı£\nèĲ¬ åħĥ\næ¸² æŁĵ\néķ¿å¤§ äºĨ\nè®°èĢħ äºĨè§£\næĢĢ çĿĢ\nè¦ģ åŃ¦ä¼ļ\næ¸¸æĪı ä»£\næ¸¸æĪıä»£ ç»ĥ\näºĮ çĻ¾\næĦıè¯Ĩ å½¢æĢģ\nçİ º\nè®¡åĪĴ çĶŁèĤ²\næī¾ åĩĨ\nåħ° èĬ±\nè¿Ļåº§ åŁİå¸Ĥ\næ±¡ æ³¥\nå®ĺæĸ¹ å¾®ä¿¡\nå½Ĵ å±ŀ\næ°§ æ°Ķ\néģİç¨ĭ ä¸Ń\nåį°è±¡ æ·±åĪ»\nç¨³ å¦¥\nçµĲ æĿŁ\nåŃķ æľŁ\nçī¹ æĿĥ\nåĿļ åĽº\né¡º åĬ¿\næŀľ èĶ¬\néĨ« å¸«\nåİ ®\nä¹Łæĺ¯ å¦ĤæŃ¤\né¦Ĵ å¤´\nçĽ¸ åĬ©\nå¹² çº¿\nä¸Ģ æľ¬ä¹¦\nç» ¥\næĮ¯ å¥ĭ\nèĤ¾ èĦı\nåĭķ çī©\né£ŀ è·ĥ\nèıľ åĵģ\nå¤ļ ä½Ļ\nå¤ļä½Ļ çļĦ\néĢĿ ä¸ĸ\næģĭ äºº\nå¼Ģåıĳ åĪ©çĶ¨\né¡º ä¸°\néĩİ å¿ĥ\næł¡ å¤ĸ\næģĲ é¾Ļ\néĿ¢ åħ·\néķ¿ è¾Ī\néļı å¤Ħ\néļıå¤Ħ åı¯è§ģ\nç´§ ç¼º\néĩį ä¸Ń\néĩįä¸Ń ä¹ĭ\néĩįä¸Ńä¹ĭ éĩį\nå¥¥ æĸ¯\nå¥¥æĸ¯ åį¡\nä¸Ģä¸ª å¤ļ\nä¸Ģä¸ªå¤ļ æľĪ\nä¸įåı¯ ç¼ºå°ĳ\næĸ° æł¼å±Ģ\næıĲ æĮ¯\nè¡Į è´¿\næ¼Ĥ æµģ\nèģĬ åŁİ\nåħ´ å»º\nè´¨ æ£Ģ\nç§ģæľį æ¸¸æĪı\næĽ´ éĩįè¦ģ\nè´ ®\nçħ ľ\nè½¬åıĺ ä¸º\nè¿Ļ ä¸¤å¹´\nä¿Ŀ é²ľ\næī§ æķĻ\nçĥ ¨\nå¼Ģåıĳ å»ºè®¾\nè¿ĲèĲ¥ ç®¡çĲĨ\nè¯¯ å·®\näº¬ åī§\nå¸Ĳ åı·\nå·¥ä½ľ ä½ľé£İ\nä¸ĸ ä¿Ĺ\nçĻ½ å®«\nå¤© åĽ½\nå¤©åĽ½ ç»§ç»Ń\nå·´ æĸ¯\nèĲ¥ åĪ©\nåĵģ æł¼\næĿĳæ°ĳ ä»¬\næĪ¿ è½¦\nçŃī çĹĩçĬ¶\nå¦Ĥ å®ŀ\nå® ¸\nå±Ĥ çº§\néĶĻ è¿ĩäºĨ\nç»ĵ å®ŀ\nç¬ĳ èĦ¸\nçľŁå®ŀ æĢ§\néĥ½å¸Ĥ æĬ¥\né¥Ń èıľ\nåºĶ æ³¨æĦı\næĬ½ çĥŁ\nä¼ª éĢł\nåīį ä¸Ģå¤©\néŃĶ é¾Ļ\néŃĶé¾Ļ ä»¤çīĮ\nçº¦ è°Ī\nç»ŁçŃ¹ æİ¨è¿Ľ\nè®© çĶ¨æĪ·\nåħ¨éĿ¢ èĲ½å®ŀ\nå¼Ħ å¾Ĺ\nè°Ī æģĭçĪ±\né¸Ł æĪĲéķ¿\né¸ŁæĪĲéķ¿ è®°\næ´ĭ æ´ĭ\nçĸı æķ£\néĿ¢ç§¯ çº¦\næµĵ ç¼©\næĸ¯ é¡¿\nçĶŁæĢģ åľĪ\næī§ å¯¼\nç§» éĢģ\né½¿ è½®\næł¹æľ¬ å°±ä¸į\nç¼© åĩı\nèµ° ä¸ĭåİ»\nçĿ« æ¯Ľ\nä¹Łä¸į éĶĻ\nåıįæĺł åĩº\nèĭ¦ æģ¼\nçĽ¸åħ³ æĶ¿çŃĸ\né«ĺ æ¥¼\nç²ī èī²\næĬķèµĦ é¢Ŀ\nä¸į ç»ı\nä¸įç»ı æĦı\nå®ģ æĦ¿\nèĪĮ å¤´\næ»ĭ çĶŁ\nå®ģ åİ¿\nåīįåĪĹ èħº\nåĩ ³\né£Ł æ¬²\nåıĸ èĥľ\néĻ¢ åŃĲ\nç´łè´¨ æķĻèĤ²\næ»¨ å·ŀ\næĬ¢ æĬĵ\nå¼Ĥ åĳ³\nåĴ ļ\nåĬ į\nå®½ éĺĶ\næļ´ æ¶¨\næĥł åıĬ\nè§Ħ ç¨ĭ\nä¾Ľ åħ»\néĢģ å¾Ģ\nå±± åºĦ\nä¸ľ äºļ\nå±ķ é¦Ĩ\nè§£ éĶģ\næĹł è§Ĩ\néĻį èĲ½\nè¿ŀ äºĳ\nè¿ŀäºĳ æ¸¯\nåıĤ è°ĭ\nçİ ĸ\nç¬ ĥ\nèĢĹ è´¹\næī¿ å¾·\nç¤¾ä¼ļ æķĪçĽĬ\nåįĹæµ· ç½ĳ\nåĪĽ ä¼¤\nèĲ ±\nåħħ æ²Ľ\nç½ĳç«Ļ å»ºè®¾\nå¤§ åºĨ\nåĨį éĢł\nåŃĹ æł·\nåħ¨æ°ĳ åģ¥èº«\nèĮ« èĮ«\næµ® åĬ¨\nåīį åı°\nå¢ŀ è®¾\néĢĽ è¡Ĺ\nåĢĴ éĹŃ\næ³ķå¾ĭ é¡¾éĹ®\nçĸ ®\nçĹħ çĹĩ\nç©º åīį\nè¯· æķĻ\nèĥľ ä»»\næĿĢ èıĮ\næĪĺæĸĹ æľº\nç»ĺ åĪ¶\nå¤Ħ æĸ¹\nçªģ åĽ´\nçĮ« åĴª\næĬ¥åĳĬ æĺ¾ç¤º\nç¿ Ł\nçķ¶ åľ°\næľĢ éļ¾\nçºª å§Ķä¹¦è®°\nä½İ åİĭ\nèĻļ ç©º\nè¿Ļéĥ¨ çĶµå½±\näº§ä¸ļ åįĩçº§\nè°· çĪ±\nè°·çĪ± åĩĮ\næĬ¼ éĩĳ\nå¥³ æĸ¹\néĴ» çłĶ\næļĹ æļĹ\nè¿· ä½ł\næīĢ è¬Ĥ\nå¨ģ å»ī\nå¼Ģ æľĹ\nå² Ķ\nçģ« çĤ¬\nåĲĪçĲĨ æĢ§\nåħ¬ åĬŀ\nä¼ļ ä¼ļéķ¿\néĺ´ è°ĭ\nå¼Ģ å±Ģ\næĻ®éĢļ è¯Ŀ\nåį¡ æĭī\nå°ĳ åĲĥ\néĹª èĢĢ\næŀľ æ±ģ\næī§è¡Į åĬĽ\nè° Ľ\næĬ¢ åĬ«\né«ĺéĢŁ åıĳå±ķ\néŁ ¬\nåįĹ æ²Ļ\né«ĺçŃī åŃ¦æł¡\næį¢ ä¸ª\nåı¯èĥ½ åŃĺåľ¨\næĬ Ĵ\nè°± åĨĻ\nè¢« æĬĵ\næĿ¯ åŃĲ\nèĬĤèĥ½ åĩıæİĴ\næ°ĶåĢĻ åıĺåĮĸ\nåĪĨ åĪ¥\nä¸Ń æŀ¢\næ¬¢ åĳ¼\nåħī çº¤\nè¿Ļ ç¾¤\nçľ¼ çķĮ\nåħ±åĲĮ åıĳå±ķ\nçİ° ä»Ĭ\néĹ» è¨Ģ\nçī¹èī² å°ıéķĩ\næķĳ äºº\néĻį æ°´\nä¸ĸçķĮ ä¸Ģæµģ\nå°± é¤Ĳ\nçŀ ¥\nå¤į ä»ĩ\nç¾½ æ¯Ľ\nç¾½æ¯Ľ çĲĥ\nè´© åįĸ\næºĲ æ³ī\næĢ»ä½ĵ è§ĦåĪĴ\nåĬ¨ æĦŁ\nä¸Ģ å®¡\nåĢŁ éĴ±\nè§ģ æķĪ\nèĬ± èįī\nåĲĮ ä¸ļ\næŁ¥ è©¢\nåĽ½éĻħ åĲĪä½ľ\nä¾Ľ åĽ¾\nåģ ´\næł ĵ\nçĽ¸ éĢļ\nè°Ī åıĬ\nè¿ĩç¨ĭ å½ĵä¸Ń\né¦Ļ èıĩ\nåįģåĽĽ æĿ¡\nä¸Ģå¼Ģå§ĭ å°±\nä¸ĵ åĳĺ\næĺİ é¡¯\næīĵéĢł åĩº\nä¸ĭéĿ¢ æĪĳä»¬\næľº æ²¹\nåı° è¯į\nåŃĲ å¼Ł\næľĢ å¸¸è§ģçļĦ\næĪĳ è®°å¾Ĺ\nç» °\næĤ¬ æµ®\nè¿ĺ çľŁæĺ¯\næĮĤ åı·\nåıĭ åĸĦ\néĩį ä¼¤\nçħ§ äº®\næŃ¦ èŃ¦\nåĩºçİ° éĹ®é¢ĺ\nè¸Ĭ è·ĥ\nåľ°çĲĥ ä¸Ĭ\nå¸Ĥ äººå¤§\nåıĹå®³ äºº\nå² Ĳ\nåĲĮ åŃ¸\néĩĳèŀį å¸Ĥåľº\næľīçļĦ çİ©å®¶\nå¸Ĥ æķĻèĤ²\nå¸ĤæķĻèĤ² å±Ģ\nåĲĦ å¼Ĥ\nç·ļ ä¸Ĭ\næģ º\næľī å¤§éĩıçļĦ\nåķĨ æĬ¥\nåįķ åįķ\nåħ¨ é¢Ŀ\nä¾ĿæĹ§ æĺ¯\nå¥½ åĩłä¸ª\nåĸ µ\néĩį æķ´\nçĶŁæ´» è´¨éĩı\næİ¢ è®¿\nåį° èĬ±\nçĽĽ è¡Į\nå¾® è§Ĥ\nèĪį å¾Ĺ\nåºŁå¼ĥ çī©\nç§¯ èĵĦ\nå®ļ å±ħ\næĤ ¼\nèĮ ¸\nçļĦ å¸®åĬ©\nçļĦå¸®åĬ© ä¸ĭ\näº¿ åĲ¨\nåŃĶ éĽĢ\nè¿ĻæĿ¡ è·¯\né¥ µ\næĦĪ åĬł\néķ į\nä½ľ æ¡Ī\nèįĶ æŀĿ\nå¤ª å°ĳ\nè·» èº«\nåħ¬çĽĬ æ´»åĬ¨\nçĻ½ æĸĳ\næĬĢæľ¯ æ°´å¹³\nå¸ §\næĹł çŁ¥\nåºĶè¯¥ æĢİä¹Ī\néĢĢ å¸Ĥ\næ¸ Ń\nåħ» çĮª\né© ¼\nç¾¤ å²Ľ\nå¤§ åį«\nä¹ĺ çĶ¨è½¦\nèı² å°Ķ\nè´´ åĲ§\nåģľ ä¸ĭæĿ¥\næľīæľº ç»ĵåĲĪ\nåĪ» èĭ¦\nçļĦ åľ°\nçļĦåľ° æŃ¥\nè¯Ĭ æīĢ\nå¼Ģ æĪĺ\nèĢģ çīĮ\nçŃ¹ çłģ\nåħ«å¤§ ä»¥æĿ¥\næ¥¼ æĪ¿\nåŃĻ æĤŁ\nåŃĻæĤŁ ç©º\nåħĴ åŃĲ\nç¬¬ä¸Ģ æĿ¡\nç¤¾äº¤ åªĴä½ĵ\næĥ³ èµ·æĿ¥\nå¤§ æ´ĭ\næĭ¼ éŁ³\nè¿Ľ åįļä¼ļ\nè¿ĩ åħ³\næ² ¼\nç©¿ æĲŃ\néĤ£ ä¸Ģå¤©\nçł´ éĹ¨\næĬķæłĩ äºº\nèµ¢ å®¶\nèĻļ å¼±\næ¿ ĥ\nå®ī æ£Ģ\nå®¢ å®¶\nçĭ¬ç«ĭ èĳ£äºĭ\næīĭ åĬ¿\nåīµ éĢł\nåľĨæ»¡ å®ĮæĪĲ\nä¸ºä¸» çº¿\nå¥½å¥ĩ å¿ĥ\né¢Ĩ åľŁ\nçª ĸ\nåħ¸åŀĭ æ¡Īä¾ĭ\nçªģåıĳ äºĭä»¶\nåºķ æ°Ķ\nå¤´ æĻķ\nå®Ľ å¦Ĥ\nè§ ¸\næ¸ħ æ·¡\nåļ ¼\nåģľ çĶµ\nç²ī å°ĺ\néĻįä½İ æĪĲæľ¬\næĶ¾ æīĭ\nè®°èĢħ è¡¨ç¤º\næĭĸ å»¶\néª ĩ\næ®ĭ å¿į\nçľģ æķĻèĤ²\nçľģæķĻèĤ² åİħ\né«ĺ é¢Ŀ\néĦ Ļ\næ¥ ŀ\nåĨħ ç§ĳ\nèĲ¥ä¸ļ é¢Ŀ\nåŁº çŁ³\næµģ æ·Į\nä¸» æĹ¨\néĺĲ éĩĬ\nå»º åįİ\næĥĬ åı¹\nçī¢åĽº æłĳç«ĭ\næĺ¯åĲ¦ åŃĺåľ¨\nå»º åĨĽ\néĽ¾ éľ¾\nåħ¬ è®¤\nåħ¬è®¤ çļĦ\næ°¨ åŁº\næ°¨åŁº éħ¸\nåīį åĩłå¹´\nåĪ¹ éĤ£\næ±Ł ä¸ľ\nå·¥ æ¥Ń\nä¸ĢçĤ¹ ä¹Łä¸į\nä¿® å£«\näºĨä¸Ģ éģį\nåĪ ģ\næ»ļ æ»ļ\nåĪĨ æł¡\nçľŁ çĪ±\nè¡Ģ èĦī\næĢ¥ åī§\nä¸Ģç¾¤ äºº\nç¾ ¯\næĪĲ é¾Ļ\nç²¾ç¥ŀ çĹħ\nçĽ¸åħ³ äººåĳĺ\néĿĵ ä¸½\nä¸ī åŃ£åº¦\nåĪĴ å®ļ\nä¸ĸçķĮ ç¬¬ä¸Ģ\néĢļ ä¿Ĺ\nåķĨä¸ļ åľ°äº§\nåĬŁèĥ½ æĢ§\nèµĦæľ¬ ä¸»ä¹ī\nè¯¦ è§ģ\næĬĵ æįķ\næĸĩ æĺĮ\nå®Ŀ å®ī\nè£ħéħį å¼ı\næºĲ æºĲ\næºĲæºĲ ä¸įæĸŃ\nçĶŁ æĢķ\nçºµ åĲĳ\nå£ ½\nçľ¼ è¢ĭ\nèĤī ä½ĵ\nåı¤ ä»Ĭ\nèŀį åªĴä½ĵ\nåģ ī\næł¼ æľĥåĵ¡\nçĥ ·\nåĬŁ çĶ¨\næīŃ çŁ©\nç»¿èī² éĢļéģĵ\nåī§ ç»Ħ\nå¼± åĬ¿\nè´¨éĩı éĹ®é¢ĺ\néĻĲ é¢Ŀ\néª Ĩ\néģµ ä¹ī\nå¯Ŀ å®¤\næĥ³ å¿µ\nåł± åĳĬ\nä»ħ æ¬¡\nä»ħæ¬¡ äºİ\nèŀį åĪĽ\næĭĽèģĺ ä¼ļ\nåºĬ åŀ«\nè½¬åŀĭ åıĳå±ķ\nä¸ŃåĽ½ çĶµä¿¡\nåĲ¬ è¯Ŀ\nè«ĭ æ±Ĥ\nå¤§éĥ¨åĪĨ äºº\næ´» å¾Ĺ\nåĵŃ æ³£\nè¶ Ļ\nåıĳçĹħ çİĩ\nä¸į ç¬¦\nåĨĽ å®ĺ\né¢Ī æ¤İ\næĸ°åĨł çĸ«æĥħ\næŁ¬ åŁĶ\næŁ¬åŁĶ å¯¨\nä»»ä½ķ å½¢å¼ı\näºº éĻħ\näººéĻħ åħ³ç³»\næĢ» æī¿åĮħ\nå¹³åĿĩ æ¯ı\næģŃ åĸľ\nåĦ ĺ\nåħµ é©¬\nè¿Ł åĪ°\nå·¥ ä¼¤\nçīĪæĿĥ å½Ĵ\nçīĪæĿĥå½Ĵ åİŁ\næĭ¥ æĬ¤\nç³Ĭ æ¶Ĥ\nå¹² æ¶ī\nå°ĳ ä¸įäºĨ\næĥ³ æī¾\nè´¹ çİĩ\nè¯¥ éĻ¢\nèŀį åĮĸ\nè¿İ åĲĪ\nè§ĨåĲ¬ èĬĤçĽ®\næł¼ ç¶²ç«Ļ\nçľī æ¯Ľ\næ¬¢è¿İ å¤§å®¶\nå®¶åºŃ æķĻèĤ²\nä¾µ èļĢ\nç»Ļ ä½łä»¬\nè¡Ģæ¶² å¾ªçİ¯\nå¯Ħ æīĺ\nå°ĸ åı«\nä»¥ä¸ĭ åĩłä¸ª\nè¿ĺ ä»¥ä¸º\nåħ¶ä»ĸ çİ©å®¶\nç¬ĳ ç¬ĳ\næīĵ åĲ¬\nèĩªçĦ¶ ç§ĳåŃ¦\nåŁº ç«Ļ\nä¹Ŀ å·ŀ\nä¿Ŀ é©¾\nä¿Ŀé©¾ æĬ¤\nä¿Ŀé©¾æĬ¤ èĪª\næĶ¾ çľ¼\nçŁ¥åĲį ä¼ģä¸ļ\nç¸ ®\nç¨ ½\næļ ĩ\nä½¿çĶ¨ ç¶²è·¯\né¢Ħ çķĻ\nå¤§ è±¡\nåıĳæĺİ ä¸ĵåĪ©\næĸĩ å¨±\néĢł ç¦ı\næ¹¿ æ¶¦\néĿ¢ æĿ¡\næ¶Īè´¹ åįĩçº§\nè®Ĭ å¾Ĺ\nåĩł åĲį\nä» Ħ\nè®¤ æ¸ħ\nè¿ľ æĻ¯\næıĴ åº§\nè¯¸ ä¾¯\nåıĺ æĢģ\nç¦ı å½©\nè´§ æŀ¶\nå¤± æİ§\nç§»åĬ¨ ç«¯\nä¸Ĭ åı¸\néĢł çº¸\nå¸ĥ æľĹ\nçĴ ĩ\nåı° åįĹ\nåĮĹäº¬ åĨ¬å¥¥\nèĵĿ çīĻ\néķ¿ çŁŃ\næĬĺ å°Ħ\nç»ĳ æŀ¶\nå¯Ĵ åģĩ\nè½¬ åŁºåĽł\næĢ¥ äºİ\næŃ£ åĵģ\nåħħ æ»¿\nå¤§ çº²\næĬĹ ä½ĵ\nè¨ĵ ç·´\næĶ¶ ç´§\næ¯Ķ è³½\nåħµ åĬĽ\næľ¬ æĽ¸\näºĮ ä»£\næĢ¥ è¯Ĭ\næĸĩ æ¡Ī\nç»ı åķĨ\næĻ¨ æĬ¥\næ£ ĺ\næĢ»ä¹¦è®° åľ¨\nåıĹ éĤĢ\näºĶ åĽĽ\nå²Ń åįĹ\nçĪ± åĲĥ\nåŁĥ å°Ķ\nå¿ĥ å¢ĥ\nè¦ĨçĽĸ éĿ¢\nå®ŀåľ¨æĺ¯ å¤ª\næł¹ åºķ\nçº·çº· è¡¨ç¤º\nåĹ ħ\néļıçĿĢ æĹ¶éĹ´\nåİĨåı² æĤłä¹ħ\néħ ī\næĢ» éĺŁ\nä¸»é¢ĺ æ´»åĬ¨\néĹ® åį·\né©¿ ç«Ļ\næı¡ ä½ı\nåı¯èĥ½ å¯¼èĩ´\næ°ĳ éĸĵ\néĸĭ åķŁ\nä½Ĩ ä¸įéĻĲ\nä½Ĩä¸įéĻĲ äºİ\nåįģ éĩĮ\nå¨ ¥\næįŁ èĢĹ\nçĸı å¯¼\nçİ¯ æ°§\nç¥ŀ éĢļ\nçĪ± å°Ķ\nçĪ±å°Ķ åħ°\næľ´ å®ŀ\nå¿« æĬ¥\næĶ¶ åıĹ\næĪĸ è¨±\nèĥĮ éĿ¢\næĸĩåĮĸ ä¼łåªĴ\nä¸ī åĢĭ\næĶ» åĬ¿\nå®ī ä¸ľ\nå®īä¸ľ å°¼\nåĿĩ å·²\né¡¾ èĻĳ\néĦ Ń\nè¿Ļå®¶ åħ¬åı¸\nåħ¬åĳĬ ç§°\næıĲä¾Ľ ä¼ĺè´¨\nç¨³æŃ¥ æİ¨è¿Ľ\nå¤į è¯ķ\nå°Ĩ é¢Ĩ\nè°Ī èµ·\nå¨ Ħ\nè¿ŀ çº¿\næ©Ł éĹľ\nåºĶçĶ¨ åľºæĻ¯\nçĶ» åĥı\nè´¢ è¿Ĳ\nä¿Ŀ éļª\nçĹħ çĲĨ\næ¯Ľ ä¸»å¸Ń\nä¸Ŀ æ¯«ä¸į\nçĪ± å¥ĩ\nçĪ±å¥ĩ èīº\nä¸ĵå®¶ ç»Ħ\nåĳ¼ åĶ¤\néĭ ¼\nçģ ¸\né¢ĨåħĪ åľ°ä½į\næıĲ æĭĶ\néľ¸ éģĵ\nå±± åĿ¡\nèĿ İ\næ²¸ èħ¾\nè¯¥ é¡¹\nä»Ĭ çĶŁ\nä¸Ģç¯ĩ æĸĩç«ł\næĸ¹å¼ı è¿Ľè¡Į\né»ĳ å®¢\næĶ¹ åĬ¨\nä¸» é¡Į\næķ£ å¸ĥ\nä»Ģä¹Ī åľ°æĸ¹\nåĮĸ åĲĪ\nåĮĸåĲĪ çī©\néĿĻ çĶµ\næĢ» æĶ¶åħ¥\nå§Ķ ç»Ħç»ĩ\nå§Ķç»Ħç»ĩ éĥ¨\néĿĻ æĢģ\nèĢģ åŃĹåı·\nå®¤ åıĭ\néĥ½ä¸į æķ¢\næŀ¶ åŃĲ\nçģµ æķı\nå®¡ è§Ĩ\næĤ£ åĦ¿\nå±± å¯¨\nèĸª èµĦ\né©° æı´\néĥ¨åĪĨ åĨħå®¹\nå¥½ ä¼¼\næĪĲåĳĺ åĽ½\nåľ¨æĪĳ çľĭæĿ¥\nåħ³æ³¨ åº¦\néĻĪ æŁĲ\nè¿Ļç§į äºĭæĥħ\néĢī å®ļ\nç²¾ åŃĲ\nå£ģ çĶ»\næ±Ł æ·®\né«ĺ æĺĤ\næł¼ åĬĽ\nè¼ ©\nåŃ¦ åłĤ\næĤ¨ åĲĮæĦı\nä¸ĢåĪĩ éĥ½æĺ¯\næ½ ¤\néĸ ĥ\nå¸ĮæľĽ èĩªå·±\nä¿ ĺ\næ±Ł åİ¿\næ³ ¾\nç§ĳ æķĻ\næīĵ è¿Ľ\nä¸į æħİ\nå¯Ĵ åĨ¬\næ¸Ķ æ°ĳ\néĽ· æĸ¯\nä¸» å®°\næĹħæ¸¸ åº¦åģĩ\nçĶµåŃĲ éĤ®ä»¶\næ±Ĥ å©ļ\néļİ æ®µ\nåģ¥èº« æĪ¿\næ³¨æĺİ åĩºå¤Ħ\näºĭæķħ åıĳçĶŁ\nçº§ ä»¥ä¸Ĭ\nåŃĺ æ´»\næĸ½ èĤ¥\nèľľ èľĤ\nåµ ©\næĮĸæİĺ æľº\næĬĹ æĭĴ\nä¼ł å¯¼\næĺ¯ä»Ģä¹Ī åĳ¢\nä¸Ĭå¹´ åĲĮæľŁ\nå»º åħļ\nçĶŁ æħĭ\nä¿Ŀ ä½ı\næ¬¾ è½¦åŀĭ\näºº èĦī\néļĲ èĶ½\nå¤± æķĪ\néģ¿ åŃķ\nç®Ģ ä¾¿\nè°¢è°¢ ä½ł\nå®Ī ä½ı\næĶ¾ æĺł\nè¨Ī çķ«\nçİ°ä»£ çī©æµģ\né¤Ĳ å»³\næķħ å±ħ\nå¤§ å¤§å°ı\nå¤§å¤§å°ı å°ı\nçī¹åĪ« å£°æĺİ\néģį åıĬ\nå¿ĥçĲĨ åĴ¨è¯¢\nè³ ´\nçĮ® è¡Ģ\nå·²ç»ı è¾¾åĪ°\næīĵ æĭĽåĳ¼\nåıĮ è¾¹\nä¸Ģæĸ¹éĿ¢ æĺ¯\nå´ĩ å°ļ\néĺ¿ å¯Į\néĺ¿å¯Į æ±Ĺ\næĮģ æľīäºº\nè± ģ\né£İ çŃĿ\nåĬ¨ èį¡\näºĨä¸Ģ ä¼ļ\näºĨä¸Ģä¼ļ åĦ¿\nä¸ĩ è±¡\nçľĭ çĶµè§Ĩ\nåįģä¸ī æĿ¡\nçĮĽ çĥĪ\nè¦ģ ä¸įçĦ¶\nå¤ªæŀģ æĭ³\nå¼ķ çĪĨ\nç»ıè¿ĩ å¤ļå¹´\næ¸¸æĪı éĩĮçļĦ\né¾Ļ æ³ī\næłĩ éħį\nè®ĵ ä»ĸåĢĳ\néĢł æŀĹ\nåĮºåŁŁ æĢ§\näº¿ ä¸ĩ\næĪĺçķ¥ å¸ĥå±Ģ\néķĩ æĶ¿åºľ\nåĶ® ç¥¨\nçĶŁäº§ å·¥èīº\néķĩ åħļå§Ķ\nä¸Ńå°ı åŀĭ\næľ¨ èĢ³\næ²³ è¾¹\nèĦ¾ èĥĥ\næ¬¢è¿İ æĤ¨\nåıĺ å¼Ĥ\nç¼¤ çº·\nåŀĥåľ¾ æ¡¶\nè¾© è¯ģ\nè½¦ åºĵ\næ¯Ķ çİĩ\nåħ´ æĹº\nè¯¦ç»Ĩ äºĨè§£\nå®ī å±ħ\nçħ§ æĸĻ\næĸ¹ æīį\nèµ ¦\nåĨ ķ\nå¥Ķ èµ´\nå®Ŀ é¸¡\nåľº åĿĩ\nçĽ®åīį æŃ£åľ¨\nåĲŀ åĻ¬\nè¿° èģĮ\næĩ µ\nå¥ĩ çĳŀ\nä»į å°Ĩ\nèĪī è¾¦\nå·¥åķĨ å±Ģ\nå¡ĳ èĥ¶\nåĬŀ å®ŀäºĭ\næĸ¹ æĸ¹éĿ¢\næĸ¹æĸ¹éĿ¢ éĿ¢\næĸĩåĮĸ èĬĤ\nåħ¥ èģĮ\né¸ ¥\nç©¿ éĢı\nä»¥ ä¹łè¿ĳå¹³\nåį± éļª\næľ¦ èĥ§\nåİĨåı² æĢ§\næķŀ å¼Ģ\nä¼Ļä¼´ åħ³ç³»\nçŁ¿ åĮº\nåĽ½éĻħ åľ¨çº¿\nä¼łå¥ĩ éĩĮéĿ¢\nè¿ĳ äºĽ\nè¿ĳäºĽ å¹´\nåĬ£ åĬ¿\næĶ»åĩ» åĬĽ\næĻº éĢł\nç¦ §\nçİĭ åħĪçĶŁ\néĨ« çĶŁ\nåĽĽ é¡¹\nå®ŀ æĻ¯\nåĪĿ åĪĽ\nå¿ĥ è£¡\næĻ¶ ä½ĵ\näº¤ éĻħ\nè®© æ¶Īè´¹èĢħ\nè¯¾ æĸĩ\næİĴ æ°Ķ\nå¹¶ä¸į æĦıåĳ³\nçĽ¸ å£°\nç¬¬ä¸Ģ å±Ĭ\nåİŁ èĳĹ\néĽ ľ\næ²¡æľī å¤ªå¤§\nè¡¥ æ°´\nçī©æµģ ä¼ģä¸ļ\nç¬¬äºĮ æī¹\nåħ¶å®ĥ éĹ®é¢ĺ\næİĮ éĹ¨\nè´£ä»» å¿ĥ\né¤Ĳ åħ·\nç¾Ĭ æ¯Ľ\næ²¡æľī å¿ħè¦ģ\nä¹Ĳ åĽ¢\nè¿Ľ åŁİ\nä¸ĢçĤ¹ åĦ¿\nèº« å½¢\nçļ®èĤ¤ çĹħ\næĺ ±\nå¢ŀ èĩ³\nèģ² æĺİ\næıĲ è´¨\nä½ĵèĤ² åľº\nçŃ¹ å»º\né¬ Ĩ\nè½¦ çīĮ\néļĶ éŁ³\nè´Łè´£ åĲĮå¿Ĺ\nä¸° ç¡ķ\nä½Ľ éĻĢ\näºī åĲµ\nåº ¶\næ·¡ æ°´\nå°ı çĶ·åŃ©\nç§ģ èĩª\nåĮĸ è¿Ľç¨ĭ\næĪĺå£« æĿ¥è¯´\næ²¹ èħ»\nèĦ±è´« èĩ´å¯Į\næĹ¥å¸¸ å·¥ä½ľ\näº¤ èŀį\nåĨľ è´¸\nåĨľè´¸ å¸Ĥåľº\nåĵĪ çĻ»\nçĶµ è´¹\nèµ ĺ\nåıĮ èħ¿\næĵĶ å¿ĥ\næĿ¥ å½¢å®¹\nä½¿åĳ½ æĦŁ\néĤ£ä¹Ī ç®Ģåįķ\nèĬĻ èĵī\nåĢŁæ¬¾ äºº\nç§Ģ ä¸½\nè®ĵ ä»ĸ\nä¸¥åİī æīĵåĩ»\nè³ ŀ\næļ «\nçħ¤ æ°Ķ\nçĪ¬ ä¸Ĭ\næ½ĩ æ´Ĵ\nå¤ª ä¹ħ\nåĳ½ åĲįä¸º\nè·¯ çĶ±\nè·¯çĶ± åĻ¨\né© ¯\næıĲ æĹ©\næĬĹåĩ» çĸ«æĥħ\nåĩ Ľ\näº¤ åıĭ\néĶĢåĶ® æ¸łéģĵ\næ¯«ä¸į çĬ¹è±«\nèĲ¥ åľ°\nçłĶç©¶ è¡¨æĺİ\né±¼ ç±»\næį¢ å±Ĭ\næİ¡ åıĸ\nçī Ĩ\nçĽĽ å¼Ģ\næ²§ æ¡ĳ\nåºŃ å®¡\nç»ı æŁ¥\nåĬł å¼·\nçĽ¸æ¯Ķ äºİ\nä¸ĵ çıŃ\nä½ĵ åŀĭ\nè¢« å®³\nè¢«å®³ äºº\næĶ¶ æ¬¾\nåħ·æľī èī¯å¥½\né«ĺå³° æľŁ\nåģı ä½İ\nåĦ Ł\nåĨľä¸ļ ç§ĳæĬĢ\nçī¹æ®Ĭ æĥħåĨµ\nå¦Ĥæŀľ çİ©å®¶\néķ¿ çº¦\nç¬¬åħŃ å±Ĭ\nåħ¬å¼Ģ æĭĽèģĺ\nåĪĩ æĸŃ\nè¿« ä½¿\nçĸĹ ç¨ĭ\nç¬¬äºĮ ç§į\nä¸į åħį\nå¹² èŃ¦\nçŁ³ æ¦´\nåĹ £\nä¸¤ ç±»\nçĪµ å£«\nåŁİä¹¡ å±ħæ°ĳ\næŃ¤ é¡¹\nçĽ´ è¾ĸ\nçĽ´è¾ĸ å¸Ĥ\nåĳ¼ åºĶ\néĴ ¯\nç¦ı å¾·\næľº èº«\næĵį åľº\næ¿Ĵ ä¸´\näººç¾¤ ä¸Ń\nèĤ¡ æ°ĳ\nåŃ ½\næ³ķ åħ°\né¨ İ\nç³¯ ç±³\næĢ» çļĦ\næĢ»çļĦ æĿ¥è¯´\nåħ¸ éĽħ\næĸ° éĻĪ\næĸ°éĻĪ ä»£è°¢\nçĽ® çĿ¹\né¢Ħ è¨Ģ\nè·Į çł´\næĸ° ç¯ĩç«ł\næ¯Ĵ æĢ§\nåĸĿ èĮ¶\næŁ¥ èİ·\näº® ä¸½\nçĶŁäº§ åķĨ\næĶ¹ æĪĲ\nä¸ºäºĨ æĽ´å¥½\næ·± äº¤\næ·±äº¤ æīĢ\næİ ĥ\nä¹Ļ èĤĿ\næ³¸ å·ŀ\nåħĪè¿Ľ æĬĢæľ¯\nè¾ĵ ç»Ļ\næķ£ æĪ·\næĢĿç»´ æĸ¹å¼ı\nåºĹ ä¸»\nè°ĭ æ±Ĥ\næ¸¸æĪı æĬĢå·§\nä¸Ģå¹´ çº§\nçľ¼ è§Ĵ\nä¸Ńä»ĭ æľºæŀĦ\nå·§ åĲĪ\néĺ² çĽĹ\nå¯¼ è´Ń\næĪ Ĭ\næĽ´ éĢĤåĲĪ\nåŁºæľ¬ ä¿¡æģ¯\né©¬ ä¸ģ\nåħ»æ®ĸ åľº\nåıį è¿ĩæĿ¥\næİ¨ å´ĩ\nå¯ĨåĪĩ åħ³æ³¨\nåŁºéĩĳ ç»ıçĲĨ\næĮī éĶ®\nåĨħéĥ¨ æİ§åĪ¶\næĪĲåĳĺ åįķä½į\næľ¯ è¯Ń\nåĪ¶ æľį\nåĪļ éľĢ\næ£Ģ ç´¢\nå¤§å¤§ æıĲé«ĺ\nåģ¥åº· ç®¡çĲĨ\nèĩª æŃ¤\nå®¢æĪ· éľĢæ±Ĥ\nä¸° èĥ¸\nèµ· éĩį\nèµ·éĩį æľº\næ¬ł ç¼º\næ¡Ī åŃĲ\næĥħäºº èĬĤ\nåħļ æł¡\nè¢ ľ\nè¯¥ åī§\nè¿·å¤± ä¼łå¥ĩ\nç»ļ ä¸½\nåķ ª\næĹł ç§ģ\néĢ² ä¸ĢæŃ¥\nç¬¬ä¸Ģ ç«ł\nåĻ¨ åħ·\nåĨľ èµĦ\nç¢º å¯¦\nåºı åĪĹ\nå¨±ä¹Ĳ å¹³åı°\nèŀįèµĦ ç§Łèµģ\nèµĦæºĲ åħ±äº«\nèģ½ åĪ°\næĲŀ å¾Ĺ\nç»§ç»Ń ä¿ĿæĮģ\nåĲ¯ èĴĻ\nçľ º\nä¸Ŀ è·¯\nè®¾æĸ½ å»ºè®¾\næİ¥ åľ°\næİ¥åľ° æ°Ķ\nç¬¬ä¸ī åŃ£åº¦\nåŁº è°ĥ\nåıĳ éŁ³\nç¤¾ä¼ļ èµĦæľ¬\néĽĩ ä¸»\nè¿ŀ èĥľ\næ²¡ åķ¥\nå» ¢\nèµ¶ èµ´\næ¼Ķ åĮĸ\nåı¤ æĢª\nçİĭ çĪ·\né¢Ħ åħĪ\nå¼Ģ åħ·\nåĽŀ é¦ĸ\nåľ°ä¸ĭ æ°´\nå°ıç¼ĸ ä¸Ģèµ·\nèµİ åĽŀ\nåľ° è²Į\nåĪĿ ä¸ī\nåı¯ çĶ¨äºİ\néģĹ è¿¹\nè¿Ļ æī¹\nèĸª æ°´\nå¿ħçĦ¶ ä¼ļ\næ² ½\néį ĭ\nç¬¬ä¸Ģ éĥ¨\nåĪĬ çī©\nå®ŀ ä¾ĭ\næ¸ħ åĩĢ\nä¸Ĭ èµĽåŃ£\nåĽ¾ è¡¨\néĤ® è½®\nåĵª è£¡\nçĽ¸ è§ģ\næī° ä¹±\næ¯ı æ¯ı\nè¿Ļ è¾ĪåŃĲ\nç¡« éħ¸\näºī çĽ¸\næº¯ æºĲ\nåĩº ä¼Ĺ\nçİī çŁ³\nåħ± çĶŁ\næĹ¶éĹ´ æ®µ\néĩįè¦ģ æĮĩç¤º\næ¶Īè´¹ éľĢæ±Ĥ\néķ¿ éķ¿\néķ¿éķ¿ çļĦ\nå®ī æĬļ\nå¢ŀ é«ĺ\næľ¬ è½®\näº² çľ¼\né£İ æ³¢\nèĢģ å¦Ī\næĶ¶è´¹ æłĩåĩĨ\nåĨħ éĻĨ\næĮ¥ åıĳ\nåįĩ åŃ¦\nèĥ¸ åīį\nåģı è¿ľ\nçº¯ æ´ģ\næĸ½å·¥ åįķä½į\nèº« ä»·\nè´¢ åĬĽ\nçº ¶\nè£ħ çĶ²\næĺ¾ç¤º åĻ¨\næ¯« åįĩ\næ·± çŁ¥\nèĢ¶ ç©\nèĢ¶ç© Į\nè¾ĥ éĩı\nåľ¨ è¿ĩæ¸¡\nåľ¨è¿ĩæ¸¡ æľŁ\nèĮ Ĺ\nä¸Ģä¸ª æĺŁæľŁ\nèĬ ·\nè´¿ èµĤ\næ¿ ķ\næĩĤ äºĭ\nç§ §\nåħħ å½ĵ\nåĽ½ ç«ĭ\nèĬ± çĵ£\néĤĦ è¦ģ\nåħ¬ åľĴ\nè§¦ åĬ¨\næ³° å·ŀ\nä»Ģä¹Ī æł·\næ»ĭ åħ»\nè¯Ħ åĪ¤\næĮ¥ æīĭ\nèĦ Ī\nå§¥ å§¥\nè¿Ĳ è´¹\næ¯ħ åĬĽ\nå¿ĥ æĻº\nä¸į æİĴéĻ¤\nç¬¬ä¸ī ä»£\néĢĢ è´§\næĺŁ éĻħ\næ°¸ åĪ©\næĬ¤ åį«\nçıŃ è½¦\nè¨Ģ è¡Į\nç¹ ª\nä¸»åĬ¨ æĢ§\nå·¥ç¨ĭ è´¨éĩı\néĥĬ åĮº\nä¸Ģ æłĭ\nä½Ĩ å®ŀéĻħä¸Ĭ\nä¸īå¤§ èģĮä¸ļ\nåĳ¼ åı«\nå¥³ åħĴ\nè¯ģåĪ¸ æĬķèµĦ\nèĢĥ æħ®\nçĤ« èĢĢ\næ²» å¥½\nåĺ ¶\nèĥ ¤\nåħīä¼ı åıĳçĶµ\nåĩł æŃ¥\næīĢ æīĢ\næīĢæīĢ éķ¿\nçħ§ æł·\nåĵ¥ ä»¬\nè¯ Ľ\nè¿Ļä¸Ģ åĪ»\nçŁ¿ çī©è´¨\nä¸įå¾Ĺ å·²\nåĲĮ çĽŁ\nç»Ĩ å¾®\nè·¯ èĻİ\nçĻ¾ èĬ±\næ·· æ²Į\nä¸Ĭæµ· è¯ģåĪ¸\néĢĢ ç¨İ\nèµŀ åı¹\næī®æ¼Ķ æ¸¸æĪı\nåĲį åĪĹ\nåĲįåĪĹ åīį\nåĲįåĪĹåīį èĮħ\nç±³ å°Ķ\nä»Ģä¹Ī åİŁåĽł\nå®īåħ¨ ä¿Ŀéļľ\nä¸Ģåıª æīĭ\nä¹³ ä¸ļ\nä¸į çĶĺ\næĥħ åķĨ\næĮ¡ ä½ı\nåİŁåĽł ä¹ĭä¸Ģ\nè¿Ļ ä¸¤å¤©\nçĥĺ çĦĻ\nè± ¬\nä½ł ä»¥ä¸º\næ²¡ è§ģè¿ĩ\nåĵªå®¶ å¥½\nåīį ä»»\nè¿Ľ è´§\néĢĢ åĽŀ\nä¸² èģĶ\nèĩ³ æĸ¼\nåĨ° æ·ĩ\nåĨ°æ·ĩ æ·ĭ\næŁ¥çľĭ è¯¦æĥħ\nçı¾ å¯¦\næİ¨ æµĭ\næİ¥ æīĭ\néļ¶ å±ŀäºİ\nåŁİå¸Ĥ ç¾¤\næĿİ åħĪçĶŁ\nçŁ¿ æ³īæ°´\nçī¹ ä»·\næĽ´å¤ļ ç²¾å½©\nç¨ĭ å¼ı\nè¯» æĩĤ\nå±ı èĶ½\nå¥¥ æŀĹ\nå¥¥æŀĹ åĮ¹\nå¥¥æŀĹåĮ¹ åħĭ\nçº¢ èĸ¯\nå¥ ®\nå®Ŀ çİī\nç¶² çµ¡\nè² §\næ¬§ å¼ı\nçĻ½ ç³ĸ\nèĩªçĦ¶ çģ¾å®³\nåĳĬè¯ī å¥¹\nå» ļ\nçĤ¹åĩ» æŁ¥çľĭ\né£İ æ¹¿\nèµĦäº§ éĩįç»Ħ\nä¹Łä¸į ä¾ĭå¤ĸ\nåįĬ ä¸ªå°ıæĹ¶\nåĲ¸å¼ķ æĽ´å¤ļ\næĹ¶éĹ´ èĬĤçĤ¹\næĶ¶ çº³\nåĲ¸ æ¯Ĵ\nèĢģ ä¹¡\nçĲ ħ\næľĢ çµĤ\nåıį æĦŁ\nçĶ¨ å¾®ä¿¡\nçĶ¨å¾®ä¿¡ æī«\néĢŁ çİĩ\nå¤§ çĨĬçĮ«\nåı¯ æĥ³\nåı¯æĥ³ èĢĮ\nåı¯æĥ³èĢĮ çŁ¥\nåĴ §\nèµ° åħ¥\nç¢³ éħ¸\nèĮĥ åĨ°\nèĮĥåĨ° åĨ°\nè¢« åĪ¤\nç§¯æŀģ æİ¨åĬ¨\nè¶³ è¶³\nç²Ĵ åŃĲ\nå¤§ å®Ĺ\nå¤§å®Ĺ åķĨåĵģ\nç½ĳç»ľ ç§ĳæĬĢ\næĽ¼ åŁİ\nå·² ä¹ħ\nå·²ä¹ħ çļĦ\nç§¦ çļĩ\nç§¦çļĩ å²Ľ\nä»» æķĻ\nåĶ¯ ç¾İ\næ·¡ åĮĸ\næ¡Ĥ èĬ±\nçŁ¥è¯Ĩ åĪĨåŃĲ\næĩĴ å¾Ĺ\nä¸» åħ¬\nè®¾è®¡ çĲĨå¿µ\nè³ º\næīĢ æıĲä¾Ľ\næīĢæıĲä¾Ľ ä¹ĭ\næĶ» åħĭ\nåĤ ¾\nè¯Ń æ³ķ\nåįĥ åı¤\néĸĭ æĶ¾\nç¬¬ä¸Ģ èĬĤ\néĤĦ æ²Ĵ\néĢĥ çĶŁ\næ³ Ĺ\nåİ¿ å§Ķä¹¦è®°\nä½ľèĢħ æīĢæľī\nçħ ½\nç» ħ\næł ħ\næľ´ ç´ł\nçĳķ çĸµ\nåĮħ åĮħ\næ°ĳä¸» åħļ\nä¸į è¿ľå¤Ħ\nå¥ĩ å¼Ĥ\nåĺ» åĺ»\næī ¼\nç¿» å¼Ģ\næĢİ èĥ½\néģ´ éĢī\nè§£ éĩĭ\nå¹¼ ç¨ļ\nè¦ģ å¥½å¥½\nè¶´ åľ¨\nç´¢ åıĸ\nç»Ī çĶŁ\nåħ¨ æµģç¨ĭ\néģ© çķ¶\nåįıè°ĥ åıĳå±ķ\næĬ¥ ä»ĩ\nç§ĳæĬĢ åĽŃ\nä»Ģä¹Ī éĥ½ä¸į\næľĢåĲİ ä¸Ģæ¬¡\nç»Ļäºº ä¸Ģç§į\næł¸ å®ļ\nè¢« åĪĹåħ¥\næĦı æĥ³ä¸įåĪ°\nèĢĥ æŁ¥\nåľ¨æŃ¤ ä¹ĭåīį\næīĵ çĲĥ\nè¶ĬæĿ¥è¶Ĭ å°ĳ\nå®ļ å¾ĭ\nè¡ĮæĶ¿ æľºåħ³\nä½ıæĪ¿ åħ¬ç§¯\nå°ıå§Ĳ å§Ĳ\nä¸ī èı±\nä¿® è¡¥\nèŀĥ èŁ¹\nè¥¿ çĶ²\næĢ ł\nçŃī å¤ļé¡¹\näº§ä¸ļ éĽĨèģļ\nä»·æł¼ ä¸Ĭæ¶¨\nåħ¬åħ± åľºæīĢ\nè¢ĭ åŃĲ\næĨ§ æĨ¬\nçļĦæĸ¹å¼ı æĿ¥\nåĪ° è´¦\nçģ ½\nå·´ èı²\nå·´èı² çī¹\næ¼Ķ ä¹ł\nèŃ¦ç¤º æķĻèĤ²\nçķı æĥ§\nå¼ķ æµģ\næĶ¶ æĶ¯\nå±Ĥ åĩº\nå±Ĥåĩº ä¸į\nå±Ĥåĩºä¸į ç©·\næĳĩ æ»ļ\nè¾¦ çĲĨ\nçºµ è§Ĥ\næķĳ æµİ\nå®¶ éĥ½çŁ¥éģĵ\nåĮ ¯\nå°ı é¸Ł\nä»» åĭĻ\nè®¡ åħ¥\nç«ŀ éĢī\nå¼ĢèįĴ æĹ¶æľŁ\nåĳ¨ æģ©\nåĳ¨æģ© æĿ¥\näº¤ ç»ĩ\nçķ¢ æ¥Ń\næł¹æį® èĩªå·±\næĸ°äºº çİ©å®¶\nåŃµåĮĸ åĻ¨\néĩĩ æļĸ\nå¹³åĿĩ æ°´å¹³\nåħ¬å¼Ģ è¯¾\nå¤± åĪ©\nä¼º æľį\nçĬ ģ\nå¿½ æĤł\nä¸»è¦ģ éĽĨä¸Ń\næ¤į æłĳ\næ¯Ĺ éĤ»\nèĩº çģ£\nåĩºåĽ½ çķĻåŃ¦\næĬĹ éľĩ\næĥ© æĪĴ\nå¹´åºķ åīį\nåĴ¸ éĺ³\næ°ĳ å±ħ\nå¤§çĲĨ çŁ³\néĿ ³\néķ ĸ\næ¸ħ è¿ľ\nè£ħ è½½\nèĩ Ģ\nå½± ä¸ļ\nå¼Ł åħĦ\næĤ² è§Ĥ\nçĿĢçľ¼ äºİ\næįį åį«\nåī¥ å¤º\nç¯ Ĩ\nå¾Ī éķ¿æĹ¶éĹ´\nè¥ Ł\nç¬¬ä¸Ģ çĻ¾\nä¸ĢåĪĨ éĴ±\næĸ°éĹ» è®°èĢħ\néķ· æľŁ\næ³ķ æĪĺç»ĦåĲĪ\nè°ģ çŁ¥éģĵ\nèħ° éĥ¨\næ±ī åł¡\nåħ¥ çĿ¡\nåįĸ æİī\næ¶Īè²» èĢħ\næĥ¯ ä¾ĭ\næĥ³ äºĨ\næĥ³äºĨ æĥ³\nèĢģæĹ§ å°ıåĮº\nä¼ł è¨Ģ\nåĪĨæķ° çº¿\næµģ æ³ª\nç»Ħç»ĩ é¢Ĩå¯¼\näºļ åĨĽ\nå¢ŀåĢ¼ æľįåĬ¡\nå¾ ¹\nä¼ ¶\näºĽ è®¸\nå¸ĥ èİ±\nå¼º æĤį\nå®« å»·\nç»¿ èĮ¶\nåĮ ¡\nå¾Ī æŃ£å¸¸\næĺ¥ å¤ı\næ¯ Ļ\nè¯Ħ æ¯Ķ\nåĩ¡ äºĭ\næĬī æĭ©\nåĢĴ éľī\néĩį åº¦\nåįıä¼ļ ä¼ļéķ¿\nå¿§ èĻĳ\nä¸ĭ ä¸Ģç¯ĩ\næ²ª æ·±\næĪ İ\næīĵ ä»Ĺ\nåįĪ é¥Ń\nå¹´é¾Ħ æ®µ\nä¸ŃåĽ½ è¶³çĲĥ\nè®¾è®¡ æĸ¹æ¡Ī\nåºĶçĶ¨ æŁ¥çľĭ\né¢Ħ æĸĻ\nåĹ ¡\nç¥ĸ çĪ¶\nçļĦä¸Ģ åĳĺ\næ´Ĺ å¹²åĩĢ\nåİĨåı² æĸ°\nåİĨåı²æĸ° é«ĺ\nçĭ¬ åħ·\næħĭ åº¦\næīĵ äº¤\næīĵäº¤ éģĵ\né»Ħ çŁ³\nçĽ¼ æľĽ\nçī§ åľº\nè½¬ å¼¯\nåįĩ åįİ\nåĨį ä¹Łæ²¡æľī\nèĭ± æīį\næĽ´ åĲįä¸º\nåĢŁ çĶ¨\nçºł éĶĻ\nç»Ŀå¯¹ ä¸įä¼ļ\nçİĭ çīĮ\nçĽĨ åľ°\nå¤± è°ĥ\nå¥½ è±¡\né³ ¥\nä¿Ŀ ä¿®\nåĽĽä¸ª èĩªä¿¡\nå¤´ çļ®\nåİŁ åīĩ\næĬ¥ æ¡Ī\nå¥´ éļ¶\nå³ Ļ\nè°ĥ æĸĻ\nä¹Ł è¨±\nèĲ½ åĪ°\nèĲ½åĪ° å®ŀ\nèĲ½åĪ°å®ŀ å¤Ħ\nçĦļ çĥ§\nçĶŁæ´» çİ¯å¢ĥ\nåºĶ åıĬæĹ¶\nè¶Ĭ è¿ĩ\næĦŁ è¬Ŀ\næĻ¯ å¾·\næĻ¯å¾· éķĩ\nçĬ Ģ\nèº« éĤĬ\nç¨İåĬ¡ æĢ»å±Ģ\nåĩĢ åľŁ\nä¾µ åįł\nåĬ¨ å·¥\nå¹´ ä¹ĭ\nå¹´ä¹ĭ ä¹ħ\nç¬¬äºĮ èĬĤ\nåĬ¨çī© åĽŃ\nç¬¬ä¸Ģ ä¹¦è®°\néħ ļ\nçĶŁäº§ è®¾å¤ĩ\næŁĲç§į ç¨ĭåº¦\nåľ Ń\nåĩŃåĢŁ çĿĢ\néĺħ è§Ī\nçĻ½ æ²Ļ\næ²¹ çĥŁ\nçªģçł´ åı£\nåıĹ å½±åĵį\nåı¯ä»¥ æĽ´å¥½\nå³° åĢ¼\næĿĤ è´¨\nå®¿ è¿ģ\nçĽĺ æ´»\næ¿Ģ èµ·\nåĦ¿ ç§ĳ\nåĿĲ èĲ½åľ¨\næĮª å¨ģ\næµ· å²Ľ\nç»Ł ç»Ł\néĻ ¨\nä¼ĺ äºİ\nå°Ī å®¶\nä¸Ģ éĤĬ\nèĲ Ĭ\näºĨä¸Ģ åı£\næ²ĥå°Ķ æ²ĥ\næŃ£å¸¸ ä½¿çĶ¨\næĻ®éģį åŃĺåľ¨\nä¸° æ»¡\nçĶ» åį·\nåºĶ æĶ¶\nåºĶæĶ¶ è´¦\nåºĶæĶ¶è´¦ æ¬¾\nå®Įæķ´ çĥŃ\nå®Įæķ´çĥŃ æ¦ľ\næ³¨ è§Ĩ\nçĨ Ħ\nèº ¬\néĶĢåĶ® äººåĳĺ\nè¶ĭ åĲĳ\nçĦ¦ æĢ¥\nåįģå¹´ åīį\nä¼łç»Ł äº§ä¸ļ\nè³ª éĩı\nåĩ¤åĩ° ç½ĳ\nèµĦæºĲ æķ´åĲĪ\næ¶Į åħ¥\næĸĩåĮĸ ä¼łæĴŃ\nçķĮ ç¬¬ä¸Ģ\næ°´ æ³µ\nå®« æ®¿\næİ¢ å¯»\nä¿® åīª\næĦı è¦ĭ\nç´Ĭ ä¹±\næĽ ī\nçĻ½ è¡£\nèĻİ åį«\nç´§ æī£\nå¤Ħå¤Ħ éķ¿\nåĪĽå»º å·¥ä½ľ\nçº¢ æŀ£\né¥¼ å¹²\näºĨ åįĬå¤©\nä¼ļå½±åĵį åĪ°\nçĽ¸ä¿¡ å¤§å®¶\nèħ¾ é£ŀ\nå°± å¦ĤåĲĮ\nä¸ĭéĿ¢ å°ıç¼ĸ\næ°ĳèĲ¥ ç»ıæµİ\næĻ ¦\nè£ħ æī®\né»ĳ å¤ľ\nå¸¸ å¾·\nå·¥ä¸ļ å¤§åŃ¦\næĺİ çŁ¥\néĺŁåĳĺ ä»¬\nåĲ¬ è¯¾\næ¯ı éļĶ\nçľŁæĺ¯ å¤ª\nåĲĪä½ľ åħ±èµ¢\nçĲĨ åıĳ\næīį å¹²\nçľĭ èµ·ä¾Ĩ\næ®¿ ä¸ĭ\nå®ī éĺ³\næīĢ äº§çĶŁçļĦ\néĽĩ ä½£\næĬ¬èµ· å¤´\næį® æĬ¥éģĵ\néļĨéĩį ä¸¾è¡Į\näº¤ éĶĻ\nè¶ħ é¢Ŀ\nåĮĸ çĸĹ\né¡ Ĩ\nçºµ æ·±\nçĪ±åĽ½ ä¸»ä¹ī\néĻ¢ åī¯éĻ¢éķ¿\nè® ³\nçľŁæŃ£ åģļåĪ°\nåŃ¤ åįķ\nèĩªçĦ¶ èĢĮ\nèĩªçĦ¶èĢĮ çĦ¶\nä¿® èº«\nèĬ ¹\næģ¯ æģ¯\næģ¯æģ¯ çĽ¸åħ³\né©¾ æł¡\næİ© é¥°\næ³½ è¿ŀ\næ³½è¿ŀ æĸ¯åŁº\nä¸¾ æŃ¢\nç®¡çĲĨ ä½ĵåĪ¶\nåħ¶ä¸Ń ä¹ĭä¸Ģ\næĿ¾ å¼Ľ\næĭ¦ æĪª\nåį« åģ¥\nåį«åģ¥ å§Ķ\nä»İ åİ»å¹´\nåĤ ¢\nè´Ń ç¥¨\nåĽ¾ æłĩ\næ²³ è¥¿\næ°ĳæĶ¿ å±Ģ\nç§ģ èĲ¥\nå¤ĸåĽ½ è¯Ń\nå¹² è´§\næĵ¦ æĭŃ\nåľ° ä¸Ń\nåľ°ä¸Ń æµ·\næµĵ æµĵ\næµĵæµĵ çļĦ\nå§ĭ å»º\nå§ĭå»º äºİ\nç¶ĵ æŃ·\nè·¯ æ¼Ķ\næļ´ é£İ\nåŁº è¾ħ\næī¶è´« å·¥ä½ľ\nä¸ĢçĽ´ å¤Ħäºİ\næĥħ è¶£\näºĮ åŃ£åº¦\nåİĮ æģ¶\né¡ºåĪ© å®ĮæĪĲ\næŁ¥ å°ģ\né¡¶ ç«¯\nä¸į åŃķ\nä¸Ģå¤§ åłĨ\nè¢« æ·ĺæ±°\næĺ¯ çĶ¨æĿ¥\næľĢ åĲĪéĢĤ\näº® çľ¼\nå¹¶ä¸įæĺ¯ å¾Ī\nç§ĳçłĶ éĻ¢\nç§ĳçłĶéĻ¢ æīĢ\nç² Ł\né¢Ī éĥ¨\né»ĺé»ĺ åľ°\né«ĺä¸Ń çĶŁ\næĹıèĩªæ²» åİ¿\næķĻåŃ¦ è´¨éĩı\næĪĺ çģ«\nåĿİ åĿ·\næĲŃ ä¹ĺ\nè¯Ĺ æĦı\nåĪĳ èŃ¦\nåĩº æ±Ĺ\nåįģåħŃ æĿ¡\nè¯· åıĬæĹ¶\nåĨľä¸ļ å¤§åŃ¦\nèĲ½ åı¶\næĢ» èĢĮè¨Ģ\næĢ»èĢĮè¨Ģ ä¹ĭ\næĿľ åħ°\næĿľåħ° çī¹\néĻª ä½ł\nåħ¬ æĬ¥\nçķĻè¨Ģ æĿ¿\néĺħ åİĨ\nç«¶ çĪŃ\nç»Ļ åĪ«äºº\næĹ¥æĬ¥ ç¤¾\nåĿĲ èĲ½\nåĿĲèĲ½ äºİ\néĩĳ åŃĹ\néĩĳåŃĹ å¡Ķ\nåĽ ¤\nè¯Ŀ åī§\næĮģç»Ń æİ¨è¿Ľ\næ¼ı æ°´\nè©³ ç´°\næĢĢ æĬ±\nåıĺ å¹»\né¥¥ é¥¿\néļĲ èº«\nä¸ª èµĽåŃ£\nåĵ¡ å·¥\næģ¢å¤į æŃ£å¸¸\näºĨ å¥½å¤ļ\næĺŁ å·´\næĺŁå·´ åħĭ\nåħī çİ¯\nå¸ħ åĵ¥\nçĻ½ éĽª\nç¨į ç¨į\nè®¡ æıĲ\næĦĽ æĥħ\néİ ĸ\nä¿¡ éĺ³\nè§Ģ å¯Ł\nå¦Ĥæŀľä½ł æĥ³\nçĽ¸æ¯Ķ ä¹ĭä¸ĭ\nè§£ å¼Ģ\næīĵåį° æľº\nèº« èº¯\nç²¾ç¥ŀ æĸĩæĺİ\nèĤ¡ æĮĩ\nå¾® åĪĽ\nçº¢ èĮ¶\nèĩ´ çĻĮ\næģ© æĸ½\nèħ¿ éĥ¨\nå¤§åŀĭ å¤ļäºº\nå®ī åĢį\nè¾ħå¯¼ åĳĺ\nèĪª éģĵ\nå¸ĥ å°Ķ\nåįĹå®ģ å¸Ĥ\nä¸ĬçıŃ æĹı\nä¾§ ç»ĵæŀĦæĢ§\nè¿½ éļı\nå½ĵåľ° æĶ¿åºľ\nèµ° åĩºæĿ¥\néĩĳèŀį ä¸ļ\nä¸Ľ ä¹¦\né¡¹çĽ® ç»ıçĲĨ\nè¿ĩ æĪ·\néª¨ æŀ¶\nè¡ Ļ\nä»Ģ éº½\nèħ ĭ\nè¦ģ å®³\nåľ¨ åºĬä¸Ĭ\nä»£è¨Ģ äºº\nä¸¦ å°ĩ\nåĲĦä¸ª æĸ¹éĿ¢\nè°´ è´£\nåħ± æĮ¯\nåį³å°Ĩ åĪ°æĿ¥\nèĤº çĻĮ\nä¾Ľ éĶĢ\nä¸Ľ æŀĹ\nèµ ĥ\nåįģä½Ļ å¹´\nåĭĺ æİ¢\néŁµ åĳ³\nèĭ¦ ç¬ĳ\næľĢå¤§ ç¨ĭåº¦\néĩįçĤ¹ åħ³æ³¨\nä¹ĭ ä¸¾\næ»¡ æĢĢ\nåıĹåĪ° å½±åĵį\næĭĽ æĬķæłĩ\nè¡¥ é½Ĳ\nè¥¿ çº¢\nè¥¿çº¢ æŁ¿\né¬ §\nè£ħ åį¸\néĤ» éĩĮ\nèĤĩ äºĭ\næİĴ æ¯Ĵ\nåŃ¤ åĦ¿\néĽ¶ è·Ŀç¦»\nå®ŀ å¹²\nçľĭ æŁ¥çľĭ\næĶ¶è´¹ ç«Ļ\nç» ·\nåħ¬çĽĬ æĢ§\néĢĴ ç»Ļ\næĶ» æīĵ\næĺŁçº§ éħĴåºĹ\næĺİ åªļ\nçį¨ ç«ĭ\nè¯Ŀè¯Ń æĿĥ\nä¸ĢæŃ¥ ä¸ĢæŃ¥\nä¹¦æ³ķ å®¶\næľªç»ı æİĪæĿĥ\nçŁ³ èĨı\nåĩŃ ä»Ģä¹Ī\nçļĦ æĹ¥\nçļĦæĹ¥ åŃĲéĩĮ\nè¯± äºº\nçĻ¾åĪĨ çĻ¾\nèĪĪ è¶£\nå¼ł åħĪçĶŁ\nèĢģçĪ· åŃĲ\næ³¢ çī¹\nåŁºéĩĳ ä»½é¢Ŀ\næ²Ļåıĳ ä¸Ĭ\nå¥ĭæĸĹ çĽ®æłĩ\næ°¢ èĥ½\næ²ĥå°Ķ çİĽ\nç¾© åĭĻ\néŁ³ ç®±\næ²ī æµ¸\næ²īæµ¸ åľ¨\nèĭ± åľĭ\nçģ¯ çģ«\nè¿Ľ é¡¹\nä¸¤ ç«¯\nä¹Ķ ä¸¹\nèĦ¸ é¢Ĭ\nåıĳå±ķ æ½ľåĬĽ\nåĭķ ä½ľ\nåĵĪ ä½Ľ\nå®´ ä¼ļ\næ§ į\nç«ĭ å¿Ĺ\nç¡ķå£« åŃ¦ä½į\nåĭĭ ç«ł\nè¿Ļ åľºæ¯ĶèµĽ\næĮģ å¹³\néķĢ éĶĮ\nèĭ± çī¹\nèĭ±çī¹ å°Ķ\næķĻ èģĮå·¥\nåĬŁ åĬĽ\nè¯¥ æ¡Ī\nä¸Ģ æ¢Ŀ\nåĺī å¹´\nåĺīå¹´ åįİ\nè¿« ä¸įåıĬ\nè¿«ä¸įåıĬ å¾ħ\nè¿Ļä¸ª æĹ¶ä»£\nç²¾å½© æĴŃæĬ¥\näºº èĦ¸\näººèĦ¸ è¯ĨåĪ«\næ£Ģå¯Ł å®ĺ\nå°ı èħ¿\néĨĴ çĽ®\nåħļ æĢ»\nåħļæĢ» æĶ¯\næĪ Ł\nèĮ« çĦ¶\nè±Ĩ æµĨ\nä¸» æ²»\néĿĴæµ· çľģ\nåĪĳäºĭ è´£ä»»\nçł °\nä¹ĭ æ¬ĬåĪ©\näºĶ å®ĺ\nè¿· æĥĳ\nåħ¥ åºĵ\nå®¶ çºº\nå¼¹ ç°§\nåįģäºĶ æĿ¡\nç»Ļ å®Ŀå®Ŀ\nèĪªç©º èĪªå¤©\nå¾Ģ å¤ĸ\nå¼ķ åĬĽ\nçľ¼ çļ®\næ¶ī è¶³\næĿ¥ å®¾\nåľ¨çº¿ è§Ĵèī²\nçĥŃ éĶĢ\næµģ éĢĿ\næ³¡ æ³¡\néĻį å¹ħ\nè´ŁéĿ¢ å½±åĵį\nçº¢ æ¥¼\nçº¢æ¥¼ æ¢¦\néļĶ çĿĢ\nä¾¥ å¹¸\nè®¸ ä¹ħ\nåĴĮ çĿ¦\nèŃ ½\nä½¿çĶ¨èĢħ æĪĸ\nä¹° åįķ\nè¿ ´\né£İ æīĩ\næķĻ å¸«\næ¡ĮåŃĲ ä¸Ĭ\nå¾Ī æ¼Ĥäº®\nåł± å°İ\nç¬¬ä¸Ģ åŃ£åº¦\nç©© å®ļ\næĤ² åĵĢ\nçĿĢåĬĽ æīĵéĢł\næĮ Ł\nè·¯ æ¡¥\nåĳ Ĳ\nåľ£è¯ŀ èĬĤ\nçļĩ åŃĲ\nä»ĩ æģ¨\néħĿ éħ¿\nä¸į éĹ´\nä¸įéĹ´ æĸŃ\næĮĩ å°ĸ\nä¸ŃåĽ½ ç½ĳæ¸¸\nåŀ £\næĦıè§ģ å»ºè®®\næ¯ħ çĦ¶\näº® åº¦\nèģĶ è°Ĭ\nå½ķ åħ¥\nåĦ ²\nå¨ĺ å®¶\nç§ĳ å°Ķ\nä¹Łæ²¡ ä»Ģä¹Ī\næł¹æį® ä¸įåĲĮ\nåı¶ ä¿®\nåĢ¼ å®Ī\næľ« ç«¯\nåĪ ¨\nåĤµ åĭĻ\nèģ¯ åĲĪ\nå¥ĩ å¹»\nèĻļ æŀĦ\né»Ħ æĺı\nå¹³ åĿ¦\næµģ æ°ĵ\næĸ° åŁºå»º\næĮ½ æķĳ\nåįİ å°Ķ\nåįİå°Ķ è¡Ĺ\næľĢ åıĹæ¬¢è¿İ\nç»Ń çº¦\nå¼Ĭ ç«¯\néŃĶ æ³ķå¸Ī\néŃĶæ³ķå¸Ī åĴĮ\nåħ·ä½ĵ åĨħå®¹\nçĲī çĴĥ\næī© å®¹\nèĮ¶ åĽŃ\nä¸»ä¹ī èĢħ\nç«ĭ éĿ¢\næİ¥åıĹ éĩĩè®¿\nåĩº åħ¥å¢ĥ\nç§ĳ åįı\néĴ ³\nçµĲ æ§ĭ\nç»ĵæŀľ æĺ¾ç¤º\nåı° è´¦\nå°± æĿ¥çľĭçľĭ\nèĩª æķĳ\nåıį æĩī\nåİ» åĵªåĦ¿\nè¿Ļ é¦ĸ\nè¿Ļé¦ĸ æŃĮ\nåĲ¬ ä¼Ĺ\nå¤ĸ å£³\nä½ĵèĤ² é¦Ĩ\nå¯¦ æĸ½\nèŀº ä¸Ŀ\næĭī åįĩ\nçĮĽ åľ°\nåħ¨åĽ½ äººæ°ĳ\næĤī å°¼\næĹı ç¾¤\nåĽ¢ åĳĺ\nä¸¤ä¸ª å°ıæĹ¶\nåľ¨ çİ©å®¶\nåľ¨çİ©å®¶ ä¸Ń\nçĶľ çĶľ\næĬķ è¡Į\nåįĶ æľĥ\néĻ ¡\nåĬłå·¥ åİĤ\næ¦Ĩ æŀĹ\næŃ» è§Ĵ\nåĨħ å¹ķ\næīĢæľī æĥħèĬĤ\nåĪ· åį¡\næ°´ èĤ¿\nèĥĥ åı£\nå«Į å¼ĥ\næ²® ä¸§\nä¸īå¹´ çº§\næ¶Ĥ å±Ĥ\nå¿ĥ ä»ª\nå¿ĥä»ª çļĦ\nå¤ Ń\né¦ĸ è½®\næĹłè®ºæĺ¯ åħ¶\néĢı æ°Ķ\näºĮ åįģäºĶ\nç® «\nåĬŁ åĬ³\nçŃ¾ ä¸ĭ\næ²ī è¿·\næķĳ åĳ½\néĹª éĹª\nåĲĥ äºı\nå±ķ åĵģ\nåį³æĹ¶ åıĳçĶŁ\nç¶ ľ\nç¶ľ åĲĪ\næłĩ æĺİ\nçľĭ çĶµå½±\nåħ¬ ç«ł\néĺ¿ æ£®\néĺ¿æ£® çº³\nèº« åĪĽéĢł\nèº«åĪĽéĢł çļĦ\næ¸Ľ å°ĳ\nåĢ¼å¾Ĺ åħ³æ³¨\néĽ¶åĶ® åķĨ\næįĨ ç»ĳ\nè¸ı åħ¥\nèĽ Ł\næŁ´ çº³\nèĢģ åħµ\nç»¿èī² çİ¯ä¿Ŀ\né¹ Ń\néº» æľ¨\næıŃ çīĮ\nè¿Ļæ¬¾ è½¦\nç¾İ å¾·\nç¾İå¾· åħ¬åı¸\næ¶ §\nè°ģ çŁ¥\næ´ĭ èĳ±\næ¯į æł¡\nä¸Ģ éĹª\nçĶ· ä¸»è§Ĵ\næĹłçº¿ çĶµ\nå±ł å®°\næĺ¯ éŁ©åĽ½\næĺ¯éŁ©åĽ½ å¨±\nå®¹ è²Į\nåĿĩ ä½¿åħ¶\nå¤ª å¿«\nå¹´ çĶ±\nå¹´çĶ± çĽĽ\nèĭ¦ èĭ¦\nåĬĽ è¿ĺæĺ¯\nåĬĽè¿ĺæĺ¯ èĩª\næĨ ©\nèģ¯ çµ¡\nåĶ ¾\nåħ·æľī æĪĺå£«\nè¿½ éĹ®\nåłĨ æĶ¾\nåıį é©³\nå®ŀäºĭ æ±Ĥ\nå®ŀäºĭæ±Ĥ æĺ¯\nåŃ¸ éĻ¢\nåįģ åĩłä¸ª\næķĳ æĬ¤\næķĳæĬ¤ è½¦\nç½ĳç»ľ ä¼łæĴŃ\nåįģåħ« å±Ĭ\néĥ¨ åī¯\néĥ¨åī¯ éĥ¨éķ¿\nçĹ´ è¿·\nç®¡çĲĨ æĿ¡ä¾ĭ\nèŀį ä¸ºä¸Ģä½ĵ\næĢ» äº§åĢ¼\nè³ ĵ\nä¸ĥ æĺŁ\nçıŃ ç»Ħ\nç»Ł é¢Ĩ\nè¯· å¤§å®¶\néĩĳ éĻµ\nèĪħ èĪħ\næµ· æ¹¾\næĸ½ çŃĸ\näº« èªī\néº ¥\nç«¯ åįĪ\nç»¿ åŁİ\nç¢º ä¿Ŀ\nå·´ æĭī\nåĨĴ çĿĢ\næħ· æħ¨\nä¸ªäºº è§ĤçĤ¹\nä¹Ļ çĥ¯\nç¡ħ è°·\néĸĭ å±ķ\nå°ļ ä¹¦\nåĿļ éŁ§\nåº µ\nèĢģ é¾Ħ\nèĢģé¾Ħ åĮĸ\nçľ¨ çľ¼\nç»¿ æ°´\nç»¿æ°´ éĿĴå±±\nä¹¦ é¦Ļ\nä¸»åĬĽ åĨĽ\næīįæĺ¯ çľŁæŃ£\næĬ¢ åħĪ\næĪĲå°± æĦŁ\néĩį æŀĦ\néĴ¢ åİĤ\næĪĲ ä»½\nèĬ± çº¹\nä¹ĭ äºī\nå¹² ç»Ĩèĥŀ\næĹ¢ åı¯ä»¥\nç¹ģ çĲĲ\næĦļ èł¢\néĿŀå¸¸ æĺİæĺ¾\nä½ĵ å½©\næĬĢ æ³ķ\næĿĨ èıĮ\nå¹¿æ³Ľ åħ³æ³¨\nåĮĹ å®ĭ\nå§Ĭ å¦¹\nåįı åĬŀ\næ·® åįĹ\nçĥ ı\næ´Ĺ èĦ¸\nåıĹ è®¿\nåıĹè®¿ èĢħ\néĩįè¦ģ åĽłç´ł\nå½±è§Ĩ åī§\nç»¼èīº èĬĤçĽ®\nèľķ åıĺ\näºĮ çº¿\näºĮçº¿ åŁİå¸Ĥ\nä¼Ĭ å§ĭ\nçıĬ çĳļ\nèĩª æŁ¥\nåħ¥ åĽŃ\nåĩ¶ æīĭ\nåħ¬ è¯ī\néģĩ éļ¾\néĩĩçŁ¿ çŃī\nèĩª çĲĨ\nåĸ· æ¶Ĥ\næī© åħħ\néĢı è§Ĩ\né«ĺéĢŁ å¢ŀéķ¿\nåĽ¾ çĶ»\nç¾ ¹\nèĤĩ åºĨ\nè¾ľ è´Ł\nèµĶ ä»ĺ\nè· ¡\nåģ¥åº· æĪĲéķ¿\nä»¥ä¸Ĭ åŃ¦åİĨ\nåıĸå¾Ĺ ä»¥åıĬ\næ²ī ç§¯\nåįģä¹Ŀ å±Ĭ\nçĽ¸éĹľ æľįåĭĻ\næī§ åĭ¤\nåī¯ åİ¿éķ¿\nå¯ °\nåģľ æ»ŀ\næ·¹ æ²¡\nçŁ³ çģ°\nçį ¸\nåĢ ¦\nç¾İ åªĴ\næķĻ æ¡Ī\nåĬł çĽĸ\nåħ¬å¼Ģ èµĽ\nå¥ł åŁº\næĺĨ èĻ«\nçŀ ħ\nç£· éħ¸\näºī åĪĽ\nçİĭ æĻĵ\nç¼ĵ åĨ²\nåİļ åİļ\nåİļåİļ çļĦ\næŀ£ åºĦ\nç²¾ çĽĬ\nç²¾çĽĬ æ±Ĥ\nç²¾çĽĬæ±Ĥ ç²¾\nåĪĨæĶ¯ æľºæŀĦ\nå®ŀæĸ½ ç»ĨåĪĻ\næĸ° èµĽåŃ£\nç¸½ çµ±\néĢł è¡Ģ\né¢ĩ åħ·\né»Ħ åŁĶ\nè¡Ģ èĦĤ\näº¤éĢļ å·¥åħ·\nå³ ¥\næĹıèĩªæ²» å·ŀ\nå¯º éĻ¢\nç¢º å®ļ\næ¦Ĥå¿µ èĤ¡\næĦŁ å®ĺ\næŁľ åı°\nåĶ Ķ\nçŀŃè§£ ä¸¦\næĢ» ä»·\nåĲ¸ åħ¥\næĢ ¼\næĻļ éĹ´\nå±Ĭ æ¯ķä¸ļçĶŁ\nçĶŁ å§ľ\néĺħè¯» åħ¨æĸĩ\nå¾ĹåĪ° æľīæķĪ\næĲľ æķĳ\nåİĨ æĿ¥\nèŃī æĺİ\nåĥ »\nèĨ³ é£Ł\nåĦĦ åħĥ\næīĵ åİĭ\nå®¾ å®¢\nåķ ¼\nä¸ĢçĻ¾ å¤ļ\næ·±åħ¥ äººå¿ĥ\næ¢ħ å·ŀ\nçłĶ åŃ¦\nåħ³ ä¹İ\nè¼ Ľ\näº² åıĭ\néħį æĸĻ\næĪĳ çĪ±ä½ł\nè´¸æĺĵ æĪĺ\næľī èī²\næľīèī² éĩĳå±ŀ\næįĲ åĬ©\nä¸º é¦ĸ\nä¸ºé¦ĸ çļĦ\nå¯Į åĬĽ\nçĶ· ç¥ŀ\né³ ³\næµĩ æ°´\nåĲ ±\næĺİç¡® æıĲåĩº\nåı¹ äºĨ\nåı¹äºĨ åı£æ°Ķ\nç¤¼ æĭľ\nè¿Ļä¸ª åĲįåŃĹ\nä¿¡ å¾Ĵ\nå¿Ĺ å¼º\néĻĲ æĹ¶\næĶ¶ è²»\nåĨľå®¶ ä¹Ĳ\nå°ıé¾Ļ èĻ¾\nèĲ½ å¹ķ\næ§ Ł\nåŃ¦ éľ¸\næĪĸ å¤ļ\næĪĸå¤ļ æĪĸ\næĪĸå¤ļæĪĸ å°ĳ\nåº§è°Ī ä¼ļä¸Ĭ\næ¶ ¼\néŃĶ çİĭ\nå² ±\né¡¶ å±Ĥ\né¡¶å±Ĥ è®¾è®¡\nèĦĳ åŃĲéĩĮ\néĻ¢ åŃĲéĩĮ\nè½© è¾ķ\nèº«å¿ĥ åģ¥åº·\nèħ ĳ\néĹľ æ³¨\nåıĤåĬł ä¼ļè®®\nä¸Ńåįİ æĸĩåĮĸ\nè¿½ å¯»\nå®ī çĦ¶\né£Ļ åįĩ\néŁŃ èıľ\né¸ ¦\nåĤ¨ éĩı\nçĶ· æĸ¹\nå¤ĩ ä»½\næĳĶ åĢĴ\næ¶¦æ»ĳ æ²¹\néĢ¼ è¿ĳ\nçĶ³ è¯ī\né¸Ł ç±»\nçŁ³æ²¹ åĮĸå·¥\nåĿļ æŀľ\nè¿Ļå®¶ ä¼Ļ\næĭĴ ä¸į\nçľŁ çļ®\nè·Ŀ éĽ¢\nè¿ĺ æĮº\néĽķ åĥı\nåĪĿ æģĭ\næıĲä¾Ľ æĽ´å¤ļ\næŁ¥çľĭ åħ¨æĸĩ\næķ°åŃĹ è´§å¸ģ\nåĸī åĴĻ\nåı¦ä¸Ģ ä½į\nåĤ¬ åĮĸ\nåĤ¬åĮĸ åīĤ\nä»İæĿ¥ æ²¡\nå¯ĨåĪĩ çĽ¸åħ³\néĥ¨ ä¸»ä»»\näº§åĵģ ç»ıçĲĨ\nä¸¦ åĲĮæĦı\nèĲ½ åħ¥\nå±ıå¹ķ ä¸Ĭ\nåħ¬åı¸ ç«łç¨ĭ\næį¢ åı¥è¯Ŀ\næį¢åı¥è¯Ŀ è¯´\nä½į æĸ¼\nä½ Ķ\nåĩ» æĿĢ\nçĽ¸ è¾ĥ\nçĽ¸è¾ĥ äºİ\nç²½ åŃĲ\nåįĹ æŀģ\nå®« é¢Ī\nè£ģ åĳĺ\næĺİ ç»Ĩ\nä»·åĢ¼ éĵ¾\nåĽĽä¸ª æĸ¹éĿ¢\næĥħåĨµ æĿ¥çľĭ\næĮĳ åīĶ\næ® ĺ\næŀģ åĬĽ\nçĸĳ éļ¾\næĬµæĬĹ åĬĽ\næĢ¥ éĢŁ\næĪ Į\nä½İ ä¼°\néĹª è¿ĩ\næģ ¬\nèµŀ æī¬\nä»ĸ å¦Ī\næĪĲä¸º ä¸ĢåĲį\næ´Ĺ ç¤¼\né¢Ħè®¡ å°Ĩ\nåħĪè¿Ľ åįķä½į\nè¼ Ķ\néĢĥ èĦ±\nçİ° åŃĺ\nèĢģèĻİ æľº\nåįģä¸ĥ æĿ¡\nåı¦ä¸Ģ åįĬ\næ¸© æĥħ\nåī¥ ç¦»\nä¸ĸ è´¸\nå®ĺ åı¸\nå¾Ī å·®\néĹ´ è·Ŀ\nè¯· æ³¨æĦı\nåı² è¯Ĺ\nåĪ© åĻ¨\nè¿Ĳ ç®Ĺ\næ²¦ ä¸º\nè©² ä½¿çĶ¨èĢħ\nèĮ ¬\néĶ¦ ç»£\nåı² æĸĻ\nçģµ æ´»æĢ§\nèģĶ ç¤¾\næĹł åĬ©\næĬĹ æ°§åĮĸ\nèıľ èĤ´\néĢł èĪ¹\næİī èĲ½\nå¤į æŁ¥\nåĭĥ åĭĥ\nåĳ¼ å£°\nçµ¦ äºĪ\nåĲĮäºĭ ä»¬\nç½ °\nè¯ķ æİ¢\nåħ³éĶ® åŃĹ\næįĲ çĮ®\nç»Łè®¡ æķ°æį®\nåĪĽ ä½ľèĢħ\nä¸ĭ åįĬ\nä¸ĭåįĬ åľº\næī¿æĭħ è´£ä»»\nç«¯ æŃ£\nç©¿ è¡£\nä¼ł çĲĥ\nåĬ© éķ¿\nåĩ ±\néķ¶ åµĮ\né£ŀ ç¿Ķ\nè¾ĵ åįµ\nè¾ĵåįµ ç®¡\nä¸ĩ åħ¬éĩĮ\næİ¨å¹¿ åºĶçĶ¨\nå¿« æ¨Ĥ\nç§ ½\nèī° å·¨\nåĲ¬ å®Į\nåĿļ ç¡¬\nå¥¥ åľ°\nå¥¥åľ° åĪ©\né¢ ĵ\nèĻĲ å¾ħ\nä¾Ľ æ±Ĥ\néľī ç´ł\nä¼ª è£ħ\nä¹¡ åľŁ\nåĩ¡ æľ¬ç½ĳ\nåĩ¡æľ¬ç½ĳ æ³¨\nä¼Ĭ åĪ©\nè¡¡ æ°´\næĽ´ åĥıæĺ¯\nåĪĨéĴŁ å·¦åı³\nè¦ı æ¨¡\näºĶ åĪĨéĴŁ\nåºĹ åĬłçĽŁ\nåĽ° éĽ£\nåħ³ åģľ\næĢĿ ç»ª\nåĴ½ åĸī\nçĽ¸ ç¬¦\nçĥ¦ èºģ\næĻĤ æľŁ\nåĳĪ çı¾\nè§£ æķ£\nè¯± å¯¼\néļĶ çĥŃ\nçĮ ¶\nåįĹ å®ĭ\næ·±åħ¥ äºĨè§£\nçŃĶ çĸĳ\næĺ¼ å¤ľ\nåįĥ ä¼ı\nåĬ³åĬ¡ æ´¾éģ£\nçº¢ è±Ĩ\nåĿı äºĭ\nçĤ¹ æ»´\nå°±ä¸ļ å²Ĺä½į\nçº¦ åĲĪ\nåħį éĻ¤\néĢĨ åĬ¿\néĩį éĩĳå±ŀ\nå®ĺ å®£\nä½İ å»ī\næģ¨ ä¸įå¾Ĺ\nå¾Ĺ å¤©\nå¾Ĺå¤© çĭ¬\nå¾Ĺå¤©çĭ¬ åİļ\nä¸Ģå°ģ ä¿¡\næĬ½ å¥ĸ\nè¾Ĺ è½¬\nçķĻ å®Ī\nçķĻå®Ī åĦ¿ç«¥\nçŃĶ åį·\nå·¨ åŀĭ\næľĢå¥½ ä¸įè¦ģ\næµĻæ±Ł å¤§åŃ¦\næĨ ¨\næı¡ æīĭ\néĴĪ ç»ĩ\næİĴ éª¨\nçĤ ½\nå°ģ è£ħ\nåįĢ åŁŁ\nç©ºæ°Ķ åĩĢåĮĸ\nåħī å½±\nåĢĴ å¡Į\nå§ļ æĺİ\næ¤į è¢«\nåŃ¦ åīį\nåŃ¦åīį æķĻèĤ²\nèĬĿ åĬł\nèĬĿåĬł åĵ¥\nç¼© æ°´\nä½ Ł\nåľ¨çº¿ åĴ¨è¯¢\nèµı æŀĲ\néĿĴ èĽĻ\næĬ± ä½ı\nèĮĤ åĲį\nåħ¨åĬĽ æīĵéĢł\nåįļå£« åŃ¦ä½į\næ²§ å·ŀ\nåĻ ¢\næĿĤ çī©\nåĪ» çĶ»\næį ħ\nå¾® éĩı\nå¾®éĩı åħĥç´ł\nä¸Ģ åĽŀäºĭ\né¸¡ èĤī\nåĪ©æ¶¦ çİĩ\næīį ç®Ĺ\nå¾® å¦Ļ\næ£µ æłĳ\nè´ª å©ª\nåĩı åĢ¼\næ¢¦ å¢ĥ\nåı¯ è§Ĩ\nåı¯è§Ĩ åĮĸ\nå¹¿å¤§ å¸Ĥæ°ĳ\nä¸ĵä¸ļ ä»İäºĭ\nç»ı çº¬\nç´§ çĽ¯\nçŁ¥ å·±\nè¤ ļ\næĸĩåĮĸ åºķèķ´\nåİ¦éĹ¨ å¸Ĥ\nä¸´ æ¸¯\nå¯¹åħ¶ çľŁå®ŀ\nå²¸ è¾¹\nè¦ĸ çĤº\næĬĹ çĻĮ\nåĶĲ å®ĩ\nä¸įå¾Ĺ è¶ħè¿ĩ\nå¨ģ æħĳ\næ¡Ĩæŀ¶ åįıè®®\nèµ° ç§ģ\nåĽ¢ å§Ķ\nå¤¸ å¤§\næ¬ Ħ\nç¥ŀç»ı ç³»ç»Ł\næĳĦå½± ä½ľåĵģ\nèĬ ¥\nå®ī åºĨ\næµ· æ»¨\næŀĦ æĢĿ\nçīµ æĮĤ\nåı ©\néĺĲ æĺİ\néģ ģ\nç²¾ æ²¹\nç©´ ä½į\næĬ¤ èº«\næĬ¤èº« ç¬¦\næĮĩ å°İ\nåŃĺåľ¨ ä¸Ģå®ļ\nå¯Ĥ éĿĻ\næµ·å¤ĸ å¸Ĥåľº\néĿ ¡\nç»¼åĲĪ å¾ģ\nä¿ Ĳ\nè¨Ī ç®Ĺ\næĺİ æľĹ\näºļ è¿Ĳ\näºļè¿Ĳ ä¼ļ\nåīįçŀ» æĢ§\nåĮ® ä¹ı\näº§ä¸ļ æī¶è´«\nèĦĳ æµ·\nèĦĳæµ· ä¸Ń\nåħļçļĦ é¢Ĩå¯¼\nåĪĺ éĤ¦\næµģ æĺŁ\næĵ Ĥ\næĶĢ çĻ»\nåĴ Ķ\nä¸Ģä¸ĭåŃĲ å°±\nè¯Ĭ æ²»\nä½¿ åĬ²\nåīµ ä½ľ\néĵŃ è®°\néĴ± è´¢\næĹ¥æĬ¥ è®°èĢħ\nçĥŁ çģ«\nèĥľ è´Ł\nåįļ ä¸»\nä¸ŃåĽ½ èģĶéĢļ\nç½ĳç«Ļ é¦ĸé¡µ\nå°± å¤Ł\nå°±å¤Ł äºĨ\næīĳ åħĭ\nå±ħ å§Ķä¼ļ\nè° ¬\nå®īåħ¨ äºĭæķħ\nåķĨ çĶ¨è½¦\nå¾ªçİ¯ ç»ıæµİ\næ· ¤\nèĢĥ è¯ģ\nå®Ŀ èĹı\nå®Į ç»ĵ\nçłĶåıĳ æĬķåħ¥\nå² ĳ\næģŃ æķ¬\nç¦» éĢĢä¼ĳ\næ°´ å¢¨\nå© ¶\nè¯Ĺ åı¥\nå®ģæ³¢ å¸Ĥ\nå¼± çĤ¹\nåģľ çīĮ\nå¥¶ æ²¹\nå¥ĩçº³ æ²³\næĨ Ĥ\nç¤¾ä¼ļ å®ŀè·µ\nè´Ŀ å£³\nçłĤ æµĨ\nèĪ¹ åıª\nå®£ æī¬\nç»¼åĲĪ æķ´æ²»\nåĤ ĳ\næ°ĳæĹı æĸĩåĮĸ\néĩį çİ°\nç§¯ æ·Ģ\nåħ¬ çĦ¶\nçħ ī\nçĽ¸ èģļ\næ± ¾\nçº¹ çĲĨ\nçĩĥ çħ¤\næŃ¤ ç§į\nç¾İ å¦Ĩ\nåįĥ çĵ¦\nçĲ Ľ\né©¾é©¶ è¯ģ\néĺ¶ æ¢¯\nä¸Ŀ ä¸Ŀ\nå¾Īå¤ļ äºĭæĥħ\nåħī éĺ´\nèĳĹä½ľ æ¬Ĭ\nåħ§ éĥ¨\nçĽ¸å¯¹ æĿ¥è¯´\néĸ Ĵ\néľĩ æħĳ\nèªª è©±\næĨ ĳ\nç«¥ è£ħ\nä½ıæĪ¿ åĴĮ\nä½ıæĪ¿åĴĮ åŁİ\nå·²ç»ı è¶ħè¿ĩ\nä¾¦ å¯Ł\nçŁ¿ çī©\nä¾Ľ å¤§å®¶\nçī¹ éĤĢ\nç¨ĭåºı åĳĺ\nçķľçī§ ä¸ļ\næ° ª\nçĳ ª\nåĢĴ åľ¨\nåĢĴåľ¨ åľ°\næ¯ Ģ\næ¢¯ éĺŁ\næİ¥ èĳĹ\næĬĹ èıĮ\nè¤ ĩ\nç¬ Ļ\næ¯Ķ ä¸Ĭå¹´\né¸¡ æ±¤\nåŃ¦ä¹ł æĪĲç»©\næĸĳ æĸĵ\nåħĪ å¯¼\nåĪĹ ä¸¾\nè°ĥæŁ¥ æĺ¾ç¤º\næ© «\nä¹Ŀ åįģ\nè°¢ éŁµ\nè·¨è¶Ĭ å¼ı\nå¥³æĢ§ æľĭåıĭ\nèĲ¥åħ» ä»·åĢ¼\nå®ŀè·µ ç»ıéªĮ\nèĭı å·ŀå¸Ĥ\nçĵ¶ åŃĲ\næĸ° çļĦä¸Ģ\næĸ°çļĦä¸Ģ å¹´\næĺİ æĻ°\nå®ł çĪ±\nåŃĹ ç¬¬\næľĹ è¯µ\nçº³ æĸ¯\néĢĨ è¡Į\nè«ĭ æĤ¨\nè«ĭæĤ¨ æıĲä¾Ľ\nèĥ¸ æĢĢ\nç¬¬ä¸ĥ å±Ĭ\nå¼º å£®\nä»£ åŃķ\næ±¶ å·Ŀ\nå®¶ åĸ»\nå®¶åĸ» æĪ·\nå®¶åĸ»æĪ· æĻĵ\nèħ ®\nåĲ¯ è¿ª\næĹł éļľç¢į\nèĻķçĲĨ åıĬ\næĿ¥ åİĨ\nå®ŀ åĬ¡\nä¹Ł éļıä¹ĭ\næĬĢèĥ½ åŁ¹è®Ń\nåŃ¤ ç«ĭ\nåī ģ\néĥ´ å·ŀ\næĶ¶ æķĽ\néł» éģĵ\nèį£ å¹¸\nèİ« è¿ĩäºİ\næŃ¤ æĻĤ\nçºªå§Ķ çĽĳ\nçºªå§ĶçĽĳ å§Ķ\nçĽ¸ éĤ»\nåı¦ä¸Ģ è¾¹\nçªĴ æģ¯\næľīå¾Īå¤ļ ç§į\næ¯ı éĢ¢\néĹ® ä¸ĸ\nç´¯ ç´¯\néĿĴæĺ¥ æľŁ\nè·¯ åĨµ\nåħĭ èİ±\nè¿Ħä»Ĭ ä¸ºæŃ¢\næĥĬ å¥ĩ\nè·¨ åº¦\néħ¿ éĢł\nåĩ ĭ\nè¿ĳ ä¸īå¹´\nåĨħ é©¬\nåĨħé©¬ å°Ķ\næı į\nè¿Ľå±ķ æĥħåĨµ\nèĮ §\næľīåºı æİ¨è¿Ľ\næĢ» åĨłåĨĽ\næĪĲç»© åįķ\néĽ»è©± åıĬ\nç´§å¯Ĩ ç»ĵåĲĪ\nåºĬ ä½į\né¹ Ĭ\næķ£åıĳ çĿĢ\nåĭŁ èµĦ\næ°¨ éħ¸\nå½© ç¥ŀ\nè®Ģ åıĸ\néĩį æ¸©\nä¸Ń åŃĺåľ¨çļĦ\nç¾İ éºĹ\nä¸įæĸŃ å¢ŀåĬł\nè½® æµģ\næİ¥ åĲ¬\nå¹´ äº§åĢ¼\nåįĥ åħĭ\næĪĺåľº ä¸Ĭ\nçħ§ é¡§\nå¹²éĥ¨ éĺŁä¼į\nåį° ç«ł\nä¸Ģèĩ´ æĢ§\nè¿ŀ å¤ľ\nåħħ è£ķ\né»ĳ åĲįåįķ\nåĩĢ æ°´\nä¸Ģå¤§ æĹ©\nåĮħ è¢±\nçĬ¯ è§Ħ\nçĲĨ è«ĸ\næŀģ æĺĵ\néª ¸\nå¨ĺ å¨ĺ\nåĽ¢ åľĨ\näº¿åħĥ ä»¥ä¸Ĭ\nåĪ©çĶ¨ æĤ¨çļĦ\nå¸¦æĿ¥ æĽ´å¤ļ\nä¸Ńå¤® ç©ºè°ĥ\næľĪ èĸª\nçĮľ æĥ³\nåĪº å®¢\nä½ľ æģ¯\nåįķ è°ĥ\näºĴ åĪ©\nå¦Ĥæľī ä¾µæĿĥ\nå°ı å·§\nåįģ åł°\nåĵĪåĵĪ åĵĪåĵĪ\nè¾¹ éĻħ\næłĩ è¯Ń\nåĪĩåħ¥ çĤ¹\néĢĨ è¢Ń\nè¯ķ åīĤ\nç»¿ è±Ĩ\nè® ļ\nåŁºçĿ£ å¾Ĵ\nå£ ¬\nåħ¨ æĺİæĺŁ\néĢī ç§Ģ\nèĪĮ å°ĸ\nä¸įåĲĮ ç±»åŀĭ\nçĥŁ åĽ±\nçģµ æ°Ķ\nåĮº ç®¡å§Ķä¼ļ\nåĨľ åī¯\nåĨľåī¯ äº§åĵģ\nèĶļ æĿ¥\næ²ª æĮĩ\nåħ»æ®ĸ æĪ·\næĸĹ å¿Ĺ\né¦ĸ é¢Ĩ\nè¡Ģ èħ¥\nåĬł ç´§\nä¸Ģèĩ´ å¥½è¯Ħ\nç¬¬ä¸ī èĬĤ\næī¬ å°ĺ\näº¤éĢļ æŀ¢çº½\néĽ¶ ç¢İ\né»ĳ æ´ŀ\nçľĭ ä¸įæĩĤ\nå±ŀ å®ŀ\nä¸» åŁİåĮº\nå¨ Ľ\nå¨Ľ æ¨Ĥ\nç¬ĳ æĦı\nèĻ¹ æ¡¥\nåĲĦä¸ª çİ¯èĬĤ\nçķ¥ å¾®\nèĢķ èĢĺ\næľ¬ åľºæ¯ĶèµĽ\næĪĲ è´¥\néĢī èĤ¡\nèªŀ è¨Ģ\nçŃĶ è¾©\nèĩª ä¹ł\næ£ º\nä¸ĩ æ¬§åħĥ\nåģľ å·¥\nå¯¹åħ¶ è¿Ľè¡Į\nç§¯æŀģ éħįåĲĪ\nä¹¾ åĿ¤\nå¦ĸ æĢª\nèļĮ åŁł\nèµĦäº§ è¯Ħä¼°\nè°ĥ çļ®\néĻ¤ å¤ķ\nåĽ´ å¢Ļ\næľį å½¹\næ·± æ¸Ĭ\né¢Ħ åĪ¶\nç ĥ½\nå®ī ç¨³\nå»º æŀĦ\nçĭĻ åĩ»\nä¸»åĭķ è¨»åĨĬ\néĥ½æľī èĩªå·±\næİĴåĲį ç¬¬ä¸Ģ\néº» è¾£\nçĢ ļ\nçĥŁèĬ± çĪĨ\nçĥŁèĬ±çĪĨ ç«¹\nèĩªçĦ¶ ä¿ĿæĬ¤\nä»Ļ å¢ĥ\nä¸ºäºĨ éģ¿åħį\nåĨ· åºĵ\nè§£æĶ¾ æĢĿæĥ³\nåĪĿ äºĮ\nä½ĵ è´´\né¦ĸ å¯Į\nè¿ª æĭľ\næļĤ ç¼ĵ\næĶ¯æĮģ åĬĽåº¦\nä¾¦ æİ¢\né©¬ åĪº\nåĮĹ æ±½\nç¹ ŀ\nè°İ è¨Ģ\néĢ£ çºĮ\nå· ³\nä»»ä½ķ æĹ¶åĢĻ\nè½¦ èģĶç½ĳ\nåįķ é¡¹\nå¸Ń åį·\nå»ºçŃĳ æĿĲæĸĻ\nä¸Ńç§ĭ èĬĤ\nç¡ķå£« çłĶç©¶\nç§ģ ç«ĭ\nåħļåĴĮ æĶ¿åºľ\næľ¬æ¬¡ äº¤æĺĵ\nèººåľ¨ åºĬä¸Ĭ\nç½ĳåıĭ è¯Ħè®º\nå¦ Ŀ\nå®³ ç¾ŀ\nåħ¬ç«ĭ åĮ»éĻ¢\nä¸ ŀ\nçĶŁçī© è´¨\nåºĶ éĤĢ\næĬ½ åıĸ\nåĩł å¼ł\næĳĺ ç¼ĸ\nç»ĺ æľ¬\nè¯¦ è§£\nå¼º ç¡¬\næľĢ åħĪè¿ĽçļĦ\næĭĽ èĤ¡\næĭĽèĤ¡ ä¹¦\nåįĥ æĸ¹\nåįĥæĸ¹ çĻ¾\nåįĥæĸ¹çĻ¾ è®¡\néħį éŁ³\né©¾ çħ§\nå¾ģ æĪĺ\nèªĵ è¨Ģ\næĭľ å¸Ī\næĭľå¸Ī åŃ¦\næĭľå¸ĪåŃ¦ èīº\næĬ± åĽ¢\nç±³ ç²ī\néĿŀå¸¸ éĢĤåĲĪ\nèĪª æµ·\nå±¥ çº¦\nåįģåħ« æĿ¡\néĶ» éĢł\néĩįè¦ģ ä¸¾æİª\nåıĳæĮ¥ ä½ľçĶ¨\næ· ļ\näºº ç¤¾\näººç¤¾ å±Ģ\nè¯ķçĤ¹ å·¥ä½ľ\néĺľ éĺ³\næ¡ĥ åľĴ\næ°ĳ ä¼ģ\næ´ģ çĻ½\nè´µ å®¾\nåħ¬ ç¤¾\nè§ī æĤŁ\nè®°å¿Ĩ åĬĽ\næľĥåĵ¡ è¨»åĨĬ\næŃ¤ æ¡Ī\néº» çĹ¹\nçı Ģ\næĸ© èİ·\nçĶ· åŃ©åŃĲ\nå±ĢéĻĲ äºİ\nåĭĺ æŁ¥\nåĲĥ é¥±\nèĬ¬ åħ°\næ£ķ èī²\nç¦ı ç¥ī\nçĶ³ èĬ±\næµ· çĽĹ\nèĶ ĳ\næĸĩ åŃ¸\næ´»æĢ§ çĤŃ\nçĽ´ éĢļè½¦\nè°¢ éĤĢ\nèºº çĿĢ\nåľ ĥ\næ¯ıæĹ¥ ç»ıæµİ\nåħ¬åħ± æĸĩåĮĸ\nè®² æķħäºĭ\nå¯Ł çľĭ\næĤł éĹ²\nåľ° åĿª\næ¶Į çİ°åĩº\né«ĺçŃī éĻ¢æł¡\nèĮĦ åŃĲ\néĺ² åį«\nä¾ĭ è¡Į\næĺ¾ éľ²\næĸ° å¸¸æĢģ\nç»Ŀ ä½³\nå¯Į æ°ĳ\nä»¥ äººæ°ĳ\nä»¥äººæ°ĳ ä¸º\néĤ¢ åı°\nå±ķ æ¼Ķ\nçĻ¼ å¸ĥ\nè´Ł è½½\nåģı ç¦»\næ°¸ éģł\néĩįè¦ģ åİŁåĽł\nåįıä¼ļ ä¼ļåĳĺ\néļ¾ æ°ĳ\nçĶŁäº§ è½¦éĹ´\nçģµ åĬ¨\nä¸¤å¹´ åīį\næĸ¹ åľĨ\næ´» ä¸ĭåİ»\nä¸ĸçķĮ è§Ĥ\néªĹ åıĸ\nç¾İ è²Į\nèĥ½ çľĭåĩº\nçĻ¼ æı®\nè§Ĥ å½±\nåī ĥ\nåĲĪèµĦ åħ¬åı¸\nå© §\nå¹² æĹ±\nåħŃ ä¸ªæľĪ\nå°¤ä¸º éĩįè¦ģ\nèĤ ½\nç§¦ åĽ½\næīĺ ç¦ı\nå»ºçŃĳ å¸Ī\nåįĩçº§ æĶ¹éĢł\nå°ı é¢Ŀ\nå°ıé¢Ŀ è´·æ¬¾\nä¸¤ä¸ª ç»´æĬ¤\næĭį æĭį\nåı¯ çĸĳ\næį¢ åıĸ\næŃ¦ å£«\nèµĸ ä»¥\nèµĸä»¥ çĶŁåŃĺ\næĮ ļ\næ®¿ åłĤ\nèĩªçĦ¶ çķĮ\nç£ģ åľº\nå¦Ĥä½ķ çľĭå¾ħ\nä»ĬæĹ¥ å¤´æĿ¡\nè¥¿ åŁŁ\nèİ· è¯Ħ\né¢¨ æł¼\nä¿Ħ åĽ½\næīĵ æĭ¼\nå®£ä¼ł çīĩ\nå¾Ī æĸ¹ä¾¿\nä¾Ľç»Ļ ä¾§\nçºªå¿µ ç¢ĳ\næ¯« åħĭ\nèĬ³ é¦Ļ\nå·¥åķĨ éĵ¶è¡Į\nè¯· çĤ¹åĩ»\nç¼ ª\næĹłæķ° æ¬¡\nèį¯ å¸Ī\nèħ ¸\næ¸¸ èīĩ\nåĮ ¾\nå·¡ èĪª\næ²»çĲĨ ä½ĵç³»\nèĲ¥éĢł èī¯å¥½\næ·· æ·Ĩ\néĢļ çķħ\nåĬ³ ç´¯\nä»ĵ ä½į\nå¢ŀ éķ·\néļĲ çº¦\næĿĤå¿Ĺ ç¤¾\nåħ» èĤ²\nåı¯èĥ½ åıĳçĶŁ\nèĢĥ è©¦\nè¥¿ ä¾§\nåĬł åĢį\nä¸»æĮģ åı¬å¼Ģ\nçķ¢ ç«Ł\néĹ® è¯¢\næµ· æ£ł\nèĹ ©\næ³¨æĺİ æĿ¥æºĲ\næ£Ģ çĸ«\nè¯· åģĩ\næĬļ æĳ¸\nèĵĦ çĶµæ±ł\nè·Ł ä¸įä¸Ĭ\nçİ°ä»£ ç¤¾ä¼ļ\nçŃ¹ èµĦ\nä½ĵèĤ² å½©ç¥¨\nå»¶ è¯¯\nè¾Ľ è¾£\néĿ¢ å®¹\nåį° è®°\nçģŃ äº¡\nç´ł é£Ł\nåħ´ èĩ´\néľĢè¦ģ çĶ¨\néľĢè¦ģçĶ¨ åĪ°\nå®Ŀ å¦Ī\nç£ĭ åķĨ\néļ¶ å±ŀ\nè´¡çĮ® åĬĽéĩı\nåħ¬åħ± èµĦæºĲ\nå¤§ éĺª\nåĨĽ è®Ń\næĤ¬ å¿µ\nç¤¾ä¼ļ ç¨³å®ļ\nå¹²äºĭ åĪĽä¸ļ\næľī æĿ¡ä»¶\næľīæĿ¡ä»¶ çļĦ\nä¸Ģå¹´ ä¸Ģåº¦\nåİ ¥\nå¼º å¥¸\nè±ª è½¦\næİĮ æŁľ\næ°´åĪ© å·¥ç¨ĭ\nå³ ª\nç§¯æŀģ ä½ľçĶ¨\næµ· æ·Ģ\næµ·æ·Ģ åĮº\nçĥŃ æĴŃ\nåĿļæĮģ ä¸įæĩĪ\nåıĮ èĦļ\nç»Ł æĪĺ\nä»»ä½ķ äººéĥ½\nåľ°ä¸ĭ å®¤\nåĨ¶ çĤ¼\nè°ħ è§£\næ¸Ķ èĪ¹\nå¤ªéĺ³ åŁİ\nè¢« æįķ\nè®¡ç®Ĺ åĻ¨\nè¥¿ åĮ»\nèĪĴ å¿ĥ\næ¡ ¦\néģ ²\nåĬ ĳ\nè¨ Ĺ\nèİ º\nåĸ ¬\nçĵ ¯\nåĺ ĺ\nåł ķ\næķ Ŀ\nåĳ ¦\nèĭ ŀ\næŃ ¹\næĵ ¬\næ£ Ħ\nèĪ µ\nå¥ ª\nçļ ĭ\næĶ ¸\nåľ ©\nç¤ Ļ\nç¢ ĺ\néı Ī\næĦ ķ\nç¹ ³\nèĺ ¸\nè² Ĥ\næ¼ ²\næĳ ¹\næĶ Ŀ\nåŃ ¢\nèķ Ń\né¨ °\næ½ ¼\néħ °\næĴ ¥\nè¹ ¬\né¨ Ļ\nè¸ ¹\néģ Ĳ\nçĺ Ģ\nèĽ ¤\næĤ ĸ\nçĴ ŀ\nç£ Ĳ\næİ °\nè¾ Ĭ\nå¾ ĳ\næİ ĸ\néģ ŀ\néĤ ¸\néĽ ı\næĨ İ\næľ ½\nçį »\nç® Ķ\nè¤ ¶\næļ ¢\næĺ µ\nçı Ĥ\næĤ ¸\nåģ µ\nåĻ ľ\nå£ ¯\næĴ ®\næģ į\nå© ķ\nç¯ ±\néĺ Ļ\nçī ł\nè£ ĺ\nè³ ¢\néĩ ľ\néĵ ł\nèİ ĺ\næ® Ĩ\nçĻ ¸\nè´ ı\nç² ±\nå« ¡\nåĨ ¢\nè¤ Ĵ\næĩ Ĭ\néľ ĵ\nå¡ µ\næĭ £\nå» Ł\né£ ½\né¢ Į\nåļ İ\næ· º\nèĨ ł\nåİ Ń\nåļ ĩ\nåĳ ĥ\nçĴ ĭ\nçŃ ±\næĭ ·\nèį §\néĶ °\nåŃ °\nèĵ ĵ\nèĨ ½\næŀ ī\nåĸ ½\nçĽ Ķ\nçŃ Ĳ\nç¾ ļ\nè ħĮ\nè¾ «\næ³ ĵ\nçĶ ¬\nèŁ ²\nåĸ ª\nå¦ ĵ\nè¬ Ģ\nçĤ Ĭ\næĽ ľ\næ± Ĳ\nè´ Ī\nèį Ģ\næĬ ł\nç¢ ¾\næ« ĥ\néŀ ł\nèĳ Ĩ\nç¥ ¯\nå½ Ŀ\né¦ į\nåĮ £\næľ Ń\nåĿ Ĥ\nä¿ ĳ\nèĵ ®\nçĳ Ľ\næī ī\nèĩ Ł\nè² «\nçİ ¥\næ· ¼\nåİ ²\né³ Į\nå³ Ń\nåĳ Ľ\né §\né§ Ĳ\néģ ·\nä¿ ª\næĢ Ĥ\nè¾ į\nå± į\nåĭ ģ\nå¥ ļ\néļ ħ\néĴ ´\nè¼ Ŀ\nå® ¦\nèĲ ĥ\nçĺ ĭ\næĨ ¶\næĤ ħ\nè¾ Ļ\nåĳ ľ\nçł º\néĢ ŀ\næµ ļ\néĸ £\nèĸ ©\néĻ ĭ\nçĤ Ļ\nèª ķ\nä¸ Ł\né¹ ½\nç± Į\nè´ °\néĭ ª\nçľ ©\næĴ Ĳ\nèĨ º\néŀ ĺ\nç¾ ²\nçª ®\nç´ Ĳ\næ® ´\nçº ¾\nèº į\nç´ ĭ\nçĦ ĸ\nçĶ º\nçī ½\nçĤ ¯\nç¼ Ķ\næ¯ ĵ\nå¬ °\næ¢ §\näº Ł\nè¢ ħ\nçį Ħ\nè¿ ¥\næ¼ ¾\nçĿ ĳ\nç¸ ¾\né¦ ĭ\né¤ ħ\næ ¹Ħ\næĺ ĩ\næŀ Ń\nèĸ °\næŁ ĳ\næ¦ »\nåĻ Ĺ\nåĻ ´\næ£ £\nåĶ §\nçĨ ¹\nè¼ ¯\nå¢ Ł\né² ²\næĪ Ľ\nèī ¦\nèĬ ®\nåĺ Ł\nå¸ ¥\nå¿ »\nçĮ Ŀ\nå¯ µ\nè³ ¦\nèĽ ¾\næ» ¾\nçĤ ķ\néĵ ¬\nèĴ ¿\néĴ ¨\nçĥ Ļ\nç² ķ\næĥ ¦\næº §\né¢ į\néħ £\nå³ ¦\nç± ģ\nçĥ ĥ\nåĨ Ĺ\nåı ģ\nçĽ §\nç½ µ\néĴ Ĺ\nå¬ ī\nè° ı\nç³ §\nè¾ Ń\næ· ¬\nèŁ Ĵ\nè¯ ©\nè¦ ĥ\nçĻ ĸ\né½ Ĵ\nçĪ Ĳ\nç® į\nç¼ İ\nç£ º\nè¯ «\nè¤ ²\næĵ ł\nèĲ ¦\nçĿ ¬\nè° į\néĦ °\næł ¾\né¡ ı\nç¸ ±\næ¡ ¨\néĨ ¬\nè¥ ²\nè® ª\nå© º\nèį Ł\nåĮ Ŀ\nçĨ ł\nèĽ Ĭ\næ¸ ļ\nå´ ½\né² ¤\nåķ °\nåĮ ķ\nä¸ Ĳ\nè® ¥\nåı ½\nåı ¼\nçļ ¿\nè¿ Ĥ\nåĲ Ĩ\nå± ¹\nèĩ ¼\nè® ¹\né© ®\nçº «\næ± ŀ\næĬ ¡\nèĭ ĩ\nåĲ ł\nåĲ Ń\nåĲ ®\nå² ĸ\nä½ ĥ\nçĭ Ī\nåº ĩ\nåĲ Ŀ\néĹ °\næ± ¹\nå¿ ±\næĭ Ħ\næĭ Ĺ\nèĮ ī\nèĭ Ľ\nèĮ ģ\nçŁ ¾\nèĻ ı\nåĳ »\nåĴ Ħ\nå¿ ¿\nèĤ ®\nçĭ ŀ\nçĸ Ł\nçĸ Ļ\nçĸ ļ\næ³ ŀ\nå¸ ļ\nå± ī\nè¿ ¢\né© ¹\nç İ·\nçıĬ ó\nçıĬó ł\nçıĬół Ħ\nçıĬółĦ ģ\næĮ İ\næĭ ´\nåŀ Ľ\nèį ¤\næ® ĥ\nçĽ ¹\nåĵ Ĩ\nè´ »\næ¯ ¡\nçĭ °\nçĭ ¡\næŁ Ĵ\næģ ĥ\nè¯ ¬\nè¢ Ħ\nè¯ ²\nèļ ¤\nèĢ Ļ\nåŁ Ĥ\næį İ\næį Į\næ¢ Ĩ\né ħĮ\nçł ¾\næ® ī\nåĶ ł\næĻ Į\nèļ £\nèļ ª\nèļ ĵ\né¸ ¯\nåĶ ģ\nåĶ Ĩ\nåĢ Ķ\nèĪ Ģ\nè± º\nèĥ °\né¸ µ\né¸ ³\né¦ ģ\nç¾ Ķ\næ¶ £\næ¶ ķ\næĤ ¯\nè¯ ½\nè° Ĩ\nç¥ Ł\nç» ¢\næį º\næį ¶\næį »\næİ Ĥ\nèı ł\nèĲ ¤\néħ Ĺ\nçľ ¶\nåķ Ħ\nèļ ¯\nèĽ Ģ\nåĶ ¬\nå¸ ·\néĵ Ĳ\néĵ Ľ\nåģ İ\nå¾ Ļ\nèĦ ¯\nè± ļ\nçĮ ĸ\nçĹ Ĭ\næ¶ ®\næĥ Ń\næĤ ´\næĥ ĭ\nè° ļ\næı ©\næĲ Ģ\næĲ Ķ\næ¦ Ķ\næ¤ Ń\néĽ ³\nåĸ ³\nè· Ľ\nèľ ĵ\nèľ Ĵ\né¹ ĥ\néĶ Ħ\nçĶ ¥\nçŃ ı\nçĮ ©\nçĮ ¬\nçĮ ¾\nçĹ ¢\nçĹ ª\næĥ °\nçª ĺ\nè° ¤\néļ ĺ\nå© ¿\né¹ ī\nçĳ Ļ\næĸ Ł\næ¤ ¿\néħ ª\néĽ ¹\nåĹ ¦\nè· ·\nè· º\nè· ¤\nèľ Ī\nèľ Ĺ\nå¹ Į\né¦ ı\nèª Ĭ\næ¼ ĵ\nè¤ Ĥ\nèĶ Ĺ\nèĶ ¼\nåħ ¢\nè£ ³\nèľ »\nèĿ ĩ\nåĺ Ģ\néĶ ¹\nç® ķ\nç® ©\nçĺ ©\nçĺ Ł\næ¼ ±\nå¯ ¥\néª ¡\næĴ µ\næĴ ¬\nè± Į\nåĺ ¹\nèĿ ł\nèĿ Į\nèĿ Ĺ\nèĿ Ļ\néķ Ĳ\nç¨ ¼\nç¯ ĵ\nèĨ Ľ\né² «\nçĺ ª\né² ¨\næĨ Ķ\nç¿ ©\nè¤ ¥\nç¼ Ń\nåĻ ©\nçĵ ¢\néľ İ\nè¸ ±\nè¹ Ĥ\nèŁ Ĩ\né¹ ¦\nç¯ ¡\nçĺ ¸\nçª ¿\nç¼ °\nèĹ Ĳ\nè¹ ĭ\nèŁ ĭ\nèŁ Ģ\nèµ ¡\nèĩ Ĭ\né³ Ħ\nç³ ł\næĩ ¦\nåļ £\néķ °\né³ į\nç° ¸\nçĻ £\né³ ĸ\né¬ ĵ\nèł ķ\néľ ¹\nèº ı\né» ¯\nçĵ ¤\nçŁ Ĺ\nä¹ Ĥ\nä¹ ľ\nåħ Ģ\nå¼ ĭ\nåŃ ĳ\nåŃ ĵ\nå¹ º\näº ĵ\nå »¿\nä¸ ı\nåį ħ\nä» ĥ\nä» ī\nä» Ĥ\nåĪ Ī\nçĪ »\nåį ŀ\néĹ ©\nè® £\nå¤ ¬\nçĪ ¿\næ¯ ĭ\néĤ Ĺ\néĤ Ľ\nèī ½\nèī ¿\nåı µ\nä¸ ķ\nåĮ ľ\nåĬ ¢\nåį Ł\nåı ±\nåı »\nä» ¨\nä» Ł\nä» ¡\nä» «\nä» ŀ\nåį ®\næ° Ĳ\nçĬ °\nåĪ į\néĤ Ŀ\néĤ Ļ\nè® ¦\nè® §\nè® «\nå° »\néĺ ¡\nå° ķ\nå¼ ģ\nèĢ Ĵ\nçİ İ\nçİ ĳ\nåľ ¬\næī ¦\nåľ ª\nåľ ¹\næī ª\nåľ ®\nåľ ¯\nèĬ Ĭ\nèĬ į\nèĬ Ħ\nèĬ ¨\nèĬ ĳ\nèĬ İ\nèĬ Ĺ\näº ĺ\nåİ į\nå¤ ¼\næĪ į\nå° ¥\nä¹ ©\næĹ ¯\næĽ ³\nå² Į\nå± º\nåĩ ¼\nåĽ ¡\néĴ ĩ\nç¼ ¶\næ° ĺ\næ° ĸ\nçī Ŀ\nä¼ İ\nä¼ Ľ\nä¼ ¢\nä½ ¤\nä» µ\nä¼ ¥\nä¼ §\nä¼ ī\nä¼ «\nåĽ Ł\næ± Ĩ\nåĪ ĸ\nå¤ Ļ\næĹ ®\nåĪ İ\nçĬ ·\nçĬ ¸\nèĪ Ľ\nåĩ «\né Ĥ¬\né¥ §\næ± Ķ\næ± ľ\næ± Ĭ\nå¿ ĸ\nå¿ ı\nè® ´\nè® µ\nè® ·\nèģ ¿\nèī ®\nåİ ¾\nå¦ ģ\nçº ¡\nçº £\nçº ¥\nçº ¨\nçİ ķ\nçİ Ļ\næĬ Ł\næĬ Ķ\nåľ »\nåĿ į\næĬ ĥ\nã§ Ĳ\nèĬ «\nèĬ ¾\nèĭ Ī\nèĭ £\nèĭ ĭ\nèĬ ¼\nèĭ Į\nèĭ ģ\nèĬ ©\nèĬ ª\nèĬ ¡\nèĬ Ł\nèĭ Ħ\nèĭ İ\nèĭ ¡\næĿ Į\næĿ ĵ\næĿ Ī\nå¿ ĳ\nåŃ Ľ\néĤ ´\néĤ ³\nå¥ ģ\nè± ķ\nå¿ Ĵ\næ¬ ¤\nè½ «\nè¿ ĵ\néĤ ¶\nå¿ Ĳ\nåį £\néĤ º\næĹ °\nåĳ ĭ\nåĳ Ĵ\nåĳ ĵ\nåĳ Ķ\nåĳ ĸ\næĹ ¸\nåĲ ¡\nèĻ ¬\nåĲ ½\nåĲ £\nåĲ ²\nå¸ ı\nå² Ī\nå² ĺ\nåħ ķ\nåĽ µ\nåĽ «\néĴ Ĭ\néĴ ĭ\né ĴĮ\nè¿ ķ\næ° Ļ\næ° ļ\nçī ¤\nä½ ŀ\nä½ ļ\nä½ Ŀ\nä½ Ĺ\nå½ ·\nä½ ĺ\nä½ ¥\nè± ¸\nåĿ Į\nèĤ Ł\nå¥ Ĥ\nåĬ ¬\nçĭ ģ\né¸ ł\né¥ ¨\né¥ ©\né¥ «\né¥ ¬\nåº ĳ\nåº ĭ\nçĸ Ķ\nçĸ ĸ\nèĤ ĵ\néĹ ±\néĹ ³\nçĤ Ģ\næ² £\næ² ħ\næ² Ķ\næ² ¤\næ² ı\næ² ļ\næ± ©\næ± ¨\næ² ¨\næ± ´\næ² Ĩ\næ² ©\næ³ Ĳ\næĢ ĥ\næĢ Ħ\nå¿ ¡\nå¿ ¤\nå¿ ¾\næĢ ħ\nå¿ ª\næĢ Ĩ\nå¿ Ń\nå¿ ¸\nè¯ Ĥ\nè¯ ĥ\nè¯ ħ\nè¯ ĭ\nè¯ Į\nè¯ Ĵ\néĻ Ĥ\néĻ ī\nå¦ ©\nå¦ ª\nå¦ £\nå¦ Ĺ\nå¦ «\nå§ Ĵ\nå¦ ¤\nåĬ Ń\nåĪ Ń\néĤ °\nçº Ń\nçº °\nçº ´\nçİ ¡\nçİ Ń\nçİ ł\nçİ ¢\nçİ ¦\nçĽ Ĥ\nå¿ Ŀ\nåĮ ¦\nåĿ ©\næĬ ¨\næĭ ¤\nåĿ «\næĭ Ī\nåŀ Ĩ\næĬ »\nåĬ ¼\næĭ ĥ\næĭ Ĭ\nåĿ ¼\nåĿ »\nã§ Ł\nåĿ ¨\nåĿ Ń\næĬ ¿\nåĿ ³\nèĭ ·\nèĭ ¤\nèĮ ı\nèĭ «\nèĭ ľ\nèĭ ´\nèĭ Ĵ\nèĭ ĺ\nèĮ Į\nèĭ »\nèĭ ĵ\nèĮ ļ\nèĮ Ĩ\nèĮ ĳ\nèĮ ĵ\nèĮ Ķ\nèĮ ķ\nè ĮĢ\nèĭ ķ\næŀ ¥\næŀ ĩ\næĿ ª\næĿ ³\næŀ §\næĿ µ\næŀ ¨\næŀ ŀ\næŀ ĭ\næĿ »\næĿ ·\næĿ ¼\nçŁ ¸\nç łĢ\nåĪ ³\nå¥ Ħ\næ® ģ\néĥ ı\nè½ Ń\néĥ ħ\né¸ ¢\nçĽ ±\næĺ Ļ\næĿ ²\næĺ ĥ\nåĴ Ĥ\nåĳ ¸\næĺ Ģ\næĹ »\næĺ ī\nçĤ ħ\nçķ Ģ\nèĻ ®\nåĴ Ģ\nåĳ ·\né» ¾\nåĳ ±\nåĳ ¤\nåĴ Ĩ\nåĴ Ľ\nåĳ ¶\nåĳ £\nåĴ Ŀ\nå² ¢\nå² ¿\nå² ¬\nå² «\nå¸ Ļ\nå² £\nå³ ģ\nåĪ ¿\nå² ·\nåī Ģ\nå¸ Ķ\nå³ Ħ\næ² ĵ\nåĽ ¹\nç½ Ķ\néĴ į\néĴ İ\néĴ ı\néĴ Ĵ\néĴ ķ\néĤ ¾\nè¿ ®\nçī ¦\nç« º\nè¿ ¤\nä½ ¶\nä¾ ĳ\nä¾ ī\nèĩ ¾\nä¾ Ĺ\nä¾ ı\nä¾ ©\nä½ »\nä½ ¾\nä¾ ª\nä½ ¼\nä½ ¯\nä¾ ¬\nå¸ Ľ\nä¾ Ķ\nå¾ Ĥ\nåĪ ½\néĥ Ħ\nç± ´\nçĵ ®\næĪ Ĺ\nèĤ ¼\näı Ŀ\nèĤ ±\nèĤ «\nè¿ ©\néĥ ĩ\nçĭ İ\nçĭ į\nçĭ Ĵ\nåĴ İ\né¥ ¯\né¥ ´\nåĨ ½\nåĨ ¼\nåº ĸ\nçĸ ł\nçĸ Ŀ\nåħ ĸ\nåĬ ¾\nð¬ ī\nð¬ī ¼\nçĤ ĺ\nçĤ Ŀ\nçĤ Ķ\næ³ Ķ\næ² Ń\næ³ ·\næ³ ±\næ³ ħ\næ³ ł\næ³ º\næ³ ĸ\næ³ «\næ³ ®\næ² ±\næ³ ¯\næĢ Ļ\næĢ µ\næĢ ¦\næĢ Ľ\næĢ ı\næĢ į\nã ¤\nã¤ ĺ\næĢ ©\næĢ «\næĢ ¿\nå® ķ\nç© ¹\nå® ĵ\nè¯ ĵ\nè¯ Ķ\nè¯ ĸ\nè¯ ĺ\næĪ ¾\nè¯ Ļ\næĪ ½\néĥ ĵ\nè¡ ©\nç¥ Ĩ\nç¥ İ\nç¥ ĩ\nè¯ ľ\nè¯ Ł\nè¯ £\nè¯ ¤\nè¯ §\nè¯ ¨\næĪ ķ\néĻ Ķ\nå¦ ²\nå¦ ¯\nå§ Ĺ\nå¸ ĳ\nåŃ ¥\né© ½\nèĻ ±\nè¿ ¨\nç» Ģ\nç» ģ\nç» Ĥ\né© ·\né© ¸\nç» ī\nç» Į\néª Ģ\nçĶ ¾\nçı ı\nçı Ĳ\nçı ĳ\nçİ ³\né¡ ¸\nçı ī\nçı Ī\næĭ ®\nåŀ Ń\næĮ Ŀ\næĮ ŀ\nåŀ ¤\nèµ ³\nè´ ²\nåŀ ±\nåŀ Į\nåŀ §\nåŀ ĵ\næĮ ¦\nåŀ ł\nèį ļ\nèį ĳ\nè´ ³\nèį ľ\nèİ Ĵ\nèĮ ¼\nèĮ ´\nèĮ ±\nèİ Ľ\nèį ŀ\nèĮ ¯\nèį ı\nèį ĩ\nèį ĥ\nèį ł\nèĮ Ń\nåŀ ©\nèį ¥\nèį ¦\nèį ¨\nèį ©\nåī ĭ\nèį ª\nèį ¬\nèį ®\næŁ °\næł ī\næŁ ĺ\næł Ĭ\næŁ ©\næŀ °\næł Į\næŁ Ļ\næŀ µ\næŀ ³\næŁ ŀ\næŁ Ŀ\næł Ģ\næŁ ¢\næł İ\næŁ Ī\næŁ ģ\næŀ ·\næŁ ½\nåī Į\néħ Ĭ\néĥ ¦\nçĶ Ń\nçł Ĺ\nçł ĺ\nçł Ĵ\næĸ «\nçł Ń\nçł ľ\nèĢ ·\nèĻ º\næ® Ĥ\næ® ĩ\næ® Ħ\nè½ ±\nè½ ²\nè½ ³\nè½ ¶\nè½ ¸\nèĻ ¿\næ¯ ĸ\nè§ ĩ\nå° ľ\nåĵ Ĳ\nçľ Ħ\nçľ į\nðł ³\nðł³ Ĳ\néĥ ¢\nçľ ĩ\nçľ Ĭ\nçľ Ī\nç¦ º\nåĵ Ĥ\nåĴ ´\næĽ ·\næĺ ´\nåĴ ¦\nåĵ ĵ\nåĵ Ķ\nçķ İ\nåĳ ²\nèĥ Ħ\nçķ ĭ\nçķ Ī\nèĻ ¼\nèĻ »\nçĽ ħ\nåĴ £\nåĵ ķ\nåī Ĳ\néĥ §\nåĴ »\nåĽ ¿\nåĴ ¿\nåĵ Į\nåĵ Ļ\nåĵ ļ\nåĴ ©\nåĴ ¤\nåĵ Ŀ\nåĵ ı\nåĵ ŀ\nå³ £\nç½ ĺ\nå³ Ĵ\nå³ ¤\nå³ ĭ\nè´ ¶\néĴ ļ\néĴ ¡\néĴ £\néĴ ¤\néĴ «\næ° ¡\nçī ¯\néĥ ľ\nç§ ķ\nç§ Ń\nç« ½\nç¬ Ī\nä¿ ¦\nä¿ ¨\nä¿ ħ\nåı Ł\nåŀ ¡\nçī ®\nä¿ £\nä¿ ļ\nçļ Ī\nä¿ Ł\néĢ ħ\nå¾ ĩ\nå¾ ī\nèĪ ¢\néĥ Ĺ\nä¿ İ\néĥ ¤\nçĪ °\néĥ Ľ\nçĵ ´\nèĥ ¨\nèĥ ª\nèĥ Ľ\nèĥ Ĥ\nèĥ Ļ\nèĥ į\nèĥ Ĺ\nè ĥĿ\næľ Ĳ\nèĥ «\né¸ ¨\nåĮ į\nçĭ ¨\nçĭ ¯\né£ ĳ\nçĭ ©\nçĭ ²\nè¨ ĩ\néĢ Ħ\næĺ Ŀ\né¥ ·\né¥ ¸\né¥ ¹\nåŃ ª\nå¨ Ī\nåº ¥\nçĸ ¬\nçĸ £\nçĸ ¥\nçĸ Ń\nåº ł\nç« ĳ\né£ Ĵ\néĹ ¼\néĹ ¾\néĹ ¿\néĺ Ĥ\nç¾ ĳ\nè¿ ¸\nç± ¼\néħ ĭ\nçĤ »\nçĥ Ģ\nçĤ ·\næ´ ±\næ´ ¹\næ´ §\næ´ Į\næµ ĥ\næ´ ĩ\næ´ Ħ\næ´ Ļ\næ¶ İ\næ´ İ\næ´ «\næµ į\næ´ ®\næ´ µ\næµ Ĵ\næµ Ķ\næµ ķ\næ´ ³\næģ ¸\næģ ĵ\næģ ¹\næģ «\næģ »\næģ Ĥ\næģ ª\næģ ½\nå® ¥\næī ĥ\nè¡ ²\nè¡ ½\nè¡ ¿\nè¢ Ĥ\nç¥ ľ\nç¥ ĵ\nç¥ ļ\nè¯ ®\nç¥ Ĺ\nç¥ ¢\nè¯ °\nè¯ ³\né¸ ©\næĺ ¶\nåĴ «\nå¼ Ń\nçī ģ\nèĥ ¥\néĻ Ł\nå§ ®\nå¨ Ĩ\nå§ Ŀ\nå§ £\nå§ ĺ\nå§ ¹\nç¾ ¿\nçĤ ±\nçŁ ľ\nç» Ķ\néª ģ\néª ħ\nç» Ĺ\nç» Ľ\néª Ī\nèĢ ĸ\næĮ Ī\nçı ¥\nçı Ļ\né¡ ¼\nçı °\nçı ©\nçı §\nçı £\nçı ŀ\nçĲ ¤\nçı ²\næģ ļ\nåŁ ķ\nåŁ ĺ\nåŁ Ļ\nåŁ ļ\næĮ ¹\nèĢ Ĩ\nèĢ Ħ\nåŁ Ĵ\næį ĭ\nè´ ½\nåŀ ¸\næį ĥ\nçĽ į\nèį ¸\nèİ ³\nèİ ´\nèİ ª\nèİ ł\nèİ ľ\nèİ ħ\nèį ¼\nèİ ©\nèį ½\nèİ ¸\nèį »\nèİ ¨\né¸ ª\nèİ ¼\næł ²\næł ³\næ¡ ¡\næ¡ İ\næ¡ ¢\næ¡ ¤\næ¢ ĥ\næł Ŀ\næ¡ ķ\næ¡ ģ\næ¡ §\næ¡ ħ\næł Ł\næ¡ ī\næł ©\néĢ ĳ\néĢ ĭ\nå½ §\né¬ ²\nè± ĩ\néħ Ĳ\néĢ ¦\nåİ Ŀ\nåŃ ¬\nçł Ŀ\nçł ¹\nçł §\nçł ·\nçł Ł\nçł ¼\nçł ¥\nçł £\nåī ŀ\nçł »\nè½ ¼\nè½ ¾\nè¾ Ĥ\né¸ «\nè¶ ¸\né¾ Ģ\né¸ ¬\nèĻ Ķ\nçľ ¬\nåĶ Ľ\nçľ Ļ\nåĵ §\nåĵ ½\næĻ ģ\né¸ ®\nè¶ µ\nè¶ ¿\nçķ Ľ\nèļ ¨\nèļ ľ\nèļ į\nèļ ĭ\nèļ ¬\nèļ Ŀ\nèļ §\nåĶ ¢\nåľ Ħ\nåĶ £\nåĶ ı\nçĽ İ\nåĶ ĳ\nå´ Ĥ\nå´ ĥ\nç½ ¡\nç½ Ł\nè§ Ĭ\nèµ ħ\néĴ ²\néĴ µ\néĴ ¹\néĴ º\néĴ ½\néĴ ¼\néĴ ¿\néĵ Ģ\néĵ Ħ\néĵ Ĩ\néĵ Ī\néĵ ī\néĵ Ĭ\néĵ ĭ\néĵ Į\né ĵį\nä ¥\nä¥ ½\néĵ İ\næ° ©\næ° ¤\næ° ¦\næ¯ ª\nèĪ Ĳ\nç§ £\nç§ «\nçĽ ī\nç¬ Ħ\nç¬ ķ\nç¬ Ĭ\nç¬ ı\nç¬ Ĩ\nä¿ ¸\nä¿ µ\nåģ Į\nä¿ ³\nä¿ ¶\nåĢ ¬\nåĢ ı\næģ ģ\nåĢ Ń\nä¿ ¾\nåĢ ľ\néļ ¼\néļ ½\nåĢ Į\nåĢ ¥\nèĩ ¬\néĥ «\nåĢ ¨\nè¡ Ħ\né¢ Ģ\nå¾ ķ\nèĪ «\nè¡ ¾\nèĥ ¯\nèĥ ±\nèĥ ´\nèĥ Ń\nèĦ į\nèĥ ¼\nèĦ Ĵ\né¸ ±\né¸ ²\nçĭ ·\nçĮ ģ\nçĭ ³\nçĮ ĥ\nçĭ º\néĢ ĸ\næ¡ Ģ\né¥ ½\nåĩ ĩ\næĮ Ľ\näº ³\nçĸ ³\nçĸ ´\nçĸ ¸\nçĸ ½\nçĹ Ī\nçĸ ±\nçĹ Ĥ\nçĹ ī\nè¡ ®\né¢ ĥ\næģ £\næĹ Ĩ\næĹ Ħ\næĹ ĥ\néĺ ĥ\néĺ Ħ\nè¨ ļ\néĺ Ĩ\næģ Ļ\nç² ĳ\nçĥ ľ\nçĥ ©\nçĥ Ĭ\nåī ¡\néĥ ¯\nçĥ ¬\næ¶ ĳ\næµ ¯\næ¶ ŀ\næ¶ Ł\nå¨ ĳ\næ¶ ł\næµ ŀ\næ¶ ĵ\næµ ¥\næ¶ Ķ\næµ ľ\næµ ł\næµ £\næĤ ļ\næ ĤŃ\næĤ Ŀ\næĤ Ĵ\næĤ Į\næĤ Ľ\nçª Ī\nåī ľ\nè¯ ¹\nè¯ ¼\nè¢ Ĵ\nè¢ ¢\nè¯ ¿\nè° Ģ\nè° Ĥ\nè° Ħ\nè° ĩ\nå± Ĳ\nå± Ļ\néĻ ¬\nåĭ Ĳ\nå¥ ĺ\nçī Ĥ\nèļ ©\néĻ ²\nå¨ Į\nå¨ ī\nå¨ ²\nå¨ ´\nå¨ £\nå¨ ĵ\nå© Ģ\nçķ ļ\néĢ ¡\nç» ł\néª Ĭ\nç» ¡\néª ĭ\nç» ¦\nç» ¨\néª İ\néĤ ķ\né¸ ¶\nå½ Ĺ\nèĢ ľ\nçĦ ĺ\nèĪ Ĥ\nçĲ ı\nçĲ ĩ\néº ¸\næı ¶\nåŁ ´\nåŁ ¯\næį ¯\næİ ³\næİ ´\nåŁ ¸\nåŁ µ\nèµ §\nåŁ ¤\næį Ń\néĢ µ\nåŁ Ŀ\nåł ĭ\nåł į\næİ ¬\né¸ ·\næį ½\næİ Ĭ\nåł ī\næİ ¸\næį ©\næİ ®\næĤ «\nåŁ Ń\nåŁ ½\næİ ĩ\næİ ¼\nèģ ĥ\nèĲ ģ\nèı ĺ\nåł ĩ\nèĲ ĺ\nèĲ ĭ\nèı ½\nèı ĸ\nè Ĳľ\nèĲ ¸\nèĲ ĳ\næ£ »\nèı Ķ\nèı Ł\nèĲ ı\nèı ¹\nèı ª\nèı ħ\nèı Ģ\nèı °\nèı ¡\næ¢ ¿\næ¢ ı\nè§ ĭ\næ¡ ´\næ¡ ·\næ£ ģ\næ¡ «\næ£ Ĥ\nåķ ¬\néĥ ¾\næķ ķ\nè± ī\néĦ Ħ\néħ ŀ\nç¡ İ\nç¡ Ń\nç¡ ĸ\nç¡ Ĺ\nç¡ Ĳ\nç¡ ĩ\nç¡ Į\né¸ ¸\nçĵ ł\nåĮ ı\nåİ ©\næ® Ĵ\næ® ĵ\næ® į\nèµ ī\néĽ ©\nè¾ Ħ\nåł ĳ\nçľ Ń\nçľ ¦\nåķ §\næĻ ¡\næĻ ¤\nçľ µ\nåľ Ĭ\nåĸ ı\nåķ ī\nåĭ ĸ\næĻ ŀ\nåĶ µ\næĻ Ĺ\nåķ Ń\nçķ ¦\nè¶ º\nåķ ®\nè· Ħ\nèļ ¶\nè ĽĦ\nèĽ İ\nèĽ Ĩ\nèļ °\nåľ ī\nèļ ±\nèĽ ī\nèĽ ı\nèļ ´\nåķ ģ\nåķ ķ\nåĶ ¿\nåķ Ĳ\nåĶ ¼\nåĶ ·\nåķ ĸ\nåķ µ\nåķ ¶\nåķ ·\nåĶ ³\nåĶ °\nåķ ľ\nå¸ »\nå´ ļ\nå´ ¦\nå¸ ¼\nå´ ®\nå´ ¤\nå´ Ĩ\nèµ ĩ\nèµ Ī\nèµ Ĭ\néĵ ĳ\néĵ Ĵ\néĵ Ĺ\néĵ Ļ\néĵ Ł\néĵ ¡\néĵ ¢\néĵ £\néĵ ¤\néĵ §\néĵ ¨\néĵ ©\néĵ ª\néĵ «\néĵ ¯\néĵ °\néĵ ±\néĵ ³\néĵ µ\néĵ ·\nçī ¾\né¸ ¹\nç§ ¾\néĢ ¶\nç¬ º\nçŃ ĩ\nç¬ ¸\nç¬ ª\nç¬ ®\nç¬ ł\nç¬ ¥\nç¬ ¤\nç¬ ³\nç¬ ¾\nç¬ ŀ\nåģ ¾\nåģ ĥ\nåģ ķ\nåģ Ī\nåĤ Ģ\nåģ ¬\nåģ »\nçļ ĳ\nçļ İ\né¸ »\nå¾ ľ\nèĪ ¸\nèĪ »\nèĪ ´\nèĪ ·\né¾ Ľ\nç¿ İ\nèĦ ¬\nèĦ ĺ\nèĦ ²\nåĮ Ĳ\nçĮ Ĺ\nçĮ ¡\nçĮ ŀ\næĸ Ľ\nçĮ ķ\né¦ Ĺ\né¦ ĥ\né¦ Ħ\né¸ ¾\nåº ¹\nåº ¾\nçĹ Ķ\nçĹ į\nç¿ Ĭ\næĹ Į\næĹ İ\nè¢ ¤\néĺ ĩ\néĺ Ī\néĺ ī\néĺ Ĭ\néĺ ĭ\néĺ į\néĺ ı\nç¾ Ł\nç² Ŀ\nçĦ Ĳ\nçĦ ĵ\nçĦ Ĺ\næ· ħ\næ· ŀ\næ¸ İ\næ¶ ¿\næ· ĸ\næĮ ²\næ· ł\næ¶ ¸\næ¸ ĳ\næ· ¦\næ· Ŀ\næ¶ ª\næ· Ļ\næ¶ «\næ¸ Į\næĤ »\næĤ ±\næ ĥĿ\næĥ ĺ\næĥ Ĩ\næĥ ļ\næĥ ĩ\næĥ ®\nçª ķ\nè° Į\næī Ī\nçļ ²\nè° ĳ\nè£ Ĩ\nè¢ ·\nè£ ī\nè° Ĵ\nè° Ķ\nè° ķ\nè° ĸ\nè° Ĺ\nè° Ļ\nè° Ŀ\néĢ ¯\néĥ ¿\néļ Ī\nç² ľ\néļ į\néļ Ĺ\nå© Ĭ\nå¨ ¼\nå© ¢\nå© µ\nèĥ ¬\nè¢ Ī\nç¿ Į\næģ ¿\næ¬ ¸\nç» «\néª Ĳ\nç» ¯\nç» ±\néª Ĵ\nç» ²\néª ĵ\nç» ¶\nç» º\nç» »\nç» ¾\néª ĸ\nç¼ ģ\nèĢ ł\nçĲ «\nçĲ µ\nçĲ ¶\nçĲ ¥\nçĲ ¨\nçĲ °\nçĲ ®\nçĲ ¯\nçĲ ¬\nçĲ ļ\nè¾ ĩ\né¼ ĭ\næı ³\nåł ŀ\næĲ ½\næı ¸\næı ł\nåł Ļ\nè¶ Ħ\næı ĸ\né¢ ī\nå¡ Ħ\næı ¿\nèĢ ĭ\næı Ħ\nèĽ ©\nèĽ °\nå¡ Ĩ\næĳ Ĵ\næı Ĩ\næİ ¾\nèģ Ĵ\nèĳ ĳ\nèĳ ļ\néĿ °\néĿ ¸\nèĳ ³\nèĳ º\nèĳ ¸\nèĲ ¼\nèĳ ¶\nè ĴĮ\nèĳ Ń\næ¥ ®\næ £¼\næ¤ Ł\næ£ ¹\næ¤ ¤\næ£ °\nèµ į\næ¤ ĭ\næ¤ ģ\næ¤ ª\næ¤ Ĳ\né¹ ģ\néħ ¤\néħ ¢\néħ ¡\né¹ Ĥ\næ® ļ\næ® Ľ\néĽ ±\nè¾ ĭ\næ¤ ł\nè¾ İ\nçĿ Ħ\nçĿ ĩ\nçĿ ĥ\næĪ ¢\nåĸ ĭ\nåĹ Ĵ\nåĸ ĥ\nåĸ ±\nåĸ ¹\næĻ ·\nåĸ Ī\nè· ĸ\nè· Ĺ\nè· ŀ\nè· ļ\nè· İ\nè· ı\nè· Ĩ\nèĽ ±\nèĽ ²\nèĽ Ń\nèĽ ³\nèĽ Ĳ\nèĽ Ķ\nèĽ ŀ\nèĽ ´\nèĽ ĺ\nåĸ ģ\nåĸ Ł\nåķ ¾\nåĹ ĸ\nåĸ ĳ\nåĹ Ł\nåĹ ŀ\nåĸ Ļ\nåµ ĺ\nåµ ĸ\nå´ ´\néģ Ħ\nè© Ī\nåµ İ\nå µ¬\nåµ Ľ\nåµ ¯\nåµ Ŀ\nåµ «\nå¹ Ħ\nåµ ĭ\nèµ ķ\néĵ »\néĵ ¼\néĵ ¿\néĶ ĥ\néĶ Ĩ\néĶ ĩ\néĶ ī\néĶ ı\néĶ ĳ\néĶ Ĵ\néĶ Ķ\néĶ ķ\næİ £\nçŁ ¬\næ° °\næ¯ ³\næ¯ ½\nçĬ Ĭ\nçĬ Ħ\nçĬ ĭ\né ¹Ħ\nçĬ į\nåµ ĩ\né» į\nç¨ ĥ\nç¨ Ĥ\nçŃ ļ\nçŃ µ\nçŃ Į\nåĤ £\nåĤ Ī\nèĪ Ħ\nçī į\nåĤ ¥\nåĤ §\néģ ĳ\nåĤ ©\nå¾ ¨\nåª Ń\nçķ ²\nå¼ ĳ\nç¿ ķ\né¹ Ĩ\nèħ Ī\nèħ ĵ\nèħ Ĩ\nèħ ´\nèħ ļ\nèħ ±\né± ¿\né² Ģ\né² Ĥ\nçĮ ¢\nçĮ ¹\nçĮ ¥\né£ ĵ\nè§ ŀ\nè§ ļ\nçĮ ±\né¢ İ\né£ §\né¦ ĩ\né¦ Ĭ\näº µ\nèĦ Ķ\nè£ Ĵ\nçĹ £\nçĹ ¨\nçĹ ¦\nçĹ ŀ\nçĹ ¤\nçĹ §\nèµ ĵ\nç« ¦\nçĵ ¿\nåķ »\né¢ ı\né¹ ĩ\néĺ ĳ\néĺ Ĵ\néĺ ķ\nç² ŀ\néģ Ĵ\nåŃ ³\nçĦ ¯\nçĦ ľ\nçĦ ±\né¹ Ī\næ¸ «\næ¹ ®\næ¹ İ\næ¹ ľ\næ¹ į\næ¹ «\næº ²\næ¹ Ł\næº Ĩ\næ¹ ²\næ¹ Ķ\næ¹ ī\næ¸ ¥\næ» ģ\næĦ ł\næĥ º\næĦ ¦\næĥ ´\næĦ Ģ\næĦ İ\næĦ Ķ\nåĸ ¾\nå¯ Ĳ\nè° Ł\nè£ ¢\nè£ İ\nè£ ¥\nç¥ ¾\nè° ł\nè° ¡\nè° ¥\nè° §\nåŃ ±\nå¼ ¼\nå· ½\néª ĺ\nåª ª\nå· ¯\nç¿ ļ\nçļ ´\néª Ľ\nç¼ Ĥ\nç¼ ĥ\nç¼ Ħ\nå½ ĺ\nç¼ ĩ\nç¼ Ī\nç¼ Į\nç¼ ĳ\nç¼ Ĵ\nç¼ Ĺ\né£ ¨\nèĢ ¢\nçĳ ģ\nçĳ Ĺ\nçĳ Ħ\néģ ¨\néª ľ\néŁ «\né« ¡\nå¡ ¬\néĦ ¢\nè¶ Ķ\nè¶ ĳ\næĳ ħ\næĳ ģ\nèľ ĩ\næĲ ĭ\næĲ ª\næĲ Ĳ\næĲ Ľ\næĲ ł\næĳ Ī\nå½ Ģ\næ¯ Ĥ\næĲ ¦\næĲ ¡\nèĵ ģ\næĪ ¡\nè ĵį\néĦ ŀ\nèĵ Ĳ\nèĵ ¦\né¹ ĭ\nèĴ ½\nèĵ ĸ\nèĵ Ĭ\nèĴ ¯\nèĵ Ł\nèĵ ĳ\nèĴ º\nèĵ ł\nèĴ Ł\nèĴ ¡\nèĴ ¹\nèĴ ´\nèĴ Ĺ\nèĵ ¥\næ¥ Ķ\næ¥ Ĥ\næ¥ Ŀ\næ¥ «\næ¥ ¸\næ¤ ´\næ§ Į\næ¥ ¯\nçļ Ļ\næ¦ Ī\næ§ İ\næ¦ ī\næ¥ ¦\næ¥ £\næ¥ ¹\næ¤ ½\nåī ½\néħ ©\nèľ ĥ\nç¢ Ľ\nç¢ ĵ\nç¡ ¼\nç¢ ī\nç¢ ļ\nç¢ ĩ\nç¢ ľ\né¹ Į\nè¾ ı\né¾ ĥ\né¾ ħ\nè¨ ¾\nç² ²\nçĿ ļ\nåĹ ª\néŁ ª\nåĹ ·\nåĹ ī\nçĿ ¨\nçĿ ¢\néĽ İ\nçĿ ¥\nåĹ ĳ\nåĹ «\nåĹ ¬\nåĹ Ķ\nåĹ Ŀ\næĪ ¥\nåĹ Ħ\nçħ ¦\næļ Ħ\néģ ¢\næ ļĮ\nè· ¬\nè· ¶\nè ·¸\nè· Ĳ\nè· £\nè· ¹\nèĽ ¸\nèľ Ĭ\nèľ į\nèľ ī\nèľ £\nçķ ¹\nèĽ ¹\nåĹ ¥\nåĹ ²\nåĹ ³\nåĹ Į\nåĹ į\nåĹ Ĳ\nåĹ ¤\nåĹ µ\nç½ ¨\nåµ Ĭ\nåµ ´\néª °\néĶ Ĺ\néĶ Ľ\néĶ ľ\néĶ Ŀ\néĶ ŀ\néĶ Ł\néĶ ¢\néĶ ¨\néĶ ©\néĶ Ń\néĶ ±\néĽ ī\næ° ²\nçĬ ı\næŃ ĥ\nç¨ ŀ\nç¨ Ĺ\nç¨ Ķ\nçŃ ł\nçŃ ¢\nçŃ ®\nçŃ ²\nçī Ĵ\næķ «\nå¾ Ń\næĦ Ĩ\nèī Ħ\nè§ İ\næ¯ ¹\nè² Ĭ\nè² ħ\nè² ī\né¢ Ķ\nèħ ł\nèħ ©\nèħ ¼\nèħ Ń\nè ħ§\nå¡ į\nåª µ\né² ħ\né² Ĩ\né² ĩ\né² Ī\né² ĭ\né² Ĳ\nèĤ Ħ\né¹ Ĳ\né£ ķ\nè§ ¥\néģ Ľ\né¦ Ĳ\né¹ ĳ\näº ¶\nçĺ ĥ\nçĹ ±\nçĹ ¼\nçĹ ¿\nçĺ Ĳ\nçĺ ģ\nçĺ Ĩ\néº Ĥ\næŃ Ĩ\næĹ Ĵ\néĺ ĸ\néĺ Ĺ\nç¾ §\nè± ¢\nç² ³\nçĮ ·\nçħ ³\nçħ ¨\nçħ ħ\nçħ Ĭ\nçħ ¸\nçħ º\næ» Ł\næº ±\næº ĺ\næ¼ Ń\næ» ¢\næº ¥\næº ½\nè£ Ł\næº »\næº ·\næ» Ĺ\næ» «\næº ´\næ» ı\næ» ĥ\næ» ¦\næº ı\næ» Ĥ\næ» ĵ\næº Ł\næ» ª\næĦ «\næħ Ĭ\né² İ\néª ŀ\nçª ł\nçª £\nè£ ±\nè£ ¨\nè£ ¾\nè£ °\nç¦ Ĭ\nè° ©\nè° ª\nåª ¾\nå« «\nåª ²\nå« Ĵ\nå« Ķ\nåª ¸\nç¼ Ļ\nç¼ ľ\nç¼ Ľ\nè¾ Ķ\néª Ŀ\nç¼ Ł\nç¼ ¡\nç¼ ¢\nç¼ £\néª Ł\nèĢ ¥\nçĴ Ī\nçĳ Ń\nçį Ĵ\nè§ ı\næħ Ŀ\nå« ł\nåı Ĩ\næĳ ½\nå¢ ģ\næĴ Ĥ\næĳ ŀ\næĴ Ħ\nç¿ ¥\nè¸ ħ\næĳ Ń\nå¢ ī\nå¢ Ĵ\næ¦ ĸ\nç¶ ¦\nèĶ «\nèĶ ·\néĿ º\néĿ ¼\néŀ ħ\néĿ ¿\nçĶ į\nèĶ ¸\nèĶ Ł\nèĶ º\næĪ ¬\nèķ ĸ\nèĶ »\nèĵ ¿\næĸ ¡\né¹ ķ\nèĵ ¼\næ¦ Ľ\næ¦ §\næ¦ «\næ¦ Ń\næ§ Ķ\næ¦ ±\næ§ ģ\næ§ ł\næ¦ ·\nåĥ °\néħ ½\néħ ¹\nç¢ ¡\nç¢ ´\nç¢ £\nç¢ ²\nèĩ §\nè± ¨\næ® ¡\néľ ģ\nèľ ļ\né¾ ĩ\né¾ Ī\nä ģ\näģ ĸ\nçĿ ½\nåĺ ŀ\nåĺ Ī\nåĺ Į\nåĺ ģ\næļ Ŀ\nè¸ Į\nè¸ ī\nèľ ŀ\nèľ ¥\nèľ ®\nèĿ Ī\nèľ ´\nèľ ±\nèľ ©\nèľ ·\nèľ ¿\nèŀ Ĥ\nèľ ¢\nåĺ ¡\né¹ Ĺ\nåĺ £\nåĺ ¤\nåĺ ļ\nåĹ ¾\nåĺ §\nç½ ´\nç½ ±\nå¹ Ķ\nå¶ Ĥ\nå¹ Ľ\nèµ Ļ\nç½ Ĥ\néª ·\néª ¶\né¹ ĺ\néĶ ²\néĶ ´\néĶ ¶\néĶ ·\néĶ ¸\néĶ µ\néķ Ĥ\nçĬ Ĵ\nç® Ĳ\nç® ¦\nç® §\nç® ¸\nç® ¬\nç® ħ\nç® ª\nç® ľ\nç® ¢\nç® ĵ\nåĥ ĸ\nåĦ Ĩ\nåĥ ³\nåĥ Ń\nåĬ ģ\nåĥ ®\néŃ ĥ\néŃ Ĩ\nçĿ ¾\nèī ĭ\néĦ ±\nèĨ Ī\nèĨ ĳ\né² ĳ\né² Ķ\né² ļ\né² Ľ\né² Ł\nçį Ĳ\nè§ «\néĽ Ĵ\nå¤ ¤\né¦ ĳ\néĬ ®\nå¡ ¾\nçĺ Į\nçĺ Ĭ\nçĺ ĺ\nçĺ Ļ\næĹ ĸ\nèĨ Ĥ\néĺ ļ\néĦ ¯\né² ŀ\nç² ¿\nç² ¼\nç³ ģ\næ§ Ĭ\né¹ ļ\nçĨ ĺ\nçĨ ¥\næ½ ¢\næ¼ ķ\næ» ¹\næ¼ ¯\næ¼ ¶\næ½ ĭ\næ½ ´\næ¼ ª\næ¼ ī\næ¼ ©\næ¾ ī\næħ µ\næĲ ´\nçª ¨\nå¯ ¤\nç¶ ®\nè° ®\nè¤ ¡\nè¤ Ļ\nè¤ ĵ\nè¤ Ľ\nè¤ Ĭ\nè° ¯\nè° °\nè° ²\nå± £\né¹ Ľ\nå« ±\nå« ĸ\nå« ¦\nå« ļ\nå «ĺ\né¼ Ĳ\nçŀ Ģ\né¹ ľ\néª ł\nç¼ ¥\nç¼ ¦\nç¼ §\nç¼ ¨\néª ¢\nç¼ «\nèĢ ¦\nèĢ §\nçĴ ľ\nçĴ İ\nçĴ ģ\nå¥ Ń\né« ¯\né« «\næĴ ·\næĴ ħ\nèµ Ń\næĴ ¸\néĭ Ĩ\næĴ Ļ\næĴ º\nå¢ Ģ\nèģ ©\nè§ Ĳ\néŀ ĳ\nèķ Ļ\néŀ Ĵ\nèķ Ī\nèķ ¨\nèķ ¤\nèķ ŀ\nèķ º\nçŀ ¢\nèķ ĥ\nèķ ²\nèµ ľ\næ§ ¿\næ¨ ¯\næ§ Ń\næ¨ Ĺ\næ¨ ĺ\næ§ ²\néĨ Į\néĨ ħ\néĿ ¥\néŃ ĩ\né¤ į\nç£ Ķ\nç£ Ļ\néľ Ī\nè¾ ĺ\né¾ ī\né¾ Ĭ\nè§ ĳ\nçŀ Į\nç ŀĭ\nçŀ ĳ\nåĺ Ń\nåĻ İ\nåĻ ¶\né¢ Ļ\næļ ¹\nåĻ ĺ\nè¸ Ķ\nè¸ Ŀ\nè¸ Ł\nè¸ Ĵ\nè¸ ¬\nè¸ ®\nè¸ ¯\nè¸ º\nè¸ ŀ\nèĿ ½\nèĿ ¾\nèĿ »\nèĿ °\nèĿ ®\nè ŀĭ\nèĿ ĵ\nèĿ £\nè Ŀ¼\nåĺ ¬\né¢ ļ\nåĻ į\nåĻ Ļ\nåĻ Į\nåĻ Ķ\né¢ Ľ\nå¹ ŀ\nå¹ ¡\nå¶ Ļ\nå¶ Ŀ\néª º\néķ Ĭ\néķ ī\néķ Į\néķ ı\néķ Ĵ\néķ ĵ\néķ Ķ\nç¨ ·\nç® ´\nç¯ ĳ\nç¯ ģ\nç¯ Į\nçī ĸ\nåĦ ĭ\nèĻ ¢\né¹ ŀ\nèĨ ĺ\né² ł\né² ¡\né² ¢\né² £\né² ¥\né² §\né² ©\nçį Ĺ\nçį ł\nè§ ¯\né¦ ĵ\né¦ Ķ\néº ¾\nå» Ľ\nçĺ Ľ\nçĺ ¼\nçĺ ¢\nçĺ ł\né½ ĳ\nç¾ °\nð¥ »\nð¥» Ĺ\nç³ Į\nç³ į\nç³ ħ\nçĨ ľ\nç Ĩµ\næ¾ į\næ¾ Į\næ½ ¸\næ½ ¦\næ½ ²\néĭ Ī\næ½ Ł\næ½ º\nå¯ ®\nçª ³\nè° ³\nè¤ ´\nè¤ Ł\nè¤ «\nè° µ\nçĨ ¨\nå± ¦\nåĭ °\næĪ ®\nèĿ ¥\nç¼ ¬\nç¼ ®\nç¼ ¯\néª £\nçķ ¿\nèĢ ©\nèĢ ¨\nèĢ ª\nçĴ Ł\néĿ Ľ\nçĴ ł\nçĴ ĺ\nèģ ±\nèŀ ¯\né« »\né« Ń\né« ¹\næĵ Ģ\nçĶ ı\næĵ ŀ\nç¸ ł\nç£ ¬\né¢ ŀ\nèķ »\né¢ Ł\nèĸ ¤\nèĸ ¨\næª ł\nèĸ ı\nèĸ ®\nèĸ ľ\nèĸ ħ\næ¨ ¾\næ© Ľ\næ© ĩ\næ¨ µ\næª İ\næ© ¹\næ¨ ½\næ¨ ¨\næ© ¼\nå¢ ¼\næ© Ĳ\nç¿ ®\néĨ Ĳ\néĨ į\néĨ ļ\nç£ ²\nèµ Ŀ\næ® ª\néľ ı\néĮ ¾\nè¾ ļ\néģ ½\næ° ħ\nçŀ Ł\nçŀ ł\nçŀ °\nåļ Ħ\nåļ Ĩ\nåĻ ¤\næļ ¾\nè¹ Ģ\nè¸ µ\nè¸ ½\nè¹ ī\nè¹ ģ\nèŀ ¨\nèŀ Ī\nèŀ ħ\nèŀ Ń\nèŀ ł\nèŀ Ł\nåĻ ±\nåĻ «\nåĻ »\nåĻ ¼\nç½ ¹\nåľ ľ\nä ¦\nä¦ ĥ\néķ Ĺ\néķ ĺ\néķ ļ\néķ Ľ\néķ Ŀ\néķ ŀ\néķ ł\næ° ĩ\næ° Ĩ\nç© ĳ\nç¯ Ŀ\nç¯ ¥\nç¯ ¦\nç¯ ª\nç¯ Ļ\nçĽ ¥\nåĬ ĵ\nç¿ ±\néŃ ī\néŃ Ī\nå¾ ¼\næŃ Ļ\nèĨ ¦\nèĨ Ļ\né² ®\né² ±\né² ³\né² ´\né² µ\né² ·\né² »\nçį ´\nçį Ń\nçį ¬\néĤ Ĥ\né¹ §\nå» ¨\nèµ Ł\nçĺ °\nå» ª\nçĺ ¿\nçĺ µ\nçĺ ´\nçĻ ĥ\nçĺ ³\néº ĩ\néº Ī\nå ¬´\nå£ ħ\nç³ Ĺ\nçĶ ĳ\nçĩ İ\nçĩ ł\nçĩ Ķ\nçĩ §\næ¿ ĳ\næ¿ ī\næ½ ŀ\næ¾ §\næ¾ ¹\næ¾ ¥\næ¾ ¶\næ¿ Ĥ\nè¤ °\nçª ¸\nå¬ ĸ\nçĬ Ł\néļ °\nå¬ Ĺ\né¢ ¡\nç¼ ±\nç¼ ²\nç¼ ³\nçĴ ©\nçĴ ª\nèŀ «\næĵ ¤\nå£ ķ\nè§ ³\nç½ Ħ\næĵ ¢\nèĸ ¹\néŀ ¡\néŀ ¬\nèĸ ·\nèĹ ĵ\nèĹ ģ\næª Ħ\næª ©\næĩ ĭ\néĨ ¢\nç¿ ³\nç¤ ħ\nç£ ´\né¹ ©\né¾ ĭ\né¾ Į\nè± ³\nå£ ĳ\né» »\nåļ ı\nåļ ħ\nè¹ ĳ\nè¹ Ĵ\nè¹ Ĭ\nè Ł¥\nèŀ ¬\nèŀ µ\nçĸ ĥ\nèŀ ³\nèŁ ĳ\nåļ ĵ\nç½ ½\nç½ ¾\nå¶ ·\né» ľ\né» Ŀ\né« ģ\né« Ģ\néķ ¡\néķ ¢\néķ £\néķ ¦\néķ §\néķ ©\néķ ª\néķ «\nç½ ħ\nç° Į\nç¯ ¾\nç¯ ¼\nç° ĸ\nç° ĭ\né¼ ¢\nåĦ ¡\né¹ ª\né¼ ¾\nçļ ¤\néŃ į\né¾ ł\nç¹ ĩ\nè² ĺ\néĤ Ī\nè² Ķ\nèĩ Į\nèĨ »\nèĩ Ĩ\nèĩ ĥ\né² ¼\né² ½\né³ Ģ\né³ ĥ\né³ ħ\né³ ĩ\né³ Ĭ\nèŀ ½\nçĩ ®\né¹ «\nç³ ľ\nç¸ »\nçĻ į\néº ĭ\næĩ ĳ\næ¿ ¡\næ¿ ®\næ¿ ŀ\næ¿ ł\næ¿ ¯\nè¹ ĩ\nè¬ ĩ\néĤ ĥ\nè¥ ģ\næª Ĺ\næ ĵĺ\nåŃ º\néļ ³\nå¬ ·\nèŁ Ĭ\né¹ ¬\néį ª\néı Ĭ\né¬ Ī\né¬ ĥ\nçŀ ½\néŀ ¯\néŀ ¨\néŀ «\néŀ §\néŀ £\nèĹ ľ\nèĹ ł\néĨ ª\nè¹ Ļ\nç¤ ĵ\nçĩ ¹\né¤ ®\nçŀ ¿\næĽ Ľ\né¢ ¢\nèº ĩ\nè¹ ļ\nèŁ Ľ\nèŁ ª\nèŁ ł\nèŁ ®\né¹ ®\né» ł\né» Ł\né« ħ\né« Ĥ\néķ ¬\néķ Ń\néķ ¯\né¦ ¥\nç° Ł\nç° ª\né¼ ¬\néĽ ł\nèī Ł\né³ İ\né³ ı\né³ Ĳ\nçĻ ŀ\nçĻ Ķ\nç³ ¨\nè¹ ©\néİ ı\néĤ ĭ\né¬ ı\næĶ ī\néŀ ²\néŀ ´\nèĹ ¿\nèĺ §\nèĺ ħ\néĨ ®\néĨ ¯\néħ ĥ\néľ ª\néľ Ń\néľ ¨\né» ¼\nåļ ¯\nè¹ °\nè¹ ¶\nè¹ ½\nè¹ ¼\nè¹ ´\nè¹ ¾\nè¹ ¿\nèł ĸ\nèł ĵ\nèŁ ¾\nèł Ĭ\né» ¢\né« ĭ\né« Į\néķ ²\nç± Ģ\né½ ģ\néŃ ĳ\nèī ¨\né³ ĵ\né³ Ķ\né³ ķ\né³ Ĺ\né³ Ļ\néı ĸ\nç¾ ¸\nã¸ Ĩ\nçĢ £\nçĢ Ľ\nè¥ ¦\nè° ¶\nè¥ ŀ\néª ¥\nç¼ µ\nçĵ Ĵ\næĶ ĺ\nèĺ ©\nèĺ ĸ\néĨ ´\néľ °\néħ Ĩ\nçŁ į\nèº ħ\né¼ į\nå· ī\né» ©\né» ¥\né» ª\néķ ³\néķ ´\né» §\nçº Ĥ\nçĴ º\né¼ ¯\nèĩ ľ\né³ ľ\né³ Ŀ\né³ Ł\nçį ¾\nåŃ Ģ\néª §\nç ĵĺ\né¼ Ļ\néĨ º\nç¤ ´\né¢ ¦\næĽ ©\né³ ¢\néº Ŀ\nå¤ Ķ\nçĪ Ŀ\nçģ ı\nç¦ ³\néĲ ¾\nç¾ ¼\nèł ¡\nèĢ ±\né¹ ³\næ° į\né¥ ķ\nèº Ĳ\né« ĳ\néķ µ\nç© °\né¥ Ķ\né¬ »\né¬ Ł\nè¶ ±\næĶ «\næĶ ¥\né¢ §\nèº ľ\né¼ ¹\nçĻ ¯\nèł ²\nèł ¹\nèº ŀ\nè¡ ¢\nçģ ŀ\nè¥ »\nçº Ľ\né¬ £\næĶ ®\nåĽ Ķ\né¦ ķ\næĪ Ĩ\nçĪ ¨\né½ ī\näº į\nå° ¢\nå½ ³\nåį ¬\næ® ³\nðł Ļ¶\næ¯ Į\néĤ ĺ\næĪ ĭ\nåľ ¢\næ° ķ\nä¼ ĭ\nä» Ŀ\nåĨ ®\næ° ¿\næ± Ī\næ° ¾\nå¿ ī\nå® Ħ\nð¬£ Ļ\nè® ±\næī ŀ\nåľ ²\nåľ «\nèĬ ı\nèĬ ĥ\næľ ³\næľ ¸\nð¨ Ļ\nð¨Ļ ¸\néĤ ¨\nåĲ Ĵ\nåĲ ĸ\nå± ¼\nå± ¾\nè¾ ¿\néĴ Ĩ\nä» ³\nä¼ £\nä¼ Ī\nçĻ ¿\nçĶ ª\néĤ ł\nçĬ ´\nåĨ ±\néĤ ¡\nð¬ĩ ķ\næ± ĭ\nä ľ\näľ £\nè® »\nð¬£ ŀ\nåŃ ĸ\nð¬ĺ ĵ\nçº ©\nçİ Ĵ\nçİ ĵ\nçİ ĺ\nçİ ļ\nåĪ ¬\nð«Ń Ł\nåĿ ľ\nåĿ ī\næī ½\nð«Ń ¢\nåĿ ĭ\næī º\nã§ ĳ\næ¯ Ĳ\nèĬ °\nèĬ £\nèĭ Ĭ\nèĭ ī\nèĬ ĺ\nèĬ ´\nèĬ ł\nð« ĩ\nð«ĩ Ń\nèĬ ¤\næĿ ķ\næĿ Ļ\næĿ Ħ\næĿ §\næĿ ©\nå° ª\nå° ¨\nè½ ª\nð«Ĳ Ħ\nåĿ Ĵ\nèĬ Ī\næĹ ´\næĹ µ\nåĳ Ļ\nã ķ\nãķ ®\nå² į\nð« µ\nð«µ ·\nå² ł\nå² ľ\nåĳ ĩ\nåĨ ı\nè§ ĥ\nå² Ļ\nä¼ ¾\nãĳ ĩ\nä¼ Ń\nä½ ĸ\nä¼ ²\nä½ ģ\né£ ı\nçĭ ĥ\néĹ ¶\næ± §\næ± «\nð£² ĺ\nð£² Ĺ\næ² Ħ\næ² ĺ\nð¬ĩ Ļ\næ± Ń\nã³ ĩ\næ² ĩ\nå¿ ®\nå¿ ³\nå¿ º\nð¬£ ¡\nç¥ ĥ\nè¯ ĩ\néĤ ²\nè¯ İ\nè¯ Ĳ\nå± ĥ\nð« ¸\nð«¸ ©\nå² Ĭ\néĺ ½\nä¢ º\néĺ ¼\nå¦ §\nå¦ ĺ\nð¨ ļ\nð¨ļ ķ\nçº ®\né© ²\nð«ĺ ľ\nçº »\nð¬ĺ ĺ\nð«ĺ Ŀ\nçº ¼\nçİ ¤\nçİ ŀ\nçİ ±\nçİ Ł\néĤ ½\néĤ ¿\nåĿ ¥\nåĿ °\nåĿ ¬\nåĿ ½\nå¼ Ĩ\nèĢ µ\nä¢ ¼\nð¦ Ń\nð¦Ń ľ\nèĮ ĭ\nèĭ §\nèĭ ¾\nèĭ ł\næŀ ħ\nãŃ İ\næŀ ĺ\næŀ į\nçŁ ¼\nçŁ »\nåĮ ¼\nð¬¨ Ĥ\nð¬Ģ ©\nð¬Ģ ª\næĹ ¿\næĺ Ħ\næĺ Ĵ\næĺ Ī\nåĴ ī\nåĴ ĩ\nåĴ į\nå² µ\nå² ½\nå² ¨\nå² ŀ\nå³ Ĥ\nã Ł\nãŁ ĥ\nåĽ ·\nð¬¬ ©\néĴ Ĳ\néĴ Ķ\néĴ ĸ\nçī ¥\nä½ ´\nåŀ Ī\nä¾ ģ\nä¾ ¹\nä½ ¸\nä½ º\néļ ¹\nãĳ Ĭ\nä¾ Ĥ\nä½ ½\nä¾ ĺ\néĥ Ī\nèĪ ł\néĥ Ĳ\néĥ ĥ\næĶ ½\nèĤ Ń\nèĤ ¸\nèĤ ·\nçĭ ī\nçĭ Ŀ\né¥ ³\nå¿ ŀ\nçĤ Į\nçĤ Ĩ\næ³ Ļ\næ² º\næ³ Ĥ\næ³ ľ\næ³ ĥ\næ³ ĩ\næĢ Ĭ\nå³ ĥ\nç© ¸\nç¥ ĭ\nç¥ Ĭ\nð«į £\nð¬£ ³\nð¬ ©½\né¸ ¤\nå¼ ¢\nå¼ ¨\néĻ ĳ\nð¬® ¿\néĻ İ\nð¬¯ Ģ\nåį º\nä¹ ¸\nå¦ Ń\nå§ Ī\nð« °\nð«° Ľ\nè¿ ³\nåı ķ\nð¬³ µ\né© µ\nð¬³ ¶\nä Į\näĮ ¹\né© º\nð«ł Ĭ\nç» ĭ\nç» Ĳ\nçł ī\nèĢ Ķ\nãĽ ĥ\nçİ ¶\nçı ĩ\nçı ħ\nð¬į Ľ\nçı ĭ\nçİ ¹\nçı Į\nçİ ¿\néŁ ¨\nåŀ ļ\nåŀ ¯\nåŀ Ļ\nåŀ ²\nåŁ ı\nåŀ į\nèĢ ĩ\né¿ į\nåŀ İ\nåŀ ´\nåŀ Ł\nåŀ ŀ\næĮ ĵ\nåŀ µ\nåŀ ı\næĭ ¶\nèį ĸ\nèį ģ\nèį Ļ\nèį Ľ\nèĮ Ī\nèĮ ½\nèį Ħ\nèĮ º\nð¬ľ ¬\nèį ĵ\nèĮ ³\nð¦ °\nð¦° ¡\nèĮ Ľ\nèį Ń\nãŃ ķ\næŁ ·\næŁ ĥ\næŁ Ĭ\næŀ ¹\næł Ĳ\næŁ ĸ\néĥ ļ\nåī ħ\nä´ ĵ\nè¿ º\nåİ ĸ\nçł Ĩ\nçł ĳ\nçł Ħ\nèĢ ı\nå¥ ĵ\nä ¶\nä¶ ®\nè½ µ\nè½ ·\nè½ ¹\nè½ º\næĺ º\nðª ¾\nðª¾ ¢\næĺ ½\nçĽ ·\nåĴ ¡\nåĴ º\næĺ ³\næĺ £\næĺ ¤\næĺ «\næĺ ¡\nåĴ ¥\næĺ ª\nèĻ ·\nèĻ ¸\nåĵ ĥ\nå³ ĺ\nèĢ ĳ\nå³ Ľ\nðª¨ °\nå³ Ĺ\nå³ §\nå¸ ¡\néĴ ĺ\nð«ĵ §\néĴ ľ\nð¬¬ ®\nð¬¬ ±\nð¬¬ Ń\néĴ ª\néĴ ¬\néĴ Ń\nçŁ §\nç§ ¬\nä¿ «\nèĪ ģ\nä¿ ľ\nä¿ Ļ\nä¿ į\nåŀ ķ\nè¡ İ\nèĪ £\nå¼ ĩ\nä¾ ´\né¸ §\näı ¡\nèĥ ł\nð¦ Ļ¶\nèĥ Ī\nèĥ ©\nèĥ £\næľ ı\né£ Ĳ\nè¨ Ħ\né¥ »\nåº ¤\nçĸ ¢\nçĤ £\nçĤ Ł\nã ¶\nã¶ ²\næ´ Ń\næ´ ĺ\næ´ ĵ\næ´ ¿\nã³ ļ\næ³ ļ\næµ Ī\næµ ī\næ´ ¸\næ´ ĳ\næ´ ¢\næ´ Ī\næ´ ļ\næ´ º\næ´ ¨\næµ Ĳ\nã³ ĺ\næ´ ´\næ´ £\næģ Ķ\nå® ¬\nçª Ģ\næī Ĥ\nè¢ Ĩ\nç¥ ı\nç¥ Ĳ\nç¥ ķ\nåı ļ\néĻ §\néĻ ŀ\nå¨ Ģ\nå§ ŀ\nå§ ±\nå§ ¤\nå§ ¶\nå§ ½\næŀ ²\nç» ĸ\néª ĥ\nð¬ĺ ¡\nð¬³ ½\nð¬ĺ ©\nð«Ħ §\nå½ ĸ\néª ī\næģ Ŀ\nçı ª\nçı Ľ\nçı ¹\nçĲ Ĭ\nçİ ¼\nçı ĸ\nðª Ł\nðªŁ Ŀ\nçı ½\nçı ¦\nçı «\nçı Ĵ\nð¬į ¤\nçı ¢\nçı ķ\nçı Ŀ\nð«Ń ¼\nåŁ Ĺ\nåŀ ¾\nåŀ º\nåŁ Ĩ\nåŀ ¿\nåŁ Į\nåŁ ĩ\nèİ °\nèĮ Ŀ\nð¬ľ ¯\néĦ Ģ\nèİ ¶\nèİ Ŀ\näĵ ĸ\nèİ Ļ\næł »\næ¡ ł\nð¬ Ĥ\nð¬Ĥ ©\næ¡ Ħ\næ¢ ł\næł ´\næ¢ ´\næł Ĵ\néħ İ\néħ ı\nð«ł Ĩ\nçł µ\nçł ł\nçł «\nçł ¬\nç¡ ģ\næģ §\nç¿ ĥ\néĥ ª\nð¨ Ĳ\nð¨Ĳ Ī\nè¾ Ģ\nè¾ ģ\nð¬ Į\nð¬Į Ĺ\nåī ķ\nèµ Ģ\nåĵ ¢\næĻ ħ\næĻ Ĭ\nåĶ Ŀ\nåĵ ³\nåĵ ±\nåĨ Ķ\næĻ Ķ\næĻ Ĳ\nçķ ĸ\nèļ Ħ\nèļ Ĩ\nð« ĳ\nð«ĳ ¡\nå¸ ±\nå´ ģ\nå³ ¿\nðª¨ ¶\nå´ Ħ\nå¸ ¨\nå ´Ģ\nèµ Ĩ\nð¬ ¬¸\néĴ ·\nð¬¬ »\nð¬¬ ¹\nð¬¬ ¿\nð¬Ń ģ\nçľ ļ\nçĶ ¡\nç¬ «\nåĢ »\nåĢ ´\nèĦ ©\nåĢ ®\nåĢ ķ\nåĢ ŀ\nð« ¢\nð«¢ ¸\nåĢ ĵ\nåĢ §\nè¡ ĥ\nèĻ Ĵ\nèĪ Ń\nèĪ ¯\nèĪ ¥\nçĵ ŀ\né¬ ¯\né¸ °\nèĦ İ\næľ ĵ\nèĥ ²\nèĻ ĵ\né± ½\nçĭ ´\nå³ ±\nçĭ »\nçľ ¢\nð«Ĺ §\nåĭ į\nçĹ Ħ\nçĸ °\nçĹ ĥ\nç« ĺ\nç¾ ĸ\nç¾ ĵ\næ¡ Ĭ\næķ ī\nçĥ ł\nçĥ Ķ\nçĥ ¶\nçĥ »\nð¬Ĭ Ī\næ¶ į\næµ ¡\næµ Ń\næµ ¬\næ¶ Ħ\næ¶ ¢\næ¶ Ĳ\næµ °\næµ Ł\næµ Ľ\næµ ¼\næµ ²\næ¶ ĺ\næĤ Ī\næĤ ĥ\næĤ ¢\nð¬Ĵ Ī\nå® §\nçª ħ\nçª Ĭ\nçª İ\næī ħ\næī Ĩ\nè¢ ª\nè¢ Ĺ\nè¢ ¯\nç¥ §\néļ º\nåł ²\nçĸ į\nð¨ º\nð¨º Ļ\néĻ ´\nç ĥĿ\nçł ®\nãĽ ļ\nåĵ ¿\nç¿ Ģ\nç¿ Ĥ\nåī Ł\nð¬³ ¿\nð«Ħ ¨\nç» ¤\néª į\nð¬ĺ «\nä Ĥ\näĤ ®\nçĲ İ\nçı ¸\nçı µ\nçĲ Ħ\nçĲ Ī\nçĲ Ģ\nçı º\næİ Ń\nåł İ\nåł Ĳ\nåŁ ¼\næİ İ\nåŁ «\nåł Į\næĻ ¢\nð« ®\nð«® ĥ\næİ ŀ\nåŁ ª\nå£ ¸\nãĻ į\nèģ į\nèı Ŀ\nèĲ ļ\nèı ¥\nèİ ¿\näĵ «\nåĭ ļ\näĵ ¬\nèĲ Ĩ\nèı Ĥ\nèı į\nèı ¼\nèĲ £\näĵ ¨\nèı ī\näĵ Ľ\næ¢ ¼\næ¢ ½\næ¡ ²\næ¢ ¾\næ¡ ¯\næ¢ £\næ¢ Į\næ¡ ¹\næķ Ķ\nåİ £\nç¡ Ķ\né¿ İ\nç¡ Ļ\nç¡ ļ\nç¡ Ĭ\nç¡ į\nåĭ Ķ\nä´ ķ\né¾ ģ\néĢ ´\nåĶ ª\nåķ «\nç¿ Ī\nã «\nã« °\næĻ Ļ\nçķ ¤\nð¬± ĸ\nè¶ ¼\nè· Ĥ\nèĽ ĥ\nèļ ²\nð¬Ł ½\nèļ º\nåķ ´\näİ ĥ\nå´ §\nå´ Ł\nå´ ŀ\nå´ Ĵ\nå´ Į\nå´ ¡\néĵ ı\nð«ĵ ¯\nð«Ł ¹\néĵ ķ\nð«Ł ¼\néĵ ĸ\néĵ ĺ\néĵ ļ\néĵ ŀ\néĵ ¥\néĵ ´\nçī »\nçī ¿\nç¨ Ĩ\nç¬ ±\nç¬ ¯\nåģ °\nåģ ¡\né¸ º\nåģ Ń\nåģ ²\nåģ ģ\nã ¿\nã¿ ł\néĦ ħ\nåģ ĵ\nå¾ Ľ\nè¡ Ĵ\nèĪ ³\nèĪ ²\né¸ ¼\næĤ Ĩ\néĦ ĥ\nçĵ »\nä Ŀ\näĿ Ļ\nèĦ ¶\nèĦ ŀ\nèĦ Ł\näı ²\né± ¾\nçĮ ĩ\nçĮ Ĭ\nçĮ Ħ\nè§ ĸ\nðł ħ\nðłħ ¤\nåº ±\nåº ¼\nåº ³\nçĹ ĵ\nä´ Ķ\nç« «\nåł ĥ\néĺ Į\nç¾ Ŀ\nç¾ ķ\nçĦ Ĩ\nçĥ º\nçĦ Į\næ· ı\nð¬ĩ ¹\næ· Ł\næ· ľ\næ· ´\næ· ¯\næ¹ ´\næ¶ ´\nð¬į ¡\nã ¥\nã¥ Ħ\næĥ Ľ\næĥ Ķ\næĤ °\næĥ Ļ\nå¯ ģ\néĢ Ń\nð¬¤ ĩ\nð«į ¯\nè¢ ¼\nè£ Ī\nç¥ ²\nð¬¤ Ĭ\nð«į ²\nè° ŀ\nèī ´\nå¼ ¸\nå¼ ¶\nð¬¯ İ\néļ ĥ\nå© ŀ\nå¨ µ\nå© ¼\nåª ĸ\nå© ³\nå© į\nå© Į\nå© «\nå© ¤\nå© ĺ\nå© ł\nð¬ĺ ¬\nð¬ĺ Ń\nð¬´ Ĥ\nð«ĺ ¦\nç» ¹\nð«Ł ħ\nð¬ĺ ¯\néª ķ\nð«ĺ §\nçµ ľ\nçı ·\nçĲ ²\nçĲ ¡\nçĲ Ł\nçĲ Ķ\nçĲ Ń\nåł ¾\nåł ¼\næı ķ\nãĻ ĺ\nåł §\nåĸ Ĩ\nåł ¨\nå¡ ħ\nåł ł\nçµ ·\nðª £\nðª£ »\nð¡ İ\nð¡İ ļ\nè ĳľ\næĥ İ\nèĲ ³\nèĳ Ļ\néĿ ¬\nèĳ ´\nèĴ ĩ\nèĴ Ī\néĦ ļ\nèĴ ī\nèĵ ĩ\nèĲ ©\nèĳ °\nèĳ İ\néĦ ĳ\nèĴ İ\nèĳ ĸ\nèĴ Ħ\nèĲ ¹\næ£ ¤\næ£ ½\næ£ «\næ¤ ĵ\næ¤ ĳ\nð¬ ĥ\nð¬ĥ Ĭ\né¹ Ģ\næ¤ Ĩ\næ£ ĵ\næ£ ¬\næ£ ª\næ¤ Ģ\næ¥ Ĺ\nð¬ ·\nð¬· ķ\nçĶ ¦\néħ ¦\nè§ Į\nå¥ ¡\nçļ ķ\nç¡ ª\næ¬ ¹\nè© Ł\nð«Ĳ Ĳ\nè¾ Į\næ£ Ĳ\né¾ Ĥ\nð¬ ¹\nð¬¹ ¼\né» ¹\nçī ļ\nçĿ İ\næĻ «\næĻ ª\næĻ ±\nð §\nð§ ¿\nð§¿ ¹\nèĽ ĳ\nçķ ¯\næĸ Ŀ\nåĸ ¤\nå´ ¶\nåµ ģ\nð« ¶\nð«¶ ĩ\nå´ ¾\nåµ ħ\nå´ ¿\nåµ ļ\nç¿ Ļ\nð«ĸ ®\nåľ Į\nåľ Ĳ\nèµ ĳ\nèµ Ĵ\né¿ ı\néĵ ¹\nð¬Ń Ĭ\néĵ ½\nð¨± ĩ\nð«ĵ ¶\néĶ Ĭ\néĶ į\néĶ İ\nð¬Ń İ\néĶ ĵ\nçĬ ĩ\né¢ ĭ\nç¨ Į\nçŃ Ģ\nçŃ ĺ\nçŃ ľ\nçŃ ¥\nçŃ ħ\nåĤ ĥ\nåĤ ī\nç¿ Ľ\nåĤ Ĵ\nåĤ ķ\nèĪ ¾\nçķ ¬\nð«ĸ ¯\nèĦ ¿\nèħ ĺ\nä Ĳ\näĲ ĥ\nèħ Ļ\nèħ Ĵ\nð¬± Ł\né² ĥ\nçĮ °\nð« Ľ\nð«Ľ Ń\nçĮ ¯\nã º\nãº Ħ\né¦ ī\nåĩ ĵ\néĦ Ĺ\nð« ·\nð«· ·\nå» ĭ\nå» Ĩ\néĦ Į\nç² ¢\néģ Ĩ\næĹ Ĳ\nð¬® ±\nçĦ ŀ\nð¬Ĭ ¤\næ¬ »\nð£ ¸\nð£¸ £\næº ļ\næº ģ\næ¹ Ŀ\næ¸ °\næ¹ ĵ\nã ´\nã´ Ķ\næ¸ Ł\næº ł\næ¸ ¼\næº ĩ\næ¹ £\næ¹ ĳ\næº ŀ\næĦ Ĳ\næĦ ĥ\næķ ©\nçĶ ¯\næ£ ¨\næī Ĭ\nè£ £\nç¥ ¼\nå© »\nåª Ĩ\nåª ŀ\nãĽ ¹\nåª ĵ\nåª Ĥ\nåª Ħ\næ¯ µ\nçŁ ŀ\nð¬´ ĥ\nð«ĺ ¨\nç¼ Ĭ\nç¼ Ĳ\néª Ļ\nçĳ ĥ\nçĳ ĵ\nçĳ ħ\nçĳ Ĩ\nä´ ĸ\nçĳ ĸ\nçĳ Ŀ\nçĳ Ķ\nçĳ Ģ\nð¤ §\nð¤§ Ľ\nçĳ ³\nçĳ Ĥ\nå¶ ħ\nçĳ ĳ\néģ ĺ\né« ¢\nå¡ ¥\nåł ½\nèµ ª\næĳ Ľ\nå¡ Ŀ\næĲ Ĵ\næĲ Į\nèĴ ±\nèĴ ¨\nèĵ ı\nèĶ Ģ\nèĵ ¢\nèĵ Ĥ\nèĴ »\nèĵ £\næ¤ ¹\næ¥ ª\næ¦ ĥ\næ¦ ħ\næ¥ Ĵ\næ¥ ©\næ¦ ĩ\næ¤ ¸\næ¥ Ļ\næŃ ħ\nð¬ ª\nð¬ª ©\nç¢ ĥ\nç¢ ı\nð¬Ĵ Ķ\nç¢ Ī\näĥ ħ\nç¡ ¿\néĦ ł\nè¾ Ĵ\nð¬¨ İ\nð«Ĳ ĵ\né¾ Ĩ\nè§ ľ\nä £\nä£ ĺ\næļ ķ\né¹ į\nð« «\nð«« ĩ\nã¬ Ĭ\næļ ħ\nè· ±\nèľ Ĳ\nèľ İ\nåµ ²\nèµ Ĺ\néª ±\néĶ ĸ\nð«ĵ ¹\néĶ ĺ\néĶ ³\néĶ §\néĶ ª\nð¬Ń ļ\néĶ «\néĶ ¬\nð¬Ń Ľ\nç¨ ĳ\nç¨ Ļ\nä ħ\näħ Ł\nð¬ ķ\nð¬ķ Ĥ\nçŃ »\nçŃ ¼\nçŃ ¶\nçŃ ¦\nçŃ ¤\nåĤ º\né¹ İ\nåĥ ĩ\nèī ħ\nèī ī\nè° ¼\nè² Ĩ\nèħ ½\nèħ ¨\nèħ ¯\né² ī\né² Ĭ\né² Į\nä² Ł\nð¬¶ ĭ\nð¬¶ į\né² ı\néĽ Ĭ\nçĮ º\né£ Ķ\nè§ Ł\nð¦ Ŀ¼\né¦ Į\nè£ Ľ\nå» Ĵ\nçĺ ħ\néĦ ĺ\né¹ Ĵ\néĦ ľ\néº Ģ\néĦ £\néĺ ĺ\nð«Ķ ¶\nçħ ģ\nçħ ĥ\nçħ ´\nçħ ĭ\nçħ Ł\nçħ ĵ\næ» ł\næº į\næº ¹\næ» Ĩ\næ» ī\næº ¦\næº µ\næ¼ ·\næ» §\næ» ĺ\næ» į\næĦ Ń\næħ ¥\næħ Ĩ\nå¡ ±\nð« ĮĢ\nè £¼\nç¦ ĭ\nç¦ Ķ\nç¦ ĺ\nç¦ Ĵ\nè° «\né¹ Ķ\nð«ĸ ³\næĦ į\nå« Ħ\nåª ±\næĪ ¤\nåĭ ł\næĪ £\nð«ĺ ª\nð«ĺ ¬\nç¼ ŀ\nèĢ ¤\nçĳ §\nð« ŀ\nð«ŀ ©\nçĳ ¨\nçĳ ±\nçĳ ·\nçĳ ¢\næĸ ł\næĳ ı\nå¢ ķ\nå¢ Ī\nå¢ Ĳ\nå¢ ĺ\næĳ ´\néĬ İ\nð¡ Ĳ\nð¡Ĳ ĵ\nå¢ ļ\næĴ ĸ\nðª ¤\nðª¤ Ĺ\néĿ ½\néŀ ģ\nèĶ Į\nèĶ Ī\nèĵ °\nèĶ ¹\nèĶ Ĭ\nåĺ ı\næ¦ °\næ¦ ĳ\næ§ ļ\nð£ Ĺ\nð£Ĺ ĭ\næ§ ľ\næ¦ į\nçĸ Ĳ\nð¬¸ ĺ\néħ º\néħ ¾\néħ ²\néħ ´\nç¢ ¶\näĥ İ\nð¬Ĵ Ĺ\nç¢ ¨\nð¥ Ķ\nð¥Ķ ²\nç¢ ¹\nç¢ ¥\nåĬ Ĥ\nð«ļ ĸ\nä´ Ĺ\nå¤ ¥\nçŀ į\né¹ ĸ\nã¬ İ\nè· ½\nèľ ¾\nå¹ ĸ\nå¶ į\nåľ Ļ\nð¨± ı\néĶ º\néĶ ¼\néĶ ½\nð¬Ń ¤\néĶ ¾\néĶ ¿\néķ ĥ\néķ Ħ\néķ ħ\né¦ Ŀ\né¹ Ļ\nç® ¨\nç® ĸ\nåĬ Ħ\nåĥ ¬\nåĥ ¦\nåĥ Ķ\nåĥ İ\næ§ ĥ\nãĻ ¦\né² Ĵ\né² ķ\nð«ļ ķ\né² ĸ\né² Ĺ\né² ĺ\né² Ļ\nð¬¶ Ĳ\nð¬¶ ı\nð ©½\nð©½ ¾\nå¤ Ĳ\nçį į\né£ Ĺ\nð¬¸ ļ\nåĩ ĺ\nå» ĳ\nå» Ļ\nçĺ Ĺ\nçĺ ¥\nçĺ ķ\né² Ŀ\néĦ «\nçĨ ĩ\næ¼ ¹\næ¼ ĸ\næ½ Ĩ\næ¼ ¤\næ½ ©\næ¼ ¼\næ¼ ´\nã ½\nã½ ı\næ¼ Ī\næ¼ ĭ\næ¼ »\næħ ¬\nçª ¬\nçª Ń\nã ®\nã® ¾\nð¬¤ Ŀ\nè¤ ķ\nç¦ Ľ\nç¦ ļ\néļ ©\nå« ķ\nå« Ń\nå« ľ\nå« ª\nð¬ ĻĤ\nã »\nã» ¬\néº ¹\nçĴ Ĩ\næ¼ ¦\nåı ĩ\nå¢ £\nå¢ ¦\nå¢ ¡\nåĬ Ĳ\nèĸ ģ\nèķ °\nèĶ ĥ\né¼ Ĵ\næ§ ±\né¹ Ŀ\nç£ ı\nç£ ī\næ® £\næħ Ń\néľ ħ\næļ µ\næļ ²\næļ ¶\nè¸ ¦\nè¸ £\näĹ ĸ\nèĿ ĺ\nèĿ ²\nèĿ ¤\nåĻ ĩ\nå ĻĤ\nåĻ Ģ\nç½ ¶\nå¶ ²\nå¶ ĵ\nãł ĩ\nå¶ Ł\nå¶ Ĵ\néķ Ĩ\néķ Ī\néķ ĭ\néķ İ\nð¬Ń ©\néķ ķ\nç¨ ¹\nåĦ ĩ\nçļ ŀ\nçļ Ľ\nä´ ĺ\nèī İ\nèī ı\né¹ Ł\nð©¾ ĥ\né² ¦\né² ª\né² ¬\næ© ¥\nè§ Ń\né¹ ł\né¹ ¡\nç³ ĩ\nç³ Ī\nç¿ ¦\né¹ ¢\né¹ £\nçĨ Ľ\næ½ ĸ\næ½ µ\nã µ\nãµ Ĳ\næ¾ Ĥ\næ¾ Ľ\nçĳ ¬\næ½ ½\næ½ ¾\næ½ ı\næĨ Ń\næĨ ķ\nð¬¸ £\næĪ Ń\nè¤ ¯\nç¦ ¤\nð«į ½\nå« ½\néģ ¹\nð¬´ Ĭ\nçĴ ¥\nçĴ ²\nçĴ Ĵ\næĨ Ļ\næĵ Ĳ\néĦ ¹\nèĸ ³\néŀ Ķ\né» ĩ\nð¬ ŀ\nð¬ŀ Ł\nèķ Ĺ\nèĸ ¢\nèķ ¹\næ© ŀ\næ© ĳ\næ© ¦\néĨ ĳ\nè§ ±\nç£ ¡\nð¥ ķ\nð¥ķ ¢\nç£ ľ\nè± ®\nð«Ł ¦\nð¬º Ī\nð«ł ľ\né¹ ¾\nèĻ ¤\næļ ¿\næĽ Į\næĽ Ī\nã¬ ļ\nè¹ ħ\nè¸ ¶\näĹ Ľ\nèŀ Ĺ\nçĸ ģ\nãł ĵ\nå¹ ª\nðª ©\nðª© ĺ\nå¶ ¦\nð¬Ń ¬\nð¨± ĳ\nð¬Ń ¯\né¦ ŀ\nç© Ħ\nç¯ ļ\nç¯ ¯\nç° ī\né¼ ½\nè¡ ł\nçĽ ¦\nèŀ £\nç¸ ¢\né² Ń\né² ¯\né² °\né² º\né² ¹\nð«Ĺ ´\näº ¸\nçĻ Ģ\nçĺ Ń\nð¬¸ ¦\nç¾ ±\nç³ Ĵ\nçĩ ĭ\nçĨ »\nçĩ Ĭ\nçĩ ļ\nçĩ ı\næ¿ ©\næ¿ ĭ\næ¾ ª\næ¾ ½\næ¾ ´\næ¾ Ń\næ¾ ¼\næĨ ·\næĨ º\næĩ Ķ\né» ī\nå¬ Ľ\né¹ ¨\nç¿ ¯\nð«Ħ ·\nçĴ ±\nð¤ ©½\nçĴ ¬\nçĴ ®\né« ½\næĵ ¿\nèĸ ¿\nèĸ ¸\næª ĳ\næ« Ĩ\næª ŀ\néĨ ¨\nç ¹Ħ\nç£ ¹\nç£ »\nçŀ «\nçŀ µ\nè¹ Ĳ\nèŁ ı\nã ĺ\nãĺ İ\nð¬Ń ³\néķ ¤\nð¬Ń ¶\nð«Ķ į\néķ ¥\néķ ¨\nð¬Ń ¸\nð¨± Ķ\nð¬Ń ¼\nð«Ķ İ\nçŁ °\nç© Ļ\nç© ľ\nç© Ł\nç° ķ\nç° ĥ\nç° ı\nåĦ ¦\néŃ ĭ\næĸ ¶\nèī ļ\nð¬¸ ª\nè° ¿\nä² ł\nð¬¶ Ł\né² ¾\nð¬¶ ł\né² ¿\né³ ģ\né³ Ĥ\né³ Ī\né³ ī\nçį ¯\näĹ ª\né¦ ĺ\nè¥ ķ\nè¥ ļ\nð¬¶ ¨\nèŀ ±\nçĶ ĵ\nå¬ ¬\nå¬ ¥\nð¦ Ī\nð¦Ī ¡\nð«Ħ ¸\nçĵ Ģ\néĩ Ĳ\né¬ ¶\nçĪ ĩ\néŀ ³\néŀ ®\nð¬Ł ģ\nèĹ Ł\nèĹ ¦\nèĹ ¨\né¹ ²\næª «\né» ¡\nç¤ ŀ\nç¤ Į\nð¥ ĸ\nð¥ĸ ¨\nè¹ ¢\nè¹ ľ\nèŁ «\näĹ ´\nåļ ļ\né« ĥ\néķ ®\néķ ±\néħ Ĥ\né¦ §\nç° ł\nç° Ŀ\nç° °\né¼ «\né¼ ©\nçļ ¦\nèĩ ĳ\nä² ¢\né³ ĳ\né³ Ĵ\né¹ ±\né¹ ¯\nçĻ Ĺ\nð¦ Ĵ\nð¦Ĵ į\næĹ ŀ\nç¿ ·\nåĨ ģ\näİ ĸ\nçĢ Ķ\nçĢ į\nçĢ Į\nè¥ ľ\nä´ Ļ\nð¬Ļ Ĭ\nåļ Ń\nã °\nã° Ģ\né¬ ·\néĨ Ń\nè¹ ¯\nèł ĭ\nç¿ ¾\né³ ĺ\nåĦ ³\nåĦ ´\né¼ Ĺ\nð¬¶ Ń\nð©¾ Į\né³ ļ\né³ Ľ\néº ĳ\néº ĸ\nèł ĥ\nå½ Ł\nå¬ ¿\né¬ Ĵ\nèĺ ĺ\næ¬ Ĥ\né Ĩµ\né¢ ¥\nçĶ Ĺ\nð¨ Ł\nð¨Ł ł\nå· ĩ\néħ ħ\né« İ\nçĬ ¨\nð¬¶ ®\nð¨ Ń\nð¨Ń ī\nã¸ Į\nçĪ Ķ\nçĢ ±\nçĢ ¹\nçĢ ¼\nçĢ µ\nè¥ «\nåŃ ħ\néª ¦\nð¬Ļ ĭ\nèĢ °\nð¤ «\nð¤« ī\nçĵ ĸ\né¬ ĺ\nè¶ ¯\nð¬º ĵ\nç½ į\né¼ ±\né³ ł\né³ ¡\né³ £\nçĪ Ł\nçĪ ļ\nçģ Ī\néŁ Ĥ\nç³ µ\nèĺ ¼\nç¤ µ\né¹ ´\nèº Ķ\nçļ Ń\né¾ ¢\né³ ¤\näº ¹\nç± ¥\né¼ ·\nð«ļ Ń\nçİ ĥ\néĨ ¾\né½ ĩ\nè§ ¿\nèł ¼\n× §\n× ¤\n× Ľ\n×ķ× ª\n× ¡\n×Ļ× Ŀ\n× ¦\n× Ĵ\n× ĺ\n×ķ× ¨\n× Ŀ\n×ķ× ľ\n× ĸ\nà¹ Ĥ\nï º\nðŁ į\nðŁ Ĳ\n×Ļ× ¨\nï »\nðŁ ĳ\nðĿ Ĳ\nðŁ ı\nðŁ Ķ\nðŁ Į\nðŁ İ\nðŁ ĵ\n× Ł\nðĿ ĳ\n×ķ× ĵ\nï ¦\nĠ× ķ\n×ķ× ĳ\nà¸Ń à¸ĩ\nðĿ ĺ\n×Ļ× ª\nðĿ ķ\nà¸Ĺ à¸µà¹Ī\nØ§Ø ¦\nðŁ ¤\n×ķ× Ł\nØ± ÙĬ\n×Ļ× ľ\nà¸£ à¸°\nà¸² à¸¢\nï ¯\nï ®\nà¸² à¸¡\nâ ĩ\nðŁ ¥\nï Ń\nðĿ Ļ\n×ķ× ł\ná ½\nĠ× Ľ\nðŁ ļ\nâ ļ\nï §\n×ĳ ×¨\n×Ļ× ł\ná ´\nĠ× Ĺ\ná ¼\nðĿ Ĺ\nĠ× ¢\n×Ļ× Ķ\nãģ£ ãģŁ\nãģĵ ãģ¨\ná ¸\nÙĬ ÙĨ\nãģª ãģĦ\nØ§ Ø¹\nà¸ ¨\nà¹Ī à¸ĩ\n×Ļ× ĵ\n×ŀ ×©\ná Ī\n×ł ×Ļ\n×Ļ× ĳ\nï ¥\nðĿ ĵ\nĠ× Ļ\n× ļ\nà¸± à¸ĩ\nâ ĵ\nï ¤\nĠØ§ÙĦ Ø£\nà¸² à¸ģ\nà¹ī à¸Ļ\nà¹Ģ à¸£\n×ķ× Ŀ\ná ¹\nà¸ ¶\n×Ļ× §\nà¸ ĭ\nà¸Ħ à¸£\nà¸ ĺ\nà¸± à¸ģ\nðŁ ķ\nÙĪ ÙĨ\nà¸Ń à¸¢\nâ Ĭ\nðĿ Ĵ\nĠØ§ÙĦ Ø¹\nà¸² à¸Ļ\n×Ļ× Ł\nÙĦ ÙĬ\n×Ļ× ©\nà¸Ľ à¸£à¸°\nà¹Ģ à¸Ľ\nĠ× ł\n×ķ× ¡\nà¸ ł\nÙħ ÙĨ\n×ķ× ¢\n×ķ× ŀ\nâ Į\nðŁ §\nà¹ĩ à¸Ļ\nà¸ į\nã İ\ná µ\nĠØ§ÙĦ Ø³\n×ķ× §\nà¸« à¸¥\nðŁ ĩ\nâ ı\nðŁ ¦\nĠ×Ķ ×ŀ\nÙĪ Ø§\nĠ× ª\n×¨ ×Ĳ\nà¸Ń à¸Ļ\nà¸ ©\nà¹Ī à¸§\n×ķ× ¦\ní Ĺ\nã Ħ\nï ¨\nï ¹\nâ İ\nï ²\nðĿ ļ\nð Ĳ\nà¸Ħ à¸§\nà¸« à¸Ļ\nĠ× ¨\nØ¨ ÙĬ\nà¸£ à¹Į\nØ± Ø§\nØ´ Ø±\n×ķ× Ĺ\n×ķ× ¤\n×ķ× ©\n×ķ× Ĵ\ní Ŀ\nâ Ľ\nà¸ķ à¸´\nà¹Ģ à¸ģ\nï ³\nï ±\nà¸Ķ à¹ī\në ¹\nï ¬\ná ¿\nðŁ Ľ\nðĿ ĸ\nà¹Īà¸² à¸ĩ\nà¸¹ à¹ī\nĠ×Ķ ×Ĳ\nĠØ§ÙĦ ØŃ\n×¤ ×¨\nÙĪ Ùħ\nà¹Ģ à¸¥\ní ĸ\n×Ļ× ¢\nì Ī\ní ĵ\nðŁ ħ\ná ł\nà¸Ħà¸§ à¸²à¸¡\nà¸Ī à¸°\n×ł ×Ķ\nĠ× §\nà¸ Ł\nà¹ī à¸ĩ\nà¸« à¸¡\nØª Ùħ\n×ľ ×Ļ\nÙĬ Ø¯\nà¹Ī à¸Ļ\n×Ĺ ×¨\n×© ×¨\nà¹Ģ à¸Ĺ\n×ŀ ×¨\në ĸ\nØ¹ ÙĦ\n×ŀ ×¢\nâ ²\n×ľ ×Ķ\nĠ× ¤\nà¸Ń à¸ģ\nØ³ ÙĦ\n×Ļ× ŀ\nÙĤ ÙĬ\ní İ\nØª ØŃ\n×Ļ× ¡\n×Ļ× Ĺ\ní Ľ\nï °\nâ ½\ná ī\ná Ĭ\ná ¨\nÙĩ Ø§\nĠ×ľ ×Ķ\n×ķ× Ĳ\nÙħ Ø§\nà¹īà¸Ń à¸ĩ\nØ± Ø¨\nĠØ§ÙĦ Ø¬\n×ŀ ×ĵ\nÙħ ÙĦ\nØª Ø±\nà¹Ģ à¸Ķ\n×§ ×¨\ní ħ\nì ¼\nê ¿\nã Ī\ná Ĳ\nðŁ Ĺ\nê ¦\ná ĭ\nðĿ Ķ\nà¹Ģà¸Ľ à¹ĩà¸Ļ\nà¹ĥ à¸«\nà¸¡ à¸²\nà¸§ à¹Īà¸²\nà¸¡ à¸µ\nà¸µ à¹ī\nà¹Ħà¸¡ à¹Ī\nÙĨ ÙĬ\nØ ¤\nà¸£ à¸²\n×ķ ×Ļ\nãĤĪ ãģĨ\nà¸´ à¸Ķ\n×Ļ× ¤\n×Ĺ ×ľ\nÙĤ Ø¯\nà¹Ģ à¸ª\n×Ļ× ĺ\nà¸ģ à¸¥\n×¨ ×Ľ\n×ķ× Ľ\n×Ļ× Ľ\në Ī\në ĥ\nðŁ ĸ\ná ħ\nâ ¼\nã ī\nà¹Ħ à¸Ķà¹ī\n×ª ×Ļ\n×Ļ× Ĳ\nĠØ§ÙĦ Ø¥\nà¸ł à¸²\nà¸£ à¸´\nÙĤ Ø©\nØŃ Ø¯\nê »\nì ±\n×ª ×Ĺ\nì º\nâ ĭ\ná Ħ\ná ¾\nâ µ\nâ ¾\nĠÙĪ Ø§ÙĦ\n×ł ×ķ\nÙ Ģ\nÙĬ Ø§\nà¸ģ à¹ĩ\n×ŀ ×Ķ\nãģĦ ãĤĭ\nØ¹ Ø¯\nĠØ§ÙĦ ÙĨ\nĠ×Ķ ×©\nØ ¦\nà¸± à¹īà¸ĩ\nà¸£ à¸±à¸ļ\nÙĪ ÙĤ\nãģ§ ãģį\nà¹Ģ à¸ŀ\n×Ľ ×ľ\n×ĺ ×¨\nà¸± à¸Ķ\nà¸Ń à¸²\nì ¢\nà¸Ń à¸ļ\nà¸ķ à¸£\nà¹Ģ à¸Ĭ\nì Ķ\nãģĹ ãģ¾\në ģ\në ķ\nðŁ Ļ\nâ Ĵ\ná ¶\nà¹ģ à¸¥\nÙĨ Ø§\nà¹ĥà¸« à¹ī\nà¹Ħ à¸Ľ\n× £\nà¸± à¸§\nà¸² à¸ĩ\n×ĵ ×¨\n×ĳ ×ľ\n×¤ ×Ļ\nĠ× ĵ\nĠØ§ÙĦ Ùģ\nà¹Ģ à¸Ĥ\n×© ×Ķ\n×Ĳ ×¨\në ¬\nãģ« ãģª\nÑĢ Ð¾\nà¸§ à¸´\nÙħ Ø±\n×Ĳ ×ª\nÙĥ Ø±\nØ³ Ø¨\nÙĨ Øª\nãģĹ ãģĦ\nØ§ Ø¬\nà¸Ń à¸£à¹Į\nÙĥ ÙĦ\nØ³ Ùħ\nà¸ª à¸´\n×Ļ× ¦\në Ŀ\ní ľ\nì ī\ná Ĩ\nÙĩ Ùħ\nà¸Ļ à¸µà¹ī\nãģĤ ãĤĭ\nãģĦ ãģ¦\nØ³ ÙĬ\n×ľ ×Ĳ\nØ¯ Ø±\nãģ ļ\nÙĪ Ø¬\nĠØ§ÙĦ Ø®\nØµ Ø±\ní ı\nà¹īà¸² à¸ĩ\nà¸¸ à¸Ķ\n×ķ× ĺ\n×ĳ ×¢\ní Ĩ\nà¸Ĭ à¸²\nà¸£ à¸¡\n×© ×ŀ\n×ŀ ×¡\nê ´\nì ´\në ľ\nì ¿\nì ©\në »\nâ ¤\nðŁ Ĩ\ná Į\ná ķ\nØ° Ø§\nà¸Ĺ à¸³\nà¸ķ à¹Ī\nĠØ§ÙĦ ÙĤ\nÙĦ Ùĥ\nà¸¹ à¹Ī\nà¸Ħ à¸¸\nÙĬ Ùħ\n×ł ×Ļ×Ŀ\nà¸·à¹Ī à¸Ń\nÙĪ Ø¹\nãĤ ĩ\nØ§ ÙĤ\nĠ×ĳ ×¢\nà¹Ģ à¸¡\nØ¬ Ùħ\ná» «\nãģĵãģ¨ ãģĮ\nØ¨ Ø¯\n×ķ× Ķ\n×© ×ľ\nÙĩ Ø±\nà¹Ģ à¸Ļ\nãģ ¹\ní ĭ\nì »\nì ½\në Ń\nì Į\ní Ģ\në Į\në º\nã Ĭ\nà¹ĥ à¸Ļ\nĠ× Ĵ\nà¹ Ĩ\nà¸Ī à¸²à¸ģ\nà¸§ à¸¢\nà¹ĥ à¸Ĭ\nà¸ĩ à¸²à¸Ļ\nĠØ§ÙĦ Ø´\nØ§ ØŃ\nà¹īà¸² à¸Ļ\nà¸·à¹Ī à¸Ńà¸ĩ\n×Ĳ ×Ļ\nØ¨ ÙĦ\nãģ¨ æĢĿ\n×ł ×¡\nãģ¾ ãģĽ\nÙĥ ÙĨ\n×¢ ×¨\nĠØ§ÙĦ Ø¯\n×© ×ª\ní ŀ\nÙħ Ø³\nØµ ÙĦ\n×ķ×ł ×Ķ\nØ§Ø± Ø©\nÙĦ Ùħ\nà¸ª à¸¡\nØ£ ÙĨ\n×ª ×¨\n×Ĳ ×ŀ\nØ¹ Ø¨\nØ® Øª\nãĤ ĥ\nì ¡\nì £\nÐ¸Ð² Ð°\nà¸ª à¸±\nà¸¶ à¸ģ\nì ¸\në Ĩ\nÐ°Ð»ÑĮ Ð½\nì ³\nì į\nê ¼\nê ½\nì ı\nã Į\nã ı\nï ©\nê ª\ná İ\nĠ× ĸ\nà¸ģ à¸±à¸Ļ\n×Ļ ×ķ\nà¸Ħ à¸Ļ\n×ł ×ķ×ª\nà¸ľ à¸¹à¹ī\nà¹ĥ à¸Ī\nãģĦ ãģŁ\nÙģ Ø±\n×ĺ ×Ļ\n×¦ ×Ļ\nãĤĤ ãģ®\nĠØ§ÙĦ Øµ\nãģ¾ãģĽ ãĤĵ\nØ¯ Ø©\n×ĳ ×Ļ\nĠØ§ÙĦ Ø±\nĠ×ŀ ×Ĳ\nà¸ª à¸³\nà¹Ģ à¸«\nØ¹ Ø±\nãģª ãģı\nà¸ģà¸£ à¸°\n×ĳ ×ĵ\nà¹Ģ à¸Ī\n×Ļ× ļ\n×Ĺ ×Ļ\nÙĬ Ø¹\n×© ×ĳ\nÙĨ Ø©\nÙĪ Ø¶\nÙĦ Ùģ\nÙĢ ÙĢ\n×¤ ×¢\ní Ī\n×ŀ ×§\nà¸ Ĳ\nØŃ Ø©\nØ§ Øµ\nÑĭÐ² Ð°\nà¸Ħ à¸¡\nà¸§ à¸±\nà¸Ľ à¸¥\nì Ł\ní ļ\në ´\në ĳ\në ī\në ĩ\nì ¨\në ±\në İ\nâ ¬\ná ¥\ná Ĺ\ná Ľ\ná į\nÅ ©\nà¸Ķ à¸µ\nÃ´ i\nĠ× ¡\n×ľ ×ķ\ná»Ŀ i\nà¸Ħà¸¸ à¸ĵ\nÃ¢ y\nà¸Ļ à¸²\n×Ĺ ×ĵ\n×ĵ ×Ļ\nà¸« à¸²\nØ¬ ÙĦ\nà¹Ģ à¸§\nãĤĩ ãģĨ\nÙħ Ø©\nĠØ§ÙĦ Ùĥ\nĠ×Ķ ×¢\nØ¬ Ø±\n×ĸ ×¨\nØ§ Ø·\n×Ľ ×ª\n×ķ×ł ×Ļ×Ŀ\nØŃ Ùħ\nê ¶\nØ± Ùĥ\nĠ×ľ ×¢\n×ķ× ĸ\nà¸ª à¸£\n×¦ ×ľ\nØ ¢\nØ§ Ø³Øª\nà¹Ī à¸¡\nØ® Ø±\n×¦ ×¢\n×Ļ×¨ ×ķ×ª\nØ§Ø¯ Ø©\nØ´ Ø§Ø±\n×ŀ ×Ĺ\ní Ĵ\nà¹Ģà¸£ à¸µà¸¢\n×Ĺ ×§\nØ§Ø «\nà¸£ à¸ĩ\nà¹Ģ à¸ķ\nà¸Ī à¸³\nà¸ Ŀ\nà¹Īà¸² à¸¢\nà¸Ħ à¸¥\nÙĤ ÙĪ\nÐ¸ÑĩÐµÑģ Ðº\nà¸ĵ à¹Į\nà¸± à¸¢\nÙħ Ø¹\në ¨\në ¿\në ®\nï ´\nì ¥\nì «\në µ\ná ¡\nâ į\nð ĵ\nâ °\nà¸Ĥ à¸Ńà¸ĩ\nÙ ĭ\nà¸ģ à¸±à¸ļ\nãģ® ãģ§\nà¹ī à¸§\nà¸Ńà¸¢ à¹Īà¸²à¸ĩ\nãģ Ń\ná»ĩ t\nà¸ķ à¹īà¸Ńà¸ĩ\n×ŀ ×Ļ\nà¹ģ à¸ļ\n×Ĵ ×¨\nÙĪ Ùģ\nÙĤ ÙĦ\nà¸łà¸² à¸ŀ\n×¨ ×Ļ\nà¸¥ à¸²\nÙĬ Ø³\nĠ× ¦\nÙĬ Ùģ\nĠ× ĺ\nà¸ľ à¸¥\nÃ¡ ng\nà¸£ à¸§\nĠ×ŀ ×©\n×Ĳ ×ķ×ª\n×ĸ ×Ķ\nà¸¹ à¸ģ\nà¸Ļ à¸±à¸ģ\nØ§ÙĨ ÙĬ\nØ¯ Ø§\nãģ ³\n×Ľ ×Ł\nãĤī ãĤĮ\nãĤĮ ãģ°\n×ª ×§\nÃº c\nÙĪ Ø²\n×Ļ×¨ ×Ķ\nĠn gh\nÃ¡n h\nĠ×ķ ×Ĳ\ná» ħ\nà¸ª à¸¸à¸Ķ\në į°\nØ§ Ø¶\nØ§ÙĦ ÙĬ\nØ¨ Ø§Ø±\nØ¹ Ùħ\nà¸ļ à¸²\nØª Ø¬\nà¸ŀ à¸£\n×ķ×¨ ×Ķ\náº£ ng\nØ® ÙĦ\nà¸ ī\náº¯ c\n×© ×Ļ×Ŀ\ní Ķ\nÙģ Ø³\n×Ļ× Ĵ\nÐ¿ ÑĢ\nĠØ§ÙĦ Ø«\nØ³ Ø·\nà¸£ à¸¹à¹ī\nà¸µà¹Ī à¸¢\nà¸Ń à¸Ķ\nãģª ãĤĬ\n×Ĵ ×ĵ\nãģĦ ãģ¾ãģĹãģŁ\n×¡ ×§\nØ® Øµ\nla ÅŁ\nÐµÐ½ Ð½Ð¾\nØ¨ ØŃ\nà¸ª à¸Ļ\nà¸ ®\n×¨×Ĳ ×©\nÙħ ÙĪ\nØ¯ÙĬ Ø¯\nà¸© à¸²\n×ķ× ļ\nãĥ§ ãĥ³\nà¸ķ à¸¸\nĠê µ\nĠÑģÐ² Ð¾\n×¦ ×ĳ\nà¸Ń à¸¡\nà¸Ľ à¸£\nØª Ø¹\n×Ķ ×ª\nØ§Ùħ ÙĦ\n×ŀ ×ł\nç ¶ļ\nà¸ ¤\ní į\në ĺ\në ¤\nì ĳ\nâ ´\nã ĭ\nĠØ¨ Ø§ÙĦ\ná»ģ u\nĠØ§ÙĦ ÙĦ\nà¸ķ à¸±à¸§\nØ° Ùĩ\nà¸¶ à¸ĩ\nà¹ĥà¸Ĭ à¹ī\ná»ĵ ng\nà¸Ļ à¸±\nà¸¡ à¸²à¸ģ\nãĥ Ł\n×ŀ ×ķ\nà¸Ĺ à¸¢\ná»Ļ i\náº ±\náº£ o\nà¹Ĥ à¸Ķ\n×Ĳ ×ľ\nà¸ª à¸²à¸¡\nÙĪ Ø¨\nà¸Ĺ à¸¸\nà¸¢ à¸±à¸ĩ\n×¢ ×ª\n×ķ×ł ×ķ×ª\nà¸Ĥ à¸¶\nà¸Ĥà¸¶ à¹īà¸Ļ\nà¸ģ à¹Ī\náº «\ná»ĳ c\nãģĹ ãĤĩãģĨ\ná»ĭ ch\nĠ×Ĳ ×ķ×ª\nĠ×© ×Ĳ\n×Ľ ×ķ×ľ\ná»Ļ c\nØ¹ Ø©\nà¸Ĺ à¸µ\nà¹Ģ à¸Ń\nÙĥ Øª\nãģ »\náº »\nìĹ ħ\nà¸Ń à¸Ńà¸ģ\nØ§ÙĨ Øª\nà¹Ħ à¸£\nĠ×Ĳ ×Ĺ×¨\nØ· Ø±\nÙĨ Ø¯\nà¸· à¹īà¸Ń\nØ· ÙĦ\n×Ĳ ×Ķ\nuy Ãªn\ní ĸī\n×ĳ ×Ķ\nà¸Ħ à¹Ī\nà¸Ĭ à¹Īà¸§\nãģĤãĤĬ ãģ¾ãģĻ\nÙĬ Ø¨\n×§ ×ľ\nãĥ Ļ\nÄ ©\nØ³ Ø±\nà¸² à¸§\nãĤ ±\nà¸ļ à¸£à¸´\n×¨ ×Ĵ\ná»ĥ u\nØŃ Øª\n×ķ×ŀ ×Ļ\nØ¨ ÙĨ\nêµ Ĳ\nÄŁ u\nãģª ãĤĵ\n×ĳ ×§\nĠ×¤ ×¨\náº¯ n\nØŃ ÙĦ\n×ĳ ×Ĺ\náº¥ u\n×ĳ ×ķ×ĵ\nãĥ ¯\nĠ×ľ ×§\nà¸± à¸į\nà¸ŀ à¸´\n×Ĺ ×Ķ\n×ĸ ×Ľ\nãĥ¼ãĥ ł\nÑĤ ÐµÐ»ÑĮ\n×ŀ ×Ļ×ĵ\nÙĬ Ø®\náº ³\nØª Øµ\nà¸ĺ à¸´\nè¾ ¼\nì ĵ\nÙĥ Ø©\nÙĤ Ø¨\nà¸Ħ à¹Į\nà¹īà¸² à¸¢\nà¸ĵ à¸°\nà¸² à¸°\në Ĵ\nê ¾\në ·\nì ĩ\nê º\nì ģ\në Ģ\nì ¾\në ½\në ļ\nì Ń\nì İ\ná ĳ\në Ĺ\nê Ĵ\nà ¡\nà ¬\nðĲ Į\nã ĩ\nðĿ Ħ\nĠ×ľ ×Ĳ\nãģ¨ ãģĦãģĨ\nĠn hi\n×Ļ ×ķ×ª\nĠ×© ×Ķ\nà¹ģà¸¥ à¹īà¸§\nÆ°á»Ľ c\nà¸Ķà¹ī à¸§à¸¢\nà¸Ĺ à¸²à¸ĩ\n×ł ×ª\n×¤ ×ª\nà¹ģ à¸ķà¹Ī\nÆ° ng\nà¸Ńà¸¢ à¸¹à¹Ī\nà¹ī à¸³\nĠ×Ĳ ×ľ\nÙĥ Ùħ\náº¥ p\nà¸¥ à¸ĩ\nãģŁ ãĤģ\n×Ĵ ×ľ\nà¸« à¸£\nĠÑĢ Ðµ\nà¹Ģà¸Ĥ à¹īà¸²\nÙĤ Ø±\nĠ×Ķ ×¡\nÙĪ ÙĬ\nà¸ªà¸²à¸¡ à¸²à¸£\nà¸ªà¸²à¸¡à¸²à¸£ à¸ĸ\nÄĥ n\nà¸Ń à¸µ\n×¤ ×ķ\n×Ļ×ł ×ķ\nà¸§ à¸±à¸Ļ\náº· c\níķ Ļ\n×ŀ ×ª\nÃª u\náº ¹\nÙģ ÙĬ\n×ŀ ×¦\nà¸Ħ à¸²\nãģĿ ãģĨ\nãĢ ħ\nØ§ Ø²\nØ§ Ùĩ\n×¨ ×Ļ×Ŀ\náº¥ n\nà¸« à¸²à¸£\náº¡ t\nÙĨ Ùĩ\nà¹Ģ à¸Ħà¸£\nØ¬ Ùĩ\n×Ľ ×Ļ\náº¯ t\nà¸Ħ à¹īà¸²\nØ± Ø©\nãĥ ı\nÙĥ ÙĪÙĨ\ná»© ng\nĠìļ °\nà¸¢ à¹Į\nà¹Īà¸§ à¸Ļ\nà¸ģ à¸³\nØ« Ø±\nÑģ Ð¸\nĠØ§ÙĦ Ø·\nĠ×Ķ ×¦\nĠØ ·\nĠØ§ÙĦ ÙĪ\nê¹ Į\nØŃ ÙĬ\nØ§Ø± Ø§Øª\nà¹Ģ à¸ĭ\nØ¨ Ø§\nÐ³ ÑĢ\nà¸£ à¸µ\nà¸·à¸Ń à¸Ļ\nØ¹ Øª\nÙĤ Ø§ÙĦ\nØ¯ Ùħ\nØ ¡\nĠ×ŀ ×§\n×ĵ ×Ļ×Ŀ\n×¢ ×ľ\nãģ Ĵ\nëĭ ĺ\n×¢ ×Ķ\nĠìĸ ´\nÑģ ÑĮ\nÙĤ Ø·\nãĥ Ľ\nèĢĥ ãģĪ\nà¹ģ à¸Ļ\nÙĪ Ø§Øª\nÃ¢ u\nĠìĤ¬ ëŀ\nà¸« à¸§\nĠØ§ÙĦØ£ Ùħ\nĠ×Ķ ×ŀ×©\nØ¨ ÙĪ\nà¸Ĭ à¸Ļ\nãĤĵ ãģ§ãģĻ\nà¸§ à¸Ļ\nà¸ģà¸£ à¸£à¸¡\n×ŀ ×ķ×ĵ\nÙĥ Ø§ÙĨ\n×ķ× £\nÐ¾Ð» Ð¾Ð³\nØª ÙĨ\nà¸ķ à¹Į\nê² ĥ\n×¨ ×ĺ\ná»« ng\n×ķ×ĳ ×Ķ\nÙħ ØŃ\nĠÐ §\n×¤ ×Ĵ\nà¸ª à¸ĸ\nãģĭ ãĤĬ\nÄ±nÄ± z\nà¹Ģ à¸¢\nãĥ¼ ãĥ³\nãģĬ ãĤĬ\n×¤ ×©\nà¸´ à¸ķ\nØ· ÙĨ\n×Ļ×ª ×Ļ\n×Ĳ ×ł\nÃ§ ek\nì ª\n×ŀ ×ĳ\nà¸¨ à¸²\nãĤ¹ ãĤ¿\nà¸ļ à¸¸\n×ĵ ×ĳ×¨\nãģĦ ãģı\nà¸ª à¸°\nà¹Ģ à¸«à¸¥\nà¸´ à¸ĩ\nà¸ŀ à¸±à¸Ļ\nãģĦ ãģŁãģł\nãĤĤ ãĤī\nà¹ī à¸¡\nãģĵãģ¨ãģĮ ãģ§ãģį\nà¸²à¸£ à¹Į\nà¸¸ à¸ĩ\ní ĳ\nì ¯\në ¼\ní Ĥ\nì ·\nê ¡\ná ı\ná Ĵ\nðĿ ľ\ná ©\nðŁ Ħ\nðĲ ¤\nĠ×© ×ľ\nĠ×ŀ ×Ķ\nà¹ģà¸¥ à¸°\nĠ×Ľ ×ľ\náº ½\ná»Ļ ng\nØ° ÙĬ\nÐ» Ðµ\n× ¥\nãģª ãģ©\nĠÙĪ Ø£\nà¸«à¸Ļ à¹īà¸²\nãģ¾ ãģ§\nà¸ķà¹Ī à¸Ń\nà¸Ĺ à¸±à¹īà¸ĩ\nãģł ãģĳ\nà¹ģà¸ļ à¸ļ\nà¹Ģà¸£ à¸²\n×¤ ×ľ\nãģŁ ãģĦ\nà¹Ģà¸¥ à¸¢\nãģ£ãģ¦ ãģĦãĤĭ\náº¿ p\nà¸¶ à¹Īà¸ĩ\nê ´Ģ\nê³ Ħ\n×Ľ ×ķ\nà¹Ģà¸£ à¸·à¹Īà¸Ńà¸ĩ\n×§ ×Ļ\nêµ Ń\n×¤ ×¡\nØª ÙĬ\nãĥ Ħ\nĠ×Ķ ×Ĺ\nÐ³ Ð¸\n×¨×Ĳ ×ľ\n×ŀ ×ľ\nĠØ£ ÙĬ\nĠØ¹ ÙĦÙĬ\nãģĭ ãģ£ãģŁ\n×© ×Ļ\nÐ´ Ñĥ\n×ŀ ×Ł\n×ł ×ĺ\n×ł ×Ļ×ª\nmi ÅŁ\n×Ľ ×Ŀ\nĠ×ĳ ×¨\nĠ×ľ ×ĳ\nĠÐ Ľ\nÃ§ e\n×ķ×ł ×Ļ\nãĤĪãģĨ ãģ«\n×¤ ×ķ×¨\nãĥ į\nÙĥ ÙĬ\n×Ĺ ×ª\nÙģ ÙĦ\nĠ×Ķ ×§\nĠ×Ķ ×ĳ\nĠ×ŀ ×¡\nà¹Īà¸² à¸Ļ\nÐ¿ ÐµÑĢ\nà¹Īà¸² à¸§\nĠ×ĳ ×Ĳ\nĠÙĪ Ùĩ\nà¸Ļ à¸³\nĠ×ĳ ×©\n×ł ×§\nãģ© ãģĨ\n×© ×ķ×ª\n×ĵ ×Ķ\nà¹Ģ à¸ļ\nÙĨ Ø³\nĠìļ° ë¦¬\nà¸ª à¹Īà¸§à¸Ļ\nà¸¥ à¸±à¸ĩ\nØ¬ Ø²\nĠ×Ĺ ×Ļ\nÙĥ Ø«Ø±\nà¸¥ à¸°\nÙĩ Ø¯\nĠÙĪ Ø¨\nØ§ÙĦ Ùħ\nà¹ģ à¸¡\nÆ¡ i\nĠ×ĳ ×Ĺ\ná»¯ a\nà¹Ģà¸Ĺ à¸¨\nà¸ķ à¸±à¹īà¸ĩ\nÐ¾Ð³ Ð´Ð°\n×ľ ×§\nØ¯ Ø¯\nà¸ªà¸£ à¹īà¸²à¸ĩ\nà¸Ĭ à¸µ\nÙģ Ø¶\nà¹ģ à¸«\nuy á»ĩn\nà¸£ à¸±à¸ģ\ná»ĩ m\nà¸ª à¸²\n×¤ ×§\nà¸µà¸¢ à¸ĩ\nà¸ķ à¹Īà¸²à¸ĩ\nà¸Ħà¸£ à¸±à¹īà¸ĩ\nØŃ ÙĤ\nà¹Ģ à¸Ńà¸ĩ\nØ§Ø¦ ÙĬ\n×ĺ ×¢\nØ§ÙĦ Ø©\nà¸´ à¹Īà¸¡\nãĤ ½\nØ¯ Ùī\nĠ×¨ ×Ĳ\nãģ£ ãģ¨\nãĥĥ ãĥĹ\nÙĬØ± Ø©\nê± ´\n×ŀ ×Ĳ\n×ķ ×ķ\nØ¨ Ø¹\nãģ ²\nà¸£ à¸²à¸¢\n×ĵ ×Ŀ\nØª Ùģ\nà¸ķ à¸ģ\náº¡ ng\nãĤĴ è¦ĭ\nà¸Ĭ à¸±\nÆ°á» Ł\nÆ°á»Ł ng\nØ¬ Ø¨\n×ķ×ŀ ×¨\nĠìĤ¬ëŀ Į\nÃ³ ng\nà¸£ à¸±\nĠ×Ķ ×ĸ\n×¨ ×¦\nĠ×Ĺ ×ĵ\nØ° ÙĦÙĥ\n×ķ×¨ ×Ļ\nãģ¡ ãĤĥ\nÙģ Ø¹\nĠ×ľ ×¦\nÃ¡ i\nà¹ĩ à¸ļ\nãģ İ\nà¸ģ à¸´\náº¡ c\në© °\nãģª ãĤĭ\n×ķ×ľ ×Ŀ\nà¹ģ à¸Ĺ\n×ķ× ¥\nÐ¼ ÐµÑĤ\nÃ¼ ÅŁ\nÑĢ Ñı\nà¸ Ĵ\nÑģÑĤ Ð¾Ñı\nØ¹ ÙĪØ¯\nÙħ Ø§Ø±\nØ· Ø©\nà¸ŀ à¸·\nÐº ÑĢ\nà¹ģ à¸ģ\nà¹Ĥ à¸£à¸ĩ\n×ĳ ×Ļ×ĺ\nê² ł\n×ķ×ľ ×Ķ\nØŃ Ø±\nà¸·à¹Ī à¸Ńà¸Ļ\n×ķ×ĳ ×¨\n×Ĺ ×©\nãĥķãĤ ¡\n×ŀ ×ĺ\nÃº t\nĠd Ã¶n\náº¯ ng\nëł ĩ\náº³ ng\nà¸§ à¸ģ\nØµ Ø¯\nØ® Ø·\nà¸Ń à¸±\nãĤı ãĤĮ\nØ³ÙĦ Ø§Ùħ\nà¹Ģà¸£ à¹ĩ\n×Ļ×© ×Ļ\nØ¬ Ø§ÙĦ\nãģĳ ãĤĭ\nà¸Ĭà¸² à¸ķà¸´\nÙĪØ§ ÙĤ\nà¹Ĥ à¸Ļ\nãģ¦ ãģĹãģ¾\nØ§Ø¹ Ø©\nãĤŃ ãĥ£\nà¸į à¸²\nÙĦØ§ ÙĤ\nà¸´ à¸ģ\nĠÑģ Ð¾Ð²\nÑĢÐ°Ð º\n×Ļ×ł ×Ļ\nÃ¼ ÄŁ\nÃ¼ÄŁ Ã¼\n×§ ×ĳ\nà¹Ī à¸Ńà¸ĩ\nĠger Ã§ek\nà¸Ĺ à¸±\nÐ¾Ð² Ð°Ð½Ð¸Ñı\n×ŀ ×Ľ\nØ³ Ø©\n×Ļ× £\nle ÅŁ\nÙħ Ø¤\nĠìĿ ĺ\nà¸Ĳ à¸²à¸Ļ\nĠÑģ Ð¾Ð±\nĠêµ Ń\n×¢ ×¦\nÐ· Ð²\nà¸ª à¸ĩ\nØ² ÙĦ\nãģı ãĤĮ\nÐ¸ ÑĢÑĥ\nØª Ø£\nÐ¿ Ð¾Ð»Ð½\nìĺ Ģ\nÙĨ Ø´\n×Ľ ×Ĳ\nÙħ Ø´\nà¸Ķ à¹Į\nÙĪ ÙĬÙĦ\nà¹ģ à¸Ĥ\nãģ£ãģ¦ ãģĹãģ¾\nÐ½Ð¾ ÑģÑĤ\nÐ² Ð»\nÙħ ÙĤ\nØ±Ø§ Ø¬\nå¤ ī\në Ľ\nâ ¸\nì Ĳ\nà »\ná ļ\nâ »\nê Ļ\nâ §\nð Ĵ\nðĿ ĩ\nĠ×Ĳ ×ª\nĠÙĦ ÙĦ\nĠØ£ ÙĨ\nĠ×ķ ×Ķ\nãģ« ãģ¯\nĠ×Ļ ×©\nØª Ùĩ\nÃŃ nh\nÙĬ Ø§Øª\nĠ×ĳ ×ŀ\nà¸Ļà¸± à¹īà¸Ļ\nà¸Ļ à¹īà¸³\nÃł o\nà¸ķ à¸²à¸¡\nãģ® ãģ¯\nd Ä±r\nĠn ghi\náº· t\n×ŀ ×Ļ×Ŀ\nãģ¦ ãģĦãĤĭ\nĠ×ĳ ×ª\nà¸«à¸£ à¸·à¸Ń\nĠØ³ ÙĬ\nãģª ãĤī\nà¹Ĥà¸Ķ à¸¢\nÄ± yor\nà¸Ńà¸µ à¸ģ\ná»ĩ nh\nÑĭ Ð¼\nà¸Ĺà¸¸ à¸ģ\nĠ×ľ ×Ĺ\nĠ×Ķ ×¨\nĠ×Ķ ×Ļ\nà¸ŀ à¸£à¸°\nà¹Ģà¸§ à¸¥à¸²\nĠØ º\náº« n\nm Ä±ÅŁ\n×Ľ ×Ķ\ná»ĳ n\nãģ§ ãģĹãĤĩãģĨ\nãĥ ¢\nà¸Ľ à¸µ\n×¡ ×Ļ\nãģĵ ãĤį\nĠ×ľ ×¤\nà¸£ à¸ĸ\nê¸ Ī\nà¸ģ à¸§à¹Īà¸²\në ¬´\ná»į ng\nãĤĵ ãģ§\nãĤĪãģĨ ãģª\ná»ĵ i\nãĤ ¬\nà¸ª à¹Īà¸ĩ\n×Ļ×ł ×Ķ\nà¸ĸ à¸¹à¸ģ\nà¸Ī à¸±à¸Ķ\nĠ×Ķ ×Ĵ\nãĥ ľ\n×ŀ ×ķ×ª\nÙĪ Ùĥ\nëĭ ¨\nĠØ «\nãģ® ãģĮ\nà¹Ģà¸« à¹ĩà¸Ļ\nØ¹ Ø§\nà¸Ļ à¸´\nÅ ŀ\nà¸Ń à¸°\nãģĪ ãĤĭ\nØ« ÙĦ\nØŃÙħ Ø¯\nà¹Ģà¸ģ à¸´à¸Ķ\n×¤ ×©×¨\n×¤ ×Ķ\nà¸¡ à¸´\nØ¦ ÙĬØ³\nà¸Ĺà¸³ à¹ĥà¸«à¹ī\n×¢ ×ĵ\nìĭ ¤\nà¸Ĭà¹Īà¸§ à¸¢\nĠØ§ÙĦÙħ ÙĨ\nØ² ÙĬ\nØ¹ ÙĬ\nĠ×Ľ ×Ĳ\náº¡ nh\ná» ¹\nãĤĵ ãģª\nà¸ª à¸¹\n×¦ ×¨\nÆ°á»Ľ ng\n×ķ ×ķ×Ķ\nà¹Ĥ à¸¥\nĠØ§ÙĦ Ùĩ\nà¸§ à¸²\nà¸«à¸¥ à¸²à¸¢\nÑī Ðµ\nà¸Ĥ à¹īà¸Ń\nà¹īà¸Ń à¸¢\nØ¨ Ø·\nÐºÐ° Ñı\nĠØ ¢\nĠÐ¸ Ñģ\nĠØ§ÙĦ Øº\nà¸ģ à¸²\nà¸Ļ à¹Īà¸²\nÙĬ ÙĪ\n×ĳ ×ķ×¨\ná»ħ n\nà¸§ à¸ĩ\n×Ļ× ĸ\nì² Ń\nÐ½ Ð¸Ð¼\nëŁ °\n×Ĵ ×ķ×¨\nØµ ØŃ\nÙĦ ÙĪ\n×Ĺ ×ķ×ª\nà¸ª à¸¸\nØ±ÙĬ ÙĤ\n×¡ ×ĺ\nĠ×ŀ ×¢\nãĥĨ ãĤ£\nà¸Ħ à¸´à¸Ķ\nãĤį ãģĨ\nà¹Ħ à¸¥\nà¸Ļ à¹Į\ná»ı i\nÑģÑĤÑĢ Ð¾\nà¸ª à¸Ķ\nà¸ª à¸²à¸£\nÙĪÙĦ Ø©\náº§ m\nà¸£ à¹Īà¸§\nà¸£à¹Īà¸§ à¸¡\nà¸£ à¸¸\nĠØ§ÙĦØ³ ÙĬ\nìĺ ģ\nĠ×ŀ ×ĳ\n×¤ ×ĺ\nà¸ķà¸´ à¸Ķ\n×ĺ ×Ļ×Ŀ\nĠë ¬´\nÙĤØ¯ Ùħ\nĠdÃ¼ ÅŁ\nØ§Ø¦ ÙĦ\nÐ¼ Ñĭ\nØŃ Ø³\nÙĪ Øµ\n×Ļ×§ ×Ķ\nãģ§ãģ¯ ãģªãģĦ\nà¹Ģ à¸«à¸¡\nÐ¾ÑĢ ÑĤ\ní Ĩµ\nãģ Ĳ\nÐº ÑĢÐ°\nà¸µà¸¢ à¸§\nØ¹ Ø§Ø±\nØ¦ Ø©\níĥ Ģ\nãģ«ãģª ãĤĬ\nØ¬ Ø©\nÙĪÙĤ Ø¹\nÑĮ Ñı\n×ķ×¦ ×Ķ\n×© ×Ŀ\nØ¨ ÙĤ\nĠ×Ļ ×Ķ\nÙĬ Ø·\nÄ±m Ä±z\nÐ´ ÐµÑĢÐ¶\n×Ļ×© ×¨×Ĳ×ľ\nØº ÙĬØ±\nà¸£ à¸Ńà¸ĩ\nà¹Ģà¸£à¸µà¸¢ à¸Ļ\nĠ×Ķ ×ĺ\nà¸«à¸¡ à¸²à¸¢\nÙħ Ùĩ\nØ§Ùģ Ø©\nĠÐ¾ ÑĢÐ³\nÙĪ Ùī\nãĥ© ãĤ¤\n×ŀ ×ł×Ķ\nĠÄĳ o\nĠÐ³ Ð¾ÑĢ\nØ§Ùħ Ø©\næ¥ ½\nØ« ÙĬØ±\nà¸ģà¸´ à¸Ī\ná»ĵ n\nÙĨ Ø¨\nÑĢÑĥ Ð´\nìĹ Ī\nĠ×Ĺ ×ĳ×¨\nÑĢÐ°Ð ¶\náº¡ ch\nØª ÙĪ\nà¹Ĥ à¸¡\n×ĳ ×Ļ×ĳ\nĠí Ĩµ\naca ÄŁÄ±\nØ¬ÙĦ Ø³\nà¹Ģà¸Ľ à¸¥\nà¸§ à¸Ķ\nà¸Ń à¸¥\nãģŁ ãĤĬ\nà¸Ľ à¸±à¸į\nĠìķ Į\nØ¹Ø± Ùģ\nà¹Ħ à¸Ł\nØ£ Ø®\nå¤ļ ãģĦ\nà¸Ķ à¸±à¸ĩ\nØ´ Ùģ\nãģ£ãģ¦ ãģĦãģ¾ãģĻ\n×Ľ ×ł×¡\nÑĨ Ðµ\nÐµÑģ Ð¿\nÙħ Ø§Ùħ\nà¸ŀà¸· à¹īà¸Ļ\nÐ¸ÑĩÐµÑģ ÐºÐ¸\nØ® Ø¯\nÙĥ ÙĪÙħ\nĠ×Ķ ×¨×Ĳ×©\nØª Ø§Ø¨\né£Ł ãģ¹\nà¸· à¸Ļ\nÐ¾ÑĢ Ð¾\nĠb Ã¶l\n×ķ×Ĺ ×ĵ\nØ¯ÙĬ Ø±\náº¯ m\nØ¯ Ø¹\nãģķ ãģĽ\nà¸ĺ à¸£\nà¸ĺà¸£ à¸£à¸¡\nãģĭ ãĤĤ\nå¤ļ ãģı\nr Ã¤\nØ³ Ø¹\n×Ļ×ľ ×Ķ\nØ¶ Ø±\nĠØ§ÙĦ Ø´Ø±\n×ĸ ×ķ×¨\n×¢ ×ĳ×¨\náº¡ m\nÐ°Ð»ÑĮ Ð½Ð¾\nØ± ÙĨ\nØ§Ùħ Ø¬\n×Ľ ×ļ\nd Ä±ÄŁ\nÐ´ ÐµÐ½\nØ¶ Ø§\nÙĦÙĬ Ùħ\nĠê·¸ ëŁ¬\nØªÙħ Ø§Ø¹\nØ§Ø± ÙĬØ®\nà¹Ĥ à¸ķ\nĠÑģ ÑĢÐµÐ´\nĠ×ł ×ķ×¡\nÙĤ Ø¨ÙĦ\nÐ¾ÑĤ Ð¾Ð²\nle ÅŁtir\nĠÐ¼ ÐµÑģÑĤ\nØ³ÙĦ Ùħ\nĠ×¢ ×¦\nĠØ§ÙĦØ³ ÙĦ\nÐµÑĤ ÑĮ\nØ§Ø¨ Ø©\nÐ½ Ð°Ðº\nà¸ªà¸ĸ à¸²à¸Ļ\nĠ×ĳ ×ł\nà¸ļ à¸±à¸Ļ\n×Ľ ×ł\nĠÃ¶ ÄŁ\nãģ¨ è¨Ģ\nuy áº¿n\ndi ÄŁ\náºŃ u\nÑĢ Ð°Ñģ\nãĤ· ãĥ§ãĥ³\nn Ä±z\n×ķ×ĵ ×Ķ\nØª Ø³\nÙħ Ø§ÙĦ\nà¹Ģà¸« à¸ķà¸¸\nà¸¢ à¸§\nà¸ŀ à¸±à¸ģ\nãģĦ ãģªãģĦ\nĠÐº Ð°Ñĩ\nà¸¥ à¹Į\n×¨×Ľ ×ª\nÅŁt ur\n×ŀ ×ķ×¡\nãģ ¥\nÐ± Ð¾Ð»\nØ¹Ùħ Ø§ÙĦ\n×ķ×¨ ×ª\nÑĨÐ¸ Ð¾Ð½\nà¸¨ à¸¶à¸ģ\nà¸ ı\nÑĢ ÐµÐ½\nØ§Ø³ ÙĬ\nØ§Ø¦ Ø±\nà¹Ĥ à¸Ľà¸£\nĠse Ã§\nØº ÙĬ\nÑį ÑĤ\nÐµÐ½ Ð½\nãģª ãģ®\n×Ļ×© ×Ķ\n×Ļ×¤ ×ķ×¨\nãģŁãĤģ ãģ«\nØ² Ø©\nĠÃ§ oc\nãĤ¯ ãĥª\nÑĪ ÐµÐ½\nãĤı ãģĳ\nØ±ÙĬ Ø¯\nĠÑĢ Ð°ÑģÑģ\nÙĥ Ø§Øª\nà¸ª à¸Ńà¸ļ\nce ÄŁi\nãĤ¿ ãĤ¤\nà¸ļ à¸£\nĠØ§ÙĦ Ø¨Ø±\n×ł ×ķ×¢\nr Ã¼n\nØ±Ø§ Ø¶\nà¸¨à¸² à¸ª\nà¸ķ à¸£à¹Į\nãģį ãģŁ\n×ķ×ľ ×ĵ\nÐµÑĢ Ð¸\níĹ ĺ\náº¯ p\nØª Ø¹ÙĦ\nÙĥ Ø¯\nÐ¸ÑĤÐµÐ»ÑĮ Ð½Ð¾\nØ· Ùģ\nĠÐ°Ð² ÑĤÐ¾Ð¼\nĠ×ŀ ×¦\nÑĪÐ¸ Ñħ\nØ§Øª Ùģ\nĠÑħ Ð¾ÑĤ\nÙİ Ø§\nãģı ãĤĭ\n×Ķ ×¤\nà¹Ĥ à¸Ĺ\nà¹ģ à¸ŀ\nà¹Ī à¸Ńà¸¢\nĠØ§ÙĦÙħ Ø´\nà¸ģà¸²à¸£ à¸ĵà¹Į\nÐ°Ð½Ð¸ Ð·\n×Ķ ×ľ\nØ¸ Ùħ\nà¸¢ à¸¸\nli ÄŁ\nà¹Ħ à¸Ĥ\nà¸ĸ à¸·à¸Ń\nÃ¶ z\nãģĳ ãģ¦\nà¹Ģ à¸ľ\nà¸¸ à¸¡\nãĥĹ ãĥ¬\nĠ×Ķ×Ĳ ×Ĺ×¨\nØ®Øª ÙĦÙģ\nà¸ İ\nÙĦØ§ ØŃ\nĠdÃ¼ zen\n×¦ ×Ķ\nØ³ Ø§Ø¡\n×ķ×¨ ×ļ\n×ķ×ĵ ×Ļ\nÑĢÐ° ÑĦ\nÅŁt Ä±r\nãģ« åħ¥\nãģĪ ãģ°\nØµ ÙĪÙĦ\nĠÐľ Ð¾Ñģ\nØ§ ÙĩØ±\nãģ£ ãģ\nĠÐ»Ñİ Ð±\n×Ļ×¢ ×Ķ\nĠ×Ķ×ŀ ×§\nà¸ªà¸´ à¸Ĺ\nà¸ªà¸´à¸Ĺ à¸ĺà¸´\n×Ļ×ł ×Ŀ\nÙĦØ§ Ùģ\nà¸ŀà¸±à¸Ļ à¸ĺ\n×ķ×Ĳ ×Ķ\nà¸¡ à¸±\nà¸Ĥ à¸ĵà¸°\nÐ´ Ð¾ÑĢ\nãģ¨ ãģª\nà¸ģà¸£à¸° à¸Ĺ\nac Ä±\n×ķ×ľ ×ķ×Ĵ\nÑĥ ÑĪ\nãĥ¥ ãĥ¼\nãĥ ¦\nÙħ Ø³Øª\nĠa ÅŁ\n×© ×§\n×¤ ×ª×Ĺ\nà¸²à¸¢ à¸Ļ\ní ĩ\në ¢\nï ·\ní ī\nì µ\nì ¬\nðĿ Ľ\nì Ĵ\në Ļ\nê §\ná ĸ\nâ ¨\nâ ±\ná ĺ\nð ĸ\nà ł\ná Ķ\nðĲ Ń\ná»¯ ng\nÅ© ng\nĠ×Ķ ×ª\nĠØ§ÙĦ Ø§\nĠ×ŀ ×ª\nà¸ĸ à¸¶à¸ĩ\nÃ² n\ná»ĭ nh\nÐ½Ñĭ Ð¼\nĠc áº£\nà¸Ķ à¸¹\nĠ à¹ģà¸ķà¹Ī\nĠ×ĳ ×Ķ\nÃ³ i\nãģ¨ ãģĹãģ¦\nÃº ng\nĠØ °\nĠ×Ķ ×ł\nĠØ¨ ÙĨ\nÙĦ Ø§ÙĦ\nà¹Ħ à¸Ĺà¸¢\ná»ĩ p\nt Ä±\nà¸¡ à¸±à¸Ļ\náº± ng\ná»ĳ t\nÐº Ð¾Ð¼\nà¸ĭ à¸¶à¹Īà¸ĩ\nà¸Ħà¸£ à¸±à¸ļ\nà¸ļ à¹īà¸²à¸Ļ\nĠØ§ÙĦ ÙĬ\nl Ã¼\nÙĪ Ø³\nãģł ãģ£ãģŁ\nà¹Ģ à¸ĩ\nĠê³ µ\nÐ½ Ñĥ\nãĤĪ ãĤĬ\nÐ¼ Ñĥ\nà¹Ģà¸Ĥ à¸²\nãĤ Ģ\nÐ½Ð¸ Ðµ\nãģ«ãģª ãĤĭ\náºŃ y\nĠÙĪ Ø§\nëł ¤\n×© ×ķ\nÃ¡ p\n×ĵ ×ķ\nãģ§ ãģĹãģŁ\nØ¹ Ø¶\nÑģÐº Ð¾Ð¹\næĦŁ ãģĺ\nÑİÑĤ ÑģÑı\nĠ×Ļ ×Ľ×ķ×ľ\nãĤĵ ãģł\nÐ² Ð¸\nà¹Ģà¸¥ à¹Īà¸Ļ\nìĿ´ ëĭ¤\nĠÙĦ Ùĩ\nà¸Ħ à¸·à¸Ń\nØª Ùĥ\nÙħ ÙĥÙĨ\na ÄŁÄ±\n×ł ×ĵ\në¯ ¼\nà¹Ħ à¸§\nà¸ªà¸³ à¸«\nà¸ªà¸³à¸« à¸£à¸±à¸ļ\nÑģÐ» ÐµÐ´\nt Ä±r\nĠÙĦ ÙĬ\nĠØ§ÙĦØ¹ ÙħÙĦ\n×ĳ ×ķ×ª\n×ĳ ×Ļ×Ŀ\nà¸Ħ à¸³\nà¹Ģà¸Ħà¸£ à¸·à¹Īà¸Ńà¸ĩ\nlÄ± ÄŁÄ±\nà¸·à¸Ń à¸ĩ\nØ¬ Ø¯\níŀ Ī\nìĭ ¬\n×¢ ×ķ×ª\nà¸ª à¸´à¸Ļ\nÑĩ Ð¸\nØ± Ø¶\nà¹Ģà¸Ľ à¸´à¸Ķ\nà¸Ħ à¹Īà¸²\nìĦ ł\nÙĪØ± Ø©\n×§ ×ĺ\nìľ ł\nØ¹ ÙħÙĦ\n×Ĳ ×Ļ×Ŀ\n×ľ ×Ļ×Ŀ\nà¹ĥà¸« à¸į\nà¹ĥà¸«à¸į à¹Ī\ná»« a\ná»į i\nãģ ¶\nÃŃ ch\nãĥĩ ãĤ£\n×ķ×¨ ×Ļ×Ŀ\nÑģ Ð¾\nìķ ½\nÐ¾Ð² Ð°\nÑĩ Ð°ÑģÑĤ\nà¹Ģà¸Ī à¹īà¸²\nÐ¿ ÑĢÐ¾\nĠ×ŀ ×Ĺ\nãĥ İ\n×ķ×Ļ ×ķ×ª\nĠÐ´ Ðµ\në§ Ī\nì§ ģ\n×Ļ×¤ ×Ķ\nĠØ§ÙĦØ¹ Ø§ÙĦÙħ\në¥ ´\n×¨×Ĳ ×Ķ\nuy á»ĥn\n×¢ ×Ļ\nà¸¡ à¸·à¸Ń\nØ¥ ÙĨ\nà¸£ à¸¹\nĠØ ²\n×Ļ ×ķ×Ŀ\nà¸ķ à¹īà¸Ļ\nãģ¦ ãģĦãģ¾ãģĻ\nÙħ Ø§ÙĨ\nĠÐ ¥\nà¸Ľà¸£à¸° à¹Ģà¸Ĺà¸¨\ná» ³\n×ľ ×ĳ\nà¹Ģà¸Ķ à¹ĩ\nãģŁ ãģ¡\nà¸Ĺà¸µ à¸¡\nà¸Ļ à¸°\nìĹ °\nĠìł Ģ\nÙĦ Ùĩ\ná»Ł i\nĠØ§ÙĦ Ø²\nØ¯ Ø§Ø±\nãĤ³ ãĥ³\nÐ¼ Ð¸Ð½\nà¹ģà¸« à¹Īà¸ĩ\nà¸Ķ à¸±à¸ļ\n×Ľ ×¨\nÐ¶ Ð°\níĸ Ī\n×ŀ ×ĸ\ná»£ i\nà¸Ķ à¸²\nĠØ¹ Ø¨Ø¯\nà¹ģ à¸£\n×Ĳ×ª ×¨\n×¢ ×ł×Ļ\nà¹Ģ à¸Ħ\n×ķ×¦ ×¨\nì§Ģ ë§Į\nØ§Ø¦ Ùħ\nØ£ Ø³\nuy á»ģn\nĠ×Ĳ ×ł\n×Ĺ ×ł×ķ\n×ĸ ×Ļ\nà¸£ à¹īà¸²à¸Ļ\nĠÐł Ð¾Ñģ\nĠÐłÐ¾Ñģ Ñģ\nØ±Ø¨ ÙĬØ©\nt Ã¼r\nãĤĭ ãģĵãģ¨\nØ¸ Ø±\nÐ± Ñĭ\nà¸Ĺà¸µà¹Ī à¸ªà¸¸à¸Ķ\nĠ×¦ ×¨\nèĩª åĪĨ\nÐ» Ð°Ñģ\nĠÑı Ð²\nĠÑıÐ² Ð»Ñı\nà¸ŀà¸£ à¹īà¸Ńà¸¡\nà¸Ńà¸² à¸Ī\nà¸ļà¸£à¸´ à¸ģà¸²à¸£\nĠÃ§ Ä±\nëį ĺ\nĠØ§ÙĦÙħ Ø³Øª\nØª Ø´\n×© ×ķ×ĳ\nãĤ ´\nĠyap Ä±l\nĠØ§ÙĦ Ø°\nà¸¸ à¹Īà¸¡\nà¸ĸ à¹īà¸²\nìĦ ¤\nì° ¨\nÐ² Ð°ÑĢ\nà¹Ģà¸ŀ à¸´à¹Īà¸¡\nÆ°á»Ľ i\nÙĥ Ø³\nà¸Ńà¸¢ à¸²à¸ģ\nãģ¦ ãĤĤ\nĠÐ³ Ð¾Ð´\nÙĬ Ø§Ø±\nà¸ķ à¸Ńà¸Ļ\nĠÐ¸Ð³ ÑĢ\nà¹Ħà¸Ķà¹ī à¸£à¸±à¸ļ\nĠØ§ÙĦÙħ Ø±\nÙĤ Øª\nĠë ĺ\nĠëĺ Ĳ\náº© n\nãģĻãĤĭ ãģĵãģ¨\n×Ĵ ×Ŀ\nĠ×ĳ ×ĳ\nØª Ø¯\nÙĪ Ø§Ø±\nãĤ ®\nÐ¿ Ð¾Ð»\nĠÐ¼ Ð¾Ð³\nØªØ± Ùĥ\nÙĪ Ø«\nĠÃ§ Ä±k\nØ§ Ø©\nà¹Ģà¸Ķ à¸µà¸¢à¸§\nà¸¡à¸µ à¸Ħà¸§à¸²à¸¡\nĠ×ŀ ×Ĵ\nØµ Ùģ\nĠÐ¢ Ð°Ðº\nĠ×Ľ ×ª\n×Ļ×ĵ ×Ļ\nÐ¾Ð² Ð¾ÑĢ\náº§ y\nà¸ªà¸´ à¹Īà¸ĩ\nØ¨ Øª\nÃ¼r Ã¼\nÙĨ Ø¬\nà¸«à¸¥ à¸±à¸ģ\n×Ļ×Ķ ×Ŀ\nÙĤ Øµ\nÐ· Ñĭ\n×Ľ×ª ×ĳ\nÆ° u\nm Ä±z\nĠìĦ ¸\nÐ» Ð¾Ð³\nÙħ ÙĬÙĦ\nÙĬ Ø¬\níĴ Ī\nà¸ŀ à¸ļ\nà¸« à¸±à¸§\nÐ· Ð½Ð°\n×¨ ×§\nà¹Ĥ à¸£\nĠ×ĳ ×¡\nĠBaÅŁ kan\nĠëĶ °\nà¸Ń à¸±à¸Ļ\nà¸µà¹Īà¸¢ à¸§\nÐ½ ÐµÑģ\nà¹Ģà¸Ķ à¸´à¸Ļ\nÙĬ Ø§ÙĨ\n×ķ×ľ ×Ļ\nØ§ Ø®Øª\n×¦ ×ķ×ª\nãģĵ ãģĵ\nĠØ§ÙĦ Ø§ÙĨ\nĠÐ¿ÑĢÐ¾ ÑĨ\nãģ¾ ãģł\n×Ľ ×¡\nĠØ§ÙĦ Ø¢\nÙĬ Ø²\nĠØ§ÙĦØ¯ ÙĪÙĦ\nĠíķĺ ëĤĺ\nØ¶ Ø¹\nê» ĺ\nÅĽ wi\nà¸¢ à¸´\nãģ¡ãĤĥ ãĤĵ\nĠÙħ Ø´\nà¸ĺ à¸µ\nãģ¨ ãģį\n×ł×Ļ ×ķ×ª\nĠë ¯\nĠë¯ ¸\nĠs Ä±\nëĭĪ ê¹Į\nĠÐ¿ Ð»\nØº ÙĦ\nà¹ģ à¸£à¸ĩ\nØ¨ ÙĬØ±\nãģĤãĤĬ ãģ¾ãģĽãĤĵ\nê· ¼\nĠy Ã¼z\nĠdeÄŁ er\nåł´ åĲĪ\ná» ¡\nÐ¼ Ð°ÑĤ\nà¸£à¸² à¸Ĭ\nÙĪØ± ÙĬ\nÐ¶ ÐµÐ½\nãģ¾ ãĤĬ\nãģ® ä¸Ń\n×Ļ×ĵ ×¢\nà¸Ń à¸¸\nà¸ļ à¸Ńà¸¥\nà¸Ľà¸±à¸į à¸«à¸²\nØ² Ùħ\nÄŁ a\nà¸Ń à¸·à¹Ī\nà¸Ńà¸·à¹Ī à¸Ļ\nÐ¿ Ð»\nĠÐ½Ðµ Ð¾Ð±ÑħÐ¾Ð´Ð¸Ð¼\n×Ľ ×ĳ\nà¹Ģ à¸¨\n×§×¨ ×Ķ\nì² ĺ\nëł ¨\n×ŀ×§ ×ķ×Ŀ\njÄħ c\nÙĩ ÙĦ\nĠ×¢ ×ĳ×ķ×ĵ\nà¹Ħà¸¡ à¹ī\nà¸ģà¸¥ à¸±à¸ļ\n×ķ×Ľ ×ľ\n×§ ×ĵ\nØ§ÙĦ ÙĬØ©\nØ± Ùĩ\nãģĳ ãĤĮãģ°\nĠÙĨ ÙģØ³\nãĤ¢ ãĥ«\nìĹ Īëĭ¤\n×§ ×ķ×¨\nÐ½ ÐµÑĢ\nØ¨ Ø§Ø¨\nãĤ ¶\nØ³Ø¨ Ø¨\nÙĦ ÙĬÙĦ\nØµ ÙĨ\nØµ Ø¯Ø±\náº¿ m\nà¸Ĭà¹Īà¸§ à¸ĩ\nØŃ ÙĨ\nĠ×ĳ ×Ĵ\n×ŀ ×ķ×¢\n×ľ ×Ĺ\nå¤§ ãģį\nØª Ø¨\nÐ½ ÐµÑĤ\n×Ļ×ĳ ×Ķ\nÐ± Ð»\nãĥĹ ãĥª\nØ§Øµ Ø©\nãģ¤ ãģĳ\n×Ļ×ŀ ×ķ×©\nãģĮ ãģĤ\nëĭ ´\nãģĭãĤĤ ãģĹ\nãģĭãĤĤãģĹ ãĤĮ\nãģ¡ ãĤī\n×ĳ ×ĺ\nĠba ÄŁ\n×Ļ×Ĺ ×¡\n×ĳ ×ķ×¢\nà¸¥ à¸µ\n×¤×¢ ×Ļ×ľ\nÐ¸Ð¼ Ð¸\ng ÅĤ\nĠÐ¸Ð¼ Ðµ\nØ®Ø¯ Ø§Ùħ\n×Ĳ ×Ļ×¨\nĠy apt\nãģ¨ ãģĦ\nà¸ĩ à¹Īà¸²à¸¢\n×ľ×Ļ ×ķ\nØŃØ¯ Ø«\nØ±Ø§ ÙĤ\nĠÄĲ i\nØ§Ø¯ Ø±\nãģĵãģ¨ ãĤĤ\n×ĳ ×Ļ×¨\nĠÐ² Ð·\nØ¶ Ø§Ùģ\n×ª ×ķ×Ľ\nÑĢ Ð¾Ð¼\nØ± Ø§Øª\nà¹Ģà¸Ĺ à¹Īà¸²\nãģĺ ãĤĥ\nãģĿ ãģĵ\nØ§Ø¬ ØªÙħØ§Ø¹\nà¹īà¸Ń à¸Ļ\nÙĤ Ùħ\në³ ¸\nÄ ŀ\n×© ×Ļ×ķ\n×ĳ ×ł×Ļ\nìľĦ ìĽĲ\nà¹ģ à¸Ī\n×Ĺ ×ķ×¨\nØ¯ÙĬ ÙĨØ©\nØª Ø·\náº± m\nÃ² a\nà¸¢ à¸Ńà¸Ķ\nĠëĭ ¹\nà¸ªà¸¸ à¸Ĥ\n×ĵ×¨ ×ļ\nØ¯ ÙĨ\nØ³ ÙĬÙĨ\nÙĪÙĤ Ùģ\nÑĨ Ñĭ\nÐ³ Ð¾ÑĤÐ¾Ð²\nÐµÐ¶ Ð´Ñĥ\nà¸ŀ à¸§à¸ģ\nØ§ÙĤ ØªØµ\nØ§ÙĤØªØµ Ø§Ø¯\ncz ÄĻ\nni ÄĻ\nÑĢ ÐµÐ±\nØŃ ÙĪ\nà¸Ĺ à¹Į\nãĤĪ ãģŃ\nÐ´ Ð¶\nà¸ģà¸¥ à¹Īà¸²à¸§\nØ¯ÙĬ Ø«\nãĤ³ ãĥŁ\nÙĤ ÙĪÙħ\nĠØª ØŃ\nà¹Ģ à¸ķà¸´\nØ§Ùģ Ø¸\nà¸Ī à¸¸\nØ±ÙĬ Ø§Ø¶\n×ŀ×© ×ļ\nà¹Ĥ à¸¢\nÐµÑĢ Ðµ\nãģ¿ ãģŁãģĦ\nìĿ´ ëĿ¼\nĠØ§ÙĦÙħ ÙĪ\nĠÑģÑĤ Ð¾\nà¹Ģà¸£à¹ĩ à¸§\nĠÐ´ ÐµÑĤ\nĠÑģ Ð´ÐµÐ»\nà¹Ģà¸Ĭ à¸·à¹Īà¸Ń\n×¤ ×ł×Ļ\nÙĪØ¶ ÙĪØ¹\n×ĳ ×¡\nà¹ģ à¸Ķ\nÃ³ c\nà¸£à¸´ à¸¡\nÑĢÐ°Ð ´\nìĪ ł\nãĥ¼ãĤ º\nãģ« ãģĬ\nÐ¸ Ð½Ð¾\n×¤ ×Ļ×ľ\nà¸Ĭà¸± à¹Īà¸Ļ\n×Ĺ×ĵ ×©\nà¹Ģà¸Ļ à¸·à¹Īà¸Ńà¸ĩ\n×ł ×Ļ×¡\nØº Ø±Ø¨\nãĤ¸ ãĥ£\nà¸ª à¸±à¸ĩ\nà¹Ģ à¸Ĺà¸µà¹Ī\nà¹Ģà¸Ĺà¸µà¹Ī à¸¢à¸§\nëŁ ¼\nà¹ģ à¸Ł\nãĥ¼ãĤ ·\nãĥ¼ãĤ· ãĥ§ãĥ³\nĠÐ²Ð¾Ð· Ð¼Ð¾Ð¶\nØ¬Ùħ ÙĪØ¹\n×ĳ×¨ ×Ļ×Ŀ\nãĥĪ ãĥ©\nĠÐºÐ°Ñĩ ÐµÑģÑĤÐ²\nØ· ÙĬ\nÑĤ Ñı\n×¦ ×ķ×¢\nÄŁ Ä±nÄ±\nØ¹ ÙĦÙī\nØ§ Ø°\nÙĪØ§ÙĤ Ø¹\nÙħ ÙĪØ§\nØ§Ø¦ ÙĬÙĦ\nÐº Ð¾Ð»\ná»ģ m\nà¸ľà¸¥ à¸´à¸ķ\n×Ļ×ł ×ĺ×¨\nØ³ Ùĥ\n×© ×Ļ×¨\nà¸¨à¸¶à¸ģ à¸©à¸²\nà¸ļ à¸±\nÑĩ Ð°Ñģ\n×ķ×¤ ×Ķ\n×Ļ×¤ ×ķ×ľ\nĠØ§ÙĦØ³ Ø§Ø¨\nØ±ÙĬ Ø¨\nĠØ§ÙĦ Ø¨ÙĬ\nãĤ¹ ãĥĨ\nÑĩ ÐµÐ½\nà¹ģ à¸ľ\nĠ×ł ×©\nØ² ÙĬØ¯\nØŃ Ø§Ø¯\nëį Ķ\nØ±ÙĪ Ø¹\nà¸Ĺà¸¸ à¸Ļ\nà¸ª à¸¡à¸²\nc zeÅĦ\n×Ļ×ĵ ×Ķ\nãģ§ ãģĤ\nĠÃ§oc uk\nØ® Ø¨\nà¸ļ à¸²à¸¢\nà¸Ľà¸£à¸° à¸Ĭà¸²\n×ŀ×© ×ľ\nãģª ãģĭ\nà¸ģ à¸²à¸¢\nãĥģ ãĥ£\nÐ°ÑĢ Ð¸\nĠÑĩ Ð°\nà¸Ķ à¸³\nà¸Ĺà¸± à¹Īà¸§\nÑĥ Ñħ\nĠÃ¶ z\nĠì¢ ĭ\nØ¬ Ø±ÙĬ\nØ§Ø¦ ÙĤ\nà¸ł à¸±à¸¢\nØ· Ø§Ø±\nØ¯ Ø§Ø±Ø©\nÄ© nh\nØ« ÙĨ\nzell ik\nØ§ÙĦ Øª\nĠg eli\nãĥķãĤ ©\nÐ¾Ð» Ð¾Ð´\nØ±Ø¨ Ø¹\n×©×ª ×ŀ×©\nà¸ļà¸£ à¸£\níĿ ¬\nĠÃ¼ rÃ¼n\nĠê·¸ ëłĩ\nà¸¨à¸²à¸ª à¸ķà¸£à¹Į\nãģ ľ\n×Ļ×ĳ ×ľ\nĠÐ¿ÑĢÐµÐ´ ÑģÑĤÐ°Ð²\nØ³Ø· ÙĬÙĨ\nãĤĴ ä½¿\nĠÐ¿Ð¾Ð¼ Ð¾Ñī\n×ķ×§ ×¨\nãĥ¯ ãĥ¼\nĠyÃ¶ net\n×Ļ×§ ×¨\nà¸Ĥ à¸²\nÐµÑĢÐ¸ Ð°Ð»\nØŃ Ùģ\nĠ×Ļ ×¦\nà¸Ĺ à¸´\nå£ ²\nà¸Ļ à¸Ńà¸ģ\n×ķ×Ľ ×¨\níĻ ľ\ná»§ y\nĠØ§ÙĦÙĤ Ø±\n×Ļ×ĳ ×ķ×ª\nÅĽ ni\nÙħ Ø´Ø§Ø±\nÆ°á»£ t\nĠÙĦ Ø¯ÙĬ\nÑĤ ÐµÐ»\nĠØ¥ ÙĦÙĬ\nØ¹ÙĦ ÙĪÙħ\nìķ ĺ\nÐ² Ð¸ÑĤ\nà¸Ħ à¸°\nyr Ä±\nãģ¨ ãģ£ãģ¦\nà¹Ģ à¸ī\nà¸ĸ à¸²à¸¡\nÙĤ Ø§Ø±\nØ¹ÙĦ Ø§Ùħ\náº· ng\nÙħ ÙĴ\n×Ļ×ŀ ×ª\nØ³Ø¨ Ø©\nãĤ¯ ãĥ©\n×ķ×¡ ×£\nĠÐ¿ÑĢ Ð¸Ð½\nãģĦ ãĤį\nØ³ Ø§Ø³\nØ¹Øª Ø¨Ø±\nà¸§à¸´ à¸Ĺà¸¢\nà¸§à¸´à¸Ĺà¸¢ à¸²\nØ³ ÙĥØ±\nãĤ· ãĥ§\nãģ ģ\nà¸±à¸ģ à¸©\n×ĳ ×ķ×Ķ\nà¸« à¸¢\nãģ¾ ãĤĮ\nĠÐ¾ÑĢÐ³ Ð°Ð½Ð¸Ð·\nÐºÐ°Ð· Ð°Ð»\nĠÑģÐ² ÑıÐ·\nuy áº¿t\nĠÐ¿ÑĢÐ¾ Ð¸Ð·\nĠ×§ ×ĺ\nà¹ģà¸ģ à¹ī\nÐ¿ ÑĥÑģ\nĠê·¸ ê²ĥ\nëĬ Ĳ\nÐ» ÐµÐºÑģ\nãĥ¼ãĥ Ĺ\nà¸ķ à¸³\n×ª×Ĺ ×Ļ×ľ\nà¸Ńà¸ĩ à¸Ħà¹Į\náº µ\n×ł ×¦\nØ£ Ø´\nØ´ Ùĩ\nà¸¢ à¸°\nà¸ģ à¸İ\nĠØ§ÙĦØ¥ Ø³ÙĦØ§Ùħ\nÐµÐ´ ÑĮ\nãģ² ãģ¨\nëıĦ ë¡Ŀ\nãģ© ãģ®\nÑĥ Ð²\nÐµÑĩ ÐµÐ½Ð¸Ðµ\nĠØ§ÙĦØª Ø¬\nãģ« è¡Į\nĠÐ¿ Ð¾Ð·Ð²\nãĤı ãĤĬ\nÙĦ Ø§Ø«\níķĺ ìĺĢ\nĠÐ¼ Ð°ÑĢ\nĠkon uÅŁ\nãĥ¬ ãĤ¹\nãĤĴ æĮģ\nĠÐ¾Ñģ Ð½Ð¾Ð²\n×Ĺ ×ĳ\nÙĪØ¬ ÙĪØ¯\n×¤ ×ķ×Ł\nÐ² Ð¾ÑĢ\nĠÐ½ Ð¸Ðº\nãģĭ ãĤĭ\nÅŁtÄ±r ma\n×Ļ×¡ ×ĺ\nØ£ ÙĦ\nà¸« à¹Į\nÐ¸ Ð¾Ð½Ð°\nÐ»ÑĮ Ð½\nĠÐ³ Ð¾Ñģ\nĠÐľÐ¾Ñģ Ðº\nÑĢ Ð¾Ð±\n×ķ×Ĳ ×Ļ\nãģĬãĤĬ ãģ¾ãģĻ\nãģ£ãģ ±\nÐº Ð»\nà¸Ļ à¸Ķà¹Į\nØ±ÙĬ Ùģ\nØ§Ø³ Ø¨\nĠÑĢ ÐµÑĪ\nĠÐ´ Ð¾Ð»\nãģ¹ ãģį\n×Ļ×ĳ ×ķ×¨\nÐ¼ ÐµÑī\nĠÐ½Ð° ÑĪ\nà¹ģ à¸Ľà¸¥\nÑĢ Ð¸ÑĤ\nÐºÑĥ Ñģ\nÐ¸ ÑĢÐ°\nÐ°ÑĤ ÑĥÑĢ\nÙĪØ§ ØµÙĦ\nà¹Ģà¸ľ à¸¢\nà¸Ń à¸³\nà¹Ģà¸ģ à¸´à¸Ļ\nØº Ùħ\nãģĻ ãģİ\nlÄ± kl\nÅĦ sk\nê² ¬\n×Ļ×Ľ ×Ķ\n×Ĺ ×©×ĳ\nÙĪØ± ÙĬØ©\nĠÐ´ ÐµÐ¹ÑģÑĤÐ²\n×Ĺ×ľ ×ĺ\nĠ×ľ ×ŀ×¢\n×¦×ľ ×Ļ×Ĺ\nÐµÑĩ Ð°\nÙģ Ø§Ø¹\n×Ĵ ×Ļ×ĵ\náºŃ m\nÄĻ b\nØ´ Ø¹\nãģı ãĤĬ\nà¸ŀ à¸¸\nÐµÐ´ ÐµÑĢ\nà¸Ĥ à¸Ļ\nà¸Ħ à¸²à¸£\nĠÐ±Ð¾Ð»ÑĮ ÑĪ\nãģı ãģªãĤĬ\nà¸ĵ à¸²\n×ĵ ×ķ×Ĵ\nĠÐ¼ Ð½\nä¸Ĭ ãģĮ\nç¶ļ ãģį\nà¸¤ à¸©\nà¸ Ĩ\nØ® ÙĬ\nà¹Ģà¸Ĺ à¸ŀ\nà¸ªà¸± à¸¡\nà¹Ģà¸ª à¸Ļ\nà¹Ģà¸ªà¸Ļ à¸Ń\nãĥ ´\nĠÐ¸ ÑģÑĤ\nØ¨Ø§ Ø´Ø±\nĠÑĥ ÑĢÐ¾Ð²\n×ŀ ×ķ×ĸ\nab Ä±\nwa Å¼\n×ķ×¦ ×Ĳ×Ķ\nÑĤ Ð²ÐµÑĢ\nà¸ŀà¸±à¸Ļà¸ĺ à¹Į\n×ł ×Ĵ×ĵ\nãĤĭ ãģĵãģ¨ãģĮãģ§ãģį\nĠÑĤÑĢ ÐµÐ±\nà¸ģà¸£ à¸¸à¸ĩ\nØŃØª Ø§Ø¬\nà¹Ģ à¸Ħà¸¥\nã Ĩ\nÄĻ tr\nĠszcz eg\nĠ×¨ ×©\nà¸Ĺ à¸ĺ\nĠÐ½ ÐµÐº\nĠÐ½ÐµÐº Ð¾ÑĤÐ¾ÑĢ\nÐ² ÑĪ\nÐ ¬\nà¹Īà¸§ à¸¢\nà¸¥ à¸¸\nÐ± ÑĢÑı\nà¸«à¸¡ à¸¹à¹Ī\nà¹ģ à¸ķà¸ģ\n×¨×Ľ ×Ļ×Ŀ\nĠí ĸī\nÃ£ i\nÙĥØ± Ø©\nâ Ń\ní Ĳ\nã į\ná ģ\nâ ®\nâ ¥\nì ®\nà ¿\nâ ¿\ná Ĥ\ná ¤\nâ ł\ní Ł\nðĲ į\nðĲ °\nðĿ Ĩ\nðŁ Ī\nĠ×¢ ×ľ\nĠØ¹ ÙĨ\nĠÙħ Ø¹\nĠ×ĸ ×Ķ\nĠÙħ Ø§\nĠm Ãł\nĠd á»¥\ná»ĩ c\nÐ° Ñħ\ns Ä±\níķĺ ê³ł\nĠ×ķ ×ĳ\nĠÐŁ Ð¾\n×ķ×ª ×¨\nĠÙĦ Ùħ\nĠ×ķ ×ľ\nãģĹãģ¦ ãģĦãĤĭ\nĠ×ŀ ×Ļ\nĠØ¨ ÙĬÙĨ\nÐ· Ð°\nĠÙĥ Ø§ÙĨ\nĠ×Ķ ×Ļ×Ķ\nëħ Ħ\n×Ĳ ×ķ\nÐ´ Ð¸\nĠÐ¿ÐµÑĢ Ðµ\nd Ä±\nĠ×ľ ×©\nĠ×© ×ŀ\nãģĮ ãģĤãĤĭ\nãģĦ ãģĦ\nÑĢ Ðµ\n×§ ×ķ\nÐ¸ Ð»Ð¸\nÐ¼ Ðµ\nÙĬ Øª\nãģ§ ãģĤãĤĭ\nĠÐ² Ð¾\nà¹ĥ à¸«à¸¡\nà¹ĥà¸«à¸¡ à¹Ī\nĠ×© ×ĳ\nĠ à¹Ĥà¸Ķà¸¢\nÙĬ Ùĩ\nãģ§ãģĻ ãģĮ\nãģ¨ ãģ¯\n×¨ ×ķ\nĠ à¸ĭà¸¶à¹Īà¸ĩ\nãģ§ãģį ãĤĭ\nÐ¼ Ð¾\nà¹Ģà¸ŀ à¸·à¹Īà¸Ń\n×¦ ×ķ\n×ĺ ×ķ\nìķ Ī\nĠh á»į\nà¹Ģà¸ĩ à¸´à¸Ļ\nĠØ§ÙĦ Ø¨\nĠ à¸¡à¸µ\në¬ ¼\nÑģ Ðµ\nëĵ¤ ìĿ´\nĠë§ Ĳ\nĠl á»Ľ\na ÅĤ\n×Ĺ ×ĳ×¨\nĠd á»±\nÙĬ Ø«\nĠth á»ĭ\nà¸ģà¹Ī à¸Ńà¸Ļ\nĠ×ĳ ×Ľ×ľ\nãģ ¸\nãģ¨æĢĿ ãģĦãģ¾ãģĻ\náº£ nh\nà¸¢ à¸²\nÙģ Ø§\nà¸ª à¸µ\nà¸ķ à¸²\në² ķ\nãĥª ãĥ¼\nà¸£à¸² à¸Ħà¸²\nĠ×ķ ×ľ×Ĳ\nãģ¨ ãģĵãĤį\nà¹Ģà¸¥ à¸·à¸Ń\ndi ÄŁi\nÙĪ Ø§ÙĨ\nĠ×ľ×Ķ ×ª\nà¸£à¸§ à¸¡\n×¤ ×Ļ×Ŀ\nà¸ľ à¸¡\nÐ¶ Ð¸\nc Ä±\nÑĢ Ð¾Ð´\nĠkar ÅŁÄ±\n×Ĵ ×ķ\nãģ« ãģ¤\nãģ«ãģ¤ ãģĦãģ¦\nr Ãł\n×Ļ×ķ×ª ×¨\nĠìĨ Į\n×§ ×Ķ\nÑģÑĤÐ² Ð¾\nãģĳ ãģ©\ng Ã©\nà¸Ķ à¹īà¸²à¸Ļ\nçļĦ ãģ«\nĠÙĬ ÙħÙĥÙĨ\nìĨ į\nÙĬ Ùĥ\nà¹Ħà¸§ à¹ī\nÑģÐºÐ¸ Ð¹\nÃ¬ m\nĠ×ľ×Ĳ ×Ĺ×¨\nà¸Ńà¸² à¸«à¸²à¸£\nĠà¹Ģ à¸ŀ\nà¸£à¸² à¸°\nà¸¥ à¸¹à¸ģ\nÑģÑĤ Ð°\nĠìľ ł\nÙĤ ÙĪÙĦ\nÐ± Ð¾ÑĢ\nÑģÐº Ð¾Ð³Ð¾\nà¸«à¸¥ à¸±à¸ĩ\nà¸Ĥ à¹Īà¸²à¸§\nà¹Ģà¸¡ à¸·à¸Ńà¸ĩ\nê° ģ\nt Ãł\nÙĬ ÙĬÙĨ\nØ¹Ø± Ø¶\në° ©\nĠëı Ļ\nĠà¹Ģ à¸Ľ\nĠà¹Ģà¸Ľ à¹ĩà¸Ļ\nÃ§ i\nli ÄŁi\nìĹĲ ê²Į\nãĤ¿ ãĥ¼\nĠ×ľ ×ª\n×¤ ×ķ×ª\nà¸Ĥ à¸Ń\nØ± Ø³\nìł Ĳ\nà¸ľ à¹Īà¸²à¸Ļ\nÑĦ Ð¸\nØ¬ ÙĨ\nì¢ ħ\nĠ×Ķ ×¤\nĠn go\ná»ĭ a\nĠtá» ķ\nĠê·¸ ë¦¬\nà¹Ģà¸¡ à¸·à¹Īà¸Ń\nØ° ÙĥØ±\nìĸ ĳ\nìĹ Ń\n×ĺ ×ľ\nk Ä±\nĠØ¹ ÙħÙĦ\nĠØ¹ ÙĨØ¯\nà¸ĭ à¸·à¹īà¸Ń\nĠê± °\nÐ² Ðµ\nr Ã¼\nà¹Ģ à¸Ńà¸²\nà¸ª à¹Į\nà¸Ī à¸Ļ\n×¡ ×ª\nĠgi áº£\nãĤĭ ãģ¨\nà¸ģà¸³ à¸¥à¸±à¸ĩ\nÐ½ ÐµÐ¹\nà¸Ī à¸£à¸´\nà¸Īà¸£à¸´ à¸ĩ\nĠë į\nĠëį Ķ\nà¸Ħà¹Ī à¸°\nÃ¬ n\nĠsÃ¼ re\nĠqu y\nà¸ļ à¸²à¸ĩ\nåıĸ ãĤĬ\n×¨ ×Ĺ\n×ĳ ×ª\nãģĮ ãģĤãĤĬãģ¾ãģĻ\n×¨ ×©\nìĹĲ ëĬĶ\nĠ×Ĳ ×¤×©×¨\nay Ä±\nãģĮ ãĤī\nØŃ Ø¨\nÐ°Ð½ Ñģ\nØ³ ÙĪ\nĠÐ¿ÑĢ Ðµ\nØ¯ ÙĪ\nãģ« ãĤĪ\nà¹Ģà¸ģ à¸¡\nà¸ªà¸¹ à¸ĩ\nm akt\nmakt ad\nmaktad Ä±r\nĠÃ¶n em\n×Ļ×ŀ ×Ļ×Ŀ\nÐ± Ð¾\nÙĪ ÙĬØ©\nà¸£à¸¹ à¸Ľ\nà¹Ĥà¸¥ à¸ģ\nÙħ ÙĬØ¹\nÑģÑĤ ÑĥÐ¿\nà¹Ĥ à¸Ń\nØ¯ÙĬ ÙĨ\nì¤ ĳ\nãģĹãģ ı\nà¹Ģà¸ª à¸µà¸¢\nÐ² Ñĭ\nÙħ Øª\níĺ Ħ\nãĥĲ ãĥ¼\nØ§ Ø´\n×§ ×¡\nĠtá» ¥\nà¸¥ à¸Ķ\nÙģ Ø©\ní ĳľ\nØ± Ø¬\nk ÅĤad\nĠÅŁ ey\nĠØ£ Ùħ\nĠà¹Ģ à¸¡\nĠØ¨ ÙĦ\nÑģ ÐºÐ°Ñı\nãģ¨ ãģ®\nĠìĭ ¤\náº¥ m\nà¸« à¹īà¸Ńà¸ĩ\nà¸Ĭ à¸¡\nd Ã¼\nĠÃ§ ek\nĠê³ ł\n×Ĵ ×ĳ\nà¸Ĭà¸µ à¸§à¸´\nà¸Ĭà¸µà¸§à¸´ à¸ķ\nÙģØ¶ ÙĦ\nà¸ ¯\nÃ§ Ä±\nĠØ¨ Ø´\nĠÙĩ ÙĨØ§\nãģį ãģ¾ãģĹãģŁ\nt Ã¼\nĠìĺ ģ\nĠTÃ¼r k\nÐº ÑĤ\n×¤×¨ ×¡\nãģ¨ãģĦãģĨ ãģĵãģ¨\ní ĶĦ\nà¹ģà¸£ à¸ģ\n×¨ ×ķ×Ł\nĠar as\n×ŀ×¦ ×Ĳ\nĠtá» ī\nØ³ Ø§\nà¸ŀ à¸Ń\nĠØ§ÙĦÙħ ØŃ\nãĥ ¤\nĠØ§ÙĦ Ø§Ø³Øª\nÙģ ÙĨ\n×Ļ×ŀ ×Ķ\nØ± Øª\nãģ¨ ãĤĤ\nĠÐ½Ð° Ñģ\nÐ¿ ÑĢÐ¸\nĠ×Ĺ ×ķ\nÐ¸ Ð»Ð°\nÙĬ Ø´\nĠgÃ¶ z\nĠ×ĳ ×ł×Ļ\nÄ±m Ä±\nĠÑĤ ÐµÑħ\nĠh á»Ļ\nØº Ø±\nÐº Ð¾Ð½\nØ§ØŃ Øª\nĠ à¸ŀ\nà¸Ń à¸Ńà¸Ļ\nà¸Ńà¸Ńà¸Ļ à¹Ħà¸¥\nà¸Ńà¸Ńà¸Ļà¹Ħà¸¥ à¸Ļà¹Į\nÑħ Ð¾\nÑı Ð²\nà¹ģ à¸ªà¸Ķ\nà¹ģà¸ªà¸Ķ à¸ĩ\nà¹Ģà¸ŀ à¸µà¸¢à¸ĩ\nÑĤ Ð¾Ð²\nØ§ ÙĬ\nĠ×Ķ ×ĵ\nĠ×ķ ×Ľ\nãĤī ãģĦ\n×ķ×¤ ×Ł\nĠë ¶Ī\nà¸¥ à¸Ńà¸ĩ\nØ· Ø§ÙĦ\nĠÐ½ Ð¸\nĠÙħ Ø³Øª\náº¿ c\nĠ×© ×Ľ\nĠëķĮ ë¬¸\nà¸§à¸±à¸Ļ à¸Ĺà¸µà¹Ī\n×Ļ×ľ ×ĵ\nØŃ Ø§\nÐµ ÑĨ\nĠc á»©\n×ĵ ×ķ×¨\nĠÙħ ØŃ\n×¨×Ľ ×ĳ\nØ¨ÙĬ Ø¹\nÐ½Ð¸ Ð¸\nĠØ§ÙĦØ£ ÙĪÙĦ\nà¸Ħà¸§ à¸£\nãģ¨æĢĿ ãģĨ\nĠÐ¡ Ð¾\nØ§Ø¦ ÙĬØ©\nØ± Ø§Ø¡\nÐ¾Ñģ Ð¾Ð±\nĠØ¨ Ø£ÙĨ\n×¢ ×ķ×ĵ\nĠÑĤ Ðµ\nãģĵ ãģĨ\nÑģÑĤ ÑĢÐ°\nÐ°Ð¹ Ð½\nĠsÃ¶ z\nØª ÙĨØ§\nà¸Ń à¸´\náº· p\nĠìķĦ ëĭĪ\níķ Ń\nĠ×¨×Ĳ ×©\nĠ à¹Ħà¸Ķà¹ī\nĠ×Ĵ ×ĵ\nĠ×¡ ×¤×¨\nÐ¾Ð±Ñī Ðµ\nĠÙĪ Ø¥\nada ÅŁ\nãģ¡ ãĤĩ\n×§ ×ķ×ľ\nÑĢ ÐµÐ·\nĠdÃ¼ÅŁ Ã¼n\nĠ×ĳ ×Ĳ×ŀ\nĠìĸ´ ëĸ\n×¢×¨ ×ĳ\nÐ½ ÐµÐµ\nĠÑģÑĤÑĢ Ð°Ð½\nØ³ Ø§ÙĨ\nyn Ä±\nĠØ§ÙĦØ± Ø¦ÙĬØ³\nãģĹãģ ª\nĠ×ł ×ª\nãģ«ãģª ãģ£ãģŁ\ng Ã¼\nåıĹ ãģĳ\n×ľ ×ª\nìł Ī\nëĬĶ ëį°\nØ® ÙĬØ±\nà¸ķà¹īà¸Ńà¸ĩ à¸ģà¸²à¸£\nĠÙĦ Ø£ÙĨ\nĠch á»ĭ\nÙĪ Ø©\nà¹ĥ à¸ª\në¶Ģ íĦ°\níķĺ ë©´\ná»¯ u\nà¹Ģà¸«à¸¡ à¸·à¸Ńà¸Ļ\nÐ± ÐµÑĢ\nĠìĿ´ ìļ©\nĠÑģ ÐµÐ±\nwiÄĻ ks\nĠ×ł ×¢\nÑĤ ÑĥÑĢ\nĠngh Ä©\n×© ×ķ×ĺ\nti ÄŁi\nĠde ÄŁi\n×Ĳ ×ĳ\nĠ×ŀ ×ŀ\nãĥĹ ãĥŃ\nwa ÅĤ\nà¸Ī à¸¶à¸ĩ\nØ® Ø¯Ùħ\n×Ĳ ×Ŀ\nÄ±ÅŁ Ä±\ncz Äħ\n×¨ ×ĵ\nĠÑĢ ÑĥÐ±\nØ®Ø± Ùī\nãģ® æĸ¹\nĠÐ´ ÐµÐ½ÑĮ\n×Ĺ ×Ļ×Ŀ\nÐµÑĤ Ðµ\nëĤ ľ\n×Ĳ ×Ĵ\n×¢ ×ķ×¨\në³ Ħ\nåĲĮ ãģĺ\nãĤ ²\n×¨ ×ļ\n×ķ×© ×Ĳ\nìľ ¡\nØ§ Ø®\n×¦ ×Ļ×Ķ\ná»± a\nãģĪ ãģ¦\n×©×Ķ ×ķ\nÐ°Ð½ ÑĤ\nà¸¥à¸² à¸Ķ\nÐ¸Ð½ Ð³\në¡ ł\nØ§Ø¹ Ø¯\nÙĪ Ø³Ø·\nĠÐ² Ð¾Ð¿\nĠÐ²Ð¾Ð¿ ÑĢÐ¾Ñģ\nÙħ ÙĬÙĨ\nà¸Ħ à¸ĩ\n×Ļ×¨ ×Ļ×Ŀ\nc Ã³w\nê² ©\nĠê·¸ ëŁ°\nĠì§ Ħ\nĠ×© ×ľ×Ķ\nà¹Ģà¸£ à¸´à¹Īà¸¡\nà¸Ĭ à¸Ńà¸ļ\nÐ´ ÐµÑĤ\nÑİÑī Ð¸Ñħ\nà¸ļ à¸Ńà¸ģ\næĢĿ ãģĦ\nØ¹ ÙĬØ¯\n×¡ ×ŀ\n×Ĵ ×Ļ×¢\n×¦ ×ĵ\nØ¨ Ø§Øª\nĠëĶ° ëĿ¼\nà¸Ī à¸±à¸ĩ\nãģłãģĳ ãģ§\n×¢ ×Ļ×¨\nĠÑĩ ÐµÐ»\nĠÑĩÐµÐ» Ð¾Ð²\nĠÑĩÐµÐ»Ð¾Ð² ÐµÐº\nãĥĥ ãĥģ\nà¹Ģà¸ģ à¸µà¹Īà¸¢à¸§\nà¸Ķ à¸´\nĠ×¤ ×¢\n×Ļ×ŀ ×Ļ\në° ĺ\nØ® Ø§Ø±\n×ĳ ×Ļ×ª\n×¢ ×Ļ×Ŀ\nÃ¼ yor\nãĤģ ãģ¦\nÐº Ð»Ð°Ð´\nĠ à¸Īà¸²à¸ģ\nà¹Ģà¸Ħ à¸¢\nà¸ª à¸Ńà¸ĩ\nà¹ģ à¸Ħà¹Ī\náº« u\nà¸«à¸Ļ à¸±à¸ĩ\n×©×ľ ×ķ×Ŀ\nØ§ÙĨ ÙĬØ©\nåĩº ä¼ļ\nåĩºä¼ļ ãģĦ\nà¸ł à¸²à¸¢\nà¸ļà¸² à¸Ĺ\nà¸Ĭà¸² à¸§\nmu ÅŁ\nĠ×ľ×§ ×ĳ×ľ\nãĤ· ãĥ£\nĠÄ° ÅŁ\n×Ĵ×ĵ ×ķ×ľ\nØ¬ Ø¹ÙĦ\në³ Ģ\nà¸¢à¸´ à¹Īà¸ĩ\nà¸Ļ à¸²à¸¢\nà¸Ļ à¸µà¹Ī\nà¸§à¸´ à¸ĺà¸µ\nãĤī ãģªãģĦ\nëł Ī\nĠë¬¸ ìłľ\nĠ à¸ģ\nà¸Ĺà¸³ à¸ĩà¸²à¸Ļ\nà¹Ģà¸§ à¹ĩà¸ļ\nÑĦ Ðµ\næ¥½ ãģĹ\nà¸ªà¸³ à¸Ħ\nà¸ªà¸³à¸Ħ à¸±à¸į\nØ± Ùħ\nãģķãĤĮ ãģ¦\nĠÐ¾Ð± Ð»Ð°\n×¨×Ĳ ×Ļ\nà¸«à¸¡ à¸Ķ\nÙĨ ÙĬØ©\nÐ»Ð¸ Ð½\nĠe ÄŁ\nit im\nëł ¹\nØµ Ø§ÙĦ\nÅĽ l\nà¸ľ à¸´à¸Ķ\nãĥŀ ãĥ³\nåħ¥ ãĤĮ\nà¹Ģà¸ķ à¸Ńà¸£à¹Į\nØ§Ø± ÙĬ\nĠÐ ¦\nd Ã¼r\nà¸ª à¸§à¸¢\në¦ ½\nØ±Ùĥ Ø©\nĠh Ã£\n×Ļ×ª ×Ķ\nà¸Ĥ à¸Ļà¸²\nà¸Ĥà¸Ļà¸² à¸Ķ\nà¸Īà¸³ à¸Ļ\nà¸Īà¸³à¸Ļ à¸§à¸Ļ\n×© ×ķ×§\nĠÐ´ Ð¾Ð¼\nì± ħ\nãģĭ ãģĳ\n×¤ ×ķ×ľ\nà¸Ĭ à¸²à¸¢\nÑģ Ð¼Ð¾ÑĤÑĢ\nÑģÐ» ÑĥÐ¶\n×© ×Ĳ×ľ\nÐºÑĢÑĭ ÑĤ\nĠìŀ ĺ\né«ĺ ãģĦ\nĠÑĢ ÑĥÐº\nÙĨ Øµ\nÐ´ Ð°Ð²\nÆ°á» ¡\nÆ°á»¡ ng\nØ± Ø§Ùħ\n×Ļ×ł ×Ļ×Ŀ\nãĥ© ãĥ¼\nëĦ ¤\nĠØª Ø¹\nl ke\nå¥½ ãģį\næĮģ ãģ¡\nĠë§ İ\nĠy Ã¼k\nĠÑģÐ¾ÑģÑĤ Ð°Ð²\nÐµÐ½ÑĤ ÑĢ\npe ÅĤ\nà¹Ģà¸Ľà¸¥ à¸µà¹Īà¸¢\nà¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢ à¸Ļ\níı ī\nãĤĦ ãģĻ\n×Ĺ ×ĸ\n×ĳ×¨ ×Ķ\në£ ¨\nìĶ Ģ\nØ¨ØŃ Ø«\nà¹Ģà¸ķ à¹ĩ\nÃ³w i\nØ¨ Ùĩ\nãģį ãģ¾ãģĻ\nĠ×¢ ×ŀ\n×Ĵ ×ķ×ľ\nÐµÐ· Ð´\nÙĬÙģ Ø©\nà¸ªà¸Ļ à¹ĥà¸Ī\nĠ×ª ×ľ\nÑı Ñī\nĠØ³ ÙĨ\nĠÙĪØ§ ØŃØ¯\nĠÑģ Ð¼\nlad Ä±\nÄ± ld\n×Ļ×¨ ×ª\nà¸µà¸¢ à¸Ļ\n×ª×Ĺ ×ª\nĠÐ¶ Ð¸Ð·\nà¸ŀ à¸±\nà¸ŀà¸± à¸Ĵ\nà¸ŀà¸±à¸Ĵ à¸Ļà¸²\nà¸Ĭ à¸´\nØ§ Ø®ÙĦ\nãģ£ãģ¦ ãģĦãģŁ\nà¸£à¸± à¸Ĳ\nãĤģ ãĤĭ\nà¹Ĥ à¸ģ\nĠT á»ķ\nĠh akk\nØ± Ùģ\nìł Ģ\nÑģ Ð¾Ð±\nãģª ãģĳãĤĮãģ°\nÙĩ ÙĪ\nĠë² ķ\nãĤ Ĩ\nĠØ§ÙĦØ³ Ø¹ÙĪØ¯\nĠ×Ĳ ×ª×¨\nØ§Ø º\nĠ×ľ ×ĵ\nà¹ģ à¸ķ\nà¹ģà¸ķ à¹Īà¸ĩ\níĮ Į\nÑĥÐ¿ Ð¸ÑĤÑĮ\nà¸ŀà¸·à¹īà¸Ļ à¸Ĺà¸µà¹Ī\n×ĳ ×ª×Ļ\nà¹ĩ à¸ģ\nÅĤ at\nĠê°ľ ìĿ¸\nìłķ ë³´\nÑĤ Ð°Ð»\nĠgÃ¼ ven\nĠÄ° l\nĠê° ģ\nĠØ¨ Øª\n×ŀ ×ķ×ł×Ķ\nĠØ§ÙĦØŃ ÙĥÙĪÙħ\nÙĤ Ø§Øª\nà¹ģ à¸ģà¹Ī\nà¸« à¸²à¸ģ\nÐ½ ÑĮ\nà¸Ľ à¸£à¸±à¸ļ\nà¸¡à¸² à¸ĵ\nĠÐ½Ðµ ÑģÐº\nĠØ ¶\nà¸ªà¸¡ à¸±\nà¸ªà¸¡à¸± à¸Ħà¸£\nãģĮ ãģĤãĤĬ\nÐ¼ ÐµÑģÑĤ\nĠ×Ĳ ×¦×ľ\nĠÐºÐ¾Ð¼Ð¿ Ð°Ð½Ð¸\n×¡ ×¨\nÙĬÙħ Ø©\nĠÑħ Ð¾ÑĢÐ¾\nĠÑħÐ¾ÑĢÐ¾ ÑĪ\nĠ×Ļ ×ķ×ĵ\nÃ¼ s\n×Ĵ ×Ļ×©\nà¸ļ à¸Ĺ\nØªÙĨ Ø¸\nà¸§ à¸²à¸ĩ\nà¸¡ à¸«à¸²\nĠ×Ľ ×ķ×ľ\nà¸Ĥ à¹īà¸²à¸ĩ\në° ľ\nÐ³ Ð¾Ð´\nÐ´ Ð°Ð½\nãģĭãĤĤãģĹãĤĮ ãģ¾ãģĽãĤĵ\nãģĵ ãģ¡ãĤī\nãĥĲ ãĤ¤\nece ÄŁi\nØ¯ÙĬ Ø¯Ø©\nÙĨ Ùī\nĠëĭ¤ ìĿĮ\nà¸§ à¸µ\nØº Ø§\nÐ»Ð¸ Ð·\nà¹Ģà¸Ķ à¸´\nà¹Ģà¸Ķà¸´ à¸¡\nĠÙĬ Ø³Øª\nĠy Ä±lÄ±\nko ÅĦ\nãģ§ãģĹãĤĩãģĨ ãģĭ\nãģĤ ãģª\nãģĤãģª ãģŁ\nÑĨ ÐµÐ½\nĠÙĪ Ø²\n×Ĳ ×Ļ×©\nà¹Ī à¸Ń\nØ± ØŃ\nê´ ĳ\nÑĢÐ° ÑģÑĤ\nĠ×Ķ ×ľ\nãģĹãģ¦ ãĤĤ\n×ŀ×¨ ×Ľ\n×ŀ×¨×Ľ ×ĸ\néģķ ãģĦ\nãģŁ ãģı\nĠÑģ ÑĥÐ´\nÐ² ÐµÑģÑĤÐ¸\nĠíķĦ ìļĶ\nãĥķ ãĤ§\nÑĤÐµÐ»ÑĮ Ð½Ð¾\nà¹Ģà¸ŀ à¸·à¹Īà¸Ńà¸Ļ\nÅĤu Å¼\nà¹Ģà¸Ķà¸´à¸Ļ à¸Ĺà¸²à¸ĩ\n×© ×ķ×¨\nĠ×ŀ ×ĵ\n×ķ×¢ ×ľ\nÙĦ Ø§Ùħ\nà¹Ħ à¸ĭ\nÐ» ÐµÐ¹\nÐºÑĥ ÑĢ\náº ¢\nà¸Ĺ à¸²à¸Ļ\nì§ ĳ\nĠÐ³Ð¾ÑĢ Ð¾Ð´\n×¨ ×¡\n×ľ ×ķ×Ĵ\nmas Ä±nÄ±\nĠÐ» ÑĥÑĩ\nà¸¥ à¹Īà¸²\nìļ ¸\n×© ×ĺ\nĠÐĺ Ð½\ní Ĥ¤\nÙĪÙĦ Ø§\nìķ ł\nĠØ£ÙĬ Ø¶Ø§\nÙĥ Ø§Ø±\nĠØ§ÙĦØª Ø¹\nà¸ª à¸¹à¹Ī\nãĤ ¼\n×ĳ ×Ļ×Ĳ\nà¸¢ à¸ģ\nĠØŃ ÙĤ\nØ± Ø¨ÙĬ\nãģĺãĤĥ ãģªãģĦ\nà¸£à¸±à¸ģ à¸©à¸²\nÑħÐ¾Ð´ Ð¸ÑĤ\nà¸ķ à¸Ńà¸ļ\n×ł ×ĺ×Ļ\nĠØ§ÙĦÙħ Ø¬\nØªÙħ Ø¹\nÐ¾Ð² Ð°ÑĤÑĮ\nÙĦ ÙĬÙĨ\n×Ļ×ŀ ×ķ×ª\nĠm Ã¹\nn ÄĻ\nĠØ¯ ÙĬ\n×Ľ ×©×Ļ×ķ\nĠhi Ã§\në ĳĲ\nÙĪ Ø§Ø¡\nÙĪ Ø·\nĠØ§ÙĦ Ø¨ÙĦ\nà¹ģà¸¡ à¹ī\n×§ ×ķ×ª\nÙĪØ¬ Ø¯\nå§ĭ ãĤģ\nÙĬ Ø¦Ø©\nĠë§ ¤\nØµ Ø¨ØŃ\n×¤ ×Ĳ\nÐ³ Ð¾ÑĢ\n×¡ ×Ķ\nØ¨ÙĬ ÙĤ\nà¸¢ à¸²à¸ģ\nĠÐ½ Ð°Ð´\nÙĬ Ùĳ\nĠØ¨ ÙĪ\n×¡ ×ķ×¨\nÙħ ÙĥØ§ÙĨ\n×¨ ×ĳ\n×Ĵ ×ĸ\n×¦ ×ª\nb ilit\nÐ» Ð°Ð³\nĠN go\n×Ĳ ×ķ×¨\nà¸ķ à¸Ļ\níĬ ¹\nà¸Ĺà¸µà¹Ī à¸Ķà¸µ\nà¸Ľà¸£à¸° à¸Īà¸³\nÐ¾Ð² Ð°Ð½Ð¸Ðµ\nãģĦ ãģ¤\nãĥĥãĤ¯ ãĤ¹\nåĲĪ ãĤı\nåĲĪãĤı ãģĽ\n×Ļ×ł ×ķ×Ļ\náº¡ y\nØ« ÙĤ\nĠÐ¿ÑĢ Ð¾Ð±\nĠÐ¿ÑĢÐ¾Ð± Ð»ÐµÐ¼\nÅŁ eh\nÅŁeh ir\nØ¹ Ø§Ø¯Ø©\nØ§ÙĨ ÙĪÙĨ\nà¸ķà¸±à¸§ à¹Ģà¸Ńà¸ĩ\nì¶ ķ\nÄ± lan\nÐ± Ð°Ð½\nãĥ³ ãĥī\nà¸Ī à¸µ\nĠ×Ķ×© ×ł×Ļ\nÐ¿ Ð¾ÑĤ\n×ķ×ľ ×Ļ×Ŀ\nà¸¥ à¸±à¸ļ\nĠÑį ÑĤÐ¸\n×ĳ×§ ×©\në¹Ħ ìĬ¤\nà¸Ńà¸¢à¹Īà¸²à¸ĩ à¹Ħà¸£\n×Ļ×ľ ×Ļ\nà¹ĥà¸Ĭ à¹Ī\nĠØ§ÙĦ ÙĥÙĦ\nãĥļ ãĥ¼ãĤ¸\nØµ Ø©\nÑĤÐ¸ ÑĢ\nãĤĵ ãģ©\nÐ·Ñĭ Ðº\nwy Å¼\nÙĩ ÙĬ\nĠÙħ ÙĦÙĬ\nĠÐ²Ð¸Ð´ Ðµ\nØ¸ Ø§Ùħ\nØ¯Ø§ ÙĪÙĦ\n×ŀ ×ª×Ļ\nĠs Ä±k\nà¹Ģà¸ķà¸´ à¸¡\nãĤ¢ ãĤ¤\nÐºÐ° Ñħ\n×¦ ×Ļ×ľ\nà¹Ģà¸Ĭ à¹Īà¸Ļ\nÐ¼ Ð°Ð³\nÐ¼Ð°Ð³ Ð°Ð·\nÐ¼Ð°Ð³Ð°Ð· Ð¸Ð½\nà¸Ľ à¸±\nà¸Ľà¸± à¸Ī\nĠ×© ×Ļ×¨×ķ×ª\nà¸µà¸¢ à¸¡\nãĥĸ ãĥ«\nĠØ¯ ÙĪÙĦ\n×§×¨ ×Ļ×Ŀ\nÙĩ Ùı\nÐ¾Ð² Ð¾\nĠÃ¼ ret\nØ¯ ÙĪÙĨ\nà¹ģà¸Ļ à¸§\nà¹Ģà¸Ļ à¸·à¹īà¸Ń\nĠÑĦ Ð¾ÑĤ\nãĥ ĺ\nãģ¤ ãģĭ\nÑı Ñģ\nĠíķĺëĤĺ ëĭĺ\nØ§Ø¦ Ø¹\nĠÐ¿ Ð»Ð°ÑĤ\nìĺ Ī\nĠdost ÄĻp\nÙĪØ¬ Ùĩ\nĠ×Ķ ×Ĺ×Ļ\n×ł ×Ļ×§\nÐ´ ÐµÐ¹\ní ĽĦ\nÄ± y\nØ¨ØŃ Ø±\nà¹Ģà¸ª à¸£à¸´à¸¡\nĠ×ľ ×Ĵ\nØ°Ùĩ Ø¨\nØ¬ ÙĬÙĦ\nØ±Ùĥ Ø²\nĠë ħ\nĠëħ ¸\n×¤×Ļ×ľ ×ķ\nãģ¾ ãģļ\niri ÅŁ\nĠÙĥ ÙĬÙģ\nĠ×ĳ ×¦\nĠêµ Ĳ\nÑĢÐ¾Ñģ Ñģ\nĠØ´ ÙĬ\nĠiÃ§ er\n×Ĵ ×ķ×ĳ×Ķ\nÐ¼ÐµÐ½ Ð½Ð¾\n×¢ ×ĳ×Ļ×¨\n×ķ×ŀ ×Ķ\nãĤī ãģĹãģĦ\nãģ ¼\nÑī Ð¸Ð½\nè²· ãģĦ\nØ¬ÙħÙĪØ¹ Ø©\nĠdÃ¶n em\nĠ×ĳ ×Ĳ×¨\nÐ² ÐµÑģÑĤ\n×ķ×¨ ×ķ×ª\nØ³ Ùģ\nà¹ģà¸Ĺ à¸Ļ\nĠÐ´ Ð¾ÐºÑĥÐ¼ÐµÐ½ÑĤ\nĠØ§ ÙĬ\nØ¬ Ø§ÙĨ\n×¦×ķ×¢ ×Ļ\nĠÐ¾Ñģ Ð¾Ð±\nĠØ§ÙĦÙħ Ø³\nÑĢÐ°Ð ±\nà¸ł à¸¹\nà¸Ķ à¸²à¸§\nÐ» ÐµÐºÑĤ\nØ¹ ÙĤ\n×ķ×ĵ ×ķ×ª\nĠol u\nĠolu ÅŁtur\nãģ¾ ãģ¾\nÐµÐ´ Ð¸Ð½\nà¹Ģ à¸Ńà¸ģ\nãĤµ ãĤ¤\nëĦ Ī\nØ· ÙĨÙĬ\nØ· ÙĤØ©\nĠÐł Ð°Ð·\nÙĦ Ùĳ\nÑĩ ÐµÐ¼\nĠ×ľ ×ĺ\nà¸ªà¸± à¹Īà¸ĩ\nØ³Ø± Ø§Ø¦ÙĬÙĦ\nĠ×¤×¨ ×ĺ×Ļ\nÐ´ ÐµÑģÑĮ\nĠ×ł ×Ľ\nØ§ÙĨ Ø¨\nÙĬØ§ Ø©\nÙħ Ø¨Ø±\nĠk Ä±\nà¸Ľ à¸ı\nà¸Ľà¸ı à¸´\nà¸ļà¸± à¸ķà¸´\n×ł ×ª×Ļ\nìĨ ¡\nØ± Ø§Ø¨\nà¹ĥ à¸ķ\nà¹ĥà¸ķ à¹ī\n×Ļ×ł ×ª\nÙĪ ÙĬØ±\nĠ×Ķ×ŀ ×Ļ\nÐµÐ¹ ÑĩÐ°Ñģ\n×§ ×ķ×ĳ\nØ¯Ø± Ø§Ø³\nĠÙħ ÙĤ\nØ±ÙĬ ÙĨ\nØ® Ø§Øµ\nãģĬ éĩĳ\nĠØ¬ Ø¯Ø§\nãģĨ ãģ¡\nëħ ¸\nÄ±r Ä±m\næ§ ĺ\nãģ« å¯\nãģ«å¯ ¾\nÑĨ ÐµÐ²\nĠv ard\nĠÐĲ Ð½\ne ÄŁ\nÑģÑĤÐ² ÐµÐ½Ð½Ð¾\nÐ ¨\nØ³ Ø¯\nà¸ģ à¸¸\nà¹ģà¸ľ à¸Ļ\nà¸£à¸¹à¹ī à¸ª\nà¸£à¸¹à¹īà¸ª à¸¶à¸ģ\nØ§Øª ØŃØ§Ø¯\nÑĳ ÑĤ\n×Ĺ ×ķ×§\nãģĻ ãģĲ\nØ· ÙĦØ§ÙĤ\nĠ×§ ×ķ×ĵ\nà¹ĥà¸Ĭ à¹īà¸ĩ\nà¹ĥà¸Ĭà¹īà¸ĩ à¸²à¸Ļ\nãĥ¼ãĤ ¿\nĠs Ã¼r\nÑĢ Ð¾Ðº\në³ ĳ\nà¸ªà¸¡à¸² à¸Ĭ\nà¸ªà¸¡à¸²à¸Ĭ à¸´à¸ģ\nãĥķ ãĥ¬\nè¾¼ ãģ¿\nãĤ» ãĥ³\nĠê°Ģ ì§Ģ\nà¸ľ à¹īà¸²\nÑįÑĤ Ð¾Ð¼Ñĥ\nÐ¸ÑĤ ÐµÐ»\nà¸ł à¸±\nà¸ ĳ\nãĥĸ ãĥ©\n×Ľ×ª ×ķ×ĳ\n×ł ×Ŀ\nÐµÐ½ Ð½ÑĭÐµ\n×¢ ×¨×Ľ×ª\nĠì Ĥ\nĠìĤ ´\nà¸Ĥ à¹īà¸²\n×ł ×ķ×¡\nãĥ¬ ãĥĵ\nÑĢ ÐµÑģ\nà¹Ģà¸¥ à¸Ĥ\nØ« Ø§ÙĦ\nìĹ Ĩ\nĠÑĩ Ð°ÑģÑĤ\nà¸² à¸¨\nãĥª ãĤ¢\nu Ã§\n×Ļ×Ľ ×ķ×ª\nà¸¥ à¹īà¸²à¸Ļ\ni Ã«\nãĤ¸ ãĤ§\nà¸Ī à¸Ń\nÙĪ ØŃØ¯\n×Ļ×¦ ×ķ×ĳ\nĠ×ĳ ×©×ľ\nÐ¾Ðº Ð¾\nØ¶ Ø©\nØ° Ø±\nĠÑĥ Ð´\nÄ° L\n×ķ×¦ ×Ļ×Ŀ\n×ĸ ×ŀ×Ł\nà¸Ľ à¸ģ\níķĻ êµĲ\nØ³ Ø§Ùħ\nà¹Ħ à¸Ķ\nà¸¥à¸° à¹Ģà¸Ń\nà¸¥à¸°à¹Ģà¸Ń à¸µà¸¢\nà¸¥à¸°à¹Ģà¸Ńà¸µà¸¢ à¸Ķ\náº£ y\nÐ°ÑĨÐ¸ Ð¾Ð½\nãĤ¹ ãĤ¯\n×¤ ×ķ×¡\nà¸£ à¹Īà¸²à¸ĩ\nÐµÐ½ Ð½ÑĭÐ¹\nØ¹ ÙĨ\nØ¹ÙĦ ÙĨ\nØ§Ø¦ Ùģ\nd ÄĻ\nØ¤ ÙĪÙĦ\n×ľ×ķ ×ķ\nĠ×ĳ ×©×ĳ\nä»Ĭ åĽŀ\nĠØ§ÙĦØ¬ ÙĨ\nØ¯ Ø§Ø¯\nwa Äĩ\nãĥª ãĥ³\nĠìŀĲ ìĭł\nØ§ÙĨ ÙĬØ§\nãĥ¡ ãĥª\nÙĦ ÙĪÙĨ\nà¸Ĺ à¹Īà¸Ńà¸ĩ\nà¸Ĺà¹Īà¸Ńà¸ĩ à¹Ģà¸Ĺà¸µà¹Īà¸¢à¸§\nØ§Ùģ ÙĬ\nĠÐ»Ð¸ ÑĪ\nÙħ ÙĬØ©\nÐ¾ÑĤ Ð²ÐµÑĤ\nÑĩ Ð¸Ð½\nÃ Ĭ\nãĥ¡ ãĥ³\nå® Ł\néļĽ ãģ«\nĠÑĢÐ°Ð ¹\nãĤ¦ ãĥ³\n×Ļ×¨ ×ķ×©\n×Ļ×¨×ķ×© ×ľ×Ļ×Ŀ\nà¸¡ à¸°\nĠar a\nÐºÐ°Ð· Ð°ÑĤÑĮ\nà¸ķ à¸±à¸Ķ\nÑĥÑİ ÑĤ\nĠÃ¼ st\n×Ĵ ×ķ×ĳ\n×Ĵ×ķ×ĳ ×ķ×ª\nmal Ä±\nÐµÐ³ Ð¾Ð´\nÐµÐ³Ð¾Ð´ Ð½Ñı\nØ§Ùģ ÙĤ\nà¸Ĭ à¹Īà¸Ńà¸ĩ\nĠÃ¶ zellik\n×Ļ×¦ ×ķ×¨\nĠmi ÄĻd\nĠili ÅŁ\nĠÐ½Ð° ÑħÐ¾Ð´\n×¢ ×ĸ×¨\n×ľ ×Ľ×ª\nÙĨØª Ø§Ø¬\nĠÑģ ÐµÐ¼\nà¸Ī à¹Īà¸²à¸¢\nà¸ķà¸£ à¸§\nà¸ķà¸£à¸§ à¸Ī\n×¤×¨ ×ķ\nà¸Ĥ à¸±à¸ļ\nãģ ŀ\nĠÐ¿ Ð»Ð¾\nÐº Ð¾Ð»ÑĮ\n×ŀ×¢ ×ĺ\níķĺ ìĭľ\njÄħ ce\nÙĨ Ø§ÙĨ\nà¸¥à¸µ à¸ģ\nÐ½ ÑĥÑĤ\nĠÐ¾Ð± ÑĢÐ°Ð·\nÙĥ Ø¨Ø±\nĠØ§ÙĦÙĪ Ø·ÙĨ\nãģķãģĽ ãģ¦\nÙĤ Ø§Ø¡\n×ŀ×ĵ ×Ļ×ł\ny Ã¼\n×¤ ×Ļ×ª\n×ł ×ķ×Ł\nÙħÙĨ Ø¸\nà¸«à¸Ļ à¸±à¸ģ\nìŀ Ī\nãĤ« ãĥ¼ãĥī\nØ¹ ÙĨÙĬ\nÐ¿ Ð¾Ð´\nØ¶ Ø§Ø¡\nà¸Ļ à¸ķà¹Į\n×ŀ×© ×¤\nà¸§ à¹Į\n×¨ ×ķ×§\nà¸ª à¸·à¹Īà¸Ń\n×¤×§ ×Ļ×ĵ\nãģªãĤī ãģªãģĦ\nĠìĹ¬ ëŁ¬\nÙĦ Ø¬\nÑī Ð¸ÑĤ\nãĥĥ ãĤ·\nÙĦÙĬ Ø³\nĠÙĦ ÙħØ§\nìł ĳ\n×ĳ ×Ļ×Ł\nãĥģ ãĤ§\nĠgÃ¼ Ã§\nĠch á»©\n×ķ×¦ ×Ĳ\n×§×¨ ×ĳ\nà¹Ĥ à¸ŀ\nÐ¾Ñĩ Ð½Ð¾\n×¡×§ ×Ļ\n×©×ľ ×Ŀ\nØµØ± Ùģ\nĠL Ãł\n×¢ ×Ļ×ª\ná» ·\nà¹Ĥ à¸Ńà¸ģ\nà¹Ĥà¸Ńà¸ģ à¸²\nà¹Ĥà¸Ńà¸ģà¸² à¸ª\nĠ×Ķ ×ĵ×ĳ×¨\nà¸Ļà¸± à¹Īà¸Ļ\nØ² Ø±\nÐ½Ð°Ðº Ð¾\níļ į\nãĤĤ ãģ¡\nãĤĤãģ¡ ãĤį\nãĤĤãģ¡ãĤį ãĤĵ\nØ§Ùħ Øª\nØ¹Ø¯ Ø§Ø¯\nÐ¸ Ð½Ñĭ\nÅĤy w\nà¸Ħ à¸ĵà¸°\nà¸Ĺ à¸°\nkt Ã¶r\n×Ļ×Ĺ ×Ķ\nĠÐ¼ Ðµ\nĠÐ¼Ðµ ÑģÑı\n×ł×Ķ ×Ĵ\nĠÑģ ÑĥÑīÐµÑģÑĤÐ²\nà¸Ļ à¸±à¸Ļ\nÑĦ ÑĦ\nÐµÐº ÑĤÐ¸Ð²\nØ¹ÙĦÙĪÙħ Ø§Øª\nÐ± ÑĥÐ´\nà¸Ļà¸±à¸ģ à¸ĩà¸²à¸Ļ\nà¸«à¸Ļà¹īà¸² à¸Ĺà¸µà¹Ī\nÙĤÙĬ ÙĤ\nãĤ· ãĥ³\nãģ« éĸ¢\n×Ĳ×¨ ×Ĵ\nĠÐ¿ÑĢ Ð¾ÑĤ\nĠÐ¿ÑĢÐ¾ÑĤ Ð¸Ð²\nĠìŀĪ ìĸ´\nÙĤÙĬ ÙĤØ©\nìĹ ĩ\nk Ã¼r\nãģ«ãģªãĤĬ ãģ¾ãģĹãģŁ\nĠÐ´Ðµ ÑıÑĤ\nĠÐ´ÐµÑıÑĤ ÐµÐ»ÑĮ\n×¤×ķ×¨ ×ĺ\nà¸Ł à¹īà¸²\nà¹Ģ à¸ł\nĠÐ°Ð²ÑĤÐ¾Ð¼ Ð°ÑĤ\n×ĸ ×Ļ×§\nĠold uk\nØ¹ Ø§Ùħ\nĠÑĤ Ð¾ÑĢ\nyrÄ± ca\nÃª Ì\nãĤŃ ãĥ³ãĤ°\nãģ« ãģ¨ãģ£ãģ¦\nà¹Ģà¸ī à¸ŀ\nà¹Ģà¸īà¸ŀ à¸²à¸°\nãģ¯ ãģļ\n×ŀ ×Ĳ×Ļ\nà¸ªà¸° à¸Ķ\nà¸ªà¸°à¸Ķ à¸§à¸ģ\nìľ¼ ë©°\nà¸ģ à¸µ\nà¸ ¬\nĠ×¢ ×ķ×©\nà¸łà¸² à¸©à¸²\nà¸Ĺ à¸±à¸Ļ\nac akt\nacakt Ä±r\nØ§Ø¹ Ø¯Ø©\nĠÑĥÑģÐ» ÑĥÐ³\n×¡ ×¨×ĺ\n×ķ×ŀ ×ķ×ª\n×Ķ ×ķ×¨\n×ŀ ×ķ×ĳ\n×ŀ×ķ×ĳ ×Ł\nØ³ÙĬ Ø§Ø³\nØ§ØªÙģ Ø§ÙĤ\n×Ķ ×¦×ľ\nÙħØ¤ Ø³\nĠp Ã³\nĠÐº Ð½Ð¸\n×Ļ×Ľ ×ķ×ľ\nà¹Ģà¸«à¸¥ à¸·à¸Ń\n×Ľ×ľ ×Ľ\n×ł ×ĸ\nÑĪÐ¸ Ðµ\nr Ã¨s\nĠØ§ÙĦØŃ ÙĤ\nÐ»Ñı ÑĢ\nà¸« à¸į\nà¸«à¸į à¸´à¸ĩ\n×¨×Ĵ ×Ļ×©\nà¹Ģà¸ª à¹īà¸Ļ\n×©×ĳ ×ķ×Ł\nÃ´ tel\nÐ°Ð¿ ÑĢ\nÐ°Ð¿ÑĢ Ð¸Ð¼ÐµÑĢ\nØ§Ø¨ ÙĦ\nĠÑĢÐ°Ð· Ð²Ð¸ÑĤ\nĠÐ¿ Ð¾Ð»ÑĮÐ·\nĠÐ¡ ÐµÑĢ\n×ķ×ĳ ×Ļ\nr Ã³Å¼\nìĭ Ń\nãĤ¯ ãĥĪ\nãģĹ ãĤĪãģĨ\nà¸ģà¸£ à¸¡\nØŃ ÙĥÙĪÙħ\nà¹Ĥ à¸ļ\nà¸Ĺ à¹īà¸²à¸¢\nĠM Ã¡\nĠÑĤ Ñĭ\nà¸Ħà¸£ à¸±à¸§\nÑĢÑĥ Ð±\náº¡ p\nĠm ÅĤ\nĠmÅĤ od\nĠgÃ¶r Ã¼ÅŁ\nĠgeli ÅŁ\nÆ°Æ¡ i\n×ŀ×© ×§\nÙĢÙĢ ÙĢÙĢ\nà¸£à¸² à¸§\nãģĹãģ £\nãģĹãģ£ ãģĭãĤĬ\nĠÐļ Ð¾Ð½\nĠk Ãª\nà¹Ĥà¸Ĺ à¸£\nèĲ½ ãģ¡\nåĩº ãģ¦\nà¸¥ à¸±à¸ģà¸©\nĠ×Ĵ ×ĳ×ķ×Ķ\nãĥĻ ãĥ«\nê±° ëĤĺ\në§ Ĳ\n×Ļ×ľ ×ĵ×Ļ×Ŀ\nĠëĦ Ī\n×ŀ×¨ ×Ļ\nà¸£ à¸ª\nãĥŃ ãĥ³\nÐ¸ Ð»Ð¾\nÐ½Ð¾ÑģÑĤÑĮ Ñİ\n×ĸ×¨ ×Ĺ\nÐ¿ Ð¾Ð½\nĠ×Ķ×© ×ľ\nê²ł ìĬµëĭĪëĭ¤\nĠki ÅŁ\nĠÐļ Ð¸\nà¸§ à¸£\nØ¯ Ø§Ø¹\nÅŁ im\nÙĨ Ùĳ\nÐ² Ð°ÑĤ\nØ±Ø§ Ùĥ\nØ¨ Ø§ÙĦ\nÐ¸Ð´ Ðµ\nĠ×Ķ×ŀ ×Ĺ\nìĸ µ\nØªÙģ Ø§Ø¹\nØ£ Øª\nëĬ ĺ\n×© ×Ļ×ª\nØ³Øª ÙħØ±\nĠÑĦ Ð°Ðº\nĠØ§ÙĦØ£Ùħ Ø±ÙĬ\nëŀ ¨\nØ§Ø³ Ùħ\nĠa ÄŁ\nĠÃ§ ev\nÙĥ ÙĪØ±\nãģķ ãģ¾\nĠÃ§ Ã¶z\nĠØ± Ø³\nÄħ da\nà¸ªà¸Ļ à¸¸\nãģĹãģ¦ ãģıãĤĮ\nÐ½ Ñİ\nleÅŁ me\nãĤª ãĥ³\nãģ¨ ãģªãĤĬ\nava ÅŁ\n×ĺ ×Ļ×ĳ\nØŃ Ø¶\n×ķ×¦ ×Ĳ×ķ×ª\nÙĨ ÙħÙĪ\nÄ± t\nĠÑħ Ð°\nĠÑħÐ° ÑĢÐ°Ðº\nĠÑħÐ°ÑĢÐ°Ðº ÑĤÐµÑĢ\nĠd ÅĤ\nãĥĹ ãĥ©\nà¸Ĭ à¸¸à¸¡\nà¹Ī à¸Ńà¸Ļ\n×ķ×ĳ ×ľ\nÑģ Ð¾Ð»\n×ĵ ×Ĵ\nÐ°ÑĢ Ð°ÑĤ\nn ivers\nĠgerÃ§ek leÅŁtir\nĠØ§ÙĦ ÙĦÙĬ\nà¸£à¸° à¸¢à¸°\nĠÙħ Ø®ØªÙĦÙģ\nĠgÃ¶ nder\nÙģ Ø§Ø±\ndo ÄŁ\ndoÄŁ an\nØµ ÙĦØ§ØŃ\nĠyay Ä±n\nãĥĨ ãĥ³\nà¸£à¸§ à¸Ī\n×Ļ×Ĺ ×Ļ×ĵ\nÃ¼nk Ã¼\nÑĨÐ¸ Ð°Ð»ÑĮÐ½\nà¸ļ à¸¹\nà¸¡ à¸¸\nh Ã¤\nØ® Ùģ\nå¢ Ĺ\nå¢Ĺ ãģĪ\nÐµÑĩ Ð½Ð¾\nĠØ§ÙĦØ³ ÙĨ\nà¸Ĥ à¸²à¸§\nim di\nÐ «\nà¸Ļà¸Ńà¸ģ à¸Īà¸²à¸ģ\nà¸ļà¸² à¸¥\n×ª ×©\nĠdÃ¼zen le\nÐ¼Ñĭ ÑģÐ»\nãģı ãģª\nÅ¼ u\nĠwsp Ã³ÅĤ\nĠÐ½ Ð°Ð·\nÄ±nd aki\nØªØ± Ø©\nÅŁ ek\nĠÃ¶ d\nĠÙĪ Ùĥ\nĠÐ¿Ð¾Ð·Ð² Ð¾Ð»Ñı\nĠ×ª ×ķ×Ľ\nÙħÙĨ ØªØ¬\në§ ī\nĠØ§ÙĦØ« ÙĦØ§Ø«\nÐ°ÑĨÐ¸ Ñİ\nÙĪØ± ÙĪ\nÑĭÐ² Ð°ÐµÑĤ\nØ®Øµ Øµ\nĠØ§ÙĦÙģ ÙĦ\nĠØ§ÙĦÙģÙĦ Ø³Ø·ÙĬÙĨ\nØ¥ Ø¬Ø±\nØ¥Ø¬Ø± Ø§Ø¡\nØ§ÙĨØª Ø®\nØ§ÙĨØªØ® Ø§Ø¨\nØ§Ø± ÙĬØ©\n×ķ Ö\nØ¢ ÙĨ\n×ŀ×¢ ×ķ×ª\nĠÐ¼ Ð°Ð»\nĠ×Ĳ ×Ĺ\nà¸Ĺ à¹īà¸Ńà¸ĩ\nze ÅĽ\nĠë§Į ëĵ¤\nØ±ÙĬ Ø¹\näºĭ ãĤĴ\nà¸ļà¸£à¸´ à¸«à¸²à¸£\n×ľ ×ŀ×Ļ×ĵ\nĠÐ¼ ÑĥÐ¶\nØª Ø±ÙĪ\nĠØ¨Ø§ÙĦ Ø¥\n×¤ ×Ļ×§\nØ² ÙħØ©\nĠÃ¶ÄŁ renc\nãĥ ¶\nØ§Ùħ Ø¹Ø©\n×§×ĳ ×ķ×¦\n×ŀ ×ł×ķ×ª\nØ±ÙĬ Ùħ\nĠÐ¾ ÐºÐ°Ð·\nãģłãģĳ ãģ©\nĠh Ä±z\nĠ×© ×Ĳ×ª\nãĤ¢ ãĥ¼\nĠmoÅ¼li wo\nìĦ ¼\nÙĪ Ø§Ø¨\nÐ¾Ð³ ÑĢÐ°ÑĦ\nĠØ¹Ø¨Ø¯ Ø§ÙĦ\nãĤĴ è¡Į\nØ¨ ÙĬÙĦ\nĠÄ° Ã§\nà¸¢ à¸²à¸¢\nĠÑĥ ÑĩÐ°ÑģÑĤ\nÑĦ ÐµÑģÑģ\nÑĦÐµÑģÑģ Ð¸Ð¾Ð½Ð°\náº ¤\nÙĨ ÙĬÙĨ\nØ¹Ø¯ ÙĦ\nà¸ªà¸£ à¸£\nØ¯ÙĬ ÙĦ\n×ĳ ×Ļ×§\nczy ÅĤ\nÑĢÐ¾Ð¼ Ðµ\nĠÐ¼ ÐµÐ´\nìĻ Ķ\nãĥ© ãĤ¤ãĥ³\nĠÑĤ ÐµÐ¿\nÐµÑĢ ÑĮ\ni ÄŁi\nÐ² ÐµÐ»Ð¸\nÑĢÐ¸ ÑģÑĤ\n×¡ ×ķ×¤\n×ŀ×ľ ×Ĺ\nĠØ§ÙĦØ¥ ÙĨ\nĠ×ľ×Ķ ×©\nè¶Ĭ ãģĹ\nĠÑĢ Ñĭ\n×ķ×Ĳ ×¨\nØ±Ùĩ Ø§Ø¨\n×¤ ×ķ×Ĳ×Ļ\nĠÐ³Ð¾Ñģ ÑĥÐ´\nĠÐ³Ð¾ÑģÑĥÐ´ Ð°ÑĢ\nĠÐ³Ð¾ÑģÑĥÐ´Ð°ÑĢ ÑģÑĤÐ²\nĠØ§ÙĦØ£Ùħ ÙĬØ±\nÙħ Ø¬\nà¹Ģà¸«à¸¡ à¸²à¸°\nÑĢ ÐµÐ²\nà¸Ĭà¸µ à¸ŀ\nãĥķ ãĥĪ\nÐ¸Ñĩ Ð½Ð¾\nĠØ§ÙĦÙħ Ø¤\nĠi ht\níħ ľ\nØ¯ ÙĨÙĬ\nØ± Øµ\nÐ»Ð° ÑģÑĤ\nà¹Ģà¸«à¸¥ à¹Īà¸²\nÄ±lÄ± r\nà¸£ à¸ĵà¹Į\n×ŀ×© ×Ļ×ļ\nĠd á»ĭ\nØ·Ùģ Ø§ÙĦ\n×ĺ ×ķ×Ł\nĠ×ĳ ×Ļ×ł\nãģ¾ ãģ£ãģŁ\nÐ»Ð¾Ð¶ ÐµÐ½Ð¸Ñı\nØªØŃ Ø±\nØ¨ Ø§ØŃ\nà¹Ģà¸ª à¸·à¹īà¸Ń\nãģĻ ãģĶ\nlt Ã¼r\nà¸ĩ à¸²à¸¡\nĠt Ã¼\nĠÐ¿ÑĢ Ð¸Ð¼\nĠÐ¿ÑĢÐ¸Ð¼ ÐµÐ½\nĠhay at\nëĥ Ĳ\nëĭ Į\n×ł×Ļ ×ķ\nÐ²ÐµÐ´ ÐµÐ½\nìħ ¨\nà¸Ī à¸±à¸¢\nà¸ģà¹Ī à¸Ń\nĠÐ² Ð¾Ð´\nÐ¾ÑģÑĤ Ð¾Ñı\nÐ½ Ð°ÑĤ\nà¹ģ à¸«à¸¥\nØ³Ùħ ÙĬ\nà¸Ķà¸³ à¹Ģà¸Ļ\nà¸Ķà¸³à¹Ģà¸Ļ à¸´à¸Ļ\nw Ã³d\nÃ¶ yle\nãĥĢ ãĤ¤\nÑĪÐ¸ Ð¹\nÐ¼ÐµÑī ÐµÐ½\nãģĹãģ¾ ãģĨ\nãĥī ãĥ©\nÙĪØ¶ ØŃ\nà¸Ńà¸Ļ à¸¸\nĠØ§ÙĦ Ø§Ø¬ØªÙħØ§Ø¹\nlaÅŁ ma\nà¸Ħ à¸Ńà¸Ļ\n×ŀ×¨ ×Ļ×Ŀ\nÙĨ Ø§ÙħØ¬\n×©×¨ ×ķ×ª\nØ§ÙĦ Ø£\nĠksi ÄħÅ¼\nĠÐ° Ð½\nÑĢÐ°Ð ¹\nØ§ÙĩØ± Ø©\n×ŀ×ĵ ×Ķ\nä¸Ģ ç·\nä¸Ģç· Ĵ\nä¸Ģç·Ĵ ãģ«\nÑĢÐ¸ÑĤ Ð¾ÑĢ\nd Ä±kl\nà¹ģ à¸ĸ\nà¹ģà¸Ĥ à¹Īà¸ĩ\nÐµÐºÑĤ Ð¾ÑĢ\n×ŀ×¡ ×¢\nÑĢÐ°Ðº ÑĤÐ¸\nu ÄŁu\n×ķ×ĳ ×ª\nà¸ªà¸¹ à¸ķà¸£\nĠÃ§alÄ±ÅŁ m\nĠÃ§alÄ±ÅŁm alar\nĠÐ° Ð½Ð°\nãĥĽ ãĥ¼ãĥł\nĠbÃ¶l Ã¼m\nĠØ¨ Øµ\nÐ¾Ð» Ð¾Ñģ\nĠìķĬ ëĬĶ\nà¹Ī à¸°\nÙĪ ØªØ±\nä¹ Ĺ\nØ³Øª Ø®Ø¯Ø§Ùħ\n×¤×Ļ ×Ļ×¡\n×¤×Ļ×Ļ×¡ ×ĳ\n×¤×Ļ×Ļ×¡×ĳ ×ķ×§\nĠÐº ÑĢÐ°Ñģ\nÐ»Ð¸ Ðº\nØ±ÙĬ ØŃ\n×ŀ×© ×ľ×Ķ\nà¹Ģà¸¢ à¸µà¹Īà¸¢\nà¹Ģà¸¢à¸µà¹Īà¸¢ à¸¡\nÐ² Ð¸Ñģ\nÐ¾Ð¼ Ð½\nÄŁ un\nãĥŃ ãĥ¼ãĥ³\nØ£ ØªÙĬ\nà¸ķà¸£ à¸µ\nçĶ³ ãģĹ\nØªÙħ Ø±\nìĹ ĪìĬµëĭĪëĭ¤\nĠÙĪ ØºÙĬØ±\nred ni\nĠØ§ÙĦØµ Ùģ\nĠÐ½Ð° ÑģÑĤÐ¾Ñı\nĠÐ½Ð°ÑģÑĤÐ¾Ñı Ñī\nà¸ķ à¸£à¸²\nĠÑĥÑģÐ» Ð¾Ð²\nĠÑĥÑģÐ»Ð¾Ð² Ð¸Ñı\nÑĨ ÐµÐ¿\n×Ķ ×Ĺ×ľ×ĺ\nØ· ÙĬØ¹\nĠB akan\nĠØ§ÙĦ Ø±ÙĪ\nÐ¸Ð»ÑĮ Ð½Ð¾\nĠÐ¼ ÐµÑĤ\nà¸Ķ à¸Ńà¸ģ\nãģĭãĤī ãģªãģĦ\nĠÐ¿Ð¾ ÑģÑĤÐ¾Ñı\nĠÐ¿Ð¾ÑģÑĤÐ¾Ñı Ð½\nĠÑĩ Ð°Ñģ\nÃ¼ c\nwr Ã³\nÐ± ÑĥÑĢ\nãĥĲ ãĥĥãĤ¯\nãĥ©ãĥ³ ãĥī\nĠÐ¾ Ð³ÑĢ\nà¸ªà¸± à¸į\nà¸ªà¸±à¸į à¸įà¸²\nà¸¡à¸± à¹Īà¸Ļ\nà¸Ħ à¸Ńà¸¡\nal Ä±k\nĠÐ½ ÐµÐ´\nÃ¼m Ã¼z\nĠÅĽ wie\nÃ© rio\n×Ļ×Ĳ ×Ķ\nØ¯Ùħ Ø§Øª\nÄ± rl\nĠÐ¾ÑĤ Ð·\nĠÐ¾ÑĤÐ· ÑĭÐ²\nä»ĺ ãģį\nĠkaÅ¼ de\nÐ¼Ð¸Ð½ Ð¸ÑģÑĤ\nãĤ° ãĥ«\në° ĸ\nÐµÐ· Ð½\nØ§ÙĦ Ùģ\nĠ×© ×§×ľ\nÙħ Ø¶\nãĥĿ ãĥ¼ãĥĪ\nÙħÙĨ Øª\nÙĤÙĬ Ø§Ùħ\nØ´ ÙĨ\n×Ļ×¨ ×ķ×¢\nãĤŃãĥ£ ãĥ³\nÐ´Ð¾ÑĢ Ð¾Ð²\n×ŀ ×Ļ×ª×Ļ\nÙĪÙĦ ÙĪØ¬\nÙĥ Ø§Ùģ\nĠÑĢÐ°Ð· Ð»Ð¸Ñĩ\nÐ¸ÑĤ ÐµÑĤ\nÐ½ Ð¾Ð»Ð¾Ð³\nà¸¥à¸ĩ à¸Ĺà¸¸à¸Ļ\nĠyak laÅŁ\nãĥ¬ ãĤ¤\nê²ł ëĭ¤\næ±Ĥ ãĤģ\nØ±ÙĪ Ùģ\nĠí Ĭ\nĠíĬ ¹\nãģ£ ãģıãĤĬ\nà¸Ħà¸§à¸²à¸¡ à¸Ħà¸´à¸Ķ\n×Ķ ×Ļ×¡×ĺ\nØ¥ ÙĤ\nãģ¦ ãģĦ\nà¹Ĥ à¸Ĭ\nĠBÃ¼ yÃ¼k\nĠÐ¤ ÐµÐ´ÐµÑĢ\nÑĨÐ¸ Ð½\nÑĢÐ¾Ð² Ð°\nĠØ§ÙĦ Ø§ÙĤØªØµØ§Ø¯\nĠch Ã¡\nà¸ĺ à¸²à¸Ļ\në¥ ł\nà¹Ħ à¸ķ\nÃŃ pio\nÙĭ Ø§\nĠÐ¾Ð± ÑıÐ·\nÙĩ Ø¬\nĠì¤ĳ ìļĶ\nãģ® ãģ§ãģ¯ãģªãģĦ\nØ¨Ø§Ø± Ø§Ø©\nãĤ¤ ãĥ«\nĠÐ½ Ð¾ÑĢÐ¼\ná»ī nh\nm Ã¶\nmÃ¶ glich\nÑĨÐ¸ Ð¿\nãĤ¢ ãĤ¯\n×Ķ ×Ļ\nÑĨÐ¸ Ð°Ð»ÑĮÐ½Ð¾\nĠÅĽ wi\nØª ÙĤ\nĠÑģÑĤÐ¾ Ð¸Ð¼\nØ¨ÙĬ Ø¹ÙĬ\nĠ×ľ ×©×ŀ\nÐ³ Ð»Ñı\nÐ³Ð»Ñı Ð´\nãģ¦ ãģıãĤĮ\nÄĻd zi\nà¸Ĥ à¸±\nà¸Ĥà¸± à¹īà¸Ļ\nØ· ÙĤ\nĠìĹ Ń\nãģ£ãģ¦ãģĹãģ¾ ãģĨ\nĠdeÄŁer l\nĠdeÄŁerl endir\nĠÃ¼ lk\nĠÐ¼Ð½ Ð¾Ð³\nà¹ ĭ\në¿ Ĳ\nĠÐ£ ÐºÑĢÐ°\nÄŁ ini\nĠÐ±ÐµÐ· Ð¾Ð¿\nĠÐ±ÐµÐ·Ð¾Ð¿ Ð°Ñģ\nà¸Ńà¸Ńà¸ģ à¹ģà¸ļà¸ļ\nØ§Ø ¸\nØŃØ¯ Ø§Ø«\nÐ» ÐµÑĢ\n×Ļ× ¥\n×Ļ×ł×ĺ×¨ ×ł×ĺ\nlar Ä±nÄ±z\nØŃÙĬ ØŃ\nÅ¼ eli\nà¸Ń à¸±à¸ĩ\nà¸Ńà¸±à¸ĩ à¸ģ\nà¸Ńà¸±à¸ĩà¸ģ à¸¤à¸©\nĠÐ¾ÑĤ Ð»Ð¸Ñĩ\nà¸± à¸ª\nëŀ į\nÐ¾Ð¶ Ð½Ð¾\nãĤ¹ ãĥĿ\nĠÑħ Ð¾Ñĩ\nĠÐº Ð°Ð¿\nÐµÑĩ ÐµÐ½\nØŃÙĦ Ø©\nÙĬØ§ Ùĩ\nÐ½Ð° Ð»\n×ķ×¦ ×¨×Ļ×Ŀ\nĠk ald\nåĥ į\nĠØ§ÙĦØ´ Ø®Øµ\nĠÐ· Ð½Ð°\nĠwz gl\nÅ¼ ycz\nê° Ŀ\nà¸ŀ à¸¥à¸±à¸ĩ\níģ ¼\nĠÃ¶ l\nĠb á»¥\nØ´ ÙĩØ±\nĠÐ· Ð°Ð¼\nĠÐ´ ÐµÐ²\n×Ļ×ĺ ×ª\nØªØ¹ÙĦ ÙĤ\nÙĪÙħ Ø©\nãĤĴ ä½ľ\nãģį ãģ¦\ní ĥĿ\nras Ä±nda\nãĤĴ æİ¢\nĠÙħ Ø¨Ø§Ø´Ø±\nØ±Ø§Ø¬ Ø¹\nĠÐ² Ð¾Ð·Ð´\nÙħØŃ Ø§\n×ķ×© ×¨\nĠÐ¸ÑģÑĤ Ð¾ÑĢ\nà¸¡ à¸±à¸ģ\nt Ä±ÄŁ\nØ« Ø§Ø±\nØªØ± ÙĨØª\nà¹ģà¸Ĥ à¹ĩ\nà¹ģà¸Ĥà¹ĩ à¸ĩ\nÐ¿ Ð¾Ñĩ\nĠ×ĳ ×Ĳ×ķ×ª\në¯ Ģ\nëĿ¼ ëıĦ\nà¸Ĭ à¸±à¸Ķ\nà¸ª à¸ķà¹Į\nãĥĭ ãĥĥãĤ¯\nÐ¸Ð´ ÐµÐ½ÑĤ\nĠÐ³ ÑĢÑĥÐ¿Ð¿\nØª Ø®\náº ł\nà¸¢ à¸·à¸Ļ\nà¸¢ à¸±à¸Ļ\nÃ³ ry\nT Ãľ\nãģĹ ãĤĥ\nĠÐ¿ÑĢÐ¾Ð² ÐµÐ´\nÐ»Ñı ÐµÑĤ\nÙħ Ø®\nà¸¢ à¸Ńà¸¡\n×Ľ×ł×¡ ×ª\nĠØ§ÙĦÙħ ÙĨØª\nĠol mad\n×¨×Ľ ×ĸ×Ļ\nĠÐ² ÑģÑĤÑĢ\nĠÐ¸Ñģ ÑģÐ»ÐµÐ´\nÑĤÐ²ÐµÑĢ Ð¶\nØ¨Ø¯ ÙĪ\nÐµÑĢ ÑĤ\nï» ·\n± ħ\nà¸ªà¸±à¸¡ à¸ŀà¸±à¸Ļà¸ĺà¹Į\nà¸´ à¹Īà¸Ļ\n×¦ ×Ļ×ĳ\nwiÄĻ t\nĠì° ¸\nĠz wiÄħz\nØ³Ø¨ ÙĪØ¹\nãĥĥ ãĤ°\nà¸Ľà¸¥ à¸Ńà¸Ķ\nà¸Ľà¸¥à¸Ńà¸Ķ à¸łà¸±à¸¢\nãĤĤ ãĤĬ\nÙĤØ¯ Ø³\nĠspr z\nĠsprz eda\nĠist edi\nĠk hu\nĠÐ´ ÐµÐ½\nĠko ÅĦ\nĠ×ĳ ×Ĺ×Ļ\nà¹Ģà¸Ĺ à¹īà¸²\n×ķ×¡ ×Ļ×£\nãĥĭ ãĥ¥ãĥ¼\nĠÐ¿ÑĢÐµÐ´ Ð¾ÑģÑĤ\nĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤ Ð°Ð²\nà¹Ĥ à¸Ł\nÃ© v\nĠØ§ÙĦØµ ØŃ\nØµØŃ Ø§Ø¨\nà¹Ģà¸Ī à¹ĩà¸ļ\nÐ²Ð» ÐµÐº\nà¸§à¸± à¸ķ\nà¸ĸ à¸¸\nãģĵãģ¨ãģĮãģ§ãģį ãģ¾ãģĻ\nÙĤÙĬ ÙĤÙĬ\n×ķ×Ĺ ×¨\nÑĭ ÑĪ\nĠÐ¾ÑĤ Ð½Ð¾\nĠÐ¾ÑĤÐ½Ð¾ ÑĪ\nÐ¾Ð± Ð¸Ð»ÑĮ\nÙģ ØŃ\nÄ± nt\nÄ±nt Ä±\nĠ×ľ ×ĳ×ĵ\ní İĺìĿ´ì§Ģ\nãĥĬ ãĥ«\nĠÙħ Ø³Ø§Ø¡\n×Ļ×ĺ ×ĳ\nÑĮ ÐµÑĢ\nëĦ ·\nÑĭ ÑĤÐ°\nĠÐ¾Ñĩ ÐµÑĢ\nà¸Ķ à¸·à¹Ī\nà¸Ķà¸·à¹Ī à¸¡\nĠN gh\nØª Ø¹Ø¨\nÙĦØ§ÙĤ Ø§Øª\n×ķ×ľ×ķ×Ĵ ×Ļ×Ķ\nĠìĿ´ ê²ĥ\nĠ×Ķ ×ĳ×¨\nìľ µ\nà¹Ģà¸Ħà¸¥ à¸·à¹Īà¸Ńà¸Ļ\nÙĩ Ø©\nà¸Īà¸³ à¹Ģà¸Ľà¹ĩà¸Ļ\nå¤ī ãģĪ\nwi ÅĽcie\nch od\nchod zÄħ\nÐ² ÑĢÐ¾\n×ŀ×Ĺ ×Ļ×¨\nĠy Ä±\nĠyÄ± ll\nì¡ Į\nà¹Ħ à¸«à¸§\nãģªãģı ãģª\nĠÐ·Ð°Ð² Ð¸Ñģ\nĠìĺĪ ìĪĺ\nÙģ Ø°\ná»§ ng\nà¸ŀà¸¸ à¸Ĺà¸ĺ\nÐ· Ð½\nlay an\nãĤ ¡\nà¸ģà¹ĩ à¸ķà¸²à¸¡\nĠsaÄŁ lam\nà¸£ à¸ĵ\nĠÑģ Ð¸ÑĤ\nĠÑģÐ¸ÑĤ Ñĥ\nĠØ§ÙĦØª ÙĨ\n×Ķ ×ĸ\nĠØ· ÙĪÙĬÙĦ\nta ÅĤ\nĠgÃ¶ rd\nå¤ī ãĤı\nëĥ ¥\nà¸Ħà¹Ī à¸Ńà¸¢\n×Ĳ ×ķ×ĺ\nëħ Ĳ\nãĥ©ãĥ³ ãĤ¹\nà¸§à¸± à¸Ĵ\nà¸§à¸±à¸Ĵ à¸Ļ\nĠol uÅŁ\n×¤×¢ ×ķ×ľ\nĠszczeg Ã³ÅĤ\nà¸Ħà¸² à¸ªà¸´\nà¸Ħà¸²à¸ªà¸´ à¹Ĥà¸Ļ\npow ied\nĠÑĤ ÐµÐ±\nà¸«à¸Ļ à¹Īà¸§à¸¢\nĠÐ¼ Ð¸Ð»\nØŃ Ùĥ\nà¸Ĺ à¸Ķ\nĠÐ¼Ð°ÑĤ ÐµÑĢÐ¸Ð°Ð»\nÅĤ ow\nà¹Ģà¸ģ à¸µà¸¢\nĠÑģÐ¾Ð² ÐµÑĢ\nãĤ ©\nà¸Ľ à¸£à¸´\nĠÐ¸ Ñİ\nÐ½Ð°Ñĩ ÐµÐ½\nÑĢÐµÐ½ Ð´\nmu ÅŁtur\nĠÐ¿ÑĢÐ¾Ð´ ÑĥÐº\nÐ· Ð´\nÑı ÑĤÐ¸\nÑıÑĤÐ¸ Ñı\nà¹Ģà¸¡ à¸µà¸¢\nØ±Ø§Øª ÙĬØ¬\nĠam acÄ±\n×© ×ķ×ľ\n×©×ķ×ľ ×Ĺ\nà¸ªà¸° à¸Ńà¸²\nà¸ªà¸°à¸Ńà¸² à¸Ķ\n×¤×Ĵ ×¢\nØ¹Ø¨ Ø©\nd Ä±n\níħ Ķ\nĠ×ŀ×© ×Ĺ×§\nĠfi yat\nĠÐ· Ð°Ñı\nĠÐ·Ð°Ñı Ð²\nà¹Ĥ à¸«à¸¥\nà¹Ĥà¸«à¸¥ à¸Ķ\nà¸ģà¸£à¸¸à¸ĩ à¹Ģà¸Ĺà¸ŀ\n×¦×Ļ ×Ļ×Ł\nìļ ±\nÙħ Ø¨\nÙħØ¨ Ø§Ø¯\nland Ä±r\nĠÐ² ÐµÑģÑĮ\nĠh Ã¼k\nĠÐĴ Ð¾Ð·\nÑĩÐ¸ÑĤ ÑĭÐ²Ð°\nà¸§ à¸¥\n×ķ×¦ ×¢\nà¸Ĥà¸ĵà¸° à¸Ĺà¸µà¹Ī\nĠaÅŁ aÄŁÄ±\n×ľ×Ĳ ×ķ×ŀ×Ļ\ntr zym\nÃ¤ÃŁ ig\nowo ÅĽci\nãģĿ ãĤĤ\nĠroz wiÄħz\nĠgÅĤ Ã³wn\nÐ¼ Ð¾Ð½ÑĤ\n×ŀ ×ķ×ŀ\nĠÑģÑĤ Ð°Ð½\nÙĦØ§ ÙĤØ©\np rowad\nprowad zi\nĠÑģÐ¾ÑģÑĤ Ð¾Ñı\n×Ļ×Ĳ ×ķ×ª\nr Ä±\ng Ä±\nãĥĳ ãĥĳ\nĠÐ½Ð° Ð»Ð¸Ñĩ\n×Ķ ×¦×¢\nĠ×ł ×Ķ\nà¸Ħ à¸±à¸ļ\nØ¹ Ø±Ø§Ø¶\nÐ¸ Ð¶\nÙĩ Ø§Ø¦ÙĬ\nãĤī ãģı\nÐ¾Ð¶ ÐµÑĤ\nĠÐ¾Ð± Ð¾ÑĢ\nĠÐ¾Ð±Ð¾ÑĢ ÑĥÐ´\nØ£ Ø³ÙĦ\nà¹ĩ à¸Ķ\nÑĢÑĥ ÑĤ\nØ¯ÙĬ ÙħÙĤ\nØ¯ÙĬÙħÙĤ Ø±Ø§\nĠjest e\n×ķ×ķ ×Ļ×¨\n×ĳ×ĵ ×Ļ×§\nÐ´ÐµÑĢÐ¶ Ð¸Ð²Ð°\nãģĬ ãģı\newn ÄĻtr\newnÄĻtr zn\nà¸ŀ à¸¤\nĠ×Ĳ ×ķ×Ķ\n×ª×Ĺ ×ķ×©\nĠz ob\nÐ´ ÑĥÐ¼\nĠÑģ Ñĭ\nÙĬØ± Ø§\nĠwiÄĻ ks\nà¹ģà¸ķà¸ģ à¸ķà¹Īà¸²à¸ĩ\nlar aras\nlararas Ä±\níĺ Ģ\nëī ´\n×ķ×Ĵ ×ľ\nĠÐ¾ÑĤ Ð¼ÐµÑĤ\nĠÑĢ Ð°Ð½\nØª ÙĥÙĦ\nÐ¸ÑĤÐµÐ»ÑĮ Ð½\nà¸Ľà¸£à¸° à¸§à¸±\nà¸Ľà¸£à¸°à¸§à¸± à¸ķà¸´\nìŀ ĸ\nÐ¼Ð¾Ð¶ Ð½Ð¾\npie czeÅĦ\npieczeÅĦ st\nëª »\nìĬ ¨\n×ŀ×¡ ×ŀ\ná» ¦\nà¸¨ à¸´\nà¸¨à¸´ à¸¥\nà¸¨à¸´à¸¥ à¸Ľ\nĠÅļ w\nãĥĥ ãĤ·ãĥ§ãĥ³\nunit Ãł\nĠmiesz ka\nĠmieszka ÅĦ\npr zed\nprzed si\nprzedsi ÄĻb\nprzedsiÄĻb ior\nà¸Ľà¸£à¸° à¸ªà¸´à¸Ĺà¸ĺà¸´\nà¸Ľà¸£à¸°à¸ªà¸´à¸Ĺà¸ĺà¸´ à¸łà¸²à¸ŀ\nà¸¢ à¹Ī\nìķ Ļ\nà¸£à¸§ à¸Ķ\nà¸£à¸§à¸Ķ à¹Ģà¸£à¹ĩà¸§\nå½ĵ ãģŁãĤĬ\nÃ¤l le\nÑĥ ÐµÑĤÑģÑı\nÃ£ n\nëł µ\nth Ã¨\nãĤĴ åĪ©çĶ¨\nì µľ\níĵ ¨\nà¸Ĺ à¸±à¸ļ\nà¸² à¸Ħà¸¡\nãģ ĩ\nëĤ Į\nà¹Ģà¸Ľà¸¥ à¹Īà¸²\nâ ¦\në ¾\nê Ģ\nê ĩ\nâ ¡\nðŁ Ł\nã Ĳ\nâ º\ná Ń\ná Ļ\ná ĵ\ná ²\nðĵ ı\ná ¬\nâ ¯\nä ¨\nê Ŀ\nê «\nð ĳ\nðĵ ĥ\nðĿ ħ\n< unk\n<unk >\n<s >\n</ s\n</s >\nĠØ¹ ÙĦÙī\nĠm á»Ļt\nĠv á»Ľi\nĠng Æ°á»Ŀi\nĠØ¥ ÙĦÙī\nĠnh á»¯ng\nĠth á»ĥ\nĠ×Ĳ ×ķ\nĠ×¢ ×Ŀ\nØ§ Ùĭ\nĠ à¹ģà¸¥à¸°\nĠÙĦ Ø§\nĠnh Æ°\nĠØ§ÙĦØª ÙĬ\nĠ×Ķ ×ķ×Ĳ\nĠÄĳ áº¿n\nĠØ£ ÙĪ\nĠv á»ģ\nĠlÃł m\nĠs áº½\nĠc Å©ng\nĠ á»Ł\nĠÄĳ Ã³\nĠnhi á»ģu\nĠt áº¡i\nĠtr Ãªn\nĠ×Ĵ ×Ŀ\nĠnh Ãł\nĠ×Ľ ×Ļ\nĠs á»±\nĠÄĳ áº§u\nĠb á»ĭ\nĠÙĩ Ø°Ø§\nĠnh áº¥t\nĠph áº£i\nĠhi á»ĩn\nĠdá»¥ ng\nĠÄĳ á»Ļng\nĠØ§ÙĦÙĦ Ùĩ\nĠØ Į\nĠÙĥ ÙĦ\nĠvi á»ĩc\nĠn Äĥm\nĠth Ã¬\nĠh á»įc\nĠÙĪ Øª\nt Ã©\nĠØ§ ÙĨ\nĠt Ã´i\nĠ×Ĳ ×ł×Ļ\nĠ×ľ ×Ļ\nĠ×ŀ ×ķ\nĠng Ãły\nĠn Æ°á»Ľc\nĠ×Ķ ×Ļ×Ĳ\nĠ×Ĳ ×Ļ\nĠh Æ¡n\nĠÙĩ Ø°Ùĩ\nĠÙĪ ÙĬ\nĠØ§ÙĦ Ø°ÙĬ\nĠ×ķ ×ŀ\nĠgi Ã¡\nĠnh Ã¢n\nĠch ÃŃnh\nĠm Ã¬nh\nĠÐĿ Ð°\nĠth áº¿\nĠ×Ļ ×ķ×ª×¨\nĠ×Ĳ ×Ŀ\nĠn Ãªn\nĠh á»£\nĠhá»£ p\nĠc Ã²n\nĠÙĩ ÙĪ\nĠc Æ¡\nĠr áº¥t\nĠVi á»ĩt\nĠØ¨ Ø¹Ø¯\nĠ×© ×Ļ\nĠth á»Ŀi\nĠc Ã¡ch\nĠÄĳ á»ĵng\nĠÐ½ Ð¾\nĠtr Æ°á»Ŀng\nØ Ł\nĠÄĳ á»ĭnh\nĠÄĳi á»ģu\n×Ļ ×Ļ×Ŀ\nĠth á»±c\nn Ä±n\nĠh Ã¬nh\nĠn Ã³i\nĠc Ã¹ng\nĠ×Ķ ×Ķ\nĠØ¥ ÙĨ\nĠ×Ĳ ×ĳ×ľ\nĠnh Æ°ng\nĠbi áº¿t\nĠÐ¶ Ðµ\nĠch Ãºng\nĠÄĳ ang\nĠØ° ÙĦÙĥ\nĠl Ãªn\nĠkh Ã¡ch\nĠn Ãło\nĠs á»Ń\nĠkh Ã¡c\nĠë° ı\nĠl Ã½\n×Ļ ×Ļ\nĠÄĳ Ã¢y\nĠ×ľ ×ŀ\nĠc áº§n\nĠtr Ã¬nh\nĠph Ã¡t\nãģ« ãĤĤ\nÐ¿ Ð¾\nĠn Äĥng\nĠb á»Ļ\nĠv á»¥\nĠÄĳ á»Ļ\nÑĩ Ðµ\nĠnh áºŃn\nĠtr Æ°á»Ľc\nĠ×¢ ×ĵ\nĠh Ãłnh\nĠØ® ÙĦØ§ÙĦ\nĠl Æ°á»£ng\nĠc áº¥p\nĠtá» ±\nĠv Ã¬\nĠt Æ°\nĠch áº¥t\nĠ×Ľ ×ŀ×ķ\nĠg Ã¬\nĠ×© ×ł\nĠt áº¿\n×ª ×ķ\nĠnghi á»ĩp\nĠm áº·t\nĠÙĥ ÙħØ§\nĠ×ĳ ×Ļ×Ł\nĠ×¨ ×§\nĠth áº¥y\nĠmÃ¡ y\nĠÙģ Ùī\nĠd Ã¢n\nĠ×Ĳ ×Ĺ×ĵ\nĠt Ã¢m\nĠ×Ľ ×ļ\nĠ×ľ ×ķ\nÐ² Ð¾\nĠt Ã¡c\nĠto Ãłn\nĠÙĪ Ùħ\nĠk áº¿t\nĠ à¸«à¸£à¸·à¸Ń\nĠÙĪØ§ÙĦ Ùħ\nĠÄĳi á»ĥm\nĠ×ĸ ×ķ\nĠ×ĳ ×ķ\n×Ľ ×ķ×ª\nĠh á»Ļi\nĠb áº±ng\nØª ÙĩØ§\nĠ×Ľ ×ĵ×Ļ\nĠ×Ķ ×Ŀ\nĠxu áº¥t\nĠÙĤ Ø¯\nĠb áº£o\nĠt á»ĳt\nĠt Ã¬nh\nĠÙĩ ÙĬ\nĠÄĳ á»ĳi\nĠthi áº¿t\nĠhi á»ĩu\nĠti áº¿p\nĠt áº¡o\n×ª ×Ķ\nĠch á»§\no ÅĽÄĩ\nĠgi Ãº\nĠgiÃº p\nĠÃ ½\nĠqu áº£\nĠlo áº¡i\nĠc Ã´\nĠÃ ´\nĠÃ´ ng\nĠ×Ķ ×ķ\nĠØ§ÙĦÙĬ ÙĪÙħ\nĠtÃŃ nh\nÐ³ Ð°\nĠph Ã²ng\nĠ Äĥn\nĠØ¹ Ø§Ùħ\nĠv á»ĭ\nlar Ä±nÄ±\nr ÃŃa\nĠt á»Ľi\nĠÄĳ Æ°á»Ŀng\nĠgi á»Ľi\nĠb áº£n\nĠc áº§u\nĠnhi Ãªn\nĠb á»ĩnh\nĠth Æ°á»Ŀng\nĠ×Ĳ ×Ļ×Ł\nĠÄĳ á»ģ\nĠh á»ĩ\nĠ×Ļ×© ×¨×Ĳ×ľ\nĠqu Ã¡\nĠÐĹ Ð°\nãģ® ãģ§ãģĻãģĮ\nĠÐŁ ÑĢÐ¸\nĠph áº§n\nĠÙĪ ÙĦØ§\nĠlá»Ľ n\nĠtr á»ĭ\nĠcáº£ m\nĠÐ¼ Ð¾\nĠd Ã¹ng\nĠØ§ÙĦ Ùī\nĠØ¹ÙĦÙĬ Ùĩ\nĠìŀĪ ìĬµëĭĪëĭ¤\nÙĬ ÙĤ\nĠÙĤ Ø¨ÙĦ\nĠho áº·c\nĠØŃ ÙĬØ«\nĠ à¸Ĺà¸µà¹Ī\nĠØº ÙĬØ±\nĠÄĳ áº¡i\nĠsá»ĳ ng\nÐ½Ñĭ Ð¼Ð¸\nĠth á»©c\nĠ×¤ ×Ļ\nĠÄĳi á»ĩn\nãģª ãģĭãģ£ãģŁ\nĠgi áº£i\nĠv áº«n\nĠÐ¸ Ñħ\nĠÃ¶ nce\nĠv áºŃy\nĠmu á»ĳn\nĠ áº£nh\nà¹ĥà¸Ļ à¸ģà¸²à¸£\nĠQu á»ĳc\nĠk áº¿\n×ł ×Ĳ\nĠ×¡ ×Ļ\nĠy Ãªu\nãģ® ãģĭ\nĠÄĳ áº¹\nĠÄĳáº¹ p\nĠch á»©c\nĠy Ä±l\nĠTÃ¼r kiye\nd Ã©\nĠÙĤ Ø§ÙĦ\nĠd á»ĭch\nĠolduÄŁ u\nĠch á»įn\nĠØª Ùħ\nà¸«à¸Ļ à¸¶à¹Īà¸ĩ\nãģķãĤĮ ãģŁ\nĠph Ã¡p\nìĽ Ķ\nĠti á»ģn\nãģĹ ãģ¾ãģĹãģŁ\nĠ×© ×ľ×Ĳ\nÙĦ Ø©\nĠ×ľ×¤ ×ł×Ļ\nĠ×ĳ ×Ļ×ª\nĠH Ãł\nĠØŃ Øª\nĠØŃØª Ùī\nĠ×¢ ×ķ×ĵ\nĠn Ã³\nĠth Ã¡ng\nà¹Ģà¸¥à¸·à¸Ń à¸ģ\n×¨ ×Ķ\nĠt Äĥng\nĠcÃ¡ i\nĠtri á»ĥn\nĠ×Ĳ×ķ×ª ×ķ\nìłģ ìĿ¸\nĠC Ã´ng\nĠ×ľ×Ķ ×Ļ×ķ×ª\nĠÐ³ Ð¾Ð´Ð°\nÐ¸ Ñİ\nĠØ¨ Ø¹Ø¶\nĠ à¸ģà¸²à¸£\nèī¯ ãģĦ\nÙĪ Øª\nĠli Ãªn\nĠÐĿ Ð¾\nĠÐĿ Ðµ\nçļĦ ãģª\nĠÙħ Øª\nĠÑĤÐ°Ðº Ð¶Ðµ\nĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÐµ\nĠ×Ļ ×ĵ×Ļ\nĠtr á»įng\nãĤµ ãĤ¤ãĥĪ\nìłģ ìľ¼ë¡ľ\nĠt áºŃp\nĠ×© ×ľ×Ļ\níķĺ ê²Į\nĠt Ãłi\nĠÐ ¯\nĠr á»ĵi\nØ§ Ùĥ\nĠth Æ°Æ¡ng\nĠ×Ķ ×ĸ×Ķ\nĠÙĪ ÙħÙĨ\nà¸Ĺà¸µà¹Ī à¸¡à¸µ\nĠcu á»Ļc\nĠbÃ¼ yÃ¼k\nãģ¨ ãģĭ\nĠ×ĳ ×Ļ×ķ×ª×¨\nĠl áº§n\nĠgÃ¶ re\nĠtr á»Ł\nĠ×ĺ ×ķ×ĳ\nÑĤÑĮ ÑģÑı\nĠth á»ĳng\nĠ×Ľ ×©\nĠti Ãªu\nĠ×ŀ×Ĳ ×ķ×ĵ\nØ Ľ\nk Äħ\nĠ à¹ĥà¸Ļ\nĠv áº¥n\nĠ×© ×ľ×ķ\nĠÄĳ á»ģu\nÙģ Øª\nĠê²ĥ ìĿ´\nĠh Ã³a\nĠØ§ÙĦØ¹ Ø§Ùħ\nĠÙĬ ÙĪÙħ\nÐº Ð¾Ð¹\nĠbi á»ĩt\nÑģÑĤ Ð¾\nĠ×Ķ ×Ļ×ķ\nà¸Ĺà¸µà¹Ī à¸Īà¸°\nĠ×ĵ ×Ļ\nĠ×Ĳ ×ļ\nĠÃ¡ n\nØµ ÙĪØ±\nĠtr ÃŃ\nĠÐŁÑĢ Ð¾\nĠl á»±c\nãģĹãģ¦ ãģĦãģ¾ãģĻ\nĠb Ãłi\nĠ×ĸ ×Ĳ×ª\nĠb Ã¡o\nà¸ļ à¸Ļ\nĠëĮĢ íķľ\nĠti áº¿\nĠtiáº¿ ng\nĠb Ãªn\nãģķãĤĮ ãĤĭ\ns iÃ³n\nĠt Ã¬m\n×¢ ×ķ\nm Ã©\nÐ½Ð¸ Ñı\nãģ» ãģ©\nĠà¹Ģà¸ŀ à¸£à¸²à¸°\nØ¨ Ø©\nĠë¶ Ħ\nĠ×Ĳ ×ĸ\nà¸Ĺ à¹Īà¸²à¸Ļ\n×ª ×Ŀ\nĠth Ãªm\nĠho áº¡t\ny Ä±\n×ĸ ×ķ\nĠgi á»Ŀ\nĠb Ã¡n\nà¸Ĥ à¸²à¸¢\nÑĩ Ð°\nĠ à¹Ĩ\nĠØ§ÙĦÙħ Øª\nĠÐ¾Ñĩ ÐµÐ½ÑĮ\nĠb áº¥t\nĠtr áº»\nÑĤ ÑĢ\nĠØ£ ÙĨÙĩ\nĠØ« Ùħ\nĠ×Ľ ×ŀ×Ķ\nĠkh Ã³\nĠr áº±ng\nĠÙĪ ÙģÙĬ\nÐ½Ð¸ Ð¹\nĠho Ãłn\nt Ã³\nĠ×Ĳ ×©×¨\nĠìĥĿ ê°ģ\nÑģ Ð°\nĠ×Ľ ×ĳ×¨\nĠÑįÑĤ Ð¾Ð¼\nlar Ä±nÄ±n\nĠch Æ°a\nÐ· Ð¸\nĠd áº«n\nĠÐļ Ð°Ðº\nØ¬ ÙĪ\nĠÐ±Ñĭ Ð»Ð¾\nĠÙĬ Øª\nn Ä±\nÅĤ am\nĠÙĪÙĩ ÙĪ\n×ĳ ×ķ\nÐ¿ Ð¸\n×¨ ×ª\nĠqu á»ĳc\nÐ¶ Ð´\nĠÄĳ Æ¡n\nÙĥØª Ø¨\nĠm áº¯t\nà¸£à¸° à¸ļ\nà¸£à¸°à¸ļ à¸ļ\nĠÙĥ Ø§ÙĨØª\nĠth Ã¢n\nà¸ªà¸´à¸Ļ à¸Ħà¹īà¸²\n×Ĵ ×Ļ\nĠph Æ°Æ¡ng\nà¹Ħà¸¡à¹Ī à¹Ħà¸Ķà¹ī\nĠìĦ ±\nĠC Ã¡c\nĠ×Ķ×ŀ ×ķ\nĠÑĤ ÐµÐ¼\nĠ×ĵ ×ķ\nà¸Ńà¸° à¹Ħà¸£\nĠv Äĥn\nãģª ãģ®ãģ§\nĠN á»Ļi\nĠ×¢ ×ķ\nãĤīãĤĮ ãĤĭ\nĠs Ã¡ng\nĠgÃ¶ ster\nãģĵãģ¨ ãĤĴ\nĠtaraf Ä±ndan\nĠÐ¼ Ð°\nĠÐ¿Ð¾ÑģÐ» Ðµ\nĠ×ł ×Ļ×ª\nĠ×ł×Ļ×ª ×Ł\nĠÐ» ÐµÑĤ\nĠ×ľ ×ł×ķ\nÑģ Ñģ\nĠ×Ļ ×ķ\nÐ¿ Ðµ\nĠÙĪ ÙĦÙĥ\nĠÙĪÙĦÙĥ ÙĨ\nĠngo Ãłi\nĠÄĳ á»ĭa\nr zÄħd\ndz iaÅĤ\nĠÙħ Ø±\nÐ¸ÑĤÑĮ ÑģÑı\nĠ×Ĳ×Ĺ×¨ ×Ļ\nĠ×ľ ×Ľ×ľ\nà¸Ĥ à¹īà¸Ńà¸¡\nà¸Ĥà¹īà¸Ńà¸¡ à¸¹à¸¥\nĠÐ± Ð¾Ð»\nĠÐ±Ð¾Ð» ÐµÐµ\nØ¬Ùħ Ø¹\nÐ» ÐµÑĤ\nĠl á»ĭch\nĠÙħ Ø«ÙĦ\nĠê·¸ë¦¬ ê³ł\nĠth á»©\nĠdeÄŁ il\nÙĪ ØŃ\nĠ×©×ľ ×ļ\nĠÙħ ØŃÙħØ¯\nĠn áº¿u\nĠÄĳ á»ķi\nĠv á»«a\nĠm á»įi\nĠÐ¾ Ð½Ð¸\nĠl Ãºc\nĠÙĬ ÙĥÙĪÙĨ\nì§ Ī\nĠ×©×ľ ×ł×ķ\nĠÐĶ Ð¾\nĠ×© ×ł×Ļ\nà¸¥ à¸´\n×Ĳ ×¤×©×¨\nĠs á»©c\nê¶ Į\nĠ á»©ng\nà¹Ħà¸¡à¹Ī à¸¡à¸µ\nØ·ÙĦ Ø¨\nĠÑĩ ÐµÐ¼\nĠch uyÃªn\nĠth ÃŃch\nĠ×ķ ×Ļ\níķ ©\nĠÙħ ØµØ±\nÐ´ Ð¾\nĠÄĳ áº¥t\nĠch áº¿\nà¸Ĭ à¸·à¹Īà¸Ń\nĠìĭ ł\nĠØ¥ Ø°Ø§\nĠØ± Ø¦ÙĬØ³\nĠ×© ×Ļ×©\nĠgiáº£ m\nÑģ ÐºÐ°\nlar Ä±nda\nĠs á»Ł\nĠtÃŃ ch\nĠÙĦ ÙĥÙĨ\nĠØ¨ Ùħ\n×¢ ×ķ×ĳ\n×¢×ķ×ĳ ×ĵ\nÅĤÄħ cz\nlarÄ± na\nĠ×© ×Ŀ\nĠÙĦ Øª\nĠ×©×Ķ ×ķ×Ĳ\nt Ã³w\nĠëĭ¤ ë¥¸\nĠØ£ ÙĥØ«Ø±\nãģ® ãģ§ãģĻ\n×Ľ ×Ļ×Ŀ\nĠolduÄŁ unu\nãģĭ ãģª\nãĤĤ ãģĨ\nÙĬ ØŃ\nĠnh Ã¬n\nĠngh á»ĩ\nãģ«ãģª ãģ£ãģ¦\nÐ¿ Ð°\nĠquy áº¿t\nÙĦ ÙĤ\nt Ã¡\nĠlu Ã´n\nĠÄĳ áº·c\nĠ×Ĳ ×¨\nĠtu á»ķi\ns Ã£o\nìĻ ¸\nØ± Ø¯\nĠØ¨Ùĩ Ø§\nĠ×Ķ×Ļ ×ķ×Ŀ\n×ķ ×ķ×Ļ\nãģ§ãģĻ ãģŃ\nĠÑĤ Ð¾Ð³Ð¾\nĠth á»§\nãģĹãģŁ ãģĦ\nØ± ÙĤ\nĠb áº¯t\nÐ³ Ñĥ\nĠtá» Ń\nÑĪ Ð°\nĠ à¸Ľà¸µ\nĠ×Ķ×Ĳ ×Ŀ\níı ¬\nÅ¼ a\nĠ×Ĳ×ª ×Ķ\nĠn á»Ļi\nĠph ÃŃ\nĠÅŁek ilde\nĠl á»Ŀi\nd Ä±ÄŁÄ±\nĠ×Ľ×Ĳ ×Ł\nĠt Ã¼m\nĠm áº¡nh\nĠM á»¹\nãģĿ ãĤĵãģª\nĠnh á»ı\nãģª ãģĮãĤī\nĠb Ã¬nh\nÄ± p\nà¸ŀ à¸²\nĠÄĳ Ã¡nh\nĠÙĪ ÙĦ\n×¨ ×ķ×ª\nĠ×Ĳ ×Ļ×ļ\nĠch uyá»ĥn\nÙĥ Ø§\nãĤĮ ãĤĭ\nà¹ģà¸¡ à¹Ī\nãĤĪ ãģı\nĠÙĪ ÙĤØ¯\níĸ Īëĭ¤\nĠn Æ¡i\nãģ«ãĤĪ ãģ£ãģ¦\nĠvi áº¿t\nĠà¹Ģà¸ŀ à¸·à¹Īà¸Ń\nëĲĺ ëĬĶ\nØ§Ø¯ ÙĬ\nĠÙģ Ø¥ÙĨ\nì¦ Ŀ\nĠÄĳ áº·t\nĠh Æ°á»Ľng\nĠx Ã£\nĠÃ¶nem li\nãģł ãģ¨\nĠm áº¹\nĠ×ĳ ×Ļ\nĠ×ĵ ×ĳ×¨\nĠv áºŃt\nĠÄĳ áº¡o\nĠdá»± ng\nĠÑĤ Ð¾Ð¼\nĠÙģÙĬ ÙĩØ§\nĠØ¬ ÙħÙĬØ¹\nĠthu áºŃt\nst ÄĻp\nĠti áº¿t\nØ´ ÙĬ\nĠÐµ ÑīÐµ\nãģĻãĤĭ ãģ¨\nĠmÃł u\nĠÑįÑĤ Ð¾Ð³Ð¾\nĠv Ã´\nĠÐŃ ÑĤÐ¾\nĠth áºŃt\nĠn á»¯a\nĠbi áº¿n\nĠn á»¯\nĠ×ľ ×Ľ×Ŀ\n×Ļ ×Ļ×Ł\nĠØ³ Øª\nĠÐŀ ÑĤ\nĠph á»¥\nê¹Į ì§Ģ\nĠ×ľ ×ļ\nĠk á»³\nà¹ĥ à¸Ħà¸£\nĠg Ã¢y\nĠÙĦ ÙĦÙħ\nĠtá»¥ c\nØª ÙĬÙĨ\nĠtr á»£\nĠ×ľ ×¤×Ļ\nĠb á»ĳ\nĠÐļ Ð°\nĠÄĳ Ã¬nh\now Äħ\ns Ä±nda\nĠkhi áº¿n\ns Ä±z\nĠÐº Ð¾Ð³Ð´Ð°\n×¡ ×ľ\nĠÐ±Ñĭ Ð»\nà¸Ļ à¹īà¸Ńà¸¢\nÐ¾Ð±ÑĢÐ°Ð ·\nĠê²ĥ ìĿ´ëĭ¤\nëĵ¤ ìĿĢ\nãģ¸ ãģ®\nĠà¹Ģà¸¡ à¸·à¹Īà¸Ń\nĠph á»¥c\nĠ×Ĺ ×ľ×§\nĠh áº¿t\nĠÄĳ a\nà¹Ģà¸Ķà¹ĩ à¸ģ\níĺ ķ\nl ÃŃ\nê¸ ī\nĠØ¹ Ø¯Ø¯\nĠÄĳ á»ĵ\nĠg áº§n\nĠ×Ļ ×ķ×Ŀ\nĠs Ä©\nÑĢ ÑıÐ´\nĠquy á»ģn\nĠ×Ĳ ×ľ×Ĳ\nÙĩ ÙħØ§\n×ł ×Ļ×Ķ\n×ľ ×ķ×ª\nĠ×Ķ×¨ ×ĳ×Ķ\nĠti Ãªn\nĠal Ä±n\nĠd á»ħ\näºº ãģĮ\nÐ½Ð¾ Ñģ\nÐ» ÑģÑı\nĠÄĳ Æ°a\nà¸ª à¸²à¸§\nÐ¸ÑĢÐ¾Ð² Ð°Ð½\nĠ×ŀ×¡ ×¤×¨\n×Ĵ ×Ł\nĠki áº¿n\nĠÐ ¨\np Ã©\nÐ± Ñĥ\nÐ¾Ð² Ð¾Ð¹\nÐ± Ð°\nĠØ¥ ÙĦØ§\n×Ĳ ×ľ×Ļ\nĠx Ã¢y\nĠb á»Łi\nĠ×© ×ķ\näºº ãģ®\n×§ ×Ļ×Ŀ\nà¹Ģà¸Ķ à¸·à¸Ńà¸Ļ\nĠkh Ã¡\nĠ×ķ ×ľ×Ķ\n×ĵ ×ķ×ª\nĠ×¢ ×ĳ×ķ×¨\nĠØ¨Ø´ ÙĥÙĦ\nĠÙĩÙĨØ§ Ùĥ\nÑĤ ÑĢÐ°\nĠ íķĺëĬĶ\nà¸£ à¸Ńà¸ļ\nowa ÅĤ\nh Ã©\nĠdi á»ħn\nĠ×Ķ ×Ľ×ľ\nĠØ£ Ø³\nĠch uyá»ĩn\nà¸£à¸° à¸Ķà¸±à¸ļ\nĠNh á»¯ng\nĠ×Ĳ ×Ĺ×ª\nĠØŃ ÙĪÙĦ\nÐ» Ð¾Ð²\n×ł ×¨\nĠ×ķ ×ł\nĠch Æ¡i\nĠiÃ§ inde\nÑģÑĤÐ² Ñĥ\nĠph á»ĳ\nĠÑģ Ñĥ\nç§ģ ãģ¯\nĠch á»©ng\nĠv á»±c\nà¹ģ à¸Ń\nĠl áºŃp\nĠtá»« ng\nå°ĳ ãģĹ\nĠNg uy\nĠNguy á»ħn\nĠÙģÙĬ Ùĩ\nĠÐ± Ð°\n×Ļ ×Ļ×ª\nĠ×ľ×¢ ×©×ķ×ª\nĠ×ŀ ×Ľ\nĠnghi á»ĩm\nĠÐ¼ Ð½Ð¾Ð³Ð¾\nĠÐµ Ðµ\nëĲĺ ìĸ´\nĠl á»£i\nĠ×ľ ×ľ×Ĳ\nĠ×Ľ ×Ł\nĠch ÃŃ\nãģ§ ãģ®\n×Ĺ ×ķ\n×© ×ķ×Ŀ\nĠ×ŀ ×¨\nĠÐĶ Ð»Ñı\nÅ ģ\nĠ×Ľ×Ĳ ×©×¨\nĠM á»Ļt\nĠÙĪØ§ÙĦ Øª\nĠìĿ´ ëŁ°\nÅŁ a\nĠchi áº¿n\nĠaras Ä±nda\nĠ×ĳ ×Ĳ×ª×¨\nãģķãĤĮ ãģ¦ãģĦãĤĭ\nØ´ ÙĥÙĦ\nĠt Æ°á»£ng\nĠØª Øª\nĠC Ã³\nĠb á»ı\nĠtá»ī nh\nĠkh ÃŃ\nĠÐ¿ÑĢ Ð¾ÑģÑĤ\nĠÐ¿ÑĢÐ¾ÑģÑĤ Ð¾\nĠÙĪ ÙĤØ§ÙĦ\nĠgi Ã¡o\nĠN áº¿u\n×Ĳ ×ŀ×¨\n×¢×ł×Ļ ×Ļ×Ł\níİ ¸\nÙĩØ¯ Ùģ\nĠB á»Ļ\nĠb Ãłn\nĠng uyÃªn\nĠgÃ¼ zel\nà¸ª à¸²à¸¢\nì² ľ\n×ŀ ×ķ×¨\nĠph Ã¢n\n×¡ ×¤×§\n×§ ×ĳ×ľ\nĠØ§ÙĦÙħ ØªØŃ\nĠØ§ÙĦÙħØªØŃ Ø¯Ø©\nØ§Ø¦ Ø¯\nĠ×Ĳ ×ŀ×¨\nĠki ÅŁi\nì¤ Ģ\nĠtr uyá»ģn\nĠÙĦ ÙĩØ§\nĠÐľ Ð°\nà¸ļà¸£à¸´ à¸©\nà¸ļà¸£à¸´à¸© à¸±\nà¸ļà¸£à¸´à¸©à¸± à¸Ĺ\nĠ×© ×ł×Ļ×Ŀ\nĠÐ¼ÐµÐ½ Ñı\nÅŁ e\nĠdi á»ĩn\nĠ×Ĳ×ł ×Ĺ×ł×ķ\nk Ã¼\nĠc á»ķ\nĠm á»Ĺi\nw Ã¤\nÙħ ÙĬ\nĠhi á»ĥu\nëĭ ¬\nĠ×Ķ ×Ĺ×ľ\nĠt Ãªn\nĠki á»ĩn\nÙĨ ÙĤÙĦ\nĠv á»ĩ\n×ĵ ×ª\nĠÐłÐ¾ÑģÑģ Ð¸Ð¸\nÐ» Ñĥ\nĠØ§ÙĦØ¹ Ø±Ø¨ÙĬØ©\nĠØ· Ø±ÙĬÙĤ\nĠ×Ķ×ĳ ×Ļ×ª\nÑģ ÐµÑĢ\nĠÐ¼ Ð½Ðµ\nÃ¤ u\nĠtri á»ĩu\nĠÄĳ á»§\nĠ×¨ ×ĳ\nØª ÙĩÙħ\nà¸ĭ à¸µ\nĠì§Ģ ê¸Ī\nli ÅĽmy\nØ¯ Ø¹Ùħ\nãģł ãĤįãģĨ\nÑģÐºÐ¸ Ðµ\nĠh á»ıi\nĠ×§ ×ķ\nÑĢÑĥ Ñģ\nÙĨ Ø¸Ø±\nãģ® ãĤĤ\nĠ×Ķ ×Ľ×Ļ\nĠìĽ Ĳ\nÙĪ Ùĩ\nĠÙĪ Ùİ\nĠB áº¡n\nÐ¿ Ð»Ð°ÑĤ\nĠ×ŀ ×ŀ×©\nÐ»Ñİ Ð±\nĠÐ½ÑĥÐ¶ Ð½Ð¾\nĠth Æ°\nãģ µ\nãģı ãĤīãģĦ\nØ± Ø´\n×¨ ×ķ×Ĺ\nĠÙĬ ØªÙħ\nĠ×¦×¨ ×Ļ×ļ\nĠph Ã¡\nà¸¡ à¸Ńà¸ĩ\nĠ×ĳ×Ĳ ×ķ×¤×Ł\nĠcáº£ nh\nĠíķľ ëĭ¤\nĠ×Ķ×ŀ ×ª\nà¸ķà¹Īà¸²à¸ĩ à¹Ĩ\nà¸¡à¸µ à¸ģà¸²à¸£\nÑģÐºÐ¸ Ñħ\nĠÐĴ ÑģÐµ\nĠØ§ ÙĪ\nØ¬ ÙĬ\nãģĵãģ¨ ãģ¯\nĠd Ãłi\nĠh á»ĵ\nèĩªåĪĨ ãģ®\nà¹Ħ à¸«à¸Ļ\nëĵ¤ ìĿĦ\nĠV Äĥn\nĠÐ´ Ð°Ð¶\nĠÐ´Ð°Ð¶ Ðµ\nÑĭ Ð¼Ð¸\nÐ»Ð°Ñģ ÑĮ\nÙĬ ÙĪÙĨ\nÙĨ ÙĪ\nc Ã³\nãģĹãģ¦ ãģĦãģŁ\nãģł ãģĭãĤī\nØ·Ø§ÙĦ Ø¨\nĠc á»Ńa\nÐ¿ ÑĢÐ¾Ñģ\nãģªãģ© ãģ®\nà¸£à¸¸ à¹Īà¸Ļ\nĠchi áº¿c\nÐ» Ñĭ\nĠÑıÐ²Ð»Ñı ÐµÑĤÑģÑı\nĠn á»ķi\nãģ® ãģĬ\nĠ×Ĳ×ª ×Ŀ\nĠëķĮë¬¸ ìĹĲ\nà¸ģà¸¥ à¸²à¸ĩ\nĠbaÅŁ ka\nìĦ Ŀ\nĠÑĨ ÐµÐ»\nÙģ ÙĤ\nãģ«ãĤĪ ãĤĭ\nÙĤ Ø§\nĠÃ§Ä± kar\nĠcá»© u\nØ· Ø§\nĠ×© ×ª\nà¹Ĥ à¸Ħ\nĠ×ŀ ×ľ\nĠ×Ķ ×¤×¨\nĠÐ³ Ð´Ðµ\nĠØ® Ø·\nåīį ãģ«\nc jÄĻ\nĠ×Ĺ ×©×ķ×ĳ\n×¨×Ĵ ×¢\nĠkho áº£ng\nĠÄĳ á»Ŀi\nĠÐł Ðµ\nĠÐ¾ Ð½Ð°\nĠ×Ĳ ×ł×ķ\nãģ® ãģ«\nĠØ§ÙĦØ° ÙĬÙĨ\nÐºÑĥ Ð¿\nãĤµ ãĥ¼ãĥ\nãĤµãĥ¼ãĥ ĵ\nãĤµãĥ¼ãĥĵ ãĤ¹\nÐ² Ð°Ð»\nÐ³ Ðµ\nĠgi á»¯a\nĠKh Ã´ng\nĠâĹ ĭ\nà¸ģà¸¥ à¸¸à¹Īà¸¡\nĠÙħÙĨ Ø°\nà¸Ń à¹Īà¸²à¸Ļ\nĠÑģÐ¿ Ð¾ÑģÐ¾Ð±\nĠÄĳ á»Ļi\nĠdi ÄŁer\nĠ à¸ĸà¹īà¸²\nÙħ Ø«ÙĦ\nĠ×Ķ×Ĳ ×Ļ\nĠØ¯ ÙĪÙĨ\nÙĬØ± Ø§ÙĨ\nÑī Ð¸\nØ¨ÙĨ Ø§Ø¡\nĠØ¢ Ø®Ø±\nØ¸ ÙĩØ±\nĠ×ĳ ×Ľ\nĠØ§ÙĦÙħ Ø¹\nãĥ Ĵ\nĠt áº¥t\nĠm á»¥c\nĠdoÄŁ ru\nãģŁ ãĤī\nĠ×¡ ×ķ\nĠx Ã¡c\nà¸£ à¸Ń\nĠcÄĥ n\nĠÐ¾Ð½ Ð»\nĠÐ¾Ð½Ð» Ð°Ð¹Ð½\nĠk Ã½\nĠch Ã¢n\nĠ à¹Ħà¸¡à¹Ī\nØ§ØŃ Ø©\nr Ã¡n\n×ł×Ļ ×Ļ×Ŀ\nĠ×ĳ ×Ł\nĠÐ ĸ\nà¸ķà¸£ à¸ĩ\nÐ´ Ñĭ\nĠs áº¯c\nÙĦ Øª\nãĥŃ ãĥ¼\nĠÙĦ ÙĨ\nĠ×¨ ×ķ\nĠd Æ°á»Ľi\nà¹Ģ à¸ĺ\nà¹Ģà¸ĺ à¸Ń\ne ÄŁi\nĠ×ķ ×©\nĠÙĦ Ø£\nĠg áº·p\nĠc á»ĳ\nãģ¨ ãģ¦ãĤĤ\nØ±ÙĪ Ø³\nĠ×ľ×Ķ ×Ļ\nĠë³ ¸\nä¸Ĭ ãģĴ\nĠm á»©c\nÑħ Ð°\nĠìŀ ¬\nà¸ī à¸±à¸Ļ\nÑĢÑĥ Ð¶\nĠaÃ§ Ä±k\nÙĪ Ø§ÙĦ\nĠ×ĸ ×ŀ×Ł\näºº ãģ¯\nØ¹ ÙĬÙĨ\nÑı Ñħ\nĠ×Ĵ×ĵ ×ķ×ľ\n×¨ ×ķ×ĳ\ng Ã³\nëĿ¼ ê³ł\nĠark adaÅŁ\nÙĨ Ø´Ø±\nĠÐ³Ð¾Ð´ Ñĥ\nĠÐ±Ð¾Ð»ÑĮ ÑĪÐµ\nãģ¡ãĤĩ ãģ£ãģ¨\nĠcÃ¢ u\nĠs Ã¡t\níĶ ¼\nĠti áº¿n\níķ´ ìķ¼\nĠÙĪ Ø£ÙĨ\nà¸Ļ à¸²à¸Ļ\nĠ×ĳ×Ĳ×ŀ ×¦×¢\nĠ×ĳ×Ĳ×ŀ×¦×¢ ×ķ×ª\nĠ×ľ ×¨\nĠqu áº£n\nĠÙĪØ§ÙĦ Ø£\nĠ×Ĳ×ķ×ª ×Ķ\nĠìĸ´ëĸ ¤\nĠê²ĥ ìĿĢ\nØŃØ³ ÙĨ\nĠm áº¥t\nà¸Ħ à¸¹à¹Ī\nãĥ¬ ãĥ¼\nĠÐĶ Ð°\nĠol masÄ±\nĠthu á»Ļc\n×ł ×Ĺ\níĨ ł\nĠsÃ¶ yle\nãģĿãģĨ ãģ§ãģĻ\nĠØª ÙĥÙĪÙĨ\nÐ» ÑĥÑĩ\n×ľ ×Ļ×ļ\nĠØ£ ØŃØ¯\nÐ»Ð¸ ÑģÑĮ\nĠÐ²Ñģ ÐµÐ³Ð¾\nĠ×Ķ×¨ ×ĳ\nĠëª »\no ÄŁ\noÄŁ lu\nĠìĦ ł\nĠÐº Ð°ÑĢ\nà¸łà¸² à¸Ħ\ne ÅĦ\nĠ à¸ģà¹ĩ\nĠa ynÄ±\nĠb Ãł\nãģªãĤĵ ãģ¦\nĠëª¨ ëĵł\nÙĤØ± Ø§Ø±\nãģĹãģª ãģĦ\nĠÐĴ Ð¾\nĠÙĪÙĩ ÙĬ\nÐ½Ð¸ ÐºÐ¸\nãĤĮ ãģŁ\nĠchu áº©n\n×¨ ×¢\nÙģ Ø±ÙĬÙĤ\nãĤĴ åıĹãģĳ\nĠÄĳ Ãºng\nÐ± Ðµ\n×Ľ ×ķ×Ĺ\nÐ¿ Ñĥ\nĠ×ķ ×Ĵ×Ŀ\n×ŀ ×ł×Ļ\níĸ ¥\n×¦ ×Ļ×Ŀ\nà¸ĭ à¸´\nÙĩ ÙĨ\nÐ½ ÐµÐ¼\nĠ×ĳ×ĳ ×Ļ×ª\nØ± Ø¹\nĠ à¸ª\nĠÄĲ Ãł\níķĺ ëĭ¤\nĠ áº¥y\n×Ĺ ×ķ×ĵ\n×Ĺ×ķ×ĵ ×©\nĠÑĩÐµÑĢ ÐµÐ·\nÑĥ Ð»\nĠB Ã¬nh\nĠê²ĥ ìĿĦ\nĠ×Ĵ ×¨\nä»ĺ ãģĳ\n×Ĺ×ľ ×§\nĠØª ÙĦÙĥ\nà¹ĥà¸ª à¹Ī\nsz Äħ\nÙĤ Ø§Ùħ\nØ¯ ÙĪØ±\nĠÙģ ÙĤØ·\nĠh á»¯u\nĠÐ¼Ð¾Ð³ ÑĥÑĤ\nĠg á»įi\nĠ×§ ×¨\nà¸Īà¸° à¸¡à¸µ\nØª ÙĤØ¯Ùħ\nĠØ¹ Ø¨Ø±\nĠ×ľ×Ķ ×Ŀ\nĠÑģÐ°Ð¼ Ð¾\n×¡ ×ĵ×¨\nĠc Ãłng\nr ÃŃ\nĠìŀ ¥\nëĵ¤ ìĿĺ\nĠÙĦ Ùĥ\nÐ¿ Ð¾ÑĢÑĤ\nĠkh áº£\nĠÑģÐµÐ± Ñı\n×ł ×Ł\nĠØ¯ ÙĪØ±\nĠm á»Ł\nĠcÃ¢ y\nĠf ark\nĠfark lÄ±\nÐ° ÑİÑĤ\nĠtr á»±c\nwiÄĻks z\nĠthu á»ĳc\nĠØª ØŃØª\nØª ÙĦ\nÐ¾Ð² ÑĭÐµ\nëĤ ł\nĠÐ² Ð°Ð¼\nØ¨ÙĦ Øº\nĠê°Ļ ìĿĢ\níĮ Ĳ\nÙĦ Ø¨\nĠnas Ä±l\nĠÐ¾Ð´ Ð¸Ð½\nÐ¼ Ð°Ð½\nĠØ¹ÙĦÙĬ ÙĩØ§\nÐ± Ð¸\nĠ×¤ ×©×ķ×ĺ\n×ĳ×¨ ×Ļ\nĠ×© ×ł×Ķ\nĠëı Ħ\nĠÄĲ áº¡i\nĠ×Ĳ×ķ×ª ×Ŀ\nĠØ§ÙĦØŃ Ø±\nĠÐ± Ð¾\nà¸Ī à¸¸à¸Ķ\nĠr Ãµ\nĠdeÄŁi ÅŁ\nĠëĭ ¨\nĠÑģÐ»ÑĥÑĩ Ð°\nĠÑģÐ»ÑĥÑĩÐ° Ðµ\nĠ×Ĳ×ł ×©×Ļ×Ŀ\n×ĵ ×£\n×©×ĳ ×ª\nĠ×©×ľ ×Ľ×Ŀ\nĠch Ãº\nnik Ã³w\nĠtan Ä±\nĠcÃ¡ o\nĠÄĳ Ã¡\nĠ×Ĳ ×ĵ×Ŀ\nĠê° ķ\nĠnhi á»ĩm\nĠ×ľ ×¡\nĠ×Ľ×ª ×ĳ\nĠ×Ķ×¡ ×¤×¨\nĠÄĳ Äĥng\nĠë ĳĲ\nà¸ľ à¸´\nà¸ľà¸´ à¸§\nØ¬ Ø§\nĠê° Ĳ\nØ± Ø£\nØ³Øª Ø®Ø¯Ùħ\nãģ«ãģªãĤĬ ãģ¾ãģĻ\nĠtá» ·\n×ĺ ×ķ×¨\nÐ³ Ð¾Ð²Ð¾ÑĢ\nĠÐ² Ð¾Ñģ\nĠÙħÙĨ ÙĩØ§\nÐ¸ÑĢÐ¾Ð² Ð°ÑĤÑĮ\nĠÄĳ áº§y\n×ł ×Ĵ\nĠÙħ ÙĪ\nĠÙħ ÙĪÙĤØ¹\n×¨×Ľ ×Ļ\nØª Ùı\nëª ¨\nĠ×ª ×ķ\nÙĬØ§ Ùĭ\nà¹ĥ à¸Ķ\nãĤĬ ãģ¾ãģĻ\nà¸Ńà¸¢à¸¹à¹Ī à¹ĥà¸Ļ\nĠØ£ ÙĪÙĦ\nĠØ£ Ø®Ø±Ùī\nĠc Æ°\nØµ Ø§Ø±\n×ŀ×Ĺ ×©×ĳ\nÐ± ÑĢÐ°\nÅĦ ski\nÐ± ÑĢ\nĠÙĬ Ùı\nà¸ģ à¸´à¸Ļ\nĠch á»ĳng\nÙħ Ùı\nĠ à¸Ħà¸·à¸Ń\nĠØª ÙĨ\nt ÃŃ\ny Äĩ\nĠm áº¡ng\nÙģ ÙĪ\nĠdÃ¼ nya\n×§ ×¨×Ĳ\nĠ×§ ×ľ\nĠØŃ Ø§ÙĦ\nc ÃŃa\nĠà¹Ģ à¸£à¸²\nĠ×¨ ×ķ×¦×Ķ\nĠÃ¡ p\në° ķ\nØ§ ÙĤØ©\nÐ½Ð¸ Ñİ\nĠ×Ĳ ×ľ×ķ\nĠ×ŀ×¡ ×ķ\nãģ§ãģ¯ ãģªãģı\nĠtr áº£\nĠ×§ ×©×¨\nmi ÅŁtir\nĠl Æ°u\nĠh á»Ĺ\nĠÐ±Ñĭ Ð»Ð¸\nĠl áº¥y\nØ¹ÙĦ Ùħ\nĠÃ¶ zel\næ°Ĺ ãģĮ\nĠ×ĵ ×¨×ļ\nÙħ Ø¯\ns Ä±nÄ±\n×ł ×ķ×©×Ĳ\nr Ã³w\nÑĩ ÐµÑĢ\nêµĲ ìľ¡\nĠÐľ Ð¾\nÐ» ÐµÐ³\nĠV á»Ľi\nà¸§à¸±à¸Ļ à¸Ļà¸µà¹ī\nÑİÑī Ð¸Ðµ\nãģĬ ãģĻ\nãģĬãģĻ ãģĻ\nãģĬãģĻãģĻ ãĤģ\nëı ħ\nĠ×Ļ×Ķ ×Ļ×Ķ\n×ŀ ×ĺ×¨\nÑı Ð¼Ð¸\nĠl á»±a\nĠÄĳ áº¥u\nà¹Ģà¸ª à¸µà¸¢à¸ĩ\nĠt Æ°Æ¡ng\nëĵ ±\nĠÑģÑĤ Ð°ÑĢ\nà¹ĥ à¸ļ\nà¸§ à¸±à¸Ķ\nĠÄ° stanbul\nĠ à¸Īà¸°\nà¸ķ à¸¥à¸²à¸Ķ\nĠØ¨ ÙĬ\nà¹ģà¸Ļ à¸°\nà¹ģà¸Ļà¸° à¸Ļà¸³\nØ³ Ø§Ø¹Ø¯\nĠØ¨ Ø£\nĠki á»ĥm\nØŃ Ø³Ø¨\nà¸Ĭà¸± à¹īà¸Ļ\nĠ×ķ ×¢×ķ×ĵ\nÐ¾Ð² ÑĭÑħ\nÐ¾Ñģ Ð½Ð¾Ð²\nĠtr Æ°á»Łng\n×¦ ×ĳ×¢\nĠÃŃ t\nĠk á»¹\ncr Ã©\nÑı Ð¼\nêµ °\nãģĮ ãģªãģĦ\nÙĬÙĦ Ø©\nãĥķ ãĤ£\nØ± Ùī\nĠÙĬ Ø¬Ø¨\nĠ×Ĳ ×£\nĠc á»±c\nãĤīãĤĮ ãģŁ\nĠ à¸ľà¸¹à¹ī\nĠ à¸Ń\nlar Ä±mÄ±z\nĠkad Ä±n\nĠê·¸ ëŀĺ\nĠê·¸ëŀĺ ìĦľ\nĠëĺĲ ëĬĶ\nĠÄĳ áº£\nĠÄĳáº£ m\nĠ×Ĳ ×ķ×ŀ×¨\nĠy áº¿u\nci Äħ\nciÄħ g\nĠt á»ĳ\nĠ×©×Ĳ ×ł×Ļ\nĠdz iaÅĤa\nÑī Ð°\nĠÄĳ Ãłn\ns Ä±na\nãģĵãĤĮ ãģ¯\nĠ×ĳ ×ľ×Ļ\nĠ×ĳ ×Ļ×©×¨×Ĳ×ľ\nÐ» Ð¾ÑģÑĮ\nĠgi á»¯\nê° Ĳ\nÑĢ Ð¾Ð½\nØªØ¬ Ø§Ø±\nÐ³ Ð»Ð°Ð²\nÐ² Ð¸Ð½\nĠh áº¡n\nĠyapÄ± lan\nØ¨ Ø³\nĠ à¸ŀà¸£à¹īà¸Ńà¸¡\nê´Ģ ë¦¬\nmÄ±ÅŁ tÄ±r\nb Ã¼\nr Ã¼ck\nĠBaÅŁkan Ä±\nĠÙĦ ÙĬØ³\nĠs Æ¡\nà¸Īà¸±à¸ĩ à¸«à¸§\nà¸Īà¸±à¸ĩà¸«à¸§ à¸±à¸Ķ\nØ¯ Ø§Ø¡\nĠ×Ķ ×Ľ\nv ÃŃ\n×© ×Ĳ×¨\nĠh Æ°á»Łng\nĠb Ã³ng\nĠCh ÃŃnh\nÄħ c\nà¹Ģà¸ģà¸µà¹Īà¸¢à¸§ à¸ģà¸±à¸ļ\nĠtá» ©\nĠtá»© c\nĠÑĨ Ð²ÐµÑĤ\nĠt á»ĳi\nĠnghÄ© a\nÙĦØ§ Ø¹Ø¨\nØ¯ ÙĦ\nĠ×¤×¢ ×Ŀ\nh Ã¶r\nà¸Ĭ à¸¸à¸Ķ\nà¸ŀ à¸¹\nà¸ŀà¸¹ à¸Ķ\nÐ¿ Ð°Ñģ\nĠÅŁ u\nĠt Æ°á»Łng\nØ®Ø§Ø± Ø¬\nĠÃ¢ m\nĠÐ¸Ð½ÑĤÐµÑĢ ÐµÑģ\nÐµÐ½ Ð½ÑĭÑħ\n×Ĳ ×ł×Ļ\nØ¨Ø¯ Ø£\nëĿ¼ ëĬĶ\nì¹ ´\næĸ¹ ãģĮ\nÐ»Ð¸ Ð²\nĠ à¸Ħà¸Ļ\n×¢×¨ ×ļ\nà¸Ĥà¸Ńà¸ĩ à¸Ħà¸¸à¸ĵ\nÐ¿ Ð°Ð´\nĠc áº¡nh\nĠëĤ ¨\nĠÄĳ Ã¢u\nĠbi á»ĥu\nãĤĤ ãģĤãĤĭ\n×ľ ×Ĵ\nĠ à¸ªà¸³à¸«à¸£à¸±à¸ļ\nĠxu á»ĳng\n×¡ ×ķ\nĠØ° Ø§Øª\nĠÐľ Ðµ\nØ¹ Ø§ÙĦÙħ\n×Ĳ ×¡\nØ¨ ÙĬØ©\nØ´ Ø§\nÐ¸ ÐµÐ¼\nĠNg Æ°á»Ŀi\níĺ ĳ\nÑģÐ» Ð¾Ð²\nĠÐ¿ Ð°\nĠm áº«u\nĠÐ¿ÑĢÐ¾ÑĨ ÐµÑģÑģ\nĠNh Ãł\nÐ¿ÑĢÐ¾ Ð¸Ð·\nÐ¿ÑĢÐ¾Ð¸Ð· Ð²Ð¾Ð´\nà¸łà¸²à¸¢ à¹ĥà¸Ļ\nĠ à¸ļà¸²à¸Ĺ\n×ŀ ×ł×ķ\nĠÐ¾ÑĢÐ³ Ð°Ð½\n×¨×¦ ×ķ\n×ķ×ŀ ×Ļ×Ŀ\nĠyaz Ä±\nĠd Ã¹\nãĥ¬ ãĥ³\nÙĪÙĦ ÙĬ\nà¸¢ à¸¹\nĠtr Ã²\nà¹Ģà¸ŀ à¸¥à¸ĩ\nĠ×ŀ ×ľ×Ĳ\nà¸ķ à¸¥\nà¸ķà¸¥ à¸Ńà¸Ķ\nĠÄĳ áº¡t\nĠ×Ĺ×ĵ ×©\np Ã³ÅĤ\nĠ×ŀ ×ĵ×Ļ\nujÄħ c\n×ŀ×ł×Ķ ×ľ\nĠ×©×ĳ ×ķ\nĠ×Ķ×ŀ×© ×¤×ĺ\nĠ×Ĳ ×ľ×Ķ\nĠÙĪ Ø°ÙĦÙĥ\nà¹Ģà¸ŀ à¸£à¸²à¸°\nĠÄĳo Ãłn\nĠíķ¨ ê»ĺ\nĠd á»¥c\nØ´ Øª\nĠ ula\nĠula ÅŁ\nĠqu Ã½\nĠ×Ķ ×Ĵ×ĵ×ķ×ľ\nà¸ķà¸±à¹īà¸ĩ à¹ģà¸ķà¹Ī\nĠ×© ×¨\nØ´ ÙĩØ¯\n×ł ×©×Ļ×Ŀ\nà¸ŀ à¸¥\nØ±ÙĪ Ø§\nãĤĮ ãģ¦\nĠÐ½ Ð¸Ñħ\nĠÐ´ÐµÐ» Ð°\nãģ§ãģį ãģªãģĦ\nÅĤo Å¼\n×Ĳ ×Ĺ×¨\nì ½Ķ\nãĤ¢ ãĥĥãĥĹ\nØ¯ ÙģØ¹\nĠti á»ĩn\nĠkh á»ı\nĠkhá»ı e\nĠØ§ÙĦØ¹ Ø§ÙħØ©\nãģ« ãģĤãĤĭ\nĠÄĳ á»Ļc\nì¡ ±\nĠc á»¥\nÐ¹ ÑĤÐµ\nĠÐ·Ð°Ðº Ð¾Ð½\nĠÐ¿ÑĢÐ¾ ÐµÐºÑĤ\nìĸ ¸\nÙĦ ØŃ\nĠÃ§alÄ±ÅŁ ma\nãĤĴ ãģĻãĤĭ\nÑħ Ð¸\nØ¹ Ø§Ø¯\nĠ×ł ×ŀ×¦×Ĳ\nĠ×¨ ×Ļ\nà¸Ńà¸Ńà¸ģ à¸¡à¸²\nĠT Ã´i\nĠth áº§n\nĠÙĬ Ø§\nà¸¥ à¸²à¸¢\nĠÐ°Ð² ÑĤÐ¾\nĠsÄ± ra\nĠÙĥ Ø«ÙĬØ±\nÙħ ÙĬØ²\nĠØ§ÙĦØ¹ ÙĦÙħ\næĸ¹ ãģ¯\n×ķ×¢ ×ĵ\nĠÐ¾Ð±Ð»Ð° ÑģÑĤÐ¸\n×Ļ×ľ ×Ļ×Ŀ\nãģĮ åĩº\nà¸ĺ à¸¸\nà¸ĺà¸¸ à¸£\nà¸ĺà¸¸à¸£ à¸ģà¸´à¸Ī\nÙĤØª ÙĦ\n×¨×Ĳ ×ķ\nĠng u\nĠngu á»ĵn\nĠ à¸¡à¸²\nĠÐ¿Ð» Ð°Ð½\nt Ã³rio\nĠcu á»ĳi\nÑģÐº Ð¾Ð¼\nĠØ§ÙĦÙħ Ø§Ø¶\nĠØ§ÙĦÙħØ§Ø¶ ÙĬ\nĠ×ĳ×¢ ×ľ\nĠ×¨ ×ĳ×Ļ×Ŀ\nĠlu áºŃn\nÙĥ ÙĪ\nà¸Ĺà¸±à¹īà¸ĩ à¸«à¸¡à¸Ķ\nÐ² Ð°Ð½\nĠtho áº¡i\nà¹Ħ à¸Ń\nÐ± Ð¸ÑĢ\nĠØ§ÙĦ Ø¶\nØª Ø§\nĠÑĢ Ð¾Ð´\nĠV Ãł\n×ŀ ×Ļ×Ł\nĠÐ±Ñĭ Ð»Ð°\nÐº Ð°Ð¼Ð¸\nĠÐĶ Ðµ\nt Ä±k\n×§×¨ ×Ļ\nĠeÄŁ itim\nĠÙĥ Ø¨ÙĬØ±\nØ¨ Ùĥ\nĠÙĦ ÙĪ\nÐ² Ð¾Ð¹\nĠ ãģĵãģ®\nĠÑĤ ÑĢÑĥÐ´\nmy ÅĽl\nĠs Æ°\nà¸ŀ à¸µà¹Ī\nĠ à¹ģà¸¥à¹īà¸§\n×¢ ×§\nĠ×Ĺ×ĳ×¨ ×ª\nà¸£à¸° à¸«à¸§\nà¸£à¸°à¸«à¸§ à¹Īà¸²à¸ĩ\n×Ļ ×Ļ×Ķ\nĠØ§ÙĦÙĨ Ø§Ø³\nÃ¼n Ã¼\nĠ×ľ ×ŀ×Ķ\nĠch Æ°Æ¡ng\nĠH á»ĵ\nØ§Ø± Øª\nãĤĪãģĨ ãģ§ãģĻ\nl Ã¡\n×§×Ļ ×Ļ×Ŀ\næľ¬ å½ĵ\næľ¬å½ĵ ãģ«\nãģĵãĤĵ ãģª\nÑģ Ð¾Ð²\nĠ×ķ ×Ĺ\nà¹Ģà¸ģ à¹ĩà¸ļ\nĠÐº ÑĤÐ¾\nà¹Ĥà¸£ à¸Ħ\nĠØ´ Ø±ÙĥØ©\nØ¹ Ø²ÙĬ\nØ¹Ø²ÙĬ Ø²\nØ·ÙĦ ÙĤ\nÐ¿ ÑĥÑģÑĤ\nÙģ ØªØŃ\nëŀ Ģ\nĠhÃ£ y\nØ¶ Ùħ\në¦ °\nåł´åĲĪ ãģ¯\nãĤª ãĥ¼\nĠh áº¯n\nĠ×Ĳ ×ĳ×Ļ×ĳ\nĠ×©×ľ×Ķ ×Ŀ\nĠ×Ķ×Ļ ×Ļ×ª×Ķ\nĠØ§ÙĦØ¯ ÙĪÙĦØ©\nĠØ§ÙĦ ÙĪÙĤ\nĠØ§ÙĦÙĪÙĤ Øª\nãģĤ ãģ¾ãĤĬ\nĠta ÅŁÄ±\nÄ° N\n×¢ ×¡×§\nãģ¦ ãģĦãģŁ\nĠtá»ķ ng\nĠØ§ÙĦØ¥ ÙĨØ³\nĠØ§ÙĦØ¥ÙĨØ³ Ø§ÙĨ\nÑĢ ÐµÑĪ\nĠg Ã¡i\nĠÑĨ ÐµÐ½\nĠÙģ ÙĤØ¯\nÙħ Ø§Øª\nãģķãĤĵ ãģ®\nĠph Ã¹\n×ĺ ×Ķ\nĠÙĪØ§ÙĦ ØªÙĬ\nĠØ¨ Ùĥ\nìĿ´ ëĤĺ\nÐº Ñģ\nÙħ ÙĬØ±\nĠv Ã¹ng\nĠØ§ÙĦØ´ Ø¹Ø¨\nĠNh Æ°ng\nãĥĢ ãĥ¼\nĠ×Ĺ×Ļ ×Ļ×Ŀ\nĠØ´ Ø®Øµ\n×§ ×ķ×ĵ\nê² Ģ\n×¢ ×©\n×¢ ×ķ×ľ×Ŀ\n×¦ ×ķ×¨\nØ¹ ÙĤØ¯\nĠiÅŁ lem\nĠ×Ķ×ĳ ×Ĳ\nĠd Æ°á»¡ng\nà¸Ł à¸£à¸µ\nĠph ÃŃa\nãģ®ä¸Ń ãģ§\nĠÐ¿ Ð¸\nĠng Ãłnh\nÐ½Ð¸Ð¼ Ð°\nĠÙĩ ÙĦ\nĠ×ķ ×Ĳ×ª\nĠÄĳ Ã¡ng\nÃ© quipe\nĠÑįÑĤ Ð¾ÑĤ\nĠgÃ¶ rev\në§ ¤\nĠqu Ã¢n\nå¼ķ ãģį\næĻĤ ãģ«\nĠØ¨ ÙħØ§\n×ŀ ×Ļ×ª\nĠÃ¼ lke\nĠ×ŀ×§ ×ķ×Ŀ\n×ĳ ×Ł\næ°Ĺ æĮģãģ¡\nĠë§İ ìĿĢ\nĠyÃ¼k sek\nÑĨ ÐµÐ½ÑĤÑĢ\nĠÙħ Ø¬ÙĦØ³\nç§ģ ãģ®\nÙĤØ¯ Ø±\nĠë¶Ģ ë¶Ħ\nĠì° ¨\nØ®Ø± Ø¬\nãģĭ ãģªãĤĬ\në³´ ëĭ¤\nĠ×ŀ ×Ļ×ĵ×¢\npeÅĤ ni\nĠx á»Ń\nìĹĲìĦľ ëĬĶ\nĠØ¨Ø§ÙĦ Ùħ\nĠÙĪ ÙħØ§\nĠÑįÑĤ Ð¾Ð¹\nØ¨ ÙĬÙĨ\nn Ã¼\nØŃ Ø²\nØŃØ² Ø¨\nĠÑĢÐ°Ð±Ð¾ÑĤ Ð°\nĠNh áºŃt\nÙĦ Ø§Ø¡\nĠëĵ ¤\nĠëĵ¤ ìĸ´\nãĤĦãģĻ ãģĦ\n×Ĺ×ĸ ×§\nĠ×Ķ×Ĺ ×ĳ×¨×Ķ\nÐ¿ Ð¸ÑĤ\nãģĭãĤī ãģ®\nĠë§Ĳ ìĶĢ\nĠ×¤ ×ķ\nÙĦ Ùİ\nà¹Ģà¸ķà¹ĩ à¸¡\nĠÐļ Ð¾\nĠm Ã³wi\nĠt ÃŃn\n×¨×Ĵ ×©\n×¤×¨ ×§\nĠtr áº¡ng\nĠÐŀ Ð½\n×Ĺ ×ķ×¥\nĠØ¹ÙĨØ¯ ÙħØ§\nĠØ¨ Ø±\nä½¿ ãģĦ\nĠr á»Ļng\nëĮĢ ë¡ľ\níĪ ¬\nĠktÃ³ry ch\nÐ² Ð¸Ð´\nà¸¥à¸¹à¸ģ à¸Ħà¹īà¸²\nĠmog Äħ\nĠ×© ×Ĺ\n×ĳ ×Ĺ×¨\nãĥĸ ãĥŃãĤ°\nĠTh Ãłnh\nĠ×Ķ ×¨×Ļ\nĠÑģÑĤ Ð°ÑĤÑĮ\nĠH á»Ļi\nà¸ļ à¹īà¸²à¸ĩ\nçī¹ ãģ«\nĠÄĲ á»©c\nèĢħ ãģ®\n×¢ ×ŀ×ķ×ĵ\n×ĺ×¨ ×Ķ\nÐ ¥\nĠÙħ ÙħØ§\nĠe ÅŁ\nĠÐ½ÐµÐ¾Ð±ÑħÐ¾Ð´Ð¸Ð¼ Ð¾\nÐ½Ð¸Ðº Ð¾Ð²\nĠÃ¼zer inde\na ÅĤa\nĠchá»ĭ u\nĠØ§ÙĦ Ø¯ÙĬÙĨ\nØ£Ø® Ø¨Ø§Ø±\nĠÄĳ au\nãģĮ å¤ļãģĦ\njÄħ cych\nØ¯ Ø®ÙĦ\nlarÄ± nd\nlarÄ±nd an\nĠs áº»\nà¸ŀà¸´ à¹Ģà¸¨\nà¸ŀà¸´à¹Ģà¸¨ à¸©\n×ª ×Ł\nt Ä±ÄŁÄ±\nĠlu áºŃt\nĠÅŀ e\nãĤ« ãĥ¼\nãģ® ãģĤãĤĭ\nĠ×Ķ×Ĳ ×ª×¨\nĠØ§ÙĦØ¢ ÙĨ\nÄ±ld Ä±\nĠÃ¡ o\nĠÐ½Ð°Ñĩ Ð°Ð»\nĠvi á»ĩn\nĠ×ĳ×¢ ×ķ×ľ×Ŀ\nÐ· Ð½Ð°Ñĩ\n×Ļ×ĺ ×Ķ\nÐº Ð°Ð¼\nĠÐĺ Ð·\nà¹Ģà¸Ĥ à¸µà¸¢à¸Ļ\nà¸Ļ à¹īà¸Ńà¸ĩ\nÑĤ ÑĢÐ¾\nà¹Ģ à¸Ł\nĠÐ¶Ð¸Ð· Ð½Ð¸\nĠ à¸ªà¹Īà¸§à¸Ļ\nĠv áºŃn\nĠê´Ģ ëł¨\nĠl Ã¢u\n×¡ ×ĺ×¨\n×§ ×©\nØ³ ÙĬØ±\nĠ×Ĳ×ķ×ª ×Ļ\nĠm Ã´i\nØ§Ø¦ Ø¨\nĠÐ¾ ÑģÑĤÐ°\nĠm Ã³n\nĠ×ĳ ×ŀ×§×ķ×Ŀ\nĠØ¯ Ø§Ø®ÙĦ\nĠ×Ĳ ×ķ×¨\nĠÐ² Ð°Ñģ\nÙĥ Ø´Ùģ\nìĺ ¨\nà¸ĸ à¹Īà¸²à¸¢\nĠkullan Ä±l\nĠt Ã´\nãģ« ãĤĪãĤĬ\nĠëĺĲ íķľ\nĠ×¢×ĳ×ķ×ĵ ×Ķ\nĠri Ãª\nĠriÃª ng\nĠyak Ä±n\nØ² Ø§\nÅ »\n×Ĳ ×ķ×Ľ×ľ\nØ´Ø§Ø± Ùĥ\nĠÐ± ÐµÑģ\n× ´\nĠØ§ Ø¨ÙĨ\nĠTá»ķ ng\nÙĨ Ø¸\nÅĽwi ad\nãĤµ ãĥ¼\nà¸« à¸²à¸¢\nĠG Ã¼n\nĠhakk Ä±nda\nà¹Ģà¸Ĥà¹īà¸² à¸¡à¸²\nØ² ÙĨ\nĠÐł Ð¾\nĠbi á»ĥn\nãģ© ãģĵ\nÙģ Ø¹ÙĦ\nØ² Ø¹\n×¤×¨ ×ĺ\nĠ×Ķ ×Ł\nØ£ ÙĩÙĦ\nĠth áº¥t\nØŃ ÙħÙĦ\nÑĩ Ñĥ\nĠìĤ¬ ìĭ¤\nì° ¸\nĠìľĦ íķ´\nÙĪ Ø¸\nĠÐŁ Ð¾Ð´\nĠkho áº£n\nÑĤ ÐµÐ½\nĠÙģ Ø§ÙĦ\nÑģ Ð°Ð´\nà¸Ļ à¸Ńà¸Ļ\nĠØ§ÙĦØ³Ø¹ÙĪØ¯ ÙĬØ©\n\" ØĮ\nĠØ§ÙĦ ÙĴ\nãĤī ãģļ\nĠto Ã¡n\nĠch áº¯c\n×Ľ ×Ļ×¨\nm Ã©d\nmÃ©d ia\nØ² ÙĪ\nĠyan Ä±\n×¤ ×ł×Ļ×Ŀ\nØŃ Ø¸\nĠÐ± ÐµÑģÐ¿\nĠÐ±ÐµÑģÐ¿ Ð»Ð°ÑĤ\nĠÐ±ÐµÑģÐ¿Ð»Ð°ÑĤ Ð½Ð¾\nĠØ£ ÙħØ§Ùħ\nà¸Ń à¸²à¸¢\nà¸Ńà¸²à¸¢ à¸¸\n×¨ ×©×ª\nĠg á»ĵ\nĠgá»ĵ m\nĠu á»ĳng\nØµ Ø¨\nk Ä±r\nãĥĳ ãĥ¼\nĠ×ľ×ĵ ×¢×ª\nĠÐº ÑĥÐ¿Ð¸ÑĤÑĮ\n×ľ ×ķ×Ĺ\nÙĪØ¶ Ø¹\nÙĤÙĬ Ùħ\nà¸Ľ à¸²\nÐ¶ Ð¸Ð²\nà¸Ķ à¸´à¸Ļ\n×Ĳ ×ķ×¤\nà¹Ģà¸¥ à¹ĩà¸ģ\nãĥĥ ãĥī\nÐ¸ÑĩÐµÑģÐºÐ¸ Ñħ\nĠCh á»§\nÐºÑĢ Ð°Ñģ\nÙĪ ØµÙĦ\np ÅĤat\nÐ¼ Ð¾ÑĢ\nĠ×Ķ×Ĳ ×ķ\nà¸Ń à¸´à¸Ļ\nĠíķľ êµŃ\nÐ³ÑĢ Ðµ\nĠìłľ ê³µ\nì° ½\nĠê°ľìĿ¸ ìłķë³´\nĠngh á»ĭ\nà¸ĭ à¸²\nØŃØ³ Ø§Ø¨\nĠby ÅĤa\nÙħÙĦ Ùĥ\nÐ¸ÑĩÐµÑģÐºÐ¸ Ðµ\nĠb Ã¡c\nØ¶ ØŃ\nê¸ ¸\n×© ×ŀ×¢\nĠìĸ´ëĸ »\nĠìĸ´ëĸ» ê²Į\nìĽ Į\nØ§Øª Ùĩ\nà¹Ĥà¸£à¸ĩ à¹ģ\nà¹Ĥà¸£à¸ĩà¹ģ à¸£à¸¡\nØ®Ø¯ ÙħØ©\nĠÐł Ð°\n×Ľ×ķ×ľ ×Ŀ\n×ŀ×© ×Ĺ×§\nĠÙĪ ÙĥØ§ÙĨ\n×¡ ×ķ×£\nĠØ§ÙĦØŃÙĥÙĪÙħ Ø©\nĠ×ĳ ×ĺ\nĠtr áºŃn\nĠ×Ķ×¢ ×ķ×ľ×Ŀ\nĠÃŃ ch\nt Äħ\n×©×ŀ ×ķ\nĠ×Ķ×¨×Ĳ×© ×ķ×Ł\nĠíķĺ ê³ł\nãģķ ãĤī\nãģķãĤī ãģ«\nãģ« ãģĹãģ¦\nĠ à¸ľà¸¡\nãģ® ãĤĪãģĨãģª\nĠÙĪ ÙĤØª\nãĥį ãĥĥãĥĪ\nÙĦ Ø¹Ø¨\nÙĪ Ø´\nìĺ ¬\nĠ à¸«à¸²à¸ģ\nĠm iaÅĤ\nà¸Ĺ à¸Ńà¸ĩ\nÐ¸ÑĤ Ð°\nØ§ ØµØ±\nÐ¸Ð» ÑģÑı\nÐ· Ðµ\nà¸Ľà¸£à¸° à¸¡à¸²à¸ĵ\nãģĿãĤĮ ãģ¯\nĠb Ä±r\nĠbÄ±r ak\nØµÙĨ Ø§Ø¹\nÐ ®\nØ´ Ø¹Ø±\nĠ×ł ×Ĵ×ĵ\nĠØ¨ Ø³Ø¨Ø¨\nãĥĿ ãĤ¤\nãĥĿãĤ¤ ãĥ³ãĥĪ\nĠØ§ÙĦØ¬ ÙĪ\nĠÐ½ÐµÑģÐº Ð¾Ð»ÑĮÐºÐ¾\nĠki áº¿m\nÙģ Ùİ\nĠØ¶ Ø¯\n×ĳ×Ļ×ĺ ×ķ×Ĺ\nØªØ§Ø¨ Ø¹\nÙĨ Ø²\nĠB áº£n\nĠaÃ§ Ä±kl\nĠaÃ§Ä±kl ama\nĠ à¸Ħà¸¸à¸ĵ\nà¸Ĺ à¸²\nÅĤ Ã³w\nØ· Ø¨\nÙĨ ØŃÙĨ\nĠ×ŀ×§ ×ķ×¨\nĠÄ° s\nĠÐ´Ð¾Ð¼ Ð°\nĠ à¸§à¸±à¸Ļ\nĠd Ãłnh\nÑı Ð½\nÐ¼Ð¸ ÑĢ\nĠm Ã´\nĠvÃł ng\nØµ Ø§Ø¨\ns Ä±nÄ±n\nà¸Ħ à¸·à¸Ļ\nØ® Ø¨Ø±\n×ĸ×Ľ ×ķ\nĠ×ŀ ×©×Ķ×ķ\nm Ã¼\nĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸ Ð¸\nĠ×Ķ×¢ ×Ļ×¨\nĠÙĥ ÙĪ\nÙĤÙĦ Ø¨\nĠlá»Ľ p\nÐ¸ ÐºÐ¸\n×ł ×ĳ\nà¹Ĥ à¸Ħà¸£\nà¹Ĥà¸Ħà¸£ à¸ĩ\nà¹Ĥà¸Ħà¸£à¸ĩ à¸ģà¸²à¸£\n×ŀ×ķ×¢ ×ĵ\nÑıÑĤ ÑģÑı\nà¸«à¸¥à¸±à¸ĩ à¸Īà¸²à¸ģ\nÐµÐ½Ð¸ Ñİ\nĠ×© ×¢\nĠb Æ°á»Ľc\nãĥ¡ ãĥ¼ãĥ«\nãĤĦ ãĤĬ\nĠ×Ļ×ķ×ĵ ×¢\nĠê´Ģ íķľ\nĠØ§ÙĦØ£ ÙħØ±\nĠbÃ¶l ge\nĠÑģÐ² Ð¾Ð¹\nÙĦ Ø³\nĠ×ŀ×Ļ ×ķ×Ĺ×ĵ\nĠëĤ´ ìļ©\nĠØ£ Ø¬ÙĦ\nĠÄĲ Ã´ng\nĠ×ŀ ×ł×ª\nĠìĭľ ê°Ħ\nÙĥ Ùİ\nãģ¨ãģĦãģĨ ãģ®ãģ¯\nĠnale Å¼y\nØªÙĨØ¸ ÙĬÙħ\nĠÑģÐ¾Ð·Ð´ Ð°\nĠph Ã©\nĠphÃ© p\nãģ§ãģį ãģ¾ãģĻ\nĠØ¹ ÙĦÙħ\nå¤§ãģį ãģª\nãĤ² ãĥ¼ãĥł\ní ħĮ\nĠ×Ľ×ķ×ľ ×ľ\nĠÐ¸Ð½ÑĤÐµÑĢ Ð½ÐµÑĤ\nĠT á»«\nãģ¨ ãģªãĤĭ\nØ² Ø§ÙĦ\nĠktÃ³ry m\nĠnh Ã©\nìĪ ľ\nÐ½ ÐµÐ²\nÐ´ ÐµÑĢ\nãĤ¢ ãĥĹãĥª\ni á»ĩu\n×ĳ ×Ļ×ľ\nĠØª Ø³\nĠÄĲ Ã¢y\nĠØ§ÙĦØ® Ø§ØµØ©\nĠà¹Ģ à¸Ĭ\nĠà¹Ģà¸Ĭ à¹Īà¸Ļ\nØµ Ø§Ø¯\nĠd áº¡ng\nØ³ Ø¹Ø±\nĠ×© ×Ļ×ŀ×ķ×©\n×Ĵ ×Ļ×Ŀ\nãģĮãģĤ ãģ£ãģŁ\nÐ¿ ÑĢÐ¾Ð²\nÐ¿ÑĢÐ¾Ð² Ð¾Ð´\nĠ×Ĳ ×Ļ×ł×ķ\nĠ×ľ ×¨×Ĳ\nĠ×ľ×¨×Ĳ ×ķ×ª\nĠØ£ ÙģØ¶ÙĦ\nĠØŃ ÙĦ\nĠØ£ Ø¨ÙĪ\nê° ķ\nĠì§ ĳ\nãģ® ãĤĪãģĨãģ«\nĠ×¤ ×ł×Ļ\n×¡ ×Ļ×Ŀ\nĠÙĪÙĩ Ø°Ø§\nĠka Ã§\nĠÃ© Ã©n\nĠê± ´\në° Ķ\nÑĥ Ð·\nà¸Ĥà¸Ńà¸ĩ à¹Ģà¸£à¸²\ni ÅĤ\nĠÐľ Ñĭ\nĠch áº¿t\nĠØ§ÙĦØ« Ø§ÙĨÙĬ\n×Ĳ ×§\nĠ×ķ ×¢×ľ\nĠØ§ÙĦØ· Ø¨\n×ĳ×ĺ ×Ĺ\nĠØ¬ Ø¯ÙĬØ¯Ø©\nĠØ¹ Ø¯Ùħ\nØ¹ Ø²\nà¸ªà¸´à¹Īà¸ĩ à¸Ĺà¸µà¹Ī\nãģĻ ãĤĮãģ°\nĠÄĳ Ã´\nì£ ł\nØ¯ ÙĤ\nÐ½ Ð¾Ð¼Ñĥ\nĠk á»ĥ\nãĤ¢ ãĥ³\nå¤ļãģı ãģ®\nà¸Ľà¸£à¸° à¸ģ\nà¸Ľà¸£à¸°à¸ģ à¸Ńà¸ļ\n×¤×¢×Ļ×ľ ×ķ×ª\nĠÑģÑĤ Ð¾Ð»\nmay Ä±\nãģ¤ ãģĦ\nĠyÄ±lÄ± nda\nĠ à¸Īà¸¶à¸ĩ\nkoÅĦ cz\nĠTh Ã´ng\nĠÐ°Ðº ÑĤÐ¸Ð²\nÐ½ ÑģÑĤ\nÐ½ÑģÑĤ ÑĢÑĥ\nĠÃĸ z\nĠ×ª ×ŀ×Ļ×ĵ\nĠÙĥ ÙĨØª\nÑģ Ð¸ÑģÑĤÐµÐ¼\npr Ã©s\nprÃ©s ent\nĠn Ã¢\nĠnÃ¢ ng\ngÅĤ os\nĠÙĪØ² ÙĬØ±\nØŃ ØµÙĦ\nĠÐ¸Ð¼Ðµ ÐµÑĤ\nØŃ Ø±ÙĥØ©\nà¸ŀ à¹Īà¸Ń\nãĤĴ ãģĬ\nĠØ§Ø³Øª Ø®Ø¯Ø§Ùħ\n×Ĳ×Ļ×¨ ×ķ×¢\nä»ĸ ãģ®\nĠ×©×Ķ ×Ŀ\nãģĹãģŁ ãĤī\n×©×ŀ ×Ļ\nÑģ Ð»Ð°\nm Ä±\nĠbaz Ä±\nĠíķĺ ì§Ģë§Į\n×ĵ ×ľ\nĠyapt Ä±ÄŁÄ±\nãĥĬ ãĥ¼\n×ľ ×Ļ×ľ×Ķ\nãģ¨ãģĦ ãģ£ãģŁ\nÃ¤nd ig\nĠÅŁ a\nĠÙģÙĬ ÙħØ§\nÐ¸ÑĤ ÐµÐ»Ñı\n×ŀ ×ķ×©\nà¸Ĥ à¸Ńà¸ļ\nl Ã¼k\nĠh á»ĵi\nĠëª ħ\nĠØ§ÙĦÙĥ Ø«ÙĬØ±\n×¦ ×Ĳ\nĠhaz Ä±r\nØ·Ø± Ùģ\nØ§ ÙĬØ§\nĠÄĳ Ã´i\nÐµÐ½ Ð´\nÙĦ Øº\n×Ĺ ×ĸ×ķ×¨\nĠÐ²Ñģ ÐµÐ³\nĠÐ²ÑģÐµÐ³ Ð´Ð°\nëĲĺ ê³ł\n×ĵ ×ķ×ĵ\nÐ°Ð½ Ð°\nØ¯ ÙĪÙĦØ©\nĠho áº¡ch\nØ¹ ÙĦØ§\nØ¹ÙĦØ§ Ø¬\nĠ×ķ ×¢×ĵ\n×Ķ ×Ŀ\nÐºÐ¸ Ð¹\nÙĦ ÙĲ\nĠ×¢ ×ľ×Ļ×ķ\nÑİÑī Ð¸Ð¹\nĠng á»§\nØµÙĨ Ø¹\nĠØ§ÙĦØ¹ Ø±Ø§ÙĤ\nà¸ķà¹Īà¸Ń à¹Ħà¸Ľ\nãģŁãģı ãģķãĤĵ\nĠph áº¡m\nÙĦ Ø§ÙĨ\nØ§Øª ÙĩØ§\nĠbÃ¶ yle\nØªÙĨ ÙģÙĬ\nØªÙĨÙģÙĬ Ø°\nĠ×©×Ķ ×Ļ×Ĳ\nÑģ Ñĥ\nà¸¢ à¸²à¸§\nĠ×© ×ķ×ł×Ļ×Ŀ\nĠ×ŀ ×ķ×ľ\nĠÑģ Ð¸Ð»\nĠ×Ĳ×Ĺ×¨ ×Ļ×Ŀ\nĠph á»§\nÙĤØ· Ø¹\nĠTh á»§\nà¸Ľà¸£à¸°à¹Ģà¸Ĺà¸¨ à¹Ħà¸Ĺà¸¢\nÙĨ ÙĤ\nĠÄĳo áº¡n\nĠØ¨ Ø¥\nÐ¿ ÑĢÐµÐ´ÐµÐ»\n×ķ×ª ×ķ\nĠy arÄ±\nÐ¿ÑĢ Ðµ\nĠczÄĻ ÅĽci\nØŃ ÙĥÙħ\n×ķ×ł ×Ļ×ª\n×¤×¢ ×ľ\nãĤĴ ãģĹãģ¦\nĠktÃ³ rzy\n×ľ ×Ŀ\nĠÄĲi á»ģu\nĠÐºÐ¾ÑĤÐ¾ÑĢ Ð°Ñı\nĠìĿ´ ìĥģ\nãģĤ ãģ£ãģŁ\nĠ×ŀ×ĵ ×ķ×ĳ×¨\n×¤ ×ķ×¢×ľ\nd Ä±m\néĢļ ãĤĬ\nĠÐ±ÑĥÐ´ ÑĥÑĤ\nà¹Ģà¸§à¹ĩà¸ļ à¹Ħà¸ĭ\nà¹Ģà¸§à¹ĩà¸ļà¹Ħà¸ĭ à¸ķà¹Į\nØ§ Ø®Ø±\n×Ĺ ×Ļ×ľ\nĠ×Ļ ×ľ\nĠ×Ļ×ľ ×ĵ×Ļ×Ŀ\n×Ĺ ×Ļ×¤\n×Ĺ×Ļ×¤ ×ķ×©\nĠd Ã²ng\nĠ×© ×ĸ×Ķ\nÑĮ Ðµ\nãģĤ ãģ¨\nìŀĲ ê°Ģ\n×Ĳ ×ĵ\nĠÃ¼ z\nĠÃ¼z ere\nØ¸ ÙĦ\nĠ×Ĳ ×ķ×ľ×Ļ\nĠ×ĳ ×Ļ×ķ×Ŀ\nÙĦ Ø§Øª\nĠm Ãª\nì¹ ¨\nØªØŃ Ø¯\nØªØŃØ¯ Ø«\nĠØ® Ø§ØµØ©\nĠØ¨ Ø±ÙĨ\nĠØ¨Ø±ÙĨ Ø§ÙħØ¬\nĠH Ãłn\n×Ĺ ×¡\nĠÙĪ ÙĦÙħ\n×¢ ×Ŀ\nĠm Ä±\nà¸Ł à¸±à¸ĩ\n×© ×¢×Ķ\nÙĪÙģ ÙĤ\n×¡ ×ĳ×Ļ×¨\nÐ°Ð»ÑĮ Ð½ÑĭÐ¹\n×Ĺ×© ×ķ×ĳ\nĠn Ãłng\në³ ¼\nĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÑħ\nĠ×Ĺ ×ķ×§\nt Ã¶r\nĠÐ»ÑĥÑĩ ÑĪÐµ\nãĥĳ ãĥ³\nà¸¥à¹Īà¸² à¸ªà¸¸à¸Ķ\nĠØ¬ Ø¯ÙĬØ¯\nÙĬØ¯ Ø©\nà¸Ĺ à¸£à¸ĩ\nãĤĪãĤĬ ãĤĤ\nÙĦ ÙĦ\nãĤĤ ãģ£ãģ¨\n×©×ĺ ×Ĺ\nĠ×ķ ×Ĳ×Ļ\nĠgi á»ĳng\nØ¥ Ø¶Ø§Ùģ\n×§ ×ª\në§ Ŀ\nĠzosta ÅĤ\nÑĢ Ð¾Ð·\n×Ļ×¤ ×Ļ×Ŀ\nĠ×Ľ×ľ ×ľ\n×ª×ķ×Ľ ×Ł\ndÄ±ÄŁ Ä±nÄ±\nÙĤ Ø³Ùħ\nĠÑģ ÑĩÐ¸ÑĤ\nĠÑģÑĩÐ¸ÑĤ Ð°\n×ĺ ×ķ×ª\nĠ Æ°u\nĠØ¢ ÙĦ\nĠÐ¼ Ð¾Ð¼\nĠÐ¼Ð¾Ð¼ ÐµÐ½ÑĤ\nĠØ§ÙĦØªØ¹ ÙĦÙĬÙħ\n×¢×ľ ×ķ×ª\nĠch á»¯a\nĠy Ã¶n\nĠtr Ãł\nĠØŃ ÙĬÙĨ\nà¸ĭ à¸±\nĠC Ã¡\n×¢ ×ĸ\nĠØ§ÙĦØ£ ÙħÙĨ\nc ÃŃ\nĠv á»ĳn\nĠ à¸Ļà¸²à¸¢\nÐ¾Ð± ÑĢÐ°\n×§ ×Ĳ\nĠthi áº¿u\nãĥŀ ãĥ¼\nà¸ª à¸§à¸Ļ\nĠg á»Ń\nĠgá»Ń i\nĠê ¹\nĠê¹ Ģ\nĠthi á»ĩn\nÙĤ Ø¹\nw ÄĻ\nĠÐ½ Ð°Ð¼\nÑĤ Ð¾Ð»\nĠs Ã¢n\n×¡ ×ķ×Ĵ\nĠgeÃ§ ir\nÑĤ Ð¾Ð½\nÐµÐ² Ð°\nĠÙĪ Ø¶Ø¹\nĠØ¹ Ø´Ø±\nÑģ Ð»Ð¾\nà¸Ī à¸±à¸ļ\nãĤ· ãĥ¼\nãĤĤ ãģĤãĤĬãģ¾ãģĻ\nĠv áº»\nĠÄĲ á»ĥ\nØ± ÙģØ¹\nĠØ§ÙĦØ£ÙĪÙĦ Ùī\nÑĤ Ð°ÑĢ\nãģªãģı ãģ¦\nÙħ Ùİ\nqu ÃŃ\n×¢×ł×Ļ ×Ļ×ł\nÐ³ ÐµÐ½\nĠh Ã´m\nà¸Ī à¸²\nĠnh á»Ľ\nĠØ§ÙĦØ¹ Ø±Ø¨ÙĬ\n×Ĳ ×Ł\nĠl á»Ļ\nĠje ÅĽli\nà¹Ģà¸Ĺà¹Īà¸² à¸Ļà¸±à¹īà¸Ļ\nĠØ£ÙĨ ÙĩØ§\nĠt uy\nĠtuy á»ĩt\nĠØª Øµ\nĠØªØµ ÙĨÙĬ\nĠØªØµÙĨÙĬ Ùģ\nĠê·¸ëŁ¬ ëĤĺ\nÐ¾ ÑĨÐµÐ½\nà¸ģà¸´à¸Ī à¸ģà¸£à¸£à¸¡\nãĤĦ ãģ£ãģ¦\nĠkh á»ıi\nĠl á»ĩ\nĠØ§ÙĦÙħØ¬ ØªÙħØ¹\nà¸Ńà¸²à¸Ī à¸Īà¸°\nà¸Īà¸° à¹Ģà¸Ľà¹ĩà¸Ļ\nÐ¾Ð² ÑĭÐ¹\n×¨ ×Ŀ\nà¸£ à¹īà¸Ńà¸Ļ\n×© ×ŀ×©\näºº ãģ«\nĠÃ¼zer ine\n×¤×¨ ×Ļ\ndu ÄŁu\nÑĩ Ð¸Ðº\nĠmÃ¹ a\nĠ×ŀ×ª ×ķ×ļ\nĠc áºŃp\nĠØª Ø§Ø±ÙĬØ®\n×ĳ×ľ ×ª×Ļ\nĠì¢ Ģ\nÙĦ Ø¹\nØ¨ Ø§ÙĨ\nĠch Ãºt\nĠ×Ķ×ĸ ×ŀ×Ł\nn Ã©e\nĠLi Ãªn\nĠÙĦÙĦ Ø£\nØŃØ¯ ÙĪØ¯\nĠ×¢ ×Ľ×©×Ļ×ķ\nÐ² Ð¾Ð·\nĠyapt Ä±\nĠÐ¾Ð± Ð¾\nà¹ĥà¸«à¹ī à¸ģà¸±à¸ļ\nĠ×ĳ×Ķ ×Ŀ\nãģı ãģ¦\nØ± Ø£Ø³\nĠÑģÑĢÐµÐ´ ÑģÑĤÐ²\nĠB Ãłi\nãģĵãģ¨ ãģ«\nĠìĤ¬ íļĮ\nĠëª¨ ëĳĲ\n×ĳ ×Ĳ\nĠtr áº¯ng\nĠØ§ÙĦØ¨ÙĦ Ø¯\nĠHo Ãłng\nÐ»Ð¸ Ð±Ð¾\nĠÐ´ÑĢÑĥÐ³ Ð¸Ñħ\nÄ° R\nÑĥÐ¼ Ð°\nĠJe ÅĽli\nãĤĤ ãģĹ\nĠv Ã²ng\nĠ×Ĳ×ª×¨ ×Ļ×Ŀ\nĠÄĳ á»įc\nĠÐ² Ð¾ÑĤ\nãģł ãģĮ\në° °\nà¸Ķà¸¹ à¹ģà¸¥\nĠ×ŀ ×Ľ×ľ\nìĹĲ ëıĦ\nÐ³ Ð°Ð·\nĠ×ł×ķ×¡ ×¤×Ļ×Ŀ\nãģĵãģ¨ ãģ§\nĠØª ÙĪ\nãģ§ ãģĤãĤĬ\nà¸Ļà¸± à¹Īà¸ĩ\nĠÐ¼Ð¾Ð¶ÐµÑĤ Ðµ\nsz ÄĻ\nãģ® ãģł\nĠÙħÙĨ Ùĩ\nĠb á»ķ\nĠb Ã¼t\nĠbÃ¼t Ã¼n\në³´ ê³ł\nĠch á»ĵng\nà¹ģà¸Ī à¹īà¸ĩ\nĠV Ã¬\nĠØŃ Ø±\nĠgi áº£n\nĠÙħ Ø¯ÙĬÙĨØ©\nØªØ· Ø¨ÙĬÙĤ\nà¸Ī à¸´\næĹ¥ ãģ®\nÐ± Ð¸Ð»\nà¸ģ à¸Ńà¸ĩ\nê³ ³\nĠØ£ ÙħØ§\nìĨ Ĳ\nĠtr Ã¡i\nĠÐ²Ñģ ÐµÐ¼\nĠØ³ ÙĨØ©\nĠÑģÐ°Ð¹ ÑĤ\nĠÐ³ Ð¾ÑĤÐ¾Ð²\nÐ¿ Ñĭ\nĠëĲ ł\nĠØ§ÙĦØ® Ø·\nĠØ§ÙĦØ±Ø¦ÙĬØ³ ÙĬØ©\nĠíķ ©ëĭĪëĭ¤\nĠìķĦëĭĪ ëĿ¼\nĠìĿ´ ëłĩ\nĠìĿ´ëłĩ ê²Į\n) ØĮ\nh Ã¤lt\nĠØ£ ÙħØ±\nĠØ¹ ÙħØ±\nà¸ģà¹ĩ à¸Īà¸°\nĠ à¸Ĺà¸³à¹ĥà¸«à¹ī\nĠc Ã¢n\nĠ×ĳ ×ľ\nĠ×ĳ×ľ ×ĳ×ĵ\n×¤ ×¡×§\nĠÙĬ ÙĤÙĪÙĦ\nÐ½ ÑĥÑĤÑĮ\nà¹ģ à¸Ħ\nĠ×§ ×¦×ª\nĠn áº±m\nĠh Ã²a\nbilit Ãł\nĠìĹĨ ëĭ¤\nĠ×Ľ ×¤×Ļ\nÑĢ Ð¾Ð¶\nÐ»Ð°Ð³ Ð°\nĠ×Ķ×© ×Ļ\nĠNgo Ãłi\nĠÙĪ Ø¬\nĠÙĪØ¬ ÙĪØ¯\nĠìľĦ íķľ\nĠus ÅĤug\nĠtu áº§n\nd Åº\n×ŀ ×ķ×Ł\nĠØ§ÙĦØ¹ Ø¯ÙĬØ¯\nĠch áº³ng\nà¸ªà¸¸à¸Ĥ à¸łà¸²à¸ŀ\nĠ×ĳ ×ĵ×¨×ļ\nĠÑģÐµÐ± Ðµ\nĠìŀĪ ìĿĦ\nĠØ§ÙĦØŃ Ø§ÙĦ\nĠd Ã¡\nĠc Æ°á»Ŀi\nĠnghi Ãªn\nie ÅĦ\nĠD Æ°Æ¡ng\nï¼ ħ\nØ´ Ø¯\nãģĦãģ¤ ãĤĤ\nĠÐ²ÑĭÐ± Ð¾ÑĢ\nĠc á»Ļng\n×© ×Ļ×ł×ķ×Ļ\nĠch áº¡y\nĠ×ĳ×¢ ×ľ×Ļ\nØ§Ø® Ø¨Ø§Ø±\níķĺ ë©°\nÅ¼ Äħ\nØ¬ Ø§Ø²\nĠ×ł ×¨×Ĳ×Ķ\nà¸¨ à¸¹\nà¸¨à¸¹ à¸Ļ\nà¸¨à¸¹à¸Ļ à¸¢à¹Į\n×Ĵ ×¢\nĠ×¢ ×ĵ×Ļ\nĠ×¢×ĵ×Ļ ×Ļ×Ł\nØ¨Ø± Ø§\nÑĨÐ¸ Ð¹\nĠÄĲ á»ĵng\nÙĤ Ø§ÙĨÙĪÙĨ\nĠÄĳ á»©ng\nãģĹãģŁ ãĤĬ\nĠ×Ĺ×Ļ ×Ļ\nĠë Ĳľ\nĠëĲľ ëĭ¤\nĠÐ¼ ÐµÐ¶Ð´Ñĥ\nà¸ŀà¸§à¸ģ à¹Ģà¸Ĥà¸²\nĠB áº¯c\nà¸¥ à¸³\në° ±\nĠíĻ ķ\nà¸¡à¸²à¸ģ à¸¡\nà¸¡à¸²à¸ģà¸¡ à¸²à¸¢\nÐ±Ð°Ð½ Ðº\nà¸Ńà¸² à¸ģà¸²à¸£\nĠh Ãł\nĠ×ľ ×ł\nà¸Ń à¸Ń\nĠë°Ķ ë¡ľ\nÐ» Ð¾Ð¼\nm Ã¡tica\nĠØŃ Ø¯\nØ§Ø¨ Øª\nà¸Ĺà¸µà¹Ī à¸Ļà¸µà¹Ī\nĠco ÅĽ\nÙģÙĬ Ø¯ÙĬ\nÙģÙĬØ¯ÙĬ ÙĪ\nĠÐ¼ÐµÑģÑĤ Ð¾\nĠph Ãºt\nà¸¡à¸²à¸ģ à¸ģà¸§à¹Īà¸²\n×Ĳ ×¤\nØ¨ ÙĲ\nĠPh Ãº\nì± Ħ\nĠÙĪ Ø³ÙĦÙħ\nà¸Īà¸µ à¸Ļ\nÐ¿Ð¾ÑĤ ÑĢÐµÐ±\nĠ×Ĺ×ĵ ×©×ķ×ª\nØ´ ÙĪ\nĠ×¢×¦ ×ŀ×ķ\nĠØ¹ÙħÙĦ ÙĬØ©\nà¸Ħà¸¸à¸ĵ à¸łà¸²à¸ŀ\nãģ¾ãģĻ ãģĮ\nØ¯Ø¹ ÙĪ\nØ·Ø± ÙĤ\nà¹Ħà¸¡à¹Ī à¸ķà¹īà¸Ńà¸ĩ\në² Ķ\nìĬ ¹\nĠk ÃŃch\nĠìĹĨ ëĬĶ\nĠÑĤ Ð°Ð¼\nĠÙĨ ØŃÙĪ\nĠØ§ÙĦÙĤ Ø§ÙĨÙĪÙĨ\n×Ĺ ×ķ×Ŀ\nĠk Ä±z\nĠ×ĵ ×Ļ×Ł\nĠÐ²ÑĢÐµÐ¼ ÐµÐ½Ð¸\nãģ£ãģŁ ãĤĬ\nĠØ´ ÙĩØ±\nĠìĦľ ë¹ĦìĬ¤\n×¢ ×©×Ķ\nĠgi Ã¡c\nĠØ§ÙĦØ³ÙĦ Ø§Ùħ\nĠ×Ĳ ×©\nĠÐ¿Ð¾Ð»ÑĥÑĩ Ð°\nà¸Īà¸±à¸Ķ à¸ģà¸²à¸£\nÐº Ð¾ÑĢ\nĠ×Ķ×ĺ ×ķ×ĳ\nà¸£à¸²à¸¢ à¸ģà¸²à¸£\nì£¼ ìĿĺ\nà¹ģà¸ķà¹Ī à¸¥à¸°\nĠê·¸ëŁ° ëį°\nà¸Ĺà¸µà¹Ī à¹Ģà¸Ľà¹ĩà¸Ļ\nĠ×ª ×ķ×ļ\nØ¨ÙĬ Ø§ÙĨ\nÐ Ļ\noÅĽci Äħ\nÑĤ Ð¾Ðº\nĠÃ Ķ\nĠÃĶ ng\nà¹Ħà¸¡à¹Ī à¹ĥà¸Ĭà¹Ī\nãģ¿ ãģ¦\nÐŁ Ð¾\nĠÐ§ ÑĤÐ¾\níĻ ©\n×ĺ ×ĳ×¢\nÐ¼ÐµÑĤ ÑĢ\nĠ×ĳ ×ŀ×Ķ\nĠ×ĳ×ŀ×Ķ ×ľ\nĠ×ĳ×ŀ×Ķ×ľ ×ļ\nÑĩ ÑĮ\n×§ ×©×Ķ\nÐ· Ð½Ð°Ðº\nÐ·Ð½Ð°Ðº Ð¾Ð¼\nuj ÄĻ\n×Ļ×¦ ×¨\nĠØ§ÙĦÙħ ÙĦÙĥ\nÄ± yla\n×Ĳ×ŀ ×ª\nà¸Ľ à¸´à¸Ķ\n×Ĳ ×Ĺ×ĵ\nØ± Ø§Ø¯\nĠm áºŃt\nëĭ¤ ëĬĶ\nĠl áº¡nh\n×©×ľ ×ķ×©\nØŃ Ø¯ÙĬØ«\nØª Ø²\nå¹´ ãģ®\nĠÐº Ð²Ð°ÑĢ\nĠÐºÐ²Ð°ÑĢ ÑĤÐ¸ÑĢ\nä½ľ ãĤĬ\nØ±ÙĪ Ø¨\nÐ¾Ð² Ð°Ð½\nĠÐ¢ Ðµ\nà¸Īà¸³ à¸ģ\nà¸Īà¸³à¸ģ à¸±à¸Ķ\nØ¨ Ø§Ø·\n×Ĵ ×ª\nĠÐ¼ Ð°ÑĪ\nĠÐ¼Ð°ÑĪ Ð¸Ð½\n×Ļ×¦ ×Ķ\nãģ» ãģ¨\nãģ»ãģ¨ ãĤĵãģ©\nÃŃ do\nĠÑı Ð·ÑĭÐº\nà¸ļ à¸´à¸Ļ\nà¸ªà¸ĸà¸²à¸Ļ à¸Ĺà¸µà¹Ī\nĠìĹ ´\nãĤ¦ ãĤ§\nĠc Ãł\nÐ¿ Ð°Ð½\nåı£ ãĤ³ãĥŁ\nĠØ± Ø¯\nØ§ÙĤ Øª\nĠÙĥ Ø¨\nĠÙĥØ¨ ÙĬØ±Ø©\nÑģÑĤ Ð°Ð»\n×©×ŀ ×Ĺ\npos iciÃ³n\nĠÙħÙĦÙĬ ÙĪÙĨ\nĠìĿ´ ìķ¼\nĠìĿ´ìķ¼ ê¸°\nĠh Ãºt\nĠÅĽw iat\nĠë°© ë²ķ\nĠÑģÐ² ÐµÑĤ\nĠÐ²Ð¸Ð´Ðµ Ð¾\nĠØ§ÙĦÙĨ Ø¸Ø§Ùħ\nĠtr á»Ŀi\nĠëĮĢ íķ´ìĦľ\n×¨ ×ŀ×ª\nØª Ø¯Ø§ÙĪÙĦ\n×ķ×¨ ×ĵ\n×ª ×ŀ\n×ª×ŀ ×ķ×ł×ķ×ª\nĠ×ŀ ×Ł\nĠÐ´Ð² Ð°\nĠ×Ķ×§ ×ķ\næĹ¥ ãģ«\nĠ×Ķ×Ĵ ×Ļ×¢\nà¹Ģà¸ŀà¸´à¹Īà¸¡ à¹Ģà¸ķà¸´à¸¡\nÙħØ§Ø± Ø³\nĠê²ĥ ìŀħëĭĪëĭ¤\nãģªãģĦ ãģ¨\nĠnhi á»ĩt\nëĲ ©ëĭĪëĭ¤\nĠ×ĳ×ł ×ķ×©×Ĳ\nĠê°Ģ ìŀ¥\nĠv á»£\nĠÄĳ Ã³ng\n×¦×Ļ×ľ ×ķ×Ŀ\nê´Ģ ê³Ħ\nÐ² Ð°Ñı\n×Ĳ ×Ļ×ĸ\n×Ĳ×Ļ×ĸ ×Ķ\nĠÙĨ Ø¸Ø§Ùħ\nÙħØŃ Ø§ÙģØ¸\nĠt áº£i\nê¸° ëıĦ\nà¸Ľà¸±à¸Ī à¸Īà¸¸\nà¸Ľà¸±à¸Īà¸Īà¸¸ à¸ļà¸±à¸Ļ\n×Ľ ×ĵ×ķ×¨\nĠìķĦ ìĿ´\n×Ľ×ł ×Ļ×¡\nà¹Ģ à¸ķà¸£\nà¹Ģà¸ķà¸£ à¸µà¸¢à¸¡\nĠngo áº¡i\nĠØ¯ÙĪÙĦ Ø§Ø±\nĠr áº»\nĠkh Äĥn\nØ¹Ø¯ Ø¯\nØ´ Ø¹Ø¨\nczy Äĩ\nĠØ§ÙĦ ÙĥØ±\nĠÑĩÐµÐ»Ð¾Ð²ÐµÐº Ð°\nĠÙĪ Ø¥ÙĨ\n×Ĳ ×ĺ\nĠth Æ¡\nĠØ§ÙĦ Ø±ÙĬØ§Ø¶\nÐ¾Ð¿ ÑĢÐµÐ´ÐµÐ»\nÐ¾Ð¿ÑĢÐµÐ´ÐµÐ» ÐµÐ½\n×Ķ ×ŀ×©×ļ\nĠÐĿ Ð¾Ð²Ð¾\nÐ· ÑĭÐ²Ð°\nĠØ§ÙĦØ¯ÙĪÙĦ ÙĬ\nĠÄĳ Ã¡p\nĠÐº ÑĢÐµÐ´\nĠÐºÑĢÐµÐ´ Ð¸ÑĤ\nÐ¾Ð² Ð¾Ð³Ð¾\nĠm Ã´n\nà¸Ľà¸£à¸° à¹Ĥà¸¢\nà¸Ľà¸£à¸°à¹Ĥà¸¢ à¸Ĭà¸Ļ\nà¸Ľà¸£à¸°à¹Ĥà¸¢à¸Ĭà¸Ļ à¹Į\nÑģÑĤ Ðµ\nĠTh á»ĭ\nØ¯ ÙĬØ©\n×ŀ×¦ ×ķ\nÙģ Ø§Øª\n×§ ×ĵ×Ŀ\nìĿ´ëĿ¼ ê³ł\nÙĪ Ø®\nĠ×Ĺ ×ĸ\nĠÑĦÐ¾ÑĤ Ð¾\n×ľ ×Ļ×ª\nØª Ùİ\nÙĪ Ø¨Ø±\nÐ¹ ÑĤÐ¸\nĠÃ¶ÄŁ ren\nĠ×Ķ×ĸ ×ķ\nĠv á»įng\nÙĤÙĪ Ø©\nĠT Ã¢y\nĠÐĿ Ð¸\nĠ×© ×ķ×ĳ\nãģ¨è¨Ģ ãĤıãĤĮ\nãģ© ãĤĵãģª\n×Ĺ ×¦×Ļ\nï½ ľ\nĠ×ķ×Ķ ×ķ×Ĳ\nä¸Ģ ãģ¤\nĠÑģÑĤÐ¾ Ð¸ÑĤ\nni Äħ\n×ĺ×¨ ×Ļ\nĠÐ´ÐµÑĤ ÐµÐ¹\nÐ½Ñı ÑĤÑĮ\nĠÑģÐ´ÐµÐ» Ð°ÑĤÑĮ\nĠë§İ ìĿ´\nä½ķ ãģĭ\nãģĽ ãĤĭ\nà¹Ħ à¸«à¸¡\nà¸ķà¸´à¸Ķ à¸ķà¹Īà¸Ń\nĠ×ĳ ×ª×Ĺ\nĠ×ĳ×ª×Ĺ ×ķ×Ŀ\nìĻ Ħ\nì§Ģ ëĬĶ\nÑģÑĤ Ð°ÑĤ\nÑıÑģ Ð½\nÃ¼ b\nĠth áº£\nĠ×ĳ×Ĳ×ŀ ×ª\nĠt uyáº¿n\n×ĵ ×Ļ×¨×Ķ\nĠ×Ĳ ×Ļ×©×Ļ\n×ĸ×Ľ ×¨\nãģ° ãģĭãĤĬ\nĠx Ã©t\n×Ľ ×Ļ×ķ\n×Ľ×Ļ×ķ ×ķ×Ł\ndiÄŁ ini\nĠØ§ÙĦÙħ ÙĪØ¶ÙĪØ¹\nĠh áºŃu\nà¸Īà¸²à¸ģ à¸ģà¸²à¸£\n×ĳ×¡ ×Ļ×¡\nĠ×ŀ×Ĵ ×Ļ×¢\n×ĳ ×Ļ×¢\nĠÙĪ Ø¬Ùĩ\nà¹ģà¸Ķ à¸ĩ\nà¸Ļ à¸²à¸ĩ\nĠÅŀ a\nì ¡´\në¡ Ģ\nà¸ķ à¸°\nĠ×Ķ×Ĺ×Ļ ×Ļ×Ŀ\nÙģ ÙĬØ¯\nãģ§ãģĻ ãģĭãĤī\nê· ľ\nÅº ni\nĠÐ»Ñİ Ð´ÐµÐ¹\nĠyÃ¼z de\nÄ±y orum\nĠØ§ÙĦ Ø¨ØŃØ±\ne Ã±o\nÐ¿ Ð°ÑĢ\nÙĬ ÙĤØ©\nÐ¾Ð± ÑĢ\n×¨ ×ķ×ļ\nØª ÙĪÙĤØ¹\nĠØ§ÙĦØ´ ÙĬØ®\nåĪĿ ãĤģãģ¦\nĠÑĤ ÐµÐ»ÐµÑĦ\nĠÑĤÐµÐ»ÐµÑĦ Ð¾Ð½\nĠth Ã´i\nĠ×Ļ×Ľ×ķ×ľ ×Ļ×Ŀ\nĠÅŁ irk\nĠÅŁirk et\nĠìļ°ë¦¬ ê°Ģ\nĠÄĳ Ã´ng\nĠ×ª ×ķ×ĵ×Ķ\nÑģÐ¼Ð¾ÑĤÑĢ ÐµÑĤÑĮ\nĠÙĦ ÙĩÙħ\nĠ×ľ ×Ľ\nĠN Ã³\nĠØŃ Ø§ÙĦØ©\nãģĦ ãģĳ\n×§×¨ ×ķ\naz Ä±\nãĤ³ ãĥ¼\nĠÙĦÙĦ Øª\ns Ä±nÄ±z\nĠH áº£i\nê¸° ìĪł\nà¸¢à¸±à¸ĩ à¹Ħà¸¡à¹Ī\nëĭ¤ ê³ł\n×¤ ×Ĺ\nĠ×ľ×Ĵ ×ĳ×Ļ\nĠØ¹ ÙĨÙĩ\nĠÐº Ð°Ð·\nĠÐºÐ°Ð· Ð¸Ð½Ð¾\nØ¨ ÙĪØ±\nÑĦ ÐµÑĢ\nĠê°Ļ ìĿ´\nØªØ³ Ø¬ÙĬÙĦ\nĠØ§ÙĦÙħ Ø±ÙĥØ²\nĠTh Ã¡i\nÐ´ Ð°ÑĤÑĮ\n×ŀ×Ļ ×Ļ×ľ\nĠpay laÅŁ\nãģ¤ ãģ®\nà¹Ģà¸£ à¸·à¸Ń\nn Ã§a\n×ł ×ķ×Ĺ\nĠ×Ĳ ×¤×Ļ×ľ×ķ\nãģ¨ èĢĥãģĪ\nãģ¨ãģĹãģ¦ ãģ¯\nà¹Ģà¸Ī à¸Ń\n×ŀ ×¤\nĠg iriÅŁ\nÐ» Ð¸ÑĤ\nÑĤ ÐµÐ»Ñı\nÑĳ Ð½\næ°Ĺ ãģ«\nĠg Ã³\nĠgÃ³ p\nåĪĩ ãĤĬ\nĠ×Ķ ×Ĺ×ĵ×©\nÐ¶ Ð°Ð»\nĠ×ĵ ×¢×ª\néģķ ãģĨ\nà¹Ģà¸Ĥà¹īà¸² à¹Ħà¸Ľ\nĠ×¡ ×¨×ĺ\ne Ã±a\næĸ° ãģĹãģĦ\nØ± Ùİ\nĠÐĲ ÑĢ\nĠph áº£n\nà¸Īà¸° à¹Ħà¸Ķà¹ī\nĠ×ĳ×¦ ×ķ×¨×Ķ\nØ´ Ø§Ùĩ\nØ´Ø§Ùĩ Ø¯\nÙĪØ± Ø¯\nà¹Ģà¸Ļà¸·à¹Īà¸Ńà¸ĩ à¸Īà¸²à¸ģ\nÐ¸Ð»Ð¸ ÑģÑĮ\nà¹ģà¸¥à¸° à¸ģà¸²à¸£\nĠ×Ķ ×ĸ×Ľ\nĠ×Ķ×ĸ×Ľ ×ķ×Ļ×ķ×ª\nei ÃŁ\nãĥ ¨\nìĥ Ī\nĠÃĩ a\nÆ ¯\n×© ×Ĵ\nÙĬÙĨ Ø©\nà¸£ à¹īà¸Ńà¸ĩ\nãĤµ ãĥ³\nÑĢÐ¾ÑģÑģ Ð¸Ð¹\nÑĢÐ¾ÑģÑģÐ¸Ð¹ ÑģÐº\na ÄŁa\nĠÐ½Ð°Ñĩ Ð¸Ð½Ð°\nĠØµ ÙĦÙī\nà¸Ĺà¸¸à¸ģ à¸Ħà¸Ļ\níļĮ ìĤ¬\nĠÐ»Ð¸ ÑĨ\nØ´ ÙĬØ±\nĠØ´ÙĬ Ø¡\nÙĬÙĨ Ø§\nĠ×¤ ×Ĺ×ķ×ª\nĠiÃ§er is\nĠiÃ§eris inde\nĠØ£ ØŃÙħØ¯\nĠÅ¼e by\nì´ Ŀ\nĠÐ¿ Ð¾ÐºÐ°Ð·\nĠÐ¸ Ð¼ÐµÐ½Ð½Ð¾\nà¸«à¸Ļà¸±à¸ĩ à¸ª\nà¸«à¸Ļà¸±à¸ĩà¸ª à¸·à¸Ń\nĠÑĤÑĢ Ðµ\nà¸ªà¸±à¸ĩ à¸Ħà¸¡\nØ¥ ÙĲ\nãģĮ å¿ħè¦ģ\nÙĬÙĳ Ø©\n×¤ ×¦\níĭ °\nĠÙħ Ø¬Ø§ÙĦ\n×ł ×¤×©\nÐº Ð°Ð½\n×Ĺ ×ķ×¤\n×Ĺ×ķ×¤ ×©\nì²ĺ ëŁ¼\nÐ¾Ð² Ð°Ñı\nÐ· Ð¾Ð²\nĠh áº¡\nĠdzi ÄĻki\n×Ļ×¨ ×ķ\nĠ×ľ ×ŀ×¦\nĠ×ľ×ŀ×¦ ×ķ×Ĳ\n×Ļ×ĵ ×ķ\nĠs á»£\nĠ×ľ×Ķ ×Ĵ×Ļ×¢\n×§ ×ĳ×¢\nĠchi á»ģu\nãĥŀ ãĤ¤\nĠd Ãłng\nà¹ģà¸Ł à¸Ļ\nĠÃ¼ ye\n×Ļ×ł ×Ĵ\nà¹Ģà¸£à¸µà¸¢ à¸ģ\nç§ģ ãģĮ\nth Ã©\nĠÑĦ Ð¸Ð»ÑĮ\nĠÑĦÐ¸Ð»ÑĮ Ð¼\nĠNg Ãły\nĠÐ¶ ÐµÐ½\nĠÐ¶ÐµÐ½ ÑīÐ¸Ð½\nØ¬ ÙĬØ¯\nn Ã§\nà¸Ľ à¸£à¸²\n×Ļ×ŀ ×ķ\nĠn á»ģn\n×Ĳ ×ķ×ľ×Ŀ\nĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶ Ð½Ð¾ÑģÑĤÑĮ\nĠëĭ¤ ìĭľ\nè¦ĭ ãģŁ\nà¸ĸ à¸Ļ\nà¸ĸà¸Ļ à¸Ļ\nmÄ±z Ä±\nĠÙħ Ø¬ÙħÙĪØ¹Ø©\nc jÄħ\nĠÐł Ð¤\nà¸ģà¸³ à¸«à¸Ļ\nà¸ģà¸³à¸«à¸Ļ à¸Ķ\nĠìĹ¬ ê¸°\nland Ä±\nÐ½Ð¸ ÑĨ\nÑģÑĤÐ² Ðµ\nĠ×ĵ ×ĳ×¨×Ļ×Ŀ\nĠsk ÅĤad\nãĤĬ ãģ¾ãģĹãģŁ\nĠÐ¾ÑĤ ÐºÑĢÑĭÑĤ\nÐ½Ñı ÑĤ\nĠÑģÐ²Ð¾ ÐµÐ¹\nà¸Ī à¸´à¸ķ\nĠÐºÐ°ÑĩÐµÑģÑĤÐ² Ðµ\nĠet tiÄŁi\nìĤ¬ íķŃ\nĠØ§ÙĦÙĬ ÙħÙĨ\nÐ¸ÑĩÐµÑģÐºÐ¸ Ð¹\në¸ Į\nĠ×ĳ×Ĳ×¨ ×¥\nĠØ§ Ø³Ùħ\nĠÐ¸Ð· Ð²ÐµÑģÑĤ\nr Ã£o\nĠatt ivitÃł\nà¹Ģà¸Ľà¹ĩà¸Ļ à¸ģà¸²à¸£\nĠØ§ÙĦØ¯ ÙĥØª\nĠØ§ÙĦØ¯ÙĥØª ÙĪØ±\nĠÙĪØ§ØŃØ¯ Ø©\nĠÑģ ÑĩÐµÑĤ\nĠÐ¿ÑĢ Ð¸Ñĩ\nĠÐ¿ÑĢÐ¸Ñĩ Ð¸Ð½\nĠÙĪØ² Ø§Ø±Ø©\nĠh uyá»ĩn\nĠÙĥ ØªØ§Ø¨\nà¹ģà¸Ļ à¹Īà¸Ļ\nà¹ģà¸Ļà¹Īà¸Ļ à¸Ńà¸Ļ\nĠgÃ¼n Ã¼\nÐ³ ÑĢÑĥÐ·\nĠØ§ÙĦØ® Ø§Øµ\nĠgÃ¶r Ã¼l\n×ľ ×ŀ×ĵ\nĠìłķ ëıĦ\n×ķ×ĳ ×Ļ×ľ\nĠ×ŀ×§ ×¦×ķ×¢×Ļ\nĠÐ¾ÑģÐ¾Ð± ÐµÐ½Ð½Ð¾\nà¸Ľà¸£à¸° à¸ģà¸²\nà¸Ľà¸£à¸°à¸ģà¸² à¸¨\naca ÄŁÄ±nÄ±\në¶ ģ\nà¸łà¸¹ à¸¡à¸´\nĠÑį Ð»ÐµÐºÑĤ\nĠÑįÐ»ÐµÐºÑĤ ÑĢÐ¾\nĠ×§ ×©×Ķ\nØ³ÙĦ Ø·\nà¸Ĭà¸Ļ à¸°\n×¢ ×Ļ×ľ\nĠÐ§ Ðµ\nà¹ģà¸Ļ à¹Ī\nlÄ± ÄŁ\nlÄ±ÄŁ Ä±n\nĠ×ŀ×¢ ×¨×Ľ×ª\nå¥½ãģį ãģª\nà¸¡à¸²à¸ģ à¸Ĥà¸¶à¹īà¸Ļ\n×ŀ×¢ ×ĳ×¨\nĠØ§ÙĦÙħ ØºØ±Ø¨\nĠÐ¿ÐµÑĢ Ð¸\nĠÐ¿ÐµÑĢÐ¸ Ð¾Ð´\nĠnh áº¡c\nØ§ ÙĪÙĬ\nĠÙĪ Ø¹ÙĦÙī\nØ£Ø® Ø°\nĠC Ã´\n×ª×¨ ×ĳ×ķ×ª\n×Ĵ ×Ķ\nĠktÃ³re j\n×Ĳ ×Ļ×ª\n×ĳ ×ķ×Ĳ\nÐ´ ÐµÐ»ÑĮ\nà¸£à¸µ à¸§à¸´\nà¸£à¸µà¸§à¸´ à¸§\nÐ¶ Ñĥ\nĠ×ĳ×Ĺ ×ķ\nÐµÑĪ ÑĮ\nĠØ£ ÙĦÙģ\nĠØ§ÙĦÙĪ Ø·ÙĨÙĬ\nĠØ§ÙĦÙħÙĨ Ø·ÙĤØ©\nnÄħ Äĩ\nĠthi Ãªn\nÐ¸ÑĩÐµÑģÐº Ð¾Ð¹\nĠØ§ÙĦÙħ ÙĦ\nĠØ¹ Ùħ\n×¡ ×¤×¨\nĠnh Ã³m\nÙĪØµ Ùģ\nĠCh Ãºng\nĠØ± ÙĤÙħ\nãģ¾ãģĹãģŁ ãģĮ\nal itÃ©\nà¸¥ à¸¡\nĠëĤ´ ê°Ģ\n×ľ×§ ×ķ×Ĺ\nĠS Æ¡n\npos iÃ§Ã£o\nmi ÄĻ\nĠtr Ã¡nh\nĠÄĲ á»Ļ\n×Ľ ×Ĺ\nãģĤ ãģ£ãģ¦\nà¸Ńà¸¢ à¹Īà¸²\nĠ×ŀ×Ĺ ×Ļ×¨\nĠ×Ķ ×Ļ×ª×Ķ\nà¸Ľ à¹Īà¸²\nà¸Ńà¸·à¹Īà¸Ļ à¹Ĩ\nØ´ ÙĤ\n×ł×¡ ×Ļ\në¦ ¼\nãģ¦ãģĹãģ¾ ãģĨ\nĠ×ŀ ×¦×ĳ\nãģ« åĩº\nÙħÙĪØ§ Ø·ÙĨ\nà¸¢à¸±à¸ĩ à¸¡à¸µ\nÐ°Ð»ÑĮ Ð½ÑĭÐµ\nsan Ä±z\nØ¥ Ø³Ø±Ø§Ø¦ÙĬÙĦ\nĠvÃł i\nì¤ Ħ\nãģ¨æĢĿ ãģ£ãģ¦\n×Ļ ×ķ×ł×Ļ\nçĶŁ ãģį\nĠs Ã¢u\nÑĩ Ð¸ÑģÑĤ\nĠl á»ħ\nĠGi Ã¡\nà¸Ńà¸¸ à¸Ľ\nà¸Ńà¸¸à¸Ľ à¸ģà¸£\nà¸Ńà¸¸à¸Ľà¸ģà¸£ à¸ĵà¹Į\nĠnh áº¹\nr Ã¶\n×¡ ×ĺ×Ļ\nãģķãĤĵ ãģĮ\nĠd áº§u\nØ¹ Ùİ\nØª Ø±Ø§\n×Ĵ×ĵ ×ľ\nĠtÃ©cn ica\n×Ľ ×ł×Ļ×Ŀ\n×ª×§ ×©\n×ª×§×© ×ķ×¨×ª\nĠÐ½ ÐµÐ³Ð¾\nÃ©t ait\nĠm á»ģm\nÑģ ÐµÑĤ\nĠnh áºŃt\nĠ×ŀ ×¢×ľ\nĠ×Ķ×¢ ×ĳ×ķ×ĵ\nĠ×Ķ×¢×ĳ×ķ×ĵ ×Ķ\nĠ×Ĵ ×Ļ×ľ\nãģ¯ ãģªãģĦ\nØ§Ø¦ ØŃ\nĠÐ· Ð´ÐµÑģÑĮ\n×Ĳ ×Ļ×ł×ĺ×¨\nÙħ ÙĲ\nĠ×Ļ ×Ĺ×ĵ\nØ± Ø§Ùģ\nì²ĺ ë¦¬\n×ĵ ×¢×ķ×ª\nì¹ ľ\nĠÐ¢ Ð¾\nĠTh áº¿\nì¶ ©\nĠ×ł×Ľ ×ķ×Ł\nØ¹ÙĬ Ø´\nÐ½Ð¸ Ð·\nĠØ¬ Ø§ÙĨØ¨\n×ŀ×§ ×¦×ķ×¢\nà¹Ĥ à¸ĭ\nÑģ ÑĥÑĤ\nìĸ´ ìļĶ\nãĤĴè¦ĭ ãģ¦\nØ§Ø± Ø¯\nĠaÃ§ Ä±l\nĠØ§ÙĦØŃ ÙĬØ§Ø©\nà¸ģà¹ĩ à¹Ħà¸Ķà¹ī\nãģĿãĤĮ ãĤĴ\nØ¹Ø¶ ÙĪ\nĠÐ³ ÑĢÐ°Ð¶\nĠÐ³ÑĢÐ°Ð¶ Ð´Ð°Ð½\nà¸Īà¸° à¸ķà¹īà¸Ńà¸ĩ\nĠìĿ´ ëŁ¬\nĠìĿ´ëŁ¬ íķľ\nĠtr Ã¡ch\nÙĨ Ùİ\nĠkÄ± sa\nÃ Ķ\nÑĪ ÐºÐ°\nãģ® äºº\nĠÐŁ Ð¾Ñģ\nĠÐŁÐ¾Ñģ Ð»Ðµ\nÑĥ Ð»ÑĮ\nÙĪØ§ Ø¬Ùĩ\nÙĤ Ø±Ø¨\nà¸Ľà¸ıà¸´ à¸ļà¸±à¸ķà¸´\nê° Ļ\nĠ×ŀ ×ł\nĠÑģÐ²Ð¾ Ð¸\nØ¨Ø± Ø§ÙħØ¬\nĠØ± ÙĪ\nÐ¿ÑĢ Ð¾Ð´\nÐ¿ÑĢÐ¾Ð´ Ð°Ð¶\nĠby ÅĤy\nà¸§à¸± à¸¢\nĠgÃ¶r Ã¼n\nĠÃ Ī\nÑİÑī Ð¸Ð¼\nĠÑĤÐ°Ðº Ð¾Ð¹\nÙģ ÙĪØ±\nĠÙģ Ø¹ÙĦ\nĠÐ± ÐµÐ»\nëĲ ł\ner ÃŃa\nĠÑģÐ²Ð¾ Ñİ\nĠl Ã£\nĠlÃ£ nh\nà¹Ģà¸ŀà¸·à¹Īà¸Ń à¹ĥà¸«à¹ī\nÙĤ ÙĨ\nØªØ· ÙĪÙĬØ±\nĠsay Ä±\nĠÑģ ÐµÐ¹ÑĩÐ°Ñģ\nĠ×Ĳ×Ĺ×¨ ×ª\n×§ ×ķ×¤×Ķ\n×§×ķ×¨ ×¡\nĠØ³ Ùħ\nĠ×ĺ ×Ļ×¤×ķ×ľ\nìĿ´ëĿ¼ ëĬĶ\nØ¯Ø±Ø§Ø³ Ø©\nèµ· ãģĵ\n×Ĺ ×Ļ×ł\n×Ĺ×Ļ×ł ×ķ×ļ\n×ĵ ×§\nĠë§ ŀ\nĠÐºÐ¾Ð¼ Ð°Ð½Ð´\nĠÐĳ Ð¾\nĠÐ¸Ð³ ÑĢÑĭ\nà¸ļ à¸µ\nĠØ£ Ùİ\nÐ² ÐµÐ½\nĠØ§ÙĦØ¬ Ø¯ÙĬØ¯\nĠÙĦ Ø¥\nĠ×ķ×Ĳ ×ł×Ļ\nĠ×Ķ×¡ ×Ļ\nÐ¸ÑĩÐµÑģÐº Ð¾Ð³Ð¾\nØ±ÙĪ ØŃ\nà¸ģà¸²à¸£ à¸¨à¸¶à¸ģà¸©à¸²\nĠTr Æ°á»Ŀng\nÐ¸Ð³ ÑĢÐ°\nÄ±l masÄ±\nĠÐ¼ Ð°ÑģÑģ\nãģ¨ãģį ãģ«\nà¸Ĺà¸µà¹Ī à¸ľà¹Īà¸²à¸Ļ\nà¸Ĺà¸µà¹Īà¸ľà¹Īà¸²à¸Ļ à¸¡à¸²\nĠØ§ÙĦØ³Ø§Ø¨ ÙĤ\nĠ×ŀ×¢ ×ĺ\nÐ² Ð°ÑĤÑĮ\nm Ã¼ÅŁ\nĠ×ľ ×Ľ×ļ\nĠt á»ĭch\nÙģ ÙĩÙħ\nØªØ¯ Ø±ÙĬØ¨\nØ´ Ùĥ\nĠ×ĳ ×ŀ×Ļ\nĠ×ĳ×ŀ×Ļ ×ķ×Ĺ×ĵ\nÙĤØ· Ø§Ø¹\nãģª ãģĹ\n×ķ×¦ ×Ļ×Ĳ\nĠÙĪ Ø³ÙĬ\nÐ· Ñĥ\nĠy at\nĠyat Ä±rÄ±m\në§ İ\nĠth áº¯ng\nãģĬ å®¢\nãģĬå®¢ æ§ĺ\nĠThi Ãªn\nãģ«å¯¾ ãģĹãģ¦\nÑĢ Ð¸Ñģ\nÙĨØª Ø§Ø¦\nÙĨØªØ§Ø¦ Ø¬\nĠ×ŀ ×©×¨\nĠ×ŀ×©×¨ ×ĵ\nĠØªØ¹ Ø§ÙĦ\nĠØªØ¹Ø§ÙĦ Ùī\n×© ×ł×Ļ\nÙĩ Ø§Ùħ\n×Ĳ×ł ×©×Ļ×Ŀ\nĠÅ¼yc ia\nĠÑĢÑĥÐ± Ð»ÐµÐ¹\nÙĬ Ø¶\nĠkat Ä±l\nĠÙħ ÙĪØ¶ÙĪØ¹\nĠvard Ä±r\nĠÙħÙĨ Ø·ÙĤØ©\nĠTr áº§n\nĠÐ² ÐµÑģ\nÃ¼ p\nÙħ ÙĪÙĨ\nÑĪ Ð»Ð¸\nĠn Ã³ng\nØ® ÙĦÙģ\nĠÐ¡ ÑĤÐ°\nĠÐ´ Ð¾ÑĢ\nĠÐ´Ð¾ÑĢ Ð¾Ð³\nĠwÅĤa ÅĽnie\neÄŁ in\nĠhi á»ĥm\nĠÐ¡ Ð°Ð¼\nê»ĺ ìĦľ\nĠÑĦ Ð°\nãģ» ãģĨ\nãģ»ãģĨ ãģĮ\n×ķ×¤ ×Ļ×¢\nê° Ī\nØ¯ ÙĪÙĦ\nĠthu Ãª\nĠch á»Ĺ\nĠëĭ¹ ìĭł\nãģĳ ãĤĮ\nãģĳãĤĮ ãģ©\në³´ íĺ¸\nãģķãĤĮ ãģ¦ãģĦãģ¾ãģĻ\nĠÐ½Ð°Ð´ Ð¾\nĠìĤ¬ëŀĮ ëĵ¤\nà¹Ģà¸Ĥ à¸ķ\nà¸ªà¸¡ à¸±à¸¢\nz ÅĤ\nØª ÙĪØ±\nĠ×© ×ª×Ļ\nv Ãª\nĠ×ĳ×ª ×ķ×ļ\nà¸Ĭ à¸±à¸¢\nãģĦ ãģ£ãģŁ\nìĿ ĳ\nĠt áº§\nĠtáº§ ng\n×© ×Ľ×¨\nĠê¸ Ģ\nĠ×Ķ×© ×ł×Ķ\nĠØ§ ÙĨÙĩ\nç«ĭ ãģ¡\nr Ã©s\nfÃ¼h ren\nØ± ØŃÙħ\nê· ¹\nĠâĢ «\nĠsu áº¥t\nà¸Ł à¸´\nÙĬ ÙĩØ§\nĠØ§ÙĦ Ø§ØªØŃØ§Ø¯\nĠt uyá»ĥn\nãģ¾ ãĤĭ\nĠm áº¡i\nĠng Ã¢n\nãĤ° ãĥ©\næ¬² ãģĹãģĦ\nØ³ Ø§Ø±\nãĤĤãģ® ãģ§ãģĻ\nÐºÐ¸ Ðµ\nĠseÃ§ im\nåħ¥ ãĤĬ\nãģªãģ© ãĤĴ\nÑĤ ÑĢÐ¸\nĠÑģÐ¿ ÐµÑĨ\nĠØ£ Ø¯\nĠÐ¾Ð´ Ð½Ð¾\nÑĪ ÐµÐ»\nãĥĩ ãĥ¼ãĤ¿\nãĤ· ãĤ¹ãĥĨ\nãĤ·ãĤ¹ãĥĨ ãĥł\nè¡Į ãģį\nãģ¨æĢĿ ãģ£ãģŁ\nà¹Ģà¸ģà¸´à¸Ķ à¸Ĥà¸¶à¹īà¸Ļ\nĠÑĤ Ð¾Ð¶\nĠÑĤÐ¾Ð¶ Ðµ\nĠs áº¡ch\nĠÑģ ÑĢÐ¾Ðº\nĠÐºÐ»Ð¸ ÐµÐ½ÑĤ\nĠÙħØ´ Ø±ÙĪØ¹\nĠalt Ä±nda\nĠì ·¨\nä¸Ń ãģ®\nãģķãģĽ ãĤĭ\nãģĻ ãģ¹\nãģĻãģ¹ ãģ¦\nê°ľ ë°ľ\nĠÄĳ Ãªm\nãģªãģĦ ãģ®ãģ§\nì² ł\n×¢ ×ĳ×ĵ\nĠd áº¥u\nà¸Ħà¸Ļ à¸Ĺà¸µà¹Ī\nĠC Ã¡ch\nØªØ¹ ÙĦÙĬÙħ\nĠh áº¡i\nãĤ» ãĥķãĥ¬\nĠÙĨÙģØ³ Ùĩ\nĠíĨµ íķ´\nÑĪ Ð»Ð¾\nĠÐ½Ð°Ð¿ ÑĢÐ°Ð²\nĠÐ½Ð°Ð¿ÑĢÐ°Ð² Ð»ÐµÐ½\nÑĢÑĥ Ñĩ\níĶ Į\nĠ×ĳ×¨ ×Ļ×Ĳ\nãģ® ãģ¿\nãģ«ãģĬ ãģĦãģ¦\n×ĳ ×ł×§\nãĤ¨ ãĥ³\nØ«ÙĦ Ø§Ø«\nĠm á»¹\nĠÑģÐ°Ð¹ ÑĤÐµ\nĠÐµ Ð¼Ñĥ\nØª ØºÙĬ\nØªØºÙĬ ÙĬØ±\nØ®Øµ ÙĪØµ\nÑĤÐµ Ð»Ð¸\nĠ×ķ×ľ ×Ľ×Ł\n×¤×¢ ×Ŀ\nĠÐ¿Ð¾ ÑįÑĤÐ¾Ð¼Ñĥ\nØ± Ø§ÙĨ\nÐ¸ÑĤÐµÐ» ÐµÐ¹\nÐ¿Ð¸Ñģ Ð°Ð½\n×¢ ×¥\nĠìĤ¬ ìĹħ\nÙħ Ø²\nØ¬Ùħ ÙĬØ¹\në©´ ìĦľ\nà¸ľà¸¥à¸´à¸ķ à¸łà¸±\nà¸ľà¸¥à¸´à¸ķà¸łà¸± à¸ĵ\nà¸ľà¸¥à¸´à¸ķà¸łà¸±à¸ĵ à¸ĳ\nà¸ľà¸¥à¸´à¸ķà¸łà¸±à¸ĵà¸ĳ à¹Į\nĠÐ¿ÑĢ Ð¸Ð¼ÐµÑĢ\nãĤŃ ãĥ¼\nl Ã¢\nĠch Äĥm\nçĽ® ãģ®\nãģĦ ãģĭ\nãģ¨è¨Ģ ãģĨ\n×ĸ ×ķ×Ĵ\nĠ×ĳ ×ĵ×Ļ\nĠ×ĳ×ĵ×Ļ ×ķ×§\nãģĬ åºĹ\nà¸ķà¸Ńà¸Ļ à¸Ļà¸µà¹ī\nĠph á»ĳi\nÐ¿ ÑĤ\nà¸ªà¸Ļ à¸²à¸¡\nØ· ÙĪ\nØµ Ø§ØŃ\nØµØ§ØŃ Ø¨\nĠD Ã¼\nĠDÃ¼ nya\nĠÐ¿ Ð¾ÐºÐ°\nÐ¿ Ð°Ð»\nĠÄĳ áº£o\nĠØ§ÙĦÙģ ÙĪØ±\nĠØ§ÙĦÙģÙĪØ± ÙĥØ³\nĠmÃ¡ u\nÐºÑĢ ÐµÐ¿\nĠØ§ÙĦØ³ Ø§Ø¹Ø©\nĠÐ³Ð¾ÑĢ Ð¾Ð´Ð°\nÙģ ØµÙĦ\nÐ°Ð¹ ÑĤÐµ\nĠÐ´ Ð¾Ð³\nĠÐ´Ð¾Ð³ Ð¾Ð²Ð¾ÑĢ\nĠØ¥ Ø°\nĠ×ĳ×Ľ×ľ ×ľ\nÙĬ ØªÙĩ\n×Ĵ ×ĳ×¨\nĠbir Ã§\nĠbirÃ§ ok\në¬¸ íĻĶ\nãģĿãģĨ ãģª\nØ±Ø§ ØŃ\nĠÙħ Ø±Ø©\nĠÐ´ÐµÐ½ÑĮ Ð³Ð¸\nf Ã¤\nà¸Ĥà¹īà¸² à¸§\nĠÑģÐ¾Ð² ÑĢÐµÐ¼\nĠÑģÐ¾Ð²ÑĢÐµÐ¼ ÐµÐ½Ð½\n×ľ×Ĺ ×¥\nèī¯ ãģı\nĠÙģ Ø£\nĠ×ķ ×ĸ×Ķ\nĠÐ· Ð°Ð½Ð¸\nĠÐ·Ð°Ð½Ð¸ Ð¼Ð°\nĠê°Ģì§Ģ ê³ł\nĠh Æ¡i\nãģªãģ® ãģĭ\nãĥĨ ãĥ¬ãĥĵ\nĠ×¨ ×ĳ×ķ×ª\nà¸ķ à¸µ\nĠ×ĳ×© ×ł×ª\nĠT áº¡i\nĠthu áºŃn\nÑģ ÐµÐ»\nÑĳ Ð¼\ndzi Äĩ\nĠÑģ ÐºÐ°\nĠÑģÐºÐ° Ñĩ\nĠÑģÐºÐ°Ñĩ Ð°ÑĤÑĮ\n×ķ×ŀ ×ķ\nÐ³ Ð»Ð°\nĠÐ¼Ð¸Ð½ ÑĥÑĤ\nåĩº ãģĻ\nĠ×Ĺ×Ļ ×Ļ×ĳ\nĠ×ª ×Ĵ×ķ×ĳ×Ķ\nà¸£à¸¹à¸Ľ à¹ģà¸ļà¸ļ\nÐ½Ð¸ ÑĨÐ°\nĠÄ° n\nĠØ£ Ø¹\nĠØ¶ ÙħÙĨ\nÙħ Ø«Ø§ÙĦ\nĠyaÅŁ an\nĠìĹ° êµ¬\nĠL Ãª\n×©×ľ ×Ĺ\nãģı ãģªãĤĭ\nìĹĨ ìĿ´\nĠÑĤ ÑĢÐ¸\nĠÑĩÐ°ÑģÑĤ Ð¾\nĠÐ¾Ð± ÑĢÐ°ÑĤ\nÐ¿ Ð»Ð¾\nØ¯ Ø®\nØ¯Ø® ÙĪÙĦ\nØ³ Ùĩ\nà¸Ń à¸²à¸ģ\nà¸Ńà¸²à¸ģ à¸²à¸¨\nĠ×Ľ ×ĸ×Ķ\nĠ×Ķ×¢ ×¡×§\nĠØ§ÙĦØ£ ÙĨ\nå¹´ ãģ«\n×¢ ×©×ķ\nĠ×© ×¢×ķ×ª\nĠm Ãłn\n×Ĳ×¨ ×Ļ\nsÄ± yla\nÙģØ± ÙĤ\nÐ½Ð¸ Ñħ\nĠØª Ø³Øª\nè¦ĭ ãģ¦\nØŃØ§ ÙĪÙĦ\n×Ĳ ×Ļ×Ľ×ķ×ª\nĠbaÅŁ ladÄ±\nst Äħ\nstÄħ pi\nà¸Ĺà¸µà¹Ī à¹Ģà¸£à¸²\nÙĤØ± Ø±\nØ¬ Ø§Ø¨\nĠ×ĳ×¨ ×ķ×¨\nà¹Ģà¸Ĥà¹īà¸² à¹ĥà¸Ī\n×ŀ×Ĺ ×§×¨\nal Ä±m\nĠ×¡ ×Ļ×¤×ķ×¨\nãģ§ãģĤ ãĤĮãģ°\nĠ×©×ŀ ×ķ×¨×ķ×ª\nĠ×ķ ×ŀ×Ķ\nãģĵ ãģĿ\nid Ã©e\nä¸ĭ ãģķãģĦ\nØªÙĨØ§ ÙĪÙĦ\nĠ à¸¥à¹īà¸²à¸Ļ\nĠìļ°ë¦¬ ëĬĶ\nØ§ÙĨ Ø§\nÑģÑĤ Ð¾Ð¹\nÐ± Ð¾ÑĤ\nĠyaÅŁ am\nkÃ¶ y\nØ¥ ÙĦ\nÑĢ ÑĭÐ²\nê¸° ìĹħ\nĠ×Ķ×ŀ ×ĵ\nĠ×Ķ×ŀ×ĵ ×Ļ×ł×Ķ\nØ¯ Ø¨\n×¢ ×Ļ×ł×Ļ\n×ŀ ×ª×Ĺ\nĠ×¤ ×¨×Ļ\nãĥĭ ãĥ¼\nØ§Ùħ ÙĬ\nĠnh áº±m\nãĤĮ ãģªãģĦ\nØª Ø¹Ø±Ùģ\nĠë§Ī ìĿĮ\nìĵ °\nĠh áº¥p\n×¨×Ĵ ×Ļ×ľ\nØ¨ Ùİ\nĠr Äĥng\ngl Äħd\nĠÑģÐ¸ÑģÑĤÐµÐ¼ Ñĭ\nĠkh Ã³a\nãģ§ãģĻ ãĤĪãģŃ\nå¤§ãģį ãģı\nê¸° ë¥¼\nĠkÃ© o\nÙĪ Ø¡\nØ¬ Ø§Ùħ\nØ¬Ø§Ùħ Ø¹\nĠ×¢ ×Ļ×¦×ķ×ĳ\nt Ã©ri\nĠ×ª ×©\nĠ×Ĳ ×ĳ×Ļ\nĠCh Æ°Æ¡ng\nà¸ļà¸£à¸´ à¹Ģà¸§\nà¸ļà¸£à¸´à¹Ģà¸§ à¸ĵ\nãģ¤ ãģı\nĠ×Ĺ ×ķ×ľ\n×¢×ª ×Ļ×ĵ\n×© ×Ļ×ŀ×Ķ\nëĤ ¨\nĠ×©×Ĳ ×Ļ×Ł\nĠÙĪØ§ÙĦ Ø¥\nÑĦ Ð°\nĠkh Ã¡m\nĠ×ĺ ×ķ×ĳ×Ķ\nĠÐ²Ñĭ Ñģ\nĠÐ²ÑĭÑģ Ð¾ÐºÐ¾\nĠØ§ÙĦØŃ Ø¯ÙĬØ«\näºº ãĤĤ\nd Ã¼ÄŁÃ¼\n×Ļ×Ĺ ×ķ×ĵ\nØªØ¹ ÙĦÙĬ\nØªØ¹ÙĦÙĬ ÙĤ\nl Ã¶\nØªØŃ Ø¯ÙĬØ¯\nÐ½ ÐµÐ³Ð¾\nĠÑĥÐ´ Ð¾Ð±\nĠ×ľ ×ŀ×Ļ\nĠ×¨ ×ķ×¦×Ļ×Ŀ\nĠØ¬ Ø§Ø¡\nĠ×ĳ ×ĸ×ŀ×Ł\nà¸Ľà¸ģ à¸ķà¸´\né«ĺ ãģı\nà¸Ľà¸¥ à¸²\nĠart Ä±k\nĠbug Ã¼n\n×§ ×ł×Ļ\nĠkho Ã¡\nĠÙħ Ø±ÙĥØ²\nĠìŀĲ ê¸°\nØ¯Ø± Ø¬Ø©\n×ŀ×© ×¨×ĵ\nĠgi áº¥y\nĠch Ã³ng\n×§ ×¤\nÙĬØ¨ Ø©\nĠczÄĻ sto\nÐ² Ð°Ð»Ð¸\nÙĥ Ø¨\nìŁ ģ\nà¸ª à¸ļà¸²à¸¢\nà¸Ľà¸£à¸°à¸Ĭà¸² à¸Ĭà¸Ļ\n×Ĵ ×ķ×£\nëŁ ī\nãģ® ãģĵãģ¨\nà¸¥ à¸Ń\nĠngh á»ī\nåŃĲ ãģ©\nåŃĲãģ© ãĤĤ\nà¹Ħà¸Ķ à¹īà¸Ńà¸¢\nà¹Ħà¸Ķà¹īà¸Ńà¸¢ à¹Īà¸²à¸ĩ\n×ĵ ×¢\nĠØ§ÙĦØª Ùī\nĠÑģÐ¾Ð² ÐµÑĤ\nĠqual itÃł\nåĩº ãģĹ\nĠÑĢÑĥÐº Ð¾Ð²\nĠÑĢÑĥÐºÐ¾Ð² Ð¾Ð´\nà¸£à¸²à¸¢ à¸¥à¸°à¹Ģà¸Ńà¸µà¸¢à¸Ķ\nãģªãģĭ ãģªãģĭ\nê¸° ê´Ģ\nĠ×Ĺ ×ķ×©\nĠ×Ĺ×ķ×© ×ĳ\nÐ» Ð¾ÑĤ\nà¸Ļà¸° à¸Ħà¸£à¸±à¸ļ\n×§×ĳ ×ķ×¦×Ķ\nĠth Ã¡i\nĠ×© ×ĳ×Ķ\nĠÑĪ ÐºÐ¾Ð»\nĠÙĦ ÙĥÙĦ\nà¹ĥà¸Ļ à¸Ĭà¹Īà¸§à¸ĩ\nĠÙħ ÙĥØ§ÙĨ\në ķĮ\nĠc áº£i\nĠCh ÃŃ\nÑĥÑĩ Ð°\nìĿ µ\nĠx áº£y\nà¸Ĭà¸Ļ à¸´à¸Ķ\nĠc áºŃu\nÐº ÑĢÐ¾Ð²\nss Ã©\nĠÙĨ ÙĪØ¹\nĠÐ¢ Ð°\nØ® ÙħØ³\n×¤×ķ×¡ ×ĺ\nĠm áº¯c\nĠÄĳ em\nà¸ģà¸²à¸£ à¹ĥà¸Ĭà¹ī\n×¨ ×ķ×¡\nĠÐĽ Ðµ\nĠth á»Ń\nà¸£à¹Īà¸²à¸ĩ à¸ģà¸²à¸¢\nÃ¼z Ã¼\næĹ¥æľ¬ ãģ®\nê³¼ ìłķ\n×© ×Ļ×Ĳ\nĠìŀĪ ê³ł\n×ĳ ×ķ×ľ\nìķ ħ\nĠÙĪØ§ÙĦ Ø§\nĠÐĽ Ð¸\nĠÐ²Ñģ Ñĳ\nĠuÅ¼ytk ow\n×Ĺ ×ķ×ľ\nØ± ÙģØ¶\nĠson uÃ§\nãģĦ ãģ¾ãģĽãĤĵ\nìĤ¬ ìĹħ\nëĪ Ħ\nÑĤ ÐµÐº\nĠud ziaÅĤ\nÐ» ÐµÐ·\nĠ×Ķ×Ļ ×Ļ×ª×Ļ\nãĤīãĤĮ ãģ¦\nÙħØ³ Ø¤ÙĪÙĦ\nØ± Ø§Ø±\nÑĤ Ð°Ð½\nĠÄĳ Ãło\nĠ×¨ ×ķ×ĳ\nĠ×ĳ×©×ĳ ×Ļ×ľ\nä»ĬåĽŀ ãģ¯\nãĤ¸ ãĥ¥\nĠ×¢ ×ĳ×¨\nãģĽ ãģ¦\nÐ¿ Ð¾Ð»ÑĮ\nak lÄ±\nĠk ÃŃnh\nØ¯ Øª\nÐ»Ð¾Ð¶ ÐµÐ½Ð¸Ðµ\nĠØ§ÙĦÙħ Øµ\nĠØ§ÙĦÙħØµ Ø±ÙĬ\nà¸Īà¸£à¸´à¸ĩ à¹Ĩ\nĠØ§ÙĦØ´Ø± ÙĥØ©\nĠÄĳ á»ı\nãĥĽ ãĥĨ\nãĥĽãĥĨ ãĥ«\nÑį ÐºÐ¾Ð½\nÑįÐºÐ¾Ð½ Ð¾Ð¼\nĠÙĪ Ø¹ÙĨ\nĠ×ª ×ł\nĠ×ª×ł ×Ĳ×Ļ\nĠØ§ÙĦØ¯ÙĪÙĦ ÙĬØ©\nĠì§Ģ ìĹŃ\nãģ§ãģĻ ãģĭ\nĠÐ² Ð°ÑĢÐ¸\nĠÐ²Ð°ÑĢÐ¸ Ð°Ð½ÑĤ\nĠØ§ÙĦØ¹ Ø±Ø¨\nÐµÐ» Ð°\nĠt Æ°á»Ľng\nsk Äħ\nĠm áº·c\nà¸ª à¸±à¸ģ\nãĥĵ ãĥ¼\nĠ×ĳ ×Ĵ×ľ\nĠ×ĳ×Ĵ×ľ ×ľ\nãĥķãĤ¡ ãĥ³\n×ĳ ×Ļ×¦\n×ĳ×Ļ×¦ ×ķ×¢\nÐ»Ð¸ ÑģÑĤ\nà¸Ł à¸¸\nà¸Łà¸¸ à¸ķ\nà¸Łà¸¸à¸ķ à¸ļà¸Ńà¸¥\nà¸Ŀ à¹Īà¸²à¸¢\nìŀĲ ìĿĺ\nĠØ³ ÙĪÙģ\nĠ×© ×Ķ×ª\nĠê± ¸\n×¢ ×ĳ×ķ×ĵ\nãģĻãĤĭ ãģĵãģ¨ãģĮ\nĠÑĩÐ° ÑģÑĤÑĮ\nãĤ¢ ãĥ¡ãĥª\nãĤ¢ãĥ¡ãĥª ãĤ«\nĠtak Ä±m\nĠs á»Ľ\nĠsá»Ľ m\n×©×¨ ×Ķ\nè¨Ģ ãģĨ\nÐ» Ð°Ð½\nì» ¤\n×Ľ ×ł×Ķ\nÙĪÙģ ÙĬ\níĹ Ī\nlu ÄŁu\nĠëĮĢ íķ´\nĠ×ľ×ĳ ×Ļ×ª\nĠ×Ķ×¨×Ĳ×© ×ķ×ł×Ķ\nØµ Ùħ\nĠsÃ¶ yled\nĠsÃ¶yled i\nà¸Ľ à¸²à¸ģ\nĠard Ä±ndan\nãģĪ ãģŁ\nà¸Ĺà¸±à¹Īà¸§ à¹Ħà¸Ľ\nĠ×ł×ķ×¡ ×£\nÐ± Ð¾Ð»ÑĮ\nãĤĵãģ§ãģĻ ãģĳãģ©\nĠÐ»Ð¸ÑĪ ÑĮ\nĠ×ĳ ×Ĳ×Ļ\nĠÐ±Ñĭ ÑģÑĤÑĢÐ¾\nà¸ª à¸±à¸Ļ\nĠ×ĳ ×¤×ł×Ļ\nÐ» ÐµÑĩ\nĠØ§ÙĦØ® Ø¨Ø±\nĠsÃ³ c\nĠth Ãº\nĠÐ¿ ÑıÑĤ\nãģĬ é¡ĺ\nãģĬé¡ĺ ãģĦ\nÑĤ Ð¸Ð½\nãģ«ãģ¤ãģĦãģ¦ ãģ¯\n×¤ ×Ł\nĠÐ´Ð² ÑĥÑħ\nà¸į à¸µà¹Ī\nà¸įà¸µà¹Ī à¸Ľ\nà¸įà¸µà¹Īà¸Ľ à¸¸\nà¸įà¸µà¹Īà¸Ľà¸¸ à¹Īà¸Ļ\nÐ¾Ð¿ ÐµÑĢ\nĠØ§ÙĦØ¨ Ø´Ø±\nĠØ§ÙĦÙħ Ø§ÙĦ\nÄ±yor uz\nØªØŃ ÙħÙĬÙĦ\nà¸ģ à¸°\néĸĵ ãģ«\n×Ĺ ×ķ×©\nĠNg uyÃªn\nãģĦãģ¦ ãģĦãĤĭ\nÐ´Ñĥ ÑĪ\n×© ×¤×¢\nÑĪ Ñĥ\nå®Ł éļĽãģ«\nĠÑĢÐ°Ð¹ Ð¾Ð½\nĠCh á»ī\nÙĨ ØµØ±\nĠìļ ´\nĠìļ´ ìĺģ\nĠ×Ķ×ĵ ×Ļ×Ł\nØŃØ¯ Ø¯\nØ± Ø²\nĠØ§ÙĦØ¯ Ùħ\nĠPh Ã¡p\nÑĤ ÑģÑı\nè¦ĭ ãģĪ\nĠti á»ĥu\nĠs á»Ńa\nÐ° ÑİÑĤÑģÑı\nĠB Ã¡\nĠ×ķ ×Ľ×ľ\nÐ ĸ\nÑĪ Ð¸Ð¼\nìĿ´ ëĬĶ\nÐ» ÐµÐ²\nd Ä±k\nĠprÃ©s ente\nĠara Ã§\nØµØ¯ ÙĤ\nĠÐ¿Ð¾Ð¼ Ð¾Ð³\nĠØ§ÙĦØ´Ø± ÙĤ\nĠÙĪØ§ÙĦ Ø°ÙĬ\nØ±ÙĬ Ø§\n×ĳ ×ł×ķ×ª\nĠng á»ĵi\n×¨ ×ķ×¤\n×¨×ķ×¤ ×Ĳ\nĠth áº¥p\nãĤĦ ãģ¯\nãĤĦãģ¯ ãĤĬ\nĠØ§ÙĦØ¬ Ø¯ÙĬØ¯Ø©\néĿŀå¸¸ ãģ«\nÙĬÙĦ ÙĬ\nìª ½\nØªØ¹ Ø§ÙħÙĦ\nãģł ãģ¨æĢĿãģĦãģ¾ãģĻ\nÙħ Ùħ\nÐ¸ÑĤÐµ Ð»Ð¸\nãĤµãĤ¤ ãĤº\nØ§Ø¯ Ø§Øª\nĠØ§ÙĦÙħ Ø§ÙĦÙĬØ©\nÙĥØ§Øª Ø¨\nÐº Ð»Ð¸\nÐ²ÐµÑĢ Ñħ\nÐ½Ð¸ Ñĩ\nĠ×ľ×¢ ×ĳ×ķ×ĵ\n×ľ ×Ļ×Ķ\nØŃ Ùİ\nãĤ¤ ãĥĻ\nãĤ¤ãĥĻ ãĥ³ãĥĪ\nĠ×ª ×Ĵ×ķ×ĳ×ķ×ª\nÑĦ Ð¾Ð½\nĠÐ´ÑĢÑĥÐ³ Ð¸Ðµ\n×Ĳ ×ĸ×ķ×¨\nĠper Ã²\nìķ ŀ\nåĢŁ ãĤĬ\n×¨ ×¦×Ļ\n×Ĳ ×ĸ\nÐ°Ð»ÑĮ Ð½ÑĭÑħ\nĠê²ĥ ìľ¼ë¡ľ\nĠÐ¿ÑĢÐ°Ð² Ð¾\nĠØ§ÙĦØ£ Ø±Ø¶\nà¹Ģà¸Ĺ à¸Ħ\nà¹Ģà¸Ĺà¸Ħ à¹Ĥà¸Ļ\nà¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļ à¹Ĥà¸¥\nà¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļà¹Ĥà¸¥ à¸¢\nà¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļà¹Ĥà¸¥à¸¢ à¸µ\n×¦ ×¨×Ļ\nĠÐļ Ñĥ\nÄ±l ma\næ±º ãĤģ\nØ§ ÙĪ\nĠ×ĵ ×§×ķ×ª\nà¸Ħà¸£ à¸¹\nĠÙħØ³Øª ÙĪÙī\nà¸Ľ à¹īà¸Ńà¸ĩ\nà¸Ľà¹īà¸Ńà¸ĩ à¸ģà¸±à¸Ļ\n×ĵ ×ķ×ŀ×Ķ\nĠÑģ ÐµÐ³Ð¾Ð´Ð½Ñı\nØ³ ÙĪÙĤ\n×¨×Ĺ ×ķ×ĳ\nĠØ¥ Ø¯Ø§Ø±Ø©\nÑħ Ð¾Ð¶\néģİ ãģİ\nà¸Ħ à¸Ń\nÐ½Ñĥ Ð»\n×ķ×Ľ ×Ķ\nÙĪ Ø§ÙģÙĤ\n×Ľ×ľ ×ľ\nĠ×Ķ ×ĵ×ķ\nĠl Ä©nh\nĠkh áº£o\n×Ĳ×ŀ ×¦×¢\në¨ ¸\nĠ×Ľ ×Ļ×¦\nĠ×Ľ×Ļ×¦ ×ĵ\nĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ\nà¸«à¸§ à¸±à¸ĩ\nãĥĩ ãĤ¶\nãĥĩãĤ¶ ãĤ¤ãĥ³\nĠng á»Ŀ\nä¸Ń ãģ«\nà¸ģà¸¥à¸±à¸ļ à¸¡à¸²\nØ¬Ùħ Ø§ÙĦ\nà¸Ķà¸±à¸ĩ à¸ģà¸¥à¹Īà¸²à¸§\nØ³ ÙĥÙĨ\nØ³ ÙĨ\nĠÃ¶zellik le\nÐ· ÐµÑĢ\nrz ÄĻ\n×ŀ ×ķ×¨×Ķ\nĠl áº¡\n×ŀ ×Ļ×ł×Ļ\n×¨ ×Ļ×ª\nãģĿãĤĮ ãģĮ\nãģĭ ãĤĮ\nĠÙĬÙħÙĥÙĨ Ùĥ\nÃ¶ff entlich\nÐ³ Ð°Ð½\nĠØ§ÙĦØŃ ÙĦ\nĠmiÄĻd zy\nĠÑĩÐ° ÑģÑĤÐ¸\nujÄħ cy\nĠbaÄŁ lÄ±\nĠiliÅŁ ki\nÙģ Ø§Ø¡\nãĥª ãĥ³ãĤ°\nĠhÃ£ ng\nĠÐºÐ¾Ð½ÑĤ ÑĢ\nĠÐºÐ¾Ð½ÑĤÑĢ Ð¾Ð»\nÐº Ð¾Ð¿\n×© ×Ļ×¢\n×©×Ļ×¢ ×ķ×¨\nĠÐĴ Ð°ÑĪ\nĠ×Ķ ×ª×§\nÙħÙĨ Ø¹\nĠpolÃŃt ico\nĠÐ³ Ð¾Ð»Ð¾Ð²\nĠØ¥ ÙĬ\nØ¥ ÙĨØªØ§Ø¬\nà¸ļ à¸´\nĠÐ³ Ð¾Ð²Ð¾ÑĢ\nĠÐ³Ð¾Ð²Ð¾ÑĢ Ð¸ÑĤ\nĠph á»ķ\nĠÑģÐµÐ¼ ÑĮ\nãģ¯ ãģĤãĤĬãģ¾ãģĽãĤĵ\nĠÙĪ Ø§Ø³Øª\n×ŀ×© ×¤×ĺ\nÐ· ÐµÐ¼\n×ŀ×ĵ ×ĳ×¨\nĠíģ °\nĠìĿ´ ë²Ī\nê°Ģ ëĬĶ\nĠì§Ģ ìĽĲ\nĠca ÅĤy\nĠgeli ÅŁtir\nÑģÐº Ð¾Ðµ\npos Ã©\nĠkh Ã´\nà¸ķà¸´à¸Ķ à¸ķà¸²à¸¡\nmiss Ã£o\nĠ×ľ ×ŀ×¨\nĠ×ľ×ŀ×¨ ×ķ×ª\nĠb Ã³\nà¸ķà¸£à¸§à¸Ī à¸ªà¸Ńà¸ļ\nĠngh á»ģ\nĠÐ± Ð¸Ð·\nĠÐ±Ð¸Ð· Ð½ÐµÑģ\nÑģÑĤ ÐµÑĢ\nÙĪ Ùİ\næ¥½ ãģĹãģ\næ¥½ãģĹãģ ¿\nãģĵãĤĮ ãģĭãĤī\nwiÄħ zan\nà¸ª à¸Ńà¸Ļ\nÙħ ÙĪØ±\n×ł×ĵ ×ľ\nĠ×Ķ×Ĳ ×ĵ×Ŀ\nĠÐ¼ Ð¾Ð»Ð¾Ð´\nØŃ ÙħØ§\nØŃÙħØ§ ÙĬØ©\nÑģÑĤ ÑĢÐ°Ð½\nĠbu á»ķi\n×ª×Ļ ×Ļ×Ŀ\nabile ceÄŁi\nL Ä°\nà¹Ģà¸¢ à¸Ńà¸°\nà¸Ī à¸£\nØ³ ÙĥØ§ÙĨ\nà¸Ļ à¸±à¸Ķ\nĠm áº¥y\nĠÐĳ Ð°\ns ÅĤaw\nĠÙģ ÙĦØ§\nĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð¹\nĠÐ¿Ð»Ð¾ Ñī\nĠÐ¿Ð»Ð¾Ñī Ð°Ð´\nãĤĤ ãģĤãĤĬ\nsz czÄĻ\n×Ļ×¤ ×ķ\n×©×ŀ ×ª\nowa ÅĤa\nĠn Ã´ng\n×¦×ĳ ×Ĳ\nĠìŀĪ ìĹĪ\nãģ¾ ãģ¨\nãģ¾ãģ¨ ãĤģ\nÙĤÙĪ Ø§Øª\nãģ¿ ãĤĵãģª\nĠ×Ľ ×ŀ×¢×ĺ\nĠx Ãºc\nï¼ Ĩ\nr ÄĻ\nrÄĻ cz\n×ĵ ×ŀ×Ļ\nĠt áºŃn\nà¸Ķ à¸§à¸ĩ\nê²½ ìłľ\nÐ¿ ÑĥÑĤ\nØ£ Ø±Ø¨Ø¹\nĠ×ŀ ×©×ª×ŀ×©\nãĤ¿ãĤ¤ ãĥĹ\nĠìłľ ê°Ģ\nĠ×ľ ×Ľ×Ł\nĠÐ¾Ð±ÑĢÐ°Ð· Ð¾Ð¼\nÙĬÙĥ Ø§\nw ÅĤ\nwÅĤ asn\nĠØ§ÙĦÙĪØ·ÙĨ ÙĬØ©\nØ¨ÙĬ Ø¨\n×ŀ ×ľ×Ļ\nÐº ÑĢÐ°ÑĤ\nê¸° ìĹĲ\nÙĤ Ø§Ø¯\nĠÙĦ Ø¯Ùī\nà¸Ħà¸§à¸²à¸¡ à¸£à¸¹à¹ī\n×ŀ×ĵ×Ļ×ł ×Ļ×ķ×ª\nê² ¨\nĠíĺ Ħìŀ¬\n×© ×ª×Ļ\nÐ¼ Ð¾Ð»\nĠmÃ¡ i\nà¸ŀà¸´ à¸¡\nà¸ŀà¸´à¸¡ à¸ŀ\nà¸ŀà¸´à¸¡à¸ŀ à¹Į\nà¸«à¸¥ à¸§à¸ĩ\nĠx uyÃªn\n×Ĺ ×¡×¨\nØ±ÙĪ ÙĨ\nãģĿãģĨ ãģĦãģĨ\nãģĿãĤĮ ãģŀ\nãģĿãĤĮãģŀ ãĤĮ\nĠ×Ľ ×©×Ķ\nÐŁ ÑĢÐ°Ð²\n×ŀ×ĳ ×¦×¢\nØ¹ Ø±Ø¨\nĠbÃ¼ yÃ¼\n×¤×Ļ×ª ×ķ×Ĺ\nà¸Ī à¸ļ\nĠØ£ ÙĥØ¨Ø±\n×©×¨ ×ª\n×ŀ×Ľ ×©×Ļ×¨\nĠÙĪ ÙħØ¹\nãģ® ãģŁãĤģãģ«\nà¸Ļ à¸±à¸ļ\nì° °\nãĥª ãĥķãĤ©\nãĥªãĥķãĤ© ãĥ¼ãĥł\nĠc Æ°á»Ŀng\nĠìłĢ íĿ¬\nÙħÙĨØ¸ ÙħØ©\nĠhiÃ§ bir\nãģ§ãģ¯ ãģĤãĤĬãģ¾ãģĽãĤĵ\nà¸£ à¸Ńà¸¢\nëĲľ ëĭ¤\nãģĻãģĲ ãģ«\nÐº Ð»Ð°\nĠÃ¼rÃ¼n ler\nĠki á»ĥu\nĠëĤĺ ëĬĶ\nÑĤ ÐºÐ¸\nÑģ Ð¸Ð¼\nĠchá»ī nh\nãĤĤ ãģªãģĦ\nà¸¨ à¸£à¸µ\næĽ¿ ãģĪ\nta ÅŁ\nĠØ¨ ÙĥÙĦ\nĠ×ķ ×Ļ×©\nvis Ã£o\nä¼ Ŀ\nä¼Ŀ ãģĪ\nÙĦ Ø¯\n×ľ ×Ļ×ŀ\n×ľ×Ļ×ŀ ×ķ×ĵ\nt Ã³ria\nØ¯ Ùĳ\nØ§Ùħ Ø±\nĠê·¸ëłĩ ê²Į\nĠmateria ÅĤ\nà¸Ĺ à¸£à¸²\nà¸Ĺà¸£à¸² à¸ļ\nãģ®æĸ¹ ãģĮ\nãģ¦ ãģįãģŁ\nØ¶ Øº\nØ¶Øº Ø·\nĠÙĬ Ø¹ÙĨÙĬ\nÐµÐ» Ð¾\n×Ĳ×Ķ ×ĳ×Ķ\n×¢ ×ŀ\nÅŁ Ä±k\nìŀĲ ëĬĶ\nãĤ¿ ãĥ³\nĠb áºŃt\n×ŀ×©×¤ ×Ĺ×Ķ\nÐº ÑĢÐ¸\nÐ± Ð»Ð¸\nà¸ªà¸± à¸ķ\nà¸ªà¸±à¸ķ à¸§à¹Į\nĠØ³ÙĨ ÙĪØ§Øª\nĠPh Æ°Æ¡ng\nãģ¦ãģĹãģ¾ ãģ£ãģŁ\nãģª ãģľ\nĠ×ĳ×Ĳ ×ķ\nĠc Ã¡n\nØ³ Ø¬ÙĦ\nĠl áº½\nãĤ± ãĥ¼ãĤ¹\nĠ×§ ×Ļ×ĳ×ľ\nà¸ļà¸Ĺ à¸Ħà¸§à¸²à¸¡\nĠ×ķ ×Ľ×Ł\nĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð² Ð»ÐµÐ½\nĠn á»ĳi\nĠcoment Ã¡rio\nÐµÐ½Ð¸ ÐµÐ¼\nĠtá» ı\nl Ãł\nĠ×©×Ķ ×Ļ×Ķ\nÑģÐ» Ð°Ð²\nĠØ§ÙĦ ÙĪÙĦØ§\nĠØ§ÙĦÙĪÙĦØ§ ÙĬØ§Øª\nÙĦØ¬ ÙĨØ©\n×§×ķ×¨ ×Ĳ\nÐ±Ñĭ ÑĤ\nĠì ¦\nĠì¦ ī\nãģ§ãģĻ ãģĹ\nà¸«à¸£à¸·à¸Ń à¹Ħà¸¡à¹Ī\nÐ·Ð° ÑīÐ¸ÑĤ\nÙģÙĦ Ø³Ø·ÙĬÙĨ\nĠmi á»ħn\nà¹Ģà¸¢ à¹ĩà¸Ļ\nĠÃ§alÄ±ÅŁ an\n×Ļ×Ĵ ×Ķ\nĠE ÄŁ\nĠEÄŁ itim\nãĥĥãĤ· ãĥ¥\nĠÐ¾Ð¿ Ñĭ\nĠÐ¾Ð¿Ñĭ ÑĤ\nØ± Øº\nØ±Øº Ø¨\nĠÑģÐ²Ð¾ Ð¸Ñħ\nà¸Ľà¸£à¸° à¸ķ\nà¸Ľà¸£à¸°à¸ķ à¸¹\nĠ×ŀ×Ĳ ×ĵ\n×Ľ ×ķ×ł×Ļ×Ŀ\nà¸Ļ à¸µ\nĠÐ²Ñĭ ÑħÐ¾Ð´\nãģ®ä¸Ń ãģ«\n×¤ ×ľ×Ĳ\nĠÙĪ ÙĦÙĬØ³\n×¤×ķ×¨ ×¡\n×¤×ķ×¨×¡ ×Ŀ\nÙħ Ø³ÙĦÙħ\nĠng Ã´i\n×ĵ ×ŀ×ķ×ª\nãĤĴä½¿ ãģ£ãģ¦\nĠÐ¿Ð¾Ð¼Ð¾Ñī ÑĮÑİ\nØ£ Ø³Ø±\nÐ±Ð» Ð¾Ðº\nÙĤ Ùĩ\nãģĹãģ¾ ãģĦ\nãģ¨ ãģĹãģŁ\nĠÐ¿ ÐµÑģ\nãĥī ãĥ«\n×Ĺ ×Ŀ\nãģĹãģª ãģĮãĤī\nĠÐŁ ÑĢÐµÐ´\nãĥģãĤ§ ãĥĥãĤ¯\nå¼· ãģĦ\n×© ×Ļ×¨×ķ×ª\nÐ´ Ð°ÐµÑĤ\n×Ļ×ĳ ×ķ\nĠgen Ã§\nÐ¸Ð» Ð°Ñģ\nÐ¸Ð»Ð°Ñģ ÑĮ\nĠØ¨ÙĦ Ø¯\næĤ ª\næĤª ãģĦ\nĠ×ŀ ×©×ª\næ§ĺ ãĢħ\næ§ĺãĢħ ãģª\nà¸ĺà¸£à¸£à¸¡ à¸Ĭà¸²à¸ķà¸´\nĠÙĥ Ø§ÙħÙĦ\nĠØ§ÙĦØ³ Ùħ\n×ĳ×ĺ ×Ļ×Ĺ\nc Ã¡\ng Ãªncia\nãĤ¹ãĤ¿ ãĥ¼\nà¸Ĺà¸³ à¸ģà¸²à¸£\n×Ļ×ľ ×ª\nĠ×Ļ ×ķ×¦×Ĳ\nw Ã³j\nà¸ļà¸¸ à¸Ħ\nà¸ļà¸¸à¸Ħ à¸Ħà¸¥\nØ¹ ØªÙħ\nØ¹ØªÙħ Ø¯\nãģĿãĤĮ ãģ«\nĠØ§ÙĦØª Ø§Ø±ÙĬØ®\nÙĤØ± Ø§Ø¡\nĠyÃ¶net im\n×§ ×©×¨\nĠÑģÐ¿ Ð¾ÑĢÑĤ\nĠ×¨×Ĳ×© ×ķ×Ł\nĠseÃ± al\nĠch áº¯n\nçĦ¡ ãģĦ\nĠÐ´Ð¾ÑģÑĤ Ð°ÑĤ\nĠÐ´Ð¾ÑģÑĤÐ°ÑĤ Ð¾ÑĩÐ½Ð¾\nĠÃ¡ gua\nà¸ģà¸£ à¸ĵ\nà¸ģà¸£à¸ĵ à¸µ\nĠ×ŀ×© ×ķ\nĠtr áº£i\në² Į\nujÄħ cych\nÙģØ± Ø¯\nà¹ĥ à¸ģà¸¥\nà¹ĥà¸ģà¸¥ à¹ī\nãĤĭ ãģ®ãģ¯\n×¨×ķ ×ķ×Ĺ\nÙĨ Ùĥ\nĠØ§ÙĦÙĨ ÙĤ\nãģ®ãģ§ ãģĹãĤĩãģĨ\nãģ®ãģ§ãģĹãĤĩãģĨ ãģĭ\nÙħ Ø¹Ø±Ùģ\nÙħØ¹Ø±Ùģ Ø©\nÑĥÑī Ðµ\nĠ×ĳ×¢ ×Ļ×§×¨\nØª ØµÙĦ\nĠ×Ķ×Ĳ ×¨\nĠ×Ķ×Ĳ×¨ ×¥\nĠÅŀ i\nà¸Ĥà¸² à¸Ķ\níŀ ĺ\nãģªãĤĵ ãģ¨\nĠìĤ¬ëŀ ĳ\nl Ã¼ÄŁÃ¼\nØ¨ Ø§Ø¡\nĠØ§ÙĦØ¢ Ø®Ø±\nĠfam ÃŃlia\nĠTh Ã¡ng\nÑī ÐµÐ½Ð¸Ñı\nãĤ¯ ãĥŃ\nĠTh á»©\næĽ¸ ãģį\nÐµÐ½ Ð½Ð¾Ð¹\nìŀ ¡\nÐ±Ð» Ð°Ð³\nÐ±Ð»Ð°Ð³ Ð¾\nÐ¿ Ð¾Ð²\nà¹ģ à¸§\nà¸ĩ à¸Ħà¹Į\nà¸Ńà¸±à¸Ļ à¸Ķà¸±à¸ļ\nãģĤ ãģĴ\nà¸£ à¹īà¸²à¸¢\nÃ¼n Ã¼n\nĠ×Ļ×Ľ×ķ×ľ ×Ķ\nÐ· Ð¾Ð½\nĠÐľ Ð¸\nÐ¼Ð°ÑĤ ÐµÑĢÐ¸Ð°Ð»\nĠë³´ ë©´\nØŃÙģ Ø¸\nÃª Ìģ\nãģ« ãģĻãĤĭ\nĠ×ª ×Ĳ\nĠ×Ķ×¡ ×ķ\nĠÑģÑĤ Ð¾ÑĢ\nĠÑģÑĤÐ¾ÑĢ Ð¾Ð½\nãĥĪ ãĥĥãĥĹ\nÅĤo ÅĽÄĩ\nëħ ¼\nëĵ Ŀ\nĠÙĪØ§ÙĦ Ø¹\nì¶ Ķ\nĠ×Ļ×¦ ×Ĳ\nĠÑĢÐ°Ð· Ð´ÐµÐ»\nÐ°Ð»ÑĮ Ð½Ð°Ñı\n×Ĳ×ł ×©×Ļ\nspo ÅĤ\nspoÅĤ ec\nspoÅĤec zn\nØ¥ Ø¹ÙĦ\nØ¥Ø¹ÙĦ Ø§ÙĨ\nÙĤÙĪ Ùī\níķĺë©´ ìĦľ\nØªØ· ÙĪØ±\nĠsi Ãªu\ná»Ľ t\nÐ´ Ð²Ð¸\nÐ´Ð²Ð¸ Ð¶\nĠqu áº§n\nk Ä±l\nĠÐ¿ÑĢÐ¸ Ð·Ð½Ð°\nĠH Ã£\nĠHÃ£ y\nĠØ¨Ø§ÙĦ Øª\nman Ä±n\nãĤ« ãĥ«\nĠk á»·\n×§ ×ľ×Ļ\nëĲĺ ì§Ģ\nØªØ¹ÙĦ Ùħ\nìĭľ ìĦ¤\nìĭ ¶\níĺ ¼\nÙĥ ÙĬÙģ\nå£² ãĤĬ\nà¸§à¸´ à¸Ĭà¸²\nÐ± Ð°Ð»\nĠØ£ ØŃ\nĠÐ´Ð¾Ð»Ð¶ ÐµÐ½\nà¸£à¸² à¸ĩ\nà¸£à¸²à¸ĩ à¸§à¸±\nà¸£à¸²à¸ĩà¸§à¸± à¸¥\nÙħ Ø§Ø¡\nØ¬ Ø§Ø±\nÅ ļ\nĠ×ŀ×Ĳ ×ĸ\n×¨ ×ŀ×Ķ\nãģĭãĤĤãģĹãĤĮ ãģªãģĦ\nÃ©t ude\nczÄħ c\nĠg Ã³r\n×ł×¡ ×Ķ\nÙħ ÙĬØ¯\nĠÐŁ ÐµÑĢÐµ\nØ£ Ø®Ø±\nãģĿãģ® å¾Į\nà¹Ģà¸Ķà¸µà¸¢à¸§ à¸ģà¸±à¸Ļ\n×ŀ ×Ĵ×ķ\n×ŀ×Ĵ×ķ ×ķ×Ł\nÐ´ Ð¾Ð²\nmas Ä±na\n×¢ ×ł×Ķ\nãĤ± ãĥĥãĥĪ\n×¡ ×¢\n×¡×¢ ×Ļ×£\nĠT Æ°\nĠt Ã³c\níĻľ ëıĻ\nĠÐŀ Ð´\nĠÐŀÐ´ Ð½Ð°ÐºÐ¾\nĠdol ayÄ±\nØ¤ ÙĥØ¯\nê³Ħ íļį\n×ľ ×¨\nÐ² ÐµÑĩ\nĠkh á»Łi\nĠth á»§y\n×ĵ ×Ł\nà¸£ à¸ģ\nà¸ļà¸± à¸ķà¸£\nà¹Ģà¸ģ à¹Īà¸²\nĠØ§ÙĦØ« Ø§ÙĦ\nĠØ§ÙĦØ«Ø§ÙĦ Ø«\nĠpod rÃ¡\n×¢×¨ ×Ļ\nÙĨØ¬ Ø§ØŃ\nĠkh áº¯c\nì¸ ¡\nÄ° M\nãĤ» ãĥĥãĥĪ\nÅ¼ enia\nĠ×ľ×Ĺ ×ĳ×¨\ner Ãł\nì ´Ī\nĠkÃ¼ Ã§\nĠkÃ¼Ã§ Ã¼k\nØ§Øª ÙĩÙħ\nà¸ĭ à¹Į\nÙħØ´Ø§Ø± ÙĥØ©\nĠØ§ÙĦ Ø¨Ø·\nĠd Ã¢y\nÐµÐ½ Ð½ÑĭÐ¼\nà¸Ĺà¸µà¹Ī à¹Ħà¸¡à¹Ī\nÙĤ Ùİ\nĠv Æ°á»£t\nĠtr Ã¬\nĠwp ÅĤyw\nA Åŀ\nÐ· Ð¾\nĠØ§ÙĦØ³ ÙĬØ¯\nà¸Ĺà¸° à¹Ģà¸¥\nĠÑģÐ¾Ð´ÐµÑĢÐ¶ Ð°\nØ¹ Ø·ÙĬ\nĠØ§ÙĦØ¹ ÙĨ\nèĢħ ãģĮ\nà¹Ģ à¸«à¸Ļ\nà¹Ģà¸«à¸Ļ à¸·à¸Ń\nĠb ÃŃ\nĠÃ¼zer inden\nĠV Å©\nĠnu Ã´i\nÙĨ Ùħ\nÐ°Ð»ÑĮ Ð½Ð¾Ð³Ð¾\n×¢ ×Ļ×Ł\nØŃ Ø¶Ø±\nĠÐ¾ÑĤ Ð´ÐµÐ»\nëª ĩ\nìķ ¡\nĠÙĦØ¯ÙĬ Ùĩ\nìĻ ľ\nĠse ktÃ¶r\nĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶ Ð½Ð¾\nĠÐĶ Ð¶\nĠh Ã´\näºĭ ãģĮ\nÐ¸ÑĢÐ¾Ð² Ð°Ð½Ð¸Ðµ\nÐ°Ð»ÑĮ Ð½Ð¾Ð¹\nĠë¯¸ êµŃ\nØ± ØŃÙĦ\nĠÑįÐº Ñģ\nÐ¿ÑĢÐ°Ð² Ð»Ñı\nĠnh á»Ŀ\nĠÄĳ áº©\nĠÄĳáº© y\nÙģ ÙĥØ±\nĠÙĪØ£ Ø¶Ø§Ùģ\nãĥĲ ãĤ¹\n×ª×ķ×Ľ ×ł×Ļ×ª\nÑĤÐµÐ» ÐµÐ¹\nĠØ¥ÙĦÙĬ Ùĩ\nãģ¨è¨Ģ ãģ£ãģ¦\nĠÐ´Ð² Ðµ\nĠch áº¥p\nĠL Ã¶\nà¸Ħà¸¥ à¸´\nà¸Ħà¸¥à¸´ à¸Ľ\nĠØ³ ÙĪØ±\nĠØ³ÙĪØ± ÙĬØ§\n×ŀ×Ĺ ×ķ\nst Ã¤\nÐ´ Ð¾Ð±\nĠni á»ĩm\nãģ® å¤§\n×¤×¨×ķ ×Ļ×§\n×¤×¨×ķ×Ļ×§ ×ĺ\nĠCh Ã¢u\nĠ×ŀ×Ķ ×Ŀ\nÑģÐº Ð¸Ð¼\nĠÐ¿Ð¾Ð»ÑĥÑĩ Ð¸ÑĤÑĮ\nÙĬ ÙĪÙħ\nØ« ÙĪØ±\n×¤×ķ×ľ ×Ļ×ĺ\n×¤×ķ×ľ×Ļ×ĺ ×Ļ\nĠÐ¼ÐµÑģÑı ÑĨ\nåħ¨ ãģ¦\nĠØ§ÙĦÙħ Ø¬ÙĦØ³\nĠØ§ÙĦØª Ø§ÙĦÙĬ\nĠ×Ĺ ×¨\nåĲĳ ãģĳ\n×Ľ ×ŀ×Ķ\nÐ± ÐµÐ´\nØ£ Ø¹Ø¶\nØ£Ø¹Ø¶ Ø§Ø¡\nÙĪÙĦ Ø¯\nà¸§à¹Īà¸² à¸Īà¸°\nĠb Ã¡nh\nà¸Ļà¸´ à¸¢\nà¸Ļà¸´à¸¢ à¸¡\nà¸Ľà¸£à¸° à¸ģà¸±à¸Ļ\nÑģÑĤÐ°Ð² Ð¸ÑĤÑĮ\nà¸ŀ à¸Ļà¸±à¸Ļ\nĠÑį ÑĦÑĦ\nĠÑįÑĦÑĦ ÐµÐºÑĤÐ¸Ð²\nĠÐ°Ð² ÑĤÐ¾ÑĢ\nĠÄĲ Äĥng\nĠth Æ°á»Łng\nãĤĴ æĦŁãģĺ\nà¸ģà¸±à¸ļ à¸ģà¸²à¸£\nå¾Į ãģ«\nĠya ÄŁ\nØ³Øª Ø§ÙĨ\nĠli á»ģn\nãģĦ ãģ¾\ni Ãªu\nà¹Ĥà¸Ķ à¸Ļ\nĠÙĦ Ø°ÙĦÙĥ\nà¹Ĥà¸£à¸ĩ à¹Ģà¸£à¸µà¸¢à¸Ļ\n×¦ ×Ļ×Ĵ\nĠØ§ÙĦÙħ Ø¹ÙĦÙĪÙħØ§Øª\nç§ģ ãģŁãģ¡\nà¸Ĺà¸µà¹Ī à¸Ħà¸¸à¸ĵ\nãģ«ãģª ãģ£ãģ¦ãģĦãĤĭ\n×ŀ×ĵ ×Ļ×ł×Ķ\n×¡ ×Ľ×Ŀ\nĠÐ² Ð½Ðµ\nà¸ŀ à¸Ļà¸±à¸ģà¸ĩà¸²à¸Ļ\nÑĢ ÐµÐ¹\nà¹Ģà¸Īà¹īà¸² à¸«à¸Ļà¹īà¸²à¸Ĺà¸µà¹Ī\nĠHi á»ĩn\nĠmÃ©d ico\nĠØªØŃ ÙĤÙĬÙĤ\nÑĮ ÑĤÐµ\nmiÅŁ ti\nÙĤÙĬ Ø§Ø¯Ø©\nãĤı ãģĭãĤĬ\nà¸¡à¸² à¸Īà¸²à¸ģ\nëħ Ģ\nãģ«éĸ¢ ãģĻãĤĭ\n×Ĳ×¨×Ĵ ×ķ×Ł\nm Ã¨tre\nĠ×¢×¦ ×ŀ×Ļ\nĠCh Ãºa\nà¸£à¸¹à¹ī à¸Ī\nà¸£à¸¹à¹īà¸Ī à¸±à¸ģ\nì£ Ħ\nëĭ µ\nà¹ģà¸Ĺ à¹ī\nĠgeÃ§ en\nĠlan Ã§a\nĠØ§ÙĦ Ø¨ØŃØ«\n×ĵ ×ŀ×ķ\nãģ¯ ãģĺ\nãģ¯ãģĺ ãĤģ\nĠdÃ¶n Ã¼ÅŁ\nè¿ĳ ãģı\nà¹Ģà¸ª à¸¡\nà¹Ģà¸ªà¸¡ à¸Ń\nëĿ ½\nĠÃ¼ Ã§\ná» ŀ\nÑĪ Ð°Ñı\nà¸Ĺ à¸£\nØŃ ÙĤÙĬÙĤØ©\nà¸Ĥà¸Ńà¸ĩ à¸ģà¸²à¸£\nĠë¬´ ìĹĩ\nĠ×Ķ ×Ľ×¨\nĠØ§ÙĦØµ ÙĬÙĨ\nĠÐ»Ñİ Ð´Ð¸\nà¸ķ à¸²à¸¢\nØ¨ ÙĪÙĦ\nĠvi Ãªm\nĠthi á»ĩu\nà¸ģ à¸Ķ\nĠ×ľ ×ĵ×ĳ×¨\n×¤ ×ł×Ķ\n×Ĳ×¨ ×ĳ×¢\nØ³ Ùī\nĠØ§ÙĦØ³ÙĬ Ø§Ø³\nĠØ§ÙĦØ³ÙĬØ§Ø³ ÙĬØ©\nyd Ä±\nÙĪØŃØ¯ Ø©\nĠÐ´ÐµÑıÑĤÐµÐ»ÑĮ Ð½Ð¾ÑģÑĤÐ¸\nĠ×ķ×Ķ ×ŀ\nÐ¿ ÐµÑĩ\nÐ¿ÐµÑĩ Ð°ÑĤ\nÐ¸ÑĢÐ¾Ð² Ð°Ð½Ð¸Ñı\nĠÑģ Ð¾Ð³\nĠÑģÐ¾Ð³ Ð»Ð°Ñģ\nĠ×Ľ ×ĵ\nĠ×Ľ×ĵ ×Ĳ×Ļ\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°ÑĤÑĮ\n×¡ ×¤×ķ×¨×ĺ\nĠil Ã§e\nexp Ã©rience\nĠTh á»Ŀi\nÄ° K\nà¹Ħà¸Ł à¸Łà¹īà¸²\nëĵ¤ ìĹĲê²Į\nà¸Ľà¸£à¸° à¹Ģà¸ł\nà¸Ľà¸£à¸°à¹Ģà¸ł à¸Ĺ\nĠmÃ¼ mk\nĠmÃ¼mk Ã¼n\nĠ×Ĳ×ķ×ª ×ł×ķ\nìĦ± ìĿĦ\nĠìĿ´ ìľł\nØ²ÙĬ Ø§Ø±Ø©\nĠolduk Ã§a\nr Ã³b\nĠØ£ ÙĨØ§\nĠ×Ķ ×ĳ×Ļ\nÑģ ÐµÐ½\n×¢ ×Ļ×§×¨\n×Ļ×ĵ ×ķ×¢\nd zÄħ\nÙħ Ø¹ÙĦÙĪÙħØ§Øª\nØ´ Ø§Ø¨\nĠpar Ã§a\nà¸Ļà¸° à¸Ħà¸°\nØ¨ Ø§Ø³\nĠÑĤÐ¾ÑĢ Ð³\nĠÑĤÐ¾ÑĢÐ³ Ð¾Ð²\nĠ×Ĺ ×ĵ×¨\n×Ľ ×¨×ĺ\n×Ľ×¨×ĺ ×Ļ×¡\nĠA yrÄ±ca\nÃªÌ £\nìľ ¨\nĠÑĤÐ°Ðº Ð¸Ðµ\nĠ×ŀ×¦ ×ķ×Ļ\nãĥ©ãĥ³ ãĤŃãĥ³ãĤ°\n×©×Ļ×ķ ×ķ×§\nåīį ãģ®\nĠB áº£o\nÑī Ñĥ\næĹ© ãģı\nĠPh Ã²ng\nà¸ŀà¸£à¸° à¸£à¸²à¸Ĭ\n×¤ ×Ĺ×ķ×ª\nĠÐ³ Ð»\nĠÐ³Ð» Ð°Ð·\nà¸Ĺ à¹Īà¸²\nĠd áº¡y\nÑĢ Ð¾ÑģÑĤ\nà¹Ĥà¸Ķà¸¢ à¹Ģà¸īà¸ŀà¸²à¸°\nĠqu áºŃn\nĠ×Ĺ×ĳ×¨ ×ķ×ª\nm Ãªme\nmÄ±ÅŁ tÄ±\nĠØ§ÙĦØª Ø¯Ø§ÙĪÙĦ\nĠn áº¡n\nĠ×Ķ ×ĵ×Ļ\nĠØ§ÙĦØ· Ø±ÙĬÙĤ\n×Ĵ ×ķ×ª\nĠ×Ķ ×ĵ×¨×ļ\nujÄħ ce\nĠch á»¯\nãĤĤãģ® ãģ®\në° Ľ\nãģķãĤĵ ãģ¯\nĠyard Ä±m\nĠØ§ÙĦØ¹ Ùħ\nĠì§Ħ íĸī\nĠ×Ļ ×Ĺ\nĠ×Ļ×Ĺ ×¡×Ļ\nĠØ§ÙĦÙħ Ø¯ÙĬÙĨØ©\nĠc Ãº\nà¸ģà¸µ à¸¬\nà¸ģà¸µà¸¬ à¸²\nĠni Ãªn\nmis iÃ³n\n×ł×Ļ×¡ ×Ļ\n×ł×Ļ×¡×Ļ ×ķ×Ł\nĠÐ²Ð¾Ð· ÑĢÐ°ÑģÑĤ\nĠ×¢×ķ×© ×Ķ\nĠÙħ Ø¯ÙĬØ±\nÑı ÑģÑĮ\nØŃ Ø¬Ùħ\níĻĺ ê²½\nĠØ§ÙĦØ£ Ø®Ø±Ùī\nu ÃŁer\nĠØ§ÙĦØ¹Ø§ÙĦÙħ ÙĬØ©\nĠNg á»įc\nêµĲ íļĮ\nä¸Ĭ ãģ§\n×Ļ×Ķ ×ķ×ĵ\n×Ļ×Ķ×ķ×ĵ ×Ļ×Ŀ\nÙħØ³ Ø§Ø¹Ø¯Ø©\nĠÐ¶Ð¸Ð· Ð½ÑĮ\nĠÐ¿Ð¾ÑĤ Ð¾Ð¼Ñĥ\nĠØ§ÙĦÙħ ÙħÙĦ\nĠØ§ÙĦÙħÙħÙĦ ÙĥØ©\nĠG Ã¶r\nØ± ÙĲ\n×ŀ×§ ×ķ×ŀ×ķ×ª\nåĩºæĿ¥ ãĤĭ\nÑĦ ÑĤ\nĠìĿ´ ìłľ\nĠÑĢ ÐµÐ¼\nĠÑĢÐµÐ¼ Ð¾Ð½ÑĤ\n×ª ×ķ×ļ\næĻĤ ãģ¯\nãĤīãĤĮ ãģªãģĦ\nalt Ä±\nå®¶ ãģ®\nĠØ§ÙĦØ¥ Ø¹ÙĦØ§Ùħ\në¦¬ ëĬĶ\nãģĭãĤī ãģ¯\nĠH áº¡\nãģĤ ãģ®\n×ĵ×Ļ ×ķ×Ł\nØ±ÙĬ Ø³\nĠsoci etÃł\nĠØ§ÙĦÙĥ Ø¨ÙĬØ±\nĠ×ĳ ×ŀ×¡\nĠ×ĳ×ŀ×¡ ×Ĵ×¨\nĠ×ĳ×ŀ×¡×Ĵ×¨ ×ª\nĠìŀĪ ìľ¼ë©°\nĠn áº·ng\nÙĩ Ùī\nĠB Ãł\n×ŀ×¨ ×ķ\nĠj ÄĻ\nĠjÄĻ zy\nĠjÄĻzy k\nĠ×Ľ ×ŀ×ķ×ĳ×Ł\n×¢ ×ľ×Ķ\nà¸Ĺà¸µà¹Ī à¹Ħà¸Ķà¹ī\nãģ¾ ãģĹãĤĩãģĨ\n×ŀ×¡ ×¤×¨\nÐ¢ Ðŀ\nØ³ÙĬØ§Ø³ Ø©\nĠÐºÐ°Ð¶Ð´ ÑĭÐ¹\në² ł\nt Ä±m\ny á»ĩn\nà¸£ à¸µà¹Ī\nĠÐ´ÐµÑĤ ÑģÐº\nà¸§à¸´à¸ĺà¸µ à¸ģà¸²à¸£\nm Ã³wi\n×ĺ×¢ ×Ŀ\n×Ķ×¦×ľ ×Ĺ×Ķ\nØ¶ ÙĬÙģ\nĠÑħÐ¾ÑĤ Ñı\nãĤĵãģ§ ãģĦãĤĭ\nà¸Ħà¸² à¸Ķ\nà¸Ħà¸£ à¸ļ\nĠÐº ÑĥÑĢÑģ\nĠbaÅŁ arÄ±\n×ĳ×¨ ×ķ\nÙĬØ¹ Ø©\nĠÐĿ Ñĥ\nà¸Ħà¸§à¸²à¸¡ à¹Ģà¸Ľà¹ĩà¸Ļ\nĠ×ľ ×ŀ×©×ľ\nĠì¢ĭ ìĿĢ\nÙħØ¤Ø³ Ø³\nÙħØ¤Ø³Ø³ Ø§Øª\nĠprÃ©c is\nĠth áº£o\nà¸ģà¹ĩ à¸Ħà¸·à¸Ń\nĠ×© ×Ľ×ľ\nfÃ¼hr ung\nãģĦ ãģ§\nà¹ģà¸¥à¸° à¸¡à¸µ\nà¸ģà¹ĩ à¸¡à¸µ\nĠ×© ×©\nÐ¼ ÐµÐ»\nĠÐºÐ½Ð¸ Ð³\nĠØ¨Ø§ÙĦ ÙĨ\nĠØ¨Ø§ÙĦÙĨ Ø³Ø¨Ø©\nĠald Ä±\nÑĤ Ð°Ð¹\nĠ×Ĺ×ĵ ×©×Ļ×Ŀ\nå®Ł ãģ¯\nØ¹ ÙĪØ§\nĠìĿĺ ë¯¸\nÐ¸Ð· Ð¼\nÑĢÐ°Ð±Ð¾ÑĤ Ð°ÑĤÑĮ\nÙģ Øµ\nĠ×ĳ×ł ×ķ×¡×£\nãģ¨ãģĹãģ¦ ãĤĤ\nà¹Ģà¸Ľà¹ĩà¸Ļ à¸Ĺà¸µà¹Ī\nĠÑģÐ»ÐµÐ´ ÑĥÐµÑĤ\nèĢĥãģĪ ãģ¦\nĠ×Ľ ×Ļ×ķ×Ŀ\nÑģÑĤ Ñĭ\n×Ľ×ľ×Ľ ×ľ×Ļ\næµģ ãĤĮ\nãĤĴ ãģ¤ãģĳ\nÑĩ Ð°ÑĤ\n×Ļ×Ľ ×ķ×Ł\n×Ļ×¨ ×Ļ\nlarÄ± yla\nãĤ¤ ãĥ¡\nãĤ¤ãĥ¡ ãĥ¼ãĤ¸\n×ł×ĸ ×§\nĠci Ã²\nĠs Ä±n\nĠsÄ±n Ä±r\nà¸Ļ à¸Ħà¸£\nÐº Ð°ÑĤ\nĠl á»Ĺi\nëŀ Į\nØªÙģ Ø§Øµ\nØªÙģØ§Øµ ÙĬÙĦ\nëĨ ĵ\nĠÙħ Ø¶\nil miÅŁ\nØ¨Ø§Ø± Ùĥ\nÐĿ Ðĺ\nĠth áº©m\nĠ×Ĳ×ķ×ª ×ļ\nĠÐ¿ÑĢÐ¸Ð½ Ð¸Ð¼\nĠÐ¿ÑĢÐ¸Ð½Ð¸Ð¼ Ð°\nĠyÃ¶ nt\nĠyÃ¶nt em\nĠ×ŀ×§ ×ĳ×ľ\nĠktÃ³ rego\nê· Ģ\nØ´Ø± Ùģ\nØ¯ Ø§Ùħ\nãģĦãĤį ãģĦãĤį\nĠAl Ã©m\nĠgÃ¶r Ã¼\nĠgÃ¶rÃ¼ nt\nĠgÃ¶rÃ¼nt Ã¼\nØ¯ Ø³\nÑĪ ÐºÐ¸\nÐ³ ÑĢÐ°Ð´\nĠl áº¡c\nĠs á»¯a\nãĤīãĤĮ ãģ¾ãģĻ\no Ãłi\nÑī ÐµÐ½\nãģĭ ãģªãģĦ\nĠÐ¿ Ð¾Ð¿\nĠÐ¿Ð¾Ð¿ Ñĥ\nĠÐ¿Ð¾Ð¿Ñĥ Ð»ÑıÑĢ\nĠØ§ÙĦÙħ ÙĪÙĤØ¹\nrÃ¤ g\nï¼ ¡\níķ Ħ\nãĤĴè¦ĭ ãĤĭ\nØ§Ùħ Ø§\nĠØ§ÙĦØŃ Ø±Ø¨\nĠÐŁ Ð°\nĠ×ľ ×Ĳ×ª×¨\nĠt á»ĳc\n×ĳ ×ľ×Ķ\nØ± Ø¦ÙĬØ³\nÐ² Ñĥ\nÙĬ Ø¯ÙĬ\nÐºÐ°Ð· Ð°Ð½\nĠ×Ĺ ×©×ĳ×ķ×Ł\nh Ã´tel\n×¢ ×ķ×ł×Ķ\nØ¨ ÙĨÙĬ\n×ŀ ×ķ×ľ\nĠÐ´ Ð½Ñı\néĽ£ ãģĹãģĦ\nÐ²ÐµÐ´ ÐµÐ½Ð¸Ñı\nĠ×ķ ×ŀ×ª\nÐ½ Ð°Ð¿ÑĢÐ¸Ð¼ÐµÑĢ\nÙĤ Ø§Ø¨ÙĦ\nĠrÃ©sult at\nĠÑĢÐ°Ð·Ð²Ð¸ÑĤ Ð¸Ñı\nØ± Ùĳ\nìłĦ ë¬¸\nĠØ§ÙĦÙħ Ø²ÙĬØ¯\nĠìľĦ íķ´ìĦľ\nëĨ į\níĻ ķ\nĠThi áº¿t\níĮ ¨\nmalÄ± dÄ±r\nĠcz ÅĤ\nĠczÅĤ owie\nĠczÅĤowie k\nĠÙĦ Ø¨ÙĨ\nĠÙĦØ¨ÙĨ Ø§ÙĨ\nÃ¼s Ã¼\nãģªãĤĵ ãģł\nĠÅ¼yc ie\nĠÑħÐ¾ÑĢÐ¾ÑĪ Ð¾\næĸ¹ ãģ«\nëĭ¤ ë©´\nÐ¸ÑĩÐµÑģ ÐºÐ°Ñı\n×¢×¨ ×Ļ×Ľ\n×¢×¨×Ļ×Ľ ×ª\nãģ¾ãģĽãĤĵ ãģ§ãģĹãģŁ\nĠÑģÐ¾Ð± Ð¾Ð¹\nĠg á»Ĺ\nĠÐ´ÐµÐ» Ð°ÑĤÑĮ\nda Äĩ\nÐ°ÑĢ Ð°\nrÃ³Å¼ ni\nà¹Ģà¸¥ à¸µà¹ī\nà¹Ģà¸¥à¸µà¹ī à¸¢\nà¹Ģà¸¥à¸µà¹īà¸¢ à¸ĩ\nà¸Ŀ à¸²à¸ģ\nĠØª ÙĤ\nĠØªÙĤ Ø¯ÙĬ\nĠØªÙĤØ¯ÙĬ Ùħ\nà¸«à¸Ļ à¸¸à¹Īà¸¡\nĠmÃ¼ cade\nĠmÃ¼cade le\nì§Ģ ë¥¼\nãĤ¤ ãĤ¹\nĠØ£ Ø³Ø§Ø³\njÄħce go\nĠÅŁ eh\nÐ½ ÑĤÐµÑĢ\nÑĨÐ¸ Ñİ\nï» »\nÑİÑī ÐµÐ³Ð¾\nà¹Ĥà¸Ľà¸£ à¹ģ\nà¹Ĥà¸Ľà¸£à¹ģ à¸ģà¸£à¸¡\nĠmie Äĩ\nØŃÙĥÙĪÙħ Ø©\nãģ§ãģĹãģŁ ãģĮ\n×Ļ×¡ ×Ķ\nãĤĤãģ® ãĤĴ\nĠ×ŀ ×Ĳ×ª\nà¸ªà¸¸à¸Ķ à¸Ĺà¹īà¸²à¸¢\nĠc Å©\nÙĨ Ø³Ø¨\nĠÐ¿ÑĢ Ð¾Ñĩ\nĠÐ´ Ð½ÐµÐ¹\nĠÑįÑĤÐ¸ Ñħ\n×ľ ×ŀ×ª\nÐ½Ñı Ñı\nÑį Ðº\nĠì§Ģ ëĤľ\nà¸¡à¸«à¸² à¸§à¸´à¸Ĺà¸¢à¸²\nà¸¡à¸«à¸²à¸§à¸´à¸Ĺà¸¢à¸² à¸¥\nà¸¡à¸«à¸²à¸§à¸´à¸Ĺà¸¢à¸²à¸¥ à¸±à¸¢\nd Ã£o\nĠMÃ¡ y\nĠêµŃ ê°Ģ\nà¸ļà¸¸ à¸£à¸µ\n×Ĵ ×Ļ×ľ\nĠÑĤÑĭ ÑģÑı\nĠÑĤÑĭÑģÑı Ñĩ\nÙģ Ùĥ\nĠÐĺ Ñģ\nè¡Į ãĤıãĤĮ\n×¤×¨ ×ĵ\nãģ¤ ãģį\nà¸Ħà¸£ à¸Ńà¸ļ\nà¸Ħà¸£à¸Ńà¸ļ à¸Ħà¸£à¸±à¸§\nà¸Ĥà¸¶à¹īà¸Ļ à¸¡à¸²\nä»ĬæĹ¥ ãģ¯\nĠìĤ¬ëŀĮ ìĿ´\n×¢×¦ ×ŀ×Ķ\nÐ¿ Ð¾ÑĢ\nĠK á»³\nĠ Æ¡n\nĠth Äĥm\nÙģ Ø§ÙĤ\nãģļ ãģ«\nĠ×ľ ×§×¨\nĠ×ľ×§×¨ ×ķ×Ĳ\nØ§Ùģ ÙĬØ©\nÙħ ÙİØ§\nÐ³ Ð°ÑĢ\nØµ ÙĦØ§\nØµÙĦØ§ Ø©\nĠ×ŀ ×ĸ×Ķ\nlÄ± ÄŁÄ±nÄ±\nĠ×Ĳ ×Ļ×ł×Ķ\nÐº ÑĢÐ¾\nĠng Æ°Æ¡i\nĠÐ² Ð½Ð¸Ð¼\nĠÐ²Ð½Ð¸Ð¼ Ð°Ð½Ð¸Ðµ\njÄħ cy\nÙĢÙĢÙĢÙĢ ÙĢ\nÑģ ÑħÐ¾Ð´\nãģªãĤĵ ãģĭ\n×ŀ ×Ļ×ľ\nĠ×Ķ×Ĳ ×Ĺ\nãĤı ãģªãģĦ\nØ¹ Ø³ÙĥØ±\nĠìĦ¸ ê³Ħ\nĠÑĩ ÐµÐ³Ð¾\nĠÑģÑĢÐµÐ´ ÑģÑĤÐ²Ð°\nĠÐł Ð°Ñģ\nãģª ãģģ\nÙĨ ÙģØ³\n×¨×Ļ ×ķ×Ł\nÑģ ÑĥÐ´\nĠìĿ¸ ê°Ħ\nĠØ§ÙĦÙħ ÙĤØ¨ÙĦ\nÙĨ Ø¹Ùħ\nØªÙĪ ÙģØ±\n×© ×ĳ×¢\nÄ± lm\nÄ±lm Ä±ÅŁ\nĠ×ľ×ª ×ª\nØªØµ Ùģ\n×Ķ×¤ ×ķ×ļ\nà¹ĥà¸Ļ à¸Ľà¸µ\nìĿ´ ê³ł\nÙģ ÙĪØ²\nà¸ľà¸¥ à¸ĩà¸²à¸Ļ\nĠGi Ã¡o\nà¸ļà¸Ńà¸ģ à¸§à¹Īà¸²\nĠd Ä±ÅŁ\nĠdÄ±ÅŁ Ä±nda\nì£ ½\nĠdzie ÅĦ\nÐº ÑĨÐ¸Ð¸\nÐ¸ ÑĨÐµ\nãģ® ä¸Ģ\nØ¹ Ø´\nÐ¿ÑĢ ÐµÑģÑģ\nà¸«à¸Ļ à¹Īà¸Ńà¸¢\nà¸¥à¸±à¸ģà¸© à¸ĵà¸°\nĠpossibilit Ãł\nà¹Ħà¸Ķà¹īà¸£à¸±à¸ļ à¸ģà¸²à¸£\nà¸«à¸¢ à¸¸à¸Ķ\nĠphi Ãªn\nçĶŁ ãģ¾ãĤĮ\nØ· ÙĪÙĦ\nÑĦ Ð¸Ð½\nf Ã¼r\nØŃ ÙĬØ§Ø©\níĸ ĪìĬµëĭĪëĭ¤\n×Ľ ×ł×ķ×ª\nà¸Ľà¸£à¸° à¸ª\nà¸Ľà¸£à¸°à¸ª à¸ļ\nà¸Ľà¸£à¸°à¸ªà¸ļ à¸ģà¸²à¸£à¸ĵà¹Į\nëĲĺ ìĹĪ\nĠkaÅ¼ dy\nĠl uyá»ĩn\nĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð· Ð°ÑĨÐ¸Ð¸\nå°ĳ ãģªãģı\nÑģÑĤÑĢÐ¾ ÐµÐ½\nĠtÃ©cn ico\n×§ ×Ķ×ľ\nĠ×ķ×Ĳ ×Ĺ\nĠØ¹ÙĦÙĬ Ùĥ\nÑī ÐµÐ½Ð¸Ðµ\nĠ×Ķ ×Ļ×ľ×ĵ×Ļ×Ŀ\nÙĪØ³ Ø§Ø¦ÙĦ\nĠ×ķ ×Ķ×ª\nØªÙħ ÙĬØ²\nĠÑģ ÐºÐ°Ð·Ð°Ð»\nĠÐ¿Ð¾Ð» Ð¸\nĠ×Ķ×ŀ ×¡\nÙĦÙĳ Ùİ\nÙħØ¤Ø³ Ø³Ø©\nĠ×ŀ ×Ļ×ĵ\nãģ£ ãģ¡\nĠëĦĪ ë¬´\nà¸ŀ à¸µ\nĠt áº·ng\nĠt áº¥n\n×¨ ×©×Ŀ\nĠmÃ©d ica\nĠ×¢ ×ķ×ŀ\nĠ×¢×ķ×ŀ ×ĵ\nÑĦ Ð¾ÑĢ\nÙħØ± Ø©\nĠvat anda\nĠvatanda ÅŁ\nĠÐ´ÐµÐ» Ð¾\nà¸Ļ à¸¡\nãģ¨ åĲĮãģĺ\nÙģ Ùī\nÑģ Ð¾ÑĢ\nĠ×Ķ×¡ ×¨×ĺ\nĠÃ©p oca\nìłķ ì±ħ\nĠÑģÐ²ÑıÐ· Ð°Ð½\nØ¶ Ø±Ø¨\nĠÙĦ ÙĨØ§\nĠuÅ¼y wa\nĠØ§ÙĦØ¬ ÙĬØ´\nÑİ ÑĢ\n×ĳ×¡ ×ķ×£\nĠÐ¼ Ñĥ\nĠÐ¼Ñĥ Ð·ÑĭÐº\nbilit Ã©\nĠma Ã§\nØ³ Ùİ\nØª ÙĦÙĥ\nãģ ¬\nÙĬ ÙĦØ§\nÑĪ Ð»Ð°\nÙĢÙĢ ÙĢ\nĠÐ¾Ð´ Ð½Ð¾Ð¹\nÐ·Ð² Ð°Ð½\nĠÑģ ÑĢÐ°Ð·\nĠÑģÑĢÐ°Ð· Ñĥ\nÙĨ Ø¸Ùħ\nØ±Ø§ Ùĩ\nĠÙĦÙĩ Ø°Ø§\n×Ľ ×ķ×¨\nĠ×Ķ×© ×ĳ×ķ×¢\nĠ×Ķ×© ×ª\nĠQu áº£ng\nãĥ« ãĥ¼\nãģĪ ãģªãģĦ\n×ĺ ×Ĳ\nĠmi á»ģn\nĠPh áºŃt\nĠØ§ÙĦØ³ ÙĪÙĤ\nÄ Ĥ\nĠØ§ÙĦØ¬ ÙħØ¹\nĠØ§ÙĦØ¬ÙħØ¹ Ø©\nÑİÑī ÐµÐ¹\na ÅĤem\nØ¹Øª ÙĤØ¯\nØ£ ÙĦÙħ\nÑģ ÐºÐµ\nĠìĿ´ íķ´\nÙĨØ³ Ø®\nè¨Ģ ãģĦ\nÐ´ Ð¾Ð±Ð°Ð²\nØ³Ø¨ ÙĤ\n×¢×ķ×¨ ×¨\nÑĤÐ¸ Ð¿\nãģĿãģĵ ãģ§\nvis iÃ³n\nØ¹ÙĪØ¯ Ø©\në¨ ¹\n×ŀ ×ĸ×¨×Ĺ\nĠØ¥ ØŃ\nĠ×ľ×ĳ ×Ļ×Ł\nĠ×ľ×¦ ×Ĳ×ª\nĠyard Ä±\nĠyardÄ± mc\nĠyardÄ±mc Ä±\nÄ° Z\n×§ ×¤×Ķ\ntr Ã©\nliÄŁ ini\nÐºÐ»ÑİÑĩ Ð°\nĠÃ¼ret im\nĠa yrÄ±\nĠkiÅŁ iler\nà¸Ħ à¹īà¸Ļ\nà¸Ħà¹īà¸Ļ à¸«à¸²\nĠS á»±\nĠ×Ľ ×¡\nĠ×Ľ×¡ ×£\nĠÑĤÐ°Ðº Ð¸Ñħ\nĠXu Ã¢n\nĠÐ» ÐµÐ³\nĠÐ»ÐµÐ³ ÐºÐ¾\nØ«ÙĤ Ø§ÙģØ©\nÐĿ Ðŀ\nãĤ¹ãĤ¿ ãĥĥ\nãĤ¹ãĤ¿ãĥĥ ãĥķ\nåĲĪ ãģĦ\nĠ×Ķ×© ×Ļ×ŀ×ķ×©\nman Ä±z\nĠÐĴ Ð°Ñģ\ng Ã¼n\nìľĦìĽĲ íļĮ\nĠwsp Ã³ln\nĠÑģÐ² Ð¾Ðµ\ní ĥģ\nà¹Ģà¸Ļ à¸µà¸¢\nÙĪØ¨ Ø©\nÐ² ÑıÐ·\nÄ± dÄ±r\nëĲĺ ìĹĪëĭ¤\nĠdeÄŁi ÅŁtir\nãĤĭ ãģĵãģ¨ãģĮ\nĠ×Ĺ×ĵ ×©×Ķ\nãĤīãĤĮ ãģ¦ãģĦãĤĭ\n×Ĺ×Ļ ×Ļ×ĳ\nĠÐļ Ð°ÑĢ\n×ł×Ļ×ª ×ķ×Ĺ\nĠ×§×ĺ ×Ł\n×¨ ×ĸ\nÙĪ Øº\nèªŃ ãģ¿\nĠØª ÙĤÙĪÙħ\nĠÙĥ Ø§ÙĦ\nà¸Ŀ à¸¶à¸ģ\nĠë°ľ ìĥĿ\nolÃ³g ico\nØ± Ø§Ø¹\nà¹ģà¸ģà¹ī à¹Ħà¸Ĥ\nĠÑĢÐ°Ð±Ð¾ÑĤ Ñĥ\nÙĨÙĳ Ùİ\nà¸Ńà¸¢à¸¹à¹Ī à¸Ĺà¸µà¹Ī\nĠØ§ÙĦØ« Ø§ÙĨÙĬØ©\nĠNh Ã¢n\nÑħ Ð²Ð°ÑĤ\nÃ¶ ne\nĠØ¹ Ø¯Ø©\nà¹ģ à¸ªà¸ĩ\nÑĤ Ð¾Ð¿\nÐ¿ÑĥÑģ ÐºÐ°\nØ´Ø± Ø§Ø¡\nĠÐļ Ð¾Ð¼\nĠ×¤×¢ ×ķ×ľ×Ķ\nìĤ¬ ìĿ´\nìĤ¬ìĿ´ íĬ¸\nè¡Į ãģ£ãģ¦\nĠ×Ķ ×Ķ×ª\nĠÑģÑĤ Ð¾ÑĢÐ¾\nĠÑģÑĤÐ¾ÑĢÐ¾ Ð½Ñĭ\nØ¯Ø± Ø³\nà¸ĭ à¸¹\nà¸ķà¹Ī à¸³\nĠØ£ Ø¨ÙĬ\nÐ¿Ð¾Ð´ Ð¾Ð±\nãģ« ãģ¦\nØ§Ø± ØªÙģØ§Ø¹\nĠÙħ Ø¤\nÐ¸Ðº Ð¾Ð²\nge fÃ¼hrt\nà¸¡à¸·à¸Ń à¸ĸà¸·à¸Ń\nĠÙĦ ÙĤØ¯\nĠØ£ÙĨ Ùĳ\nØ³ÙĬ Ø·Ø±\nãģ¾ãģļ ãģ¯\n×¡ ×ĵ\nÑģÐº Ð¾Ð»ÑĮÐºÐ¾\nãģ¿ãģŁãģĦ ãģª\n×ĵ×¨ ×Ĵ\n×¢ ×Ļ×ĵ\nà¹ĥà¸«à¹ī à¸ļà¸£à¸´à¸ģà¸²à¸£\nĠÐĶ Ð¸\n×ĳ×¢ ×Ļ×ķ×ª\nĠ×Ķ×Ĺ ×ķ\nÐ¿Ð¸Ñģ ÑĮ\nĠØ§ÙĦØ® ÙĦ\nÐ± Ð°Ð²\nĠÄ° lk\nĠØ§ÙĦØ® Ùħ\nĠØ§ÙĦØ®Ùħ ÙĬØ³\nĠÙĬ ÙĤÙĪÙħ\næĻĤ ãģ®\nĠsÅĤ ow\nĠØ£ ÙĩÙħ\nØ®ÙĦ ÙĤ\nĠØ£ ØµØ¨ØŃ\nĠchá»© a\nĠth Ã¡c\nÙģ Ø§ÙĦ\nĠch á»Ŀ\nĠØ§ÙĦØ® Ø§Ø±\nĠØ§ÙĦØ®Ø§Ø± Ø¬\nĠØ§ÙĦØ®Ø§Ø±Ø¬ ÙĬØ©\nØ· Ø§Ø¦Ø±\nĠt Ãł\nĠtÃł u\nà¸ģà¸¥ à¹īà¸Ńà¸ĩ\nĠØ§ÙĦÙħØ± Ø£\nĠØ§ÙĦÙħØ±Ø£ Ø©\nåħ¨ ãģı\nĠÃĸ n\nçļĦ ãģ«ãģ¯\nĠpiÃ¨ ce\n×Ĵ ×Ļ×ĳ\nĠØ§ÙĦ ÙĪØ§ÙĤØ¹\nä»Ĭ ãģ®\nĠØ§ÙĦÙħ ÙĤ\ncz nÄħ\nÙģØ¹ Ø§ÙĦ\nÐµÐ½ Ð½Ð¾Ð³Ð¾\nĠÑĦÐ°Ðº ÑĤ\nìĭł ì²Ń\nĠÐŀ Ð½Ð¸\nĠØ§ÙĦØ¨ÙĦ Ø§Ø¯\nÐ¾Ð² Ð¸Ñĩ\nëı Į\nÑĦ ÑĥÐ½ÐºÑĨÐ¸\nĠìĸ´ ëĬĲ\nãĥķãĤ© ãĥ¼\nd ÃŃ\nÐ¸Ð» Ð¾ÑģÑĮ\nÙħ Ùī\nĠØ§ÙĦØ£ÙħØ±ÙĬ Ùĥ\nĠØ§ÙĦØ£ÙħØ±ÙĬÙĥ ÙĬØ©\n×ĺ ×Ļ×¤×ķ×ľ\níĶĦ ë¡ľê·¸\níĶĦë¡ľê·¸ ëŀ¨\nĠ×© ×ķ×ł×ķ×ª\nØ´ ÙħÙĦ\nĠÐ¿Ð°ÑĢ Ð°\nĠ×Ķ×Ĺ ×ķ×§\nÙĪØ² Ø§Ø±Ø©\nãģ¨ ãģĻãĤĭ\nĠqu áº£ng\nĠaÄŁ Ä±r\nĠØ§ÙĦÙĦ Ø¬\nĠØ§ÙĦÙĦØ¬ ÙĨØ©\nê¸ ´\nĠT Ã¢n\nØ¬ ÙħÙĦ\nÐ´ Ð¾Ð»\nà¹ģà¸ŀ à¸Ĺà¸¢\nà¹ģà¸ŀà¸Ĺà¸¢ à¹Į\nĠ×¨×Ĳ ×©×Ļ\nÑī ÐµÐ¹\nĠÃ§ev re\nĠÐºÐ¾Ð¼Ð¿ Ð»ÐµÐºÑģ\nĠ×ĳ ×ŀ×©×ļ\nĠalt Ä±n\nĠØ£ Ø¹ÙħØ§ÙĦ\nĠÑģÐ²Ð¾ ÐµÐ³Ð¾\nãĤĪ ãģĦ\n×Ĺ×ľ ×Ļ×ĺ\n×ŀ×ł ×¢\nĠ×¨ ×ĳ×Ķ\nĠØ£ÙĬØ¶Ø§ Ùĭ\n×ĸ ×ľ\nĠØ§ÙĦØ³ÙĬ Ø§Ø³ÙĬ\næĢĿ ãģĨ\n×§×¨ ×§\n×§×¨×§ ×¢\nĠØ§ÙĦÙģ Ø±ÙĬÙĤ\nÐ± Ð¸ÑĤ\n×§ ×ł×Ķ\nĠØ¥ ÙĨÙĩ\nĠÐĴ Ð°Ð¼\nÐł Ðŀ\nãĥĪ ãĥª\nå¿ħè¦ģ ãģª\nĠch Ã¢u\nç¶ļ ãģĳ\nĠÃ§Ã¶z Ã¼m\ngÅĤ ow\nØ¹ ÙĤÙĦ\nå£² ãĤĭ\ni áº¿t\nà¸Ĭà¸´ à¹īà¸Ļ\nĠØŃÙĤ ÙĪÙĤ\nØ·ÙĦ Ø¹\nĠÄĳ en\nĠÙĥ Ø§ÙģØ©\nãģ® ãģĶ\nĠë ¬\nĠë¬ ¼\nĠë¬¼ ë¡ł\nĠØ±Ø³ ÙĪÙĦ\nÐ· Ð°Ð¼\nÐ·Ð°Ð¼ ÐµÐ½\nĠkullan Ä±cÄ±\n×¢ ×ķ×ľ\nèī² ãĢħ\nÑĪÐ¸ ÑĢ\nĠ×Ĺ ×©\nĠwy gl\nĠwygl Äħda\n×© ×Ļ×ŀ×ķ×©\nå¿ĺ ãĤĮ\n×¢ ×Ļ×¦×ķ×ĳ\nĠØ§ÙĦØ³ ÙĪØ±ÙĬ\nå°ĳ ãģªãģĦ\nĠÐ¿Ð¾ Ð¸ÑģÐº\nà¸ªà¸³ à¸Ļà¸±à¸ģà¸ĩà¸²à¸Ļ\nĠ×ŀ×¦ ×ĵ\nĠmÃ¼ ÅŁ\nĠmÃ¼ÅŁ ter\nĠmÃ¼ÅŁter i\nĠÙħÙĨ ÙĩÙħ\nà¸ķà¸³ à¹ģ\nà¸ķà¸³à¹ģ à¸«à¸Ļ\nà¸ķà¸³à¹ģà¸«à¸Ļ à¹Īà¸ĩ\nÅĽ mie\nĠ×© ×ł×ª\nĠ×Ķ ×¤×Ļ\n×¤×¨ ×©\n×¢×ĳ×¨ ×Ļ×ª\nà¸ªà¸Ļ à¸±à¸ļ\nà¸ªà¸Ļà¸±à¸ļ à¸ªà¸Ļà¸¸\nà¸ªà¸Ļà¸±à¸ļà¸ªà¸Ļà¸¸ à¸Ļ\nè¨Ģ ãģ£ãģ¦\nà¸ģà¸²à¸£ à¸Īà¸±à¸Ķ\nĠMo Å¼e\nÐ¸Ð· Ð°ÑĨÐ¸Ð¸\ná»© t\nĠÙĪØ¨ Ø¹Ø¯\nĠdeÄŁ ild\nĠdeÄŁild ir\nĠ×ª ×ŀ\nĠ×ŀ×ŀ ×ł×ķ\nè©± ãĤĴ\nĠÑĨ ÐµÐ½Ð°\nĠth Ãºc\n×Ļ×ŀ ×ķ×Ł\nĠB Ã¡o\nãĤĴ åıĸãĤĬ\nå®ī ãģĦ\nĠ×¢×ķ×© ×Ļ×Ŀ\nèĩªåĪĨ ãģĮ\nl Ã©e\nãĤĭ ãģ®ãģ§\nÐ¸ÑĢÑĥ ÐµÑĤ\nãģ¦ ãĤĭ\nØ³Øª Ø±\nĠØ§ÙĦØŃ ÙĬ\n×Ļ×ľ ×ķ×ª\nĠ×Ĺ ×ĳ\nÙĤØ± Ø£\nØªÙħ ÙĥÙĨ\nØ³ Ø§Ø¦ÙĦ\nprÃ¼ f\nãģĭ ãģĳãģ¦\nĠÑģÐ¾Ð± ÑģÑĤÐ²ÐµÐ½Ð½Ð¾\nĠìľĦ íķĺìĹ¬\n×ľ ×Ļ×ĺ\nãģĮ å¤ļãģı\nÙĬØª ÙĩØ§\nç«ĭ ãģ¦\nà¸¡ à¸Ńà¸ļ\nìĭľ ìŀ¥\nÐ¾ÑĢ Ð°\nĠs avaÅŁ\n×ĺ×Ļ×ĳ ×Ļ\n×ĳ ×ł×ķ\nÙħØ§ Ø°Ø§\nê¸° ê°Ħ\nãģªãģ© ãģ§\nĠ×ŀ ×ª×Ĺ×Ļ×ľ\nĠnhi á»ħ\nĠnhiá»ħ m\nÐºÐ° ÑĢ\nÐºÐ°ÑĢ ÑĤ\nĠ×ľ×Ķ ×©×ª×ŀ×©\n×ł ×Ļ×Ĺ\nØ§Ø¯ ÙĬØ©\nà¸£à¸²à¸¢ à¸ĩà¸²à¸Ļ\nĠprzy kÅĤad\nÑī Ð¸Ð¹\nØŃØ¶ ÙĪØ±\nĠh Ã´n\nÃ Ŀ\n×ª ×ķ×¦×Ĳ×ķ×ª\nØ±Ø§Ø¨ Ø·\nĠb áº¿p\nĠÐ¿Ð¾Ð»ÑĥÑĩ Ð¸\nåĩºä¼ļãģĦ ç³»\nà¸Ľà¸¥ à¹Īà¸Ńà¸¢\nĠØ§ÙĦØ´ Ø¨Ø§Ø¨\nØ§Ùĩ ÙĦ\nä»Ĭ ãģ¾ãģ§\nØ±Ø¬ Ø¹\nãĤ¶ ãĥ¼\nÙĤ Ùģ\nĠGro ÃŁ\nĠíļĮ ìĽĲ\nØ§Ø¬ Ø±\nĠ×ĳ×ŀ ×§×¨×Ķ\nĠseg uranÃ§a\nfÃ¼ hl\nãģ¦ ãģĦãģı\nà¸«à¸¡ à¸Ń\nĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð¼\nĠN Äĥm\nĠdÅĤ ugo\nÙħÙĨ ØŃ\n×©×ķ ×ķ×Ļ\nĠØ£ÙĬ Ø§Ùħ\nà¸ª à¸łà¸²à¸ŀ\nr zÄħ\nØ´Ø± ÙĥØ§Øª\nãĤĴ èĢĥãģĪ\nÐ´ Ð°ÑĢ\nà¸Ľà¸£à¸° à¸Ĭà¸¸à¸¡\nĠ×ķ×Ĳ ×ĸ\ni á»ĩn\nĠt Æ°Æ¡i\n×© ×Ļ×Ĺ\nà¸Ń à¹Īà¸Ńà¸Ļ\næĽ¸ ãģĦãģ¦\nĠng á»¯\n×ĳ×Ļ×ĺ ×Ĺ\n×ĳ×Ļ×ĺ×Ĺ ×ķ×Ł\nĠs áºµ\nĠsáºµ n\nì§Ģ ëıĦ\nĠÐ¿ÑĢ ÐµÐ¿\nĠÐ¿ÑĢÐµÐ¿ Ð°ÑĢÐ°ÑĤ\nĠÐ½Ð° ÑĥÑĩ\nĠÃľ nivers\nĠÃľnivers ites\nĠÃľniversites i\nĠ×Ĵ×ĵ ×ķ×ľ×Ķ\nĠ×Ķ ×ł×ª\nĠ×Ķ×ł×ª ×ĳ×¢\nãģ§ãģĤ ãģ£ãģŁ\nĠmies iÄħ\nĠmiesiÄħ c\nÐ³ ÑĢÐ°Ð¼\nÐ³ÑĢÐ°Ð¼ Ð¼\nĠØ¨Ø´ Ø£ÙĨ\nĠÑħ ÑĢ\n×§ ×Ļ×ĵ\n×§×Ļ×ĵ ×ķ×Ŀ\nØ´ ÙĥØ±\nĠ á»ķ\nĠá»ķ n\nãģĮãģĤ ãģ£ãģ¦\nãģķãĤĮ ãģ¾ãģĻ\nĠ×Ĺ ×ķ×ĵ\nĠ×Ĺ×ķ×ĵ ×©×Ļ×Ŀ\nÙħÙĪØ§ Ø¬Ùĩ\nÙħÙĪØ§Ø¬Ùĩ Ø©\nØ£Ø´ Ø®Ø§Øµ\nØ¨ Øº\nà¹Ģà¸£à¸µà¸¢à¸Ļ à¸£à¸¹à¹ī\nãģĹãģ¦ ãģĦãģı\nĠs áº¡n\nå¿ħ ãģļ\n×ł ×Ļ×Ĵ\n×ł×Ļ×Ĵ ×ķ×ĵ\nØ¨Ø§ÙĦ Øº\n×Ĺ ×©×ŀ\n×Ĺ×©×ŀ ×ľ\nĠnap raw\nĠnapraw dÄĻ\nØ´Ùĩ Ø§Ø¯\n×Ĳ ×ķ×Ķ\n×Ĳ×ķ×Ķ ×ĳ\nÐ¸ ÑĨÑĭ\nĠ×Ķ ×¨×Ľ×ĳ\nëŀ ĳ\nĠ×ª ×¢\nĠ×Ķ ×Ļ×©\nĠ×Ķ×Ļ×© ×¨×Ĳ\nĠ×Ķ×Ļ×©×¨×Ĳ ×ľ×Ļ\nØ£ ÙħÙĨ\nÑİÑī Ð°Ñı\nsk Ã³r\nLER Ä°\nĠ×Ķ×Ĳ×Ĺ×¨ ×ķ×Ł\n×¢ ×ł×§\nĠÙĪ ÙĥÙĦ\nãģĵãģĵ ãģ§\nĠqu Ã¡n\nliÄŁ in\nà¸ģà¸İ à¸«à¸¡à¸²à¸¢\nØ· Ùħ\nØ£ Ø¬Ùĩ\nØ£Ø¬Ùĩ Ø²Ø©\nĠEr doÄŁan\nãģ§ ãģĬ\nĠÐ² ÑĢÐ°\nĠÐ²ÑĢÐ° Ñĩ\nĠPh Ã³\nà¸Ĭà¸± à¹Īà¸§\nà¸Ĭà¸±à¹Īà¸§ à¹Ĥà¸¡\nà¸Ĭà¸±à¹Īà¸§à¹Ĥà¸¡ à¸ĩ\nĠph Ãºc\n×Ļ×¤ ×ķ×ª\n×¢×Ļ ×ķ×Ł\nĠduÅ¼ o\nãĥģ ãĥ¼ãĥł\nĠÙĬ Ùİ\nĠÐ·Ð°Ð´ Ð°Ñĩ\nĠ×Ĵ×ĳ×ķ×Ķ ×Ķ\nĠ×Ľ ×Ľ×ľ\nÐ»Ð¾Ð¶ ÐµÐ½\nÃ©t at\nĠng Äĥn\nèµ· ãģį\nĠTi áº¿n\nØµ Ø¹Ø¨\nĠexperi Ãªncia\nØ® Ùħ\nà¸ģà¸²à¸£ à¸Ĺà¸³à¸ĩà¸²à¸Ļ\nØ³ ÙĬØ¯\nĠD á»±\nĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð³Ð¾\nlad Ä±ÄŁÄ±\nĠkh á»ķ\nĠê³Ħ ìĨį\nÑī Ð¸Ðº\nà¸ªà¹Īà¸§à¸Ļ à¸ķà¸±à¸§\nÐ· Ð¾ÑĢ\nÙĨ Ùı\nĠ à¸Ķà¸±à¸ĩ\nĠà¸Ķà¸±à¸ĩ à¸Ļà¸±à¹īà¸Ļ\nĠc áº¥u\nĠÄĳ á»ĳc\nÐ¾ ÑĦ\nĠØ§ÙĦØ£ Ø¹ÙħØ§ÙĦ\nãģªãģı ãģ¦ãĤĤ\n×ķ×Ľ ×Ļ×Ŀ\nà¹ģ à¸Ľ\nĠB Ãªn\nãĥ¯ ãĥ³\nĠgi Ã¡m\nĠÅŀ u\nĠd Ã¡ng\nØ¹ ÙĦÙĬ\nà¹Ģà¸ģ à¸©\nà¹Ģà¸ģà¸© à¸ķà¸£\nÙĪØ¬ Ø¨\nÐ½ Ð½ÑĭÐµ\nÙĤ Ø¶Ø§Ø¡\nà¸Ħà¸§ à¸ļ\nà¸Ħà¸§à¸ļ à¸Ħà¸¸\nà¸Ħà¸§à¸ļà¸Ħà¸¸ à¸¡\nãģ¤ ãģ¤\nĠVi á»ĩc\n×ŀ×ĳ ×ĺ\n×©×Ļ×ª ×ķ×£\nĠÐ² ÐµÐ´ÑĮ\nk aza\nkaza ÅĤ\nà¸ķà¸³ à¸£à¸§à¸Ī\nãĤ¿ ãĥ«\nĠÐ¿Ð¾Ð² Ñĭ\nĠÐ¿Ð¾Ð²Ñĭ ÑĪÐµÐ½\nĠS á»Ł\nĠìĦ¤ ëªħ\nĠÃĩ Ã¼nkÃ¼\nìĥĿ íĻľ\nÖ ¾\nãĤĮ ãģ¦ãģĦãĤĭ\nĠ×ĳ ×¨×Ĳ×©\n×¨ ×ķ×Ĵ\nĠÐ¾ ÑĦÐ¸\nĠÐ¾ÑĦÐ¸ ÑĨÐ¸Ð°Ð»ÑĮÐ½\nĠÑĥ ÑģÑĤÐ°Ð½Ð¾Ð²\nĠÑĥÑģÑĤÐ°Ð½Ð¾Ð² Ð»ÐµÐ½\nĠØ§ÙĦÙħ ØµØ±\nĠØ§ÙĦÙħØµØ± ÙĬØ©\nĠÐŁÐ¾ ÑįÑĤÐ¾Ð¼Ñĥ\nÙĨ ØµÙģ\nĠÙĪØ§ÙĦ ÙĨ\nĠh Ãłi\nà¸Ħ à¸´\nĠApr Ã¨s\nì³ Ĳ\nà¹Ģà¸ĭ à¸µà¸¢\n×ĵ ×ŀ×Ķ\nactiv itÃ©\nà¸Ħà¸´à¸Ķ à¸§à¹Īà¸²\nÑĤ ÑĢÐµÐ½\nà¹Ģ à¸®\nãĥı ãĤ¤\nãģĮ å¢ĹãģĪ\nÐµÐ½ Ð½Ð°Ñı\nĠìĺ¤ ëĬĺ\nãĥ¢ ãĥ³\nĠÐºÐ¾Ð½ ÐµÑĩÐ½Ð¾\nĠÙħÙĤ Ø§Ø¨ÙĦ\ncl Ã©\nĠh Ã¼\nĠth áº³ng\nìłģ ìĿ´\nĠÐĲ Ð»ÐµÐºÑģ\nĠÐĲÐ»ÐµÐºÑģ Ð°Ð½\nĠÐĲÐ»ÐµÐºÑģÐ°Ð½ Ð´ÑĢ\nãĥŀãĥ³ ãĤ·ãĥ§ãĥ³\nãģ²ãģ¨ ãģ¤\nãģª ãģĬ\nà¹Ģà¸Īà¹īà¸² à¸Ĥà¸Ńà¸ĩ\nëĵľ ë¦¬\nØ´ Ø§Ø¡\nĠsaÄŁ lÄ±k\nĠÅŁ imdi\n×Ļ×Ĳ ×ľ\nØªØ£ Ø«ÙĬØ±\nØ£ Ø³Ø¨\nØ£Ø³Ø¨ Ø§Ø¨\nĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½\nÐ» Ð¾Ðº\n×© ×Ļ×ĳ×Ķ\nĠl áº¯m\nĠTr Æ°á»Ľc\nĠ×Ķ×¢ ×ľ\në¦¬ ë¥¼\nĠÑĢ ÐµÐ¶\nĠÑĢÐµÐ¶ Ð¸Ð¼\nint Ã©\nintÃ© gr\n×Ĵ ×ł×Ļ\nĠØ§ÙĦØ´ Ø¹Ø±\nĠmil hÃµes\nĠpeque Ã±o\nãĤ³ ãĥ¼ãĤ¹\n×ķ×Ľ ×Ĺ\nà¹Ģà¸Ĭ à¹īà¸²\nØ´Ø± ÙĤ\nĠh Æ°Æ¡ng\nà¸£à¸±à¸Ĳ à¸ļà¸²à¸¥\nà¸ģà¸¥ à¸²à¸¢\nà¸ģà¸¥à¸²à¸¢ à¹Ģà¸Ľà¹ĩà¸Ļ\nĠÐ¿Ð¾Ð´ ÑħÐ¾Ð´\n×ª×© ×ķ×ĳ×Ķ\nãģıãģª ãģ£ãģ¦\nĠØ§ÙĦØ£Ùħ Ùħ\nĠH á»įc\nĠwspÃ³ÅĤ pr\nĠwspÃ³ÅĤpr ac\nÑĩ ÑĥÐ²\nÑĩÑĥÐ² ÑģÑĤÐ²\nÃŃst ico\nà¹Ģà¸ģ à¸²à¸°\nìĽ Ģ\nĠÐ½Ð°Ð· Ð°Ð´\nãĤĭ ãĤĪãģĨãģ«\nĠÐ¡ Ð¨\nĠÐ¡Ð¨ ÐĲ\nÐ¼ Ð¾Ð½\nĠAs ÃŃ\n×ķ×¨ ×Ĵ\nÐ¿Ð¾Ð»Ð½ ÐµÐ½\n×ŀ×¡ ×ľ\n×ŀ×¡×ľ ×ķ×ľ\nà¹Ģà¸¥à¸·à¸Ń à¸Ķ\nà¹Ģà¸£à¸´à¹Īà¸¡ à¸ķà¹īà¸Ļ\nĠØ§ÙĦØ¥ Ùħ\nĠØ§ÙĦØ¥Ùħ Ø§Ø±Ø§Øª\n×¦×Ķ ×¨\nãĥ¡ãĥª ãĥĥãĥĪ\nĠÐ¿Ð¾ÑĤ Ð¾Ð¼\nÐ² Ð¸Ð·\nĠÙģ ØªØ±Ø©\nå¾Į ãģ®\nÐĿ ÐĲ\n×ŀ×¡ ×¨\nÙĬØ± ÙĬ\npr Ã©\nĠte ÅŁek\nĠteÅŁek kÃ¼r\nĠÃ¶d eme\nØ¯ Ø§ÙĨ\nãģ¾ ãģĹãģ¦\nçĽ® ãģ«\nĠÑĤ ÐµÑĩÐµÐ½Ð¸Ðµ\nl ard\nlard Ä±r\nà¹Ģà¸£à¸² à¸Īà¸°\n×¡ ×¤×Ļ\nĠÙĪÙĥ Ø°ÙĦÙĥ\nĠh Ã¡t\nĠt á»Ļc\nà¸Ħà¸¸ à¸¢\nĠb á»©c\nØŃ ÙĬÙĨ\nèģŀ ãģĦãģ¦\nÙħØ¤ Ø´Ø±\nĠNh Æ°\nĠÐ¼ÐµÐ½ ÐµÐµ\nà¸¥à¸° à¸Ħà¸£\nÑģ Ð¸Ð½\nĠÑĢ ÐµÐº\nĠÑĢÐµÐº Ð»\nĠÑĢÐµÐºÐ» Ð°Ð¼\nĠÙģ ÙĩÙĪ\nĠ×ľ ×ĸ\n×Ļ×ł ×ķ×ª\nĠÅŁ art\nÑģÑĤÐ°Ð² ÐºÐ°\nĠíı¬ íķ¨\nãģ«è¡Į ãģı\nï¼ Ŀ\nĠÐ¿Ð¾Ð·Ð²Ð¾Ð»Ñı ÐµÑĤ\nĠ×ª×ķ×Ľ ×ľ×ķ\nÐ¾Ð² Ð°Ð»\nØµÙĦ Ø©\nĠ×ľ×© ×ł×ķ×ª\nĠÐĺ Ð³ÑĢ\nÙħÙĨØªØ¬ Ø§Øª\nĠsat Ä±ÅŁ\nÑģ ÐºÐ¾\nĠØ§ÙĦØ«ÙĦØ§Ø« Ø§Ø¡\nĠ×Ķ×ĵ×ĳ×¨ ×Ļ×Ŀ\nãģĹãģ¾ ãģĹãĤĩãģĨ\nØ¨ÙĤ Ùī\nåĬĽ ãĤĴ\nĠÃĩ ok\nãĥģ ãĥ¥\nà¹Ģà¸Ĭ à¸·à¹īà¸Ń\nà¸¢à¸¸ à¸Ħ\nà¸¨à¸² à¸¥\nĠ×§×ķ×ĵ ×Ŀ\n×ĸ×¨ ×Ļ×Ŀ\nãģ® åł´åĲĪ\nĠìķĬ ìķĺ\nãģĤãĤĬãģ¾ãģĻ ãģĮ\n×Ĳ ×©×¨\nè¡Į ãģı\nãģ» ãģĭ\næ°Ĺ ãģ«ãģªãĤĭ\nÐ¹ Ð´ÐµÑĤ\níķĺìĺĢ ëĭ¤\nØ³ØªÙħØ± Ø§Ø±\nĠÐŁÑĢ Ðµ\nĠÑģ Ð±Ð¾ÑĢ\nĠìķĦ ë¬´\nç§ģ ãĤĤ\nØ¹ Øµ\nĠÐ½ Ð¸Ñĩ\nĠÐ½Ð¸Ñĩ ÐµÐ³Ð¾\nĠÐ¿ÑĢÐ¸ ÐµÐ¼\n×§ ×ķ×ŀ\nĠìĪĺ ëıĦ\nĠì ¡´\nĠì¡´ ìŀ¬\nĠØ£ Ø«ÙĨ\nĠØ£Ø«ÙĨ Ø§Ø¡\nĠÙĪØ§ÙĦ ØŃ\nãģĮ ãģ§ãģįãĤĭ\nĠ×ª ×Ķ\nĠ×ª×Ķ ×Ļ×Ķ\n×¨ ×Ł\nĠÑģÐ²ÑıÐ· Ð¸\n×Ĵ ×©×ª\nÑģÐ¿ ÐµÐºÑĤ\n×¡ ×ĳ×Ļ×ĳ\n×¡×ĳ×Ļ×ĳ ×Ķ\nĠíķĦìļĶ íķľ\nØª Ø®ØµØµ\nĠÐ¶ Ð¸Ð²\nĠÐ¶Ð¸Ð² Ð¾ÑĤ\nĠMay Ä±s\nØªØ¹ Ø§\nØªØ¹Ø§ ÙĪÙĨ\nĠØ¹ÙĨ ÙĩØ§\nÃ³w ki\nĠØ§ÙĦÙģÙĦØ³Ø·ÙĬÙĨ ÙĬ\nãģłãģĳãģ§ ãģªãģı\nìĿ¸ ì§Ģ\nĠØ§ÙĦØ³ ÙĪØ¯\nĠØ§ÙĦØ³ÙĪØ¯ Ø§ÙĨ\nØ¥Ø¬Ø±Ø§Ø¡ Ø§Øª\nĠkÃ¶ tÃ¼\nĠ×Ļ ×ª×¨\n×Ĵ ×Ļ×©×Ķ\nĠ×¦ ×ķ×¨×ļ\nà¸£à¸ĸ à¸¢\nà¸£à¸ĸà¸¢ à¸Ļà¸ķà¹Į\nÑħ Ð¾ÑĤ\nÐł ÐĲ\nÙĪ Ø·ÙĨ\nĠsay Ä±sÄ±\n×¡ ×Ĺ×¨\nÙħ ÙĪÙĦ\nãĤĴæĮģ ãģ£ãģ¦\nØ¹ Ø§ÙĨ\nĠt á»Ļi\nĠÐ²Ñĭ ÑĪÐµ\nĠt áº§m\nãĥĪ ãĥ¬\n×Ļ×¦ ×ķ\nà¸¡ à¸¸à¸¡\nØ³ ÙĪØ¯\nìłĦ ìŀĲ\nãĤµ ãĥŃãĥ³\nìĤ° ìĹħ\nĠÐ¾ÑģÐ½Ð¾Ð² Ð°Ð½\nØ® ÙģØ¶\n×¨×¦ ×Ķ\nØ¨ÙĬ Ø¶\n×ķÖ ¹\n×¡×Ļ ×Ļ×¢\nĠ×© ×Ĳ×Ļ\nĠØ§ÙĦÙĤØ± Ø¢ÙĨ\nĠÐ¢Ð°Ðº Ð¶Ðµ\n×ŀ×© ×ŀ×¢×ķ×ª\nØ³ ÙĩÙĦ\nĠ×Ķ ×ł×Ķ\nãĤĴ ãģĹãģ¦ãģĦãĤĭ\n×Ļ ×Ļ×¡\n×Ķ ×ķ×Ĳ\nĠB ÃŃ\nĠÐ¼Ð°Ð» Ð¾\nĠëĶ°ëĿ¼ ìĦľ\nĠ×¨ ×Ĺ×ĳ\nãģĮ é«ĺãģĦ\nÙĪ Ø§Ø³\nìĤ ¼\n×ł ×¢\nãģ£ ãģ¡ãĤĥ\nĠT Ã¼m\nà¸Ńà¸µà¸ģ à¸Ķà¹īà¸§à¸¢\nãģĹãģ¦ ãģıãģłãģķãģĦ\nÙĨØ´ Ø§Ø·\nãĥĹ ãĥ©ãĥ³\nÐ°Ð»Ð¸ ÑģÑĮ\n×ĵ ×ľ×ª\nĠwc zeÅĽ\nĠwczeÅĽ niej\nĠÑįÑĤ Ð¸Ð¼\nĠthá»ĭ t\nà¸ļ à¸±à¸į\nà¸ļà¸±à¸į à¸Ĭà¸µ\nãģļ ãģ£ãģ¨\nÑĢ Ð¸Ð½\nĠswo jÄħ\níķĺëĬĶ ëį°\nĠë§Įëĵ¤ ìĸ´\nØªØ´ Ùĥ\nØªØ´Ùĥ ÙĬÙĦ\nØ§Ø¦ Ùĩ\nĠ×ľ×¤ ×Ĺ×ķ×ª\nãĥĭ ãĥ¥\nãĥĭãĥ¥ ãĥ¼ãĤ¹\n×Ľ×Ĳ ×Ł\nãģ§ãģį ãģŁ\nÐ·Ð² Ð¾Ð½\nĠsta ÅĤ\n×Ĺ×ĳ×¨ ×ª×Ļ\nĠØ£ Ø¹ÙĦÙĨ\nà¹ģà¸ļà¸ļ à¸Ļà¸µà¹ī\nØ¨Ø¯ Ø¡\nãĤģ ãģŁ\nĠ×ŀ×© ×ŀ×¢×ķ×ª\nĠ×ŀ×©×ŀ×¢×ķ×ª ×Ļ\nÃ¶r Ã¼\nĠh áº¡nh\nz Ã¤hl\nĠL Ã½\nĠ×ĳ ×Ķ×ª\nĠ×ĳ×Ķ×ª ×Ĳ×Ŀ\nÐ± Ð°ÑĢ\nì¦ Ī\nä»ĬåĽŀ ãģ®\nĠy Ã¼\nĠyÃ¼ ks\nĠyÃ¼ks el\nãĤ½ ãĥ¼\nãģĤ ãĤĮ\n×ª ×ľ×ŀ×Ļ×ĵ\nãģ¤ ãģª\n×ĳ ×ł×Ļ×Ŀ\nĠx áº¿p\nĠÐ¼ÑĥÐ¶ ÑĩÐ¸Ð½\nĠØ§ÙĦÙĥ ØªØ§Ø¨\n×Ľ ×ŀ×ķ×ª\nĠÃ§ e\nĠÃ§e ÅŁ\nĠÃ§eÅŁ it\nĠÃ§eÅŁit li\n×ĵ ×Ļ×¨×ķ×ª\nà¸ļà¸¸ à¸į\nĠØ§ÙĦØ¥ ÙĦÙĥ\nĠØ§ÙĦØ¥ÙĦÙĥ ØªØ±ÙĪ\nĠØ§ÙĦØ¥ÙĦÙĥØªØ±ÙĪ ÙĨÙĬ\nĠØ¨Ø§ÙĦØ¥ Ø¶\nĠØ¨Ø§ÙĦØ¥Ø¶ Ø§ÙģØ©\nĠyÃ¶ nel\nĠyÃ¶nel ik\nmys ÅĤ\nà¸Ķà¹īà¸§à¸¢ à¸ģà¸²à¸£\nà¸ģà¸²à¸£ à¸Ĺà¸³\nÐ¾Ð² ÑĭÐ¼\nØ£ Ø²ÙħØ©\næİ¢ ãģĹ\níļ ¨\nĠ×ķ×Ĳ ×Ŀ\nĠnghi Ãªm\nÑĪ Ð¸Ð½\nÐºÐ° Ð»\nĠcrian Ã§as\nèĩªåĪĨ ãģ§\nĠÐ½ Ð°Ð¹\nĠÐ½Ð°Ð¹ ÑĤÐ¸\nĠS á»ĳ\nĠÃ¶ÄŁrenc iler\nãĥ¶ æľĪ\nÑģ Ð°Ð½\nĠJ Ã¡\nĠkonuÅŁ ma\nØ´Ø± Ø·\nëĪ Ī\nar riÃ¨re\nØ¶Ø± ÙĪØ±Ø©\nãĥĶ ãĥ³\n×¢ ×©×¨\nÐ°ÑĢ ÑĮ\nØ¬Ùħ Ø§Ø¹\nĠdÃ© co\nĠ×Ļ×Ķ ×ķ×ĵ×Ļ\nà¸ŀ à¸¥à¸²à¸Ķ\nĠÙĬ ÙĥÙĨ\nĠØ¬ Ø§ÙħØ¹Ø©\nØ· Ø¨ÙĤ\nĠbo ÅŁ\n×ķ ×ķ×Ĳ\n×ŀ×ĵ ×¢\n×§×ĳ×ķ×¦ ×ª\n×¤ ×Ļ×¨\njÄħc ym\nÙħØ´ Ø§\nÙħØ´Ø§ ÙĥÙĦ\n×¦ ×¤×ķ×Ł\nØ¥ Ø³Øª\n×ŀ×Ľ ×¨\nØ³Ùħ Ø¹\nĠÐºÐ°Ðº Ð¾Ð¹\nÑĤ Ð²Ð¾ÑĢ\nØŃ Ø¬\nÙģØ± Ø¶\nÐ¿ÑĢÐ°Ð² Ð»ÐµÐ½\nĠÐ½Ð¸Ðº Ð°Ðº\nĠmi á»ĩ\nĠmiá»ĩ ng\nÃ¼ ÃŁ\nÐ¸ÑĢÐ¾Ð² Ð°Ð»\n×ľ ×ŀ×ķ×ª\næ¬¡ ãģ®\nÙĦ Ø·\nà¸ķ à¸±à¸Ļ\n×Ķ ×ª×Ĺ×Ļ×ľ\nĠfoto ÄŁ\nĠfotoÄŁ raf\nØ·Ø± ØŃ\nà¸Ńà¸Ńà¸ģ à¹Ħà¸Ľ\nĠy Ãªn\nĠÐ¿ Ð¾Ðº\nĠÐ¿Ð¾Ðº ÑĥÐ¿\nĠÐ¿Ð¾ÐºÑĥÐ¿ Ð°\nÑĨ Ñĥ\nĠÐºÐ¾Ð¼Ð¿ ÑĮÑİ\nĠÐºÐ¾Ð¼Ð¿ÑĮÑİ ÑĤÐµÑĢ\nĠØ§ÙĦÙĥ Ø±ÙĬÙħ\nØªØµ Ùħ\nØªØµÙħ ÙĬÙħ\nĠÐ¾ÐºÐ°Ð· Ð°\nĠzar Ã³wn\nĠzarÃ³wn o\nëĮĢ ì¶ľ\nãĤ»ãĥ³ ãĤ¿ãĥ¼\nĠjako ÅĽci\næĤ ©\næĤ© ãģ¿\nØ£ÙĨ ÙĪ\nØ£ÙĨÙĪ Ø§Ø¹\në¹ ł\nĠìłķ ë§Ĳ\nĠk áº»\nĠÑģÐ°Ð¹ ÑĤÐ°\nĠ×Ķ ×¢×¨×ĳ\nÙĩ Ø²\npres iÃ³n\nĠÑģÑĤ ÐµÐ½\nãģ£ãģ¦ ãĤĭ\nĠhÄ±z lÄ±\nÐļ ÐĲ\n×ŀ×©×¤ ×Ĺ×ª\nĠÙĨ ÙĩØ§\nĠÙĨÙĩØ§ ÙĬØ©\nãģ¾ ãģĦ\nÐ¾ ÑħÑĢÐ°Ð½\nà¸£ à¹īà¸Ńà¸¢\nà¸¥ à¸¶à¸ģ\nĠÙĪØ¨ Ø§ÙĦ\nãĤĤãģ® ãģĮ\n×¨×Ľ ×Ļ×ĳ\nãĤ¤ ãĥ¤\nØ³ Ø¤\nØ³Ø¤ Ø§ÙĦ\nĠÙĦØ£ÙĨ Ùĩ\nĠkonuÅŁ tu\nÐļ ÑĥÐ¿Ð¸ÑĤÑĮ\nĠ×©×Ĳ×ª ×Ķ\nĠÙĪØ§ÙĦ Ø³\nĠmoÅ¼liwo ÅĽci\nĠprÃ³ b\nëĶ °\nãģ© ãĤĮ\nĠÐľ Ð¸Ð½\nĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð· Ð¼\nãģ«å¯¾ ãģĻãĤĭ\nĠPr Ã©\nĠpriv Ã©\nch Ã¨\nãģĦãģŁãģł ãģį\nà¸ªà¸Ļà¸¸ à¸ģ\najÄħ ce\nĠD zi\nĠDzi ÄĻki\nÅĤat w\nr Ã¤n\nrÃ¤n k\næĿ¥ ãģŁ\nĠ×Ķ×Ļ×Ķ ×ķ×ĵ×Ļ\nãĤ¬ ãĥ¼\nĠÑĢÐ°Ð ´\nĠÑĢÐ°Ð´ Ð¸\nÐº ÑĤÐ¸Ð²\nØ£ ÙĩØ¯\nØ£ÙĩØ¯ Ø§Ùģ\n×© ×Ĳ×Ļ×¨\nãģ¦ ãģĦãģªãģĦ\nĠfr Ã¼h\nĠÐ¾Ðº Ð¾Ð»\nĠÐ¾ÐºÐ¾Ð» Ð¾\nĠreg iÃ£o\nĠÑĩÐ¸Ñģ Ð»Ðµ\nĠpon iew\nĠponiew aÅ¼\nìĦ¼ íĦ°\nĠb áº§u\nĠê ·\nĠê· ľ\nĠê·ľ ìłķ\nĠH Ã²a\nĠÑĤ Ð¾ÑĤ\nãĤĤ å¤ļãģĦ\nĠØ§ÙĦØ¥Ø³ÙĦØ§Ùħ ÙĬØ©\nãģĭ ãģĦ\nÑį Ð½\nĠÑĥÐºÐ°Ð· Ð°Ð½\nĠÑĤÐ°Ðº Ð¾Ðµ\nï¼ ³\nëĮĢ íķĻ\nĠgen iÅŁ\nĠØ§ÙĦØ® ÙĬ\nĠØ§ÙĦØ®ÙĬ Ø§Ø±Ø§Øª\nãĤĴè¡Į ãģĨ\n×© ×ŀ×Ķ\nĠLÃł m\nÙĪÙĨ ÙĬ\nĠ×Ĳ ×ľ×Ļ×ķ\nÄ ĺ\nà¹Ħà¸¡à¹Ī à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\näºº ãģ¨\nØ¨Ø± Ø²\n×Ļ×¡ ×ķ×ĵ\n×Ĵ ×ľ×Ļ\nĠÙĬ ÙĨØ§\nĠÙĬÙĨØ§ ÙĬØ±\nĠÐºÐ°ÑĢÑĤ Ð¸Ð½\nĠt Ã´n\nà¹Ģ à¸ģà¸£\nà¸Ħ à¸Ķà¸µ\nĠ×ľ×Ĳ ×ķ×¨×ļ\nãĤĤãĤī ãģĨ\nãģĭ ãģĭãĤĭ\nÐ°Ð½Ð¸ Ð¸\nĠara ÅŁtÄ±rma\nÙĦØ§ØŃ Ø¸\nãģĦ ãĤĦ\nĠT Ãłi\nĠ à¸Ļà¸Ńà¸ģà¸Īà¸²à¸ģ\nĠà¸Ļà¸Ńà¸ģà¸Īà¸²à¸ģ à¸Ļà¸µà¹ī\nĠÄĲ áº£ng\nãģ£ãģ¦ ãģįãģŁ\nĠà¸ĭà¸¶à¹Īà¸ĩ à¹Ģà¸Ľà¹ĩà¸Ļ\nĠt áº£\nĠmoÅ¼liwo ÅĽÄĩ\nĠS áº£n\nĠÄ° ki\nĠc áº¯t\nØ³ Ø£ÙĦ\nĠbak Ä±m\nØ´ Ø¨\nà¸ķ à¸µà¹ī\nà¸ŀ à¸¢à¸²à¸¢\nà¸ŀà¸¢à¸²à¸¢ à¸²à¸¡\nà¸ªà¸± à¸Ľ\nà¸ªà¸±à¸Ľ à¸Ķà¸²\nà¸ªà¸±à¸Ľà¸Ķà¸² à¸«à¹Į\në° Ģ\nÐµÑĢ Ñĭ\nĠc Ã¡nh\nĠthu áº¿\nØª Ø¨Ø¹\nãģ«åħ¥ ãĤĮ\nÑİ ÑģÑĮ\níļĮ ìĿĺ\nç°¡ åį\nç°¡åį ĺ\nç°¡åįĺ ãģ«\nĠtr Ãºc\nĠØ§ÙĦÙĥ ÙĪÙĬ\nĠØ§ÙĦÙĥÙĪÙĬ Øª\nãĤıãģĳ ãģ§ãģĻ\nĠÑģÐ² Ð¾Ð±\nĠÑģÐ²Ð¾Ð± Ð¾Ð´\nĠÑĥÑĩÐ°ÑģÑĤ Ð½Ð¸Ðº\nà¸ªà¸´ à¹īà¸Ļ\nĠÐ¿ÑĢÐ¾ ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°\nĠÐ¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð° Ð»ÑĮÐ½\nÑģÐ¿ Ð¾ÑĢ\n×Ĺ ×ķ×ĳ×Ķ\nÙħØ¹ ÙĨÙī\nĠØ§ÙĦÙģ ØªØ±Ø©\nà¸ªà¸¹à¸ĩ à¸ªà¸¸à¸Ķ\nãĤı ãģļ\nĠÄĳ Ã¨\nĠÄĳÃ¨ n\næ¯Ķ ãģ¹\nà¸² à¸ĺà¸´\nĠmoÅ¼ emy\nà¹ģ à¸ĭ\nà¸Īà¸° à¹Ħà¸¡à¹Ī\nĠs áº¯p\nÐļ Ðŀ\nĠprÃ¡ ctica\nÙĪÙĥ Ø§ÙĦØ©\nè¾¼ ãĤĵãģ§\nolÃ³g ica\nĠÐµ Ñī\nĠÐµÑī Ñĳ\nØªØ¹ Ø¯ÙĬÙĦ\nĠØ£ ÙĥØ¯\nĠ×¦×¨ ×Ļ×Ľ\nĠ×¦×¨×Ļ×Ľ ×Ļ×Ŀ\nØ« Ùħ\nĠÐº ÑĢÑĥ\nĠÐºÑĢÑĥ Ð¿\n×ĳ×Ļ×§ ×ķ×¨×ª\nĠì¡° ê¸Ī\nãģ¨ãģį ãģ¯\nĠb áº¡c\nĠÑĢÐ°Ñģ Ð¿Ð¾Ð»\nĠÑĢÐ°ÑģÐ¿Ð¾Ð» Ð¾Ð¶\nĠÑĢÐ°ÑģÐ¿Ð¾Ð»Ð¾Ð¶ ÐµÐ½\nØ² ÙĬÙĨ\nĠÐļ ÑĢÐ¾Ð¼Ðµ\nĠØ§ÙĦÙĨ Ø¸Ø±\n×Ķ ×ķ×ĵ\nĠØ§ÙĦØ³ Ø¨Øª\nãģ¨æĢĿ ãģĦ\nĠpa ÅĦst\nĠpaÅĦst w\nĠÙĦÙĬ Ø³Øª\nĠÐ±ÑĥÐ´ Ñĥ\nà¸Ĺà¸±à¸Ļ à¸Ĺà¸µ\nà¸£ à¸²à¸¡\nØŃ ØµÙĪÙĦ\nãģĹãģ¦ãģıãĤĮ ãĤĭ\nĠØ§ÙĦØ¥ Ø³Ø±Ø§Ø¦ÙĬÙĦ\nĠØ§ÙĦØ¥Ø³Ø±Ø§Ø¦ÙĬÙĦ ÙĬ\nãģĵãĤĮ ãģ¾ãģ§\nìĤ¬ ë¥¼\nĠs Ã¼rÃ¼\nà¹Ģà¸§ à¸Ńà¸£à¹Į\nà¹Ģà¸ĭ à¸Ńà¸£à¹Į\nĠutilis Ã©\nĠÑģÐ¸ÑģÑĤÐµÐ¼ Ð°\nĠdw Ã³\nĠdwÃ³ ch\nĠprÃ³p rio\nĠëĵ± ìĿĦ\narr Ãªt\nĠÐ§ Ð°\n×Ĳ×ŀ ×ł×ķ×ª\nØ¹Ø§Ø± Ø¶\nà¹Ģà¸ģà¸¡ à¸ªà¹Į\nĠ×ľ×Ķ ×ĳ×Ļ×Ł\nĠ×ľ ×ĳ×Ĺ\nĠ×ľ×ĳ×Ĺ ×ķ×¨\nà¸ªà¸² à¸Ĥà¸²\nĠÐľÐ¾ÑģÐº Ð²Ðµ\nØ¨ Ø¹Ø¯\nĠØ§ÙĦÙĤØ± Ø§Ø±\nĠÄĲ á»ĭa\nĠ×Ĺ ×Ĵ\nÙģ ØªØ±\nÙĪÙĨ Ø©\nĠ×Ķ×ĸ ×Ĳ×ª\nå¸Ĥ ãģ®\nãģ» ãģĹãģĦ\nĠ×ĳ×¢ ×Ļ×¨\nĠÑĤÐµÐ¿ ÐµÑĢÑĮ\nìĬµ ëĭĪê¹Į\nà¹Ħà¸¡ à¹Īà¸§\nà¹Ħà¸¡à¹Īà¸§ à¹Īà¸²\nà¹Ħà¸¡à¹Īà¸§à¹Īà¸² à¸Īà¸°\n×ŀ ×Ĳ×Ķ\næĥħ åł±\næĥħåł± ãĤĴ\nØº ÙĨ\nĠÐ¿Ð¾ Ñı\nĠÐ¿Ð¾Ñı Ð²Ð¸\néģİ ãģĶ\nØªØ´ Øº\nØªØ´Øº ÙĬÙĦ\nÐ² ÐµÐ»\nĠ×Ĺ ×ŀ\nãģ¨ãģªãĤĬ ãģ¾ãģĻ\nĠra ÄŁ\nĠraÄŁ men\nãģĭ ãģ©ãģĨ\nãģĭãģ©ãģĨ ãģĭ\nÐµÐ½ ÐºÐ¾\nì§Ģ ê³ł\nĠ×Ĳ×ľ ×Ļ×Ķ\nĠØ£ ÙĦ\nà¸Īà¸³ à¸«à¸Ļ\nà¸Īà¸³à¸«à¸Ļ à¹Īà¸²à¸¢\nnÄ±z Ä±\nĠ×ľ×§ ×Ĺ×ª\nØ£ ÙĩÙħ\nØ£ÙĩÙħ ÙĬØ©\nØª ØºÙĬØ±\n×© ×Ĺ×¨\n×¡×ķ×¤ ×¨\n×ĵ ×Ļ×¨\nèī¯ ãģĭãģ£ãģŁ\n×ŀ×ľ×Ĺ ×ŀ×Ķ\nÑģÑĤÐ² Ð¸Ðµ\nÑĤ ÑĢÐ°ÑĤ\nĠØ§ÙĦØ£ Ø®\nĠØ§ÙĦØ£Ø® ÙĬØ±Ø©\nĠØ§ÙĦØŃ ØµÙĪÙĦ\nĠcrÃ©d ito\n×¦ ×Ļ×¢\nãĥ¬ ãĥĻãĥ«\nØ¨Ø± ÙĬ\nëĲ Ĳ\nãģł ãģ£ãģ¦\nĠreal tÃł\nØ³ ÙģØ±\n×ķ×ł ×ķ\n×Ĵ ×ķ×ĵ\n×Ĵ×ķ×ĵ ×ľ\nà¸® à¸²\nãģĹãģ¦ ãģĬãĤĬãģ¾ãģĻ\nĠg Ãł\nĠ×ľ×ĳ ×¦×¢\nå¼ķ è¶ĬãģĹ\nĠ×ŀ ×Ļ×ľ×Ļ\nĠ×ŀ×Ļ×ľ×Ļ ×ķ×Ł\nÙħ Ø¯Ø±\nÙħØ¯Ø± Ø³Ø©\n×¤ ×ķ×ĺ\nà¸Ļà¹īà¸³ à¸¡à¸±à¸Ļ\nëģ Ŀ\nØ¹ ÙĥØ³\nĠÙĤ Ø¶\nĠÑĢÑĭ Ð±\nØ®Ø· Ø·\n×ŀ×ķ×¡ ×ĵ\nĠ×Ľ×ľ ×ľ×Ļ\nĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ðµ\n×¦×Ļ ×ķ×Ł\nĠÐ¼ÐµÑģÑĤ Ð°\nãģĭ ãģ¤\nÐ³ ÑĢÑĥÐ¿Ð¿\n×ľ ×Ļ×ľ\n×ª ×ķ×Ĳ×¨\në³µ ì§Ģ\nà¹ģà¸ľ à¹Īà¸Ļ\nĠ×ĳ×¢ ×ª\næĻĤéĸĵ ãĤĴ\nï¼ £\nãģ¨ãģĦãģĨãģĵãģ¨ ãģ§\nĠ×ľ×Ķ ×§\nĠ×ľ ×ĸ×Ķ\nĠìłĢ ëĬĶ\nĠØ§ÙĦØ¥ Ø±ÙĩØ§Ø¨\nĠìŀĪëĬĶ ëį°\nĠÑĤ Ð¾Ð³Ð´Ð°\nĠ×Ķ ×¦×Ļ\n×ķ×ľ ×ĺ\nĠ×¨ ×¤×ķ×Ĳ×Ļ\nãģĵãģ¨ ãģ§ãģĻ\nĠÄĳ ÃŃch\nØŃ ÙĬØ§\nĠ×Ķ×ŀ×© ×Ĺ×§\nãģľ ãģ²\nĠ×ŀ×Ĳ ×¤×©×¨\nãģ¿ ãģ¾ãģĹãģŁ\nĠØ§ÙĦØ£ÙħÙĬØ± ÙĥÙĬ\nÙħØ¬ ØªÙħØ¹\nĠØ³ Ø§Ø¨\nĠØ³Ø§Ø¨ ÙĤ\n×Ľ ×Ļ×ľ\náº ¾\nãĥª ãĤ¹ãĥĪ\nĠì ĥ\nĠìĥ Ī\nĠìĥĪ ë¡ľ\nĠìĥĪë¡ľ ìļ´\nĠD á»ĭch\nà¹Ģà¸«à¸¡à¸²à¸° à¸ªà¸¡\nĠØ§ÙĦÙĨ Ø¨ÙĬ\n×ľ ×ľ\nÙĨ Ø¹\nÐĵ Ð»Ð°Ð²\nÐĵÐ»Ð°Ð² Ð½Ð°Ñı\nÙħØ± Ø¶\nĠ×ķ ×ĵ\nØª ÙĤÙĬ\nØªÙĤÙĬ ÙĬÙħ\nĠb áº£ng\nĠÙģ ÙĤØ§ÙĦ\n×¢ ×ŀ×Ļ\nÐ´ ÑĢÐ°\nĠsu á»ĳt\nØ³Ø± Ø¹Ø©\nĠc á»Ń\nĠ×Ķ ×Ļ×Ĺ×Ļ×ĵ\nØ³Ø¹ ÙĬØ¯\nà¸Ńà¸² à¸Ĭà¸µà¸ŀ\nĠØ³ ÙĪØ§Ø¡\nãĤ½ ãĥķãĥĪ\nĠÐ» Ð¸ÑĩÐ½Ð¾\nĠÐļ Ð¾ÑĢ\nØ§Ùĩ ØªÙħ\nØ§ÙĩØªÙħ Ø§Ùħ\nà¸Ń à¸Ķà¸µ\nà¸Ńà¸Ķà¸µ à¸ķ\nãģĲ ãĤīãģĦ\nĠiht iya\nĠihtiya Ã§\nãģ¾ãģ§ ãģ®\nìĭľ ìĬ¤\nìĭľìĬ¤ íħľ\nÑĢÑĥ ÑĪ\nãĤĦ ãģ£ãģ±\nãĤĦãģ£ãģ± ãĤĬ\nÐº ÐµÑĢ\nĠ Å¼y\nĠÅ¼y w\nÐºÐ» Ð¾Ð½\nĠl Æ°á»£t\nÃ ¾\nÐ´Ð° ÑĩÐ¸\ntÃ¼r k\nØº ÙĪ\nĠÐ¸Ð³ÑĢ Ð¾Ðº\nĠph Ãª\nĠ×© ×¢×ľ\nĠØ§ÙĦÙħ Ø¯ÙĨÙĬ\nĠìĹ¬ëŁ¬ ë¶Ħ\n×¢×¨ ×Ļ×Ŀ\nÑħÐ¾Ð´ ÑıÑĤ\nĠx á»©\nÐĹ Ð°\nĠÙģ Ø±Øµ\nà¸Īà¸° à¸Ĺà¸³à¹ĥà¸«à¹ī\níģ ´\n×¢ ×ĳ×ķ×¨\nà¹Ģà¸«à¸¥à¹Īà¸² à¸Ļà¸µà¹ī\nèĢĥãģĪ ãĤĭ\nÑĢ ÐµÑģÑĤ\nÐ½ Ð½ÑĭÐ¹\nĠc áº§m\nØ¯Ø§ Ø®ÙĦ\nĠÙħÙĦÙĬ Ø§Ø±\nĠÐĲ Ð»\nĠÐ²ÑĢÐµÐ¼ ÐµÐ½\nà¸Ĭà¹Īà¸§à¸¢ à¹ĥà¸«à¹ī\n×¨×Ļ ×ķ×ª\nëĵ ¯\né£² ãģ¿\n×ł ×ľ\n×©×ª ×£\nĠØ§ÙĦØ³Ø¹ÙĪØ¯ ÙĬ\nu ÃŁ\nìĿ¸ ëį°\nĠìĿ¼ ë°ĺ\nÅĤ ÄĻ\nĠm á»ĳi\n×ŀ ×Ļ×ł\nĠØ§ÙĦØ£ Ø·ÙģØ§ÙĦ\nĠÃ§Ä± kan\nÃ© cole\n×§ ×Ļ×©\n×§×Ļ×© ×ķ×¨\nĠÐ¾Ñģ ÑĥÑīÐµÑģÑĤÐ²\nĠÐ¾ÑģÑĥÑīÐµÑģÑĤÐ² Ð»Ñı\n×ĳ ×Ĳ×¨\nà¹Ħà¸Ľ à¸Ķà¹īà¸§à¸¢\nĠ×¢ ×ķ×ľ×Ķ\nà¸ģà¹ĩ à¹Ħà¸¡à¹Ī\nãĥ¢ ãĥĩ\nãĥ¢ãĥĩ ãĥ«\nØªØŃ ÙĪÙĦ\nĠÐ¾Ð´ Ð½Ð¾Ð³Ð¾\n×ª×Ĺ×Ļ×ľ ×ª\nĠØª Ø®\nĠch cia\nĠchcia ÅĤ\nãĥĲ ãĥ³\nèĢħ ãģ¯\nĠÙħ ØŃÙĦ\nÑģÐ» Ð¾Ð¶\nÑģÐ»Ð¾Ð¶ Ð½\nĠt ÄĻ\nĠÃ§Ä± kt\nĠÃ§Ä±kt Ä±\nĠC Æ¡\nà¹Ħà¸Ķà¹ī à¹Ģà¸¥à¸¢\nÄ±r ken\nà¹Ģà¸Ĥà¹īà¸² à¸ªà¸¹à¹Ī\nÙħØŃ Ùĥ\nÙħØŃÙĥ ÙħØ©\nà¸Ħà¸¸ à¹īà¸¡\nà¸Ļà¹Īà¸² à¸Īà¸°\nÐ»Ñİ Ð´\nÐ´Ðµ ÑģÑı\nÐ´ÐµÑģÑı ÑĤ\nĠÐ»ÑİÐ± Ð¾Ð¹\nØªØŃØ± ÙĬØ±\n×¦×¢ ×ĵ\nĠÐµ Ñĳ\nĠØ§ÙĦØŃ ÙĥÙħ\nĠØµ Ø¨Ø§ØŃ\nà¹Ģà¸ļ à¸Ńà¸£à¹Į\nĠrÃ³Å¼ nych\nÐ³Ð¸ Ð±\nĠÑģ Ð¾ÑĤ\nĠÑģÐ¾ÑĤ ÑĢÑĥÐ´\nĠÑģÐ¾ÑĤÑĢÑĥÐ´ Ð½Ð¸Ðº\nĠÐ¾Ð±ÑĬ ÐµÐ¼\n×¤ ×ĺ×¨\nãģĻãģĶ ãģı\nãģ«éĸ¢ ãģĹãģ¦\nÐ² Ð¾Ð»\nØ« ÙħØ§ÙĨ\nĠd áº§n\næĬ ľ\næĬľ ãģĳ\nĠ×¢ ×©\nĠ×¢×© ×ķ×Ļ\n×¡ ×ķ×Ł\nãģªãģ® ãģ§ãģĻ\nãģ¯ ãģ©ãģĨ\n×ŀ×¢ ×¨×ĳ\nï¼ °\nÙħ ØµØ±\nÙħÙĨ Ø§Ø³Ø¨\nÙħÙĨØ§Ø³Ø¨ Ø©\nä¸Ĭ ãģ®\n×Ĳ×Ļ×© ×ķ×¨\nĠìĦ¤ ì¹ĺ\n×ŀ×ĵ×Ļ×ł ×ķ×ª\n×ŀ×¨ ×ª\nãĤĭ ãģ®ãģĮ\nØ¯ Ùİ\nĠØ§ÙĦØ´Ø± ÙĥØ§Øª\nìĭľ ê°Ħ\nĠÑĢÐµÑĪ ÐµÐ½Ð¸Ðµ\nãģĻãĤĭ ãģ®ãģ¯\nĠìŀĲìĭł ìĿĺ\n×ľ ×ŀ×ķ\nãģ¨ãģĵãĤį ãģ§\nĠ×§ ×¦×¨\nĠmÃ£ i\nĠkÃ¼ ltÃ¼r\nãĥ©ãĤ¤ ãĥĸ\nà¸ľà¸¹à¹ī à¸«à¸įà¸´à¸ĩ\næĻĤéĸĵ ãģĮ\nÐºÐ»ÑİÑĩ Ð¸\ndiÄŁ iniz\nà¸¡à¸²à¸ģ à¹Ĩ\nØªØŃ ÙħÙĦ\nĠh áº¡t\nãĤ¦ ãĤ£\nÐ¿ Ð»Ðµ\n×ŀ ×ľ×Ĳ\nÅĤ Ã³\nĠg á»ĳc\nĠ×Ĳ ×ķ×ĵ×ķ×ª\nà¸«à¸§ à¸²à¸Ļ\nĠØ§ÙĦ ÙĪØ²\nĠØ§ÙĦÙĪØ² Ø±Ø§Ø¡\nëĵ¤ ê³¼\nĠØµ ØŃ\nĠØµØŃ ÙĬÙģØ©\nĠÐ¼ Ð¼\nØªØ¯ Ø®ÙĦ\nĠpersÃ¶n lich\nĠØ² ÙĬ\nĠØ²ÙĬ Ø§Ø¯Ø©\nãĤ· ãĤ¢\nĠng áº¯n\nà¸Ħà¸¥ à¸´à¸ģ\nĠs Ã´ng\nĠtÃ¼ ket\nÑį ÑĦÑĦ\nÑįÑĦÑĦ ÐµÐºÑĤ\n×© ×Ļ×ĳ\nĠØ§ Ø¹Øª\nØª Ø¶\nØªØ¶ ÙħÙĨ\nĠØ§ÙĦÙħØ´ Ø±ÙĪØ¹\nĠprodu Ã§Ã£o\nĠÐ¿ÑĢÐ¸Ð¼ÐµÐ½ Ñı\nÐ½Ð¸ ÑĨÑĭ\nì£¼ ëĬĶ\nØ± Ùı\nĠm Æ¡\nĠhayat Ä±\nëŁ ½\nĠÃ¼ cret\nĠyan Ä±nda\nĠpr Ã¡tica\n×ĳ×Ļ×§ ×ķ×¨\nÃľ N\nÑģ Ð¾ÑĤ\nãĤıãģĳ ãģ§\nĠÐ´Ð¾Ð» Ð³Ð¾\n×ª ×Ľ×ķ\nĠìķĦ ëĭĮ\në į°ìĿ´\nĠÃ§ iz\nĠcho Äĩ\nĠ×Ķ ×Ļ×ª\nĠ×Ķ×Ļ×ª ×¨\nĠso Ã¡t\n×Ľ ×ĳ×ĵ\nà¹Ģà¸¥ à¹Īà¸²\nĠÐ´ ÐµÑĢ\nĠÐ´ÐµÑĢ ÐµÐ²\nãĤĴ åħ¥ãĤĮ\n×Ĺ ×ķ×¡\n×Ĺ×ķ×¡ ×¨\nØ¬ ÙĬÙĨ\nt Ã³n\nonn Ã©\nĠÐ¿Ð¾Ð» Ð½Ð¾ÑģÑĤÑĮÑİ\näºº ãģŁãģ¡\nĠpr Ãªt\nëł ¸\nĠdÃ©c embre\ncÄ± lar\nĠ×ª ×ª\nĠê²½ìļ° ìĹĲëĬĶ\nÙĪ Ø¹Ø¯\nè¦ĭ ãĤĭ\nà¸§à¸´ à¸Īà¸±à¸¢\në ¶Ī\nØ² ÙĪØ§\nØ²ÙĪØ§ Ø¬\nd Ã¬\nãģ§ãģĻ ãĤĪ\nĠÐ²Ð¾Ð´ Ð¾\nĠÙĬ ÙĪØ¬Ø¯\nÑģ Ð¾ÑģÑĤÐ¾Ñı\nÐŀ Ð¡\nĠÄĲ Ã³\n×Ĺ ×¤×©\nĠ×¦ ×Ļ×ĳ×ķ×¨\nĠØ§ÙĦÙĤ Ø·\nĠØ§ÙĦÙĤØ· Ø§Ø¹\nĠÐ¸Ð¼Ðµ ÑİÑĤ\nĠph áºŃn\n×Ľ×¡ ×¤×Ļ\nÐ¿Ð¾Ð»Ð½ Ð¸ÑĤÐµÐ»ÑĮ\néĻĲ ãĤĬ\nĠÑģ ÑĢÐ°Ð²\nĠÑģÑĢÐ°Ð² Ð½\nÙħØ§ÙĦ Ùĥ\n×ĵ×¨ ×ķ×Ŀ\nçļĨ ãģķãĤĵ\nØŃÙĤ ÙĤ\nà¹ģà¸«à¸¥ à¹Īà¸ĩ\nĠØ§ÙĦØ± Ø³ÙħÙĬ\nÐ¾Ñĩ ÐºÐ¸\n×ĺ ×ĳ×Ĺ\nĠcan lÄ±\nĠ×ľ ×ľ\nĠ×ľ×ľ ×ŀ×ķ×ĵ\n×ŀ×ĳ ×ķ\n×ª ×Ľ\n×ª×Ľ ×ł×Ļ×ª\nĠØ§ÙĦÙħ Ø´Ø§Ø±\nĠØ§ÙĦÙħØ´Ø§Ø± ÙĥØ©\nÄ° Åŀ\nĠØ³ÙĬ Ø§Ø³ÙĬ\nÐ² Ð¾Ð»ÑĮ\nĠÑģ Ð¿ÑĢÐ°Ð²\næĿ¥ ãģ¦\n×¤×ķ×¨ ×ķ×Ŀ\nà¸ªà¸³ à¹Ģà¸£à¹ĩ\nà¸ªà¸³à¹Ģà¸£à¹ĩ à¸Ī\nĠÅŁ Ã¶yle\nĠzosta ÅĤa\nĠH Ã¼\n×¨ ×ķ×©\nØ¯ ÙĦÙĬÙĦ\nÑĢÐ¸ Ð´\n×© ×Ł\n×ŀ×§ ×ķ×¨\nĠÑĥ Ñĩ\nĠÑĥÑĩ ÐµÐ±\nĠÑį ÑĤÐ°\nÐºÐ¾Ð² Ð°\nà¸ķà¸Ļ à¹Ģà¸Ńà¸ĩ\nÙĨ ÙĲ\nà¸Ńà¸µà¸ģ à¸Ħà¸£à¸±à¹īà¸ĩ\nà¸£à¸° à¸ļà¸¸\nĠd á»¯\nĠØ§ÙĦØŃ Ø§ÙĦÙĬ\n×Ľ ×ķ×Ľ\n×Ľ×ķ×Ľ ×ĳ\nĠ×ŀ×Ĳ ×©×¨\nĠtr á»¥\nÑĤÐµÐ» ÐµÐ¼\nĠÐ² Ð»Ð¸\nĠÐ²Ð»Ð¸ Ñı\nĠ×©×Ĳ×ª ×Ŀ\nĠuw ag\nĠuwag ÄĻ\n×ĺ ×Ļ×ª\n×Ĳ ×ĵ×Ŀ\nà¸Ķ à¸¸\nĠ×Ķ×Ĳ ×ľ×Ķ\nĠkar Ä±ÅŁ\nĠÄĲ á»ĳi\nÐ´Ð° ÑİÑĤ\nãģªãģ® ãģ«\nÄħ cych\nà¹Ģà¸Ļ à¹īà¸Ļ\nãģĹãģ¦ ãģĹãģ¾ãģĨ\nint Ã©rieur\nĠfÃŃs ica\nĠÐŁ Ð¾Ð»\nãģĹãģ ķ\nà¸Ĺà¸³ à¹Ħà¸¡\nĠL Ã¢m\nĠØ§ÙĦÙħ Ø³ÙĦÙħ\nĠØ§ÙĦÙħØ³ÙĦÙħ ÙĬÙĨ\nØµ ØŃØ©\nìĹ Ħ\nà¹Ģà¸Ķà¹ĩ à¸Ķ\nĠÑĥ ÑĩÐµÑĤ\nÃ¢ Ìģ\nĠØ¨ ÙĦØ§\nĠØ§ÙĦØ§Ø¬ØªÙħØ§Ø¹ ÙĬ\n×¤×¨×¡ ×Ŀ\nãĥķ ãĥ©\nĠÐļ Ð¾Ð³Ð´Ð°\nmie ÅĽci\nĠØ¨ÙĬÙĨ ÙħØ§\nĠ×ŀ×Ĳ ×ŀ×¨×Ļ×Ŀ\nĠ×ĳ×Ĳ ×ĸ×ķ×¨\n×ķ×© ×Ļ×Ŀ\nĠÑģÐ´ÐµÐ» Ð°\nentr Ã©e\nà¹Ģ à¸Ħà¹īà¸²\nÑĥÐ³ Ð»\nĠØ§ÙĦÙģ ÙĨÙĬ\nĠÐĴ Ð¾ÑĤ\nà¸Ĺà¸µà¹Ī à¸¡à¸²\n×ķ×¦ ×Ĵ\nÙĤØ¯ Ø±Ø©\nĠëª ©\nĠëª© ìłģ\níıī ê°Ģ\nĠØ§ÙĦØ£ Ø±Ø¨Ø¹\nĠØ§ÙĦØ£Ø±Ø¨Ø¹ Ø§Ø¡\n×¤×¡ ×Ļ×§\nĠÑıÐ²Ð»Ñı ÑİÑĤÑģÑı\nØ¨ ÙĪÙĨ\nì° ¾\n×ŀ×¢ ×¨×Ľ\n×ŀ×¢×¨×Ľ ×ķ×ª\nãĤ· ãĤ§\nĠØ¨Ø§ÙĦ Ø£\níĸĪ ëįĺ\nĠØ§ÙĦØ¨Ø± ÙĨØ§ÙħØ¬\nĠØ§ÙĦØ£ ØŃØ¯\nĠm Å©\nĠmÅ© i\nÐ¿ Ð°ÑĤ\nØ¨ Ø«\nĠÑĨ ÐµÐ½Ñĭ\nĠ×ĳ×ª ×ľ\nè¨Ģ ãĤıãĤĮ\nĠØ§ÙĦÙħ Ø¬Ø§ÙĦ\nĠìĦ¸ ìĥģ\nĠ×Ĵ ×ķ×¤\nĠÐ½Ð°ÑĪ ÐµÐ¹\nĠÐºÐ¾Ð¼Ð¿ Ð°Ð½Ð¸Ñı\nÐ± Ð¸Ð½\nÃ¶l Ã¼\n×Ļ ×Ļ×ĺ\nĠ×ŀ×¡ ×¤×Ļ×§\nà¸¢à¸±à¸ĩ à¸Ħà¸ĩ\nĠÐ§ Ð¸\nĠÐ°Ð½ ÑĤÐ¸\nĠÑģÑĢÐµÐ´ Ð¸\nà¸ªà¹Īà¸§à¸Ļ à¹ĥà¸«à¸įà¹Ī\nÐ¾Ñĩ ÐºÐ°\níĬ¹ ë³Ħ\nà¸§ à¹Īà¸²à¸ĩ\nÐ³Ð¾ÑĢ Ð¾Ð´\nØ¨Ø§ Ùĥ\nà¹Ģà¸ª à¸µà¹Īà¸¢\nà¹Ģà¸ªà¸µà¹Īà¸¢ à¸ĩ\nãĤĤãĤī ãģĦ\n×§ ×ķ×Ŀ\nãģĽ ãģļ\nĠØ§ÙĦÙĤ Ø§ÙĩØ±Ø©\nĠ×ĳ ×Ľ×ļ\nÙħØ´Ø§Ø± ÙĬØ¹\nØ¨Ø§ØŃ Ø«\nĠÐ¿Ð¾ Ñĩ\nĠÐ¿Ð¾Ñĩ ÑĤÐ¸\nĠÑĦÐ¾ÑĢÐ¼ Ð°\nS Ä°\nĠ×ŀ×¦ ×Ļ×¢\nà¸¥ à¸·\nà¸¥à¸· à¸¡\nĠÑĤ ÐµÑĢ\nĠÑĤÐµÑĢ ÑĢÐ¸ÑĤÐ¾ÑĢ\nĠÑĤÐµÑĢÑĢÐ¸ÑĤÐ¾ÑĢ Ð¸Ð¸\nĠÐ² Ð¼ÐµÑģÑĤ\nĠÐ²Ð¼ÐµÑģÑĤ Ðµ\ndÄ±kl arÄ±\nop Ã©ration\nà¹Ĥ à¸«\nØµ Ø¯ÙĬ\nØµØ¯ÙĬ ÙĤ\níĸī ìłķ\nØªØ¬ Ø§\nØªØ¬Ø§ ÙĪØ²\nĠsu Ã§\nĠar ty\nĠarty ku\nĠartyku ÅĤ\nãĤ·ãĥ§ ãĥĥãĥĹ\n×© ×¤\n×©×¤ ×Ļ×¢\nĠ×Ķ×© ×Ļ×¨×ķ×ª\nà¹ģà¸ĸ à¸¡\në¸ Ķ\nĠuk ÅĤad\nĠ×ķ ×Ľ×Ļ\nà¸«à¸¥ à¸²à¸ģ\nà¸«à¸¥à¸²à¸ģ à¸«à¸¥à¸²à¸¢\næĸ¹ ãĤĤ\nĠpodr Ã³Å¼\nĠE ÄŁer\nĠÐºÐ¾Ð¼ Ð½Ð°ÑĤ\nĠÑģÐ°Ð¼ ÑĭÑħ\nĠÐ² ÐºÑĥÑģ\nÐ± ÐµÐ¶\nĠ×ĳ ×§×ķ\næİĽ ãģĳ\nãģ¿ ãĤĭãģ¨\nĠiliÅŁ kin\nĠÙĬ Ø¹ÙħÙĦ\nĠÐ¿Ð¾Ð´ Ð°ÑĢ\nĠyaz Ä±lÄ±\nãĤĴ å¾Ĺ\nĠwyst ÄĻp\nà¸Ĺà¸µà¹Ī à¹ĥà¸Ĭà¹ī\nØŃØ§Ø¯ Ø«\nÙĪ ÙĬØ¯\nÐºÑĥ Ð»ÑĮÑĤ\nÐºÑĥÐ»ÑĮÑĤ ÑĥÑĢ\nà¸ģà¸²à¸£ à¹ģà¸Ĥà¹Īà¸ĩ\nà¸ģà¸²à¸£à¹ģà¸Ĥà¹Īà¸ĩ à¸Ĥ\nà¸ģà¸²à¸£à¹ģà¸Ĥà¹Īà¸ĩà¸Ĥ à¸±à¸Ļ\nÙħÙĪ Ø¸\nÙħÙĪØ¸ Ùģ\nÙĬÙħ ÙĬ\nãĤĵãģ§ãģĻ ãģĮ\ndiÄŁ im\ndiÄŁim iz\nĠÐŁ ÐµÑĢ\nĠÐŁÐµÑĢ Ð²\nĠm Ã£o\nĠÑģ ÐµÐ·\nĠÑģÐµÐ· Ð¾Ð½\nĠ×Ķ×ŀ ×¢\nÙħ Ø¬ÙħÙĪØ¹Ø©\nĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸Ð¸\ni áº¿c\nÃ£ ng\nĠÄĳ áº¥y\nãģĶ ç´\nãģĶç´ ¹\nãģĶç´¹ ä»ĭ\nĠad Ä±m\nà¹Ħ à¸«à¸¥\nĠÐ¿ ÑĢÐ°ÐºÑĤÐ¸\nĠÐ¿ÑĢÐ°ÐºÑĤÐ¸ Ñĩ\nĠÐ¿ÑĢÐ°ÐºÑĤÐ¸Ñĩ ÐµÑģ\nĠÐ¿ÑĢÐ°ÐºÑĤÐ¸ÑĩÐµÑģ ÐºÐ¸\nĠØ§ÙĦÙĨ ÙģØ³\nĠÑĢÐ°Ð±Ð¾ÑĤ Ðµ\nÙĦÙĬ Ùģ\nĠØ§ÙĦØ¬ÙĨ ÙĪØ¨\nĠÐ²Ð¾Ð´ Ñĭ\nì¹ Ļ\nĠÐ¼ Ð¸ÑĢÐ°\nĠÄĳ á»«ng\nĠÐ¿ÑĢÐ¾ÑĤÐ¸Ð² Ð¾\nĠÑģÑĤÑĢÐ°Ð½ Ñĭ\nà¸¥ à¸¹\nìĤ ¶\nkre ÅĽl\nĠbul und\nĠbulund uÄŁu\nà¹ģ à¸ªà¸Ļ\nãĤ± ãĤ¢\n×ª×Ĺ ×ķ×ŀ×Ļ\n×¨×Ľ ×Ķ\nĠ×ľ×§ ×ķ×Ĺ\nĠ×ľ×§×ķ×Ĺ ×ķ×ª\nĠ×Ľ×ª ×ķ×ĳ×ª\nĠÙĦ ÙĥÙħ\nØ¨ Ø´Ø±\nĠr Ãłng\nĠ×ŀ×Ķ ×ŀ\nĠ×Ĳ×Ĺ×¨ ×ķ×ª\nĠÐ± Ð¾Ð½\nĠÐ±Ð¾Ð½ ÑĥÑģ\nï½ Ĺ\nà¹ģ à¸¢à¸ģ\nãģĤãģªãģŁ ãģ®\nĠÑĥÑĩÐ°ÑģÑĤ Ð¸Ðµ\nĠE yl\nĠEyl Ã¼l\nĠÃ§alÄ±ÅŁmalar Ä±\nØ® Ø·Ø±\nìĿ ½\nà¸ģà¸²à¸£ à¹ĥà¸Ĭà¹īà¸ĩà¸²à¸Ļ\nĠÐ°Ð½Ð° Ð»Ð¸Ð·\n×ª×§ ×ĳ×ľ\nÐ½Ð¸ ÐµÐ¼\nĠÄ° ns\nĠÄ°ns an\nĠØ¨ÙĪ Ø§Ø³\nĠØ¨ÙĪØ§Ø³ Ø·Ø©\nĠ×ł ×Ľ×ł×¡\nĠ×Ķ×ŀ ×Ļ×ĵ×¢\nĠÃ§ o\nĠÃ§o ÄŁu\ná» ĺ\nĠêµŃ ë¯¼\nãĤĤ ãģĦãģĦ\nĠ×Ľ ×ľ×Ļ\nĠÑģÑĢÐµÐ´ Ð½Ðµ\ng ÅĤo\ngÅĤo ÅĽ\nĠneg Ã³\nĠnegÃ³ cio\nĠÑĢ ÐµÐ³Ð¸ÑģÑĤ\nĠÑĢÐµÐ³Ð¸ÑģÑĤ ÑĢÐ°\nĠÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ° ÑĨÐ¸Ð¸\nĠtr á»ĵng\nĠÐ¿ÑĢ Ñı\nĠÐ¿ÑĢÑı Ð¼Ð¾\nëłĪ ìĿ´\nĠk Ã©m\nÐº Ð»Ðµ\nà¸Ļà¸³ à¸¡à¸²\nĠÑĦ Ð¸Ð½\nĠÑĦÐ¸Ð½ Ð°Ð½Ñģ\nĠÑĦÐ¸Ð½Ð°Ð½Ñģ Ð¾Ð²\nĠki á»ĩm\nà¸¢à¸±à¸ĩ à¹Ħ\nà¸¢à¸±à¸ĩà¹Ħ à¸ĩ\nà¸¢ à¸´à¸ĩ\nà¹Ĥ à¸Ľ\nĠÐ¿Ð¾Ð»ÑĥÑĩ Ð¸Ð»\n×Ļ×ĸ ×Ŀ\nà¹ģà¸¥à¸° à¸Ħà¸§à¸²à¸¡\nĠÐ²Ð¾ Ð¾Ð±ÑīÐµ\nØµ ÙĬØ±\nãĥı ãĥ³\nĠØ§ÙĦÙĤ Ø§Ø¯\nĠØ§ÙĦÙĤØ§Ø¯ Ùħ\nĠØ¨ Ø¯ÙĪÙĨ\nØ¹ Ø¸Ùħ\n×ª ×ł×ķ×¢\n×ª×ł×ķ×¢ ×Ķ\nØ£ ÙħÙĦ\nãģķ ãģĪ\nÑĤ ÐµÐ¼\nÑĤÐµÐ¼ Ð¿ÐµÑĢ\nÑĤÐµÐ¼Ð¿ÐµÑĢ Ð°ÑĤÑĥÑĢ\nĠ×ľ ×Ļ×¦×ķ×¨\nĠr ÄĻk\nØ± Ø³ÙĦ\nìŀĲ ë¥¼\nĠ×Ļ×¦ ×Ļ×¨×ª\nÙĨ Ø¨ÙĬ\nÑĩ Ð½Ð°Ñı\nØªØŃ ÙĦÙĬÙĦ\nĠÐ¼ Ð¸Ðº\nĠÐ¼Ð¸Ðº ÑĢÐ¾\nĠS Ã¶z\nĠfor Ã§a\nÑģ Ð¾Ð½\nĠØ§ÙĦØ¹ Ø±Ø§\nĠØ§ÙĦØ¹Ø±Ø§ ÙĤÙĬ\nĠH á»ĵng\nãģĻãĤĭ ãģŁãĤģãģ«\nà¸Ĺà¸µà¹Ī à¸Ńà¸¢à¸¹à¹Ī\nĠ×ķ×Ĳ ×£\nØµ ÙĬØ¯\nĠìķĬ ê³ł\nà¸£ à¸±à¸ĩ\nĠØ§ÙĦØª ÙĪØ§ØµÙĦ\nà¹Ģà¸¡ à¸ķà¸£\nÑĥ ÑģÑĤÑĢÐ¾Ð¹\nÑĥÑģÑĤÑĢÐ¾Ð¹ ÑģÑĤÐ²\nm Ä±yor\nĠØ¨Ø§ Ø³Ùħ\nĠ×ķ ×Ľ×ķ\nĠG Ã¼l\ná» Ĳ\nÃī tat\nØº Ø§ÙĦ\nØ¥ ÙĨØ´\nØ¥ÙĨØ´ Ø§Ø¡\nT Ä°\nà¸Ĥà¹īà¸² à¸¡\nĠtro ch\nĠtroch ÄĻ\nØ¥ Øµ\nØ¥Øµ Ø§Ø¨Ø©\nĠØ« Ø§ÙĨÙĬ\nĠØ§ÙĦØµ ØŃØ©\nĠ×ĸ×Ķ ×ķ\njÄħ cej\nãĥĢ ãĥ³\nìĿ¸ ìĿ´\nĠÐ² Ð¾Ð»Ð¾Ñģ\nëĲĺ ë©´\nĠzak ÅĤad\nãģĻ ãģĵãģ¨\nä»¥ä¸Ĭ ãģ®\nĠ×Ķ×ŀ×§ ×ķ×Ŀ\nÙħØ´ Ø§Ùĩ\nÙħØ´Ø§Ùĩ Ø¯Ø©\nÑĩ Ð¸Ð²\nØ¨ Ø´\nà¸¢ à¹īà¸²à¸¢\nĠsÃ¼r dÃ¼r\nĠN áºµ\nĠNáºµ ng\nĠÐ¸Ð³ÑĢ Ð°ÑĤÑĮ\nĠê·¸ëŁ¬ ë©´\nãĥķ ãĥ«\nà¸¥ à¹Īà¸°\nĠtend rÃ¡\nĠb Ãły\nà¹Ģà¸Ľà¹ĩà¸Ļ à¸ľà¸¹à¹ī\nĠok o\nĠoko ÅĤo\nw ÅĤa\nwÅĤa ÅĽci\nwÅĤaÅĽci w\næĢĿ ãĤı\nĠYa ÅŁ\nĠB á»ĩnh\níı Ń\nØ¨ÙĬ Ø¯\n×§×¨ ×Ł\nà¹Ģà¸¨ à¸£\nà¹Ģà¸¨à¸£ à¸©\nà¹Ģà¸¨à¸£à¸© à¸Ĳ\nà¹Ģà¸¨à¸£à¸©à¸Ĳ à¸ģà¸´à¸Ī\nĠØ§ÙĦØ£ ÙĪØ±ÙĪ\nĠØ§ÙĦØ£ÙĪØ±ÙĪ Ø¨ÙĬ\nfl Ã¤che\nä¹Ĺ ãĤĬ\nĠb á»ģn\nÙĩ Ø¨\næľĢ ãĤĤ\nĠsa Ã§\nà¸Ńà¸³ à¹Ģà¸ł\nà¸Ńà¸³à¹Ģà¸ł à¸Ń\nĠØ£ Ø¬\nĠØ§ÙĦØ¯ Ø§Ø®ÙĦ\nĠØ§ÙĦØ¯Ø§Ø®ÙĦ ÙĬØ©\n×ĺ ×ķ×ĳ\nãĤĤ ãģªãģı\nĠÐ»Ð¸ ÑĨÐ°\nà¹ģà¸¥à¹īà¸§ à¸ģà¹ĩ\n×ĸ×Ľ ×Ļ×¨\nĠqu Ãł\nĠÙĥ Ø°ÙĦÙĥ\nØµØŃ Ùģ\nĠÃĤ u\nÙĪØ¨ Ø§\nà¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢à¸Ļ à¹ģà¸Ľà¸¥\nà¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢à¸Ļà¹ģà¸Ľà¸¥ à¸ĩ\nà¸ķà¸±à¸§ à¸Ńà¸¢à¹Īà¸²à¸ĩ\nĠrÃ¡p ida\nĠtas ar\nĠtasar Ä±m\nĠØ¹ÙĦÙĬ ÙĩÙħ\n×¡ ×ķ×ľ\nc Ä±lÄ±\ncÄ±lÄ± k\nĠØ± ØºÙħ\nìĭľ íĤ¤\nĠ×Ĳ×ľ ×§\nĠ×Ĳ×ľ×§ ×ĺ×¨\nĠ×Ĳ×ľ×§×ĺ×¨ ×ķ×ł×Ļ\nà¹ģà¸ļ à¹Īà¸ĩ\nĠh áº¡ng\nãģ£ãģ¦ ãģıãĤĮ\nĠÙĨ ØªÙĬ\nĠÙĨØªÙĬ Ø¬Ø©\nÄ±kl Ä±\nØº Ø§ÙĨ\nà¸Ĥà¹īà¸Ń à¸Ħà¸§à¸²à¸¡\nà¸Ľà¸¥ à¸²à¸¢\nĠØ£ ÙħØ³\nà¸Ĺà¸µà¹Ī à¹Ģà¸ģà¸µà¹Īà¸¢à¸§\nà¸Ĺà¸µà¹Īà¹Ģà¸ģà¸µà¹Īà¸¢à¸§ à¸Ĥ\nà¸Ĺà¸µà¹Īà¹Ģà¸ģà¸µà¹Īà¸¢à¸§à¸Ĥ à¹īà¸Ńà¸ĩ\nĠdÃ© fin\nĠdÃ©fin i\nÙģÙĨ Ø§Ø¯\nÙģÙĨØ§Ø¯ ÙĤ\nà¹Ħà¸Ķà¹ī à¸§à¹Īà¸²\nãģªãģĦ ãĤĪãģĨãģ«\nĠprÃ³p ria\nĠPh Ã¡t\nãĤĦãģĻ ãģı\nà¸ªà¸§à¸¢ à¸ĩà¸²à¸¡\nê³ł ìļĶ\nÑı ÐµÑĤ\nãģĭãĤĤãģĹãĤĮãģ¾ãģĽãĤĵ ãģĮ\nØªØ± Ø¬Ùħ\nĠÐºÑĢÐ°Ñģ Ð¸Ð²\nĠ×ŀ ×¨×Ĳ×©\nÐ´ ÐµÐ¶\nĠÙĬ ÙĪÙĨ\nĠÙĬÙĪÙĨ ÙĬÙĪ\nÑģÐº Ð¾ÑĢ\nĠKas Ä±m\nê³Ħ ìķ½\nÐº Ð¾Ñģ\nĠÐ½Ð° ÑĢÑĥ\nĠÐ½Ð°ÑĢÑĥ ÑĪÐµÐ½\nĠdu Å¼e\nacc Ã¨s\nĠh á»ĵng\nĠv Å©\nãģĦãģŁ ãģĹãģ¾ãģĻ\nĠ×ĺ ×Ļ\nĠ×ĺ×Ļ ×ķ×ľ\nlÄ±kl arÄ±\nĠqu Ãª\nëħ¸ ëıĻ\nìķ Ķ\nCI ÃĵN\nĠt áº¯c\npress Ã£o\nĠìŀĪ ìľ¼\nà¸ªà¸´à¸Ĺà¸ĺà¸´ à¹Į\níĥ Ħ\nĠ×Ķ×ŀ ×ŀ×©×ľ×Ķ\nå¬ī ãģĹãģĦ\nĠÄĲ áº·c\nÙĨ Ø²ÙĦ\nĠÐ´ÑĢÑĥÐ³ Ð¾Ð¹\nÐ´ ÑĥÑĤ\nìĪ Ļ\nĠth á»¥\nà¹Ģà¸ª à¸£\nà¹Ģà¸ªà¸£ à¹ĩ\nà¹Ģà¸ªà¸£à¹ĩ à¸Ī\nĠto plant\nĠtoplant Ä±\n×Ĳ×ŀ ×Ł\n×ķ×ľ ×ª\nÐ¿ Ð¾Ð¼Ð½\nĠyo ÄŁun\nÅĦsk iego\nì° ©\nĠØ« ÙĦØ§Ø«\nĠØ«ÙĦØ§Ø« Ø©\nĠl áº¯ng\në¦ ´\nà¸£à¸²à¸Ĭ à¸ģà¸²à¸£\nĠÑģÐ»Ð¾Ð² Ð°\ná» Ĩ\nà¸Ķà¸µ à¸ģà¸§à¹Īà¸²\nãģĶãģĸ ãģĦãģ¾ãģĻ\nĠÐ´ Ð¸Ð·\nĠÐ´Ð¸Ð· Ð°Ð¹Ð½\nfÃ© rence\nlÄ±kl ar\nãģªãĤĵ ãģ§ãģĻ\najÄħ cy\nĠëĭ¤ ìĸĳ\nĠëĭ¤ìĸĳ íķľ\n×§ ×Ļ×¨\nØŃ Ø§Ø±\nà¸ª à¸¹à¹ī\nĠz ro\nĠzro bi\nĠzrobi Äĩ\n×ŀ ×Ļ×Ľ×Ķ\nà¸Ĭà¹Īà¸§à¸¢ à¹Ģà¸«à¸¥à¸·à¸Ń\nĠÑįÑĤ Ñĥ\në´ ī\næ¥½ ãģĹãģĦ\nØ³ ÙĪØ±\níķĺ ê±°ëĤĺ\nÙħØ¤ ØªÙħØ±\nĠpoc zÄħ\nĠpoczÄħ tk\nĠpoczÄħtk u\nĠØ¹ Ø±Ø¨ÙĬ\nØ§ÙĦØ£ Ø±\nØ§ÙĦØ£Ø± Ø¯ÙĨ\nà¸Ķ à¸£\nÅĵ uvre\nĠÙĪÙĥ Ø§ÙĨØª\nĠÅĽ redni\nØ® Ø¶Ø±\nĠch uyáº¿n\nÐ½ ÑĤ\nĠìķĮ ê³ł\nĠv á»Ŀi\nĠ×ĳ ×Ļ×ĵ×Ļ\n×ŀ×ĵ ×ķ×ĳ×¨\nÙĪ ÙģØ±\nÙĬ Ø¡\n×ł ×Ľ×¡\nĠÐĽ Ð°\nÐ» Ð¾Ð½\nĠx áº¥u\nÙģ ÙĬÙĨ\nĠfÃ© vrier\nĠÐŀ Ð½Ð°\nĠV á»ģ\nĠÅŁey ler\nĠÐ¿Ð¾Ð»ÑĥÑĩ ÐµÐ½\nÐ· Ð°Ð´\nĠn Ã©t\nà¹Ħà¸Ľ à¸¢à¸±à¸ĩ\n×Ĺ×©×ĳ ×ķ\nà¸ļà¸±à¸Ļ à¸Ĺ\nà¸ļà¸±à¸Ļà¸Ĺ à¸¶à¸ģ\nĠgerÃ§ek leÅŁ\nÐ¸ÑĩÐµÑģÐº Ð¾Ðµ\nìĪĺ ê°Ģ\nØ« Ø¨Øª\nãģ¤ ãģ¾ãĤĬ\nĠÑĥÑģÐ»Ð¾Ð²Ð¸Ñı Ñħ\nëĭ¤ ê°Ģ\nà¸£à¸²à¸¢ à¹Ħà¸Ķà¹ī\n×Ľ×Ĳ ×ĳ\nà¹Ĥà¸Ľà¸£ à¹Ĥà¸¡\nà¹Ĥà¸Ľà¸£à¹Ĥà¸¡ à¸Ĭà¸±à¹Īà¸Ļ\nj Ã¤hr\njÃ¤hr ige\n×§ ×ł×Ļ×Ŀ\n×ŀ ×ķ×§\n×ŀ×ķ×§ ×ĵ\nãģ«è¡Į ãģ£ãģ¦\nØ¢ ÙĦ\nÐ²ÐµÐ´ ÐµÐ½Ð¸Ðµ\nĠ×ľ ×Ľ×ª×ķ×ĳ\nØ¬Ùħ Ùĩ\nØ¬ÙħÙĩ ÙĪØ±ÙĬØ©\nà¸ī à¸ļ\nà¸īà¸ļ à¸±à¸ļ\nĠC Ã²n\nà¸ľ à¸ªà¸¡\nãģªãģ© ãģĮ\n×Ĳ×Ķ ×ĳ\nĠÐ´ÐµÐ¹ÑģÑĤÐ² Ð¸Ñı\ny Ä±z\nà¹Ħà¸¡à¹Ī à¹Ģà¸Ħà¸¢\nØ¬ ÙĪØ²\n×Ķ×Ĺ×ľ×ĺ ×Ķ\nf Ã¤llt\nãĥĵ ãĤ¸\nãĥĵãĤ¸ ãĥį\nãĥĵãĤ¸ãĥį ãĤ¹\nĠ×Ĳ ×Ļ×ł×Ŀ\nĠÐ½Ð°ÑħÐ¾Ð´ Ð¸ÑĤÑģÑı\nĠdzi ÅĽ\nØ³Øª Ø·ÙĬØ¹\n×ľ ×Ļ×Ł\nØ® ÙĦØ§Ùģ\nÙĩ ÙĲ\nĠatr Ã¡s\níĺ ģ\nãĤĴ ãģĶ\nĠ×Ķ×ŀ ×ķ×¦×¨\nĠBakan lÄ±ÄŁÄ±\nÑİÑī ÐµÐµ\nÙħÙĨ Ø§Ø·\nÙħÙĨØ§Ø· ÙĤ\nÙģ Ø¯\nà¸Ļà¸³ à¹Ħà¸Ľ\nĠÐ² Ð°Ð¶\nĠÐ²Ð°Ð¶ Ð½Ð¾\nĠm áº¡ch\n×Ľ ×ł×ķ\nØ¨Ø¹ Ø«\nlan masÄ±\nĠa yr\nĠayr Ä±l\nìĤ¬ íļĮ\nd ÃŃa\np ÅĤyw\nØ§Ùħ ÙĬØ©\níĺ ľ\n×Ĳ×ł ×Ĵ×ľ\n×Ĳ×ł×Ĵ×ľ ×Ļ×ª\nĠìŀĪëĭ¤ ëĬĶ\nĠØ³ Ø§Ø¹Ø©\nĠëĤĺ íĥĢ\nb Ã¶\nà¸Ħ à¸±à¸Ļ\nĠdziaÅĤ ania\nØ© Ùĭ\nĠng Å©\n×ł×¦ ×Ĺ\nãģ¯ ãģĤãĤĭ\nĠyaÅŁ Ä±nda\nst Ã¼ck\ncar acter\ncaracter ÃŃsticas\nĠr á»Ńa\nĠÙħØ®ØªÙĦÙģ Ø©\nãģ«ãģĬ ãģĳãĤĭ\nà¹ģà¸ŀ à¸ĩ\nà¸§à¸´ à¹Īà¸ĩ\n×ª ×¤×ķ\nØ³Ø§ ÙĩÙħ\nä½¿ ãģĨ\nÙĥ Ø±ÙĬ\n×Ĳ ×¤×Ļ\n........ .......\nĠÑĤÐ°Ðº Ð¸Ð¼\n×Ļ×Ľ ×ķ×Ļ\nØ´ Ø¨Ùĩ\nØ¬ ÙĬØ±\nãģĿãģ® ãģ¾ãģ¾\nac jÄĻ\nĠØ§ÙĦØª Ø±Ùĥ\nĠØ§ÙĦØªØ±Ùĥ ÙĬ\nĠÐ¿ÑĢÐ°Ð² Ð¸Ð»ÑĮÐ½Ð¾\nĠØª Ø¹ÙħÙĦ\nà¸ģà¸¥ à¹īà¸²\nĠbi Ãªn\nĠ×ĳ×ł×Ļ ×Ļ×ª\nĠÐºÐ» ÑĥÐ±\nĠ×ŀ ×©×Ķ\nÐ² ÑĪÐ¸Ð¹\nãģĵãģ¨ãģĮãģ§ãģį ãĤĭ\nà¸ŀà¸±à¸Ļà¸ĺ à¸¸\nà¸ŀà¸±à¸Ļà¸ĺà¸¸ à¹Į\n×¨ ×ķ×Ŀ\nĠØ§ÙĦÙģ Ø±ÙĨ\nĠØ§ÙĦÙģØ±ÙĨ Ø³ÙĬ\nà¹Ģà¸Ľà¹ĩà¸Ļ à¸Ħà¸Ļ\nãģĹãģ¦ ãģĬãĤĬ\nĠth áº§y\nãĤĵ ãģłãģĳãģ©\nìĶ ¨\nÙħ Ø¯ÙĨ\nØª ÙĪÙĨ\nĠÐ¼ÐµÑĤ Ð°Ð»\nĠÐ¼ÐµÑĤÐ°Ð» Ð»\nĠin ÃŃcio\nà¸Ńà¸Ńà¸ģ à¸Īà¸²à¸ģ\nëĴ ¤\nĠcu á»ĳn\nĠbu á»Ļc\nÙĨ Ø³ÙĬ\nÃ¤ cht\n×ŀ ×Ļ×ł×Ļ×Ŀ\nãģķ ãģ¦\nãģĮ ãģ§ãģį\nÑĬ ÐµÐ¼\nĠtÃ¡ i\nĠÐ§ ÑĤ\nĠÐ§ÑĤ Ð¾Ð±Ñĭ\nà¸Ľà¸¥ à¸¹à¸ģ\nà¸Ĭà¸¸à¸¡ à¸Ĭà¸Ļ\nÐ½ ÑģÐºÐ¸Ð¹\nĠv á»¯ng\nĠ×Ķ ×ľ×ĳ\nÃ« le\nĠ×© ×¢×ĳ×¨\nÐ² Ð°ÑĤÑĮÑģÑı\nÐ± Ð¾Ð¹\nØ¹ ÙĪÙĨ\nà¹ģà¸Ķ à¸Ļ\nĠ×¡×¤×¨ ×Ļ×Ŀ\nĠt uyÃªn\nĠnhi Ãªu\nĠQu Ã½\nĠh uyáº¿t\nãĤı ãģĭãĤīãģªãģĦ\nĠ×ŀ ×Ľ×Ł\nĠ×Ķ ×§×ľ\nĠ×ľ×Ĳ ×ķ×¨\nĠÄĲi á»ĩn\nØ´ Ø¤\nØ´Ø¤ ÙĪÙĨ\nĠ×ŀ×Ĺ ×¤×©\nĠÐ¿Ð¾ÑģÑĤÐ¾ÑıÐ½ Ð½Ð¾\n×ŀ ×Ļ×¨\nìħ Ķ\nÐŀ Ñģ\nÐŀÑģ Ð½Ð¾Ð²\n×ĸ ×Ļ×ª\nĠH Ã¡\nĠÑĩÐ°Ñģ Ð¾Ð²\n×Ĳ ×ķ×ľ×Ļ\nĠm Ã¡t\nØ® Ø±ÙĪ\nØ®Ø±ÙĪ Ø¬\nÙĤ Ø¶Ø§\nÙĤØ¶Ø§ ÙĬØ§\nà¹Ģà¸Ľ à¸Ńà¸£à¹Į\nĠÙĬ ÙĪÙĦ\nĠÙĬÙĪÙĦ ÙĬÙĪ\nà¹Ĥà¸Ĺ à¸©\n×ł ×¤×ľ\n×ª ×ķ×©\n×ª×ķ×© ×ĳ×Ļ\nĠv Ã¡rios\n×ŀ ×¨×Ĳ×Ķ\nëĿ¼ ìĿ´\nÙĨ Øº\n×ĳ ×¦×¢\nÐ³ Ð¾Ð½\nĠÄĲ Æ°á»£c\nØ¹ Ùı\nÐ¿ÑĥÑģ Ðº\nĠÙĪØ§ÙĦ Ùģ\nÃ¼c Ã¼\n×Ļ×§ ×Ļ×Ŀ\nĠØ³ Ø¨ÙĬÙĦ\n×ľ×ĳ ×Ł\nĠØ§ÙĦÙĤ Ø±ÙĨ\n×¡ ×ķ×ª\nĠQu áºŃn\nãģĵãĤĮ ãģĮ\nãĥĸ ãĥ©ãĥ³ãĥī\n×Ĵ ×ŀ×¨\nĠwarto ÅĽci\nĠÙĪØ¨ ÙĬÙĨ\nĠd áº¡\nÐĲ Ð²\nÐĲÐ² ÑĤÐ¾\nĠol acaktÄ±r\nà¸Ļ à¸Ĺà¹Į\nÙħ Ø·Ø§Ø±\nĠ×¢ ×§×ĳ\nĠ×ª ×¤\nãģĹãģ¦ ãģĦãģ¦\n×¦ ×ŀ×Ĺ\nà¸Ī à¸Ńà¸ĩ\nĠÃ¶ de\nìį ¨\nÙĨ Ø§Ø³\nèª¿ ãģ¹\nĠÐ¾Ð³ÑĢ Ð¾Ð¼Ð½\në³´ íĹĺ\n×ĺ ×§\n×ĺ×§ ×¡×ĺ\nĠbaÅŁ v\nĠbaÅŁv uru\nĠpom ys\nĠpomys ÅĤ\nãģ« ä¹Ĺ\nĠ×© ×Ľ×Ł\nĠØ§ÙĦÙħØ³ Ø¤ÙĪÙĦ\nĠÐ· Ð°Ð½\nĠÐ·Ð°Ð½ ÑıÑĤ\nĠd Æ°Æ¡ng\nãĥĹãĥ¬ ãĤ¤\nà¸¥ à¸ļ\nÑĤÐ¸ ÐºÐ°\nĠAr alÄ±k\nĠÐ½ÐµÐ´ Ð¾\nĠm á»Ļ\nĠor an\nĠoran Ä±\nĠktÃ³ r\nĠktÃ³r Äħ\nĠ×Ķ×Ĳ×Ĺ×¨ ×ķ×ł×ķ×ª\nØ§Ø¦ ÙĨ\nÅĦ s\nÅĦs ka\nåĽ½ ãģ®\n×ŀ ×ĺ×Ļ\nĠÐ²Ð¾Ð¿ÑĢÐ¾Ñģ Ñĭ\nà¸Ńà¸ĩà¸Ħà¹Į à¸ģà¸£\n×ŀ ×ķ×¦×Ĳ\nĠpÃ³ Åº\nĠpÃ³Åº niej\n×©×ŀ ×Ĳ×ľ\nĠk aps\nĠkaps am\nĠkapsam Ä±nda\nĠmÃ¡ quina\nĠÅĽwie cie\nĠho Ãłng\nĠÃ¶z gÃ¼\n×Ĵ×ķ×¨ ×Ŀ\nãģĤ ãģŁãĤĬ\nà¸ķà¸±à¸Ķ à¸ªà¸´à¸Ļ\nà¸ķà¸±à¸Ķà¸ªà¸´à¸Ļ à¹ĥà¸Ī\nÐ± ÑĢÐ¸\nãģ«ãģªãĤĭ ãģ¨\nØª ÙĥÙĪÙĨ\nĠ×ķ×Ķ ×Ļ×Ĳ\nĠchi áº¿u\nÑģÑĤÐ°Ð½ Ð°Ð²\nÑģÑĤÐ°Ð½Ð°Ð² Ð»Ð¸\nÑģÑĤÐ°Ð½Ð°Ð²Ð»Ð¸ Ð²Ð°\n×ŀ ×ķ×Ĵ\nc itÃ©\nĠK Ã¶rper\nĠ×© ×Ĵ×Ŀ\nØ¹ Ø¸\nØ¹Ø¸ ÙĬÙħ\nĠ×Ķ×Ĳ ×Ļ×©×Ļ\nĠmat iÃ¨re\nĠÙģ ÙĪÙĤ\nĠk to\nĠkto ÅĽ\nà¸Ļ à¹Ĥà¸¢\nà¸Ļà¹Ĥà¸¢ à¸ļà¸²à¸¢\nå¾ħ ãģ¡\nà¹Ģà¸¡ à¸Ļ\nà¹Ģà¸¡à¸Ļ à¸¹\nA ÃĩÃĥO\nĠt Ã¹\nĠtÃ¹ y\nãĥĪ ãĥ³\nĠÐ¾ÑĤ ÐºÐ°Ð·\nĠ×ŀ ×ķ×¦×¨\nÃ¼l Ã¼\nãģķãĤĵ ãģ«\nĠ×Ĺ ×ķ×ĳ\n×§×¨ ×Ļ×Ĳ×Ķ\nĠØ§ÙĦØ® Ø¯ÙħØ§Øª\nĠÙĦÙħ Ø¯Ø©\nØ± Ø¤\nØ±Ø¤ ÙĬØ©\nãĤĴè¦ĭ ãģ¤ãģĳ\nà¸Ł à¸²\nĠrÃ©uss i\nà¸Ļà¸±à¸ģ à¹Ģà¸£à¸µà¸¢à¸Ļ\nĠÑĩÐ¸Ñģ Ð»\nà¸ģà¸²à¸£ à¹Ģà¸¥à¹Īà¸Ļ\nĠhaz Ä±rl\nĠhazÄ±rl an\nĠÐ¿ÐµÑĢÐ² ÑĭÐ¹\nÐ»Ð¸ Ð¼\nĠÐ¾ÑĤÐ·ÑĭÐ² Ñĭ\nĠwy jÄħ\nĠwyjÄħ tk\nĠØ£ ÙĤÙĦ\n×¡ ×ļ\nĠê²° ìłķ\nĠ×ľ×ŀ×¢ ×©×Ķ\nĠl áº¯p\nà¹ģà¸ļ à¸£\nà¹ģà¸ļà¸£ à¸Ļà¸Ķà¹Į\nà¸§à¹Īà¸² à¹Ģà¸Ľà¹ĩà¸Ļ\nĠØ¨ Ø¯Ø§\nĠØ¨Ø¯Ø§ ÙĬØ©\nãģ¨ãģĦãģĨ ãģ®ãģĮ\nÐ¸ÑĩÐµÑģÐº Ð¸Ð¼\nà¸ģà¸²à¸£ à¸ŀà¸±à¸Ĵà¸Ļà¸²\nĠb Ãło\nĠmia ÅĤa\ny waÄĩ\nĠMÃ¤r z\nĠÙĨ Ø³Ø¨Ø©\nĠÃ©conom ique\n×ĸ ×ŀ\n×ĸ×ŀ ×ł×Ļ×Ŀ\næŃ¢ ãĤģ\nĠt á»§\níķĺ ìĭł\nĠkaÅ¼de go\nstra ÃŁe\nà¸Ĭ à¸µà¹ī\nà¹Ģ à¸ļà¸²\nÑĢÐµÑģ ÑĥÑĢÑģ\nÐµÐ² Ð¾Ð¹\nØ´ Ø¨Ø§Ø¨\nà¸ķà¹Īà¸²à¸ĩ à¸Ľà¸£à¸°à¹Ģà¸Ĺà¸¨\nĠ×Ĳ ×Ļ×©\nĠ×Ĳ×Ļ×© ×Ļ×ª\n×Ļ ×ķ×¤\n×Ļ×ķ×¤ ×Ļ\nĠìļĶ êµ¬\nì¡° ìĤ¬\nãģ£ãģŁ ãĤī\n×ľ ×Ļ×§\nÐ¼Ð¸Ð½Ð¸ÑģÑĤ ÑĢ\nãĤĤãģ® ãģ¯\nĠl Æ°Æ¡ng\nĠÐ½Ð° Ð¸\nĠÐ½Ð°Ð¸ Ð±Ð¾Ð»\nĠÐ½Ð°Ð¸Ð±Ð¾Ð» ÐµÐµ\níİ ĺ\nà¹ģà¸ŀ à¹ī\nãĤŃ ãĥ¥\nĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÐ¼\nà¹ģà¸Ĺ à¸ĩ\nà¹ģà¸Ĺà¸ĩ à¸ļà¸Ńà¸¥\nĠ×ł ×Ļ×Ķ\nĠ×ł×Ļ×Ķ ×ķ×ľ\nâĤ ª\nĠGi áº£i\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°\nëł¥ ìĿĦ\nãģĹãģĭ ãĤĤ\nà¸ģà¹ĩ à¸ķà¹īà¸Ńà¸ĩ\nĠÑĢ ÐµÐ±\nĠÑĢÐµÐ± ÐµÐ½\nĠÑĢÐµÐ±ÐµÐ½ ÐºÐ°\nØª ÙĪØ§ØµÙĦ\nãĤ°ãĥ« ãĥ¼ãĥĹ\nãĤĦ ãĤī\nà¹Ģà¸Ľà¸´à¸Ķ à¸ķà¸±à¸§\nÐ± ÑĢÐ¾\në°ĸ ìĹĲ\nÙĨ ÙİØ§\n×Ķ ×Ĵ\n×Ķ×Ĵ ×ł×Ķ\nà¸Ĺ à¸£à¸±\nà¸Ĺà¸£à¸± à¸ŀ\nà¸Ĺà¸£à¸±à¸ŀ à¸¢à¹Į\nĠkh á»ĳi\n×¢×¦ ×ŀ×ķ\nÐ±Ð¾Ð» ÐµÐ·Ð½\nĠë°Ľ ìķĦ\nà¸¡ à¸Ļ\nà¸¡à¸Ļ à¸¸\nà¸¡à¸Ļà¸¸ à¸©\nà¸¡à¸Ļà¸¸à¸© à¸¢à¹Į\nâĹ Ĩ\n×ŀ ×¦×ľ×Ļ×Ĺ\nÑıÐ² Ð»ÐµÐ½Ð¸Ðµ\nÙħ Ø·ÙĦ\nÙħØ·ÙĦ ÙĪØ¨\nØ® Ø§ÙĦÙģ\nØª ÙĪÙĤÙģ\nãģ§ãģį ãģ¾ãģĽãĤĵ\nÐ¾ÑģÑĤ ÐµÐ¹\nÐ¼ ÐµÑĩÐ°\nê¸° ëĬĶ\n×ª×© ×¢\nØµ ÙĬØ¨\nĠ×ĳ×¢ ×ķ×ĵ\nà¸Ĥà¸Ńà¸ĩ à¹Ģà¸Ĥà¸²\nÑĤÑı Ð¶\nĠÑĥ Ð¿ÑĢÐ°Ð²\nĠÑĥÐ¿ÑĢÐ°Ð² Ð»ÐµÐ½Ð¸Ñı\nĠgÃ©n Ã©r\nĠth ÃŃ\n×¤ ×ļ\nĠØ± ÙħØ¶\nĠØ±ÙħØ¶ Ø§ÙĨ\nĠtr uyá»ĩn\nØ¥ Ø¹Ø¯Ø§Ø¯\nãĤµ ãĥĿãĥ¼ãĥĪ\nĠÐ¿Ð¾Ð» Ð½Ð¾\nØ® Ø§Ùħ\nÐŁ ÐµÑĤ\nÐŁÐµÑĤ ÐµÑĢ\nÐŁÐµÑĤÐµÑĢ Ð±ÑĥÑĢ\nÐŁÐµÑĤÐµÑĢÐ±ÑĥÑĢ Ð³\nÙħÙĨØª Ø¯Ùī\nãģķãĤĮ ãģ¾ãģĹãģŁ\nĠëĮĢ íķĺìĹ¬\nà¸ľà¸¹à¹ī à¸Ĺà¸µà¹Ī\nĠ×ŀ×Ĳ ×ķ\n×ľ ×ł×ĵ\nÐ¾Ñĩ Ð½ÑĭÐµ\nĠÐ½Ð°Ñĩ Ð°Ð»Ð°\nĠ×ľ ×Ļ×ľ×ĵ×Ļ×Ŀ\nÐ¾Ð² Ð¾Ðµ\nãģĻãĤĭãģĵãģ¨ ãģ§\nĠØ§ÙĦÙĨ Ùģ\nĠØ§ÙĦÙĨÙģ Ø·\nìŀĪ ëĬĶ\nØº ÙĨÙĬ\n×¤ ×ĵ\nãĤ ¾\nĠCr Ã©\nãģ© ãģ¡ãĤī\nØ« Ø§ÙĨ\nÑĢÐ°Ð± Ð°ÑĤ\nÑĢÐ°Ð±Ð°ÑĤ ÑĭÐ²Ð°\nĠê°Ļ ëĭ¤\nà¸Ī à¸±\nà¸Īà¸± à¸ģà¸£\nĠch á»¥\nĠchá»¥ p\nĠÐ¼ Ð°ÑģÑĤ\nĠÐ¼Ð°ÑģÑĤ ÐµÑĢ\nĠn áº¯m\nĠÑģÑĤ Ð°Ð»Ð¸\nĠ×Ķ×Ĳ ×Ļ×¨×ķ×¢\nãĤ½ ãĥ³\nåĪĨ ãģĭãĤĬ\nØ· Ø¨Ø¹\nØ¨Ø¯ Ø§\ngr Ã¡fico\nÐ³ ÐµÑĢ\nà¸Ķà¸³à¹Ģà¸Ļà¸´à¸Ļ à¸ģà¸²à¸£\nĠsal dÄ±r\nĠsaldÄ±r Ä±\nÐ² ÑĪÐ¸Ñħ\nãģĭãģ£ãģŁ ãģ§ãģĻ\nĠyapÄ± yor\nĠØ§ÙĦÙģ Øª\n×¦×¨ ×¤×ª\nÐ· Ð´Ð¾ÑĢÐ¾Ð²\n×ĳ×¢ ×ľ\nĠ×Ĳ ×ŀ×Ļ×ª×Ļ\nĠÐ¾Ð± Ñĭ\nĠÐ¾Ð±Ñĭ Ñĩ\nĠÐ¾Ð±ÑĭÑĩ Ð½Ð¾\nĠ×ľ ×ķ×ŀ×¨\nØª ÙĥÙĨ\nØªÙĥÙĨ ÙĪÙĦÙĪØ¬\nØªÙĥÙĨÙĪÙĦÙĪØ¬ ÙĬØ§\nĠhakk Ä±\nĠÑĢÐ°Ð ²\nĠÑĢÐ°Ð² Ð½Ð¾\nØ±ÙĬ Ùĥ\nĠ×ĳ ×ŀ×Ļ×ĵ\nĠ×ĳ×ŀ×Ļ×ĵ ×Ķ\nà¹ģà¸ģ à¹īà¸§\nĠìĸ ĺ\nĠìĸĺ ê¸°\nãģĹãģ¦ ãģĦãģ¾ãģĹãģŁ\nĠkÄ± sm\nĠkÄ±sm Ä±\nê± ¸\nåĨħ ãģ®\nì§ ķ\nà¹Ģà¸«à¸¡à¸·à¸Ńà¸Ļ à¸ģà¸±à¸Ļ\nĠÙģ ÙĲ\nĠÙģÙĲ ÙĬ\nÙĤ Ø§Ø¹Ø¯Ø©\nĠmoÅ¼ esz\nÙħ ØµØ§ÙĦ\nÙħØµØ§ÙĦ ØŃ\nãģ¾ãģŁ ãģ¯\nÐ± ÐµÐ³\nĠs Ä±c\nĠsÄ±c ak\nÑĩ Ð¸Ñģ\nÑĩÐ¸Ñģ Ð»ÐµÐ½\nĠÐ½ Ð¾Ð³\nãĥģãĥ£ ãĥ³\nãĥ« ãĥī\nĠgi Ã³\nĠs Ä±nÄ±\nĠsÄ±nÄ± f\nÐ¸Ð² Ð°ÑĤÑĮ\nĠqu Ãªn\nĠì łģ\nĠìłģ ìļ©\nĠJo Ã£o\nÙģ Ø§Ø¯\nĠGl Ã¼ck\nà¸Ĺ à¸Ńà¸Ķ\nĠg Ã³i\nï¼ Ĭ\nĠdÃ© tail\nĠØ¯ÙĬ Ø³Ùħ\nĠØ¯ÙĬØ³Ùħ Ø¨Ø±\në¡ľ ìĦľ\n×ŀ ×ķ×Ĺ\nà¹Ħ à¸®\nĠÐ¾ÑĤ Ð´\nĠÐ¾ÑĤÐ´ ÑĭÑħ\nĠkh uyáº¿n\nà¸Ħ à¸Ńà¸¢\nĠØ¬ ÙĨÙĬ\nĠØ¬ÙĨÙĬ Ùĩ\nĠØ§ÙĦØ¯ ÙģØ§Ø¹\nà¸Ļà¹īà¸³ à¸«à¸Ļà¸±à¸ģ\nĠìĤ¬ëŀĮ ëĵ¤ìĿ´\nĠth á»«a\nĠÃ¶ÄŁrenc i\nĠÐ¿Ð¾Ð¼Ð¾Ñī Ð¸\nĠczÄĻ ÅĽÄĩ\n×© ×ĺ×¨\nĠN hi\nĠNhi á»ģu\n×ł ×¦×Ļ\nĠÐ½Ð°ÑĪ ÐµÐ¼\nĠkarÅŁÄ± laÅŁ\nĠ×Ķ×© ×ł×Ļ×Ŀ\nĠÄĲ Æ°á»Ŀng\nĠtr Ãº\nĠÑĢÐ°Ð·Ð»Ð¸Ñĩ Ð½ÑĭÑħ\nĠØ§ÙĦØ´ ÙĩØ±\nĠ×ľ×¢ ×ķ×ľ×Ŀ\nØŃ Ø¬Ø±\nĠÄĳ á»ķ\nĠìĿĺ íķ´\nà¸ļ à¹Īà¸Ńà¸¢\nĠ×Ķ ×Ļ×ľ×ĵ\nãģ¨ãģª ãģ£ãģŁ\nĠ×Ĺ×ķ ×ķ×ª\nĠ×©×Ļ×¨×ķ×ª ×Ļ\nÄħ cy\nØ³ Ø±ÙĬ\nK Ä°\n×¤ ×ł×ķ\nÑģÑĤÑĢÑĥÐº ÑĤÑĥÑĢ\nÑĤ ÑĢÑĥÐ´\nĠ×Ķ ×§×¨\nĠ×Ķ×§×¨ ×ķ×ĳ\nĠth áºŃm\nèģŀ ãģį\nÙĤÙĪ ÙĬ\nÐºÐ»ÑİÑĩ ÐµÐ½\nÑĤÐµ Ñħ\nÑĤÐµÑħ Ð½Ð¾Ð»Ð¾Ð³\nè¡Į ãģ£ãģŁ\nĠ×ķ×Ĳ ×Ļ×Ł\nĠÅŁek lin\nĠÅŁeklin de\nr Ã´\nÑĢ Ð¾Ð³\nĠÐ½Ð¾Ð² ÑĭÐµ\nĠ×¡ ×ĳ×Ļ×ĳ\nĠtecn ologÃŃa\n×¡ ×Ľ\n×¡×Ľ ×ķ×Ŀ\nĠÅŀ ub\nĠÅŀub at\nĠ×Ķ×ŀ ×ľ×Ĳ\nĠwy pos\nĠwypos aÅ¼\nãģ¯ ä½ķ\nãĤ¬ ãĥ³\nê° ĸ\nĠÐºÐ°Ðº Ð¸Ðµ\nĠÃ§ocuk lar\nĠ×ľ×¦ ×ĵ\nĠkay Ä±t\nĠÐ¼ÐµÑģÑĤ Ðµ\nÙħ Ø¯ÙĬÙĨØ©\nĠ×Ľ ×Ĵ\nĠ×Ľ×Ĵ ×ķ×Ł\nãģĹãģ¦ ãĤĭ\nĠÙħØ§ ÙĬÙĪ\nãģ£ãģ¦ãģĹãģ¾ ãģ£ãģŁ\nĠÐ¿ÑĢÐ¾Ð³ÑĢÐ°Ð¼Ð¼ Ñĭ\nà¹ģà¸¥ à¸Ļà¸Ķà¹Į\nãĥ¯ ãĤ¤\n×¢×¨ ×ķ×¥\nÑģ Ð¸Ð´\nĠB Ã¶yle\nĠì²ĺ ìĿĮ\nĠ×ª ×¤×§×Ļ×ĵ\nĠTr Ãªn\níĥ Ī\nĠÐłÐ¾ÑģÑģ Ð¸Ð¹\nĠÐłÐ¾ÑģÑģÐ¸Ð¹ ÑģÐºÐ¾Ð¹\nĠs Ãłn\nĠrÃ¨ gle\nĠyaklaÅŁ Ä±k\nà¹Ģà¸¥ à¸´à¸ģ\nĠØ¯ Ø§Ø¦Ùħ\nĠ×ķ ×Ĵ\nØ§Ø¨ Ø±\nĠb Ã¨\nĠØ§ÙĦ ÙĤØ¯Ùħ\nĠÑĢÐµÑĪ ÐµÐ½Ð¸Ñı\nhi Ãªn\nÑĤÐ¸ Ðº\nÄ Ħ\nà¸ļà¸£à¸£ à¸¢à¸²à¸ģ\nà¸ļà¸£à¸£à¸¢à¸²à¸ģ à¸²à¸¨\n×¨×¦ ×ķ×Ł\nåĭķ ãģį\nĠGÃ¤ ste\nĠê¸° ë³¸\nĠÙĬ Ø¹Ø±Ùģ\nĠS á»Ń\ngÅĤ ÄĻb\nà¹Ģà¸Ń à¸ª\n×Ĳ×ŀ ×Ļ×Ł\nĠÐ¿ ÑĥÐ½Ðº\nĠÐ¿ÑĥÐ½Ðº ÑĤ\nĠ×Ļ×ķ×ĵ ×¢×Ļ×Ŀ\nãĤ« ãĥ©ãĥ¼\nĠ×ĳ×¡ ×ĵ×¨\nĠbu á»ĵn\nÐ¹ ÑĤ\nÐ¹ÑĤ ÐµÑģÑĮ\nãĤĴ æ±ĤãĤģ\nĠ×Ĳ×ª ×Ľ×Ŀ\nĠëª¨ ë¥´\nØ¸ Ø±ÙĪÙģ\nÑĩ ÐµÑģÑĤÐ²Ð¾\nìĸ´ ìĦľ\nĠÐ¾Ð´ Ð½Ð°\nĠkap Ä±\nĠëħ¸ ëł¥\nĠKÃ¼ che\nĠØ§ÙĦØª Ø´\nØ· ÙĬØ¨\nĠíĬ¹ íŀĪ\nĠÐ²ÑĭÐ¿ ÑĥÑģ\nĠÐ²ÑĭÐ¿ÑĥÑģ Ðº\n×ĵ ×ª×Ļ\nĠu ÄŁ\nĠuÄŁ ra\nØ§Ø¦ ÙĩØ§\nĠtho Ã¡t\nãģª ãĤĤãģ®\nÑĳ ÑĢ\nê¸° ê°Ģ\nĠgeliÅŁ me\nØªØŃ ÙĤ\nØªØŃÙĤ ÙĤ\nĠÐ¾Ð¿ Ð°Ñģ\nÐ± ÑĢÐ¾Ñģ\nà¸« à¸¸\nà¸«à¸¸ à¹īà¸Ļ\nì¼ Ģ\nãĤ¹ ãĥŀ\nãĤ¹ãĥŀ ãĥĽ\nØ£ ÙģØ±\nØ£ÙģØ± Ø§Ø¯\nĠTh á»±c\nĠth áº¯\nãĥªãĥ³ ãĤ¯\nĠni á»ģm\nĠHÃ¶ he\nØ¹Ùħ Ø§Ø±\nÙĥÙĪØ± ÙĪÙĨ\nÙĥÙĪØ±ÙĪÙĨ Ø§\nĠÄĲ áº¿n\nĠÑģÐ°Ð¼ Ð¾Ð¼\nĠÑĤ ÐµÐ»Ðµ\nĠÄĳo Ã¡n\nà¸Ħà¸§à¸²à¸¡à¸Ħà¸´à¸Ķ à¹Ģà¸«à¹ĩà¸Ļ\nĠÐ´ Ð¸ÑģÐº\nØ£ Ø·ÙģØ§ÙĦ\nà¸¡ à¸²à¸£à¹Į\nà¸Ĺ à¸«à¸²à¸£\nà¸Ĺ à¸Ļ\nĠØ¨ Ø¹ÙĬØ¯\nĠØ§ÙĦÙĩ ÙĨØ¯\nåĩº ãģĹãģ¦\nĠkar de\nĠkarde ÅŁ\n×Ķ×Ļ×¡×ĺ ×ķ×¨\n×Ķ×Ļ×¡×ĺ×ķ×¨ ×Ļ×Ķ\néģ¸ ãģ³\nØ¹ Ø§ÙħÙĦ\nà¸Ĥ à¸¢à¸²à¸¢\nĠtÃ¼ rl\nĠtÃ¼rl Ã¼\nĠìĿ¼ ìĿ´\nĠmatÃ© ria\nĠ×Ľ×ľ ×ķ×ŀ×¨\nãĥģãĥ£ ãĥ¼\nØ¬Ùħ Ø§Ø¹Ø©\nĠÑģÐ²Ð¾ Ð¸Ð¼\nØ¥ÙĤ Ø§ÙħØ©\nä¾ĭ ãģĪãģ°\nØ³ Ø§Ø¨\nØ¢ Ø®Ø±\nÙĤ Ø¯ÙĬØ±\n×Ĳ×ŀ ×Ļ\nìĸ »\nĠ×ł×ķ×¡ ×¤×ª\nĠÐĴ Ð»Ð°Ð´\nĠÐĴÐ»Ð°Ð´ Ð¸Ð¼\nĠÐĴÐ»Ð°Ð´Ð¸Ð¼ Ð¸ÑĢ\nĠest arÃ¡\nãģĵãģĨ ãģĦãģĨ\nãĤĴ ä½¿çĶ¨\nà¸¡à¸² à¸ķà¸£\nà¸¡à¸²à¸ķà¸£ à¸Ĳà¸²à¸Ļ\nãģ£ãģ ½\nĠn Ãº\nĠnÃº i\nà¸¢ à¸²à¸ĩ\nĠØ§ÙĦØ¬ ÙĨØ³\nĠÃ¼st Ã¼n\nëľ »\nãĤ» ãĥ«\nãģ¦ãģĦ ãģįãģ¾ãģĻ\nĠ×Ĺ ×ķ×ĸ\nĠ×Ĺ×ķ×ĸ ×¨\nĠÐĵ Ð»Ð°Ð²\nà¹Ĥà¸Ĭ à¸Ħ\níı Ĳ\nÙĨØª Ø¸Ø±\nĠ×Ĵ ×ĳ×Ļ\nØ¹ ÙĤØ¨\nint Ã©r\nintÃ©r Ãªt\n×ŀ ×¤×Ĵ\n×ŀ×¤×Ĵ ×©\nĠth Ã¹\nØ§Ùģ Øª\nĠ×ŀ×© ×¤\nĠ×ŀ×©×¤ ×ĺ×Ļ\nĠÙħ ÙĪØ§ÙĤØ¹\nè¦ ļ\nè¦ļ ãģĪ\n×ĵ ×Ļ×Ł\nà¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ à¸£à¸²à¸§\nãģ¾ ãģĤ\nĠgh áº¿\nÐ¸ÑĢÑĥ ÑİÑĤ\nà¸ģ à¸§\nà¸ģà¸§ à¹īà¸²à¸ĩ\nĠÐ¿Ð¾Ð² ÐµÑĢ\nĠÐ¿Ð¾Ð²ÐµÑĢ Ñħ\nĠÐ¿Ð¾Ð²ÐµÑĢÑħ Ð½Ð¾ÑģÑĤ\n×ł ×ĵ×¨\nĠÐºÐ¾Ð½ ÑĨÐµ\nĠÐ´Ð¾Ð»Ð¶ Ð½Ð°\nĠ×Ļ×© ×Ļ×¨\nacaÄŁÄ± z\nìĹ Ķ\nĠn ÃŃvel\nĠÃ¶ r\nĠÃ¶r nek\nÙĥ Ùģ\nĠÐ¤ÐµÐ´ÐµÑĢ Ð°ÑĨÐ¸Ð¸\nĠêµ¬ ìĦ±\nà¸«à¸±à¸§ à¹ĥà¸Ī\nĠV áºŃy\nÐ¼ ÐµÐ´\nÐ¼ÐµÐ´ Ð¸\nÐ¼ÐµÐ´Ð¸ ÑĨÐ¸Ð½\nÐ¼ÐµÐ´Ð¸ÑĨÐ¸Ð½ ÑģÐº\nØ§Ø² ÙĬ\n×Ĵ×ĳ ×ķ×ľ\nÑĦ ÑĢ\nĠzus Ã¤tzlich\nà¸ģ à¸ģ\nĠØ§ÙĦØ§ÙĤØªØµØ§Ø¯ ÙĬØ©\nĠh Ã¨\nlu ÄŁun\nØ¬ Ùİ\nà¹Ħà¸Ł à¸¥à¹Į\nÄĲ T\nãģĿãģ® ä»ĸ\nà¸Ĺà¸´ à¹īà¸ĩ\nĠØ§ÙĦØ£ ÙĪ\nØ± Ø³Ùħ\næ°Ĺ ãģ¥\nìĿ´ ë©°\nÑĮ ÐµÐ²\nØµ Ø·\nĠØ§ÙĦØ§Ø³Øª Ø«\nĠØ§ÙĦØ§Ø³ØªØ« ÙħØ§Ø±\nà¸Ńà¸² à¸Ħà¸²à¸£\nĠÑĤÐ¾Ñĩ Ð½Ð¾\nĠV Ã¢n\nà¸Ń à¸£\nà¸Ńà¸£ à¹Īà¸Ńà¸¢\nĠØ§ÙĦØ³ ÙĨØ©\nĠc Æ°á»Ľi\n×Ļ×Ķ ×Ł\níį ¼\nè©± ãģĹ\nâĹ ĭ\nĠìķĬ ìĿĢ\nãĥ¡ ãĥ¼ãĤ\nãĥ¡ãĥ¼ãĤ «\nãĥ¡ãĥ¼ãĤ« ãĥ¼\nĠÑĤÐµÐ¿ Ð»Ð¾\nå½¼ ãĤī\nĠÄ° z\nĠÄ°z mir\níĻ į\nĠr Æ°á»£\nĠrÆ°á»£ u\næĢĿãģĦ åĩº\nĠPh áº¡m\nĠchÃ¡ u\n×¦×Ļ ×ķ×ª\nĠìĿ¼ ë³¸\nìĤ¬ ëĬĶ\nĠÑģÐ¾Ð·Ð´ Ð°Ð½\nĠar acÄ±\nĠ×¢ ×¨\nĠ×¢×¨ ×Ļ×Ľ×Ķ\nĠíķĺëĤĺëĭĺ ìĿĺ\ndzi ÅĤ\nà¸Ľà¸£à¸° à¸ĺà¸²à¸Ļ\nĠser ÃŃa\nĠìŀĪ ëıĦë¡Ŀ\nØ¯Ø± Ø¬\níķľëĭ¤ ëĬĶ\nà¸Ńà¸² à¸Ĺ\nà¸Ńà¸²à¸Ĺ à¸´à¸ķ\nà¸Ńà¸²à¸Ĺà¸´à¸ķ à¸¢à¹Į\nÑĤÐµÐ»ÑĮ Ð½ÑĭÐ¹\nĠØ® Ø¯ÙħØ§Øª\n×ŀ×ł ×ĺ\nĠl Æ°á»£c\nĠS Ãłi\nĠÙĪ Ø§Ø¶\nĠÙĪØ§Ø¶ ØŃ\nØº Ø§Ø²\nĠdoÄŁ al\nĠ×ĳ×© ×Ŀ\nĠÐ´ Ð»Ð¸Ð½\nĠØ¥ Ø·Ø§Ø±\nĠ×ĳ×¡ ×¤×¨\nãĤĴ ä¸İ\nãĤĴä¸İ ãģĪ\nĠë²ķ ë¥ł\nĠÑĥ Ð²ÐµÐ»Ð¸\nĠÑĥÐ²ÐµÐ»Ð¸ ÑĩÐ¸\nà¸ª à¹Ħà¸ķ\nà¸ªà¹Ħà¸ķ à¸¥à¹Į\nà¹Ħ à¸ģà¸¥\n×ĳ×Ĺ ×Ł\nĠìĿ´ íĽĦ\nĠm unic\nĠmunic ÃŃpio\nØªÙħ Ø«ÙĦ\nĠÄĳ Ã¡o\nH Ã´tel\nĠl á»Ńa\nĠÄĳ áº³ng\nÑĩ ÐºÐ¸\nØ´ Ø±ÙĪ\nØ´Ø±ÙĪ Ø·\nĠìĿ´ ë¥¼\nÙĬ ÙĭØ§\n×ŀ×ľ ×ļ\n×ŀ×Ķ ×Ļ×¨×ķ×ª\nĠÐ¾Ð±ÑıÐ· Ð°ÑĤÐµÐ»ÑĮ\nĠÐ¾Ð±ÑıÐ·Ð°ÑĤÐµÐ»ÑĮ Ð½Ð¾\nÃ© nergie\nĠmud anÃ§a\nĠm á»¥\nĠmá»¥ n\nĠn Âº\nĠØ§ÙĦØª Ø¹Ø§\nĠØ§ÙĦØªØ¹Ø§ ÙĪÙĨ\nĠØ§ÙĦØ§Ø¬ØªÙħØ§Ø¹ ÙĬØ©\nĠÐ¿ Ð»Ð°ÑģÑĤ\nĠëĵ± ìĿĺ\nãĥĲãĤ¤ ãĤ¯\nÙĩØ¬ ÙĪÙħ\nĠSa Ãºde\nĠì¤ĳìļĶ íķľ\nĠ×Ķ×¦ ×Ļ×ĳ×ķ×¨\n×ª×§ ×Ł\nĠØ§ÙĦØ¹Ø§ÙĦÙħ ÙĬ\nĠÐ±Ð¾Ð»ÑĮÑĪ Ð¾Ð¹\nĠÙĥ ÙĦÙħ\nĠÙĥÙĦÙħ Ø©\nãģ®ãģ§ãģ¯ãģªãģĦ ãģ§ãģĹãĤĩãģĨãģĭ\nĠÙħ Ø¨Ø§Ø±Ø§Ø©\nĠ×©×Ĳ ×ł\nĠ×©×Ĳ×ł ×Ĺ×ł×ķ\nãĤ¹ãĤ¿ ãĤ¤ãĥ«\nĠSa ÄŁ\nĠSaÄŁ lÄ±k\nĠh Æ°\n×ł ×Ĺ×Ķ\nĠ×ĳ ×§×¨×ĳ\nØ· Ø¹Ùħ\nà¸« à¸´à¸Ļ\nà¸Ĺà¸¸à¸ģ à¸§à¸±à¸Ļ\nà¸Ħà¸£à¸±à¹īà¸ĩ à¸Ĺà¸µà¹Ī\nĠlÃł nh\nĠdonn Ã©\nãģĽ ãģĦ\nØ¬Ø² ÙĬØ±Ø©\nÐ´Ð¾ÑĢ Ð¾Ð¶\nì¼ ľ\nØªÙĨØ¸ ÙĬÙģ\nãĥģ ãĥ§\nĠald Ä±ÄŁÄ±\nØ¬ Ø§Ø¬\nĠÑĤ Ð¾Ð¼Ñĥ\nà¸Ľ à¸´\nĠ×ĳ×¨ ×©×ª\nãģıãģªãĤĬ ãģ¾ãģĻ\nĠÐ¿ÑĢÐ¸Ð½ ÑĨÐ¸Ð¿\nĠ×Ĺ ×ľ×ķ\nëı ¼\n×ķ×Ĵ ×©\nØ³ Ø³\nà¸Ľ à¸¹\nĠh áº§u\næĦŁãģĺ ãĤĭ\nï¼ ´\nØ¯ ÙĪØ§\nĠÑģÐ¼ Ð¾Ð³\nscri Ã§Ã£o\nĠth áºŃn\nĠ×¨ ×ķ×Ĳ×Ķ\nÐ¾Ð±ÑĢÐ°Ð¶ ÐµÐ½\nĠØ§ÙĦØªØ¬ Ø§Ø±ÙĬØ©\nØ· Ø¨ÙĬØ¹\njÄħc Äħ\níĸī ìľĦ\nĠÐ½Ð¾Ð² ÑĭÐ¹\nĠ×ŀ ×Ĺ×ĵ×©\næĮ¯ ãĤĬ\ngu Ã©\nĠ×Ĳ ×Ļ×¨×ķ×¢\nĠ×Ĳ×Ļ×¨×ķ×¢ ×Ļ×Ŀ\nĠØ§ÙĦ Ø°ÙĩØ¨\n×ĵ ×Ĳ\nØª Ø§ÙĨ\nãģł ãģĹ\nà¸Ńà¸± à¸ķà¸£à¸²\nà¹Ĥ à¸Ī\nØ¨ÙĦ Ø§Ø¯\n×Ķ×Ļ ×Ļ×ł×ķ\nĠÑģÐ¿ Ðµ\nĠÑģÐ¿Ðµ ÑĨÐ¸Ð°Ð»ÑĮÐ½Ð¾\nĠÅĽwi ata\nãĤĵãģ§ãģĻ ãĤĪ\nØ´Ø± ÙĥØ©\nĠpÅĤ yt\nĠsitu Ã©\nĠ×Ľ×Ĳ ×ľ×Ķ\n×¡ ×ĳ×¨\nĠkaÅ¼ d\nĠkaÅ¼d ym\nãĤĴæĮģ ãģ¤\n×ľ×Ķ ×ľ\n×ľ×Ķ×ľ ×Ł\nĠwÅĤ as\nĠwÅĤas ne\nĠsaÄŁ lan\n×ŀ×¢ ×ľ×Ķ\nĠØ§ÙĦØ§ ÙĪÙĦ\nìĹĲìĦľ ëıĦ\n×Ĳ×Ļ×¨ ×ķ×¤×Ķ\nØªÙĤ ÙĨÙĬØ©\nÙħ Ø§Ø¦\nÙħØ§Ø¦ Ø©\nĠcompaÃ± ÃŃa\nĠsÃ¼ rek\nĠsÃ¼rek li\nĠÐ¸Ñģ ÐºÑĥÑģ\nĠÐ¸ÑģÐºÑĥÑģ ÑģÑĤÐ²\nĠB Ã¼rger\n×ª ×Ĺ×¨\n×ª×Ĺ×¨ ×ķ×ª\nà¸ŀà¸£à¹īà¸Ńà¸¡ à¸ģà¸±à¸ļ\nØ´ Ùħ\nà¸ĸà¸·à¸Ń à¸§à¹Īà¸²\nè¾¼ ãĤĢ\nä¼ĳ ãģ¿\nĠØ§ÙĦØ£ Ø¨\nĠÑģÑĤÐ¾Ð¸Ð¼ Ð¾ÑģÑĤÑĮ\nĠÐ¿ÑĢÐ°Ð² Ð°\nmay Ä±n\nà¸« à¸§à¸¢\nĠØ§ÙĦØ· Ø¨ÙĬØ¹ÙĬ\nà¸Ĺà¸µà¹Ī à¸ŀà¸±à¸ģ\nĠEst Ã¡\nÑĭÐ²Ð° ÑİÑĤ\nØ¨ Ø³ÙĬ\nØ¨Ø³ÙĬ Ø·\nĠ×ĳ×¢ ×ĳ×¨\nåı¯èĥ½ ãģ§ãģĻ\nĠ×ĵ ×ķ×ľ\nĠ×ĵ×ķ×ľ ×¨\nÙĩ ÙİØ§\nÐ²Ð¾ÑĢ Ð¾ÑĤ\nãģ¦ ãģĦãģ¾ãģĹãģŁ\nà¹Ĥà¸Ĺà¸£ à¸¨\nà¹Ĥà¸Ĺà¸£à¸¨ à¸±\nà¹Ĥà¸Ĺà¸£à¸¨à¸± à¸ŀ\nà¹Ĥà¸Ĺà¸£à¸¨à¸±à¸ŀ à¸Ĺà¹Į\nĠ×§ ×ł\nĠØ§ÙĦØ« ÙĨ\nĠØ§ÙĦØ«ÙĨ Ø§Ø¦ÙĬØ©\nĠco Ã»t\nà¸ķà¸´à¸Ķ à¸ķà¸±à¹īà¸ĩ\nĠÃ¶ rg\nĠÃ¶rg Ã¼t\nĠØ§ÙĦØ® ÙĦÙĬ\nĠØ§ÙĦØ®ÙĦÙĬ Ø¬\nĠb á»įn\n×ķ×ľ×ķ×Ĵ ×Ļ\nëŀ ľ\nĠÐĳ Ð¾Ð»ÑĮ\nĠÐĳÐ¾Ð»ÑĮ ÑĪ\n×Ĵ ×ĳ×¨×Ļ×Ŀ\nÙĤ ÙĬØ¯\n×ĳ×Ļ×ĺ ×ķ×Ļ\næīĵ ãģ¡\nĠol muÅŁ\nf Ã¤h\nfÃ¤h ig\nà¸¥ à¸²à¸Ļ\nĠÙĤ Ø·Ø±\n×© ×¤×Ķ\nèªŃ ãĤĵãģ§\nà¸Ĥ à¸§à¸²\nĠchi áº¿m\nãĤ¤ãĥ³ ãĤ¿\nãĤ¤ãĥ³ãĤ¿ ãĥ¼ãĥ\nãĤ¤ãĥ³ãĤ¿ãĥ¼ãĥ į\nãĤ¤ãĥ³ãĤ¿ãĥ¼ãĥį ãĥĥãĥĪ\nĠ×ľ×©×ŀ ×ķ×¨\nĠØª Ø±Ùĥ\nĠØªØ±Ùĥ ÙĬØ§\n×¨ ×ķ×ĺ\nãģ¨æĢĿ ãģĦãģ¾ãģĹãģŁ\nĠØ§ÙĦØª ÙĤ\nĠd Æ°\nãģ¦ãģıãĤĮ ãĤĭ\nãģĹãģŁ ãģĵãģ¨\nĠrÃ³Å¼ ne\nĠØ§ÙĦØ· ÙģÙĦ\nĠPost Ã©\nĠ×ŀ×© ×ķ×Ŀ\nÑį ÑĢ\nĠÑĢÐ°Ð±Ð¾ÑĤ Ð°ÐµÑĤ\nãĤ· ãĥª\nãĤ·ãĥª ãĥ¼ãĤº\nĠ×ĳ×Ķ ×Ĺ×ľ×ĺ\n×§×Ķ ×Ļ×ľ×Ķ\nãĤ« ãĥ¡\nãĤ«ãĥ¡ ãĥ©\nï¼ ¯\nĠìĤ¬ ìĿ´\nĠk Ã¬\nĠth Æ°á»Ľc\nØ¶ Ø¨Ø·\nÙĤØ¨ ÙĪÙĦ\nåĪ¥ ãģ®\nĠparticul iÃ¨re\nĠÑģÐ²Ð¾ ÐµÐ¼\nĠ×¢ ×¡×§\nĠ×¢×¡×§ ×Ļ×Ŀ\n×ĳ×Ĺ ×Ļ×¨×ķ×ª\n×ĳ ×Ļ×ł×ķ\nà¸ĭ à¸Ń\nĠ×¢ ×ķ×ĳ×¨\nãģłãģ£ãģŁ ãģ®ãģ§\nÄ±ld Ä±ÄŁÄ±\nÙħ Ø¯Ø§Ø±\nÙħØ¯Ø§Ø± Ø³\nì£¼ ìĭľ\nà¸Ńà¸² à¸¨\nà¸Ńà¸²à¸¨ à¸±à¸¢\nĠt áº¥m\nà¸ŀà¸´ à¸Ī\nà¸ŀà¸´à¸Ī à¸²à¸£\nà¸ŀà¸´à¸Īà¸²à¸£ à¸ĵà¸²\nÑĤÐµÐ»ÑĮ Ð½ÑĭÐµ\nÑģÐº ÑĥÑİ\nÐľ Ðĺ\nà¹Ģà¸ģ à¸²\nà¹Ģà¸ģà¸² à¸«à¸¥\nà¹Ģà¸ģà¸²à¸«à¸¥ à¸µ\n×ĵ ×Ĺ\nà¹Ģà¸Ĭ à¸´à¸ĩ\nĠØ¯ ÙĤÙĬÙĤØ©\níķĻ ìĥĿ\nĠ×©×Ĳ ×ľ×Ķ\nĠcontr Ã´le\nĠsit uaÃ§Ã£o\nà¸Ĥà¸Ńà¸ĩ à¸ľà¸¹à¹ī\nÙĨ Ø·ÙĤ\nê³¼ íķĻ\nà¸«à¸¥à¸²à¸¢ à¸Ħà¸Ļ\nĠn áº¯ng\nÙĤ Ùı\nì¡° ê±´\nÑ ķ\nãĥĥ ãģ¨\n×ŀ ×Ļ×ľ×Ķ\nGr Ã¼n\n×Ļ ×Ļ×¢\n×Ļ×Ļ×¢ ×ķ×¥\n×ŀ×ł ×Ľ\në ŃĲ\n×ŀ×¢ ×ŀ×ĵ\nà¸ªà¸³ à¸Ļà¸±à¸ģ\nØ¬ Ø¯Ø¯\nà¸Ħ à¸±à¸Ķ\nĠ×Ķ×ŀ×© ×¤\nĠ×Ķ×ŀ×©×¤ ×Ĺ×Ķ\n×ŀ×© ×§×ľ\nÙĦ Ùı\nĠty tu\nĠtytu ÅĤ\nÑĪ ÐµÐ¹\nĠìĿ¼ ë¶Ģ\nÑĪ ÐµÐ½Ð¸Ðµ\nĠph Ã³ng\nĠìĹŃ ìĤ¬\nãĤ« ãĥ³\nĠtÃº i\nĠÙĨ ÙĪÙģ\nĠÙĨÙĪÙģ ÙħØ¨Ø±\ngr Ã¼n\nĠØ§ÙĦØ´ ÙħØ§ÙĦ\nÅĽwi adc\nÅĽwiadc zenie\n×¢×¨ ×Ķ\nĠ×¢ ×ķ×ĳ\nĠ×¢×ķ×ĳ ×ĵ×Ļ×Ŀ\n×ĵ×ķ×Ĵ ×ŀ×Ĳ\nä»Ĭ ãģ¯\nĠv Ã£o\nĠÐ¢ ÐµÐ¼\nÑģ Ð¸Ð»ÑĮ\nĠch á»£\nÙħ Ø±Ø§\nÙħØ±Ø§ ÙĤØ¨\nà¹Ħà¸¡à¹Ī à¸£à¸¹à¹ī\nĠØ± Ø§Ø¦Ø¹\n×Ĳ×ł ×Ĺ×ł×ķ\nà¸ªà¹Īà¸ĩ à¹Ģà¸ªà¸£à¸´à¸¡\n×¦ ×Ĺ\nĠìŀĪìĸ´ ìĦľ\nĠkur ulu\nĠkurulu ÅŁ\nĠÃĸ zellik\nĠÃĸzellik le\nĠ×ª ×Ļ×§\nĠgh Ã©\nĠspr zÄĻ\nĠsprzÄĻ t\n×¢×¨ ×ķ×ª\nØ±Ø§ ØŃØ©\nãģ£ ãģį\nãģ£ãģį ãĤĬ\nĠìķĦ ëŀĺ\nstit uiÃ§Ã£o\nĠÐ´Ð¾Ð»Ð¶ Ð½Ð¾\n×Ķ ×¨×©\n×Ķ×¨×© ×ŀ×Ķ\n×Ķ×ľ ×ļ\nãģ¡ ãģª\nãģ¡ãģª ãģ¿\nãģ¡ãģªãģ¿ ãģ«\n×¤ ×Ĺ×ĵ\nĠØ§ÙĦØ¬ ÙħÙĬØ¹\n×ĳ×¢ ×ľ×Ļ\nĠtr Ã¹ng\nĠ×¤ ×ª×Ĺ\n×ŀ×ľ×Ĺ ×ŀ×ª\nãĥĨ ãĥ¼ãĥ\nãĥĨãĥ¼ãĥ ŀ\nÙħ ØªØ§Ø¨\nÙħØªØ§Ø¨ Ø¹Ø©\nĠëª¨ ìĬµ\nÙĬ Øµ\nåĲĪ ãģĨ\nĠY ap\nĠYap Ä±\nĠÑģ ÐºÐ°Ð·Ð°ÑĤÑĮ\nëª °\nà¸Ĺà¸µà¹Ī à¸ªà¸³à¸Ħà¸±à¸į\nĠìĹĨ ìĬµëĭĪëĭ¤\nĠnh áº¯c\nĠÃ¼lk eler\nĠÐ¼Ð½Ð¾Ð³ Ð¸Ðµ\níķĺ ìħ¨\nà¸¡à¸²à¸ģ à¸Ĺà¸µà¹Īà¸ªà¸¸à¸Ķ\nà¸ģ à¹īà¸²\nà¸ģà¹īà¸² à¸§\nĠÄ° yi\nÐ» ÐµÐ¶\nÐ»ÐµÐ¶ Ð°\nãĤ¸ ãĥ§\nà¸Ĺà¸± à¸ŀ\nØ§ ÙĪØ±\nĠ×Ĺ×ĳ×¨ ×Ļ\nĠ×ľ ×©×Ŀ\nì² «\nĠT á»Ń\n×ŀ ×ķ×ł×Ļ\nÙĤ ÙĪØ¯\nà¸ģà¸£à¸° à¹Ģà¸Ľ\nà¸ģà¸£à¸°à¹Ģà¸Ľ à¹ĭ\nà¸ģà¸£à¸°à¹Ģà¸Ľà¹ĭ à¸²\nĠÐ¿ÑĢÐ¾Ð±Ð»ÐµÐ¼ Ñĭ\nĠaÃ§ Ä±s\nĠaÃ§Ä±s Ä±ndan\nĠ×Ķ×ŀ ×Ľ\nĠÙħØ¹ Ø¸Ùħ\nÙĤÙĬ Ø§Ø³\nĠÐ¿ÑĢÐ¾Ð´ Ð¾Ð»Ð¶\nĠÐ¿ÑĢÐ¾Ð´Ð¾Ð»Ð¶ Ð°\nĠver diÄŁi\nĠÐ¿ÑĢÐµÐ´ Ð¼ÐµÑĤ\nãģĦãģ¾ãģĻ ãģĮ\nĠëĶ° ë¥¸\nĠØ§ÙĦ ÙĤÙĬØ§Ùħ\nĠØ¥ÙĦÙĬ ÙĩØ§\nÐ¢ ÐĲ\nÐ¿ Ð¾Ð·\nãĤ· ãĥ¥\nä¸ĬãģĮ ãĤĬ\nà¹Ģà¸Ķà¸´à¸¡ à¸ŀà¸±à¸Ļ\nà¸ģà¸¸ à¸¥\nØŃØ± ÙĬØ©\n×§×ĳ×ķ×¦ ×ķ×ª\në¯ ¿\nĠØ§ÙĦÙħ ÙĨØ§\nĠØ§ÙĦÙħÙĨØ§ Ø·ÙĤ\nĠÐ²ÑĭÐ¿ Ð¾Ð»\nĠÐ²ÑĭÐ¿Ð¾Ð» Ð½Ñı\nãĥĭ ãĤ¢\nĠê²° êµŃ\n×Ĺ ×ķ×ŀ\n×Ĺ×ķ×ŀ ×¨×Ļ×Ŀ\nĠÐ£ÐºÑĢÐ° Ð¸Ð½Ñĭ\nà¸« à¸Ńà¸¡\n×¨ ×Ļ×¡\nĠÑħÐ¾ÑĤ ÐµÐ»\nĠÐ¾Ð±ÑĢÐ°Ð· Ð¾Ð²Ð°Ð½Ð¸Ñı\nĠkh áº³ng\nĠm Æ°a\nĠgÃ¶r me\nĠgÃ¼Ã§ lÃ¼\nØ³Ø¹ Ùī\nà¸¡à¸±à¹Īà¸Ļ à¹ĥà¸Ī\níķĺ ê²łìĬµëĭĪëĭ¤\nĠÐ¿Ð¾Ð» Ñĥ\nĠfÃ¼n f\nãģ¨æĢĿ ãģ£ãģ¦ãģĦãģ¾ãģĻ\nĠê·¸ê²ĥ ìĿĢ\nĠdÃ¼ÅŁÃ¼n ce\nìŀ ł\nĠH Æ°á»Ľng\nĠTi á»ĥu\nĠÃ§ ift\nãģĳ ãģ°\nà¸Īà¸Ļ à¸ĸà¸¶à¸ĩ\nà¸Ĺà¸³ à¹Ħà¸Ķà¹ī\nĠìŀĲ ì²´\nĠd Ãµ\nĠdÃµ i\nà¸Ī à¸±à¸Ļ\nà¸Īà¸±à¸Ļ à¸Ĺ\nà¸Īà¸±à¸Ļà¸Ĺ à¸£à¹Į\nece ÄŁini\n×ł×ķ×¢ ×¨\nØº Ø§Ø±\nĠØ§ÙĦØ£ÙħØ±ÙĬ ÙĥÙĬ\nØ¯Ø§Ø¹ Ø´\nĠÐ±ÐµÐ·Ð¾Ð¿Ð°Ñģ Ð½Ð¾ÑģÑĤÐ¸\nĠÐ± Ñİ\nĠÐ±Ñİ Ð´Ð¶\nĠÐ±ÑİÐ´Ð¶ ÐµÑĤ\nãĥĬ ãĤ¤\nà¸ŀà¸ļ à¸§à¹Īà¸²\nda ÄŁ\n×Ĳ ×ķ×¤×Ł\níĹ Į\nãĥĢãĤ¤ ãĤ¨\nãĥĢãĤ¤ãĤ¨ ãĥĥãĥĪ\nĠëĮĢ íĨµ\nĠëĮĢíĨµ ëł¹\nD Ä°\nØ£ ØŃØ¯Ø§Ø«\nĠA ÄŁ\nĠAÄŁ ust\nĠAÄŁust os\nØŃÙĦ ÙĪÙĦ\nĠw ÅĽ\nĠwÅĽ rÃ³d\nĠÑģÐ¾ Ð¾ÑĤÐ²ÐµÑĤ\nĠÑģÐ¾Ð¾ÑĤÐ²ÐµÑĤ ÑģÑĤÐ²\nĠÑģÐ¾Ð¾ÑĤÐ²ÐµÑĤÑģÑĤÐ² Ð¸Ð¸\nĠLu áºŃt\nĠ×Ľ×ľ ×¤×Ļ\nĠÐ² ÐµÑī\nĠÐ²ÐµÑī ÐµÑģÑĤÐ²\n×§ ×Ļ×¥\nĠØ¨Ùĩ Ø°Ø§\nØ¹Ø§ Ø´\nà¹Ģà¸Ľà¹ĩà¸Ļ à¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ\nÐ¢ Ðķ\nĠ×ĳ×Ĳ ×Ļ×ł×ĺ×¨×ł×ĺ\nØ³ Ø¹Ø¯\nĠ×Ķ×ĺ ×Ļ×¤×ķ×ľ\n×¤ ×Ļ×¡\nà¸ĩà¹Īà¸²à¸¢ à¹Ĩ\nĠGer Ã¤t\n×ľ ×Ļ×ĵ×Ķ\nĠÑĢ Ð¸ÑģÐº\n×ľ×§ ×Ĺ\nÐ½ Ð½Ð°Ñı\n×¨ ×Ļ×ĵ\nÐ¿ ÑĢÐ°ÐºÑĤÐ¸\nÐ¿ÑĢÐ°ÐºÑĤÐ¸ Ðº\nà¸Ĥà¸±à¹īà¸Ļ à¸ķà¸Ńà¸Ļ\nà¸Ļà¹Īà¸² à¸£à¸±à¸ģ\nlarÄ±nÄ±z Ä±\nà¸Ńà¸Ļà¸¸ à¸įà¸²\nà¸Ńà¸Ļà¸¸à¸įà¸² à¸ķ\nĠzdjÄĻ cia\nĠb Ã¢y\nÑģ ÑĢ\nÑģÑĢ Ð¾Ñĩ\nãĥĭ ãĥ³ãĤ°\nĠÃ¶ ner\nĠÃ¶ner i\nĠÐ½Ð¾Ð² ÑĭÑħ\nØ¯Ø¹ ÙĪØ©\nĠg áº¯n\nĠØ§ÙĦÙĦ Ø¨ÙĨ\nĠØ§ÙĦÙĦØ¨ÙĨ Ø§ÙĨÙĬ\nãĥĨãĤ£ ãĥ¼\nĠØµ ØŃÙĬØŃ\nÐµÐ¼ ÑĭÑħ\nçĸ² ãĤĮ\nĠÐ¿ÑĢÐ¾ Ð¸Ñģ\nĠÐ¿ÑĢÐ¾Ð¸Ñģ ÑħÐ¾Ð´Ð¸ÑĤ\nà¸ª à¸ķà¸´\nĠT áº¿t\nĠ×Ķ×ľ ×ľ×ķ\nà¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ à¸Ļà¸µà¹ī\n×ŀ×ĳ ×ł×Ķ\nĠconte Ãºdo\nĠØ§ Ø®Øª\nĠØ§Ø®Øª ÙĬØ§Ø±\nÙħ Ø³ÙĦ\nÙħØ³ÙĦ Ø³ÙĦ\nëı Ī\nĠ×ľ ×Ļ×ĵ\nà¸ŀà¸´ à¸ĺà¸µ\nĠÑģÐ¾Ð² Ñģ\nĠÑģÐ¾Ð²Ñģ ÐµÐ¼\nãģĮãģĤãĤĬ ãģ¾ãģĹãģŁ\nĠsÃ³ ng\nØ¥ ØµÙĦØ§ØŃ\në§ ģ\nÙģ ÙĬØ±\nĠJe Å¼eli\nìłľ ëıĦ\nd ÅĤug\nìĥģ ìĿĦ\nĠc áºŃn\nĠhá»į p\nØ£ Ø³Øª\nØ£Ø³Øª Ø§Ø°\nĠ×ŀ ×Ļ×©×Ķ\nĠ×ŀ×Ļ×©×Ķ ×ķ\nĠd Ãły\nĠch Ãłng\nãģ¡ãĤĥãĤĵ ãģ¨\nĠÄĳ Ã¡m\nĠsw Ã³j\nĠpoder Ã¡\nĠÐ¾ÑĤÐ»Ð¸Ñĩ Ð°\nĠpÃ©ri ode\nÃ¼nd ig\n×ĺ×¢ ×Ł\nÑģÑĤÑĢÐ¾ Ð¸ÑĤÐµÐ»ÑĮ\n×¨ ×ª×Ļ\nĠ×Ļ×Ķ ×Ļ×ķ\n×ľ ×¡\nĠØ§ÙĦÙħÙĨ Ø²ÙĦ\nà¸Ļà¸´ à¹īà¸§\nÐ¸ÑĦ Ð¸ÐºÐ°\nÐ¸ÑĦÐ¸ÐºÐ° ÑĨÐ¸\nðŁĺ ī\nĠad Ä±na\nãĢĤãĢĤ ãĢĤ\n×Ĳ ×Ļ×Ł\n×¡ ×Ļ×¨\nĠÙĬ Ø¹Ø¯\nçŃĶ ãģĪ\nØ§ÙĦ Ø¬Ø²\nØ§ÙĦØ¬Ø² Ø§Ø¦Ø±\nÐµÐ½ÑĮ Ðº\nà¸£ à¸«\nà¸£à¸« à¸±à¸ª\nĠTÃ¼rk Ã§e\nê¾ ¸\nĠ×Ļ ×ķ×Ľ×ľ\nĠ×© ×ķ×ł×Ķ\nĠ×ĳ×ŀ ×¦×ĳ\nĠÐ´ÐµÐ¹ÑģÑĤÐ² Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\nĠØ¨Ø£ÙĨ Ùĩ\n×ŀ×§ ×ĵ\nĠ×Ķ×© ×§\nØ®ÙĬ Ø§Ø±Ø§Øª\nĠf Ä±\nĠfÄ± rs\nĠfÄ±rs at\nëĳ ĺ\nĠìĦľ ìļ¸\nĠ×Ķ×Ĵ ×ķ×£\nØ± Ø¹Ø§\nØ±Ø¹Ø§ ÙĬØ©\nĠK áº¿t\nÐº ÑģÐ¸\nĠÑĥÑģÐ»ÑĥÐ³ Ð¸\nÐ½Ð¾ÑģÑĤ ÐµÐ¹\nìļ´ ëıĻ\nĠÐ¾Ð±ÑĬ Ñı\nĠÐ¾Ð±ÑĬÑı Ð²Ð»\nÐ½ ÐµÐ¶\n×Ķ×¤ ×ļ\nĠ×ĳ×¢ ×Ļ×ł×Ļ\nëĨ Ĵ\nĠÐ¿ÑĢÐ¾ÑĨ ÐµÐ´\nĠÐ¿ÑĢÐ¾ÑĨÐµÐ´ ÑĥÑĢ\nĠiht iy\nĠihtiy acÄ±\nĠë°Ķ ëŀį\nĠë°Ķëŀį ëĭĪëĭ¤\nà¸ģà¸¥ à¸±à¸§\nĠÑģÐ» Ð¾Ð¶Ð½Ð¾\n×§×Ļ ×Ļ×ŀ×ª\nĠÄĲ Ã¬nh\nĠÙħ ÙĦÙģ\nĠà¹Ĥà¸Ķà¸¢ à¸¡à¸µ\nĠkat kÄ±\nØªØŃ ÙĪÙĬÙĦ\nà¹Ħ à¸ŀ\nĠH á»į\nÃ± e\nĠÐ´Ð¾ ÑħÐ¾Ð´\nĠtho áº£i\níķĺìĹ¬ ìķ¼\nãĤ¹ãĥĿ ãĥ¼ãĥ\nãĤ¹ãĥĿãĥ¼ãĥ Ħ\nĠG Ã²n\nĠk Ã¨\nĠkÃ¨ m\néĢ² ãĤģ\nãĤ¹ ãĥ¼ãĥ\nãĤ¹ãĥ¼ãĥ ĳ\nãĤ¹ãĥ¼ãĥĳ ãĥ¼\nĠgiÃł u\nĠØ¥ Ø¹Ø§Ø¯Ø©\nĠ×ľ ×ķ×§\nĠ×ľ×ķ×§ ×Ĺ\nĠÑħÐ¾Ñĩ ÐµÑĤ\n×ĺ ×ľ×ķ×ķ\n×ĺ×ľ×ķ×ķ ×Ļ×ĸ\n×ĺ×ľ×ķ×ķ×Ļ×ĸ ×Ļ×Ķ\nĠth uyáº¿t\nãģĿãĤĮ ãģ§\nĠvard Ä±\nà¹Ħà¸£ à¹ī\nØ¹ Ø¨Ø¯\nĠRep Ãºblica\nãĥ¼ãĤ¿ ãĥ¼\nĠ×ŀ×Ĳ ×ķ×ª\nà¹Ħà¸Ľ à¹ģà¸¥à¹īà¸§\nĠyapÄ±l acak\nãĤ¹ãĤ¿ ãĥ¼ãĥĪ\nãģ» ãģ¼\nĠko ÅŁ\nĠÐ¼Ð°ÑĤ ÐµÑĢÐ¸\nĠsiÃ¨ cle\nĠØ§ÙĦÙħ Ø®ØªÙĦÙģ\nĠØ§ÙĦÙħØ®ØªÙĦÙģ Ø©\nĠ×ľ×§ ×¨×Ĳ\nĠ×ľ×§×¨×Ĳ ×ª\nĠ×Ķ×¤ ×ķ×¢×ľ\nĠt Ã²a\nĠr Æ¡i\nåĳ¨ ãĤĬ\nà¸Ŀ à¸Ļ\nj ÅĽÄĩ\nĠìķĬ ìĿĦ\nØ§ÙĨØª ÙĤØ§ÙĦ\nëĸ ł\nÐ¸Ð² Ð°ÐµÑĤ\nãĥĪ ãĥ«\nĠØ§ÙĦÙģÙĦØ³Ø·ÙĬÙĨ ÙĬØ©\nà¸ģà¸¥à¹Īà¸²à¸§ à¸§à¹Īà¸²\nØ§ ÙĥØª\nĠÃĸ l\nĠÑĢÐµ ÑĪÐ¸\nĠÑĢÐµÑĪÐ¸ Ð»\nĠ×ł×ķ×¡ ×¤×ķ×ª\nĠìłķ ì¹ĺ\nÐ²Ð» ÐµÑĩÐµÐ½\nÙħØ± ØŃÙĦØ©\nĠcome Ã§a\nĠy Ä±k\nìĤ ´\nà¸ĺ à¸Ļà¸²\nà¸ĺà¸Ļà¸² à¸Ħà¸²à¸£\nà¸Ńà¸Ļ à¸²\nà¸Ńà¸Ļà¸² à¸Ħ\nà¸Ńà¸Ļà¸²à¸Ħ à¸ķ\nĠpeque Ã±a\nä»ķ äºĭãĤĴ\nĠØ¨ Ø°ÙĦÙĥ\nĠÐ½Ð¾Ð² Ð¾Ð³Ð¾\nãģĹãģ¦ ãģĦãģªãģĦ\nĠØ§ÙĦÙħ ÙĬØ§Ùĩ\nà¸ģà¹ĩ à¹Ģà¸Ľà¹ĩà¸Ļ\nĠÐ¶ ÑĥÑĢ\nĠÐ¶ÑĥÑĢ Ð½Ð°Ð»\nÐ² ÐµÑģ\nØ®Øª Ø§Ø±\nĠë§¤ ìļ°\nĠM Ã£\nĠÐ°Ð²ÑĤÐ¾Ð¼Ð°ÑĤ Ñĭ\nØ¶Ø¹ Ùģ\nĠØ§ÙĦÙģ ÙĥØ±\nãģ§ãģĻ ãģ®ãģ§\nãĥ¡ãĥ³ ãĥĲãĥ¼\nĠÐº ÑĢÑĥÐ³\nĠØ§ÙĦØ³ÙĦ Ø·Ø©\nà¸Ħà¸£à¸±à¹īà¸ĩ à¹ģà¸£à¸ģ\nà¸ģà¸£à¸°à¸Ĺ à¸£à¸§\nà¸ģà¸£à¸°à¸Ĺà¸£à¸§ à¸ĩ\nÑĨ Ð¾Ð²\néķ· ãģĦ\nå¤§ãģį ãģĦ\nĠgeÃ§ miÅŁ\nìĦ± ìĿ´\nĠ×¦×¨ ×Ļ×Ľ×Ķ\nĠÐ¼ Ð¾Ñī\nĠÐ¼Ð¾Ñī Ð½\nĠ×§ ×Ļ×©\nĠ×§×Ļ×© ×ķ×¨×Ļ×Ŀ\nĠNas Ä±l\nÐ³ ÑĢÐ°Ð½\nĠ×ŀ ×ķ×¦×¨×Ļ×Ŀ\nĠ×ŀ×¡ ×ķ×Ĵ\nĠy Ã¼r\nĠyÃ¼r Ã¼t\nĠ×ľ×Ĺ ×¦×ķ\n×ķÖ ¼\nĠìŀĪ ìĹĪëĭ¤\nĠter Ã¶r\nĠTh Æ°Æ¡ng\nĠÙĪ ÙĬÙħ\nĠÙĪÙĬÙħ ÙĥÙĨ\nØ¬ ÙĪÙĨ\nĠÙĪØºÙĬØ± ÙĩØ§\n×ŀ ×¤×ķ\n×Ĵ×ķ×¨ ×ŀ×Ļ×Ŀ\n×Ľ×ĳ ×Ļ×©\nĠØ§ÙĦÙĦ Øº\nĠØ§ÙĦÙĦØº Ø©\nØ´Ø± Ùĥ\nĠØ§ÙĦØ± Ø§Ø¨\nĠØ§ÙĦØ±Ø§Ø¨ Ø¹\nĠÐ¿ÑĢ ÐµÐº\nĠÐ¿ÑĢÐµÐº ÑĢÐ°Ñģ\nĠÐ¿ÑĢÐµÐºÑĢÐ°Ñģ Ð½\nĠenerg ÃŃa\n×§×ĵ ×ŀ×Ļ\nãģıãģª ãģ£ãģŁ\nĠÄĳ á»©\nĠÄĳá»© a\nServ i\nServi Ã§o\nĠkald Ä±r\nåĥį ãģį\nĠÐ¾Ð´ ÐµÐ¶\nĠÐ¾Ð´ÐµÐ¶ Ð´\në¬¼ ìĿĦ\nãģĿãģĨ ãģ§\nãģĮãģĤ ãĤĮãģ°\nìĻ ķ\n×¦×ĵ ×§\nĠart Ä±r\nĠile ti\nĠileti ÅŁim\nãĤĪãģĨ ãģ§\nãĥĪ ãĥ¼\nãĤ¢ ãĥĭ\nãĤ¢ãĥĭ ãĥ¡\n×ĺ×Ļ ×Ļ×ľ\nãĥķ ãĥªãĥ¼\nãĥĿ ãĥ³\nÐŁÑĢ Ð¾\nĠØ¹ Ø§ÙĦÙĬØ©\nĠÃ¶ÄŁ ret\nĠÃ¶ÄŁret men\nĠÐºÐ°ÑĩÐµÑģÑĤÐ² Ð°\nĠ×Ķ×ĺ ×ĳ×¢\nĠÐ·Ð½Ð° Ñİ\nãģ¦ ãģıãĤĭ\nĠm á»«ng\nÙħÙĪ Øª\n×© ×ķ×ŀ×¨\n×Ĺ×ľ ×ĳ\nĠwzgl ÄĻ\nĠwzglÄĻ du\në²Ī ì§¸\nĠtá» ĵ\nĠtá»ĵ n\nãĥ¯ãĥ¼ ãĤ¯\nĠpo Å¼ycz\nĠpoÅ¼ycz k\n×Ļ ×ķ×¦×¨×Ļ×Ŀ\nÙĥØ± Ùħ\nĠÐ³ Ð°ÑĢ\nĠÐ³Ð°ÑĢ Ð°Ð½\nĠÐ³Ð°ÑĢÐ°Ð½ ÑĤÐ¸\nà¸¥ à¹īà¸²à¸ĩ\nĠìĺģ íĻĶ\n×ĺ ×Ļ×¡\nĠth áº»\nĠìŀĪëĭ¤ ê³ł\nØ§ÙĦØª Ø²\nØ§ÙĦØªØ² Ø§Ùħ\nĠÐ½Ð° ÑĪÐ¸\nis Ã©e\nãģĵãĤĮ ãĤĴ\nĠm áº½\nØ¶ ÙĦ\nØ¨ÙĪ Øª\nĠ×Ľ ×Ľ×Ķ\nh á»Ł\nĠØ§ÙĦØ³ ÙĪØ±ÙĬØ©\nĠ×ľ×¢ ×ķ×ŀ\nĠ×ľ×¢×ķ×ŀ ×ª\nĠbaÅŁ ar\nĠbaÅŁar Ä±lÄ±\nÐµ ÑģÑĤÑĮ\nà¸Ħà¸£ à¸µ\nà¸Ħà¸£à¸µ à¸¡\nĠìłĦ ì²´\nĠØ³ÙĬ ÙĥÙĪÙĨ\nĠ×ŀ×ĵ ×ķ×¢\nĠëķĮë¬¸ ìĿ´ëĭ¤\nĠc á»©ng\nger Ã¤t\nĠÐ¼ Ð¸ÑĢ\nĠÐ¼Ð¸ÑĢ Ðµ\nĠÙĥÙĬÙģ ÙĬØ©\nĠ×¤×¨ ×ĺ×Ļ×Ŀ\nĠgo ÅĽci\nÐ¸ÑĤ ÐµÑģÑĮ\nÑĥÑĪ ÐºÐ¸\nØ¤ ÙħÙĨ\nĠ×Ĳ ×Ľ×Ł\nĠØ§ÙĦØ± Ø¬ÙĦ\nĠl á»įc\nà¹Ģà¸£à¸µà¸¢ à¸ģà¸§à¹Īà¸²\nãģĵãģ® ãĤĪãģĨãģª\në§Į íģ¼\nĠÐ¿ ÐµÑĩ\nÙĪÙĦ Ø§Øª\nĠÃľ ye\nliÄŁ inde\nà¸Ħà¸° à¹ģà¸Ļ\nà¸Ħà¸°à¹ģà¸Ļ à¸Ļ\nãĤĭãģĵãģ¨ ãģ¯\nà¸§à¸´ à¹Ģà¸Ħà¸£\nà¸§à¸´à¹Ģà¸Ħà¸£ à¸²à¸°\nà¸§à¸´à¹Ģà¸Ħà¸£à¸²à¸° à¸«à¹Į\nĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶ Ð½Ð¾ÑģÑĤÐ¸\nĠØ§ÙĦÙĨ Ø³Ø§Ø¡\nãĥīãĥ© ãĥŀ\nĠgÃ¼ c\nĠgÃ¼c Ã¼\nĠt Æ°á»Ŀng\nĠacomp aÃ±a\nãĤ¤ ãĥ©\n×§ ×¦×ĳ\nĠY Ã¶\nĠYÃ¶ net\nĠYÃ¶net im\nà¸ªà¸±à¸¡ à¸ľ\nà¸ªà¸±à¸¡à¸ľ à¸±à¸ª\nà¸Ļ à¸²à¸¡\nĠÄĳ á»£i\nà¹ģà¸«à¹Īà¸ĩ à¸Ĭà¸²à¸ķà¸´\nãģĿãĤĮ ãģ§ãĤĤ\nÃ¤t ig\n×ª ×ķ×Ŀ\nĠbaÅŁ lat\nĠÐ²Ñģ ÐµÐ¹\n×ª ×Ļ×§\n×ª×Ļ×§ ×ķ×Ł\nĠNg Ã´\nĠGesch Ã¤\nĠGeschÃ¤ fts\nØ£ Ùħ\nØ£Ùħ Ø±Ø§Ø¶\nà¹Ģà¸Ĺ à¸Ħà¸Ļ\nà¹Ģà¸Ĺà¸Ħà¸Ļ à¸´\nà¹Ģà¸Ĺà¸Ħà¸Ļà¸´ à¸Ħ\nĠÐ¼ ÐµÐ½ÑĮ\nĠÐ¼ÐµÐ½ÑĮ ÑĪÐµ\nĠÃ¶l Ã§\nĠÃ¶lÃ§ Ã¼\nĠÙĬ Ø¬Ø¹ÙĦ\nĠÄĳ á»¡\n×© ×Ļ×ľ\n×©×Ļ×ľ ×ķ×ĳ\nĠGr Ã¶ÃŁe\nĠÙĩ Ø§ØªÙģ\nà¸£à¹īà¸²à¸Ļ à¸Ńà¸²à¸«à¸²à¸£\n×Ķ×ľ ×Ļ×Ľ\n×Ķ×ľ×Ļ×Ľ ×Ļ\nÐ¸ÑĢÑĥ ÑİÑī\nèĭ¥ ãģĦ\nĠÃĸ zel\nãģĦãģŁ ãĤī\nà¸Ħà¸³ à¸ĸà¸²à¸¡\nĠzosta ÅĤy\nĠ×Ķ×¡ ×Ļ×¤×ķ×¨\n×Ķ ×ķ×ľ\n×Ķ×ķ×ľ ×ļ\nà¹Ģà¸Ĭà¹Īà¸Ļ à¸ģà¸±à¸Ļ\nà¹Ĥ à¸Ĩ\nà¹Ĥà¸Ĩ à¸©\nà¹Ĥà¸Ĩà¸© à¸ĵà¸²\n×Ĳ×¨ ×¦×ķ×ª\n×Ĵ×¨ ×¤×Ļ\nĠao Ã»t\nĠÙĬ Ø±ÙĬØ¯\nØª ÙĪØ¬\nØªÙĪØ¬ ÙĬÙĩ\nĠÑįÑĤ Ð°Ð¿\nãĤ¹ãĤ¿ ãĥ³\nĠkr Ã³\nĠkrÃ³ tk\nãĤĴä½¿ ãģĨ\nì ·¨\néĸ¢ ãĤı\nà¸Ķà¹īà¸§à¸¢ à¸Ħà¸§à¸²à¸¡\nà¸Ļà¸³ à¹Ģà¸ªà¸Ļà¸Ń\nĠa yrÄ±ca\nà¸Ī à¹īà¸²à¸ĩ\nĠÑĦÐ¾ÑĤ Ð¾Ð³ÑĢÐ°ÑĦ\nĠÐ² ÐµÑĩ\nĠÐ²ÐµÑĩ ÐµÑĢ\nåĩº ãģĹãģŁ\nĠÐ¥ Ð¾\nĠ×ŀ ×¨×Ĵ×Ļ×©\nà¹ĥà¸«à¹ī à¹Ģà¸Ľà¹ĩà¸Ļ\nãĤĴ çĽ®\nãĤĴçĽ® æĮĩ\n×ľ ×ŀ×Ļ×Ŀ\nnÄħ ÅĤ\nĠÑģÑĤ Ð°Ð½Ð´\nĠÑģÑĤÐ°Ð½Ð´ Ð°ÑĢÑĤ\nĠSÃ¼ d\nĠT Ã¢m\nØ§Ø®Øª Ø¨Ø§Ø±\nà¹Ģà¸ģ à¸Ńà¸£à¹Į\nÙħØ³ Ø±ØŃ\nĠbi á»ĩn\nØ¨ Ùı\nĠØµ Ø§ÙĦ\nĠØµØ§ÙĦ ØŃ\nĠPh á»¥\níľ ´\nãĥ¬ãĥĵ ãĥ¥ãĥ¼\nĠbá»¥ ng\nĠrÃ©g ime\nĠØ£ Ø´ÙĩØ±\nĠÑĢÐ°Ð±Ð¾ÑĤ Ð½Ð¸Ðº\nà¸Ŀ à¸±à¸Ļ\nØ§Ø¹ ØªÙħ\nØ§Ø¹ØªÙħ Ø§Ø¯\nĠÐ·Ð°Ð¼ ÐµÑĤ\nãģ¾ ãģ£ãģ¦\nĠch áº·t\næĿ¥ ãĤĭ\nĠØ§ÙĦÙĤ ÙĪØ§Øª\nãģ«åħ¥ ãģ£ãģ¦\nØªØŃ Ø§ÙĦÙģ\nÙħ Ø²ÙĬØ¯\nĠÙĬ ØµÙĦ\nìĹ ¼\nà¹Ģà¸Ĭ à¹ĩ\nà¹Ģà¸Ĭà¹ĩ à¸Ħ\nĠk á»ĭ\nĠká»ĭ p\nĠìķĦ ì§ģ\n×Ĳ×ł ×Ĵ\nĠÐ¾Ð±Ð»Ð° ÑģÑĤÑĮ\nĠpomoc Äħ\nĠ×ķ ×©×ľ\nëĵł ì§Ģ\nĠGi Ã¡m\nĠSt Ã¼ck\nĠchÃ¡ y\nĠëĤĺ ìĺ¤\n×© ×Ļ×ĺ×ª\n×ŀ×ĵ ×¨\n×ŀ×ĵ×¨ ×Ļ×ļ\nĠsÃ¼re Ã§\nÐº Ð²Ð°\n×ĳ×ľ ×Ļ×Ŀ\n×Ķ ×ª×Ļ\n×Ķ×ª×Ļ ×Ļ×Ĺ×¡\nÙĤØ¨ Ø§ÙĦ\nĠ×¡ ×ķ×Ĵ\nĠ×¡×ķ×Ĵ ×Ļ\nÑģÑĤ Ð¾Ð»ÑĮ\nä½ķ ãĤĤ\n×ĸ×Ľ ×ķ×¨\nè²· ãģĨ\nå®ī ãģı\nà¸Ħà¸£à¸±à¹īà¸ĩ à¸Ļà¸µà¹ī\nkÃ¶ p\nĠÑģÐµÑĢ Ð²Ð¸Ñģ\nÐ¾Ñĩ Ð½ÑĭÑħ\nê±° ëŀĺ\nØªØ£ Ùĥ\nØªØ£Ùĥ ÙĬØ¯\n×ĵ ×ľ×§\nĠÐ¿Ð¾ ÑĩÐµÐ¼\nĠÐ¿Ð¾ÑĩÐµÐ¼ Ñĥ\nÐ¿Ð¸Ñģ Ð°ÑĤÑĮ\n×ĳ ×©×¨\nĠH Ãłng\nĠT Ã¬m\nĠtr á»«\nãĤ» ãĥĥãĤ¯ãĤ¹\n×ķ×ł ×Ĵ\nmÄ±z da\nÐ¿ ÑģÐ¸\nĠìŀĪ ê¸°\nĠr Ãºt\nØ² Ø§ÙĨ\nØªÙĨ ÙĪØ¹\nÙħÙĤ Ø§\nÙħÙĤØ§ ÙĪÙħØ©\nĠ×ľ×¦ ×ķ×¨×ļ\nĠ×ĳ ×Ļ×¨×ķ×©×ľ×Ļ×Ŀ\nãĥ´ ãĤ£\neb ile\nebile ceÄŁi\nãĥ¦ ãĥ¼ãĤ\nãĥ¦ãĥ¼ãĤ ¶\nãĥ¦ãĥ¼ãĤ¶ ãĥ¼\nãĤĴä½ľ ãĤĭ\nÑģ Ð¼ÐµÑĢ\nÑģÐ¼ÐµÑĢ ÑĤ\nĠì§ ģ\nĠì§ģ ìłĳ\nĠÐŁ Ð°ÑĢ\nØŃ Ø§Ø¶\nØŃØ§Ø¶ Ø±\nÙħ ÙĥØ§Ùģ\nÙħÙĥØ§Ùģ ØŃØ©\nà¸¥ à¸´à¸Ļ\nãģ¦ ãģįãģ¦\nÑĢÐ¾Ñģ Ð»\nĠÄ°ÅŁ te\nÙĤØµ ÙĬØ±\nĠ×ĳ×Ĵ ×Ļ×ľ\nĠ×ŀ×ª ×Ĳ×Ļ×Ŀ\nĠ×Ķ ×Ĺ×ĵ\nĠ×Ķ×Ĺ×ĵ ×©×Ķ\n×¨ ×ķ×¢\nĠprodukt Ã³w\nĠÙħ ØµØ¯Ø±\nÐ½Ðµ ÑĨ\nĠØ§ÙĦØ¹ÙħÙĦ Ø§Øª\nĠÃ§Ä±k ma\nĠØ¯ Ø¨ÙĬ\n×§ ×Ļ×Ł\n×ª ×Ĳ×¨\n×ª×Ĳ×¨ ×Ļ×ļ\n×ł×Ļ ×Ļ×ĵ\nØµØ± Ø§Ø¹\nl Ã¨ve\n×¦ ×Ļ×¨\nà¸Ķ à¸±à¸Ļ\nà¹ĥà¸«à¹ī à¹Ħà¸Ķà¹ī\nãĤ¿ãĤ¤ ãĥł\nĠgi áº£ng\nÐ¡ ÐŁ\nĠØ§ÙĦÙħ ØŃÙĦ\nĠØ§ÙĦÙħØŃÙĦ ÙĬØ©\nĠT áº¥t\n×ľ ×ķ×ĺ\nh á»ķ\nĠam Ã©ric\nĠamÃ©ric ain\nĠ×ĳ×©×ľ ×ĳ\nĠ×ľ×Ĳ ×ķ×ŀ×Ļ\nĠpe Ã§a\nĠÑĢÐ°Ð· Ð½ÑĭÑħ\nãģĦãĤĭ ãģ¨\nãĥĩ ãĥ³\n×¡ ×§×¨\nĠ×Ķ×ŀ×Ĺ ×Ļ×¨\nãģ¨ãģĦãģĨ ãĤĤãģ®\nØ±Øª Ø¨Ø·\nĠÐ¸ÑģÑĤ Ð¾Ñĩ\nĠÐ¸ÑģÑĤÐ¾Ñĩ Ð½Ð¸Ðº\nà¸ªà¸¡à¸±à¸Ħà¸£ à¸ªà¸¡à¸²à¸Ĭà¸´à¸ģ\nĠ à¸Ĺà¸±à¹īà¸ĩ\nĠà¸Ĺà¸±à¹īà¸ĩ à¸Ļà¸µà¹ī\nĠT áºŃp\nãģ£ãģ¦ ãģĦãģĨ\nĠØ§ÙĦÙĪ ØµÙĪÙĦ\nĠdÃ©c ada\nĠÐ¾ ÑĦÐ¾ÑĢÐ¼\nĠÐ¾ÑĦÐ¾ÑĢÐ¼ Ð»ÐµÐ½\nà¸ªà¸³à¸«à¸£à¸±à¸ļ à¸ģà¸²à¸£\nĠog Ã³ln\nãģĨãģ¡ ãģ«\nĠvÃ¡ rias\nãģĻãģİ ãĤĭ\nÙĪ ÙĩØ§\nà¹Ĥà¸Ľà¸£ à¸Ķ\nĠÐłÐ¾ÑģÑģ Ð¸Ñı\näºº ãĢħ\nãģĹãģ¦ ãģįãģŁ\nĠsÄ± rasÄ±nda\nĠng Ã´n\nØ³ ÙĨØ©\nØªÙħ ØªØ¹\n×ŀ×Ľ ×ĳ×Ļ\nĠnh áº¥n\n×¢ ×ŀ×Ļ×ĵ\ná» ¨\nÐ¶ Ð¸ÑĤÑĮ\nãĤī ãģĽ\ngr Ã¡f\ngrÃ¡f ica\nĠÙĤ ÙĪÙĦ\nĠÙĤÙĪÙĦ Ùĩ\nëĭ¨ ì²´\nà¸« à¹īà¸²\nà¸«à¹īà¸² à¸¡\nä½¿ ãģ£ãģ¦\n×ª ×Ļ×ĳ\n×ª×Ļ×ĳ ×ª\ni á»ĥu\nà¹ģ à¸Ĭà¸¡\nà¹ģà¸Ĭà¸¡ à¸Ľ\nà¹ģà¸Ĭà¸¡à¸Ľ à¹Į\náº ¬\nĠëĤĺ ëĿ¼\nĠÙħØ¨Ø§Ø´Ø± Ø©\nĠtr Äĥm\nØ³Ùĥ ÙĪ\nĠØ§ÙĦØ° Ùī\nĠbi Ã§\nĠbiÃ§ im\nØª Ø±Ø§Ø¬Ø¹\nĠÐ¾Ð± ÐµÑģÐ¿\nĠÐ¾Ð±ÐµÑģÐ¿ ÐµÑĩ\nĠÐ¾Ð±ÐµÑģÐ¿ÐµÑĩ Ð¸Ð²Ð°\nĠÐ²Ð¾Ð·Ð´ ÑĥÑħ\nÑĭÐ² Ð°ÑĤÑĮ\nÙĦ ØŃÙĤ\nĠMÃ¼ dÃ¼\nĠMÃ¼dÃ¼ rl\nĠMÃ¼dÃ¼rl Ã¼ÄŁÃ¼\nĠyapt Ä±r\nĠ×¤×¨ ×¡\nĠ×¤×¨×¡ ×ķ×Ŀ\nØ· ÙĪØ±\nÑģÑĤÐ² Ð¾Ð²Ð°ÑĤÑĮ\nìŀ¥ ìĿĦ\nà¸Ĺà¸µà¹Īà¸Ķà¸µ à¸Ĺà¸µà¹Īà¸ªà¸¸à¸Ķ\nà¸Ńà¸± à¸¥\nÑĢ Ñİ\nÙħØ³Øª ÙĤØ¨ÙĦ\nÑģÐ» ÑĥÑĪ\nÑģÐ»ÑĥÑĪ Ð°\nèªį ãĤģ\nĠ×ľ ×Ļ×ŀ\nĠ×ľ×Ļ×ŀ ×ķ×ĵ×Ļ\n×ª ×©×ķ×ĳ\n×ª×©×ķ×ĳ ×ķ×ª\nĠgerÃ§ekleÅŁtir il\nĠØ§ÙĦ Ø§ØªÙģØ§ÙĤ\nĠÑĥÑĢÐ¾Ð² Ð½Ðµ\nĠÑĤ ÑĢÐ°Ð²\nĠ×Ķ×ŀ ×ķ×Ł\nØŃÙģ Ø§Ø¸\nĠÙħ ÙĲ\nĠÙħÙĲ ÙĨ\nĠÙħÙĲÙĨ ÙĴ\nĠdem Ã¡s\n×ŀ×ķ×ĸ ×Ļ×§×Ķ\n×© ×Ļ×Ĺ×Ķ\nĠb Ãº\nÐ°Ð»ÑĮ Ð½ÑĭÐ¼\nãĤı ãģŁ\nãĤıãģŁ ãģĹ\nĠØ§ÙĦÙħÙĪ Ø§Ø¯\n×ª ×Ľ×ł\n×ª×Ľ×ł ×ķ×Ł\nãĥŃ ãĥĥãĤ¯\nhi áº¿u\nĠÑĥ Ð¼Ðµ\nÙħØŃØ§ ÙĪÙĦØ©\n×Ĳ ×ķ×©×¨\nĠÐºÐ¾Ð½ ÐºÑĥÑĢ\nĠÐºÐ¾Ð½ÐºÑĥÑĢ Ñģ\nĠ×ŀ ×ĳ×Ĺ\nĠ×ŀ×ĳ×Ĺ ×Ļ×ł×ª\nĠan lam\nĠanlam Ä±\nĠli á»ĩt\nĠÐ² ÑħÐ¾Ð´\nĠH Ã¬nh\nĠÙĨ ÙĬ\nĠÙĨÙĬ ÙĪØ²\nãĤ¸ãĥ£ ãĥ¼\n×ĳ ×Ļ×¥\nÑĤÐµÐ»ÑĮ Ð½ÑĭÑħ\nà¸Ĺà¸¸à¸ģ à¸Ńà¸¢à¹Īà¸²à¸ĩ\nĠkiÅŁ inin\nØ£ ÙĥØ«Ø±\nĠÐ¸ÑģÑĤÐ¾ÑĢ Ð¸Ð¸\nĠë³Ģ íĻĶ\n×¤×ľ ×¡×ĺ\n×¤×ľ×¡×ĺ ×Ļ×ł×Ļ\nĠÑģ ÐµÑĤ\nĠÑģÐµÑĤ Ð¸\ndÄ±ÄŁ Ä±mÄ±z\níķĺ ëıĦë¡Ŀ\n×Ķ ×¨\n×Ķ×¨ ×ĳ×Ķ\nãģĻãĤĭãģĵãģ¨ ãģ¯\nĠphi áº¿u\nØªØŃ Ø³ÙĬÙĨ\nĠÅĽ rod\nĠÅĽrod ow\nĠÅĽrodow isk\nĠÑĢÐ°Ñģ ÑħÐ¾Ð´\nØ¨Ø± ÙĬØ¯\nĠØ± ÙĬ\nĠØ±ÙĬ Ø§ÙĦ\nĠ×ķ ×Ľ×ļ\nì§Ģ ìļĶ\n×Ľ ×ŀ×ķ\nĠ×¢×ľ ×Ļ×Ķ×Ŀ\nf ÃŃcio\nĠkar arÄ±\ntÄ±ÄŁ Ä±nÄ±\nĠÐ¡ Ð¾Ð²\nĠÐ¡Ð¾Ð² ÐµÑĤ\nãģĬéĩĳ ãĤĴ\nÐ¼ ÐµÐ¶Ð´Ñĥ\nÐ¼ÐµÐ¶Ð´Ñĥ Ð½Ð°\nÐ¼ÐµÐ¶Ð´ÑĥÐ½Ð° ÑĢÐ¾Ð´\nÐ¼ÐµÐ¶Ð´ÑĥÐ½Ð°ÑĢÐ¾Ð´ Ð½\nĠm á»Ŀi\nĠØ§ÙĦØ¥ ÙĬØ±\nĠØ§ÙĦØ¥ÙĬØ± Ø§ÙĨÙĬ\nĠØ§ÙĦØ±ÙĪ Ø³ÙĬ\nØµ ÙĨØ¯\nØµÙĨØ¯ ÙĪÙĤ\nĠØ§ÙĦØ¥ÙĨ ØªØ±ÙĨØª\nĠt áº¯m\nĠÑĤÐ°Ðº Ð¾Ð³Ð¾\nĠ×ĳ ×ľ×ķ×Ĵ\nĠÃ¼ crets\nĠÃ¼crets iz\n×Ĺ×ĸ ×Ļ×¨\nìĸ´ ìķ¼\nĠPh áº§n\nï¼ ľ\nĠ×ĺ ×ĳ×¢\nĠ×ĺ×ĳ×¢ ×Ļ\n×Ĳ×ŀ ×Ĳ\nØ§ÙĤ ÙĦ\nĠcondi Ã§Ãµes\nÙĤØ§Øª ÙĦ\nĠÑĢÐµÐ·ÑĥÐ»ÑĮÑĤÐ°ÑĤ Ðµ\nĠÑģÐ²Ð¾ Ð¸Ð¼Ð¸\n×¦×ĳ ×Ļ×¢\ngÃ© ni\nĠz es\nĠzes po\nĠzespo ÅĤ\nÑĪ Ð¸Ð²\nĠ×¤×¨×ĺ×Ļ ×ķ×ª\nÙħØ³Øª Ø´Ùģ\nÙħØ³ØªØ´Ùģ Ùī\nØ´Ø± Ø¹\nĠko ÅĽci\nĠ×Ķ×Ĳ ×Ļ×ł×ĺ×¨×ł×ĺ\nĠÐ§ ÐµÑĢ\nÐ¿Ð¾Ñĩ ÑĤ\nĠactiv itÃ©s\nçŁ¥ ãģ£ãģ¦\nĠ×ĳ ×ĸ×Ķ\nĠyÃ¼z den\nãģªãĤĬ ãģ¾ãģĽãĤĵ\nĠíĺ ¹\nĠíĺ¹ ìĿĢ\nĠ×ŀ×© ×ł×Ķ\nĠÐĴ ÐµÑĢ\nĠ×ĳ×Ĳ×ķ×ª ×ķ\néĿ¢ çĻ½\néĿ¢çĻ½ ãģĦ\nØ´Ø± ØŃ\ngr Ã¼nde\nÙģ Ø´\nÙģØ´ ÙĦ\nĠsÃ© jour\në´ Ĳ\nĠr Ã´le\nØ´ Ø¹Ø§Ø±\nÐµÐ¼ ÑĭÐµ\nĠØ§ÙĦØ¬ Ø³Ùħ\nÐ°Ð»ÑĮ Ð½Ð¾Ðµ\nĠìĥģ íĥľ\nï¼ ¤\në¯Ģ ë¡ľ\nĠÙĨ ÙĤØ·\nĠÙĨÙĤØ· Ø©\nãģĿãģĨ ãģł\nãģĻãĤĭ ãģ®ãģĮ\nà¸« à¸¹\nĠnh á»ĭ\nĠeconÃ³m ica\n×¡×ĺ ×ķ×ĵ\n×¡×ĺ×ķ×ĵ ×ł×ĺ\nà¸¡à¸µ à¹Ĥà¸Ńà¸ģà¸²à¸ª\nĠgest Ã£o\nà¸£à¸¹à¹ī à¸§à¹Īà¸²\nĠlo áº¡t\nĠØ§ÙĦÙħ Ùı\nĠØ§ÙĦØŃ ÙħÙĦ\nĠØ§ÙĦØ¹ÙħÙĦ ÙĬØ©\nĠê²ĥ ëıĦ\nĠÐľÐ¾ÑģÐº Ð²Ð°\n×§×ĺ ×ķ×¨\nĠÐ¿Ð¾Ð´ ÑĢÐ¾Ð±\nĠÐ¿Ð¾Ð´ÑĢÐ¾Ð± Ð½\nĠl Æ°ng\nØª ÙģØ³\nØªÙģØ³ ÙĬØ±\nĠØ§ÙĦ Ø¨Ø¹\nĠØ§ÙĦØ¨Ø¹ Ø¶\nØ¦ Øª\nÐķ ÐĿ\nìĹ° êµ¬\nà¹ĥà¸«à¹ī à¸Ħà¸¸à¸ĵ\nãģĤãĤĬ ãģ¾ãģĹãģŁ\nĠbir ka\nĠbirka Ã§\nĠÄ° sl\nĠÄ°sl am\nçĹĽ ãģ¿\nĠh áº£o\nĠÐ¼ Ð°Ñı\nĠiÅŁ Ã§i\n×© ×\n×©× ģ\nà¸ģà¸²à¸£ à¹Ģà¸¡à¸·à¸Ńà¸ĩ\n×ķ×Ķ ×¨\nĠch Ã³\nëĨ Ģ\nĠyan lÄ±\nĠyanlÄ± ÅŁ\nå¹¸ ãģĽ\n×Ĳ×¨×Ĵ ×ķ×ł×Ļ\nà¸Ńà¸²à¸Ī à¸²à¸£\nà¸Ńà¸²à¸Īà¸²à¸£ à¸¢à¹Į\nĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸Ñİ\nÐĵ Ðŀ\n×ł ×Ĺ×©\nĠìķĮ ìķĦ\nĠÑħÐ°ÑĢÐ°ÐºÑĤÐµÑĢ Ð¸ÑģÑĤ\nĠÑħÐ°ÑĢÐ°ÐºÑĤÐµÑĢÐ¸ÑģÑĤ Ð¸Ðº\nà¸Ħà¸¸à¸ĵ à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\nè¦ĭ ãģĪãĤĭ\nà¸Ĭà¸±à¸Ķ à¹Ģà¸Ī\nà¸Ĭà¸±à¸Ķà¹Ģà¸Ī à¸Ļ\nĠdziaÅĤ al\nĠdziaÅĤal noÅĽci\nà¹Ĥà¸ŀ à¸ªà¸ķà¹Į\nĠÐļ Ð¾Ð»\nĠÙģ ÙĩÙĬ\nĠ×ŀ ×¤×ł×Ļ\nĠ×Ķ×§ ×©×¨\nÙħØ± Ùĥ\nÙħØ±Ùĥ Ø²\nĠho Ã¡\nĠÐ° Ð¿Ð¿\nĠÐ°Ð¿Ð¿ Ð°ÑĢÐ°ÑĤ\nĠp ami\nĠpami ÄĻ\nĠpamiÄĻ ta\nĠÃ§ Ã¼nkÃ¼\n×ĵ ×ķ×Ł\nãģ¯ ãģĵãģ¡ãĤī\nĠM Ãł\nĠÙĬ ÙĤØ¯Ùħ\nĠÐ¿ÑĢ ÐµÐ·\nĠÐ¿ÑĢÐµÐ· Ð¸Ð´ÐµÐ½ÑĤ\nà¸Ńà¸¸ à¸ķ\nà¸Ńà¸¸à¸ķ à¸ªà¸²\nà¸Ńà¸¸à¸ķà¸ªà¸² à¸«\nà¸Ńà¸¸à¸ķà¸ªà¸²à¸« à¸ģà¸£à¸£à¸¡\nì§Ģ ìĽĲ\nĠ×Ĳ×¤×©×¨ ×ķ×ª\nsch Ã¼t\nschÃ¼t z\nĠTi Ãªn\nĠsay Ä±lÄ±\nĠÐ³ÑĢÑĥÐ¿Ð¿ Ñĭ\nÐ¾Ñĩ Ð½ÑĭÐ¹\nĠ×ľ×¢ ×ŀ×ķ×ĵ\nĠwr zeÅĽ\nĠwrzeÅĽ nia\nĠÄĲ áº§u\nà¹Ģà¸Ĥà¹īà¸² à¸£à¹Īà¸§à¸¡\nnÄ±z da\nØ®ÙĬ Øµ\nĠgÃ¼ nc\nĠgÃ¼nc el\nĠÙĦÙĩ Ø°Ùĩ\nĠÙĬ Ø¹ØªØ¨Ø±\nlÃ© gi\nãĤı ãģĭãĤĭ\nĠr á»«ng\nØ¸ Ùĩ\nØ¸Ùĩ ÙĪØ±\nĠ×ŀ×ĳ ×Ļ×Ł\nĠê¸° íĥĢ\nåĪĩ ãĤĮ\nlan mÄ±ÅŁ\nà¸Ĺà¸µà¹Ī à¸¡à¸µà¸Ħà¸§à¸²à¸¡\nĠh á»ģ\nØª ÙĪØ¬Ùĩ\nĠØ§ÙĦØ¥ Ø¯Ø§Ø±Ø©\nĠÃº til\n×¡ ×¤×ķ\nà¸Ħà¸§à¸²à¸¡ à¸£à¸±à¸ģ\nà¹Ĥ à¸®\nĠÐ¿Ð¾Ð» Ð¸ÑĤ\nĠÐ¿Ð¾Ð»Ð¸ÑĤ Ð¸Ðº\nĠsat Ä±n\nĠÅŀ imdi\n×ŀ ×ķ×¨×Ļ×Ŀ\nìķĺ ëĭ¤\n×Ĺ ×ķ×ķ\n×Ĺ×ķ×ķ ×Ļ×Ķ\nà¸Ħà¸Ńà¸¡ à¸ŀà¸´\nà¸Ħà¸Ńà¸¡à¸ŀà¸´ à¸§\nà¸Ħà¸Ńà¸¡à¸ŀà¸´à¸§ à¹Ģà¸ķà¸Ńà¸£à¹Į\nĠØ§ Ø°Ø§\nØªØ® Ø§Ø°\nãĤ¨ ãĥ«\nĠpossibilit Ã©\nà¸¢à¸·à¸Ļ à¸¢à¸±à¸Ļ\nĠÃ¼ nivers\nĠÃ¼nivers ite\nĠØ§ÙĦØ¯ ÙĪØ±ÙĬ\nĠìķĬëĬĶ ëĭ¤\nĠìĦľ ë¡ľ\nØŃ Ø§ÙĦ\nĠë ¨\nĠë¨ ¼\nĠë¨¼ ìłĢ\nà¸Ĺà¸µà¹Ī à¸ĸà¸¹à¸ģ\nì§ ľ\nĠsk Ã³ry\nÐ»ÑĮ ÑĨ\nà¹ĥà¸Ĭà¹ī à¹Ģà¸§à¸¥à¸²\n×ĳ×§ ×©×ª\nĠØ° ÙĪ\næĹ¥ ãĢħ\nĠÐºÐ¾ÑĤÐ¾ÑĢ ÑĥÑİ\nĠÑĥÑĢÐ¾Ð² ÐµÐ½ÑĮ\nê¹ ¨\nà¹Ħ à¸Ĺ\nãĤµ ãĥĹãĥª\nãĤ¸ ãĥ§ãĥ³\nãģĻ ãģ¹ãģį\nĠG Ã³r\nãĥĪ ãĤ¤\nãĥĪãĤ¤ ãĥ¬\nĠyaÅŁ ama\nĠdá»ĭ p\nĠb á»¯a\nà¸ĭ à¸¸\nĠÃ¶l Ã¼m\nãģ£ãģ¦ ãģıãĤĭ\nà¸ģà¸²à¸£ à¸Ħà¹īà¸²\n×© ×¢×¨\nĠÑĤÐ¸Ð¿ Ð°\nĠÐ³ ÐµÑĢ\nĠÐ³ÐµÑĢ Ð¾\n×¨×§ ×¢\nĠu waÅ¼\nĠuwaÅ¼ a\n×©×ŀ ×Ł\nĠhast alÄ±k\nãĤıãĤĮ ãĤĭ\nba ÅŁÄ±\nÑĩ ÑĤÐ¾\nĠ×ĳ ×ŀ×¨×Ľ×ĸ\nĠìļ°ë¦¬ ìĿĺ\nĠÙĥØ§ÙĨ ÙĪØ§\nĠØ£ Ø¨Ø±\nĠØ£Ø¨Ø± ÙĬÙĦ\nì¸ µ\nà¹Ħà¸Ĥ à¹Ī\nĠÙĪ ÙĦÙĪ\nà¸Ĺ à¸±à¸§\nà¸Ĺà¸±à¸§ à¸£à¹Į\nĠÙĪØ£ ÙĥØ¯\nà¸Ĭ à¸§à¸Ļ\n×ľ ×ķ×§\næį ¨\næį¨ ãģ¦\nĠÄ°Ã§ in\np Ã©ri\nĠy al\nĠyal nÄ±z\nÑĮÑı Ð½\nĠg áº¯ng\nà¸ģà¹ĩ à¸¢à¸±à¸ĩ\nĠÐ£ÐºÑĢÐ° Ð¸Ð½\nĠÑģ Ð°Ð¼Ð¸\nĠÐ¿ÑĢÐ¾Ð²ÐµÐ´ ÐµÐ½\nà¸ķà¸ģ à¹ģà¸ķà¹Īà¸ĩ\nĠQu Ã¢n\nÃ© paration\nĠbaÅŁ Ä±nda\nĠzn ale\nĠznale Åº\nĠznaleÅº Äĩ\nãĤ± ãĥ¼\nãĥİ ãĥ¼\nà¸ĸà¸¹à¸ģ à¸ķà¹īà¸Ńà¸ĩ\nëª ¸\nĠëı Į\nĠëıĮ ìķĦ\nĠSch Ã¼ler\nĠÐ¿Ð¾Ð´ Ð³Ð¾ÑĤÐ¾Ð²\nĠÐ¿Ð¾Ð´Ð³Ð¾ÑĤÐ¾Ð² Ðº\nØ¹ Ø±ÙĪ\nØ¹Ø±ÙĪ Ø¶\nla ÅŁtÄ±r\nĠÑģÐ¾ÑģÑĤÐ°Ð² Ð»ÑıÐµÑĤ\nĠÐ¿ÑĢÐ¾Ð¸Ð· Ð²Ð¾Ð´\nĠÐ¿ÑĢÐ¾Ð¸Ð·Ð²Ð¾Ð´ ÑģÑĤÐ²Ð°\nĠÐ¾ÑģÐ½Ð¾Ð² Ðµ\nĠØ´ ÙħØ§ÙĦ\nà¸ģà¸£ à¸µ\nĠgÃ¶rÃ¼ÅŁ me\nÐ¾Ñĩ ÐµÐº\nĠ×Ĺ×ĳ×¨ ×Ļ×Ŀ\nÙħØ® Ø§Ø·\nÙħØ®Ø§Ø· Ø±\nï¼ Ń\n×¨ ×¤×Ĳ\nĠM áº¹\nà¸¢à¸Ńà¸¡ à¸£à¸±à¸ļ\nĠv áº¿t\nØ® Ø°\nĠØ§ÙĦØª Ø·\nĠØ§ÙĦØªØ· Ø¨ÙĬÙĤ\nà¸Ļ à¸¶à¸ģ\nĠ×Ķ ×Ľ×ł×¡×ª\nĠÐ¾Ð³ÑĢ Ð°Ð½Ð¸\nĠÐ¾Ð³ÑĢÐ°Ð½Ð¸ ÑĩÐµÐ½\nĠÃĩ alÄ±ÅŁ\nĠØ§ÙĦÙħÙĨØª Ø¯Ùī\nà¸Īà¸³à¸Ļà¸§à¸Ļ à¸¡à¸²à¸ģ\nĠÑĤÐ¾ÑĢ ÑĢ\nĠÑĤÐ¾ÑĢÑĢ ÐµÐ½ÑĤ\nĠìĤ´ ìķĦ\nà¸ŀà¸¥à¸±à¸ĩ à¸ĩà¸²à¸Ļ\nà¸Ĭ à¸±à¸Ļ\nĠÐĲÐ½ Ð´ÑĢ\nĠrÃ©alis Ã©\n×ŀ×© ×Ĳ\nà¹ģ à¸Ĭ\nà¹ģà¸Ĭ à¸£à¹Į\nĠÐ± Ð¾Ð³\nà¸¡à¸² à¹ģà¸¥à¹īà¸§\nĠØ§ÙĦÙĨ Ø§Ø±\nĠolmad Ä±ÄŁÄ±\n×ĵ ×¢×Ķ\nĠÑĥ Ð²ÐµÑĢ\nĠÑĥÐ²ÐµÑĢ ÐµÐ½\nãĤĭ ãĤĤãģ®\nØ£ Ø¯\nØ£Ø¯ ÙĪØ§Øª\nĠ×Ķ×ĸ ×ķ×Ĵ\nØ¥ Ø¹ÙĦØ§Ùħ\nh á»ı\nĠNÃ¤ he\nĠÑĤ ÐµÑģÑĤ\nĠ×ŀ ×ķ×Ľ×¨\nĠë¬¸ìłľ ê°Ģ\n×ª ×ķ×¦×Ĳ×Ķ\nm Ã³\nmÃ³ vel\nĠØ§ÙĦØªØ¬ Ø§Ø±Ø©\nĠÐ¼Ð½Ð¾Ð³ Ð¸Ñħ\nÐ¾Ð±Ñī Ð°\nĠ×¢ ×¡×§×Ļ\nĠEdu caÃ§Ã£o\n×§ ×©×Ļ×Ŀ\nÃ© tabl\nÃ©tabl issement\nĠÐ´ ÐµÐ»Ðµ\nÐ¸ÑĢÑĥ ÐµÑĤÑģÑı\nØ¢ Ø«Ø§Ø±\nĠ×Ķ×ŀ ×¨×Ľ×ĸ×Ļ\nãĥĲ ãĥ«\nĠÐ²ÑģÑĤÑĢ ÐµÑĩ\nãģĴ ãĤĭ\nĠci Äħ\nĠciÄħ gu\nÙĬ Ø³Øª\nà¸łà¸² à¸§\nà¸łà¸²à¸§ à¸°\nØ£ ÙħØ±\nĠÐ¾ Ð¶Ð¸\nĠÐ¾Ð¶Ð¸ Ð´Ð°\nĠ á»§y\nãĥŀ ãĥ«\nØ± Ø§Ø³\nÐ¾Ñĩ Ð½Ð¾Ð¹\n×ª ×Ĵ×ķ×ĳ×ķ×ª\nØªØ¹ Ø±ÙĬÙģ\nĠÑģÐ¾ ÑĨÐ¸Ð°Ð»ÑĮÐ½Ð¾\nãĤĴ éĸĭ\nĠÐ¸ÑģÑģÐ»ÐµÐ´ Ð¾Ð²Ð°\nĠd Ãº\nĠdÃº vida\nĠsk ÅĤ\nĠskÅĤ ada\nĠhÃ¤ ufig\nĠÐ²ÑĭÐ± ÑĢ\nĠÐ²ÑĭÐ±ÑĢ Ð°ÑĤÑĮ\nãģ®ãģ§ãģ¯ãģªãģĦ ãģĭ\nĠÑģ Ð¸Ð»ÑĮÐ½Ð¾\nÑĤÐ²ÐµÑĢÐ¶ Ð´ÐµÐ½\n×¨ ×¤\n×¨×¤ ×ķ×Ĳ×Ķ\næĢĿ ãģĦãģ¾ãģĻ\nØŃØ± Øµ\n×©×ķ×ª ×£\nÙħØ³ Ø¬Ø¯\nà¹Ĥà¸Ĭ à¸§à¹Į\nÐµÐ¼ ÑģÑı\nÐ² ÑĪÐ¸Ðµ\nĠÐ¼ Ð»\nĠÐ¼Ð» Ð½\nĠ×ľ×Ķ ×ĳ×Ļ×Ĳ\nĠÙĬ ØªØ¹ÙĦÙĤ\nà¸ķ à¸¹à¹ī\nĠÐ¿ ÑĢÐ°Ð·\nĠÐ¿ÑĢÐ°Ð· Ð´\nĠÐ¿ÑĢÐ°Ð·Ð´ Ð½Ð¸Ðº\nĠÐ½ ÐµÐ¼\nĠÐ½ÐµÐ¼ Ð½Ð¾Ð³Ð¾\nĠs Ãłng\nØªÙĨ Ø³ÙĬ\nØªÙĨØ³ÙĬ ÙĤ\nĠtá» Ŀ\nĠÐ¼ÐµÐ´ Ð¸\nãģ« æĪ\nãģ«æĪ »\nà¸Ħà¸§ à¹īà¸²\nãģĭ ãģĳãĤĭ\n×ĳ×ľ ×ķ×ª\nĠÑįÐº ÑģÐ¿\nĠÑįÐºÑģÐ¿ ÐµÑĢÑĤ\nĠÐ´ÐµÐ² ÑĥÑĪ\nĠÐ´ÐµÐ²ÑĥÑĪ Ðº\nĠØŃ Øµ\nÙĨØ´ Ø£\nãģĮãģĤãĤĭ ãģ®ãģ§\nĠØª Ø±Ø§Ùħ\nĠØªØ±Ø§Ùħ Ø¨\nØ£Ø³ ÙĪØ§ÙĤ\nĠ×ľ×¤ ×ł×ķ×ª\nĠØ§ ï»·\nãģ« ãģı\nãģ«ãģı ãģĦ\nĠØ£ Ø¹ÙĦÙī\nĠ×ľ×Ķ ×ŀ×©×Ļ×ļ\nrÃ¤ u\n×©×ŀ ×Ļ×Ŀ\nåĪĨ ãģĳ\nãģĻ ãģ§\nãģĻãģ§ ãģ«\n×Ķ×ľ ×Ľ×Ķ\n×Ĺ×ľ ×Ļ×£\nĠì ±ħ\nĠì±ħ ìŀĦ\nà¹Ģà¸Ī à¸£à¸´\nà¹Ģà¸Īà¸£à¸´ à¸į\néģĬ ãģ³\nØ¬ Ø³Ø¯\nà¸ªà¸² à¸ĺ\nà¸ªà¸²à¸ĺ à¸²à¸£\nà¸ªà¸²à¸ĺà¸²à¸£ à¸ĵ\nĠbas Ä±n\nÑĢÐ°Ð ³\nÐ³ Ð°Ð´\nĠho ÅŁ\níķ µ\n×ĳ×Ĺ ×Ļ×¨×Ķ\n×ŀ×¡ ×ļ\nĠìłľ íĴĪ\nØªÙħ ÙĪÙĬÙĦ\nĠL Æ°u\në¡ľ ë¶ĢíĦ°\nĠÐ¿ Ð¾Ð±\nĠÐ¿Ð¾Ð± ÐµÐ´\nÙħÙĨ Ø°\nå¸¸ ãģ«\nÙĤ Ø³\nĠØ§ÙĦÙħ ØµØ¯Ø±\nĠÙĪØ§ÙĦ Ø§Ø³Øª\nĠkh áº¯p\nĠØ§ÙĦØ¬ Ø§ÙĨØ¨\nĠng uyá»ĩn\néĸĵ éģķãģĦ\nĠÑģÑĤ ÑĢÐ°\nĠÑģÑĤÑĢÐ° Ñħ\nĠÑģÑĤÑĢÐ°Ñħ Ð¾Ð²\nà¸£à¸µ à¸ļ\nĠx Æ°Æ¡ng\nĠì° ¾\nĠì°¾ ìķĦ\nĠng áº¡i\nÐ³ Ð°Ð»\nà¸ĭ à¸µà¹Ī\nĠ×ĳ ×¤×Ļ×Ļ×¡×ĳ×ķ×§\nÐ¦ ÐµÐ½ÑĤÑĢ\nĠaval iaÃ§Ã£o\nĠeconÃ³m ico\n×ĸ ×Ł\nĠÐľ Ð°Ðº\nĠinter Ã©s\nà¸ģà¸¥ à¸´à¹Īà¸Ļ\nÑģÑĤÑĮ Ñİ\nĠÄĳ Æ°Æ¡ng\nå¼· ãģı\nĠKh Ã¡ch\nà¹Ģà¸Ļà¸·à¹īà¸Ń à¸«à¸²\nĠYaz Ä±\nè²· ãģ£ãģ¦\nÐł Ðķ\nà¹Ģà¸ŀà¸´à¹Īà¸¡ à¸Ĥà¸¶à¹īà¸Ļ\nà¸ªà¸¡ à¸ļà¸¹\nà¸ªà¸¡à¸ļà¸¹ à¸£à¸ĵà¹Į\nĠÐ¼ Ð¸ÑĢÐ¾Ð²\n×Ĵ ×ł×Ļ×Ŀ\nĠÄĳ á»©c\nà¸Ń à¸²à¸£à¹Į\nØµ Ø§Øµ\nãģĬ ãĤĪ\nãģĬãĤĪ ãģ³\nÃªÌ ī\nĠØ§ÙĦÙħØ¤ ØªÙħØ±\nĠØ§ÙĦÙħØ± ØŃÙĦØ©\nà¸ªà¸Ńà¸ļ à¸ĸà¸²à¸¡\nĠà¸Īà¸²à¸ģ à¸Ļà¸±à¹īà¸Ļ\nĠØª Ø¹Ø¯\nãģĿãģ® ãģŁãĤģ\nĠkh Ã¡ng\nà¸Ļ à¸´à¸Ķ\nãĥĬ ãĥ³\nëĦ¤ ìļĶ\nĠØ§ÙĦ Ø§ØŃØª\nĠØ§ÙĦØ§ØŃØª ÙĦØ§ÙĦ\nìļ ķ\nĠÐ¼Ð¾Ð´ ÐµÐ»Ð¸\nĠÐ¿ÑĢÐ¾ÑĨ ÐµÐ½ÑĤ\nà¸ŀà¸§à¸ģ à¹Ģà¸£à¸²\nĠ×Ķ×¦ ×ĵ\nĠ×Ķ×¦×ĵ ×ĵ×Ļ×Ŀ\nstÃ¤nd e\n×ł ×Ĵ×¨\nĠdot yc\nĠdotyc zÄħ\nĠdotyczÄħ ce\nĠÅĽ wiÄĻt\n×ŀ×¨ ×Ķ\nãģĻãģĶ ãģĦ\nãĥĩãĤ£ ãĥ³ãĤ°\nà¸ģà¸²à¸£ à¸ªà¸£à¹īà¸²à¸ĩ\në Ĥ¬\nĠì°¸ ìĹ¬\nÑģ Ñħ\nÑģÑħ ÐµÐ¼\nÙħÙĪ Ø³\nĠn áº¥u\nĠ×ľ×ŀ×¢ ×ľ×Ķ\nà¹Ģà¸Ľ à¹īà¸²\nà¹Ģà¸Ľà¹īà¸² à¸«à¸¡à¸²à¸¢\nĠmÃ¹ i\nØ§Ø¦ Ø²\níĽ Ī\n×Ĺ×ĳ ×ķ×¨×Ķ\nà¸ľà¸¹à¹ī à¹ĥà¸Ĭà¹ī\nĠpa Åº\nĠpaÅº dzi\nĠpaÅºdzi ern\nĠpaÅºdziern ika\nà¸¥à¸ĩ à¹Ħà¸Ľ\nÙĤ Ø§Ø¹\nĠch áºŃm\nĠÃ¶zellik leri\nĠÄĲ o\nĠÄĲo Ãłn\nÐ¶ ÐµÐ½Ð¸Ðµ\nĠh áº³\nĠháº³ n\nĠaÅŁ k\nï½ į\nãĥĳ ãĤ¹\n×Ķ×ķ×¨ ×Ĳ×ķ×ª\nĠÅ »\nĠÅ» y\n×ŀ×ĸ ×ľ\nĠÑĥ ÐºÑĢÐ°\nĠÑĥÐºÑĢÐ° Ð¸Ð½\nà¹Ģà¸Ĭ à¸´\nà¹Ģà¸Ĭà¸´ à¸į\nÐł Ðĺ\nĠzwiÄħz ku\n×Ķ×Ĺ×ľ×ĺ ×ª\nãĤĵãģ§ãģĻ ãĤĪãģŃ\nãģ¦ ãģĬãĤĬ\nÐ»Ð¾Ð¶ Ð¸ÑĤÑĮ\n×ŀ ×ķ×ł×Ļ×Ŀ\nà¸® à¸´\nì° ¬\nĠØ§ÙĦÙħØ´ ØªØ±Ùĥ\nĠdÃ¼ÅŁ Ã¼k\nÐ°Ð³ ÐµÐ½ÑĤ\nĠØ§ÙĦØ£ Ø³Ø¨ÙĪØ¹\nĠÙĤ Ø±ÙĬØ¨\nÐ¸Ð½ Ð´\nÐ¸Ð½Ð´ Ð¸Ð²\nÐ¸Ð½Ð´Ð¸Ð² Ð¸Ð´\nÐ¸Ð½Ð´Ð¸Ð²Ð¸Ð´ Ñĥ\nÐ¸Ð½Ð´Ð¸Ð²Ð¸Ð´Ñĥ Ð°Ð»ÑĮÐ½\nfÃ¶r der\nĠseÃ§ en\nĠseÃ§en ek\nĠÃ©t ant\nĠÐ»ÑİÐ± Ð¸Ð¼\nÐºÐ°Ð· ÑĭÐ²Ð°ÐµÑĤ\nà¸§ à¸´à¸Ļ\nĠ×Ķ×ĳ ×Ĳ×Ļ×Ŀ\nĠÐ´ Ð¾Ð²\nĠÐ´Ð¾Ð² Ð¾Ð»ÑĮ\nĠÐ´Ð¾Ð²Ð¾Ð»ÑĮ Ð½Ð¾\n×¢×ĵ ×Ļ×£\nĠok re\nĠokre ÅĽ\nĠokreÅĽ lon\nĠØª Ø±ÙĬØ¯\nà¹Ģà¸¡à¸·à¹Īà¸Ń à¸§à¸±à¸Ļà¸Ĺà¸µà¹Ī\nãĤĪ ãģĭãģ£ãģŁ\nCum h\nCumh ur\nCumhur ba\nCumhurba ÅŁ\nCumhurbaÅŁ kan\nCumhurbaÅŁkan Ä±\nĠn á»£\nà¸ľà¸¹à¹ī à¹Ģà¸¥à¹Īà¸Ļ\nĠcompl Ã¨te\nà¹Ģà¸ŀ à¸¨\nØ¯ ÙĲ\nĠdÃ¼ z\nĠdÃ¼z ey\nãģ§ãģĤãĤĭ ãģĵãģ¨\next Ã©rieur\n× ³\nĠinform aÃ§Ã£o\nãĤ¯ãĥª ãĥĭãĥĥãĤ¯\nĠPub li\nĠPubli Ã©\n×¨ ×ķ×ĵ\nà¸Ħà¸§à¸²à¸¡ à¸Ľà¸¥à¸Ńà¸Ķà¸łà¸±à¸¢\nĠØ£ÙĬ Ø¶\nĠØ£ÙĬØ¶ ÙĭØ§\nØª Ø³Ø¨Ø¨\nãģ¤ ãĤĤãĤĬ\nÐ¸Ð· Ð¼Ð°\nà¸Ĥà¸¶à¹īà¸Ļ à¹Ħà¸Ľ\nÙĥ ÙĲ\nÙĦ ÙĪÙħ\nĠ×© ×¦×¨\nĠ×©×¦×¨ ×Ļ×ļ\nãģ¯ ãĤĤãģ¡ãĤįãĤĵ\nĠÐº Ð°Ð½\nĠÐºÐ°Ð½ Ð°Ð»\nãģ«ãģª ãģ£ãģ¦ãģĦãģ¾ãģĻ\nĠØ§ÙĦØ£ ÙĥØ«Ø±\nØª Ø§ØŃ\nÙĨØª Ùĩ\nÙĨØªÙĩ Ø§Ø¡\nØ§ ÙĪÙĬØ©\nĠBug Ã¼n\nÐ½ ÑģÐºÐ¾Ð³Ð¾\nà¸Ķ à¹Īà¸§à¸Ļ\nÃ© volution\nãģ£ãģ¦ ãģĦãģ¾ãģĹãģŁ\nãĤ ħ\nĠV Æ°Æ¡ng\nà¸łà¸²à¸ŀ à¸¢\nà¸łà¸²à¸ŀà¸¢ à¸Ļ\nà¸łà¸²à¸ŀà¸¢à¸Ļ à¸ķà¸£à¹Į\nĠ×Ķ ×¦×ľ×Ļ×Ĺ\nĠØ§ÙĦØ¥Ø³ÙĦØ§Ùħ ÙĬ\nÙĦÙĬ Ø¨\nĠed iÃ§Ã£o\nÑģÑĤÑĢ ÐµÐ»\nĠkh Ãºc\nÙĨÙħÙĪ Ø°\nÙĨÙħÙĪØ° Ø¬\n×ľ ×¦×Ķ\nÑģÑĤÐ°Ð² Ð¸Ð»\nà¸ĸ à¸²\nà¸ªà¸£à¹īà¸²à¸ĩ à¸Ħà¸§à¸²à¸¡\nãģĦ ãģ£ãģ±\nãģĦãģ£ãģ± ãģĦ\nÑģÑĤÐ°Ð² Ð»ÐµÐ½\nĠØ§ÙĦ ÙĤØ¯Ø³\nĠng Æ°á»£c\nØ¨ Ø®\nà¸ª à¸«à¸£\nà¸ªà¸«à¸£ à¸±\nà¸ªà¸«à¸£à¸± à¸Ĳ\nĠØ£ Øº\nĠØ£Øº Ø³Ø·\nĠØ£ØºØ³Ø· Ø³\nãģĨ ãģ¾\nãģĨãģ¾ ãģı\nĠêµŃ ìłľ\nØŃØ¶ Ø§Ø±\nĠd á»«ng\næĬ¼ ãģĹ\nØª ÙĪØ§\nØªÙĪØ§ Ø¬Ø¯\n×©×ŀ ×Ĺ×Ķ\nãģı ãĤĵ\nĠ×ĳ×¢ ×¦\nĠ×ĳ×¢×¦ ×Ŀ\n×ŀ ×ł×Ļ×ķ×ª\n×ķ ×Ļ×ĵ\n×ķ×Ļ×ĵ ×Ĳ×ķ\nà¸Ĭ à¸´à¸ĩ\nĠprac ÄĻ\nĠÐ· Ð°ÑĤ\nĠÐ·Ð°ÑĤ ÐµÐ¼\nĠìŀĲ ìľł\nĠì¤ Ģ\nĠì¤Ģ ë¹Ħ\nĠb áºŃ\nĠbáºŃ c\nĠ×Ķ×ŀ ×¦×ĳ\nĠÙĤ ÙĬÙħØ©\nà¹Ģà¸Ń à¹Ģà¸Ĭ\nà¹Ģà¸Ńà¹Ģà¸Ĭ à¸µà¸¢\nĠperch Ã¨\nĠØ§ÙĦØ¹ Ø³ÙĥØ±\nĠØ§ÙĦØ¹Ø³ÙĥØ± ÙĬØ©\nØ¬ ÙĬØ¨\nëŀ µ\nÙħ ÙĩØ±\nÙħÙĩØ± Ø¬Ø§ÙĨ\nÙħ Ø±Ø§Ùĥ\nÙħØ±Ø§Ùĥ Ø²\nĠÐ¾Ð´ Ð½Ð°ÐºÐ¾\nà¸Ķà¸µ à¹Ĩ\nĠ×¦ ×¤×ķ\nĠkullan Ä±lan\nĠÐº Ð¸Ð½Ð¾\nãĥĨãĤ£ ãĥ³ãĤ°\nĠGi á»Ľi\nØª ÙĪØ²\nØªÙĪØ² ÙĬØ¹\nà¸¢ à¸´à¸Ļ\nà¸¢à¸´à¸Ļ à¸Ķà¸µ\nĠc Åĵur\nĠiÅŁ aret\nĠ×ĳ×¢ ×ĸ×¨\nĠ×ĳ×¢×ĸ×¨ ×ª\nĠÐ¿ Ð°ÑĨÐ¸\nĠÐ¿Ð°ÑĨÐ¸ ÐµÐ½ÑĤ\nãģ¿ãģŁãģĦ ãģ§ãģĻ\nÐ² ÐµÐ·\nÐ»Ð¸ Ð½Ð°\nÐ¾Ð´ Ðµ\nĠ×Ĳ×ķ×ª ×Ł\ndÄ±ÄŁ Ä±nÄ±z\nĠÐĲ Ð²\nĠÐĲÐ² ÑĤÐ¾ÑĢ\nï¼ ®\nĠC áº§n\nĠØ§ÙĦØ§ Ø®\nĠØ§ÙĦØ§Ø® Ø¨Ø§Ø±\nĠê±° ìĿĺ\nĠat enÃ§Ã£o\nĠgeld iÄŁi\nãĤª ãĤ¹\nãĤªãĤ¹ ãĤ¹\nãĤªãĤ¹ãĤ¹ ãĥ¡\nÐµÐ² ÑĭÐµ\nÐºÑĢÑĭ Ð»\nà¹Ģà¸Ĭ à¸µà¸¢à¸ĩ\nà¹Ģà¸Ĭà¸µà¸¢à¸ĩ à¹ĥà¸«à¸¡à¹Ī\nĠmar Ã§o\nĠØ§ÙĦÙħ Ø§Ø¯Ø©\nĠÐ³ Ð¾Ð»\nĠsprzeda Å¼y\nĠíķ´ ê²°\nĠÐķ Ð³Ð¾\nê¹ Ģ\nĠ×ľ×§×ĳ×ľ ×ª\nĠØ§ÙĦÙģ ÙĨØ§ÙĨ\nĠcomunic aciÃ³n\nà¹Ģà¸ªà¹īà¸Ļ à¸Ĺà¸²à¸ĩ\níĺ ¹\nà¸Ĭ à¸³\nà¸Ĭà¸³ à¸£à¸°\nĠ×Ľ ×Ĳ×ŀ\nĠ×Ľ×Ĳ×ŀ ×ķ×¨\nà¸Ĭ à¹Īà¸²à¸ĩ\nØ² ÙĩØ±\nĠklient Ã³w\nÐ¸Ð²Ð° ÑİÑĤ\nÐ°Ð½ Ð³\n×ł ×ļ\nĠg á»įn\nÃľ R\nìĺģ ìĥģ\nĠØº Ø²Ø©\nìĿĮ ìĿĦ\nĠbez po\nĠbezpo ÅĽ\nĠbezpoÅĽ redni\nĠØ§ÙĦÙħ ÙĪØ§\nĠØ§ÙĦÙħÙĪØ§ Ø·ÙĨ\nĠØ§ÙĦÙħÙĪØ§Ø·ÙĨ ÙĬÙĨ\nãĤĮ ãģ¾ãģĻ\nĠÐ¼Ð°ÑĤ Ñĩ\n×Ĳ ×ķ×Ł\nĠØ± Ø³ÙħÙĬ\nĠÑįÐº Ð¾Ð½\nĠÑįÐºÐ¾Ð½ Ð¾Ð¼\nĠÑįÐºÐ¾Ð½Ð¾Ð¼ Ð¸ÑĩÐµÑģÐº\nãĥľ ãĥ¼\nĠÐ´ Ð¸ÑĢ\nĠÐ´Ð¸ÑĢ ÐµÐºÑĤÐ¾ÑĢ\nĠÑģÐº Ð¾ÑĢÐ¾\nà¸ļ à¸³\nà¸ļà¸³ à¸£\nà¸ļà¸³à¸£ à¸¸à¸ĩ\nĠÑĦ ÑĥÑĤ\nĠÑĦÑĥÑĤ Ð±Ð¾Ð»\nĠ×Ĳ ×Ļ×ľ\nĠì¤ĳ êµŃ\nìľ ¤\neÄŁ e\nà¹Ħ à¸ģà¹Ī\ntra Ã®\ntraÃ® n\nĠÑĤ ÑĢÑĥÐ±\nà¹Ģà¸ļ à¸·\nà¹Ģà¸ļà¸· à¹īà¸Ńà¸ĩ\nà¹ģà¸¡ à¸Ļ\nĠØªØŃ Ø¯ÙĬØ«\nĠ×Ľ ×¢×ª\nØŃ Ø§Ø³Ø¨\nlÄ± ÄŁa\n×§×Ļ ×Ļ×ŀ×Ļ×Ŀ\nÐ¾ÑģÑĤ ÑĮÑİ\nà¸Ŀ à¸±\nà¸Ŀà¸± à¹Īà¸ĩ\nØ´ ØºÙĦ\nìĽ ¹\nĠÐºÐ°Ð¶Ð´ Ð¾Ð³Ð¾\nĠbÃ¶lÃ¼m Ã¼\nà¸«à¸Ļ à¸µ\nĠistedi ÄŁi\nĠtr Æ°ng\nãĥ Į\nà¸® à¸Ń\nØ£ÙĨ Ø´\nØ£ÙĨØ´ Ø·Ø©\nĠØ§ÙĦÙħ Ø³ÙĬ\nĠØ§ÙĦÙħØ³ÙĬ ØŃ\nà¸¥à¸±à¸ģà¸© à¸ĵà¹Į\nĠn á»Ńa\nà¸Ĺà¸µà¹Ī à¸ķà¹īà¸Ńà¸ĩà¸ģà¸²à¸£\nÑĪ ÐµÐº\nÐ» Ñĳ\nĠ×© ×Ļ×Ķ\nĠ×©×Ļ×Ķ ×Ļ×Ķ\nĠkhu Ã´n\nĠÑĤÑĢÐµÐ± Ð¾Ð²Ð°Ð½Ð¸Ñı\nĠ×ľ×¢ ×ĸ×ķ×¨\nĠØ§ÙĦØ¹ ÙħØ±\nà¸£à¸²à¸Ħà¸² à¸ĸà¸¹à¸ģ\nÙĩÙı ÙħÙĴ\nÃ¼ st\nÃ¼st Ã¼\nĠÐ´ÐµÐ½ ÐµÐ³\nĠn áº¡\nà¸Ĥà¸Ļ à¸¡\nĠÐ±Ð» Ð°Ð³\nĠÐ±Ð»Ð°Ð³ Ð¾Ð´\nĠÐ±Ð»Ð°Ð³Ð¾Ð´ Ð°ÑĢ\nĠÐ±Ð»Ð°Ð³Ð¾Ð´Ð°ÑĢ Ñı\nØ¥ Ø³ÙĦØ§Ùħ\nà¸Ļà¸´ à¸§\nçŁ¥ ãĤīãģªãģĦ\nØ« ÙĤØ©\nĠÐ³ Ð¾Ð»Ð¾Ñģ\n×Ĳ×ķ×¨ ×Ĺ\nĠtr á»©ng\nĠÐ¾Ð´ Ð½Ð¾Ð¼\nĠkoÅĦ cu\nĠ×ķ ×¨×§\nWi ÄĻ\nWiÄĻ cej\nĠ×Ĳ ×Ļ×Ľ×ķ×ª\nĠ×Ĳ×Ļ×Ľ×ķ×ª ×Ļ\nÑģ Ð¾Ñģ\nĠje Å¼eli\nä»¥ä¸ĭ ãģ®\nå°ı ãģķ\nå°ıãģķ ãģª\nÐ¾Ð»Ð¾Ð³ Ð¸Ð¸\nĠÐ¾Ð± ÑģÐ»ÑĥÐ¶\nĠÐ¾Ð±ÑģÐ»ÑĥÐ¶ Ð¸Ð²Ð°\nÙĥØª Ø§Ø¨Ø©\nĠê´Ģ ìĭ¬\n×¢ ×©×Ļ×¨\nĠaras Ä±ndaki\nĠÑĢÐ°Ð¹ Ð¾Ð½Ð°\nÙĪØ§ Ø¬Ø¨\nĠ×ĳ×Ĺ×Ļ ×Ļ\níķ´ ì£¼\nĠg Ã³c\nÐ°Ð¹ Ð»\nĠT Ã¬nh\næļ® ãĤī\næļ®ãĤī ãģĹ\næĻĤ ãģ«ãģ¯\nĠÐ³Ð¾ÑĢÐ¾Ð´ Ðµ\nĠ×Ľ×Ĳ ×Ļ×ľ\nĠ×Ľ×Ĳ×Ļ×ľ ×ķ\nĠC á»Ļng\nãģ©ãģĨ ãģĹãģ¦ãĤĤ\n×Ĺ ×ķ×£\nØªØŃ Ø±Ùĥ\nĠÑģÐ»Ð¾Ð² Ð°Ð¼\nà¸Īà¸° à¸Ĭà¹Īà¸§à¸¢\nĠØ§ÙĦÙħØ³Øª ÙĤØ¨ÙĦ\nÙĤ Ø¶\nÙĤØ¶ ÙĬ\n×ĳ×¡ ×ķ×¤\n×ĳ×¡×ķ×¤ ×ķ\niÄĻ Äĩ\nĠY Ä±l\nØ´ ÙĬØ®\nà¸Ħà¸¸à¸ĵ à¸Īà¸°\n×©×ŀ ×ķ×ª\nĠØª Ø¹Ø±Ø¶\nĠanÃ¡l ise\nĠÑģÐ¾Ð± Ð¸ÑĢÐ°\nà¹Ģà¸ŀ à¸Ĭ\nà¹Ģà¸ŀà¸Ĭ à¸£\nĠÐ² ÐµÐ»Ð¸\nĠÐ²ÐµÐ»Ð¸ Ðº\nà¸ªà¸± à¹īà¸Ļ\nĠpop ulaÃ§Ã£o\nà¸£à¹Īà¸§à¸¡ à¸ģà¸±à¸Ļ\n×Ĺ ×ŀ\n×Ĺ×ŀ ×Ļ×©×Ļ\n×¡ ×Ļ×¡\nåĨħ ãģ§\nĠsob Äħ\nĠY ay\nĠYay Ä±n\nãĥ¡ ãĥĭãĥ¥ãĥ¼\nĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤÐ°Ð² Ð»Ñı\nãģł ãģ¨æĢĿãģĨ\nĠê³ł ê°Ŀ\nĠÐ¾Ð´ Ð½Ð¸Ð¼\nà¹ĥà¸Ļ à¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ\nĠs á»ķ\nĠÐĹ Ð´ÐµÑģÑĮ\nĠÐ¸Ð·Ð¼ÐµÐ½ ÐµÐ½Ð¸Ñı\nĠìĿ¼ ìĿĦ\nãģªãģ® ãģł\nÐºÐ»Ð°Ð´ ÑĭÐ²Ð°\nÑĢ Ð¼Ð°\nĠ×ķ×ĳ ×Ľ×ľ\nØªØ£ ÙħÙĬÙĨ\nĠÐ¿ÑĢÐ¸ ÑıÑĤ\nĠÐ¿ÑĢÐ¸ÑıÑĤ Ð½\nÙħ ÙħØ§Ø±\nÙħÙħØ§Ø± Ø³Ø©\nãģ¨ãģª ãģ£ãģ¦\nĠØ¬ ÙħÙĬÙĦ\nĠì§ Ī\nĠì§Ī ë¬¸\nĠquest Ã£o\ni Ã©\niÃ© ndo\nà¸«à¹īà¸Ńà¸ĩ à¸ŀà¸±à¸ģ\nãĥĳ ãĥ¼ãĥĪ\nÑĤÐ²ÐµÑĢÐ¶ Ð´Ð°\nÐ½ ÑģÐºÐ¾Ð¹\nÐ· Ð°Ð»\nà¸¡à¸¸ à¹Īà¸ĩ\ná» Ĭ\nĠ×Ķ×Ĳ×Ĺ×¨ ×ķ×ł×Ķ\nĠTh Æ°\nì£¼ ë¯¼\nĠØ§ÙĦØ¹ Ø¨\nÃ©v Ã©n\nÃ©vÃ©n ement\nÙĤÙĪ Ø§Ø¹Ø¯\nØ¯ Ùı\nĠìķĬ ìĬµëĭĪëĭ¤\nĠë³´ ê¸°\nĠyapÄ±l masÄ±\nà¹Ģà¸£ à¸²à¸ģ\nà¹Ģà¸£à¸²à¸ģ à¹ĩ\nØŃ Ø°Ø±\nÙĤ ØµØ±\nãģ¦ãģĹãģ¾ ãģĦãģ¾ãģĹãģŁ\nĠà¹Ģà¸Ľà¹ĩà¸Ļ à¸ķà¹īà¸Ļ\nãģ¨ ãģ«\nãģ¨ãģ« ãģĭ\nãģ¨ãģ«ãģĭ ãģı\nÐ½ ÑĨÐµ\nÐ·Ð² ÑĥÐº\nãģĹãĤĪãģĨ ãģ¨\nĠØ§ÙĦØµØŃ ÙĬØ©\nĠ×©×Ķ ×Ļ×ķ\nĠDi ÄŁer\nÙĤÙĦ ÙĤ\nãĤ¸ãĥ£ ãĥ³\nĠr á»Ŀi\nĠÐ» ÐµÑĩ\nĠÐ»ÐµÑĩ ÐµÐ½Ð¸Ñı\nØªØ¨ Ø§Ø¯\nØªØ¨Ø§Ø¯ ÙĦ\n×¦ ×¤×Ķ\nà¸Ħà¸§à¸²à¸¡ à¹Ģà¸«à¹ĩà¸Ļ\nĠØ´ Ø¨\nĠØ´Ø¨ ÙĥØ©\n×¨ ×Ļ×§\nÙħ Ø¹Ø¯\nÙħØ¹Ø¯ Ø§Øª\ndÄ±ÄŁ Ä±nda\nĠ×ĳ×© ×ł×Ļ×Ŀ\nĠ×Ķ ×Ļ×©×¨×Ĳ×ľ\nĠ×Ķ×Ļ×©×¨×Ĳ×ľ ×Ļ×ª\nĠsÄ± nav\n×ł×¦ ×Ļ×Ĵ\nà¸§à¸±à¸ķ à¸ĸà¸¸\nĠØ§ÙĦØ¨Ø± ÙĦÙħ\nĠØ§ÙĦØ¨Ø±ÙĦÙħ Ø§ÙĨ\nt ivitÃł\nãĤĵãģł ãĤįãģĨ\n×§×Ļ ×Ļ×ŀ\nÙĦÙĬ Ùĥ\nĠÄĳ Ã²\nĠÄĳÃ² i\nĠÐĺÐ½ ÑĤÐµÑĢ\nĠÐĺÐ½ÑĤÐµÑĢ Ð½ÐµÑĤ\nãģ«ãģ¨ãģ£ãģ¦ ãģ¯\nãģ£ ãģĵ\n×§ ×ķ×¡\nØ³Øª ØŃÙĤ\næķĻ ãģĪãģ¦\nãĥĢ ãĥ¡\nĠÙħÙĨ Ø²ÙĦ\nà¹Ģà¸ĭ à¹ĩà¸Ļ\nä½¿ ãģĪãĤĭ\nè¦ĭ ç©į\nè¦ĭç©į ãĤĤãĤĬ\nØ£ Ùģ\nØ£Ùģ ÙĥØ§Ø±\nĠÐ¸Ð³ ÑĢÐ¾Ð²\nĠÐ¸Ð³ÑĢÐ¾Ð² ÑĭÐµ\nĠm ÄĻÅ¼\nĠmÄĻÅ¼ czy\nĠmÄĻÅ¼czy zn\nĠØ§ÙĦØŃ ÙĤÙĬÙĤÙĬ\nØ¹ Ø¨Ø±\n×Ľ×ķ×ľ ×ł×ķ\níĿ ¥\n×ŀ×Ĳ ×ķ×Ĺ×¨\nØ®Øª Øµ\nãĥŀ ãĥŀ\nĠ×Ĳ×Ĺ ×ķ×ĸ\ní ĮĢ\nĠr á»ĳi\nĠÐ² ÑĤÐ¾ÑĢ\nĠÐ²ÑĤÐ¾ÑĢ Ð¾Ð¹\nĠl áº«n\nÐ¿ÑĢ Ð¾Ð¼\nÐ¿ÑĢÐ¾Ð¼ ÑĭÑĪ\nÐ¿ÑĢÐ¾Ð¼ÑĭÑĪ Ð»ÐµÐ½\nÐ¿ÑĢÐ¾Ð¼ÑĭÑĪÐ»ÐµÐ½ Ð½\nĠÐ¾ÑĤÐ½Ð¾ÑĪ ÐµÐ½Ð¸Ñı\nĠs á»©\nĠÐ¼ Ð¾Ð±Ð¸Ð»ÑĮ\nĠÐ¼Ð¾Ð±Ð¸Ð»ÑĮ Ð½\nĠÑįÑĤ Ð¾Ð¼Ñĥ\nĠt áº¡p\nĠìĤ¬ ê±´\nĠìķĮ ëł¤\nÙĥ Ùı\nÙĥÙı ÙħÙĴ\nĠ×§ ×ķ×¨×Ķ\nĠÑĦ Ð¸ÑĢ\nĠÑĦÐ¸ÑĢ Ð¼\nĠsÄ±k Ä±ntÄ±\n×ł ×Ľ\n×ł×Ľ ×ķ×Ł\nÙĪÙĦÙĪØ¬ ÙĬ\nØŃ Ø§ÙĨ\nĠlo áº¡n\nĠ×Ĳ×ľ ×£\nĠm áº¯n\nabh Ã¤ng\nabhÃ¤ng ig\nĠÑĥÑĢÐ¾Ð² Ð½Ñı\nĠ×ľ×ĳ×ĵ ×ķ×§\nÙĬ ÙħÙĨ\nlay Ä±n\nĠh áº£i\nĠÐ·Ð°Ð² Ð¾Ð´\nĠìķĦ ì£¼\nà¸ªà¸ĸ à¸²\nà¸ªà¸ĸà¸² à¸ļà¸±à¸Ļ\nĠgÃ¼ven lik\nà¹Ģà¸Ķ à¹Īà¸Ļ\n×ĳ×ĵ ×§\nĠë Ī\nĠëĪ Ħ\nĠëĪĦ êµ¬\néĩįè¦ģ ãģª\nà¸£à¸Ńà¸ĩ à¸£à¸±à¸ļ\nsch lie\nschlie ÃŁen\nĠìĸ ¼\nĠìĸ¼ ë§Ī\nĠìĸ¼ë§Ī ëĤĺ\nÑĤÐ¸ ÐºÐ¸\níķľëĭ¤ ê³ł\nãģłãģ£ãģŁ ãĤī\nĠ×Ķ ×Ļ×ĺ×ĳ\nãģªãģĳãĤĮãģ° ãģªãĤīãģªãģĦ\nÃ¢ Ì\nÃ¢Ì £\nĠph áº¡t\nak Ä±ÅŁ\nãģ¦ãģĹãģ¾ ãģĦãģ¾ãģĻ\nà¹Ģà¸ĭ à¹ĩ\nĠÐ¡ ÐµÐ³Ð¾Ð´Ð½Ñı\nĠinsan larÄ±n\nĠdÃ©velop pe\n×ª ×¤×¨\n×ª×¤×¨ ×Ļ×ĺ\nØ§ÙĨØª Ø´Ø§Ø±\nê° ĳ\nFran Ã§ois\nØ£ÙĦ Ø¹\nØ£ÙĦØ¹ Ø§Ø¨\nãĤĴ è¶ħ\nãĤĴè¶ħ ãģĪ\nĠê°Ļ ìĬµëĭĪëĭ¤\nãĤ³ ãĥ¬\nĠÐ¼ÐµÑģÑı ÑĨÐµÐ²\níĮ ħ\nĠØ§ÙĦØ¬ Ø§ÙħØ¹Ø©\nìĿ¸ íĦ°\nìĿ¸íĦ° ëĦ·\n×ĵ×¨ ×ķ×©\nĠÙĪØ£ Ø´Ø§Ø±\nĠÐ¿ÑĢÐ°Ð² Ð¸Ð»Ð°\nãģĿãģĵ ãģ«\n×Ĺ ×ŀ×ĵ\nà¹Ģà¸«à¸ķà¸¸ à¸ģà¸²à¸£à¸ĵà¹Į\nĠê²½ íĹĺ\nãģ¶ ãĤĬ\n×ľ ×©\n×ľ×© ×ķ×Ł\nà¹Ģ à¸ĸ\nĠDo ÄŁu\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°Ð½Ð¸Ðµ\nĠÃ§oc uÄŁu\nÐ¼Ð°Ð³Ð°Ð·Ð¸Ð½ Ðµ\nĠÄĳi á»ĥn\nĠas lÄ±\nĠaslÄ± nda\nĠdoen Ã§a\nĠØ³ Ø§Ø¹\nĠØ³Ø§Ø¹ Ø§Øª\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°Ð½Ð¸Ñı\n×¨ ×ķ×¦×Ļ×Ŀ\nĠÐ·Ð½Ð°Ñĩ Ð¸ÑĤ\nĠÑĢÐ°Ð ¼\nĠÑĢÐ°Ð¼ ÐºÐ°Ñħ\nê±° ë¦¬\nĠÐ¿ ÑĭÑĤÐ°\nãĥģ ãĥ³\nĠÐ¿Ð¾ ÑģÐº\nĠÐ¿Ð¾ÑģÐº Ð¾Ð»ÑĮ\nĠÐ¿Ð¾ÑģÐºÐ¾Ð»ÑĮ ÐºÑĥ\nØ¥ Ø¨Ø±\nØ¥Ø¨Ø± Ø§Ùĩ\nØ¥Ø¨Ø±Ø§Ùĩ ÙĬÙħ\nĠÑĤÑĢ ÐµÑħ\nĠGen Ã§\nØ³ ÙĪÙģ\nĠve ÃŃculo\nĠNg Ã¢n\nĠÐ¾ÑĩÐµÑĢ ÐµÐ´ÑĮ\nà¸Ħà¸£ à¸¶à¹Īà¸ĩ\n×Ĳ ×ĳ×Ļ\nà¸ķ à¹īà¸¡\nãĤĴè¡Į ãģĦ\nĠØ§ÙĦØ³Ø§Ø¨ ÙĤØ©\nÐ½Ð° ÑĨÐ¸\nÐ½Ð°ÑĨÐ¸ Ð¾Ð½Ð°\nÐ½Ð°ÑĨÐ¸Ð¾Ð½Ð° Ð»ÑĮÐ½\nĠgest iÃ³n\nØª ÙĤØ¯\nĠØ§ÙĦØ¨ÙĬ Ø§ÙĨ\nĠØ§ÙĦØ¨ÙĬØ§ÙĨ Ø§Øª\nĠØ§ÙĦ Ø§ÙĨØªØ®Ø§Ø¨\nĠØ§ÙĦØ§ÙĨØªØ®Ø§Ø¨ Ø§Øª\nà¹Ģà¸Ĭ à¹Īà¸²\n×ĵ ×Ĳ×Ĵ\nĠ×ľ×Ĵ ×ŀ×¨×Ļ\nĠØª ØŃØªØ§Ø¬\nĠth Ã´n\nà¸ķ à¹īà¸Ńà¸Ļ\nà¸ķà¹īà¸Ńà¸Ļ à¸£à¸±à¸ļ\nå¥³ ãģ®\nå¥³ãģ® åŃĲ\nĠth á»Ł\nØ· ØŃÙĨ\nà¸²à¸£à¹Į à¸Ķ\n×ª ×ŀ×Ļ×ĵ\nĠÑģÐ°Ð¼ ÑĭÐ¼\nĠìĭľ íĸī\nØ¥ ØµØ¯\nØ¥ØµØ¯ Ø§Ø±\nĠNgh á»ĩ\nìķ ķ\nØ³ Ø¦\nØ³Ø¦ ÙĦ\nà¸Ń à¸²à¸£\nà¸Ńà¸²à¸£ à¸¡\nà¸Ńà¸²à¸£à¸¡ à¸ĵà¹Į\nà¹ģ à¸®\n×ł×ĺ ×ľ\nĠì¢ĭ ìķĦ\n×ķ×ľ ×ľ\nĠ×ĳ ×Ľ×ª×ĳ\nãĤ« ãĥ©\n×¦×¢ ×Ļ×¨×Ļ×Ŀ\nØªØ¹Ø¨ ÙĬØ±\nĠ×ŀ ×§×¨×Ķ\nĠÑĦÐ°Ðº ÑĤÐ¾ÑĢ\nĠØª ÙħØ§Ùħ\nĠØªÙħØ§Ùħ Ø§\nëį ķ\nĠv Æ°á»Ŀ\nĠvÆ°á»Ŀ n\nĠd Ä±ÅŁÄ±\nãģĦ ãģ¡\nĠ×ľ×§ ×ł×ķ×ª\nĠØ§ÙĦØ¹ ÙĦØ§ÙĤØ§Øª\nÐ¿ ÑĥÐ±\nÐ¿ÑĥÐ± Ð»Ð¸\nØ¥ ÙĬÙħ\nØ¥ÙĬÙħ Ø§ÙĨ\nà¸Ńà¸³ à¸Ļà¸²\nà¸Ńà¸³à¸Ļà¸² à¸Ī\nåĲ« ãģ¾ãĤĮ\nãĤĭ ãģŁãĤģãģ«\n×¡ ×Ĵ\n×¡×Ĵ ×ł×ķ×Ł\nØªØŃ Ø¯ÙĬ\nĠaup rÃ¨s\nĠØ§ÙĦØ¬ ÙĩØ§\nĠØ§ÙĦØ¬ÙĩØ§ Ø²\nĠ×ŀ ×ª×Ĺ×ª\nÐµÐ½ Ð½ÑĥÑİ\nĠÐ· Ð¸Ð¼\nà¸ģà¸² à¹ģà¸Ł\nĠ×ĳ×ª ×ķ×¨\nĠngh Ã¨\nĠnghÃ¨ o\nĠÐĽ Ñİ\nĠÐĽÑİ Ð±\n×ª×§ ×¦×Ļ×ĳ\n×ŀ×¢ ×©×Ķ\nĠØ§ÙĦØ¨ÙĬ Øª\n×¦ ×Ļ×¤\nĠÐ¾Ð±ÑıÐ· Ð°Ð½\nĠM á»Ĺi\nĠÐ¢ ÑĥÑĢ\nĠÙĪØ¨ Ø§ÙĦØª\nĠÙĪØ¨Ø§ÙĦØª Ø§ÙĦÙĬ\nĠdÃ©c ision\nĠØ¨ Ø¯\nĠØ¨Ø¯ Ø£Øª\nĠc á»¥c\nĠb ask\nĠbask Ä±\nĠhat Ä±rl\nĠhatÄ±rl a\nå°ı ãģķãģĦ\nĠgerÃ§ek ten\nà¸ľ à¸±à¸ģ\nåı¯èĥ½ ãģª\n×ŀ×Ĳ ×¡\nĠcr ÃŃtica\nĠìĿĺ ìĽĲ\nØ¹ÙĤ ÙĪØ¯\n×ĺ ×Ľ×ł\n×ĺ×Ľ×ł ×ķ×ľ×ķ×Ĵ×Ļ×Ķ\nè¨Ģ ãģĪãģ°\nĠÙĤ ÙĨØ§\nĠÙĤÙĨØ§ Ø©\nĠìĿ´ê²ĥ ìĿĢ\nØª ØµØ±\nà¸Ł à¸±à¸Ļ\nĠÑĢÐµ ÑĨÐµÐ¿\nĠÑĢÐµÑĨÐµÐ¿ ÑĤ\nĠØ¨ÙĨ ÙģØ³\nÑĢÐ¾ ÑĪ\nĠÐ¼Ð°ÑĢ ÑĤÐ°\nĠson ras\nĠsonras Ä±\n×ķ×ĳ ×©\nãĥª ãĤ¹ãĤ¯\nĠFranÃ§ ais\ná» ļ\nê° Ķ\nĠ×Ķ×ĳ×¨ ×Ļ×ª\n×¤ ×Ļ×¦\n×¤×Ļ×¦ ×ķ×Ļ\nĠÙĦÙħØ§ Ø°Ø§\nĠÐļÐ¸ ÐµÐ²\nĠÑģ Ð¼ÑĭÑģÐ»\nê¸Ī ìľµ\nãĤ·ãĥ£ ãĥ«\nãĥ© ãĤ¤ãĥĪ\nìĽ ĥ\n×ŀ ×Ĺ×¨\nãĨ į\nĠkullan Ä±m\nĠ×Ĳ×¦×ľ ×ł×ķ\nĠt Ãłn\nãĥı ãĥ¼\nãģ¨ ãģ¨ãĤĤ\nãģ¨ãģ¨ãĤĤ ãģ«\nÑĢ ÐµÐ³\nÑĢÐµÐ³ Ð¸\nÑĢÐµÐ³Ð¸ Ð¾Ð½\nãģªãģı ãģªãĤĭ\nĠch áº£y\nĠØ¬ ÙĩØ©\nÅĦsk iej\nà¸Ńà¸µ à¹Ģà¸¡\nà¸Ńà¸µà¹Ģà¸¡ à¸¥\nãģį ãģ£ãģ¨\nĠìĺĪ ìĤ°\nĠkit abÄ±\nĠedu caÃ§Ã£o\nĠbul uÅŁ\nÐ¾Ð»Ð¾Ð³ Ð¸Ñı\nĠÐºÐ¾Ð½ ÐºÑĢ\nĠÐºÐ¾Ð½ÐºÑĢ ÐµÑĤ\n×Ĵ ×Ļ×¨\nĠÐ¿ÑĢÐµÐ´ Ð»Ð°Ð³\nĠÐ¿ÑĢÐµÐ´Ð»Ð°Ð³ Ð°ÐµÑĤ\nĠY Ãªn\nĠíķľ ë²Ī\nĠ×ŀ ×¨×Ľ×ĸ×Ļ\nà¹Ģà¸Ľà¸´à¸Ķ à¹Ģà¸ľà¸¢\nÑĤÐ²ÐµÑĢ Ð´\nĠH á»ĩ\nĠÐĵ ÑĢ\nà¸Ŀ à¹īà¸²\n×Ķ ×©×§\n×Ķ×©×§ ×¢×Ķ\nĠÐ½Ð° ÑĥÐº\nìłĲ ìĿĦ\nĠÐ½ ÐµÐ»ÑĮ\nĠÐ½ÐµÐ»ÑĮ Ð·\nĠÐ½ÐµÐ»ÑĮÐ· Ñı\nÐ³ Ð¸Ð½\nĠB Ã¶l\nĠBÃ¶l ge\nĠÐ² Ð»Ð°\nĠÐ²Ð»Ð° ÑģÑĤÐ¸\nà¹Ģà¸Ļ à¹ĩ\nà¹Ģà¸Ļà¹ĩ à¸ķ\nê³ ¨\nĠÃ¶ ld\nĠÃ¶ld Ã¼r\n×Ľ×ł ×¢\nĠØ§ÙĦÙĩ ÙĬØ¦Ø©\nØª Ø§Ø±ÙĬØ®\nĠÐĳ ÑĢ\nĠÑģ Ð¼Ð¾Ð¶\nĠÑģÐ¼Ð¾Ð¶ ÐµÑĤÐµ\nĠL Ãºc\nà¹Ħà¸Ľ à¸ĸà¸¶à¸ĩ\nĠBakan Ä±\nĠerklÃ¤ rt\nĠÐĲ Ð½Ð°\nĠsc Ã¨ne\nåķı ãģĦ\nåķıãģĦ åĲĪãĤıãģĽ\nÙħÙĩ ÙĨØ¯\nÙħÙĩÙĨØ¯ Ø³\nĠÐ½ Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ\nÐ¸Ð² Ð°Ð½Ð¸Ñı\nãĤĴ å¤īãģĪ\nä»ĺãģį åĲĪ\nãĥĳ ãĤ½\nãĥĳãĤ½ ãĤ³ãĥ³\næĺİ ãĤī\næĺİãĤī ãģĭ\nà¹Ģà¸Ńà¸ģ à¸ªà¸²à¸£\nà¹Ģà¸ģà¸´à¸Ļ à¹Ħà¸Ľ\nÐ» ÐµÐ¿\nãģĹãģŁ ãĤĤãģ®\nĠC Ã¢m\nĠCÃ¢m ara\n×§×ķ×ľ ×ł×ķ×¢\nĠ×ĳ×Ĵ ×Ļ×Ł\nĠoc zy\nĠoczy wiÅĽcie\natt ivitÃł\nãĥĵ ãĥ¥ãĥ¼\nĠeduc aciÃ³n\nÄ° YE\nê¹Į ìļĶ\nãĤ¨ ãĥªãĤ¢\nÐ½ ÐµÑģÑĤÐ¸\nĠm Ã³g\nĠmÃ³g ÅĤ\nĠ×§×ĺ ×ł×Ļ×Ŀ\nĠPr Ã¤\nĠ×ľ×¢ ×ĳ×ķ×¨\nØ¨ÙĨ Ùī\nÐ· Ð¾Ð»\nÐ·Ð¾Ð» Ð¾ÑĤ\nĠwn ÄĻtr\nĠwnÄĻtr z\nĠconstr uÃ§Ã£o\nà¸£à¸±à¸ļ à¸£à¸Ńà¸ĩ\nØ³ Ø¬ÙĨ\nĠ×§ ×ķ×ł\n×¡ ×Ļ×¤×ķ×¨\nĠÙħ Ø¯Ùī\nØ±Ø¶ Ùī\nÐ¿ Ð»Ð°Ð²\nï¼ ¥\nĠil a\nĠila Ã§\nãĤĭ ãģ¹ãģį\nĠÙħ ÙĪÙĤÙģ\nà¸ģà¸£ à¸¸\nà¸ģà¸£à¸¸ à¸ĵà¸²\nchodzÄħ c\nĠÑĤÑĭ Ñģ\nÐķ Ð²ÑĢÐ¾\nĠÙĬ ØŃØ¯Ø«\nãĥ¡ ãĤ¤ãĥ³\nĠØ§ÙĦØµ ØŃÙĬ\nĠÐĶ Ð°Ð½\nØ¯Ø¹ Ø§Ø¡\nãĤ´ ãĥ¼ãĥ«\n×© ×ł×ª×Ļ\n×©×ł×ª×Ļ ×Ļ×Ŀ\nà¸Ķà¹īà¸§à¸¢ à¸ģà¸±à¸Ļ\nĠol acaÄŁÄ±\nĠ×ĳ ×ŀ×Ĺ×Ļ×¨\n×Ķ ×§\n×Ķ×§ ×ŀ×ª\nãĥ¢ ãĥİ\nĠÃ§alÄ±ÅŁ tÄ±\nĠjÃ³ venes\nãģĦãģı ãĤī\nĠÙħ Ø¹Ø¯ÙĦ\nĠC Å©ng\nĠSeg Ãºn\nĠdÃ¶nem de\nĠ×ľ ×Ļ×ĵ×Ļ\nãģį ãģ¡\nãģįãģ¡ ãĤĵ\nãģįãģ¡ãĤĵ ãģ¨\nÙģØ± ÙĨØ³\nÙģØ±ÙĨØ³ Ø§\nåĲĳ ãģį\nĠcamp aÃ±a\nĠÑģÐ°Ð¼ Ð¾ÑģÑĤÐ¾Ñı\nĠÑģÐ°Ð¼Ð¾ÑģÑĤÐ¾Ñı ÑĤÐµÐ»ÑĮÐ½Ð¾\ná» Ģ\nÙĤ ÙĪØ§\nØ³ ÙĦØ§ØŃ\nà¸ģà¸£à¸° à¹ģ\nà¸ģà¸£à¸°à¹ģ à¸ª\nĠÐ¿Ð¾Ð»ÑĮÐ· Ñĥ\nn qu\nnqu Ãªte\nà¸£à¹Īà¸§à¸¡ à¸ģà¸±à¸ļ\nëĬĲ ëĥĲ\nà¸Ĺà¸µà¸¡ à¸Ĭà¸²à¸ķà¸´\nĠyÄ±ll Ä±k\nìĬ ¬\nĠØ£ ØµØŃØ§Ø¨\nill Ã©\nĠdÃ³ la\nĠdÃ³la res\nĠÐº Ð¾Ð¶\nĠÐºÐ¾Ð¶ Ð¸\nà¸¥ à¹īà¸Ń\nà¹Ģà¸£à¸µà¸¢ à¸ļà¸£\nà¹Ģà¸£à¸µà¸¢à¸ļà¸£ à¹īà¸Ńà¸¢\nà¹Ģà¸ŀ à¸´\nà¹Ģà¸ŀà¸´ à¹Īà¸ĩ\nÑĢÐ¸ÑĤÐ¾ÑĢ Ð¸\nĠí ĳľ\nĠíĳľ íĺĦ\nĠÐ¿ÐµÑĢ ÐµÐ²\nĠÐ¿ÐµÑĢÐµÐ² Ð¾Ð´\n×¤×Ĵ ×Ļ×¢×Ķ\nĠdeÄŁerlendir me\nÙģ Ø§Ø¦\nĠÐ²Ñĭ Ð³Ð¾Ð´\nÄ±nÄ±z Ä±\n×ķ×Ľ ×Ļ×Ĺ\nĠÐ´Ð¾ÑģÑĤ Ð¸Ð³\nĠng Ãłn\næĢĿ ãģ£ãģŁ\nĠÐķ ÑģÑĤÑĮ\nĠØ§ÙĦØ± ØºÙħ\nĠzwiÄħz ane\nØ±Ø¨ Ø·\nà¸Ļ à¸¶à¸ĩ\nĠ×ľ×Ĺ ×ķ×§\nĠszczeg Ã³ln\nĠszczegÃ³ln ie\nĠØ¨Ø§ Ø³ØªØ®Ø¯Ø§Ùħ\nĠfÃŃs ico\n×¢ ×¡\n×¢×¡ ×ķ×§\nØ³ÙĦ ÙĪÙĥ\nĠØ§ ØŃØ¯\nÑĩ ÑĳÑĤ\n×ĸ×Ľ ×Ķ\nĠl á»ĩnh\nĠÙĪ ØŃØª\nĠÙĪØŃØª Ùī\nà¸Ħà¸§à¸²à¸¡ à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\nà¸Ńà¸¢à¸¹à¹Ī à¹ģà¸¥à¹īà¸§\nà¸ģà¸²à¸£ à¹Ģà¸Ķà¸´à¸Ļà¸Ĺà¸²à¸ĩ\nØªØ® Ø°\n×¦×Ļ ×ķ×ĵ\nĠØ§ÙĦØ£ Ø³\nĠØ§ÙĦØ£Ø³ ÙĩÙħ\nĠt á»ĩ\nãģ£ãģ¦ ãģĦãģ¦\nà¸ªà¸£ à¸¸\nà¸ªà¸£à¸¸ à¸Ľ\nĠÐºÐ¾Ð¼ ÑĦ\nĠÐºÐ¾Ð¼ÑĦ Ð¾ÑĢÑĤ\nìĺ¤ ëĬĶ\nĠÑĢÐ°Ð· Ð²\nĠÑĢÐ°Ð·Ð² Ð¸Ð²Ð°\nÐ» Ð°Ð½Ð´\nh Ã¤nge\nĠØ¨ÙĨ Ø³Ø¨Ø©\nà¹Ģà¸Ĥ à¸µà¸¢à¸§\n×¢×¦ ×Ŀ\nĠ×ľ ×ľ×Ľ×ª\nÑģÐ¾ ÑĨÐ¸Ð°Ð»ÑĮÐ½\nĠëĭ¤ìĿĮ ê³¼\nĠ×¨×© ×ķ×ŀ\n×ŀ×¨ ×Ĺ×ĳ\nØ³ ÙĤØ·\nĠalan Ä±\nĠÄĳ á»ĩ\né£Łãģ¹ ãĤĭ\nà¸Ķ à¸¶à¸ĩ\nĠgegen Ã¼ber\nĠØ¨Ùĩ Ø°Ùĩ\nà¸ĸà¸·à¸Ń à¹Ģà¸Ľà¹ĩà¸Ļ\nëķ ħ\nà¸Ħà¸Ļ à¹Ħà¸Ĺà¸¢\nãĤ¢ ãĤ¦\nãĤ¢ãĤ¦ ãĥĪ\nà¸¨ à¸±à¸ģ\nà¸¨à¸±à¸ģ à¸Ķà¸´\nà¸¨à¸±à¸ģà¸Ķà¸´ à¹Į\nÙĤÙĪ Ø§ÙĨ\nÙĤÙĪØ§ÙĨ ÙĬÙĨ\nĠhá»Ļ p\nãģªãģıãģª ãģ£ãģ¦\nĠ×Ĳ ×ŀ×ł\nĠ×Ĳ×ŀ×ł ×Ŀ\nà¹Ģà¸ķ à¸·à¸Ńà¸Ļ\nĠÐ·Ð°Ð²Ð¸Ñģ Ð¸Ð¼\nĠÐ·Ð°Ð²Ð¸ÑģÐ¸Ð¼ Ð¾ÑģÑĤÐ¸\n×ª ×Ļ×Ĳ\n×ª×Ļ×Ĳ ×ķ×¨\nå§ĭãĤģ ãģŁ\nĠng á»į\nĠngá»į t\níĴ į\nê³¼ ìŀ¥\nĠb áº¡i\nãģ§ãģį ãģ¦\nĠcomeÃ§ ar\nà¸Ľà¸£ à¸²à¸ģ\nà¸Ľà¸£à¸²à¸ģ à¸ı\nĠÐ³Ð¾Ð´ Ñĭ\nÐ¼ ÐµÑģ\nĠØ§ÙĦÙħØ³Øª ÙĪÙī\nĠÑģÐ°Ð¼ ÑĭÐµ\nÐ» Ð»ÐµÑĢ\nãģ£ãģ¦ãģĹãģ¾ ãģĦãģ¾ãģĻ\nãģ¨ãģ® ãģĵãģ¨\nbi Ã³\nà¸ģà¸¥ à¹Īà¸Ńà¸ĩ\nĠØ§ÙĦØ² ÙĪØ¬\nãģ«è¡Į ãģ£ãģŁ\nà¸Ħà¹Ī à¸Ńà¸Ļ\nà¸Ħà¹Īà¸Ńà¸Ļ à¸Ĥà¹īà¸²à¸ĩ\nĠbaÄŁ l\nĠbaÄŁl ant\nĠbaÄŁlant Ä±\nç¢º ãģĭ\nç¢ºãģĭ ãģ«\nãĥľ ãĥ¼ãĥ«\nçµĤ ãĤıãĤĬ\n×© ×ŀ×¨\nà¸Ĺà¸µà¹Ī à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\nÙĦ Ø²Ùħ\nÐ´ Ð°ÐµÑĤÑģÑı\nà¸£à¸±à¸ļ à¸Ľà¸£à¸°\nà¸£à¸±à¸ļà¸Ľà¸£à¸° à¸Ĺà¸²à¸Ļ\nå¤ī ãĤıãĤĬ\nï¼ ¢\nĠìĺĪìĪĺ ëĭĺ\nãĤĪãģĨ ãģ¨\nà¸¡à¸±à¸ģ à¸Īà¸°\nĠH Æ°Æ¡ng\nÙĨ ÙģØ°\n×ŀ×ĵ ×ĵ\nĠìĿ¸ ìłķ\nÑħÐ¾Ð´ Ð¸ÑĤÑĮ\nĠÐ·Ð°Ð²Ð¸Ñģ Ð¸ÑĤ\n×ķ×ĵ ×Ļ×¢\nãģĵãģ¨ãģĮ ãģĤãĤĬãģ¾ãģĻ\nØ¹ Ø±Ø§ÙĤ\nØ³Ø· ØŃ\nà¸ģà¸³ à¹Ħà¸£\nëĵ¤ ëıĦ\n×Ļ×¦ ×Ļ×¨×Ķ\nãģĨ ãģĵãģ¨\nÙĦØ§ ØŃÙĤ\nãģĦ ãĤĮãģ°\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ· ÑĥÑİÑĤ\nĠB á»Łi\nĠ×©×§×ľ ×Ļ×Ŀ\nÑĨÐ¸ ÐºÐ»\nÐĲ Ðŀ\nĠ×ĳ×© ×ł×Ķ\nÙĨØ´ Ø·\nĠ×© ×Ļ×ł×ķ×Ļ\nĠ×©×Ļ×ł×ķ×Ļ ×Ļ×Ŀ\nĠpobl aciÃ³n\nĠH Æ°ng\nà¸£à¸° à¸§\nà¸£à¸°à¸§ à¸±à¸ĩ\nØ±ÙĬØ§Ø¶ Ø©\nØ± ØµØ¯\nØªÙĤ ÙĦÙĬ\nØªÙĤÙĦÙĬ Ø¯\nĠÃ¼lk em\nĠÃ¼lkem iz\nà¸Ĭ à¸°\nãĤ¯ãĥª ãĥ¼ãĥł\nèģŀ ãģĦãģŁ\nĠwa Å¼\nĠwaÅ¼ ne\nê±° ëĵł\nê±°ëĵł ìļĶ\n×ŀ×Ĳ ×ĳ×§\n×Ĺ×ĵ ×©×ķ×ª\nĠW roc\nĠWroc ÅĤaw\nĠKÃ¼ ltÃ¼r\ns ist\nsist Ãªncia\n×¢×ĸ×¨ ×Ķ\nĠg Æ°Æ¡ng\nà¸£à¹īà¸²à¸Ļ à¸Ħà¹īà¸²\nĠÙĪØ£ ÙĪØ¶ØŃ\nÃ¡nd ose\nãĤ· ãĥ¼ãĥ³\n×Ĳ×ł ×¨×Ĵ\n×Ĳ×ł×¨×Ĵ ×Ļ×Ķ\nãģªãģĦ ãģ§ãģĻ\nĠkh á»§ng\nĠë¬¸ ìĦľ\nĠ×ĳ ×ĵ×ĳ×¨\n×ĵ ×Ļ×ķ\n×ĵ×Ļ×ķ ×ķ×Ĺ\nĠrÃ© gl\nÙħÙĪ Ø§Ø¯\nÐ¾Ð± Ð¾ÑĢ\nÐ¾Ð±Ð¾ÑĢ Ð¾ÑĤ\nĠ×Ķ ×ĳ×ľ\nĠ×Ķ×ĳ×ľ ×ķ×Ĵ\nØŃ Ø§Ùħ\nĠØ§ÙĦØ¹ Ø§Øµ\nĠØ§ÙĦØ¹Ø§Øµ ÙħØ©\nÐ¿ÐµÑĢ Ð°ÑĤÐ¾ÑĢ\nØª Ø®ÙĦ\nØªØ®ÙĦ Øµ\nãģŁãģł ãģĹ\nØª Ø³Ùħ\nà¹Ĥà¸£à¸ĩ à¸ŀ\nà¹Ĥà¸£à¸ĩà¸ŀ à¸¢à¸²\nà¹Ĥà¸£à¸ĩà¸ŀà¸¢à¸² à¸ļà¸²à¸¥\nĠY Ã¼k\nĠYÃ¼k sek\nĠ×© ×ł×Ļ×ª\nĠ×©×ł×Ļ×ª ×Ł\nliÄŁ e\nĠ×¤ ×ª\nĠ×¤×ª ×ķ×Ĺ\nĠbe ÄŁ\nĠbeÄŁ en\nĠ×ŀ ×ķ×¨\nĠ×ŀ×ķ×¨ ×Ľ×ĳ\nĠØ±Ø³ Ø§ÙĦØ©\níĨµ ìĭł\nĠaval ia\nĠavalia Ã§Ãµes\nĠman h\nĠmanh Ã£\nĠìķ ŀ\nĠìķŀ ìľ¼ë¡ľ\nÙĤ ØªØ±\nÙĤØªØ± ØŃ\nà¹Ģà¸ģ à¸·à¸Ń\nà¹Ģà¸ģà¸·à¸Ń à¸ļ\nĠpropos Ã©\nØ£ ÙħØ§\nØ£ÙħØ§ ÙĥÙĨ\nĠÐŀ Ðŀ\nĠÐŀÐŀ Ðŀ\nÙħÙĤ Ø§Ø±\nÙħÙĤØ§Ø± ÙĨØ©\nëĦ Ĳ\nãģĦãģŁãģł ãģı\nÙĤ ÙĬÙĦ\nĠÐ½Ð° ÑĪÐ¸Ñħ\nãĤ« ãĥĥãĥĹ\n×Ĺ×ľ ×ª\nĠëĭ¤ ë§Į\nà¸Ĺà¸±à¹Īà¸§ à¹Ĥà¸¥à¸ģ\nãĥį ãĤ¿\nØŃØ³ Ø§Ø³\nãģ«ãģª ãĤĮ\nØ¬ Ø§Ø¦\nØ¬Ø§Ø¦ Ø²Ø©\nÃ© change\nÃ© conom\nÃ©conom ie\nÐ¢ Ðĺ\n×¡×ª ×Ľ×ľ\nà¸Ĺà¸±à¹īà¸ĩ à¸ªà¸Ńà¸ĩ\nĠØ§ÙĦØ® Ø§Ùħ\nĠØ§ÙĦØ®Ø§Ùħ Ø³\n×§ ×ĺ×¢\nau waÅ¼\nà¸ľà¸¹à¹ī à¸Ĭà¸²à¸¢\nà¹ģà¸Ľà¸¥ à¸ģ\nåĲĮæĻĤ ãģ«\nÐ·Ð½ Ð°Ð½Ð¸Ñı\nãģĦãģŁãģł ãģįãģ¾ãģĹãģŁ\nĠ×ŀ×ĳ ×ľ×Ļ\nà¸Ĥà¸Ń à¹ĥà¸«à¹ī\nĠØ§ÙĦØª Ø±Ø¨ÙĬØ©\nĠdÃ©cou vert\nĠÅ¼yc iu\napr Ã¨s\nĠy ab\nĠyab anc\nĠyabanc Ä±\nĠbaÅŁ layan\nìĹĪ ëįĺ\nĠhes abÄ±\nĠë§Į ìķ½\në§ Īëĭ¤\nĠTh Ã¡nh\nãĥ´ ãĤ¡\nà¸Ľà¸£à¸±à¸ļ à¸Ľà¸£\nà¸Ľà¸£à¸±à¸ļà¸Ľà¸£ à¸¸à¸ĩ\nĠM áº·c\nà¹Ģà¸«à¸ķà¸¸ à¸ľà¸¥\nĠÐĳ ÐµÐ·\nĠcapac itÃł\nÅĤe ÅĽ\nĠÐ¿ÑĢÐµ Ð¸Ð¼\nĠÐ¿ÑĢÐµÐ¸Ð¼ ÑĥÑīÐµÑģÑĤÐ²\nĠÅļ wiÄĻt\nĠpubli Ã©\n×ŀ×¢ ×¦×ĳ\nÙħØ´Ø§Ø± ÙĥØ§Øª\nà¸łà¸² à¸©\nà¸łà¸²à¸© à¸µ\nĠdeux iÃ¨me\nĠÙħØŃ Ø§ÙģØ¸\nĠÙħØŃØ§ÙģØ¸ Ø©\nĠSch Ã¶n\nï½ ¤\nĠ×Ķ ×ĳ×¢\nĠ×Ķ×ĳ×¢ ×Ļ×Ķ\nĠÙĪØ§ÙĦ ÙĦÙĩ\nè¨Ģ ãģ£ãģŁ\nà¸ķ à¹īà¸²à¸Ļ\nà¸§à¸£ à¸£à¸ĵ\nà¸Ĺà¸´ à¸¨\nĠbaÅŁ Ä±na\nĠmog ÄĻ\n×© ×Ļ×¤×ķ×¨\nĠÙĪ Ø¹Ø¯\nĠÙĪØ¹Ø¯ Ùħ\nĠhistÃ³ rico\nĠk Ä±sÄ±\nĠìĿ´ ê²Į\nĠPol ÃŃtica\nĠÑģÐ¸ÑĤÑĥ Ð°ÑĨÐ¸Ð¸\nĠkoÅĦ ca\n×ĳ×ĵ ×Ļ×§×Ķ\nĠØ§ÙĦØ³ÙĬ Ø§Ø±Ø§Øª\nãģªãĤī ãģ°\nãĤµ ãĥ©\nãĤĭãģĵãģ¨ãģĮãģ§ãģį ãĤĭ\nĠdecis Ã£o\n×ķ ×ķ×ĵ\nlÃ¤ ss\nlÃ¤ss ig\nĠ×ľ ×Ļ×©×¨×Ĳ×ľ\nĠÙĬ Ø£ØªÙĬ\n×¨ ×ķ×ĸ\nÃ¶ ÄŁ\nÃ¶ÄŁ ret\nÃ¶ÄŁret im\nĠÐ´ ÐµÐº\nĠÐ´ÐµÐº Ð°Ð±\nĠÐ´ÐµÐºÐ°Ð± ÑĢÑı\nĠ×© ×Ĺ×ķ×¨\nãģ¦ãģıãĤĮ ãģŁ\nØ¹Ø¨ Ø§Ø±Ø©\nĠÃ©lect rique\nĠØ§ÙĦØªÙĨ ÙħÙĬØ©\nØ¬Ø± Ùī\nĠìĪĺ íĸī\nà¸Ĺ à¸¹\nĠÑĢÐµ Ð°Ð»ÑĮÐ½Ð¾\nÑģÐ¿ Ð¾ÑģÐ¾Ð±\nà¸Ħà¸¥ à¹īà¸²à¸¢\nĠØ³ Ø¹ÙĪØ¯\nÃ¶n Ã¼\nĠÙģ ÙħÙĨ\nØªÙĥ ÙĪ\nØªÙĥÙĪ ÙĬÙĨ\nĠÐºÐ°Ñĩ ÐµÑģÑĤÐ²Ð¾\nĠÐºÐ¾Ð½ÑĤ Ð°Ðº\nĠÐºÐ¾Ð½ÑĤÐ°Ðº ÑĤ\nĠsÃ¶z leÅŁme\nà¸Ń à¹īà¸²à¸ĩ\nĠØª ÙĪÙģ\nĠØªÙĪÙģ ÙĬØ±\n×Ķ×ĸ ×ĵ\n×Ķ×ĸ×ĵ ×ŀ×ł×ķ×ª\nĠØ·ÙĪÙĬÙĦ Ø©\nĠtÃ©r mino\nĠ×Ĳ ×Ļ×¤×Ķ\nãĥĵ ãĥ«\nà¸ª à¹Ĥà¸¡\nà¸ªà¹Ĥà¸¡ à¸ªà¸£\nĠØ§ÙĦ Ø§Ø«\nĠØ§ÙĦØ§Ø« ÙĨÙĬÙĨ\nÐµÐ² Ð¸Ñĩ\nĠopin iÃ³n\nà¸Ľ à¸§à¸Ķ\nåı¤ ãģĦ\nà¸£ à¹Īà¸²\nĠB iaÅĤ\nĠÑģÑĤ Ð°Ð»\nĠÑģÑĤÐ°Ð» Ð¾\nÃ³ logo\nĠìķĦ ëĭĪëĭ¤\nĠ×Ĳ ×Ļ×ª\nĠ×Ĳ×Ļ×ª ×ķ\nà¹Ģà¸«à¹ĩà¸Ļ à¸§à¹Īà¸²\nà¸ļ à¸²à¸£à¹Į\nçĦ ¼\nçĦ¼ ãģį\nĠìĿ´ìļ© ìŀĲ\nĠÐ½ÐµÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÐµ\nks z\nksz taÅĤ\nksztaÅĤ c\nãĤŃãĥ£ ãĥĥãĤ·\nãĤŃãĥ£ãĥĥãĤ· ãĥ³ãĤ°\nĠro ÅĽ\nĠroÅĽ lin\nÑĢÐ°Ð¶ Ð°\n×ĳ×ł×Ļ ×Ļ×Ķ\nà¸Ľà¸£ à¸ªà¸´\nà¸Ľà¸£à¸ªà¸´ à¸ķ\nĠgÃ¶rd Ã¼\n×ŀ×ł×Ķ ×Ļ×Ĵ\nå¤īãĤı ãģ£ãģ¦\nĠ×Ĳ ×Ķ\nĠ×Ĳ×Ķ ×ĳ×ª×Ļ\nà¹Ģà¸£ à¹Īà¸ĩ\nĠÃ¶n Ã¼nde\nĠê·¸ ëĥ¥\nÐ¿Ð¾Ð» Ð¸ÑĤ\nÐ¿Ð¾Ð»Ð¸ÑĤ Ð¸ÑĩÐµÑģÐº\nãĥ¡ ãĥĩãĤ£\nãĥ¡ãĥĩãĤ£ ãĤ¢\nĠDet ay\nĠDetay lÄ±\nĠØ§ÙĦØµÙģ ØŃØ©\nà¸ģà¸²à¸£ à¹Ģà¸ĩà¸´à¸Ļ\nĠìµľ ê·¼\n×Ľ ×©×ľ\nï¼ ©\nÐ²ÑĪ ÐµÐ³Ð¾\níķĺ ìĭ¤\nĠÐŃ ÑĤ\nĠÐŃÑĤ Ð¾ÑĤ\nà¸ª à¸·\nà¸ªà¸· à¸ļ\nĠng á»«ng\nĠÐ´Ð¾ÐºÑĥÐ¼ÐµÐ½ÑĤ Ð¾Ð²\nÐ´Ð°Ð² Ð°ÑĤÑĮ\nĠØ§ÙĦØ´Ø®Øµ ÙĬØ©\nĠ×¦ ×¢×Ļ×¨\nØ¯Ø± Ùĥ\nØ³ ØŃØ¨\nà¹Ħà¸¡à¹Ī à¸Ħà¹Īà¸Ńà¸¢\nĠ×Ķ×ŀ×§ ×ķ×ŀ×Ļ\nà¸ªà¸±à¹Īà¸ĩ à¸ĭà¸·à¹īà¸Ń\nĠê·¸ê²ĥ ìĿĦ\nãģĤãĤĭ ãģĦ\nãģĤãĤĭãģĦ ãģ¯\n×Ĳ×ķ×ĺ ×ķ×ĳ\n×Ĳ×ķ×ĺ×ķ×ĳ ×ķ×¡\nÐº ÑĨÐ¸Ð¾Ð½\nĠÐľ Ð¾Ð¶Ð½Ð¾\nãģı ãģł\nãģıãģł ãģķ\nĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸Ñı\nï» Ł\nĠìŀĳ ìĹħ\nĠ×Ļ ×ķ×¡×£\nØ¥ Ø¯Ø§Ø±Ø©\nĠØ§ÙĦØŃ Ø§Ø¬\n×ł×¡ ×Ļ×¢×Ķ\nÐ¸Ð· Ð°ÑĨÐ¸Ñı\n×Ĳ×ľ ×ĳ\n×Ĳ×ľ×ĳ ×ķ×Ŀ\nÐ¿ ÐµÐ´\nĠ×§×ĺ ×ł×Ķ\nĠÙĨÙģØ³ ÙĩØ§\nĠMinist Ã©rio\nĠÐ¿ ÐµÐ½\nĠÐ¿ÐµÐ½ ÑģÐ¸\nãĥĲ ãĥ©ãĥ³ãĤ¹\nĠ×Ķ×ª ×ķ×¨×Ķ\nĠt áº¡m\nĠìĹŃ ìĭľ\nï½ ¡\nĠth á»±\nĠ Ä±sÄ±\nì» ¨\nãģĹãģ£ãģĭãĤĬ ãģ¨\nĠx Æ°a\nĠc áº·p\n×Ĺ ×Ļ×ĳ×ķ×¨\nà¸§à¸±à¸Ĵà¸Ļ à¸ĺà¸£à¸£à¸¡\nst Ã¤r\nstÃ¤r ke\nĠÑģÐ°Ð¼ ÑĭÐ¹\np isa\npisa Äĩ\nĠoluÅŁ an\nĠØ§ÙĦØ¥ ÙħØ§Ùħ\nĠcÄĥ ng\nĠgÃ¼ nl\nĠgÃ¼nl Ã¼k\nĠ×ł×© ×Ĳ×¨\nĠkhi á»ĥn\nç¶ļ ãģĳãĤĭ\nstit uciÃ³n\nĠcapac itÃ©\nĠj aki\nĠjaki ÅĽ\nÐ²ÑĪ Ð¸Ñģ\nÐ²ÑĪÐ¸Ñģ ÑĮ\n×¤×¢×ķ×ľ ×ķ×ª\nĠØŃ ÙĬØ§Øª\nĠØŃÙĬØ§Øª Ùĩ\nĠÐ½Ð¸Ðº Ð¾Ð³Ð´Ð°\nÐĽ Ð¬\nĠ×Ķ×¢ ×ķ×ĳ\nĠ×Ķ×¢×ķ×ĳ ×ĵ×Ķ\nĠch Ãło\nà¸«à¸¥à¸²à¸¢ à¹Ĩ\nĠÑı Ð½\nĠÑıÐ½ Ð²Ð°ÑĢ\nĠÑıÐ½Ð²Ð°ÑĢ Ñı\nà¸Īà¸³à¹Ģà¸Ľà¹ĩà¸Ļ à¸ķà¹īà¸Ńà¸ĩ\nĠhÃ¶ her\nãģķãĤĮãģ¦ ãģĦãģŁ\nà¸ªà¸ĩ à¸ªà¸±\nà¸ªà¸ĩà¸ªà¸± à¸¢\nĠØ§ÙĦ Ø§Ø³\nĠØ§ÙĦØ§Ø³ ÙĦØ§Ùħ\nĠØ§ÙĦØ´ ÙħØ³\nà¸ªà¸ĸà¸²à¸Ļ à¸µ\nãĤ¯ãĥ© ãĤ¹\nà¸ŀà¸£ à¸£\nà¸ŀà¸£à¸£ à¸Ħ\np Ãµ\npÃµ e\nĠpor Ã©m\nà¸Ľà¸£à¸° à¸ªà¸ĩ\nà¸Ľà¸£à¸°à¸ªà¸ĩ à¸Ħà¹Į\npowied zie\npowiedzie Äĩ\nĠÐ¼Ð¾Ð³ Ñĥ\nĠÐ¶ ÐµÐ»\nĠÐ¶ÐµÐ» ÐµÐ·\nĠØ§ÙĦØ« ÙĤ\nĠØ§ÙĦØ«ÙĤ Ø§ÙģÙĬ\nĠÐ¿ÑĢÐ°Ð² Ð¸Ð»Ð¾\nĠgdy Å¼\n×¤×© ×ķ×ĺ\nÑĢÐ°Ð±Ð¾ÑĤ ÐºÐ°\nĠÙĥ Ø±Ø©\nØ´ Ø¯Ø¯\nÙħØ§Ø± Ùĥ\nÙħ ÙĥØ©\nĠÐ¿Ð¾Ð´ Ð¿Ð¸Ñģ\n×ĺ×ķ ×ķ×Ĺ\nĠÅĽ c\nĠÅĽc ian\nĠØ± Ø¬Ø§ÙĦ\nĠ×ª×ľ ×ķ×Ļ\nÐ¸ ÑĪ\nÐ¸ÑĪ ÑĮ\nĠmÃ© dec\nĠmÃ©dec in\nëįĶ ëĿ¼ëıĦ\nĠÑĤÐµÐ± Ñı\nĠ×ľ×Ķ ×ķ×¡×Ļ×£\nãģĬ è©±\nĠà¹ģà¸ķà¹Ī à¸ģà¹ĩ\nØ¯ Ø§Ùģ\nØ¯Ø§Ùģ Ø¹\nĠC Ã¹ng\nãĥ»ãĥ» ãĥ»ãĥ»\nê¶ ģ\nĠdeber ÃŃa\nà¸«à¸Ļà¹Īà¸§à¸¢ à¸ĩà¸²à¸Ļ\nĠva ÌĢ\nĠ×¢×¦ ×ŀ\nĠ×¢×¦×ŀ ×Ŀ\nà¹Ģà¸Ĭà¸·à¹Īà¸Ń à¸§à¹Īà¸²\n×©×§ ×¢\nĠ×Ķ ×Ľ×ķ×ľ\nĠ×Ķ×Ľ×ķ×ľ ×ľ\nÐ½Ð¸ Ð±ÑĥÐ´\nÐ½Ð¸Ð±ÑĥÐ´ ÑĮ\nĠëĦĪ íĿ¬\nĠÐ¾Ð± ÑĢÐ°Ñī\nĠÐ¾Ð±ÑĢÐ°Ñī Ð°\nĠ×¢×ĳ×ķ×ĵ ×ª\nĠØ§ÙĦÙħÙĨØª Ø®Ø¨\nÄ±y ord\nÄ±yord u\nÙĪ Ø°\n×Ĺ×© ×Ļ×ĳ×ķ×ª\nĠ×Ķ×¢ ×Ļ×§\nĠ×Ķ×¢×Ļ×§ ×¨×Ļ\nì¢ Į\nà¸¢à¸¸ à¹Ĥà¸£\nà¸¢à¸¸à¹Ĥà¸£ à¸Ľ\nĠÐ° Ð¿ÑĢ\nĠÐ°Ð¿ÑĢ ÐµÐ»Ñı\nsz ed\nszed ÅĤ\nÐ´ Ð¾Ð½\nà¹Ģà¸ķà¸´ à¸ļ\nà¹Ģà¸ķà¸´à¸ļ à¹Ĥà¸ķ\nÐºÐ¾Ð» Ð¾\nĠkaÅ¼de j\nå¸ °\nå¸° ãĤĬ\nĠÐ¼Ð¸Ð» Ð»Ð¸\nĠÐ¼Ð¸Ð»Ð»Ð¸ Ð¾Ð½\nç¾İåĳ³ ãģĹãģĦ\nØª ÙĤØ§Ø±\nØªÙĤØ§Ø± ÙĬØ±\nĠìĿ´ ë£¨\nĠìĿ´ë£¨ ìĸ´\nĠsprzeda Å¼\n×Ķ ×ķ×¦×Ĳ×ķ×ª\nãĤ¢ãĤ¯ ãĤ»\nãĤ¢ãĤ¯ãĤ» ãĤ¹\n×¨ ×ķ×¥\nĠÐ³Ð¾ÑģÑĥÐ´Ð°ÑĢÑģÑĤÐ² ÐµÐ½Ð½\nØ£ ØŃÙĥ\nØ£ØŃÙĥ Ø§Ùħ\nĠoluÅŁ u\nĠA Ã§\nĠAÃ§ Ä±k\nãĤ¸ ãĥ¼\nç´ł æĻ´\nç´łæĻ´ ãĤīãģĹãģĦ\nĠ×ĳ×©×ĳ ×ķ×¢\nØ¨ Ø°\nØ¨Ø° ÙĦ\nà¸ªà¸² à¹Ģà¸«à¸ķà¸¸\nĠpoz osta\nĠpozosta ÅĤ\nØŃØ± Ùħ\nĠimport Ã¢ncia\nleÅŁtir me\nĠÐ´ ÑĢÐµÐ²\nĠmÃ³ vil\nĠA ynÄ±\nĠÐ½Ð° Ð»Ð¾Ð³\nĠÐ½Ð°Ð»Ð¾Ð³ Ð¾Ð²\nĠ×Ĺ ×Ļ×¤×Ķ\nĠÑĦÐ¾ÑĢÐ¼ Ñĥ\nà¸Ĺà¸Ķ à¸ªà¸Ńà¸ļ\nĠksiÄħÅ¼ ki\nĠma ÅĤe\nÙħØ³ Ø£ÙĦ\nÙħØ³Ø£ÙĦ Ø©\nï¼¾ ï¼¾\nÃ§ Ã£este\nÃ©v iter\nĠÐºÐ¾Ð½ ÑģÑĤÑĢÑĥÐº\nĠÐºÐ¾Ð½ÑģÑĤÑĢÑĥÐº ÑĨÐ¸\nï¾ ŀ\nĠ×ª×ķ×Ľ ×ł\nãĤ¹ãĥĪ ãĥ¬ãĤ¹\nĠØ§ÙĦØ§ÙĤØªØµØ§Ø¯ ÙĬ\n×ŀ×ĵ ×Ļ\nĠw ÅĤad\nĠwÅĤad z\nØ® ÙĪÙģ\nĠÐ¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð» Ð¾Ð²\nãģ¨ãģ£ãģ¦ ãĤĤ\nĠznaj du\nĠznajdu jÄħ\nÙģ Ø¦Ø©\nãģ©ãģ® ãĤĪãģĨãģª\næĬĳ ãģĪ\n×ł ×Ĺ×ľ\nĠdÃ¼ ny\nĠdÃ¼ny an\nĠdÃ¼nyan Ä±n\nÐ³ÑĢ Ð°Ð½Ð¸\nÐ³ÑĢÐ°Ð½Ð¸ Ñĩ\nĠ×Ķ×©×ľ ×Ļ×©×Ļ\nĠ×Ķ×Ĳ ×©\nåıĬ ãģ³\nìĭŃ ìĭľ\nìĭŃìĭľ ìĺ¤\nĠÐ´Ð¾Ð» Ð»\nĠÐ´Ð¾Ð»Ð» Ð°ÑĢ\nĠÐ¿Ð¾Ð² ÑĤÐ¾ÑĢ\nĠ×Ĺ ×Ļ×ł×Ŀ\n×ª ×¤×ª×Ĺ\nÑĥÐ² ÐµÐ»Ð¸\nÑĥÐ²ÐµÐ»Ð¸ ÑĩÐµÐ½\nãĤ« ãĥª\nraw id\nrawid ÅĤow\n×ķ ×ķ×ľ\nãĥŁ ãĥ¥\nì½ ĺ\nĠBy ÅĤ\nÐľ ÐĲ\nØ¹ ÙĲ\nĠÑģÐ¾Ð²ÐµÑĢ ÑĪ\nĠÑģÐ¾Ð²ÐµÑĢÑĪ ÐµÐ½Ð½Ð¾\nĠÐ¼ Ð¾Ð¹\nĠ×ķ×ľ×Ĳ ×Ĺ×¨\næħ £\næħ£ ãĤĮ\nØŃ Ø§ÙģØ¸\nĠë¬´ ë£Į\nà¸Ħà¸ĵà¸° à¸ģà¸£à¸£à¸¡\nà¸Ħà¸ĵà¸°à¸ģà¸£à¸£à¸¡ à¸ģà¸²à¸£\nĠìĸ´ ëĶĶ\nĠdif eren\nĠdiferen Ã§a\nĠØ§ÙĦØ£ Ø³Ø§Ø³\nĠØ§ÙĦØ£Ø³Ø§Ø³ ÙĬØ©\nĠ×ľ×Ĳ×Ĺ×¨ ×ķ×ł×Ķ\nê· ł\nĠ×Ķ×©×ł×Ļ ×Ļ×Ķ\nìľĦìĽĲ ìŀ¥\nà¸¥à¸¸ à¸ģ\nÃ§ iler\nĠ×Ķ×Ĳ ×ľ×ķ\nèģŀ ãģı\nĠ×ķ×Ĳ ×¤×Ļ×ľ×ķ\nĠÑĢÐµ Ð°Ð»Ð¸Ð·\nĠÑĢÐµÐ°Ð»Ð¸Ð· Ð°ÑĨÐ¸\nà¸£à¸°à¸¢à¸° à¹Ģà¸§à¸¥à¸²\nĠØ¬Ø¯Ø§ Ùĭ\nØªØ¨ Ø§Ø¹\nĠveh ÃŃculo\nĠÐ´Ð¾Ð» Ð³\nà¸Ľà¸£à¸´ à¸¡à¸²à¸ĵ\nì¦ Ĳ\nĠ×ľ ×ŀ×§×ķ×Ŀ\nĠìĤ¬ ì§Ħ\nà¸Ĭ à¹īà¸²\nĠ×ŀ×¢ ×ķ×ľ×Ķ\nĠgÃ¶ rm\nĠgÃ¶rm ek\nĠÙĪÙĩ Ø°Ùĩ\nÐ¿ÐµÑĢ Ð²\nÐ¿ÐµÑĢÐ² ÑĭÑħ\nê·¸ ëŀĺ\nĠØ§ÙĦØ¨Ø± ÙĬØ·\nĠØ§ÙĦØ¨Ø±ÙĬØ· Ø§ÙĨÙĬ\nĠÐ¸Ñİ Ð½Ñı\nĠÐĵ Ð¾ÑĢ\nĠ×ľ ×©×ľ×Ŀ\nÐĲ ÐĿ\nĠÐ½Ð°Ð· Ð½Ð°ÑĩÐµÐ½\nÐ¾ Ð¾ÑĢ\nÐ¾Ð¾ÑĢ ÑĥÐ¶\nĠÃ¶z elli\nĠÃ¶zelli ÄŁi\nĠÐ½Ð¸ Ð¶Ðµ\nç¶ļ ãģĳãģ¦\nĠÐ° ÑĢÐµÐ½Ð´\nĠkat Ä±lÄ±\nĠkatÄ±lÄ± m\nĠØ¥ Ø·ÙĦØ§ÙĤ\nĠÙĪØ¥ Ø°Ø§\nĠÐ¾Ðº ÑĤÑı\nĠÐ¾ÐºÑĤÑı Ð±ÑĢÑı\nà¹Ĥà¸ķ à¹\nà¹Ĥà¸ķà¹ Ĭ\nà¹Ĥà¸ķà¹Ĭ à¸°\nĠolduk larÄ±\nÙħ ÙĪÙĤØ¹\nëĤ ©\nãģ¨æĢĿ ãģ£ãģ¦ãģĦãĤĭ\nĠ×© ×Ļ×Ľ×ķ×ľ\nà¸§à¸² à¸Ķ\nØ³ ÙĬÙĦ\nà¸Ĥ à¸§à¸±\nà¸Ĥà¸§à¸± à¸į\nØªØŃ ÙĥÙħ\nì ĤŃ\nĠconna Ã®t\n×ł ×¤×ª×Ĺ\nĠch áº·\nĠcháº· n\nĠÙħ ØŃÙħ\nĠÙħØŃÙħ ÙĪØ¯\nãģ ´\nĠÐ¿ÑĢÐ¾Ð´ÑĥÐº ÑĨÐ¸Ð¸\nÐ·Ð´ ÑĢÐ°Ð²\nãģĶ è¦\nãģĶè¦ §\n×Ĳ×ĳ ×Ĳ\nĠvÃ© ritable\nĠØ· ÙģÙĦ\nãĥĪãĥ© ãĥĸãĥ«\nê³ ¡\nĠ×ª ×ŀ×ķ×ł×Ķ\nĠki Ãªn\nĠÙĤ Ø§Ø¯Ø±\nØ¥ÙĤ ÙĦÙĬÙħ\nĠÐ¿ÑĢÐµÐ´ Ð¿ÑĢÐ¸\nĠÐ¿ÑĢÐµÐ´Ð¿ÑĢÐ¸ ÑıÑĤÐ¸Ñı\nĠb Äĥng\nĠay Ä±nda\nĠg áº¥p\nÐµÑħ Ð°Ð»\nĠgi Ãłnh\nĠÐ´ Ð°Ð²\nĠÐ´Ð°Ð² Ð½Ð¾\nìĺĢ ëĭ¤\nà¸Ļà¸±à¸ģ à¹Ģà¸ķ\nà¸Ļà¸±à¸ģà¹Ģà¸ķ à¸°\nÙħØ³Øª Ø´Ø§Ø±\nØ³Øª Ø±Ø§ØªÙĬØ¬\nØ³ØªØ±Ø§ØªÙĬØ¬ ÙĬ\nØ±Ùħ Ø²\nĠt Ä©nh\në¡ Ń\nĠÑĩ ÐµÑĤ\nĠÑĩÐµÑĤ Ñĭ\nĠÑĩÐµÑĤÑĭ ÑĢÐµ\nĠEnt Ã£o\nĠØµ Øº\nĠØµØº ÙĬØ±Ø©\n×ĳ×Ļ×ĺ ×ķ×ľ\nØ®Ø· ÙĪØ·\nĠÑĢÐ°Ð·Ð²Ð¸ÑĤ Ð¸Ðµ\nĠamacÄ± yla\nà¸Ĺà¸µ à¸§à¸µ\nĠÐ¾ ÑģÑĤ\nĠÐ¾ÑģÑĤ Ð°Ð»ÑĮÐ½\n×©×ķ×ľ×Ĺ ×Ł\nĠ×Ľ ×ł×Ļ×¡\nĠ×Ľ×ł×Ļ×¡ ×Ķ\nĠd áºŃy\nĠyaÅŁ ayan\nĠ×ŀ×Ķ ×ķ×ķ×Ķ\nĠÑĥ ÑģÐ¸\nĠÑĥÑģÐ¸ Ð»Ð¸\n×ŀ ×¤×Ļ\nĠÐ¿ÑĢÐ¾Ð²ÐµÐ´ ÐµÐ½Ð¸Ñı\nĠØ± Ø¨\nĠØ±Ø¨ ÙħØ§\nĠØ§ÙĦØ£ ÙĪØ³Ø·\nĠìľł ì§Ģ\nĠprac ownik\nĠpracownik Ã³w\n×ŀ×¡ ×ķ×¨×ª\nÙĤØ§Ø± Ø¨\nà¸Ħà¸§à¸²à¸¡ à¸£à¸¹à¹īà¸ªà¸¶à¸ģ\nà¹ģà¸«à¸¥ à¸°\nĠØ§ÙĦÙĨ ÙĤØ¯\nĠ×Ĳ×ľ ×¤×Ļ\nÙħØ³ Ø¦\nÙħØ³Ø¦ ÙĪÙĦ\nÐµÐ² ÑĭÑħ\nÐºÐ»ÑİÑĩ ÐµÐ½Ð¸Ñı\n×ĳ ×Ļ×ł\n×ĳ×Ļ×ł ×Ļ×Ķ×Ŀ\n×© ×ķ×Ĳ×Ķ\nĠÅŁ ark\nĠÅŁark Ä±\nĠsÃ¼ rec\nĠsÃ¼rec in\nà¹Ģà¸Ħà¸£ à¸Ķ\nà¹Ģà¸Ħà¸£à¸Ķ à¸´à¸ķ\nãĥĲ ãĥ¬\nĠØ´ Ø£ÙĨ\nà¹Ģà¸Ńà¸² à¹Ħà¸§à¹ī\nniÄĻ cie\n×¨×¦ ×Ĺ\nĠaÅŁ ama\n×ł ×¤×Ĵ×¢\nĠth á»Ŀ\nĠkhu áº©n\ndiÄŁ inde\nÑıÑī Ð¸Ñħ\nãĥĺ ãĥ«\nĠÃ¼ber h\nĠÃ¼berh aupt\nĠÑĤÑĢÐµÐ± Ð¾Ð²Ð°\nĠdÅĤ ugi\n×ĺ ×Ļ×Ł\nà¸Ĥà¸Ļà¸²à¸Ķ à¹ĥà¸«à¸įà¹Ī\nĠØ§ÙĦØ£ Ùĩ\nĠØ§ÙĦØ£Ùĩ ÙĦÙĬ\nĠMÃ¼ d\nĠMÃ¼d Ã¼rÃ¼\nĠ×Ļ×Ķ ×ķ×ĵ×Ķ\nÑĭÐ² Ð°ÐµÑĤÑģÑı\nØ³ Ø§Ø·\n×Ķ×ª ×ł×Ķ×Ĵ\n×Ķ×ª×ł×Ķ×Ĵ ×ķ×ª\nà¸ģà¸²à¸£ à¸ľà¸¥à¸´à¸ķ\níĴ Ģ\nà¸ªà¸ĸà¸²à¸Ļ à¸ģà¸²à¸£à¸ĵà¹Į\nĠÐ¾ ÑĦ\nĠÐ¾ÑĦ Ð¸Ñģ\nĠÙĦ Ø¹Ø¨Ø©\nĠstron ÄĻ\nĠ×¨×Ĳ ×ķ×Ļ\n×Ĺ ×ĳ×ľ\nĠÑĢÑĭ Ð½\nĠÑĢÑĭÐ½ ÐºÐµ\nĠ×ľ×ŀ×¢ ×Ł\nØ§Ø³ ÙĦ\nà¸« à¸±à¸Ļ\nĠ×Ĳ ×Ĺ×Ļ\nĠÐ¿ÑĢÐ¾Ð´ Ð¾Ð»\nê°Ģ ìŀħ\nĠ×ĳ×¨ ×Ĺ\nĠ×ĳ×¨×Ĺ ×ĳ×Ļ\nÐ´Ð¶ ÐµÑĢ\nĠ×ľ ×Ĺ×ľ\nĠ×ľ×Ĺ×ľ ×ķ×ĺ\nĠ×ľ×Ĺ×ľ×ķ×ĺ ×Ļ×Ł\nà¸¨à¸²à¸ª à¸Ļà¸²\nãĤ¢ãĤ¤ ãĥĨ\nãĤ¢ãĤ¤ãĥĨ ãĥł\nĠ×¤×¨ ×ķ×¤\nØ¬Ø² Ø§Ø¡\nà¸¥ à¸Ńà¸¢\nĠc iaÅĤa\nĠgi áº¿t\nĠÐ·Ð½Ð°Ñĩ Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\nĠolmad Ä±ÄŁ\nĠolmadÄ±ÄŁ Ä±nÄ±\nÐ½ Ð´\nÐ½Ð´ ÐµÐºÑģ\nØªØ£ ÙĥØ¯\nĠìĸ ¸\nĠìĸ¸ ìłľ\nay dÄ±n\nãĥī ãĥ¬ãĤ¹\nĠs áº¯t\nĠíĺ¸ íħĶ\nĠë¶ ģ\nĠë¶ģ íķľ\nãĥĳ ãĤ¤\nĠ×ŀ×©×Ĺ×§ ×Ļ\nà¸Ħà¸Ļ à¸Ńà¸·à¹Īà¸Ļ\nĠÐ¸Ð· Ð³Ð¾ÑĤÐ¾Ð²\nĠÐ¸Ð·Ð³Ð¾ÑĤÐ¾Ð² Ð»ÐµÐ½\nà¹Ģà¸ģà¸µà¸¢ à¸£\nà¹Ģà¸ģà¸µà¸¢à¸£ à¸ķà¸´\n×ª×§ ×©×¨\nĠÑĢÐ°Ñģ ÑĩÐµÑĤ\nà¸ª à¹Ģà¸ķ\nĠl Ã¤nger\nĠiÅŁ let\nĠiÅŁlet me\nĠØ¹ ÙĦÙĬÙĨ\nĠØ¹ÙĦÙĬÙĨ Ø§\nÃ© lection\nĠØ§ÙĦØº Ø±Ø¨ÙĬØ©\níĭ Ģ\nãĤĤãĤī ãģĪ\nĠÐºÐ½Ð¸ Ð³Ð¸\nØ£ Ø³Ùħ\nØ£Ø³Ùħ Ø§Ø¡\nĠth á»ı\nĠthá»ı a\nà¸«à¸Ļ à¸¹\nĠ×ł×¢ ×©×Ķ\nà¸łà¸²à¸¢ à¹ĥà¸ķà¹ī\nà¸ŀà¸· à¸Ĭ\nØ±ÙĬ Ø·\nÙģ ÙĪØ¶\nãģĤãĤĬãģĮãģ¨ãģĨãģĶãģĸ ãģĦãģ¾ãģĹãģŁ\n×© ×ĵ×Ķ\nĠng á»±c\nĠÑģÐµÑĢ ÑĮ\nĠÑģÐµÑĢÑĮ ÐµÐ·Ð½\nT Ã´i\nĠfiyat larÄ±\nĠÐ²Ñģ Ñİ\nĠC Ã³digo\nĠ×Ķ×© ×Ĳ\nĠ×Ķ×©×Ĳ ×ľ×Ķ\nĠP Ãºblica\nØ¥ Ø®\nØ¥Ø® ÙĪØ§ÙĨ\nĠÐ·Ð°ÑıÐ² Ð¸Ð»\nãĥ¦ ãĥ¼\n×¨×Ĳ ×Ļ×ª\nvol uciÃ³n\nĠsz ko\nĠszko ÅĤy\nØ¬Ø±ÙĬ Ø¯Ø©\nĠpens Ã©\nìī ¬\nĠBÃ¼yÃ¼k ÅŁehir\nĠØ£Ùħ Ø±ÙĬ\nĠØ£ÙħØ±ÙĬ ÙĥÙĬ\nà¸Ļà¸±à¸ģ à¸¨à¸¶à¸ģà¸©à¸²\nĠtod av\nĠtodav ÃŃa\nĠÐ¡ Ð°Ð½\nĠÐ¡Ð°Ð½ ÐºÑĤ\níķĺ ìŀĲ\nØŃÙĪ Ø§ÙĦ\n×Ľ ×ķ×©×¨\nà¹Ģà¸¥à¸¢ à¸Ħà¸£à¸±à¸ļ\nĠal gu\nĠalgu Ã©m\nÙģ Ø²\nĠÃ§ek il\nĠ×ĵ ×¨×Ľ×Ļ×Ŀ\nãĥĲ ãĥ©\nà¸ģà¹ĩ à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\nà¸ªà¹Īà¸§à¸Ļ à¸¥à¸Ķ\níı °\nĠP Ãºb\nĠPÃºb lico\nà¹ģà¸Ļà¸§ à¸Ĺà¸²à¸ĩ\n×Ĳ×ª ×Ĵ×¨\nØ´ Ø§Ø´\nØ´Ø§Ø´ Ø©\nci ÅĽni\nĠÃľ rÃ¼n\nÙĦÙĪ ØŃ\nĠØ§ÙĦ Ø¨ÙĨ\nĠØ§ÙĦØ¨ÙĨ Ùĥ\nì¡° ì¹ĺ\nĠorganiz aciÃ³n\nãģĤãĤĬãģĮãģ¨ãģĨãģĶãģĸ ãģĦãģ¾ãģĻ\ns Ã¤tze\nĠÑģÐµÐ¼ ÐµÐ¹\nÙĤ ØµØ¯\nÑģÑĤÐ² ÐµÐ½Ð½ÑĭÐµ\nĠprÃ©c Ã©d\nĠprÃ©cÃ©d ent\nà¸ģà¸£à¸¸à¸ĩà¹Ģà¸Ĺà¸ŀ à¸¯\nãģ¨è¨Ģ ãģĦ\n×ĳ×ł×Ļ ×Ļ×Ł\nĠØŃ ÙĪ\nĠØŃÙĪ Ø§ÙĦÙĬ\n×¡×§ ×¡\nĠsaÄŁlam ak\nĠ×ľ ×¦×Ļ×Ļ×Ł\n×§×ĵ ×©\nĠ×Ķ×ŀ ×¢×¨×Ľ×ª\nĠ×ľ×Ķ ×¢×ĳ×Ļ×¨\nĠg Ã¼nd\nĠgÃ¼nd em\nĠÐ½Ð°ÑĪ ÐµÐ³Ð¾\nà¹ĥà¸Ļ à¸ŀà¸·à¹īà¸Ļà¸Ĺà¸µà¹Ī\nà¹Ģà¸Ħà¸£ à¸·à¸Ń\nà¹Ģà¸Ħà¸£à¸·à¸Ń à¸Ĥ\nà¹Ģà¸Ħà¸£à¸·à¸Ńà¸Ĥ à¹Īà¸²à¸¢\nØ¸ Ø§ÙĩØ±Ø©\nÙħÙĨ Ø¸Ùħ\nÙħÙĨØ¸Ùħ Ø§Øª\nÙħØª Ø§Ø²\nè¿½ ãģĦ\ndÄ± kt\ndÄ±kt an\nĠëįĶ ìļ±\nĠÐĿ Ð°Ð¿ÑĢÐ¸Ð¼ÐµÑĢ\ntw Ã³r\n×ŀ×ķ×¢ ×¦×Ķ\nÙĥ ÙĪÙĥ\nÐ ©\n×ŀ×ĺ ×¤×ľ\nÃ³ lica\nè¨ª ãĤĮ\nĠëĮĢ ë¶Ģ\nĠëĮĢë¶Ģ ë¶Ħ\nãĤ¯ãĥª ãĥĥãĤ¯\nãĤĴ éģ¸\nãĤĴéģ¸ ãģ¶\nĠpow sta\nĠpowsta ÅĤ\nĠraz Ã³n\n×ĳ ×ķ×Ĺ×¨\nĠÑģÐ¾Ð¾Ð±Ñī Ð¸Ð»\nĠ×§ ×ĳ×ķ×¢\nr Ãªt\nà¸Ķà¸µ à¸Ĥà¸¶à¹īà¸Ļ\n×ŀ×¡ ×¢×ĵ\n×ŀ×¡×¢×ĵ ×ķ×ª\nĠÃĸ sterreich\nĠ×ł ×Ĺ×©×ĳ\nÙħØ¨Ø§Ø¯ Ø±Ø©\nì´ ī\n×Ĵ ×ł×ĺ×Ļ\nä¿¡ ãģĺ\ndu ÄŁ\nduÄŁ unu\nĠph Ãº\nĠØ§ÙĦØ£ Ø®ÙĬØ±\nĠØª Ø¹ØªØ¨Ø±\nlandÄ±r Ä±l\nãģ¨ãģ¯ ãģĦ\nãģ¨ãģ¯ãģĦ ãģĪ\nĠØ§ÙĦ Ø·ÙĦ\nĠØ§ÙĦØ·ÙĦ Ø§Ø¨\nĠN Âº\néģ¿ ãģĳ\nØ§ÙĦ ÙħØ¹\nØ§ÙĦÙħØ¹ Ø±ÙĪÙģ\nà¸ª à¸łà¸²\néĽ¢ ãĤĮ\nĠÐ¿Ð¾Ð¼Ð¾Ñī ÑĮ\nĠÐ·Ð½Ð° ÐµÑĤ\nãĥĹãĥ¬ ãĤ¼\nãĥĹãĥ¬ãĤ¼ ãĥ³ãĥĪ\nĠsup Ã©rieur\nĠ×©×ľ ×Ļ×©×Ļ\nĠØ§ÙĦÙĨ ÙĪØ¹\nãĤĵãģ§ãģĻ ãģŃ\nà¸Ńà¸ļ à¸£à¸¡\nĠgi á»įng\nĠwzgl ÄĻd\nĠØ§ÙĦÙģ ÙĤØ±\nÃ¨ rent\nĠ×ŀ×Ĳ ×Ĺ\nĠ×ŀ×Ĳ×Ĺ ×ķ×¨×Ļ\n×Ĵ ×Ĵ\n×Ļ ×Ļ×ĳ\nÙħÙĦ Ø§Ø¨\nÙħÙĦØ§Ø¨ Ø³\nĠhÃ¼k Ã¼\nĠhÃ¼kÃ¼ met\nĠ×ŀ×Ĵ ×Ļ×ĳ\nĠÐŀ Ñĩ\nĠÐŀÑĩ ÐµÐ½ÑĮ\næĹ© ãģĦ\nĠconstr ucciÃ³n\nĠth Æ°á»£ng\nï¼ ĭ\nĠcor aÃ§Ã£o\nà¹Ģà¸«à¸¥ à¹ĩà¸ģ\nĠBaÅŁ b\nĠBaÅŁb akan\néĢ£ ãĤĮ\nãģĻãĤĭ ãģĵãģ¨ãģĮãģ§ãģįãģ¾ãģĻ\nĠÙĤ Ø§ÙħØª\nĠØ§ ÙĥØ«Ø±\nÙģØ§Ø¹ ÙĦ\nĠÑĦ Ð¾ÑĢ\nĠÑĦÐ¾ÑĢ ÑĥÐ¼\nØº Ø°ÙĬ\nĠiÅŁ le\nĠiÅŁle ml\nĠiÅŁleml eri\nĠìĤ¬ëŀĮ ìĿĢ\nĠìŀĳ ìĦ±\nĠë§Ī ëł¨\nÙħ Ø¬ÙĦØ³\nà¸«à¸¡ à¸¹\nÐ´ Ð²\nÐ´Ð² Ð¸Ð³\nÐ´Ð²Ð¸Ð³ Ð°\nà¹Ģà¸ªà¸µà¸¢ à¸Ĭà¸µà¸§à¸´à¸ķ\n×Ķ×ª ×¤×ª×Ĺ\n×Ķ×ª×¤×ª×Ĺ ×ķ×ª\nĠÐ¼ÐµÑĤ ÑĢÐ¾\nĠÑģ ÐµÐ½ÑĤ\nĠÑģÐµÐ½ÑĤ Ñı\nĠÑģÐµÐ½ÑĤÑı Ð±ÑĢÑı\nê³ §\nĠ×ľ ×¤×¢\nĠ×ľ×¤×¢ ×ŀ×Ļ×Ŀ\nà¹Ģà¸ļ à¸µà¸¢\nè©³ ãģĹãģı\nçķ° ãģªãĤĭ\nĠÄ°l Ã§e\nĠAt at\nĠAtat Ã¼r\nĠAtatÃ¼r k\nà¸£à¸¸ à¹Īà¸ĩ\nĠkald Ä±\nĠì£¼ ìŀ¥\nĠprÃ©s ence\nĠÐ½ Ð°Ð±\nĠÐ½Ð°Ð± Ð»Ñİ\nĠÐ½Ð°Ð±Ð»Ñİ Ð´Ð°\nĠÑģÐ°Ð¼ Ð¾Ð³Ð¾\n×Ĵ ×ķ×©\n×ŀ×ĺ ×ķ×¤\n×ŀ×ĺ×ķ×¤ ×ľ\nĠÐ²ÑĭÐ± Ð¸ÑĢÐ°\nĠìŀĲ ë¦¬\nåĪĨ ãģĭãĤīãģªãģĦ\nĠÐ· ÑĥÐ±\nĠ×©×Ľ ×ĳ×¨\nĠØ¯ Ø§Ø¦\nĠØ¯Ø§Ø¦ ÙħØ§\nĠÐ¿Ð°ÑĢ ÑĤÐ¸\nï¼ ²\nĠØ§ÙĬ Ø¶Ø§\nĠÑħ Ð¾Ð·\nĠÑħÐ¾Ð· Ñı\nĠÑħÐ¾Ð·Ñı Ð¹\nĠÑħÐ¾Ð·ÑıÐ¹ ÑģÑĤÐ²\nĠØ§ÙĦØ£ Ø¬\nĠØ§ÙĦØ£Ø¬ ÙĨØ¨\nĠØ§ÙĦØ£Ø¬ÙĨØ¨ ÙĬØ©\nĠÐĹ Ð½Ð°\nĠAp Ã³s\nĠÑį Ð½ÐµÑĢ\nĠÑįÐ½ÐµÑĢ Ð³Ð¸\nĠy ans\nĠyans Ä±\nĠJust i\nĠJusti Ã§a\nĠprÃ© vu\nà¸¡ à¸§à¸¥\nìŀ¥ ëĭĺ\nà¸ģà¸£à¸° à¸ļ\nà¸ģà¸£à¸°à¸ļ à¸§à¸Ļ\nà¸ģà¸£à¸°à¸ļà¸§à¸Ļ à¸ģà¸²à¸£\n×ŀ ×ŀ\n×ŀ×ŀ ×ķ×¦×¢\nĠh áº¹\nĠháº¹ n\nÐ·Ð´ Ð°Ð½Ð¸Ðµ\nĠak ÅŁ\nĠakÅŁ am\n×ĺ ×ķ×¤\nĠgere kt\nĠgerekt i\nĠgerekti ÄŁini\nĠnar z\nĠnarz ÄĻdzi\nÃ© po\nÃ©po que\nĠTh áº§n\nĠwys oko\nĠwysoko ÅĽci\nà¸ľà¸¹à¹ī à¸Ľ\nà¸ľà¸¹à¹īà¸Ľ à¹Īà¸§à¸¢\nĠÙĬ Ø¨Ø¯ÙĪ\nÑĤÐµÐ»ÑĮ Ð½Ð¾Ð³Ð¾\nĠÐ²Ð· Ð³Ð»ÑıÐ´\nĠjed nÄħ\nĠìĿĺ ê²¬\nĠ à¸Ĥà¸ĵà¸°à¸Ĺà¸µà¹Ī\n×¤ ×Ļ×ĵ\nìĥģ ëĭ´\nĠm á»¡\n×Ķ ×ŀ×ľ\n×Ķ×ŀ×ľ ×¦×ķ×ª\nĠÑģÐ¾ÑģÑĤ Ð¾\nĠÑģÐ¾ÑģÑĤÐ¾ Ð¸ÑĤ\nĠÐ°Ð² Ð¸\nĠÐ°Ð²Ð¸ Ð°\nĠL Ã¤nder\nØªØµ ÙĪÙĬØ±\n×ŀ×ĵ ×Ļ×Ķ\nìłĪ ì°¨\nãģ¨ ãĤĬ\nãģ¨ãĤĬ ãģĤ\nãģ¨ãĤĬãģĤ ãģĪ\nãģ¨ãĤĬãģĤãģĪ ãģļ\nĠÑĢ ÑıÐ´\nĠÑĢÑıÐ´ Ð¾Ð¼\nĠNh áº¥t\nĠØ§ÙĦÙĥ Ø§ÙħÙĦ\n×Ĺ×ľ ×ľ\nĠGi áº¥y\n×¦ ×ĺ×¨\n×¦×ĺ×¨ ×£\nĠ×ľ×ĳ ×ĺ×ľ\nĠÐ¸Ð¼ ÐµÑĤÑĮ\n×¡×ŀ ×ķ×ļ\nĠparticip aÃ§Ã£o\níķľëĭ¤ ë©´\nÙħÙĨØª Ø¯ÙĬ\nÙħÙĨØªØ¯ÙĬ Ø§Øª\nĠeÄŁ len\ng Ã¤nge\nØ±Ø¨ ØŃ\nãĤ® ãĥ£\nĠØ§ÙĦØ± ÙĤÙħ\nà¸ĭ à¹īà¸³\nĠH Ã³a\n×ŀ×¨ ×Ĺ×§\nØŃÙħ Ø§Ùħ\nØ¨ÙĪ Ùĥ\nĠArt ÃŃculo\nãĥĦ ãĤ¢ãĥ¼\n×Ķ×¤ ×Ľ×Ķ\n×Ĺ×ľ ×ķ×Ł\nĠÐ¿ÐµÑĢÐµ ÑħÐ¾Ð´\nlen miÅŁ\nØ²Ø± Ø§Ø¹Ø©\nĠseÃ± or\nãģ£ãģ¦ ãģįãģ¦\nØ¥ Ø´\nØ¥Ø´ Ø§Ø±Ø©\nĠpod ÃŃa\nĠÃľ lke\nÐ½ ÑģÐºÐ°Ñı\nĠadapt Ã©\nĠdÃ¼zen len\nĠdÃ¼zenlen en\nĠÑģÑĤ Ð°Ð»Ð°\nĠÙĬ ØŃØªØ§Ø¬\nĠn ier\nĠnier uch\nĠnieruch omo\nĠnieruchomo ÅĽci\nãģĵãģ¨ãģĮ ãģĤãĤĭ\nà¸¢à¸Ńà¸Ķ à¹Ģà¸¢à¸µà¹Īà¸¢à¸¡\nĠÙħ Ø¬\nĠÙħØ¬ Ø§ÙĨÙĬ\nĠÐ· Ð°Ð±\nĠÐ·Ð°Ð± Ð¾Ð»\nĠÐ·Ð°Ð±Ð¾Ð» ÐµÐ²\nĠÐ·Ð°Ð±Ð¾Ð»ÐµÐ² Ð°Ð½Ð¸Ñı\nĠÅĽ ro\nĠÅĽro dk\nĠÅĽrodk Ã³w\nĠ×Ķ ×ľ×Ĳ×ķ×ŀ×Ļ\nĠdok ÅĤad\nĠdokÅĤad nie\nãģŁãģı ãģªãģĦ\nãģ¯ãģļ ãģ§ãģĻ\nãģ¨æĢĿ ãģ£ãģ¦ãģĦãģŁ\nÃ© cran\nìĹħ ì²´\ntrzym aÅĤ\nÑģÑĤÐ² ÐµÐ½Ð½ÑĭÐ¹\nĠNot ÃŃc\nĠNotÃŃc ias\nÙħ Ø±ÙĬ\nÙħØ±ÙĬ Ø¶\næ°Ĺ è»\næ°Ĺè» ½\næ°Ĺè»½ ãģ«\nëĵ £\nĠ×ĵ ×ķ×Ĳ×¨\nĠ×ľ ×ŀ×ł\nĠ×ľ×ŀ×ł ×ķ×¢\nĠÃ§alÄ±ÅŁ Ä±yor\nĠÅŁ idd\nĠÅŁidd et\nĠM áº·t\nĠate ÅŁ\nĠÐ¿Ð¾Ð»ÑĥÑĩ ÐµÐ½Ð¸Ñı\nà¹Ģà¸Ħà¸£à¸·à¹Īà¸Ńà¸ĩ à¸¡à¸·à¸Ń\nĠgrÃ¶ ÃŁer\nØ¯ Ø§Ø¦\nØ¯Ø§Ø¦ Ø±Ø©\nĠbul un\nĠbulun maktadÄ±r\nà¹Ģà¸« à¸£\nà¹Ģà¸«à¸£ à¸µà¸¢\nà¹Ģà¸«à¸£à¸µà¸¢ à¸į\nà¸Ļà¸±à¸ģ à¸Ĺà¹Īà¸Ńà¸ĩà¹Ģà¸Ĺà¸µà¹Īà¸¢à¸§\nĠalan Ä±nda\nĠÑĥ Ð·Ð½Ð°\nĠÐ» ÐµÑĩÐµÐ½Ð¸Ðµ\nå£² ãĤĮ\nĠÃ§ev ir\nĠdeste ÄŁi\nĠheiÃŁ t\nâĸ ²\nØŃ Ø·\nà¸Ħà¸³ à¸ķà¸Ńà¸ļ\nãĤªãĥ³ ãĥ©ãĤ¤ãĥ³\nĠ×ĳ×Ĺ×Ļ ×Ļ×Ŀ\nãĥ¦ ãĥĭ\nĠdÃ¼zenle me\nĠmodal itÃł\nØ³Ø± Ø·\nØ³Ø±Ø· Ø§ÙĨ\n×ŀ×Ľ ×ķ×Ł\nĠÐ´Ð°Ð½Ð½Ñĭ Ð¹\nØªØ± Øª\nØªØ±Øª ÙĬØ¨\nà¸ļà¸²à¸ĩ à¸Ħà¸Ļ\nĠÄĲ á»ĭnh\nà¸¡ à¸¹à¸¥\nà¸¡à¸¹à¸¥ à¸Ħà¹Īà¸²\nÙĨ ÙĤØµ\nà¸ģà¸²à¸£ à¸£à¸±à¸ģà¸©à¸²\nĠÑĦ Ð¾Ð½\nĠÑĦÐ¾Ð½ Ð´\nãĤĪãģĨ ãģ«ãģªãģ£ãģŁ\nÙħØ¹ Ø§ÙĦ\nÙħØ¹Ø§ÙĦ Ø¬Ø©\nĠOs man\nĠOsman lÄ±\nÐ¸ÑĩÐµÑģÐº Ð¾Ð¼\nà¸Ńà¸¢à¸²à¸ģ à¸Īà¸°\nãģķãģ¾ ãģĸ\nãģķãģ¾ãģĸ ãģ¾\nãģķãģ¾ãģĸãģ¾ ãģª\nĠ×ª ×ķ×Ľ×ľ\n×¢ ×¦×ĳ\nĠØ§ÙĦØ¹ Ø³Ùĥ\nĠØ§ÙĦØ¹Ø³Ùĥ Ø±ÙĬ\nĠvÃ© hic\nĠvÃ©hic ule\nĠ×Ļ×¦ ×Ĺ×§\nĠØ§ÙĦÙĪ ØŃ\nĠØ§ÙĦÙĪØŃ ÙĬØ¯\nĠØ§ÙĦØ¹ Ø¯ÙĪ\nĠQu áº£n\nĠê³µ ëıĻ\nØ¨Ø¯ ÙĦ\nĠÄĳ áº£ng\nĠm á»ĩnh\nĠnie zb\nĠniezb ÄĻ\nĠniezbÄĻ dn\nĠyayÄ±n lan\nÐ¾Ð±Ñī Ð¸\nĠgÃ¶ tÃ¼r\n×¦ ×¤\n×¦×¤ ×ķ×Ļ\nĠÙĦÙĬ Ø¨ÙĬ\nĠÙĦÙĬØ¨ÙĬ Ø§\nØŃ ÙĪØ§\nĠÐ´ Ð¾Ð±\nĠÐ´Ð¾Ð± ÑĢÐ¾\nÐ¸ÑĢÑĥ ÐµÐ¼\nĠØ§ÙĦØŃÙĥÙĪÙħ ÙĬØ©\nm Ã¤ÃŁig\nĠed iciÃ³n\nÐ²Ð»ÐµÐº Ð°ÑĤÐµÐ»ÑĮ\nÐ²Ð»ÐµÐºÐ°ÑĤÐµÐ»ÑĮ Ð½\nĠ×ª ×©×ľ×ķ×Ŀ\nĠ×Ķ×© ×ķ×ł×Ļ×Ŀ\nà¸¡à¸´ à¸ĸà¸¸\nà¸¡à¸´à¸ĸà¸¸ à¸Ļ\nà¸¡à¸´à¸ĸà¸¸à¸Ļ à¸²à¸¢à¸Ļ\né£Łãģ¹ ãģ¦\nĠìĪĺ ì§ĳ\n×¡ ×ĳ×Ļ\nĠÐ¸Ñİ Ð»Ñı\nĠà¹Ħà¸Ķà¹ī à¹ģà¸ģà¹Ī\n×ľ×Ĺ ×Ŀ\ntr Ã¤\ntrÃ¤ gt\nãģĿãĤĤ ãģĿãĤĤ\nÐĿ Ðķ\nĠÐ² Ð½ÑĥÑĤ\nĠÐ²Ð½ÑĥÑĤ ÑĢÐ¸\nãģ¨ ä¸Ģç·Ĵãģ«\nãĤ« ãĥķãĤ§\nĠ×ĳ×Ĺ ×ĵ×¨\n×Ĺ ×ŀ×©\nãĤ¨ ãĥį\nãĤ¨ãĥį ãĥ«\nãĤ¨ãĥįãĥ« ãĤ®\nãĤ¨ãĥįãĥ«ãĤ® ãĥ¼\nà¸Ĥà¸Ńà¸ĩ à¸ķà¸±à¸§à¹Ģà¸Ńà¸ĩ\nØ¨ÙĤ Ø§Ø¡\n×¤×¡ ×Ļ×Ľ\n×¤×¡×Ļ×Ľ ×ķ×ľ×ķ×Ĵ\nãĥ¡ ãĥĥ\nãĥ¡ãĥĥ ãĤ»\nãĥ¡ãĥĥãĤ» ãĥ¼ãĤ¸\nÙĦ ÙĤØ¨\nA Äŀ\n×©×§ ×Ļ×¢\nÙĤ Ø³Ø§Ùħ\n×ĵ×ķ×Ĵ ×ŀ×Ķ\næ·± ãģĦ\níĸĪ ëĬĶëį°\nĠrozwiÄħz anie\nà¸Ļà¸±à¹Īà¸Ļ à¹Ģà¸Ńà¸ĩ\n×Ļ×¦ ×ĳ\nĠtr Ã´ng\nà¹ĥà¸Ĭà¹ī à¸ļà¸£à¸´à¸ģà¸²à¸£\nĠØ§ÙĦÙħÙĪ Ø³Ùħ\nĠÐ´ÐµÑĤ Ð¸\nãģĹãģĭ ãģªãģĦ\n×¡ ×Ļ×Ł\nĠrÃ©fÃ© rence\nà¹ģà¸« à¹īà¸ĩ\nãĤĤãĤī ãģ£ãģŁ\nĠ×ľ ×¨×Ľ\nĠ×ľ×¨×Ľ ×ķ×©\nØ´Ø¹ ÙĪØ±\nĠÐĳ Ð¾Ð³\nĠlaz Ä±m\nĠ×Ļ×© ×ł×Ŀ\nĠÐ¿ Ð°ÑĢÑĤ\nĠÐ¿Ð°ÑĢÑĤ Ð½ÐµÑĢ\nĠÑĥ Ð½Ð¸ÐºÐ°\nĠÑĥÐ½Ð¸ÐºÐ° Ð»ÑĮÐ½\nĠmatÃ© riel\n×ŀ×¨ ×§\nĠph Æ°á»Ŀng\nĠÐ· Ð°Ð¹\nĠÐ·Ð°Ð¹ Ð¼\nÙģ ÙĤØ¯\nUnivers itÃł\n×¢ ×¨×Ľ×Ļ×Ŀ\nĠba Ã±o\nĠÐ½ Ð¾Ñı\nĠÐ½Ð¾Ñı Ð±ÑĢÑı\nà¸Ľ à¹īà¸²à¸¢\nĠt ats\nĠtats Ã¤ch\nĠtatsÃ¤ch lich\nĠÑĤÑĢ ÐµÑĤÑĮ\nÑį Ð¼\nãĥĻ ãĥ¼ãĤ¹\nĠnh á»±a\nìĬ¤ íģ¬\nĠØ¹Ø¨Ø¯Ø§ÙĦ ÙĦÙĩ\nĠ×ª ×ķ×¨×Ķ\nØ£Ø´ ÙĬ\nØ£Ø´ÙĬ Ø§Ø¡\nĠÙĦÙĦ ØºØ§\nĠÙĦÙĦØºØ§ ÙĬØ©\nÙħ ÙĪØ§ÙĤ\nÙħÙĪØ§ÙĤ Ùģ\nĠgÅĤÃ³wn a\nĠart Ä±ÅŁ\nĠ×ŀ×§ ×ķ×ŀ×Ļ\nãĤ¯ãĥ© ãĥĸ\nĠØ³ ÙĪÙī\nĠìĹ¬ ìĦ±\nØ§Ø³ Ø±\nØ§Ø³Ø± Ø§Ø¦ÙĬÙĦ\nĠ×ł ×Ľ×ª×ĳ\nà¸¢ à¹īà¸Ńà¸Ļ\nĠdeber Ã¡\nĠph áº«u\nÑİÑī ÐµÐ¼\nĠÙĦØ¯ÙĬ ÙĨØ§\n×ŀ×ĺ ×Ķ\nĠ×ł ×ķ×ľ×ĵ\nĠÐ²ÑģÑĤÑĢ ÐµÑĩÐ°\nãĤīãĤĮ ãģ¦ãģĦãģ¾ãģĻ\nĠcaÅĤ ej\nà¸¢ à¸¶\nà¸¢à¸¶ à¸Ķ\nÐ¿Ð¾ÑĤ ÐµÐ½\nÐ¿Ð¾ÑĤÐµÐ½ ÑĨÐ¸\nĠÐ» Ð¸ÑĤ\nĠÐ»Ð¸ÑĤ ÐµÑĢ\nĠÐ»Ð¸ÑĤÐµÑĢ Ð°ÑĤÑĥÑĢ\nĠÐºÐ°Ð¶Ð´ Ð¾Ð¼\nĠíĮ Ĳ\nĠíĮĲ ëĭ¨\nà¸Ī à¸¹\nĠpres enÃ§a\nãģªãĤĵ ãģ§\nÙħ ÙĬØ§Ùĩ\nÐ¸Ð½ ÑĦÐ¾ÑĢÐ¼\nÐ¸Ð½ÑĦÐ¾ÑĢÐ¼ Ð°ÑĨÐ¸Ð¾Ð½\nÐ¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ð¾Ð½ Ð½\nĠìŀĲ ìĹ°\n×¨×Ľ ×©\nĠÃ¶d Ã¼l\nç¶ļ ãģı\nĠÐ¿ Ñģ\nĠÐ¿Ñģ Ð¸Ñħ\nĠÐ¿ÑģÐ¸Ñħ Ð¾Ð»Ð¾Ð³\nØª Ø°ÙĥØ±\nĠìŀħ ìŀ¥\nà¸¥ à¸Ķà¹Į\nìĦł ê±°\nãģ£ãģ¦ ãģĬãĤĬãģ¾ãģĻ\nĠ×Ļ ×¢\nĠ×Ļ×¢ ×§×ĳ\nĠØ§ÙĦØ· Ø¹Ø§Ùħ\nãĥĨ ãĤ¹ãĥĪ\nĠTu áº¥n\nĠparticip aciÃ³n\n×ŀ×ķ×ŀ ×Ĺ×Ķ\n×Ĵ×¨ ×¡×Ķ\nĠØ§ÙĦØªÙĨ ÙģÙĬ\nĠØ§ÙĦØªÙĨÙģÙĬ Ø°ÙĬ\nĠÐ±ÐµÐ·Ð¾Ð¿Ð°Ñģ Ð½\nge f\ngef Ã¤hr\nØ´ ÙĪØ±\nĠmy ÅĽli\nÙĪØ§ Ø´ÙĨ\nÙĪØ§Ø´ÙĨ Ø·ÙĨ\n×ł×ķ×¡ ×¢\nÙĥ Ùĩ\nÙĥÙĩ Ø±Ø¨\nÙĥÙĩØ±Ø¨ Ø§Ø¡\nĠmus iaÅĤ\nìĭ ¸\nãĥĸãĥ© ãĥĥãĤ¯\nĠcrÃ© Ã©\nÙĨÙĩ Ø§Ø±\nowo ÅĽÄĩ\nÙħØŃØ§ ÙĥÙħ\nĠwÅĤa ÅĽ\nĠwÅĤaÅĽ c\nĠwÅĤaÅĽc iciel\nĠÙĬ Ø¤\nĠÙĬØ¤ Ø¯ÙĬ\n×ŀ×¢ ×ķ×ł\n×Ĳ ×ĳ×ľ\nØ®Ø· Ø£\nĠÑħ Ð¾Ð»Ð¾Ð´\n×ĸ ×ķ×ľ\nãģĵãĤĮ ãĤī\nãģĵãĤĮãĤī ãģ®\nĠbÃ¡s ica\nà¸¤ à¸Ķ\nà¸¤à¸Ķ à¸¹à¸ģ\nà¸¤à¸Ķà¸¹à¸ģ à¸²\nà¸¤à¸Ķà¸¹à¸ģà¸² à¸¥\nèĲ½ãģ¡ çĿĢ\nãģªãģĦ ãģĵãģ¨\nØµ ÙĪÙħ\nÙĨØ¬ ØŃ\n×ł×§ ×ķ×ĵ\n×ł×§×ķ×ĵ ×ª\nÐºÐ» Ð°ÑģÑģ\níķĺìĭľ ëĬĶ\nëĦ ĺ\nĠ×©×Ĳ ×Ļ×ł×ķ\nĠÐ¡ ÐµÐ¹ÑĩÐ°Ñģ\nmay acaÄŁÄ±\nĠyap Ä±lÄ±r\nĠcategor ÃŃa\nØ¹Ø¨ Ø§Ø¯\nĠÐ¢ ÐµÐ¿\nĠÐ¢ÐµÐ¿ ÐµÑĢÑĮ\n×Ķ×Ļ×¡×ĺ ×ķ×¨×Ļ\nh áº¿\nãĤ³ ãĥ¼ãĥī\nĠcabe Ã§a\nØ¬ ÙħØ§\nØ¬ÙħØ§ Ùĩ\nØ¬ÙħØ§Ùĩ ÙĬØ±\nä½İ ãģĦ\nĠÑĤÐ¾Ð²Ð°ÑĢ Ð¾Ð²\nà¸Ĭà¸²à¸§ à¸ļà¹īà¸²à¸Ļ\nĠÑģÑĤÐ°Ð½ Ð¾Ð²\nĠÑģÑĤÐ°Ð½Ð¾Ð² Ð¸ÑĤÑģÑı\nĠÐ°Ð²ÑĤÐ¾Ð¼ Ð¾Ð±Ð¸Ð»ÑĮ\nĠÑģÐ»ÑĥÑĩ Ð°Ð¹\nà¸Ńà¸± à¸ŀ\nĠG iriÅŁ\nĠìĿ¼ ëĭ¨\nĠÐ¿ÑĢ Ð¾Ñģ\nĠÐ¿ÑĢÐ¾Ñģ Ð¼Ð¾ÑĤÑĢ\nãģªãģıãģª ãģ£ãģŁ\nà¸¡à¸µ à¸Ľà¸±à¸įà¸«à¸²\nïº İ\nÃ©c oute\nĠÙħ ÙĪØ¬ÙĪØ¯\nĠØ³ Ø±ÙĬØ¹\nĠÙĪÙĩ ÙĨØ§\nĠÙĪÙĩÙĨØ§ Ùĥ\nà¸Ħà¸¸à¸ĵ à¸ªà¸¡\nà¸Ħà¸¸à¸ĵà¸ªà¸¡ à¸ļà¸±à¸ķà¸´\nĠìļ° ìĦł\nà¸ŀà¸£à¸° à¸ŀà¸¸à¸Ĺà¸ĺ\nå¥½ ãģ¿\nØ¸ ÙĦÙħ\nĠÐ¼ Ð°ÐºÑģ\nĠÐ¼Ð°ÐºÑģ Ð¸Ð¼Ð°Ð»ÑĮ\nĠÐ¼Ð°ÐºÑģÐ¸Ð¼Ð°Ð»ÑĮ Ð½Ð¾\nãĥª ãĤ¢ãĥ«\nà¹ģà¸¡à¹ī à¸§à¹Īà¸²\nĠØ§ÙĦØŃ ÙĪØ§Ø±\nãĥĹãĥ© ãĤ¹\nĠØ¹ ÙĦØ§ÙĤØ©\nĠíĸī ëıĻ\nĠgÃ¶nder il\nĠl Ã£i\nĠsaÄŁ lÄ±kl\nĠsaÄŁlÄ±kl Ä±\nĠÑĪ Ð°Ð³\nĠ×ĳ×Ĳ×¨ ×Ķ\nprowadzi Äĩ\nãģĦãģı ãģ¤ãģĭ\nĠØ¨Øª Ø§Ø±ÙĬØ®\nĠ×ĳ×Ĳ×ķ×ª ×Ķ\nĠmÃ³ c\nĠÐľ Ð½Ðµ\nãĥĹãĥ¬ ãĥ¼\n×Ĳ ×ĸ×¨×Ĺ\nåł´åĲĪ ãģ«ãģ¯\nä½¿ ãģĪ\nà¹Ģà¸£ à¸·à¸Ńà¸Ļ\nĠÐŁ ÐµÑĤ\nĠÐŁÐµÑĤ ÑĢ\nãģ«åħ¥ ãĤĭ\nÙħ Ø§Ø¯Ø©\nà¹Ģà¸ĩ à¸·à¹Īà¸Ńà¸Ļ\nà¹Ģà¸ĩà¸·à¹Īà¸Ńà¸Ļ à¹Ħà¸Ĥ\nĠÑģÐ¾ÑģÑĤÐ¾Ñı Ð½Ð¸Ðµ\nÃ´n ica\nĠÑĦ ÐµÐ²\nĠÑĦÐµÐ² ÑĢÐ°\nĠÑĦÐµÐ²ÑĢÐ° Ð»Ñı\nĠ×ķ ×ĸ\nĠ×ķ×ĸ ×Ĳ×ª\nà¸Ħà¸£ à¸´\nà¸Ħà¸£à¸´ à¸ª\nĠÐķ ÑīÐµ\nãģ£ãģ¦ãģĹãģ¾ ãģĦãģ¾ãģĹãģŁ\nĠÐ¿ÑĢÐ°Ð² Ð¸ÑĤÐµÐ»ÑĮ\nĠÐ¿ÑĢÐ°Ð²Ð¸ÑĤÐµÐ»ÑĮ ÑģÑĤÐ²\nĠtÃ¤ glich\nĠëĭ¹ ìĭľ\n×ŀ×ķ×¢ ×ŀ×ĵ\nĠÐ´Ð² Ð¾ÑĢ\næī ķ\næīķ ãģĦ\nĠÑģÑĤÐ°Ð½ ÐµÑĤ\nĠÐ²Ð¾Ð·Ð´ ÐµÐ¹ÑģÑĤÐ²\nĠÐ²Ð¾Ð·Ð´ÐµÐ¹ÑģÑĤÐ² Ð¸\nĠf Ãªte\nà¹Ģà¸ª à¸²\n×ª×§ ×ķ×ķ×Ķ\nĠu yar\nĠuyar Ä±\nà¸ģà¸¥à¸±à¸ļ à¹Ħà¸Ľ\nĠgi Æ°á»Ŀng\nĠÐ² Ð°\nĠÐ²Ð° ÑĪÐ¸\nĠÄĳ áºŃu\nĠSpa ÃŁ\nĠìķĦ ë§Ī\nà¹Ħà¸Ķà¹ī à¸ĩà¹Īà¸²à¸¢\nĠ×Ķ×ŀ ×ĳ×§×©\næĸ° ãģŁ\næĸ°ãģŁ ãģª\nÄ±lÄ± yor\nÐ¿Ð» Ð°Ð½\nĠ×Ķ×ĳ×¨ ×Ļ×Ĳ×ķ×ª\nĠaÄŁ rÄ±\nĠsay gÄ±\nå»º ãģ¦\nĠnaj wyÅ¼\nĠnajwyÅ¼ sz\nØ³ÙĬØ§Ø³ Ø§Øª\nãģĬ å¾Ĺ\nĠØ§ÙĦØ¹ ÙĦÙĬ\nĠØ§ÙĦØ¹ÙĦÙĬ Ø§\nĠcoraz Ã³n\nì¹ĺ ë£Į\nà¸«à¸±à¸§ à¸Ĥà¹īà¸Ń\nĠØ¨ ØŃÙĬ\nĠØ¨ØŃÙĬ Ø«\nÐ·Ð² ÐµÐ·Ð´\nØ¨ÙĪ Ø§Ø¨Ø©\nÐĽ Ðĺ\nÙĦØ§ Ø²Ùħ\nĠroz p\nĠrozp oc\nĠrozpoc zÄĻ\nè§¦ ãĤĮ\nĠØ§ÙĦØ¬ ÙħÙĩ\nĠØ§ÙĦØ¬ÙħÙĩ ÙĪØ±\nĠsp ÄĻd\nĠspÄĻd z\nà¸§à¸´à¸Ĺà¸¢à¸² à¸¨à¸²à¸ªà¸ķà¸£à¹Į\nÐ¸Ð² Ð°ÐµÑĤÑģÑı\nĠÐ´Ð°Ð½ Ð½Ð¾Ð¹\nĠreprÃ©s ente\nĠÄĳ á»ĭch\nĠ×¢×ŀ ×ķ×§\nà¸Ńà¸±à¸Ļ à¸ķà¸£\nà¸Ńà¸±à¸Ļà¸ķà¸£ à¸²à¸¢\nĠestr atÃ©g\nĠestratÃ©g ia\npad ÅĤ\nĠÐ² Ð¿Ð¾Ð»Ð½\nĠÐ²Ð¿Ð¾Ð»Ð½ Ðµ\nĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤÐ°Ð² Ð»ÐµÐ½\n×Ĺ×ľ ×ķ×§\n×Ĺ×ľ×ķ×§ ×ª\nãĤ¢ ãĥĬ\nĠØ§ÙĦØº Ø°\nĠØ§ÙĦØºØ° Ø§Ø¦ÙĬ\nĠÑĥ Ð·Ð½\nĠÑĥÐ·Ð½ Ð°ÑĤÑĮ\nà¸ĭ à¹īà¸²à¸¢\nå½ĵ ãģ¦\nØŃÙĬ Ø§Ø¡\nĠbÃ¡s ico\n×§×ķ×ĳ ×¢\nĠØ§ÙĦÙħ Ø¨Ø§Ø±Ø§Ø©\nĠØ§ÙĦÙĩ Ø§ØªÙģ\nĠ×Ľ ×ł×Ĵ×ĵ\nà¸Ľà¸£à¸° à¸«à¸¢\nà¸Ľà¸£à¸°à¸«à¸¢ à¸±à¸Ķ\nÐļ Ð°Ðº\nà¸Ĺà¸µà¹Ī à¸Ļà¹Īà¸²\nà¸Ĺà¸µà¹Īà¸Ļà¹Īà¸² à¸ªà¸Ļà¹ĥà¸Ī\nãģ¾ ãģģ\nï½ ¢\nÑģÐº Ð¾Ð¿\nĠson rasÄ±nda\nĠur zÄħd\nĠurzÄħd zenia\n×Ľ×ķ ×ķ×ł\n×Ľ×ķ×ķ×ł ×ª\nĠ×ľ×Ķ×ª ×ŀ×ķ×ĵ\nĠ×ľ×Ķ×ª×ŀ×ķ×ĵ ×ĵ\nĠÑģ Ð»Ð¸\nĠÑģÐ»Ð¸ ÑĪ\nĠÑģÐ»Ð¸ÑĪ ÐºÐ¾Ð¼\nĠÑģÑĤ ÑĥÐ´\nĠÑģÑĤÑĥÐ´ ÐµÐ½ÑĤ\nĠ×Ķ ×ķ×ĵ\nĠ×Ķ×ķ×ĵ ×¢×Ķ\në¹Ħ ìļ©\nà¸Ńà¸¢à¸²à¸ģ à¹ĥà¸«à¹ī\nĠb á»ģ\nà¸¢à¸¸ à¸Ĺà¸ĺ\nÐĺ ÐĿ\nØ³ Ø§Ø¦Ø±\nØ£ ØµÙĪÙĦ\nĠØ§ÙĦØº Ø±Ùģ\nãģĵãģ¨ãĤĤ ãģĤãĤĬãģ¾ãģĻ\nè¾¼ ãģ¾ãĤĮ\nĠØ§ÙĦØ³Ø§Ø¨ Ø¹\nĠc á»§\nãģĦãģŁãģł ãģĦãģŁ\nì§ ĵ\nìĤ¬ ë¬´\npowied Åº\nØªÙģ Ùĥ\nØªÙģÙĥ ÙĬØ±\nÐ¸ÑĢÐ¾Ð² ÐºÐ¸\nĠíĨµ íķ´ìĦľ\nãĤ¨ ãĤ¹ãĥĨ\nĠÐ´ÐµÑıÑĤÐµÐ»ÑĮ Ð½Ð¾ÑģÑĤÑĮ\nĠÐ´Ð°Ð½Ð½Ñĭ Ð¼\nĠ×¢ ×ķ×¨\nĠ×¢×ķ×¨ ×Ľ×Ļ\n×ķ×ĵ ×¢×ª\nĠhayat Ä±nÄ±\nĠb Äħd\nĠbÄħd Åº\nobs ÅĤug\nà¹Ģà¸ŀà¸µà¸¢à¸ĩ à¹ģà¸Ħà¹Ī\nà¸ĭ à¹Īà¸²\nè²ł ãģĳ\nĠÑģÑĤÑĢ ÐµÐ¼\nĠÄĳ á»īnh\nĠÐł ÑĥÑģ\nĠN á»¯\nĠ×ľ×Ķ×© ×Ļ×Ĵ\nĠjed noc\nĠjednoc ze\nĠjednocze ÅĽnie\nĠ×Ķ×Ĵ ×ĳ×ķ×Ķ\nØ£Ø® ÙĦØ§ÙĤ\nĠÐ½Ð°Ñģ ÐµÐ»\nĠÐ½Ð°ÑģÐµÐ» ÐµÐ½Ð¸Ñı\nĠÙĬ ÙĨØ¨\nĠÙĬÙĨØ¨ ØºÙĬ\nãģĮ ãģĭ\nãģĮãģĭ ãģĭ\n×Ĵ ×¢×ª\nÐŀ Ðł\nĠÐ½Ð°Ð»Ð¸Ñĩ Ð¸Ð¸\nĠë§Ī ì§Ģ\nĠë§Īì§Ģ ë§ī\nĠíĸī ìĤ¬\nĠtre ÅĽci\nĠê°Ģ ì¹ĺ\nì¦ ĺ\nĠÐ°Ð½Ð° Ð»Ð¾Ð³\n×Ķ×¦×¢ ×ª\nÐ² Ð»Ð°Ð´\nÐ²Ð»Ð°Ð´ Ðµ\nĠÑģÐ´ÐµÐ» Ð°Ð»\nĠ×ł ×Ĵ×Ļ×©\nĠ×ł×Ĵ×Ļ×© ×ķ×ª\nÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ðµ\nà¸Ĩ à¹Īà¸²\nĠD Ã¶n\n×Ľ×ľ×Ľ ×ľ×Ķ\n×ŀ×ĸ ×Ĵ\nÙħ Ùģ\nÙħÙģ Ùĩ\nÙħÙģÙĩ ÙĪÙħ\n×Ķ ×ĵ\n×Ķ×ĵ ×¤×¡\n×Ķ×ĵ×¤×¡ ×Ķ\nãģĻãģİ ãģ¦\nĠÐ³ ÑĢ\nĠÐ³ÑĢ Ð½\n×ŀ×ĺ ×ķ×¡\nĠê¸° ìĸµ\nï¾ Ł\nĠpÅĤ yn\nĠGr Ã¼nde\nĠBÃ¼ cher\nĠwed ÅĤug\nãģ¾ãģł ãģ¾ãģł\nĠ×ł×Ķ ×ĵ×¨\nĠÙĬØ³Øª Ø·ÙĬØ¹\nĠHi á»ĩp\nãĤŃãĥ£ãĥ³ ãĥļ\nãĤŃãĥ£ãĥ³ãĥļ ãĥ¼ãĥ³\nĠth á»ķ\nĠeuropÃ© enne\nà¸ļ à¸±à¸ĩ\nà¸ļà¸±à¸ĩ à¸Ħà¸±à¸ļ\nĠszczegÃ³ÅĤ owo\n×ł ×©×§\nãĥķ ãĥ©ãĥ³ãĤ¹\n×ŀ×ķ×ŀ ×Ĺ×Ļ\nĠcom Ãºn\nĠÃ§ arp\nØŃØª ÙĬØ§\nØŃØªÙĬØ§ Ø¬\nØŃØªÙĬØ§Ø¬ Ø§Øª\nëĭ´ ëĭ¹\nä½ķ åº¦\nä½ķåº¦ ãĤĤ\n×ĵ ×ĳ×§\nãģį ãĤĮ\nãģįãĤĮ ãģĦ\nĠÐº Ð°Ð¼\nĠÐºÐ°Ð¼ ÐµÑĢ\nĠespecÃŃf ico\nĠtel Ã©fono\nà¸ķà¸±à¹īà¸ĩ à¸Ńà¸¢à¸¹à¹Ī\nI Åŀ\nãģ© ãĤĵãģ©\nãģ©ãĤĵãģ© ãĤĵ\n×¢×¦ ×ŀ×Ĳ×Ļ\nà¸Ķà¸±à¸ĩ à¸Ļà¸µà¹ī\nĠÑĦÐ¾ÑĢÐ¼ Ð¸ÑĢÐ¾Ð²\nĠÑĦÐ¾ÑĢÐ¼Ð¸ÑĢÐ¾Ð² Ð°\n×ķ×ŀ ×ĳ\nĠkullan Ä±mÄ±\nÐľ Ðŀ\n×¢ ×©×Ļ\n×¢×©×Ļ ×Ļ×Ķ\nĠÃ¶n lem\nà¹Ģà¸Ń à¹ĩ\nà¹Ģà¸Ńà¹ĩ à¸¡\n×ŀ×©×§ ×Ļ×¢\n×¨ ×Ļ×Ĺ\nà¸Ĥ à¸±à¸Ķ\nĠíĻ ľ\nĠíĻľ ìļ©\nà¸ĭ à¸°\nãĤĪãģĨ ãģ«ãģªãĤĬãģ¾ãģĹãģŁ\nĠÑĢÐ°Ñģ Ð¿ÑĢ\nĠÑĢÐ°ÑģÐ¿ÑĢ Ð¾ÑģÑĤ\nĠÑĢÐ°ÑģÐ¿ÑĢÐ¾ÑģÑĤ ÑĢÐ°Ð½\nĠÑĢÐ°ÑģÐ¿ÑĢÐ¾ÑģÑĤÑĢÐ°Ð½ ÐµÐ½\n×Ľ×Ļ ×ķ×Ł\nÙĤØ¨ Ø¶\nØªØµ Ø±ÙĬØŃ\nØªØµØ±ÙĬØŃ Ø§Øª\nĠÐ¾ ÑĢÐ¸\nĠÐ¾ÑĢÐ¸ Ð³\nĠÐ¾ÑĢÐ¸Ð³ Ð¸Ð½Ð°\nĠÐ¾ÑĢÐ¸Ð³Ð¸Ð½Ð° Ð»\nĠØ§ÙĦØ¹ Ø§ÙĦÙĬ\nà¹ģà¸«à¹Īà¸ĩ à¸Ļà¸µà¹ī\nãĥķãĤ¡ ãĥ¼\nãģ¦ãģĦ ãģį\nãģ¦ãģĦãģį ãģŁãģĦ\n×¤ ×ª×¨\n×¤×ª×¨ ×ķ×ł×ķ×ª\nĠ×ĳ ×Ļ×Ĺ\nĠ×ĳ×Ļ×Ĺ ×ĵ\nĠod by\nĠodby ÅĤ\nĠÐ¾ÑĩÐµÑĢ ÐµÐ´\nĠtr Æ°Æ¡ng\nãĤŃ ãĥ³\n×ŀ ×ķ×¤\n×ŀ×ķ×¤ ×¢\nëĵľ ë¦½\nëĵľë¦½ ëĭĪëĭ¤\nà¸ŀà¸·à¹īà¸Ļ à¸Ĳà¸²à¸Ļ\nìŀĲ ê²©\nĠVi á»ĩn\nĠDes puÃ©s\nĠ×Ĳ×ľ ×Ļ×ł×ķ\nĠdur Ã©e\níĩ ´\nĠmÃ¼ zik\ni áº¿u\nĠÑĢÐ°Ð· Ð¼ÐµÑīÐµÐ½\nĠÐº ÑĥÐ´\nĠÐºÑĥÐ´ Ð°\nØº Ø¶\nØºØ¶ Ø¨\nĠTamb Ã©m\nà¸Īà¸±à¸Ķ à¸ªà¹Īà¸ĩ\nà¸ģà¸²à¸£ à¹ģà¸ªà¸Ķà¸ĩ\nonom ÃŃa\nĠÐ°Ð½ Ð³\nĠÐ°Ð½Ð³ Ð»Ð¸\nĠÐ°Ð½Ð³Ð»Ð¸ Ð¹\nĠÐ°Ð½Ð³Ð»Ð¸Ð¹ ÑģÐº\nĠzn al\nĠznal az\nĠznalaz ÅĤ\n×ª×¨ ×Ĵ\n×ª×¨×Ĵ ×ķ×Ŀ\nĠÑģ Ð½Ð¾Ð²\nĠÑģÐ½Ð¾Ð² Ð°\nĠÑĩÐ°Ñģ Ð°\nĠcommun autÃ©\nĠespecÃŃf ica\nĠL á»ĭch\nĠli Ã©\nÙģ Ø¬Ø±\nà¹Ģà¸ģ à¹Īà¸ĩ\nØ¹ Ø§ÙĦ\nØ¹Ø§ÙĦ Ø¬\nØ£ÙĨ Ø¸\nØ£ÙĨØ¸ ÙħØ©\nES Ä°\nĠØ§ÙĦØŃ Ø¯ÙĬØ¯\nà¸ŀà¸£à¸° à¸Ńà¸ĩà¸Ħà¹Į\nĠ×¤×¨ ×©×ª\nĠÐ´Ð² Ð¸Ð¶\nĠÐ´Ð²Ð¸Ð¶ ÐµÐ½Ð¸Ñı\nĠØ§ÙĦØ¬ Ø§Ø±ÙĬ\nà¸ĺà¸²à¸Ļ à¸µ\nÐ½ÐµÑģ ÐµÐ½\nĠØ§ÙĦÙĨ ÙĩØ§Ø¦ÙĬ\nĠÐ± ÐµÑĢ\nĠÐ±ÐµÑĢ ÐµÐ¼\nĠÐ±ÐµÑĢÐµÐ¼ ÐµÐ½Ð½\nĠdÃ©part ement\nà¹Ģà¸Ĺ à¸µà¸¢\nà¹Ģà¸Ĺà¸µà¸¢ à¸ļ\nĠÐľ Ð°ÑĢÐ¸\nĠÐ½ÐµÐºÐ¾ÑĤÐ¾ÑĢ ÑĭÑħ\nÐ¾Ð± ÐµÑģÐ¿\nÐ¾Ð±ÐµÑģÐ¿ ÐµÑĩÐµÐ½\n×Ĺ ×ķ×ĸ\n×Ĺ×ķ×ĸ ×Ķ\nÙĨØª Ø¬\nà¸Īà¸° à¹Ħà¸Ķà¹īà¸£à¸±à¸ļ\ná» °\nĠÃ©l Ã©ments\nØ¹ Ø·\nØ¹Ø· Ø§Ø¡\nĠt áº¯t\ni á»ĩm\nÑİÑīÐ¸Ñħ ÑģÑı\nãģĹãģ °\nãģĹãģ° ãĤīãģı\nĠÐ¿Ð¾Ð¼ Ð¾Ð¶ÐµÑĤ\nà¸Ĥà¸ĵà¸° à¸Ļà¸µà¹ī\nĠ×¢ ×©×¨×ķ×ª\néģķ ãģ£ãģ¦\nĠÐ¿ÑĢ Ð¾Ð³\nĠÐ¿ÑĢÐ¾Ð³ Ð½\nĠÐ¿ÑĢÐ¾Ð³Ð½ Ð¾Ð·\nĠt ÅĤ\nĠtÅĤ um\nĠtÅĤum acz\nT Ã¼r\nTÃ¼r kiye\nãģį ãģ£\nãģįãģ£ ãģĭãģĳ\nĠ×Ķ×ł ×ķ×Ľ\nĠ×Ķ×ł×ķ×Ľ ×Ĺ×Ļ\nĠìĥĿ ìĤ°\nĠÑĦÐ¾ÑĢÐ¼ Ñĭ\nç¾İ ãģĹãģĦ\nà¸Ľà¸£ à¸¶à¸ģ\nà¸Ľà¸£à¸¶à¸ģ à¸©à¸²\nĠlum iÃ¨re\nãĤª ãĥ¼ãĥĹ\nãĤªãĥ¼ãĥĹ ãĥ³\nà¸Ľ à¸·à¸Ļ\nà¸§à¸± à¸ªà¸Ķ\nà¸§à¸±à¸ªà¸Ķ à¸¸\nÐµÑĢÑĤ Ð²\nÙĥÙĦ Ùģ\nï½ £\nà¸ĺà¸£à¸£à¸¡ à¸Ķà¸²\n×ł ×ĺ×¨\nĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð² Ð»ÑıÐµÑĤ\nĠanÃ¡l isis\nĠb Ã£i\nØ¨Ø§ ÙĤÙĬ\nà¸Ľà¸£à¸° à¹Ģà¸Ķ\nà¸Ľà¸£à¸°à¹Ģà¸Ķ à¹ĩà¸Ļ\nĠÑģÐ»ÑĥÑĩ Ð°Ñı\nĠÑģÐ»ÑĥÑĩÐ°Ñı Ñħ\nÐĽ ÐĲ\nà¸ªà¸±à¸ĩ à¹Ģà¸ģ\nà¸ªà¸±à¸ĩà¹Ģà¸ģ à¸ķ\nĠprz ec\nĠprzec ieÅ¼\nÙħ ØµÙĦ\nÙħØµÙĦ ØŃØ©\n×©×ķ×§ ×ķ×ľ×ĵ\nĠÐ¾Ð±Ð¾ÑĢÑĥÐ´ Ð¾Ð²Ð°Ð½Ð¸Ñı\nĠtr waÅĤ\nØ±ÙĪ Ùħ\nìķĪ ëĤ´\nĠNgh á»ĭ\nØ® Ø´\nà¸ļà¸² à¸Ħà¸²à¸£\nà¸ļà¸²à¸Ħà¸²à¸£ à¹Īà¸²\nĠÐ¾Ð¿ ÑĨÐ¸Ð¾Ð½\nĠÑģÐ¾Ð·Ð´ Ð°Ð½Ð¸Ñı\nãĤ³ ãĤ¹ãĥĪ\nĠ×Ķ×¢ ×ľ×Ļ\nĠ×Ķ×¢×ľ×Ļ ×ķ×Ł\nlÃ¤ uft\nãĥĻ ãĤ¹ãĥĪ\nĠr Ãª\nĠrÃª ve\n×Ĳ ×ĳ×Ļ×ĳ\n×Ļ ×Ļ×ļ\në¶ Ļ\nãĤ¤ãĥ³ ãĥī\nÅĤo Å¼y\nÅĤoÅ¼y Äĩ\nØ¹ Ø§Ø¦ÙĦ\nØ¹Ø§Ø¦ÙĦ Ø©\nØ£ ÙĪØ±\nØ£ÙĪØ± Ø§ÙĤ\nà¸Ĺà¹īà¸Ńà¸ĩ à¸ĸ\nà¸Ĺà¹īà¸Ńà¸ĩà¸ĸ à¸´à¹Īà¸Ļ\nĠÃ¤ hn\nĠÃ¤hn lich\nãĥŁ ãĥĭ\nà¸ľ à¸¹\nà¸ľà¸¹ à¹īà¸Ļ\nà¸ľà¸¹à¹īà¸Ļ à¸³\nĠÐ¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð» Ñĭ\nĠÐºÐ°Ð¿ Ð¸ÑĤ\nĠÐºÐ°Ð¿Ð¸ÑĤ Ð°Ð»\nï¼ ¦\nĠseÃ§ il\nĠh á»©ng\nĠintÃ©ress ant\nãģ£ãģ¦ ãģĦãģı\nĠe ÄŁer\nëĲĺ ìĹĪìĬµëĭĪëĭ¤\nĠan laÅŁma\nãģĶ åĪ©çĶ¨\nĠ×ĳ ×ĸ×Ľ\nĠ×ĳ×ĸ×Ľ ×ķ×ª\nëĿ¼ ë©´\nĠÙĬ ÙĪØ³\nĠÙĬÙĪØ³ Ùģ\nØ£Ø³ÙĦ ØŃØ©\nĠGef Ã¼hl\nĠÐ½Ð¾ÑĢÐ¼ Ð°Ð»ÑĮÐ½\nãĥĻ ãĥ³\nãģķãĤĮ ãĤĭãģĵãģ¨\nĠÐĳ ÐµÑģ\nãģ¨ãģĦ ãģĪãģ°\nĠÙħ ÙĩÙħ\nĠÙħÙĩÙħ Ø©\nãģ§ãģĹãĤĩãģĨ ãģŃ\nĠêµŃ ëĤ´\nà¹Ģà¸¡ à¹ĩà¸Ķ\n×ŀ×ĳ ×§×¨\nĠØ§ÙĦØ¯ ÙĨÙĬ\nĠØ§ÙĦØ¯ÙĨÙĬ Ø§\nà¸Ĭ à¸¹\nÐº ÑĢÑĥÑĤ\nĠtho Ã¡ng\nĠ×ł ×ĵ×¨\nĠ×ł×ĵ×¨ ×©\nĠÑĢÐ°ÑģÑģ ÐºÐ°Ð·Ð°Ð»\nĠAu ÃŁerdem\n×¤ ×Ĳ×¨\n×¤×Ĳ×¨ ×§\nĠ×ŀ×©×Ĺ×§ ×Ļ×Ŀ\n×¦ ×¨×Ľ×Ļ×Ŀ\n×ŀ×ĵ ×ķ\n×ŀ×ĵ×ķ ×Ļ×§\nèĭ¦ ãģĹ\nĠÑģ Ð¸Ð³\nĠÑģÐ¸Ð³ Ð½Ð°Ð»\nĠM á»įi\nĠtr á»¯\nĠnast ÄĻp\nĠnastÄĻp nie\nĠì¶Ķ ì§Ħ\nĠØ§ÙĦÙģ ÙĨØ¯\nĠØ§ÙĦÙģÙĨØ¯ ÙĤ\nkoÅĦ czyÅĤ\nà¸ª à¸µà¹Ī\n×§ ×Ļ×ĳ\n×§×Ļ×ĳ ×ķ×¥\nĠÐ½ÑĥÐ¶ Ð½Ñĭ\nå¤§ åĪĩ\nå¤§åĪĩ ãģª\næıĽ ãģĪ\n×ª ×ķ×¡\n×ª×ķ×¡ ×¤×ª\nãģ£ãģ¦ ãģĦãģªãģĦ\nĠÐ¼ Ñı\nĠÐ¼Ñı Ð³\nĠÐ¼ÑıÐ³ Ðº\nĠjak ie\nĠjakie ÅĽ\nà¸ķà¸³ à¸ļ\nà¸ķà¸³à¸ļ à¸¥\nĠìŀĪ ì§Ģ\n×ĳ×ĺ ×Ĳ\nĠÐ¾ÑĤÐ»Ð¸Ñĩ Ð½Ð¾\nÙĤ ÙĲ\nĠÐ°Ð²ÑĤÐ¾Ð¼ Ð¾Ð±\nĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð± Ð¸\nĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð±Ð¸ Ð»Ñı\nØ¯ÙĬÙħÙĤØ±Ø§ Ø·ÙĬ\nĠØ§ÙĦ ÙĪØ§\nĠØ§ÙĦÙĪØ§ ØŃØ¯\nĠØ³ ÙĪØ±ÙĬØ©\nØ£ ØºÙĦ\nØ£ØºÙĦ Ø¨\nĠÑįÐº ÑĢÐ°Ð½\nãĥĹ ãĥ©ãĤ¤\nĠjeste ÅĽ\nãĥĲ ãĥª\nĠ×Ķ×Ĳ ×ķ×ķ×Ļ×¨\nØ§Ø¦ Ùĥ\nà¸Ńà¸¢à¹Īà¸²à¸ĩ à¸¢à¸´à¹Īà¸ĩ\nÑĢ ÐµÐºÑĤ\nĠum o\nĠumo Å¼\nĠumoÅ¼ li\nĠumoÅ¼li w\nĠumoÅ¼liw ia\nĠnÃ¤ch ste\nĠìŀĪ ì§Ģë§Į\nĠÐ¿ÑĢÐµÐ´ Ð½\nĠÐ¿ÑĢÐµÐ´Ð½ Ð°Ð·\nĠÐ¿ÑĢÐµÐ´Ð½Ð°Ð· Ð½Ð°ÑĩÐµÐ½\nĠma Ã§Ä±\nĠp omi\nĠpomi ÄĻd\nĠpomiÄĻd zy\nĠØ§ÙĦÙĦ ÙĤØ§Ø¡\nà¹Ģà¸Ķ à¸Ńà¸°\nĠÐ½Ð¾Ð² Ð¾ÑģÑĤÐ¸\n×ŀ×Ĺ ×ľ×Ķ\nØ±ÙĬØ§Ø¶ ÙĬ\nà¸Ķ à¸Ļ\nà¸Ķà¸Ļ à¸ķà¸£à¸µ\nØ¨ ØµØ±\nìĬ¤ íĥĢ\nscri pciÃ³n\nĠnap isa\nĠnapisa ÅĤ\nĠ×ł×© ×ŀ×¢\nĠØ§ÙĦÙħØŃ ÙĦÙĬ\nĠhi á»ĥn\n×Ĳ ×Ĺ\n×Ĳ×Ĺ ×¨×Ĳ×Ļ\nĠÐ³ ÑĢÐ°Ð½Ð¸ÑĨ\næīĭ ç¶ļãģį\nÙĥ Ø³Ø¨\nĠà¹ģà¸ķà¹Ī à¸ĸà¹īà¸²\nà¸Ķà¸²à¸§ à¸Ļà¹Į\nà¸Ķà¸²à¸§à¸Ļà¹Į à¹Ĥà¸«à¸¥à¸Ķ\nãĤĭãģĵãģ¨ãģĮãģ§ãģį ãģ¾ãģĻ\nåŁºæľ¬ çļĦãģ«\nÙĪÙĦ Ø§Ø¯\nrÃ¤ ume\nØ¯ ÙģØ§Ø¹\n×Ļ×¦ ×¢\nĠO czy\nĠOczy wiÅĽcie\nĠÅ ģ\nĠÅģ a\nØ§ÙĦÙĬ Ø§Ø¨\nØ§ÙĦÙĬØ§Ø¨ Ø§ÙĨ\náºł I\nĠBir liÄŁi\n×Ķ ×ķ×¦\n×Ķ×ķ×¦ ×Ĳ×ª\nĠÄĳ ua\nĠê·¸ëŁ¬ ëĭĪê¹Į\nĠrÃ©al itÃ©\nØ¹ ÙĦØ§ÙĤØ§Øª\nJ este\nJeste ÅĽ\nĠÐ¼Ð½ Ð¾Ð¶\nĠÐ¼Ð½Ð¾Ð¶ ÐµÑģÑĤÐ²Ð¾\nï¼ «\nãĥĹãĥŃ ãĤ¸ãĤ§\nãĥĹãĥŃãĤ¸ãĤ§ ãĤ¯ãĥĪ\nĠÑĦ Ð»\nØ¸ ÙĨ\n×Ĵ×ľ ×Ĵ×ľ\nĠmÅĤod zie\nĠmÅĤodzie Å¼\nà¸Ļà¹īà¸³ à¸ķà¸²\nà¸Ļà¹īà¸³à¸ķà¸² à¸¥\nÐĽ Ðķ\n×ĳ ×ķ×ĺ\nĠ×ľ×Ķ ×Ĵ×Ļ×ĵ\nãģĵãģ¨ãĤĤ ãģĤãĤĭ\nØ² Ø§Ø¯\n×ŀ×Ļ×ĵ ×¢\nĠgÅĤÃ³wn ie\nãĥı ãĤ¦\nãĥıãĤ¦ ãĤ¹\nÐ± ÐµÐ»\nĠÃ©t ape\nðŁĺ Ģ\nĠÐ¼Ð¾Ð´ ÐµÐ»ÑĮ\na ÄŁÄ±nÄ±\n×© ×Ĺ×§\n×©×Ĺ×§ ×Ł\nĠni Ã±o\nà¸Ĭ à¹īà¸²à¸ĩ\nà¹Ģà¸¥ à¸µà¸¢\nĠÑĦÐ¾ÑĢÐ¼ Ðµ\nĠØ§ÙĦØ´ Ø±ÙĬÙģ\nĠÑĥÐ´ Ð°ÑĢ\narr iv\narriv Ã©e\nĠmies iÄĻ\nĠmiesiÄĻ cy\nØŃ Ø±Ùĥ\nØŃØ±Ùĥ Ø§Øª\nĠDi á»ħn\nÐĿ Ð«\nãģ¾ãģ£ãģŁ ãģı\nĠ×Ļ ×¨×ķ×§\nÐµÑģÑĤ ÐµÑģÑĤÐ²\nÐµÑģÑĤÐµÑģÑĤÐ² ÐµÐ½Ð½\nĠê·¸ ëŁ¼\nĠØ§ÙĦÙħ ØªÙĪ\nĠØ§ÙĦÙħØªÙĪ Ø³Ø·\nĠbÃ©nÃ© fic\nĠbÃ©nÃ©fic ie\nĠwy bra\nĠwybra Äĩ\nĠØ§ÙĦØ² ÙħÙĨ\nĠÐ¿ÑĢÐ¸Ð½ Ñı\nĠÐ¿ÑĢÐ¸Ð½Ñı Ð»\nÙģØ± ØŃ\nĠk sz\nĠksz taÅĤ\nĠksztaÅĤ t\n×§×ľ ×ĺ\n×ĳ×ĵ×Ļ×§ ×ª\nĠgi áº¥\nĠgiáº¥ c\nĠpropriet Ãł\nÐ´ÐµÑĢÐ¶ Ð°Ð½\nĠKÃ¶ ln\nĠGÃ¼ zel\n×Ļ×¤ ×ķ×Ļ\nĠCu á»Ļc\nÑįÑĤ Ð°Ð¶\nØªØ± ÙĥÙĬ\nØªØ±ÙĥÙĬ Ø²\nÐ»Ð¾Ð¶ ÐµÐ½Ð¸Ð¹\nĠÐ¿ Ñĥ\nĠÐ¿Ñĥ ÑĤÐ¸\nØ§Ø®Øª ÙĦØ§Ùģ\nåĩºãģ¦ ãģıãĤĭ\nà¸ļà¸¸ à¸ģ\nâĿ ¤\nÑĦ Ð°Ð½\n×¤×© ×ĺ\nà¸ļà¸±à¸Ļ à¹Ģà¸Ĺ\nà¸ļà¸±à¸Ļà¹Ģà¸Ĺ à¸´à¸ĩ\nĠØ§ÙĦØ³ Ø§Ø¯\nĠØ§ÙĦØ³Ø§Ø¯ Ø³\nĠØ§ÙĦÙĤ ÙĪÙħ\nĠØ§ÙĦÙĤÙĪÙħ ÙĬ\nĠyÃ¶net ici\nÙĩ ÙĪØ§Øª\nÙĩÙĪØ§Øª Ùģ\nĠrespons Ã¡vel\nĠÐ¿Ð¾Ð´ Ð´ÐµÑĢÐ¶Ð¸Ð²Ð°\nĠØ§ÙĦØ³ÙĦ Ø·\nĠØ§ÙĦØ³ÙĦØ· Ø§Øª\nãģĹãģ¦ ãģĬãģı\nãĥļ ãĥĥãĥĪ\nà¸Ľ à¸¸à¹Īà¸¡\nĠogl Äħda\nÙĨØ§ ÙĤ\nÙĨØ§ÙĤ Ø´\nà¸Ħà¸Ńà¸Ļ à¹Ĥà¸Ķ\nĠMÃ¼ sl\nĠMÃ¼sl Ã¼\nĠMÃ¼slÃ¼ man\nĠMo Å¼\nĠMoÅ¼ na\nĠnum Ã©rique\nĠv á»ı\nĠØ³ÙĬ ØªÙħ\nĠyer leÅŁ\nÐ¼Ð¾Ð½ÑĤ Ð°Ð¶\nĠgo Ã»t\nãģ¦ ãģĬãĤĬãģ¾ãģĻ\nĠKh Ã¡nh\nĠÐµ Ð´Ð¸Ð½\nĠÐµÐ´Ð¸Ð½ ÑģÑĤÐ²\nØ§ÙĨ Ø®Ùģ\nØ§ÙĨØ®Ùģ Ø§Ø¶\nìĭľ íĹĺ\nĠl áº·ng\nĠÑĢ Ð¾Ð»ÑĮ\nà¸ķà¸±à¸§ à¹ģà¸Ĺà¸Ļ\nà¸Ħà¹Īà¸² à¹ĥà¸Ĭà¹ī\nà¸Ħà¹Īà¸²à¹ĥà¸Ĭà¹ī à¸Īà¹Īà¸²à¸¢\nĠver fÃ¼g\nĠverfÃ¼g bar\nìĻĶ ëĭ¤\nãģĦ ãģļ\nãģĦãģļ ãĤĮ\nĠÐ¸ÑģÑģÐ»ÐµÐ´ Ð¾Ð²Ð°Ð½Ð¸Ñı\nÐ¼ÐµÑī Ð°\n×Ķ ×Ĺ\n×Ķ×Ĺ ×ĸ×¨\nà¹ģà¸Ł à¸Ĭà¸±à¹Īà¸Ļ\nØª ØµØ±Ùģ\nØ¥ Ø±ÙĩØ§Ø¨\nĠexerc ÃŃcio\nĠÃ© lev\nĠÃ©lev Ã©\nà¸ªà¸±à¸įà¸įà¸² à¸ĵ\nÃĸ Z\nãĥĹ ãĥŃãĤ°\nãĥĹãĥŃãĤ° ãĥ©\nãĥĹãĥŃãĤ°ãĥ© ãĥł\nĠw ewnÄĻtrzn\nĠhen Ã¼z\né£Ľ ãģ³\nà¹Ģà¸Ķ à¸Ńà¸£à¹Į\nÑģ ÑĥÐ¶\nÑģÑĥÐ¶ Ð´ÐµÐ½\nØ´Ø¹ ÙĪØ¨\nãģ²ãģ¨ ãĤĬ\nĠwy ÅĤÄħ\nĠwyÅĤÄħ cznie\nĠÐ¿Ð»Ð¾ ÑħÐ¾\nÐĶ Ðķ\náº ¦\nÙģØ¹ Ø§ÙĦÙĬ\nÙģØ¹Ø§ÙĦÙĬ Ø§Øª\nĠØ§ÙĦØ¹ Ø´Ø±\nÑģÑĤÑĥÐ¿ Ð¸Ð»\nĠy arg\nĠyarg Ä±\nÐ½Ñİ Ñİ\n×ķ×Ĳ ×ĳ\nĠu Ã§\nĠuÃ§ ak\në² ½\nØªÙĪ ÙĤÙĬ\nØªÙĪÙĤÙĬ Ø¹\nĠì¤ĳ ìĭ¬\n×ł×Ļ×ķ ×ķ×ĺ\nØ£ ÙĥÙĦ\nç½® ãģĦãģ¦\néłĤ ãģį\nĠ×Ķ×ª ×ĳ\nĠ×Ķ×ª×ĳ ×Ļ×¢×Ķ\nĠdÃ¼r fen\nÙħ ÙĤØ§ÙĦ\nÙħÙĤØ§ÙĦ Ø§Øª\nĠØ² ÙħÙĨ\nà¸ŀà¸¤ à¸¨\nà¸ŀà¸¤à¸¨ à¸Ī\nà¸ŀà¸¤à¸¨à¸Ī à¸´à¸ģ\nà¸ŀà¸¤à¸¨à¸Īà¸´à¸ģ à¸²à¸¢à¸Ļ\nĠÐ½ÐµÑģÐº Ð¾Ð»ÑĮ\nĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮ ÐºÐ¸\nĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮÐºÐ¸ Ñħ\nĠcrian Ã§a\nà¸¡à¸´ à¸ķà¸£\n×ŀ×Ľ ×Ļ×¨×ķ×ª\nà¸ģà¸²à¸£ à¸ļà¸£à¸´à¸«à¸²à¸£\nĠtÃ©lÃ© charg\nĠ×Ĳ×ķ×Ķ ×ĳ×ª\nĠBÃ¼ ro\nä½ľ ãģ£ãģŁ\nĠKi ÅŁi\nç¾İåĳ³ ãģĹ\nà¹Ģà¸¥à¸¢ à¸Ħà¹Īà¸°\nà¸ŀà¸ļ à¸ģà¸±à¸ļ\nà¸Ī à¹īà¸²\nĠÃ§ er\nĠÃ§er Ã§\nĠÃ§erÃ§ eve\nãĤĴä½ľ ãģ£ãģ¦\nĠÐ¿ÐµÑĢÐ² ÑĥÑİ\n×ŀ×¦ ×¨×Ļ×Ŀ\n×Ĳ×ľ ×ķ×Ķ\n×Ĳ×ľ×ķ×Ķ ×Ļ×Ŀ\nĠagr Ã©\nĠagrÃ© able\nĠay Ä±r\nÄ°L Ä°\nãĤ ¥\nĠíĺ Ħ\nĠíĺĦ ìĭ¤\nØ«Ø§ÙĦ Ø«\n×ª ×ĸ\n×ª×ĸ ×ķ×ł×Ķ\nãģ¨ãģĦ ãģ£ãģ¦\nãģ¨ãģĦãģ£ãģ¦ ãĤĤ\nĠØ§ Ø¨ÙĪ\nĠÑģÐ¾Ð± Ð°Ðº\né£Łãģ¹ ãģŁ\nĠÐ´Ð°Ð½ Ð½Ð¾Ð¼\nà¹Ģà¸¥ à¸´\nà¹Ģà¸¥à¸´ à¸¨\nĠí ļ\nĠíļ ¨\nĠíļ¨ ê³¼\nãĤĤãĤī ãģĪãĤĭ\n×ł ×¦×ľ\nÑĦ Ð¸Ðº\nÑĦÐ¸Ðº Ñģ\nĠjeste ÅĽmy\n×ª×Ĺ×ķ×© ×Ķ\nà¹Ħà¸¡à¹Ī à¸Ħà¸§à¸£\nĠØŃ Ø³ÙĬÙĨ\nà¸ģà¸²à¸£ à¸¥à¸ĩà¸Ĺà¸¸à¸Ļ\në´ ¤\nĠÐĺ Ð¼ÐµÐ½Ð½Ð¾\nà¸ļ à¸Ńà¸£à¹Į\nà¸ļà¸Ńà¸£à¹Į à¸Ķ\nĠC áº£nh\nìĦľ ë¹ĦìĬ¤\nĠÐ¿Ð¾Ð» Ð¾Ð²\nĠÐ¿Ð¾Ð»Ð¾Ð² Ð¸Ð½\nĠÐ·Ð°Ð¼ ÐµÑĩÐ°\nãģĦãĤį ãĤĵãģª\nĠ×ĳ ×Ļ×§\nĠ×ĳ×Ļ×§ ×©\nÐ» ÑĥÑĪ\nãĤĴ è¿İ\nãĤĴè¿İ ãģĪ\nØ¬Ø±ÙĬ ÙħØ©\nĠt Ã¢y\nĠØ§ÙĦÙĨ ÙĪ\nĠØ§ÙĦÙĨÙĪ ÙĪÙĬ\nÃĤ N\nì¿ ł\nà¸«à¸Ļ à¸²à¸§\nĠ×ĳ×Ĺ ×©×ĳ×ķ×Ł\nØ² Ø§Ø±\nà¸Ķ à¸²à¸£\nà¸Ķà¸²à¸£ à¸²\nĠÅĽ l\nĠÅĽl ub\nà¸¡à¸µà¸Ħà¸§à¸²à¸¡ à¸ªà¸¸à¸Ĥ\nĠn hu\nĠnhu áºŃn\nÙħØŃ Ø·Ø©\nà¹Ģà¸ªà¸·à¹īà¸Ń à¸ľà¹īà¸²\nĠÐ¢ Ð¾Ð»ÑĮÐºÐ¾\nĠÙĥ Ø³\nĠÙĥØ³ Ø§Ø±Ø©\nÙħØ´ Ø±ÙĪØ¹\nniÄĻ cia\n×¢ ×Ľ×©×Ļ×ķ\nØª ÙĦÙģ\nØªÙĦÙģ Ø²ÙĬ\nØªÙĦÙģØ²ÙĬ ÙĪÙĨ\nĠl Æ°á»Ľi\nĠÐľÐ¾ÑģÐº Ð²Ñĭ\nĠrÃ© serve\nĠan laÅŁ\nĠanlaÅŁ Ä±l\nĠed eceÄŁi\nà¸£à¸Ńà¸ĩ à¹Ģà¸Ĺà¹īà¸²\nĠØ¨ Ø·\nĠØ¨Ø· Ø±ÙĬ\nĠØ¨Ø·Ø±ÙĬ ÙĤØ©\nãģ¦ãģĹãģ¾ ãģ£ãģ¦\nãĤĤãĤī ãģ£ãģ¦\nØ¨Ø± Ø¬\næ± ļ\næ±ļ ãĤĮ\nĠch oc\nĠchoc ia\nĠchocia Å¼\nĠzob ac\nĠzobac zyÄĩ\nÐ¿ÑĢ Ñı\nÐ¿ÑĢÑı Ð¶ÐµÐ½\nĠÑĨ Ð¸ÑĦ\nĠÑĨÐ¸ÑĦ ÑĢ\nĠÐ¼ Ð°Ð¼\nĠÐ²Ð· ÑıÑĤÑĮ\nĠch áº¡m\nØ¬ Ø³Ùħ\nØŃÙħ Ø§Ø³\nà¹Ģà¸¥ à¹Īà¸¡\nà¸ŀà¸´ à¸©\n×Ķ×¤ ×Ľ×ķ\nà¸Ĭà¹Īà¸Ńà¸ĩ à¸Ĺà¸²à¸ĩ\nĠÐ² ÐµÐº\nĠÐ²ÐµÐº Ð°\nÆ¡ Ìģ\nÆ¡Ìģ i\nĠTi á»ģn\nĠtr áº§m\nÐ¼Ñĭ ÑĪ\nÐ¼ÑĭÑĪ Ð»\nĠÑĤ Ñĥ\nĠÑĤÑĥ ÑĢÐ¸ÑģÑĤ\nĠch c\nĠchc Äħ\nĠÐ°Ð² Ð³\nĠÐ°Ð²Ð³ ÑĥÑģÑĤ\nĠÐ°Ð²Ð³ÑĥÑģÑĤ Ð°\n×¡ ×Ĳ×ķ×ª\nĠ×¨ ×Ĵ×ľ\nà¸ľà¸¥ à¸ģà¸£à¸°à¸Ĺ\nà¸ľà¸¥à¸ģà¸£à¸°à¸Ĺ à¸ļ\nå¤īãĤı ãĤĭ\nĠ×Ķ×Ĳ×Ĺ×¨ ×ķ×ł×Ļ×Ŀ\nØ³Ùģ ÙĬØ±\nĠÑĩÐ° ÑīÐµ\nãģĦ ãĤī\nãģĦãĤī ãģ£\nãģĦãĤīãģ£ ãģĹãĤĥ\n×ķ×ŀ ×ł×Ļ×Ŀ\nĠart tÄ±r\nĠCh á»ĭ\nĠì¡° ì§ģ\nĠÑĥÑģÐ¿ ÐµÑħ\nĠ×¢ ×ķ×¡\nĠ×¢×ķ×¡ ×§\nĠìĥĿ ëªħ\nÑĨ Ð¸ÑĤ\nĠreg iÃ³n\nÐŀ ÐĿ\nĠdoÄŁ um\nĠyaÅŁ ad\nĠyaÅŁad Ä±ÄŁÄ±\nà¸Ĺà¸Ķ à¸¥à¸Ńà¸ĩ\nĠgÃ¶z Ã¼\n×© ×Ļ×¨×Ķ\nÐ´ÑĥÐ¼ Ð°Ð»\nĠda ÄŁÄ±\nĠdaÄŁÄ± t\nà¸Ĺà¸µà¸¡ à¸ĩà¸²à¸Ļ\nĠti á»ģm\nĠØ§ÙĦÙĥ Ø¨Ø±\nĠØ§ÙĦÙĥØ¨Ø± Ùī\nì¹ Ń\nĠGÃ¼ nc\nĠGÃ¼nc elle\nĠGÃ¼ncelle me\nê¹ Ĭ\nĠÐ¾Ð±Ð¾ÑĢÑĥÐ´ Ð¾Ð²Ð°Ð½Ð¸Ðµ\nĠÑĢÐµÑĪ Ð°\ná» ¤\nĠÐ¿ Ð¸ÑĤ\nĠÐ¿Ð¸ÑĤ Ð°Ð½Ð¸Ñı\nà¹Ģà¸£à¸µà¸¢ à¸ļ\n×Ľ×ª ×Ļ×ĳ×Ķ\nĠÐ¿ Ð¾Ð½\nĠÐ¿Ð¾Ð½ ÑĢÐ°Ð²\nĠÐ¿Ð¾Ð½ÑĢÐ°Ð² Ð¸\nĠ×Ķ ×ķ×ľ×ĵ\nĠ×Ķ×ķ×ľ×ĵ ×ª\nĠê² ģ\nĠê²ģ ëĭĪëĭ¤\nĠÐ¿ÐµÑĢÐ² Ð¾Ð¹\nãĥ©ãĤ¤ ãĥķ\nĠÅŁi ir\nkr ÄĻ\nkrÄĻ c\nĠthi á»ĥu\nà¹Ģà¸¥à¸¢ à¸Ĺà¸µ\nà¹Ģà¸¥à¸¢à¸Ĺà¸µ à¹Ģà¸Ķà¸µà¸¢à¸§\n×ĺ×¢ ×ł×ķ×ª\nØ§Ø¦ ÙĩÙħ\nĠ×Ĳ ×¡×ķ×¨\nĠÐ¿Ð»Ð°ÑĤ ÐµÐ¶\nØªØ± Ø¯Ø¯\nĠmoÅ¼li we\nĠkh á»Ľ\nĠkhá»Ľ p\nØªÙģØ§Ø¹ ÙĦ\nĠÑĪ ÐºÐ¾Ð»ÑĮ\nĠÑĪÐºÐ¾Ð»ÑĮ Ð½\nĠÙĤ ØµØ©\nĠmÃ©t ier\nnÄĻ ÅĤa\nà¸«à¸¥ à¹Īà¸Ń\nĠ á»§ng\nĠprz egl\nĠprzegl Äħd\nĠØ§ÙĦÙħ ØªØ¹ÙĦ\nĠØ§ÙĦÙħØªØ¹ÙĦ ÙĤØ©\nĠÑģÑĭ Ð½\nĠÐ² Ð¾Ð»Ð½\nãĥĩ ãĥ¼ãĥĪ\nĠÐŃ ÑĤÐ¸\nĠÐº ÑĢÐ¾Ð¼Ðµ\nà¸Ħ à¸²à¸£à¹Į\n×ł×§ ×ķ×ĵ×Ķ\nĠ×ľ×©×ŀ ×ķ×¢\nĠ×ĸ ×ķ×Ľ×¨\nï¼ §\nÙĬ ÙİØ§\nĠgi á»ıi\nåĥį ãģı\nĠÑģ Ð½Ð¸\nĠÑģÐ½Ð¸ Ð¶ÐµÐ½\nà¹ģà¸Ķ à¸Ķ\nà¸£à¸¸ à¸Ļ\nà¸£à¸¸à¸Ļ à¹ģà¸£à¸ĩ\nĠhi á»ĩp\nograf ÃŃa\nà¹Ģà¸Ī à¸Ńà¸£à¹Į\nĠÐ´Ð² Ð¸Ð³\nĠÐ´Ð²Ð¸Ð³ Ð°ÑĤ\nĠÐ´Ð²Ð¸Ð³Ð°ÑĤ ÐµÐ»\nĠÃ¼ y\nĠÃ¼y eler\nĠÃ¼yeler i\nĠÐ± ÑĥÐº\nĠÐ±ÑĥÐº Ð²\nãĤĤ å¤ļãģı\nĠthi á»ĩt\nĠPa ÃŃs\nĠØ· Ø¨ÙĬØ¹ÙĬ\nà¹ģà¸Ī à¸ģ\nĠØ§ÙĦØµ ØŃÙĬØŃ\nĠapp rÃ©\nĠapprÃ© ci\nĠdecis iÃ³n\nĠë°ĺ ëĵľ\nĠë°ĺëĵľ ìĭľ\nĠÑĤÐµÐ± Ðµ\nãĤ· ãĥ¼ãĤº\nãĤ·ãĥ¼ãĤº ãĥ³\nĠÐ´ Ð°Ð»ÑĮÐ½\nĠìĬ ¤\nĠìĬ¤ ìĬ¤\nĠìĬ¤ìĬ¤ ë¡ľ\nĠTh á»ĥ\nĠkar ÅŁ\nĠkarÅŁ Ä±s\nĠkarÅŁÄ±s Ä±nda\nĠK Ã¶n\nĠKÃ¶n ig\nÐ¸Ð² Ð°Ð½Ð¸Ðµ\n×ĳ ×ķ×¦×¢\nÐ³ Ð»Ð°Ñģ\nĠtw Ã³\nĠtwÃ³ rc\nà¸Ľà¸ģ à¸Ħà¸£\nà¸Ľà¸ģà¸Ħà¸£ à¸Ńà¸ĩ\nĠG ÅĤ\nĠGÅĤ Ã³wn\nĠUnter stÃ¼t\nĠUnterstÃ¼t zung\nĠÐ´ ÑĥÑħ\nĠÐ´ÑĥÑħ Ð¾Ð²\nØ£ ÙħØ§ÙĨ\n×Ĺ×© ×©\nØª Ø¸\nØªØ¸ Ø§ÙĩØ±\nĠÐ»ÑİÐ± Ð¾Ð¼\nà¸ķ à¸²à¸£\nà¸ķà¸²à¸£ à¸²à¸ĩ\nĠkr Ã³l\nØ£ ØŃØ¯Ø«\nì¡Į ëĭ¤\nÐļ ÑĥÑĢÑģ\nãĥĥ ãĥĦ\n×ŀ×§ ×ķ×ĳ×ľ\nĠÑģÐ¸Ð¼Ð² Ð¾Ð»\nĠdÃ©s orm\nĠdÃ©sorm ais\nw Ã¼ns\nwÃ¼ns che\nÑĥ Ð½Ð¸\nÑĥÐ½Ð¸ ÑĨÐ¸Ð¿\nÑĥÐ½Ð¸ÑĨÐ¸Ð¿ Ð°Ð»ÑĮÐ½\nà¸«à¸¥à¸±à¸ģ à¸ªà¸¹à¸ķà¸£\nÙĨØª Ø´Ø±\nĠÐ° Ð»\nĠÐ°Ð» Ðº\nĠÐ°Ð»Ðº Ð¾Ð³\nĠÐ°Ð»ÐºÐ¾Ð³ Ð¾Ð»\nĠÑĥ ÑĩÐ¸ÑĤÑĭÐ²Ð°\nà¸ģà¸³ à¸ģà¸±à¸ļ\nĠ×ľ ×¤×¢×ķ×ľ\nĠìĹ° ê²°\ns Äħd\nĠØ§ÙĦØ£ ÙĬ\nĠØ§ÙĦØ£ÙĬ Ø§Ùħ\nØºÙĬ Ø§Ø¨\nĠÐ½Ð° ÑĢ\nĠÐ½Ð°ÑĢ ÐºÐ¾\n×ŀ×ķ×ĵ ×¢\nĠÑģÐµÑĢ Ð¸Ð¸\nÐ¿Ð¸Ñģ ÑĭÐ²Ð°\nà¸ªà¸´ à¸§\nç¶ļ ãģĦãģ¦\nçĶ³ãģĹ è¾¼ãģ¿\nĠ×ľ ×Ĵ×¨\nĠ×ľ×Ĵ×¨ ×ķ×Ŀ\nĠÐ´ ÐµÐ¼\nĠÐ´ÐµÐ¼ Ð¾\nĠë³´ ëĤ´\nØªÙĩ Ø¯ÙĬØ¯\nĠÙħØ´ ÙĬØ±Ø§\nĠdu y\nĠduy á»ĩt\nĠwiÄĻks ze\nÙħØ¹ Ø§ÙĬ\nÙħØ¹Ø§ÙĬ ÙĬØ±\nĠG da\nĠGda ÅĦsk\nĠr ah\nĠrah ats\nĠrahats Ä±z\n×¨ ×ķ×¦×Ķ\nl Ã¶s\nlÃ¶s ung\nĠÐ¢Ð°Ðº Ð¸Ð¼\nÑĪ ÐµÐ´\nÑĪÐµÐ´ ÑĪ\nØ¹ Ø²ÙĦ\nĠ×¨×© ×Ļ×ŀ×ª\nĠ×ľ×Ķ ×Ļ×Ľ\nĠ×ľ×Ķ×Ļ×Ľ ×ł×¡\nĠÐ¿ ÑĥÑĤ\nĠÐ¿ÑĥÑĤ ÐµÑĪ\nĠÐ¿ÑĥÑĤÐµÑĪ ÐµÑģÑĤÐ²\nĠnot ÃŃcia\nĠal Ä±ÅŁ\nĠalÄ±ÅŁ ver\nĠalÄ±ÅŁver iÅŁ\nĠwÅĤ os\nĠwÅĤos Ã³w\nĠØ¨ Øº\nĠØ¨Øº Ø¯Ø§Ø¯\nĠver Ã¶ffent\nĠverÃ¶ffent licht\nĠKh Ã¡\nĠt Ã¡n\nëĲĺ ê¸°\nĠë°© ë¬¸\nÙģ ÙĬÙĦ\nà¹Ģà¸ģà¸´à¸Ķ à¸Īà¸²à¸ģ\nåı¯ æĦĽ\nåı¯æĦĽ ãģĦ\nà¸ĸ à¸¸à¸ĩ\nĠz ewnÄĻtrzn\nà¸łà¸²à¸©à¸² à¸Ńà¸±à¸ĩà¸ģà¸¤à¸©\nĠmÃ¡ xima\nĠul us\nĠulus lararasÄ±\nĠ×ł×Ķ ×ł\nà¸Ĥà¹Īà¸²à¸§ à¸ªà¸²à¸£\nĠìĿĺ ìĤ¬\nà¹Ģà¸«à¸¥ à¸·à¸Ńà¸ĩ\nĠØ¯ ÙĤ\nĠØ¯ÙĤ Ø§Ø¦ÙĤ\nà¸ªà¸·à¹Īà¸Ń à¸ªà¸²à¸£\në¨ ¼\nĠÑģÐ¾ÑģÑĤÐ¾Ñı Ð½Ð¸Ð¸\nà¸ªà¸¡à¸² à¸Ħà¸¡\ná» Ĥ\nĠÐľÐ¾Ñģ ÐºÐ¾Ð²\nĠÐľÐ¾ÑģÐºÐ¾Ð² ÑģÐº\n×ŀ×¡ ×ķ×Ĵ×ľ\nãģĭ ãģĭãĤĬ\nĠTr uyá»ģn\nà¹ģà¸Ĥà¹ĩà¸ĩ à¹ģà¸£à¸ĩ\n×ŀ×Ĺ ×ĸ×Ļ×§\nà¹Ĥà¸ģ à¹ī\nÙĬØ³ Ø±\nìĶ ©\n×Ĳ ×ķ×§\n×Ĳ×ķ×§ ×ĺ\n×Ĳ×ķ×§×ĺ ×ķ×ĳ×¨\nĠprox imitÃ©\nÙħÙĨ ÙĩØ¬\nĠØ§ÙĦØ¬ Ø²\nĠØ§ÙĦØ¬Ø² Ø§Ø¦\nĠØ§ÙĦØ¬Ø²Ø§Ø¦ Ø±ÙĬ\nĠÄĲi á»ĥm\nĠÐ´ÐµÐ½ ÐµÐ¶\nĠÐ´ÐµÐ½ÐµÐ¶ Ð½\nÙģØŃ Øµ\nÙģ Ø¦\nĠÐĳ ÑĥÐ´\n×Ĵ×Ļ×ĵ ×ķ×ľ\nĠÐĴ ÐµÐ´ÑĮ\nØ¹ÙĦ Ø§ÙħØ©\nĠ×Ĳ×Ĺ×¨ ×ķ×ł×ķ×ª\nãģĦãģŁãģł ãģĦãģ¦\nØ³ÙĦ ØŃ\nØŃ ÙĦÙħ\nØ² ÙĪØ§Ø±\nÙĥ Ø³Ø±\n×ĺ ×§×¡\nĠÐ± Ð°Ð½\nĠÐ±Ð°Ð½ ÐºÐ¾Ð²\nĠÐ¿ÑĢ Ð¾Ð¶\nĠÐ¿ÑĢÐ¾Ð¶ Ð¸Ð²Ð°\nli wo\nliwo ÅĽci\nĠTi áº¿p\nĠØ§ÙĦÙħÙĨ Ø§Ø³Ø¨\nĠØ§ÙĦØ® ÙĬØ§Ø±\nãģĬ ãģĭ\nãģĬãģĭ ãģĴ\nà¸Ķà¸Ńà¸ģ à¹Ħà¸¡à¹ī\nÃ¤ mp\nÃ¤mp fe\nà¸ķà¸±à¹īà¸ĩ à¹ĥà¸Ī\nĠÐ·Ð° ÑīÐ¸ÑĤ\nĠÐ·Ð°ÑīÐ¸ÑĤ Ñĭ\nĠTh Æ°á»Ŀng\nĠØµ Ùģ\nĠØµÙģ ØŃØ©\n×Ĺ×ķ×¨ ×£\nãĥĲ ãĥĥãĤ°\nĠ×ĵ ×Ļ×Ĵ\nĠ×ĵ×Ļ×Ĵ ×Ļ×ĺ\nĠ×ĵ×Ļ×Ĵ×Ļ×ĺ ×ľ×Ļ\nĠ×Ķ×Ĺ ×ķ×ľ×Ļ×Ŀ\nÐ² ÐµÑī\nÐ²ÐµÑī Ð°\nĠÐº ÑĥÐ»ÑĮÑĤ\nĠÐºÑĥÐ»ÑĮÑĤ Ñĥ\nĠÐºÑĥÐ»ÑĮÑĤÑĥ ÑĢÑĭ\nĠØ§ÙĦØ§ÙĨ ØªØ±ÙĨØª\nĠhÃ¶ ch\nĠhÃ¶ch st\nĠíĺ ķ\nĠíĺķ íĥľ\nĠÐ² Ð¾Ð¹\nĠÐ²Ð¾Ð¹ Ð½Ñĭ\nÐĽ Ðŀ\nìĭł ìļ©\nĠ×ŀ×ĳ ×ķ×¡\nĠ×ŀ×ĳ×ķ×¡ ×¡\n×ŀ×ł ×Ļ×¢\nĠfiyat Ä±\nĠÑģÐ» ÑĥÐ¶\nĠÑģÐ»ÑĥÐ¶ Ð±Ñĭ\nà¸Ĺà¸± à¸¨\nà¸Ĺà¸±à¸¨ à¸Ļ\nãģĵãģ¨ãģĮ å¤ļãģĦ\nĠ×Ķ×ŀ×© ×ª\nĠ×Ķ×ŀ×©×ª ×ŀ×©\nå¯Ħ ãģĽ\n×ŀ×©×ľ ×ķ×Ĺ\næĻĤ çĤ¹\næĻĤçĤ¹ ãģ§\nà¸ŀà¸£ à¸µ\nà¸ŀà¸£à¸µ à¹Ģà¸¡à¸µà¸¢\nà¸ŀà¸£à¸µà¹Ģà¸¡à¸µà¸¢ à¸£à¹Į\nà¸ŀà¸£à¸µà¹Ģà¸¡à¸µà¸¢à¸£à¹Į à¸¥à¸µà¸ģ\nĠdiffic olt\nĠdifficolt Ãł\nãĥ¬ ãĤ¹ãĥĪ\nãĥ¬ãĤ¹ãĥĪ ãĥ©ãĥ³\nà¸ªà¸¡ à¹Ģà¸Ķà¹ĩ\nà¸ªà¸¡à¹Ģà¸Ķà¹ĩ à¸Ī\nĠÐ¶ Ð¸Ð´\nĠÐ¶Ð¸Ð´ Ðº\nĠzu peÅĤ\nĠzupeÅĤ nie\nĠÙħ Ø¬Ø±\nĠÙħØ¬Ø± Ø¯\nãģĮ å§ĭ\nãģĮå§ĭ ãģ¾\nãĤŃãĥ£ ãĥ©\nĠ×Ĳ ×ķ×ķ×Ļ×¨\nãģĬ äºĴ\nãģĬäºĴ ãģĦ\nĠpot rÃł\nĠPa ÅĦst\nĠPaÅĦst wo\nĠØ¨ ÙĬØ§ÙĨ\nĠØ¨ÙĬØ§ÙĨ Ø§Øª\nĠÐ¸Ð½ Ð¾Ð³Ð´Ð°\nĠÑĢ Ð°\nĠÑĢÐ° ÑģÑĤÐ²\nĠÑĢÐ°ÑģÑĤÐ² Ð¾ÑĢ\nĠ×ĸ ×ŀ×ł\nà¸¢à¸´ à¹īà¸¡\nÄ Ĩ\nãģ¾ ãģķ\nãģ¾ãģķ ãģ«\nãĥķãĤ¡ ãĤ¤ãĥ«\nĠgÃ¶rd Ã¼ÄŁÃ¼\nà¸ªà¸ĩ à¸Ħà¸£\nà¸ªà¸ĩà¸Ħà¸£ à¸²à¸¡\nĠArk adaÅŁ\nĠrozwiÄħz ania\n×ŀ ×ķ×ĺ\npi ÄĻ\npiÄĻ t\nØµ ØºØ±\nà¸ª à¸¢\nà¸ªà¸¢ à¸²à¸¡\nãĤĨ ãģ£ãģıãĤĬ\nĠtr áº§n\nĠeconom ÃŃa\nĠgeh Ã¶ren\nãĤ·ãĥ§ ãĥ¼\nĠsÅĤ ucha\nà¸ŀà¸Ń à¹ĥà¸Ī\nĠÐ¾ÑĤÐ¼ÐµÑĤ Ð¸Ð»\nÙĨØª ÙĤÙĦ\nĠprop Ã³sito\nĠÐ²Ð°ÑĪ ÐµÐ³Ð¾\nĠnh áº¯n\nà¹ģà¸ĸ à¸§\nĠÐºÐ¾Ð¼ Ð¸Ñģ\nĠÐºÐ¾Ð¼Ð¸Ñģ ÑģÐ¸\nwaÅ¼ nie\nĠy avaÅŁ\n×ŀ ×Ļ×§\n×ŀ×Ļ×§ ×ķ×Ŀ\n×©×Ĳ×ľ ×ª\nĠyÄ±ll arda\nĠÐ ®\nĠÐ® ÑĢ\n×ł×¡ ×Ļ×ĳ×ķ×ª\n×ª ×¦\n×ª×¦ ×ķ×Ĵ\nĠÐ¾Ð´ Ð½Ñĥ\nĠ à¸Ńà¸¢à¹Īà¸²à¸ĩà¹Ħà¸£\nĠà¸Ńà¸¢à¹Īà¸²à¸ĩà¹Ħà¸£ à¸ģà¹ĩà¸ķà¸²à¸¡\nëģ ¼\nà¹Ħà¸¥ à¹Ī\nØªØ³ ÙĦÙĬÙħ\nØ¨ÙĦ Ø§Øº\nĠì ī\nĠìī ½\nĠìī½ ê²Į\nãĥļ ãĥ³\nÐ·Ð² ÑĥÑĩ\nĠW Ã¤h\nĠWÃ¤h rend\nĠ×Ļ ×Ļ×ª\nĠ×Ļ×Ļ×ª ×Ľ×Ł\nĠkh uyÃªn\nĠv áº½\nĠÐ° Ð¼ÐµÑĢ\nĠÐ°Ð¼ÐµÑĢ Ð¸Ðº\nĠÐ°Ð¼ÐµÑĢÐ¸Ðº Ð°Ð½\nĠÐ°Ð¼ÐµÑĢÐ¸ÐºÐ°Ð½ ÑģÐº\nØ¹ Ø¬Ø¨\nãĥĽãĥ¼ãĥł ãĥļãĥ¼ãĤ¸\nĠÐ½Ð¸Ðº ÑĤÐ¾\nĠÙĤ Ùİ\nĠÙĤÙİ Ø§ÙĦ\nĠÙĤÙİØ§ÙĦ Ùİ\nÐĲ ÐĹ\nÙħ Ø¬ÙħÙĪØ¹\nÙħØ¬ÙħÙĪØ¹ Ø§Øª\nĠnecess itÃł\nĠpob li\nĠpobli Å¼u\nĠph áº¥n\nĠÐ¡Ð¾ Ð¾Ð±Ñī\nÙħÙĤ Ø§Ø·\nÙħÙĤØ§Ø· Ø¹\nĠ×Ķ×¦ ×ķ×¨×ļ\nla ÅŁtÄ±rma\nà¸§ à¸´à¸Ķ\nà¸§à¸´à¸Ķ à¸µ\nà¸§à¸´à¸Ķà¸µ à¹Ĥà¸Ń\nĠê·¸ë¦¬ ìĬ¤\nĠê·¸ë¦¬ìĬ¤ ëıĦ\nãĤ¿ãĤ¤ ãĥŁ\nãĤ¿ãĤ¤ãĥŁ ãĥ³ãĤ°\n×§×ĺ ×Ĵ×ķ×¨\n×§×ĺ×Ĵ×ķ×¨ ×Ļ×Ķ\nĠ×Ĺ ×ķ×¤\nĠ×Ĺ×ķ×¤ ×©×Ļ\nØ£ Ø¬Ø±\nĠÐ¸Ð¼ ÐµÐ½Ð¸\nĠÑĢÐ°Ð½ ÐµÐµ\nà¹Ģà¸ŀà¸·à¹Īà¸Ńà¸Ļ à¹Ĩ\nĠJes Ãºs\nÑģÐ¾ ÐµÐ´Ð¸Ð½\nÑģÐ¾ÐµÐ´Ð¸Ð½ ÐµÐ½\nĠ×¨ ×Ĺ×ķ×§\nà¹Ĥà¸ļ à¸£à¸²\nà¹Ĥà¸ļà¸£à¸² à¸ĵ\nĠH Æ¡n\nĠth áºŃp\nØªØ¹ ÙĬÙĬÙĨ\nĠtart Ä±ÅŁ\nĠtartÄ±ÅŁ ma\nĠGes pr\nĠGespr Ã¤ch\n×ª×¨ ×ķ×¤\n×ª×¨×ķ×¤ ×ķ×ª\nĠcat Ã©gorie\nĠÐ¾ÐºÐ°Ð· ÑĭÐ²Ð°\nĠÐ½Ð°Ð»Ð¸Ñĩ Ð¸Ðµ\nĠprÃ©sent Ã©\nĠk ull\nĠkull and\nĠkulland Ä±\nĠÃ¼ nl\nĠÃ¼nl Ã¼\nĠÙģ ÙĥØ±Ø©\nÐ¸Ð· Ð°ÑĤÐ¾ÑĢ\n×Ĳ ×ķ×ł\n×Ĳ×ķ×ł ×Ļ×ĳ\n×Ĳ×ķ×ł×Ļ×ĳ ×¨×¡\n×Ĳ×ķ×ł×Ļ×ĳ×¨×¡ ×Ļ×ĺ×ª\nĠÑĢÐ°ÑģÑģ Ð¼Ð°ÑĤ\nĠÑĢÐ°ÑģÑģÐ¼Ð°ÑĤ ÑĢ\nĠÑĢÐ°ÑģÑģÐ¼Ð°ÑĤÑĢ Ð¸Ð²Ð°\nØªÙĥÙĦ Ùħ\nÙĥØª Ø±ÙĪ\nÙĥØªØ±ÙĪ ÙĨÙĬ\nĠÑģÐ¾ ÑĩÐµÑĤ\nĠÑģÐ¾ÑĩÐµÑĤ Ð°\nãĤĴè¦ĭ ãģĽ\nĠng á»«a\nĠÐł ÐµÑģÐ¿\nĠÐłÐµÑģÐ¿ ÑĥÐ±\nĠÐłÐµÑģÐ¿ÑĥÐ± Ð»Ð¸Ðº\nãĤ¦ ãĤ©\nãĤ¦ãĤ© ãĥ¼\nĠÐľ ÐµÐ¶Ð´Ñĥ\nĠìŀĪ ê²Į\nĠm Ã¢\nĠìļĶ ì²Ń\nØ¶ Ø§Ø±\nà¸¥à¸¸ à¹īà¸Ļ\nëĮĢ íķĻêµĲ\n×ĸ ×Ļ×Ľ\n×ĸ×Ļ×Ľ ×¨×ķ×Ł\nãĤ¹ ãĥļ\nãĤ¹ãĥļ ãĥ¼ãĤ¹\nĠÐºÑĢÐ°Ñģ Ð¾ÑĤ\nï¼ ¨\nê¼ Ń\nãĤĴ éĽĨ\nãĤĴéĽĨ ãĤģ\në° Ŀ\nĠ×Ķ×ł ×Ĳ\nĠ×Ķ×ł×Ĳ ×©×Ŀ\nĠê°Ģ ìļ´\nĠê°Ģìļ´ ëį°\nØªÙĥÙĦ ÙģØ©\nĠØŃ ÙĤÙĬÙĤÙĬ\nĠh alk\nĠhalk Ä±n\nÑİÑī ÑĥÑİ\nĠÑģÐ¿ Ð¸Ð½\n×¡×¨×ĺ ×Ł\nĠÐ¿ÐµÑĢÐ² Ð¾Ð³Ð¾\nĠÐ¿Ð¾Ð» Ð¾Ð¶\nĠÐ¿Ð¾Ð»Ð¾Ð¶ Ð¸ÑĤÐµÐ»ÑĮÐ½\nĠÐ´ Ð»\nĠÐ´Ð» Ð¸ÑĤÐµÐ»ÑĮÐ½\nĠV Ä©nh\nê´ ´\nĠÑģÑĭ ÑĢ\nĠíĨµ íķĺìĹ¬\në³ĳ ìĽĲ\nà¹Ĥà¸£à¸ĩ à¸ĩà¸²à¸Ļ\nà¸£à¸±à¸ļ à¸ľà¸´à¸Ķ\nà¸£à¸±à¸ļà¸ľà¸´à¸Ķ à¸Ĭà¸Ńà¸ļ\nØªØ¬ ÙĨØ¨\ns ÅĤ\nsÅĤ uch\nãĤ¢ãĥ« ãĥĲ\nãĤ¢ãĥ«ãĥĲ ãĥł\nëī´ ìĬ¤\nĠpat iÃ«\nĠpatiÃ« nt\nĠìĺ ¤í\nĠìĺ¤í ŀ\nĠìĺ¤íŀ Ī\nĠìĺ¤íŀĪ ëł¤\nĠDer ne\nĠDerne ÄŁi\nwrÃ³ ci\nwrÃ³ci Äĩ\nĠÐ¾Ð± Ñī\nĠÐ¾Ð±Ñī ÐµÑģÑĤÐ²\nĠÐ¾Ð±ÑīÐµÑģÑĤÐ² ÐµÐ½Ð½Ð¾\nĠêµĲ ìĪĺ\ntÄ±ÄŁ Ä±mÄ±z\nĠ×Ķ×ŀ×© ×Ļ×ĳ\nk Ã¶rper\nĠÐ¿Ð¾Ð·Ð² Ð¾Ð»\nĠÐ¿Ð¾Ð·Ð²Ð¾Ð» Ð¸ÑĤ\nĠChi áº¿n\nØ£Ø® ÙĪ\nĠAy dÄ±n\nà¸Ķà¹īà¸²à¸Ļ à¸¥\nà¸Ķà¹īà¸²à¸Ļà¸¥ à¹Īà¸²à¸ĩ\nĠdr u\nĠdru Å¼\nĠdruÅ¼ yn\nĠë°ľ íĳľ\nĠTh áº£o\nØ¬Ùĩ Ø§Ø¯\nà¸ģà¸£à¸°à¸Ĺ à¸¹à¹ī\nĠÐº ÑĢÐ¾Ð²\nĠÐºÑĢÐ¾Ð² Ð¸\nĠiÃ§er ik\nĠnad zie\nĠnadzie jÄĻ\nĠÐ¡ Ð¼Ð¾ÑĤÑĢ\nĠph á»©c\nØ¬ ØªÙħØ§Ø¹\nØ¬ØªÙħØ§Ø¹ ÙĬØ©\nÐºÐ¾Ð¼ Ð¿Ð¾Ð½\nÐºÐ¾Ð¼Ð¿Ð¾Ð½ ÐµÐ½ÑĤ\nĠÐ± Ð¸Ð»\nĠÐ±Ð¸Ð» ÐµÑĤ\nãĥĲ ãĥ³ãĥī\nĠPol ÃŃcia\nØ§ÙĦ ØªÙĩ\nØ§ÙĦØªÙĩ Ø§Ø¨\nØŃØ± Ùģ\nØª Ø®Ø·\nØªØ®Ø· ÙĬØ·\nãĤ³ ãĥ¼ãĥ\nãĤ³ãĥ¼ãĥ Ĵ\nãĤ³ãĥ¼ãĥĴ ãĥ¼\nï½¥ï½¥ ï½¥\nà¸ĭ à¸Ńà¸¢\nĠcrÃ©d it\nè²· ãģ£ãģŁ\nĠÐ¿Ð¾ÑĢ ÑıÐ´\nĠÐ¿Ð¾ÑĢÑıÐ´ ÐºÐµ\nĠph Ã³\nĠw ida\nĠwida Äĩ\nØ¬Ø± Ø§Ø¦Ùħ\nà¸ľ à¸µ\nĠbÄĻd ÄĻ\nĠ×ŀ ×¤×ª×Ĺ\nãĥĳ ãĥ¼ãĥ\nãĥĳãĥ¼ãĥ Ĩ\nãĥĳãĥ¼ãĥĨ ãĤ£\nãĥĳãĥ¼ãĥĨãĤ£ ãĥ¼\nĠKa Å¼\nĠKaÅ¼ dy\nĠÐ½ÐµÐ¾Ð±ÑħÐ¾Ð´Ð¸Ð¼ Ð¾ÑģÑĤÐ¸\nà¸Ł à¸Ńà¸£à¹Į\nà¸Łà¸Ńà¸£à¹Į à¸¡\nĠÐ¼Ð°Ð» ÑĭÑĪ\nĠÐ¿Ð» Ð¾ÑĤ\nĠÑĥ ÑģÑĤÑĢÐ¾Ð¹\nĠÑĥÑģÑĤÑĢÐ¾Ð¹ ÑģÑĤÐ²Ð°\nà¸ĸ à¸Ńà¸Ļ\nĠoluÅŁtur ul\nĠÅĽwi ad\nĠÅĽwiad om\nÙħØ¹ ÙĩØ¯\nĠÐ¿ÑĢÐ¾Ð¸Ð· Ð²ÐµÐ´ÐµÐ½\nÆ ł\n×¨ ×Ļ×©\nÙħØ³Øª Ø«\nÙħØ³ØªØ« ÙħØ±\n×ł×Ļ ×Ļ×¨\npa Ã±\nĠ; -)\nĠë°ľ ê²¬\nĠgÃ¶r Ã¼yor\nÙħØ¤ ÙĦÙģ\nĠÄĲ á»ģ\nĠØ§ÙĦÙĨ ÙĪØ§Ø¨\n×Ĺ×§ ×Ļ×¨×Ķ\nĠm á»ıi\nè¿° ãģ¹\nÐĿ Ð¸Ðº\nìŀĸ ìķĦ\nìŀĸìķĦ ìļĶ\nprowadzi ÅĤ\nl Ã³g\nlÃ³g ica\n×¤×¡ ×ĺ\n×¤×¡×ĺ ×Ļ×ĳ×ľ\nĠ×ŀ ×ĵ×Ķ\nĠ×ŀ×ĵ×Ķ ×Ļ×Ŀ\nãģĵãģĵ ãģ¾ãģ§\n×Ķ ×ª×Ĺ\n×Ķ×ª×Ĺ ×ľ×Ķ\nĠ×¤ ×ķ×¡\nĠ×¤×ķ×¡ ×ĺ×Ļ×Ŀ\nĠÐ½ ÐµÐ²\nĠÐ½ÐµÐ² Ð¾Ð·\nĠÐ½ÐµÐ²Ð¾Ð· Ð¼Ð¾Ð¶Ð½Ð¾\nĠdostÄĻp ny\nĠØº Ø§ÙĦ\nĠØºØ§ÙĦ Ø¨\nĠbez pieczeÅĦst\nĠbezpieczeÅĦst wa\nåĪĨ ãģĭãĤĭ\nĠF Ã¼hrung\nà¸ģ à¸µà¹ī\ngem Ã¤ÃŁ\nà¸Ĭà¹Īà¸§à¸ĩ à¹Ģà¸§à¸¥à¸²\nĠìļ°ë¦¬ ëĤĺ\nĠìļ°ë¦¬ëĤĺ ëĿ¼\nãģ¥ ãģıãĤĬ\nĠØ§ÙĦÙħ Ø³ÙĦ\nĠØ§ÙĦÙħØ³ÙĦ ØŃØ©\nĠlibert Ã©\nÐºÐ»ÑİÑĩ ÐµÐ½Ð¸Ðµ\nĠzam Ã³w\nĠzamÃ³w ienia\nà¸£à¸ĸ à¹Ħà¸Ł\nØ£ ÙģÙĦ\nØ£ÙģÙĦ Ø§Ùħ\nÙħ Ø±Ø§Ø¬\nÙħØ±Ø§Ø¬ Ø¹Ø©\nĠë¹Ħ êµĲ\nĠØ§ÙĦØª Ø§Ø¨\nĠØ§ÙĦØªØ§Ø¨ Ø¹Ø©\nĠë§Į ëĤĺ\nĠÐ± ÑĥÐ¼\nĠÐ±ÑĥÐ¼ Ð°Ð³\nĠgÃ© nero\nĠìŀĺ ëª»\n×ŀ ×¤×ķ×¨×ĺ\nè²·ãģĦ çī©\nĠÙĦØ¯ÙĬ Ùĥ\nĠ×ľ×¢ ×Ļ×ª\nĠ×ľ×¢×Ļ×ª ×Ļ×Ŀ\nĠsÅĤ ab\nĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð² Ð»Ñı\nãĤ¿ ãĤ¤ãĥĪ\nãĤ¿ãĤ¤ãĥĪ ãĥ«\nÙħ Øµ\nÙħØµ Ø·Ùģ\nÙħØµØ·Ùģ Ùī\nĠdifficult Ã©\nãĥĨãĤ£ ãĥĸ\nĠpew noÅĽci\nĠpewnoÅĽci Äħ\nĠë¬´ ìĬ¨\nØ¥ Ø±Ø³\nØ¥Ø±Ø³ Ø§ÙĦ\nĠÐ´ Ð°Ð»ÑĮ\nĠÐ´Ð°Ð»ÑĮ ÑĪÐµ\nĠ×ľ ×ł×¡\nĠ×ľ×ł×¡ ×ķ×ª\nà¸«à¸¡à¸¹à¹Ī à¸ļà¹īà¸²à¸Ļ\n×ŀ×¡×ŀ ×Ľ×Ļ\nØ£Ø³ÙĦ ÙĪØ¨\nĠzw ÅĤ\nĠzwÅĤ as\nĠzwÅĤas zc\nĠzwÅĤaszc za\nĠÐ¿ÑĢ ÐµÐ¶\nĠÐ¿ÑĢÐµÐ¶ Ð´Ðµ\nĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð· Ð°ÑĨÐ¸Ñı\nĠdÃ¶n emin\nĠdÃ¶nemin de\nĠ á»¦\nĠá»¦ y\nä¸ĭ ãģĴ\nĠÐ¿Ð¾ÑģÐ»ÐµÐ´ Ð½Ð¸Ðµ\nĠgÃ¼ ne\nĠgÃ¼ne ÅŁ\nĠ×Ĳ ×ĸ×¨\nĠ×Ĳ×ĸ×¨ ×Ĺ×Ļ\nãģ§ãģĤ ãĤįãģĨ\nĠÙĨ ÙĤ\nĠÙĨÙĤ Ø§Ø·\næŃ£ ãģĹãģĦ\nĠÑĢ ÐµÐ³\nĠÑĢÐµÐ³ Ð¸Ð¾Ð½Ð°\nĠFÃ¶r der\nê²½ ìĺģ\ndÄ±kl ar\ndÄ±klar Ä±nÄ±\ntrzym aÄĩ\nØ£Ø´ Ùĥ\nØ£Ø´Ùĥ Ø§ÙĦ\n×Ķ×ª ×Ĳ\n×Ķ×ª×Ĳ ×ŀ×Ķ\nà¸Ĺà¸³à¹ĥà¸«à¹ī à¹Ģà¸ģà¸´à¸Ķ\nĠGeb Ã¤\nĠGebÃ¤ ude\nĠÐ¡ÐµÑĢ Ð³\nĠÐ¡ÐµÑĢÐ³ ÐµÐ¹\nĠÐ· Ð´Ð¾ÑĢÐ¾Ð²\nĠÐ·Ð´Ð¾ÑĢÐ¾Ð² ÑĮÑı\nĠr Ã£i\nĠÐ¿ÑĢÐµÐ´ ÑĥÑģ\nĠÐ¿ÑĢÐµÐ´ÑĥÑģ Ð¼Ð¾ÑĤÑĢ\nĠÐ¿ÑĢÐµÐ´ÑĥÑģÐ¼Ð¾ÑĤÑĢ ÐµÐ½\nĠ×Ķ×¦ ×Ļ×ĳ\nĠ×Ķ×¦×Ļ×ĳ ×ķ×¨×Ļ\nĠdÃ©s ir\nĠÐ½ Ð¾Ñĩ\nĠÐ½Ð¾Ñĩ ÑĮ\nmÃ¶glich keiten\nĠ×Ĳ×Ĺ×¨ ×ķ×ł×Ļ×Ŀ\nĠsoir Ã©e\nĠNh áºŃn\nÙ ª\nà¸Ľà¸£à¸°à¸§à¸±à¸ķà¸´ à¸¨à¸²à¸ªà¸ķà¸£à¹Į\nêµĲ íĨµ\nĠØ£ Ø®ÙĬ\nĠdÃ© cid\nĠdÃ©cid Ã©\nĠwy ja\nĠwyja ÅĽni\nĠ à¸ªà¸´\nĠà¸ªà¸´ à¸ĩ\nĠà¸ªà¸´à¸ĩ à¸«à¸²\nĠà¸ªà¸´à¸ĩà¸«à¸² à¸Ħà¸¡\nà¹ģ à¸Ńà¸£à¹Į\nà¸«à¸Ļà¹īà¸² à¸Īà¸Ń\n×¡ ×ª×¨\nĠê ¶\nĠê¶ Į\nĠê¶Į ë¦¬\npl Ã¤tze\nØ¨ Ø·ÙĦ\nê±´ ìĦ¤\nĠ×Ĳ ×Ļ×ŀ×Ļ\nĠ×Ĳ×Ļ×ŀ×Ļ ×Ļ×ľ\nãģ ½\nØªØ± Ø§Ø«\n×Ĳ×ľ ×Ļ×ŀ×ķ×ª\nĠdispon ÃŃveis\nĠz ale\nĠzale Å¼y\nà¸Ľà¸£à¸°à¸Ĭà¸² à¸ªà¸±à¸¡à¸ŀà¸±à¸Ļà¸ĺà¹Į\nĠÅļw iat\nĠpor Ã³wn\nĠporÃ³wn a\nĠ×ľ×ĺ ×ķ×ĳ×ª\n×Ķ×ĸ ×ŀ×ł×Ķ\nĠ×Ľ×ª ×ķ×¦×Ĳ×Ķ\nĠ×ĳ ×§×ľ\nĠ×ĳ×§×ľ ×ķ×ª\nĠÐ¾ÑĤ ÐºÑĢ\nĠÐ¾ÑĤÐºÑĢ ÑĭÐ²Ð°\nãĥĳ ãĥ¯ãĥ¼\në¿Ĳ ë§Į\nĠÐ² ÑģÑı\nĠÐ²ÑģÑı Ðº\nãģ¨ãģª ãģ£ãģ¦ãģĦãĤĭ\nĠgi áºŃn\nĠÐ¾Ðº ÑĢÑĥ\nĠÐ¾ÐºÑĢÑĥ Ð¶Ð°\nĠÐ¾ÐºÑĢÑĥÐ¶Ð° ÑİÑī\nĠUnivers itÃ¤t\nĠÑĢ Ð¾Ð¶\nĠÑĢÐ¾Ð¶ Ð´\nĠÑĢÐ¾Ð¶Ð´ ÐµÐ½Ð¸Ñı\nØ® ÙĬÙĦ\nĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸ Ð¹\nĠÑĢÐ°Ð·Ð»Ð¸Ñĩ Ð½ÑĭÐµ\nĠÐ¦ ÐµÐ½Ð°\n×ł×Ļ ×ķ×ĸ\n×ł×Ļ×ķ×ĸ ×ľ\n×ł×Ļ×ķ×ĸ×ľ ×ĺ×¨\nĠê³µ ê°Ħ\nĠê°ľ ëħĲ\nlandÄ±r ma\nĠÑĥÐ´Ð°Ð» ÐµÐ½\nà¸ŀà¸±à¸ģ à¸ľ\nà¸ŀà¸±à¸ģà¸ľ à¹Īà¸Ńà¸Ļ\nĠprote cciÃ³n\nĠb ÅĤ\nĠbÅĤ ÄĻd\nÃ Ī\nĠíĸī ë³µ\nĠÅŁ Ã¼\nĠÅŁÃ¼ phe\nĠí Ķ\nĠíĶ ¼\nĠíĶ¼ íķ´\nĠëĭ¤ ë¥´\nà¹Ħà¸¡à¹Ī à¹Ģà¸ģà¸´à¸Ļ\nãģ¿ ãģª\nãģ¿ãģª ãģķãĤĵ\nĠÐ¿Ð¾ÑĤ ÑĢÐµÐ±\nĠÐ¿Ð¾ÑĤÑĢÐµÐ± Ð¸ÑĤÐµÐ»\nĠØ§ÙĦÙĥÙĦ Ø§Ùħ\nìķĦ ë²Ħ\nìķĦë²Ħ ì§Ģ\nãĤĴä½¿ ãģ£ãģŁ\nĠbá»¥ i\nĠÐ¿Ð¾ÑĤ ÐµÑĢ\nĠÐ¿Ð¾ÑĤÐµÑĢ Ñı\nĠØ¢ ÙĦØ§Ùģ\nĠÐ½Ð°ÑģÑĤÐ¾ÑıÑī ÐµÐµ\nãģıãģªãĤĬ ãģ¾ãģĹãģŁ\nclus Ã£o\nãĤ³ ãĥĶãĥ¼\n×¦ ×¤×Ļ\n×¦×¤×Ļ ×Ļ×Ķ\nØ® ÙĦØ§\nØ®ÙĦØ§ Øµ\nà¸¥ à¹īà¸³\nãĥ¯ ãĤ¤ãĥ³\nĠà¸¡à¸µ à¸Ļà¸²\nĠà¸¡à¸µà¸Ļà¸² à¸Ħà¸¡\nØ´ Ø®Øµ\nØ´Ø®Øµ ÙĬØ§Øª\nĠ×ĸ ×§\nĠ×ĸ×§ ×ķ×§\n×Ļ ×Ļ×¦\n×Ļ×Ļ×¦ ×Ĵ\nèĢĥãģĪ æĸ¹\nĠÃ¼rÃ¼n Ã¼\nĠÐ¸ÑģÐ¿ Ð¾Ð»\nĠÐ¸ÑģÐ¿Ð¾Ð» Ð½Ð¸\nĠcompaÃ± ero\n×§ ×¦×Ķ\n×ŀ×¢ ×ł×Ļ×§\nÙħ ØŃÙħØ¯\nĠc Ã¡mara\nĠÐ¿ ÐµÐ´\nĠÐ¿ÐµÐ´ Ð°Ð³\nĠÐ¿ÐµÐ´Ð°Ð³ Ð¾Ð³\nÐ¼ Ð°ÑĢ\nÐ¼Ð°ÑĢ Ðº\n×Ķ×ª ×ł×Ĵ×ĵ\nĠìĨĮ ê°ľ\nĠcom unitÃł\nê³ ¤\nĠNg Ãłi\nà¸ªà¸ĩ à¸ļ\nĠmieszkaÅĦ cÃ³w\nĠÙĨ ÙĩØ§Ø¦ÙĬ\niv itÃ©\nĠÐ¸ Ð´Ðµ\nĠÐ¸Ð´Ðµ Ð°Ð»ÑĮÐ½\nĠØ£ Ø³Ø¨ÙĪØ¹\nĠ×Ļ ×¢×ľ\nĠ×ľ ×¨×Ĳ×©\nĠ×ľ×¨×Ĳ×© ×ķ×ł×Ķ\nĠÐ·Ð°Ð¿Ð¸Ñģ Ð¸\nĠÐºÐ¾ÑĢ Ð¿ÑĥÑģ\nà¸§à¸ĩ à¸¨\nà¸§à¸ĩà¸¨ à¹Į\nĠÐĶ Ð¼\nĠÐĶÐ¼ Ð¸ÑĤ\nĠÐĶÐ¼Ð¸ÑĤ ÑĢ\nĠkÃ¶n nt\nĠbÃ¶l ges\nĠbÃ¶lges inde\n×Ľ ×Ļ×Ľ\n×Ľ×Ļ×Ľ ×¨\nĠØ§ÙĦØ¥ Ø«ÙĨ\nĠØ§ÙĦØ¥Ø«ÙĨ ÙĬÙĨ\nĠng á»Ļ\nì¹ ł\nØ¯ Ø±Ø§Ø¬\nĠu da\nĠuda ÅĤo\nìº Ĳ\nØ¨Ø± ÙĨØ§ÙħØ¬\nĠÑģÑĥÐ´ ÐµÐ±\nĠÑģÑĥÐ´ÐµÐ± Ð½\nĠzun Ã¤chst\nĠEduc aciÃ³n\nãģ¨ãģª ãģ£ãģ¦ãģĦãģ¾ãģĻ\nĠ×Ķ×Ĳ ×ŀ×Ļ×ª×Ļ\nĠÄ° nt\nĠÄ°nt ernet\nĠcaÅĤ ego\nãĥĹãĥª ãĥ³\nØ¥ Ø¨Ø¯\nØ¥Ø¨Ø¯ Ø§Ø¹\nĠÐ¿Ð¾ÑĢ ÑĤÐ°Ð»\nà¹Ĥà¸ķ à¹ī\nĠ×Ķ×§ ×©×ķ×¨\nÐ¿Ð» Ð¾Ð´\nĠÙħ Ø¯\nĠÙħØ¯ Ø±ÙĬØ¯\n×ŀ×¡×¢ ×ĵ×Ķ\nĠØ´ÙĬ Ø¦\nĠØ´ÙĬØ¦ Ø§\nà¸ģà¹Īà¸Ń à¸ªà¸£à¹īà¸²à¸ĩ\nĠì°¸ ê³ł\nà¹Ģà¸Ĺ à¸£\nà¹Ģà¸Ĺà¸£ à¸Ķ\nĠ×ĳ×ŀ ×§×¨×Ļ×Ŀ\nĠb Ã¢t\nĠbÃ¢t iment\nåĳ¼ ãģ³\nç´ł æķµ\nç´łæķµ ãģª\nprzedsiÄĻbior st\nprzedsiÄĻbiorst w\nĠ×ł×ª ×ķ×ł×Ļ×Ŀ\n×Ĺ×ľ ×ķ×Ŀ\nà¸£ à¸§à¸¢\nÙħ ÙĪØ¶ÙĪØ¹\nĠÑģÐ¾Ð± ÑĢÐ°Ð½\nÐ²ÐµÐ´ ÑĥÑī\nĠÑĤÐµ Ð°ÑĤ\nĠÑĤÐµÐ°ÑĤ ÑĢ\nm eye\nmeye ceÄŁi\nĠpien iÄħ\nĠpieniÄħ d\nĠpieniÄħd ze\nÑĢÐµÐ· Ð¸Ð´ÐµÐ½ÑĤ\nØŃ ØµØ±\nìĺ ¥\nà¹Ģà¸¢ à¸·à¸Ńà¸Ļ\nĠÑĥ Ð½Ð¸\nĠÑĥÐ½Ð¸ Ð²ÐµÑĢ\nĠÑĥÐ½Ð¸Ð²ÐµÑĢ Ñģ\nĠÑĥÐ½Ð¸Ð²ÐµÑĢÑģ Ð¸ÑĤÐµÑĤ\nĠØ§ÙĦØ± ØŃ\nĠØ§ÙĦØ±ØŃ ÙħÙĨ\nĠÑĤÐµÑħ Ð½Ð¾Ð»Ð¾Ð³\nĠÑĤÐµÑħÐ½Ð¾Ð»Ð¾Ð³ Ð¸Ð¸\nìĹĲ ëĦĪ\nìĹĲëĦĪ ì§Ģ\nĠíķ Ń\nĠíķŃ ìĥģ\nà¸ĺ à¸²\nà¸ĺà¸² à¸ķà¸¸\nĠEspaÃ± ol\n×ĵ×Ĵ ×©\nĠêµ ī\nĠêµī ìŀ¥\nĠêµīìŀ¥ íŀĪ\nĠÅĤ at\nĠÅĤat wo\nĠk á»ĭch\nØ¥ Ø²\nØ¥Ø² Ø§ÙĦØ©\nĠÐ´ÐµÐ¹ÑģÑĤÐ² Ð¸Ðµ\nĠsaÄŁ layan\nà¸ªà¸¸à¸Ķ à¸¢à¸Ńà¸Ķ\nĠzosta Äĩ\nĠdispon ÃŃvel\nïº į\nver stÃ¤nd\nverstÃ¤nd lich\ntw or\ntwor zyÄĩ\nØ¹ Ø¬Ø²\nà¹Ģà¸Ĥ à¹īà¸¡\nà¸¢à¹Ī à¸Ńà¸¡\nĠstrat Ã©g\nĠstratÃ©g ie\nà¸ľà¸¥ à¹Ħà¸¡à¹ī\nĠê°ģ ì¢ħ\nĠÙħ ÙĪØ§\nĠÙħÙĪØ§ Ø¶\nĠÙħÙĪØ§Ø¶ ÙĬØ¹\nØ§ØŃ ØªØ¬\nØ§ØŃØªØ¬ Ø§Ø¬\nĠ áº¤\nĠáº¤ n\n×ŀ ×ŀ×©×ľ×Ķ\nĠÅŁek il\n×ŀ ×Ĺ×ľ\n×ŀ×Ĺ×ľ ×ķ×ª\nĠ à¸ĺ\nĠà¸ĺ à¸±à¸Ļ\nĠà¸ĺà¸±à¸Ļ à¸§à¸²\nĠà¸ĺà¸±à¸Ļà¸§à¸² à¸Ħà¸¡\nĠìĭ¤ ìłľ\nĠìĭ¤ìłľ ë¡ľ\nì¤ĳ ìķĻ\nëįĶ ëĿ¼\nĠÑĪ Ð¸ÑĢ\nĠÑĪÐ¸ÑĢ Ð¾ÐºÐ¾\nĠsol uciÃ³n\nà¸§à¸²à¸ĩ à¹ģà¸ľà¸Ļ\n×Ĳ×ķ×ĺ ×ķ×ŀ\n×Ĳ×ķ×ĺ×ķ×ŀ ×ĺ×Ļ\nĠÑĢ ÐµÑģÑĤ\nĠÑĢÐµÑģÑĤ Ð¾ÑĢ\nĠÑĢÐµÑģÑĤÐ¾ÑĢ Ð°Ð½\nëį ¸\nÑĤ ÑĢÐ°Ð´\nÑĤÑĢÐ°Ð´ Ð¸\nÑĤÑĢÐ°Ð´Ð¸ ÑĨÐ¸Ð¾Ð½\nÑĤÑĢÐ°Ð´Ð¸ÑĨÐ¸Ð¾Ð½ Ð½\nà¸¡à¸° à¹Ģà¸£à¹ĩ\nà¸¡à¸°à¹Ģà¸£à¹ĩ à¸ĩ\nà¹Ĥ à¸ª\nĠol masÄ±nÄ±\n×ŀ×ķ×¡ ×¨\nĠÐ¾ÑĤÐ½Ð¾ÑĪ ÐµÐ½Ð¸Ð¸\nĠê°ĢëĬ¥ ìĦ±\nĠy uk\nĠyuk arÄ±\nìĨ Ķ\nĠÑģ ÑĦ\nĠÑģÑĦ ÐµÑĢÐµ\nĠ×§ ×ķ×¤\nãĤ± ãĥ¼ãĤ\nãĤ±ãĥ¼ãĤ Ń\nâĢķ âĢķ\nĠØ§ÙĦØ£ ÙĦÙħ\nĠØ§ÙĦØ£ÙĦÙħ Ø§ÙĨÙĬ\náº¢ N\n×ª×ķ×Ľ ×ł×Ļ×ķ×ª\nĠÑģÑĥÑīÐµÑģÑĤÐ² ÑĥÐµÑĤ\næĪĳ ãĢħ\nĠØ§ÙĦØµ Ø§Ø¯Ø±\nĠTr á»įng\nĠÐ° Ð´\nĠÐ°Ð´ Ð¼Ð¸Ð½Ð¸ÑģÑĤ\nĠÐ°Ð´Ð¼Ð¸Ð½Ð¸ÑģÑĤ ÑĢÐ°\nĠÐ°Ð´Ð¼Ð¸Ð½Ð¸ÑģÑĤÑĢÐ° ÑĨÐ¸\nĠÐ´ÑĢÑĥÐ³ Ð¸Ð¼Ð¸\nÑģÐ¿ ÐµÑĪ\nØ¹ÙĦØ§Ùħ Ø§Øª\nĠÐ° Ð±\nĠÐ°Ð± ÑģÐ¾Ð»\nĠÐ°Ð±ÑģÐ¾Ð» ÑİÑĤ\nĠÐ°Ð±ÑģÐ¾Ð»ÑİÑĤ Ð½Ð¾\nà¸¤ à¸Ķà¸¹\nÃ© tr\nÃ©tr anger\nÐ½Ñı ÑĤÐ¸\nÐ½ÑıÑĤÐ¸ Ðµ\n×¢ ×ķ×ł\n×¢×ķ×ł ×©\nĠÙĤ Ø§Ø¦\nĠÙĤØ§Ø¦ ÙĦØ§\nĠÐ¼ Ð°Ñģ\nĠÐ¼Ð°Ñģ Ð»Ð¾\nãĥī ãĤ¤\nãĥīãĤ¤ ãĥĦ\nå¿ħè¦ģ ãģĮãģĤãĤĬãģ¾ãģĻ\n×ŀ×ķ×ĸ ×Ļ×Ĳ\n×ŀ×ķ×ĸ×Ļ×Ĳ ×ķ×Ł\nĠNgo áº¡i\nĠkÃª nh\nà¸ģà¸²à¸£ à¸Ńà¸Ńà¸ģà¹ģà¸ļà¸ļ\n×ŀ ×¤×§\n×ŀ×¤×§ ×ĵ\nÙħÙĨ Ø§Ø²\nÙħÙĨØ§Ø² ÙĦ\në· °\níĹ ¤\nÙħÙĩ Ø§Ø±Ø§Øª\nĠpropri Ã©tÃ©\n×¤×Ĵ ×Ļ×©×Ķ\nÑĩ ÑĢ\nÑĩÑĢ ÐµÐ¶\nÑĩÑĢÐµÐ¶ Ð´ÐµÐ½\n×Ķ ×ķ×¦×Ĳ×Ķ\nØŃÙĥ ÙĬÙħ\nĠíĻ Ī\nĠíĻĪ íİĺìĿ´ì§Ģ\nåİ ³\nåİ³ ãģĹãģĦ\n×¢ ×ŀ×ĵ×Ķ\nĠAu ÃŁen\nØ³ÙĪ Ø¡\në¹ Ī\nĠÙĪ Ø®\nĠÙĪØ® Ø§ØµØ©\nÐ¸Ð½ ÑĤÐµÑĢ\nÐ¸Ð½ÑĤÐµÑĢ ÐµÑģ\nèĩ´ ãģĹãģ¾ãģĻ\nĠhÃ¼k Ã¼m\nà¹Ħà¸Ĥ à¸¡à¸±à¸Ļ\nĠdav ran\nĠdavran Ä±ÅŁ\nà¹Ģà¸ķ à¸µà¸¢à¸ĩ\nÐ² ÑĢÐµÐ¼\nÐ²ÑĢÐµÐ¼ ÐµÐ½Ð½Ð¾\nà¹Ģà¸Ĺà¸¨ à¸ģà¸²\nà¹Ģà¸Ĺà¸¨à¸ģà¸² à¸¥\nå¼ķ ãģ£\nå¼ķãģ£ è¶ĬãģĹ\n×Ĳ×¨ ×ķ×Ĺ\n×Ĳ×¨×ķ×Ĺ ×ª\nà¹Ģ à¸§à¸´\nà¹Ģà¸§à¸´ à¸£à¹Į\nà¸Ńà¸¢à¹Īà¸²à¸ĩ à¸£à¸§à¸Ķà¹Ģà¸£à¹ĩà¸§\nĠìĹ¬ íĸī\nĠÑĢÐ°Ð½ ÑĮ\nĠÑĢÐ°Ð½ÑĮ ÑĪÐµ\nĠzob ow\nĠzobow iÄħ\nĠzobowiÄħ z\nĠ×ķ×Ľ ×ŀ×ķ×ĳ×Ł\nĠØ§ÙĦÙħ Ùĩ\nĠØ§ÙĦÙħÙĩ ÙĨÙĬ\nãĤ¢ ãĤ¸\nãĤ¢ãĤ¸ ãĤ¢\në°© ìĨ¡\nà¸Ńà¸Ńà¸ģ à¸ģà¸³à¸¥à¸±à¸ĩ\nà¸Ńà¸Ńà¸ģà¸ģà¸³à¸¥à¸±à¸ĩ à¸ģà¸²à¸¢\nam Ã©li\namÃ©li orer\nå½ĵãģŁãĤĬ åīį\nĠreg elm\nĠregelm Ã¤ÃŁig\nãģĬ åĭ\nãģĬåĭ §\nãģĬåĭ§ ãĤģ\nĠm Æ°á»Ŀi\nØ¨Ø± ÙħØ¬\nĠNat Ã¼rlich\nĠD Å©ng\nĠØ§ÙĦØ± Ø¬Ø§ÙĦ\nĠthÃ© p\nĠol muÅŁtur\n×ŀ×ķ×¡ ×Ļ×§×Ķ\nf Ã¤lle\nì£¼ íĥĿ\nĠØ§ÙĦÙģ Ø±Øµ\nĠnaj wiÄĻks\nĠnajwiÄĻks zy\nĠÃ§a ÄŁ\nĠÃ§aÄŁ rÄ±\nì¸ ł\nĠvÃŃ ct\nĠvÃŃct ima\nĠÑģÐ¾Ð²ÐµÑĢ ÑĪÐµÐ½\n×Ķ×Ļ ×Ļ×ª×Ļ\nà¹Ģà¸Ķ à¸µ\nà¹Ģà¸Ķà¸µ à¹ĭ\nà¹Ģà¸Ķà¸µà¹ĭ à¸¢à¸§\nÃ¼ yÃ¼\nĠÐ´ Ð¾Ð¿\nĠÐ´Ð¾Ð¿ Ð¾Ð»Ð½\nĠÐ´Ð¾Ð¿Ð¾Ð»Ð½ Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\nà¹ģà¸ķà¸ģà¸ķà¹Īà¸²à¸ĩ à¸ģà¸±à¸Ļ\nĠÃ¡ l\nĠÃ¡l bum\nà¸Ľà¸£à¸°à¸Īà¸³ à¸Ľà¸µ\nĠÑĦ ÐµÐ´ÐµÑĢ\nĠÑĦÐµÐ´ÐµÑĢ Ð°Ð»ÑĮÐ½\nĠobs ÅĤ\nĠobsÅĤ ugi\nà¹Ģà¸£ à¸·à¹Ī\nà¹Ģà¸£à¸·à¹Ī à¸Ńà¸¢\nà¹Ģà¸£à¸·à¹Īà¸Ńà¸¢ à¹Ĩ\nëģ Į\nĠngh Ã¬n\nĠBaÅŁkan lÄ±ÄŁÄ±\nØªØ£ Ø³ÙĬ\nØªØ£Ø³ÙĬ Ø³\nĠ×ĳ×ĳ ×ķ×§×¨\nĠ×¢×ĳ×ķ×ĵ ×ķ×ª\nĠØ¨Øµ ÙĪØ±Ø©\nãĤıãģĳ ãģ§ãģ¯ãģªãģĦ\nfÃ¼hr er\nãĤ¹ ãĤŃ\nãĤ¹ãĤŃ ãĥ«\nĠØ§ÙĦÙĤ Ø¶\nĠØ§ÙĦÙĤØ¶ ÙĬØ©\nĠÐ´Ð¾Ð»Ð¶ Ð½Ð¾ÑģÑĤ\nÙģØ§Ø± ÙĤ\nĠcomeÃ§ ou\nĠorganis Ã©\nĠxu Ã¢n\nĠÑģÐ¾Ð¾Ð±Ñī Ð°ÐµÑĤ\nĠÐ¿ÑĢÐ¸ Ð´\nĠÐ¿ÑĢÐ¸Ð´ ÐµÑĤÑģÑı\nTÃľ RK\nãĥ¬ ãĥ¼ãĤ·ãĥ§ãĥ³\nKh Ã´ng\nØ§Ø³Øª Ùģ\nØ§Ø³ØªÙģ Ø§Ø¯Ø©\nä¸ĬãģĮ ãģ£ãģ¦\nĠum ie\nĠumie jÄĻ\nĠumiejÄĻ tn\nĠumiejÄĻtn oÅĽci\nëĤ ¸\nà¹Ģà¸Ļ à¸Ńà¸£à¹Į\n×ĵ×ķ ×ķ×Ĺ\nÃŃs imo\nI ÃĬ\nIÃĬ N\nĠalcan Ã§\nĠ à¸ķà¸¸\nĠà¸ķà¸¸ à¸¥à¸²\nĠà¸ķà¸¸à¸¥à¸² à¸Ħà¸¡\n×©×ľ ×ĺ×ķ×Ł\nĠÃ©l Ã¨\nĠÃ©lÃ¨ ves\nĠÄĳ u\nĠÄĳu á»ķi\nĠØ£ Ùģ\nĠØ£Ùģ Ø±ÙĬ\nĠØ£ÙģØ±ÙĬ ÙĤÙĬ\nĠØ£ÙģØ±ÙĬÙĤÙĬ Ø§\nãĤĴæİ¢ ãģĻ\nĠÐ¿ÑĢÐµÐ´ Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñı\nØ¬ Ø§Ø¯\nĠÑħÐ¾ÑĤ ÑĮ\nÑģ Ð°Ð»\nÑģÐ°Ð» Ð¾Ð½\nà¸Ľà¸£à¸° à¹Ģà¸¡\nà¸Ľà¸£à¸°à¹Ģà¸¡ à¸´à¸Ļ\nãĤŃ ãĥĥãĥģ\nãĤŃãĥĥãĥģ ãĥ³\n×ĳ×ĵ×Ļ×§ ×ķ×ª\nĠch Ã¹\nĠchÃ¹ a\nÐĴ Ð¸Ð´Ðµ\nÐĴÐ¸Ð´Ðµ Ð¾\nÐ¸ÑĢÐ¾Ð² ÐºÐ°\nĠÑħÐ¾ÑĤ Ð¸ÑĤÐµ\nĠspÃ©c ifique\nà¸£à¸ª à¸Ĭà¸²à¸ķà¸´\nè¾¼ ãĤĵãģł\nä¼¸ ãģ³\n×Ķ×¦×ľ ×Ĺ×ª\nãģ©ãģ® ãĤĪãģĨãģ«\nØ³Ø¹ Ø§Ø¯Ø©\nĠÐ» Ð¸Ð´\nĠÐ»Ð¸Ð´ ÐµÑĢ\nà¸¡ à¸ĩ\nà¸¡à¸ĩ à¸Ħà¸¥\nØŃ Ø§ÙħÙĦ\nà¸«à¸¥ à¸¸à¸Ķ\nà¸Ńà¸¢à¹Īà¸²à¸ĩ à¸ķà¹Īà¸Ń\nà¸Ńà¸¢à¹Īà¸²à¸ĩà¸ķà¹Īà¸Ń à¹Ģà¸Ļà¸·à¹Īà¸Ńà¸ĩ\nãģķãģĽãģ¦ éłĤ\nØªØ³ ÙĪÙĬ\nØªØ³ÙĪÙĬ ÙĤ\nĠaÅŁaÄŁÄ± d\nĠaÅŁaÄŁÄ±d aki\nĠÑĨ ÐµÐ»ÑĮ\nĠÑĨÐµÐ»ÑĮ Ñİ\nĠAra ÅŁtÄ±rma\nà¸Ĥà¸±à¸ļ à¸£à¸ĸ\nÙĩ Ø°Ùĩ\nà¸¥à¸ĩ à¸Ĺà¸°\nà¸¥à¸ĩà¸Ĺà¸° à¹Ģà¸ļ\nà¸¥à¸ĩà¸Ĺà¸°à¹Ģà¸ļ à¸µà¸¢à¸Ļ\nØªÙĥ Ø§ÙħÙĦ\nĠc io\nĠcio Ã¨\nãģ¦ ãģĬãģı\nĠØ§ÙĦØµØŃ ÙģÙĬ\nĠíĬ¹ ìłķ\nÐ¿Ð¾Ð»Ð½ Ð¸ÑĤÑĮ\nãĤĵ ãģĺãĤĥãģªãģĦ\nãĤĵãģĺãĤĥãģªãģĦ ãģĭ\nĠØ§ÙĦØ¬ Ùĩ\nĠØ§ÙĦØ¬Ùĩ Ø§Øª\nĠÑĥÑģÐ¿ÐµÑĪ Ð½Ð¾\nĠÐ² Ð¾Ðº\nĠÐ²Ð¾Ðº ÑĢÑĥÐ³\nĠÑģÐ¸ÑĤÑĥ Ð°ÑĨÐ¸Ñı\nĠ×Ķ×Ĳ ×ŀ×¨\nĠ×Ķ×Ĳ×ŀ×¨ ×Ļ×§\nĠ×Ķ×Ĳ×ŀ×¨×Ļ×§ ×Ĳ×Ļ\n×ŀ ×Ĵ×ĸ\n×ŀ×Ĵ×ĸ ×Ļ×Ł\nĠÐ°Ðº ÑĤÑĥ\nĠÐ°ÐºÑĤÑĥ Ð°Ð»ÑĮÐ½\nÃ© ta\nÃ©ta is\nĠmog ÅĤa\nĠÑĤÐ¾Ñĩ ÐºÐ¸\nĠ×ŀ×Ķ ×ŀ×¢\nĠ×ŀ×Ķ×ŀ×¢ ×¨×Ľ×ª\nà¸¡à¸µ à¸Ľà¸£à¸°à¸ªà¸´à¸Ĺà¸ĺà¸´à¸łà¸²à¸ŀ\n×Ļ×¨ ×Ļ×ĵ×Ķ\n×Ĵ×¨ ×ŀ×ł\n×Ĵ×¨×ŀ×ł ×Ļ×Ķ\nĠÐ³ Ð»Ð°Ð²\nĠÐ³Ð»Ð°Ð² Ð½Ð¾Ðµ\nĠë¯¸ ëŀĺ\nĠ×ł×Ľ ×ķ×ł×Ķ\nĠÙĪ Ø·ÙĨÙĬ\nop port\nopport unitÃł\nĠh á»§y\nĠÙĦ ØªØŃ\nĠÙĦØªØŃ ÙĤÙĬÙĤ\nĠÃ³ rg\nĠÃ³rg Ã£o\nãĤ¹ ãĥĶ\nãĤ¹ãĥĶ ãĥ¼ãĥī\nĠÃ¶n Ã¼\nĠÃ¶nÃ¼ ne\nÙħØ¹ Ø§ÙħÙĦ\n×©×ŀ ×Ļ×¨×Ķ\nĠÐ²ÐµÑģÑĮ Ð¼Ð°\nĠwiÄĻks zo\nĠwiÄĻkszo ÅĽÄĩ\nĠØ§Ø³Øª Ø±Ø§ØªÙĬØ¬\nĠØ§Ø³ØªØ±Ø§ØªÙĬØ¬ ÙĬØ©\nĠÙģ Ø¥\nĠÙģØ¥ Ø°Ø§\nà¹Ģà¸Ĭà¸·à¹Īà¸Ń à¸¡\nà¹Ģà¸Ĭà¸·à¹Īà¸Ńà¸¡ à¸ķà¹Īà¸Ń\nĠ×ľ ×¤×¨\nĠ×ľ×¤×¨ ×ĺ×Ļ×Ŀ\nÙħØ¶ ÙĬ\nĠGer Ã§ek\nĠÃ§ocuk larÄ±n\nÙĪØ« Ø§Ø¦ÙĤ\nĠÙħØ³Ø§Ø¡ Ùĭ\nĠunterstÃ¼t zt\nĠprÃ© st\nĠprÃ©st amo\nĠÐłÐ°Ð· Ð¼ÐµÑĢ\nĠÅŁ eker\nĠsÃ© culo\n×ĳ×Ķ ×Ļ×¨\nØ´Ùĩ ÙĪØ±\nĠ à¸Ńà¸µà¸ģ\nĠà¸Ńà¸µà¸ģ à¸Ĺà¸±à¹īà¸ĩ\nĠlleg Ã³\nà¸¨à¸´à¸¥à¸Ľ à¸°\næĪĳ ãģĮ\næĪĳãģĮ å®¶\nØ¹ ÙĤÙĪ\nØ¹ÙĤÙĪ Ø¨Ø§Øª\nĠF Ã¤lle\nĠs ÅĤuÅ¼\nĠsÅĤuÅ¼ b\nĠØ§ÙĦØŃÙĤ ÙĪÙĤ\nĠÐ¿Ð» Ð¸ÑĤ\nĠÐ¸ Ð½Ð¾ÑģÑĤ\nĠÐ¸Ð½Ð¾ÑģÑĤ ÑĢÐ°Ð½\nĠÐ¸Ð½Ð¾ÑģÑĤÑĢÐ°Ð½ Ð½\nà¹ĥà¸Ļ à¸Ĥà¸ĵà¸°à¸Ĺà¸µà¹Ī\nãĤ« ãĥĨ\nãĤ«ãĥĨ ãĤ´\nãĤ«ãĥĨãĤ´ ãĥª\nà¸Ńà¸´ à¸ª\nà¸Ńà¸´à¸ª à¸£à¸°\nà¹Ģà¸ľà¸¢ à¹ģ\nà¹Ģà¸ľà¸¢à¹ģ à¸ŀà¸£\nà¹Ģà¸ľà¸¢à¹ģà¸ŀà¸£ à¹Ī\nãģĬ ãģĦ\nãģĬãģĦ ãģĹãģĦ\nØ§Ø³Øª ÙĤÙĦ\nØ§Ø³ØªÙĤÙĦ Ø§ÙĦ\nØªØŃ Ø¶\nØªØŃØ¶ ÙĬØ±\nåĬ© ãģĳ\nÙħØ± Ø§ÙģÙĤ\nĠ×ĵ ×ķ×¨\nĠ×ĵ×ķ×¨ ×©\n×ŀ×ª×Ļ ×Ļ×Ĺ×¡\n×¡ ×Ļ×Ľ\n×¡×Ļ×Ľ ×ķ×Ŀ\níĮĮ íĬ¸\nĠwy ÅĽ\nĠwyÅĽ w\nĠwyÅĽw iet\nĠwyÅĽwiet l\nĠØ§ÙĦØ§ÙĨ Ø³Ø§ÙĨ\nĠStra ÃŁen\nï¼ ¬\nãģ« åŁº\nãģ«åŁº ãģ¥\nĠcap ÃŃtulo\nà¸¥à¸¸ à¸¢\nĠ×Ķ×ŀ×§ ×¦×ķ×¢×Ļ\nãģĤãĤĭ ç¨ĭåº¦\ná» ¢\nĠØ§ÙĦ ÙĦØ§\nĠØ§ÙĦÙĦØ§ Ø²ÙħØ©\næķĻ ãģĪ\nĠ×¨×© ×Ĳ×Ļ\nÐ· Ð°Ð²\nÐ·Ð°Ð² Ð¸Ñģ\nÐ·Ð°Ð²Ð¸Ñģ Ð¸Ð¼\nà¸Ľà¸±à¸Ī à¸Īà¸±à¸¢\nà¹Ģà¸ĭ à¸¥\nà¹Ģà¸ĭà¸¥ à¸¥à¹Į\nĠdiffÃ© rence\nĠAlt Ä±n\nĠÐº ÑĢÐ°Ð¹\nĠÐºÑĢÐ°Ð¹ Ð½Ðµ\nĠÐ· Ð»Ð¾\nĠgÃ¼n Ã¼mÃ¼z\nĠÐ½ Ð°ÑĤÑĥÑĢ\nĠÐ½Ð°ÑĤÑĥÑĢ Ð°Ð»ÑĮÐ½\n×Ĵ×ķ×ľ ×©×Ļ×Ŀ\nĠÐº Ð°ÑĤÐµÐ³Ð¾ÑĢ\nĠÐºÐ°ÑĤÐµÐ³Ð¾ÑĢ Ð¸Ð¸\nĠÐ· Ð½Ð°Ðº\nà¸ģà¹Īà¸Ńà¸Ļ à¸«à¸Ļà¹īà¸²\nà¸ģà¹Īà¸Ńà¸Ļà¸«à¸Ļà¹īà¸² à¸Ļà¸µà¹ī\nĠÙħÙĨ Øª\nĠÙħÙĨØª Ø®Ø¨\nãĥĽ ãĥ¼ãĥ«\nĠÐµ Ð²ÑĢÐ¾\nà¸ª à¸§\nà¸ªà¸§ à¸¡\nĠìľĦ ìĽĲ\nĠìľĦìĽĲ ëĭĺ\nĠØ§ÙĦØŃ ÙĪØ«\nĠØ§ÙĦØŃÙĪØ« ÙĬ\nĠÑģÐ¾Ð´ÐµÑĢÐ¶ Ð¸ÑĤ\nãĥķãĤ¡ ãĥĥãĤ·ãĥ§ãĥ³\nĠ à¸ģà¸±à¸Ļ\nĠà¸ģà¸±à¸Ļ à¸¢\nĠà¸ģà¸±à¸Ļà¸¢ à¸²à¸¢à¸Ļ\nãĤª ãĥª\nãĤªãĥª ãĤ¸\nãĤªãĥªãĤ¸ ãĥĬãĥ«\nĠÐ± ÑĢÐµÐ½Ð´\nãĤĴæĮģ ãģ£ãģ¦ãģĦãĤĭ\nĠinvers iÃ³n\nĠê° ĸ\nĠê°ĸ ê³ł\nĠnov itÃł\nê´Ģ ê´ĳ\nĠà¸ŀ à¸¤à¸©\nĠà¸ŀà¸¤à¸© à¸łà¸²\nĠà¸ŀà¸¤à¸©à¸łà¸² à¸Ħà¸¡\n×ķ×¨ ×Ĺ×Ļ×Ŀ\n×Ľ×ľ ×ķ×ľ\nĠng áº¡c\n×Ļ ×Ļ×©\n×Ļ×Ļ×© ×ķ×ĳ\nf Ã¤ll\nfÃ¤ll ig\nĠÑĤÑĢÐµÐ± ÑĥÐµÑĤÑģÑı\nĠcar Ã¡\nĠcarÃ¡ cter\nĠprinc ÃŃpio\nĠÅĤ az\nĠÅĤaz ien\nĠÅĤazien k\nĠgi Ã£n\nÑģÑĤÑĢÐ° Ð¸Ð²Ð°\nÙħØ³ Ø§Ø¨\nÙħØ³Ø§Ø¨ ÙĤØ©\nà¹Ģà¸Ħà¸£à¸·à¹Īà¸Ńà¸ĩ à¸Ķà¸·à¹Īà¸¡\nØªØ±Ùĥ ÙĬØ¨\nvol uÃ§Ã£o\nĠÐŁ Ð¾Ñĩ\nĠÐŁÐ¾Ñĩ ÐµÐ¼\nĠÐŁÐ¾ÑĩÐµÐ¼ Ñĥ\nÐºÐ°Ð·Ð°Ð» Ð¾ÑģÑĮ\nĠÐ¿ÑĢÐ¸Ð¼ÐµÐ½ ÐµÐ½Ð¸Ñı\nà¹Ģà¸Ĺ à¸µà¸¢à¸¡\níĮ Ķ\nà¸Ĥà¹īà¸Ń à¹Ģà¸ªà¸Ļà¸Ń\nà¸Ľà¸±à¸į à¸įà¸²\nĠÐ¾Ð± ÑĥÑĩ\nĠÐ¾Ð±ÑĥÑĩ ÐµÐ½Ð¸Ñı\nĠÑģÐµÑĢ Ð¸\nĠÑģÐµÑĢÐ¸ Ð°Ð»\nĠingl Ã©s\nĠÙĦ ÙĥØ±Ø©\nĠ×ĺ ×ľ\nĠ×ĺ×ľ ×¤×ķ×Ł\nĠìł ĳ\nĠìłĳ ê·¼\n×Ĳ ×ķ×Ĵ\n×Ĳ×ķ×Ĵ ×ķ×¡\n×Ĳ×ķ×Ĵ×ķ×¡ ×ĺ\nĠÐ±Ð¾Ð»ÑĮÑĪ Ð¾Ðµ\nĠÐļÐ¾Ð½ ÐµÑĩÐ½Ð¾\n×¢×Ļ×ª ×ķ×ł\n×¢×Ļ×ª×ķ×ł ×Ĳ×Ļ\nĠÐºÐ½Ð¾Ð¿ Ðº\nĠÐ· Ð½\nĠÐ·Ð½ Ð°ÑĤÑĮ\nĠÄĳ á»±\nĠÄĳá»± ng\nÐ²Ð» Ð°Ð¶\nÐ²Ð»Ð°Ð¶ Ð½\n×ŀ ×Ļ×ĺ×ĳ\nãĤ¬ ãĤ¤\nãĤ¬ãĤ¤ ãĥī\n........ ..\nĠà¸ģ à¸¸à¸¡\nĠà¸ģà¸¸à¸¡ à¸łà¸²à¸ŀ\nĠà¸ģà¸¸à¸¡à¸łà¸²à¸ŀ à¸±à¸Ļ\nĠà¸ģà¸¸à¸¡à¸łà¸²à¸ŀà¸±à¸Ļ à¸ĺ\nĠà¸ģà¸¸à¸¡à¸łà¸²à¸ŀà¸±à¸Ļà¸ĺ à¹Į\nbe z\nbez pieczeÅĦst\nbezpieczeÅĦst w\nãĥĳãĥĳ æ´»\nØ¹ Ø§Ø·\nØ¹Ø§Ø· Ùģ\nĠÄĳ áºŃm\nĠÐ· ÑĢ\nĠÐ·ÑĢ ÐµÐ½Ð¸Ñı\nĠbor Ã§\nĠÐ½ÐµÐ´ ÐµÐ»\nĠÐ½ÐµÐ´ÐµÐ» Ñİ\nĠh á»ı\nĠhá»ı ng\nìŀ¥ ìķł\nìŀ¥ìķł ìĿ¸\nĠØ§ÙĦØ¹ ÙĦØ§ÙĤØ©\nĠíģ ¬\nĠíģ¬ ê²Į\nà¹Ħà¸£ à¹Ī\nà¸ļà¸² à¸Ķ\nà¸ļà¸²à¸Ķ à¹Ģà¸Īà¹ĩà¸ļ\nà¸Ŀ à¸£à¸±\nà¸Ŀà¸£à¸± à¹Īà¸ĩ\nà¸Ŀà¸£à¸±à¹Īà¸ĩ à¹Ģà¸¨\nà¸Ŀà¸£à¸±à¹Īà¸ĩà¹Ģà¸¨ à¸ª\n×¨ ×¢×Ļ\n×¨×¢×Ļ ×ķ×ł×ķ×ª\nĠë Į\nĠëĮ ĵ\nĠëĮĵ ê¸Ģ\nĠnaj b\nĠnajb li\nĠnajbli Å¼\nĠnajbliÅ¼ sz\nĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ· ÑĥÐµÑĤÑģÑı\nĠcient ÃŃf\nĠcientÃŃf ico\n×¢ ×ŀ×§\nĠg á»£i\nØ´ ØŃÙĨ\nĠÅĽ m\nĠÅĽm ier\nĠÅĽmier ci\nà¸Ħà¸²à¸ªà¸´à¹Ĥà¸Ļ à¸Ńà¸Ńà¸Ļà¹Ħà¸¥à¸Ļà¹Į\n×Ĺ×©×ĳ ×ª×Ļ\nĠn ingu\nĠningu Ã©m\nè¾¼ ãĤģ\nãģ ·\nĠÑĥ Ð³\nĠÑĥÐ³ Ð¾Ð»\nï½ °\n×¤×ª ×Ļ×Ĺ\n×¤×ª×Ļ×Ĺ ×ª\nĠ×Ķ×¨×Ĳ×© ×ķ×ł×Ļ×Ŀ\np Ã³sito\nãĤŃ ãĥ¬ãĤ¤\nãģ© ãģĵãĤį\nà¹Ģà¸Ĺà¹Īà¸² à¹Ħ\nà¹Ģà¸Ĺà¹Īà¸²à¹Ħ à¸«à¸£\nà¹Ģà¸Ĺà¹Īà¸²à¹Ħà¸«à¸£ à¹Ī\nĠÐ¸Ð½ÑĤÐµÑĢ ÑĮÐµÑĢ\nĠØŃ Ø§Ø¬\nĠØŃØ§Ø¬ Ø©\nà¸ªà¸µ à¸Ĥà¸²à¸§\nìĸ ¼\nĠn á»Ļ\nĠná»Ļ p\nĠÃŃ nd\nĠÃŃnd ice\nà¸ªà¸³ à¸£à¸§à¸Ī\nĠÐºÐ°Ð¶Ð´ Ð¾Ð¹\nĠhot Ã©is\nĠnast ÄĻ\nĠnastÄĻ pn\nĠ×Ķ×§ ×ķ×ĵ\nĠ×Ķ×§×ķ×ĵ ×Ŀ\n×¤ ×ķ×¤\n×¤×ķ×¤ ×ķ×ľ\n×¤×ķ×¤×ķ×ľ ×¨×Ļ\nÐ²ÑĪ ÐµÐ¹\nãĤ·ãĥ³ ãĥĹ\nãĤ·ãĥ³ãĥĹ ãĥ«\nĠzdjÄĻ Äĩ\nĠÐ³ÑĢÑĥÐ¿Ð¿ Ð°\nĠÐ¿Ð¾Ð¼ ÐµÑī\nĠÐ¿Ð¾Ð¼ÐµÑī ÐµÐ½Ð¸Ñı\nãģ©ãģĨ ãģĦãģĨ\nĠÐ¸ÑģÐ¿ ÑĭÑĤÐ°\nĠog ÅĤ\nĠogÅĤ os\nĠogÅĤos zen\nĠogÅĤoszen i\nà¸ªà¸£à¹īà¸²à¸ĩ à¸ªà¸£à¸£\nà¸ªà¸£à¹īà¸²à¸ĩà¸ªà¸£à¸£ à¸Ħà¹Į\nà¸ŀà¸£ à¸£à¸ĵ\nĠÃ§Ä±k Ä±ÅŁ\nĠÑĩÐ°ÑģÑĤ Ð½Ð¾ÑģÑĤÐ¸\nĠ×ķ ×Ļ×ķ×ª×¨\nç¶ļãģį ãĤĴ\nç¶ļãģįãĤĴ èªŃ\nç¶ļãģįãĤĴèªŃ ãĤĢ\nà¸ģà¸£ à¸±\nà¸ģà¸£à¸± à¸¡\nÐ³ ÑĢÐ°ÑĦ\nĠÐ² Ð»Ð°Ð´\nĠÐ²Ð»Ð°Ð´ ÐµÐ»ÑĮ\nĠÐ²Ð»Ð°Ð´ÐµÐ»ÑĮ ÑĨ\nĠistedi ÄŁ\nĠistediÄŁ iniz\n×ĳ×ľ ×¢\n×ĳ×ľ×¢ ×ĵ×Ļ\nÙħÙĪ Ø§Ùģ\nÙħÙĪØ§Ùģ ÙĤØ©\nĠ×Ļ ×ķ×¨\nĠ×Ļ×ķ×¨ ×§\nãĤ«ãĥ¼ãĥī ãĥŃãĥ¼ãĥ³\nĠØ§ÙĦÙħØ´ ÙĥÙĦ\nĠØ§ÙĦÙħØ´ÙĥÙĦ Ø©\nĠêµŃ íļĮ\n×¡ ×¤×ĺ\n×¡×¤×ĺ ×ŀ\n×¡×¤×ĺ×ŀ ×ĳ×¨\nĠìĸ´ ëłµ\nÙĥ Ø§Ùħ\nÙĥØ§Ùħ ÙĬØ±Ø§\nsch lÃ¼\nschlÃ¼ sse\nĠØ« ÙĨ\nĠØ«ÙĨ Ø§Ø¦ÙĬ\nìī ½\nĠÐŀ ÑģÐ¾Ð±\nĠÐŀÑģÐ¾Ð± ÐµÐ½Ð½Ð¾\nĠÐ¸Ð½ Ð²ÐµÑģÑĤÐ¸\nĠÐ¸Ð½Ð²ÐµÑģÑĤÐ¸ ÑĨÐ¸\nØ§ØŃ ØªÙħ\nØ§ØŃØªÙħ Ø§ÙĦ\nE Äŀ\nEÄŀ Ä°\níķĺ ê²łëĭ¤\nĠ×Ĳ ×ĳ×¨×Ķ\nĠ×Ĳ×ĳ×¨×Ķ ×Ŀ\nĠ×ĳ×Ĺ ×Ļ×ł×Ŀ\nØ£ ÙĪØ¶\nØ£ÙĪØ¶ Ø§Ø¹\nĠdÃ© l\nĠdÃ©l ai\nĠ×Ĳ×ķ×Ķ ×ĳ×Ļ×Ŀ\nĠÑģÐ¾ Ñħ\nĠÑģÐ¾Ñħ ÑĢ\nĠÑģÐ¾ÑħÑĢ Ð°Ð½Ð¸\nĠÐ´Ð¾ÑģÑĤ Ð¸Ð¶\nĠÐ´Ð¾ÑģÑĤÐ¸Ð¶ ÐµÐ½Ð¸\nà¸ªà¸´à¹Īà¸ĩ à¹ģ\nà¸ªà¸´à¹Īà¸ĩà¹ģ à¸§à¸Ķ\nà¸ªà¸´à¹Īà¸ĩà¹ģà¸§à¸Ķ à¸¥\nà¸ªà¸´à¹Īà¸ĩà¹ģà¸§à¸Ķà¸¥ à¹īà¸Ńà¸¡\nĠØ§ÙĦÙħ Ø¨Ø§Ø´Ø±\nĠÑĦ Ð¸Ð³\nĠÑĦÐ¸Ð³ ÑĥÑĢ\nÐ¼Ð¾Ð¶ ÐµÐ¼\n×ľ×ŀ×Ļ×ĵ ×Ķ\nĠcin Ã©\nĠcinÃ© ma\nĠb ada\nĠbada ÅĦ\nØ¬Ø¨ ÙĩØ©\nĠÐ´ ÐµÐ¿\nĠÐ´ÐµÐ¿ ÑĥÑĤ\nĠÐ´ÐµÐ¿ÑĥÑĤ Ð°ÑĤ\nĠdist Ã¢ncia\nĠØ§ÙĦÙħ Ø¹Ø§Ø±\nĠØ§ÙĦÙħØ¹Ø§Ø± Ø¶Ø©\nthÃ¨ se\nÃ¼ nc\nÃ¼nc Ã¼\nĠÐ´Ð°Ð½ Ð½Ð¾Ð³Ð¾\nĠBel gi\nĠBelgi Ã«\nĠ×ĳ ×ĳ×§\nĠ×ĳ×ĳ×§ ×©×Ķ\nà¸¢ à¹Īà¸²à¸Ļ\nĠsol uÃ§Ã£o\nĠ×Ķ×¦ ×ĺ×¨\nĠ×Ķ×¦×ĺ×¨ ×¤×ķ\nĠØ£ÙĨ ØŃ\nĠØ£ÙĨØŃ Ø§Ø¡\nĠØ¯ ÙħØ´\nĠØ¯ÙħØ´ ÙĤ\nà¸¡à¸± à¹ī\nà¸¡à¸±à¹ī à¸¢\nÙħ ØºØ±Ø¨\nØ§Ø³Øª Ø¹ÙħØ§ÙĦ\nĠS ÅĤow\nĠëıĻ ìĭľ\nĠëıĻìĭľ ìĹĲ\nĠÑģ Ð¾Ñģ\nĠÑģÐ¾Ñģ ÐµÐ´\nì²Ń ìĨĮ\nì²ŃìĨĮ ëħĦ\nĠÐ³ ÑĢÐ°ÑĦ\nĠÐ³ÑĢÐ°ÑĦ Ð¸Ðº\nĠìŀĳ ìĿĢ\nĠyet i\nĠyeti ÅŁtir\nĠìĿ´ê²ĥ ìĿ´\nà¸« à¹Īà¸²à¸ĩ\nØ¥ ÙħÙĥØ§ÙĨ\nØ¥ÙħÙĥØ§ÙĨ ÙĬØ©\nØ§Ø³Øª Ø¹Ø±Ø§Ø¶\nÙħØ® Ø¯Ø±\nĠÑĩ ÑĥÑĤÑĮ\nÙħ Ø¯ÙĬØ±\nÙħØ¯ÙĬØ± ÙĬØ©\nĠà¹Ģà¸¡ à¸©\nĠà¹Ģà¸¡à¸© à¸²à¸¢à¸Ļ\nĠÐ¼ ÐµÑħ\nĠÐ¼ÐµÑħ Ð°Ð½Ð¸Ð·\nĠÐ¼ÐµÑħÐ°Ð½Ð¸Ð· Ð¼\nĠÑģ ÑĥÐ¼\nĠÑģÑĥÐ¼ Ð¼Ñĥ\nĠv Ã¶\nĠvÃ¶ ll\nĠvÃ¶ll ig\nĠÐ´ ÑĢÑĥÐ·\nĠÐ´ÑĢÑĥÐ· ÑĮÑı\nãĤĴåĪ©çĶ¨ ãģĹãģ¦\nà¸ļà¸£à¸£ à¸Īà¸¸\npo Å¼ycz\n×ŀ×© ×Ľ\n×ŀ×©×Ľ ×ł×ª\n×ŀ×©×Ľ×ł×ª ×Ĳ\nĠeuropÃ© en\nĠpropri Ã©\nĠpropriÃ© taire\nĠkh áº¥u\nãģĦãģŁãģł ãģĳãĤĭ\nĠtec rÃ¼\nĠtecrÃ¼ be\n×Ķ ×ĳ\n×Ķ×ĳ ×ł×Ķ\nĠcu Ì\nĠcuÌ ī\nĠcuÌī a\n×Ĳ ×ķ×ķ\n×Ĳ×ķ×ķ ×Ļ×¨×Ķ\nĠ×Ľ×ķ×ľ ×ķ\nU lus\nUlus lararasÄ±\nĠ×ł ×ķ×ª\nĠ×ł×ķ×ª ×Ł\nãģ« åĲĳ\nãģ«åĲĳ ãģĳãģ¦\në¹ Ľ\nà¸Ĺ à¸±à¸ģà¸©\nà¸Ĺà¸±à¸ģà¸© à¸°\nØ³ ÙĤÙĪ\nØ³ÙĤÙĪ Ø·\nĠÐ² Ð½\nĠÐ²Ð½ ÐµÑĪ\nĠÐ²Ð½ÐµÑĪ Ð½Ðµ\nĠur z\nĠurz ÄĻd\nĠÃ¡ mb\nĠÃ¡mb ito\nà¸Ń à¸ĺà¸´\nà¸Ńà¸ĺà¸´ à¸ļà¸²à¸¢\nĠ ÅĤad\nĠÅĤad n\nê±´ ì¶ķ\nwÃ³d zt\nwÃ³dzt w\nĠquest Ãµes\nĠ×© ×§\nĠ×©×§ ×Ļ×ĳ×ľ\nĠmiejsc owoÅĽci\nĠÐ² Ð°Ð»\nĠÐ²Ð°Ð» ÑİÑĤ\nhÃ¤ user\nà¸«à¸Ļ à¸Ńà¸ĩ\nãģ¨ åħ±\nãģ¨åħ± ãģ«\nãĥı ãĥ¼ãĥī\nĠê°ľ ìµľ\nĠÐ¾ÑģÐ½Ð¾Ð² Ð½Ð¾Ð¼\nĠÐ¼ ÑıÑģ\nØ§Ø¹ Øª\nØ§Ø¹Øª ÙĤØ§ÙĦ\nà¸ªà¸ĸ à¸´\nà¸ªà¸ĸà¸´ à¸ķà¸´\nN gu\nNgu á»ĵn\nĠÙħ Ø¬ÙĦ\nĠÙħØ¬ÙĦ Ø©\nà¹ģà¸Ĥ à¸Ļ\nĠØ§ÙĦÙĦÙĬ Ø¨ÙĬ\n×¤×¢×Ļ×ľ ×ķ×Ļ×ķ×ª\nĠ×Ķ×¨ ×¤×ķ×Ĳ×Ļ\n×¤×¨ ×ķ×¤\n×¤×¨×ķ×¤ ×Ļ×ľ\n×§ ×ľ×Ĳ\n×§×ľ×Ĳ ×¡×Ļ\nÙĥØª Ø´Ùģ\nãģ«ãģª ãģ£ãģ¦ãģĹãģ¾ãģĨ\nà¹Ģà¸Ħà¸¥ à¹ĩà¸Ķ\nà¹Ģà¸Ħà¸¥à¹ĩà¸Ķ à¸¥à¸±à¸ļ\nĠì» ´\nĠì»´ íĵ¨\nĠì»´íĵ¨ íĦ°\nĠ×Ĺ×Ļ ×ķ×ĳ×Ļ\nĠnÃ¤ m\nĠnÃ¤m lich\nåĳ¼ ãģ°\nåĳ¼ãģ° ãĤĮ\nĠÑĢ Ð¾Ð»\nĠÑĢÐ¾Ð» Ð¸\nĠspÃ©cial isÃ©\nà¸Ļ à¸§à¸±à¸ķ\nà¸Ļà¸§à¸±à¸ķ à¸ģà¸£à¸£à¸¡\nÙĨØµ ÙĪØµ\nÐ¿ÐµÑĢ ÐµÐ´\nÐ¿ÐµÑĢÐµÐ´ Ð°Ñĩ\nthÃ¨ que\nĠ×¨×Ĳ ×Ļ×ª×Ļ\nãĥĢ ãĤ¦ãĥ³\nãĤı ãģĭ\nãĤıãģĭ ãģ£ãģ¦\nÐ±ÐµÑĢ ÐµÐ¶\nĠÑģ ÐµÐº\nĠÑģÐµÐº ÑĢ\nĠÑģÐµÐºÑĢ ÐµÑĤ\nĠÐ¿Ð¾ÑģÑĤÐ¾ÑıÐ½ Ð½\nà¸Ĥà¸Ļ à¸ªà¹Īà¸ĩ\nĠm Ã¼k\nĠmÃ¼k em\nĠmÃ¼kem mel\nÐµÑĤ ÐµÑģÑĮ\nĠØ§ÙĦØ³ÙĨ ÙĪØ§Øª\nĠìłĦ íĺĢ\nĠ×Ķ×ŀ×§ ×ķ×¨×Ļ\nĠmÃ¼ d\nĠmÃ¼d ah\nĠmÃ¼dah ale\nĠwy b\nĠwyb Ã³r\nĠtend Ãªncia\nØ¥ Ø¯Ø§Ø±\nØ¥Ø¯Ø§Ø± ÙĬØ©\nĠunterstÃ¼t zen\n×ª ×ĳ×¨\n×ª×ĳ×¨ ×¨\nĠdi Ã¡\nĠdiÃ¡ logo\nĠÃĸ nce\nĠÃĸnce ki\nãĤ¹ãĥĿ ãĥĥãĥĪ\nëĦ £\nĠG eli\nĠGeli ÅŁ\nãĤĴ éĢļ\nãĤĴéĢļ ãģĹãģ¦\nĠFuÃŁ ball\nĠsal ari\nĠsalari Ã©\nĠÐ¿ÑĢÐ¾Ð´ÑĥÐº ÑĤÐ¾Ð²\nØµÙģ ÙĤØ©\nà¸£à¸§ à¸ļ\nà¸£à¸§à¸ļ à¸£à¸§à¸¡\nà¹ĥà¸Ļ à¸Ĳà¸²à¸Ļ\nà¹ĥà¸Ļà¸Ĳà¸²à¸Ļ à¸°\nĠkay na\nĠkayna ÄŁÄ±\nĠìŀĳ íĴĪ\nĠÐ²Ñĭ ÑĢÐ°Ð¶\nĠÐ²ÑĭÑĢÐ°Ð¶ ÐµÐ½\nĠÑģÑĤ ÐµÐ¿\nĠÑģÑĤÐµÐ¿ ÐµÐ½Ð¸\nĠØ§ÙĦÙħ ÙĪØ¬ÙĪØ¯\nĠØ§ÙĦÙħÙĪØ¬ÙĪØ¯ Ø©\nà¸¥ à¹īà¸¡\nĠnaj czÄĻ\nĠnajczÄĻ ÅĽcie\nĠnajczÄĻÅĽcie j\nĠz wy\nĠzwy k\nĠzwyk ÅĤ\nĠê·¸ëłĩ ì§Ģ\nà¸ģà¸£à¸° à¸Ī\nà¸ģà¸£à¸°à¸Ī à¸²à¸¢\nĠëĭ µ\nĠëĭµ ë³Ģ\nĠÑĢÐµ Ð°Ðº\nĠÑĢÐµÐ°Ðº ÑĨÐ¸\nĠÅĽwie Å¼\nĠÑģÑĤÐ¾Ð¸Ð¼ Ð¾ÑģÑĤÐ¸\nÙħÙĨ Ø§ÙĤ\nÙħÙĨØ§ÙĤ Ø´\nÙħÙĨØ§ÙĤØ´ Ø©\nĠÑħÐ¾Ñĩ Ñĥ\nãĥľ ãĥ¼ãĥī\nĠrÃ³Å¼ nic\nĠÐº ÑĢÑĭ\nĠÐºÑĢÑĭ ÑĪ\nâľ ĵ\nãĤ³ãĥ³ ãĥĨãĥ³\nãĤ³ãĥ³ãĥĨãĥ³ ãĥĦ\nĠÐ¿ÑĢÐµÐ´ Ð¿Ð¾Ñĩ\n×ŀ×¨ ×ĳ×Ļ×ª\nĠØ´ Ùĥ\nĠØ´Ùĥ Ø±Ø§\nĠÐ´ Ð°Ð»\nĠÐ´Ð°Ð» ÐµÐº\nĠÐ´Ð°Ð»ÐµÐº Ð¾\nØ¨Ø± ÙĬØ·\nØ¨Ø±ÙĬØ· Ø§ÙĨÙĬØ§\nØ¹ ÙĨØ§\nØ¹ÙĨØ§ ÙĬØ©\nĠÑĢÐ°ÑģÑģ ÐºÐ°Ð·\nĠÑĢÐ°ÑģÑģÐºÐ°Ð· ÑĭÐ²Ð°\nØ£ ÙĦÙĪ\nØ£ÙĦÙĪ Ø§ÙĨ\næĮģ ãģ£ãģ¦\næĮģãģ£ãģ¦ ãģĦ\nÙħØ¨Ø§Ø¯ Ø¦\n×Ķ ×¢×ĳ×¨\n×Ķ×¢×ĳ×¨ ×ª\nĠyay Ä±\nĠyayÄ± ml\nĠyayÄ±ml a\nm Ã¡t\nmÃ¡t icos\nà¸ģ à¸±à¸ĩ\nà¸ģà¸±à¸ĩ à¸§à¸¥\nĠ×ľ ×¤×ª\nĠ×ľ×¤×ª ×ķ×Ĺ\nà¸ŀà¸¤ à¸ķà¸´\nà¸ŀà¸¤à¸ķà¸´ à¸ģà¸£à¸£à¸¡\ní Ĥ¬\nĠÐ¾Ðº ÑĢÑĥÐ³\nĠ×ŀ×¦ ×ķ×ķ×Ķ\nÐĽ ÐµÐ½Ð¸\nÐĽÐµÐ½Ð¸ Ð½\nĠTri á»ģu\nãĤ³ãĥŁ ãĥ¥\nãĤ³ãĥŁãĥ¥ ãĥĭ\nãĤ³ãĥŁãĥ¥ãĥĭ ãĤ±\nãĤ³ãĥŁãĥ¥ãĥĭãĤ± ãĥ¼ãĤ·ãĥ§ãĥ³\nÙĥ ÙĨÙĬ\nÙĥÙĨÙĬ Ø³Ø©\nãĤĴ ä¸Ńå¿ĥ\nãĤĴä¸Ńå¿ĥ ãģ«\nĠmiÄĻd z\nĠmiÄĻdz yn\nĠmiÄĻdzyn ar\nĠmiÄĻdzynar od\nĠmiÄĻdzynarod ow\nÙĦ ÙĨ\nÙĦÙĨ Ø¯Ø§\nØ¨Ø± Ø´\nØ¨Ø±Ø´ ÙĦÙĪÙĨ\nØ¨Ø±Ø´ÙĦÙĪÙĨ Ø©\nà¸ģà¸£à¸° à¸ķà¸¸\nà¸ģà¸£à¸°à¸ķà¸¸ à¹īà¸Ļ\nĠg Ä±\nĠgÄ± da\nà¸Ľà¸£à¸° à¸Ĺà¸±à¸ļ\nà¸Ľà¸£à¸°à¸Ĺà¸±à¸ļ à¹ĥà¸Ī\nĠë¶Ī êµ¬\nĠë¶Īêµ¬ íķĺê³ł\nĠÙĨ Ø·\nĠÙĨØ· Ø§ÙĤ\nĠÐľ Ð¾Ð¶ÐµÑĤ\nPr Ã¤s\nPrÃ¤s ident\nĠÑģÐº Ð¾ÑĢ\nĠÑģÐºÐ¾ÑĢ Ð¾ÑģÑĤÑĮ\nĠ×Ķ×ĳ ×ķ×§×¨\nÐµÑħ Ð°ÑĤÑĮ\nĠg áº¡o\nĠ×©×Ĳ ×Ļ×ł×Ŀ\nĠ×ĳ×ł ×ķ×Ĵ\nĠ×ĳ×ł×ķ×Ĵ ×¢\nĠÐ¾ Ð¿Ð¸ÑģÐ°Ð½Ð¸Ðµ\nĠucz ni\nĠuczni Ã³w\nà¹Ģà¸Ń à¹ĩà¸Ļ\nĠØª Ø´\nĠØªØ´ Ø±ÙĬÙĨ\nĠnh Ã£n\në¹ ¨\nĠcaract Ã¨re\n×¢ ×ľ×Ļ\n×¢×ľ×Ļ ×Ļ×Ķ\næ¥½ãģĹ ãĤģãĤĭ\nĠÑģ Ð°Ñħ\nĠÑģÐ°Ñħ Ð°ÑĢ\nÐ´ÑĥÐ¼ Ð°ÑĤÑĮ\nĠÐĴÐ¾Ð· Ð¼Ð¾Ð¶Ð½Ð¾\nØµ ÙĬØ§ÙĨ\nØµÙĬØ§ÙĨ Ø©\nÃ¶m Ã¼r\nà¸ª à¸¥\nà¸ªà¸¥ à¹ĩ\nà¸ªà¸¥à¹ĩ à¸Ń\nà¸ªà¸¥à¹ĩà¸Ń à¸ķ\në¡ ¯\nĠth Ã³i\ngr Ã¶ÃŁe\nĠksi ÄĻ\nĠksiÄĻ g\nĠÑĢ Ð¾Ð¼\nĠÑĢÐ¾Ð¼ Ð°Ð½\nÙĤ Ø§Ø³Ùħ\n×ŀ×ĳ ×ķ×Ĵ\n×ŀ×ĳ×ķ×Ĵ ×¨×Ļ×Ŀ\nbes ch\nbesch Ã¤ft\nbeschÃ¤ft ig\n×Ķ×¦×¢ ×Ķ\nĠÃģ rea\nĠÐ·Ð°ÑıÐ² Ðº\nÄ ¹\nĠÐ»ÑİÐ± Ð¾Ð³Ð¾\nĠ à¸¡\nĠà¸¡ à¸ģà¸£\nĠà¸¡à¸ģà¸£ à¸²à¸Ħà¸¡\nÑĦ Ð¸Ð·\nÑĦÐ¸Ð· Ð¸ÑĩÐµÑģÐº\nÐ¸Ð½ ÑĦ\nÐ¸Ð½ÑĦ ÐµÐº\nÐ¸Ð½ÑĦÐµÐº ÑĨÐ¸\nØ§ÙĦ Ø·\nØ§ÙĦØ· Ø§Ø¦Ùģ\nĠÐºÐ¾Ð» Ð»\nĠÐºÐ¾Ð»Ð» ÐµÐºÑĤÐ¸Ð²\nÐµÐ· Ð¶Ð°\nĠØ³ Ø¨ØŃ\nĠØ³Ø¨ØŃ Ø§ÙĨ\nĠØ³Ø¨ØŃØ§ÙĨ Ùĩ\nsch lÃ¤\nschlÃ¤ ge\nĠÐ´ Ð¸\nĠÐ´Ð¸ Ð°Ð³\nĠÐ´Ð¸Ð°Ð³ Ð½Ð¾ÑģÑĤ\nĠÐ¾ÑĤÐ¼ÐµÑĤ Ð¸ÑĤÑĮ\nÐ¢ Ð¬\nĠØ§ÙĦ Ø¯Ø±\nĠØ§ÙĦØ¯Ø± Ø§Ø³ÙĬ\n×¢×¦ ×ŀ\n×¢×¦×ŀ ×Ĳ×ķ×ª\nĠdÃ©m arch\nĠdÃ©march e\nĠ×ĺ ×ķ×¢\nĠ×ĺ×ķ×¢ ×Ł\nĠfuncion Ã¡rios\ná» µ\n×ľ ×Ľ×Ĳ\n×ľ×Ľ×Ĳ ×ķ×¨×Ķ\nà¸ĭ à¹Ī\nà¸ĭà¹Ī à¸Ńà¸¡\nĠÑĩ ÑĥÐ²\nĠÑĩÑĥÐ² ÑģÑĤÐ²Ð¾\nâĸ ¼\nÐ¿ ÑĥÑī\nÐ¿ÑĥÑī ÐµÐ½\nĠÐ¼ ÐµÑĢ\nĠÐ¼ÐµÑĢ Ð¾Ð¿\nĠÐ¼ÐµÑĢÐ¾Ð¿ ÑĢÐ¸\nĠÐ¼ÐµÑĢÐ¾Ð¿ÑĢÐ¸ ÑıÑĤÐ¸Ñı\nĠu Ã§u\nĠuÃ§u ÅŁ\nãĤĴåĪ©çĶ¨ ãģĻãĤĭ\na ÄŁ\naÄŁ lÄ±\nìĺĪ ìĪł\nà¹ģ à¸¢à¹Ī\nĠØ§ÙĦÙĥ Ùħ\nĠØ§ÙĦÙĥÙħ Ø¨ÙĬ\nĠØ§ÙĦÙĥÙħØ¨ÙĬ ÙĪØªØ±\nØª ÙĪÙĬ\nØªÙĪÙĬ ØªØ±\nà¹Ģà¸Ĭ à¸µà¹Īà¸¢à¸§\nà¹Ģà¸Ĭà¸µà¹Īà¸¢à¸§ à¸Ĭà¸²\nà¹Ģà¸Ĭà¸µà¹Īà¸¢à¸§à¸Ĭà¸² à¸į\ná» Ķ\nĠhi áº¿m\nØ°Ø§ ÙĥØ±Ø©\nĠ×Ķ×ŀ×Ļ ×ķ×Ĺ×ĵ\nĠìĪ ľ\nĠìĪľ ê°Ħ\nĠK Ä±\nĠKÄ± sa\nĠgele ceÄŁi\nÐ¿ÑĢÐ¾ ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°\nÐ¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð° Ð»\nĠog Ã³\nĠogÃ³ le\nĠgÅĤ Ã³w\nĠgÅĤÃ³w ne\nĠÑģÑĤ Ð¸Ð»ÑĮ\n×Ĳ ×¤×ľ\n×Ĳ×¤×ľ ×Ļ×§\n×Ĳ×¤×ľ×Ļ×§ ×¦×Ļ×Ķ\nà¸ªà¸¡ à¸²à¸£à¹Į\nà¸ªà¸¡à¸²à¸£à¹Į à¸Ĺ\nà¸ªà¸¡à¸²à¸£à¹Įà¸Ĺ à¹Ĥà¸Ł\nà¸ªà¸¡à¸²à¸£à¹Įà¸Ĺà¹Ĥà¸Ł à¸Ļ\nĠth Ã¡nh\nÐŁ Ð¾Ð´\nÐŁÐ¾Ð´ ÑĢÐ¾Ð±\nÐŁÐ¾Ð´ÑĢÐ¾Ð± Ð½ÐµÐµ\nĠØ§ÙĦØª ÙĪÙĨ\nĠØ§ÙĦØªÙĪÙĨ Ø³ÙĬ\nĠbah Ã§e\nà¹ģà¸ģà¹ī à¸Ľà¸±à¸įà¸«à¸²\nÃ© ducation\neu rop\neurop Ã¤\neuropÃ¤ ische\nĠK si\nĠKsi ÄĻ\nĠëĦ ĺ\nĠëĦĺ ìĸ´\nĠv Ã¼c\nĠvÃ¼c ud\nĠyay g\nĠyayg Ä±n\nĠnie kt\nĠniekt Ã³ry\nĠniektÃ³ry ch\nãģŃ ãģĩ\nĠÐº Ð°Ð¶\nĠÐºÐ°Ð¶ ÐµÑĤÑģÑı\nÐº Ð°Ð¶\nÐºÐ°Ð¶ ÐµÑĤ\nĠØ§ÙĦ Ø¯ÙĬÙħÙĤØ±Ø§\nĠØ§ÙĦØ¯ÙĬÙħÙĤØ±Ø§ Ø·\nĠØ§ÙĦØ¯ÙĬÙħÙĤØ±Ø§Ø· ÙĬØ©\næŃ ©\næŃ© ãģĦãģ¦\nĠv az\nĠvaz ge\nĠvazge Ã§\nĠÐ¼Ð¸Ð½ Ð¸Ð¼Ð°Ð»ÑĮ\nĠÐ¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑĮ Ð½\nãĥĳ ãĤ¿\nãĥĳãĤ¿ ãĥ¼ãĥ³\nĠë Ĭ\nĠëĬ Ĳ\nĠëĬĲ ëĤĮ\nãģ¡ ãĤĩãģĨ\nãģ¡ãĤĩãģĨ ãģ©\nĠ à¸ģà¸£\nĠà¸ģà¸£ à¸ģà¸İ\nĠà¸ģà¸£à¸ģà¸İ à¸²à¸Ħà¸¡\nØªØ¬ Ø¯ÙĬØ¯\nĠØ´ Ø§ÙħÙĦ\nà¸«à¸¥à¸±à¸ģ à¸Ĳà¸²à¸Ļ\nĠÐ¼Ð°ÑĢ ÑĪ\nĠÐ¼Ð°ÑĢÑĪ ÑĢÑĥÑĤ\nĠv ÃŃt\nĠvÃŃt ima\nĠquiz Ã¡\nay gÄ±\n×ĵ×ĳ×¨ ×Ļ×ķ\nĠÐ¸Ð· Ð´\nĠÐ¸Ð·Ð´ ÐµÐ»Ð¸\nĠÐ¸Ð·Ð´ÐµÐ»Ð¸ Ñı\nÐ¿ Ð»Ð°\nÐ¿Ð»Ð° Ñĩ\nÐ¿Ð»Ð°Ñĩ Ð¸Ð²Ð°\nä»» ãģĽ\nĠÃ©quip Ã©\nä¹ħ ãģĹãģ\nä¹ħãģĹãģ ¶\nä¹ħãģĹãģ¶ ãĤĬ\nĠÐº Ð°ÑĤ\nĠÐºÐ°ÑĤ Ð°Ð»\nĠÐºÐ°ÑĤÐ°Ð» Ð¾Ð³\nà¸ª à¹īà¸¡\nĠÑĢ ÐµÐ¹\nĠÑĢÐµÐ¹ ÑĤ\nĠÑĢÐµÐ¹ÑĤ Ð¸Ð½Ð³\nĠth uyá»ģn\nĠØ§ÙĦÙħ ÙĤØ¯Ø³\nesp Ã¨re\nãģ«åħ¥ ãģ£ãģŁ\nà¸«à¸¡à¸²à¸¢ à¹Ģà¸¥à¸Ĥ\n×ª×Ĺ×ķ×© ×ª\nà¸Ļ à¹Īà¸°\nĠpe ÅĤ\nĠpeÅĤ ne\nĠpÃ© rd\nĠpÃ©rd ida\nà¸«à¸¡ à¸§à¸Ķ\nà¸«à¸¡à¸§à¸Ķ à¸«à¸¡à¸¹à¹Ī\nÐ¸ÑĩÐµÑģÐº ÑĥÑİ\nçµĤ ãĤı\nçµĤãĤı ãģ£ãģŁ\nĠ×Ĵ ×ķ×Ĵ×ľ\nà¸Ĺà¸³ à¸Ħà¸§à¸²à¸¡\nà¸Ĺà¸³à¸Ħà¸§à¸²à¸¡ à¸ªà¸°à¸Ńà¸²à¸Ķ\nHot Ã©is\nĠÐ· Ð°ÑĢ\nĠÐ·Ð°ÑĢ ÐµÐ³Ð¸ÑģÑĤ\nĠÐ·Ð°ÑĢÐµÐ³Ð¸ÑģÑĤ ÑĢÐ¸\nĠÐ·Ð°ÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ¸ ÑĢÐ¾Ð²Ð°\nĠÑģ Ð¾Ð±ÑĭÑĤÐ¸\nĠÑģÐ¾Ð±ÑĭÑĤÐ¸ Ñı\nĠ×ĸ ×Ľ×Ĳ\nÙħÙĨØ¸ ÙĪÙħØ©\nĠ×Ķ×ŀ ×¦\nĠ×Ķ×ŀ×¦ ×Ļ×Ĳ×ķ×ª\nÙħ ÙĥÙĪÙĨ\nÙħÙĥÙĪÙĨ Ø§Øª\nä¸ĬãģĮ ãĤĭ\nĠm ÄĻ\nĠmÄĻ sk\nà¸«à¸£à¸·à¸Ń à¹Ģà¸Ľà¸¥à¹Īà¸²\nëĤ ®\nĠnok tas\nĠnoktas Ä±\nĠÐ±Ð¾Ð»ÑĮÑĪ Ð¸Ð¼\nĠÐ»ÑĥÑĩ ÑĪÐ¸Ñħ\nØ´Ùĩ ÙĬØ¯\nà¸Ńà¸³ à¸Ļ\nà¸Ńà¸³à¸Ļ à¸§à¸¢\nà¸Ńà¸³à¸Ļà¸§à¸¢ à¸Ħà¸§à¸²à¸¡\nà¸Ńà¸³à¸Ļà¸§à¸¢à¸Ħà¸§à¸²à¸¡ à¸ªà¸°à¸Ķà¸§à¸ģ\nĠÐµ Ð²\nĠÐµÐ² ÑĢ\nĠÐµÐ²ÑĢ Ð¾Ð¿\nĠÐµÐ²ÑĢÐ¾Ð¿ ÐµÐ¹\nà¸ī à¸²à¸¢\nìĦ Ń\nÙħ ÙģØ§\nÙħÙģØ§ ÙĪØ¶\nÙħÙģØ§ÙĪØ¶ Ø§Øª\në¹ Į\nèµ¤ ãģ¡ãĤĥãĤĵ\nĠÑĥÐ´Ð°Ð» Ð¾ÑģÑĮ\nĠÐ¥ Ð¾ÑĤ\nĠÐ¥Ð¾ÑĤ Ñı\nprzedsiÄĻbior c\nĠH Ã´m\níķĺìĺĢ ìĬµëĭĪëĭ¤\nĠÐ½ Ð°Ð³\nĠÐ½Ð°Ð³ ÑĢÑĥÐ·\nĠÐ½Ð°Ð³ÑĢÑĥÐ· Ðº\nĠ×ĳ×Ļ×ł ×ľ×Ĳ×ķ×ŀ×Ļ\nĠê°ĢëĬ¥ íķľ\nĠH á»¯u\nà¸Ń à¸¸à¸Ķ\nà¸Ńà¸¸à¸Ķ à¸¡\n×ª ×ķ×¤\n×ª×ķ×¤ ×¢×Ķ\nĠmi ÅĤo\nĠmiÅĤo ÅĽci\nksi ÄħÅ¼\nksiÄħÅ¼ ka\nĠØ§ÙĦÙĦ Ø¹Ø¨Ø©\nà¸ī à¸²à¸ģ\nà¸ªà¸° à¸ªà¸¡\n×ŀ ×ª×¨\n×ŀ×ª×¨ ×Ĺ×©\nĠlÃ©g Ã¨re\nĠ×ľ×¦ ×¤\nĠ×ľ×¦×¤ ×Ļ×Ķ\nĠÐ¸ÑģÑĤÐ¾ÑĢ Ð¸Ñı\nĠ ãĥĪãĥ©\nĠãĥĪãĥ© ãĥĥãĤ¯\nĠãĥĪãĥ©ãĥĥãĤ¯ ãĥĲãĥĥãĤ¯\nĠÐº Ð°\nĠÐºÐ° ÑĦÐµ\n×ŀ×¡×ŀ ×ļ\nĠc Ã¼m\nĠcÃ¼m le\nà¹Ģà¸Ħà¸¥à¸·à¹Īà¸Ńà¸Ļ à¹Ħà¸«à¸§\nãģĬ ãģĿ\nãģĬãģĿ ãĤīãģı\nìŀĲ ëıĻ\nìŀĲëıĻ ì°¨\nà¸Ńà¸± à¸ķ\nà¸Ńà¸±à¸ķ à¹Ĥà¸Ļ\nà¸Ńà¸±à¸ķà¹Ĥà¸Ļ à¸¡à¸±\nà¸Ńà¸±à¸ķà¹Ĥà¸Ļà¸¡à¸± à¸ķà¸´\nĠÅŁ ik\nĠÅŁik ay\nĠÅŁikay et\nextr Ãªme\nkr Ã¤\nkrÃ¤ fte\nëĤ Ļ\níķ ĳ\nì² Ļ\níĺ Ī\nì° į\nâĻ ¡\nìŀ Ķ\në¢ °\níĿ Ķ\níĿ Ĳ\nâĩ Ĵ\në§ Ľ\nìĬ Ī\ná» Ĵ\nìĺ µ\nâĹ İ\ní Ĥ¨\nê¿ Ī\nìĪ ¨\nìĽ ¨\në§ ¥\nï½ Ģ\nï¼ ª\náº ¨\nãħ İ\nÑ Ĺ\nìĦ ¬\nì¹ ¼\nï¼ ¶\nìĽ ł\nëŁ ´\nÅ ĥ\nëĤ ¼\nëĭ Ĳ\nâĢ ¹\në¦ Ń\nì§ Ĳ\nâĢ ¤\nÃ ħ\nëľ ¨\níĦ ¸\níľ ĺ\nê² ģ\në´ ħ\nÃ ĺ\nëŃ Ķ\nëĺ ĳ\nâĹ ĩ\nìĹ ĺ\nï» ´\në§ ¹\nï¾ Ŀ\nìĬ ·\níĥ ķ\nï¼ ł\nì» ´\nëł Į\nì½ ľ\nï» ¹\nãħ ł\nì¡ ¸\nëħ ¹\nâĤ º\nâĸ ¶\níĥ Ĳ\nêµ ´\níĳ ¸\nÑ Ķ\níĶ ½\nÐ ħ\në° ¤\nÔ ģ\nì² ¨\nì¶ ĺ\në² Ĺ\në© ¸\nï¼ »\nï¼ ½\nï¼ ·\nì° Į\nÃ Ĵ\níı ´\nìĵ ¸\nì´ Į\nëģ Ķ\nëĶ ©\nëĩ Į\në© Ģ\në² ¨\nï¼ µ\në§ ¡\nëĭ «\nà¸ ¿\nãģ ±\nìĩ ¼\nìº ł\në® ¤\nê± ±\nì» ¬\nâĦ ĥ\nëĶ ±\nëĥ Ī\nìĭ ±\níĻ Ī\nëŀ Ĳ\nìħ Ģ\nìł ł\nÐ Ĩ\nëł ī\nï½ ħ\nï½ ı\níĻ Ģ\nëĽ °\ná» ®\ní Ĥ¹\nê½ ĥ\nï» ¤\nïº Ķ\nêº ¼\nìķ ī\nâĻ ¦\nï½ ģ\nìĵ ´\nãĢ ī\nì° ®\nì¤ ĺ\ná» ª\nëģ Ħ\nëĲ ¨\nìķ Į\níĿ ĺ\níħ Ĳ\nãĢ Ī\nê² ª\nëĭ ¥\nê² ¼\ná» Į\në§ ¨\nëģ Ĭ\në² ¤\nëĳ Ķ\níĿ ¡\ná» ¬\në¬ ĺ\nãģ ī\nëŀ «\níĶ Ī\ní ħį\nìŀ ĥ\nï½ ī\nìģ ľ\nâĸ ½\në¬ »\nâĸ ³\nï¼ ¸\nìģ ĺ\nì¶ °\nìĬ ´\nìķ ±\nìĩ Ħ\náº ®\nï´ ¿\nï´ ¾\nâĤ ½\nëĦ ĵ\në£ ©\nì³ ¤\nê´ ľ\nÃ Ļ\ná» ľ\nï¿ £\nëĵ Ń\në© ĺ\nê» ´\nëł ´\nÐ ĥ\në¬ µ\nì§ Ŀ\nãģ º\nðŁĺ Ĥ\nëŀ ¬\nìł Ĭ\nê´ Ħ\nìŀ Ĭ\níŀ Į\nìĦ ¯\nâĪ Ģ\nâĸ ¡\nëĢ Į\nëŀ Ļ\nï½ ĥ\náº ¶\nï¾ Ħ\nïº ĺ\në¹ ¼\nÃ Į\nâĸ ·\nê¸ į\në© ĭ\nãģ ĥ\nìĺ Ĩ\nìĺ ®\nëª ¬\në¡ ¤\nëł ¬\nëĬ ¦\nâĸ ª\nì¼ ĵ\nìľ Ī\nì§ §\nï½ ½\nëĥ ī\nï¾ Į\nëĺ Ĳ\nï¼ ĥ\ná» Ħ\nì´ ¬\nì¶ ¤\nï¼ ¹\nï» Ń\nâĤ «\nï½ ĩ\nìĺ ·\nëĸ ¨\nâī «\në¦ ¿\nâľ ¨\nÙ ±\nì¯ ¤\nê¹ Ķ\nðŁĺ Ĭ\nìĪ «\nê³ ±\nêµ ³\nï½ ĭ\nà¸ Į\nÄ ł\nëĶ ¸\në° ĳ\nìħ ĭ\níİ ´\nâľ ħ\níĥ ĳ\nëĪ ĩ\níı ¼\nðŁĺ į\nìĺ Ľ\nï» £\nÑ ĺ\nì© Į\në¦ ħ\nìĿ į\nï½ ¸\nëį ľ\nãģ ħ\níİ ¼\nëĭ Ŀ\në¿ Į\nì¼ °\nìĭ «\në° ¥\níĽ Į\nì¨ Į\në¹ Ļ\nï½ İ\në´ Ħ\nìĦ ¹\nï½ ²\nìĮ ĵ\nÒ ĳ\në° į\nëł Ģ\níĨ ¤\nï½ ¯\në¤ Ħ\nê½ ¤\nï½ Ĵ\nìķ ¨\nï½ ¼\nê¹ Ĳ\níģ Ĳ\nâĦ ĸ\në§ º\nïº ®\nëħ ģ\nê² ¸\nï» ł\níĬ ľ\nÅ ¹\në¥ Ń\nëĪ ī\nï½ Ķ\níĮ ¬\nìŀ ĩ\nï ¬ģ\nï» ¨\nëĳ ¥\nëŀ Ħ\nÙ ¬\níĭ ´\nìŀ ī\nÚ ¾\nìĽ ħ\nï» ®\nëĭ ī\nâī ª\nâĹ Ħ\nëĪ Į\níĽ ¼\nì¤ į\nÅ ¸\nì¤ ¬\nì¾ Į\nï½ ĵ\nï¾ Ĭ\nðŁı »\nï¾ ī\nÐ ģ\níĺ Ĳ\nï¾ Ļ\nê¼ ¬\níŀ Ĳ\nâĢ ¥\nëŁ Ń\në§ ŀ\nìĥ ¤\nïº Ĵ\níĭ ±\në½ ĳ\nÃ ķ\nâĪ ļ\nëĤ Ħ\nê¹ Ŀ\nëĨ Ī\náº º\nìħ Ī\nìĮ į\nâĢ ¡\nï¼ ±\nìģ ¨\nâĺ º\nëĴ ·\nìĺ ³\nðŁĳ į\nëª ½\nëĤ Ń\nïº Ń\në© Ī\ná» Ī\níķ Ģ\nëĭ Ļ\në¦ ĩ\nìķ ¤\nìį ¼\nãĥ µ\nÑ £\nìľ Ĺ\nâ ŃĲ\nï¾ ĺ\níĹ ¬\nê¾ ¼\nìķ Ĺ\nï» Į\nê± ·\nëħ ķ\në¡ ±\nìķ Ĭ\nï¾ Ģ\nìĩ ł\níĮ ©\nïº ª\në§ Ļ\nï¼ ¿\nê¿ Ķ\níİ ľ\në£ ¸\níĶ Ķ\nï» ³\nëı ķ\nìĭ ¼\ná» İ\në§ ĺ\nì¢ ĭ\níĨ ¡\nï½ ±\níĿ ĳ\ná» ¸\nì¦ Į\nì¹ ¸\nëŃ ĺ\nï¾ Ĺ\nï» ĭ\níĬ Ģ\në¥ Ļ\nì½ ©\nëģ Ĺ\nëį ´\nìħ ľ\nÂ ¸\në» Ĳ\nìĥ µ\nê² Ĳ\nëĵ ¬\në£ °\nãħ ĭ\nìĹ ī\ná» ĸ\nëĦ Į\nï½ ¶\në´ ĩ\nëĤ ³\nãĤ ľ\nëĸ »\níİ Ģ\nëį ©\níķ ¸\nÃ ·\nê¼ ¼\nëĶ ľ\në° ´\në© į\nâĹ ¯\nìĹ ĳ\nìĻ ¼\nïº ĳ\në¶ ķ\në¡ ¬\nï½ Į\níĨ ¨\nïº ´\nëł ĺ\nê° ¤\nìĪ ²\nÑ ĵ\nìħ ī\nï» ĵ\nëĪ Ķ\nëį §\nâĢ ¼\nï» ²\nê° ±\nê¿ Ģ\nëĭ ·\náº ¸\náº ª\nÆ Ĵ\nëį ¤\nìĪ Ń\nï½ Ĥ\nï½ Ī\nÅ ł\në£ ¬\nÑ µ\nëĸ ¡\nëĥ Ħ\nìĦ °\nëĵ Ī\nï¾ ĥ\nëĩ ¨\nï½ Ĳ\nêµ ½\nìĹ ½\nëĤ Ģ\në¬ ¶\nï½ ·\nìı Ł\níĺ Ķ\nê¼ Ī\nëģ Ī\nì¥ Ĳ\nïº Ĺ\nÄ Į\nëĪ ł\nëĸ ¼\níĢ ´\nâī ¥\nëĭ Ń\nì± Ļ\nê» ı\në© ¤\nìĥ ĺ\nëį ®\në£ ¡\nìĤ ½\nãĪ ľ\nÄ ¨\nâĢ §\nï½ º\nÄ £\nì¦ ī\nï¼ ¼\nÛ ©\nâĪ Ļ\në° ı\në¹ ħ\nðŁĺ Ľ\níĪ ´\nðŁĴ ķ\nãĢ Ĵ\nìŀ ĺ\nïº ¤\nï½ ĸ\në© ľ\në² ¼\nëĿ Ħ\nëļ ľ\nï» ĺ\nìĥ Į\nï½ Ħ\nì© Ķ\nï½ Ļ\nïº ©\nÛ ŀ\nâĺ İ\nìł ¤\nëĲ ©\nÅ Ŀ\nâŀ ¡\nï» §\nÐ ı\nì« ĵ\nê³ ½\nÉ ĳ\nãĥ ²\nëĤ «\në¦ ī\nì¢ ģ\në° Ń\nðŁĺ ģ\në¹ µ\nì² ©\nì» µ\nðŁĺ ĺ\në± ħ\nâī Ī\në¹ ļ\nï» ľ\nðŁĻ ı\níģ °\nìĦ ŀ\nï¾ ļ\nìĺ ¹\në¼ Ī\nëĤ ¯\nëŀ ©\níļ ¡\nï½ ķ\níĥ ĵ\nëĿ ł\nê³ ģ\nëĵ Ģ\nìĹ ł\nï¼ º\në§ ĳ\nëĭ ¿\nì¿ ¨\nãİ ¡\nÐ Ĭ\níĦ ±\nÅ ¨\nïº ³\nï¾ ı\nâĭ ħ\nê¼ ´\nâī ¤\níĮ ģ\nÎ ©\nê¶ ¤\nìĪ į\nâľ ¿\nì½ ¤\nëĪ ħ\níĨ ±\nãħ ľ\náĲ ħ\nÅ Ĵ\nðŁĳ ī\nï» ¦\nÐ ª\në¥ ľ\níķ «\nï¾ ĭ\nâĻ «\nê¹ ľ\në° ¸\nëĶ ĺ\níĿ ī\nï¾ ģ\nï¾ Ľ\nëł Ľ\nê² ¹\nì¿ ¼\nï» ¬\nâŀ ¤\nðŁĻ ģ\nïº ł\nëĨ ¨\në¯ ¹\nê¸ ĭ\në» Ķ\nê¹ ĥ\nëĳ ĳ\níĭ ¸\níİ Ļ\nâŀ ĸ\nãĥ ½\nì§ ļ\nï½ ¬\nï» ¥\níĮ ½\nâĢ Ĵ\nì ĮĢ\nìŃ ī\nëļ ±\nãĤ ŀ\níĭ Ī\nãĤ Ĳ\nëī ĺ\nÎ £\nê³ °\në¹ Ĺ\nï¾ İ\nðŁĺ Ń\níĿ ł\nìĹ ¿\nê° ļ\nì¤ Į\në§ µ\nï½ ³\nãģ ¢\nï» Ĺ\nâī ¦\nÚ ¤\në łģ\nê¼ ½\nï» «\nâī §\nì´ Ľ\nìł Ŀ\náº °\nâĻ £\nìº ĺ\nâĪ ĩ\nê² ī\në° Ł\nï» Ķ\níĸ ĩ\nâĸ Ĵ\nðŁĳ ı\nÃ ŀ\nðŁĺ Ĩ\nïº ¼\nâĿ Ĺ\nìº Ķ\nì¹ ©\nëĸ ¤\nëĥ ħ\nâĶ ľ\nï½ »\nÎ Ķ\náĥ ¦\nìŀ İ\nâĺ Ģ\nâĪ ¼\nðŁĶ ¥\në° Į\nìł ĸ\níĹ Ľ\nÎ ķ\nïº ĥ\në¶ ī\nâĪ ŀ\níĥ Ń\nÃ ĭ\nâģ Ħ\nãħ ĩ\nëĦ ¥\nëĭ ®\nëł ·\níĮ Ŀ\nìº ¡\në· Ķ\nì© į\níĤ ´\nëļ «\nâĵ Ĵ\níķ į\nâĻ Ĥ\nï¾ Ĩ\nâĨ ©\nìį ©\nïº ķ\níĿ Ļ\nÑ ľ\níĤ ·\níĿ °\níĥ ±\nëķ Ĳ\nï¾ Ĵ\n× ĥ\nëĮ Ħ\nìĺ ´\nìķ µ\nê¹ ¥\nëŀ Ń\nìª ¼\nãİ Ŀ\nðŁĺ ħ\nëı ĭ\nëª «\nïº ¸\në® ¬\në² ħ\nëĳ ł\nìħ °\nì» ·\nëĶ ª\nëħ Ķ\nãħ ¡\nìĶ »\níķ ı\nëį ±\nïº ¨\nï¾ į\nï½ µ\nì¢ Ģ\níİ Į\nï» °\nïº £\nÆ £\nðŁ¤ £\nï· º\nëĤ ļ\nâĭ Ĩ\në³ į\nðŁĺ Ħ\nìĸ Ģ\nìĻ ł\nëĨ Ķ\níĹ ¨\nï» Ľ\nï» Ŀ\ná» ¶\nìĸ ĺ\nìİ Ħ\nÚ Ĩ\nï» ŀ\nëĢ Ĳ\nê² Ķ\nï» µ\nâĹ ¦\níļ Ł\nê¹ ģ\nê° ĵ\nëĶ ´\nìı ĺ\nëļ Ŀ\ná» ł\nëŀ ´\nëĦ ī\nâĺ ŀ\nï½ ĺ\nÅ ½\në¦ İ\nâĸ ¬\nëŃ ī\nâĩ Ľ\nìį ¬\nïº Ł\nË ľ\në¶ ĵ\nìĽ °\nÅ ľ\nëŃ ĩ\ná» ²\nË ļ\nëķ Ģ\nâĺ ĳ\nðŁı ¼\nìĸ ½\nâĮ Ĵ\nÐ İ\nÉ ¾\níĮ ¡\nï¾ ħ\nìŀ Ń\nï½ ¨\nì¹ «\nìľ Į\nÒ Ľ\nêµ ¿\nëĭ ¦\nâĶ Ķ\nï¾ ĳ\nì§ ĸ\nìº Ħ\nãĢ ĥ\nÊ ¼\nê² Ł\nï½ §\nÄ ¢\níİ ł\në§ ·\nê° ĩ\nìĭ ¹\nðŁĴ ¦\nï¾ ľ\nëĬ Ļ\në² ¡\nÅ ¿\nðŁĺ ĭ\nðŁĴ ª\nì¿ Ħ\në© ķ\nìŃ ¤\nëĬ Ħ\nðŁĮ ¸\nãĤ Ŀ\nÇ İ\nï½ ļ\nÄ Ĺ\nëģ ĵ\nê¶ Ĳ\náµ ī\nãĥ Ĥ\nê» į\nðŁĺ ¦\nãĢ Ŀ\nðŁ¤ Ĺ\nÑ Ł\nìĹ İ\nâľ Į\nìī Ĳ\nÃ Ĩ\níĹ Ĳ\nðŁİ ī\nÎ ĳ\nï½ Ń\nðŁĴ Ļ\nìĽ ¬\níĢ ĺ\nï» ¢\nðŁĺ İ\níĳ ¼\níĿ ©\nï» Ħ\níħ Ģ\nëł Ĳ\nì¥ ¬\nÐ ĭ\nìĥ ·\nëľ ¬\nðŁĺ ĥ\nëĦ ¬\në¥ ¨\nìĽ į\nï½ Ĩ\nï½ ´\nãĥ ħ\nÃ ı\nï» ª\nâĻ ł\nëĬ ¬\në± Ģ\në° ĭ\nìĥ Ģ\nï½ ¾\nëĤ ±\nì» ¸\nðŁĴ ĸ\nðŁĳ Į\nÑ ŀ\nì§ ±\nË Ĩ\nðŁĵ ļ\nâŃ ķ\nï¬ Ĥ\nï» ¡\nëĳ ¬\níĪ ¼\nâĸ ¸\nê° ¯\nê¹ ħ\nï½ ®\nëĺ ¥\nÄ ¡\níĮ Ł\nÐ Į\nìĨ Ł\nïº ĵ\nï» ¼\nÃ Ľ\nãĥ ¾\nëĮ ĵ\níĴ ĭ\nìķ ĵ\nï½ ¹\nëĤ ¡\nðŁĳ ĩ\náº ¼\nãĢ Ł\nðŁĮ Ł\níĥ ł\nãĢ Ĩ\nâĢ Ł\në¸ Ĳ\nðŁĮ ¹\nìł ¼\nðŁĵ Į\nìĶ ¬\nâĹ Ģ\nðŁĴ ĵ\nê¹ İ\nìĤ Ĳ\nìĶ Į\nÑ Ľ\nâĶ Ī\në² ³\nãİ ŀ\nÕ ¡\níĤ µ\nðŁ¤ Ķ\nëĢ Ķ\nìĬ Ĳ\níĻ ī\nâľ ¦\nëľ ¯\nìł ¯\nëĶ §\nÎ ¦\nË Ī\nìī ¼\nâĹ Ĭ\nëľ ©\nëľ °\nï¾ Ĳ\në¿ Ķ\nìĹ ®\nì· Į\nïº §\nÎ Ĵ\nëµ Ļ\nï» Ĭ\nì° Ķ\níİ Ħ\nðŁĴ Ĺ\náº ´\nì° ¢\níľ ¼\nê½ Ĥ\nì± Ķ\nìī ´\nâĸ ¾\níĪ °\nëĭ Ľ\nâĿ £\nï½ ª\nðŁĴ ľ\nË ĺ\nãħ ¤\nâĨ Ĺ\níĸ Ħ\nâĻ ¬\nìķ °\nïº ľ\nâī ¡\nãĢ ĵ\nìĳ ¥\níĮ į\níī ģ\në» Ĺ\níľ ł\níľ ©\nâľ Ī\níĢ Ħ\nìĸ ĩ\nì¢ ĩ\níŀ Ļ\nëª ¹\nãĤ Ľ\nðŁĺ ±\nëį Ł\nà¹ ħ\nêµ ¶\nÙ «\nìĶ ģ\nâľ ª\nï¾ Ī\nðŁĻ Į\nâļ ¡\nÎ ļ\nì¼ Ī\nï¾ Ķ\nï¾ Ĥ\nêµ ī\nïº »\nðŁĴ ĭ\ná¹ £\nÓ Ļ\nìĨ ľ\nìĹ £\nâľ ©\nìľ Ļ\nïº °\náº ²\nìŀ £\nâĿ Į\nâĺ ģ\nìķ İ\nÄ ½\nÛ ģ\nãĦ ±\nëŁ ¿\níĮ ¸\nê½ ī\nìı ł\nðŁį Ģ\nâĨ Ķ\nëŃ ¡\nï» ģ\nï¼ Ħ\nðŁĴ ¥\nâĺ Ľ\níĹ ·\nëĳ ¡\nÎ ł\nÎ ¤\nâĦ ĵ\nïº ·\nÎ Ļ\nëı Ķ\nì§ ¤\nâĶ ĥ\nãĦ ·\nÇ Ĵ\nðŁ¥ °\nëĶ ķ\nìļ ¥\nì¸ Ħ\níĽ Ķ\nïº ĩ\nïº ¬\nðŁĺ ¢\në¹ ¡\nìĶ ¹\nÅ ³\nË Ŀ\níİ ĳ\nï¾ ĵ\nðŁĴ ļ\nëĬ ĳ\nêº ¾\níĨ °\nÃ ¿\nÐ Ħ\nëĮ Ĳ\në½ Ģ\nì· Ħ\nðŁ ĵį\nðŁĻ Ī\nâĹ Ī\nê¿ ĩ\nì¼ Ħ\níİ «\nðŁĩ ·\nâĶ ĭ\nâļ ł\në± ī\nì į°\nìĻ Ī\nÉ ª\nïº ĭ\nðŁĺ ľ\nÎ Ł\nðŁ ĻĤ\nâļ ½\nÅ Ī\në¹ Ķ\níĮ ľ\nà¹ ı\nìĸ ¹\níĪ Ń\nðŁ¥ ĩ\nãĦ ´\nëĶ ¥\nìŃ Ī\nâĪ Ĩ\nëĸ ³\në± ĥ\nìŀ ¦\nï» Ĳ\nÎ ľ\nâľ §\nÏ į\nìł ĵ\nâĹ ķ\nëĴ Ģ\nï» Ģ\nðŁĶ ´\nê½ ģ\nëĮ Ī\nëİ Į\nãĤ İ\nâ¦ ģ\nì½ §\nï¯ ¾\nâĿ ¯\nà¸ ħ\nðŁĻ Ħ\nâĿ Ģ\nðŁĶ ¹\nâĩ Ĳ\nêµ µ\nâĩ Ķ\në¶ Ĳ\nðŁĴ Ľ\nÎ ¾\níĥ ¬\nâĿ Ħ\nÒ £\nãĢ °\nâĪ ĳ\nâĺ ¼\nâī ł\nÒ ¯\nïº ¯\nê¿ ¨\nâľ ĸ\nÊ ĸ\níĢ Ģ\nê¾ Ģ\níĹ Ŀ\nâĶ £\nãİ ľ\nëĶ Ľ\nëľ ¸\nï º«\nê¿ °\nðŁĩ ¹\nÇ Ĳ\nÛ Ĵ\në£ »\nïº ĸ\nÑ ļ\nëĬ ł\nÛ ķ\nê¹ ¡\në¿ ľ\nì² ¼\nï¨ ĳ\në¥ µ\nìį ¸\níħ ħ\níĳ ¹\nÖ Ģ\nï³ Į\nãħ £\nìĳ ¤\nì½ ķ\nëķ ł\nðŁĮ ¿\níĥ Ķ\nìĽ ģ\nÎ ¶\nâŀ ľ\nìĬ ĺ\níĽ Ĺ\në© §\nìī ĺ\nÕ ¶\ná¹ ĩ\nðŁİ ģ\nï½ ¿\nï¼ Ĥ\ná¼ Ĳ\nâľ ķ\nâŀ ¢\nëĦ ¨\nì» «\nì¯ Ķ\nì° ľ\nðŁĴ °\níħ Ŀ\nãİ ı\në³ ¶\nÒ ĵ\nâĨ ³\nìĥ ´\níģ ĺ\nâĸ Ģ\në² Ļ\nà¸ ĥ\ná½ ¶\nÄ ķ\nâ¬ ĩ\në¤ ĺ\nðŁİ µ\nâľ ļ\nïº ı\nÎ ¡\nâĹ ī\nðŁĴ «\nÐ Ī\nìĸ Ħ\nì§ Ļ\nï» ĥ\nðĿĳ Ĵ\nëŃ Ħ\nâĿ ¥\nâĿ ĸ\nâĺ Ŀ\nÊ ¹\ná¸ ¥\nâĢ ¿\nãħ ħ\nê¸ ģ\nëķ ¡\nëį ¥\nâĪ ©\nê» Ħ\në® Į\nÒ ±\nâĪ Ĺ\nëł Ļ\nïº Į\nË Ĳ\nðŁĺ ³\nðŁĳ ©\nðŁİ ¶\nì¿ µ\nðŁ¤ ©\nê· ¤\nëĮ Ķ\nïº Ĳ\nÏ İ\nì¶ ¥\nï½ Ĭ\ná¹ Ń\në¤ ¼\nâĸ «\nì§ ł\ná¼ Ģ\nê» ĳ\nëĮ ģ\níĢ ¸\nâĻ Ľ\nðŁĴ ŀ\nâĸ °\nðĿĳ ĸ\nëĿ ¤\nà¤ ¦\nì´ ĺ\nðŁĺ ĩ\nëĶ ¤\nÎ Ĺ\nðŁĻ ĩ\nË Ľ\nì© ¡\nâĪ §\nÕ ¥\nÑ Ļ\nëĲ ¬\nëĸ Ħ\nðŁĮ ·\nìĹ Į\nðŁĺ ¥\nëĪ ´\nï» ļ\nÉ Ľ\nïº Ħ\nï» ı\nÅ Į\në² ļ\nìĭ £\nïº Ģ\nÎ ĵ\nðŁĺ Į\nË Ļ\nëŀ ı\nðŁĶ ¸\nðŁĵ ·\nëģ ½\níģ ½\nðŁĴ ¡\nðŁĮ ±\nëº ı\nìģ ł\nìĥ Ĳ\nëı Ĺ\nì¸ °\nëĪ ķ\nÎ Ŀ\nâģ ī\nðŁĮ ¼\níĮ ł\nâĭ ¯\náĥ ĺ\nâľ ¤\nê± Ķ\níĮ İ\nðŁĴ ¯\nìı Ļ\níĹ ī\nÙ Ń\nì½ °\nïº ¿\nï» ±\nì± Į\nâĺ ķ\nðŁİ Ģ\nÄ Ŀ\në° §\nìĤ ¿\náĳ ķ\nðŁį ĥ\nâĩ ¨\nÎ Ľ\në§ ´\në³ ķ\ná ĳĲ\nâĸ ĵ\nðĿ ĳľ\nâĻ »\níĤ ¥\nÕ ¸\nãĪ ±\nëº Ģ\nì² ¸\nïº Ľ\nðŁı Ĩ\nðŁĩ ª\nâĿ ĵ\nÄ Ģ\nì½ ¥\nðŁĩ §\ná½ ·\nâľ Ĥ\nìŀ ¼\nï§ ¡\nðŁĵ ¸\nâĻ ¯\nÉ Ķ\ná½ ¸\nâĮ ª\nï» ĸ\nï¥ §\nâļ «\nâĶ Ĺ\nðŁĮ Ī\nï» ©\nðŁĵ ²\nÏ Ī\nðŁĺ ¡\nðĿĳ İ\nìľ ½\nì§ ¬\nì§ Ĭ\ná½ ³\nìĮ ¤\nëĤ į\nâī Ĵ\nðŁĳ ¨\nâĺ ĺ\nÓ ©\nâĤ ĵ\nâĪ Ĥ\nï¹ ģ\nðŁĴ Ĳ\níħ ĥ\nðŁı ½\nê· Ħ\nðŁĺ ı\nðŁĮ º\nðŁĺ Ķ\nï½ «\nâľ İ\nëµ Ī\nðŁĩ ¸\nâĢ £\nâŀ Ķ\nëĺ ĺ\nìĥ ¬\nÊ ĥ\nâ¬ ħ\nì© Ĳ\nðŁĻ Ĩ\nðŁİ Ħ\nÄ ¾\nâŁ ¶\náĥ Ĳ\nâĺ »\nì± ķ\nìģ ©\në½ ķ\nìº £\nðŁĳ Ī\nðŁĻ ĭ\nï¾ ĸ\nÒ ļ\nÕ «\nìĮ Ī\në² §\nðŁĩ ®\nï½ Ŀ\nðŁį ģ\nìĹ ¥\nÄ ³\në½ Ĳ\níį ½\níĽ ĳ\nâĤ ¹\nãħ ģ\nìĶ ½\nðŁĶ ģ\nà¤ ¯\nê¾ ¹\nëī ľ\nâĹ ¡\níķ Į\nÎ ĺ\në£ ¹\nìĻ ĵ\nðŁĩ ¦\nðŁĳ Ģ\nâĶ Į\ná¿ ¦\nëĦ Ľ\nìĦ £\nìŃ Ļ\nï± ł\nÎ ŀ\nÊ »\ná¿ ¶\nâĿ Ŀ\nê± Ģ\nëĸ ´\nãĦ ¹\nðŁĴ İ\nÏ ¹\nâĽ ħ\nï» ķ\nãĥ ±\nï½ Ľ\nëĮ ķ\në¹ ½\nì¥ Ķ\nì¿ ¤\nðŁĸ ¤\nÑ Ĵ\nê¹ į\nëİ Ģ\nìĭ ¯\në» ¤\nðŁĵ ŀ\nðŁĵ £\nðŁĺ Ŀ\nìį ¹\nìĹ ¡\nì° Ĳ\ná½ Ĳ\nï» Ī\nâľ į\nÄ ı\nðŁĮ ŀ\nâĦ ¦\nê½ Ŀ\në» ĺ\nìĪ ±\nâĶ ĺ\nðŁĮ »\nâĤ ´\nâŀ ¨\níĲ ģ\nê ¶Ī\nâĺ ¢\nðŁĺ Ī\nï½ ©\nâĦ Ĺ\nê° Ń\nê° ¸\në» ĳ\nì¥ ´\nì» ¥\nï¤ Ĭ\nï» Ĵ\nðŁĺ ķ\nâĺ Ķ\nìĺ Ĳ\nðŁļ Ĺ\nëĹ Ħ\në§ ı\nÕ ½\nâĸ »\nâŁ µ\nìī °\nï» ĳ\nâĻ ©\nÎ ¥\nðŁĺ £\nâĬ Ĥ\nãħ Ĥ\nìħ ¸\níı Ħ\nâľ ½\nì¦ Ļ\nâĸ £\nê± į\nê¿ ĭ\nì« Ħ\nìº ĩ\nðŁĩ µ\nðŁĳ ĳ\nâľ ĺ\nðĿĳ Ľ\nìį ½\nìº ī\nï¬ µ\nðŁĶ º\nâĦ ®\níĥ ¤\nðŁĩ º\nðŁĴ µ\níħ ¨\nï½ ĳ\nÎ ¨\nìĥ ¹\nìĸ ķ\nì¹ µ\nðŁĵ ±\nà¤ µ\nðŁĳ Ĭ\nðŁĴ Ħ\nðŁĴ Ŀ\nãĮ Ķ\nìĻ ģ\nÐ ĩ\nà® Ĳ\nâĸ ¹\ná´ Ľ\nâĹ ĺ\nëº ¨\níĥ ī\nìĸ Į\nðŁĲ ¶\nãĤ ĳ\nË ĩ\nÅ ı\ná½ ¹\nìħ §\nï¹ °\nðĿĳ ¡\nðŁĶ Ŀ\nðŁĺ »\nðŁĴ ĥ\nðŁ¤ ¦\nðŁį Ĵ\níĢ µ\nâľ Ĩ\në¹ ´\nï§ ¤\nï» Ļ\ná´ Ĺ\nðŁĮ ´\nÍ ¾\nëĮ ĳ\nì¨ ĭ\nìµ ¸\nðŁİ Ī\nðŁı ł\ná½ ±\nÛ Ĩ\ná¿ ĸ\nâĢ Ľ\nì° ¼\níķ ¥\níĹ ´\nðŁĩ ¬\nì° Ŀ\nâĪ ł\nï¼ ĩ\nâĬ Ļ\nâĿ ĳ\nëĦ ĭ\nëŀ Ĺ\në° ī\nìĹ Ĭ\nì¢ Ĩ\níĮ ¥\nï° ²\nðŁĵ ĸ\nðŁĺ ®\nâļ ª\nðŁĺ ļ\nâĿ ŀ\nðĿĳ Ł\nðŁİ Ĥ\nÅ ķ\náĲ Ī\nêº ½\nì± ł\nïº Ŀ\nê¿ ī\náĥ ł\nðŁı ĥ\nðŁĴ ¸\nâĿ ģ\nâĹ ¾\nÚ ª\ná¹ ĥ\níĬ ¬\nðŁĩ ±\níİ Ń\nðŁĺ ŀ\në¾ °\ná¹ Ľ\nëĽ ¸\nâĿ Ĥ\nêĴ ³\nâĶ Ĳ\níĵ °\nâŀ ł\nê´ ĺ\nëħ ĺ\në» ¥\nì¾ ħ\nðŁĺ Ĳ\nâĪ ª\nðŁĳ ģ\nâĪ ´\nâĹ ģ\nëº Ĳ\nìŀ ¤\nì± Ĺ\nðŁı ¾\nÎ §\ná½ »\nâŀ ¥\nìŁ Ī\nï» ī\nâĸ Į\nãĥ ®\nðŁ¤ ¤\nâĩ ĵ\nì¼ ł\ná´ ı\në§ ¬\në» £\nðŁĴ ¬\nðŁį ĵ\nÄ ¸\nÙ ¹\nÊ ¿\ná½ °\nëķ ľ\nì° ¡\nì° »\níİ į\nðŁİ ¯\nðŁį Ĥ\nðŁĳ §\nâĻ ¢\náĨ ŀ\nâĻ §\nâļ ľ\nâľ ī\nëĵ ¦\nëŃ £\nìĪ ı\nìĵ ±\nÅ Ń\nÊ Ĭ\nâĴ ¸\nâĩ ©\nðŁĴ Ķ\nÕ µ\nÐ ī\nÒ »\në§ £\nìĽ ľ\nì¿ ¡\níĽ ħ\níĽ ¤\nïº ¢\nâľ ĭ\nâĪ Ī\nðŁĮ į\nÊ ľ\nëĬ ª\nëĴ ¹\nïº ²\nâĸ Ħ\nãħ Ī\nëļ ¤\níİ ©\nâĪ ¨\nðŁ¤ ª\náĥ ļ\nê³ ¶\níĬ ķ\nðŁĺ ¬\nâĪ «\nðŁĳ ĭ\nÒ Ĳ\níĬ ¿\nðŁĶ µ\nðŁĴ ¨\nðŁĮ Ļ\nëĩ ©\nâľ ³\në¨ ģ\nëº Ħ\nìĻ ĳ\nìº ħ\níı Ī\nðĿĳ Ļ\nðŁĴ ĺ\nãİ ¥\nâĿ ı\nâľ °\nï¯ ¿\nëµ Ĳ\nì¼ Ĳ\nïº ±\nÕ ´\nï¬ Ģ\nâľ ´\nðŁ¤ Ń\nðŁĳ Ĩ\nâĽ Ķ\nê· ĵ\nìĮ Į\nðŁ¤ ·\nÛ Ķ\nðŁ§ ¡\nðŁĺ ĵ\nÎ ĸ\nâı °\nê² ľ\nëĭ ³\nëİ ħ\në° Ī\nï® Ĳ\nðŁı ¡\nâĨ ª\nâĵ Ķ\nâľ Ĭ\nÏ ²\nÜ Ĳ\nðŁĩ ³\nÖ Ĥ\nâľ ı\nìĸ Ĺ\nì« Ļ\nðŁĺ ²\nÄ Ń\nâĻ Ń\nâĶ ı\nâĹ Į\nðŁĺ ¯\náµ Ĵ\níĬ ł\nÄ ·\nÊ ģ\nà¤ Ł\ná¹ ģ\ná¼ °\ná¿ Ĩ\nâ «\nâ« ¸\nëį «\nì³ ĩ\nì¼ ¤\níĽ ¨\nðŁĴ Ł\nÊ Ģ\nÊ ³\nëĵ Ĳ\nâķ °\nâĿ ĩ\nÇ Ģ\nÇ Ķ\nÉ ´\nâĺ ļ\nâĺ ľ\nê¶ Ĥ\nì« Ĵ\nì± Ī\nðŁĩ ¨\nðŁİ ¥\nðŁĵ Ŀ\nÄ §\nðĿ ĳĲ\nÛ Ī\nà¤ ¬\nì¬ Ĳ\níĹ ¥\nâĻ ¨\nðŁį ´\nï¹ ı\nË ĭ\nðŁ¥ º\nâĸ ¨\níĻ ĭ\nâĪ ħ\nëģ Ļ\nëŀ ł\nìĨ ¥\nâĢ ĸ\nðŁ¤ ĺ\nðŁĲ »\náµ ķ\nÇ Ŀ\nâĺ ı\nïº ļ\nï» Ĥ\nðŁļ ©\nìĪ Ł\nË Ĭ\nâ¤ µ\nðŁĴ §\nã ħį\në© ©\nÆ ¬\nÎ ĩ\nâĩ §\nâĵ ļ\nìĤ ¯\nìĪ ¯\nëĨ ĭ\nâľ ¯\nðŁļ Ģ\nÚ ĺ\nÚ ¨\nâľ Ń\nê² ħ\níĮ °\níľ Ļ\nðŁĮ Ĭ\nðŁİ ĵ\nðŁĺ Ļ\nË ĥ\nðŁĴ ģ\nðŁĳ İ\nâĺ ¹\nðŁĺ «\nðŁĴ »\nëĤ µ\nìĿ Ĭ\níĮ »\nÒ ³\ná½ ²\nâŀ ŀ\nëĤ ĳ\nëĿ Ī\nì£ ¤\nï» ¯\nðŁĩ ©\nðŁ¥ ³\nâĴ ¼\nðŁ¦ ĭ\nâĺ Ĥ\nðŁĺ °\nðŁĻ ĥ\nðŁĺ Ĵ\nÛ İ\nÏ ķ\ná¸ ¤\në£ ½\nìĬ ¥\nðĿĳ ī\nÉ Ĳ\nðŁį İ\nâķ ¯\nâķ ¹\nàº ²\nï¾ ł\në¹ ķ\nïº Ĩ\nÊ º\nÓ §\nâĨ ł\nëĥ ĩ\nìİ Ī\nìŁ ¤\nï± ¢\nâķ ¬\nâĺ ł\nðŁİ Ĭ\nãį į\nãİ İ\nâĺ °\nâľ ĥ\nãħ ī\në¯ Ī\në¹ ¤\nìı Ń\nðĿĳ ¢\nðŁĲ ¾\nÅ ĭ\nðŁĳ ¶\nâĶ Ľ\nï¿ ¢\náĥ ¡\nÄ ¼\nÅ Ĩ\nÑ Ĳ\nìĥ Ľ\nìĺ Į\nì± ¤\níħ ģ\níļ ĥ\nï³ Ĭ\nðĿĳ Ķ\nðŁĩ «\nâĭ °\nðŁĺ ¨\nâĤ ©\nÕ ¬\ná¸ į\ná» ´\nâĨ ĺ\nâĺ ¯\nãħ ı\nìł ¬\nâĻ Ķ\nðŁĶ Ķ\nðŁĺ ł\nðŁĻ Ĭ\nà® ľ\ná¹ ħ\nâĹ Ĳ\nâĿ Ī\nâŀ ½\nìĥ ħ\nðĿĳ ł\nÆ ¢\nâĭ Ļ\nê° Ľ\nëĿ µ\në£ Ł\nìı ľ\nïº ģ\nðŁĴ Ń\nâĬ ĥ\nðŁĲ °\nãħ Į\nÜ ĵ\nâŀ ķ\ná½ ģ\nìķ ³\nðĿĳ Ŀ\nðŁİ ¬\nÉ ¡\nà¤ Ĺ\náĲ ī\nì© ľ\nì¶ §\nï³ ī\nï» ħ\nðĿĲ ŀ\nà¤ ¶\nðŁĵ ¢\nðŁį ĭ\nðŁĴ ħ\nï¾ ķ\nâ¬ Ĩ\nâĪ µ\nðŁ¤ ĳ\náĥ £\nÆ Ħ\nÑ ¹\ná¼ Ķ\nê° ł\nê´ Į\nê· Ĳ\nëĽ ´\nì± ĺ\nï® Ń\nïº ¹\nïº ¾\nâľ Ĺ\nâĿ ¦\nðŁĳ ¦\náĥ Ĺ\nÙ ²\ná½ ´\nâĪ ı\nâľ ®\nê¹ °\në² µ\nìĦ Ģ\nì© Ŀ\nïº ŀ\nïº ½\nðŁĩ Ń\nË Ĥ\nðŁį ĳ\nðŁį Į\nðŁĶ »\nê¹ ¬\nìĬ Ń\nìľ ·\nðŁĽ ĳ\nÇ §\në¼ Ľ\nïº ¡\nïº º\nðĿĳ ļ\nðŁĵ ¦\nðŁĶ İ\nðŁĹ ĵ\náĥ Ķ\nâľ Ĵ\nâľ ¡\nðŁĮ µ\nâĶ ķ\nëĢ Ŀ\nðŁį Ĭ\nâĺ ĥ\nìĺ ħ\nà¦ ¬\nðŁ¦ ģ\nâİ ¯\nðŁĲ ķ\nÑ ¿\nà¥ ¤\nà¼ ĭ\nê· Ī\nì« Į\nðŁĩ °\nâĿ ī\nì« Ģ\níĿ Ħ\nðĿĲ ¢\nðŁļ ¨\nâĻ ¤\nðŁĺ ©\nðŁį į\nðŁĺ ĳ\nðŁļ ļ\nÖ Ħ\në «\në« ¼\nà¤ ı\ná¿ ·\nâĮ ©\nâĺ Ĳ\nâŀ £\nê¸ ±\nê¼ ¿\nëĦ Ŀ\nìı ´\nìļ ¤\nì¿ ±\níİ Ĳ\nðŁĴ ¢\nì´ Ĳ\nâĩ ĳ\nâĶ ĵ\nâģ ¾\nÜ Ŀ\nðŁ į°\nâ´ °\nÆ ı\nÏ Ł\nÚ º\nÛ ĥ\náĦ Ĵ\nâĪ Ł\nâĿ į\nãĦ ²\nìľ ħ\nì¤ ı\nðŁĩ ²\nêº Ħ\nðŁİ ¤\nâľ £\nâ¸ Ŀ\nï¸ µ\nàº §\náĢ Ļ\nâķ ł\nÕ ¯\nâı ©\nðĿĳ £\nðŁĴ £\nÅ ĺ\nà¥ Ĳ\nâģ ĥ\nâĮ ĺ\nê» Į\nìĮ Ķ\nðĿĳ ĺ\nðŁ¤ ĵ\nÕ ¿\nà¤ Ń\nâĮ ļ\nâľ Ŀ\nðŁĲ ¼\nË Į\nâķ ļ\nï¦ Ĺ\nâĿ ķ\nâķ £\nðŁĲ ±\nà® ¤\nÑ ¾\nà¤ ļ\nà¤ ľ\nìĪ Ħ\nìļ ľ\nðŁİ ®\nÉ Ĵ\nÚ ·\nàº į\nâĨ µ\nâ Īĺ\nâĿ Ĭ\në¿ į\nìĲ Ī\nìļ ĺ\nì¯ §\níĥ ¯\nìĸ ı\nï¸ °\nðŁĩ ¯\nðŁ§ ļ\nðŁĺ µ\nðŁĺ ·\nðŁĮ ³\nàº ¥\nÄ ī\nÄ ¥\nâľ ¶\ná¿ ¾\nâĬ ±\nâĺ ¾\nê° ī\nê¼ °\nëº ĳ\nðŁĶ Ĭ\nðŁĸ Ĳ\nÅ ¤\nÒ «\nà® ®\nâĮ Ī\nâĹ Ĺ\nëĦ µ\nëħ ľ\nëľ ¹\nðĿĳ ¥\nðŁĴ ¿\nðŁĽ Ĵ\nÊ Ĵ\náŀ ĵ\nðŁĲ Ŀ\nðŁ¦ Ħ\nðŁį ·\nâĺ Ł\nï¸ ¶\nðŁ¤ Ł\nÔ ±\nâĨ ²\nâĪ İ\nâľ «\nëĩ ½\nëı Ĳ\nëķ Ħ\nï¦ ³\nï§ Ŀ\nïº Ļ\nðŁĳ »\nðŁĵ º\nêµ ¼\nìĮ ©\nðŁĮ ²\nÈ ±\níĶ ķ\nðŁĺ ¤\nãĮ ¢\nÊ Ķ\nà¤ ¡\ná¼ Ī\nëİ ĥ\në© ±\në® Ī\nðĿĲ «\nâĬ ķ\nëĥ ł\në» ¬\níĭ Ķ\nÕ ¤\ná¼ ±\nâľ ¥\nâĺ Ħ\nâĪ ¥\nâļ ķ\nðŁĳ Ħ\nðŁİ ħ\nàº Ļ\nâĶ ¬\ná½ µ\nÕ ¾\nÖ ģ\nâĹ Ķ\nê¿ į\nëĸ µ\në© İ\në® ´\nìķ ´\náĥ ľ\ná¼ ¡\nâĶ Ĭ\nâķ ®\nâĹ ¼\nðŁį ¾\nðŁĽ į\nðŁĳ Ĺ\nðŁ¤ ŀ\nâľ Ħ\nÕ Ģ\nà¦ ²\nË ī\nâŁ ¨\nÄ ¯\nÏ Ĭ\ná´ ľ\në¹ ³\nï³ ĭ\nï¿ ł\nÄ ª\nâĤ ¸\nâľ ±\nê» Ĳ\nëĭ »\në§ ¸\nìŀ ¿\nì© ¨\nì ŃĲ\nì° ¿\níħ Ł\nðĿĲ §\nðĿĳ ĳ\nðŁĮ İ\nðŁĵ ®\nðŁķ Ķ\nâĹ Ļ\nâĹ »\nâŀ §\nìŁ Ŀ\nâľ ¬\nãĥ °\nâģ Ī\nâ ĵĺ\nðŁ ĴĮ\nï¬ ĥ\nàº Ķ\nìĶ °\nðŁĺ ª\n× Ģ\nìĥ ¨\nïŃ ĭ\nðŁį ķ\nðŁĺ ´\nÏ ³\ná¼ Ħ\ná½ ħ\nâĩ ¢\nâķ Ń\nìĺ »\níĬ ¤\nÜ ĺ\nâ¤ ´\nâĹ į\náŀ Ł\nðŁį º\náŀ ļ\nðŁı Ĭ\nðŁĲ ·\nÊ Į\ná½ º\nâģ »\nê½ Į\nëĪ Ĺ\në Ĺı\nì¿ °\níĢ ¼\níį ħ\nï· ²\nðŁĮ ı\nðŁį «\nðŁį ³\nðŁİ °\nðŁĳ °\nðŁĴ ²\ná¥ Ļ\nðŁĲ Ł\nï¿ ¡\nðŁĹ £\nðŁį ľ\nâľ ²\nãİ ¢\nðŁĶ °\ná¼ ¸\ná½ ĳ\nÄ İ\náĦ Ģ\nâĻ ķ\nëł Ŀ\nìĪ ´\nïŃ Ń\nÓ ľ\nÔ Ģ\nëĢ ľ\nëĥ Ķ\nìĬ Ľ\nì« ĳ\nìº ¥\nìº ¬\nðĿĳ ¦\nðŁĶ ¶\nì¾ ¨\nðĿĲ ļ\nðŁį »\nðŁĴ į\nðŁ¤ ¡\nðŁķ Ĭ\nâ½ ĩ\nâĵ Ĳ\nðŁį Ń\nðŁį ª\nðŁĶ Ĩ\nÒ ¡\ná´ ĩ\nÉ Ĺ\nÜ Ķ\nâĦ İ\nâĿ ĥ\nëĹ Ģ\nï² Ķ\nïº Ī\nðĿĲ »\nðŁĴ Ĭ\nðŁļ «\nÑ °\nÑ ³\nà¤ ·\nâĹ ł\nðŁĳ ¤\nï¾ ĩ\nâĺ ĵ\nðŁį µ\nðŁ¤ ¨\nâĸ Ń\nà® ´\nÜ ¢\nÜ ¬\nà´ ®\nðŁķ º\nÔ ¹\nÕ £\nà´ ¯\ná ´Ģ\nâĮ ī\nâľ Ĳ\nâŀ ¦\nê¹ ½\nëĮ ľ\nðŁı ¥\nðŁĵ ©\nÒ ¹\nÓ ĺ\nà¤ ħ\nâĿ §\nÆ Ĺ\nâĹ ½\nðŁĳ «\nðŁİ §\nðŁĳ £\nâľ »\nðŁĻ ħ\nðŁĺ ĸ\nðŁĴ ®\nàº °\nðŁĶ ľ\nðŁį Ħ\nðŁ¤ Ŀ\ná ĥĿ\náŀ Ģ\nâĩ ¦\nÊ ¾\nÒ ®\nÕ ¼\nà¤ Ĩ\nâĹ ħ\nâļ ĵ\nâļ ĸ\nê¿ ©\në¯ Ħ\nìĲ Ĳ\nìŀ °\nì§ Ń\níĭ ĭ\níİ ¨\níĻ §\nï² ĳ\nðŁİ Ĺ\nÙ ³\nðŁĳ ¸\nà¦ ®\nðŁĳ ķ\nÚ µ\nâĢ ¾\nâŀ °\nðŁĳ ¯\nðŁİ ¼\nðŁı ģ\nÄ º\nÊ ı\nÚ ³\nâı ±\nê½ Ī\nëĿ Į\nìĮ ī\nìĹ ·\nìŀ ´\níĹ ¹\níľ ¨\nðĿĹ ²\nðŁĮ Ĳ\nðŁİ Ļ\nðŁı µ\níĽ Ļ\nðĿĳ ħ\nðŁĺ ¶\nâĵ ħ\nâķ ¥\nðŁį ı\nï¦ İ\nÕ ©\nðĿĲ Ħ\nÓ £\nÚ ¿\nâĻ ļ\nðŁĶ Ĺ\ná¸ «\nâĭ ®\nâĸ ¦\nâĽ ½\nâľ µ\nãħ Ĩ\nãħ Ĭ\nëĦ Ļ\nëĿ ¨\në¥ Ħ\nìĦ ¦\nì§ °\nì§ ¹\níī Ī\nï§ ĳ\nï» ĩ\nðŁĮ ¾\nðŁı ĸ\nðŁĲ ĳ\nðŁĴ ³\nðŁĵ Ĩ\nÛ ĩ\nÜ ķ\ná½ ½\nëĦ ľ\nà´ ²\nà´ ³\nàº Ń\náĥ Ľ\nâĿ Ķ\nâĳ ħ\náĥ ¥\nðŁĵ ħ\nâŀ ³\ná´ µ\nï¹ ¡\nï¹ ¶\nÎ Ĩ\nà¤ ¥\náī µ\nâĿ Ļ\nâĿ ±\nëī ł\nëİ ł\nëı Ľ\në¿ ħ\nìĶ ¸\níĳ ¯\níŀ ī\níŀ Ľ\nï§ Ħ\nïŃ ĺ\nïº ¦\nï» ¸\nðĿĳ Ĥ\nðĿĳ ı\nÏ ĳ\nÚ ł\náĢ Ķ\náŀ Ķ\ná¹ ¢\nëĦ ¸\nðĿĲ ¨\nðŁĩ ´\nÕ °\nðŁĳ ł\nðŁį Ĩ\nðŁı Ģ\nðŁ ĳĲ\nðŁį ĩ\nðŁĲ £\náĪ Ń\nÜ ª\nðŁ ĮĢ\náŀ ĺ\nâĩ Ħ\nðĿĲ Ģ\nÊ Ļ\nâĶ ¼\nðŁı ¿\nÆ ·\nÈ ł\nÑ ½\nâĤ ¨\nê´ Ń\nê¹ »\nëĶ ¨\nìĪ Ģ\nì¾ °\níĨ Ī\nï® §\nï¯ ½\nðŁĶ ħ\nðŁĶ ®\nÅ ¢\nÊ °\nÑ ¸\nà¤ £\nâĬ Ĺ\nëª Ħ\nï¹ ·\nïº ħ\nðĿĲ µ\nðŁĮ ¶\nðŁĵ °\nðŁĶ ·\nðŁĸ Ĵ\nðŁ¤ ²\nëī ©\nðŁİ Ĩ\nðŁ§ Ĳ\nðŁį ®\nâĨ º\nâĿ ¢\nðŁĳ ª\nðŁĳ ±\nâĨ ¡\náŀ ı\nÚ ķ\nðŁį ¹\nðŁĴ Ģ\nË ®\nÓ ¨\nÖ ħ\nà¤ ĩ\nâĤ ¡\nâĪ ķ\nâĺ ī\nê¹ ¼\nê¼ Ĳ\nì½ ¸\nðĿĲ ¬\nðŁı ħ\nðŁĳ Ļ\nðŁĴ ī\nðŁ¤ Ļ\nÈ ĺ\nÉ ³\nÉ ¹\nÙ º\náĢ Ħ\ná¿ ³\nâļ ĺ\nâĿ Ĩ\nëĨ ī\nìĸ į\nìĺ ĩ\nì¥ ĺ\níĸ ħ\níĻ ĳ\nï® Ĭ\nï¿ Ń\nðĿĴ Ĳ\nðĿĹ ¢\nðŁĶ ĸ\nðŁĶ ¨\nðŁļ ĳ\nðŁļ ²\nÆ ¸\nâĹ ¥\nðĿĲ Ń\nðŁį ½\nâĹ ĳ\nâĵ ĩ\nðŁĶ ±\nâľ ¼\nï¹ ĥ\nâķ ±\nãĢ Ĺ\nðŁı ĭ\nðŁļ ´\nðĿĲ ®\nÄ ļ\nÕ ı\nÄ ¶\náĥ ĳ\ná¹ ¬\nÄ Ī\nÄ Ĵ\nÒ °\nÓ ķ\nâ Ĳ\nâĲ £\nâĹ ¢\nâļ Ļ\nãħ Ĺ\nê° ¬\nê³ ª\nê» Ģ\nëĦ ´\nëİ ģ\nëĿ Ķ\në¬ ½\nëŃ į\nìĩ ³\nì° ¹\níĮ ¹\níŀ Ŀ\nï® ĭ\nï ¶Ī\nðĿĴ Ĥ\nðŁ¥ Ģ\nðŁ¦ ħ\nÊ ĺ\ná¼ ĳ\nâģ İ\nðŁį ŀ\nâĨ ĸ\nâĨ Ļ\nðŁİ ĥ\nâĦ ¡\nâĭ ±\nðŁĶ į\nà² ¨\náµ ĥ\nâĶ «\nâ¦ ¿\nðŁĩ »\nÆ ¤\nÒ ı\nÒ ·\nÛ ī\nà® ķ\ná¸ ³\nï¬ ±\nðŁĨ Ķ\nÚ Ń\nÛ ¦\náħ ¡\nâĦ ¹\nê¿ İ\nëķ Ķ\në¼ ī\nìļ §\nì² µ\nì´ ¨\níĬ Ī\níĸ Ĳ\nðĿĹ ĺ\nðŁĩ ¿\nðŁİ ĸ\nðŁĳ ħ\nðŁ ĵĺ\nðŁļ Ļ\nðŁĽ µ\nà¶ ½\nâĽ µ\nðĿĲ ³\nðĿĲ ¸\nâļ Ķ\nðŁĳ Ń\nÓ ĳ\nâĶ ¯\nðŁħ ¿\nðŁĺ ¹\nï¿ «\nâ¼ ¤\nðŁĴ ĩ\nðŁĵ İ\nðŁĸ ĭ\nà¦ ¸\nðĿĲ į\nÄ ²\nÏ ĭ\nÑ ¬\nÚ ¬\nÜ Ĵ\ná´ ¬\nï¨ Ħ\nÉ £\nË ĳ\nÏ µ\nÒ Ŀ\nÛ ¥\nÜ ł\nà¹ Ľ\náĥ ķ\náĬ ķ\ná¾ ¶\nâĤ ·\nâĩ ¾\nâķ ©\nâĸ Ĳ\nâĺ ª\nâĺ ®\nâĿ ļ\nâĿ Ń\nâŀ ±\nâµ İ\nãı Ĭ\në© ĵ\nìĹ ¾\nìª Ħ\níĵ Į\níķ ¼\nïŃ ¬\nðĿĳ Ĩ\nðĿĳ ŀ\nðĿĸ Ĭ\nðŁİ ¸\nðŁı Ħ\nðŁĳ µ\nðŁĴ ł\nðŁĶ ĺ\nðŁ¥ Ĥ\nÅ ª\nà· ĥ\ná´ ¼\nâĬ °\në³ ı\në´ £\nï¥ ľ\nðŁĵ Ī\nðŁķ ¯\nðŁ§ Ģ\nâĻ Ĳ\nðŁĨ Ĺ\nðŁĵ ķ\nðŁ§ ģ\nÜ «\nâĿ Ĳ\nÕ ķ\nà½ ķ\nâŀ Ŀ\nà¦ ķ\nðĿĲ ¶\nÉ ¢\nÎ Ħ\náĨ ¢\nâĤ ±\nÕ į\nà¡ ķ\ná´ °\ná¸ ©\nâĽ ·\nâĿ ®\nê¡ ĵ\nëı ¤\nëĹ Ĳ\nëµ Į\nìĳ Ī\níı ¿\níĹ µ\nðĿĲ İ\nðŁĨ ĺ\nðŁı Ł\nÉ ¥\nÕ »\nà¡ Ķ\nà¤ ĸ\ná´ ¸\nâİ Ļ\nâİ ¥\nâı ³\nëģ ķ\nëĬ ī\nì¡ į\nì¹ ¡\nï¦ ¶\nï¬ Ł\nï® «\nï® ¯\nï± ĥ\nï ·»\nïº µ\nðĿĹ Ķ\nðĿĹ ¡\nðŁİ ¨\nðŁĶ Ĵ\nÚ Ľ\nà¤ §\nâŀ ¹\náĢ Ģ\nðŁį ħ\nâĹ ¤\nà¤ ł\nðŁĲ ¥\náĥ Ĵ\nðŁı Ŀ\nðŁį ¼\nãĮ §\nâĿ Ľ\nðŁĲ Ī\nà¦ ¯\náĢ ŀ\nãĢ ĸ\náŀ Ļ\nà¦ ª\nÕ Ĩ\nâĬ Ĩ\nâľ ¾\nðŁĲ Ĺ\nï¹ ¿\nÄ ¦\nÜ Ł\nà² ł\nà² ¥\náŀ ī\ná´ ¥\ná´ ©\ná½ Ģ\ná½ ¡\nâĨ ķ\nâŀ ¯\nê¡ ĳ\nëĳ £\në± Į\nìĪ ĳ\nìľ Ķ\nìŀ ½\nì¨ į\nðĿĳ Ģ\nðŁĮ Į\nðŁį ¦\nðŁį ©\nðŁĲ ļ\nðŁĵ Ĵ\nðŁĵ ¹\nðŁ¥ ĳ\nÄ ĭ\nË Ĺ\nÑ «\nÕ ¢\nÚ °\nâ ĮĢ\nâĹ Ĥ\nâĹ £\nâľ Ľ\nâĿ Ĵ\nâĿ ĺ\nâŀ Ļ\nâŀ ²\nãİ į\nê¡ Ĳ\nëŀ ĸ\nìĬ Ŀ\nìĽ ¤\nì¡ ĭ\nì¨ °\níĹ Ļ\nï¥ ¸\nï³ į\nï» İ\nðĿĳ ĵ\nðŁĵ Ĭ\nðŁļ ¼\nï¦ ģ\nðĿķ Ĵ\nðŁ ĳľ\nðŁĳ ¿\nðŁĩ ½\nà· Ħ\nâĸ ´\nãį ī\nâĬ ĩ\nðŁ§ ¸\nÚ ¡\nâ¾ ĥ\nðŁĹ »\nâĵ ĳ\nðŁ¤ ¸\nðŁ¤ ¯\nêĴ °\nðĿĲ ĵ\nâĶ ´\nêĴ ±\náĢ ĺ\nâ ĽĦ\nï¹ ¹\nÓ Ķ\náĥ ±\nÜ ¡\nß ŀ\nâĻ ı\nâľ ¸\nìĳ ¨\nðĿĲ Ŀ\nðĿĲ ¥\nðŁį ī\nðŁĳ ¼\nðŁ¥ Ŀ\nÆ Ķ\nÝ ¬\nà¤ «\nàº ļ\ná´ ´\ná½ ĸ\nâĤ ¶\nâİ ¢\nâĿ ħ\nâŁ «\nãİ Ľ\në® ¨\nëº Į\në¼ ĺ\nìĨ Ŀ\nìľ ³\nìŀ Į\nì£ Ĺ\nìª ĺ\nì» ¹\nï· ¼\nïº Ĥ\nðĿĲ ´\nðĿĲ ¼\nðŁĮ ļ\nðŁı «\nðŁĴ ¤\nðŁĴ ¶\nðŁĴ ¼\nÊ ķ\nÊ ½\nâ² Ł\nãī ł\nê¡ Ĵ\nëľ Ģ\nìĥ ¾\nì¸ ¤\nï¥ ģ\nðĿļ Ĭ\nðŁļ ĥ\nâŀ Ľ\nìħ ´\náĦ ĭ\nâĩ Ĺ\nï§ ·\nâĺ ĸ\nðŁĲ ¦\nâ¸ ľ\nðŁĴ ´\nðŁ¤ ļ\nãĬ Ĺ\nâĮ Ľ\náĪ Ľ\nà¼ º\nâ½ ī\nðŁı ¢\nâĵ ŀ\nâĺ ½\nãĢ Ļ\nðŁ¤ ®\nÅ Ĳ\náĥ ¬\nðĿĹ »\nðŁį ĸ\nÆ Ĭ\nÊ Ł\nß ĭ\nà¤ ĭ\náµ Ķ\ná¿ ĥ\nâĦ ī\nâĮ ĭ\nâı ²\nâĵ Ī\nâĵ ¢\nâķ Ķ\nâļ ĳ\nâĿ ĭ\nâĿ İ\nâ µľ\nâµ £\nëĴ Ī\nëľ ģ\në¶ ĩ\nìį »\nìĺ Ń\nì§ ¢\níĹ Ģ\nï§ Ĭ\nï ¬¸\nï± ¡\nðĿĲ º\nðĿĳ §\nðĿĺ ¦\nðŁĵ ¥\nðŁĺ Ł\nðŁ¥ Ĳ\nÄ ĸ\nÉ ¨\náĢ Ĳ\náĥ ĵ\náº ĵ\ná¼ ¶\ná½ Ħ\nâĤ ¤\nâĮ ľ\nâĮ Ł\nâİ ł\nâĽ ¸\nâµ į\nâµ ı\nâµ ĵ\nãĢ ĺ\në ·¸\níħ ¼\nï¦ Į\nïŃ Ħ\nïŃ İ\nðĿĻ ļ\nðĿļ ĺ\nà¼ ĵ\nëŃ ħ\náĲ Ľ\nãİ ¾\nï¨ Ģ\nðŁĹ ½\nâĻ ŀ\nË ĸ\nâĹ ŀ\nðŁ¤ «\nðŁĺ Ĺ\nï½ ¦\nðŁ¤ ¢\nâģ ĩ\nãĢ µ\nðŁį Ķ\náĬ ł\nðŁĺ ¼\nðĿĹ ®\nðŁĲ ³\nðĿĲ ĭ\nðŁĨ ļ\nðŁĶ Ľ\nÑ »\nÜ ¨\nà® ²\nâľ ŀ\nâµ Ļ\nêµ £\nì¸ ¨\nðĿ Ĳľ\nðĿĺ °\nðŁĶ ½\nÇ »\nÇ ¿\nÊ ĩ\nÎ Ĳ\nÐ Ģ\nÑ ¡\nÑ ²\nÒ Ĵ\nÙ ¶\nß ķ\nà¶ ±\náĲ ģ\nâģ ŀ\nâĸ §\nâĽ Ī\nâľ ľ\nâľ ¹\nâŁ ¹\nâ¤ ĩ\nê² Ĭ\nê¾ ľ\në¯ Ĳ\në³ Ĳ\nìħ ©\nìĲ ¬\nìĳ ¹\nï¤ Ķ\nï¦ ļ\nï¬ ł\nïŃ Ķ\nïº ¶\nðĿĴ ı\nðĿĸ Ĩ\nðĿĹ ¶\nðŁı Ĥ\nðŁĲ ½\nðŁĴ ©\nðŁĵ ½\nðŁĹ ¨\nðŁĹ º\nðŁĺ ¸\nðŁ¥ §\nÅ Ĺ\nÊ İ\nÒ Ļ\n× ²\nà¤ Ī\ná¼ ´\ná¿ ĳ\nâµ ī\nãħ ĵ\nì½ ´\nðĿĸ ĵ\nðŁĵ Ĺ\nðŁĶ ª\nðŁĸ į\nÏ Ĵ\nðŁĳ ¬\náĥ Ļ\nâĨ ¬\nâĶ ¤\nâĽ ¹\nâĻ Ł\nðŁļ ¶\nðŁĳ ¾\nâĪ ĭ\nðŁĲ ¯\nà¼ İ\nâľ ·\nï¨ Ļ\nâĶ »\nðŁĳ ¹\náĦ ī\nàº ª\nâ¾ ı\nâ½ ħ\nãİ ĸ\nÑ ´\nÕ ®\nÚ ¼\náĢ ķ\náĨ ¼\nëŃ ı\nðŁĲ ¸\nðŁļ £\nÆ Ŀ\nÔ »\náĥ ¢\nðŁį ¯\nÉ ¦\nÕ ¦\nâĻ ĭ\nï¬ «\nðĿĹ ¦\nÇ ļ\nÉ ±\nà¤ ī\ná´ Ħ\nâĻ ĵ\nâĽ °\nâŁ ª\nëĥ ĺ\në¢ ¸\nìĤ ĳ\nï® Ķ\nðĿķ ĸ\nðĿĹ §\nðŁĩ ¼\nðŁĵ ĭ\nðŁļ ľ\nðŁ¥ ¤\nÄ ®\nÅ ·\nß Ĭ\nà¥ ¥\nà® ª\náŀ Ħ\náµ Ģ\ná¸ ħ\ná¼ ¢\nâĪ Ŀ\nâĬ ¹\nâĴ ¶\nâķ ´\nâĽ ±\nâĽ ³\nâĽ º\nâŀ Ł\nãı Ħ\nê¸ Ķ\nê¹ Ł\nëĩ °\në¹ »\nìĤ ¥\nìĽ »\nì° Ł\níĥ °\níĨ º\níļ ½\nï¤ ´\nï¥ ¾\nï³ Ŀ\nðĿĲ ¦\nðĿĴ ľ\nðĿĴ Ł\nðĿļ Ĺ\nðŁİ Ń\nðŁı ĵ\nðŁı ³\nðŁı º\nðŁĲ į\nðŁĳ ĥ\nðŁĴ ı\nðŁ¤ ĸ\nðŁ¤ µ\nÕ ²\nâµ Ķ\nëĺ ¬\nï¦ £\nÊ Ĥ\náĨ «\náŀ ĳ\nðĿĸ İ\nðĿĹ ĸ\náĦ ĥ\nâĩ ł\náĢ ¡\nà½ Ħ\nâŀ ¸\nï¦ Ļ\nâĩ ļ\nðŁĲ ¬\nðŁĲ ¢\nâ¾ Ĵ\nðŁĲ ¤\nðŁĶ «\nãĢ ŀ\nï¸ º\nðŁĺ º\nâ½ ´\nðŁĨ ķ\nâģ ¿\nðŁį ¨\nà² ķ\nðŁļ ĺ\náŀ ħ\nà¦ ħ\náŀ ¢\nà¨ ľ\nâ ļĮ\nãĢ ½\nà· ´\nâĵ Ľ\náĢ ľ\nìĨ ¨\nË ©\nÜ Ĺ\nâĭ ¼\nðŁĻ ī\nÅ Ĭ\nÉ ĵ\nÊ ²\nÎ °\nÑ ¼\nÔ ¿\nà¡ Ĳ\nà¼ ľ\nà½ ¦\ná¶ ľ\nâĤ ²\nâĨ ¨\nâĬ ¥\nâķ §\nâĻ ľ\nãĭ ¡\në´ ¬\në¶ ĳ\nìī ¿\nìİ ħ\nìł ±\nì° §\nï² ¡\nðĿĴ Ľ\nðĿķ £\nðĿĹ ľ\nðŁį ²\nðŁİ ©\nðŁĲ Ĳ\nðŁĲ ł\nðŁĳ ½\nðŁĴ ĳ\nðŁĵ ľ\nðŁķ µ\nðŁ ļĮ\nðŁĽ £\nÊ ĭ\nÓ ¯\nÙ ¸\nß Ķ\nß Ļ\nà¡ ĵ\ná´ į\ná¸ ¿\nâı º\nâĸ ¥\në¤ ½\níľ ĳ\nðĿĲ ¹\nðĿĸ Ķ\nðĿļ İ\nðŁĵ Ħ\nðŁ¦ ·\nÆ ĥ\nà¦ Ł\nâĮ Ĥ\nâĺ Ń\nâ² ļ\nëĿ ķ\nðŁİ £\nà® ĩ\nà½ Ĩ\náħ µ\náĹ ľ\nâĢ ½\nâĮ £\nâģ ½\nðŁĵ ¬\nðŁ¤ §\nâĩ ª\nâ½ £\nâĹ Ł\nï¨ Ĺ\nêĴ ª\nðŁĽ Ģ\nÇ Ĥ\nðŁ¥ ¶\nðŁİ į\nï¿ ©\nðŁĳ Ĵ\náµ Ī\nï¸ ¿\náħ ©\nâ¾ ¦\nà° ¤\ná´ ĸ\nà¨ ¬\nàº Ĺ\nà¼ »\nÑ º\nà¨ ª\ná´ ³\nðĿĲ Ī\nà» Ģ\ná´ ¿\nâĤ į\nâĩ ¡\nâĽ ª\nðĿĲ Ĥ\nðĿĴ ķ\nðŁ Ĳľ\nÊ į\nÑ ±\nà½ ĥ\në® Ĳ\nìĽ ¡\nìľ ģ\nðĿĲ ¿\nðĿķ ł\nðŁĳ Ľ\nÆ ª\nÏ º\nÓ ¬\nÙ ¿\nÝ £\nàª ī\nà® ¹\nà½ ĳ\náĨ ¯\náµ ĩ\nâĩ ¥\nâı ª\nâĻ °\nâļ Ń\nâļ ¾\nãħ Ħ\nêĢ °\nê° Ĺ\nê² ĭ\nê² »\nê¶ ľ\nê¼ ĩ\nê½ ¹\nëĤ Ł\nëħ Ī\nëĭ ¢\në§ Ł\nëª Ĩ\nëµ Ģ\nì½ ±\níĩ ĺ\níľ ľ\nï§ ¾\nï± µ\nï² ¢\nï² ¤\nðĿĴ Ĭ\nðĿĺ ¯\nðŁį Ĺ\nðŁı į\nðŁĲ ĺ\nðŁĵ ¡\nðŁĶ ŀ\nðŁ¤ ³\nðŁ¥ ģ\nðŁ¥ Ĺ\nðŁ¦ Ĭ\nÄ µ\nÆ ¦\nÇ µ\nÉ ¯\nÎ ı\nÕ Ħ\nÜ ¥\nà½ ģ\ná¨ ł\nâķ «\nãİ ī\në· ´\nìĨ İ\nìİ Į\nì£ µ\níĽ ł\nï§ ª\nï³ ı\nï» º\nðĿĳ ģ\nðĿĳ ĩ\nðĿĴ Ĩ\nðŁİ ł\nðŁĲ Ķ\nðŁĳ Ł\nÅ ĸ\nà¤ Į\ná¾ ½\nê¦ Ĵ\nà® Ł\ná´ ±\nðŁı °\nðŁĲ ŀ\nà½ Ģ\náĢ ħ\nâĬ ¿\nðŁĲ §\náĽ ģ\nâ¼ Ī\nâĶ ¿\nðŁ¥ ´\nâ¼ ¿\nðŁ§ ľ\nãħ ¿\nâĦ «\nãĢ ³\nãĬ Ļ\nâ¼ Ģ\nï ¦¬\nðŁı ¬\nðŁĵ »\náĬ Ľ\náĦ ħ\nàº Ĭ\nàº Ľ\náħ ³\nðŁĳ ®\nà® ±\nâĺ ĩ\nðĿĲ ı\nà´ µ\nà» ģ\nà½ ı\nà½ ¢\ná¥ ±\nâĤ £\nï¥ ¦\nïŃ Ļ\nï´ ©\nï¹ Ĥ\nðŁį £\nðŁķ ¹\nÏ ĸ\nà¶ ¸\nàº ¢\náĭ Ń\nâİ Ŀ\nâĹ Ŀ\nâĻ Ī\nâĻ İ\nê½ ¥\nì³ Ķ\nì¼ ĳ\nï± °\nðĿĳ ĥ\nðŁĮ ª\nðŁį ¡\nÅ İ\nÊ ¦\nÑ §\nÓ İ\nÔ ´\nÚ Ī\nß ĵ\nß §\nà¤ Ķ\náĪ «\náĪ µ\náĹ ©\ná´ ł\ná¼ ł\nâĢ Ĺ\nâģ ĳ\nâĦ ı\nâĸ ĩ\nâ² £\nãĦ ³\nãī ®\nê³ Ĺ\nëĦ Ĵ\nëĸ «\në¡ Ħ\në¹ °\në½ ģ\nìĦ ģ\nìĮ ĺ\nìŁ Į\nì³ ī\nì¼ ķ\nï¬ »\nï³ İ\nï¹ ¸\nï¹ ¾\nðĿĲ Ĩ\nðĿĳ ·\nðĿĽ ¼\nðŁİ ı\nðŁİ ŀ\nðŁĲ Ļ\nðŁĳ Ĥ\nðŁĵ ģ\nðŁĸ ±\nðŁļ į\nðŁļ §\nðŁĽ ¡\nðŁ¤ Ĵ\nðŁ¥ ŀ\nðŁ¥ ©\nðŁ¦ Ģ\nðŁ¦ ĸ\nË ¢\nÜ ļ\nà® µ\náĢ ģ\náī °\nâı Ń\nâĻ ¿\nê³ ĺ\nëı Ŀ\nëķ ĥ\nìħ Į\nìĴ ¸\nìĽ Ł\níħ Ħ\níľ «\nï§ ĺ\nï¿ ¬\nðŁı ·\nðŁĶ §\nðŁ¥ Ī\nÆ ĸ\náŀ ĩ\náŀ ĸ\nâģ º\nâĹ ľ\nâŀ ©\nê¦ Ń\nëĻ ¤\nïŃ ¼\nðĿĻ ĸ\nðĿĻ £\nðĿĻ ¤\nðŁĮ Ŀ\nðŁĶ ĳ\nðŁĽ ł\nàº ĩ\nâĺ £\nãĦ ¨\nðĿĸ Ĺ\nÓ ĵ\nâĨ £\nðŁ¥ ī\nðŁĮ ł\nðŁĺ ½\nãİ ł\nÅ §\nðŁĲ Ĵ\nï§ Ĳ\nðŁĺ ¿\nâĪ ¬\nðŁĲ ®\nâŁ ±\nà² ¡\nâ¾ ¼\nà° ²\nË ¶\nâĸ ¿\nÕ Ī\náŀ İ\náħ ¥\náŀ Ĺ\nÕ §\nðŁ¤ Ĳ\nðŁį ł\nà¦ ¤\nà¶ º\nâĻ į\nìĺ Ļ\níĺ ĵ\nï¹ º\nðŁĽ ³\nÅ ī\ná´ İ\nâı ľ\nâĶ ³\nê¸ ·\nì¡ Ķ\nðĿĴ Ī\nðĿĴ į\nðĿĴ ¹\nðĿĵ ĩ\nðĿķ Ł\nðĿĹ ¹\nðŁĮ ħ\nðŁı ´\nÄ Ķ\nÄ ¤\nÅ µ\nÇ ¾\nÏ ŀ\nÏ ¶\nÔ ³\nÜ Ĩ\nß ©\nà¡ Ĵ\nà¤ ĺ\nà¶ ļ\nà½ ĸ\náģ Ĭ\náĥ ŀ\náĦ Ĥ\náĭ «\ná´ º\ná¸ £\ná¸ ª\ná¹ Ĥ\ná¼ ·\ná¿ ĩ\nâĩ Į\nâı ¬\nâĻ Į\nâ® Ł\nâ´ »\nâµ Ł\nê¦ ķ\nê¦ ª\nê¦ ®\nê² Ħ\nê¾ Ĳ\nëĥ ĳ\nëķ ĭ\në¡ ¸\në¬ Ģ\nìĩ ¤\nìĪ ©\nìľ ķ\nìŃ ĺ\nì· °\nì ·¸\níľ Ģ\nï¤ £\nï§ į\nï± Ħ\nï³ ĳ\nðĿĲ ¤\nðĿĴ ĵ\nðĿĴ ¶\nðĿĹ ¼\nðĿĻ Ĭ\nðŁĩ ¾\nðŁĮ Ľ\nðŁĮ ®\nðŁİ ĩ\nðŁİ ²\nðŁı Ľ\nðŁĳ ¥\nðŁĳ ´\nðŁĴ Ĩ\nðŁĵ Ĥ\nðŁĵ §\nðŁķ Ĳ\nðŁĸ ķ\nðŁĺ §\nðŁĻ Ģ\nðŁļ Ĵ\nðŁĽ «\nðŁ¤ ł\nðŁ¥ ļ\nðŁ¥ Ľ\nðŁ¥ £\nÇ ¯\nÈ §\nÎ Ĭ\nÒ ²\n× °\nÛ ĳ\náĥ ©\náĦ Į\náĪ į\náī ¥\náı Ĥ\nâģ ±\nâĬ ¢\nâĹ ĵ\nâĿ °\në¿ ¡\nìĽ ©\níģ Ń\níĨ ³\níĬ Ħ\níĵ ¸\nï¥ £\nï¥ ´\nï± Ĳ\nï± ¯\nï³ ļ\nðĿĸ ĺ\nðĿĺ Ģ\nðŁĲ Ĭ\nðŁĲ Į\nðŁĳ ļ\nðŁĵ ĥ\nðŁļ Ľ\nðŁļ ª\nðŁ¤ °\nÄ ´\náĥ ®\náĹ ¨\nâĻ ®\nâ² ŀ\nãĪ Ķ\nì ħį\nãħ ĥ\nï¥ ¡\nàº ¡\nÕ İ\nÕ º\nâ¬ Ľ\nâ½ ¤\nðĿĲ ²\nâŀ µ\náĢ Ľ\nâĶ ħ\nâĨ Ł\nâ¼ Ĭ\nðŁĮ ½\nðŁļ ¿\nï¦ Ĭ\nãĦ £\nâĽ ©\nï© Ľ\nðŁį ±\nâ¾ ¨\nà´ ¤\náŀ ģ\nàº ŀ\nÊ ļ\nðĿĲ Ĵ\nà´ ±\náŀ ľ\nà® ©\nà° Ĺ\nà´ ļ\nâĩ £\nï¦ ķ\nÕ ħ\nÆ ĺ\nâĤ ¦\nâĶ Ħ\nï¦ Ł\nï¦ «\nðĿĲ ģ\nðĿĲ ĥ\nðŁį ¸\nðŁĲ ²\nÅ ¶\nÉ ĸ\nß ĺ\nà¸ ¦\nà½ Ķ\náĨ ·\nâģ ķ\nâĵ Ĥ\nâĿ ľ\nï¥ ¥\nï¬ ®\nðĿĹ Ŀ\nðĿĹ ¿\nðŁİ ¾\nðŁĹ Ŀ\nðŁ¦ Į\nÆ ħ\nÇ ª\nÒ Ĺ\nÜ Ľ\nß ł\nà¡ ĳ\náī £\náĬ Ń\ná¹ ¡\nâŀ ¼\nâŀ ¾\nâ´ ±\nãī ¡\nê³ ¯\në½ Ī\nìĤ ĺ\nìī ĳ\nì «ĺ\níĮ ĥ\níĻ °\nï¤ Ĺ\nðŁĮ ¬\nðŁĮ °\nðŁį ¤\nÄ »\nÅ ĩ\nÆ ¨\nÉ ķ\nÒ ¢\nÒ º\nÖ į\n× ±\nÚ ±\nÚ ½\nÛ Ĳ\nà¤ Ľ\nà· Ģ\nà¹ ļ\nàº «\ná´ ¹\ná ½Ķ\ná¾ ³\nâĤ Ĵ\nâĨ ´\nâĩ Ŀ\nâī ħ\nâ Į¨\nâĵ ĵ\nâĸ ¢\nâļ ¬\nâŀ Ń\nâ² Ĵ\nãİ ¿\nê¿ ´\nëĪ ±\nëį ¬\nëİ Ĳ\nëĲ «\nëĶ «\në± ģ\nìĥ ¥\níĮ ¼\nïŃ ĵ\nï® ¥\nï² °\nðĿĲ ĩ\nðĿĲ ĳ\nðĿĳ Į\nðĿĵ ª\nðĿķ ļ\nðĿĺ ª\nðĿĺ ¼\nðĿļ Ľ\nðŁĩ ¶\nðŁĮ Ħ\nðŁĮ ķ\nðŁĮ ¤\nðŁĮ §\nðŁį ¬\nðŁİ ĭ\nðŁİ »\nðŁı ¨\nðŁĲ ĩ\nðŁĳ ĵ\nðŁĵ Ĳ\nðŁĵ Ļ\nðŁĶ ¼\nðŁķ Ĵ\nðŁĸ ı\nðŁĸ ¥\nðŁ¤ ¬\nðŁ¥ Ĭ\nðŁ¥ Ĵ\nß Į\nàº Ħ\ná¼ µ\nâķ ¡\nâ² ¤\nâ´ ¼\nâµ ¢\nãĪ ¯\nëĵ ¸\nëŁ ĩ\nëº į\nðĿĻ §\nðŁį Ī\nðŁĶ ¬\nðŁĸ Ĭ\nðŁ¤ ¾\nË ¡\nÜ ©\nâĮ ¡\nâŃ ĳ\nâ² ¦\në© ī\nì¼ Ń\nï¿ ¤\nðĿĴ İ\nðĿĹ ¥\nðŁĲ µ\nðŁķ ¶\nðŁķ ¸\nðŁ¤ ľ\nÕ ª\náĪ ĭ\nðŁ¥ µ\nï° ģ\náµ Ĳ\nâķ ĵ\náĢ ĸ\nâĭ Ī\nÉ ŀ\nâŀ ®\nà¥ °\nãĨ ģ\nðŁĴ ±\nðŁı Ń\náĨ ¨\nðŁį ļ\nðŁ¦ Ĳ\ná´ »\nâĺ Į\nà´ ķ\nÕ ±\náħ ®\nðĿĲ Į\nÅ ¦\nàº ķ\nâľ Ļ\nË ³\nÔ µ\nâķ Ĵ\nðĿĹ Ĺ\nðĿĹ ł\nÚ ļ\nà¦ §\nâĨ Ŀ\nâĻ ī\nãĮ »\nì¹ Ĭ\nðĿĹ º\nðŁ§ ĺ\nì³ £\nï¬ Ŀ\nðŁĳ º\nÇ Ł\nÎ Ī\nÎ «\nÑ ¥\nÔ ²\nÕ ¨\nÜ ¦\nà¦ Ĩ\nà¦ ¥\náĲ ¢\ná¼ ģ\ná¼ ĺ\ná¼ ¦\nâĵ Ŀ\nãĪ °\nãİ Ĺ\nê² ¡\në¨ Ģ\nì£ Ķ\nì´ ¤\nìµ Ŀ\nï§ ´\nïŃ Ĭ\nï² Ł\nðĿĲ ·\nðĿĳ ĭ\nðĿĵ ī\nðĿĺ µ\nðŁĴ ·\nðŁĽ ©\nðŁ§ ¹\nÅ Ķ\nÊ ŀ\nË ¥\nÎ Į\nÑ ©\nÓ Ĳ\nÓ ł\nÚ ĳ\nÚ Ĵ\nß ¨\nàª Ī\náĲ ĥ\ná¹ ¯\nâĤ ĭ\nâĤ µ\nâĦ ħ\nâĦ ł\nâĪ £\nâī º\nâī »\nâĬ Ľ\nâĮ Ĳ\nâİ ĵ\nâĺ ¸\nâĻ Ĵ\nâļ Ĵ\nâľ ĩ\nâľ ł\nâ´ ·\nâµ ĸ\nãĦ ¸\nãī ¢\nãī °\nêĩ ´\nê´ ¸\nêº ł\nëĤ ı\nëĤ ¢\nëĲ Ģ\nëº ´\nìĥ ľ\nìį ħ\nì¤ «\nì± ¦\nìº ĳ\nì¼ ģ\nì¿ ³\níĤ ģ\níħ ¡\níĴ Ĥ\níĴ ī\níľ Ħ\nïŃ ª\nï® ¬\nï¯ ¦\nï± ª\nï² ı\nï ´Ģ\nï» Ĩ\nï¿ ¦\nðĿĳ Ĺ\nðĿĸ Ļ\nðŁĮ ¡\nðŁį Ŀ\nðŁį §\nðŁİ «\nðŁı ĺ\nðŁı ª\nðŁĲ ĭ\nðŁĲ Ľ\nðŁĲ º\nðŁĳ ĸ\nðŁĳ ŀ\nðŁĳ ·\nðŁĵ Ģ\nðŁ ĶĦ\nðŁĶ Į\nðŁķ Ļ\nðŁĻ į\nðŁĻ İ\nðŁ¦ į\nÇ °\nÉ Ł\nÊ Ĩ\nÔ ¼\nÚ ľ\nà¦ ¡\nà¦ ¶\náĴ ĥ\ná¼ ©\nâĵ ķ\nâ² Ī\nê° °\nê¹ ł\nêº ħ\nëĦ ¹\në¯ ĵ\níĲ Ī\nï§ ¶\nï® ĳ\nï² ¨\nðĿĴ ī\nðĿĴ Ķ\nðĿĹ ¨\nðĿĻ ŀ\nðĿļ Ĵ\nðĿļ ķ\nðŁĲ İ\nðŁ¤ ķ\nðŁ§ Ķ\nÏ °\nÔ Ŀ\nâĮ Ĭ\nâĴ ¾\nãī £\nïŃ ©\nðĿļ ŀ\nÊ ĳ\nà¦ ¦\náĦ ĩ\nâī ĥ\nâ² Ģ\nìŁ İ\nðĿĳ ¶\nðĿĵ ²\nðŁ İ·\nðŁļ ¹\nàº ģ\náł ł\nãĦ ļ\nðŁĲ ¿\náĽ ļ\nâķ ³\nðŁĲ Ń\nâĴ ¹\nðĿĸ ļ\nâĻ ĸ\nãĪ ²\nâĨ ¾\náĦ Ĩ\nâķ Ľ\nðŁ¤ į\nâ½ ¥\nðŁ Į¨\nâĪ ®\nãĮ ĺ\nãį ĳ\nï¹ Ģ\nâĵ Ĺ\nâĬ Ħ\nðŁı ¹\nË Ĵ\nðŁ¤ ±\nãı ľ\nðŁİ Į\nï¥ Ń\nà¦ £\nðŁİ ¹\nãĬ Ł\nà´ °\nðĿĲ Ķ\nà´ ¨\nà½ ļ\nâľ º\nÕ ·\nðŁĳ ³\nà¦ ľ\nâĺ ĭ\nâĻ Ĭ\nãĢ Ľ\nÈ ĭ\nà® °\náĥ ¨\nâĦ ķ\níĳ Ģ\nðĿĵ ĥ\nðŁ¦ Ķ\nÄ ¿\nÅ Ģ\nÆ ³\nÉ ļ\nÖ ĥ\nÜ £\nß Ł\nà¦ Ń\nà§ ¡\nà¶ »\nàº £\nà½ ĩ\ná¸ ¨\ná½ Ī\nâ½ ¬\nê¡ Ķ\nì³ Ħ\nï¨ ī\nðĿĲ ¡\nðĿĺ ¢\nðŁį ¿\nðŁİ Ł\nðŁı ī\nðŁĶ Ĳ\nðŁļ ħ\nðŁ¤ ½\nÆ į\nÇ «\nÇ ½\nÈ ļ\nÎ ī\nÓ ¤\nÓ ª\nÕ Ĭ\nÙ ¼\nÚ ´\nß Ŀ\nà¶ ľ\ná¼ ķ\ná¿ ¥\nâİ ŀ\nãĢ ļ\nãī ¤\nê³ ¸\nê· ģ\nëĵ Ħ\nëĵ ķ\nì¨ Ķ\nì± ¨\nðĿĲ ¾\nðĿĳ »\nðĿĶ ¼\nðĿķ Ŀ\nðĿĺ Ń\nðŁĨ Ļ\nðŁĵ ¤\nðŁĶ Ł\nðŁĹ ¼\nÄ ľ\nÆ ģ\nÆ ¿\nÇ ³\nÇ ·\nÉ ĥ\nÉ ł\nÊ ī\nÊ §\nË ²\nÏ ´\nÕ ģ\nÕ ŀ\nÖ ĩ\nÛ Ĥ\nÛ ĵ\nß Ĺ\nß ¦\nà¦ ¹\nà® ³\nà´ ¸\nà» Ĥ\náĪ Ŀ\náĪ ª\náĭ µ\náĲ Ĭ\náĴ ª\náļ ĸ\náŀ Ľ\ná´ ¢\náµ ı\náµ Ń\ná¶ «\ná¸ ı\náº Ĵ\ná¼ ¥\ná½ ķ\ná½ ¼\nâĤ Ĭ\nâĦ Ĥ\nâĦ ©\nâĩ ī\nâī £\nâĮ ł\nâİ Ł\nâı ®\nâķ ĺ\nâĹ ĸ\nâĺ ©\nâĻ ĳ\nâĻ ²\nâļ Ľ\nãĦ Ł\nãī ±\nãİ ļ\nê¡ ķ\nêª ĸ\nê° ¹\nê² Ĩ\nêµ Ħ\nëĩ ¬\nëĭ ¯\nëı ł\nëĴ ¬\nëĸ Ī\nëĸ ½\nëĺ Ķ\nëŀ ¸\në¸ ħ\në» ł\në¿ Ł\nìĤ µ\nìĬ ī\nìľ °\nìł ĭ\nìł Ķ\nì¥ ¡\nìŃ Ŀ\nì¼ ¬\níĪ ĩ\níī ľ\níį Ħ\níĽ ¾\níĿ £\nï¤ ©\nï¤ ¯\nï¦ ľ\nï¦ §\nï§ ľ\nï¨ Ī\nï¬ ª\nï ¬´\nïŃ ½\nï® ī\nï¯ ŀ\nï° Ĵ\nï± ĩ\nï¿ Ħ\nðĿĲ ħ\nðĿĳ Ħ\nðĿĳ º\nðĿĴ Ĺ\nðĿĵ ®\nðĿķ Ľ\nðĿķ ŀ\nðĿĸ ĳ\nðĿĺ ģ\nðĿĺ Ĩ\nðĿĺ ¶\nðĿĻ ¢\nðĿļ ľ\nðŁĮ ĥ\nðŁĮ ¦\nðŁį Ł\nðŁİ İ\nðŁı Ļ\nðŁĲ ©\nðŁĲ «\nðŁĲ ´\nðŁĳ Ķ\nðŁĵ ī\nðŁĵ Ľ\nðŁĶ ī\nðŁĸ ¼\nðŁĹ ĥ\nðŁĹ ¯\nðŁļ ĩ\nðŁļ Ĳ\nðŁļ µ\nðŁ¤ ¶\nðŁ¥ ĭ\nðŁ¥ ĵ\nðŁ¥ ®\nðŁ¦ İ\nðŁ¦ ł\nðŁ§ Ĵ\nðŁ§ ¨\nÆ Ĳ\nÇ į\nÓ Ģ\nÔ Ľ\nà² °\nà´ Ļ\náĢ Ĵ\nê² Ŀ\nê¹ ¹\në© ¥\nìĸ Ķ\nï¤ ģ\nï¤ ı\nï¦ ī\nï¦ ĵ\nï§ ī\nï² Ŀ\nðĿĹ ŀ\nðĿĹ ±\nðŁĮ ĭ\nðŁį ¶\nà¦ ļ\nìķ ľ\nðĿĲ ¯\nðĿļ Ŀ\nà° ¨\nà½ ĺ\nà½ ł\ná¡ ¥\ná¾ °\nâģ į\nâĶ °\nâ¬ ľ\nðĿĲ ł\nðĿĳ ¯\nðĿĹ Ľ\nðĿĵ »\nðĿĸ Ī\nâŀ »\náŀ ł\nâ¡ ±\nâ» ĳ\nðŁ§ µ\nï¦ ¢\nðŁĳ ĺ\nãĤ Ķ\nâ¼ Ł\nãĬ ¤\nï¦ Ŀ\nãĮ ¦\nâĢ ¸\nðŁĶ Ļ\nã ¹\nã¹ ¦\nï¹ ħ\nï© Į\nãī ¨\nï¸ ½\nâį ¥\nðŁļ ī\nðŁ¥ ľ\nâĵ ľ\nâ» Ŀ\nï¨ ľ\nðŁĴ Ĵ\náĦ ĳ\nâ¾ ŀ\nï¨ ģ\nà´ ª\náĦ İ\nâŀ ´\nà¦ ·\náħ ¬\náŀ §\nâĨ ¢\nâķ ¦\nâľ ĳ\nË ¬\nÕ Ĳ\nà¼ Ķ\nÊ ¤\nË ¨\nà¤ ŀ\nà» ĥ\nà¼ ļ\nâĵ ¥\nâķ ľ\nðŁĲ ĸ\ná¼ Ļ\ná¼ ¤\nìĨ °\nÈ Ĥ\nÊ ±\nà® ļ\náĥ §\ná´ ĭ\ná´ ®\nâĿ ¡\nâŀ ·\nëĿ ¡\nï§ ¢\nï¯ ¡\nðĿķ ķ\nðŁħ °\nðŁ¦ ¸\nÇ ¸\nÓ ŀ\nÔ ¶\nÖ Ĩ\nÚ ģ\nÛ ĭ\náİ ¥\ná¾ ¿\nâĶ Ń\nâĶ ®\nêĢ Ģ\nê± ĺ\nëĲ Ń\në½ Ħ\nìĶ Ĳ\nì¸ Į\níģ ł\níĻ ±\nï¥ ī\nï¨ ĸ\nðĿĳ ´\nðĿĸ Ĵ\nðĿĺ ¨\nðĿ ļĮ\nðŁĲ ¡\nðŁĳ ¢\nðŁĵ Ķ\nÅ ħ\nÆ İ\nÈ ©\nÒ ª\nÔ ĥ\náĥ «\ná¸ ĩ\nâĽ Ł\nê» Ń\në¨ Ħ\nìŁ Ģ\nì¤ ´\níļ Ĳ\nï¤ ³\nðŁŁ ¢\nÆ §\nÈ ¼\nÊ Ŀ\nË Ħ\nË ħ\nË į\nË §\nÒ ¥\nÕ Ķ\nØ ı\nØ ¼\nß Ĳ\nß ľ\nà¤ ĵ\nà¦ Ļ\nà® ĵ\nà¶ ´\nà¼ į\nà¼ Ĵ\nà½ £\náĢ Ĥ\náĢ Ĭ\náĦ Ħ\ná Īĺ\náĭ Ĭ\náĮ į\náĳ ĭ\náŀ Ĥ\náł ¢\ná¡ Ŀ\ná´ ¦\náµ į\náµ ¨\ná¸ ¡\ná¸ ¯\ná¼ £\nâģ Ĥ\nâĦ ĺ\nâĦ ľ\nâĦ ³\nâĦ µ\nâĨ ¦\nâĩ Ĩ\nâĪ ·\nâĬ ļ\nâĮ «\nâĮ ¯\nâİ Ľ\nâİ ľ\nâİ ¤\nâİ ¦\nâİ ®\nâĳ ī\nâĶ ī\nâķ Ļ\nâĸ Ĥ\nâĹ Ń\nâĺ Ĭ\nâĺ į\nâĺ Ĵ\nâļ Ĩ\nâĽ §\nâĽ ²\nâŀ ĺ\nâ¥ Ħ\nâ´ ³\nâ´ ½\nâµ Ī\nãī ¯\nãİ ĳ\nã§ ¬\nêĻ ¬\nê§ ģ\nê³ ¬\nê´ ŀ\nê» ľ\nëħ ĵ\nëĭ ¼\nëį ĸ\nëĸ ±\nëĿ °\në¡ ¹\në¢ ´\në£ Ģ\në¤ ł\në¨ ķ\nëŃ ¥\nìĦ ¶\nìħ ¤\nìĮ ķ\nìį ª\nìı ©\nìĴ Ģ\nìĶ ¯\nìĿ Ķ\nìĿ ľ\nìł Ń\nì§ ¦\nì¨ ©\nì² ¬\nì³ ¥\nì¼ ¯\níĢ «\níĢ Ń\níĥ ¸\níĵ ģ\níķ ¬\níĹ ¸\níĽ ķ\níľ Ń\níĿ Ĺ\nï¤ Į\nï¤ ª\nï§ ¿\nï¬ Ħ\nï¬ ħ\nïŃ ĳ\nïŃ «\nïŃ º\nï® Ĥ\nï® ¢\nï® ¨\nï° İ\nï° ł\nï² £\nï³ Ĳ\nï³ Ĵ\nï³ ĺ\nï³ ľ\nï¹ ¼\nï¿ ¨\nðĿĲ ©\nðĿĴ ļ\nðĿķ Ķ\nðĿķ ¤\nðĿĸ Į\nðĿĹ £\nðĿĹ °\nðĿĹ ´\nðĿĺ Ĥ\nðĿĺ ¥\nðĿĺ ®\nðĿĺ ¸\nðĿĻ Ģ\nðĿĽ ¾\nðĿľ ı\nðŁĮ ģ\nðŁĮ ľ\nðŁĮ ¥\nðŁĮ ¯\nðŁį Ĳ\nðŁİ Ĵ\nðŁı Ķ\nðŁı ķ\nðŁı ®\nðŁĲ Ĥ\nðŁĲ ī\nðŁĲ ¹\nðŁĶ ķ\nðŁĶ ļ\nðŁķ ĳ\nðŁķ £\nðŁĹ ŀ\nðŁĹ ¡\nðŁĹ ¿\nðŁļ Ĩ\nðŁļ Ĭ\nðŁļ ĵ\nðŁļ ķ\nðŁļ ¾\nðŁĽ ģ\nðŁĽ İ\nðŁĽ ı\nðŁ¤ ´\nðŁ¥ ķ\nðŁ¥ ĸ\nðŁ¥ ł\nðŁ¥ ¥\nðŁ¦ Ĩ\nðŁ¦ ī\nðŁ¦ ļ\nðŁ§ ĳ\nðŁ§ ¥\nðŁ§ ¿\nÅ °\nÆ º\nÉ §\nàª ĩ\nà® £\náĪ Ī\náĬ ¤\náĭ ®\náĮ Ī\náĮ µ\ná¥ ²\nâĵ Ł\nêĻ ³\nê° Ĭ\nëķ ģ\nëķ ¨\nìĬ ģ\nï¦ µ\nï¬ ²\nðĿĸ į\nðĿĺ Į\nðĿĺ ³\nðĿĻ ©\nðŁį Ļ\nðŁĸ ĸ\náī ³\náĭ ¨\náĸ ĩ\náŀ Į\ná¹ §\nâķ ª\nâŀ ļ\nâ² ĺ\nê ķ\nêķ ¥\nï¤ ·\nï® £\nï¯ ł\nðĿĴ ĸ\nðĿķ ĺ\nðĿĸ ĩ\nðĿĹ Ł\nðĿĹ ª\nðĿĹ ¯\nðĿĻ ł\nðŁĵ ı\nà¦ Ĺ\nâĴ »\nâ² ł\nðĿĵ µ\nÊ £\nà° ľ\náĬ ¢\náŀ Ĳ\ná¸ ·\nâĦ Ľ\nâĩ Ģ\nâĩ Ĭ\nêĴ ¦\nê¦ ł\nï® ¤\nðŁį Ľ\nðŁ¤ Ľ\ná¨ ¾\nâŀ º\náķ ¯\náĽ ı\nâĩ Ĥ\nâĶ ¹\nâĻ Ĺ\nðŁĸ ¨\nê¦ ı\nàª °\náļ ¨\nðŁ¤ ¥\nðŁ§ ¢\nãĲ Ĥ\nãĦ ¥\nðŁĸ Į\nâ¼ Ĵ\nãĬ §\nâį ©\nðŁ¦ ĳ\nâĶ ·\nï© Ĳ\nï© ¡\nðĵ Ī\nðĵĪ Ĵ\nâ» Ħ\nï¨ Ĵ\nâĦ ª\nÒ §\nÚ Į\nâĢ ¶\nâº ł\nâ» ģ\nâĨ ¸\náĦ Ĳ\nãħ Ĳ\nà» Ħ\náĹ ª\nâĨ ¼\nâĩ ĭ\nâĩ ĺ\nâĮ ĳ\nâĸ ©\nðĿĲ Ĺ\nÄ Ĭ\nà¦ ī\nìī ł\nÉ ¤\nß į\nß ı\náµ Ĺ\nâĤ ¥\nâĵ ī\nâĶ ł\nâĶ ¨\nâķ Ħ\nä ¤\nä¤ Ģ\nê» ¸\nï® ģ\nðĵ Ĥ\nðĵĤ ĥ\nðŁ¦ ķ\nÆ Ľ\nà¦ ĩ\nãı ĺ\nï® ¼\nÚ ĵ\nÚ Ŀ\nà¦ ĵ\nà¶ ¯\ná´ ħ\ná½ Ļ\nâģ ¼\nâĸ İ\nâ¼ ©\nä Ķ\näĶ Ģ\në» ¡\nìĽ ½\níģ Ħ\nï¥ ¼\nï± ī\nï¹ »\nðĿĸ ĭ\nðĿĻ Ī\nðĿĻ ª\nðĿ Ļ¶\nðŁĲ Ħ\nðŁĲ Ĩ\náİ ¢\ná¸ Į\nâĿ ´\nðŁı ¸\nÈ Ŀ\nÉ ¸\nÎ ħ\nÏ ľ\nÓ ¢\nÕ ¹\nà´ ħ\nàº Ī\náĭ °\náĳ İ\náł µ\ná¡ ł\ná´ ī\ná¸ µ\ná¿ ´\nâĵ £\nâĶ ¶\nâ½ ¯\nê² ¥\nê¿ ĺ\nëģ İ\nëİ Ī\nëĶ ¯\në² °\nìĺ ¯\nìĽ ¸\nìŀ Ĺ\nì§ ĺ\nì¬ ¬\nì· ¬\níģ ħ\níĵ Ķ\níĽ Ŀ\nï¤ ®\nï¤ ¹\nï¥ ²\nï¯ ĸ\nðĿĵ ħ\nðĿĻ Ħ\nðŁĵ ¶\nðŁĹ Ĵ\nðŁ¥ Ķ\nðŁ¥ Ń\nÅ ®\nÅ ´\nÆ ī\nÆ «\nÇ ģ\nÇ £\nÇ º\nÇ ¼\nÈ į\nÈ ¯\nÉ ľ\nÊ ¬\nË ģ\nË ¤\nË µ\nÏ Ľ\nÒ ¤\nÒ ¬\nÓ ı\nÓ Ľ\nÓ ¡\nÓ ³\nÔ Į\nÔ ¬\nÕ ³\nÙ »\nÚ ī\nÚ §\nÜ ľ\nß ª\nà¤ Ŀ\nà¦ Ľ\nà¨ Ĩ\nàª ķ\nàª ¡\nà® İ\nà° ¬\nàµ »\nàµ ¼\nà¶ ł\nà¶ Ń\nà¶ ¶\nà· Ĩ\nà¼ ½\náĢ ļ\náħ ¢\náĨ ¸\náĪ Ģ\náĪ ķ\náĪ °\náī ¡\náī ¤\náĬ ¦\náĬ «\náĭ ĭ\náĭ į\náİ ¯\náĳ Ń\náķ Ĺ\náŁ Ľ\ná¥ Ĵ\ná© ī\náŃ º\ná´ ¡\náµ ĺ\náµ Ľ\ná¶ ł\ná¸ ģ\ná¸ ĭ\ná¹ Ļ\ná¹ Ŀ\ná¹ ¦\náº ħ\ná¼ Ĥ\ná½ ĥ\ná½ į\ná½ §\ná¾ ·\nâĢ µ\nâĤ İ\nâĦ Ŀ\nâħ Ģ\nâĨ ŀ\nâĨ §\nâĩ ħ\nâĪ ĥ\nâī ı\nâī ½\nâĬ ŀ\nâĬ ¡\nâĬ §\nâ Ĭ¶\nâĭ Ħ\nâİ Ĵ\nâİ ¡\nâİ £\nâİ ª\nâı İ\nâĵ ĥ\nâĵ ĸ\nâĵ ¨\nâķ ĭ\nâķ ĸ\nâķ ¢\nâķ ²\nâĸ Ĩ\nâĸ Ĭ\nâĸ į\nâĸ ®\nâĺ ¡\nâĺ ¦\nâĺ ±\nâĺ ¿\nâĻ ĺ\nâĻ Ŀ\nâļ °\nâĽ ĳ\nâŀ ª\nâ¤ Ŀ\nâ¤ ¢\nâ¤ ·\nâ§ «\nâ¨ Ń\nâ¨ ¯\nâ± £\nâ² İ\nâµ Ľ\nãħ Ķ\nãĪ ı\nãī ²\nãī ³\nãĬ ĳ\nãĭ Ľ\nãİ Ĳ\nê² ¤\nê· ¿\nê¹ ŀ\nê» ¨\nê¼ į\nê¿ ¸\nëĥ ¬\nëĩ Ĳ\nëĭ ł\nëį ¯\nëĹ Į\nëĹ ĳ\në¥ Ģ\nëª ĥ\nëª ¯\në± ¡\në³ ĵ\në³ ½\në µľ\nìĤ ³\nìħ ¥\nìĩ ½\nìı ¨\nìı ¸\nìķ į\nìĸ ĸ\nìŁ ¨\nì¢ ĥ\nì¢ į\nì¥ ĳ\nì§ ¼\nì© ĥ\nì® ľ\nì® ¸\nì³ ĳ\nì´ ¥\nì¾ ĥ\níħ ¦\níĪ ¿\níĵ ½\níķ ³\níĸ ı\níĹ ł\níĿ «\nï¤ ĵ\nï¤ ĺ\nï¥ İ\nï¥ ¶\nï¦ ħ\nï¦ ½\nï§ ĩ\nï¬ Ĩ\nï¬ ³\nï® ĩ\nï® Ī\nï® Ŀ\nï® ©\nï® ±\nï¯ ĺ\nï¯ Ļ\nï¯ ¢\nï¯ £\nï¯ ¤\nï¯ ¥\nï± Ĥ\nï² Ĩ\nï² ª\nï´ ¼\nïº ī\nïº Ĭ\nïº ¥\nðĿĳ ¨\nðĿĳ ©\nðĿĳ ²\nðĿ ĴĮ\nðĿĴ ª\nðĿĴ ®\nðĿĵ Ĥ\nðĿĵ Ī\nðĿĵ ¯\nðĿĶ ¨\nðĿķ Ģ\nðĿķ Ĩ\nðĿķ ¦\nðĿķ §\nðĿķ «\nðĿķ ·\nðĿĹ µ\nðĿĹ ¸\nðĿĺ Ħ\nðĿĺ Ļ\nðĿĺ ł\nðĿĺ ¬\nðĿĻ į\nðĿĻ ĳ\nðĿĻ ¡\nðĿ Ļ¨\nðĿĻ ·\nðĿļ į\nðĿĽ ¿\nðŁ ĥ\nðŁĥ ı\nðŁħ ĺ\nðŁ ī\nðŁī ĳ\nðŁİ ¡\nðŁİ ª\nðŁİ ±\nðŁİ ³\nðŁİ º\nðŁı İ\nðŁı Ĺ\nðŁı ļ\nðŁı ŀ\nðŁı ¦\nðŁı §\nðŁĲ ģ\nðŁĲ ħ\nðŁĲ ĵ\nðŁĴ Ĥ\nðŁĵ ĳ\nðŁĵ ĵ\nðŁĵ ¨\nðŁĵ «\nðŁĶ ĭ\nðŁĶ Ń\nðŁĶ ¯\nðŁķ Ĺ\nðŁļ Ĥ\nðŁļ ¢\nðŁļ ¦\nðŁļ ¬\nðŁĽ ĭ\nðŁĽ Į\nðŁĽ ¬\nðŁĽ ¶\nðŁŁ ¡\nðŁ¥ ĺ\nðŁ¥ Ł\nðŁ¥ ¦\nðŁ¦ ĩ\nðŁ¦ Ī\nðŁ§ Ĭ\nðŁ§ Ĺ\nðŁ§ ¤\nÊ ·\nË ¹\ná¹ ļ\ná½ ¥\nâĦ Ł\nê² ¯\nê» «\në° ·\nìĥ Ĩ\nìĽ Ŀ\nì¨ ī\nì« ı\nï¯ ķ\nðĿľ ĭ\nÉ ²\nÒ Ń\nÓ Ī\nà½ Ľ\náĭ ĵ\náĻ Ń\náł ©\ná¹ ®\nâĦ Ĵ\nâĨ »\nâµ ĥ\nëĢ ¨\nëł §\nìī ¥\nìĮ ľ\nìĹ ¶\nì¨ Ī\nìª ¾\níı ½\níļ Ķ\níĽ µ\nï¤ ¸\nï¦ Ĳ\nï§ Ĺ\nï§ ļ\nï¬ ¯\nðĿĲ Ĭ\nðĿķ Ĺ\nðĿĹ ļ\nðĿļ ĸ\nðŁħ ´\nÈ ĥ\nÉ Ŀ\nÏ ±\nÓ Ĺ\nà¤ ¢\náħ ł\náī ¦\náĳ Į\náĴ ¼\náŀ ¡\náł ¨\náł Ń\ná¨ ħ\ná¨ Ķ\ná´ ĺ\ná¶ ¦\ná¸ İ\ná¼ ħ\ná¼ ¹\nâĨ ¯\nâĵ İ\nãı Į\nê ī\nêī Ĥ\nëĨ §\nëĿ ±\nì¢ ¡\níĪ ½\nï¤ ĩ\nï¤ Ľ\nðĿĲ ķ\nðĿĵ ¸\nðĿĵ ¼\nðĿĹ ķ\nðĿĺ Ī\nðŁı £\nðŁı ¤\nðŁĹ Ħ\nÑ ·\nÒ ł\náµ ĸ\ná¼ ¨\në¬ Ħ\nï° ´\nâĪ ½\nÕ Ń\nÚ ¹\nà¥ Ł\náĢ Ĩ\náŀ Ĵ\nãĢ ¶\nê¦ «\nï¸ ĵ\nðĿĲ Ľ\nðĿĺ Ĺ\nðŁı ľ\nì« Ń\nðŁ§ ŀ\nà½ Ĥ\nâĨ ¿\nâĩ ı\nâĵ ģ\nâĶ §\nâķ ģ\nâķ ¤\nê¦ Ĺ\nê¦ ¤\nðŁı Ī\náŀ ķ\nÔ ½\nàª Ĺ\nà¬ Ĩ\nâķ ķ\nï½ ł\nâ¼ ¦\nâ¼ ¯\nâ¾ ·\nâĶ ĸ\nà¬ ĵ\nâĺ Ĺ\nâį ĭ\nï¨ Ŀ\nâ¼ ¥\nï¦ ª\nâĦ Ĭ\nãĢ ´\nâį ¢\nð¡ Ī\nð¡Ī ½\nï© ¨\nãĢ »\nãı ĥ\nï¦ ¡\nï¨ ĺ\nðŁĲ ĥ\nðŁĨ ĸ\nðŁĹ ¾\nãĦ ĩ\nÞ ĭ\nâ¼ ¼\nï¨ Ń\nÞ Ģ\nÞ Ħ\nÞ Ī\nÞ Ĳ\nâĮ Ħ\nâ» ĺ\nãŁ ¢\ná ħ§\nðĲĮ ¿\nË »\nà² Ĺ\náĢ ĩ\náŀ Ĭ\nâķ ĩ\nãĩ ¼\nãİ °\nÕ Ĵ\nÜ Ī\nß ¥\nà¿ Ĳ\náĢ Ł\nâĨ ¥\nâķ Į\nâ½ Ģ\nâ½ °\nâ¾ Ĭ\nä Ħ\näĦ Ģ\nðĵ Ĳ\nðĵĲ į\nðŁİ ¦\nâĤ ¯\nâĬ ĺ\nâĦ į\nÊ µ\nÑ ¶\nÚ ĥ\nà¦ Ķ\nà´ ¦\náİ ¶\náĵ ķ\ná¹ ¨\nâĤ ł\nâĩ °\nâĹ Ĵ\nâ¿ Ĭ\nê· ±\nì¹ ķ\níĪ ©\nïŃ Ģ\nðĿĴ ¸\nðĿĵ Ĭ\nðĿĺ ©\nÇ ¦\nÉ «\náĬ ¨\nÈ ¹\nÊ ¯\nÎ ª\nÚ Ģ\náĮ ¸\náİ »\náı ķ\náı ´\ná² Ĥ\ná½ ¨\nâı Ŀ\nâĺ Ļ\nëĥ ¨\nëĦ ¼\nëĪ Ļ\në£ ħ\nìĶ ¼\nìķ Ŀ\nìļ ¬\nìľ ±\nï¥ Ĥ\nï¦ ¹\nï¬ ¹\nïŃ ģ\nï³ Ī\nðĿĶ ħ\nðĿĺ ¤\nðĿĻ ı\nðĿĻ Ļ\nðŁķ ī\nðŁ§ Ļ\ná¸ ĳ\nê´ ¼\nëģ į\nëĹ ´\nëĿ ³\në° ŀ\në° ¢\nëµ ĺ\nìĤ Ķ\nìĦ Ħ\nì¼ ļ\níĢ ł\níĬ ±\níĮ ĸ\nï¤ ĳ\nï¦ ´\nï¦ ¸\nï´ į\nðĿĺ ·\nÄ ¬\nÅ ¬\nÆ Ģ\nÆ ĭ\nÆ ľ\nÇ ĳ\nÇ ĺ\nÇ ŀ\nÇ ¥\nÇ ®\nÉ °\nÉ ¶\nÉ ·\nÉ ½\nÊ Ī\nÊ Ĳ\nË İ\nË Ł\nË ¦\nË ¯\nÏ Ĳ\nÏ ĵ\nÏ ¢\nÏ ¤\nÏ ª\nÏ Ń\nÏ ®\nÏ »\nÑ ł\nÑ Ń\nÒ ¨\nÓ Ŀ\nÔ ¡\nÔ ·\nÕ ī\nÕ ĵ\nÕ ĸ\nÕ ļ\nÕ Ŀ\nÖ İ\nØ ¿\nÚ ħ\nÚ į\nÚ Ķ\nÛ Ĭ\nÛ ¾\nÜ Ļ\nÝ Ĵ\nÝ ĺ\nß Ĵ\nß ĸ\nà¤ Ĭ\nà¤ Ĳ\nà¦ ı\nà¦ ĸ\nà§ Ł\nàª ®\nàª ¹\nà® ħ\nà® Ĩ\nà° ¡\nà° °\nà² ļ\nà² ®\nà² ¯\nà´ Ł\nà´ ·\nàµ ¾\nà¶ ĳ\nà¶ ŀ\nà¼ ¼\nà½ ĵ\náĢ ĵ\náĤ ¦\náĥ ĸ\náĥ Ń\náĥ ¯\náħ ¨\náħ ª\náĨ °\náĪ ģ\náĪ İ\náĪ ĵ\náĪ ¥\náĪ ²\náĪ ´\náĪ »\náī ł\náī ²\náī ¶\náĬ £\náĬ ¥\náĬ ª\náĭ ĺ\náĭ ²\náĭ ¶\náĮ £\náį ¡\náį £\náİ ¬\náİ ¾\náĲ ¡\náķ ķ\náĸ ±\náĹ Ĳ\náĹ Ń\náĺ ī\náļ ±\náĽ Ł\náŀ ¥\náŁ Ķ\náł £\náł ª\náł °\náł ´\ná¤ ĸ\ná¥ £\ná ®\ná® ł\ná ¯\ná¯ Ļ\ná °\ná° į\ná´ Ĭ\ná´ ¾\náµ ģ\náµ İ\náµ ŀ\náµ ¤\ná¶ ħ\ná¶ ĺ\ná¶ Ł\ná¶ ¢\ná¶ ¤\ná¶ ±\ná¶ »\ná¸ ī\ná¸ ŀ\ná¸ º\ná¹ ĵ\ná¹ Ĺ\ná¹ ª\náº Ĭ\náº ı\náº Ľ\ná¼ ĥ\ná¼ Į\ná¼ ¿\ná½ Ĥ\ná½ ĵ\ná½ Ĺ\ná½ ¦\ná¾ ±\ná¾ ´\ná¿ ĺ\ná¿ Ł\ná¿ ¸\nâģ ĺ\nâĤ ĳ\nâĤ Ľ\nâĤ ¿\nâĦ ĩ\nâĦ ŀ\nâĦ ±\nâĩ Ł\nâĩ ²\nâĪ ¤\nâĪ ¶\nâī Ĥ\nâī ¾\nâĬ ¨\nâĬ ³\nâĬ ·\nâĭ Į\nâĭ ĺ\nâĮ ķ\nâĮ ¥\nâĮ µ\nâĮ º\nâį £\nâį ²\nâį µ\nâİ ĩ\nâı ĥ\nâı Ĳ\nâı ł\nâı ¤\nâı ¶\nâı ¸\nâı ¹\nâĳ Ĥ\nâĴ ·\nâĴ º\nâĵ ¡\nâĵ ¤\nâĶ ¾\nâĸ ĺ\nâĸ µ\nâĹ ª\nâĹ ·\nâĺ ¨\nâĺ «\nâĺ ²\nâĺ ³\nâĻ Ĩ\nâļ ¤\nâļ ¥\nâĽ ĵ\nâĽ ´\nâĽ ¾\nâŀ «\nâŀ ¿\nâŁ ·\nâ¤ ĳ\nâ¤ «\nâ¤ ¶\nâ¤ ½\nâ§ ª\nâ¨ Ģ\nâ ©½\nâ¬ ¡\nâ¬ ¢\nâ¬ ¤\nâ² ĸ\nâ² ª\nâµ Ģ\nâ¸ ®\nâ¸ ½\nãĢ ł\nãĢ ·\nãĦ Į\nãĦ ĺ\nãħ ĳ\nãĪ İ\nãĪ Ĳ\nãĬ ľ\nãĮ ĵ\nãĮ ł\nãİ Ł\nãİ ¤\nãİ §\nã¬ ®\nä Ī\näĪ Ģ\nä °\nä° Ģ\nê ħ\nêħ ī\nêĩ Ĺ\nê Ī\nêĪ į\nê§ Ĥ\nê§ Ĭ\nêª Ģ\nê² Ī\nê² į\nê³ Ģ\nêµ ł\nê½ Ĳ\nê¾ Ī\nê¿ ±\nëĥ ı\nëĦ ĳ\nëħ ¤\nëĩ ¸\nëĪ ¼\nëī ħ\nëĬ £\nëĭ º\nëį ŀ\nëĲ Į\nëķ ¸\nëĺ ł\nëĻ ĩ\nëĻ Ī\nëľ ½\nëŀ Ķ\nëł ľ\në£ Ĳ\në§ Ģ\në§ Ĭ\nëª Ģ\në¬ Ń\në¯ ¾\në³ ľ\në´ Ĭ\nëµ ī\në· ľ\në¸ Ģ\në¹ ĭ\nìģ Ħ\nìĤ £\nìĤ »\nìĦ µ\nìħ Ĵ\nìī Ī\nìī Ķ\nìĬ Į\nìĬ Ļ\nìĲ ´\nìĵ º\nìķ ļ\nìķ º\nìĸ ľ\nìĹ ª\nìĺ ľ\nìĻ ¤\nìļ Ľ\nìļ º\nìĿ ħ\nìĿ ı\nìĿ Ń\nìĿ ¶\nìł Ľ\nì¡ Ī\nì¢ ī\nì¢ Ķ\nì© ł\nìŃ Į\nì¯ ©\nì´ £\nì¸ ķ\nì¹ Ł\nì¾ ¡\nì¿ Ļ\níģ ĩ\níģ ī\níĩ Ģ\níĪ ¶\níĸ ĳ\níĸ ¤\níĹ ħ\níľ ı\níĿ Ŀ\nï¤ Ĵ\nï¤ ķ\nï¤ ¬\nï¥ ħ\nï¥ ĩ\nï¥ ı\nï¥ ļ\nï¥ Ł\nï¦ Ħ\nï¦ Ī\nï¦ ¨\nï¦ ©\nï¦ ²\nï§ ģ\nï§ ĥ\nï§ Ķ\nï§ ł\nï§ £\nï§ ®\nï ŃĲ\nïŃ ĸ\nïŃ ¦\nïŃ ´\nïŃ µ\nïŃ ¶\nïŃ ¸\nï® Į\nï® İ\nï® ŀ\nï® Ł\nï® ¡\nï® ª\nï¯ Ķ\nï¯ Ĺ\nï¯ ļ\nï¯ Ľ\nï¯ Ŀ\nï¯ Ł\nï¯ §\nï¯ ¨\nï¯ «\nï¯ ¯\nï¯ °\nï¯ ±\nï¯ ²\nï¯ ³\nï¯ ´\nï¯ µ\nï¯ ¶\nï° Ģ\nï± ħ\nï± Ķ\nï± ´\nï² ģ\nï³ ķ\nï· ½\nï¸ ķ\nï¸ ±\nï¹ £\nï¹ ½\nï» į\nï¾ ±\nðĿĲ Ļ\nðĿĲ ½\nðĿĳ ¤\nðĿĳ ®\nðĿĳ µ\nðĿĴ ĥ\nðĿĴ Ħ\nðĿĵ Ń\nðĿĵ ·\nðĿĶ ĸ\nðĿĶ ŀ\nðĿĶ ¢\nðĿĶ ¦\nðĿĶ ¬\nðĿķ Ħ\nðĿķ Ĭ\nðĿķ İ\nðĿķ Ļ\nðĿķ ľ\nðĿķ Ń\nðĿķ ³\nðĿķ ¸\nðĿķ ¾\nðĿ ĸī\nðĿĸ ı\nðĿĺ ĩ\nðĿĺ ī\nðĿĺ ĸ\nðĿĺ Ľ\nðĿĺ ŀ\nðĿĺ «\nðĿĺ ¾\nðĿĻ ĩ\nðĿĻ ī\nðĿĻ ĭ\nðĿĻ İ\nðĿĻ ĺ\nðĿĻ ¥\nðĿļ ĥ\nðĿļ Ĳ\nðĿļ Ķ\nðĿľ ĥ\nðŁĦ ·\nðŁħ Ŀ\nðŁħ ¾\nðŁĨ Ĥ\nðŁĨ ĵ\nðŁĮ Ĥ\nðŁĮ Ĩ\nðŁĮ ī\nðŁĮ ĳ\nðŁĮ ĺ\nðŁĮ ©\nðŁĮ «\nðŁį ¢\nðŁį ¥\nðŁİ Ľ\nðŁİ ¢\nðŁİ ´\nðŁĳ ¡\nðŁĴ ¾\nðŁĵ Ń\nðŁĶ Ī\nðŁĶ ¦\nðŁĶ ²\nðŁĶ ³\nðŁķ ĵ\nðŁķ ķ\nðŁķ ĺ\nðŁķ Ł\nðŁķ ·\nðŁĹ ³\nðŁļ Ħ\nðŁļ Ķ\nðŁļ ĸ\nðŁĽ Ĳ\nðŁĽ ¤\nðŁĽ ¸\nðŁ ł\nðŁł ³\nðŁ¤ ¹\nðŁ¥ ĥ\nðŁ¥ ¨\nðŁ¥ ª\nðŁ¥ ¾\nðŁ¦ ĥ\nðŁ¦ Ĵ\nðŁ¦ Ļ\nðŁ¦ ¶\nðŁ§ ł\nðŁ§ ª\nðŁ§ Ń\nðŁ§ ²\nð£ ·\nð£· Ń\nð¦ ĺ\nð¦ĺ Ĵ\nÆ ĳ\nÇ Ļ\nÈ ®\nØ ł\nÚ Ħ\nÜ Ģ\nß ¢\náī Ģ\náĬ Ĳ\náİ ł\náº ŀ\nëĪ ŀ\nëķ Ł\në£ ģ\në¤ Ĺ\nìĦ ¥\nìħ ĳ\nìĸ Ĳ\nìĽ Ľ\nì£ ķ\níİ ı\níĽ ĵ\nï¥ º\nï³ Ľ\nï´ «\nðĸ §\nðĸ§ ·\nðĿķ ģ\nðŁĲ ª\nðŁĴ Ī\nðŁĵ ł\nðŁķ Ľ\nðŁķ ´\nÑ Ŀ\nÓ Ĭ\nà¥ ²\nàª ª\náĥ ¤\náį Ĳ\ná¶ °\ná¼ Ŀ\ná½ ©\nâĭ ĭ\nâĴ ½\nâĻ ¾\nâ ½Ķ\nâ¾ ¯\nãĦ Ĵ\nãħ ļ\nëĲ į\në· ģ\nìĭ Ģ\nìļ Ŀ\nì¥ °\nìº ´\níĭ ī\níĿ ½\nï¦ Ģ\nï¦ ¿\nï§ ħ\nï§ ĵ\nïŃ ¯\nï® Ĩ\nðĲ¤ ķ\nðĿĲ Ł\nðĿĴ ħ\nðĿĵ ľ\nðĿĶ °\nðĿĶ »\nðĿĺ į\nðĿĻ ¯\nðŁĦ ½\nðŁħ Ĥ\nðŁħ Ķ\nðŁħ ½\nðŁĵ ´\nðŁ§ ĸ\nÓ Ĵ\ná¸ ²\nëī ¼\nÇ ı\nÈ ĵ\nÊ ¸\nÕ Ĥ\nÛ ħ\nß ¡\nß £\nà® ¯\nà° Ī\nà² ¸\nàº ®\nà¼ ķ\náĢ İ\náĨ ¡\náĲ ĭ\náĲ ķ\náĳ ¯\náŀ Ĩ\ná¨ ķ\ná© Ī\nâģ ħ\nâĨ ļ\nâĶ İ\nâł ©\nâ² Ĥ\nâ² Ķ\nâ² ¨\nãĬ ļ\níĵ ²\nðĿĳ Ī\nðĿĳ ¬\nðĿĳ ¹\nðĿĴ ¾\nðĿĵ ±\nðĿĵ ½\nðĿķ ¯\nðĿķ »\nðĿĺ ½\nðĿļ Ĩ\nðŁĦ °\nðŁĲ ¨\nÒ ķ\nà² ħ\nï¨ Ĩ\nðĿĳ °\nðŁĦ ¸\nÔ İ\nØ į\nÙ µ\nà² ¶\náĢ Ī\náĺ Ĺ\náł ¸\ná¡ ¡\ná¨ ²\ná© ģ\ná´ ·\náµ §\nâķ ¨\nâļ ģ\nâ¾ Ŀ\nãĢ ¼\nãĦ ı\nêĴ «\nê¦ ¥\nê¦ ©\nê¦ ²\nìĺ ¼\níĵ Ĳ\nðĵ ĩ\nðĵĩ ¼\nðĿķ ¿\nðŁĽ ´\në¨ ľ\nà² µ\nà´ İ\nà¼ Ģ\nâĩ ĸ\nãĪ «\nâĵ Ģ\náħ ´\náļ ¾\náĽ ŀ\náĽ «\ná¥ ´\nâĨ Ľ\nâĨ ¶\nâĩ ¤\nâķ Ł\nâĺ ·\nâļ Ĳ\nðŁ§ ´\ná¹ ³\nâĶ į\nâĶ Ĵ\nâĶ ©\nâĶ ¦\nâ¾ µ\nàª ľ\nàª ¤\nâĩ Ļ\nâĶ ±\nâķ Ģ\nâ½ Ĭ\nï½ Ł\nà¬ ¡\nðł ®\nðł® ·\nâķ ĥ\nâ° Ķ\nãĬ ¦\nðŁİ Ĳ\nãĩ °\nâ¼ Ŀ\nâ¾ Ķ\nâ½ Ĵ\nâł Ĵ\nï¨ ¦\nï© Ĵ\nï¨ ²\nï© ĸ\nðĵı ¸\nãĮ ĥ\nðĸ ¤\nðĸ¤ Ĳ\nï¦ Ń\nâĬ ħ\nâ¾ ³\nä´ ¥\nï© ķ\nðŁĮ Ķ\náŀ ĭ\nâļ į\nâ¼ ĭ\nãİ ĺ\nðĲĮ ²\nÉ ©\náİ ĳ\nâĨ ®\nâĩ ĥ\nâļ İ\nãĩ ±\nãĭ ©\nãĮ ¶\nêĻ ª\nëİ ¬\nï¨ Ĳ\nï¨ Ľ\nï© Ĭ\nï© į\nðĵ ħ\nðĵħ º\nÏ ¡\nÈ ĳ\nÉ Ĥ\nÔ ĵ\nß İ\nà´ §\náĢ ī\náĢ ĭ\náĢ ĳ\náĢ ł\náļ Ļ\ná¨ Ħ\ná¨ ©\ná¨ ¹\ná© ĵ\ná¬ ľ\ná´ Ļ\náµ ĳ\nâĤ Ń\nâĨ °\nâľ ģ\nâ½ Ĳ\nãĭ ¯\nãĮ ½\níĨ ¢\nï¤ ¿\nðŁ Ĥ\nðŁĤ »\nÈ Ĵ\nÍ º\nÔ ¥\nÕ ĳ\nÚ ¶\nà§ İ\nà¶ ®\nàº ĸ\nàº ľ\nàº ½\náĥ »\náħ ¯\náĭ ŀ\náĸ ķ\ná ´Ī\ná¶ Ĩ\ná¸ ľ\ná¹ ¼\ná¿ ¨\nâĦ ĭ\nâĦ Ń\nâĪ ±\nâĮ ĵ\nâĶ ĩ\nâĶ ¢\nâ± ®\nâ² Ħ\nãĩ ¾\nãĪ ¬\në¸ ¡\nìĲ ī\níĻ Ľ\nðĿķ ª\nÆ ¹\nÍ ²\nÓ ģ\nÛ ¼\nà¦ «\náħ Ł\náī Ĩ\náį Ī\náº ĸ\ná½ ī\nâĶ ¸\nâ½ ©\nê ľ\nêľ ¥\nêµ ħ\nëĤ Ķ\nëĦ ł\nëĩ Ĺ\nëĻ Ŀ\nìļ ¯\nìļ ·\nìŁ Ľ\nì· Ĳ\níŁ ¬\níŁ ®\níŁ °\nï¦ Ĩ\nï¦ ±\nï² ŀ\nï³ ¤\nï³ ¥\nðĲĮ ¸\nðĿĶ ı\nðĿķ ®\nðĿĺ £\nà¦ Ī\nâı ı\nãĦ ĸ\nê² ĩ\nëĸ ĺ\nëľ ·\nëŀ Ĵ\në¡ ĵ\në¢ ī\në£ ĥ\në§ ĭ\në² ĭ\nìĤ ·\nìĪ ķ\nì Į¨\nìĵ »\nìĸ Ĭ\nìĻ ¬\nìĿ »\nì¦ ģ\nìµ ¤\nì· ĥ\níĢ ľ\níħ ī\níį ł\níı ħ\níĳ ±\níķ ķ\níĸ ł\níĿ ķ\nÆ Ļ\nÆ ļ\nÆ ŀ\nÇ ĥ\nÇ Ĭ\nÇ ľ\nÇ ¤\nÇ Ń\nÇ ¹\nÈ Ģ\nÈ ģ\nÈ ħ\nÈ ī\nÈ Ĺ\nÈ Ł\nÈ ¤\nÈ ¥\nÈ ¨\nÈ µ\nÈ º\nÈ »\nÉ Į\nÉ ®\nÊ ħ\nÊ ¥\nÊ ¨\nË ĵ\nË Ķ\nË ł\nË £\nË ¸\nÍ ´\nÏ Ĺ\nÏ ĺ\nÏ Ļ\nÏ ļ\nÏ Ŀ\nÏ ¨\nÏ ¬\nÏ ¾\nÏ ¿\nÑ ª\nÒ Ģ\nÒ ľ\nÒ ¼\nÒ ½\nÓ Ĥ\nÓ ħ\nÓ ĩ\nÓ į\nÓ ĸ\nÓ Ł\nÓ «\nÓ ±\nÔ Ĩ\nÔ ĩ\nÔ º\nÕ ĭ\nÖ ī\nØ Ī\nØ Ĭ\nØ ½\nØ ¾\nÙ ·\nÚ Ĥ\nÚ Ĭ\nÚ ĸ\nÚ Ĺ\nÚ £\nÚ «\nÚ ¸\nÛ Ģ\nÛ į\nÛ ½\nÜ ī\nÜ ¤\nÝ §\nÝ ´\nÞ ĥ\nÞ ¤\nÞ ¥\nß ļ\nß Ľ\nß ¤\nàł į\nàł ĵ\nàł ³\nà¡ ¢\nà¥ ł\nà§ ł\nà§ º\nà¨ Ĭ\nà¨ Ĳ\nà¨ ®\nà¨ ¯\nà¨ °\nà¨ ¸\nàª Ĩ\nàª ³\nàª µ\nàª ½\nà¬ Į\nà¬ ĺ\nà¬ ½\nà® ĥ\nà® ¸\nà° Ĩ\nà° ķ\nà° ¦\nà² Ĩ\nà² Ĭ\nà² Į\nà² Ĳ\nà² Ľ\nà² ¤\nà² ¦\nà² ª\nà² ²\nà² ¹\nà´ Ĩ\nà´ ı\nà´ Ĺ\nà´ «\nà´ ¹\nàµ º\nàµ ½\nà¶ ħ\nà¶ Ĭ\nà¶ Ķ\nà¶ §\nà¶ «\nà¶ °\nà¼ Ħ\nà¼ ħ\nà¼ Ĭ\nà½ Ļ\nà½ ¡\nà½ §\nà¿ Ģ\nà¿ Ļ\náĢ Ŀ\náĢ §\náĢ ©\náĢ ¿\náģ µ\náĤ ģ\náĤ ½\náĥ Ĥ\náĥ ª\náĦ Ĭ\náĦ ¢\náħ ¦\náħ Ń\náĨ ®\náĨ ±\náĨ »\ná ĩ\náĩ Ĥ\náĪ ħ\náĪ ī\náĪ Į\náĪ Ĳ\náĪ Ĵ\náĪ Ļ\náĪ ļ\náĪ ľ\náĪ ŀ\náĪ ©\náĪ ³\náĪ º\náĪ ½\náī ħ\náī ¢\náī ±\náī ´\náĬ ĥ\náĬ į\náĬ ĸ\náĬ ®\náĬ ¸\náĭ Ľ\náĭ Ŀ\náĭ ³\náĮ ģ\náĮ ħ\náĮ ¥\náĮ ¦\ná Į¨\náį Ĭ\náį į\náį ķ\náį ĸ\náį ¢\náį ¤\náİ Ĵ\náİ ª\náı ģ\náı Ĳ\náı Ł\náĲ Ĥ\náĲ ĸ\náĲ Ŀ\náĲ ŀ\náĲ Ł\náĲ ł\náĳ ĸ\náĴ ĭ\náĴ į\náĴ ¡\náĵ «\náĶ ķ\náķ ĭ\náķ ĳ\náķ Ļ\náķ ļ\náķ Ľ\náķ ¤\náķ ¦\náķ ®\náķ ¼\náĸ ĵ\náĹ Ĺ\náĹ ¢\náĹ ¯\náĹ ·\náĺ Ħ\náĺ ĳ\náĽ Ĥ\náĽ Ļ\náŀ į\náł Ĩ\náł ¡\náł ¦\náł ®\náł ¯\náł ²\náł ·\ná¡ į\ná¡ ŀ\ná¡ ¤\ná ¡´\ná¡ µ\ná¤ ĵ\ná¥ ĸ\ná¥ °\ná¨ ¦\ná¨ §\ná¨ ¨\ná¨ ª\ná¨ ¬\ná¨ ¯\ná¨ ³\ná¨ µ\ná© ĥ\ná¬ ķ\náŃ £\ná ±\ná± ļ\ná² ł\ná´ ĵ\ná´ ¶\náµ Ĥ\náµ Į\náµ ¥\náµ ´\ná¶ ĩ\ná¸ Ī\ná¸ ł\ná¸ §\ná¸ ´\ná¸ ¾\ná¹ Ģ\ná¹ ĸ\ná¹ Ł\ná¹ ł\ná¹ «\ná¹ ±\ná¹ ·\ná¹ ¿\náº Ħ\náº į\náº ĳ\náº Ĺ\ná¼ ī\ná¼ ĵ\ná¼ Ń\ná½ ĭ\ná½ Ĵ\ná½ ł\ná½ £\ná¾ Ħ\ná¾ ı\ná¾ ĳ\ná¾ Ĺ\ná¾ ¦\ná¾ §\ná¾ ¾\ná¿ Ħ\ná¿ ĵ\ná¿ ¡\ná¿ ¬\nâģ ļ\nâĤ Į\nâĦ ģ\nâĦ Ķ\nâĦ £\nâĦ §\nâĦ ¯\nâĦ °\nâĦ ´\nâħ ħ\nâĨ ľ\nâĨ «\nâĨ Ń\nâĨ ±\nâĨ ¹\nâĨ ½\nâĩ ĩ\nâĩ ľ\nâĩ µ\nâĪ ī\nâĪ Ĭ\nâĪ ĸ\nâĪ ľ\nâĪ ¾\nâī Ģ\nâī ĭ\nâī Į\nâī ĵ\nâī ľ\nâī ´\nâī ¿\nâĬ Ĭ\nâĬ ĭ\nâĬ Ķ\nâĬ ĸ\nâĬ £\nâĬ ¦\nâĭ İ\nâĭ ª\nâĭ ²\nâĮ ¦\nâĮ §\nâį º\nâİ Ī\nâİ ¨\nâİ ¬\nâİ ³\nâİ ¼\nâİ ¾\nâı Į\nâı ļ\nâı «\nâı ¯\nâı µ\nâĴ ľ\nâĴ Ŀ\nâĴ «\nâĵ Ħ\nâĵ Ĭ\nâĵ Ļ\nâĵ ©\nâĶ ĳ\nâĶ Ļ\nâĶ ļ\nâĶ ¥\nâķ ħ\nâķ ī\nâķ į\nâķ ı\nâķ ŀ\nâĸ ļ\nâĸ ¯\nâĹ ĥ\nâĹ ļ\nâĹ ¬\nâĹ ´\nâĺ Ī\nâĺ ¤\nâĺ ¥\nâĺ §\nâĺ ¬\nâĻ ģ\nâĻ ±\nâļ ĥ\nâļ Ħ\nâļ ħ\nâļ ı\nâļ ļ\nâļ ŀ\nâļ Ł\nâļ ±\nâļ ²\nâľ Ģ\nâľ Ł\nâľ ¢\nâĿ µ\nâŁ ¡\nâŁ ¦\nâŁ §\nâŁ ³\nâŁ ¾\nâŁ ¿\nâł ĩ\nâ¤ Ħ\nâ¤ º\nâ¥ Ĥ\nâ¥ ¹\nâ§ ī\nâ§ ¼\nâ§ ½\nâ¨ į\nâ¬ Ĭ\nâ¬ Ł\nâŃ ŀ\nâ® ŀ\nâ® ³\nâ¯ Ī\nâ¯ ĳ\nâ± ł\nâ± ±\nâ² Ń\nâ´ ¹\nâµ ķ\nâ¸ ¾\nâ º«\nâ¼ Ĩ\nâ¼ ł\nâ½ Ł\nâ½ ¼\nâ¾ Ľ\nâ¾ §\nâ¿ ĥ\nâ¿ »\nãĤ ķ\nãĤ Ł\nãĦ Ľ\nãĦ ¡\nãĦ ¶\nãĦ º\nãħ Ĵ\nãħ Ł\nãĨ Ģ\nãĩ »\nãĪ ĳ\nãĪ Ń\nãĪ ®\nãĪ ³\nãĪ ¹\nãī ¥\nãī ¦\nãī ¹\nãī ¿\nãĬ ŀ\nãĬ ¨\nãĭ ĳ\nãĭ ¥\nãĭ ´\nãĭ º\nãİ Ħ\nãİ ķ\nãİ ¯\nãı Ĥ\nãı Ī\nãı ĵ\nãı ĸ\nãı ±\nãĲ ±\nãŁ ģ\nã ¢\nã¢ ¨\nã ¨\nã¨ ³\nã« ª\nã« ´\nã¶ ³\nãº ¾\nä Ģ\näĢ Ģ\nä ĭ\näĭ Į\nä ĮĢ\näĲ Ģ\nä łĢ\nä ł\näł ¼\nä §\nä§ ŀ\nä¨ °\nä¨ º\nä ´Ģ\nä ·\nä· ħ\nä ·¸\nê Ĥ\nêĤ «\nê Į\nêĮ ¼\nê į\nêį ²\nêĴ µ\nê ĵ\nêĵ ½\nêĻ Ń\nêĿ Ľ\nêĿ ¥\nê ŀ\nêŀ Ĭ\nê¦ Ĩ\nê¦ ĩ\nê¦ Ł\nê¦ ¨\nê§ Ī\nê ©\nê© Ł\nêª ĭ\nêª ĳ\nêª ķ\nêª Ĺ\nêª ľ\nêª ®\nêª ±\nêª »\nêª ¼\nê« Ģ\nê« Ŀ\nê° ĥ\nê° ĺ\nê± ľ\nê² ĵ\nê² ļ\nê³ Ļ\nê³ ¾\nê´ Ĺ\nê´ Ļ\nêµ Ľ\nê¶ ĥ\nê¶ ķ\nê¶ ¨\nê¸ ©\nê¸ ¿\nê ¹Ħ\nê¹ Ĩ\nê¹ ī\nê¹ ĵ\nê¹ ¢\nê¹ £\nê¹ ¸\nêº ³\nê¿ ı\nê¿ ķ\nê¿ §\nëĢ ©\nëģ ħ\nëĥ µ\nëĦ ĸ\nëĦ Ĺ\nëĦ ¢\nëħ Ĥ\nëĨ Ĳ\nëĩ ľ\nëĪ ĭ\nëĪ ļ\nëī į\nëī ¨\nëĬ ļ\nëĬ ¡\nëĭ ľ\nëĭ ª\nëĮ ĺ\nëĮ ¤\nëĮ ¸\nëİ Ł\nëı ¨\nëĲ Ħ\nëĲ ı\nëĲ ´\nëĲ ¸\nëĳ ģ\nëĳ ¿\nëĴ ¨\nëĵ ·\nëĶ ®\nëĶ ²\nëķ §\nëĸ Ķ\nëĸ ª\nëĺ Ń\nëļ Ģ\nëļ ł\nëĽ Ķ\nëĽ ©\nëľ ħ\nëŀ ķ\nëŀ °\nëŁ Ĳ\nëł ¡\në¡ ŀ\në¡ £\në¡ µ\në£ Ħ\në£ į\në¤ ³\në¦ į\në¦ ı\në¦ ³\në§ Ħ\në§ Ĩ\në§ į\në§ ľ\në§ «\në§ »\në¨ ®\në© Ĥ\në© Ń\nëª ´\në¬ ľ\në¬ ł\në¬ «\në¬ ¾\nëŃ ¬\në® ĺ\në® ¹\në¯ ķ\në¯ ľ\në° ¨\në° ª\në± Ķ\në² ĺ\në² Ľ\në² ±\në² ´\në´ ½\nëµ ¤\nëµ ¨\në· Ĺ\në· ĺ\në¸ ĵ\në¸ ľ\në¹ ª\nëº ĥ\nëº ĺ\nëº µ\në» ´\në¼ Ĳ\në¾ Ķ\nìģ Ń\nìĤ ł\nìĤ ®\nìĥ ı\nìĥ Ļ\nìĦ º\nìħ ¢\nìĨ Ģ\nìĨ ħ\nìĨ ¤\nìĨ ¦\nìĨ ¬\nìĩ ±\nìĪ µ\nìĭ ¨\nìĭ ´\nìĮ °\nìį ľ\nìİ Ĺ\nìİ ĺ\nìİ ¼\nìĳ ī\nìĳ Ŀ\nìĳ »\nìĴ Ķ\nìĴ ¯\nìĵ ©\nìķ Ĳ\nìķ ĸ\nìĸ ł\nìĸ ¾\nìĹ ĥ\nìĹ Ĺ\nìĹ ľ\nìĹ ¨\nìĺ Ĥ\nìĺ Ħ\nìĺ ı\nìĺ ¾\nìĺ ¿\nìľ §\nìĿ Ĳ\nìĿ ĸ\nìĿ ·\nìŀ į\nìŀ ı\nìŀ ¨\nìŀ ª\nìŀ ³\nìł ¡\nìł ´\nìł ¹\nì¡ Ģ\nì¡ ª\nì¡ µ\nì¢ Ĳ\nì¢ ¨\nì£ Į\nì£ Ļ\nì£ ³\nì¦ ĳ\nì§ ¥\nì§ ´\nì§ ¾\nì¨ ĵ\nì¨ ķ\nì© °\nì© »\nì© ¼\nìª Ĺ\nì¬ Ķ\nì¬ ĺ\nì® ®\nì¯ ķ\nì¯ ĺ\nì° İ\nì° ¯\nì± ĥ\nì± µ\nì² §\nì² ®\nì² ¯\nì³ ¬\nì´ ĭ\nì´ ¢\nìµ ¥\nì¶ £\nì¸ Ī\nì¸ Ļ\nìº ¤\nìº Ń\nì» ½\nì¼ Ļ\nì½ ¬\nì¾ Ģ\nì¿ ħ\nì¿ ½\níĢ ħ\níģ ¦\níĤ ħ\níĥ ¶\níĥ ¹\níĦ Ķ\níħ £\níĨ Ħ\níĨ §\níĨ ¹\níĩ ¼\níī ¤\níĬ ½\níĭ Ĥ\níĭ ĳ\níį Ī\níį Ļ\níį ¿\níİ ¶\níĲ Ŀ\níĴ ľ\níĵ Ŀ\níĵ ª\níĵ ±\níĵ ·\níĵ ¼\níĶ Ļ\níĶ ł\níķ ļ\níķ Ľ\níķ ŀ\níķ Ł\níķ §\níķ ¶\níĸ Ĭ\níĸ ĭ\níĸ į\níĸ Ķ\níĸ ĺ\níĸ ¡\níĸ ¬\níĹ £\níĹ ¿\níĺ ĸ\níĺ Ń\níļ °\níĽ į\níĽ ½\níĿ Ł\níĿ Ń\níĿ ´\níŀ ľ\nï¤ ī\nï¤ Ń\nï¤ ²\nï¤ µ\nï¤ ¼\nï¥ Ģ\nï¥ ĳ\nï¥ Ĵ\nï¥ ķ\nï¥ ĺ\nï¥ Ļ\nï¥ «\nï¥ ¬\nï¥ °\nï ¥¿\nï¦ ĭ\nï¦ ı\nï¦ Ķ\nï¦ ĸ\nï¦ ĺ\nï¦ Ľ\nï¦ ł\nï¦ ®\nï¦ ¯\nï¦ º\nï¦ »\nï¦ ¾\nï§ Ĩ\nï§ ĸ\nï§ Ľ\nï§ ŀ\nï§ Ł\nï§ §\nï§ ³\nï§ º\nï§ ½\nï¨ ĥ\nï¨ ļ\nï¨ ¢\nï© Ł\nï¬ ¤\nï¬ ¬\nï¬ ¼\nïŃ Ĵ\nïŃ ķ\nïŃ Ľ\nïŃ Ŀ\nïŃ ŀ\nïŃ Ł\nïŃ ¤\nïŃ §\nïŃ ¨\nïŃ ®\nïŃ °\nïŃ ±\nïŃ ·\nïŃ ¹\nïŃ »\nï® Ģ\nï® ĥ\nï® Ħ\nï® ħ\nï® į\nï® Ĵ\nï® ĵ\nï® ķ\nï® ¦\nï® ®\nï® °\nï¯ ĵ\nï¯ ľ\nï¯ ©\nï¯ ª\nï¯ ¬\nï¯ Ń\nï¯ ®\nï¯ ·\nï¯ ¹\nï¯ »\nï¯ ¼\nï° ĥ\nï° Į\nï° Ĳ\nï° ĺ\nï° Ļ\nï° ľ\nï° ŀ\nï° ¢\nï° ®\nï° °\nï° ¼\nï° ¿\nï± Ģ\nï± ģ\nï± Ī\nï± ĭ\nï± ı\nï± Ń\nï² Ģ\nï² ĩ\nï² Ī\nï² ĭ\nï² İ\nï² Ĵ\nï² ľ\nï² ł\nï² ¬\nï² »\nï³ ĩ\nï³ Ķ\nï³ £\nï³ «\nï´ ĺ\nï´ °\nï´ ½\nï ¶\nï¶ °\nï¸ ĸ\nï¸ ´\nï¸ ¹\nï¹ į\nï¹ Ĺ\nï¹ ¢\nï¹ ¤\nï¹ ©\nï¹ ±\nï¾ °\nï¿ Ĥ\nï¿ ®\nðĲĮ °\nðĲĮ ¹\nðĲĮ º\nðĲĮ ½\nðĲį Ĥ\nðĲį ĥ\nðĲį Ħ\nðĲ İ\nðĲİ ¹\nðĲ¤ Ĥ\nðĲ¤ į\nðĲ¤ ı\nðĲ¤ ĵ\nðĲŃ ī\nðĲŃ į\nðĲ° ĩ\nðĲ° °\nðĳ Ĥ\nðĳĤ Ħ\nðĳ ĺ\nðĳĺ ģ\nðĴ Ģ\nðĴĢ ¸\nðĴ ģ\nðĴģ º\nðĴ Ħ\nðĴĦ ·\nðĴ Ĭ\nðĴĬ ĳ\nðĴ ĭ\nðĴĭ Ĺ\nð ĴĮ\nðĴĮ ¨\nðĵĥ ¢\nðĵĥ °\nðĸ ł\nðĸł ļ\nðĿĦ ĥ\nðĿĦ ħ\nðĿĦ ķ\nðĿĦ Ļ\nðĿĦ ±\nðĿĦ ´\nðĿĦ ¹\nðĿħ İ\nðĿħ ª\nðĿĨ £\nðĿĨ ³\nðĿĨ ¹\nðĿĩ Ĭ\nðĿĩ Ĺ\nðĿĩ ļ\nðĿĩ ľ\nðĿĩ ł\nðĿĲ ī\nðĿĲ ĸ\nðĿĲ ĺ\nðĿĲ £\nðĿĲ ±\nðĿĳ Ĭ\nðĿĳ Ń\nðĿĳ ¼\nðĿĳ ½\nðĿĴ °\nðĿĴ ·\nðĿĴ ¿\nðĿĵ ģ\nðĿĵ ĭ\nðĿĵ İ\nðĿĵ Ĵ\nðĿ ĵĺ\nðĿĵ ¢\nðĿĵ ¦\nðĿĵ «\nðĿĵ ¿\nðĿĶ İ\nðĿĶ ±\nðĿĶ ´\nðĿĶ ·\nðĿĶ ¸\nðĿĶ ½\nðĿķ Ĥ\nðĿķ ĥ\nðĿķ ĭ\nðĿķ ı\nðĿķ Ĳ\nðĿķ ¥\nðĿķ ´\nðĿķ º\nðĿĸ Ĳ\nðĿĸ Ľ\nðĿĸ Ŀ\nðĿĸ ŀ\nðĿĹ ©\nðĿĹ ³\nðĿĹ ½\nðĿĺ Ĭ\nðĿĺ ĭ\nðĿĺ Ķ\nðĿĺ ±\nðĿĺ ´\nðĿĺ ¿\nðĿĻ Ĵ\nðĿĻ Ŀ\nðĿĻ Ł\nðĿĻ ¬\nðĿĻ Ń\nðĿĻ »\nðĿĻ ¾\nðĿļ Ī\nðĿļ ĭ\nðĿļ ĳ\nðĿļ Ł\nðĿļ ł\nðĿļ £\nðĿĽ ½\nðĿľ Ĥ\nðĿľ Ķ\nðĿľ Ļ\nðŁ Ģ\nðŁĢ Ħ\nðŁĦ ²\nðŁĦ ¶\nðŁħ Ĳ\nðŁħ ĸ\nðŁħ ļ\nðŁħ Ľ\nðŁħ ¦\nðŁħ ¶\nðŁħ »\nðŁħ ¼\nðŁĨ ĥ\nðŁĨ Ĩ\nðŁĨ İ\nðŁĪ ¯\nðŁĪ ²\nðŁĪ ¹\nðŁĮ ĩ\nðŁĮ ĵ\nðŁį ĺ\nðŁİ ĳ\nðŁİ ¿\nðŁı ı\nðŁı Ĵ\nðŁı ©\nðŁı ¯\nðŁĲ Ģ\nðŁĳ Ŀ\nðŁĴ ¹\nðŁĴ º\nðŁĵ Ł\nðŁĵ ª\nðŁĵ ¼\nðŁĶ Ģ\nðŁĶ Ĥ\nðŁĶ ĥ\nðŁĶ ĩ\nðŁĶ ĵ\nðŁĶ ¢\nðŁĶ ¤\nðŁĶ ©\nðŁķ ĸ\nðŁķ ļ\nðŁķ ľ\nðŁķ Ŀ\nðŁķ ŀ\nðŁķ ł\nðŁķ ¢\nðŁķ ³\nðŁĸ ĩ\nðŁĸ ĳ\nðŁĸ ¶\nðŁĹ ģ\nÑ ¨\nÚ İ\ná¡ Į\ná¸ °\náº Ģ\ná¼ ®\ná½ Ŀ\nâĦ ¬\nâļ §\nâĽ ¤\nã³ ¬\nêĻ ĭ\nê¸ ĳ\nëĶ ī\nëĹ į\në¡ ĳ\në¯ ĳ\në» ħ\në¼ Ŀ\nìĦ Ĳ\nìī ¡\nìĭ ²\nìı ±\nìĹ ¤\nìĿ ©\nìĿ ¿\nìŁ Ļ\nìł °\nì¥ ī\níĬ Ń\níķ ®\nï® ı\nðŁħ ±\nðŁĨ Ĵ\nðŁķ ĭ\nÉ ĺ\nÊ ĵ\nÕ ĥ\nà´ ´\nà½ ħ\náĨ º\náĪ Ĭ\náĪ ¨\náĪ ¾\náī Ĳ\náĮ ĥ\náĮ ½\náĶ Ń\náł Ĥ\náł ¬\ná¨ ¸\ná© ĭ\ná¶ ı\ná¾ Ķ\ná¿ Ĳ\ná¿ ļ\nâĻ Ļ\nâļ Ĥ\nâļ Ĺ\nâ¡ ¢\nâ¤ ¦\nëĸ °\në¤ Ĥ\në§ ł\në± ĭ\në± Ĳ\nìĽ ¢\nìľ ¾\nì³ ħ\nì» ģ\níģ »\níĥ Ļ\níĵ ĸ\níĵ Ń\níķ ±\níĽ ľ\nï¤ ħ\nï¤ Ĩ\nï¦ ĥ\nï§ ©\nï¨ Ĥ\nðĲ¤ Ķ\nðĲŃ ĵ\nðĲ° ¼\nðĿĵ ŀ\nðĿĵ °\nðĿĻ ľ\nðĿļ ģ\nðŁħ ¢\nðŁı ĩ\nÈ ²\nÊ ¶\nÔ Ī\nÔ ĳ\nÝ ĵ\nÝ ¥\nà¤ ĳ\nà¥ ±\nà¬ ī\nà° ³\nà° µ\nà² Ł\náĢ ı\náģ ¼\náī ¨\náĬ Ĵ\náĭ ©\náĮ Ħ\náĮ Ķ\náĲ §\ná ĴĮ\náĶ ħ\náĶ Ĭ\náł Ħ\ná¨ ģ\ná¸ ĥ\ná¸ »\nâĶ ŀ\nâĺ µ\nâļ £\nâ² ¢\nãĪ ª\nä¶ µ\nê² Ļ\nê² ´\nê³ Ĥ\në¡ ¼\nìĨ Ĭ\nì¼ ĩ\níĭ į\níĵ ¬\níĵ ®\níĵ ¶\níĵ »\nï¤ ¦\nï¥ ł\nï¥ ±\nïŃ ²\nðĲŃ Ĭ\nðĲ ±ħ\nðĸ ¥\nðĸ¥ ¨\nðĿĳ ³\nðĿĵ ķ\nðĿĵ ¬\nðĿĵ ¹\nðĿĵ ¾\nðĿĶ ĵ\nðĿķ į\nðĿķ ¡\nðĿķ ±\nðĿĸ ĸ\nðĿĺ ı\nðĿĺ Ĳ\nðĿĺ ļ\nðĿĻ ®\nðĿĻ °\nðĿĻ ¸\nðĿĻ º\nðĿĻ ¼\nðĿĻ ½\nðĿĻ ¿\nðĿļ Ħ\nðĿļ ı\nðŁħ ħ\nðŁħ ĵ\nÆ Ī\nàł Į\náĻ ³\ná ļĮ\náĽ ħ\náĽ Ĳ\ná¤ Ĭ\ná¸ Ĭ\nâĶ ½\nâķ Ĭ\nâĽ ĩ\nâĽ ı\nâĿ ª\nâĿ «\nâŁ °\nãĦ į\nãĦ ĵ\nãĦ §\nãħ ĸ\nãī «\nê¦ Ķ\nï± Ĭ\nàº Ĥ\náħ £\ná¥ Ķ\ná¥ ¤\nâĨ ¤\nâĨ ·\nâĩ ŀ\nâĸ ¤\nâŀ ¶\nãĪ ¼\nï¨ ·\nðĵı §\nâĶ ²\nâĢ ´\nâĴ Ł\nâĴ ¡\nâ° Ĥ\nâ° į\nâ° İ\nâ° Ĳ\nâ° ĳ\nâ° Ł\nâ° ł\nâ° ¡\nâ¼ Ń\nãĬ ¥\nâĴ ł\nâ½ º\nãĩ º\nãĩ ½\nï¨ Ĭ\náķ ·\nâį ¨\nâº Ł\nâ½ Ĺ\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/tokenizer_config.json",
    "content": "{\n  \"add_bos_token\": false,\n  \"add_prefix_space\": false,\n  \"added_tokens_decoder\": {\n    \"151643\": {\n      \"content\": \"<|endoftext|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151644\": {\n      \"content\": \"<|im_start|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151645\": {\n      \"content\": \"<|im_end|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151646\": {\n      \"content\": \"<|object_ref_start|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151647\": {\n      \"content\": \"<|object_ref_end|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151648\": {\n      \"content\": \"<|box_start|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151649\": {\n      \"content\": \"<|box_end|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151650\": {\n      \"content\": \"<|quad_start|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151651\": {\n      \"content\": \"<|quad_end|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151652\": {\n      \"content\": \"<|vision_start|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151653\": {\n      \"content\": \"<|vision_end|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151654\": {\n      \"content\": \"<|vision_pad|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151655\": {\n      \"content\": \"<|image_pad|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151656\": {\n      \"content\": \"<|video_pad|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": true\n    },\n    \"151657\": {\n      \"content\": \"<tool_call>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151658\": {\n      \"content\": \"</tool_call>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151659\": {\n      \"content\": \"<|fim_prefix|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151660\": {\n      \"content\": \"<|fim_middle|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151661\": {\n      \"content\": \"<|fim_suffix|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151662\": {\n      \"content\": \"<|fim_pad|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151663\": {\n      \"content\": \"<|repo_name|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151664\": {\n      \"content\": \"<|file_sep|>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151665\": {\n      \"content\": \"<tool_response>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151666\": {\n      \"content\": \"</tool_response>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151667\": {\n      \"content\": \"<think>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    },\n    \"151668\": {\n      \"content\": \"</think>\",\n      \"lstrip\": false,\n      \"normalized\": false,\n      \"rstrip\": false,\n      \"single_word\": false,\n      \"special\": false\n    }\n  },\n  \"additional_special_tokens\": [\n    \"<|im_start|>\",\n    \"<|im_end|>\",\n    \"<|object_ref_start|>\",\n    \"<|object_ref_end|>\",\n    \"<|box_start|>\",\n    \"<|box_end|>\",\n    \"<|quad_start|>\",\n    \"<|quad_end|>\",\n    \"<|vision_start|>\",\n    \"<|vision_end|>\",\n    \"<|vision_pad|>\",\n    \"<|image_pad|>\",\n    \"<|video_pad|>\"\n  ],\n  \"bos_token\": null,\n  \"chat_template\": \"{%- if tools %}\\n    {{- '<|im_start|>system\\\\n' }}\\n    {%- if messages[0].role == 'system' %}\\n        {{- messages[0].content + '\\\\n\\\\n' }}\\n    {%- endif %}\\n    {{- \\\"# Tools\\\\n\\\\nYou may call one or more functions to assist with the user query.\\\\n\\\\nYou are provided with function signatures within <tools></tools> XML tags:\\\\n<tools>\\\" }}\\n    {%- for tool in tools %}\\n        {{- \\\"\\\\n\\\" }}\\n        {{- tool | tojson }}\\n    {%- endfor %}\\n    {{- \\\"\\\\n</tools>\\\\n\\\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\\\n<tool_call>\\\\n{\\\\\\\"name\\\\\\\": <function-name>, \\\\\\\"arguments\\\\\\\": <args-json-object>}\\\\n</tool_call><|im_end|>\\\\n\\\" }}\\n{%- else %}\\n    {%- if messages[0].role == 'system' %}\\n        {{- '<|im_start|>system\\\\n' + messages[0].content + '<|im_end|>\\\\n' }}\\n    {%- endif %}\\n{%- endif %}\\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\\n{%- for message in messages[::-1] %}\\n    {%- set index = (messages|length - 1) - loop.index0 %}\\n    {%- if ns.multi_step_tool and message.role == \\\"user\\\" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}\\n        {%- set ns.multi_step_tool = false %}\\n        {%- set ns.last_query_index = index %}\\n    {%- endif %}\\n{%- endfor %}\\n{%- for message in messages %}\\n    {%- if message.content is string %}\\n        {%- set content = message.content %}\\n    {%- else %}\\n        {%- set content = '' %}\\n    {%- endif %}\\n    {%- if (message.role == \\\"user\\\") or (message.role == \\\"system\\\" and not loop.first) %}\\n        {{- '<|im_start|>' + message.role + '\\\\n' + content + '<|im_end|>' + '\\\\n' }}\\n    {%- elif message.role == \\\"assistant\\\" %}\\n        {%- set reasoning_content = '' %}\\n        {%- if message.reasoning_content is string %}\\n            {%- set reasoning_content = message.reasoning_content %}\\n        {%- else %}\\n            {%- if '</think>' in content %}\\n                {%- set reasoning_content = content.split('</think>')[0].rstrip('\\\\n').split('<think>')[-1].lstrip('\\\\n') %}\\n                {%- set content = content.split('</think>')[-1].lstrip('\\\\n') %}\\n            {%- endif %}\\n        {%- endif %}\\n        {%- if loop.index0 > ns.last_query_index %}\\n            {%- if loop.last or (not loop.last and reasoning_content) %}\\n                {{- '<|im_start|>' + message.role + '\\\\n<think>\\\\n' + reasoning_content.strip('\\\\n') + '\\\\n</think>\\\\n\\\\n' + content.lstrip('\\\\n') }}\\n            {%- else %}\\n                {{- '<|im_start|>' + message.role + '\\\\n' + content }}\\n            {%- endif %}\\n        {%- else %}\\n            {{- '<|im_start|>' + message.role + '\\\\n' + content }}\\n        {%- endif %}\\n        {%- if message.tool_calls %}\\n            {%- for tool_call in message.tool_calls %}\\n                {%- if (loop.first and content) or (not loop.first) %}\\n                    {{- '\\\\n' }}\\n                {%- endif %}\\n                {%- if tool_call.function %}\\n                    {%- set tool_call = tool_call.function %}\\n                {%- endif %}\\n                {{- '<tool_call>\\\\n{\\\"name\\\": \\\"' }}\\n                {{- tool_call.name }}\\n                {{- '\\\", \\\"arguments\\\": ' }}\\n                {%- if tool_call.arguments is string %}\\n                    {{- tool_call.arguments }}\\n                {%- else %}\\n                    {{- tool_call.arguments | tojson }}\\n                {%- endif %}\\n                {{- '}\\\\n</tool_call>' }}\\n            {%- endfor %}\\n        {%- endif %}\\n        {{- '<|im_end|>\\\\n' }}\\n    {%- elif message.role == \\\"tool\\\" %}\\n        {%- if loop.first or (messages[loop.index0 - 1].role != \\\"tool\\\") %}\\n            {{- '<|im_start|>user' }}\\n        {%- endif %}\\n        {{- '\\\\n<tool_response>\\\\n' }}\\n        {{- content }}\\n        {{- '\\\\n</tool_response>' }}\\n        {%- if loop.last or (messages[loop.index0 + 1].role != \\\"tool\\\") %}\\n            {{- '<|im_end|>\\\\n' }}\\n        {%- endif %}\\n    {%- endif %}\\n{%- endfor %}\\n{%- if add_generation_prompt %}\\n    {{- '<|im_start|>assistant\\\\n' }}\\n    {%- if enable_thinking is defined and enable_thinking is false %}\\n        {{- '<think>\\\\n\\\\n</think>\\\\n\\\\n' }}\\n    {%- endif %}\\n{%- endif %}\",\n  \"clean_up_tokenization_spaces\": false,\n  \"eos_token\": \"<|im_end|>\",\n  \"errors\": \"replace\",\n  \"model_max_length\": 131072,\n  \"pad_token\": \"<|endoftext|>\",\n  \"split_special_tokens\": false,\n  \"tokenizer_class\": \"Qwen2Tokenizer\",\n  \"unk_token\": null\n}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/resource/model_tokenizer/vocab.json",
    "content": "{\"!\":0,\"\\\"\":1,\"#\":2,\"$\":3,\"%\":4,\"&\":5,\"'\":6,\"(\":7,\")\":8,\"*\":9,\"+\":10,\",\":11,\"-\":12,\".\":13,\"/\":14,\"0\":15,\"1\":16,\"2\":17,\"3\":18,\"4\":19,\"5\":20,\"6\":21,\"7\":22,\"8\":23,\"9\":24,\":\":25,\";\":26,\"<\":27,\"=\":28,\">\":29,\"?\":30,\"@\":31,\"A\":32,\"B\":33,\"C\":34,\"D\":35,\"E\":36,\"F\":37,\"G\":38,\"H\":39,\"I\":40,\"J\":41,\"K\":42,\"L\":43,\"M\":44,\"N\":45,\"O\":46,\"P\":47,\"Q\":48,\"R\":49,\"S\":50,\"T\":51,\"U\":52,\"V\":53,\"W\":54,\"X\":55,\"Y\":56,\"Z\":57,\"[\":58,\"\\\\\":59,\"]\":60,\"^\":61,\"_\":62,\"`\":63,\"a\":64,\"b\":65,\"c\":66,\"d\":67,\"e\":68,\"f\":69,\"g\":70,\"h\":71,\"i\":72,\"j\":73,\"k\":74,\"l\":75,\"m\":76,\"n\":77,\"o\":78,\"p\":79,\"q\":80,\"r\":81,\"s\":82,\"t\":83,\"u\":84,\"v\":85,\"w\":86,\"x\":87,\"y\":88,\"z\":89,\"{\":90,\"|\":91,\"}\":92,\"~\":93,\"¡\":94,\"¢\":95,\"£\":96,\"¤\":97,\"¥\":98,\"¦\":99,\"§\":100,\"¨\":101,\"©\":102,\"ª\":103,\"«\":104,\"¬\":105,\"®\":106,\"¯\":107,\"°\":108,\"±\":109,\"²\":110,\"³\":111,\"´\":112,\"µ\":113,\"¶\":114,\"·\":115,\"¸\":116,\"¹\":117,\"º\":118,\"»\":119,\"¼\":120,\"½\":121,\"¾\":122,\"¿\":123,\"À\":124,\"Á\":125,\"Â\":126,\"Ã\":127,\"Ä\":128,\"Å\":129,\"Æ\":130,\"Ç\":131,\"È\":132,\"É\":133,\"Ê\":134,\"Ë\":135,\"Ì\":136,\"Í\":137,\"Î\":138,\"Ï\":139,\"Ð\":140,\"Ñ\":141,\"Ò\":142,\"Ó\":143,\"Ô\":144,\"Õ\":145,\"Ö\":146,\"×\":147,\"Ø\":148,\"Ù\":149,\"Ú\":150,\"Û\":151,\"Ü\":152,\"Ý\":153,\"Þ\":154,\"ß\":155,\"à\":156,\"á\":157,\"â\":158,\"ã\":159,\"ä\":160,\"å\":161,\"æ\":162,\"ç\":163,\"è\":164,\"é\":165,\"ê\":166,\"ë\":167,\"ì\":168,\"í\":169,\"î\":170,\"ï\":171,\"ð\":172,\"ñ\":173,\"ò\":174,\"ó\":175,\"ô\":176,\"õ\":177,\"ö\":178,\"÷\":179,\"ø\":180,\"ù\":181,\"ú\":182,\"û\":183,\"ü\":184,\"ý\":185,\"þ\":186,\"ÿ\":187,\"Ā\":188,\"ā\":189,\"Ă\":190,\"ă\":191,\"Ą\":192,\"ą\":193,\"Ć\":194,\"ć\":195,\"Ĉ\":196,\"ĉ\":197,\"Ċ\":198,\"ċ\":199,\"Č\":200,\"č\":201,\"Ď\":202,\"ď\":203,\"Đ\":204,\"đ\":205,\"Ē\":206,\"ē\":207,\"Ĕ\":208,\"ĕ\":209,\"Ė\":210,\"ė\":211,\"Ę\":212,\"ę\":213,\"Ě\":214,\"ě\":215,\"Ĝ\":216,\"ĝ\":217,\"Ğ\":218,\"ğ\":219,\"Ġ\":220,\"ġ\":221,\"Ģ\":222,\"ģ\":223,\"Ĥ\":224,\"ĥ\":225,\"Ħ\":226,\"ħ\":227,\"Ĩ\":228,\"ĩ\":229,\"Ī\":230,\"ī\":231,\"Ĭ\":232,\"ĭ\":233,\"Į\":234,\"į\":235,\"İ\":236,\"ı\":237,\"Ĳ\":238,\"ĳ\":239,\"Ĵ\":240,\"ĵ\":241,\"Ķ\":242,\"ķ\":243,\"ĸ\":244,\"Ĺ\":245,\"ĺ\":246,\"Ļ\":247,\"ļ\":248,\"Ľ\":249,\"ľ\":250,\"Ŀ\":251,\"ŀ\":252,\"Ł\":253,\"ł\":254,\"Ń\":255,\"ĠĠ\":256,\"ĠĠĠĠ\":257,\"in\":258,\"Ġt\":259,\"ĠĠĠĠĠĠĠĠ\":260,\"er\":261,\"ĠĠĠ\":262,\"on\":263,\"Ġa\":264,\"re\":265,\"at\":266,\"st\":267,\"en\":268,\"or\":269,\"Ġth\":270,\"ĊĊ\":271,\"Ġc\":272,\"le\":273,\"Ġs\":274,\"it\":275,\"an\":276,\"ar\":277,\"al\":278,\"Ġthe\":279,\";Ċ\":280,\"Ġp\":281,\"Ġf\":282,\"ou\":283,\"Ġ=\":284,\"is\":285,\"ĠĠĠĠĠĠĠ\":286,\"ing\":287,\"es\":288,\"Ġw\":289,\"ion\":290,\"ed\":291,\"ic\":292,\"Ġb\":293,\"Ġd\":294,\"et\":295,\"Ġm\":296,\"Ġo\":297,\"ĉĉ\":298,\"ro\":299,\"as\":300,\"el\":301,\"ct\":302,\"nd\":303,\"Ġin\":304,\"Ġh\":305,\"ent\":306,\"id\":307,\"Ġn\":308,\"am\":309,\"ĠĠĠĠĠĠĠĠĠĠĠ\":310,\"Ġto\":311,\"Ġre\":312,\"--\":313,\"Ġ{\":314,\"Ġof\":315,\"om\":316,\");Ċ\":317,\"im\":318,\"čĊ\":319,\"Ġ(\":320,\"il\":321,\"//\":322,\"Ġand\":323,\"ur\":324,\"se\":325,\"Ġl\":326,\"ex\":327,\"ĠS\":328,\"ad\":329,\"Ġ\\\"\":330,\"ch\":331,\"ut\":332,\"if\":333,\"**\":334,\"Ġ}\":335,\"em\":336,\"ol\":337,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":338,\"th\":339,\")Ċ\":340,\"Ġ{Ċ\":341,\"Ġg\":342,\"ig\":343,\"iv\":344,\",Ċ\":345,\"ce\":346,\"od\":347,\"Ġv\":348,\"ate\":349,\"ĠT\":350,\"ag\":351,\"ay\":352,\"Ġ*\":353,\"ot\":354,\"us\":355,\"ĠC\":356,\"Ġst\":357,\"ĠI\":358,\"un\":359,\"ul\":360,\"ue\":361,\"ĠA\":362,\"ow\":363,\"Ġ'\":364,\"ew\":365,\"Ġ<\":366,\"ation\":367,\"()\":368,\"Ġfor\":369,\"ab\":370,\"ort\":371,\"um\":372,\"ame\":373,\"Ġis\":374,\"pe\":375,\"tr\":376,\"ck\":377,\"âĢ\":378,\"Ġy\":379,\"ist\":380,\"----\":381,\".ĊĊ\":382,\"he\":383,\"Ġe\":384,\"lo\":385,\"ĠM\":386,\"Ġbe\":387,\"ers\":388,\"Ġon\":389,\"Ġcon\":390,\"ap\":391,\"ub\":392,\"ĠP\":393,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":394,\"ass\":395,\"int\":396,\">Ċ\":397,\"ly\":398,\"urn\":399,\"Ġ$\":400,\";ĊĊ\":401,\"av\":402,\"port\":403,\"ir\":404,\"->\":405,\"nt\":406,\"ction\":407,\"end\":408,\"Ġde\":409,\"ith\":410,\"out\":411,\"turn\":412,\"our\":413,\"ĠĠĠĠĠ\":414,\"lic\":415,\"res\":416,\"pt\":417,\"==\":418,\"Ġthis\":419,\"Ġwh\":420,\"Ġif\":421,\"ĠD\":422,\"ver\":423,\"age\":424,\"ĠB\":425,\"ht\":426,\"ext\":427,\"=\\\"\":428,\"Ġthat\":429,\"****\":430,\"ĠR\":431,\"Ġit\":432,\"ess\":433,\"ĠF\":434,\"Ġr\":435,\"os\":436,\"and\":437,\"Ġas\":438,\"ect\":439,\"ke\":440,\"rom\":441,\"Ġ//\":442,\"con\":443,\"ĠL\":444,\"(\\\"\":445,\"qu\":446,\"lass\":447,\"Ġwith\":448,\"iz\":449,\"de\":450,\"ĠN\":451,\"Ġal\":452,\"op\":453,\"up\":454,\"get\":455,\"Ġ}Ċ\":456,\"ile\":457,\"Ġan\":458,\"ata\":459,\"ore\":460,\"ri\":461,\"Ġpro\":462,\";čĊ\":463,\"ĉĉĉĉ\":464,\"ter\":465,\"ain\":466,\"ĠW\":467,\"ĠE\":468,\"Ġcom\":469,\"Ġreturn\":470,\"art\":471,\"ĠH\":472,\"ack\":473,\"import\":474,\"ublic\":475,\"Ġor\":476,\"est\":477,\"ment\":478,\"ĠG\":479,\"able\":480,\"Ġ-\":481,\"ine\":482,\"ill\":483,\"ind\":484,\"ere\":485,\"::\":486,\"ity\":487,\"Ġ+\":488,\"Ġtr\":489,\"elf\":490,\"ight\":491,\"('\":492,\"orm\":493,\"ult\":494,\"str\":495,\"..\":496,\"\\\",\":497,\"Ġyou\":498,\"ype\":499,\"pl\":500,\"Ġnew\":501,\"Ġj\":502,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":503,\"Ġfrom\":504,\"Ġex\":505,\"ĠO\":506,\"ld\":507,\"Ġ[\":508,\"oc\":509,\":Ċ\":510,\"Ġse\":511,\"Ġle\":512,\"--------\":513,\".s\":514,\"{Ċ\":515,\"',\":516,\"ant\":517,\"Ġat\":518,\"ase\":519,\".c\":520,\"Ġch\":521,\"</\":522,\"ave\":523,\"ang\":524,\"Ġare\":525,\"Ġint\":526,\"âĢĻ\":527,\"_t\":528,\"ert\":529,\"ial\":530,\"act\":531,\"}Ċ\":532,\"ive\":533,\"ode\":534,\"ost\":535,\"Ġclass\":536,\"Ġnot\":537,\"og\":538,\"ord\":539,\"alue\":540,\"all\":541,\"ff\":542,\"();Ċ\":543,\"ont\":544,\"ime\":545,\"are\":546,\"ĠU\":547,\"Ġpr\":548,\"Ġ:\":549,\"ies\":550,\"ize\":551,\"ure\":552,\"Ġby\":553,\"ire\":554,\"Ġ}ĊĊ\":555,\".p\":556,\"Ġsh\":557,\"ice\":558,\"ast\":559,\"ption\":560,\"tring\":561,\"ok\":562,\"__\":563,\"cl\":564,\"##\":565,\"Ġhe\":566,\"ard\":567,\").\":568,\"Ġ@\":569,\"iew\":570,\"ĉĉĉ\":571,\"Ġwas\":572,\"ip\":573,\"this\":574,\"Ġu\":575,\"ĠThe\":576,\"ide\":577,\"ace\":578,\"ib\":579,\"ac\":580,\"rou\":581,\"Ġwe\":582,\"ject\":583,\"Ġpublic\":584,\"ak\":585,\"ve\":586,\"ath\":587,\"oid\":588,\"Ġ=>\":589,\"ust\":590,\"que\":591,\"Ġres\":592,\"))\":593,\"'s\":594,\"Ġk\":595,\"ans\":596,\"yst\":597,\"unction\":598,\"********\":599,\"Ġi\":600,\"Ġus\":601,\"pp\":602,\"one\":603,\"ail\":604,\"====\":605,\"name\":606,\"Ġstr\":607,\"Ġ/\":608,\"Ġ&\":609,\"ach\":610,\"div\":611,\"ystem\":612,\"ell\":613,\"Ġhave\":614,\"err\":615,\"ould\":616,\"ull\":617,\"pon\":618,\"ĠJ\":619,\"_p\":620,\"Ġ==\":621,\"ign\":622,\"St\":623,\".Ċ\":624,\"Ġpl\":625,\");ĊĊ\":626,\"form\":627,\"put\":628,\"ount\":629,\"}ĊĊ\":630,\"dd\":631,\"ite\":632,\"Ġget\":633,\"rr\":634,\"ome\":635,\"ĠâĢ\":636,\"aram\":637,\"cc\":638,\"Ġ*/\":639,\"ER\":640,\"In\":641,\"les\":642,\"_s\":643,\"ong\":644,\"ie\":645,\"Ġcan\":646,\"ĠV\":647,\"erv\":648,\"pr\":649,\"Ġun\":650,\"row\":651,\"ber\":652,\"Ġdo\":653,\"ll\":654,\"Ġel\":655,\"Ġself\":656,\"ated\":657,\"ary\":658,\"Ġ.\":659,\"']\":660,\"ud\":661,\"Ġen\":662,\"ĠTh\":663,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":664,\"te\":665,\"_c\":666,\"uct\":667,\"Ġab\":668,\"ork\":669,\".get\":670,\"Ġ#\":671,\"aw\":672,\"ress\":673,\"ob\":674,\"Name\":675,\"app\":676,\"['\":677,\"Ġall\":678,\"ory\":679,\"ition\":680,\"ance\":681,\"ear\":682,\"Ġcont\":683,\"vent\":684,\"ia\":685,\"Ġwill\":686,\"IN\":687,\"ĠĠĠĠĠĠĠĠĠ\":688,\"return\":689,\"Ġ</\":690,\"data\":691,\")ĊĊ\":692,\"Re\":693,\"ple\":694,\"ild\":695,\"ther\":696,\"Ġyour\":697,\"\\\"Ċ\":698,\"($\":699,\"Ġout\":700,\"),\":701,\"Ġhas\":702,\"String\":703,\"so\":704,\"Ġup\":705,\"ax\":706,\"Ġdef\":707,\"Ġbo\":708,\"ge\":709,\"alse\":710,\"ON\":711,\"per\":712,\"ich\":713,\"Ġbut\":714,\"ĠĊ\":715,\"Ġ_\":716,\"_m\":717,\"add\":718,\"quest\":719,\"odel\":720,\"self\":721,\"ery\":722,\"ft\":723,\"ens\":724,\"////\":725,\"ake\":726,\".C\":727,\"Ġgo\":728,\"Ġfunction\":729,\"ĠK\":730,\"ivate\":731,\"Ġim\":732,\"Ġconst\":733,\".t\":734,\"Ġ*/Ċ\":735,\");čĊ\":736,\"Ġvoid\":737,\"Ġset\":738,\"ĠSystem\":739,\"cri\":740,\"()Ċ\":741,\"li\":742,\"ĉif\":743,\".m\":744,\"ally\":745,\"set\":746,\"ep\":747,\"âĢĻs\":748,\"bo\":749,\"def\":750,\"',Ċ\":751,\"Ġme\":752,\"Ġ!\":753,\"atch\":754,\"\\\">\":755,\"\\\",Ċ\":756,\"ec\":757,\"ĠIn\":758,\"ph\":759,\"Ġ|\":760,\"_f\":761,\"Ġvar\":762,\"ence\":763,\"Id\":764,\"ree\":765,\"ink\":766,\"lect\":767,\"ug\":768,\"eth\":769,\"Ġelse\":770,\"----------------\":771,\"cont\":772,\"Ġso\":773,\"atic\":774,\"Ġlo\":775,\"pro\":776,\"ton\":777,\"ss\":778,\"own\":779,\"abel\":780,\"oint\":781,\"ous\":782,\"eld\":783,\"ST\":784,\"The\":785,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":786,\"RE\":787,\"\\\":\":788,\"olor\":789,\"tp\":790,\"eg\":791,\"key\":792,\"ude\":793,\"ĠSt\":794,\"ound\":795,\"Ġar\":796,\"\\\");Ċ\":797,\"ener\":798,\"ser\":799,\"bject\":800,\"essage\":801,\"fer\":802,\"Ġmore\":803,\"ations\":804,\"ents\":805,\"Ġhis\":806,\"Ġthey\":807,\".S\":808,\"ĠY\":809,\"use\":810,\"ne\":811,\"ish\":812,\"old\":813,\"_d\":814,\"io\":815,\"ield\":816,\"Ġper\":817,\"Cont\":818,\"ings\":819,\"####\":820,\"Ġdata\":821,\"Ġsa\":822,\"ef\":823,\"fo\":824,\"Ġone\":825,\"eng\":826,\"Ġdis\":827,\"AT\":828,\"Ġname\":829,\"Ġtrue\":830,\"val\":831,\"led\":832,\".f\":833,\"Ġne\":834,\"Ġend\":835,\".T\":836,\"cre\":837,\"ark\":838,\"log\":839,\"Ex\":840,\"error\":841,\"_id\":842,\"urre\":843,\"ange\":844,\"Ġnull\":845,\"rray\":846,\"Ġmy\":847,\"pan\":848,\"ict\":849,\"ator\":850,\"View\":851,\"List\":852,\"ĉreturn\":853,\"âĢĿ\":854,\"Ġpre\":855,\"Ġx\":856,\"clude\":857,\"arg\":858,\"ov\":859,\".h\":860,\"Ġ>\":861,\"Ġtheir\":862,\"')\":863,\"irst\":864,\"ick\":865,\"gh\":866,\"LE\":867,\"OR\":868,\"Ġprivate\":869,\"tem\":870,\"čĊčĊ\":871,\"user\":872,\"Ġ)\":873,\"com\":874,\".A\":875,\"\\\";Ċ\":876,\"Ġid\":877,\"read\":878,\"Ġwho\":879,\"_b\":880,\"\\\">Ċ\":881,\"Ġtime\":882,\"Ġman\":883,\"ry\":884,\"========\":885,\"roup\":886,\"rop\":887,\"public\":888,\"vel\":889,\"umber\":890,\"ble\":891,\"Ġwhich\":892,\"****************\":893,\"Ġany\":894,\"Ġfalse\":895,\"we\":896,\"Ġvalue\":897,\"Ġli\":898,\"\\\")\":899,\"nder\":900,\"gr\":901,\"Ġno\":902,\"param\":903,\"fig\":904,\".com\":905,\"Ġapp\":906,\"_l\":907,\"ions\":908,\".D\":909,\"ĠCh\":910,\"Ġabout\":911,\"Ġadd\":912,\"Ġsu\":913,\"Ġstring\":914,\"ID\":915,\"Ġover\":916,\"string\":917,\".l\":918,\"ource\":919,\"_C\":920,\"]Ċ\":921,\"Ġqu\":922,\"ĠString\":923,\"ca\":924,\"SE\":925,\"Ġro\":926,\"sh\":927,\"ual\":928,\"Type\":929,\"son\":930,\"new\":931,\"ern\":932,\"Ġag\":933,\"AR\":934,\"];Ċ\":935,\"].\":936,\"Ġ?\":937,\"ical\":938,\"Ġdes\":939,\"uth\":940,\"ix\":941,\"ays\":942,\"Ġtype\":943,\"'t\":944,\"ault\":945,\"Ġinter\":946,\"var\":947,\".b\":948,\"Ġpart\":949,\".d\":950,\"urrent\":951,\"IT\":952,\"EN\":953,\"enc\":954,\"(f\":955,\"ra\":956,\"value\":957,\"cho\":958,\"utton\":959,\"ose\":960,\"Ġ!=\":961,\"ater\":962,\"Ã©\":963,\"reate\":964,\"oll\":965,\"pos\":966,\"yle\":967,\"ng\":968,\"AL\":969,\"using\":970,\"ames\":971,\"Ġ{čĊ\":972,\"ates\":973,\"ely\":974,\"Ġwork\":975,\"Ġem\":976,\"inal\":977,\"Ġsp\":978,\"Ġwhen\":979,\".set\":980,\"ĠĠĠĠĠĠ\":981,\"):Ċ\":982,\"to\":983,\"quire\":984,\"indow\":985,\"lement\":986,\"pect\":987,\"ash\":988,\"[i\":989,\"Ġuse\":990,\".F\":991,\"pec\":992,\"Ġad\":993,\"ove\":994,\"ception\":995,\"ength\":996,\"include\":997,\"ader\":998,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":999,\"atus\":1000,\"Th\":1001,\"itle\":1002,\"rit\":1003,\"void\":1004,\"().\":1005,\"(Ċ\":1006,\"Ġoff\":1007,\"Ġother\":1008,\"Ġ&&\":1009,\"';Ċ\":1010,\"ms\":1011,\"Ġbeen\":1012,\"Ġte\":1013,\"ml\":1014,\"co\":1015,\"nc\":1016,\"ervice\":1017,\"Ġ%\":1018,\"**Ċ\":1019,\"ann\":1020,\"ade\":1021,\"ĊĊĊĊ\":1022,\"lock\":1023,\"const\":1024,\"ponse\":1025,\"Ġsup\":1026,\"++\":1027,\"date\":1028,\"Ġacc\":1029,\"Ġhad\":1030,\"Ġbu\":1031,\"ĠRe\":1032,\"Ġwere\":1033,\"Ġfile\":1034,\"Ġwould\":1035,\"ĠâĢľ\":1036,\"ven\":1037,\"iss\":1038,\"Ġour\":1039,\"class\":1040,\"raw\":1041,\"Ġyear\":1042,\"Data\":1043,\"Ġval\":1044,\"Ġsome\":1045,\"fter\":1046,\"ys\":1047,\"Ġ///\":1048,\"round\":1049,\"view\":1050,\"Ġpe\":1051,\"Ġthere\":1052,\"Ġsaid\":1053,\"du\":1054,\"of\":1055,\"line\":1056,\"/*\":1057,\"duct\":1058,\"Ġher\":1059,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠ\":1060,\"Res\":1061,\"Ġco\":1062,\"Ġcomm\":1063,\"ise\":1064,\"min\":1065,\"ĠĠĠĠĊ\":1066,\"#include\":1067,\"ethod\":1068,\".P\":1069,\"ute\":1070,\"Ġass\":1071,\"Int\":1072,\"ask\":1073,\"loc\":1074,\"Ġlike\":1075,\"ody\":1076,\"Ġlet\":1077,\"load\":1078,\"Ġam\":1079,\"rol\":1080,\"Ġgr\":1081,\"yp\":1082,\"Ġalso\":1083,\"ĠIt\":1084,\"url\":1085,\"ific\":1086,\"ors\":1087,\"_P\":1088,\"_n\":1089,\"igh\":1090,\"Ġthan\":1091,\"Com\":1092,\"AN\":1093,\"UL\":1094,\"ating\":1095,\"ĠThis\":1096,\"ref\":1097,\"_S\":1098,\"Ġstatic\":1099,\"roll\":1100,\"Ġjust\":1101,\"Ġresult\":1102,\"ian\":1103,\"idth\":1104,\"Ġthem\":1105,\"));Ċ\":1106,\"der\":1107,\"reak\":1108,\"Con\":1109,\"://\":1110,\"ule\":1111,\"...\":1112,\"arch\":1113,\"ement\":1114,\"Ġ<<\":1115,\"ush\":1116,\"ense\":1117,\"arr\":1118,\"Ġinto\":1119,\"cess\":1120,\"amp\":1121,\"ied\":1122,\"ument\":1123,\"Ġ\\\\\":1124,\"],\":1125,\"wo\":1126,\"als\":1127,\"Ġwhat\":1128,\"anc\":1129,\"Value\":1130,\"='\":1131,\"olum\":1132,\"Ġpos\":1133,\"ages\":1134,\"ayer\":1135,\"Ġsc\":1136,\"ues\":1137,\"\\\")Ċ\":1138,\"_T\":1139,\"Ġlist\":1140,\"(s\":1141,\"Ġcase\":1142,\"Ch\":1143,\"ĉĉĉĉĉ\":1144,\"////////\":1145,\"ponent\":1146,\"Ġz\":1147,\"Ġkn\":1148,\"let\":1149,\"DE\":1150,\"red\":1151,\"Ġfe\":1152,\"Ġ},Ċ\":1153,\"Ġ,\":1154,\"(t\":1155,\"Ġfirst\":1156,\"');Ċ\":1157,\"word\":1158,\"Ġimport\":1159,\"Ġact\":1160,\"Ġchar\":1161,\"CT\":1162,\"ĠTr\":1163,\"ople\":1164,\"={\":1165,\"ĉf\":1166,\"ient\":1167,\"cent\":1168,\".j\":1169,\"lection\":1170,\"))Ċ\":1171,\"Ġonly\":1172,\"Ġprint\":1173,\"mer\":1174,\".W\":1175,\"ock\":1176,\"Ġ--\":1177,\"Text\":1178,\"Ġop\":1179,\"ank\":1180,\"Ġits\":1181,\"Ġback\":1182,\"[\\\"\":1183,\"Ġneed\":1184,\"Ġcl\":1185,\"Ġsub\":1186,\"Ġla\":1187,\"((\":1188,\".\\\"\":1189,\"Object\":1190,\"Ġstart\":1191,\"file\":1192,\"(self\":1193,\"ner\":1194,\"ey\":1195,\"Ġuser\":1196,\"Ġent\":1197,\"ĠCom\":1198,\"its\":1199,\"ĠCon\":1200,\"ouble\":1201,\"ower\":1202,\"item\":1203,\"very\":1204,\"ĠWe\":1205,\"lick\":1206,\"ĠQ\":1207,\"php\":1208,\"ttp\":1209,\"':\":1210,\"ics\":1211,\"Ġunder\":1212,\"Ġ*Ċ\":1213,\".L\":1214,\");\":1215,\"ices\":1216,\"Ġreg\":1217,\")čĊ\":1218,\"ĉpublic\":1219,\"SS\":1220,\"Ġthen\":1221,\"reat\":1222,\"ious\":1223,\".G\":1224,\"ek\":1225,\"irect\":1226,\"heck\":1227,\"cript\":1228,\"ning\":1229,\"ĠUn\":1230,\"Ġmay\":1231,\"ĠWh\":1232,\"Bo\":1233,\"Item\":1234,\"struct\":1235,\".st\":1236,\"ream\":1237,\"ible\":1238,\"loat\":1239,\"Ġorg\":1240,\"und\":1241,\"sum\":1242,\"_in\":1243,\"../\":1244,\"_M\":1245,\"Ġhow\":1246,\"rite\":1247,\"'Ċ\":1248,\"To\":1249,\"ww\":1250,\"Ġpeople\":1251,\"index\":1252,\".n\":1253,\"http\":1254,\"(m\":1255,\"ector\":1256,\"Ġind\":1257,\"Ġjav\":1258,\"],Ċ\":1259,\"ĠHe\":1260,\"_st\":1261,\"ful\":1262,\"ole\":1263,\"){Ċ\":1264,\"Ġshould\":1265,\"opy\":1266,\"elp\":1267,\"ier\":1268,\"_name\":1269,\"erson\":1270,\"ION\":1271,\"ote\":1272,\"Ġtest\":1273,\"Ġbet\":1274,\"rror\":1275,\"ular\":1276,\"ãĢ\":1277,\"ĠÐ\":1278,\"bs\":1279,\"ting\":1280,\"Ġmake\":1281,\"Tr\":1282,\"Ġafter\":1283,\"arget\":1284,\"RO\":1285,\"olumn\":1286,\"rc\":1287,\"_re\":1288,\"define\":1289,\"Ġright\":1290,\"right\":1291,\"day\":1292,\"Ġlong\":1293,\"[]\":1294,\"(p\":1295,\"td\":1296,\"cond\":1297,\"ĠPro\":1298,\"Ġrem\":1299,\"ptions\":1300,\"vid\":1301,\".g\":1302,\"Ġext\":1303,\"Ġ__\":1304,\"')Ċ\":1305,\"pace\":1306,\"mp\":1307,\"Ġmin\":1308,\"stance\":1309,\"air\":1310,\"action\":1311,\"wh\":1312,\"type\":1313,\"util\":1314,\"ait\":1315,\"<?\":1316,\"IC\":1317,\"text\":1318,\"Ġph\":1319,\"Ġfl\":1320,\".M\":1321,\"ccess\":1322,\"br\":1323,\"fore\":1324,\"ersion\":1325,\"),Ċ\":1326,\".re\":1327,\"ateg\":1328,\"Ġloc\":1329,\"ins\":1330,\"-s\":1331,\"trib\":1332,\"ĠInt\":1333,\"Ġarray\":1334,\",\\\"\":1335,\"Pro\":1336,\"(c\":1337,\"ession\":1338,\">ĊĊ\":1339,\"Ġshe\":1340,\"\\\"]\":1341,\"aph\":1342,\"Ġexp\":1343,\"erty\":1344,\"ĠSe\":1345,\"Ġpar\":1346,\"unc\":1347,\"ET\":1348,\"Ġread\":1349,\"print\":1350,\"Ġrel\":1351,\"Ġform\":1352,\"Ġdr\":1353,\"Exception\":1354,\"input\":1355,\"Ġtrans\":1356,\"########\":1357,\"order\":1358,\"By\":1359,\"Ġaw\":1360,\"ities\":1361,\"uff\":1362,\"play\":1363,\".add\":1364,\"ĠâĢĵ\":1365,\"Ġwant\":1366,\"Ġcomp\":1367,\"ments\":1368,\"Ġ||\":1369,\"az\":1370,\"be\":1371,\"Ġnumber\":1372,\"Ġrequire\":1373,\"ĠEx\":1374,\"Ġcol\":1375,\"Ġkey\":1376,\"ember\":1377,\"Ġtwo\":1378,\"Ġsize\":1379,\"Ġwhere\":1380,\"UT\":1381,\"result\":1382,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":1383,\"ough\":1384,\"orld\":1385,\"ood\":1386,\"uch\":1387,\"ative\":1388,\"ger\":1389,\"arent\":1390,\"Ġ/*\":1391,\"Ġarg\":1392,\"Ġwhile\":1393,\"(this\":1394,\"Ġrec\":1395,\"Ġdif\":1396,\"State\":1397,\"Ġspec\":1398,\"ride\":1399,\"_F\":1400,\"Ġlook\":1401,\"AM\":1402,\"ility\":1403,\"eter\":1404,\"âĢĻt\":1405,\"ĊĊĊ\":1406,\"ayout\":1407,\"--------------------------------\":1408,\"ager\":1409,\"Ġcould\":1410,\"Ġbr\":1411,\"ends\":1412,\"ures\":1413,\"Ġknow\":1414,\"ets\":1415,\"ĠIf\":1416,\"ĠSh\":1417,\".w\":1418,\"back\":1419,\"Ġser\":1420,\"Ġ+=\":1421,\"Ġfr\":1422,\"());Ċ\":1423,\"Ġhand\":1424,\"Ind\":1425,\"ULL\":1426,\"Im\":1427,\"();ĊĊ\":1428,\"Ġmost\":1429,\"Ġtry\":1430,\"Ġnow\":1431,\"rough\":1432,\">čĊ\":1433,\"ackage\":1434,\"Ġhim\":1435,\"._\":1436,\"ify\":1437,\"Ġbreak\":1438,\"Ġ);Ċ\":1439,\"ren\":1440,\"#define\":1441,\"itt\":1442,\"Ġap\":1443,\"ĉc\":1444,\"(n\":1445,\"ĠYou\":1446,\":ĊĊ\":1447,\"-m\":1448,\"Ġevery\":1449,\"ustom\":1450,\"lient\":1451,\"ocument\":1452,\"cription\":1453,\"Error\":1454,\"-b\":1455,\"Ð¾\":1456,\"][\":1457,\"trans\":1458,\"Ġpoint\":1459,\"Ġstd\":1460,\"Ġfil\":1461,\"Time\":1462,\"Ġmod\":1463,\"Ġ->\":1464,\"Ġerror\":1465,\"ah\":1466,\"Ġtext\":1467,\"roller\":1468,\"lose\":1469,\"ql\":1470,\"Ġpol\":1471,\"></\":1472,\"Ġshow\":1473,\"User\":1474,\"ased\":1475,\"Ġ{ĊĊ\":1476,\"Ġfind\":1477,\"Ð°\":1478,\"ED\":1479,\"span\":1480,\"enu\":1481,\"Ġcurrent\":1482,\"Ġused\":1483,\"cept\":1484,\"clud\":1485,\"Ġplay\":1486,\"Ġlog\":1487,\"ution\":1488,\"fl\":1489,\"Ġsee\":1490,\"indows\":1491,\"Ġhelp\":1492,\"Ġthese\":1493,\"Ġpass\":1494,\"Ġdown\":1495,\"Ġeven\":1496,\"ason\":1497,\"uild\":1498,\"from\":1499,\"(d\":1500,\"Ġbl\":1501,\"label\":1502,\"else\":1503,\"Ðµ\":1504,\"Ġ(!\":1505,\"ized\":1506,\"(),\":1507,\"Ġob\":1508,\"Ġitem\":1509,\"ump\":1510,\"UR\":1511,\"orn\":1512,\"Ġdon\":1513,\"Se\":1514,\"man\":1515,\"ample\":1516,\"tn\":1517,\"================\":1518,\"He\":1519,\"gram\":1520,\"Ġdid\":1521,\"wn\":1522,\"_h\":1523,\"iver\":1524,\"Ġsm\":1525,\"Ġthrough\":1526,\"ĠAn\":1527,\"che\":1528,\"Ġinv\":1529,\"ouse\":1530,\"Ġes\":1531,\"ĠNew\":1532,\"export\":1533,\"mary\":1534,\"uto\":1535,\"ler\":1536,\"Ġlast\":1537,\"Ġevent\":1538,\"try\":1539,\"ï¼\":1540,\"ily\":1541,\"igned\":1542,\"ines\":1543,\"ollow\":1544,\"icense\":1545,\"sole\":1546,\"lear\":1547,\"(int\":1548,\"Ġagain\":1549,\"Ġhigh\":1550,\"html\":1551,\"Index\":1552,\"uthor\":1553,\"Ġ/**Ċ\":1554,\"Ġline\":1555,\"Event\":1556,\"_D\":1557,\"Ġdoes\":1558,\"itial\":1559,\"Ġcr\":1560,\"ars\":1561,\"Ġtem\":1562,\"cause\":1563,\"face\":1564,\"Ġ`\":1565,\"_A\":1566,\"Button\":1567,\"ature\":1568,\"ected\":1569,\"ES\":1570,\"ister\":1571,\"ĉĊ\":1572,\"Ġbefore\":1573,\"ale\":1574,\"other\":1575,\"Ġbecause\":1576,\"roid\":1577,\"Ġed\":1578,\"ik\":1579,\"reg\":1580,\"ĠDe\":1581,\"Ġdist\":1582,\"},Ċ\":1583,\"Ġstate\":1584,\"Ġcons\":1585,\"rint\":1586,\"att\":1587,\"Ġhere\":1588,\"ined\":1589,\"Ġfinal\":1590,\"Ġ\\\"\\\"\":1591,\"Key\":1592,\"LO\":1593,\"Ġdel\":1594,\"pty\":1595,\"thing\":1596,\"ĠAnd\":1597,\"Ġrun\":1598,\"ĠX\":1599,\"ym\":1600,\".app\":1601,\"Ġvery\":1602,\"ces\":1603,\"_N\":1604,\"ared\":1605,\"ward\":1606,\"list\":1607,\"ited\":1608,\"olog\":1609,\"itch\":1610,\"Box\":1611,\"ife\":1612,\"Ġac\":1613,\"Ġmodel\":1614,\"Ġmon\":1615,\"Ġway\":1616,\"lete\":1617,\"Ġcall\":1618,\"Ġatt\":1619,\"Ġcal\":1620,\"vert\":1621,\"Ġdec\":1622,\"lease\":1623,\"oun\":1624,\"Ġ});Ċ\":1625,\"fr\":1626,\"formation\":1627,\"etail\":1628,\"Ġnum\":1629,\"aj\":1630,\"query\":1631,\"Ġwell\":1632,\"Ġobject\":1633,\"ĠAs\":1634,\"Ġyears\":1635,\"Color\":1636,\"IS\":1637,\"Ġdefault\":1638,\"Wh\":1639,\"Ġins\":1640,\"aint\":1641,\"Ġjava\":1642,\"Ġsim\":1643,\"ĠAr\":1644,\"mon\":1645,\"til\":1646,\"();čĊ\":1647,\"):\":1648,\"Set\":1649,\"atter\":1650,\"Ġview\":1651,\"Ġpres\":1652,\"array\":1653,\"We\":1654,\"At\":1655,\"Ġbel\":1656,\"Ġmany\":1657,\"Man\":1658,\"ender\":1659,\"Ġbeing\":1660,\"Ġgood\":1661,\"ĉĉĉĉĉĉ\":1662,\"ational\":1663,\"ware\":1664,\".log\":1665,\"{čĊ\":1666,\"Ġusing\":1667,\"_B\":1668,\"Ġ:=\":1669,\"_w\":1670,\"ists\":1671,\"lish\":1672,\"Ġstud\":1673,\"ĠAl\":1674,\"Ġgu\":1675,\"config\":1676,\"uring\":1677,\"time\":1678,\"oken\":1679,\"amespace\":1680,\"Ġrequest\":1681,\"Ġchild\":1682,\"ĠÃ\":1683,\"lob\":1684,\"Ġparam\":1685,\"Ġ}čĊ\":1686,\"Ġecho\":1687,\"function\":1688,\"********************************\":1689,\"ps\":1690,\"Element\":1691,\"alk\":1692,\"lication\":1693,\"by\":1694,\"Size\":1695,\"rawing\":1696,\"Ġperson\":1697,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":1698,\"\\\\n\":1699,\"object\":1700,\"ince\":1701,\"En\":1702,\"File\":1703,\"uf\":1704,\"ffect\":1705,\"AC\":1706,\"Ġstyle\":1707,\"summary\":1708,\"Ġque\":1709,\"_r\":1710,\"Ġ($\":1711,\"Model\":1712,\"ident\":1713,\"Ġmethod\":1714,\"IL\":1715,\"ott\":1716,\"less\":1717,\"ING\":1718,\"Ġ()\":1719,\"Ġexpect\":1720,\"ync\":1721,\"package\":1722,\"urs\":1723,\"Ġprot\":1724,\"./\":1725,\"pre\":1726,\"Ġ)Ċ\":1727,\"ma\":1728,\"Ġsur\":1729,\"Ġfound\":1730,\"Info\":1731,\"par\":1732,\"imes\":1733,\".e\":1734,\"ains\":1735,\"Ġpost\":1736,\"-d\":1737,\"olean\":1738,\"Ġsl\":1739,\"PE\":1740,\"Ġsuch\":1741,\"select\":1742,\"ainer\":1743,\"Ġthink\":1744,\"Ġdiffer\":1745,\".r\":1746,\"/**Ċ\":1747,\"FF\":1748,\"ool\":1749,\"plate\":1750,\"qual\":1751,\"ĠFor\":1752,\"Ġmuch\":1753,\"uc\":1754,\"(new\":1755,\"odule\":1756,\"Ġsom\":1757,\"Ġhttp\":1758,\"ĠList\":1759,\"Ġcount\":1760,\"Ġinst\":1761,\"char\":1762,\"mit\":1763,\".id\":1764,\"aking\":1765,\"Ġgener\":1766,\"px\":1767,\"vice\":1768,\"_data\":1769,\"ĠNULL\":1770,\"}čĊ\":1771,\"idd\":1772,\"ãĢĤ\":1773,\"Ġmed\":1774,\"org\":1775,\"ider\":1776,\"ache\":1777,\"work\":1778,\"Ġcheck\":1779,\"ween\":1780,\"Ġ((\":1781,\"the\":1782,\"ants\":1783,\"><\":1784,\".B\":1785,\"-c\":1786,\"Ġopen\":1787,\"Ġest\":1788,\"ĠĠĠĠĠĠĠĠĊ\":1789,\"Ġnext\":1790,\"IM\":1791,\"ÑĤ\":1792,\"OT\":1793,\"Ã³\":1794,\"Ġfollow\":1795,\"content\":1796,\"ĠĠĠĠĠĠĠĠĠĠĠĠ\":1797,\"Ġinclud\":1798,\"HE\":1799,\"ĠRes\":1800,\"Ġhref\":1801,\"Ð¸\":1802,\"Ġcar\":1803,\"ypes\":1804,\"image\":1805,\"Un\":1806,\"Ġbool\":1807,\"AD\":1808,\"Ġgame\":1809,\".Form\":1810,\"rows\":1811,\"*/\":1812,\"velop\":1813,\".Drawing\":1814,\"Ġpath\":1815,\"ision\":1816,\"Ġeach\":1817,\"ĠPl\":1818,\"_type\":1819,\"Path\":1820,\"nection\":1821,\"Ġav\":1822,\"').\":1823,\"Ġsupport\":1824,\"ENT\":1825,\"rem\":1826,\"\\\").\":1827,\"Ġown\":1828,\"Ġcor\":1829,\"count\":1830,\"miss\":1831,\"ually\":1832,\"Ġmem\":1833,\"std\":1834,\"ience\":1835,\"search\":1836,\"\\\"ĊĊ\":1837,\"Form\":1838,\"Ġsex\":1839,\"ename\":1840,\"Ġsign\":1841,\"Ġet\":1842,\"ĠĠĠĠĠĠĠĠĠĠ\":1843,\"','\":1844,\"ĠApp\":1845,\"Ġthose\":1846,\"off\":1847,\"Ġerr\":1848,\"Ġsystem\":1849,\"Ġbest\":1850,\"code\":1851,\"Ġsame\":1852,\"Ġdi\":1853,\"uss\":1854,\"Ġcreate\":1855,\"ather\":1856,\"Array\":1857,\".in\":1858,\"fe\":1859,\"Service\":1860,\"UN\":1861,\"ats\":1862,\"ĠZ\":1863,\"alth\":1864,\"Ġmade\":1865,\"true\":1866,\"AB\":1867,\"Ġmark\":1868,\"rid\":1869,\"ified\":1870,\",čĊ\":1871,\"yn\":1872,\"press\":1873,\"Ġgroup\":1874,\"Ġfin\":1875,\"ĠLicense\":1876,\"Field\":1877,\"eger\":1878,\"Ġworld\":1879,\"iness\":1880,\"ty\":1881,\"Ġprocess\":1882,\"(b\":1883,\"Ġcre\":1884,\"arn\":1885,\"ives\":1886,\"Ġmain\":1887,\"ideo\":1888,\"_g\":1889,\"AG\":1890,\"valid\":1891,\"img\":1892,\"PI\":1893,\"Ġcolor\":1894,\"Ġreport\":1895,\"Ġtake\":1896,\"rib\":1897,\"OM\":1898,\"Ġday\":1899,\"Request\":1900,\"Ġsk\":1901,\"bers\":1902,\"ĉs\":1903,\".Add\":1904,\"oot\":1905,\"Image\":1906,\"Ġcomple\":1907,\"ollection\":1908,\"Ġtop\":1909,\"Ġfree\":1910,\"AS\":1911,\"De\":1912,\"ĠOn\":1913,\"IG\":1914,\"eta\":1915,\"Date\":1916,\"Ġaction\":1917,\"Over\":1918,\"itor\":1919,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":1920,\"not\":1921,\"Ġindex\":1922,\"her\":1923,\"icon\":1924,\"On\":1925,\";čĊčĊ\":1926,\"ivity\":1927,\"mand\":1928,\".Windows\":1929,\"OL\":1930,\"Ġreal\":1931,\"Ġmax\":1932,\"land\":1933,\"....\":1934,\"raph\":1935,\"Ġbuild\":1936,\"leg\":1937,\"assword\":1938,\"?ĊĊ\":1939,\"âĢ¦\":1940,\"ook\":1941,\"uck\":1942,\"Ġmessage\":1943,\"test\":1944,\"ivers\":1945,\"Ġinput\":1946,\"Ġart\":1947,\"Ġbetween\":1948,\"Get\":1949,\"enter\":1950,\"ground\":1951,\"ene\":1952,\"Ã¡\":1953,\".length\":1954,\"Node\":1955,\"(i\":1956,\"Class\":1957,\"for\":1958,\"ĠâĢĶ\":1959,\"ten\":1960,\"oin\":1961,\"Ġke\":1962,\"ui\":1963,\"ĠIN\":1964,\"Ġtable\":1965,\"sub\":1966,\"ĠLe\":1967,\"Ġhead\":1968,\"Ġmust\":1969,\"////////////////\":1970,\".util\":1971,\"Context\":1972,\"Ġorder\":1973,\"Ġmov\":1974,\"over\":1975,\"Ġcontin\":1976,\"Ġsay\":1977,\"static\":1978,\".Text\":1979,\"ĠclassName\":1980,\"pany\":1981,\"Ġter\":1982,\"head\":1983,\"rg\":1984,\"Ġproduct\":1985,\"This\":1986,\".âĢĿ\":1987,\"ĠBut\":1988,\"loy\":1989,\"Ġdouble\":1990,\"sg\":1991,\"Ġplace\":1992,\".x\":1993,\"message\":1994,\"Ġinformation\":1995,\"private\":1996,\"Ġoper\":1997,\"ced\":1998,\"db\":1999,\"\\\"></\":2000,\"Param\":2001,\"icle\":2002,\"Ġweek\":2003,\"Ġprop\":2004,\"table\":2005,\"idget\":2006,\"place\":2007,\"Prop\":2008,\"ĠAll\":2009,\"els\":2010,\"box\":2011,\".ĊĊĊĊ\":2012,\".R\":2013,\"ĠTo\":2014,\"iter\":2015,\"Sh\":2016,\"uration\":2017,\"older\":2018,\"_list\":2019,\"come\":2020,\"Ġsw\":2021,\"ization\":2022,\"ĉfor\":2023,\"bl\":2024,\"Ġprogram\":2025,\"(e\":2026,\"ape\":2027,\"check\":2028,\".Forms\":2029,\"Ġund\":2030,\"ategory\":2031,\"ags\":2032,\"Ġresponse\":2033,\"US\":2034,\"request\":2035,\"Ġstruct\":2036,\"escription\":2037,\"Ġcode\":2038,\"_H\":2039,\"uffer\":2040,\"Ġwithout\":2041,\"lobal\":2042,\"Manager\":2043,\"ilter\":2044,\"PO\":2045,\"ĉthis\":2046,\"option\":2047,\"Ġsol\":2048,\"Ġ===\":2049,\"akes\":2050,\"Controller\":2051,\"Message\":2052,\"Ġref\":2053,\"ever\":2054,\"ĠSo\":2055,\"aining\":2056,\".append\":2057,\"Ġstill\":2058,\"Ġprovid\":2059,\"Ġassert\":2060,\"med\":2061,\"Ġcap\":2062,\"usiness\":2063,\"Ġrep\":2064,\"tings\":2065,\"ved\":2066,\".N\":2067,\"api\":2068,\"OD\":2069,\"Ġfield\":2070,\"iven\":2071,\"oto\":2072,\"âĢľ\":2073,\"col\":2074,\"(x\":2075,\"ght\":2076,\"Result\":2077,\"Code\":2078,\".is\":2079,\"link\":2080,\"Ġcour\":2081,\"An\":2082,\"Ġteam\":2083,\"ĉint\":2084,\"ift\":2085,\"Ġsecond\":2086,\"Ġgoing\":2087,\"Ġrange\":2088,\"_E\":2089,\"ness\":2090,\"Ġfam\":2091,\"Ġnil\":2092,\"ĠCont\":2093,\"ailable\":2094,\"utes\":2095,\"atab\":2096,\"Ġfact\":2097,\"Ġvis\":2098,\"(&\":2099,\"ĠAN\":2100,\"Al\":2101,\"title\":2102,\"Ġandroid\":2103,\"CE\":2104,\"\\\\\\\"\":2105,\"irt\":2106,\"Ġwrit\":2107,\"Ð½\":2108,\"ĉm\":2109,\"ftware\":2110,\"ond\":2111,\"Ġret\":2112,\"osition\":2113,\"Ġhome\":2114,\"Ġleft\":2115,\"args\":2116,\"meric\":2117,\"Ġdirect\":2118,\"oci\":2119,\"Pl\":2120,\"As\":2121,\"ret\":2122,\"ado\":2123,\"Of\":2124,\"chn\":2125,\"ĠGet\":2126,\"ee\":2127,\"ross\":2128,\"();\":2129,\"____\":2130,\".ph\":2131,\"It\":2132,\"oute\":2133,\"Ġexper\":2134,\"chool\":2135,\"www\":2136,\"},\":2137,\"Ġallow\":2138,\"ĠÂ\":2139,\"())\":2140,\"size\":2141,\"ism\":2142,\"ai\":2143,\"tract\":2144,\"ane\":2145,\"...ĊĊ\":2146,\"context\":2147,\"Ġbeg\":2148,\"CH\":2149,\"Ġpage\":2150,\"hip\":2151,\"no\":2152,\"core\":2153,\"sp\":2154,\"Ġdifferent\":2155,\"iable\":2156,\"ĠMe\":2157,\"_IN\":2158,\"button\":2159,\"ĠIs\":2160,\"ervices\":2161,\"Ġca\":2162,\"Ġaround\":2163,\"App\":2164,\"ration\":2165,\"Ġrece\":2166,\"Ġreally\":2167,\"Ġimage\":2168,\"Ġtarget\":2169,\"Ġdep\":2170,\"opyright\":2171,\"tra\":2172,\"ingle\":2173,\"ital\":2174,\"Layout\":2175,\"Ġboth\":2176,\"Override\":2177,\"arm\":2178,\"=>\":2179,\"aterial\":2180,\"iled\":2181,\"Ġput\":2182,\"Qu\":2183,\"ÑĢ\":2184,\"ung\":2185,\"map\":2186,\"ĉĉĉĉĉĉĉĉ\":2187,\"Ġlevel\":2188,\"Component\":2189,\"book\":2190,\"creen\":2191,\"_RE\":2192,\"Ġconfig\":2193,\"ãģ\":2194,\"Or\":2195,\".data\":2196,\"Ġdocument\":2197,\"\\\",\\\"\":2198,\"tribute\":2199,\"ux\":2200,\"Log\":2201,\"ference\":2202,\"post\":2203,\"_e\":2204,\"Ġlocal\":2205,\"andom\":2206,\"assert\":2207,\"Val\":2208,\"lected\":2209,\"ina\":2210,\"atabase\":2211,\"Add\":2212,\"Ġcontent\":2213,\".print\":2214,\"signed\":2215,\"ric\":2216,\".\\\"ĊĊ\":2217,\"Ġfa\":2218,\"!ĊĊ\":2219,\"-f\":2220,\"ived\":2221,\"Ġquest\":2222,\".ex\":2223,\"Ġfloat\":2224,\"Ġdevelop\":2225,\"Ð¾Ð\":2226,\"Map\":2227,\"ading\":2228,\"Ġposs\":2229,\"UE\":2230,\"namespace\":2231,\"_O\":2232,\"ĉb\":2233,\".Get\":2234,\">(\":2235,\"json\":2236,\"etails\":2237,\"Ġtoo\":2238,\"Ġextends\":2239,\"ĠNone\":2240,\"Ġfore\":2241,\"(String\":2242,\"format\":2243,\"Ġgreat\":2244,\"inter\":2245,\"cale\":2246,\"Ñģ\":2247,\"ron\":2248,\"iving\":2249,\"Ent\":2250,\"ency\":2251,\"xt\":2252,\"oy\":2253,\"Ġmonth\":2254,\"Ġhapp\":2255,\"Ġsuper\":2256,\"bar\":2257,\"default\":2258,\"_de\":2259,\"ords\":2260,\"ln\":2261,\"({Ċ\":2262,\"ĠInd\":2263,\"ases\":2264,\"Ġtitle\":2265,\"Ġcontext\":2266,\"oh\":2267,\"-p\":2268,\"Em\":2269,\"Ġmet\":2270,\"Test\":2271,\"Ġlife\":2272,\"_v\":2273,\"ĠUS\":2274,\"UI\":2275,\"ocation\":2276,\"md\":2277,\"Ġ[Ċ\":2278,\"Ġ]\":2279,\"sw\":2280,\"Ġincre\":2281,\"script\":2282,\"ential\":2283,\"ways\":2284,\".de\":2285,\"Ġsrc\":2286,\"Ġcatch\":2287,\"ĠAmeric\":2288,\"//Ċ\":2289,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":2290,\"Ġpay\":2291,\"plit\":2292,\"âĢĶ\":2293,\"Ġcoun\":2294,\"obj\":2295,\".php\":2296,\"Ġchange\":2297,\"ething\":2298,\"'re\":2299,\"aster\":2300,\"los\":2301,\"lation\":2302,\"ĠĠĊ\":2303,\"Le\":2304,\"Ã¤\":2305,\"({\":2306,\"ready\":2307,\"ĠNo\":2308,\"Ġposition\":2309,\"Ġold\":2310,\"Ġbook\":2311,\"abled\":2312,\"bug\":2313,\"Hand\":2314,\"};ĊĊ\":2315,\"isplay\":2316,\"aving\":2317,\"Ġgover\":2318,\"Ġversion\":2319,\"System\":2320,\"nect\":2321,\"response\":2322,\"Style\":2323,\"Up\":2324,\"angu\":2325,\"Ġthree\":2326,\"init\":2327,\"ero\":2328,\"Ġlaw\":2329,\"endif\":2330,\"Ġbase\":2331,\"email\":2332,\"(l\":2333,\"_V\":2334,\"Ġconf\":2335,\"ATE\":2336,\"Ġduring\":2337,\"tes\":2338,\"Ġconsole\":2339,\"ĠPr\":2340,\"Ġspe\":2341,\"ves\":2342,\"path\":2343,\"ialog\":2344,\"dition\":2345,\"_to\":2346,\"ards\":2347,\"Ġagainst\":2348,\"etwork\":2349,\"ĠPh\":2350,\"_L\":2351,\"cur\":2352,\"imit\":2353,\"With\":2354,\"Ġpower\":2355,\"ium\":2356,\"';ĊĊ\":2357,\"Ġwom\":2358,\"left\":2359,\"ources\":2360,\"atri\":2361,\"ĠIm\":2362,\"ĠMan\":2363,\"orth\":2364,\"${\":2365,\"quals\":2366,\"ese\":2367,\"_size\":2368,\"Ġiss\":2369,\"otal\":2370,\"-g\":2371,\"ique\":2372,\"rame\":2373,\"Ġwidth\":2374,\"erg\":2375,\")(\":2376,\"ittle\":2377,\"TR\":2378,\"ĠThey\":2379,\"ences\":2380,\"rl\":2381,\"ons\":2382,\"Ġlabel\":2383,\".y\":2384,\"-t\":2385,\"update\":2386,\"anel\":2387,\"sc\":2388,\".to\":2389,\"Ġproject\":2390,\"Ã¼\":2391,\"Ġelement\":2392,\"Ġsuccess\":2393,\"ĉĉĊ\":2394,\".sh\":2395,\"ram\":2396,\"ched\":2397,\"())Ċ\":2398,\"Ġ(Ċ\":2399,\"Ġdate\":2400,\"Ġtot\":2401,\"_ST\":2402,\"All\":2403,\"ification\":2404,\"ĉvar\":2405,\"Ġtri\":2406,\"chem\":2407,\"my\":2408,\"Ġbig\":2409,\"ĠAd\":2410,\"ĠAt\":2411,\"ots\":2412,\"num\":2413,\"Act\":2414,\"Ġmap\":2415,\"era\":2416,\"cope\":2417,\".$\":2418,\",âĢĿ\":2419,\"Ġpop\":2420,\"Ġfew\":2421,\"Ġlen\":2422,\"uid\":2423,\"eters\":2424,\"ules\":2425,\"ÃŃ\":2426,\"source\":2427,\"https\":2428,\"Ġdem\":2429,\"Ġear\":2430,\"################\":2431,\"Ġmatch\":2432,\"ories\":2433,\"aces\":2434,\"ĠCl\":2435,\"Ġnode\":2436,\"irc\":2437,\"local\":2438,\"unity\":2439,\"};Ċ\":2440,\"Ġanother\":2441,\"<<\":2442,\"ogle\":2443,\"Ġsit\":2444,\"ework\":2445,\"TE\":2446,\".I\":2447,\"NS\":2448,\"ology\":2449,\"ought\":2450,\".Cont\":2451,\">>\":2452,\"Ġcare\":2453,\"state\":2454,\"ĉprivate\":2455,\"Ġeffect\":2456,\"++)\":2457,\"_file\":2458,\"ending\":2459,\"Line\":2460,\"For\":2461,\"ior\":2462,\"ĠSc\":2463,\"Ġfun\":2464,\".Size\":2465,\"ĉelse\":2466,\"])\":2467,\"start\":2468,\"vious\":2469,\"Ġ},\":2470,\"ours\":2471,\"Ġleg\":2472,\"Ġservice\":2473,\"Ġsince\":2474,\"iron\":2475,\"Label\":2476,\"Ġnon\":2477,\"Ġlos\":2478,\"iction\":2479,\"Ġfull\":2480,\"acter\":2481,\"board\":2482,\"gress\":2483,\"Ġturn\":2484,\"ither\":2485,\".size\":2486,\"Ġbody\":2487,\"resh\":2488,\"eturn\":2489,\"(_\":2490,\"yles\":2491,\"ormal\":2492,\"pi\":2493,\"Ġsomething\":2494,\"!--\":2495,\"uint\":2496,\"Ġprodu\":2497,\"Ġstand\":2498,\"Ġproble\":2499,\"Ġavailable\":2500,\"mt\":2501,\"ĠBl\":2502,\"Ġ...\":2503,\"Ġblock\":2504,\"Input\":2505,\"Ġkeep\":2506,\"Count\":2507,\"open\":2508,\"Ġ['\":2509,\"Ġthrow\":2510,\"uilder\":2511,\"Action\":2512,\"Ġthings\":2513,\"True\":2514,\"Ġurl\":2515,\"ĠBo\":2516,\"printf\":2517,\"Ġred\":2518,\"js\":2519,\".create\":2520,\"ĠOr\":2521,\"Status\":2522,\"Instance\":2523,\"Ġcontrol\":2524,\"Ġcome\":2525,\"Ġcustom\":2526,\"location\":2527,\"model\":2528,\"ĠčĊ\":2529,\"Ġsource\":2530,\"Ġeas\":2531,\".out\":2532,\"]ĊĊ\":2533,\"oney\":2534,\"Ġawait\":2535,\"Ġpartic\":2536,\"AP\":2537,\"ublish\":2538,\"odes\":2539,\"_pro\":2540,\"ply\":2541,\"riter\":2542,\"Ġprov\":2543,\"Ġmill\":2544,\"HT\":2545,\"])Ċ\":2546,\"Ġchang\":2547,\"Ġask\":2548,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":2549,\"Ġoutput\":2550,\"Ġemail\":2551,\".push\":2552,\"Ġ}čĊčĊ\":2553,\"ination\":2554,\"atrix\":2555,\"Table\":2556,\"uccess\":2557,\"]);Ċ\":2558,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":2559,\"Ġdisc\":2560,\"([\":2561,\"Ġbusiness\":2562,\"height\":2563,\".html\":2564,\"ta\":2565,\"field\":2566,\"Ġrequired\":2567,\"_R\":2568,\"Ġgovern\":2569,\"}čĊčĊ\":2570,\"lex\":2571,\".,\":2572,\"ĠSet\":2573,\"urch\":2574,\"///\":2575,\"ts\":2576,\"af\":2577,\"Ġmight\":2578,\"istory\":2579,\"Str\":2580,\"Ġnever\":2581,\"Response\":2582,\"arse\":2583,\"ada\":2584,\"ĠHow\":2585,\"Ġ*)\":2586,\"Ġ;\":2587,\"Ġhard\":2588,\"Ad\":2589,\"Ġintern\":2590,\"used\":2591,\"(data\":2592,\"mod\":2593,\"annel\":2594,\"Ġnp\":2595,\"ugg\":2596,\"Ġ/>Ċ\":2597,\"Ġcalled\":2598,\"body\":2599,\"Ġcho\":2600,\"(r\":2601,\"_set\":2602,\"ird\":2603,\"Ġ>=\":2604,\"Ġ};Ċ\":2605,\"Ġoptions\":2606,\"ĠGener\":2607,\"Ġheight\":2608,\"Point\":2609,\"You\":2610,\"ety\":2611,\"Click\":2612,\"Ġsmall\":2613,\"Ġide\":2614,\"Ġaccess\":2615,\"anguage\":2616,\"Ġprotected\":2617,\"Ġjob\":2618,\"ĠThere\":2619,\"Def\":2620,\"Ġaddress\":2621,\"Ġuint\":2622,\"Not\":2623,\"oo\":2624,\"aps\":2625,\"<div\":2626,\"ained\":2627,\"atur\":2628,\"Ġsum\":2629,\"-w\":2630,\"ĠDate\":2631,\"Ġlittle\":2632,\"Ġfri\":2633,\"YPE\":2634,\"Ġport\":2635,\"eh\":2636,\"pring\":2637,\"_path\":2638,\"Ġstatus\":2639,\"aim\":2640,\"bool\":2641,\"Ġappe\":2642,\"Ġos\":2643,\".name\":2644,\"ension\":2645,\"_G\":2646,\"Ġupdate\":2647,\"Config\":2648,\"aff\":2649,\"ERR\":2650,\"Ġ<=\":2651,\"ately\":2652,\"#if\":2653,\"uction\":2654,\"ĠTe\":2655,\"Ġlink\":2656,\"ĠUser\":2657,\".find\":2658,\".org\":2659,\"me\":2660,\"Ġgiven\":2661,\"Out\":2662,\"#endif\":2663,\"Ġbetter\":2664,\"Page\":2665,\"Ġfeel\":2666,\"enn\":2667,\"ML\":2668,\"Ġalready\":2669,\"Ġincluding\":2670,\"oogle\":2671,\"ru\":2672,\"ically\":2673,\"prop\":2674,\"lean\":2675,\"outer\":2676,\"Ġalways\":2677,\"ording\":2678,\"If\":2679,\"orage\":2680,\"Ġparent\":2681,\"vis\":2682,\"ĉĉĉĉĉĉĉ\":2683,\"Ġgot\":2684,\"stand\":2685,\"Ġless\":2686,\"/s\":2687,\"ĠAss\":2688,\"apt\":2689,\"ired\":2690,\"ĠAdd\":2691,\"Ġaccount\":2692,\"ploy\":2693,\"Ġder\":2694,\"resent\":2695,\"Ġlot\":2696,\"Ġvalid\":2697,\"ĉd\":2698,\"Ġbit\":2699,\"ponents\":2700,\"Ġfollowing\":2701,\"_ex\":2702,\"SON\":2703,\"Ġsure\":2704,\"ocial\":2705,\"Ġprom\":2706,\"erties\":2707,\"header\":2708,\".pro\":2709,\"Ġboolean\":2710,\"Ġsearch\":2711,\"ken\":2712,\"Ġorig\":2713,\"Ġer\":2714,\"Ed\":2715,\"EM\":2716,\"aut\":2717,\"ling\":2718,\"ality\":2719,\"ById\":2720,\"bed\":2721,\"ĉcase\":2722,\"ether\":2723,\"posit\":2724,\"Ġinvest\":2725,\"ĠOR\":2726,\"Ġsays\":2727,\"mission\":2728,\"AME\":2729,\"Ġtemp\":2730,\"oad\":2731,\"Ġrest\":2732,\"info\":2733,\"Ġinterest\":2734,\"Arg\":2735,\"Ġperform\":2736,\"pons\":2737,\"ĠView\":2738,\"Ġver\":2739,\"lib\":2740,\"(const\":2741,\"Util\":2742,\"Listener\":2743,\"arge\":2744,\"Ġmult\":2745,\"Ġdie\":2746,\"Ġsite\":2747,\"../../\":2748,\"EL\":2749,\"Ġvalues\":2750,\"Ġ})Ċ\":2751,\"pen\":2752,\"No\":2753,\"icro\":2754,\"Ġbeh\":2755,\"Ġ'./\":2756,\"acy\":2757,\"rec\":2758,\"()->\":2759,\"ĉĠĠĠ\":2760,\"\\\"))\":2761,\"Content\":2762,\"_W\":2763,\"plement\":2764,\"Ġwon\":2765,\"Ġvideo\":2766,\"adi\":2767,\"point\":2768,\"%%\":2769,\"Ġgl\":2770,\"erved\":2771,\"viron\":2772,\"IF\":2773,\"uted\":2774,\"ãĥ\":2775,\"'m\":2776,\"Ġcert\":2777,\"Ġprof\":2778,\"Ġcell\":2779,\"ari\":2780,\"Ġplayer\":2781,\"ais\":2782,\"Ġcost\":2783,\"Ġhum\":2784,\"(R\":2785,\"Ġoffic\":2786,\"ks\":2787,\".text\":2788,\"atures\":2789,\"Ġtotal\":2790,\"Ġ*/ĊĊ\":2791,\"ope\":2792,\"Ġstat\":2793,\"UM\":2794,\"Ġload\":2795,\"ights\":2796,\"Ġclear\":2797,\"uro\":2798,\"Ġtechn\":2799,\"upport\":2800,\"IR\":2801,\"Ġrow\":2802,\"Ġseem\":2803,\"Ġq\":2804,\"Ġshort\":2805,\"ĠNot\":2806,\"ipp\":2807,\"Group\":2808,\"section\":2809,\"max\":2810,\"irl\":2811,\"Ġoverride\":2812,\"Ġcompany\":2813,\"Ġdone\":2814,\"\\\");čĊ\":2815,\"Ġgre\":2816,\".Re\":2817,\"Ġbelie\":2818,\"rist\":2819,\"Ġhealth\":2820,\"ANT\":2821,\"()ĊĊ\":2822,\"ĠBe\":2823,\".value\":2824,\"ĠGr\":2825,\"ottom\":2826,\"Ġargs\":2827,\"PT\":2828,\"status\":2829,\"func\":2830,\"uments\":2831,\"-h\":2832,\"Number\":2833,\":čĊ\":2834,\"ĠLog\":2835,\"erver\":2836,\"Ġ),Ċ\":2837,\"ament\":2838,\"Ġobj\":2839,\"inc\":2840,\"Ġchildren\":2841,\"icy\":2842,\"IZ\":2843,\"ands\":2844,\"ably\":2845,\"Ġdistrib\":2846,\"Ġcur\":2847,\"erial\":2848,\"Ġdays\":2849,\"reated\":2850,\"rect\":2851,\"-l\":2852,\"irm\":2853,\"idden\":2854,\"omb\":2855,\"Ġinitial\":2856,\".js\":2857,\"Ġâ\":2858,\"Query\":2859,\"Ġonline\":2860,\"imal\":2861,\".con\":2862,\"au\":2863,\"Url\":2864,\"control\":2865,\"irection\":2866,\"Ġinstance\":2867,\"ORT\":2868,\"ĠFr\":2869,\"where\":2870,\"Ġjavax\":2871,\"Ġorgan\":2872,\"apter\":2873,\"Ġreason\":2874,\"options\":2875,\"ĠMar\":2876,\"(a\":2877,\"Ġwithin\":2878,\".âĢĿĊĊ\":2879,\"ODE\":2880,\"_DE\":2881,\"admin\":2882,\"ended\":2883,\"Ġdesign\":2884,\"ĠData\":2885,\"une\":2886,\"ĠFile\":2887,\"root\":2888,\"Ġcent\":2889,\"Ġarr\":2890,\"_add\":2891,\"len\":2892,\"page\":2893,\",'\":2894,\"_str\":2895,\"Ġbro\":2896,\"ability\":2897,\"outh\":2898,\"/c\":2899,\"pose\":2900,\"irtual\":2901,\"earch\":2902,\"_url\":2903,\"argin\":2904,\"Http\":2905,\"Ġschool\":2906,\"ava\":2907,\"Ġconsider\":2908,\".label\":2909,\"ĠArray\":2910,\"web\":2911,\"opt\":2912,\".println\":2913,\"ulation\":2914,\"Ġfunc\":2915,\"PL\":2916,\"Ġ\\\"\\\\\":2917,\"ĠText\":2918,\"actory\":2919,\"(function\":2920,\"null\":2921,\"Ġeng\":2922,\"down\":2923,\"Ġinclude\":2924,\"ĠEn\":2925,\"ĠDr\":2926,\"Ġdb\":2927,\"!!\":2928,\"side\":2929,\"Ġinit\":2930,\"quired\":2931,\"ĠShe\":2932,\"Column\":2933,\"react\":2934,\"Ġann\":2935,\"Ġstop\":2936,\"Ġlater\":2937,\"ĠThat\":2938,\"ention\":2939,\"df\":2940,\"UG\":2941,\"ILE\":2942,\"Ġclient\":2943,\"raft\":2944,\"ffer\":2945,\"POST\":2946,\"elper\":2947,\"Ġlove\":2948,\"quote\":2949,\"oud\":2950,\"Ġjson\":2951,\"Ġable\":2952,\"Ġmen\":2953,\"AX\":2954,\"ĠCopyright\":2955,\"Ã¶\":2956,\"avig\":2957,\"req\":2958,\"Client\":2959,\"});Ċ\":2960,\".Com\":2961,\"erc\":2962,\"ilt\":2963,\"pecial\":2964,\"_com\":2965,\"room\":2966,\".Name\":2967,\"Ġgive\":2968,\"amb\":2969,\"ike\":2970,\"Ġcondition\":2971,\"client\":2972,\"ators\":2973,\":\\\"\":2974,\"Ġcopy\":2975,\"uture\":2976,\"iversity\":2977,\"ernal\":2978,\"{{\":2979,\"ĠCan\":2980,\"ounc\":2981,\"do\":2982,\"Ġocc\":2983,\"Ġappro\":2984,\"thers\":2985,\"ze\":2986,\"Ġeither\":2987,\"ĠFl\":2988,\"Ġimportant\":2989,\"Ġlead\":2990,\"attr\":2991,\"ART\":2992,\"Equal\":2993,\"Ġda\":2994,\"etch\":2995,\"entity\":2996,\"Ġfamily\":2997,\"adding\":2998,\"Ġoption\":2999,\"Ġexist\":3000,\"ica\":3001,\"ĠObject\":3002,\"'ve\":3003,\"vers\":3004,\"itional\":3005,\"output\":3006,\"ĠTrue\":3007,\"ĠOF\":3008,\"_time\":3009,\"Ġoffer\":3010,\"Ġ});ĊĊ\":3011,\"HER\":3012,\"egin\":3013,\"\\\"\\\"\":3014,\"Ġwater\":3015,\"Ġche\":3016,\"ĠMy\":3017,\"ored\":3018,\"Ġstep\":3019,\"ances\":3020,\"CK\":3021,\"AY\":3022,\"à¸\":3023,\"struction\":3024,\"(C\":3025,\"ouch\":3026,\"Stream\":3027,\"active\":3028,\"ama\":3029,\"Entity\":3030,\"product\":3031,\"(){Ċ\":3032,\"Ġgovernment\":3033,\"ĠID\":3034,\"ajor\":3035,\"And\":3036,\"Ġdisplay\":3037,\"Ð»\":3038,\"Ġtimes\":3039,\"Ġfour\":3040,\"Ġfar\":3041,\"Ġpresent\":3042,\"ĠNS\":3043,\"Ġ\\\\Ċ\":3044,\"uest\":3045,\"Ġbas\":3046,\"echo\":3047,\"child\":3048,\"ifier\":3049,\"Handler\":3050,\"Ġlib\":3051,\"Property\":3052,\"translation\":3053,\"Ġroom\":3054,\"Ġonce\":3055,\"Ġ[]\":3056,\"center\":3057,\"================================\":3058,\"Ġresults\":3059,\"Ġcontinue\":3060,\"Ġtalk\":3061,\"_get\":3062,\"Ġgrow\":3063,\".sw\":3064,\"eb\":3065,\"ĠPublic\":3066,\"OP\":3067,\"ecute\":3068,\"ols\":3069,\"Ġ**\":3070,\"\\\");ĊĊ\":3071,\"Ġmass\":3072,\"ured\":3073,\".class\":3074,\"omic\":3075,\"Ġmean\":3076,\"ips\":3077,\"Ġaut\":3078,\");čĊčĊ\":3079,\"Ġuntil\":3080,\"Ġmarket\":3081,\"Ġarea\":3082,\"uit\":3083,\"Ġlength\":3084,\"ĠWith\":3085,\"structor\":3086,\"event\":3087,\"\\\"><\":3088,\"ĠSp\":3089,\"IV\":3090,\"Ġmus\":3091,\"iff\":3092,\"Ġkind\":3093,\"author\":3094,\"ounds\":3095,\"mb\":3096,\"_key\":3097,\"width\":3098,\"pository\":3099,\"Ġlight\":3100,\"uk\":3101,\"Row\":3102,\"ohn\":3103,\"alf\":3104,\"vironment\":3105,\"apper\":3106,\"ollections\":3107,\"Ġside\":3108,\"_info\":3109,\"Ġexample\":3110,\"imary\":3111,\"Ġwr\":3112,\"Ġcamp\":3113,\"cribe\":3114,\"\\\"/\":3115,\"Ġmiss\":3116,\"way\":3117,\"Ġbased\":3118,\"Ġplan\":3119,\"Vis\":3120,\"omain\":3121,\"unk\":3122,\"Ġaway\":3123,\"UP\":3124,\"<T\":3125,\"OS\":3126,\"iod\":3127,\"ĠMon\":3128,\"âĢĻre\":3129,\"Ġlik\":3130,\"Ã§\":3131,\"ively\":3132,\".v\":3133,\"imer\":3134,\"izer\":3135,\"Sub\":3136,\"Ġbutton\":3137,\"ĠUp\":3138,\"Ġexperience\":3139,\"CL\":3140,\"Ġrender\":3141,\"_value\":3142,\"Ġnear\":3143,\"URL\":3144,\"alt\":3145,\"Ġcountry\":3146,\"ibility\":3147,\"(),Ċ\":3148,\"ead\":3149,\"Ġauthor\":3150,\"Ġspecific\":3151,\"base\":3152,\"(name\":3153,\"ones\":3154,\"ĠDo\":3155,\"Ġalong\":3156,\"year\":3157,\"Ġexpress\":3158,\".'\":3159,\"env\":3160,\"Ġbegin\":3161,\"Ġsoftware\":3162,\"Ġimp\":3163,\"Ġwin\":3164,\"Ã³n\":3165,\"Ġthing\":3166,\"Trans\":3167,\"ĠTHE\":3168,\"Ġ<?\":3169,\"Ġwhy\":3170,\"Ġdoesn\":3171,\"ij\":3172,\"ging\":3173,\"ĉg\":3174,\"Ġsingle\":3175,\"offset\":3176,\"arning\":3177,\"ograph\":3178,\"ley\":3179,\"_count\":3180,\"Ġanal\":3181,\"create\":3182,\"/m\":3183,\"ĠReg\":3184,\"unch\":3185,\"=$\":3186,\"isk\":3187,\"Ġrights\":3188,\"(M\":3189,\"Ġ\\\"\\\"\\\"Ċ\":3190,\"aper\":3191,\".model\":3192,\"Ġpo\":3193,\"empty\":3194,\"artment\":3195,\"Ġant\":3196,\"ĠWhen\":3197,\"Ġwomen\":3198,\"ĠEd\":3199,\"Ġseason\":3200,\"Ġdest\":3201,\"Ã£\":3202,\"(h\":3203,\"Ġpossible\":3204,\"Ġsever\":3205,\"Ġbtn\":3206,\"Ġdidn\":3207,\"Ġsent\":3208,\"Ġenc\":3209,\"Ġcommand\":3210,\"Ġ],Ċ\":3211,\"_x\":3212,\"Ġrecent\":3213,\"olution\":3214,\"vector\":3215,\"ĠBy\":3216,\"ĠMay\":3217,\"ĠAct\":3218,\"»¿\":3219,\"Ġmoney\":3220,\"INT\":3221,\"bsite\":3222,\"ĉp\":3223,\".čĊ\":3224,\"ï»¿\":3225,\"sl\":3226,\"attern\":3227,\"ĠClass\":3228,\"Ġtold\":3229,\"udio\":3230,\"current\":3231,\"Ġequ\":3232,\"Ġauto\":3233,\"ĠState\":3234,\"da\":3235,\"msg\":3236,\"));ĊĊ\":3237,\"Ġworking\":3238,\"Ġquery\":3239,\"ĠBr\":3240,\"Ġwindow\":3241,\"auth\":3242,\"only\":3243,\"ĉt\":3244,\"Ġleast\":3245,\"agn\":3246,\"Ġexpl\":3247,\"itter\":3248,\"aring\":3249,\"Ġcolumn\":3250,\"ĠGeneral\":3251,\"\\\":\\\"\":3252,\"eral\":3253,\"rior\":3254,\"Ġrecord\":3255,\"IB\":3256,\"EX\":3257,\"Ġdat\":3258,\"Ġmaking\":3259,\"ued\":3260,\"ĠCar\":3261,\"emp\":3262,\"\\\".\":3263,\"ĠMed\":3264,\"Ġclose\":3265,\"Ġpercent\":3266,\"Ġpast\":3267,\"(g\":3268,\":(\":3269,\"Ġwrite\":3270,\"Ġmove\":3271,\"Ġpat\":3272,\"Control\":3273,\".To\":3274,\"Ġvi\":3275,\"*/Ċ\":3276,\"inate\":3277,\"'ll\":3278,\"aged\":3279,\"Null\":3280,\"Ġspecial\":3281,\"IZE\":3282,\"Ġcity\":3283,\"/*Ċ\":3284,\"ĠEng\":3285,\"ixed\":3286,\"inary\":3287,\"py\":3288,\"Ġeff\":3289,\"ario\":3290,\"Ġtell\":3291,\"avor\":3292,\"Ġselect\":3293,\"level\":3294,\"imum\":3295,\"oper\":3296,\"Builder\":3297,\"IP\":3298,\"'),Ċ\":3299,\"esc\":3300,\"Ġfont\":3301,\"\\\";ĊĊ\":3302,\"ĠAm\":3303,\"ished\":3304,\"ills\":3305,\"Inter\":3306,\"OW\":3307,\"Ġcourse\":3308,\"Ġlate\":3309,\"iddle\":3310,\"Ġamount\":3311,\"Ġasync\":3312,\"ino\":3313,\"cul\":3314,\"Ġì\":3315,\"andle\":3316,\"_user\":3317,\"Ġben\":3318,\"ĠCal\":3319,\"Ġ$_\":3320,\"ĠRep\":3321,\"Ġenough\":3322,\"Token\":3323,\".user\":3324,\"(j\":3325,\"Sc\":3326,\"Width\":3327,\"now\":3328,\"atform\":3329,\"Ġlooking\":3330,\"Ġhold\":3331,\"Module\":3332,\"ITY\":3333,\"vo\":3334,\"ison\":3335,\".Data\":3336,\"yc\":3337,\"Ġpot\":3338,\"ĠTrump\":3339,\"idual\":3340,\"ides\":3341,\"rt\":3342,\"Ġproperty\":3343,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":3344,\"amework\":3345,\"go\":3346,\"Ġlow\":3347,\"Ġpara\":3348,\"Ġprice\":3349,\"ury\":3350,\"Ġtoday\":3351,\"roy\":3352,\"Ġ'/\":3353,\"Ġpolit\":3354,\"Ġ''\":3355,\"ymb\":3356,\"Ph\":3357,\"Ġadv\":3358,\"Ġattack\":3359,\"ĠSte\":3360,\"ROM\":3361,\"ana\":3362,\"Ġmeans\":3363,\"Ġstory\":3364,\"ids\":3365,\"aken\":3366,\"Ġmeet\":3367,\"Ġmom\":3368,\"ĠâĢĺ\":3369,\"Ġ?>\":3370,\"Ġden\":3371,\"obile\":3372,\"change\":3373,\"ĠĠĠĠĠĠĠĠĠĠĠĠĊ\":3374,\"ici\":3375,\"na\":3376,\"ĠForm\":3377,\"Ġsort\":3378,\"Select\":3379,\"pare\":3380,\"Ġthought\":3381,\"_con\":3382,\"Ġtask\":3383,\"ocus\":3384,\"ĠDE\":3385,\"ĠMin\":3386,\"Ġopt\":3387,\"ĉbreak\":3388,\"umer\":3389,\"KE\":3390,\"then\":3391,\"Ġdet\":3392,\"ĠTest\":3393,\"ports\":3394,\"Ġreview\":3395,\"('/\":3396,\"move\":3397,\"Ġswitch\":3398,\"ERT\":3399,\"patch\":3400,\"annot\":3401,\"ãĤ\":3402,\"Ġabove\":3403,\"itive\":3404,\"Ġquestion\":3405,\"ĠQu\":3406,\"ãĢĤĊĊ\":3407,\"gle\":3408,\"Ġword\":3409,\"Ġprovide\":3410,\"ĠReturn\":3411,\"Ġresearch\":3412,\"Ã£o\":3413,\"ustr\":3414,\"Ġpublish\":3415,\"chema\":3416,\"}}\":3417,\"ĠCON\":3418,\"-in\":3419,\"allback\":3420,\"Ġcover\":3421,\"\\\\\\\\\":3422,\"color\":3423,\"ĠIS\":3424,\"Ġwhether\":3425,\"imate\":3426,\"isc\":3427,\"Bar\":3428,\"Ġdiv\":3429,\"Be\":3430,\"ourn\":3431,\"Ġhaving\":3432,\"lem\":3433,\"player\":3434,\"abs\":3435,\"amera\":3436,\"ney\":3437,\"Ġexc\":3438,\"gether\":3439,\"plied\":3440,\"ao\":3441,\"[$\":3442,\"Ġ++\":3443,\"ipe\":3444,\"show\":3445,\"/d\":3446,\"[:\":3447,\"agement\":3448,\"lev\":3449,\"_ID\":3450,\"rary\":3451,\"ades\":3452,\"_se\":3453,\"ause\":3454,\"Ġemploy\":3455,\"Ġ*/čĊ\":3456,\"Ġfre\":3457,\"Ġ'@\":3458,\"Ġcomplet\":3459,\"Ġlarge\":3460,\"ral\":3461,\"\\\\x\":3462,\"Ġfac\":3463,\"<String\":3464,\"Ġcreated\":3465,\"uper\":3466,\".state\":3467,\"Ġhost\":3468,\"eneric\":3469,\"/b\":3470,\"(!\":3471,\"while\":3472,\"ias\":3473,\"BUG\":3474,\"Ġ);ĊĊ\":3475,\"Ġrole\":3476,\"Reg\":3477,\"ĠColor\":3478,\"Start\":3479,\"Ġporn\":3480,\"top\":3481,\"Ġweb\":3482,\"Ġdev\":3483,\"Ġdeal\":3484,\"++)Ċ\":3485,\"Integer\":3486,\"position\":3487,\".on\":3488,\"Ġ(\\\"\":3489,\"ä¸\":3490,\"Ġproblem\":3491,\"sv\":3492,\"Ġpress\":3493,\"ABLE\":3494,\"ATION\":3495,\"ĠSee\":3496,\"anch\":3497,\"Ġthough\":3498,\"leep\":3499,\"Ġ<!--\":3500,\"Ġpoints\":3501,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":3502,\".J\":3503,\"Ġ::\":3504,\"ptr\":3505,\"DB\":3506,\"++;Ċ\":3507,\".png\":3508,\"node\":3509,\"soft\":3510,\"pond\":3511,\"Ġever\":3512,\"----------------------------------------------------------------\":3513,\"Menu\":3514,\"('#\":3515,\"Ġservices\":3516,\"pg\":3517,\"})Ċ\":3518,\"params\":3519,\"Ġactually\":3520,\"Ġ\\\"/\":3521,\"Empty\":3522,\"Method\":3523,\"Ġident\":3524,\"unic\":3525,\"Ġmillion\":3526,\"Ġaff\":3527,\"style\":3528,\"Ġconc\":3529,\"ios\":3530,\"ignment\":3531,\"ULT\":3532,\"Pr\":3533,\"\\\";čĊ\":3534,\"Ġunderstand\":3535,\"uary\":3536,\"Ġhappen\":3537,\"Ġserver\":3538,\"ĠCo\":3539,\"SC\":3540,\"Ġles\":3541,\"Ġfiles\":3542,\"Grid\":3543,\"sql\":3544,\"Ġoften\":3545,\"Ġinfo\":3546,\"_tr\":3547,\"src\":3548,\"ony\":3549,\"Ġspace\":3550,\"umb\":3551,\"Ġpassword\":3552,\"Ġstore\":3553,\",ĊĊ\":3554,\"ĠWhat\":3555,\"ged\":3556,\"ĠFalse\":3557,\"Us\":3558,\"swer\":3559,\"_index\":3560,\"Ġformat\":3561,\"most\":3562,\"sm\":3563,\"New\":3564,\"Ġdetails\":3565,\"Ġprob\":3566,\"ĠAND\":3567,\"()čĊ\":3568,\"ilar\":3569,\"Ġ${\":3570,\"rypt\":3571,\".Collections\":3572,\"$this\":3573,\"ĠFree\":3574,\"_of\":3575,\"(false\":3576,\"dated\":3577,\"Ġ>>\":3578,\"Ġface\":3579,\"CTION\":3580,\"Ġsave\":3581,\"Ġtyp\":3582,\"dev\":3583,\"(\\\"#\":3584,\"AGE\":3585,\"container\":3586,\"edit\":3587,\"QL\":3588,\"Ġitems\":3589,\"Ġsocial\":3590,\"ien\":3591,\"ĠReact\":3592,\").ĊĊ\":3593,\"Ġmar\":3594,\"Ġredu\":3595,\"ĠRE\":3596,\".put\":3597,\"Ġmajor\":3598,\"Cell\":3599,\"next\":3600,\"Ġexpected\":3601,\"Ġyet\":3602,\"Ġindiv\":3603,\"tributes\":3604,\"atis\":3605,\"amed\":3606,\"Ġfood\":3607,\"Source\":3608,\"(string\":3609,\"Ġ+Ċ\":3610,\"ites\":3611,\"dr\":3612,\"Ġmembers\":3613,\"Ġcomb\":3614,\"items\":3615,\"ĠPer\":3616,\"TH\":3617,\"=True\":3618,\"Ġbar\":3619,\"_SE\":3620,\"comm\":3621,\"(w\":3622,\")ĊĊĊ\":3623,\"Ġsend\":3624,\"Ġinc\":3625,\"unsigned\":3626,\"FA\":3627,\"Ġparams\":3628,\"apping\":3629,\"ros\":3630,\"ugin\":3631,\"fa\":3632,\"Ġconnection\":3633,\"Ġ};ĊĊ\":3634,\"Ġbecome\":3635,\"Mode\":3636,\"Ġev\":3637,\"Ġdiff\":3638,\"ĠUnited\":3639,\"Height\":3640,\"fully\":3641,\"images\":3642,\"Ġmakes\":3643,\"Ġglobal\":3644,\"Ġcontact\":3645,\"':Ċ\":3646,\"Ġabs\":3647,\"Ð°Ð\":3648,\"float\":3649,\"Ġexcept\":3650,\"ĠPol\":3651,\"Child\":3652,\"typ\":3653,\"Ġcertain\":3654,\"iÃ³n\":3655,\"OUT\":3656,\"Ġimpro\":3657,\"iles\":3658,\"Ġ-->Ċ\":3659,\"ĠPart\":3660,\"values\":3661,\"oss\":3662,\"/**\":3663,\"ilit\":3664,\"ĠEvent\":3665,\"curity\":3666,\"ster\":3667,\"Ġcharacter\":3668,\"Ġnews\":3669,\"Ġ\\\",\":3670,\"Ġdevice\":3671,\"cel\":3672,\"login\":3673,\"heet\":3674,\"Default\":3675,\"@\\\"\":3676,\"ĉĠ\":3677,\"click\":3678,\"(value\":3679,\"ĠAb\":3680,\"Ġprevious\":3681,\"ERROR\":3682,\"ocal\":3683,\"Ġmaterial\":3684,\"Ġbelow\":3685,\"ĠChrist\":3686,\"Ġmedia\":3687,\"cover\":3688,\"ĠUI\":3689,\"Ġfail\":3690,\"Ġblack\":3691,\"Ġcomponent\":3692,\"ĠAmerican\":3693,\"Ġadded\":3694,\"Ġbuy\":3695,\"stit\":3696,\"Ġcame\":3697,\"Ġdelete\":3698,\"property\":3699,\"oding\":3700,\"Ġcard\":3701,\"rops\":3702,\"Ġhttps\":3703,\"Ġroot\":3704,\"Ġhandle\":3705,\"CC\":3706,\"Back\":3707,\"emplate\":3708,\"Ġgetting\":3709,\"_by\":3710,\"mail\":3711,\"_sh\":3712,\".assert\":3713,\"ĠDec\":3714,\"(true\":3715,\"Ġcomput\":3716,\"Ġclaim\":3717,\"'=>\":3718,\"ĠSub\":3719,\"Ġair\":3720,\"ops\":3721,\"nav\":3722,\"ements\":3723,\"(id\":3724,\"Ġenter\":3725,\"anged\":3726,\"End\":3727,\"Ġlocation\":3728,\"Ġnight\":3729,\"Ġdoing\":3730,\"ĠRed\":3731,\"lin\":3732,\"}ĊĊĊ\":3733,\"vider\":3734,\"Ġpick\":3735,\"Ġwatch\":3736,\"essages\":3737,\"Ġhuman\":3738,\"Ġdam\":3739,\"pend\":3740,\"dir\":3741,\"Ġtax\":3742,\"Ġgirl\":3743,\"reet\":3744,\"Ġbox\":3745,\"Ġstrong\":3746,\"(v\":3747,\"rel\":3748,\"Ġinterface\":3749,\"Ġmsg\":3750,\"fect\":3751,\"_at\":3752,\"Ġhouse\":3753,\"Ġtrack\":3754,\"');ĊĊ\":3755,\"je\":3756,\"ĠJohn\":3757,\"istr\":3758,\"(S\":3759,\"ube\":3760,\"Ġce\":3761,\"itted\":3762,\"VER\":3763,\"*)\":3764,\"parent\":3765,\"Ġapplication\":3766,\"any\":3767,\".swing\":3768,\"Ġpack\":3769,\"\\\\u\":3770,\"Ġpract\":3771,\"Ġsection\":3772,\"ctx\":3773,\"Ġunsigned\":3774,\".Point\":3775,\"ĠOne\":3776,\"Ä±\":3777,\"iple\":3778,\"aid\":3779,\"Ñĥ\":3780,\"Vector\":3781,\"byte\":3782,\"Ġwait\":3783,\"ĠÃł\":3784,\"Ã¥\":3785,\"Ġtogether\":3786,\"Ġthrows\":3787,\"FO\":3788,\"'))\":3789,\"host\":3790,\"ising\":3791,\".view\":3792,\"Ġterms\":3793,\"framework\":3794,\"-r\":3795,\"Ġapply\":3796,\"Ġsession\":3797,\"Options\":3798,\"uggest\":3799,\"Ġothers\":3800,\"witter\":3801,\"Ġfund\":3802,\"Init\":3803,\"__(\":3804,\"ensor\":3805,\"GET\":3806,\"Ġseveral\":3807,\"ii\":3808,\"[j\":3809,\"IO\":3810,\"Ġtemplate\":3811,\"Position\":3812,\"Ġecon\":3813,\"achine\":3814,\"Ġil\":3815,\".spring\":3816,\"main\":3817,\"elt\":3818,\"iment\":3819,\"Rec\":3820,\"mm\":3821,\"ĠUniversity\":3822,\"ursor\":3823,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":3824,\"GL\":3825,\"icture\":3826,\"ithub\":3827,\"cer\":3828,\"cast\":3829,\"From\":3830,\"ales\":3831,\"Ġsubject\":3832,\"password\":3833,\"ny\":3834,\"Ġesc\":3835,\".write\":3836,\"ï¼Į\":3837,\"What\":3838,\".H\":3839,\"Ġhistory\":3840,\"ĠFe\":3841,\"Ġindividual\":3842,\"unit\":3843,\"Ġ-->\":3844,\"Ġdu\":3845,\"IST\":3846,\"Ġusers\":3847,\"fs\":3848,\"false\":3849,\"unt\":3850,\"Title\":3851,\"Ġmot\":3852,\"Ġfuture\":3853,\"ached\":3854,\"Ġstarted\":3855,\"Ġmode\":3856,\"Ġ'<\":3857,\"_array\":3858,\"Ġax\":3859,\"'];Ċ\":3860,\"ires\":3861,\"There\":3862,\"ught\":3863,\"tml\":3864,\"posed\":3865,\"icult\":3866,\"Ġtook\":3867,\"Ġgames\":3868,\"Ġ}}\":3869,\"Ġ?>Ċ\":3870,\"Ġproducts\":3871,\"Is\":3872,\"Ġbad\":3873,\"ĠDes\":3874,\".path\":3875,\"'ĊĊ\":3876,\"ĠPost\":3877,\"avel\":3878,\"(:\":3879,\"Ġneeds\":3880,\"Ġknown\":3881,\"Fl\":3882,\"Ġexec\":3883,\"Ġseen\":3884,\"ume\":3885,\"Ġborder\":3886,\"Ġlive\":3887,\"temp\":3888,\"Per\":3889,\"Ġvariable\":3890,\"iet\":3891,\"ĠDef\":3892,\"Ġge\":3893,\"eme\":3894,\"_back\":3895,\"first\":3896,\"Ġprovided\":3897,\"////////////////////////////////\":3898,\"Ġfilename\":3899,\"Ġhope\":3900,\"uly\":3901,\"auto\":3902,\"find\":3903,\"_string\":3904,\"btn\":3905,\"itude\":3906,\"Attribute\":3907,\"Ġyoung\":3908,\".txt\":3909,\"Ġwebsite\":3910,\"ĠProp\":3911,\"Ġey\":3912,\">();Ċ\":3913,\"ional\":3914,\"ARR\":3915,\"ictionary\":3916,\"urther\":3917,\".</\":3918,\"ALL\":3919,\"Ġstudy\":3920,\"ili\":3921,\"Ġnetwork\":3922,\"yl\":3923,\"istance\":3924,\"OK\":3925,\"NU\":3926,\"rest\":3927,\"ĠST\":3928,\"icrosoft\":3929,\"Ġlimit\":3930,\"Ġcut\":3931,\"():Ċ\":3932,\"Ġcou\":3933,\"ogn\":3934,\"Ġsizeof\":3935,\"ival\":3936,\"Ġwent\":3937,\".z\":3938,\"Link\":3939,\"Ġfire\":3940,\"Ġacross\":3941,\"Ġcommunity\":3942,\"region\":3943,\"NE\":3944,\"Ref\":3945,\"Ġofficial\":3946,\"Ġvisit\":3947,\"olve\":3948,\"Ġreceived\":3949,\"Ġtoken\":3950,\"Ġmonths\":3951,\"Ġanim\":3952,\"Ġparticular\":3953,\"styles\":3954,\"ico\":3955,\"Ġess\":3956,\".Control\":3957,\"ĠÃ©\":3958,\"ball\":3959,\"Ġlearn\":3960,\"inding\":3961,\"Var\":3962,\"Ġdecl\":3963,\"(err\":3964,\"LECT\":3965,\"One\":3966,\"pha\":3967,\"Ġ~\":3968,\"fort\":3969,\"asure\":3970,\"Ġmind\":3971,\"ĠEnd\":3972,\"Check\":3973,\"Ġquick\":3974,\"\\\"),\":3975,\"AND\":3976,\"utions\":3977,\"Base\":3978,\"________\":3979,\"Ġcomment\":3980,\"INE\":3981,\"âĢĻve\":3982,\"But\":3983,\"ĠEl\":3984,\"ĠUs\":3985,\"Ġadmin\":3986,\"mark\":3987,\"ĠName\":3988,\"`Ċ\":3989,\"ĠType\":3990,\"amic\":3991,\"pc\":3992,\"loor\":3993,\"FT\":3994,\"Ġopp\":3995,\"cket\":3996,\")->\":3997,\"tx\":3998,\"Ġpur\":3999,\"uel\":4000,\"ymbol\":4001,\"uation\":4002,\"anger\":4003,\"Ġbackground\":4004,\"ecess\":4005,\"efined\":4006,\"........\":4007,\"Ġdescription\":4008,\"Ġrepresent\":4009,\"\\\"));Ċ\":4010,\"pression\":4011,\"rowser\":4012,\"Ġseries\":4013,\"wards\":4014,\"($_\":4015,\"aise\":4016,\"Ġhot\":4017,\"acity\":4018,\"ries\":4019,\"actions\":4020,\"Create\":4021,\"adio\":4022,\"amples\":4023,\"Ġoriginal\":4024,\"ensive\":4025,\"font\":4026,\"stream\":4027,\"ï»¿using\":4028,\".springframework\":4029,\"server\":4030,\"Ġbill\":4031,\"ACK\":4032,\"ilename\":4033,\"Ġframe\":4034,\"Ġ=Ċ\":4035,\"Edit\":4036,\"adius\":4037,\"Ġdraw\":4038,\"anks\":4039,\"Ġdeter\":4040,\"Ġcomes\":4041,\"_int\":4042,\"Ġforeach\":4043,\"angle\":4044,\"Ġelect\":4045,\"pected\":4046,\"Header\":4047,\"istration\":4048,\"False\":4049,\"ĠGame\":4050,\"Ġfilter\":4051,\"Activity\":4052,\"Ġlarg\":4053,\"inition\":4054,\"Ġ\\\"<\":4055,\"ised\":4056,\"Ġremove\":4057,\"ĠTrans\":4058,\"met\":4059,\"see\":4060,\"Format\":4061,\"Command\":4062,\"ĠEX\":4063,\"None\":4064,\"Ġfront\":4065,\"ASE\":4066,\"ĠRec\":4067,\"oundation\":4068,\"Ġvo\":4069,\"=\\\\\\\"\":4070,\"(*\":4071,\"Change\":4072,\".Write\":4073,\"group\":4074,\"ients\":4075,\"uy\":4076,\"****************************************************************\":4077,\"Ġdig\":4078,\"hr\":4079,\"(-\":4080,\"Ġgen\":4081,\"number\":4082,\"vec\":4083,\"urope\":4084,\"entry\":4085,\"LL\":4086,\"Ġste\":4087,\"Valid\":4088,\"'],\":4089,\"_param\":4090,\"Ġselected\":4091,\"Ġaccording\":4092,\"ĠDis\":4093,\"Ġutil\":4094,\"Buffer\":4095,\"_error\":4096,\"Ġassoci\":4097,\"_SIZE\":4098,\"Ġwor\":4099,\"Ġprintf\":4100,\"rag\":4101,\"Âł\":4102,\"DD\":4103,\"ĠVal\":4104,\"Ġactiv\":4105,\"Eng\":4106,\"etime\":4107,\"Ġvirtual\":4108,\"aign\":4109,\"aur\":4110,\"ĠPres\":4111,\"ĠException\":4112,\"Ġanything\":4113,\"ĠOff\":4114,\"Ġhours\":4115,\"Ġwar\":4116,\"Args\":4117,\"aging\":4118,\"Ġmodels\":4119,\"ĠTime\":4120,\"Ob\":4121,\"ams\":4122,\"joy\":4123,\"Ġearly\":4124,\".read\":4125,\"Ġcenter\":4126,\"ĠInitial\":4127,\"Ġlanguage\":4128,\"length\":4129,\"xy\":4130,\"Ġsn\":4131,\"Ġinf\":4132,\"Post\":4133,\"Ġago\":4134,\"Ġeasy\":4135,\"_code\":4136,\"ĠANY\":4137,\"_ch\":4138,\"Ġdownload\":4139,\"(T\":4140,\"aved\":4141,\"âĢĵ\":4142,\"Ġstudents\":4143,\"Ġfig\":4144,\"light\":4145,\"xx\":4146,\"Ġbuffer\":4147,\"ĠDep\":4148,\"ĠMath\":4149,\"ITH\":4150,\"Ġvari\":4151,\"Ġdue\":4152,\"Factory\":4153,\"Ġpor\":4154,\"Ġep\":4155,\"otype\":4156,\"Ġcannot\":4157,\"Ġwhite\":4158,\"<int\":4159,\"tern\":4160,\"Ġregister\":4161,\"Ġpred\":4162,\"clus\":4163,\"_date\":4164,\"Ġ/**\":4165,\"Ġauth\":4166,\"Ġ[]Ċ\":4167,\"Ġperiod\":4168,\"nown\":4169,\"Ġvot\":4170,\"Ġscreen\":4171,\"'d\":4172,\"Types\":4173,\"Ġtmp\":4174,\"ÐµÐ\":4175,\"ural\":4176,\"Ġbenef\":4177,\"_y\":4178,\"Ġnet\":4179,\"ĠStates\":4180,\"']['\":4181,\"ĠNe\":4182,\"ĠNOT\":4183,\"Ġneg\":4184,\"Ġcommon\":4185,\"scope\":4186,\"Ġcred\":4187,\"ges\":4188,\"_TYPE\":4189,\"Ġsuggest\":4190,\"oom\":4191,\".ĊĊĊ\":4192,\"Ġaccept\":4193,\"Ġrandom\":4194,\"erm\":4195,\"ĠVector\":4196,\"with\":4197,\"TER\":4198,\"(str\":4199,\"Ġrespons\":4200,\"Ġhit\":4201,\".Set\":4202,\"grid\":4203,\"ria\":4204,\"Ġclick\":4205,\"undle\":4206,\"Case\":4207,\"insert\":4208,\"Utils\":4209,\"Ġ\\\"\\\"\\\"\":4210,\"Ġimplement\":4211,\"atal\":4212,\"tempt\":4213,\"template\":4214,\"ocr\":4215,\"returns\":4216,\"Ġplayers\":4217,\"users\":4218,\"edef\":4219,\"ĠThese\":4220,\"Ġamong\":4221,\"Ġdeb\":4222,\"ha\":4223,\".getElement\":4224,\"Ġcirc\":4225,\"Ġanswer\":4226,\"Ġwalk\":4227,\"Ġtreat\":4228,\"ĠGe\":4229,\"ĠCreate\":4230,\"Ġage\":4231,\"Ġreq\":4232,\"OST\":4233,\"angular\":4234,\"Ñı\":4235,\"Ġfive\":4236,\"Ġdistributed\":4237,\"Ġfriend\":4238,\"TP\":4239,\"Ġclean\":4240,\"ows\":4241,\".Controls\":4242,\"dis\":4243,\"Ġwords\":4244,\".io\":4245,\"zy\":4246,\"Ġheader\":4247,\"ĠCheck\":4248,\"âĢĻm\":4249,\"just\":4250,\"holder\":4251,\"=\\\"<?\":4252,\"ĠGNU\":4253,\"ĠCol\":4254,\"imest\":4255,\"entic\":4256,\"{ĊĊ\":4257,\"Ġtre\":4258,\"last\":4259,\"la\":4260,\"ĠYork\":4261,\"Lo\":4262,\"Ġdiscuss\":4263,\"ĠGod\":4264,\"Ġissue\":4265,\"rew\":4266,\"Window\":4267,\"Ġland\":4268,\"Ġstream\":4269,\"ĠPar\":4270,\"Ġquality\":4271,\"Par\":4272,\"_num\":4273,\"Ġsal\":4274,\"elves\":4275,\"ORD\":4276,\"(user\":4277,\"Ġworks\":4278,\"Ġhalf\":4279,\"enses\":4280,\"vas\":4281,\"Ġpolice\":4282,\"(\\\"/\":4283,\"ua\":4284,\"Ġsimple\":4285,\"Address\":4286,\"Ġempty\":4287,\"esh\":4288,\"Update\":4289,\"ĠCreated\":4290,\"('.\":4291,\").Ċ\":4292,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":4293,\"Ġagre\":4294,\"ĠFROM\":4295,\"Ġcook\":4296,\"Ġeverything\":4297,\"ilities\":4298,\".status\":4299,\"Ġrelations\":4300,\"extern\":4301,\"Ġnothing\":4302,\"Ġrunning\":4303,\"ĉvoid\":4304,\"RI\":4305,\"_a\":4306,\"_CON\":4307,\"por\":4308,\".sub\":4309,\"require\":4310,\"ĠCity\":4311,\"ĠWest\":4312,\"Ġmor\":4313,\"store\":4314,\"Equals\":4315,\"oder\":4316,\"Ġna\":4317,\"Ġ[[\":4318,\"Ġ('\":4319,\"ĠDon\":4320,\"ERS\":4321,\"/p\":4322,\".json\":4323,\"abor\":4324,\"Ġsomeone\":4325,\"_text\":4326,\".css\":4327,\".Tab\":4328,\"ĠSome\":4329,\"ato\":4330,\"double\":4331,\"Ġshare\":4332,\"(void\":4333,\"_dir\":4334,\"Ġur\":4335,\"Stack\":4336,\"ĠWorld\":4337,\".X\":4338,\"stract\":4339,\"How\":4340,\".Generic\":4341,\"icles\":4342,\"Ġentry\":4343,\"Ġchanges\":4344,\"Ġpersonal\":4345,\"(A\":4346,\"Ġoffset\":4347,\"_ptr\":4348,\"Ġpie\":4349,\"ĠJan\":4350,\"-group\":4351,\"module\":4352,\"Items\":4353,\"ĠHowever\":4354,\"verage\":4355,\".Font\":4356,\"Ġevents\":4357,\".min\":4358,\"Ġinvol\":4359,\"za\":4360,\"Ġwhole\":4361,\"Ġneeded\":4362,\"Ġlikely\":4363,\"rief\":4364,\"ORM\":4365,\"version\":4366,\"Ġfight\":4367,\"Ġein\":4368,\"Frame\":4369,\"gen\":4370,\"ĠOut\":4371,\"avigation\":4372,\"Length\":4373,\"illed\":4374,\"quence\":4375,\"Ġ!==\":4376,\"ĠSoftware\":4377,\"Ġwriting\":4378,\"Ġrate\":4379,\"'],Ċ\":4380,\"Panel\":4381,\"inner\":4382,\"Ġ[\\\"\":4383,\"Ġtw\":4384,\"cd\":4385,\"Ġ;Ċ\":4386,\"_state\":4387,\"ĠSm\":4388,\"ĠMark\":4389,\"))ĊĊ\":4390,\"prot\":4391,\"ĠMr\":4392,\"method\":4393,\"ustomer\":4394,\"Icon\":4395,\"Ġcorrect\":4396,\"(object\":4397,\"ĠMore\":4398,\"Ġfall\":4399,\"Ġvol\":4400,\"Ġdevelopment\":4401,\"ently\":4402,\"Ġsi\":4403,\"medi\":4404,\"ving\":4405,\"PP\":4406,\"aker\":4407,\"Ġindu\":4408,\"Ġelif\":4409,\"Ġpret\":4410,\"Ġbelieve\":4411,\"ns\":4412,\"omet\":4413,\"ĠIntern\":4414,\"Rect\":4415,\"So\":4416,\".error\":4417,\"Read\":4418,\"Ġfeatures\":4419,\"Ġminutes\":4420,\"---\":4421,\"asing\":4422,\"cret\":4423,\"\\\">čĊ\":4424,\".annot\":4425,\"Ġcollection\":4426,\"'.\":4427,\"Ġsimilar\":4428,\"Ġtaken\":4429,\"(\\\"%\":4430,\"Order\":4431,\"']Ċ\":4432,\"-md\":4433,\"ĠTH\":4434,\"aced\":4435,\"Ġisn\":4436,\"/j\":4437,\"Ġson\":4438,\"graph\":4439,\"ĠInteger\":4440,\"Ġnecess\":4441,\"reen\":4442,\"Ġum\":4443,\"Ġ\\\\<\":4444,\"Ġmoment\":4445,\"Ġbring\":4446,\"Ġindic\":4447,\"ysis\":4448,\"Level\":4449,\"verse\":4450,\"urrenc\":4451,\"_test\":4452,\"Ġentire\":4453,\"Down\":4454,\"Ġ}ĊĊĊ\":4455,\"(result\":4456,\"ĠRead\":4457,\"Ã¨\":4458,\"Mod\":4459,\"Ġtrying\":4460,\"\\\"),Ċ\":4461,\"Ġmember\":4462,\"ĠCor\":4463,\"ODO\":4464,\"-control\":4465,\"untime\":4466,\"ĠSim\":4467,\"Dialog\":4468,\"plot\":4469,\"_on\":4470,\"Ġphys\":4471,\"}/\":4472,\"Ġnamespace\":4473,\"ĉčĊ\":4474,\"acc\":4475,\"Player\":4476,\"ARE\":4477,\"Ġfoot\":4478,\"Ġboard\":4479,\"part\":4480,\"Ġsus\":4481,\"wise\":4482,\"ĠMc\":4483,\"Ġpush\":4484,\"ATA\":4485,\"Ġplease\":4486,\"ried\":4487,\"weet\":4488,\"bit\":4489,\"ided\":4490,\"VE\":4491,\"ĠSw\":4492,\"UB\":4493,\"Ġtypes\":4494,\"edia\":4495,\"Ġclos\":4496,\"acebook\":4497,\"When\":4498,\"Ġedit\":4499,\"igger\":4500,\"Ġenerg\":4501,\"Container\":4502,\"Ġphot\":4503,\"ĠCount\":4504,\"ĠEurope\":4505,\".Is\":4506,\"ĠRuss\":4507,\"peed\":4508,\"ĠStr\":4509,\"Ġpy\":4510,\"Ġcult\":4511,\"Ġdefined\":4512,\"ccount\":4513,\"Ġobt\":4514,\".Location\":4515,\"Ġthread\":4516,\"ille\":4517,\"Ġinstead\":4518,\"strong\":4519,\"ĠSec\":4520,\"URE\":4521,\"Ġidea\":4522,\".se\":4523,\"emy\":4524,\"selected\":4525,\"Connection\":4526,\"acing\":4527,\"thread\":4528,\".next\":4529,\"Ġcoll\":4530,\"Ġfilm\":4531,\"istic\":4532,\"Ġcompet\":4533,\"Ġconn\":4534,\"though\":4535,\"Ġcompan\":4536,\"ocket\":4537,\"Ġteach\":4538,\"=(\":4539,\"Ġphone\":4540,\"Ġactive\":4541,\"delete\":4542,\"tries\":4543,\"Ġmo\":4544,\"Ġdeath\":4545,\"});ĊĊ\":4546,\"ocol\":4547,\"Widget\":4548,\"Ġarticle\":4549,\"rodu\":4550,\"andid\":4551,\"Ñĭ\":4552,\"ĠCr\":4553,\"ka\":4554,\"():\":4555,\"lood\":4556,\"ĉĉĉĊ\":4557,\"Ġalmost\":4558,\"Ġsell\":4559,\"ervlet\":4560,\"rip\":4561,\"Unit\":4562,\"Ġapplic\":4563,\"Ġconnect\":4564,\"Ġfeature\":4565,\"Ġvia\":4566,\"'),\":4567,\"Ġlim\":4568,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":4569,\"ĠGu\":4570,\"Engine\":4571,\"Ġens\":4572,\"Ġenvironment\":4573,\"block\":4574,\"HERE\":4575,\"NULL\":4576,\"gy\":4577,\"tag\":4578,\")).\":4579,\"exp\":4580,\"Ġcompl\":4581,\"Ġinstall\":4582,\"Ġcomplete\":4583,\"queue\":4584,\"atural\":4585,\"Ġgeneral\":4586,\"thon\":4587,\"Ġasked\":4588,\"ores\":4589,\"(res\":4590,\"Ġreserved\":4591,\"SP\":4592,\"ĠâĢ¦\":4593,\"ÅĤ\":4594,\"Ġsignific\":4595,\"Off\":4596,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":4597,\"ĠAg\":4598,\"ĠJust\":4599,\"ĠError\":4600,\"Ġinfl\":4601,\"adata\":4602,\"Ġicon\":4603,\"asks\":4604,\"''\":4605,\"_LO\":4606,\"?.\":4607,\"account\":4608,\"Ġ(*\":4609,\"')ĊĊ\":4610,\"rap\":4611,\"_var\":4612,\"ĠFOR\":4613,\"Ġparty\":4614,\"ĠYour\":4615,\"cat\":4616,\"stry\":4617,\".new\":4618,\"boot\":4619,\"ĠNov\":4620,\"Ġvector\":4621,\"Ġnormal\":4622,\"Ġfurther\":4623,\"Repository\":4624,\"Ġdatabase\":4625,\"attle\":4626,\"Ġmusic\":4627,\"Ġspeed\":4628,\"Ġdoc\":4629,\"process\":4630,\"IGHT\":4631,\".parse\":4632,\"Ġtaking\":4633,\"Ġviol\":4634,\"ceed\":4635,\"ĠAfter\":4636,\"Ġforward\":4637,\"Ġcrit\":4638,\"\\\"/>Ċ\":4639,\"rot\":4640,\"Ġfailed\":4641,\"efore\":4642,\"Ġconcern\":4643,\"oe\":4644,\"ba\":4645,\"Ġsender\":4646,\"Ġterm\":4647,\"has\":4648,\"=\\\"#\":4649,\"Ġpotential\":4650,\"Num\":4651,\"Ġpublished\":4652,\".close\":4653,\"ĠImage\":4654,\"straint\":4655,\"UD\":4656,\"ĠOb\":4657,\"Ġprobably\":4658,\"lim\":4659,\"\\\":Ċ\":4660,\"olume\":4661,\"Ġconsum\":4662,\"ague\":4663,\"ensions\":4664,\"Ġinvestig\":4665,\"-year\":4666,\"');\":4667,\"-sm\":4668,\"Ġenjoy\":4669,\"orig\":4670,\"ering\":4671,\"cp\":4672,\"leased\":4673,\"plements\":4674,\"Ġreturns\":4675,\"pat\":4676,\"BO\":4677,\"ĠHouse\":4678,\".Label\":4679,\"Ġweight\":4680,\"ighb\":4681,\"Ġconditions\":4682,\"Ġexception\":4683,\"description\":4684,\"Ġtrad\":4685,\"-to\":4686,\"Ġ{}\":4687,\"Ġmodule\":4688,\"END\":4689,\".ap\":4690,\".props\":4691,\"Ġconstructor\":4692,\"aves\":4693,\"Ġfavor\":4694,\"ĠNow\":4695,\";i\":4696,\"ĠMain\":4697,\"_k\":4698,\"eries\":4699,\"âĢĻll\":4700,\"transform\":4701,\"imestamp\":4702,\"Pre\":4703,\"Ġmer\":4704,\".res\":4705,\"stant\":4706,\"Location\":4707,\"_NAME\":4708,\"Ġloss\":4709,\"ĠĊĊ\":4710,\"net\":4711,\"Ġengine\":4712,\"Block\":4713,\"Ġissues\":4714,\"Ġparse\":4715,\"ĠBar\":4716,\"Ġstay\":4717,\"ĠJSON\":4718,\"Ġdom\":4719,\"airs\":4720,\"wner\":4721,\"Ġlower\":4722,\"\\\",čĊ\":4723,\"ĠDem\":4724,\"ufact\":4725,\"Ġps\":4726,\"Ġperfect\":4727,\"RL\":4728,\"Ġeduc\":4729,\"ls\":4730,\"emory\":4731,\"ARRANT\":4732,\"uge\":4733,\"Ġexact\":4734,\".key\":4735,\"alled\":4736,\"ech\":4737,\"ief\":4738,\"\\\\/\":4739,\"oke\":4740,\"Ġformer\":4741,\"alloc\":4742,\"Ġsix\":4743,\"ida\":4744,\"Ġmargin\":4745,\"Ġheart\":4746,\"ald\":4747,\"pack\":4748,\".getElementById\":4749,\"ĠWARRANT\":4750,\"Ġrather\":4751,\"Ġbuilding\":4752,\"erman\":4753,\"lice\":4754,\"Ġquestions\":4755,\"izes\":4756,\"lege\":4757,\"irectory\":4758,\"Ġje\":4759,\"Ġcas\":4760,\"props\":4761,\"utf\":4762,\"Ġsecurity\":4763,\"Ġhowever\":4764,\"weight\":4765,\"Ġinside\":4766,\"Ġpresident\":4767,\"Char\":4768,\"ĠWITH\":4769,\".map\":4770,\"Ġgraph\":4771,\"Ġtag\":4772,\"_status\":4773,\"Ġattempt\":4774,\"opp\":4775,\"uses\":4776,\"ĉconst\":4777,\"Ġround\":4778,\",$\":4779,\"Ġfriends\":4780,\"Email\":4781,\"?>\":4782,\"Resource\":4783,\"KEY\":4784,\"osp\":4785,\".query\":4786,\"ĠNorth\":4787,\"ables\":4788,\"istrib\":4789,\"_class\":4790,\"ello\":4791,\"That\":4792,\"Ðº\":4793,\"pecially\":4794,\"ĠPresident\":4795,\"Ġcampaign\":4796,\"Ġalt\":4797,\"area\":4798,\"Ġchall\":4799,\"Ġopport\":4800,\".Con\":4801,\"Ġenergy\":4802,\"like\":4803,\".string\":4804,\"ington\":4805,\")*\":4806,\"yy\":4807,\"Ġprofession\":4808,\"irth\":4809,\"Ġseg\":4810,\"æľ\":4811,\"Ġhor\":4812,\"iers\":4813,\"can\":4814,\"Ġbehind\":4815,\"Product\":4816,\"fg\":4817,\"ĠSk\":4818,\".jpg\":4819,\"?:\":4820,\"];ĊĊ\":4821,\"Ġcallback\":4822,\"ĠHttp\":4823,\"ÑĮ\":4824,\"long\":4825,\"MS\":4826,\"ATH\":4827,\"Ġraise\":4828,\"Ġwanted\":4829,\"rown\":4830,\"utor\":4831,\"lt\":4832,\"]=\":4833,\"eline\":4834,\"MA\":4835,\"Ġsepar\":4836,\"cs\":4837,\"semb\":4838,\"Dis\":4839,\"bserv\":4840,\"ĠWill\":4841,\"Ġpolicy\":4842,\"Ġthird\":4843,\"phone\":4844,\"Ġbed\":4845,\"/g\":4846,\".__\":4847,\"ĠInc\":4848,\"izing\":4849,\".remove\":4850,\"instance\":4851,\".type\":4852,\"Ġserv\":4853,\"Each\":4854,\"Ġhar\":4855,\"ĠMessage\":4856,\"(key\":4857,\"SELECT\":4858,\"Pos\":4859,\"));čĊ\":4860,\"Ġrecomm\":4861,\"Ġtraining\":4862,\"ĠEnt\":4863,\"ĠChar\":4864,\"icht\":4865,\"(file\":4866,\"Ġprior\":4867,\"Game\":4868,\"Ġexit\":4869,\"Params\":4870,\".core\":4871,\"PC\":4872,\"nes\":4873,\"anced\":4874,\"(request\":4875,\"Password\":4876,\"}>Ċ\":4877,\"Ġmag\":4878,\"Ġrelease\":4879,\"Ġshall\":4880,\"udent\":4881,\"ĠSouth\":4882,\"ando\":4883,\":'\":4884,\".TabIndex\":4885,\"sk\":4886,\"anner\":4887,\"isset\":4888,\"Ġoutside\":4889,\"ledge\":4890,\"Ġå\":4891,\"ĠRob\":4892,\"Ġimm\":4893,\"!Ċ\":4894,\"ĠWeb\":4895,\"Des\":4896,\"BC\":4897,\"ancial\":4898,\"Route\":4899,\"Dec\":4900,\"ferences\":4901,\"Ġpurch\":4902,\"ĠModel\":4903,\"ctor\":4904,\"gn\":4905,\"_start\":4906,\"_un\":4907,\".*\":4908,\"ises\":4909,\"Ġground\":4910,\"Ġunique\":4911,\"Ġbeaut\":4912,\"{\\\"\":4913,\"Ġpour\":4914,\"ĠOct\":4915,\"Ġtree\":4916,\"sets\":4917,\"_res\":4918,\"')->\":4919,\"_reg\":4920,\"(\\\"\\\\\":4921,\"Ġbyte\":4922,\"Bl\":4923,\"Ġdating\":4924,\"Ġmatter\":4925,\"ĠRem\":4926,\"Ġ'../\":4927,\"ĠAug\":4928,\"ĠLa\":4929,\"Ġ$(\":4930,\"ournal\":4931,\"iam\":4932,\"Ġshows\":4933,\"write\":4934,\"Ġball\":4935,\"Ġsimply\":4936,\"Ġfast\":4937,\"Ġmemory\":4938,\"ASS\":4939,\"ĠOf\":4940,\"oved\":4941,\"ante\":4942,\"aul\":4943,\"istry\":4944,\")));Ċ\":4945,\"Ġfit\":4946,\"<string\":4947,\"Ġpolitical\":4948,\"ancel\":4949,\"_.\":4950,\"card\":4951,\".current\":4952,\"och\":4953,\"_image\":4954,\"\\\\t\":4955,\"#Ċ\":4956,\"(L\":4957,\"Ġindustry\":4958,\"coming\":4959,\"Ġextra\":4960,\"Ġreported\":4961,\".start\":4962,\"Ġresources\":4963,\"Ġimg\":4964,\"flow\":4965,\"_EX\":4966,\"(null\":4967,\"ĠPre\":4968,\"Ġwrong\":4969,\"interface\":4970,\"Parameter\":4971,\"ners\":4972,\"á»\":4973,\"ture\":4974,\"ersist\":4975,\"ountry\":4976,\"Ġseems\":4977,\"alance\":4978,\"dest\":4979,\"ĉString\":4980,\"Ġmaint\":4981,\"Ġunit\":4982,\"acters\":4983,\"ĠTR\":4984,\"iful\":4985,\"exports\":4986,\"project\":4987,\"Application\":4988,\"legate\":4989,\"Ġtakes\":4990,\"term\":4991,\"Ġetc\":4992,\"uster\":4993,\"Ġappear\":4994,\"address\":4995,\"Ġfem\":4996,\"hs\":4997,\"Ġhom\":4998,\",-\":4999,\"Ġdifficult\":5000,\"Ġcoming\":5001,\"Open\":5002,\"Ġsettings\":5003,\"ĠWar\":5004,\"ĠThen\":5005,\"Ġautom\":5006,\"ĠFoundation\":5007,\"Ġquite\":5008,\"Description\":5009,\"Ġblog\":5010,\"iqu\":5011,\"PS\":5012,\"_field\":5013,\"Json\":5014,\"SSION\":5015,\"ĠSch\":5016,\"ĠLO\":5017,\"Ġdescri\":5018,\"Ġeveryone\":5019,\"Ġpretty\":5020,\"Ġlonger\":5021,\"Ġmenu\":5022,\"Ġcurrently\":5023,\"sec\":5024,\"Ġrelationship\":5025,\"################################\":5026,\"ĠMap\":5027,\"aset\":5028,\"Ġparameters\":5029,\"Ġcrush\":5030,\"\\\"čĊ\":5031,\"ILITY\":5032,\"igration\":5033,\"Ġcout\":5034,\"total\":5035,\"Ġnames\":5036,\"ndef\":5037,\"\\\");\":5038,\"riend\":5039,\"ynamic\":5040,\"Ġeffort\":5041,\"Ġactual\":5042,\"Ġfields\":5043,\"OUN\":5044,\"ters\":5045,\"Ġfix\":5046,\"_model\":5047,\"Ġcases\":5048,\"CA\":5049,\"My\":5050,\"Interface\":5051,\"ĠSE\":5052,\"]]\":5053,\"alle\":5054,\"ĠNational\":5055,\"ĠArrayList\":5056,\"inline\":5057,\".V\":5058,\"ara\":5059,\"refix\":5060,\"asc\":5061,\"Reader\":5062,\"ĠÐ¿\":5063,\"astic\":5064,\"(()\":5065,\"Cl\":5066,\".annotation\":5067,\"Ġperformance\":5068,\"aily\":5069,\".toString\":5070,\".net\":5071,\"views\":5072,\".end\":5073,\"ayers\":5074,\"late\":5075,\"ĠApr\":5076,\"ederal\":5077,\"'])\":5078,\".body\":5079,\"Ġhigher\":5080,\"_fl\":5081,\"cr\":5082,\"alert\":5083,\"_node\":5084,\"ĠGoogle\":5085,\"Ġitself\":5086,\"Auth\":5087,\"urrency\":5088,\"Ġsignificant\":5089,\"append\":5090,\"Ġrespect\":5091,\"strap\":5092,\"Ġuna\":5093,\"riteria\":5094,\"PORT\":5095,\".apache\":5096,\"Output\":5097,\"Ġprogress\":5098,\"Ġmid\":5099,\"ĠMicrosoft\":5100,\"Ġresource\":5101,\"ablish\":5102,\"Ġdim\":5103,\".load\":5104,\".App\":5105,\"Ġdirection\":5106,\"Ġadditional\":5107,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":5108,\"Ġnumbers\":5109,\"Ġcompanies\":5110,\".Th\":5111,\"Ġsound\":5112,\"username\":5113,\"Ġstatement\":5114,\"Ġalert\":5115,\"Ġcontract\":5116,\"home\":5117,\"_length\":5118,\".Component\":5119,\"ev\":5120,\".Ex\":5121,\"ï¼ļ\":5122,\"\\\";\":5123,\"ĠHigh\":5124,\"Ġ)ĊĊ\":5125,\"ĠPoint\":5126,\"oph\":5127,\"Ġlines\":5128,\"->_\":5129,\"\\\")ĊĊ\":5130,\"ox\":5131,\"application\":5132,\"Ġ]Ċ\":5133,\"ĊĊĊĊĊĊ\":5134,\"Ġsoon\":5135,\"ctions\":5136,\"inger\":5137,\"Ġjoin\":5138,\"ĠPe\":5139,\"Ġë\":5140,\"Ġlas\":5141,\".E\":5142,\"css\":5143,\"/or\":5144,\"ĠStart\":5145,\"ĠTO\":5146,\"Ġsubs\":5147,\"conn\":5148,\"components\":5149,\"DEBUG\":5150,\"quare\":5151,\"Function\":5152,\"endar\":5153,\".index\":5154,\"Ġfill\":5155,\"ÄĻ\":5156,\"Ġchoose\":5157,\"how\":5158,\"ĠAmerica\":5159,\"assets\":5160,\"------------\":5161,\"ĠValue\":5162,\"Ġoffice\":5163,\"Ġveh\":5164,\"Ġtransform\":5165,\"ĠArt\":5166,\"Ġinde\":5167,\"Ġfn\":5168,\"Ġimplements\":5169,\"ango\":5170,\"plete\":5171,\"+\\\"\":5172,\"tmp\":5173,\"amily\":5174,\"Ġhash\":5175,\"missions\":5176,\"EST\":5177,\"gt\":5178,\"Provider\":5179,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":5180,\"Ġflag\":5181,\"Ġparticip\":5182,\"den\":5183,\"ĠReturns\":5184,\"Ġnote\":5185,\"Ã¼r\":5186,\"pm\":5187,\"ideos\":5188,\"Ġspecified\":5189,\"ĠEN\":5190,\"ester\":5191,\"olid\":5192,\"Ġupon\":5193,\"(std\":5194,\"ĉv\":5195,\"Ġ'\\\\\":5196,\"uz\":5197,\"Ġvert\":5198,\"Ġvict\":5199,\"ĉself\":5200,\"Ġ\\\"$\":5201,\".k\":5202,\"Ġgroups\":5203,\"github\":5204,\"lang\":5205,\"Ġmut\":5206,\"TO\":5207,\"Ġve\":5208,\"ĠPlease\":5209,\";ĊĊĊ\":5210,\"access\":5211,\"Ġ{\\\"\":5212,\"rea\":5213,\"Ġrisk\":5214,\"icker\":5215,\"oggle\":5216,\"ĉwhile\":5217,\"ANG\":5218,\".send\":5219,\"Ġwoman\":5220,\"Ġgets\":5221,\"Ġign\":5222,\"ĠId\":5223,\"_log\":5224,\"ONE\":5225,\"Ġevid\":5226,\"ĠHar\":5227,\"_sub\":5228,\"Ġendl\":5229,\"Ġincluded\":5230,\"());ĊĊ\":5231,\"ĠAp\":5232,\"igr\":5233,\"Ġsem\":5234,\"ĠBlack\":5235,\"doc\":5236,\"_table\":5237,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":5238,\"-up\":5239,\"Ġcause\":5240,\"Ġ..\":5241,\"Ġvan\":5242,\"_dict\":5243,\"Ġfocus\":5244,\"IND\":5245,\"CESS\":5246,\".Log\":5247,\"Ġmultiple\":5248,\"ido\":5249,\"Ġregard\":5250,\"-M\":5251,\"andler\":5252,\"ourse\":5253,\"Ġdeg\":5254,\".U\":5255,\"Ġaddition\":5256,\"Ġvarious\":5257,\"Ġreceive\":5258,\"ÐµÐ½\":5259,\"ĠHT\":5260,\"Obj\":5261,\"DF\":5262,\"Ġincrease\":5263,\"ĠOpen\":5264,\"];\":5265,\"Ġcommit\":5266,\"?Ċ\":5267,\"ategories\":5268,\"atory\":5269,\"ship\":5270,\"ĠMich\":5271,\"Ġhtml\":5272,\"romise\":5273,\"Ġleave\":5274,\"Ġstrateg\":5275,\"aven\":5276,\"ĠConsole\":5277,\"known\":5278,\"-n\":5279,\"_LE\":5280,\".component\":5281,\"Ġbre\":5282,\"Session\":5283,\"iance\":5284,\"Ġalign\":5285,\"typedef\":5286,\"_result\":5287,\"ĠWHERE\":5288,\".split\":5289,\"Ġreading\":5290,\"FAULT\":5291,\"Ġclo\":5292,\"Ġnotice\":5293,\"_pr\":5294,\"arter\":5295,\"Ġlock\":5296,\"Ġstandard\":5297,\"etic\":5298,\"ellow\":5299,\"Ġpadding\":5300,\"ĠHis\":5301,\"Ġstates\":5302,\"_cast\":5303,\"(P\":5304,\"aa\":5305,\"Ġinternal\":5306,\"ean\":5307,\"ĠPRO\":5308,\"ĠKey\":5309,\"Ġespecially\":5310,\"ming\":5311,\"Ġcross\":5312,\"Ġnational\":5313,\"_object\":5314,\"filter\":5315,\"Ġscript\":5316,\".update\":5317,\"_i\":5318,\"ĠAssert\":5319,\"/core\":5320,\"%%%%\":5321,\"Ġproblems\":5322,\"istor\":5323,\"Ġ.=\":5324,\"Ġarch\":5325,\"Ġwritten\":5326,\"Ġmilit\":5327,\"MENT\":5328,\".ch\":5329,\"cape\":5330,\"ĠMus\":5331,\"_config\":5332,\"ĠAPI\":5333,\"foot\":5334,\"Ġimages\":5335,\"endl\":5336,\".In\":5337,\"First\":5338,\"Ġplatform\":5339,\".prot\":5340,\"Option\":5341,\"ste\":5342,\"ĠTODO\":5343,\"Ġforce\":5344,\".cont\":5345,\"ĉecho\":5346,\"ĠDav\":5347,\"Ptr\":5348,\"(B\":5349,\"RT\":5350,\"ĠBase\":5351,\"]['\":5352,\"Ġannounc\":5353,\"console\":5354,\"ĠPy\":5355,\"ds\":5356,\".as\":5357,\"Ġprevent\":5358,\"apan\":5359,\"Ġ{'\":5360,\"}</\":5361,\"ĠService\":5362,\"ĠSen\":5363,\"ador\":5364,\"profile\":5365,\"Top\":5366,\"Ġiter\":5367,\"po\":5368,\"IES\":5369,\"JSON\":5370,\"IE\":5371,\"iant\":5372,\"ãĢģ\":5373,\"_j\":5374,\"ĠSept\":5375,\"_map\":5376,\"bum\":5377,\"(context\":5378,\"ĠHome\":5379,\"ians\":5380,\"GB\":5381,\"Ġliving\":5382,\"Ġpattern\":5383,\"(input\":5384,\"icient\":5385,\"Core\":5386,\"Ġentity\":5387,\"Ġinteg\":5388,\"Changed\":5389,\"Ġuseful\":5390,\".info\":5391,\"Ġtool\":5392,\"(item\":5393,\"Ġok\":5394,\"Ġfeed\":5395,\"IX\":5396,\"Ã©s\":5397,\"ĠNews\":5398,\"remove\":5399,\"erry\":5400,\"ĉĉĉĉĉĉĉĉĉ\":5401,\"ipment\":5402,\"ares\":5403,\"Do\":5404,\"Current\":5405,\".content\":5406,\".Group\":5407,\"ustral\":5408,\"ĠÑģ\":5409,\"})\":5410,\"Ġpopular\":5411,\"Ġstre\":5412,\"Ġmethods\":5413,\"_ERROR\":5414,\"Left\":5415,\"cal\":5416,\"bsp\":5417,\".ToString\":5418,\"Ġdir\":5419,\"Ġallowed\":5420,\"Ġimpact\":5421,\"\\\")]Ċ\":5422,\".config\":5423,\"Ġelements\":5424,\"Ġprote\":5425,\"Ġtrain\":5426,\".tr\":5427,\"rs\":5428,\"ĠRepublic\":5429,\"ĠTask\":5430,\"aries\":5431,\"(D\":5432,\"(get\":5433,\"âĢ¦ĊĊ\":5434,\"Ġrelated\":5435,\"Ġvers\":5436,\"Ġsil\":5437,\"Ġ\\\"\\\";Ċ\":5438,\"Ġcmd\":5439,\"Ġtechnology\":5440,\".width\":5441,\"Float\":5442,\"ĠUse\":5443,\"Body\":5444,\"should\":5445,\".join\":5446,\"Font\":5447,\"llum\":5448,\"ycle\":5449,\"ĠBrit\":5450,\"Ġmit\":5451,\"Ġscale\":5452,\"Ġ(_\":5453,\"ernel\":5454,\"\\\"))Ċ\":5455,\"Ġscore\":5456,\"/v\":5457,\"Ġstudent\":5458,\"UC\":5459,\".show\":5460,\"Ġaverage\":5461,\"Enabled\":5462,\"(ex\":5463,\"common\":5464,\"imation\":5465,\":@\\\"\":5466,\"chie\":5467,\"Ġ...ĊĊ\":5468,\"river\":5469,\"ĠMarch\":5470,\"category\":5471,\"fin\":5472,\"Ġcourt\":5473,\"Ð²\":5474,\"Server\":5475,\"Ġcontainer\":5476,\"-st\":5477,\"_for\":5478,\"Ġparts\":5479,\"Ġdecision\":5480,\"obs\":5481,\"oub\":5482,\"mitted\":5483,\"Ġ$('#\":5484,\"Ġsaw\":5485,\"Ġapproach\":5486,\"ICE\":5487,\"Ġsaying\":5488,\"Ġanyone\":5489,\"meta\":5490,\"SD\":5491,\"Ġsong\":5492,\"display\":5493,\"Oper\":5494,\"outes\":5495,\"Ġchannel\":5496,\"Ġchanged\":5497,\"Ãª\":5498,\"Ġfinally\":5499,\"_number\":5500,\"Please\":5501,\"à¤\":5502,\"oring\":5503,\"-re\":5504,\"Ġkill\":5505,\"Ġdrug\":5506,\"window\":5507,\"Ġconvert\":5508,\"ombre\":5509,\"Ġways\":5510,\"Helper\":5511,\"ĠFirst\":5512,\"(__\":5513,\"urity\":5514,\"ĠWindows\":5515,\"ees\":5516,\"Ġmat\":5517,\"rapper\":5518,\"Ġplus\":5519,\"anges\":5520,\"\\\"].\":5521,\"azon\":5522,\"/t\":5523,\"lat\":5524,\"aste\":5525,\"Ġprofile\":5526,\"Ġready\":5527,\"#ifndef\":5528,\"rote\":5529,\"Ġsense\":5530,\"Gener\":5531,\"ĠConfig\":5532,\"omy\":5533,\"ĠJune\":5534,\"Ġlatest\":5535,\"Ġsaf\":5536,\"Ġregion\":5537,\"Ġdeep\":5538,\"witch\":5539,\"ĠPark\":5540,\"}`\":5541,\"ĠFrom\":5542,\"II\":5543,\"Ġcv\":5544,\"Ġreach\":5545,\"Ġcounter\":5546,\"ĠWork\":5547,\"ĠURL\":5548,\"ĠUpdate\":5549,\"',čĊ\":5550,\"Ġimmedi\":5551,\"close\":5552,\"ados\":5553,\"ferred\":5554,\"Ġweeks\":5555,\"urg\":5556,\"Ġdamage\":5557,\"Ġlost\":5558,\"ani\":5559,\"_lo\":5560,\"Ġhimself\":5561,\"Ġdog\":5562,\")]Ċ\":5563,\"ï¿\":5564,\"pir\":5565,\"tt\":5566,\"Ġpaper\":5567,\"Ġthems\":5568,\"second\":5569,\"Ġstaff\":5570,\"ĠInput\":5571,\"\\\"+\":5572,\"ĠFacebook\":5573,\"Ġalloc\":5574,\"Ġsched\":5575,\"ACE\":5576,\"Ġthemselves\":5577,\"ĠComponent\":5578,\"Ġdriver\":5579,\"ja\":5580,\"(path\":5581,\"Ġcategory\":5582,\"alls\":5583,\"pu\":5584,\"lluminate\":5585,\"ĠAction\":5586,\".button\":5587,\"ĠGL\":5588,\"istics\":5589,\"Ġoil\":5590,\"Ġstock\":5591,\">'\":5592,\"Ġdead\":5593,\"VAL\":5594,\"QUE\":5595,\"************************************************************************\":5596,\"Ġcharg\":5597,\"Return\":5598,\"Ġful\":5599,\"dom\":5600,\"Ġrules\":5601,\"Ġmodify\":5602,\"Ġeval\":5603,\"ham\":5604,\"atement\":5605,\"\\\\<\":5606,\"ula\":5607,\"=False\":5608,\"RA\":5609,\"Ġcontains\":5610,\"Ġstack\":5611,\"mar\":5612,\"Ġ{}Ċ\":5613,\"Ġundefined\":5614,\"Ass\":5615,\"ĠChina\":5616,\"vey\":5617,\"*Ċ\":5618,\"Ġplaying\":5619,\")/\":5620,\"actor\":5621,\"Ġbottom\":5622,\"lier\":5623,\"ĠNumber\":5624,\"Ġcouple\":5625,\"DC\":5626,\"ĠSO\":5627,\"gor\":5628,\".setText\":5629,\"success\":5630,\"command\":5631,\"Filter\":5632,\"ĠOur\":5633,\"_item\":5634,\"Ġctx\":5635,\"Ġroad\":5636,\"Version\":5637,\"case\":5638,\"urt\":5639,\"avior\":5640,\"ych\":5641,\"sembly\":5642,\"ĠProduct\":5643,\"Ġheld\":5644,\"afe\":5645,\"Ġincludes\":5646,\"<quote\":5647,\"Ġavoid\":5648,\"ĠFin\":5649,\"ĠMod\":5650,\"Ġtab\":5651,\"ano\":5652,\"Ã±\":5653,\"ipping\":5654,\"-e\":5655,\"Ġinsert\":5656,\"target\":5657,\"chan\":5658,\".Model\":5659,\"IME\":5660,\"\\\\Ċ\":5661,\"Ġmachine\":5662,\"avy\":5663,\"ĠNO\":5664,\"ĠInter\":5665,\"Ġoperation\":5666,\"modal\":5667,\"Tag\":5668,\"]:\":5669,\"Ġproduction\":5670,\"Ġareas\":5671,\"Ġren\":5672,\"_from\":5673,\"nbsp\":5674,\"Ġoperator\":5675,\"men\":5676,\"apped\":5677,\"_per\":5678,\"zen\":5679,\"(\\\".\":5680,\".save\":5681,\"=\\\"{{\":5682,\"Ġtor\":5683,\"(response\":5684,\"Ġcandid\":5685,\"Ġconv\":5686,\"ailed\":5687,\"ĠLib\":5688,\"comp\":5689,\"ura\":5690,\"ï¿½\":5691,\"ĠHere\":5692,\"Ġargument\":5693,\"hood\":5694,\"Ġestablish\":5695,\"ography\":5696,\"ĠonClick\":5697,\"ambda\":5698,\"Ġsch\":5699,\"Ġmovie\":5700,\"Ġsec\":5701,\"Ġactivity\":5702,\"Ø§\":5703,\"Ġsql\":5704,\"_all\":5705,\"incip\":5706,\"Ġprovides\":5707,\"Ġsys\":5708,\"acket\":5709,\"Ġwasn\":5710,\"Ġuses\":5711,\"ĠFunction\":5712,\".google\":5713,\"ĠResult\":5714,\"Visible\":5715,\"agma\":5716,\"elcome\":5717,\"ĠSy\":5718,\"ĠCent\":5719,\"ALSE\":5720,\"aciÃ³n\":5721,\"EXT\":5722,\"Ġlicense\":5723,\"ĠLong\":5724,\"Ġaccom\":5725,\"Ġability\":5726,\".height\":5727,\"Active\":5728,\"ological\":5729,\"oly\":5730,\")),\":5731,\".Se\":5732,\"Ġparameter\":5733,\"prite\":5734,\"ABILITY\":5735,\".service\":5736,\"ĠGroup\":5737,\"_query\":5738,\"ĠItem\":5739,\"ining\":5740,\"Ġjud\":5741,\"ims\":5742,\"fix\":5743,\"inder\":5744,\"agram\":5745,\"Ġfunctions\":5746,\"Ġexperi\":5747,\"ĠEm\":5748,\"Ġrot\":5749,\"Ġpen\":5750,\".btn\":5751,\"ĠAS\":5752,\"#ifdef\":5753,\"Ġchoice\":5754,\"ĠPage\":5755,\"_PRO\":5756,\"QU\":5757,\"åı\":5758,\"antity\":5759,\"ÂŃ\":5760,\"words\":5761,\"Ġreadonly\":5762,\"Ġflex\":5763,\"protected\":5764,\"ĠAny\":5765,\"Ġcharacters\":5766,\"enced\":5767,\"ĠJuly\":5768,\"iler\":5769,\"Card\":5770,\"urance\":5771,\"Ġrev\":5772,\".event\":5773,\"aly\":5774,\"Ġwonder\":5775,\"ĠPort\":5776,\"Ġlegal\":5777,\"role\":5778,\"Ġten\":5779,\"Ġgoes\":5780,\"MP\":5781,\"white\":5782,\"):čĊ\":5783,\"))čĊ\":5784,\"Ġreference\":5785,\"Ġmis\":5786,\"ĠProject\":5787,\"icks\":5788,\">&\":5789,\"CON\":5790,\"Ġrepl\":5791,\"Ġregular\":5792,\"Storage\":5793,\"ramework\":5794,\"Ġgoal\":5795,\"Ġtouch\":5796,\".widget\":5797,\"Ġbuilt\":5798,\"des\":5799,\"Part\":5800,\"(re\":5801,\"Ġworth\":5802,\"hib\":5803,\"game\":5804,\"ĠÐ²\":5805,\"acion\":5806,\"ĠWhite\":5807,\"(type\":5808,\"(`\":5809,\"Ġnatural\":5810,\"Ġinj\":5811,\"Ġcalcul\":5812,\"ĠApril\":5813,\".List\":5814,\"Ġassociated\":5815,\"ĉSystem\":5816,\"~~\":5817,\"=[\":5818,\"Ġstorage\":5819,\"Ġbytes\":5820,\"Ġtravel\":5821,\"Ġsou\":5822,\"Ġpassed\":5823,\"!=\":5824,\"ascript\":5825,\".open\":5826,\"Ġgrid\":5827,\"Ġbus\":5828,\"Ġrecogn\":5829,\"Ab\":5830,\"Ġhon\":5831,\"ĠCenter\":5832,\"Ġprec\":5833,\"build\":5834,\"HTML\":5835,\"ĠSan\":5836,\"Ġcountries\":5837,\"aled\":5838,\"token\":5839,\"kt\":5840,\"Ġqual\":5841,\"Last\":5842,\"adow\":5843,\"Ġmanufact\":5844,\"idad\":5845,\"jango\":5846,\"Next\":5847,\"xf\":5848,\".a\":5849,\"Ġporno\":5850,\"ĠPM\":5851,\"erve\":5852,\"iting\":5853,\"_th\":5854,\"ci\":5855,\"=None\":5856,\"gs\":5857,\"Ġlogin\":5858,\"atives\":5859,\"']);Ċ\":5860,\"Äħ\":5861,\"Ġill\":5862,\"IA\":5863,\"children\":5864,\"DO\":5865,\"Ġlevels\":5866,\"Ġ{{\":5867,\"Ġlooks\":5868,\"Ġ\\\"#\":5869,\"ToString\":5870,\"Ġnecessary\":5871,\"ĠĠĠĊ\":5872,\"cell\":5873,\"Entry\":5874,\"Ġ'#\":5875,\"Ġextrem\":5876,\"Selector\":5877,\"Ġplaceholder\":5878,\"Load\":5879,\"Ġreleased\":5880,\"ORE\":5881,\"Enumer\":5882,\"ĠTV\":5883,\"SET\":5884,\"inq\":5885,\"Press\":5886,\"ĠDepartment\":5887,\"Ġproperties\":5888,\"Ġrespond\":5889,\"Search\":5890,\"ael\":5891,\"Ġrequ\":5892,\"ĠBook\":5893,\"/Ċ\":5894,\"(st\":5895,\"Ġfinancial\":5896,\"icket\":5897,\"_input\":5898,\"Ġthreat\":5899,\"(in\":5900,\"Strip\":5901,\"ìĿ\":5902,\"Ã§Ã£o\":5903,\"Ġevidence\":5904,\"));\":5905,\"ĠBro\":5906,\"Ġ[];Ċ\":5907,\"Ġou\":5908,\"buf\":5909,\"Script\":5910,\"dat\":5911,\"Ġrule\":5912,\"#import\":5913,\"=\\\"/\":5914,\"Serial\":5915,\"Ġstarting\":5916,\"[index\":5917,\"ae\":5918,\"Ġcontrib\":5919,\"session\":5920,\"_new\":5921,\"utable\":5922,\"ober\":5923,\"Ġ\\\"./\":5924,\"Ġlogger\":5925,\"Ġrecently\":5926,\"Ġreturned\":5927,\"ččĊ\":5928,\")))Ċ\":5929,\"itions\":5930,\"Ġseek\":5931,\"Ġcommunic\":5932,\"Ġ\\\".\":5933,\"Ġusername\":5934,\"ECT\":5935,\"DS\":5936,\"Ġotherwise\":5937,\"ĠGerman\":5938,\".aw\":5939,\"Adapter\":5940,\"ixel\":5941,\"Ġsystems\":5942,\"Ġdrop\":5943,\"Ġstructure\":5944,\"Ġ$(\\\"#\":5945,\"encies\":5946,\"anning\":5947,\"ĠLink\":5948,\"ĠResponse\":5949,\"Ġstri\":5950,\"Å¼\":5951,\"ĠDB\":5952,\"æĹ\":5953,\"android\":5954,\"submit\":5955,\"otion\":5956,\"(@\":5957,\".test\":5958,\"ĊĊĊĊĊĊĊĊ\":5959,\"];čĊ\":5960,\"Ġdirectly\":5961,\"Ġ\\\"%\":5962,\"ris\":5963,\"elta\":5964,\"AIL\":5965,\"){čĊ\":5966,\"mine\":5967,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":5968,\"(k\":5969,\"bon\":5970,\"asic\":5971,\"pite\":5972,\"___\":5973,\"Max\":5974,\"Ġerrors\":5975,\"ĠWhile\":5976,\"Ġarguments\":5977,\"Ġensure\":5978,\"Right\":5979,\"-based\":5980,\"Web\":5981,\"Ġ-=\":5982,\"Ġintrodu\":5983,\"ĠInst\":5984,\"ĠWash\":5985,\"ordin\":5986,\"join\":5987,\"Database\":5988,\"Ġgrad\":5989,\"Ġusually\":5990,\"ITE\":5991,\"Props\":5992,\"?>Ċ\":5993,\"ĠGo\":5994,\"@Override\":5995,\"REF\":5996,\"Ġip\":5997,\"ĠAustral\":5998,\"Ġist\":5999,\"ViewById\":6000,\"Ġserious\":6001,\"Ġcustomer\":6002,\".prototype\":6003,\"odo\":6004,\"cor\":6005,\"Ġdoor\":6006,\"ĠWITHOUT\":6007,\"Ġplant\":6008,\"Ġbegan\":6009,\"Ġdistance\":6010,\"()).\":6011,\"Ġchance\":6012,\"Ġord\":6013,\"came\":6014,\"pragma\":6015,\"Ġprotect\":6016,\"ragment\":6017,\"ĠNode\":6018,\"ening\":6019,\"Ñĩ\":6020,\"Ġroute\":6021,\"ĠSchool\":6022,\"hi\":6023,\"Ġneighb\":6024,\"After\":6025,\"licit\":6026,\"Ġcontr\":6027,\"Ġprimary\":6028,\"AA\":6029,\".WriteLine\":6030,\"utils\":6031,\"Ġbi\":6032,\"Red\":6033,\".Linq\":6034,\".object\":6035,\"Ġleaders\":6036,\"unities\":6037,\"Ġgun\":6038,\"onth\":6039,\"ĠDev\":6040,\"FILE\":6041,\"Ġcomments\":6042,\"_len\":6043,\"arrow\":6044,\"amount\":6045,\"Range\":6046,\"sert\":6047,\"GridView\":6048,\"Ġupdated\":6049,\"ĠMo\":6050,\"Ġinform\":6051,\"ociety\":6052,\"ala\":6053,\"Access\":6054,\"Ġhab\":6055,\"Ġcreat\":6056,\"_arg\":6057,\"ĠJanuary\":6058,\"ĠDay\":6059,\"\\\")čĊ\":6060,\"uple\":6061,\"document\":6062,\"gorith\":6063,\"menu\":6064,\"ĠOver\":6065,\"bb\":6066,\".title\":6067,\"_out\":6068,\"Ġled\":6069,\"uri\":6070,\"Ġ?></\":6071,\"gl\":6072,\"Ġbank\":6073,\"ayment\":6074,\"ĉprintf\":6075,\"MD\":6076,\"Ġsample\":6077,\"Ġhands\":6078,\"ĠVersion\":6079,\"uario\":6080,\"Ġoffers\":6081,\"ityEngine\":6082,\"Ġshape\":6083,\"Ġsleep\":6084,\"_point\":6085,\"Settings\":6086,\"Ġachie\":6087,\"Ġsold\":6088,\"ota\":6089,\".bind\":6090,\"Am\":6091,\"Ġsafe\":6092,\"Store\":6093,\"Ġshared\":6094,\"Ġpriv\":6095,\"_VAL\":6096,\"Ġsens\":6097,\"){\":6098,\"Ġremember\":6099,\"shared\":6100,\"element\":6101,\"Ġshoot\":6102,\"Vert\":6103,\"cout\":6104,\"Ġenv\":6105,\"_label\":6106,\"Ġ>Ċ\":6107,\"run\":6108,\"Ġscene\":6109,\"(array\":6110,\"device\":6111,\"_title\":6112,\"agon\":6113,\"]čĊ\":6114,\"aby\":6115,\"Ġbecame\":6116,\"boolean\":6117,\"Ġpark\":6118,\"ĠCode\":6119,\"upload\":6120,\"riday\":6121,\"ĠSeptember\":6122,\"Fe\":6123,\"Ġsen\":6124,\"cing\":6125,\"FL\":6126,\"Col\":6127,\"uts\":6128,\"_page\":6129,\"inn\":6130,\"Ġimplied\":6131,\"aling\":6132,\"Ġyourself\":6133,\".Count\":6134,\"conf\":6135,\"Ġaud\":6136,\"_init\":6137,\".)\":6138,\"Ġwrote\":6139,\"NG\":6140,\".Error\":6141,\"ä»\":6142,\".for\":6143,\"Ġequal\":6144,\"ĠRequest\":6145,\"Ġserial\":6146,\"Ġallows\":6147,\"XX\":6148,\"Ġmiddle\":6149,\"chor\":6150,\"Ã¸\":6151,\"erval\":6152,\".Column\":6153,\"reading\":6154,\"Ġescort\":6155,\"ĠAugust\":6156,\"Ġquickly\":6157,\"Ġweap\":6158,\"ĠCG\":6159,\"ropri\":6160,\"ho\":6161,\"Ġcop\":6162,\"(struct\":6163,\"ĠBig\":6164,\"Ġvs\":6165,\"Ġfrequ\":6166,\".Value\":6167,\"Ġactions\":6168,\"Ġproper\":6169,\"Ġinn\":6170,\"Ġobjects\":6171,\"Ġmatrix\":6172,\"avascript\":6173,\"Ġones\":6174,\".group\":6175,\"Ġgreen\":6176,\"Ġpaint\":6177,\"ools\":6178,\"ycl\":6179,\"encode\":6180,\"olt\":6181,\"comment\":6182,\".api\":6183,\"Dir\":6184,\"Ġune\":6185,\"izont\":6186,\".position\":6187,\"Ġdesigned\":6188,\"_val\":6189,\"avi\":6190,\"iring\":6191,\"tab\":6192,\"Ġlayer\":6193,\"Ġviews\":6194,\"Ġreve\":6195,\"rael\":6196,\"ĠON\":6197,\"rics\":6198,\"np\":6199,\"Ġcore\":6200,\"());čĊ\":6201,\"Main\":6202,\"Ġexpert\":6203,\"ĉĉčĊ\":6204,\"_en\":6205,\"Ġ/>\":6206,\"utter\":6207,\"IAL\":6208,\"ails\":6209,\"ĠKing\":6210,\"*/ĊĊ\":6211,\"ĠMet\":6212,\"_end\":6213,\"addr\":6214,\"ora\":6215,\"Ġir\":6216,\"Min\":6217,\"Ġsurpr\":6218,\"Ġrepe\":6219,\"Ġdirectory\":6220,\"PUT\":6221,\"-S\":6222,\"Ġelection\":6223,\"haps\":6224,\".pre\":6225,\"cm\":6226,\"Values\":6227,\"Ġ\\\"Ċ\":6228,\"column\":6229,\"ivil\":6230,\"Login\":6231,\"inue\":6232,\"Ġbeautiful\":6233,\"Ġsecret\":6234,\"(event\":6235,\"Ġchat\":6236,\"ums\":6237,\"Ġorigin\":6238,\"Ġeffects\":6239,\"Ġmanagement\":6240,\"illa\":6241,\"tk\":6242,\"Ġsetting\":6243,\"ĠCour\":6244,\"Ġmassage\":6245,\"ĉend\":6246,\"Ġhappy\":6247,\"Ġfinish\":6248,\"Ġcamera\":6249,\"ĠVer\":6250,\"ĠDemocr\":6251,\"ĠHer\":6252,\"(Q\":6253,\"cons\":6254,\"ita\":6255,\"Ġ'.\":6256,\"{}\":6257,\"ĉC\":6258,\"Ġstuff\":6259,\"Ġ:Ċ\":6260,\"ĠAR\":6261,\"Task\":6262,\"hidden\":6263,\"eros\":6264,\"IGN\":6265,\"atio\":6266,\"ĠHealth\":6267,\"olute\":6268,\"Enter\":6269,\"'>\":6270,\"ĠTwitter\":6271,\"ĠCounty\":6272,\"scribe\":6273,\"Ġ=>Ċ\":6274,\"Ġhy\":6275,\"fit\":6276,\"Ġmilitary\":6277,\"Ġsale\":6278,\"required\":6279,\"non\":6280,\"bootstrap\":6281,\"hold\":6282,\"rim\":6283,\"-old\":6284,\"ĠDown\":6285,\"Ġmention\":6286,\"contact\":6287,\"_group\":6288,\"oday\":6289,\"Ġtown\":6290,\"Ġsolution\":6291,\"uate\":6292,\"elling\":6293,\"]->\":6294,\"otes\":6295,\"ental\":6296,\"omen\":6297,\"ospital\":6298,\"ĠSup\":6299,\"_EN\":6300,\"Ġslow\":6301,\"SESSION\":6302,\"Ġblue\":6303,\"ago\":6304,\"Ġlives\":6305,\"Ġ^\":6306,\".un\":6307,\"inst\":6308,\"enge\":6309,\"Ġcustomers\":6310,\"Ġcast\":6311,\"udget\":6312,\"ï¼ģ\":6313,\"icens\":6314,\"Ġdetermin\":6315,\"Selected\":6316,\"_pl\":6317,\"ueue\":6318,\"Ġdark\":6319,\"//ĊĊ\":6320,\"si\":6321,\"thern\":6322,\"ĠJapan\":6323,\"/w\":6324,\"PU\":6325,\"ĠEast\":6326,\"ovie\":6327,\"Ġpackage\":6328,\"Ġnor\":6329,\"Ġapi\":6330,\"bot\":6331,\"\\\"];Ċ\":6332,\"_post\":6333,\"ulate\":6334,\"Ġclub\":6335,\"'));Ċ\":6336,\"Ġloop\":6337,\"PIO\":6338,\"ione\":6339,\"shot\":6340,\"Initial\":6341,\"Ġplayed\":6342,\"register\":6343,\"rought\":6344,\"_max\":6345,\"acement\":6346,\"match\":6347,\"raphics\":6348,\"AST\":6349,\"Ġexisting\":6350,\"Ġcomplex\":6351,\"DA\":6352,\".Ch\":6353,\".common\":6354,\"mo\":6355,\"Ġ'../../\":6356,\"ito\":6357,\"Ġanalysis\":6358,\"Ġdeliver\":6359,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":6360,\"idx\":6361,\"Ãł\":6362,\"ongo\":6363,\"ĠEnglish\":6364,\"<!--\":6365,\"Ġcomputer\":6366,\"ENSE\":6367,\"Ġpas\":6368,\"Ġrais\":6369,\"Hash\":6370,\"Ġmobile\":6371,\"Ġowner\":6372,\"FIG\":6373,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":6374,\"thes\":6375,\"Ġattr\":6376,\"wd\":6377,\".time\":6378,\"awn\":6379,\"Ġtreatment\":6380,\"ĠAc\":6381,\".View\":6382,\"impl\":6383,\"more\":6384,\"pass\":6385,\"Ġha\":6386,\".from\":6387,\"Ġleading\":6388,\"FFFF\":6389,\"(error\":6390,\".ui\":6391,\"atar\":6392,\"aders\":6393,\"dates\":6394,\"Ġzu\":6395,\"Ġflow\":6396,\"Target\":6397,\"Ġinvolved\":6398,\"Ġio\":6399,\"parse\":6400,\"$_\":6401,\"hest\":6402,\".int\":6403,\"-item\":6404,\"asy\":6405,\"Sp\":6406,\"Ġshift\":6407,\"NT\":6408,\"Ġtf\":6409,\"_TR\":6410,\".web\":6411,\"CS\":6412,\"Ġ})\":6413,\"Ġeyes\":6414,\"_z\":6415,\"');čĊ\":6416,\"iforn\":6417,\"Ġ{@\":6418,\"Ġnice\":6419,\".list\":6420,\"ĠĠĠĠčĊ\":6421,\"Ġfloor\":6422,\"Ġredirect\":6423,\"ĠUK\":6424,\"(['\":6425,\"Ġwish\":6426,\"Ġcapt\":6427,\"legal\":6428,\"ĠIO\":6429,\"Ġstage\":6430,\".String\":6431,\"ĠAfr\":6432,\"igen\":6433,\"ĠSH\":6434,\"Delete\":6435,\"ells\":6436,\"Ġsolid\":6437,\"Ġmeeting\":6438,\"Ġworked\":6439,\"Ġeditor\":6440,\"iny\":6441,\"Ð¼\":6442,\"_read\":6443,\".Id\":6444,\"eff\":6445,\"Offset\":6446,\"cha\":6447,\"USER\":6448,\"ĉĉĠĠĠ\":6449,\"ipped\":6450,\"Ġdict\":6451,\"ĠRun\":6452,\".hpp\":6453,\"Ġang\":6454,\"xml\":6455,\"imple\":6456,\"Ġmedical\":6457,\"_token\":6458,\"connect\":6459,\"Ġhour\":6460,\"Ġcontroller\":6461,\"_message\":6462,\"UID\":6463,\"Gr\":6464,\"anded\":6465,\"_CH\":6466,\"Ġbooks\":6467,\"Ġspeak\":6468,\"aming\":6469,\"Ġmount\":6470,\"Record\":6471,\"ĉstruct\":6472,\".Web\":6473,\"ondon\":6474,\"Ġ//Ċ\":6475,\"Ġfelt\":6476,\".Auto\":6477,\"idge\":6478,\"_pos\":6479,\"PR\":6480,\"Ġmodern\":6481,\"Collection\":6482,\"_msg\":6483,\"CD\":6484,\"ĠLo\":6485,\"Ġseconds\":6486,\"ibly\":6487,\".equals\":6488,\"Ġinternational\":6489,\"#pragma\":6490,\"ooth\":6491,\"Writer\":6492,\"iate\":6493,\"Ġcele\":6494,\"ĠBit\":6495,\"ivo\":6496,\"ivery\":6497,\"rd\":6498,\"HECK\":6499,\"Ġcache\":6500,\".count\":6501,\"Ġroll\":6502,\".Read\":6503,\"RED\":6504,\"Ġsetup\":6505,\"izontal\":6506,\"models\":6507,\"argv\":6508,\"Ġconsidered\":6509,\"=\\\"../\":6510,\"settings\":6511,\"ĠRel\":6512,\"Ġgrowth\":6513,\"Ġmix\":6514,\"ĠWashington\":6515,\"Ġplt\":6516,\"ĠIM\":6517,\"áº\":6518,\"Ġturned\":6519,\"ĠDateTime\":6520,\"ĠWed\":6521,\"(url\":6522,\"Ġ\\\"-\":6523,\"Ġletter\":6524,\"Async\":6525,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":6526,\"ĠOctober\":6527,\"_line\":6528,\"Ġattention\":6529,\"Ġcollect\":6530,\"ĠHash\":6531,\"Ġimag\":6532,\"Tree\":6533,\"Ġsituation\":6534,\"ette\":6535,\"_no\":6536,\"IVE\":6537,\"Ġvon\":6538,\".target\":6539,\"Ġknowledge\":6540,\"Ġdrive\":6541,\".post\":6542,\"Ġblood\":6543,\"Ġcit\":6544,\"primary\":6545,\"Ġconfiguration\":6546,\"tee\":6547,\"Ġphoto\":6548,\"isode\":6549,\"Trace\":6550,\"Ġgave\":6551,\"Ġshot\":6552,\"ĠAir\":6553,\"Ġmother\":6554,\"price\":6555,\"Ġmorning\":6556,\")){Ċ\":6557,\"-x\":6558,\"Ġtrade\":6559,\"Ġdesc\":6560,\"Ġ&&Ċ\":6561,\"Ġparents\":6562,\"Api\":6563,\"åĪ\":6564,\"ted\":6565,\"wer\":6566,\"Ġæ\":6567,\"Ġsy\":6568,\"ĠKe\":6569,\"Parser\":6570,\"åħ\":6571,\"ancy\":6572,\"Ġpiece\":6573,\"ifornia\":6574,\"toString\":6575,\"ran\":6576,\"iding\":6577,\"PTION\":6578,\"comes\":6579,\"/lic\":6580,\".client\":6581,\"El\":6582,\"Long\":6583,\"Ġprofessional\":6584,\"rupt\":6585,\"va\":6586,\"Ġcompletely\":6587,\"Ġpractice\":6588,\"Ġselection\":6589,\"Rem\":6590,\"ini\":6591,\"Ġcam\":6592,\"REE\":6593,\"Ġsites\":6594,\"pa\":6595,\"ATUS\":6596,\"ÑģÑĤ\":6597,\"arrant\":6598,\"*(\":6599,\"_KEY\":6600,\"ĠButton\":6601,\"ĠFriday\":6602,\"sequ\":6603,\"Ġreader\":6604,\"Ġmessages\":6605,\"è¯\":6606,\"Ġbuf\":6607,\"Ke\":6608,\"Ġnov\":6609,\"HP\":6610,\"Msg\":6611,\"align\":6612,\"arily\":6613,\"Ġ',\":6614,\"_with\":6615,\"Ġdas\":6616,\"Ġheard\":6617,\"atomic\":6618,\"rial\":6619,\")[\":6620,\"Ġdise\":6621,\"@end\":6622,\"Ġgold\":6623,\"Ġfair\":6624,\"Ġsales\":6625,\".Button\":6626,\"strict\":6627,\"save\":6628,\"Ġmeasure\":6629,\"Ġ\\\"+\":6630,\"ecause\":6631,\"ViewController\":6632,\"ĠTable\":6633,\".param\":6634,\"Ġdecided\":6635,\"(((\":6636,\"INFO\":6637,\"Ġopportunity\":6638,\"Te\":6639,\"ICENSE\":6640,\"ccording\":6641,\"ki\":6642,\"ĠUN\":6643,\"Ġcontain\":6644,\"Ġmanager\":6645,\"Ġpain\":6646,\"ĠFire\":6647,\"rome\":6648,\"Ġplans\":6649,\"Found\":6650,\"lay\":6651,\"ĠDecember\":6652,\"Ġinflu\":6653,\"Ãº\":6654,\"rench\":6655,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":6656,\"azing\":6657,\"brief\":6658,\"call\":6659,\"wood\":6660,\"Ġloaded\":6661,\"Ġgrand\":6662,\"/f\":6663,\"imp\":6664,\"_U\":6665,\"STR\":6666,\"âĢ¢\":6667,\"Ġcredit\":6668,\".Color\":6669,\"orge\":6670,\"QUEST\":6671,\"Ġdifference\":6672,\"ĠPC\":6673,\"wargs\":6674,\"Ġpub\":6675,\"unday\":6676,\"Ġfra\":6677,\".max\":6678,\"Ġtried\":6679,\"annels\":6680,\"send\":6681,\"Ġreports\":6682,\"Ġadult\":6683,\"äº\":6684,\"Ġconsist\":6685,\"ĠStreet\":6686,\"ĠProgram\":6687,\"SQL\":6688,\"Matrix\":6689,\"ouncil\":6690,\"-A\":6691,\"ĉw\":6692,\"Ġwhose\":6693,\"Ġrelig\":6694,\"ĠSex\":6695,\"Ġgives\":6696,\"none\":6697,\".message\":6698,\"(G\":6699,\".awt\":6700,\"-right\":6701,\"ĠNovember\":6702,\"ellig\":6703,\"utive\":6704,\"Äĥ\":6705,\"overn\":6706,\"Ġeasily\":6707,\"Ġideas\":6708,\"ĠÐ½\":6709,\"/css\":6710,\"lying\":6711,\"elle\":6712,\"Can\":6713,\"_color\":6714,\"Ð¾Ð²\":6715,\"Ġpair\":6716,\"ngth\":6717,\"Ġsplit\":6718,\"drop\":6719,\"arty\":6720,\"ona\":6721,\"Ġcapital\":6722,\"Ġhear\":6723,\"Ġexists\":6724,\"ĉlog\":6725,\"emo\":6726,\"Run\":6727,\"oi\":6728,\"Ġparser\":6729,\"ĠMethod\":6730,\"Ġeducation\":6731,\"[k\":6732,\"Ġlibrary\":6733,\">\\\";Ċ\":6734,\"_UN\":6735,\"ĉstd\":6736,\"oded\":6737,\"Ġcalls\":6738,\"here\":6739,\"Rel\":6740,\"Ġbrand\":6741,\"background\":6742,\"ga\":6743,\"_address\":6744,\"_params\":6745,\"Category\":6746,\"ĠIndia\":6747,\"_event\":6748,\"Ġing\":6749,\"Render\":6750,\".cl\":6751,\"umpy\":6752,\"Ġpet\":6753,\"FC\":6754,\"ĠAnt\":6755,\"Ext\":6756,\"Ġcharge\":6757,\"ened\":6758,\"grad\":6759,\"EO\":6760,\"Ġdepend\":6761,\"Ġ.ĊĊ\":6762,\"frame\":6763,\"Ġdf\":6764,\"Ġhuge\":6765,\"ĠPART\":6766,\"eds\":6767,\";;\":6768,\"ĠAM\":6769,\"Ġbasic\":6770,\"ĠLet\":6771,\"lich\":6772,\"Ġarm\":6773,\"Ġstar\":6774,\"Ġfederal\":6775,\"Work\":6776,\"Ġcarry\":6777,\"ĠIsrael\":6778,\"(obj\":6779,\"={{\":6780,\"Ġsaved\":6781,\"Ġsyn\":6782,\"Ġconstant\":6783,\"VENT\":6784,\"Ġpositive\":6785,\"Ġconduct\":6786,\"Ġskin\":6787,\"Ġearlier\":6788,\"Ġlayout\":6789,\"ĠIP\":6790,\"OUR\":6791,\"Ġtim\":6792,\"stylesheet\":6793,\"_cl\":6794,\"ĠCard\":6795,\"++){Ċ\":6796,\"Ġtemper\":6797,\"ĠDavid\":6798,\"ĉtry\":6799,\".dart\":6800,\"Ġwants\":6801,\"Ġpicture\":6802,\"Ġvideos\":6803,\"ĠComm\":6804,\"isions\":6805,\"_MAX\":6806,\"Mapping\":6807,\"-content\":6808,\"ĠEar\":6809,\"-de\":6810,\"Ġprem\":6811,\"bruary\":6812,\"Ġcomponents\":6813,\"Ġthroughout\":6814,\"Ġpull\":6815,\"Ġpages\":6816,\"ente\":6817,\"respond\":6818,\"Ġgas\":6819,\"criptor\":6820,\"Ġedge\":6821,\"Ġbound\":6822,\"ACT\":6823,\"******\":6824,\"Ġcreating\":6825,\"ĠCH\":6826,\"Ġnullptr\":6827,\"Br\":6828,\"+'\":6829,\".co\":6830,\">::\":6831,\"Ġlearning\":6832,\".Length\":6833,\"_SH\":6834,\"Ġpatients\":6835,\"AIN\":6836,\"Ġkids\":6837,\"Ġcomfort\":6838,\"Ġshown\":6839,\"ugins\":6840,\"ĠBack\":6841,\"ella\":6842,\"_CL\":6843,\"Ġlat\":6844,\"Ġdispatch\":6845,\"Ġclasses\":6846,\".at\":6847,\".begin\":6848,\"Ġsuccessful\":6849,\"ban\":6850,\"Ġobtain\":6851,\"ĠSl\":6852,\"Ġlack\":6853,\"iterator\":6854,\"Thread\":6855,\"(size\":6856,\"Ġnone\":6857,\".has\":6858,\"_X\":6859,\"sort\":6860,\"nap\":6861,\"pet\":6862,\"bin\":6863,\"ĠCanada\":6864,\"They\":6865,\"Ġdans\":6866,\"ĠMat\":6867,\"<td\":6868,\"Ġhair\":6869,\"Ġ'',Ċ\":6870,\"Ġcu\":6871,\"Ġlaws\":6872,\"leted\":6873,\"ped\":6874,\"Ġpow\":6875,\"Ġknew\":6876,\"_COM\":6877,\"_,\":6878,\"ĠMag\":6879,\"idents\":6880,\"(req\":6881,\"Ġ),\":6882,\"-center\":6883,\"Ġwide\":6884,\"ĠAuthor\":6885,\"stants\":6886,\"Ġjobs\":6887,\"Ġmath\":6888,\"etimes\":6889,\"Boolean\":6890,\"Ġscope\":6891,\"_is\":6892,\"Ġmeas\":6893,\"Ġkeys\":6894,\"elay\":6895,\"Ġexactly\":6896,\"'=>'\":6897,\"ĠPaul\":6898,\"mas\":6899,\"ĉprint\":6900,\"(len\":6901,\"fd\":6902,\"Ġ);\":6903,\".Event\":6904,\"qli\":6905,\"irit\":6906,\"ields\":6907,\"oman\":6908,\"ĠTop\":6909,\"Ġvote\":6910,\"Ġmask\":6911,\"Ġtheme\":6912,\"-Ċ\":6913,\"Ġprops\":6914,\"Ġfine\":6915,\"Ġwriter\":6916,\"_offset\":6917,\"car\":6918,\"Ġaltern\":6919,\"Ġcopyright\":6920,\"Ġdestroy\":6921,\"pper\":6922,\"Ġgenerate\":6923,\"pped\":6924,\"âĢĻd\":6925,\"ĠĠĠĠĠĠĊ\":6926,\"make\":6927,\"ĠShow\":6928,\"Ġbrowser\":6929,\"Ġfavorite\":6930,\"Ġcareer\":6931,\"Ġhappened\":6932,\"(char\":6933,\"Ġrecommend\":6934,\"Ġliter\":6935,\".filter\":6936,\"grade\":6937,\"ĠÂ£\":6938,\"Phone\":6939,\"oms\":6940,\"Ġnamed\":6941,\"-label\":6942,\"ipo\":6943,\"ĠOther\":6944,\"Ġpanel\":6945,\"Ġrock\":6946,\"Scale\":6947,\"ĉassert\":6948,\"Ð´\":6949,\"Ġtrust\":6950,\"front\":6951,\"Ġdemon\":6952,\"Ar\":6953,\"Net\":6954,\"Ġeconomic\":6955,\"footer\":6956,\"Ġrace\":6957,\"(node\":6958,\"ĠOption\":6959,\"split\":6960,\"Ġphysical\":6961,\"ifest\":6962,\"Ġremoved\":6963,\".http\":6964,\")),Ċ\":6965,\"Ġlooked\":6966,\"';\":6967,\"ding\":6968,\"gest\":6969,\"aturday\":6970,\"/licenses\":6971,\"Price\":6972,\"Ġdro\":6973,\"Ġtowards\":6974,\"Ġuns\":6975,\"ĠCL\":6976,\"ĉstatic\":6977,\"Ġrows\":6978,\"Ġdefine\":6979,\".replace\":6980,\"Ġfather\":6981,\"ĠDesign\":6982,\"assign\":6983,\"mut\":6984,\"Device\":6985,\"Did\":6986,\"'))Ċ\":6987,\"ometry\":6988,\"ayload\":6989,\"Ġhistor\":6990,\"ĠParam\":6991,\"ĠBoolean\":6992,\"Ġnature\":6993,\"Ġjs\":6994,\"Ġnation\":6995,\"ih\":6996,\"Ġdiscover\":6997,\"sem\":6998,\"Handle\":6999,\"ĉr\":7000,\"ĠTechn\":7001,\"Ġwall\":7002,\"{$\":7003,\"@property\":7004,\"Ġ\\\"../\":7005,\"Ġexam\":7006,\".draw\":7007,\"opping\":7008,\"Ġnearly\":7009,\"Ġcool\":7010,\"Ġindepend\":7011,\"RES\":7012,\"Ġhandler\":7013,\"ĠMonday\":7014,\"Ġsun\":7015,\"Styles\":7016,\"ously\":7017,\"Ġĉ\":7018,\"vest\":7019,\"Display\":7020,\"(y\":7021,\"atically\":7022,\"Ġpredict\":7023,\"ying\":7024,\"Ġsometimes\":7025,\"\\\"]Ċ\":7026,\"Ġdrink\":7027,\"Ġbul\":7028,\"ifications\":7029,\".insert\":7030,\".reg\":7031,\"Ġtests\":7032,\"Alignment\":7033,\"Ġalleg\":7034,\"Ġattribute\":7035,\"ĠNote\":7036,\"Ġmyself\":7037,\"arts\":7038,\"Now\":7039,\"Ġinteresting\":7040,\"lients\":7041,\"Ġpopulation\":7042,\"ĠCalifornia\":7043,\"\\\"I\":7044,\"å¹\":7045,\"Ġgreater\":7046,\"uesday\":7047,\"Ġthous\":7048,\"Ġcosts\":7049,\"Ġlaunch\":7050,\"\\\\Http\":7051,\"ker\":7052,\"band\":7053,\"ĠPlay\":7054,\"Ġband\":7055,\".shape\":7056,\"esome\":7057,\"article\":7058,\".rf\":7059,\"Ġwer\":7060,\"Ã¡s\":7061,\"embers\":7062,\"usr\":7063,\"BA\":7064,\"ican\":7065,\"ett\":7066,\"validate\":7067,\"ulti\":7068,\"Ġimmediately\":7069,\"zer\":7070,\"Ġfigure\":7071,\"oes\":7072,\"eller\":7073,\"ircle\":7074,\"ĠSign\":7075,\".db\":7076,\"Ġrank\":7077,\"Bytes\":7078,\"Ġprojects\":7079,\"_rec\":7080,\"ULAR\":7081,\"API\":7082,\"ĠLine\":7083,\"Port\":7084,\"Ġpoll\":7085,\"Ġgiving\":7086,\"idence\":7087,\"--Ċ\":7088,\"Ġplot\":7089,\"icial\":7090,\"Ġwarrant\":7091,\"ITION\":7092,\"ĠDouble\":7093,\"Ġbillion\":7094,\"gorithm\":7095,\"Ġequipment\":7096,\"DATE\":7097,\"Ġ@\\\"\":7098,\"EE\":7099,\"Ġple\":7100,\"iation\":7101,\"Ġheaders\":7102,\"Ġproced\":7103,\".ComponentModel\":7104,\"ĠObama\":7105,\"Ġpa\":7106,\"ĠBest\":7107,\"imately\":7108,\".getString\":7109,\".\\\\\":7110,\"mploy\":7111,\"Ġraw\":7112,\"_block\":7113,\"undred\":7114,\"\\\"},Ċ\":7115,\".GroupLayout\":7116,\"Ġbrought\":7117,\"NSString\":7118,\"throw\":7119,\"created\":7120,\".New\":7121,\"_view\":7122,\"CP\":7123,\"eps\":7124,\"Op\":7125,\"Ġgratis\":7126,\"Ġ'\\\"\":7127,\"Ġinterview\":7128,\"\\\"\\\"\\\"Ċ\":7129,\"Ġpartial\":7130,\"Ġaria\":7131,\"bing\":7132,\"Author\":7133,\"Book\":7134,\"ĠPat\":7135,\"uman\":7136,\"Users\":7137,\"plus\":7138,\"ĠDirect\":7139,\"venue\":7140,\"alpha\":7141,\"UCCESS\":7142,\"ĠCall\":7143,\"Ġ);čĊ\":7144,\"imated\":7145,\"Ġremain\":7146,\"Ġanti\":7147,\"ĠLondon\":7148,\"Ġsafety\":7149,\"POSE\":7150,\"oles\":7151,\"controller\":7152,\"Byte\":7153,\"ĠCourt\":7154,\"ĠPhil\":7155,\"ĠAssoci\":7156,\"ena\":7157,\"åĲ\":7158,\"_STR\":7159,\"coin\":7160,\"reshold\":7161,\"Ġbatch\":7162,\"_Click\":7163,\"entication\":7164,\">';Ċ\":7165,\"enty\":7166,\"Ġbeginning\":7167,\"Ġzero\":7168,\"ĠConvert\":7169,\"Ġterr\":7170,\"Ġpaid\":7171,\"Ġincreased\":7172,\"catch\":7173,\"-size\":7174,\"activity\":7175,\"equals\":7176,\"Ġqueue\":7177,\"Ġ\\\"'\":7178,\"ĠInternational\":7179,\"ĠfÃ¼r\":7180,\"ursday\":7181,\"Ġscient\":7182,\"allow\":7183,\"axis\":7184,\"Ġappropri\":7185,\"edge\":7186,\"Ġidx\":7187,\"Success\":7188,\"entifier\":7189,\":\\\\\":7190,\"xis\":7191,\"Ġmaximum\":7192,\"arks\":7193,\"Ġbirth\":7194,\"(index\":7195,\"Ġmaybe\":7196,\".py\":7197,\"files\":7198,\"Ġlimited\":7199,\"_check\":7200,\"look\":7201,\"plies\":7202,\"Ġmovement\":7203,\"'].\":7204,\"Ġbroad\":7205,\"ĠBE\":7206,\"ĠUnityEngine\":7207,\".cpp\":7208,\"ĠEvery\":7209,\"Admin\":7210,\"Ġfans\":7211,\"pared\":7212,\"ĊĠĠĠĠĊ\":7213,\"Ġforeign\":7214,\"Ġpan\":7215,\"Ġtour\":7216,\"ĠOrder\":7217,\"Ġmoving\":7218,\"Ġauf\":7219,\"Call\":7220,\"cb\":7221,\"ÅŁ\":7222,\"ventory\":7223,\"ĠSql\":7224,\"Ġfully\":7225,\"ClickListener\":7226,\"WORD\":7227,\"Ġannounced\":7228,\")čĊčĊ\":7229,\"Ġagreed\":7230,\"rie\":7231,\"Ġearn\":7232,\"_link\":7233,\".array\":7234,\"(text\":7235,\"Ġmaterials\":7236,\",p\":7237,\"ffff\":7238,\"vg\":7239,\"ĠÂ©\":7240,\"Ġunless\":7241,\"ajax\":7242,\"LOG\":7243,\"Ġsexual\":7244,\"Ġ\\\\\\\"\":7245,\"-time\":7246,\"Ġcoach\":7247,\"Ġsupported\":7248,\"Ġphotos\":7249,\"iform\":7250,\".Create\":7251,\")]\":7252,\"rier\":7253,\"Ġdialog\":7254,\"aver\":7255,\"ige\":7256,\")+\":7257,\"_idx\":7258,\":[\":7259,\"_min\":7260,\"ĠCong\":7261,\"Ġpressure\":7262,\"Ġteams\":7263,\"Sign\":7264,\"begin\":7265,\"rian\":7266,\"NESS\":7267,\"LS\":7268,\"Ġimprove\":7269,\"ĠSunday\":7270,\"Ġdefinition\":7271,\"iger\":7272,\"rollers\":7273,\"Ġthinking\":7274,\"Template\":7275,\"-F\":7276,\"Ġemerg\":7277,\"plates\":7278,\"ĠUSA\":7279,\".setState\":7280,\"ĠAlso\":7281,\"rev\":7282,\"Ġenable\":7283,\"ĠCO\":7284,\"PECT\":7285,\"Ġconcept\":7286,\")-\":7287,\"ĠâĢ¢\":7288,\"Ġsets\":7289,\"Ġmeaning\":7290,\"emon\":7291,\"ĠCons\":7292,\"cmp\":7293,\"eder\":7294,\"anned\":7295,\"icensed\":7296,\"ĠSuper\":7297,\"Ġdaily\":7298,\"Ġmulti\":7299,\"_u\":7300,\"Ġchalleng\":7301,\"_mode\":7302,\"ĠPromise\":7303,\"Ġstrict\":7304,\"jo\":7305,\"inton\":7306,\"(list\":7307,\"Only\":7308,\">{\":7309,\"Ġvehicle\":7310,\"íķ\":7311,\"ĠPlayer\":7312,\"ĠDel\":7313,\"Ġpool\":7314,\".url\":7315,\"nesday\":7316,\"();čĊčĊ\":7317,\"Ġ\\\");Ċ\":7318,\"Local\":7319,\".\\\");Ċ\":7320,\"Ġorganization\":7321,\"render\":7322,\"ĠApplication\":7323,\"Ġsummer\":7324,\"expected\":7325,\"NA\":7326,\"Ġrap\":7327,\"_obj\":7328,\"Ġsurface\":7329,\"ĠPUR\":7330,\"Ġ},ĊĊ\":7331,\"Ġvariables\":7332,\"(message\":7333,\"Ġopin\":7334,\".back\":7335,\"Ð°Ð½\":7336,\"Ġworkers\":7337,\"vm\":7338,\"Co\":7339,\"ughter\":7340,\"Ġmaster\":7341,\"Ġ\\\"\\\",\":7342,\"Ġstories\":7343,\".User\":7344,\"Ġcelebr\":7345,\"inese\":7346,\"BS\":7347,\"ĠCommand\":7348,\"ashboard\":7349,\"Ġog\":7350,\"kg\":7351,\".image\":7352,\".style\":7353,\"Ġsteps\":7354,\"ĠBen\":7355,\"(args\":7356,\"ĠPerson\":7357,\",y\":7358,\"Ġofficials\":7359,\"|Ċ\":7360,\"Ġskills\":7361,\"vc\":7362,\"Ġbuilder\":7363,\"Ġgar\":7364,\"Account\":7365,\"ĠAuth\":7366,\"çĶ\":7367,\"'])Ċ\":7368,\"ĠAT\":7369,\"nn\":7370,\".Int\":7371,\"SSERT\":7372,\"Ġeffective\":7373,\"LETE\":7374,\"Ġtools\":7375,\"ARD\":7376,\"Ġdigital\":7377,\"Double\":7378,\"ĠFind\":7379,\"RC\":7380,\"Ġinline\":7381,\"/r\":7382,\"ARAM\":7383,\"ASK\":7384,\"Ġintent\":7385,\"aight\":7386,\"_addr\":7387,\"Ġrequests\":7388,\".first\":7389,\"Ġdebug\":7390,\"Ġspent\":7391,\"()));Ċ\":7392,\"ÅĽ\":7393,\"Ġprincip\":7394,\"Logger\":7395,\"cludes\":7396,\".use\":7397,\"Ġsurv\":7398,\"media\":7399,\"ĠFebruary\":7400,\"ĠMac\":7401,\"Ġmissing\":7402,\"Ġwife\":7403,\"Ġtalking\":7404,\"ĠMake\":7405,\"Ġcart\":7406,\"Ġlocated\":7407,\"Enc\":7408,\"-a\":7409,\"chron\":7410,\"Ġcards\":7411,\"Ġguy\":7412,\"Ġpers\":7413,\"ĠYes\":7414,\"atever\":7415,\"ĠAng\":7416,\"olar\":7417,\"ĠEven\":7418,\"Ġaccur\":7419,\"ĠPower\":7420,\"ĠGold\":7421,\"clear\":7422,\"Process\":7423,\"Ġrecords\":7424,\"Ġkilled\":7425,\".clear\":7426,\"ĠWARRANTIES\":7427,\"Ġpurpose\":7428,\"panel\":7429,\"JECT\":7430,\"ÃŃa\":7431,\"Ġexerc\":7432,\"WS\":7433,\"/L\":7434,\".exports\":7435,\"Ġ___\":7436,\"Ġsin\":7437,\"Servlet\":7438,\"ĠdÃ©\":7439,\".delete\":7440,\"roke\":7441,\"Sl\":7442,\"ugh\":7443,\"ears\":7444,\"Ġpointer\":7445,\"Ġhop\":7446,\"allery\":7447,\"Ġobs\":7448,\"covery\":7449,\"ĉchar\":7450,\"ĉĉĉĉĉĉĉĉĉĉ\":7451,\"ĉdef\":7452,\"ocity\":7453,\"itchen\":7454,\"ulations\":7455,\"ĠFIT\":7456,\"Ġ).\":7457,\"straints\":7458,\"vention\":7459,\"Ġrequires\":7460,\"ĠOper\":7461,\"ME\":7462,\"OUNT\":7463,\"allet\":7464,\"Ġnorm\":7465,\"IRE\":7466,\"exas\":7467,\"Ġprograms\":7468,\"Ġweak\":7469,\"'.$\":7470,\"uing\":7471,\"ĉĠĠĠĠĠĠĠ\":7472,\"Ġmil\":7473,\"Ġfirm\":7474,\"initely\":7475,\"_VALUE\":7476,\"apse\":7477,\"atisf\":7478,\"Ġdemand\":7479,\"_mod\":7480,\"Ġdescribed\":7481,\"Ġplaces\":7482,\"VID\":7483,\"Ġalone\":7484,\"Ġexport\":7485,\"Ġvec\":7486,\"ĠMax\":7487,\"Ġactivities\":7488,\"ictures\":7489,\"gener\":7490,\"Ġma\":7491,\"Ĥ¬\":7492,\"Ġexpression\":7493,\"Callback\":7494,\"_content\":7495,\"ĠMost\":7496,\"Ġtesting\":7497,\"EC\":7498,\"CHANT\":7499,\"Ġadjust\":7500,\".Threading\":7501,\"(ctx\":7502,\"Ġagree\":7503,\"ighest\":7504,\"Ġui\":7505,\"ĠLaw\":7506,\".Y\":7507,\"><?\":7508,\"Ġpod\":7509,\"-lg\":7510,\"âĢĿĊĊ\":7511,\"Ġdescribe\":7512,\"ĠEuropean\":7513,\"-sh\":7514,\"ĠPURPOSE\":7515,\"ORY\":7516,\"Ġconvers\":7517,\"ĠIlluminate\":7518,\"ĠAv\":7519,\"(ch\":7520,\"?\\\"\":7521,\"chen\":7522,\"ima\":7523,\"Document\":7524,\"Ġoperations\":7525,\"win\":7526,\"ĉfunction\":7527,\".Image\":7528,\"Ġscen\":7529,\"/h\":7530,\"ĠSC\":7531,\"Ġexplo\":7532,\":%\":7533,\"/**čĊ\":7534,\"NAME\":7535,\"æĪ\":7536,\"(var\":7537,\"Ġdirector\":7538,\"ONG\":7539,\"Ġyield\":7540,\"Ġfeet\":7541,\"ĠSearch\":7542,\"ĠIl\":7543,\"Ġrestaur\":7544,\"duc\":7545,\"Ġinteger\":7546,\"Ġ'';Ċ\":7547,\"Ġhighly\":7548,\"checked\":7549,\"ĠPARTIC\":7550,\"ERCHANT\":7551,\"ï¼ī\":7552,\"Ġoptim\":7553,\"Queue\":7554,\"ĠLI\":7555,\"itation\":7556,\"Ġtransport\":7557,\"ission\":7558,\"fill\":7559,\"usion\":7560,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":7561,\"ĉbool\":7562,\"-th\":7563,\"upt\":7564,\"Ġessential\":7565,\"anted\":7566,\"Ġbenefits\":7567,\"ĉS\":7568,\"';čĊ\":7569,\"iki\":7570,\"Ġgirls\":7571,\"iced\":7572,\"buffer\":7573,\"]+\":7574,\"Ġsocket\":7575,\"Ġprices\":7576,\"ĠFre\":7577,\"Ġsat\":7578,\"Ġwood\":7579,\"MenuItem\":7580,\"ARG\":7581,\"ĠAdmin\":7582,\"OWN\":7583,\"dk\":7584,\"Ġreset\":7585,\"Ġforms\":7586,\"ĠÐ¸\":7587,\"æĸ\":7588,\"ĠTuesday\":7589,\"ĠInitialized\":7590,\"_train\":7591,\"orary\":7592,\"ategor\":7593,\"Ġdt\":7594,\"Total\":7595,\"construct\":7596,\"ilies\":7597,\"Ġguys\":7598,\"ÐµÑĢ\":7599,\"Ġinstruction\":7600,\"yled\":7601,\"Ġinternet\":7602,\"etadata\":7603,\"ady\":7604,\"faces\":7605,\"jection\":7606,\"ĠJack\":7607,\"Ġrect\":7608,\"[-\":7609,\"ĠLeg\":7610,\"Ġdevices\":7611,\"OC\":7612,\"Ġ*čĊ\":7613,\"oration\":7614,\"ertain\":7615,\"Ġguard\":7616,\"ostream\":7617,\"Ġenum\":7618,\".layout\":7619,\"Ġ\\\";Ċ\":7620,\"voke\":7621,\"ĠOk\":7622,\"Home\":7623,\"(tr\":7624,\"ETH\":7625,\"Ġdelay\":7626,\"Ġpurchase\":7627,\"dc\":7628,\"Ġaren\":7629,\"_once\":7630,\"ĉĉĉĉĊ\":7631,\"ror\":7632,\"draw\":7633,\".run\":7634,\"(model\":7635,\"Timeout\":7636,\"lik\":7637,\"ĠArg\":7638,\".en\":7639,\"Ġfish\":7640,\"cpy\":7641,\"_fe\":7642,\"ERCHANTABILITY\":7643,\"(X\":7644,\"_output\":7645,\"??\":7646,\"Ġjo\":7647,\"andard\":7648,\"Ġdoll\":7649,\"errors\":7650,\"_base\":7651,\"ĠPARTICULAR\":7652,\"Ġleader\":7653,\"Ġcompar\":7654,\"Ġdoub\":7655,\"ĠVis\":7656,\"StackTrace\":7657,\"-C\":7658,\"ĠStud\":7659,\"stitute\":7660,\"More\":7661,\"ĠDescription\":7662,\"WARE\":7663,\"ads\":7664,\"ĠÐº\":7665,\"bind\":7666,\"=self\":7667,\"employ\":7668,\"[n\":7669,\".all\":7670,\"-B\":7671,\"&&\":7672,\"alm\":7673,\"Ġculture\":7674,\"house\":7675,\"Ġsuffer\":7676,\"Ġ'%\":7677,\"Ġstraight\":7678,\"ĠStar\":7679,\"udo\":7680,\"Ġded\":7681,\"ĠCOM\":7682,\"Ġconfirm\":7683,\"ĠGood\":7684,\".sc\":7685,\"________________\":7686,\"DR\":7687,\"Configuration\":7688,\"DateTime\":7689,\"Ġadvert\":7690,\"Ġcouldn\":7691,\"async\":7692,\"stack\":7693,\"')čĊ\":7694,\"Kit\":7695,\"Ġhous\":7696,\"Ġmechan\":7697,\"rate\":7698,\"Ġaudio\":7699,\"ĉcout\":7700,\"cores\":7701,\"Ġspot\":7702,\"Ġincreasing\":7703,\"Ġ##\":7704,\")))\":7705,\"points\":7706,\"Ġcompared\":7707,\"lig\":7708,\"Ġbehavior\":7709,\"ĠBY\":7710,\"ĠAtt\":7711,\"craft\":7712,\"headers\":7713,\"ete\":7714,\"endregion\":7715,\"Ġdetail\":7716,\"ULE\":7717,\"ĠCommon\":7718,\"ĉprotected\":7719,\"ston\":7720,\"ĠFITNESS\":7721,\"Ġfresh\":7722,\"\\\">ĊĊ\":7723,\".example\":7724,\"berg\":7725,\"Ġmoved\":7726,\"ĉe\":7727,\"ĠSaturday\":7728,\"Ġpayload\":7729,\"Äĩ\":7730,\"):ĊĊ\":7731,\"Ġbey\":7732,\"urer\":7733,\"<script\":7734,\"Ġsymbol\":7735,\"Ġassum\":7736,\"Ġpul\":7737,\"Effect\":7738,\"Ġhundred\":7739,\"Tool\":7740,\"aked\":7741,\"connection\":7742,\"Ġvoice\":7743,\"Ġpd\":7744,\"Ġtransaction\":7745,\"Ġlinks\":7746,\"Err\":7747,\"ĠIndian\":7748,\"TC\":7749,\"atalog\":7750,\"ni\":7751,\"sign\":7752,\"<<\\\"\":7753,\"ji\":7754,\"ya\":7755,\"Ġdemonstr\":7756,\"ulated\":7757,\".St\":7758,\"Ġinstit\":7759,\"Ġboost\":7760,\"Ġcells\":7761,\"olic\":7762,\".Pro\":7763,\":</\":7764,\"EventListener\":7765,\"ifying\":7766,\"ĠDi\":7767,\"orrow\":7768,\".execute\":7769,\"Ġcollege\":7770,\"Your\":7771,\"Ġlargest\":7772,\".dis\":7773,\"Ġqui\":7774,\"Ġindividuals\":7775,\"_buffer\":7776,\"Ġng\":7777,\"SA\":7778,\"ĠControl\":7779,\"Ġsing\":7780,\"Ġsuit\":7781,\"ĠĠĠĠĉ\":7782,\"SG\":7783,\"Ġjump\":7784,\"Ġsmart\":7785,\"oma\":7786,\"ĠExp\":7787,\"Ġ'-\":7788,\"Ġassist\":7789,\"Ġsuccessfully\":7790,\"sys\":7791,\"ĠCre\":7792,\"_ref\":7793,\"ĠThursday\":7794,\"Ġbur\":7795,\"ĠÐ´\":7796,\"Ġbeyond\":7797,\"Ġnodes\":7798,\"Details\":7799,\"inct\":7800,\"ĠJames\":7801,\"Ġaffect\":7802,\"exception\":7803,\"Ġtypeof\":7804,\"(čĊ\":7805,\"-se\":7806,\"Ġfetch\":7807,\"`,\":7808,\"Ġcrusher\":7809,\"}.\":7810,\"ĠBO\":7811,\"Show\":7812,\"Ġrates\":7813,\"Ġbon\":7814,\"-icon\":7815,\"ĠMedia\":7816,\"RESS\":7817,\"ĠValid\":7818,\"Ð¾Ð»\":7819,\"Ġfuck\":7820,\"acks\":7821,\"Ġstudies\":7822,\"Me\":7823,\"Ġowners\":7824,\"}else\":7825,\"Ġgrowing\":7826,\"Variable\":7827,\"ĠBel\":7828,\".random\":7829,\"vement\":7830,\"onym\":7831,\"(F\":7832,\"ĠFALSE\":7833,\"Ġtorch\":7834,\"(row\":7835,\"igo\":7836,\"structure\":7837,\"Ġcertainly\":7838,\"Dep\":7839,\"ĠGreen\":7840,\"question\":7841,\"Ġadding\":7842,\"ĠDevelop\":7843,\"_def\":7844,\"Ġmach\":7845,\"=%\":7846,\"ĉĉĠ\":7847,\"conds\":7848,\"Project\":7849,\"Ġreject\":7850,\"ĠÎ\":7851,\"Ġpoor\":7852,\"Ġaware\":7853,\"ĠBuild\":7854,\"ĠBritish\":7855,\"ĠNE\":7856,\"Ġnumer\":7857,\"rees\":7858,\"claim\":7859,\"Ġmock\":7860,\"Ġom\":7861,\"Ġscre\":7862,\"OLD\":7863,\".pl\":7864,\"eler\":7865,\"Ġcorrespond\":7866,\"_HE\":7867,\"Ġbinary\":7868,\"_order\":7869,\"ĠSQL\":7870,\"Ġadvant\":7871,\"Ġprev\":7872,\".[\":7873,\".assertEqual\":7874,\"plier\":7875,\"arp\":7876,\"Ġclosed\":7877,\"Ġencour\":7878,\"ĠQString\":7879,\"aud\":7880,\"Ġdeveloped\":7881,\"Ġpermission\":7882,\".debug\":7883,\"operator\":7884,\"Ġ'Ċ\":7885,\"Ġsym\":7886,\"atively\":7887,\"Ã©e\":7888,\"-color\":7889,\"ĠGET\":7890,\"ky\":7891,\"Ġalthough\":7892,\"_request\":7893,\"_element\":7894,\"................\":7895,\"_DATA\":7896,\"Ġamazing\":7897,\"Ġsb\":7898,\"ĠDefault\":7899,\"Events\":7900,\"Ġfailure\":7901,\"acle\":7902,\"Properties\":7903,\"Ġdream\":7904,\"Ġdistr\":7905,\"Ġau\":7906,\"Ġgenerated\":7907,\"æķ\":7908,\"ĠTeam\":7909,\"USE\":7910,\"Ġincome\":7911,\"Ġeye\":7912,\"_not\":7913,\"\\\"],\":7914,\"_form\":7915,\"Support\":7916,\"orders\":7917,\".Print\":7918,\"ville\":7919,\"ĠWednesday\":7920,\"olver\":7921,\"Ġoppos\":7922,\"isation\":7923,\"ola\":7924,\"Close\":7925,\"<p\":7926,\"_width\":7927,\"Invalid\":7928,\"xb\":7929,\"Ġstrugg\":7930,\"_action\":7931,\"Ġtxt\":7932,\"ĠPath\":7933,\"alar\":7934,\"ĠMERCHANTABILITY\":7935,\"service\":7936,\"ĠMichael\":7937,\"ableView\":7938,\"Debug\":7939,\"okes\":7940,\"She\":7941,\"Ġguess\":7942,\"ĠJava\":7943,\"_PATH\":7944,\"Ġparticularly\":7945,\"ĠII\":7946,\"Ġdomain\":7947,\"å¹´\":7948,\"Ġreduce\":7949,\"-left\":7950,\"real\":7951,\"Ġappears\":7952,\"Ġcomo\":7953,\"ĠUnit\":7954,\"ĠGovern\":7955,\"ali\":7956,\"allel\":7957,\"ĠJew\":7958,\"_I\":7959,\"Ġcos\":7960,\".color\":7961,\"ĠGlobal\":7962,\"Ġtele\":7963,\"ben\":7964,\"_trans\":7965,\"Ġreasons\":7966,\"Ġemb\":7967,\"ensity\":7968,\"lines\":7969,\"omin\":7970,\"Screen\":7971,\"Ð°ÑĤ\":7972,\"pects\":7973,\"clip\":7974,\"foo\":7975,\"rent\":7976,\"Ġaf\":7977,\"Ġdanger\":7978,\"iling\":7979,\"Names\":7980,\"Our\":7981,\"Ġdistribution\":7982,\"While\":7983,\"SL\":7984,\"Write\":7985,\"Ġgoto\":7986,\"Ġcolors\":7987,\"Ġpowerful\":7988,\"kin\":7989,\"Ġdepth\":7990,\"ercial\":7991,\"ĠCongress\":7992,\"ĠMarket\":7993,\"Db\":7994,\"under\":7995,\"ĠLast\":7996,\"ÃŁ\":7997,\"greg\":7998,\"Ġposts\":7999,\"_URL\":8000,\"otos\":8001,\"Don\":8002,\"Ġmicro\":8003,\"Ġarrest\":8004,\"Ð¿\":8005,\"Ġ(@\":8006,\"ĠHot\":8007,\"ĠIndex\":8008,\";&\":8009,\"#!\":8010,\"ĠNor\":8011,\"ĠCap\":8012,\"-(\":8013,\"Ġinterested\":8014,\"pear\":8015,\"Ġrent\":8016,\"Ġalbum\":8017,\"olicy\":8018,\".lang\":8019,\".trans\":8020,\".format\":8021,\"Ġ{čĊčĊ\":8022,\"phere\":8023,\"Ġaxis\":8024,\"ĠBusiness\":8025,\"ersistence\":8026,\"urr\":8027,\"Ġminimum\":8028,\"endor\":8029,\"ĠSD\":8030,\"ĠInternet\":8031,\"å¤\":8032,\"Exp\":8033,\"iverse\":8034,\"MM\":8035,\"Ġobvious\":8036,\"Ġbasis\":8037,\"Ġscience\":8038,\"Ġbudget\":8039,\"izations\":8040,\"PA\":8041,\"Ġflags\":8042,\"pret\":8043,\"LOCK\":8044,\"Ġvariety\":8045,\"Ġtruth\":8046,\"dt\":8047,\"Ġgone\":8048,\"Ġbattle\":8049,\"<std\":8050,\"ĠSil\":8051,\"rf\":8052,\"uda\":8053,\"Ġerot\":8054,\"ĠCam\":8055,\"Ġstation\":8056,\"Ġ'</\":8057,\"cheme\":8058,\"ĠSun\":8059,\"Ġfinished\":8060,\"Ġshop\":8061,\"ĠKore\":8062,\"Ġeight\":8063,\"_REG\":8064,\"ND\":8065,\">,\":8066,\"\\\"><?\":8067,\"(num\":8068,\"ĉinline\":8069,\"Transaction\":8070,\".On\":8071,\"Ġmail\":8072,\"rey\":8073,\"results\":8074,\"Ġnav\":8075,\"IMIT\":8076,\"_ids\":8077,\"Make\":8078,\"åĬ\":8079,\"Modal\":8080,\"ĠLOG\":8081,\"ĠSur\":8082,\"Ġinstanceof\":8083,\"Ġoverall\":8084,\"ĠInformation\":8085,\"Ġconstruction\":8086,\"_FILE\":8087,\"but\":8088,\"Ġmedic\":8089,\"Ġduration\":8090,\"itness\":8091,\"agent\":8092,\"AV\":8093,\"Ġseven\":8094,\"olf\":8095,\"Ġ}}Ċ\":8096,\"\\\"],Ċ\":8097,\"Ġcalling\":8098,\"Ġans\":8099,\"throws\":8100,\"orizontal\":8101,\"ĠuseState\":8102,\".fl\":8103,\"ĠStatus\":8104,\"ĠOnline\":8105,\"RR\":8106,\"ĠRich\":8107,\"ĠHill\":8108,\"Ġbrain\":8109,\"Ġfollowed\":8110,\"emic\":8111,\"Ġslight\":8112,\"Ġinsurance\":8113,\".Array\":8114,\"Ġabstract\":8115,\"ĠSum\":8116,\"redirect\":8117,\"owner\":8118,\"(msg\":8119,\"ĠClinton\":8120,\"Non\":8121,\"ĉex\":8122,\"Ġvolume\":8123,\"ĠEventArgs\":8124,\"-L\":8125,\"ĠDim\":8126,\"ĠMart\":8127,\"Ġcursor\":8128,\"Ġimplementation\":8129,\"urred\":8130,\"Ġlarger\":8131,\");ĊĊĊ\":8132,\"'+\":8133,\".transform\":8134,\"Ġupload\":8135,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":8136,\"Draw\":8137,\"nel\":8138,\"ĉfloat\":8139,\"qrt\":8140,\"ĠNetwork\":8141,\"Ġtit\":8142,\"Axis\":8143,\".android\":8144,\"Ġcompleted\":8145,\"Ġmur\":8146,\"Ġcolumns\":8147,\"xc\":8148,\"Ġsupply\":8149,\"iminal\":8150,\"Ġspr\":8151,\"================================================================\":8152,\"Ġunits\":8153,\"(u\":8154,\"mi\":8155,\"replace\":8156,\"[key\":8157,\"à¹\":8158,\"antic\":8159,\"Ġpayment\":8160,\",B\":8161,\"ĠApple\":8162,\"gin\":8163,\"Required\":8164,\"#+\":8165,\"lands\":8166,\"Ġsqu\":8167,\"Ġfactor\":8168,\"dec\":8169,\"Ġstrength\":8170,\"Ġboy\":8171,\"Ġbalance\":8172,\"Ġsources\":8173,\"screen\":8174,\"-top\":8175,\"ĠAmazon\":8176,\"Ġhidden\":8177,\"ÐµÑĤ\":8178,\"_client\":8179,\"Ġeat\":8180,\".display\":8181,\"ĠÂ»\":8182,\"Ġtrigger\":8183,\"anager\":8184,\"Ġtro\":8185,\"Ġclaims\":8186,\"ford\":8187,\"ĠCompany\":8188,\"Ġgift\":8189,\",:\":8190,\"_app\":8191,\"handle\":8192,\"Ġproduce\":8193,\"/lib\":8194,\"Ġ-*\":8195,\"ĉset\":8196,\"'];\":8197,\"arc\":8198,\"ander\":8199,\"ĠEngine\":8200,\"Ġattributes\":8201,\"task\":8202,\"<=\":8203,\"(N\":8204,\"Ġwarm\":8205,\"which\":8206,\"ĠFore\":8207,\"agnost\":8208,\"mys\":8209,\"Ġtal\":8210,\"ĠSal\":8211,\"gi\":8212,\"ĠPrint\":8213,\"ĠTRUE\":8214,\"ĠÐ¾\":8215,\".UI\":8216,\"Ġflash\":8217,\"roperty\":8218,\".location\":8219,\"ĠMill\":8220,\"bi\":8221,\"contr\":8222,\".request\":8223,\"ĠSam\":8224,\"Ġnegative\":8225,\"kit\":8226,\"Ġsett\":8227,\".printStackTrace\":8228,\"abe\":8229,\"ĉi\":8230,\"Ġburn\":8231,\"Ġsociety\":8232,\"Cache\":8233,\"ĠSecurity\":8234,\".models\":8235,\"ĠWARRANTY\":8236,\"_up\":8237,\"ceive\":8238,\"Ġclients\":8239,\".Tr\":8240,\"Ġproviding\":8241,\"Ġrout\":8242,\"material\":8243,\"Ġ||Ċ\":8244,\"ĠSer\":8245,\"ĠOffice\":8246,\"FTWARE\":8247,\"Ġ'$\":8248,\"Ġfoc\":8249,\"Ġexcell\":8250,\"Ġcat\":8251,\"normal\":8252,\"Ġdetermine\":8253,\"ĉuint\":8254,\"Pane\":8255,\"Ġemployees\":8256,\"ĠTexas\":8257,\"Ġtraff\":8258,\"ĠReport\":8259,\"anta\":8260,\"ĠBox\":8261,\"Ġdjango\":8262,\"Ġpartner\":8263,\"EB\":8264,\"LINE\":8265,\"Ġfeeling\":8266,\"Ġcivil\":8267,\"(float\":8268,\"Sql\":8269,\"Ġwouldn\":8270,\".init\":8271,\".left\":8272,\"-v\":8273,\"_level\":8274,\"'}\":8275,\"AF\":8276,\"Ġloading\":8277,\"ĠOnly\":8278,\"Ġcookies\":8279,\"ĠGl\":8280,\"CO\":8281,\"Ġstrategy\":8282,\"('./\":8283,\"Ġship\":8284,\"poses\":8285,\"Ġsignal\":8286,\"Ġalpha\":8287,\".pop\":8288,\"Radius\":8289,\"Ġreplace\":8290,\"_DIR\":8291,\"counter\":8292,\"bservable\":8293,\"ela\":8294,\"Weight\":8295,\"hash\":8296,\"bose\":8297,\"fx\":8298,\"ĠEmail\":8299,\"Ġrefer\":8300,\"localhost\":8301,\"_RO\":8302,\"iques\":8303,\"Step\":8304,\"Ġahead\":8305,\"(View\":8306,\"ĠServices\":8307,\"ĠJson\":8308,\"essor\":8309,\"Ġpun\":8310,\"Ġappropriate\":8311,\"akers\":8312,\"osen\":8313,\"posing\":8314,\"Ġagent\":8315,\"fc\":8316,\"Ġtransfer\":8317,\"Ġinvalid\":8318,\"ĠResearch\":8319,\"Vertex\":8320,\"Ġgay\":8321,\"Ġjournal\":8322,\"[x\":8323,\"Ġ\\\"\\\",Ċ\":8324,\"ĠWell\":8325,\".Tasks\":8326,\"Spec\":8327,\"Ġol\":8328,\"Ġspend\":8329,\"ĠAustralia\":8330,\"Match\":8331,\".junit\":8332,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":8333,\"ĠMAX\":8334,\"izable\":8335,\"clusive\":8336,\"_valid\":8337,\"Ġquarter\":8338,\"yan\":8339,\"ĠEdit\":8340,\"arden\":8341,\"=new\":8342,\"Ġfrag\":8343,\"Bit\":8344,\"zi\":8345,\"aine\":8346,\"udd\":8347,\".Object\":8348,\"debug\":8349,\"Ġcash\":8350,\"_IM\":8351,\"Ġeen\":8352,\"Ġcommercial\":8353,\"ĠVideo\":8354,\"loader\":8355,\"Ġfixed\":8356,\"Ġapplications\":8357,\"Ġ_,\":8358,\"ĠRussia\":8359,\"itect\":8360,\"_(\":8361,\"ĠBlock\":8362,\"Ġsan\":8363,\"ĠTom\":8364,\"Ġperhaps\":8365,\"Ġsig\":8366,\"levant\":8367,\"Ġcorpor\":8368,\"ataset\":8369,\"ronic\":8370,\"xe\":8371,\"Ġeth\":8372,\"Some\":8373,\"pop\":8374,\"_OK\":8375,\"Ġtend\":8376,\".Res\":8377,\"_and\":8378,\"Ġreviews\":8379,\"Ġwild\":8380,\"Ġdegree\":8381,\".O\":8382,\".objects\":8383,\"_args\":8384,\"nil\":8385,\"Ġdisabled\":8386,\"Parent\":8387,\"Ġnotes\":8388,\"Ġ\\\"\\\"Ċ\":8389,\"(state\":8390,\"istrict\":8391,\"Ġlogging\":8392,\".IO\":8393,\"ĠMal\":8394,\"DM\":8395,\"Ġxml\":8396,\"ĠRobert\":8397,\"elen\":8398,\"layout\":8399,\"fol\":8400,\"']))\":8401,\",b\":8402,\"ĠJer\":8403,\"filename\":8404,\"Ġfan\":8405,\"ĠCustom\":8406,\"=\\\"\\\"\":8407,\"ĠDie\":8408,\"Bundle\":8409,\".utils\":8410,\"Ġtrip\":8411,\"MB\":8412,\"Ġsoft\":8413,\"_MODE\":8414,\"Ġapplicable\":8415,\"Ġupper\":8416,\"ERVER\":8417,\"_al\":8418,\"_LOG\":8419,\"Here\":8420,\"wp\":8421,\"ĠServer\":8422,\"ĠClient\":8423,\"Ġchem\":8424,\"Scroll\":8425,\"Ġhighest\":8426,\"ĠSelect\":8427,\"Ġ\\\"@\":8428,\"ĠWhy\":8429,\"Sec\":8430,\"heel\":8431,\"Operation\":8432,\"Ġconnected\":8433,\"irmed\":8434,\"Ġcitiz\":8435,\"ĠChe\":8436,\"Ġforces\":8437,\"Ġwww\":8438,\"Root\":8439,\"ANCE\":8440,\"Many\":8441,\"icip\":8442,\"rgan\":8443,\"ĠTor\":8444,\"ĠPress\":8445,\"ĠMor\":8446,\"-line\":8447,\"uled\":8448,\">\\\\\":8449,\"Ġthus\":8450,\"ĠRegister\":8451,\"hol\":8452,\"ĠChinese\":8453,\"Ġposted\":8454,\"Ġmagn\":8455,\"abilities\":8456,\"Ġdisease\":8457,\"Ġremains\":8458,\"ĠProf\":8459,\"-form\":8460,\"Ġcin\":8461,\"organ\":8462,\"icate\":8463,\"Ġstress\":8464,\"]*\":8465,\"Ġ----------------------------------------------------------------\":8466,\"_context\":8467,\"orry\":8468,\"Ġdied\":8469,\"mat\":8470,\"Ġstarts\":8471,\".Message\":8472,\"Ġruns\":8473,\"Ġguide\":8474,\"Ġwarranty\":8475,\"entials\":8476,\"dict\":8477,\"ĠSize\":8478,\"uler\":8479,\"Ġresponsible\":8480,\"_SET\":8481,\"Ġcontaining\":8482,\"ĠPrice\":8483,\"||\":8484,\"FS\":8485,\"Ġemp\":8486,\"_button\":8487,\"(uint\":8488,\"Ġsuff\":8489,\"pth\":8490,\"Ġdefinitely\":8491,\"pute\":8492,\"Ġmarketing\":8493,\"ĠWH\":8494,\"ĠSie\":8495,\"+=\":8496,\"OLOR\":8497,\"Ġconsult\":8498,\"Ġsigned\":8499,\"Ġsequence\":8500,\"lee\":8501,\"Ġrequirements\":8502,\"hy\":8503,\"Express\":8504,\"MT\":8505,\"sey\":8506,\"Ġult\":8507,\"å®\":8508,\"elligence\":8509,\"Ġanaly\":8510,\"Ġdress\":8511,\"engine\":8512,\"ĠGreat\":8513,\"ĠAndroid\":8514,\"ĠAlex\":8515,\"mode\":8516,\"Dictionary\":8517,\".Date\":8518,\"ä½\":8519,\"VICE\":8520,\"Ġfamilies\":8521,\"ĠRussian\":8522,\"ĠTimes\":8523,\".call\":8524,\"$(\":8525,\"Profile\":8526,\"Ġfolder\":8527,\"ches\":8528,\"Ġlegis\":8529,\"_row\":8530,\"unes\":8531,\"ÙĦ\":8532,\"Ġ}).\":8533,\"Assert\":8534,\"agen\":8535,\"ĠHand\":8536,\"Iter\":8537,\"Ġbiggest\":8538,\"oreach\":8539,\"Ġpolic\":8540,\"Ġpermissions\":8541,\"Ġshowed\":8542,\"ĠElement\":8543,\"Ġtopic\":8544,\"âĢĶâĢĶ\":8545,\"road\":8546,\"ĠBank\":8547,\"record\":8548,\"Ġpartners\":8549,\"ĠRef\":8550,\"essions\":8551,\"Ġassess\":8552,\"UST\":8553,\"ĠParty\":8554,\"produ\":8555,\"LC\":8556,\"Ġul\":8557,\".form\":8558,\"hide\":8559,\"copy\":8560,\"UTF\":8561,\"ĠSOFTWARE\":8562,\"čĊčĊčĊ\":8563,\"ĠLin\":8564,\"una\":8565,\"ugar\":8566,\"Ġadministration\":8567,\"Ġopening\":8568,\"Ġscan\":8569,\"Ġcontinued\":8570,\"component\":8571,\".sp\":8572,\"Ġhappens\":8573,\"ummy\":8574,\"ĠPR\":8575,\".File\":8576,\"ĠDownload\":8577,\"Loading\":8578,\"di\":8579,\"Ġwaiting\":8580,\"_ADD\":8581,\"Tab\":8582,\".querySelector\":8583,\"Ġeconomy\":8584,\"ĠFrench\":8585,\"txt\":8586,\"Ġfant\":8587,\"_;Ċ\":8588,\"Holder\":8589,\"SH\":8590,\"Ġnumpy\":8591,\"Ġstreet\":8592,\"Ġmale\":8593,\"\\\\Model\":8594,\"anging\":8595,\"ĠBill\":8596,\"Ġpreviously\":8597,\"BI\":8598,\"ĠSecret\":8599,\"Ġmist\":8600,\"ĠField\":8601,\"ups\":8602,\"ĠProcess\":8603,\"Ġkept\":8604,\"ĠOT\":8605,\"Ġtraditional\":8606,\".i\":8607,\"amin\":8608,\"Ġhelps\":8609,\"Any\":8610,\"origin\":8611,\"ilters\":8612,\"ju\":8613,\"desc\":8614,\"ĠAccount\":8615,\"Ġ)čĊ\":8616,\"ktop\":8617,\"olly\":8618,\"Ġfs\":8619,\"Ġê\":8620,\"Ġut\":8621,\"Ġcentral\":8622,\"(test\":8623,\".An\":8624,\"Ġsatisf\":8625,\"GR\":8626,\"ĠFull\":8627,\"Ġheat\":8628,\"iber\":8629,\"Ġonto\":8630,\"mos\":8631,\"Schema\":8632,\"Ġfactory\":8633,\"\\\".$\":8634,\"aws\":8635,\"Statement\":8636,\"(target\":8637,\"ĉnew\":8638,\".be\":8639,\"Ġguest\":8640,\"Ġmal\":8641,\"ARY\":8642,\"Ġreached\":8643,\"Ġmouse\":8644,\"Ġchallenge\":8645,\"ĉdouble\":8646,\"ĠTem\":8647,\"Ġterror\":8648,\"Ġextract\":8649,\"_TO\":8650,\"Ġseparate\":8651,\"Ġmir\":8652,\"help\":8653,\"Ġcapacity\":8654,\"ĠProperty\":8655,\"kan\":8656,\"_create\":8657,\"ĠLight\":8658,\".parent\":8659,\"Ġunderstanding\":8660,\"Ġeasier\":8661,\"Ġ|=\":8662,\"Ġenh\":8663,\"Ġfat\":8664,\"Ġprotest\":8665,\"amm\":8666,\"_AT\":8667,\"-of\":8668,\"ils\":8669,\"ĠOh\":8670,\"Ġpsych\":8671,\"Ġ$.\":8672,\"inds\":8673,\"Ġrelative\":8674,\"shop\":8675,\"short\":8676,\"ĠSand\":8677,\"uestion\":8678,\"Ġfear\":8679,\"/ĊĊ\":8680,\".context\":8681,\"Ġschools\":8682,\"Ġserve\":8683,\"zone\":8684,\"_db\":8685,\"Ġmajority\":8686,\"example\":8687,\"Ġlang\":8688,\"ĉĠĠ\":8689,\"Register\":8690,\"endo\":8691,\"Ġprocessing\":8692,\"_template\":8693,\"-user\":8694,\"Ġeg\":8695,\"COM\":8696,\"ĠBlue\":8697,\"iro\":8698,\"Ġremote\":8699,\"ĠIT\":8700,\"#!/\":8701,\"Ġredistrib\":8702,\"raz\":8703,\"ĠSince\":8704,\"ĠTur\":8705,\"Background\":8706,\"===\":8707,\"Ġreflect\":8708,\"Ġpros\":8709,\"cmd\":8710,\"Ġwhom\":8711,\"Compat\":8712,\"ĠAre\":8713,\"Identifier\":8714,\"ĠThom\":8715,\"_port\":8716,\"gu\":8717,\"Ġmonitor\":8718,\"rm\":8719,\"Ġpatient\":8720,\"verter\":8721,\"Ġgain\":8722,\"-ui\":8723,\"Inst\":8724,\"Ġdies\":8725,\"Area\":8726,\"_filter\":8727,\"Ġgrat\":8728,\"Ġreality\":8729,\"ordinate\":8730,\"olved\":8731,\"Contact\":8732,\"Ġcompliance\":8733,\"_or\":8734,\"ĠVar\":8735,\"dl\":8736,\"Ġappend\":8737,\"GER\":8738,\"(max\":8739,\".render\":8740,\"Ġdynamic\":8741,\"ordinates\":8742,\"_options\":8743,\"_column\":8744,\"Ġbatter\":8745,\"space\":8746,\"La\":8747,\"ĠSource\":8748,\"/bin\":8749,\"Ġdos\":8750,\"ĠBoard\":8751,\"ĠThread\":8752,\"ĠAL\":8753,\"(config\":8754,\"ĠMer\":8755,\"Ġmiles\":8756,\"_header\":8757,\"ETHOD\":8758,\"izz\":8759,\"Ġbenefit\":8760,\"Ġintegr\":8761,\"(current\":8762,\"ulo\":8763,\".default\":8764,\"ĠDiv\":8765,\"Ġton\":8766,\"oth\":8767,\"ervation\":8768,\"edom\":8769,\"Ġbaby\":8770,\"ceived\":8771,\".top\":8772,\"riority\":8773,\"ĠLocal\":8774,\"riage\":8775,\"Ġattacks\":8776,\"Ġhospital\":8777,\"Ġfemale\":8778,\"ĠLogin\":8779,\"ĠFlor\":8780,\"Ġchain\":8781,\"ashion\":8782,\"Texture\":8783,\"Save\":8784,\"Ġfarm\":8785,\".contains\":8786,\".Test\":8787,\"Ġknows\":8788,\"Ġgenerally\":8789,\"ipeline\":8790,\"Ġmeant\":8791,\"encia\":8792,\"Ġnicht\":8793,\"Ġcontents\":8794,\"PM\":8795,\"chedule\":8796,\"(line\":8797,\"CG\":8798,\"job\":8799,\"ĠReal\":8800,\"uer\":8801,\"firm\":8802,\"ĠØ\":8803,\"etro\":8804,\"\\\"`Ċ\":8805,\"Ġspeech\":8806,\"Ġthr\":8807,\"foreach\":8808,\"Ġwarn\":8809,\"ĉl\":8810,\"Ġheavy\":8811,\"<li\":8812,\"Ne\":8813,\"Ġinvestigation\":8814,\"Math\":8815,\"-title\":8816,\"Ġchurch\":8817,\"Ġdespite\":8818,\"chain\":8819,\"Ġwhatever\":8820,\"arian\":8821,\"fn\":8822,\"Ġmeta\":8823,\"})ĊĊ\":8824,\"UFF\":8825,\"Ġregarding\":8826,\"_SUCCESS\":8827,\"mes\":8828,\"ĠIntent\":8829,\"Ġresolve\":8830,\"poss\":8831,\"ira\":8832,\"force\":8833,\"oice\":8834,\"Ã¢\":8835,\"Ġpm\":8836,\"Ġupdates\":8837,\"Arr\":8838,\"ĠÑ\":8839,\"testing\":8840,\"Ġtoward\":8841,\"ntax\":8842,\"ëĭ\":8843,\"Ġlisten\":8844,\"Ġgoals\":8845,\"InstanceState\":8846,\"Dr\":8847,\"Ġrare\":8848,\"Ġtrail\":8849,\"Keys\":8850,\"Cal\":8851,\"Car\":8852,\"ĠPeople\":8853,\"ĉlocal\":8854,\"classes\":8855,\"Reference\":8856,\".forEach\":8857,\"emb\":8858,\"activ\":8859,\"Ġprim\":8860,\"redict\":8861,\"Ġrad\":8862,\"æķ°\":8863,\".Back\":8864,\"Ġspread\":8865,\"Ġclock\":8866,\"Ġvir\":8867,\"editor\":8868,\"Ġefforts\":8869,\"Ġbranch\":8870,\"Ġindust\":8871,\"Ġmotor\":8872,\"Ġamb\":8873,\"Ġdatetime\":8874,\"Ġrencont\":8875,\"ĠChristian\":8876,\"ĠAmericans\":8877,\"full\":8878,\"Ġfmt\":8879,\".main\":8880,\"Ġcaused\":8881,\"_update\":8882,\"ĠContent\":8883,\"ATCH\":8884,\"Ġbath\":8885,\"ĠEach\":8886,\"Ġradio\":8887,\"achment\":8888,\"uzz\":8889,\"Submit\":8890,\"Ġrestrict\":8891,\"abin\":8892,\"ĠLoad\":8893,\"Ġextension\":8894,\"Ġessay\":8895,\"Ġhat\":8896,\"aviour\":8897,\"toBe\":8898,\"\\\":[\":8899,\"Ġoffered\":8900,\"Ġvill\":8901,\"(double\":8902,\"æĹ¥\":8903,\"bc\":8904,\"_free\":8905,\"ĠMiss\":8906,\"ĠBer\":8907,\"Ġè\":8908,\"ĠLike\":8909,\"Ġhelped\":8910,\".getName\":8911,\"_AL\":8912,\"Ġspirit\":8913,\"ĠApache\":8914,\"ws\":8915,\"Ġtherefore\":8916,\"(params\":8917,\"_img\":8918,\"Ġpeace\":8919,\"Ġincor\":8920,\"ĠEXPECT\":8921,\"Ġminor\":8922,\"ipes\":8923,\"ĉdata\":8924,\"selector\":8925,\"city\":8926,\"trie\":8927,\".base\":8928,\"_frame\":8929,\"Ġopened\":8930,\"/json\":8931,\"LY\":8932,\"nu\":8933,\".De\":8934,\"tf\":8935,\"margin\":8936,\".Parse\":8937,\"Ġpi\":8938,\"Ġeq\":8939,\"bd\":8940,\"Fields\":8941,\"ĠTree\":8942,\"Ġban\":8943,\"istan\":8944,\"ĊĠĠĠĠĠĠĠĠĊ\":8945,\"ĉgl\":8946,\"Ġproduced\":8947,\"system\":8948,\"Mark\":8949,\"_hash\":8950,\"Ġbg\":8951,\"Ġconstit\":8952,\"ĠLeague\":8953,\"Ġmission\":8954,\"_format\":8955,\"([Ċ\":8956,\"clusion\":8957,\"!\\\"\":8958,\"Ð·\":8959,\"break\":8960,\"ĉswitch\":8961,\"Ġther\":8962,\"Transform\":8963,\"Ġfootball\":8964,\"-link\":8965,\"route\":8966,\".auth\":8967,\"Ġbag\":8968,\"overs\":8969,\"Ġenabled\":8970,\"Ġrac\":8971,\"(I\":8972,\"CR\":8973,\"ancing\":8974,\"Ġmanaged\":8975,\"_q\":8976,\"NGTH\":8977,\"Ġmac\":8978,\"ĠAuto\":8979,\"amente\":8980,\"Ġ'',\":8981,\".Append\":8982,\"Ġpin\":8983,\".item\":8984,\"acking\":8985,\"Ġoccas\":8986,\"person\":8987,\"Ġti\":8988,\".Reg\":8989,\"Ġhaven\":8990,\"Ġglass\":8991,\"Ġ\\\"</\":8992,\"ĠSimple\":8993,\"Print\":8994,\"Ġsurround\":8995,\"NO\":8996,\"ãĢĤĊ\":8997,\"ĠĠĠĠĠĠĠĠčĊ\":8998,\"ĠMany\":8999,\"Ġ\\\"_\":9000,\"Ġweekend\":9001,\"Ġsomew\":9002,\".params\":9003,\"small\":9004,\"ATED\":9005,\"Ġplugin\":9006,\"fields\":9007,\"ĠInitialize\":9008,\"oon\":9009,\"atile\":9010,\"ye\":9011,\"Ġvous\":9012,\"LAG\":9013,\"Ġolder\":9014,\"Ġgam\":9015,\"Ġextremely\":9016,\"Ġhet\":9017,\"enum\":9018,\"ĠSET\":9019,\"xff\":9020,\"Ġtimer\":9021,\"/index\":9022,\"Ġcritical\":9023,\"Rows\":9024,\"_argument\":9025,\"Ġexecute\":9026,\"Ġshowing\":9027,\".xml\":9028,\"-list\":9029,\"Role\":9030,\"typename\":9031,\"_method\":9032,\"that\":9033,\"cher\":9034,\"ĠâĨ\":9035,\"XT\":9036,\"Ġthousands\":9037,\"ĉn\":9038,\"Ġresp\":9039,\"_price\":9040,\"olut\":9041,\"Ag\":9042,\"ĠTwo\":9043,\"Ġbecomes\":9044,\"Ġhus\":9045,\".Use\":9046,\"theme\":9047,\"urb\":9048,\"Ġ/*Ċ\":9049,\"erialize\":9050,\"ARN\":9051,\"Ġlose\":9052,\"Lower\":9053,\"Ġvel\":9054,\"Ġdefense\":9055,\"condition\":9056,\"Ġbes\":9057,\"Ġdry\":9058,\"Ġscroll\":9059,\".Show\":9060,\"IEL\":9061,\"Ð¾ÑĢ\":9062,\"ĠRest\":9063,\"Where\":9064,\"oods\":9065,\"ĠJes\":9066,\"Ġwire\":9067,\"_INFO\":9068,\"Ġstrings\":9069,\"gment\":9070,\"Ġmatches\":9071,\"Ġelectric\":9072,\"Ġexcellent\":9073,\"ĠCouncil\":9074,\"idade\":9075,\"Ġwx\":9076,\"push\":9077,\"_entry\":9078,\"Ġtasks\":9079,\"Ġrich\":9080,\"sa\":9081,\"ĠSmith\":9082,\"UNCTION\":9083,\"Pointer\":9084,\"pective\":9085,\"Ġwidget\":9086,\"ista\":9087,\"Ġagency\":9088,\"Ġsich\":9089,\"ologies\":9090,\"Ġtrial\":9091,\"alysis\":9092,\".check\":9093,\"ARK\":9094,\"ĠonChange\":9095,\"about\":9096,\"',$\":9097,\"(val\":9098,\"Ġplaced\":9099,\"_NO\":9100,\"Ġdan\":9101,\".equal\":9102,\"ĉĠĠĠĠĠ\":9103,\"Ġweather\":9104,\".game\":9105,\"Ġdestination\":9106,\"_USER\":9107,\"iece\":9108,\"Ġprovider\":9109,\".last\":9110,\"plex\":9111,\"Note\":9112,\"/js\":9113,\"ĠpÃ¥\":9114,\"Ġplanning\":9115,\"attribute\":9116,\"PRO\":9117,\"atches\":9118,\"Ġ<-\":9119,\"Ġseeing\":9120,\"Ġcancel\":9121,\"_ind\":9122,\".keys\":9123,\"Ġvisual\":9124,\"ĠCurrent\":9125,\"ĠCollege\":9126,\"ĠRock\":9127,\"Ġagreement\":9128,\"ĠStore\":9129,\"oving\":9130,\"Ġcorner\":9131,\"ampions\":9132,\"ISE\":9133,\"Fin\":9134,\"Ġprotection\":9135,\"Ġfi\":9136,\"Play\":9137,\"plugin\":9138,\")}\":9139,\".frame\":9140,\"-z\":9141,\"Ġtransition\":9142,\"igin\":9143,\"Ġcandidate\":9144,\"ĠUnion\":9145,\"_values\":9146,\"(map\":9147,\"cle\":9148,\"Ġtrend\":9149,\"wide\":9150,\"aren\":9151,\"Loc\":9152,\"UTH\":9153,\"ĠBay\":9154,\"Ġsmaller\":9155,\"ius\":9156,\"well\":9157,\"Ġcriminal\":9158,\"Ġconflic\":9159,\"bert\":9160,\"_INT\":9161,\"Ġinvestment\":9162,\"custom\":9163,\"ĠSession\":9164,\"_write\":9165,\"ania\":9166,\"ĠMass\":9167,\"_EQ\":9168,\"_NOT\":9169,\"Ġviolence\":9170,\"Argument\":9171,\"_email\":9172,\"Ġbelong\":9173,\"_function\":9174,\"Ġenemy\":9175,\"ema\":9176,\"ĠAddress\":9177,\".empty\":9178,\"Ġinner\":9179,\"ĠContact\":9180,\"Loader\":9181,\"<input\":9182,\"ĠCA\":9183,\"lot\":9184,\"Ġpictures\":9185,\"ĠSupport\":9186,\"_names\":9187,\"Layer\":9188,\"ĠClick\":9189,\"Sum\":9190,\"Ã¦\":9191,\"ĠLook\":9192,\"uous\":9193,\"Lib\":9194,\"Flags\":9195,\"team\":9196,\"EP\":9197,\"hat\":9198,\"override\":9199,\"apsed\":9200,\"Ġlabels\":9201,\"quis\":9202,\"ĠStream\":9203,\"_device\":9204,\"ĠCommit\":9205,\"(root\":9206,\"\\\"}\":9207,\".isEmpty\":9208,\"ĉM\":9209,\"Ġangle\":9210,\"ĠBecause\":9211,\"%%%%%%%%\":9212,\"Ġaim\":9213,\"Ġstick\":9214,\"stmt\":9215,\"agraph\":9216,\"answer\":9217,\"Ġclin\":9218,\"ĠIsl\":9219,\".ext\":9220,\"ĠINT\":9221,\"Ġstyles\":9222,\"Ġborn\":9223,\"Ġscr\":9224,\"Ġexpand\":9225,\"Ġraised\":9226,\"TextBox\":9227,\"ILL\":9228,\"------------------------------------------------\":9229,\"HTTP\":9230,\">)\":9231,\"_char\":9232,\"resource\":9233,\"Ġepisode\":9234,\"Ġ'_\":9235,\"ĠEs\":9236,\"ĠEarth\":9237,\"ÂłÂł\":9238,\"UPDATE\":9239,\"ĠSou\":9240,\"uis\":9241,\"types\":9242,\"Ġmas\":9243,\"Ġfav\":9244,\"Ġconstruct\":9245,\"_rate\":9246,\"eras\":9247,\"Ġ|Ċ\":9248,\"roperties\":9249,\"Ġexternal\":9250,\"Ġapplied\":9251,\"Ġprefix\":9252,\"oted\":9253,\"lers\":9254,\"Ġcold\":9255,\"ĠSP\":9256,\"ĠChurch\":9257,\"ĠOutput\":9258,\"losed\":9259,\"çļ\":9260,\"ificate\":9261,\"operation\":9262,\"herit\":9263,\"xFF\":9264,\".env\":9265,\"_err\":9266,\"osh\":9267,\"Direction\":9268,\"Cancel\":9269,\"ĠFrank\":9270,\"Ġfinding\":9271,\".)ĊĊ\":9272,\"Ġrouter\":9273,\"ãĥ»\":9274,\"ses\":9275,\"Ġcrow\":9276,\"=='\":9277,\"Ġsand\":9278,\"Ġrid\":9279,\"iture\":9280,\"Ġentre\":9281,\"Ġobserv\":9282,\"Ġvac\":9283,\"ðŁ\":9284,\"-T\":9285,\"Art\":9286,\"night\":9287,\".search\":9288,\"Ġexchange\":9289,\"Ġdistrict\":9290,\".os\":9291,\"Ġdepartment\":9292,\"Ġdocuments\":9293,\"Ġcentury\":9294,\"ĠNext\":9295,\"Host\":9296,\"ĠKIND\":9297,\"Ġsusp\":9298,\"-P\":9299,\"rend\":9300,\".em\":9301,\"uite\":9302,\"isters\":9303,\"(json\":9304,\"ĠAnn\":9305,\"wt\":9306,\"ati\":9307,\"ĠHTML\":9308,\"when\":9309,\"Directory\":9310,\"Ġshut\":9311,\"<a\":9312,\"edy\":9313,\"Ġhealthy\":9314,\"Ġtemperature\":9315,\"ĠGen\":9316,\"Ġmetal\":9317,\"Ġsubmit\":9318,\"ĠDO\":9319,\"Ġattract\":9320,\"Ġ{};Ċ\":9321,\"ĠWord\":9322,\"Ġll\":9323,\"Ġseemed\":9324,\"ko\":9325,\"IED\":9326,\"Ġlabor\":9327,\".Context\":9328,\"Ġasset\":9329,\"you\":9330,\"Ġcars\":9331,\"ĠColumn\":9332,\"ĠrÃ©\":9333,\"Ġsquare\":9334,\"ĠNSString\":9335,\"âĢĿ,\":9336,\"apes\":9337,\"...Ċ\":9338,\"Ġthanks\":9339,\"(props\":9340,\"Ġtick\":9341,\"Ġexperiment\":9342,\"Ġprison\":9343,\"tree\":9344,\"-text\":9345,\"ĠIOException\":9346,\"-width\":9347,\"_STATUS\":9348,\"fast\":9349,\"-body\":9350,\"-header\":9351,\"Ġguar\":9352,\"crete\":9353,\"ĠTim\":9354,\"Ġclearly\":9355,\"ĠRepublican\":9356,\"Ġjustify\":9357,\"Ð¸ÑĤ\":9358,\"ĉĠĠĠĠ\":9359,\"cache\":9360,\";//\":9361,\"Ġpresence\":9362,\"Ġfactors\":9363,\"Ġemployee\":9364,\"]))\":9365,\"Member\":9366,\"Ġselector\":9367,\"bor\":9368,\"ĠMex\":9369,\"çļĦ\":9370,\"utex\":9371,\"_tag\":9372,\"ailure\":9373,\"ĠNet\":9374,\"Ġreli\":9375,\"EG\":9376,\"Ġfprintf\":9377,\"Ġteen\":9378,\"loss\":9379,\"Ġleaving\":9380,\"Delegate\":9381,\"Ġbeat\":9382,\"Ġminute\":9383,\"subscribe\":9384,\"Ġredistribute\":9385,\"Constants\":9386,\"Ġcancer\":9387,\"/{\":9388,\"BL\":9389,\"Ġspan\":9390,\"ĠChild\":9391,\"Center\":9392,\"Ġearth\":9393,\"YS\":9394,\"ĠLevel\":9395,\"Ġsea\":9396,\".support\":9397,\".inner\":9398,\".Item\":9399,\"illing\":9400,\"ĠĠĠĠĊĠĠĠĠĊ\":9401,\"ĠLabel\":9402,\"ĠEst\":9403,\"(arg\":9404,\"boBox\":9405,\"ĉforeach\":9406,\"cos\":9407,\"Failed\":9408,\"swers\":9409,\"Editor\":9410,\"ront\":9411,\"ĠMP\":9412,\"expr\":9413,\"ĠLife\":9414,\"Ġ??\":9415,\"Ã¶r\":9416,\"Ġattend\":9417,\"ĠQue\":9418,\"Ġspecies\":9419,\"-D\":9420,\"Ġaus\":9421,\"Struct\":9422,\"Ġadvantage\":9423,\"oston\":9424,\"-block\":9425,\"initial\":9426,\"CRE\":9427,\"Ġtruly\":9428,\"Ġcompare\":9429,\"orney\":9430,\"Ġspect\":9431,\"Full\":9432,\"bes\":9433,\"Ġvisible\":9434,\"Ġmess\":9435,\"stances\":9436,\"Ġcloud\":9437,\"_version\":9438,\"Ġfurn\":9439,\"icago\":9440,\"LOW\":9441,\"Ġtraffic\":9442,\"Ġfol\":9443,\"rypto\":9444,\"Ġdeclar\":9445,\"Ġslot\":9446,\"ĠExt\":9447,\"ĠEngland\":9448,\"ĠUnder\":9449,\"Ġta\":9450,\"letter\":9451,\"Ġofficer\":9452,\"ĠDonald\":9453,\"Yes\":9454,\"_json\":9455,\"ITableView\":9456,\"ĠUSE\":9457,\"mployee\":9458,\"Ġopinion\":9459,\"ĠAut\":9460,\"border\":9461,\"Ġadvice\":9462,\"Ġautomatically\":9463,\"isco\":9464,\"Ġmm\":9465,\".vis\":9466,\"aml\":9467,\"Ġinitialize\":9468,\"Ġ({\":9469,\"Ġ;ĊĊ\":9470,\"Ġgeneration\":9471,\"Ġbits\":9472,\"clipse\":9473,\"Ġunf\":9474,\"utors\":9475,\"plt\":9476,\"Ġdelta\":9477,\"estroy\":9478,\"isis\":9479,\"<br\":9480,\"Ġlimitations\":9481,\"Ġended\":9482,\"ĠMad\":9483,\"ilm\":9484,\"These\":9485,\"ĠMinister\":9486,\"Ġchart\":9487,\"Fragment\":9488,\"Ġindependent\":9489,\"Year\":9490,\"Ġinstr\":9491,\"Ġtags\":9492,\"AVE\":9493,\"ĠArch\":9494,\"stop\":9495,\"Progress\":9496,\"Ġmi\":9497,\"Ġlearned\":9498,\"Ge\":9499,\"Ġhotel\":9500,\"SM\":9501,\"TYPE\":9502,\"Ġcy\":9503,\"ERSION\":9504,\"unately\":9505,\"limit\":9506,\"sel\":9507,\"Ġmovies\":9508,\"Ġsteel\":9509,\"oz\":9510,\"gb\":9511,\"ĠCamp\":9512,\"site\":9513,\"ĠLogger\":9514,\"PLE\":9515,\"Ð¾Ð´\":9516,\".right\":9517,\"ĠCore\":9518,\"Ġmixed\":9519,\"step\":9520,\"Ġputs\":9521,\"super\":9522,\"Router\":9523,\".Http\":9524,\"lyph\":9525,\"ĠColors\":9526,\"Ġandroidx\":9527,\".str\":9528,\"Ġinnov\":9529,\"Ġdeck\":9530,\"'>Ċ\":9531,\"apers\":9532,\"](\":9533,\"continue\":9534,\"spec\":9535,\"ĠRoad\":9536,\"ASH\":9537,\"iliar\":9538,\"Ġcontinues\":9539,\"Ġappoint\":9540,\"Ġ#Ċ\":9541,\"ĠVir\":9542,\"Ġ?>\\\"\":9543,\"Ġbin\":9544,\"}\\\",\":9545,\"going\":9546,\"each\":9547,\"BD\":9548,\"ĠAccess\":9549,\"Doc\":9550,\"ĠManagement\":9551,\"BER\":9552,\"asket\":9553,\".getInstance\":9554,\"Ġestablished\":9555,\"socket\":9556,\"INS\":9557,\"ĉvirtual\":9558,\"ĉresult\":9559,\"READ\":9560,\"_height\":9561,\"ĠFont\":9562,\"Ġ();Ċ\":9563,\"_html\":9564,\"Ġneighbor\":9565,\"lor\":9566,\"Ġgather\":9567,\"Ġ})ĊĊ\":9568,\"Ġidentity\":9569,\"Ġfab\":9570,\"padding\":9571,\"ĠRoute\":9572,\"Enumerable\":9573,\"Ã´\":9574,\"Ġforced\":9575,\"/jquery\":9576,\".ĊĊĊĊĊĊ\":9577,\"resents\":9578,\"_left\":9579,\".Param\":9580,\"ĉthrow\":9581,\"ĠHam\":9582,\"Ġeventually\":9583,\"acer\":9584,\"pub\":9585,\"Ġtra\":9586,\"unique\":9587,\"del\":9588,\"ĠFlorida\":9589,\"ĠClean\":9590,\"xa\":9591,\"ĠÂ·\":9592,\"Ġvalidate\":9593,\"Visual\":9594,\"Expression\":9595,\"_func\":9596,\"member\":9597,\"ĉh\":9598,\"trl\":9599,\"ĉG\":9600,\"napshot\":9601,\"ĠPropTypes\":9602,\"vin\":9603,\"])ĊĊ\":9604,\"owl\":9605,\"ifies\":9606,\"Ġ$('.\":9607,\"ĠContext\":9608,\"ĠToast\":9609,\".Key\":9610,\"Ġofficers\":9611,\"/n\":9612,\"sn\":9613,\"undefined\":9614,\".items\":9615,\"utow\":9616,\"amage\":9617,\"Ġaccounts\":9618,\"ookie\":9619,\"Section\":9620,\"icians\":9621,\"Ġadvis\":9622,\"(is\":9623,\"[:,\":9624,\"ĠFrance\":9625,\"Func\":9626,\"icious\":9627,\"Ġtok\":9628,\"Channel\":9629,\"ĠAD\":9630,\"_NUM\":9631,\"Ġtimeout\":9632,\"lemma\":9633,\"reme\":9634,\"uj\":9635,\".Al\":9636,\"uclear\":9637,\"(os\":9638,\"(\\\"<\":9639,\"[Ċ\":9640,\"fetch\":9641,\"Ġbal\":9642,\"Ġguid\":9643,\"-align\":9644,\"ĠWrite\":9645,\"ĠOnce\":9646,\"utowired\":9647,\"ODULE\":9648,\"Ġpitch\":9649,\"CF\":9650,\"bytes\":9651,\"ĠCommission\":9652,\"Ġincred\":9653,\"PER\":9654,\"_response\":9655,\"ĠLos\":9656,\"parser\":9657,\"Ġassume\":9658,\".Request\":9659,\"ĠToken\":9660,\"_position\":9661,\"Ġnom\":9662,\"-term\":9663,\"Ġremaining\":9664,\"iostream\":9665,\"Ġpieces\":9666,\"apy\":9667,\"ĠLess\":9668,\"range\":9669,\"umbn\":9670,\"prise\":9671,\"_option\":9672,\"Impl\":9673,\"kwargs\":9674,\"Ġbusinesses\":9675,\"Alert\":9676,\"Ġparties\":9677,\"ĠContainer\":9678,\"ĠPrivate\":9679,\"ĠPlan\":9680,\"Ġregistered\":9681,\"Ġjour\":9682,\"acker\":9683,\"ÐµÐ½Ð¸\":9684,\"/>\":9685,\"chat\":9686,\"sect\":9687,\"Ġcreation\":9688,\"olutely\":9689,\"Ġinstant\":9690,\"Ġdelivery\":9691,\"icken\":9692,\"yes\":9693,\"ĠFranc\":9694,\"bling\":9695,\"enda\":9696,\"[(\":9697,\"_range\":9698,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":9699,\"Ġschedule\":9700,\"Conn\":9701,\"Ġthank\":9702,\"xd\":9703,\"Ġhook\":9704,\"Ġdocumentation\":9705,\"Parameters\":9706,\"Hello\":9707,\"vt\":9708,\"Ġarticles\":9709,\"Ġwest\":9710,\"defined\":9711,\".select\":9712,\"okens\":9713,\"ĠVAL\":9714,\".file\":9715,\"reset\":9716,\"Ġmys\":9717,\"ĠMA\":9718,\"]),\":9719,\"Ġcities\":9720,\"related\":9721,\"åĽ\":9722,\"Ġappeared\":9723,\"Ġwid\":9724,\".panel\":9725,\"ĠIns\":9726,\".entity\":9727,\"Ġdecre\":9728,\"ĠLou\":9729,\"(time\":9730,\"ĠThank\":9731,\".createElement\":9732,\"Ġmentioned\":9733,\"ounce\":9734,\"ĠTry\":9735,\"ĠWall\":9736,\"/images\":9737,\"ĠMenu\":9738,\"'čĊ\":9739,\"ĠEr\":9740,\"Ġcritic\":9741,\"ĠYear\":9742,\"(param\":9743,\"Ġflo\":9744,\"NN\":9745,\"ooter\":9746,\"Ġ];Ċ\":9747,\"ĠAff\":9748,\"\\\"github\":9749,\"rooms\":9750,\"Ġhyp\":9751,\"global\":9752,\"Ġavec\":9753,\"æľĪ\":9754,\"Ġcompletion\":9755,\"Ġcond\":9756,\"onymous\":9757,\"(temp\":9758,\"Ġstars\":9759,\"Ġrelevant\":9760,\"Ġcovered\":9761,\"Ġelim\":9762,\"_types\":9763,\"(bool\":9764,\"Ġtu\":9765,\"_exists\":9766,\"Ġsecure\":9767,\"Ġstored\":9768,\"]/\":9769,\"xF\":9770,\"ĠController\":9771,\"Ġmigr\":9772,\"MI\":9773,\"ĠDen\":9774,\"Ġannual\":9775,\"UIL\":9776,\"-and\":9777,\"Ġcrime\":9778,\"bel\":9779,\"Ġkitchen\":9780,\"@g\":9781,\"_ph\":9782,\"ournament\":9783,\"ĠSocial\":9784,\"ĠSpecial\":9785,\"logger\":9786,\"Ġtail\":9787,\"Ġunknown\":9788,\"ded\":9789,\"Ġapprec\":9790,\"(db\":9791,\"cf\":9792,\"Ġassign\":9793,\"-out\":9794,\"ĠMont\":9795,\"dp\":9796,\"widget\":9797,\"Ġstone\":9798,\"-primary\":9799,\".grid\":9800,\"Results\":9801,\"azz\":9802,\"Ġdaughter\":9803,\"Ġcurr\":9804,\"Ġlin\":9805,\"Ġsouth\":9806,\"forms\":9807,\"ĠOUT\":9808,\"lette\":9809,\"aks\":9810,\"igure\":9811,\"ĠEU\":9812,\"variable\":9813,\"Ġbrief\":9814,\"ĠScott\":9815,\"Ġconference\":9816,\"anda\":9817,\"_lock\":9818,\"oral\":9819,\"Ġeine\":9820,\"ORS\":9821,\"////////////////////////////////////////////////////////////////\":9822,\"esso\":9823,\"Ġris\":9824,\"Ġgender\":9825,\"estic\":9826,\"License\":9827,\"(out\":9828,\"Ġms\":9829,\"See\":9830,\"Ġwilling\":9831,\"aze\":9832,\"Ġsports\":9833,\"Ġyes\":9834,\"lu\":9835,\"Ġpurs\":9836,\"/javascript\":9837,\"-pro\":9838,\"navbar\":9839,\"_product\":9840,\"/bootstrap\":9841,\"Ġdriving\":9842,\"ĠÄ\":9843,\"Ġpropos\":9844,\"ultip\":9845,\"uplic\":9846,\".email\":9847,\"Ġapprox\":9848,\"(cl\":9849,\"Ġwear\":9850,\"Ġreply\":9851,\"asset\":9852,\"Ġice\":9853,\"Ġtx\":9854,\"kr\":9855,\"ĠGermany\":9856,\"ĠGeorge\":9857,\"Ġcb\":9858,\"ĉerr\":9859,\"Move\":9860,\"Ġpoly\":9861,\"voice\":9862,\"}\\\"\":9863,\"Ġanimal\":9864,\"Av\":9865,\"ĠLocation\":9866,\"Ġnative\":9867,\"][\\\"\":9868,\"<double\":9869,\"Ġmais\":9870,\",int\":9871,\"Ġprepar\":9872,\"Ġinterval\":9873,\"plementation\":9874,\"_ERR\":9875,\"Ġbug\":9876,\">\\\"\":9877,\"stat\":9878,\"Ġ},čĊ\":9879,\"<span\":9880,\"Ġfaith\":9881,\"Ġrom\":9882,\"prev\":9883,\"ĠElect\":9884,\"Find\":9885,\"Ġgod\":9886,\"otor\":9887,\"//----------------------------------------------------------------\":9888,\"original\":9889,\"Cpp\":9890,\"ĠSenate\":9891,\"Ġpositions\":9892,\"Ġweapons\":9893,\"Ġcoff\":9894,\"Ġpurposes\":9895,\"pol\":9896,\"Ġimpress\":9897,\"Ġanimals\":9898,\".Entity\":9899,\"(np\":9900,\"Ġmurder\":9901,\"Ġ``\":9902,\"flag\":9903,\"Ġsolutions\":9904,\"ĠActive\":9905,\"Ġbright\":9906,\".date\":9907,\"Ġsitu\":9908,\"ï¼Ī\":9909,\".ID\":9910,\"Ġsie\":9911,\"),čĊ\":9912,\"akt\":9913,\"Space\":9914,\".dat\":9915,\".indexOf\":9916,\"han\":9917,\"azine\":9918,\"ĠZe\":9919,\"Ġcrash\":9920,\"(/\":9921,\">=\":9922,\"Ð±\":9923,\"iva\":9924,\".AutoSize\":9925,\"ĠLat\":9926,\"_ext\":9927,\"Initialize\":9928,\".register\":9929,\"OPY\":9930,\"Ġreverse\":9931,\"_dis\":9932,\"'][\":9933,\"Ġprompt\":9934,\"onto\":9935,\"ĠJournal\":9936,\"router\":9937,\"Ġmysqli\":9938,\"#else\":9939,\")\\\"\":9940,\"-xs\":9941,\"lets\":9942,\"phan\":9943,\".LE\":9944,\"Will\":9945,\"Ġafford\":9946,\"Ġskill\":9947,\"-toggle\":9948,\"NC\":9949,\"Bind\":9950,\"TS\":9951,\"Just\":9952,\"iteral\":9953,\"YP\":9954,\"ĉunsigned\":9955,\"Ġwind\":9956,\")):Ċ\":9957,\"Ġwarning\":9958,\"ĠWater\":9959,\"Ġdraft\":9960,\"Ġcm\":9961,\"Ġsam\":9962,\"Ġholding\":9963,\"zip\":9964,\"ĠScience\":9965,\"Ġsupposed\":9966,\"Gen\":9967,\"Ġdiet\":9968,\"<h\":9969,\"ĠPass\":9970,\"vi\":9971,\"Ġhusband\":9972,\"ï¿½ï¿½\":9973,\"note\":9974,\"ĠAbout\":9975,\"ĠInstitute\":9976,\"Ġclimate\":9977,\".Format\":9978,\"Ġnut\":9979,\"ested\":9980,\"Ġapparent\":9981,\"Ġholds\":9982,\"fi\":9983,\"news\":9984,\"CM\":9985,\"video\":9986,\"':'\":9987,\"DITION\":9988,\"ping\":9989,\"Ġsenior\":9990,\"wa\":9991,\"-->Ċ\":9992,\"_default\":9993,\"ĠDatabase\":9994,\"rep\":9995,\"ESS\":9996,\"nergy\":9997,\".Find\":9998,\"_mask\":9999,\"Ġrise\":10000,\"Ġkernel\":10001,\"::$\":10002,\".Q\":10003,\"Ġoffering\":10004,\"decl\":10005,\"ĠCS\":10006,\"Ġlisted\":10007,\"Ġmostly\":10008,\"enger\":10009,\"Ġblocks\":10010,\"olo\":10011,\"Ġgoverning\":10012,\"\\\\F\":10013,\"Ġconcent\":10014,\".getText\":10015,\"Ġmb\":10016,\"Ġoccurred\":10017,\"Ġchanging\":10018,\"Scene\":10019,\"_CODE\":10020,\"Beh\":10021,\"\\\"The\":10022,\"Ġtile\":10023,\"ĠAssociation\":10024,\"ĉP\":10025,\"alty\":10026,\"_ad\":10027,\"odies\":10028,\"iated\":10029,\"Ġprepared\":10030,\"possible\":10031,\"Ġmort\":10032,\"TEST\":10033,\"Ġignore\":10034,\"Ġcalc\":10035,\"Ġrs\":10036,\"ĠassertEquals\":10037,\"Ġsz\":10038,\"ĠTHIS\":10039,\".\\\"Ċ\":10040,\"Ġcanvas\":10041,\"java\":10042,\"Ġdut\":10043,\"VALID\":10044,\".sql\":10045,\".input\":10046,\"Ġaux\":10047,\"Sup\":10048,\"Ġartist\":10049,\"Vec\":10050,\"_TIME\":10051,\".stringify\":10052,\"etween\":10053,\"ĠCategory\":10054,\"Ġ[-\":10055,\"ĠDevExpress\":10056,\"ĠJul\":10057,\"Ġring\":10058,\".ed\":10059,\"YY\":10060,\"Let\":10061,\"TextField\":10062,\"Ġflat\":10063,\"_print\":10064,\"ĠOTHER\":10065,\"adian\":10066,\"Ġchecked\":10067,\"ele\":10068,\"Align\":10069,\"standing\":10070,\"Ġ[],\":10071,\"Ġlab\":10072,\"ucky\":10073,\"ĠChristmas\":10074,\"(image\":10075,\".module\":10076,\"Ġlots\":10077,\"Ġslightly\":10078,\"(final\":10079,\"erge\":10080,\"è¿\":10081,\"ĠPolice\":10082,\"ĠRight\":10083,\"Ġaward\":10084,\"ĠOS\":10085,\"Ġ{}ĊĊ\":10086,\"Ġptr\":10087,\"oves\":10088,\"icated\":10089,\"ÐµÐ¼\":10090,\"Ġmanage\":10091,\"oliday\":10092,\"Amount\":10093,\"oolStrip\":10094,\"tbody\":10095,\"Nav\":10096,\"wrap\":10097,\"BB\":10098,\"Ġwatching\":10099,\"arios\":10100,\"Ġoptional\":10101,\"_K\":10102,\"ĠLicensed\":10103,\".Map\":10104,\"Timer\":10105,\"ĠAP\":10106,\"ĠRev\":10107,\"(o\":10108,\",c\":10109,\"umin\":10110,\"etailed\":10111,\"ĠHy\":10112,\"Ġblank\":10113,\"agger\":10114,\"ĠSelf\":10115,\"()[\":10116,\".make\":10117,\"earn\":10118,\"channel\":10119,\"<pre\":10120,\"blem\":10121,\"_password\":10122,\"_sp\":10123,\"icing\":10124,\"ez\":10125,\"Ġtheory\":10126,\"ĠTer\":10127,\",n\":10128,\"logo\":10129,\"ĠHTTP\":10130,\"()))\":10131,\".handle\":10132,\">;Ċ\":10133,\"World\":10134,\"Ġpython\":10135,\"Ġlif\":10136,\"Ġtrav\":10137,\"Ġconven\":10138,\"company\":10139,\"ĠClub\":10140,\"Ver\":10141,\"Btn\":10142,\"Ġzone\":10143,\"products\":10144,\"ĠEduc\":10145,\"Ġverify\":10146,\"ĠMil\":10147,\"ono\":10148,\"]);ĊĊ\":10149,\"ENCE\":10150,\"Ġpacket\":10151,\"Ġcer\":10152,\"Ġenumer\":10153,\"Ġpars\":10154,\"formed\":10155,\"Ġoccup\":10156,\"tre\":10157,\"Ġexercise\":10158,\"Day\":10159,\"_sum\":10160,\"Ġasking\":10161,\"aption\":10162,\"Ġorders\":10163,\"Ġspending\":10164,\"ĠERR\":10165,\".Dis\":10166,\"ĠUtil\":10167,\"âĢľI\":10168,\"\\\\'\":10169,\"?)\":10170,\"/>Ċ\":10171,\"Ġemot\":10172,\"Ġinfluence\":10173,\"ĠAfrica\":10174,\"atters\":10175,\"Ùħ\":10176,\".session\":10177,\"Ġchief\":10178,\"ĉĉĉĉĉĉĉĉĉĉĉ\":10179,\"Ġtom\":10180,\"cluded\":10181,\"serial\":10182,\"_handler\":10183,\".Type\":10184,\"aped\":10185,\"Ġpolicies\":10186,\"-ex\":10187,\"-tr\":10188,\"blank\":10189,\"merce\":10190,\"Ġcoverage\":10191,\"Ġrc\":10192,\"_matrix\":10193,\"_box\":10194,\"Ġcharges\":10195,\"ĠBoston\":10196,\"Pe\":10197,\"Ġcircum\":10198,\"Ġfilled\":10199,\"Ġnorth\":10200,\"ictureBox\":10201,\"ĉres\":10202,\"è®\":10203,\"Ġtermin\":10204,\"Ġ[âĢ¦\":10205,\"IRECT\":10206,\"Ġber\":10207,\"Ġ\\\"../../\":10208,\"retch\":10209,\".code\":10210,\"_col\":10211,\"ĠGovernment\":10212,\"Ġargv\":10213,\"ĠLord\":10214,\"asi\":10215,\"Exec\":10216,\"ĉlet\":10217,\"vertis\":10218,\"Ġdiscussion\":10219,\"enance\":10220,\"outube\":10221,\"typeof\":10222,\"Ġserved\":10223,\"ĠPut\":10224,\"ĉx\":10225,\"Ġsweet\":10226,\"Before\":10227,\"ategy\":10228,\".of\":10229,\"ĠMaterial\":10230,\"Sort\":10231,\"ONT\":10232,\"igital\":10233,\"Why\":10234,\"Ġsust\":10235,\"Ġç\":10236,\"abet\":10237,\"Ġsegment\":10238,\"Ġ[],Ċ\":10239,\"ĠMuslim\":10240,\"ĠfindViewById\":10241,\"cut\":10242,\"_TEXT\":10243,\"ĠMary\":10244,\"Ġloved\":10245,\"Ġlie\":10246,\"ĠJO\":10247,\"Ġisset\":10248,\"month\":10249,\"Ġprime\":10250,\"ti\":10251,\"ĠCarol\":10252,\"Use\":10253,\"ĠPop\":10254,\"ĠSave\":10255,\"Interval\":10256,\"execute\":10257,\"dy\":10258,\"ĠIran\":10259,\"_cont\":10260,\"ĉT\":10261,\"Ġphase\":10262,\"checkbox\":10263,\"week\":10264,\"Ġhide\":10265,\"Ġtil\":10266,\"Ġju\":10267,\"Custom\":10268,\"burg\":10269,\"/M\":10270,\"TON\":10271,\"Ġquant\":10272,\"Ġrub\":10273,\"ixels\":10274,\"Ġinstalled\":10275,\"Ġdump\":10276,\"Ġproperly\":10277,\"(List\":10278,\"Ġdecide\":10279,\"apply\":10280,\"Has\":10281,\"Ġkeeping\":10282,\"Ġcitizens\":10283,\"Ġjoint\":10284,\"pool\":10285,\"Socket\":10286,\"_op\":10287,\"Ġweapon\":10288,\"gnore\":10289,\"ĠExec\":10290,\"otten\":10291,\"ĠMS\":10292,\"Ġ(-\":10293,\"ĠReview\":10294,\"Ġexamples\":10295,\"Ġtight\":10296,\"!(\":10297,\"DP\":10298,\"ĠMessageBox\":10299,\"Ġphotograph\":10300,\"URI\":10301,\"Ã©t\":10302,\"low\":10303,\"ĠGrand\":10304,\".persistence\":10305,\"Ġmaintain\":10306,\"Ġnums\":10307,\"Ġzip\":10308,\"ials\":10309,\"ĠGets\":10310,\"peg\":10311,\"ĠBuffer\":10312,\"~~~~\":10313,\"rastructure\":10314,\"ĠPL\":10315,\"uen\":10316,\"obby\":10317,\"sizeof\":10318,\"Ġpic\":10319,\"Ġseed\":10320,\"Ġexperienced\":10321,\"Ġodd\":10322,\"Ġkick\":10323,\"Ġprocedure\":10324,\"avigator\":10325,\"-on\":10326,\",j\":10327,\"ĠAlthough\":10328,\"ĠuserId\":10329,\"accept\":10330,\"Blue\":10331,\"IColor\":10332,\"layer\":10333,\"available\":10334,\"Ġends\":10335,\".table\":10336,\"Ġdataset\":10337,\"bus\":10338,\"Ġexplain\":10339,\"(pro\":10340,\"ĠCommittee\":10341,\"Ġnoted\":10342,\"]:Ċ\":10343,\"Dim\":10344,\"stdio\":10345,\".\\\",Ċ\":10346,\"_source\":10347,\"ĠWeek\":10348,\"ĠEdge\":10349,\"Ġoperating\":10350,\"Ġeste\":10351,\"ipl\":10352,\"agination\":10353,\"Ġproceed\":10354,\"Ġanimation\":10355,\".Models\":10356,\"ĠWatch\":10357,\"iat\":10358,\"Ġoppon\":10359,\"/A\":10360,\"Report\":10361,\"Ġsounds\":10362,\"_buf\":10363,\"IELD\":10364,\"Ġbund\":10365,\"ĉget\":10366,\".pr\":10367,\"(tmp\":10368,\"Ġkid\":10369,\">ĊĊĊ\":10370,\"Ġyang\":10371,\"NotFound\":10372,\"ÑĨ\":10373,\"math\":10374,\"@gmail\":10375,\"ĠLIMIT\":10376,\"redients\":10377,\"Ġvent\":10378,\"avigate\":10379,\"Look\":10380,\"Ġreligious\":10381,\"Ġrand\":10382,\"rio\":10383,\"(GL\":10384,\"_ip\":10385,\"uan\":10386,\"iciency\":10387,\"ĠChange\":10388,\">čĊčĊ\":10389,\"ĠEntity\":10390,\"Ġrencontre\":10391,\"ĠRet\":10392,\"plan\":10393,\"Ã©n\":10394,\"BOOL\":10395,\"uries\":10396,\"train\":10397,\"Definition\":10398,\"============\":10399,\"zz\":10400,\"Animation\":10401,\"ĠOK\":10402,\"_menu\":10403,\".bl\":10404,\"_score\":10405,\"Ġacad\":10406,\"(System\":10407,\"Ġrefresh\":10408,\"'=>$\":10409,\".Graphics\":10410,\"amento\":10411,\"pid\":10412,\"tc\":10413,\"Ġtips\":10414,\"Ġhomes\":10415,\"Ġfuel\":10416,\"âĸ\":10417,\"_helper\":10418,\"ĠĠčĊ\":10419,\"ĠRoom\":10420,\".Close\":10421,\"_attr\":10422,\"ĠMount\":10423,\"ĠEv\":10424,\"arser\":10425,\"_top\":10426,\"eah\":10427,\"ĠDelete\":10428,\"ãĢį\":10429,\"uke\":10430,\"Ġusage\":10431,\"aria\":10432,\"_dev\":10433,\"Ġtexture\":10434,\"Ġconversation\":10435,\"eper\":10436,\"Bean\":10437,\"done\":10438,\"nonatomic\":10439,\"ĠSecond\":10440,\"Ġshooting\":10441,\"_pre\":10442,\"Components\":10443,\"Ġ]ĊĊ\":10444,\"__,\":10445,\"stitution\":10446,\".Char\":10447,\">();ĊĊ\":10448,\"Ġpresented\":10449,\"Ġwa\":10450,\"oker\":10451,\"-ĊĊ\":10452,\"iner\":10453,\"Ġbecoming\":10454,\"Ġincident\":10455,\"Att\":10456,\"Ġrevealed\":10457,\"forc\":10458,\"Ġboot\":10459,\".page\":10460,\"Enumerator\":10461,\"_->\":10462,\"Photo\":10463,\"Ġspring\":10464,\".\\\",\":10465,\"ĠDictionary\":10466,\"BJECT\":10467,\"Ġlocations\":10468,\"Ġsamples\":10469,\"InputStream\":10470,\"ĠBrown\":10471,\"Ġstats\":10472,\"quality\":10473,\"Ñħ\":10474,\"-dis\":10475,\"Ġhelping\":10476,\"Ġped\":10477,\"(se\":10478,\"ĠWho\":10479,\"alian\":10480,\"internal\":10481,\"Ġft\":10482,\">().\":10483,\"->{\":10484,\"Ġmine\":10485,\"Ġsector\":10486,\"Ġgro\":10487,\"Ġopportunities\":10488,\"ĠÃ¼\":10489,\"Ġmp\":10490,\"Ġalleged\":10491,\"Ġdoubt\":10492,\"Mouse\":10493,\"About\":10494,\"_part\":10495,\"Ġchair\":10496,\"Ġstopped\":10497,\"loop\":10498,\"entities\":10499,\"Ġapps\":10500,\"ansion\":10501,\"Ġmental\":10502,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":10503,\"FR\":10504,\"Ġdefend\":10505,\"care\":10506,\"Ġideal\":10507,\"/api\":10508,\"urface\":10509,\"Ġele\":10510,\"ulator\":10511,\"ĠRights\":10512,\"anguages\":10513,\"Ġfunds\":10514,\"Ġadapt\":10515,\"Attributes\":10516,\"Ġdeploy\":10517,\"opts\":10518,\"Ġvalidation\":10519,\"Ġconcerns\":10520,\"uce\":10521,\".num\":10522,\"ulture\":10523,\"ila\":10524,\"Ġcup\":10525,\"Ġpure\":10526,\".Fore\":10527,\"ĠHashMap\":10528,\".valueOf\":10529,\"asm\":10530,\"MO\":10531,\"Ġcs\":10532,\"Ġstores\":10533,\"Ġ************************************************************************\":10534,\"Ġcommunication\":10535,\"mem\":10536,\".EventHandler\":10537,\".Status\":10538,\"_right\":10539,\".setOn\":10540,\"Sheet\":10541,\"Ġidentify\":10542,\"enerated\":10543,\"ordered\":10544,\"Ġ\\\"[\":10545,\"Ġswe\":10546,\"Condition\":10547,\"ĠAccording\":10548,\"Ġprepare\":10549,\"Ġrob\":10550,\"Pool\":10551,\"Ġsport\":10552,\"rv\":10553,\"ĠRouter\":10554,\"Ġalternative\":10555,\"([]\":10556,\"ĠChicago\":10557,\"ipher\":10558,\"ische\":10559,\"ĠDirector\":10560,\"kl\":10561,\"ĠWil\":10562,\"keys\":10563,\"Ġmysql\":10564,\"Ġwelcome\":10565,\"king\":10566,\"ĠManager\":10567,\"Ġcaught\":10568,\")}Ċ\":10569,\"Score\":10570,\"_PR\":10571,\"Ġsurvey\":10572,\"hab\":10573,\"Headers\":10574,\"ADER\":10575,\"Ġdecor\":10576,\"Ġturns\":10577,\"Ġradius\":10578,\"errupt\":10579,\"Cor\":10580,\"Ġmel\":10581,\"Ġintr\":10582,\"(q\":10583,\"ĠAC\":10584,\"amos\":10585,\"MAX\":10586,\"ĠGrid\":10587,\"ĠJesus\":10588,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":10589,\".DE\":10590,\"Ġts\":10591,\"Ġlinked\":10592,\"free\":10593,\"ĠQt\":10594,\"Ġ/**čĊ\":10595,\"Ġfaster\":10596,\"ctr\":10597,\"_J\":10598,\"DT\":10599,\".Check\":10600,\"Ġcombination\":10601,\"Ġintended\":10602,\"-the\":10603,\"-type\":10604,\"ectors\":10605,\"ami\":10606,\"uting\":10607,\"Ġuma\":10608,\"XML\":10609,\"UCT\":10610,\"Ap\":10611,\"ĠRandom\":10612,\"Ġran\":10613,\".sort\":10614,\"Ġsorted\":10615,\".Un\":10616,\"_PER\":10617,\"itory\":10618,\"Ġpriority\":10619,\"ĠGal\":10620,\"ĠOld\":10621,\"hot\":10622,\"ĠDisplay\":10623,\"(sub\":10624,\"_TH\":10625,\"_Y\":10626,\"ĠCare\":10627,\"loading\":10628,\"Kind\":10629,\"_handle\":10630,\",,\":10631,\"rase\":10632,\"_replace\":10633,\".addEventListener\":10634,\"ĠRT\":10635,\"Ġentered\":10636,\"gers\":10637,\"Ġich\":10638,\"(start\":10639,\"/app\":10640,\"Ġbrother\":10641,\"Memory\":10642,\"Outlet\":10643,\"Ġutf\":10644,\"prec\":10645,\"Ġnavigation\":10646,\"ORK\":10647,\"Ġdst\":10648,\"Detail\":10649,\"Ġaudience\":10650,\"Ġdur\":10651,\"Ġcluster\":10652,\"unched\":10653,\"Ġ],\":10654,\"Ġcomfortable\":10655,\".values\":10656,\"ĠTotal\":10657,\"Ġsnap\":10658,\"Ġstandards\":10659,\"Ġperformed\":10660,\"hand\":10661,\"(\\\"@\":10662,\"åŃ\":10663,\"Ġphil\":10664,\"ibr\":10665,\"trim\":10666,\"Ġforget\":10667,\"Ġdoctor\":10668,\".TextBox\":10669,\"icons\":10670,\",s\":10671,\"ĠOp\":10672,\"Sm\":10673,\"Stop\":10674,\"ĉList\":10675,\"ĉu\":10676,\"Comment\":10677,\"_VERSION\":10678,\".Xtra\":10679,\"Person\":10680,\"rb\":10681,\"LOB\":10682,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":10683,\"ĠCentral\":10684,\"ICK\":10685,\"raq\":10686,\"Ġputting\":10687,\"Ġmd\":10688,\"ĠLove\":10689,\"Program\":10690,\"Border\":10691,\"oor\":10692,\"Ġallowing\":10693,\"after\":10694,\"Ġentries\":10695,\"ĠMaybe\":10696,\"]).\":10697,\"ĠShort\":10698,\")\\\\\":10699,\".now\":10700,\"friend\":10701,\"Ġprefer\":10702,\"ĠGPIO\":10703,\"osis\":10704,\"ĠGameObject\":10705,\"Ġskip\":10706,\"Ġcompetition\":10707,\"_match\":10708,\"lications\":10709,\"_CONT\":10710,\".groupBox\":10711,\"Ġals\":10712,\"\\\"We\":10713,\"_eq\":10714,\"lan\":10715,\"_search\":10716,\"ĠMusic\":10717,\"asis\":10718,\"Ġbind\":10719,\"ĠIsland\":10720,\"rum\":10721,\"(E\":10722,\"Ġseat\":10723,\"Video\":10724,\"Ġack\":10725,\"reek\":10726,\"={()\":10727,\"Ġrating\":10728,\"Ġrestaurant\":10729,\"DEX\":10730,\"(buf\":10731,\"pping\":10732,\"uality\":10733,\"Ġleague\":10734,\"Ġfocused\":10735,\"apon\":10736,\"$data\":10737,\"CLUD\":10738,\"CLUDING\":10739,\"Ġabsolute\":10740,\"(query\":10741,\"Ġtells\":10742,\"Ang\":10743,\"Ġcommunities\":10744,\"Ġhonest\":10745,\"oking\":10746,\"Ġapart\":10747,\"arity\":10748,\"/$\":10749,\"_module\":10750,\"ĠEnc\":10751,\".an\":10752,\".Config\":10753,\"Cre\":10754,\"Ġshock\":10755,\"ĠArab\":10756,\"IENT\":10757,\"/re\":10758,\"Ġretrie\":10759,\"ycler\":10760,\"isa\":10761,\"ĠOrgan\":10762,\".graph\":10763,\"Ġí\":10764,\"ĠBAS\":10765,\"Enum\":10766,\"Ġpossibly\":10767,\"ÑĢÐ°Ð\":10768,\"ĠJapanese\":10769,\"Ġcraft\":10770,\"ĠPlace\":10771,\"Ġtalent\":10772,\"Ġfunding\":10773,\"Ġconfirmed\":10774,\"Ġcycle\":10775,\"/x\":10776,\"GE\":10777,\"Ġhearing\":10778,\"Ġplants\":10779,\"Ġmouth\":10780,\"pages\":10781,\"oria\":10782,\"ĠRemove\":10783,\"_total\":10784,\"Ġod\":10785,\"ollapse\":10786,\"door\":10787,\"Ġbought\":10788,\"Ġaddr\":10789,\"ARCH\":10790,\"_dim\":10791,\"dden\":10792,\"Ġdecades\":10793,\"REQUEST\":10794,\"Ġversions\":10795,\"fire\":10796,\"Ġmoves\":10797,\"fb\":10798,\"Ġcoffee\":10799,\".connect\":10800,\"ĠRow\":10801,\"Ġschema\":10802,\"Scope\":10803,\"-Type\":10804,\"Ġfighting\":10805,\"Ġretail\":10806,\"Ġmodified\":10807,\"TF\":10808,\"Files\":10809,\"nie\":10810,\"_command\":10811,\"stone\":10812,\"ĠÑĤ\":10813,\"_thread\":10814,\"Ġbond\":10815,\"ĠDevelopment\":10816,\"Ġpt\":10817,\"FORM\":10818,\"plet\":10819,\"Ġidentified\":10820,\"cpp\":10821,\"Ġcoding\":10822,\"oked\":10823,\"ĠMaster\":10824,\"IDTH\":10825,\"Ġresidents\":10826,\"redit\":10827,\"ĠPhoto\":10828,\"=-\":10829,\"unte\":10830,\"ateur\":10831,\"_STATE\":10832,\"ĠSing\":10833,\"Ġsheet\":10834,\".val\":10835,\"orse\":10836,\"Ġhers\":10837,\"Ġdetermined\":10838,\"Common\":10839,\"Ġwed\":10840,\"_queue\":10841,\"PH\":10842,\"ĠAtl\":10843,\"cred\":10844,\"/LICENSE\":10845,\"Ġmes\":10846,\"Ġadvanced\":10847,\".java\":10848,\".Sh\":10849,\"Go\":10850,\"kill\":10851,\"fp\":10852,\"_settings\":10853,\"Ġpal\":10854,\"Ġtruck\":10855,\"Ġcombined\":10856,\"Ġ\\\"${\":10857,\"ĠCorpor\":10858,\"Ġjoined\":10859,\"ĠJose\":10860,\"ĠCup\":10861,\"uns\":10862,\"estival\":10863,\"levision\":10864,\"Ġbroken\":10865,\"Ġmarriage\":10866,\"ĠWestern\":10867,\"Ġrepresents\":10868,\"ĠTitle\":10869,\"Ġss\":10870,\".Ass\":10871,\"ongoose\":10872,\"iento\":10873,\"<>();Ċ\":10874,\"Ġabsolutely\":10875,\"Ġsmooth\":10876,\"TERN\":10877,\"ĠUnless\":10878,\"Word\":10879,\"Ġmerge\":10880,\"igan\":10881,\"ĠVol\":10882,\"Ġnn\":10883,\".getId\":10884,\"ĠÐ·\":10885,\"Ġsexy\":10886,\"Ġseeking\":10887,\"Single\":10888,\".this\":10889,\"Ġkom\":10890,\"bound\":10891,\";\\\"\":10892,\"ĠfontSize\":10893,\"_df\":10894,\"Ġinjury\":10895,\"(H\":10896,\"Ġissued\":10897,\"_END\":10898,\":self\":10899,\"Ġpatch\":10900,\"Ġleaves\":10901,\"Ġadopt\":10902,\"FileName\":10903,\"ãĢĲ\":10904,\"Ġexecutive\":10905,\"ĠByte\":10906,\"]))Ċ\":10907,\"Ġnu\":10908,\"outing\":10909,\"cluding\":10910,\"-R\":10911,\".options\":10912,\"Ġsubstant\":10913,\"avax\":10914,\"ĠBUT\":10915,\"Ġtechnical\":10916,\"Ġtwice\":10917,\"ĠmÃ¡s\":10918,\"Ġunivers\":10919,\"yr\":10920,\"Ġdrag\":10921,\"ĠDC\":10922,\"Ġsed\":10923,\"Ġbot\":10924,\"ĠPal\":10925,\"ĠHall\":10926,\"forcement\":10927,\"Ġauch\":10928,\".mod\":10929,\"notation\":10930,\"_files\":10931,\".line\":10932,\"_flag\":10933,\"[name\":10934,\"Ġresolution\":10935,\"Ġbott\":10936,\"(\\\"[\":10937,\"ende\":10938,\"(arr\":10939,\"Free\":10940,\"(@\\\"\":10941,\"ĠDistrict\":10942,\"PEC\":10943,\":-\":10944,\"Picker\":10945,\"ĠJo\":10946,\"ĠĠĠĠĠĊ\":10947,\"ĠRiver\":10948,\"_rows\":10949,\"Ġhelpful\":10950,\"Ġmassive\":10951,\"---Ċ\":10952,\"Ġmeasures\":10953,\"ĠRuntime\":10954,\"Ġworry\":10955,\"ĠSpec\":10956,\"ĉD\":10957,\"ãĢĳ\":10958,\"Ġ){Ċ\":10959,\"Ġworse\":10960,\"(filename\":10961,\"Ġlay\":10962,\"Ġmagic\":10963,\"ĠTheir\":10964,\"oul\":10965,\"stroy\":10966,\"ĠWhere\":10967,\"Ġsudden\":10968,\"Ġdefe\":10969,\"Ġbinding\":10970,\"Ġflight\":10971,\"ĠOnInit\":10972,\"ĠWomen\":10973,\"ĠPolicy\":10974,\"Ġdrugs\":10975,\"ishing\":10976,\"('../\":10977,\"ĠMel\":10978,\"peat\":10979,\"tor\":10980,\"Ġproposed\":10981,\"Ġstated\":10982,\"_RES\":10983,\"Ġeast\":10984,\"ĠCONDITION\":10985,\"_desc\":10986,\"Ġwinning\":10987,\"folio\":10988,\"Mapper\":10989,\"ĠPan\":10990,\"ĠAnge\":10991,\".servlet\":10992,\"Ġcopies\":10993,\"LM\":10994,\"Ġvm\":10995,\"åį\":10996,\"Ġdictionary\":10997,\"Seg\":10998,\"elines\":10999,\"ĠSend\":11000,\"Ġiron\":11001,\"ĠFort\":11002,\".domain\":11003,\"Ġdebate\":11004,\"NotNull\":11005,\"eq\":11006,\"acher\":11007,\"lf\":11008,\"ĉfmt\":11009,\"Ġlawy\":11010,\"ÄŁ\":11011,\"ĠMen\":11012,\"Ġtrim\":11013,\"(NULL\":11014,\"Ġ!!\":11015,\"Ġpad\":11016,\"Ġfollows\":11017,\"\\\"][\\\"\":11018,\"requ\":11019,\"ĠEp\":11020,\".github\":11021,\"(img\":11022,\"eto\":11023,\"('\\\\\":11024,\"Services\":11025,\"umbnail\":11026,\"_main\":11027,\"pleted\":11028,\"fortunately\":11029,\"Ġwindows\":11030,\"Ġplane\":11031,\"ĠConnection\":11032,\".local\":11033,\"uard\":11034,\"}\\\\\":11035,\"==\\\"\":11036,\"andon\":11037,\"ĠRoy\":11038,\"west\":11039,\"iginal\":11040,\"emies\":11041,\"itz\":11042,\"'):Ċ\":11043,\"ĠPeter\":11044,\"Ġtough\":11045,\"Ġreduced\":11046,\"Ġcalculate\":11047,\"Ġrapid\":11048,\"customer\":11049,\"Ġefficient\":11050,\"Ġmedium\":11051,\"Ġfell\":11052,\".ref\":11053,\"ĠCas\":11054,\"Ġfeedback\":11055,\"Speed\":11056,\"(output\":11057,\"aje\":11058,\"Ġcategories\":11059,\"Ġfee\":11060,\"};\":11061,\"Ġdeleted\":11062,\"reh\":11063,\"Ġproof\":11064,\"Desc\":11065,\"Build\":11066,\"Ġsides\":11067,\".ArrayList\":11068,\"-%\":11069,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":11070,\"Ø±\":11071,\".match\":11072,\"Ð»Ð¸\":11073,\"Ġfeels\":11074,\"Ġachieve\":11075,\"Ġclim\":11076,\"_ON\":11077,\"ĠCD\":11078,\"Ġteacher\":11079,\"_current\":11080,\"bn\":11081,\"_PL\":11082,\"isting\":11083,\"Enable\":11084,\"GEN\":11085,\"Ġtv\":11086,\"Ġsock\":11087,\"Ġplays\":11088,\"Ġdiscount\":11089,\"ĠKE\":11090,\"ĠDebug\":11091,\"Fore\":11092,\"ĠIraq\":11093,\"Ġappearance\":11094,\"Mon\":11095,\"Ġstyled\":11096,\"ĠHuman\":11097,\"iot\":11098,\"ĠHistory\":11099,\"Ġsac\":11100,\"ĠCollection\":11101,\"Ġrecommended\":11102,\".Selected\":11103,\"Ġorganizations\":11104,\"Ġdiscovered\":11105,\"cohol\":11106,\"adas\":11107,\"ĠThomas\":11108,\"May\":11109,\"Ġconserv\":11110,\"Ġdomin\":11111,\"ĠFollow\":11112,\"ĠSection\":11113,\"ĠThanks\":11114,\"Username\":11115,\"Ġrecipe\":11116,\"Ġwonderful\":11117,\".sleep\":11118,\"_if\":11119,\"ĉĊĉĊ\":11120,\"orno\":11121,\"Ġru\":11122,\"_target\":11123,\".\\\"\\\"\":11124,\"à¦\":11125,\"EventArgs\":11126,\"Ġinputs\":11127,\"Ġfif\":11128,\"Ġvision\":11129,\"cy\":11130,\"ĠSeries\":11131,\")(((\":11132,\"Ġtrading\":11133,\"Ġmarker\":11134,\"Begin\":11135,\"Ġtypically\":11136,\"Ġcauses\":11137,\"dropdown\":11138,\"_DEBUG\":11139,\"Ġdetect\":11140,\"country\":11141,\"!\\\");Ċ\":11142,\"ĉR\":11143,\"appy\":11144,\"Ġcref\":11145,\"('<\":11146,\"\\\"=>\":11147,\"ĠLE\":11148,\"reader\":11149,\"Ġadministr\":11150,\"Ãµ\":11151,\"ucket\":11152,\"Ġfashion\":11153,\".char\":11154,\"izar\":11155,\"Ġdisable\":11156,\"Ġsuc\":11157,\"ĠLive\":11158,\"issue\":11159,\"Ġmetadata\":11160,\"flags\":11161,\"ĠðŁ\":11162,\"Ġcommitted\":11163,\"Ġva\":11164,\"Ġrough\":11165,\"Ġ'''Ċ\":11166,\"Ġhighlight\":11167,\"_vars\":11168,\"VO\":11169,\"Ġencoding\":11170,\"-Z\":11171,\"_sign\":11172,\"$(\\\"#\":11173,\"Ġrain\":11174,\"reatest\":11175,\"ĠEND\":11176,\"Selection\":11177,\"Ġcandidates\":11178,\"Ġsav\":11179,\".Empty\":11180,\"Ġdecisions\":11181,\"Ġcollabor\":11182,\"ridge\":11183,\"feed\":11184,\"ression\":11185,\"Ġpersons\":11186,\"VM\":11187,\"ega\":11188,\"_BIT\":11189,\"According\":11190,\"acked\":11191,\"Ġdollars\":11192,\"_loss\":11193,\"ĠCost\":11194,\"}\\\"Ċ\":11195,\"Notification\":11196,\"Ġprostit\":11197,\"Ġauthority\":11198,\".rec\":11199,\"Ġspokes\":11200,\"ĠToday\":11201,\"istant\":11202,\"ĠHead\":11203,\"âĢĿ.\":11204,\"ertainment\":11205,\"cean\":11206,\"culate\":11207,\"Ġven\":11208,\"However\":11209,\"_arr\":11210,\"Ġtokens\":11211,\"Graph\":11212,\"ĠJud\":11213,\"ĠVirgin\":11214,\"ĠSerial\":11215,\"unning\":11216,\"Mutable\":11217,\"agers\":11218,\".csv\":11219,\"Ġdeveloping\":11220,\"Ġinstructions\":11221,\"Ġpromise\":11222,\"Ġrequested\":11223,\"_encode\":11224,\"/\\\"\":11225,\"ĠIcon\":11226,\"uilt\":11227,\"-day\":11228,\"Ġintelligence\":11229,\".IS\":11230,\"ĠObservable\":11231,\"ĠHard\":11232,\"Bool\":11233,\"idential\":11234,\".Anchor\":11235,\"Ġselling\":11236,\"CI\":11237,\"AGES\":11238,\"tle\":11239,\"bur\":11240,\"UFFER\":11241,\"RY\":11242,\"Ġbigger\":11243,\"Ġrat\":11244,\"Ġfamous\":11245,\"Ġtypename\":11246,\"Ġexplained\":11247,\"}}Ċ\":11248,\"Ġnuclear\":11249,\"-N\":11250,\"Ġcrisis\":11251,\"ĠEnter\":11252,\"Ġanswers\":11253,\"/${\":11254,\"/pl\":11255,\"Ġsequ\":11256,\"_next\":11257,\"mask\":11258,\"Ġstanding\":11259,\"Ġplenty\":11260,\"ĠCross\":11261,\"ĉret\":11262,\"dro\":11263,\"ĠCast\":11264,\"=true\":11265,\"ĠChris\":11266,\"icio\":11267,\"ĠMike\":11268,\"Decimal\":11269,\"addComponent\":11270,\"Len\":11271,\"Ġcock\":11272,\"Ġ#{\":11273,\"URN\":11274,\"<tr\":11275,\"Ġauthorities\":11276,\"Resources\":11277,\"-H\":11278,\"Bottom\":11279,\"_qu\":11280,\"puter\":11281,\"esterday\":11282,\"Dispatch\":11283,\"since\":11284,\"Ġfamiliar\":11285,\",i\":11286,\"VC\":11287,\"Ġment\":11288,\",C\":11289,\"Ġfreedom\":11290,\"Ġroutes\":11291,\"ĠBuy\":11292,\"Ġcommands\":11293,\"Ġmesh\":11294,\"/C\":11295,\"ĠSettings\":11296,\"-style\":11297,\"Ġwitness\":11298,\"Ġcle\":11299,\"Ġunion\":11300,\"efault\":11301,\"aret\":11302,\"Ġthoughts\":11303,\"Ġ----\":11304,\"_process\":11305,\"_us\":11306,\"ingly\":11307,\"UES\":11308,\"Touch\":11309,\"ĠÐ¼\":11310,\"_open\":11311,\"ĠVec\":11312,\"Ġreward\":11313,\".Click\":11314,\"/:\":11315,\"Ġnie\":11316,\"Changes\":11317,\"Month\":11318,\"ï¼Ł\":11319,\"Ġexecution\":11320,\"Ġbeach\":11321,\"(Integer\":11322,\"ĉa\":11323,\"/'\":11324,\".FontStyle\":11325,\"Ġabort\":11326,\"ĠSingle\":11327,\"(isset\":11328,\"Ġdp\":11329,\"Ġ}}</\":11330,\"ĠMa\":11331,\".Rows\":11332,\"ĠPet\":11333,\"%)\":11334,\"rand\":11335,\"éĢ\":11336,\"Rule\":11337,\"Ġhel\":11338,\"RITE\":11339,\"Ġquiet\":11340,\"Ġratio\":11341,\"ĠCONDITIONS\":11342,\"osoph\":11343,\"ĠIL\":11344,\"Ġadvent\":11345,\"cap\":11346,\";</\":11347,\"ĠUSB\":11348,\"Driver\":11349,\"Ġours\":11350,\"ĠJohnson\":11351,\".K\":11352,\"_delete\":11353,\".q\":11354,\"ĉstr\":11355,\"/common\":11356,\"ĉstring\":11357,\"ĠPDF\":11358,\"acts\":11359,\".Action\":11360,\"ĠQuery\":11361,\".response\":11362,\"ĠGirl\":11363,\"Ġprocesses\":11364,\"<Integer\":11365,\"imo\":11366,\"Ġadds\":11367,\"Ġentirely\":11368,\"Ġwash\":11369,\"/************************************************************************\":11370,\"Ġanimated\":11371,\"Ġprofit\":11372,\"encing\":11373,\"/S\":11374,\"ĠSym\":11375,\"Ġmanual\":11376,\"Download\":11377,\"Ġ(!$\":11378,\"Ġmotion\":11379,\"webpack\":11380,\"-bottom\":11381,\"Ġgratuit\":11382,\"PG\":11383,\"(:,\":11384,\"Ġera\":11385,\"Ġho\":11386,\"ĠJim\":11387,\"quir\":11388,\"ĠBASIS\":11389,\"Ã¡n\":11390,\"DER\":11391,\"Ġexpensive\":11392,\"_co\":11393,\"Bounds\":11394,\"Well\":11395,\"ĠDemocratic\":11396,\"ĠâĨĴ\":11397,\".Rem\":11398,\"_SY\":11399,\"names\":11400,\"ĠVi\":11401,\"Ġisinstance\":11402,\"\\\\\\\">\":11403,\"Ġ*=\":11404,\"ĠPS\":11405,\"Ġdangerous\":11406,\"[p\":11407,\"OME\":11408,\"Other\":11409,\"ĠStringBuilder\":11410,\"Points\":11411,\"heading\":11412,\"Ġcurrency\":11413,\"Ġpercentage\":11414,\"_API\":11415,\"Ġclassic\":11416,\"thead\":11417,\"ĠMO\":11418,\"FE\":11419,\"Idx\":11420,\"await\":11421,\"ĠÃ¨\":11422,\"Ġaccident\":11423,\"Ġvariant\":11424,\"Ġmyst\":11425,\"ĠLand\":11426,\"ĠBre\":11427,\"Ġharm\":11428,\"ĠAcc\":11429,\"Ġcharged\":11430,\"iones\":11431,\"Visibility\":11432,\"arry\":11433,\"ĠLanguage\":11434,\"Ġwalking\":11435,\"\\\".ĊĊ\":11436,\"ifer\":11437,\"Ġleadership\":11438,\".From\":11439,\"ynam\":11440,\"Ġtimestamp\":11441,\"ipt\":11442,\"ĠHas\":11443,\"REFER\":11444,\"ĠIts\":11445,\"Ġlistener\":11446,\"UTE\":11447,\"_description\":11448,\"Ġexperiences\":11449,\"Ġcreates\":11450,\"RS\":11451,\"cart\":11452,\"black\":11453,\"Ġchoices\":11454,\"war\":11455,\"Ġ'''\":11456,\"Ġordered\":11457,\"Ġevening\":11458,\"Ġpil\":11459,\"Ġtun\":11460,\"ĠBad\":11461,\"(app\":11462,\"random\":11463,\"Ġexplicit\":11464,\"Ġarrived\":11465,\"Ġfly\":11466,\"Ġeconom\":11467,\"-mail\":11468,\"Ġlists\":11469,\"Ġarchitect\":11470,\"ĠPay\":11471,\"Ġds\":11472,\"ĠSol\":11473,\"Ġvehicles\":11474,\"Hz\":11475,\"-com\":11476,\"Ġking\":11477,\"_equal\":11478,\"ĠHelp\":11479,\"Ġabuse\":11480,\"--;Ċ\":11481,\"Ġextr\":11482,\"Ġchemical\":11483,\"ä¿\":11484,\"Ġorient\":11485,\"Ġbreath\":11486,\"ĠSpace\":11487,\"(element\":11488,\"wait\":11489,\"DED\":11490,\"igma\":11491,\"Ġentr\":11492,\"Ġsob\":11493,\"-name\":11494,\"Ġaffected\":11495,\"ika\":11496,\"Ġcoal\":11497,\"_work\":11498,\"Ġhundreds\":11499,\"Ġpolitics\":11500,\"subject\":11501,\"Ġconsumer\":11502,\"ANGE\":11503,\"Ġrepeated\":11504,\"Send\":11505,\"Ġ#[\":11506,\"Ġprotocol\":11507,\"Ġleads\":11508,\"useum\":11509,\"Every\":11510,\"Import\":11511,\"(count\":11512,\"Ġchallenges\":11513,\"Ġnovel\":11514,\"Ġdepart\":11515,\"bits\":11516,\".Current\":11517,\"Ġ`${\":11518,\"oting\":11519,\"(\\\\\":11520,\"Ġcreative\":11521,\"Ġbuff\":11522,\"Ġintroduced\":11523,\"usic\":11524,\"modules\":11525,\"Are\":11526,\"-doc\":11527,\"language\":11528,\"_cache\":11529,\"Ġtod\":11530,\"?></\":11531,\"omething\":11532,\"Ġhun\":11533,\"åº\":11534,\"aters\":11535,\"Intent\":11536,\"Ġimplemented\":11537,\"ĠCase\":11538,\"Children\":11539,\"Ġnotification\":11540,\"Renderer\":11541,\"Wrapper\":11542,\"Objects\":11543,\"tl\":11544,\".Contains\":11545,\"Plugin\":11546,\".row\":11547,\"Ġforg\":11548,\"Ġpermit\":11549,\"Ġtargets\":11550,\"ĠIF\":11551,\"Ġtip\":11552,\"sex\":11553,\"Ġsupports\":11554,\"Ġfold\":11555,\"photo\":11556,\"},čĊ\":11557,\"Ġgoogle\":11558,\"$('#\":11559,\"Ġsharing\":11560,\"Ġgoods\":11561,\"vs\":11562,\"ĠDan\":11563,\"Rate\":11564,\"ĠMartin\":11565,\"Ġmanner\":11566,\"lie\":11567,\".The\":11568,\"Internal\":11569,\"ĠCONTR\":11570,\"Mock\":11571,\"RIGHT\":11572,\"Ġ'{\":11573,\"Ġcontrols\":11574,\"Mat\":11575,\"Ġmand\":11576,\"Ġextended\":11577,\"Ok\":11578,\"Ġembed\":11579,\"Ġplanet\":11580,\"ĠNon\":11581,\"-ch\":11582,\")\\\",\":11583,\"epar\":11584,\"Ġbelieved\":11585,\"ĠEnvironment\":11586,\"ĠFriend\":11587,\"-res\":11588,\"Ġhandling\":11589,\"nic\":11590,\"-level\":11591,\"scri\":11592,\"Xml\":11593,\"BE\":11594,\"ungen\":11595,\"Ġalter\":11596,\"[idx\":11597,\"Pop\":11598,\"cam\":11599,\"Ġ(((\":11600,\"Ġshipping\":11601,\"Ġbattery\":11602,\"iddleware\":11603,\"MC\":11604,\"Ġimpl\":11605,\"otation\":11606,\"ĠLab\":11607,\"<form\":11608,\"ĉname\":11609,\"ĠGames\":11610,\"ray\":11611,\"Extra\":11612,\"Two\":11613,\"(player\":11614,\"ĠLes\":11615,\"Â°\":11616,\"Ġcharset\":11617,\"Ġjourney\":11618,\"eting\":11619,\"æĺ\":11620,\"âĶ\":11621,\"çĶ¨\":11622,\"Ġdin\":11623,\"Ġperman\":11624,\"Ġsolve\":11625,\"Ġlaunched\":11626,\"Ġnine\":11627,\"Ġsending\":11628,\"Ġtelling\":11629,\".password\":11630,\"ĠMatrix\":11631,\"eric\":11632,\"Ġgrab\":11633,\".u\":11634,\"ĠLibrary\":11635,\"Ġdebt\":11636,\"INK\":11637,\".findViewById\":11638,\"Ġfrequency\":11639,\".ad\":11640,\"_TEST\":11641,\"Ġnegot\":11642,\"ĠAfrican\":11643,\"sender\":11644,\"Å¡\":11645,\"Global\":11646,\"Ġexperts\":11647,\"++)čĊ\":11648,\"Ġdepending\":11649,\"gray\":11650,\"Ġjudge\":11651,\"Ġsentence\":11652,\"losure\":11653,\"Ac\":11654,\"Ġtrace\":11655,\"Edge\":11656,\"Ġfriendly\":11657,\"Ġconcerned\":11658,\"blog\":11659,\"Ġclaimed\":11660,\"}'\":11661,\"integer\":11662,\"_tree\":11663,\"ĉcontinue\":11664,\"xi\":11665,\"Ġaccepted\":11666,\"_one\":11667,\"ĠEducation\":11668,\"ublished\":11669,\"gon\":11670,\"appoint\":11671,\"outs\":11672,\"Ġmining\":11673,\"Ġsongs\":11674,\"Ġherself\":11675,\"Ġgranted\":11676,\"Ġpassion\":11677,\"ĠLake\":11678,\"Ġloan\":11679,\"uent\":11680,\"chant\":11681,\"Ġdetailed\":11682,\"except\":11683,\"_cmd\":11684,\"ĠHE\":11685,\"Related\":11686,\"zt\":11687,\"'},Ċ\":11688,\"Ġspecifically\":11689,\"Static\":11690,\"Ġcarried\":11691,\"ANS\":11692,\"\\\\\\\":\":11693,\"Created\":11694,\"Ġcul\":11695,\"]-\":11696,\"_api\":11697,\"FP\":11698,\"Ġsitting\":11699,\"Ġ\\\"\\\")\":11700,\"ĉgoto\":11701,\"ĠEqu\":11702,\"Ġassault\":11703,\"kins\":11704,\"ancer\":11705,\"ogen\":11706,\"Ġvoters\":11707,\"ĠProt\":11708,\"Descriptor\":11709,\"ãĥ¼\":11710,\".Assert\":11711,\"bsites\":11712,\"oster\":11713,\"-menu\":11714,\"Ġarms\":11715,\".Client\":11716,\".background\":11717,\"avity\":11718,\"Ġvul\":11719,\"_MASK\":11720,\"Ġhousing\":11721,\"Ġbear\":11722,\"_iter\":11723,\"pired\":11724,\"Ġmarkets\":11725,\"ĠStudent\":11726,\"Ġticket\":11727,\"Ġmillions\":11728,\"flater\":11729,\")=\":11730,\"Ġrecover\":11731,\"ĠForce\":11732,\"ĠBoth\":11733,\"Ġvictim\":11734,\"ĠDisc\":11735,\"report\":11736,\"Ġfourth\":11737,\"ĠAssembly\":11738,\"/user\":11739,\"NullOr\":11740,\"textarea\":11741,\"Ġath\":11742,\"Ġ([\":11743,\"Ġchannels\":11744,\"ĠJustice\":11745,\"choice\":11746,\"LOBAL\":11747,\"exec\":11748,\"emale\":11749,\"Ġelem\":11750,\"_le\":11751,\"Ġresponsibility\":11752,\"ĠTw\":11753,\"ICATION\":11754,\"Ġelseif\":11755,\"Ġfo\":11756,\"asts\":11757,\"Ġtreated\":11758,\"sen\":11759,\"ĠVict\":11760,\"sumer\":11761,\"_BASE\":11762,\"Ġast\":11763,\">{{\":11764,\"ĠResource\":11765,\"ĠStandard\":11766,\"ĠPrem\":11767,\"updated\":11768,\"ivalent\":11769,\"Ġassets\":11770,\"_temp\":11771,\"Ġinterests\":11772,\"Ġhardware\":11773,\"ĠRom\":11774,\"ĠShare\":11775,\"Ġ''Ċ\":11776,\"Ġ*,\":11777,\"ĠTake\":11778,\"ĠImages\":11779,\"_CHECK\":11780,\"(typeof\":11781,\"ĠJun\":11782,\"\\\\<^\":11783,\"Ġliqu\":11784,\"Ġworst\":11785,\"ymbols\":11786,\"ĉĉĉĠĠĠ\":11787,\"Ġdrivers\":11788,\"ĠDocument\":11789,\"eno\":11790,\"ĠTechnology\":11791,\"Ġapproved\":11792,\"umps\":11793,\"Ġsnow\":11794,\"formance\":11795,\"_ASSERT\":11796,\"uits\":11797,\"ÙĨ\":11798,\"Ġdifferences\":11799,\".Visible\":11800,\"ĉĉĉčĊ\":11801,\"ĠPs\":11802,\"_fetch\":11803,\"Ġtodo\":11804,\".',Ċ\":11805,\"Ġsel\":11806,\"urers\":11807,\"invalid\":11808,\"Ġtweet\":11809,\"VEL\":11810,\"Ġresearchers\":11811,\"Ġsprintf\":11812,\"ĠRO\":11813,\"Ġpel\":11814,\".Trans\":11815,\"Ġillegal\":11816,\"dialog\":11817,\"smarty\":11818,\"lg\":11819,\"_MIN\":11820,\"Ġhero\":11821,\"final\":11822,\"Ġpp\":11823,\".Le\":11824,\"Ġci\":11825,\"ĉRT\":11826,\"Ġsuggested\":11827,\"pdf\":11828,\"aching\":11829,\"ĠRo\":11830,\"ĠProperties\":11831,\"ĠSi\":11832,\"Ġbuying\":11833,\"Ġmu\":11834,\"Ġlands\":11835,\"ifiers\":11836,\"ĠFILE\":11837,\"ROUP\":11838,\"Ġholder\":11839,\"ĠSon\":11840,\"Ġsympt\":11841,\".route\":11842,\")?\":11843,\"Ġargc\":11844,\"Ġfort\":11845,\"Ġcasino\":11846,\"_category\":11847,\"Ġforum\":11848,\"prefix\":11849,\"apture\":11850,\"Tube\":11851,\"ems\":11852,\"imize\":11853,\"Ġnue\":11854,\"aus\":11855,\"course\":11856,\"ATOR\":11857,\"()),\":11858,\"Advertis\":11859,\"INGS\":11860,\"Ġacknow\":11861,\"ĠKorea\":11862,\"pling\":11863,\"Ġworker\":11864,\"PLIED\":11865,\"hal\":11866,\"ĠRichard\":11867,\"Elements\":11868,\"ĉĉĉĠ\":11869,\"star\":11870,\"Ġrelationships\":11871,\"Ġcheap\":11872,\"ACH\":11873,\"ĠXML\":11874,\",&\":11875,\"ĠLouis\":11876,\"Ġride\":11877,\"_FAIL\":11878,\"Ġchunk\":11879,\"[s\":11880,\"_OUT\":11881,\"Ġchosen\":11882,\"_[\":11883,\"/(\":11884,\"ĠJeff\":11885,\"_sl\":11886,\"priv\":11887,\"ĠCanadian\":11888,\"Ġunable\":11889,\"_FLAG\":11890,\"Ġnos\":11891,\"high\":11892,\"Ġlift\":11893,\"fun\":11894,\"(){\":11895,\"elly\":11896,\"yclerView\":11897,\"_as\":11898,\"_LIST\":11899,\"Ġradi\":11900,\".getValue\":11901,\"ĠAngeles\":11902,\"ĠSpan\":11903,\"_instance\":11904,\"itors\":11905,\"Ġmigration\":11906,\"AK\":11907,\"Oh\":11908,\"Â®\":11909,\".selected\":11910,\"ĠGT\":11911,\"Ġadvance\":11912,\"ĠStyle\":11913,\".DataGridView\":11914,\"ection\":11915,\"Ñİ\":11916,\"pio\":11917,\"rog\":11918,\"Ġshopping\":11919,\"ĠRect\":11920,\"Illuminate\":11921,\"OU\":11922,\"ĉarray\":11923,\"Ġsubstantial\":11924,\"Ġpregn\":11925,\"Ġpromote\":11926,\"IEW\":11927,\".Layout\":11928,\"Ġsigns\":11929,\"/.\":11930,\"Ġletters\":11931,\"Board\":11932,\"ctrl\":11933,\"\\\"\\\\\":11934,\"ĠJones\":11935,\"Ġvertex\":11936,\"Ġja\":11937,\"Ġaffili\":11938,\"Ġwealth\":11939,\"ĉdefault\":11940,\"Ġsignificantly\":11941,\"Ġec\":11942,\"Ġxs\":11943,\"actual\":11944,\".per\":11945,\"_step\":11946,\"anvas\":11947,\"mac\":11948,\"Ġtransl\":11949,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":11950,\"Iterator\":11951,\"Ġoch\":11952,\"agnostic\":11953,\"ĠDuring\":11954,\"ĠDEFAULT\":11955,\"Ġtill\":11956,\"Ġsignature\":11957,\"Ġbird\":11958,\"ĠOl\":11959,\"ĠIr\":11960,\"HS\":11961,\"avatar\":11962,\"ESSAGE\":11963,\"Ġelev\":11964,\"Ġmt\":11965,\"ĠNav\":11966,\"Ġrelax\":11967,\"Ġplate\":11968,\"ITEM\":11969,\"(date\":11970,\".not\":11971,\"Ġgrade\":11972,\"Ġ}),Ċ\":11973,\"?\\\"ĊĊ\":11974,\"iences\":11975,\"High\":11976,\"ĠDIS\":11977,\"disabled\":11978,\"QUI\":11979,\"Ġnoise\":11980,\"aux\":11981,\"ĠUP\":11982,\"osa\":11983,\"Ġvoc\":11984,\"Ġ))\":11985,\"ocom\":11986,\"_OFF\":11987,\"ĠDb\":11988,\"Lock\":11989,\".eclipse\":11990,\",d\":11991,\"ĠDraw\":11992,\"Ġ\\\"(\":11993,\"Ġvisited\":11994,\"ĠâĪ\":11995,\"Ġsucceed\":11996,\"Ġimpossible\":11997,\"aire\":11998,\"ĠTurn\":11999,\"Ġdish\":12000,\"FG\":12001,\"Ġsensor\":12002,\"ANN\":12003,\"aba\":12004,\"Ġsurg\":12005,\"]);čĊ\":12006,\"Ġfp\":12007,\"_an\":12008,\"-J\":12009,\"-G\":12010,\"ĠJob\":12011,\"Convert\":12012,\"ĠKEY\":12013,\"Ġauthors\":12014,\"_server\":12015,\"\\\\r\":12016,\"Ġ-*-\":12017,\"flex\":12018,\"Ġsoc\":12019,\"Ret\":12020,\"Ġsalt\":12021,\"ĠâĢ¦ĊĊ\":12022,\"ĠClear\":12023,\"(page\":12024,\"-danger\":12025,\"Ġrooms\":12026,\"conv\":12027,\"#{\":12028,\".op\":12029,\"ĠArea\":12030,\"_SC\":12031,\"hen\":12032,\"Ġbegins\":12033,\"-y\":12034,\"Ġexcited\":12035,\"Ġignored\":12036,\"Ġbonus\":12037,\"student\":12038,\"ĠMember\":12039,\"Ġrelatively\":12040,\"ĠLow\":12041,\"ĠProdu\":12042,\"ateway\":12043,\"posure\":12044,\"Ġthick\":12045,\"aniel\":12046,\"(view\":12047,\"ĠCrush\":12048,\"Extension\":12049,\"Il\":12050,\"eed\":12051,\"LOC\":12052,\".im\":12053,\".Items\":12054,\"Ġconflict\":12055,\".prevent\":12056,\"ĠonCreate\":12057,\"uv\":12058,\"iser\":12059,\"Ġwave\":12060,\"Mar\":12061,\"ĠCommunity\":12062,\"iche\":12063,\"ĠNothing\":12064,\"[m\":12065,\"ĠLee\":12066,\"riends\":12067,\"Ã¨re\":12068,\"!!!\":12069,\"anz\":12070,\".result\":12071,\"ĠSK\":12072,\"_PARAM\":12073,\"Ġdemocr\":12074,\"BackColor\":12075,\".exists\":12076,\"\\\"It\":12077,\"(options\":12078,\"razy\":12079,\"aser\":12080,\"\\\\Database\":12081,\"alendar\":12082,\"_ass\":12083,\";}Ċ\":12084,\"vertex\":12085,\"inecraft\":12086,\"Warning\":12087,\"argo\":12088,\"Ġactor\":12089,\"ĠInstead\":12090,\"ĠUsing\":12091,\"Self\":12092,\"@interface\":12093,\"Ġspeaking\":12094,\"ĠParis\":12095,\"ĠLICENSE\":12096,\".node\":12097,\"ĠFood\":12098,\"EIF\":12099,\"ĠBi\":12100,\".Start\":12101,\"ĠIB\":12102,\"Ġuniversity\":12103,\"ĠHeader\":12104,\".product\":12105,\"Copy\":12106,\"etc\":12107,\"rical\":12108,\"Ġ>>>\":12109,\"books\":12110,\"Ġalgorithm\":12111,\"Ġ'__\":12112,\"(javax\":12113,\"Ġnumerous\":12114,\"Share\":12115,\"Have\":12116,\"Ġrecru\":12117,\"Ġprove\":12118,\".substring\":12119,\"health\":12120,\"ÐµÐ»\":12121,\"Ġdecimal\":12122,\"Ġcommission\":12123,\"scription\":12124,\"xC\":12125,\"Ġsummary\":12126,\"atted\":12127,\"Ġcloser\":12128,\"finished\":12129,\"()){Ċ\":12130,\"ĠWood\":12131,\"_fields\":12132,\"ku\":12133,\"_items\":12134,\"Flag\":12135,\"Ġconfidence\":12136,\"ĠFederal\":12137,\"dux\":12138,\"Ġcompat\":12139,\"Ġvertical\":12140,\"Ð¹\":12141,\"Ã¨s\":12142,\";\\\">Ċ\":12143,\"_manager\":12144,\"()))Ċ\":12145,\"IDE\":12146,\":\\\",\":12147,\"__Ċ\":12148,\"ĠWay\":12149,\"ÑĪ\":12150,\"Temp\":12151,\"ĠSTR\":12152,\"ritten\":12153,\"Sync\":12154,\"ĠAV\":12155,\"ĠCEO\":12156,\"ĠGuid\":12157,\"Ġenvironmental\":12158,\"Ġcorresponding\":12159,\"ĉconsole\":12160,\"Ġjustice\":12161,\"ĠJS\":12162,\"Ġlived\":12163,\"gar\":12164,\"ĠGraph\":12165,\"ĠStat\":12166,\"ĠiPhone\":12167,\".al\":12168,\"ĠHD\":12169,\"Ġoccur\":12170,\"Ġthreshold\":12171,\"Ġonclick\":12172,\"REG\":12173,\".GraphicsUnit\":12174,\"Meta\":12175,\"Å¾\":12176,\"Ġcum\":12177,\".gnu\":12178,\"Ã«\":12179,\"Ġobtained\":12180,\"Ġcomplaint\":12181,\"Ġeating\":12182,\"Ġtar\":12183,\"_task\":12184,\"Ġopts\":12185,\"(to\":12186,\"Pass\":12187,\"Ġplastic\":12188,\"tility\":12189,\"ĠWin\":12190,\".preventDefault\":12191,\"pile\":12192,\"ĠGar\":12193,\"Ġquantity\":12194,\"_last\":12195,\"Ġgreatest\":12196,\"Dao\":12197,\"_DIS\":12198,\"ĠUsed\":12199,\"ĠHP\":12200,\"riting\":12201,\"SION\":12202,\"blue\":12203,\"domain\":12204,\"Ġscores\":12205,\"Normal\":12206,\"_admin\":12207,\"ĠASSERT\":12208,\"Then\":12209,\"***\":12210,\"dist\":12211,\"lon\":12212,\"Ġhate\":12213,\"shal\":12214,\"ImageView\":12215,\"database\":12216,\"Ġpand\":12217,\"Ġlogic\":12218,\"=false\":12219,\"bg\":12220,\"ĠConfiguration\":12221,\"Ġnur\":12222,\"OG\":12223,\"Ġmarried\":12224,\":+\":12225,\"Ġdropped\":12226,\"Ġregistration\":12227,\"Ð¾Ð¼\":12228,\"ultiple\":12229,\"izers\":12230,\"shape\":12231,\".copy\":12232,\"Ġwearing\":12233,\"ĠCath\":12234,\"Ġdedicated\":12235,\"Ġ...Ċ\":12236,\"Ġadvoc\":12237,\"ĠFamily\":12238,\"Ġstatements\":12239,\"ematic\":12240,\"ampionship\":12241,\"Ġmotiv\":12242,\"ĠHave\":12243,\"Ġblow\":12244,\"Job\":12245,\"cert\":12246,\"_vector\":12247,\"install\":12248,\"ĠCOPY\":12249,\"embed\":12250,\"DIR\":12251,\"ĠSpring\":12252,\"Ġexhib\":12253,\"cdn\":12254,\"ĠComment\":12255,\"ĠOptional\":12256,\".player\":12257,\"ĠDark\":12258,\"(pos\":12259,\"ĠShould\":12260,\"Ġcentre\":12261,\"ĠGuard\":12262,\"Ã³w\":12263,\"Ġtrouble\":12264,\"ENER\":12265,\"(unsigned\":12266,\"_service\":12267,\"Ġns\":12268,\"uling\":12269,\"ĠMexico\":12270,\"ĠNY\":12271,\"mysql\":12272,\"Ġlic\":12273,\"åľ\":12274,\"Mr\":12275,\"-fl\":12276,\"ĠCustomer\":12277,\"idi\":12278,\"Ġ?>ĊĊ\":12279,\"rible\":12280,\"ĠÐ¿ÑĢ\":12281,\"Ġsizes\":12282,\"_STRING\":12283,\"validation\":12284,\"ĠJon\":12285,\"(Http\":12286,\"addClass\":12287,\"Nodes\":12288,\"Ġfragment\":12289,\"Ġspoke\":12290,\"Ġwaste\":12291,\"Join\":12292,\"Ġillustr\":12293,\"eli\":12294,\"cient\":12295,\"Ġaid\":12296,\"Ġprosec\":12297,\"'){Ċ\":12298,\"Ġpassing\":12299,\"Ġfaces\":12300,\"Shape\":12301,\"_Z\":12302,\"iti\":12303,\"Ġalle\":12304,\"Ġrobot\":12305,\"ĠĠĠĠĠĠĠĊ\":12306,\"ĠSpe\":12307,\"Ġreceiving\":12308,\"ĠDetails\":12309,\"Ġ\\\")\":12310,\"mg\":12311,\"_REF\":12312,\"Ġcomparison\":12313,\"*,\":12314,\"ĠFound\":12315,\"_session\":12316,\"(U\":12317,\"/F\":12318,\"Ġxxx\":12319,\"Network\":12320,\"ders\":12321,\"Ġcapture\":12322,\"Ġcorre\":12323,\"ĠLtd\":12324,\"ĠAdv\":12325,\"[@\":12326,\"Ġclip\":12327,\"Mill\":12328,\"ĠProfile\":12329,\"Ġendif\":12330,\"Ġoblig\":12331,\"describe\":12332,\".element\":12333,\"riterion\":12334,\"LD\":12335,\"ered\":12336,\"Ġfavour\":12337,\"score\":12338,\"ĠFilter\":12339,\"attributes\":12340,\"Ġchecks\":12341,\"Inflater\":12342,\"ĠPlus\":12343,\"Ġscientific\":12344,\"Ġprivacy\":12345,\"Head\":12346,\"Ġfeat\":12347,\"Ġdegrees\":12348,\"ĠPale\":12349,\";\\\">\":12350,\"Ġfilms\":12351,\"ĠAudio\":12352,\"ĠTag\":12353,\"ĠEnergy\":12354,\"itar\":12355,\"parator\":12356,\"Ġfellow\":12357,\"Ġevt\":12358,\"ĠTri\":12359,\"ĠDAM\":12360,\"cloud\":12361,\"ĠPassword\":12362,\"ĠDemocrats\":12363,\"ĠAcad\":12364,\"$lang\":12365,\"Ġreb\":12366,\"())ĊĊ\":12367,\"Ð½Ñĭ\":12368,\"ĠBur\":12369,\"readcr\":12370,\"Ġhex\":12371,\"Console\":12372,\"ctl\":12373,\"ousel\":12374,\"ĠWilliam\":12375,\"Ġaz\":12376,\"_PORT\":12377,\"Ġpractices\":12378,\"Ġanywhere\":12379,\"ĠPosition\":12380,\"Ġ->Ċ\":12381,\"iams\":12382,\".username\":12383,\"placeholder\":12384,\"Ġoder\":12385,\"ĠSecretary\":12386,\"ĠiT\":12387,\"mond\":12388,\"events\":12389,\"?âĢĿ\":12390,\".Sub\":12391,\"Ġattached\":12392,\"ĠnÃ£o\":12393,\"Ġestate\":12394,\".action\":12395,\"Ġfigures\":12396,\"Ġ});čĊ\":12397,\"Ġsubscri\":12398,\".tag\":12399,\"nam\":12400,\".plot\":12401,\"noon\":12402,\"liament\":12403,\"Character\":12404,\".tab\":12405,\"Ġwinter\":12406,\"ĠVariable\":12407,\"Ġtrees\":12408,\"Ġproud\":12409,\"(V\":12410,\"_load\":12411,\"Ġhier\":12412,\"ĠEcon\":12413,\"Ġfd\":12414,\"Ġvictims\":12415,\"Rest\":12416,\"iana\":12417,\"Ġfake\":12418,\".Println\":12419,\"Ġstrlen\":12420,\"Ġsad\":12421,\"Ġble\":12422,\"Prot\":12423,\"Ġbuttons\":12424,\"Ġtelevision\":12425,\"Ġlogo\":12426,\"extension\":12427,\"ĉj\":12428,\"stein\":12429,\"aciones\":12430,\"Ġ\\\"\\\"\\\"ĊĊ\":12431,\"Ġsimp\":12432,\"Ġrecorded\":12433,\"Ġbrings\":12434,\"Ġprincipal\":12435,\"Ġfees\":12436,\"(source\":12437,\"kdir\":12438,\"Ġutils\":12439,\"Ġcorrectly\":12440,\"fil\":12441,\"Ġwel\":12442,\"Pair\":12443,\"-button\":12444,\"scale\":12445,\"verify\":12446,\"[c\":12447,\"Ġ---\":12448,\"Ġescape\":12449,\"ikes\":12450,\"LowerCase\":12451,\"ician\":12452,\"Ġchapter\":12453,\"ĠTYPE\":12454,\"Ġshadow\":12455,\"Ġawesome\":12456,\"WE\":12457,\"elif\":12458,\"Ġlambda\":12459,\"Ġdistinct\":12460,\"Ġbare\":12461,\"-off\":12462,\"Ġcolour\":12463,\".appendChild\":12464,\"olec\":12465,\"aga\":12466,\".fill\":12467,\"ĉsuper\":12468,\"Ġadj\":12469,\"(position\":12470,\".getItem\":12471,\"Short\":12472,\"Ġtotally\":12473,\"VD\":12474,\"ĠTre\":12475,\"_ep\":12476,\"vements\":12477,\"ĠSolution\":12478,\"Ġfundament\":12479,\"Follow\":12480,\"Ġfacility\":12481,\"Ġhappening\":12482,\"OF\":12483,\".textBox\":12484,\"Span\":12485,\"ĠÂ«\":12486,\"iden\":12487,\"Ġexceed\":12488,\"(parent\":12489,\"Ġcp\":12490,\"ç»\":12491,\"Ġhasn\":12492,\"Ġpri\":12493,\"Ġconsequ\":12494,\"nen\":12495,\"ĠINTO\":12496,\"Ignore\":12497,\"ĠFuture\":12498,\"Ġcarbon\":12499,\"ĠSteel\":12500,\"fmt\":12501,\"okie\":12502,\"Ġspl\":12503,\"(title\":12504,\"-info\":12505,\"Ġdeals\":12506,\"Ġfixture\":12507,\"ea\":12508,\"Div\":12509,\"Ġtested\":12510,\"_return\":12511,\")ĊĊĊĊ\":12512,\"upported\":12513,\"ĠCook\":12514,\"Ġpaying\":12515,\"ĠIll\":12516,\"Ġarrested\":12517,\"ĠPrime\":12518,\"_callback\":12519,\">,Ċ\":12520,\"driver\":12521,\"Once\":12522,\"abb\":12523,\"_bytes\":12524,\"ĠSets\":12525,\"(Object\":12526,\"Ġcc\":12527,\"Ġshell\":12528,\"alo\":12529,\");//\":12530,\"(log\":12531,\"ctors\":12532,\")</\":12533,\"Ġneighborhood\":12534,\"ailability\":12535,\"vol\":12536,\"Ġyouth\":12537,\"Ġtechniques\":12538,\"ĠSchema\":12539,\"uh\":12540,\"mente\":12541,\"Ġrepository\":12542,\"imm\":12543,\"Ġcookie\":12544,\"JS\":12545,\"ovies\":12546,\":{\":12547,\"Complete\":12548,\"Since\":12549,\"Ġlaugh\":12550,\"_BO\":12551,\"enable\":12552,\"ĠDoes\":12553,\"ĠWalk\":12554,\"what\":12555,\"kes\":12556,\"Ġmultip\":12557,\"iments\":12558,\"eur\":12559,\"Ġvictory\":12560,\"Generator\":12561,\"ĠMos\":12562,\"rovers\":12563,\"Ġcompute\":12564,\"Ġproviders\":12565,\"ĠMedic\":12566,\"LP\":12567,\"_CONFIG\":12568,\"Ġveter\":12569,\"sters\":12570,\"_window\":12571,\"umeric\":12572,\"ĉĉĉĉĉĊ\":12573,\".Response\":12574,\"Ġreplaced\":12575,\".root\":12576,\"-free\":12577,\"-container\":12578,\"Ġmatching\":12579,\"ĠEditor\":12580,\"=${\":12581,\"ĠSaf\":12582,\"Ġsind\":12583,\"(buffer\":12584,\"åĩ\":12585,\".edu\":12586,\")];Ċ\":12587,\"ĠNFL\":12588,\"aya\":12589,\"Ġdogs\":12590,\"Ġdesire\":12591,\"ĠMiddle\":12592,\"Cart\":12593,\"Theme\":12594,\"Ġmob\":12595,\"Ġdisplayed\":12596,\"igit\":12597,\"Ġadults\":12598,\"\\\"\\\"\\\"\":12599,\"Ġdelivered\":12600,\"visible\":12601,\"\\\":{Ċ\":12602,\"<<<\":12603,\"ĠGO\":12604,\"scroll\":12605,\"xE\":12606,\"Ġassigned\":12607,\"ĠBool\":12608,\"Ġwp\":12609,\"Ġcombat\":12610,\"ĠHaw\":12611,\".-\":12612,\"Ġsupporting\":12613,\".Content\":12614,\"ircraft\":12615,\"Ġspin\":12616,\"ĠCR\":12617,\".my\":12618,\"à¥\":12619,\"tpl\":12620,\"Ġspaces\":12621,\"?,\":12622,\"ĠSyria\":12623,\"Ġpatterns\":12624,\"-box\":12625,\"Ġframework\":12626,\"/%\":12627,\"(long\":12628,\"Ġteaching\":12629,\"ARNING\":12630,\"_keys\":12631,\"Ġtables\":12632,\"UNC\":12633,\"inations\":12634,\"-weight\":12635,\"radio\":12636,\"ĠPac\":12637,\".server\":12638,\".CharField\":12639,\"ring\":12640,\"Ġquote\":12641,\"anna\":12642,\"Ġwerden\":12643,\"Ġcream\":12644,\"Ġmachines\":12645,\"-k\":12646,\"Ġstim\":12647,\"ĠStock\":12648,\"rick\":12649,\"Ġimportance\":12650,\"rx\":12651,\"Ãµes\":12652,\"ÙĪ\":12653,\"Ġstroke\":12654,\"agra\":12655,\"Ġtaste\":12656,\"ĠDEBUG\":12657,\"Thanks\":12658,\"ĠRequired\":12659,\"ova\":12660,\"Media\":12661,\"ĠsiÄĻ\":12662,\"(base\":12663,\"posts\":12664,\"ĠfileName\":12665,\"Checked\":12666,\"Ġinterrupt\":12667,\"Ġ()Ċ\":12668,\"python\":12669,\"pair\":12670,\"Ġcircle\":12671,\"Ġiniti\":12672,\"_stream\":12673,\"Ġcompreh\":12674,\"learn\":12675,\"Public\":12676,\"Ġhumans\":12677,\"Ġbringing\":12678,\"ographic\":12679,\"_layer\":12680,\"-like\":12681,\"upportInitialize\":12682,\"idebar\":12683,\"Ġvotes\":12684,\"Ġdesired\":12685,\"Mask\":12686,\"Ġrelation\":12687,\".Instance\":12688,\"Help\":12689,\"Ġinspir\":12690,\"ĠMono\":12691,\"ViewModel\":12692,\"ometimes\":12693,\"ĠbackgroundColor\":12694,\"Ġrotation\":12695,\"Ġmari\":12696,\"/test\":12697,\"INSERT\":12698,\"Star\":12699,\"phy\":12700,\"Ids\":12701,\"_GET\":12702,\"Ġincreases\":12703,\"_close\":12704,\"_FORM\":12705,\"Ġ[âĢ¦]ĊĊ\":12706,\"aza\":12707,\"TEXT\":12708,\"ĠÃ¤\":12709,\"ĠVan\":12710,\"Ġlights\":12711,\"ĠGuide\":12712,\"Ġdates\":12713,\".Command\":12714,\"aman\":12715,\"Ġpaths\":12716,\".edit\":12717,\"ĉadd\":12718,\"dx\":12719,\"Ġreaction\":12720,\"ĠBeach\":12721,\".getMessage\":12722,\"Environment\":12723,\"interest\":12724,\"Ġminister\":12725,\"Ġreaders\":12726,\"ĉF\":12727,\"Ġdomestic\":12728,\"Ġfiled\":12729,\"City\":12730,\"Ġmapping\":12731,\"ĠDES\":12732,\"Ġrepair\":12733,\"tics\":12734,\"ixture\":12735,\"Ġnombre\":12736,\".ISupportInitialize\":12737,\"zo\":12738,\".IsNullOr\":12739,\"ĠCarolina\":12740,\"ĠDer\":12741,\"ĠEVENT\":12742,\"Ġgest\":12743,\"Ġhist\":12744,\"resources\":12745,\"Ġorphan\":12746,\".Are\":12747,\"ĠInvest\":12748,\"REFERRED\":12749,\".Logger\":12750,\"ĠRoman\":12751,\"Ġcultural\":12752,\"feature\":12753,\"pts\":12754,\"bt\":12755,\"Ġdot\":12756,\"Ġdiam\":12757,\"uspend\":12758,\"_access\":12759,\"(){čĊ\":12760,\"Ġsurprise\":12761,\"abil\":12762,\"Ġvirt\":12763,\"Ġbomb\":12764,\"aron\":12765,\"_IS\":12766,\"Ġvast\":12767,\"Real\":12768,\"epend\":12769,\"icted\":12770,\"Ġpicked\":12771,\"ĠFL\":12772,\"ĠRepublicans\":12773,\".zeros\":12774,\"Pressed\":12775,\"sup\":12776,\".Core\":12777,\"Microsoft\":12778,\"services\":12779,\"agic\":12780,\"iveness\":12781,\"Ġpdf\":12782,\"Ġroles\":12783,\"ras\":12784,\"Ġindustrial\":12785,\"Ġfacilities\":12786,\"è¡\":12787,\"Ġni\":12788,\"Ġba\":12789,\"Ġcls\":12790,\"ĉB\":12791,\"Customer\":12792,\"Ġimagine\":12793,\"Ġexports\":12794,\"OutputStream\":12795,\"Ġmad\":12796,\"(de\":12797,\"){ĊĊ\":12798,\"Ġfro\":12799,\"hus\":12800,\"Ġcommittee\":12801,\"ìĿ´\":12802,\",x\":12803,\"Ġdivision\":12804,\"(client\":12805,\"(java\":12806,\"optional\":12807,\".Equal\":12808,\"ĠPhys\":12809,\"ingu\":12810,\"Ġsync\":12811,\"ĠNa\":12812,\"}}</\":12813,\"OLUM\":12814,\"itÃ©\":12815,\"Ġidentifier\":12816,\"owed\":12817,\"Ġextent\":12818,\"Ġhur\":12819,\"VA\":12820,\"clar\":12821,\"Ġedges\":12822,\"Criteria\":12823,\"Ġindeed\":12824,\"inherit\":12825,\"ĠNight\":12826,\"Ġreporting\":12827,\"Ġencounter\":12828,\"Ġkinds\":12829,\"_pred\":12830,\"Ġconsidering\":12831,\".(\":12832,\"Ġprotein\":12833,\"Typ\":12834,\"gricult\":12835,\"ĠBall\":12836,\"@Component\":12837,\"ĠEss\":12838,\"ĠRub\":12839,\"ulp\":12840,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":12841,\"itud\":12842,\".attr\":12843,\"iente\":12844,\"Ġspell\":12845,\"ĠJoe\":12846,\"ENTER\":12847,\"_host\":12848,\"itan\":12849,\"Ġmatters\":12850,\"Ġemergency\":12851,\"uated\":12852,\"ĠChat\":12853,\"={'\":12854,\"contri\":12855,\"arker\":12856,\"æĪĲ\":12857,\"iper\":12858,\"Ġscheme\":12859,\"(stderr\":12860,\"Ġ*(\":12861,\"ceiver\":12862,\".column\":12863,\"Ġmarked\":12864,\"_ATTR\":12865,\"Ġbodies\":12866,\"ĠIMPLIED\":12867,\"Gap\":12868,\"ĠPOST\":12869,\"Ġcorporate\":12870,\"Ġdimension\":12871,\"Ġcontrast\":12872,\"erview\":12873,\"ĠERROR\":12874,\"Ġcapable\":12875,\"Ġadvertising\":12876,\"urchase\":12877,\"ĠPA\":12878,\"ĠFrancisco\":12879,\"Ġfacing\":12880,\"ãĢĮ\":12881,\"git\":12882,\"Ġbeer\":12883,\"Ġsky\":12884,\"download\":12885,\"ĠCur\":12886,\"mc\":12887,\"anny\":12888,\".floor\":12889,\"Ġcriteria\":12890,\"ĠparseInt\":12891,\"`,Ċ\":12892,\"Ġaspect\":12893,\"Ġbundle\":12894,\"Could\":12895,\"Ġtank\":12896,\"-id\":12897,\"Ġhurt\":12898,\"Ġbroadcast\":12899,\"OKEN\":12900,\"ownt\":12901,\"nullable\":12902,\"Cap\":12903,\"Ġalcohol\":12904,\"ĠColl\":12905,\"ĠHelper\":12906,\"ĠAf\":12907,\".method\":12908,\"Ġplanned\":12909,\"pler\":12910,\"ĠSite\":12911,\"Ġresc\":12912,\"oment\":12913,\"ĠJavaScript\":12914,\"SERVER\":12915,\"Ġrhs\":12916,\"eres\":12917,\"(\\\",\":12918,\"ifi\":12919,\".fields\":12920,\"Ġparking\":12921,\"Ġisland\":12922,\"Ġsister\":12923,\"_Ċ\":12924,\"Constraints\":12925,\"ĠAust\":12926,\"dim\":12927,\"_points\":12928,\"Ġgap\":12929,\"_active\":12930,\"Ġvoor\":12931,\"ĠPO\":12932,\"Bag\":12933,\"-scale\":12934,\"lambda\":12935,\".Dispose\":12936,\"rule\":12937,\"Ġowned\":12938,\"ĠMedical\":12939,\"entries\":12940,\"Ġsolar\":12941,\"Ġresulting\":12942,\"Ġestimated\":12943,\"Ġimproved\":12944,\"Duration\":12945,\"employee\":12946,\"$.\":12947,\"Actions\":12948,\"Like\":12949,\",(\":12950,\"(Request\":12951,\"%s\":12952,\".Open\":12953,\")\\\"Ċ\":12954,\"Ġpixel\":12955,\"Ġadapter\":12956,\"Ġrevenue\":12957,\"ogram\":12958,\"ĠLA\":12959,\"ĠMachine\":12960,\"ĠØ§\":12961,\"Ġfle\":12962,\"Ġbike\":12963,\"Insets\":12964,\"Ġdisp\":12965,\"Ġconsistent\":12966,\"aÃ§Ã£o\":12967,\"gender\":12968,\"ĠThose\":12969,\"perience\":12970,\".BackColor\":12971,\".play\":12972,\"Ġrush\":12973,\"Ġaxios\":12974,\"Ġneck\":12975,\"_mem\":12976,\".PREFERRED\":12977,\"_first\":12978,\"CB\":12979,\"ĠWidget\":12980,\"Ġseq\":12981,\"har\":12982,\"Ġhits\":12983,\"ĠâĤ¬\":12984,\"Ġcontained\":12985,\"rient\":12986,\"water\":12987,\"LOAD\":12988,\"ĠVirginia\":12989,\"ĠArm\":12990,\"Ġ./\":12991,\"Â»\":12992,\"_root\":12993,\"Ġassistance\":12994,\"[],\":12995,\"sync\":12996,\"Ġveget\":12997,\"escape\":12998,\"icer\":12999,\"boost\":13000,\"ĠFloat\":13001,\"-W\":13002,\"*/čĊ\":13003,\"*>\":13004,\"Ġ$(\\\".\":13005,\".pos\":13006,\"Ġboys\":13007,\"Ġwedding\":13008,\"Ġagents\":13009,\"=\\\"_\":13010,\"ĠArmy\":13011,\"Ġhint\":13012,\"vision\":13013,\"Ġtech\":13014,\"ĠConnect\":13015,\"Ġlegend\":13016,\"ĠBet\":13017,\".Base\":13018,\"Subject\":13019,\"Ġlit\":13020,\"Remove\":13021,\"Ġ\\\":\":13022,\"ĠFinal\":13023,\"pearance\":13024,\"ĠiTunes\":13025,\"Ġparticipants\":13026,\"ĠPython\":13027,\"Ġbusy\":13028,\"iel\":13029,\"vertices\":13030,\"ĠtemplateUrl\":13031,\"ĠClose\":13032,\"Img\":13033,\"ĠCorporation\":13034,\"timestamp\":13035,\"Ġextend\":13036,\"Ġwebsites\":13037,\"Ġpossibility\":13038,\"Ð¾ÑĤ\":13039,\"ĠkÃ¶\":13040,\"Ġmeat\":13041,\"Ġrepresentation\":13042,\"Ġĉĉ\":13043,\"_START\":13044,\".apply\":13045,\"ĠValley\":13046,\"ĠSuccess\":13047,\"Hi\":13048,\"Ġnob\":13049,\"ĠIEnumerable\":13050,\"_select\":13051,\"geo\":13052,\".\\\")Ċ\":13053,\"Ġturning\":13054,\"Ġfabric\":13055,\"(\\\"\\\");Ċ\":13056,\"Ġperspective\":13057,\"éĹ\":13058,\"ĠSn\":13059,\"Thank\":13060,\";j\":13061,\".Parameters\":13062,\"ĉĠĠĠĠĠĠĠĠĠĠĠ\":13063,\"Ġfacts\":13064,\"Ġunt\":13065,\".instance\":13066,\"################################################################\":13067,\"-end\":13068,\"ĠJOIN\":13069,\"ĠHen\":13070,\"Ġuri\":13071,\"åĲį\":13072,\"ĠÐ½Ð°\":13073,\"ĠInfo\":13074,\"Ġconducted\":13075,\"ĠÃ¥\":13076,\"OURCE\":13077,\"Ġwine\":13078,\"John\":13079,\".Errorf\":13080,\"ĠAge\":13081,\"ounded\":13082,\"Ġrealize\":13083,\"Ġ];\":13084,\"Ġsubsequ\":13085,\",m\":13086,\"(User\":13087,\"iano\":13088,\"Ġaccompl\":13089,\"isp\":13090,\".std\":13091,\"éĩ\":13092,\"ĠBed\":13093,\".setAttribute\":13094,\"BR\":13095,\"keep\":13096,\"ĠALL\":13097,\"Ġisol\":13098,\"amma\":13099,\"Package\":13100,\"Ġoccasion\":13101,\"-success\":13102,\"ÐµÐ´\":13103,\"ĠLIMITED\":13104,\"strip\":13105,\"()ĊĊĊ\":13106,\"istribution\":13107,\"Colors\":13108,\"Ġ+:+\":13109,\"DidLoad\":13110,\"aler\":13111,\"Ġtid\":13112,\"ĠLED\":13113,\"ĠLinked\":13114,\"ĠCart\":13115,\"())čĊ\":13116,\"_READ\":13117,\"Ġkilling\":13118,\"ĠPHP\":13119,\"fection\":13120,\"Ġinstances\":13121,\"cv\":13122,\"\\\"/>\":13123,\"Ġsf\":13124,\"Ġtaxes\":13125,\"_location\":13126,\"ĠBitcoin\":13127,\"uable\":13128,\"rank\":13129,\"ignore\":13130,\"track\":13131,\"ÐºÐ°\":13132,\"Ġshouldn\":13133,\"ĠOP\":13134,\"=>{Ċ\":13135,\"Ġkm\":13136,\"Ġhelper\":13137,\"_head\":13138,\"ĠWhether\":13139,\"oco\":13140,\"_bl\":13141,\"Ġstatistics\":13142,\"Ġbeauty\":13143,\"Ġtog\":13144,\"tip\":13145,\"ëĭ¤\":13146,\"Ġcsv\":13147,\"(sql\":13148,\"stdlib\":13149,\"weak\":13150,\"Ġlikes\":13151,\"Äį\":13152,\"Ġrepeat\":13153,\"Ġapartment\":13154,\"Ġemph\":13155,\"_edit\":13156,\"Ġvit\":13157,\"ĉtype\":13158,\"Even\":13159,\"uten\":13160,\"Ġcircumstances\":13161,\"bian\":13162,\"Ġsugar\":13163,\"Windows\":13164,\"ìŀ\":13165,\"Ġobserved\":13166,\"/data\":13167,\"Ġcalendar\":13168,\"Ġstrike\":13169,\"ĠRES\":13170,\"_sc\":13171,\"fony\":13172,\"orem\":13173,\"(z\":13174,\"power\":13175,\"etect\":13176,\"ĠSat\":13177,\".description\":13178,\"Ġgang\":13179,\"ĠSports\":13180,\"ongs\":13181,\"ĠBundle\":13182,\".sum\":13183,\"once\":13184,\"Ġaccused\":13185,\"Ġexplore\":13186,\"Ġapproximately\":13187,\"Ġlosing\":13188,\"thesis\":13189,\"ĠFund\":13190,\"Ġdiagn\":13191,\"Autowired\":13192,\"properties\":13193,\"Ġ_.\":13194,\"Ġcnt\":13195,\"cedure\":13196,\"Ġyy\":13197,\"Ġgrant\":13198,\"sock\":13199,\".innerHTML\":13200,\"Ġ]);Ċ\":13201,\"ĠCONFIG\":13202,\"='$\":13203,\"]];Ċ\":13204,\"UND\":13205,\"Ġglob\":13206,\"Ġdire\":13207,\"uffle\":13208,\"_MEM\":13209,\"Ġauthentic\":13210,\">(\\\"\":13211,\"Ġdecade\":13212,\"ĠImport\":13213,\"Ġoriginally\":13214,\"ĠjQuery\":13215,\"Ġindicate\":13216,\"Ġourselves\":13217,\"Sw\":13218,\".lbl\":13219,\"enerate\":13220,\"Ġbasically\":13221,\"ĠHom\":13222,\"Ġ+#+\":13223,\"ĠBritain\":13224,\"ĠKar\":13225,\"toEqual\":13226,\".stop\":13227,\"Ġmodal\":13228,\"isi\":13229,\"Ġsuggests\":13230,\"Ġdtype\":13231,\"Ġtur\":13232,\"bf\":13233,\"Ġconnections\":13234,\"ĠBefore\":13235,\"isted\":13236,\"mouse\":13237,\"Ġpulled\":13238,\".build\":13239,\"Ġlegislation\":13240,\"Ġforth\":13241,\"pad\":13242,\"ego\":13243,\".Now\":13244,\"Ġexciting\":13245,\"}ĊĊĊĊ\":13246,\"Ġcompr\":13247,\"Ġshares\":13248,\"Ġrig\":13249,\"green\":13250,\"_vec\":13251,\"Ġenumerate\":13252,\"Auto\":13253,\"icator\":13254,\"ĠRay\":13255,\"asse\":13256,\"Ġholiday\":13257,\"Ġnullable\":13258,\"gun\":13259,\"_details\":13260,\"Ġwrapper\":13261,\"seq\":13262,\"ĠYoung\":13263,\"juana\":13264,\"Ġ\\\"__\":13265,\"license\":13266,\"serve\":13267,\"^(\":13268,\"iders\":13269,\".Remove\":13270,\"ropdown\":13271,\"'S\":13272,\"pin\":13273,\"(token\":13274,\".Default\":13275,\"Ġreasonable\":13276,\"ampion\":13277,\"ĠSociety\":13278,\"Ġbei\":13279,\"erves\":13280,\"rad\":13281,\"ĠFox\":13282,\"_images\":13283,\"Ġwheel\":13284,\"')[\":13285,\"Ġcfg\":13286,\"(By\":13287,\"Constructor\":13288,\"Ġvary\":13289,\".swift\":13290,\"Ġproxy\":13291,\"ĉH\":13292,\"ĠAnother\":13293,\"ĠPen\":13294,\"Ġchecking\":13295,\"Ġjest\":13296,\"manager\":13297,\"Origin\":13298,\"ugs\":13299,\"oir\":13300,\"><!--\":13301,\"Ġexpressed\":13302,\"Ġmoder\":13303,\"Ġagencies\":13304,\"Ġih\":13305,\"-hidden\":13306,\"iously\":13307,\"ĠRod\":13308,\"Ġsole\":13309,\"Med\":13310,\".Any\":13311,\"Ġpc\":13312,\"bal\":13313,\"Example\":13314,\"ĠSale\":13315,\"Ġstrip\":13316,\"ĠComp\":13317,\"Ġpresidential\":13318,\"Most\":13319,\"putation\":13320,\"(ref\":13321,\"ĠFour\":13322,\"_filename\":13323,\"Ġenforcement\":13324,\"Ø¯\":13325,\"ĠGeorg\":13326,\"weights\":13327,\"/l\":13328,\"Ġaggress\":13329,\"Ġdrawing\":13330,\"andy\":13331,\"<I\":13332,\"-j\":13333,\"aka\":13334,\"href\":13335,\"Ġteachers\":13336,\"_Q\":13337,\"(it\":13338,\"ĠMB\":13339,\"Ġtemporary\":13340,\"irebase\":13341,\"stra\":13342,\"æĹ¶\":13343,\"è´\":13344,\"(label\":13345,\"oup\":13346,\"Ġtopics\":13347,\"Ġportion\":13348,\"idos\":13349,\"ĠJewish\":13350,\"Ġrecovery\":13351,\"Ġstands\":13352,\"#[\":13353,\"Ġafternoon\":13354,\"ĠArticle\":13355,\"_att\":13356,\"Ġexplan\":13357,\"ĠPak\":13358,\".setOnClickListener\":13359,\".children\":13360,\"Ġik\":13361,\"+(\":13362,\"lag\":13363,\"Ġdisk\":13364,\"Ġcontrovers\":13365,\"\\\">&\":13366,\"asp\":13367,\"Ġwie\":13368,\"ĠAustralian\":13369,\"ĠYouTube\":13370,\"Attr\":13371,\"contains\":13372,\"duce\":13373,\"ĠMatt\":13374,\"atern\":13375,\"Ġvolunte\":13376,\"Ġnewsp\":13377,\"VP\":13378,\"oltip\":13379,\"Ġdelegate\":13380,\"_meta\":13381,\"Ġaccurate\":13382,\"ĠExample\":13383,\"%,\":13384,\"ĠDaily\":13385,\"Ġcabin\":13386,\"ĠSW\":13387,\"Ġlimits\":13388,\"kip\":13389,\"Ġarmy\":13390,\"Ġending\":13391,\"Ġboss\":13392,\"ĠDialog\":13393,\"Also\":13394,\"=\\\"#\\\"\":13395,\"ordan\":13396,\"rowse\":13397,\"-min\":13398,\"Ġ\\\"&\":13399,\"_loc\":13400,\"UX\":13401,\"Ġdevelopers\":13402,\"Ġaccuracy\":13403,\"Ġmaintenance\":13404,\"Ġheav\":13405,\"Ġfilters\":13406,\".ToolStrip\":13407,\"Ġnarr\":13408,\"ĠEmp\":13409,\"ORDER\":13410,\"ĠMobile\":13411,\".Serial\":13412,\".output\":13413,\".col\":13414,\"Material\":13415,\"uma\":13416,\"Ġconsumers\":13417,\"shift\":13418,\"Ġpued\":13419,\"Ġmini\":13420,\"collection\":13421,\"Ġkan\":13422,\".center\":13423,\"History\":13424,\"Ġbench\":13425,\"());\":13426,\"itories\":13427,\"Ġcrowd\":13428,\"_call\":13429,\"Ġpowers\":13430,\"-E\":13431,\"Ġdismiss\":13432,\"Ġtalks\":13433,\"ĠChannel\":13434,\"forward\":13435,\"_control\":13436,\"/src\":13437,\"iest\":13438,\"************************\":13439,\"Ġbeta\":13440,\"(color\":13441,\"_OBJECT\":13442,\"ĠApi\":13443,\"Ġeffectively\":13444,\"Camera\":13445,\"sd\":13446,\"ussy\":13447,\"Dict\":13448,\"ĠEffect\":13449,\"ibilities\":13450,\"Ġreturning\":13451,\"ĠFar\":13452,\"Ġ'')\":13453,\"Ġmodules\":13454,\"ilation\":13455,\"Ġ(%\":13456,\"TRGL\":13457,\"Ġstorm\":13458,\"onna\":13459,\"ĠEXP\":13460,\"Ġspons\":13461,\"Ġdispl\":13462,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":13463,\"fall\":13464,\"åĮ\":13465,\"ignKey\":13466,\"_US\":13467,\"etrics\":13468,\"Ġhandles\":13469,\"TL\":13470,\"_amount\":13471,\"owa\":13472,\"brand\":13473,\"ĠTool\":13474,\"Ġusual\":13475,\".Z\":13476,\"crement\":13477,\"adium\":13478,\"stock\":13479,\"Ġserving\":13480,\"ĠBon\":13481,\"Ġlinear\":13482,\"ĠTarget\":13483,\"ĠRadio\":13484,\"HL\":13485,\"Shader\":13486,\"omatic\":13487,\"agues\":13488,\"inity\":13489,\"diff\":13490,\"_iterator\":13491,\"quot\":13492,\"Ġ,Ċ\":13493,\"callback\":13494,\"Ġsymptoms\":13495,\"[_\":13496,\"ĠBul\":13497,\"ĠFeb\":13498,\"undo\":13499,\"_account\":13500,\"Ġtypedef\":13501,\"Ð¸Ñģ\":13502,\"tras\":13503,\"UserId\":13504,\"ĠPenn\":13505,\"ĠSupreme\":13506,\"}>\":13507,\"userId\":13508,\"ĠKim\":13509,\"Ġga\":13510,\"Ġartists\":13511,\"å¸\":13512,\"ĠAbstract\":13513,\"okemon\":13514,\"Ġham\":13515,\"oval\":13516,\"Ġcha\":13517,\"aten\":13518,\"åĨ\":13519,\"Fixed\":13520,\"Ġvulner\":13521,\"ĠParameters\":13522,\"quantity\":13523,\".Clear\":13524,\"ServletRequest\":13525,\"Ġya\":13526,\"Ġsoul\":13527,\"transaction\":13528,\"Ġsolo\":13529,\"Ġpairs\":13530,\"æĶ\":13531,\"ĠGre\":13532,\"_word\":13533,\"ĠCC\":13534,\"Ġgi\":13535,\"zie\":13536,\"Ġscheduled\":13537,\"rotation\":13538,\"gypt\":13539,\"ulous\":13540,\"::_\":13541,\"ĠEll\":13542,\"<!\":13543,\"ĉĉĠĠ\":13544,\"lp\":13545,\"aha\":13546,\"Copyright\":13547,\"Ġdram\":13548,\"Ġdiagram\":13549,\"ĠMem\":13550,\"Ġgarden\":13551,\"Comp\":13552,\"Ġattempts\":13553,\"uffix\":13554,\">()\":13555,\"Ġphilosoph\":13556,\"_rel\":13557,\"å¼\":13558,\"Ġsv\":13559,\".second\":13560,\"anto\":13561,\".Json\":13562,\"ĠTele\":13563,\"_local\":13564,\"_send\":13565,\"Ġaspects\":13566,\"ìĹ\":13567,\"IBLE\":13568,\"Ġrail\":13569,\"Ġwidely\":13570,\"ashed\":13571,\"iar\":13572,\"inf\":13573,\"upper\":13574,\"django\":13575,\"_results\":13576,\"issing\":13577,\"Ġequivalent\":13578,\"OUND\":13579,\"Ġty\":13580,\"Ġpotentially\":13581,\"Advertisement\":13582,\"ĠRecord\":13583,\"resentation\":13584,\"_widget\":13585,\"ounding\":13586,\"Ġreligion\":13587,\"Ġconsc\":13588,\"ĠLim\":13589,\".am\":13590,\"Html\":13591,\"Ġ':\":13592,\"PATH\":13593,\"_spec\":13594,\"orted\":13595,\"idades\":13596,\"_shape\":13597,\"Ġkeeps\":13598,\".Save\":13599,\"ĠLoc\":13600,\"ori\":13601,\"ĠTEST\":13602,\"unicip\":13603,\"Ġregions\":13604,\"Ġbelieves\":13605,\"/en\":13606,\"posite\":13607,\"{'\":13608,\"prepare\":13609,\"_const\":13610,\"sample\":13611,\"ĠWilliams\":13612,\"Ġstrt\":13613,\"_Get\":13614,\"ĠAndrew\":13615,\".active\":13616,\"Ġlayers\":13617,\"VisualStyle\":13618,\"azy\":13619,\"ĠKn\":13620,\"Ġacid\":13621,\"ĠAsia\":13622,\"Ġexcess\":13623,\"ĉmy\":13624,\"Ġkeyboard\":13625,\"ensus\":13626,\"Ġcrew\":13627,\"Ġmissed\":13628,\"master\":13629,\"ĠWild\":13630,\"Ġnewly\":13631,\"Ġwinner\":13632,\"Ġstub\":13633,\"icode\":13634,\".move\":13635,\"Domain\":13636,\"ĠSar\":13637,\"Ġforest\":13638,\"LED\":13639,\"claimer\":13640,\".exit\":13641,\"ĠWindow\":13642,\"Ġresistance\":13643,\"ĠCHECK\":13644,\"(\\\"-\":13645,\"ĠRyan\":13646,\"Ġpipe\":13647,\"Ġcoast\":13648,\"DEF\":13649,\"//!\":13650,\"_off\":13651,\"exit\":13652,\"Ġultimately\":13653,\"imitive\":13654,\"ĠKeep\":13655,\"Ġhistorical\":13656,\"Ġanyway\":13657,\"ĠJackson\":13658,\"ocker\":13659,\"ERN\":13660,\"ĠUINT\":13661,\"yntax\":13662,\"ERY\":13663,\"isms\":13664,\"Ġcn\":13665,\"Ġoccurs\":13666,\"Ġ;;\":13667,\"TextView\":13668,\"AE\":13669,\"/img\":13670,\"Ġyesterday\":13671,\"-default\":13672,\"Ġtiny\":13673,\"Ġproc\":13674,\"Ġalive\":13675,\"ĠREG\":13676,\".th\":13677,\"earing\":13678,\".getLogger\":13679,\"<link\":13680,\"_login\":13681,\"Folder\":13682,\"abc\":13683,\"lyphicon\":13684,\"Ð½Ð¾\":13685,\"Ġnoticed\":13686,\"odigo\":13687,\"Ġedition\":13688,\"imator\":13689,\".Enabled\":13690,\".parseInt\":13691,\"Ġyards\":13692,\"ĉĉĉĉĉĉĉĉĉĉĉĉ\":13693,\"Ġverbose\":13694,\"Ð»Ñı\":13695,\"_BY\":13696,\".login\":13697,\".*;Ċ\":13698,\"ĠMid\":13699,\"Ã©es\":13700,\"Ġglo\":13701,\"Ġbuildings\":13702,\"Ġze\":13703,\"ĠIter\":13704,\"Ġtube\":13705,\"ĠPot\":13706,\"\\\\M\":13707,\"<th\":13708,\"bridge\":13709,\"ĠScript\":13710,\"ĠModule\":13711,\"Ġvacc\":13712,\"Ġinstallation\":13713,\"vy\":13714,\"VisualStyleBackColor\":13715,\"ĠSM\":13716,\".total\":13717,\"bat\":13718,\"Ġfinds\":13719,\"Ġatmos\":13720,\"Subview\":13721,\"izard\":13722,\"Ġreplacement\":13723,\"licated\":13724,\"apis\":13725,\"Ġlogged\":13726,\"ĠLeft\":13727,\"Gui\":13728,\"_Type\":13729,\"tm\":13730,\"Pad\":13731,\"Ġhousehold\":13732,\"Ġrele\":13733,\"Ġproposal\":13734,\"_CLASS\":13735,\"::::\":13736,\"Ġinfrastructure\":13737,\"Inject\":13738,\"/html\":13739,\"Ġads\":13740,\"izza\":13741,\"Ġmg\":13742,\"ctrine\":13743,\"%Ċ\":13744,\"<html\":13745,\"-image\":13746,\"Ġattorney\":13747,\"<m\":13748,\"(',\":13749,\"Ġcann\":13750,\"Ġprintln\":13751,\"oose\":13752,\"Ġyellow\":13753,\".exp\":13754,\"payment\":13755,\"ĠtableView\":13756,\"away\":13757,\"Ġopposition\":13758,\"ĠAgain\":13759,\"ĠHandle\":13760,\"Ġexclusive\":13761,\"inar\":13762,\"Ã©r\":13763,\"Ð¾Ð±\":13764,\"ĠCODE\":13765,\"emporary\":13766,\"Ġreact\":13767,\"pipe\":13768,\"cz\":13769,\".activity\":13770,\"Ġlargely\":13771,\"Ġdiss\":13772,\"axy\":13773,\"esis\":13774,\"ĠRen\":13775,\"Ġcorn\":13776,\".UseVisualStyleBackColor\":13777,\"days\":13778,\"Ġfruit\":13779,\"Insert\":13780,\"_enc\":13781,\"Est\":13782,\"_dec\":13783,\"ĠLuc\":13784,\"ĠÃ¼ber\":13785,\"parameters\":13786,\"PERT\":13787,\"express\":13788,\"_profile\":13789,\"Unknown\":13790,\"Ġrevolution\":13791,\".address\":13792,\"_require\":13793,\"Ġuniform\":13794,\"ĠPack\":13795,\"lar\":13796,\"ĠUITableView\":13797,\"Ġdepends\":13798,\"Validation\":13799,\"confirm\":13800,\"Owner\":13801,\"Ġtrib\":13802,\"het\":13803,\"ĠIde\":13804,\"ansas\":13805,\"Language\":13806,\"uet\":13807,\"ĠPo\":13808,\"ĠSteve\":13809,\"Ġcontest\":13810,\"_DEFAULT\":13811,\"Ġapparently\":13812,\"REEN\":13813,\"Ġfrequently\":13814,\"Ġtradition\":13815,\"ocolate\":13816,\"SI\":13817,\"ĠArgument\":13818,\"Focus\":13819,\"erte\":13820,\"ĠLayout\":13821,\"Ġdx\":13822,\"Ġgenerator\":13823,\"ĠWait\":13824,\"Policy\":13825,\"lights\":13826,\".Execute\":13827,\"Py\":13828,\"Ġbedroom\":13829,\"eda\":13830,\"raid\":13831,\"ĉsize\":13832,\"Ġancient\":13833,\"Ġpump\":13834,\"Ġdw\":13835,\"Ġ(!(\":13836,\"Ġspecify\":13837,\"(status\":13838,\"ĠFBI\":13839,\".exception\":13840,\"Ġremark\":13841,\"lymp\":13842,\"antee\":13843,\"Upload\":13844,\"ernet\":13845,\"é¡\":13846,\"inent\":13847,\"ĠRender\":13848,\"dm\":13849,\"ĠMemory\":13850,\"rich\":13851,\"ĠTools\":13852,\"Ġkne\":13853,\"Ġperm\":13854,\"bad\":13855,\"Ġdinner\":13856,\".reset\":13857,\"ĠjLabel\":13858,\"Feature\":13859,\".Service\":13860,\"Ġ({Ċ\":13861,\"Ġreferred\":13862,\".classList\":13863,\"ĠinitWith\":13864,\"ĠTextView\":13865,\"Ġneither\":13866,\"Ġcounty\":13867,\"Ġ\\\"{\":13868,\"ç§\":13869,\"Ġtack\":13870,\"className\":13871,\"ĠUSER\":13872,\"Ġrenew\":13873,\"``\":13874,\"getName\":13875,\"Ġbrown\":13876,\"Errors\":13877,\"erto\":13878,\"Ġsustain\":13879,\"SO\":13880,\"letes\":13881,\"ĠInvalid\":13882,\"Ġenemies\":13883,\"unge\":13884,\"Ġexistence\":13885,\"erra\":13886,\"ĊĠĠĊ\":13887,\"utorial\":13888,\"#a\":13889,\"pay\":13890,\"charge\":13891,\"ĠIre\":13892,\"atest\":13893,\"Ġexplos\":13894,\"Ġfired\":13895,\"NER\":13896,\"ĠTy\":13897,\"icion\":13898,\"Uri\":13899,\"Ġobviously\":13900,\"ĠColum\":13901,\"Ġ'+\":13902,\"ĠDevice\":13903,\"-related\":13904,\"_ARG\":13905,\"Ġvor\":13906,\"ĠLesser\":13907,\"_OP\":13908,\"Serializer\":13909,\"Ġupgrade\":13910,\"Light\":13911,\"Ġcodes\":13912,\"++;čĊ\":13913,\"Ġwrites\":13914,\"food\":13915,\"ĠÃ©t\":13916,\"@section\":13917,\"Ġtracks\":13918,\"Ġseriously\":13919,\"cht\":13920,\"(sizeof\":13921,\"Ġimmediate\":13922,\"Ġscientists\":13923,\"Ġ{$\":13924,\"_ne\":13925,\".AnchorStyles\":13926,\"Ġaccommod\":13927,\"ĠHarry\":13928,\"Ġsight\":13929,\"ĠPalest\":13930,\"ersistent\":13931,\"ĠÑĥ\":13932,\"-input\":13933,\"Ġcoordinates\":13934,\"Â·\":13935,\"Welcome\":13936,\".conf\":13937,\"Ġgrew\":13938,\"Ġbold\":13939,\"ĠCPU\":13940,\"(my\":13941,\"Ġperfectly\":13942,\"Ġmoments\":13943,\"ĠMovie\":13944,\"-data\":13945,\"ystal\":13946,\"_WIDTH\":13947,\"ĠScreen\":13948,\"æĿ\":13949,\"Ġdisap\":13950,\"Ġreduction\":13951,\".GetComponent\":13952,\"_MODULE\":13953,\"Ġgeneric\":13954,\"Ġdy\":13955,\"aller\":13956,\"Ġcurl\":13957,\"ĠBody\":13958,\"Ġbanks\":13959,\",t\":13960,\"avg\":13961,\"Ġevil\":13962,\"Ġmanufacturer\":13963,\"Ġreceiver\":13964,\"Columns\":13965,\"Ġingredients\":13966,\"ĉout\":13967,\"ques\":13968,\".Load\":13969,\"Ġslowly\":13970,\"ĠTown\":13971,\"ĠCell\":13972,\"_normal\":13973,\"_prefix\":13974,\"ĠAlert\":13975,\"(\\\"{\":13976,\"Ã¤r\":13977,\"âĢľThe\":13978,\"ĠMD\":13979,\"Ġcourses\":13980,\"athan\":13981,\"éĻ\":13982,\"occ\":13983,\"ĠSER\":13984,\"esign\":13985,\"Addr\":13986,\"=['\":13987,\"(\\\"./\":13988,\"]}\":13989,\".font\":13990,\"ĠInstagram\":13991,\"ĠBorder\":13992,\"oda\":13993,\"Ġhall\":13994,\"Ġrum\":13995,\"_bit\":13996,\"Ġsaving\":13997,\"_down\":13998,\"Random\":13999,\"_register\":14000,\"(Context\":14001,\"Ġopposite\":14002,\"Room\":14003,\"YES\":14004,\"Ð°Ð½Ð¸\":14005,\"Ġenjoyed\":14006,\"_run\":14007,\"Clear\":14008,\"âĢĺ\":14009,\"ĠFord\":14010,\"onic\":14011,\"osten\":14012,\"\\\"])\":14013,\"_auth\":14014,\"//čĊ\":14015,\"Ġsufficient\":14016,\"LES\":14017,\"Ġphen\":14018,\"Ġoh\":14019,\"_csv\":14020,\"Ġroutine\":14021,\".AreEqual\":14022,\"aylor\":14023,\"Ġbasket\":14024,\"_COMM\":14025,\"rypted\":14026,\"Sim\":14027,\"ĠShop\":14028,\"Ġstudio\":14029,\"atos\":14030,\"(W\":14031,\"[string\":14032,\"Ã¤t\":14033,\"oga\":14034,\"Ġshr\":14035,\"Ġsick\":14036,\"Another\":14037,\"Ġdoors\":14038,\"_NE\":14039,\"ĠTHREE\":14040,\".order\":14041,\"razil\":14042,\"Ġmaps\":14043,\"_TRUE\":14044,\"translate\":14045,\"Ġnearby\":14046,\"Ġnach\":14047,\"LOAT\":14048,\"batch\":14049,\"Ġlux\":14050,\"ashes\":14051,\"angers\":14052,\"âĢ¦âĢ¦\":14053,\"_EVENT\":14054,\"_UP\":14055,\"Ġacts\":14056,\"inv\":14057,\"_METHOD\":14058,\"ccion\":14059,\"Ġretain\":14060,\"utch\":14061,\"ĠÐ±\":14062,\"Ġknowing\":14063,\"Ġrepresenting\":14064,\"NOT\":14065,\"png\":14066,\"Contract\":14067,\"Ġtrick\":14068,\"ĠEdition\":14069,\"uplicate\":14070,\"Ġcontrolled\":14071,\"cfg\":14072,\"javascript\":14073,\"Ġmilk\":14074,\"White\":14075,\"Sequence\":14076,\"awa\":14077,\"Ġdiscussed\":14078,\"ĠBush\":14079,\"ĠYES\":14080,\".factory\":14081,\"tags\":14082,\"Ġtact\":14083,\"Ġsid\":14084,\"$$\":14085,\"ĠEnum\":14086,\"Ġframes\":14087,\"});\":14088,\"Ġregul\":14089,\"'];čĊ\":14090,\"Region\":14091,\"fff\":14092,\"Ġcro\":14093,\"(com\":14094,\"=\\\"+\":14095,\"Student\":14096,\"Ġdisappoint\":14097,\"RESULT\":14098,\"Counter\":14099,\"Ġbutter\":14100,\"ĠHa\":14101,\"ĠDigital\":14102,\"Ġbid\":14103,\"\\\">{{\":14104,\"ingers\":14105,\"ĠCountry\":14106,\"_tpl\":14107,\"\\\"])Ċ\":14108,\"/k\":14109,\"dating\":14110,\":#\":14111,\"ĠDATA\":14112,\"ynchron\":14113,\"_body\":14114,\"ollywood\":14115,\"Ġvalor\":14116,\"ipient\":14117,\"oft\":14118,\"UBL\":14119,\"docs\":14120,\"Ġsynchron\":14121,\"Ġformed\":14122,\"ruption\":14123,\"Ġlista\":14124,\"RequestMapping\":14125,\"Ġvillage\":14126,\"Ġknock\":14127,\"ocs\":14128,\"\\\"{\":14129,\"_flags\":14130,\"Ġtransactions\":14131,\"Ġhabit\":14132,\"ĠJe\":14133,\"eden\":14134,\"Ġaircraft\":14135,\"irk\":14136,\"ĠAB\":14137,\"Ġfairly\":14138,\".inter\":14139,\".Act\":14140,\"Ġinstrument\":14141,\"removeClass\":14142,\".command\":14143,\"Ñī\":14144,\"ĉmem\":14145,\"(min\":14146,\"Ġot\":14147,\"Ġcolle\":14148,\"=s\":14149,\"timeout\":14150,\"Ġids\":14151,\"ĠMatch\":14152,\"ijn\":14153,\"zero\":14154,\"Ġnetworks\":14155,\".gov\":14156,\"Ġintel\":14157,\"Ġsections\":14158,\"outine\":14159,\"(cmd\":14160,\"(dir\":14161,\"ĠLIABILITY\":14162,\"ĠBlog\":14163,\"Ġbridge\":14164,\"ĠCV\":14165,\"convert\":14166,\"Ġ\\\")Ċ\":14167,\"ĠBern\":14168,\"_PO\":14169,\"eval\":14170,\"(set\":14171,\"tool\":14172,\"Ġpayments\":14173,\"Behaviour\":14174,\"Ġconcrete\":14175,\"Ġelig\":14176,\"Ġacceler\":14177,\"Ġhole\":14178,\"_o\":14179,\"TEGER\":14180,\"Ġgraphics\":14181,\"Own\":14182,\"Formatter\":14183,\"onder\":14184,\"Ġpackages\":14185,\"/a\":14186,\"ĠKnow\":14187,\"OrDefault\":14188,\"Ġduty\":14189,\"Wait\":14190,\"Ð½Ð°\":14191,\"_record\":14192,\"[t\":14193,\"Mesh\":14194,\"Ġongoing\":14195,\".beans\":14196,\"Ġtan\":14197,\"Ġinterpret\":14198,\"asters\":14199,\"QUAL\":14200,\"Ġlegs\":14201,\"\\\\Request\":14202,\"-file\":14203,\"_mutex\":14204,\"ĠSaint\":14205,\"//#\":14206,\"Ġprohib\":14207,\"(info\":14208,\":=\":14209,\"linux\":14210,\"Ġblo\":14211,\"otic\":14212,\"ĉfinal\":14213,\"_exp\":14214,\"ĠStop\":14215,\"aping\":14216,\"(saved\":14217,\"_push\":14218,\"Ġease\":14219,\"_FR\":14220,\"ponsive\":14221,\"strcmp\":14222,\":ĊĊĊĊ\":14223,\"ä»¶\":14224,\"oli\":14225,\"Ġextreme\":14226,\"Ġprofessor\":14227,\"Images\":14228,\".IOException\":14229,\"Ġaddresses\":14230,\"plemented\":14231,\"Ġincorpor\":14232,\"ĠuseEffect\":14233,\"_OF\":14234,\"ĠDa\":14235,\"nombre\":14236,\"IRST\":14237,\"Ġdiscrim\":14238,\"Ġcompens\":14239,\"gregate\":14240,\"ancell\":14241,\"aches\":14242,\"ĠCriteria\":14243,\"$result\":14244,\"Destroy\":14245,\"Ġsecondary\":14246,\"Watch\":14247,\"ĠSem\":14248,\"ĠMcC\":14249,\"Ġacademic\":14250,\"Upper\":14251,\"::~\":14252,\"utral\":14253,\"ĠDog\":14254,\"aded\":14255,\"Validator\":14256,\"Ġderived\":14257,\"ĠsetTimeout\":14258,\"ĠKen\":14259,\"Ġtypical\":14260,\"ĠBob\":14261,\"Ġbounds\":14262,\"ĠSeason\":14263,\"Ġcrazy\":14264,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":14265,\"-router\":14266,\"ittest\":14267,\"ĠMir\":14268,\"Ġemotional\":14269,\",v\":14270,\"cn\":14271,\"/st\":14272,\"å½\":14273,\"onom\":14274,\"Ġdeclared\":14275,\">.\":14276,\"ailing\":14277,\"Ġ/*<<<\":14278,\"Ġnormally\":14279,\"(Me\":14280,\"evin\":14281,\"likely\":14282,\"Ġpointed\":14283,\"ĠStack\":14284,\"Ġwalls\":14285,\".Vector\":14286,\"mean\":14287,\"]]Ċ\":14288,\"Ġlistening\":14289,\"adv\":14290,\"Ġswap\":14291,\"IFT\":14292,\"Øª\":14293,\".argv\":14294,\"uls\":14295,\"<option\":14296,\"notations\":14297,\"Ġemails\":14298,\"ĠUkr\":14299,\"asta\":14300,\"ĠThus\":14301,\"ĠStone\":14302,\"Ġappeal\":14303,\".âĢĻ\":14304,\"Ġregulations\":14305,\"Preferences\":14306,\"ĠPhone\":14307,\"ulf\":14308,\"ĠDR\":14309,\"Ġtechnologies\":14310,\"Ġparagraph\":14311,\"Ġnecessarily\":14312,\".each\":14313,\"<float\":14314,\"resa\":14315,\"Ġunderst\":14316,\"Ġfinger\":14317,\"pressed\":14318,\"-by\":14319,\"iffer\":14320,\"watch\":14321,\"ĠBa\":14322,\"AIM\":14323,\"Ġweights\":14324,\"ĠRon\":14325,\"')}}\":14326,\"[self\":14327,\"----------Ċ\":14328,\"periment\":14329,\"ĠtoString\":14330,\"xic\":14331,\"ĠCamera\":14332,\"!ĊĊĊĊ\":14333,\"aurant\":14334,\"Prefix\":14335,\"Ġinstitutions\":14336,\":int\":14337,\"Ġexposure\":14338,\"pattern\":14339,\"ĠLinux\":14340,\".number\":14341,\"redient\":14342,\"ArgumentException\":14343,\"ĠChief\":14344,\"\\\"},\":14345,\"Ġelectronic\":14346,\"rong\":14347,\"erd\":14348,\"spNet\":14349,\"rait\":14350,\"/',\":14351,\"ĠOhio\":14352,\"Controllers\":14353,\"Ġcontinuing\":14354,\"ĠTemplate\":14355,\"ĠEth\":14356,\"sz\":14357,\"/env\":14358,\"Env\":14359,\"%.\":14360,\"arters\":14361,\")((\":14362,\"ĠTABLE\":14363,\"ĠÃ®\":14364,\"perature\":14365,\"progress\":14366,\"Pres\":14367,\"ê°\":14368,\"implementation\":14369,\"Ġbien\":14370,\"Ġstreets\":14371,\"_MSG\":14372,\"News\":14373,\"###\":14374,\":/\":14375,\"Ġcutting\":14376,\"xB\":14377,\"ressed\":14378,\"_ENABLE\":14379,\"lab\":14380,\"Ġcausing\":14381,\"]));Ċ\":14382,\"bra\":14383,\"xFFFF\":14384,\"illy\":14385,\"pletion\":14386,\"will\":14387,\"_bar\":14388,\"Ġstructures\":14389,\"ĠImp\":14390,\"ÛĮ\":14391,\"Ġ<>\":14392,\"Ġ----------------\":14393,\"_BUFFER\":14394,\".dir\":14395,\"Ġplain\":14396,\"Ġpeer\":14397,\"gg\":14398,\"oints\":14399,\"Ġsomewhat\":14400,\"Ġwet\":14401,\"Ġemployment\":14402,\"Ġtickets\":14403,\"irms\":14404,\"Ġtuple\":14405,\"sis\":14406,\"$sql\":14407,\"rig\":14408,\"Ġconversion\":14409,\"Ġges\":14410,\"Ġconfigure\":14411,\"egr\":14412,\"ĠCa\":14413,\"Ġ__('\":14414,\"ouston\":14415,\".token\":14416,\"Black\":14417,\"Ġmagazine\":14418,\"AW\":14419,\".IN\":14420,\"osing\":14421,\"Ġbroke\":14422,\"ĠCru\":14423,\"DELETE\":14424,\"Ġdestroyed\":14425,\"(Math\":14426,\"Ġapproval\":14427,\"-dom\":14428,\"ĠIII\":14429,\"tableView\":14430,\"Ġdesigns\":14431,\"Ġcrushing\":14432,\"Ġconsent\":14433,\"dirname\":14434,\"omp\":14435,\"Ġcrypt\":14436,\"?(\":14437,\"orough\":14438,\".o\":14439,\"ĉlist\":14440,\"amsung\":14441,\".\\\"\\\"\\\"Ċ\":14442,\"erring\":14443,\"Google\":14444,\"_pair\":14445,\"_INIT\":14446,\"remarks\":14447,\"Ġgear\":14448,\"Fill\":14449,\"life\":14450,\"}\\\")Ċ\":14451,\"Ġsuitable\":14452,\"Ġsurprised\":14453,\"_REQUEST\":14454,\"Ġmanifest\":14455,\"atten\":14456,\"Ġfrustr\":14457,\"ovement\":14458,\".click\":14459,\"Ġii\":14460,\"Ġexpansion\":14461,\"igs\":14462,\"Parse\":14463,\".Regular\":14464,\"Rob\":14465,\"_layout\":14466,\"ìł\":14467,\"Ġtranslation\":14468,\"ĠBeaut\":14469,\"Best\":14470,\"_COLOR\":14471,\"<label\":14472,\"Ġliquid\":14473,\"ITS\":14474,\"Ġprod\":14475,\"Ġoperate\":14476,\"UIKit\":14477,\"Ġnatur\":14478,\"argument\":14479,\"_detail\":14480,\"ĠCentre\":14481,\"Ġ\\\"--\":14482,\"Ġ}}\\\"\":14483,\"locale\":14484,\".tv\":14485,\"_seq\":14486,\"Ġupcoming\":14487,\"Chart\":14488,\"ĠDivision\":14489,\"Ġclinical\":14490,\"Company\":14491,\"Separ\":14492,\"las\":14493,\"ĠHun\":14494,\":s\":14495,\"Ġheading\":14496,\"Ð¾Ð³\":14497,\"Ġ\\\"\\\");Ċ\":14498,\"[id\":14499,\"bia\":14500,\"Ġstretch\":14501,\"icide\":14502,\"Ġreprodu\":14503,\".project\":14504,\"legend\":14505,\"enders\":14506,\"Ġresponses\":14507,\"Ġont\":14508,\"ritical\":14509,\"Ġrefuge\":14510,\"ĠLi\":14511,\"Ġ:ĊĊ\":14512,\"ĠThree\":14513,\".controller\":14514,\"_INDEX\":14515,\"_FOR\":14516,\"\\\\Models\":14517,\"jax\":14518,\"ĉexit\":14519,\"Ġâĸ\":14520,\"Ġcovers\":14521,\"ĉy\":14522,\"-.\":14523,\"INDOW\":14524,\"Ġfails\":14525,\"includes\":14526,\"Ġfault\":14527,\"Ġly\":14528,\"Ã±o\":14529,\".slice\":14530,\"ILED\":14531,\"ĠPur\":14532,\"ĠAsian\":14533,\"_batch\":14534,\".Max\":14535,\"vl\":14536,\"ĠCOPYRIGHT\":14537,\"Ġgiant\":14538,\"ĠManual\":14539,\"ĠCopy\":14540,\"ClassName\":14541,\"Health\":14542,\"Cursor\":14543,\"IBOutlet\":14544,\"Ġtwe\":14545,\"æ³\":14546,\"_labels\":14547,\"Ġcollected\":14548,\"Ġfurniture\":14549,\"Ġdealing\":14550,\"Controls\":14551,\"ĠHotel\":14552,\"cks\":14553,\"Ġchose\":14554,\"âĶĢ\":14555,\"odd\":14556,\"SR\":14557,\"ÙĬ\":14558,\"ìĦ\":14559,\"Ġaccord\":14560,\"ĠMove\":14561,\"ĠMode\":14562,\"ĠMock\":14563,\"Ġthreads\":14564,\"++++\":14565,\"ĠOptions\":14566,\"Refresh\":14567,\"ĠDid\":14568,\"']->\":14569,\"ucc\":14570,\"_channel\":14571,\".abs\":14572,\"Ġ{},Ċ\":14573,\"ĠWal\":14574,\"erior\":14575,\"Ġmainly\":14576,\"ĠDriver\":14577,\"NotFoundException\":14578,\"Ġcounts\":14579,\"eam\":14580,\"Ġ&=\":14581,\"Question\":14582,\"ĠAli\":14583,\"Ġanymore\":14584,\"detail\":14585,\"tail\":14586,\"Ġmile\":14587,\"ĠFair\":14588,\"Ġsorry\":14589,\"Ġsurrounding\":14590,\"Ġadm\":14591,\"Dev\":14592,\"Ġmarijuana\":14593,\"ĠSound\":14594,\"ĠAsh\":14595,\"FD\":14596,\"Team\":14597,\".port\":14598,\"Ġ[]ĊĊ\":14599,\"ubble\":14600,\"Ġasc\":14601,\"Ġintention\":14602,\"Acc\":14603,\"chi\":14604,\"usters\":14605,\"Ġinspired\":14606,\"seg\":14607,\"CLU\":14608,\"Ġmanip\":14609,\"Metadata\":14610,\"Connect\":14611,\"ĠBeh\":14612,\"Ġfindings\":14613,\"Ġassembly\":14614,\"world\":14615,\"Ġremained\":14616,\"Ġuid\":14617,\"(.\":14618,\"Ġmx\":14619,\"Loop\":14620,\"ĊĊĊĊĊ\":14621,\"Ġfantastic\":14622,\"who\":14623,\"aki\":14624,\"ĠBasic\":14625,\"ĠYet\":14626,\"ĠUsers\":14627,\"ikip\":14628,\"Ġheads\":14629,\"ĠMichigan\":14630,\"_it\":14631,\"ĠToronto\":14632,\"Ġrecording\":14633,\"Ġsubmitted\":14634,\"_variable\":14635,\"mediate\":14636,\".graphics\":14637,\"Ġstood\":14638,\"Ġrear\":14639,\"velocity\":14640,\"_MESSAGE\":14641,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":14642,\"roles\":14643,\"ĠTour\":14644,\"_year\":14645,\"endment\":14646,\"amps\":14647,\"ĠIreland\":14648,\"mal\":14649,\"Ġyounger\":14650,\"Ġstruggle\":14651,\"Ġcable\":14652,\"ĠSDL\":14653,\"('-\":14654,\"anes\":14655,\"ĠNeed\":14656,\".Row\":14657,\"Pol\":14658,\"ĠPH\":14659,\"_script\":14660,\"agem\":14661,\"ĠBas\":14662,\"_space\":14663,\".loc\":14664,\":i\":14665,\"adr\":14666,\"Ġengineering\":14667,\"iten\":14668,\")&\":14669,\"Ġuk\":14670,\"ĠLittle\":14671,\"_COUNT\":14672,\"xA\":14673,\"ArrayList\":14674,\"æį\":14675,\"Ġ\\\"\\\")Ċ\":14676,\"Anchor\":14677,\"Ġhang\":14678,\"twitter\":14679,\"Ġcompetitive\":14680,\".src\":14681,\"ãģĹ\":14682,\"Ġtranslate\":14683,\"ĠCreates\":14684,\"ooks\":14685,\"ĠRoll\":14686,\"'''Ċ\":14687,\"/sh\":14688,\"some\":14689,\"Encoding\":14690,\".resolve\":14691,\"Ġdesigner\":14692,\"ĠStorage\":14693,\"Ġza\":14694,\"ĠNever\":14695,\"Ġsomewhere\":14696,\"Ġboxes\":14697,\".source\":14698,\"Ġpygame\":14699,\"Ġgrown\":14700,\".tw\":14701,\"()),Ċ\":14702,\"',['\":14703,\"Ġopponent\":14704,\"(src\":14705,\".layer\":14706,\"APP\":14707,\"ĠActiv\":14708,\"Ġguests\":14709,\"ĠVALUES\":14710,\"};ĊĊĊ\":14711,\".native\":14712,\"Ġamounts\":14713,\".RE\":14714,\"Ġclone\":14715,\"Ġweren\":14716,\"Ġ\\\"<<\":14717,\"_ac\":14718,\"Ġbreaking\":14719,\"Ġreliable\":14720,\".POST\":14721,\"ĠSky\":14722,\"Ġ'&\":14723,\"ĠsavedInstanceState\":14724,\"asting\":14725,\"illion\":14726,\"comments\":14727,\"ulty\":14728,\".menu\":14729,\"/config\":14730,\"ĠĊĊĊ\":14731,\"TODO\":14732,\"Ġpurchased\":14733,\"_cor\":14734,\"ĉauto\":14735,\"CompatActivity\":14736,\"complete\":14737,\"_graph\":14738,\"isodes\":14739,\"Ġsituations\":14740,\"ĠHor\":14741,\"Receive\":14742,\"âĢľWe\":14743,\"Ġentities\":14744,\".assertEquals\":14745,\"Ð¾Ðº\":14746,\"ĠSans\":14747,\"vince\":14748,\"rompt\":14749,\"=Ċ\":14750,\"Ġ/.\":14751,\".Select\":14752,\"ylv\":14753,\"Ġbatt\":14754,\"Audio\":14755,\"Ġincreasingly\":14756,\".Bundle\":14757,\"Ġexplains\":14758,\"theast\":14759,\".offset\":14760,\"Ġhal\":14761,\"Ġtechnique\":14762,\"_limit\":14763,\"Ġdrawn\":14764,\"AYER\":14765,\"Ġfeatured\":14766,\"yyyy\":14767,\"atin\":14768,\"phen\":14769,\"achel\":14770,\"!\\\\\":14771,\"lower\":14772,\"ĠGR\":14773,\"Ġpag\":14774,\"ĠParse\":14775,\"Ġtou\":14776,\"ä¸Ģ\":14777,\"Distance\":14778,\"IndexPath\":14779,\"Ġhell\":14780,\"sim\":14781,\"UTTON\":14782,\"Usage\":14783,\"elenium\":14784,\"ĠFall\":14785,\"Ġ\\\".$\":14786,\"ĠMu\":14787,\"Ġcruc\":14788,\"Ġsont\":14789,\"REFIX\":14790,\"Ġinterior\":14791,\"ĠOlymp\":14792,\".AutoScale\":14793,\"para\":14794,\"AxisAlignment\":14795,\"Ġriver\":14796,\"Dto\":14797,\"Ġwithdraw\":14798,\"React\":14799,\"-class\":14800,\"before\":14801,\"_alloc\":14802,\"Contents\":14803,\"ĠWas\":14804,\"ICT\":14805,\"Ġformula\":14806,\"Ġindicates\":14807,\"ĠĠĠĠĊĊ\":14808,\"_store\":14809,\"itting\":14810,\"ĠItalian\":14811,\"_Set\":14812,\"_report\":14813,\"Ġpid\":14814,\"_VER\":14815,\"Ġwins\":14816,\"ĠCloud\":14817,\"\\\"){Ċ\":14818,\"chester\":14819,\"Ġdenied\":14820,\"Ġwird\":14821,\"ĠStep\":14822,\"Ġinvestors\":14823,\"bold\":14824,\"_display\":14825,\"ouver\":14826,\"orer\":14827,\"Reset\":14828,\"Ġsurgery\":14829,\"Ġstrategies\":14830,\"/material\":14831,\"_unit\":14832,\"Ġcouncil\":14833,\".Per\":14834,\"ĠâĢŀ\":14835,\"Ġreform\":14836,\"Framework\":14837,\"Ġlisting\":14838,\"_btn\":14839,\"Ġbis\":14840,\"%d\":14841,\"egas\":14842,\"Ġsuddenly\":14843,\"_SER\":14844,\"Ġao\":14845,\"_directory\":14846,\"fas\":14847,\"Ġpremium\":14848,\"Ġtracking\":14849,\"ĠBL\":14850,\"Ġmature\":14851,\"Ġbathroom\":14852,\"Ġ'/'\":14853,\"ĠÄĳ\":14854,\"Performed\":14855,\"Ġsoldiers\":14856,\"arnings\":14857,\"Ġwalked\":14858,\"-con\":14859,\"bottom\":14860,\"Ġsurprising\":14861,\"Ġgene\":14862,\"Usuario\":14863,\".DEFAULT\":14864,\"ĠMIT\":14865,\"CODE\":14866,\"ĠEgypt\":14867,\"picker\":14868,\"ysql\":14869,\"ATURE\":14870,\"details\":14871,\"ĠConference\":14872,\"Information\":14873,\"ĠMail\":14874,\"-down\":14875,\"raries\":14876,\"bro\":14877,\"Ġsubjects\":14878,\"Ġ'*\":14879,\"è¯·\":14880,\"orient\":14881,\":@\":14882,\"verbose\":14883,\"EF\":14884,\"Ġtoler\":14885,\"engers\":14886,\"Ġendpoint\":14887,\"Ġstrange\":14888,\"Ġcolon\":14889,\"Ġpreferred\":14890,\"dep\":14891,\"ĠEV\":14892,\"ARRAY\":14893,\"Ġwhe\":14894,\"Ġpup\":14895,\"_nodes\":14896,\"Ġtalked\":14897,\"Ġinstitution\":14898,\"dbc\":14899,\"Ġexposed\":14900,\"teen\":14901,\"ĠFront\":14902,\"TT\":14903,\"_NONE\":14904,\"\\\\/\\\\/\":14905,\"program\":14906,\"Ġencourage\":14907,\".`\":14908,\"shire\":14909,\"ĠIslam\":14910,\"een\":14911,\"NI\":14912,\"'\\\"\":14913,\".Width\":14914,\"Ġliked\":14915,\"Ġ{...\":14916,\"ĠSystems\":14917,\"Ġvotre\":14918,\"Ġmanufacturing\":14919,\"Converter\":14920,\"ĠInf\":14921,\"ìļ\":14922,\"DTO\":14923,\"Ġinches\":14924,\"Ġà¤\":14925,\"Ã¹\":14926,\"ĠCharles\":14927,\"BU\":14928,\"\\\"));ĊĊ\":14929,\"ĠLabor\":14930,\"unn\":14931,\"Ġestim\":14932,\"mobile\":14933,\"ĠLearn\":14934,\"_CALL\":14935,\"âĦ\":14936,\"Ġindices\":14937,\"Ġtub\":14938,\"ikipedia\":14939,\"Cost\":14940,\"rowable\":14941,\"ë¡\":14942,\"gage\":14943,\"Ġfunctionality\":14944,\"uzzle\":14945,\"emos\":14946,\".lib\":14947,\"Ġdass\":14948,\"ÐµÐº\":14949,\"enna\":14950,\"Ġshots\":14951,\"Ġrestore\":14952,\"/D\":14953,\"ForKey\":14954,\"],[\":14955,\"alias\":14956,\"lint\":14957,\".stream\":14958,\"æł\":14959,\"_FORMAT\":14960,\"Ġsilver\":14961,\".repository\":14962,\"Ġlegisl\":14963,\".Border\":14964,\"_features\":14965,\"Permission\":14966,\"Ġhouses\":14967,\"ĠWars\":14968,\"_COMP\":14969,\"Ġinjuries\":14970,\"Ġconstantly\":14971,\"flutter\":14972,\"ENU\":14973,\"ĠConf\":14974,\"Ġrecognized\":14975,\"Ġpractical\":14976,\"Ġdecent\":14977,\"BJ\":14978,\"]);\":14979,\"asty\":14980,\"ĠActivity\":14981,\"-mode\":14982,\"Ġslide\":14983,\".IsNullOrEmpty\":14984,\"ĠYOU\":14985,\"Power\":14986,\"indices\":14987,\"Ġqualified\":14988,\"Ġthrown\":14989,\"hello\":14990,\"ĠNick\":14991,\"lah\":14992,\"assembly\":14993,\"ĠSmall\":14994,\"olding\":14995,\"Should\":14996,\"ĠSilver\":14997,\"(savedInstanceState\":14998,\"Ġtoggle\":14999,\".Not\":15000,\"Ctrl\":15001,\":nil\":15002,\"ĠContinue\":15003,\"ĠBoot\":15004,\"æī\":15005,\"ĠMur\":15006,\"don\":15007,\"ĠFA\":15008,\"Snapshot\":15009,\"Ġassociation\":15010,\"fox\":15011,\",a\":15012,\"azione\":15013,\"])čĊ\":15014,\"CTYPE\":15015,\"Ġfade\":15016,\"ĠDar\":15017,\".navigation\":15018,\"Ġluck\":15019,\"SCRI\":15020,\"ĠDead\":15021,\"Ġterminal\":15022,\"_LENGTH\":15023,\"Ġefficiency\":15024,\"Ġunw\":15025,\"Ġnarrow\":15026,\"imento\":15027,\"(Color\":15028,\"ĠSea\":15029,\"_area\":15030,\",A\":15031,\"_opt\":15032,\"ĠHillary\":15033,\".task\":15034,\"ĠJac\":15035,\"asted\":15036,\"ĠAdam\":15037,\"ĠIllegal\":15038,\"Ġsearching\":15039,\"InstanceOf\":15040,\"Java\":15041,\"ĠFormat\":15042,\"Ġrealized\":15043,\"ĠChildren\":15044,\"Ġkil\":15045,\"(frame\":15046,\"âĢĿ.ĊĊ\":15047,\"Ġscenario\":15048,\"\\\"]);Ċ\":15049,\"Ġincredible\":15050,\"lix\":15051,\"IOException\":15052,\"ĠQuest\":15053,\"ilty\":15054,\"Ġunlock\":15055,\"âĤ¬\":15056,\"Ġreferences\":15057,\"ĠVert\":15058,\"Binding\":15059,\"egative\":15060,\"Ġwrap\":15061,\".database\":15062,\"(content\":15063,\"Buf\":15064,\"ĠTrad\":15065,\"ĠAud\":15066,\"trace\":15067,\".mock\":15068,\"Ġtherapy\":15069,\"ĉL\":15070,\".ToInt\":15071,\"ĠKingdom\":15072,\"Bus\":15073,\"haust\":15074,\"\\\"\\\"\\\"ĊĊ\":15075,\"(end\":15076,\".drawable\":15077,\"[];Ċ\":15078,\"ĠHospital\":15079,\"Ġpharm\":15080,\"-----\":15081,\"ĠAG\":15082,\"Ã©d\":15083,\">\\\");Ċ\":15084,\"Ġwallet\":15085,\"atable\":15086,\")$\":15087,\"Ġmonthly\":15088,\"Ġdiagnostic\":15089,\"Symbol\":15090,\"Ġiterator\":15091,\"unfinished\":15092,\"Ġimmigration\":15093,\"sr\":15094,\"ROW\":15095,\"(game\":15096,\"Ġclothes\":15097,\"ĠUnt\":15098,\"Ġactivation\":15099,\"_Con\":15100,\".hash\":15101,\"Ġinitially\":15102,\".Hash\":15103,\"Ġcuts\":15104,\"found\":15105,\"ĠStory\":15106,\"ÑĨÐ¸\":15107,\"acao\":15108,\"_TYP\":15109,\"proto\":15110,\"estr\":15111,\"-page\":15112,\"ahr\":15113,\"Ġincorrect\":15114,\"ĠJoseph\":15115,\"TextBoxColumn\":15116,\"_style\":15117,\"ĠDaniel\":15118,\"sheet\":15119,\"Ġliv\":15120,\"lined\":15121,\"Ġra\":15122,\"Runtime\":15123,\"_empty\":15124,\"slug\":15125,\"_struct\":15126,\"ëĬ\":15127,\"mu\":15128,\"Ġpermitted\":15129,\"Ġregional\":15130,\"Ġsobre\":15131,\"ĠSuch\":15132,\"Ġ[_\":15133,\"Ġroof\":15134,\".Alignment\":15135,\"times\":15136,\".msg\":15137,\"Ġchest\":15138,\"ĠTab\":15139,\"Ġesta\":15140,\"Ã¤n\":15141,\"Ġsubscription\":15142,\"(command\":15143,\"special\":15144,\"Ġmeal\":15145,\"\\\"):Ċ\":15146,\"_ctx\":15147,\"Ġclosely\":15148,\"etry\":15149,\"-be\":15150,\"adel\":15151,\"ĠRam\":15152,\"igest\":15153,\"ĠSpanish\":15154,\"Ġcommitment\":15155,\"Ġwake\":15156,\"*>(\":15157,\"PHP\":15158,\"_{\":15159,\"cker\":15160,\"<List\":15161,\"_null\":15162,\"ĠReserved\":15163,\"Ġinher\":15164,\".Columns\":15165,\".AspNet\":15166,\"_INVALID\":15167,\"ĠParameter\":15168,\"Ġexpr\":15169,\"}{\":15170,\"CellStyle\":15171,\"Ġvaluable\":15172,\"Ġfunny\":15173,\"Inv\":15174,\"Ġstable\":15175,\"*t\":15176,\"Ġpill\":15177,\"pliers\":15178,\"ĠCSS\":15179,\"ĠCondition\":15180,\"ĠSpeed\":15181,\"ublisher\":15182,\"Ġoffensive\":15183,\"cest\":15184,\"icas\":15185,\"Ġspark\":15186,\"ĠProte\":15187,\"setup\":15188,\"IFY\":15189,\"ĠTax\":15190,\"Who\":15191,\"Family\":15192,\"-for\":15193,\".uk\":15194,\"Ġfasc\":15195,\"svg\":15196,\"\\\")).\":15197,\"Ġbirthday\":15198,\"âĸĪ\":15199,\"veh\":15200,\"elled\":15201,\"Ġimports\":15202,\"ĠIslamic\":15203,\"TA\":15204,\"ĠStan\":15205,\"weather\":15206,\"Ġsuspect\":15207,\"eature\":15208,\"ennes\":15209,\"WM\":15210,\".minecraft\":15211,\"avid\":15212,\"è½\":15213,\".security\":15214,\"inos\":15215,\"Good\":15216,\"Ġmarch\":15217,\"Ġpossess\":15218,\"usuario\":15219,\"Cons\":15220,\"amber\":15221,\"cheduler\":15222,\"Ġhorse\":15223,\"ç½\":15224,\"(body\":15225,\"ĠTransform\":15226,\"_decode\":15227,\".svg\":15228,\"Ġfoo\":15229,\"Ġdella\":15230,\"extends\":15231,\"amer\":15232,\"Ġprocessed\":15233,\"ĠHarr\":15234,\"ĠAI\":15235,\"Ġko\":15236,\"CHAR\":15237,\"(%\":15238,\"Ġtap\":15239,\"({'\":15240,\"croll\":15241,\"DOM\":15242,\"Ġtea\":15243,\"Ġrein\":15244,\"Ġworldwide\":15245,\"_fn\":15246,\"sha\":15247,\"Ġbir\":15248,\"Ã§Ãµes\":15249,\"=\\\"#\\\">\":15250,\"Ġrepresented\":15251,\"iller\":15252,\"(expected\":15253,\"Ġdance\":15254,\"Ġvisitors\":15255,\".concat\":15256,\"-bit\":15257,\"URRE\":15258,\"ĠRog\":15259,\"vp\":15260,\"iph\":15261,\"ĠLLC\":15262,\"itled\":15263,\"iami\":15264,\"Coll\":15265,\"_real\":15266,\"_show\":15267,\"_folder\":15268,\"Ġdar\":15269,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":15270,\"Ġlatter\":15271,\"archy\":15272,\"Ġbow\":15273,\"Ġoutcome\":15274,\"ĠPosted\":15275,\"Ġrisks\":15276,\"ĠTherefore\":15277,\"Ġownership\":15278,\"Ġparallel\":15279,\"Ġpending\":15280,\"geometry\":15281,\"Ġrecognize\":15282,\"STEM\":15283,\"ĠCP\":15284,\"Ġimmigr\":15285,\"ITLE\":15286,\"ĠĠĠĠĉĉ\":15287,\"connected\":15288,\"Ġsmile\":15289,\"(document\":15290,\"\\\\Component\":15291,\"vertical\":15292,\"Ġconsumption\":15293,\"Ġshoes\":15294,\".impl\":15295,\"unks\":15296,\".\\\";Ċ\":15297,\"Ġfoods\":15298,\"_);Ċ\":15299,\".assertTrue\":15300,\"Ġpipeline\":15301,\"Ġcollections\":15302,\"Ġearned\":15303,\"ĠCert\":15304,\"Ġpartnership\":15305,\"(action\":15306,\"Ġcd\":15307,\"ĠVery\":15308,\"Optional\":15309,\"Ġscreens\":15310,\"Ġtitles\":15311,\"enerator\":15312,\"Ġabandon\":15313,\"kind\":15314,\"ILTER\":15315,\"Ġclosing\":15316,\"lica\":15317,\"_inter\":15318,\"Ġcampus\":15319,\"setting\":15320,\"Sprite\":15321,\"ãģ¯\":15322,\"_reply\":15323,\"ToList\":15324,\":\\\\/\\\\/\":15325,\"ede\":15326,\"Ġfolks\":15327,\"Ġboat\":15328,\"(argv\":15329,\"Ġpermanent\":15330,\"Ġcarrying\":15331,\"Ġconservative\":15332,\"important\":15333,\".img\":15334,\"ĠImm\":15335,\"Ġdimensions\":15336,\"aland\":15337,\"single\":15338,\"Exit\":15339,\"----------\":15340,\"ariant\":15341,\"ternal\":15342,\"Seconds\":15343,\"ĠItaly\":15344,\"otlin\":15345,\".Resume\":15346,\"='\\\"\":15347,\")==\":15348,\"ceptor\":15349,\"Ġsca\":15350,\"/main\":15351,\"Security\":15352,\"_dat\":15353,\"Ġlets\":15354,\"Ġaqu\":15355,\"Ġwhenever\":15356,\"berry\":15357,\"Ġacting\":15358,\"anti\":15359,\"pd\":15360,\"&gt\":15361,\"æŃ\":15362,\"Zone\":15363,\"Today\":15364,\"!.\":15365,\"ToProps\":15366,\"abis\":15367,\"itable\":15368,\"Ġgal\":15369,\"]{\":15370,\"izona\":15371,\"Ġincontri\":15372,\"NET\":15373,\"///Ċ\":15374,\"[in\":15375,\"_save\":15376,\"Ġexem\":15377,\"ĠKenn\":15378,\"Ġevolution\":15379,\"vars\":15380,\"_stats\":15381,\"-only\":15382,\"ĠColorado\":15383,\"Ġwatched\":15384,\"bour\":15385,\"Ġsevere\":15386,\"Ġprofessionals\":15387,\"portion\":15388,\"Ġguarante\":15389,\"Ð³\":15390,\"Ġpushed\":15391,\"ĠGi\":15392,\"ï½\":15393,\"Ġtum\":15394,\"ĠAz\":15395,\"ĠEdgeInsets\":15396,\"\\\"));čĊ\":15397,\"isse\":15398,\".ac\":15399,\"Setting\":15400,\"Ġappreciate\":15401,\"ĠValueError\":15402,\"Ġsurve\":15403,\"ĠRole\":15404,\".Inter\":15405,\"plotlib\":15406,\"jet\":15407,\"dam\":15408,\"Ġplatforms\":15409,\"tele\":15410,\"UTO\":15411,\"ĠInternal\":15412,\"+:\":15413,\"};čĊ\":15414,\"General\":15415,\"\\\\Entity\":15416,\"Ġlawyer\":15417,\"quiv\":15418,\"ĠPosts\":15419,\"iso\":15420,\"Ġaccum\":15421,\"obe\":15422,\"Ġmarks\":15423,\"Ġ];ĊĊ\":15424,\"ĉtext\":15425,\".success\":15426,\"curr\":15427,\"asa\":15428,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":15429,\"Ġthin\":15430,\"_over\":15431,\"arest\":15432,\"ĠOs\":15433,\"(address\":15434,\"Ġvelocity\":15435,\"Ġ[];ĊĊ\":15436,\"=\\\"../../\":15437,\"ĠPriv\":15438,\"bow\":15439,\"Ġguarantee\":15440,\"%ĊĊ\":15441,\"Ġevaluate\":15442,\".LENGTH\":15443,\"Ġinventory\":15444,\"qa\":15445,\"_debug\":15446,\".OnClickListener\":15447,\"Ġlies\":15448,\"Ġassessment\":15449,\"datetime\":15450,\".backgroundColor\":15451,\"Ġ*/čĊčĊ\":15452,\"raf\":15453,\"unwrap\":15454,\"ĠFoot\":15455,\"Ġnotify\":15456,\"Ġlowest\":15457,\"DOCTYPE\":15458,\"Ġlanguages\":15459,\"extra\":15460,\"-back\":15461,\"Ġeinen\":15462,\"templates\":15463,\"_pass\":15464,\"ĠMust\":15465,\"ĠestÃ¡\":15466,\"_core\":15467,\"ĠScot\":15468,\"AI\":15469,\"Ġbias\":15470,\"ationship\":15471,\"Constant\":15472,\"Ġprogramming\":15473,\"Ins\":15474,\"uspendLayout\":15475,\"ĠPROVID\":15476,\"antes\":15477,\"Ġshirt\":15478,\"inated\":15479,\".OK\":15480,\"[a\":15481,\"Ġthinks\":15482,\"?ĊĊĊĊ\":15483,\"Ġregardless\":15484,\"ĠMagic\":15485,\"ulating\":15486,\"ĉclass\":15487,\"addGroup\":15488,\"REATE\":15489,\"ĠSU\":15490,\"Ġsimpl\":15491,\"copyright\":15492,\"Ġbunch\":15493,\"Ġuniverse\":15494,\"ĠErr\":15495,\"Ġpresentation\":15496,\"categories\":15497,\"Ġattach\":15498,\".sign\":15499,\"_AC\":15500,\"Ġdiscipl\":15501,\"Ġregularly\":15502,\"Ġprimarily\":15503,\"inks\":15504,\"[[\":15505,\".rand\":15506,\".should\":15507,\"owntown\":15508,\"=\\\"'\":15509,\"Ġsans\":15510,\"Ġsupporters\":15511,\"sequence\":15512,\"GO\":15513,\"..ĊĊ\":15514,\"ĠSpr\":15515,\"Ġcarefully\":15516,\"UIColor\":15517,\"destroy\":15518,\"Ġtodos\":15519,\"ĠORDER\":15520,\"otted\":15521,\"Ġdont\":15522,\"audi\":15523,\"_player\":15524,\"gre\":15525,\"ĠOil\":15526,\"<body\":15527,\"_stack\":15528,\".Padding\":15529,\"ĠProducts\":15530,\"Ġprivile\":15531,\"Ġinjured\":15532,\"ĠFurther\":15533,\"Ġalias\":15534,\".ResumeLayout\":15535,\"_LEN\":15536,\"Ġses\":15537,\"'];ĊĊ\":15538,\"creens\":15539,\"Ġdirected\":15540,\".SuspendLayout\":15541,\"odge\":15542,\".At\":15543,\"marks\":15544,\"ĠUnivers\":15545,\"erts\":15546,\"ĠEsc\":15547,\"Ġnavbar\":15548,\"Ġutility\":15549,\"agnostics\":15550,\"Ġinject\":15551,\"ĠDNA\":15552,\"Ġ\\\",\\\"\":15553,\"amar\":15554,\"Ġeu\":15555,\"Ġrestaurants\":15556,\"_put\":15557,\"uters\":15558,\"ToolStrip\":15559,\"tw\":15560,\"istro\":15561,\"Ġzoom\":15562,\"Ġlegit\":15563,\"pecific\":15564,\"ĠCome\":15565,\"ĠlocalStorage\":15566,\"Ġabsor\":15567,\".Panel\":15568,\"ĠDesigner\":15569,\"Ġow\":15570,\"ICAL\":15571,\"_uri\":15572,\"(field\":15573,\"Ġsuperv\":15574,\"Exists\":15575,\"Ġrespectively\":15576,\"ĠStand\":15577,\"Conf\":15578,\"ussian\":15579,\"Ġarc\":15580,\"Ġnd\":15581,\"ucks\":15582,\"Ġrestr\":15583,\"Ġseasons\":15584,\"ĠChapter\":15585,\"ĠSwitch\":15586,\"pic\":15587,\"Ġhi\":15588,\"loaded\":15589,\"Ġfluid\":15590,\"-btn\":15591,\"Ġruntime\":15592,\".it\":15593,\"BN\":15594,\"Opacity\":15595,\"asant\":15596,\"ryption\":15597,\"-native\":15598,\"Ġtaught\":15599,\"å¯\":15600,\"agment\":15601,\"Ġmul\":15602,\"Registry\":15603,\"_grid\":15604,\"ĠBrook\":15605,\":Set\":15606,\"Ġmongoose\":15607,\"AMES\":15608,\"innerHTML\":15609,\"Ġsoci\":15610,\"ĠIntel\":15611,\"getId\":15612,\"Cmd\":15613,\"Ġaccessible\":15614,\"rames\":15615,\"leton\":15616,\"Ġ__(\":15617,\"ĉdelete\":15618,\"ĠSquare\":15619,\"\\\"ĊĊĊ\":15620,\"Ġbucket\":15621,\"avorite\":15622,\"ĠBreak\":15623,\"++]\":15624,\"Ġbrush\":15625,\"Ġtensor\":15626,\"/http\":15627,\"Tile\":15628,\"Ġfunctional\":15629,\"Ġ\\\"*\":15630,\"whel\":15631,\"Ġtent\":15632,\"ĠCharacter\":15633,\"Ġsees\":15634,\".ST\":15635,\"Big\":15636,\"Ġextern\":15637,\"Urls\":15638,\")))),\":15639,\"ĠJr\":15640,\".Builder\":15641,\".;\":15642,\"nl\":15643,\"_Init\":15644,\"ĠHER\":15645,\"Å¼e\":15646,\"mysqli\":15647,\"_icon\":15648,\"van\":15649,\"Ġfeelings\":15650,\"Ġlean\":15651,\"Ġhoping\":15652,\"TV\":15653,\"=\\\"<?=\":15654,\"Ġcurve\":15655,\"_std\":15656,\"_LINE\":15657,\"dst\":15658,\"Ġmoral\":15659,\"emes\":15660,\"ogy\":15661,\"Ġurban\":15662,\"Ġaside\":15663,\"Ġediting\":15664,\"ADD\":15665,\"Second\":15666,\"Track\":15667,\"Ġvoting\":15668,\"Ġhonor\":15669,\".',\":15670,\"ellen\":15671,\"Chat\":15672,\"Ġimprovement\":15673,\"']ĊĊ\":15674,\"łģ\":15675,\"Ġparsed\":15676,\"ĠĠĠĠĠĠĠĠĠĊ\":15677,\"Ġlazy\":15678,\"Ġfalling\":15679,\"Serialize\":15680,\"ĠPa\":15681,\"_gr\":15682,\"Ġforever\":15683,\".white\":15684,\".Query\":15685,\"Bed\":15686,\"ĠDu\":15687,\"Ġresume\":15688,\"Ġpapers\":15689,\"ĠInit\":15690,\"Ġsuffering\":15691,\"âĢĭ\":15692,\"Ġdeclarations\":15693,\"()-\":15694,\"Ġexecuted\":15695,\"ĠHol\":15696,\".block\":15697,\"ãĥ³\":15698,\"SK\":15699,\"Ġstuck\":15700,\"ĠLock\":15701,\"incipal\":15702,\"Nullable\":15703,\"Ġsessions\":15704,\"uni\":15705,\"Ġcoup\":15706,\"appro\":15707,\"ghan\":15708,\"_pool\":15709,\"ĉid\":15710,\"Ġslots\":15711,\"Ġmedicine\":15712,\"Ġglad\":15713,\"ĠMonoBehaviour\":15714,\"atre\":15715,\"Ġ$('\":15716,\"merican\":15717,\"agg\":15718,\"Ġkann\":15719,\"_connect\":15720,\"Ġbrands\":15721,\"Ġske\":15722,\"Ġdigit\":15723,\"<n\":15724,\"Ġbackup\":15725,\"Ġpersonally\":15726,\".Property\":15727,\".commit\":15728,\"Ġcry\":15729,\"_counter\":15730,\"Ġmalloc\":15731,\"Ġgran\":15732,\"ĠDrop\":15733,\"platform\":15734,\"redentials\":15735,\"inking\":15736,\"ĠUIL\":15737,\"ubs\":15738,\"Ġml\":15739,\"lessly\":15740,\"Generated\":15741,\"ereotype\":15742,\"Ġbat\":15743,\"LayoutPanel\":15744,\"LOT\":15745,\"\\\");čĊčĊ\":15746,\"Ġmuscle\":15747,\"Ġcertificate\":15748,\"ANDLE\":15749,\"Ġharder\":15750,\"Ġpixels\":15751,\")\\\",Ċ\":15752,\".Header\":15753,\"Ġdeveloper\":15754,\"ĠLas\":15755,\"egan\":15756,\".<\":15757,\"Ġexplode\":15758,\"Ġparticipate\":15759,\"Pattern\":15760,\"(table\":15761,\"ĠTEXT\":15762,\"constants\":15763,\"xD\":15764,\"thew\":15765,\"},ĊĊ\":15766,\"ãģ®\":15767,\"_des\":15768,\"Ġsubstr\":15769,\"ĠSmart\":15770,\"Ġscala\":15771,\"gent\":15772,\"-bar\":15773,\"essional\":15774,\"umbs\":15775,\".exec\":15776,\"'\\\\\":15777,\"TK\":15778,\"unist\":15779,\"proof\":15780,\"cial\":15781,\"proc\":15782,\"={\\\"\":15783,\".href\":15784,\"=$(\":15785,\"Ġlunch\":15786,\"iscal\":15787,\"ĠEntry\":15788,\"Ġoutdoor\":15789,\"semble\":15790,\"Ġessentially\":15791,\"/G\":15792,\"[])\":15793,\"%\\\"\":15794,\"sten\":15795,\"USED\":15796,\"Ġdust\":15797,\"å°\":15798,\"ĉĊĊ\":15799,\"Ġretire\":15800,\"Ġfib\":15801,\"Although\":15802,\"Ġloves\":15803,\"Ġreads\":15804,\"ycles\":15805,\"ĠHel\":15806,\"_uint\":15807,\"Ġ'.$\":15808,\"_initial\":15809,\"Named\":15810,\"Ġfundamental\":15811,\"ADING\":15812,\"Ġtow\":15813,\"ĠADD\":15814,\"ĠAcademy\":15815,\":String\":15816,\"Ġcomprehensive\":15817,\".scal\":15818,\"ĠMeta\":15819,\"Messages\":15820,\".annotations\":15821,\"\\\\Response\":15822,\"Ġacknowled\":15823,\"ĠARE\":15824,\"]==\":15825,\"Ġcleaning\":15826,\"è¾\":15827,\"Entities\":15828,\"ĠSales\":15829,\"ĠWis\":15830,\".extend\":15831,\"allenge\":15832,\"Ġgaming\":15833,\"$query\":15834,\"ICES\":15835,\"ETCH\":15836,\"Horizontal\":15837,\"quential\":15838,\"BACK\":15839,\"develop\":15840,\"isor\":15841,\"(code\":15842,\"-K\":15843,\"_PIN\":15844,\"requency\":15845,\"ĠQuestion\":15846,\"_container\":15847,\"_modules\":15848,\"ĠJersey\":15849,\"_diff\":15850,\".el\":15851,\"Ġ*((\":15852,\"cnt\":15853,\"ĠSa\":15854,\"CPP\":15855,\"inite\":15856,\"Ġunus\":15857,\"-white\":15858,\"etary\":15859,\"Ġinvolving\":15860,\"Ġ?>čĊ\":15861,\"best\":15862,\"allas\":15863,\"ented\":15864,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":15865,\"_connection\":15866,\"Ġrepo\":15867,\"enabled\":15868,\"Ð°Ðº\":15869,\"Ġsha\":15870,\"Ġmembership\":15871,\"StatusCode\":15872,\"inating\":15873,\"_sm\":15874,\"_custom\":15875,\"_weight\":15876,\"Ġcss\":15877,\"Stat\":15878,\"_env\":15879,\"links\":15880,\"TRL\":15881,\"ĠHit\":15882,\",r\":15883,\"upid\":15884,\"Ġopens\":15885,\"Ġgent\":15886,\"_vis\":15887,\"Ġjoy\":15888,\"<w\":15889,\"_cost\":15890,\"ĠPyObject\":15891,\"rence\":15892,\"ĠGeorgia\":15893,\"ĠBroad\":15894,\"mma\":15895,\"âĤ\":15896,\"pf\":15897,\"Ġ\\\"\\\\\\\"\":15898,\"Ġ(&\":15899,\"omo\":15900,\"Ġliterally\":15901,\"Īĺ\":15902,\"metric\":15903,\"Ġbars\":15904,\"zed\":15905,\"(window\":15906,\"ĠIsraeli\":15907,\"Ġformal\":15908,\"identifier\":15909,\".dao\":15910,\"ĠDeath\":15911,\"%;Ċ\":15912,\"Ġdeclare\":15913,\"arms\":15914,\"REAM\":15915,\"PERTY\":15916,\"Ġconsequences\":15917,\"tools\":15918,\"People\":15919,\"ĠWhich\":15920,\">();čĊ\":15921,\".decode\":15922,\"_ACT\":15923,\"Buttons\":15924,\".float\":15925,\".First\":15926,\"ë¥\":15927,\"ĠPolit\":15928,\"ĠXCT\":15929,\"Tags\":15930,\"ĠCGFloat\":15931,\"=str\":15932,\"Ġleaf\":15933,\"-check\":15934,\"ĠIss\":15935,\".system\":15936,\"logout\":15937,\"acht\":15938,\"Angle\":15939,\"sin\":15940,\"chart\":15941,\"INTER\":15942,\"ĠNUM\":15943,\"Basic\":15944,\".Properties\":15945,\"ä¸Ń\":15946,\"_change\":15947,\"ĠBrazil\":15948,\"Abstract\":15949,\"Ġ:+:\":15950,\"_use\":15951,\"Ð°Ð»\":15952,\"ĠLy\":15953,\"IBUT\":15954,\"Ġouter\":15955,\"Ġ-->čĊ\":15956,\"Ġrelief\":15957,\"lap\":15958,\"quer\":15959,\"_parent\":15960,\"heap\":15961,\"LOSE\":15962,\"Ġcombine\":15963,\"ĠRose\":15964,\"owers\":15965,\"Ġprocedures\":15966,\"ĠSort\":15967,\"anim\":15968,\"variant\":15969,\"ehicle\":15970,\"Ġsigning\":15971,\"Primary\":15972,\"currency\":15973,\"Ġsexe\":15974,\"oen\":15975,\"theta\":15976,\"eman\":15977,\"Ġimpressive\":15978,\"('_\":15979,\"ĉU\":15980,\"ĠTextStyle\":15981,\"_cnt\":15982,\"Ġslice\":15983,\"(':\":15984,\"Ġunderstood\":15985,\"His\":15986,\"Ġinformed\":15987,\"Ġnick\":15988,\"(TAG\":15989,\"hd\":15990,\"Ġelections\":15991,\"esture\":15992,\"ĠSanta\":15993,\"ĠCoast\":15994,\".pdf\":15995,\"inciple\":15996,\".clone\":15997,\"born\":15998,\"uta\":15999,\"Ġlicensed\":16000,\"Cr\":16001,\"Ġbread\":16002,\"ĠHouston\":16003,\"Ġnod\":16004,\"Ġhopes\":16005,\"ĠCGRect\":16006,\"Ġguilty\":16007,\".gif\":16008,\"Ġrose\":16009,\".Common\":16010,\"Tip\":16011,\"ANK\":16012,\"ĠFC\":16013,\"During\":16014,\"ĠSymfony\":16015,\"Ġdefensive\":16016,\"km\":16017,\")>\":16018,\"archive\":16019,\"ĠURI\":16020,\"ycling\":16021,\"-o\":16022,\"ĠWebsite\":16023,\"AMP\":16024,\"ishment\":16025,\"Ġdoctors\":16026,\"Direct\":16027,\"ARI\":16028,\"ĠRedirect\":16029,\"ieren\":16030,\"_dist\":16031,\"yo\":16032,\"ĠProgress\":16033,\"Ġzum\":16034,\"Ġmemor\":16035,\"ĠED\":16036,\"Ġjur\":16037,\"æį®\":16038,\"_TABLE\":16039,\"Ġuuid\":16040,\"Expr\":16041,\".head\":16042,\"('%\":16043,\"pointer\":16044,\"Ġestimate\":16045,\"ĠGreg\":16046,\"Ġloader\":16047,\"ĠiOS\":16048,\"Ġmens\":16049,\"[y\":16050,\"Ġrefused\":16051,\"Ġprecision\":16052,\"isch\":16053,\"ĠACTION\":16054,\"Cloud\":16055,\"sWith\":16056,\"(ret\":16057,\"_ADDR\":16058,\"_conf\":16059,\"(df\":16060,\"Ġlocked\":16061,\"Ġrising\":16062,\"ãĥ»ãĥ»\":16063,\"ĠMs\":16064,\"Ġscenes\":16065,\"_EXT\":16066,\"_raw\":16067,\"_the\":16068,\"people\":16069,\"Ġrecon\":16070,\"ĠFun\":16071,\"Ġbless\":16072,\"ĠUpdated\":16073,\"Ã¼n\":16074,\"ĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":16075,\"pection\":16076,\"Release\":16077,\".logger\":16078,\"ĠSY\":16079,\"Ġcounsel\":16080,\"urd\":16081,\"_true\":16082,\"Ġeverybody\":16083,\"ivot\":16084,\"Ġhence\":16085,\"ĠNAS\":16086,\"Ġopposed\":16087,\"unknown\":16088,\"ĠDESC\":16089,\"ĠChair\":16090,\"failed\":16091,\"ĠINCLUDING\":16092,\"Ġwriters\":16093,\"{}Ċ\":16094,\"ÃŃt\":16095,\"_copy\":16096,\"}:\":16097,\"ĠBat\":16098,\"Ġconverted\":16099,\"eding\":16100,\"placement\":16101,\"ĠHost\":16102,\"Sound\":16103,\"Ð¸Ð¼\":16104,\"Ġsought\":16105,\"mid\":16106,\"Ġsalary\":16107,\"ogg\":16108,\"âĦ¢\":16109,\"bul\":16110,\"Ġwir\":16111,\"validator\":16112,\"_STAT\":16113,\".store\":16114,\"ĠBattle\":16115,\"Ä±n\":16116,\"Ġ-->ĊĊ\":16117,\"Trump\":16118,\"dot\":16119,\"ĠCONT\":16120,\".fetch\":16121,\"Ġcontinu\":16122,\"was\":16123,\"Ġfraud\":16124,\"_tmp\":16125,\"mitter\":16126,\".pictureBox\":16127,\"GA\":16128,\"Ġtournament\":16129,\".Input\":16130,\"[r\":16131,\"exion\":16132,\"centage\":16133,\"ĠKorean\":16134,\"undef\":16135,\"ĠAvailable\":16136,\"reshape\":16137,\"Ġkit\":16138,\"ĠStruct\":16139,\"ĠSUB\":16140,\"Answer\":16141,\"_lib\":16142,\".twitter\":16143,\"Ġore\":16144,\"ĠDragon\":16145,\".Ext\":16146,\",k\":16147,\"Ġexplanation\":16148,\"refs\":16149,\"ĠDrive\":16150,\"ĠTraining\":16151,\".Has\":16152,\"intage\":16153,\"big\":16154,\"ologist\":16155,\"ennis\":16156,\"Ùĩ\":16157,\"Ġchicken\":16158,\"ĠĠĠĠĠĠĠĠĠĠĊ\":16159,\"çĽ\":16160,\"ãģ§\":16161,\"Ġpeak\":16162,\"Ġdrinking\":16163,\"Ġencode\":16164,\"ĠNEW\":16165,\"malloc\":16166,\"ĉfprintf\":16167,\"Ġ=================================================================\":16168,\"including\":16169,\"Ġprinciples\":16170,\"ĠMah\":16171,\"storage\":16172,\"-key\":16173,\"Ġkeyword\":16174,\"%;\":16175,\"Ġtrained\":16176,\".contrib\":16177,\"Ġkv\":16178,\"__':Ċ\":16179,\"ĠBoy\":16180,\"parameter\":16181,\"Ġsuite\":16182,\"Ġthousand\":16183,\"Ġcoordinate\":16184,\"-generated\":16185,\"íķĺ\":16186,\"generated\":16187,\"Ġadmitted\":16188,\"Ġpussy\":16189,\"#w\":16190,\"Ġswim\":16191,\"union\":16192,\"Na\":16193,\"ĠRoyal\":16194,\".channel\":16195,\"Updated\":16196,\"_ROOT\":16197,\"Ġvital\":16198,\"raction\":16199,\"ĠCrusher\":16200,\"Ġpreced\":16201,\"Ġhorizontal\":16202,\"Blueprint\":16203,\"Ġattrs\":16204,\"Ġsmoke\":16205,\"ÐĴ\":16206,\".Equals\":16207,\"FB\":16208,\"ĠResources\":16209,\"rolling\":16210,\"Ġpasses\":16211,\"ĠNum\":16212,\"rotate\":16213,\"etype\":16214,\"\\\\\\\",\":16215,\"Ġsensitive\":16216,\"Ġtall\":16217,\"?âĢĿĊĊ\":16218,\"Proxy\":16219,\"iy\":16220,\"_section\":16221,\"âĢĶâĢĶâĢĶâĢĶ\":16222,\"brid\":16223,\"Ġcircuit\":16224,\"atan\":16225,\"ENC\":16226,\"Ġdriven\":16227,\"Ġvoted\":16228,\"Ġeducational\":16229,\"Ġinteraction\":16230,\"abetes\":16231,\"Ġtone\":16232,\"ĠInitializeComponent\":16233,\"Ġmerely\":16234,\"Ġìŀ\":16235,\"cookie\":16236,\"_div\":16237,\"ĠUILabel\":16238,\"vely\":16239,\"});čĊ\":16240,\"_ENT\":16241,\"#+#+\":16242,\"articles\":16243,\"ĠSouthern\":16244,\"Ġstronger\":16245,\"ĠGiven\":16246,\"ĠEric\":16247,\"ĠIR\":16248,\"abstract\":16249,\"Under\":16250,\"nable\":16251,\"Ġincrement\":16252,\"oven\":16253,\"Ġcoin\":16254,\"_timer\":16255,\"Ġsuffered\":16256,\"ĠFREE\":16257,\"'].\\\"\":16258,\"ĠQueen\":16259,\"stats\":16260,\"Ġmeetings\":16261,\"Ġentering\":16262,\"Ġalongside\":16263,\"(session\":16264,\"itals\":16265,\"Ġfoundation\":16266,\"ĠCredit\":16267,\".div\":16268,\"_ALL\":16269,\"pcion\":16270,\"_stat\":16271,\"icking\":16272,\"Defaults\":16273,\"_src\":16274,\"Ġoutputs\":16275,\"/B\":16276,\"Ġenthus\":16277,\"-bl\":16278,\".ForeColor\":16279,\"ĉtemp\":16280,\"Face\":16281,\"Ġinteract\":16282,\"Ġweird\":16283,\"Mount\":16284,\"rell\":16285,\"udents\":16286,\"Ġrequirement\":16287,\"ĠSus\":16288,\"IER\":16289,\"Ġelected\":16290,\"reference\":16291,\"ĠME\":16292,\"Ġservers\":16293,\".wait\":16294,\"Ġsnapshot\":16295,\"ilton\":16296,\"Ġtries\":16297,\"Ġtipo\":16298,\".Time\":16299,\">w\":16300,\"Ġmountain\":16301,\"Ġpounds\":16302,\"Ġ[...\":16303,\"exists\":16304,\"ĠngOn\":16305,\"_MAP\":16306,\"Ġflying\":16307,\"xiety\":16308,\"ĉvalue\":16309,\"_DB\":16310,\"uno\":16311,\"Ġseats\":16312,\"TURN\":16313,\".author\":16314,\"!)\":16315,\"orce\":16316,\"Ġindicated\":16317,\".sin\":16318,\"Ġassignment\":16319,\"imiento\":16320,\"ĠFrame\":16321,\"_gen\":16322,\"inery\":16323,\"_)\":16324,\"messages\":16325,\".settings\":16326,\"ĠMean\":16327,\"ĠMuseum\":16328,\"irq\":16329,\"attach\":16330,\"ĠPalestin\":16331,\"_QU\":16332,\"_tags\":16333,\"Ġcasual\":16334,\"emen\":16335,\"ASSWORD\":16336,\"$s\":16337,\"ĠCirc\":16338,\"Ð¾Ð¹\":16339,\"etric\":16340,\"/P\":16341,\"Ġepoch\":16342,\"<head\":16343,\"_CMD\":16344,\"Ġgit\":16345,\"Ġpenalty\":16346,\"orph\":16347,\"_users\":16348,\"ourses\":16349,\".DateTime\":16350,\"aternion\":16351,\"_project\":16352,\"Ġsuperior\":16353,\"ĠDam\":16354,\"ĠSeattle\":16355,\"XY\":16356,\">The\":16357,\"ĠAk\":16358,\"Ġgrass\":16359,\"/*čĊ\":16360,\"(dis\":16361,\"Ġguns\":16362,\"Ġtb\":16363,\"ĠKevin\":16364,\".args\":16365,\"ĠAh\":16366,\"oped\":16367,\"(J\":16368,\"columns\":16369,\"arguments\":16370,\"ĠWithEvents\":16371,\"_full\":16372,\"ĠDefense\":16373,\"Simple\":16374,\"Ġdeaths\":16375,\"Ġextensive\":16376,\"ĠStill\":16377,\"ĠExpression\":16378,\"ĠAgency\":16379,\"Ġperforming\":16380,\"FX\":16381,\"Ġusuario\":16382,\"UAL\":16383,\"Side\":16384,\"odos\":16385,\"aptop\":16386,\"Ġcredentials\":16387,\"_cap\":16388,\"atient\":16389,\"ĠDisney\":16390,\"Ġai\":16391,\"Ġchip\":16392,\"Ġvolt\":16393,\".makeText\":16394,\"%%%%%%%%%%%%%%%%\":16395,\"Ġbelief\":16396,\"_LOC\":16397,\"ĠCivil\":16398,\"Navigation\":16399,\"Ġreveal\":16400,\"Ġviolent\":16401,\"ĠFil\":16402,\"Ġcatalog\":16403,\"emed\":16404,\"scan\":16405,\".control\":16406,\"Ġconstitution\":16407,\"Country\":16408,\"Separator\":16409,\"_APP\":16410,\"topic\":16411,\"uetooth\":16412,\"MIN\":16413,\"Ġdescriptor\":16414,\"yt\":16415,\"ETHER\":16416,\"Ġdistribute\":16417,\"'}Ċ\":16418,\".trim\":16419,\".Line\":16420,\"Ġlbl\":16421,\"assertEquals\":16422,\"ĠDet\":16423,\"ombok\":16424,\"(width\":16425,\"Ġtort\":16426,\"ĠEXPRESS\":16427,\"aco\":16428,\"Using\":16429,\"ĠBrand\":16430,\"wall\":16431,\"EMENT\":16432,\"ĠCommunic\":16433,\"<uint\":16434,\"ĠGUI\":16435,\"EGIN\":16436,\"ĠRange\":16437,\"/i\":16438,\"ĠTaylor\":16439,\"cost\":16440,\"Ġresponded\":16441,\"ĠTheme\":16442,\"nce\":16443,\"ISH\":16444,\"Ġfeaturing\":16445,\"Returns\":16446,\"ĠKr\":16447,\"Ġ.Ċ\":16448,\"Ġnam\":16449,\"_cb\":16450,\"Testing\":16451,\"Ġ{},\":16452,\"yal\":16453,\".field\":16454,\"Ġ/=\":16455,\"_SHORT\":16456,\"mates\":16457,\"TestCase\":16458,\"ainless\":16459,\"Ġevaluation\":16460,\"_ITEM\":16461,\"ĠPacific\":16462,\"ĉk\":16463,\"Ġcant\":16464,\"ĠRos\":16465,\")s\":16466,\"Ġfet\":16467,\"STRING\":16468,\"ĠDispose\":16469,\"gal\":16470,\"ĠJoin\":16471,\"ĠPorn\":16472,\"ĠCatholic\":16473,\"ARGET\":16474,\"cpu\":16475,\"çłģ\":16476,\".scroll\":16477,\"ISING\":16478,\"ifestyle\":16479,\"ancement\":16480,\"Ġmerc\":16481,\"ĠBrowser\":16482,\"etermin\":16483,\"Ġoverflow\":16484,\"Available\":16485,\"Ġbottle\":16486,\":UI\":16487,\"ificial\":16488,\"Ġcoord\":16489,\"claration\":16490,\"Ġconj\":16491,\"GLOBAL\":16492,\"oku\":16493,\"Ġkwargs\":16494,\"conditions\":16495,\"ulum\":16496,\"Ġgenu\":16497,\"ĠHero\":16498,\"åİ\":16499,\"Ġunexpected\":16500,\"ĠDAMAGES\":16501,\"Ġka\":16502,\"ĠCould\":16503,\"UPPORT\":16504,\"ĠPhotos\":16505,\"Ġconfident\":16506,\"Ġdetected\":16507,\"deg\":16508,\"rgb\":16509,\"Ġstrongly\":16510,\"Ġ};čĊ\":16511,\"Ġ):\":16512,\"Ġlect\":16513,\"ursive\":16514,\"ROL\":16515,\"ĠWeight\":16516,\"Ġentertainment\":16517,\"Ġ));Ċ\":16518,\"Ġgonna\":16519,\"Ġbb\":16520,\".do\":16521,\"GS\":16522,\"Ġmistake\":16523,\"DL\":16524,\"ĠPROVIDED\":16525,\"earning\":16526,\"Limit\":16527,\"issions\":16528,\"[v\":16529,\"ä¸į\":16530,\"irty\":16531,\"Del\":16532,\"Ġunderlying\":16533,\"prene\":16534,\"Ġjaw\":16535,\"ĠDI\":16536,\"peer\":16537,\"Ġobjective\":16538,\"Ġdeposit\":16539,\"Ġkon\":16540,\"Ġesp\":16541,\".setVisibility\":16542,\"/login\":16543,\"<typename\":16544,\"Ġfranch\":16545,\"/e\":16546,\"Parallel\":16547,\"Ġscored\":16548,\"ĠHon\":16549,\"ĠVill\":16550,\"iga\":16551,\"Ġanticip\":16552,\"_assert\":16553,\"ĠOpt\":16554,\"Ġdescribes\":16555,\"wan\":16556,\"mount\":16557,\"Ġmonitoring\":16558,\"Ġtout\":16559,\"ëĬĶ\":16560,\"},{\":16561,\"................................\":16562,\"=int\":16563,\"Ġcust\":16564,\"------\":16565,\"Ġatmosphere\":16566,\"PAR\":16567,\"orte\":16568,\"ISIBLE\":16569,\"ĠIron\":16570,\"ĠNotification\":16571,\".logging\":16572,\"ĠBOOL\":16573,\"-point\":16574,\"Ġafraid\":16575,\"enta\":16576,\"Ġtomorrow\":16577,\"@implementation\":16578,\"Ġengage\":16579,\"ĠAnth\":16580,\"ĠFloor\":16581,\"ĠUl\":16582,\"Tools\":16583,\"Ġbab\":16584,\"Ġcareful\":16585,\"ãģĦ\":16586,\"Ġcrucial\":16587,\"Ġcalculated\":16588,\"ĠSA\":16589,\"Ġwy\":16590,\"DX\":16591,\"_TAG\":16592,\"inded\":16593,\"Ġjet\":16594,\"ĠEngineering\":16595,\".MAX\":16596,\"enz\":16597,\"vd\":16598,\"Ġpublication\":16599,\"Ġ###\":16600,\"Ġfaced\":16601,\"raham\":16602,\"ĠCapt\":16603,\"Asset\":16604,\"ĠConstants\":16605,\"Ġloans\":16606,\"_IP\":16607,\"ĠFish\":16608,\"Reduc\":16609,\"_mat\":16610,\"DateFormat\":16611,\"_me\":16612,\"[][]\":16613,\"Ġintegrity\":16614,\"ĠCourse\":16615,\"lobals\":16616,\"Ġfacilit\":16617,\"Ġembr\":16618,\"ĠNg\":16619,\".System\":16620,\"Ġmanufacturers\":16621,\"Ġproven\":16622,\".onCreate\":16623,\"Ġalarm\":16624,\"ĠÂ§\":16625,\"Ġcommonly\":16626,\"icos\":16627,\"æĸ°\":16628,\"ĠStation\":16629,\"}).\":16630,\"ĠFilm\":16631,\"wi\":16632,\"çī\":16633,\"Ġengaged\":16634,\"Stats\":16635,\"Ġgovernments\":16636,\"Ġaffordable\":16637,\"_property\":16638,\"Ġages\":16639,\"('--\":16640,\"ĠfÃ¶r\":16641,\"ĠProfessor\":16642,\"Ġhydro\":16643,\"Push\":16644,\"Ġorganized\":16645,\"Accept\":16646,\"Ã©m\":16647,\"_cell\":16648,\"Ġnb\":16649,\"pb\":16650,\"Article\":16651,\"Ġremoval\":16652,\"Ġauthentication\":16653,\"ĠFR\":16654,\"lide\":16655,\"Ġpleasure\":16656,\"apol\":16657,\"Ġpartition\":16658,\"ĠSide\":16659,\"Ġcrimes\":16660,\"Ġdemo\":16661,\"holders\":16662,\"ĠPakistan\":16663,\"Instruction\":16664,\"Ġexpectations\":16665,\".scene\":16666,\"Ġ')\":16667,\"hes\":16668,\"inois\":16669,\"_Pro\":16670,\"Ġmolec\":16671,\"andal\":16672,\"_short\":16673,\"Ġdefaults\":16674,\"Ġnations\":16675,\"inen\":16676,\"Ġrt\":16677,\"OCK\":16678,\"Packet\":16679,\"SB\":16680,\"ĠSHALL\":16681,\"_contents\":16682,\"iseconds\":16683,\"verty\":16684,\"Ã¡t\":16685,\"Guid\":16686,\"nom\":16687,\"Ġconclusion\":16688,\".Update\":16689,\"Ġlovely\":16690,\"Ġemit\":16691,\"bec\":16692,\"ĉĉĉĉĠ\":16693,\"Ġintellect\":16694,\"Ġbrew\":16695,\"ecycle\":16696,\"Fire\":16697,\"Ġadmit\":16698,\"Ġarbit\":16699,\"Ġarrang\":16700,\"ĠMIN\":16701,\"Mail\":16702,\"ĠNative\":16703,\"Cur\":16704,\"Ġconvent\":16705,\".Runtime\":16706,\"\\\"}Ċ\":16707,\".Run\":16708,\"Ġprinted\":16709,\"Ġconvenient\":16710,\".ar\":16711,\"mock\":16712,\"ĠAdministration\":16713,\"ãģ¾\":16714,\"Ġelectron\":16715,\"flate\":16716,\"Ġlombok\":16717,\"Ġjavafx\":16718,\"nh\":16719,\"Ġsupplies\":16720,\"Ġvisiting\":16721,\"ahl\":16722,\"Ġpowder\":16723,\"Ġultimate\":16724,\"Ġorientation\":16725,\"utas\":16726,\"_scale\":16727,\"Confirm\":16728,\"phones\":16729,\"ĠOperation\":16730,\"/T\":16731,\"_INTER\":16732,\"Ġairport\":16733,\"Ġmetrics\":16734,\"Ġphenomen\":16735,\"audio\":16736,\"Ġmai\":16737,\"(K\":16738,\"hu\":16739,\"alling\":16740,\"roduction\":16741,\"ĠTransport\":16742,\"ĠNOTE\":16743,\"æĸĩ\":16744,\"Ġfewer\":16745,\"_TIM\":16746,\"ì§\":16747,\"ÐºÐ¸\":16748,\"Age\":16749,\"FIN\":16750,\"ĠìĿ\":16751,\"ĠAttribute\":16752,\"groups\":16753,\"erk\":16754,\"atto\":16755,\".define\":16756,\".AspNetCore\":16757,\"ategoria\":16758,\"ĠSir\":16759,\"(form\":16760,\"<User\":16761,\".round\":16762,\"_day\":16763,\".All\":16764,\"ServletResponse\":16765,\".No\":16766,\"large\":16767,\"IGH\":16768,\"quent\":16769,\"Ġvirus\":16770,\"Ġretro\":16771,\"Ġimper\":16772,\"Bitmap\":16773,\"Ġvice\":16774,\"Ġoffense\":16775,\"iste\":16776,\"ĠAUTH\":16777,\"Ġê°\":16778,\"ToolStripMenuItem\":16779,\"Gu\":16780,\"Ġrape\":16781,\"ĠDavis\":16782,\"Ġoverwhel\":16783,\":flutter\":16784,\"-table\":16785,\"ĠConstructor\":16786,\"Private\":16787,\"even\":16788,\"chr\":16789,\"Ġapplies\":16790,\"_attribute\":16791,\"Ġcontribute\":16792,\"EVER\":16793,\"Lines\":16794,\"ĠAfghan\":16795,\"Visitor\":16796,\"ĠSL\":16797,\"season\":16798,\"CU\":16799,\"Ġintroduction\":16800,\"Ġmatplotlib\":16801,\"Åĳ\":16802,\"Ġnewspaper\":16803,\"âĢĶand\":16804,\"<tag\":16805,\"Ġini\":16806,\"Ġdiverse\":16807,\"IgnoreCase\":16808,\"ĠUr\":16809,\"Agent\":16810,\"Ġbull\":16811,\".emit\":16812,\"(Exception\":16813,\"arLayout\":16814,\"Ġincredibly\":16815,\"ĠTrust\":16816,\"={(\":16817,\"-nav\":16818,\"Ġequals\":16819,\"Ġlady\":16820,\"ĠPod\":16821,\"disc\":16822,\"alam\":16823,\"ĠIV\":16824,\"âĻ\":16825,\"ividual\":16826,\"phi\":16827,\"added\":16828,\"Ġdifficulty\":16829,\"Ġcompact\":16830,\"ĠActionResult\":16831,\"cers\":16832,\"_classes\":16833,\"NonNull\":16834,\"Ġquit\":16835,\"Ġpou\":16836,\"Switch\":16837,\"irs\":16838,\"-test\":16839,\"ĠKind\":16840,\"ĠCalendar\":16841,\"Ġstreaming\":16842,\"}',\":16843,\"SW\":16844,\"Ġstead\":16845,\"oca\":16846,\"Ġprovince\":16847,\"Ġcolspan\":16848,\"Ġpersonnel\":16849,\"ĠEmployee\":16850,\"Ġproducer\":16851,\"Ġeverywhere\":16852,\"odb\":16853,\"ÐŁ\":16854,\"bsolute\":16855,\"activate\":16856,\"Ġgrinding\":16857,\"ĠBuilding\":16858,\"ĠSanders\":16859,\"(sc\":16860,\"ĠOffset\":16861,\"////////////\":16862,\"};čĊčĊ\":16863,\"({\\\"\":16864,\"Ġscanf\":16865,\"ĠYY\":16866,\"ĉdefer\":16867,\"Ġjew\":16868,\"Ġrestrictions\":16869,\".mp\":16870,\"[l\":16871,\"ä¸ĭ\":16872,\"labels\":16873,\"redicate\":16874,\"awesome\":16875,\"Ġwaves\":16876,\"Ġconfront\":16877,\"Ġmeasured\":16878,\"Ġdatas\":16879,\"_exit\":16880,\"otton\":16881,\"Ġshoulder\":16882,\"aska\":16883,\"+#\":16884,\"ĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĊ\":16885,\"Ġtroops\":16886,\"ĠUnd\":16887,\"_card\":16888,\"wich\":16889,\"Ġnous\":16890,\"Ġ\\\"/\\\"\":16891,\"sb\":16892,\"Ġcommunications\":16893,\"Export\":16894,\"Ġdecode\":16895,\"ths\":16896,\"interpret\":16897,\"ByName\":16898,\"ĠSpirit\":16899,\"edges\":16900,\"OLE\":16901,\"ĠEM\":16902,\"tit\":16903,\"ĠThrough\":16904,\"Ġbio\":16905,\"ĠPackage\":16906,\"orne\":16907,\"Ġ}.\":16908,\"`;Ċ\":16909,\"Ġokay\":16910,\"ĠZealand\":16911,\"identity\":16912,\"(next\":16913,\"ĠBang\":16914,\"Library\":16915,\"Ġheavily\":16916,\"ilon\":16917,\"Ġdipl\":16918,\"Ġrotate\":16919,\"puts\":16920,\")',Ċ\":16921,\"ĠDataTable\":16922,\"Ġmayor\":16923,\".toLowerCase\":16924,\"Ġsomehow\":16925,\"ĠNorthern\":16926,\"alc\":16927,\"Ġcapabilities\":16928,\"Ġvibr\":16929,\"+Ċ\":16930,\"ĠSu\":16931,\"ĠReset\":16932,\"_mean\":16933,\"Ġcig\":16934,\".cloud\":16935,\"ĠBand\":16936,\"ĠFactory\":16937,\"ĠArizona\":16938,\"_io\":16939,\"opher\":16940,\"Ġconscious\":16941,\"ĠÃ¶\":16942,\"\\\\Controllers\":16943,\"_speed\":16944,\"ĠFac\":16945,\"_Com\":16946,\"ĠBible\":16947,\"wen\":16948,\"EDIT\":16949,\"Ġunn\":16950,\"ĠStaff\":16951,\"ĠInn\":16952,\"Ġmechanism\":16953,\"ĠMembers\":16954,\"ĠmigrationBuilder\":16955,\"'].'\":16956,\".getInt\":16957,\"<void\":16958,\"ĉfree\":16959,\"oids\":16960,\"\\\\Support\":16961,\"Ġautomatic\":16962,\"Ġchances\":16963,\"Ð¶\":16964,\"Ġcomplicated\":16965,\"[row\":16966,\"ahoo\":16967,\"Ġ}ĊĊĊĊ\":16968,\"Models\":16969,\"Win\":16970,\"Ġtape\":16971,\"irus\":16972,\"izon\":16973,\"onomy\":16974,\"(\\\"_\":16975,\":.\":16976,\".stereotype\":16977,\"(env\":16978,\"_rect\":16979,\"(with\":16980,\"ĠassertThat\":16981,\"Ġconstraints\":16982,\"puty\":16983,\"Employee\":16984,\"TD\":16985,\"Ġguitar\":16986,\"ĠJews\":16987,\".process\":16988,\"Ġfiction\":16989,\"ĠShared\":16990,\"âĶĢâĶĢ\":16991,\"Ġpropag\":16992,\".Net\":16993,\"Ġachieved\":16994,\"ĉQ\":16995,\"Ġnurs\":16996,\"Shared\":16997,\"_FAILURE\":16998,\"Ġbehaviour\":16999,\"Ġcols\":17000,\"ismo\":17001,\"Ġfemin\":17002,\"Ġchallenging\":17003,\"Ġposting\":17004,\"encil\":17005,\"Ġcaptured\":17006,\"ĠDou\":17007,\"(word\":17008,\"ĠTurkey\":17009,\"panies\":17010,\"Ġreputation\":17011,\"ORMAL\":17012,\"Ġeligible\":17013,\"protocol\":17014,\"idas\":17015,\"(from\":17016,\"Ġfinance\":17017,\"-per\":17018,\"Ġgotten\":17019,\"HA\":17020,\"duration\":17021,\"ĠParent\":17022,\"Ġinvent\":17023,\"Ġrestart\":17024,\"Ð¾Ð»ÑĮ\":17025,\"rition\":17026,\"(rs\":17027,\"<bool\":17028,\"iert\":17029,\"Ġmodification\":17030,\"ĠTX\":17031,\"readcrumb\":17032,\"bank\":17033,\"$/\":17034,\"ĠMiller\":17035,\"]),Ċ\":17036,\".Checked\":17037,\"Ġsacr\":17038,\"security\":17039,\"Ġpose\":17040,\"ĠBrad\":17041,\"Ġfitness\":17042,\"Ġannouncement\":17043,\"ationToken\":17044,\"Ġserves\":17045,\"need\":17046,\"Ġgeometry\":17047,\"ARS\":17048,\"æĢ\":17049,\"andidate\":17050,\"Ġsprite\":17051,\"_split\":17052,\"Week\":17053,\"adies\":17054,\">(Ċ\":17055,\"?>\\\"\":17056,\"Ġ///Ċ\":17057,\"Ġeiner\":17058,\"Ġweekly\":17059,\"ĉlogger\":17060,\"_pop\":17061,\"_man\":17062,\"Ġmigrations\":17063,\"Ġasks\":17064,\"Ġbs\":17065,\"Ġfalls\":17066,\".Where\":17067,\"-height\":17068,\"_feature\":17069,\".Min\":17070,\"Ġhyper\":17071,\"Ġvolatile\":17072,\"Ġtwenty\":17073,\"Typography\":17074,\"Unable\":17075,\"Det\":17076,\",f\":17077,\"-mod\":17078,\"Ġsettlement\":17079,\"Ġcontracts\":17080,\"nome\":17081,\"Bad\":17082,\"ĠBrian\":17083,\"(username\":17084,\"!!!!\":17085,\"Ġhack\":17086,\".Field\":17087,\"HR\":17088,\"ĠJordan\":17089,\"iza\":17090,\"ĠÂł\":17091,\"ĠSher\":17092,\".header\":17093,\"(other\":17094,\"ĠDub\":17095,\"(op\":17096,\"ĠRound\":17097,\"Ġvie\":17098,\"Ġappl\":17099,\"ĉJ\":17100,\"ĠInsert\":17101,\"ĠLP\":17102,\"regon\":17103,\"ĠMPI\":17104,\"Ġanchor\":17105,\"aca\":17106,\"Ã¸r\":17107,\"Ġade\":17108,\"anchor\":17109,\"quee\":17110,\"ĠTreeNode\":17111,\"Ġtargeted\":17112,\"Ġlaid\":17113,\"ABEL\":17114,\"vet\":17115,\"ĠOrigin\":17116,\"Ant\":17117,\".');Ċ\":17118,\"expect\":17119,\"edReader\":17120,\"ĠMajor\":17121,\"Ġinch\":17122,\"Compar\":17123,\"Ġpreview\":17124,\"Ġillness\":17125,\"ĠCONTRACT\":17126,\"ĠIndepend\":17127,\"uuid\":17128,\"Ġnome\":17129,\"Ġtc\":17130,\"ĠAvenue\":17131,\"isan\":17132,\"Ġphrase\":17133,\"_move\":17134,\"\\\")[\":17135,\"Ġprovision\":17136,\"Ġconcentr\":17137,\"_IR\":17138,\"ĠUt\":17139,\"()+\":17140,\"Ġnas\":17141,\"!,\":17142,\"ĠRobin\":17143,\"iations\":17144,\"atitude\":17145,\"Ġpx\":17146,\"ĠWithout\":17147,\"/bash\":17148,\"ekt\":17149,\"reement\":17150,\"Observer\":17151,\"ĠRegion\":17152,\"UBLIC\":17153,\"Ġ{//\":17154,\"KN\":17155,\"å·\":17156,\"GameObject\":17157,\"å¾\":17158,\"encoding\":17159,\"Ġ***\":17160,\"projects\":17161,\"Ġtk\":17162,\"Ġcheese\":17163,\"EMPL\":17164,\"aro\":17165,\"ĠØ§ÙĦ\":17166,\"Ġconsists\":17167,\"refresh\":17168,\"ureau\":17169,\"ĠScanner\":17170,\"Ġsoil\":17171,\"Ġflavor\":17172,\"DataSource\":17173,\"Execute\":17174,\"ÐµÐ½Ð¸Ðµ\":17175,\"Ġshit\":17176,\"åĪĨ\":17177,\"<any\":17178,\"Ġretrieve\":17179,\"Ġbelongs\":17180,\".strip\":17181,\"absolute\":17182,\"Ġexpanded\":17183,\"boy\":17184,\"):-\":17185,\"Ġrescue\":17186,\".JLabel\":17187,\"Ġrely\":17188,\"Ġalignment\":17189,\"-family\":17190,\"Ġrend\":17191,\"OLUMN\":17192,\"Ġborrow\":17193,\"Ġquotes\":17194,\"ĠLew\":17195,\"Ġshower\":17196,\"ĠDELETE\":17197,\"_loop\":17198,\"!\\\"ĊĊ\":17199,\"ĉre\":17200,\"Ġattempted\":17201,\"average\":17202,\"ĠPaint\":17203,\"quisition\":17204,\"olen\":17205,\"Ġliterature\":17206,\"ĠReference\":17207,\"_TEXTURE\":17208,\"ĠSeg\":17209,\"ĠIndust\":17210,\"ctype\":17211,\"DUCT\":17212,\"_HOST\":17213,\"ĠTrade\":17214,\"Ġplugins\":17215,\"Ġbreast\":17216,\"ulse\":17217,\"Ġcreature\":17218,\"ãģĻ\":17219,\"ĠWi\":17220,\"Ġsupplied\":17221,\"coll\":17222,\"!(\\\"\":17223,\"Ġfucking\":17224,\"ĠChrome\":17225,\"ĠUri\":17226,\"ĠNation\":17227,\"Ġvertices\":17228,\"THE\":17229,\"ĠOriginal\":17230,\"onde\":17231,\"Ġsharp\":17232,\"Ġcooking\":17233,\"Ġ{/*\":17234,\"ĠPsych\":17235,\"ĠHollywood\":17236,\"=$_\":17237,\".Dock\":17238,\"Ġger\":17239,\"Ġbone\":17240,\"_conn\":17241,\"_sec\":17242,\"ysics\":17243,\"Ġ=\\\"\":17244,\"Sal\":17245,\"sf\":17246,\"Ġdeeply\":17247,\"angles\":17248,\"Term\":17249,\"bell\":17250,\"ĠQuick\":17251,\"eneration\":17252,\"adioButton\":17253,\"åħ¥\":17254,\"}čĊčĊčĊ\":17255,\"Ġcaption\":17256,\"lc\":17257,\"ĠEL\":17258,\",[\":17259,\"ĠĠĠĠĠĠčĊ\":17260,\"rett\":17261,\"(method\":17262,\"ĠFlash\":17263,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":17264,\"WISE\":17265,\".scale\":17266,\"Ġroughly\":17267,\"_child\":17268,\"memory\":17269,\"aying\":17270,\"Ġinitialized\":17271,\"inator\":17272,\"Ð°ÑĢ\":17273,\"Ġscalar\":17274,\"ĠHo\":17275,\"aires\":17276,\"(column\":17277,\".destroy\":17278,\"PACK\":17279,\"Ġhem\":17280,\"angel\":17281,\"_SUB\":17282,\".qu\":17283,\"Ġ×\":17284,\"DEFAULT\":17285,\"positories\":17286,\"ĠLength\":17287,\"ĠFast\":17288,\"Ġsignals\":17289,\"Ġ//$\":17290,\"riers\":17291,\"Ġdummy\":17292,\"ANY\":17293,\"Ġpersonality\":17294,\"Ġagricult\":17295,\"Platform\":17296,\"ERO\":17297,\"ĠTra\":17298,\"Ġenorm\":17299,\"ĉW\":17300,\"ActionResult\":17301,\"Ġaver\":17302,\"[str\":17303,\"Ġ'--\":17304,\".Sprintf\":17305,\"Ġdebut\":17306,\"ĠÑĩ\":17307,\"hex\":17308,\"_utils\":17309,\"Ġpb\":17310,\"UITableView\":17311,\"Ġzur\":17312,\".encode\":17313,\"Ġvag\":17314,\".errors\":17315,\"Ð¾Ð½\":17316,\"Ġmr\":17317,\"ĠAward\":17318,\"Ġcpu\":17319,\"Ġpressed\":17320,\"'est\":17321,\"ĠFestival\":17322,\"'T\":17323,\"Ġak\":17324,\"resolve\":17325,\".me\":17326,\"Ġnic\":17327,\"Ġgenre\":17328,\"Ġattrib\":17329,\"ĠMoon\":17330,\"Ġarrive\":17331,\"ĠDating\":17332,\"Ġtm\":17333,\".Configuration\":17334,\".red\":17335,\"Ġglm\":17336,\"Ġstations\":17337,\"switch\":17338,\"Ġtied\":17339,\"äºº\":17340,\"Ġ/></\":17341,\"Quantity\":17342,\"quiry\":17343,\"_tab\":17344,\"Ġalg\":17345,\"Toast\":17346,\"resize\":17347,\"questions\":17348,\"schema\":17349,\"Literal\":17350,\"(entity\":17351,\"NECTION\":17352,\"changed\":17353,\"_FIELD\":17354,\"_HEIGHT\":17355,\"Ġorganic\":17356,\"PRE\":17357,\"ĠCat\":17358,\".Draw\":17359,\"Es\":17360,\"Ġloud\":17361,\"ĠĠĠĠĠĠĠĠĉ\":17362,\"ĠKat\":17363,\"Ġheap\":17364,\"âĢľIt\":17365,\"etr\":17366,\"Ġunlikely\":17367,\"erals\":17368,\"/auth\":17369,\"todo\":17370,\"Place\":17371,\"Posted\":17372,\"Comments\":17373,\"ĠTech\":17374,\"ĠFinally\":17375,\"egration\":17376,\"Ġminimal\":17377,\"ĠFiles\":17378,\"Ġtamb\":17379,\"ë¡ľ\":17380,\"ĠRelease\":17381,\".resize\":17382,\"ĠÏ\":17383,\"collect\":17384,\"=p\":17385,\"ĠLIABLE\":17386,\"Ġproducing\":17387,\"-wrapper\":17388,\"Ġsingles\":17389,\"ĠNBA\":17390,\"orr\":17391,\"eren\":17392,\".addAction\":17393,\"Ġthesis\":17394,\"dn\":17395,\"PTY\":17396,\".des\":17397,\"Ġbacter\":17398,\"ĠExpress\":17399,\"Ġ*)Ċ\":17400,\"åĳ\":17401,\"/admin\":17402,\"seconds\":17403,\"åĬŁ\":17404,\"ussion\":17405,\"abeth\":17406,\"ĠComputer\":17407,\"Ġruling\":17408,\"(\\\"../\":17409,\".GET\":17410,\"ĠMedal\":17411,\"itionally\":17412,\"commit\":17413,\"focus\":17414,\"_LEVEL\":17415,\"inda\":17416,\"Fact\":17417,\"=np\":17418,\"=\\\"\\\">Ċ\":17419,\"Ġsubsequent\":17420,\"posable\":17421,\"-fluid\":17422,\"Ġthorough\":17423,\"Ġpublicly\":17424,\"apters\":17425,\"ĠWilson\":17426,\"_PRE\":17427,\"yard\":17428,\"ä¼\":17429,\"ĉin\":17430,\"Ġrevers\":17431,\"Ġbullet\":17432,\"cribed\":17433,\"nesota\":17434,\"Ġ($_\":17435,\"annon\":17436,\"cursor\":17437,\"Ġclothing\":17438,\"ĠMulti\":17439,\":',\":17440,\"Ġvess\":17441,\"ordinator\":17442,\"Ġeinem\":17443,\"Cannot\":17444,\"Ġarmed\":17445,\"ĉV\":17446,\"ä¸Ĭ\":17447,\".Flat\":17448,\"ĠSep\":17449,\"ĠSubject\":17450,\"_font\":17451,\"Ġcharacteristics\":17452,\"Done\":17453,\"eln\":17454,\"############\":17455,\"POS\":17456,\"Ġdensity\":17457,\"ĠPlatform\":17458,\"-items\":17459,\"Ġovers\":17460,\"Ġpushing\":17461,\"ç¤\":17462,\".Connection\":17463,\"_term\":17464,\"Ġinitialization\":17465,\"________________________________\":17466,\"ç¬\":17467,\".document\":17468,\"lesh\":17469,\"ĉdocument\":17470,\"ĠPin\":17471,\"Ã§a\":17472,\"Ġdefinitions\":17473,\".Path\":17474,\"_WRITE\":17475,\"ĠĉĊ\":17476,\"?>ĊĊ\":17477,\"Ġterrible\":17478,\"bean\":17479,\"ickets\":17480,\"ĠSV\":17481,\"Buy\":17482,\"(task\":17483,\"Ġregime\":17484,\"google\":17485,\"Ġcrack\":17486,\".visit\":17487,\"NUM\":17488,\"energy\":17489,\"Ġstruck\":17490,\"_sample\":17491,\".payload\":17492,\"Ġrevis\":17493,\"ĠScene\":17494,\"Ġpg\":17495,\"Ġbreakfast\":17496,\"URRENT\":17497,\".charAt\":17498,\"_exception\":17499,\"ĠAnton\":17500,\"Ġguidelines\":17501,\"Ġexhaust\":17502,\"ĠFinancial\":17503,\"Ġindent\":17504,\"Ġdesktop\":17505,\"Hidden\":17506,\"Failure\":17507,\"Ġprinciple\":17508,\"Ġiv\":17509,\"Ġseks\":17510,\"network\":17511,\"ĠnumberOf\":17512,\"ĠAlbert\":17513,\"ĉlong\":17514,\",.\":17515,\"Ġzeros\":17516,\"fade\":17517,\"ĠTyp\":17518,\"ĠTerm\":17519,\"ĠArts\":17520,\".Application\":17521,\"Ġbehalf\":17522,\"æĪ·\":17523,\"Ġmere\":17524,\"(`${\":17525,\"Ġawareness\":17526,\"elpers\":17527,\"flix\":17528,\"Ġweigh\":17529,\"Ġestimates\":17530,\".child\":17531,\"/O\":17532,\"ĠBitmap\":17533,\".bottom\":17534,\"Ġ**************************************************************************\":17535,\"Expect\":17536,\"ento\":17537,\"ĠForum\":17538,\"veral\":17539,\"Ġjail\":17540,\"Ġabilities\":17541,\"ĠHOLD\":17542,\"ĠCit\":17543,\"Ġdynam\":17544,\"Ġgray\":17545,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉ\":17546,\".nextInt\":17547,\"antly\":17548,\"ĠARISING\":17549,\"(private\":17550,\"Ġrejected\":17551,\"ĠNic\":17552,\"Ġleather\":17553,\"={Ċ\":17554,\"alytics\":17555,\"thetic\":17556,\".Top\":17557,\".Page\":17558,\"={`\":17559,\"Ġ;čĊ\":17560,\"depth\":17561,\"mann\":17562,\"WD\":17563,\"ĠSom\":17564,\".Right\":17565,\"Ġ)}Ċ\":17566,\"Ġtrait\":17567,\"ÃĹ\":17568,\"iac\":17569,\"Ġrv\":17570,\"Sample\":17571,\".Xml\":17572,\"opped\":17573,\"ĠÑĦ\":17574,\"lists\":17575,\"Ġtear\":17576,\"iversary\":17577,\".collection\":17578,\"ĠConstitution\":17579,\"ĠHttpResponse\":17580,\"Ġbrill\":17581,\"ĠProm\":17582,\"hover\":17583,\"ĠMiami\":17584,\"Ġargue\":17585,\"_float\":17586,\"ĠãĤ\":17587,\"Ġnat\":17588,\"ĠTal\":17589,\"Ġintegration\":17590,\"(cur\":17591,\"Ġremoving\":17592,\"Ġcoeff\":17593,\"ĠThough\":17594,\"Ġforecast\":17595,\"ĠVegas\":17596,\"Site\":17597,\"Ġtrab\":17598,\"ĠHenry\":17599,\"-i\":17600,\"Ġinvolves\":17601,\"BT\":17602,\"Ġslo\":17603,\"Invoke\":17604,\"Ġlucky\":17605,\"rat\":17606,\"Ġ?Ċ\":17607,\"Ġhandled\":17608,\"(fd\":17609,\"contents\":17610,\"ĠOFF\":17611,\"RF\":17612,\"Ġsty\":17613,\"ĠMotor\":17614,\"tery\":17615,\"tax\":17616,\"MAP\":17617,\"ĠMrs\":17618,\"Ġphones\":17619,\"ĠUIView\":17620,\"\\\")));Ċ\":17621,\"(dev\":17622,\"ĠIrish\":17623,\"Ġws\":17624,\"DI\":17625,\"_OFFSET\":17626,\"ĠEvents\":17627,\"Ġstages\":17628,\"Ġ}//\":17629,\"Ġhaben\":17630,\"STANCE\":17631,\"ĠSin\":17632,\"ĠMoney\":17633,\"(top\":17634,\"Ġappointment\":17635,\"VERSION\":17636,\"metadata\":17637,\"_comment\":17638,\"Ġcolleagues\":17639,\"maps\":17640,\"âĺ\":17641,\"ĊĉĊ\":17642,\"(al\":17643,\"_req\":17644,\"Ġfut\":17645,\"Ġarchitecture\":17646,\"ĠWHETHER\":17647,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":17648,\"_screen\":17649,\"ĠstyleUrls\":17650,\"Ġmonster\":17651,\".up\":17652,\"phia\":17653,\"Ġprocessor\":17654,\"ĠTerr\":17655,\"=',\":17656,\"ĠManufact\":17657,\"ĠNT\":17658,\"kel\":17659,\"ibern\":17660,\"ĉfile\":17661,\"Ali\":17662,\"rientation\":17663,\"Ġ//!\":17664,\"apore\":17665,\"aneous\":17666,\"ĠCreat\":17667,\"folder\":17668,\"Ġhay\":17669,\"Suppress\":17670,\"(left\":17671,\"Ġeuro\":17672,\"Ġdisclaimer\":17673,\"ustry\":17674,\"ships\":17675,\"_fd\":17676,\"ĠFa\":17677,\"_insert\":17678,\"Ġrol\":17679,\"ifting\":17680,\"ĠComments\":17681,\"_br\":17682,\"Ġlosses\":17683,\"ĠAdded\":17684,\"charg\":17685,\"ĠÐ¿Ð¾\":17686,\"_system\":17687,\"ĠSometimes\":17688,\"ĠSpain\":17689,\"(group\":17690,\"ialis\":17691,\"Ġdollar\":17692,\"ĠArgs\":17693,\"quires\":17694,\"ĠTen\":17695,\".scss\":17696,\"Ġsurvive\":17697,\"usage\":17698,\"Ġjun\":17699,\"imiter\":17700,\"ï¼ģĊĊ\":17701,\"Ġfifth\":17702,\"toggle\":17703,\"Ġdecline\":17704,\"($\\\"\":17705,\"(Long\":17706,\"inge\":17707,\"Ġpilot\":17708,\"-light\":17709,\"-radius\":17710,\"Ġpodcast\":17711,\"Ġnaturally\":17712,\"Pages\":17713,\"ä¸º\":17714,\"ĠDespite\":17715,\"Ġlighting\":17716,\"Ġcrate\":17717,\"ĠBinary\":17718,\"Ġreducing\":17719,\"Ġeleg\":17720,\"ĠMouse\":17721,\"ĠTestBed\":17722,\"ĠbeforeEach\":17723,\"_ARRAY\":17724,\"Redirect\":17725,\"Ġflood\":17726,\"Ġships\":17727,\"Ġelectricity\":17728,\")*(\":17729,\"ê¸\":17730,\"ĠViet\":17731,\"hero\":17732,\"Ġdia\":17733,\"ĠKent\":17734,\"heart\":17735,\"Ġthreats\":17736,\"_acc\":17737,\"Ġsymbols\":17738,\"ischen\":17739,\"_inst\":17740,\"Criterion\":17741,\"ĠTIM\":17742,\".Height\":17743,\"ĠâĢĻ\":17744,\"();ĊĊĊ\":17745,\"Products\":17746,\"_SP\":17747,\"ĠCy\":17748,\"Ġdependent\":17749,\"este\":17750,\"Ġdatos\":17751,\"dit\":17752,\"Ð°Ð²\":17753,\"IGNAL\":17754,\"Ġlesson\":17755,\"\\\">'\":17756,\"ĠCover\":17757,\"ĠHope\":17758,\"ĠTimer\":17759,\"Ġdad\":17760,\"viders\":17761,\"ĠPhot\":17762,\"/?\":17763,\"ropy\":17764,\"oming\":17765,\"asion\":17766,\"Ġ\\\\(\":17767,\"ĠET\":17768,\"ĠReading\":17769,\"Ġepisodes\":17770,\"lm\":17771,\"echa\":17772,\"Ġneuro\":17773,\"Ġharmon\":17774,\"Ġliberal\":17775,\"-ind\":17776,\"DATA\":17777,\"Ġeveryday\":17778,\"Ġdivided\":17779,\"ĠActiveRecord\":17780,\"figure\":17781,\"UA\":17782,\"ä¹\":17783,\"riendly\":17784,\"tech\":17785,\".gameObject\":17786,\"Ð¸ÑĤÑĮ\":17787,\"Ġmoon\":17788,\"ftime\":17789,\"Ġnoch\":17790,\"ĠTORT\":17791,\"ĠVM\":17792,\".initial\":17793,\"(child\":17794,\"Ġmusical\":17795,\"Ġoc\":17796,\"bas\":17797,\"ĠHay\":17798,\"_long\":17799,\"Ġmemset\":17800,\"iley\":17801,\"adelphia\":17802,\"SV\":17803,\"roat\":17804,\"_tx\":17805,\"Ġlon\":17806,\"ĠngOnInit\":17807,\"bp\":17808,\"ĠGolden\":17809,\"ACHE\":17810,\"Ġworried\":17811,\"azi\":17812,\"Ear\":17813,\"Take\":17814,\"(fp\":17815,\"burgh\":17816,\"_Data\":17817,\"gres\":17818,\"ĠOnt\":17819,\"pus\":17820,\"Ġtransparent\":17821,\"Ġpocket\":17822,\"Ġram\":17823,\"igrations\":17824,\".čĊčĊ\":17825,\"Ġ[(\":17826,\"Ġadopted\":17827,\"Ġreportedly\":17828,\"ĠDream\":17829,\"Ġ}));Ċ\":17830,\"losing\":17831,\"Ġteeth\":17832,\"ĠBooks\":17833,\"\\\",&\":17834,\"enny\":17835,\"LEMENT\":17836,\"Ġgel\":17837,\"ĠPlant\":17838,\"!âĢĿ\":17839,\".host\":17840,\"ĠReply\":17841,\"rength\":17842,\"Ġrecognition\":17843,\"Ġ}}>Ċ\":17844,\"LA\":17845,\"Ġmirror\":17846,\"Ġassistant\":17847,\"(device\":17848,\"Ġspiritual\":17849,\"builder\":17850,\"Â§\":17851,\"Ġoutr\":17852,\"Ġtt\":17853,\"ĠPER\":17854,\"Ġradical\":17855,\"Methods\":17856,\"Ġpace\":17857,\"udy\":17858,\"Ġgut\":17859,\"ĠGreek\":17860,\"Ġnonatomic\":17861,\"ĠPaper\":17862,\"_GPIO\":17863,\"Ġobst\":17864,\".Ad\":17865,\"vironments\":17866,\"ĠSov\":17867,\"(con\":17868,\"ĠTransaction\":17869,\".assign\":17870,\"ĉcatch\":17871,\"elter\":17872,\"Ġbitcoin\":17873,\"_GR\":17874,\"Ġ<?=\":17875,\"_lang\":17876,\"ìĿĦ\":17877,\"Browser\":17878,\"Ġconsideration\":17879,\"ĠExecutive\":17880,\"éĹ´\":17881,\";\\\\\":17882,\"ĠJSONObject\":17883,\"ĠBell\":17884,\"Ġspokesman\":17885,\"~~~~~~~~\":17886,\"ockey\":17887,\"ĠGro\":17888,\"ĠAw\":17889,\"Constraint\":17890,\"ĠPract\":17891,\"ĠEver\":17892,\"prim\":17893,\":{Ċ\":17894,\"_im\":17895,\"PN\":17896,\"Millis\":17897,\"UMENT\":17898,\"Ġbags\":17899,\"Ã¥r\":17900,\"ANNEL\":17901,\"Ġic\":17902,\"Ġtransportation\":17903,\"ĠSaudi\":17904,\"handler\":17905,\"Drag\":17906,\"Ġhd\":17907,\"collapse\":17908,\"_PH\":17909,\"Ġub\":17910,\"ARM\":17911,\"ĠAPP\":17912,\"Ġtonight\":17913,\"Ġdining\":17914,\"Recogn\":17915,\"Ġbc\":17916,\"igt\":17917,\"(number\":17918,\"Boot\":17919,\"Ġelsewhere\":17920,\"Ġarrow\":17921,\"arga\":17922,\"Ġdelicious\":17923,\"ĠSN\":17924,\"WR\":17925,\"Validate\":17926,\"ĠQuality\":17927,\"(email\":17928,\"Ġinterpre\":17929,\"igation\":17930,\"Ġchocolate\":17931,\"_edge\":17932,\"Ġstops\":17933,\":function\":17934,\")|\":17935,\"Ġthai\":17936,\"ĠLoading\":17937,\"Story\":17938,\"Trigger\":17939,\"branch\":17940,\"Ġtd\":17941,\"enticated\":17942,\"Ġadventure\":17943,\"Ġblockchain\":17944,\"EventHandler\":17945,\"Ġsqrt\":17946,\".Pr\":17947,\"Lng\":17948,\"Because\":17949,\"Ġviv\":17950,\"Ġocean\":17951,\"ylvania\":17952,\"Ð°Ñģ\":17953,\"ĠUtils\":17954,\"Ġdesper\":17955,\"Ġdefer\":17956,\"ĉrequire\":17957,\"hl\":17958,\"Require\":17959,\"]\\\\\":17960,\"Ġdirections\":17961,\"_resource\":17962,\"Ġsubscribe\":17963,\"ĠÃº\":17964,\"ĠHeart\":17965,\"ests\":17966,\"-sub\":17967,\"ĠRh\":17968,\"forEach\":17969,\"Ġdelight\":17970,\"Ġterritory\":17971,\".concurrent\":17972,\"Ġ(+\":17973,\"jpg\":17974,\"Ġpreparation\":17975,\"Ġrounded\":17976,\"Comm\":17977,\".Left\":17978,\"Ġopinions\":17979,\"ĠNavigation\":17980,\"(first\":17981,\"\\\",$\":17982,\"Ġhire\":17983,\"Ġdetection\":17984,\".getElements\":17985,\"Ġeps\":17986,\"Ġsklearn\":17987,\"Ġcz\":17988,\"Ġ/>čĊ\":17989,\"metic\":17990,\"Ġtransformation\":17991,\"åı·\":17992,\"Ġrgb\":17993,\"istributions\":17994,\"Ġimplicit\":17995,\"/in\":17996,\"destination\":17997,\"Ð°ÑĤÑĮ\":17998,\"Zero\":17999,\"Ġunset\":18000,\".where\":18001,\".go\":18002,\"Ġformation\":18003,\"Ġdeclaration\":18004,\"()čĊčĊ\":18005,\"ĠExpl\":18006,\"ĉĉĉĠĠ\":18007,\"/pro\":18008,\".JSON\":18009,\"Ġdesk\":18010,\".substr\":18011,\"//----------------------------------------------------------------------------\":18012,\"lyn\":18013,\"pson\":18014,\"disable\":18015,\"ĠFunc\":18016,\"ĉAssert\":18017,\"ĠMARK\":18018,\"Ġdefeat\":18019,\"Ġblind\":18020,\"Ġconstants\":18021,\".headers\":18022,\"UILD\":18023,\"Ġexpenses\":18024,\"Pixel\":18025,\"Ġhr\":18026,\"Ġfel\":18027,\"ĠEastern\":18028,\"_del\":18029,\"ĠCub\":18030,\"Ġsq\":18031,\"ĉcount\":18032,\"ĠDirectory\":18033,\"Ġexclus\":18034,\"Ġhistoric\":18035,\"Ġ------------------------------------------------\":18036,\"Ġcomposition\":18037,\"ĠdataGridView\":18038,\"ĠBurn\":18039,\"ĠBC\":18040,\"Master\":18041,\"Ġspawn\":18042,\"Ġbearing\":18043,\".SetActive\":18044,\"ilo\":18045,\"Ġgallery\":18046,\"Ġfounded\":18047,\"Ġavailability\":18048,\".sqrt\":18049,\"Ġpes\":18050,\"ĠDOM\":18051,\"mate\":18052,\"Oct\":18053,\"Ġmatched\":18054,\"itivity\":18055,\"Ġanxiety\":18056,\".price\":18057,\"ĠInstant\":18058,\"ìĬ\":18059,\"Ġtut\":18060,\"ICollection\":18061,\".shared\":18062,\"_sql\":18063,\"tbl\":18064,\"library\":18065,\"_destroy\":18066,\"ermal\":18067,\"ĠNotes\":18068,\"ĠEin\":18069,\"Ġsouthern\":18070,\"ĠOTHERWISE\":18071,\"Ġmacro\":18072,\".lower\":18073,\"cls\":18074,\"ContentView\":18075,\".link\":18076,\"constant\":18077,\"ĠBes\":18078,\"Ġsomebody\":18079,\"nb\":18080,\"\\\">{\":18081,\"(local\":18082,\".....\":18083,\"ĠNull\":18084,\"mx\":18085,\"ĠÃ§\":18086,\"Ġpause\":18087,\"-----------\":18088,\"_MO\":18089,\"ĠCM\":18090,\"ĠforKey\":18091,\"ĠDVD\":18092,\"Ġclosest\":18093,\"_DEVICE\":18094,\"ĠStephen\":18095,\"ĠBBC\":18096,\"ĠTravel\":18097,\"Paint\":18098,\"ĠResults\":18099,\"ĠRule\":18100,\"Ġtp\":18101,\"Ġratings\":18102,\"cin\":18103,\"csv\":18104,\">/\":18105,\"ĠGOP\":18106,\"lad\":18107,\"ĠÑĢ\":18108,\"ĠindexPath\":18109,\"matrix\":18110,\"=f\":18111,\"arsed\":18112,\"Ġ});\":18113,\"ĠCos\":18114,\"ĠScore\":18115,\"Ġtak\":18116,\"ĠESP\":18117,\"ĠINC\":18118,\"_NULL\":18119,\"-flex\":18120,\"\\\"][\":18121,\"into\":18122,\"eland\":18123,\"Authorization\":18124,\"_FALSE\":18125,\"Ġgate\":18126,\"Ġvid\":18127,\"istent\":18128,\"TIME\":18129,\"Ġrewrite\":18130,\"Ġtie\":18131,\"Ġarchive\":18132,\".events\":18133,\".getParameter\":18134,\"ĠPermission\":18135,\"Ġprogramme\":18136,\"Ġé\":18137,\"jud\":18138,\"Ġcameras\":18139,\"(sys\":18140,\"ĠSyrian\":18141,\"Ġimprovements\":18142,\"Ġhip\":18143,\"Ġsuicide\":18144,\"Ġscholar\":18145,\"Ġcompatible\":18146,\"remote\":18147,\".down\":18148,\"FUNCTION\":18149,\"Ġmanaging\":18150,\"ĠUIKit\":18151,\".raw\":18152,\">>>>\":18153,\"Ġdemands\":18154,\"ellite\":18155,\"Ġdent\":18156,\"ĠMicro\":18157,\"åıĸ\":18158,\"'][$\":18159,\"ĠIE\":18160,\"imension\":18161,\"Ġtrem\":18162,\"Ġgained\":18163,\".with\":18164,\".ok\":18165,\"hou\":18166,\"Ġbom\":18167,\"ampaign\":18168,\"Ġjoining\":18169,\"fish\":18170,\"ĠaddSubview\":18171,\"Ġnorthern\":18172,\".cor\":18173,\"oret\":18174,\"Die\":18175,\"inish\":18176,\"_comp\":18177,\"Ġattended\":18178,\"Ġcollapse\":18179,\"ĠSS\":18180,\"acent\":18181,\"_EQUAL\":18182,\"ĠDeep\":18183,\"RGB\":18184,\"ĉtest\":18185,\"olves\":18186,\"uset\":18187,\"UnityEngine\":18188,\"writer\":18189,\"Resolver\":18190,\",%\":18191,\"ifference\":18192,\"_remove\":18193,\"onda\":18194,\"Ġfemme\":18195,\"decode\":18196,\"Branch\":18197,\"Ġflush\":18198,\"Ġinnovative\":18199,\"Tests\":18200,\"Ġ['./\":18201,\"Ġcovering\":18202,\".admin\":18203,\"ultipart\":18204,\"(lambda\":18205,\"ï»¿namespace\":18206,\"ĠSport\":18207,\"Ġ!(\":18208,\"acles\":18209,\"Ġdepression\":18210,\"ĠKong\":18211,\"Ġpert\":18212,\"ĠConn\":18213,\"ĠOtherwise\":18214,\"/home\":18215,\"supported\":18216,\"Ġpink\":18217,\"Ġinvited\":18218,\"Ã±os\":18219,\"_enabled\":18220,\"Ġ-Ċ\":18221,\"FW\":18222,\"eners\":18223,\"ĠMY\":18224,\"Ġsuggestions\":18225,\"Canvas\":18226,\"Ġfer\":18227,\"ĠMarketing\":18228,\"@Test\":18229,\"untu\":18230,\"ĠVen\":18231,\"ĠCou\":18232,\"ivals\":18233,\"Donald\":18234,\"limited\":18235,\"ĉĉĉĉĉĉĊ\":18236,\"Ġanalyst\":18237,\"(entry\":18238,\"Ġrepresentative\":18239,\"_attributes\":18240,\"Ġfur\":18241,\".hide\":18242,\"resp\":18243,\"adores\":18244,\"rides\":18245,\"ĠJosh\":18246,\"robot\":18247,\"ĠNAT\":18248,\"Ġsesso\":18249,\"Ġintegrated\":18250,\":true\":18251,\"parts\":18252,\"Ġstupid\":18253,\":event\":18254,\"@endsection\":18255,\"Ġpu\":18256,\".Table\":18257,\"ĠYii\":18258,\"`;ĊĊ\":18259,\"Ġclang\":18260,\"=\\\"\\\">\":18261,\"engan\":18262,\"_parameters\":18263,\".internal\":18264,\"ĠModern\":18265,\"Ġmetric\":18266,\"Ġsemi\":18267,\"={{Ċ\":18268,\".amazon\":18269,\"ĠBB\":18270,\"ainty\":18271,\"viewport\":18272,\"ĠstartActivity\":18273,\"dispatch\":18274,\"*****\":18275,\"Ġflav\":18276,\"ifferent\":18277,\"[this\":18278,\"Ġstake\":18279,\"Ġargued\":18280,\"viously\":18281,\".work\":18282,\"ĠOak\":18283,\"Old\":18284,\"(async\":18285,\"notes\":18286,\"Ġflip\":18287,\"Ġdisag\":18288,\"ĠTE\":18289,\"ĉerror\":18290,\"<'\":18291,\"ĠÂ»ĊĊ\":18292,\"Ġfiltered\":18293,\"ĠMach\":18294,\"Ġhung\":18295,\"_dump\":18296,\"_samples\":18297,\"-dismiss\":18298,\"Ġray\":18299,\"Implemented\":18300,\"DK\":18301,\"Ġjed\":18302,\"Ġbreaks\":18303,\"Ġfits\":18304,\".gr\":18305,\"ĠZero\":18306,\"oro\":18307,\"Ġequally\":18308,\"Ġ'[\":18309,\"Ġconcerning\":18310,\"<meta\":18311,\"players\":18312,\"_POS\":18313,\"_sim\":18314,\"Jan\":18315,\"Ġyours\":18316,\"ĉN\":18317,\"Ġspir\":18318,\"Ġchampion\":18319,\"ĠAnalysis\":18320,\"apa\":18321,\"ĠNSLog\":18322,\"_lines\":18323,\"Ã±a\":18324,\"ĉĉĠĠĠĠĠĠĠ\":18325,\".Sc\":18326,\"Rep\":18327,\"etroit\":18328,\"urable\":18329,\"MIT\":18330,\"compat\":18331,\"owned\":18332,\"_indices\":18333,\"],čĊ\":18334,\"Ġdiscovery\":18335,\"ĠDiego\":18336,\"obi\":18337,\".Index\":18338,\"Ġtrends\":18339,\"PLAY\":18340,\".no\":18341,\"Ġlens\":18342,\"_cfg\":18343,\"Ġanno\":18344,\"agan\":18345,\"Ġperiods\":18346,\"terms\":18347,\"yz\":18348,\"Ġattacked\":18349,\"ibration\":18350,\"PECIAL\":18351,\"_grad\":18352,\"Ġaccordance\":18353,\".ReadLine\":18354,\".device\":18355,\"rix\":18356,\".container\":18357,\"may\":18358,\"ercise\":18359,\"ĠLu\":18360,\"Ġrg\":18361,\"ĠÑģÑĤ\":18362,\"ĉĉĊĉĉĊ\":18363,\"(un\":18364,\"TERNAL\":18365,\"Ġlessons\":18366,\"Ġallegations\":18367,\"Ġtransmission\":18368,\".Ref\":18369,\"Mobile\":18370,\"ĠTournament\":18371,\"ĠNut\":18372,\"ĠGa\":18373,\"ĠCapital\":18374,\"definition\":18375,\"-exp\":18376,\"clean\":18377,\"Ġfantasy\":18378,\"Ġenhance\":18379,\"entence\":18380,\"']:Ċ\":18381,\"ackets\":18382,\"Ġcelebrate\":18383,\"@\\\",\":18384,\"SerializeField\":18385,\"Ġarrays\":18386,\"tb\":18387,\"ĉst\":18388,\"[assembly\":18389,\"(reg\":18390,\".category\":18391,\"Ġimproving\":18392,\"Ġsalope\":18393,\"ByteArray\":18394,\"Original\":18395,\"Ġ[{Ċ\":18396,\"åĽŀ\":18397,\"ĠClin\":18398,\"oenix\":18399,\"ĠSamsung\":18400,\"Ġmaintained\":18401,\"Ġagenda\":18402,\"fail\":18403,\"Ġpresents\":18404,\"Ġtiming\":18405,\".mark\":18406,\"'><\":18407,\"Ġpromot\":18408,\"Ġincl\":18409,\"_only\":18410,\"ë¥¼\":18411,\"ĠAttorney\":18412,\"-date\":18413,\"Ġlandscape\":18414,\"Ġfu\":18415,\"SY\":18416,\".prop\":18417,\"ĠArr\":18418,\"pag\":18419,\"ParallelGroup\":18420,\"':čĊ\":18421,\"Ġlogs\":18422,\"aunch\":18423,\"unci\":18424,\"nama\":18425,\"TableCell\":18426,\"issues\":18427,\".{\":18428,\"ecurity\":18429,\"_exec\":18430,\"olds\":18431,\"Ġhosts\":18432,\"Ġproto\":18433,\"_import\":18434,\"_sort\":18435,\"ĠBow\":18436,\"ĠNormal\":18437,\"ĠFarm\":18438,\".createParallelGroup\":18439,\"Rotation\":18440,\".err\":18441,\"Ġpleased\":18442,\"itage\":18443,\".Wh\":18444,\"ĉĉĠĠĠĠ\":18445,\"MR\":18446,\"ĠMORE\":18447,\"ĠNatural\":18448,\"_transform\":18449,\"BASE\":18450,\"eneral\":18451,\"utdown\":18452,\".commons\":18453,\"WT\":18454,\"Ġaan\":18455,\".Result\":18456,\"dog\":18457,\"Ġclicking\":18458,\"),ĊĊ\":18459,\"#line\":18460,\"Operator\":18461,\"Ġciv\":18462,\"Ġmerg\":18463,\"obuf\":18464,\"ngthen\":18465,\"Ġ[{\":18466,\"Ġcancell\":18467,\"trigger\":18468,\".:\":18469,\"WORK\":18470,\"declare\":18471,\"Ġdecrease\":18472,\"ÅĽci\":18473,\"loom\":18474,\".None\":18475,\"ĠMI\":18476,\"ĠJason\":18477,\"Ġhealthcare\":18478,\"iamond\":18479,\"sylvania\":18480,\"*x\":18481,\"ĠRa\":18482,\"[b\":18483,\"Ġprinting\":18484,\"phabet\":18485,\"ĠLabour\":18486,\"opper\":18487,\"Ġzijn\":18488,\"-target\":18489,\"_FUNCTION\":18490,\"Ġoct\":18491,\"ÐµÐ½Ð¸Ñı\":18492,\"åľ¨\":18493,\"Ġwestern\":18494,\"Ġcomputers\":18495,\"ĠRET\":18496,\"HashMap\":18497,\"[String\":18498,\"getValue\":18499,\"_DATE\":18500,\".Next\":18501,\"ĠFif\":18502,\"Ã©l\":18503,\"icked\":18504,\"æİ\":18505,\"-MM\":18506,\"Ġ{ĊĊĊ\":18507,\"Ġcontacts\":18508,\"Ġdigits\":18509,\"Produ\":18510,\"Ġunusual\":18511,\"Ġrapidly\":18512,\"tures\":18513,\"Ġangry\":18514,\"cancel\":18515,\"xxxx\":18516,\"_parser\":18517,\"idity\":18518,\"_PREFIX\":18519,\"Ġmehr\":18520,\"Ġrarely\":18521,\"ethe\":18522,\"opes\":18523,\"Ġ%.\":18524,\"works\":18525,\"Ġtheta\":18526,\"Ġcontribution\":18527,\"ĠTony\":18528,\"Ġsquad\":18529,\"Ð°Ð¹\":18530,\"ĠÃ®n\":18531,\"there\":18532,\"outed\":18533,\"ĉq\":18534,\"ĻĤ\":18535,\"good\":18536,\"LI\":18537,\"é¡µ\":18538,\"ĠLiving\":18539,\"izabeth\":18540,\"Ġkt\":18541,\"ĠDallas\":18542,\"]],Ċ\":18543,\"Ġ/>ĊĊ\":18544,\"Ġraising\":18545,\"/router\":18546,\"_game\":18547,\"ĠCUR\":18548,\"zens\":18549,\".es\":18550,\"ĠfontWeight\":18551,\"(func\":18552,\"notification\":18553,\"Ġ'../../../\":18554,\"Ġblame\":18555,\"ãĢĤĊĊĊĊ\":18556,\"anco\":18557,\"Identity\":18558,\"follow\":18559,\"Ġarts\":18560,\"xs\":18561,\"Ġofficially\":18562,\"ĠStudio\":18563,\"Ġrecommendations\":18564,\"Ġlocale\":18565,\"Ġamateur\":18566,\"ĠEnable\":18567,\"Ġcaps\":18568,\".End\":18569,\"-add\":18570,\"_gshared\":18571,\"ĠCT\":18572,\"Force\":18573,\"ĊĠĠĠĠĠĠĠĠĠĠĠĠĊ\":18574,\"Ġorange\":18575,\"Ġlp\":18576,\"Ġanswered\":18577,\".Grid\":18578,\"Ġdual\":18579,\"Ġstrategic\":18580,\"Ġnobody\":18581,\"Ġfatal\":18582,\"_est\":18583,\"(el\":18584,\"Ġìł\":18585,\"ĠBudd\":18586,\"AIT\":18587,\"_factor\":18588,\"-one\":18589,\"ĠHAVE\":18590,\"\\\"čĊčĊ\":18591,\"Prof\":18592,\"ĠÃ¤r\":18593,\"strings\":18594,\"Ġdirty\":18595,\"ĠFace\":18596,\"ĠBegin\":18597,\"ĠBus\":18598,\"Ġwis\":18599,\"åŃĹ\":18600,\"Ġspeaker\":18601,\"Ġcarrier\":18602,\"ĠOm\":18603,\"Ġhadn\":18604,\"Allow\":18605,\"::__\":18606,\"Ġverb\":18607,\"ĠComplete\":18608,\"ĠEasy\":18609,\"Ġbills\":18610,\"ĠĠĊĊ\":18611,\"Vertical\":18612,\"Ġpron\":18613,\"ĠDefine\":18614,\"Ġlookup\":18615,\"variables\":18616,\"Ġpandas\":18617,\"umes\":18618,\"Ġinnoc\":18619,\"ĠsetUp\":18620,\"ĠChampionship\":18621,\"artist\":18622,\"ĠCType\":18623,\"Foundation\":18624,\"à¹Ī\":18625,\"ĠSetup\":18626,\"Ġrecipes\":18627,\"ĠUIColor\":18628,\"ĠFight\":18629,\"Ġauthorized\":18630,\"_click\":18631,\"_success\":18632,\"angan\":18633,\"ĠMountain\":18634,\"ĠDoctor\":18635,\"Ġegg\":18636,\"ĠMedicine\":18637,\"cles\":18638,\"`.Ċ\":18639,\"[int\":18640,\"dashboard\":18641,\"ĠAppro\":18642,\"-dr\":18643,\"Ġproduces\":18644,\"Ġrental\":18645,\"Ġreload\":18646,\"Ġarrival\":18647,\"spot\":18648,\"Ġundert\":18649,\"Ġequipped\":18650,\"Ġproved\":18651,\"Ġcenters\":18652,\"Ġdefines\":18653,\"also\":18654,\"Ġopacity\":18655,\"ĠUnfortunately\":18656,\"ĠIllinois\":18657,\"ĠÐ½Ðµ\":18658,\"ĠTemple\":18659,\"ĠTrail\":18660,\"ĠKelly\":18661,\"Ġmeasurement\":18662,\"Ġseparated\":18663,\"-circle\":18664,\"Hey\":18665,\"ĠREAD\":18666,\"igits\":18667,\"Ġib\":18668,\"ĠMOD\":18669,\"attery\":18670,\"Ð°Ð·\":18671,\"Ġvend\":18672,\"ÐµÐ½ÑĤ\":18673,\"ĠHttpClient\":18674,\"safe\":18675,\"_ASS\":18676,\"icit\":18677,\"ĠConstruct\":18678,\"ĠClo\":18679,\"ĠSix\":18680,\"_TOKEN\":18681,\"(block\":18682,\"Ġwarned\":18683,\"/*!\":18684,\"!</\":18685,\"acades\":18686,\"Ġmarg\":18687,\"erase\":18688,\"Ġdisplays\":18689,\"istrator\":18690,\"gets\":18691,\"Ġgtk\":18692,\"_GENER\":18693,\"ned\":18694,\"_%\":18695,\"Ġfavourite\":18696,\"ĠBru\":18697,\"ĠÃ¡\":18698,\"secondary\":18699,\"Ġmast\":18700,\"Ġsoph\":18701,\"ĠSafety\":18702,\"hard\":18703,\"raise\":18704,\"ĠExchange\":18705,\"Ġcontemporary\":18706,\"Ġdreams\":18707,\"Ġtel\":18708,\"Ġneighbors\":18709,\"ĠHoly\":18710,\".mean\":18711,\"emit\":18712,\"ĠMess\":18713,\"Cast\":18714,\"NECT\":18715,\"plugins\":18716,\"Ġrb\":18717,\"wr\":18718,\"Ġhub\":18719,\"ĠStudies\":18720,\"Ġpossession\":18721,\"$('.\":18722,\"ensitive\":18723,\"ĠaddCriterion\":18724,\"__.\":18725,\"Ġexpertise\":18726,\"Arch\":18727,\"Ġcub\":18728,\"ervers\":18729,\"Ġparticles\":18730,\"uar\":18731,\"Ġboundary\":18732,\")',\":18733,\"ajo\":18734,\"Ġpref\":18735,\":`\":18736,\"Ġharass\":18737,\"iu\":18738,\"Ġreaching\":18739,\"Ġmeg\":18740,\"Ġzo\":18741,\"(ID\":18742,\"_required\":18743,\"ĠsÃ©\":18744,\"ĠQueue\":18745,\"AO\":18746,\"Ġgem\":18747,\"pton\":18748,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":18749,\"ijk\":18750,\"({čĊ\":18751,\"Ġcollision\":18752,\"ĠUkraine\":18753,\"Ġ-*-Ċ\":18754,\"NSInteger\":18755,\"_BLOCK\":18756,\"ĠTexture\":18757,\"Ġdeclined\":18758,\"nan\":18759,\"_wait\":18760,\"Ġpoliticians\":18761,\"Ġcoins\":18762,\"Ġderiv\":18763,\"helper\":18764,\"ĠPerhaps\":18765,\".rect\":18766,\"ĠPoly\":18767,\"abling\":18768,\"}/>Ċ\":18769,\"Ġinnovation\":18770,\"_\\\"\":18771,\"Ġ);čĊčĊ\":18772,\"Ġspots\":18773,\"Ġchoosing\":18774,\".cs\":18775,\"Ġflexible\":18776,\"UInt\":18777,\"Ġscratch\":18778,\"-al\":18779,\"Ġfestival\":18780,\"Ġoutstanding\":18781,\"================================================\":18782,\"Mean\":18783,\"ĠOregon\":18784,\"symbol\":18785,\".account\":18786,\"dney\":18787,\"'''\":18788,\"!\\\",\":18789,\"Ġparticle\":18790,\"Ãĥ\":18791,\"[MAX\":18792,\"IVER\":18793,\"ERENCE\":18794,\"NSMutable\":18795,\"ĠColumbia\":18796,\"_ĊĊ\":18797,\".fr\":18798,\"Ġcogn\":18799,\"VR\":18800,\"ĠMethods\":18801,\"ĠMade\":18802,\"ĠBR\":18803,\"ĠElse\":18804,\"Ġeggs\":18805,\"Ġswing\":18806,\"ĠInv\":18807,\"Ġdiseases\":18808,\"Ġfirms\":18809,\"Ġlemma\":18810,\"}`);Ċ\":18811,\"lings\":18812,\"Ġgym\":18813,\"uminum\":18814,\".Trim\":18815,\"Mem\":18816,\"Ġcriticism\":18817,\"ibernate\":18818,\"_TX\":18819,\"ioni\":18820,\"Ġguidance\":18821,\"Ġrepeatedly\":18822,\"Ġsupplier\":18823,\"Ġpainting\":18824,\".Fragment\":18825,\"edException\":18826,\"Ġwiring\":18827,\"Ġcourts\":18828,\"WEB\":18829,\"æľī\":18830,\"\\\\.\":18831,\"illance\":18832,\"Ġbrows\":18833,\"ĠPattern\":18834,\"PLICATION\":18835,\"ĠSummer\":18836,\"Chain\":18837,\"Ġcute\":18838,\"mercial\":18839,\"Ġdil\":18840,\"ĠFranklin\":18841,\"ĉglobal\":18842,\"INCLUDING\":18843,\"history\":18844,\"Ġlst\":18845,\"Qt\":18846,\"SDL\":18847,\"alia\":18848,\"iere\":18849,\"(...\":18850,\"ĉcin\":18851,\"iffs\":18852,\"velope\":18853,\"ĠRoot\":18854,\"cluster\":18855,\"UserName\":18856,\"igne\":18857,\"<S\":18858,\"Ġfest\":18859,\"Ġindicating\":18860,\"keeper\":18861,\"Ġcada\":18862,\"Ã©g\":18863,\"consin\":18864,\"ĠGB\":18865,\"Ġlb\":18866,\"emony\":18867,\"-icons\":18868,\"_doc\":18869,\"Actor\":18870,\"elem\":18871,\".Delete\":18872,\"Ġinfection\":18873,\"ĠPrivacy\":18874,\"Ġgreatly\":18875,\"ĠPos\":18876,\"ĠTreat\":18877,\"Flow\":18878,\"Ġattractive\":18879,\"ĠMarc\":18880,\"sudo\":18881,\"tesy\":18882,\"-an\":18883,\"abama\":18884,\"ĠWould\":18885,\"Ġsuck\":18886,\"indexPath\":18887,\"ĠEt\":18888,\"Times\":18889,\"Ġclubs\":18890,\"_assoc\":18891,\"Ġacquired\":18892,\"(\\\":\":18893,\"Ġintense\":18894,\".maps\":18895,\"Expected\":18896,\"Toggle\":18897,\"Ġay\":18898,\"Ġlifestyle\":18899,\"-called\":18900,\"ĠSnow\":18901,\"Volume\":18902,\"Ġcannabis\":18903,\"ĠDirection\":18904,\"ĠLimited\":18905,\"-specific\":18906,\"Ġdowntown\":18907,\"/icons\":18908,\"Ġreven\":18909,\"Leg\":18910,\"=null\":18911,\"Keyboard\":18912,\"')).\":18913,\"Ġ\\\"\\\";čĊ\":18914,\"Ġattitude\":18915,\".navigate\":18916,\"-error\":18917,\"AMPLE\":18918,\"ĠJay\":18919,\"vr\":18920,\"cow\":18921,\".compile\":18922,\"Ġmemories\":18923,\"_mark\":18924,\"ĠMinnesota\":18925,\"Ġkosten\":18926,\"Ġprobability\":18927,\"warning\":18928,\"Ġgenetic\":18929,\"Fixture\":18930,\"ĠHashSet\":18931,\"Nombre\":18932,\"_month\":18933,\"Æ°\":18934,\"-start\":18935,\"xygen\":18936,\"ĉft\":18937,\"iagnostics\":18938,\"ĠMatthew\":18939,\"Ġconcepts\":18940,\"Ġconstr\":18941,\".State\":18942,\"Ð¸Ð½\":18943,\"Nov\":18944,\"Î±\":18945,\"ĠPanel\":18946,\"ä¸ª\":18947,\"compare\":18948,\">()Ċ\":18949,\"Ġapplying\":18950,\"Ġpromised\":18951,\"Ġox\":18952,\"ncia\":18953,\"ĠValidation\":18954,\"orts\":18955,\"_cur\":18956,\"elect\":18957,\"eye\":18958,\"(Data\":18959,\"Ġreporter\":18960,\"ĠBuff\":18961,\"Ġsr\":18962,\"Ġ\\\";\":18963,\"icky\":18964,\"Ġtempor\":18965,\"SN\":18966,\"Ġresident\":18967,\"pires\":18968,\"ysical\":18969,\"Ġendorse\":18970,\"ĠSong\":18971,\"isEmpty\":18972,\"leet\":18973,\"_util\":18974,\"Ġdistingu\":18975,\"ĠTalk\":18976,\"ĠMot\":18977,\"(default\":18978,\".Arg\":18979,\"gorithms\":18980,\"_words\":18981,\"immer\":18982,\"_reset\":18983,\"family\":18984,\"WW\":18985,\"Ġsavings\":18986,\"ĠâĢĿ\":18987,\"_enable\":18988,\"sidebar\":18989,\"Running\":18990,\"Ġali\":18991,\"Ġtestim\":18992,\"Ġwarnings\":18993,\"ĠChem\":18994,\"ĠExit\":18995,\"Ġfounder\":18996,\"pector\":18997,\"Ġrm\":18998,\"_dataset\":18999,\"ĠDas\":19000,\"Ġhan\":19001,\"Getty\":19002,\"Ã¡l\":19003,\"Ġny\":19004,\"Ġpoverty\":19005,\"Ġresulted\":19006,\".by\":19007,\"ĠVisit\":19008,\"Ġobtaining\":19009,\"/'.$\":19010,\"ĠĠĠĠĠĠĠĠĠĠĠĊ\":19011,\"shall\":19012,\"_LEFT\":19013,\"UIImage\":19014,\"_Name\":19015,\"have\":19016,\"ĠNob\":19017,\"lr\":19018,\"-footer\":19019,\"Ġnaked\":19020,\"ĠGarden\":19021,\"\\\\Facades\":19022,\"Ġgraduate\":19023,\"Ġfranchise\":19024,\"plane\":19025,\"Ġcontributions\":19026,\"ĠstringWith\":19027,\"Ġcrypto\":19028,\"Ġmovements\":19029,\"athers\":19030,\"Ġlifetime\":19031,\"Ġcommunicate\":19032,\"jar\":19033,\"ĠFragment\":19034,\"_IF\":19035,\"ĠNavy\":19036,\"ĠFigure\":19037,\"Ġsimulation\":19038,\"_stop\":19039,\"Ġreporters\":19040,\"Ġversus\":19041,\"aja\":19042,\"ĠÎ±\":19043,\"Ġgovernor\":19044,\"ListItem\":19045,\"Ġsealed\":19046,\".Background\":19047,\"edi\":19048,\"ashing\":19049,\"Ġlip\":19050,\"ĠIh\":19051,\"merge\":19052,\"Ġnec\":19053,\"elocity\":19054,\"ATEG\":19055,\"Ġseeds\":19056,\"Ġfloating\":19057,\"_FA\":19058,\"walk\":19059,\"ĉuser\":19060,\"_depth\":19061,\"Ġwage\":19062,\"@app\":19063,\"Nil\":19064,\"([\\\"\":19065,\"(vector\":19066,\"Ġsecretary\":19067,\"ĠjPanel\":19068,\"vez\":19069,\"ÂłÂłÂłÂł\":19070,\"direction\":19071,\"ĠEP\":19072,\"Ġhunt\":19073,\"JsonProperty\":19074,\"ĠPORT\":19075,\"]\\\",\":19076,\"Ð°Ð¿\":19077,\"ĠForeign\":19078,\"panic\":19079,\"Ġtrials\":19080,\"ĠAle\":19081,\"Ġrural\":19082,\"-value\":19083,\"authorized\":19084,\"ĠScotland\":19085,\".drop\":19086,\"ĠMT\":19087,\"ç±\":19088,\"rowth\":19089,\"FilePath\":19090,\"Ġrecall\":19091,\"ifle\":19092,\"Ġcel\":19093,\"ĠSELECT\":19094,\"kn\":19095,\"_case\":19096,\"Ġcrop\":19097,\"sure\":19098,\"pot\":19099,\"ICS\":19100,\"Ġstem\":19101,\"Ġindustries\":19102,\"Put\":19103,\"Ġaber\":19104,\"roadcast\":19105,\"Icons\":19106,\")\\\")Ċ\":19107,\"æĪĲåĬŁ\":19108,\"gui\":19109,\"Ġassumed\":19110,\"Ġrx\":19111,\"EA\":19112,\"è§\":19113,\"ELL\":19114,\"Ġdose\":19115,\"Ġine\":19116,\"Ġdeeper\":19117,\"lider\":19118,\"Ġordinary\":19119,\"Ġgolf\":19120,\"_IMAGE\":19121,\"ĠNAME\":19122,\"(module\":19123,\"Ġatom\":19124,\"Ġbelt\":19125,\"Ġoffices\":19126,\"beta\":19127,\"Ġphilosophy\":19128,\"(JSON\":19129,\"-field\":19130,\"Ġintroduce\":19131,\"Ġconvenience\":19132,\"optim\":19133,\">\\\"Ċ\":19134,\"athy\":19135,\"Ġemployer\":19136,\"quate\":19137,\"Ġedited\":19138,\"Arguments\":19139,\"ĠNations\":19140,\"__)\":19141,\"Ġnose\":19142,\"ĠSample\":19143,\"')ĊĊĊ\":19144,\"Ġcake\":19145,\".getAttribute\":19146,\"HD\":19147,\"Modified\":19148,\"Ġpredicted\":19149,\"ÅĦ\":19150,\"anie\":19151,\"Sorry\":19152,\"(doc\":19153,\"wind\":19154,\"ieve\":19155,\"Ġprovisions\":19156,\"ATER\":19157,\"OTE\":19158,\"MY\":19159,\".Autowired\":19160,\"ĠBath\":19161,\".Boolean\":19162,\"Ġbackend\":19163,\".Mouse\":19164,\"ateral\":19165,\"paper\":19166,\"Const\":19167,\"ĠVR\":19168,\"_entity\":19169,\"_CTRL\":19170,\"ĠProtection\":19171,\"ĠGM\":19172,\"ĠStudy\":19173,\"Ġsoup\":19174,\"otime\":19175,\"'use\":19176,\"]\\\"\":19177,\"/users\":19178,\"aug\":19179,\"ĠHong\":19180,\"_norm\":19181,\"ãģ¨\":19182,\"Ġsecre\":19183,\"(Build\":19184,\"ĠContract\":19185,\"olas\":19186,\"Ġsauce\":19187,\"Ġaggressive\":19188,\"Ġracial\":19189,\"character\":19190,\"@@\":19191,\"Ġcompile\":19192,\"ĠVoid\":19193,\"_rem\":19194,\"_memory\":19195,\"kk\":19196,\"Ġmic\":19197,\"Same\":19198,\"Utility\":19199,\"ĠHtml\":19200,\"ĠXml\":19201,\"Ready\":19202,\"Ġgall\":19203,\"Ġallegedly\":19204,\"ĉĉĉĉĠĠĠ\":19205,\"ĠMetal\":19206,\"ĠPersonal\":19207,\"ĠborderRadius\":19208,\"rxjs\":19209,\"objects\":19210,\"Ġwanting\":19211,\"Ġbowl\":19212,\"vendor\":19213,\"offsetof\":19214,\"ĠRs\":19215,\"ĠRating\":19216,\"Ġrally\":19217,\"_NODE\":19218,\"ĠMix\":19219,\"Ġadvertis\":19220,\"Ġnarrative\":19221,\"sal\":19222,\"Ġmc\":19223,\"SError\":19224,\"Ġfingers\":19225,\"Ġaccompany\":19226,\"Ġtired\":19227,\"Ġstride\":19228,\"Ġgui\":19229,\"elist\":19230,\"Locale\":19231,\"Ġreleases\":19232,\"iking\":19233,\"Ġanger\":19234,\")))ĊĊ\":19235,\"allest\":19236,\"Summary\":19237,\"(O\":19238,\"(for\":19239,\"Ġbasketball\":19240,\"Ġroads\":19241,\"ĠInstall\":19242,\"ĠFab\":19243,\"itmap\":19244,\"Ġ))Ċ\":19245,\"Ġintersection\":19246,\"ighbor\":19247,\"ĠBry\":19248,\"ĠHERE\":19249,\"Software\":19250,\"elfare\":19251,\"acs\":19252,\"Ġtrailer\":19253,\".getClass\":19254,\"chars\":19255,\"Ġregulation\":19256,\"Ġrefers\":19257,\"Ġdestruction\":19258,\"Ġcontinuous\":19259,\"ĠAustin\":19260,\"é¢\":19261,\"akan\":19262,\".window\":19263,\"ĠTemplates\":19264,\"Ġabsence\":19265,\":n\":19266,\"Ġdisorder\":19267,\"flash\":19268,\"Ġdelet\":19269,\"boards\":19270,\"ĠĠĉ\":19271,\"ROP\":19272,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":19273,\"Ġacqu\":19274,\"Ġlawsuit\":19275,\"ĠReviews\":19276,\"Ġgarage\":19277,\"timer\":19278,\"Ġej\":19279,\"ĠRectangle\":19280,\"Ġflowers\":19281,\"ilst\":19282,\"ĠInstance\":19283,\"Super\":19284,\"det\":19285,\"disposing\":19286,\"ĠES\":19287,\"ĠIC\":19288,\"vere\":19289,\"Sk\":19290,\"_channels\":19291,\"puted\":19292,\"/null\":19293,\"nnen\":19294,\"ĠGallery\":19295,\"_global\":19296,\"Authentication\":19297,\"ĠRank\":19298,\"Ġblocked\":19299,\"Ġcalm\":19300,\"market\":19301,\"ĉval\":19302,\"Ġaug\":19303,\"period\":19304,\"ĠConstant\":19305,\"Ġ?>\\\">Ċ\":19306,\"Ġlobby\":19307,\"pal\":19308,\"Ġsink\":19309,\"iah\":19310,\"Ð¡\":19311,\"urname\":19312,\"Ġconver\":19313,\"Ġinvestigate\":19314,\"Christ\":19315,\"Hub\":19316,\"ĠIND\":19317,\"ĠPed\":19318,\"uras\":19319,\"ĉurl\":19320,\"ĠTro\":19321,\"Ġpreferences\":19322,\"Ġguaranteed\":19323,\"`ĊĊ\":19324,\"Ġportions\":19325,\"Ġevalu\":19326,\"'></\":19327,\"(){ĊĊ\":19328,\"encoded\":19329,\"zilla\":19330,\".Class\":19331,\"Ġ*_\":19332,\"_'\":19333,\"Ġviewed\":19334,\"ĠPhiladelphia\":19335,\".rows\":19336,\"Added\":19337,\"ĠTouch\":19338,\".delegate\":19339,\"queeze\":19340,\"slide\":19341,\"ĠSenior\":19342,\"(tag\":19343,\"Ġinterviews\":19344,\"Ġsua\":19345,\"atas\":19346,\"@ĊĊ\":19347,\"distance\":19348,\"Ġsein\":19349,\"latest\":19350,\"ĠPrince\":19351,\"Ġluxury\":19352,\"Ġrefr\":19353,\"ĠKitchen\":19354,\"ÑĦ\":19355,\"(at\":19356,\"Final\":19357,\"Ã¼ck\":19358,\"_zero\":19359,\"ĠABC\":19360,\"ĠManchester\":19361,\"Ġcow\":19362,\"COL\":19363,\"_NUMBER\":19364,\"changes\":19365,\"generate\":19366,\".Printf\":19367,\"share\":19368,\"Stock\":19369,\"ĠPT\":19370,\"Anim\":19371,\"anga\":19372,\"Ġig\":19373,\"uploads\":19374,\"Ġpacked\":19375,\"Ġ}];Ċ\":19376,\"(sender\":19377,\"ĠWire\":19378,\"isons\":19379,\"Ġplayoff\":19380,\"\\\\E\":19381,\"/R\":19382,\"Ġheaded\":19383,\"Alpha\":19384,\"(order\":19385,\"Ġopponents\":19386,\"ackson\":19387,\"_member\":19388,\"Turn\":19389,\"ĠSoviet\":19390,\"ìĹĲ\":19391,\"auge\":19392,\"Ġincoming\":19393,\"Ġjak\":19394,\"-game\":19395,\"ĠMale\":19396,\"ĠMonth\":19397,\"Stage\":19398,\".exe\":19399,\"OwnProperty\":19400,\".setItem\":19401,\"Ġdc\":19402,\"ä½ľ\":19403,\"Ġbrut\":19404,\"Ġattempting\":19405,\".len\":19406,\"Ġjudgment\":19407,\"Ġsab\":19408,\"Ġcad\":19409,\"ĠItems\":19410,\"comfort\":19411,\"elize\":19412,\"/log\":19413,\"Ġentreprene\":19414,\"Ġcompiler\":19415,\"_validation\":19416,\"review\":19417,\"ĠtextBox\":19418,\"Ġfraction\":19419,\"ĠBal\":19420,\">;ĊĊ\":19421,\".AutoScaleMode\":19422,\"Ġcats\":19423,\"Ġregistry\":19424,\"ulus\":19425,\"FI\":19426,\"payload\":19427,\"-search\":19428,\"Ġstaying\":19429,\"acious\":19430,\"Decoration\":19431,\"Review\":19432,\"Inf\":19433,\"Keep\":19434,\"itis\":19435,\",String\":19436,\"Coord\":19437,\"Ġpero\":19438,\"Sex\":19439,\"ĠAtlanta\":19440,\"uesta\":19441,\"Argb\":19442,\">*\":19443,\"}_\":19444,\"Footer\":19445,\"Ġemployed\":19446,\"_bound\":19447,\"vide\":19448,\".func\":19449,\"$scope\":19450,\"Ġspo\":19451,\"ĠAnal\":19452,\"ounced\":19453,\"around\":19454,\"Ġrestriction\":19455,\"Ġshops\":19456,\"åĢ\":19457,\"ĠLatin\":19458,\"-col\":19459,\"Ġbarely\":19460,\"ĠEuro\":19461,\"Er\":19462,\"Ġfaire\":19463,\"_distance\":19464,\"_unlock\":19465,\"Quote\":19466,\"IVATE\":19467,\"ĠåĪ\":19468,\"Ġaimed\":19469,\"ĠRetrie\":19470,\".iter\":19471,\"Ġwrapped\":19472,\"Ġagreements\":19473,\"strument\":19474,\"(product\":19475,\"Ġstudied\":19476,\".setValue\":19477,\"Ġye\":19478,\"ĠCache\":19479,\"MBOL\":19480,\"Ġquarterback\":19481,\"Ġsyntax\":19482,\".getElementsBy\":19483,\".version\":19484,\"website\":19485,\"Runner\":19486,\"_single\":19487,\"ativ\":19488,\"ĠAltern\":19489,\"ĠBeautiful\":19490,\"rightarrow\":19491,\"Ġdiversity\":19492,\"plash\":19493,\"(co\":19494,\".Fill\":19495,\"Ġtyping\":19496,\"Ġclar\":19497,\"Hit\":19498,\"OO\":19499,\"acco\":19500,\"worth\":19501,\"Ġscripts\":19502,\"ĠMuslims\":19503,\"ĠLL\":19504,\"erving\":19505,\"(boolean\":19506,\"Ġbaseball\":19507,\"ĠCAN\":19508,\"MAIL\":19509,\"depend\":19510,\"Ġrespective\":19511,\"Ġconstexpr\":19512,\".*;ĊĊ\":19513,\"']))Ċ\":19514,\"Ġyard\":19515,\"Ġidentical\":19516,\"ifecycle\":19517,\"USH\":19518,\"upiter\":19519,\".validate\":19520,\"cli\":19521,\"ISTER\":19522,\"Indicator\":19523,\"Fail\":19524,\"Ġdemocracy\":19525,\".var\":19526,\"Ġsatisfied\":19527,\"-------------\":19528,\"encer\":19529,\"hor\":19530,\"Ġrounds\":19531,\"DAO\":19532,\"oa\":19533,\"Ġflask\":19534,\"=c\":19535,\"[]Ċ\":19536,\"/dist\":19537,\"Ġparte\":19538,\"Ġconfirmation\":19539,\"eron\":19540,\"aware\":19541,\"<?>\":19542,\"Ġdependencies\":19543,\"ĠVideos\":19544,\"-row\":19545,\"Ġ**/Ċ\":19546,\"Ġnou\":19547,\"Ġhover\":19548,\"æŀ\":19549,\"Ġnin\":19550,\"ĠUSD\":19551,\"Mac\":19552,\"_Load\":19553,\"Ġoutcomes\":19554,\"_socket\":19555,\"Ġqueries\":19556,\"wm\":19557,\"Ġhitting\":19558,\"inux\":19559,\"Mich\":19560,\"udge\":19561,\"ATAB\":19562,\"Ġvulnerable\":19563,\"ä¾\":19564,\"Ġportfolio\":19565,\":YES\":19566,\"ĉmap\":19567,\"Bound\":19568,\"Ġiteration\":19569,\"incess\":19570,\"Ġactors\":19571,\"ĠQual\":19572,\"_clean\":19573,\"ãĢĳãĢĲ\":19574,\"MSG\":19575,\"Green\":19576,\"ĠOfficer\":19577,\"Ġsmoking\":19578,\">',\":19579,\"ĠFlo\":19580,\"++;\":19581,\"olygon\":19582,\"Ġbulk\":19583,\"Ġdrama\":19584,\"Ġexceptions\":19585,\"osed\":19586,\"Ġ+čĊ\":19587,\"Ġlegacy\":19588,\"CV\":19589,\"Ġcontributed\":19590,\"ĠTerms\":19591,\"Ġbt\":19592,\"Ġuntuk\":19593,\"Ġalien\":19594,\"===Ċ\":19595,\"ĉVector\":19596,\"Ġls\":19597,\"Online\":19598,\".facebook\":19599,\"numeric\":19600,\"ockets\":19601,\"Aut\":19602,\"bury\":19603,\"-redux\":19604,\"ĠRedistributions\":19605,\"GLOBALS\":19606,\"urrencies\":19607,\"Ġtons\":19608,\"âĢĻ,\":19609,\"ĠÃª\":19610,\"(col\":19611,\"ĠSymbol\":19612,\"Ġstayed\":19613,\"ĠML\":19614,\"Ġmunicip\":19615,\"Ġsexo\":19616,\"Sen\":19617,\"nr\":19618,\"Ġgains\":19619,\"Ġshortly\":19620,\".Menu\":19621,\"Ã½\":19622,\"KNOWN\":19623,\"Ġoperators\":19624,\"-V\":19625,\"ĠPatrick\":19626,\"/add\":19627,\"_CO\":19628,\"iration\":19629,\"(post\":19630,\"Posts\":19631,\"/_\":19632,\"Ġplug\":19633,\"Ġintellectual\":19634,\"Ġmetab\":19635,\"Ġpregnancy\":19636,\"ĠPremier\":19637,\"nm\":19638,\"Ġprediction\":19639,\"ĠMinistry\":19640,\"Three\":19641,\"valuate\":19642,\"ĠMini\":19643,\"bu\":19644,\"Ð¾Ð·\":19645,\"<ul\":19646,\"Ġdd\":19647,\"olving\":19648,\"ĠCut\":19649,\"Ġschem\":19650,\".train\":19651,\"itate\":19652,\"Ġrice\":19653,\"Ġbirds\":19654,\"ãģ«\":19655,\"middle\":19656,\"structions\":19657,\"Ġnerv\":19658,\"aque\":19659,\"Ġflu\":19660,\"Ġsurvival\":19661,\"ĠGalaxy\":19662,\"ĠFant\":19663,\".Order\":19664,\"Attrib\":19665,\"irts\":19666,\"Ã©c\":19667,\"Movie\":19668,\"Ġconce\":19669,\"quarters\":19670,\"Ġmood\":19671,\".AddRange\":19672,\"Ġresolved\":19673,\"ãĥĪ\":19674,\"Ġburning\":19675,\"ĉĉĉĉčĊ\":19676,\"ĠWE\":19677,\"Ġhosting\":19678,\"LAB\":19679,\"Ġmanagers\":19680,\"Ġstrengthen\":19681,\"<const\":19682,\"ĠFirebase\":19683,\"oned\":19684,\"ĠJean\":19685,\"'</\":19686,\"Ġ:=Ċ\":19687,\"algorithm\":19688,\"ĠArc\":19689,\"Ġfrozen\":19690,\"_events\":19691,\"Ġoverse\":19692,\"goods\":19693,\"Ġfait\":19694,\"Ġviagra\":19695,\"oses\":19696,\"Ġcompiled\":19697,\"ĠAth\":19698,\"Ġsubstance\":19699,\"animated\":19700,\"PF\":19701,\"previous\":19702,\"Ġroots\":19703,\"(filter\":19704,\"olumes\":19705,\"Ġintro\":19706,\"(evt\":19707,\"ĠBag\":19708,\"ĠDefinition\":19709,\"ĠFeatures\":19710,\"Annotation\":19711,\"Ġavg\":19712,\"(sum\":19713,\"QUIRE\":19714,\"Ġrenderer\":19715,\"ĠFix\":19716,\".datetime\":19717,\"=device\":19718,\"Spe\":19719,\"getInstance\":19720,\"Ġextensions\":19721,\"_net\":19722,\"ĠParliament\":19723,\"Ġcomic\":19724,\"ĠPick\":19725,\"arma\":19726,\"ĉmodel\":19727,\"Ġ--------------------------------\":19728,\"Ġmeng\":19729,\"manual\":19730,\"adapter\":19731,\"}-\":19732,\"edback\":19733,\"Ġelectrical\":19734,\"ĠCounter\":19735,\"ApplicationContext\":19736,\"_byte\":19737,\"(byte\":19738,\"ĠAutom\":19739,\"Ġterrorist\":19740,\"çĲ\":19741,\"through\":19742,\"Ġfiscal\":19743,\"oning\":19744,\"Ġspectrum\":19745,\"Ġbitmap\":19746,\"Ġsle\":19747,\"prod\":19748,\"Ġaged\":19749,\"Ġbene\":19750,\"ĠSpi\":19751,\"Ġbrilliant\":19752,\"Ġstability\":19753,\"Ġdiabetes\":19754,\"Ġconfigured\":19755,\"bone\":19756,\"ouses\":19757,\".googleapis\":19758,\"FACE\":19759,\"Ġinspiration\":19760,\"ĠDetroit\":19761,\"ench\":19762,\"ÑĢÑĥ\":19763,\"vehicle\":19764,\"Station\":19765,\"Ġholes\":19766,\"Ġdurch\":19767,\".Media\":19768,\"ĠCNN\":19769,\"inning\":19770,\"ĠPennsylvania\":19771,\"Ġemotion\":19772,\"Secret\":19773,\"Ã¡rio\":19774,\"ĠRate\":19775,\"Depth\":19776,\"Ġmodes\":19777,\"(idx\":19778,\"Ġhes\":19779,\"Ġgrey\":19780,\"Standard\":19781,\"Quest\":19782,\"buy\":19783,\"sur\":19784,\"ĠTrack\":19785,\"omm\":19786,\".gl\":19787,\"Ġ(\\\\\":19788,\"two\":19789,\"_IO\":19790,\"osex\":19791,\"_role\":19792,\"ç¤º\":19793,\"routes\":19794,\"Shop\":19795,\"ĠASC\":19796,\"Ġmemcpy\":19797,\"direct\":19798,\"Ġ*ĊĊ\":19799,\"ĠBM\":19800,\"ĠPor\":19801,\"_history\":19802,\"ĠResponseEntity\":19803,\".setFont\":19804,\"Ġengagement\":19805,\",h\":19806,\"ĠWordPress\":19807,\"fecha\":19808,\"Ġentrance\":19809,\"Despite\":19810,\"IDENT\":19811,\"Ġsanit\":19812,\"ĠGenerate\":19813,\"(\\\"\\\",\":19814,\"_video\":19815,\"Strategy\":19816,\"_ok\":19817,\"Ġties\":19818,\"Ġlogical\":19819,\"ĠBron\":19820,\"(File\":19821,\"ĠMoh\":19822,\".Split\":19823,\".Try\":19824,\"ĠHind\":19825,\"Ġscoring\":19826,\"Ġapproaches\":19827,\"Ġflour\":19828,\"VRT\":19829,\"USTOM\":19830,\"scripts\":19831,\"ĠEpisode\":19832,\"ĠAmb\":19833,\"_OR\":19834,\"Ġfrauen\":19835,\"Ġunlike\":19836,\"Ġriding\":19837,\"Ġpit\":19838,\"Ġtransf\":19839,\"arte\":19840,\"à¹ī\":19841,\"rape\":19842,\"retval\":19843,\"_after\":19844,\"\\\"<<\":19845,\"ĠBerlin\":19846,\"Ġtissue\":19847,\".Intent\":19848,\"ĠÐ´Ð»Ñı\":19849,\"Ġstunning\":19850,\"ĠHal\":19851,\".Integer\":19852,\"Ġwhereas\":19853,\"Ġdeleg\":19854,\"ĠuserName\":19855,\"Ġformats\":19856,\"Ġcompensation\":19857,\"ĠHum\":19858,\"arring\":19859,\"Ġunsafe\":19860,\"Pin\":19861,\"club\":19862,\"keyword\":19863,\"_theme\":19864,\"Ġcaller\":19865,\"Ġghost\":19866,\"Ġentitled\":19867,\"ĠMas\":19868,\"Ġdemonstrate\":19869,\"ĠHoward\":19870,\"Drop\":19871,\"#undef\":19872,\"Ġinvoke\":19873,\"ĠBridge\":19874,\"enden\":19875,\"ibling\":19876,\"Slot\":19877,\"ATABASE\":19878,\"Ġtemperatures\":19879,\"series\":19880,\"ĠRemember\":19881,\"Calendar\":19882,\"BF\":19883,\"=?\":19884,\"ĠAF\":19885,\"(http\":19886,\"makers\":19887,\"finity\":19888,\"precated\":19889,\"WH\":19890,\"olidays\":19891,\"-un\":19892,\"iale\":19893,\"\\\\User\":19894,\"reason\":19895,\"',ĊĊ\":19896,\"OWER\":19897,\"Ġpredictions\":19898,\"prob\":19899,\".nn\":19900,\"Ġ';Ċ\":19901,\".FromArgb\":19902,\"_LONG\":19903,\"Ġtroub\":19904,\"Ġunittest\":19905,\"elihood\":19906,\"ĉis\":19907,\"Ġconsec\":19908,\"LEASE\":19909,\"Ġclicked\":19910,\"Ġtemplates\":19911,\"BY\":19912,\"perm\":19913,\"matches\":19914,\"law\":19915,\"(tf\":19916,\"_ratio\":19917,\"itempty\":19918,\"Ġcreator\":19919,\"Bits\":19920,\"Encoder\":19921,\"*.\":19922,\"ĠUIT\":19923,\"ĠMask\":19924,\"curl\":19925,\"-go\":19926,\"ĠOcc\":19927,\"correct\":19928,\"ĠGer\":19929,\"(layout\":19930,\"unct\":19931,\".dispatch\":19932,\";amp\":19933,\".isRequired\":19934,\"ĉdo\":19935,\"mir\":19936,\"Ġpthread\":19937,\"-auto\":19938,\"ĠIce\":19939,\"Ġviolation\":19940,\"Ġconcluded\":19941,\"Ġvars\":19942,\"canvas\":19943,\"ĠTemp\":19944,\"ĠPhilipp\":19945,\"Īëĭ¤\":19946,\"crease\":19947,\"Ġfishing\":19948,\"abbit\":19949,\"Ġconcentration\":19950,\"irthday\":19951,\"Ġgross\":19952,\"Ġki\":19953,\"ĠHandler\":19954,\"Ġimmigrants\":19955,\"èĢ\":19956,\"Und\":19957,\"pn\":19958,\"rac\":19959,\"ĠConsult\":19960,\"fold\":19961,\"Ġstruggling\":19962,\"heat\":19963,\"Generic\":19964,\"Ġridic\":19965,\"ĠCOVID\":19966,\"omitempty\":19967,\"_OPTION\":19968,\"ê°Ģ\":19969,\"Ġcreatures\":19970,\"_PAGE\":19971,\"ei\":19972,\"(host\":19973,\"_HPP\":19974,\"ĠXXX\":19975,\"Ġawk\":19976,\"ascade\":19977,\"Ġpreg\":19978,\"provider\":19979,\"Pal\":19980,\"egen\":19981,\"clone\":19982,\".Register\":19983,\"Ġattachment\":19984,\"beit\":19985,\"theless\":19986,\"(Date\":19987,\"ĠForest\":19988,\"CGRect\":19989,\"Ġchildhood\":19990,\"amine\":19991,\"axes\":19992,\"']=\":19993,\"Navigator\":19994,\"Ġreplied\":19995,\"_inv\":19996,\",T\":19997,\"ĠFeature\":19998,\"{-\":19999,\"LANG\":20000,\"Ġconvey\":20001,\"çĶ¨æĪ·\":20002,\"ĠSerif\":20003,\"ĠAus\":20004,\"liche\":20005,\"Ġunused\":20006,\"Ġmont\":20007,\"nodes\":20008,\"Ġseu\":20009,\".className\":20010,\"norm\":20011,\"_SERVER\":20012,\"Ġwing\":20013,\"inx\":20014,\"Raw\":20015,\"ĠJam\":20016,\"Ġinsight\":20017,\"ĠNG\":20018,\"ĠInterface\":20019,\"Ġstmt\":20020,\"Ġnan\":20021,\"culator\":20022,\"-app\":20023,\"(Bundle\":20024,\"MessageBox\":20025,\"à®\":20026,\"Ġmeets\":20027,\"uby\":20028,\"OptionPane\":20029,\"itarian\":20030,\"Ġcollaboration\":20031,\"movie\":20032,\"Ġarmor\":20033,\"_bits\":20034,\"ĠHaving\":20035,\"Ġnude\":20036,\"ĠSetting\":20037,\"Ġsucc\":20038,\"Delay\":20039,\".components\":20040,\"achuset\":20041,\"ĠAlexander\":20042,\"Â©\":20043,\"Ġmeters\":20044,\"Ġpreparing\":20045,\"Ġincent\":20046,\"åĵ\":20047,\"ĠkÃ¶nnen\":20048,\"ĠConserv\":20049,\"Ġnumero\":20050,\"achusetts\":20051,\"-int\":20052,\"Ġemphas\":20053,\"layouts\":20054,\"Excel\":20055,\"IBAction\":20056,\"Ġresidential\":20057,\"eling\":20058,\"ĠNC\":20059,\"ĠAllen\":20060,\"Ġcette\":20061,\"Ġminds\":20062,\".required\":20063,\"Ø³\":20064,\"ĠGirls\":20065,\"Ġ};\":20066,\"ĠstringWithFormat\":20067,\"Ġaddressed\":20068,\"they\":20069,\"ĠBlood\":20070,\"poser\":20071,\"Ġjam\":20072,\"ÈĻ\":20073,\"æķ°æį®\":20074,\"Ġstdout\":20075,\"ĠUTF\":20076,\"Classes\":20077,\">\\\";čĊ\":20078,\"ĠSav\":20079,\".Bold\":20080,\"Ġenables\":20081,\"ĉtmp\":20082,\"Ġmanually\":20083,\"ĠSqu\":20084,\"userid\":20085,\".function\":20086,\".cache\":20087,\"LOPT\":20088,\".Services\":20089,\"ddit\":20090,\"tim\":20091,\"<img\":20092,\"ĠThings\":20093,\"ĠEverything\":20094,\"Ġapt\":20095,\"emand\":20096,\"Ġrolling\":20097,\"ë¦\":20098,\".level\":20099,\"Ġstom\":20100,\"ĠWinter\":20101,\"Ġviewing\":20102,\"(values\":20103,\"ocomplete\":20104,\"via\":20105,\"upo\":20106,\"Ġabortion\":20107,\"iÃ¨re\":20108,\"ï¼ĳ\":20109,\"_BUTTON\":20110,\"_domain\":20111,\"Ġbra\":20112,\"ĠAst\":20113,\"inas\":20114,\"Ġstatist\":20115,\"cod\":20116,\"LR\":20117,\"Ġdrives\":20118,\"Ġfollowers\":20119,\"Ġallies\":20120,\"ĉcurrent\":20121,\"ecessary\":20122,\"Ġdamaged\":20123,\"_pt\":20124,\"andles\":20125,\"ountries\":20126,\"Ġsimult\":20127,\"eu\":20128,\"Ġcontroversial\":20129,\"_GROUP\":20130,\"Ġrib\":20131,\".Info\":20132,\":mm\":20133,\".normal\":20134,\"_ADDRESS\":20135,\"Ġíķ\":20136,\"addle\":20137,\"ĠDur\":20138,\".Element\":20139,\"Warnings\":20140,\"Ġcredits\":20141,\"Ġinhib\":20142,\"Ġemissions\":20143,\"Ġhaz\":20144,\".youtube\":20145,\"ugged\":20146,\"Ġbother\":20147,\"ĠKansas\":20148,\"ĠFixed\":20149,\"ĠTests\":20150,\"ĠFIX\":20151,\"Uniform\":20152,\"Ġkont\":20153,\">>>\":20154,\"station\":20155,\"lore\":20156,\"atype\":20157,\"ishop\":20158,\"/****************************************************************\":20159,\"ComboBox\":20160,\"Ġvacation\":20161,\"Ġinitiative\":20162,\"ĠdefaultValue\":20163,\"concat\":20164,\"ĠKh\":20165,\"ĠWelcome\":20166,\"izedName\":20167,\"Migration\":20168,\"Ġgradient\":20169,\"Hot\":20170,\"Ġhardly\":20171,\"elo\":20172,\"ĠStudents\":20173,\"Ġloose\":20174,\"atz\":20175,\".Send\":20176,\"'/\":20177,\"Ġuniversal\":20178,\"Ġenterprise\":20179,\"Ġregex\":20180,\"Ġvisitor\":20181,\"ĠFly\":20182,\"Seq\":20183,\"à¸Ļ\":20184,\"ĠVisual\":20185,\"Ġlibraries\":20186,\"atoes\":20187,\"Payment\":20188,\"Ġpent\":20189,\"Ġgathered\":20190,\"VRTX\":20191,\"ĠDM\":20192,\"Split\":20193,\"Ġletting\":20194,\"ÐĿ\":20195,\"_errors\":20196,\"epoch\":20197,\"PARAM\":20198,\"cu\":20199,\"ÑģÑĤÐ²\":20200,\"olutions\":20201,\"Editing\":20202,\"fonts\":20203,\"Ġallocated\":20204,\"ĠBased\":20205,\"(Y\":20206,\"ĠJudge\":20207,\"Ġbrothers\":20208,\"FILES\":20209,\"Ã§o\":20210,\"wb\":20211,\"_PI\":20212,\"'^\":20213,\"Ġsword\":20214,\".services\":20215,\"Ġnl\":20216,\"Tim\":20217,\"igg\":20218,\"ĠMoore\":20219,\"Ġcryptoc\":20220,\"åĩº\":20221,\"_posts\":20222,\"otate\":20223,\"?'\":20224,\"....ĊĊ\":20225,\"Ġkl\":20226,\"=\\\"$\":20227,\"Ġdecoration\":20228,\"áº¡\":20229,\"ĠDIRECT\":20230,\"GUI\":20231,\")=>{Ċ\":20232,\"Ġnewsletter\":20233,\"Ġprecis\":20234,\"(point\":20235,\"ĠEquipment\":20236,\"uty\":20237,\"ĠDave\":20238,\"Ġparticipation\":20239,\"uarios\":20240,\"xit\":20241,\".As\":20242,\"ETER\":20243,\"orous\":20244,\"Ġshield\":20245,\"[]>\":20246,\"ilitary\":20247,\".origin\":20248,\"Ġpromotion\":20249,\"Unt\":20250,\"Ġct\":20251,\"TRA\":20252,\"ViewHolder\":20253,\"Ġsigma\":20254,\"delta\":20255,\"arehouse\":20256,\"contract\":20257,\"(Vector\":20258,\"Ġcompete\":20259,\"/form\":20260,\"/components\":20261,\"Ġnr\":20262,\"ĠIndones\":20263,\"ĠÐ¾ÑĤ\":20264,\"ĠVolume\":20265,\".files\":20266,\"(resp\":20267,\"/models\":20268,\"Ġsurf\":20269,\"standard\":20270,\"/o\":20271,\"ĠXCTAssert\":20272,\"VICES\":20273,\".Code\":20274,\"SED\":20275,\"Ġactivate\":20276,\"Delta\":20277,\"Ġlimitation\":20278,\"rij\":20279,\"Ġpregnant\":20280,\":^(\":20281,\"Ġsour\":20282,\"pie\":20283,\"Ġexpense\":20284,\"ication\":20285,\"ĠLarge\":20286,\"ĠÂ±\":20287,\"ĠBowl\":20288,\"(models\":20289,\"/N\":20290,\"Pa\":20291,\".reload\":20292,\"Ġwondering\":20293,\"Execution\":20294,\"ĉĠĠĠĠĠĠ\":20295,\"ĠGraphics\":20296,\"ĠContin\":20297,\"_job\":20298,\"ĠgetName\":20299,\"ĠMagn\":20300,\"ĠDWORD\":20301,\"mad\":20302,\"Ġnh\":20303,\"features\":20304,\"}\\\");Ċ\":20305,\"heets\":20306,\"(train\":20307,\"zn\":20308,\"Ġrecruit\":20309,\".connection\":20310,\"Ġbarrel\":20311,\"Ġsteam\":20312,\"_setting\":20313,\"Ġangular\":20314,\"aneously\":20315,\"Ġbil\":20316,\"ĠNorm\":20317,\"(!$\":20318,\"ibt\":20319,\"%(\":20320,\"Ġposit\":20321,\"ĠFather\":20322,\"intendo\":20323,\"Live\":20324,\"Ġports\":20325,\"Ġmej\":20326,\"Ġlanding\":20327,\"ponder\":20328,\"Ġcod\":20329,\"_HEADER\":20330,\".Margin\":20331,\"Ġballs\":20332,\"Ġdiscussions\":20333,\"Ġblend\":20334,\"Hex\":20335,\"Ġfarmers\":20336,\"Ġmaintaining\":20337,\"ĠĠĠčĊ\":20338,\"syn\":20339,\"[T\":20340,\"rus\":20341,\"uffers\":20342,\"Ġcontributors\":20343,\"_sys\":20344,\".Debug\":20345,\"Ġconstructed\":20346,\"omes\":20347,\"?id\":20348,\"slider\":20349,\"Ġsuppliers\":20350,\"scriber\":20351,\"pes\":20352,\"Ðŀ\":20353,\"\\\":čĊ\":20354,\"\\\\Controller\":20355,\"))ĊĊĊ\":20356,\"Ġlua\":20357,\"Multi\":20358,\"ENS\":20359,\"Src\":20360,\"Ġpetition\":20361,\"Ġslave\":20362,\"looking\":20363,\"VERT\":20364,\"ĉvector\":20365,\"Special\":20366,\"hh\":20367,\"anne\":20368,\"ĠNiger\":20369,\"/views\":20370,\"zing\":20371,\"endant\":20372,\"<C\":20373,\"speed\":20374,\"Ġ{};ĊĊ\":20375,\"BeginInit\":20376,\"Ġfopen\":20377,\"@RequestMapping\":20378,\"EndInit\":20379,\"Ġpunch\":20380,\"Sender\":20381,\"éĶ\":20382,\"getMessage\":20383,\"/types\":20384,\".PI\":20385,\"('');Ċ\":20386,\"ocused\":20387,\"(all\":20388,\"Ġdropdown\":20389,\").__\":20390,\"ĠVin\":20391,\".ForeignKey\":20392,\"canf\":20393,\"oured\":20394,\"ĠOrganization\":20395,\"ĠÐ°\":20396,\"ĠCulture\":20397,\"(cls\":20398,\",_\":20399,\"rgba\":20400,\"ìĿĺ\":20401,\".dataGridView\":20402,\"Ġdozen\":20403,\"ĠGes\":20404,\"_shared\":20405,\"nick\":20406,\"Ġhosp\":20407,\"ometer\":20408,\"Ġclaiming\":20409,\"ibles\":20410,\"rik\":20411,\"æĺ¯\":20412,\"enario\":20413,\"Ġdengan\":20414,\"obb\":20415,\"mont\":20416,\"_rank\":20417,\"('/',\":20418,\"Ġapolog\":20419,\"Ps\":20420,\"_power\":20421,\"ĠGree\":20422,\"Ġfulfill\":20423,\"Ġfirebase\":20424,\"Ġfare\":20425,\"ĠHim\":20426,\"Ġbean\":20427,\"âĢ¦.\":20428,\"ĠSPI\":20429,\"_RX\":20430,\"Ġperception\":20431,\"relative\":20432,\"compile\":20433,\"uum\":20434,\"utos\":20435,\"auc\":20436,\"ĠAsk\":20437,\"Ġindicator\":20438,\"/th\":20439,\".setString\":20440,\"ĠWisconsin\":20441,\".Domain\":20442,\"Ġartificial\":20443,\"Develop\":20444,\"ĠSarah\":20445,\"Ġlying\":20446,\"(search\":20447,\"ĠEmpire\":20448,\"urring\":20449,\"æĹ¶éĹ´\":20450,\"=\\\"${\":20451,\"ĠgetId\":20452,\"ĠPayment\":20453,\"transition\":20454,\"Ġ].\":20455,\"ixin\":20456,\"VT\":20457,\"-select\":20458,\"Ġdemonstrated\":20459,\"ĠlastName\":20460,\"employment\":20461,\".getProperty\":20462,\"Ġfought\":20463,\"fileName\":20464,\"ĠPers\":20465,\"-card\":20466,\"astr\":20467,\"attrs\":20468,\"Ġprominent\":20469,\"Design\":20470,\"ancouver\":20471,\"ãģĹãģ\":20472,\"ardo\":20473,\"secret\":20474,\"Ġrag\":20475,\"Ġpoison\":20476,\"-man\":20477,\",omitempty\":20478,\"ĉun\":20479,\"itzer\":20480,\"ĠCasino\":20481,\"ĠRoss\":20482,\"-foot\":20483,\"(results\":20484,\"Plan\":20485,\"Ġlaser\":20486,\"ê¸°\":20487,\"_DR\":20488,\"Facebook\":20489,\"Ġboards\":20490,\"sta\":20491,\"]],\":20492,\"Ġtiles\":20493,\"SIZE\":20494,\"Ġ=~\":20495,\"Ġpremier\":20496,\"ocab\":20497,\"Ġencoded\":20498,\"Ġreserve\":20499,\"ĠAfghanistan\":20500,\"ĠListNode\":20501,\"urls\":20502,\"Ġsubmission\":20503,\"Ġneu\":20504,\"Ġ#+#\":20505,\"_POST\":20506,\"Ġmoist\":20507,\"elli\":20508,\"elligent\":20509,\".alert\":20510,\"Ã³d\":20511,\"bre\":20512,\"ĠCollect\":20513,\"Ġgraphic\":20514,\"Ġlongitude\":20515,\"ĠProvid\":20516,\"ĠCalculate\":20517,\"xffff\":20518,\"criteria\":20519,\"Ġwaters\":20520,\"rock\":20521,\"loquent\":20522,\"ĠTrib\":20523,\"Ġburst\":20524,\"Ġsuffix\":20525,\".Extensions\":20526,\"ishes\":20527,\"ivel\":20528,\"ĠLIKE\":20529,\"ĠGetty\":20530,\".ActionEvent\":20531,\".slf\":20532,\"ĠHAL\":20533,\"upal\":20534,\"EAR\":20535,\"udi\":20536,\"_timeout\":20537,\"UF\":20538,\"ĠSingapore\":20539,\"ĠAdvent\":20540,\"_interval\":20541,\"chaft\":20542,\"ĠEmer\":20543,\"Ġtelephone\":20544,\"ĠTurk\":20545,\"_interface\":20546,\"ĠOwn\":20547,\"Ġencouraged\":20548,\"<Object\":20549,\"_Text\":20550,\"ĠOntario\":20551,\"ĠApply\":20552,\".firebase\":20553,\"Ġantib\":20554,\"Priority\":20555,\"enez\":20556,\"Days\":20557,\"cid\":20558,\"urrence\":20559,\";/\":20560,\"inned\":20561,\"ÑģÑı\":20562,\"Ġvez\":20563,\"fw\":20564,\"//$\":20565,\"attack\":20566,\"Ġstartup\":20567,\"ainers\":20568,\".fragment\":20569,\"opacity\":20570,\"(conn\":20571,\"heim\":20572,\".network\":20573,\"(stream\":20574,\"ĠNON\":20575,\"tol\":20576,\"ĠXbox\":20577,\"ĠDS\":20578,\"Ġcached\":20579,\"Ġprostitutas\":20580,\"ĠBalt\":20581,\"('[\":20582,\"Ġnoexcept\":20583,\"\\\"'\":20584,\"Ġsd\":20585,\".valid\":20586,\"_ag\":20587,\"Ġraces\":20588,\"Ġrod\":20589,\"itudes\":20590,\"<>(\":20591,\".Product\":20592,\"Forms\":20593,\"NEW\":20594,\"Pay\":20595,\"ĉboolean\":20596,\"_contact\":20597,\"ĠElectric\":20598,\"skip\":20599,\"Ġwur\":20600,\"Ġchronic\":20601,\"_driver\":20602,\"ĠSab\":20603,\"ĠUlt\":20604,\"ĠRad\":20605,\"STATUS\":20606,\"ĠLewis\":20607,\"OB\":20608,\"Ġgifts\":20609,\".Rec\":20610,\"TRUE\":20611,\"Ġintensity\":20612,\"Marker\":20613,\".compare\":20614,\"ffic\":20615,\"Cookie\":20616,\"ĠBaby\":20617,\"ĠBigDecimal\":20618,\"ilet\":20619,\"ĠHOLDERS\":20620,\"ĠLady\":20621,\"Ġlung\":20622,\"ĠAlabama\":20623,\"Ġdess\":20624,\"`);Ċ\":20625,\"ĠBuilder\":20626,\"_region\":20627,\"Ġneutral\":20628,\"Both\":20629,\"Ġhp\":20630,\"Ġhorn\":20631,\"Ġsegments\":20632,\"ĠEC\":20633,\"\\\"=>\\\"\":20634,\"(rec\":20635,\"ĠPi\":20636,\"GM\":20637,\"Ġlaptop\":20638,\"Scalar\":20639,\"isd\":20640,\"-dialog\":20641,\"ĠAnderson\":20642,\"Ġmistakes\":20643,\"ĠHan\":20644,\"jes\":20645,\"estination\":20646,\"Ġpromises\":20647,\"bid\":20648,\"ĠScient\":20649,\"GIN\":20650,\"ĠPerformance\":20651,\"bage\":20652,\".users\":20653,\"leading\":20654,\"Ġoral\":20655,\"Graphics\":20656,\"_PTR\":20657,\"hang\":20658,\"Ġinev\":20659,\"processing\":20660,\"Factor\":20661,\"ĠNA\":20662,\"$string\":20663,\"Ġgrounds\":20664,\".SaveChanges\":20665,\"clock\":20666,\"cripcion\":20667,\"ĠNewton\":20668,\"gc\":20669,\".includes\":20670,\"Ġblast\":20671,\"Ġ'-'\":20672,\"Ġpuede\":20673,\".Session\":20674,\"Ġgrep\":20675,\"_final\":20676,\"ĠGay\":20677,\"ĠGive\":20678,\"iri\":20679,\"-star\":20680,\"ĠUIImage\":20681,\"_epoch\":20682,\"ubb\":20683,\"enth\":20684,\"Ġelite\":20685,\"Ġcampaigns\":20686,\"ĠPorno\":20687,\"_assign\":20688,\"Protocol\":20689,\"ĠBeing\":20690,\"ĠAirport\":20691,\"Ġconventional\":20692,\"ĠWat\":20693,\"ĠCI\":20694,\"ETA\":20695,\"ĠAnthony\":20696,\"Ġtablet\":20697,\"(format\":20698,\"Ġconsistently\":20699,\"ĠIowa\":20700,\"Ġavatar\":20701,\".cursor\":20702,\"![\":20703,\"Ġhanging\":20704,\"Her\":20705,\"Such\":20706,\"';ĊĊĊ\":20707,\"orgeous\":20708,\"()==\":20709,\"ĠviewModel\":20710,\"Ġãĥ\":20711,\"Ġels\":20712,\"ĠAgent\":20713,\"Fetch\":20714,\"apor\":20715,\"Ġcx\":20716,\"pread\":20717,\"ĠPier\":20718,\"oeff\":20719,\"Sn\":20720,\"ĠVirtual\":20721,\"Apr\":20722,\".White\":20723,\"_MOD\":20724,\"ĠPoints\":20725,\"å¤±\":20726,\"Ġgenes\":20727,\"Ġvendor\":20728,\"Ġmainstream\":20729,\"<src\":20730,\"ĠElizabeth\":20731,\"Decoder\":20732,\"-state\":20733,\"ĠGlass\":20734,\"ncy\":20735,\"adians\":20736,\"_mon\":20737,\"ĠRemote\":20738,\"Ġwireless\":20739,\"ĠMi\":20740,\"åī\":20741,\"è¡¨\":20742,\"stage\":20743,\"ĠTile\":20744,\"llib\":20745,\"Variant\":20746,\"==Ċ\":20747,\"Ġgolden\":20748,\"(QString\":20749,\".putExtra\":20750,\"ĠDom\":20751,\"ĠAnimation\":20752,\"Ġinteractive\":20753,\"ifact\":20754,\"éĻ¤\":20755,\"LET\":20756,\"Ġfrequent\":20757,\"Ġ<>Ċ\":20758,\"Filename\":20759,\"Ġsne\":20760,\"ĠFootball\":20761,\"Ġrival\":20762,\"Ġdisaster\":20763,\"ionic\":20764,\"ĠDamage\":20765,\".Resource\":20766,\"-en\":20767,\"ĠTypes\":20768,\"getString\":20769,\"(board\":20770,\"Ġbol\":20771,\"plain\":20772,\"zym\":20773,\"à¸²\":20774,\"Ġscanner\":20775,\"ilder\":20776,\"_msgs\":20777,\"æı\":20778,\"(intent\":20779,\"Ġdestruct\":20780,\"Ġbust\":20781,\"ĠEmploy\":20782,\"oni\":20783,\"ĠUIViewController\":20784,\"Ġodds\":20785,\"earer\":20786,\"Geometry\":20787,\"Ġyii\":20788,\"_EXPORT\":20789,\"ĠAttack\":20790,\"Ġniet\":20791,\"Ġimpression\":20792,\"ĠGil\":20793,\"_prob\":20794,\"ĠCF\":20795,\"ĠExperience\":20796,\"/plugins\":20797,\".Method\":20798,\"Ġbeliefs\":20799,\"Native\":20800,\"_build\":20801,\"Ġvig\":20802,\"Ġranks\":20803,\"covered\":20804,\"such\":20805,\"Guard\":20806,\".pack\":20807,\"adder\":20808,\"ivia\":20809,\"lng\":20810,\"ĠÐ²Ñĭ\":20811,\"Timestamp\":20812,\"_now\":20813,\"Ġpoker\":20814,\"Ġunc\":20815,\"Ġshapes\":20816,\"-types\":20817,\"_period\":20818,\"pk\":20819,\"Ġveteran\":20820,\"Ġsono\":20821,\"Ġappointed\":20822,\"overflow\":20823,\".driver\":20824,\"_cat\":20825,\"utt\":20826,\"plant\":20827,\"imb\":20828,\"ĠAccept\":20829,\"Ġconcert\":20830,\"ĉnode\":20831,\"ĉz\":20832,\"?>čĊ\":20833,\"Ġbanned\":20834,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":20835,\"Ġtoxic\":20836,\"Ġdisappe\":20837,\"ÈĽ\":20838,\"Ġgrace\":20839,\"ateful\":20840,\"Reply\":20841,\"ĠCruz\":20842,\"Ġscrap\":20843,\"Ġkeywords\":20844,\"simp\":20845,\"Ġmortgage\":20846,\"Ġcyber\":20847,\"ĠExecute\":20848,\"Ġlatitude\":20849,\"ifu\":20850,\".COM\":20851,\"dbo\":20852,\"Ġsorts\":20853,\"ĠGas\":20854,\"omial\":20855,\".Local\":20856,\"Cells\":20857,\".Replace\":20858,\"Strings\":20859,\".fit\":20860,\"ĠThird\":20861,\"%\\\",Ċ\":20862,\"Ġ{}\\\".\":20863,\"ĠSony\":20864,\"Ġ[:\":20865,\"Ġfallen\":20866,\".')Ċ\":20867,\"inh\":20868,\"ĠMC\":20869,\"Ġredis\":20870,\"Codes\":20871,\"Ġprofiles\":20872,\"hook\":20873,\"Reducer\":20874,\"_FUNC\":20875,\"Ġnavigate\":20876,\"strlen\":20877,\"Ġhorm\":20878,\"áŀ\":20879,\"ĠSR\":20880,\".boot\":20881,\"Ġdigest\":20882,\"ĉheader\":20883,\".findOne\":20884,\"æģ\":20885,\"DbType\":20886,\"nia\":20887,\"_merge\":20888,\"Ġdonne\":20889,\"/Getty\":20890,\"_CHAR\":20891,\"Ġbands\":20892,\".URL\":20893,\"artial\":20894,\"Ġfreq\":20895,\"Ġsist\":20896,\"Ng\":20897,\"Ġrendering\":20898,\"\\\\Core\":20899,\"Widgets\":20900,\"ĠVA\":20901,\"Ġactivists\":20902,\"Ste\":20903,\"=_\":20904,\"alla\":20905,\"Stamp\":20906,\"Ġloads\":20907,\"Ġxx\":20908,\"ĠLearning\":20909,\".Mvc\":20910,\"uir\":20911,\"(\\\"$\":20912,\"Ġconnecting\":20913,\"ReadOnly\":20914,\"uru\":20915,\"ĠEag\":20916,\"BIT\":20917,\"_DEL\":20918,\"å§\":20919,\"arrass\":20920,\"external\":20921,\"ĠYOUR\":20922,\"ĠBrew\":20923,\"ĠFive\":20924,\"Ġresize\":20925,\"igid\":20926,\"eration\":20927,\"ĠÑį\":20928,\"åĬł\":20929,\"ĠCatch\":20930,\"Ùģ\":20931,\"ĠLeon\":20932,\"amil\":20933,\".Body\":20934,\"Clip\":20935,\"/list\":20936,\".br\":20937,\"EditText\":20938,\"ĉdb\":20939,\".Game\":20940,\"(BuildContext\":20941,\"backend\":20942,\".Red\":20943,\"facebook\":20944,\".urls\":20945,\"mr\":20946,\"rolled\":20947,\"-------\":20948,\"Ġintervention\":20949,\"Ġretirement\":20950,\"ĠKit\":20951,\"ĠPRE\":20952,\"UpperCase\":20953,\"ĠSocket\":20954,\"Ġ:-\":20955,\"Ġstudying\":20956,\"ĠMetro\":20957,\"arded\":20958,\"Ġconversations\":20959,\"Called\":20960,\"Ġexamine\":20961,\"ertificate\":20962,\".gz\":20963,\"-responsive\":20964,\"Ġrefund\":20965,\"_network\":20966,\"allowed\":20967,\"empt\":20968,\"Ġmeals\":20969,\"Categories\":20970,\"Ġtraveling\":20971,\"Ġkg\":20972,\"Ġshame\":20973,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":20974,\"Ġexplicitly\":20975,\"Ġmathematic\":20976,\"ĠSuite\":20977,\"ĠRGB\":20978,\"******/\":20979,\"Ġmixture\":20980,\"learning\":20981,\".template\":20982,\"atts\":20983,\"wx\":20984,\"ĉctx\":20985,\".properties\":20986,\"Ġdrinks\":20987,\"ĠEither\":20988,\"setText\":20989,\".getData\":20990,\".zip\":20991,\"Ġreveals\":20992,\"<table\":20993,\".HashMap\":20994,\"ĠHur\":20995,\")\\\");Ċ\":20996,\".framework\":20997,\"ĠSTART\":20998,\"feedback\":20999,\"Ġsafely\":21000,\".icon\":21001,\"configure\":21002,\".lock\":21003,\".layers\":21004,\"/>.Ċ\":21005,\"Ġranked\":21006,\"_impl\":21007,\"ĠHandles\":21008,\"Ġhosted\":21009,\"Ġupdating\":21010,\"album\":21011,\"éĿ\":21012,\"Ġshader\":21013,\"Editors\":21014,\"-round\":21015,\"[]{\":21016,\"Ġsep\":21017,\"ĠHi\":21018,\"TEM\":21019,\"lookup\":21020,\".man\":21021,\"_INPUT\":21022,\"Ġthreatened\":21023,\"_IMPORT\":21024,\"Ġdrops\":21025,\"ruit\":21026,\"sid\":21027,\"both\":21028,\"ĠExcel\":21029,\"Ġjer\":21030,\"ordinary\":21031,\"ÐµÐ¹\":21032,\"VIEW\":21033,\"reply\":21034,\"Ġ):Ċ\":21035,\"colors\":21036,\"verified\":21037,\"_Tr\":21038,\"_parse\":21039,\"Ġcongress\":21040,\"Promise\":21041,\"ints\":21042,\"ĠMother\":21043,\".Api\":21044,\"ĠDuration\":21045,\"ĠfirstName\":21046,\"inheritdoc\":21047,\"ĠMars\":21048,\"Ġapr\":21049,\"ODY\":21050,\"Ġvisits\":21051,\"Ġhealing\":21052,\"letters\":21053,\")));čĊ\":21054,\"future\":21055,\".Framework\":21056,\"Ġkiss\":21057,\"Ġinvolve\":21058,\"Ġsilent\":21059,\"adows\":21060,\"Ġanybody\":21061,\"sch\":21062,\"Ġsolely\":21063,\"-img\":21064,\"Ġpropri\":21065,\"Ġinstruct\":21066,\"Ġlicenses\":21067,\"Ġmeth\":21068,\"Ġcondem\":21069,\"ĠDomain\":21070,\"ĠHarris\":21071,\"ĠsÃ¥\":21072,\"CEPT\":21073,\"Batch\":21074,\"@extends\":21075,\"ĠCONTRIBUT\":21076,\".DataFrame\":21077,\"_packet\":21078,\"recision\":21079,\"Ġfocusing\":21080,\".ht\":21081,\"__\\\":Ċ\":21082,\":Get\":21083,\"ĠKC\":21084,\"Ġpassage\":21085,\"Segment\":21086,\"_center\":21087,\"-zA\":21088,\"_BL\":21089,\"Ġconvin\":21090,\"Ġclassified\":21091,\"ĠNSMutable\":21092,\"_ap\":21093,\"tile\":21094,\"Rectangle\":21095,\"(nums\":21096,\"vens\":21097,\"ĠUIButton\":21098,\"ĠFeder\":21099,\"amo\":21100,\"Ġoutline\":21101,\"ĠParser\":21102,\"Ġâī\":21103,\"ĠWorks\":21104,\".Schema\":21105,\"Ġengines\":21106,\"_common\":21107,\"_old\":21108,\"ĠsetContentView\":21109,\"Ġ///<\":21110,\"ĠBT\":21111,\"fm\":21112,\"Ġdivers\":21113,\"_weights\":21114,\"emark\":21115,\"ĠACT\":21116,\"Ġproportion\":21117,\"overlay\":21118,\".dirname\":21119,\"ĠGit\":21120,\"_REFERENCE\":21121,\"<>\":21122,\"lb\":21123,\"_rule\":21124,\"è´¥\":21125,\"ĠPutin\":21126,\"Ġsleeping\":21127,\"():čĊ\":21128,\"Ġpreserve\":21129,\"Ġparliament\":21130,\"ĠLooking\":21131,\"Ġpicking\":21132,\"ĠDispatch\":21133,\"Ġslip\":21134,\"ëĵ\":21135,\"ĠLyn\":21136,\"_signal\":21137,\"configuration\":21138,\"ĠPitt\":21139,\"aden\":21140,\"procedure\":21141,\"Ġenthusi\":21142,\"fight\":21143,\"ĠConsider\":21144,\"Ġtorn\":21145,\"Connected\":21146,\".cos\":21147,\"_groups\":21148,\"ĠThink\":21149,\"Ġdeliber\":21150,\"Ġresid\":21151,\"working\":21152,\".columns\":21153,\"ĠCalled\":21154,\"Ġeslint\":21155,\">\\\",\":21156,\"_DOWN\":21157,\"hist\":21158,\"ĠAdvanced\":21159,\"Ġrewards\":21160,\"actors\":21161,\"Ġsilence\":21162,\"Ġmyth\":21163,\"Ġneur\":21164,\"Ġauction\":21165,\".GetString\":21166,\"eks\":21167,\"(project\":21168,\"ĉmsg\":21169,\"ĉoutput\":21170,\"Ġcomplaints\":21171,\",S\":21172,\"Ġtbl\":21173,\"Ġ,ĊĊ\":21174,\"riors\":21175,\"ahren\":21176,\"Ġlawyers\":21177,\"redux\":21178,\"_symbol\":21179,\"offee\":21180,\"_RESULT\":21181,\"(Name\":21182,\"UTC\":21183,\".currentTime\":21184,\"Ġorganis\":21185,\".arg\":21186,\"Ġminim\":21187,\"wick\":21188,\"Ġreceives\":21189,\"Balance\":21190,\"Ġspeaks\":21191,\"ĠDays\":21192,\"ĠBelow\":21193,\"tipo\":21194,\"Present\":21195,\"Ġreserv\":21196,\"hp\":21197,\"Ġrit\":21198,\"_RIGHT\":21199,\"--)\":21200,\"Ġchairman\":21201,\"DIS\":21202,\"ĠBOOST\":21203,\"Ġexperiments\":21204,\"__);Ċ\":21205,\"Ġstamp\":21206,\"Ġfert\":21207,\"Ġfond\":21208,\"Ter\":21209,\"elve\":21210,\"uren\":21211,\"+i\":21212,\"endency\":21213,\"Ġvirtually\":21214,\"...\\\"\":21215,\"ï½ŀ\":21216,\"-cent\":21217,\"_unique\":21218,\"Ġpricing\":21219,\"mic\":21220,\"RESH\":21221,\"Ġ:::\":21222,\"Ġannotation\":21223,\"ĠCircle\":21224,\"ongodb\":21225,\"itas\":21226,\"Ġ%(\":21227,\"(component\":21228,\"ĠÐ¾Ð±\":21229,\"(port\":21230,\"-hour\":21231,\".obj\":21232,\"LBL\":21233,\"Ġjury\":21234,\"GBT\":21235,\"Ġspy\":21236,\"ĠProfessional\":21237,\"Ġ\\\"\\\";ĊĊ\":21238,\"Ġstriking\":21239,\"Ġdiscrimination\":21240,\"Ġpays\":21241,\"lict\":21242,\"entes\":21243,\"Ġthrowing\":21244,\"ĠPlugin\":21245,\"(def\":21246,\"ĠRuntimeException\":21247,\"ĠMigration\":21248,\"Ġdic\":21249,\"bag\":21250,\"onia\":21251,\"Ġcorruption\":21252,\"(Map\":21253,\"Ġprz\":21254,\".dto\":21255,\"Ġacquire\":21256,\"StateToProps\":21257,\"Ġloving\":21258,\"Ð¾Ð¶\":21259,\"_pattern\":21260,\"Ġemotions\":21261,\"Ġpublisher\":21262,\"_be\":21263,\"Ġcouples\":21264,\"oj\":21265,\"ĠChart\":21266,\"Ġtrop\":21267,\".tool\":21268,\"Ġestablishment\":21269,\"Ġdol\":21270,\"Ġtower\":21271,\"Ġlane\":21272,\"ĠSydney\":21273,\"Ġfilling\":21274,\"claimed\":21275,\"Ġdialogue\":21276,\"Ġconvention\":21277,\"booking\":21278,\"parency\":21279,\"æ±\":21280,\"ĠGeneric\":21281,\"\\\\Schema\":21282,\"Ġranges\":21283,\"/ch\":21284,\"Ġpanels\":21285,\"Ġruled\":21286,\"çĶŁ\":21287,\".ts\":21288,\"_sets\":21289,\"Ġcleanup\":21290,\"Previous\":21291,\"ĠAnimal\":21292,\"($(\":21293,\"ĠAve\":21294,\"ollar\":21295,\"_eval\":21296,\"ĉName\":21297,\"(tree\":21298,\"Ġ\\\"]\":21299,\"Ġduties\":21300,\"='/\":21301,\"Clicked\":21302,\"Ġdifferently\":21303,\"ĠClark\":21304,\"Ġdit\":21305,\"ologists\":21306,\"Ġsynd\":21307,\"Ġsends\":21308,\"-known\":21309,\"kb\":21310,\"ĠModal\":21311,\"itative\":21312,\"Ġracing\":21313,\"Ġhighlights\":21314,\"ĠSimon\":21315,\"ĠCaptain\":21316,\"ä¿¡\":21317,\"ĠCB\":21318,\"contin\":21319,\"aran\":21320,\"Ġphysics\":21321,\"retty\":21322,\"etal\":21323,\".md\":21324,\"axios\":21325,\"Ġspeakers\":21326,\"Ġprep\":21327,\"Ġawarded\":21328,\"ì§Ģ\":21329,\"ĠCorn\":21330,\"ĠNature\":21331,\"UDIO\":21332,\"Ġproj\":21333,\"-pre\":21334,\"[u\":21335,\"Features\":21336,\"ĠisEqual\":21337,\"Binary\":21338,\"sig\":21339,\"Ġconfusion\":21340,\"ĠHat\":21341,\"ĠktÃ³\":21342,\".configure\":21343,\"MON\":21344,\"/edit\":21345,\"_Add\":21346,\",true\":21347,\"Ġcli\":21348,\"ErrorMessage\":21349,\"-loader\":21350,\"Dimensions\":21351,\"ultiply\":21352,\"Ġ{!!\":21353,\"ĠSqlCommand\":21354,\"Ġspoken\":21355,\"Ġpics\":21356,\"Ġtoy\":21357,\"(Key\":21358,\"ĠLoop\":21359,\"Ø¨\":21360,\"EATURE\":21361,\"inction\":21362,\"_setup\":21363,\"wrapper\":21364,\"Ġtong\":21365,\"cular\":21366,\"Opt\":21367,\".Pl\":21368,\"=\\\",\":21369,\"(length\":21370,\"umn\":21371,\"Ġchrom\":21372,\"Ġsevent\":21373,\"ĠIllegalArgumentException\":21374,\"ĉstart\":21375,\"Ġbegun\":21376,\"CEPTION\":21377,\"dataset\":21378,\"ĠFailed\":21379,\"cols\":21380,\"Ġknee\":21381,\"imore\":21382,\".splice\":21383,\"shell\":21384,\"iggers\":21385,\"Ġthemes\":21386,\"ĠDJ\":21387,\"ĠAssistant\":21388,\"-$\":21389,\"Maybe\":21390,\"Ġordering\":21391,\"ĠIntelligence\":21392,\"ĠMassachusetts\":21393,\"Ġfailing\":21394,\"elson\":21395,\"Great\":21396,\"=i\":21397,\".rest\":21398,\"Ġinvite\":21399,\"-disable\":21400,\".GroupBox\":21401,\"âĢĻest\":21402,\"Ġtackle\":21403,\"gv\":21404,\"etter\":21405,\"Ġ),čĊ\":21406,\"_rules\":21407,\".warn\":21408,\"functions\":21409,\"ĠChristians\":21410,\"Ġbacked\":21411,\"Ġslider\":21412,\"Ġenjoying\":21413,\"nest\":21414,\"Ġhij\":21415,\"_ms\":21416,\"//*\":21417,\"Annotations\":21418,\"ĠVariables\":21419,\"<V\":21420,\"(server\":21421,\"ĠOracle\":21422,\"elements\":21423,\"Ġorganisation\":21424,\"_pointer\":21425,\"ĠHeaders\":21426,\"[d\":21427,\"Ġdeadline\":21428,\"issa\":21429,\"Ġknife\":21430,\"ĠNASA\":21431,\"ĠHeight\":21432,\"ĠAsync\":21433,\"Ġvenue\":21434,\".dom\":21435,\"bourne\":21436,\"ĠHawai\":21437,\"Ġmemo\":21438,\"ictions\":21439,\"Ġsurveillance\":21440,\"omi\":21441,\"/assets\":21442,\"Ġedu\":21443,\"ÄĽ\":21444,\"Ġroster\":21445,\"Ġhired\":21446,\"ĠTok\":21447,\"Ġplacement\":21448,\"urations\":21449,\"ĠsetState\":21450,\"ĠMagazine\":21451,\"Ġhorror\":21452,\"Try\":21453,\"Ġlag\":21454,\"ĠEveryone\":21455,\"thur\":21456,\"));čĊčĊ\":21457,\".return\":21458,\"Ġsymp\":21459,\"âĸĪâĸĪ\":21460,\"Ġnights\":21461,\"worker\":21462,\"Ġale\":21463,\"ennessee\":21464,\".step\":21465,\"Ġsynchronized\":21466,\"ouri\":21467,\"Does\":21468,\".change\":21469,\"fon\":21470,\".setBackground\":21471,\"ircular\":21472,\"+-\":21473,\"ĠCIA\":21474,\"ĠJane\":21475,\"ĠSimilar\":21476,\"-I\":21477,\"leveland\":21478,\"Ġprospect\":21479,\"_found\":21480,\"ĉcolor\":21481,\".Diagnostics\":21482,\"Ġannounce\":21483,\"Ġassumes\":21484,\"/tr\":21485,\"Ġbd\":21486,\"ĠCarbon\":21487,\"Ġanalys\":21488,\".dest\":21489,\"nik\":21490,\"ĠLie\":21491,\"-index\":21492,\"Drawable\":21493,\"ĠTAG\":21494,\"Ġtriangle\":21495,\"_FLOAT\":21496,\"ĉĉĠĠĠĠĠ\":21497,\".black\":21498,\"vue\":21499,\"curacy\":21500,\"Ġaffects\":21501,\"Ġsurely\":21502,\"Slider\":21503,\"uki\":21504,\"cery\":21505,\"Ġunter\":21506,\".profile\":21507,\"ordon\":21508,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":21509,\"leave\":21510,\"Ġsmartphone\":21511,\"gie\":21512,\"Ġconspir\":21513,\"Ġtutorial\":21514,\"ç±»\":21515,\"Ġcab\":21516,\"ĠSummary\":21517,\"*ĊĊ\":21518,\"Ã¤h\":21519,\"\\\"This\":21520,\"Ġslides\":21521,\"\\\"</\":21522,\".dev\":21523,\"'<\":21524,\"ĠRing\":21525,\"ÅĤa\":21526,\"Ġkotlin\":21527,\".dumps\":21528,\"Ġbass\":21529,\"ìĭ\":21530,\"POINT\":21531,\"Ġutter\":21532,\"ĠÃ©s\":21533,\".full\":21534,\"OLL\":21535,\"Ġceremony\":21536,\"slot\":21537,\"Ġaims\":21538,\"tooltip\":21539,\".score\":21540,\"-dd\":21541,\"Ġprox\":21542,\"Recognizer\":21543,\"dynamic\":21544,\"Ã¤nd\":21545,\"/std\":21546,\"DU\":21547,\"ĠNotImplemented\":21548,\"(\\\"--\":21549,\"RAW\":21550,\"Ġethnic\":21551,\"anno\":21552,\"Ġchampionship\":21553,\",self\":21554,\"Ġacceptable\":21555,\"ĠSprite\":21556,\"[type\":21557,\"Ã¼h\":21558,\"ĠVK\":21559,\"(jPanel\":21560,\"itr\":21561,\"ëł\":21562,\"aura\":21563,\"Ġfaculty\":21564,\"avers\":21565,\"ĠRecords\":21566,\".Security\":21567,\"Ġconstraint\":21568,\".Bl\":21569,\"Uint\":21570,\"balance\":21571,\"Ġcomme\":21572,\"ĠNik\":21573,\"SuppressWarnings\":21574,\"ĠOcean\":21575,\"_Id\":21576,\"DataSet\":21577,\"Ġinserted\":21578,\"\\\";čĊčĊ\":21579,\"âĢ³\":21580,\"ippet\":21581,\"Ġanniversary\":21582,\"Ġretired\":21583,\"orch\":21584,\"Ġperpet\":21585,\"\\\\Form\":21586,\"Ġinvolvement\":21587,\"_username\":21588,\"alem\":21589,\"_SERVICE\":21590,\"ĠIndiana\":21591,\"Ġcigaret\":21592,\"artz\":21593,\"ĠRC\":21594,\"Ġmeasurements\":21595,\"ç½®\":21596,\"Ġaffiliate\":21597,\"acional\":21598,\"-section\":21599,\"_controller\":21600,\"vard\":21601,\"_el\":21602,\"ĠToy\":21603,\"<P\":21604,\"Machine\":21605,\"Ãºmer\":21606,\"ĠYeah\":21607,\"\\\"You\":21608,\"Ġmol\":21609,\".Cl\":21610,\"controllers\":21611,\"Ġsuspended\":21612,\"++;ĊĊ\":21613,\"ATT\":21614,\"Ġprojection\":21615,\"Padding\":21616,\".math\":21617,\"factory\":21618,\"Ġgamma\":21619,\"()>\":21620,\"cycle\":21621,\"ĠBull\":21622,\"paths\":21623,\"Ġunp\":21624,\"ĠviewDidLoad\":21625,\"_Model\":21626,\"ĠassertTrue\":21627,\"Ġrated\":21628,\"Decl\":21629,\"verted\":21630,\"ĠDat\":21631,\"brew\":21632,\"Ġpointing\":21633,\"Ms\":21634,\"ĠPointer\":21635,\")'\":21636,\"_non\":21637,\"ĠSEC\":21638,\"Ġyeah\":21639,\"gency\":21640,\"initialize\":21641,\"fly\":21642,\"[pos\":21643,\",g\":21644,\"Tele\":21645,\"Ġjoke\":21646,\"Ġclause\":21647,\".findById\":21648,\"enes\":21649,\"(instance\":21650,\"Â£\":21651,\"Ġslic\":21652,\"_home\":21653,\"Ġ*/}Ċ\":21654,\"_pages\":21655,\"(service\":21656,\"RP\":21657,\"ĠAmong\":21658,\".getCurrent\":21659,\"ãĤ¹\":21660,\"Ġslee\":21661,\"=<?\":21662,\"_prop\":21663,\"flush\":21664,\"ĠMM\":21665,\"Bel\":21666,\"Notes\":21667,\"Ġ*/ĊĊĊ\":21668,\"Ġrh\":21669,\"Tables\":21670,\"ĠJu\":21671,\"Ġ\\\\čĊ\":21672,\"lichen\":21673,\"ĠInsurance\":21674,\"]ĊĊĊ\":21675,\"Ġcooper\":21676,\"âĢĶthe\":21677,\".mat\":21678,\"Ġfoi\":21679,\"(auto\":21680,\"Margin\":21681,\"Ġresidence\":21682,\"ĠHistor\":21683,\"Ġ~=\":21684,\"Di\":21685,\"Ġ')Ċ\":21686,\"Ġexclude\":21687,\".Drop\":21688,\"'\\\";Ċ\":21689,\"Ġcoc\":21690,\"_upload\":21691,\"Hide\":21692,\"ĠUnknown\":21693,\"Ġnormalize\":21694,\"_ret\":21695,\".'ĊĊ\":21696,\".nodes\":21697,\".DataSource\":21698,\"blems\":21699,\"Ġgentle\":21700,\":$\":21701,\"'));ĊĊ\":21702,\".Resources\":21703,\"âĪ\":21704,\"ĠTai\":21705,\"VED\":21706,\"ĠGun\":21707,\"leans\":21708,\"ĠDoc\":21709,\".Void\":21710,\"ĠAmendment\":21711,\"essed\":21712,\"Ġrecipient\":21713,\".Node\":21714,\"ovo\":21715,\"ĠalignItems\":21716,\"ĠUnity\":21717,\"ĠRome\":21718,\"burn\":21719,\"Ġvoltage\":21720,\"ĠSHA\":21721,\"ĠGOOD\":21722,\"helpers\":21723,\"/***/\":21724,\"Ġeliminate\":21725,\"wap\":21726,\"_angle\":21727,\"Ġrefugees\":21728,\"ĉassertEquals\":21729,\"Ġprobe\":21730,\"('../../\":21731,\"your\":21732,\"Ġmerch\":21733,\"UBLE\":21734,\"ĉresponse\":21735,\"_DEF\":21736,\"Ġenvironments\":21737,\"ousing\":21738,\"Ġrestricted\":21739,\"ĠCONTRIBUTORS\":21740,\"Ġcompanion\":21741,\"áº£\":21742,\"pow\":21743,\"urtle\":21744,\"bie\":21745,\".Perform\":21746,\"=n\":21747,\"redis\":21748,\"Ġdivide\":21749,\"Ġcollective\":21750,\"Diff\":21751,\"Dynamic\":21752,\"isSelected\":21753,\"astype\":21754,\"ĠLot\":21755,\"ĠStatement\":21756,\"icipant\":21757,\"akh\":21758,\"Ġserializer\":21759,\"_CFG\":21760,\"aval\":21761,\"Ġviewers\":21762,\"ĠFO\":21763,\"Occ\":21764,\"Ġrobust\":21765,\"ĠMit\":21766,\"_AND\":21767,\"Transition\":21768,\"unate\":21769,\"Ġpride\":21770,\"Ġdramatic\":21771,\"ĠPages\":21772,\"_tuple\":21773,\"Ġcopied\":21774,\"mn\":21775,\"Ġought\":21776,\"Ġequality\":21777,\"_has\":21778,\"_WR\":21779,\"emi\":21780,\"Ġsurge\":21781,\"illo\":21782,\"()}\":21783,\"Ġperf\":21784,\"ulk\":21785,\"Ġinvestments\":21786,\"Ġgenerations\":21787,\"Ġresort\":21788,\"Ġtrusted\":21789,\"_freq\":21790,\"Ġforma\":21791,\"ATIONS\":21792,\"ĠHu\":21793,\"ĠGrad\":21794,\"_cpu\":21795,\"Ġ\\\",Ċ\":21796,\"resse\":21797,\"(**\":21798,\"Ġhereby\":21799,\"Ġlake\":21800,\"_STACK\":21801,\"ĠBureau\":21802,\"Ġsustainable\":21803,\"ĠPE\":21804,\"Ġdei\":21805,\"ĠAnswer\":21806,\"Plus\":21807,\"/web\":21808,\"Ġster\":21809,\"Ġmounted\":21810,\"_clear\":21811,\"fono\":21812,\"iances\":21813,\"_find\":21814,\"Ġconfused\":21815,\"_bin\":21816,\"DECL\":21817,\"Ġinstantly\":21818,\"UIT\":21819,\"_DO\":21820,\"Setup\":21821,\"kee\":21822,\"_printf\":21823,\"_stmt\":21824,\"ĠSteam\":21825,\"prof\":21826,\"lv\":21827,\"Ġsolving\":21828,\"lator\":21829,\"otypes\":21830,\"Android\":21831,\"_escape\":21832,\"Leave\":21833,\".getTime\":21834,\"ifs\":21835,\"Ġcov\":21836,\"ĠClassic\":21837,\"-dark\":21838,\"Dispatcher\":21839,\"-gray\":21840,\"ĠPalestinian\":21841,\".deep\":21842,\"ĠInject\":21843,\"Ġreflection\":21844,\"Ġhypo\":21845,\"constructor\":21846,\".application\":21847,\"yster\":21848,\"âķ\":21849,\"school\":21850,\"ĠCow\":21851,\"Ġfootage\":21852,\"-ins\":21853,\"Ġ/**<\":21854,\"atom\":21855,\"Ġprofits\":21856,\"Ġbooking\":21857,\"_threshold\":21858,\"ĠLiver\":21859,\"Ġcitizen\":21860,\"bx\":21861,\"ĠStorm\":21862,\"ĠCorp\":21863,\"Ġwider\":21864,\"\\\")){Ċ\":21865,\"_ACTION\":21866,\"iors\":21867,\"aises\":21868,\":none\":21869,\"Ġcited\":21870,\"\\\"fmt\":21871,\"Aug\":21872,\"comb\":21873,\"Ġwhites\":21874,\"Ġsess\":21875,\"^^\":21876,\"ighth\":21877,\"Ġtang\":21878,\"_CAP\":21879,\"Ġinteractions\":21880,\"Ġgard\":21881,\"Ġprize\":21882,\"afka\":21883,\"Tri\":21884,\"\\\\Eloquent\":21885,\"ĠDynamic\":21886,\"çĲĨ\":21887,\"gp\":21888,\"Ġrealm\":21889,\"ĠNi\":21890,\"ĠEdward\":21891,\"Ġidentification\":21892,\"Ġphysically\":21893,\"æľ¬\":21894,\"Ġpicks\":21895,\"-friendly\":21896,\"<i\":21897,\"ifice\":21898,\"_AP\":21899,\"Logged\":21900,\"}\\\".\":21901,\"/utils\":21902,\"Ġ....\":21903,\"ENTIAL\":21904,\"(Action\":21905,\"']);ĊĊ\":21906,\"Ġprotests\":21907,\"oline\":21908,\"_RETURN\":21909,\"Ġpopulations\":21910,\"ĠRain\":21911,\"dup\":21912,\"orial\":21913,\"ĠAuthority\":21914,\"_expr\":21915,\".us\":21916,\"Ġcorrupt\":21917,\"ĉimport\":21918,\"<char\":21919,\"ĠLEFT\":21920,\"Ġcabinet\":21921,\"Ġneighbour\":21922,\"ĠSqlParameter\":21923,\"attered\":21924,\"emia\":21925,\"Ġreviewed\":21926,\"ĠHello\":21927,\"blocks\":21928,\"(process\":21929,\"Ġobservation\":21930,\"rating\":21931,\".global\":21932,\"Ġpreference\":21933,\".prepare\":21934,\"Ġdozens\":21935,\"Worker\":21936,\"Ġcalculation\":21937,\"ĠTower\":21938,\"airy\":21939,\"ĠISO\":21940,\"Ġhumanity\":21941,\".asInstanceOf\":21942,\"Ġdys\":21943,\"Ġpier\":21944,\"igue\":21945,\"Ġassociate\":21946,\"Ġintim\":21947,\"notify\":21948,\"({},\":21949,\"ĠRepresent\":21950,\"phet\":21951,\"seudo\":21952,\"ëĭĪëĭ¤\":21953,\".Position\":21954,\"Ġclosure\":21955,\"(class\":21956,\"ĉtime\":21957,\"ĠOrange\":21958,\"_ops\":21959,\"Ġpopup\":21960,\"ĠImpro\":21961,\"_secret\":21962,\"ĠEu\":21963,\".setLayout\":21964,\"ully\":21965,\"Ġscrew\":21966,\"ĠSized\":21967,\"ĠCOMP\":21968,\"Ġnotifications\":21969,\"Transfer\":21970,\"Emitter\":21971,\"(old\":21972,\"letic\":21973,\"Ġ-ĊĊ\":21974,\"Ġpanic\":21975,\"ĠLCD\":21976,\"rules\":21977,\"Ġaffairs\":21978,\"ĠFill\":21979,\"_IRQ\":21980,\"attachment\":21981,\"Ġvom\":21982,\"<button\":21983,\"Ġtexts\":21984,\"Ġactivated\":21985,\".access\":21986,\"(reader\":21987,\"Tem\":21988,\"Ġcoron\":21989,\"roph\":21990,\"DMIN\":21991,\"Ġemerged\":21992,\"Ġinflater\":21993,\"ĠIndependent\":21994,\"orious\":21995,\"ĠDelhi\":21996,\"Ġglyphicon\":21997,\"ĠCarl\":21998,\"Si\":21999,\"Ġexperimental\":22000,\".bar\":22001,\"IAN\":22002,\"Ġsqlite\":22003,\"cciÃ³n\":22004,\"_BACK\":22005,\",name\":22006,\"hort\":22007,\"Ġtens\":22008,\"ê³\":22009,\"usive\":22010,\"Ġgenuine\":22011,\"Ġbuck\":22012,\"/div\":22013,\".room\":22014,\"_NEW\":22015,\"estado\":22016,\"ĠArk\":22017,\"ocols\":22018,\".generate\":22019,\"touch\":22020,\"fixed\":22021,\"Ġ'(\":22022,\"Ġreferring\":22023,\"Ġoverwhelming\":22024,\"(let\":22025,\"Ġfue\":22026,\"_ENV\":22027,\"woman\":22028,\"Figure\":22029,\"animate\":22030,\"ĠMort\":22031,\"Ġlongest\":22032,\"coln\":22033,\"TM\":22034,\":_\":22035,\"riel\":22036,\",N\":22037,\"ĠRAM\":22038,\"ĠjustifyContent\":22039,\"Ġactively\":22040,\"/public\":22041,\"Ġë°\":22042,\"Given\":22043,\"OTAL\":22044,\"å¤±è´¥\":22045,\"Sequential\":22046,\"Ġsupplement\":22047,\".ab\":22048,\"Ġcategor\":22049,\"}},Ċ\":22050,\"ahan\":22051,\"'un\":22052,\"osity\":22053,\"Ġaccomplish\":22054,\"Utilities\":22055,\".views\":22056,\".cn\":22057,\"ceil\":22058,\"ĠCBD\":22059,\"ĠRF\":22060,\"PEG\":22061,\"ĠGift\":22062,\"AYS\":22063,\"ĠWIN\":22064,\"panied\":22065,\"ĠÅŁ\":22066,\"Ġobserver\":22067,\"Ġsmell\":22068,\"Ġ{:\":22069,\"Linked\":22070,\">[Ċ\":22071,\"oler\":22072,\"Ġlibert\":22073,\"Ġ`Ċ\":22074,\"Ġwenn\":22075,\"lated\":22076,\"Ġimmune\":22077,\"(Node\":22078,\"ĠProblem\":22079,\"ĠAbs\":22080,\"logs\":22081,\"Ġ../\":22082,\"ĠADC\":22083,\"Ġ}}\\\">Ċ\":22084,\">');Ċ\":22085,\"=b\":22086,\"ĠWind\":22087,\"lahoma\":22088,\"Ġallocate\":22089,\"orian\":22090,\"Ġprescription\":22091,\"-quality\":22092,\"ĠMayor\":22093,\"inely\":22094,\"endforeach\":22095,\"ĠComplex\":22096,\"kom\":22097,\"TY\":22098,\"]].\":22099,\".Style\":22100,\"_many\":22101,\"','$\":22102,\"Ġbarrier\":22103,\"ĠFetch\":22104,\"ĠMarvel\":22105,\"Ġresist\":22106,\"Ð¾Ð³Ð¾\":22107,\"bidden\":22108,\"ĠRunnable\":22109,\":false\":22110,\"Ġbuilds\":22111,\"ĠStage\":22112,\"Ġdub\":22113,\"empo\":22114,\".site\":22115,\";ĊĊĊĊ\":22116,\"ĠDenver\":22117,\"Ġrevel\":22118,\"Ġtriggered\":22119,\"Ġdice\":22120,\"_fail\":22121,\"Ġgc\":22122,\"ĉX\":22123,\"ĠThrowable\":22124,\".router\":22125,\"ĠRevolution\":22126,\"ÑĢÐ°\":22127,\"_NON\":22128,\"Ł¥\":22129,\"Ġelder\":22130,\"Ġabroad\":22131,\"ĠÐµ\":22132,\"ĠAdult\":22133,\"blr\":22134,\"glyphicon\":22135,\"Ġpromoting\":22136,\"Ġiz\":22137,\"ĠSolid\":22138,\"_loader\":22139,\"early\":22140,\".enabled\":22141,\"-edit\":22142,\"ĠUL\":22143,\"_play\":22144,\"ĠInterrupt\":22145,\"Ġadvantages\":22146,\"ucle\":22147,\"Ġmechanical\":22148,\".tableLayoutPanel\":22149,\"ĠWorking\":22150,\"Ġanonymous\":22151,\"Rating\":22152,\"igious\":22153,\"_phone\":22154,\".addActionListener\":22155,\"Ġfran\":22156,\"unden\":22157,\"Ġ*)&\":22158,\"_bool\":22159,\"ulative\":22160,\"Ġcone\":22161,\"ĠMult\":22162,\"ĠmÃ¶\":22163,\"ĠForward\":22164,\"]):Ċ\":22165,\"Ġconvinced\":22166,\"acted\":22167,\"ãģĵ\":22168,\"ĠConfigure\":22169,\"Ġceiling\":22170,\"Der\":22171,\"Ġpassengers\":22172,\"Groups\":22173,\"Ġsoccer\":22174,\"/W\":22175,\"aviors\":22176,\"swith\":22177,\"ĠZone\":22178,\".Options\":22179,\"ĠMom\":22180,\"ieder\":22181,\"Arrays\":22182,\"Ġtreatments\":22183,\"Ġprotecting\":22184,\"fac\":22185,\"Ġpickle\":22186,\"ButtonItem\":22187,\"Ġblocking\":22188,\"strar\":22189,\"Ã²\":22190,\"ĠExport\":22191,\"Ġthrew\":22192,\"otta\":22193,\"ĠBASE\":22194,\".ws\":22195,\".LEADING\":22196,\"orderBy\":22197,\"_delay\":22198,\"ĠPu\":22199,\".dll\":22200,\"ĠChoose\":22201,\"Police\":22202,\"ĠBEGIN\":22203,\"boxes\":22204,\"Ġdiamond\":22205,\",l\":22206,\"Ġĉĉĉ\":22207,\"Ġcurious\":22208,\"tv\":22209,\"Ġerotische\":22210,\"ackages\":22211,\"ĉSet\":22212,\"Tick\":22213,\".border\":22214,\"staticmethod\":22215,\"Ġcher\":22216,\"invoice\":22217,\"Ġcru\":22218,\"Ġdefect\":22219,\"_metadata\":22220,\"relation\":22221,\"ikan\":22222,\"[N\":22223,\"(Qt\":22224,\"(Base\":22225,\"æģ¯\":22226,\"beat\":22227,\"ĠEmpty\":22228,\"ĉo\":22229,\"_shift\":22230,\"Ġregret\":22231,\"Those\":22232,\"Cent\":22233,\"ĠPortug\":22234,\"ĠIslands\":22235,\"ĠTIME\":22236,\"Management\":22237,\"-sp\":22238,\"Ãªme\":22239,\"Ġnotion\":22240,\"unifu\":22241,\"PK\":22242,\"è¡Į\":22243,\"ĠCURLOPT\":22244,\"\\\\\\\"\\\\\":22245,\"UV\":22246,\"çº\":22247,\"dra\":22248,\"cou\":22249,\"=`\":22250,\"ĠDestroy\":22251,\"rp\":22252,\".cancel\":22253,\"GG\":22254,\"runtime\":22255,\"ĠVue\":22256,\"Ġprogressive\":22257,\"/services\":22258,\"Ġrunner\":22259,\"_FRAME\":22260,\".ToolStripMenuItem\":22261,\"Ġ','\":22262,\"delay\":22263,\"=utf\":22264,\"Ġscreening\":22265,\"Ġpulling\":22266,\"omas\":22267,\"Ġanth\":22268,\"-new\":22269,\"/local\":22270,\"ĠiPad\":22271,\"Ġtwitter\":22272,\"Ġdying\":22273,\"Ġheaven\":22274,\"ĠUInt\":22275,\"ĠSenator\":22276,\"Ġpresum\":22277,\"ĠWalker\":22278,\"Ġovercome\":22279,\"etection\":22280,\"Ġembarrass\":22281,\"China\":22282,\"Include\":22283,\"ROLL\":22284,\"ĠdataType\":22285,\"David\":22286,\"à¸£\":22287,\"lop\":22288,\"-month\":22289,\"Ġscar\":22290,\"ĠSafe\":22291,\"Ġ****************************************************************\":22292,\"Ġaccessories\":22293,\"Ġramp\":22294,\"_USE\":22295,\"Ġcontrad\":22296,\"))]Ċ\":22297,\"Ġprest\":22298,\"ĠHR\":22299,\"ĠRap\":22300,\"Ġusize\":22301,\"Ġcapability\":22302,\"Ġcort\":22303,\"-next\":22304,\"Ġburden\":22305,\"_reader\":22306,\"Ġ@@\":22307,\"regular\":22308,\"ĠKa\":22309,\"MAN\":22310,\"Ġastr\":22311,\"Ġ'')Ċ\":22312,\"Ġfed\":22313,\"Ġparsing\":22314,\"ĠYears\":22315,\"Ġbroker\":22316,\"\\\":{\\\"\":22317,\"Ġakt\":22318,\"Inventory\":22319,\"abeled\":22320,\"Ġargparse\":22321,\"*******Ċ\":22322,\"versation\":22323,\"Ġcord\":22324,\"ĠTi\":22325,\"Ġhopefully\":22326,\"Ġah\":22327,\"verb\":22328,\"Ġstolen\":22329,\".Entry\":22330,\"Ġexpecting\":22331,\"Orientation\":22332,\"Ġpowered\":22333,\"Ġpersist\":22334,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":22335,\"']);\":22336,\"')),Ċ\":22337,\"ĠCash\":22338,\"ĉitem\":22339,\"grades\":22340,\"ropol\":22341,\"basic\":22342,\"Ġ\\\");čĊ\":22343,\"Ġawards\":22344,\"(range\":22345,\"-all\":22346,\"ĠIBOutlet\":22347,\"ĠIndeed\":22348,\"----------------------------------------------------------------------------\":22349,\"Ġstomach\":22350,\"Ġflower\":22351,\"Ġsew\":22352,\"_times\":22353,\"avis\":22354,\"QString\":22355,\"ĠRoutes\":22356,\"_prot\":22357,\"Ġcomedy\":22358,\"Ġlogout\":22359,\"Ġwooden\":22360,\"Ġposter\":22361,\"piece\":22362,\".Join\":22363,\"ĠPok\":22364,\"celona\":22365,\"mutex\":22366,\";čĊčĊčĊ\":22367,\"Ġstrikes\":22368,\"Loaded\":22369,\")arg\":22370,\"esa\":22371,\"United\":22372,\"Ep\":22373,\"PELL\":22374,\"ĠAtlantic\":22375,\"ullet\":22376,\"apple\":22377,\"Ġsettled\":22378,\"acon\":22379,\"Ġprinter\":22380,\"ĠGC\":22381,\"å®ļ\":22382,\"Ġrendered\":22383,\",âĢĻ\":22384,\"heit\":22385,\"social\":22386,\".ge\":22387,\"ĠRick\":22388,\"ĠUtah\":22389,\"got\":22390,\"onical\":22391,\"ĠScroll\":22392,\"ĠSciences\":22393,\"Ġjug\":22394,\"Ġampl\":22395,\"enti\":22396,\"LEFT\":22397,\"Ġtabs\":22398,\"Ġenormous\":22399,\".getKey\":22400,\"locate\":22401,\".EX\":22402,\".storage\":22403,\".We\":22404,\"Ġtoast\":22405,\"ĠAdditionally\":22406,\"ĠNOW\":22407,\"_UPDATE\":22408,\"Ġtransferred\":22409,\"tha\":22410,\".Display\":22411,\"_ui\":22412,\"IDEO\":22413,\"Ġmeaningful\":22414,\"ĠMoscow\":22415,\",this\":22416,\"ĠVictoria\":22417,\"æĶ¹\":22418,\"ĠÐŁ\":22419,\".stack\":22420,\"ĠBarn\":22421,\"paredStatement\":22422,\":string\":22423,\"Ġbij\":22424,\"ĠSTATE\":22425,\"Ġemployers\":22426,\"ĉinput\":22427,\"(|\":22428,\"Ġlex\":22429,\"invoke\":22430,\"ĉnum\":22431,\"++,\":22432,\"atial\":22433,\"orses\":22434,\"Ġfork\":22435,\"_txt\":22436,\"ĠAntonio\":22437,\"Ġ(<\":22438,\"averse\":22439,\"Ġdevast\":22440,\"ãĢĢ\":22441,\".Dec\":22442,\"ĠGard\":22443,\"/ui\":22444,\".%\":22445,\"tri\":22446,\"Ġrolled\":22447,\"ValuePair\":22448,\"itten\":22449,\"ĠTher\":22450,\"Ġvrou\":22451,\"ĠFlow\":22452,\"ĠFinance\":22453,\"ĠComb\":22454,\"HC\":22455,\".setVisible\":22456,\"isl\":22457,\"Ġpk\":22458,\"Ġupset\":22459,\"(raw\":22460,\"ĠVice\":22461,\"eatures\":22462,\"ĠLang\":22463,\"Looking\":22464,\"ĠAST\":22465,\"Ġtrips\":22466,\"ĠJustin\":22467,\"browser\":22468,\"=\\\"'.$\":22469,\".vertices\":22470,\"-co\":22471,\"}/{\":22472,\"Ġ?,\":22473,\"ĠDomin\":22474,\"ĠBelg\":22475,\"\\\"<\":22476,\"Ġsuppose\":22477,\"addy\":22478,\"Ġwalks\":22479,\"ERRU\":22480,\"_filters\":22481,\"Preferred\":22482,\"scene\":22483,\"ÐµÑģ\":22484,\"ĠAffairs\":22485,\"Ġ\\\"#{\":22486,\"ĠonSubmit\":22487,\"Ġstocks\":22488,\"/view\":22489,\"gree\":22490,\"-get\":22491,\"hit\":22492,\"Jo\":22493,\".getC\":22494,\"Initialized\":22495,\"ÑĤÐ¸\":22496,\"cuts\":22497,\"(Type\":22498,\"ĠAgreement\":22499,\"ĠVietnam\":22500,\"Ġ/*!\":22501,\"Ġpizza\":22502,\"-view\":22503,\"_em\":22504,\"Ġlhs\":22505,\"Ġmuy\":22506,\"ĠIdent\":22507,\"ĠFriends\":22508,\"Ġabund\":22509,\"_AD\":22510,\".timestamp\":22511,\"-'\":22512,\"Ġduplicate\":22513,\"Ġhunting\":22514,\"Ġregulatory\":22515,\"iao\":22516,\"amous\":22517,\"ĠEntertainment\":22518,\"[A\":22519,\"iatric\":22520,\"_CLIENT\":22521,\"ĠKids\":22522,\"/pkg\":22523,\"Break\":22524,\")));ĊĊ\":22525,\"ĠShape\":22526,\"Ġrelating\":22527,\"Interrupt\":22528,\"ableOpacity\":22529,\"embre\":22530,\"Ġmystery\":22531,\"Ġjournalists\":22532,\"ritable\":22533,\".Link\":22534,\"Ġstopping\":22535,\"CRET\":22536,\".DB\":22537,\"Ġpopularity\":22538,\"Ġgew\":22539,\"Ġimpr\":22540,\"setValue\":22541,\"FLAG\":22542,\"ĉmax\":22543,\"Ġbake\":22544,\"wy\":22545,\"ĠEconomic\":22546,\"Ġencontr\":22547,\"Ġfname\":22548,\"/de\":22549,\"Rank\":22550,\"Ġbugs\":22551,\".sm\":22552,\"Ġmedian\":22553,\"DOWN\":22554,\"ĠSure\":22555,\"AtIndex\":22556,\"ĠDick\":22557,\"Ġ(__\":22558,\".delta\":22559,\"Fr\":22560,\"Ġsuggesting\":22561,\"ĠRecyclerView\":22562,\",e\":22563,\"START\":22564,\"/****************************************************************************\":22565,\"xford\":22566,\"Ġreceipt\":22567,\"CLAIM\":22568,\"readonly\":22569,\"Ġengaging\":22570,\"Ca\":22571,\"asma\":22572,\"Ġensuring\":22573,\"English\":22574,\"ĠVancouver\":22575,\"hyth\":22576,\"Ġpurchasing\":22577,\"ĠPI\":22578,\".word\":22579,\"(sp\":22580,\".home\":22581,\":def\":22582,\"Ġgig\":22583,\"ĠVe\":22584,\"forum\":22585,\"ĠMitch\":22586,\"Bay\":22587,\"_FL\":22588,\"Ġsoll\":22589,\"_columns\":22590,\"Ġminority\":22591,\"bird\":22592,\"Ġhanded\":22593,\"SSL\":22594,\"STAT\":22595,\"Ġnervous\":22596,\"ĥ½\":22597,\"ĠfilePath\":22598,\"CREATE\":22599,\"Aw\":22600,\"Ġpens\":22601,\"seed\":22602,\"ĠCompute\":22603,\"olk\":22604,\"ĠAsset\":22605,\"reach\":22606,\"'),čĊ\":22607,\"navigation\":22608,\"LF\":22609,\"/util\":22610,\"ĠPub\":22611,\"ĠâĶ\":22612,\"cion\":22613,\"##Ċ\":22614,\"III\":22615,\"TagName\":22616,\"Ġamid\":22617,\"permission\":22618,\"ifiable\":22619,\"xFFFFFFFF\":22620,\"Ð½Ð¸\":22621,\".Buffer\":22622,\"_irq\":22623,\"dark\":22624,\"Ġretval\":22625,\".fire\":22626,\"production\":22627,\".listen\":22628,\"ĠWeather\":22629,\"Ġbuyers\":22630,\".ne\":22631,\"erp\":22632,\"ĠPent\":22633,\"Ġwelfare\":22634,\"ĠpageSize\":22635,\"ĠStadium\":22636,\"erta\":22637,\"Ġlev\":22638,\"ampa\":22639,\"Pager\":22640,\"Ġcharging\":22641,\"ĠNetflix\":22642,\"|null\":22643,\"_random\":22644,\".xpath\":22645,\"Ġstere\":22646,\"ĠISIS\":22647,\"ponses\":22648,\"(loc\":22649,\"eyond\":22650,\"ĠOfficial\":22651,\"ĠMaryland\":22652,\"DataType\":22653,\"_par\":22654,\"{},\":22655,\"ĠEnjoy\":22656,\"_SHIFT\":22657,\"ĠAwards\":22658,\"_ENTRY\":22659,\"Ġseemingly\":22660,\"enticate\":22661,\"Ġhearts\":22662,\"_;ĊĊ\":22663,\"ĠHIV\":22664,\"Ġindivid\":22665,\"ĠFlag\":22666,\"_ctrl\":22667,\"ĠCallback\":22668,\",z\":22669,\"ĠGPU\":22670,\"ĉobj\":22671,\"ĠPhoenix\":22672,\"ĠBUS\":22673,\"Ġrubber\":22674,\"_AUTH\":22675,\"ĠSolutions\":22676,\"(location\":22677,\"Variables\":22678,\".setEnabled\":22679,\"_high\":22680,\"WO\":22681,\"Gesture\":22682,\"Ġretry\":22683,\"ĠobjectForKey\":22684,\"alloween\":22685,\"Ġmos\":22686,\"ĠCele\":22687,\"Ġikke\":22688,\"(cell\":22689,\"ĠMODE\":22690,\"rena\":22691,\"Ġdescribing\":22692,\"Ġphi\":22693,\"Ġrd\":22694,\"Ġdeserve\":22695,\"Ġwheels\":22696,\"å¸Ĥ\":22697,\"Ġcritics\":22698,\"Namespace\":22699,\"ĠFra\":22700,\"ĠĊĊĊĊ\":22701,\"Ġalla\":22702,\"Ġrequiring\":22703,\"æľŁ\":22704,\"utation\":22705,\"Ġdelayed\":22706,\"Ġadministrative\":22707,\"Ġbay\":22708,\".hidden\":22709,\"Tex\":22710,\"Ġboundaries\":22711,\"Ġ]);ĊĊ\":22712,\"ĠFollowing\":22713,\"~/\":22714,\"Fi\":22715,\"_conv\":22716,\"_TITLE\":22717,\"Ġdesde\":22718,\"ICollectionView\":22719,\"Alias\":22720,\"Ġbite\":22721,\"patient\":22722,\"_COMMAND\":22723,\"Completed\":22724,\"ĉelif\":22725,\"(<\":22726,\"Business\":22727,\"ĠPool\":22728,\"Ġpursue\":22729,\"ĠBan\":22730,\"_steps\":22731,\"_DECL\":22732,\"umble\":22733,\"Ġcombo\":22734,\"ĠLayer\":22735,\".xr\":22736,\"Ġdup\":22737,\"---------\":22738,\"Ġmodifier\":22739,\"rob\":22740,\"rez\":22741,\"Ġathletes\":22742,\"Used\":22743,\"wear\":22744,\"Ġlegitimate\":22745,\"Ġ\\\"ĊĊ\":22746,\"Ġhv\":22747,\"Std\":22748,\"ĠHold\":22749,\"Ġsurviv\":22750,\"ĠAlliance\":22751,\"ĠEarly\":22752,\"Behavior\":22753,\"(font\":22754,\"/libs\":22755,\"Ġrectangle\":22756,\"Ġsinger\":22757,\"Ġamp\":22758,\"EqualTo\":22759,\"Ġ\\\".\\\"\":22760,\"Ġgirlfriend\":22761,\"å±\":22762,\"linear\":22763,\"observ\":22764,\"ĠpiÃ¹\":22765,\"Ġcomplement\":22766,\"WithValue\":22767,\"(password\":22768,\"take\":22769,\"Blank\":22770,\"ĠCompar\":22771,\"'\\\",\":22772,\"_policy\":22773,\"mongoose\":22774,\"_FAILED\":22775,\".report\":22776,\"Ratio\":22777,\".PerformLayout\":22778,\"usable\":22779,\"mers\":22780,\"_render\":22781,\"PEED\":22782,\"Ġlesb\":22783,\"ĉE\":22784,\"_tool\":22785,\"Ġladies\":22786,\"Ð¾Ñģ\":22787,\"))))Ċ\":22788,\";;;;\":22789,\".dot\":22790,\"Ġnest\":22791,\"peak\":22792,\"ukkit\":22793,\"eca\":22794,\"_SW\":22795,\"Ġ&(\":22796,\"ĠOklahoma\":22797,\"Ġbanking\":22798,\"ĠNintendo\":22799,\"Ġreproduce\":22800,\"_elements\":22801,\"_mac\":22802,\"proxy\":22803,\"Ġremarkable\":22804,\"}/${\":22805,\"Ġouts\":22806,\".hasNext\":22807,\"MODE\":22808,\"Ġanime\":22809,\".conn\":22810,\"Unique\":22811,\"Dom\":22812,\"Ġimportantly\":22813,\"itty\":22814,\"Ġjuice\":22815,\"Tw\":22816,\"ĠPartners\":22817,\"Ġattacking\":22818,\"Ġportable\":22819,\"amiento\":22820,\".PictureBox\":22821,\".gen\":22822,\"Ġoptimal\":22823,\"Ġrecre\":22824,\"Ġjournalist\":22825,\"ĠExtract\":22826,\"ĠMoreover\":22827,\"ĠmarginTop\":22828,\".Ap\":22829,\"Ġfiring\":22830,\"NaN\":22831,\"ĉtemplate\":22832,\"Ð°Ð´\":22833,\".En\":22834,\"Ġdefence\":22835,\"ĠTel\":22836,\"ilen\":22837,\"jan\":22838,\"=data\":22839,\"ĠUrl\":22840,\"ĠReuters\":22841,\"(total\":22842,\"ĠFifth\":22843,\"Ġessays\":22844,\"Ġinterpretation\":22845,\"Ġcharity\":22846,\"ĠRules\":22847,\"Ġsubsection\":22848,\"styled\":22849,\"azer\":22850,\"lags\":22851,\"LIST\":22852,\"Ġuploaded\":22853,\"Ġtrash\":22854,\"Ġregistr\":22855,\"Ġseller\":22856,\">';čĊ\":22857,\"ĠstartTime\":22858,\"çĻ\":22859,\"sy\":22860,\"(HttpServletRequest\":22861,\"Ġtrap\":22862,\"GC\":22863,\"Ġembedded\":22864,\"Ġsurrounded\":22865,\"imits\":22866,\"TX\":22867,\"ylinder\":22868,\"ĠFal\":22869,\"Ġsentences\":22870,\"ĠJa\":22871,\"IFICATION\":22872,\"weapon\":22873,\"ovation\":22874,\"Ġcoat\":22875,\"Ġinterpol\":22876,\"Ġlips\":22877,\"ĠKy\":22878,\"Ġvectors\":22879,\"_am\":22880,\"Ġintake\":22881,\".world\":22882,\"Ġinbox\":22883,\"ĠMAC\":22884,\"_ab\":22885,\"(nameof\":22886,\"Ġentert\":22887,\"Ġgathering\":22888,\"ĠSIM\":22889,\"++.\":22890,\"nya\":22891,\"'}}\":22892,\"ĠUPDATE\":22893,\"Ġpac\":22894,\"(html\":22895,\"ĠSant\":22896,\"iating\":22897,\"ĠIdeas\":22898,\"Ġspray\":22899,\"ĠHart\":22900,\"Ġverification\":22901,\"adesh\":22902,\"/modules\":22903,\"ĠMind\":22904,\"ĠSizedBox\":22905,\"Ġshelter\":22906,\"Ġheroes\":22907,\"atty\":22908,\"Ġcertified\":22909,\"sj\":22910,\"ĠÃªtre\":22911,\"ÅĤo\":22912,\"Ġpublishing\":22913,\"ĠMalays\":22914,\".getUser\":22915,\"ĠProvider\":22916,\"ĠLinkedList\":22917,\"ĠBor\":22918,\"ROUND\":22919,\"did\":22920,\"tain\":22921,\"pire\":22922,\"ĠJenn\":22923,\"tel\":22924,\"ande\":22925,\"_front\":22926,\"ĠMcG\":22927,\"TestMethod\":22928,\"à¸Ń\":22929,\"Ġoccasionally\":22930,\"ĠWales\":22931,\"Ġexercises\":22932,\"ĠÐĴ\":22933,\"-plus\":22934,\"Ġvalidator\":22935,\"Ġprayer\":22936,\"LATED\":22937,\"_author\":22938,\"Ġlabour\":22939,\"++Ċ\":22940,\"-equiv\":22941,\"ĠGPL\":22942,\"Ġfacebook\":22943,\"simple\":22944,\"gly\":22945,\"Processor\":22946,\"ipy\":22947,\"Ġ*>\":22948,\"Ġcleared\":22949,\"ĠPush\":22950,\"Ġpenis\":22951,\"Structure\":22952,\"lij\":22953,\"ĠMorgan\":22954,\"Ġhandful\":22955,\"\\\".Ċ\":22956,\"|\\\\\":22957,\"Ġ********************************\":22958,\"ĠAqu\":22959,\"_IC\":22960,\".loads\":22961,\"Ġmeter\":22962,\"ĠMarine\":22963,\"::{\":22964,\"ĠTS\":22965,\"ĠArrays\":22966,\".Title\":22967,\"GRAM\":22968,\"termin\":22969,\"Ġcoinc\":22970,\"Else\":22971,\"_states\":22972,\"-run\":22973,\"members\":22974,\"astro\":22975,\"ĠonPress\":22976,\"Ġbeings\":22977,\"Ġabandoned\":22978,\"Ġtaxp\":22979,\"owners\":22980,\".mode\":22981,\"Ġdiagnosis\":22982,\"Ġ_Ċ\":22983,\"ĠKnight\":22984,\"ĉA\":22985,\"Ġobserve\":22986,\"),'\":22987,\"!\\\")Ċ\":22988,\"ĠPara\":22989,\"Ġvariation\":22990,\"(False\":22991,\"ĠAnti\":22992,\"Ġgri\":22993,\"Ġhomeless\":22994,\"?v\":22995,\"Ġbez\":22996,\".Server\":22997,\"release\":22998,\"ĠPatri\":22999,\"Ġchars\":23000,\"Ġranking\":23001,\"activation\":23002,\"Ġwides\":23003,\"qr\":23004,\".Sql\":23005,\"acular\":23006,\"ĠBot\":23007,\"_sync\":23008,\"Ġhappiness\":23009,\"Ġvolunteers\":23010,\"Ġsits\":23011,\"/<\":23012,\"[e\":23013,\"(fileName\":23014,\"Ġcapac\":23015,\"ĠMaria\":23016,\"father\":23017,\"Ġgram\":23018,\"*i\":23019,\"Ġcaso\":23020,\"_draw\":23021,\"ĠRaw\":23022,\"ĠIterator\":23023,\"ĠPadding\":23024,\"PD\":23025,\"BOX\":23026,\"ĠSPECIAL\":23027,\"Ġfecha\":23028,\"Ġvide\":23029,\"ĠLeader\":23030,\"ä»¥\":23031,\"$(\\\".\":23032,\"Ġdiameter\":23033,\"Ġmild\":23034,\"Ġrocks\":23035,\"appings\":23036,\"directory\":23037,\".flush\":23038,\"ĠJess\":23039,\"UNIT\":23040,\"ĠPear\":23041,\"Ġmandatory\":23042,\"Sur\":23043,\"qt\":23044,\"Ġstreams\":23045,\"Ġcooperation\":23046,\"ĠSac\":23047,\"Ġcheaper\":23048,\"ĉch\":23049,\"animation\":23050,\"fare\":23051,\"(height\":23052,\"(True\":23053,\"NY\":23054,\"Ġwrest\":23055,\"Ġpolls\":23056,\"Ġencountered\":23057,\"ĠMarketable\":23058,\"_PASSWORD\":23059,\"_SELECT\":23060,\"ĠArabia\":23061,\"_clock\":23062,\"Ġvoy\":23063,\"ĠÐ¸Ð·\":23064,\"Ġstir\":23065,\"isible\":23066,\"-effect\":23067,\".created\":23068,\"Ġtoys\":23069,\"ĠTradable\":23070,\"Ġrust\":23071,\"Ġstrcpy\":23072,\"_timestamp\":23073,\"Ġtalented\":23074,\",null\":23075,\"ĠJobs\":23076,\"ĠPortland\":23077,\"Ġweakness\":23078,\"Throw\":23079,\"ĠAngel\":23080,\"ä¿®\":23081,\"Ġuncert\":23082,\"ï¼īĊ\":23083,\"ĠìĿ´\":23084,\"Which\":23085,\"Ġ[-]:\":23086,\"Something\":23087,\"Ġconvicted\":23088,\"kle\":23089,\"edium\":23090,\"Ġbranches\":23091,\"Ġbases\":23092,\"ç®\":23093,\"Ġcomplexity\":23094,\"ĠFig\":23095,\".reshape\":23096,\"$db\":23097,\"_CONST\":23098,\"ĠTes\":23099,\".runtime\":23100,\"Ġdeny\":23101,\"ĠBSD\":23102,\"Ġkr\":23103,\"hatt\":23104,\"ĠStatic\":23105,\"Ġuniversities\":23106,\"Replace\":23107,\"Ġdrove\":23108,\"Ġadoles\":23109,\"_plugin\":23110,\"ĠLGBT\":23111,\"Ġtex\":23112,\"duction\":23113,\"EDI\":23114,\"ĠTed\":23115,\"_URI\":23116,\"Ġreception\":23117,\"arten\":23118,\".Single\":23119,\"rice\":23120,\"scious\":23121,\"_bg\":23122,\"Ġwages\":23123,\"ĠServlet\":23124,\"UILayout\":23125,\"Ġformatted\":23126,\".Mod\":23127,\"<class\":23128,\"isen\":23129,\"Ġrepresentatives\":23130,\"\\\"]=\":23131,\"Ġportal\":23132,\"ĠHunter\":23133,\"Ġhiring\":23134,\"__)Ċ\":23135,\"riculum\":23136,\"uo\":23137,\"liest\":23138,\"Ġtears\":23139,\"Lat\":23140,\"Ġliteral\":23141,\".Insert\":23142,\"Ġcurs\":23143,\"ĠComput\":23144,\"Ġterrorism\":23145,\"Ġsweep\":23146,\"Ġ[]čĊ\":23147,\"Ġpassenger\":23148,\"Ġeastern\":23149,\"Ġtweets\":23150,\"Ġoperated\":23151,\"wnd\":23152,\"ĠSyn\":23153,\".tools\":23154,\"ĠWM\":23155,\"ulates\":23156,\"Ġbacteria\":23157,\"(bytes\":23158,\".setData\":23159,\"Ġvisibility\":23160,\"//================================================================\":23161,\"elm\":23162,\"Ġgenerating\":23163,\"Ġmv\":23164,\"Ġkh\":23165,\"jen\":23166,\"/search\":23167,\"Ġaccounting\":23168,\"segment\":23169,\"actic\":23170,\".ip\":23171,\"Ġdeployment\":23172,\"Ġfooter\":23173,\">',Ċ\":23174,\"Ġexpanding\":23175,\"ĠHamilton\":23176,\"ĠContrib\":23177,\".Tables\":23178,\"Activ\":23179,\"HH\":23180,\"ocommerce\":23181,\"_;\":23182,\"Ġamongst\":23183,\"owing\":23184,\"ĠCold\":23185,\"APH\":23186,\"Ġpsychological\":23187,\"_tensor\":23188,\"Ġpackaging\":23189,\"ĠSweden\":23190,\"Ġpare\":23191,\"Ġaggregate\":23192,\"Ġmoderate\":23193,\"_hand\":23194,\"Ġdesignated\":23195,\"Ġdrum\":23196,\"ĠgetUser\":23197,\"ĠCreek\":23198,\"_scope\":23199,\"ĠTransfer\":23200,\"ĠMarg\":23201,\"Ġfighters\":23202,\"Wnd\":23203,\"ĠSel\":23204,\"ĠLaunch\":23205,\"Ġemerging\":23206,\"iframe\":23207,\"ĠAdditional\":23208,\"Ġfears\":23209,\"Ġsatellite\":23210,\"_:\":23211,\"Ġdisposing\":23212,\"GetValue\":23213,\"HttpPost\":23214,\"ATIVE\":23215,\"ulary\":23216,\"Views\":23217,\"Ġattending\":23218,\"ĠTennessee\":23219,\"ĠMission\":23220,\"Ġmedication\":23221,\"ĠWy\":23222,\"ĠAnna\":23223,\"Ø¹\":23224,\"ĠVertex\":23225,\".types\":23226,\"Organ\":23227,\".DataGridViewTextBoxColumn\":23228,\"ĠRS\":23229,\"Ġtempo\":23230,\"(App\":23231,\"VersionUID\":23232,\".point\":23233,\"ĠDutch\":23234,\"Hours\":23235,\"LU\":23236,\"Ġquoted\":23237,\".builder\":23238,\"ĠPerfect\":23239,\"ĠAlways\":23240,\"_two\":23241,\"Ġexclusively\":23242,\"ĠCra\":23243,\"ificar\":23244,\"ĠAWS\":23245,\"ingham\":23246,\"complex\":23247,\"kernel\":23248,\"Ġgravity\":23249,\"Ġwi\":23250,\"Ġoverview\":23251,\"ĠWant\":23252,\"ĠWP\":23253,\"(sh\":23254,\".rotation\":23255,\"States\":23256,\"ĠTeen\":23257,\"_components\":23258,\"ìĪĺ\":23259,\"Received\":23260,\"Ġlyrics\":23261,\"rites\":23262,\"ĉĉĉĉĉĠ\":23263,\"-American\":23264,\"[num\":23265,\"/python\":23266,\"ĠUART\":23267,\"Ġapple\":23268,\"ĠJonathan\":23269,\"Ġmomentum\":23270,\"à¸±\":23271,\"Ĥ¹\":23272,\"Ġmich\":23273,\"andra\":23274,\"Ġbiological\":23275,\"ĠMens\":23276,\"Ġ%%\":23277,\"elsea\":23278,\"ĠMexican\":23279,\".randint\":23280,\"Ġtale\":23281,\"ĠValidate\":23282,\"Ġdefeated\":23283,\".htm\":23284,\"Ġcopper\":23285,\"=/\":23286,\"cosystem\":23287,\"Ġrip\":23288,\"decimal\":23289,\".VISIBLE\":23290,\"ĠTa\":23291,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":23292,\"Ġdownloaded\":23293,\"environment\":23294,\"Ġnomine\":23295,\"building\":23296,\"ĠSpot\":23297,\"ipheral\":23298,\"Ġalto\":23299,\"quet\":23300,\"ĠFT\":23301,\"/get\":23302,\"/master\":23303,\"WIN\":23304,\"åħĥ\":23305,\"West\":23306,\"argc\":23307,\"Ġproducers\":23308,\"ĠMuch\":23309,\"_storage\":23310,\"credit\":23311,\"CONT\":23312,\"Ġvet\":23313,\"Ġvoices\":23314,\"('',\":23315,\"Ġinstruments\":23316,\"ĠMSG\":23317,\"esse\":23318,\"repository\":23319,\"omics\":23320,\"Ġdealer\":23321,\"Still\":23322,\"Ġbanner\":23323,\"ascii\":23324,\"Ġremarks\":23325,\"[js\":23326,\"Ġshorter\":23327,\"gulp\":23328,\"Ġmyster\":23329,\"Ġkun\":23330,\"ĠBird\":23331,\"Ġtiene\":23332,\"nut\":23333,\"ĠUm\":23334,\"Ġwise\":23335,\"Yeah\":23336,\"INESS\":23337,\"_begin\":23338,\"-heading\":23339,\"Course\":23340,\"ĠčĊčĊ\":23341,\"ombie\":23342,\"graded\":23343,\"ĠGPS\":23344,\"ĠÅ¼e\":23345,\"Fit\":23346,\"caption\":23347,\"Ã¶n\":23348,\"/image\":23349,\"lia\":23350,\"(mod\":23351,\"Ġleak\":23352,\"enza\":23353,\"/H\":23354,\"ĠHappy\":23355,\"Dist\":23356,\"nx\":23357,\"ĠGovernor\":23358,\"(last\":23359,\"teacher\":23360,\"ĠSent\":23361,\"support\":23362,\"jectory\":23363,\"ĠÙħ\":23364,\"Registration\":23365,\"ĠGray\":23366,\",false\":23367,\"Ġadjusted\":23368,\"(settings\":23369,\"<R\":23370,\"ĠMage\":23371,\"Ġplaint\":23372,\"_)Ċ\":23373,\"ĉit\":23374,\"ometric\":23375,\".bootstrap\":23376,\"Ġcarries\":23377,\"Ip\":23378,\"Ġ!$\":23379,\"Ġswimming\":23380,\"ĠMario\":23381,\"ĠQuestions\":23382,\"PACE\":23383,\"æĸ¹\":23384,\"eor\":23385,\"}}\\\"\":23386,\"Ġoven\":23387,\"ĠKon\":23388,\"Ġwisdom\":23389,\"Ġacquisition\":23390,\"essment\":23391,\"agine\":23392,\"Ġexpressions\":23393,\"SequentialGroup\":23394,\"Front\":23395,\"ulpt\":23396,\"awk\":23397,\"'])ĊĊ\":23398,\"_AR\":23399,\"Ġanalog\":23400,\"ulin\":23401,\"_PRINT\":23402,\"ĠLG\":23403,\"Ġblob\":23404,\"ĠFurthermore\":23405,\"_component\":23406,\"ĠCole\":23407,\"LAN\":23408,\"SCRIPTION\":23409,\"Ġlap\":23410,\"icensing\":23411,\"_TIMEOUT\":23412,\"ĠFro\":23413,\"Ġliability\":23414,\"Ġcomposed\":23415,\".createSequentialGroup\":23416,\"_person\":23417,\"Ġbeam\":23418,\"ĉĠĠĠĠĠĠĠĠ\":23419,\"ĠNotFound\":23420,\".'Ċ\":23421,\"ÃŃs\":23422,\".TextView\":23423,\"PDF\":23424,\"Ġkar\":23425,\"__('\":23426,\"Ġ\\\":\\\"\":23427,\"_messages\":23428,\"Ġharvest\":23429,\".history\":23430,\">'Ċ\":23431,\"-fold\":23432,\"æĬ\":23433,\"ĠBetter\":23434,\"Ġ\\\"\\\\<\":23435,\"spacing\":23436,\"Ġfurnished\":23437,\"oser\":23438,\"]}Ċ\":23439,\"Ġ$\\\"\":23440,\"pull\":23441,\".Post\":23442,\"(ip\":23443,\"Ĺı\":23444,\".front\":23445,\"nte\":23446,\"ĠFM\":23447,\"guid\":23448,\"Ġnegotiations\":23449,\"agonal\":23450,\"Ġtremend\":23451,\"ungeon\":23452,\"Adv\":23453,\"carousel\":23454,\"ÃŁe\":23455,\"_DESC\":23456,\"Ġhammer\":23457,\"áºŃ\":23458,\"ĠĠĠĠĠĠĠĠĊĊ\":23459,\"-core\":23460,\"-service\":23461,\"Ġcorners\":23462,\"ĠSF\":23463,\"pred\":23464,\">A\":23465,\"ĠJLabel\":23466,\"Ġromantic\":23467,\"Ġtestimony\":23468,\"osc\":23469,\"ĠGeneration\":23470,\"asures\":23471,\"_internal\":23472,\"Ġprints\":23473,\"Ġ])Ċ\":23474,\"ĠCleveland\":23475,\"repo\":23476,\"Disc\":23477,\"Ġ\\\">Ċ\":23478,\"ï¿½ï¿½ï¿½ï¿½\":23479,\"Ġnearest\":23480,\"_tb\":23481,\"(require\":23482,\"EOF\":23483,\"-child\":23484,\"Ġbudd\":23485,\".XtraEditors\":23486,\"alties\":23487,\"\\\\\\\":\\\\\\\"\":23488,\"Words\":23489,\"Ġlocally\":23490,\"Ġpurchases\":23491,\"Drawer\":23492,\"extract\":23493,\"Ġexecut\":23494,\"}'.\":23495,\"userdata\":23496,\"Ġfocuses\":23497,\"-minute\":23498,\"ĠPublish\":23499,\"ogo\":23500,\"Ġmountains\":23501,\"Bot\":23502,\"}>{\":23503,\"Ġtension\":23504,\"rod\":23505,\"mesh\":23506,\"Ġtransformed\":23507,\",R\":23508,\"()}Ċ\":23509,\".long\":23510,\"Ġgorgeous\":23511,\"ĠSchedule\":23512,\"Ġoldest\":23513,\"Ġsubprocess\":23514,\"(IN\":23515,\"yect\":23516,\"ĠCooper\":23517,\"arness\":23518,\"ĠMonitor\":23519,\".part\":23520,\"ĠNBC\":23521,\"Ġcotton\":23522,\"Ġhol\":23523,\"Ġrgba\":23524,\"ĠBio\":23525,\"Continue\":23526,\"Pod\":23527,\"Ġparticipating\":23528,\"clusions\":23529,\"(ByVal\":23530,\"Ã¬\":23531,\"ĠHOW\":23532,\"_setopt\":23533,\"Ġaccompanying\":23534,\"aton\":23535,\"Ġ/\\\\\":23536,\"ĠAuthentication\":23537,\"iÃ©n\":23538,\"ĠBarack\":23539,\"/*.\":23540,\"Ġeager\":23541,\"ĠCancel\":23542,\"<lemma\":23543,\"eph\":23544,\"ĉwindow\":23545,\"Ġincidents\":23546,\"),(\":23547,\".Des\":23548,\"ibe\":23549,\"ĠFunctions\":23550,\"Ġhospitals\":23551,\"Ġoxygen\":23552,\"rootScope\":23553,\"Ġdrew\":23554,\"ĉrequest\":23555,\"notice\":23556,\"aku\":23557,\"aments\":23558,\"far\":23559,\"Ġprecise\":23560,\"_wrapper\":23561,\"Ġlisteners\":23562,\"AZ\":23563,\".bounds\":23564,\"ĠAverage\":23565,\"fieldset\":23566,\"_axis\":23567,\"Ġexamination\":23568,\"'.Ċ\":23569,\"mons\":23570,\"++){čĊ\":23571,\"ĠForms\":23572,\"íķľ\":23573,\"CppMethod\":23574,\"_trace\":23575,\"Ġengineer\":23576,\"ĠFlat\":23577,\"Ġrevision\":23578,\"Ġheating\":23579,\"/profile\":23580,\".ru\":23581,\"priority\":23582,\"Ġinfer\":23583,\"_STREAM\":23584,\"Ġ*)(\":23585,\">$\":23586,\"OLEAN\":23587,\"OKIE\":23588,\"IBILITY\":23589,\"UAGE\":23590,\"ĠSurvey\":23591,\"Ġresign\":23592,\"wing\":23593,\"Ġsecrets\":23594,\"Ġchips\":23595,\"JSONObject\":23596,\"Desktop\":23597,\"_SYMBOL\":23598,\"(resource\":23599,\"Ġ</>Ċ\":23600,\"Ġnewest\":23601,\"uli\":23602,\"Ġdesert\":23603,\"Ġdip\":23604,\"ĠPow\":23605,\"Ġequation\":23606,\"Ġpossibilities\":23607,\"ĠFed\":23608,\"osph\":23609,\"Ġ[%\":23610,\"Ġbubble\":23611,\"etherlands\":23612,\"Ġcement\":23613,\".auto\":23614,\"_AN\":23615,\"âĢĻ.\":23616,\"selection\":23617,\"ĠBond\":23618,\"Den\":23619,\"-O\":23620,\".getType\":23621,\".Window\":23622,\"pres\":23623,\"Ġswinger\":23624,\"\\\"})Ċ\":23625,\"Ġpip\":23626,\"Ġmice\":23627,\"Ġcompound\":23628,\"-plugin\":23629,\"iko\":23630,\"Ġcenturies\":23631,\"icular\":23632,\"-inline\":23633,\"ĉkey\":23634,\">\\\\<\":23635,\"ENSION\":23636,\"Ġ[čĊ\":23637,\"Ġprecisely\":23638,\"ĠÃ©tÃ©\":23639,\"ĠPast\":23640,\"ĠCambridge\":23641,\"-full\":23642,\"Ġanalyze\":23643,\"ĠSteven\":23644,\"Ġnem\":23645,\"due\":23646,\"oren\":23647,\"Ġmuscles\":23648,\"ijing\":23649,\"/-\":23650,\"ĠKennedy\":23651,\"RM\":23652,\"ossible\":23653,\"Ġactress\":23654,\"Ġdolor\":23655,\"å½ķ\":23656,\"Need\":23657,\".toggle\":23658,\"ĠRace\":23659,\"wers\":23660,\".material\":23661,\"ĠDue\":23662,\"ĠPel\":23663,\"#print\":23664,\"Ġindependence\":23665,\"exus\":23666,\"Shadow\":23667,\"Ġencoder\":23668,\"(level\":23669,\"ĠSwift\":23670,\".doc\":23671,\"_selection\":23672,\"ĠserialVersionUID\":23673,\"Labels\":23674,\"Ġperformances\":23675,\".Tag\":23676,\"ĠNHL\":23677,\"izen\":23678,\"/UIKit\":23679,\"_CONTROL\":23680,\"Ġearnings\":23681,\"ĠAlt\":23682,\"_HANDLE\":23683,\"Ctx\":23684,\"Ġpersu\":23685,\"Ġtran\":23686,\"ç¨\":23687,\"_CHANNEL\":23688,\"Ġsatisfaction\":23689,\"ĠGP\":23690,\"iox\":23691,\"mitt\":23692,\"lando\":23693,\"Ġpig\":23694,\"inals\":23695,\"Ãªncia\":23696,\"Surface\":23697,\"ĠUUID\":23698,\"Ġbeneficial\":23699,\"Ġsequences\":23700,\"ĉmemset\":23701,\"Ġmagical\":23702,\"Â«\":23703,\"Ġworn\":23704,\"ASC\":23705,\"popup\":23706,\"COMP\":23707,\"_before\":23708,\"eness\":23709,\"Ui\":23710,\"Les\":23711,\".require\":23712,\".Serializable\":23713,\"addGap\":23714,\"Ġauthorization\":23715,\".pyplot\":23716,\"urray\":23717,\"latitude\":23718,\"frames\":23719,\"ajs\":23720,\"Ġcompass\":23721,\"Ġobservations\":23722,\"_sup\":23723,\".environ\":23724,\"Ġtriple\":23725,\"ĠRuby\":23726,\"Ġdrain\":23727,\"_FILTER\":23728,\"San\":23729,\"UMP\":23730,\"NullException\":23731,\"ĠGab\":23732,\"owe\":23733,\"ĠTurkish\":23734,\"_sequence\":23735,\"ĠGrant\":23736,\"uela\":23737,\"Ġwo\":23738,\"Ġcube\":23739,\"iq\":23740,\"Ġdisorders\":23741,\"Ġextraordinary\":23742,\"Ġctrl\":23743,\"ĠSeq\":23744,\"entr\":23745,\"Ġsanctions\":23746,\"utsch\":23747,\"Reports\":23748,\"Ġinherit\":23749,\"Period\":23750,\"Ġphotography\":23751,\"ĠFramework\":23752,\"Ġspecialist\":23753,\"Ġ?ĊĊ\":23754,\"_selected\":23755,\".Player\":23756,\"Ġallocation\":23757,\"(account\":23758,\"Ġstructural\":23759,\"vable\":23760,\"-offset\":23761,\".AppCompatActivity\":23762,\"Ð°Ð¼\":23763,\".AddWithValue\":23764,\"Ġicons\":23765,\"Ġshutdown\":23766,\"_low\":23767,\"ĠCompare\":23768,\"ĠCe\":23769,\"=head\":23770,\"lam\":23771,\".predict\":23772,\"_DEC\":23773,\"ĠSleep\":23774,\"ĠGratis\":23775,\"Ġsuggestion\":23776,\"ĠDEL\":23777,\"caff\":23778,\"avirus\":23779,\"Nothing\":23780,\"ŀĭ\":23781,\"Ġwidespread\":23782,\"Ġmechanisms\":23783,\"ĠtextAlign\":23784,\"occup\":23785,\"ĠRail\":23786,\":NS\":23787,\"Ġfiber\":23788,\"Ġmk\":23789,\"Ġvintage\":23790,\"-long\":23791,\".reduce\":23792,\".Entities\":23793,\"(record\":23794,\"Ġpleasant\":23795,\"FRING\":23796,\".Cells\":23797,\"OTT\":23798,\"ĉelseif\":23799,\"_confirm\":23800,\"ĠViewGroup\":23801,\"sym\":23802,\"Ġpray\":23803,\"Ġsuspected\":23804,\"Contains\":23805,\"Ġborders\":23806,\"ĠcomponentDid\":23807,\"ASSERT\":23808,\"Ġinfinite\":23809,\"-order\":23810,\"Ġhello\":23811,\"ĠGrade\":23812,\".currentTimeMillis\":23813,\"apolis\":23814,\"zh\":23815,\"ĉObject\":23816,\":\\\\\\\\\":23817,\"HO\":23818,\"valuation\":23819,\"Ġvocab\":23820,\"Ġcoupon\":23821,\"atabases\":23822,\".GetType\":23823,\"Learn\":23824,\"]=\\\"\":23825,\"ĠGary\":23826,\"otive\":23827,\"Ġash\":23828,\"Ġbib\":23829,\"XXXX\":23830,\"Ġbalanced\":23831,\"VALUE\":23832,\"ĠNat\":23833,\"_Ad\":23834,\"<E\":23835,\"åĮº\":23836,\"ĠMethodInfo\":23837,\"LIB\":23838,\"Ġconsiderable\":23839,\"ĠIndustry\":23840,\"tests\":23841,\".setTitle\":23842,\"ĠBluetooth\":23843,\"Ġmapped\":23844,\"ĠBruce\":23845,\"ĠMainWindow\":23846,\"ĉstatus\":23847,\"Ġraz\":23848,\"ĠMand\":23849,\"Ġclassification\":23850,\"Permissions\":23851,\"Ġ----------------------------------------------------------------------------\":23852,\"Ġcontainers\":23853,\":set\":23854,\"_xml\":23855,\"Ġwhilst\":23856,\"Through\":23857,\"Ġvalign\":23858,\"Ġworlds\":23859,\"CORD\":23860,\"EDIA\":23861,\"ÑĢÐ¾Ð²\":23862,\"Ġspare\":23863,\"ĠHad\":23864,\"ĠDEF\":23865,\"(ptr\":23866,\"Ġwarming\":23867,\"à¤¾\":23868,\"Ġconsensus\":23869,\"agne\":23870,\"CTL\":23871,\"Ġìķ\":23872,\".Main\":23873,\"webElement\":23874,\"Ġpist\":23875,\"Flash\":23876,\"Append\":23877,\".twimg\":23878,\"Tap\":23879,\"Ġvegetables\":23880,\"alg\":23881,\".sample\":23882,\"Ġcoaching\":23883,\"(ind\":23884,\"CellValue\":23885,\"CheckBox\":23886,\"ĠHell\":23887,\"ROOT\":23888,\"Ġstadium\":23889,\"Ġinvestigating\":23890,\")%\":23891,\"sted\":23892,\"ĠWriting\":23893,\"Ġê²\":23894,\"Ġuno\":23895,\"Ġ{{--\":23896,\"Ġcoords\":23897,\"Ġunser\":23898,\"organization\":23899,\"ĠCrime\":23900,\"ĠDemocrat\":23901,\"Ġvin\":23902,\"/file\":23903,\"-api\":23904,\"ĠAy\":23905,\"Ġfunded\":23906,\"ĠBrexit\":23907,\"ĠGh\":23908,\"entina\":23909,\"cases\":23910,\"Ġdash\":23911,\"Ġ!!}Ċ\":23912,\"HI\":23913,\"Office\":23914,\"Ġcaptain\":23915,\"Ġworship\":23916,\"\\\\C\":23917,\"Ġglobe\":23918,\"_board\":23919,\"Ġbabies\":23920,\"Ġconsecutive\":23921,\"Ġenhanced\":23922,\"ereum\":23923,\"ĠAdvis\":23924,\"Ġgrain\":23925,\"Ġcraw\":23926,\"ancellationToken\":23927,\".alpha\":23928,\"_WITH\":23929,\"ĠOtt\":23930,\"ĠCool\":23931,\".batch\":23932,\"Ġverified\":23933,\"(callback\":23934,\"Ġregards\":23935,\"ĠIntPtr\":23936,\"oucher\":23937,\"Ġkin\":23938,\"Ġtouched\":23939,\"itÃł\":23940,\"athon\":23941,\"Ġadjacent\":23942,\"Ġaccompanied\":23943,\"LEAR\":23944,\"Ġimplies\":23945,\"Ġhill\":23946,\"ĠBaltimore\":23947,\"=\\\"-\":23948,\"Finally\":23949,\"Sam\":23950,\"icopt\":23951,\"Ġsod\":23952,\"Ġmaj\":23953,\"ĠShipping\":23954,\"ĠgetAll\":23955,\"Ġcoaches\":23956,\"Ġdonations\":23957,\"ilot\":23958,\"ĠTar\":23959,\"cerr\":23960,\"Ġbadge\":23961,\"Ġmarkers\":23962,\"ĠRand\":23963,\"aised\":23964,\"issance\":23965,\"Ġexploring\":23966,\"uced\":23967,\"ĠIndonesia\":23968,\"Ġbeneath\":23969,\"Ġmagnetic\":23970,\"Ġmuseum\":23971,\"matchCondition\":23972,\"Ġdisrupt\":23973,\"Ġremind\":23974,\"ĠTM\":23975,\"Ġ/><\":23976,\"Ġfool\":23977,\"Ġesk\":23978,\".Null\":23979,\"ĠDies\":23980,\"_OUTPUT\":23981,\"_TYPED\":23982,\"Ġpainted\":23983,\"Ġsophistic\":23984,\"ĠBear\":23985,\"*n\":23986,\"_PACK\":23987,\"Ġdelivering\":23988,\"ĠCOUNT\":23989,\"åįķ\":23990,\"Ġjeg\":23991,\"-car\":23992,\"fname\":23993,\"Ġranging\":23994,\"ĠNeg\":23995,\"/******/\":23996,\"ĠCHAR\":23997,\"Ġultra\":23998,\"Grad\":23999,\"=t\":24000,\"Ġjudges\":24001,\"ĠDise\":24002,\"anners\":24003,\"Ġscal\":24004,\"_cal\":24005,\"ĠCONNECTION\":24006,\"_embed\":24007,\"(fn\":24008,\"ĠCraft\":24009,\"ĠPas\":24010,\"\\\")->\":24011,\".convert\":24012,\".resource\":24013,\"ĠSTATUS\":24014,\"Ã´ng\":24015,\"ĠTit\":24016,\"Ġclassroom\":24017,\"ĠArchitect\":24018,\"ĠKings\":24019,\"Ġsteady\":24020,\"/*!Ċ\":24021,\"ĠGene\":24022,\")\\\";Ċ\":24023,\"icia\":24024,\"stan\":24025,\"ĠConstruction\":24026,\"umper\":24027,\"wc\":24028,\"ĠCBS\":24029,\"inging\":24030,\"-party\":24031,\"(driver\":24032,\"MARK\":24033,\"Ġnested\":24034,\"eward\":24035,\"Ġdependency\":24036,\"Ġmales\":24037,\"ĠONE\":24038,\"ĠProduction\":24039,\"][$\":24040,\"ãĥ¼ãĥ\":24041,\"_LOAD\":24042,\"ĠBol\":24043,\"elry\":24044,\"łéĻ¤\":24045,\"ĠRequire\":24046,\"Ġplacing\":24047,\"xxx\":24048,\"CALE\":24049,\"Ġthumb\":24050,\"Choose\":24051,\"Ġprototype\":24052,\"VOID\":24053,\"Ġlesbian\":24054,\"Ġtraits\":24055,\"Sharp\":24056,\"Ġconsume\":24057,\"Truth\":24058,\"ĠactionPerformed\":24059,\"ĠEnvironmental\":24060,\"ĠDean\":24061,\"Ġestado\":24062,\"same\":24063,\"Ġnumeric\":24064,\"Ġtransit\":24065,\".Email\":24066,\"-side\":24067,\"_RUN\":24068,\"ĠVillage\":24069,\"_OPEN\":24070,\"è¦\":24071,\".rem\":24072,\"-warning\":24073,\"anya\":24074,\"PropertyChanged\":24075,\"Ġ(!_\":24076,\"(check\":24077,\"ilia\":24078,\"ĠSoft\":24079,\"steps\":24080,\"ĠMadrid\":24081,\"MemoryWarning\":24082,\"Ġhandlers\":24083,\"Ġexperiencing\":24084,\"Ġinspect\":24085,\"buttons\":24086,\"ReceiveMemoryWarning\":24087,\"chemy\":24088,\"Links\":24089,\"Ġurllib\":24090,\".SystemColors\":24091,\"ĠEigen\":24092,\"Ġpunishment\":24093,\":UIControl\":24094,\"bara\":24095,\"-set\":24096,\"Ġ}čĊčĊčĊ\":24097,\"Ġtolerance\":24098,\"Ġinterfaces\":24099,\".redirect\":24100,\"ighbors\":24101,\"csrf\":24102,\"_background\":24103,\".Utils\":24104,\"_HT\":24105,\"ĠInterest\":24106,\"imos\":24107,\"Ġgrants\":24108,\"Ġexamined\":24109,\"ÐĶ\":24110,\"Ġcf\":24111,\"forge\":24112,\"backs\":24113,\"ĠObjects\":24114,\"_sent\":24115,\".entry\":24116,\"ĠTHEN\":24117,\"ellido\":24118,\"cia\":24119,\",res\":24120,\"/stdc\":24121,\".nd\":24122,\"(Int\":24123,\"ĠAuthors\":24124,\"ĠAppCompatActivity\":24125,\"'{\":24126,\"Ġmedi\":24127,\"Music\":24128,\"igm\":24129,\"ceipt\":24130,\"Ġauss\":24131,\"Ġtargeting\":24132,\"ĠKeys\":24133,\"hn\":24134,\":]Ċ\":24135,\"Ġmineral\":24136,\"Ã®\":24137,\".ca\":24138,\"omed\":24139,\"Ġsheets\":24140,\"Ġcamb\":24141,\"Ġdeadly\":24142,\".inject\":24143,\"(unit\":24144,\"ĠSelection\":24145,\".gms\":24146,\"(connection\":24147,\"Ġ$(\\\"\":24148,\"Ã©mon\":24149,\"ĠCurrently\":24150,\"pte\":24151,\"_paths\":24152,\"leaf\":24153,\"Ġimplications\":24154,\"posal\":24155,\"ä½į\":24156,\"[/\":24157,\"ancia\":24158,\"éĽ\":24159,\"mul\":24160,\"cie\":24161,\"Ġgeile\":24162,\"imals\":24163,\"UIView\":24164,\"Ġsurre\":24165,\"serialize\":24166,\"ISO\":24167,\"Ġarbitrary\":24168,\"Ġsockaddr\":24169,\".fn\":24170,\"ĠMerc\":24171,\"Ġcasting\":24172,\"KeyDown\":24173,\"ĠnewValue\":24174,\"opens\":24175,\"Todo\":24176,\"Ġflexibility\":24177,\"ĉĉĉĉĠĠ\":24178,\"Velocity\":24179,\"Ãºn\":24180,\"rowing\":24181,\"Ġcomputed\":24182,\"`)Ċ\":24183,\"statement\":24184,\"Ġri\":24185,\"_cart\":24186,\"Low\":24187,\"transfer\":24188,\".nav\":24189,\"Ġgrave\":24190,\"ĠDoor\":24191,\"ĉalert\":24192,\".subscribe\":24193,\"-profile\":24194,\"ĉbase\":24195,\"ĠâĪĴ\":24196,\"__ĊĊ\":24197,\"Ġengineers\":24198,\"Ġexplosion\":24199,\"Ġdari\":24200,\"ĉLog\":24201,\"onal\":24202,\"Ġisolated\":24203,\"{i\":24204,\"ĠMsg\":24205,\"Future\":24206,\"Ġracist\":24207,\"-wrap\":24208,\"ĠVers\":24209,\"borg\":24210,\"ISION\":24211,\"ĠÑĢÐ°Ð\":24212,\"ĠYan\":24213,\"initWith\":24214,\"Ġnomin\":24215,\"(empty\":24216,\"ÃŃn\":24217,\"ãĤ¤\":24218,\"ĉwidth\":24219,\"Ġchamber\":24220,\"/ajax\":24221,\"EMP\":24222,\"Ġneces\":24223,\"ivos\":24224,\"logic\":24225,\"*)&\":24226,\"cripts\":24227,\"RowAt\":24228,\"iblings\":24229,\"Ġears\":24230,\"Ġcomputing\":24231,\"Ġmaker\":24232,\"ĠNeither\":24233,\"breadcrumb\":24234,\"Ġserialize\":24235,\"ĠWithin\":24236,\"Ġdell\":24237,\"_TRACE\":24238,\"=a\":24239,\"Ġwishes\":24240,\"-inch\":24241,\"ĠDor\":24242,\"Ġinnocent\":24243,\"ĠDol\":24244,\"Ġintens\":24245,\"forced\":24246,\"ĠBIT\":24247,\"Ġphotographs\":24248,\"Ġcasa\":24249,\"ĠLen\":24250,\"\\\\Framework\":24251,\".Simple\":24252,\"Ġdear\":24253,\")/(\":24254,\"ippi\":24255,\"Ġowns\":24256,\"Players\":24257,\"Ġproposals\":24258,\".pi\":24259,\"usalem\":24260,\"Damage\":24261,\"Ġcalories\":24262,\"ĠCreative\":24263,\"Ġ[$\":24264,\"Ġ//čĊ\":24265,\"AndView\":24266,\"Ã¨me\":24267,\".custom\":24268,\"_factory\":24269,\"commands\":24270,\"_look\":24271,\"Ġstrcmp\":24272,\"YN\":24273,\"aired\":24274,\"Ġaudit\":24275,\"Ð¾ÑģÑĤ\":24276,\"ĠReverse\":24277,\"ropriate\":24278,\"etics\":24279,\"<vector\":24280,\".selenium\":24281,\".or\":24282,\"Ġpredicate\":24283,\"Ġfinishing\":24284,\"Ġkle\":24285,\"ĠRepos\":24286,\"ĠKhan\":24287,\"ĠMaking\":24288,\"ĠFS\":24289,\"Ġpute\":24290,\"ĉstate\":24291,\"_SUPPORT\":24292,\"'-\":24293,\"orientation\":24294,\"Ġexisted\":24295,\"atura\":24296,\"Ġexpects\":24297,\"ĠShadow\":24298,\"Ġorganiz\":24299,\"åŀĭ\":24300,\"Ġsuspension\":24301,\"Ġuit\":24302,\"Ġsimultaneously\":24303,\"ĠAffero\":24304,\":\\\");Ċ\":24305,\"Ġrocket\":24306,\"cas\":24307,\"etermine\":24308,\"aceut\":24309,\"xl\":24310,\"ĠAMD\":24311,\"(graph\":24312,\"associ\":24313,\"_CR\":24314,\".arange\":24315,\"(jLabel\":24316,\"Ġbeef\":24317,\"Quick\":24318,\".card\":24319,\"]):\":24320,\"-gr\":24321,\".GONE\":24322,\"_CLOSE\":24323,\"ĠNev\":24324,\"ÃŃas\":24325,\"Ġstepped\":24326,\"ĠFreedom\":24327,\"ĠWR\":24328,\"NSArray\":24329,\"_rx\":24330,\"_dialog\":24331,\"Ġhotels\":24332,\"Ġ(\\\\<\":24333,\"ĠDiamond\":24334,\"Ġassumption\":24335,\"umi\":24336,\"(items\":24337,\"čččĊ\":24338,\"æ³ķ\":24339,\"Ġnel\":24340,\"Books\":24341,\"åİ¿\":24342,\"usb\":24343,\"ĠFIN\":24344,\"æ¬\":24345,\"Ġcorporations\":24346,\"USA\":24347,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":24348,\".property\":24349,\"ewise\":24350,\"_plot\":24351,\"\\\">';Ċ\":24352,\"Ġpepper\":24353,\"Ġshed\":24354,\"ĠMedium\":24355,\"ĠCookie\":24356,\"Ġoverseas\":24357,\"edor\":24358,\"asurement\":24359,\"åŃĺ\":24360,\"Ġ'.'\":24361,\"Ġphp\":24362,\"ĠPROC\":24363,\"Ġexceptional\":24364,\"(th\":24365,\"ĠJet\":24366,\"Ġoccupied\":24367,\".setImage\":24368,\"ĠRelated\":24369,\"ucker\":24370,\"Members\":24371,\"PRINT\":24372,\"ĠGlo\":24373,\"_VIEW\":24374,\"}\\\",Ċ\":24375,\"Ġadoption\":24376,\"[])Ċ\":24377,\"ĠMissouri\":24378,\"ĠLincoln\":24379,\"erald\":24380,\"Popup\":24381,\"Ġfate\":24382,\"-bootstrap\":24383,\"fections\":24384,\"ĠPoll\":24385,\"_ARGS\":24386,\"inance\":24387,\"-home\":24388,\".),\":24389,\"_done\":24390,\":ĊĊĊ\":24391,\"Ġdiscussing\":24392,\"ĠSQLException\":24393,\"Ġelectro\":24394,\"ĉreq\":24395,\"Ġzw\":24396,\"Ġlui\":24397,\"Ġovernight\":24398,\"$user\":24399,\"ĠWAY\":24400,\"Ġallerg\":24401,\"Ġdisappointed\":24402,\"Ġradiation\":24403,\"Ġimpressed\":24404,\"ificates\":24405,\"Ġtob\":24406,\"CLASS\":24407,\"Ġcuda\":24408,\"_det\":24409,\"-post\":24410,\"ulu\":24411,\"Translation\":24412,\"-hand\":24413,\".year\":24414,\"ĠMongo\":24415,\"Ġunclear\":24416,\".engine\":24417,\"WEBPACK\":24418,\"rices\":24419,\"_ACCESS\":24420,\"Ġholidays\":24421,\"percent\":24422,\".Identity\":24423,\"ĠGov\":24424,\"Ġpassionate\":24425,\"!!.\":24426,\"ĠGreece\":24427,\"plusplus\":24428,\"'));\":24429,\"GP\":24430,\"Ġexcit\":24431,\".tabPage\":24432,\"_cond\":24433,\"Ġsponsor\":24434,\"MODULE\":24435,\"_proc\":24436,\"Ġ$Ċ\":24437,\"Ġrational\":24438,\".Tool\":24439,\"Ġihr\":24440,\"cca\":24441,\"åĵģ\":24442,\"ĠEstate\":24443,\"IBUTE\":24444,\"ActionPerformed\":24445,\"ĠSolar\":24446,\"¦Ĥ\":24447,\"Ġequity\":24448,\"tid\":24449,\"Ġrecip\":24450,\".simple\":24451,\"mk\":24452,\"ĠLuke\":24453,\"ĠGuardian\":24454,\"Ġencrypted\":24455,\"Ġdominant\":24456,\".place\":24457,\"ĠNV\":24458,\"Ġtongue\":24459,\"(Get\":24460,\"Ġstainless\":24461,\".Play\":24462,\"Ġeb\":24463,\"aci\":24464,\".buffer\":24465,\"readcrumbs\":24466,\"Ġvaccine\":24467,\"prom\":24468,\"ĠuserInfo\":24469,\"Ġslug\":24470,\"SerializedName\":24471,\"-wide\":24472,\"Ġreactions\":24473,\"ĠYang\":24474,\"ĠAdds\":24475,\"(userId\":24476,\"Ġplates\":24477,\"ĠMEM\":24478,\"Ġbail\":24479,\"Inside\":24480,\"eted\":24481,\"Ġelsif\":24482,\"Ġsake\":24483,\"Ġcycles\":24484,\"ĠìĹ\":24485,\"ĉI\":24486,\"-collapse\":24487,\"ĠGMT\":24488,\"Declaration\":24489,\"Ġgros\":24490,\"Ġreaches\":24491,\"Ġcustody\":24492,\"Until\":24493,\"tu\":24494,\"ĠChen\":24495,\"Ġnx\":24496,\"(addr\":24497,\"ĠOffer\":24498,\"Ġcolleg\":24499,\"assador\":24500,\"Ġmapper\":24501,\"ĠSIGNAL\":24502,\"ĠBloom\":24503,\"ĠHoll\":24504,\"ĠImper\":24505,\"-des\":24506,\"_site\":24507,\"Proc\":24508,\"Equ\":24509,\"Ġatomic\":24510,\"ĠWoman\":24511,\"sent\":24512,\"scar\":24513,\"Ġintelligent\":24514,\"ĠGetting\":24515,\"ĠRegistration\":24516,\"ĠPhill\":24517,\"Ġkiller\":24518,\"unicode\":24519,\"ĊĉĉĊ\":24520,\"ĠJacob\":24521,\"ĠConst\":24522,\"Ġlocate\":24523,\"Ġcaus\":24524,\"ĠScholar\":24525,\"Ġconstitutional\":24526,\"Ġinflation\":24527,\"ĠGot\":24528,\"=array\":24529,\"endum\":24530,\"Ġtranslated\":24531,\"Ġdivorce\":24532,\"Entries\":24533,\"Ġsor\":24534,\"ĠQuote\":24535,\"irlines\":24536,\"UK\":24537,\"Ġexcel\":24538,\"(opt\":24539,\"ĠADV\":24540,\",:,\":24541,\"Ġcontacted\":24542,\"ĠDA\":24543,\"Ġrings\":24544,\"ĠIndustrial\":24545,\".getContext\":24546,\"Ġforgotten\":24547,\"ĠTan\":24548,\"Ġpants\":24549,\"Ġov\":24550,\"Ġdecoder\":24551,\"ĠPartial\":24552,\"Ġvc\":24553,\"Ġbattles\":24554,\"Arial\":24555,\"FRINGEMENT\":24556,\"irates\":24557,\",w\":24558,\"aintenance\":24559,\"ĠOd\":24560,\"ĠTechnologies\":24561,\"åīį\":24562,\"ĠCarter\":24563,\".findAll\":24564,\"Nome\":24565,\"Ben\":24566,\"ĠUsage\":24567,\"ĠPicture\":24568,\"Ġbadly\":24569,\"_panel\":24570,\"Ġpatent\":24571,\"ĠProtocol\":24572,\"lotte\":24573,\"ĉplayer\":24574,\"jections\":24575,\"Ġdou\":24576,\"_release\":24577,\"urniture\":24578,\"_tax\":24579,\"ĠFields\":24580,\".dataset\":24581,\"_master\":24582,\"CLUDE\":24583,\"ĠPharm\":24584,\"bst\":24585,\"Ġoperational\":24586,\".cell\":24587,\"Ġidentifying\":24588,\"Ġjwt\":24589,\"tuple\":24590,\"ĠTC\":24591,\"ĠCro\":24592,\"ixmap\":24593,\"-components\":24594,\"general\":24595,\"Ġoz\":24596,\"_De\":24597,\"_double\":24598,\"ĠToo\":24599,\".ViewGroup\":24600,\"gate\":24601,\"dings\":24602,\"photos\":24603,\"Ġgrande\":24604,\"ollect\":24605,\"_lin\":24606,\"Ġawful\":24607,\"filters\":24608,\"Ġalternate\":24609,\"esp\":24610,\"Ġcompress\":24611,\"eo\":24612,\"ĠScale\":24613,\"Ġindirect\":24614,\"Ġinvoice\":24615,\"ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ\":24616,\"Starting\":24617,\"ĠPlayers\":24618,\"iele\":24619,\".then\":24620,\"Ord\":24621,\"ĠTuple\":24622,\"Ġbout\":24623,\"ĠStatistics\":24624,\"Preview\":24625,\"Ġpuzzle\":24626,\"ĠWidth\":24627,\"STATE\":24628,\"Ġoverlay\":24629,\"ĉon\":24630,\"Ġinfr\":24631,\"Ġsmallest\":24632,\"locked\":24633,\"ÑĤÐ¾\":24634,\"ssl\":24635,\"Ġdeemed\":24636,\"Ġsco\":24637,\"reck\":24638,\"ĠjButton\":24639,\"Ġmissions\":24640,\"ç§°\":24641,\".SelectedIndex\":24642,\"TABLE\":24643,\"Sept\":24644,\"Ġacknowledge\":24645,\"Ġstrtotime\":24646,\"ĠTell\":24647,\"ĠDak\":24648,\"Ġaluminum\":24649,\"Ġfence\":24650,\"ĠStars\":24651,\"CONFIG\":24652,\"Ġretrofit\":24653,\"Ġemphasis\":24654,\"/header\":24655,\"ĠSomething\":24656,\"inished\":24657,\"='\\\".$\":24658,\"ĠValidators\":24659,\"Ġpolar\":24660,\"sections\":24661,\".aspx\":24662,\"Ġaspir\":24663,\".Mock\":24664,\"CodeGen\":24665,\"Ġpeut\":24666,\"Ġaccepting\":24667,\"Ġbacking\":24668,\"Picture\":24669,\"/ap\":24670,\"ÐµÐ³\":24671,\"_SEC\":24672,\"-use\":24673,\"annotation\":24674,\"Ġcognitive\":24675,\"Ġgrip\":24676,\"hour\":24677,\"ĠLegal\":24678,\"Ġepic\":24679,\".toolStrip\":24680,\".notify\":24681,\".Last\":24682,\"ORIZ\":24683,\"Middleware\":24684,\"criptions\":24685,\"lash\":24686,\"_FOUND\":24687,\"ĠLiverpool\":24688,\"Ġ{}\\\",\":24689,\"Install\":24690,\"Ġnit\":24691,\"Ġfigured\":24692,\"[len\":24693,\".Win\":24694,\".platform\":24695,\"Ġgambling\":24696,\"(dt\":24697,\"avery\":24698,\"ĉinclude\":24699,\"Whether\":24700,\"Routing\":24701,\"Ġtherap\":24702,\"Remote\":24703,\"ĠLoss\":24704,\"yll\":24705,\"Ġapproached\":24706,\"ĠVehicle\":24707,\"ĠAlpha\":24708,\"ĠvocÃª\":24709,\"answers\":24710,\"NSDictionary\":24711,\"consider\":24712,\"unused\":24713,\"ĠFan\":24714,\"orable\":24715,\"fre\":24716,\"ĠDISCLAIM\":24717,\"ĠActor\":24718,\".]\":24719,\"toHave\":24720,\".userId\":24721,\"Ġspeeds\":24722,\"eway\":24723,\"Ġrecurs\":24724,\"ĠÐ³\":24725,\"_priv\":24726,\"!âĢĿĊĊ\":24727,\"Choice\":24728,\"Ġsettle\":24729,\"Ġplanes\":24730,\"'},\":24731,\"Tom\":24732,\"ITER\":24733,\"!\\\"Ċ\":24734,\"å»\":24735,\"achelor\":24736,\"Ġseparation\":24737,\"Ġdal\":24738,\"adj\":24739,\"Ġregisters\":24740,\"riz\":24741,\"ĠNotice\":24742,\"Ġlu\":24743,\"Ġcourage\":24744,\"Ġaxes\":24745,\"cellent\":24746,\".async\":24747,\"Ġcompatibility\":24748,\"ç«\":24749,\"Ġ!ĊĊ\":24750,\"ĉtitle\":24751,\"YLE\":24752,\"ĉmessage\":24753,\"UUID\":24754,\"OLDER\":24755,\"ĠHH\":24756,\"ĠStyleSheet\":24757,\"Ġaccessed\":24758,\".validation\":24759,\"tasks\":24760,\"Ġpollution\":24761,\".canvas\":24762,\"Ġingredient\":24763,\"ĠCabin\":24764,\"Ah\":24765,\"oldown\":24766,\"ĠNOI\":24767,\"ĠÃĹ\":24768,\"[f\":24769,\"educ\":24770,\"yalty\":24771,\"(not\":24772,\"_State\":24773,\"amen\":24774,\"Ġdao\":24775,\"udad\":24776,\"ellers\":24777,\"}&\":24778,\"licity\":24779,\"_WINDOW\":24780,\"Ġtatto\":24781,\"valor\":24782,\".Range\":24783,\"Ġreferenced\":24784,\"ĠReserve\":24785,\"Money\":24786,\"SCRIPT\":24787,\"/product\":24788,\"choices\":24789,\"Ġtin\":24790,\"ãĤĵ\":24791,\"Ġseparator\":24792,\"Ġpkg\":24793,\"ammed\":24794,\"ĠMAT\":24795,\"!!ĊĊ\":24796,\"Ġraid\":24797,\"Ġmotivation\":24798,\"ĠXP\":24799,\"ĠBackground\":24800,\"ĠQuaternion\":24801,\".defineProperty\":24802,\"iker\":24803,\"ĉparent\":24804,\"ĠOriginally\":24805,\"antage\":24806,\"ĠHans\":24807,\"Ġtimeline\":24808,\".cur\":24809,\"opic\":24810,\"ĠSequ\":24811,\"must\":24812,\"ĠCoal\":24813,\"Ġformatter\":24814,\"_RGB\":24815,\"Ġ_(\\\"\":24816,\"'}),Ċ\":24817,\"Ġ=================\":24818,\"ĠFUNCTION\":24819,\"Ġlng\":24820,\"icates\":24821,\"live\":24822,\"_engine\":24823,\"Ġtowns\":24824,\"'))ĊĊ\":24825,\"ĠPK\":24826,\"(api\":24827,\"ĉscanf\":24828,\"packet\":24829,\".phone\":24830,\"áĢ\":24831,\"ĠAndy\":24832,\"_NAMES\":24833,\"PLY\":24834,\"Ġmins\":24835,\"imi\":24836,\"Ġbrick\":24837,\"Ġblade\":24838,\".stdout\":24839,\"}`;Ċ\":24840,\"Shift\":24841,\"ĉsb\":24842,\"ĠChecks\":24843,\"Ġphenomenon\":24844,\"Avatar\":24845,\"Ġministry\":24846,\"rose\":24847,\"ĉFile\":24848,\"Ġtitled\":24849,\"(LOG\":24850,\"Ġgan\":24851,\"design\":24852,\"(),čĊ\":24853,\"Ġbones\":24854,\"stm\":24855,\"ÅĽÄĩ\":24856,\"ĠInputStream\":24857,\"Ġvolunt\":24858,\"ĠSerializable\":24859,\"Ġfighter\":24860,\"ĠDrag\":24861,\"Twitter\":24862,\"Ġsubsid\":24863,\"ç¼\":24864,\"Ġforums\":24865,\".loading\":24866,\"logged\":24867,\"_this\":24868,\"Ġterrain\":24869,\"Ġirre\":24870,\"ĠIng\":24871,\"ĠCN\":24872,\"_objects\":24873,\".uid\":24874,\"Ġconsciousness\":24875,\"TINGS\":24876,\"ĠGall\":24877,\"Ġportray\":24878,\"ĠDeveloper\":24879,\"Ġparticipant\":24880,\"Ġ\\\";čĊ\":24881,\"/model\":24882,\"ĠOperations\":24883,\"^\\\\\":24884,\"ĠLater\":24885,\"Ġraises\":24886,\"-none\":24887,\".meta\":24888,\"='.$\":24889,\"Finished\":24890,\"Ġreplacing\":24891,\"Ġsampling\":24892,\"ĠJen\":24893,\"\\\"There\":24894,\"REAL\":24895,\"ALE\":24896,\"ìĬ¤\":24897,\"Orders\":24898,\"_parameter\":24899,\"ĠOlympic\":24900,\"ĠtrÃ¨s\":24901,\"Ġarena\":24902,\"iol\":24903,\";?>\":24904,\"Ġimpacts\":24905,\"ĠWS\":24906,\":get\":24907,\"Ġflights\":24908,\"ĠRussell\":24909,\"camera\":24910,\"Fn\":24911,\"sigma\":24912,\"Ġforcing\":24913,\"Ġlocals\":24914,\"Ġdeparture\":24915,\"Ġcelebration\":24916,\"ĠSay\":24917,\"ï¼Ĵ\":24918,\"ĠHills\":24919,\".hasOwnProperty\":24920,\"Ġtypings\":24921,\".API\":24922,\"Ġdonation\":24923,\"OperationException\":24924,\".Activity\":24925,\"cplusplus\":24926,\"ĠCharlie\":24927,\"Ġimported\":24928,\"Ġdann\":24929,\"Ġoccasions\":24930,\"Ġimplementing\":24931,\"Ġpurple\":24932,\".dialog\":24933,\"SQLException\":24934,\"erno\":24935,\"Ġwars\":24936,\"Ġpaste\":24937,\"Ġdecreased\":24938,\"Ġharsh\":24939,\"Ġelabor\":24940,\"inputs\":24941,\"ĠViews\":24942,\"ĠerrorMessage\":24943,\"_mul\":24944,\"ĉwrite\":24945,\"ĠCop\":24946,\"ĠAnnual\":24947,\"(button\":24948,\"Ġvida\":24949,\"bars\":24950,\"ĠHarvard\":24951,\"ĉexpect\":24952,\"Ġindexes\":24953,\"Ġdocumentary\":24954,\"Ġflesh\":24955,\"ORLD\":24956,\"ĠDelta\":24957,\"MAND\":24958,\"Brush\":24959,\"-column\":24960,\"Ġdevelopments\":24961,\"methodVisitor\":24962,\"slice\":24963,\"ĠPDO\":24964,\"Ġinvesting\":24965,\"irable\":24966,\"Ġxmlns\":24967,\"ï¼Ľ\":24968,\"arta\":24969,\"Ġtheories\":24970,\"_city\":24971,\"Ġ$__\":24972,\"Creating\":24973,\"(pr\":24974,\"Dropdown\":24975,\"ismatch\":24976,\"ĠNET\":24977,\"'])){Ċ\":24978,\"ĠValues\":24979,\"ĠSEO\":24980,\"ĠSTAT\":24981,\"Ġecosystem\":24982,\"Ġtempt\":24983,\"Ġ\\\\\\\\\":24984,\"Ġ//{Ċ\":24985,\"ĠChristopher\":24986,\"ĠKentucky\":24987,\"ĠHttpServletResponse\":24988,\"Ġhybrid\":24989,\"yon\":24990,\"Ġfeeding\":24991,\"ĠExtra\":24992,\"Norm\":24993,\"ITCH\":24994,\"ĠSean\":24995,\"ĠUpload\":24996,\"mun\":24997,\"pur\":24998,\"Ġpersistent\":24999,\"ĠIDC\":25000,\"ĠPerform\":25001,\".merge\":25002,\"_room\":25003,\"Meanwhile\":25004,\"!='\":25005,\"ĠWel\":25006,\"ArgsConstructor\":25007,\".Database\":25008,\"Ġcounting\":25009,\"()*\":25010,\"ĶåĽŀ\":25011,\"ĠTOP\":25012,\"mill\":25013,\"ĠDT\":25014,\"IGNED\":25015,\"ĠKB\":25016,\"Ġcomply\":25017,\"South\":25018,\"_collection\":25019,\"Chapter\":25020,\"Ġexplaining\":25021,\"_AM\":25022,\"_ts\":25023,\"cards\":25024,\"Ġquel\":25025,\"Ġpole\":25026,\"Ġtouchdown\":25027,\"ĠOthers\":25028,\"Ġpeers\":25029,\"ĠTypeError\":25030,\"Ġsixth\":25031,\"Ġcheer\":25032,\"Ġdispute\":25033,\"usc\":25034,\")],\":25035,\"thumb\":25036,\"Ġhiding\":25037,\"ĠSIG\":25038,\"likes\":25039,\"ĠPAGE\":25040,\".Reflection\":25041,\"Ġheadquarters\":25042,\"TING\":25043,\"ĠGhost\":25044,\"MLE\":25045,\"$Ċ\":25046,\"Ġcontrary\":25047,\"extend\":25048,\"']).\":25049,\"FFECT\":25050,\"ĠPinterest\":25051,\"Ãºmero\":25052,\"ricane\":25053,\"ĉsession\":25054,\"Ġcrystal\":25055,\"-Control\":25056,\"overnment\":25057,\"ograf\":25058,\"-action\":25059,\"volume\":25060,\"ften\":25061,\"Ġuncon\":25062,\"Ġanimate\":25063,\"Ġlease\":25064,\"scr\":25065,\"Ġrefuse\":25066,\"ãĢĭ\":25067,\"ftp\":25068,\"information\":25069,\"Ġevaluated\":25070,\"Ġinjection\":25071,\"Ġjack\":25072,\"Ġworkshop\":25073,\"æ³¨\":25074,\"PTH\":25075,\"ĠTs\":25076,\"offer\":25077,\"ĉos\":25078,\"Ġkingdom\":25079,\"Missing\":25080,\"Ġlawmakers\":25081,\"extField\":25082,\"Ġsinging\":25083,\"abi\":25084,\"/client\":25085,\".media\":25086,\"ATEGORY\":25087,\"Signature\":25088,\"%',Ċ\":25089,\"ĠFuck\":25090,\"][:\":25091,\"Ġsensors\":25092,\"/com\":25093,\"ĠPrimary\":25094,\".SQL\":25095,\"_program\":25096,\"Ġpills\":25097,\"Ġintegral\":25098,\"Ġfleet\":25099,\"Ġdropping\":25100,\".sl\":25101,\"Been\":25102,\"Ġpets\":25103,\"Ġadvised\":25104,\"Ġdragon\":25105,\"_EDIT\":25106,\"(im\":25107,\"FER\":25108,\"ĠDrug\":25109,\"(random\":25110,\"Ġcompression\":25111,\"oust\":25112,\"[%\":25113,\"Ġbuyer\":25114,\"hop\":25115,\"Roles\":25116,\"manage\":25117,\"Ġpainful\":25118,\"ĠBranch\":25119,\"-modal\":25120,\"enant\":25121,\"ĠMesh\":25122,\"/font\":25123,\"ĠGraham\":25124,\"Ġâĺ\":25125,\"Ġnc\":25126,\"ĠFrancis\":25127,\"Ġspecification\":25128,\"Ġdamages\":25129,\"-config\":25130,\"Ġtheoret\":25131,\"secure\":25132,\"_multi\":25133,\"aceutical\":25134,\"Ġdemanding\":25135,\"enne\":25136,\"ISTS\":25137,\"()));ĊĊ\":25138,\"Reason\":25139,\"Recent\":25140,\"phase\":25141,\"Ġpsy\":25142,\"_MAN\":25143,\"Ġvolunteer\":25144,\"å¿\":25145,\"istributed\":25146,\"lio\":25147,\"Ġproductivity\":25148,\"_comm\":25149,\"Spring\":25150,\"nis\":25151,\".weight\":25152,\"ĠCancer\":25153,\"Alloc\":25154,\"ĠTweet\":25155,\"Ġseparately\":25156,\"ĉcheck\":25157,\"_properties\":25158,\".Unit\":25159,\"_CLK\":25160,\"Ġgt\":25161,\"Ġ();ĊĊ\":25162,\"Ġhandy\":25163,\"ĠThompson\":25164,\"Ġunnecessary\":25165,\"ĠReader\":25166,\"GN\":25167,\"=request\":25168,\"ĠUtility\":25169,\".Repository\":25170,\"ĠAx\":25171,\"hydr\":25172,\"ieu\":25173,\"Ġthy\":25174,\"Ġlt\":25175,\"_mail\":25176,\"ä¿®æĶ¹\":25177,\"ailand\":25178,\"ĠPhilip\":25179,\"Ġbitter\":25180,\"Ġbetting\":25181,\"Ġtimed\":25182,\"ocks\":25183,\"'a\":25184,\"Ġalgorithms\":25185,\"Ġreinterpret\":25186,\"Ġtoss\":25187,\"rogen\":25188,\"Ġhoped\":25189,\"(selected\":25190,\"Ġventure\":25191,\"TEX\":25192,\"ĠLeave\":25193,\".Substring\":25194,\"Ġgrateful\":25195,\"uka\":25196,\"ĠConsumer\":25197,\"Ġaggreg\":25198,\"Circle\":25199,\"à¸ģ\":25200,\"_blocks\":25201,\"Ġlegally\":25202,\"Ġ\\\"|\":25203,\"ãĥĥ\":25204,\".board\":25205,\".Ab\":25206,\"Functions\":25207,\"recipe\":25208,\"èĩ\":25209,\"ĠOxford\":25210,\"Ġwholes\":25211,\".Build\":25212,\"_changed\":25213,\"hai\":25214,\"Ġdepartments\":25215,\"Imp\":25216,\"Ġcoalition\":25217,\"INFRINGEMENT\":25218,\"Ġempower\":25219,\"itches\":25220,\"North\":25221,\"Ġinflamm\":25222,\"ONSE\":25223,\"Ġmissile\":25224,\"ĠRaj\":25225,\"ĠIssue\":25226,\"Ġatoi\":25227,\"caled\":25228,\".Controllers\":25229,\"ĠWolf\":25230,\"Ġcrushers\":25231,\"á»ĩ\":25232,\".Auth\":25233,\".addAttribute\":25234,\"his\":25235,\"Ġboots\":25236,\".clean\":25237,\"camp\":25238,\"Ġtenant\":25239,\"Ġtune\":25240,\"Ġ{}'.\":25241,\"Ġworkout\":25242,\"Repo\":25243,\"Ġpartially\":25244,\"MISSION\":25245,\"jamin\":25246,\"ĠSB\":25247,\"Ġdetermination\":25248,\"Ġ'');Ċ\":25249,\"ĠBeng\":25250,\"Ġvos\":25251,\"Ġinhab\":25252,\"/lang\":25253,\"sburgh\":25254,\"Executor\":25255,\"hone\":25256,\"ĠChallenge\":25257,\"_links\":25258,\".Level\":25259,\"Ġunderground\":25260,\"-code\":25261,\"Ġoptimization\":25262,\"logging\":25263,\"_dest\":25264,\"Ġsnake\":25265,\"Ġchemicals\":25266,\"_IMPORTED\":25267,\"adoop\":25268,\"ĠTHAT\":25269,\"managed\":25270,\"Ġreduces\":25271,\"ĠREAL\":25272,\"ĠGuy\":25273,\"_GENERIC\":25274,\"/********************************\":25275,\".amount\":25276,\"Ġdere\":25277,\"getTime\":25278,\"Ġpant\":25279,\"anonymous\":25280,\"Ġharmony\":25281,\"ĠAlan\":25282,\"Ġscenarios\":25283,\"Ġdirt\":25284,\"htags\":25285,\"Mc\":25286,\"Shell\":25287,\"rin\":25288,\"{čĊčĊ\":25289,\".pow\":25290,\"ĉclient\":25291,\"Ġconspiracy\":25292,\"Ġadmission\":25293,\"ĠRegional\":25294,\"ĠViewController\":25295,\"ĠPhilippines\":25296,\"Ġdepos\":25297,\"Ġpap\":25298,\"ĠPad\":25299,\"Paul\":25300,\".ComboBox\":25301,\"Ġtutor\":25302,\"ĠRecipe\":25303,\"writing\":25304,\"Ġcontributor\":25305,\"OTH\":25306,\"Small\":25307,\"VI\":25308,\"Ġhacer\":25309,\"equ\":25310,\"ĠExamples\":25311,\"human\":25312,\".messages\":25313,\"ĉtyp\":25314,\"Ġ(čĊ\":25315,\"ĠSSL\":25316,\"LEN\":25317,\"ĠRomney\":25318,\"(grid\":25319,\"ĉmin\":25320,\"Ġ>ĊĊ\":25321,\"Ġfruits\":25322,\"Ġvoter\":25323,\"Inline\":25324,\"pane\":25325,\"ĠCollections\":25326,\"charset\":25327,\"Ġspam\":25328,\"zb\":25329,\"itemap\":25330,\"Ġsucceeded\":25331,\"_COL\":25332,\"Ġelapsed\":25333,\"imeter\":25334,\"Ġrecovered\":25335,\"Tensor\":25336,\"hattan\":25337,\".setup\":25338,\"isto\":25339,\"(head\":25340,\"ĠSIZE\":25341,\"Ġtactics\":25342,\"Ġdistur\":25343,\"Ġpreval\":25344,\"icios\":25345,\"(Value\":25346,\"_cols\":25347,\"ĠFat\":25348,\"Ġseal\":25349,\"Ġsons\":25350,\"Ġensures\":25351,\"Ġpressing\":25352,\"=&\":25353,\"igenous\":25354,\"Ġharassment\":25355,\"_JSON\":25356,\"Ġignor\":25357,\"ynomial\":25358,\"omer\":25359,\"_static\":25360,\"Ġsignificance\":25361,\"Ġcircles\":25362,\"_System\":25363,\"Ġdiscipline\":25364,\"Ġdressed\":25365,\"Ġsphere\":25366,\"Ġclimb\":25367,\"_actions\":25368,\"ĠBab\":25369,\"Ġ'=',\":25370,\"_schema\":25371,\"\\\"use\":25372,\"Ġunders\":25373,\"Ġcups\":25374,\".screen\":25375,\"/new\":25376,\"Ġappearing\":25377,\"TOP\":25378,\"vised\":25379,\"clang\":25380,\"Ġinvestigators\":25381,\"Ġmysterious\":25382,\"Ġpromising\":25383,\"Ġqualify\":25384,\"Ġcave\":25385,\"Ġequip\":25386,\"=x\":25387,\"GT\":25388,\"(link\":25389,\".velocity\":25390,\".erase\":25391,\"oter\":25392,\"++++++++\":25393,\"profit\":25394,\"Ġzones\":25395,\"_uid\":25396,\"-ser\":25397,\"Ġobjectives\":25398,\"Ġmilf\":25399,\"webkit\":25400,\"(match\":25401,\"neh\":25402,\"ĠAssociated\":25403,\"ĠTodo\":25404,\"=d\":25405,\"Cam\":25406,\"Ġvocal\":25407,\"Ġsudo\":25408,\"(EX\":25409,\"Ġtrou\":25410,\"ABC\":25411,\".bean\":25412,\"ĠGround\":25413,\"ĠREST\":25414,\"weets\":25415,\"Ing\":25416,\"imon\":25417,\"_bus\":25418,\"ĠCOLOR\":25419,\"unto\":25420,\"Ġfoss\":25421,\"ĠLinks\":25422,\"Ã¤ng\":25423,\"/forms\":25424,\"prises\":25425,\"Ġachievement\":25426,\"CALL\":25427,\"ÐµÐ»ÑĮ\":25428,\"ĠVerify\":25429,\"_SOURCE\":25430,\"aptcha\":25431,\"IDD\":25432,\"_reference\":25433,\"Gold\":25434,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":25435,\"Receiver\":25436,\"Ġaj\":25437,\"_direction\":25438,\"}]\":25439,\"ĠCompet\":25440,\"Ġbang\":25441,\"ĠCass\":25442,\"-url\":25443,\"techn\":25444,\"ĠJerusalem\":25445,\"longitude\":25446,\"');čĊčĊ\":25447,\"Ġwinners\":25448,\"Tasks\":25449,\"ĠDMA\":25450,\"Ġtooltip\":25451,\"İ·\":25452,\"ĠBra\":25453,\"_duration\":25454,\"cury\":25455,\"parents\":25456,\"----</\":25457,\"Ġpassport\":25458,\"WC\":25459,\"ĠÐ»\":25460,\"cession\":25461,\"ĠYellow\":25462,\"Ġencryption\":25463,\"'ĊĊĊ\":25464,\"Ġlistings\":25465,\"ĠCommunications\":25466,\"._Ċ\":25467,\"Ġ\\\"\\\"\\\"čĊ\":25468,\"Ġfb\":25469,\"Ġstrictly\":25470,\"ĠLiter\":25471,\"ĠEnterprise\":25472,\"_bottom\":25473,\"AKE\":25474,\"ket\":25475,\"Ġtam\":25476,\"Between\":25477,\"_TOP\":25478,\"Disable\":25479,\"Ġfiling\":25480,\"ĠChron\":25481,\"SEQU\":25482,\"Ġ&___\":25483,\"Ġfal\":25484,\"ĠSLOT\":25485,\"Embed\":25486,\"uther\":25487,\"ĠRestaurant\":25488,\"Ġrealistic\":25489,\"!');Ċ\":25490,\"ĠDEAL\":25491,\"ĠPeriod\":25492,\".getX\":25493,\"Ġsehr\":25494,\"\\\"]').\":25495,\"essa\":25496,\"ĉmemcpy\":25497,\"Ġacknowledged\":25498,\"senal\":25499,\"ĠUniversal\":25500,\"Ġ'';ĊĊ\":25501,\"/wiki\":25502,\"ienne\":25503,\"ĠNSArray\":25504,\"Ġacceptance\":25505,\"Ġliver\":25506,\"Ġtooth\":25507,\"Ġaccus\":25508,\"ĉLOG\":25509,\"valu\":25510,\"åĢ¼\":25511,\"Ġsectors\":25512,\"perimental\":25513,\"/class\":25514,\"_go\":25515,\"Michael\":25516,\"olatile\":25517,\"ĠPROF\":25518,\"Ġcomprom\":25519,\"specialchars\":25520,\"Ġâľ\":25521,\"ĠisEqualToString\":25522,\"ĠHung\":25523,\".asList\":25524,\"/go\":25525,\">>(\":25526,\"ĠKir\":25527,\"Ġintros\":25528,\"Ġsketch\":25529,\"Ġskilled\":25530,\"Ġimmer\":25531,\"Ġadequate\":25532,\"_rep\":25533,\"(header\":25534,\"_like\":25535,\"Ġperceived\":25536,\"ssh\":25537,\"Ġassuming\":25538,\"Ġff\":25539,\"_uuid\":25540,\"ulas\":25541,\"Ġdemocratic\":25542,\".entities\":25543,\"Series\":25544,\"aphore\":25545,\"Ġnewer\":25546,\"}(\":25547,\"SEC\":25548,\"airo\":25549,\"Ġcommod\":25550,\"Ġprivilege\":25551,\"Ġdeux\":25552,\"ĠHop\":25553,\".'/\":25554,\"ctic\":25555,\".';Ċ\":25556,\"<?=\":25557,\"ĠUT\":25558,\"eties\":25559,\"_CONTENT\":25560,\".release\":25561,\".dismiss\":25562,\"Ġfc\":25563,\"ounge\":25564,\"pwd\":25565,\"_prev\":25566,\"Mgr\":25567,\"ĠBufferedReader\":25568,\"written\":25569,\"ĠEb\":25570,\"Ġ)ĊĊĊ\":25571,\"uito\":25572,\"Ġcontroversy\":25573,\"Ġdisposed\":25574,\"Ġfoto\":25575,\"ListView\":25576,\"/create\":25577,\"ĠCOL\":25578,\"communic\":25579,\"Ġfreely\":25580,\"unal\":25581,\"ovid\":25582,\"ĉtr\":25583,\"pagination\":25584,\"ĠCommons\":25585,\"Elem\":25586,\"ĠREM\":25587,\"Ġcorrelation\":25588,\"()+\\\"\":25589,\"ĠHide\":25590,\"anding\":25591,\"(vec\":25592,\"itos\":25593,\"ĠCult\":25594,\"Ġnutrition\":25595,\"vals\":25596,\"Ġdetermining\":25597,\"lord\":25598,\"Ġscandal\":25599,\"Ġshallow\":25600,\"odash\":25601,\"_serial\":25602,\"ĠSlo\":25603,\"Ġdispon\":25604,\"Plot\":25605,\"ickle\":25606,\"Ġell\":25607,\"Ġunemployment\":25608,\"FM\":25609,\"rons\":25610,\"lÄ±\":25611,\"Mo\":25612,\"Exist\":25613,\"IDS\":25614,\"Cho\":25615,\"ĠKeyboard\":25616,\".parser\":25617,\".GetObject\":25618,\"Ġspells\":25619,\"Ġgesch\":25620,\"Ġmagnitude\":25621,\"_SL\":25622,\"isdiction\":25623,\"Ġ');Ċ\":25624,\"ilians\":25625,\"Ġshar\":25626,\"ĠProb\":25627,\"uiltin\":25628,\"Ġtunnel\":25629,\">C\":25630,\"ĠWarren\":25631,\"Ġoptimizer\":25632,\"ĠSERVICES\":25633,\"_oper\":25634,\"getAttribute\":25635,\"ĠMcK\":25636,\"_self\":25637,\".rs\":25638,\"\\\")ĊĊĊ\":25639,\"GetComponent\":25640,\"erce\":25641,\"Ġtous\":25642,\"units\":25643,\"']);čĊ\":25644,\"Zoom\":25645,\"/E\":25646,\"Ġobsc\":25647,\"Ġfastest\":25648,\"online\":25649,\"Ġpeaceful\":25650,\"ffen\":25651,\"Ġcargo\":25652,\"ĉpr\":25653,\"Ġseeks\":25654,\"zu\":25655,\"Trim\":25656,\"Ġward\":25657,\"Ġverd\":25658,\"Ġblogs\":25659,\".exceptions\":25660,\"ĠPremium\":25661,\"ĠNetherlands\":25662,\"Safe\":25663,\"Finish\":25664,\"ĠAlbum\":25665,\"_ACC\":25666,\"=this\":25667,\"virtual\":25668,\"]>\":25669,\"_LABEL\":25670,\"ĠNich\":25671,\"_win\":25672,\"ĠAaron\":25673,\"WP\":25674,\";$\":25675,\"aims\":25676,\"ĠImageView\":25677,\"Ġendless\":25678,\"ERA\":25679,\"_DISABLE\":25680,\"Ġcancelled\":25681,\"-us\":25682,\"Ġinspection\":25683,\"emin\":25684,\"ĠGrey\":25685,\"-open\":25686,\"Ġiterations\":25687,\".owner\":25688,\"Ġkeras\":25689,\".Password\":25690,\"ĠRy\":25691,\"ĠINS\":25692,\"Air\":25693,\"ĠSeveral\":25694,\".TabStop\":25695,\"INGLE\":25696,\"ĠHair\":25697,\"ĠCanvas\":25698,\"AAAA\":25699,\"Ġflaw\":25700,\"cedes\":25701,\".Report\":25702,\"íĬ\":25703,\"ĠTips\":25704,\"criptors\":25705,\".transaction\":25706,\".Spring\":25707,\"Ġviewer\":25708,\"Ġinsights\":25709,\"è¾ĵ\":25710,\"ordion\":25711,\"UINT\":25712,\"seek\":25713,\"ĠAuf\":25714,\"ìŀĲ\":25715,\"Ġstrain\":25716,\"Tooltip\":25717,\"Ġdz\":25718,\"ignal\":25719,\"adt\":25720,\"Ġuc\":25721,\"finite\":25722,\"Ġnm\":25723,\".cmd\":25724,\"ĠMySql\":25725,\"[data\":25726,\".jackson\":25727,\".tree\":25728,\"RequestParam\":25729,\"_agent\":25730,\"\\\")]čĊ\":25731,\"Ġassass\":25732,\"(Constants\":25733,\":ss\":25734,\"ĠMAN\":25735,\"+-+-\":25736,\"ĠBottom\":25737,\"prints\":25738,\"ĠSame\":25739,\"@Autowired\":25740,\"swap\":25741,\"iciÃ³n\":25742,\"Ġprotesters\":25743,\"Ġhoney\":25744,\"ĠVeter\":25745,\"(Calendar\":25746,\"-ad\":25747,\"ĠBrooklyn\":25748,\"Life\":25749,\"_VAR\":25750,\"zech\":25751,\"ĠCALL\":25752,\"_CAST\":25753,\"ĠElection\":25754,\"Ġthickness\":25755,\"Very\":25756,\"_INTEGER\":25757,\"-dev\":25758,\"))))\":25759,\"apat\":25760,\"oooo\":25761,\"demo\":25762,\"ĠparseFloat\":25763,\"ĠRather\":25764,\"STIT\":25765,\"maker\":25766,\"[current\":25767,\"chrono\":25768,\"Ġchrist\":25769,\"ãģª\":25770,\"ĠDetail\":25771,\"Æ°á»\":25772,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":25773,\"Ġsul\":25774,\"idency\":25775,\"Que\":25776,\"Ġelegant\":25777,\"apons\":25778,\"Ġdishes\":25779,\"Ġintegers\":25780,\"(read\":25781,\"findViewById\":25782,\"ĠAmount\":25783,\"ĠSkip\":25784,\"Ġhabits\":25785,\"*)(\":25786,\"Ġmonsters\":25787,\"MAC\":25788,\":end\":25789,\"Ġfrank\":25790,\"Assembly\":25791,\"Ġdfs\":25792,\"Ġneut\":25793,\"_TYPES\":25794,\"equal\":25795,\"loyd\":25796,\"(uri\":25797,\"Ġchi\":25798,\"Ġdefendant\":25799,\"Ġconflicts\":25800,\"Ġvil\":25801,\"-js\":25802,\"ĠPeace\":25803,\"Ġmutable\":25804,\")sender\":25805,\"ĠFocus\":25806,\"å»º\":25807,\"Ġappreciated\":25808,\"sleep\":25809,\"ĠRED\":25810,\"Culture\":25811,\"Ġdesigners\":25812,\"_generator\":25813,\"codes\":25814,\"/ex\":25815,\".GetValue\":25816,\"umbled\":25817,\".scalajs\":25818,\"peror\":25819,\"Ġveterans\":25820,\"Ġ})čĊ\":25821,\"Ġunfortunately\":25822,\"_CREATE\":25823,\"Mass\":25824,\"ĠCLAIM\":25825,\"ĠMeet\":25826,\"_support\":25827,\"Bank\":25828,\"().Ċ\":25829,\"Dark\":25830,\"_LOW\":25831,\"ĠMining\":25832,\"ĠOwner\":25833,\"iera\":25834,\"Cliente\":25835,\"Ġencouraging\":25836,\">S\":25837,\"Ġboyfriend\":25838,\"ĠHalf\":25839,\"ĠACC\":25840,\"Aff\":25841,\"_ar\":25842,\"-life\":25843,\"cx\":25844,\".JButton\":25845,\"izado\":25846,\".zero\":25847,\".openqa\":25848,\"oton\":25849,\".textContent\":25850,\"Ġtoll\":25851,\"atie\":25852,\"Ġballot\":25853,\"-number\":25854,\".Exception\":25855,\"ĉparams\":25856,\"circle\":25857,\"-map\":25858,\"Ġnap\":25859,\"ĠRobot\":25860,\"ĠIch\":25861,\"registration\":25862,\"Amazon\":25863,\"rollment\":25864,\"(exp\":25865,\"Ġtanks\":25866,\"ĠGordon\":25867,\"Ġmachinery\":25868,\"Ġbaseline\":25869,\"æĭ\":25870,\"Ø©\":25871,\"ĠConvention\":25872,\"ĉconfig\":25873,\"ookies\":25874,\"mult\":25875,\"Records\":25876,\"ĠEST\":25877,\"Ġgarbage\":25878,\"Ġconform\":25879,\"idal\":25880,\"Ġbarg\":25881,\"Ġsurvived\":25882,\"Ġinvestigations\":25883,\".containsKey\":25884,\"--------------------------------------------------------------------------Ċ\":25885,\"ortion\":25886,\"Ġhorr\":25887,\"_http\":25888,\"Ġmant\":25889,\"];čĊčĊ\":25890,\"binary\":25891,\"empl\":25892,\"Ġinquiry\":25893,\"ĠMeanwhile\":25894,\"Ġcollecting\":25895,\".EntityFramework\":25896,\"\\\",ĊĊ\":25897,\"ĠPic\":25898,\"@Inject\":25899,\"ickness\":25900,\"ĠBinding\":25901,\"Ġcontrolling\":25902,\"reverse\":25903,\"Ġchairs\":25904,\"sembled\":25905,\"(add\":25906,\"Disabled\":25907,\"anas\":25908,\".translate\":25909,\"-----------Ċ\":25910,\"Ġreflected\":25911,\"\\\"]ĊĊ\":25912,\"External\":25913,\"Arrow\":25914,\"Singleton\":25915,\"%x\":25916,\"ĠÅ\":25917,\"Ġancest\":25918,\"ĠOrleans\":25919,\"ĉcmd\":25920,\"Ġprohibited\":25921,\"ithmetic\":25922,\"(channel\":25923,\"_css\":25924,\"Forward\":25925,\".socket\":25926,\"Ġluc\":25927,\"âĨ\":25928,\"ĠFirefox\":25929,\"ĠMovies\":25930,\")_\":25931,\".ends\":25932,\"(shape\":25933,\"Ġdealt\":25934,\"Ġsaves\":25935,\"Ġglory\":25936,\"Ġmejor\":25937,\"Ġbreathing\":25938,\"Ġeller\":25939,\"getData\":25940,\"Ġangles\":25941,\"Ġtoolbar\":25942,\"Ġspacing\":25943,\"IPS\":25944,\"Ġfloors\":25945,\"_ACTIVE\":25946,\"Ġshuffle\":25947,\"/shared\":25948,\"ĠEle\":25949,\"edish\":25950,\"Ġwebcam\":25951,\".expect\":25952,\"iloc\":25953,\"ĠIncludes\":25954,\"Ġtweeted\":25955,\"Ġ:)\":25956,\"ĠEssay\":25957,\"Fix\":25958,\"-between\":25959,\"_web\":25960,\".conv\":25961,\"Ġracism\":25962,\"Ġreflects\":25963,\"umm\":25964,\"Ð¸ÑĤÐµ\":25965,\"_footer\":25966,\"/docs\":25967,\"ĠPour\":25968,\"NgModule\":25969,\".initialize\":25970,\"patterns\":25971,\"_In\":25972,\"ĠAbb\":25973,\"*čĊ\":25974,\"Ġsentiment\":25975,\"buff\":25976,\"_counts\":25977,\"Ġreuse\":25978,\"chunk\":25979,\"Ġimposed\":25980,\"PrimaryKey\":25981,\"Foreground\":25982,\"Ġconsumed\":25983,\"?!\":25984,\"Ġdick\":25985,\"Ġchron\":25986,\"ĠFern\":25987,\"Ġresponsive\":25988,\"Ġinsect\":25989,\"iculty\":25990,\"Ġrw\":25991,\"Ġalike\":25992,\"Ġsubset\":25993,\"ĠCookies\":25994,\"ĠPair\":25995,\"Ġtier\":25996,\"IFO\":25997,\"avour\":25998,\"ĠQU\":25999,\",sizeof\":26000,\"Ġmerged\":26001,\"mv\":26002,\"itol\":26003,\"ylon\":26004,\"Ġjumped\":26005,\".role\":26006,\"ensaje\":26007,\"Rules\":26008,\"Ġbrowse\":26009,\"Animator\":26010,\"Ġyoga\":26011,\"Ġvariants\":26012,\"Ġcourtesy\":26013,\"uran\":26014,\"pbs\":26015,\"elseif\":26016,\"Alt\":26017,\"ĠLane\":26018,\"CLK\":26019,\"IMARY\":26020,\"_PROPERTY\":26021,\"ï¼Ĳ\":26022,\"Ġchan\":26023,\"Ġgradually\":26024,\"Ġshake\":26025,\"Ġblonde\":26026,\"...\\\");Ċ\":26027,\"-sex\":26028,\"Ġgameplay\":26029,\"acies\":26030,\".refresh\":26031,\"USB\":26032,\"ĠPlot\":26033,\"Was\":26034,\"issippi\":26035,\"ĠTensor\":26036,\"Ġcryptocurrency\":26037,\"Ġdifficulties\":26038,\"Deleted\":26039,\"Without\":26040,\"_append\":26041,\"_ver\":26042,\"\\\"))čĊ\":26043,\"Ġhonestly\":26044,\"Ġpivot\":26045,\"Ġtemps\":26046,\"_ps\":26047,\"ĠUnlike\":26048,\"[:-\":26049,\"VS\":26050,\"_inf\":26051,\"Ġjunior\":26052,\"Ġanimations\":26053,\"Ġfilepath\":26054,\"?</\":26055,\"[\\\\\":26056,\"Ġoperates\":26057,\"_red\":26058,\"ĠBootstrap\":26059,\"lead\":26060,\"effect\":26061,\"Â½\":26062,\"ĠSter\":26063,\"ĠBuck\":26064,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":26065,\"Ġdeputy\":26066,\"Than\":26067,\"áº¿\":26068,\"ONENT\":26069,\"ĠHeat\":26070,\"etheless\":26071,\"]){Ċ\":26072,\"Ġkostenlos\":26073,\"();//\":26074,\"Ġdeployed\":26075,\">{{$\":26076,\"Ġunicode\":26077,\"places\":26078,\"ĠCoffee\":26079,\".SE\":26080,\"ĠPAR\":26081,\"(txt\":26082,\"gebra\":26083,\"Ġfires\":26084,\"MainWindow\":26085,\"medium\":26086,\"Ġ(âĢľ\":26087,\"Ġlg\":26088,\"Ġcmp\":26089,\"/base\":26090,\"_layers\":26091,\"_entries\":26092,\"Ġadminister\":26093,\"ĠSUCH\":26094,\"BP\":26095,\"ĠScottish\":26096,\"ĉčĊĉčĊ\":26097,\"guard\":26098,\"ĠStrong\":26099,\"Insn\":26100,\"ĠCAP\":26101,\"asury\":26102,\"ĠSEE\":26103,\"Clock\":26104,\"erie\":26105,\"\\\\models\":26106,\"Ġ$$\":26107,\"ĠCab\":26108,\"Ġwurde\":26109,\"Ġsoldier\":26110,\"Ġclips\":26111,\"Ġarrangement\":26112,\"ĠWonder\":26113,\"ĠHorn\":26114,\"Ġscared\":26115,\"Ġcure\":26116,\"mkdir\":26117,\"Ġaligned\":26118,\"ĠPink\":26119,\"Ġlanded\":26120,\"Dimension\":26121,\"ScrollPane\":26122,\".chat\":26123,\".With\":26124,\"ĠTrain\":26125,\"].Ċ\":26126,\"Ġthirty\":26127,\"Ġdurable\":26128,\"Ġld\":26129,\"Ġlateinit\":26130,\"Ġcharts\":26131,\"Ġinsult\":26132,\".Fatal\":26133,\"_ct\":26134,\"Ġmasks\":26135,\"CLUDED\":26136,\"President\":26137,\"Ġcolours\":26138,\"gments\":26139,\".attributes\":26140,\"ĠFlex\":26141,\"ĠClock\":26142,\"ÃŃcul\":26143,\"imen\":26144,\"JO\":26145,\"ĠRegex\":26146,\"_LINK\":26147,\"Ġcouch\":26148,\"ĠINPUT\":26149,\"Ġbeating\":26150,\"business\":26151,\"preced\":26152,\".unit\":26153,\"ĠFel\":26154,\"Never\":26155,\"ospel\":26156,\".startswith\":26157,\"ĠEPA\":26158,\".only\":26159,\"Ġpreventing\":26160,\"yer\":26161,\"ColumnName\":26162,\"Ġelevation\":26163,\"flu\":26164,\"icycle\":26165,\"Ġoffline\":26166,\"Toolbar\":26167,\"Ġcompeting\":26168,\")].\":26169,\"Ġmog\":26170,\"ĠisValid\":26171,\"Ask\":26172,\"_av\":26173,\"_lat\":26174,\"ANC\":26175,\"ĠJoh\":26176,\"kers\":26177,\"Ġguards\":26178,\"Ġchains\":26179,\"ĠSimpleDateFormat\":26180,\".static\":26181,\"Ġvessel\":26182,\"Ġmud\":26183,\"Ġstabil\":26184,\"Ġstret\":26185,\"gm\":26186,\"amation\":26187,\"çľ\":26188,\"-with\":26189,\"Ġros\":26190,\"_PA\":26191,\"Ġresultado\":26192,\"Ġconfidential\":26193,\"ĠTokyo\":26194,\"ĉusing\":26195,\"ĠMathf\":26196,\"ombine\":26197,\"ĠESPN\":26198,\"Ġdealers\":26199,\"Ġdismissed\":26200,\"TRY\":26201,\"Ġteens\":26202,\"records\":26203,\"Ġwings\":26204,\"gallery\":26205,\"accounts\":26206,\"_LIB\":26207,\"Ġjacket\":26208,\"ĠNSObject\":26209,\"Ġstones\":26210,\"ĠDelivery\":26211,\"ĠDiet\":26212,\"/watch\":26213,\"Ġtoilet\":26214,\"ĠGuest\":26215,\".day\":26216,\"Ġintval\":26217,\"Visit\":26218,\"Ġinvestigated\":26219,\"Ġpentru\":26220,\"ĠTheatre\":26221,\"andidates\":26222,\"Lang\":26223,\"ĠServ\":26224,\"Ġcontrollers\":26225,\"ĠsetTitle\":26226,\"NP\":26227,\"amy\":26228,\"flat\":26229,\"(ui\":26230,\"_document\":26231,\"èĥ½\":26232,\"ĠCoin\":26233,\"ĠAdams\":26234,\"ptic\":26235,\"Ġproductive\":26236,\"Ġaccomplished\":26237,\"čĊčĊčĊčĊ\":26238,\"Ġdeferred\":26239,\"ientes\":26240,\"Ġsinc\":26241,\"olars\":26242,\"Rightarrow\":26243,\"Ġvariations\":26244,\"(offset\":26245,\".LayoutInflater\":26246,\"Ġsuspend\":26247,\"Ġprevention\":26248,\"_private\":26249,\"_js\":26250,\"âĺħ\":26251,\"Ġwieder\":26252,\"atum\":26253,\"ĴĮ\":26254,\"Ġappearances\":26255,\".Document\":26256,\"Ġvalidates\":26257,\"calendar\":26258,\"}\\\";Ċ\":26259,\".demo\":26260,\"conut\":26261,\"Ġcorrection\":26262,\"ĠDeal\":26263,\"Ġbatteries\":26264,\".duration\":26265,\",\\\\\":26266,\"_marker\":26267,\"multi\":26268,\"Ġhalt\":26269,\"Ġcms\":26270,\"Ġshaped\":26271,\"Bro\":26272,\"reduce\":26273,\"Ġ####\":26274,\"CTOR\":26275,\"ĠBenef\":26276,\"Ġiconic\":26277,\"Ġpiano\":26278,\"Ġeffectiveness\":26279,\"|.Ċ\":26280,\"Ġajax\":26281,\"Ġvolumes\":26282,\"à¸¡\":26283,\"Ġcljs\":26284,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":26285,\"aths\":26286,\"raits\":26287,\"å¤§\":26288,\"Ñĸ\":26289,\"_mult\":26290,\"Ġfascinating\":26291,\"Average\":26292,\"ĠprÃ©\":26293,\"ĠChairman\":26294,\".findElement\":26295,\"_pin\":26296,\"Ġcomparing\":26297,\"Ġdarkness\":26298,\"-Fi\":26299,\"-server\":26300,\"Ġselecting\":26301,\"sterdam\":26302,\"ĠParts\":26303,\"FORMATION\":26304,\"Ġnoting\":26305,\"Ġpile\":26306,\"ogs\":26307,\"Ġpalette\":26308,\"_do\":26309,\"itize\":26310,\"()(\":26311,\"Ġdefining\":26312,\"Ġremainder\":26313,\"Units\":26314,\"_TASK\":26315,\"HttpClient\":26316,\"Social\":26317,\"Ġfundra\":26318,\"NR\":26319,\"chest\":26320,\"Currency\":26321,\".adapter\":26322,\"Ġdop\":26323,\"unting\":26324,\"ANGUAGE\":26325,\"\\\"He\":26326,\"ĉindex\":26327,\"_package\":26328,\".Icon\":26329,\"Ġrepet\":26330,\"mass\":26331,\"=\\\".$\":26332,\"ĠSud\":26333,\"Ġlid\":26334,\"province\":26335,\"ìľ\":26336,\"GPIO\":26337,\"Ðļ\":26338,\"ĠMySQL\":26339,\"Ġdocs\":26340,\"ĠGA\":26341,\"Ġipsum\":26342,\"Kernel\":26343,\"Ġaccepts\":26344,\"Ġfitting\":26345,\"Ġcuando\":26346,\"Ġduplic\":26347,\"ĠBrother\":26348,\"ĠKle\":26349,\"nums\":26350,\"Ġmorph\":26351,\"Ġ########\":26352,\"ĠCGPoint\":26353,\"<unsigned\":26354,\"ä¾ĭ\":26355,\"ĠDuke\":26356,\".setBounds\":26357,\"qs\":26358,\"oric\":26359,\"jer\":26360,\"Ġregarded\":26361,\"HttpRequest\":26362,\"Ġbonds\":26363,\"Ġthoroughly\":26364,\"encent\":26365,\"Ġhighlighted\":26366,\"Ġacres\":26367,\"Ġworkplace\":26368,\"ĠLux\":26369,\"Ġquot\":26370,\".inflate\":26371,\"Ġdocumented\":26372,\"Ġaddiction\":26373,\"Ġmutation\":26374,\".city\":26375,\"Ġbottles\":26376,\"ĠRepository\":26377,\"onn\":26378,\"errno\":26379,\"ARIABLE\":26380,\"åº¦\":26381,\"_BEGIN\":26382,\"glas\":26383,\"'})Ċ\":26384,\"ĠMassage\":26385,\"ĠWhit\":26386,\"regex\":26387,\"WA\":26388,\"Ġoutlet\":26389,\"-head\":26390,\"Ġexpired\":26391,\"ĠThai\":26392,\"/include\":26393,\"gradient\":26394,\"scanf\":26395,\"Ġseam\":26396,\"wal\":26397,\"ĉbuf\":26398,\"Bearer\":26399,\"Ġprecious\":26400,\"ifacts\":26401,\"coord\":26402,\"Ġexploration\":26403,\".getY\":26404,\"(handle\":26405,\"Topic\":26406,\"ĠVent\":26407,\"rhs\":26408,\"------Ċ\":26409,\"ĠBright\":26410,\"Ġguild\":26411,\"mother\":26412,\"storm\":26413,\"Ġmunicipal\":26414,\"Ġink\":26415,\".TYPE\":26416,\"wl\":26417,\"...</\":26418,\"_DEV\":26419,\"=\\\"./\":26420,\"_book\":26421,\"thy\":26422,\"itzerland\":26423,\"oples\":26424,\"traction\":26425,\"ĠCameron\":26426,\"ĠAndre\":26427,\".results\":26428,\"Ġchrome\":26429,\"Ġsecured\":26430,\"Ġsurfaces\":26431,\")<\":26432,\"Ġtobacco\":26433,\"ĉsprintf\":26434,\"Ġescal\":26435,\"Ġstderr\":26436,\"ĠMelbourne\":26437,\"Ġdistricts\":26438,\"Ġmatt\":26439,\"ohen\":26440,\"ĠdataGridViewCellStyle\":26441,\"(Model\":26442,\"Ġsensitivity\":26443,\"KA\":26444,\"transport\":26445,\".getDate\":26446,\"Ġsubtle\":26447,\"UGIN\":26448,\".mouse\":26449,\"Ġalternatives\":26450,\"Ġelle\":26451,\"coration\":26452,\"reation\":26453,\"æĽ\":26454,\"_NORMAL\":26455,\"DisplayName\":26456,\"Ġfancy\":26457,\"ISED\":26458,\"MOD\":26459,\".ReadOnly\":26460,\"ĠUb\":26461,\"ĠCu\":26462,\"icol\":26463,\"ĠNelson\":26464,\"ĠCOR\":26465,\"anza\":26466,\"ĠSpark\":26467,\"Ġ\\\"\\\\\\\\\":26468,\"--ĊĊ\":26469,\"woocommerce\":26470,\"Ġremembered\":26471,\"verity\":26472,\"ĠExtension\":26473,\"ĠPD\":26474,\"Ġsearches\":26475,\".so\":26476,\"ĠFooter\":26477,\"Ġ='\":26478,\"ĠWARNING\":26479,\"-lo\":26480,\"ĉtable\":26481,\"Ġdrawer\":26482,\"picture\":26483,\"ĠFantasy\":26484,\"story\":26485,\"ĠmÃªme\":26486,\"#ĊĊ\":26487,\"_slice\":26488,\"oltage\":26489,\"Har\":26490,\"/y\":26491,\"ĠER\":26492,\"die\":26493,\"ĠPOS\":26494,\".actions\":26495,\"(Main\":26496,\"ewart\":26497,\"apeut\":26498,\"ĠSTE\":26499,\"idding\":26500,\".readLine\":26501,\"Ġsearched\":26502,\"Wed\":26503,\".figure\":26504,\"ughters\":26505,\"().__\":26506,\"Ġorbit\":26507,\"shipping\":26508,\"Ġfriendship\":26509,\"ĠShift\":26510,\"-or\":26511,\"quo\":26512,\"WHERE\":26513,\"ĠEsp\":26514,\".forward\":26515,\"office\":26516,\"ĠiÃ§\":26517,\"ĠChelsea\":26518,\"ItemSelected\":26519,\"achers\":26520,\"deleted\":26521,\"rous\":26522,\"Ġ\\\"-\\\"\":26523,\"ĠGran\":26524,\"ĠðŁĺ\":26525,\"-power\":26526,\"etta\":26527,\"Ġreminder\":26528,\"ensors\":26529,\"ĠAllow\":26530,\"ÄĻd\":26531,\"_team\":26532,\"Ġcrown\":26533,\"ticket\":26534,\"ĠcollectionView\":26535,\"lace\":26536,\"Ġfixes\":26537,\"ĠHub\":26538,\"catalog\":26539,\"ĠIdentity\":26540,\"Ġexcessive\":26541,\"ĠNavigator\":26542,\"_BR\":26543,\"-play\":26544,\"ĠCampaign\":26545,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":26546,\"asive\":26547,\"Ġwc\":26548,\"ĠBeijing\":26549,\"/www\":26550,\"Ġmakeup\":26551,\"Ġdistances\":26552,\"Ġsatisfy\":26553,\"COND\":26554,\"Ġwound\":26555,\"()]\":26556,\"Ġviolations\":26557,\"Ġstays\":26558,\"/#\":26559,\"iline\":26560,\"\\\\Exception\":26561,\"ĠMotion\":26562,\"Ġheal\":26563,\"_plan\":26564,\"rases\":26565,\"(main\":26566,\"Apple\":26567,\"Ġcompleting\":26568,\"Ġdetermines\":26569,\"Scan\":26570,\"Ġsteal\":26571,\"ĠSoc\":26572,\"Analysis\":26573,\"Ġfavorites\":26574,\"Ġcampo\":26575,\"oner\":26576,\"ĠFlight\":26577,\"...ĊĊĊĊ\":26578,\")))));Ċ\":26579,\"-count\":26580,\"Ġpw\":26581,\"AsString\":26582,\"Ġsexually\":26583,\"FirstName\":26584,\"ĠEscort\":26585,\"calc\":26586,\"ĠWikipedia\":26587,\"Ġdocker\":26588,\"ĠSweet\":26589,\"'id\":26590,\"Into\":26591,\"ĠHunt\":26592,\".equalTo\":26593,\"Ġlaboratory\":26594,\"ĠBUSINESS\":26595,\"FileDialog\":26596,\"TreeNode\":26597,\".Enc\":26598,\"ĠMaximum\":26599,\"Ġmothers\":26600,\"æµ\":26601,\"Ġfract\":26602,\".startsWith\":26603,\"Ġhardcore\":26604,\".ob\":26605,\"å§ĭ\":26606,\"Ġ></\":26607,\"_ro\":26608,\"((*\":26609,\"????\":26610,\"_vertex\":26611,\"keit\":26612,\"ĠHalloween\":26613,\"TI\":26614,\"ĠVa\":26615,\"_car\":26616,\"=\\\"{{$\":26617,\"Ġrandomly\":26618,\"Ð°Ð½Ð¸Ðµ\":26619,\"Ġshocked\":26620,\"ĠPokÃ©mon\":26621,\"signal\":26622,\"ĠSDK\":26623,\"middleware\":26624,\"Ġtreating\":26625,\"Ġburned\":26626,\"Department\":26627,\"ĠSpect\":26628,\"Ġcliente\":26629,\"ĠReddit\":26630,\"_avg\":26631,\"Ġinstalling\":26632,\"_alpha\":26633,\",data\":26634,\"ĠsetId\":26635,\"ĠListView\":26636,\"(property\":26637,\"Ġcrossing\":26638,\"ĠObj\":26639,\"ĠWard\":26640,\"ĠRedirectTo\":26641,\"ĠPresent\":26642,\"Ġdraws\":26643,\"cheduled\":26644,\"Ġlegislative\":26645,\"Ġtwist\":26646,\"ĠStra\":26647,\"ĠAFP\":26648,\"ĠChap\":26649,\"-pr\":26650,\":CGRect\":26651,\"Ġces\":26652,\"Routes\":26653,\"nof\":26654,\"Ġvisa\":26655,\"ĠTCP\":26656,\"ĠEVEN\":26657,\"ivial\":26658,\"ĠLetter\":26659,\"RAY\":26660,\"Ġimplode\":26661,\".eq\":26662,\"='+\":26663,\"Ġmotivated\":26664,\".visible\":26665,\".short\":26666,\">manual\":26667,\"ĠTechnical\":26668,\"Ġcorporation\":26669,\"ĠHW\":26670,\"anka\":26671,\"TAIL\":26672,\"istas\":26673,\"Ġperforms\":26674,\"ĠBehavior\":26675,\".For\":26676,\"_ORDER\":26677,\"ĠKick\":26678,\"Ġcallbacks\":26679,\"_dr\":26680,\"uego\":26681,\"hub\":26682,\"ufficient\":26683,\"sky\":26684,\"Ġbp\":26685,\"htable\":26686,\"ĠONLY\":26687,\"ĠAUTHORS\":26688,\".Argument\":26689,\"\\\"};Ċ\":26690,\"ĠThunder\":26691,\"ĠKom\":26692,\".Should\":26693,\"AUTH\":26694,\"ahu\":26695,\"_payment\":26696,\"Ġstarter\":26697,\"ìĦľ\":26698,\"ìļ©\":26699,\"Blog\":26700,\".patch\":26701,\"Ġgoverned\":26702,\"assy\":26703,\"-found\":26704,\"Ġtheater\":26705,\"ĠFontWeight\":26706,\"ĠBatman\":26707,\"\\\"If\":26708,\".Random\":26709,\"_delta\":26710,\"ĠCE\":26711,\"Authenticated\":26712,\"Ġdrone\":26713,\"Ġcous\":26714,\"radius\":26715,\"Mer\":26716,\"(None\":26717,\"ĠNJ\":26718,\"_headers\":26719,\"Ġamer\":26720,\"pytest\":26721,\"ĠActions\":26722,\"ĉĉĉĠĠĠĠ\":26723,\"Ġett\":26724,\"Ġholy\":26725,\"Ġuncomfort\":26726,\"ĠNin\":26727,\"ĠDecimal\":26728,\"ĠMessages\":26729,\".sender\":26730,\"]])Ċ\":26731,\"Ġembrace\":26732,\"Though\":26733,\"/sp\":26734,\"Ġcultures\":26735,\"Ġhighway\":26736,\"tar\":26737,\".fail\":26738,\"_hidden\":26739,\"ĠcomponentDidMount\":26740,\"ĠWright\":26741,\"Ġjag\":26742,\"_il\":26743,\"../../../\":26744,\"igu\":26745,\"Food\":26746,\"Ġace\":26747,\"ĠaÃ±os\":26748,\"USD\":26749,\"Ġmutual\":26750,\"Logic\":26751,\"Ġtemple\":26752,\"Ġbriefly\":26753,\"ĠTrip\":26754,\"classmethod\":26755,\"defaults\":26756,\"Ġchunks\":26757,\",,,,\":26758,\"ĠReason\":26759,\"$id\":26760,\"-ups\":26761,\"Ġdamn\":26762,\"Ġtrucks\":26763,\"Ġunlimited\":26764,\"Ġsculpt\":26765,\"ĠCards\":26766,\"Ġautor\":26767,\"ĠTesting\":26768,\"Ġdiese\":26769,\"shops\":26770,\"ç´\":26771,\"(payload\":26772,\"ĠPATH\":26773,\"ĠMemorial\":26774,\"Ġridiculous\":26775,\"egree\":26776,\"-winning\":26777,\"Ġrehab\":26778,\"Ġsophisticated\":26779,\"wpdb\":26780,\"ĉpath\":26781,\"!\\\";Ċ\":26782,\"_SYS\":26783,\".speed\":26784,\"Ġsoap\":26785,\"suffix\":26786,\"Wrap\":26787,\"Ġenhancement\":26788,\"Ãī\":26789,\"Ãºb\":26790,\"Ġplaylist\":26791,\"Ġmixing\":26792,\"antidad\":26793,\"=\\\"\\\";Ċ\":26794,\"ĠRevision\":26795,\"ĠBeat\":26796,\".inc\":26797,\"-way\":26798,\"encias\":26799,\"ulers\":26800,\"Cat\":26801,\"idel\":26802,\"ĠShip\":26803,\".setColor\":26804,\"Ġthreatening\":26805,\".modules\":26806,\"Ġafterwards\":26807,\"ĠDashboard\":26808,\"ĊĠĊ\":26809,\"Signal\":26810,\"Ġprimer\":26811,\"orneys\":26812,\"iciary\":26813,\"Ġligne\":26814,\"_predict\":26815,\"Ġaest\":26816,\"_https\":26817,\">:\":26818,\"ĠLex\":26819,\"Ġrencontres\":26820,\"egral\":26821,\"scala\":26822,\"_family\":26823,\"ÃŁen\":26824,\"_sym\":26825,\"Ġuncertainty\":26826,\"ĠVALUE\":26827,\"Ġ};čĊčĊ\":26828,\"Ġbroader\":26829,\"Ġhorses\":26830,\"ãģĿ\":26831,\"ĠKal\":26832,\"oba\":26833,\"_INET\":26834,\"ĠKill\":26835,\"jquery\":26836,\"amination\":26837,\"[@\\\"\":26838,\"Ġmuj\":26839,\"###Ċ\":26840,\"FirstOrDefault\":26841,\"thenReturn\":26842,\"Che\":26843,\"/footer\":26844,\"Ġparks\":26845,\"asje\":26846,\"ĠGulf\":26847,\"Ġmodest\":26848,\".Init\":26849,\"ï¼ŁĊĊ\":26850,\"Ġprospects\":26851,\"Ġsvg\":26852,\"Ġåı\":26853,\".Dialog\":26854,\"_NET\":26855,\"Ġ(($\":26856,\"Ġek\":26857,\"ĠWarning\":26858,\"ĠMK\":26859,\"<LM\":26860,\"Ġ'čĊ\":26861,\"iem\":26862,\"hetic\":26863,\"Ġix\":26864,\"think\":26865,\"-shadow\":26866,\"ĠEld\":26867,\"ĠNevada\":26868,\"ĠLeaf\":26869,\"ĠGROUP\":26870,\"Ġpromo\":26871,\"entine\":26872,\"ĉMap\":26873,\"ĠModels\":26874,\"ĠKrist\":26875,\"_kernel\":26876,\"-made\":26877,\"Ġcerr\":26878,\"Assets\":26879,\"ellar\":26880,\"Ġinvoked\":26881,\".vue\":26882,\"Ġcultiv\":26883,\"Closed\":26884,\"Ġgenerates\":26885,\"ffffff\":26886,\"thesize\":26887,\"sqrt\":26888,\"ĠCastle\":26889,\".car\":26890,\"Ġkeen\":26891,\"unda\":26892,\"ĠCrow\":26893,\"ĠSingh\":26894,\"ython\":26895,\"Ġbeans\":26896,\"larg\":26897,\"æĸĩä»¶\":26898,\"Awesome\":26899,\"uncate\":26900,\"Paths\":26901,\"oji\":26902,\"(curr\":26903,\"CONDS\":26904,\"Ġmim\":26905,\"Ġshoulders\":26906,\"Hard\":26907,\"astes\":26908,\"Ð°ÐµÑĤ\":26909,\"Ġconvince\":26910,\"decess\":26911,\"made\":26912,\"ĠCMD\":26913,\".Im\":26914,\"Ġchaos\":26915,\"ensively\":26916,\"Ġcooling\":26917,\"Ġburied\":26918,\"('@\":26919,\"_Se\":26920,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":26921,\".company\":26922,\".submit\":26923,\"phant\":26924,\"Ġbootstrap\":26925,\"_help\":26926,\"à§\":26927,\".dump\":26928,\"Ġdifer\":26929,\"_mapping\":26930,\"Ġcircular\":26931,\"Ġescorts\":26932,\"Ġbere\":26933,\"Ġgradu\":26934,\"ĠLegend\":26935,\"imedia\":26936,\"ĠBarcelona\":26937,\"Ġbeds\":26938,\"åĪ°\":26939,\"ãĢĬ\":26940,\"_volume\":26941,\"Ġtremendous\":26942,\"Ġscaling\":26943,\"Ġpins\":26944,\"enas\":26945,\"typeparam\":26946,\"Dashboard\":26947,\"renderer\":26948,\"Ġspi\":26949,\"Ġ&$\":26950,\"ĠSkin\":26951,\"almart\":26952,\"Ġhockey\":26953,\"Ġ'\\\".$\":26954,\"Ġerrno\":26955,\"Ġbew\":26956,\"Following\":26957,\".Module\":26958,\"erable\":26959,\"ĠMilitary\":26960,\"ĠRio\":26961,\"_available\":26962,\"ĠSurface\":26963,\"Ġstab\":26964,\"IFIER\":26965,\"ĠLIST\":26966,\"Ġdashboard\":26967,\"Ġclusters\":26968,\".plugin\":26969,\"Ġjou\":26970,\"ĠDecor\":26971,\"Four\":26972,\"Ġdelle\":26973,\"******/Ċ\":26974,\"iaz\":26975,\"inde\":26976,\"ching\":26977,\"ĠgetItem\":26978,\".Address\":26979,\"mented\":26980,\"Americ\":26981,\"Plain\":26982,\"Ġusb\":26983,\"ĠPractice\":26984,\"_ment\":26985,\".blue\":26986,\"Hint\":26987,\"ÑĢÐ°Ð²\":26988,\"Ġconnector\":26989,\"Ġinherited\":26990,\"Ð¸Ð²\":26991,\"Ġintervals\":26992,\"Ġcere\":26993,\"Ġud\":26994,\"Ġincon\":26995,\".Exists\":26996,\"ĠMic\":26997,\"FK\":26998,\"(card\":26999,\".Settings\":27000,\"Ġexhibition\":27001,\"ĠonPressed\":27002,\"Ġrestored\":27003,\"engu\":27004,\".def\":27005,\"Ġrecv\":27006,\".\\\");čĊ\":27007,\"encoder\":27008,\"atherine\":27009,\"(dest\":27010,\"azed\":27011,\"#endregion\":27012,\"sembl\":27013,\",M\":27014,\"oby\":27015,\"ĠÐ¿ÐµÑĢ\":27016,\".Call\":27017,\"Ġattendance\":27018,\"-border\":27019,\"Ġaddressing\":27020,\"Ãªn\":27021,\"ĠLev\":27022,\"Ġbash\":27023,\"bench\":27024,\"Credentials\":27025,\"Spacing\":27026,\"(of\":27027,\"_RESET\":27028,\"iguous\":27029,\"Ġcruel\":27030,\"Ġcrossed\":27031,\"Ġleur\":27032,\"ĠGolf\":27033,\"orrect\":27034,\"Ġpackets\":27035,\"ĠDataSet\":27036,\"Ġpartly\":27037,\"SEQUENTIAL\":27038,\"Ġindication\":27039,\"ĠSalt\":27040,\"acia\":27041,\"Ġ*);Ċ\":27042,\"ĉinfo\":27043,\"ĠViewBag\":27044,\"onz\":27045,\"Ġeditorial\":27046,\"ĠArena\":27047,\"Ġsir\":27048,\"_Static\":27049,\"(socket\":27050,\"su\":27051,\"choose\":27052,\".month\":27053,\".My\":27054,\"Ã©ri\":27055,\";font\":27056,\"does\":27057,\"Ġconverter\":27058,\"Ġsalv\":27059,\"Ġlr\":27060,\"Ġinfluenced\":27061,\"(feature\":27062,\"ĠQueens\":27063,\"lett\":27064,\"_MON\":27065,\"&amp\":27066,\"TouchableOpacity\":27067,\"OFF\":27068,\"Ġmetabol\":27069,\"(iter\":27070,\"Ġvitamin\":27071,\"ĠINDIRECT\":27072,\"autom\":27073,\"_public\":27074,\"Ġadjustment\":27075,\"Ġspecialized\":27076,\"windows\":27077,\".addAll\":27078,\"Ġaccordingly\":27079,\"ĠJOptionPane\":27080,\"Ġcellspacing\":27081,\"Ġquad\":27082,\"Ġcreep\":27083,\"Ġoutlets\":27084,\"}`)Ċ\":27085,\"Ġpriest\":27086,\"_THREAD\":27087,\"ĠMarx\":27088,\"ĠByVal\":27089,\"Ġcual\":27090,\"éĿ¢\":27091,\"Ġtemporarily\":27092,\"Ann\":27093,\"keleton\":27094,\"å¥\":27095,\"ĠLOC\":27096,\"auer\":27097,\"derive\":27098,\"Ġbehaviors\":27099,\"asename\":27100,\"ĠCentury\":27101,\"Ġhorrible\":27102,\"MESS\":27103,\"_List\":27104,\"wei\":27105,\"Pat\":27106,\"ĠChoice\":27107,\"_FROM\":27108,\"ĉline\":27109,\".invoke\":27110,\".Bottom\":27111,\"Ġnowhere\":27112,\".\\\"ĊĊĊĊ\":27113,\"_export\":27114,\"Ġstruggled\":27115,\".Appearance\":27116,\"ĠJButton\":27117,\"ĠJeremy\":27118,\"([[\":27119,\"Ġkicked\":27120,\"marshal\":27121,\"staff\":27122,\"esity\":27123,\"Ġquiz\":27124,\"_effect\":27125,\"Ġ}));ĊĊ\":27126,\"mel\":27127,\"banner\":27128,\"ĠPIN\":27129,\"Ġinvention\":27130,\"Ġconsolid\":27131,\"Ġops\":27132,\"ĠBetween\":27133,\"jack\":27134,\"ernational\":27135,\"Ġsacrifice\":27136,\"agation\":27137,\"ĠJoy\":27138,\"Ġamendment\":27139,\"ĠSold\":27140,\"Ġprisoners\":27141,\"Ð°Ð½Ð½Ñĭ\":27142,\"Documents\":27143,\")])Ċ\":27144,\"usted\":27145,\"ĠLinearLayout\":27146,\"oso\":27147,\"_EM\":27148,\".self\":27149,\".Middle\":27150,\")//\":27151,\"Ġ\\\\'\":27152,\"Ġfucked\":27153,\"ĠMurray\":27154,\"Ġprofound\":27155,\"_ELEMENT\":27156,\"ulta\":27157,\"ilers\":27158,\"portfolio\":27159,\"June\":27160,\"tcp\":27161,\"modified\":27162,\"ĠTrace\":27163,\"ĠKel\":27164,\"alyzer\":27165,\")=>\":27166,\"ĠRepair\":27167,\"_BE\":27168,\"Brand\":27169,\"uart\":27170,\"preview\":27171,\"Ġinitiatives\":27172,\"running\":27173,\"bang\":27174,\"ĉupdate\":27175,\"ĠCoach\":27176,\"Rich\":27177,\"Ġyoutube\":27178,\"Ġritual\":27179,\"appa\":27180,\"ĠRobinson\":27181,\"precision\":27182,\"////////////////////////////////////////////////////////////////////////////\":27183,\"=[]Ċ\":27184,\"Ġcelebrated\":27185,\"OTO\":27186,\"Ġinclusion\":27187,\"JP\":27188,\"';čĊčĊ\":27189,\"Ġnotable\":27190,\"(_.\":27191,\"Managed\":27192,\"Ġguides\":27193,\"&nbsp\":27194,\"atedRoute\":27195,\"ĠAdjust\":27196,\"Ġcolored\":27197,\"_scores\":27198,\"ĠTesla\":27199,\"_progress\":27200,\".inst\":27201,\"['_\":27202,\".flags\":27203,\"Ġfclose\":27204,\"_OPER\":27205,\"Å¼y\":27206,\"_note\":27207,\"Ġtransgender\":27208,\"åķ\":27209,\"RIPT\":27210,\"Ġabsent\":27211,\"Ġamet\":27212,\"Ġoperand\":27213,\"ë©\":27214,\"Ġhood\":27215,\"toLowerCase\":27216,\"avo\":27217,\"ĠCircuit\":27218,\"ĠLind\":27219,\"--}}Ċ\":27220,\"=m\":27221,\"Ġsuppress\":27222,\"ĠMAP\":27223,\"iang\":27224,\"-admin\":27225,\"Ġsidebar\":27226,\"ĠBu\":27227,\"ĠHex\":27228,\",F\":27229,\"ĠSignal\":27230,\"Ġtransparency\":27231,\"ĠFederation\":27232,\"/V\":27233,\"Req\":27234,\"Ġpulse\":27235,\"Ġtends\":27236,\"Numbers\":27237,\"%'\":27238,\"Ġdeport\":27239,\"datas\":27240,\"_UINT\":27241,\"_tra\":27242,\"oko\":27243,\"Ġ\\\"?\":27244,\"compet\":27245,\"solete\":27246,\"undry\":27247,\"Ġoverlap\":27248,\"}`,Ċ\":27249,\".ly\":27250,\"_summary\":27251,\"ĠLost\":27252,\".Center\":27253,\"Ġdisability\":27254,\".Serialization\":27255,\"Ġgeom\":27256,\"Ġ?:\":27257,\"ĠWo\":27258,\"Ġshipped\":27259,\"Ĥæķ°\":27260,\"Ġugly\":27261,\"Ġexcitement\":27262,\"Ġexterior\":27263,\"Ġcheckout\":27264,\"Ġkur\":27265,\",D\":27266,\"ĠAlaska\":27267,\"Ġsynthetic\":27268,\"ĠBudget\":27269,\"ĠSubscribe\":27270,\"Ġ&Ċ\":27271,\"ÈĻi\":27272,\"ĠYu\":27273,\"ĉquery\":27274,\"}.Ċ\":27275,\"Ġtraged\":27276,\"assen\":27277,\"Ġaccommodation\":27278,\"Ġphysician\":27279,\"Ġrenamed\":27280,\"Ġtidak\":27281,\"zÄħ\":27282,\"Ġminus\":27283,\"nych\":27284,\"_EXCEPTION\":27285,\"threads\":27286,\"Ġtire\":27287,\"_created\":27288,\"ensure\":27289,\"Ġworthy\":27290,\"Ġexcuse\":27291,\"Ġcloth\":27292,\".parentNode\":27293,\"/platform\":27294,\"ĠUFC\":27295,\"ĠGtk\":27296,\"unny\":27297,\"Ġgibt\":27298,\"keley\":27299,\"hum\":27300,\"(tx\":27301,\"ĉdev\":27302,\"Ġoutfit\":27303,\"doors\":27304,\"Ġfon\":27305,\"icut\":27306,\"volatile\":27307,\"Ġhomosex\":27308,\"Maximum\":27309,\"Ġexpend\":27310,\"Ġ});ĊĊĊ\":27311,\"Eq\":27312,\"onders\":27313,\"department\":27314,\"ĠPhysics\":27315,\"\\\"});Ċ\":27316,\"Ġparad\":27317,\".Str\":27318,\"Ġsele\":27319,\"IFIED\":27320,\"Ġdelivers\":27321,\"ivan\":27322,\"Ġresponsibilities\":27323,\"Ġadvocates\":27324,\"èµ\":27325,\"ĠRID\":27326,\".parameters\":27327,\"Metrics\":27328,\"ronics\":27329,\"ĠUITableViewCell\":27330,\"Absolute\":27331,\"ipse\":27332,\"ylum\":27333,\"MLElement\":27334,\"_VALID\":27335,\"<title\":27336,\"Dlg\":27337,\"paces\":27338,\"Ġsyndrome\":27339,\"beans\":27340,\"_database\":27341,\"ozilla\":27342,\"ĠMeg\":27343,\"DBG\":27344,\"Ġlub\":27345,\"BagConstraints\":27346,\"abad\":27347,\"Ġprojected\":27348,\"_BYTE\":27349,\".SizeF\":27350,\"street\":27351,\"ĊĊĊĊĊĊĊĊĊĊ\":27352,\"ĠLOSS\":27353,\"Ġdirectors\":27354,\"/news\":27355,\"Ġnursing\":27356,\"ĠDone\":27357,\".HTTP\":27358,\"discount\":27359,\"ĠRot\":27360,\"ToMany\":27361,\"Ġenabling\":27362,\"Ġaussi\":27363,\"osta\":27364,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":27365,\"è½½\":27366,\"Ġhelicopt\":27367,\"ĠInside\":27368,\"ä¿¡æģ¯\":27369,\"isper\":27370,\"ĠAllah\":27371,\"ARCHAR\":27372,\"Ġrolls\":27373,\"Compare\":27374,\"XP\":27375,\"IndexOf\":27376,\"SUM\":27377,\"Ġassured\":27378,\"ĠPhysical\":27379,\"Endpoint\":27380,\".Global\":27381,\".detail\":27382,\"Ġtheft\":27383,\".jupiter\":27384,\"Ġhumor\":27385,\".Render\":27386,\"Alex\":27387,\".cap\":27388,\"Ġbuffers\":27389,\"Ġdispose\":27390,\"tion\":27391,\".present\":27392,\"zel\":27393,\",P\":27394,\"Ġdesperate\":27395,\".getColumn\":27396,\"Ġtwin\":27397,\"ìĸ\":27398,\".can\":27399,\"Ġflee\":27400,\"ĠIranian\":27401,\"Ġsticky\":27402,\"ĠUTC\":27403,\"LT\":27404,\"////////////////////////////////////////////////\":27405,\"Ġlicensing\":27406,\"_POINT\":27407,\"ĠMaps\":27408,\"Ġlol\":27409,\"=models\":27410,\"-tab\":27411,\"ĠNash\":27412,\"_logger\":27413,\"torch\":27414,\"ĠCONSEQUENTIAL\":27415,\"NotEmpty\":27416,\"/react\":27417,\"Ġpf\":27418,\"Ġassertion\":27419,\"Ġsubsequently\":27420,\"_can\":27421,\"Ġpandemic\":27422,\"ogue\":27423,\"\\\"+Ċ\":27424,\"_ent\":27425,\"_Param\":27426,\".ĊĊĊĊĊĊĊĊ\":27427,\"Research\":27428,\"Capture\":27429,\"Ġbeloved\":27430,\"dem\":27431,\"Ġextracted\":27432,\"Ġfights\":27433,\"ERC\":27434,\"(auth\":27435,\"positions\":27436,\"Ġreversed\":27437,\"(stack\":27438,\"Ġ_)\":27439,\"utoff\":27440,\"_flow\":27441,\"çĤ¹\":27442,\"(Game\":27443,\"Ġexcluded\":27444,\"ĠCSV\":27445,\"cg\":27446,\"ĠTitan\":27447,\"pause\":27448,\"Ġcerca\":27449,\"Ġdumpster\":27450,\"Less\":27451,\"Ġkotlinx\":27452,\"asterxml\":27453,\"Ġpointers\":27454,\"Ġflows\":27455,\"ĠTun\":27456,\"ĠMainActivity\":27457,\"Ġdiscret\":27458,\"Ġcombinations\":27459,\"visit\":27460,\"_bind\":27461,\"ooting\":27462,\"dater\":27463,\"_lookup\":27464,\".nio\":27465,\"Ġsweat\":27466,\"ĠRd\":27467,\"Ġscientist\":27468,\"ĠPixel\":27469,\"@NgModule\":27470,\"Playing\":27471,\"Ġunfold\":27472,\"Translate\":27473,\"ĠLawrence\":27474,\"ĠFIXME\":27475,\"Bill\":27476,\"ĠRIGHT\":27477,\"Ġwherever\":27478,\"Ġook\":27479,\"vidence\":27480,\"Ġ]];\":27481,\"ĠSkill\":27482,\"unistd\":27483,\"ĠðŁĻĤ\":27484,\"Ġfemales\":27485,\"--)Ċ\":27486,\"İ·åıĸ\":27487,\"ĠFred\":27488,\"Overall\":27489,\"ÙĤ\":27490,\"Ġessence\":27491,\"Ġthereby\":27492,\"Ġwounded\":27493,\"ĠDOWN\":27494,\"lesson\":27495,\"texture\":27496,\"Round\":27497,\"Ġautomated\":27498,\"ĠÐ¡\":27499,\"ĠUpdates\":27500,\"Ġshade\":27501,\"publish\":27502,\"ĠGear\":27503,\"=lambda\":27504,\"Ġlever\":27505,\")+\\\"\":27506,\"hill\":27507,\"Ġradar\":27508,\"rying\":27509,\"Ġ\\\").\":27510,\"filled\":27511,\"Ġlineup\":27512,\"Ġdl\":27513,\"Ġworkspace\":27514,\"Vo\":27515,\"_dt\":27516,\"ë²\":27517,\"_Item\":27518,\"NSURL\":27519,\".verify\":27520,\"ĠHawaii\":27521,\"God\":27522,\"March\":27523,\"Ġ[âĢ¦]\":27524,\"Ġpelo\":27525,\"urious\":27526,\"ĠPittsburgh\":27527,\".It\":27528,\"Clean\":27529,\">\\\\<^\":27530,\"Ġios\":27531,\"sound\":27532,\"\\\"];\":27533,\"Ġfreed\":27534,\"rottle\":27535,\"ĠLower\":27536,\"[count\":27537,\"åĿ\":27538,\"Ġpale\":27539,\"ĠWayne\":27540,\"earth\":27541,\"_categories\":27542,\"UCK\":27543,\".metadata\":27544,\"Ġsummon\":27545,\"HOME\":27546,\"Ð¾Ð»ÑĮÐ·\":27547,\"Ġmanufactured\":27548,\"Ġdock\":27549,\"Ġcompetitors\":27550,\"_MODEL\":27551,\"okia\":27552,\"ĠHey\":27553,\"Î¿\":27554,\"Ġbackward\":27555,\"ĠPOSS\":27556,\"ropa\":27557,\"Ġcri\":27558,\"_OBJ\":27559,\"Transport\":27560,\"-high\":27561,\"Ġerotik\":27562,\"_slot\":27563,\"Ġartic\":27564,\"_framework\":27565,\"-serif\":27566,\"ĠSqlDbType\":27567,\"')(\":27568,\"+\\\"/\":27569,\"Ġwore\":27570,\"Sil\":27571,\"Ġstoring\":27572,\"ĠPhase\":27573,\"uant\":27574,\"Ġbump\":27575,\"inho\":27576,\"Ġdign\":27577,\"Ġbacks\":27578,\"qq\":27579,\"(hash\":27580,\"Ġgeo\":27581,\"Ġtender\":27582,\"Logo\":27583,\"!)Ċ\":27584,\"ĠMX\":27585,\"ĠArthur\":27586,\"essoa\":27587,\"_Ch\":27588,\"Ġbedrooms\":27589,\"=\\\"#\\\"><\":27590,\"Ġthroat\":27591,\"insic\":27592,\".integer\":27593,\"Ġprimitive\":27594,\"Truthy\":27595,\"Ġfacilitate\":27596,\"Ġcreativity\":27597,\"ĠDNS\":27598,\"Ġgra\":27599,\"uez\":27600,\"Ġcountless\":27601,\"ĠPoland\":27602,\"'M\":27603,\"ĠDist\":27604,\"Ġvest\":27605,\"Ġcertification\":27606,\"á»ĳ\":27607,\"held\":27608,\"extensions\":27609,\"(static\":27610,\"Ġgrades\":27611,\"ĠUber\":27612,\"ãģŁ\":27613,\"Ġ[])Ċ\":27614,\"datos\":27615,\"ĠgetData\":27616,\"ĠCharg\":27617,\"ĠBS\":27618,\".microsoft\":27619,\".video\":27620,\".direction\":27621,\"->{'\":27622,\"lua\":27623,\"apest\":27624,\"Ġboiler\":27625,\"erek\":27626,\"Ġdecides\":27627,\".jar\":27628,\"ISC\":27629,\"ĠWords\":27630,\"(CON\":27631,\"EMPLATE\":27632,\"reeze\":27633,\"shots\":27634,\"apps\":27635,\"unted\":27636,\".setName\":27637,\"::<\":27638,\"-bold\":27639,\"ê²\":27640,\"å¯Ĩ\":27641,\"Longrightarrow\":27642,\"Ġunfair\":27643,\"Ġearning\":27644,\"Ġshelf\":27645,\"UREMENT\":27646,\"Ġidle\":27647,\"_MENU\":27648,\".Custom\":27649,\"AGER\":27650,\"-\\\"\":27651,\"_switch\":27652,\"because\":27653,\")view\":27654,\"mare\":27655,\"_condition\":27656,\"ĠStarting\":27657,\"Mvc\":27658,\"(pre\":27659,\"dump\":27660,\"_LOCK\":27661,\"atetime\":27662,\".callback\":27663,\"ĠCer\":27664,\"opol\":27665,\"ibrary\":27666,\"Ġreservation\":27667,\"ĉĉĉĉĉĉĉĊ\":27668,\"lector\":27669,\"graduate\":27670,\"Ġgenerous\":27671,\"Ġion\":27672,\"ricao\":27673,\"mq\":27674,\"_complete\":27675,\"(cursor\":27676,\"ĠFormControl\":27677,\":center\":27678,\"Ġsubstitute\":27679,\"ĠPlanning\":27680,\"Ġpension\":27681,\"Ġrecommendation\":27682,\"ĠTags\":27683,\"Ġgef\":27684,\"Ġalbums\":27685,\"Ġwashing\":27686,\"roc\":27687,\"Ġtrains\":27688,\"atings\":27689,\"Ġexponent\":27690,\"ackbar\":27691,\"-ln\":27692,\"Ã¡g\":27693,\".DataAnnotations\":27694,\"ĠEIF\":27695,\"ĠMalaysia\":27696,\"ĉPORT\":27697,\"onus\":27698,\"Ġclever\":27699,\"Ġpeu\":27700,\">ĊĊĊĊ\":27701,\"ĠArguments\":27702,\"Ġdebugging\":27703,\"(right\":27704,\"'D\":27705,\"compute\":27706,\"Ġfinest\":27707,\"ORAGE\":27708,\"Ġspectacular\":27709,\"phrase\":27710,\"Ġindia\":27711,\"Ġlegendary\":27712,\"birth\":27713,\"Ġcomposite\":27714,\"Ġgrows\":27715,\"ĠTD\":27716,\"Ġepid\":27717,\"Ġlaunching\":27718,\"]][\":27719,\"Minutes\":27720,\"ĠCha\":27721,\"Ġcleaned\":27722,\"Ġwitnesses\":27723,\"ukan\":27724,\"ĉType\":27725,\"Ġhabe\":27726,\"paragraph\":27727,\"ĠJPanel\":27728,\"ĠHann\":27729,\"Ġvaried\":27730,\"ĠPokemon\":27731,\"ĠMUST\":27732,\"åĬ¨\":27733,\".visibility\":27734,\"opup\":27735,\"^[\":27736,\".expand\":27737,\"Ġ\\\"',\":27738,\".fasterxml\":27739,\"_auto\":27740,\"ĠSheet\":27741,\"marker\":27742,\"Parcel\":27743,\"ews\":27744,\"ĠStrategy\":27745,\"-making\":27746,\"Ġunve\":27747,\"Ġtrailing\":27748,\"Ġclicks\":27749,\"ĠGetComponent\":27750,\"ĉcontent\":27751,\"IGENCE\":27752,\"ERNEL\":27753,\"NSMutableArray\":27754,\"Ġbreat\":27755,\"Ġharmful\":27756,\"¶Ī\":27757,\"Ġbesides\":27758,\"Ġboring\":27759,\"Ġbrutal\":27760,\"vang\":27761,\"(parse\":27762,\"quick\":27763,\"Ġpytest\":27764,\"Ġswitching\":27765,\"()]Ċ\":27766,\"ĠìĦ\":27767,\"LER\":27768,\"ĉfont\":27769,\"Ġnett\":27770,\")]ĊĊ\":27771,\"(/\\\\\":27772,\"æŀľ\":27773,\"toArray\":27774,\"Ġbreed\":27775,\"ĠCAR\":27776,\"ĠWeapon\":27777,\"Abs\":27778,\"tot\":27779,\"ĠsetName\":27780,\"aptive\":27781,\"Ġ:,\":27782,\"Ġescaped\":27783,\"orden\":27784,\"ĠPri\":27785,\"thumbnail\":27786,\"Ġdescriptions\":27787,\"/styles\":27788,\"ĠPCI\":27789,\"Ġalphabet\":27790,\"asticsearch\":27791,\"NOTE\":27792,\"Ġcialis\":27793,\"ĠGriff\":27794,\"Ġporque\":27795,\"Ġproteins\":27796,\"plays\":27797,\"Ġstating\":27798,\"Ġimagination\":27799,\"Ġfacial\":27800,\"ĠMechan\":27801,\"Ġarranged\":27802,\"_used\":27803,\"Ġarrangements\":27804,\"ĠPipe\":27805,\"hostname\":27806,\"Ġprovinc\":27807,\"Tit\":27808,\".FlatStyle\":27809,\"ĠSplit\":27810,\"ĠLoader\":27811,\".cc\":27812,\"Ġclinic\":27813,\"----------------------------\":27814,\"Ġbaking\":27815,\"ĠENT\":27816,\"neath\":27817,\"ãĢģĊĊ\":27818,\"ANE\":27819,\".EntityFrameworkCore\":27820,\"appers\":27821,\".ic\":27822,\"ĠNgModule\":27823,\"ĠFORM\":27824,\"Ġ';\":27825,\"-profit\":27826,\"hw\":27827,\"enemy\":27828,\"ĠEye\":27829,\"Ġcaution\":27830,\"town\":27831,\"Ġurged\":27832,\"ĠJimmy\":27833,\"ynchronous\":27834,\"-sized\":27835,\"making\":27836,\",{\":27837,\"]',\":27838,\"_Object\":27839,\"ahoma\":27840,\"Ġactivist\":27841,\"INVAL\":27842,\"ĠCommercial\":27843,\"ĠOrlando\":27844,\"(tab\":27845,\"ĠØ¨\":27846,\"Algorithm\":27847,\"Ġheritage\":27848,\"GetMapping\":27849,\"Ġfailures\":27850,\"rios\":27851,\"ativa\":27852,\"Ġtet\":27853,\"Ġcarpet\":27854,\"(Z\":27855,\"three\":27856,\"Ġdisclosure\":27857,\".ERROR\":27858,\"_called\":27859,\"Ġdial\":27860,\"Ġoccasional\":27861,\".Err\":27862,\"Ġfuncion\":27863,\"caffold\":27864,\"Ġreleasing\":27865,\"ï¼īĊĊ\":27866,\"_Value\":27867,\"ĠVari\":27868,\"yellow\":27869,\"Ġstruggles\":27870,\".cal\":27871,\"ĠDakota\":27872,\"ĉclose\":27873,\"Ġsandwich\":27874,\"Ġanalytics\":27875,\"Ġ**)\":27876,\"&#\":27877,\"ĠJos\":27878,\"Ġpassive\":27879,\"ATTR\":27880,\"Throwable\":27881,\"ĠMun\":27882,\"ĠUint\":27883,\"(disposing\":27884,\"arak\":27885,\"ĠLeaders\":27886,\"Ġaffecting\":27887,\"ĠitemView\":27888,\"Ġeconomics\":27889,\"fv\":27890,\"à¹Ģ\":27891,\".rb\":27892,\"ĠOverall\":27893,\"Ġwealthy\":27894,\"Ġevolved\":27895,\"nda\":27896,\"ĠHus\":27897,\"restrict\":27898,\"umen\":27899,\"ĠAgricult\":27900,\"!ĊĊĊ\":27901,\"Ġexpires\":27902,\"Ġspokesperson\":27903,\"interval\":27904,\"ĠÃ¢\":27905,\"Ġqueen\":27906,\"(nil\":27907,\"ingo\":27908,\"Heap\":27909,\"Ùİ\":27910,\"Ġcomplain\":27911,\"Sym\":27912,\"ĠClone\":27913,\"ĠRu\":27914,\"ĠWILL\":27915,\"ĠCrystal\":27916,\"/content\":27917,\"ingen\":27918,\"ointment\":27919,\"LastName\":27920,\"avicon\":27921,\"ĠIBM\":27922,\"ĠDimension\":27923,\"anh\":27924,\"icipants\":27925,\"ĠAnne\":27926,\".progress\":27927,\"Ġalgo\":27928,\"obil\":27929,\"ĠVoice\":27930,\"ĠFE\":27931,\"Ġgli\":27932,\"Ġved\":27933,\"Ġprevents\":27934,\"\\\\Column\":27935,\"Ġfolk\":27936,\"etti\":27937,\"Ġmn\":27938,\"ĠCLASS\":27939,\"Ġdisplaying\":27940,\"ĠKl\":27941,\"ĠFerr\":27942,\"duto\":27943,\".ib\":27944,\"Ġdados\":27945,\"'name\":27946,\"-space\":27947,\"Ġitalian\":27948,\"Ġinverse\":27949,\"Ġdense\":27950,\"uter\":27951,\"ĠIEnumerator\":27952,\"-sign\":27953,\"Ġnationwide\":27954,\"Ġpersona\":27955,\"Ġsolved\":27956,\"Ġdramatically\":27957,\"Logout\":27958,\"Ġgrav\":27959,\"Ġanalyses\":27960,\"ollo\":27961,\"Ġlamp\":27962,\".team\":27963,\"ĠErot\":27964,\"=[\\\"\":27965,\"Ġdancing\":27966,\"Ġ?>/\":27967,\"Ġcater\":27968,\"ffe\":27969,\"ĠSha\":27970,\"ĠBos\":27971,\"ĠREQUIRE\":27972,\"ĠMonster\":27973,\"ĠRB\":27974,\"ĠIDE\":27975,\"Ġsuits\":27976,\"ĠformData\":27977,\"(theta\":27978,\"Ġspatial\":27979,\"=NULL\":27980,\"ĠSqlConnection\":27981,\"Ġà\":27982,\"ĠVenez\":27983,\"ĠMorning\":27984,\"Ġpublications\":27985,\"ĠNONINFRINGEMENT\":27986,\"firstName\":27987,\"uds\":27988,\"Would\":27989,\"_HEAD\":27990,\"Ġinvested\":27991,\"stable\":27992,\"fred\":27993,\"Ġcommander\":27994,\"SES\":27995,\"âĢĶa\":27996,\"anche\":27997,\"ĠMovement\":27998,\"ë³\":27999,\"Suite\":28000,\"Ġjurisdiction\":28001,\"ë¦¬\":28002,\"ĠBeth\":28003,\"jQuery\":28004,\"ĠIsa\":28005,\"Ġdental\":28006,\",*\":28007,\"ĠLimit\":28008,\"iliation\":28009,\"=\\\"{\":28010,\"bast\":28011,\"Ġturb\":28012,\"isy\":28013,\"OOK\":28014,\"Ġadvocate\":28015,\"imag\":28016,\"LECTION\":28017,\"Ð»ÑĮ\":28018,\"(category\":28019,\".dec\":28020,\"Ġuniqu\":28021,\"_sn\":28022,\"Ġattracted\":28023,\"ĠÃī\":28024,\"ĠRunning\":28025,\"_edges\":28026,\"ĠDisable\":28027,\"_AS\":28028,\"åĽ¾\":28029,\"Ġnetworking\":28030,\"_branch\":28031,\"Having\":28032,\"toBeTruthy\":28033,\"GI\":28034,\"Ġcamps\":28035,\"sep\":28036,\"-part\":28037,\"Ġ)ĊĊĊĊĊĊĊĊ\":28038,\"ustralia\":28039,\"ĠReports\":28040,\"rito\":28041,\"Ġwaist\":28042,\"_plus\":28043,\"ĠWW\":28044,\"-person\":28045,\"April\":28046,\"Ġsar\":28047,\".tar\":28048,\"Ġagricultural\":28049,\"tic\":28050,\"Ġtcp\":28051,\"ĠsetValue\":28052,\"agento\":28053,\"ĠAppe\":28054,\"piler\":28055,\"CADE\":28056,\"Ġanche\":28057,\"atcher\":28058,\"Ġcomics\":28059,\"Ġlbs\":28060,\"_segment\":28061,\"']=$\":28062,\"itters\":28063,\"icher\":28064,\"GINE\":28065,\"Ġutilize\":28066,\"ĠCursor\":28067,\"_expression\":28068,\"Ġdag\":28069,\"<long\":28070,\"Ġrhyth\":28071,\"æıĲ\":28072,\"Ġconsultation\":28073,\"Yet\":28074,\"\\\"))ĊĊ\":28075,\"_MAC\":28076,\"could\":28077,\"Ġ'\\\\\\\\\":28078,\"ĠVo\":28079,\"ĉhttp\":28080,\"Ġgs\":28081,\"pher\":28082,\"-grid\":28083,\"James\":28084,\"Jul\":28085,\"Ġschon\":28086,\"Ġtensorflow\":28087,\"ĠLOGGER\":28088,\"amas\":28089,\"Ġscipy\":28090,\"Ġconviction\":28091,\".ag\":28092,\"Ġadministrator\":28093,\")){čĊ\":28094,\"Ġnun\":28095,\"\\\"group\":28096,\"Por\":28097,\"Ġnurse\":28098,\"expression\":28099,\"aky\":28100,\"ĠHeavy\":28101,\".opt\":28102,\".getAll\":28103,\"Ġoverl\":28104,\"/\\\",\":28105,\"_country\":28106,\"çİ\":28107,\"ĠGENER\":28108,\"_route\":28109,\"ĠDal\":28110,\"Â´\":28111,\"oload\":28112,\"Ġuncomfortable\":28113,\"(menu\":28114,\"Ġhostname\":28115,\"'\\\");Ċ\":28116,\"Ġcalculations\":28117,\"-click\":28118,\"Ġprotective\":28119,\"ãĤ¯\":28120,\"_Form\":28121,\"ungs\":28122,\"Actual\":28123,\"mf\":28124,\"ĠProcessing\":28125,\"ĠInventory\":28126,\"(matrix\":28127,\"appropriate\":28128,\"weg\":28129,\"ija\":28130,\"Ġchr\":28131,\"Ġrifle\":28132,\"-wsj\":28133,\"kar\":28134,\"Ġindependently\":28135,\"IOS\":28136,\"Ġconsistency\":28137,\"vn\":28138,\"/system\":28139,\"ĠChanges\":28140,\"Ġexpose\":28141,\"icients\":28142,\"Ġrelate\":28143,\"ĉnext\":28144,\"è¨\":28145,\"udes\":28146,\"Ġglasses\":28147,\"FXML\":28148,\"......\":28149,\"ĠPdf\":28150,\"Ġapprove\":28151,\"Ġ{\\\\\":28152,\"Ġexiste\":28153,\"))(\":28154,\"ARENT\":28155,\"Ð¾Ð¿\":28156,\"ĠLatest\":28157,\"ĠNigeria\":28158,\".Interfaces\":28159,\"Ġremoves\":28160,\"Enemy\":28161,\"Ġenforce\":28162,\"verts\":28163,\"ĉpos\":28164,\"_texture\":28165,\"WARD\":28166,\"ĠINCIDENT\":28167,\"(container\":28168,\"Ġdefending\":28169,\"ĠRX\":28170,\"ĠHook\":28171,\"bris\":28172,\"ĠFlask\":28173,\"Gray\":28174,\".)Ċ\":28175,\"visibility\":28176,\"ĠRedirectToAction\":28177,\"erral\":28178,\"_elem\":28179,\"Ġreson\":28180,\"frontend\":28181,\"_variables\":28182,\"ateria\":28183,\"Ġ+\\\"\":28184,\"aveled\":28185,\"RIX\":28186,\"Ġdeficit\":28187,\"_Check\":28188,\"YYYY\":28189,\"ToOne\":28190,\"spy\":28191,\"Ġunited\":28192,\"endent\":28193,\"Ġpode\":28194,\"ãģĮ\":28195,\"CAT\":28196,\"(fmt\":28197,\"ĠBonus\":28198,\"Ġreck\":28199,\"Âº\":28200,\"Modules\":28201,\"Ġvacuum\":28202,\"Radio\":28203,\"ĠDAMAGE\":28204,\"Pen\":28205,\"ĠParker\":28206,\";;Ċ\":28207,\"ĠReally\":28208,\"_neg\":28209,\"pending\":28210,\"Ġnominee\":28211,\"ĠCategories\":28212,\"ĠUltra\":28213,\"Weapon\":28214,\"Ġdefender\":28215,\"Iss\":28216,\"ĠGender\":28217,\"ĠDress\":28218,\"Ġimprison\":28219,\"Ġbankrupt\":28220,\"imensional\":28221,\"PHA\":28222,\"ĠStrateg\":28223,\"ĠPROFITS\":28224,\"Ġpatri\":28225,\"////////////////////////////////////////////////////////////////////////////////\":28226,\"delegate\":28227,\"ĠforState\":28228,\"Ġdevoted\":28229,\"_make\":28230,\"Ġterrorists\":28231,\"ĠSnap\":28232,\"_nav\":28233,\"ĠAA\":28234,\"ĠIan\":28235,\"ĉapp\":28236,\"Placement\":28237,\"_hdr\":28238,\"<K\":28239,\"Ġsang\":28240,\"stroke\":28241,\"-Q\":28242,\"><?=\":28243,\"-model\":28244,\"avana\":28245,\"ĠWang\":28246,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":28247,\"ĉinit\":28248,\"Ġentrepreneur\":28249,\"ativo\":28250,\"Love\":28251,\"-over\":28252,\"Water\":28253,\"Ġmods\":28254,\"gence\":28255,\"Techn\":28256,\">x\":28257,\".Task\":28258,\"money\":28259,\"ibaba\":28260,\"'});Ċ\":28261,\"ĠSpecific\":28262,\"ĠLinear\":28263,\"_OPT\":28264,\"HashCode\":28265,\"(Player\":28266,\".ContainsKey\":28267,\"Ġcollapsed\":28268,\"transparent\":28269,\"_RANGE\":28270,\"Viewer\":28271,\"(cfg\":28272,\"Ġsorting\":28273,\"Ġinfected\":28274,\"ĠNach\":28275,\"Ġaccommodate\":28276,\".elements\":28277,\"_PART\":28278,\"ĠSexy\":28279,\"=get\":28280,\"(year\":28281,\"Ġxhr\":28282,\":]\":28283,\"owski\":28284,\"Ġsummar\":28285,\"ĠÂ¿\":28286,\"Ġinte\":28287,\"Ġworkflow\":28288,\"ĠTaiwan\":28289,\"versions\":28290,\"åıĳ\":28291,\"Ġsurprisingly\":28292,\"Ġoptical\":28293,\"Ġproces\":28294,\"Ġdisagree\":28295,\"Ġnuevo\":28296,\"ĠCAM\":28297,\"sorted\":28298,\"leases\":28299,\"istle\":28300,\"Ident\":28301,\"ĉevent\":28302,\"jected\":28303,\"Chunk\":28304,\"Vars\":28305,\".provider\":28306,\"Ġproceedings\":28307,\"Ġinclusive\":28308,\"Ġartwork\":28309,\"endants\":28310,\"ï¼ļĊ\":28311,\"seen\":28312,\"Ġlig\":28313,\"Ġmakers\":28314,\"_fun\":28315,\"Ġlengths\":28316,\"PathVariable\":28317,\"[item\":28318,\"à¸µ\":28319,\"Dead\":28320,\"FFFFFF\":28321,\"ĠUrban\":28322,\"uples\":28323,\"ichen\":28324,\"(nullptr\":28325,\".spec\":28326,\",System\":28327,\"URATION\":28328,\"(job\":28329,\"å¼ı\":28330,\"Ġtracker\":28331,\"ÅĻ\":28332,\"ĠMR\":28333,\"ĠSQLite\":28334,\"Ġdto\":28335,\"Ġ;;Ċ\":28336,\"Ġmint\":28337,\"ĠIntroduction\":28338,\"cao\":28339,\"Ġquestioned\":28340,\"Ġfitted\":28341,\"revision\":28342,\"sq\":28343,\"Ġmig\":28344,\"_units\":28345,\"_async\":28346,\"Ġflick\":28347,\"});ĊĊĊ\":28348,\"Ġnotre\":28349,\"}`,\":28350,\"Filters\":28351,\"Ġmundo\":28352,\"_days\":28353,\"Ġfrm\":28354,\"utc\":28355,\"Ġvals\":28356,\"ewidth\":28357,\"ĠGenerator\":28358,\"ĠArtist\":28359,\"ĠIDs\":28360,\"ĠArticles\":28361,\"reater\":28362,\"ĠComponentFixture\":28363,\".=\":28364,\"Ġrou\":28365,\"-no\":28366,\".bukkit\":28367,\"egg\":28368,\"ĠDiff\":28369,\"atics\":28370,\"ÑĥÑĩ\":28371,\"âĢĶĊĊ\":28372,\"ĠCharlotte\":28373,\"bye\":28374,\"Ġ});čĊčĊ\":28375,\"ĠVik\":28376,\"ĠBrow\":28377,\"Ġlv\":28378,\"ĠGib\":28379,\"-wing\":28380,\"GLIGENCE\":28381,\"(Il\":28382,\"ĠEngineer\":28383,\".Wait\":28384,\"ĠPictures\":28385,\"Ġrhet\":28386,\"Ġthermal\":28387,\"Ġpraise\":28388,\"<>();ĊĊ\":28389,\"ĠSpider\":28390,\"Pause\":28391,\"ĠBaker\":28392,\"Ġslower\":28393,\"Ġ}]Ċ\":28394,\"_enqueue\":28395,\"Ġdisappeared\":28396,\"ĠTicket\":28397,\"INUX\":28398,\"_LOCAL\":28399,\"Ð°ÑģÑģ\":28400,\"@Injectable\":28401,\"community\":28402,\"GestureRecognizer\":28403,\"åĽ½\":28404,\"Ġscales\":28405,\"Ġ-(\":28406,\"/'+\":28407,\"ĠSit\":28408,\"Ġexecutives\":28409,\"arding\":28410,\"Ġadvers\":28411,\"Ġbackwards\":28412,\"ĉcontext\":28413,\"ĠHamp\":28414,\"ĠPF\":28415,\"ĠDeck\":28416,\"ĠCraig\":28417,\"American\":28418,\"Ġbell\":28419,\"Ġprol\":28420,\"ufen\":28421,\"Ġrng\":28422,\"arshal\":28423,\"ĠSimply\":28424,\"firstname\":28425,\"shore\":28426,\"July\":28427,\"Ġmortality\":28428,\"ĠâĨĴĊĊ\":28429,\"Helpers\":28430,\"Ġbenchmark\":28431,\"emade\":28432,\"Ġorganisations\":28433,\".gson\":28434,\"ĠTextField\":28435,\"Ġcivilians\":28436,\".Arrays\":28437,\"ĠMississippi\":28438,\"Ġintermediate\":28439,\"getUser\":28440,\"_cluster\":28441,\"Relative\":28442,\"foreign\":28443,\".querySelectorAll\":28444,\"ForeignKey\":28445,\"Ġreasonably\":28446,\"---------Ċ\":28447,\"Cards\":28448,\"ĠKam\":28449,\"ĠThor\":28450,\"Ġroller\":28451,\"-element\":28452,\"ĠCurrency\":28453,\"ddie\":28454,\"ALLY\":28455,\"ĠRA\":28456,\"Ġpermet\":28457,\"aaaa\":28458,\"Ġhomework\":28459,\"ĠVit\":28460,\"Ġmold\":28461,\"ĠFer\":28462,\"[start\":28463,\"Ġstatistical\":28464,\"Ġscary\":28465,\"_HOME\":28466,\".Begin\":28467,\"Construct\":28468,\"ogenic\":28469,\"ĠDEALINGS\":28470,\"ĠtambiÃ©n\":28471,\"ixon\":28472,\".ind\":28473,\"acre\":28474,\"Ġtransforms\":28475,\"ĠNap\":28476,\".Block\":28477,\"ussia\":28478,\"piration\":28479,\"ulent\":28480,\"Ġceil\":28481,\"Clause\":28482,\"naire\":28483,\"TES\":28484,\"Ġneat\":28485,\"STD\":28486,\"ĠRegExp\":28487,\"perform\":28488,\":)\":28489,\"Ġunions\":28490,\"Ġsublic\":28491,\"Ġwinds\":28492,\"loating\":28493,\"glich\":28494,\"Ġpagination\":28495,\"Skill\":28496,\"Apply\":28497,\"ĠOperator\":28498,\"istogram\":28499,\"Ġqualities\":28500,\"Cross\":28501,\"Ġdecom\":28502,\"],\\\"\":28503,\"ĠJuan\":28504,\".modal\":28505,\".Child\":28506,\"ĠRoger\":28507,\"STITUTE\":28508,\":CGRectMake\":28509,\"alette\":28510,\"Ġsta\":28511,\"aside\":28512,\"Ġblur\":28513,\"ĠWa\":28514,\"ifetime\":28515,\"reed\":28516,\"controls\":28517,\"Ġbins\":28518,\"ĠÐ¿Ð¾Ð»\":28519,\"*/,Ċ\":28520,\"UIS\":28521,\"ĠRou\":28522,\"ĠDemo\":28523,\"-awesome\":28524,\"ĠChain\":28525,\"Ġhasta\":28526,\"ĠBart\":28527,\".KEY\":28528,\"Ġvendors\":28529,\"nofollow\":28530,\"ĠDest\":28531,\"_builder\":28532,\"Ġargues\":28533,\"_answer\":28534,\"goto\":28535,\"ĠRESULT\":28536,\"ĠMON\":28537,\"Ġpoder\":28538,\"oons\":28539,\"_CASE\":28540,\"Ġreplic\":28541,\"Ġfinancing\":28542,\"ĠDATE\":28543,\"cern\":28544,\"_track\":28545,\"ties\":28546,\"/logo\":28547,\"ĠNEGLIGENCE\":28548,\"getType\":28549,\">T\":28550,\"bet\":28551,\"girl\":28552,\"ĠINCIDENTAL\":28553,\"-site\":28554,\".trigger\":28555,\"ĠLisa\":28556,\"_inputs\":28557,\"Ġrelatives\":28558,\"LoggedIn\":28559,\"Configure\":28560,\"IK\":28561,\".accept\":28562,\"Resume\":28563,\"ĠDraft\":28564,\"Ġ*>(\":28565,\"ĠWA\":28566,\"edian\":28567,\"erness\":28568,\"ĠLayoutInflater\":28569,\"*/čĊčĊ\":28570,\"othy\":28571,\"Ġobligation\":28572,\"Subscribe\":28573,\"Ġthumbnail\":28574,\"exist\":28575,\"Ġinsisted\":28576,\"ĠUICollectionView\":28577,\"ĠAngular\":28578,\"Ġtablets\":28579,\"ĠImpact\":28580,\"ãĢįĊĊ\":28581,\"aho\":28582,\"Ġcharacteristic\":28583,\"gd\":28584,\"Ġ=================================================\":28585,\"ourt\":28586,\"`.\":28587,\"Appro\":28588,\"Coordinate\":28589,\"Remember\":28590,\"Ġmarine\":28591,\"]=='\":28592,\"ĠAdministrator\":28593,\".getDefault\":28594,\"Ġforgot\":28595,\"ĠStructure\":28596,\"Vue\":28597,\"arsing\":28598,\"moment\":28599,\"kw\":28600,\"_cursor\":28601,\"Attack\":28602,\"Ġathletic\":28603,\"Ġdiagnosed\":28604,\"Ġende\":28605,\"åĪłéĻ¤\":28606,\"House\":28607,\"ĠPARAM\":28608,\"Ġwiki\":28609,\"ĠOpp\":28610,\"Ġconservation\":28611,\"Ġsnd\":28612,\"_tem\":28613,\"substr\":28614,\"ĠCape\":28615,\".sim\":28616,\"UTION\":28617,\"anan\":28618,\"âĢĻun\":28619,\"Ġgy\":28620,\"-work\":28621,\"Ġcompelling\":28622,\"='#\":28623,\"ĉsub\":28624,\"Ġdirectories\":28625,\"íĬ¸\":28626,\"Ġtouches\":28627,\"outines\":28628,\".Collection\":28629,\"schedule\":28630,\".lat\":28631,\"ĠDoctrine\":28632,\"CAA\":28633,\"ĠRefer\":28634,\"Ġshifts\":28635,\"Ġlikelihood\":28636,\"preter\":28637,\"ĠFemale\":28638,\"Ġintercept\":28639,\"Ġlou\":28640,\"çĻ»\":28641,\"Ġrug\":28642,\"ĠCrown\":28643,\"Ġ****************************************************************************\":28644,\"-product\":28645,\"Ġprompted\":28646,\"ungle\":28647,\"docker\":28648,\"ĠTu\":28649,\"ĠUnique\":28650,\"_Error\":28651,\"ulos\":28652,\"ĠâĦ\":28653,\"Ġ(`\":28654,\"Getting\":28655,\"_scal\":28656,\"ĠEnh\":28657,\"Ã¼t\":28658,\"Ġsustained\":28659,\"Ġpatches\":28660,\"Ġprosper\":28661,\"ĠGaza\":28662,\"_light\":28663,\"Ġincons\":28664,\"--------Ċ\":28665,\"ĉĉĠĠĠĠĠĠ\":28666,\"SF\":28667,\"CN\":28668,\":\\\";Ċ\":28669,\"ĠCollins\":28670,\"(*)\":28671,\"Ġcompilation\":28672,\"']čĊ\":28673,\"Ġconsequence\":28674,\",...\":28675,\"Ġdm\":28676,\"ĠBLOCK\":28677,\"Cluster\":28678,\"Ġski\":28679,\"(argc\":28680,\"Tuple\":28681,\"Ġjoins\":28682,\"ĠSheriff\":28683,\"War\":28684,\"indi\":28685,\"Ġcommented\":28686,\"HOST\":28687,\"Ġinvitation\":28688,\"apanese\":28689,\"Ġpermits\":28690,\"precedented\":28691,\"_zone\":28692,\"ĠAmy\":28693,\"_RD\":28694,\"Minimum\":28695,\"Ġinvocation\":28696,\".enable\":28697,\"ichten\":28698,\"-owned\":28699,\"\\\"id\":28700,\"_POINTER\":28701,\"Fac\":28702,\"Ġspecifications\":28703,\"Ġnomination\":28704,\"Ġgp\":28705,\"<(\":28706,\"Ġrobots\":28707,\"ĠJerry\":28708,\"Ġholders\":28709,\"Ġwand\":28710,\"cms\":28711,\"Ġ}))Ċ\":28712,\".Toast\":28713,\"ĠIList\":28714,\"Based\":28715,\"zoom\":28716,\"/style\":28717,\"ĠBeck\":28718,\"Men\":28719,\"Ġcontributing\":28720,\"Ġundo\":28721,\"ĠOH\":28722,\"ĠaddObject\":28723,\"Ġeigen\":28724,\"signup\":28725,\"éĶĻ\":28726,\"Ġdistant\":28727,\"PARATOR\":28728,\"ĠMari\":28729,\"ĠmÃ¡\":28730,\"Emp\":28731,\"Ã³s\":28732,\"ĠìĪĺ\":28733,\"evt\":28734,\"+j\":28735,\"park\":28736,\"ĠStay\":28737,\"ĠDun\":28738,\"Ġsoy\":28739,\">%\":28740,\"azines\":28741,\"Ġtiempo\":28742,\"(me\":28743,\"present\":28744,\".This\":28745,\"Ġeditors\":28746,\"FIELD\":28747,\".Work\":28748,\"ĠUniverse\":28749,\"Ġdrunk\":28750,\".timer\":28751,\"Ġaltered\":28752,\"ĠNar\":28753,\"ëł¥\":28754,\".Active\":28755,\"idor\":28756,\"çŃ\":28757,\".deltaTime\":28758,\"Ġawkward\":28759,\"&quot\":28760,\"ĠSafari\":28761,\"Ġtricks\":28762,\"MENTS\":28763,\"division\":28764,\"Ġvarying\":28765,\"ĠHighway\":28766,\"Ġphotographer\":28767,\"ĠStewart\":28768,\"Ġlasting\":28769,\".Pre\":28770,\".amazonaws\":28771,\"ĠLuck\":28772,\".Description\":28773,\"ĠNaz\":28774,\"neg\":28775,\"ĠcÃ³\":28776,\"<<\\\"\\\\\":28777,\"ĠSurv\":28778,\"ĠUnc\":28779,\"Recipe\":28780,\".BorderStyle\":28781,\"Ġmodifications\":28782,\"-at\":28783,\"ATFORM\":28784,\"hdr\":28785,\"ako\":28786,\"Ġsublicense\":28787,\"ĠJump\":28788,\"Ġbeim\":28789,\"ĠManhattan\":28790,\".bool\":28791,\"_hw\":28792,\"ÑĤÑĮ\":28793,\"Bin\":28794,\"Ġgateway\":28795,\"\\\"\\\":\":28796,\"ĠUIS\":28797,\":\\\"+\":28798,\"-def\":28799,\"ĠRegular\":28800,\"/testing\":28801,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":28802,\"stringstream\":28803,\"Ġdispar\":28804,\"Ġmobil\":28805,\"-read\":28806,\"ĠAdapter\":28807,\"ĠChampions\":28808,\"Ġscheduler\":28809,\"Ġkills\":28810,\"ĠMultiple\":28811,\"irror\":28812,\"Ġgods\":28813,\"ADO\":28814,\"akte\":28815,\"ĠUsuario\":28816,\".circular\":28817,\"Ġrecept\":28818,\"ĠExpr\":28819,\"Ġelderly\":28820,\"Ġnicely\":28821,\"Ġbeste\":28822,\"Want\":28823,\"Ġclassical\":28824,\".sprite\":28825,\"objc\":28826,\"ĠMason\":28827,\"Ġsistema\":28828,\".Black\":28829,\"eso\":28830,\"ĠZeit\":28831,\"Ġdivid\":28832,\"Ġenters\":28833,\"_subject\":28834,\"ĠPlanet\":28835,\".warning\":28836,\"ĠGram\":28837,\"_tokens\":28838,\"Ġhouseholds\":28839,\"_customer\":28840,\"userName\":28841,\"cross\":28842,\"Ġpione\":28843,\"Ġassists\":28844,\"_SM\":28845,\"ibo\":28846,\"Ġloyal\":28847,\"Ġuseless\":28848,\"#elif\":28849,\"ĠUltimate\":28850,\"Come\":28851,\"gel\":28852,\"Ġdich\":28853,\"xyz\":28854,\"ikel\":28855,\"obra\":28856,\"_scan\":28857,\"ĠInterior\":28858,\"ĠNice\":28859,\"Ġplac\":28860,\"ĉtarget\":28861,\"Ġviral\":28862,\"asso\":28863,\"()/\":28864,\"unde\":28865,\"ĠAdobe\":28866,\"Os\":28867,\"visited\":28868,\"ĠOW\":28869,\"ĠFeed\":28870,\"ĠSequence\":28871,\"Ġmanages\":28872,\"inson\":28873,\"ĠLouisiana\":28874,\"{})\":28875,\"ĠHab\":28876,\"ĠLD\":28877,\"Ġbip\":28878,\"prites\":28879,\"(elem\":28880,\".hibernate\":28881,\"Ã©lÃ©\":28882,\"Ġohne\":28883,\"_transaction\":28884,\"Ġannunci\":28885,\"Published\":28886,\"ĠHonda\":28887,\"ĠTam\":28888,\"ĠPacket\":28889,\"_selector\":28890,\"Ġchallenged\":28891,\"Processing\":28892,\"-hover\":28893,\"Ġtrainer\":28894,\"_cancel\":28895,\"ĠNSDictionary\":28896,\"abric\":28897,\"ĠMLS\":28898,\"_sensor\":28899,\"Ġshrink\":28900,\"ĠFX\":28901,\"threshold\":28902,\"ĉHX\":28903,\"-mark\":28904,\"`.`\":28905,\"Scheme\":28906,\"(full\":28907,\"_writer\":28908,\"ĠSys\":28909,\"Ġfled\":28910,\"ĠCin\":28911,\"-widget\":28912,\"ĠPrevious\":28913,\"Gender\":28914,\"_question\":28915,\"Feed\":28916,\"Ġscrut\":28917,\"(prefix\":28918,\"ãĢĤãĢĤ\":28919,\"Ġinfections\":28920,\"Parts\":28921,\"Ġhierarchy\":28922,\"_DELETE\":28923,\"ĠPatient\":28924,\"_pay\":28925,\"Ġpromoted\":28926,\"Ġìĭ\":28927,\"Ġcivilian\":28928,\"Ġagriculture\":28929,\"ĠPiece\":28930,\"Ġstance\":28931,\"utsche\":28932,\"Assign\":28933,\".ACTION\":28934,\"Fig\":28935,\"_radius\":28936,\"ĠSync\":28937,\"ducer\":28938,\"failure\":28939,\"ensed\":28940,\"ptime\":28941,\"BM\":28942,\"_datetime\":28943,\"quivo\":28944,\"QUEUE\":28945,\"èĢħ\":28946,\"Appear\":28947,\"Ġsummit\":28948,\":void\":28949,\"Ġvine\":28950,\"è®¤\":28951,\"onne\":28952,\"_TRANS\":28953,\".green\":28954,\"_cc\":28955,\"Ġhungry\":28956,\"Ġ\\\">\":28957,\"());čĊčĊ\":28958,\"Extract\":28959,\"izens\":28960,\"Ġsolver\":28961,\"Notify\":28962,\"Ġenglish\":28963,\"ĠShopping\":28964,\"interfaces\":28965,\"REQ\":28966,\"Ġilleg\":28967,\"ĠUIImageView\":28968,\"Ġdisconnect\":28969,\"ĠUntil\":28970,\"ĠConservative\":28971,\"@Column\":28972,\"Ġshifted\":28973,\"Ġ:čĊ\":28974,\"Ġfich\":28975,\"Ġdla\":28976,\"Ġshoe\":28977,\"\\\"),čĊ\":28978,\"ularity\":28979,\"_RESP\":28980,\"Weather\":28981,\"UIApplication\":28982,\".iterator\":28983,\"Ġaging\":28984,\".Parent\":28985,\"owie\":28986,\"(equal\":28987,\"ĠConv\":28988,\"/default\":28989,\"Ġmeasuring\":28990,\".prev\":28991,\".IsValid\":28992,\".Fat\":28993,\"ĠsÄĥ\":28994,\"keywords\":28995,\"without\":28996,\"Ġsovere\":28997,\"Ġexchanges\":28998,\"Ġmelt\":28999,\"Ġislands\":29000,\"ĠIntegr\":29001,\"Ġjumping\":29002,\"Ġgle\":29003,\"Ġjournalism\":29004,\"Ġdated\":29005,\"Localized\":29006,\"ĠRefresh\":29007,\"Particle\":29008,\"Ġaa\":29009,\"ĠSTRICT\":29010,\"Ġbod\":29011,\".Process\":29012,\"_AUTO\":29013,\"ĠPublished\":29014,\"every\":29015,\"Ġtechnological\":29016,\"lsx\":29017,\"Ġirrit\":29018,\"Additional\":29019,\"Ġdelimiter\":29020,\"_language\":29021,\"-area\":29022,\"boys\":29023,\"ĠTube\":29024,\"Ġwat\":29025,\"Ġmechanics\":29026,\"_owner\":29027,\"Spell\":29028,\"ĠStories\":29029,\".AppendLine\":29030,\"TableView\":29031,\"hem\":29032,\"stick\":29033,\"ollower\":29034,\"IFF\":29035,\"ĠUV\":29036,\"ollision\":29037,\"SUB\":29038,\"Ġcomparable\":29039,\"Ġdonde\":29040,\"sales\":29041,\"llvm\":29042,\"Ġ}],Ċ\":29043,\"OTTOM\":29044,\"ĠPurpose\":29045,\"Lab\":29046,\"Ġinterviewed\":29047,\"ois\":29048,\"asil\":29049,\".setId\":29050,\"ĠInstruction\":29051,\"-->\":29052,\"ĠModified\":29053,\"ationally\":29054,\"ĠMeeting\":29055,\"è¯¯\":29056,\"#region\":29057,\"Ġrouting\":29058,\".focus\":29059,\"ĠYouth\":29060,\"<D\":29061,\"ĠNag\":29062,\"contacts\":29063,\"Ġforming\":29064,\"Ġmie\":29065,\"',['../\":29066,\"ĠBP\":29067,\"Ġappet\":29068,\"ĠTeacher\":29069,\"ĠTP\":29070,\"Ġannually\":29071,\"outedEventArgs\":29072,\"ĠSpeaker\":29073,\"Ġrename\":29074,\"CFG\":29075,\"(\\\"//\":29076,\"æİ¥\":29077,\"/pages\":29078,\"ĠprÃ©s\":29079,\"ĠSpell\":29080,\".Allow\":29081,\"ĠINTERRU\":29082,\"Ġ(#\":29083,\"âĢĻĊĊ\":29084,\"_Generic\":29085,\".imshow\":29086,\"_tim\":29087,\"-face\":29088,\"(&(\":29089,\"atinum\":29090,\"Ġrevolutionary\":29091,\"ĠHours\":29092,\"rain\":29093,\"Ġanytime\":29094,\"Ġabb\":29095,\".jsp\":29096,\"ScrollView\":29097,\"ĠTruth\":29098,\"Ġanticipated\":29099,\"Ġaccent\":29100,\".checked\":29101,\"Ġspecifies\":29102,\"Ġcaf\":29103,\"Ġcellpadding\":29104,\"Ġcooked\":29105,\"ĠHugh\":29106,\"peek\":29107,\"_RATE\":29108,\"Ġdorm\":29109,\"/čĊ\":29110,\"IVITY\":29111,\".Controller\":29112,\"(part\":29113,\".constraint\":29114,\"Ġinvasion\":29115,\"MOVE\":29116,\"Ġgluc\":29117,\"lename\":29118,\"Ġamen\":29119,\"english\":29120,\"ĠSwitzerland\":29121,\"\\\";ĊĊĊ\":29122,\"pest\":29123,\".collect\":29124,\"Nib\":29125,\"ĠDict\":29126,\"ĠEmb\":29127,\"(subject\":29128,\"Ġoutrage\":29129,\"Ġdeciding\":29130,\"Ġsentenced\":29131,\"Fecha\":29132,\"\\\"A\":29133,\"Ġquer\":29134,\"ĠfontFamily\":29135,\"Ġquadr\":29136,\"-Y\":29137,\"_CACHE\":29138,\"Ġanalyzed\":29139,\"Ġgaining\":29140,\"ĠAgainst\":29141,\"ĠSoul\":29142,\"tau\":29143,\"Ġlightweight\":29144,\"ĠTF\":29145,\"ĠEffects\":29146,\".Types\":29147,\".addClass\":29148,\"Ġvegan\":29149,\"éģ\":29150,\".'\\\"\":29151,\"ĠExplorer\":29152,\".detect\":29153,\".shift\":29154,\"Ġobligations\":29155,\"lastName\":29156,\"Ġassociations\":29157,\"ĠTimeSpan\":29158,\"unter\":29159,\"ĠFresh\":29160,\"Compatible\":29161,\"Pub\":29162,\"idges\":29163,\".option\":29164,\"vari\":29165,\".hashCode\":29166,\"Ġgeb\":29167,\".section\":29168,\"-not\":29169,\"ĠSubmit\":29170,\"TN\":29171,\"registry\":29172,\"_media\":29173,\"Ġnaj\":29174,\"fft\":29175,\"Ġmate\":29176,\"-third\":29177,\"Ġpockets\":29178,\"esta\":29179,\"Ġbent\":29180,\"ĠNord\":29181,\"Ġretailers\":29182,\"ĠMorris\":29183,\".\\\"\\\"\\\"ĊĊ\":29184,\"Wrong\":29185,\"ĠÅĽ\":29186,\"Ray\":29187,\".ec\":29188,\"ĠBind\":29189,\"_HAND\":29190,\"(non\":29191,\"isValid\":29192,\"Ġsimilarly\":29193,\"_LIMIT\":29194,\"Ġdynamics\":29195,\"Ġdistinction\":29196,\"ãģĨ\":29197,\"<N\":29198,\"Ġorth\":29199,\"ĠToyota\":29200,\"ĠKate\":29201,\"ĠLS\":29202,\"orie\":29203,\"ĠSprings\":29204,\"Ġfreak\":29205,\"lastname\":29206,\"_MULT\":29207,\"-step\":29208,\"\\\"(\":29209,\"ADDR\":29210,\"Ġentertaining\":29211,\"_CONF\":29212,\"Ġdecoded\":29213,\"Ġstreak\":29214,\"Ġwaited\":29215,\"Ġnotified\":29216,\"roduced\":29217,\"visual\":29218,\".LayoutParams\":29219,\"æ°\":29220,\"esian\":29221,\"fits\":29222,\"spring\":29223,\"ĠBernie\":29224,\"UserDefaults\":29225,\"Ġpedest\":29226,\"Appearance\":29227,\"ĠWiki\":29228,\"ĠNOTICE\":29229,\"Ġssh\":29230,\"Ġdurante\":29231,\"ĠZip\":29232,\"Ä±r\":29233,\"ĠNATO\":29234,\"Ġtwelve\":29235,\"Ġroyal\":29236,\"ï¸\":29237,\"Ġmerchant\":29238,\"ĠFurniture\":29239,\"']),Ċ\":29240,\",X\":29241,\"Ġfolders\":29242,\"ĠGate\":29243,\"ĉfunc\":29244,\"pick\":29245,\"_usuario\":29246,\"ĠVerm\":29247,\"mention\":29248,\"urpose\":29249,\"Ġalerts\":29250,\"xious\":29251,\"_sig\":29252,\"ĠFu\":29253,\"Ġ(:\":29254,\"Ġdumb\":29255,\"åħ³\":29256,\"Ġaccurately\":29257,\"éĩį\":29258,\"RB\":29259,\"-screen\":29260,\"ĠVER\":29261,\"jour\":29262,\"Ġromance\":29263,\"ucceed\":29264,\".choice\":29265,\"Ġadip\":29266,\"_dims\":29267,\"Serializable\":29268,\"ãĤĭ\":29269,\".job\":29270,\"Ġprog\":29271,\"uchar\":29272,\"Ġgently\":29273,\"ĠRSS\":29274,\"ictured\":29275,\"_ENABLED\":29276,\"ĉlabel\":29277,\"awks\":29278,\"ĠEnsure\":29279,\"remember\":29280,\"ìłķ\":29281,\"Ġtransmit\":29282,\"{{$\":29283,\".Transaction\":29284,\"urse\":29285,\"_relative\":29286,\"Ġsized\":29287,\"ĠXX\":29288,\"ĠPrincess\":29289,\"ĠLarry\":29290,\"ĠprÃ³\":29291,\"ĠÑģÑĤÑĢ\":29292,\"Ġsisters\":29293,\"estruct\":29294,\"Ġcheckpoint\":29295,\":length\":29296,\"ĠCarlos\":29297,\"/icon\":29298,\"_TARGET\":29299,\"Tokens\":29300,\"Ġpatience\":29301,\"ĠSelected\":29302,\"qty\":29303,\".showMessage\":29304,\"Ġwildlife\":29305,\"ĠProps\":29306,\"bm\":29307,\"-arrow\":29308,\"Ġparcel\":29309,\"firebase\":29310,\"ĠBenjamin\":29311,\"cesso\":29312,\".tim\":29313,\"ĠGarc\":29314,\".any\":29315,\"ĠHOWEVER\":29316,\"ĠKo\":29317,\"Ġgrabbed\":29318,\"_frames\":29319,\"ĠobjectAtIndex\":29320,\"ĠADVISED\":29321,\"Ġsubur\":29322,\"ĉGL\":29323,\"Ġ})}Ċ\":29324,\"-length\":29325,\"ìĭľ\":29326,\"ĠPotter\":29327,\"_buff\":29328,\".gui\":29329,\"ĠEncoding\":29330,\"Elect\":29331,\"-message\":29332,\"Ġï¿½\":29333,\"ĠÈĻi\":29334,\"ĠArgumentNullException\":29335,\"Ð°ÑĨÐ¸\":29336,\"Ġminimize\":29337,\"Ġresponding\":29338,\"$_['\":29339,\"ĠIndividual\":29340,\"Ã¡c\":29341,\"ĠINTER\":29342,\"Ġmasturb\":29343,\"ĠBin\":29344,\"('$\":29345,\"ëĵľ\":29346,\"Ġopenly\":29347,\"Ġ><\":29348,\"Ġunto\":29349,\"ologically\":29350,\"ĠMul\":29351,\"VIDIA\":29352,\"Ġslim\":29353,\"ĠCommissioner\":29354,\"(on\":29355,\"Ġunderneath\":29356,\"/db\":29357,\"vote\":29358,\"(Message\":29359,\"ĠPope\":29360,\"Defined\":29361,\"Ġswift\":29362,\"urf\":29363,\"Ġadapted\":29364,\"SEL\":29365,\"Ġrevenues\":29366,\"Ġdivine\":29367,\"=y\":29368,\"Gradient\":29369,\"_act\":29370,\"Ġ/*!<\":29371,\"Ġpolygon\":29372,\"ĠFDA\":29373,\"ĠCarr\":29374,\"atables\":29375,\"(stdout\":29376,\"Ġrefriger\":29377,\"Ġcoordin\":29378,\"avorites\":29379,\"ÑĪÐ¸\":29380,\"Ġcompassion\":29381,\"ĠPOSSIBILITY\":29382,\"-secondary\":29383,\"uracy\":29384,\"Ġcompromise\":29385,\"_AV\":29386,\"_os\":29387,\"Ġbeside\":29388,\"ĥĿ\":29389,\"Ġln\":29390,\".plugins\":29391,\"Capacity\":29392,\"alah\":29393,\".bin\":29394,\"ĠCRC\":29395,\"_balance\":29396,\"ĠflexDirection\":29397,\"Ġambit\":29398,\"Ġnickname\":29399,\"ĠForces\":29400,\"CLE\":29401,\"ĠShell\":29402,\"Ġsail\":29403,\"ĠWriter\":29404,\"ĠAlice\":29405,\"dw\":29406,\"ĠIndians\":29407,\"ĠMarshall\":29408,\"_SRC\":29409,\"Ġnormalized\":29410,\"ĠJag\":29411,\"ãĤĴ\":29412,\"zeit\":29413,\"rpc\":29414,\"ÃŃc\":29415,\".inline\":29416,\"Ġtravers\":29417,\"_numeric\":29418,\"Ġutilities\":29419,\"Ġevac\":29420,\"INPUT\":29421,\"ĉregister\":29422,\"MX\":29423,\"ĠCampbell\":29424,\"Ġdatasets\":29425,\"Ġdemanded\":29426,\"ĠinitialState\":29427,\"gan\":29428,\"Ġei\":29429,\"Unexpected\":29430,\"-web\":29431,\"trait\":29432,\",Y\":29433,\"ĠTodd\":29434,\"Ġskeleton\":29435,\"Ġoptimize\":29436,\"ç¬¬\":29437,\"ĠUpon\":29438,\"ĠStObject\":29439,\"Ġaplic\":29440,\".'</\":29441,\"ACC\":29442,\"alous\":29443,\"ĠhashCode\":29444,\"ĠBib\":29445,\"INAL\":29446,\"Ġinvisible\":29447,\"Ġheter\":29448,\"Ġsafer\":29449,\"}//\":29450,\".theme\":29451,\".navigationController\":29452,\"_mesh\":29453,\"skill\":29454,\"ĠViol\":29455,\"Â²\":29456,\"ĠEOF\":29457,\"ĠKi\":29458,\"ymmetric\":29459,\"Ġmaxlength\":29460,\"Å£\":29461,\"friends\":29462,\"ĠEvans\":29463,\"Ġlemon\":29464,\"Ġ(.\":29465,\"Slide\":29466,\"ĠThailand\":29467,\"ĠCann\":29468,\"Ġamend\":29469,\"Ġcir\":29470,\"Ġsilly\":29471,\"esimal\":29472,\"_pic\":29473,\"processor\":29474,\"JavaScript\":29475,\"Ġevident\":29476,\"_di\":29477,\">P\":29478,\"vron\":29479,\".UN\":29480,\"Ġpainter\":29481,\"izarre\":29482,\"Ġlav\":29483,\"Ġpom\":29484,\"preg\":29485,\"=function\":29486,\"(serial\":29487,\"ifica\":29488,\"uming\":29489,\"åľ°\":29490,\"ãģĤ\":29491,\"-op\":29492,\"UCH\":29493,\"ĠHend\":29494,\".propTypes\":29495,\"Ġyo\":29496,\"Ġroutines\":29497,\"Ġcaring\":29498,\"Sem\":29499,\"Ġreserves\":29500,\"Ġpriorities\":29501,\"redits\":29502,\"ISTR\":29503,\"ContentType\":29504,\"ĠSchw\":29505,\"/media\":29506,\"Ġestr\":29507,\"Ġclimbing\":29508,\"-week\":29509,\"cherche\":29510,\"sensor\":29511,\"ToArray\":29512,\"ĠMontreal\":29513,\"Ġclouds\":29514,\"ĠInjectable\":29515,\"ĠRice\":29516,\"Ġpropaganda\":29517,\"_provider\":29518,\"Ġindoor\":29519,\"Ġinaug\":29520,\"Ġdiplom\":29521,\"Ġmessaging\":29522,\"_mut\":29523,\"å¦Ĥ\":29524,\"Ġkw\":29525,\"ONS\":29526,\"arians\":29527,\"RPC\":29528,\")]čĊ\":29529,\"-ray\":29530,\"ĠSor\":29531,\"mall\":29532,\"Ġmarketplace\":29533,\"Ġvtk\":29534,\"Ma\":29535,\"ogan\":29536,\"igi\":29537,\"Ġsponsored\":29538,\"ĠDani\":29539,\".SEVER\":29540,\">'.$\":29541,\"multipart\":29542,\"ĠWol\":29543,\"ĠtableName\":29544,\"ĠUsername\":29545,\"BackgroundColor\":29546,\"Ġfright\":29547,\"_EMAIL\":29548,\"September\":29549,\"_vals\":29550,\"opia\":29551,\"Ġspotted\":29552,\"-Ch\":29553,\"ĠdataSource\":29554,\"/\\\"Ċ\":29555,\"ÐµÐºÑĤ\":29556,\"ĠRequestMethod\":29557,\"ĠReplace\":29558,\"-do\":29559,\"ahn\":29560,\"ĠPhD\":29561,\"].ĊĊ\":29562,\"NON\":29563,\"gement\":29564,\"ĠThr\":29565,\"Ġquietly\":29566,\"Ġtorture\":29567,\"Ġteas\":29568,\"ĠCY\":29569,\"Ġatr\":29570,\"development\":29571,\"-detail\":29572,\"Ġlighter\":29573,\"Ġarguing\":29574,\"Ġdeserves\":29575,\"Ġcurriculum\":29576,\"_CONTEXT\":29577,\"ÅĤy\":29578,\"HITE\":29579,\"ĉID\":29580,\"/uploads\":29581,\"Ġtits\":29582,\"reo\":29583,\"_drop\":29584,\".UTF\":29585,\"Ġpickup\":29586,\"Ġgrocery\":29587,\"ĠPure\":29588,\"Ġeasiest\":29589,\"Phil\":29590,\".feature\":29591,\"(\\\"*\":29592,\"Ġinvestor\":29593,\"tok\":29594,\"Ġjar\":29595,\"Los\":29596,\"âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ\":29597,\".queue\":29598,\"-speed\":29599,\"Mal\":29600,\"umblr\":29601,\"ĠCONST\":29602,\"ĠHRESULT\":29603,\"ĠDance\":29604,\"(filePath\":29605,\"Ġattributed\":29606,\"à¥į\":29607,\"ĠBund\":29608,\"coins\":29609,\"ĠsÃ£o\":29610,\"Ġpir\":29611,\"personal\":29612,\"Ġprelim\":29613,\"Ġpropose\":29614,\"ĠTL\":29615,\"]])\":29616,\"ĠSubscription\":29617,\"ĠKre\":29618,\",len\":29619,\".FirstOrDefault\":29620,\")--\":29621,\"_products\":29622,\".GetBytes\":29623,\"Ship\":29624,\"Ġencrypt\":29625,\"ĠSG\":29626,\"ĠMyst\":29627,\"hir\":29628,\"Ġiterate\":29629,\"Ġintend\":29630,\".mockito\":29631,\"Ġchapters\":29632,\"(angle\":29633,\"ĠVlad\":29634,\"è®¾\":29635,\"'.ĊĊ\":29636,\"ResponseBody\":29637,\"ĠAbd\":29638,\"deal\":29639,\"Ġbarriers\":29640,\"-outline\":29641,\"bill\":29642,\"ĠFalls\":29643,\"_second\":29644,\".include\":29645,\".ceil\":29646,\"Ġoccupation\":29647,\"phony\":29648,\".moveTo\":29649,\"ĠJennifer\":29650,\"ASTER\":29651,\";\\\"><\":29652,\"ĠEnabled\":29653,\"Ġterminate\":29654,\"ĠIo\":29655,\"lations\":29656,\"ĠTHEORY\":29657,\"Ġearliest\":29658,\"Ġrack\":29659,\"ĠScar\":29660,\"shake\":29661,\"chip\":29662,\"Ġuv\":29663,\"Ġalliance\":29664,\"Ð¿Ð¸Ñģ\":29665,\"ĠGOODS\":29666,\"zione\":29667,\"ĠVI\":29668,\"Ġ{-\":29669,\"Ġfiltering\":29670,\"Ġmiscon\":29671,\".DockStyle\":29672,\"Ġbush\":29673,\"Ġjunk\":29674,\"æĮ\":29675,\"ĠQUE\":29676,\"Ġhooks\":29677,\"Ġfirmware\":29678,\"Ġmiddleware\":29679,\"dic\":29680,\"ĠOakland\":29681,\"Ġarrives\":29682,\"Payload\":29683,\"pixel\":29684,\"]|\":29685,\"ĠstartDate\":29686,\".PRO\":29687,\"_audio\":29688,\"Ġmidfield\":29689,\"igidbody\":29690,\"ĠSwiss\":29691,\"ĠClip\":29692,\"ĠDump\":29693,\"ĠTextBox\":29694,\"Ġgeh\":29695,\"yield\":29696,\"ods\":29697,\"Ġreferendum\":29698,\"Backend\":29699,\"ĠCream\":29700,\"Ġdominated\":29701,\"ĠArchive\":29702,\"Ġriders\":29703,\".prepareStatement\":29704,\"Ġquando\":29705,\"Ġchef\":29706,\"wiki\":29707,\"inel\":29708,\"ampling\":29709,\"(\\\"\\\\\\\\\":29710,\"Ġsag\":29711,\"_proxy\":29712,\"ãģķ\":29713,\"pdo\":29714,\".getElementsByTagName\":29715,\"Ġdemonstration\":29716,\"ĠNPC\":29717,\"Ġarchivo\":29718,\"endance\":29719,\"Ġefficiently\":29720,\"(actual\":29721,\".tableView\":29722,\"Ġmush\":29723,\"Ġbears\":29724,\"_threads\":29725,\"jas\":29726,\"ahun\":29727,\"Ġneural\":29728,\"Ġdesigning\":29729,\"ĠGDP\":29730,\"Ġlifted\":29731,\"çĽ®\":29732,\"ĠJoint\":29733,\"ĠInclude\":29734,\"ĠGiants\":29735,\"Ġwithdrawal\":29736,\"ĠRent\":29737,\"native\":29738,\"ĠSeek\":29739,\"gression\":29740,\"_CPU\":29741,\"\\\\S\":29742,\"ĠShield\":29743,\"Ġsolic\":29744,\"Ġboom\":29745,\"yecto\":29746,\"Ġmanufacture\":29747,\"ĠâĢĭ\":29748,\"Ġbbox\":29749,\"Ġearthqu\":29750,\"ollectors\":29751,\":@\\\"%\":29752,\"Ġloops\":29753,\"Je\":29754,\"alking\":29755,\"ĠWhats\":29756,\"ĠBoys\":29757,\".book\":29758,\"ARGE\":29759,\"_pixel\":29760,\"Ġsuspects\":29761,\"Î¹\":29762,\"usp\":29763,\"ĠBMW\":29764,\"ieces\":29765,\"(person\":29766,\"å¼Ģ\":29767,\"é»\":29768,\"ĠPodcast\":29769,\"Ġbou\":29770,\"(Item\":29771,\"Ã»\":29772,\"(Input\":29773,\"HttpGet\":29774,\"Ġburg\":29775,\")^\":29776,\"BOARD\":29777,\"*/,\":29778,\"Ġgulp\":29779,\"ĠBenn\":29780,\"Ġdecks\":29781,\".statusCode\":29782,\"Ġacute\":29783,\"Ġhug\":29784,\"ugu\":29785,\"Ġpled\":29786,\",\\\"%\":29787,\"hape\":29788,\"ĠÐ·Ð°Ð¿\":29789,\"ĠMaine\":29790,\".real\":29791,\"Ġdalam\":29792,\"ĠMinor\":29793,\".Float\":29794,\"disp\":29795,\"Ġtl\":29796,\"Ġencount\":29797,\"=>$\":29798,\"Ġfg\":29799,\"tees\":29800,\"ĠRecomm\":29801,\"Ã¤l\":29802,\"Ġchemistry\":29803,\"Blocks\":29804,\"OID\":29805,\"Ġforex\":29806,\"ĠAppend\":29807,\"Ġ{*\":29808,\"ĠSupply\":29809,\"CGFloat\":29810,\"(bl\":29811,\"Ġate\":29812,\"adora\":29813,\"Ġgust\":29814,\"Associ\":29815,\">.Ċ\":29816,\"FETCH\":29817,\".serial\":29818,\"widgets\":29819,\"ardless\":29820,\"iefs\":29821,\"_FULL\":29822,\"ernetes\":29823,\"ĠPred\":29824,\"ØŃ\":29825,\"äºĭ\":29826,\"ubernetes\":29827,\"ĠLaura\":29828,\"Ġlabeled\":29829,\"Highlight\":29830,\"Ġannoying\":29831,\"/update\":29832,\"(description\":29833,\"Ġintimid\":29834,\"$c\":29835,\"\\\")))Ċ\":29836,\".AP\":29837,\"Ġ[]*\":29838,\"ĠEXIT\":29839,\".Host\":29840,\"ĠOPEN\":29841,\".sendMessage\":29842,\"_camera\":29843,\"_tile\":29844,\"Ġtherm\":29845,\"onomous\":29846,\"Ġdisadv\":29847,\"Ġnaar\":29848,\"indexOf\":29849,\"ĠPP\":29850,\".protocol\":29851,\"AFE\":29852,\"Ġtextures\":29853,\"################################################\":29854,\"umbai\":29855,\".stats\":29856,\"ĠGE\":29857,\"Ġie\":29858,\"ĠSTD\":29859,\"ĠMann\":29860,\".reflect\":29861,\"KB\":29862,\"Ġdive\":29863,\".wav\":29864,\"/*----------------------------------------------------------------\":29865,\"/settings\":29866,\".lifecycle\":29867,\"Ġdaughters\":29868,\"orus\":29869,\"uber\":29870,\"NING\":29871,\"stri\":29872,\"ĠTip\":29873,\"Ġzn\":29874,\"Ġswitched\":29875,\"inet\":29876,\"uffy\":29877,\"ĠTransportation\":29878,\"(conf\":29879,\"frica\":29880,\"ĠXL\":29881,\"ĠLead\":29882,\"_percent\":29883,\"<Map\":29884,\"Ġthrust\":29885,\"orb\":29886,\"ikk\":29887,\"Ġtrauma\":29888,\"Accessor\":29889,\"ĠFit\":29890,\"ĠStringBuffer\":29891,\"expl\":29892,\"(screen\":29893,\"Ġaudiences\":29894,\"ĠOPTION\":29895,\"_round\":29896,\"[node\":29897,\"beh\":29898,\"->__\":29899,\"permissions\":29900,\"ĠDetermine\":29901,\".Man\":29902,\"Ġadvances\":29903,\".InputStream\":29904,\"Ġstrongest\":29905,\"ĠeBay\":29906,\"Ġ#-\":29907,\"Ġdirname\":29908,\"ĠSMS\":29909,\"Ġmedications\":29910,\"Ġamended\":29911,\"Ġchurches\":29912,\"ĠImperial\":29913,\"$row\":29914,\"ĠMadison\":29915,\"ĠInsp\":29916,\"Ġaffair\":29917,\"Ġpsychology\":29918,\"vh\":29919,\"Ġseverity\":29920,\"âĢĲ\":29921,\"Ġstrips\":29922,\"AH\":29923,\"vertising\":29924,\"Ġconse\":29925,\"IMAGE\":29926,\"ĠStats\":29927,\"ĉsc\":29928,\".Cursor\":29929,\"Ġfreeze\":29930,\"sson\":29931,\"(xml\":29932,\"ĠSusan\":29933,\".tile\":29934,\"eded\":29935,\"ĠĠĠĠĉĉĉ\":29936,\"uelle\":29937,\"ĠMitchell\":29938,\"based\":29939,\"Operand\":29940,\"½æķ°\":29941,\"ĠFF\":29942,\"ĉstrcpy\":29943,\"ounces\":29944,\"ildo\":29945,\".executeQuery\":29946,\"Ġapproaching\":29947,\"ĠSeven\":29948,\"Ġnuts\":29949,\"Ġric\":29950,\"assignment\":29951,\"Ġcalculator\":29952,\"ĠMurphy\":29953,\"ĠBou\":29954,\"íĦ\":29955,\"Ġbutt\":29956,\"Ġticks\":29957,\"Projects\":29958,\"ilib\":29959,\".textColor\":29960,\"mov\":29961,\"_logo\":29962,\"(template\":29963,\"ĠINIT\":29964,\"ĠimageView\":29965,\"scriptions\":29966,\"ORITY\":29967,\"Consumer\":29968,\"Ġunprecedented\":29969,\"Ġtourist\":29970,\"Ġbron\":29971,\"Ġcontractor\":29972,\"Ġlicence\":29973,\"ĠNam\":29974,\"æ¯\":29975,\"(transform\":29976,\"_ATT\":29977,\"Pref\":29978,\"ĠGam\":29979,\"Ġvessels\":29980,\"Ġhav\":29981,\"Later\":29982,\".ToLower\":29983,\"Ġurls\":29984,\"Ġbreakdown\":29985,\"Ġpenalties\":29986,\"Ġfoster\":29987,\"ĠUE\":29988,\"Ġclue\":29989,\"comed\":29990,\"åĲįç§°\":29991,\"-main\":29992,\"Ġpts\":29993,\"Ġcounted\":29994,\"icts\":29995,\"/post\":29996,\"Ġgetattr\":29997,\"Ġping\":29998,\"ANCEL\":29999,\"Ġpec\":30000,\"ÑħÐ¾Ð´\":30001,\"antom\":30002,\"ĠBlueprint\":30003,\"ĠEventEmitter\":30004,\"ĠlÃ¤\":30005,\"æ²\":30006,\"Ġstraw\":30007,\"(comp\":30008,\"'une\":30009,\">N\":30010,\"-client\":30011,\"esModule\":30012,\"-base\":30013,\"Ġretreat\":30014,\"_simple\":30015,\"ĉĉĉĉĉĉĠ\":30016,\"fee\":30017,\"')čĊčĊ\":30018,\"ControlItem\":30019,\"Ġsubscribers\":30020,\"please\":30021,\"ĠEff\":30022,\"Ġpound\":30023,\"ĠBytes\":30024,\"ĠTea\":30025,\"_activity\":30026,\"Ġmaxim\":30027,\"Ġopcode\":30028,\"BSD\":30029,\".constant\":30030,\";}\":30031,\"ombres\":30032,\"Ġcareers\":30033,\").ĊĊĊĊ\":30034,\"Ġspreading\":30035,\"-expanded\":30036,\"ĠOrd\":30037,\"amarin\":30038,\"Ġmobility\":30039,\"Unfortunately\":30040,\"akk\":30041,\"NL\":30042,\"_redirect\":30043,\"ĠPG\":30044,\"ĠSensor\":30045,\"bol\":30046,\"tap\":30047,\"_MEMORY\":30048,\"ĠUIAlert\":30049,\"plitude\":30050,\"Website\":30051,\"ĠLogo\":30052,\"love\":30053,\"[ind\":30054,\"Ġaltogether\":30055,\"Ġwondered\":30056,\"Ġesper\":30057,\"ĠLiberal\":30058,\"Ġoss\":30059,\"Ġelit\":30060,\"Ġstiff\":30061,\"odox\":30062,\"_mentions\":30063,\"ĠDouglas\":30064,\"_pid\":30065,\"ĠCK\":30066,\"ĠinitWithFrame\":30067,\".blog\":30068,\"pkg\":30069,\"anghai\":30070,\"QUIRED\":30071,\"uu\":30072,\"Ġmkdir\":30073,\"ATAL\":30074,\"Ġunh\":30075,\"inces\":30076,\"sth\":30077,\"Ġhypothesis\":30078,\"Ġcata\":30079,\"ĠTB\":30080,\"ĠClar\":30081,\"Ġpredecess\":30082,\"Ġsituated\":30083,\"-world\":30084,\"))/\":30085,\"Ġheadlines\":30086,\".stat\":30087,\"Ġoutbreak\":30088,\"spath\":30089,\"_FLAGS\":30090,\"ĠServletException\":30091,\"Sun\":30092,\"FROM\":30093,\"ĠDir\":30094,\"ãĥ»ãĥ»ãĥ»\":30095,\"_coord\":30096,\"ĠOptim\":30097,\"Monitor\":30098,\".bit\":30099,\"XXX\":30100,\"Ġtodas\":30101,\"feld\":30102,\"ÑĢÐ¸\":30103,\"imir\":30104,\"Ġpolitically\":30105,\"Ġmolecular\":30106,\"Ġtraded\":30107,\"Ġ{{$\":30108,\"ĠSwedish\":30109,\"Ġ'@/\":30110,\"_REAL\":30111,\"Ġwarehouse\":30112,\"today\":30113,\",L\":30114,\"orp\":30115,\"<section\":30116,\"-br\":30117,\"yme\":30118,\"ĠUserService\":30119,\"Ġliberty\":30120,\"Ġmomento\":30121,\"(Image\":30122,\"<size\":30123,\"Sch\":30124,\"Ġjog\":30125,\"iology\":30126,\"arently\":30127,\"Ġquantum\":30128,\"ĠAbu\":30129,\"Ġrim\":30130,\"Ġmana\":30131,\"FontSize\":30132,\"Building\":30133,\"stairs\":30134,\"AILABLE\":30135,\"Ġ&'\":30136,\"Ġsect\":30137,\"Ġsigh\":30138,\"(batch\":30139,\".IContainer\":30140,\"poll\":30141,\"ĠCorps\":30142,\"Îµ\":30143,\"aru\":30144,\"ĠKay\":30145,\".range\":30146,\"_clicked\":30147,\"ĠRoberts\":30148,\".Network\":30149,\"finish\":30150,\"-Man\":30151,\"Ġcolleges\":30152,\"ĠFine\":30153,\"\\\")),Ċ\":30154,\"film\":30155,\"Ġreminded\":30156,\"Ġgesture\":30157,\"outil\":30158,\"Ġthreading\":30159,\"Ġobjet\":30160,\"Ġtours\":30161,\"activated\":30162,\".mkdir\":30163,\"=user\":30164,\"Ġrede\":30165,\"fÃ¼\":30166,\"_SYSTEM\":30167,\"pv\":30168,\"Ġcongr\":30169,\"Ġmassasje\":30170,\"Ġpractition\":30171,\"University\":30172,\"Ġtabindex\":30173,\"Ðĺ\":30174,\"Sets\":30175,\"Ġcounties\":30176,\"guest\":30177,\"fan\":30178,\"Ġworden\":30179,\".di\":30180,\"Ð½Ð°Ñĩ\":30181,\"Â¿\":30182,\"igDecimal\":30183,\"Ġshore\":30184,\"ĠgÃ¶\":30185,\"Ġrepairs\":30186,\"Ġhelpers\":30187,\"Ġcentered\":30188,\"OLLOW\":30189,\"ĠmapStateToProps\":30190,\"Ġcents\":30191,\"<A\":30192,\"Ġexpectation\":30193,\"October\":30194,\"Ġbgcolor\":30195,\"cales\":30196,\".CON\":30197,\"ĠVel\":30198,\"Ġcrying\":30199,\"-season\":30200,\"Ġfunctioning\":30201,\"_LOCATION\":30202,\"Ã¼ss\":30203,\"bery\":30204,\"Para\":30205,\"ominator\":30206,\"-le\":30207,\"Ġethical\":30208,\"hashtags\":30209,\"emplo\":30210,\"ĠnÃºmero\":30211,\"(activity\":30212,\".Stop\":30213,\".strftime\":30214,\"ILD\":30215,\"Ġtoe\":30216,\"ĉNode\":30217,\"\\\")čĊčĊ\":30218,\"ĠPuerto\":30219,\"Ġexecuting\":30220,\"ĠGUID\":30221,\"Ġopposing\":30222,\"alph\":30223,\"Ġexhibit\":30224,\"_flash\":30225,\"Ġmeille\":30226,\"ĠjsonObject\":30227,\"Hero\":30228,\"ainted\":30229,\"_DOM\":30230,\"Ġwil\":30231,\"Ġslope\":30232,\"ĠmÃ¥\":30233,\"ĠIraqi\":30234,\"Ġorganize\":30235,\"ĉjQuery\":30236,\"HUD\":30237,\"shine\":30238,\".we\":30239,\"ĠSkills\":30240,\"ponsor\":30241,\"Ġconclusions\":30242,\"Ġreforms\":30243,\"Ġreluct\":30244,\"named\":30245,\"ĠOliver\":30246,\"Ġ//}Ċ\":30247,\"-looking\":30248,\"Ġfog\":30249,\"ĠHO\":30250,\"ĠFried\":30251,\"Ġinevitable\":30252,\"ĠDataGridView\":30253,\"Hour\":30254,\"illes\":30255,\"logical\":30256,\"Ġconnectivity\":30257,\".twig\":30258,\"ĠKyle\":30259,\"(dst\":30260,\"-Sh\":30261,\"ĠStudios\":30262,\"(Level\":30263,\".jet\":30264,\"_PROTO\":30265,\"-decoration\":30266,\"OTHER\":30267,\"Ġreadily\":30268,\".Parameter\":30269,\"Ġmultiply\":30270,\"ĠLIB\":30271,\"armed\":30272,\"Ġsooner\":30273,\"æĦ\":30274,\"_ES\":30275,\"Ġfossil\":30276,\"ĠAnc\":30277,\"âĢľThis\":30278,\"lodash\":30279,\"Python\":30280,\"Ġhistogram\":30281,\"western\":30282,\"Ġinfant\":30283,\"Ġcoordinator\":30284,\"Ġnib\":30285,\":m\":30286,\"Ġrespected\":30287,\"Ġdefinit\":30288,\"&T\":30289,\"_pad\":30290,\"ĠTrigger\":30291,\"thal\":30292,\"ĠimageNamed\":30293,\"Ġbeaten\":30294,\"ĉrc\":30295,\"ĠPalace\":30296,\"Ġhazard\":30297,\"Ġisolation\":30298,\"_rc\":30299,\"contre\":30300,\"OUTPUT\":30301,\"Ġreign\":30302,\"ĠPlate\":30303,\"ATES\":30304,\"Ġflux\":30305,\"Ġpacks\":30306,\".getSelected\":30307,\"Ġparticipated\":30308,\"Ġneedle\":30309,\"-depth\":30310,\"::::::\":30311,\"-law\":30312,\"inspace\":30313,\"onitor\":30314,\"=no\":30315,\"ĠAtomic\":30316,\"ĠBrain\":30317,\"Editable\":30318,\"-sc\":30319,\"redential\":30320,\"ĠPerry\":30321,\"kie\":30322,\"Ġ----------Ċ\":30323,\".stroke\":30324,\"(Intent\":30325,\"Ġunity\":30326,\"umlah\":30327,\"Further\":30328,\"Ġprze\":30329,\"ĠsÃ¸\":30330,\"ãĤĬ\":30331,\"ĠPROCUREMENT\":30332,\"ĠHousing\":30333,\"Ġattorneys\":30334,\"Ġcompose\":30335,\"attering\":30336,\"\\\"What\":30337,\"draul\":30338,\"Ġstraightforward\":30339,\"Instant\":30340,\".JTextField\":30341,\"Ġtrades\":30342,\"Ð»Ð°\":30343,\"Ġ{!\":30344,\"Ġlately\":30345,\"IMG\":30346,\"ĠAld\":30347,\"ĠINNER\":30348,\"Ġcartoon\":30349,\".Source\":30350,\"FALSE\":30351,\"Ġdough\":30352,\"fen\":30353,\"(rect\":30354,\"DataTable\":30355,\"Nick\":30356,\"ĠButter\":30357,\"reads\":30358,\"_comments\":30359,\"ENV\":30360,\"ĠConnecticut\":30361,\"-FIRST\":30362,\"ĉĉĉĠĠĠĠĠ\":30363,\"achi\":30364,\".Msg\":30365,\"rection\":30366,\"Ġrelaxed\":30367,\"Ġshaft\":30368,\"Ġef\":30369,\"ĠAdding\":30370,\"Ġbreach\":30371,\"Ġï¼ļ\":30372,\"rama\":30373,\"Ġconducting\":30374,\"Ġ(;\":30375,\"(gl\":30376,\"ĠCAUSED\":30377,\"ashi\":30378,\"ĠFLAG\":30379,\"ĠCommerce\":30380,\"ĠINTEGER\":30381,\"hours\":30382,\"ĠSchools\":30383,\"Ġnucle\":30384,\"Again\":30385,\"proj\":30386,\"Ġseventh\":30387,\"EMPLARY\":30388,\"(mock\":30389,\"'],čĊ\":30390,\"_SPEED\":30391,\">false\":30392,\"Ġspa\":30393,\"ĠNear\":30394,\"ìķ\":30395,\"Ġintrig\":30396,\"_members\":30397,\"wave\":30398,\"Ġanalysts\":30399,\"_OS\":30400,\"edin\":30401,\"ĠFri\":30402,\"Ġretrieved\":30403,\"Regular\":30404,\"_obs\":30405,\"EXPORT\":30406,\"')}}\\\"\":30407,\"\\\"class\":30408,\"__((\":30409,\"bucket\":30410,\"Ġstro\":30411,\"ĠPatch\":30412,\"ystick\":30413,\"fulness\":30414,\"apos\":30415,\"Da\":30416,\"ĉĉĉĉĉĠĠĠ\":30417,\"Ġenrich\":30418,\"unordered\":30419,\"hole\":30420,\"Cong\":30421,\"<Product\":30422,\"ĠCurt\":30423,\"(the\":30424,\"_lower\":30425,\"Ġavoiding\":30426,\"Ġbuzz\":30427,\"Ġviable\":30428,\"uba\":30429,\"-is\":30430,\"arel\":30431,\"Ġacted\":30432,\"-details\":30433,\"à¸ĩ\":30434,\"ĠTheory\":30435,\"ĠPun\":30436,\"ĠAnonymous\":30437,\"...\\\"Ċ\":30438,\"Ã¨res\":30439,\"åı¯\":30440,\"ĠVision\":30441,\"_sem\":30442,\"asha\":30443,\"Ġcelebrity\":30444,\"ĠendDate\":30445,\"Ġpopulate\":30446,\"Ġcuis\":30447,\"quant\":30448,\"floor\":30449,\"Ġglobally\":30450,\"Ġcruise\":30451,\"ĠStanley\":30452,\"Ġbikes\":30453,\".getConnection\":30454,\"Ġpoorly\":30455,\"_other\":30456,\"amping\":30457,\".\\\");ĊĊ\":30458,\"odi\":30459,\"_ADMIN\":30460,\".colors\":30461,\"ĠGaming\":30462,\">';ĊĊ\":30463,\"STRUCT\":30464,\"QR\":30465,\"IDs\":30466,\"(arguments\":30467,\"_aux\":30468,\"(Event\":30469,\"_PRIVATE\":30470,\"ĠTrek\":30471,\"Ġdownloads\":30472,\"mutable\":30473,\"_STRUCT\":30474,\"(wx\":30475,\"Ġdomains\":30476,\"jspx\":30477,\"ĠViagra\":30478,\"Commands\":30479,\"Js\":30480,\".cfg\":30481,\"ContentPane\":30482,\"ĠEditText\":30483,\"à¥įà¤\":30484,\"Attach\":30485,\"ĠARM\":30486,\"positive\":30487,\"ĠGenerated\":30488,\"Ġseized\":30489,\"=:\":30490,\"Ġelectronics\":30491,\"ĠAppComponent\":30492,\"/',Ċ\":30493,\".equalsIgnoreCase\":30494,\"Doctrine\":30495,\"disk\":30496,\"ĠPolitical\":30497,\"CHO\":30498,\"<F\":30499,\"ĉheight\":30500,\"ĠBug\":30501,\".le\":30502,\"ikh\":30503,\"Ġmilliseconds\":30504,\"Ġconstitu\":30505,\"mag\":30506,\".nl\":30507,\"-range\":30508,\"anggal\":30509,\"',[\":30510,\"ropolitan\":30511,\"ĠÃľ\":30512,\"ĠUC\":30513,\".desc\":30514,\"-LAST\":30515,\"fstream\":30516,\"ibil\":30517,\"Ġfier\":30518,\"VERY\":30519,\"Ġë³\":30520,\"IRT\":30521,\"_UI\":30522,\"(abs\":30523,\"Ġknees\":30524,\"Ġrookie\":30525,\"ĠVac\":30526,\"arena\":30527,\"commend\":30528,\"-\\\\\":30529,\"ĠSUBSTITUTE\":30530,\"Soft\":30531,\"Ġpartir\":30532,\"wealth\":30533,\"è¦ģ\":30534,\"(dataset\":30535,\"ĠClimate\":30536,\"-show\":30537,\"Ġreliability\":30538,\"_chunk\":30539,\"ä»£\":30540,\"_stock\":30541,\"ĠEXEMPLARY\":30542,\"ï¸ı\":30543,\"ĠvÃŃ\":30544,\"Ġsmiled\":30545,\"Ġdrill\":30546,\".Function\":30547,\"ĠSI\":30548,\"Ġregression\":30549,\"-X\":30550,\"ĠJar\":30551,\"pref\":30552,\"ĉsuccess\":30553,\"ĠHitler\":30554,\"Ġinstinct\":30555,\"Ġfemmes\":30556,\"Ġlover\":30557,\"<Ċ\":30558,\"Ġmultiplier\":30559,\"ril\":30560,\"Resize\":30561,\"ĠAuthorization\":30562,\"ĠKan\":30563,\"DispatchToProps\":30564,\"Ġcrops\":30565,\"tokens\":30566,\"ecn\":30567,\"entially\":30568,\"ĠINTERRUPTION\":30569,\"fake\":30570,\"Undefined\":30571,\"ĠAK\":30572,\"ĠTestCase\":30573,\"Ġrab\":30574,\"Ġtorrent\":30575,\"ĠOt\":30576,\"Bars\":30577,\"Ġlecture\":30578,\"Ġenjo\":30579,\"Ġresponds\":30580,\"Ġindexed\":30581,\"OfWork\":30582,\"_chain\":30583,\"))->\":30584,\"ĠBeauty\":30585,\"Ġ`<\":30586,\"Ġtouching\":30587,\"Ġ|--\":30588,\"ĉflag\":30589,\"normalize\":30590,\"Ġtrapped\":30591,\"Ġestablishing\":30592,\"/build\":30593,\"AJ\":30594,\"fy\":30595,\"-react\":30596,\"avn\":30597,\"RIPTION\":30598,\"Ġkut\":30599,\"ĠFashion\":30600,\"ĠInform\":30601,\"curities\":30602,\"<byte\":30603,\"ĠUkrain\":30604,\"Ġsug\":30605,\"Ġconsisting\":30606,\"oodle\":30607,\".ctx\":30608,\".ToList\":30609,\"Ġcommentary\":30610,\"Ġtransfers\":30611,\"Ġnost\":30612,\"ihad\":30613,\"ĠUpper\":30614,\"Ġconfusing\":30615,\"missing\":30616,\"-cl\":30617,\"Ġbounding\":30618,\"Ġcongressional\":30619,\"Ġrevealing\":30620,\"dh\":30621,\"rup\":30622,\"Ġtres\":30623,\"repeat\":30624,\",ĊĊĊĊ\":30625,\"_tac\":30626,\"Ġexped\":30627,\"Girl\":30628,\"horizontal\":30629,\"Ġ\\\"../../../\":30630,\"(option\":30631,\"Ġweiter\":30632,\"ĉsql\":30633,\"Ġ=>{Ċ\":30634,\"Ġgarlic\":30635,\"Ġrepr\":30636,\"Ġreplies\":30637,\"(prop\":30638,\"Ġspirits\":30639,\"Ġinspire\":30640,\"Ġbasement\":30641,\".reject\":30642,\"Ġhints\":30643,\"Ġpolling\":30644,\"ĉĠĊ\":30645,\"_rating\":30646,\"Ġcath\":30647,\"avier\":30648,\"Ġcompressed\":30649,\"ĠVS\":30650,\"]'\":30651,\"Ġjudicial\":30652,\"ĠTrend\":30653,\"training\":30654,\"ESTAMP\":30655,\"ognition\":30656,\"Äģ\":30657,\"SENT\":30658,\"ventions\":30659,\"Ġconsultant\":30660,\"umph\":30661,\"ĠuserService\":30662,\",NULL\":30663,\"kh\":30664,\"Dear\":30665,\"_BAD\":30666,\"itations\":30667,\"Ġmetaph\":30668,\"'Ã©\":30669,\"andise\":30670,\"-font\":30671,\".chart\":30672,\"Ġsg\":30673,\"_Controller\":30674,\".jpeg\":30675,\"ĠULONG\":30676,\"ĉgame\":30677,\"(ss\":30678,\"ĠMaj\":30679,\"ĉgo\":30680,\"ĠSad\":30681,\"ĠBerg\":30682,\"ĠMine\":30683,\"Pack\":30684,\"Ġresistant\":30685,\"ĠROM\":30686,\"Ġpeg\":30687,\"ĠStanford\":30688,\"ĠYahoo\":30689,\"Ġscaled\":30690,\"Ġlan\":30691,\"=[]\":30692,\"\\\"/></\":30693,\"Ġplots\":30694,\".*Ċ\":30695,\"Ġtraveled\":30696,\"ĠOscar\":30697,\"VL\":30698,\"Ġlinking\":30699,\"Ġtires\":30700,\"Ġ'*'\":30701,\"ĠBuffered\":30702,\"eri\":30703,\"Ġ****\":30704,\"Ġoverlook\":30705,\".Non\":30706,\"ĠrÃ©s\":30707,\"Ġegy\":30708,\"å°ı\":30709,\"Ġattacker\":30710,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":30711,\".sync\":30712,\"ASCADE\":30713,\"Ground\":30714,\"Ġdecay\":30715,\"ĠTon\":30716,\"Ġjewelry\":30717,\"Ġbypass\":30718,\"Ġmembr\":30719,\"RNA\":30720,\"<System\":30721,\"ĠMedicare\":30722,\"(net\":30723,\"osi\":30724,\"HB\":30725,\"DEC\":30726,\"{EIF\":30727,\"_fill\":30728,\"Ġtravelling\":30729,\"observer\":30730,\"Ġconsulting\":30731,\"REAT\":30732,\"Phase\":30733,\"(ii\":30734,\"ĠSUM\":30735,\">ččĊ\":30736,\"Ġsud\":30737,\"ĉbackground\":30738,\"Ġscholars\":30739,\"-muted\":30740,\"arÃ¡\":30741,\"Ġ=====\":30742,\"Ġ____\":30743,\"Creat\":30744,\"enever\":30745,\"/wp\":30746,\"ĠVPN\":30747,\"ErrorCode\":30748,\")],Ċ\":30749,\"(builder\":30750,\"ĠEnemy\":30751,\"Sensor\":30752,\"usa\":30753,\"Ġtriggers\":30754,\"Ġplayoffs\":30755,\"_REQ\":30756,\"Ġ(~\":30757,\"ĠBarry\":30758,\"Ġpermanently\":30759,\"ĠRUN\":30760,\"Ġbure\":30761,\".Fatalf\":30762,\"Ġchick\":30763,\"ĉpanic\":30764,\"psi\":30765,\"oka\":30766,\"éĢī\":30767,\">[\":30768,\"Ġunderstands\":30769,\"ĠJunior\":30770,\"ĠINFO\":30771,\"=mysqli\":30772,\"ustain\":30773,\"-source\":30774,\"serv\":30775,\"ĠCREATE\":30776,\".au\":30777,\"Ġsells\":30778,\"ĠĠĊĠĠĊ\":30779,\"Europe\":30780,\"zw\":30781,\"preh\":30782,\"ĠNSA\":30783,\"Ġxy\":30784,\"à¸´\":30785,\"ĠBeyond\":30786,\"Instead\":30787,\"NonQuery\":30788,\"Ġarise\":30789,\"Ġavoided\":30790,\".emplace\":30791,\"_models\":30792,\"}),Ċ\":30793,\"Ġhid\":30794,\"Ġ&_\":30795,\".points\":30796,\".getWidth\":30797,\".Exec\":30798,\"Ġ////\":30799,\"ĠSessions\":30800,\"...\\\\\":30801,\"ĠColomb\":30802,\"Ġacceleration\":30803,\"restore\":30804,\"Ġile\":30805,\"obic\":30806,\"<Node\":30807,\"ĠDX\":30808,\"ĠBesides\":30809,\".age\":30810,\"ĠContains\":30811,\"National\":30812,\"ĠImplementation\":30813,\"Ġeffic\":30814,\"ĠRM\":30815,\"Hy\":30816,\"ĠWedding\":30817,\"okies\":30818,\"Ġrecursive\":30819,\"Ġprosecutors\":30820,\".Selection\":30821,\"ĠFormula\":30822,\"BeenCalled\":30823,\"[ii\":30824,\"ĠFran\":30825,\"Ġtragedy\":30826,\"_FEATURE\":30827,\"Ļ¨\":30828,\"compass\":30829,\"ĠBh\":30830,\"?ĊĊĊ\":30831,\".writer\":30832,\"ĠHour\":30833,\"DbContext\":30834,\"iov\":30835,\"amon\":30836,\"repr\":30837,\"éĥ\":30838,\"ĉfi\":30839,\"']]\":30840,\"ĠDry\":30841,\".ro\":30842,\"ĠObserv\":30843,\"æłĩ\":30844,\"Former\":30845,\"ĠBalance\":30846,\"ĉjson\":30847,\"Ġprzy\":30848,\"ISS\":30849,\"(sock\":30850,\"ĠLINE\":30851,\"Ġdece\":30852,\"Ġally\":30853,\"Ġtendency\":30854,\"Fun\":30855,\"Ġschemes\":30856,\"Ġinterven\":30857,\"æĺİ\":30858,\"Ġadverse\":30859,\"quotelev\":30860,\"Ġsacrific\":30861,\"_side\":30862,\"Ġmutex\":30863,\"AGIC\":30864,\"Ġoccurring\":30865,\"ĠCommunication\":30866,\"umar\":30867,\"ç¼ĸ\":30868,\"ĠTreatment\":30869,\".person\":30870,\"ĠLC\":30871,\"Ġech\":30872,\"((\\\"\":30873,\"ĠDisease\":30874,\"Ã¤d\":30875,\"ĠAZ\":30876,\".Account\":30877,\"Ġcontinuously\":30878,\"ENDING\":30879,\"ĠRETURN\":30880,\"-string\":30881,\".filename\":30882,\"synthesize\":30883,\"Responder\":30884,\"(opts\":30885,\"regs\":30886,\"Ġnuest\":30887,\"Peer\":30888,\"//------------------------------------------------\":30889,\"Ġgauge\":30890,\"ĠKin\":30891,\".schema\":30892,\"Ġarrange\":30893,\"ĠBlake\":30894,\"_TypeInfo\":30895,\"Cover\":30896,\"ĠHampshire\":30897,\"Paper\":30898,\"-inner\":30899,\"utility\":30900,\"Ġcrossorigin\":30901,\"FOR\":30902,\"Ġignoring\":30903,\"ĠDD\":30904,\"avan\":30905,\"Ġtraditions\":30906,\"ĠgetString\":30907,\"Ġethics\":30908,\"ĠMaterials\":30909,\"DESC\":30910,\"Ġenzym\":30911,\"iolet\":30912,\"ĠChip\":30913,\"ĠMcDonald\":30914,\"Ġnerve\":30915,\"çĦ\":30916,\"\\\")]\":30917,\"æ±Ĥ\":30918,\"ĠSugar\":30919,\"_SIM\":30920,\"jpeg\":30921,\"Ġdiscretion\":30922,\"ĠTN\":30923,\"bove\":30924,\"ĠMinimum\":30925,\"ĠFormGroup\":30926,\"Ġworkforce\":30927,\"ĠExecution\":30928,\"errer\":30929,\"ĉĠĠĠĠĉ\":30930,\"Ġprescribed\":30931,\".TextAlign\":30932,\"OPEN\":30933,\"ĠPB\":30934,\"imity\":30935,\"ĠExternal\":30936,\"Â°C\":30937,\"ĠApplicationController\":30938,\"Ġbarr\":30939,\"implicit\":30940,\"_dot\":30941,\"ĠColon\":30942,\"COLOR\":30943,\".Project\":30944,\"*</\":30945,\"-xl\":30946,\"Ġosc\":30947,\"(pattern\":30948,\"')}Ċ\":30949,\"successful\":30950,\"alog\":30951,\"Students\":30952,\"]string\":30953,\"anton\":30954,\"atti\":30955,\"chemical\":30956,\".inf\":30957,\"(dr\":30958,\":UIControlState\":30959,\"toInt\":30960,\"]</\":30961,\"Ð°ÐµÐ¼\":30962,\"ĠÅ¾\":30963,\".ActionListener\":30964,\".SEVERE\":30965,\"ĠSalv\":30966,\"_TRAN\":30967,\"/internal\":30968,\"Ġwelcomed\":30969,\".comment\":30970,\"mutation\":30971,\"ĠFAQ\":30972,\".one\":30973,\"ĠLAB\":30974,\"\\\"}}\":30975,\"ĠRol\":30976,\"ieved\":30977,\"Ġadventures\":30978,\"Ġfuneral\":30979,\"Ġspouse\":30980,\"(open\":30981,\"ĠReady\":30982,\"Ġtourism\":30983,\"adin\":30984,\"_face\":30985,\"âĤģ\":30986,\"Ġmigrants\":30987,\"ĠPurchase\":30988,\"cord\":30989,\"ĠOUTPUT\":30990,\"))čĊčĊ\":30991,\"Segue\":30992,\"tabs\":30993,\"Ġdots\":30994,\"Ġnail\":30995,\"borne\":30996,\"Ġdesires\":30997,\"Ġprevented\":30998,\"']==\":30999,\"Ġtimely\":31000,\"ICA\":31001,\"Scanner\":31002,\"ĠLucas\":31003,\"Ġgithub\":31004,\"'][]\":31005,\"dia\":31006,\"conomic\":31007,\"Ġdieser\":31008,\"unders\":31009,\".Handler\":31010,\"?\\\",\":31011,\".datab\":31012,\"Ġadvise\":31013,\".animation\":31014,\"Ġoverhead\":31015,\"Ġobstacles\":31016,\"_join\":31017,\"ĠmÃ©\":31018,\"Flat\":31019,\".dispose\":31020,\"ĠExpected\":31021,\"Ġflew\":31022,\"Ġembod\":31023,\"_slug\":31024,\"Ġnamely\":31025,\"Ġwitnessed\":31026,\"solid\":31027,\".legend\":31028,\"Qual\":31029,\"_surface\":31030,\"ãĥ©\":31031,\"America\":31032,\"Ġaffiliates\":31033,\"ĠPros\":31034,\"_extension\":31035,\"binding\":31036,\"STALL\":31037,\".ready\":31038,\"Ġcopying\":31039,\"ĠHence\":31040,\"Ġdiscord\":31041,\"_ship\":31042,\"PropertyName\":31043,\"ĉĉĠĠĠĠĠĠĠĠĠĠĠ\":31044,\"Ġachieving\":31045,\"ĠBec\":31046,\"Zip\":31047,\"Sometimes\":31048,\"ãģĭ\":31049,\"Ġcontra\":31050,\"Ġpunish\":31051,\"Ġinsulin\":31052,\"Ġdisappear\":31053,\"_enum\":31054,\".aut\":31055,\"Ġhasattr\":31056,\"affected\":31057,\"she\":31058,\"$table\":31059,\"ksi\":31060,\"Ġlacking\":31061,\"Ġdiscounts\":31062,\"Stmt\":31063,\"ĠArgentina\":31064,\"Ġunpack\":31065,\"ĠRoutedEventArgs\":31066,\"Ġ'?\":31067,\"interop\":31068,\"Ġsofa\":31069,\"Ġdyn\":31070,\"ĠGrace\":31071,\"Ġintegrate\":31072,\"Ùĥ\":31073,\"Ġdelays\":31074,\"ĠImplement\":31075,\"Proof\":31076,\"Ġapplicants\":31077,\"ĠLeather\":31078,\"ìĸ´\":31079,\"Ġenjoyable\":31080,\"Spinner\":31081,\"/z\":31082,\"Ġfoam\":31083,\"ĠLaboratory\":31084,\"Ġresearcher\":31085,\"ĠChristianity\":31086,\"Ġcustomize\":31087,\"Ġcipher\":31088,\"Ġdod\":31089,\"ĠsÃ³\":31090,\"@Entity\":31091,\"ONLY\":31092,\"inventory\":31093,\"Ġconclude\":31094,\"Ġcuenta\":31095,\"ĠCohen\":31096,\"-income\":31097,\"mbH\":31098,\"mentation\":31099,\"Ġverw\":31100,\"udp\":31101,\"AML\":31102,\".comboBox\":31103,\"fh\":31104,\"jobs\":31105,\"FileSync\":31106,\"ĠBarbara\":31107,\"ĠScan\":31108,\"creenshot\":31109,\"ĠOrth\":31110,\".viewDidLoad\":31111,\"ĠARRAY\":31112,\",@\":31113,\"/int\":31114,\"Generate\":31115,\"Ġdemonstrates\":31116,\"ĠZend\":31117,\"åĪĹ\":31118,\"ĉvolatile\":31119,\"=r\":31120,\"Ġfm\":31121,\"ĉbuffer\":31122,\"enate\":31123,\".Combine\":31124,\"Ġmisc\":31125,\"chemas\":31126,\"Ġpurely\":31127,\"ĠglVertex\":31128,\".Rest\":31129,\"Ġrecalled\":31130,\"Ġfreel\":31131,\"Ġsque\":31132,\"Tracker\":31133,\"ĠPhp\":31134,\"ĠDistance\":31135,\"Ġbeast\":31136,\"Complex\":31137,\"Ġconsiders\":31138,\"ç½ĳ\":31139,\"tribution\":31140,\"Ġcompliment\":31141,\"_lineno\":31142,\"ĠMutable\":31143,\"Ġundef\":31144,\"ĠGem\":31145,\"Ġcompounds\":31146,\".uuid\":31147,\"Ġanonym\":31148,\"Ġstairs\":31149,\"ĠDbSet\":31150,\"wort\":31151,\"ĠSens\":31152,\".Before\":31153,\"Ġendforeach\":31154,\"ĠTogether\":31155,\"atility\":31156,\"Ġmoisture\":31157,\"-${\":31158,\"(Test\":31159,\"TB\":31160,\"music\":31161,\"Ġinsist\":31162,\"Ġheadline\":31163,\".And\":31164,\"PATCH\":31165,\"ĠPrepare\":31166,\"Ġswitches\":31167,\"*p\":31168,\"ĠYe\":31169,\"_abs\":31170,\".handler\":31171,\"Ġassignments\":31172,\"Preference\":31173,\"ENTITY\":31174,\"Ġpipes\":31175,\"ĠAlertDialog\":31176,\"ographical\":31177,\"Ġpatio\":31178,\"Ġwebpack\":31179,\"bps\":31180,\"NavLink\":31181,\".Number\":31182,\"ĠArmor\":31183,\"ĠPeters\":31184,\"ĠDesc\":31185,\"duino\":31186,\"ĠIcons\":31187,\".getHeight\":31188,\"ĠtextView\":31189,\"ĉNULL\":31190,\"allocate\":31191,\"}${\":31192,\"ĠPrize\":31193,\"-num\":31194,\".Move\":31195,\"è¾ĵåħ¥\":31196,\".camera\":31197,\"Problem\":31198,\"ĉtypedef\":31199,\"(store\":31200,\"ĠDISCLAIMED\":31201,\"Ġsubstantially\":31202,\"FFF\":31203,\"Ġepsilon\":31204,\"Ġinequality\":31205,\"_children\":31206,\"ä¸ĩ\":31207,\"relu\":31208,\"Piece\":31209,\"antry\":31210,\"babel\":31211,\"vetica\":31212,\"Ġsurveys\":31213,\"Ġdetector\":31214,\"ĉargs\":31215,\".SelectedValue\":31216,\"Ġinterference\":31217,\"...)Ċ\":31218,\".STRING\":31219,\"ĠTyler\":31220,\"ĠCatalog\":31221,\"Vertices\":31222,\"ĠProjects\":31223,\"ĠLeban\":31224,\".\\\")ĊĊ\":31225,\".kernel\":31226,\"Ġrides\":31227,\"ĠMut\":31228,\"anth\":31229,\"Ð¾ÑĢÐ¼\":31230,\"ennial\":31231,\".tasks\":31232,\".setProperty\":31233,\"ategori\":31234,\"æľĢ\":31235,\"/con\":31236,\"brace\":31237,\"ĠNSError\":31238,\"']));Ċ\":31239,\"listed\":31240,\"ĠPreview\":31241,\"Activate\":31242,\"Ġcycl\":31243,\"-active\":31244,\"had\":31245,\"Too\":31246,\"Ġregist\":31247,\"lical\":31248,\"Ġpoetry\":31249,\"Imports\":31250,\"ï¼ģï¼ģ\":31251,\":<\":31252,\"Ġcharm\":31253,\"ĠCoun\":31254,\"ollider\":31255,\"Ġhw\":31256,\"}`Ċ\":31257,\"=args\":31258,\"ĠNeuro\":31259,\"itical\":31260,\"ienen\":31261,\"ĠDot\":31262,\"_ONLY\":31263,\"DN\":31264,\"ĠPlayStation\":31265,\"Ġsteep\":31266,\"Ġpractically\":31267,\"Ġapplicant\":31268,\"Ġarom\":31269,\"anic\":31270,\"ĉdisplay\":31271,\"Ġterminated\":31272,\"Ġclarity\":31273,\"ĠMenuItem\":31274,\"ĠKur\":31275,\"ije\":31276,\"_week\":31277,\"(dict\":31278,\"_records\":31279,\"ĠCosta\":31280,\"Ġket\":31281,\"Extensions\":31282,\"Ġneuken\":31283,\"insi\":31284,\"_inc\":31285,\"Ġæĸ\":31286,\"Ġeinf\":31287,\"ĠRisk\":31288,\"Ġelevated\":31289,\"pers\":31290,\"UDA\":31291,\"ĠKN\":31292,\"Ġlined\":31293,\"ĠMorm\":31294,\");ĊĊĊĊ\":31295,\">}Ċ\":31296,\"plaint\":31297,\"getText\":31298,\"Ġindividually\":31299,\"Ġcheckbox\":31300,\"UY\":31301,\"ĠLamb\":31302,\"Ġdysfunction\":31303,\"ĠLar\":31304,\"à°\":31305,\"ĠCreating\":31306,\"');ĊĊĊ\":31307,\"\\\"They\":31308,\"locations\":31309,\"_CORE\":31310,\"Interaction\":31311,\"umbnails\":31312,\"ĠPartner\":31313,\"brit\":31314,\"Ġlesser\":31315,\"ĠSlot\":31316,\"setAttribute\":31317,\"ĠWave\":31318,\".po\":31319,\"/store\":31320,\"Ġbrowsing\":31321,\"_pd\":31322,\"sume\":31323,\"sed\":31324,\"Curve\":31325,\"Ġplasma\":31326,\"Ġsuspicious\":31327,\"ìĿ¸\":31328,\"ĠBah\":31329,\"ĠExplicit\":31330,\"_CC\":31331,\".ClientSize\":31332,\"\\\\View\":31333,\"Ġsubstit\":31334,\"loon\":31335,\"ĠGAME\":31336,\"ĠBrid\":31337,\"Ľå»º\":31338,\"_User\":31339,\"Ġsquares\":31340,\"fone\":31341,\"Ġsacred\":31342,\"ughs\":31343,\"]interface\":31344,\"ĠThrow\":31345,\"ĠKirk\":31346,\"Ġempire\":31347,\"Ġassessed\":31348,\"Tax\":31349,\"ĠHeaven\":31350,\"-buffer\":31351,\"_STATIC\":31352,\"Ã©nÃ©\":31353,\"-bordered\":31354,\"Ġpunct\":31355,\"(mode\":31356,\"Ġkeine\":31357,\"Sent\":31358,\"ĠCalcul\":31359,\"ĠEve\":31360,\"Ġstylish\":31361,\"Ġoils\":31362,\".TestCase\":31363,\"Ġtrademark\":31364,\"Ġliterary\":31365,\"Ġconcentrations\":31366,\"ĠRelations\":31367,\"(Class\":31368,\"Ġstdin\":31369,\"ĠvÃ¦\":31370,\"backup\":31371,\".VERSION\":31372,\".AutoScaleDimensions\":31373,\"starter\":31374,\"Transactional\":31375,\"-panel\":31376,\"Studio\":31377,\"kc\":31378,\"ĠChamber\":31379,\"ĠSpiel\":31380,\"Ġrho\":31381,\"Ø§ÙĦ\":31382,\"!'\":31383,\".Attributes\":31384,\"Ġmurdered\":31385,\"apeutic\":31386,\"Ġintimate\":31387,\"ĠtextField\":31388,\"ĠBuffalo\":31389,\"dummy\":31390,\"\\\"%\":31391,\"ĠLiberty\":31392,\"obar\":31393,\"ĠTank\":31394,\"ĠPopular\":31395,\"ervisor\":31396,\"ĠIniti\":31397,\"ĠMall\":31398,\"ĠPrior\":31399,\"CAP\":31400,\"ĠClay\":31401,\"ĠCertificate\":31402,\".Lock\":31403,\"-strip\":31404,\"-driven\":31405,\"/all\":31406,\"ĠMessageBoxButtons\":31407,\"_SECRET\":31408,\"_pb\":31409,\"Ġrats\":31410,\"à¤¾à¤\":31411,\"Ġnt\":31412,\".Router\":31413,\"_topic\":31414,\"Ġtennis\":31415,\"ĠPUBLIC\":31416,\"ĠActivatedRoute\":31417,\"Ġ',Ċ\":31418,\"Ġcostume\":31419,\"Ġjokes\":31420,\".Handle\":31421,\"ĉbyte\":31422,\"Ġflavors\":31423,\"(cc\":31424,\"Ġpersonas\":31425,\"ĉimage\":31426,\"ĠNazi\":31427,\"Ġgrammar\":31428,\"ĠÃºlt\":31429,\"Ġvalve\":31430,\"Ġvic\":31431,\"ĠRachel\":31432,\"_invalid\":31433,\"Prefs\":31434,\"stdint\":31435,\"(route\":31436,\"Ġhtmlspecialchars\":31437,\"Ġpeoples\":31438,\"pline\":31439,\"Ġnv\":31440,\"ĠQuant\":31441,\"oppers\":31442,\"ĠcurrentUser\":31443,\"ĠCatal\":31444,\"Ġreconc\":31445,\"Ġconjunction\":31446,\"lx\":31447,\"amburg\":31448,\"Ġinfluential\":31449,\"danger\":31450,\"inders\":31451,\"Ġ%@\\\",\":31452,\".configuration\":31453,\"osome\":31454,\".identity\":31455,\"Ġpicker\":31456,\"nost\":31457,\"ĠDIY\":31458,\"August\":31459,\"ablo\":31460,\"Leaf\":31461,\"ĠReco\":31462,\"cko\":31463,\"DOC\":31464,\"ĠHerm\":31465,\":any\":31466,\"ĠInterview\":31467,\"ĠTex\":31468,\"xfe\":31469,\"(work\":31470,\"Ġleap\":31471,\"Heading\":31472,\"Ġquarters\":31473,\"\\\\Bundle\":31474,\"reb\":31475,\"Perhaps\":31476,\"ĠGmbH\":31477,\"Birth\":31478,\"ĉsum\":31479,\"ĠWatson\":31480,\".nil\":31481,\"ç¡\":31482,\"{}ĊĊ\":31483,\"icaid\":31484,\"Getter\":31485,\"\\\"name\":31486,\"Ġ\\\"čĊ\":31487,\"_none\":31488,\"zm\":31489,\"acute\":31490,\"uesto\":31491,\"Ġsous\":31492,\"Ġrebuild\":31493,\"Ġnewspapers\":31494,\"ĠHaz\":31495,\"Ġkits\":31496,\"ifo\":31497,\"Blur\":31498,\"Ġsuited\":31499,\"-In\":31500,\"à¯\":31501,\"ĠKeith\":31502,\"ĠNorway\":31503,\"INIT\":31504,\"ireccion\":31505,\"ieties\":31506,\"_usage\":31507,\"ĠDoug\":31508,\"rise\":31509,\"Ġtrillion\":31510,\"imited\":31511,\"ĠREL\":31512,\"alic\":31513,\"Ġcriticized\":31514,\"theorem\":31515,\"Ġcease\":31516,\"Ġsidew\":31517,\"ĠTerry\":31518,\"Ġsubsidi\":31519,\"Ġfirmly\":31520,\"Ġaws\":31521,\"Ġhott\":31522,\"Ġdressing\":31523,\"badge\":31524,\"ĠApplications\":31525,\"è¿ĶåĽŀ\":31526,\"Ġlaughed\":31527,\"Ġhobby\":31528,\"Ġmusicians\":31529,\"Ġ*.\":31530,\".placeholder\":31531,\"Ġcounters\":31532,\"ĠCapitol\":31533,\"SDK\":31534,\"Ġhelmet\":31535,\"andbox\":31536,\"quit\":31537,\"Ġcriminals\":31538,\"Ġteenager\":31539,\"(update\":31540,\"Gl\":31541,\".selection\":31542,\"Ġdischarge\":31543,\"Ġpresenting\":31544,\"ufacturer\":31545,\"_UNKNOWN\":31546,\"Ġstressed\":31547,\"åĻ¨\":31548,\"Proto\":31549,\"_correct\":31550,\"haus\":31551,\"Ġrenov\":31552,\"Ġfirearms\":31553,\"Ġtechnically\":31554,\"-browser\":31555,\"Ġcandy\":31556,\"Stroke\":31557,\"Ġexecutor\":31558,\"Ġoccurrence\":31559,\"ĠIPv\":31560,\"_INTERFACE\":31561,\"ĠRetrieve\":31562,\".bad\":31563,\"Exchange\":31564,\"Navbar\":31565,\"ĠKid\":31566,\"(getApplicationContext\":31567,\"_STOP\":31568,\"ĠBoss\":31569,\"Listeners\":31570,\"Ġshooter\":31571,\"ĠAlb\":31572,\"Ã¤ch\":31573,\"Ġpix\":31574,\".keyCode\":31575,\"alone\":31576,\"Ġabsurd\":31577,\"ĠCum\":31578,\"ĠNewtonsoft\":31579,\"ikt\":31580,\"Ġlaughing\":31581,\"Ġcapitalism\":31582,\"reeNode\":31583,\"Tx\":31584,\"_QUERY\":31585,\".Sleep\":31586,\"(login\":31587,\"WebElement\":31588,\"Ġcelebrating\":31589,\"Ġdeprecated\":31590,\"Ġmaar\":31591,\"Ġartistic\":31592,\"_ASSOC\":31593,\"ĠBorderRadius\":31594,\"ĉwp\":31595,\"Ġsurvivors\":31596,\"Inner\":31597,\"-red\":31598,\"Ġprosecution\":31599,\"_pp\":31600,\"(\\\"</\":31601,\"Ġ^=\":31602,\"Ġlam\":31603,\"ĠTrading\":31604,\"flare\":31605,\"Detector\":31606,\"MF\":31607,\"ĠEmergency\":31608,\"ĠEagles\":31609,\"quad\":31610,\"ĠIncre\":31611,\"pliance\":31612,\"\\\\Migration\":31613,\"Ġupgrades\":31614,\"CPU\":31615,\"aggi\":31616,\"fprintf\":31617,\"igion\":31618,\"Ġbeautifully\":31619,\"Ġdried\":31620,\"_HIGH\":31621,\"Ġgpio\":31622,\"MSC\":31623,\"ĠDeputy\":31624,\"ĠDecl\":31625,\"Ġtreasure\":31626,\"sgiving\":31627,\"_sidebar\":31628,\"Ġapartments\":31629,\"ĠWr\":31630,\"Ġboats\":31631,\"Ġbor\":31632,\".language\":31633,\"ĠUi\":31634,\"lit\":31635,\"frm\":31636,\"ancies\":31637,\"Ġmasses\":31638,\"ĠAssign\":31639,\"ĠPOL\":31640,\"ĠmapDispatchToProps\":31641,\"Ġbracket\":31642,\"ĠPap\":31643,\"ĠCi\":31644,\"ĠInto\":31645,\"Ġteammates\":31646,\"Ġforall\":31647,\"ului\":31648,\"ĠCarn\":31649,\"_INS\":31650,\"azioni\":31651,\"cep\":31652,\"Ġtourists\":31653,\"-blue\":31654,\"ĠLed\":31655,\"Ġpenet\":31656,\"ĠFo\":31657,\"Ġimaging\":31658,\"pra\":31659,\"Ġslaves\":31660,\"olerance\":31661,\"Ġincorporated\":31662,\"&,\":31663,\"uably\":31664,\"ĠKap\":31665,\"XmlElement\":31666,\"ĠMueller\":31667,\"ChangeListener\":31668,\"ĠHoliday\":31669,\"ĉĠĠĠĠĠĠĠĠĠ\":31670,\"Flex\":31671,\"ĉUser\":31672,\"\\\"]))\":31673,\"_submit\":31674,\".bold\":31675,\"Ġlocks\":31676,\"ĠCuba\":31677,\"udson\":31678,\"Hook\":31679,\"ĠWarner\":31680,\"_star\":31681,\"\\\"=>$\":31682,\"Ġcomma\":31683,\"unchecked\":31684,\"graphics\":31685,\"rors\":31686,\"GROUND\":31687,\"(public\":31688,\"Ġcustomized\":31689,\"ĠArkansas\":31690,\"ĠRew\":31691,\"Ġexpiration\":31692,\"×ķ\":31693,\"ĠCul\":31694,\"Ġnons\":31695,\".Filter\":31696,\"Ġsenator\":31697,\"_definition\":31698,\"ashington\":31699,\"ymph\":31700,\"/J\":31701,\"Ġfuse\":31702,\"ramid\":31703,\"ĠSupplier\":31704,\"Ġautocomplete\":31705,\"Ġ}),\":31706,\".\\\"ĊĊĊ\":31707,\"_functions\":31708,\"ĉto\":31709,\".eval\":31710,\"ĠTObject\":31711,\"References\":31712,\"Ġheated\":31713,\"HAL\":31714,\"Ġ))}Ċ\":31715,\"}$\":31716,\"ĠBarr\":31717,\"_UNIT\":31718,\"+$\":31719,\"ĠgetValue\":31720,\"iped\":31721,\"chied\":31722,\"(vm\":31723,\"cue\":31724,\"_integer\":31725,\"_course\":31726,\"third\":31727,\"Ġrevised\":31728,\"**/Ċ\":31729,\"_DIRECT\":31730,\"OutOf\":31731,\"(\\\"(\":31732,\"ĠFeel\":31733,\"Ġreass\":31734,\"Ġsubtitle\":31735,\"peri\":31736,\"nf\":31737,\"Ġenjoys\":31738,\"Ġtreats\":31739,\")this\":31740,\"-tabs\":31741,\"ancers\":31742,\"Ġcontinent\":31743,\"Ġcardio\":31744,\"Ser\":31745,\".question\":31746,\"Ġphrases\":31747,\"Validators\":31748,\"Ġpopul\":31749,\"ĠlÃŃ\":31750,\"song\":31751,\"_INTERNAL\":31752,\"Ġadviser\":31753,\"Ġpuzz\":31754,\"Ġambitious\":31755,\"ĠTob\":31756,\"ĠDP\":31757,\"Ġpresidency\":31758,\"Ġsurrender\":31759,\"Ġwatches\":31760,\"_binary\":31761,\"ĠSoon\":31762,\"Ġcanada\":31763,\"(\\\"\\\")Ċ\":31764,\"]='\":31765,\"ĠBrandon\":31766,\"epsilon\":31767,\"rw\":31768,\".addChild\":31769,\".Copy\":31770,\"Principal\":31771,\"Photos\":31772,\"Ġmarginal\":31773,\"Ġbasics\":31774,\"eing\":31775,\"Must\":31776,\"_String\":31777,\"Ġole\":31778,\"Magento\":31779,\".customer\":31780,\"(prev\":31781,\"à¸¥\":31782,\"Ġloyalty\":31783,\"Cog\":31784,\"Ġprotocols\":31785,\"ĠCompanies\":31786,\"Ġtheoretical\":31787,\"Ġaccessing\":31788,\"ĠZen\":31789,\".ones\":31790,\"attice\":31791,\"_world\":31792,\"zes\":31793,\"Ġtattoo\":31794,\"Ġmenos\":31795,\"Ġintersect\":31796,\"\\\"];ĊĊ\":31797,\"belie\":31798,\"Ġinactive\":31799,\".readline\":31800,\"-labelled\":31801,\".done\":31802,\"lickr\":31803,\"ĠWORK\":31804,\"Ġderivative\":31805,\"Ġdatabases\":31806,\"âĤĤ\":31807,\"Ġsx\":31808,\".isArray\":31809,\"Ġys\":31810,\"Ġpada\":31811,\"ĠBullet\":31812,\"(`/\":31813,\"isActive\":31814,\"ĠCGSize\":31815,\"(equalTo\":31816,\"ĠColumbus\":31817,\"Ġmarry\":31818,\"DEV\":31819,\"_limits\":31820,\"rones\":31821,\"IAS\":31822,\"Ġtau\":31823,\"mino\":31824,\"_Write\":31825,\"ĠWine\":31826,\"Ġ[['\":31827,\"ĠPull\":31828,\"riters\":31829,\"rients\":31830,\"Ġshifting\":31831,\"upp\":31832,\"_TIMER\":31833,\"ĠConditions\":31834,\"áº¥\":31835,\"ĠOrders\":31836,\"ĠStrength\":31837,\"æīĢ\":31838,\"Ġvalidity\":31839,\"Ġfot\":31840,\"etur\":31841,\"Ġbolt\":31842,\"åĨħ\":31843,\"ĠAlong\":31844,\"oshi\":31845,\"Ġassumptions\":31846,\"Ġmagazines\":31847,\"_SPI\":31848,\"Ġpunt\":31849,\"_PRODUCT\":31850,\"Ġrelay\":31851,\"ĠJavascript\":31852,\".te\":31853,\"-es\":31854,\"Ġwidgets\":31855,\"(fs\":31856,\"<Item\":31857,\"_extra\":31858,\"Ġrecruiting\":31859,\"Et\":31860,\"Ġnecessity\":31861,\"pw\":31862,\"Ġnovels\":31863,\"ussels\":31864,\"Creator\":31865,\"ĠMVP\":31866,\"ĠOC\":31867,\"thood\":31868,\"clients\":31869,\"))*\":31870,\"Ġcharacterized\":31871,\"_SEND\":31872,\"uti\":31873,\"Ty\":31874,\".fromJson\":31875,\"@Service\":31876,\"ãĤĤ\":31877,\"Chris\":31878,\"_Is\":31879,\"ĠJohnny\":31880,\"Ġcleaner\":31881,\"ĠInitializes\":31882,\"UNK\":31883,\"(axis\":31884,\"ÐµÐ·\":31885,\"ieval\":31886,\"ĠWarriors\":31887,\"})(\":31888,\"DMI\":31889,\"âĻĢ\":31890,\"ĠTreasury\":31891,\"Ġfeas\":31892,\"Ġsla\":31893,\"_ENUM\":31894,\"lhs\":31895,\"ĠInstit\":31896,\"ippers\":31897,\"Linear\":31898,\"Reading\":31899,\"quiries\":31900,\"-cell\":31901,\"chrome\":31902,\".Search\":31903,\"INA\":31904,\"ç±»åŀĭ\":31905,\"ĠĊĠĊ\":31906,\"ĠSamuel\":31907,\"Ġmills\":31908,\"Ġdonate\":31909,\"ĠGeo\":31910,\"(rows\":31911,\"Ġsheep\":31912,\"ĠÃ©l\":31913,\"ä½ĵ\":31914,\"Ġbem\":31915,\"_UNUSED\":31916,\"ĠRCC\":31917,\"Ġintroducing\":31918,\"atta\":31919,\"ĠPriority\":31920,\"ĠFB\":31921,\"ĠSerge\":31922,\">\\\";\":31923,\"atching\":31924,\"ĠKnowledge\":31925,\"ĉThe\":31926,\";margin\":31927,\"lessness\":31928,\"opard\":31929,\"umatic\":31930,\"()));čĊ\":31931,\"Ġfals\":31932,\"(cache\":31933,\"TypeId\":31934,\"éĢļ\":31935,\"_choice\":31936,\"ĠGoth\":31937,\"ĠSites\":31938,\"MG\":31939,\"_border\":31940,\"Indices\":31941,\"Comparer\":31942,\"ĠRedistribution\":31943,\"Ġcloset\":31944,\"Ġversatile\":31945,\"Inputs\":31946,\"********************\":31947,\"Ġobesity\":31948,\"quiz\":31949,\"gra\":31950,\"(global\":31951,\"åĬ¡\":31952,\"Ġcollector\":31953,\"Ġkor\":31954,\"ovable\":31955,\"ADC\":31956,\"ĠEventHandler\":31957,\".nc\":31958,\"Ġplayback\":31959,\"ientos\":31960,\"_perm\":31961,\"_WARNING\":31962,\"ĠOlympics\":31963,\".norm\":31964,\"ĠBroadcast\":31965,\"_small\":31966,\"drive\":31967,\".iloc\":31968,\"Ġtyped\":31969,\"MEM\":31970,\"_cons\":31971,\"DMETHOD\":31972,\"Ġlun\":31973,\".distance\":31974,\"(par\":31975,\"poon\":31976,\"Ġbast\":31977,\"activities\":31978,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":31979,\":čĊčĊ\":31980,\"SER\":31981,\")&&\":31982,\"_lst\":31983,\"ĠPolish\":31984,\"Ġknocked\":31985,\"Ġfrustration\":31986,\"aukee\":31987,\"Ġphosph\":31988,\"iquid\":31989,\"_coeff\":31990,\"æŃ¤\":31991,\"Latest\":31992,\"ĠDust\":31993,\"Tipo\":31994,\"Ġmaintains\":31995,\"Ġmarsh\":31996,\"incinn\":31997,\"lbl\":31998,\"Care\":31999,\"Ġneighborhoods\":32000,\"_gpio\":32001,\"ĠArsenal\":32002,\"Dem\":32003,\"ĠWhe\":32004,\"_hook\":32005,\"Ġldc\":32006,\"ĠHarper\":32007,\"ĠBerkeley\":32008,\"Ġgraduated\":32009,\"Percent\":32010,\"Ġarriving\":32011,\"ĠAdventure\":32012,\"(scope\":32013,\"('*\":32014,\"quarter\":32015,\"ĠMarie\":32016,\"Speaking\":32017,\"_codegen\":32018,\"Ġimmun\":32019,\"caster\":32020,\"ãĤĮ\":32021,\"åķĨ\":32022,\"ĠDimensions\":32023,\".record\":32024,\"Ġtexto\":32025,\"ĠMichelle\":32026,\"Pending\":32027,\"(by\":32028,\"_PAR\":32029,\"ucht\":32030,\"bee\":32031,\".Thread\":32032,\"ampire\":32033,\"know\":32034,\"ĠClinical\":32035,\"ĠmarginBottom\":32036,\"Ġdistinguish\":32037,\".Full\":32038,\".undefined\":32039,\"ĠSequelize\":32040,\"############################################################################\":32041,\"Ġeducated\":32042,\"_OVER\":32043,\"åºı\":32044,\"ĠÂłĠÂł\":32045,\"_each\":32046,\"Ġurge\":32047,\"depart\":32048,\"Ġdonors\":32049,\"ĠAu\":32050,\"Ġbillions\":32051,\"Ġbelonging\":32052,\"_age\":32053,\"_Int\":32054,\"Ġsubstances\":32055,\"machine\":32056,\"!!!ĊĊ\":32057,\"Ġjsonify\":32058,\"ibbean\":32059,\"ĠCad\":32060,\"ĠendTime\":32061,\"Ġcycling\":32062,\"ĠUITextField\":32063,\"Ġleverage\":32064,\"Ġvanilla\":32065,\"eat\":32066,\"Launch\":32067,\"(pt\":32068,\"states\":32069,\"ĠControls\":32070,\"ĠRespons\":32071,\"ĠJake\":32072,\"Ġasleep\":32073,\"fortunate\":32074,\".nextLine\":32075,\"SizeMode\":32076,\"ìĿ¼\":32077,\"TestingModule\":32078,\"German\":32079,\"ĠInvestig\":32080,\".reverse\":32081,\"ĠBACK\":32082,\"(DateTime\":32083,\"Ġnonprofit\":32084,\"ĠExpect\":32085,\"Ġtanto\":32086,\"']),\":32087,\"ĉthe\":32088,\"Multiple\":32089,\"(getActivity\":32090,\"_WAIT\":32091,\"ĠjÃ¡\":32092,\"decor\":32093,\"levance\":32094,\"ĠGitHub\":32095,\"mination\":32096,\"_quantity\":32097,\".Scanner\":32098,\"ĠLion\":32099,\"éĶĻè¯¯\":32100,\"Ġdre\":32101,\"Ġtantra\":32102,\"ĠcontentType\":32103,\"Ġfid\":32104,\"_alt\":32105,\"NSIndexPath\":32106,\"-pl\":32107,\"åĮĸ\":32108,\"Ġantibiot\":32109,\"tables\":32110,\"acial\":32111,\"ĠRegistry\":32112,\"Ġolive\":32113,\"igers\":32114,\"Ġsubscriber\":32115,\"_pres\":32116,\"ĠSyntax\":32117,\"Ġlovers\":32118,\".Byte\":32119,\"olders\":32120,\"_forward\":32121,\"always\":32122,\"Caption\":32123,\"Priv\":32124,\"ĠTampa\":32125,\"isateur\":32126,\"-labelledby\":32127,\"ĠToString\":32128,\"ĠìĤ¬\":32129,\"Ġinitiated\":32130,\"WF\":32131,\"Ġinstitutional\":32132,\"inject\":32133,\"ĠScr\":32134,\"Ġdoctrine\":32135,\"Ġspacious\":32136,\"isure\":32137,\"ĠAna\":32138,\"\\\"time\":32139,\"essaging\":32140,\"Ġcid\":32141,\"ĠNan\":32142,\"Ġincomplete\":32143,\"TAG\":32144,\"-build\":32145,\"December\":32146,\"Ġresidual\":32147,\"(PDO\":32148,\"ĠListen\":32149,\"Ġglyph\":32150,\"Ġgaps\":32151,\"nea\":32152,\".Rect\":32153,\"Ġsau\":32154,\"ĠPhotograph\":32155,\"Ġexecutable\":32156,\"ĠExpert\":32157,\"Coroutine\":32158,\"_sizes\":32159,\"ĠNL\":32160,\".isValid\":32161,\");}Ċ\":32162,\"-reg\":32163,\"Ġciting\":32164,\"cwd\":32165,\"ĠOttawa\":32166,\"ĠBatt\":32167,\"Ġrenewable\":32168,\"Ġpreliminary\":32169,\"Ġasylum\":32170,\"Ġwrist\":32171,\"Ġutiliz\":32172,\"Ġdetention\":32173,\"Fast\":32174,\"Ġange\":32175,\"incinnati\":32176,\"Ġsteering\":32177,\"ĠNaN\":32178,\"iosity\":32179,\"/page\":32180,\"Ġè¿\":32181,\"sterol\":32182,\"Ġdisg\":32183,\"(DB\":32184,\"ĠDESCRIPTION\":32185,\"Ġ_$\":32186,\"Ġobstacle\":32187,\"Ġbizarre\":32188,\"Ġextraction\":32189,\"_expected\":32190,\"Ġloses\":32191,\"ĠCelebr\":32192,\"ĠhtmlFor\":32193,\"Ġexploit\":32194,\"Ð¾Ð»ÑĮÐ·Ð¾Ð²\":32195,\"XYZ\":32196,\"Ġmagnet\":32197,\"amped\":32198,\"Ġatoms\":32199,\"Sources\":32200,\"pectives\":32201,\"ÑģÐ»Ð¸\":32202,\"Ġ=čĊ\":32203,\"Ġdare\":32204,\"ĠWalter\":32205,\"Ġbrightness\":32206,\"Ġannotations\":32207,\"ëı\":32208,\"iske\":32209,\"Schedule\":32210,\".images\":32211,\"rosso\":32212,\"Ġ\\\"..\":32213,\"gamma\":32214,\"Ġinstructor\":32215,\"Ġoverwrite\":32216,\"-am\":32217,\"Ġdevastating\":32218,\"ĠSaints\":32219,\"Ġhs\":32220,\"Ġbonuses\":32221,\"$output\":32222,\"ijd\":32223,\"(ActionEvent\":32224,\"monitor\":32225,\"Ġmattress\":32226,\"January\":32227,\".jp\":32228,\"Ġcaracter\":32229,\"Ġimpose\":32230,\"_rest\":32231,\"ĠSignature\":32232,\"Ġcoronavirus\":32233,\"ãģĬ\":32234,\"_compare\":32235,\"Measure\":32236,\"itated\":32237,\"elijk\":32238,\"igos\":32239,\"esar\":32240,\"Ġrushed\":32241,\"metry\":32242,\"_SEPARATOR\":32243,\"_WE\":32244,\"_ATTRIBUTE\":32245,\"Ġyaml\":32246,\"Ġspecs\":32247,\"ĠRah\":32248,\"pheric\":32249,\"ĠInvestment\":32250,\"Ã¤ll\":32251,\"Ġappealing\":32252,\"Ġviewport\":32253,\"ç©\":32254,\"ĠmarginLeft\":32255,\"Ġsubtract\":32256,\"ĠEDIT\":32257,\"ĉArrayList\":32258,\"grading\":32259,\"ĠFailure\":32260,\"asper\":32261,\"EEK\":32262,\"(now\":32263,\"<object\":32264,\"ĠAlignment\":32265,\"pleado\":32266,\"qtt\":32267,\"(ERROR\":32268,\"ĠINVALID\":32269,\"Ġuserid\":32270,\"raises\":32271,\"IDI\":32272,\"Ġvariance\":32273,\"ĠNil\":32274,\"/delete\":32275,\"_MAIN\":32276,\".Token\":32277,\".Category\":32278,\">)Ċ\":32279,\"Collision\":32280,\"ĠGreater\":32281,\"ĠRacing\":32282,\"alan\":32283,\"Ġmonetary\":32284,\",new\":32285,\"ĠSorry\":32286,\".Enable\":32287,\"ĠInstantiate\":32288,\"ollen\":32289,\"ë©´\":32290,\"ĠCalling\":32291,\"_hour\":32292,\"ADA\":32293,\"Ġshy\":32294,\")**\":32295,\"Ġ==>\":32296,\"Ġespecial\":32297,\"Ġinterpreted\":32298,\"!=\\\"\":32299,\"Ġpharmacy\":32300,\".single\":32301,\"ĠCialis\":32302,\"Ġparas\":32303,\".toUpperCase\":32304,\"ĠDemon\":32305,\"Prime\":32306,\"Ġrankings\":32307,\"Adding\":32308,\"_HASH\":32309,\"ĠExam\":32310,\"Ú©\":32311,\"ĠVictor\":32312,\"Okay\":32313,\"\\\"];čĊ\":32314,\"Ġfortune\":32315,\"ĠFETCH\":32316,\"expand\":32317,\".Interop\":32318,\"Ġbarn\":32319,\"æ¶Ī\":32320,\"uevo\":32321,\"Ġspeculation\":32322,\"âĶĢâĶĢâĶĢâĶĢ\":32323,\"ĠNu\":32324,\"ĠBlues\":32325,\"(fname\":32326,\"Ġinhabit\":32327,\"Ġ\\\\\\\"%\":32328,\"CES\":32329,\"ulario\":32330,\"_cr\":32331,\"Ġvalidated\":32332,\"Ġmidnight\":32333,\"anking\":32334,\"Ġincorporate\":32335,\"Ġpursuit\":32336,\"EXP\":32337,\"prime\":32338,\"Pid\":32339,\"-US\":32340,\"ĠNurs\":32341,\"ĠWheel\":32342,\"éĺ\":32343,\"Ġinp\":32344,\"Ġsupportive\":32345,\".member\":32346,\"ĠShot\":32347,\".CheckBox\":32348,\"Ġaffirm\":32349,\"Tor\":32350,\"FullYear\":32351,\"Ġconsiderably\":32352,\"credentials\":32353,\"_opts\":32354,\"Roll\":32355,\"(round\":32356,\"Ġcoment\":32357,\"_UART\":32358,\"Ġextending\":32359,\"RG\":32360,\"resultado\":32361,\"itu\":32362,\".getSession\":32363,\"Ġattraction\":32364,\"&D\":32365,\"$html\":32366,\"ĠJessica\":32367,\"ĠAssociate\":32368,\"aÃ±\":32369,\"_ed\":32370,\"ĠLag\":32371,\"Ġorigins\":32372,\"())->\":32373,\"addEventListener\":32374,\"IALOG\":32375,\"åĲ¦\":32376,\".Compare\":32377,\"Album\":32378,\"ĠKu\":32379,\"<Q\":32380,\"argest\":32381,\"Ġprolong\":32382,\"Ġconfigurations\":32383,\"Ġaccidentally\":32384,\"_photo\":32385,\"Ġ'';čĊ\":32386,\"Ġverse\":32387,\"Bob\":32388,\"Ġfarming\":32389,\"delivery\":32390,\"ĠMack\":32391,\"ĠuseSelector\":32392,\".bootstrapcdn\":32393,\"keeping\":32394,\"eny\":32395,\".upload\":32396,\"ĠMETHOD\":32397,\"creator\":32398,\"<_\":32399,\"ĠEaster\":32400,\".--\":32401,\"UIButton\":32402,\"ãĤī\":32403,\"ometers\":32404,\"Ġshine\":32405,\"Ġhogy\":32406,\"\\\\s\":32407,\"Ġharness\":32408,\".Cell\":32409,\"Ġlifting\":32410,\"Ġcombines\":32411,\"ĠOccup\":32412,\"exclude\":32413,\"patial\":32414,\"Ġrespir\":32415,\"_fit\":32416,\"Ġfifty\":32417,\"ĠMol\":32418,\"Ġtuned\":32419,\"-dimensional\":32420,\"Ġqs\":32421,\"Ġtops\":32422,\">\\\";ĊĊ\":32423,\"quisite\":32424,\"channels\":32425,\"/res\":32426,\"ĠAnalytics\":32427,\".appcompat\":32428,\"/to\":32429,\"ĠonError\":32430,\"(attr\":32431,\"IRM\":32432,\"Ġragaz\":32433,\"-as\":32434,\".Second\":32435,\"oriented\":32436,\"Ġdonn\":32437,\"Ġlightning\":32438,\"fid\":32439,\"ĠPle\":32440,\"ãģ¾ãģĻ\":32441,\"tro\":32442,\".True\":32443,\"Observable\":32444,\"×Ļ\":32445,\"umbing\":32446,\"Ġprospective\":32447,\"-filter\":32448,\"Ġpursuant\":32449,\"(points\":32450,\".Bind\":32451,\"Ġpalm\":32452,\"clearfix\":32453,\"Ã¶s\":32454,\"ĠGonz\":32455,\"Ġweaken\":32456,\"Drive\":32457,\"enido\":32458,\"lld\":32459,\"obox\":32460,\"anean\":32461,\"Got\":32462,\"ä¿Ŀ\":32463,\"Regex\":32464,\"æĥ\":32465,\"Ġsalad\":32466,\"assis\":32467,\"\\\"net\":32468,\"inheritDoc\":32469,\"ĠRV\":32470,\"quier\":32471,\"Ġclazz\":32472,\"Ä±ÅŁ\":32473,\"osterone\":32474,\"Ġairline\":32475,\".listdir\":32476,\"Ġdownloading\":32477,\"ĠPalm\":32478,\"waukee\":32479,\"&lt\":32480,\".BL\":32481,\"_INLINE\":32482,\"offs\":32483,\"<<(\":32484,\"_news\":32485,\"Ġchase\":32486,\"/><\":32487,\"Ġeuros\":32488,\"ĠEgyptian\":32489,\"ĠStainless\":32490,\"_BOOL\":32491,\"ĠGuild\":32492,\"ĠDynam\":32493,\"[indexPath\":32494,\"Ġï\":32495,\"Ġmemorable\":32496,\"ĠChampion\":32497,\"ResourceManager\":32498,\".Login\":32499,\"ĠFormer\":32500,\"yped\":32501,\"Ġlleg\":32502,\";\\\",\":32503,\"DWORD\":32504,\"Ġtaxi\":32505,\"Ġbombs\":32506,\"rah\":32507,\".tags\":32508,\"_tests\":32509,\"stones\":32510,\"âĢĿ)\":32511,\"[g\":32512,\"rtype\":32513,\"Ġvu\":32514,\"Ġhostile\":32515,\"Chars\":32516,\"ĠPatriots\":32517,\"/status\":32518,\"<B\":32519,\"ĠIncome\":32520,\"ĠDad\":32521,\"Ġpatrol\":32522,\"_CHANGE\":32523,\"Ġupgraded\":32524,\"Ġchina\":32525,\"setq\":32526,\"Started\":32527,\".Undef\":32528,\"Ġchecksum\":32529,\"Ġfrustrated\":32530,\"{o\":32531,\"Ġenf\":32532,\"Ġwoods\":32533,\"ĠAnyone\":32534,\"Encode\":32535,\"ĠQtWidgets\":32536,\"areas\":32537,\"Ġsheer\":32538,\"ski\":32539,\"endpoint\":32540,\"_Test\":32541,\"Soup\":32542,\"~~~~~~~~~~~~~~~~\":32543,\"(files\":32544,\"ĉĉĉĉĉčĊ\":32545,\".spark\":32546,\"Ġvalued\":32547,\"Ġ%Ċ\":32548,\".controls\":32549,\"ĠXCTAssertEqual\":32550,\"Ġfame\":32551,\"ĠRic\":32552,\"DOT\":32553,\"ĠAlberta\":32554,\"ä½¿\":32555,\"osal\":32556,\".WebControls\":32557,\"Ġ------------\":32558,\"ĠMis\":32559,\"ĠSYS\":32560,\"Nonnull\":32561,\"=item\":32562,\"Ġexpire\":32563,\"Decode\":32564,\"_operation\":32565,\"ĠValidator\":32566,\".CENTER\":32567,\"uffs\":32568,\"*m\":32569,\"Ġavant\":32570,\"æ¬¡\":32571,\"âĢľYou\":32572,\".permission\":32573,\"...)\":32574,\"ĠLic\":32575,\"_coords\":32576,\".nombre\":32577,\"clo\":32578,\".Internal\":32579,\"ĠCho\":32580,\"_sw\":32581,\"ĉIl\":32582,\"clk\":32583,\"Ġcastle\":32584,\"(layer\":32585,\"pit\":32586,\"Ġguided\":32587,\"ĠâĸĪ\":32588,\"Ġsuperb\":32589,\"Ġsupplements\":32590,\"_cent\":32591,\"Ġpeek\":32592,\"INARY\":32593,\".ContentAlignment\":32594,\"falls\":32595,\"\\\"));\":32596,\"Wall\":32597,\").čĊ\":32598,\"ĠDanny\":32599,\"irmingham\":32600,\"IALIZ\":32601,\"(create\":32602,\"\\\"In\":32603,\"ServiceProvider\":32604,\"Ġpriced\":32605,\"macro\":32606,\"amac\":32607,\".box\":32608,\"----Ċ\":32609,\"ãĥ«\":32610,\"ĠSuit\":32611,\"urst\":32612,\"bru\":32613,\"ournals\":32614,\"numero\":32615,\"__()Ċ\":32616,\"Das\":32617,\"ĠMitt\":32618,\"uder\":32619,\"?\\\\\":32620,\"fu\":32621,\"[B\":32622,\"Ġ:)ĊĊ\":32623,\"(inter\":32624,\"brains\":32625,\"Ġattitudes\":32626,\"Verify\":32627,\"Ġsignatures\":32628,\"ackBar\":32629,\"Ġgd\":32630,\"Jack\":32631,\".cat\":32632,\"Ġzz\":32633,\"warf\":32634,\"FTER\":32635,\"\\\");ĊĊĊ\":32636,\"Alive\":32637,\"ICLE\":32638,\"ĠWhatever\":32639,\"Ġoutlined\":32640,\"sprite\":32641,\"ÐµÐ²\":32642,\"_AB\":32643,\"_DEPTH\":32644,\"Ġcrushed\":32645,\"aaa\":32646,\"(ev\":32647,\"æľº\":32648,\"Anti\":32649,\"ICO\":32650,\"isEqualTo\":32651,\".sun\":32652,\"iculo\":32653,\"sale\":32654,\"_hex\":32655,\"ĠVk\":32656,\"aptor\":32657,\"Union\":32658,\"ĠDiscount\":32659,\"lista\":32660,\".UndefOr\":32661,\"Ġautomation\":32662,\"Nor\":32663,\"å¯¹\":32664,\"åıĤæķ°\":32665,\"Ġreflex\":32666,\"ĠLaure\":32667,\".showMessageDialog\":32668,\".temp\":32669,\"Ġakan\":32670,\"Ġ______\":32671,\".IsTrue\":32672,\"ARED\":32673,\"agle\":32674,\"Energy\":32675,\"Ġquantities\":32676,\"âĢĻÃ©\":32677,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":32678,\"Ġcitizenship\":32679,\"mouth\":32680,\"Ġinappropriate\":32681,\"ĠOutdoor\":32682,\"WhiteSpace\":32683,\"Anonymous\":32684,\"loads\":32685,\"webElementProperties\":32686,\"Ten\":32687,\"Ġaccidents\":32688,\"Ġadvertisement\":32689,\"ĠYemen\":32690,\"(call\":32691,\"Ġslavery\":32692,\"ÑģÐ¿\":32693,\"ĠLam\":32694,\"_BITS\":32695,\"omega\":32696,\"ĠOle\":32697,\"Ġkidn\":32698,\"_An\":32699,\"ĠRaid\":32700,\"Creation\":32701,\"saved\":32702,\"Ġproport\":32703,\"WARNING\":32704,\"\\\\P\":32705,\"Ġpwd\":32706,\"DataReader\":32707,\"ischer\":32708,\"adeon\":32709,\"ĠPredict\":32710,\"Ġreasoning\":32711,\"Ġdestroying\":32712,\"Hel\":32713,\"*d\":32714,\"ĠLegisl\":32715,\"_Pr\":32716,\"ĉĉĉĠĠĠĠĠĠĠ\":32717,\"Ġsympath\":32718,\"Ġchess\":32719,\"Ġmam\":32720,\":hover\":32721,\"Ġconverts\":32722,\"Ġpela\":32723,\"Ġprogression\":32724,\"Ġ\\\"_\\\"\":32725,\"ĠGill\":32726,\"ĉshow\":32727,\"Ġsupposedly\":32728,\"accuracy\":32729,\"elin\":32730,\"Ġunfolding\":32731,\"ĠHyper\":32732,\"Ġwanna\":32733,\"Ġups\":32734,\"(#\":32735,\"ĠCriminal\":32736,\"(Point\":32737,\"atLng\":32738,\"actly\":32739,\"Ġcontractors\":32740,\"']}\":32741,\"draulic\":32742,\"Ã³digo\":32743,\"ĠTT\":32744,\"ĠWide\":32745,\"ĠARG\":32746,\"_ic\":32747,\"FLAGS\":32748,\"School\":32749,\"Ġclearing\":32750,\"-being\":32751,\"={[\":32752,\",const\":32753,\"manent\":32754,\"Overlay\":32755,\"('\\\"\":32756,\"éĩı\":32757,\"ĠTimestamp\":32758,\"Ġmailing\":32759,\"ĠCake\":32760,\".That\":32761,\"Ġmeditation\":32762,\"qp\":32763,\"Ġempresa\":32764,\"ĠLions\":32765,\"Ġweld\":32766,\"ĠLinkedIn\":32767,\"Ġcush\":32768,\"Ġgenome\":32769,\".IndexOf\":32770,\"again\":32771,\"Ġfallback\":32772,\"Ġcamping\":32773,\"redd\":32774,\"-striped\":32775,\"Ġdv\":32776,\"February\":32777,\"ĠProxy\":32778,\"usk\":32779,\"Ġdiesel\":32780,\"WRITE\":32781,\"REAK\":32782,\"Lorem\":32783,\".Invoke\":32784,\"-div\":32785,\"Interceptor\":32786,\"ĠDH\":32787,\"iales\":32788,\"Ġvillages\":32789,\"Ø´\":32790,\"ĠENV\":32791,\"Sys\":32792,\".XR\":32793,\"Ġpoem\":32794,\"ÃĤ\":32795,\"cade\":32796,\"plots\":32797,\"Ġ{(\":32798,\".git\":32799,\"/svg\":32800,\"ncmp\":32801,\"ĠÄį\":32802,\"aines\":32803,\"åĩ½æķ°\":32804,\"Ġ()ĊĊ\":32805,\"opsis\":32806,\"ĠRelationship\":32807,\"_aut\":32808,\"ĠBomb\":32809,\"ĉcom\":32810,\"*sizeof\":32811,\"official\":32812,\"_payload\":32813,\"ĉĉĉĉĉĠĠ\":32814,\".manager\":32815,\"ĠAround\":32816,\"ĉsend\":32817,\"ĠExercise\":32818,\"ĠBilly\":32819,\"ivi\":32820,\"Ġneeding\":32821,\"_urls\":32822,\"_tasks\":32823,\"ĠHem\":32824,\"ĠtearDown\":32825,\"encrypt\":32826,\".tie\":32827,\"Ġasm\":32828,\"ICH\":32829,\"ĠCGRectMake\":32830,\"ìĦ±\":32831,\"ulong\":32832,\"Ġitr\":32833,\"ĠGST\":32834,\"Ġofferings\":32835,\"robe\":32836,\"EEE\":32837,\"operators\":32838,\"_PROP\":32839,\"indent\":32840,\"ADE\":32841,\"orf\":32842,\"ëĲ\":32843,\"Ġblessed\":32844,\"vascular\":32845,\"Ġconoc\":32846,\"Happy\":32847,\"Bridge\":32848,\"ilitation\":32849,\"joint\":32850,\"ĠAdministr\":32851,\"-transform\":32852,\"Ġmeantime\":32853,\"/K\":32854,\"ĠBedroom\":32855,\"Ġrigid\":32856,\"Ġbrowsers\":32857,\"EMPTY\":32858,\".Serialize\":32859,\"_ED\":32860,\"Ġstitch\":32861,\"Ġjan\":32862,\"ellt\":32863,\"Ġbrace\":32864,\"Ġtrails\":32865,\"published\":32866,\"å¯Ĩçłģ\":32867,\"}')Ċ\":32868,\"Ġacids\":32869,\"Ġ!!!\":32870,\"_direct\":32871,\">());Ċ\":32872,\"ajÄħ\":32873,\"_OCC\":32874,\"Ġplanets\":32875,\"æŁ¥\":32876,\"ĠDublin\":32877,\"Ġserie\":32878,\".printf\":32879,\"deep\":32880,\"`)\":32881,\"Ġ\\\\$\":32882,\"ĠÎ¼\":32883,\"_VIDEO\":32884,\"endors\":32885,\"ĠCrypto\":32886,\"Far\":32887,\".Transparent\":32888,\".TR\":32889,\"iasm\":32890,\"_training\":32891,\"Ġteaches\":32892,\"ĠBelt\":32893,\"Ġlimiting\":32894,\"ĠKath\":32895,\"ĠIndexPath\":32896,\"Ġachievements\":32897,\"ĠserÃ¡\":32898,\"interopRequire\":32899,\"Ġdisse\":32900,\".If\":32901,\"arming\":32902,\"ulsion\":32903,\"Po\":32904,\"_DETAIL\":32905,\"Prototype\":32906,\"ĠCAL\":32907,\"Ġagrees\":32908,\".vo\":32909,\".ExecuteNonQuery\":32910,\"ĠTopic\":32911,\"Ġ'{}\":32912,\"Arm\":32913,\"Ġecc\":32914,\"Mag\":32915,\"Ġserialized\":32916,\"ĉconn\":32917,\"cached\":32918,\"=tf\":32919,\"ĠByteArray\":32920,\"protobuf\":32921,\"varchar\":32922,\"ĉASSERT\":32923,\"Ġliste\":32924,\"_trigger\":32925,\"·¸\":32926,\"Feel\":32927,\"Tahoma\":32928,\"ĠLik\":32929,\"Ġstructured\":32930,\"ergus\":32931,\".Initial\":32932,\"_ge\":32933,\"cljs\":32934,\".contact\":32935,\"Ġandere\":32936,\"$stmt\":32937,\"_CURRENT\":32938,\"ĠDiscover\":32939,\"$res\":32940,\"formatter\":32941,\"Ha\":32942,\"vangst\":32943,\"Ġemerge\":32944,\"ãĢĤâĢĿ\":32945,\"ĠCabinet\":32946,\"-square\":32947,\"éĥ¨\":32948,\"Ġrage\":32949,\"ĠAJ\":32950,\"ĠVT\":32951,\"shadow\":32952,\"ĠFaith\":32953,\"enames\":32954,\"pretty\":32955,\"hasil\":32956,\"party\":32957,\"Ġvarchar\":32958,\"Ġfotos\":32959,\"Ġalum\":32960,\"ĠBelgium\":32961,\".ylabel\":32962,\"Ġdej\":32963,\"_numbers\":32964,\"Ġhu\":32965,\".setAdapter\":32966,\"ĠUsually\":32967,\"(sample\":32968,\".Shared\":32969,\"Ġbooked\":32970,\"Ġ>>=\":32971,\"Ġminerals\":32972,\"\\\"><?=\":32973,\"Ġadjustments\":32974,\"ĠDL\":32975,\"Ġvibrant\":32976,\"ĠDependency\":32977,\"Ġzap\":32978,\"/X\":32979,\"Ġfonts\":32980,\"trip\":32981,\"Ð¸Ñĩ\":32982,\"Ġtubes\":32983,\"clamation\":32984,\"Ġë§\":32985,\"Ġprotagon\":32986,\"oupon\":32987,\"ĠBrush\":32988,\"(pred\":32989,\"ourney\":32990,\"'])->\":32991,\"prog\":32992,\"boo\":32993,\"_md\":32994,\"_pack\":32995,\"(express\":32996,\"utz\":32997,\"\\\\Auth\":32998,\",id\":32999,\"ĠChile\":33000,\"actice\":33001,\"Ġrecruitment\":33002,\"Ġposes\":33003,\"Ġvulnerability\":33004,\"instanc\":33005,\"orum\":33006,\"dess\":33007,\"Ġxl\":33008,\"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\":33009,\"(fig\":33010,\"Ġdeleting\":33011,\".del\":33012,\")')Ċ\":33013,\"ĠWeekly\":33014,\"???\":33015,\"(strcmp\":33016,\"smith\":33017,\"Ġpursuing\":33018,\"-so\":33019,\"ĠApps\":33020,\"/'Ċ\":33021,\"Ġdecis\":33022,\"FORE\":33023,\"Everyone\":33024,\"Ġlanes\":33025,\"Virtual\":33026,\".attach\":33027,\"(Log\":33028,\"ĠMedicaid\":33029,\"(Path\":33030,\"ĠTurner\":33031,\"/application\":33032,\"Ġportrait\":33033,\"Ġoppose\":33034,\"checkout\":33035,\"Ġfinishes\":33036,\"_ME\":33037,\"Barrier\":33038,\"Song\":33039,\"VAR\":33040,\"Earlier\":33041,\"rella\":33042,\"Ġhast\":33043,\"azar\":33044,\"Ġpulls\":33045,\"ngx\":33046,\"Ġinspiring\":33047,\"ÑĥÑİ\":33048,\"-direction\":33049,\"Ġexplosive\":33050,\"ĠcreatedAt\":33051,\"sto\":33052,\"Ġwheat\":33053,\"ĠBuilt\":33054,\"'ai\":33055,\"Ġtracked\":33056,\"hammad\":33057,\"RowAtIndexPath\":33058,\"_heap\":33059,\"Due\":33060,\"Ġconnects\":33061,\".publish\":33062,\"emu\":33063,\"Ġbullets\":33064,\"BAR\":33065,\"olate\":33066,\"Ġinternally\":33067,\"Ġcatching\":33068,\"-password\":33069,\"ouched\":33070,\"æĢ§\":33071,\"eous\":33072,\"Ġxrange\":33073,\"Quality\":33074,\"vv\":33075,\"Manage\":33076,\"(($\":33077,\"acements\":33078,\"ĠBrothers\":33079,\"ĠHEAD\":33080,\"ĠUnsupported\":33081,\"san\":33082,\"esi\":33083,\"***Ċ\":33084,\"Ġadaptation\":33085,\"ĠWorker\":33086,\"']/\":33087,\".savefig\":33088,\"(trans\":33089,\"Ø¬\":33090,\"nee\":33091,\"Correct\":33092,\"...\\\")Ċ\":33093,\"Ġsubmitting\":33094,\"-path\":33095,\"ĉlast\":33096,\"issan\":33097,\".xlabel\":33098,\"ĠSepar\":33099,\"/no\":33100,\"_best\":33101,\"ĠMills\":33102,\"_sock\":33103,\"(flag\":33104,\"Ġdestinations\":33105,\"emption\":33106,\"ĠFAIL\":33107,\"åĴĮ\":33108,\"Ġrp\":33109,\"fact\":33110,\"ĉlen\":33111,\"DAY\":33112,\"Ġseiz\":33113,\"_dst\":33114,\"lip\":33115,\".Linear\":33116,\"ĠBasket\":33117,\"$t\":33118,\"$i\":33119,\"-brand\":33120,\"ĠNeil\":33121,\"ĠEq\":33122,\"Ġthou\":33123,\"ogene\":33124,\"Ġscholarship\":33125,\"æĽ´\":33126,\"Ġswo\":33127,\"aginator\":33128,\"eni\":33129,\"(book\":33130,\"Ġblink\":33131,\"thus\":33132,\"ĠcancellationToken\":33133,\"ĠPalestinians\":33134,\"Ġprofitable\":33135,\"Ġbackpack\":33136,\"enson\":33137,\"<Long\":33138,\"Ġpools\":33139,\"Ġsticks\":33140,\"Ġspokeswoman\":33141,\"Being\":33142,\"ĠHeritage\":33143,\"ĠNike\":33144,\"SHA\":33145,\"ĠNotImplementedException\":33146,\"$core\":33147,\"ĠRico\":33148,\"/latest\":33149,\"ĠCzech\":33150,\"nerRadius\":33151,\"(lines\":33152,\"Ġsemester\":33153,\"Ġwounds\":33154,\"Procedure\":33155,\".mail\":33156,\"()):Ċ\":33157,\"Ġcorrid\":33158,\"tered\":33159,\"ĠNCAA\":33160,\"Ġgalaxy\":33161,\"_kind\":33162,\"ilk\":33163,\"Ġtras\":33164,\"_POL\":33165,\"ĠHet\":33166,\"Ġrefugee\":33167,\"Ġteenage\":33168,\".binding\":33169,\"postal\":33170,\"ĠiÃ§in\":33171,\"ĠDataType\":33172,\"éĸ\":33173,\"yclerview\":33174,\",value\":33175,\"_identifier\":33176,\"<b\":33177,\"Ġoutfile\":33178,\"čĊĠĠĠĠčĊ\":33179,\"ĠcrÃ©\":33180,\"Ġrespondents\":33181,\"ĠBeast\":33182,\"celed\":33183,\"Ġinterf\":33184,\"-theme\":33185,\"gif\":33186,\"ĠRangers\":33187,\"ITAL\":33188,\"Ġauthenticate\":33189,\"Completion\":33190,\"ursors\":33191,\"Ġcinema\":33192,\"Ġdiscour\":33193,\"ĠJaw\":33194,\"OCKET\":33195,\"Ġprayers\":33196,\"ĠLuis\":33197,\"frag\":33198,\"=[Ċ\":33199,\"Ġbrave\":33200,\"_pose\":33201,\"Certificate\":33202,\"-fe\":33203,\"iferay\":33204,\"ĠFlags\":33205,\"ContainerGap\":33206,\"ĠCrit\":33207,\"ResultSet\":33208,\"ĉcur\":33209,\"Ġcorresponds\":33210,\"Staff\":33211,\".HttpServletRequest\":33212,\"Ġneurons\":33213,\"ĠMainAxisAlignment\":33214,\"edar\":33215,\"Ġgad\":33216,\"_parts\":33217,\"ĠÎ²\":33218,\"Ġfx\":33219,\"/files\":33220,\"ĠBros\":33221,\"hips\":33222,\"Ġglucose\":33223,\"Ġfarms\":33224,\"Ġmentally\":33225,\"restaurant\":33226,\"TableName\":33227,\"ĠMercedes\":33228,\".Visual\":33229,\"Ġanch\":33230,\"inalg\":33231,\"_runtime\":33232,\"Ġproprietary\":33233,\"Ġintentions\":33234,\"izi\":33235,\"Slice\":33236,\";\\\"></\":33237,\"_WORD\":33238,\"\\\\Migrations\":33239,\"ĠENABLE\":33240,\"_PARAMETER\":33241,\"ĠBishop\":33242,\".subject\":33243,\"illas\":33244,\".matrix\":33245,\"urrences\":33246,\"*y\":33247,\"Ġcostly\":33248,\"ĠChuck\":33249,\"Ġcloses\":33250,\"ĠMight\":33251,\"-store\":33252,\"Ġmall\":33253,\"ieten\":33254,\".Abs\":33255,\"Ġcoupled\":33256,\".basic\":33257,\"Ġ::::::::\":33258,\"Maker\":33259,\"cannot\":33260,\"Ġach\":33261,\"ĠEli\":33262,\"âĪĴ\":33263,\"orna\":33264,\"Ġcps\":33265,\"Ġthereof\":33266,\"Ġ@{\":33267,\"ĠNSMutableArray\":33268,\"Î½\":33269,\"productive\":33270,\"Square\":33271,\"tempts\":33272,\"Ġeliminated\":33273,\"<M\":33274,\"Ġconservatives\":33275,\"ĠSurg\":33276,\".par\":33277,\"ĠBuch\":33278,\"*b\":33279,\"Fort\":33280,\"Colour\":33281,\"ĠChi\":33282,\"edic\":33283,\">true\":33284,\"ĠNYC\":33285,\"Ġbored\":33286,\"ĠDetect\":33287,\"Ġappar\":33288,\"Ġjeans\":33289,\"ĠTak\":33290,\"IOD\":33291,\"ĠHorse\":33292,\"(FILE\":33293,\"(?\":33294,\"rique\":33295,\"optimizer\":33296,\"nat\":33297,\"loys\":33298,\"ĉToken\":33299,\"oubted\":33300,\"uess\":33301,\"ocoa\":33302,\"DataMember\":33303,\"_POWER\":33304,\"classList\":33305,\"PushButton\":33306,\"ĠWiFi\":33307,\".Stream\":33308,\".guild\":33309,\"Ġnog\":33310,\"ĠPortugal\":33311,\"ĠUnter\":33312,\"Primitive\":33313,\"boss\":33314,\"ĠDeutsch\":33315,\"Ġerotic\":33316,\"Ġstrconv\":33317,\".TryParse\":33318,\"Ġgrams\":33319,\".Success\":33320,\"_pk\":33321,\"ĠHarvey\":33322,\"-minded\":33323,\".country\":33324,\"[]\\\"\":33325,\"Ġangel\":33326,\"Ġbeats\":33327,\"ĠVor\":33328,\"ilio\":33329,\".master\":33330,\"something\":33331,\"ĠPACK\":33332,\"(if\":33333,\"RequestBody\":33334,\"Ġantes\":33335,\"/widget\":33336,\"Ġmodo\":33337,\"ĠAW\":33338,\"finder\":33339,\"Ġoptimized\":33340,\"Ġmissiles\":33341,\"NB\":33342,\"ĉinternal\":33343,\"tex\":33344,\"ĠSri\":33345,\"Ġdamaging\":33346,\"ĠMais\":33347,\"-Allow\":33348,\"ĠZh\":33349,\"-alt\":33350,\"Ġ));ĊĊ\":33351,\"èī\":33352,\"Ġinfluences\":33353,\"Ġcatal\":33354,\"_REGISTER\":33355,\"ĠAPIs\":33356,\"-century\":33357,\"Ġbiology\":33358,\"ĠActual\":33359,\"Ġheels\":33360,\"TRACE\":33361,\"_DIG\":33362,\"Dataset\":33363,\"ĠMatter\":33364,\"Ġclassifier\":33365,\".wikipedia\":33366,\"ĠRogers\":33367,\"Ġdonated\":33368,\"rawler\":33369,\"enen\":33370,\"Ġcasinos\":33371,\"ortal\":33372,\"Ġprive\":33373,\"spe\":33374,\"ducers\":33375,\".ep\":33376,\"Ġgrasp\":33377,\"acji\":33378,\"Ġdairy\":33379,\"Ġbuses\":33380,\".comm\":33381,\".ins\":33382,\"ĠIRS\":33383,\"ĠBeer\":33384,\"adc\":33385,\"oard\":33386,\"_MET\":33387,\"Ġ'+'\":33388,\"rans\":33389,\"Ġkinda\":33390,\"ĠâĶĤ\":33391,\"ĠMaur\":33392,\"Ð°Ð³\":33393,\"Ġbandwidth\":33394,\"ibus\":33395,\"ĠDifferent\":33396,\"(mat\":33397,\"ĠResume\":33398,\"_UNS\":33399,\"establish\":33400,\"Ġfonction\":33401,\"Subscription\":33402,\"_company\":33403,\"Ġlightly\":33404,\".confirm\":33405,\".yaml\":33406,\"ĠBoost\":33407,\"Commerce\":33408,\"-template\":33409,\"_DELAY\":33410,\"ĠHI\":33411,\"Ġnavig\":33412,\"(Sender\":33413,\"ĠHS\":33414,\"_\\\"+\":33415,\"ĠREQUEST\":33416,\"Ġwifi\":33417,\"=\\\"\\\"Ċ\":33418,\"])->\":33419,\"Ġrope\":33420,\"Ġviolated\":33421,\"Ġglance\":33422,\"ĠKurd\":33423,\"Ġè®\":33424,\"deck\":33425,\"ĠISBN\":33426,\"Ġinfect\":33427,\"ĠFoo\":33428,\"Ġgetter\":33429,\"Ġtener\":33430,\"appe\":33431,\".hh\":33432,\"_hot\":33433,\"<AM\":33434,\"poly\":33435,\"!\\\",Ċ\":33436,\"Ġconverting\":33437,\"ĠWWE\":33438,\"ROS\":33439,\"('{\":33440,\"Commit\":33441,\")L\":33442,\"ĠOre\":33443,\"Ġsparse\":33444,\"Ġdisposal\":33445,\"Ġcanceled\":33446,\"åĲİ\":33447,\"Ġaer\":33448,\"Ġvinyl\":33449,\"á»ĥ\":33450,\"recogn\":33451,\"arking\":33452,\"Ġtricky\":33453,\"*s\":33454,\"Ġproceeds\":33455,\"Ġiso\":33456,\"Ġcoconut\":33457,\"Ġcrafted\":33458,\"IELDS\":33459,\"Ġquesto\":33460,\"Ġcommun\":33461,\"_CONNECT\":33462,\"Ġtrafficking\":33463,\"Deep\":33464,\"aÃ§Ãµes\":33465,\"codigo\":33466,\"veau\":33467,\"Ġbetray\":33468,\"inta\":33469,\"TED\":33470,\"Ã¦r\":33471,\"mart\":33472,\"_BUS\":33473,\"/sc\":33474,\"ially\":33475,\"Ġcigarettes\":33476,\"è¯ģ\":33477,\"(nn\":33478,\"Ġmodeling\":33479,\"/products\":33480,\"warn\":33481,\"Ġmetro\":33482,\"ĠIv\":33483,\"&)\":33484,\"ĠCable\":33485,\"Î»\":33486,\"Comparison\":33487,\"gary\":33488,\"ĠBA\":33489,\"PART\":33490,\"Ġpv\":33491,\"_updated\":33492,\"Credit\":33493,\"orthy\":33494,\"observable\":33495,\"Ġtheatre\":33496,\"BLE\":33497,\";}ĊĊ\":33498,\"launch\":33499,\"_strings\":33500,\"ugo\":33501,\"ĠRPG\":33502,\"-auth\":33503,\"Ðł\":33504,\"holm\":33505,\"ĠPand\":33506,\"Uid\":33507,\"Ġimply\":33508,\"ìľ¼\":33509,\"']='\":33510,\"/User\":33511,\"Ġstrcat\":33512,\"Ð½ÑĭÐ¹\":33513,\"DataAdapter\":33514,\"Ġlandsc\":33515,\"Ġdiplomatic\":33516,\"ï¼ĵ\":33517,\"****************************************************************************\":33518,\"ĠChicken\":33519,\"Ġbcrypt\":33520,\".Inf\":33521,\"[col\":33522,\"ĠQuantity\":33523,\"-position\":33524,\"Ġdietary\":33525,\"Ġfilmm\":33526,\"Israel\":33527,\"Prev\":33528,\"ĠMillion\":33529,\"Ġremed\":33530,\"Ġbilling\":33531,\"Ġoutdoors\":33532,\".tm\":33533,\"Ġnad\":33534,\"Forg\":33535,\"ZZ\":33536,\"Ġssl\":33537,\"],'\":33538,\"KT\":33539,\"freq\":33540,\"=document\":33541,\"blur\":33542,\"¬¸\":33543,\"ĠJefferson\":33544,\"Cs\":33545,\"(save\":33546,\"Ġstrap\":33547,\"India\":33548,\"Ġideology\":33549,\"BOSE\":33550,\"ĠFP\":33551,\"(ans\":33552,\"Ġfever\":33553,\"ĠYam\":33554,\"King\":33555,\"à²\":33556,\"ATING\":33557,\"bohydr\":33558,\"rollback\":33559,\"ĠnewNode\":33560,\"ĠNVIDIA\":33561,\"Ġhonour\":33562,\"ĠConfirm\":33563,\"xbd\":33564,\"Ġsuccessor\":33565,\"/u\":33566,\"liv\":33567,\"ournaments\":33568,\"Attachment\":33569,\"Ġgrup\":33570,\"Ġtribe\":33571,\"Ġcares\":33572,\"eft\":33573,\"_same\":33574,\"'label\":33575,\"ĠãĢĲ\":33576,\"Motor\":33577,\"Ġinexp\":33578,\"Ġ\\\"(\\\"\":33579,\"_POSITION\":33580,\"Ġvalley\":33581,\"ĠResultSet\":33582,\"Ġpreserved\":33583,\"Ġmutations\":33584,\"Ġquestioning\":33585,\"munition\":33586,\"parseInt\":33587,\"ĠSr\":33588,\"ĠMetadata\":33589,\"âĢĿï¼Į\":33590,\"timestamps\":33591,\"Ġtransitions\":33592,\"íĻ\":33593,\"ÑĬ\":33594,\"iom\":33595,\".Do\":33596,\"Ġpine\":33597,\"Ġfung\":33598,\"Ġtransmitted\":33599,\"ctime\":33600,\"ĠFam\":33601,\"Revision\":33602,\"Bas\":33603,\"UPER\":33604,\"Destination\":33605,\"toHaveBeenCalled\":33606,\"Ġunfortunate\":33607,\"INES\":33608,\"_prof\":33609,\"Among\":33610,\"ĠCyber\":33611,\"ĠBattery\":33612,\"genre\":33613,\"ĠViewModel\":33614,\"-=\":33615,\"Ġutilized\":33616,\"paint\":33617,\".IntegerField\":33618,\"ernity\":33619,\"compiler\":33620,\"âĢĭĊĊ\":33621,\"ĠMasters\":33622,\".ToArray\":33623,\"Ġstrtol\":33624,\"ĠUkrainian\":33625,\"}));Ċ\":33626,\"Ġshemale\":33627,\"\\\"That\":33628,\"forall\":33629,\"/download\":33630,\"Ġrhetoric\":33631,\".latitude\":33632,\"ĠWHEN\":33633,\"Ġshocking\":33634,\"IFIC\":33635,\".Normal\":33636,\"_FOLDER\":33637,\"Ġdrift\":33638,\"Ġmounting\":33639,\"-book\":33640,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":33641,\"ĠWireless\":33642,\">\\\".$\":33643,\"Ġrelies\":33644,\"(Console\":33645,\"International\":33646,\"->{$\":33647,\"Mid\":33648,\"Ġdissert\":33649,\"dds\":33650,\"Ġdeposits\":33651,\"ĉdriver\":33652,\"#ga\":33653,\"prising\":33654,\"println\":33655,\"Ġpresenter\":33656,\"Ġmines\":33657,\"CSS\":33658,\"ĠDual\":33659,\"(!(\":33660,\"Ġkam\":33661,\"ĠisLoading\":33662,\"ĠProtect\":33663,\".upper\":33664,\"arium\":33665,\"]:ĊĊĊ\":33666,\"Yii\":33667,\"-shirt\":33668,\"ĠIMAGE\":33669,\"_colors\":33670,\"Ġurgent\":33671,\".Container\":33672,\"!(Ċ\":33673,\"Saturday\":33674,\"Ġsocieties\":33675,\"ĠThan\":33676,\"ĠCod\":33677,\"=@\":33678,\"Ġattachments\":33679,\".mobile\":33680,\"Ġspite\":33681,\"Ġbounce\":33682,\"rawl\":33683,\"instancetype\":33684,\"ĠTruck\":33685,\"Ġmanipulation\":33686,\"(Config\":33687,\"-inst\":33688,\"Ġstor\":33689,\"itution\":33690,\"PreferredGap\":33691,\"ĠmainAxisAlignment\":33692,\"Ġlistened\":33693,\"'''ĊĊ\":33694,\"ottage\":33695,\"-project\":33696,\".APPLICATION\":33697,\"ĉroot\":33698,\"Ġwhit\":33699,\"Ġbilder\":33700,\"Ġker\":33701,\"Ġappliances\":33702,\"rowave\":33703,\"ìĿĢ\":33704,\"ematics\":33705,\"ĠOrg\":33706,\"oping\":33707,\"_SEARCH\":33708,\"Ġcham\":33709,\"addContainerGap\":33710,\"Ġ().\":33711,\"ĠArrow\":33712,\"Illegal\":33713,\"Currently\":33714,\"Ġusa\":33715,\"Ġpasswords\":33716,\"Ġrenown\":33717,\"avern\":33718,\"ĠEvil\":33719,\"Ġconcat\":33720,\"Ġduo\":33721,\"Ġvale\":33722,\"ĠBean\":33723,\"Ġindicators\":33724,\"cmath\":33725,\"ĠPump\":33726,\"November\":33727,\"ificant\":33728,\"_DOMAIN\":33729,\"regar\":33730,\"ĠPortal\":33731,\"\\\"$\":33732,\"Ġformerly\":33733,\"\\\"]:Ċ\":33734,\"ĠVisibility\":33735,\".getElementsByClassName\":33736,\"_RED\":33737,\"Ġchampions\":33738,\"à´\":33739,\"Valor\":33740,\"_es\":33741,\"*a\":33742,\"-repeat\":33743,\"Band\":33744,\".stage\":33745,\"Ġbureauc\":33746,\"Cnt\":33747,\"eten\":33748,\"-function\":33749,\"Ġmuito\":33750,\"PID\":33751,\"_editor\":33752,\"Ġcrashed\":33753,\"dead\":33754,\"kat\":33755,\"agh\":33756,\"ĠEXT\":33757,\"asser\":33758,\"-small\":33759,\"Ġrealiz\":33760,\"(Entity\":33761,\"Ãºs\":33762,\"ĠActually\":33763,\"ĠElite\":33764,\"Ġhelm\":33765,\"(nonatomic\":33766,\"asher\":33767,\"Community\":33768,\"alleng\":33769,\"iry\":33770,\"ĠGrowth\":33771,\"Ġsue\":33772,\"Ġfrequencies\":33773,\"_descriptor\":33774,\".Attribute\":33775,\"Ġrecipients\":33776,\"_NS\":33777,\"/\\\"+\":33778,\"iban\":33779,\"Ġathlete\":33780,\"ĠIgn\":33781,\"_DMA\":33782,\"(ds\":33783,\"ĠRequirements\":33784,\"ADI\":33785,\"erez\":33786,\"\\\\Admin\":33787,\"braska\":33788,\"ĠRust\":33789,\"Relation\":33790,\"COD\":33791,\"ĠVERSION\":33792,\"emma\":33793,\")){\":33794,\".Duration\":33795,\"ĠCamb\":33796,\"-logo\":33797,\"Ġreadable\":33798,\"Ġcreators\":33799,\"()];Ċ\":33800,\"UpDown\":33801,\"-half\":33802,\".getMonth\":33803,\"(sf\":33804,\"Pic\":33805,\"Ġhunger\":33806,\".tx\":33807,\"Ġexceeded\":33808,\"_seed\":33809,\"(^\":33810,\"_sk\":33811,\".perform\":33812,\"Ġ>::\":33813,\"Ġmongo\":33814,\"=float\":33815,\"bindParam\":33816,\"Smart\":33817,\"ifa\":33818,\"Ġsecurities\":33819,\"Ġprejud\":33820,\"Ġ,\\\"\":33821,\"Ġcorps\":33822,\"Ġvra\":33823,\"amacare\":33824,\"iterr\":33825,\"(Media\":33826,\"uche\":33827,\"Ġcob\":33828,\"Ġliber\":33829,\".geometry\":33830,\"Locator\":33831,\"Ġsliding\":33832,\"Ġsurgical\":33833,\"_CUR\":33834,\"Ġconsect\":33835,\"[*\":33836,\"ĠResort\":33837,\"Stub\":33838,\"_DOUBLE\":33839,\"ĠSoph\":33840,\"Ġelectoral\":33841,\"_disable\":33842,\"ĠÑģÐ¾\":33843,\"ĠLightning\":33844,\"Ġmentions\":33845,\"ocy\":33846,\"Ġleaked\":33847,\"Ġrelaxing\":33848,\"Presenter\":33849,\"vsp\":33850,\"Ġguilt\":33851,\"=-=-\":33852,\".reply\":33853,\"ĠMirror\":33854,\"Camp\":33855,\"Ġ+#+#+#+\":33856,\"Ġ+#+#+#+#+#+\":33857,\".Author\":33858,\"Ġdirective\":33859,\"-hook\":33860,\"íĦ°\":33861,\"}ĊĊĊĊĊ\":33862,\"@pytest\":33863,\"_rand\":33864,\"mis\":33865,\"Ġcolorful\":33866,\"uje\":33867,\"lasses\":33868,\"ĠClasses\":33869,\".have\":33870,\"%),\":33871,\"é¢ĺ\":33872,\"Ġdisturbing\":33873,\"substring\":33874,\"ĠKoh\":33875,\"Invest\":33876,\"purchase\":33877,\"Ġrecycling\":33878,\"ĠART\":33879,\"ierarchy\":33880,\"Ġfps\":33881,\".checkBox\":33882,\"íķ´\":33883,\"_material\":33884,\"ducation\":33885,\"Ġfw\":33886,\"udit\":33887,\"Ġreviewing\":33888,\"ĠSid\":33889,\"Syntax\":33890,\"ĠWritten\":33891,\"argar\":33892,\"UME\":33893,\"/q\":33894,\"Classifier\":33895,\"Official\":33896,\"Ġjazz\":33897,\"Ġomega\":33898,\"Physics\":33899,\"Ġlugar\":33900,\"_accessor\":33901,\".commands\":33902,\"Ability\":33903,\"ĠBatch\":33904,\"RAM\":33905,\"Ġencounters\":33906,\".Qu\":33907,\"BYTE\":33908,\"ĠDistribution\":33909,\"Ġuso\":33910,\"ĠRecovery\":33911,\"approved\":33912,\"Ġdenial\":33913,\"/share\":33914,\"LinkedList\":33915,\")čĊčĊčĊ\":33916,\"uddy\":33917,\"Ġfines\":33918,\"Ġry\":33919,\"Unicode\":33920,\"ĉrender\":33921,\"Ġpremises\":33922,\"Ġpon\":33923,\"aliases\":33924,\"/Foundation\":33925,\"cuda\":33926,\"ĠCock\":33927,\",:)\":33928,\"(folder\":33929,\"ĠmÃ©d\":33930,\"drag\":33931,\"Ġtalents\":33932,\"ĠĠĠĊĊ\":33933,\"ÐµÑģÑĤÐ²\":33934,\"mob\":33935,\".yml\":33936,\"Ġaster\":33937,\"Ġdiscre\":33938,\"goal\":33939,\"ĠGTX\":33940,\"ĠSUCCESS\":33941,\"ĠLONG\":33942,\"(find\":33943,\"Ġsingular\":33944,\"_sz\":33945,\"ĠEthereum\":33946,\"..Ċ\":33947,\"Ġirres\":33948,\"')){Ċ\":33949,\"Ġministers\":33950,\"Steps\":33951,\"iversal\":33952,\"ĠNevertheless\":33953,\"-led\":33954,\"Ġ(%)\":33955,\"ç¡®\":33956,\"Ġtimezone\":33957,\"Ġstranger\":33958,\"(render\":33959,\"Ġshutil\":33960,\"Ġmph\":33961,\"Ġtrio\":33962,\"ppy\":33963,\"Ġpredomin\":33964,\"Ġendors\":33965,\"ĠRussians\":33966,\"ĉrow\":33967,\"Ġwizard\":33968,\".serialize\":33969,\"Ġcomplained\":33970,\"Ġsido\":33971,\"Ġdelighted\":33972,\"-me\":33973,\"ĠRav\":33974,\"Human\":33975,\"adays\":33976,\"recv\":33977,\"Working\":33978,\"Jump\":33979,\"ĠÃ¥r\":33980,\"ĠAutomatic\":33981,\"_Base\":33982,\"æł¼\":33983,\"aurants\":33984,\"Â¯\":33985,\"æ¸\":33986,\"(CType\":33987,\"IFI\":33988,\"(amount\":33989,\"Ġbelieving\":33990,\"=mysql\":33991,\"Ġfir\":33992,\"Ġrestoration\":33993,\"ereco\":33994,\"Ð¢\":33995,\"_'+\":33996,\"Ġebook\":33997,\"Ġdebris\":33998,\"(inputs\":33999,\"AYOUT\":34000,\"Ġscreaming\":34001,\"avia\":34002,\"lander\":34003,\"Ġdistress\":34004,\"Ġassembled\":34005,\"ĠAvoid\":34006,\"(thread\":34007,\"ĠRPC\":34008,\"_EXIT\":34009,\"(queue\":34010,\"Ð¸ÑģÑĤ\":34011,\"Dll\":34012,\"Ġskull\":34013,\"_pub\":34014,\"chez\":34015,\"minate\":34016,\"ensen\":34017,\"Ġinsane\":34018,\"bounds\":34019,\"ĠRosen\":34020,\"Ġconditioning\":34021,\"processed\":34022,\"videos\":34023,\"four\":34024,\".Conv\":34025,\"|;Ċ\":34026,\"Personal\":34027,\"cerpt\":34028,\":UIControlStateNormal\":34029,\"Ġdoses\":34030,\"ĠKarl\":34031,\"ĠFrequ\":34032,\".BASE\":34033,\"ĠVote\":34034,\"Ġconcurrent\":34035,\"ĠMessageBoxIcon\":34036,\"ĠÃĸ\":34037,\"ĠDubai\":34038,\"ĠRetail\":34039,\":number\":34040,\"ĠObserver\":34041,\"ĠBigInteger\":34042,\"_origin\":34043,\"_WORK\":34044,\"Frames\":34045,\"Ġnotably\":34046,\".âĢľ\":34047,\"Ġtropical\":34048,\"Ġniche\":34049,\"amina\":34050,\".sys\":34051,\"(tokens\":34052,\"modify\":34053,\"osit\":34054,\"strom\":34055,\"ĠComics\":34056,\"OPTION\":34057,\"Ticket\":34058,\"Ġfactories\":34059,\"Ġdisput\":34060,\"_File\":34061,\"ĠFinn\":34062,\"eee\":34063,\"ĠDiscord\":34064,\"_money\":34065,\".tpl\":34066,\"_safe\":34067,\"LB\":34068,\"Ġglut\":34069,\"JK\":34070,\".flow\":34071,\"-cont\":34072,\"gos\":34073,\"Ġhorizon\":34074,\"ĠRush\":34075,\"::*\":34076,\"Pipe\":34077,\"ulla\":34078,\"borough\":34079,\"heimer\":34080,\"(move\":34081,\"(Text\":34082,\"});čĊčĊ\":34083,\"welcome\":34084,\"ĠComponents\":34085,\"Ġgovernance\":34086,\"closed\":34087,\"ĉmargin\":34088,\"Ġlaundry\":34089,\"ĠTerminal\":34090,\"izards\":34091,\".âĢĶ\":34092,\".remote\":34093,\".radius\":34094,\"ĠQuebec\":34095,\"Ġdh\":34096,\"Tech\":34097,\"ĠMist\":34098,\"seller\":34099,\"_literal\":34100,\"Ġgenius\":34101,\"Ġbrains\":34102,\"gem\":34103,\"ĠMeasure\":34104,\"Ġcatast\":34105,\"rance\":34106,\".TextField\":34107,\"Ġconsuming\":34108,\"Ġ'\\\\''\":34109,\"oubtedly\":34110,\"ĠCertain\":34111,\"Ev\":34112,\"erti\":34113,\"being\":34114,\"Experience\":34115,\"Ġ//[\":34116,\"ĠArabic\":34117,\"ĠCrist\":34118,\"ĠAzure\":34119,\"Ġhora\":34120,\"ladesh\":34121,\"\\\\Blueprint\":34122,\"dar\":34123,\".rel\":34124,\"Ġsuprem\":34125,\"ĠReagan\":34126,\"ĠAttributes\":34127,\"-sidebar\":34128,\"ĠuseStyles\":34129,\"ĠAirlines\":34130,\"Ġhills\":34131,\"/xhtml\":34132,\"vinc\":34133,\"_mock\":34134,\"ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":34135,\"ĠPill\":34136,\".LayoutStyle\":34137,\"ĠCommander\":34138,\"]<\":34139,\"signature\":34140,\"Ġ{}čĊ\":34141,\"Ġhatred\":34142,\"Ġëĭ\":34143,\"olesterol\":34144,\"Ġ********\":34145,\"ancellor\":34146,\"crop\":34147,\"TIM\":34148,\"ĉĉĊĊ\":34149,\"ysqli\":34150,\"uitive\":34151,\"ĉunset\":34152,\"_sel\":34153,\"Ġmenus\":34154,\"tick\":34155,\"Ġconstitute\":34156,\"ĠElements\":34157,\"ĠRedis\":34158,\"aggio\":34159,\"_fp\":34160,\"_depend\":34161,\"emas\":34162,\"CAST\":34163,\"orange\":34164,\"jon\":34165,\"ĠEmily\":34166,\"Ġpotatoes\":34167,\"Ġreceptor\":34168,\"ĠElectronic\":34169,\"ĠLights\":34170,\"Ġcombining\":34171,\"ĠSomeone\":34172,\"Ġ########.\":34173,\"ĠTOD\":34174,\"/show\":34175,\"Xd\":34176,\".\\\"'\":34177,\"afx\":34178,\"Ġtragic\":34179,\"Styled\":34180,\"ĠMarco\":34181,\"Gallery\":34182,\"dale\":34183,\".âĢĿĊĊĊĊ\":34184,\"Ã©rie\":34185,\"/service\":34186,\"äºĨ\":34187,\"Ġambient\":34188,\"_SETTINGS\":34189,\".Adapter\":34190,\"lene\":34191,\"Ġtravels\":34192,\"Notice\":34193,\"Ġcleans\":34194,\"ĠFem\":34195,\"chair\":34196,\"ÑĥÐ½\":34197,\"/my\":34198,\"_bad\":34199,\"ĠEconomics\":34200,\"ISA\":34201,\"_CNT\":34202,\"(Menu\":34203,\"äºİ\":34204,\"ĠRidge\":34205,\"Ġlengthy\":34206,\"Dot\":34207,\"Ġjumps\":34208,\"Ġhey\":34209,\"$pdf\":34210,\"Ġworm\":34211,\"Ġsut\":34212,\"Ġsher\":34213,\"iamo\":34214,\"ĠCalc\":34215,\"trieve\":34216,\"Ġcops\":34217,\"ĠChrom\":34218,\"Ġregulated\":34219,\"reatment\":34220,\"ĠHigher\":34221,\"oks\":34222,\"Ġdeze\":34223,\"LOCATION\":34224,\"ongsTo\":34225,\"Ġfinite\":34226,\"Ġvaries\":34227,\"Ġpositioned\":34228,\"'il\":34229,\"éĩĳ\":34230,\"Ġhike\":34231,\"(done\":34232,\"playlist\":34233,\"Ġada\":34234,\"Ġcoastal\":34235,\"ĠNancy\":34236,\".DateTimeField\":34237,\"CppCodeGen\":34238,\"ĠSimilarly\":34239,\"reur\":34240,\"ĠContr\":34241,\"ĠHidden\":34242,\"ĠBeta\":34243,\"atched\":34244,\"_install\":34245,\".Output\":34246,\"Lookup\":34247,\"ĠRichmond\":34248,\"quared\":34249,\"Ġmanga\":34250,\"-controls\":34251,\"ĠBernard\":34252,\"Large\":34253,\"Ġslices\":34254,\"Ġoffence\":34255,\"ĠMega\":34256,\"Ġestar\":34257,\"Ġjoints\":34258,\"Ġsumm\":34259,\"_platform\":34260,\"Buff\":34261,\".addSubview\":34262,\"Ġretained\":34263,\"Letter\":34264,\".dim\":34265,\"Ġessere\":34266,\"ĠScaffold\":34267,\"EXPECT\":34268,\"ĉRE\":34269,\".longitude\":34270,\"Ã¼nd\":34271,\"Ġstatue\":34272,\".addWidget\":34273,\"ĠCaribbean\":34274,\"addPreferredGap\":34275,\"ilde\":34276,\"UILabel\":34277,\"ĠOpport\":34278,\"Ġimperial\":34279,\"ursion\":34280,\"Ġmandate\":34281,\"Ġpromotional\":34282,\"Ġvk\":34283,\"iaÅĤ\":34284,\"Ġpyl\":34285,\"ĠCreation\":34286,\"Ð¾Ð·Ð´\":34287,\"Ġsimpler\":34288,\".what\":34289,\"ĠRecent\":34290,\"Storm\":34291,\".quantity\":34292,\"ĠLov\":34293,\"\\\"-\":34294,\"ubbles\":34295,\"_notification\":34296,\"(world\":34297,\"urger\":34298,\"*(-\":34299,\":\\\"Ċ\":34300,\"hm\":34301,\"anship\":34302,\"ĠAlmost\":34303,\"Ġmotorcycle\":34304,\"_fee\":34305,\"Ġabsorb\":34306,\"ĠVincent\":34307,\"Ġsounded\":34308,\"ÃŃst\":34309,\"Ġpharmaceutical\":34310,\"htag\":34311,\"ĠKindle\":34312,\"italize\":34313,\"ĠEmperor\":34314,\"oustic\":34315,\"Ġspecialists\":34316,\"åħ¬\":34317,\"BorderStyle\":34318,\"/\\\\\":34319,\"RELATED\":34320,\"(',',\":34321,\"(expr\":34322,\"Ġht\":34323,\"åįĪ\":34324,\"_Create\":34325,\"Ġspecially\":34326,\"Ġ[];čĊ\":34327,\"Ġheel\":34328,\"Ġsept\":34329,\"_arch\":34330,\"(initial\":34331,\"%.ĊĊ\":34332,\"\\\\\\\",\\\\\\\"\":34333,\"Ġdiscusses\":34334,\"Ġupt\":34335,\"Ġ[&\":34336,\"Ġmanus\":34337,\".hand\":34338,\"ĠMAIN\":34339,\"ĠDenmark\":34340,\"Ġ],čĊ\":34341,\"Ġcryst\":34342,\"Ġnack\":34343,\"Coords\":34344,\"_inner\":34345,\"Ġmidst\":34346,\"Ġawake\":34347,\"ĠÐŀ\":34348,\"-break\":34349,\"ÃŃvel\":34350,\"_PASS\":34351,\"ĠParams\":34352,\"Ġdetr\":34353,\"Ġspider\":34354,\"ĠConcept\":34355,\"Ġprend\":34356,\"CHED\":34357,\".Exit\":34358,\"Ġpopulated\":34359,\"Ġvirtue\":34360,\"_SESSION\":34361,\"Ġnouvel\":34362,\"oauth\":34363,\"ĠÐ´Ð°Ð½Ð½Ñĭ\":34364,\"rink\":34365,\".HeaderText\":34366,\"aturated\":34367,\"Ġerst\":34368,\"Ġåħ\":34369,\"à¥ĩ\":34370,\"_visible\":34371,\"eyer\":34372,\"Ġliable\":34373,\"Ġdebe\":34374,\"Ġbw\":34375,\"{-#\":34376,\"_WIN\":34377,\"dfs\":34378,\"Hover\":34379,\"ĠPUT\":34380,\"-angle\":34381,\"Ġnoble\":34382,\"Ġtraces\":34383,\"encv\":34384,\"ĠuserData\":34385,\"_ins\":34386,\"ĠSuz\":34387,\"Ġnewsletters\":34388,\"ĠModi\":34389,\"Ġentrepreneurs\":34390,\"Ġtribute\":34391,\"Ġrumors\":34392,\"Ġrr\":34393,\"ĠQuarter\":34394,\"ê³ł\":34395,\"Ġfeeds\":34396,\"Ã³g\":34397,\"Ġenvelope\":34398,\"Ġlear\":34399,\"ĠkÃ¸\":34400,\"developer\":34401,\"Similar\":34402,\":\\\")Ċ\":34403,\"subscription\":34404,\"Modifier\":34405,\"italic\":34406,\"Ġnasty\":34407,\"Ġtermination\":34408,\"Ġcharming\":34409,\"ĠâŁ\":34410,\"tons\":34411,\".trace\":34412,\"hots\":34413,\"ĠUR\":34414,\"Mont\":34415,\"Ġjustified\":34416,\"ĠGang\":34417,\"inea\":34418,\"Ġbog\":34419,\"(ap\":34420,\"_$\":34421,\"Ġcontamin\":34422,\".Dot\":34423,\"ĉDebug\":34424,\"(exports\":34425,\"Ġpaired\":34426,\"ĠAssignment\":34427,\"Ġautomobile\":34428,\"ĵį\":34429,\"Ġphases\":34430,\"vw\":34431,\"@SuppressWarnings\":34432,\"=\\\\\":34433,\"rant\":34434,\"-ed\":34435,\"ĉawait\":34436,\"Ġcertificates\":34437,\"'>\\\"\":34438,\"Ġintact\":34439,\"CTRL\":34440,\"Mike\":34441,\"gregation\":34442,\"ATTERN\":34443,\"Ġrepublic\":34444,\"_upper\":34445,\"iliary\":34446,\"Ġcomputation\":34447,\"hire\":34448,\"ĠShin\":34449,\"_ANY\":34450,\"ĠManufacturer\":34451,\"ĠCarm\":34452,\"Ġbearings\":34453,\"_comb\":34454,\"cad\":34455,\"uristic\":34456,\"Ġwholesale\":34457,\"Ġdonor\":34458,\".interfaces\":34459,\"presso\":34460,\"ĠBrun\":34461,\"-close\":34462,\"prove\":34463,\"_SK\":34464,\"ĉframe\":34465,\"etros\":34466,\"ĠPain\":34467,\"_EXP\":34468,\"ĠLT\":34469,\"_fs\":34470,\".datas\":34471,\"ĉss\":34472,\"voir\":34473,\"ĠAxis\":34474,\"Major\":34475,\"=\\\"<\":34476,\"[h\":34477,\"Ġprofess\":34478,\"igrate\":34479,\"(score\":34480,\"Keyword\":34481,\"\\\"os\":34482,\"ĠĠĠĠĉĊ\":34483,\"analysis\":34484,\"Ġreplay\":34485,\".pass\":34486,\"\\\\d\":34487,\"tls\":34488,\"Ġsanct\":34489,\".light\":34490,\"_mobile\":34491,\"ÑģÑĤÑĮ\":34492,\"ĉtotal\":34493,\"uity\":34494,\"Ġpaused\":34495,\"NAS\":34496,\"Ġencore\":34497,\"loe\":34498,\"Ġ-*-ĊĊ\":34499,\".high\":34500,\"ampler\":34501,\"ĠSecure\":34502,\"Ġfragments\":34503,\"_vel\":34504,\"illary\":34505,\"ĠStein\":34506,\"ĠDawn\":34507,\"Ġmaximize\":34508,\"à¸¢\":34509,\"Ġ/^\":34510,\"Ġcontinually\":34511,\"Ġshadows\":34512,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":34513,\"ĠIActionResult\":34514,\"ĠinformaciÃ³n\":34515,\"CHECK\":34516,\".SelectedItem\":34517,\"bundle\":34518,\"olley\":34519,\"<Int\":34520,\"AINER\":34521,\"ĠWing\":34522,\"titles\":34523,\"ountain\":34524,\"CY\":34525,\"ĠLocale\":34526,\"former\":34527,\"<context\":34528,\"RadioButton\":34529,\"_schedule\":34530,\"Ġfabulous\":34531,\"Robert\":34532,\"_PROFILE\":34533,\"Ġgates\":34534,\"IMP\":34535,\"ĠPentagon\":34536,\"gold\":34537,\"bach\":34538,\"employees\":34539,\"Rotate\":34540,\"Ġchamp\":34541,\"Ġselbst\":34542,\"Altern\":34543,\"ĠconvertView\":34544,\"/,\":34545,\"Ġ~(\":34546,\"Street\":34547,\"_place\":34548,\"Ġpersonalized\":34549,\"Publisher\":34550,\"ĠSOCK\":34551,\"_NAMESPACE\":34552,\"ĠStandards\":34553,\"soever\":34554,\"_CENTER\":34555,\"Interest\":34556,\"Ã´t\":34557,\"temperature\":34558,\"Viewport\":34559,\"getResource\":34560,\"Ġeaten\":34561,\"Ġsempre\":34562,\"Ġabnormal\":34563,\"Ġcylinder\":34564,\"Ġtroubles\":34565,\"nod\":34566,\"ÑĭÐ²\":34567,\"games\":34568,\"_gl\":34569,\"Plane\":34570,\"grey\":34571,\"_tbl\":34572,\".ComponentPlacement\":34573,\"ĠChase\":34574,\"Logging\":34575,\"many\":34576,\"ìĨ\":34577,\"Ġflame\":34578,\"=\\\"<?=$\":34579,\"ĠGroups\":34580,\"-U\":34581,\"ÑĢÐ°Ð½\":34582,\"ĊĊĊĊĊĊĊ\":34583,\"Ġvault\":34584,\"omon\":34585,\"problem\":34586,\"Ġtraders\":34587,\"Ġperipheral\":34588,\"Ġhomepage\":34589,\"(des\":34590,\"ĠSuccessfully\":34591,\"Ġreboot\":34592,\"Ġcellular\":34593,\"iii\":34594,\"ĠPlans\":34595,\"listing\":34596,\"ĉdis\":34597,\"ĠReflect\":34598,\"ĉexcept\":34599,\"\\\")(\":34600,\"ĠtambÃ©m\":34601,\"Vehicle\":34602,\"acci\":34603,\"lush\":34604,\"OrderBy\":34605,\"Ġimagined\":34606,\"codec\":34607,\"ĠdateTime\":34608,\"Micro\":34609,\"Ġreminds\":34610,\"Ġfrustrating\":34611,\"ĠVista\":34612,\"Train\":34613,\"ĠÐ²Ñģ\":34614,\"Ġmolecules\":34615,\"avin\":34616,\"Ġdoubled\":34617,\"Ġbrake\":34618,\"Ġcalcium\":34619,\"Friday\":34620,\"ĠIdentifier\":34621,\"åŁ\":34622,\"ÑĭÐ¹\":34623,\"ĠJah\":34624,\"Ren\":34625,\"Ġscam\":34626,\"ĠDennis\":34627,\".setInt\":34628,\"âŁ\":34629,\"Ġappeals\":34630,\"ĠAur\":34631,\"Ġsplash\":34632,\"equalsIgnoreCase\":34633,\"why\":34634,\"Ġsap\":34635,\"Supported\":34636,\"Ġsera\":34637,\"Ġ:\\\"\":34638,\"ĠVermont\":34639,\"Ġreun\":34640,\"ĠNova\":34641,\"ĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĊ\":34642,\"Rated\":34643,\"Ġlaying\":34644,\"ĠKaren\":34645,\".Deserialize\":34646,\"Ġcodec\":34647,\"Ġtaxpayers\":34648,\";\\\");Ċ\":34649,\"Ġcrude\":34650,\"Ġmole\":34651,\"ĠuseContext\":34652,\"ĉresp\":34653,\"Ġpkt\":34654,\"ĠCannot\":34655,\"Pipeline\":34656,\"åĨĨ\":34657,\"tical\":34658,\"ActionBar\":34659,\"aeda\":34660,\"ĠCritical\":34661,\"ĠNad\":34662,\"Ġbleeding\":34663,\"Ġllvm\":34664,\"/custom\":34665,\"ĠSimpson\":34666,\"Sy\":34667,\"itably\":34668,\"ĠSummit\":34669,\"())).\":34670,\"ELLOW\":34671,\"$',\":34672,\"Met\":34673,\"Invoice\":34674,\"olist\":34675,\"Ġspine\":34676,\"autiful\":34677,\"paid\":34678,\"Ġlocker\":34679,\"_arm\":34680,\"\\\\\\\"><\":34681,\"Ġtrajectory\":34682,\"_ring\":34683,\"Ġhydrogen\":34684,\"tron\":34685,\"Ġstatute\":34686,\"Ġconditional\":34687,\"Ġtray\":34688,\"-school\":34689,\"(widget\":34690,\"$config\":34691,\"Ġrequesting\":34692,\".uint\":34693,\"eton\":34694,\"brities\":34695,\"OfType\":34696,\"ADMIN\":34697,\"predict\":34698,\"Ġgegen\":34699,\"ĠHapp\":34700,\"OCUMENT\":34701,\"ĠApart\":34702,\"Ġ-----\":34703,\"roe\":34704,\"uide\":34705,\"justify\":34706,\"ĠSquad\":34707,\"Ġprofes\":34708,\".bot\":34709,\"_currency\":34710,\"innen\":34711,\"ĠMumbai\":34712,\"ĠNumbers\":34713,\"avanaugh\":34714,\"agnitude\":34715,\"âĢľThere\":34716,\"=http\":34717,\"çīĩ\":34718,\"Ġvb\":34719,\"+'</\":34720,\"Ġorganizing\":34721,\"anium\":34722,\"InSection\":34723,\".and\":34724,\"Ġeternal\":34725,\"Ġsouls\":34726,\"_ONE\":34727,\"_ns\":34728,\"_basic\":34729,\"ĠretVal\":34730,\"-shaped\":34731,\"ifdef\":34732,\"ĠMozilla\":34733,\"Ġeig\":34734,\"completed\":34735,\"Notifications\":34736,\"TECT\":34737,\"rien\":34738,\"coordinates\":34739,\"Ġpretend\":34740,\"ponsored\":34741,\".stderr\":34742,\"Ġgamers\":34743,\"Ġdefended\":34744,\"ToolTip\":34745,\"uitar\":34746,\"Ġfranca\":34747,\"ĠWoods\":34748,\"Ġihre\":34749,\"Ġpseudo\":34750,\"Ġcrowds\":34751,\"ĠSYSTEM\":34752,\"lec\":34753,\".keras\":34754,\"Ġcirculation\":34755,\"eer\":34756,\".cb\":34757,\"uzzy\":34758,\"íĺ\":34759,\".reader\":34760,\"Ġsequel\":34761,\"Several\":34762,\".portal\":34763,\"-----Ċ\":34764,\"istrar\":34765,\"ï»¿//\":34766,\"Pi\":34767,\"Ġ\\\\\\\"\\\"\":34768,\"Ġcustoms\":34769,\"ĠdisplayName\":34770,\"Ġnotices\":34771,\"Ġcarb\":34772,\"._ĊĊ\":34773,\"Ġproducto\":34774,\"ĠÑģÐ»\":34775,\"Ġnumerical\":34776,\"Ġunint\":34777,\"Ġcodigo\":34778,\"Ordinal\":34779,\"StringUtils\":34780,\"ĠdÃ©c\":34781,\"ĠLan\":34782,\"Ġshowcase\":34783,\"Ġarithmetic\":34784,\"-scroll\":34785,\"_TEMPLATE\":34786,\"ĠRouterModule\":34787,\"ĠShader\":34788,\"ĠÐĿ\":34789,\"policy\":34790,\"Performance\":34791,\"ĉborder\":34792,\"(filepath\":34793,\"ç©º\":34794,\"_energy\":34795,\"_CS\":34796,\"Their\":34797,\".spacing\":34798,\"(dp\":34799,\"ĠLANGUAGE\":34800,\"Ġhistorically\":34801,\"\\\">{{$\":34802,\"Ġinode\":34803,\"sil\":34804,\"Ġhace\":34805,\"Ġseverely\":34806,\"ĠOverview\":34807,\"Ġspraw\":34808,\"Ġbeaches\":34809,\":left\":34810,\"·»\":34811,\"(${\":34812,\"ĠFIRST\":34813,\"ĠSpa\":34814,\"-ass\":34815,\"Ġbaise\":34816,\"ĠNODE\":34817,\"ĠPizza\":34818,\"Pet\":34819,\"(seq\":34820,\"\\\\\\\">Ċ\":34821,\"CppMethodPointer\":34822,\"Ġvp\":34823,\"Ġia\":34824,\"_seconds\":34825,\"emet\":34826,\"/blob\":34827,\"_THRESH\":34828,\"...čĊ\":34829,\"Dest\":34830,\"ĠNH\":34831,\".dataSource\":34832,\"itÃ©s\":34833,\"ĠJak\":34834,\"sell\":34835,\"Ġworkshops\":34836,\"<u\":34837,\"Ġrivals\":34838,\"ĠEXISTS\":34839,\"hom\":34840,\"-token\":34841,\"compatible\":34842,\".JPanel\":34843,\"Ġphysicians\":34844,\"artin\":34845,\"Ġdesirable\":34846,\"Ġdistinctive\":34847,\".Dep\":34848,\"gid\":34849,\"iliate\":34850,\",max\":34851,\"Ġpremiere\":34852,\"ĠqDebug\":34853,\"Ġadvocacy\":34854,\"Ġwhisper\":34855,\"Pt\":34856,\"Ġunchanged\":34857,\"_qty\":34858,\"è¯·æ±Ĥ\":34859,\"Season\":34860,\"avelength\":34861,\"ĠPul\":34862,\"ĠdÃŃa\":34863,\"']]],Ċ\":34864,\"alis\":34865,\"(\\\"&\":34866,\"boro\":34867,\"Ġbm\":34868,\"ĠRadi\":34869,\"wrong\":34870,\"ĠGoing\":34871,\"imeType\":34872,\"iji\":34873,\"-feedback\":34874,\"ĠNames\":34875,\"ĠBapt\":34876,\"Ġprobable\":34877,\"ĠEther\":34878,\"ĠPolitics\":34879,\"_protocol\":34880,\"lining\":34881,\"Sat\":34882,\"Ġcorrel\":34883,\".Primary\":34884,\"(nullable\":34885,\"RIORITY\":34886,\"Ġcoloring\":34887,\"Ġutilizing\":34888,\"das\":34889,\"Ġexported\":34890,\"Ġcarriers\":34891,\"Conv\":34892,\".editor\":34893,\"iÃ³\":34894,\"(handles\":34895,\"Ġappreciation\":34896,\".import\":34897,\"ĠAustria\":34898,\"ĠStrip\":34899,\"ilight\":34900,\"Ġappropriately\":34901,\"ĠPrest\":34902,\"ĠWir\":34903,\"ĠUIApplication\":34904,\"alchemy\":34905,\"ĠMob\":34906,\"ĠDetermin\":34907,\"erguson\":34908,\"registered\":34909,\"_convert\":34910,\"ĠVladimir\":34911,\".ShowDialog\":34912,\"reflect\":34913,\"Ġshook\":34914,\"Ġassure\":34915,\"ĠOften\":34916,\"Ġcivilization\":34917,\"Ġvocabulary\":34918,\"foreground\":34919,\"ĠScope\":34920,\"Ġunwanted\":34921,\"acting\":34922,\"Ġ([]\":34923,\"Ġmarking\":34924,\".original\":34925,\"ĠMOVE\":34926,\"Ġsporting\":34927,\"ceptions\":34928,\"NSNumber\":34929,\"Sizes\":34930,\"Ġprovincial\":34931,\"_Trans\":34932,\"Ġproblematic\":34933,\"digit\":34934,\"ĠEmma\":34935,\"locks\":34936,\"ĠCrew\":34937,\"iba\":34938,\"'):\":34939,\"isha\":34940,\"Ġmamm\":34941,\"Ġoccured\":34942,\"wcs\":34943,\"(rule\":34944,\"Ġmerchandise\":34945,\"especially\":34946,\"ĠTwin\":34947,\"Ġnaming\":34948,\"Ġslog\":34949,\"Ġimproves\":34950,\"Ġadher\":34951,\":text\":34952,\".hadoop\":34953,\"_HTTP\":34954,\".toList\":34955,\".disabled\":34956,\"Ġlenses\":34957,\".ini\":34958,\"ĠRare\":34959,\"ĠUbuntu\":34960,\"Ġscram\":34961,\"olation\":34962,\"titulo\":34963,\"Everything\":34964,\"Ġnodded\":34965,\"ichtig\":34966,\"_constant\":34967,\"zc\":34968,\"lift\":34969,\"ĠNotify\":34970,\"ondo\":34971,\"ĠINF\":34972,\"(\\\"+\":34973,\"ĠKaz\":34974,\"Ġdread\":34975,\".mapper\":34976,\"leur\":34977,\"ĠComey\":34978,\"ĠNB\":34979,\"icers\":34980,\".Push\":34981,\"ĠHack\":34982,\"ĠBrazilian\":34983,\"_prod\":34984,\"Ġ//ĊĊ\":34985,\"Ġbicycle\":34986,\"Ġunavailable\":34987,\"Ġadolescent\":34988,\"blk\":34989,\"Ġmitig\":34990,\"_blue\":34991,\"ìĺ\":34992,\"fadeIn\":34993,\"ĠUtilities\":34994,\"ĠMN\":34995,\";k\":34996,\"<style\":34997,\"-status\":34998,\"indo\":34999,\"Ġinnings\":35000,\"Ġgj\":35001,\"Ġ||=\":35002,\".eu\":35003,\":Number\":35004,\"Ġcuisine\":35005,\"ĠURLs\":35006,\"iek\":35007,\"Ġwires\":35008,\"ĉps\":35009,\"ieg\":35010,\".mk\":35011,\"soap\":35012,\"Ġsometime\":35013,\"Ġstap\":35014,\"_series\":35015,\".Target\":35016,\"æº\":35017,\".destination\":35018,\"OUNTER\":35019,\"Raises\":35020,\"&A\":35021,\"Ġsmartphones\":35022,\"NIEnv\":35023,\".sdk\":35024,\"Ġhelicopter\":35025,\"Ġimpe\":35026,\"ĠBirth\":35027,\"AU\":35028,\"breadcrumbs\":35029,\"coords\":35030,\"Ġexplored\":35031,\"Ġlod\":35032,\"ĠIp\":35033,\"gable\":35034,\"iane\":35035,\"Ġartifacts\":35036,\"BoxLayout\":35037,\"Ø§Ø±\":35038,\"listener\":35039,\".cart\":35040,\"ĠHuff\":35041,\"ĠHindu\":35042,\"ĠDataTypes\":35043,\"ĠDrupal\":35044,\"IGNORE\":35045,\"Ġoffsets\":35046,\"ĠRTC\":35047,\"-login\":35048,\"æ®\":35049,\"ĠQObject\":35050,\"Ġprosecutor\":35051,\"Rock\":35052,\"_chat\":35053,\"Way\":35054,\"ì²\":35055,\"Ġneglig\":35056,\"Ġdude\":35057,\";<\":35058,\"Ġdelegates\":35059,\"_failed\":35060,\"/dev\":35061,\"/work\":35062,\"(New\":35063,\"etable\":35064,\"()\\\"\":35065,\"(Icons\":35066,\"Ġpork\":35067,\"ĠModelAndView\":35068,\"ĠVIP\":35069,\"ĠKor\":35070,\"mix\":35071,\"Ġoxid\":35072,\"ĠSCREEN\":35073,\"ĠFourth\":35074,\"/\\\",Ċ\":35075,\"Ġtee\":35076,\"ĠStevens\":35077,\"ticks\":35078,\"Ġpledge\":35079,\"ibbon\":35080,\"ĠLoan\":35081,\"Ġneo\":35082,\"numpy\":35083,\"ĠSharedPreferences\":35084,\"-oriented\":35085,\"ĠLoggerFactory\":35086,\"ĠGraphQL\":35087,\"zenia\":35088,\"\\\"_\":35089,\"Women\":35090,\".cast\":35091,\"Ġdeliberately\":35092,\"+b\":35093,\"ĠArn\":35094,\"fontSize\":35095,\"Ġmaze\":35096,\"Ġblamed\":35097,\".mas\":35098,\"})čĊ\":35099,\"elerik\":35100,\"Ġscanning\":35101,\"ĠWorkshop\":35102,\"Ġfinden\":35103,\"Ġcaut\":35104,\"UIFont\":35105,\"(return\":35106,\"alin\":35107,\"castle\":35108,\"////////////////////////////////////////////////////////////////////////\":35109,\"Ġincentive\":35110,\"opath\":35111,\"blob\":35112,\"Ġcigarette\":35113,\"Ġfertil\":35114,\"*/ĊĊĊ\":35115,\"ĠShar\":35116,\"ĊĠĠĠĠĠĠĊ\":35117,\"Ġuncertain\":35118,\"ĠSton\":35119,\"Operations\":35120,\"ĠSpencer\":35121,\"Ġdefin\":35122,\"ĠSolo\":35123,\"onest\":35124,\"·»åĬł\":35125,\"Ġuomo\":35126,\"Give\":35127,\"Ġdentro\":35128,\";padding\":35129,\"entai\":35130,\"ĠCars\":35131,\"Ġenthusiasm\":35132,\"ĠOperating\":35133,\"Skip\":35134,\"paration\":35135,\"Ġprotects\":35136,\"Ġrever\":35137,\"dg\":35138,\"ĠCincinnati\":35139,\"Ġconsectetur\":35140,\"Ġmuss\":35141,\"employed\":35142,\"auses\":35143,\"inkle\":35144,\".Values\":35145,\"£¼\":35146,\"lov\":35147,\"_WARN\":35148,\"Ġbookmark\":35149,\"ĠApollo\":35150,\".axis\":35151,\"ĠmÃ©t\":35152,\"Ġopener\":35153,\"Ġtumor\":35154,\"dan\":35155,\"Ġelementary\":35156,\"Ġskipped\":35157,\"ĠKer\":35158,\"asia\":35159,\"_resp\":35160,\"Ġdemol\":35161,\"ĠCanadians\":35162,\"Ġtastes\":35163,\"UInteger\":35164,\"Ġ'${\":35165,\".aws\":35166,\"ROID\":35167,\"rians\":35168,\"MQ\":35169,\"ordable\":35170,\"Ġcousin\":35171,\"Propagation\":35172,\"(Session\":35173,\"phalt\":35174,\"ULD\":35175,\"ĠScalar\":35176,\"Ġbloody\":35177,\"Ġà¦\":35178,\".mask\":35179,\",q\":35180,\"ĠUnits\":35181,\"Ġcentres\":35182,\"ĠPrim\":35183,\".]ĊĊ\":35184,\"ĠShaw\":35185,\"Prom\":35186,\"ĠThought\":35187,\"Checker\":35188,\"_outputs\":35189,\"(chan\":35190,\"EINVAL\":35191,\"Ġbob\":35192,\"_cmp\":35193,\"Ped\":35194,\"Ġmatrices\":35195,\"Ġvrouwen\":35196,\"Ġgenuinely\":35197,\"highlight\":35198,\"(display\":35199,\")!=\":35200,\"Ġdelicate\":35201,\"ĠLuther\":35202,\"ĠMiles\":35203,\"ĠuserID\":35204,\"%=\":35205,\"ateurs\":35206,\"_BUF\":35207,\"-------Ċ\":35208,\"imitives\":35209,\"Ġshelves\":35210,\"slow\":35211,\"_information\":35212,\"LEG\":35213,\"Wr\":35214,\".forms\":35215,\"celand\":35216,\"/un\":35217,\":&\":35218,\".âĢĻĊĊ\":35219,\"=\\\"%\":35220,\"Ġprost\":35221,\"Ġfontsize\":35222,\"uciÃ³n\":35223,\"getic\":35224,\"amt\":35225,\"=\\\".\":35226,\"Decor\":35227,\"Brit\":35228,\"Ġ\\\"\\\").\":35229,\"Ġfounding\":35230,\".FileName\":35231,\"ĠTier\":35232,\"Ġdisclose\":35233,\"Ã¡m\":35234,\".syn\":35235,\".ViewHolder\":35236,\"licant\":35237,\"_stage\":35238,\"Monday\":35239,\"Ġdeserialize\":35240,\"talk\":35241,\"Ġtraditionally\":35242,\"æĢģ\":35243,\"Ø®\":35244,\"LEX\":35245,\"Ġeh\":35246,\"ĉROM\":35247,\"Ġ{})Ċ\":35248,\"Questions\":35249,\"ncpy\":35250,\"Ġfixing\":35251,\"ÐºÑĥ\":35252,\"_Key\":35253,\":x\":35254,\"ĠSTRING\":35255,\"ĠÑĦÐ°Ð¹\":35256,\"ĉleft\":35257,\"ĠBench\":35258,\"ellij\":35259,\"URRED\":35260,\"ĠDiagram\":35261,\"}catch\":35262,\"/time\":35263,\"ĠMissing\":35264,\"dbname\":35265,\"Ġsore\":35266,\"ĠWalt\":35267,\"ugging\":35268,\"represent\":35269,\"ĠGS\":35270,\"neys\":35271,\"ĉpage\":35272,\"Ġvolcan\":35273,\"(btn\":35274,\"Ġexceeds\":35275,\"Ġerg\":35276,\"Ġpilots\":35277,\"ĠSed\":35278,\"ersions\":35279,\"Ġpatron\":35280,\"RV\":35281,\"/top\":35282,\".asset\":35283,\"_cross\":35284,\".Editor\":35285,\".tb\":35286,\"Ġwelcoming\":35287,\"SCREEN\":35288,\")findViewById\":35289,\"Coder\":35290,\"<IActionResult\":35291,\"_QUEUE\":35292,\"áĥ\":35293,\"Ġheights\":35294,\"Requests\":35295,\"Ġsymbolic\":35296,\"ččĊččĊ\":35297,\"Ġcoupons\":35298,\"-five\":35299,\"ĠDesktop\":35300,\"Ġmismatch\":35301,\"Ġ'_'\":35302,\"_DIV\":35303,\"ASON\":35304,\".transpose\":35305,\"(mask\":35306,\"ĠCelt\":35307,\".Hand\":35308,\"atu\":35309,\"jÄĻ\":35310,\"Ġ{});Ċ\":35311,\"Miss\":35312,\"Ġprima\":35313,\"mund\":35314,\"olv\":35315,\"ĠPretty\":35316,\"Ġrebel\":35317,\"ĠFD\":35318,\"astically\":35319,\"OLT\":35320,\"-axis\":35321,\"uxe\":35322,\"Ġeinfach\":35323,\"ĠChemical\":35324,\"_seg\":35325,\"leetcode\":35326,\"lope\":35327,\"_orig\":35328,\"ĠĠĉĉ\":35329,\"(Double\":35330,\"ĠPayPal\":35331,\".BackgroundImage\":35332,\"Ġhomemade\":35333,\".).\":35334,\"(parser\":35335,\"atro\":35336,\"accordion\":35337,\"Define\":35338,\"ĠìŀĪ\":35339,\"ĠAUTO\":35340,\".summary\":35341,\"scalar\":35342,\"ĠHood\":35343,\"quin\":35344,\"_der\":35345,\"ĠGesch\":35346,\".compute\":35347,\"Feedback\":35348,\"Ġpharmac\":35349,\"ĠÅŁi\":35350,\"Ġgloss\":35351,\"ĠFILTER\":35352,\"INSTANCE\":35353,\"Ġkal\":35354,\".PL\":35355,\"_FREE\":35356,\"Grade\":35357,\"ĠâĻ\":35358,\".metrics\":35359,\"Ġcage\":35360,\".XtraGrid\":35361,\"_ds\":35362,\"zig\":35363,\"interopRequireDefault\":35364,\".removeClass\":35365,\"=============\":35366,\"Ġmasters\":35367,\"StateException\":35368,\"illery\":35369,\"ĠBrady\":35370,\"Ġlining\":35371,\"_cs\":35372,\"insula\":35373,\"Ġ}:\":35374,\"[position\":35375,\"ĠRx\":35376,\"ĠBYTE\":35377,\"ĠStrike\":35378,\"ĠÐļ\":35379,\"ĠCluster\":35380,\".download\":35381,\"Allowed\":35382,\"Ġamenities\":35383,\"ĠonTap\":35384,\"fulWidget\":35385,\"Ġstrengths\":35386,\"tweet\":35387,\"Ġascending\":35388,\"Ġdisclosed\":35389,\"grav\":35390,\"district\":35391,\")<<\":35392,\"),\\\"\":35393,\"(defun\":35394,\"_|\":35395,\"Ġgaze\":35396,\"Ð°Ñı\":35397,\"Ġforty\":35398,\"===========\":35399,\"Science\":35400,\"sembler\":35401,\"ĉbody\":35402,\"_transfer\":35403,\"Ġlongtime\":35404,\"Ġcomplications\":35405,\"Ġbooth\":35406,\"VERR\":35407,\"Ġyields\":35408,\"Ġnavigator\":35409,\"::_('\":35410,\"ECTOR\":35411,\"_Config\":35412,\"Ġlasted\":35413,\"usal\":35414,\"çĻ»å½ķ\":35415,\"Ġgloves\":35416,\"Ġbelly\":35417,\"Sales\":35418,\"(Method\":35419,\"(member\":35420,\"ĠReed\":35421,\"passed\":35422,\"SignIn\":35423,\",num\":35424,\"ULONG\":35425,\"ĠLEG\":35426,\"nels\":35427,\"Ġmentor\":35428,\"(rc\":35429,\"ĠObviously\":35430,\".if\":35431,\"ĠFreder\":35432,\"HEAD\":35433,\"@author\":35434,\"Conditions\":35435,\"Ġgardens\":35436,\"ĠRip\":35437,\"(users\":35438,\"ĠOkay\":35439,\"Ġwrestling\":35440,\"imestone\":35441,\"ĠCertified\":35442,\"Ġverdict\":35443,\"aida\":35444,\".innerText\":35445,\"icast\":35446,\"ĉat\":35447,\"Ġpresumably\":35448,\"ĠFUN\":35449,\"ajes\":35450,\"ÐĹ\":35451,\">\\\",Ċ\":35452,\"_Pin\":35453,\"uese\":35454,\"Ġoverrides\":35455,\"_ready\":35456,\"Advanced\":35457,\"Ġopi\":35458,\"-cart\":35459,\"(\\\"/\\\",\":35460,\"ĠDeb\":35461,\"CRY\":35462,\"ĠVertical\":35463,\"ĠOVER\":35464,\"ĠCorporate\":35465,\"Ġ\\\"\\\";\":35466,\"Ġstepping\":35467,\"ej\":35468,\"Ġaccusations\":35469,\"Ġoraz\":35470,\"_tail\":35471,\"Ġinduced\":35472,\"Ġelastic\":35473,\"Ġblown\":35474,\",//\":35475,\"Ġbackgrounds\":35476,\"âĢĻune\":35477,\"-sdk\":35478,\"ĠsetInterval\":35479,\"Ġincentives\":35480,\"Ġvegetable\":35481,\"_On\":35482,\"expanded\":35483,\"pix\":35484,\"_shader\":35485,\"ĠSPDX\":35486,\"@example\":35487,\"ĠWrapper\":35488,\".Zero\":35489,\"Positive\":35490,\"Ġspinner\":35491,\"Ġinvented\":35492,\"ĠGates\":35493,\"Ð¾ÑĤÐ¾ÑĢ\":35494,\"Ġcomparisons\":35495,\"è·\":35496,\".primary\":35497,\"dataProvider\":35498,\"additional\":35499,\"ĉoptions\":35500,\"snapshot\":35501,\".setHorizontal\":35502,\"Ġ\\\"{}\":35503,\"ĠFisher\":35504,\"halten\":35505,\"<Type\":35506,\"ĠmaxLength\":35507,\"ĠMt\":35508,\"Ġê°Ģ\":35509,\".jetbrains\":35510,\"Ġidentifies\":35511,\"Ġflowing\":35512,\"ĠDiscussion\":35513,\"atsby\":35514,\"Ġschw\":35515,\"ughty\":35516,\"Ġrivers\":35517,\".unique\":35518,\"_PHY\":35519,\"edral\":35520,\"(ll\":35521,\"Ġcsrf\":35522,\"ppers\":35523,\"Ã¼l\":35524,\"ĠEspecially\":35525,\"ported\":35526,\"ĠHarrison\":35527,\"*******/Ċ\":35528,\"TextColor\":35529,\"ìĬµ\":35530,\"wire\":35531,\"ĠstatusCode\":35532,\"ĠFinish\":35533,\"cence\":35534,\"ĠMcCain\":35535,\"ĠWor\":35536,\"(await\":35537,\"Ġ)->\":35538,\"ĠRegistered\":35539,\"INED\":35540,\"kal\":35541,\"parison\":35542,\"Ġobjeto\":35543,\"Vi\":35544,\"manda\":35545,\"Ġrenewed\":35546,\"ĠSof\":35547,\"essel\":35548,\".ndarray\":35549,\"Ġcrap\":35550,\"ç®¡\":35551,\".abspath\":35552,\"(up\":35553,\"Ġclearance\":35554,\"ĠTW\":35555,\"_COPY\":35556,\"ĠĠĠĠĠĠĠĠĠĠĠĠĉ\":35557,\"Ġforests\":35558,\"Ġarguably\":35559,\"ĠASS\":35560,\"hey\":35561,\"amel\":35562,\"_fore\":35563,\"ĠSoutheast\":35564,\"Ġabused\":35565,\"Ġpracticing\":35566,\"akedirs\":35567,\"ä¸»\":35568,\"_resources\":35569,\"Ġpond\":35570,\".Fixed\":35571,\"LastError\":35572,\"ĠPsychology\":35573,\"Ġ\\\"//\":35574,\"!:\":35575,\"Reusable\":35576,\"Ġmensaje\":35577,\"Ġrospy\":35578,\"Ġbour\":35579,\"Ġvarieties\":35580,\"Ġempath\":35581,\"(({\":35582,\"_org\":35583,\"ĠMes\":35584,\"ĠMagento\":35585,\"ISTORY\":35586,\"Unless\":35587,\"Ġhj\":35588,\"ĠDuty\":35589,\"Jun\":35590,\",size\":35591,\"Ġpaintings\":35592,\"Ġdispens\":35593,\"dart\":35594,\"Ġbehavioral\":35595,\"Ġrpc\":35596,\"calculate\":35597,\"fruit\":35598,\"_mm\":35599,\"ĉpthread\":35600,\"MaxLength\":35601,\"Ġcurrencies\":35602,\"_capacity\":35603,\"ĠOz\":35604,\"Ġfirearm\":35605,\"Ġcoefficient\":35606,\"Ġbankruptcy\":35607,\"wart\":35608,\"Ġfatigue\":35609,\"AVA\":35610,\"Ġespa\":35611,\"_pc\":35612,\"ĠQuotes\":35613,\"_LIGHT\":35614,\"ĠTickets\":35615,\"Ġrelates\":35616,\"Ġpublishers\":35617,\"Ġunlocked\":35618,\"Ġ//----------------------------------------------------------------\":35619,\"ĠInterruptedException\":35620,\"Ġoutlook\":35621,\"rn\":35622,\"Ġrebels\":35623,\"Written\":35624,\"Ġasian\":35625,\"otto\":35626,\"Ġĉĉĉĉ\":35627,\"_gpu\":35628,\"Txt\":35629,\".ImageView\":35630,\"Ġsuis\":35631,\"_tables\":35632,\".RecyclerView\":35633,\"Ġwhatsoever\":35634,\"èģ\":35635,\"]++;Ċ\":35636,\"assertTrue\":35637,\"_verify\":35638,\"ĠRivers\":35639,\"Ġ][\":35640,\"Jet\":35641,\"idian\":35642,\"Sibling\":35643,\"Ġgenres\":35644,\".Access\":35645,\"OPS\":35646,\"Ġtrivial\":35647,\"à¸ª\":35648,\"alen\":35649,\"Ð²ÐµÐ´\":35650,\"ĠSword\":35651,\"Ġscrutiny\":35652,\"(cb\":35653,\"Ġcommerce\":35654,\"Ġguarantees\":35655,\"_adv\":35656,\"ĠLET\":35657,\"recio\":35658,\"Ġhilar\":35659,\"Ġbackyard\":35660,\"ãĢı\":35661,\"Ġillustrated\":35662,\"/vendor\":35663,\".Util\":35664,\"Ġwow\":35665,\"LOY\":35666,\"ĠMarshal\":35667,\"\\\">'.$\":35668,\"ĠBak\":35669,\"Ġmodifiers\":35670,\"dictionary\":35671,\"ĠStre\":35672,\"multiple\":35673,\"\\\")),\":35674,\"ĠCort\":35675,\"']\\\").\":35676,\"(admin\":35677,\"ĠCreator\":35678,\"Internet\":35679,\"(ms\":35680,\"logy\":35681,\"DECLARE\":35682,\"ĠMarcus\":35683,\"<<<<\":35684,\"ãģł\":35685,\"_my\":35686,\"(inst\":35687,\"Ġsciences\":35688,\"NDER\":35689,\".enter\":35690,\"Ġitu\":35691,\"Ġbehave\":35692,\"Pan\":35693,\"ombies\":35694,\"='<\":35695,\"'));čĊ\":35696,\"ĠMENU\":35697,\"ĠWorkers\":35698,\".NoError\":35699,\"Ġbindings\":35700,\"Ġdisabilities\":35701,\"{\\\\\":35702,\"ĠMunicip\":35703,\"Ġcores\":35704,\"urple\":35705,\"ĠNokia\":35706,\"usions\":35707,\"ĠFitness\":35708,\".handleChange\":35709,\"Ġjavascript\":35710,\"ìļĶ\":35711,\"(dec\":35712,\"Ġpacking\":35713,\"-depend\":35714,\"Ġtranscript\":35715,\"zeros\":35716,\"_alert\":35717,\"?\\\",Ċ\":35718,\"libs\":35719,\"±Ð¾ÑĤ\":35720,\"Ġ|ĊĊ\":35721,\"trained\":35722,\"ĠGent\":35723,\"ĠRab\":35724,\"xp\":35725,\"_configuration\":35726,\"å¤©\":35727,\"_accept\":35728,\".recyclerview\":35729,\":url\":35730,\"ĠMuhammad\":35731,\"Ġprivileges\":35732,\"_bank\":35733,\"uku\":35734,\"wallet\":35735,\"ĠROOT\":35736,\"Ġencuent\":35737,\"?family\":35738,\"ĉposition\":35739,\"Ġcg\":35740,\"Ġprecip\":35741,\"methods\":35742,\"_fast\":35743,\"increment\":35744,\"ĠTiger\":35745,\"_OCCURRED\":35746,\"quip\":35747,\"ĠHAS\":35748,\"_dom\":35749,\"Ġwreck\":35750,\"bj\":35751,\"Ġdern\":35752,\"Ġorgans\":35753,\".entries\":35754,\"Ġ_('\":35755,\"ramento\":35756,\"ĠJamie\":35757,\"Ġpunk\":35758,\"IPP\":35759,\"Ġprograma\":35760,\"Ġattain\":35761,\"Ġproves\":35762,\"/sign\":35763,\"Ġanswering\":35764,\"Ġladder\":35765,\"****************************\":35766,\"ĠWalmart\":35767,\"ĠCONTENT\":35768,\"ductor\":35769,\"Ġverbal\":35770,\"ĠPID\":35771,\"crypto\":35772,\"_CALLBACK\":35773,\"Ġ=================================\":35774,\"Ġpotent\":35775,\"Ġshorts\":35776,\".Uri\":35777,\".uniform\":35778,\";border\":35779,\"ĠWer\":35780,\"Ġherein\":35781,\"lla\":35782,\"ĠIhr\":35783,\"Pixmap\":35784,\"literal\":35785,\"!)ĊĊ\":35786,\"generic\":35787,\"rust\":35788,\"_scripts\":35789,\"osto\":35790,\"itus\":35791,\"ĠCoalition\":35792,\"Ġremot\":35793,\"deploy\":35794,\"ĠEagle\":35795,\"ãĢģãĢĮ\":35796,\"Ġimportante\":35797,\"ĉobject\":35798,\"Ġseasonal\":35799,\"nej\":35800,\"aidu\":35801,\"BindView\":35802,\"ĠSierra\":35803,\"-bg\":35804,\"ĠmakeStyles\":35805,\"[offset\":35806,\"Games\":35807,\"Ġhormone\":35808,\"ARIO\":35809,\"heads\":35810,\"(select\":35811,\"ĠStarted\":35812,\"@param\":35813,\"_decl\":35814,\"_blog\":35815,\"ĠaÃ±o\":35816,\"\\\\Api\":35817,\"ĠMilwaukee\":35818,\"Provid\":35819,\"Animated\":35820,\"Ġcooler\":35821,\"ĠSeed\":35822,\".Edit\":35823,\"ÏĦ\":35824,\"ĠTaking\":35825,\"ĠborderColor\":35826,\"-founder\":35827,\".LoggerFactory\":35828,\"Ġ\\\"\\\"ĊĊ\":35829,\"ALT\":35830,\"ĠLate\":35831,\"EDIATE\":35832,\"Ġ);ĊĊĊ\":35833,\"afa\":35834,\"Ġcancellation\":35835,\"Atom\":35836,\"ĠBirmingham\":35837,\"empresa\":35838,\"HEMA\":35839,\"ascal\":35840,\"Ġupside\":35841,\".Version\":35842,\"ĠFolder\":35843,\"ĠEight\":35844,\"ĠVintage\":35845,\"ĠAppDelegate\":35846,\"ĠPrevention\":35847,\".separator\":35848,\"STM\":35849,\"(room\":35850,\"generator\":35851,\"Ġcattle\":35852,\"ĉZ\":35853,\"ĠParticle\":35854,\"'};Ċ\":35855,\"Ġneighbours\":35856,\"ĠStateless\":35857,\"Ġaltitude\":35858,\"Ġsaint\":35859,\"Ð¾Ð±Ð°Ð²\":35860,\"Ġconvinc\":35861,\"ĠContents\":35862,\"Ġjeune\":35863,\"(ts\":35864,\"Serialization\":35865,\"(collection\":35866,\"ĠJazz\":35867,\"ĠDod\":35868,\"ĠRoch\":35869,\"acio\":35870,\"commended\":35871,\"DEFINE\":35872,\".onload\":35873,\"Ġspecialty\":35874,\"PLACE\":35875,\"_MOVE\":35876,\"Ġaccountable\":35877,\"Reuters\":35878,\"Ġficken\":35879,\"Ġdepr\":35880,\"Wow\":35881,\"Void\":35882,\".space\":35883,\"à¸Ĺ\":35884,\"Ġtq\":35885,\"ĠPets\":35886,\"<$\":35887,\"(Current\":35888,\"berries\":35889,\"planation\":35890,\"ĠlistOf\":35891,\"ĠThu\":35892,\"ĠPRINT\":35893,\"Ġmismo\":35894,\"Ġdoi\":35895,\"chk\":35896,\"ĠUnicode\":35897,\"(role\":35898,\"Ġvirgin\":35899,\"<Point\":35900,\"_RESPONSE\":35901,\"-house\":35902,\"ĠVenezuela\":35903,\"EMAIL\":35904,\"ĠpÃºb\":35905,\"_exist\":35906,\"Ball\":35907,\".CL\":35908,\"references\":35909,\"ĠBeautifulSoup\":35910,\"ĉExpect\":35911,\"THIS\":35912,\"ÑĥÐ´\":35913,\"bane\":35914,\"Ġtemporal\":35915,\"ERIC\":35916,\"etas\":35917,\"Ġrefreshing\":35918,\"Ġsecular\":35919,\"@synthesize\":35920,\"accur\":35921,\"Ġnella\":35922,\"ĠSOL\":35923,\".pipe\":35924,\"Channels\":35925,\"èĩª\":35926,\"Ġinsertion\":35927,\"á»ĭ\":35928,\"elia\":35929,\"Ġadjustable\":35930,\"Canada\":35931,\"ĠITEM\":35932,\"Ġcurves\":35933,\"ĠCheap\":35934,\"leting\":35935,\"Ġoptimistic\":35936,\"allo\":35937,\"Ġpolitician\":35938,\"_download\":35939,\"=edge\":35940,\"ORTH\":35941,\"Ġmodelo\":35942,\"arto\":35943,\".rotate\":35944,\"Ġselenium\":35945,\"æĪĳ\":35946,\"_alias\":35947,\"Ġrenowned\":35948,\".'.\":35949,\"Ġczy\":35950,\"Ġalles\":35951,\".Compiler\":35952,\"ĠBass\":35953,\"Connector\":35954,\".Role\":35955,\"LINK\":35956,\"Ġcriterion\":35957,\"lemetry\":35958,\"Successfully\":35959,\"/png\":35960,\"Ġeyeb\":35961,\"aspberry\":35962,\"(gr\":35963,\"Ġdangers\":35964,\"Ġcorrected\":35965,\"Ġglow\":35966,\"Ġelaborate\":35967,\"ĠBears\":35968,\"awai\":35969,\"=\\\"'+\":35970,\"Ġpromotions\":35971,\"Ġmathematical\":35972,\"Ġ\\\"`\":35973,\"_GenericClass\":35974,\"ĠChef\":35975,\".Sort\":35976,\"tableName\":35977,\"RIC\":35978,\"Ġvoluntary\":35979,\"ĠBlade\":35980,\"-elect\":35981,\"ĠCombat\":35982,\"ĠAbility\":35983,\"Ġabdom\":35984,\"Ġduck\":35985,\"Tmp\":35986,\"åħ¨\":35987,\"Ġerase\":35988,\".Ph\":35989,\"ĠDefaults\":35990,\"partment\":35991,\"_USB\":35992,\"Ãªte\":35993,\";'\":35994,\"Ġpads\":35995,\"ĠObamacare\":35996,\".Total\":35997,\"Ġdivert\":35998,\"Ġcricket\":35999,\"Ġrecreational\":36000,\"(red\":36001,\"ĠCle\":36002,\"RU\":36003,\"Ġmistaken\":36004,\"ĠMontana\":36005,\"Ġstrive\":36006,\"_slider\":36007,\"ĠPlastic\":36008,\"Ġdecorated\":36009,\"ĠVP\":36010,\"lico\":36011,\"ĉfalse\":36012,\"Ġprefs\":36013,\"(\\\\\\\"\":36014,\"_false\":36015,\"iendo\":36016,\"Ġ@$\":36017,\"Bucket\":36018,\"actical\":36019,\"ĠZhang\":36020,\".cols\":36021,\".Binding\":36022,\"Ġwax\":36023,\"_STORAGE\":36024,\"Ġlawn\":36025,\"Ġrf\":36026,\".Scene\":36027,\"ĠCalculator\":36028,\".design\":36029,\"Ġresil\":36030,\"Ð»ÐµÐ¼\":36031,\"Employ\":36032,\"ĠPrices\":36033,\"ĠPWM\":36034,\"agi\":36035,\".evaluate\":36036,\"ĉparam\":36037,\"Ġbrass\":36038,\"bben\":36039,\"Ġinflammation\":36040,\"ullivan\":36041,\"Ġannot\":36042,\"ĠpH\":36043,\"iameter\":36044,\"ĠBTC\":36045,\"(box\":36046,\"Storyboard\":36047,\"Ġclay\":36048,\".assertRaises\":36049,\"|string\":36050,\".Apply\":36051,\"Ġmatcher\":36052,\"unded\":36053,\"Ġsatisfying\":36054,\"Ġìłķ\":36055,\"Rendering\":36056,\"_appro\":36057,\"indrome\":36058,\"ANEL\":36059,\"_fix\":36060,\"brush\":36061,\".Match\":36062,\"Ġsmiling\":36063,\"onaut\":36064,\"Sunday\":36065,\"Ġdeletion\":36066,\"Ġencourages\":36067,\"Pull\":36068,\"Ġrevenge\":36069,\"Ġquarry\":36070,\"trade\":36071,\"Ġcables\":36072,\"(delta\":36073,\"itespace\":36074,\"Ġfh\":36075,\".bunifu\":36076,\"Ġviel\":36077,\"_INCLUDED\":36078,\"ĠTail\":36079,\"adar\":36080,\"ofs\":36081,\"Ġmetals\":36082,\"gom\":36083,\"_methods\":36084,\"Ġnj\":36085,\".Std\":36086,\"(win\":36087,\"$('\":36088,\"Ġturtle\":36089,\"uron\":36090,\"Ġenrolled\":36091,\"ĠHz\":36092,\"ĠBoxDecoration\":36093,\"Ġpont\":36094,\"relationship\":36095,\"Bi\":36096,\"³»\":36097,\"Ġmascul\":36098,\"Ġshades\":36099,\"Ġvr\":36100,\"ĠLogic\":36101,\"Ġain\":36102,\"ĠDIST\":36103,\"Ġcollar\":36104,\"\\\"profile\":36105,\"GeneratedValue\":36106,\"ĠPossible\":36107,\"Ġeines\":36108,\"ĥģ\":36109,\".timeout\":36110,\"ĠEc\":36111,\"Ġjersey\":36112,\".Double\":36113,\"Ġqualifying\":36114,\"vor\":36115,\"CREEN\":36116,\"_App\":36117,\"_recv\":36118,\"Ġaliens\":36119,\"Its\":36120,\"Esc\":36121,\"iator\":36122,\"ĠEclipse\":36123,\"Ġgh\":36124,\"Vict\":36125,\"ĉhtml\":36126,\"too\":36127,\".const\":36128,\"Ġanterior\":36129,\"ĠWu\":36130,\"(keys\":36131,\"Ġultr\":36132,\"_poly\":36133,\"ĠTap\":36134,\"ĠBud\":36135,\"AWS\":36136,\"Ġcrashes\":36137,\"_tot\":36138,\"Contin\":36139,\"-handed\":36140,\"although\":36141,\"à¸ļ\":36142,\"ificent\":36143,\"Ġdeve\":36144,\"utory\":36145,\"ĠWorth\":36146,\"_MS\":36147,\"Ġflooring\":36148,\"Ġsellers\":36149,\"ĠThanksgiving\":36150,\"Ġpng\":36151,\"Ġvalores\":36152,\"Ġsleeve\":36153,\"Ġfille\":36154,\"ÐĲ\":36155,\"Ġappointments\":36156,\"Ġvim\":36157,\"UserInfo\":36158,\"BOOST\":36159,\"Ġposed\":36160,\"initialized\":36161,\".products\":36162,\"ĠLeadership\":36163,\"manuel\":36164,\"'%\":36165,\"emarks\":36166,\"Percentage\":36167,\"(dist\":36168,\".avatar\":36169,\"(hObject\":36170,\"ä»Ĭ\":36171,\"_iff\":36172,\"icone\":36173,\";)\":36174,\"_nil\":36175,\"Ġabol\":36176,\"ÐµÑģÑĤ\":36177,\"Ġvenues\":36178,\".Convert\":36179,\"!')Ċ\":36180,\".Bitmap\":36181,\"skin\":36182,\"_COLUMN\":36183,\"Rev\":36184,\"GRESS\":36185,\"gow\":36186,\"Ġwished\":36187,\"tracts\":36188,\".assertFalse\":36189,\"Ġscreenshot\":36190,\"Ġfois\":36191,\"Comb\":36192,\"LineWidth\":36193,\"ĠGrab\":36194,\"Ġintensive\":36195,\"ĉsh\":36196,\"+)\":36197,\".firstName\":36198,\"_PROCESS\":36199,\"Ġtilt\":36200,\"itored\":36201,\".LOG\":36202,\"Ġbak\":36203,\"Ġintentionally\":36204,\".players\":36205,\"(canvas\":36206,\")))čĊ\":36207,\".Provider\":36208,\"_PUBLIC\":36209,\"Talk\":36210,\"ĠLiv\":36211,\"chedulers\":36212,\"Ġlc\":36213,\"adic\":36214,\"featured\":36215,\".resources\":36216,\"FullName\":36217,\"Ġmeanwhile\":36218,\"Buffers\":36219,\"Ġresolver\":36220,\"ĠSAP\":36221,\"_TE\":36222,\"GNU\":36223,\"ĠFormsModule\":36224,\"_wh\":36225,\"ĠSwe\":36226,\".widgets\":36227,\"Ġcabinets\":36228,\"Ġsuscept\":36229,\"ĠBott\":36230,\"activex\":36231,\"avar\":36232,\"antics\":36233,\"Ġ\\\"=\\\"\":36234,\"_kwargs\":36235,\"ĠgameObject\":36236,\"ĠAngle\":36237,\".Iter\":36238,\"marsh\":36239,\"ĠBirthday\":36240,\"ĠCMS\":36241,\"requests\":36242,\"ĠPearl\":36243,\"_EOL\":36244,\"Ġlinux\":36245,\"(org\":36246,\"_Mouse\":36247,\".constructor\":36248,\"Ġzd\":36249,\"Ġkicks\":36250,\"artisan\":36251,\"Ġeax\":36252,\"Kn\":36253,\"ponge\":36254,\"ĠFinland\":36255,\"Ġmetres\":36256,\"ĠAssessment\":36257,\"partner\":36258,\"/pre\":36259,\"!',Ċ\":36260,\"[Int\":36261,\"Ġoslo\":36262,\"datepicker\":36263,\"/String\":36264,\"oplay\":36265,\"ĠHebrew\":36266,\",double\":36267,\"Ġtrabal\":36268,\"+\\\"\\\\\":36269,\"ĉEIF\":36270,\"/text\":36271,\"_FIRST\":36272,\"ĠPete\":36273,\"Ġego\":36274,\"Ġextras\":36275,\"PDO\":36276,\"Ġregulate\":36277,\"ĠQWidget\":36278,\"sts\":36279,\"ĠShows\":36280,\"ĠNHS\":36281,\".course\":36282,\"pthread\":36283,\"ĠFuel\":36284,\".times\":36285,\"ĠÂ°\":36286,\"Ġstrides\":36287,\"($('#\":36288,\"(words\":36289,\"Ġrhythm\":36290,\"Ġspont\":36291,\"Ġsensation\":36292,\"Ġspike\":36293,\"Closing\":36294,\"é¡µéĿ¢\":36295,\"Numeric\":36296,\"Ġbreathe\":36297,\"Ġfinale\":36298,\"_FACT\":36299,\"inion\":36300,\"Ġchill\":36301,\"Ġformally\":36302,\"ANGED\":36303,\"Ġ':'\":36304,\"ĠÐ¿ÑĢÐ¸\":36305,\"aq\":36306,\"ĠFabric\":36307,\"(lat\":36308,\"ĠPrincipal\":36309,\"Ġerro\":36310,\"ocale\":36311,\"Nom\":36312,\"Ġfost\":36313,\"_CUSTOM\":36314,\".intellij\":36315,\"ertools\":36316,\"Ġclasse\":36317,\"adients\":36318,\"Ġfundraising\":36319,\"ENE\":36320,\"_OPTIONS\":36321,\"_ob\":36322,\"//}Ċ\":36323,\"Ġprotections\":36324,\".seed\":36325,\"NV\":36326,\"terminal\":36327,\";;;\":36328,\"Predicate\":36329,\"Ġì¶\":36330,\"Ġbombing\":36331,\"GF\":36332,\"Ġchew\":36333,\"))).\":36334,\"qualified\":36335,\"]={\":36336,\"listen\":36337,\"CENT\":36338,\"digest\":36339,\"East\":36340,\"Ġdiver\":36341,\"Ġendpoints\":36342,\"Ġee\":36343,\"Ġcolleague\":36344,\"Ġdissertation\":36345,\"_commit\":36346,\"_DAT\":36347,\".rc\":36348,\"Ġbreasts\":36349,\"ĠRug\":36350,\"ĠPil\":36351,\"Contracts\":36352,\"ĠBryan\":36353,\"WebView\":36354,\"Ġconcentrate\":36355,\"ĠInner\":36356,\"Ġ'|\":36357,\"stdout\":36358,\"_Sub\":36359,\">-->Ċ\":36360,\"Vol\":36361,\"ĠSSD\":36362,\"))),\":36363,\".Optional\":36364,\"Ġnurses\":36365,\"Ġorb\":36366,\"_pe\":36367,\");čĊčĊčĊ\":36368,\"placed\":36369,\"esser\":36370,\"Ġtherapeutic\":36371,\"Ġwhitespace\":36372,\"Ġaston\":36373,\"Successful\":36374,\"Ġpraised\":36375,\"ĠWes\":36376,\"Ġeighth\":36377,\"iral\":36378,\"Ġvrouw\":36379,\"Ġfaction\":36380,\"_bias\":36381,\"Ġwitch\":36382,\"Ġnpc\":36383,\"(sb\":36384,\"ĠRodrig\":36385,\"_big\":36386,\"Dependency\":36387,\"ĠAbraham\":36388,\"ardi\":36389,\"CAR\":36390,\"nos\":36391,\"Ġabundance\":36392,\"Ġnutrients\":36393,\"instein\":36394,\".Vert\":36395,\"ĠISS\":36396,\"<U\":36397,\"Ġsums\":36398,\"_hist\":36399,\"Ġfarmer\":36400,\"ĠAbr\":36401,\"Shot\":36402,\"ĠBadRequest\":36403,\"Ġhass\":36404,\"ĠRails\":36405,\"Ġaffiliated\":36406,\"æĿ¥\":36407,\"Ġerf\":36408,\"INF\":36409,\"ĠViewHolder\":36410,\"mini\":36411,\"ĠRoth\":36412,\"Ġfaithful\":36413,\"ĠPhillips\":36414,\"ANDOM\":36415,\"].[\":36416,\"_PAY\":36417,\"ĠArctic\":36418,\"faker\":36419,\"Digit\":36420,\"Male\":36421,\"stderr\":36422,\"seys\":36423,\"ĠÅ¡\":36424,\"_remote\":36425,\"lique\":36426,\"Ġindef\":36427,\"ĠIndustries\":36428,\"itra\":36429,\"_pairs\":36430,\"<iostream\":36431,\"Ġsalaries\":36432,\"iken\":36433,\".Frame\":36434,\"PLIC\":36435,\"_SPEC\":36436,\"ĠMediterr\":36437,\"Ġsystematic\":36438,\"Ġinterrog\":36439,\"IconButton\":36440,\"sea\":36441,\"intro\":36442,\"ĠIssues\":36443,\"encrypted\":36444,\"Ġinternationally\":36445,\"Ġsnprintf\":36446,\"Ġpasta\":36447,\"ĠBradley\":36448,\"_Status\":36449,\"ALK\":36450,\"_PAD\":36451,\".launch\":36452,\"<select\":36453,\"Ġhardest\":36454,\"Ġphy\":36455,\"Ġ((*\":36456,\"-slide\":36457,\"ĠNobody\":36458,\"Su\":36459,\"ĠasÃŃ\":36460,\"closest\":36461,\"_initializer\":36462,\"Ġsupporter\":36463,\"-gen\":36464,\"Ġtales\":36465,\"Ġcorp\":36466,\"_fu\":36467,\"sat\":36468,\"neighbor\":36469,\".Migrations\":36470,\"Ġalgun\":36471,\"Ġsinon\":36472,\".Spec\":36473,\"?,Ċ\":36474,\".GL\":36475,\"male\":36476,\"Ġmonitors\":36477,\"ylan\":36478,\"-License\":36479,\".matches\":36480,\"ĠABS\":36481,\"ĠMast\":36482,\"ĠWallet\":36483,\"($(\\\"#\":36484,\"Dirty\":36485,\"Ġcope\":36486,\"Ġinterpolation\":36487,\"oused\":36488,\"ĠJets\":36489,\".FLAG\":36490,\".Cancel\":36491,\".Events\":36492,\"never\":36493,\"ĠMHz\":36494,\">D\":36495,\"Ġservlet\":36496,\"bastian\":36497,\"Ġ>&\":36498,\"SID\":36499,\"_clk\":36500,\"Ġdivisions\":36501,\"}',Ċ\":36502,\"Ġdildo\":36503,\"Ġparade\":36504,\"major\":36505,\"Ġaboard\":36506,\";++\":36507,\"Ġfusion\":36508,\"\\\"},{\\\"\":36509,\"ĠDialogResult\":36510,\"ĉarr\":36511,\"-em\":36512,\"_nr\":36513,\"(handler\":36514,\".NET\":36515,\".XtraReports\":36516,\"ĠShah\":36517,\"ĠBrief\":36518,\"-,\":36519,\"Ġprecio\":36520,\"ĉĉĉĠĠĠĠĠĠ\":36521,\"Ġtant\":36522,\"ĠGrande\":36523,\"/xml\":36524,\"_ICON\":36525,\"ĠRetro\":36526,\"unque\":36527,\"Ġnag\":36528,\"toFixed\":36529,\"XL\":36530,\"Ġdeclaring\":36531,\"ĠConcrete\":36532,\"ĠAmazing\":36533,\"ĉprintk\":36534,\"Ġdebates\":36535,\"DATED\":36536,\"Ġaesthetic\":36537,\"emetery\":36538,\"RoutingModule\":36539,\"ĠNashville\":36540,\"WAYS\":36541,\"Ġwolf\":36542,\"Ġobservers\":36543,\"OTA\":36544,\"anson\":36545,\"Ġea\":36546,\"Ġgreenhouse\":36547,\"ĵįä½ľ\":36548,\"Ġstair\":36549,\"Ġimmigrant\":36550,\"_apply\":36551,\"peare\":36552,\"ĠBloomberg\":36553,\"_PLAYER\":36554,\"Resp\":36555,\"æŃ£\":36556,\"Chooser\":36557,\"ĠICollection\":36558,\"Peter\":36559,\"Erro\":36560,\".detectChanges\":36561,\"Maps\":36562,\"Ġsqueeze\":36563,\"ĠHomes\":36564,\"wegian\":36565,\"Ġformatting\":36566,\"Ġnegotiate\":36567,\"uld\":36568,\"ĠNep\":36569,\"ĠQB\":36570,\"Ġeconomies\":36571,\"Ġ*/,\":36572,\"Ġredund\":36573,\"ĠAber\":36574,\".IsNullOrWhiteSpace\":36575,\"ycled\":36576,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":36577,\"_Sh\":36578,\"Ġskept\":36579,\"Ġrecreated\":36580,\"ĠgetType\":36581,\"Ġmargins\":36582,\"Ġcolonial\":36583,\"charts\":36584,\"//@\":36585,\"Ġprocessors\":36586,\"è¯´\":36587,\"batis\":36588,\"æĦı\":36589,\"atorio\":36590,\"mentioned\":36591,\"Patient\":36592,\"Ġprey\":36593,\"Checkbox\":36594,\"_xpath\":36595,\".skip\":36596,\"ĠMormon\":36597,\"ĠMemoryStream\":36598,\"CREMENT\":36599,\"Ġku\":36600,\"meld\":36601,\"\\\\Data\":36602,\"ĠKernel\":36603,\"iltr\":36604,\"éĢģ\":36605,\"(profile\":36606,\"Carbon\":36607,\"ROLE\":36608,\"(pl\":36609,\"]*(\":36610,\".memory\":36611,\"Ġmedal\":36612,\"Ġadvisor\":36613,\"itÃ¤t\":36614,\"Ġhdr\":36615,\"ierung\":36616,\"ĠProvides\":36617,\"(alpha\":36618,\"Ġteenagers\":36619,\"-parser\":36620,\".LatLng\":36621,\"]()Ċ\":36622,\"Ġfelony\":36623,\"ĉĉĉĊĉĉĉĊ\":36624,\"BOOK\":36625,\"Ġslash\":36626,\"Ġclearfix\":36627,\"ĠProphet\":36628,\"å®¹\":36629,\"rightness\":36630,\"-fi\":36631,\".kind\":36632,\"erton\":36633,\"Jim\":36634,\"Ġmanipulate\":36635,\"Ġworksheet\":36636,\"olin\":36637,\"stars\":36638,\"Ġartifact\":36639,\"_EMPTY\":36640,\"ĉmain\":36641,\"-------------</\":36642,\"/static\":36643,\"ITIES\":36644,\"ĠCounsel\":36645,\"ĠWC\":36646,\"ĠBLACK\":36647,\"-system\":36648,\"ĠTriple\":36649,\".bt\":36650,\"software\":36651,\"]').\":36652,\"Injection\":36653,\"_notify\":36654,\"Ġfifteen\":36655,\"Ġambassador\":36656,\"breaking\":36657,\"URIComponent\":36658,\"ĠProtest\":36659,\".Reset\":36660,\"ĠMPs\":36661,\"vro\":36662,\".getStatus\":36663,\"_more\":36664,\"cup\":36665,\"ĠKenya\":36666,\"å·²\":36667,\"Ġammunition\":36668,\"×ķ×\":36669,\"ĠDash\":36670,\"Ġundergo\":36671,\"Ġbuddy\":36672,\"ÑĤÐ¾ÑĢ\":36673,\"etically\":36674,\"_Out\":36675,\"ĠBroadway\":36676,\"ªĮ\":36677,\"ĠFitz\":36678,\"Ġstripped\":36679,\"-cache\":36680,\"Ġumb\":36681,\"Ġanom\":36682,\"Ġsiblings\":36683,\"ocumented\":36684,\"InterruptedException\":36685,\"Ġpeng\":36686,\"lst\":36687,\"_ALIGN\":36688,\"-cap\":36689,\"RD\":36690,\"cells\":36691,\"ĠMotors\":36692,\"Ġtranslations\":36693,\"ustering\":36694,\"éļ\":36695,\"Ġleaks\":36696,\"filePath\":36697,\"Ġoutgoing\":36698,\"_endpoint\":36699,\"_GL\":36700,\".liferay\":36701,\"richt\":36702,\"ĠOpenGL\":36703,\".jpa\":36704,\"Ġaffection\":36705,\"flux\":36706,\"Ġgly\":36707,\"Ġbud\":36708,\">';\":36709,\"Ġexpressing\":36710,\"ĠIQ\":36711,\"ĠFact\":36712,\"/*******************************************************************************Ċ\":36713,\"_mass\":36714,\")):\":36715,\"Ġcondom\":36716,\"ĠcreateState\":36717,\"ometown\":36718,\"Ġirr\":36719,\"Ġ>(\":36720,\">B\":36721,\"iteration\":36722,\"ãĥª\":36723,\"Ġshirts\":36724,\"ounty\":36725,\"->$\":36726,\"_SIGN\":36727,\"ĠDale\":36728,\"Ġjj\":36729,\"Easy\":36730,\"Fre\":36731,\"ĠNy\":36732,\"Ġchlor\":36733,\"matched\":36734,\"ĠGerm\":36735,\"-UA\":36736,\"ĠNathan\":36737,\"education\":36738,\"-yard\":36739,\"-che\":36740,\"houses\":36741,\"ritional\":36742,\"Ġproximity\":36743,\"Ġdiesem\":36744,\"áºŃp\":36745,\"Ġdrought\":36746,\".audio\":36747,\"ĠLeo\":36748,\"Ġfavorable\":36749,\"inch\":36750,\"ĠDaw\":36751,\"ribly\":36752,\"_student\":36753,\"idable\":36754,\"OVE\":36755,\"Ġlacks\":36756,\"ouncing\":36757,\".business\":36758,\"Ġreopen\":36759,\"maybe\":36760,\"_GLOBAL\":36761,\"Ġdresses\":36762,\"ĠEdwards\":36763,\"ensible\":36764,\"ĠHardware\":36765,\"ĠExcellent\":36766,\"ĠTimeUnit\":36767,\"CTIONS\":36768,\"Ġschedules\":36769,\"Ġsegue\":36770,\"Opens\":36771,\"ammen\":36772,\"-Identifier\":36773,\"Ġstaring\":36774,\"Ġhappily\":36775,\"ĠHob\":36776,\"'_\":36777,\"Ġ\\\");\":36778,\"amentos\":36779,\"etched\":36780,\"Ġ/>}Ċ\":36781,\".Users\":36782,\"Ġinterrupted\":36783,\"Contacts\":36784,\"Ġregistro\":36785,\"inburgh\":36786,\"CHA\":36787,\"_imp\":36788,\"phis\":36789,\"say\":36790,\"Ġretailer\":36791,\".NODE\":36792,\"/maps\":36793,\"_LAST\":36794,\"ĠCharge\":36795,\"_guard\":36796,\"Collider\":36797,\"ĠStatelessWidget\":36798,\"\\\":[\\\"\":36799,\"(\\\"../../\":36800,\"ioxide\":36801,\"ĠSund\":36802,\"Ġ'';\":36803,\"unset\":36804,\"addWidget\":36805,\"Ð»Ñİ\":36806,\"elles\":36807,\"alker\":36808,\"Arc\":36809,\"Ġdeduct\":36810,\"GUILayout\":36811,\"ĠVilla\":36812,\"Ġforbidden\":36813,\"_where\":36814,\"Ġ\\\\/\":36815,\"ĠTib\":36816,\"_AX\":36817,\"]čĊčĊ\":36818,\"ĠBir\":36819,\"Ġbend\":36820,\"ĠMAKE\":36821,\"ĠMET\":36822,\"Ġfutures\":36823,\"Ġweighted\":36824,\"\\\"\\\"\\\"čĊ\":36825,\"Ġauthorize\":36826,\"(program\":36827,\"},{\\\"\":36828,\"Ġcoefficients\":36829,\"Ãªs\":36830,\"PerPage\":36831,\"ĠBathroom\":36832,\"ĠPublishing\":36833,\"GPL\":36834,\"Ġsubmissions\":36835,\"ĠNUMBER\":36836,\"jÄħ\":36837,\"Ġadditionally\":36838,\"empre\":36839,\"ĠShel\":36840,\"otyp\":36841,\"Solution\":36842,\"Ġthunder\":36843,\"_ec\":36844,\"ĠĊĠĠĠĠĊ\":36845,\"ĠFellow\":36846,\"Ġkay\":36847,\"ĠnewState\":36848,\"ONTAL\":36849,\"Implementation\":36850,\".Look\":36851,\"Ġents\":36852,\"Ġlors\":36853,\"ĠBIG\":36854,\"fab\":36855,\"Ġaveraged\":36856,\"ĠFeedback\":36857,\"ĠWells\":36858,\"Ġmartial\":36859,\"Ġindul\":36860,\"ĠCommunist\":36861,\"ĠForex\":36862,\"ĠAgriculture\":36863,\"\\\"[\":36864,\"Ġquar\":36865,\"ĠKont\":36866,\"ĉview\":36867,\".Bytes\":36868,\"desktop\":36869,\"ĠMakes\":36870,\"akespeare\":36871,\".Nullable\":36872,\"Ġspotlight\":36873,\"VB\":36874,\"owy\":36875,\"(torch\":36876,\"tridge\":36877,\"_bounds\":36878,\"Ġapologize\":36879,\".addItem\":36880,\"antd\":36881,\"*);Ċ\":36882,\",u\":36883,\"(gen\":36884,\"ç»ĵ\":36885,\"reator\":36886,\"ĠCord\":36887,\"oupper\":36888,\".metro\":36889,\"Ġew\":36890,\"ĠWORD\":36891,\".After\":36892,\"Ġdetained\":36893,\"ĠHammer\":36894,\"existing\":36895,\"Ġost\":36896,\"Ġmonument\":36897,\"-custom\":36898,\"UserID\":36899,\"ĠNom\":36900,\"Ġrejection\":36901,\"(dim\":36902,\"Ġsingleton\":36903,\"ĉdie\":36904,\"ariance\":36905,\"reports\":36906,\"]!=\":36907,\"elda\":36908,\"Ġprevalence\":36909,\"_regs\":36910,\".\\\".\":36911,\"Ġfeminist\":36912,\"Codec\":36913,\"Ġ**Ċ\":36914,\"(labels\":36915,\"_MARK\":36916,\"FAILED\":36917,\"Ġadministered\":36918,\"WN\":36919,\"ĠĠĠĠĠĠĠĠĉĉ\":36920,\"Ġnoun\":36921,\"wig\":36922,\"Ġgotta\":36923,\"Ġrif\":36924,\"-im\":36925,\"ĠPaulo\":36926,\"ĠCommandType\":36927,\"]))ĊĊ\":36928,\"-zero\":36929,\"Training\":36930,\"Ġlord\":36931,\"_art\":36932,\"reddit\":36933,\"Cert\":36934,\"Ġpeso\":36935,\"Rot\":36936,\"Ġendanger\":36937,\".dr\":36938,\"userInfo\":36939,\"unts\":36940,\"nv\":36941,\"ĠTrailer\":36942,\"-first\":36943,\"(make\":36944,\"Ġbenefici\":36945,\"-black\":36946,\"iÃŁ\":36947,\"Ġundoubtedly\":36948,\"Ġmex\":36949,\"ĠAncient\":36950,\"(as\":36951,\"Ġdescent\":36952,\"Pick\":36953,\"Ġreplica\":36954,\"$obj\":36955,\"Ã¤hr\":36956,\"Ġarrows\":36957,\"fty\":36958,\"ĠLibya\":36959,\"uga\":36960,\"charged\":36961,\"Tur\":36962,\"Ġhomic\":36963,\"issen\":36964,\"ĠFake\":36965,\"Ġbeers\":36966,\"Ġscattered\":36967,\"(Time\":36968,\"UTIL\":36969,\"Ġbureaucr\":36970,\"/plain\":36971,\"Ġsticking\":36972,\"FAIL\":36973,\"ĠCovid\":36974,\"Third\":36975,\"_present\":36976,\"ĠPierre\":36977,\"Ġëª\":36978,\"Ġ[...]ĊĊ\":36979,\"Prob\":36980,\"ĠTraffic\":36981,\"icao\":36982,\"doctor\":36983,\"Ġ),ĊĊ\":36984,\"Tabs\":36985,\"alu\":36986,\"ï¼ļâĢľ\":36987,\"Ġinherent\":36988,\"_No\":36989,\"ritis\":36990,\"ĠProof\":36991,\".basename\":36992,\"ä¼ļ\":36993,\"Ġchim\":36994,\"ĠProtected\":36995,\"crit\":36996,\"Ġprone\":36997,\"ĠÐºÐ¾Ð½\":36998,\"ĠHeroes\":36999,\"Ġanxious\":37000,\"Ġanos\":37001,\"Ġweekends\":37002,\"Ġsext\":37003,\"Ġreducer\":37004,\"=UTF\":37005,\"half\":37006,\"ĠSaw\":37007,\".mm\":37008,\"Ġnueva\":37009,\".currentTarget\":37010,\".lua\":37011,\"_EXTENSION\":37012,\"ĉreg\":37013,\"ĠCtrl\":37014,\"_align\":37015,\"acceptable\":37016,\"Ġrushing\":37017,\"frac\":37018,\"Ġboasts\":37019,\"Five\":37020,\"Â±\":37021,\"ĠTemperature\":37022,\">):\":37023,\"Ġcharter\":37024,\"REATED\":37025,\"Ġsubjected\":37026,\"Ġopc\":37027,\"healthy\":37028,\"ä½¿çĶ¨\":37029,\"ĠScientific\":37030,\"Ġfrau\":37031,\"riages\":37032,\"à¸Ķ\":37033,\".inventory\":37034,\"ationale\":37035,\"Mad\":37036,\"minutes\":37037,\">>();Ċ\":37038,\"ĠEnv\":37039,\"Ġrecordings\":37040,\"Ġsuspicion\":37041,\"sqlite\":37042,\"ĉread\":37043,\"ãģ¦\":37044,\"Ġworries\":37045,\".putString\":37046,\"ĠShanghai\":37047,\"(uid\":37048,\"rer\":37049,\"ĠvÃŃde\":37050,\"\\\"):\":37051,\"Ġmethodology\":37052,\"ĠÐºÐ¾ÑĤÐ¾ÑĢ\":37053,\"ccc\":37054,\"avad\":37055,\"Ġinduction\":37056,\"ĉThread\":37057,\",string\":37058,\"áº¡i\":37059,\"nehmen\":37060,\"uition\":37061,\"Ġ*__\":37062,\".emf\":37063,\"Ġìľ\":37064,\"/themes\":37065,\"ĠNine\":37066,\".One\":37067,\"ĠEmbed\":37068,\"Ġfaz\":37069,\"uations\":37070,\"Ġprivately\":37071,\"Ġling\":37072,\"[F\":37073,\"ushi\":37074,\"Ġlaunches\":37075,\"(KEY\":37076,\"GMT\":37077,\"Ġaiming\":37078,\"patible\":37079,\"ĠBiden\":37080,\"iw\":37081,\"ĠDegree\":37082,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":37083,\"Ġ$('<\":37084,\"Ã¡rios\":37085,\"toUpperCase\":37086,\"ìłľ\":37087,\"ĠEUR\":37088,\"Ġoversight\":37089,\"Ġtablesp\":37090,\"Updates\":37091,\".makedirs\":37092,\"Ġhumidity\":37093,\"/template\":37094,\"Always\":37095,\"(IS\":37096,\"_cert\":37097,\"Dig\":37098,\"Ġunderway\":37099,\"orton\":37100,\"ĠHurricane\":37101,\"Ġspends\":37102,\"ĠSegment\":37103,\"Ġflies\":37104,\"ĠToggle\":37105,\"ĠLynch\":37106,\"Ġsenses\":37107,\"ĠKos\":37108,\"setEnabled\":37109,\"istically\":37110,\"Ġtester\":37111,\"Ġadministrators\":37112,\"Ġtagged\":37113,\"Ðĵ\":37114,\"Ġshortcut\":37115,\"ĠResolution\":37116,\"Ġsupervision\":37117,\"ĠAshley\":37118,\"Tracking\":37119,\"ulatory\":37120,\"andel\":37121,\"isten\":37122,\"Ġunre\":37123,\"(diff\":37124,\"ANTS\":37125,\"Ġrider\":37126,\"ĠsÄħ\":37127,\".Series\":37128,\"_orders\":37129,\"ORIZONTAL\":37130,\"Ġretention\":37131,\"ãĢĤ</\":37132,\".Tests\":37133,\"Syn\":37134,\".parseDouble\":37135,\"kode\":37136,\"zent\":37137,\"Generation\":37138,\"Ġadmits\":37139,\"ĠLeak\":37140,\"Ġaka\":37141,\"ROWS\":37142,\"ĠAngela\":37143,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":37144,\"Ġnoon\":37145,\"Ġstark\":37146,\"Ġdragged\":37147,\"ãĥ¼ãĤ\":37148,\"ĠrecyclerView\":37149,\"ĠSilicon\":37150,\"_suffix\":37151,\"Jon\":37152,\"cock\":37153,\"ĠProbably\":37154,\"Introduction\":37155,\"ĠTerror\":37156,\"(This\":37157,\"ĠBaseball\":37158,\"Ġjenter\":37159,\"chestra\":37160,\".nan\":37161,\"=g\":37162,\"Ġclarify\":37163,\"yii\":37164,\"roots\":37165,\"Ġnotebook\":37166,\"ĠExcept\":37167,\"Ġrises\":37168,\"ĠBrussels\":37169,\"atories\":37170,\".USER\":37171,\"rossover\":37172,\"/upload\":37173,\"ĠEventually\":37174,\"Consider\":37175,\"ĠBound\":37176,\".identifier\":37177,\"(unittest\":37178,\"Ġinferior\":37179,\"Ġcrc\":37180,\"Ġautism\":37181,\"UIAlert\":37182,\"ĠKavanaugh\":37183,\"inement\":37184,\"queueReusable\":37185,\"Skin\":37186,\".backend\":37187,\".getState\":37188,\"unding\":37189,\"Ġsubclass\":37190,\"Ġrefined\":37191,\"Ġannoy\":37192,\"Ġrnd\":37193,\"Director\":37194,\"ĠëĤ\":37195,\"becca\":37196,\"mongodb\":37197,\"ĠCommonwealth\":37198,\"Az\":37199,\"ĠThing\":37200,\"Ġrecom\":37201,\"uning\":37202,\"ĉcon\":37203,\"ĉĠĠĠĠĊ\":37204,\"emics\":37205,\"ecd\":37206,\"Ġhorny\":37207,\"ATRIX\":37208,\"Ġmisleading\":37209,\"ĠBew\":37210,\"/node\":37211,\"cstdio\":37212,\"à¸§\":37213,\"Ġadditions\":37214,\"rir\":37215,\"_requests\":37216,\"Ġrecherche\":37217,\"students\":37218,\"_positions\":37219,\"ertext\":37220,\"ĠEvolution\":37221,\"andez\":37222,\"Ġdisturb\":37223,\"keyup\":37224,\"ĠButler\":37225,\".readlines\":37226,\"_stdio\":37227,\"Ġbee\":37228,\"ĠArchives\":37229,\"Ġnevertheless\":37230,\"URITY\":37231,\"Ġdrones\":37232,\"urities\":37233,\"Ġâĺħ\":37234,\"\\\">čĊčĊ\":37235,\"Ġdiagonal\":37236,\"ĠCancellationToken\":37237,\"_Internal\":37238,\"Ġruin\":37239,\".Qt\":37240,\"ocratic\":37241,\"Tel\":37242,\"ĠAnswers\":37243,\"matic\":37244,\"Ġxp\":37245,\"atem\":37246,\"_jobs\":37247,\"_any\":37248,\"Ġseniors\":37249,\"Ġlandmark\":37250,\"ĠQList\":37251,\"Ġmaneu\":37252,\"otify\":37253,\"/\\\";Ċ\":37254,\"/server\":37255,\"ĠPhilosoph\":37256,\"utenant\":37257,\"(io\":37258,\"hz\":37259,\"Ġauthenticated\":37260,\"dv\":37261,\"-Compatible\":37262,\"Originally\":37263,\",function\":37264,\"ãĢĤčĊ\":37265,\"ĠRepresentative\":37266,\"asily\":37267,\"ircuit\":37268,\".dt\":37269,\"(math\":37270,\".Marshal\":37271,\"[,\":37272,\"ĠCities\":37273,\"_turn\":37274,\"|)Ċ\":37275,\"Ġcantidad\":37276,\"alter\":37277,\"ĉui\":37278,\"ĠNebraska\":37279,\"Ġskirt\":37280,\".bg\":37281,\"SharedPreferences\":37282,\"(style\":37283,\"Ġgrief\":37284,\"gew\":37285,\"Ġsafeg\":37286,\"olang\":37287,\"_lists\":37288,\"ìĽ\":37289,\"Ġgranite\":37290,\"Ġhottest\":37291,\".jdbc\":37292,\".Customer\":37293,\"Ġâī¤\":37294,\"Ġwaar\":37295,\"_scene\":37296,\"+'/\":37297,\"ĠJTextField\":37298,\"Ġseating\":37299,\"Ġwears\":37300,\"Ġ`/\":37301,\"Cases\":37302,\"ĠYoutube\":37303,\"Ä±m\":37304,\"Ġbalcon\":37305,\",G\":37306,\"MetaData\":37307,\"-price\":37308,\"SCR\":37309,\"Unity\":37310,\"Ġtrunk\":37311,\"={`${\":37312,\"Ġearthquake\":37313,\"Partial\":37314,\"Ġsubst\":37315,\"Ġelimin\":37316,\"=\\\"'.\":37317,\"//*[@\":37318,\"Ġsupervisor\":37319,\"vrolet\":37320,\"_article\":37321,\"Ġpane\":37322,\"bio\":37323,\"Ġmotors\":37324,\"NM\":37325,\"Frank\":37326,\"Ġonion\":37327,\"-word\":37328,\"ItemClickListener\":37329,\"Ġbrit\":37330,\"endencies\":37331,\"Computer\":37332,\"_running\":37333,\"(day\":37334,\"-he\":37335,\"(named\":37336,\"ĠSach\":37337,\"Ð¾Ñĩ\":37338,\"campaign\":37339,\".Abstract\":37340,\"(wrapper\":37341,\".pay\":37342,\"Ġuw\":37343,\"Geo\":37344,\"rails\":37345,\"/select\":37346,\"ichte\":37347,\"sons\":37348,\"EVENT\":37349,\"Ġaliment\":37350,\"Providers\":37351,\"Await\":37352,\"_INTERVAL\":37353,\".off\":37354,\"Ġgluten\":37355,\"_cloud\":37356,\"Ġwen\":37357,\".extract\":37358,\"ĉbutton\":37359,\"/MM\":37360,\"Party\":37361,\"Ġdemographic\":37362,\"_errno\":37363,\"Ġhiking\":37364,\"('')Ċ\":37365,\"\\\",@\\\"\":37366,\"Ġwit\":37367,\"rÃ¡\":37368,\"ologie\":37369,\"ĠStyles\":37370,\"ĠBrowserModule\":37371,\".RequestMapping\":37372,\"icans\":37373,\"PAGE\":37374,\"creation\":37375,\"ĠFerguson\":37376,\"uded\":37377,\"numbers\":37378,\"ĠGTK\":37379,\"Ġpresentations\":37380,\"ĠBobby\":37381,\"_span\":37382,\"estyle\":37383,\"Ġillegally\":37384,\"abela\":37385,\"Ġbattlefield\":37386,\"capacity\":37387,\"terror\":37388,\"]\\\");Ċ\":37389,\"Ġwarrior\":37390,\"leader\":37391,\"ĠDBG\":37392,\"ĠRevenue\":37393,\"Ġvigil\":37394,\"Ġcounterparts\":37395,\"(Error\":37396,\"ACTER\":37397,\"Ġheeft\":37398,\"Ġselections\":37399,\"zeug\":37400,\"tom\":37401,\"-two\":37402,\".;Ċ\":37403,\"_statement\":37404,\"ĠAid\":37405,\"ĠVul\":37406,\"_rgb\":37407,\"Ġprizes\":37408,\"Ġeditable\":37409,\"ĉform\":37410,\"Ä±nÄ±\":37411,\".decor\":37412,\"Demo\":37413,\"lices\":37414,\"Ġenctype\":37415,\"ratulations\":37416,\"ĠROS\":37417,\"_chars\":37418,\"ĠJahr\":37419,\"partial\":37420,\"ÑĥÑĤ\":37421,\"ĠReceive\":37422,\"ĠLands\":37423,\"APTER\":37424,\"Ġchopped\":37425,\"..\\\"\":37426,\"ĠAnaly\":37427,\"ĠUID\":37428,\"ĠRadeon\":37429,\"ĠBee\":37430,\"Ġunm\":37431,\">M\":37432,\".findall\":37433,\"Tokenizer\":37434,\"ĠWHAT\":37435,\"Ġsj\":37436,\"Drawing\":37437,\"Ess\":37438,\"OND\":37439,\"Ĭ¶\":37440,\"(packet\":37441,\"âĢĶbut\":37442,\"Invocation\":37443,\"ĠNuclear\":37444,\"?;Ċ\":37445,\"Ġgrandes\":37446,\"ĠCrypt\":37447,\"remark\":37448,\"Ġ'../../../../\":37449,\"Ġinability\":37450,\"magic\":37451,\"cats\":37452,\"Ġsimulate\":37453,\":${\":37454,\"inflate\":37455,\"Ġener\":37456,\":NO\":37457,\"iples\":37458,\"Ġmerit\":37459,\"ĠRated\":37460,\"Ġglue\":37461,\"/blog\":37462,\"Ġgren\":37463,\"Ġthrilled\":37464,\".CH\":37465,\"uncan\":37466,\"ĠPRIMARY\":37467,\"Ġpersec\":37468,\"Ġfeared\":37469,\".MIN\":37470,\"ĠTheater\":37471,\"éĴ\":37472,\"ategorie\":37473,\"æ®µ\":37474,\"Ġappetite\":37475,\"square\":37476,\"ĠAlexand\":37477,\".UserId\":37478,\"_gt\":37479,\"_enter\":37480,\"Ġgraduates\":37481,\"FragmentManager\":37482,\"Authorize\":37483,\"-NLS\":37484,\"(My\":37485,\"Ġtriumph\":37486,\"usting\":37487,\"_PARAMS\":37488,\"Characters\":37489,\"(:,:,\":37490,\"_BUILD\":37491,\"MHz\":37492,\"Ġwashed\":37493,\"Ġuncle\":37494,\"Steve\":37495,\"ardown\":37496,\"<stdio\":37497,\"_terms\":37498,\"ĠMAR\":37499,\"Ġhose\":37500,\"ucus\":37501,\"ĠClaim\":37502,\"ĠRams\":37503,\"ĠmodelBuilder\":37504,\"ĠnÃ©\":37505,\"userID\":37506,\"=json\":37507,\".ResponseWriter\":37508,\"ĺè®¤\":37509,\"Ġgrupo\":37510,\"-it\":37511,\"ĠKO\":37512,\"-Mail\":37513,\"Ġconferences\":37514,\"IFA\":37515,\"ĠAssad\":37516,\"Ġpronounced\":37517,\"Ġancestors\":37518,\"ĠTRACE\":37519,\"ĠGeForce\":37520,\"Ġprivat\":37521,\"pell\":37522,\"emoji\":37523,\"ĠÙĪ\":37524,\"Genre\":37525,\"Ġconcentrated\":37526,\"jang\":37527,\"MOTE\":37528,\"ĠZoom\":37529,\"toolbar\":37530,\"Ġutterly\":37531,\"Ġencompass\":37532,\"ĠSoccer\":37533,\"Ġeurope\":37534,\"-air\":37535,\".anim\":37536,\"_CTL\":37537,\"herent\":37538,\"rex\":37539,\"interactive\":37540,\"ãģ§ãģĻ\":37541,\"ĠKas\":37542,\"Ġdesperately\":37543,\"(ar\":37544,\"Ġbik\":37545,\"Ġtraverse\":37546,\"eurs\":37547,\"RecyclerView\":37548,\"ĠMargaret\":37549,\"Ġhopeful\":37550,\"ĠMig\":37551,\"_MEMBER\":37552,\"receiver\":37553,\"Matcher\":37554,\"dependent\":37555,\"Ġexcellence\":37556,\"Ð°Ð¶\":37557,\"LOS\":37558,\"Aspect\":37559,\"Ġadalah\":37560,\"ĠEconomy\":37561,\"ulously\":37562,\"Ġevaluating\":37563,\"Ġdeviation\":37564,\"exter\":37565,\"/dat\":37566,\"Cols\":37567,\"ĠPoker\":37568,\"boarding\":37569,\".Children\":37570,\"ANGLE\":37571,\"Ã¯\":37572,\"ĠYoga\":37573,\"Ġhated\":37574,\"Adam\":37575,\"ĠFCC\":37576,\"IMAL\":37577,\"Ġfaint\":37578,\"_DISPLAY\":37579,\"Ġevolve\":37580,\"Ġfridge\":37581,\"ĠrÃ©g\":37582,\"Ġemotionally\":37583,\"âĢľIf\":37584,\"awei\":37585,\"eresa\":37586,\"',\\\"\":37587,\"BEGIN\":37588,\"ĠVARCHAR\":37589,\"Ġxi\":37590,\"factor\":37591,\"tz\":37592,\"_phase\":37593,\"SEQ\":37594,\"(rand\":37595,\"Ġmathematics\":37596,\"Ġcontexts\":37597,\"-ac\":37598,\"ĠFIG\":37599,\"ĠCaption\":37600,\"ĠWaitFor\":37601,\"-west\":37602,\"Ġfirefight\":37603,\"_LED\":37604,\"ections\":37605,\"ĉthrows\":37606,\"ĠTakes\":37607,\"obre\":37608,\"ĠAvatar\":37609,\"ĠInnovation\":37610,\"Ġcalibration\":37611,\":this\":37612,\"_encoding\":37613,\"Ġcalculating\":37614,\"Ġ################\":37615,\"ĠPrograms\":37616,\"ĠHIGH\":37617,\".configureTestingModule\":37618,\"Polygon\":37619,\"_DBG\":37620,\"\\\"],čĊ\":37621,\"Ð°Ð±\":37622,\"Ġsimilarity\":37623,\"Ġprzez\":37624,\"ĠFirm\":37625,\"Ġmisunder\":37626,\"ĠMoving\":37627,\"ĠMOV\":37628,\"Ġreactor\":37629,\"Requested\":37630,\"expects\":37631,\"Ġerect\":37632,\"licht\":37633,\"oulder\":37634,\"IDGET\":37635,\"Ġdevil\":37636,\"Ġprogrammes\":37637,\"ĠCommonModule\":37638,\"Ġ\\\"'\\\"\":37639,\"(Auth\":37640,\"ãĢĤï¼Į\":37641,\"ĠStatefulWidget\":37642,\"è®¡\":37643,\"/open\":37644,\"inally\":37645,\".Round\":37646,\"ĠWish\":37647,\"Ġhumanitarian\":37648,\"AccessToken\":37649,\"ĠSOC\":37650,\"Ġpokemon\":37651,\"Ġvapor\":37652,\"_added\":37653,\"ĉGet\":37654,\"spell\":37655,\"ĠInitiative\":37656,\"ĠHEL\":37657,\"airro\":37658,\"bled\":37659,\"ĠÐ±Ñĭ\":37660,\"Ġsensible\":37661,\"ĠLua\":37662,\"|(Ċ\":37663,\"Ġfixtures\":37664,\"Ġorgasm\":37665,\"Cut\":37666,\"ukt\":37667,\"gue\":37668,\"Ġcredibility\":37669,\":image\":37670,\"ĠCPP\":37671,\".sn\":37672,\"(desc\":37673,\"ĠReid\":37674,\"-degree\":37675,\"_sound\":37676,\"Clone\":37677,\"á»Ļ\":37678,\"aksi\":37679,\">${\":37680,\"_confirmation\":37681,\"Ġtrophy\":37682,\"Works\":37683,\"ĠElectronics\":37684,\"ĠMediterranean\":37685,\"_metrics\":37686,\"Ġannouncing\":37687,\"ĠDAY\":37688,\"_proto\":37689,\"Ġpear\":37690,\"baseUrl\":37691,\"ĉĉĉĉĉĉĉĉĊ\":37692,\"Ġcoordination\":37693,\":N\":37694,\".animate\":37695,\"ĠCotton\":37696,\"_hit\":37697,\"âľ\":37698,\"Ġjetzt\":37699,\"ifter\":37700,\"(fields\":37701,\"ownload\":37702,\"ificacion\":37703,\".cuda\":37704,\"ĠLiu\":37705,\">equals\":37706,\"ĠAce\":37707,\"ÑĢÐ°Ð¼\":37708,\"ĠSuperman\":37709,\"ĠGarcia\":37710,\"Ġarrests\":37711,\"agar\":37712,\"Ġ{})\":37713,\"Ġmacros\":37714,\"roupe\":37715,\"Ãªtre\":37716,\"Ġtwisted\":37717,\"struments\":37718,\"_(\\\"\":37719,\"_vertices\":37720,\"ĠTransition\":37721,\"Ð¸Ðº\":37722,\"[max\":37723,\"mind\":37724,\"ĠaccessToken\":37725,\"Ġunle\":37726,\"mus\":37727,\"cop\":37728,\"ĠFactor\":37729,\"Ġconced\":37730,\"Ġretr\":37731,\".linalg\":37732,\"-slider\":37733,\"obl\":37734,\"_StaticFields\":37735,\"Ġzombie\":37736,\"selling\":37737,\"Ġchap\":37738,\"Ġshaking\":37739,\"ĠTranslate\":37740,\"ĠAmsterdam\":37741,\"ĠETH\":37742,\"_EXTERN\":37743,\"kd\":37744,\"_disc\":37745,\"Ġpreceding\":37746,\"Ġprix\":37747,\"ObjectName\":37748,\"_modified\":37749,\"ardware\":37750,\"Ġ?>\\\">\":37751,\"ĠDW\":37752,\"`${\":37753,\"Ġ?>\\\"><?\":37754,\"uyen\":37755,\"Ġdonna\":37756,\"Ġxsi\":37757,\"Ġ$\\\"{\":37758,\"ĠDrawing\":37759,\",nil\":37760,\"Ġonder\":37761,\"BG\":37762,\"Observ\":37763,\"Ġconsiderations\":37764,\"boat\":37765,\"ĠBanks\":37766,\"Ġindict\":37767,\",I\":37768,\"ĠBlu\":37769,\"(version\":37770,\"cliente\":37771,\"olan\":37772,\"LESS\":37773,\"assertSame\":37774,\"_void\":37775,\"ĠWAS\":37776,\"ĉenum\":37777,\"Ġmixer\":37778,\"EW\":37779,\"affe\":37780,\"Ġblowjob\":37781,\"textField\":37782,\"Ġimmense\":37783,\"_repo\":37784,\"Ġglobals\":37785,\"antages\":37786,\".today\":37787,\"Thursday\":37788,\"ĠBrig\":37789,\"{})Ċ\":37790,\"ĠImagine\":37791,\"(GPIO\":37792,\"Ġesto\":37793,\"ĠProvince\":37794,\"ĠMental\":37795,\"_cells\":37796,\"ĠJulian\":37797,\".Screen\":37798,\"Ġcandle\":37799,\"Ġmonde\":37800,\"Ġverg\":37801,\"iterals\":37802,\"-layout\":37803,\"Guest\":37804,\"Ġvind\":37805,\"ĠEcho\":37806,\"')}\":37807,\"Ġmann\":37808,\"_BOOLEAN\":37809,\"hap\":37810,\"Ġnightmare\":37811,\"UGH\":37812,\"Ġnonetheless\":37813,\"Ġathe\":37814,\"ĠHolland\":37815,\"ĠBorn\":37816,\"\\\\ORM\":37817,\"anut\":37818,\"_levels\":37819,\"Ġpetite\":37820,\"-art\":37821,\"_SHOW\":37822,\"numberOf\":37823,\"_thumbnail\":37824,\"amins\":37825,\"ĠDefines\":37826,\"Ġ\\\"=\":37827,\".StatusCode\":37828,\"Ġdignity\":37829,\"ĠBike\":37830,\".NewLine\":37831,\"ĠGlas\":37832,\"(logger\":37833,\"Ġcatches\":37834,\"votes\":37835,\"Ġexamining\":37836,\"/register\":37837,\"Ġspecifying\":37838,\"_fixed\":37839,\"Ġdrawings\":37840,\"Threshold\":37841,\"Ax\":37842,\"ĠArchitecture\":37843,\"(pid\":37844,\"Wire\":37845,\"(cont\":37846,\"lane\":37847,\"Lists\":37848,\"Ġsprint\":37849,\"Ġgrandfather\":37850,\"_AG\":37851,\"Ġscheduling\":37852,\"CLUS\":37853,\"aturity\":37854,\"Ġlocking\":37855,\"[size\":37856,\"_styles\":37857,\"Ġwb\":37858,\"-->ĊĊ\":37859,\"Ġspinning\":37860,\"_pending\":37861,\"Matchers\":37862,\".Keys\":37863,\"ĠPV\":37864,\"enus\":37865,\"antis\":37866,\"Ġdiscard\":37867,\"Ġhaul\":37868,\"Ġempir\":37869,\"Ġpathway\":37870,\"Ġoak\":37871,\"Ð¼ÐµÐ½\":37872,\"-induced\":37873,\"Ġimpair\":37874,\"ĠCalgary\":37875,\".isHidden\":37876,\"dz\":37877,\"_include\":37878,\"Ġgm\":37879,\"Ġ'('\":37880,\"PY\":37881,\"uggestions\":37882,\"Ġcommodity\":37883,\"cro\":37884,\"/sub\":37885,\"ĠgetInstance\":37886,\"ĠLegacy\":37887,\"ĠKil\":37888,\"Bal\":37889,\"(short\":37890,\"Inform\":37891,\"+x\":37892,\"*r\":37893,\"ĠHopefully\":37894,\"orate\":37895,\"Ġmachen\":37896,\"Ġtreaty\":37897,\"ĠOri\":37898,\".public\":37899,\"-horizontal\":37900,\"Ġtactic\":37901,\"Ġbord\":37902,\"wares\":37903,\"Ġammo\":37904,\"ĠLists\":37905,\"Ġequations\":37906,\"/her\":37907,\"ĠNSW\":37908,\"Bounding\":37909,\"_Collections\":37910,\"Ġavail\":37911,\".DropDown\":37912,\"è°\":37913,\"Ġhh\":37914,\"ĠlÃł\":37915,\".pb\":37916,\"Ġmemorial\":37917,\"ĠATTR\":37918,\"Ġexhausted\":37919,\"Ġtsp\":37920,\"ĉredirect\":37921,\"Ġlikewise\":37922,\"STER\":37923,\"Ljava\":37924,\"Ġcondemned\":37925,\"ocaust\":37926,\"(strict\":37927,\"Ġexempt\":37928,\"Ġsms\":37929,\"Ġexagger\":37930,\"SYS\":37931,\"Ġlounge\":37932,\":^\":37933,\"Ġtodd\":37934,\"deb\":37935,\"atorial\":37936,\"ĠPorter\":37937,\"Ġtuition\":37938,\"Ġexempl\":37939,\"Ġparen\":37940,\".lineTo\":37941,\"Ġkidney\":37942,\"ĠÃ§a\":37943,\"Ġcui\":37944,\"ï¼Įè¯·\":37945,\"XC\":37946,\"ĠmoÅ¼\":37947,\"Ġnominated\":37948,\"lung\":37949,\"ImGui\":37950,\"ĠBuzz\":37951,\"Ġstereo\":37952,\"portal\":37953,\"resas\":37954,\"Ġklass\":37955,\"Ġdrafted\":37956,\"Ġprojectile\":37957,\"/gpl\":37958,\"(parameters\":37959,\"*)Ċ\":37960,\"Ġassisted\":37961,\"ĠNSInteger\":37962,\"sitemap\":37963,\":nth\":37964,\".Views\":37965,\".ArgumentParser\":37966,\"Ġmeer\":37967,\"zier\":37968,\"ĠDig\":37969,\"<?=$\":37970,\"_permission\":37971,\"ĉAdd\":37972,\"ologia\":37973,\"Ġsci\":37974,\"Ġfinancially\":37975,\"Ġscrolling\":37976,\".dist\":37977,\"_HAS\":37978,\"ubuntu\":37979,\".pages\":37980,\"Incre\":37981,\"burse\":37982,\"ĠAmateur\":37983,\"æºĲ\":37984,\"Blob\":37985,\"Ġcholesterol\":37986,\"DES\":37987,\"minimum\":37988,\"Ġrefusing\":37989,\"unned\":37990,\"Ðľ\":37991,\"ĠRD\":37992,\".Servlet\":37993,\"Ġ*/;Ċ\":37994,\"udden\":37995,\"ĠviewBox\":37996,\"Ġmetabolism\":37997,\"Ġstealing\":37998,\"ĠBever\":37999,\"agnetic\":38000,\"VERRIDE\":38001,\"_AUDIO\":38002,\"ÑĢÑĭ\":38003,\"Ġarchives\":38004,\".linear\":38005,\"={<\":38006,\"uncated\":38007,\"AccessException\":38008,\"ĠpictureBox\":38009,\"ĉselect\":38010,\"Latitude\":38011,\"visor\":38012,\"reib\":38013,\"Ġpak\":38014,\"Hope\":38015,\"ĠIterable\":38016,\".responseText\":38017,\"ĠQuad\":38018,\"ĠBrooks\":38019,\"ĠTot\":38020,\"OPT\":38021,\"elong\":38022,\"Ġcocaine\":38023,\"Ġano\":38024,\"Dan\":38025,\"Ġpsi\":38026,\"Ð°Ð»ÑĮ\":38027,\".getChild\":38028,\"ĠREF\":38029,\"-ab\":38030,\"ĠTriangle\":38031,\"<Text\":38032,\"ĠColombia\":38033,\"inky\":38034,\"èī²\":38035,\")}>Ċ\":38036,\"Ġplag\":38037,\"pine\":38038,\"Ġblanket\":38039,\"Ġ:</\":38040,\"ĠTranslation\":38041,\"nov\":38042,\"Ġperfection\":38043,\"ĠConfeder\":38044,\".stub\":38045,\".InteropServices\":38046,\".Store\":38047,\"Ġenrollment\":38048,\"Ġdeer\":38049,\"Movement\":38050,\"-from\":38051,\"hc\":38052,\"Ġevangel\":38053,\"ĠIllustr\":38054,\"Ġtrump\":38055,\"_Start\":38056,\"planes\":38057,\"ĠBil\":38058,\"Infos\":38059,\"-trans\":38060,\"Ġranch\":38061,\"ĠLinda\":38062,\"_mar\":38063,\"RET\":38064,\"/net\":38065,\"Law\":38066,\"NF\":38067,\"ĠPrevent\":38068,\"Ġcried\":38069,\"Ġeducate\":38070,\"astics\":38071,\"yi\":38072,\".LinearLayout\":38073,\"METHOD\":38074,\"ĠEg\":38075,\"mapper\":38076,\"æĻĤ\":38077,\".asarray\":38078,\"Ïģ\":38079,\"iÃ§Ã£o\":38080,\"Reuse\":38081,\"_rev\":38082,\"ĠPRODUCT\":38083,\"_Code\":38084,\"ĠĠĠĠĠčĊ\":38085,\"ĠSERVICE\":38086,\"_cover\":38087,\".,Ċ\":38088,\".ExecuteReader\":38089,\"ĠDining\":38090,\".arch\":38091,\"Ġotro\":38092,\"ĠDiscovery\":38093,\"ĠKeyError\":38094,\"ĠBenefits\":38095,\"_SHA\":38096,\".Unmarshal\":38097,\"HEADER\":38098,\"Mutex\":38099,\"AMA\":38100,\"Ġinitiate\":38101,\"Stay\":38102,\"Little\":38103,\"Ġ(),\":38104,\"Ġdecentral\":38105,\"Resolution\":38106,\".health\":38107,\"ĉfclose\":38108,\"äº¤\":38109,\"Ġstakeholders\":38110,\"Ġarchae\":38111,\"Digital\":38112,\"lescope\":38113,\"_pen\":38114,\"ĠItemStack\":38115,\"ĠCanon\":38116,\"ĠKend\":38117,\"ĠÃ¸\":38118,\"_ajax\":38119,\"ingredients\":38120,\"Delivery\":38121,\"Sections\":38122,\"Ġdisappointing\":38123,\"ĠGren\":38124,\",re\":38125,\"Ġdecrypt\":38126,\"ologic\":38127,\"_fmt\":38128,\"ĠSlider\":38129,\"nah\":38130,\"Washington\":38131,\"zung\":38132,\"ĠÑĨ\":38133,\"ycz\":38134,\"ieves\":38135,\".DEBUG\":38136,\"ĠTI\":38137,\"Ġhacking\":38138,\"Ġcentr\":38139,\"flows\":38140,\"ĠdidReceiveMemoryWarning\":38141,\"Ġaccountability\":38142,\"COUNT\":38143,\"Ð»ÐµÐ¼ÐµÐ½ÑĤ\":38144,\"blo\":38145,\"/id\":38146,\"ĠSlow\":38147,\"izzard\":38148,\".removeEventListener\":38149,\"Ġìŀħ\":38150,\"/I\":38151,\"isma\":38152,\"ĠHudson\":38153,\"}},\":38154,\"umed\":38155,\"Ġrealise\":38156,\"unsafe\":38157,\"Ġzus\":38158,\"Ġshortage\":38159,\"olia\":38160,\"_priority\":38161,\"Ġflooding\":38162,\"operations\":38163,\"Poly\":38164,\"aban\":38165,\"[cur\":38166,\"Ġeskorte\":38167,\"_DESCRIPTION\":38168,\"_nat\":38169,\"Ġmalicious\":38170,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":38171,\"ĠParks\":38172,\"Ġtaxpayer\":38173,\"ĠFoster\":38174,\"Ġsexuality\":38175,\"ç³»\":38176,\"ë°\":38177,\"\\\\čĊ\":38178,\".seek\":38179,\"Ð°Ð½Ð¸Ñı\":38180,\"/article\":38181,\"è¿ĩ\":38182,\"ĠUhr\":38183,\"Ġgrandmother\":38184,\"ĠBle\":38185,\"furt\":38186,\"ambah\":38187,\"notifications\":38188,\"deprecated\":38189,\"Ġuintptr\":38190,\"oki\":38191,\"(Array\":38192,\"Ġautonomous\":38193,\"Ġobr\":38194,\"Â¯Â¯\":38195,\"Ġbasename\":38196,\"Ġunveiled\":38197,\"sol\":38198,\"ĠNotImplementedError\":38199,\"Ġdepress\":38200,\"_'.$\":38201,\"ĠUNIT\":38202,\"%',\":38203,\"-tag\":38204,\"grep\":38205,\"ĠMaintenance\":38206,\"Ġwarfare\":38207,\"_RESOURCE\":38208,\"(spec\":38209,\"(cv\":38210,\"Ġnada\":38211,\"çĶµ\":38212,\"Ġcrowded\":38213,\"Below\":38214,\"ĠZach\":38215,\"Estado\":38216,\"_prime\":38217,\"Ġtrabajo\":38218,\"Ġinformative\":38219,\"Scott\":38220,\"Ġserializers\":38221,\"ĠNas\":38222,\"Thunk\":38223,\"Ġmercy\":38224,\",...ĊĊ\":38225,\"Ġaddict\":38226,\".constants\":38227,\"Ġdataframe\":38228,\"_reason\":38229,\"gomery\":38230,\"ìĬµëĭĪëĭ¤\":38231,\"Ġneglect\":38232,\"ĠLines\":38233,\"Ġmemb\":38234,\"_EXEC\":38235,\"assage\":38236,\"ĠYard\":38237,\"{}'.\":38238,\"Ġlottery\":38239,\"tein\":38240,\"_calc\":38241,\"iku\":38242,\"_RECORD\":38243,\"Warn\":38244,\"Ġhealthier\":38245,\"urement\":38246,\"Ġyarn\":38247,\"ĠCorner\":38248,\"(zip\":38249,\"(init\":38250,\"ĠLit\":38251,\"HW\":38252,\"subset\":38253,\"ĠMF\":38254,\"ETERS\":38255,\"_rot\":38256,\"Ġere\":38257,\"ĠOverride\":38258,\"Wallet\":38259,\"_reward\":38260,\"Ġsage\":38261,\"setVisible\":38262,\"ĠJsonResponse\":38263,\"ICY\":38264,\"è¯¢\":38265,\"VarChar\":38266,\"aat\":38267,\"-green\":38268,\"Ġirq\":38269,\"anity\":38270,\"Ġwhoever\":38271,\"_share\":38272,\"Ġfout\":38273,\"rolls\":38274,\"Ġwillingness\":38275,\".componentInstance\":38276,\"Ġhonored\":38277,\"urvey\":38278,\"Ber\":38279,\"Ġrunners\":38280,\"Ġlieu\":38281,\"orpor\":38282,\"_structure\":38283,\"BarButtonItem\":38284,\"adx\":38285,\"ĠBennett\":38286,\"Ġdilig\":38287,\"Ġfluct\":38288,\"IDDEN\":38289,\"_Selected\":38290,\"(div\":38291,\"Ġquicker\":38292,\"along\":38293,\"graphql\":38294,\"inez\":38295,\"Ġcite\":38296,\"ĠInstructions\":38297,\"Ġinserting\":38298,\".cloudflare\":38299,\"coupon\":38300,\"edList\":38301,\"ĠStores\":38302,\"_malloc\":38303,\"ç¬¦\":38304,\"ĠAwesome\":38305,\"Ġlamb\":38306,\"REST\":38307,\"Ġintest\":38308,\"ĠNavbar\":38309,\".features\":38310,\"Increment\":38311,\"ĠPom\":38312,\"Ġinsufficient\":38313,\"_LOGIN\":38314,\"PLEMENT\":38315,\"ĠOAuth\":38316,\".INFO\":38317,\"Ġexotic\":38318,\"ĠCASE\":38319,\"ĉĠĠĊ\":38320,\"ĠGand\":38321,\"theses\":38322,\"Ġnovo\":38323,\"ĠDell\":38324,\"âĢ¦âĢ¦âĢ¦âĢ¦\":38325,\"_soft\":38326,\"Ġagreeing\":38327,\"cents\":38328,\"loan\":38329,\"'\\\",Ċ\":38330,\"ĠRan\":38331,\"DEL\":38332,\"Ġorganised\":38333,\"+n\":38334,\"ĠHealthcare\":38335,\"Ġdeterior\":38336,\"Ġimplementations\":38337,\"Ġcarn\":38338,\"Ġ,'\":38339,\"ĠLOAD\":38340,\"Ġplanted\":38341,\"æľª\":38342,\"FormControl\":38343,\"_matches\":38344,\"Ġperiodic\":38345,\"_To\":38346,\"ĠJoel\":38347,\"Ġankle\":38348,\"Ġmilitants\":38349,\"ĠWitch\":38350,\"uniform\":38351,\"uenta\":38352,\"OfWeek\":38353,\"Ġperpetr\":38354,\"Ġinterventions\":38355,\"(writer\":38356,\"antine\":38357,\"ProgressBar\":38358,\"Ġleagues\":38359,\"compress\":38360,\"izione\":38361,\"ĠEA\":38362,\"\\\"]=\\\"\":38363,\"ĠStephan\":38364,\"minus\":38365,\"sstream\":38366,\"_led\":38367,\"Ġ=========================================================================\":38368,\"\\\"When\":38369,\"Already\":38370,\"Ġcontempl\":38371,\"Ġatau\":38372,\"ĠCongressional\":38373,\"Ġrapport\":38374,\"ĠBour\":38375,\"ishi\":38376,\"Ġtym\":38377,\"ĠArmen\":38378,\"ĠÑĢÐ°Ð·\":38379,\"-format\":38380,\"_Read\":38381,\"(columns\":38382,\"Ġneue\":38383,\"_boxes\":38384,\"ĠSandy\":38385,\"_,Ċ\":38386,\"ĠWizard\":38387,\"Ġorden\":38388,\"Ġfilesystem\":38389,\"flight\":38390,\"Ġwsz\":38391,\"anceled\":38392,\"Ġdawn\":38393,\"ĠGson\":38394,\"_warning\":38395,\"ĠIceland\":38396,\"Ġslut\":38397,\"ĠsetIs\":38398,\"_ident\":38399,\"Ġoffshore\":38400,\"ĠSketch\":38401,\";%\":38402,\"Ġtribes\":38403,\"_SPACE\":38404,\"Ġotros\":38405,\"Compiler\":38406,\"ĉEnd\":38407,\"Ġ]),Ċ\":38408,\"Gravity\":38409,\"Ġtensions\":38410,\"Ġsmoothly\":38411,\"Know\":38412,\"oothing\":38413,\"ĠStartup\":38414,\"ĠHyp\":38415,\"Ġamazon\":38416,\"ĠReceived\":38417,\"zenie\":38418,\"ëŀ\":38419,\"ĠChocolate\":38420,\"ĠÄ°\":38421,\"\\\"No\":38422,\"ĠALS\":38423,\"ĠProgramming\":38424,\"ĠDogs\":38425,\"Ġgoodness\":38426,\"(errno\":38427,\"/es\":38428,\"Ġremotely\":38429,\"ĠHooks\":38430,\"Uuid\":38431,\"Ġoverly\":38432,\"ĠåĲ\":38433,\"Ġgpu\":38434,\"Ġstimulus\":38435,\"(step\":38436,\".You\":38437,\"Ġbiom\":38438,\"INC\":38439,\".bits\":38440,\"(mContext\":38441,\"Ġamerican\":38442,\"Ġterritories\":38443,\"ĠND\":38444,\"]\\\"Ċ\":38445,\"ĠMapping\":38446,\"Ġproceeding\":38447,\".ax\":38448,\"Ġsubstring\":38449,\"BUTTON\":38450,\"ĠIg\":38451,\"-pane\":38452,\"ĠAns\":38453,\"Ġgraduation\":38454,\"Ġperspectives\":38455,\"Mixin\":38456,\"_minus\":38457,\"ĉĉĉĉĠĠĠĠ\":38458,\"\\\")))\":38459,\"normalized\":38460,\".lastName\":38461,\"Ġclan\":38462,\"Asia\":38463,\"(Mouse\":38464,\"paginate\":38465,\"Ġgif\":38466,\"elig\":38467,\"Ġposters\":38468,\"nings\":38469,\"ĠÏĦ\":38470,\"Ġapost\":38471,\"ĠIhre\":38472,\"DllImport\":38473,\"ĠEqual\":38474,\"Ġdistinguished\":38475,\"neapolis\":38476,\"Ġbackdrop\":38477,\"ĠAlternatively\":38478,\"/mod\":38479,\"Ġlend\":38480,\"ĠSHOW\":38481,\"_codes\":38482,\"ĠatÃ©\":38483,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":38484,\"-case\":38485,\"chte\":38486,\"Ġdonc\":38487,\":add\":38488,\"Negative\":38489,\"favorite\":38490,\"Ġattractions\":38491,\"intColor\":38492,\"ĠPir\":38493,\"Connell\":38494,\"Manifest\":38495,\"teams\":38496,\"Ġ};ĊĊĊ\":38497,\"Ġplural\":38498,\"Ġovertime\":38499,\"ĠEuropa\":38500,\"ĠBangladesh\":38501,\"(an\":38502,\"Ġlingu\":38503,\"itime\":38504,\"inston\":38505,\".shadow\":38506,\"ç¨ĭ\":38507,\"ĠUSS\":38508,\"ServerError\":38509,\"IVERS\":38510,\"ĠJin\":38511,\"Ġhumble\":38512,\"autoload\":38513,\"arez\":38514,\"âĢ²\":38515,\"ĠAstr\":38516,\"icolon\":38517,\".ViewModels\":38518,\"obo\":38519,\"Ġswipe\":38520,\"Ġrecession\":38521,\"éķ\":38522,\"Ġìĺ\":38523,\"nerg\":38524,\"ingredient\":38525,\"mailto\":38526,\"ĠFame\":38527,\"Printing\":38528,\"Pixels\":38529,\"ĠBash\":38530,\"posta\":38531,\"_JO\":38532,\"Ġinfamous\":38533,\"ĠLanc\":38534,\"(localStorage\":38535,\".blit\":38536,\"Ġyoungest\":38537,\"ĠfieldName\":38538,\"Ġconting\":38539,\"Ġwool\":38540,\"ĠImGui\":38541,\"ĠNST\":38542,\".prefix\":38543,\"ToInt\":38544,\"ĠSox\":38545,\"Ġhabitat\":38546,\"(\\\"|\":38547,\"='\\\"+\":38548,\"INGTON\":38549,\"_wrap\":38550,\"uckets\":38551,\"ĠWRITE\":38552,\"Ġmedicines\":38553,\"Ġmembrane\":38554,\"ĠJText\":38555,\"Ġreproduction\":38556,\"_receive\":38557,\"TableRow\":38558,\"queueReusableCell\":38559,\"hooks\":38560,\"Ġrelying\":38561,\"Ġdrilling\":38562,\"_Il\":38563,\"(exception\":38564,\"Ġdurability\":38565,\"Ġhesitate\":38566,\"Ġcompart\":38567,\"ILING\":38568,\"ĠElder\":38569,\"Ġcaffe\":38570,\"Ġdevelops\":38571,\"isher\":38572,\"Ġply\":38573,\"Ġtol\":38574,\"_PLAY\":38575,\"Ġfriction\":38576,\"(always\":38577,\"Ġindigenous\":38578,\"ĠOpera\":38579,\"ĠCampus\":38580,\"ancements\":38581,\"Ġlitter\":38582,\".limit\":38583,\"(Token\":38584,\"enis\":38585,\"Ġhighlighting\":38586,\"ĠAub\":38587,\"Ġvalidators\":38588,\"-host\":38589,\"wheel\":38590,\"<{\":38591,\"))+\":38592,\"ĠNewsletter\":38593,\"_average\":38594,\"Ġsodium\":38595,\"ĠHil\":38596,\"ĠMile\":38597,\"ĠAuthService\":38598,\"Statistics\":38599,\"ĠNutrition\":38600,\"Ġsponsors\":38601,\"ovenant\":38602,\"==============\":38603,\".Absolute\":38604,\"ĠfÃ¥\":38605,\"Handling\":38606,\"Ġ-------Ċ\":38607,\"(directory\":38608,\"\\\").Ċ\":38609,\"anol\":38610,\".browser\":38611,\"ĠGrinding\":38612,\"Ġck\":38613,\"Frequency\":38614,\"()['\":38615,\"Adjust\":38616,\"crew\":38617,\"afety\":38618,\"Ġgn\":38619,\"Ġwives\":38620,\"ooo\":38621,\"Ġprostitu\":38622,\"ĠoÃ¹\":38623,\"ifty\":38624,\"Ġlitigation\":38625,\"ĠEz\":38626,\"Jeff\":38627,\".pk\":38628,\"ĠShoes\":38629,\"corn\":38630,\"yyvsp\":38631,\"Ġadap\":38632,\"=u\":38633,\"CONF\":38634,\"ANDARD\":38635,\"Ġelevator\":38636,\"billing\":38637,\"Ġcand\":38638,\"Ġcarp\":38639,\"[field\":38640,\"-lib\":38641,\"sequently\":38642,\">-\":38643,\"Ġlcd\":38644,\"---------------\":38645,\"(\\\"\\\"\":38646,\"Ġtactical\":38647,\"ĠRonald\":38648,\"extr\":38649,\"ĠFest\":38650,\"Ġfuer\":38651,\"-navigation\":38652,\"Ġkb\":38653,\"ghost\":38654,\"ĠhandleChange\":38655,\"_cls\":38656,\"()!=\":38657,\"Comparator\":38658,\".vm\":38659,\"ĠCox\":38660,\"_review\":38661,\"/@\":38662,\"_cookie\":38663,\"Ġrecognised\":38664,\"ldap\":38665,\"Threads\":38666,\"ĠSexual\":38667,\"ĠBearing\":38668,\"(SQL\":38669,\"Ġxr\":38670,\"Ġthigh\":38671,\"URLConnection\":38672,\"ĠSUV\":38673,\"ĠmContext\":38674,\"Ġincidence\":38675,\"ĠEste\":38676,\".sup\":38677,\"_te\":38678,\"(EXIT\":38679,\"CMD\":38680,\"/\\\">\":38681,\"Almost\":38682,\"ĠUne\":38683,\"Ġanderen\":38684,\"ĠSingleton\":38685,\"Ġbore\":38686,\"Think\":38687,\"Ġnarc\":38688,\"]initWith\":38689,\"_shop\":38690,\"(strategy\":38691,\"!',\":38692,\"herits\":38693,\"ĠDesk\":38694,\"_machine\":38695,\".netty\":38696,\"Ä±nda\":38697,\"=<\":38698,\"ĠQR\":38699,\"ĠSidebar\":38700,\".splitContainer\":38701,\"ĠonSuccess\":38702,\"Ġmonkey\":38703,\"Enjoy\":38704,\"(nodes\":38705,\"pectrum\":38706,\"Ġ(*(\":38707,\"ĉUINT\":38708,\",height\":38709,\"ĠNetworks\":38710,\".tail\":38711,\".linspace\":38712,\"Ġ\\\"...\":38713,\"Listen\":38714,\"Æ¡\":38715,\".Channel\":38716,\"-defined\":38717,\"Repeat\":38718,\"adjust\":38719,\"ERM\":38720,\"_application\":38721,\".assertNotNull\":38722,\"-stream\":38723,\"Ġrabbit\":38724,\"Ġpositioning\":38725,\"Ġwoke\":38726,\"Ġfing\":38727,\"Ġmultiplayer\":38728,\"Ġregistering\":38729,\"until\":38730,\"Ã¥n\":38731,\"(::\":38732,\"ussions\":38733,\"Ġpotato\":38734,\"ĠEquals\":38735,\".Sup\":38736,\"/apache\":38737,\"Ġ(=\":38738,\".\\\")\":38739,\".ptr\":38740,\"ĠSpeech\":38741,\".clip\":38742,\"ĠGabriel\":38743,\"Ġmusician\":38744,\"/issues\":38745,\".shop\":38746,\"ĠHier\":38747,\"_RET\":38748,\"_bucket\":38749,\"ãĥ¡\":38750,\"avs\":38751,\"Ġroz\":38752,\"flower\":38753,\"WriteBarrier\":38754,\"ĠMilan\":38755,\"Ġlegislature\":38756,\"ĠDoll\":38757,\"Ġproving\":38758,\".concatenate\":38759,\"âķĲ\":38760,\"Ġgchar\":38761,\"cdnjs\":38762,\"bles\":38763,\"ĠListing\":38764,\"Ð»Ð¾\":38765,\".xrLabel\":38766,\"ĠSak\":38767,\"justice\":38768,\"ĠValentine\":38769,\"unless\":38770,\"Ġpiger\":38771,\"(run\":38772,\"Ġtestified\":38773,\"ANA\":38774,\"ĠRemoves\":38775,\"))));Ċ\":38776,\"recated\":38777,\"ĠRuntimeMethod\":38778,\"Ġconqu\":38779,\"ãĤ¢\":38780,\"Ġtissues\":38781,\"ailer\":38782,\"Ã©tÃ©\":38783,\"-Star\":38784,\"Ġflames\":38785,\".setIcon\":38786,\"Ġsupern\":38787,\"Ġvagina\":38788,\"-variable\":38789,\"Ġwellness\":38790,\"CUR\":38791,\"Ġbelle\":38792,\".getRequest\":38793,\"Ġpoco\":38794,\"benh\":38795,\"agens\":38796,\"Ġspill\":38797,\"ĠJur\":38798,\"Ġdispatcher\":38799,\"Ð½Ð¾Ð³Ð¾\":38800,\"emonic\":38801,\"(dirname\":38802,\"ĠÐĶ\":38803,\"Ġpasse\":38804,\"Ġganz\":38805,\"ricing\":38806,\"EU\":38807,\"Ġmujeres\":38808,\"essen\":38809,\".attribute\":38810,\"jj\":38811,\"ĉĉĠĊ\":38812,\"[^\":38813,\"Ġstrtolower\":38814,\"lexer\":38815,\"ectar\":38816,\"hotel\":38817,\".square\":38818,\"Ġrall\":38819,\"Ġlowered\":38820,\"handled\":38821,\"Market\":38822,\"ĠUses\":38823,\"ivas\":38824,\".Business\":38825,\"ãģĹãģ¦\":38826,\"DIV\":38827,\"Ġwasted\":38828,\"Ġavoir\":38829,\"Ãªm\":38830,\"_ACCOUNT\":38831,\".et\":38832,\"ĉSDL\":38833,\"kap\":38834,\"Ġfox\":38835,\"uppet\":38836,\"{},Ċ\":38837,\"\\\",'\":38838,\"Favorite\":38839,\"PEND\":38840,\"ĠAES\":38841,\"}),\":38842,\"Ġdeduction\":38843,\"ĠpolÃŃt\":38844,\"ĠcomponentWill\":38845,\"ĠTelerik\":38846,\"_SELF\":38847,\"Ġmuse\":38848,\"Craft\":38849,\"Ġdens\":38850,\"à¤¿\":38851,\"(tp\":38852,\"Ġtasty\":38853,\"Ġbalances\":38854,\"Ġdedication\":38855,\"ĠWallace\":38856,\"Ġunlaw\":38857,\"\\\\\\\">\\\\\":38858,\"Ġmum\":38859,\"-update\":38860,\"emente\":38861,\"Ġsoda\":38862,\"Republic\":38863,\"asmine\":38864,\"Ã©ric\":38865,\"(Status\":38866,\"ĠJsonConvert\":38867,\"ĠDisk\":38868,\".Redirect\":38869,\"Ġfilming\":38870,\"/mol\":38871,\"Ro\":38872,\"Ġville\":38873,\"Ġtrabaj\":38874,\"Ġsynthesis\":38875,\"rega\":38876,\"Ġrl\":38877,\"Scheduler\":38878,\"ISHED\":38879,\"currentUser\":38880,\"(errors\":38881,\"'h\":38882,\"_bot\":38883,\"ximo\":38884,\"ĠUSART\":38885,\"_super\":38886,\"_DECREF\":38887,\"Ð½Ð¾Ð¹\":38888,\"_ROW\":38889,\"Ġpromotes\":38890,\"ĠTA\":38891,\"Ġhoras\":38892,\"ĠRepresents\":38893,\"Ġnameof\":38894,\"ĠExc\":38895,\"ĠGarage\":38896,\"Ġseine\":38897,\",#\":38898,\"Ġherb\":38899,\"/resources\":38900,\"Ġpleaded\":38901,\".radioButton\":38902,\"Ġæĺ\":38903,\"Ops\":38904,\"ĠNest\":38905,\"cstring\":38906,\"ĠDefence\":38907,\"Ġrefere\":38908,\"_leaf\":38909,\"Ġrevelation\":38910,\"ë§\":38911,\".executeUpdate\":38912,\"_WORLD\":38913,\"Ġexpans\":38914,\"(\\\"\\\\\\\"\":38915,\"jab\":38916,\"Ġdoubts\":38917,\"ĠGeometry\":38918,\"Ġintroduces\":38919,\"Ġsenators\":38920,\"Ġcanal\":38921,\".helper\":38922,\"ĠBiology\":38923,\"_SENS\":38924,\".previous\":38925,\"-touch\":38926,\"abit\":38927,\"Ġimpacted\":38928,\"Ġbrackets\":38929,\".direct\":38930,\"accum\":38931,\"Ġtestosterone\":38932,\"ĉaction\":38933,\"ĠChance\":38934,\"Ġpeaks\":38935,\"CppCodeGenWriteBarrier\":38936,\"Ġunbelie\":38937,\"_press\":38938,\".Rel\":38939,\"angled\":38940,\"/templates\":38941,\"-->čĊ\":38942,\"lime\":38943,\"Ġsufficiently\":38944,\"_nt\":38945,\"Expand\":38946,\".isfile\":38947,\"ĠisEmpty\":38948,\"Ġqt\":38949,\"Ġmulher\":38950,\"acob\":38951,\"George\":38952,\"å¸¸\":38953,\"Ġassim\":38954,\"aso\":38955,\"Ġcomprised\":38956,\"OV\":38957,\"(CONFIG\":38958,\"ĉwriter\":38959,\"Ġdesp\":38960,\"Ġtenure\":38961,\"(cr\":38962,\".pool\":38963,\"ĠBrend\":38964,\"Ġcensor\":38965,\"(timeout\":38966,\"Ġplea\":38967,\".Wrap\":38968,\"Ġtightly\":38969,\"ĠWere\":38970,\"ĠIgnore\":38971,\"abei\":38972,\"Ġbridges\":38973,\"Ġcondemn\":38974,\"Ġsimplicity\":38975,\"Ġroutinely\":38976,\"Ġblacks\":38977,\"jb\":38978,\"ĠPit\":38979,\"Utf\":38980,\"Ġ/Ċ\":38981,\"reload\":38982,\"ĠsetObject\":38983,\"/global\":38984,\"Ġfatty\":38985,\"Ġsocks\":38986,\"Couldn\":38987,\"Ġerotisk\":38988,\"æĿ¡\":38989,\"ĠPressure\":38990,\"ĠMaz\":38991,\"npos\":38992,\"tolower\":38993,\"ĠEQ\":38994,\"uteur\":38995,\"ĠMoment\":38996,\"Ġeta\":38997,\"{{--\":38998,\"Ġgraphs\":38999,\"ĠGuar\":39000,\"rine\":39001,\"(--\":39002,\"ĠHttpStatus\":39003,\"(student\":39004,\"*np\":39005,\"Ġrailway\":39006,\"Ġasynchronous\":39007,\"_vm\":39008,\"'],'\":39009,\",text\":39010,\"merchant\":39011,\"(Guid\":39012,\"ĠGra\":39013,\"ixer\":39014,\"fetchAll\":39015,\".addListener\":39016,\"flip\":39017,\"*$\":39018,\">(),\":39019,\"Ġsunlight\":39020,\"assigned\":39021,\"Ġabc\":39022,\"ĠCOLUMN\":39023,\"ĠðŁĻĤĊĊ\":39024,\")...\":39025,\"Ġensemble\":39026,\"Ġnewline\":39027,\"_SINGLE\":39028,\"iedad\":39029,\"Ġdarker\":39030,\"ormap\":39031,\"Ġlion\":39032,\"plits\":39033,\"Ġillustration\":39034,\"ĠIEEE\":39035,\"Ġvista\":39036,\"ousands\":39037,\"*******\":39038,\"ĠTommy\":39039,\"Ġhue\":39040,\"Sel\":39041,\"Ġaura\":39042,\"ĠTherapy\":39043,\"Ġanimator\":39044,\".constraints\":39045,\"Ġvague\":39046,\"(\\\"\\\")\":39047,\"Ġvillain\":39048,\"Ġblessing\":39049,\"ĠstringBuilder\":39050,\"ĠMisc\":39051,\"ĠDIR\":39052,\"fax\":39053,\"-node\":39054,\"ĠWalking\":39055,\"ĠAU\":39056,\"sess\":39057,\"Ġgrill\":39058,\"VERTISE\":39059,\"ĠFoods\":39060,\"Ġtournaments\":39061,\"Ãĵ\":39062,\"ĠMarsh\":39063,\"Ġwonders\":39064,\"Longitude\":39065,\".CommandText\":39066,\"=input\":39067,\"_encoder\":39068,\"pageSize\":39069,\"ĠgetState\":39070,\">>Ċ\":39071,\".grey\":39072,\"pod\":39073,\"Ġreadings\":39074,\"Ġreconsider\":39075,\"Startup\":39076,\"Ġexcer\":39077,\".balance\":39078,\"_cycle\":39079,\"_Time\":39080,\"LOCAL\":39081,\"ĠEFI\":39082,\"ĠReyn\":39083,\".setForeground\":39084,\"byn\":39085,\"Ġdisconnected\":39086,\"ACTIVE\":39087,\"Ġembedding\":39088,\"ickers\":39089,\"Ġsurroundings\":39090,\"*c\":39091,\"Ġgarant\":39092,\"Ġbf\":39093,\"Ġwipe\":39094,\"Ġä¸ĭ\":39095,\"_TRA\":39096,\"adox\":39097,\"çķ\":39098,\"Ġsucks\":39099,\"ĠSongs\":39100,\"ĠAssociates\":39101,\"ĠBald\":39102,\"ĠBrett\":39103,\"venile\":39104,\"Ġvt\":39105,\"Ġinade\":39106,\"Ġresigned\":39107,\"ĠGlenn\":39108,\".pattern\":39109,\".DataBind\":39110,\"ÑĥÐ¼\":39111,\"LayoutInflater\":39112,\"chet\":39113,\"ĠTestament\":39114,\".ms\":39115,\"Ġpav\":39116,\"ĠReactDOM\":39117,\"urdy\":39118,\"ADATA\":39119,\"Mu\":39120,\"/actions\":39121,\"ĠJs\":39122,\"_extract\":39123,\"ĠBring\":39124,\":id\":39125,\"strt\":39126,\"ivation\":39127,\"Ġoutright\":39128,\"azu\":39129,\"loyment\":39130,\"Ð¸Ñı\":39131,\"aldo\":39132,\"ĠPublisher\":39133,\"Education\":39134,\"Palette\":39135,\"_drv\":39136,\"Ġ($(\":39137,\"ĠAnda\":39138,\"Ġremedy\":39139,\"Ġinconsistent\":39140,\"tection\":39141,\"Ġregulators\":39142,\"Ġshortest\":39143,\"(pair\":39144,\"ĠInstallation\":39145,\"Ġdefendants\":39146,\"Ġ();\":39147,\"-large\":39148,\"Mel\":39149,\"Ġthreaten\":39150,\"Ð½Ñı\":39151,\"Ġfetish\":39152,\"otine\":39153,\"_dic\":39154,\"Ġ<$\":39155,\"Ġstagger\":39156,\"spi\":39157,\"$response\":39158,\"Serv\":39159,\"-born\":39160,\"jos\":39161,\"ĉimg\":39162,\"ĉWHERE\":39163,\"_lt\":39164,\"å½ĵ\":39165,\".cost\":39166,\"ĠTue\":39167,\".labels\":39168,\"ĠLV\":39169,\"wcsstore\":39170,\"ĠJesse\":39171,\"à¸«\":39172,\"Trade\":39173,\"Ġpredecessor\":39174,\"ëĤ\":39175,\"finally\":39176,\"_general\":39177,\"oggler\":39178,\"_REGION\":39179,\"nement\":39180,\"Ġblogger\":39181,\"ĠHarbor\":39182,\"ĠDataset\":39183,\"[w\":39184,\"Ġattendees\":39185,\".ico\":39186,\"maximum\":39187,\".Unlock\":39188,\"_SYNC\":39189,\"Ã¡gina\":39190,\"Ġdowns\":39191,\"ĠWii\":39192,\"])/\":39193,\"Ġkicking\":39194,\"unication\":39195,\"ĠDAC\":39196,\"ĠIDS\":39197,\"ĠRental\":39198,\"ĠcurrentTime\":39199,\"Ġvaccines\":39200,\"ĠDevil\":39201,\"Ġnors\":39202,\"_mouse\":39203,\"urrection\":39204,\"(no\":39205,\"Ġ>čĊ\":39206,\"Ġaggression\":39207,\"Ġbreeding\":39208,\".symbol\":39209,\"iman\":39210,\"AbsolutePath\":39211,\"ĠWHO\":39212,\"_flush\":39213,\"-root\":39214,\"arna\":39215,\"&M\":39216,\"Ġfathers\":39217,\"ĠRocket\":39218,\"iveau\":39219,\"Ġwander\":39220,\"Ġcompos\":39221,\"ĠWarrior\":39222,\"ĠSeat\":39223,\"ĠClinic\":39224,\"_invoice\":39225,\"(dispatch\":39226,\"Producto\":39227,\"aturing\":39228,\"ossier\":39229,\"ĠMAY\":39230,\"Ġdagger\":39231,\"Ġsanitized\":39232,\"ĠRFC\":39233,\"Ġproph\":39234,\"Ġurine\":39235,\"Ġgrind\":39236,\"ĠExpanded\":39237,\"descripcion\":39238,\"-fw\":39239,\"ĠKerry\":39240,\"=name\":39241,\"Ġchk\":39242,\"Ġnationally\":39243,\"Ġthee\":39244,\"Inc\":39245,\"Ġ?>>\":39246,\".RadioButton\":39247,\".HttpServletResponse\":39248,\"/Y\":39249,\"ĉfield\":39250,\"Ġhomme\":39251,\"yper\":39252,\"Physical\":39253,\"=v\":39254,\"Ġdriv\":39255,\"ĠErrors\":39256,\"ĠcÄĥ\":39257,\"Death\":39258,\"ĠWINDOW\":39259,\"Ġpoet\":39260,\"ĠSharp\":39261,\"ĠImmutable\":39262,\"ĉcreate\":39263,\"Ġgeht\":39264,\"ĠReform\":39265,\"aiser\":39266,\"ĠInitialization\":39267,\"Ġimmunity\":39268,\".compose\":39269,\"Ġlatency\":39270,\"ĠLebanon\":39271,\"ĠParad\":39272,\"Ġfuels\":39273,\"ĠExhib\":39274,\"coh\":39275,\"%\\\">Ċ\":39276,\"ĠCLI\":39277,\")initWith\":39278,\"-Za\":39279,\"_CLEAR\":39280,\"regn\":39281,\"Ġfinances\":39282,\".standard\":39283,\"_CATEGORY\":39284,\".library\":39285,\"Ġtravelers\":39286,\"_wp\":39287,\"ĠEvaluation\":39288,\"starting\":39289,\"Ġ)),Ċ\":39290,\"episode\":39291,\"ĠVariant\":39292,\"Ġdaemon\":39293,\"ĠJulia\":39294,\"ĠNR\":39295,\"Ġdoubles\":39296,\"<v\":39297,\"/runtime\":39298,\"Ġinterpreter\":39299,\"ĠINDEX\":39300,\"ĠHolmes\":39301,\"_DIM\":39302,\"Ġpaddle\":39303,\"_example\":39304,\"Ġforeground\":39305,\".routes\":39306,\"Ġsowie\":39307,\"SUCCESS\":39308,\"ĠCDC\":39309,\"ĠBD\":39310,\"_-\":39311,\"asured\":39312,\"Writing\":39313,\"ĠcurrentPage\":39314,\"(answer\":39315,\"ĠASCII\":39316,\"à¨\":39317,\"Ġsocially\":39318,\"yyy\":39319,\"ĠSpecialist\":39320,\"(customer\":39321,\"istani\":39322,\"kest\":39323,\"ĠMak\":39324,\"Ġtho\":39325,\".pt\":39326,\"(comment\":39327,\"ĠConverter\":39328,\"gam\":39329,\"bins\":39330,\".tele\":39331,\"ĠVeterans\":39332,\"_ALLOC\":39333,\"Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ\":39334,\"innamon\":39335,\";width\":39336,\"ohl\":39337,\"Ġfantas\":39338,\"Ġsung\":39339,\"ĉK\":39340,\"(Json\":39341,\"Ġneighbourhood\":39342,\"Ġvow\":39343,\"Ġsins\":39344,\"onacci\":39345,\"Ġepochs\":39346,\"imagen\":39347,\".Change\":39348,\".mybatis\":39349,\"Seek\":39350,\"WER\":39351,\"ç®¡çĲĨ\":39352,\"Ġinteress\":39353,\"_Event\":39354,\"ederland\":39355,\"Ġterritor\":39356,\"Ġciudad\":39357,\"ucked\":39358,\"Ġsnack\":39359,\"Ġtransported\":39360,\"ĠManifest\":39361,\"ĠDAT\":39362,\"_theta\":39363,\"Ġwont\":39364,\".ĊĊĊĊĊĊĊĊĊĊ\":39365,\"Ĭ¶æĢģ\":39366,\"ĠEpic\":39367,\"Deck\":39368,\"ltra\":39369,\"_ZERO\":39370,\"Ġ[];\":39371,\"/scripts\":39372,\"Ġ--------------------------------------------------------------------------------\":39373,\"æĥħ\":39374,\"Ġweed\":39375,\"NBC\":39376,\"Ġraped\":39377,\"ĠGateway\":39378,\"[M\":39379,\"ĠTimeout\":39380,\"enchmark\":39381,\".ViewModel\":39382,\"Ġpornos\":39383,\"ĠYa\":39384,\"thritis\":39385,\"ĠFlynn\":39386,\"Ġmega\":39387,\"acin\":39388,\"Ġtribal\":39389,\".apple\":39390,\"ĠBlo\":39391,\"Ã¢n\":39392,\"ibi\":39393,\"rov\":39394,\"ĠLives\":39395,\"^.\":39396,\"getRequest\":39397,\"ĠEstablish\":39398,\"containers\":39399,\"Ġstarring\":39400,\"Ġcelebrities\":39401,\"ĠRelative\":39402,\"ĠHeights\":39403,\"Ġtqdm\":39404,\"ĠNorthwest\":39405,\"ivic\":39406,\"ĉcl\":39407,\"Ġautomotive\":39408,\"entric\":39409,\"Ġfortunate\":39410,\"Ġfireplace\":39411,\"seud\":39412,\"nickname\":39413,\";s\":39414,\"_CAL\":39415,\"halt\":39416,\"(ns\":39417,\"_deleted\":39418,\"Development\":39419,\"movies\":39420,\"Ġidentities\":39421,\"Ġpromptly\":39422,\"Ø§ÙĨ\":39423,\"Ġante\":39424,\"Ġ\\\"','\":39425,\"åı£\":39426,\"impse\":39427,\"Ġyap\":39428,\"TypeName\":39429,\"Ġbitch\":39430,\"Ġassociates\":39431,\"HEME\":39432,\"-empty\":39433,\"ĠØª\":39434,\"olvers\":39435,\"Ġpistol\":39436,\"Scoped\":39437,\"agner\":39438,\"']=='\":39439,\"ĠIMP\":39440,\"exc\":39441,\"Ġomitted\":39442,\"Ġmindset\":39443,\"Ġ[](\":39444,\"Ġorn\":39445,\"_CAM\":39446,\"Avg\":39447,\"LocalizedString\":39448,\"ĠNatur\":39449,\"Ġcomposer\":39450,\"ĠPlaying\":39451,\"Ġoverd\":39452,\"_utf\":39453,\".sk\":39454,\"ĠFol\":39455,\"$page\":39456,\",Object\":39457,\"Ġbees\":39458,\"alary\":39459,\"bullet\":39460,\"_library\":39461,\"Offer\":39462,\"located\":39463,\"Ġ(_,\":39464,\"âĢľHe\":39465,\"ĠOwners\":39466,\")).Ċ\":39467,\"Ġbri\":39468,\".Admin\":39469,\"ktion\":39470,\"Ð»ÑİÑĩ\":39471,\"Ġerotici\":39472,\"Cancelled\":39473,\"Ġagr\":39474,\"reviews\":39475,\"_dma\":39476,\"RICT\":39477,\"Ġgfx\":39478,\"mpi\":39479,\"ppo\":39480,\"Ġ//@\":39481,\"Ġuppercase\":39482,\"Ġcommitting\":39483,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":39484,\"UserData\":39485,\"Ġvai\":39486,\"ĉsort\":39487,\"Ġcongrat\":39488,\"Ġdioxide\":39489,\"Ð´Ð°\":39490,\".area\":39491,\"ĠJoshua\":39492,\"ĠKoch\":39493,\"_break\":39494,\"azure\":39495,\"istical\":39496,\"_ALPHA\":39497,\"_views\":39498,\"Ġeliminating\":39499,\"OMB\":39500,\"enumer\":39501,\"ĠHydro\":39502,\"(*(\":39503,\"ERTICAL\":39504,\"Ġinevitably\":39505,\"Ġstole\":39506,\"-east\":39507,\"ieron\":39508,\"Ġlinger\":39509,\"/doc\":39510,\"Åº\":39511,\"ĠAlready\":39512,\"asio\":39513,\"Ġ--Ċ\":39514,\"Ġabbrev\":39515,\"ĠAtom\":39516,\"him\":39517,\"ĠINSERT\":39518,\"sun\":39519,\"âĻª\":39520,\"CONNECT\":39521,\"erator\":39522,\"ĠManning\":39523,\"Ġ:(\":39524,\"gas\":39525,\"=>'\":39526,\"Ġqueryset\":39527,\";}čĊ\":39528,\"ĠPopulation\":39529,\"utedString\":39530,\"resident\":39531,\"_FONT\":39532,\"ĠRespond\":39533,\"Ġobscure\":39534,\"Ġobservable\":39535,\"ĠContributors\":39536,\"kon\":39537,\"ĠMusk\":39538,\"exao\":39539,\"ĠTub\":39540,\"BootApplication\":39541,\"SOR\":39542,\".Horizontal\":39543,\".findBy\":39544,\".power\":39545,\"Ġpositively\":39546,\"venience\":39547,\"ĠJong\":39548,\"Ġwhistle\":39549,\"ĠÐ·Ð½Ð°Ñĩ\":39550,\"Ġlending\":39551,\"Ġdestructive\":39552,\"ĠonDelete\":39553,\"authorization\":39554,\"();?>\":39555,\"_original\":39556,\"science\":39557,\"atra\":39558,\"?,?,\":39559,\"ĠAsc\":39560,\"Ġconvincing\":39561,\"$a\":39562,\"orgen\":39563,\"_Date\":39564,\"ĠProvide\":39565,\"Ġlonely\":39566,\")'Ċ\":39567,\"exchange\":39568,\";?>Ċ\":39569,\".fast\":39570,\"Samples\":39571,\"London\":39572,\"'])čĊ\":39573,\"ĠIonic\":39574,\"Ġpesso\":39575,\"ĠKnights\":39576,\"ĠRaf\":39577,\"_attrs\":39578,\"Ġrepeal\":39579,\">Main\":39580,\"ĠOrdered\":39581,\"_New\":39582,\"=\\\"\\\"></\":39583,\"urlpatterns\":39584,\"ATIONAL\":39585,\"peech\":39586,\"ĠIdaho\":39587,\"Ġprincess\":39588,\"ĠCustomers\":39589,\"aways\":39590,\"adb\":39591,\"ĠBryant\":39592,\"nonce\":39593,\"Ġadul\":39594,\"Ġ``(\":39595,\"Ġaftermath\":39596,\"=dict\":39597,\"textBox\":39598,\"Ġsperm\":39599,\"Ġcough\":39600,\"Hor\":39601,\"âĢĻS\":39602,\".ComponentResourceManager\":39603,\"Ġregulator\":39604,\"Ġpartnerships\":39605,\"/projects\":39606,\"trys\":39607,\"ĠLaser\":39608,\"âŁ©\":39609,\"ĠFunk\":39610,\"Ġunconscious\":39611,\"Ġcrust\":39612,\"ĠTeams\":39613,\"ĠBanner\":39614,\"ĠHoney\":39615,\"lems\":39616,\"ĠmaxWidth\":39617,\"PointerException\":39618,\"fadeOut\":39619,\"-St\":39620,\"Ġstrangers\":39621,\"_GO\":39622,\"Writable\":39623,\"_Info\":39624,\".NonNull\":39625,\"annotations\":39626,\"ĠGD\":39627,\"Ġendorsed\":39628,\"ĉTokenName\":39629,\"ĠDepending\":39630,\"YNAM\":39631,\"ĠMeteor\":39632,\"ĠIncrease\":39633,\".Many\":39634,\"==(\":39635,\".UUID\":39636,\"_KERNEL\":39637,\"ĠvidÃ©\":39638,\"Ġpq\":39639,\"ĠQtGui\":39640,\"ĠVarious\":39641,\"Ġjohn\":39642,\"_patch\":39643,\"Ġtoutes\":39644,\"ĠFail\":39645,\"Ġsurviving\":39646,\"(\\\"${\":39647,\"ĠĠĠĠĠĠĠčĊ\":39648,\"ĠimageUrl\":39649,\".wordpress\":39650,\"sources\":39651,\"ĉglVertex\":39652,\"âĢĻa\":39653,\"Ġescol\":39654,\"RARY\":39655,\"ĠSnake\":39656,\"Ġquint\":39657,\"Ġlasts\":39658,\"ĠHarmon\":39659,\"Ġcoil\":39660,\"Ġexploitation\":39661,\"leen\":39662,\"'>\\\";Ċ\":39663,\"ĠSERVER\":39664,\"ĠHEADER\":39665,\"_velocity\":39666,\"ĠInvoke\":39667,\".timestamps\":39668,\"Ġsulf\":39669,\"IQUE\":39670,\"Ġinhabitants\":39671,\"phins\":39672,\"azzo\":39673,\"Ġmono\":39674,\"Legend\":39675,\"Ġnonce\":39676,\"IFE\":39677,\";\\\";Ċ\":39678,\"-create\":39679,\"\\\"\\\",Ċ\":39680,\"permit\":39681,\"ĠImmigration\":39682,\"Ġpathname\":39683,\"ffective\":39684,\"âĻĢâĻĢ\":39685,\"Ġexams\":39686,\"-event\":39687,\"ĠTill\":39688,\"[mid\":39689,\"FIX\":39690,\";color\":39691,\"(Order\":39692,\"_traits\":39693,\"ĠorderBy\":39694,\"Ġsunt\":39695,\"ĠNicholas\":39696,\"Ø²\":39697,\"Ġsunny\":39698,\"iners\":39699,\"Ġaccessibility\":39700,\"ĠHB\":39701,\".comp\":39702,\"ĉop\":39703,\"Ġminorities\":39704,\"etheus\":39705,\"Ġcollaborative\":39706,\"prit\":39707,\"HIR\":39708,\"Ġwraps\":39709,\"ĉdraw\":39710,\"god\":39711,\"ĠIX\":39712,\".apps\":39713,\"ĠNM\":39714,\"Ġirrelevant\":39715,\"ĠTigers\":39716,\"Ġdiag\":39717,\"GV\":39718,\"ĠAccessories\":39719,\"kont\":39720,\"Ġsimplify\":39721,\"ĠFavorite\":39722,\"_tools\":39723,\"([]);Ċ\":39724,\"Ġtowers\":39725,\"Bes\":39726,\"Ġhunter\":39727,\"Ġsalon\":39728,\"(buff\":39729,\"ĉdebug\":39730,\"Ġmalware\":39731,\"Moving\":39732,\"-options\":39733,\")+'\":39734,\"ĠLOVE\":39735,\"_SOCKET\":39736,\"_fin\":39737,\"ĠDelaware\":39738,\"Ġsheriff\":39739,\"-invalid\":39740,\"ĠFULL\":39741,\"ĠÐ¿Ð¾Ð´\":39742,\"elas\":39743,\"\\\"strings\":39744,\"ĠRepresentatives\":39745,\"surface\":39746,\"resolved\":39747,\"htdocs\":39748,\")):čĊ\":39749,\"Ġpressures\":39750,\"Ġnorms\":39751,\"Ġpla\":39752,\"Ġsurname\":39753,\"Ġpostal\":39754,\"ĠDepart\":39755,\"Ġslaughter\":39756,\"orida\":39757,\"Ġhebben\":39758,\"Ġdesar\":39759,\"compact\":39760,\"_LANG\":39761,\"åĲĪ\":39762,\"opoly\":39763,\"_rad\":39764,\"ĠSTDMETHOD\":39765,\"Lazy\":39766,\"ĠĠĠĉ\":39767,\"...,\":39768,\"(web\":39769,\"ĠPont\":39770,\"Ġetwas\":39771,\"Ġupward\":39772,\"_hat\":39773,\"Ġ],ĊĊ\":39774,\"ĠbaseUrl\":39775,\"Ġworrying\":39776,\"-addon\":39777,\"(getClass\":39778,\"SPI\":39779,\"Ġcapturing\":39780,\")},Ċ\":39781,\"Effects\":39782,\"Ġcompetent\":39783,\"Ġfoul\":39784,\"Ġsubscribing\":39785,\"ĠOBJECT\":39786,\"IXEL\":39787,\"bucks\":39788,\"(edge\":39789,\"(pass\":39790,\"ĠPeterson\":39791,\"Ġboobs\":39792,\"ĠDelay\":39793,\"_square\":39794,\"elim\":39795,\"oters\":39796,\"_PC\":39797,\"%E\":39798,\"onclick\":39799,\"ĠSVG\":39800,\"Ġtopped\":39801,\"Ġfist\":39802,\"smart\":39803,\"ĠRalph\":39804,\"(owner\":39805,\"jours\":39806,\"Ġbronze\":39807,\"ĠArgumentException\":39808,\"(original\":39809,\"_SCALE\":39810,\"_cp\":39811,\"Ġrecommends\":39812,\".setStyle\":39813,\"Sure\":39814,\"LAND\":39815,\"Ġrepeating\":39816,\"Matt\":39817,\".Visibility\":39818,\"Ġenterprises\":39819,\".Setup\":39820,\"(scene\":39821,\"ĠReactive\":39822,\"urge\":39823,\"bw\":39824,\".Put\":39825,\"persist\":39826,\".cookie\":39827,\"ĠAudi\":39828,\"`s\":39829,\"supplier\":39830,\"(Form\":39831,\"Â¡\":39832,\"_so\":39833,\"ĮĢ\":39834,\"ĠLegion\":39835,\"tte\":39836,\"Nd\":39837,\"Loss\":39838,\"(attrs\":39839,\".scatter\":39840,\"Ġgroom\":39841,\"Ġglimpse\":39842,\"Ġnails\":39843,\"Ġcumulative\":39844,\"Ġfazer\":39845,\"_services\":39846,\".Num\":39847,\"ibilit\":39848,\"_resolution\":39849,\"ĠTx\":39850,\"uminium\":39851,\"opa\":39852,\".schedule\":39853,\"smtp\":39854,\"à¸ķ\":39855,\"urry\":39856,\"Ã¼k\":39857,\"goog\":39858,\"_signature\":39859,\".into\":39860,\"ĠSteps\":39861,\"Ġhomeowners\":39862,\"ĠNSURL\":39863,\"ĠPAC\":39864,\"ĠĠĠĠĠĠĠĠĠĠĠĠĊĊ\":39865,\">')Ċ\":39866,\"enh\":39867,\"Ġincap\":39868,\"$MESS\":39869,\"Ġmoins\":39870,\"ĠFi\":39871,\"Ġoffseason\":39872,\"pressions\":39873,\">.</\":39874,\"ĠMarker\":39875,\"ĠonClose\":39876,\"LEVEL\":39877,\"Ġinterfere\":39878,\"ĠColin\":39879,\"ĠResistance\":39880,\"Discount\":39881,\"ĠWebElement\":39882,\"Ġbathrooms\":39883,\"legacy\":39884,\"ĠCapture\":39885,\"Ġarising\":39886,\"Ġ\\\");ĊĊ\":39887,\"ÑĪÐ¸Ð±\":39888,\"ĠInfinity\":39889,\"Advertisements\":39890,\"ĠComing\":39891,\"ĠPROJECT\":39892,\"_PROTOCOL\":39893,\"ĠuseDispatch\":39894,\".channels\":39895,\"ĠCitizens\":39896,\"entre\":39897,\"_mp\":39898,\".Constants\":39899,\"ĠSerialize\":39900,\"_INC\":39901,\"(lua\":39902,\"Ġclash\":39903,\"_without\":39904,\".keySet\":39905,\"Ġreceivers\":39906,\"æĸ¹æ³ķ\":39907,\"(mem\":39908,\"ĠHorizontal\":39909,\"Ġcocktail\":39910,\"Ġchooses\":39911,\".Inner\":39912,\"Ġrelied\":39913,\"ounter\":39914,\"Ġ\\\"^\":39915,\"Ġtenants\":39916,\"\\\"`\":39917,\"_PM\":39918,\"ersed\":39919,\"Ġ}}\\\"></\":39920,\"Ġprovinces\":39921,\"_RAW\":39922,\"\\\\App\":39923,\"Ġprostituer\":39924,\"_gain\":39925,\".tencent\":39926,\"ffects\":39927,\"(pk\":39928,\"sku\":39929,\"Ġusable\":39930,\"ERVED\":39931,\"Ġantenna\":39932,\"hea\":39933,\"plist\":39934,\"_PLUGIN\":39935,\"ÑģÐ»\":39936,\".lookup\":39937,\"á»ģ\":39938,\"Ġenlarg\":39939,\"Ġpiss\":39940,\"Ham\":39941,\"imap\":39942,\"Ġinvalidate\":39943,\"Ġsilk\":39944,\"=\\\"#\\\">Ċ\":39945,\"ĠGrass\":39946,\"ĠGoal\":39947,\"_pdf\":39948,\"Handlers\":39949,\"Ġstacks\":39950,\".getFullYear\":39951,\"=[];Ċ\":39952,\"è½¦\":39953,\",V\":39954,\"(split\":39955,\"ÑĥÐ½Ðº\":39956,\"Ġbakeca\":39957,\"Ġ~/.\":39958,\"pez\":39959,\"tails\":39960,\"ĠGlen\":39961,\"ĠsetImage\":39962,\"ĠComic\":39963,\"BLOCK\":39964,\"ĉThis\":39965,\"oader\":39966,\"Ġcapitalist\":39967,\"_STEP\":39968,\"(Boolean\":39969,\"ĠCorrect\":39970,\"rina\":39971,\"Ġconcaten\":39972,\"å®ŀ\":39973,\"():ĊĊ\":39974,\"Ġunanim\":39975,\"lli\":39976,\"alars\":39977,\"-ne\":39978,\"Ġdivor\":39979,\"ĠKickstarter\":39980,\"]._\":39981,\"<number\":39982,\"/menu\":39983,\"GRAPH\":39984,\"visitor\":39985,\"Ġimproper\":39986,\"_NEXT\":39987,\"Ġbisa\":39988,\"backgroundColor\":39989,\"/input\":39990,\"Ġmoi\":39991,\"Goal\":39992,\"liqu\":39993,\"Ġmisconduct\":39994,\"Ġcomprises\":39995,\"awns\":39996,\"ĠPie\":39997,\"rais\":39998,\"roleum\":39999,\"Ġcurse\":40000,\"yu\":40001,\"_poll\":40002,\".currentUser\":40003,\"ESH\":40004,\"])[\":40005,\"Ġstoryt\":40006,\")?;Ċ\":40007,\"*=\":40008,\"ĠBurg\":40009,\"/layout\":40010,\"_backend\":40011,\";?></\":40012,\"ĠWhatsApp\":40013,\"ĠMountains\":40014,\"visions\":40015,\"fluence\":40016,\".createComponent\":40017,\"ĠPsy\":40018,\"forget\":40019,\"srv\":40020,\"_COMPONENT\":40021,\"ĠNexus\":40022,\"Ġ){\":40023,\"endi\":40024,\"IMUM\":40025,\"ĠGF\":40026,\"ç»Ħ\":40027,\"âĢĶthat\":40028,\"bk\":40029,\"Mozilla\":40030,\"Ġdefenders\":40031,\"-settings\":40032,\"imming\":40033,\"ĠOPT\":40034,\"ĠCW\":40035,\"Ġthats\":40036,\"ĠOpening\":40037,\"Released\":40038,\"npm\":40039,\"Ġhrs\":40040,\"Ġgrouped\":40041,\"/\\\".$\":40042,\"ĠHistorical\":40043,\"($\\\"{\":40044,\"ovic\":40045,\"(sign\":40046,\"ĠPhotography\":40047,\"Ġsignup\":40048,\"_ARCH\":40049,\".testng\":40050,\"/angular\":40051,\"RestController\":40052,\"shit\":40053,\"ulle\":40054,\".pause\":40055,\"([],\":40056,\"(question\":40057,\"ilogy\":40058,\"ĠEug\":40059,\"-local\":40060,\"Ġkvin\":40061,\"Ġreservations\":40062,\"obia\":40063,\"Ġsubsidiary\":40064,\"Ġaccumulated\":40065,\"ĠQVariant\":40066,\"ĠBJP\":40067,\"ĠNorman\":40068,\"ĠIntegration\":40069,\".Variable\":40070,\"(Resource\":40071,\"****************************************\":40072,\"Expose\":40073,\"Ġ'}\":40074,\".COLOR\":40075,\"ĠÑĩÐ¸Ñģ\":40076,\"Ajax\":40077,\"Ġthru\":40078,\"Movies\":40079,\"Ġproposition\":40080,\"/theme\":40081,\"ModelProperty\":40082,\"ĠAws\":40083,\"ĠAndrea\":40084,\"ĠMerge\":40085,\".finish\":40086,\"(required\":40087,\"ĠPrel\":40088,\"eled\":40089,\"æĵįä½ľ\":40090,\".TRA\":40091,\"MAS\":40092,\"Ġrealised\":40093,\"roids\":40094,\"ĉfn\":40095,\"rh\":40096,\".\\\"</\":40097,\"vidia\":40098,\"Ġdepuis\":40099,\"ĠBV\":40100,\"Ln\":40101,\"Ġlust\":40102,\"Asc\":40103,\"ĉĉĉĉĉĉĉĠ\":40104,\"isle\":40105,\"-care\":40106,\"_INV\":40107,\"ĠDrew\":40108,\"Ġwhats\":40109,\"ĠCapacity\":40110,\"Parm\":40111,\"_monitor\":40112,\".student\":40113,\"ĠRNA\":40114,\".endswith\":40115,\"bih\":40116,\"ĠMLB\":40117,\"/project\":40118,\"Ġresting\":40119,\"separator\":40120,\"yd\":40121,\"ertia\":40122,\"Ġmonitored\":40123,\"\\\">*</\":40124,\".FC\":40125,\"ĠNEWS\":40126,\"ĠCalls\":40127,\"Ġadequ\":40128,\"Checking\":40129,\"estimate\":40130,\"Ġrecalls\":40131,\"_frequency\":40132,\"ĠuseRef\":40133,\"ĠGrove\":40134,\"ĠXia\":40135,\"ĠÃŃ\":40136,\"essenger\":40137,\"-cost\":40138,\".fc\":40139,\"ĠKumar\":40140,\".Focus\":40141,\"ellaneous\":40142,\".Alert\":40143,\"eax\":40144,\"Ġorch\":40145,\".pm\":40146,\"Ġlandlord\":40147,\"(pop\":40148,\"_actual\":40149,\"ĠLB\":40150,\"Grand\":40151,\".renderer\":40152,\"Ġlob\":40153,\"customers\":40154,\"Ġcaptures\":40155,\"WINDOW\":40156,\"Ġdoch\":40157,\"Ġapology\":40158,\"ĠJama\":40159,\"@[\":40160,\".take\":40161,\"noop\":40162,\"Ġlum\":40163,\"Ġdifferential\":40164,\"Ġefficacy\":40165,\"ĉIN\":40166,\"_BOX\":40167,\"_sd\":40168,\"_rt\":40169,\"coder\":40170,\"ouncement\":40171,\"hasClass\":40172,\"Ġrisky\":40173,\"ĠEstado\":40174,\"-DD\":40175,\"ĠCarson\":40176,\"Suffix\":40177,\"Ġtoda\":40178,\"ĠTracker\":40179,\"ĠDelegate\":40180,\"`,`\":40181,\"ĠParking\":40182,\"Ġner\":40183,\"azo\":40184,\"ĠFileInputStream\":40185,\"Ġrecount\":40186,\"qi\":40187,\"cken\":40188,\"Ġsocialist\":40189,\"ĠInvoice\":40190,\"ĠÐ¿ÑĢÐ¾\":40191,\"%\\\",\":40192,\"ennen\":40193,\"Ġvivo\":40194,\"Ġorganizational\":40195,\"Ġuncommon\":40196,\"utar\":40197,\"Ġhull\":40198,\"Tuesday\":40199,\"Ġassessments\":40200,\"(application\":40201,\"Ġpremise\":40202,\"StartTime\":40203,\"Ġdk\":40204,\"Ġinterfer\":40205,\"ĠQueensland\":40206,\"Ġcredential\":40207,\"Ġleisure\":40208,\"YZ\":40209,\"ĠCmd\":40210,\"BUS\":40211,\"usan\":40212,\"ĉvec\":40213,\"iological\":40214,\"ĠLots\":40215,\"Ġenlight\":40216,\"Ġfreshman\":40217,\"ĠCOMMAND\":40218,\"ĠActionListener\":40219,\"utm\":40220,\"arius\":40221,\"Twig\":40222,\"Ġswept\":40223,\"-tool\":40224,\"ÄĲ\":40225,\"chapter\":40226,\"-grade\":40227,\"Ġcuriosity\":40228,\"Ġsustainability\":40229,\"ĠMinecraft\":40230,\"wend\":40231,\"IfExists\":40232,\"ĠCultural\":40233,\"ĠSacramento\":40234,\"Layers\":40235,\"Subscriber\":40236,\".Graph\":40237,\"Ġlm\":40238,\"esty\":40239,\"advert\":40240,\"$p\":40241,\"ĠHockey\":40242,\"ĠDET\":40243,\"setTitle\":40244,\"yang\":40245,\"Ġbabe\":40246,\"elsius\":40247,\"Travel\":40248,\"Ġmesmo\":40249,\"(mapStateToProps\":40250,\"_SEL\":40251,\"-pop\":40252,\"Ġemission\":40253,\"âĢĻ.ĊĊ\":40254,\".switch\":40255,\"otions\":40256,\".photo\":40257,\"LV\":40258,\"amodel\":40259,\"Ġwordt\":40260,\"IGGER\":40261,\"ĠTODAY\":40262,\"OLS\":40263,\"_IDENT\":40264,\"Ġcommenting\":40265,\"Datos\":40266,\"Ġhilarious\":40267,\"(any\":40268,\"Ġdamp\":40269,\"-controlled\":40270,\"Ġ\\\"<?\":40271,\"_black\":40272,\"NetBar\":40273,\".setSelected\":40274,\"Css\":40275,\"Ġquart\":40276,\"Ġowning\":40277,\"ĠFIELD\":40278,\".relu\":40279,\"Ġlis\":40280,\"ìļ°\":40281,\".RELATED\":40282,\"Ġlok\":40283,\"ĠFlip\":40284,\"Ġprestigious\":40285,\"Ġdg\":40286,\"ĠInputStreamReader\":40287,\"Ġusu\":40288,\"Ġgir\":40289,\"Ġana\":40290,\"_py\":40291,\"unnel\":40292,\"ĉsystem\":40293,\"Ġcoating\":40294,\"ĠGenre\":40295,\"erro\":40296,\"ĠCLIENT\":40297,\"Ġstretched\":40298,\".HasValue\":40299,\";;;;;;;;\":40300,\"çīĪ\":40301,\"Ġfinals\":40302,\".getChildren\":40303,\"Ġ--}}Ċ\":40304,\"ĠCowboys\":40305,\"ĠEdinburgh\":40306,\"ĠPlaza\":40307,\"aben\":40308,\"Artist\":40309,\"URA\":40310,\"ĠHughes\":40311,\"obbies\":40312,\"_noise\":40313,\".Objects\":40314,\"Expressions\":40315,\"Ġanthrop\":40316,\"'))čĊ\":40317,\").\\\"\":40318,\"criptive\":40319,\"Ġsalmon\":40320,\"Ġwast\":40321,\"rho\":40322,\".tick\":40323,\"Ġexplores\":40324,\"ĠAlgorithm\":40325,\"CharArray\":40326,\"à¸Ħ\":40327,\"_PACKET\":40328,\"JE\":40329,\"\\\"]];Ċ\":40330,\".note\":40331,\"Backing\":40332,\"ĠHolder\":40333,\"reich\":40334,\"ĠZion\":40335,\"/gr\":40336,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":40337,\"Motion\":40338,\"ĠTribune\":40339,\"Ġcritically\":40340,\"ĠCRM\":40341,\"Ġblowing\":40342,\"Ġcommissioner\":40343,\"Joe\":40344,\"ĠTelevision\":40345,\"ĉpre\":40346,\"ĠTRAN\":40347,\"ĠVikings\":40348,\"ĠBET\":40349,\"would\":40350,\".Caption\":40351,\"Ġbacon\":40352,\"hma\":40353,\"merged\":40354,\"Ġsubscriptions\":40355,\"occupied\":40356,\"LiveData\":40357,\"Ġallowance\":40358,\"rigesimal\":40359,\"ddd\":40360,\".logout\":40361,\"ĠTang\":40362,\"Ġwarmth\":40363,\"ModelIndex\":40364,\"ĠPra\":40365,\"Ġscent\":40366,\"Ġhackers\":40367,\"Ġillustrate\":40368,\"Ich\":40369,\"Ġdias\":40370,\"CASE\":40371,\"ĠSci\":40372,\"$url\":40373,\"ĠMODULE\":40374,\"ushort\":40375,\"liers\":40376,\"ĠDevices\":40377,\"minster\":40378,\"uname\":40379,\"Ġunr\":40380,\"Examples\":40381,\"Ġrisen\":40382,\".ai\":40383,\"chrom\":40384,\"_worker\":40385,\"Ġaliases\":40386,\"MouseEvent\":40387,\"Ġsetter\":40388,\"ĠPurple\":40389,\"JoinColumn\":40390,\"=e\":40391,\"THOOK\":40392,\"ĠTow\":40393,\"ĠCrushing\":40394,\"ĠJedi\":40395,\"ĠGriffin\":40396,\"Ġkos\":40397,\"_FS\":40398,\"inges\":40399,\"soles\":40400,\"(names\":40401,\"ĠBid\":40402,\"-powered\":40403,\"Mult\":40404,\"amiliar\":40405,\".cleaned\":40406,\"ĠZimmer\":40407,\"ĉclear\":40408,\"Ġunsupported\":40409,\"Callable\":40410,\"Ġreps\":40411,\"altern\":40412,\"_REPORT\":40413,\".getColumnIndex\":40414,\"_STORE\":40415,\"Ġsucht\":40416,\"subtitle\":40417,\"Ġperd\":40418,\"«ĺ\":40419,\".NOT\":40420,\"}></\":40421,\":d\":40422,\"mdi\":40423,\"bindValue\":40424,\"ĠDecision\":40425,\"ReturnValue\":40426,\",index\":40427,\"xfc\":40428,\"Ġserum\":40429,\"getField\":40430,\"ConnectionString\":40431,\"-object\":40432,\".recv\":40433,\"Ġundergraduate\":40434,\".Infrastructure\":40435,\"ĠKab\":40436,\"Ġadvisory\":40437,\"-tree\":40438,\"Ġmue\":40439,\"inform\":40440,\".embed\":40441,\"ĠerrorCode\":40442,\"micro\":40443,\"Ġsparked\":40444,\"Ġimagery\":40445,\"conc\":40446,\"_missing\":40447,\"Ġsurplus\":40448,\"KS\":40449,\"ĉRTHOOK\":40450,\"Tell\":40451,\"rium\":40452,\"ĠRadius\":40453,\"rika\":40454,\"losion\":40455,\"ĠHern\":40456,\"Gamma\":40457,\"ĠFee\":40458,\"ĠNamed\":40459,\"ĠCanyon\":40460,\"ĠJSONArray\":40461,\"Ġzwei\":40462,\"ĠSSH\":40463,\"Ġservant\":40464,\"coal\":40465,\"Ġdenying\":40466,\"Ġsplits\":40467,\"Incorrect\":40468,\"Ġtox\":40469,\"ĠAnalyst\":40470,\"Ġaccred\":40471,\"uble\":40472,\"Ġwt\":40473,\"ĠTrial\":40474,\".extension\":40475,\"ĠCareer\":40476,\"Ġsecuring\":40477,\"ĠLil\":40478,\"Ġprojections\":40479,\"Ġyeast\":40480,\"Made\":40481,\"Ġfoundations\":40482,\"acific\":40483,\".volume\":40484,\"Ġmirrors\":40485,\"################################################################################\":40486,\"Ġviolate\":40487,\"arsers\":40488,\"Ġsocio\":40489,\"Ġtkinter\":40490,\"ĠLINK\":40491,\".getSize\":40492,\"ĠWhole\":40493,\")viewDidLoad\":40494,\"ĉdone\":40495,\"udeau\":40496,\"\\\\\\\"></\":40497,\"Andrew\":40498,\"erb\":40499,\"ĠfÃ¶\":40500,\".cluster\":40501,\"Ġdiscourse\":40502,\"_DEFIN\":40503,\"Ġpueden\":40504,\"ĠLOW\":40505,\".av\":40506,\"Ġpreca\":40507,\"Ġquo\":40508,\"Ġveloc\":40509,\",''\":40510,\"Ġxyz\":40511,\"ĉpadding\":40512,\"Ġtomatoes\":40513,\"ĠBent\":40514,\"_curr\":40515,\"NSDate\":40516,\"ĠgetCurrent\":40517,\"Ġ[`\":40518,\"Wednesday\":40519,\".Bar\":40520,\"ĠVous\":40521,\"inz\":40522,\"ĠQuinn\":40523,\"excel\":40524,\"dos\":40525,\"Ġoutdated\":40526,\"OUTH\":40527,\"ĠMaker\":40528,\"ependency\":40529,\"Ġdull\":40530,\"ĠWinn\":40531,\"oge\":40532,\"clave\":40533,\"Ġnova\":40534,\"Ġaval\":40535,\"Capt\":40536,\"ĠSpotify\":40537,\"Ġjul\":40538,\")tableView\":40539,\"Ġfilenames\":40540,\"Ġeskort\":40541,\"åĳ¨\":40542,\"Ġskew\":40543,\"terior\":40544,\"Ġfinanc\":40545,\"Ġtabla\":40546,\"ĠUIB\":40547,\"Ġ():\":40548,\"ĠDocker\":40549,\"percentage\":40550,\"Meet\":40551,\"ichi\":40552,\"Ġinterim\":40553,\"Ġ'='\":40554,\".JSONObject\":40555,\"(fid\":40556,\"Ġdownt\":40557,\"Ġtransient\":40558,\"ĠSteph\":40559,\"Ġignorance\":40560,\"ĠCodes\":40561,\"='',\":40562,\"ĠICE\":40563,\"Ġtranqu\":40564,\"ĠExtended\":40565,\"Ġmund\":40566,\"ĠHOME\":40567,\"Ġkilometers\":40568,\"Ġimagen\":40569,\"oux\":40570,\"(sz\":40571,\"Young\":40572,\"uffed\":40573,\"ĠWake\":40574,\"Ġaide\":40575,\"PROC\":40576,\"ĠRat\":40577,\"ĠLith\":40578,\"bart\":40579,\"ĠArrange\":40580,\"prompt\":40581,\"Ð£\":40582,\"(ct\":40583,\"ĠInterval\":40584,\"dept\":40585,\"Daniel\":40586,\"Ġfills\":40587,\".tensor\":40588,\"(trim\":40589,\"Ġjealous\":40590,\"Feb\":40591,\"\\\\Common\":40592,\"Ġamendments\":40593,\"_operator\":40594,\"_customize\":40595,\"Ġ]]\":40596,\"Ġbn\":40597,\"Ġdisappointment\":40598,\"Ġmillenn\":40599,\".when\":40600,\"Ġobey\":40601,\"Ġoffenders\":40602,\"Wild\":40603,\"ĠcellFor\":40604,\"Ġapparatus\":40605,\".after\":40606,\"ĠEPS\":40607,\"Ġadorable\":40608,\"operand\":40609,\"(listener\":40610,\"veal\":40611,\"Ġ)(\":40612,\"Ġcardiovascular\":40613,\"uplicates\":40614,\"ristol\":40615,\"Ġrefuses\":40616,\"(QWidget\":40617,\"Ġelemento\":40618,\"NumberOf\":40619,\".delay\":40620,\".groups\":40621,\"\\\">'+\":40622,\"åĿĢ\":40623,\"acency\":40624,\"(URL\":40625,\"_half\":40626,\"=l\":40627,\"ĠlistView\":40628,\"(section\":40629,\".toArray\":40630,\"+/\":40631,\"ĠRodriguez\":40632,\"istream\":40633,\"Ġeligibility\":40634,\"::-\":40635,\".newInstance\":40636,\"PB\":40637,\"ĠAssets\":40638,\"ĠComposite\":40639,\"ĠLabs\":40640,\"ĠHamas\":40641,\"++);Ċ\":40642,\"Ġblk\":40643,\"ĠNeo\":40644,\"Luc\":40645,\"@login\":40646,\"Ġunaware\":40647,\".met\":40648,\"_RELEASE\":40649,\"(ST\":40650,\"AMIL\":40651,\"rike\":40652,\"Ġ(){Ċ\":40653,\"(sprintf\":40654,\"ĠAccounts\":40655,\"ĠVIEW\":40656,\"ĠAj\":40657,\"ãĤ°\":40658,\"Ġwhisk\":40659,\"Ġidi\":40660,\"Ġrode\":40661,\"Ġihn\":40662,\"ĠElementary\":40663,\"Qty\":40664,\"Ġintriguing\":40665,\"Ġå¤\":40666,\"Jobs\":40667,\"ĉoffset\":40668,\"ĠAhmed\":40669,\"ĠTaliban\":40670,\"Ġèİ·åıĸ\":40671,\"Ġinjected\":40672,\".Authentication\":40673,\"_linear\":40674,\".Decimal\":40675,\"Ġapples\":40676,\"Ġshareholders\":40677,\"Ġbaked\":40678,\".diff\":40679,\"ĠEddie\":40680,\"okers\":40681,\"Ġconfronted\":40682,\"voices\":40683,\"Ġtus\":40684,\"ĠSpin\":40685,\"NODE\":40686,\"_Un\":40687,\"CTX\":40688,\"/google\":40689,\"Temperature\":40690,\"Ġ'').\":40691,\"Ġmagnificent\":40692,\"ĠstartIndex\":40693,\"sembles\":40694,\"Anyone\":40695,\"zk\":40696,\"ehen\":40697,\"ĠDame\":40698,\".strict\":40699,\"Ġreplaces\":40700,\"Ġlineback\":40701,\"Ġpushes\":40702,\"Ġcheek\":40703,\"ĠShi\":40704,\"_BYTES\":40705,\"REA\":40706,\"áº£n\":40707,\"_CONNECTION\":40708,\"Gateway\":40709,\"ĠTravis\":40710,\"ĠAX\":40711,\"ĠBasically\":40712,\"ĠUpgrade\":40713,\"àª\":40714,\"themes\":40715,\"ermo\":40716,\"kor\":40717,\"Female\":40718,\"_attach\":40719,\"ĠìĤ¬ìļ©\":40720,\"Ġpoz\":40721,\"==============Ċ\":40722,\"(symbol\":40723,\"ĠSector\":40724,\"__)ĊĊ\":40725,\"_padding\":40726,\"ï¼ļ\\\"\":40727,\"Ġfabs\":40728,\"Ġranged\":40729,\"setName\":40730,\"Ġperror\":40731,\"âĹ\":40732,\"ĠFileReader\":40733,\"Ġfulfilled\":40734,\"_Current\":40735,\"Ġdominate\":40736,\"Ġsmugg\":40737,\"PostMapping\":40738,\"_force\":40739,\"Ġbloc\":40740,\"ĠGiant\":40741,\"(video\":40742,\"ĠCU\":40743,\"SystemService\":40744,\"Ġelf\":40745,\"Ġkontakt\":40746,\"ëª\":40747,\"kees\":40748,\"gtk\":40749,\"ĠparamInt\":40750,\"Ġmarkup\":40751,\"uales\":40752,\"Ġaccounted\":40753,\"Ġgangbang\":40754,\"RYPT\":40755,\"ĠWrong\":40756,\"Ġcredited\":40757,\"ĠMESSAGE\":40758,\"Ġflaws\":40759,\"Ġbbw\":40760,\"Ġmetabolic\":40761,\"ĠOEM\":40762,\"/event\":40763,\"(Collectors\":40764,\"monton\":40765,\"appear\":40766,\"Ġopted\":40767,\"Ġcheat\":40768,\"Ġdav\":40769,\"ĠProceed\":40770,\"Ġê¸\":40771,\"anked\":40772,\"Ð¸Ð·\":40773,\"ansk\":40774,\"ĠHang\":40775,\"ĠCler\":40776,\"Ġdisgu\":40777,\"Ġcmap\":40778,\".cljs\":40779,\"Ġaument\":40780,\"lez\":40781,\"ĠJoined\":40782,\"_received\":40783,\"Ġaerial\":40784,\"otel\":40785,\"Ġgreet\":40786,\"\\\"s\":40787,\"ĠGenesis\":40788,\"ĠCalif\":40789,\"panion\":40790,\"Ġtailored\":40791,\"mapping\":40792,\"andExpect\":40793,\".track\":40794,\"atomy\":40795,\"ĠOw\":40796,\"ullah\":40797,\".Yes\":40798,\"ĠSimpleName\":40799,\"dbh\":40800,\"'en\":40801,\"Ġnonsense\":40802,\"Ġphilosophical\":40803,\"(getContext\":40804,\"Ġisso\":40805,\"ĠACE\":40806,\"startDate\":40807,\"ĠbÄĻd\":40808,\"ĠAUTHOR\":40809,\"ĠGlobe\":40810,\"Ġinsects\":40811,\"_Al\":40812,\"ushing\":40813,\"è®°\":40814,\"/Home\":40815,\"ĠLocalDate\":40816,\"needed\":40817,\"hesive\":40818,\"Ġillusion\":40819,\"äºĮ\":40820,\"Ġtrat\":40821,\"xo\":40822,\"/detail\":40823,\"_MATCH\":40824,\"Ġbroadband\":40825,\"Ġwal\":40826,\"ĠIllegalStateException\":40827,\"IRECTION\":40828,\"Ġnortheast\":40829,\"esium\":40830,\"ĠCliente\":40831,\"ulance\":40832,\"nty\":40833,\"Ġtecn\":40834,\"Devices\":40835,\"Ġgrains\":40836,\"ĠOg\":40837,\"ĠSEL\":40838,\"udiant\":40839,\"Ġ++;Ċ\":40840,\"Ġexplanations\":40841,\"occo\":40842,\"Ġdiets\":40843,\"Ġcohort\":40844,\"(controller\":40845,\".Iterator\":40846,\"-rich\":40847,\"rocess\":40848,\"GD\":40849,\"Ġcarbohydr\":40850,\"Ġfried\":40851,\"ĠEmployment\":40852,\"ìŀ¥\":40853,\"ĠLeonard\":40854,\"_${\":40855,\"quares\":40856,\"Ġcompanions\":40857,\"Ġparis\":40858,\"Ġstimulation\":40859,\"ĠZoo\":40860,\"Ġrelevance\":40861,\"ĠColour\":40862,\"Ġspear\":40863,\"otional\":40864,\"ĠLite\":40865,\"ĠKosten\":40866,\"ĠÃ³\":40867,\"_attachment\":40868,\"orphic\":40869,\"Ġdamit\":40870,\"Ġdlg\":40871,\"Ġthrive\":40872,\"CHANGE\":40873,\"ĠApparently\":40874,\"Ġatual\":40875,\"Ġrooted\":40876,\"(images\":40877,\"awi\":40878,\"ariat\":40879,\"Ġcherry\":40880,\"STATIC\":40881,\"mnt\":40882,\"ĠUserId\":40883,\"illet\":40884,\"ĠHispanic\":40885,\"Ġnak\":40886,\"Ġcentro\":40887,\"Ġdims\":40888,\"_initialize\":40889,\"Ä±k\":40890,\"ĠCenters\":40891,\"REN\":40892,\"Ġevolutionary\":40893,\"ĠTopics\":40894,\"_damage\":40895,\"emer\":40896,\"Ġrund\":40897,\"Ġpunished\":40898,\"Ġcubic\":40899,\"fair\":40900,\"[];ĊĊ\":40901,\"Ġinstantiate\":40902,\"Ġoversee\":40903,\"-delete\":40904,\"unteer\":40905,\"startTime\":40906,\"ĠPipeline\":40907,\"_GAME\":40908,\"ĠCir\":40909,\"ĉNull\":40910,\".Formatting\":40911,\"ucumber\":40912,\"ĠRide\":40913,\"Ġzoo\":40914,\"Ġchecker\":40915,\"åĲĮ\":40916,\"=C\":40917,\"Ġgrit\":40918,\"\\\");//\":40919,\"_xy\":40920,\"ĠDeclaration\":40921,\"Ġcallable\":40922,\"Foo\":40923,\"ĠListItem\":40924,\"Ġinaccur\":40925,\"mlin\":40926,\"ĉData\":40927,\"Ġevolving\":40928,\"awan\":40929,\"Ġcafe\":40930,\"folk\":40931,\"_IDX\":40932,\"ĠAnything\":40933,\"ĠPalestine\":40934,\"ĠGridView\":40935,\"Ġcolony\":40936,\"ĠGermans\":40937,\"(+\":40938,\".pid\":40939,\".jsx\":40940,\"ĠSuperior\":40941,\"Christian\":40942,\"ĠLect\":40943,\"ĉGame\":40944,\"Ġinstrumental\":40945,\"Animations\":40946,\"Ð´Ð°Ð»\":40947,\"ĠMoses\":40948,\"ĉĉčĊĉĉčĊ\":40949,\"zs\":40950,\"kte\":40951,\"ä¸ļ\":40952,\"_DIST\":40953,\"bitmap\":40954,\"dB\":40955,\"Ġpersistence\":40956,\"ÑĢÐ¾Ñģ\":40957,\"$l\":40958,\"Bron\":40959,\"Ġ{|\":40960,\"_chart\":40961,\"ĠConsum\":40962,\"Ġhemp\":40963,\"Ġ\\\"))Ċ\":40964,\"Ġattackers\":40965,\"Ġknowledgeable\":40966,\"Ġcet\":40967,\"Ġviruses\":40968,\"'I\":40969,\"Ġpitcher\":40970,\"Ġsweeping\":40971,\"=list\":40972,\"aptops\":40973,\".depth\":40974,\"Ġinstructed\":40975,\"ĠRus\":40976,\"benhavn\":40977,\"ĠÐ¸Ð½\":40978,\"Sports\":40979,\"Ġonset\":40980,\"æĿĥ\":40981,\".RED\":40982,\"_si\":40983,\"ĠPST\":40984,\".onChange\":40985,\">tag\":40986,\"ĠRoh\":40987,\"_character\":40988,\"ĠLaws\":40989,\"ĠBachelor\":40990,\"_swap\":40991,\".reactivex\":40992,\"Ġrewarding\":40993,\"Medium\":40994,\"-[\":40995,\"ĠRecently\":40996,\"Joint\":40997,\"partition\":40998,\"ĠMinutes\":40999,\"Ġindo\":41000,\"Ġabsorbed\":41001,\"ĠGN\":41002,\"_IND\":41003,\"Ġsaber\":41004,\"Spawn\":41005,\"outputs\":41006,\"ĠJeffrey\":41007,\"Ġmedieval\":41008,\"hed\":41009,\"Guide\":41010,\"Ġpsycho\":41011,\"Ġglam\":41012,\"Elim\":41013,\"Ã¤dchen\":41014,\"_plain\":41015,\"ĠSau\":41016,\"-four\":41017,\"Ġanalyzing\":41018,\"QUERY\":41019,\"Ġtomato\":41020,\"_buttons\":41021,\"VEN\":41022,\".setStatus\":41023,\".Url\":41024,\"+ĊĊ\":41025,\"Ġcomplaining\":41026,\"degree\":41027,\"confirmed\":41028,\"Ġsubt\":41029,\"parsed\":41030,\"Ġtorque\":41031,\"Ġtroubled\":41032,\"ĠTARGET\":41033,\"Ġtrademarks\":41034,\"ĠCoordinate\":41035,\"ĠViv\":41036,\"Ġ//}ĊĊ\":41037,\"ĠaprÃ¨s\":41038,\".getPosition\":41039,\"(KeyCode\":41040,\"ĠSilva\":41041,\"Ġmeteor\":41042,\"Ġendorsement\":41043,\"Overview\":41044,\"ĠPoss\":41045,\".Inject\":41046,\"Ġevenly\":41047,\"Ġvisualization\":41048,\"Ġwchar\":41049,\"ĠHDMI\":41050,\"Ġfunct\":41051,\"ickname\":41052,\"','','\":41053,\"Ġforwards\":41054,\"ManagedObject\":41055,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":41056,\"ĉserver\":41057,\"ĠOutlook\":41058,\"ĠChronicle\":41059,\"Ġdubbed\":41060,\"Ġdok\":41061,\"ĠWear\":41062,\".AL\":41063,\"paren\":41064,\".Interface\":41065,\"Interfaces\":41066,\".cod\":41067,\"Ġdib\":41068,\".Globalization\":41069,\"ĠAcademic\":41070,\"Ġassms\":41071,\"Autom\":41072,\"Ġlw\":41073,\"ĠNW\":41074,\"Ġ&&čĊ\":41075,\"Ġproblema\":41076,\"ĠManufacturing\":41077,\"limits\":41078,\"-mobile\":41079,\"Ġfilme\":41080,\"/map\":41081,\"Ġdoit\":41082,\"ĠInk\":41083,\"Ġsued\":41084,\".arr\":41085,\"Ġundermin\":41086,\"ĠProc\":41087,\"crollView\":41088,\"__$\":41089,\"Ġsidewalk\":41090,\"(that\":41091,\"à¸·\":41092,\"[q\":41093,\"grammar\":41094,\"ĠtÃ«\":41095,\"quito\":41096,\"Ġspiral\":41097,\"extended\":41098,\"Ġfocal\":41099,\"Ġdigging\":41100,\"pas\":41101,\"ĠTall\":41102,\".proxy\":41103,\"itures\":41104,\"TRACT\":41105,\"ĠRealm\":41106,\"Ġfeder\":41107,\"Ġoriented\":41108,\"ĠAlternative\":41109,\"Ġowe\":41110,\"Ġsourced\":41111,\"inker\":41112,\".det\":41113,\"Sep\":41114,\"ĠQui\":41115,\"ĠPalmer\":41116,\"(_,\":41117,\"samples\":41118,\"oyer\":41119,\"ullan\":41120,\"quez\":41121,\"Edges\":41122,\"Ġshout\":41123,\"ĠAchie\":41124,\"Ġhaar\":41125,\"_Construct\":41126,\"Ġpremature\":41127,\"Ġrevert\":41128,\"').Ċ\":41129,\"Ġschn\":41130,\"filtered\":41131,\"nullptr\":41132,\"Saved\":41133,\"itecture\":41134,\"CLA\":41135,\"Ġvl\":41136,\"stell\":41137,\"ĉMe\":41138,\"ĠLip\":41139,\"national\":41140,\"Ġwholly\":41141,\"Ġsprings\":41142,\".Timer\":41143,\"ĉsrc\":41144,\"elsen\":41145,\"åħ¶\":41146,\"Ġcommunicating\":41147,\"ĠQuiz\":41148,\"Ġteng\":41149,\"Ġgez\":41150,\"ĠOutside\":41151,\".Sign\":41152,\"(cs\":41153,\"Ġdisputes\":41154,\"ĠWeiss\":41155,\"annes\":41156,\">No\":41157,\"ĠBach\":41158,\".removeAll\":41159,\"refer\":41160,\"/dashboard\":41161,\"ĠAjax\":41162,\"IndexChanged\":41163,\"ĠWeak\":41164,\"'\\\"Ċ\":41165,\"Ġsights\":41166,\"accessToken\":41167,\"ĠJoi\":41168,\"(domain\":41169,\"ĉcv\":41170,\"Ġcontinuation\":41171,\"Ġplum\":41172,\"adir\":41173,\".setMessage\":41174,\"Ġï¼Į\":41175,\"Ġswallow\":41176,\"ĠLamp\":41177,\"Ġqw\":41178,\"Ġuu\":41179,\"Coin\":41180,\"ubic\":41181,\"ĠDeals\":41182,\"race\":41183,\"Ġdictator\":41184,\"Ġmeme\":41185,\"turned\":41186,\"ĠJulie\":41187,\".gridColumn\":41188,\"Ġpuppy\":41189,\"Ġpam\":41190,\"Ġ){čĊ\":41191,\"Ġinviting\":41192,\"Ġfrench\":41193,\"vim\":41194,\"Ġwrapping\":41195,\"Ġ#-}Ċ\":41196,\"([-\":41197,\"Early\":41198,\"Ġshiny\":41199,\".faces\":41200,\"Ġrebell\":41201,\"abcdef\":41202,\"Ã¤lt\":41203,\"Ġestimation\":41204,\"phys\":41205,\"losures\":41206,\"_REL\":41207,\"Ġexclusion\":41208,\"ĠSkype\":41209,\"weise\":41210,\"-stop\":41211,\"nothing\":41212,\"ĠEgg\":41213,\"isors\":41214,\"Richard\":41215,\"Ġcounseling\":41216,\"Ġcommem\":41217,\"ĠQMessageBox\":41218,\"ĠSynd\":41219,\"ĠFrost\":41220,\"ĠCompetition\":41221,\"ĠAwake\":41222,\"Ġted\":41223,\"iciones\":41224,\"ĠDevComponents\":41225,\"VERTISEMENT\":41226,\"otti\":41227,\".runner\":41228,\"Ġuniquely\":41229,\".flag\":41230,\"ĉrs\":41231,\"_generic\":41232,\"Ġ```Ċ\":41233,\"ACHINE\":41234,\"Ġmein\":41235,\"(Application\":41236,\"(br\":41237,\"Ġratios\":41238,\":,\":41239,\"ĠXCTest\":41240,\"ustainable\":41241,\"-www\":41242,\"itles\":41243,\"_TEMP\":41244,\"Ġsyst\":41245,\"umericUpDown\":41246,\"ĉassertTrue\":41247,\"Ġwf\":41248,\".peek\":41249,\"ĠBulg\":41250,\"Ġterrifying\":41251,\".MODE\":41252,\"ĠGW\":41253,\"Ã¡r\":41254,\"Ġfic\":41255,\"Ġcommitments\":41256,\"-tech\":41257,\"ĠLiquid\":41258,\"opez\":41259,\"zheimer\":41260,\"aÃ±a\":41261,\"-media\":41262,\"(animated\":41263,\"_goal\":41264,\"Ġgum\":41265,\"ystone\":41266,\".SET\":41267,\"ĠWend\":41268,\"setCellValue\":41269,\"Ġmsgs\":41270,\"cash\":41271,\"ALLOC\":41272,\"/aws\":41273,\"Ġmicrowave\":41274,\".Pointer\":41275,\"ĉConsole\":41276,\"_sorted\":41277,\"ĠFilip\":41278,\"Prod\":41279,\"Ġ//!<\":41280,\"ingroup\":41281,\"Ġks\":41282,\"_TRI\":41283,\"Ġteaspoon\":41284,\"ĠATT\":41285,\"Ġrecovering\":41286,\"ĠGLOBAL\":41287,\".Par\":41288,\"Ġ/>;Ċ\":41289,\"Ġmarble\":41290,\"ulators\":41291,\"ĠCycle\":41292,\"Ġherbs\":41293,\"_metric\":41294,\")!\":41295,\"_CLOCK\":41296,\"_Button\":41297,\"Harry\":41298,\"è¿Ľ\":41299,\"Ġstrains\":41300,\"ĠAppBar\":41301,\"ĠChan\":41302,\"/video\":41303,\"Ġbam\":41304,\".Progress\":41305,\"$f\":41306,\"lemen\":41307,\"Ġirregular\":41308,\"ĠDuncan\":41309,\"ĠMint\":41310,\"-video\":41311,\"à¦¾\":41312,\"Ã³wn\":41313,\"ĠEMPTY\":41314,\"Ġstacked\":41315,\"ĠHA\":41316,\"_cut\":41317,\"Ġwherein\":41318,\"ĠWays\":41319,\"(counter\":41320,\"è¯ķ\":41321,\"FormGroup\":41322,\"Ġblew\":41323,\"courses\":41324,\"Ġproductos\":41325,\"rys\":41326,\"ĠRestr\":41327,\"Ġstyling\":41328,\">s\":41329,\"Ġpiv\":41330,\"Ġitertools\":41331,\"getRepository\":41332,\"ĠIk\":41333,\"_devices\":41334,\"layui\":41335,\"Ġhalfway\":41336,\"ĠfranÃ§\":41337,\"Ġtuning\":41338,\"OA\":41339,\"_Node\":41340,\"arde\":41341,\"Ġfierce\":41342,\"licted\":41343,\"#čĊ\":41344,\"Ġbreakthrough\":41345,\"ĠErik\":41346,\"Ġbride\":41347,\"Ġ.\\\"\":41348,\"culus\":41349,\"inside\":41350,\"ĠIndianapolis\":41351,\"ĠEE\":41352,\"Ġyog\":41353,\"urret\":41354,\".fs\":41355,\".grad\":41356,\"_cards\":41357,\"_accuracy\":41358,\"_epi\":41359,\"queda\":41360,\"/org\":41361,\"éªĮ\":41362,\"Ġcompte\":41363,\"))[\":41364,\"Outside\":41365,\"Greater\":41366,\"ĠRenderer\":41367,\".actor\":41368,\"Accounts\":41369,\"Idle\":41370,\"_hours\":41371,\"erner\":41372,\"Joined\":41373,\"Ġmenj\":41374,\"requires\":41375,\"ĠOPER\":41376,\".removeChild\":41377,\"ĉsp\":41378,\"Ġesse\":41379,\"rift\":41380,\"xFE\":41381,\"ĠShakespeare\":41382,\"____________\":41383,\"Ġbudgets\":41384,\"ModelState\":41385,\"fillable\":41386,\"-component\":41387,\"ocos\":41388,\"ĠBUTTON\":41389,\"/io\":41390,\",out\":41391,\"sms\":41392,\"Thomas\":41393,\"ĠArmed\":41394,\"resume\":41395,\"Ġrotating\":41396,\"ĠVault\":41397,\"Ġseus\":41398,\".(*\":41399,\"Ġamino\":41400,\"Ġ[]);ĊĊ\":41401,\"Ġprovoc\":41402,\"nox\":41403,\".GetEnumerator\":41404,\"=======Ċ\":41405,\"æĸĻ\":41406,\"_scroll\":41407,\"Ġfilmed\":41408,\"ĠSoci\":41409,\"gap\":41410,\"gro\":41411,\"Vote\":41412,\"\\\"But\":41413,\"_RC\":41414,\"Animal\":41415,\"ÂĢ\":41416,\"ibile\":41417,\"Ġawaken\":41418,\"orest\":41419,\"inja\":41420,\"ĠIvan\":41421,\"(Command\":41422,\"Ġ*****\":41423,\"Î·\":41424,\"Ġkvinder\":41425,\"/helpers\":41426,\"_cases\":41427,\"tg\":41428,\"ìĦ¸\":41429,\"Registered\":41430,\"ĉpass\":41431,\"_digits\":41432,\"Ġcontour\":41433,\"Ġinfants\":41434,\"Ġjustification\":41435,\"ĠFortunately\":41436,\"Contr\":41437,\"ĠonCreateView\":41438,\"_SAMPLE\":41439,\"ĠallowNull\":41440,\"Ġnud\":41441,\"Ġfetched\":41442,\"_equ\":41443,\"ĠUnable\":41444,\"=\\\\\\\"\\\"\":41445,\">{Ċ\":41446,\"Ġcommittees\":41447,\"istema\":41448,\"+\\\".\":41449,\"ÃŃan\":41450,\"mant\":41451,\"Ġsoutheast\":41452,\"ï¼ĮĊ\":41453,\"dialogs\":41454,\"PROJECT\":41455,\"charger\":41456,\"-port\":41457,\"(uuid\":41458,\".export\":41459,\"Six\":41460,\"ĠRP\":41461,\"Prem\":41462,\"Ġconscience\":41463,\"ĠmarginRight\":41464,\"_distribution\":41465,\"yaml\":41466,\"resizing\":41467,\"Dock\":41468,\"ĠLocations\":41469,\"GY\":41470,\"Seed\":41471,\"BUFFER\":41472,\"ossip\":41473,\"ullen\":41474,\"Things\":41475,\"-self\":41476,\".poll\":41477,\"PLAYER\":41478,\"Ġå®\":41479,\"GROUP\":41480,\"ĠAway\":41481,\"Ġgospel\":41482,\"xfd\":41483,\"Mary\":41484,\"ĠPortable\":41485,\"TURE\":41486,\"Ġutilis\":41487,\"Ġseit\":41488,\"Ġstrand\":41489,\"Ġtransc\":41490,\"Ġ(^\":41491,\"ĠAlfred\":41492,\".mem\":41493,\".circle\":41494,\"Ġ~/\":41495,\"forcing\":41496,\"Ġriot\":41497,\"prox\":41498,\"THON\":41499,\"izaciÃ³n\":41500,\"ĠNI\":41501,\"rost\":41502,\"Ġdispro\":41503,\"_instances\":41504,\"ï¼ĮâĢľ\":41505,\"ographer\":41506,\"endas\":41507,\"ĠIsaac\":41508,\"ĠPine\":41509,\"/dis\":41510,\"ĠcolorWith\":41511,\"iterate\":41512,\"_stride\":41513,\"Ġpunto\":41514,\".EventArgs\":41515,\"(center\":41516,\"Ġneighboring\":41517,\"ĠPrison\":41518,\"ĠMessenger\":41519,\"Ġepidemic\":41520,\"dao\":41521,\"_complex\":41522,\"Ġgravel\":41523,\"_DIP\":41524,\"Ã©ment\":41525,\"ĠAri\":41526,\"_bitmap\":41527,\".quit\":41528,\"(valid\":41529,\"Ġpend\":41530,\"Ġrespiratory\":41531,\"Ġrebound\":41532,\"DefaultValue\":41533,\"ãĥŃ\":41534,\"Ġcommits\":41535,\".tests\":41536,\"_fr\":41537,\"itet\":41538,\".sf\":41539,\"Ġspacecraft\":41540,\"critical\":41541,\"Ġdepressed\":41542,\"ĠAnyObject\":41543,\"Ġunb\":41544,\"Ġdiscern\":41545,\"(mysql\":41546,\"Latin\":41547,\"ĠBog\":41548,\"ĠWildlife\":41549,\"ToFile\":41550,\"ioxid\":41551,\"@RestController\":41552,\"Ġ\\\"$(\":41553,\"Ġ<<\\\"\":41554,\"Ġdefects\":41555,\"Ġdatum\":41556,\"hin\":41557,\"Ġrealizar\":41558,\"anyahu\":41559,\"ĠSig\":41560,\"@Data\":41561,\"adaptive\":41562,\"ĠCatherine\":41563,\".cr\":41564,\"ĠCOOKIE\":41565,\"Ġpictured\":41566,\"ĠFighter\":41567,\"Queryable\":41568,\"ĠAnyway\":41569,\"ĠGLFW\":41570,\"_namespace\":41571,\"_ft\":41572,\"Ġ])\":41573,\"Organization\":41574,\"Ġconstitutes\":41575,\"Ġquand\":41576,\"(chunk\":41577,\"\\\"/>čĊ\":41578,\"ĠLakes\":41579,\"mainwindow\":41580,\"Carthy\":41581,\"spin\":41582,\"(csv\":41583,\":red\":41584,\"-commerce\":41585,\"à¸¹\":41586,\"Ġdiscovering\":41587,\"Ġeco\":41588,\"_fac\":41589,\"inceton\":41590,\"ĠGreens\":41591,\"jwt\":41592,\"Øµ\":41593,\"ĠBroncos\":41594,\"ĠGoods\":41595,\"(GTK\":41596,\"ĠreturnValue\":41597,\"Ġsiempre\":41598,\"Ġneutr\":41599,\"went\":41600,\"ĠNatal\":41601,\"Ġenthusiastic\":41602,\"á»į\":41603,\"FN\":41604,\"/database\":41605,\"Catalog\":41606,\"Ġbrun\":41607,\"ĠKash\":41608,\"_Pl\":41609,\"iscrim\":41610,\",width\":41611,\"Ġinmates\":41612,\"Assignment\":41613,\"ĠHaven\":41614,\"Ġplayground\":41615,\"exam\":41616,\"@Controller\":41617,\"uliar\":41618,\".getParent\":41619,\"Ġ\\\";ĊĊ\":41620,\":size\":41621,\"issors\":41622,\"Ġfis\":41623,\"Ġalc\":41624,\"ensation\":41625,\"ĠNixon\":41626,\"Ġmighty\":41627,\"-str\":41628,\"_special\":41629,\"_ADC\":41630,\"ĠTwig\":41631,\"umbling\":41632,\"-address\":41633,\"Ġheroin\":41634,\"YTE\":41635,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":41636,\"Friend\":41637,\"Ġave\":41638,\"ĠPNG\":41639,\"ĠKurdish\":41640,\"DataSetChanged\":41641,\"Ġblades\":41642,\"bral\":41643,\"Steam\":41644,\"Ġsigu\":41645,\"IRTUAL\":41646,\"acos\":41647,\"UDP\":41648,\"(database\":41649,\"hec\":41650,\"ĠStrings\":41651,\"_scalar\":41652,\"ĉdesc\":41653,\"ĠTLS\":41654,\";\\\"Ċ\":41655,\"ĠCorbyn\":41656,\"SimpleName\":41657,\"uell\":41658,\"ĠEntre\":41659,\"ellites\":41660,\"-place\":41661,\"Ġfrankly\":41662,\"ĠErf\":41663,\"CEL\":41664,\"ĠpaÃŃs\":41665,\"Ġhedge\":41666,\"Ġlatent\":41667,\"ĠIRQ\":41668,\"ĠHerald\":41669,\"ĠPrec\":41670,\"ë³´\":41671,\".TEXT\":41672,\"Salary\":41673,\"Ġautumn\":41674,\"Ġtravail\":41675,\".Sum\":41676,\"Ġcared\":41677,\"Mor\":41678,\"Ġintuitive\":41679,\"Ġjournals\":41680,\"_IT\":41681,\"ĠTrou\":41682,\"ä¼ł\":41683,\"HasColumnName\":41684,\"Composite\":41685,\"Ġspice\":41686,\"_disk\":41687,\"_CODES\":41688,\"ĠIntroduced\":41689,\"iona\":41690,\"Ġnuestra\":41691,\"oct\":41692,\"ĠĠĠĠĊĠĠĠĠĊĠĠĠĠĊ\":41693,\"(parameter\":41694,\"Ġstudios\":41695,\"ĠprojectId\":41696,\"Ġbdsm\":41697,\".SqlClient\":41698,\"imizer\":41699,\"ĠCARD\":41700,\"+t\":41701,\"aan\":41702,\".sol\":41703,\"_Adjust\":41704,\"Ġrighteous\":41705,\"ĠLogging\":41706,\".filters\":41707,\"_TAB\":41708,\"ĉsys\":41709,\"rophic\":41710,\"otherapy\":41711,\"ĠBrowse\":41712,\"keyboard\":41713,\"RON\":41714,\"+\\\\\":41715,\"ropped\":41716,\"Ġextensively\":41717,\"fk\":41718,\"Ġlime\":41719,\"years\":41720,\"Exc\":41721,\"Ġsph\":41722,\"Ġcheating\":41723,\"andro\":41724,\"ÃŃo\":41725,\"Ġprince\":41726,\"oire\":41727,\"ĠDestination\":41728,\"ĠConverts\":41729,\"Ġupstream\":41730,\"oled\":41731,\"Ġservants\":41732,\"Ġsemantic\":41733,\"Ġcrunch\":41734,\"Ġeventual\":41735,\"runner\":41736,\"/error\":41737,\"Spin\":41738,\"Ġsecretly\":41739,\"Ġassemble\":41740,\".Person\":41741,\"enderror\":41742,\"_<\":41743,\"Ġpendant\":41744,\"Sleep\":41745,\"ĠChemistry\":41746,\"Ġbosses\":41747,\"lk\":41748,\"))),Ċ\":41749,\"Blockly\":41750,\"DEVICE\":41751,\"Ġreflecting\":41752,\"Ġample\":41753,\"Milliseconds\":41754,\"ĠPresidential\":41755,\"Ġusuarios\":41756,\"ĠNZ\":41757,\"ĠSalary\":41758,\"ĠAmanda\":41759,\"_np\":41760,\"jury\":41761,\"ĠkÃ¶n\":41762,\"Ġtherapist\":41763,\"Ġhomosexual\":41764,\"ĠDrake\":41765,\"-window\":41766,\"ĠLocated\":41767,\".Driver\":41768,\"ĠVIDEO\":41769,\"Ġmerchants\":41770,\"ĠChest\":41771,\"-lock\":41772,\"/php\":41773,\"Ġmilano\":41774,\"_STYLE\":41775,\"arger\":41776,\"idea\":41777,\"GUID\":41778,\"advanced\":41779,\"meal\":41780,\"OptionsItemSelected\":41781,\"='%\":41782,\"ĠCham\":41783,\":data\":41784,\"(stat\":41785,\"WillAppear\":41786,\"Ġinformal\":41787,\"aji\":41788,\"Ġreproductive\":41789,\"ĠCAS\":41790,\"ãģ£\":41791,\"FUNC\":41792,\"ĠRuth\":41793,\")+(\":41794,\"CONST\":41795,\"ĠFans\":41796,\"ĠgroupId\":41797,\"xffffffff\":41798,\"Ġsampler\":41799,\"Ġ}}\\\">\":41800,\".the\":41801,\"Ġhollow\":41802,\"WAY\":41803,\"ĠFaculty\":41804,\"AttributedString\":41805,\"ĠLooks\":41806,\"ĠRex\":41807,\"jk\":41808,\"ĠMIL\":41809,\"Ġbard\":41810,\".Long\":41811,\"Ġlivest\":41812,\"Ġskal\":41813,\"icism\":41814,\"MAIN\":41815,\"Ġmucho\":41816,\"BODY\":41817,\"Ġese\":41818,\"ĉuse\":41819,\"Foot\":41820,\".SQLException\":41821,\"Ġinheritance\":41822,\"received\":41823,\"Ġputas\":41824,\"edis\":41825,\"alsa\":41826,\"ĠErrorMessage\":41827,\"Booking\":41828,\"Ġtract\":41829,\"acz\":41830,\"ĠCant\":41831,\"_regex\":41832,\"Ġideological\":41833,\"Ġjihad\":41834,\"hos\":41835,\"/sys\":41836,\"colm\":41837,\"(pool\":41838,\"ĠestÃ¡n\":41839,\"ĠPending\":41840,\"emÃ¡s\":41841,\"ĠktÃ³ry\":41842,\"));ĊĊĊ\":41843,\"transactions\":41844,\"Ġwield\":41845,\"itere\":41846,\"erture\":41847,\"_ss\":41848,\"Ġstretching\":41849,\"Ġprisoner\":41850,\".ReadAll\":41851,\"Ġbesch\":41852,\"--;čĊ\":41853,\"Ġcrisp\":41854,\"_SCAN\":41855,\"Ġae\":41856,\"Strict\":41857,\"ĠMinneapolis\":41858,\"ĠBoeing\":41859,\"aris\":41860,\"rek\":41861,\"_pipe\":41862,\"Ġpriests\":41863,\"(EIF\":41864,\"ehicles\":41865,\"ĠInteractive\":41866,\"between\":41867,\"ĉNullCheck\":41868,\"ĠBlair\":41869,\"ĠLt\":41870,\"_inline\":41871,\"ethyl\":41872,\"Â¼\":41873,\"_packages\":41874,\"Ġbarrels\":41875,\"_he\":41876,\"Ġregexp\":41877,\"_pts\":41878,\"_Handler\":41879,\"ingular\":41880,\"ĠNissan\":41881,\"ĠRanch\":41882,\"Ġperch\":41883,\"Unsupported\":41884,\"Smith\":41885,\"ĠLegends\":41886,\"Mi\":41887,\"Ġgf\":41888,\"steder\":41889,\"Ġacquiring\":41890,\"Ġsimulator\":41891,\"(),\\\"\":41892,\"receive\":41893,\"Ġinplace\":41894,\"ACTION\":41895,\"ĠWebDriver\":41896,\"filesystem\":41897,\"<Order\":41898,\"lopen\":41899,\"ĠHEIGHT\":41900,\".setBorder\":41901,\"į°\":41902,\"__[\\\"\":41903,\"Ġclamp\":41904,\"Segoe\":41905,\"bands\":41906,\"toList\":41907,\"amba\":41908,\">'+Ċ\":41909,\"Ġcredible\":41910,\"amat\":41911,\"playing\":41912,\".setImageResource\":41913,\"quel\":41914,\"Ġpodr\":41915,\"geom\":41916,\"Ek\":41917,\"ĠQatar\":41918,\"Ġgeld\":41919,\"?',Ċ\":41920,\"Ġcyl\":41921,\"(ax\":41922,\"ĠWI\":41923,\"urally\":41924,\"ĠBrasil\":41925,\"Ġsenza\":41926,\"aley\":41927,\"onen\":41928,\"Ġbah\":41929,\"Ġmolecule\":41930,\"Rad\":41931,\"è¿°\":41932,\"ANCH\":41933,\"-background\":41934,\"-agent\":41935,\"Ġprolifer\":41936,\":boolean\":41937,\"Ġtide\":41938,\"erializer\":41939,\"_;čĊ\":41940,\"Fee\":41941,\"**)\":41942,\"ergy\":41943,\"ĠHonor\":41944,\".Logging\":41945,\"iris\":41946,\"Ġundermine\":41947,\"ĠDy\":41948,\"Ġtyr\":41949,\"Ġdeque\":41950,\"Ġdamer\":41951,\"([])Ċ\":41952,\".layoutControlItem\":41953,\"peated\":41954,\"CAN\":41955,\"ragments\":41956,\"Land\":41957,\")]);Ċ\":41958,\"ĠSah\":41959,\"ĠDECL\":41960,\"Within\":41961,\"ĠNamespace\":41962,\"another\":41963,\"sembling\":41964,\".describe\":41965,\"Consum\":41966,\"ĠFear\":41967,\"given\":41968,\"Orange\":41969,\"<boolean\":41970,\"Ġsteadily\":41971,\"paRepository\":41972,\"ĠresultSet\":41973,\"_ENTER\":41974,\"_repeat\":41975,\"Ġtones\":41976,\"ĠPROP\":41977,\"nal\":41978,\"particle\":41979,\"Ġsignaling\":41980,\"Ġaccessory\":41981,\"ĉĉĉĉĉĉĠĠ\":41982,\"Ġviele\":41983,\"ĠNoah\":41984,\"-ag\":41985,\"Ġmurders\":41986,\"Ġaired\":41987,\"ĠPLAY\":41988,\"ĠSullivan\":41989,\"_Core\":41990,\"Ġulong\":41991,\"Ġblogging\":41992,\">This\":41993,\"ĠdataIndex\":41994,\"Ġprintable\":41995,\"ĠEyes\":41996,\"_targets\":41997,\"(Py\":41998,\".over\":41999,\"Ġbru\":42000,\"ampton\":42001,\"Ġplaintiff\":42002,\"<Key\":42003,\"bull\":42004,\"ĠâŁ¨\":42005,\"Issue\":42006,\".cornerRadius\":42007,\"Critical\":42008,\"_phi\":42009,\".angle\":42010,\"Ġdynamically\":42011,\"!\\\");čĊ\":42012,\">);Ċ\":42013,\"invest\":42014,\".*ĊĊ\":42015,\"ĠtÃ©lÃ©\":42016,\"Ġsuperf\":42017,\"Ġcascade\":42018,\"DTD\":42019,\"Ġvivid\":42020,\"Ġsubsidies\":42021,\"ĠHass\":42022,\"Ġcollaps\":42023,\"Ġceramic\":42024,\"{}\\\".\":42025,\"ĠLeakage\":42026,\"-trash\":42027,\"collapsed\":42028,\"-social\":42029,\"ĠChad\":42030,\"Ġinclined\":42031,\"Ġsto\":42032,\"Ġstoryboard\":42033,\".payment\":42034,\"stackoverflow\":42035,\"ĠRaiders\":42036,\"Ġ#'\":42037,\"olicies\":42038,\"ìľ¼ë¡ľ\":42039,\"emap\":42040,\"Ġkj\":42041,\"Ġquota\":42042,\"ĠGardens\":42043,\"ë²Ī\":42044,\"ĠAngels\":42045,\"Ġoft\":42046,\"Ġlowercase\":42047,\"ĠiParam\":42048,\"Ġcheapest\":42049,\"unta\":42050,\"_pkt\":42051,\"icators\":42052,\"Ġleurs\":42053,\"Ġdecreases\":42054,\"ĉdefine\":42055,\"PREC\":42056,\"ammers\":42057,\"ĠPreparedStatement\":42058,\"(direction\":42059,\"Ġcrews\":42060,\"arked\":42061,\"ĠMemphis\":42062,\"ĠSell\":42063,\"GTK\":42064,\"Ġmaid\":42065,\":disable\":42066,\"éĽĨ\":42067,\"ĠPf\":42068,\"Ġalbeit\":42069,\"openh\":42070,\"?>\\\">Ċ\":42071,\".getSource\":42072,\"(scale\":42073,\"Du\":42074,\"ĠPIL\":42075,\"_refresh\":42076,\"Ġbets\":42077,\"(car\":42078,\"ĠVon\":42079,\"|--------------------------------------------------------------------------Ċ\":42080,\"ĠGrat\":42081,\"Much\":42082,\"(Dialog\":42083,\".stopPropagation\":42084,\"Ġtek\":42085,\"Ġexits\":42086,\"'],$\":42087,\"ĠphoneNumber\":42088,\"ucs\":42089,\"ecimal\":42090,\"--------------\":42091,\"inp\":42092,\".pojo\":42093,\"Ġcorpus\":42094,\"Ġpractitioners\":42095,\".pic\":42096,\"\\\"testing\":42097,\"ĠstringBy\":42098,\".NotNull\":42099,\"Ġrang\":42100,\".Dynamic\":42101,\"_Render\":42102,\"Ð°ÑĤÐ°\":42103,\"Waiting\":42104,\"ĠWik\":42105,\"Ġoverwhelmed\":42106,\"%\\\">\":42107,\"ĠAE\":42108,\"}}>Ċ\":42109,\"uw\":42110,\"_typ\":42111,\"Ġbuckets\":42112,\"Ġgreeting\":42113,\"Ġlaughter\":42114,\"Ġantagon\":42115,\"uggestion\":42116,\"-email\":42117,\"ĉtop\":42118,\"Ġeros\":42119,\"_tri\":42120,\"Ġissuing\":42121,\"ĠhÃ¡\":42122,\"Ġisolate\":42123,\"Overflow\":42124,\",E\":42125,\"Ġnutritional\":42126,\"ĠAbbott\":42127,\"Ġnf\":42128,\".touch\":42129,\".fetchall\":42130,\"_zip\":42131,\"\\\")}Ċ\":42132,\"Ġamat\":42133,\"ĠCisco\":42134,\"ĠnÃ¥\":42135,\"PLEX\":42136,\"Ġsei\":42137,\"foto\":42138,\".toJson\":42139,\"å¤ļ\":42140,\"ĠKlein\":42141,\"Ġlibc\":42142,\"Ġminers\":42143,\"å¢\":42144,\"-print\":42145,\"ĠPride\":42146,\"Todos\":42147,\"Ġmasked\":42148,\"ĠsetData\":42149,\"Ġtelefon\":42150,\"Ġunhappy\":42151,\"ĠTables\":42152,\"geb\":42153,\"(debug\":42154,\"_allowed\":42155,\"-access\":42156,\"Ġlogistics\":42157,\"Ġgems\":42158,\"ĠMature\":42159,\"Ġrsp\":42160,\"ĠAlle\":42161,\".getBytes\":42162,\"\\\\web\":42163,\"ynchronized\":42164,\"Paragraph\":42165,\"Ġthrottle\":42166,\".sqlite\":42167,\"consulta\":42168,\"ĠSeah\":42169,\"Ce\":42170,\"Ġsubmar\":42171,\"ERE\":42172,\"Vous\":42173,\"Ġreddit\":42174,\"Ġsqlalchemy\":42175,\"-mile\":42176,\"ocide\":42177,\"Pour\":42178,\"}}\\\">Ċ\":42179,\"stead\":42180,\"Ġ@(\":42181,\"Ġ[])\":42182,\"ĠAds\":42183,\"Ġoverload\":42184,\"ridden\":42185,\"ĠDesert\":42186,\"ĠWrap\":42187,\"ĠPortuguese\":42188,\"etz\":42189,\"ĉfirst\":42190,\"Ġmilestone\":42191,\"æĹł\":42192,\"ÑĥÑī\":42193,\"(success\":42194,\"<Vector\":42195,\"cool\":42196,\"Ġ[]);Ċ\":42197,\"ervals\":42198,\"Ġinvert\":42199,\"\\\"io\":42200,\"curso\":42201,\"fragment\":42202,\"Ġfeasible\":42203,\".setPosition\":42204,\"Ġelm\":42205,\"Ġimagin\":42206,\"@Spring\":42207,\"Ġbats\":42208,\"puÃ©s\":42209,\"galement\":42210,\"nsic\":42211,\"giene\":42212,\"ellation\":42213,\"ĠBailey\":42214,\"Shar\":42215,\"ĠTul\":42216,\"ĠHK\":42217,\"Ġfreezing\":42218,\"glm\":42219,\"ceans\":42220,\"-cut\":42221,\"_circle\":42222,\"åĳĺ\":42223,\"negative\":42224,\"Ġindian\":42225,\"salt\":42226,\"Ġting\":42227,\"ĉmod\":42228,\"Ġsint\":42229,\"akin\":42230,\"uml\":42231,\"ĠTextInput\":42232,\"Ġpopped\":42233,\"TMP\":42234,\"Ġparked\":42235,\"×Ļ×\":42236,\"ĠFusion\":42237,\"Ġheater\":42238,\"ETF\":42239,\"rozen\":42240,\"hall\":42241,\"ĠMik\":42242,\"levard\":42243,\"-heart\":42244,\"ĉorder\":42245,\"Making\":42246,\"Ġpledged\":42247,\"Ġdirs\":42248,\"$post\":42249,\"ĠHerr\":42250,\"stantiate\":42251,\",\\\"Ċ\":42252,\".getColor\":42253,\"ĠSAT\":42254,\"Ġtimedelta\":42255,\"ĠMai\":42256,\"ĉmethod\":42257,\"Ġidiot\":42258,\"ĠTrav\":42259,\"identified\":42260,\"ĠDivine\":42261,\".getPath\":42262,\"Dash\":42263,\"Ġinfiltr\":42264,\"ĠhandleSubmit\":42265,\"brook\":42266,\".generic\":42267,\".shortcuts\":42268,\"................................................................\":42269,\"Ġdatings\":42270,\"ĠMV\":42271,\"ï»¿#\":42272,\"}\\\"ĊĊ\":42273,\"Ġimprisonment\":42274,\"asonic\":42275,\"roud\":42276,\"ucion\":42277,\"æĬ¥\":42278,\"Ġdialect\":42279,\"ĠonMouse\":42280,\"constexpr\":42281,\".labelControl\":42282,\"Ġweaker\":42283,\"Ġmankind\":42284,\"ĠRECE\":42285,\"Ġdiz\":42286,\"ĠappBar\":42287,\"ĠquÃ©\":42288,\"fra\":42289,\"_defaults\":42290,\"Ġaliqu\":42291,\"_atom\":42292,\":indexPath\":42293,\"Ġmisses\":42294,\"Ġvisually\":42295,\"ĠHands\":42296,\"STRU\":42297,\"iates\":42298,\"_asset\":42299,\"Finder\":42300,\"midt\":42301,\"Ġsnacks\":42302,\"(__('\":42303,\".uri\":42304,\"ĠInstrument\":42305,\"venir\":42306,\"($__\":42307,\".DotNetBar\":42308,\"Ġconfigs\":42309,\"Ġguessed\":42310,\"à¤¿à¤\":42311,\"Ġinitializer\":42312,\"Ġ?\\\",\":42313,\"ĠVerizon\":42314,\"manifest\":42315,\"geben\":42316,\".details\":42317,\"Gate\":42318,\"ponsible\":42319,\"ĠElim\":42320,\",str\":42321,\"Ġwritings\":42322,\"ĠDerek\":42323,\"ĠCoordinator\":42324,\"Ġpillow\":42325,\"Ġnoticeable\":42326,\"Rs\":42327,\"Ġduplicates\":42328,\"ernels\":42329,\"kJ\":42330,\".zz\":42331,\"olland\":42332,\"ĠSECTION\":42333,\"_fname\":42334,\"uffled\":42335,\"'].'</\":42336,\"_CM\":42337,\"Ġyr\":42338,\"plat\":42339,\"obody\":42340,\"nde\":42341,\"(Element\":42342,\"ĠAtlas\":42343,\"Ġï¼Ī\":42344,\"Ġnivel\":42345,\"Ġinsists\":42346,\"[P\":42347,\"Ġenthusiasts\":42348,\"Ġìŀħëł¥\":42349,\"Ġbeverage\":42350,\"{}\\\",\":42351,\":right\":42352,\"Ġnouveau\":42353,\"ĠComple\":42354,\"ĠPag\":42355,\"owns\":42356,\"Ġremembers\":42357,\"ĠPradesh\":42358,\"Ġchalk\":42359,\"ĠLauren\":42360,\"\\\\Service\":42361,\"_GEN\":42362,\">\\\")Ċ\":42363,\"ĠDollar\":42364,\"Ġemoji\":42365,\"Carousel\":42366,\"-player\":42367,\"Ġadjusting\":42368,\"Ġjuga\":42369,\"allenges\":42370,\"gene\":42371,\"(bodyParser\":42372,\"lopedia\":42373,\"ĠBehind\":42374,\"Ġsleeves\":42375,\"Ġdragging\":42376,\"ĠChevrolet\":42377,\"Ġbiz\":42378,\"ivities\":42379,\"ĠFrequency\":42380,\",char\":42381,\".WHITE\":42382,\"_preview\":42383,\")';Ċ\":42384,\"_ax\":42385,\"IONS\":42386,\".cpu\":42387,\".inputs\":42388,\"UBE\":42389,\"_feed\":42390,\"ĠSupplement\":42391,\"!).\":42392,\"esus\":42393,\"ĠUDP\":42394,\"Ġmicrophone\":42395,\"Ġconfirms\":42396,\".isNotEmpty\":42397,\"\\\":\\\"\\\",Ċ\":42398,\"_SCREEN\":42399,\"ĉexpected\":42400,\"+-+-+-+-\":42401,\"ĠHait\":42402,\"fastcall\":42403,\"Ġdepict\":42404,\"vb\":42405,\"_picture\":42406,\"ĉdescription\":42407,\"ĠWife\":42408,\"uci\":42409,\"Ġvicious\":42410,\"ä»ĸ\":42411,\"ueba\":42412,\"ĠsetUser\":42413,\"ãģ¡\":42414,\"Ġdiving\":42415,\"Ġopera\":42416,\"usercontent\":42417,\"arah\":42418,\")},\":42419,\"yun\":42420,\"velt\":42421,\"Ġuncovered\":42422,\"Ġhips\":42423,\"Ġoscill\":42424,\"Ġasserting\":42425,\"ĠXi\":42426,\".restore\":42427,\"kea\":42428,\"Ġspelling\":42429,\"Ġderive\":42430,\"abwe\":42431,\"ĠDow\":42432,\".setType\":42433,\"_vs\":42434,\"Ġcozy\":42435,\".categories\":42436,\"Org\":42437,\"_mgr\":42438,\"Ġdungeon\":42439,\"collectionView\":42440,\"ĠBlank\":42441,\"acias\":42442,\"Ã¤Ã¤\":42443,\"_cleanup\":42444,\"_ACTIVITY\":42445,\"Ġtriangles\":42446,\".MenuItem\":42447,\"Ġiphone\":42448,\"ĠWon\":42449,\"]]ĊĊ\":42450,\"ĠComparison\":42451,\".Doc\":42452,\"Ġcanonical\":42453,\"ĠSudan\":42454,\"'){\":42455,\"UpInside\":42456,\"builtin\":42457,\"ENCY\":42458,\"xbe\":42459,\"Ġchuck\":42460,\"Ġcontradict\":42461,\"Ġnuestro\":42462,\"Ġarchitectural\":42463,\"ĠFib\":42464,\"Ġcompares\":42465,\"*k\":42466,\"Cfg\":42467,\"çĦ¡\":42468,\"nten\":42469,\"Matches\":42470,\"ĠDOWNLOAD\":42471,\"_HANDLER\":42472,\"management\":42473,\"[S\":42474,\"ENG\":42475,\"ÂĢÂ\":42476,\"fang\":42477,\"Ġslipped\":42478,\"ĠLanka\":42479,\"escaping\":42480,\"Ġtackles\":42481,\"ĠPedro\":42482,\".Prop\":42483,\".''\":42484,\".Generated\":42485,\".NewGuid\":42486,\"atrigesimal\":42487,\"illon\":42488,\"Ġstatistic\":42489,\"species\":42490,\"holding\":42491,\"Drupal\":42492,\"Ġfundamentally\":42493,\"Ġbondage\":42494,\"Ġresolutions\":42495,\"InlineData\":42496,\"\\\\Type\":42497,\"estion\":42498,\".wrap\":42499,\"Ġwarriors\":42500,\"ĠLOCAL\":42501,\"Archive\":42502,\"Ġembraced\":42503,\"á»§\":42504,\".Ver\":42505,\"ĠAffordable\":42506,\"olesale\":42507,\"ĠApplied\":42508,\"ĠConversion\":42509,\"mega\":42510,\"_cam\":42511,\"Ġceremon\":42512,\"aurus\":42513,\"ĠVolk\":42514,\".opens\":42515,\"/about\":42516,\"ĠStd\":42517,\"journal\":42518,\"()){čĊ\":42519,\",\\\"\\\\\":42520,\"(Arrays\":42521,\"ĠDense\":42522,\"aseÃ±a\":42523,\"Ã¤nner\":42524,\"/stat\":42525,\"userData\":42526,\"Ġgerman\":42527,\"Ġtz\":42528,\"worthy\":42529,\"FormatException\":42530,\"pherd\":42531,\"Ġsmiles\":42532,\"ĠWhenever\":42533,\"(adapter\":42534,\".badlogic\":42535,\"Ġbriefing\":42536,\".GridColumn\":42537,\"-char\":42538,\"dimension\":42539,\"ĠCopper\":42540,\"Ġninth\":42541,\"Ġ'{{\":42542,\"Ġrav\":42543,\"_Table\":42544,\"Ġderivatives\":42545,\"ĠRaise\":42546,\"ĠFut\":42547,\"armor\":42548,\"-padding\":42549,\"Ġremin\":42550,\"ĉstyle\":42551,\"ĠMembership\":42552,\"Ġspreads\":42553,\"Ġgalleries\":42554,\"ĠClarke\":42555,\"Ġconception\":42556,\"minute\":42557,\"Ġabusive\":42558,\"_adj\":42559,\"Ġterrific\":42560,\"Ġovert\":42561,\"ourcing\":42562,\"Ġentrada\":42563,\"levels\":42564,\"Ġcritique\":42565,\"Ġrespects\":42566,\"ĠMMA\":42567,\"iene\":42568,\"Ġencaps\":42569,\"ĠRaymond\":42570,\"Divider\":42571,\"ivable\":42572,\"baz\":42573,\"Ġ@_;Ċ\":42574,\"ĠClaire\":42575,\"Ġurging\":42576,\"CEE\":42577,\"Ġtransformer\":42578,\"discord\":42579,\"ĠJourney\":42580,\"tos\":42581,\"Ġcompetitions\":42582,\"ĠOBJ\":42583,\"ĠBis\":42584,\"Ġrelaxation\":42585,\"idy\":42586,\"_INSTANCE\":42587,\"ĠPref\":42588,\"dados\":42589,\"iciencies\":42590,\"ĠMediaQuery\":42591,\"ĠCube\":42592,\"ĠStrange\":42593,\"gpu\":42594,\"(days\":42595,\"_InitStruct\":42596,\"Ġfingerprint\":42597,\"emat\":42598,\"ĠGecko\":42599,\"Ġrails\":42600,\"ĠLum\":42601,\"straction\":42602,\"igung\":42603,\"(movie\":42604,\"_dictionary\":42605,\"_interrupt\":42606,\"ĠQC\":42607,\"iked\":42608,\"appendChild\":42609,\"recipient\":42610,\"rÃ©\":42611,\"Ve\":42612,\"Ġtowel\":42613,\".lastIndexOf\":42614,\"Ġplacebo\":42615,\"ĠWie\":42616,\".esp\":42617,\"(Debug\":42618,\"operative\":42619,\"Ġdeceased\":42620,\"&id\":42621,\"ĉmutex\":42622,\"elic\":42623,\"Ġbapt\":42624,\"ĉčĊčĊ\":42625,\"Ġfarther\":42626,\"Half\":42627,\".disable\":42628,\".menuStrip\":42629,\"leccion\":42630,\"ĠresultCode\":42631,\"Ġcans\":42632,\"-election\":42633,\"female\":42634,\"_FIX\":42635,\"ausible\":42636,\"ĠPOWER\":42637,\"Ġreconstruction\":42638,\"Ġscans\":42639,\".XtraBars\":42640,\"âĢĺs\":42641,\"Removed\":42642,\"Ġparagraphs\":42643,\"_margin\":42644,\"Ġlymph\":42645,\"Ġbos\":42646,\"lington\":42647,\"ĠBaptist\":42648,\"Ġadvertisements\":42649,\"ĠManage\":42650,\"/yyyy\":42651,\"IOUS\":42652,\"ENCES\":42653,\"ĠFiction\":42654,\"ĉmenu\":42655,\"ĠFileOutputStream\":42656,\"ovan\":42657,\"ĠFeng\":42658,\"Ġskipping\":42659,\"getClass\":42660,\"anni\":42661,\"Ġrebounds\":42662,\"Ġpublicity\":42663,\"Ġingres\":42664,\"usement\":42665,\"Ġthoughtful\":42666,\".Chart\":42667,\"Ġhatte\":42668,\"passport\":42669,\"Ġhooked\":42670,\"ĠLens\":42671,\"Ġflagship\":42672,\"Ġstip\":42673,\"ĠGEN\":42674,\"Ġclues\":42675,\"ipv\":42676,\"ĠRise\":42677,\"ĠGew\":42678,\"tablename\":42679,\"Ġforemost\":42680,\"_validate\":42681,\"_analysis\":42682,\"olla\":42683,\"Ġqualifications\":42684,\"Ġdistributions\":42685,\"ĠFlower\":42686,\"Ġtense\":42687,\"Ġthankful\":42688,\"Ġclutch\":42689,\"Ġunified\":42690,\"roads\":42691,\"Ġsiti\":42692,\"Ġstall\":42693,\"_PRIORITY\":42694,\"cstdlib\":42695,\"_USERNAME\":42696,\".bytes\":42697,\"?page\":42698,\"ermalink\":42699,\"ĠVeget\":42700,\"/vnd\":42701,\"-author\":42702,\".NONE\":42703,\"ĠConcurrent\":42704,\"ĠCry\":42705,\"Ġstarters\":42706,\"ĠInteraction\":42707,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":42708,\"ĠLEVEL\":42709,\"Ell\":42710,\"ĠcomboBox\":42711,\"ĠTheresa\":42712,\"tek\":42713,\"_Handle\":42714,\"Ġaby\":42715,\".gdx\":42716,\",end\":42717,\"(Local\":42718,\"Ol\":42719,\"knife\":42720,\"arial\":42721,\"ĠHoff\":42722,\"Ġprostituerade\":42723,\"Doctor\":42724,\"Instances\":42725,\".SetValue\":42726,\"ĉfrom\":42727,\"Ġluxurious\":42728,\"Indent\":42729,\"Allocator\":42730,\"_DRAW\":42731,\"(\\\",\\\",\":42732,\"ĠFrances\":42733,\"ĠgroupBox\":42734,\"(schema\":42735,\"Printf\":42736,\"ORIES\":42737,\"-gradient\":42738,\"Ġreput\":42739,\"arin\":42740,\"_DONE\":42741,\"incre\":42742,\"ignty\":42743,\"Ġexert\":42744,\"Ġ-.\":42745,\"/App\":42746,\"-through\":42747,\"Ġdeclining\":42748,\"Ġdessert\":42749,\"Ġincumb\":42750,\"Ġdesignation\":42751,\".PORT\":42752,\",strong\":42753,\"Ġsandbox\":42754,\"Ġwines\":42755,\"ĠPav\":42756,\"$str\":42757,\"askell\":42758,\"ĠhÃ¶\":42759,\"ĠPY\":42760,\"GetInstance\":42761,\"TextInput\":42762,\"gameObject\":42763,\"/events\":42764,\"createdAt\":42765,\"ĠlocalVar\":42766,\"ĠWHITE\":42767,\"pered\":42768,\"ilege\":42769,\"efficient\":42770,\",color\":42771,\"cate\":42772,\"ĠCafe\":42773,\"Ġsimilarities\":42774,\"Ġpumps\":42775,\"ĠHungary\":42776,\".Username\":42777,\"Ġskate\":42778,\"Ġtouchdowns\":42779,\"Ġaccelerate\":42780,\"ĠHelen\":42781,\"OMEM\":42782,\"ĠKun\":42783,\"_vol\":42784,\"ĠfindAll\":42785,\"ĠMenschen\":42786,\"ahead\":42787,\");\\\"\":42788,\"kommen\":42789,\"Ġpossessed\":42790,\".argmax\":42791,\".transition\":42792,\"ARP\":42793,\"OLUME\":42794,\"(script\":42795,\"ĠÐĺ\":42796,\"ĠFinding\":42797,\"onces\":42798,\"Io\":42799,\"Bold\":42800,\"Ġrenewal\":42801,\"_DIALOG\":42802,\"Ġdisreg\":42803,\"INTERN\":42804,\"Ġtoute\":42805,\"Ġelectr\":42806,\"ĠGross\":42807,\"ĉtrue\":42808,\".Fields\":42809,\"ĠWIDTH\":42810,\"ĠDent\":42811,\"ĠÃģ\":42812,\"NSNotification\":42813,\"Ġaos\":42814,\"Ġmelee\":42815,\".Validation\":42816,\"ĠDEC\":42817,\"-dependent\":42818,\"Ġsuic\":42819,\"Traits\":42820,\"$message\":42821,\"ĠDear\":42822,\"ĉFILE\":42823,\"languages\":42824,\".Prot\":42825,\".addr\":42826,\"-generation\":42827,\"ICON\":42828,\"Ġtransplant\":42829,\"-description\":42830,\"Ġchasing\":42831,\"Ġchees\":42832,\"Ġ}*/Ċ\":42833,\"Trad\":42834,\"queries\":42835,\"/widgets\":42836,\"subpackage\":42837,\"Ġespec\":42838,\"Ġcracked\":42839,\"Ġcompetitor\":42840,\"Purchase\":42841,\"-team\":42842,\"olecular\":42843,\"orThunk\":42844,\"&P\":42845,\"Ġrelent\":42846,\"/#{\":42847,\"ĠproductId\":42848,\"Ġè¾\":42849,\"ĠLav\":42850,\"ĠAlter\":42851,\".Mode\":42852,\"ADIO\":42853,\"grp\":42854,\"æ·»åĬł\":42855,\"Quit\":42856,\"Ġdepths\":42857,\"-category\":42858,\"ĠDATABASE\":42859,\"SPELL\":42860,\"ĠFalcon\":42861,\"ĠQStringList\":42862,\"Ġ''.\":42863,\"ĠInstitution\":42864,\"damage\":42865,\"azor\":42866,\"belongsTo\":42867,\"verages\":42868,\"ĠNONE\":42869,\"ippets\":42870,\",\\\\Ċ\":42871,\"Ġfootprint\":42872,\"_archive\":42873,\"nak\":42874,\".getField\":42875,\"ĠReflection\":42876,\"Ġ']\":42877,\"ĠHBO\":42878,\"_discount\":42879,\"Ġincest\":42880,\"ĠDodge\":42881,\"ĠWade\":42882,\".NO\":42883,\"\\\"encoding\":42884,\"ĠBlockchain\":42885,\"Ġlawsuits\":42886,\"ĠMaint\":42887,\"chten\":42888,\"ĠÃ©tait\":42889,\"ĠktÃ³re\":42890,\"_ctl\":42891,\"(timer\":42892,\"Battle\":42893,\"izo\":42894,\"ayed\":42895,\"IOR\":42896,\"ĠGlasgow\":42897,\"Ġsynth\":42898,\"_logs\":42899,\".pose\":42900,\"_AdjustorThunk\":42901,\"((&\":42902,\"Ġunsure\":42903,\"ystate\":42904,\"íķĺëĬĶ\":42905,\"OULD\":42906,\".ng\":42907,\"Ġdefaultdict\":42908,\"workspace\":42909,\"Ġselective\":42910,\"PickerController\":42911,\"YNAMIC\":42912,\".methods\":42913,\"Ġpathways\":42914,\"ĠFew\":42915,\"KG\":42916,\"CRYPT\":42917,\"following\":42918,\"ĠDLC\":42919,\"ĠSara\":42920,\"Ġpreset\":42921,\"estructor\":42922,\"ĠKurt\":42923,\"Ġairplane\":42924,\"Ġomp\":42925,\"ĠParents\":42926,\"ĠMartinez\":42927,\".complete\":42928,\"Ġbroadly\":42929,\"Ġscare\":42930,\"ĠMÃ©\":42931,\"Ġelimination\":42932,\"Ġpoured\":42933,\"/sw\":42934,\"Ġcomun\":42935,\"Ġmasc\":42936,\"ĠOrganic\":42937,\"ĠStringUtils\":42938,\"ilateral\":42939,\"Ġreluctant\":42940,\"-age\":42941,\"Ġnz\":42942,\".\\\"\\\\\":42943,\"Ġpastor\":42944,\"alez\":42945,\"Ġefect\":42946,\"prov\":42947,\"/init\":42948,\"Ġpenn\":42949,\"unds\":42950,\"Ġssize\":42951,\"ĠProj\":42952,\"basename\":42953,\"Ġshells\":42954,\"ĠNeck\":42955,\"ĠEnforcement\":42956,\"vided\":42957,\"stown\":42958,\"Sphere\":42959,\"$r\":42960,\"ussen\":42961,\"afil\":42962,\"ĠTelegram\":42963,\"Ġanalytical\":42964,\"Ð½ÑĭÐµ\":42965,\"usually\":42966,\"xn\":42967,\"Ġhistorian\":42968,\"ĠGregory\":42969,\"olph\":42970,\"ĠUna\":42971,\"Ġcontributes\":42972,\"%-\":42973,\"antiago\":42974,\"ÑĢÐµÐ´\":42975,\".region\":42976,\"Ġabrupt\":42977,\"ĠUnsupportedOperationException\":42978,\"ĠTASK\":42979,\"_finish\":42980,\"Ġnotorious\":42981,\"ĠVs\":42982,\"ĠMQ\":42983,\"Ġsunset\":42984,\"Ġunacceptable\":42985,\"arcer\":42986,\"Ġillumin\":42987,\"ĠOrb\":42988,\"Ġbh\":42989,\"Este\":42990,\"_dispatch\":42991,\"Ġripped\":42992,\"Ġtoujours\":42993,\"ĠParcel\":42994,\"_ll\":42995,\".userName\":42996,\".classes\":42997,\"SOURCE\":42998,\"(Number\":42999,\"ÐµÐ»Ñı\":43000,\"Ġheadphones\":43001,\"(side\":43002,\"constitution\":43003,\"annah\":43004,\"čĊĠĠĠĠĠĠĠĠčĊ\":43005,\"Ġcliff\":43006,\"-ref\":43007,\"Ġmostrar\":43008,\"ĠPowell\":43009,\"+y\":43010,\"ĠBG\":43011,\"_fragment\":43012,\".Port\":43013,\"Ġrealizing\":43014,\"paramref\":43015,\"Ġhometown\":43016,\"@Table\":43017,\"+\\\"</\":43018,\"omid\":43019,\"Ġdug\":43020,\"ĉbtn\":43021,\"Ġsubjective\":43022,\"/browser\":43023,\"Ġushort\":43024,\"ĠMontgomery\":43025,\"-rate\":43026,\"ĉputs\":43027,\"letics\":43028,\"orns\":43029,\"âĢľWhat\":43030,\"eeper\":43031,\".Invariant\":43032,\"Ġconcealed\":43033,\"_numpy\":43034,\"=========\":43035,\"(ps\":43036,\"Locations\":43037,\".astype\":43038,\"ĠCHANGE\":43039,\".OrderBy\":43040,\";height\":43041,\"Ġgente\":43042,\"Ġgrunt\":43043,\"ĠPlane\":43044,\"Ġsadly\":43045,\"ĠLogan\":43046,\"_usec\":43047,\".dgv\":43048,\"Ġsincer\":43049,\"Ġpn\":43050,\"ĉgtk\":43051,\"Ġinstaller\":43052,\"Ġdisplacement\":43053,\"Ġburns\":43054,\"ÑĥÑģ\":43055,\"ivered\":43056,\":])Ċ\":43057,\"seat\":43058,\"aning\":43059,\"})ĊĊĊ\":43060,\"_roles\":43061,\"atican\":43062,\"Ġgenerators\":43063,\"Ġhurts\":43064,\"Ġsnippet\":43065,\"Ġgson\":43066,\"Ġsegreg\":43067,\"Ġdistributor\":43068,\"Ġadvancing\":43069,\"postgres\":43070,\"Ġusr\":43071,\"ĠLis\":43072,\".assertIs\":43073,\"_cd\":43074,\"Ġhydraulic\":43075,\".counter\":43076,\"ĠIndependence\":43077,\"ĠdiffÃ©\":43078,\"Unlike\":43079,\"Ġtomb\":43080,\"vik\":43081,\"posted\":43082,\"wf\":43083,\"Ġdescending\":43084,\"dyn\":43085,\"amental\":43086,\"ĠFruit\":43087,\"ĠYo\":43088,\".double\":43089,\"ĠIA\":43090,\"iev\":43091,\"ibrate\":43092,\"ĠReligion\":43093,\"ManyToOne\":43094,\"-Ta\":43095,\"Ġbanana\":43096,\"ĠAvengers\":43097,\"ĠHolocaust\":43098,\"ĠgetC\":43099,\"Ġcondo\":43100,\"ĠGothic\":43101,\"Ġprosperity\":43102,\"TRANS\":43103,\"Ġdoesnt\":43104,\"ĠChaos\":43105,\"ITT\":43106,\"ĠCURRENT\":43107,\"\\\\helpers\":43108,\"_SAVE\":43109,\"avit\":43110,\"computer\":43111,\"_sheet\":43112,\"ĠBrewing\":43113,\"Ġrobbery\":43114,\"Ġê²½\":43115,\"ĠÐºÐ¾Ð¼\":43116,\"ĠnÃ¤\":43117,\".regex\":43118,\"Ġdisruption\":43119,\"ĠSimulation\":43120,\"apid\":43121,\"Ġsupreme\":43122,\"Î¼\":43123,\"Ġcommissioned\":43124,\"Ġabsorption\":43125,\"ĠNewcastle\":43126,\"ĉconstructor\":43127,\"Terms\":43128,\"Ġriv\":43129,\"Ġreligions\":43130,\"WithTag\":43131,\".Html\":43132,\"linked\":43133,\"Compound\":43134,\"ĠMans\":43135,\"Ġlakes\":43136,\"izzle\":43137,\".setSize\":43138,\"aber\":43139,\"ĠNeeds\":43140,\"packages\":43141,\".TabPage\":43142,\"Ġrefs\":43143,\"Ġioutil\":43144,\"ĠDoing\":43145,\"Ġ\\\"\\\\(\":43146,\"Ġphenomena\":43147,\".GetInt\":43148,\"ALTH\":43149,\"Ġparliamentary\":43150,\"Ġrefusal\":43151,\"Ġinexpensive\":43152,\"Ġ}ĊĊĊĊĊ\":43153,\"Ġsolidarity\":43154,\"ĉpush\":43155,\"haul\":43156,\"ĠBere\":43157,\"Sizer\":43158,\"Individual\":43159,\"Ġance\":43160,\"Ġdile\":43161,\"ĠPeak\":43162,\"(hr\":43163,\"EditingController\":43164,\"HN\":43165,\"_PERIOD\":43166,\"ETS\":43167,\"Banner\":43168,\"errorMessage\":43169,\".CASCADE\":43170,\"-ignore\":43171,\"ĠSIGN\":43172,\"ĠOB\":43173,\"_dd\":43174,\"(DEFAULT\":43175,\"Ġsoo\":43176,\"ĠVictorian\":43177,\"Ġcurt\":43178,\"Ġdiscrete\":43179,\"rylic\":43180,\"imbabwe\":43181,\".toFixed\":43182,\"lÃ¤\":43183,\".stdin\":43184,\"Ġqty\":43185,\"ROLLER\":43186,\"mediately\":43187,\"Ġplumbing\":43188,\"ĠPropertyChanged\":43189,\"arranty\":43190,\"ĠBreakfast\":43191,\".setHeader\":43192,\".python\":43193,\"commerce\":43194,\"opencv\":43195,\">--}}Ċ\":43196,\"French\":43197,\"EntityManager\":43198,\"ĠPlain\":43199,\"////////////////////////////////////////////////////////////////////\":43200,\"Â³\":43201,\"(RE\":43202,\"capt\":43203,\"Ġorganisms\":43204,\"Ġjets\":43205,\"olocation\":43206,\"ĠAppRoutingModule\":43207,\"Ġglorious\":43208,\"æľį\":43209,\"Ġdiscarded\":43210,\"ĉĉĉĉĠĠĠĠĠ\":43211,\"ĠArnold\":43212,\"lug\":43213,\"Ġparl\":43214,\"Ġhormones\":43215,\"Ġmah\":43216,\"ĠSonic\":43217,\"Ġorganizers\":43218,\"_PLATFORM\":43219,\".inv\":43220,\"Ġchord\":43221,\"ventional\":43222,\"ĉof\":43223,\"Episode\":43224,\".Enum\":43225,\"unkt\":43226,\"ĠDh\":43227,\"ĠJared\":43228,\"ĠNak\":43229,\"Ġintends\":43230,\"Endian\":43231,\"Ġaustralia\":43232,\"_cv\":43233,\"(resolve\":43234,\"Ġclinics\":43235,\"liked\":43236,\"ASHINGTON\":43237,\"inha\":43238,\"'*\":43239,\"ĠNP\":43240,\"_beh\":43241,\"Ġhf\":43242,\"ĠwÃ¼r\":43243,\"categoria\":43244,\"$form\":43245,\"Ġsubway\":43246,\"ĠisActive\":43247,\"popular\":43248,\"Cour\":43249,\"Ġcooldown\":43250,\"Ġainsi\":43251,\"ĠGLuint\":43252,\"ereal\":43253,\"ĠarrayOf\":43254,\"Ġhatch\":43255,\"==========\":43256,\"resses\":43257,\"_PP\":43258,\".^\":43259,\"_decay\":43260,\"ĠBless\":43261,\"metrics\":43262,\"ĠCOPYING\":43263,\"ĠDumpster\":43264,\"ĠJosÃ©\":43265,\"ĠDesigns\":43266,\"<Void\":43267,\"çº¿\":43268,\"Ġ?><\":43269,\"Ġ\\\"}Ċ\":43270,\"timezone\":43271,\"Ġeer\":43272,\"maxcdn\":43273,\"ĠESC\":43274,\"igaret\":43275,\"_connected\":43276,\"_reverse\":43277,\"Ġquestionable\":43278,\"ĠUSC\":43279,\"Ġtutti\":43280,\"Ġdropout\":43281,\"ĠActivities\":43282,\"ĠWinds\":43283,\"')));Ċ\":43284,\"Ġcongest\":43285,\"ÄŁÄ±\":43286,\"Ġprolonged\":43287,\"è¿Ļ\":43288,\"ĠCrossAxisAlignment\":43289,\"LEEP\":43290,\"ĠVALID\":43291,\"ĠGaz\":43292,\"Ġdependence\":43293,\"ĠPrix\":43294,\".CompilerServices\":43295,\"jump\":43296,\"Ġstrat\":43297,\"circ\":43298,\"ĠCUSTOM\":43299,\"xaa\":43300,\"Ġbmp\":43301,\"Ġbureau\":43302,\"Ġwaren\":43303,\"NX\":43304,\"(Window\":43305,\"ĠChristie\":43306,\"_FE\":43307,\"Ġtn\":43308,\"ĠOmega\":43309,\"communications\":43310,\"HomePage\":43311,\"completion\":43312,\"Ġsupplying\":43313,\"YPES\":43314,\"Ã¡vel\":43315,\"åĪ¶\":43316,\"(click\":43317,\"\\\\Contracts\":43318,\"/questions\":43319,\"Ġez\":43320,\"AMS\":43321,\".mesh\":43322,\"Ġ'<?\":43323,\"jÃł\":43324,\"Ini\":43325,\".#\":43326,\"ĠCardinals\":43327,\"pciÃ³n\":43328,\"Cube\":43329,\"ĠPatients\":43330,\"_pref\":43331,\"ActionButton\":43332,\"(build\":43333,\"ĠVisa\":43334,\"ovel\":43335,\"(ArrayList\":43336,\"Ign\":43337,\"Ġrehabilitation\":43338,\"Ġpalace\":43339,\"Ġspeeches\":43340,\"}'Ċ\":43341,\"HttpResponse\":43342,\"ĉcode\":43343,\"Dummy\":43344,\"Ġacademy\":43345,\".movie\":43346,\"Ġincorrectly\":43347,\"Ġcyc\":43348,\"(UnityEngine\":43349,\"ĉcallback\":43350,\"ĠSatan\":43351,\"ĠFUNC\":43352,\"Ġchant\":43353,\"ĠHealthy\":43354,\":',Ċ\":43355,\"Shipping\":43356,\"_mc\":43357,\"ĠDylan\":43358,\"ĠProducer\":43359,\"Ġrespuesta\":43360,\"Ġpolished\":43361,\"Broadcast\":43362,\"Ġbalancing\":43363,\"ĠSlide\":43364,\"ĠCaps\":43365,\"still\":43366,\"Ġhappier\":43367,\"ĠGospel\":43368,\"tran\":43369,\".pathname\":43370,\"ActiveSheet\":43371,\"ĠChang\":43372,\">\\\\Ċ\":43373,\"Robot\":43374,\"JsonObject\":43375,\"ĠDF\":43376,\"ĠProcessor\":43377,\"_should\":43378,\".protobuf\":43379,\"-users\":43380,\"Ġembry\":43381,\"FONT\":43382,\"Ġstartups\":43383,\"ĠDataSource\":43384,\")#\":43385,\"uros\":43386,\"_Color\":43387,\"Ġstandalone\":43388,\"}[\":43389,\"jd\":43390,\"Ġforgive\":43391,\"Ġngx\":43392,\"ĠGenerally\":43393,\"Ġconfigurable\":43394,\"/order\":43395,\"Ġvas\":43396,\"')\\\";Ċ\":43397,\"ĠRR\":43398,\"ĠTroy\":43399,\"Ġcompromised\":43400,\"ĠSwan\":43401,\"intendent\":43402,\"Central\":43403,\"_keeper\":43404,\"Ġarquivo\":43405,\"ĠReadOnly\":43406,\"_curve\":43407,\"kv\":43408,\"entin\":43409,\"è±\":43410,\"ĠEy\":43411,\".imread\":43412,\"ĠPam\":43413,\"iffe\":43414,\"ativity\":43415,\"xbc\":43416,\"Ġgrim\":43417,\"-filled\":43418,\"namese\":43419,\"']:\":43420,\"Ġaur\":43421,\"ĠGibson\":43422,\".MouseEvent\":43423,\"Ġlado\":43424,\"avadoc\":43425,\"Ġfamil\":43426,\"ĠModer\":43427,\"fps\":43428,\"ãĢĢãĢĢ\":43429,\"-example\":43430,\"ĠAlzheimer\":43431,\"ĠUtf\":43432,\"_arguments\":43433,\"Conclusion\":43434,\"textContent\":43435,\"remaining\":43436,\"Ġinterrupts\":43437,\"ĠBackup\":43438,\"ĠMong\":43439,\"Ġreceptors\":43440,\"histor\":43441,\".coroutines\":43442,\"Ġshouted\":43443,\"Alarm\":43444,\"Ġcombust\":43445,\"Ġgrote\":43446,\"ultural\":43447,\"(ids\":43448,\"--------------------------------------------------------------------------------\":43449,\"iplinary\":43450,\"Opts\":43451,\"ĠYale\":43452,\"localStorage\":43453,\"Ġequival\":43454,\"ĠFleet\":43455,\"\\\\b\":43456,\"*pi\":43457,\"ĠQLabel\":43458,\"æ¡\":43459,\"Ġvx\":43460,\"ĠACL\":43461,\"Ġsucesso\":43462,\"Ġperc\":43463,\"ĠNotre\":43464,\"Ġanarch\":43465,\"Ring\":43466,\"spb\":43467,\"Ġstrpos\":43468,\"stores\":43469,\"ĠMaple\":43470,\"(MainActivity\":43471,\"(\\\"\\\"))\":43472,\"ĠviewHolder\":43473,\"Quad\":43474,\"Ġigual\":43475,\"orsche\":43476,\".margin\":43477,\"Ġindie\":43478,\"Ġfranc\":43479,\"ĠFormBuilder\":43480,\"ĠParticip\":43481,\".flash\":43482,\"Ġstorms\":43483,\"Ult\":43484,\"Ġfen\":43485,\"[new\":43486,\"Ever\":43487,\"=\\\"Ċ\":43488,\"Ġlocalized\":43489,\"_follow\":43490,\"Ġnave\":43491,\"Ġdominance\":43492,\"(tile\":43493,\"Journal\":43494,\"ĠVC\":43495,\"Ġpenetration\":43496,\"ï¼ķ\":43497,\"Ġcompartment\":43498,\"Ġbids\":43499,\"Formatted\":43500,\"******/ĊĊ\":43501,\"(city\":43502,\"âĢĶit\":43503,\"[C\":43504,\"ĠuseCallback\":43505,\"aub\":43506,\")?.\":43507,\"ĠVAR\":43508,\"ĠSebastian\":43509,\"ĠMoss\":43510,\"Ġabundant\":43511,\"Greg\":43512,\"ÑĤÐ°\":43513,\"_ci\":43514,\"Ġbibli\":43515,\"CRM\":43516,\"ĠAttempt\":43517,\"isme\":43518,\"dash\":43519,\"ãĢİ\":43520,\"_mu\":43521,\".FormattingEnabled\":43522,\"Indeed\":43523,\"-direct\":43524,\"Ġsucking\":43525,\"Ġpne\":43526,\"ocabulary\":43527,\"ĠPackers\":43528,\".Navigation\":43529,\"Ġpied\":43530,\"cribing\":43531,\"ĠStuart\":43532,\".ToDouble\":43533,\"ĠSecondary\":43534,\"Saving\":43535,\"ĠDut\":43536,\"ĠMadd\":43537,\"Magic\":43538,\",H\":43539,\".documentElement\":43540,\"ĠBST\":43541,\"Ġdiffers\":43542,\"Ġmoreover\":43543,\"_nd\":43544,\"SEARCH\":43545,\"Ð¿ÑĢÐ°Ð²\":43546,\"æ´\":43547,\"toMatch\":43548,\"Ġdecreasing\":43549,\"-member\":43550,\"ampus\":43551,\"(boost\":43552,\"Daily\":43553,\"DataGridView\":43554,\"ĠHttpContext\":43555,\"Ġhipp\":43556,\"_workers\":43557,\"-language\":43558,\"éĵ\":43559,\"Ġconsisted\":43560,\"athing\":43561,\"ĠMercury\":43562,\"$content\":43563,\"Ġpracticed\":43564,\"ĠModules\":43565,\"_DAY\":43566,\"Ġweaknesses\":43567,\"ĠLodge\":43568,\"Ġnar\":43569,\"ĠMate\":43570,\"Ġjp\":43571,\"ĠHttpHeaders\":43572,\"Ġsmo\":43573,\"ĠTOKEN\":43574,\"])(\":43575,\"Ġaqui\":43576,\"swagen\":43577,\"Ġsrv\":43578,\"ĉans\":43579,\"Around\":43580,\"ĠManuel\":43581,\"Ġfictional\":43582,\"ĠIMG\":43583,\"Ġ.'\":43584,\"ĠBerry\":43585,\"Ġwallpaper\":43586,\"sexual\":43587,\"iero\":43588,\"ĠçļĦ\":43589,\"ìĨĮ\":43590,\"BackingField\":43591,\"ĠAdrian\":43592,\"BASEPATH\":43593,\"Ġrepeats\":43594,\"Ġblues\":43595,\"Ġunpredict\":43596,\"_coll\":43597,\"stacle\":43598,\"ĠTumblr\":43599,\"ĠElf\":43600,\"Ġassurance\":43601,\"Ġcensus\":43602,\"ĠIMPORT\":43603,\"ENDER\":43604,\"anos\":43605,\"Ġ=(\":43606,\"ĠEllis\":43607,\"\\\"ĊĊĊĊ\":43608,\".win\":43609,\"ĠAbove\":43610,\"alon\":43611,\"_tick\":43612,\"Ġrepresentations\":43613,\"Ġæķ\":43614,\"wid\":43615,\"ĠArms\":43616,\"Lista\":43617,\"_failure\":43618,\"_cm\":43619,\".FlatAppearance\":43620,\"Ġthrone\":43621,\"Patch\":43622,\"ĠVoy\":43623,\"engl\":43624,\"Ġnegotiating\":43625,\">`\":43626,\"Ġshoots\":43627,\"ĠFPS\":43628,\".Year\":43629,\"ĠKiss\":43630,\"enciÃ³n\":43631,\"reeting\":43632,\"FromFile\":43633,\"Ġresignation\":43634,\"Ø·\":43635,\"Ġtwins\":43636,\"Æ°á»£\":43637,\"Ġgebru\":43638,\".getContent\":43639,\".Tree\":43640,\"ĠEmployees\":43641,\"ĠFIFA\":43642,\"Ġcertainty\":43643,\"(Cl\":43644,\"Ġtotals\":43645,\"editable\":43646,\"à¥Ģ\":43647,\".Reporting\":43648,\"Mas\":43649,\"quiet\":43650,\".rules\":43651,\"ĠVO\":43652,\"conexion\":43653,\",K\":43654,\"Ġallocator\":43655,\"ĠPowder\":43656,\"\\\\Repository\":43657,\"Beat\":43658,\"_tipo\":43659,\"Ġ['',\":43660,\"_INTR\":43661,\"Ġ<<<\":43662,\"<hr\":43663,\"\\\")==\":43664,\"uggage\":43665,\"ĠCraw\":43666,\"ĠÃ©galement\":43667,\"Ġginger\":43668,\"Ġprimera\":43669,\"Ġproduto\":43670,\"ltk\":43671,\".UserName\":43672,\"Ġstrerror\":43673,\"mith\":43674,\"_nb\":43675,\"Ġdiscomfort\":43676,\"'];?></\":43677,\"QT\":43678,\"Ġerupt\":43679,\"ĠDanish\":43680,\"\\\\Active\":43681,\"_adapter\":43682,\"Ġbubbles\":43683,\"rollo\":43684,\"orgot\":43685,\"Ð½ÑĭÑħ\":43686,\"VECTOR\":43687,\"ocode\":43688,\"ĠBulls\":43689,\"Ġboil\":43690,\">\\\");čĊ\":43691,\"dropIfExists\":43692,\"ĠBeg\":43693,\"_HAL\":43694,\"ĠcrossAxisAlignment\":43695,\"ĠEvidence\":43696,\"Ġpeculiar\":43697,\"Ġinstitute\":43698,\"veis\":43699,\"Ġfft\":43700,\"Ãģ\":43701,\"Ġzoekt\":43702,\"analy\":43703,\"ĠHomeland\":43704,\"Ġpenetr\":43705,\"uddenly\":43706,\"ĉelement\":43707,\"ĠBren\":43708,\"ĠTrudeau\":43709,\"ĠCuban\":43710,\"jam\":43711,\"uslim\":43712,\"_ev\":43713,\"Ġstems\":43714,\"}%\":43715,\"Ŀå§ĭ\":43716,\"Ġbranding\":43717,\"Ġcorrespondence\":43718,\".jquery\":43719,\"¢åįķ\":43720,\"ĠReads\":43721,\"(HttpStatusCode\":43722,\"assin\":43723,\"(slot\":43724,\"ĠGraduate\":43725,\"///<\":43726,\"Ġinformations\":43727,\"ENABLE\":43728,\"Ġpuis\":43729,\"Ġfinder\":43730,\"ĠBris\":43731,\"Ġnettsteder\":43732,\"_mid\":43733,\"Ġogs\":43734,\"ĠSterling\":43735,\"Ġarrog\":43736,\"strftime\":43737,\"|ĊĊ\":43738,\"Ġvox\":43739,\"ĠRegardless\":43740,\"Ġeso\":43741,\"ĠComfort\":43742,\".BooleanField\":43743,\"Ġuh\":43744,\"ACY\":43745,\"Ġsqueez\":43746,\"ĠVic\":43747,\"contro\":43748,\".lo\":43749,\"Ġire\":43750,\"ĠComedy\":43751,\"ë¶\":43752,\"Ġoriginated\":43753,\"Ġshipment\":43754,\"|max\":43755,\"_guid\":43756,\"levation\":43757,\"Ð½Ð°Ñı\":43758,\"(undefined\":43759,\"ĠDDR\":43760,\"Ġshootings\":43761,\"ĠLatino\":43762,\"ENDOR\":43763,\"Ġaveraging\":43764,\"Ġgreeted\":43765,\"Ġtheaters\":43766,\"Ð¾Ðµ\":43767,\"ĠdB\":43768,\"Ġgst\":43769,\"Ġdefinite\":43770,\".Storage\":43771,\".her\":43772,\"Ġafore\":43773,\"ĠReality\":43774,\"ĠGods\":43775,\"versed\":43776,\"Ġhandsome\":43777,\"Ġexcluding\":43778,\"(ad\":43779,\"Quotes\":43780,\"ĠScheme\":43781,\"?q\":43782,\"ĠTamil\":43783,\"Ticks\":43784,\"Ġpest\":43785,\"'n\":43786,\"Ġpornography\":43787,\"_modal\":43788,\"Ġ----------\":43789,\"Ġdisposable\":43790,\"FREE\":43791,\"Ġshark\":43792,\"CHE\":43793,\"Ġdepicted\":43794,\"Ġdemonstrations\":43795,\"ĠKilled\":43796,\"ĠRULE\":43797,\"Ġobsessed\":43798,\"Ġsimplified\":43799,\"Postal\":43800,\"Ġconceptual\":43801,\"Ġpst\":43802,\"Las\":43803,\"_PROJECT\":43804,\"ucceeded\":43805,\"olu\":43806,\"ÄŁi\":43807,\"Ġpersonalities\":43808,\"Ġreshape\":43809,\"Ġenclosed\":43810,\"ĉptr\":43811,\"Ġtutorials\":43812,\"Ġexploded\":43813,\"_DIRECTORY\":43814,\"åĨħå®¹\":43815,\"Ġcanon\":43816,\"Ġrecognise\":43817,\"PAD\":43818,\"ĠApprox\":43819,\"ĠRestore\":43820,\"ĠImportant\":43821,\"Ġheavier\":43822,\".Sequential\":43823,\"Earth\":43824,\"ĠMilk\":43825,\".setRequest\":43826,\".tem\":43827,\"Ġreconstruct\":43828,\"Ġskeptical\":43829,\"_Private\":43830,\"BUF\":43831,\"qua\":43832,\":a\":43833,\"Ġsek\":43834,\"Ġdwell\":43835,\"ossa\":43836,\"Ġrewarded\":43837,\"Ð¸Ð¹\":43838,\"(topic\":43839,\"_partition\":43840,\"Ġ__________________\":43841,\"Keywords\":43842,\"ĠFranco\":43843,\"Lite\":43844,\"Ġnaken\":43845,\"ĠÐ·Ð°\":43846,\"OBJECT\":43847,\"Ġcrafts\":43848,\"ĠSwap\":43849,\".Xna\":43850,\".Connect\":43851,\"Ġbalcony\":43852,\"(real\":43853,\"ĠBarnes\":43854,\"bir\":43855,\"ĠTwenty\":43856,\"ayan\":43857,\"atars\":43858,\"ĠPropel\":43859,\"ĠIhnen\":43860,\"Upgrade\":43861,\"Ġcurb\":43862,\"-second\":43863,\"Ġneph\":43864,\".pres\":43865,\"ìŀħ\":43866,\".seq\":43867,\"Ġpadded\":43868,\"\\\"?\":43869,\"jl\":43870,\"ãĥ¬\":43871,\"')</\":43872,\"Ġcivic\":43873,\"gons\":43874,\">a\":43875,\"Coordinates\":43876,\"Ġenacted\":43877,\"ENTS\":43878,\"Ġlac\":43879,\".final\":43880,\"ĠPhpStorm\":43881,\"called\":43882,\"Ġinquiries\":43883,\".middleware\":43884,\"ĠDowntown\":43885,\"/';Ċ\":43886,\"Ġkilomet\":43887,\"accel\":43888,\"Ġquien\":43889,\"wstring\":43890,\"setData\":43891,\"Ġmanera\":43892,\"Ġmodular\":43893,\"rimp\":43894,\"Ġtariffs\":43895,\"âĢĻil\":43896,\"_THROW\":43897,\"/color\":43898,\"ĠHTMLElement\":43899,\"Ġcarro\":43900,\"Ġprere\":43901,\"Ġplotting\":43902,\"ĠPositive\":43903,\"ĠMachines\":43904,\"OTES\":43905,\"á»Ľ\":43906,\"pleasant\":43907,\"Ġalte\":43908,\"Ġainda\":43909,\"these\":43910,\"Ġcors\":43911,\"ipay\":43912,\"ĠAdvisory\":43913,\"ĠRubio\":43914,\"jq\":43915,\"Ġlimestone\":43916,\"Ġdetached\":43917,\"è®¾ç½®\":43918,\"tenant\":43919,\"ĠDepth\":43920,\"alore\":43921,\"ĠÑģÑĤÑĢÐ¾Ðº\":43922,\"ĠFORE\":43923,\"ĠLay\":43924,\"presentation\":43925,\")');Ċ\":43926,\".subplots\":43927,\"Ïĥ\":43928,\"NOW\":43929,\"Gar\":43930,\"handles\":43931,\"abra\":43932,\"puties\":43933,\"ĠElectrical\":43934,\"Middle\":43935,\"ropic\":43936,\"ĠJD\":43937,\"ĠDyn\":43938,\"ĠBristol\":43939,\"ĠMcCarthy\":43940,\"Ġstriker\":43941,\"Ġenumerable\":43942,\"ĠEvan\":43943,\".defaults\":43944,\"quences\":43945,\")||\":43946,\"ĉtoken\":43947,\"âĹı\":43948,\"-dropdown\":43949,\"STORE\":43950,\"ĠGraphic\":43951,\"(pp\":43952,\"Expl\":43953,\"Ġupwards\":43954,\"ĠDistributed\":43955,\"ĠWEB\":43956,\"Jer\":43957,\"isNaN\":43958,\"çĶŁæĪĲ\":43959,\">R\":43960,\"Ã¼ssen\":43961,\"efs\":43962,\"Ġuncover\":43963,\"Ġlud\":43964,\".calculate\":43965,\"Ġintptr\":43966,\"Ġmidfielder\":43967,\".Headers\":43968,\"Ġmf\":43969,\"eref\":43970,\".Metro\":43971,\"ĠSpeaking\":43972,\":b\":43973,\"Ġcryptocurrencies\":43974,\"Ġdemons\":43975,\"ĉEXPECT\":43976,\"Ġwicked\":43977,\"youtube\":43978,\":Int\":43979,\"ĠHindi\":43980,\"ĠCAT\":43981,\"ĠØ¹\":43982,\"rar\":43983,\"omore\":43984,\"/per\":43985,\"/license\":43986,\"Ġreim\":43987,\"Ġawaiting\":43988,\"Ġlethal\":43989,\"ĠEF\":43990,\"rounded\":43991,\"ĠPlatinum\":43992,\"ĠÐ²ÑģÐµ\":43993,\".coords\":43994,\".Device\":43995,\"/item\":43996,\"ĠWenn\":43997,\"compileComponents\":43998,\"ĠKinder\":43999,\".removeItem\":44000,\"Ġanda\":44001,\"bnb\":44002,\"Ġpra\":44003,\"(transaction\":44004,\"Ġembarrassing\":44005,\"ĉBOOL\":44006,\".contentView\":44007,\"Ġeventdata\":44008,\"atore\":44009,\"ĠprovidedIn\":44010,\"irma\":44011,\"Ġzona\":44012,\"_HW\":44013,\"æĻ\":44014,\"Ġstove\":44015,\"Ġcounterpart\":44016,\"_Product\":44017,\"_MANAGER\":44018,\"Ġinfring\":44019,\"ĠERA\":44020,\"_party\":44021,\"Ñĳ\":44022,\"Ġinici\":44023,\"_Request\":44024,\"Ġmiracle\":44025,\"ĠcancelButton\":44026,\"Spy\":44027,\"atÃ³\":44028,\"Ġpolish\":44029,\"ĠNicole\":44030,\".displayName\":44031,\"\\\\Requests\":44032,\"ĠuseHistory\":44033,\"RouterModule\":44034,\"Ġstared\":44035,\"IDER\":44036,\"ÑĥÐ½ÐºÑĨÐ¸\":44037,\"Ġnota\":44038,\"$arr\":44039,\"pecified\":44040,\"Ġtopp\":44041,\"_DRIVER\":44042,\"/ng\":44043,\"åł\":44044,\"_tm\":44045,\"%timeout\":44046,\"<s\":44047,\"Ġ(*)\":44048,\"ĠHttpRequest\":44049,\"_TRACK\":44050,\"(note\":44051,\"ĠExplore\":44052,\"_serv\":44053,\"Ġç»\":44054,\"Binder\":44055,\"+\\\",\":44056,\".att\":44057,\"ĠEthi\":44058,\"ĠcÃ³digo\":44059,\"='\\\\\":44060,\".lines\":44061,\"(Of\":44062,\"å°Ĩ\":44063,\"missible\":44064,\"ĠvÃ©\":44065,\"Ġacoustic\":44066,\"Ġcrafting\":44067,\"nit\":44068,\".ba\":44069,\"ĠLucy\":44070,\"ĠiPod\":44071,\"Ġpupils\":44072,\"-max\":44073,\"_wr\":44074,\"(cp\":44075,\"ĠREPORT\":44076,\"Ġdns\":44077,\"ĠReferences\":44078,\"Ġundertaken\":44079,\"ĠkÃ¸benhavn\":44080,\"Ġchai\":44081,\"ĠCroat\":44082,\"_Log\":44083,\"rowned\":44084,\"_med\":44085,\"ĉdate\":44086,\"#__\":44087,\"Ġcostumes\":44088,\"ĠRequires\":44089,\"affle\":44090,\"çĬ¶æĢģ\":44091,\"-Semit\":44092,\"elaide\":44093,\"ÐµÑĤÐ¾Ð´\":44094,\"Ġpestic\":44095,\"Ġdra\":44096,\"DOCUMENT\":44097,\"Ġ...čĊ\":44098,\"}`}Ċ\":44099,\"ĠAuction\":44100,\"ĠDock\":44101,\"xxxxxxxx\":44102,\"(getString\":44103,\"ħį\":44104,\"ĠborderWidth\":44105,\"ĠMachinery\":44106,\"Ġpredictable\":44107,\".SH\":44108,\"Ġamplitude\":44109,\".forRoot\":44110,\"INavigation\":44111,\"TableModel\":44112,\"attrib\":44113,\"Ġmaneuver\":44114,\"Ġexcav\":44115,\"BERS\":44116,\"Ġdapat\":44117,\"Ġinstallations\":44118,\".Async\":44119,\"Ġrays\":44120,\"=âĢĿ\":44121,\";ččĊ\":44122,\".crypto\":44123,\"_dbg\":44124,\"ĠEnumerable\":44125,\"OfSize\":44126,\"_epochs\":44127,\"mw\":44128,\"MENU\":44129,\"outline\":44130,\"ĠPapers\":44131,\"============Ċ\":44132,\"Ġuniforms\":44133,\"ĠGig\":44134,\"-package\":44135,\"ĠJenkins\":44136,\"ĠHomePage\":44137,\".isSelected\":44138,\"Ġmechanic\":44139,\"MK\":44140,\"ĠSounds\":44141,\"//-----------------------------------------------------------------------------Ċ\":44142,\"Ġresearching\":44143,\"Ġinfos\":44144,\"ographics\":44145,\"erset\":44146,\"(['/\":44147,\"ĠTimber\":44148,\".agent\":44149,\".toJSON\":44150,\"_commands\":44151,\"paring\":44152,\"_adjust\":44153,\".nome\":44154,\"(glm\":44155,\"StatusBar\":44156,\"filepath\":44157,\"?âĢĻ\":44158,\"Ġdetective\":44159,\"Ġunserer\":44160,\"ĠTibet\":44161,\"ENDED\":44162,\"(seed\":44163,\"Ġsneak\":44164,\"Ġamor\":44165,\"=\\\"//\":44166,\"ĠPanthers\":44167,\"allax\":44168,\"ĠLIVE\":44169,\"ĉDWORD\":44170,\"]=-\":44171,\"Ġtornado\":44172,\"/min\":44173,\"Ġlungs\":44174,\"-current\":44175,\"ĠBooking\":44176,\"åĪĹè¡¨\":44177,\"Ġenjoyment\":44178,\"à¤°\":44179,\"JA\":44180,\"typed\":44181,\".Btn\":44182,\"fat\":44183,\"ugal\":44184,\"ĠShares\":44185,\"Ġdisgr\":44186,\"ĠBAR\":44187,\"ĠFOX\":44188,\"Opcode\":44189,\"ĠSz\":44190,\"keydown\":44191,\"ictionaries\":44192,\"Ġdetailing\":44193,\"}))Ċ\":44194,\"Ġpok\":44195,\"Ġdemonstrating\":44196,\"Ġnotation\":44197,\"layers\":44198,\"@if\":44199,\"ĠNPR\":44200,\".strictEqual\":44201,\"ĠRecipes\":44202,\".Tensor\":44203,\"Ġliquor\":44204,\"Ġdebts\":44205,\".endsWith\":44206,\"Wheel\":44207,\".Pos\":44208,\"CSV\":44209,\"$arity\":44210,\"Ġunstable\":44211,\"(loss\":44212,\"ENSOR\":44213,\"Ġeleven\":44214,\"ĠLopez\":44215,\"ĠHopkins\":44216,\"conom\":44217,\"ĠSeth\":44218,\"Ġpoems\":44219,\"Quant\":44220,\"Ġgsl\":44221,\"Ġsyrup\":44222,\"Ġsibling\":44223,\"Ġcass\":44224,\"-vous\":44225,\"Ã¶t\":44226,\"_PATTERN\":44227,\"_SECTION\":44228,\"estimated\":44229,\"upgrade\":44230,\".mongodb\":44231,\"ĠBoat\":44232,\"_CTX\":44233,\"Ġfetching\":44234,\"ustin\":44235,\"piel\":44236,\"Marg\":44237,\"Reflection\":44238,\"Ġduct\":44239,\"ĠMunicipal\":44240,\"Ġbx\":44241,\".GetCurrent\":44242,\"mlink\":44243,\"ĠAccounting\":44244,\"ĠGeneva\":44245,\"_Pos\":44246,\"Ġpasser\":44247,\"Ġhearings\":44248,\"compan\":44249,\"Ġfragile\":44250,\"Initializer\":44251,\"walker\":44252,\".Material\":44253,\"ĠHunting\":44254,\"tryside\":44255,\"Ġkat\":44256,\"Ġclerk\":44257,\"áŁ\":44258,\"doing\":44259,\"ĉgroup\":44260,\"Ġsanction\":44261,\".lb\":44262,\"ĠLazy\":44263,\"ĠConstraint\":44264,\"Pagination\":44265,\"Ġpouvez\":44266,\"ĠIndicates\":44267,\"MER\":44268,\"Ġcours\":44269,\"Ġyearly\":44270,\"Ġgrosse\":44271,\"abbrev\":44272,\"ĠDON\":44273,\"Ġproceeded\":44274,\"entlich\":44275,\"ĠpropertyName\":44276,\"ĠTeaching\":44277,\"stadt\":44278,\"Ġcutoff\":44279,\"orners\":44280,\"Ġafrica\":44281,\"Ġrenders\":44282,\"ĠYankees\":44283,\"ĠToolbar\":44284,\"spaces\":44285,\".fillStyle\":44286,\"Ġsegundo\":44287,\"_strlen\":44288,\".Firebase\":44289,\"å¤Ħ\":44290,\"Ġmentioning\":44291,\"\\\\(\":44292,\"ĠValve\":44293,\"Setter\":44294,\"Ġspans\":44295,\"ĠAlcohol\":44296,\"ĠLetters\":44297,\"\\\\xe\":44298,\"ĠTK\":44299,\"_BLE\":44300,\".getResult\":44301,\"<Player\":44302,\"ĠPatt\":44303,\"Ġeasing\":44304,\"Ġturkey\":44305,\"ĠFen\":44306,\"')\\\"\":44307,\"Ġconfined\":44308,\"Ġinclus\":44309,\"Superview\":44310,\"(withIdentifier\":44311,\"encial\":44312,\"Ġstuffed\":44313,\"Theta\":44314,\"Ġeconomists\":44315,\"}));ĊĊ\":44316,\"cookies\":44317,\"ĠRoose\":44318,\"ĠCheese\":44319,\"Ġfichier\":44320,\"Ġenforced\":44321,\"ABB\":44322,\"noÅĽci\":44323,\"_ALLOW\":44324,\"Ġrecruited\":44325,\"Ġexpenditure\":44326,\"-night\":44327,\"ĠassertNotNull\":44328,\"_execute\":44329,\"ĠØ¯\":44330,\"INDEX\":44331,\"_FMT\":44332,\"Ġrescued\":44333,\"ĠMonthly\":44334,\"ĠConservation\":44335,\"ĠGeb\":44336,\"Obama\":44337,\"Epoch\":44338,\"icies\":44339,\"ĠOrt\":44340,\"Ġsoit\":44341,\"(icon\":44342,\"Friends\":44343,\"mol\":44344,\"Ġgrounded\":44345,\"ĠCause\":44346,\"adena\":44347,\"WEEN\":44348,\"ĠLun\":44349,\"ITIVE\":44350,\".loop\":44351,\"_until\":44352,\"Ġcorr\":44353,\".edges\":44354,\"Ġhypoth\":44355,\"cheduling\":44356,\"translator\":44357,\"ĠÐľ\":44358,\"Rom\":44359,\"ãĢĳĊĊ\":44360,\"ĠXamarin\":44361,\"Ġviolating\":44362,\".anchor\":44363,\"---ĊĊ\":44364,\"Ġtrader\":44365,\"ADVERTISEMENT\":44366,\"Ġunsere\":44367,\"ĠDAO\":44368,\"Ġblond\":44369,\"ĠPAT\":44370,\".glob\":44371,\"Ġè¾ĵ\":44372,\"Ġsplitting\":44373,\"Ġunsubscribe\":44374,\"Ġatmospheric\":44375,\"ĠTrim\":44376,\"Ġcitation\":44377,\"Ġinference\":44378,\"ĠFt\":44379,\"ĠDarwin\":44380,\"findOne\":44381,\"ĠGel\":44382,\"(Convert\":44383,\"Ġaccessor\":44384,\";text\":44385,\"(sorted\":44386,\"Ġjudged\":44387,\");\\\\\":44388,\":p\":44389,\"Ġmeine\":44390,\"ĠSlim\":44391,\".Commands\":44392,\"Ġperceive\":44393,\"coholic\":44394,\"<Data\":44395,\".entrySet\":44396,\"ĠassertFalse\":44397,\"ĠPatrol\":44398,\"ensem\":44399,\"ÅĤÄħ\":44400,\"¨¡\":44401,\"WIDTH\":44402,\"ĠRescue\":44403,\"ĠUIF\":44404,\"_THRESHOLD\":44405,\"ĠMichel\":44406,\"ATERIAL\":44407,\"opensource\":44408,\"ĠDiana\":44409,\"Ġinvites\":44410,\"_BODY\":44411,\"Ġreservoir\":44412,\"Ġroi\":44413,\"cust\":44414,\"(tc\":44415,\"ï¼ģ\\\");Ċ\":44416,\"Ġfestivals\":44417,\"Ġperformers\":44418,\"Ġclimbed\":44419,\"Ġjungle\":44420,\"StringLength\":44421,\"Ġunlawful\":44422,\"ierre\":44423,\"vertisement\":44424,\"Ġstakes\":44425,\"Ġhats\":44426,\"Modify\":44427,\"ĠLETTER\":44428,\".Hide\":44429,\"Ġstatutory\":44430,\"_white\":44431,\"ĠPerl\":44432,\"utenberg\":44433,\"emple\":44434,\".World\":44435,\"Ġoverlooked\":44436,\"Ġconcludes\":44437,\"/*================================================================\":44438,\"-wise\":44439,\"ĉstream\":44440,\"population\":44441,\"Ġevento\":44442,\"Ġillustrations\":44443,\"fts\":44444,\"Ġautof\":44445,\"ĠProcedure\":44446,\"Ġdeserved\":44447,\"-times\":44448,\"Ġgol\":44449,\"NSError\":44450,\"crest\":44451,\"ĠPakistani\":44452,\"anych\":44453,\"getCurrent\":44454,\"Ġlar\":44455,\"ntl\":44456,\"ĠRebecca\":44457,\"Ġmateria\":44458,\"ĠfindBy\":44459,\"/ad\":44460,\"Callbacks\":44461,\"ĠAls\":44462,\"ĠKatie\":44463,\"ĠObservableCollection\":44464,\"ĠDocumentation\":44465,\"Typed\":44466,\"ĠCultureInfo\":44467,\"ĠTimothy\":44468,\"Ġlateral\":44469,\"\\\"type\":44470,\"Ġunauthorized\":44471,\"Ġteachings\":44472,\"Ġdebugger\":44473,\"[value\":44474,\"Ġalors\":44475,\"Ġuz\":44476,\"Ġscatter\":44477,\"Ġdownward\":44478,\"Ġmigli\":44479,\"statusCode\":44480,\"Ġ())\":44481,\"ĠMW\":44482,\"ĠÐ¼Ð¾Ð¶\":44483,\"ROSS\":44484,\".buf\":44485,\"Ġfairy\":44486,\"ĠInfrastructure\":44487,\"=>\\\"\":44488,\"tlement\":44489,\"$(\\\"\":44490,\"FromString\":44491,\"ĠBild\":44492,\"Ġconventions\":44493,\"_native\":44494,\"ĠInspector\":44495,\"ĠPist\":44496,\"ubar\":44497,\"Ġregs\":44498,\"ĠPilot\":44499,\"Thus\":44500,\">'+\":44501,\"Ġcela\":44502,\".news\":44503,\"(Product\":44504,\"Living\":44505,\"Russia\":44506,\"Ġfacet\":44507,\"etical\":44508,\"Ġ['$\":44509,\"/[\":44510,\"ĠDire\":44511,\"Ġgases\":44512,\"ĠINFORMATION\":44513,\"ĠEat\":44514,\"ĠForums\":44515,\"ĠCharacters\":44516,\"_met\":44517,\"Ġìĭľ\":44518,\"Ġkings\":44519,\"achie\":44520,\"ĠLambda\":44521,\"Ġtimers\":44522,\"ĠLighting\":44523,\"ĠCasey\":44524,\"addir\":44525,\"andex\":44526,\".answer\":44527,\"ĠHip\":44528,\"ĠPrincip\":44529,\"StartDate\":44530,\"ĠãĢĮ\":44531,\"tres\":44532,\"Ġ&#\":44533,\".MaxValue\":44534,\"ĠProblems\":44535,\"Ġlatex\":44536,\"OfClass\":44537,\"ĠLynn\":44538,\"//'\":44539,\"Ġvoyage\":44540,\"Ġshuttle\":44541,\"ĠRoller\":44542,\"ĠRuntimeError\":44543,\"uya\":44544,\"Dic\":44545,\"ĉbuilder\":44546,\"Ġbullying\":44547,\"Ġsimplest\":44548,\".called\":44549,\"ĠLR\":44550,\"Ġmorality\":44551,\"Ġsturdy\":44552,\"tracking\":44553,\".swagger\":44554,\"_BIND\":44555,\"ITOR\":44556,\"-urlencoded\":44557,\"ĠÑħ\":44558,\"ĠTrinity\":44559,\"Ġtraps\":44560,\"Ġ|-\":44561,\"ĠsetText\":44562,\"Ġbargain\":44563,\"Ġbrakes\":44564,\".getCode\":44565,\"Ġmigrate\":44566,\"Ġribbon\":44567,\")return\":44568,\"Ġcharger\":44569,\"acom\":44570,\"ADIUS\":44571,\"ĠAmbassador\":44572,\"-after\":44573,\"Ġanni\":44574,\"ĉspin\":44575,\"Concept\":44576,\"ĠHenderson\":44577,\"ĠHOST\":44578,\".rank\":44579,\"ĠNortheast\":44580,\"Ġberlin\":44581,\"Ġrequis\":44582,\".feed\":44583,\"ĠsourceMapping\":44584,\"ĠRencontre\":44585,\".ajax\":44586,\"nestjs\":44587,\"Ġtrek\":44588,\"ĠNacional\":44589,\"Ġ&[\":44590,\"Ġpayable\":44591,\"ortex\":44592,\"Ġdept\":44593,\"fieldName\":44594,\"Ġcompletes\":44595,\"ĠRVA\":44596,\"Ġonions\":44597,\"alignment\":44598,\"Formats\":44599,\"Ġ'{$\":44600,\"HashSet\":44601,\"ĠBod\":44602,\".InvariantCulture\":44603,\"Ġsettlements\":44604,\"Ġhydr\":44605,\".updated\":44606,\"venth\":44607,\"(seconds\":44608,\"=\\\"/\\\"\":44609,\"Ġwebpage\":44610,\"(ĊĊ\":44611,\"Ġtir\":44612,\"Ġtoes\":44613,\"ĠBrick\":44614,\"Ġambition\":44615,\"Pot\":44616,\"=max\":44617,\"ETIME\":44618,\"Ġdepot\":44619,\"calls\":44620,\"ĠNorwegian\":44621,\"`:\":44622,\"Ġburger\":44623,\"Ġprofessors\":44624,\"ĠAllocate\":44625,\"-thirds\":44626,\"-chart\":44627,\"Ġford\":44628,\"*N\":44629,\".kotlin\":44630,\"Ġpaperwork\":44631,\"ĠDEVICE\":44632,\"%@\\\",\":44633,\"respect\":44634,\"(mp\":44635,\"é«ĺ\":44636,\"-if\":44637,\"Ġcushion\":44638,\"obot\":44639,\"Ġparc\":44640,\"SPACE\":44641,\"ĠNetanyahu\":44642,\"Ġselfish\":44643,\"feat\":44644,\"Ġclientes\":44645,\"-tools\":44646,\"Ġporch\":44647,\"Ġjq\":44648,\".verbose\":44649,\"Ġliberals\":44650,\"])ĊĊĊ\":44651,\"pies\":44652,\"NotBlank\":44653,\"(term\":44654,\"ÈĽi\":44655,\"_Params\":44656,\".normalize\":44657,\"Bullet\":44658,\"ASIC\":44659,\"(hex\":44660,\"_cliente\":44661,\"+,\":44662,\"_DI\":44663,\"Ġforthcoming\":44664,\"}\\\")]Ċ\":44665,\"seo\":44666,\"Um\":44667,\">Name\":44668,\"Ġcomfortably\":44669,\"irectional\":44670,\"WITH\":44671,\"/pr\":44672,\"ĠPoor\":44673,\"ĠVitamin\":44674,\"vic\":44675,\"GH\":44676,\"Ġpriorit\":44677,\"ĠNN\":44678,\"ĠClosed\":44679,\"¤í\":44680,\"ĠisOpen\":44681,\"\\\\Console\":44682,\"AndFeel\":44683,\".SUCCESS\":44684,\"_OPERATION\":44685,\"polation\":44686,\"ĠTas\":44687,\"psz\":44688,\">'.\":44689,\"CURRENT\":44690,\"Vendor\":44691,\"hosts\":44692,\"ĠErd\":44693,\">tagger\":44694,\"ĠsourceMappingURL\":44695,\"Ġmarathon\":44696,\"_closed\":44697,\"Ġexemption\":44698,\"Ġrecognizes\":44699,\"ideshow\":44700,\"'$\":44701,\"('/');Ċ\":44702,\"mits\":44703,\"warz\":44704,\"ĠCherry\":44705,\"µ¬\":44706,\"nor\":44707,\"porte\":44708,\"Ġwl\":44709,\"_backup\":44710,\".getBoolean\":44711,\".getResource\":44712,\"Ġdefinitive\":44713,\".EditText\":44714,\"ĠsÃŃ\":44715,\".CONT\":44716,\"ĠPLAYER\":44717,\".cards\":44718,\"ĠShore\":44719,\"('/')Ċ\":44720,\"cluir\":44721,\"WebDriver\":44722,\"(month\":44723,\"-release\":44724,\"Ġinspector\":44725,\"å£\":44726,\"ĠNF\":44727,\"_clip\":44728,\"åŃĲ\":44729,\"Ġinteracting\":44730,\".tmp\":44731,\"Ġ'''ĊĊ\":44732,\"Ġdee\":44733,\"Ġfrost\":44734,\"\\\"]))Ċ\":44735,\"ĠPlaces\":44736,\"Throws\":44737,\"fork\":44738,\"/day\":44739,\"iPhone\":44740,\"ĠMIC\":44741,\"Ġfolding\":44742,\"Ġcrore\":44743,\"ĠChiefs\":44744,\"pherical\":44745,\"(price\":44746,\".WriteString\":44747,\"Ġexiting\":44748,\"]',Ċ\":44749,\"ighting\":44750,\"Ingredient\":44751,\"(vertex\":44752,\"ĠscrollView\":44753,\"hf\":44754,\":new\":44755,\"SEN\":44756,\"sector\":44757,\"Ġspins\":44758,\"ĠScheduler\":44759,\"otechn\":44760,\"semicolon\":44761,\"FontOfSize\":44762,\"ĠSpecifically\":44763,\"flamm\":44764,\".ObjectId\":44765,\"Ġconta\":44766,\"_permissions\":44767,\"ĉFROM\":44768,\"ICODE\":44769,\"/kg\":44770,\"ĠHotels\":44771,\"-med\":44772,\"ĠDin\":44773,\"Ġnavy\":44774,\"getParam\":44775,\"Ġmend\":44776,\"Ġportrayed\":44777,\"ĠMetropolitan\":44778,\"Painter\":44779,\"Ġreferral\":44780,\"_good\":44781,\"Ġmarvel\":44782,\"osaic\":44783,\">(&\":44784,\".ur\":44785,\"Ġestos\":44786,\"William\":44787,\"Ġtimber\":44788,\"Ġquelques\":44789,\"ĠDocuments\":44790,\".Xaml\":44791,\"Ġbatches\":44792,\"éģĵ\":44793,\"ĠReleased\":44794,\"Tail\":44795,\"COOKIE\":44796,\"heid\":44797,\"_station\":44798,\"ĠVia\":44799,\"Sale\":44800,\"ĠRepeat\":44801,\"Ġpromin\":44802,\"ĠZo\":44803,\"-forward\":44804,\"ĠIon\":44805,\"itary\":44806,\"Ġjus\":44807,\"-request\":44808,\"Ġproudly\":44809,\"ĠStreaming\":44810,\"(MouseEvent\":44811,\"ĠSprint\":44812,\"_rotation\":44813,\"Repositories\":44814,\"Ġtart\":44815,\"ĠÑģÐ²\":44816,\"Ġmappings\":44817,\"èª\":44818,\"Cu\":44819,\"Cycle\":44820,\"Ġbun\":44821,\"ĉlua\":44822,\"ãĥī\":44823,\"Ġ((!\":44824,\"Ġcollectively\":44825,\"ĠCond\":44826,\"Ġwszyst\":44827,\"(lib\":44828,\"openhagen\":44829,\"_skip\":44830,\".ColumnHeader\":44831,\"éĤ\":44832,\"perienced\":44833,\"ıè¿°\":44834,\"_props\":44835,\"Ġcontrace\":44836,\"Ġmatchup\":44837,\"abetic\":44838,\".members\":44839,\"RECT\":44840,\"(dat\":44841,\"Ġsog\":44842,\"renom\":44843,\"_Method\":44844,\"Customers\":44845,\"fullname\":44846,\"ZN\":44847,\"retry\":44848,\"Ġkap\":44849,\"ĠNeu\":44850,\"èĬ\":44851,\"addChild\":44852,\"willReturn\":44853,\"_permalink\":44854,\"Ġenergetic\":44855,\"ĠWet\":44856,\"ĠMorr\":44857,\"Ġgcd\":44858,\"counts\":44859,\",type\":44860,\"dig\":44861,\"(Login\":44862,\"Ġcracks\":44863,\"Ġbacterial\":44864,\"ĠMeat\":44865,\"ĠArmstrong\":44866,\"ĠBronze\":44867,\"Ġapproximate\":44868,\"_dirs\":44869,\"liga\":44870,\"ÅĤad\":44871,\"Ġkindness\":44872,\"Ġcontre\":44873,\"ĠEVERY\":44874,\"MET\":44875,\"Ġannouncements\":44876,\"gpio\":44877,\"ĠWaitForSeconds\":44878,\"ĠPhotoshop\":44879,\"Ġdiscontin\":44880,\"/dd\":44881,\"Ġtopology\":44882,\"anical\":44883,\".interface\":44884,\"aucoup\":44885,\".HashSet\":44886,\"ARIANT\":44887,\"(routes\":44888,\"ĠTeh\":44889,\"Ġhype\":44890,\"]\\\").\":44891,\"Ġslam\":44892,\"Ġbroth\":44893,\"-inter\":44894,\"ĠRid\":44895,\"-manager\":44896,\"Cancelar\":44897,\"ĠPagination\":44898,\"Ġsoundtrack\":44899,\"Ġposterior\":44900,\"Ġscrub\":44901,\"creating\":44902,\"-*\":44903,\"irteen\":44904,\".dy\":44905,\".symmetric\":44906,\"Ġ\\\"\\\".\":44907,\"===============\":44908,\"Ġchassis\":44909,\"ĠnumberOfRows\":44910,\"Developer\":44911,\"_bins\":44912,\"ĠOUR\":44913,\"rieb\":44914,\"Pros\":44915,\"ĠwiÄĻ\":44916,\"\\\"d\":44917,\"Ġasyncio\":44918,\"zeigen\":44919,\"_spi\":44920,\".ALL\":44921,\"Ġscrews\":44922,\"Chinese\":44923,\"ĠapiKey\":44924,\"Ġunsuccessful\":44925,\"ĠSeahawks\":44926,\"ORG\":44927,\"ç«ł\":44928,\"Ġprofessionally\":44929,\"ĠCoupon\":44930,\"åŃĹæ®µ\":44931,\"Convention\":44932,\"Ġpolym\":44933,\"æīĭ\":44934,\"Ġsalvation\":44935,\"Ġengineered\":44936,\"ĠWrest\":44937,\"ĠGCC\":44938,\"Ġwarmer\":44939,\"LayoutConstraint\":44940,\"Ġaggrav\":44941,\"Scripts\":44942,\"venture\":44943,\"Ġrefrigerator\":44944,\"Ġinnovations\":44945,\"ĠRunner\":44946,\"NIC\":44947,\"ĠRolling\":44948,\"ControlEvents\":44949,\"Ġloos\":44950,\"pac\":44951,\"ĉpanel\":44952,\"efe\":44953,\"ĠBuddha\":44954,\"--------------Ċ\":44955,\"åºĵ\":44956,\"(forKey\":44957,\"Ġlumin\":44958,\"Ġ(?\":44959,\"ĠAIDS\":44960,\",user\":44961,\"imientos\":44962,\"contentType\":44963,\"antlr\":44964,\"é¦\":44965,\"ĠWelt\":44966,\"Production\":44967,\"might\":44968,\"ĠVII\":44969,\"\\\",(\":44970,\"Ġobserving\":44971,\"Ġdeliberate\":44972,\"(control\":44973,\"Ġwithd\":44974,\"Ġsemana\":44975,\"STACK\":44976,\"uchen\":44977,\"Nice\":44978,\"ĠDeutschland\":44979,\"ĠSpecifies\":44980,\"dma\":44981,\"izio\":44982,\"ĠFacts\":44983,\"_popup\":44984,\"ĠDirectors\":44985,\"{:\":44986,\"[R\":44987,\"ĠÑįÐ»ÐµÐ¼ÐµÐ½ÑĤ\":44988,\"Ġplat\":44989,\"Ġdirecting\":44990,\"ä¸ī\":44991,\"ĠGilbert\":44992,\"âĢ¦.ĊĊ\":44993,\".qml\":44994,\"Ġthereafter\":44995,\"Ġdisposition\":44996,\"draft\":44997,\"Ġsurgeon\":44998,\"ĠInsider\":44999,\"Blend\":45000,\"ĠTrev\":45001,\"trinsic\":45002,\"Topics\":45003,\"rieve\":45004,\"_FILENAME\":45005,\"Ġautres\":45006,\"Jose\":45007,\"Producer\":45008,\"erus\":45009,\"Ġpetit\":45010,\"ĠNEXT\":45011,\"ĠFilters\":45012,\"Ġreplicate\":45013,\"\\\"]).\":45014,\"Ġlenders\":45015,\"]\\\",Ċ\":45016,\";charset\":45017,\"CppObject\":45018,\"Ġfloral\":45019,\"ĠTipo\":45020,\"Ġcircuits\":45021,\"easy\":45022,\"(&$\":45023,\"itta\":45024,\"eryl\":45025,\"_COMMON\":45026,\"'}}>Ċ\":45027,\"-backed\":45028,\"(variable\":45029,\"(Index\":45030,\"Ġvoir\":45031,\"_locations\":45032,\"++){\":45033,\"ĠLouisville\":45034,\"Ġgratitude\":45035,\".Mockito\":45036,\"ĠPowers\":45037,\"ieurs\":45038,\"Ġgeographic\":45039,\"rale\":45040,\"Ġcra\":45041,\"ĠSpurs\":45042,\"iphertext\":45043,\"ACION\":45044,\"-common\":45045,\"Ġvictories\":45046,\"ĠFinals\":45047,\".shuffle\":45048,\"-million\":45049,\"_PROC\":45050,\"assume\":45051,\"Ġils\":45052,\"DBC\":45053,\"BootTest\":45054,\"Ġlavor\":45055,\".testing\":45056,\".ast\":45057,\"\\\"]/\":45058,\"moid\":45059,\"Ġqualification\":45060,\"gesch\":45061,\"ĉput\":45062,\"Ġairports\":45063,\"JI\":45064,\"Teacher\":45065,\"_uniform\":45066,\"Ġnama\":45067,\"ĠBast\":45068,\"ertype\":45069,\"capture\":45070,\"getAll\":45071,\"ĠReynolds\":45072,\"ooled\":45073,\".comments\":45074,\"Ġchin\":45075,\").*\":45076,\"ĠÐ¸Ð»Ð¸\":45077,\"tgl\":45078,\"udos\":45079,\"ĠdÃŃas\":45080,\"chai\":45081,\".program\":45082,\"Ġpsz\":45083,\"ĉicon\":45084,\"phil\":45085,\"entral\":45086,\"_WRAP\":45087,\"ovi\":45088,\"Ġnostalg\":45089,\"Infinity\":45090,\"ĉyield\":45091,\"Ġvitamins\":45092,\"Quaternion\":45093,\"Sink\":45094,\"_goods\":45095,\"Ġ........\":45096,\"ĠWings\":45097,\"uridad\":45098,\"-story\":45099,\"\\\"])ĊĊ\":45100,\"idelity\":45101,\"TypeDef\":45102,\"Gtk\":45103,\"ĠíĮ\":45104,\"_Main\":45105,\"Ġchez\":45106,\"ĠRaven\":45107,\"Ġpayroll\":45108,\"Ġfreelance\":45109,\"LLU\":45110,\"ĠMend\":45111,\"eday\":45112,\"ApiModelProperty\":45113,\".FormBorderStyle\":45114,\"Ġeconomist\":45115,\"stanbul\":45116,\"Ġfreight\":45117,\"-Agent\":45118,\"(meta\":45119,\"Ġsymmetry\":45120,\"Ġ'..\":45121,\".Calendar\":45122,\"-aut\":45123,\"gf\":45124,\"pent\":45125,\"yclopedia\":45126,\"Ġwishing\":45127,\"ĊĊĊĊĊĊĊĊĊĊĊĊ\":45128,\"Ġgentleman\":45129,\"Ġê³\":45130,\"=#\":45131,\"Ġlectures\":45132,\"âĢľIn\":45133,\"Ġ!_\":45134,\"Ġhb\":45135,\"ĠVendor\":45136,\"Recently\":45137,\"_notes\":45138,\"æıĲç¤º\":45139,\"\\\"My\":45140,\"HeadersHeight\":45141,\"_SO\":45142,\"Ġunwilling\":45143,\"Ġsuperhero\":45144,\"gio\":45145,\"psy\":45146,\"ĠPeer\":45147,\"javax\":45148,\"&apos\":45149,\"ĠCrisis\":45150,\"ordinal\":45151,\"Memcpy\":45152,\"++++++++++++++++\":45153,\"-val\":45154,\"Ġworkbook\":45155,\"-ap\":45156,\"=k\":45157,\"Ġmetallic\":45158,\"_peer\":45159,\"ByPrimaryKey\":45160,\"_SD\":45161,\"uator\":45162,\"_SHADER\":45163,\")Math\":45164,\".Transform\":45165,\"Ġcows\":45166,\"Phi\":45167,\"ĠClem\":45168,\"(_(\\\"\":45169,\"ĠLud\":45170,\"-delay\":45171,\"ĠSecurities\":45172,\"ĠOrthodox\":45173,\"Symfony\":45174,\"(report\":45175,\"Ġentertain\":45176,\"EPS\":45177,\"izoph\":45178,\"exual\":45179,\"IRD\":45180,\"ä»İ\":45181,\"Ġlith\":45182,\"Ġsanitize\":45183,\"Ġfeminine\":45184,\"ISBN\":45185,\".authentication\":45186,\"_pipeline\":45187,\"/constants\":45188,\"ĠCONF\":45189,\"Ġlucr\":45190,\"ricia\":45191,\".ttf\":45192,\".setContent\":45193,\"Ġstan\":45194,\"orean\":45195,\"ĠLloyd\":45196,\".rawValue\":45197,\"Ġgor\":45198,\"ĠBrowns\":45199,\"Regression\":45200,\"Ġlowering\":45201,\"naissance\":45202,\"Ġblows\":45203,\"Ġamazed\":45204,\"Ġunrelated\":45205,\"Reviews\":45206,\"Ġruby\":45207,\"ĠModifier\":45208,\"Ġgiants\":45209,\".thread\":45210,\"Ġcontainment\":45211,\"ĠStartCoroutine\":45212,\"umat\":45213,\"orelease\":45214,\"ĠRandy\":45215,\"@endif\":45216,\"Digest\":45217,\"Ġsuburban\":45218,\"=\\\");Ċ\":45219,\"Ġannonce\":45220,\".variable\":45221,\"\\\\Foundation\":45222,\"Ġacre\":45223,\"Van\":45224,\"Ġtuples\":45225,\"dns\":45226,\"ĠStanding\":45227,\"_large\":45228,\"Ġboxing\":45229,\"SupportActionBar\":45230,\"ĠFortune\":45231,\"ĠRum\":45232,\"_multiple\":45233,\"archical\":45234,\"Ġfwrite\":45235,\"_quote\":45236,\"Ġfoolish\":45237,\"Ġcomprising\":45238,\"ĠÐ¾Ð¿\":45239,\"-selected\":45240,\"vf\":45241,\"maid\":45242,\"Nama\":45243,\"(datetime\":45244,\"Ġindirectly\":45245,\"gart\":45246,\"fixtures\":45247,\"chos\":45248,\"ĠHalo\":45249,\"Ġrecurring\":45250,\"-news\":45251,\"vil\":45252,\"ĠNursing\":45253,\"-produ\":45254,\"ĠHQ\":45255,\"\\\\HttpFoundation\":45256,\"enci\":45257,\"auen\":45258,\"Ġvy\":45259,\"ocracy\":45260,\"Ġdelegation\":45261,\"Ġasphalt\":45262,\"ĠsetSelected\":45263,\"kok\":45264,\"/rest\":45265,\"metics\":45266,\"ĠNSDate\":45267,\"Ġtravelled\":45268,\"Ġrecib\":45269,\"Ġmime\":45270,\"CLIENT\":45271,\"ĠGU\":45272,\"ĠHANDLE\":45273,\"/Q\":45274,\"[z\":45275,\"Ġbothered\":45276,\"ĠBBQ\":45277,\"Ã§as\":45278,\"_examples\":45279,\"_FIN\":45280,\"ĠwhiteColor\":45281,\"Ġastronom\":45282,\"-dir\":45283,\"Ġsovereign\":45284,\"Ġbreeze\":45285,\"Ġinning\":45286,\"ĠEdmonton\":45287,\"gli\":45288,\".blogspot\":45289,\"jsx\":45290,\"Ġversa\":45291,\"ĠMohammed\":45292,\".Job\":45293,\"-toggler\":45294,\"ĠÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ\":45295,\"ardon\":45296,\"Ġnewborn\":45297,\"Ġnaval\":45298,\"noteq\":45299,\"Ġtumblr\":45300,\"Ġhentai\":45301,\"ĠTypically\":45302,\"Ġloot\":45303,\".Sprite\":45304,\"Flight\":45305,\"Ġwavelength\":45306,\"-sk\":45307,\"ĠElle\":45308,\"_exports\":45309,\"ĠÑı\":45310,\"ĠIH\":45311,\"izophren\":45312,\"Ġíģ\":45313,\"_primary\":45314,\"Ġmois\":45315,\"ĠBN\":45316,\"Ġsystemic\":45317,\"Ġdiferentes\":45318,\"INCT\":45319,\"Ġ''ĊĊ\":45320,\"$q\":45321,\"WidgetItem\":45322,\"clide\":45323,\"$file\":45324,\"Lemma\":45325,\"/table\":45326,\"agrid\":45327,\"ĠMongoDB\":45328,\"inte\":45329,\"Ġapprent\":45330,\"ÂŃing\":45331,\".Db\":45332,\"ĠÃĤ\":45333,\"hammer\":45334,\"='';Ċ\":45335,\"Ġbrokers\":45336,\"itlement\":45337,\"semblies\":45338,\"Ele\":45339,\"{x\":45340,\"Ġlastname\":45341,\"<-\":45342,\"Ġflatten\":45343,\"_band\":45344,\".Root\":45345,\".readFileSync\":45346,\"======\":45347,\".rx\":45348,\"?čĊ\":45349,\"Ġmetaphor\":45350,\"Ti\":45351,\"conte\":45352,\"Ġdebit\":45353,\"Ġcontempt\":45354,\"CppType\":45355,\"æĶ¯\":45356,\"FormField\":45357,\"ratio\":45358,\"osopher\":45359,\"Ġimplant\":45360,\"PURE\":45361,\"Ġalta\":45362,\"_management\":45363,\"Ġrefine\":45364,\"ĠCheckBox\":45365,\"ĠCharl\":45366,\"-version\":45367,\"conditional\":45368,\"venues\":45369,\"Ġrifles\":45370,\"Ġoffspring\":45371,\"Ġmilling\":45372,\"Ġsharply\":45373,\"Ġunderwater\":45374,\"(origin\":45375,\"_Control\":45376,\"Ġ.$\":45377,\"Plugins\":45378,\"Ġdrying\":45379,\"Ġillustrates\":45380,\"-u\":45381,\"Ġvegetarian\":45382,\"npc\":45383,\"Heart\":45384,\";',Ċ\":45385,\"comma\":45386,\"teenth\":45387,\"asan\":45388,\"/spec\":45389,\"_moves\":45390,\"-margin\":45391,\"Ġingen\":45392,\"ÂłÂłÂł\":45393,\"Ġprojet\":45394,\"Ġotra\":45395,\"Ġbras\":45396,\".utc\":45397,\"Ġslept\":45398,\"=sub\":45399,\"abilit\":45400,\"poster\":45401,\"Ġsdk\":45402,\"ouncill\":45403,\"Ġwd\":45404,\"PreparedStatement\":45405,\"ĠDrum\":45406,\"(attribute\":45407,\"ĠEthernet\":45408,\"ĉDB\":45409,\"California\":45410,\"cube\":45411,\"[I\":45412,\".Created\":45413,\"ĠHM\":45414,\"Ġtracing\":45415,\"FormsModule\":45416,\"-you\":45417,\".currency\":45418,\"feeding\":45419,\"Ġtbody\":45420,\"Li\":45421,\"accion\":45422,\"nas\":45423,\"Ġtrouver\":45424,\"NONE\":45425,\"\\\"},čĊ\":45426,\"Ġftp\":45427,\"WithIdentifier\":45428,\"polate\":45429,\"FileInfo\":45430,\"Ġpursued\":45431,\"ĠĠĠĠčĊĠĠĠĠčĊ\":45432,\"DESCRIPTION\":45433,\"}*/Ċ\":45434,\"FromNib\":45435,\"Ġdecorative\":45436,\"_SSL\":45437,\"(chat\":45438,\"TLS\":45439,\"Ġsurprises\":45440,\"alculate\":45441,\"ĠSplash\":45442,\"(Configuration\":45443,\"ĠSEM\":45444,\"imson\":45445,\"/library\":45446,\"<Double\":45447,\".robot\":45448,\"ÂłÂłÂłÂłÂłÂłÂłÂł\":45449,\"ĠCPF\":45450,\"ĠUnderstanding\":45451,\"Ġcosmetic\":45452,\"ĠXt\":45453,\"tips\":45454,\"+k\":45455,\"(\\\"'\":45456,\"ĠPDT\":45457,\"WAR\":45458,\".getObject\":45459,\"ĠTraditional\":45460,\".slug\":45461,\"ĠDipl\":45462,\"=\\\"\\\",\":45463,\"ĠFilms\":45464,\"ĠAnim\":45465,\".help\":45466,\"Ġembassy\":45467,\"ĠBoots\":45468,\"Ġbunk\":45469,\"-risk\":45470,\"Ġpci\":45471,\"Ġ/\\\\.\":45472,\"ĠIPT\":45473,\"Ġcrashing\":45474,\"Ġipv\":45475,\"_ke\":45476,\"ĠRESP\":45477,\".LogError\":45478,\"Ġinadequate\":45479,\"Ion\":45480,\"ĠFÃ¼r\":45481,\"ricula\":45482,\"ĠshouldBe\":45483,\"already\":45484,\"'].\\\"</\":45485,\"ĠStuff\":45486,\"Digite\":45487,\"Ġtranslator\":45488,\"_sprite\":45489,\"letal\":45490,\"Ġmaior\":45491,\"ĠSexe\":45492,\"thanks\":45493,\"ĠCompleted\":45494,\"Ġgasoline\":45495,\".attrs\":45496,\"bagai\":45497,\"ĠOrig\":45498,\":],\":45499,\".locale\":45500,\"ĠRoma\":45501,\"ÃŃf\":45502,\"Ġfavored\":45503,\"Ġvain\":45504,\"Ġspoon\":45505,\"ĠJahren\":45506,\"Ġning\":45507,\"WWW\":45508,\",float\":45509,\"_DATABASE\":45510,\"Bootstrap\":45511,\"ĠCBC\":45512,\"ĠChunk\":45513,\"_into\":45514,\"ĠKol\":45515,\"Ġdefenses\":45516,\"oredProcedure\":45517,\"balls\":45518,\"TextChanged\":45519,\"Ġshaping\":45520,\"Ġ}}>\":45521,\"GED\":45522,\"faq\":45523,\"Ġoptionally\":45524,\"_Dis\":45525,\"ĠSuccessful\":45526,\"ĠCensus\":45527,\"Ġincarcer\":45528,\"_CARD\":45529,\"Ġaviation\":45530,\"ĠGym\":45531,\"Authority\":45532,\".Bean\":45533,\"shader\":45534,\"NotExist\":45535,\"_TextChanged\":45536,\"ĠSTOP\":45537,\"(team\":45538,\"\\\"H\":45539,\"wg\":45540,\"Ġgrinder\":45541,\"Ġstripe\":45542,\"Ġpreservation\":45543,\"Claim\":45544,\"aversal\":45545,\"warehouse\":45546,\"targets\":45547,\"Trust\":45548,\"Ġallev\":45549,\",www\":45550,\"ousse\":45551,\"_chan\":45552,\"_Size\":45553,\"systems\":45554,\"Ġobjection\":45555,\"ĠKane\":45556,\"Ġcorros\":45557,\"ĠDSL\":45558,\"Ġua\":45559,\"ĠMH\":45560,\"ĠStrategic\":45561,\"_tcp\":45562,\"Ġê°Ĵ\":45563,\"Ġborrowed\":45564,\"ĠAch\":45565,\"ĉcommand\":45566,\"Ġgps\":45567,\"leston\":45568,\"ichever\":45569,\"ĠUA\":45570,\"Ġassaulted\":45571,\"Ġspecializes\":45572,\"ĉsearch\":45573,\"Hotel\":45574,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":45575,\"ĠPitch\":45576,\"ĠÙģ\":45577,\"READY\":45578,\"Ġparental\":45579,\"ĠgÃ©nÃ©\":45580,\"ĠdonnÃ©es\":45581,\"Ġdetain\":45582,\"TARGET\":45583,\"Ġprotagonist\":45584,\"ĠclearInterval\":45585,\"ĠIconButton\":45586,\"ĠGetAll\":45587,\"TypeInfo\":45588,\"EH\":45589,\"âĢľThey\":45590,\"Ġ{[\":45591,\"Ġgag\":45592,\"ĠÚ©\":45593,\"ĠDropdown\":45594,\".free\":45595,\"gone\":45596,\"imens\":45597,\"Ġinstal\":45598,\"ĉcurl\":45599,\"_CAN\":45600,\"ĠBone\":45601,\"ï¼Ķ\":45602,\"onyms\":45603,\"-government\":45604,\".bindingNavigator\":45605,\"ĠDans\":45606,\"ĠMcL\":45607,\"(en\":45608,\">(_\":45609,\"ÐĴÑĭ\":45610,\".*;čĊ\":45611,\"=j\":45612,\"-cor\":45613,\"Son\":45614,\".ToolStripItem\":45615,\"-around\":45616,\"_XML\":45617,\"endDate\":45618,\"Ġslack\":45619,\"Ġrotated\":45620,\"Ġnoqa\":45621,\"Ġcottage\":45622,\"Ġencontrar\":45623,\"_skill\":45624,\"houette\":45625,\"!čĊ\":45626,\".weather\":45627,\"Ġemphasized\":45628,\"å®¶\":45629,\"ĠÑģÐ¿Ð¸Ñģ\":45630,\"ĠCompiler\":45631,\"(android\":45632,\"ĠâĢº\":45633,\".turn\":45634,\"Ġsuppression\":45635,\"_calls\":45636,\"Ġ*@\":45637,\"(strlen\":45638,\".hex\":45639,\"ĠBills\":45640,\"ĠRSA\":45641,\"ÏĤ\":45642,\"ĠEscape\":45643,\"ementia\":45644,\"Ġfrontend\":45645,\"Ġpint\":45646,\"_exc\":45647,\"zzo\":45648,\"[],Ċ\":45649,\"Ġ\\\"','\\\"\":45650,\".Environment\":45651,\"Ġaforementioned\":45652,\"Ġendure\":45653,\"prototype\":45654,\"therapy\":45655,\"ssi\":45656,\"Deg\":45657,\"_plugins\":45658,\".userInfo\":45659,\"Printer\":45660,\"ĠPROGRAM\":45661,\"Ġruins\":45662,\"Ġempirical\":45663,\"Ġcrawl\":45664,\"ĠBoiler\":45665,\"-comment\":45666,\".subplot\":45667,\"_et\":45668,\"Ġ'.',\":45669,\"minor\":45670,\"ĠCustoms\":45671,\"Ġyaw\":45672,\"underline\":45673,\"ĠComo\":45674,\"(('\":45675,\"(mean\":45676,\"Ġchaque\":45677,\"ĠBlocks\":45678,\".rad\":45679,\"ilibrium\":45680,\"Ġwebdriver\":45681,\"Ġmelhor\":45682,\"dana\":45683,\"ĠAbuse\":45684,\"ĠSouthwest\":45685,\"ĠParen\":45686,\"PERTIES\":45687,\"ĉIL\":45688,\"Ġscream\":45689,\"vu\":45690,\"Ġincomes\":45691,\"Ġnim\":45692,\"Ġlace\":45693,\"Ġcompensate\":45694,\"Reverse\":45695,\"Dat\":45696,\"_attack\":45697,\"Ġnour\":45698,\"achen\":45699,\"cek\":45700,\"<Func\":45701,\"wie\":45702,\"compressed\":45703,\"-match\":45704,\"(\\\"\\\")]Ċ\":45705,\"imized\":45706,\".orientation\":45707,\".compareTo\":45708,\"Ġmassaggi\":45709,\"ĠìľĦ\":45710,\"Ġelbow\":45711,\"Ġantioxid\":45712,\"undreds\":45713,\"/tools\":45714,\"ĠROW\":45715,\"anmar\":45716,\"ĠWow\":45717,\"_ticket\":45718,\"Programming\":45719,\"Ġtheor\":45720,\"-review\":45721,\"())));Ċ\":45722,\"ĠRichardson\":45723,\"ĠPocket\":45724,\"][]\":45725,\"ampp\":45726,\"_health\":45727,\"ĠPOP\":45728,\"ĠNaval\":45729,\"Guess\":45730,\"Ġancestor\":45731,\".GetAll\":45732,\".localScale\":45733,\"ĠMapper\":45734,\"Ġaccumulation\":45735,\"Ġsimulated\":45736,\"ĠDrivers\":45737,\"ĠdÃ©s\":45738,\"curring\":45739,\"Ġelephant\":45740,\"Ġadvertised\":45741,\"Ġmailbox\":45742,\"SHIFT\":45743,\"ĠMonica\":45744,\"Ġanc\":45745,\"Ġwardrobe\":45746,\"Ingredients\":45747,\"Ġ||čĊ\":45748,\"ippy\":45749,\"Ġantibiotics\":45750,\"avings\":45751,\"(cx\":45752,\"ĠFerrari\":45753,\"ĠAnimator\":45754,\".dtype\":45755,\"removed\":45756,\"orderby\":45757,\"Ġcres\":45758,\"ocÃª\":45759,\"Ġpym\":45760,\"ĠCircular\":45761,\"@index\":45762,\"ĠWarm\":45763,\"Say\":45764,\"ĠAssistance\":45765,\"Ġcurtain\":45766,\"ĠMonte\":45767,\"ILER\":45768,\"ĠCVE\":45769,\"ĠDuck\":45770,\"ĠAllows\":45771,\"_fire\":45772,\"ĠDerby\":45773,\"Ġrepos\":45774,\"ĠhttpClient\":45775,\"Ġpsychiat\":45776,\"Ġnowadays\":45777,\"Ġcautious\":45778,\"ĠComputing\":45779,\"ĠcompletionHandler\":45780,\"ĠWelsh\":45781,\"ĠBEST\":45782,\"Ġstressful\":45783,\"_PE\":45784,\"æĹ¥æľŁ\":45785,\"ĠDataFrame\":45786,\"ĉInteger\":45787,\"_Print\":45788,\"Moves\":45789,\"Ġtransforming\":45790,\".Batch\":45791,\"yahoo\":45792,\"Positions\":45793,\"zej\":45794,\"Ġnood\":45795,\"iores\":45796,\"_*\":45797,\"Ġclk\":45798,\"ĠFloyd\":45799,\"Ġhap\":45800,\"fontsize\":45801,\"Ġnaz\":45802,\".notification\":45803,\"ĠDepression\":45804,\"Ġacne\":45805,\"***ĊĊ\":45806,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":45807,\".contents\":45808,\"ynth\":45809,\"ĠStraight\":45810,\"')}}\\\"></\":45811,\"Ġbulb\":45812,\"RX\":45813,\"//------------------------------------------------------------------------------Ċ\":45814,\"Ġcomunic\":45815,\"ĠRN\":45816,\"-medium\":45817,\"LEAN\":45818,\"=len\":45819,\"PhoneNumber\":45820,\"ervations\":45821,\"Accuracy\":45822,\"ĠAnnotation\":45823,\"_keyword\":45824,\"_hint\":45825,\"ĠAthens\":45826,\"Ġassisting\":45827,\"ĠHC\":45828,\".Initialize\":45829,\"')))Ċ\":45830,\"upa\":45831,\"Ġsuiv\":45832,\"ĠIPC\":45833,\"<TEntity\":45834,\"Ġbranded\":45835,\"oomla\":45836,\"larÄ±\":45837,\"ĠXMLHttpRequest\":45838,\"ĠdÃ©jÃł\":45839,\"Ġtranscription\":45840,\"Ġprevalent\":45841,\".plan\":45842,\"Ġstare\":45843,\"Ġworkouts\":45844,\"ĠEducational\":45845,\"Ġmessy\":45846,\"ĠMOT\":45847,\".CommandType\":45848,\"Qed\":45849,\"(gca\":45850,\"ĠLinearLayoutManager\":45851,\"ĠBlow\":45852,\"ĠAluminum\":45853,\"Ġswingerclub\":45854,\"ĠTransit\":45855,\"Ġexpos\":45856,\"vir\":45857,\"(second\":45858,\"Ġbelonged\":45859,\"Stone\":45860,\"éķ¿\":45861,\"ĠSul\":45862,\"Ġgid\":45863,\"Ġalloy\":45864,\"erva\":45865,\"isecond\":45866,\"_RENDER\":45867,\"Ġangels\":45868,\"ĠPhilosophy\":45869,\"opus\":45870,\"Ġmoo\":45871,\"enguin\":45872,\"_VARIABLE\":45873,\"_DEST\":45874,\"(aux\":45875,\"Ġhoe\":45876,\"Ġdob\":45877,\"attachments\":45878,\"Ġcorridor\":45879,\"Ġdividend\":45880,\"Ŀ¼\":45881,\"ĠThroughout\":45882,\".optim\":45883,\"$new\":45884,\"Ġberg\":45885,\"Ġspreadsheet\":45886,\".TryGetValue\":45887,\"Ġpayout\":45888,\"ĠOnDestroy\":45889,\"authentication\":45890,\"ĠMiguel\":45891,\"rtc\":45892,\"ĠChristine\":45893,\"ĠAIR\":45894,\"Ġjuris\":45895,\"Ġdespair\":45896,\"Ġpatents\":45897,\"-has\":45898,\"%^\":45899,\"ä»ĺ\":45900,\"_strdup\":45901,\"ĠRear\":45902,\"ettes\":45903,\"(properties\":45904,\"Ġwritable\":45905,\".isNull\":45906,\"olics\":45907,\"_blob\":45908,\"Ġcualquier\":45909,\"afi\":45910,\"owych\":45911,\"èİ·åıĸ\":45912,\"Ãĩ\":45913,\"ĠCardinal\":45914,\"Ġtema\":45915,\"\\\"And\":45916,\"PageSize\":45917,\"ç§Ĵ\":45918,\".SimpleDateFormat\":45919,\"ĠWinner\":45920,\"Ġcorreo\":45921,\"_we\":45922,\".addObject\":45923,\"(course\":45924,\"Ġhog\":45925,\"opro\":45926,\"Ġprobation\":45927,\"unable\":45928,\"(active\":45929,\"åĽ¾çīĩ\":45930,\"Ġpertaining\":45931,\"Ġemphasize\":45932,\"ĠPrinter\":45933,\"=.\":45934,\"Ġupgrading\":45935,\"/contact\":45936,\"=[[\":45937,\"-san\":45938,\"ĉvalues\":45939,\"Ġdosage\":45940,\"Solid\":45941,\"ĠRoosevelt\":45942,\"åķĨåĵģ\":45943,\"Ġrecreation\":45944,\"ĠTermin\":45945,\".Bad\":45946,\"ĠBolt\":45947,\"Sky\":45948,\"_Image\":45949,\"Ġsquir\":45950,\"ĠCob\":45951,\"ORN\":45952,\"Ġauc\":45953,\".LEFT\":45954,\"'B\":45955,\"-resistant\":45956,\">\\\"+\":45957,\"Ġtokenizer\":45958,\"Ġsovereignty\":45959,\"ĠPence\":45960,\"()\\\");Ċ\":45961,\"Ġpessoas\":45962,\".Ge\":45963,\"ĠIncluded\":45964,\"Ġpagina\":45965,\"Ġexposing\":45966,\"ÐµÑĪ\":45967,\"_SCRIPT\":45968,\"/$',\":45969,\"Thumbnail\":45970,\"×Ķ\":45971,\"webElementX\":45972,\"webElementXpaths\":45973,\"pressure\":45974,\"ĠCurry\":45975,\"_CP\":45976,\"OLUTION\":45977,\"ILES\":45978,\"protect\":45979,\"oola\":45980,\"Workspace\":45981,\"{};Ċ\":45982,\"ĠUNS\":45983,\"Ġsympathy\":45984,\"roker\":45985,\"Ġremodel\":45986,\"ĉcell\":45987,\"Ġatop\":45988,\".FullName\":45989,\"Ġfaut\":45990,\"ĠEasily\":45991,\"_dynamic\":45992,\"Ġframed\":45993,\"Ġmotive\":45994,\"è·¯\":45995,\"sam\":45996,\"Ġmarca\":45997,\"ĠTextEditingController\":45998,\"Ġdestructor\":45999,\"cream\":46000,\"Ġrude\":46001,\"ĠBold\":46002,\"ĠIndigenous\":46003,\"Ġgens\":46004,\"Ġrelacion\":46005,\"(system\":46006,\"ĠUIFont\":46007,\"_charge\":46008,\"USTER\":46009,\"EV\":46010,\".Namespace\":46011,\"Ġmerger\":46012,\"Ġcalloc\":46013,\"gang\":46014,\"BadRequest\":46015,\"Ġsper\":46016,\"-design\":46017,\"Ġâĩ\":46018,\"Chan\":46019,\"Ġorganism\":46020,\",)\":46021,\"=id\":46022,\"_plane\":46023,\"ĠCases\":46024,\"elfast\":46025,\"ĠLegislature\":46026,\"ĠFaker\":46027,\"Ġinvoking\":46028,\"-utils\":46029,\"().'\":46030,\".face\":46031,\"Ġguardian\":46032,\"myModal\":46033,\"Ġclipboard\":46034,\"ĠATM\":46035,\"Ġpeas\":46036,\"ĠSylv\":46037,\".calc\":46038,\"ĠContacts\":46039,\"intValue\":46040,\"Ġmodifying\":46041,\"ĠBarb\":46042,\".loss\":46043,\"_percentage\":46044,\"Asked\":46045,\"(lst\":46046,\"ategorical\":46047,\"-files\":46048,\"ĠRomania\":46049,\".Ac\":46050,\"Ġhai\":46051,\"ĠFlying\":46052,\"ĠÅ¼\":46053,\"jp\":46054,\"ĠTrainer\":46055,\".arc\":46056,\"_deg\":46057,\"Ġtraceback\":46058,\"OrFail\":46059,\"FLOW\":46060,\".old\":46061,\"oya\":46062,\"gmt\":46063,\"isempty\":46064,\"Ġvaccination\":46065,\"Ġobsolete\":46066,\"recognized\":46067,\"Ġruined\":46068,\"ĠRein\":46069,\"ĠTracking\":46070,\"xfb\":46071,\"Ø§ÛĮ\":46072,\"ĠvÃ¦re\":46073,\"Ġbryster\":46074,\"ĠITS\":46075,\"Ġdestiny\":46076,\"Ġswear\":46077,\"Ġredes\":46078,\"Ġclf\":46079,\"Ġflipped\":46080,\"ĉhead\":46081,\"Bluetooth\":46082,\"ĠOverrides\":46083,\":Boolean\":46084,\"_=\":46085,\"_lr\":46086,\"spawn\":46087,\":index\":46088,\"VALUES\":46089,\"iskey\":46090,\"?\\\");Ċ\":46091,\".synthetic\":46092,\"ĠChecking\":46093,\"structures\":46094,\"iping\":46095,\"Ġvocals\":46096,\"-Up\":46097,\"ĠManufacturers\":46098,\"ĠMarriage\":46099,\"ä»£çłģ\":46100,\"Ġgarner\":46101,\"_Client\":46102,\"parallel\":46103,\"RIEND\":46104,\"Ġvinegar\":46105,\"segue\":46106,\"JB\":46107,\"Ġcontacting\":46108,\"ĠCarroll\":46109,\"Ġoutreach\":46110,\"tensor\":46111,\"_variant\":46112,\"Ġtheat\":46113,\"licable\":46114,\"{|\":46115,\"tiny\":46116,\"_letter\":46117,\"Ġpencil\":46118,\"HeadersHeightSizeMode\":46119,\"iltro\":46120,\".autoconfigure\":46121,\".drag\":46122,\".useState\":46123,\"ĠBMI\":46124,\"hint\":46125,\"Compile\":46126,\"*\\\\\":46127,\"enary\":46128,\"Ġlvl\":46129,\".Cache\":46130,\"+=\\\"\":46131,\"_tv\":46132,\"ruitment\":46133,\"Ġfread\":46134,\"Articles\":46135,\"fila\":46136,\"Ġpackaged\":46137,\"âĺĨ\":46138,\"ATHER\":46139,\"ĠPlanned\":46140,\"scheme\":46141,\"Ġdiary\":46142,\"Ġoffenses\":46143,\"/<?\":46144,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":46145,\"ProgressHUD\":46146,\"ĠGor\":46147,\".getTitle\":46148,\"Ġmocked\":46149,\"ĠTory\":46150,\"Ġ\\\")\\\";Ċ\":46151,\"#g\":46152,\"Ġlied\":46153,\"Ġsvc\":46154,\"_gui\":46155,\"ENTRY\":46156,\"Ġservicio\":46157,\"mouseover\":46158,\"SACTION\":46159,\"ãĤ³\":46160,\"Ġreife\":46161,\"lectric\":46162,\"_creation\":46163,\"Reality\":46164,\"('+\":46165,\"productId\":46166,\"Supplier\":46167,\"-Le\":46168,\".repo\":46169,\"ucking\":46170,\"_Str\":46171,\"ĠRelay\":46172,\"Ð¸Ð¸\":46173,\"Ġperv\":46174,\"Chicago\":46175,\"Ġmaison\":46176,\"Ġsticker\":46177,\"_pressed\":46178,\"Swap\":46179,\"ĠIG\":46180,\"Ġsusceptible\":46181,\"ocado\":46182,\"Ġgin\":46183,\"exe\":46184,\"ighborhood\":46185,\")`\":46186,\"Ġdiagrams\":46187,\"Ġinflammatory\":46188,\"ĠtÃ©\":46189,\"ĠPopup\":46190,\"Ġappreh\":46191,\"ĠPortfolio\":46192,\"Ġwors\":46193,\".enums\":46194,\"ÐµÐ³Ð¾\":46195,\"/Button\":46196,\"ĠPhantom\":46197,\"Ġ#:\":46198,\"Ġdik\":46199,\"pager\":46200,\"ftar\":46201,\"Ġorganizer\":46202,\"(children\":46203,\"ĠMunich\":46204,\"Ġstrang\":46205,\"ĠRW\":46206,\"ãĤ¿\":46207,\"Mah\":46208,\"ptide\":46209,\"Ġlearns\":46210,\"Ġreductions\":46211,\"ĠReplacement\":46212,\"OTS\":46213,\"alcon\":46214,\"(parts\":46215,\"bash\":46216,\"ĠCitizen\":46217,\"į°ìĿ´\":46218,\"ĠHttpServlet\":46219,\"_SCHEMA\":46220,\"means\":46221,\"Ġhorrific\":46222,\"VERIFY\":46223,\"ĠDCHECK\":46224,\"Ġ(/\":46225,\".before\":46226,\".texture\":46227,\"getMock\":46228,\"ĠSense\":46229,\"Inspector\":46230,\"TextNode\":46231,\"(AL\":46232,\".getNode\":46233,\"Ġboyc\":46234,\"ĠBrisbane\":46235,\"Ġbattling\":46236,\"ĉtx\":46237,\"Ġlobbying\":46238,\"built\":46239,\"ĠSEEK\":46240,\"Ġrandomized\":46241,\"gni\":46242,\"_clusters\":46243,\"_identity\":46244,\"Ġcardiac\":46245,\"ĠnewUser\":46246,\".Video\":46247,\"duit\":46248,\"]init\":46249,\"Atl\":46250,\")value\":46251,\"TextUtils\":46252,\"ĠÐµÑģÐ»Ð¸\":46253,\"Compute\":46254,\"=('\":46255,\"ĉĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":46256,\"Ġarter\":46257,\"ĠTWO\":46258,\"')),\":46259,\"ĠDIV\":46260,\"Ġprivileged\":46261,\"ĠPartnership\":46262,\"ĠHeather\":46263,\"bay\":46264,\"atisfied\":46265,\"instagram\":46266,\"_Send\":46267,\"ĠASF\":46268,\"$name\":46269,\"Ġboo\":46270,\"ĠdÃ©f\":46271,\"_Field\":46272,\"ĠEdu\":46273,\"candidate\":46274,\"ruby\":46275,\"Ġaccumulate\":46276,\"(IntPtr\":46277,\"Ġbusinessman\":46278,\"Ġeconomically\":46279,\"ĠRings\":46280,\"ĠInputs\":46281,\"¹Ħ\":46282,\"acie\":46283,\"ĠAlarm\":46284,\"ĠLogout\":46285,\".sequence\":46286,\"ĠVienna\":46287,\"opr\":46288,\"Ġdrums\":46289,\"=config\":46290,\"qui\":46291,\"Ġdato\":46292,\"Ġpolymer\":46293,\"ĠChanged\":46294,\"WebRequest\":46295,\"ĠAdvance\":46296,\"Ġundergoing\":46297,\".Console\":46298,\"ĠcurrentNode\":46299,\"ĠWool\":46300,\"ĠpÃ¡gina\":46301,\"REGISTER\":46302,\"Ġsaga\":46303,\"ĠYORK\":46304,\"amanho\":46305,\"å®Į\":46306,\"ĠBundes\":46307,\"ĠDialogInterface\":46308,\"geois\":46309,\"unciation\":46310,\"?$\":46311,\".Assertions\":46312,\"Ġseated\":46313,\"ĠSpy\":46314,\"Pose\":46315,\"\\\"C\":46316,\"Ġahora\":46317,\"ĠÑĦÐ°Ð¹Ð»\":46318,\"Ġë³Ģ\":46319,\"Ġwarp\":46320,\"Projection\":46321,\"ĠSingles\":46322,\"ĠAdvertising\":46323,\"Linux\":46324,\"usty\":46325,\"Ġpenal\":46326,\"USIC\":46327,\"odia\":46328,\".netbeans\":46329,\"ĠUg\":46330,\"ĠBrent\":46331,\"-log\":46332,\"/category\":46333,\"ĠCustomize\":46334,\"iren\":46335,\"ï¼ļ</\":46336,\"inars\":46337,\"Ġ(++\":46338,\"Going\":46339,\"EXEC\":46340,\"(mesh\":46341,\"Ġperimeter\":46342,\"Cls\":46343,\"ceiving\":46344,\"mensaje\":46345,\"())){Ċ\":46346,\"Ġprostate\":46347,\"_buy\":46348,\"ĠRoof\":46349,\".Return\":46350,\"Ġmarriages\":46351,\"_thumb\":46352,\"ç¾\":46353,\"à¯į\":46354,\"Textures\":46355,\"(TEXT\":46356,\"shortcut\":46357,\"Transformer\":46358,\"ATIC\":46359,\"ĠSnowden\":46360,\"scribers\":46361,\"marked\":46362,\"ĠâĨĳ\":46363,\"hora\":46364,\"OPER\":46365,\"ĠFY\":46366,\"ĠAuthentic\":46367,\"Ġaudi\":46368,\"ramer\":46369,\"ĠLiterature\":46370,\"ĠitemId\":46371,\".Att\":46372,\"(cnt\":46373,\"ĠKS\":46374,\"-linux\":46375,\"ĠParticipant\":46376,\"ĠCruise\":46377,\"itulo\":46378,\"ustrial\":46379,\"Ġclase\":46380,\"Ġ=$\":46381,\"_dates\":46382,\"currentPage\":46383,\"ixa\":46384,\"exact\":46385,\"Ġtsl\":46386,\".So\":46387,\"/document\":46388,\"hart\":46389,\"_IDLE\":46390,\"{}.\":46391,\"yet\":46392,\"Iron\":46393,\"ĠThrones\":46394,\"snd\":46395,\"\\\\xa\":46396,\"Ġbeverages\":46397,\"_transport\":46398,\"Ġfoil\":46399,\"Ġtasting\":46400,\"Ġgoed\":46401,\"Memo\":46402,\"Ġnitrogen\":46403,\".Member\":46404,\".flat\":46405,\"Ġillum\":46406,\"minent\":46407,\".zoom\":46408,\"ĠPtr\":46409,\"ocio\":46410,\"ĠConsulting\":46411,\"ĠCone\":46412,\"ĉitems\":46413,\"ĠLM\":46414,\"Ġoauth\":46415,\"ĠProgramme\":46416,\"ochond\":46417,\"(selector\":46418,\"Ġwaterproof\":46419,\"ĠMerkel\":46420,\"Ġsuffers\":46421,\"Ġnpm\":46422,\"è±¡\":46423,\"ĠLanding\":46424,\"ĠLAN\":46425,\"ĉĉĉĉĉĉčĊ\":46426,\"/is\":46427,\"ĠsÃ©rie\":46428,\"ĠGUILayout\":46429,\"give\":46430,\"_CY\":46431,\"Browse\":46432,\".multiply\":46433,\"=\\\"$(\":46434,\"uso\":46435,\"-parent\":46436,\".Math\":46437,\".numberOf\":46438,\"Ġtienen\":46439,\"Ġresent\":46440,\"Ġpitching\":46441,\"\\\"]),Ċ\":46442,\".Utilities\":46443,\"Ġmultiplication\":46444,\":type\":46445,\"Ġpprint\":46446,\"iani\":46447,\"åĪĻ\":46448,\"Ġlauncher\":46449,\"Ġrugby\":46450,\"çİ°\":46451,\"ĊĉĉĉĊ\":46452,\"hid\":46453,\"Angles\":46454,\"Ġgoodbye\":46455,\"ĠinputStream\":46456,\".watch\":46457,\"Goods\":46458,\"ĠSays\":46459,\">F\":46460,\"ĠStick\":46461,\"Ġcerc\":46462,\"ĠSlee\":46463,\"ĉĉĠĠĠĠĠĠĠĠ\":46464,\"<Image\":46465,\"Ġè®¾\":46466,\"-editor\":46467,\"pieces\":46468,\"ĠDrama\":46469,\"Ġ//////////////////\":46470,\"ĠTasks\":46471,\"ARC\":46472,\"gateway\":46473,\".getcwd\":46474,\".Metadata\":46475,\"Ġguessing\":46476,\"åľ°åĿĢ\":46477,\"Ġsmarter\":46478,\"ĠGetEnumerator\":46479,\"Ġefter\":46480,\"/operators\":46481,\"ĠGLfloat\":46482,\"ĠfÃ¸r\":46483,\"Ġopaque\":46484,\"ä¿ĿåŃĺ\":46485,\"Spread\":46486,\"SYSTEM\":46487,\"Ġinversion\":46488,\"ĠBasketball\":46489,\"Ġsimulations\":46490,\"Ġdenies\":46491,\"Ġavez\":46492,\"_listener\":46493,\"Ġenhancing\":46494,\"ĠMyth\":46495,\"ĠLakers\":46496,\"_MD\":46497,\"NdEx\":46498,\"DATABASE\":46499,\"Ġtá»\":46500,\"arth\":46501,\"[left\":46502,\"Ġcontests\":46503,\"stile\":46504,\"(KERN\":46505,\"_fc\":46506,\"_pm\":46507,\"Ġpresidents\":46508,\"Ġhospitality\":46509,\"ĠfadeIn\":46510,\"ROPERTY\":46511,\"_maps\":46512,\"ĠDefinitions\":46513,\"Ġassessing\":46514,\"Ġusar\":46515,\"Ġquantitative\":46516,\"moz\":46517,\"Beautiful\":46518,\"[((\":46519,\"bons\":46520,\"frequency\":46521,\"Contain\":46522,\"Ġpuzzles\":46523,\"ĠCastro\":46524,\"Ġvilla\":46525,\"Ġkindly\":46526,\"FontAwesome\":46527,\"erna\":46528,\"epochs\":46529,\"_datas\":46530,\"ĉip\":46531,\".padding\":46532,\"ĠContest\":46533,\"Ġeditions\":46534,\"Ġdisproportion\":46535,\"ĠICO\":46536,\"Ġcomeback\":46537,\"=value\":46538,\"riad\":46539,\"-sort\":46540,\"Submitted\":46541,\"(network\":46542,\"ĠCel\":46543,\"Ġinstallment\":46544,\"lashes\":46545,\".ListView\":46546,\"ĠVatican\":46547,\"(MediaType\":46548,\"IVED\":46549,\"reachable\":46550,\":Is\":46551,\"ĠCITY\":46552,\"äº¬\":46553,\"ĠHelpful\":46554,\"ĠbaÅŁ\":46555,\"%čĊ\":46556,\"Ġpsychiatric\":46557,\"Ġrecycled\":46558,\"FORMAT\":46559,\"ĠGrow\":46560,\"bine\":46561,\"Git\":46562,\".ss\":46563,\"ĠWeapons\":46564,\"ĠSty\":46565,\"_arrow\":46566,\"*self\":46567,\"irement\":46568,\"Ġdegli\":46569,\"AppDelegate\":46570,\"_banner\":46571,\"Ġcoordinated\":46572,\"ĠWebcam\":46573,\"Ġcelebrations\":46574,\".act\":46575,\"************************************************\":46576,\"(show\":46577,\"Ġweekday\":46578,\"Ġconcerts\":46579,\"Ð¾Ð»Ð½\":46580,\"clin\":46581,\"Ġcron\":46582,\"ĠNim\":46583,\".setVertical\":46584,\"ĠEllen\":46585,\"Ø³Øª\":46586,\"ĠSAM\":46587,\"Eff\":46588,\"gz\":46589,\"steam\":46590,\"Ġantique\":46591,\"physical\":46592,\"ĠFormData\":46593,\".setter\":46594,\"ĠPOINT\":46595,\"Bon\":46596,\"Ġflavour\":46597,\"ervention\":46598,\"_ENTITY\":46599,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠ\":46600,\"Ġintrinsic\":46601,\"Ġæİ\":46602,\"appendTo\":46603,\"aramel\":46604,\")])\":46605,\"ĠRecommend\":46606,\")m\":46607,\"OutOfRange\":46608,\"Ġknight\":46609,\"Ġsatellites\":46610,\"ĠTitans\":46611,\"Ġweighed\":46612,\"ĠDana\":46613,\"ease\":46614,\"Ġsip\":46615,\"SIM\":46616,\"ĠDevelopers\":46617,\"malink\":46618,\"/check\":46619,\"_PLL\":46620,\"nung\":46621,\"Ġdryer\":46622,\"=A\":46623,\".dw\":46624,\"_SQL\":46625,\"Ġsubplot\":46626,\"DROP\":46627,\"Ġprototypes\":46628,\"Ġhourly\":46629,\"displayName\":46630,\"Ġasi\":46631,\"ĠViolence\":46632,\"Ġastronaut\":46633,\"Ġdatatype\":46634,\"Ġinformational\":46635,\"Ġinvestigative\":46636,\"etermined\":46637,\"renal\":46638,\";'>\":46639,\"ĉcol\":46640,\"VG\":46641,\"_boolean\":46642,\"recent\":46643,\"Ġ*)ĊĊ\":46644,\"ĠRainbow\":46645,\"ommen\":46646,\"Ġlur\":46647,\"Ġoppression\":46648,\"(\\\",\\\");Ċ\":46649,\"ĠFacility\":46650,\"DEFINED\":46651,\"Ġneon\":46652,\"Ġoffender\":46653,\"AFP\":46654,\"ĠCleaning\":46655,\"[]):\":46656,\"Ġundocumented\":46657,\".Repositories\":46658,\"ĠGuitar\":46659,\"Ð°ÑģÑģÐ¸Ð²\":46660,\"Skills\":46661,\"Ġtestimon\":46662,\"ryptography\":46663,\"ĠAmber\":46664,\"ĠStalin\":46665,\"Ġlone\":46666,\"Ġapenas\":46667,\"Ġdieses\":46668,\"ĠArduino\":46669,\"è½¬\":46670,\"==-\":46671,\"_Act\":46672,\"Ġcoded\":46673,\"âĸł\":46674,\"amburger\":46675,\"-links\":46676,\"Ġarmour\":46677,\".High\":46678,\"getContent\":46679,\"stag\":46680,\"Ġheck\":46681,\"ĠìĹĨ\":46682,\"ĠMcConnell\":46683,\"ĠConcert\":46684,\"ĠAlloc\":46685,\"Ã¤re\":46686,\".replaceAll\":46687,\"Ġpartitions\":46688,\"rott\":46689,\"ĠFle\":46690,\"_TREE\":46691,\"reasonable\":46692,\"ĠReporting\":46693,\"Ġbillionaire\":46694,\"scores\":46695,\"mins\":46696,\"-eye\":46697,\"MORE\":46698,\"abort\":46699,\"ĠSWT\":46700,\"Ġinverted\":46701,\"ĠTeachers\":46702,\";n\":46703,\"Ġastro\":46704,\"Ð½Ð¾Ð²\":46705,\"Ð°Ð½Ð¸ÑĨ\":46706,\"producto\":46707,\"countries\":46708,\"ĠOwen\":46709,\"Ġcontamination\":46710,\"Ġvibe\":46711,\"ĠElli\":46712,\".script\":46713,\"ĠOlive\":46714,\"DMA\":46715,\"vier\":46716,\":semicolon\":46717,\"-module\":46718,\"gressive\":46719,\"agu\":46720,\"_players\":46721,\"Ġresultados\":46722,\"started\":46723,\"scrollTop\":46724,\"=====\":46725,\"Ġweighing\":46726,\"Ġ[[[\":46727,\"zahl\":46728,\"(NS\":46729,\"ĠAssertion\":46730,\"league\":46731,\".setTextColor\":46732,\"ĉMessage\":46733,\"Ġmoms\":46734,\"_AF\":46735,\".wh\":46736,\"ALS\":46737,\"Ġautre\":46738,\"]ĊĊĊĊ\":46739,\".opacity\":46740,\"ĠBuddhist\":46741,\"Ġdeaf\":46742,\"ĠOrganisation\":46743,\"(Global\":46744,\"ensch\":46745,\"Ġheadache\":46746,\"ĠAlien\":46747,\"_inode\":46748,\"ĠStark\":46749,\"Ġæī\":46750,\"-lnd\":46751,\"oref\":46752,\"_feat\":46753,\"Ġpedestrian\":46754,\"Ġnominal\":46755,\"Ġballoon\":46756,\"Ġsprites\":46757,\"PrototypeOf\":46758,\"ĠApost\":46759,\"ĠFEATURE\":46760,\"OH\":46761,\"Ġrecess\":46762,\"ĠDonna\":46763,\"consumer\":46764,\"$GLOBALS\":46765,\"ĠGIF\":46766,\"-frame\":46767,\"Inicio\":46768,\"Ġpassages\":46769,\"DateString\":46770,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":46771,\".byte\":46772,\"Bug\":46773,\"initializer\":46774,\"pkt\":46775,\"odium\":46776,\"ĠDER\":46777,\".ops\":46778,\"leri\":46779,\"Ġgifted\":46780,\"Ġdetach\":46781,\"terrain\":46782,\"elters\":46783,\"ãģı\":46784,\".loader\":46785,\"ĠNGO\":46786,\"strncmp\":46787,\"Kh\":46788,\"(fontSize\":46789,\"rocket\":46790,\"Ġprecedent\":46791,\"ĠAurora\":46792,\"ĠExperiment\":46793,\"isphere\":46794,\"Encoded\":46795,\"ĠâĢĵĊĊ\":46796,\"Ġpyramid\":46797,\"ĠAnniversary\":46798,\"ofil\":46799,\"ëŁ\":46800,\"(plugin\":46801,\"Coeff\":46802,\"Ġcooperate\":46803,\"Ġpredominantly\":46804,\"ISM\":46805,\"Phrase\":46806,\"_DEFINE\":46807,\"Flip\":46808,\"AMILY\":46809,\"ĠMarkets\":46810,\"ĠStreamReader\":46811,\"ĠCombine\":46812,\"Ġmanuscript\":46813,\"zza\":46814,\",tp\":46815,\"Whatever\":46816,\"ITICAL\":46817,\"ighbour\":46818,\"DataProvider\":46819,\".Texture\":46820,\"privacy\":46821,\".SDK\":46822,\"Ġrecharge\":46823,\"Ġcpp\":46824,\"ĠCFG\":46825,\"(holder\":46826,\"(py\":46827,\"mot\":46828,\"Ġsavoir\":46829,\"ĠRosa\":46830,\"ĠPCs\":46831,\"ĠíĻ\":46832,\".heroku\":46833,\"Ġfren\":46834,\"ĠRiley\":46835,\"agate\":46836,\"Ġsond\":46837,\".xlsx\":46838,\"Ġhacked\":46839,\"stad\":46840,\"Gi\":46841,\"Ġsanity\":46842,\"ĠSqlDataAdapter\":46843,\"...\\\",\":46844,\"ĠPussy\":46845,\"Ġ****************\":46846,\"Ġhassle\":46847,\"_PARENT\":46848,\"ĠUAE\":46849,\"Ġbeginners\":46850,\"(Client\":46851,\"Ġstatistically\":46852,\".hour\":46853,\"edelta\":46854,\"Ġtraction\":46855,\"uelve\":46856,\"arat\":46857,\"Ġsauna\":46858,\"INVALID\":46859,\"Ġindictment\":46860,\"ALLE\":46861,\"Ġdissent\":46862,\"ĠTypography\":46863,\"Ġintentional\":46864,\"sit\":46865,\"ĠAnimals\":46866,\"Ġcountryside\":46867,\"Ġuart\":46868,\"}\\\\\\\"\":46869,\"Ġseamless\":46870,\"¾ç¤º\":46871,\"Ġautos\":46872,\"Ġ\\\"'\\\";Ċ\":46873,\"Flush\":46874,\"ANNOT\":46875,\"Ġalgebra\":46876,\"assoc\":46877,\"ĠWaters\":46878,\"Ġpreparations\":46879,\"ronym\":46880,\"[,]\":46881,\"Sans\":46882,\"Ġarmies\":46883,\"ipeg\":46884,\"Ġcreamy\":46885,\".art\":46886,\"etre\":46887,\"ĠAnimated\":46888,\"Ġunpleasant\":46889,\"emean\":46890,\"great\":46891,\"iÄħ\":46892,\"ĠEarlier\":46893,\"Ġchic\":46894,\"Ġpreserving\":46895,\"(exec\":46896,\"ĠInvestigation\":46897,\"ĉGPIO\":46898,\"Ġrigorous\":46899,\"ijo\":46900,\"=num\":46901,\"ĠtoolStrip\":46902,\")set\":46903,\"+\\\"&\":46904,\"ĠAcceler\":46905,\"Ġdevelopmental\":46906,\"isposable\":46907,\"Ġflawed\":46908,\"rene\":46909,\"Updating\":46910,\"Ġwatchdog\":46911,\"Ġdenominator\":46912,\"Ġsuburbs\":46913,\"Ġ...)\":46914,\"Ġconvictions\":46915,\"closure\":46916,\".IP\":46917,\"Ġtranslates\":46918,\".swt\":46919,\".Trace\":46920,\"Ġmettre\":46921,\".isEnabled\":46922,\"ĠEffective\":46923,\".toInt\":46924,\"Ġenchant\":46925,\"Ġstunned\":46926,\"Ġpoi\":46927,\"/code\":46928,\"adm\":46929,\".databinding\":46930,\"ĠLorem\":46931,\"________________________________________________________________\":46932,\"Ġledger\":46933,\"Ġcara\":46934,\"ĠGir\":46935,\"Ġwaits\":46936,\"Uno\":46937,\"Ġcwd\":46938,\"è¾ĳ\":46939,\"ĠTResult\":46940,\"Ġrejo\":46941,\"Ġemitted\":46942,\"ĠWestminster\":46943,\"ä¸Ģä¸ª\":46944,\"nek\":46945,\"_Tis\":46946,\"Ġenact\":46947,\"ĉwith\":46948,\"orgia\":46949,\"Ġjue\":46950,\"Perform\":46951,\"SPATH\":46952,\".topic\":46953,\"ĠDaten\":46954,\"áº§\":46955,\"Ġsitio\":46956,\"_MM\":46957,\"\\\"So\":46958,\"bial\":46959,\"Ġscoped\":46960,\"Requires\":46961,\"ĠTOTAL\":46962,\"ĠChancellor\":46963,\"(contents\":46964,\"Ġstealth\":46965,\"devices\":46966,\"-pass\":46967,\"ilih\":46968,\"ĠMalcolm\":46969,\"ĠDepot\":46970,\"Ġconfigur\":46971,\"aussian\":46972,\"_constraint\":46973,\"Ð²ÐµÑĤ\":46974,\"GRA\":46975,\"ĠRates\":46976,\".dataGridViewTextBoxColumn\":46977,\"ĠNobel\":46978,\"itics\":46979,\"Ġignorant\":46980,\"ĠReporter\":46981,\"ĠEbola\":46982,\"ĠShock\":46983,\"_relation\":46984,\"ĠNinja\":46985,\")c\":46986,\"Ġticker\":46987,\".isChecked\":46988,\"ĠSuppliers\":46989,\"ĠRapid\":46990,\"Levels\":46991,\"âĤ¬âĦ¢\":46992,\"ĉqueue\":46993,\"Ġchop\":46994,\"ĠUnix\":46995,\"reject\":46996,\"-calendar\":46997,\"(sort\":46998,\"Ã¨ne\":46999,\"ercicio\":47000,\"Ġhect\":47001,\"CALLTYPE\":47002,\"roupon\":47003,\"Ġrentals\":47004,\"authors\":47005,\"{name\":47006,\"ĠFIFO\":47007,\"Ġlassen\":47008,\"ĠNous\":47009,\"Ġsnapped\":47010,\"Ġfertility\":47011,\"\\\"log\":47012,\"clicked\":47013,\"Ġplanting\":47014,\"Ġgb\":47015,\"/output\":47016,\"PEAT\":47017,\"Ġcategoria\":47018,\"Ġbach\":47019,\"Professor\":47020,\"inth\":47021,\"\\\"]čĊ\":47022,\"Recorder\":47023,\"serde\":47024,\"ĠTransmission\":47025,\"trad\":47026,\"Ġturbo\":47027,\"_VERTEX\":47028,\"\\\\Event\":47029,\"ilver\":47030,\"Ġbodily\":47031,\"ĠSources\":47032,\"Ġkillings\":47033,\".xrTableCell\":47034,\"Ġfolded\":47035,\"/legal\":47036,\"uner\":47037,\"ĠRifle\":47038,\"ĠMIDI\":47039,\"_SelectedIndexChanged\":47040,\".SizeType\":47041,\"ĠWebSocket\":47042,\"Ġseleccion\":47043,\"Sand\":47044,\"otros\":47045,\"Ġenvision\":47046,\"/etc\":47047,\"ĠMelissa\":47048,\"Spot\":47049,\"Ð½Ð¾Ðµ\":47050,\"_ARM\":47051,\"Attempt\":47052,\"ĠBI\":47053,\"ãģĶ\":47054,\"ĠDU\":47055,\"Ġbacklash\":47056,\"stride\":47057,\"/classes\":47058,\"ĠtextColor\":47059,\"_staff\":47060,\"oblin\":47061,\"agenta\":47062,\".collections\":47063,\"illage\":47064,\"'čĊčĊ\":47065,\"flatten\":47066,\"_sales\":47067,\"_MASTER\":47068,\"TW\":47069,\"_da\":47070,\"Pitch\":47071,\"phies\":47072,\"Ġzombies\":47073,\"ĠVERY\":47074,\"ĠPharmacy\":47075,\"ĠprogressBar\":47076,\"Ġhashtag\":47077,\"Sidebar\":47078,\"@stop\":47079,\"(pc\":47080,\"Ð¾Ð»Ð¶\":47081,\"MAKE\":47082,\"ĠCoron\":47083,\"Ġkvinner\":47084,\"ĠMaid\":47085,\"bob\":47086,\".titleLabel\":47087,\"Ġsuccesses\":47088,\"ĠDemocracy\":47089,\"ĠSurgery\":47090,\"Ġcougar\":47091,\"Ġcurso\":47092,\"Ġloro\":47093,\"istency\":47094,\"Senior\":47095,\"Ã¦k\":47096,\"ĠAAA\":47097,\"ĠBOOK\":47098,\"ÐºÐ¾\":47099,\"WSTR\":47100,\"Ġ*/,Ċ\":47101,\"oyal\":47102,\".vector\":47103,\"ĠSPEC\":47104,\"SSF\":47105,\"Ġcompuls\":47106,\"ĠAppeals\":47107,\"ĠWinston\":47108,\"ĠMockito\":47109,\"contrib\":47110,\".available\":47111,\"entityManager\":47112,\"arias\":47113,\"_sale\":47114,\"_rs\":47115,\"Ġdecoding\":47116,\"Ġlocator\":47117,\"olith\":47118,\"Ġkol\":47119,\"Ġascii\":47120,\"ĠRut\":47121,\"/interface\":47122,\"ĉĉĉĉĉĉĠĠĠ\":47123,\"ĠNumer\":47124,\".flip\":47125,\"-del\":47126,\"Ġbolster\":47127,\"onomic\":47128,\"Ġzm\":47129,\"LG\":47130,\"FindBy\":47131,\"Ġadaptive\":47132,\"loo\":47133,\"Ġvue\":47134,\"(reverse\":47135,\"_canvas\":47136,\".roles\":47137,\"ificado\":47138,\"venient\":47139,\"\\\"As\":47140,\"ĠEntr\":47141,\"aligned\":47142,\"Ġbereits\":47143,\"///ĊĊ\":47144,\".gwt\":47145,\".employee\":47146,\"_cli\":47147,\"Ġanticipate\":47148,\"éĻĲ\":47149,\"Ġpik\":47150,\"Ġmushrooms\":47151,\"(tt\":47152,\"Ġoma\":47153,\"ĠSanchez\":47154,\"_google\":47155,\".Valid\":47156,\"ĠFileName\":47157,\"ivative\":47158,\"ked\":47159,\"-war\":47160,\"Ġmaturity\":47161,\"Ð¸Ð´\":47162,\"Ġminer\":47163,\"Reducers\":47164,\"ĠLatLng\":47165,\"_STD\":47166,\"Digits\":47167,\"Calc\":47168,\"-upload\":47169,\"Ġhandic\":47170,\"à¸µà¹Ī\":47171,\"egrated\":47172,\"ĠSTM\":47173,\"Clients\":47174,\"ĠTurbo\":47175,\"SYNC\":47176,\"Ġphotographers\":47177,\".Out\":47178,\".character\":47179,\"BUILD\":47180,\".unlock\":47181,\"Ġarises\":47182,\"ĠCommands\":47183,\"(\\\"\\\");čĊ\":47184,\"_FORE\":47185,\";',\":47186,\"+\\\"'\":47187,\".Images\":47188,\"\\\"){\":47189,\"ĠMeyer\":47190,\"Ġnegatively\":47191,\"ĠDLL\":47192,\"Ġexe\":47193,\"Ġdeficiency\":47194,\"Ġwildly\":47195,\"-switch\":47196,\"construction\":47197,\"Ġexceptionally\":47198,\"ĠLiz\":47199,\"/java\":47200,\"Ġtheirs\":47201,\"ĠContemporary\":47202,\"lis\":47203,\".fillRect\":47204,\"ĠNFC\":47205,\"Ġrehe\":47206,\"(numbers\":47207,\"Ġraster\":47208,\"Ġfiguring\":47209,\"Ġshowc\":47210,\"ĠJill\":47211,\"Ġarcade\":47212,\"ĠConstructs\":47213,\"mdl\":47214,\"('|\":47215,\"Ġidentifiers\":47216,\"Ġstellar\":47217,\"(Connection\":47218,\"Ġ\\\"{{\":47219,\"yor\":47220,\"(mysqli\":47221,\"Ġdove\":47222,\"OfBirth\":47223,\".disconnect\":47224,\"_hi\":47225,\"Ġzwischen\":47226,\"ĠGrund\":47227,\"iros\":47228,\"_Array\":47229,\".onclick\":47230,\"ansom\":47231,\"Answers\":47232,\"ĉremove\":47233,\"Fa\":47234,\"Ġhurry\":47235,\"-inf\":47236,\"ĠgetClass\":47237,\"ĠRegulation\":47238,\"ĠFLAGS\":47239,\"misc\":47240,\"Ken\":47241,\"_heading\":47242,\"GHz\":47243,\"-entry\":47244,\"Ġbiography\":47245,\"Sig\":47246,\"-mf\":47247,\"Watcher\":47248,\"âĢľA\":47249,\"}px\":47250,\"Ġspicy\":47251,\"_sq\":47252,\"Lost\":47253,\"(track\":47254,\"Ð°Ð»Ð¸\":47255,\"Descending\":47256,\"<bits\":47257,\"quine\":47258,\"ĠAdvoc\":47259,\"_SN\":47260,\"ĠHannah\":47261,\"POP\":47262,\"Ġemitter\":47263,\"Ġcyn\":47264,\"ĠCAD\":47265,\"?).\":47266,\"/set\":47267,\"ĠSister\":47268,\"ĠEndpoint\":47269,\"Ġmenor\":47270,\"Ġinterp\":47271,\"rk\":47272,\"idle\":47273,\"Ġoutfits\":47274,\".vertex\":47275,\"Ġclic\":47276,\"AREN\":47277,\"Ġposture\":47278,\"ĠOpportunity\":47279,\"vx\":47280,\"ĠForbes\":47281,\".Direction\":47282,\"Ġreside\":47283,\"Ġremembering\":47284,\"nesty\":47285,\"Autoresizing\":47286,\"providers\":47287,\"ĠAH\":47288,\"Ġhurting\":47289,\"ĠLily\":47290,\"evaluate\":47291,\"lijk\":47292,\"papers\":47293,\"ĠSmash\":47294,\"ĠLAST\":47295,\"Ġwells\":47296,\"washer\":47297,\"_ROLE\":47298,\"ĠDanger\":47299,\"*((\":47300,\"_repository\":47301,\"ĠResolve\":47302,\"ĠRooms\":47303,\"_RG\":47304,\"ĠQT\":47305,\"oop\":47306,\"ĠHeap\":47307,\"Ġslowing\":47308,\"Ġgratuite\":47309,\"_catalog\":47310,\"Ġpolynomial\":47311,\"Ly\":47312,\"pcs\":47313,\"Fox\":47314,\"ĠCyr\":47315,\"Ġdimin\":47316,\"/month\":47317,\"Salt\":47318,\"Ġhind\":47319,\".PER\":47320,\"Forum\":47321,\"cen\":47322,\"_pol\":47323,\"íĺ¸\":47324,\"Ġinser\":47325,\"(~\":47326,\"@test\":47327,\"ĠGoldman\":47328,\"Ġuploading\":47329,\"Fc\":47330,\"Ġkommer\":47331,\"Ġmitt\":47332,\"_logged\":47333,\"Ġbucks\":47334,\"-layer\":47335,\")};Ċ\":47336,\"ĠOM\":47337,\"Ġveg\":47338,\"colour\":47339,\"ĠÐ¾Ð±ÑĬ\":47340,\"StdString\":47341,\"_que\":47342,\"ĠTian\":47343,\"Ġspecialize\":47344,\"Ð¸Ð¿\":47345,\"ĠÐºÐ»\":47346,\"trial\":47347,\"-edge\":47348,\"Ġmars\":47349,\"OGLE\":47350,\"Ġempathy\":47351,\"ĠBom\":47352,\"Ġcollisions\":47353,\"Ġcarte\":47354,\"ĠTeil\":47355,\"ĠMPL\":47356,\"ĠpornÃ´\":47357,\"Ġairlines\":47358,\"Aws\":47359,\"Ns\":47360,\"ĠSpawn\":47361,\"(use\":47362,\"é»ĺè®¤\":47363,\"Ġyacc\":47364,\"stor\":47365,\"Ġconfess\":47366,\"Ġpeque\":47367,\"rage\":47368,\"?\\\"Ċ\":47369,\"/datatables\":47370,\"ĠShower\":47371,\"__/\":47372,\"Ġcrystals\":47373,\"Ġbuscar\":47374,\"ĠHaus\":47375,\"izaÃ§Ã£o\":47376,\"_entities\":47377,\"ķĮ\":47378,\"ļĮ\":47379,\"xcc\":47380,\"virt\":47381,\"-chevron\":47382,\"(Result\":47383,\"cake\":47384,\"COME\":47385,\"Ġprohibit\":47386,\"ĠChess\":47387,\"Ġbeaucoup\":47388,\"ĠÑĩÑĤÐ¾\":47389,\"RUN\":47390,\"ĠIK\":47391,\"Ã³ÅĤ\":47392,\"_Update\":47393,\"Ġsleek\":47394,\"ĠSpecify\":47395,\"_credentials\":47396,\"ÅŁt\":47397,\"ĠUserName\":47398,\"ĉValue\":47399,\"ĠarrayList\":47400,\"Ġexchanged\":47401,\"ipsis\":47402,\".related\":47403,\"ĠSeite\":47404,\"_BAR\":47405,\"ĠLem\":47406,\"ĠWATCH\":47407,\"ĠClients\":47408,\"Ġ.*\":47409,\"ĠEarl\":47410,\"-report\":47411,\"Ġforeigners\":47412,\"Ġstrengthening\":47413,\"ĉDescription\":47414,\"(go\":47415,\".toolbar\":47416,\"Ġcalculates\":47417,\"ĉsource\":47418,\"Ġczas\":47419,\"Ġrecl\":47420,\"abo\":47421,\"Ġlocalhost\":47422,\"Ġ^{Ċ\":47423,\".Pop\":47424,\"ĠDesigned\":47425,\"\\\\Abstract\":47426,\"Hold\":47427,\"ĠGuidelines\":47428,\"ipline\":47429,\"Ġcaching\":47430,\".Reader\":47431,\"_external\":47432,\".strptime\":47433,\"ĠWeekend\":47434,\"-Mar\":47435,\"ĠBei\":47436,\"Ġ{*}\":47437,\"ĠRud\":47438,\"Ġexplor\":47439,\"ĠBoulevard\":47440,\"Cash\":47441,\"Ġprepares\":47442,\"Ġserialization\":47443,\"ewater\":47444,\"Ġadc\":47445,\":ĊĊĊĊĊĊ\":47446,\"Refer\":47447,\"Ġscanned\":47448,\"}}ĊĊ\":47449,\"ĠFul\":47450,\"Ġtouring\":47451,\"ãĥĥãĤ¯\":47452,\">((\":47453,\"survey\":47454,\"Ġíĺ\":47455,\"...')Ċ\":47456,\"ĠDivider\":47457,\"osl\":47458,\"_CANCEL\":47459,\"_prepare\":47460,\"stin\":47461,\"ĠHeath\":47462,\".PrimaryKey\":47463,\"ĠâĨĲ\":47464,\"ĠLocalDateTime\":47465,\"Ġcooperative\":47466,\"Learning\":47467,\".enqueue\":47468,\"Ġgoog\":47469,\"ĠRegression\":47470,\"imates\":47471,\"Ġvoyeur\":47472,\"ĠDrink\":47473,\"plug\":47474,\"Ġlender\":47475,\"mana\":47476,\"Ġpersonnes\":47477,\"ypse\":47478,\"Ġunlink\":47479,\"ĠRavens\":47480,\"Ġhurd\":47481,\"Ġperiodically\":47482,\"ARGS\":47483,\"ĠGH\":47484,\"characters\":47485,\"...\\\"ĊĊ\":47486,\"-establish\":47487,\"Ġdn\":47488,\"(condition\":47489,\"ĠGravity\":47490,\"Ġestas\":47491,\"_focus\":47492,\"Creature\":47493,\"(site\":47494,\"Ġcarr\":47495,\"ĠRL\":47496,\"ĠRI\":47497,\"ĠMoto\":47498,\"ASF\":47499,\"ĠLuckily\":47500,\"ĉRoute\":47501,\"Ġentropy\":47502,\"(\\\",\\\"\":47503,\"Collect\":47504,\"(contact\":47505,\"ĠFlorence\":47506,\"Ġpremiums\":47507,\"Ġlifecycle\":47508,\"Ġbans\":47509,\"xef\":47510,\"WebKit\":47511,\"ĠFloating\":47512,\"Ġcosa\":47513,\"Specific\":47514,\"ĠLoans\":47515,\"bread\":47516,\"Ġdescriptors\":47517,\"Ġ{:.\":47518,\"THREAD\":47519,\"ĠTrent\":47520,\"Ġscop\":47521,\"QA\":47522,\"ĠAntar\":47523,\"pel\":47524,\"_difference\":47525,\"_changes\":47526,\"(...)\":47527,\"ĠRotation\":47528,\"ĠLGPL\":47529,\"ĠJUST\":47530,\"(Task\":47531,\"_subset\":47532,\"ĠTRANS\":47533,\"åĬĽ\":47534,\"ĠScout\":47535,\"-popup\":47536,\"Ġsmoked\":47537,\"_Class\":47538,\"Ġturnover\":47539,\"brakk\":47540,\"ĠRocky\":47541,\"tas\":47542,\".RegularExpressions\":47543,\"ĠElliott\":47544,\"ĠSpinner\":47545,\"DUCTION\":47546,\"Ġlibre\":47547,\"Ġmolto\":47548,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":47549,\"ĠFTP\":47550,\"mpeg\":47551,\"(features\":47552,\"Ġbald\":47553,\"ĠVid\":47554,\"Ġshouting\":47555,\"Lint\":47556,\"Ġsockets\":47557,\"Ġprow\":47558,\"Ġnouvelle\":47559,\"iscard\":47560,\"ĠSponsor\":47561,\"Ġconsulta\":47562,\")));\":47563,\"Indian\":47564,\"ĠRaspberry\":47565,\"Ġteammate\":47566,\"ĠJWT\":47567,\"ĠGhana\":47568,\"Ġcakes\":47569,\"primer\":47570,\"forma\":47571,\"ergarten\":47572,\"_Manager\":47573,\"Ġpreseason\":47574,\"GAME\":47575,\"|\\\"\":47576,\"ĠBrock\":47577,\"Ġoccupy\":47578,\"Ġdecorations\":47579,\"Ã¡nd\":47580,\"Ġcot\":47581,\"Ġparan\":47582,\"Disk\":47583,\"remain\":47584,\">?\":47585,\"Strong\":47586,\"Ġfrance\":47587,\"ĠEra\":47588,\"-cr\":47589,\".BufferedReader\":47590,\"ĠParadise\":47591,\"ĠVAT\":47592,\"ĠAnders\":47593,\"Ġlimb\":47594,\"ampoo\":47595,\"Ġimperative\":47596,\"UTILITY\":47597,\"ĠRecognition\":47598,\"Ġragazze\":47599,\"Ġpops\":47600,\"ypress\":47601,\"Ġembargo\":47602,\"//{Ċ\":47603,\"Ġsyll\":47604,\"PTR\":47605,\"åŃĺåľ¨\":47606,\"Ġdidnt\":47607,\"Mailer\":47608,\"Ġacademics\":47609,\"ĠFrauen\":47610,\"neider\":47611,\"-rel\":47612,\"Ġrainbow\":47613,\"(In\":47614,\"Ġsliced\":47615,\"=============Ċ\":47616,\"(send\":47617,\"NSMutableDictionary\":47618,\"vos\":47619,\"(package\":47620,\"Ġordinance\":47621,\"viewer\":47622,\"ĠSantos\":47623,\"-selling\":47624,\"Ġgov\":47625,\"ettle\":47626,\"Ġfounders\":47627,\"Ġwaking\":47628,\"slashes\":47629,\"-pound\":47630,\"recht\":47631,\"Ø§Øª\":47632,\".onClick\":47633,\"Ġnord\":47634,\"stÃ¤nd\":47635,\"_when\":47636,\"UTERS\":47637,\"icc\":47638,\"Ġcapsule\":47639,\"ĠWid\":47640,\"Marc\":47641,\"à¸¸\":47642,\"rored\":47643,\"UGE\":47644,\"LOUD\":47645,\"ĠAudit\":47646,\"ipients\":47647,\"opian\":47648,\"ĠSue\":47649,\"Ġwurden\":47650,\".Helpers\":47651,\"Ġfactions\":47652,\"[np\":47653,\"-than\":47654,\"Ġreco\":47655,\"Ġkas\":47656,\"Ġcmds\":47657,\"/network\":47658,\"xbf\":47659,\"getColor\":47660,\"Ġbiased\":47661,\"ĠLak\":47662,\"Datas\":47663,\"vents\":47664,\"Ġë²\":47665,\"_PS\":47666,\".Validate\":47667,\"Invoker\":47668,\"Ġneuen\":47669,\"Ġjuvenile\":47670,\"VISION\":47671,\"Ġdevote\":47672,\"Ġlinha\":47673,\"Ġdiscounted\":47674,\"\\\\Config\":47675,\"Ġworthwhile\":47676,\"Ġskinny\":47677,\"ĠCourses\":47678,\"leys\":47679,\"ĠMortgage\":47680,\"Kevin\":47681,\"Ġannounces\":47682,\"])*\":47683,\"reservation\":47684,\"Ġæķ°\":47685,\"Ġprejudice\":47686,\"ĠStringComparison\":47687,\"Ġbeard\":47688,\"-win\":47689,\"ĠSÃ£o\":47690,\"ĉms\":47691,\"jal\":47692,\"ĠEarn\":47693,\"_ports\":47694,\"ĠNombre\":47695,\"_COR\":47696,\"ĠBUILD\":47697,\".sound\":47698,\"Yellow\":47699,\"Ġlinebacker\":47700,\"Ġcharitable\":47701,\"jug\":47702,\"_NONNULL\":47703,\"ĠDental\":47704,\"\\\">${\":47705,\"ĉmatch\":47706,\"Russian\":47707,\"Ġversch\":47708,\"Ġpinned\":47709,\"Ġadopting\":47710,\"OptionsMenu\":47711,\"Pag\":47712,\"Ġpairing\":47713,\"Ġtread\":47714,\"ercises\":47715,\"ĠSpread\":47716,\")i\":47717,\"ĠBAD\":47718,\"_tf\":47719,\"UIImageView\":47720,\"populate\":47721,\"bab\":47722,\"ĠÏĥ\":47723,\"[++\":47724,\"Ġopioid\":47725,\"Ġ##Ċ\":47726,\"dtype\":47727,\"ĠStarts\":47728,\"('/')\":47729,\"Ġpersonals\":47730,\"-market\":47731,\"Ġredundant\":47732,\"ĠEssential\":47733,\"Ġscrapy\":47734,\"ĠÐ¸Ð¼\":47735,\"acl\":47736,\"Ġcrear\":47737,\"ĠBend\":47738,\"Ġrelieve\":47739,\"-room\":47740,\"wife\":47741,\"ĠvÃł\":47742,\"ĠQPoint\":47743,\"Ġquasi\":47744,\"ĠmethodName\":47745,\"\\\\xc\":47746,\"ĠPeru\":47747,\"/The\":47748,\".orm\":47749,\"Ġviz\":47750,\"/pdf\":47751,\"Located\":47752,\"Ġconfrontation\":47753,\"ĠChampionships\":47754,\"Ġhypert\":47755,\"Ġdj\":47756,\"ĠUserInfo\":47757,\"ĠåĪĽå»º\":47758,\"\\\\xb\":47759,\"(sim\":47760,\"Ġ==Ċ\":47761,\"Ġstaging\":47762,\"Ġdrastically\":47763,\"åŃ¦\":47764,\"lords\":47765,\".less\":47766,\"Ð²ÐµÐ´Ð¸ÑĤÐµ\":47767,\"ĠBucket\":47768,\"ĠMam\":47769,\".term\":47770,\"_pi\":47771,\"czy\":47772,\".pub\":47773,\"precio\":47774,\"ĠVirt\":47775,\"Ġroman\":47776,\"itat\":47777,\"Lex\":47778,\"_infos\":47779,\"Ä°\":47780,\".other\":47781,\"VELO\":47782,\"Ġponder\":47783,\"Ġhanno\":47784,\"(Page\":47785,\"doi\":47786,\"Ġpolite\":47787,\"Ġprogrammer\":47788,\"Dies\":47789,\"$d\":47790,\"Ġreplication\":47791,\"addColumn\":47792,\"frican\":47793,\"Ġleng\":47794,\"beer\":47795,\"oit\":47796,\"Ġwasting\":47797,\"ylim\":47798,\"measure\":47799,\"Neg\":47800,\"Ġpartie\":47801,\".console\":47802,\"ĠGuinea\":47803,\"TEL\":47804,\"_fact\":47805,\".chunk\":47806,\"Ġlent\":47807,\"Ġaller\":47808,\"Ġà¤ķ\":47809,\"_idle\":47810,\"Ġadmissions\":47811,\"JSONArray\":47812,\"Ġvibration\":47813,\".helpers\":47814,\"å¤ĸ\":47815,\"Ġhen\":47816,\"john\":47817,\"ĠìĥĿ\":47818,\"Ġjudgement\":47819,\"Ġgeen\":47820,\"terra\":47821,\"^{\":47822,\"ĠIz\":47823,\"ĠcÃ¢\":47824,\"instances\":47825,\"Ġthreatens\":47826,\"ĠmÃ¼ssen\":47827,\"KindOfClass\":47828,\"Ġstorytelling\":47829,\"_demo\":47830,\"rias\":47831,\"Privacy\":47832,\"hift\":47833,\"ĠYi\":47834,\"esor\":47835,\"íķł\":47836,\"ensitivity\":47837,\".Writer\":47838,\"à¸Ĥ\":47839,\"District\":47840,\".getJSONObject\":47841,\"Impro\":47842,\"(getResources\":47843,\"ĠSPELL\":47844,\"roduce\":47845,\"Ġslowed\":47846,\"Ġlinewidth\":47847,\"Ġhonesty\":47848,\"ĠCoord\":47849,\"ĠFork\":47850,\"ĠDispatchQueue\":47851,\"ĠCliff\":47852,\"ĠWiring\":47853,\"_TIMESTAMP\":47854,\"ollah\":47855,\"avoid\":47856,\"++];Ċ\":47857,\"semantic\":47858,\"-css\":47859,\"Ġveto\":47860,\"ĠMerr\":47861,\"Ġlegislators\":47862,\"CEEDED\":47863,\"Ġquestionnaire\":47864,\"ĠPills\":47865,\"Calculate\":47866,\"(core\":47867,\"'e\":47868,\"Ġdislike\":47869,\"ĠPreferences\":47870,\"_EXTERNAL\":47871,\"è°ĥ\":47872,\"Ġdodge\":47873,\"æľįåĬ¡\":47874,\".names\":47875,\".drawImage\":47876,\"_prom\":47877,\"uckland\":47878,\"Ġ<$>\":47879,\"Ä±z\":47880,\"/site\":47881,\"é¡¹\":47882,\"rophe\":47883,\"Ġcompelled\":47884,\"Ġlaptops\":47885,\"Ġuni\":47886,\"CLOSE\":47887,\"Ġcasualties\":47888,\"ĠUniform\":47889,\"Terminal\":47890,\".\\\",\\\"\":47891,\"DAT\":47892,\"(TreeNode\":47893,\"ĠGandhi\":47894,\"(stmt\":47895,\"AXB\":47896,\"*M\":47897,\"Ġumbrella\":47898,\"animal\":47899,\"Ġgrpc\":47900,\"Ġwhereby\":47901,\"Ġfloats\":47902,\"ĉarg\":47903,\"Ġdbg\":47904,\"Ġexceeding\":47905,\"EventType\":47906,\".SaveChangesAsync\":47907,\"Ġ{{{\":47908,\"Ġowed\":47909,\"ahrenheit\":47910,\"Ġì§\":47911,\"Ġequipo\":47912,\"urai\":47913,\"Ġidol\":47914,\"]\\\")Ċ\":47915,\"_major\":47916,\"Ġentirety\":47917,\"ingerprint\":47918,\"Ã§os\":47919,\"/account\":47920,\"ĉright\":47921,\"ursos\":47922,\"ĠEDT\":47923,\"_INSERT\":47924,\"Ġshining\":47925,\"Ġ<:\":47926,\"EdgeInsets\":47927,\"Ġcolonies\":47928,\".IM\":47929,\"ĉĠĉ\":47930,\"ROAD\":47931,\"CCCC\":47932,\"placing\":47933,\"ĠgetActivity\":47934,\"emacs\":47935,\"'%(\":47936,\".clicked\":47937,\"ĠThem\":47938,\"isia\":47939,\"Buscar\":47940,\".rename\":47941,\"Ġoath\":47942,\"Ġafterward\":47943,\"ĠUFO\":47944,\"APS\":47945,\"ĠJacksonville\":47946,\".some\":47947,\"Confirmed\":47948,\".scan\":47949,\"igInteger\":47950,\"Decorator\":47951,\"shield\":47952,\"ressive\":47953,\".did\":47954,\"è¯·è¾ĵåħ¥\":47955,\"Ġshutter\":47956,\"Dam\":47957,\"Ġparenting\":47958,\"eyed\":47959,\"$item\":47960,\"-develop\":47961,\"Ġextracts\":47962,\"Ġdecentralized\":47963,\"ĠElsa\":47964,\"_spin\":47965,\"])+\":47966,\"-initial\":47967,\"Ġmultitude\":47968,\"Ġsensory\":47969,\"ĠMODEL\":47970,\"Ġsafeguard\":47971,\"ì¹\":47972,\"Ġhunters\":47973,\"ĠTiny\":47974,\"INO\":47975,\"decorate\":47976,\"ĠNoSuch\":47977,\"Ho\":47978,\"(Response\":47979,\"Ġruler\":47980,\"ĉshort\":47981,\"Ġcaster\":47982,\"ĠclientId\":47983,\"Ġpdb\":47984,\"ëıĦ\":47985,\"itic\":47986,\"ĠGameState\":47987,\"ĠnewItem\":47988,\")ĊĊĊĊĊĊ\":47989,\"ouis\":47990,\"noc\":47991,\".BLACK\":47992,\"_VECTOR\":47993,\"----------</\":47994,\"Ġexamines\":47995,\"ĉblock\":47996,\"Ġaddon\":47997,\"Ġsurveyed\":47998,\"ĠListener\":47999,\"Ġfrontier\":48000,\"Ġlacked\":48001,\"JUST\":48002,\"ĠÑįÑĤ\":48003,\"Ġtint\":48004,\"ĠMystery\":48005,\"dateTime\":48006,\"ĠTutorial\":48007,\"ĠfullName\":48008,\"ĠDragons\":48009,\"_FILES\":48010,\"ĠPrintWriter\":48011,\"Ġbeet\":48012,\"ĠLadies\":48013,\"_tip\":48014,\"ĠJahre\":48015,\"orama\":48016,\"Ġinsulation\":48017,\"(Environment\":48018,\"_ast\":48019,\"berger\":48020,\"lena\":48021,\"ogeneous\":48022,\"_MONTH\":48023,\"-present\":48024,\"Ġframeworks\":48025,\"QQ\":48026,\"PHPExcel\":48027,\"Ġcountdown\":48028,\"ĠFW\":48029,\"(cluster\":48030,\":c\":48031,\"Ġokhttp\":48032,\"observe\":48033,\"[player\":48034,\".he\":48035,\"ĠPanama\":48036,\"Australia\":48037,\"Ġounces\":48038,\"Ġaggressively\":48039,\"Ġwarns\":48040,\"Ġcustomization\":48041,\"_Query\":48042,\"wis\":48043,\"Ġinval\":48044,\"AFF\":48045,\"(camera\":48046,\"Wir\":48047,\"Ġnegotiation\":48048,\"ĉO\":48049,\"Ġrespectful\":48050,\"Ġdiamonds\":48051,\"'av\":48052,\"approx\":48053,\"/dr\":48054,\"Ġgrabs\":48055,\"Ġaccompanies\":48056,\"constraint\":48057,\"Ġrez\":48058,\"(region\":48059,\"Ġbait\":48060,\"terminate\":48061,\"ĠBelgian\":48062,\"assium\":48063,\"Ġ]čĊ\":48064,\"Systems\":48065,\"ousedown\":48066,\".bus\":48067,\"SetValue\":48068,\"ĠPrep\":48069,\"Ġconveniently\":48070,\".mid\":48071,\"casecmp\":48072,\"Numero\":48073,\"daily\":48074,\"ĠCoding\":48075,\"(destination\":48076,\"#$\":48077,\"ujÄħ\":48078,\"Ġemergence\":48079,\"_para\":48080,\"_INCLUDE\":48081,\"#:\":48082,\"Ġrecognizing\":48083,\"Ġfug\":48084,\"\\\"}},Ċ\":48085,\"Ġbuilders\":48086,\"ĠTerritory\":48087,\"Ġinherently\":48088,\"Ġderiving\":48089,\".eth\":48090,\"ĠDinner\":48091,\".setObjectName\":48092,\"Ġcelebrates\":48093,\"Ġqueues\":48094,\"ĠMarks\":48095,\"ALTER\":48096,\"ĠDart\":48097,\"poke\":48098,\"_CHANGED\":48099,\"Ġpaar\":48100,\"lies\":48101,\".volley\":48102,\"ĠMeaning\":48103,\"ĠOFFSET\":48104,\"ensing\":48105,\"ĠfrÃ¥n\":48106,\".localStorage\":48107,\"Ġë©\":48108,\"({});Ċ\":48109,\"decoder\":48110,\"Ġroulette\":48111,\"Ġdismant\":48112,\"Ir\":48113,\"Ġinsurg\":48114,\"Ġ'':Ċ\":48115,\".âĢĿĊ\":48116,\"Ġbrunette\":48117,\".assets\":48118,\"_NETWORK\":48119,\"à¸Ĭ\":48120,\"nym\":48121,\"_Source\":48122,\"\\\\Tests\":48123,\"Escape\":48124,\"crypt\":48125,\".XML\":48126,\"Ġsounding\":48127,\"opcode\":48128,\"Ġclassify\":48129,\"Ġembarrassed\":48130,\"ĠLOGIN\":48131,\"Ġresidue\":48132,\"ĠNEED\":48133,\".deepEqual\":48134,\"perc\":48135,\"-cal\":48136,\"Redis\":48137,\"Tra\":48138,\"(_)\":48139,\"askets\":48140,\"gradation\":48141,\"Ġenzyme\":48142,\"ĠStephanie\":48143,\".Invalid\":48144,\"']?></\":48145,\"Ġdisplaced\":48146,\"Ġelementos\":48147,\"(duration\":48148,\"rowCount\":48149,\"ĠFStar\":48150,\"leta\":48151,\"/popper\":48152,\"Ġstato\":48153,\"Ġperformer\":48154,\"Ġdisciplines\":48155,\"ĠFully\":48156,\"icularly\":48157,\"Ġersten\":48158,\"ĠPolygon\":48159,\"Ġdisciples\":48160,\".isdir\":48161,\"Ġtestify\":48162,\"_SR\":48163,\"prisingly\":48164,\"ĠGLint\":48165,\"Ġwiped\":48166,\"Ġcarved\":48167,\"ĠDish\":48168,\".herokuapp\":48169,\"stitial\":48170,\"ĠMATCH\":48171,\"clair\":48172,\"ĠDayton\":48173,\"/')Ċ\":48174,\"IDDLE\":48175,\"Ġinfra\":48176,\"Ġlively\":48177,\"Ġdeps\":48178,\"Ġ[...]\":48179,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":48180,\"ĠLon\":48181,\"Extras\":48182,\"Transient\":48183,\"Ð²ÐµÑĢ\":48184,\"/module\":48185,\"Ġendurance\":48186,\"_tex\":48187,\"Ġ\\\"~/\":48188,\"_ylabel\":48189,\"Ġobed\":48190,\"/game\":48191,\"opsy\":48192,\"Ġfirstname\":48193,\".force\":48194,\"Ġmart\":48195,\"\\\\Client\":48196,\"Ġlegitim\":48197,\".flatten\":48198,\"\\\"',\":48199,\"osexual\":48200,\"Ġjours\":48201,\"MH\":48202,\"expires\":48203,\"Ġstyl\":48204,\".interval\":48205,\"Known\":48206,\"Ġfollower\":48207,\"Ġdalla\":48208,\"piry\":48209,\"_ssl\":48210,\"ishlist\":48211,\"ĠRey\":48212,\"Ġsupermarket\":48213,\"Obviously\":48214,\"-enter\":48215,\"Ġprobabilities\":48216,\"ĠHV\":48217,\"ĠCinema\":48218,\"Ġctypes\":48219,\"ĠBCM\":48220,\"_TAC\":48221,\";a\":48222,\".buttons\":48223,\"Ġretrieving\":48224,\"ilarity\":48225,\"Ġundertaking\":48226,\"ĉstack\":48227,\"Ġkel\":48228,\"ĠXen\":48229,\"(phi\":48230,\"Ġtougher\":48231,\"ĠSeller\":48232,\"caps\":48233,\"ĠEmber\":48234,\"ĠChin\":48235,\"Ġlaughs\":48236,\"Conversion\":48237,\".listener\":48238,\"&B\":48239,\"Ġparadigm\":48240,\"Ġjunction\":48241,\"$/,Ċ\":48242,\"[o\":48243,\"ĠConservatives\":48244,\"ÏĢ\":48245,\"lates\":48246,\"_Exception\":48247,\"Ġmeilleur\":48248,\"Ġstraps\":48249,\"quisites\":48250,\"ĉsn\":48251,\"Ġmassacre\":48252,\"ottes\":48253,\"_green\":48254,\"Titles\":48255,\"//--------------------------------\":48256,\"ĠRegulations\":48257,\"arl\":48258,\"_shortcode\":48259,\"ĠDrawer\":48260,\"Ġparole\":48261,\"Ġwilderness\":48262,\"isson\":48263,\"ĠAFTER\":48264,\"Credential\":48265,\"Blocking\":48266,\"ĠHTC\":48267,\"Sin\":48268,\"(author\":48269,\"Ġcortex\":48270,\"'){čĊ\":48271,\"ï¼īï¼Į\":48272,\"Ġdumped\":48273,\"ĠShut\":48274,\"ĠKeyEvent\":48275,\"ĉPlayer\":48276,\".getPlayer\":48277,\"Ġignores\":48278,\"toggleClass\":48279,\"ĠExclusive\":48280,\">();\":48281,\".getP\":48282,\"anye\":48283,\"Ġneuron\":48284,\"ifold\":48285,\"ĠKnown\":48286,\"Bitcoin\":48287,\"Anyway\":48288,\"ayette\":48289,\"Ġ'['\":48290,\"Ãłnh\":48291,\"mgr\":48292,\"Ġcorrelated\":48293,\"Ġnause\":48294,\"Ġmentality\":48295,\"hasMany\":48296,\"ĠFG\":48297,\"ampie\":48298,\"ITU\":48299,\"Fs\":48300,\".Sp\":48301,\"_between\":48302,\"Dependencies\":48303,\"oug\":48304,\"Placeholder\":48305,\"=text\":48306,\"ĠManaging\":48307,\"ocalypse\":48308,\"åĮĹ\":48309,\"_mag\":48310,\"fld\":48311,\"âĳ\":48312,\"CAM\":48313,\"ĠHelpers\":48314,\"Ġdost\":48315,\"/out\":48316,\"Ġassassination\":48317,\".getImage\":48318,\"ĠKenny\":48319,\".')ĊĊ\":48320,\"){//\":48321,\"ĠRanger\":48322,\"Ġgek\":48323,\"Ġsincere\":48324,\"<Value\":48325,\"ĠDOT\":48326,\"ĠVictory\":48327,\"Ġlegends\":48328,\"Ġprisons\":48329,\"(expression\":48330,\"ĠRabbit\":48331,\"_sentence\":48332,\"Ġbites\":48333,\"ĠonFailure\":48334,\"ĠâĪĪ\":48335,\"Kim\":48336,\".gender\":48337,\"ĠÎ»\":48338,\"Ġ[.\":48339,\"\\\"]);\":48340,\"landing\":48341,\"-digit\":48342,\"TEMP\":48343,\"ĉentry\":48344,\"Ġstrtok\":48345,\"Ġdescendants\":48346,\"umno\":48347,\"Ġleaning\":48348,\"Ġspecifics\":48349,\"qn\":48350,\"ĠSpart\":48351,\"Ġporr\":48352,\"EDIATEK\":48353,\"Ġseper\":48354,\"'aut\":48355,\"ĠSTEP\":48356,\"ĠBorderLayout\":48357,\"Ġretros\":48358,\"ĠSalvador\":48359,\"ĠENGINE\":48360,\"xdc\":48361,\"Tweet\":48362,\"vk\":48363,\"Ġì²\":48364,\"]<<\":48365,\"hetics\":48366,\"coding\":48367,\"Reach\":48368,\".req\":48369,\"guide\":48370,\".scope\":48371,\"shirt\":48372,\"rogate\":48373,\"SETTING\":48374,\"ĠProtein\":48375,\"Ġeing\":48376,\".EMPTY\":48377,\".df\":48378,\"Ġclearer\":48379,\"Ġcrossover\":48380,\"ĠToys\":48381,\"Ġcoated\":48382,\".Month\":48383,\"ĠAttach\":48384,\"/run\":48385,\".tabs\":48386,\"ĠogsÃ¥\":48387,\"Brown\":48388,\".DATE\":48389,\"Ġfos\":48390,\"åŃĹç¬¦\":48391,\"Wood\":48392,\"-three\":48393,\"herited\":48394,\"Ġrop\":48395,\"(ac\":48396,\"Ġembodiment\":48397,\"ĠKenneth\":48398,\"Ġcannon\":48399,\"Ġbidding\":48400,\"<IEnumerable\":48401,\"ĉsetTimeout\":48402,\"_digit\":48403,\"Ġeliminar\":48404,\"(ne\":48405,\"budget\":48406,\"CSI\":48407,\"ĠìķĦ\":48408,\"ĠASP\":48409,\"GroupId\":48410,\"_COUNTER\":48411,\"consult\":48412,\"Ġiframe\":48413,\"legen\":48414,\"_DECLARE\":48415,\"Sharper\":48416,\"ĠFriendly\":48417,\"ulet\":48418,\"-command\":48419,\"ĠÐł\":48420,\"cycles\":48421,\"ĠWaste\":48422,\"Ġtapped\":48423,\"ĉBuffer\":48424,\"âĢĶin\":48425,\"ĠĊĠĠĊ\":48426,\"ĠIdeal\":48427,\"ĠCandy\":48428,\"_Syntax\":48429,\"Ãªt\":48430,\"ìĿĮ\":48431,\"above\":48432,\"ĠNazis\":48433,\"Ġfst\":48434,\"sein\":48435,\"Ġkunnen\":48436,\"wik\":48437,\"ĠSaving\":48438,\".extensions\":48439,\"ĠDeserialize\":48440,\"ourg\":48441,\".attrib\":48442,\"ï¼ļĊĊ\":48443,\"ĠWins\":48444,\".eql\":48445,\"Ryan\":48446,\"_ack\":48447,\"OURCES\":48448,\"Ġons\":48449,\"grese\":48450,\"afia\":48451,\"Modern\":48452,\"Ġadhere\":48453,\"Ġbios\":48454,\"(acc\":48455,\"kbd\":48456,\"Thrown\":48457,\"©ëĭĪëĭ¤\":48458,\"ĉHttp\":48459,\"ĉxml\":48460,\"EndDate\":48461,\"(parsed\":48462,\".getenv\":48463,\"registr\":48464,\"nell\":48465,\"ionario\":48466,\".innerWidth\":48467,\"rtl\":48468,\"PV\":48469,\"_piece\":48470,\"ĠDeposit\":48471,\"yers\":48472,\"ĠNSNumber\":48473,\"Ġgint\":48474,\"ensemble\":48475,\"Ġnewcom\":48476,\"ĠVietnamese\":48477,\"_hp\":48478,\"Ġaccusing\":48479,\"Ġquis\":48480,\"Ġinvestigator\":48481,\"essential\":48482,\"ĠCX\":48483,\".forName\":48484,\"defs\":48485,\"Ġanalyse\":48486,\"_animation\":48487,\"Ġtha\":48488,\"taboola\":48489,\"ĠTHC\":48490,\"ÃŃculo\":48491,\"Ġglowing\":48492,\"Ġhonors\":48493,\"bstract\":48494,\"kp\":48495,\"ITES\":48496,\"Ġ################################################################\":48497,\"#get\":48498,\"/Desktop\":48499,\"ĉglm\":48500,\"Ġzinc\":48501,\"Ã¡tica\":48502,\"Ġ<<Ċ\":48503,\"VML\":48504,\"ĠUnlimited\":48505,\"vre\":48506,\"-bed\":48507,\"_nonce\":48508,\"ĠGI\":48509,\"travel\":48510,\"ĠisKindOfClass\":48511,\"Ġanonymity\":48512,\"Firestore\":48513,\"Ġemailed\":48514,\"_FLASH\":48515,\"ĠfÃ¥r\":48516,\"âĺħâĺħ\":48517,\"Ġ:]\":48518,\"Hum\":48519,\".reserve\":48520,\"Ã¼m\":48521,\"Ġkostenlose\":48522,\"ĠSCP\":48523,\"utan\":48524,\"ĠGore\":48525,\"Ġchats\":48526,\"/>čĊ\":48527,\".getResources\":48528,\"Ġlump\":48529,\"_consts\":48530,\"(ext\":48531,\"ĉdir\":48532,\"âĿ\":48533,\"ĠpaddingTop\":48534,\"Ġobsession\":48535,\"Ġbanning\":48536,\"ĠAppModule\":48537,\"Ġpartisan\":48538,\"Ġcatalogue\":48539,\"Ġminors\":48540,\"Ġpitches\":48541,\"weep\":48542,\"Ġundertake\":48543,\"Ġthemed\":48544,\"audit\":48545,\".scrollTop\":48546,\"Ġrer\":48547,\"Ġsymptom\":48548,\"Ġopenings\":48549,\".blocks\":48550,\"openid\":48551,\"Ġassh\":48552,\"-save\":48553,\"ĠPig\":48554,\"Ġregain\":48555,\"Ġinicial\":48556,\"/favicon\":48557,\"ĉexp\":48558,\"Ġspices\":48559,\"iska\":48560,\"claims\":48561,\"mak\":48562,\"definitions\":48563,\"Ġcorrespondent\":48564,\"ĠCannabis\":48565,\"__,Ċ\":48566,\"ĠLucky\":48567,\"ĠGaussian\":48568,\"ĠNearly\":48569,\"CAD\":48570,\"']]Ċ\":48571,\"Ġadequately\":48572,\"ĠTITLE\":48573,\"constitutional\":48574,\"-mm\":48575,\"_override\":48576,\"Ġblas\":48577,\".readyState\":48578,\"Ġreminis\":48579,\"Ġreinforced\":48580,\"ĠCollabor\":48581,\"Ġdecorating\":48582,\"Ġbachelor\":48583,\"ERRUPT\":48584,\"Ġupright\":48585,\"ipation\":48586,\"ĠNoble\":48587,\"ĠvalueForKey\":48588,\"ĠsetLoading\":48589,\".Ignore\":48590,\"åģ\":48591,\"Globals\":48592,\"ĠMent\":48593,\"ASSES\":48594,\"Ġlimbs\":48595,\"ĠHUD\":48596,\"inci\":48597,\".iv\":48598,\"ĠQModelIndex\":48599,\"Fuse\":48600,\"Ġpedal\":48601,\"_FREQ\":48602,\"(verbose\":48603,\"Ġlongitud\":48604,\"ĠCharter\":48605,\"ê·¸\":48606,\"Ġbundles\":48607,\".ignore\":48608,\"umbo\":48609,\"EMA\":48610,\".......\":48611,\"sx\":48612,\".Card\":48613,\"Ġheute\":48614,\"Ġsteer\":48615,\"jumlah\":48616,\"Ġ{_\":48617,\"_Checked\":48618,\"Ġfax\":48619,\"ĠGust\":48620,\"itchens\":48621,\"Ġ))ĊĊ\":48622,\"Ġremarkably\":48623,\"/XML\":48624,\"-remove\":48625,\"_bt\":48626,\"Ġincub\":48627,\".package\":48628,\".currentThread\":48629,\"ĠHighlander\":48630,\".side\":48631,\"splash\":48632,\"Ġici\":48633,\"=D\":48634,\"Ġpuck\":48635,\"Ġballots\":48636,\"Ġhugely\":48637,\"coeff\":48638,\"ĠpData\":48639,\".COLUMN\":48640,\"ĠHealing\":48641,\"Ġordin\":48642,\"!),\":48643,\"Ġ'',čĊ\":48644,\"(md\":48645,\"ĠSask\":48646,\"<strong\":48647,\"Ġsurvivor\":48648,\".series\":48649,\"Ġcaffeine\":48650,\"Ġ`(\":48651,\".TRAILING\":48652,\"_Input\":48653,\"(\\\"^\":48654,\"zd\":48655,\"&);Ċ\":48656,\"ĠPing\":48657,\"Ġvoucher\":48658,\".rating\":48659,\"-shirts\":48660,\"ĠRetrieves\":48661,\".alibaba\":48662,\"Oracle\":48663,\"_MOV\":48664,\"OldData\":48665,\"Ġ/*čĊ\":48666,\"Ġgboolean\":48667,\"Ġ=>čĊ\":48668,\"ĠrÃ¡\":48669,\"Ġblunt\":48670,\"ĠImageIcon\":48671,\"ifik\":48672,\"RTC\":48673,\"Ġfibers\":48674,\"Ġtoile\":48675,\".sent\":48676,\"ĠPyQt\":48677,\"$app\":48678,\"Ġmedio\":48679,\"Ġgranting\":48680,\"Ġtslint\":48681,\"ĠMÃ¶\":48682,\"(figsize\":48683,\"Ġhurricane\":48684,\"Ġlifes\":48685,\"ĠÃĦ\":48686,\"rocessing\":48687,\"_standard\":48688,\"-option\":48689,\"')))\":48690,\"Ġvacant\":48691,\"å·¥\":48692,\"ĠHollow\":48693,\"handleChange\":48694,\"Ġdivider\":48695,\"ĠEngineers\":48696,\"Ġsvens\":48697,\"Ġcompliant\":48698,\"tanggal\":48699,\"ĠCredits\":48700,\"ĠEmirates\":48701,\"RuleContext\":48702,\"Ġrealization\":48703,\"Ġdistracted\":48704,\"]+=\":48705,\"Ġaugment\":48706,\"ĠDw\":48707,\"otp\":48708,\"orrent\":48709,\"Editar\":48710,\".stock\":48711,\"Study\":48712,\"pections\":48713,\"ĠGameManager\":48714,\"=cut\":48715,\"Ġflock\":48716,\"ĠRomans\":48717,\"them\":48718,\"-hop\":48719,\"Ġscreenshots\":48720,\"Ġ/*!Ċ\":48721,\"Ġconversions\":48722,\"Ġnormalization\":48723,\"(configuration\":48724,\"Ġaeros\":48725,\"_security\":48726,\"!'Ċ\":48727,\"Bonus\":48728,\"ĠDRIVER\":48729,\"ĉDate\":48730,\"tie\":48731,\"ĠWyoming\":48732,\"Stand\":48733,\"itre\":48734,\"Ġshoppers\":48735,\"Ġdisadvantage\":48736,\"Ġliking\":48737,\"ç¬ĳ\":48738,\"Ġunderstandable\":48739,\"SEE\":48740,\"Ġhoy\":48741,\"Ġninete\":48742,\"Ġconfer\":48743,\"Ġnowrap\":48744,\"ĠVern\":48745,\",čĊčĊ\":48746,\"imestep\":48747,\"LayoutManager\":48748,\"à·\":48749,\"ĉwait\":48750,\"PLETED\":48751,\"Japan\":48752,\"Ġinduce\":48753,\"Ġå¯\":48754,\"Ð¾Ð·Ð²\":48755,\"_ENDPOINT\":48756,\".horizontal\":48757,\"Ġaccelerated\":48758,\"rimon\":48759,\"IVES\":48760,\"Transactions\":48761,\"Lean\":48762,\"ĠSOUR\":48763,\"whether\":48764,\"yg\":48765,\"Ġoid\":48766,\"ĠEntityManager\":48767,\"OUNTRY\":48768,\"Ġfila\":48769,\"OLUMNS\":48770,\"INUE\":48771,\"ĠAnchor\":48772,\"TRAN\":48773,\"woo\":48774,\"blockquote\":48775,\"ĠNurse\":48776,\"ĠCarp\":48777,\"Ġredeem\":48778,\".try\":48779,\"ĠJP\":48780,\"Ġtimestamps\":48781,\"Ġ?>\\\"><\":48782,\"ĠREMOVE\":48783,\"ĠStarbucks\":48784,\"Really\":48785,\"Ġflooded\":48786,\".Callback\":48787,\"DropDown\":48788,\"ipro\":48789,\"Ġtended\":48790,\"lte\":48791,\"Ġproportions\":48792,\"-te\":48793,\"ĠRena\":48794,\"licate\":48795,\"forces\":48796,\".extra\":48797,\".authenticate\":48798,\"Ð²Ð¾Ð´\":48799,\"¡°\":48800,\"ĠforControlEvents\":48801,\"Ġsenha\":48802,\"Ġkein\":48803,\"Ġminist\":48804,\"ĠPreference\":48805,\"ĠTelegraph\":48806,\"ÑĥÐ¿\":48807,\"strpos\":48808,\"Ġillnesses\":48809,\"Ġpigs\":48810,\"ĠgetIntent\":48811,\"Sol\":48812,\"ĠÂ¡\":48813,\"(cpu\":48814,\"[prop\":48815,\"screens\":48816,\"');?>\":48817,\"ĠActs\":48818,\"Ġstrdup\":48819,\"Ġaverages\":48820,\"anal\":48821,\"ĠCasual\":48822,\"GroupBox\":48823,\"ĠHandbook\":48824,\"/comments\":48825,\"Ġnumbered\":48826,\"Ġbroadcasting\":48827,\"çĽĳ\":48828,\".nativeElement\":48829,\".mu\":48830,\"ĠupdatedAt\":48831,\"ĠDoesn\":48832,\".AC\":48833,\".coll\":48834,\"Ġrecorder\":48835,\"_sha\":48836,\"Bg\":48837,\"bil\":48838,\"Ġbolts\":48839,\"Ġç¬\":48840,\"Ġimposing\":48841,\"ĠInformationen\":48842,\"_flashdata\":48843,\"economic\":48844,\"Remark\":48845,\"ucas\":48846,\"ĠOfficers\":48847,\"ĠTER\":48848,\"Walk\":48849,\"Ġmercado\":48850,\"_generate\":48851,\"HY\":48852,\"Calling\":48853,\"snap\":48854,\"scriptId\":48855,\".operation\":48856,\"ĠFlame\":48857,\"liness\":48858,\"Ġrented\":48859,\"_toggle\":48860,\"-changing\":48861,\"ĠTY\":48862,\"'util\":48863,\"EEP\":48864,\"Ġgraphql\":48865,\"ĠUni\":48866,\"Ġimpulse\":48867,\".Basic\":48868,\"Ġenergies\":48869,\"MARY\":48870,\"ĠMarcel\":48871,\"Ġmortal\":48872,\"Ġfres\":48873,\"mens\":48874,\"motion\":48875,\"Ġsampled\":48876,\"âĢľThat\":48877,\"iday\":48878,\"quipment\":48879,\"getInt\":48880,\"ĠAbsolute\":48881,\",'\\\"\":48882,\"uned\":48883,\".share\":48884,\"Ġ})(\":48885,\"mmm\":48886,\"ĠRising\":48887,\"ä»»\":48888,\"Ġunemployed\":48889,\"xfa\":48890,\".follow\":48891,\"ĉĉĉĉĠĠĠĠĠĠ\":48892,\"slt\":48893,\".Phone\":48894,\"Ġknives\":48895,\"Ġeve\":48896,\"onClick\":48897,\"]))čĊ\":48898,\"ĠWitness\":48899,\"ĉNS\":48900,\"ĠEOS\":48901,\"ĠStefan\":48902,\"ĠPriest\":48903,\"âĢĶwhich\":48904,\"GetString\":48905,\".By\":48906,\"Ġupstairs\":48907,\"Ġdetriment\":48908,\"broken\":48909,\"embro\":48910,\"Ġnicotine\":48911,\"ilion\":48912,\"Ġastonishing\":48913,\"_aff\":48914,\"ĠLesson\":48915,\"Ġaccidental\":48916,\"odor\":48917,\"Ġdecir\":48918,\"ĠnewName\":48919,\"+.\":48920,\"çĽ¸\":48921,\"igslist\":48922,\"ĠGithub\":48923,\"Ġsuccessive\":48924,\"racial\":48925,\"Ġenviron\":48926,\"éªĮè¯ģ\":48927,\"Ġredirected\":48928,\"TOTAL\":48929,\"Ġgrabbing\":48930,\"ĠLance\":48931,\"Ġforfe\":48932,\"_CB\":48933,\"å¾®\":48934,\"Elapsed\":48935,\"_way\":48936,\"(DialogInterface\":48937,\"_measure\":48938,\"xbb\":48939,\"Dog\":48940,\"Depart\":48941,\"-src\":48942,\"resolver\":48943,\"withstanding\":48944,\"_shell\":48945,\"ĠLastName\":48946,\"ĠAviation\":48947,\"Ġbeginner\":48948,\"(\\\"%.\":48949,\"(tool\":48950,\"ĠÐ½Ð¾Ð²\":48951,\":init\":48952,\"(API\":48953,\"ĠMorrison\":48954,\"vtColor\":48955,\"Ġstaple\":48956,\"/INFO\":48957,\"Ġsupernatural\":48958,\"Ġsteak\":48959,\"timeline\":48960,\"zzle\":48961,\"\\\"`ĊĊ\":48962,\"Secondary\":48963,\"ĠNepal\":48964,\".StringUtils\":48965,\"Ġadam\":48966,\"Ġ(...\":48967,\"Ġsubstitution\":48968,\"Ġboarding\":48969,\"ĠKeyword\":48970,\"ĠAssault\":48971,\"dbcTemplate\":48972,\"ĠorderId\":48973,\"(engine\":48974,\".assertThat\":48975,\"ĠVenus\":48976,\"Ġhomicide\":48977,\"ĠAval\":48978,\"Ġgutter\":48979,\"ĠSupported\":48980,\"/part\":48981,\"Ġacclaimed\":48982,\"Histor\":48983,\"Ġmeses\":48984,\"Ã¼ber\":48985,\"ĠRenew\":48986,\"Ġgras\":48987,\"ĠEk\":48988,\"Ġinfile\":48989,\"indy\":48990,\".music\":48991,\".Scroll\":48992,\"ĠAges\":48993,\"ĠNaruto\":48994,\"ĠGather\":48995,\"Ġconfirming\":48996,\"=(\\\"\":48997,\"Ġpitched\":48998,\"oley\":48999,\"France\":49000,\"+'\\\"\":49001,\"$total\":49002,\"Ġonde\":49003,\"Ġditch\":49004,\"_sigma\":49005,\"Ġcontinuity\":49006,\"reward\":49007,\"-load\":49008,\"Ġproceso\":49009,\"Locked\":49010,\"staw\":49011,\"Ġspinal\":49012,\"lazy\":49013,\"!==\":49014,\"jest\":49015,\"Ġdun\":49016,\"ĠRodgers\":49017,\"ĉgrid\":49018,\"Ġlogos\":49019,\"ĠBengal\":49020,\".super\":49021,\"Provides\":49022,\"Ġnutrient\":49023,\".Timestamp\":49024,\"IZATION\":49025,\"åĨĮ\":49026,\"Ġfats\":49027,\"ĠXxx\":49028,\"ctica\":49029,\"Targets\":49030,\"Ġcontours\":49031,\"Ġreordered\":49032,\":Array\":49033,\"Ġtolerate\":49034,\"Vir\":49035,\"Ġterribly\":49036,\"Ġbricks\":49037,\"(&_\":49038,\"hb\":49039,\"Portal\":49040,\"ĠBread\":49041,\".which\":49042,\"ÂŃt\":49043,\"asInstanceOf\":49044,\"Ġjobject\":49045,\"ĉlength\":49046,\"_MT\":49047,\";\\\">čĊ\":49048,\"_EXIST\":49049,\"Ġmaternal\":49050,\"REL\":49051,\"Ġê²½ìļ°\":49052,\"hee\":49053,\"Ġlayouts\":49054,\"ĠLap\":49055,\"aisy\":49056,\"Ġstumbled\":49057,\"ĠUIG\":49058,\"ĠSco\":49059,\"Ġimpaired\":49060,\"RESSED\":49061,\"Ġabuses\":49062,\"VF\":49063,\"ARB\":49064,\".NAME\":49065,\"rch\":49066,\"primir\":49067,\"_completed\":49068,\"Ġpenny\":49069,\"Chrome\":49070,\"(begin\":49071,\"ernen\":49072,\"-checkbox\":49073,\"PlainOldData\":49074,\"ĠLPC\":49075,\"rade\":49076,\"spir\":49077,\"Ġconceived\":49078,\"Tips\":49079,\"ĠIoT\":49080,\"ĠGan\":49081,\"èģĶ\":49082,\"Ġbiases\":49083,\"Ġconsultants\":49084,\"pled\":49085,\"_ht\":49086,\"associated\":49087,\"],ĊĊ\":49088,\"Ġdelightful\":49089,\"ĠÑĤÐµÐº\":49090,\"Helvetica\":49091,\"(load\":49092,\"-expand\":49093,\"_WIDGET\":49094,\"toa\":49095,\"ĠAkt\":49096,\"Ġomn\":49097,\"Ġclauses\":49098,\"Intel\":49099,\"*/}Ċ\":49100,\"_registration\":49101,\"ĠoldValue\":49102,\"Ġrestoring\":49103,\"Ġunreal\":49104,\"OVER\":49105,\"ĉĊĉĊĉĊ\":49106,\"ATS\":49107,\"_probe\":49108,\"Ġdivisor\":49109,\".updateDynamic\":49110,\"å¹³\":49111,\"Produces\":49112,\"stamp\":49113,\".jboss\":49114,\"ĉtask\":49115,\"!(:\":49116,\"Ġpsychic\":49117,\"@class\":49118,\"Martin\":49119,\"ĠPassed\":49120,\"clarations\":49121,\"hel\":49122,\"Ð°Ñĩ\":49123,\"ĉcopy\":49124,\"-bin\":49125,\"zan\":49126,\"igram\":49127,\"à¦¾à¦\":49128,\"(sig\":49129,\"ĠCaval\":49130,\"_##\":49131,\"Ġ%=\":49132,\"outlined\":49133,\"ĠAcid\":49134,\"Ġunpredictable\":49135,\"-dashboard\":49136,\"HexString\":49137,\"+c\":49138,\".Public\":49139,\"áº©\":49140,\"Ġconveyor\":49141,\"ĠEB\":49142,\"Ġselects\":49143,\"Ġknocking\":49144,\"ĠCec\":49145,\"IBUTES\":49146,\"owaÄĩ\":49147,\"gatsby\":49148,\"*v\":49149,\"entropy\":49150,\"Ġdispatched\":49151,\"Ġcamel\":49152,\"ĠSaturn\":49153,\"Ġoverweight\":49154,\"(phone\":49155,\"parable\":49156,\"%B\":49157,\"_vectors\":49158,\"Ġbrewing\":49159,\"ĠTk\":49160,\"ĠDownloads\":49161,\"ĠSaved\":49162,\".Price\":49163,\"Ġcurved\":49164,\"ĠParenthood\":49165,\"è¶\":49166,\".pnl\":49167,\"pletely\":49168,\".Day\":49169,\"Ġadvertisers\":49170,\"Ġejec\":49171,\"Ġprzed\":49172,\"ë¯\":49173,\"!';Ċ\":49174,\"ĠKush\":49175,\"ĠTAB\":49176,\"Ġquests\":49177,\"Ġcoincidence\":49178,\"ummies\":49179,\"ĠKashmir\":49180,\"ĠEthics\":49181,\"_growth\":49182,\"Ġaktiv\":49183,\"Ġgrouping\":49184,\"å¢ŀ\":49185,\"_truth\":49186,\"åĲ¬\":49187,\"todos\":49188,\"iset\":49189,\"TexCoord\":49190,\"Ã¤tt\":49191,\"ĠZur\":49192,\"roys\":49193,\"_MAGIC\":49194,\"Ġbrewery\":49195,\"(State\":49196,\"ĠSMALL\":49197,\"ĠPlants\":49198,\"itbart\":49199,\"eacher\":49200,\"ĠAdelaide\":49201,\"Lu\":49202,\"Ġfick\":49203,\"undles\":49204,\"_loaded\":49205,\"Ð¸Ðµ\":49206,\"Poll\":49207,\"ritic\":49208,\"ELY\":49209,\"Ġ+'\":49210,\"ĠProfession\":49211,\"Ġstamps\":49212,\"ĠSew\":49213,\"scrollView\":49214,\"Ġcommunist\":49215,\"/problems\":49216,\"}čĊčĊčĊčĊ\":49217,\",o\":49218,\"Ġudp\":49219,\"Ġobese\":49220,\"approve\":49221,\"ancellation\":49222,\"_Game\":49223,\"ĠHashtable\":49224,\"adaptiveStyles\":49225,\"Ġpossesses\":49226,\".matcher\":49227,\"functional\":49228,\"Mrs\":49229,\"ĉsave\":49230,\"ĠDbType\":49231,\"Ġken\":49232,\"getContext\":49233,\"Ġmans\":49234,\"(rel\":49235,\"ĠBrotherhood\":49236,\")`Ċ\":49237,\"è§£\":49238,\".Information\":49239,\"OutOfRangeException\":49240,\"ĠSek\":49241,\"Cas\":49242,\"Ġbloggers\":49243,\"Either\":49244,\"(\\\"\\\"\\\"\":49245,\"Ġpinch\":49246,\"Ġcoarse\":49247,\")p\":49248,\"ĠPulse\":49249,\"Ġlearnt\":49250,\"Ġdentist\":49251,\"Ġonchange\":49252,\"Ġdirectives\":49253,\"(actions\":49254,\"nyder\":49255,\"ĠShir\":49256,\"Trait\":49257,\"_dep\":49258,\"ĠPET\":49259,\"ĠREP\":49260,\".AppSettings\":49261,\"cuador\":49262,\"idenav\":49263,\"Ġenvi\":49264,\"Ġslammed\":49265,\"ĠShoot\":49266,\"ĠdateFormat\":49267,\".joda\":49268,\"veys\":49269,\"Ġ).ĊĊ\":49270,\"Ġcareg\":49271,\"ĠParallel\":49272,\"_translation\":49273,\".functions\":49274,\".obs\":49275,\"RuntimeException\":49276,\"[]=\":49277,\"overview\":49278,\"ĠSchl\":49279,\"Ġnoisy\":49280,\"ĠOnPropertyChanged\":49281,\"Sending\":49282,\"Ġunfamiliar\":49283,\"Upon\":49284,\"ĠPrints\":49285,\".typ\":49286,\"Ġfleeing\":49287,\"ĉmove\":49288,\"(Un\":49289,\"Ġqr\":49290,\"×ľ\":49291,\"_beta\":49292,\"Ġskies\":49293,\"ĉme\":49294,\"WND\":49295,\"Ġstickers\":49296,\"blas\":49297,\"Ġinserts\":49298,\"Ġverses\":49299,\"ĠDew\":49300,\"Ġtangible\":49301,\"Ġhecho\":49302,\"POL\":49303,\"Ġteardown\":49304,\"omnia\":49305,\"IBE\":49306,\".cover\":49307,\"_strategy\":49308,\"^-\":49309,\"setPosition\":49310,\"uale\":49311,\"Signed\":49312,\"Ġiface\":49313,\"aseline\":49314,\".setTime\":49315,\"ĠMineral\":49316,\"ĠFighting\":49317,\"skins\":49318,\"Ġdiscrimin\":49319,\"Ġdansk\":49320,\"ĠPrinceton\":49321,\"acist\":49322,\"Ġ());Ċ\":49323,\"tracks\":49324,\"imonial\":49325,\"adecimal\":49326,\"EPROM\":49327,\"uggle\":49328,\".Notification\":49329,\"$mail\":49330,\"cantidad\":49331,\"ĠJung\":49332,\"Ġseekers\":49333,\"Ġplausible\":49334,\"tier\":49335,\"ÐµÐ¶\":49336,\"Ġrapper\":49337,\"ĠMana\":49338,\"ĠHttpStatusCode\":49339,\"Ġburnt\":49340,\"loses\":49341,\"ĠFoto\":49342,\"ĠJsonObject\":49343,\"Instagram\":49344,\"Ġsyscall\":49345,\"Ġrealities\":49346,\"ĠMATLAB\":49347,\":^{Ċ\":49348,\"TERM\":49349,\"ĠCbd\":49350,\"ĠParagraph\":49351,\"ĠtravÃ©s\":49352,\"Ġconstructing\":49353,\"Ġswal\":49354,\"Ġpige\":49355,\"LLLL\":49356,\"-existing\":49357,\"Gets\":49358,\"Ġmelted\":49359,\"Ġmitigate\":49360,\"Hen\":49361,\"Ġhm\":49362,\"imas\":49363,\"ĠAo\":49364,\"ĠPerez\":49365,\"ĠDAL\":49366,\"Ġëĭ¤\":49367,\"Ġdivis\":49368,\"StoryboardSegue\":49369,\"ĠModify\":49370,\"ĠÃľber\":49371,\"_OVERRIDE\":49372,\".pem\":49373,\"untos\":49374,\"ĠespaÃ±\":49375,\"Ġ{?\":49376,\"ĠPAY\":49377,\"_ipv\":49378,\"ĠFury\":49379,\"__.__\":49380,\"elow\":49381,\"-centered\":49382,\"checks\":49383,\"_Reg\":49384,\"-Javadoc\":49385,\"ĉload\":49386,\"ĠLikewise\":49387,\"Ø§Ùħ\":49388,\"UNE\":49389,\".sem\":49390,\"xcb\":49391,\"ĠCave\":49392,\"_sleep\":49393,\"Ġsilently\":49394,\"ĠExtreme\":49395,\".ToUpper\":49396,\"ĉCHECK\":49397,\"Ġcue\":49398,\"ĠQByteArray\":49399,\"Ġcorrupted\":49400,\"ĠDÃ©\":49401,\"Ġimped\":49402,\"GetName\":49403,\"Ġinaccurate\":49404,\"Ġsober\":49405,\"ÐµÐµ\":49406,\"Ġbarcode\":49407,\"--){Ċ\":49408,\"inki\":49409,\"ĠÃ©p\":49410,\"Ġdri\":49411,\"ĠALT\":49412,\">>>>>>>>\":49413,\"onta\":49414,\"[L\":49415,\"Ġinteres\":49416,\"verting\":49417,\"Ġdiagnostics\":49418,\"pdev\":49419,\"è©\":49420,\"ĠIntegrated\":49421,\").'\":49422,\"_gc\":49423,\"$text\":49424,\".games\":49425,\"ĠTerra\":49426,\"'Re\":49427,\".transfer\":49428,\"_FIFO\":49429,\"getModel\":49430,\"Ġbland\":49431,\"ĠColeman\":49432,\"Ġprimes\":49433,\"ĠæĪ\":49434,\"Ġcrosses\":49435,\"nk\":49436,\"GING\":49437,\"Ġ'^\":49438,\"ĠBlob\":49439,\"Ġintercourse\":49440,\"ĠBlvd\":49441,\"Ġweighs\":49442,\"_regular\":49443,\"ĠPerth\":49444,\"Ġseparating\":49445,\"Ġbilled\":49446,\".tabControl\":49447,\"Ġpuppet\":49448,\"Ġutilization\":49449,\"Ġâĸł\":49450,\"Ġsucces\":49451,\"Ġlamps\":49452,\"_proj\":49453,\"Eric\":49454,\"Ġrenovation\":49455,\"ĠFamilies\":49456,\"ĠBits\":49457,\"partials\":49458,\"-Men\":49459,\"solution\":49460,\"Ġdwarf\":49461,\".INTEGER\":49462,\"ĠLOCK\":49463,\".ct\":49464,\"Ġexcerpt\":49465,\"ĠPix\":49466,\"ĠFirstName\":49467,\"ANTED\":49468,\"ĠAdmir\":49469,\"-help\":49470,\"Prior\":49471,\"ĠAlign\":49472,\".INSTANCE\":49473,\"LineEdit\":49474,\"('/:\":49475,\"Ġinet\":49476,\"odus\":49477,\".pkl\":49478,\"ĠKY\":49479,\"upert\":49480,\"Ġnerves\":49481,\"_gradient\":49482,\"}','\":49483,\"_unref\":49484,\"Ġsaturated\":49485,\"ĠConnected\":49486,\"ĠFN\":49487,\"EXIT\":49488,\"Ġteleport\":49489,\"Ġavait\":49490,\"PageRoute\":49491,\"Ġdivorced\":49492,\"(lang\":49493,\"fst\":49494,\"ĠTyr\":49495,\"Ġmessenger\":49496,\"ifstream\":49497,\"XS\":49498,\"ĠBanking\":49499,\"Ġinfectious\":49500,\"ĠMons\":49501,\"_LOOP\":49502,\"ĠzurÃ¼ck\":49503,\"Ġobtener\":49504,\"/repos\":49505,\"Vel\":49506,\"acro\":49507,\"ĠuserRepository\":49508,\"styleType\":49509,\"ĠSRC\":49510,\"VMLINUX\":49511,\"recursive\":49512,\"/bar\":49513,\"_chip\":49514,\"ominated\":49515,\"ĠNit\":49516,\"âĢĶto\":49517,\"ĠBuddh\":49518,\"Ð¾Ð¼ÐµÑĢ\":49519,\"ĠMAG\":49520,\"ĠCHE\":49521,\"_den\":49522,\".raises\":49523,\"_degree\":49524,\"Ġpumpkin\":49525,\"_templates\":49526,\"_MEDIA\":49527,\"ĠTimeline\":49528,\"Ġbots\":49529,\"ObjectType\":49530,\"Ġbuys\":49531,\".posts\":49532,\"CAL\":49533,\"waiting\":49534,\"ĠDaniels\":49535,\"Ġdabei\":49536,\"ĠSigma\":49537,\"ilor\":49538,\"igel\":49539,\",W\":49540,\"ADS\":49541,\"(panel\":49542,\"ì²´\":49543,\"itating\":49544,\".palette\":49545,\"Ġmosquito\":49546,\"Ġtego\":49547,\"(parseInt\":49548,\"ĠdespuÃ©s\":49549,\"promise\":49550,\"Ġwij\":49551,\"typescript\":49552,\"ĠTv\":49553,\"_IDENTIFIER\":49554,\").ĊĊĊ\":49555,\"_flat\":49556,\"itsu\":49557,\"USR\":49558,\"experience\":49559,\"-fit\":49560,\"phinx\":49561,\"_thresh\":49562,\"Ġideally\":49563,\"ĠFreeman\":49564,\",DB\":49565,\"_rw\":49566,\"çŃī\":49567,\"Ub\":49568,\"_statistics\":49569,\"=\\\"\\\"><\":49570,\"Ġchore\":49571,\"Ġyork\":49572,\"installed\":49573,\"Additionally\":49574,\"Ġpstmt\":49575,\"ylko\":49576,\"::Ċ\":49577,\"Forest\":49578,\"Ġheadset\":49579,\"Ġgallon\":49580,\"ÑĢÐµÐ¼\":49581,\"Ġwithdrawn\":49582,\"ĠCandidate\":49583,\"Ġmelting\":49584,\"Ġfreezer\":49585,\"Ġhl\":49586,\"_HELP\":49587,\"mime\":49588,\"(/*\":49589,\"Ġthirst\":49590,\"$return\":49591,\"memberof\":49592,\"ÐµÐ±\":49593,\"ĠHttpServletRequest\":49594,\"(ob\":49595,\"_Result\":49596,\"Ġasserted\":49597,\"Ġfulfilling\":49598,\"Ġstretches\":49599,\"parated\":49600,\"-funded\":49601,\"ĠåĽ\":49602,\"ingles\":49603,\"_ca\":49604,\".condition\":49605,\"ĠDisplays\":49606,\"Ġorang\":49607,\"ĠCRE\":49608,\"ĠglBind\":49609,\"ĠSelector\":49610,\"/type\":49611,\"ĠAlexa\":49612,\"chedules\":49613,\"ĠPeninsula\":49614,\"Ġparity\":49615,\"ĉdest\":49616,\"ĠDoors\":49617,\"čĊĉčĊ\":49618,\"_dimension\":49619,\"Ġaload\":49620,\".StoredProcedure\":49621,\"(paren\":49622,\"ĠBurke\":49623,\"')]Ċ\":49624,\"-engine\":49625,\"Ġquir\":49626,\"ĠHybrid\":49627,\"ĠDoe\":49628,\"Ġoutlines\":49629,\"ĠTrends\":49630,\"_NV\":49631,\"periments\":49632,\"ĠHin\":49633,\"?',\":49634,\"ĉText\":49635,\"FUL\":49636,\"Ġsmells\":49637,\"Ġslick\":49638,\"Ġmiserable\":49639,\"ĠArrayAdapter\":49640,\"ĠparamString\":49641,\"Hom\":49642,\"_literals\":49643,\"usuarios\":49644,\"Ġprompting\":49645,\"_lazy\":49646,\"ĠActivation\":49647,\"_oc\":49648,\"Weak\":49649,\"Ġanecd\":49650,\"ĠUCLA\":49651,\"=re\":49652,\"issement\":49653,\"ĠEscorts\":49654,\"Excellent\":49655,\"ĠPause\":49656,\"Ġrepositories\":49657,\"TOR\":49658,\"ariate\":49659,\"_iso\":49660,\"updates\":49661,\"halb\":49662,\"udiante\":49663,\"ë¡Ŀ\":49664,\"Ġnaive\":49665,\"ĠPeg\":49666,\"ĠLounge\":49667,\"ARGIN\":49668,\"(bin\":49669,\"OnClickListener\":49670,\"ĠFAILED\":49671,\"Ġlite\":49672,\"Ġdzie\":49673,\"ĠLiteral\":49674,\"ivor\":49675,\"fcntl\":49676,\"Ġeats\":49677,\"Ġqed\":49678,\"Unlock\":49679,\"riding\":49680,\"undai\":49681,\"=M\":49682,\"ATTER\":49683,\"ConfigureAwait\":49684,\"icias\":49685,\"ustomed\":49686,\"Ġsuccession\":49687,\"endTime\":49688,\"ĠJupiter\":49689,\"Ġjudging\":49690,\"dration\":49691,\"_docs\":49692,\".mo\":49693,\"Ġeducators\":49694,\"ĠVine\":49695,\"Cond\":49696,\"[out\":49697,\"qb\":49698,\"\\\\Validator\":49699,\"Ġmeanings\":49700,\"Ġpresently\":49701,\"Ġdividing\":49702,\"ottenham\":49703,\"ascular\":49704,\"Ġtrailers\":49705,\"ĠCLOSE\":49706,\"Ð°Ð¼Ð¸\":49707,\"âĢĻai\":49708,\"ĠGain\":49709,\"wor\":49710,\"Ġplanner\":49711,\"Ġdistributing\":49712,\"vat\":49713,\"months\":49714,\"xlabel\":49715,\"HF\":49716,\"Viol\":49717,\".BASELINE\":49718,\"ÐµÑĤÑģÑı\":49719,\"ĠRotate\":49720,\"Ġtxn\":49721,\":bold\":49722,\"Ġbloss\":49723,\"Forgery\":49724,\"(embed\":49725,\"Ġjako\":49726,\"sprintf\":49727,\"their\":49728,\"Ġexhibits\":49729,\"-static\":49730,\"hecy\":49731,\"getActiveSheet\":49732,\".clients\":49733,\"ãģį\":49734,\"_hide\":49735,\"[word\":49736,\"Cb\":49737,\"addItem\":49738,\"axe\":49739,\"_radio\":49740,\"alion\":49741,\"modifier\":49742,\"Ġsaturation\":49743,\"Ġdenom\":49744,\"_pixels\":49745,\"mess\":49746,\"(fl\":49747,\"atif\":49748,\"Ġsecs\":49749,\"Ġprostitution\":49750,\"Ġgrandchildren\":49751,\"Ġparadise\":49752,\"ĠFeld\":49753,\"_BINARY\":49754,\"itous\":49755,\"à¹Ħ\":49756,\"Ġflashing\":49757,\"-sided\":49758,\"Ġcontradiction\":49759,\"/*ĊĊ\":49760,\"ylabel\":49761,\"ĠTet\":49762,\"Ġadmire\":49763,\"reso\":49764,\"Ġletz\":49765,\"ĠSEARCH\":49766,\"slots\":49767,\"ĠRewards\":49768,\"ĠHog\":49769,\"ĠNSData\":49770,\"stash\":49771,\"Fall\":49772,\"ĠAmer\":49773,\"LinearLayout\":49774,\"/photos\":49775,\"Ġfeather\":49776,\"Ġ|čĊ\":49777,\"Downloads\":49778,\".StartsWith\":49779,\"Ġ//#\":49780,\"ineTransform\":49781,\"Ġaffid\":49782,\"Vtbl\":49783,\"ĠRogue\":49784,\"scribed\":49785,\"Ġfauc\":49786,\"ĠMonroe\":49787,\"Ġdeclares\":49788,\"modern\":49789,\"reon\":49790,\"aybe\":49791,\"PASS\":49792,\"fers\":49793,\"_MULTI\":49794,\"ĠMathematics\":49795,\"Ġsudah\":49796,\"_ATTACH\":49797,\"ĠnumberWith\":49798,\"ĠSolomon\":49799,\"jin\":49800,\"ografia\":49801,\"Ã¶l\":49802,\"_design\":49803,\"culated\":49804,\"ĠLuna\":49805,\"iesz\":49806,\"Ġ=>'\":49807,\"Ġrevelations\":49808,\"Along\":49809,\"(ed\":49810,\"ĠFilename\":49811,\"Ġylabel\":49812,\"Secure\":49813,\"Ġbusca\":49814,\"agnosis\":49815,\"_RECE\":49816,\"Ġoverlapping\":49817,\"Extent\":49818,\"Ġanticipation\":49819,\"Checks\":49820,\"ĠALSO\":49821,\"orc\":49822,\"ilingual\":49823,\"itational\":49824,\"Ġadvancement\":49825,\"ouro\":49826,\"ĠPredicate\":49827,\"å¾Ĺ\":49828,\"eria\":49829,\"ĠPierce\":49830,\"orio\":49831,\"Ġmerits\":49832,\"Ġpeanut\":49833,\".Package\":49834,\"ĠConduct\":49835,\"_SENSOR\":49836,\"Ġboiling\":49837,\"Ġintra\":49838,\"ĠIGN\":49839,\"ĠFur\":49840,\".Refresh\":49841,\"ĠReach\":49842,\"_decoder\":49843,\".Exp\":49844,\"ĠÑĤÐ°Ðº\":49845,\"pill\":49846,\",Q\":49847,\"ĠGrill\":49848,\"Ġpopping\":49849,\".Ag\":49850,\"Ġproyecto\":49851,\"Ġmileage\":49852,\"Ġecological\":49853,\"]]);Ċ\":49854,\"ĠÂŃ\":49855,\"subplot\":49856,\"acad\":49857,\"ĠTrying\":49858,\"recipes\":49859,\"$criteria\":49860,\"ĠPersian\":49861,\"-bound\":49862,\"MASK\":49863,\"ĠGesture\":49864,\"Ġkk\":49865,\"ĠPVC\":49866,\"Ġprohibition\":49867,\"Ġcomando\":49868,\"ĠLOOK\":49869,\"Shopping\":49870,\"Ġdistortion\":49871,\"<Boolean\":49872,\".GetLength\":49873,\"umpt\":49874,\"\\\\Product\":49875,\"ellery\":49876,\"Ġfirewall\":49877,\"formatted\":49878,\".redis\":49879,\"Ġesa\":49880,\"ĠRhode\":49881,\"Som\":49882,\".non\":49883,\"Ġ').\":49884,\"ĠgetView\":49885,\"áº¡n\":49886,\"prus\":49887,\"Matthew\":49888,\"Ġsia\":49889,\"ĠFors\":49890,\"GPU\":49891,\"ientras\":49892,\"_INST\":49893,\"Ġolarak\":49894,\"Ġimporting\":49895,\"TCP\":49896,\"/\\\");Ċ\":49897,\"either\":49898,\"Ġfreshly\":49899,\"cascade\":49900,\"(character\":49901,\"ĠJeep\":49902,\"otics\":49903,\"_UTIL\":49904,\".XtraPrinting\":49905,\".firstChild\":49906,\"ĠExcell\":49907,\"Ġdvd\":49908,\"Ġtaller\":49909,\"Ġras\":49910,\"ypass\":49911,\"Ġassigns\":49912,\"Ġgriev\":49913,\"-more\":49914,\"JD\":49915,\"ĠBurns\":49916,\"'>čĊ\":49917,\".Dependency\":49918,\".QueryString\":49919,\".Owner\":49920,\"Ġexpiry\":49921,\"Thu\":49922,\"(Vec\":49923,\"Ġhazardous\":49924,\"Ġrpm\":49925,\"APON\":49926,\"ĠaddTarget\":49927,\"sville\":49928,\"pNet\":49929,\"ĠImg\":49930,\"ĠTIMER\":49931,\".Animation\":49932,\"Ġbek\":49933,\"Ġassort\":49934,\"Ġlebih\":49935,\"ĠbodyParser\":49936,\"Ġvibrating\":49937,\"IDL\":49938,\"Ġbutterknife\":49939,\"inters\":49940,\"Ġpersuade\":49941,\"ĠLGBTQ\":49942,\"èĭ\":49943,\".soft\":49944,\"Ġbeams\":49945,\"_sur\":49946,\".Def\":49947,\"Ġlabs\":49948,\"ĉplt\":49949,\"Ġskins\":49950,\"Ġtransferring\":49951,\"Ġimaginary\":49952,\"_End\":49953,\";background\":49954,\"Ġlaps\":49955,\"_COMMENT\":49956,\"(SDL\":49957,\"onds\":49958,\".Record\":49959,\"ĠImplements\":49960,\"_ticks\":49961,\"()))ĊĊ\":49962,\"Ġarose\":49963,\"]?\":49964,\"ĠMp\":49965,\"ĠICommand\":49966,\"Ġsculpture\":49967,\"Ġcontracted\":49968,\"<HTML\":49969,\"Ġcalend\":49970,\"aty\":49971,\"/Sub\":49972,\"Ġkvinn\":49973,\"_IGNORE\":49974,\"ĠShane\":49975,\"MLS\":49976,\"Ġstimulate\":49977,\"Partition\":49978,\"Ġmun\":49979,\"Ã³m\":49980,\"erala\":49981,\"-account\":49982,\".Binary\":49983,\"cÃ©\":49984,\"Ġseize\":49985,\"connections\":49986,\"ĠĊĠĠĠĠĠĠĠĠĊ\":49987,\"ĠDiagnostic\":49988,\"VISIBLE\":49989,\"ĠRuns\":49990,\"Ġimpressions\":49991,\"suite\":49992,\"oble\":49993,\"~-\":49994,\"akukan\":49995,\"<Person\":49996,\"ĠNos\":49997,\"ĠGui\":49998,\".waitFor\":49999,\"RESET\":50000,\"Ġpostpon\":50001,\"Discover\":50002,\"arrison\":50003,\"shaw\":50004,\"blood\":50005,\"AJOR\":50006,\"æĽ´æĸ°\":50007,\"ĠMuse\":50008,\"æĶ¶\":50009,\"Ġretaining\":50010,\"otte\":50011,\"Ġmosque\":50012,\"ĠSne\":50013,\"Ġstandardized\":50014,\"Ġmainland\":50015,\"_three\":50016,\"ungeons\":50017,\"getDoctrine\":50018,\"Ġwhale\":50019,\"Ġagg\":50020,\"ĠPorsche\":50021,\"nowled\":50022,\"latent\":50023,\"ĠRelation\":50024,\"Ġ//'\":50025,\"Ġshutting\":50026,\"ĠRemix\":50027,\"_cov\":50028,\"Ġsailing\":50029,\"Ġvowed\":50030,\"Ġpots\":50031,\"outu\":50032,\"Ġhairy\":50033,\"casts\":50034,\"Reload\":50035,\"Ġreconnect\":50036,\"tera\":50037,\".childNodes\":50038,\"ĠRack\":50039,\"ĠcurrentIndex\":50040,\"Ġallen\":50041,\"ĠçĶ¨æĪ·\":50042,\"ĠCubs\":50043,\"[X\":50044,\"_SEQ\":50045,\"_REMOVE\":50046,\".getAction\":50047,\"(/^\":50048,\"errar\":50049,\"Ġether\":50050,\"curve\":50051,\"Ġslap\":50052,\"Ġuom\":50053,\"Others\":50054,\"Ġengr\":50055,\"Disposition\":50056,\"Ġstaged\":50057,\"Eye\":50058,\"ĠAux\":50059,\"authenticate\":50060,\"Ġ$?\":50061,\"ĠAndreas\":50062,\"Ġsetw\":50063,\".Art\":50064,\"Ġforecasts\":50065,\"Ġaunt\":50066,\"-middle\":50067,\"Ġmisd\":50068,\"desk\":50069,\"Ġescorte\":50070,\"ĠCasa\":50071,\"ropical\":50072,\"Ġexemple\":50073,\"planet\":50074,\"(UINT\":50075,\"Ġwhip\":50076,\"ĠPCB\":50077,\"clidean\":50078,\"=\\\"\\\\\":50079,\"Ġoxide\":50080,\"Ġsucceeds\":50081,\"derived\":50082,\"ĠEconom\":50083,\"_coordinates\":50084,\"iras\":50085,\"Draft\":50086,\"Ġvisualize\":50087,\"Brian\":50088,\"_ASSUME\":50089,\"ĠObjectId\":50090,\"Ġtrainers\":50091,\"_FORCE\":50092,\"Ġconsoles\":50093,\"-process\":50094,\"licher\":50095,\"ĠSimmons\":50096,\"Taking\":50097,\"ĠClaims\":50098,\"ĠdiffÃ©rent\":50099,\"ActivityResult\":50100,\"Ġsns\":50101,\"éĢīæĭ\":50102,\"ĠCrus\":50103,\"Ġllam\":50104,\"rab\":50105,\"ĠJoan\":50106,\"AAA\":50107,\"ĉfilter\":50108,\"ishops\":50109,\"getting\":50110,\"àµ\":50111,\"Ġquanto\":50112,\"Past\":50113,\"ovich\":50114,\"Ġinjustice\":50115,\"ĠFLOAT\":50116,\"Ġalright\":50117,\"\\\\DB\":50118,\"(GameObject\":50119,\"uish\":50120,\"(bot\":50121,\"Ġgallons\":50122,\"ĠRÃ©\":50123,\"ĠSaid\":50124,\"ĠSTDMETHODCALLTYPE\":50125,\"aising\":50126,\"_processor\":50127,\"ellidos\":50128,\"terdam\":50129,\"ĠBeam\":50130,\"TextArea\":50131,\"Ġretorno\":50132,\".Make\":50133,\"Ġ$(\\\"<\":50134,\"Ġlockdown\":50135,\"Ġremedies\":50136,\"Ġveel\":50137,\"xee\":50138,\"doctype\":50139,\"Fil\":50140,\"ĠExpand\":50141,\"Ġemploys\":50142,\"ĠsessionStorage\":50143,\"Php\":50144,\"Publish\":50145,\"Ġretal\":50146,\"fabs\":50147,\"ynamics\":50148,\"Ġtossed\":50149,\"ĠnumberOfRowsInSection\":50150,\"xpath\":50151,\"\\\\modules\":50152,\"Ġdisastr\":50153,\"ĠMULT\":50154,\".Mesh\":50155,\"-stage\":50156,\"Ġsdf\":50157,\"itung\":50158,\"uges\":50159,\"Ġ?>\\\"></\":50160,\"_indexes\":50161,\"Ġvaluation\":50162,\"Ġlifelong\":50163,\"Ġexpedition\":50164,\"(Yii\":50165,\"Ġpains\":50166,\"ĠPRI\":50167,\"ĠMixed\":50168,\"ĠChanging\":50169,\"Germany\":50170,\"communication\":50171,\".organ\":50172,\"ĠMarathon\":50173,\"getPath\":50174,\"ĠAccuracy\":50175,\"ĠGlobals\":50176,\"')}}</\":50177,\"ĠOWNER\":50178,\"âĢ¦âĢĿ\":50179,\"Ġstabbed\":50180,\"Ġschizophren\":50181,\"ĠFn\":50182,\"ĠCORE\":50183,\"ĠDataRow\":50184,\"ĠLTD\":50185,\"Ġmyths\":50186,\"Ġfamously\":50187,\"|,Ċ\":50188,\"ĠSeoul\":50189,\"Sir\":50190,\"ĠBerk\":50191,\"RegExp\":50192,\".getRow\":50193,\"ĠDecode\":50194,\"RN\":50195,\"Ġmang\":50196,\"Ġemploying\":50197,\"_nombre\":50198,\"<Task\":50199,\"ĠGuys\":50200,\"ĠArtikel\":50201,\"Berry\":50202,\"zure\":50203,\"Ġvaleur\":50204,\"hits\":50205,\"Ġlucrative\":50206,\"Ġinformat\":50207,\"Clinton\":50208,\"Ġtes\":50209,\"ĠCertification\":50210,\"_ws\":50211,\"Ġoffences\":50212,\"ebra\":50213,\"ĠAxios\":50214,\"restart\":50215,\"LN\":50216,\".Encode\":50217,\"mium\":50218,\"ĠFeatured\":50219,\"ÑĪÐ¸Ð±ÐºÐ°\":50220,\"ĠDept\":50221,\";&#\":50222,\"ĠMyers\":50223,\"ĉtransform\":50224,\"Texas\":50225,\"×¨\":50226,\"ĠYorkshire\":50227,\"lname\":50228,\"Bre\":50229,\"ãģĵãģ®\":50230,\"Ġscenery\":50231,\"ĠfÃ¼h\":50232,\"ĉĉĉĉĠĠĠĠĠĠĠ\":50233,\"ĠDoom\":50234,\"ĠADMIN\":50235,\"(es\":50236,\"ĠÐ¼Ð°ÑģÑģÐ¸Ð²\":50237,\"_ascii\":50238,\"/Data\":50239,\"leshooting\":50240,\"Ban\":50241,\"Ġmemoir\":50242,\"ĠÙĨ\":50243,\"ĠAuss\":50244,\")paren\":50245,\"Ġguiding\":50246,\"Ġbaz\":50247,\"Ã¸y\":50248,\"ADM\":50249,\"Ġdma\":50250,\".Queue\":50251,\"ĠSupplies\":50252,\"ĠMcD\":50253,\"ĠAgents\":50254,\"_bb\":50255,\"slash\":50256,\"Ġhashes\":50257,\"Ġcrank\":50258,\"ĠRag\":50259,\"Ġautonomy\":50260,\"ÃŃtulo\":50261,\"Ġrecursion\":50262,\"ĠCrazy\":50263,\"_tracker\":50264,\"ĠMb\":50265,\"_phy\":50266,\"foobar\":50267,\"ĉspeed\":50268,\"Ġcampos\":50269,\"Ġmould\":50270,\"Ġcharities\":50271,\"HEIGHT\":50272,\"Ġeauto\":50273,\"_solution\":50274,\"ĠDG\":50275,\"marvin\":50276,\"Yesterday\":50277,\"ĠBecome\":50278,\"<ll\":50279,\"oris\":50280,\"[next\":50281,\"Ġincumbent\":50282,\"ĠDup\":50283,\"ĉoverride\":50284,\"å®ī\":50285,\"ĉcfg\":50286,\"ĠsÃ¶\":50287,\"Ġdese\":50288,\"-di\":50289,\"Ġontvangst\":50290,\"Ġdecisive\":50291,\"ä»·\":50292,\"_keep\":50293,\"(Database\":50294,\"_/\":50295,\"ĠCLL\":50296,\"-method\":50297,\"ĉPoint\":50298,\"ĠByteBuffer\":50299,\"Ġtraced\":50300,\"addTo\":50301,\"ìĦ¸ìļĶ\":50302,\"anyak\":50303,\"Ġempresas\":50304,\"(repository\":50305,\".createStatement\":50306,\"Ġela\":50307,\"ForgeryToken\":50308,\"Ġisempty\":50309,\"asin\":50310,\"ĠLookup\":50311,\"ÐµÐ½Ð°\":50312,\"Ġviolates\":50313,\"ĠSmarty\":50314,\"Ġzak\":50315,\"($.\":50316,\"SHOW\":50317,\"ĠÐ¢\":50318,\"arus\":50319,\"(TEST\":50320,\"packed\":50321,\"Ġhistoria\":50322,\"Ġcancers\":50323,\"ĠKremlin\":50324,\"Reduce\":50325,\"/how\":50326,\"ĠÄĲ\":50327,\"TITLE\":50328,\".localPosition\":50329,\"liable\":50330,\"Ġç¬¬\":50331,\"Ġfrancais\":50332,\"ĉhash\":50333,\"Ġinicio\":50334,\"ĠCrash\":50335,\"Ġ{.\":50336,\"Ġclocks\":50337,\"ductory\":50338,\"ĠPv\":50339,\"ëĿ¼\":50340,\"Ġdois\":50341,\"\\\\-\":50342,\"Ġjaar\":50343,\"ĠMaya\":50344,\"mozilla\":50345,\"ĉresource\":50346,\"!!Ċ\":50347,\"ayscale\":50348,\"Ġ'-',\":50349,\"åıĸæ¶Ī\":50350,\"Ġstale\":50351,\"Corner\":50352,\"Ã¨le\":50353,\"itives\":50354,\"zas\":50355,\"icorn\":50356,\".Expression\":50357,\"Ã³t\":50358,\"Applications\":50359,\"Restr\":50360,\"_Index\":50361,\"į°ìĿ´íĦ°\":50362,\"ĠJFrame\":50363,\"six\":50364,\"_IMG\":50365,\"èĹı\":50366,\"ĠNumeric\":50367,\"Ġwirk\":50368,\"_SUM\":50369,\"<DateTime\":50370,\"Ġpylint\":50371,\"Ġlament\":50372,\"ĠPose\":50373,\"_entropy\":50374,\"Ġencouragement\":50375,\"Ġlain\":50376,\"åĪĽå»º\":50377,\"-fr\":50378,\"Ġcorrections\":50379,\"phas\":50380,\"uur\":50381,\"ategorias\":50382,\"Ġcatalyst\":50383,\".alt\":50384,\"ĠFernando\":50385,\".DataGridViewCellStyle\":50386,\"Ġherbal\":50387,\"ĠRG\":50388,\"STEP\":50389,\"IFn\":50390,\"ĠTong\":50391,\"Å¾e\":50392,\"ĠINCLUDE\":50393,\"Ġhc\":50394,\"tracker\":50395,\"ĉStringBuilder\":50396,\"ĠDestiny\":50397,\"Ġsophomore\":50398,\"ĠDed\":50399,\"ĠPARA\":50400,\"izontally\":50401,\"-change\":50402,\"endid\":50403,\"éĢīæĭ©\":50404,\"ijke\":50405,\"ĠAthletic\":50406,\"bai\":50407,\"getPosition\":50408,\".namespace\":50409,\"è®¢åįķ\":50410,\"RACT\":50411,\"Ġrelieved\":50412,\"Ġpouring\":50413,\"Ġiy\":50414,\"rove\":50415,\"Ġadolescents\":50416,\"Ġawe\":50417,\"reas\":50418,\"AntiForgeryToken\":50419,\"rowning\":50420,\"ĠUncle\":50421,\".Conn\":50422,\"ĠMediaType\":50423,\".oracle\":50424,\"INTERNAL\":50425,\",and\":50426,\"Ġfaux\":50427,\"ipmap\":50428,\"$model\":50429,\"ĠGeoff\":50430,\"_AXIS\":50431,\"(())Ċ\":50432,\"Ġneglected\":50433,\"Ġquarterly\":50434,\"Ġdiesen\":50435,\"Ġdragons\":50436,\"Night\":50437,\"/Web\":50438,\"<Vec\":50439,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":50440,\"ĠObs\":50441,\"bdd\":50442,\"Ġheir\":50443,\"-angular\":50444,\"MenuStrip\":50445,\"Ġ'\\\">'\":50446,\"kinson\":50447,\"ĠÐºÐ¾Ð»\":50448,\"ognitive\":50449,\"_li\":50450,\"Ġimminent\":50451,\"Ġaffinity\":50452,\".signal\":50453,\"Ġnotch\":50454,\"ĠSteelers\":50455,\"maxlength\":50456,\"KK\":50457,\"ĠEugene\":50458,\"_PWM\":50459,\"roi\":50460,\"ĠâĹı\":50461,\"ĠHamburg\":50462,\".Must\":50463,\"Ġaxe\":50464,\"enef\":50465,\"Ġambitions\":50466,\"ĠSpecies\":50467,\"ĠStress\":50468,\"Ġawhile\":50469,\"ĠÐ±ÑĥÐ´\":50470,\"Ġwithstand\":50471,\"ĠDecoder\":50472,\"_inventory\":50473,\"Ġ{ččĊ\":50474,\"Ġtgt\":50475,\"Ġrailroad\":50476,\"WASHINGTON\":50477,\"Ġnegotiated\":50478,\"NST\":50479,\"-phone\":50480,\",U\":50481,\"Ġexercising\":50482,\"á»¥\":50483,\"_PIXEL\":50484,\"avors\":50485,\"iterated\":50486,\"Ġvampire\":50487,\"adal\":50488,\"Ingrese\":50489,\"Ġung\":50490,\"jective\":50491,\".cells\":50492,\"Ġnano\":50493,\"Ġmarkdown\":50494,\"_RULE\":50495,\"(events\":50496,\"Ġluggage\":50497,\"MESSAGE\":50498,\"igkeit\":50499,\"$count\":50500,\"AttributeName\":50501,\"IGINAL\":50502,\"_Ent\":50503,\"ĠBF\":50504,\"ĠCOMMENT\":50505,\"_ini\":50506,\"ĠEuropeans\":50507,\"ĠBelle\":50508,\"åĳ½\":50509,\")['\":50510,\"åºĶ\":50511,\"ĠUseful\":50512,\".reference\":50513,\"()\\\",\":50514,\"_grade\":50515,\"ĠKaw\":50516,\"Ġsentencing\":50517,\"Ġsocialism\":50518,\"monster\":50519,\"_LAYER\":50520,\"Ġdeepest\":50521,\"wk\":50522,\"ĠNoise\":50523,\"###ĊĊ\":50524,\"ĠprÃ©c\":50525,\"otle\":50526,\"ÑĤÐµ\":50527,\"auf\":50528,\"ibal\":50529,\"Ġconquer\":50530,\">Email\":50531,\"Ġambulance\":50532,\"OAD\":50533,\"Ġ(\\\"%\":50534,\"ĠFI\":50535,\".fixture\":50536,\"Ġterse\":50537,\"ĠĠĠĠĉĉĉĉ\":50538,\"Ġsanctuary\":50539,\"ugi\":50540,\"ĠComparator\":50541,\"Definitions\":50542,\"Ġasthma\":50543,\"Ġlact\":50544,\"Ġhardwood\":50545,\".clock\":50546,\"Ġattracting\":50547,\"ĠMour\":50548,\"(distance\":50549,\"icits\":50550,\"Ġbonne\":50551,\"ĠACCESS\":50552,\".DeserializeObject\":50553,\"ĠTyped\":50554,\"Ġjeu\":50555,\"ĠappId\":50556,\"ĠClara\":50557,\"ĠHF\":50558,\"ĠReich\":50559,\"ipples\":50560,\"//--------------------------------------------------------------------------------\":50561,\"_delivery\":50562,\"erialization\":50563,\"Ġplaintiffs\":50564,\"Scient\":50565,\"shopping\":50566,\"ĠDummy\":50567,\"ĠWald\":50568,\"GroupName\":50569,\"Ġinscription\":50570,\"elog\":50571,\"::::::::\":50572,\"_ld\":50573,\"BackPressed\":50574,\".Raw\":50575,\"ĠOnTrigger\":50576,\"Ġmuseums\":50577,\"ĠBeen\":50578,\"ĠAdventures\":50579,\"Ġslate\":50580,\"Ġlett\":50581,\"Ġsund\":50582,\"ĠGin\":50583,\"ĠMechanical\":50584,\".ship\":50585,\"AppComponent\":50586,\"Ġdestined\":50587,\"Ġdwelling\":50588,\"Profiler\":50589,\"Prepare\":50590,\"zeich\":50591,\"Ġsilicon\":50592,\"(has\":50593,\"Ġ#%\":50594,\"VIDEO\":50595,\"Ġcollaborate\":50596,\"Lin\":50597,\"Ġscopes\":50598,\"(className\":50599,\"(sd\":50600,\"andin\":50601,\".ham\":50602,\"ServiceImpl\":50603,\"-described\":50604,\"Ġirony\":50605,\"stial\":50606,\"ĠHuawei\":50607,\"(repo\":50608,\"Ġunexpectedly\":50609,\"ĠKai\":50610,\".install\":50611,\"\\\\xf\":50612,\"Ġexhibited\":50613,\"_TCP\":50614,\"ĠOx\":50615,\"_CHO\":50616,\"Ġprostituerte\":50617,\"ĠvÃ¤\":50618,\"Ġsito\":50619,\"Ġconstituents\":50620,\"ĠContinued\":50621,\"ĠSAVE\":50622,\"rss\":50623,\"/message\":50624,\"ubes\":50625,\"Ġmisdemean\":50626,\"Ġtaxation\":50627,\"Ġstoryline\":50628,\"hair\":50629,\"ĠFinds\":50630,\"SIG\":50631,\"verification\":50632,\"~=\":50633,\".hp\":50634,\"Iterable\":50635,\"ÑĭÐµ\":50636,\"atori\":50637,\"Ġctr\":50638,\"Rx\":50639,\"_);ĊĊ\":50640,\"dag\":50641,\".pin\":50642,\"Ġpseud\":50643,\"Ġinvo\":50644,\"ÑģÑĤÑĢ\":50645,\"_pix\":50646,\"ä¸ºç©º\":50647,\"Ġsworn\":50648,\"âĢĶor\":50649,\"_registry\":50650,\"Ġdisasters\":50651,\"ĠROI\":50652,\"ĠâĢķ\":50653,\"aktu\":50654,\"forest\":50655,\"beiten\":50656,\"âĢĶI\":50657,\"ueva\":50658,\"egt\":50659,\"Ġspikes\":50660,\"URES\":50661,\"ĠRecommended\":50662,\"Ġexploited\":50663,\"ĠFrederick\":50664,\"_COMPLETE\":50665,\"ĠDrugs\":50666,\"!!!!!!!!\":50667,\"ĠRiv\":50668,\"STOP\":50669,\"ROOM\":50670,\"ĠPASSWORD\":50671,\"Cookies\":50672,\".El\":50673,\"á»Ń\":50674,\"ĠBert\":50675,\"Ġhashed\":50676,\"icester\":50677,\"Ġdecorator\":50678,\"ĠqueryString\":50679,\":;Ċ\":50680,\"Ġ\\\"[\\\"\":50681,\"otope\":50682,\"-Americ\":50683,\"ĠMatthews\":50684,\"URAL\":50685,\"âĢľ,\":50686,\"Summer\":50687,\"fos\":50688,\"_CONTAINER\":50689,\"_ACK\":50690,\"Ġfiltr\":50691,\"_disp\":50692,\"_Re\":50693,\"Ġfacile\":50694,\"Ð°ÑĪ\":50695,\"ĠìķĬ\":50696,\"Ġeben\":50697,\"Ġsprink\":50698,\"ĠQuint\":50699,\">V\":50700,\"Ġhistorians\":50701,\"ourmet\":50702,\"ĠMonitoring\":50703,\"ledger\":50704,\"cott\":50705,\"Ġware\":50706,\"GGLE\":50707,\"cars\":50708,\"ĠMEDIATEK\":50709,\"Ġvolupt\":50710,\"_View\":50711,\"HEL\":50712,\"(copy\":50713,\"(stats\":50714,\"Ġchromosome\":50715,\"ĠCurtis\":50716,\"-conf\":50717,\"(asset\":50718,\"Ġhvor\":50719,\"FileSystem\":50720,\"<>();čĊ\":50721,\"ocoder\":50722,\"ĠCannon\":50723,\")x\":50724,\"ĠSmooth\":50725,\"ĠSAS\":50726,\"_ce\":50727,\"ĉprev\":50728,\"_movie\":50729,\"Ec\":50730,\"_wall\":50731,\"<Button\":50732,\"ĠFAST\":50733,\"ĠonView\":50734,\"ulan\":50735,\"ĠSUPPORT\":50736,\"Ġgeschichten\":50737,\"ĠSons\":50738,\"Imm\":50739,\"$IFn\":50740,\"Ġfairness\":50741,\"Ġdpi\":50742,\"atsu\":50743,\"Josh\":50744,\"Equality\":50745,\"Ġ}()Ċ\":50746,\"_less\":50747,\"ĠRatio\":50748,\"ĠCats\":50749,\"ĠStern\":50750,\"Monster\":50751,\"Ġmercury\":50752,\"Ã¼hr\":50753,\"Ġplusieurs\":50754,\".deserialize\":50755,\"scopy\":50756,\".False\":50757,\")animated\":50758,\"ĠExperts\":50759,\"Ġ\\\"\\\"){Ċ\":50760,\".When\":50761,\"seealso\":50762,\".unpack\":50763,\"LEM\":50764,\".selectAll\":50765,\"Ġperceptions\":50766,\"uding\":50767,\"irling\":50768,\"ĠPrinting\":50769,\"grams\":50770,\"ĠFileStream\":50771,\"erville\":50772,\"ilog\":50773,\"icmp\":50774,\"_Count\":50775,\"Ġlivestock\":50776,\"-ca\":50777,\"documents\":50778,\"Ġpoles\":50779,\"ĉwant\":50780,\"Ġfluores\":50781,\"Ġstandpoint\":50782,\"ĠHuge\":50783,\"Ġradians\":50784,\"ĠUIBar\":50785,\"EDIUM\":50786,\"ĠHistoric\":50787,\"_holder\":50788,\"ĠMarines\":50789,\"ĠtÃ¤\":50790,\".Light\":50791,\"quirer\":50792,\"asonry\":50793,\"divider\":50794,\"ĠFlutter\":50795,\"_fb\":50796,\"restricted\":50797,\"ĠEverybody\":50798,\"NÃ£o\":50799,\"Ġknot\":50800,\"ĠTwitch\":50801,\"Ġhallway\":50802,\"(Collider\":50803,\"InputElement\":50804,\"?)Ċ\":50805,\"/off\":50806,\"/)\":50807,\"played\":50808,\"[OF\":50809,\"Ġbatting\":50810,\"_dl\":50811,\"Ġcomedian\":50812,\"ĠÃ©v\":50813,\"ĠDEM\":50814,\"ĠEden\":50815,\":white\":50816,\"'',\":50817,\"Construction\":50818,\"acerb\":50819,\"Ġtasked\":50820,\".manage\":50821,\"Relationship\":50822,\"Ġphon\":50823,\"nz\":50824,\"_BGR\":50825,\"ValidateAntiForgeryToken\":50826,\"_air\":50827,\"âĢľWhen\":50828,\"Ġglfw\":50829,\"ĠConversation\":50830,\"_TOTAL\":50831,\",Z\":50832,\"Ġgraz\":50833,\"Ġiterable\":50834,\"ĠPASS\":50835,\"Ġadvertise\":50836,\"ĠmÃ¶glich\":50837,\"/train\":50838,\"ĠVolkswagen\":50839,\"Ġcreepy\":50840,\"Ġ\\\")čĊ\":50841,\"QUENCE\":50842,\"Ġaltar\":50843,\"Ġedits\":50844,\"compiled\":50845,\"awning\":50846,\"ĠDungeon\":50847,\"Ġosg\":50848,\"NavigationBar\":50849,\"Ġtrending\":50850,\"ĠEco\":50851,\"oggles\":50852,\"cdot\":50853,\"|-\":50854,\"Sie\":50855,\"ecret\":50856,\"ĠNegative\":50857,\"ĠLing\":50858,\"ĠDIM\":50859,\"ĠCWE\":50860,\"ĠCarrier\":50861,\"Ġcartridge\":50862,\"_usb\":50863,\"=os\":50864,\"ĠJackie\":50865,\"Ġotras\":50866,\"Ġcommodities\":50867,\"ĠPresentation\":50868,\")&&(\":50869,\"ĠMartha\":50870,\"ĠCatholics\":50871,\"ĠMond\":50872,\"Ð¾Ð±Ñĭ\":50873,\"_absolute\":50874,\"Ġashamed\":50875,\"ponsors\":50876,\"tal\":50877,\"Ġsadness\":50878,\"ĠpuÃ²\":50879,\"Fade\":50880,\"-preview\":50881,\"ĠRequests\":50882,\"ĠCalvin\":50883,\"horn\":50884,\"ReuseIdentifier\":50885,\"(provider\":50886,\"/apps\":50887,\"imeo\":50888,\"ĉClass\":50889,\"Samsung\":50890,\"ĠWORLD\":50891,\"Ġcinnamon\":50892,\"dotenv\":50893,\"ĠIUser\":50894,\"ĠDEV\":50895,\"_Char\":50896,\".ibatis\":50897,\"eti\":50898,\"/me\":50899,\"sst\":50900,\".sym\":50901,\"ĠRugby\":50902,\"-master\":50903,\"ajar\":50904,\"ĠYEAR\":50905,\"Ġodp\":50906,\"ĠRoles\":50907,\"Ġbipartisan\":50908,\"aille\":50909,\"Ġblocker\":50910,\"Ġgreens\":50911,\".SECONDS\":50912,\"Ġbelievers\":50913,\"ĠLikes\":50914,\"FLOAT\":50915,\"Ġmak\":50916,\"Ġgcc\":50917,\"âķĲâķĲ\":50918,\"(\\\"~/\":50919,\"SCRIPTOR\":50920,\"Ġtonnes\":50921,\"ĠSang\":50922,\"Ġtranspose\":50923,\"ennai\":50924,\"Pred\":50925,\"Ġsollte\":50926,\".githubusercontent\":50927,\"(print\":50928,\"ĠHole\":50929,\"çľĭ\":50930,\"adget\":50931,\"Ġprompts\":50932,\"Ġgenetically\":50933,\"ĠHod\":50934,\"Ġvertically\":50935,\"_controls\":50936,\"ÑģÑĤÐ°Ð½\":50937,\"\\\"){čĊ\":50938,\"$title\":50939,\"Ġ}),ĊĊ\":50940,\"Ġstatewide\":50941,\"ĠCorrespond\":50942,\"ĠAttr\":50943,\"itant\":50944,\"ElementType\":50945,\"Ġoutward\":50946,\"Ġfamilia\":50947,\"(article\":50948,\"Ġblat\":50949,\"ÂłĊ\":50950,\"ĠglGet\":50951,\"ĠReceiver\":50952,\"Ġ%-\":50953,\"adam\":50954,\"Winner\":50955,\"Ġtailor\":50956,\"_pwd\":50957,\"erten\":50958,\"Stan\":50959,\"ĉall\":50960,\"alive\":50961,\"strtotime\":50962,\"ï¿½s\":50963,\"sessions\":50964,\"$conn\":50965,\"assist\":50966,\"Ġchatting\":50967,\"ĠMant\":50968,\"Ġ%@\":50969,\"Ġ\\\"\\\");ĊĊ\":50970,\"Ġdgv\":50971,\"Ġíķ¨\":50972,\".repeat\":50973,\"_Message\":50974,\"Ġadvisers\":50975,\"/path\":50976,\"Ġkes\":50977,\")}</\":50978,\"Misc\":50979,\"Ġbson\":50980,\"Ġtrimmed\":50981,\"ĠAck\":50982,\"VertexAttrib\":50983,\"ç´¢\":50984,\"uates\":50985,\".mysql\":50986,\"Ġdestin\":50987,\"Ġprobl\":50988,\"(Constant\":50989,\"asses\":50990,\"-images\":50991,\"_AREA\":50992,\"__*/\":50993,\"[](\":50994,\"ĠsignIn\":50995,\"Äĳ\":50996,\"xr\":50997,\"ahir\":50998,\".firestore\":50999,\"Ġsequential\":51000,\"ĠIdea\":51001,\"-basic\":51002,\"_pag\":51003,\"Ġinstagram\":51004,\"otron\":51005,\"_alignment\":51006,\"\\\\\\\\\\\\\\\\\":51007,\".Factory\":51008,\".rule\":51009,\".chdir\":51010,\"Ġlibro\":51011,\"(gameObject\":51012,\".ToolStripButton\":51013,\"Ġdiscovers\":51014,\".Args\":51015,\"dob\":51016,\"Ġvn\":51017,\"âĨĴ\":51018,\"ĠdÃ¼\":51019,\"ĠXM\":51020,\"Ġalumni\":51021,\"Ġhone\":51022,\"Ġsecurely\":51023,\"_dropdown\":51024,\"Disclaimer\":51025,\"Ġdzi\":51026,\"(timestamp\":51027,\"')]\":51028,\"Ġcultivation\":51029,\"...ĊĊĊ\":51030,\"ĠTreaty\":51031,\"ĠDiss\":51032,\"Ġconflicting\":51033,\".getSelection\":51034,\"Ġplayable\":51035,\"ĠSilk\":51036,\"ĠEquality\":51037,\"Ġmoy\":51038,\"Ġflatt\":51039,\"Ġmotives\":51040,\"Perfect\":51041,\".exist\":51042,\"Ġtweak\":51043,\"Ġomit\":51044,\"ĠTwilight\":51045,\"Ġkissing\":51046,\"Ġchristian\":51047,\"(SE\":51048,\"_define\":51049,\"ĠPeng\":51050,\"Sorted\":51051,\"'in\":51052,\"Logs\":51053,\"á»ĩn\":51054,\"Ġnylon\":51055,\"Dump\":51056,\"Imagine\":51057,\"rename\":51058,\"Ġbeforehand\":51059,\"pygame\":51060,\"Ġbpy\":51061,\"ĠDj\":51062,\"Ġtitulo\":51063,\"Ġnltk\":51064,\"ĠSchmidt\":51065,\"ĠCav\":51066,\"(one\":51067,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":51068,\".getModel\":51069,\"ĠPt\":51070,\"atoi\":51071,\".locals\":51072,\"bursement\":51073,\"Province\":51074,\"ĠApproved\":51075,\"()<<\":51076,\"Ã³ria\":51077,\"usch\":51078,\"ĠJenny\":51079,\"arrants\":51080,\"ĠLibert\":51081,\"Lord\":51082,\"ĠRemoved\":51083,\"_codec\":51084,\".bundle\":51085,\"ĠGonzalez\":51086,\"opers\":51087,\"Ŀå§ĭåĮĸ\":51088,\"etting\":51089,\"Ġgoddess\":51090,\"ripe\":51091,\"Ġmuscular\":51092,\"ĉĉĉĉĉĉĉĉĠ\":51093,\"ĠHugo\":51094,\"Ġmejores\":51095,\"loid\":51096,\"riteln\":51097,\"gis\":51098,\"addon\":51099,\"Ġ((((\":51100,\"appointment\":51101,\"reserved\":51102,\"ĉfriend\":51103,\"_avatar\":51104,\"BOOLE\":51105,\"ahi\":51106,\"-END\":51107,\"Ġiff\":51108,\"Ã³b\":51109,\"ĠBruno\":51110,\"rowsable\":51111,\"ĠPoison\":51112,\"(flags\":51113,\"urtles\":51114,\"ĠAnime\":51115,\"Ġmigrant\":51116,\"ĉstrcat\":51117,\"(reply\":51118,\"ĠRefuge\":51119,\"ĠBW\":51120,\"eful\":51121,\"$value\":51122,\"fed\":51123,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":51124,\"èµĦ\":51125,\"(cm\":51126,\"Ġvulnerabilities\":51127,\"Ġ[('\":51128,\"Ġunbelievable\":51129,\"striction\":51130,\"entieth\":51131,\"Ġpraying\":51132,\"Claims\":51133,\"Ġkaufen\":51134,\"nÃ©\":51135,\"Ġpoisoning\":51136,\"collections\":51137,\"ĠinitState\":51138,\"ĠSeverity\":51139,\"Ġcontention\":51140,\"ĠĊĉĊ\":51141,\".controllers\":51142,\"structured\":51143,\"ictim\":51144,\"ĠOber\":51145,\"Ġ/*#__\":51146,\"_OT\":51147,\"ĠAmericas\":51148,\"ĠAda\":51149,\"Produto\":51150,\".multi\":51151,\"Ġgrape\":51152,\"beg\":51153,\"æŁ¥è¯¢\":51154,\"Ġquartz\":51155,\"ĠRomance\":51156,\"ĠMidwest\":51157,\"Ġhoused\":51158,\"Ġfurnish\":51159,\"icont\":51160,\".unshift\":51161,\"otre\":51162,\"ĠÃºn\":51163,\"ipple\":51164,\"Ġsuburb\":51165,\"uali\":51166,\"Voice\":51167,\".IsAny\":51168,\",column\":51169,\"ĠProsec\":51170,\"IDA\":51171,\"ĉpost\":51172,\"ptoms\":51173,\"vÃ©\":51174,\"ĠIngredients\":51175,\"Ã¶ff\":51176,\".operator\":51177,\"Ġ<<=\":51178,\"lastic\":51179,\"Ġresemble\":51180,\"Unauthorized\":51181,\"Ġtutto\":51182,\"_SWITCH\":51183,\"_READY\":51184,\"}=\":51185,\"nowledge\":51186,\"Ġappended\":51187,\"ungan\":51188,\"âĢĻen\":51189,\"ĠLoren\":51190,\"publisher\":51191,\"ĠMG\":51192,\"},\\\"\":51193,\"ĠWalsh\":51194,\"Templates\":51195,\"_social\":51196,\"Ġparish\":51197,\"ĠSpl\":51198,\"minated\":51199,\"(FALSE\":51200,\"Ġforefront\":51201,\"modity\":51202,\"Ġbilateral\":51203,\"Ġcompetit\":51204,\"Ġcandles\":51205,\".dp\":51206,\"Ġcollects\":51207,\"telefono\":51208,\"Ġattent\":51209,\"ĠLemon\":51210,\"izada\":51211,\"Ġtherapies\":51212,\"Ġparadox\":51213,\"Ġtas\":51214,\"-submit\":51215,\"eker\":51216,\"INavigationController\":51217,\"Ġmetavar\":51218,\"Ġsewing\":51219,\"ĠZimbabwe\":51220,\"Ġlawful\":51221,\"Ġlore\":51222,\"ĠLoads\":51223,\"ĠÑģÐ¾Ð·Ð´\":51224,\".promise\":51225,\"ĠFaces\":51226,\".Platform\":51227,\".getLocation\":51228,\"Ġtroubling\":51229,\"ĠvÃŃdeo\":51230,\"ĠFeaturing\":51231,\"äº§\":51232,\"qed\":51233,\"ĠonBind\":51234,\"Ġtoddler\":51235,\"Clo\":51236,\"Division\":51237,\"-gallery\":51238,\"ĠGeld\":51239,\"specific\":51240,\"FieldName\":51241,\"_excel\":51242,\"\\\\htdocs\":51243,\"ĠDV\":51244,\"Ġ&:\":51245,\"Ġtwig\":51246,\"ĠConcern\":51247,\"Ġshotgun\":51248,\"Ġnickel\":51249,\"ĠLuxury\":51250,\"_KEYS\":51251,\".npy\":51252,\"Å¯\":51253,\"Ġforehead\":51254,\"Î²\":51255,\"Ġendangered\":51256,\"/the\":51257,\"pipeline\":51258,\"Å±\":51259,\"neo\":51260,\"Explore\":51261,\"SpecWarn\":51262,\"Ġinterchange\":51263,\"(pi\":51264,\"birthday\":51265,\"DataRow\":51266,\"ĠSPR\":51267,\"Ġoste\":51268,\"Ġ\\\"~\":51269,\"atisfaction\":51270,\"NH\":51271,\"ordo\":51272,\"-focused\":51273,\"'A\":51274,\"ĸī\":51275,\".best\":51276,\"ĠSpecification\":51277,\"/>.ĊĊ\":51278,\"ogenesis\":51279,\"ĠOPTIONS\":51280,\"uptools\":51281,\"Ġmilitant\":51282,\"Ġexited\":51283,\"igar\":51284,\"ĠCOMM\":51285,\"ĠDisposable\":51286,\"aycast\":51287,\"Ġrowspan\":51288,\"Ġsynthes\":51289,\"Ġsondern\":51290,\"Ġ<!--<\":51291,\"ĠEnde\":51292,\".variables\":51293,\"Ġconsequently\":51294,\"sdk\":51295,\"Supply\":51296,\"responsive\":51297,\"Opening\":51298,\"phot\":51299,\"Ġ}\\\\\":51300,\"Ġbullshit\":51301,\"Ġbeacon\":51302,\"_sat\":51303,\"Ġsnaps\":51304,\"ĠGHz\":51305,\"LONG\":51306,\"<pair\":51307,\"Ġ[ĊĊ\":51308,\"ĠVerg\":51309,\"ĠEine\":51310,\"/posts\":51311,\"Ġarab\":51312,\"Ġsuma\":51313,\"ãĥ³ãĥĪ\":51314,\"Ġscarc\":51315,\"Ġoleh\":51316,\"Ġ???\":51317,\"ĠOffers\":51318,\"xed\":51319,\"ĠfullWidth\":51320,\"-actions\":51321,\"Outer\":51322,\"ĠExpo\":51323,\"Ã©rer\":51324,\".He\":51325,\"DH\":51326,\"Ġhil\":51327,\"ĠMillenn\":51328,\"ÐµÐ½ÑĮ\":51329,\"Ice\":51330,\"_gray\":51331,\"ĠÐ¿Ð¾Ð»ÑĥÑĩ\":51332,\"ĠPunk\":51333,\"Ġtimeval\":51334,\"Ġisa\":51335,\"ĠCHtml\":51336,\".DataPropertyName\":51337,\"Ġdiy\":51338,\"tour\":51339,\"ĠjTextField\":51340,\"Ġjelly\":51341,\"Ġakka\":51342,\"-era\":51343,\"Deprecated\":51344,\"_IMPL\":51345,\"ĠMonths\":51346,\"_ITER\":51347,\"Ġarte\":51348,\"ĠHeading\":51349,\"ĠBoh\":51350,\"Ġprag\":51351,\"Ġdownstream\":51352,\"ĠBOARD\":51353,\"_keywords\":51354,\"ĠMetroFramework\":51355,\")-(\":51356,\"<Event\":51357,\"áº¥t\":51358,\"ĠPrecision\":51359,\"ĠMRI\":51360,\"herence\":51361,\"ixo\":51362,\"))){Ċ\":51363,\"()?>\":51364,\"Ġsaat\":51365,\"ĠWarehouse\":51366,\"_atomic\":51367,\"Ġvoiced\":51368,\"ItemClick\":51369,\"ĠĠĠĠĠĠĉ\":51370,\".ResultSet\":51371,\"/plugin\":51372,\"Ġhalls\":51373,\"=form\":51374,\"ĠWagner\":51375,\"emails\":51376,\"%%Ċ\":51377,\"UNKNOWN\":51378,\"ĠRim\":51379,\"uintptr\":51380,\"ĠLiberals\":51381,\"Ġterritorial\":51382,\"ĠMurder\":51383,\"ĠLaden\":51384,\"Ġpresidente\":51385,\"(cap\":51386,\"Ġ},{Ċ\":51387,\"avourite\":51388,\"findAll\":51389,\"Ġapplaud\":51390,\"Ġë©Ķ\":51391,\"/photo\":51392,\"_syn\":51393,\".walk\":51394,\"Ġsunshine\":51395,\"Ġstubborn\":51396,\"Ġdownside\":51397,\"ĠLTE\":51398,\"-building\":51399,\"QueryBuilder\":51400,\"_disabled\":51401,\"Terr\":51402,\"akra\":51403,\"Refreshing\":51404,\"_probs\":51405,\"Ġfoll\":51406,\">b\":51407,\"Ġcollateral\":51408,\"$error\":51409,\"Ġacompan\":51410,\"_iv\":51411,\"+d\":51412,\"aju\":51413,\"ĠâĿ\":51414,\"surname\":51415,\".article\":51416,\"Ġbicy\":51417,\"\\\":ĊĊ\":51418,\"><?=$\":51419,\"ÐºÐ»ÑİÑĩ\":51420,\"ecome\":51421,\"Finding\":51422,\"(pd\":51423,\"Ġrectangular\":51424,\"esto\":51425,\"ihil\":51426,\"='')Ċ\":51427,\"Ġmansion\":51428,\"_filtered\":51429,\"aned\":51430,\"PRODUCT\":51431,\"LOGY\":51432,\"_ir\":51433,\".Remote\":51434,\"Ġexecutes\":51435,\"otechnology\":51436,\"ĠPROCESS\":51437,\"ĠrowIndex\":51438,\"getX\":51439,\"Mut\":51440,\"insky\":51441,\"(strings\":51442,\"ĠMoz\":51443,\"Floor\":51444,\".Struct\":51445,\"_prediction\":51446,\"Ġcarriage\":51447,\"Ġcollectors\":51448,\"ĠWheels\":51449,\"Ġbundled\":51450,\"axed\":51451,\"kol\":51452,\"_crop\":51453,\"Ġbloom\":51454,\"Besides\":51455,\"Ġoverridden\":51456,\"Ġsubnet\":51457,\"ienia\":51458,\"*>::\":51459,\"ĠPrimitive\":51460,\"Ġæł\":51461,\".Character\":51462,\"è¡¨ç¤º\":51463,\"ĠADHD\":51464,\"ROY\":51465,\"Japanese\":51466,\"OUS\":51467,\":UIControlEvent\":51468,\"ĠPAL\":51469,\"izacion\":51470,\"Ġcherche\":51471,\"orting\":51472,\"Ġorgas\":51473,\".Utc\":51474,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":51475,\"\\\\Domain\":51476,\"ORA\":51477,\"Ġterrace\":51478,\"Ġpris\":51479,\"ĉĉĉĉĉĉĉĉĉĊ\":51480,\"Ġraids\":51481,\"_increment\":51482,\"Ġunjust\":51483,\"$options\":51484,\"onChange\":51485,\"Blood\":51486,\"Film\":51487,\"Ġhanding\":51488,\"Ġmug\":51489,\"SOLE\":51490,\"ãĥķ\":51491,\"iconductor\":51492,\"ĠIslamist\":51493,\"Ġ\\\"\\\");čĊ\":51494,\"-overlay\":51495,\",col\":51496,\"éľ\":51497,\"arrings\":51498,\"_contract\":51499,\"ĉll\":51500,\"pip\":51501,\"_embedding\":51502,\"Ġpermite\":51503,\"Ġmodem\":51504,\"Ġtriggering\":51505,\"(hwnd\":51506,\".\\\")]Ċ\":51507,\"Ġsant\":51508,\"Ġextinction\":51509,\"Ġclashes\":51510,\".Audio\":51511,\"Ġsuo\":51512,\".mult\":51513,\"Ġseasoned\":51514,\".VarChar\":51515,\"powered\":51516,\"\\\"context\":51517,\"Ġmenc\":51518,\"(Graphics\":51519,\"$where\":51520,\"Ġrecuper\":51521,\"ackle\":51522,\"ĠnewData\":51523,\"ĠBreaking\":51524,\"erged\":51525,\"ĠCPPUNIT\":51526,\"ĠMull\":51527,\"Ġkommt\":51528,\"ĠLeeds\":51529,\"','=\":51530,\".nextToken\":51531,\"ĠRig\":51532,\"RETURN\":51533,\"ĉtimer\":51534,\"}_{\":51535,\"ĠMarina\":51536,\"Ġslogan\":51537,\"IZED\":51538,\"OpenGL\":51539,\"_Page\":51540,\"ativas\":51541,\"Ġhazards\":51542,\"'value\":51543,\"Ġcorpse\":51544,\"ĠFlowers\":51545,\"_online\":51546,\"dal\":51547,\"ĠCollision\":51548,\"Ãłng\":51549,\"Ġferry\":51550,\"Ġpoke\":51551,\"ĠTourism\":51552,\"inerary\":51553,\"/Set\":51554,\".Employee\":51555,\">@\":51556,\",val\":51557,\"ĠMilf\":51558,\"avez\":51559,\"Retry\":51560,\".\\\"/\":51561,\"Ġrounding\":51562,\"-placement\":51563,\"Ġcerv\":51564,\"Mex\":51565,\"ĠMsgBox\":51566,\"_sink\":51567,\"mania\":51568,\"_credit\":51569,\"Guardar\":51570,\"Ġvanity\":51571,\"Ġimmutable\":51572,\"Ġcontaminated\":51573,\"ÐºÐ°Ð·\":51574,\"ä¸²\":51575,\"acha\":51576,\"Ġhath\":51577,\"Ġenumeration\":51578,\".getBy\":51579,\"áº¿t\":51580,\"ĠDao\":51581,\"obierno\":51582,\"ĠGut\":51583,\"_PIPE\":51584,\".adv\":51585,\"ĠGutenberg\":51586,\"adh\":51587,\"ë¬¸\":51588,\"fusc\":51589,\".VK\":51590,\"pta\":51591,\"ĠEMP\":51592,\".FirstName\":51593,\"Ġrealizes\":51594,\".cg\":51595,\"Ġunite\":51596,\"PLIT\":51597,\"ĠAbdul\":51598,\"ĠMED\":51599,\"RAINT\":51600,\"Ġquesta\":51601,\"stdin\":51602,\"Ġcalorie\":51603,\"ĉglBind\":51604,\"Ġarma\":51605,\"ylland\":51606,\"OMP\":51607,\"-q\":51608,\"ĠKhal\":51609,\"salary\":51610,\"ĉAND\":51611,\"sgi\":51612,\"_than\":51613,\"-built\":51614,\"Ġ+/-\":51615,\"Ġnargs\":51616,\"_launch\":51617,\"ĠSQ\":51618,\"zon\":51619,\"ĠBened\":51620,\"_union\":51621,\">();čĊčĊ\":51622,\"ĠSims\":51623,\"ĠDates\":51624,\"ĉConnection\":51625,\"ĠPerc\":51626,\"grant\":51627,\"ampil\":51628,\"Ġaggregation\":51629,\"eselect\":51630,\"_SUP\":51631,\"({ĊĊ\":51632,\".om\":51633,\"Ġwm\":51634,\".contract\":51635,\"-Origin\":51636,\"Ġgeme\":51637,\"freeze\":51638,\"NUMBER\":51639,\".curr\":51640,\"ĠGlad\":51641,\"sla\":51642,\"ĠReb\":51643,\"ÐµÑģÑĤÐ²Ð¾\":51644,\"arbon\":51645,\"/controllers\":51646,\"Slots\":51647,\".deepcopy\":51648,\"FULL\":51649,\"uire\":51650,\"@student\":51651,\"à¹īà¸Ń\":51652,\"Translator\":51653,\"Ġpreferably\":51654,\"chemistry\":51655,\"ĠJacobs\":51656,\"nar\":51657,\"Ġ(\\\"\\\\\":51658,\"near\":51659,\"ifique\":51660,\"ĉcolumn\":51661,\"Ġminutos\":51662,\"iges\":51663,\"Ġestable\":51664,\"-disc\":51665,\"(Char\":51666,\"kov\":51667,\"examples\":51668,\"__(\\\"\":51669,\"ĠÐºÐ°Ðº\":51670,\"ĠBoris\":51671,\"(dx\":51672,\"spr\":51673,\"Ġoverhaul\":51674,\"atoon\":51675,\"ĠHarley\":51676,\"icamente\":51677,\"âĸĪâĸĪâĸĪâĸĪ\":51678,\"evity\":51679,\"usher\":51680,\".VisualStudio\":51681,\"Wave\":51682,\"ĠNormally\":51683,\"stood\":51684,\"ornings\":51685,\"Ġhandmade\":51686,\"(logging\":51687,\"Ġcarcin\":51688,\"acja\":51689,\"Ġsupers\":51690,\"Ġsiege\":51691,\"ĉIf\":51692,\"ĠILogger\":51693,\"UART\":51694,\"AnimationFrame\":51695,\"Ġtapes\":51696,\"Ġaids\":51697,\"ĠColonel\":51698,\"veedor\":51699,\"Ġmdl\":51700,\"phon\":51701,\"Dismiss\":51702,\"Availability\":51703,\"UniformLocation\":51704,\"Ġideals\":51705,\"quette\":51706,\"keiten\":51707,\"ĠEMAIL\":51708,\"ĠNeb\":51709,\"Ġsummoned\":51710,\"Ġgovernmental\":51711,\"ĠHorror\":51712,\"changing\":51713,\"ĠActivate\":51714,\"Ill\":51715,\"<tbody\":51716,\"creative\":51717,\"ĠBLE\":51718,\"Ġmadness\":51719,\"OrNil\":51720,\"Ġhin\":51721,\"Åĵ\":51722,\".GetKey\":51723,\"_console\":51724,\"\\\"Our\":51725,\"Ġguint\":51726,\"Ġami\":51727,\"Ġreflective\":51728,\"Ġcracking\":51729,\"ĠRi\":51730,\"RAL\":51731,\"ursed\":51732,\"pure\":51733,\"Ġrepaired\":51734,\"Ġtiger\":51735,\"ĠNicolas\":51736,\"Vs\":51737,\"nth\":51738,\".expression\":51739,\"Ġseas\":51740,\"_ACCEPT\":51741,\"Ġforc\":51742,\"ĠFrau\":51743,\"Ġthresh\":51744,\"ĠÏĢ\":51745,\"(BASE\":51746,\"_Open\":51747,\"Wunused\":51748,\"ĠDomestic\":51749,\"(priv\":51750,\"guess\":51751,\"//!Ċ\":51752,\"getItem\":51753,\"())ĊĊĊ\":51754,\"mutations\":51755,\"Ġsts\":51756,\"Ġdementia\":51757,\"spoken\":51758,\"$params\":51759,\"Ġpatrons\":51760,\"Ġrunway\":51761,\"ĠBUY\":51762,\".Warning\":51763,\"Ġneutrality\":51764,\"zhou\":51765,\"ÑĢÐ°Ñī\":51766,\"akter\":51767,\"ĠConstructors\":51768,\"ÃĵN\":51769,\"ĠProgressive\":51770,\"ĠBurger\":51771,\"Ġincurred\":51772,\"Ġimplicitly\":51773,\"_environment\":51774,\"Ġexacerb\":51775,\"Ġenduring\":51776,\"sic\":51777,\"ĠParticipants\":51778,\"_Block\":51779,\"Ġenroll\":51780,\"_employee\":51781,\"ĠPepper\":51782,\"laughter\":51783,\"ãĥĸ\":51784,\"'];?>\":51785,\"='.\":51786,\"(rename\":51787,\"Ġshelters\":51788,\"ĠAMA\":51789,\"_gap\":51790,\"ĠREUTERS\":51791,\"xampp\":51792,\"OMIC\":51793,\"Ġpedido\":51794,\"ĠdÃ©velop\":51795,\"__(/*!\":51796,\"_od\":51797,\"were\":51798,\"_Number\":51799,\"_multiplier\":51800,\"KEEP\":51801,\"Ġshowers\":51802,\"Ġmage\":51803,\"Ġsino\":51804,\"crow\":51805,\".idx\":51806,\"_notice\":51807,\"ueil\":51808,\"Ġmyriad\":51809,\"ĠAvailability\":51810,\"central\":51811,\"ĠABOUT\":51812,\"Ġincorporating\":51813,\"Ġ-----------------------------------------------------------------------------Ċ\":51814,\"_widgets\":51815,\"ĠsystemFontOfSize\":51816,\"Ã¶rt\":51817,\"/jpeg\":51818,\"ĠSMTP\":51819,\"(browser\":51820,\"guns\":51821,\"setw\":51822,\"_AVAILABLE\":51823,\"Ġincorporates\":51824,\"/android\":51825,\"yx\":51826,\"å¸ĥ\":51827,\"_lab\":51828,\"Ġleaking\":51829,\"ĠHint\":51830,\"Ã¼nchen\":51831,\".Scale\":51832,\"Ġfireworks\":51833,\"ĠlParam\":51834,\"bsd\":51835,\"axon\":51836,\"(predict\":51837,\"Congratulations\":51838,\"ĠSpectrum\":51839,\"IRC\":51840,\"ĠAdministrative\":51841,\"Ġimprisoned\":51842,\"RSpec\":51843,\"Ġretains\":51844,\"Ġsettling\":51845,\"Ġcitations\":51846,\"ĠWorlds\":51847,\"strconv\":51848,\"ousand\":51849,\"ĠBeginning\":51850,\"ĠAndrews\":51851,\"ĠSharon\":51852,\"Executing\":51853,\"groupId\":51854,\"addField\":51855,\"Ġexpands\":51856,\"Ġkilometres\":51857,\"linky\":51858,\"Ġgrp\":51859,\"INATION\":51860,\"British\":51861,\"Ġcomport\":51862,\".DataGridViewColumn\":51863,\"ĠProductions\":51864,\"ilden\":51865,\"Ġunix\":51866,\"_gallery\":51867,\"_PROVID\":51868,\"ordering\":51869,\"_ann\":51870,\"bh\":51871,\".Design\":51872,\"Ġtreffen\":51873,\"Ġunderline\":51874,\"_nums\":51875,\"íķľëĭ¤\":51876,\")v\":51877,\"usize\":51878,\"Ġdisappearance\":51879,\"ToBounds\":51880,\"Ġpcl\":51881,\"ĠWinnipeg\":51882,\"ĠSherman\":51883,\"_lambda\":51884,\"nant\":51885,\"ĠrootView\":51886,\".Flags\":51887,\"Ġcensorship\":51888,\"sentence\":51889,\".readInt\":51890,\"_assignment\":51891,\"Ġverschied\":51892,\"ĠFraction\":51893,\"Ġnationalist\":51894,\"Ġjuego\":51895,\"ĠDealer\":51896,\"Ġpredicting\":51897,\"aupt\":51898,\"helm\":51899,\"_PRICE\":51900,\"_DS\":51901,\"(\\\"#{\":51902,\"lifting\":51903,\"Ġposing\":51904,\"ĠNSMutableDictionary\":51905,\"Ġsmash\":51906,\"Ġakin\":51907,\"Ġcampuses\":51908,\"ĠOutline\":51909,\"ĠElastic\":51910,\"_CheckedChanged\":51911,\"(IEnumerable\":51912,\"squeeze\":51913,\"ptune\":51914,\"_FRONT\":51915,\"mh\":51916,\"ĠìĥĿìĦ±\":51917,\"RunWith\":51918,\"Ġturnout\":51919,\"siblings\":51920,\")e\":51921,\"_ARGUMENT\":51922,\"ĠGridBagConstraints\":51923,\"_POOL\":51924,\".RIGHT\":51925,\"iggins\":51926,\"telephone\":51927,\"\\\\Extension\":51928,\"ĠArist\":51929,\"itur\":51930,\"Ġfries\":51931,\"_dup\":51932,\"Expanded\":51933,\"-ro\":51934,\"ĠWorldwide\":51935,\"ĠCork\":51936,\"Ã³l\":51937,\"Lim\":51938,\"Ġdenn\":51939,\"Pretty\":51940,\"Ġfy\":51941,\"Triangle\":51942,\"Featured\":51943,\"(Common\":51944,\"_eff\":51945,\"Ġ\\\"\\\"čĊ\":51946,\"á»Ľi\":51947,\"_LINEAR\":51948,\"ĠRica\":51949,\"ĠcafÃ©\":51950,\"Ġappell\":51951,\"Ġniveau\":51952,\"Ġ&,\":51953,\"Ġfabrics\":51954,\"_Player\":51955,\"Ġhygiene\":51956,\"Ġdisastrous\":51957,\"ĠsharedInstance\":51958,\"_pitch\":51959,\"rz\":51960,\"enment\":51961,\"Near\":51962,\"_STATS\":51963,\"Ġstain\":51964,\"ĠDNC\":51965,\"Ġissu\":51966,\"^K\":51967,\"ĉtree\":51968,\"_blk\":51969,\"sez\":51970,\"lain\":51971,\"amu\":51972,\"_owned\":51973,\"USART\":51974,\".hasClass\":51975,\"ISON\":51976,\"Ġfoe\":51977,\"ushed\":51978,\"_UNSIGNED\":51979,\"Ġindexing\":51980,\"ĠFirebaseAuth\":51981,\"Ġliteracy\":51982,\"ĠSUR\":51983,\"ĠColts\":51984,\"becue\":51985,\"ĠIntro\":51986,\"Ġchaotic\":51987,\"Ġani\":51988,\"ĠAnnie\":51989,\"Æ°á»Ŀ\":51990,\".dx\":51991,\"disconnect\":51992,\"Ġarchived\":51993,\"[List\":51994,\"=N\":51995,\".presentation\":51996,\"Restaurant\":51997,\"Ġrockets\":51998,\"=https\":51999,\"/op\":52000,\"Ġpurse\":52001,\"ĠKris\":52002,\"Ġcoral\":52003,\"setParameter\":52004,\"Ġirrig\":52005,\"Queen\":52006,\"NSData\":52007,\"Ġvastly\":52008,\".Files\":52009,\"Ġfeminism\":52010,\"(Stream\":52011,\"Ġatrib\":52012,\"Ġliquidity\":52013,\"<File\":52014,\"trag\":52015,\"[contains\":52016,\"Ġhindi\":52017,\"ĉcp\":52018,\"homepage\":52019,\"Ġsurpass\":52020,\"Ġdaylight\":52021,\"authorize\":52022,\"ĠConsequently\":52023,\"AsyncResult\":52024,\"ĠDiary\":52025,\".Pattern\":52026,\".*/Ċ\":52027,\"enschaft\":52028,\"ĠJudiciary\":52029,\"Adult\":52030,\"(&:\":52031,\"Ġjeopard\":52032,\"ĠBlizzard\":52033,\"Ġgg\":52034,\"\\\";//\":52035,\"XHR\":52036,\"Ġpasswd\":52037,\">}\":52038,\"'),'\":52039,\"Ġcomparator\":52040,\".chain\":52041,\"Ġinsured\":52042,\"_EDGE\":52043,\"Ġtylko\":52044,\"_MAJOR\":52045,\"wav\":52046,\"\\\\File\":52047,\"Entr\":52048,\"'app\":52049,\"Ġforgiveness\":52050,\"ĉdst\":52051,\"\\\":-\":52052,\".mon\":52053,\"Ġ(ĊĊ\":52054,\"Ġcapita\":52055,\"ĠinitComponents\":52056,\"Ġswords\":52057,\"ĠOutputStream\":52058,\"Ġhears\":52059,\"ĠSPACE\":52060,\"-inspired\":52061,\"_boot\":52062,\".none\":52063,\".getInputStream\":52064,\"Ġdevise\":52065,\"Ġpediatric\":52066,\"ansi\":52067,\"_partial\":52068,\"Ġshard\":52069,\"Ġfurious\":52070,\"Ġdrawable\":52071,\"%).\":52072,\"(em\":52073,\"ĠBake\":52074,\"ĉperror\":52075,\"ĠReligious\":52076,\"-\\\"+\":52077,\"ĉĉĉĠĠĠĠĠĠĠĠĠĠĠ\":52078,\"ĠSecrets\":52079,\"(normal\":52080,\"ACES\":52081,\"ĠStockholm\":52082,\"-normal\":52083,\"Ġaccustomed\":52084,\"Ġboutique\":52085,\"ĠSwing\":52086,\"Ġfim\":52087,\"ĠPU\":52088,\".Socket\":52089,\"Ġ'\\\"'\":52090,\"anj\":52091,\"Manual\":52092,\"Ġmujer\":52093,\"Ġphysiological\":52094,\"contain\":52095,\"Merge\":52096,\"Ġsuas\":52097,\"Ġ'{\\\"\":52098,\"nego\":52099,\"Ġsubscribed\":52100,\"toast\":52101,\"_VERBOSE\":52102,\"Ġknit\":52103,\"ĠArtists\":52104,\"Ġheartbeat\":52105,\"Ġfirefighters\":52106,\"ssa\":52107,\"[{\":52108,\"Ġunderscore\":52109,\"Ġhistories\":52110,\"igmoid\":52111,\"FieldValue\":52112,\"ToAdd\":52113,\".Co\":52114,\"ĠHarold\":52115,\"Avoid\":52116,\"ighbours\":52117,\"orde\":52118,\"Ġtruths\":52119,\"/al\":52120,\"Ġwired\":52121,\"ĠItalia\":52122,\"Ġservicios\":52123,\"ĠAUDIO\":52124,\"Ġ'\\\"+\":52125,\"Ġpumping\":52126,\"ĠClement\":52127,\"ÃĥO\":52128,\"åİŁ\":52129,\">n\":52130,\"ĠstrSql\":52131,\"jdbc\":52132,\"âģ\":52133,\"ĉSET\":52134,\"ĠBUFFER\":52135,\"://\\\"\":52136,\"Ġcircumstance\":52137,\"UITableViewCell\":52138,\".vertical\":52139,\"ĠJohns\":52140,\"tolist\":52141,\"Ġdriveway\":52142,\"Ġlearners\":52143,\"tober\":52144,\"winner\":52145,\"-your\":52146,\".states\":52147,\"HM\":52148,\"Ġgradients\":52149,\"Ġseizure\":52150,\"Ġmater\":52151,\"Ġdetal\":52152,\"ĠReduce\":52153,\"(mouse\":52154,\"ĠReSharper\":52155,\"-routing\":52156,\"ĠØ´\":52157,\"Ġjointly\":52158,\"ĠFamil\":52159,\"<Message\":52160,\"expire\":52161,\"_trade\":52162,\"âĢ¦..\":52163,\"ĠFUNCTIONS\":52164,\"Ġxen\":52165,\"Ġ{};\":52166,\"Fab\":52167,\"Ġfeast\":52168,\"(Db\":52169,\"FirstResponder\":52170,\"Ä±lÄ±\":52171,\"ĠmaxValue\":52172,\"Ġ-:\":52173,\"aptic\":52174,\".Gson\":52175,\"ĠRover\":52176,\"_cn\":52177,\"loud\":52178,\"Ġchambers\":52179,\"ĠÐ·Ð°Ð´\":52180,\".foreach\":52181,\".getEmail\":52182,\"çŁ¥\":52183,\".Nodes\":52184,\"ĠVW\":52185,\"ĠWaiting\":52186,\"(QtCore\":52187,\"ĠsÃ³lo\":52188,\"rq\":52189,\"anguard\":52190,\"Ġresembles\":52191,\":[[\":52192,\"Ġged\":52193,\"_EP\":52194,\"(Activity\":52195,\"ĠIsn\":52196,\"ĠCrushers\":52197,\"_RUNTIME\":52198,\"ĉopen\":52199,\"ĠHighlights\":52200,\"Ã©ration\":52201,\"Ġyelling\":52202,\"ĠLIGHT\":52203,\"Phot\":52204,\"venge\":52205,\"ĠSusp\":52206,\"ĠChr\":52207,\".Distance\":52208,\"arsimp\":52209,\"licas\":52210,\".Mon\":52211,\"Ġsucked\":52212,\"printed\":52213,\"mute\":52214,\"ĠsetError\":52215,\".Option\":52216,\"Ġimpairment\":52217,\"noise\":52218,\"Ġpartnered\":52219,\"Ãį\":52220,\"dens\":52221,\"icz\":52222,\"ĠwaitFor\":52223,\"Ġoverlooking\":52224,\"ĠFORMAT\":52225,\"ĠTString\":52226,\"Ġrenting\":52227,\"ĉcomponent\":52228,\".Free\":52229,\"ĠLauncher\":52230,\"=date\":52231,\"ĠPods\":52232,\"AGMENT\":52233,\"Codigo\":52234,\"BitFields\":52235,\"Ġubiqu\":52236,\"-carousel\":52237,\"ĠSimulator\":52238,\"inode\":52239,\"']){Ċ\":52240,\"ĠBaghd\":52241,\"Ġnorthwest\":52242,\"htaking\":52243,\"<&\":52244,\"Ġtram\":52245,\"Ġforwarded\":52246,\"ĠerrorMsg\":52247,\"_ASSIGN\":52248,\"ĠEntities\":52249,\".Part\":52250,\"reature\":52251,\"(Uri\":52252,\"ĠDriving\":52253,\"Ġinvasive\":52254,\"igrationBuilder\":52255,\"osaurs\":52256,\"ĉport\":52257,\"Ġbran\":52258,\"ittings\":52259,\"Door\":52260,\"Ġ{%\":52261,\"(limit\":52262,\"Ġsquared\":52263,\"ĠDISPLAY\":52264,\".Accept\":52265,\".baseUrl\":52266,\".Enter\":52267,\"Ġ...)Ċ\":52268,\"Ġowl\":52269,\"Ġslated\":52270,\".fecha\":52271,\"_SEG\":52272,\"={$\":52273,\"ĠONLINE\":52274,\"ONY\":52275,\"ĠÐ´Ð°Ð½Ð½ÑĭÑħ\":52276,\"onte\":52277,\"_CLICK\":52278,\"Sa\":52279,\"Important\":52280,\"Ġcarousel\":52281,\"Ġappealed\":52282,\"ĠNie\":52283,\"/book\":52284,\"[]>(\":52285,\"Ġxmax\":52286,\"Ġlange\":52287,\".Suppress\":52288,\"ĠThinking\":52289,\"Addresses\":52290,\"ĠSally\":52291,\"-TV\":52292,\"ĠCharleston\":52293,\")\\\"ĊĊ\":52294,\"Ġtally\":52295,\"Ġull\":52296,\"Ġlocales\":52297,\"ewan\":52298,\"Ġincremental\":52299,\"ëĲľ\":52300,\"Ġcaret\":52301,\"jure\":52302,\"Ġdor\":52303,\"Ġlocalization\":52304,\"Ġseafood\":52305,\"ĠRubber\":52306,\".There\":52307,\"ĠFishing\":52308,\"YYY\":52309,\"mage\":52310,\"ĠFlexible\":52311,\"ĠGENERAL\":52312,\"eka\":52313,\"Ġthriving\":52314,\"Ġsis\":52315,\"Ġbourgeois\":52316,\"Fake\":52317,\",\\\\\\\"\":52318,\"ĠÐ¾Ð´\":52319,\"COR\":52320,\"-effective\":52321,\"Ġsku\":52322,\"edly\":52323,\"##ĊĊ\":52324,\"ĠHolly\":52325,\"ĠFLASH\":52326,\"/TR\":52327,\".ns\":52328,\"probe\":52329,\"gift\":52330,\"owitz\":52331,\"-navbar\":52332,\"Ġsack\":52333,\"çº§\":52334,\"ĠThreat\":52335,\"ZA\":52336,\"XM\":52337,\"'),ĊĊ\":52338,\"ĠLLVM\":52339,\"asz\":52340,\"Edited\":52341,\"WithString\":52342,\"Silver\":52343,\"yna\":52344,\"_renderer\":52345,\"ĉDEBUG\":52346,\"(operation\":52347,\"ĠSlots\":52348,\"ĠAuburn\":52349,\"xec\":52350,\"Ġhomosexuality\":52351,\".RestController\":52352,\"ersive\":52353,\"Ġprofil\":52354,\"ĠMyanmar\":52355,\"rosse\":52356,\"_IRQn\":52357,\"ĠsendMessage\":52358,\"Ġtechnicians\":52359,\"Ġmane\":52360,\"commons\":52361,\"Ġshredd\":52362,\"Boost\":52363,\"Ġsympathetic\":52364,\"-eff\":52365,\"ĠCertainly\":52366,\"ĠwÃ¤h\":52367,\"ĠRochester\":52368,\"ucci\":52369,\"urm\":52370,\"empor\":52371,\"Ġ\\\"\\\":Ċ\":52372,\"-spacing\":52373,\"Ġsixty\":52374,\"Ġâľĵ\":52375,\"_reporting\":52376,\"Wil\":52377,\"oyo\":52378,\"ĠdidSelect\":52379,\".getLong\":52380,\".setError\":52381,\"_nc\":52382,\"ĠDong\":52383,\"ĉasync\":52384,\"ĠHighly\":52385,\"]:čĊ\":52386,\"Leaks\":52387,\",...Ċ\":52388,\"valuator\":52389,\"dictions\":52390,\"oxel\":52391,\"Ġgestures\":52392,\"=\\\"?\":52393,\"bags\":52394,\"ĠRelief\":52395,\"subseteq\":52396,\"(namespace\":52397,\"}|\":52398,\"Ġmicrobi\":52399,\"Ġpurity\":52400,\"chio\":52401,\"}?\":52402,\"_MUT\":52403,\"_activation\":52404,\"ĠPirates\":52405,\"Ġ%#\":52406,\"ificaciÃ³n\":52407,\"åĭ\":52408,\"ĠNRA\":52409,\"Ã§on\":52410,\"})();Ċ\":52411,\"ĠChester\":52412,\"âĢĵâĢĵ\":52413,\"getConnection\":52414,\".arguments\":52415,\"Fetching\":52416,\"ĠFry\":52417,\"ĠDit\":52418,\"Ġzich\":52419,\"past\":52420,\"-library\":52421,\"ĠHayes\":52422,\"Ġbounty\":52423,\"ĠSpringfield\":52424,\"POR\":52425,\"ĠAPR\":52426,\"ĠEmbassy\":52427,\"QUESTION\":52428,\"ĠSoldier\":52429,\"ertas\":52430,\"ĠNORMAL\":52431,\"Ġdus\":52432,\"bolt\":52433,\"Ġdort\":52434,\"ĠLift\":52435,\"ĠgetRandom\":52436,\".RunWith\":52437,\",),Ċ\":52438,\"Ġvarargin\":52439,\"ĠhandleClick\":52440,\"\\\\Html\":52441,\"Ġhommes\":52442,\"cidade\":52443,\"(ep\":52444,\"Ja\":52445,\"/dialog\":52446,\".rate\":52447,\"ĠWei\":52448,\"fullscreen\":52449,\"ĠNUnit\":52450,\".measure\":52451,\"Vals\":52452,\"ĠSigned\":52453,\"Ġrus\":52454,\"Ġraft\":52455,\"ĠBlonde\":52456,\"Ġnets\":52457,\"ĠMetric\":52458,\"ichTextBox\":52459,\"Ġure\":52460,\"Ġinterracial\":52461,\"Ġ'}Ċ\":52462,\"(storage\":52463,\"Integration\":52464,\"Ġbanco\":52465,\"ASY\":52466,\"Ġjint\":52467,\"Ġdegradation\":52468,\"ĠHAND\":52469,\"uerdo\":52470,\"=''\":52471,\"Ġstrokes\":52472,\"rewrite\":52473,\"(Set\":52474,\"ĠMatDialog\":52475,\"Ġdossier\":52476,\"ĉand\":52477,\"ADDING\":52478,\"Ġmutually\":52479,\"Ġpreceded\":52480,\"}};Ċ\":52481,\"Ġsubtype\":52482,\"Ġresolving\":52483,\"Ġgeometric\":52484,\"[column\":52485,\"ĠCTRL\":52486,\"ĠHL\":52487,\"Ġdah\":52488,\"Ġ(;;\":52489,\"Rails\":52490,\"Ãľ\":52491,\"ĠGenerates\":52492,\"-Length\":52493,\"pedo\":52494,\"ogenous\":52495,\"ĠRobertson\":52496,\".Bool\":52497,\"oders\":52498,\"_AGENT\":52499,\"passwd\":52500,\"ĠNodes\":52501,\".bi\":52502,\"ĠWB\":52503,\"Ġprophet\":52504,\"slave\":52505,\"Ġå¼\":52506,\"Ġweil\":52507,\"%</\":52508,\"Ġcarbs\":52509,\"æ°´\":52510,\"Ġexpressly\":52511,\"\\\\xd\":52512,\"-eyed\":52513,\"ĠCreature\":52514,\"contained\":52515,\"(SIG\":52516,\"ĠEnhancement\":52517,\"ĠCors\":52518,\"Gal\":52519,\"_SIGNAL\":52520,\"reinterpret\":52521,\"ĠQPushButton\":52522,\"_None\":52523,\"Ġgenocide\":52524,\"ĠSeal\":52525,\"ä¸Ĭä¼ł\":52526,\"(per\":52527,\"Ð»ÑĮÑĤ\":52528,\"ĠÃłs\":52529,\".Template\":52530,\"Ġ)čĊčĊ\":52531,\".singleton\":52532,\"ĉsleep\":52533,\"Ġspawned\":52534,\"Ġpossessions\":52535,\"getConfig\":52536,\"Ġtai\":52537,\"lude\":52538,\"ĠMeter\":52539,\"Ġbiblical\":52540,\"marshaller\":52541,\".Toolkit\":52542,\"ĠLesbian\":52543,\".smart\":52544,\"Ġboycott\":52545,\"Ġfry\":52546,\"-desc\":52547,\"_Service\":52548,\"Ġmacht\":52549,\"ĠCairo\":52550,\"Ãłi\":52551,\"_previous\":52552,\".transport\":52553,\"Medical\":52554,\"CGPoint\":52555,\"QUARE\":52556,\"Ġbrighter\":52557,\"ĠcheckBox\":52558,\"ĠFOUND\":52559,\".branch\":52560,\"Ġblah\":52561,\"ĠPrelude\":52562,\"Offline\":52563,\"Listing\":52564,\"/**/*.\":52565,\"ĠJR\":52566,\"phants\":52567,\"getY\":52568,\".FindControl\":52569,\"\\\"...\":52570,\"ÐºÐµ\":52571,\"HRESULT\":52572,\"Ġchecklist\":52573,\"(ast\":52574,\"Ġborrowing\":52575,\"âĢ¦and\":52576,\"ĠÐĹ\":52577,\"Ġprocurement\":52578,\"-task\":52579,\"_hal\":52580,\"Playlist\":52581,\".star\":52582,\"_SUPPORTED\":52583,\"ASM\":52584,\"%A\":52585,\"restrial\":52586,\"ĠÐ¸ÑģÐ¿\":52587,\"Ġpager\":52588,\"ĠDiabetes\":52589,\"ĠMahar\":52590,\"tan\":52591,\"Actually\":52592,\">//\":52593,\"ĠXV\":52594,\"à§į\":52595,\"Ġseja\":52596,\".visual\":52597,\"kker\":52598,\"];ĊĊĊ\":52599,\"ĠtypeName\":52600,\".But\":52601,\"ClientRect\":52602,\"icals\":52603,\"ĠDjango\":52604,\"ĠRape\":52605,\"Ġpayday\":52606,\"(resources\":52607,\".biz\":52608,\"toi\":52609,\"(Runtime\":52610,\"ĠDynamics\":52611,\"ĠInvalidOperationException\":52612,\"(types\":52613,\"ĠTabs\":52614,\".MiddleLeft\":52615,\"xab\":52616,\"Ġ_(\":52617,\"ĠDreams\":52618,\"_Group\":52619,\"(cor\":52620,\"Leader\":52621,\"Ġgradual\":52622,\"(BigDecimal\":52623,\"Ġtextarea\":52624,\"letion\":52625,\"ĠFinished\":52626,\"ĠPole\":52627,\"Ġtapping\":52628,\"&(\":52629,\"Ġflirt\":52630,\"Ġterrified\":52631,\"Ġpady\":52632,\"ereg\":52633,\"eldom\":52634,\"Ġstationary\":52635,\"Ġpony\":52636,\"ĠREGISTER\":52637,\"_accel\":52638,\"ĠHerz\":52639,\"Ġmatriz\":52640,\"ĠCaf\":52641,\"xac\":52642,\"ascus\":52643,\"Ġenlarge\":52644,\"ACHED\":52645,\"yyval\":52646,\"Ġsic\":52647,\"ĠCanal\":52648,\":v\":52649,\"=?,\":52650,\"ĠImprovement\":52651,\"?}\\\",\":52652,\"NSObject\":52653,\"Ġescaping\":52654,\"ĠNullable\":52655,\"ĠhÃ¤\":52656,\"want\":52657,\"Eliminar\":52658,\"ĠCLLocation\":52659,\"ĠreuseIdentifier\":52660,\"BufferSize\":52661,\"ÃŁer\":52662,\"ĠAsked\":52663,\"']],Ċ\":52664,\"Ġshields\":52665,\"grand\":52666,\"ĠTownship\":52667,\"ĠPubMed\":52668,\"ectl\":52669,\"five\":52670,\"ĠReactiveFormsModule\":52671,\"ĠGLenum\":52672,\"Dar\":52673,\"iface\":52674,\"-indent\":52675,\"Formula\":52676,\".snapshot\":52677,\"COMPARE\":52678,\"Ġbelts\":52679,\"ĉcache\":52680,\"ldata\":52681,\"Ġedad\":52682,\"ĠBOX\":52683,\"(cart\":52684,\"_LAYOUT\":52685,\"Ġfflush\":52686,\"ĠLOS\":52687,\"ĠSorted\":52688,\".slide\":52689,\"Ġtijd\":52690,\"ĠTexans\":52691,\"ĠPurch\":52692,\"ĠLevels\":52693,\"Ġsemantics\":52694,\"ĠTehran\":52695,\"bmp\":52696,\".urlencoded\":52697,\"_xlabel\":52698,\"(gulp\":52699,\"ĠButtons\":52700,\"ĠBroker\":52701,\"çĽĳåĲ¬\":52702,\"$email\":52703,\"ÙĲ\":52704,\"Ġclassics\":52705,\"compose\":52706,\"(bs\":52707,\"Ġunhealthy\":52708,\"Exercise\":52709,\"crets\":52710,\"ĠPars\":52711,\"ĠDetermines\":52712,\"afort\":52713,\"(obs\":52714,\"Ġnast\":52715,\"Ġihren\":52716,\"Ġroyalty\":52717,\"serializer\":52718,\"ieux\":52719,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":52720,\"execution\":52721,\"ĠviewController\":52722,\"Ġrepro\":52723,\".pe\":52724,\"Ġcapitalize\":52725,\"åĩ»\":52726,\"Ġtunnels\":52727,\".DATA\":52728,\"pirit\":52729,\"Collections\":52730,\")}}\":52731,\"ĠOD\":52732,\"Ġfuzzy\":52733,\"Immediate\":52734,\"lj\":52735,\";?>\\\"\":52736,\"[var\":52737,\"Ġvolatility\":52738,\"reglo\":52739,\"Ġproliferation\":52740,\"Ġoracle\":52741,\"ĠCv\":52742,\"Ġnunca\":52743,\"PRINTF\":52744,\"Ġbreakpoint\":52745,\".EN\":52746,\"Ġbesten\":52747,\"Ġrebellion\":52748,\"Paused\":52749,\"Ġflown\":52750,\"Ġvicinity\":52751,\"wright\":52752,\",cp\":52753,\"iscing\":52754,\"ouchers\":52755,\"Ash\":52756,\"yar\":52757,\"ĠEj\":52758,\"represented\":52759,\"odic\":52760,\".cross\":52761,\"Ġcreations\":52762,\"ĠPablo\":52763,\"fest\":52764,\"ĠHilton\":52765,\"Reporter\":52766,\"ĠDil\":52767,\"ilenames\":52768,\"Ġexpenditures\":52769,\"_EDITOR\":52770,\"ĠArial\":52771,\"Ġplung\":52772,\"Ġunnamed\":52773,\"OrElse\":52774,\"Ġrecreate\":52775,\"ĠHearts\":52776,\">alert\":52777,\".getPassword\":52778,\"ĠMustang\":52779,\"VK\":52780,\"Ġaccomplishments\":52781,\"Appending\":52782,\"ĠCay\":52783,\"ĠUserModel\":52784,\"Ġsubsystem\":52785,\"Legal\":52786,\"ynchronize\":52787,\"_PERMISSION\":52788,\"ĠApartment\":52789,\"lige\":52790,\"Ġaffiliation\":52791,\"(DEBUG\":52792,\"Ts\":52793,\"ĠColoring\":52794,\"ĠWohn\":52795,\"nice\":52796,\"(lista\":52797,\"à±\":52798,\"ployment\":52799,\"ãģ¾ãģŁ\":52800,\"å¥½\":52801,\"subst\":52802,\"']]['\":52803,\"abol\":52804,\"='_\":52805,\"à§įà¦\":52806,\"orphism\":52807,\".literal\":52808,\"ĠPlug\":52809,\"Ġmw\":52810,\"omal\":52811,\"Ġ\\\"'\\\",\":52812,\"usi\":52813,\"Ġsighed\":52814,\"icultural\":52815,\".*,\":52816,\"ĠProstit\":52817,\"(console\":52818,\"IPLE\":52819,\"ĠTrap\":52820,\"XR\":52821,\"ĠEditorGUILayout\":52822,\"_vocab\":52823,\"Ġincompatible\":52824,\"Ġunconstitutional\":52825,\"-la\":52826,\"Ġerotique\":52827,\"Ġdeputies\":52828,\"quisitions\":52829,\"newValue\":52830,\"adia\":52831,\"Ġhwnd\":52832,\"gings\":52833,\"ĠVas\":52834,\"ĠIncrement\":52835,\"ĠFlint\":52836,\"ambia\":52837,\"_Point\":52838,\"-display\":52839,\"ĠFunny\":52840,\".toast\":52841,\".dark\":52842,\"Bindings\":52843,\"Ġdescriptive\":52844,\"arend\":52845,\".Ret\":52846,\"Ġrecursively\":52847,\"ĠMk\":52848,\"ĠTILE\":52849,\".createTextNode\":52850,\"ĠRAW\":52851,\"Ġinflux\":52852,\"çī©\":52853,\"Tok\":52854,\"-board\":52855,\"Recording\":52856,\"Strength\":52857,\"Ġrainfall\":52858,\"(dd\":52859,\".fxml\":52860,\"nets\":52861,\".Imaging\":52862,\"ĠBIOS\":52863,\"]+\\\"\":52864,\"OE\":52865,\"Ġresidency\":52866,\"ZE\":52867,\"WB\":52868,\".span\":52869,\"_defined\":52870,\"BOT\":52871,\">null\":52872,\"formData\":52873,\"CppMethodInitialized\":52874,\"_USERS\":52875,\"ĠNovel\":52876,\"inski\":52877,\">{@\":52878,\"etto\":52879,\"natural\":52880,\"ĠStrict\":52881,\":w\":52882,\".safe\":52883,\"Ġtowels\":52884,\"áºŃt\":52885,\".gsub\":52886,\"ë£\":52887,\"inqu\":52888,\"Ġaides\":52889,\"Ġincom\":52890,\"getter\":52891,\"Ġwasher\":52892,\"actories\":52893,\"Ġgetters\":52894,\"mite\":52895,\"_sources\":52896,\"Ġharmless\":52897,\"Ġunos\":52898,\"prehensive\":52899,\"Ġnodo\":52900,\"Ġgeographical\":52901,\"ĠSelectList\":52902,\".Script\":52903,\".Enums\":52904,\"ĠENTER\":52905,\"wald\":52906,\"ĠBaron\":52907,\"Ġparticul\":52908,\".currentPage\":52909,\"@Transactional\":52910,\"[line\":52911,\"ĉdes\":52912,\"Jason\":52913,\".getCount\":52914,\"ĠPenny\":52915,\"ĠPayload\":52916,\"sharp\":52917,\"[right\":52918,\"venta\":52919,\"Ġapl\":52920,\"Ġproduits\":52921,\"Ġott\":52922,\"Tracks\":52923,\".Android\":52924,\"Ġsilicone\":52925,\"ĠELSE\":52926,\"animations\":52927,\"ultureInfo\":52928,\"Ġblueprint\":52929,\"ofstream\":52930,\"Ġ[][]\":52931,\"ĠServe\":52932,\"Ġtrig\":52933,\"ĉservice\":52934,\"ĠStrat\":52935,\"ĠSavage\":52936,\"Ġobjs\":52937,\"ĠNotifications\":52938,\",pos\":52939,\"Thing\":52940,\"ĠRBI\":52941,\"opathy\":52942,\"Ġnaughty\":52943,\"lbs\":52944,\"eprom\":52945,\">\\\".\":52946,\"Ġpioneer\":52947,\"Ġjapanese\":52948,\"Aud\":52949,\"Ġalley\":52950,\"ĠPetsc\":52951,\"']?>\":52952,\"ĠKiller\":52953,\".getAbsolutePath\":52954,\"_caps\":52955,\"Å«\":52956,\"Ġsubstrate\":52957,\".assertIn\":52958,\"ìķĦ\":52959,\"Ġthyroid\":52960,\"ĠDeluxe\":52961,\"Ġfactorial\":52962,\"Ġpresses\":52963,\"ĠAccom\":52964,\"=open\":52965,\".getS\":52966,\"Ġexplorer\":52967,\"Ġresides\":52968,\"Associated\":52969,\"Ġtransformations\":52970,\"Tu\":52971,\"ĠRichards\":52972,\"_birth\":52973,\"=#{\":52974,\"-spe\":52975,\"(nd\":52976,\"Ġvisuals\":52977,\"_stamp\":52978,\"Ġterminals\":52979,\"routine\":52980,\"***/Ċ\":52981,\"ĠJab\":52982,\"KL\":52983,\"Contrib\":52984,\"Ġsouthwest\":52985,\"ĠPep\":52986,\"ĉentity\":52987,\"Ġliner\":52988,\".StatusOK\":52989,\"ĠSchul\":52990,\"(CL\":52991,\"Ġmijn\":52992,\"astos\":52993,\"_digest\":52994,\"Ġpersisted\":52995,\"-contact\":52996,\"Ġodor\":52997,\"Ġdiscoveries\":52998,\"_FIELDS\":52999,\"Fly\":53000,\"Ġrz\":53001,\"ĠLista\":53002,\"Reserved\":53003,\"taxonomy\":53004,\")section\":53005,\"/\\\")Ċ\":53006,\"/request\":53007,\"Ġsomeday\":53008,\"cities\":53009,\"/fire\":53010,\"Ġobjections\":53011,\"ĉDECLARE\":53012,\".navigationItem\":53013,\".setdefault\":53014,\"returnValue\":53015,\"UCCEEDED\":53016,\"Ġobliged\":53017,\"ĠQaeda\":53018,\"Ġhyster\":53019,\"esthes\":53020,\"distinct\":53021,\"Ãły\":53022,\"ĠCombo\":53023,\"ĉsf\":53024,\"ĠâĬ\":53025,\"Ġdiscrepan\":53026,\"Ġinsign\":53027,\"ĠRESULTS\":53028,\"ĠValidationError\":53029,\"ĠHttpResponseRedirect\":53030,\"ĉQString\":53031,\"Ġautofocus\":53032,\"Dur\":53033,\"ĠRELEASE\":53034,\"-dollar\":53035,\".Commit\":53036,\"ĠkhÃ´ng\":53037,\"Ġlaunder\":53038,\".=\\\"\":53039,\"Ġæĸĩ\":53040,\"Ġbye\":53041,\".GetKeyDown\":53042,\"Ġgio\":53043,\"_sid\":53044,\"Ġgql\":53045,\".cm\":53046,\"_SLOT\":53047,\".GetInstance\":53048,\"reuse\":53049,\".shutdown\":53050,\"Ġjerseys\":53051,\"_MP\":53052,\"patibility\":53053,\"Ġè®¾ç½®\":53054,\"Ġreplacements\":53055,\"Ġprecedence\":53056,\"Ġbuffered\":53057,\".bs\":53058,\"_GREEN\":53059,\"brain\":53060,\"Ã¡ch\":53061,\"availability\":53062,\"ĠETF\":53063,\"Ġfret\":53064,\"istine\":53065,\"Ġlifts\":53066,\"Existing\":53067,\"Ġstereotypes\":53068,\"Ġempt\":53069,\"mongo\":53070,\".training\":53071,\"alist\":53072,\".IsEnabled\":53073,\"Ġ\\\"!\":53074,\"<?Ċ\":53075,\"uido\":53076,\"ĠintValue\":53077,\".elasticsearch\":53078,\"LOGIN\":53079,\"Ġreliance\":53080,\"ĠviewType\":53081,\"Ġdiminished\":53082,\"Sarah\":53083,\"ĠApproach\":53084,\"_WEB\":53085,\"Ġdrm\":53086,\"Ġcolumnist\":53087,\"Markup\":53088,\"ĠaquÃŃ\":53089,\"ĠDiane\":53090,\"Ġcw\":53091,\"ĠTick\":53092,\".observe\":53093,\"IRON\":53094,\"InBackground\":53095,\"Ġebony\":53096,\"ĠCourtesy\":53097,\":null\":53098,\"*******/ĊĊ\":53099,\"/resource\":53100,\"Iteration\":53101,\"defaultValue\":53102,\"attention\":53103,\"ĠÑĢÐ°Ð±Ð¾ÑĤ\":53104,\"Ġwaiver\":53105,\"Ġproduit\":53106,\"ĠGradient\":53107,\"Ġpercentages\":53108,\"ĠSAL\":53109,\"ĠMd\":53110,\"(snapshot\":53111,\"ĉio\":53112,\"ikers\":53113,\"Webpack\":53114,\"ĠsetPassword\":53115,\"Ġdefeating\":53116,\"ĠJeg\":53117,\"elapsed\":53118,\"holds\":53119,\"_shadow\":53120,\"Ġoffended\":53121,\"ĠPant\":53122,\"ĠCallable\":53123,\"_INFORMATION\":53124,\"ffee\":53125,\"(employee\":53126,\"ĠYAML\":53127,\"possibly\":53128,\"Ġmaximal\":53129,\"ellular\":53130,\"ĠSnyder\":53131,\"descriptor\":53132,\"ĠPLEASE\":53133,\"DlgItem\":53134,\"Ġartillery\":53135,\"`}Ċ\":53136,\"posium\":53137,\"Ġleer\":53138,\"%c\":53139,\"Ġdispos\":53140,\".mul\":53141,\"Ġgeography\":53142,\"Ġgraphical\":53143,\"Ġdrank\":53144,\"Ġmotions\":53145,\"Ġruth\":53146,\"********************************************************\":53147,\"Ġproductions\":53148,\"ĠcreateTime\":53149,\"ĠScripture\":53150,\"bbb\":53151,\"uchs\":53152,\"ä¸įèĥ½\":53153,\".BigDecimal\":53154,\"sizes\":53155,\"_solver\":53156,\"_From\":53157,\"_joint\":53158,\"Ġpathlib\":53159,\"Ġgears\":53160,\"ĠÑĦÐ¾ÑĢÐ¼\":53161,\"Ġconceal\":53162,\"Ġdifferentiate\":53163,\"<GameObject\":53164,\"Ġjeden\":53165,\"Ġalo\":53166,\"globals\":53167,\"ervative\":53168,\"Ġpadd\":53169,\"ĠPly\":53170,\"_ty\":53171,\"Ġpresente\":53172,\"Ġpropriet\":53173,\"_ls\":53174,\"ĠPunch\":53175,\"ĠCrawford\":53176,\"below\":53177,\"CppGeneric\":53178,\"ĠCONTROL\":53179,\"Ġoceans\":53180,\"ĠROUT\":53181,\"Ġrandint\":53182,\"ĉaddr\":53183,\"ĠHonest\":53184,\"Ġenvelop\":53185,\"Ġtraumatic\":53186,\"ĠLAT\":53187,\"Ġtg\":53188,\"ìĬ¤íĬ¸\":53189,\"Extended\":53190,\"Ġunchecked\":53191,\"Ġobstruct\":53192,\"_timezone\":53193,\"Persistent\":53194,\"Ġllev\":53195,\"/******************************************************************************Ċ\":53196,\"ĠFla\":53197,\".physics\":53198,\"Ġforged\":53199,\"ĠLaur\":53200,\"Ġmonopoly\":53201,\"Ġchristmas\":53202,\"gov\":53203,\"ĠSmoke\":53204,\"[df\":53205,\"Ġbishop\":53206,\"localObject\":53207,\"orrh\":53208,\"ontvangst\":53209,\"dry\":53210,\"Ġerfol\":53211,\"-ce\":53212,\"ĠOrderedDict\":53213,\"Ġhx\":53214,\"ĠRESET\":53215,\"Suc\":53216,\"Ġreckless\":53217,\"alamat\":53218,\"BigInteger\":53219,\"Ġbulbs\":53220,\"Ġmute\":53221,\"æĶ¾\":53222,\".Ultra\":53223,\"Lon\":53224,\"ĠclearTimeout\":53225,\"<Rigidbody\":53226,\"swiper\":53227,\"ĠComes\":53228,\"\\\\db\":53229,\"ĉmp\":53230,\"Ġrests\":53231,\"Moved\":53232,\"ĠLore\":53233,\".Dimension\":53234,\"ĠManit\":53235,\".hxx\":53236,\"=======\":53237,\"pitch\":53238,\"ffield\":53239,\"skills\":53240,\"_album\":53241,\"translated\":53242,\"ĠXI\":53243,\"Ġvein\":53244,\"ĠDavidson\":53245,\"ĠAuckland\":53246,\"yssey\":53247,\"Ġauthenticity\":53248,\"ĠAssist\":53249,\"Ġcomprise\":53250,\"CreateTime\":53251,\"Ġtrench\":53252,\".week\":53253,\"--;\":53254,\"ĠUIAlertController\":53255,\"_related\":53256,\"CMS\":53257,\"remely\":53258,\"Ġlexer\":53259,\"irmware\":53260,\"ElementsBy\":53261,\"-upper\":53262,\"Ġstagn\":53263,\"----------------------------------------------------------------------\":53264,\"_snapshot\":53265,\"/XMLSchema\":53266,\"_Order\":53267,\"Ġannex\":53268,\"_ENCOD\":53269,\"ĠAlto\":53270,\"arious\":53271,\"DJ\":53272,\"Ġabortions\":53273,\"Combat\":53274,\"ĠLicence\":53275,\"uggested\":53276,\"[K\":53277,\",))Ċ\":53278,\"('//\":53279,\".Can\":53280,\"secs\":53281,\"quotes\":53282,\"_try\":53283,\"ĠSage\":53284,\"ĠMov\":53285,\"'on\":53286,\"regist\":53287,\"ĠWrites\":53288,\"ĠDigest\":53289,\"ĉcontainer\":53290,\"-progress\":53291,\"Ġgoat\":53292,\"_scheme\":53293,\".GetChild\":53294,\"Ġasym\":53295,\".mybatisplus\":53296,\"atica\":53297,\"pgsql\":53298,\"_assets\":53299,\">K\":53300,\"Ġafin\":53301,\"NSS\":53302,\"ĠNAV\":53303,\"('.',\":53304,\"Ġ`\\\"\":53305,\"Ġauditor\":53306,\"_MOUSE\":53307,\"Ġwallets\":53308,\"Ġmou\":53309,\"runs\":53310,\"eterangan\":53311,\"ĠReservation\":53312,\"Ġexperiencia\":53313,\"ĉprocess\":53314,\"-import\":53315,\"_Return\":53316,\"ĠMacro\":53317,\"ĠPenis\":53318,\"pixels\":53319,\"ĠsetEmail\":53320,\"(MigrationBuilder\":53321,\"(xs\":53322,\"ĠEston\":53323,\"ĠBubble\":53324,\"ALLOW\":53325,\"ĉhandler\":53326,\"$ret\":53327,\"Ġcomplimentary\":53328,\"-city\":53329,\"Ġellos\":53330,\"ĠSOURCE\":53331,\"ĠAdvisor\":53332,\"ologÃŃa\":53333,\"Ġfaded\":53334,\".pc\":53335,\"_RGBA\":53336,\"AFX\":53337,\"Ġrepay\":53338,\"ĠFalcons\":53339,\"_issue\":53340,\"omidou\":53341,\".baomidou\":53342,\"Ġinfringement\":53343,\"urning\":53344,\"/storage\":53345,\"_quant\":53346,\"ĠQtCore\":53347,\"Ġmell\":53348,\"_density\":53349,\"ĠKnox\":53350,\"ĠSurvival\":53351,\".getUsername\":53352,\"Ġcommercially\":53353,\"grass\":53354,\"Ġmeis\":53355,\"äº¿\":53356,\"ĠPermissions\":53357,\"_QUOTES\":53358,\"iphone\":53359,\"ĠLOT\":53360,\"Ġthriller\":53361,\"ĠChapel\":53362,\"ĠRis\":53363,\">i\":53364,\"-ID\":53365,\"Ġrightly\":53366,\"Crypt\":53367,\"ĠIstanbul\":53368,\"reds\":53369,\"_resize\":53370,\"Population\":53371,\"(fetch\":53372,\"ĠHOT\":53373,\":first\":53374,\"Ġgadgets\":53375,\"PyObject\":53376,\"Ġmerging\":53377,\"duced\":53378,\"legates\":53379,\"ubectl\":53380,\"%/\":53381,\"allee\":53382,\"Ġzusammen\":53383,\".PropTypes\":53384,\"asto\":53385,\":*\":53386,\"rece\":53387,\"ResponseType\":53388,\"/group\":53389,\"Ġbarbar\":53390,\"ĠCaroline\":53391,\"ourced\":53392,\"ç»ı\":53393,\"Ġlubric\":53394,\"inspection\":53395,\"ammad\":53396,\"ĉImage\":53397,\"Ġierr\":53398,\"Ġcurtains\":53399,\"_ARB\":53400,\"ĠOral\":53401,\"Ġallied\":53402,\"ĠStatusCode\":53403,\"ĠClearly\":53404,\"PreferredSize\":53405,\"quina\":53406,\"Ġspos\":53407,\"Ġoptimism\":53408,\"Ġcomprar\":53409,\"Ġlug\":53410,\"ĠBoom\":53411,\"confirmation\":53412,\"_DURATION\":53413,\"_browser\":53414,\"Ġrepetition\":53415,\"Ġkeeper\":53416,\"ĠaddTo\":53417,\"(js\":53418,\".Stat\":53419,\".Cond\":53420,\"ĠHernandez\":53421,\"paque\":53422,\"Ġvoluntarily\":53423,\"Ġjerk\":53424,\"ĠLey\":53425,\"Ġdocumento\":53426,\"_dead\":53427,\"ĠTECH\":53428,\"Ġinception\":53429,\"(\\\"{}\":53430,\"ĠonLoad\":53431,\"xdd\":53432,\"ĠISP\":53433,\"specified\":53434,\"Ġë¬¸\":53435,\"PROCESS\":53436,\"(alert\":53437,\".MM\":53438,\"ĠcreateStore\":53439,\"(unique\":53440,\".getBlock\":53441,\"ëŀĺ\":53442,\"unos\":53443,\"Ġtrophies\":53444,\"_hover\":53445,\"ĠDaddy\":53446,\".Me\":53447,\"ĠCOUR\":53448,\"OBJ\":53449,\"atemala\":53450,\"ĠPsi\":53451,\"Ġnormals\":53452,\"acier\":53453,\"ĠMBA\":53454,\"Ġpawn\":53455,\"Ïħ\":53456,\"Ġspontaneous\":53457,\"Ġauxiliary\":53458,\"Ġinaugural\":53459,\"Ġfasting\":53460,\"ĠFileSystem\":53461,\"Ġzen\":53462,\"_BLUE\":53463,\"Ġsubtree\":53464,\"Ġpreprocess\":53465,\"-track\":53466,\"Charles\":53467,\"Ġdeposited\":53468,\"ĠqueryParams\":53469,\"Ð¾Ð»ÑĮÐºÐ¾\":53470,\"iembre\":53471,\"Ġpraw\":53472,\"xFC\":53473,\"Ġpanc\":53474,\"_nom\":53475,\"heroes\":53476,\".jav\":53477,\"::$_\":53478,\"ĠØ§ÙĦÙħ\":53479,\"SGlobal\":53480,\"æııè¿°\":53481,\"=temp\":53482,\"esti\":53483,\"Ġconstructive\":53484,\"ĠShim\":53485,\"ĠDirections\":53486,\"ĠBing\":53487,\"dirty\":53488,\"-running\":53489,\"_filepath\":53490,\"orderId\":53491,\"gard\":53492,\"_orient\":53493,\"Ġscout\":53494,\"Ġpsychologist\":53495,\"ì¶\":53496,\"ĠåŃ\":53497,\"deque\":53498,\"ĠHermione\":53499,\"ĠPowerPoint\":53500,\"Ġella\":53501,\"ĠUIBarButtonItem\":53502,\"Subviews\":53503,\"@Repository\":53504,\"\\\"\\\"\\\"ĊĊĊ\":53505,\"Ġretour\":53506,\"Ġcirca\":53507,\"Graphic\":53508,\"ĠGratuit\":53509,\"ddy\":53510,\"Ġtechnician\":53511,\"ĠCleanup\":53512,\"Ġpersonne\":53513,\"Ġresin\":53514,\".Mult\":53515,\"$m\":53516,\"ĠOrchestra\":53517,\"Ġwheelchair\":53518,\".SC\":53519,\"ĉGameObject\":53520,\"ĠmoÅ¼e\":53521,\"Opened\":53522,\"Ġchickens\":53523,\"otas\":53524,\"_temperature\":53525,\"Ġdetecting\":53526,\"Ġacquaint\":53527,\"Ġ<?=$\":53528,\">]\":53529,\"Ġmenstr\":53530,\"Ġdye\":53531,\"Roboto\":53532,\".units\":53533,\"ĠVinyl\":53534,\"cura\":53535,\"rypton\":53536,\"edd\":53537,\"=test\":53538,\"Ġtrov\":53539,\"Confirmation\":53540,\"Ġtheology\":53541,\"ĠHoldings\":53542,\"uating\":53543,\"Predict\":53544,\"[user\":53545,\"Ġ:'\":53546,\"ĠSesso\":53547,\"parentId\":53548,\"CodeAt\":53549,\"abbo\":53550,\"ĠTrevor\":53551,\"ĠQuit\":53552,\"_shipping\":53553,\"_RA\":53554,\"Ġkleine\":53555,\"ç¦\":53556,\"_Label\":53557,\"ĠOmar\":53558,\"ĠGREEN\":53559,\"/)Ċ\":53560,\"rok\":53561,\"Ġroasted\":53562,\"_RT\":53563,\"ĠâĢİ\":53564,\"@RunWith\":53565,\">NN\":53566,\"Ġtand\":53567,\"+'.\":53568,\"crud\":53569,\".keyboard\":53570,\"astery\":53571,\"BAD\":53572,\"ĠColumns\":53573,\".Company\":53574,\"Ġseminar\":53575,\"ĠgetContentPane\":53576,\"Ġcatastrophic\":53577,\"Ġembroid\":53578,\"iative\":53579,\"Ġcruelty\":53580,\"bis\":53581,\"Ġinse\":53582,\"ĠBroken\":53583,\"ĉfs\":53584,\"ĠmView\":53585,\"Ð°ÑĨÐ¸Ð¸\":53586,\"-facebook\":53587,\"Ġcaches\":53588,\"ãĢĤãĢĤĊĊ\":53589,\"ĠORM\":53590,\"ĠDistrib\":53591,\"ĠSceneManager\":53592,\"_transition\":53593,\"omez\":53594,\"ĠSHE\":53595,\"Ġworkload\":53596,\"SupportedException\":53597,\"Ġries\":53598,\"Ġåľ\":53599,\"(cat\":53600,\"HasMaxLength\":53601,\"Apps\":53602,\".TABLE\":53603,\"ĠKeyValuePair\":53604,\"edido\":53605,\".Rendering\":53606,\"Ġelectrom\":53607,\"Ġarbitration\":53608,\"Ġvariability\":53609,\"apollo\":53610,\"Ġutmost\":53611,\"openssl\":53612,\"ĠhÃ¥\":53613,\"('&\":53614,\".Standard\":53615,\"Ġdistraction\":53616,\"ifax\":53617,\"ĠëķĮ\":53618,\"those\":53619,\"ispens\":53620,\"vak\":53621,\"ĠSUP\":53622,\"ĠIsPlainOldData\":53623,\",key\":53624,\"fragistics\":53625,\"ĠJoyce\":53626,\"ĠFiber\":53627,\".ServletException\":53628,\"_All\":53629,\"Ġbackers\":53630,\"ĠAttributeError\":53631,\"{ĊĊĊ\":53632,\"@yahoo\":53633,\"-directory\":53634,\"Ġuninstall\":53635,\"Ġfluor\":53636,\"liquid\":53637,\"ĠlÃ¡\":53638,\"Ġfrightening\":53639,\"adan\":53640,\"ĠAUT\":53641,\"Ġtattoos\":53642,\"Ġpropagation\":53643,\".translation\":53644,\"ÐŁÑĢ\":53645,\"_scheduler\":53646,\"ãĢĤâĢľ\":53647,\"Ġcairo\":53648,\"ĠHttpClientModule\":53649,\"ĠNDP\":53650,\"ĠHits\":53651,\"ĠTransformation\":53652,\"ĠCaesar\":53653,\"stim\":53654,\"ĠBurton\":53655,\"wyn\":53656,\"Ġcommanded\":53657,\"ĠClothing\":53658,\"ĠRuntimeObject\":53659,\"really\":53660,\"cla\":53661,\".sa\":53662,\"ĠShannon\":53663,\"Ġcommissions\":53664,\"ĠJanet\":53665,\"Ġdisgusting\":53666,\"Ġoptimum\":53667,\"_sol\":53668,\"urons\":53669,\"ĠSHARE\":53670,\"Attrs\":53671,\"ĠSche\":53672,\"ĠBigNumber\":53673,\"Ġcigar\":53674,\"(depth\":53675,\"Ġfrac\":53676,\"ĠCurve\":53677,\"LAST\":53678,\"ĠSCRIPT\":53679,\"ê³¼\":53680,\"Malloc\":53681,\".groupby\":53682,\"ĠLeslie\":53683,\"Ġwhichever\":53684,\"Smarty\":53685,\"/we\":53686,\"ĠAmp\":53687,\",in\":53688,\"lops\":53689,\"dependency\":53690,\"cedures\":53691,\"Ġ`{\":53692,\"xico\":53693,\"Collector\":53694,\"Ġhac\":53695,\"ĠDarkness\":53696,\"ffffffff\":53697,\"'=>\\\"\":53698,\"Ġpleasing\":53699,\"connector\":53700,\"zos\":53701,\"PCI\":53702,\"vac\":53703,\"ĠIncorpor\":53704,\"Ġned\":53705,\"_FACTOR\":53706,\".fb\":53707,\"Ġounce\":53708,\"_saved\":53709,\"ĠØ±\":53710,\"Ġdeeds\":53711,\"ĠDolphins\":53712,\"Ġbuen\":53713,\"ESC\":53714,\",time\":53715,\"_AUT\":53716,\"ecs\":53717,\"ĠSenators\":53718,\".outer\":53719,\"ĠSelling\":53720,\"Ġrin\":53721,\">`Ċ\":53722,\".observable\":53723,\"Ġcosting\":53724,\"DG\":53725,\"Ġwinding\":53726,\"Ġska\":53727,\"Ġcirculating\":53728,\"Ġformidable\":53729,\"ampo\":53730,\"ĠRaised\":53731,\"Ġvegetation\":53732,\"UFFIX\":53733,\"Kill\":53734,\"ptive\":53735,\"(rv\":53736,\"ĠCountries\":53737,\"ĠNaked\":53738,\"ĠJA\":53739,\"))\\\"Ċ\":53740,\"udas\":53741,\"Ġbark\":53742,\"ĉlevel\":53743,\"Ġfoes\":53744,\">Add\":53745,\"YouTube\":53746,\";t\":53747,\"NCY\":53748,\"Club\":53749,\"Ein\":53750,\"--čĊ\":53751,\"Ġconstrained\":53752,\"ETwitter\":53753,\"YG\":53754,\"Descripcion\":53755,\"UNCH\":53756,\"Ġenqueue\":53757,\"Ġdisks\":53758,\"ĠWent\":53759,\"Ġmuit\":53760,\"ĉlocation\":53761,\"Ġrevisions\":53762,\"ĠACK\":53763,\"-fixed\":53764,\"trasound\":53765,\"\\\\Test\":53766,\"StartPosition\":53767,\"-html\":53768,\"Ġproblemas\":53769,\"_INTERRUPT\":53770,\"ĠSTORE\":53771,\"æ¨¡\":53772,\"iliated\":53773,\"ĠRPM\":53774,\"[temp\":53775,\"achten\":53776,\"Ġcic\":53777,\"ĠAutomation\":53778,\"Ġhighs\":53779,\"/(?\":53780,\":')Ċ\":53781,\"spark\":53782,\"rels\":53783,\"ĉmov\":53784,\"UTES\":53785,\".Authorization\":53786,\"ĠSchneider\":53787,\"Ġcheeks\":53788,\"addresses\":53789,\"ardin\":53790,\"Ġremovable\":53791,\".BadRequest\":53792,\"icionar\":53793,\"ĠDiesel\":53794,\"than\":53795,\"/~\":53796,\"Ġdazu\":53797,\"Registro\":53798,\"ffi\":53799,\"_DLL\":53800,\"Ġnieu\":53801,\"Ġmoistur\":53802,\"-events\":53803,\"Ġthrill\":53804,\".getEntity\":53805,\"Ġtogg\":53806,\"Ġwav\":53807,\")did\":53808,\"atk\":53809,\"(substr\":53810,\"ĠInjection\":53811,\"_mb\":53812,\".Div\":53813,\"Ġendeavor\":53814,\"Ġ(Â£\":53815,\"Ġclutter\":53816,\"Ġurgency\":53817,\"Ġinstructors\":53818,\"-',\":53819,\"-standard\":53820,\"cem\":53821,\"ĉhandle\":53822,\".ft\":53823,\"Stephen\":53824,\"Ron\":53825,\"ãģĻãĤĭ\":53826,\"sci\":53827,\"ĠAtmos\":53828,\"Ġcatering\":53829,\"Ġfiat\":53830,\".Percent\":53831,\"ĠCongo\":53832,\"xdf\":53833,\".mozilla\":53834,\"Ġsehen\":53835,\".showToast\":53836,\"OOT\":53837,\"-result\":53838,\"Ìģ\":53839,\"Ġghosts\":53840,\"ĠBuen\":53841,\"ĠRider\":53842,\"ĠDoctors\":53843,\"Ġuranium\":53844,\"Ġloudly\":53845,\"Ġpoised\":53846,\"Ġfavors\":53847,\"(AP\":53848,\"LEY\":53849,\"Ġsickness\":53850,\"Ġchatte\":53851,\"Ġintegrating\":53852,\"ĠYup\":53853,\"Closure\":53854,\"ĠTales\":53855,\"Ġlinea\":53856,\"Ġeyel\":53857,\".Cryptography\":53858,\"unexpected\":53859,\"alement\":53860,\"cit\":53861,\"etAddress\":53862,\"Lead\":53863,\"xcd\":53864,\"_negative\":53865,\"_corr\":53866,\"igraph\":53867,\"-channel\":53868,\"Ġdisco\":53869,\"Seeder\":53870,\"beam\":53871,\"_dp\":53872,\"CCC\":53873,\"ĠProvided\":53874,\"ĠjsonData\":53875,\"_WH\":53876,\"FINE\":53877,\"BX\":53878,\".DataAccess\":53879,\"Ġtempted\":53880,\"Ġfined\":53881,\"isChecked\":53882,\"Ġfraudulent\":53883,\"Fri\":53884,\"Ġdomic\":53885,\"Quiz\":53886,\"ĠUnderground\":53887,\"abras\":53888,\"ĠIDisposable\":53889,\"ĠPersona\":53890,\"Ġrogue\":53891,\"ĠBey\":53892,\"getClient\":53893,\"eken\":53894,\"Ġ'''čĊ\":53895,\"Wiki\":53896,\"(HttpStatus\":53897,\"Stretch\":53898,\"ĠGest\":53899,\"Ġíķĺ\":53900,\"Ġentitlement\":53901,\"Ġdoen\":53902,\"blogs\":53903,\"Ġvitro\":53904,\"\\\"Oh\":53905,\"ĠSummon\":53906,\"ĠBackbone\":53907,\"ĠgÃ¼\":53908,\"getColumn\":53909,\"ĠWINAPI\":53910,\"ĉva\":53911,\"_REQUIRED\":53912,\".throw\":53913,\"ĠsetCurrent\":53914,\"ducted\":53915,\"(Function\":53916,\"elsinki\":53917,\"_Per\":53918,\"flies\":53919,\"Ġincompet\":53920,\"ĠjuÅ¼\":53921,\"()%\":53922,\"Ġ---Ċ\":53923,\"umas\":53924,\"ĠOlder\":53925,\"Ġdisputed\":53926,\"_REQUIRE\":53927,\".matmul\":53928,\"unken\":53929,\"ä¹ĭ\":53930,\"ãģĭãĤī\":53931,\"Ġttl\":53932,\"underscore\":53933,\"ĠPatricia\":53934,\"Ġtaper\":53935,\"Ġseiner\":53936,\"Ġsaya\":53937,\"åı°\":53938,\"ieri\":53939,\".secret\":53940,\"Ġxor\":53941,\"Ġmitochond\":53942,\"Ġcardboard\":53943,\"}`}\":53944,\"-BEGIN\":53945,\"Ġdavid\":53946,\"oulos\":53947,\"ĠPetersburg\":53948,\"Ġ\\\"\\\",čĊ\":53949,\"shelf\":53950,\"-water\":53951,\"-byte\":53952,\"ĠÐ¾Ð±ÑĬÐµÐºÑĤ\":53953,\"Ġstirring\":53954,\"ìĹ´\":53955,\"Ġcompt\":53956,\"ĠPotential\":53957,\"RAFT\":53958,\"Ġeapply\":53959,\"Ġswinging\":53960,\"Ġfec\":53961,\"ARA\":53962,\"Ġwandering\":53963,\"Ġprefers\":53964,\"Jesus\":53965,\"Ġpirate\":53966,\"ĠIsis\":53967,\".Minimum\":53968,\"ĠVale\":53969,\"_BT\":53970,\"renched\":53971,\"cors\":53972,\"(itemView\":53973,\"ĠgÃ¥\":53974,\".Contact\":53975,\"ViewChild\":53976,\"indsay\":53977,\"configs\":53978,\"Duplicate\":53979,\"âĢ¦I\":53980,\"zyst\":53981,\"(todo\":53982,\".RemoveAt\":53983,\"_DIFF\":53984,\"ĠBottle\":53985,\"Ġvolta\":53986,\"traffic\":53987,\"Lee\":53988,\"Ġì¤\":53989,\"Ġtunes\":53990,\"ĠEcuador\":53991,\"ĠYun\":53992,\"Ġunderwent\":53993,\"icom\":53994,\"Ġ''){Ċ\":53995,\"-pol\":53996,\"flammatory\":53997,\"Mutation\":53998,\"Ġrecap\":53999,\"_vert\":54000,\"OTION\":54001,\"CDATA\":54002,\"icine\":54003,\"_boundary\":54004,\"Scalars\":54005,\"ĠUltimately\":54006,\"EQ\":54007,\"metal\":54008,\"kses\":54009,\"mpl\":54010,\"Ġconten\":54011,\"Sold\":54012,\"ESSAGES\":54013,\"Ġbinder\":54014,\"Ġlinen\":54015,\"ĠMyApp\":54016,\"-meta\":54017,\"ĉraise\":54018,\"oultry\":54019,\"ĉmodule\":54020,\"æĺ¾ç¤º\":54021,\"nÃŃ\":54022,\"Ġyrs\":54023,\"Ġphysic\":54024,\"-platform\":54025,\"Ġswingers\":54026,\"(headers\":54027,\".')\":54028,\"ĠBU\":54029,\"ĠIncontri\":54030,\"Scenario\":54031,\"Amb\":54032,\"ĠpremiÃ¨re\":54033,\"/articles\":54034,\"ĠMajority\":54035,\"CLUSIVE\":54036,\"onor\":54037,\"ĠhabÃŃa\":54038,\"å·ŀ\":54039,\"Ġmidi\":54040,\"ĠLac\":54041,\".findIndex\":54042,\"ĠPainting\":54043,\".borderColor\":54044,\"*j\":54045,\"Ġcongestion\":54046,\"_DICT\":54047,\"olle\":54048,\"arnation\":54049,\"(texture\":54050,\"Ġuf\":54051,\"ĠEinstein\":54052,\"(Thread\":54053,\"Ġindoors\":54054,\"scratch\":54055,\"Ġmaken\":54056,\".START\":54057,\"ĠJudy\":54058,\"forums\":54059,\"ĊĊĊĊĊĊĊĊĊ\":54060,\"BILE\":54061,\"Ġvou\":54062,\"MYSQL\":54063,\"Ġgerne\":54064,\"ĠImportError\":54065,\"ĠSurre\":54066,\"<nav\":54067,\"ĠDiese\":54068,\"eware\":54069,\"Ġëª¨\":54070,\"implemented\":54071,\"SIGN\":54072,\"Ġ'{@\":54073,\"rze\":54074,\".minecraftforge\":54075,\".innerHeight\":54076,\"beck\":54077,\"Ġcurry\":54078,\"Ġformulas\":54079,\"agog\":54080,\"endet\":54081,\"ĠPaid\":54082,\"ĠRoberto\":54083,\"Ġunpaid\":54084,\"=headers\":54085,\".Power\":54086,\"Ġbred\":54087,\"orElse\":54088,\"oxide\":54089,\"Ġfinalize\":54090,\"setColor\":54091,\"ĠStadt\":54092,\"('\\\\\\\\\":54093,\"ismic\":54094,\"Ġhele\":54095,\".Protocol\":54096,\".Hosting\":54097,\"_Menu\":54098,\"_conditions\":54099,\"Ġpurge\":54100,\".xaml\":54101,\"bare\":54102,\"FRAME\":54103,\"Ġcubes\":54104,\"ĠJohannes\":54105,\"ocrats\":54106,\".Directory\":54107,\")a\":54108,\"?):\":54109,\"_LIBRARY\":54110,\"ĠgetToken\":54111,\"Ġechoed\":54112,\"=h\":54113,\"_soc\":54114,\"ĠEvaluate\":54115,\"Ġê¸°\":54116,\"ĠDeleted\":54117,\"Eu\":54118,\"Ġcloned\":54119,\"statistics\":54120,\".Canvas\":54121,\"Ġhacker\":54122,\"Ġgangs\":54123,\".resume\":54124,\"peace\":54125,\"ÐĴÐ²ÐµÐ´Ð¸ÑĤÐµ\":54126,\"ĠProceedings\":54127,\"ç¥\":54128,\"Ġjapan\":54129,\"Ġ?>>Ċ\":54130,\"Ġ${({\":54131,\".rectangle\":54132,\"gw\":54133,\"ĠOrientation\":54134,\"%m\":54135,\".\\\"));Ċ\":54136,\"ĠLieutenant\":54137,\".true\":54138,\"Ġelt\":54139,\"ĠDIRECTORY\":54140,\"Î¯\":54141,\".days\":54142,\"uttgart\":54143,\"Ġunderwear\":54144,\",)Ċ\":54145,\"CID\":54146,\"imeline\":54147,\"ĠBlend\":54148,\"phasis\":54149,\"Ġperse\":54150,\"Ġglitter\":54151,\"Ġuniq\":54152,\"ĠComboBox\":54153,\"ĠsessionId\":54154,\"usterity\":54155,\"IDGE\":54156,\"Ð¾Ð±Ñī\":54157,\"Ð¤\":54158,\"renders\":54159,\"_positive\":54160,\"_slots\":54161,\"broadcast\":54162,\"ĠMold\":54163,\"/Core\":54164,\"ĠBannon\":54165,\"ToolBar\":54166,\"abelle\":54167,\"_aw\":54168,\"olecule\":54169,\"Ġdeletes\":54170,\"ĠÃ¡rea\":54171,\"Ġproportional\":54172,\"MW\":54173,\"Ġwary\":54174,\"Ġintermedi\":54175,\"Ġ************************\":54176,\".STATUS\":54177,\"_tw\":54178,\"Ġaroma\":54179,\"Ġactivism\":54180,\".IsNotNull\":54181,\"uat\":54182,\"ĠpostData\":54183,\"Ġpem\":54184,\"_ctor\":54185,\"ĠRapids\":54186,\"-offsetof\":54187,\"Ġineffective\":54188,\"ĠonDestroy\":54189,\"ĠMetrics\":54190,\"ĠpaddingLeft\":54191,\"-enabled\":54192,\"ĠGoals\":54193,\"ynchronously\":54194,\"Ġyer\":54195,\"ItemAt\":54196,\"ĠMYSQL\":54197,\"ceso\":54198,\".Kind\":54199,\"tec\":54200,\"(bundle\":54201,\"Ġreferee\":54202,\".\\\";čĊ\":54203,\"Ġconex\":54204,\"Ġbikini\":54205,\"_APPLICATION\":54206,\"Ġswelling\":54207,\"Ġbeads\":54208,\"Ġbargaining\":54209,\"-----------ĊĊ\":54210,\"Ġkita\":54211,\"*ft\":54212,\"Mini\":54213,\"ĠTonight\":54214,\"Ġmanipulated\":54215,\"Mirror\":54216,\"ĠPostal\":54217,\"Ġmare\":54218,\"DW\":54219,\"Ġcompiling\":54220,\"Ġforensic\":54221,\".getView\":54222,\"eping\":54223,\"Cos\":54224,\"Ġaccredited\":54225,\"Ġobjetivo\":54226,\"caret\":54227,\"Pairs\":54228,\")>>\":54229,\"ĠseÃ±\":54230,\"Ġquotation\":54231,\"ĠBrands\":54232,\"ubi\":54233,\"ypy\":54234,\"ĠInline\":54235,\"imeters\":54236,\"Winvalid\":54237,\"ĉlink\":54238,\"ĠBelfast\":54239,\"ĠMeasurement\":54240,\"_NOTIFICATION\":54241,\"Ġroy\":54242,\"ĠCGContext\":54243,\"Ġweddings\":54244,\"URNS\":54245,\"Ġpodcasts\":54246,\"ĠSerg\":54247,\"Ġëį°ìĿ´íĦ°\":54248,\"Ġearnest\":54249,\"coverage\":54250,\"iteDatabase\":54251,\"Employees\":54252,\"ĠDemand\":54253,\"Ġcontenido\":54254,\"ĠQVector\":54255,\"\\\",\\\"\\\\\":54256,\"ĠGerald\":54257,\"()`\":54258,\"ĠgridBagConstraints\":54259,\"RESOURCE\":54260,\"ĠSag\":54261,\"abilidad\":54262,\"Ġcoerc\":54263,\"ouncements\":54264,\"ĠIsle\":54265,\".edge\":54266,\"Ġexter\":54267,\")][\":54268,\"ĠPlaylist\":54269,\"ĠBlind\":54270,\"ĠVital\":54271,\"Ġlattice\":54272,\"rated\":54273,\"dependencies\":54274,\"Ġ```\":54275,\"ĠKang\":54276,\"mach\":54277,\".fade\":54278,\"ĠGuess\":54279,\"*[\":54280,\"Natural\":54281,\".Ok\":54282,\"ĠRenaissance\":54283,\"Ġthuis\":54284,\"Ġliken\":54285,\"*h\":54286,\"\\\\',\":54287,\"-clock\":54288,\"ĠObjective\":54289,\"findOrFail\":54290,\"ĠDirty\":54291,\"Ġscand\":54292,\"ĠVARIABLE\":54293,\"Ġcomparative\":54294,\"ypad\":54295,\"(Source\":54296,\"eco\":54297,\"Ġjusqu\":54298,\"ĉapi\":54299,\"Built\":54300,\"Ġ################################\":54301,\"Ġlabeling\":54302,\"Ġheadaches\":54303,\"Ġmuff\":54304,\"ĠOrch\":54305,\"Ġhates\":54306,\"-breaking\":54307,\"/button\":54308,\"ĠBuying\":54309,\"Metric\":54310,\"Ġunspecified\":54311,\"/head\":54312,\"Ġsting\":54313,\"Ġreinforce\":54314,\"ĠComVisible\":54315,\"blink\":54316,\"ĠAhmad\":54317,\"dbg\":54318,\"_lbl\":54319,\"Ġhtt\":54320,\"ìĽĲ\":54321,\"ropolis\":54322,\"Ġ((__\":54323,\"Ġperme\":54324,\"Ġapparel\":54325,\"STREAM\":54326,\"chts\":54327,\"Ġseins\":54328,\"fillType\":54329,\"ì£¼\":54330,\"ROWSER\":54331,\"umping\":54332,\"ĠNigerian\":54333,\"âĢĶis\":54334,\"_logic\":54335,\".Ordinal\":54336,\"lost\":54337,\"/usr\":54338,\"Af\":54339,\"ĠIterate\":54340,\"ibs\":54341,\"aal\":54342,\"Ġsymmetric\":54343,\",input\":54344,\"ĠPLL\":54345,\"uzione\":54346,\"captcha\":54347,\"ĠTale\":54348,\"Expired\":54349,\"ĠObjectMapper\":54350,\"cido\":54351,\".getNext\":54352,\"Ġmenjadi\":54353,\":selected\":54354,\"Ġrien\":54355,\"_sender\":54356,\"Pwd\":54357,\"ĠFlickr\":54358,\".Java\":54359,\"_vote\":54360,\"_Mode\":54361,\".${\":54362,\"Ġfucks\":54363,\"ĠAlibaba\":54364,\"Ġinsider\":54365,\"acimiento\":54366,\"ĠfranÃ§ais\":54367,\"JSONException\":54368,\"ĠJwt\":54369,\"Mit\":54370,\"leich\":54371,\"Ġpractitioner\":54372,\"/source\":54373,\"Ġogni\":54374,\"Ġphilosopher\":54375,\"SnackBar\":54376,\"stellung\":54377,\"(bitmap\":54378,\"Ġasteroid\":54379,\"Ġmaple\":54380,\"ucha\":54381,\"itemId\":54382,\"Ġsteht\":54383,\"Ordered\":54384,\"enburg\":54385,\"/token\":54386,\"éħį\":54387,\"ĠWebb\":54388,\"owanie\":54389,\"ĠWAIT\":54390,\"ĠHDR\":54391,\"ĠEva\":54392,\"ATTLE\":54393,\"(master\":54394,\"Ġers\":54395,\"aload\":54396,\"Ġsmtp\":54397,\"uniq\":54398,\"Ġguit\":54399,\"ĠRafael\":54400,\"\\\"in\":54401,\"(UI\":54402,\"(LayoutInflater\":54403,\"oran\":54404,\"Ġservi\":54405,\"nez\":54406,\"ĠTorres\":54407,\".MiddleCenter\":54408,\"Ġmoll\":54409,\"ĠTextAlign\":54410,\"_uploaded\":54411,\"ĠMehr\":54412,\"Ġhomo\":54413,\"-linked\":54414,\"unner\":54415,\"_lengths\":54416,\"Ġdiffuse\":54417,\"ĠAutomotive\":54418,\"Years\":54419,\"Ġlien\":54420,\"[counter\":54421,\"klass\":54422,\"ÑģÑĤÐ¸\":54423,\".Engine\":54424,\"Ġmeny\":54425,\"ultz\":54426,\"Ġinfantry\":54427,\"Via\":54428,\"sects\":54429,\".dashboard\":54430,\"Ġsponsorship\":54431,\".Modified\":54432,\";-\":54433,\"ĠVelocity\":54434,\"tracted\":54435,\"(metadata\":54436,\"Ġplague\":54437,\"NSUserDefaults\":54438,\"approval\":54439,\"probably\":54440,\"-six\":54441,\"_VIS\":54442,\":'',Ċ\":54443,\".enc\":54444,\".Messages\":54445,\"_PROGRESS\":54446,\"Ġnecklace\":54447,\"ĠTemporary\":54448,\"_markup\":54449,\"ĠFunctional\":54450,\"ĠJi\":54451,\"ĠtestCase\":54452,\"Ġ();čĊ\":54453,\"_Cell\":54454,\"ĠResidential\":54455,\"ĠRailway\":54456,\"((&___\":54457,\"Ġdefaultstate\":54458,\"Ġeinmal\":54459,\".fac\":54460,\"*f\":54461,\"Ġpicnic\":54462,\"(eval\":54463,\"Ġfurnace\":54464,\"association\":54465,\"{!!\":54466,\"ĠCompile\":54467,\"xeb\":54468,\"Eval\":54469,\"Ģìŀ¥\":54470,\"(cal\":54471,\"Ġmarketers\":54472,\"_helpers\":54473,\"localctx\":54474,\"Ġyogurt\":54475,\"Ġvita\":54476,\",length\":54477,\"ĠInputDecoration\":54478,\"Ġintervene\":54479,\"Ġcomputational\":54480,\"Denied\":54481,\"/environment\":54482,\"iid\":54483,\".Box\":54484,\"-Time\":54485,\"Ġexcuses\":54486,\"transpose\":54487,\"Ġoutrageous\":54488,\"(Server\":54489,\"dims\":54490,\"\\\"]);čĊ\":54491,\"Ĳľ\":54492,\"ĠEisen\":54493,\"(Op\":54494,\"Ġhashlib\":54495,\"(li\":54496,\"~,\":54497,\"Ä±nd\":54498,\"ĠSphere\":54499,\"ĠBella\":54500,\"-transition\":54501,\".readString\":54502,\"heard\":54503,\"ĠZucker\":54504,\"Ġwann\":54505,\"Ġjailed\":54506,\"ĠTalent\":54507,\"ophobia\":54508,\"Â¶\":54509,\"Ġoperands\":54510,\"Someone\":54511,\"ĠLibraries\":54512,\"primaryKey\":54513,\"×ª\":54514,\"Ur\":54515,\"Ġmates\":54516,\"ĠÑĪ\":54517,\"-duty\":54518,\"pour\":54519,\"<Entity\":54520,\">You\":54521,\"Creators\":54522,\"WithName\":54523,\"'int\":54524,\"ĠRational\":54525,\"=B\":54526,\".AutoField\":54527,\"ĠFounder\":54528,\"ĠMegan\":54529,\".imageView\":54530,\"bows\":54531,\"ĠwithRouter\":54532,\"Ġliberation\":54533,\"Ġforam\":54534,\"Ġcitas\":54535,\"ochen\":54536,\".swap\":54537,\"Ġ..Ċ\":54538,\".cvtColor\":54539,\"ĠAware\":54540,\"Ġqueer\":54541,\"å¤ĦçĲĨ\":54542,\"ĠInfinite\":54543,\"/string\":54544,\"Ġblended\":54545,\"-Col\":54546,\"Ġwys\":54547,\"Ġsicher\":54548,\".LastName\":54549,\"_water\":54550,\"_Rem\":54551,\"Ġarthritis\":54552,\".APP\":54553,\"ĠExpansion\":54554,\"xdb\":54555,\"estro\":54556,\"favicon\":54557,\"Verified\":54558,\"Ġdeliveries\":54559,\"arket\":54560,\"ĠgetImage\":54561,\"ĠJPEG\":54562,\"ĠTRI\":54563,\"ĠElev\":54564,\"fusion\":54565,\"Ġjpeg\":54566,\"collision\":54567,\"Ġdescend\":54568,\".fore\":54569,\"ĠLogs\":54570,\"Ġpolicing\":54571,\"untas\":54572,\".hostname\":54573,\"accepted\":54574,\"à¥ĭ\":54575,\"ĠWendy\":54576,\".readFile\":54577,\"ĠSantiago\":54578,\"ĠGol\":54579,\"ribbon\":54580,\"stration\":54581,\"Ġpudd\":54582,\"Ġ//_\":54583,\"isLoading\":54584,\"_SERIAL\":54585,\"Ġinstantiated\":54586,\"Ġpods\":54587,\"Ġwarrants\":54588,\"Ġadmitting\":54589,\"ĉconnection\":54590,\"_buffers\":54591,\"ĠInch\":54592,\"ĠZERO\":54593,\"wert\":54594,\"ĠClan\":54595,\"ĉil\":54596,\"(shader\":54597,\"Ġpilgr\":54598,\"ĠåĬ\":54599,\"Dst\":54600,\"_barang\":54601,\":'#\":54602,\"ButtonText\":54603,\"tere\":54604,\"_amt\":54605,\"ĠForever\":54606,\".LinkedList\":54607,\"uards\":54608,\"urous\":54609,\"ĠSender\":54610,\"variants\":54611,\"_magic\":54612,\"Ġaccommodations\":54613,\"apGestureRecognizer\":54614,\"Prompt\":54615,\"Ġ?>čĊčĊ\":54616,\"Ġreproduced\":54617,\"_precision\":54618,\"Ġrut\":54619,\"monds\":54620,\";x\":54621,\"Ġ},čĊčĊ\":54622,\"çĶ»\":54623,\"ĠVita\":54624,\"Ġproposes\":54625,\"ĠPartition\":54626,\"HING\":54627,\"Ġ#{@\":54628,\"Ġessa\":54629,\"(bar\":54630,\"ĠZelda\":54631,\".catch\":54632,\"_except\":54633,\"Ġoverwhelmingly\":54634,\"ĉTEST\":54635,\"_CONTACT\":54636,\"__;\":54637,\"ĠSemi\":54638,\"Ġtrabalho\":54639,\"radouro\":54640,\"_squared\":54641,\"à¶\":54642,\"%D\":54643,\"Ġprat\":54644,\"itez\":54645,\"(elements\":54646,\"Plant\":54647,\"agua\":54648,\"Ġihrer\":54649,\".Col\":54650,\"ĠMcN\":54651,\"ĠCorey\":54652,\"ONEY\":54653,\"Cele\":54654,\"rement\":54655,\"Ġmalt\":54656,\"ĠLuk\":54657,\"ç»Ł\":54658,\"PMENT\":54659,\"Ġanalyzer\":54660,\"ĠHank\":54661,\"_unicode\":54662,\"Ġburial\":54663,\"ĠCeltic\":54664,\"EFF\":54665,\"Lot\":54666,\"won\":54667,\"ĠNude\":54668,\"ĠNate\":54669,\"ĠSinger\":54670,\"ĠSITE\":54671,\"(bit\":54672,\"biz\":54673,\"Ġdeton\":54674,\"README\":54675,\":Add\":54676,\"ĠHolding\":54677,\"{return\":54678,\"ncias\":54679,\">čĊčĊčĊ\":54680,\"ruptions\":54681,\".react\":54682,\"ursal\":54683,\"à¸Ľ\":54684,\"ĠDONE\":54685,\"ivated\":54686,\".notes\":54687,\"Ġstripes\":54688,\"ripp\":54689,\"iran\":54690,\"Ġslab\":54691,\"ĠBurning\":54692,\"(ent\":54693,\".sec\":54694,\"GU\":54695,\"_gold\":54696,\"])).\":54697,\"eliness\":54698,\"Ð¾Ð±ÑĢÐ°Ð\":54699,\"ĠâĪĢ\":54700,\"Ġcosmic\":54701,\"']):Ċ\":54702,\"cciones\":54703,\"cision\":54704,\"comparison\":54705,\"ĠEvangel\":54706,\"ĠShirt\":54707,\"lagen\":54708,\"ĠiÅŁ\":54709,\"Ġfiller\":54710,\".prod\":54711,\"Ġĉĉĉĉĉ\":54712,\"ĠÑĦÑĥÐ½ÐºÑĨÐ¸\":54713,\"ĠZeroConstructor\":54714,\"AtA\":54715,\"])čĊčĊ\":54716,\"Ġconstructors\":54717,\"_SHARED\":54718,\"ĉdevice\":54719,\"ĠAdvice\":54720,\":@\\\"%@\":54721,\">}'\":54722,\".IsEmpty\":54723,\"Ġints\":54724,\"mostat\":54725,\"ĠSignup\":54726,\"gear\":54727,\"(paths\":54728,\",{\\\"\":54729,\"/Documents\":54730,\"<Category\":54731,\"UEST\":54732,\"ĠgetDescription\":54733,\"Ġ\\\"{\\\\\\\"\":54734,\"ĠJoey\":54735,\"oden\":54736,\"_guess\":54737,\"EUR\":54738,\"Ġherr\":54739,\"Ġsedan\":54740,\"Ġreacted\":54741,\"_clone\":54742,\"ĠRevel\":54743,\"Ġforb\":54744,\"Remaining\":54745,\"\\\\Services\":54746,\"Ġavis\":54747,\"batim\":54748,\"zept\":54749,\"ĠDBNull\":54750,\"Connections\":54751,\"Ġdisponible\":54752,\"phin\":54753,\"Ġstu\":54754,\"Ġscholarships\":54755,\"-sharing\":54756,\"forming\":54757,\"ĠBri\":54758,\"VarInsn\":54759,\"/session\":54760,\"Ġambiguous\":54761,\"Ġapresent\":54762,\"_rd\":54763,\"sites\":54764,\"/action\":54765,\"tractor\":54766,\"Ġdilemma\":54767,\"ĠSX\":54768,\"]-->Ċ\":54769,\"ĠJacket\":54770,\"RATION\":54771,\".getSelectedItem\":54772,\"-init\":54773,\"ĠRegisters\":54774,\"_sep\":54775,\"ĠToolkit\":54776,\".dict\":54777,\"Ġxlabel\":54778,\"\\\\Table\":54779,\"toc\":54780,\"_combo\":54781,\"ĠCompact\":54782,\"Ġrugged\":54783,\"à¥ĩà¤\":54784,\"-management\":54785,\"')}}\\\">Ċ\":54786,\"ĠStamp\":54787,\"Ä±l\":54788,\"rox\":54789,\"Ġlandscapes\":54790,\"_NOTE\":54791,\"monary\":54792,\"cab\":54793,\"Ġmoet\":54794,\"xaf\":54795,\"rcode\":54796,\"-cli\":54797,\"_gate\":54798,\"[event\":54799,\"SPORT\":54800,\"gia\":54801,\"ĠSUPER\":54802,\"/Login\":54803,\"_shutdown\":54804,\"interrupt\":54805,\"Ġpretending\":54806,\"Ġfringe\":54807,\"ĠReds\":54808,\"ĠCUDA\":54809,\"ĠUNIX\":54810,\"vit\":54811,\"Ġbrig\":54812,\"drv\":54813,\"ĠConnector\":54814,\"Therefore\":54815,\"Ġlia\":54816,\"Detection\":54817,\"_actor\":54818,\"Ġtempfile\":54819,\"Ġeccentric\":54820,\"-role\":54821,\"Ġpadx\":54822,\"dent\":54823,\"Western\":54824,\"Ġê·¸\":54825,\"ĠApplicationRecord\":54826,\"Ġcampaigning\":54827,\"_runner\":54828,\"ĠCivic\":54829,\"aleigh\":54830,\"Ġdirekt\":54831,\".sul\":54832,\"ĠĠĉĉĉ\":54833,\"anten\":54834,\"Ġissuer\":54835,\"Ġassertions\":54836,\"(orig\":54837,\"ATIO\":54838,\"Ġleaned\":54839,\"Ã¤s\":54840,\".DTO\":54841,\"explode\":54842,\".Observable\":54843,\"Ġstaggering\":54844,\"Ġkidnapped\":54845,\"Ġprogrammers\":54846,\"ĠInnov\":54847,\".parameter\":54848,\"Ġdomination\":54849,\"Ġskeptic\":54850,\"Ġæĺ¯\":54851,\"Ġavoids\":54852,\".Verify\":54853,\"ubby\":54854,\"ĠASN\":54855,\"Ġformato\":54856,\"ĠBeatles\":54857,\"_brand\":54858,\"Ġinset\":54859,\"youtu\":54860,\"Ġtoc\":54861,\"-final\":54862,\"Showing\":54863,\"ĠDoub\":54864,\"ĠMesa\":54865,\"Adj\":54866,\"_medium\":54867,\"Creates\":54868,\"(endpoint\":54869,\"ĉUP\":54870,\"bbie\":54871,\"Ġstalk\":54872,\".databind\":54873,\".Scan\":54874,\"agents\":54875,\"$,\":54876,\"individual\":54877,\"+)/\":54878,\"ĉvm\":54879,\"(notification\":54880,\"Ġinex\":54881,\"ĠClassification\":54882,\"reno\":54883,\"Ġolig\":54884,\"-rated\":54885,\"Ġformulation\":54886,\"',{\":54887,\"Ġacept\":54888,\"_unpack\":54889,\"_CA\":54890,\".Pow\":54891,\"ĉim\":54892,\"Ġaluminium\":54893,\"ANO\":54894,\"Ġxn\":54895,\"ĠcÃ³mo\":54896,\"ĠIngredient\":54897,\"Ġseizures\":54898,\"åħ±\":54899,\"ificador\":54900,\"Ġsiguiente\":54901,\"ĠInfragistics\":54902,\"Ġduplicated\":54903,\"ĠDee\":54904,\"ĠnÃ¸\":54905,\"ĠACCEPT\":54906,\"(crate\":54907,\"Ð¸ÑĤÐµÐ»ÑĮ\":54908,\"-less\":54909,\"Ġinfinity\":54910,\"Analyzer\":54911,\"-Day\":54912,\"ritt\":54913,\"(cin\":54914,\"ĠGy\":54915,\"Ġmultiplied\":54916,\"uchi\":54917,\"ĠBaldwin\":54918,\"/ip\":54919,\"Ġshortcuts\":54920,\".ADD\":54921,\"Ġvigor\":54922,\"_instruction\":54923,\"(;\":54924,\"_eta\":54925,\"è¿ŀ\":54926,\"utorials\":54927,\"Ġboosting\":54928,\"bv\":54929,\"Ġacknowledges\":54930,\"Listening\":54931,\"FAQ\":54932,\";b\":54933,\"((-\":54934,\"Ġarchitects\":54935,\"Ġzwe\":54936,\"Ġpuls\":54937,\"ĠgetCount\":54938,\"verbs\":54939,\"ãĢľ\":54940,\"(Collection\":54941,\"kre\":54942,\"Ġjurisdictions\":54943,\"_bridge\":54944,\"ĠCrack\":54945,\"ĠDifficulty\":54946,\"KO\":54947,\"Reservation\":54948,\"_requires\":54949,\"Tour\":54950,\"ãģĹãģŁ\":54951,\".setCurrent\":54952,\"Ġky\":54953,\"ĠAlbany\":54954,\"Ġè§\":54955,\"ller\":54956,\"agna\":54957,\"workers\":54958,\".blank\":54959,\"ĠPrayer\":54960,\"MIC\":54961,\"Ġresilience\":54962,\"TeX\":54963,\"ĠLanguages\":54964,\"study\":54965,\"ĉcurr\":54966,\"Ġenzymes\":54967,\"Slug\":54968,\"ĠíĮĮ\":54969,\"stral\":54970,\"Ġtumors\":54971,\"Ġsegunda\":54972,\"='{\":54973,\"instruction\":54974,\"ĠLisp\":54975,\"/info\":54976,\"Ġ\\\"{$\":54977,\",:),\":54978,\"Ġgv\":54979,\"(ErrorMessage\":54980,\"Ġ'=\":54981,\"}-${\":54982,\".Documents\":54983,\"\\\"Well\":54984,\"Ġreminiscent\":54985,\"Ġgaz\":54986,\"iropr\":54987,\"ehr\":54988,\"Ġsuppressed\":54989,\"ersh\":54990,\".scrollTo\":54991,\"Ġcadena\":54992,\"ĠgameState\":54993,\"ÃŃm\":54994,\"(conv\":54995,\"ĠTomorrow\":54996,\"ĠCCT\":54997,\"Mongo\":54998,\"ulg\":54999,\".Camera\":55000,\".handlers\":55001,\"mph\":55002,\"Ġstk\":55003,\"Ġgenetics\":55004,\"ACING\":55005,\"Trivia\":55006,\"ĠBam\":55007,\"(marker\":55008,\".Stretch\":55009,\"ĠSunni\":55010,\"ĠBetty\":55011,\".tolist\":55012,\"unlikely\":55013,\".Rectangle\":55014,\"obsolete\":55015,\"ILON\":55016,\"innerText\":55017,\"embourg\":55018,\"aN\":55019,\"ĠVehicles\":55020,\"unlock\":55021,\":utf\":55022,\"nob\":55023,\"ĠSeeing\":55024,\"ĠNEVER\":55025,\"Ġtls\":55026,\"Ġfilles\":55027,\"Ġbenefited\":55028,\"ĠClint\":55029,\"*/),\":55030,\".fold\":55031,\"Ġposible\":55032,\"ADED\":55033,\"thouse\":55034,\".DAL\":55035,\"ĠOdd\":55036,\"rokes\":55037,\"ĠSunny\":55038,\"ĠPartialEq\":55039,\"_Buffer\":55040,\"ĠLevi\":55041,\"longrightarrow\":55042,\"eldon\":55043,\"gages\":55044,\"_warn\":55045,\".CreateTable\":55046,\"ĠDip\":55047,\"_questions\":55048,\".logic\":55049,\"Ġ#\\\"\":55050,\"={()=>\":55051,\"Ġtep\":55052,\"Ġjuicy\":55053,\"ìĤ¬\":55054,\"enko\":55055,\"ialect\":55056,\"Ùī\":55057,\"Ġonboard\":55058,\"Ġæı\":55059,\"ĉrt\":55060,\"_UTF\":55061,\"ĠQAction\":55062,\"âĢŀ\":55063,\"(Component\":55064,\"(audio\":55065,\".hit\":55066,\"gte\":55067,\"Ġprogrammed\":55068,\"stateParams\":55069,\"Ġpolyester\":55070,\"fires\":55071,\"byss\":55072,\"]=(\":55073,\"_quality\":55074,\"OfDay\":55075,\"ĠFairy\":55076,\"Ġyelled\":55077,\"opl\":55078,\"(userName\":55079,\"ĠDifference\":55080,\"Ġevaluations\":55081,\"iffany\":55082,\"Ġcyclists\":55083,\"Ġcidade\":55084,\"Ġtextbook\":55085,\"Ġprofiling\":55086,\"__),\":55087,\"dea\":55088,\".activate\":55089,\"Ġindications\":55090,\"Ðķ\":55091,\"TouchUpInside\":55092,\"Ġinvaluable\":55093,\"ĠMASK\":55094,\"Ġcontend\":55095,\"Freq\":55096,\"Ġrecruits\":55097,\"(interval\":55098,\"ĠUserProfile\":55099,\"Ġ'./../\":55100,\"edu\":55101,\"_Callback\":55102,\"Ġanalogy\":55103,\"ĠTrophy\":55104,\"apphire\":55105,\"Videos\":55106,\"ĠCher\":55107,\"ĠHav\":55108,\"âĢ¦\\\"\":55109,\".validator\":55110,\"gfx\":55111,\"ĠUObject\":55112,\"classnames\":55113,\"triangle\":55114,\"ĠEncoder\":55115,\".spy\":55116,\"Ġpredators\":55117,\"=status\":55118,\"-safe\":55119,\":\\\",Ċ\":55120,\"ĠIncluding\":55121,\"Ġ{};čĊ\":55122,\"*cos\":55123,\"Ġendured\":55124,\".sulake\":55125,\"Ġnursery\":55126,\"Ġfragrance\":55127,\"Ġrebuilding\":55128,\"Ġnth\":55129,\"ĠFraser\":55130,\".setDate\":55131,\"ĠVince\":55132,\"_REST\":55133,\"Ġventilation\":55134,\"æµ·\":55135,\"cribes\":55136,\".asm\":55137,\"lpVtbl\":55138,\"ĠAbe\":55139,\"uisine\":55140,\",array\":55141,\"ĉclassName\":55142,\"errals\":55143,\"Ġ'ĊĊ\":55144,\"Checkout\":55145,\"Ġsolicit\":55146,\"Aux\":55147,\"_capture\":55148,\"Ġribs\":55149,\"ragon\":55150,\"viol\":55151,\"topics\":55152,\"FunctionFlags\":55153,\"ĠMarty\":55154,\"bike\":55155,\"ĠTucker\":55156,\"(kernel\":55157,\"ĠOps\":55158,\"CloseOperation\":55159,\"/demo\":55160,\"ilda\":55161,\"ĠlÃŃnea\":55162,\"APPING\":55163,\"Ġsuites\":55164,\".visitVarInsn\":55165,\"urus\":55166,\"ĠMinute\":55167,\"(manager\":55168,\"Ġbutterfly\":55169,\"Ġapare\":55170,\"Ġwolves\":55171,\"JWT\":55172,\"ĠSalon\":55173,\"ĉdelay\":55174,\"-eslint\":55175,\"isations\":55176,\".rpc\":55177,\")|(\":55178,\"ĠSnapchat\":55179,\"/mm\":55180,\"MN\":55181,\"ceries\":55182,\".textAlignment\":55183,\"ĠFrankfurt\":55184,\"Ġado\":55185,\"(newValue\":55186,\"(access\":55187,\"(Expression\":55188,\"ĠSignIn\":55189,\"ĠHaiti\":55190,\"_tp\":55191,\".setParameter\":55192,\"Minute\":55193,\"Ġmanuals\":55194,\"ricanes\":55195,\"ĠPTR\":55196,\"ĠOuter\":55197,\"Ġgetline\":55198,\"ocations\":55199,\"_CD\":55200,\"ĠLyon\":55201,\"/gui\":55202,\"_live\":55203,\"idan\":55204,\".geom\":55205,\"ĠborderBottom\":55206,\"imuth\":55207,\"_checkpoint\":55208,\"Ġmeu\":55209,\"ĠIrving\":55210,\"Ġpeuvent\":55211,\"(MAX\":55212,\"ĠARCH\":55213,\"Ġpov\":55214,\".sourceforge\":55215,\"Ġjamais\":55216,\"Ġark\":55217,\"ĠBaghdad\":55218,\"ĠCLEAR\":55219,\"MenuBar\":55220,\"Ġtrois\":55221,\"CHEDULE\":55222,\"Ġ#čĊ\":55223,\"(Call\":55224,\"$order\":55225,\"(Material\":55226,\"Ġencontrado\":55227,\"$list\":55228,\"ĠMETHODS\":55229,\".beginTransaction\":55230,\"_MAG\":55231,\"StyleSheet\":55232,\"Ġmajors\":55233,\"Ġindefinitely\":55234,\"cleanup\":55235,\"Ġhomeland\":55236,\"(dto\":55237,\"Dates\":55238,\"Presentation\":55239,\"ĠDK\":55240,\"={`/\":55241,\"ĉKey\":55242,\"(Block\":55243,\"_checkbox\":55244,\"needs\":55245,\"ĠonComplete\":55246,\"rico\":55247,\"Ġgleich\":55248,\"Ġxm\":55249,\"OOD\":55250,\"Better\":55251,\"ĠSQLITE\":55252,\".Book\":55253,\"xad\":55254,\"ĠGone\":55255,\"ĉdp\":55256,\"Ġdevotion\":55257,\"Ġstm\":55258,\"Ġobsess\":55259,\"ĠBackend\":55260,\"Queries\":55261,\"Ik\":55262,\"//****************************************************************\":55263,\"Ġdividends\":55264,\".parentElement\":55265,\"}\\\")ĊĊ\":55266,\"ĠMaterialPageRoute\":55267,\":num\":55268,\"Ġexplic\":55269,\"ĠOL\":55270,\"least\":55271,\"Oops\":55272,\"imentos\":55273,\"Ġinsurers\":55274,\"Ġheroic\":55275,\"ĉfields\":55276,\".imgur\":55277,\".btnCancel\":55278,\"ĠDetective\":55279,\"(sm\":55280,\"ĠMutableLiveData\":55281,\".lab\":55282,\"(([\":55283,\"Ġhairst\":55284,\"ĠTransactions\":55285,\"å¼Ģå§ĭ\":55286,\"ĠstdClass\":55287,\"uento\":55288,\"GIS\":55289,\"_cod\":55290,\"Instructions\":55291,\"Calls\":55292,\"PointerType\":55293,\"ĠRw\":55294,\"Ġassortment\":55295,\"ĠDIG\":55296,\"+r\":55297,\"_CERT\":55298,\"Ġinstability\":55299,\"Ġvib\":55300,\"onas\":55301,\"Ġroku\":55302,\"apellido\":55303,\"Ġangl\":55304,\"preneur\":55305,\"Ġfluids\":55306,\"isease\":55307,\"Ġdeed\":55308,\"quist\":55309,\"_CONSTANT\":55310,\"Ġequilibrium\":55311,\"_delegate\":55312,\"ĠQuantum\":55313,\"rei\":55314,\"Capabilities\":55315,\"rectangle\":55316,\"?><\":55317,\"alien\":55318,\"ĠJug\":55319,\"DNA\":55320,\"Tickets\":55321,\"Occurs\":55322,\"ĠHawk\":55323,\".setHorizontalGroup\":55324,\"\\\\Collection\":55325,\"ffiti\":55326,\"Ġrearr\":55327,\".setVerticalGroup\":55328,\"Ġcavity\":55329,\"Ġadulte\":55330,\"Facade\":55331,\"-wh\":55332,\"ĠLOL\":55333,\"Ø°\":55334,\"Ġgrandparents\":55335,\"Swift\":55336,\"ĉwx\":55337,\"æīĢæľī\":55338,\"ifen\":55339,\"ffset\":55340,\"Beyond\":55341,\"//}ĊĊ\":55342,\"Ġwager\":55343,\"Ġbury\":55344,\"Ġcommence\":55345,\"registro\":55346,\"scient\":55347,\"ĠPercent\":55348,\"ĠÐ´Ð¾Ð»Ð¶\":55349,\"(identifier\":55350,\".setModel\":55351,\"Ġseldom\":55352,\"nton\":55353,\"Ġappliance\":55354,\"amus\":55355,\"rysler\":55356,\"Ġpanties\":55357,\"enguins\":55358,\"Ġmimic\":55359,\"ĠonChanged\":55360,\"Ġalcoholic\":55361,\".reloadData\":55362,\"Charge\":55363,\"ĠFax\":55364,\"ĠjScrollPane\":55365,\"Empresa\":55366,\"Ġshattered\":55367,\"xba\":55368,\"Fonts\":55369,\"?s\":55370,\"Ġpostseason\":55371,\"retain\":55372,\"_rates\":55373,\"ĠrequestCode\":55374,\".todo\":55375,\"Â´s\":55376,\"CHK\":55377,\"ĠKeeping\":55378,\"engeance\":55379,\"Ġvscode\":55380,\"IPPING\":55381,\"DefaultCloseOperation\":55382,\"_raise\":55383,\"ĠOculus\":55384,\"ograms\":55385,\"raj\":55386,\"pci\":55387,\"Ġcorrosion\":55388,\".handleSubmit\":55389,\"Accessible\":55390,\"ĠPiano\":55391,\"little\":55392,\"ACL\":55393,\"Äĩe\":55394,\".unwrap\":55395,\"ĠConvers\":55396,\"ĠLeben\":55397,\"ioneer\":55398,\"ĠMerchant\":55399,\"ĠJorge\":55400,\"Ġembracing\":55401,\"Ġventa\":55402,\"Ã¡st\":55403,\"Ġviene\":55404,\"<QString\":55405,\"Ġexplosions\":55406,\"Ġdisturbed\":55407,\".\\\"<\":55408,\"memo\":55409,\"ĠAboriginal\":55410,\"Ġcompleto\":55411,\"TexParameter\":55412,\"Ġuomini\":55413,\"(agent\":55414,\"ÑĥÑĢ\":55415,\"ĠWholesale\":55416,\"/am\":55417,\"ĠBookmark\":55418,\"dragon\":55419,\"Ġglove\":55420,\"Ġ\\\"\\\"));Ċ\":55421,\"ivariate\":55422,\"nowrap\":55423,\"InChildren\":55424,\".Br\":55425,\"Ġconexion\":55426,\"Ġbackbone\":55427,\"Ġeclipse\":55428,\"Ġpersecution\":55429,\"':ĊĊ\":55430,\"/link\":55431,\"ĠPero\":55432,\"andas\":55433,\"ĠTek\":55434,\".\\\");\":55435,\"-analysis\":55436,\"Ġerad\":55437,\"Marshal\":55438,\"Ġanchors\":55439,\"oger\":55440,\"Ġconvergence\":55441,\"sticky\":55442,\"Ġnaveg\":55443,\"intern\":55444,\"_DESCRIPTOR\":55445,\"ĠConsultant\":55446,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":55447,\"ĠAuch\":55448,\"Ġerre\":55449,\"ÅĽli\":55450,\"ĠHorizon\":55451,\"cola\":55452,\"Installation\":55453,\"hotmail\":55454,\"CNN\":55455,\".Collectors\":55456,\"chs\":55457,\"(trace\":55458,\"ĠEncrypt\":55459,\"Ġ------\":55460,\"ĠBaseController\":55461,\"Ġagua\":55462,\"Ġreactive\":55463,\"idl\":55464,\"ĠclassNames\":55465,\"ĉSession\":55466,\"ĠDodgers\":55467,\"Had\":55468,\"_lv\":55469,\"IsValid\":55470,\"ĠHELP\":55471,\"utto\":55472,\"ĠVerification\":55473,\"Ġgetenv\":55474,\"_pa\":55475,\".bmp\":55476,\":f\":55477,\"ĠLouise\":55478,\"(';\":55479,\"/socket\":55480,\"Granted\":55481,\".calendar\":55482,\"(IP\":55483,\"ĠPX\":55484,\".Room\":55485,\"Ġprogramm\":55486,\"ensi\":55487,\"Ġtablespoons\":55488,\"Ġleve\":55489,\"Ġmostr\":55490,\".tipo\":55491,\"/an\":55492,\"(di\":55493,\"Ġbiod\":55494,\"ĠdbContext\":55495,\"ĠJSX\":55496,\"ĉresults\":55497,\".END\":55498,\"hte\":55499,\"lify\":55500,\"Precision\":55501,\"èĬĤ\":55502,\"ARSER\":55503,\")didReceiveMemoryWarning\":55504,\"attempt\":55505,\"ISP\":55506,\"&a\":55507,\"_POP\":55508,\"ĠTac\":55509,\"ĠpreparedStatement\":55510,\"ĠÐ·Ð°Ð¿Ð¸Ñģ\":55511,\"Ġowing\":55512,\",start\":55513,\"Ġreviewer\":55514,\"Ġrst\":55515,\"ĠpropTypes\":55516,\"Ġrocky\":55517,\"_locale\":55518,\"ĠStrategies\":55519,\"ĠWeber\":55520,\".Cascade\":55521,\"_equalTo\":55522,\"Ġcosas\":55523,\"ĠDeletes\":55524,\"ĠMaxim\":55525,\"Ġshrimp\":55526,\"retrieve\":55527,\".Include\":55528,\"IGIN\":55529,\"ĠOE\":55530,\"]);čĊčĊ\":55531,\".enumer\":55532,\"Ġcoef\":55533,\"_Null\":55534,\"Ra\":55535,\"tyard\":55536,\"ĠShawn\":55537,\"keepers\":55538,\"Ġqq\":55539,\"_sb\":55540,\"omens\":55541,\"ĠExecutes\":55542,\"#\\\"\":55543,\"TTY\":55544,\"ĠValueType\":55545,\");*/Ċ\":55546,\"ĠAbsolutely\":55547,\"ĠTottenham\":55548,\"/art\":55549,\"Ġblessings\":55550,\"Ġswiftly\":55551,\"buster\":55552,\"Ġavid\":55553,\"COMM\":55554,\",temp\":55555,\"Ġ}?>Ċ\":55556,\"-growing\":55557,\"Ġdeepcopy\":55558,\"Ack\":55559,\"eggies\":55560,\"Ġ__(\\\"\":55561,\"Ġnoir\":55562,\"terrorism\":55563,\"Ġanthem\":55564,\"agency\":55565,\"_PACKAGE\":55566,\"ĠClosure\":55567,\".registry\":55568,\"Ġmammals\":55569,\"<L\":55570,\"UICollectionView\":55571,\"ĠLEDs\":55572,\"Ġvolley\":55573,\"(Buffer\":55574,\"_NATIVE\":55575,\"libc\":55576,\"implode\":55577,\"ScrollBar\":55578,\"ĠMarion\":55579,\".Contracts\":55580,\"_At\":55581,\"ĠWeinstein\":55582,\"compareTo\":55583,\"ĠHose\":55584,\"enity\":55585,\".createQuery\":55586,\"_router\":55587,\"Ġstimuli\":55588,\"Ġ++)\":55589,\"ĠChamp\":55590,\"ĠBayern\":55591,\"assa\":55592,\".va\":55593,\"Ġdistributors\":55594,\"Ġfileprivate\":55595,\"Ġdeparted\":55596,\"cccc\":55597,\"@click\":55598,\"ĠLunch\":55599,\">L\":55600,\"Ġbluetooth\":55601,\".Deep\":55602,\"-standing\":55603,\"Ã¡cil\":55604,\"Ġrooft\":55605,\"ĠPaths\":55606,\"_iterations\":55607,\"InvalidArgumentException\":55608,\".spi\":55609,\"ĠUIAlertAction\":55610,\"uye\":55611,\"signin\":55612,\".priority\":55613,\"ĠEssays\":55614,\"='{$\":55615,\"Ġè¿ĶåĽŀ\":55616,\"_signed\":55617,\".persist\":55618,\"Ġredesign\":55619,\"ToLower\":55620,\"ĠNewman\":55621,\"=start\":55622,\"ĠIsraelis\":55623,\"asiswa\":55624,\"Speech\":55625,\"Ġnumeros\":55626,\"handlers\":55627,\"ĠWong\":55628,\"ĠÐ¼ÐµÑĤÐ¾Ð´\":55629,\"Weights\":55630,\"ĠGujar\":55631,\"teil\":55632,\"ĠNonetheless\":55633,\"_EFFECT\":55634,\"Ġvect\":55635,\"ĠOsc\":55636,\"Ġcoats\":55637,\"ĠWheat\":55638,\"Ġgeek\":55639,\"ĠPROPERTY\":55640,\"worm\":55641,\"_constants\":55642,\"ĠBoulder\":55643,\"ĠParm\":55644,\"cole\":55645,\"ĠdefaultCenter\":55646,\"ĠRouge\":55647,\":A\":55648,\"xcf\":55649,\"ĠVenice\":55650,\"median\":55651,\"Ġredemption\":55652,\"Fresh\":55653,\"Ġcosm\":55654,\"Ġfigur\":55655,\"Ġrefurb\":55656,\"COPE\":55657,\".cd\":55658,\"Ġchords\":55659,\"ĠSgt\":55660,\"Åį\":55661,\"VPN\":55662,\"ĠSEND\":55663,\"ainen\":55664,\"_accounts\":55665,\"Ġtenth\":55666,\"Ġdissolved\":55667,\"<App\":55668,\"ĠCoverage\":55669,\"useState\":55670,\"Ã©ro\":55671,\"..<\":55672,\"Ġì£¼\":55673,\"Ġdreaming\":55674,\"ĠForecast\":55675,\".Cursors\":55676,\"Ġvisas\":55677,\"/script\":55678,\"_started\":55679,\"Ġgastr\":55680,\"(PRO\":55681,\"];//\":55682,\".Tile\":55683,\"*sin\":55684,\"(Adapter\":55685,\"ĠSandra\":55686,\"_SIG\":55687,\"ardash\":55688,\"ĠOval\":55689,\"Ġdescripcion\":55690,\"(sl\":55691,\"ĠDescriptor\":55692,\"Ġ`$\":55693,\"/free\":55694,\"ĠKeywords\":55695,\"Ġtudo\":55696,\"ionale\":55697,\"(found\":55698,\".xyz\":55699,\"ĠGenerationType\":55700,\"_DISABLED\":55701,\"(area\":55702,\"Ġelites\":55703,\"Ġhombre\":55704,\"(messages\":55705,\"ĠRac\":55706,\"Ġextingu\":55707,\"ĠEsta\":55708,\"opo\":55709,\".vel\":55710,\"mouseout\":55711,\"Ġconvolution\":55712,\"ĠHandling\":55713,\"Ġceilings\":55714,\"Tek\":55715,\"ĠAreas\":55716,\".writerow\":55717,\"<View\":55718,\"ĠCornell\":55719,\"_BIN\":55720,\".invalid\":55721,\"'''čĊ\":55722,\"ieÅ¼\":55723,\"_Position\":55724,\"Ġkidding\":55725,\"PCODE\":55726,\"Ġwatcher\":55727,\"lox\":55728,\"ĠâĹ\":55729,\"Dave\":55730,\"_allow\":55731,\"Ġbisexual\":55732,\"Ġunordered\":55733,\"ĠSchwe\":55734,\"_segments\":55735,\"Ġtearing\":55736,\"INLINE\":55737,\"Ġundes\":55738,\".goods\":55739,\".cam\":55740,\"ĠLW\":55741,\"ĉwhere\":55742,\"Calculator\":55743,\"-threat\":55744,\"-alert\":55745,\"ĠSuzuki\":55746,\"ĠIPA\":55747,\"ĠAttachment\":55748,\"ACCESS\":55749,\"(dtype\":55750,\"Opp\":55751,\"_symbols\":55752,\"Ġdanske\":55753,\"lage\":55754,\"orget\":55755,\"resolution\":55756,\"ÐµÑĩ\":55757,\"ĠQColor\":55758,\"ĠBarrett\":55759,\"Ð°ÑĨÐ¸Ñı\":55760,\"=\\\\'\":55761,\"ĠNavController\":55762,\"/ref\":55763,\"(country\":55764,\"_HDR\":55765,\"Ġtersebut\":55766,\"petition\":55767,\"Ġsuf\":55768,\"credits\":55769,\"à¹Į\":55770,\"xm\":55771,\"ĠDavies\":55772,\".reddit\":55773,\"Ġwoven\":55774,\"ĠObl\":55775,\"ĠKM\":55776,\"ĠConsidering\":55777,\"ensored\":55778,\".period\":55779,\"Ġddl\":55780,\"$wp\":55781,\"Ġextremist\":55782,\";\\\\Ċ\":55783,\"Ġkim\":55784,\"alers\":55785,\"Ġspanning\":55786,\"Ġcoherent\":55787,\"Ġconsegu\":55788,\".textLabel\":55789,\".general\":55790,\"_dashboard\":55791,\"Ð»ÐµÐ½Ð¸Ðµ\":55792,\"kick\":55793,\"_PID\":55794,\"ĠExtensions\":55795,\"regexp\":55796,\"ĠClause\":55797,\"_mov\":55798,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":55799,\"ĠReward\":55800,\"ĠLEGO\":55801,\"Ak\":55802,\"=-=-=-=-\":55803,\"ĉparser\":55804,\"Ġonze\":55805,\"éĢĢ\":55806,\"âĢĿãĢĤ\":55807,\"_ball\":55808,\"(rhs\":55809,\"Ġchorus\":55810,\"<count\":55811,\"asurable\":55812,\"Ġwirklich\":55813,\"ĠErin\":55814,\"ĠMSNBC\":55815,\"Ġetter\":55816,\"ĠCron\":55817,\"_FLOW\":55818,\"Ġ,čĊ\":55819,\"Ġcalidad\":55820,\"ĠFileWriter\":55821,\"ĉstmt\":55822,\"(Byte\":55823,\"_pat\":55824,\"Ġtelescope\":55825,\"Ġgreed\":55826,\"ĠTort\":55827,\"(write\":55828,\"\\\\application\":55829,\"ĉRTLR\":55830,\"ĠConfigurationManager\":55831,\"Unix\":55832,\"EndTime\":55833,\"Includes\":55834,\"ĠHarvest\":55835,\"enberg\":55836,\"ĠAustralians\":55837,\"Ġëĵ\":55838,\"Ġrn\":55839,\"Ġreputable\":55840,\"Ġblending\":55841,\"ULATION\":55842,\"ĠBrendan\":55843,\"dad\":55844,\"ĠmÃ¸\":55845,\"ĠWoo\":55846,\"_dc\":55847,\"Une\":55848,\"Ġrue\":55849,\"within\":55850,\"angep\":55851,\"Ġpouch\":55852,\"\\\\\\\"\\\",\":55853,\"ĠSic\":55854,\"âĢĿ),\":55855,\"alyze\":55856,\"ĠGef\":55857,\"covers\":55858,\"Ġdbo\":55859,\"replaceAll\":55860,\"ĉLogger\":55861,\"Trying\":55862,\"[state\":55863,\"-piece\":55864,\"éĸĵ\":55865,\"behavior\":55866,\"allows\":55867,\"lrt\":55868,\"_python\":55869,\"ertura\":55870,\"-country\":55871,\"ĠTG\":55872,\".UIManager\":55873,\"bens\":55874,\"alex\":55875,\"ĠBreitbart\":55876,\"bac\":55877,\"Ġpredicts\":55878,\"Ġgab\":55879,\"Ġcardinal\":55880,\".TimeUnit\":55881,\"ĠVisitor\":55882,\"ĠMing\":55883,\"Ġlivre\":55884,\"ĠparentId\":55885,\"portun\":55886,\"Ġdimensional\":55887,\"ĠVest\":55888,\"enic\":55889,\"à³\":55890,\"ĠÙĩ\":55891,\"ĠBLUE\":55892,\"ĠitemCount\":55893,\"Ġfeathers\":55894,\"ĉpstmt\":55895,\"ĠPolar\":55896,\"{//\":55897,\"undi\":55898,\"ÑĥÐ¶\":55899,\"zar\":55900,\"ErrorResponse\":55901,\"ìĥģ\":55902,\"Representation\":55903,\"*_\":55904,\"+]\":55905,\"prepend\":55906,\"Ġ'>\":55907,\"Ġlegitimacy\":55908,\"Ġoo\":55909,\"Slinky\":55910,\"Ġnationals\":55911,\".words\":55912,\";p\":55913,\"trap\":55914,\"omanip\":55915,\"Ġcues\":55916,\"Ġgraduating\":55917,\"Ġsemaphore\":55918,\"\\\"]);ĊĊ\":55919,\"acey\":55920,\"REET\":55921,\"Grab\":55922,\"ĠFelix\":55923,\"(Id\":55924,\"_neighbors\":55925,\"Ġmeaningless\":55926,\"(del\":55927,\"Ġjeder\":55928,\"ĠContentValues\":55929,\".absolute\":55930,\"/cl\":55931,\"Ġxb\":55932,\"datum\":55933,\"Ġtortured\":55934,\"Ġrubbing\":55935,\"Scores\":55936,\"ĠðŁĺī\":55937,\"Ġavons\":55938,\"Ġamsterdam\":55939,\"EOS\":55940,\"Hal\":55941,\"Ġtrustworthy\":55942,\"#=\":55943,\".EXTRA\":55944,\"Ġmano\":55945,\"isicing\":55946,\"-support\":55947,\"ĉcursor\":55948,\"ĠSpo\":55949,\"aimassage\":55950,\"Mission\":55951,\"[]{\\\"\":55952,\"Ġprinters\":55953,\"GREEN\":55954,\"Ġteg\":55955,\"Ġabdominal\":55956,\"!ĊĊĊĊĊĊ\":55957,\".Short\":55958,\"Ð°Ð·Ð²\":55959,\"ĠGifts\":55960,\"}\\\")\":55961,\"(binding\":55962,\"xce\":55963,\"âĢĳ\":55964,\"infos\":55965,\"FormData\":55966,\"Ġdart\":55967,\"Ġelems\":55968,\"(inv\":55969,\"YL\":55970,\"tin\":55971,\"GENER\":55972,\"á»¯\":55973,\"ĠTaken\":55974,\"uckle\":55975,\":e\":55976,\"Ġspectral\":55977,\".baidu\":55978,\"/');Ċ\":55979,\"Ġgreedy\":55980,\"esion\":55981,\",,,,,,,,\":55982,\"Ġ/>,Ċ\":55983,\"InternalServerError\":55984,\"NSNotificationCenter\":55985,\"ĠAi\":55986,\"Ġspit\":55987,\"Ġaugmented\":55988,\"ĠstandardUserDefaults\":55989,\"FINITY\":55990,\"Race\":55991,\":C\":55992,\"ĠRECORD\":55993,\"ĠHighlight\":55994,\"Ġ'`\":55995,\"Ġdeficits\":55996,\"Ġnei\":55997,\"Ġresearched\":55998,\"Ta\":55999,\"Ġcopp\":56000,\".GetHashCode\":56001,\"):čĊčĊ\":56002,\"OnClick\":56003,\"ĠWellington\":56004,\"Ġrevival\":56005,\"æ¯Ķ\":56006,\"éĹ®\":56007,\"ĠNSS\":56008,\"Ġforn\":56009,\"ĠintÃ©\":56010,\"ĠKuwait\":56011,\"_flip\":56012,\"_bo\":56013,\"_\\\\\":56014,\"Ġoccurrences\":56015,\"ĠScientists\":56016,\"SRC\":56017,\"ogens\":56018,\"igrant\":56019,\"REMOTE\":56020,\"ĠSID\":56021,\".opts\":56022,\"uve\":56023,\"()])Ċ\":56024,\"Ġlibertarian\":56025,\"ĠGlide\":56026,\"lesen\":56027,\"Ġforme\":56028,\"owania\":56029,\"Ġannoyed\":56030,\"Defs\":56031,\"ĠExecutor\":56032,\"Ġcasts\":56033,\".setChecked\":56034,\"ĠSharing\":56035,\".SerializeObject\":56036,\"Ġselectors\":56037,\"_OTHER\":56038,\"ë¯¸\":56039,\"(super\":56040,\"(OS\":56041,\"_VERIFY\":56042,\"idunt\":56043,\"<header\":56044,\"Ġ/>';Ċ\":56045,\"ĠvidÃ©o\":56046,\"ĠNegro\":56047,\"ĠLords\":56048,\"ĠTours\":56049,\"Ġsoftly\":56050,\".receive\":56051,\"ĠERC\":56052,\"ĠdataSet\":56053,\"Badge\":56054,\"ĉEvent\":56055,\"Ġperl\":56056,\"Ġ{}\\\\\":56057,\"(sentence\":56058,\"OrUpdate\":56059,\"Ġdiminish\":56060,\"PIN\":56061,\"(draw\":56062,\".ToDateTime\":56063,\".EqualTo\":56064,\"(pin\":56065,\"-pencil\":56066,\"luent\":56067,\"ĠCaller\":56068,\"Ġplayful\":56069,\"-'+\":56070,\"xca\":56071,\"swick\":56072,\"){}Ċ\":56073,\"}:${\":56074,\"ĠMeth\":56075,\".getCell\":56076,\".break\":56077,\"Ġymax\":56078,\"='<?\":56079,\"-json\":56080,\"Ġprimeiro\":56081,\"Ġindice\":56082,\"ãĤ£\":56083,\"ĠUNITY\":56084,\"(ab\":56085,\"ÑĨÐ¸Ð¸\":56086,\"_HAVE\":56087,\"-years\":56088,\"ĠErdogan\":56089,\"-stack\":56090,\"Ġdischarged\":56091,\"Ġbreathtaking\":56092,\"Ġgrassroots\":56093,\"ĠAside\":56094,\"hell\":56095,\"Ġsnakes\":56096,\"/logout\":56097,\"ĠminWidth\":56098,\"ĠHear\":56099,\"ĠStones\":56100,\"ĠWisdom\":56101,\"ĠEvening\":56102,\"_blank\":56103,\"ĠPromotion\":56104,\"ĠMMM\":56105,\"ĠBars\":56106,\"ãĤ·\":56107,\"nj\":56108,\"_TI\":56109,\"ĠSocialist\":56110,\"ĠEG\":56111,\"-opt\":56112,\"=\\\\\\\"$\":56113,\"(dialog\":56114,\"Ġbehold\":56115,\"Ġintricate\":56116,\"Ġerectile\":56117,\"Extractor\":56118,\"Ġscl\":56119,\"Ġclas\":56120,\"(history\":56121,\"identally\":56122,\"Ġpneum\":56123,\"Rand\":56124,\"ĠLaptop\":56125,\"caller\":56126,\"ĠFlood\":56127,\"opened\":56128,\"udder\":56129,\"ĠGetter\":56130,\"_walk\":56131,\"(weight\":56132,\"ĠAlexandria\":56133,\"Ġtableau\":56134,\"Vari\":56135,\"Ġ--------\":56136,\"èĩ³\":56137,\"eworthy\":56138,\"Specification\":56139,\"Ġthresholds\":56140,\"(\\\"\\\");ĊĊ\":56141,\"_four\":56142,\"ĠSadly\":56143,\"Ġ(_)\":56144,\"ismatic\":56145,\"ĠJail\":56146,\"toHaveBeenCalledWith\":56147,\".mar\":56148,\"Ġpreviews\":56149,\"Ġscaff\":56150,\"indicator\":56151,\"Ġcodecs\":56152,\"Ġautoc\":56153,\"(rt\":56154,\".getHours\":56155,\"ĠRH\":56156,\"ĠSurge\":56157,\"ivamente\":56158,\"Ġcontender\":56159,\"CppGenericClass\":56160,\"Ġ;;^\":56161,\"::*;Ċ\":56162,\"-record\":56163,\"Ġmama\":56164,\"Ġimgs\":56165,\".isLoading\":56166,\"Ġneedles\":56167,\"Ġencuentra\":56168,\"odata\":56169,\"ĠBufferedImage\":56170,\"ĉjava\":56171,\"ĠTomb\":56172,\"UNITY\":56173,\"Ġlingerie\":56174,\"ĠJamaica\":56175,\"bugs\":56176,\"**ĊĊ\":56177,\"ĠMao\":56178,\".beginPath\":56179,\"Ġprostitut\":56180,\"ĠPhilippine\":56181,\"_sf\":56182,\"_pow\":56183,\"ĠScho\":56184,\"xde\":56185,\"'Ã©t\":56186,\"âĢĻaut\":56187,\"aison\":56188,\"ĠFileInfo\":56189,\"turnstile\":56190,\"dream\":56191,\"ĠiVar\":56192,\"syntax\":56193,\"illiseconds\":56194,\"profiles\":56195,\"_REGEX\":56196,\"ĠÐ´Ð¾\":56197,\"ĠCommun\":56198,\"Bet\":56199,\"ipzig\":56200,\"ĠMemo\":56201,\".ids\":56202,\"Ġphotographed\":56203,\"Ġapproximation\":56204,\":variables\":56205,\"Ġmodificar\":56206,\"_SMALL\":56207,\"ĠHemp\":56208,\"Ġdisrespect\":56209,\"Ġcontested\":56210,\"Ġinnocence\":56211,\"illis\":56212,\"Symbols\":56213,\"Ġinspirational\":56214,\"Ġdisciplinary\":56215,\"ĠPermanent\":56216,\"Ġdescr\":56217,\"ĠUNDER\":56218,\"ÑģÑĭ\":56219,\"pressor\":56220,\"IMER\":56221,\"Ġmounts\":56222,\"Ġmorally\":56223,\"_SECOND\":56224,\".fileName\":56225,\"ãĥĹ\":56226,\"Ġconstructs\":56227,\"ĠSUN\":56228,\"ESP\":56229,\"Financial\":56230,\"ĠNur\":56231,\"Ã´le\":56232,\"ricular\":56233,\"ĠUserManager\":56234,\"ibilidad\":56235,\"ĠonResponse\":56236,\"Ġfilmmaker\":56237,\"Ġalot\":56238,\"_THREADS\":56239,\"Ġenvironmentally\":56240,\"........................\":56241,\"Ġrash\":56242,\"ĠLyrics\":56243,\"Ġipairs\":56244,\"Backup\":56245,\"Signup\":56246,\"Ġ@{Ċ\":56247,\"JUnit\":56248,\"workflow\":56249,\"ĠCompletion\":56250,\"Ġintuition\":56251,\"ðĿ\":56252,\"Ġmia\":56253,\"ĠSnackbar\":56254,\"ĠTin\":56255,\"ĉinstance\":56256,\"ĠMusical\":56257,\"Ġwelcomes\":56258,\"Ġredraw\":56259,\"_colour\":56260,\"_REALTYPE\":56261,\"_since\":56262,\"ĠByteArrayOutputStream\":56263,\"-demand\":56264,\"areth\":56265,\".pad\":56266,\"sek\":56267,\"',...Ċ\":56268,\"-fire\":56269,\".|\":56270,\"Ġnumb\":56271,\"ĠDOUBLE\":56272,\"AMAGE\":56273,\"chmod\":56274,\"-il\":56275,\"Ġalarming\":56276,\"Cop\":56277,\"å¤ĩ\":56278,\"invite\":56279,\"_ITEMS\":56280,\"Ġleuk\":56281,\"Ġreel\":56282,\"Ġfulfillment\":56283,\"Restore\":56284,\"_rr\":56285,\"(classes\":56286,\"Ġpaging\":56287,\"ymax\":56288,\"rapped\":56289,\"íĻĶ\":56290,\"}`}>Ċ\":56291,\"ĠHiro\":56292,\"(TRUE\":56293,\"asurer\":56294,\"Ġcuer\":56295,\"Uber\":56296,\".Operation\":56297,\"Ġolan\":56298,\"Ġthrilling\":56299,\"<Response\":56300,\"ĠFemin\":56301,\"Ġtraversal\":56302,\"Ġpoc\":56303,\"ĠsetStatus\":56304,\"declar\":56305,\"stdafx\":56306,\"Ġaddictive\":56307,\"ĠBtn\":56308,\"Ġexplosives\":56309,\"ĠCooking\":56310,\"ĠPlaint\":56311,\"Ġaccumulator\":56312,\"ĠAppointment\":56313,\",password\":56314,\"ĠFAR\":56315,\"luet\":56316,\"Furthermore\":56317,\"declspec\":56318,\"_Statics\":56319,\".Dictionary\":56320,\"\\\">'.\":56321,\"ĉvalid\":56322,\"\\\"\\\",\":56323,\"Instrument\":56324,\">J\":56325,\"Ġnostr\":56326,\"ĠRift\":56327,\"_Port\":56328,\"Ġveces\":56329,\"[['\":56330,\"Ġrallies\":56331,\"-series\":56332,\"Ġvv\":56333,\".uc\":56334,\"Ġrtn\":56335,\"StateChanged\":56336,\"(ins\":56337,\"ĠCla\":56338,\"------------Ċ\":56339,\"cus\":56340,\"ĠReload\":56341,\"//------------------------------------------------------------------------------------------------\":56342,\".seconds\":56343,\"_destination\":56344,\"Ġscrewed\":56345,\">c\":56346,\"Thickness\":56347,\"Designer\":56348,\"Ġgrids\":56349,\"nÄħ\":56350,\"(cookie\":56351,\"Trip\":56352,\"-Mobile\":56353,\"Ġvoll\":56354,\"Ġgenital\":56355,\"Ġconfisc\":56356,\"ĠConfederate\":56357,\"ĠwebView\":56358,\"Ġmise\":56359,\"Ġcler\":56360,\"(selection\":56361,\"$date\":56362,\"Ġsharpen\":56363,\"ragen\":56364,\"AndUpdate\":56365,\"Ġremix\":56366,\"Ġhtons\":56367,\"RW\":56368,\"MPI\":56369,\"Ġretrieval\":56370,\"Ġrichest\":56371,\".Decode\":56372,\":initComponents\":56373,\"ĠTValue\":56374,\"Saint\":56375,\"@include\":56376,\"ĠPERSON\":56377,\".sep\":56378,\"ĠLDAP\":56379,\"gba\":56380,\"ĠgroÃŁe\":56381,\"Ġreliably\":56382,\"ĠDFS\":56383,\".getItemId\":56384,\"ĠprÃ©sent\":56385,\".getToken\":56386,\"Ġchinese\":56387,\"ĠMeal\":56388,\"YOU\":56389,\"\\\"><?=$\":56390,\"(choice\":56391,\"Ġphenomenal\":56392,\"ĠSteele\":56393,\"Â¢\":56394,\"ĠPackageManager\":56395,\"ĠSyndrome\":56396,\"Directories\":56397,\"ivar\":56398,\".unsubscribe\":56399,\"lieÃŁ\":56400,\"mono\":56401,\"_connections\":56402,\"_presence\":56403,\"yny\":56404,\"Knife\":56405,\"Ġgroove\":56406,\"Ġscoop\":56407,\"TEMPL\":56408,\"asaki\":56409,\".hamcrest\":56410,\"Ġharbor\":56411,\"cov\":56412,\"*z\":56413,\"ĠXu\":56414,\"Ġproposing\":56415,\"ĠFRAME\":56416,\"Chip\":56417,\"ĠEen\":56418,\"ĠìłĦ\":56419,\"Ġsmashed\":56420,\"Unsigned\":56421,\"(..\":56422,\"_finished\":56423,\"ĠgetStatus\":56424,\"Ġfibre\":56425,\"Axes\":56426,\"Ġ'/',\":56427,\"yards\":56428,\"MDB\":56429,\"-bs\":56430,\"intent\":56431,\"Ġbooster\":56432,\".dst\":56433,\".DialogResult\":56434,\"ĠMets\":56435,\"Ġbeasts\":56436,\"increments\":56437,\".kafka\":56438,\"UIAlertAction\":56439,\"-ever\":56440,\"_bal\":56441,\"Ġhelt\":56442,\"Ġfreopen\":56443,\"ĠRecruitment\":56444,\"licts\":56445,\"forgettable\":56446,\"Displayed\":56447,\"_VENDOR\":56448,\"College\":56449,\"ASCII\":56450,\"ĠSink\":56451,\"ĠMaced\":56452,\"Ġctor\":56453,\"ĠestÃ£o\":56454,\"ĠWindsor\":56455,\"_checked\":56456,\"_detect\":56457,\"attend\":56458,\"Ġxmin\":56459,\"Ġindispens\":56460,\"/person\":56461,\"_DETAILS\":56462,\"REDIT\":56463,\"Hay\":56464,\"abolic\":56465,\"Ġfunctools\":56466,\"iais\":56467,\"FTP\":56468,\"_Rect\":56469,\"ĠIndy\":56470,\"-public\":56471,\"ohan\":56472,\"_manage\":56473,\"Computed\":56474,\"ìĹĲìĦľ\":56475,\"ĠSlice\":56476,\"Ġgays\":56477,\"Ġalex\":56478,\"aits\":56479,\"Ġreceipts\":56480,\"SPEC\":56481,\"ĠBEFORE\":56482,\"ĠPrefix\":56483,\"_visit\":56484,\"Ġspun\":56485,\"LETED\":56486,\"Ġdow\":56487,\"Ġlegalization\":56488,\"abbage\":56489,\"Ġclaw\":56490,\"ĠTcl\":56491,\"xima\":56492,\"Ġcovert\":56493,\"Ni\":56494,\"Ġthanked\":56495,\"Ġallergic\":56496,\"lover\":56497,\"ĠBreast\":56498,\".isActive\":56499,\"Ġgeben\":56500,\"VERSE\":56501,\"ZONE\":56502,\"ĉResult\":56503,\"').'\":56504,\"Ġgee\":56505,\"ĠSeriously\":56506,\"purple\":56507,\"ĠEspaÃ±a\":56508,\"ifie\":56509,\"-pack\":56510,\"Particles\":56511,\"Ġ'/../\":56512,\"Ġmultimedia\":56513,\"autocomplete\":56514,\"ĠTHREAD\":56515,\"Ġreferencing\":56516,\"reetings\":56517,\"Ġquoting\":56518,\"Ġassistants\":56519,\"jenis\":56520,\"happy\":56521,\"Ġlays\":56522,\"libft\":56523,\"xda\":56524,\"Ġfou\":56525,\"piar\":56526,\"Recommended\":56527,\"ĠBirds\":56528,\"ĠWarranty\":56529,\"Ã¼rlich\":56530,\".INVISIBLE\":56531,\"_anchor\":56532,\"âĢĿ:\":56533,\"Fant\":56534,\"_defs\":56535,\"Ġdreamed\":56536,\"Ġ_______,\":56537,\"pla\":56538,\"Ã¤ft\":56539,\"odka\":56540,\"Ä±s\":56541,\"Ġdaddy\":56542,\"schemas\":56543,\"=zeros\":56544,\"Ġratt\":56545,\"ĉĉĠĠĠĠĉ\":56546,\"iej\":56547,\"Ġdrills\":56548,\"-<?\":56549,\"ABA\":56550,\".links\":56551,\"ĠDependencyProperty\":56552,\".low\":56553,\"heed\":56554,\"_BLACK\":56555,\"/Admin\":56556,\"Ġamigos\":56557,\"inged\":56558,\"ĠMickey\":56559,\".GetAxis\":56560,\"ĠNeeded\":56561,\"ĠEncode\":56562,\"Ã©rieur\":56563,\"ĠManila\":56564,\"ĠColleg\":56565,\"adastro\":56566,\"Ġchicas\":56567,\"ä½ł\":56568,\"Ġoneself\":56569,\"xea\":56570,\"duk\":56571,\"Ġgw\":56572,\"urgical\":56573,\"ĠCentro\":56574,\"Ġaes\":56575,\"feel\":56576,\"Ġtrot\":56577,\"Ġelectrons\":56578,\"Ġrituals\":56579,\"ĠBilder\":56580,\"Ġdecorate\":56581,\"ĠTokenType\":56582,\"Ġlure\":56583,\"ApiClient\":56584,\"grpc\":56585,\"ĠOrc\":56586,\"ContextMenu\":56587,\"PREFIX\":56588,\"-themed\":56589,\"_fifo\":56590,\".InputStreamReader\":56591,\"_specific\":56592,\"ĠDSP\":56593,\"=subprocess\":56594,\"/she\":56595,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":56596,\"Ġdaunting\":56597,\"Ġclears\":56598,\"ĠMoves\":56599,\"Ġmysteries\":56600,\"-best\":56601,\"ĠVu\":56602,\"olib\":56603,\"ĠIsh\":56604,\"Ġcaract\":56605,\"(Label\":56606,\"ĠDebian\":56607,\"ĠExperimental\":56608,\"Ġcav\":56609,\".ToDecimal\":56610,\"ĠRhodes\":56611,\"ĠHawks\":56612,\"Ġfountain\":56613,\"_PENDING\":56614,\"_SU\":56615,\"ĠwxString\":56616,\"ĠPew\":56617,\".cli\":56618,\"ÑĦÐ¾ÑĢÐ¼\":56619,\".webkit\":56620,\"_CN\":56621,\"Ġ;;=\":56622,\"ĉnamespace\":56623,\"ĠwParam\":56624,\"Ġpuppies\":56625,\"Ġterminology\":56626,\"Ġaddicted\":56627,\"Ġforge\":56628,\"ĠGardner\":56629,\"Ġpessoa\":56630,\"ĉResultSet\":56631,\"Ġattenu\":56632,\"angement\":56633,\"_inds\":56634,\"Chi\":56635,\"arith\":56636,\"EncodingException\":56637,\"mousedown\":56638,\"ĠBETWEEN\":56639,\"weigh\":56640,\"\\\"For\":56641,\".dd\":56642,\"itel\":56643,\"YO\":56644,\"ĠDice\":56645,\"unix\":56646,\"ĠObt\":56647,\"ĠCedar\":56648,\"Ġspecimens\":56649,\"porn\":56650,\"Ġunofficial\":56651,\"é»ĳ\":56652,\"sometimes\":56653,\"ĠBulld\":56654,\"trust\":56655,\"getResult\":56656,\"Ġsmokers\":56657,\"Ġsandwiches\":56658,\"Ġexh\":56659,\"ĠFade\":56660,\"_DC\":56661,\"Ġmasturbation\":56662,\"fortawesome\":56663,\"THING\":56664,\"_android\":56665,\"Ġdedic\":56666,\"-sensitive\":56667,\"Ġnackt\":56668,\"LIBINT\":56669,\"Ġagon\":56670,\"ĠDISABLE\":56671,\"onesia\":56672,\"bies\":56673,\"ĠZIP\":56674,\"Ġhaunted\":56675,\"Ġcuid\":56676,\"/cart\":56677,\"kos\":56678,\"ĉRTLU\":56679,\"Ġhinder\":56680,\"Ġadipisicing\":56681,\"IENCE\":56682,\".bank\":56683,\"ĠCyprus\":56684,\"mixed\":56685,\".cy\":56686,\"-single\":56687,\"<len\":56688,\"Coming\":56689,\"Ġfaults\":56690,\"Ġforesee\":56691,\"getline\":56692,\"\\\"a\":56693,\"Ġbrag\":56694,\"Ġdiscs\":56695,\"Ġripe\":56696,\"ĠnÃ¦r\":56697,\"ĠGG\":56698,\"SHOT\":56699,\"derabad\":56700,\"(edit\":56701,\"ToLeft\":56702,\"[]);Ċ\":56703,\"ĠdoGet\":56704,\"vature\":56705,\"Needed\":56706,\"ĠCheng\":56707,\"cci\":56708,\"EFI\":56709,\"Ġfeud\":56710,\"Ġlunar\":56711,\".Shape\":56712,\"Nobody\":56713,\"_TRIGGER\":56714,\"Cy\":56715,\"groundColor\":56716,\"ĠRemoval\":56717,\"(bottom\":56718,\"$msg\":56719,\"SCII\":56720,\"ritz\":56721,\"Ġfrente\":56722,\"Ġcompost\":56723,\"answered\":56724,\"ĠRodr\":56725,\"_HTML\":56726,\"Ġsilhouette\":56727,\"ĠQUEST\":56728,\"ĠCathedral\":56729,\".Comment\":56730,\"ĠMn\":56731,\"-network\":56732,\".getFile\":56733,\".generator\":56734,\"ĠCheckout\":56735,\"_zoom\":56736,\"ĠencodeURIComponent\":56737,\"_TC\":56738,\"som\":56739,\"ĠSerie\":56740,\"ĠbaseURL\":56741,\"ĉrun\":56742,\"Ġhuh\":56743,\".selectedIndex\":56744,\"ĠSTAR\":56745,\"~-~-\":56746,\"abcdefgh\":56747,\".mapping\":56748,\"=datetime\":56749,\"Cool\":56750,\"nim\":56751,\"ĠDirective\":56752,\"Federal\":56753,\"ĠmenuItem\":56754,\"ĠÐĲ\":56755,\"Anna\":56756,\"ĠRecreation\":56757,\"ryan\":56758,\"-aged\":56759,\"zerbai\":56760,\"âĢ¦âĢĿĊĊ\":56761,\"campo\":56762,\"Ġminiature\":56763,\"detach\":56764,\"meaning\":56765,\"_emp\":56766,\"Peak\":56767,\"Ġbcm\":56768,\"ĠHungarian\":56769,\"ĠCascade\":56770,\"Ġsacks\":56771,\"Ġtruncate\":56772,\"ĠâĸĪâĸĪ\":56773,\"Ġwhales\":56774,\"Ġsortable\":56775,\"Ġasserts\":56776,\"Ġseals\":56777,\"ocytes\":56778,\"])))Ċ\":56779,\"alarm\":56780,\"ressing\":56781,\"(signal\":56782,\"Ġemperor\":56783,\"ĉON\":56784,\"committee\":56785,\"Ġtrilogy\":56786,\".Transactional\":56787,\"Grow\":56788,\"_uart\":56789,\"Ġswings\":56790,\"Ġspectacle\":56791,\"âĢĻav\":56792,\"ĠSentinel\":56793,\"ĠÙĦ\":56794,\"ĠTou\":56795,\"Ġwidow\":56796,\"gerald\":56797,\",uint\":56798,\"Ġunusually\":56799,\"<Card\":56800,\"ĠRestart\":56801,\"mor\":56802,\"ãģĤãĤĬ\":56803,\"ixedReality\":56804,\"Ġhandgun\":56805,\"âĶĢâĶĢâĶĢâĶĢâĶĢâĶĢâĶĢâĶĢ\":56806,\"Ġlithium\":56807,\"Resolve\":56808,\"getBytes\":56809,\"/functions\":56810,\"Ġtackling\":56811,\"Outlined\":56812,\"Ġ}</\":56813,\"ĠSexo\":56814,\"ĠAnk\":56815,\"Ġrationale\":56816,\"removeAttr\":56817,\"Ġmunicipality\":56818,\"Ġassaults\":56819,\"CHOOL\":56820,\"ĠRee\":56821,\"Ġbaud\":56822,\"¦¬\":56823,\"Ġenhances\":56824,\"ĠÐ¿ÑĢÐµÐ´\":56825,\"Ġconcess\":56826,\".instagram\":56827,\".getResponse\":56828,\"segments\":56829,\"Ġwellbeing\":56830,\"};ĊĊĊĊ\":56831,\"hung\":56832,\"ãĥĨ\":56833,\"Ġrenovated\":56834,\".expected\":56835,\"Ġradial\":56836,\"Ġcommunal\":56837,\"userManager\":56838,\"+a\":56839,\"Ġfundamentals\":56840,\".TH\":56841,\"èĤ\":56842,\"Ġrant\":56843,\"ĠStraw\":56844,\"ĠOleDb\":56845,\"azio\":56846,\"Ġhamburg\":56847,\"Ġpaints\":56848,\"Ġthumbs\":56849,\"ĠNullPointerException\":56850,\"Ġgroupe\":56851,\"ĠHomeComponent\":56852,\"Ġballo\":56853,\"ĠINITIAL\":56854,\"_are\":56855,\"ĠPes\":56856,\"urses\":56857,\"Ġbardzo\":56858,\".getLength\":56859,\"amoto\":56860,\".notifyDataSetChanged\":56861,\"ienes\":56862,\"enzie\":56863,\"_emb\":56864,\"umni\":56865,\"smooth\":56866,\"ĠDro\":56867,\"paste\":56868,\"ĠNarr\":56869,\"----ĊĊ\":56870,\"Ïī\":56871,\"ĠAutor\":56872,\"Ġoutros\":56873,\"ĠLABEL\":56874,\".pa\":56875,\".Student\":56876,\"(Xml\":56877,\"Ġethnicity\":56878,\"ĠIvy\":56879,\"ãĤĪ\":56880,\"_fake\":56881,\"?(:\":56882,\"uploaded\":56883,\"getManager\":56884,\"-Qaeda\":56885,\"odiac\":56886,\"Connor\":56887,\"ihan\":56888,\"MAT\":56889,\"(mid\":56890,\"ĠAlban\":56891,\"Ġsoir\":56892,\"Combo\":56893,\"ĠPublication\":56894,\"opoulos\":56895,\"pis\":56896,\"Ġtemples\":56897,\"ongyang\":56898,\"_clients\":56899,\"Ġrods\":56900,\"Ġxc\":56901,\"ijken\":56902,\"Ġreap\":56903,\"Ġä¸ĭåįĪ\":56904,\"ĉconnect\":56905,\"Focused\":56906,\",count\":56907,\"ietet\":56908,\"Ġhacia\":56909,\"_allocator\":56910,\"Ġtoxicity\":56911,\"(sequence\":56912,\"Ġnuestros\":56913,\"ĠPrinciples\":56914,\"Ġlle\":56915,\"alaria\":56916,\".writeString\":56917,\"ĠAFL\":56918,\"ifndef\":56919,\"ĠDos\":56920,\"ÅĽcie\":56921,\"ĠAggregate\":56922,\"Ġsacrifices\":56923,\"_offsets\":56924,\"ldb\":56925,\"Ġlatch\":56926,\"Ġfullscreen\":56927,\"missive\":56928,\"OPTIONS\":56929,\"ĠTelephone\":56930,\"Ġarsenal\":56931,\"jejer\":56932,\"ĠHosp\":56933,\"Ġfavourites\":56934,\"rive\":56935,\".increment\":56936,\"Ġbv\":56937,\"ĠFantastic\":56938,\".say\":56939,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":56940,\"Ġmedicinal\":56941,\"ĠDROP\":56942,\"Ġpity\":56943,\"metis\":56944,\"Ġwollen\":56945,\"Ġbef\":56946,\"_Bl\":56947,\"Ġ>>ĊĊ\":56948,\"bower\":56949,\"Ġswapped\":56950,\"/install\":56951,\"Ġsinks\":56952,\"etrize\":56953,\"Ġdeclines\":56954,\"ĉmysql\":56955,\"ĠCString\":56956,\"ĠMotionEvent\":56957,\".Language\":56958,\"Road\":56959,\"ÑĤÐµÑĢ\":56960,\"ascimento\":56961,\"'))->\":56962,\".about\":56963,\"(editor\":56964,\"ĠRatings\":56965,\"income\":56966,\"Å¡e\":56967,\".dequeueReusableCell\":56968,\"ĠAustrian\":56969,\"Ġsulla\":56970,\"ĠTribunal\":56971,\"ĠDidn\":56972,\"Ð¾Ð²Ð°ÑĢ\":56973,\"Ġinspections\":56974,\"Boss\":56975,\"Ġcocktails\":56976,\"Ġapologized\":56977,\"_subplot\":56978,\"opal\":56979,\"+=(\":56980,\"Ġresonance\":56981,\"ibu\":56982,\"Ġë¦¬\":56983,\"roma\":56984,\"reserve\":56985,\"pls\":56986,\"ĠTah\":56987,\"axies\":56988,\"OPLE\":56989,\"ĠDarren\":56990,\"ĠZombie\":56991,\"_Map\":56992,\"Ġ])ĊĊ\":56993,\"ĠQi\":56994,\"ĠSail\":56995,\"Ġrestrictive\":56996,\"Ġerosion\":56997,\"-par\":56998,\"WHITE\":56999,\"Ġoldu\":57000,\"Ġaperture\":57001,\"Ġbitcoins\":57002,\"texto\":57003,\"ĠComcast\":57004,\"Ġtimeless\":57005,\"enkins\":57006,\"Ġfeeder\":57007,\"/tmp\":57008,\"resden\":57009,\"+'_\":57010,\".Destroy\":57011,\"ĠÃ§ok\":57012,\"ĠDOCUMENT\":57013,\".lng\":57014,\".tagName\":57015,\"Ġkullan\":57016,\"egrate\":57017,\"Ġ(*.\":57018,\"ç¼ĸè¾ĳ\":57019,\"Ġhandshake\":57020,\"soc\":57021,\"_geometry\":57022,\"ĠDamascus\":57023,\"Minor\":57024,\"ĠKafka\":57025,\"ìĹ¬\":57026,\"Florida\":57027,\"_compute\":57028,\".expr\":57029,\"Ġparalle\":57030,\"ĠDiaz\":57031,\"cir\":57032,\"[target\":57033,\"Ġjoking\":57034,\"Ġglor\":57035,\"(setq\":57036,\"_handlers\":57037,\"Hang\":57038,\"Ġferr\":57039,\"riminal\":57040,\"ĉĠĠĠĠĉĉ\":57041,\"enties\":57042,\"defines\":57043,\"-tax\":57044,\"jsonp\":57045,\"ĠUPS\":57046,\"metro\":57047,\"__;Ċ\":57048,\"ĠUganda\":57049,\"])):Ċ\":57050,\"_td\":57051,\"xae\":57052,\"lw\":57053,\".OS\":57054,\"ĠLogged\":57055,\"acid\":57056,\"ĠMayo\":57057,\"aspect\":57058,\"Ġvaginal\":57059,\"Ġinitializing\":57060,\"Ġsteroids\":57061,\"fiction\":57062,\"GRE\":57063,\"gend\":57064,\"Ġliabilities\":57065,\"ĠLets\":57066,\"Mech\":57067,\"(nc\":57068,\"(change\":57069,\"Ġconnectors\":57070,\":k\":57071,\"Ġtast\":57072,\"!\\\");ĊĊ\":57073,\"things\":57074,\"rophy\":57075,\"luetooth\":57076,\"ĠSignUp\":57077,\".ctrl\":57078,\"Ġtherein\":57079,\"orda\":57080,\".escape\":57081,\"igator\":57082,\"Ġpetrol\":57083,\"Ġspecimen\":57084,\"Ġdebuted\":57085,\"-Pro\":57086,\"Ġcrises\":57087,\".addView\":57088,\"ëıĻ\":57089,\"-door\":57090,\"Ġmonet\":57091,\"Ġmillis\":57092,\"Ġvier\":57093,\"InternalEnumerator\":57094,\"Ġadmins\":57095,\"ĠLair\":57096,\"zin\":57097,\"getQuery\":57098,\"umbles\":57099,\"LIMIT\":57100,\"ĠVig\":57101,\"_song\":57102,\"<Character\":57103,\"::.\":57104,\"_hom\":57105,\"_bp\":57106,\"ĠSupervisor\":57107,\"submission\":57108,\"abile\":57109,\"Ġnoi\":57110,\"OrCreate\":57111,\"Ġpeel\":57112,\"ĠonStart\":57113,\"Ġsentiments\":57114,\"vehicles\":57115,\"Ġclassrooms\":57116,\"Ġszer\":57117,\"Ġbending\":57118,\"Ġlongevity\":57119,\"Ġacl\":57120,\"ĠAleppo\":57121,\"ĠUM\":57122,\"ĠRicht\":57123,\"Ġmultiprocessing\":57124,\"DOMAIN\":57125,\"\\\",\\\"+\":57126,\"_YEAR\":57127,\"Ġscrape\":57128,\"Ġsolitary\":57129,\"Ġ\\\"]\\\";Ċ\":57130,\"/errors\":57131,\"ìŀ¬\":57132,\"ľëł¥\":57133,\"better\":57134,\"ĉnumber\":57135,\"ĠLF\":57136,\"ĠAcross\":57137,\"PubMed\":57138,\"\\\\\\\"\\\"\":57139,\"ĠExcellence\":57140,\"Ġusando\":57141,\"ĠUIP\":57142,\"ActivityIndicator\":57143,\"_VOID\":57144,\"Ġbreeds\":57145,\"ï½¥\":57146,\"uestas\":57147,\"ĠTreasure\":57148,\"ustralian\":57149,\"(face\":57150,\"ĠTennis\":57151,\"ĉInt\":57152,\"ĠHansen\":57153,\"çµ\":57154,\":I\":57155,\"ĠâľĶ\":57156,\"GRAY\":57157,\"OUSE\":57158,\"Ġhepat\":57159,\"łí\":57160,\"AIR\":57161,\"Ã³Å¼\":57162,\"Ġqueued\":57163,\"vincia\":57164,\"ĠChromium\":57165,\"Ġcompetence\":57166,\"ungal\":57167,\"illi\":57168,\"ĠgetBy\":57169,\"ĠFinder\":57170,\"Ġincapable\":57171,\"Ġsadd\":57172,\"Ġcites\":57173,\"ĠChurchill\":57174,\"Sdk\":57175,\"Moreover\":57176,\"AspNet\":57177,\"(Float\":57178,\"$password\":57179,\"ĠConnor\":57180,\"-session\":57181,\"_dm\":57182,\"*))\":57183,\"Ġdeutsch\":57184,\"ĠNX\":57185,\"Ġperks\":57186,\"_SORT\":57187,\"_TOOL\":57188,\"_VISIBLE\":57189,\".asp\":57190,\"æĪĸ\":57191,\"ĠBreath\":57192,\"Detect\":57193,\"ĠDuel\":57194,\".cmb\":57195,\"[it\":57196,\".SetBool\":57197,\"Ġnarciss\":57198,\"Ġabide\":57199,\"Ġejemplo\":57200,\"ĠâĦķ\":57201,\"Ġmornings\":57202,\"Ġcomputes\":57203,\".ssl\":57204,\"jt\":57205,\"Ġmuchos\":57206,\"_SS\":57207,\"[end\":57208,\"Ġbasin\":57209,\"Ġalgunos\":57210,\"ĠCroatia\":57211,\"linewidth\":57212,\"(tags\":57213,\"(hidden\":57214,\"ÃŃcio\":57215,\"Ġapar\":57216,\"ĠÐ¶\":57217,\"ä¸İ\":57218,\".food\":57219,\"ĠRural\":57220,\"Ġbreadth\":57221,\"å½±\":57222,\"(sess\":57223,\"+\\\")\":57224,\"ĠPaste\":57225,\"Ġservidor\":57226,\"ĠBitSet\":57227,\"ĠTran\":57228,\"laus\":57229,\"vette\":57230,\"eyes\":57231,\"ĠCLICK\":57232,\"ĠVIII\":57233,\"ĠTurns\":57234,\"ĠLeBron\":57235,\"ĠMuj\":57236,\"ĠDeg\":57237,\"ĠAdults\":57238,\"_suite\":57239,\"processable\":57240,\"ĠPHY\":57241,\"ghest\":57242,\".Fail\":57243,\"ĠSlack\":57244,\"cej\":57245,\"\\\\Carbon\":57246,\"Ġsuperstar\":57247,\"Ġholdings\":57248,\"(forms\":57249,\"Ġ'#'\":57250,\"Multip\":57251,\"(\\\"[%\":57252,\"-solid\":57253,\"/url\":57254,\"-tier\":57255,\"[length\":57256,\"ĠStreamWriter\":57257,\"ĠMarketplace\":57258,\"gettext\":57259,\"_TICK\":57260,\"ĠForge\":57261,\"Ġblackjack\":57262,\"ĠDOES\":57263,\"ĠMatters\":57264,\"waves\":57265,\"Ġwhispered\":57266,\"Ġlush\":57267,\"ìĺ¤\":57268,\"digital\":57269,\"Ġwrink\":57270,\"ĠHogan\":57271,\"Ġrustic\":57272,\".ApplyResources\":57273,\"ĠHardy\":57274,\"osomes\":57275,\"AUT\":57276,\".STATE\":57277,\"Ġnarratives\":57278,\"ĉstore\":57279,\"bib\":57280,\"ĉScanner\":57281,\"ĠCody\":57282,\"\\\\Repositories\":57283,\"Ġreunion\":57284,\"andum\":57285,\"âĢĻh\":57286,\"Ġsniff\":57287,\"NSBundle\":57288,\"Ġcomprehend\":57289,\"_USAGE\":57290,\"_occ\":57291,\"URRENCY\":57292,\"JNI\":57293,\"Ġspecializing\":57294,\"Ġvisions\":57295,\"Ġdolore\":57296,\"ĠvÃ¡\":57297,\"ĠChevy\":57298,\"ĠStyled\":57299,\"impact\":57300,\"allen\":57301,\"Ġkart\":57302,\"ĠTablet\":57303,\"stuff\":57304,\"reesome\":57305,\"Ð°ÑĤÐ¾ÑĢ\":57306,\"//---------------------------------------------------------------------------Ċ\":57307,\"_Admin\":57308,\"Ġcellphone\":57309,\"Ġautoplay\":57310,\"Ġcambio\":57311,\"Ġmaritime\":57312,\"_BOOT\":57313,\"-quarter\":57314,\"Ġlatina\":57315,\"ĠAJAX\":57316,\"equiv\":57317,\"ĠFrontier\":57318,\"ĠXY\":57319,\"}]Ċ\":57320,\"ĠRough\":57321,\".proto\":57322,\"Ġcorrectness\":57323,\"Ġfacil\":57324,\"ĠReached\":57325,\"ãģĿãģ®\":57326,\"VIS\":57327,\".ps\":57328,\"Ġstrncpy\":57329,\"Ġdiffusion\":57330,\".startActivity\":57331,\"ï¿½ï¿½ï¿½\":57332,\"Ġaccomp\":57333,\"AMESPACE\":57334,\"imonials\":57335,\"ĠBlast\":57336,\"abyrin\":57337,\"Ġdome\":57338,\"Ġextrav\":57339,\"Ġyen\":57340,\"Ġculinary\":57341,\"PRI\":57342,\"ĠCommunities\":57343,\"nid\":57344,\"_operations\":57345,\".hs\":57346,\"ĠMilton\":57347,\"Ġnoises\":57348,\"AutoresizingMask\":57349,\"(cid\":57350,\"}ĊĊĊĊĊĊ\":57351,\"]},Ċ\":57352,\"ĠDetection\":57353,\"tabla\":57354,\"Ġliberties\":57355,\"_DYNAMIC\":57356,\"wget\":57357,\"ĠTÃ¼r\":57358,\"ĠPascal\":57359,\"Transparent\":57360,\"Delayed\":57361,\"]()\":57362,\"ĠHerbert\":57363,\"<ActionResult\":57364,\"challenge\":57365,\"Ġmushroom\":57366,\".insertBefore\":57367,\"ĠRin\":57368,\"Ġhumour\":57369,\"ĠfÃ¸\":57370,\"apiKey\":57371,\"allocated\":57372,\"Ġconfession\":57373,\".\\\",čĊ\":57374,\"ĉassertThat\":57375,\"ĠSORT\":57376,\"ĠLORD\":57377,\"Ġexporter\":57378,\".setLevel\":57379,\"pokemon\":57380,\"ashtra\":57381,\"ĠfÃ©\":57382,\"urator\":57383,\"(MSG\":57384,\"Ġtup\":57385,\"ĠHull\":57386,\"Ġyielded\":57387,\".Subject\":57388,\"\\\\Route\":57389,\"!?\":57390,\"ĠÑĥÐ´Ð°Ð»\":57391,\"\\\\Security\":57392,\"-ar\":57393,\"Ġallegation\":57394,\"(Settings\":57395,\"Ã¤nder\":57396,\"Ġellipse\":57397,\"ĠRetrofit\":57398,\"Ġregulating\":57399,\"ĠMolly\":57400,\"ĠLok\":57401,\"_Custom\":57402,\"ĠPromo\":57403,\"isin\":57404,\"Ġresumed\":57405,\"Ġmetropolitan\":57406,\".errorMessage\":57407,\":-------------</\":57408,\".ml\":57409,\"scopic\":57410,\".refs\":57411,\"aptors\":57412,\"ĠInstruments\":57413,\"Ġpropagate\":57414,\"}->\":57415,\"Ġpasado\":57416,\"thank\":57417,\"_Delete\":57418,\"ĠBrighton\":57419,\",unsigned\":57420,\"ä½ľèĢħ\":57421,\"Ġaspirations\":57422,\"-how\":57423,\"Rose\":57424,\"=((\":57425,\"_needed\":57426,\"_plural\":57427,\"<Application\":57428,\"ĠWEEK\":57429,\"ĠUnlock\":57430,\"ĠTEMP\":57431,\"Sou\":57432,\"Ġschizophrenia\":57433,\"Ġtroll\":57434,\"Ġcomplementary\":57435,\"ĠNETWORK\":57436,\"Ġblir\":57437,\"ĠprogressDialog\":57438,\"\\\"%(\":57439,\"ĠAttributeSet\":57440,\"ĉts\":57441,\".iteritems\":57442,\"è¯Ŀ\":57443,\"Ġescrit\":57444,\"vous\":57445,\"_places\":57446,\"HK\":57447,\"Ġseguir\":57448,\"_fw\":57449,\"ĠRounded\":57450,\"Ġdisposit\":57451,\"è§Ĩ\":57452,\"parm\":57453,\"wow\":57454,\"STRUCTION\":57455,\".allow\":57456,\"ĠCharSequence\":57457,\"ĉextern\":57458,\"Ġprosecuted\":57459,\"Ġmortar\":57460,\"ĠJuda\":57461,\"-msg\":57462,\"Ġestud\":57463,\".getDescription\":57464,\"Ġsow\":57465,\"ambre\":57466,\"Ġroma\":57467,\"Enh\":57468,\"bonus\":57469,\"Ġsquat\":57470,\"Ġdistra\":57471,\"edImage\":57472,\"Ġpeppers\":57473,\"-performance\":57474,\",ĊĊĊ\":57475,\",file\":57476,\"ĠMIME\":57477,\"_concat\":57478,\"ABS\":57479,\"-fashion\":57480,\"Ġundercover\":57481,\"OneToMany\":57482,\"Ġreclaim\":57483,\"COPY\":57484,\"Ġbinds\":57485,\"ĠTape\":57486,\"Ġgossip\":57487,\"ĠEquity\":57488,\"/Card\":57489,\".activ\":57490,\"'am\":57491,\"Ġdrainage\":57492,\"<Scalars\":57493,\"ĠonBindViewHolder\":57494,\"()?.\":57495,\"Ġsorrow\":57496,\"ĠIb\":57497,\"upy\":57498,\"_UUID\":57499,\"ĠCharm\":57500,\"ĠElections\":57501,\".onDestroy\":57502,\"ĠInterestingly\":57503,\"oundingBox\":57504,\"_detection\":57505,\"-held\":57506,\"_unknown\":57507,\"Ġrefrain\":57508,\"ĠmÃ©todo\":57509,\"ĠeBook\":57510,\"ENOMEM\":57511,\"Ġdang\":57512,\"Professional\":57513,\"Ġdictionaries\":57514,\"/mysql\":57515,\"ĠSTUD\":57516,\"Ġmasse\":57517,\"scape\":57518,\"Ġdrei\":57519,\":name\":57520,\".logo\":57521,\"SignUp\":57522,\"Ġtahun\":57523,\"(theme\":57524,\"ĠFemme\":57525,\"Ġbomber\":57526,\"ĠJade\":57527,\"ĠTay\":57528,\"Ġsubmarine\":57529,\"_clause\":57530,\"zych\":57531,\"Ġsimultaneous\":57532,\"Ġcasos\":57533,\".boolean\":57534,\"(lhs\":57535,\"Ġcontinental\":57536,\"-sale\":57537,\"ĉenv\":57538,\"ĠCute\":57539,\"ĠFactoryGirl\":57540,\"abus\":57541,\"/value\":57542,\"Ġjadx\":57543,\"Ġstern\":57544,\">>ĊĊ\":57545,\"Ġsurfaced\":57546,\"ĠìłĢìŀ¥\":57547,\"platz\":57548,\"ĉemail\":57549,\"ceptors\":57550,\"\\\">(\":57551,\"Ġepile\":57552,\"è¯»\":57553,\"ĠDebt\":57554,\"åĳĬ\":57555,\"NOP\":57556,\"\\\"https\":57557,\":j\":57558,\"FormItem\":57559,\"_LICENSE\":57560,\".getDouble\":57561,\"ĠAgenda\":57562,\"ĉfinally\":57563,\"(filters\":57564,\"(av\":57565,\"ç¾İ\":57566,\"APER\":57567,\"Ġlava\":57568,\"ÐµÑĢÐ¶\":57569,\"))))ĊĊ\":57570,\"Ġfaulty\":57571,\"_nm\":57572,\"Ġtrava\":57573,\"(Bitmap\":57574,\"Ġspeeding\":57575,\">').\":57576,\"Ġscreened\":57577,\"_roll\":57578,\"ĠMacBook\":57579,\"ĠAUD\":57580,\"Ġdiagnose\":57581,\".Generate\":57582,\"Ġ^^\":57583,\"Ġstrs\":57584,\"[Test\":57585,\"Ġransom\":57586,\"ĠDHCP\":57587,\"elden\":57588,\"Ġinterpretations\":57589,\"()].\":57590,\"flatMap\":57591,\"ĠlineHeight\":57592,\"_mount\":57593,\"ĠWizards\":57594,\"Ġsluts\":57595,\"ehler\":57596,\"odal\":57597,\"Ġmilitia\":57598,\"å²\":57599,\"earned\":57600,\"Ġmisery\":57601,\"intval\":57602,\"fund\":57603,\"Ġhides\":57604,\"Ġdiarr\":57605,\"ĠWesley\":57606,\"Ġxmm\":57607,\"Ġquem\":57608,\"ĠArabs\":57609,\"ifth\":57610,\"ategorized\":57611,\"Disposable\":57612,\"Pure\":57613,\"_NOTIFY\":57614,\"snippet\":57615,\"ĠGarrett\":57616,\".running\":57617,\".weights\":57618,\"Ġ(--\":57619,\"Ġinvariant\":57620,\"äºĭä»¶\":57621,\"ĠAllowed\":57622,\"dirs\":57623,\"Ġpassions\":57624,\"Ġlad\":57625,\"ĠFlush\":57626,\"menus\":57627,\":block\":57628,\"Ġcompra\":57629,\".chomp\":57630,\"allocator\":57631,\"Ġcurated\":57632,\"ĠKnowing\":57633,\"ĠPatterson\":57634,\"Ġtelah\":57635,\"'ex\":57636,\"Ġdoomed\":57637,\"Ġphilanth\":57638,\"otty\":57639,\".styles\":57640,\"Owned\":57641,\"Ġallergies\":57642,\"=params\":57643,\"ocese\":57644,\"itelist\":57645,\"ĠSending\":57646,\"bef\":57647,\"orrar\":57648,\"ĠNÃ£o\":57649,\"ĠFargo\":57650,\"ĠLub\":57651,\"ĠCombined\":57652,\"_given\":57653,\"ĉĉĉĉĉĠĠĠĠ\":57654,\"Ġreconciliation\":57655,\"Patterns\":57656,\"azard\":57657,\"Ġbiomass\":57658,\"ĠHouses\":57659,\"respuesta\":57660,\"cco\":57661,\"/topics\":57662,\"ĠYuk\":57663,\"Ġweakened\":57664,\"_calendar\":57665,\"Ġmulheres\":57666,\"ĠMarl\":57667,\"Ġsine\":57668,\"ĠTil\":57669,\"ĠSouls\":57670,\"ĠDeutsche\":57671,\"ĠFOLLOW\":57672,\"Ġpipelines\":57673,\"ĠBeverly\":57674,\"_DIPSETTING\":57675,\"\\\"#\":57676,\"ĠProto\":57677,\".big\":57678,\"ĠSavings\":57679,\"ĠTanz\":57680,\"jun\":57681,\"ĠGamma\":57682,\"ĠSadd\":57683,\"Ġadvisors\":57684,\"Ġroast\":57685,\"Ġunters\":57686,\"udies\":57687,\"_lon\":57688,\"-pointer\":57689,\"ĠElementRef\":57690,\"\\\\Builder\":57691,\"exampleInput\":57692,\".webdriver\":57693,\"dataType\":57694,\"ĠQuite\":57695,\"ĠCeltics\":57696,\"uil\":57697,\"-defense\":57698,\"bish\":57699,\"ĠUIWindow\":57700,\"ĠSuddenly\":57701,\".hot\":57702,\".reason\":57703,\"ĠgÃ¶r\":57704,\"AMD\":57705,\".Multi\":57706,\"authenticated\":57707,\"regions\":57708,\";(\":57709,\"Ð°ÑĢÐ°Ð¼\":57710,\"ĠKirby\":57711,\"$route\":57712,\"PRECATED\":57713,\"ĠDurham\":57714,\"owo\":57715,\"ĠPerforms\":57716,\"Ġdisregard\":57717,\"nst\":57718,\"ĠPols\":57719,\"ĠgetP\":57720,\"\\\"]:\":57721,\"-colored\":57722,\"(Keys\":57723,\"ĠAlleg\":57724,\"_modify\":57725,\"_loading\":57726,\"strained\":57727,\"Ġatroc\":57728,\"_phr\":57729,\"<Sprite\":57730,\"Ġsatisfactory\":57731,\"manship\":57732,\".pipeline\":57733,\"Tony\":57734,\"Ġthief\":57735,\"polator\":57736,\"(lock\":57737,\"burst\":57738,\"ĠOptimization\":57739,\"Ġsurfing\":57740,\"\\\"Yes\":57741,\"Ġdescended\":57742,\"æĴ\":57743,\"_Clear\":57744,\"Ġcries\":57745,\"ĠFrozen\":57746,\"DIRECT\":57747,\"-Con\":57748,\"ĠLeicester\":57749,\"å¥³\":57750,\"OOM\":57751,\"=db\":57752,\"ĠgetMessage\":57753,\"<Student\":57754,\"_batches\":57755,\".Mask\":57756,\"_eth\":57757,\"\\\\)\":57758,\"Ġsoma\":57759,\"Catch\":57760,\"[ch\":57761,\"Owners\":57762,\"indle\":57763,\":auto\":57764,\".vert\":57765,\"ivr\":57766,\".setLocation\":57767,\"Ġfluent\":57768,\"_ENDIAN\":57769,\"ĠCarlo\":57770,\"cepts\":57771,\"addAction\":57772,\".oauth\":57773,\"<UnityEngine\":57774,\"reements\":57775,\".Skip\":57776,\"?)ĊĊ\":57777,\".defaultProps\":57778,\"Ġcabe\":57779,\"ĠShen\":57780,\"erosis\":57781,\"ĠProfit\":57782,\"Ġpois\":57783,\"_CREATED\":57784,\"ĠremoveFrom\":57785,\"(ws\":57786,\"?action\":57787,\"(Field\":57788,\"Ġerrone\":57789,\".minimum\":57790,\"ĠRetrieved\":57791,\"Ġdado\":57792,\"ĠPRIVATE\":57793,\"-spec\":57794,\"Ġgzip\":57795,\"pdata\":57796,\"ĠposY\":57797,\"(low\":57798,\"Ġqualquer\":57799,\"/cloud\":57800,\"ê²Į\":57801,\"(common\":57802,\"ĠArbeit\":57803,\"organisation\":57804,\"Ġtidy\":57805,\"ĠRoland\":57806,\"(ph\":57807,\".zone\":57808,\"Ġgentlemen\":57809,\"Æ°á»£c\":57810,\"å±±\":57811,\"Ġenclosure\":57812,\"ĠManafort\":57813,\"ĉColor\":57814,\"Stencil\":57815,\"Nic\":57816,\"Ġtheorem\":57817,\"ĠVG\":57818,\"Ġcoloured\":57819,\"VBoxLayout\":57820,\"ulsive\":57821,\"Dragon\":57822,\"cff\":57823,\"etest\":57824,\"ensa\":57825,\"ofday\":57826,\".Azure\":57827,\":UIControlEventTouchUpInside\":57828,\"_updates\":57829,\"Ġtrendy\":57830,\"ugas\":57831,\"weakSelf\":57832,\"Ġridge\":57833,\"ibri\":57834,\"Ġì¶Ķ\":57835,\"(CG\":57836,\"ĠMonkey\":57837,\".writeInt\":57838,\".timedelta\":57839,\"ViewControllerAnimated\":57840,\"ĠProvidence\":57841,\"ãģĪ\":57842,\"Ġblends\":57843,\"/Subthreshold\":57844,\"ĠAppl\":57845,\"Ġatan\":57846,\"ĠreloadData\":57847,\"umbotron\":57848,\"stÃ¼t\":57849,\"OAuth\":57850,\"ĠGiving\":57851,\"ĠìĦ¤\":57852,\"ĠFinnish\":57853,\"checking\":57854,\".Embed\":57855,\"sequelize\":57856,\"Ġinitializes\":57857,\"ĠOslo\":57858,\"Ø¶\":57859,\"getExtension\":57860,\"_ALT\":57861,\"(blank\":57862,\"ĠfatalError\":57863,\"Ġdemise\":57864,\"*****Ċ\":57865,\"ĠXS\":57866,\"(AF\":57867,\"ĠEns\":57868,\"antha\":57869,\"ĠPOR\":57870,\"Ġnich\":57871,\".Named\":57872,\"Ġgigantic\":57873,\"ĠObservatory\":57874,\".Resolve\":57875,\"ĠPayments\":57876,\"guild\":57877,\"ĠcurrentState\":57878,\"===============Ċ\":57879,\"ĠSey\":57880,\"pData\":57881,\"Ġdeadlines\":57882,\"Ġcentralized\":57883,\"ĠScholarship\":57884,\"_supported\":57885,\".chrome\":57886,\"()]);Ċ\":57887,\"Ġcyan\":57888,\"ĠCage\":57889,\"Authors\":57890,\"_čĊ\":57891,\"/os\":57892,\"kim\":57893,\"dee\":57894,\".tex\":57895,\"Ġyourselves\":57896,\"Ġmgr\":57897,\"Ġalk\":57898,\"-install\":57899,\"Ġdrafting\":57900,\"Ġrumor\":57901,\"Ġstatues\":57902,\"Pooling\":57903,\"olina\":57904,\"AAAAAAAA\":57905,\"/*----------------------------------------------------------------------------\":57906,\"Ġextremists\":57907,\"Calcul\":57908,\"ighthouse\":57909,\"Inset\":57910,\"(INPUT\":57911,\"Ġsynchronization\":57912,\"ivirus\":57913,\".axes\":57914,\"ĠGap\":57915,\"-An\":57916,\"_Template\":57917,\"Ġgamer\":57918,\"ĠCricket\":57919,\"Ġlint\":57920,\"Ġauthoritarian\":57921,\"NSUInteger\":57922,\"Ġredo\":57923,\"Ġadipiscing\":57924,\"_FETCH\":57925,\"cheid\":57926,\"ĠFang\":57927,\".indices\":57928,\"tone\":57929,\"Ð´ÐµÐ»\":57930,\"Ġ{{--<\":57931,\"brahim\":57932,\"Ġsala\":57933,\"getCode\":57934,\"Ġcommunicated\":57935,\"startsWith\":57936,\"ertz\":57937,\"Readable\":57938,\"ItemId\":57939,\"oreferrer\":57940,\"credible\":57941,\"Ã¡ria\":57942,\"ĠcombineReducers\":57943,\"**/ĊĊ\":57944,\"Ġbliss\":57945,\"Ġadorn\":57946,\"depends\":57947,\"ĠROOM\":57948,\"Ġframing\":57949,\"Ġ?',\":57950,\"auty\":57951,\"_pot\":57952,\"_tabs\":57953,\"Exact\":57954,\",\\\",\":57955,\"Ġ'}';Ċ\":57956,\"Ġarbitr\":57957,\"ahrain\":57958,\".getStringExtra\":57959,\"Ġ$\\\\\":57960,\"ĠoutputStream\":57961,\"Ġcommenc\":57962,\"anus\":57963,\"chy\":57964,\"<Employee\":57965,\"Ġhexatrigesimal\":57966,\"Ġnacional\":57967,\"(serializers\":57968,\"_putchar\":57969,\"_SAFE\":57970,\"entialAction\":57971,\"ItemSelectedListener\":57972,\".Dispatch\":57973,\"Conflict\":57974,\"_about\":57975,\"osaur\":57976,\"Boundary\":57977,\"ĠclearColor\":57978,\"(Location\":57979,\"ĠMONTH\":57980,\"ĠTaste\":57981,\"-General\":57982,\"ĠWAR\":57983,\"Ġerhalten\":57984,\"-saving\":57985,\"Ġcoupling\":57986,\"-trigger\":57987,\"motor\":57988,\"Ġyyyy\":57989,\"ĠPatent\":57990,\"pto\":57991,\"Ġmisdemeanor\":57992,\"vasion\":57993,\"ĠAdmiral\":57994,\"à¹īà¸²\":57995,\"_PWR\":57996,\"Ġdevastated\":57997,\"folios\":57998,\"ITUDE\":57999,\"urrect\":58000,\"Ġrobotic\":58001,\"ĠSanct\":58002,\"ĠHawaiian\":58003,\".Route\":58004,\"-condition\":58005,\"Ġrk\":58006,\"/****************************************************************************Ċ\":58007,\"createElement\":58008,\"ĠKop\":58009,\"ignant\":58010,\".rollback\":58011,\"Ġsalud\":58012,\"_',\":58013,\"ĠANSI\":58014,\"Except\":58015,\"ĠDrawable\":58016,\".UtcNow\":58017,\"\\\":[{Ċ\":58018,\"Ġkole\":58019,\"Lua\":58020,\"ĠBelieve\":58021,\"Comput\":58022,\"Ġhalluc\":58023,\"ĠSigns\":58024,\"rst\":58025,\".hu\":58026,\"ĠKNOW\":58027,\"Wi\":58028,\"ĠBrass\":58029,\"ĠRas\":58030,\"@hotmail\":58031,\"Ġsediment\":58032,\"Ġapk\":58033,\"Ġìĥģ\":58034,\"_regions\":58035,\"Ġpodium\":58036,\"<Book\":58037,\"Ð¶Ðµ\":58038,\"Ġsixteen\":58039,\"ĠAlias\":58040,\"Ġinfrared\":58041,\"ĠVander\":58042,\"ĠLeading\":58043,\"ucing\":58044,\",:,:\":58045,\"_hor\":58046,\"wat\":58047,\"ĠdÃ©cou\":58048,\"_Widget\":58049,\"Sounds\":58050,\"_navigation\":58051,\"Ġschnell\":58052,\"(generator\":58053,\"ucene\":58054,\"Ġremake\":58055,\"IPv\":58056,\"ĠrÃ©al\":58057,\"_INCREMENT\":58058,\"Ġhypothetical\":58059,\"_ang\":58060,\"Ġofs\":58061,\"Ġ!Ċ\":58062,\".completed\":58063,\"GetType\":58064,\"Ġkommen\":58065,\"Ã¡lido\":58066,\"addOn\":58067,\"ĠzÅĤ\":58068,\"ULA\":58069,\"_indicator\":58070,\"']ĊĊĊ\":58071,\"apache\":58072,\"_Select\":58073,\"ĠGreene\":58074,\"Whats\":58075,\"_anim\":58076,\"Ġrepetitive\":58077,\"much\":58078,\"ĠThreshold\":58079,\"Ġlf\":58080,\"(Category\":58081,\"cone\":58082,\"Mix\":58083,\"_METADATA\":58084,\"aysia\":58085,\"Neighbors\":58086,\"ĉĊĉĉĊ\":58087,\"IPHER\":58088,\"ĠFrag\":58089,\"ĠCells\":58090,\"Ġnamespaces\":58091,\"(back\":58092,\"ĠRestaurants\":58093,\"svc\":58094,\"ĠÐ»Ð¸\":58095,\"otech\":58096,\"-sl\":58097,\"¥¿\":58098,\"ĠWT\":58099,\"ĠReduction\":58100,\"Ġdotted\":58101,\"ĉfound\":58102,\"ĠTEAM\":58103,\"Born\":58104,\"ĠMush\":58105,\"ĠComparable\":58106,\"Ġhitch\":58107,\"ATO\":58108,\"ĠmaxHeight\":58109,\"beginTransaction\":58110,\"ÃŃv\":58111,\"_bn\":58112,\"Ġherd\":58113,\"Ġreversal\":58114,\"ĠHond\":58115,\"delimiter\":58116,\"Ġconfuse\":58117,\"Ġhops\":58118,\"Ġcentroid\":58119,\"Ġcourtroom\":58120,\".decorators\":58121,\"Ġmpi\":58122,\"ĠImproved\":58123,\"INNER\":58124,\"ĠBangalore\":58125,\"ĠTamb\":58126,\"Ġboast\":58127,\"()))čĊ\":58128,\"Ġillicit\":58129,\"ĠMorocco\":58130,\"gregator\":58131,\"_resume\":58132,\"Ġcrackdown\":58133,\"Ġportraits\":58134,\"/high\":58135,\"(\\\\'\":58136,\"Ġayud\":58137,\"_feedback\":58138,\"Ġcate\":58139,\"/avatar\":58140,\"Ġheb\":58141,\"PointCloud\":58142,\"ĠåĴĮ\":58143,\"Ġ<![\":58144,\"ĠgetResources\":58145,\"}:{\":58146,\"Operating\":58147,\"ĠFog\":58148,\"ĉtab\":58149,\"ĠResearchers\":58150,\"Ġfabrication\":58151,\".datasets\":58152,\"ĠCampo\":58153,\"ĠKauf\":58154,\"Ġdll\":58155,\"ligt\":58156,\"]));ĊĊ\":58157,\"stellen\":58158,\"ACKET\":58159,\"lvl\":58160,\"ĠGlory\":58161,\".dateTime\":58162,\"Ġcommute\":58163,\"ĠonCreateViewHolder\":58164,\"ĠXElement\":58165,\"ĠTokens\":58166,\"<thead\":58167,\"_pick\":58168,\"ì¤\":58169,\"von\":58170,\"departure\":58171,\"(renderer\":58172,\"phoneNumber\":58173,\"(Person\":58174,\"genes\":58175,\"ĠLars\":58176,\"Ġ){ĊĊ\":58177,\"ĠJsonResult\":58178,\"Ġmetodo\":58179,\"VOKE\":58180,\".getUserId\":58181,\"Acceler\":58182,\"ĉrequired\":58183,\"Ġchampionships\":58184,\"BuildContext\":58185,\"/task\":58186,\"/releases\":58187,\"Categoria\":58188,\"_overlay\":58189,\"Ġscarce\":58190,\"_lim\":58191,\"ngr\":58192,\"ahlen\":58193,\"ĠArtificial\":58194,\"spread\":58195,\"Ġbowling\":58196,\".analysis\":58197,\"SMTP\":58198,\"ĉpassword\":58199,\"Ġbaths\":58200,\"])){Ċ\":58201,\"currently\":58202,\"aciente\":58203,\"_separator\":58204,\"Ġdeber\":58205,\"ĠDisabled\":58206,\"iÃ¨res\":58207,\"Ġâķ\":58208,\"_processing\":58209,\"Ġprotesting\":58210,\"ĠROT\":58211,\"grab\":58212,\"ĠÐ·Ð°Ðº\":58213,\"Ġproactive\":58214,\"wordpress\":58215,\"ĠSever\":58216,\"inden\":58217,\"Ġwikipedia\":58218,\"){čĊčĊ\":58219,\"_windows\":58220,\"islation\":58221,\"Ġunrest\":58222,\"Ġdismissal\":58223,\".NUM\":58224,\"_FAST\":58225,\"issued\":58226,\"ĠFACE\":58227,\"_under\":58228,\"Ġplugged\":58229,\"Ġå°\":58230,\"ĠbÄĻdzie\":58231,\"ĠICC\":58232,\"Ġcombustion\":58233,\"Ġkissed\":58234,\"Ġstarred\":58235,\"ĠWatts\":58236,\"Ġspielen\":58237,\"-purpose\":58238,\"ĠEval\":58239,\"arges\":58240,\",result\":58241,\"technology\":58242,\"Ġnationality\":58243,\"icus\":58244,\"ĠNug\":58245,\"ĠÑĤÐ¾\":58246,\"ĉĉĉĉĉĉĉĠĠ\":58247,\"colo\":58248,\"Ġgastro\":58249,\"anteed\":58250,\"OLID\":58251,\".bias\":58252,\"_tele\":58253,\".inspect\":58254,\"Ġveil\":58255,\".footer\":58256,\"Ġnegligence\":58257,\"Ġjudgments\":58258,\"Rooms\":58259,\"ynn\":58260,\"ĉcounter\":58261,\"occupation\":58262,\"ĠçĶŁ\":58263,\"unas\":58264,\"Ġ(^)(\":58265,\"Lambda\":58266,\"fel\":58267,\".Params\":58268,\"ĠÐ´Ð¾Ð±Ð°Ð²\":58269,\"setLayout\":58270,\"Ġdeportation\":58271,\"ĠlocalObject\":58272,\"ĠPharmaceutical\":58273,\"ceptive\":58274,\"ĠNome\":58275,\"Equipment\":58276,\"Fan\":58277,\"Universal\":58278,\"ĉsocket\":58279,\"Ġgrin\":58280,\"Ġexposes\":58281,\"Ġhaber\":58282,\"Ġsincerely\":58283,\"Ġcams\":58284,\"ĠmÃ¼\":58285,\"enia\":58286,\"Emer\":58287,\"Crypto\":58288,\"Slow\":58289,\"(xhr\":58290,\"!=(\":58291,\"-services\":58292,\"ĠPW\":58293,\"Ġprendre\":58294,\"ĠmÃ¤dchen\":58295,\"emons\":58296,\"Ð¾Ð·Ð²ÑĢÐ°Ñī\":58297,\".Manager\":58298,\"ìĻ\":58299,\"Ġgraf\":58300,\"-ra\":58301,\"metrical\":58302,\"/fl\":58303,\"Ġcemetery\":58304,\"gens\":58305,\"ĠpÅĻ\":58306,\"ĠMySqlCommand\":58307,\"-To\":58308,\"ĠvÃ¥\":58309,\"Ġairst\":58310,\"omentum\":58311,\"Ġservo\":58312,\"million\":58313,\"ĠMiranda\":58314,\"\\\"She\":58315,\"Ġadvocating\":58316,\"-caption\":58317,\"ĠAttribution\":58318,\"Ġwelche\":58319,\"_vendor\":58320,\"ĉStatus\":58321,\"arris\":58322,\"Ġprintk\":58323,\"\\\",\\\"#\":58324,\"Ġrelativ\":58325,\"ifferences\":58326,\"izzes\":58327,\"Ġdecimals\":58328,\"ĠProv\":58329,\".maximum\":58330,\"Arn\":58331,\"Ġhelicopters\":58332,\"_BOTTOM\":58333,\"chure\":58334,\"odings\":58335,\"'(\":58336,\"\\\")));čĊ\":58337,\"(bean\":58338,\".fd\":58339,\"Fund\":58340,\"Ġhangs\":58341,\"appid\":58342,\"/kernel\":58343,\".poi\":58344,\".MinValue\":58345,\"-validation\":58346,\"Luke\":58347,\"cdf\":58348,\"ĠFuneral\":58349,\"ĠSamples\":58350,\"ĉde\":58351,\"Ġtoastr\":58352,\"Ġtaxable\":58353,\"Ġclustering\":58354,\"Ġ'\\\\'\":58355,\"Ġrestraint\":58356,\"eced\":58357,\"chains\":58358,\"ãĢĤï¼Ī\":58359,\"_GRAPH\":58360,\"Ġfueled\":58361,\"éľĢ\":58362,\"Hp\":58363,\"å¤į\":58364,\"Tiles\":58365,\"Ġaunque\":58366,\"JC\":58367,\"Ġhostage\":58368,\"ĠEsk\":58369,\"Ġmav\":58370,\"Ġgestion\":58371,\"Ġbanners\":58372,\"}{$\":58373,\".intValue\":58374,\".'\\\"ĊĊ\":58375,\"_MATRIX\":58376,\"Ġceased\":58377,\"ĠGOD\":58378,\"_CAMERA\":58379,\".AllowUser\":58380,\"tracked\":58381,\"Cook\":58382,\"bairro\":58383,\"(company\":58384,\"Ġviewpoint\":58385,\".getWriter\":58386,\"ĠNets\":58387,\"wives\":58388,\"Ġ())Ċ\":58389,\"exampleModal\":58390,\"ĉchild\":58391,\"Ġmythology\":58392,\"Ġ//\\\"\":58393,\"_axes\":58394,\"ibold\":58395,\".Dark\":58396,\"ĠMaxwell\":58397,\"Ġgpointer\":58398,\"olicitud\":58399,\"Bat\":58400,\"ulner\":58401,\"balanced\":58402,\"mailer\":58403,\"Ġcontempor\":58404,\"æīĭæľº\":58405,\"(\\\"__\":58406,\"Ġ\\\")\\\"\":58407,\"rear\":58408,\"ĠHuang\":58409,\"]')Ċ\":58410,\"×©\":58411,\"FTA\":58412,\"ĠCallingConvention\":58413,\"ĠOutputs\":58414,\"Pk\":58415,\".Reference\":58416,\"lectual\":58417,\"Ġ):ĊĊ\":58418,\"Ġbracelet\":58419,\"uger\":58420,\"ĉError\":58421,\"Sweet\":58422,\"(\\\"/\\\");Ċ\":58423,\"hx\":58424,\"Ġunreasonable\":58425,\"Interpreter\":58426,\"Ġloft\":58427,\"_producto\":58428,\"Ġsocietal\":58429,\".Parser\":58430,\"ĠAdapt\":58431,\".foo\":58432,\"(where\":58433,\".Feature\":58434,\"ĠYamaha\":58435,\"glass\":58436,\"Forge\":58437,\"Ġprohibits\":58438,\"Ġcapacities\":58439,\"Ġíķ¨ìĪĺ\":58440,\"Ġpermutation\":58441,\"Ġihm\":58442,\"Fld\":58443,\"elial\":58444,\"===========Ċ\":58445,\"@Configuration\":58446,\"Ġgeared\":58447,\"ioso\":58448,\"iesta\":58449,\"translations\":58450,\"InputChange\":58451,\"Popular\":58452,\"ĠPLUS\":58453,\"Ġvf\":58454,\"_Free\":58455,\"bbox\":58456,\"Ġcausal\":58457,\"PILE\":58458,\"ĠschÃ¶\":58459,\"Ġironic\":58460,\"Mir\":58461,\".@\":58462,\"åįĹ\":58463,\"Ġèĩ\":58464,\"Rew\":58465,\"ulence\":58466,\"flen\":58467,\"ĠcanActivate\":58468,\"-response\":58469,\"Ġaccents\":58470,\"ignored\":58471,\"Â°F\":58472,\".DependencyInjection\":58473,\"ĉpoint\":58474,\"Ġcontingent\":58475,\"Ġsquash\":58476,\"Ġparms\":58477,\"ĠCemetery\":58478,\"ĠdeltaTime\":58479,\"ĠDOS\":58480,\"Ġvanished\":58481,\"Ð°ÑĢÐ°Ð¼ÐµÑĤ\":58482,\"ĠDPS\":58483,\"tfoot\":58484,\"ĠZus\":58485,\"_INSTALL\":58486,\"GAN\":58487,\"Ġarb\":58488,\"Ġmunicipalities\":58489,\"IntoConstraints\":58490,\"AutoresizingMaskIntoConstraints\":58491,\",image\":58492,\"_ignore\":58493,\"Ġdangerously\":58494,\"quisa\":58495,\"pluck\":58496,\"Ġharus\":58497,\"uppe\":58498,\"HttpException\":58499,\"Bracket\":58500,\".''ĊĊ\":58501,\"ĠTol\":58502,\"ĠViewer\":58503,\"zbollah\":58504,\".CodeAnalysis\":58505,\"Ã¬nh\":58506,\"Ġcorrectamente\":58507,\".da\":58508,\"ĠAlger\":58509,\"×Ĳ\":58510,\"baum\":58511,\"ĠPanther\":58512,\"participant\":58513,\"å¿ħ\":58514,\"-sup\":58515,\"Ġemulator\":58516,\"Ġfading\":58517,\"ĠWolver\":58518,\"creates\":58519,\"Ġbookings\":58520,\".Question\":58521,\"§è¡Į\":58522,\"Ġstresses\":58523,\"Ġrewritten\":58524,\".PIPE\":58525,\"edes\":58526,\"Ġcbd\":58527,\"\\\":\\\"/\":58528,\"Ġenhancements\":58529,\"_sy\":58530,\"BIN\":58531,\"ĠSlip\":58532,\"Inspect\":58533,\"ĠWeg\":58534,\"Ġcongregation\":58535,\"Ġ_:\":58536,\"_rm\":58537,\"Framebuffer\":58538,\"Ġ'&#\":58539,\"ĠFallout\":58540,\"IsRequired\":58541,\"ĠPearson\":58542,\"ĠFACT\":58543,\"Ġrelie\":58544,\"ĉbox\":58545,\"ĠShepherd\":58546,\"ĠWikiLeaks\":58547,\"ĠCollector\":58548,\"Ġresized\":58549,\"methodName\":58550,\"ĠeventType\":58551,\"ĠAthen\":58552,\"Descriptors\":58553,\"Ġbers\":58554,\"-oper\":58555,\"ĠInitially\":58556,\"å¡\":58557,\"_BTN\":58558,\"ĠĠĠĠĠĠĠĠĠčĊ\":58559,\"Ã¡b\":58560,\"_campaign\":58561,\"_watch\":58562,\"Ford\":58563,\"-datepicker\":58564,\"Ġvisc\":58565,\"Ġsatu\":58566,\"_sms\":58567,\"Ġcontador\":58568,\"-svg\":58569,\"ĠDOI\":58570,\"$args\":58571,\"Ġknob\":58572,\".BOLD\":58573,\"Ġdebated\":58574,\"imgs\":58575,\"sockopt\":58576,\"truth\":58577,\"ĠFees\":58578,\"ĠhWnd\":58579,\"_food\":58580,\"Ġabras\":58581,\"Ġnotions\":58582,\"ĠTod\":58583,\":create\":58584,\"ĠConflict\":58585,\"Usuarios\":58586,\"OTOS\":58587,\"Ġmsm\":58588,\"KHTML\":58589,\"([(\":58590,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":58591,\"Ġ}]\":58592,\"wizard\":58593,\"Ġmientras\":58594,\"ĠdataList\":58595,\"Ġemerges\":58596,\"Äĥng\":58597,\".ReadInt\":58598,\"PGA\":58599,\"ILLISE\":58600,\"IEnumerator\":58601,\"(tuple\":58602,\"Christmas\":58603,\"LookAndFeel\":58604,\"ogenerated\":58605,\"Ġ#ĊĊ\":58606,\"controlled\":58607,\"Ġexquisite\":58608,\"Ġacest\":58609,\"ReadWrite\":58610,\"Gain\":58611,\"ãĢįãĢĮ\":58612,\"Ġcopyrighted\":58613,\"Ġdoom\":58614,\".TableLayoutPanel\":58615,\"ĠDort\":58616,\"Ġchili\":58617,\"Ġwerk\":58618,\"ĠEVENTS\":58619,\"ĠBeacon\":58620,\"Ġshipments\":58621,\"Ġsebagai\":58622,\"upon\":58623,\"utom\":58624,\".converter\":58625,\".DropTable\":58626,\"={}Ċ\":58627,\"fic\":58628,\"~ĊĊ\":58629,\"Ġlesbians\":58630,\"_na\":58631,\"Foreign\":58632,\"ĉthen\":58633,\"/ms\":58634,\"Ġori\":58635,\"getProperty\":58636,\"ĉsnprintf\":58637,\"hesion\":58638,\"ãģ¤\":58639,\"\\\"},\\\"\":58640,\"Ġacrylic\":58641,\"Pers\":58642,\"@Enable\":58643,\"Isl\":58644,\"(Card\":58645,\".Stack\":58646,\"Licensed\":58647,\"_GUID\":58648,\":title\":58649,\"Ġhust\":58650,\"ĠprincipalTable\":58651,\"anitize\":58652,\"/embed\":58653,\"Ġensured\":58654,\"ĠEGL\":58655,\"ÙĪØ±\":58656,\"ĠåĪĨ\":58657,\"/,Ċ\":58658,\"Ġfundraiser\":58659,\"KeyName\":58660,\"Ġmarched\":58661,\"_VALUES\":58662,\"ĠScenario\":58663,\"Ġmetic\":58664,\"_associ\":58665,\"ĠPastor\":58666,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":58667,\"erate\":58668,\"Ġinvitations\":58669,\"quoise\":58670,\"Ġblaming\":58671,\"Ġdaring\":58672,\"UMMY\":58673,\"Ġricher\":58674,\"emaker\":58675,\"ĠIdentification\":58676,\"ĠìĿ¸\":58677,\"ĠBindingFlags\":58678,\"chas\":58679,\"Ġresilient\":58680,\"_pg\":58681,\"Ġreleg\":58682,\"ĠIRA\":58683,\"STE\":58684,\"Ġtractor\":58685,\"-loading\":58686,\"ĠPreviously\":58687,\"ĠVacc\":58688,\"/be\":58689,\"ĠnÃ¥r\":58690,\"Ġurlencode\":58691,\"ĠNorfolk\":58692,\".Release\":58693,\"ĠNeutral\":58694,\"ä¸ŃåĽ½\":58695,\"ĠArlington\":58696,\"Ġalleges\":58697,\"ĠWriters\":58698,\"Tester\":58699,\"ĠRally\":58700,\"ĠcÃ¡\":58701,\"ĉPrint\":58702,\"ĠâĩĴ\":58703,\"ĠUserController\":58704,\"ĠSeeking\":58705,\".VAL\":58706,\"ListNode\":58707,\"_ff\":58708,\"ĠPhillip\":58709,\"FACT\":58710,\"Ġcaramel\":58711,\"ĠMultip\":58712,\"ĠCompared\":58713,\"ĠSerbia\":58714,\"Ł³\":58715,\"Ġrevive\":58716,\"ĠKanye\":58717,\"Ġverge\":58718,\"ĠBulgaria\":58719,\"getBody\":58720,\"Ġ|>\":58721,\"ceph\":58722,\".DateTimePicker\":58723,\".\\\";ĊĊ\":58724,\"ĠTie\":58725,\",item\":58726,\"Ġmenn\":58727,\"Gas\":58728,\"ocha\":58729,\"_virtual\":58730,\"Ġmasterpiece\":58731,\"_sequences\":58732,\"LTE\":58733,\"ĠSubmission\":58734,\"Caller\":58735,\"$\\\\\":58736,\"Sport\":58737,\"agus\":58738,\"ConstraintMaker\":58739,\"Ġcoloc\":58740,\"Ġwig\":58741,\"ĠÐ£\":58742,\"ĉArray\":58743,\"Looks\":58744,\"ĠGTA\":58745,\".steps\":58746,\"atchewan\":58747,\"_ranges\":58748,\"extAlignment\":58749,\"ĠBrennan\":58750,\"Ġabstraction\":58751,\"ulerAngles\":58752,\".misc\":58753,\"Ġantibodies\":58754,\"Ġexponential\":58755,\"ĠCHANNEL\":58756,\"expense\":58757,\"'y\":58758,\"Ġdetectives\":58759,\"Ġpurported\":58760,\"YSTEM\":58761,\"Ġradioactive\":58762,\"ĠLatina\":58763,\".Encoding\":58764,\".TAG\":58765,\"xin\":58766,\"Degree\":58767,\"uracion\":58768,\"prices\":58769,\"ĠReferentialAction\":58770,\"Ġrarity\":58771,\"Ġpiles\":58772,\"gende\":58773,\"_projects\":58774,\"_globals\":58775,\".startTime\":58776,\"Ġêµ¬\":58777,\"SECTION\":58778,\"_publish\":58779,\"Fault\":58780,\"DDL\":58781,\"_prior\":58782,\"Mom\":58783,\"Ġthicker\":58784,\"Ġsequelize\":58785,\"Ġessentials\":58786,\"stras\":58787,\"intr\":58788,\">(()\":58789,\".management\":58790,\"eil\":58791,\"éĹŃ\":58792,\"Aware\":58793,\".City\":58794,\"ĠArbit\":58795,\"_DM\":58796,\"_keyboard\":58797,\"LObject\":58798,\"-webpack\":58799,\"ĠNewport\":58800,\"ĠprincipalColumn\":58801,\"legant\":58802,\"Ġpallet\":58803,\"Ġfracture\":58804,\"Ġgmail\":58805,\".Meta\":58806,\"Above\":58807,\".KeyEvent\":58808,\"jit\":58809,\"_macro\":58810,\"_PUSH\":58811,\"á»©\":58812,\"/controller\":58813,\"åĬłè½½\":58814,\"Ġsuperficial\":58815,\"exterity\":58816,\"Ġmensagem\":58817,\"Wind\":58818,\"iston\":58819,\".openapi\":58820,\"Ð¸ÑĢÐ¾Ð²\":58821,\"ĠSerializer\":58822,\"uctive\":58823,\"Ġzar\":58824,\"Places\":58825,\".Static\":58826,\"Ba\":58827,\"Ġinadvert\":58828,\"ĠIndonesian\":58829,\"_IPV\":58830,\"(horizontal\":58831,\"ĠgetTitle\":58832,\"idepress\":58833,\"ĠConsoleColor\":58834,\"ipers\":58835,\"$out\":58836,\"Ġfestive\":58837,\"Ġevenings\":58838,\".GetData\":58839,\"uitka\":58840,\"ĠManuals\":58841,\"ussed\":58842,\"_Max\":58843,\".Chat\":58844,\"ĠAircraft\":58845,\"=com\":58846,\"FOUND\":58847,\"apro\":58848,\"Ġtreasures\":58849,\"_alive\":58850,\"Ġgadget\":58851,\"eking\":58852,\"ButtonDown\":58853,\"Browsable\":58854,\".PERMISSION\":58855,\"PASSWORD\":58856,\"ĠHASH\":58857,\"fÃ©\":58858,\"\\\\TestCase\":58859,\"LOSS\":58860,\"others\":58861,\",J\":58862,\"Ġasshole\":58863,\"werk\":58864,\"ĠmÃ£\":58865,\".ie\":58866,\"evil\":58867,\"kontakte\":58868,\"////////////////////////////////////////////////////////////////////////////////Ċ\":58869,\"=sys\":58870,\"ĉlock\":58871,\"--;ĊĊ\":58872,\"_FUN\":58873,\"FillColor\":58874,\"Ã³a\":58875,\"prend\":58876,\"Ġcompressor\":58877,\"Mother\":58878,\"ĠArcher\":58879,\".goto\":58880,\"ĠwÃ¼rde\":58881,\"Ġbamboo\":58882,\"ï¼İ\":58883,\"ĠTrees\":58884,\"Ġbumper\":58885,\"Ġsausage\":58886,\"ĠElasticsearch\":58887,\"Ġhorizontally\":58888,\"ĠGul\":58889,\"Immutable\":58890,\"Ġloser\":58891,\"Ġaborted\":58892,\"-demo\":58893,\"ĠHatch\":58894,\"Ġunde\":58895,\"Ġprocesso\":58896,\"-call\":58897,\"Income\":58898,\"åĥ\":58899,\"_returns\":58900,\"'].\\\"'\":58901,\"(sw\":58902,\"CBS\":58903,\"amilies\":58904,\"ĠYourself\":58905,\"ĠHolt\":58906,\".MON\":58907,\"à§ĩ\":58908,\"ÑĪÐµ\":58909,\"anon\":58910,\"ĠFontAwesome\":58911,\"producer\":58912,\"jr\":58913,\"Ġmau\":58914,\"ĉinter\":58915,\"Ġdishonest\":58916,\"Ġmagna\":58917,\"ĠCollective\":58918,\"Ġvraiment\":58919,\"Ġchoix\":58920,\"stay\":58921,\"Ġwelding\":58922,\"rising\":58923,\",min\":58924,\"ĠFate\":58925,\"glob\":58926,\"RGBA\":58927,\"Ġdette\":58928,\"Ven\":58929,\"Ġembarrassment\":58930,\".DELETE\":58931,\"gregar\":58932,\"-render\":58933,\"(bucket\":58934,\"\\\">ĊĊĊ\":58935,\".waitKey\":58936,\"Busy\":58937,\"Ġdifferentiation\":58938,\"ĠCST\":58939,\".Constant\":58940,\"ĠlineNumber\":58941,\"(matches\":58942,\"Ġwebsocket\":58943,\"Ġbarred\":58944,\"Ġpuedes\":58945,\"Mono\":58946,\"CORE\":58947,\"IID\":58948,\"ĠĠĠĠčĊčĊ\":58949,\"ĠpÃºblico\":58950,\"leaning\":58951,\"Ġcleansing\":58952,\"Ġcris\":58953,\"ĠDevils\":58954,\"_SETTING\":58955,\"untary\":58956,\".);Ċ\":58957,\"ĊĠĠĠĊ\":58958,\"[curr\":58959,\"tsy\":58960,\"ĠAlexis\":58961,\"ritel\":58962,\"Ġpetroleum\":58963,\".preprocessing\":58964,\"matter\":58965,\"ForResult\":58966,\"-license\":58967,\"Ġtravellers\":58968,\"ĠDispatcher\":58969,\"ennifer\":58970,\"Ġdigestive\":58971,\"PED\":58972,\"hibition\":58973,\"MASConstraintMaker\":58974,\"ĠWatt\":58975,\"Benef\":58976,\".setView\":58977,\"dto\":58978,\"TEE\":58979,\"ĠPelosi\":58980,\"_EXTRA\":58981,\"Ġmedals\":58982,\"xhr\":58983,\"forecast\":58984,\"Ġnargin\":58985,\"ouns\":58986,\"-fill\":58987,\"_CURSOR\":58988,\"Ġsupervised\":58989,\"Ġturf\":58990,\"ĠEdgar\":58991,\"POSITION\":58992,\"ĠcategoryId\":58993,\"âī\":58994,\"_ER\":58995,\"á»§a\":58996,\"Shown\":58997,\".ll\":58998,\"_POLICY\":58999,\"(),'\":59000,\"ĠPrev\":59001,\"ĠStringField\":59002,\"ĉGlobal\":59003,\"assed\":59004,\"Throughout\":59005,\"ostringstream\":59006,\".awtextra\":59007,\"Ġslopes\":59008,\"ĠSequential\":59009,\"Ġgiorn\":59010,\"Ġzelf\":59011,\"Ġversatility\":59012,\"leneck\":59013,\".cgi\":59014,\"Ġdoubling\":59015,\"ĠBangkok\":59016,\"Ġbuurt\":59017,\"ĠusuÃ¡rio\":59018,\"studio\":59019,\"Ġjeunes\":59020,\"Ġmuted\":59021,\"Ġips\":59022,\"_fraction\":59023,\"&&(\":59024,\"Ġstunt\":59025,\"');?></\":59026,\"ĠLiga\":59027,\"ĠqualitÃ©\":59028,\"Assignable\":59029,\"Ġworkaround\":59030,\"Ġspur\":59031,\"Ġslew\":59032,\"_GE\":59033,\"ĠAgricultural\":59034,\"Ġrelentless\":59035,\"(Query\":59036,\"ĠSections\":59037,\"Ġreviewers\":59038,\"Rain\":59039,\"dlg\":59040,\"assertFalse\":59041,\"Ġnominees\":59042,\"__).\":59043,\".dynamic\":59044,\"ĠPBS\":59045,\"Changing\":59046,\"Ġslightest\":59047,\"ĠMang\":59048,\"}>čĊ\":59049,\"Ġevapor\":59050,\"bable\":59051,\"ĠPRICE\":59052,\"Ġæ³\":59053,\"lucent\":59054,\"Ġvamp\":59055,\"ĠTechnician\":59056,\"Ġuniqueness\":59057,\"Mes\":59058,\"urban\":59059,\".parametrize\":59060,\"ĠReplay\":59061,\"Sessions\":59062,\"embr\":59063,\"-Americans\":59064,\"_PROXY\":59065,\"Ġpian\":59066,\"Ġtrie\":59067,\"ĠDestructor\":59068,\"GameState\":59069,\"ĠIMF\":59070,\"chin\":59071,\"Ġporte\":59072,\"ĠSwal\":59073,\"åŁİ\":59074,\"Substring\":59075,\"iming\":59076,\"/Library\":59077,\"Ġfrightened\":59078,\"writes\":59079,\"Ġrecursos\":59080,\"arResult\":59081,\"_INITIALIZ\":59082,\"ĠBadge\":59083,\"_crc\":59084,\"Eight\":59085,\"ĠDISTINCT\":59086,\"Ġthro\":59087,\"@Xml\":59088,\"ĠLegendary\":59089,\"-twitter\":59090,\"_easy\":59091,\"Ġ+++\":59092,\"(DATA\":59093,\".Locale\":59094,\"ĠkÃ¤\":59095,\"Ġnurt\":59096,\"Ġcruis\":59097,\"_ios\":59098,\"Ġsensing\":59099,\"_Line\":59100,\"ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":59101,\"pong\":59102,\"oleon\":59103,\"Ġwildcard\":59104,\"çĶ¨æĪ·åĲį\":59105,\"Ġbegging\":59106,\"Rod\":59107,\"ĠÃİ\":59108,\"_CELL\":59109,\"Researchers\":59110,\".selector\":59111,\"_ing\":59112,\"Ġaspiring\":59113,\"Ġimmortal\":59114,\"Ġymin\":59115,\"_robot\":59116,\"Ġplur\":59117,\"BTC\":59118,\"ĠDID\":59119,\"Ġpiercing\":59120,\"*u\":59121,\"_DEFINED\":59122,\"ĠThi\":59123,\"itaire\":59124,\"(media\":59125,\"-ons\":59126,\"Ġchefs\":59127,\"Ġ\\\"*.\":59128,\"/AP\":59129,\"Ġrazor\":59130,\"ĠsearchData\":59131,\"Ġ=&\":59132,\"ĠãĢĤ\":59133,\"Ġmourn\":59134,\"tingham\":59135,\"Ġoli\":59136,\"ĠVernon\":59137,\"_RS\":59138,\"ŀæĢ§\":59139,\"ĠfÃ¡cil\":59140,\"angen\":59141,\"celain\":59142,\"Ġail\":59143,\"lest\":59144,\"ĠQCOMPARE\":59145,\"gain\":59146,\"ĠÎµ\":59147,\"ĠKob\":59148,\"ĠFault\":59149,\"_configs\":59150,\"ç»ĵæŀľ\":59151,\".+\":59152,\"calar\":59153,\"(colors\":59154,\"Mul\":59155,\"_ART\":59156,\"Ġexperimenting\":59157,\"ermen\":59158,\"ĠAnglo\":59159,\".FixedSingle\":59160,\"Sea\":59161,\"Ġctxt\":59162,\".slider\":59163,\"Collapse\":59164,\"Grey\":59165,\"Ġfld\":59166,\"-proof\":59167,\".capacity\":59168,\"getParent\":59169,\"ĠCompliance\":59170,\"Ġburgl\":59171,\"-rec\":59172,\"Ġoverwritten\":59173,\"MU\":59174,\"Ġrouters\":59175,\"ĉModel\":59176,\"Ġfantasies\":59177,\"avian\":59178,\"_prec\":59179,\"ĠScandin\":59180,\"Ġ//<\":59181,\"/oct\":59182,\"Ġceremonies\":59183,\"Months\":59184,\"undy\":59185,\"Ġqued\":59186,\"ĠNou\":59187,\"ĠVibr\":59188,\".rgb\":59189,\"Ġcitrus\":59190,\"Ġbraces\":59191,\"-uppercase\":59192,\"getTable\":59193,\"Ġdopo\":59194,\"ĠKerr\":59195,\"_CHILD\":59196,\"-cloud\":59197,\"ĉMatrix\":59198,\"Ġgardening\":59199,\"Sing\":59200,\"almost\":59201,\"Requirements\":59202,\"uguay\":59203,\"(Property\":59204,\"subscriber\":59205,\"FAST\":59206,\"reaction\":59207,\"(lp\":59208,\")})Ċ\":59209,\"`).\":59210,\".wallet\":59211,\"_exchange\":59212,\".Maximum\":59213,\"ĠVerb\":59214,\"âĶģ\":59215,\"()<\":59216,\"ï¼ĽĊ\":59217,\"ROT\":59218,\"CARD\":59219,\"ubit\":59220,\"{@\":59221,\"_kel\":59222,\"ĠTooltip\":59223,\"MySQL\":59224,\"MainActivity\":59225,\"arf\":59226,\"Ġmalign\":59227,\"Ġseinen\":59228,\"apist\":59229,\"Ġ<%\":59230,\"MethodImpl\":59231,\"Mil\":59232,\"ĠMick\":59233,\".depend\":59234,\"<ID\":59235,\"Ġpredictive\":59236,\"ĠAPPLICATION\":59237,\"lef\":59238,\"dimensions\":59239,\"Ġconocer\":59240,\"/conf\":59241,\"ĠTracy\":59242,\"Foto\":59243,\"_remaining\":59244,\"=file\":59245,\"ĠpageIndex\":59246,\"ĠParish\":59247,\"Ġtexas\":59248,\"ĠMAGIC\":59249,\"ĠHew\":59250,\"difference\":59251,\"Ġaltura\":59252,\"cum\":59253,\"ĉdataType\":59254,\"Ġcaracteres\":59255,\"aviours\":59256,\"ĠVOID\":59257,\"è¿ĳ\":59258,\"PUBLIC\":59259,\"Bio\":59260,\"ĠstringByAppending\":59261,\"ParseException\":59262,\"ĠSuff\":59263,\"ĠNorton\":59264,\"/details\":59265,\".null\":59266,\">>&\":59267,\"ĉok\":59268,\"-low\":59269,\".usuario\":59270,\"nested\":59271,\"XB\":59272,\"OURS\":59273,\".BorderColor\":59274,\"Ġbrow\":59275,\"ĠÐķ\":59276,\"corr\":59277,\"ĠRedskins\":59278,\".getTag\":59279,\".getTransaction\":59280,\"Ġstigma\":59281,\"hardt\":59282,\"ĠPlayerPrefs\":59283,\"alsy\":59284,\"ucson\":59285,\"Languages\":59286,\"ĠOlivia\":59287,\"Ġtac\":59288,\"Ġbli\":59289,\"Ġcaval\":59290,\"Ġconsolidated\":59291,\"Ġperil\":59292,\"Ġdele\":59293,\"Ġformulated\":59294,\"Ġhighways\":59295,\".spawn\":59296,\"==$\":59297,\"ĠNiet\":59298,\"Ġveggies\":59299,\"ypo\":59300,\"-rule\":59301,\"ĠVie\":59302,\"/epl\":59303,\"Ġenfants\":59304,\"stringLiteral\":59305,\"Ġtoughest\":59306,\"buyer\":59307,\"Ġcovariance\":59308,\"Ġili\":59309,\"ĠSophie\":59310,\"ĠBAB\":59311,\"Ġ\\\"),\":59312,\"ĠUk\":59313,\"currentIndex\":59314,\"_userdata\":59315,\".codec\":59316,\"ĠPunjab\":59317,\"ĠSNP\":59318,\"lol\":59319,\"advance\":59320,\"Ġcomfy\":59321,\"JsonIgnore\":59322,\"Ġfashionable\":59323,\"ĠICON\":59324,\"Ġora\":59325,\"ĠPricing\":59326,\"<num\":59327,\"ĠIRC\":59328,\"ERV\":59329,\"ĠMein\":59330,\"ĠIDictionary\":59331,\"ADOW\":59332,\"isNew\":59333,\"ĠDevon\":59334,\"atl\":59335,\"(requestCode\":59336,\"ĉPreparedStatement\":59337,\"IMPORT\":59338,\"Ġmarital\":59339,\"_SELECTED\":59340,\"getResponse\":59341,\"arDown\":59342,\"BV\":59343,\"ibName\":59344,\"ĠPATCH\":59345,\"Ã¤Ã¤n\":59346,\"Ġdaar\":59347,\"ĠFileMode\":59348,\"Ġmarty\":59349,\".SpringApplication\":59350,\"cene\":59351,\"ampoline\":59352,\"getSize\":59353,\"Restart\":59354,\"æķĪ\":59355,\".projects\":59356,\"ĠEthiopia\":59357,\"Ġstatuses\":59358,\"TION\":59359,\"(bg\":59360,\"ĠXunit\":59361,\"Temporary\":59362,\"ĠEngagement\":59363,\"Ġxf\":59364,\"Ġproxies\":59365,\"Ġgenesis\":59366,\"PagerAdapter\":59367,\"ĠSlave\":59368,\"Ġsunglasses\":59369,\"ĠChloe\":59370,\"Ġkoji\":59371,\"adem\":59372,\"ĉJSONObject\":59373,\"Î³\":59374,\"Ġhors\":59375,\"*w\":59376,\"Ã³r\":59377,\"esch\":59378,\"Ġcriticised\":59379,\"zial\":59380,\"ĠSalem\":59381,\".Vertical\":59382,\"ĠRash\":59383,\">E\":59384,\"tering\":59385,\"/screens\":59386,\"Ġheightened\":59387,\"Ð°ÑĢÑĤ\":59388,\"Authorities\":59389,\"_bbox\":59390,\"Ã¼nst\":59391,\".fontSize\":59392,\"ĠBOOLEAN\":59393,\"divide\":59394,\"ĠSloven\":59395,\"ucer\":59396,\"ÙĴ\":59397,\"stub\":59398,\"Ġnavigating\":59399,\":animated\":59400,\"_NOW\":59401,\"_vect\":59402,\"}{Ċ\":59403,\"@(\":59404,\"Ġtelecom\":59405,\"Ġcontracting\":59406,\"ĠAssange\":59407,\"Ġextracting\":59408,\"ĠgrÃ¶\":59409,\"cobra\":59410,\".DIS\":59411,\"Ġcrab\":59412,\"Ġtwitch\":59413,\"Ġverts\":59414,\"Ġrejects\":59415,\"ĉformat\":59416,\"Ġregeneration\":59417,\".Sys\":59418,\"solve\":59419,\"ĉdialog\":59420,\"shi\":59421,\"meter\":59422,\"(best\":59423,\"validators\":59424,\"Ġonwards\":59425,\"Ġguru\":59426,\"Ġmoderator\":59427,\"owied\":59428,\"experiment\":59429,\"rub\":59430,\"Ġmqtt\":59431,\"ĠCaucas\":59432,\"Ġnationalism\":59433,\"Ġmange\":59434,\"ĉImGui\":59435,\"/Edit\":59436,\"Ġinh\":59437,\"Ġintellig\":59438,\"erokee\":59439,\"ĉexport\":59440,\"Ġdiscriminate\":59441,\"subtract\":59442,\"ĠMoodle\":59443,\"enser\":59444,\"ĠGuides\":59445,\"RAP\":59446,\"-hot\":59447,\"_grp\":59448,\".picture\":59449,\"XA\":59450,\"ĠinitView\":59451,\"_Comm\":59452,\"Ġoverdose\":59453,\"Ġ+ĊĊ\":59454,\"ĠSilent\":59455,\"shows\":59456,\"Ġinterpolate\":59457,\"Formation\":59458,\"Ġbisc\":59459,\"markets\":59460,\"(SC\":59461,\"Ze\":59462,\"ĠNetworking\":59463,\"Ġadrenal\":59464,\"ĠGuns\":59465,\"eteor\":59466,\"Declared\":59467,\"orgetown\":59468,\"Ġkarena\":59469,\"/password\":59470,\"_addresses\":59471,\"ITERAL\":59472,\"Buzz\":59473,\"ĠConway\":59474,\"(case\":59475,\"PWD\":59476,\"heiro\":59477,\"(act\":59478,\"**čĊ\":59479,\"());ĊĊĊ\":59480,\"Ġanv\":59481,\"Ġ..ĊĊ\":59482,\"(MenuItem\":59483,\"(mail\":59484,\"_sections\":59485,\"ĉnet\":59486,\"Ġplut\":59487,\"Ġwrench\":59488,\"/object\":59489,\"ĠIst\":59490,\"ĠVIS\":59491,\"/pub\":59492,\"alten\":59493,\"Ġguitars\":59494,\"Ġantibiotic\":59495,\"ï¼ĸ\":59496,\"Â¹\":59497,\"Ġ\\\"+\\\"\":59498,\"formula\":59499,\"Ġbabes\":59500,\"ĠPrompt\":59501,\"Ġenim\":59502,\"/player\":59503,\"ĉref\":59504,\"ĠbyÄĩ\":59505,\"Ġconsumes\":59506,\"ĠHast\":59507,\"ĠTao\":59508,\"Ġ'))Ċ\":59509,\"Ġclam\":59510,\"Ġthighs\":59511,\"Ġmotif\":59512,\"ApiOperation\":59513,\"ĠWL\":59514,\"getC\":59515,\"ĉflags\":59516,\"ointments\":59517,\"Ġeconomical\":59518,\"needle\":59519,\"xls\":59520,\"practice\":59521,\"utzer\":59522,\"timeofday\":59523,\"-output\":59524,\"ĠfindById\":59525,\"ĠBuddy\":59526,\"ÐŀÑĤ\":59527,\"Seven\":59528,\"ĠBark\":59529,\"Ġenvoy\":59530,\"_algorithm\":59531,\"åĪ©\":59532,\"Ġballistic\":59533,\"ç§»\":59534,\"rades\":59535,\"ĉdoc\":59536,\"roducing\":59537,\"ĠEating\":59538,\"Unmount\":59539,\"/dataTables\":59540,\"_bonus\":59541,\"Ġlitt\":59542,\"pps\":59543,\")localObject\":59544,\"perf\":59545,\"ĠHelvetica\":59546,\"shutdown\":59547,\"/ml\":59548,\".tokens\":59549,\"ĠHardcore\":59550,\",row\":59551,\"/bg\":59552,\"Scaler\":59553,\"âĢĶas\":59554,\"_logits\":59555,\"âĢĻint\":59556,\"ĉApp\":59557,\"Implicit\":59558,\".Fprintf\":59559,\"ETO\":59560,\"Ġterra\":59561,\"Ġpossessing\":59562,\".rstrip\":59563,\",),\":59564,\"=yes\":59565,\"ĠStripe\":59566,\"?=\":59567,\"neutral\":59568,\".good\":59569,\"Ġkennen\":59570,\"ĠSung\":59571,\"fault\":59572,\"ystatechange\":59573,\"Canadian\":59574,\"','\\\".$\":59575,\"ĠMits\":59576,\"Ã¦nd\":59577,\"ĠSTRUCT\":59578,\"ĠURLWithString\":59579,\"ĠCompass\":59580,\"Ġ--ĊĊ\":59581,\"ĠNSLayoutConstraint\":59582,\"|min\":59583,\"-adjust\":59584,\"Ġrebuilt\":59585,\"LIGHT\":59586,\"/se\":59587,\"-mount\":59588,\"vpn\":59589,\"validated\":59590,\"(QObject\":59591,\"Ġignition\":59592,\"ĠChargers\":59593,\"RYPTO\":59594,\"]initWithFrame\":59595,\"ĠFluid\":59596,\"Ġcadre\":59597,\"Ġnominations\":59598,\"Neill\":59599,\"ĠHou\":59600,\"Ġcurrents\":59601,\"_gene\":59602,\"(inp\":59603,\"Paris\":59604,\"zÄĻ\":59605,\"aggregate\":59606,\"Ġassoc\":59607,\"weeted\":59608,\"errat\":59609,\"âĢĵĊĊ\":59610,\"Ġ'/',Ċ\":59611,\"fixture\":59612,\"ĠHighest\":59613,\"ambient\":59614,\"Ġchmod\":59615,\"Ġconte\":59616,\"Ġsensual\":59617,\"Ġgarment\":59618,\"zers\":59619,\"ĠPowered\":59620,\"domains\":59621,\"Reward\":59622,\"iomanip\":59623,\"Ġcockpit\":59624,\"outfile\":59625,\"Ġbuiltin\":59626,\"Ġinsisting\":59627,\".vars\":59628,\"zipcode\":59629,\"Ġï¿½ï¿½ï¿½ï¿½\":59630,\"fails\":59631,\"Ġconsolidation\":59632,\"_oid\":59633,\"Planet\":59634,\"Ġ=\\\",\":59635,\"ĉel\":59636,\"UILT\":59637,\"Ã¤tz\":59638,\"afari\":59639,\"ĠMcCl\":59640,\"Timeline\":59641,\"Esta\":59642,\"Ġfram\":59643,\"YE\":59644,\"Ġcerebral\":59645,\"OfMonth\":59646,\"ĠPregn\":59647,\"ĠÐºÐ»Ð°ÑģÑģ\":59648,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":59649,\"ĠFres\":59650,\"Approved\":59651,\".Special\":59652,\"ĠProtestant\":59653,\"Ġallergy\":59654,\"_pcm\":59655,\"ĉCopyright\":59656,\"ĠsuperClass\":59657,\"\\\"strconv\":59658,\"ĠMohamed\":59659,\"Ġ'//\":59660,\"ForeColor\":59661,\"Arthur\":59662,\"ĠJungle\":59663,\"Ġveins\":59664,\"Sad\":59665,\"Ġbackups\":59666,\"ĠOpinion\":59667,\"Ã»t\":59668,\"Ġintermitt\":59669,\"odyn\":59670,\"ĠChristina\":59671,\"Ġandre\":59672,\"Ġevacuation\":59673,\"palette\":59674,\"horse\":59675,\"ĠResident\":59676,\"ĠHassan\":59677,\".Nil\":59678,\"Ġaisle\":59679,\"ĠGrowing\":59680,\"Ġbloginfo\":59681,\"/sql\":59682,\"_ioctl\":59683,\"Scaling\":59684,\"ĠMonad\":59685,\"_cpp\":59686,\"ĠHutch\":59687,\"ĠAppleWebKit\":59688,\"Expense\":59689,\"_JOB\":59690,\"Ġpointless\":59691,\"FromBody\":59692,\"antal\":59693,\"Ġdepicting\":59694,\"ĠCELL\":59695,\"Ġrefin\":59696,\"ĠCNC\":59697,\"ì¹ĺ\":59698,\"_dimensions\":59699,\"ĠSAN\":59700,\"Ġaft\":59701,\"Ġfootsteps\":59702,\"ccoli\":59703,\"_PHONE\":59704,\"/math\":59705,\"-kind\":59706,\"ĠMeans\":59707,\"ichael\":59708,\".guna\":59709,\"Ġinauguration\":59710,\"-driving\":59711,\"(delete\":59712,\"ĠtotalCount\":59713,\"_MC\":59714,\".Extension\":59715,\"Commercial\":59716,\"ĠzIndex\":59717,\"<Customer\":59718,\"\\\"g\":59719,\"-share\":59720,\"Ġpact\":59721,\"agara\":59722,\"ĠSIL\":59723,\"_modes\":59724,\"ĠMolecular\":59725,\"Ġsystematically\":59726,\"<G\":59727,\"_scr\":59728,\"ĠOro\":59729,\"asers\":59730,\"Ġbic\":59731,\"Ġdestroys\":59732,\"PIPE\":59733,\".StartPosition\":59734,\"Ġcá»§a\":59735,\"irez\":59736,\".Bunifu\":59737,\"_Function\":59738,\"ĠsÃ¼\":59739,\"_future\":59740,\"ĠWealth\":59741,\"ĠNaturally\":59742,\"æĢ»\":59743,\"_yes\":59744,\"Ġabruptly\":59745,\"StringEncoding\":59746,\"ĠCGPointMake\":59747,\"Ġzh\":59748,\"Ġimperson\":59749,\"Ġpivotal\":59750,\"ĠSomalia\":59751,\"Ġsegmentation\":59752,\"_ANAL\":59753,\"ĠLoginComponent\":59754,\"Consult\":59755,\"Ġtruncated\":59756,\"]\\\";Ċ\":59757,\".getConfig\":59758,\"Ġinternship\":59759,\"Baby\":59760,\"ê°ľ\":59761,\"Ġstrengthened\":59762,\"_MI\":59763,\"basket\":59764,\"Ġnichts\":59765,\"ĠTVs\":59766,\"ĠShan\":59767,\"ãĤµ\":59768,\"racuse\":59769,\".ReLU\":59770,\"/interfaces\":59771,\"ĠgetItemCount\":59772,\"Ġretiring\":59773,\"Ġspecials\":59774,\"ĠentityManager\":59775,\"belief\":59776,\"Ġsolder\":59777,\"daughter\":59778,\"ijkl\":59779,\"Ġutilizes\":59780,\".fixed\":59781,\"SU\":59782,\"Ġdrastic\":59783,\"Ġhacks\":59784,\"grund\":59785,\"ĠMU\":59786,\"ĠStarter\":59787,\".Components\":59788,\"_motor\":59789,\"Golden\":59790,\"Ġlodge\":59791,\"Ġ));\":59792,\"ĠCorinth\":59793,\"Ð¸ÑĩÐµÑģÑĤÐ²Ð¾\":59794,\"Ã³nico\":59795,\"greSQL\":59796,\"ĠFluent\":59797,\"Ġmarc\":59798,\".LoadScene\":59799,\".Groups\":59800,\"Ġerh\":59801,\"ĠAutumn\":59802,\"Stopped\":59803,\"Ġitaliano\":59804,\"Ġminions\":59805,\"ĠAssertions\":59806,\"Ġmux\":59807,\"Bu\":59808,\"Ġ------------------------------------------------------------------------------------------------\":59809,\"ĉup\":59810,\"readystatechange\":59811,\"_Meta\":59812,\"ĠcurrentDate\":59813,\"ĠChapman\":59814,\"Undo\":59815,\"Sean\":59816,\"apr\":59817,\"Ġparm\":59818,\"_icons\":59819,\"ĠSta\":59820,\"Ã¡z\":59821,\"Ġsubdivision\":59822,\"Ġaltering\":59823,\"PNG\":59824,\"ponential\":59825,\"Ġpostgres\":59826,\"ĠBDS\":59827,\"-existent\":59828,\"ĠBradford\":59829,\"ĠOMX\":59830,\"_WHITE\":59831,\"_PROGRAM\":59832,\"qc\":59833,\"ĠtypingsSlinky\":59834,\"ĠPics\":59835,\"_META\":59836,\"ITTER\":59837,\"_subscription\":59838,\"IRONMENT\":59839,\"ĠHyundai\":59840,\"();ĊĊĊĊ\":59841,\"ĠØ³\":59842,\"Ġjac\":59843,\"Ġeliminates\":59844,\")});Ċ\":59845,\"Ġcomprend\":59846,\"ĉinsert\":59847,\"_faces\":59848,\"\\\">$\":59849,\"Ġebay\":59850,\"Ġcaptive\":59851,\"pliant\":59852,\"ĠCalculates\":59853,\"olta\":59854,\"esting\":59855,\"_revision\":59856,\"ĠmÃºs\":59857,\"+m\":59858,\"\\\",\\\"\\\",\\\"\":59859,\"WHAT\":59860,\"Ġcompassionate\":59861,\"harga\":59862,\"[random\":59863,\"Ġmodulo\":59864,\"(sn\":59865,\"Ġoccupations\":59866,\"////Ċ\":59867,\"ĉboard\":59868,\"ĠBalk\":59869,\"wiÄħ\":59870,\"ĠWifi\":59871,\".Profile\":59872,\":maj\":59873,\"ĉmat\":59874,\"LOCKS\":59875,\"(jButton\":59876,\"Ġ('$\":59877,\"Mur\":59878,\"æĮī\":59879,\"bble\":59880,\"Ġfrog\":59881,\"-hide\":59882,\"Ġbroadcaster\":59883,\"à¸ŀ\":59884,\"haled\":59885,\"Ġamusing\":59886,\"_predictions\":59887,\"_intr\":59888,\"Ġeagle\":59889,\"Ð°ÑĤÐµÐ»ÑĮ\":59890,\"ĠgetList\":59891,\"psilon\":59892,\"Ġcharacterization\":59893,\"ARDS\":59894,\"Ġrelocation\":59895,\"Ġrulers\":59896,\"PAY\":59897,\"ĠDefinitely\":59898,\"_Action\":59899,\"Ġclosures\":59900,\"Ġfactual\":59901,\"odynamic\":59902,\"Ġprecautions\":59903,\"niej\":59904,\"ĠParties\":59905,\"ĠSubaru\":59906,\"Ġcousins\":59907,\"arbeit\":59908,\".money\":59909,\"gunta\":59910,\"(and\":59911,\"getitem\":59912,\".StylePriority\":59913,\"Ġslid\":59914,\"singleton\":59915,\"Ġgarn\":59916,\"ĠPAS\":59917,\"Ġdazz\":59918,\"aÅ¼\":59919,\"Ġbogus\":59920,\"ĠMog\":59921,\"Ġrivalry\":59922,\"isol\":59923,\"Ġlandmarks\":59924,\"Ã±as\":59925,\"Bern\":59926,\"ĠSachs\":59927,\"Ġ\\\")ĊĊ\":59928,\"Ġhostility\":59929,\"_mex\":59930,\"mere\":59931,\"Mot\":59932,\"pictureBox\":59933,\"Defense\":59934,\"Ġaffidavit\":59935,\"otherwise\":59936,\".directory\":59937,\"_UnityEngine\":59938,\"-blog\":59939,\".skin\":59940,\"phem\":59941,\"Apellido\":59942,\"erchant\":59943,\"[class\":59944,\"Ġwart\":59945,\".\\\"[\":59946,\"aleur\":59947,\"/back\":59948,\"ĠĠĠĠĉĠĠĠ\":59949,\"Ġprecipitation\":59950,\"Ġobstruction\":59951,\"ĠpObj\":59952,\"Ġrupt\":59953,\"UCKET\":59954,\"aye\":59955,\"æİĴ\":59956,\"gx\":59957,\"Ġecl\":59958,\"Ġsecrecy\":59959,\"/Header\":59960,\"ĠLesb\":59961,\"Ġlei\":59962,\"ĠBulletin\":59963,\"Ġgiveaway\":59964,\".Home\":59965,\"_ROOM\":59966,\"\\\"W\":59967,\"Ġcowork\":59968,\"_ra\":59969,\"ĠCycling\":59970,\"ĠPaw\":59971,\"Ġpupil\":59972,\"/arch\":59973,\"ĠFileUtils\":59974,\"é¦ĸ\":59975,\"rsp\":59976,\"Ġfreedoms\":59977,\"ĠLear\":59978,\"}`).\":59979,\"Ġbowls\":59980,\"/block\":59981,\"_logging\":59982,\"Ġmethane\":59983,\"Ġhorns\":59984,\"Ġwonderfully\":59985,\"Ġalterations\":59986,\"Ġexile\":59987,\"lsen\":59988,\"_pause\":59989,\"_LANGUAGE\":59990,\"ĠUSDA\":59991,\"_mysql\":59992,\"_AMOUNT\":59993,\"ĠLIFE\":59994,\"Ġyoungsters\":59995,\"Ġriots\":59996,\"[E\":59997,\"Ġunforgettable\":59998,\",},Ċ\":59999,\"Disposed\":60000,\"ĠAssassin\":60001,\"UNG\":60002,\"ĠNewsp\":60003,\"UserService\":60004,\":aload\":60005,\"+',\":60006,\"Ġsettlers\":60007,\"Ġscreams\":60008,\"Ġinconvenience\":60009,\".Rotate\":60010,\"Ġjars\":60011,\"ĠPuzzle\":60012,\"Ġmest\":60013,\"arsi\":60014,\"ĠSharma\":60015,\"|(\":60016,\".ds\":60017,\"ĠSacred\":60018,\"_evt\":60019,\"Ġexpresses\":60020,\"Ġhoch\":60021,\"ĠDuch\":60022,\".calls\":60023,\"thr\":60024,\"ĠSheffield\":60025,\".AlertDialog\":60026,\"Ġradically\":60027,\"Ġtrous\":60028,\"Ġprevailing\":60029,\"ĠWWII\":60030,\"âĢĻn\":60031,\"ensely\":60032,\"ĠYesterday\":60033,\"ĠSirius\":60034,\"Ġkillers\":60035,\"ĠFFT\":60036,\"Ġoval\":60037,\"'):čĊ\":60038,\"Ġìłķë³´\":60039,\"ourage\":60040,\"ĠCheckbox\":60041,\"Workbook\":60042,\".defer\":60043,\"_floor\":60044,\"Ġcouncill\":60045,\"Ġnorske\":60046,\"moil\":60047,\"orea\":60048,\"Ġmarketed\":60049,\"_SUR\":60050,\"xAA\":60051,\"Ġstained\":60052,\"eut\":60053,\"ĠMeng\":60054,\"Ġieee\":60055,\".extern\":60056,\"egie\":60057,\"Ġrapp\":60058,\"ĠPyongyang\":60059,\"'class\":60060,\"Mob\":60061,\"ĠinitialValue\":60062,\"_wave\":60063,\"Ġjab\":60064,\"Ġmasculine\":60065,\"Ġamplifier\":60066,\"Ġtty\":60067,\"PathComponent\":60068,\"_xt\":60069,\"ĠGFP\":60070,\"/sec\":60071,\"ĉdispatch\":60072,\"markdown\":60073,\"ĠSchn\":60074,\"bole\":60075,\"Â·Â·\":60076,\"mousemove\":60077,\"ĠerrMsg\":60078,\"Ġasign\":60079,\"_mono\":60080,\"ToSelector\":60081,\"ĠZu\":60082,\"(Rect\":60083,\"ĠErrorCode\":60084,\"latin\":60085,\"angible\":60086,\"vtk\":60087,\"CGSize\":60088,\"Pokemon\":60089,\"Ġclassmates\":60090,\"Ġattracts\":60091,\"ĠTatto\":60092,\"ultan\":60093,\"olÃ³g\":60094,\"Ġhalted\":60095,\"à¤¨\":60096,\"ĠKart\":60097,\"Ġue\":60098,\"_InitStructure\":60099,\"TestClass\":60100,\"ĠAirbnb\":60101,\"_\\\",\":60102,\"Ġcharcoal\":60103,\"Ġipc\":60104,\"ĠStretch\":60105,\".glide\":60106,\"latesAutoresizingMaskIntoConstraints\":60107,\"Ġpotion\":60108,\"ITTLE\":60109,\"Ġcountert\":60110,\"_hd\":60111,\"prepared\":60112,\"Ads\":60113,\"ĠVampire\":60114,\"robots\":60115,\".CreateIndex\":60116,\"StatusLabel\":60117,\"Ġtucked\":60118,\"afÃ¼r\":60119,\"Ut\":60120,\"Ġsweater\":60121,\"_FN\":60122,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĉ\":60123,\"ataka\":60124,\"Ġeyebrows\":60125,\"acoes\":60126,\"uden\":60127,\".LinearLayoutManager\":60128,\"Ġsway\":60129,\"Ġmultin\":60130,\"())))Ċ\":60131,\"ĠNSUInteger\":60132,\"ĠMyBase\":60133,\"Partner\":60134,\"utschen\":60135,\"ĠCater\":60136,\".setBackgroundColor\":60137,\"Ġaccomplishment\":60138,\"_problem\":60139,\".dtd\":60140,\"ĠpageNumber\":60141,\"Ġjackets\":60142,\"Ġcropped\":60143,\"uels\":60144,\"ĠHep\":60145,\"Ġcapped\":60146,\"*Math\":60147,\"_callbacks\":60148,\"Ġpubb\":60149,\"ĠBrunswick\":60150,\".respond\":60151,\"[\\\"_\":60152,\"Ġbedding\":60153,\"hythm\":60154,\"OX\":60155,\"(speed\":60156,\"Ġpesticides\":60157,\"Ġ-------\":60158,\".Blue\":60159,\"Ġnoodles\":60160,\"ĠGoes\":60161,\"Ġsaver\":60162,\"oxy\":60163,\"_completion\":60164,\"ĠSwinger\":60165,\"ĠgetDate\":60166,\"Ġminded\":60167,\"integration\":60168,\"ĠLotus\":60169,\"(stop\":60170,\"(',');Ċ\":60171,\"Ġfloods\":60172,\"ĠWorkflow\":60173,\"Ġerupted\":60174,\"Macro\":60175,\"ĠSauce\":60176,\"ĠeventName\":60177,\"\\\\Input\":60178,\"Breaking\":60179,\"ĉwhen\":60180,\"_pw\":60181,\"INDER\":60182,\"ĠWellness\":60183,\"Ġvoxel\":60184,\"ĠMell\":60185,\"ĠMEDIA\":60186,\"SENS\":60187,\"ĠFunds\":60188,\"ĠMild\":60189,\"<Array\":60190,\"-this\":60191,\"umped\":60192,\"/fw\":60193,\"ĠDbContext\":60194,\"WI\":60195,\"girls\":60196,\"HOW\":60197,\"');?>Ċ\":60198,\"Ġtempting\":60199,\"Ġtestament\":60200,\"Ġbible\":60201,\"Ġconsulted\":60202,\"ĠIndexError\":60203,\"è¨ĺ\":60204,\"Ġkeypad\":60205,\"izzo\":60206,\"(ok\":60207,\"Ġwhatsapp\":60208,\"ĠRemoteException\":60209,\"Ġteamed\":60210,\"âĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶâĢĶ\":60211,\"Â»,\":60212,\"ĠgetTime\":60213,\"diag\":60214,\"issy\":60215,\"Ġhed\":60216,\"Ġknots\":60217,\"jom\":60218,\"Ġfunnel\":60219,\"-mails\":60220,\"Ġexporting\":60221,\"ĠVL\":60222,\"ĠKarn\":60223,\"ĠBuddhism\":60224,\"ĠAllan\":60225,\"_RADIUS\":60226,\"Ġwording\":60227,\"ĠForget\":60228,\"ĠCorona\":60229,\"iphy\":60230,\"Ġlimburg\":60231,\"uggy\":60232,\"ĠUserRepository\":60233,\"imin\":60234,\"(ele\":60235,\"Ġlabelled\":60236,\"ç¤¾\":60237,\"ĠHerman\":60238,\".qq\":60239,\"Ġ\\\"));Ċ\":60240,\"ieber\":60241,\".Translate\":60242,\"ryn\":60243,\"Ġdesenv\":60244,\"umd\":60245,\"Simply\":60246,\"ĉmode\":60247,\"Rpc\":60248,\"ĠValencia\":60249,\"Ġstaffers\":60250,\"Ġselv\":60251,\"ĠSpike\":60252,\"Ġdelic\":60253,\"Ġeru\":60254,\"_DT\":60255,\"Judge\":60256,\"á»ķ\":60257,\"ĠBasin\":60258,\".mutable\":60259,\"\\\"url\":60260,\"Ġtariff\":60261,\"ĠSleeve\":60262,\"Ġflare\":60263,\".dropout\":60264,\"Ġbrides\":60265,\")),čĊ\":60266,\"_constraints\":60267,\"destruct\":60268,\"Outline\":60269,\"Ġdisappears\":60270,\"_locked\":60271,\"ĠNSLocalizedString\":60272,\"cke\":60273,\"ĉnull\":60274,\"adresse\":60275,\"Ġtopping\":60276,\"ĠJoker\":60277,\"bishop\":60278,\"Ð½Ð¾ÑģÑĤÑĮ\":60279,\"andering\":60280,\"_amp\":60281,\"=time\":60282,\"_Space\":60283,\"_PULL\":60284,\"'=\":60285,\"Ġantiqu\":60286,\"Ġcach\":60287,\"___ĊĊ\":60288,\"ONES\":60289,\"Ð¾Ñı\":60290,\"Ġunread\":60291,\".policy\":60292,\"oooooooo\":60293,\"ëŁ¬\":60294,\"Ġusted\":60295,\"ĠRece\":60296,\"Ġallem\":60297,\"ãĥ¼ãĤ¹\":60298,\"ĠThoughts\":60299,\"veillance\":60300,\"istrate\":60301,\"_lane\":60302,\"Ġfamed\":60303,\".GetName\":60304,\"Ġsmoother\":60305,\"ĠQualified\":60306,\"azers\":60307,\"_geo\":60308,\"Fax\":60309,\"ĠMinds\":60310,\"ĠRaises\":60311,\"Ġtranscripts\":60312,\"Conversation\":60313,\"Ġremarked\":60314,\"ëĤĺ\":60315,\"dling\":60316,\"Ġdeploying\":60317,\"ĠsharedApplication\":60318,\"Ġkp\":60319,\"FontAwesomeIcon\":60320,\"_dummy\":60321,\"reiben\":60322,\"ĠJaneiro\":60323,\"Directions\":60324,\".getBean\":60325,\"sass\":60326,\"Ġcommanders\":60327,\"vation\":60328,\"errorCode\":60329,\"ĠAlloy\":60330,\".localized\":60331,\"Ðĳ\":60332,\"Ġdishwasher\":60333,\"ĠSoup\":60334,\"Nu\":60335,\"_Default\":60336,\"Ġuneven\":60337,\"Ġ/>\\\";Ċ\":60338,\"-Based\":60339,\"Ġseamlessly\":60340,\"-null\":60341,\"ĠXC\":60342,\"Ġstew\":60343,\"(delay\":60344,\"ATORS\":60345,\"ĠWheeler\":60346,\"\\\"<?\":60347,\"ĠChandler\":60348,\"Ġretaliation\":60349,\"Ġbuddies\":60350,\"-sizing\":60351,\"ĠEins\":60352,\"Ġ...,\":60353,\"quete\":60354,\"ĠDOC\":60355,\"Ġfalsely\":60356,\"Ġflats\":60357,\"NICALL\":60358,\"Ġlibr\":60359,\"BeNull\":60360,\"imulation\":60361,\"ĉQuery\":60362,\"_ut\":60363,\"Ġplaque\":60364,\"bild\":60365,\"Ġscreamed\":60366,\".mvc\":60367,\".Widget\":60368,\"Ġdiffering\":60369,\"/support\":60370,\"_VOLUME\":60371,\".nodeType\":60372,\"ĉWrite\":60373,\"ĠrÃ³wn\":60374,\"bookmark\":60375,\"_CONN\":60376,\"ĠCreed\":60377,\"Ġinhibition\":60378,\"ĠRehab\":60379,\"uvre\":60380,\"Ġdumps\":60381,\"owej\":60382,\"_placeholder\":60383,\"ĠHWND\":60384,\"Ġdermat\":60385,\".detach\":60386,\"Ġfinalized\":60387,\"geries\":60388,\"idak\":60389,\"_prog\":60390,\"ĠupdateUser\":60391,\"lys\":60392,\".Google\":60393,\"Ġluego\":60394,\"Ġants\":60395,\"æłĩé¢ĺ\":60396,\"ĠDRM\":60397,\"Ð»ÐµÐ½\":60398,\"-db\":60399,\"errick\":60400,\"_ln\":60401,\"..\\\\\":60402,\"ikit\":60403,\"ĠDien\":60404,\"Ġparametros\":60405,\"keypress\":60406,\"ĠKerala\":60407,\"Ġdrained\":60408,\"fÃ¼g\":60409,\"Ġcapit\":60410,\"_aug\":60411,\"tant\":60412,\"NavBar\":60413,\"Ġrollback\":60414,\"Ġley\":60415,\"à¸Ī\":60416,\"ĠBSP\":60417,\"ĠPredictor\":60418,\"Ġwagon\":60419,\"Ġ\\\"|\\\"\":60420,\"Serve\":60421,\".Done\":60422,\"ĠDurch\":60423,\"Provide\":60424,\"ĉscore\":60425,\"_OD\":60426,\".weapon\":60427,\"Ġuniversally\":60428,\"Ġinjunction\":60429,\"_SCROLL\":60430,\".Matrix\":60431,\"ĠMongoClient\":60432,\"buffers\":60433,\"Ġbadges\":60434,\"Ġsharks\":60435,\"ĠShark\":60436,\"MODEL\":60437,\".READ\":60438,\"ĉtag\":60439,\"Ġstrtoupper\":60440,\"ERGY\":60441,\"bias\":60442,\"ĠaccountId\":60443,\"ĠEmmanuel\":60444,\"Ġresorts\":60445,\"Ġsvn\":60446,\"warnings\":60447,\"_IE\":60448,\"LAS\":60449,\"Ġnulla\":60450,\"ĉas\":60451,\"Ġdemean\":60452,\"âĢľAs\":60453,\"Authorized\":60454,\"Ġtendencies\":60455,\"-setting\":60456,\"Ġpreload\":60457,\"Ġcnn\":60458,\"âĢľNo\":60459,\"%)ĊĊ\":60460,\"=T\":60461,\"usto\":60462,\"ĠFIRE\":60463,\"research\":60464,\"ĠÐĵ\":60465,\"ĠLessons\":60466,\".AppendFormat\":60467,\"Ġinitiation\":60468,\"ĠCous\":60469,\"arer\":60470,\"projection\":60471,\"ĠSheets\":60472,\"ĠFold\":60473,\"Reddit\":60474,\"Deleting\":60475,\"Ġzam\":60476,\"ĠNeural\":60477,\"ĠFecha\":60478,\"ĠÂ®\":60479,\"Ġtasted\":60480,\"ĠEnemies\":60481,\"ĠJohnston\":60482,\"Ġdancers\":60483,\"Ġdisabling\":60484,\"Ġpetty\":60485,\"ĠWeld\":60486,\"/--\":60487,\"(sprite\":60488,\"IGO\":60489,\"argout\":60490,\"Ġquarterbacks\":60491,\"dispatcher\":60492,\"ĠSustainable\":60493,\"enarios\":60494,\"ĠSki\":60495,\"Ġfacto\":60496,\"illin\":60497,\"_extensions\":60498,\"Éµ\":60499,\">H\":60500,\"east\":60501,\".air\":60502,\"âĢľBut\":60503,\"ObjectContext\":60504,\"successfully\":60505,\"_land\":60506,\"Ġfolds\":60507,\"_COORD\":60508,\"Ġsubpo\":60509,\".getAddress\":60510,\"instr\":60511,\"Materials\":60512,\"ÑĥÑģÑĤ\":60513,\"deposit\":60514,\"-last\":60515,\"_GRAY\":60516,\"=find\":60517,\"Ġmutant\":60518,\"Ġlesbienne\":60519,\"letcher\":60520,\"ROUGH\":60521,\"ureka\":60522,\".capture\":60523,\"Ġenn\":60524,\"Ġ([[\":60525,\"ĠFlu\":60526,\"ĠtaskId\":60527,\"ĠHussein\":60528,\".folder\":60529,\"Ġausterity\":60530,\"ISTRATION\":60531,\"_Impl\":60532,\"æ³¨æĦı\":60533,\"Ġdecree\":60534,\"-chat\":60535,\"Ġimplication\":60536,\"Ġguesses\":60537,\"ulkan\":60538,\"Analytics\":60539,\".plus\":60540,\"COMMAND\":60541,\"ÐµÐ»Ð¸\":60542,\"Â»ĊĊ\":60543,\"_SITE\":60544,\"ĠequalTo\":60545,\"SupportFragmentManager\":60546,\"ĠRecording\":60547,\"å®ĮæĪĲ\":60548,\"Ġbaggage\":60549,\"Ġpitchers\":60550,\"ĠEh\":60551,\"oque\":60552,\"ĉcnt\":60553,\"Ġ=>$\":60554,\"/foo\":60555,\"IRA\":60556,\"ĠSatellite\":60557,\"borah\":60558,\"Ġ}}\\\"Ċ\":60559,\"ĠEnds\":60560,\"ĠSpray\":60561,\",param\":60562,\".Chrome\":60563,\"*q\":60564,\"thought\":60565,\"ibrated\":60566,\"Ġthieves\":60567,\"Ġbeneficiaries\":60568,\"Entered\":60569,\"ottesville\":60570,\"Ġveterin\":60571,\"ByID\":60572,\"quipe\":60573,\"umption\":60574,\"-unit\":60575,\"ExecutionContext\":60576,\"@s\":60577,\"ĠGiov\":60578,\".ToolTip\":60579,\"_friend\":60580,\"(attributes\":60581,\"Ġdumping\":60582,\"ĠJC\":60583,\"_DOCUMENT\":60584,\"ĠArmour\":60585,\"(insert\":60586,\".HorizontalAlignment\":60587,\"ĠQed\":60588,\"ãģĦãģ¾ãģĻ\":60589,\"/git\":60590,\"ĠYYYY\":60591,\"ĠCardiff\":60592,\"Ġapa\":60593,\"organic\":60594,\"ĠWhereas\":60595,\"ĠæĿ\":60596,\"ĠMia\":60597,\"Ġdemolition\":60598,\"Ġscars\":60599,\"Ġpai\":60600,\"Ġretries\":60601,\"Ġrq\":60602,\"ĠDenis\":60603,\"(Utils\":60604,\"Ġalleviate\":60605,\"ĠPIC\":60606,\"idue\":60607,\"Ġacknowledging\":60608,\"Ġ//////////////////////////////////\":60609,\"ç¡®å®ļ\":60610,\"Ä«\":60611,\"\\\\Json\":60612,\".binary\":60613,\"Ġxtype\":60614,\"signals\":60615,\"ĠAppearance\":60616,\"&r\":60617,\"}s\":60618,\"Ci\":60619,\"ĠIllum\":60620,\"porate\":60621,\"hog\":60622,\"ĠindexOf\":60623,\"\\\\Command\":60624,\"_parallel\":60625,\"ĠSherlock\":60626,\"íĥ\":60627,\"Ġ\\\"\\\")čĊ\":60628,\"////////////////////////////////////////////////////////////////////////////////////////////////\":60629,\"Ġcriticize\":60630,\"ĠSoap\":60631,\"ĠMatcher\":60632,\"Ġgrilled\":60633,\"*T\":60634,\"Ġadore\":60635,\"ulling\":60636,\"Ġjedoch\":60637,\"_refs\":60638,\"leanup\":60639,\"ĠJAXB\":60640,\"Ġroses\":60641,\"ĠLiam\":60642,\"sizei\":60643,\"Ġgetchar\":60644,\"Ġtarde\":60645,\"-tooltip\":60646,\"Ġqualifier\":60647,\"ĠIntermediate\":60648,\"_Window\":60649,\"ĠMalta\":60650,\"Disconnect\":60651,\"ewhere\":60652,\"Campo\":60653,\"Ġirrational\":60654,\"ledo\":60655,\"ĠDN\":60656,\"ARGV\":60657,\"Ġoutro\":60658,\"Ġthirteen\":60659,\"Joseph\":60660,\"MAR\":60661,\"/gl\":60662,\"Jess\":60663,\"ĠPsychiat\":60664,\"ĠpaddingBottom\":60665,\"-loop\":60666,\"/fonts\":60667,\"_seen\":60668,\"Teams\":60669,\"ReactDOM\":60670,\"(man\":60671,\"(xpath\":60672,\".getSimpleName\":60673,\">(*\":60674,\"ĠPvt\":60675,\"Ġelders\":60676,\"Ġpies\":60677,\".userAgent\":60678,\"-region\":60679,\"ĠGreeks\":60680,\"(fragment\":60681,\"stu\":60682,\"Ġcouncils\":60683,\"Ġstamina\":60684,\"ĠGoddess\":60685,\"è¥¿\":60686,\"Ġphilosophers\":60687,\"Ġpersone\":60688,\"ĠLose\":60689,\"ĠCLR\":60690,\"ĠDocs\":60691,\"Ġsoak\":60692,\"ĠHOLDER\":60693,\"Ġbells\":60694,\"hashCode\":60695,\"RATE\":60696,\"_WEIGHT\":60697,\"inous\":60698,\"endra\":60699,\"ophobic\":60700,\"Ġprose\":60701,\"Ġfinely\":60702,\"/oauth\":60703,\"(space\":60704,\"adge\":60705,\"ĠMama\":60706,\"ĠstringBuffer\":60707,\"Ġstint\":60708,\"Ġmisma\":60709,\"Ġvillains\":60710,\"ĠCrimea\":60711,\"Ġdiploma\":60712,\"ĠÐ¿Ð¾ÑģÐ»\":60713,\"ĠBea\":60714,\"(join\":60715,\"Ġíķ´\":60716,\"CHAT\":60717,\"pering\":60718,\"ĠCros\":60719,\"Ġmonkeys\":60720,\"Ġpreds\":60721,\"yla\":60722,\",,,\":60723,\"Ġvibrator\":60724,\"ĠNU\":60725,\"åħĪ\":60726,\"fant\":60727,\"zet\":60728,\"Ġbietet\":60729,\"unft\":60730,\"sworth\":60731,\".Flow\":60732,\"Ġpsyched\":60733,\"ĠContinental\":60734,\">t\":60735,\"Ġquilt\":60736,\".UP\":60737,\"Ġexpansive\":60738,\"Dispose\":60739,\"(language\":60740,\"Caps\":60741,\"_ZONE\":60742,\"Ġrecycle\":60743,\"ĠManaged\":60744,\"currentColor\":60745,\".broadcast\":60746,\"signIn\":60747,\".prom\":60748,\"llu\":60749,\"ueblo\":60750,\"Ġpunches\":60751,\"Ġautomat\":60752,\"Ġassigning\":60753,\"ĠcreateUser\":60754,\"ĠAllied\":60755,\"Ġconductor\":60756,\"Ĥ¨\":60757,\"Ġsaddle\":60758,\"Ġdni\":60759,\"omedical\":60760,\"-West\":60761,\"PositiveButton\":60762,\"Ġitalic\":60763,\"?[\":60764,\"(trigger\":60765,\"Ġelephants\":60766,\"\\\":\\\"\\\",\\\"\":60767,\"Ġcaliber\":60768,\"rafted\":60769,\"digits\":60770,\"Ġmarshal\":60771,\"milliseconds\":60772,\"markers\":60773,\"mom\":60774,\"/place\":60775,\"Ġholistic\":60776,\":t\":60777,\"#,\":60778,\"Ġboto\":60779,\"Ġnausea\":60780,\"ĠShooting\":60781,\"itech\":60782,\"ĠtextStatus\":60783,\"<Class\":60784,\"ĠDescribe\":60785,\"Ġbuffet\":60786,\"gil\":60787,\"Ġlogits\":60788,\"stdcall\":60789,\"mods\":60790,\"ĠSkull\":60791,\"ĠBare\":60792,\"hope\":60793,\"ĠIntr\":60794,\"Fair\":60795,\"ĉpt\":60796,\"Ġacompanh\":60797,\"Ġfkk\":60798,\"_rpc\":60799,\"Installed\":60800,\"_ans\":60801,\".getMinutes\":60802,\"âĢ¦\\\"ĊĊ\":60803,\"-thread\":60804,\"Ġpreschool\":60805,\"AILS\":60806,\"Ġdiffic\":60807,\"(convert\":60808,\"ĠNath\":60809,\"ĠDOJ\":60810,\"Ġregimes\":60811,\"Ġenthusiast\":60812,\"Ġwarranties\":60813,\"Ġfascinated\":60814,\"_binding\":60815,\"_Not\":60816,\"often\":60817,\"_RW\":60818,\"/mail\":60819,\"ĠtitleLabel\":60820,\"Ġvillagers\":60821,\"ĠJiang\":60822,\"Ġswagger\":60823,\".RowIndex\":60824,\"_imgs\":60825,\"rapy\":60826,\"VERAGE\":60827,\".Up\":60828,\"Ġnoop\":60829,\"cio\":60830,\"ĉST\":60831,\"Ġdecrement\":60832,\"Ġmagnesium\":60833,\"_rotate\":60834,\"Sit\":60835,\"Ġnieuwe\":60836,\"Ġtermed\":60837,\"íķ©ëĭĪëĭ¤\":60838,\"Ġurg\":60839,\"_touch\":60840,\"Ġswarm\":60841,\"Ġclave\":60842,\"thest\":60843,\"ĠLaf\":60844,\"HX\":60845,\"ĠHulk\":60846,\"Ġplaintext\":60847,\"ĠSofa\":60848,\"getSession\":60849,\"Led\":60850,\"Ġecosystems\":60851,\"hei\":60852,\"ĠKills\":60853,\"Ġhusbands\":60854,\"ÑħÑĢÐ°Ð½\":60855,\"(dom\":60856,\"_tiles\":60857,\"NibName\":60858,\"Ġdonating\":60859,\".acc\":60860,\"Ġlifespan\":60861,\".bn\":60862,\"_RGCTX\":60863,\"æ¥\":60864,\"ansen\":60865,\"Ġmodelling\":60866,\"LayoutParams\":60867,\"ĠonChangeText\":60868,\"rsa\":60869,\"-location\":60870,\".Pe\":60871,\"(bus\":60872,\"(song\":60873,\"Ġproduk\":60874,\"ĠSHOULD\":60875,\"ĠCJ\":60876,\"Ġsos\":60877,\"ĠHomeController\":60878,\".loaded\":60879,\"(Document\":60880,\".social\":60881,\"tiles\":60882,\"Ġlame\":60883,\"=df\":60884,\".parseLong\":60885,\"Ġprac\":60886,\"Ġdetox\":60887,\"ĠVE\":60888,\"Ġpuntos\":60889,\"Ġdoctr\":60890,\"Ġancor\":60891,\"CAPE\":60892,\"Ġcmb\":60893,\"çĦ¶\":60894,\"*)\\\"\":60895,\":///\":60896,\"ValueType\":60897,\"Ġmortgages\":60898,\";q\":60899,\"ĠRockets\":60900,\"sport\":60901,\"UGC\":60902,\"cts\":60903,\"ãĤģ\":60904,\"ieur\":60905,\"ĠAppeal\":60906,\"(nb\":60907,\"////////////////////////////////////////////////////////\":60908,\"IMATION\":60909,\"ĠCres\":60910,\"ĠManip\":60911,\"Cause\":60912,\"atypes\":60913,\"manufacturer\":60914,\"#----------------------------------------------------------------------------\":60915,\"Ġspor\":60916,\"eson\":60917,\"Ġpunched\":60918,\"Ġbookmarks\":60919,\"ĠBulk\":60920,\"CompleteListener\":60921,\"ĠTalking\":60922,\"ĠErnest\":60923,\"Ġrubbish\":60924,\"kills\":60925,\"ĠDEFIN\":60926,\"Ġneighbouring\":60927,\"arlo\":60928,\"ĠPCA\":60929,\"ĉmatrix\":60930,\"lok\":60931,\"Ġatlas\":60932,\"ĠGur\":60933,\"Ġwyn\":60934,\"-negative\":60935,\"Ġtul\":60936,\"Ġrelic\":60937,\"ĠVoltage\":60938,\"ĠPreis\":60939,\"ĠJNICALL\":60940,\"ĠPMID\":60941,\"aket\":60942,\"ĉattr\":60943,\"Ġetiqu\":60944,\"ĠMJ\":60945,\"ĠGmail\":60946,\"clr\":60947,\"_execution\":60948,\"éĶ®\":60949,\"positor\":60950,\".af\":60951,\"Nr\":60952,\"Georgia\":60953,\"Topology\":60954,\"ĠperchÃ©\":60955,\"Ġmuslim\":60956,\"Ġepidemi\":60957,\"Ġsabot\":60958,\"actus\":60959,\"ĠëĮĢ\":60960,\"ĠIOError\":60961,\".est\":60962,\"prefs\":60963,\"ĠKrish\":60964,\".ReadKey\":60965,\"NASA\":60966,\"uÃ§Ã£o\":60967,\"_Db\":60968,\"umerator\":60969,\"Wide\":60970,\"(statement\":60971,\".endpoint\":60972,\".........\":60973,\"Ġ[*\":60974,\"streams\":60975,\"mtime\":60976,\"Px\":60977,\"atr\":60978,\"Ġtpl\":60979,\"Roman\":60980,\"Ġscenic\":60981,\".nz\":60982,\"ĠSeconds\":60983,\"submenu\":60984,\"Ġìĭ¤í\":60985,\"_bundle\":60986,\"ĠdeÄŁ\":60987,\"ĠSisters\":60988,\"preferences\":60989,\"Ġporta\":60990,\"Advisor\":60991,\"maxLength\":60992,\"ĠGREAT\":60993,\"__(Ċ\":60994,\"olest\":60995,\"ĠLabels\":60996,\"Ġenfer\":60997,\"ĠĠĠĠĠĠĊĊ\":60998,\"ĠTheft\":60999,\"_FILL\":61000,\"ĠWise\":61001,\")application\":61002,\"unami\":61003,\">())Ċ\":61004,\"ADDRESS\":61005,\"BST\":61006,\"etzt\":61007,\"ĠQgs\":61008,\"Sense\":61009,\"ExceptionHandler\":61010,\"ĠChu\":61011,\".getOwnProperty\":61012,\"Ġexercised\":61013,\"iotic\":61014,\"ĠReleases\":61015,\"Ġpinterest\":61016,\"olie\":61017,\"isoft\":61018,\"Ġsequencing\":61019,\"Ġpadre\":61020,\"]));čĊ\":61021,\"(radius\":61022,\".med\":61023,\"ainties\":61024,\".ObjectModel\":61025,\"Ġemple\":61026,\"Ġseguro\":61027,\"Stars\":61028,\"Ġqualitative\":61029,\"lemn\":61030,\"á»±\":61031,\">\\\").\":61032,\"Ġgx\":61033,\"-cert\":61034,\"ĠASTM\":61035,\"Ġfullname\":61036,\"Ġtelemetry\":61037,\"ĠCambodia\":61038,\"_ul\":61039,\"ĠClare\":61040,\"CUSTOM\":61041,\"QC\":61042,\"ĠUns\":61043,\"ĠHTTPS\":61044,\"ĠParkinson\":61045,\"ancybox\":61046,\"','.\":61047,\"Tue\":61048,\".getLast\":61049,\"Ġabi\":61050,\"Äħd\":61051,\"Ast\":61052,\"ĠEditing\":61053,\".Unity\":61054,\"jmp\":61055,\"Ġmats\":61056,\"ĠsharedPreferences\":61057,\"Captain\":61058,\".pageSize\":61059,\"Ġrtl\":61060,\"Ġanmeld\":61061,\"RuntimeObject\":61062,\"Ġdemande\":61063,\"(\\\";\":61064,\"seite\":61065,\"-headed\":61066,\"ĠKra\":61067,\"ĠFONT\":61068,\"`\\\\\":61069,\"ClassNotFoundException\":61070,\".avg\":61071,\"atical\":61072,\"Aj\":61073,\"Ġpermitting\":61074,\"Proj\":61075,\"ERRQ\":61076,\"Ġcreampie\":61077,\"ĠBuyer\":61078,\"-modules\":61079,\"ĠSundays\":61080,\"|`Ċ\":61081,\"Ġdaytime\":61082,\"Ġ+(\":61083,\"Ġglitch\":61084,\"ĠOperand\":61085,\"Ġtoxins\":61086,\"inya\":61087,\"DNS\":61088,\"ĠSas\":61089,\"Cake\":61090,\"ĠNationals\":61091,\".addTo\":61092,\"Ġsinking\":61093,\"Ġcomprehension\":61094,\"Ġscor\":61095,\"agements\":61096,\"Ġtard\":61097,\"Ġmarching\":61098,\"ĠMTV\":61099,\"Ġsane\":61100,\"CreateInfo\":61101,\"áº¯\":61102,\"ĠendIndex\":61103,\"ĉlayout\":61104,\"ĠåĲį\":61105,\"SITE\":61106,\"ĠTHERE\":61107,\"Ġ[{'\":61108,\"opathic\":61109,\"Ġtransmitter\":61110,\"/body\":61111,\"Ġpund\":61112,\"ĠClosing\":61113,\"Ġsetattr\":61114,\"Ġbounded\":61115,\"Atlas\":61116,\"suming\":61117,\"(times\":61118,\"parer\":61119,\"ynom\":61120,\"feit\":61121,\"Ġfrem\":61122,\"-leg\":61123,\"ĠBras\":61124,\">#\":61125,\"Ġì¶ľëł¥\":61126,\"ĠINSTANCE\":61127,\"ĠCouch\":61128,\"_hosts\":61129,\"likelihood\":61130,\".Marker\":61131,\"ĠMasks\":61132,\"Ġcereal\":61133,\"utilities\":61134,\"Ġelemental\":61135,\"Ġdistorted\":61136,\"inactive\":61137,\"cry\":61138,\"WL\":61139,\"UPPORTED\":61140,\".Throws\":61141,\"/schema\":61142,\"serie\":61143,\".\\\"',\":61144,\"ĠBenedict\":61145,\"-picker\":61146,\"iggs\":61147,\"ĠPirate\":61148,\"åĳ¨æľŁ\":61149,\"ĠThema\":61150,\"ĠSouthampton\":61151,\"ĠarrayWith\":61152,\"ĠPaula\":61153,\"Ġpredictor\":61154,\"-Ass\":61155,\".userid\":61156,\"Ġperi\":61157,\"Ġexaggerated\":61158,\"urate\":61159,\"arseille\":61160,\"ĠConcent\":61161,\"ĠPik\":61162,\"Ġ@_;ĊĊ\":61163,\"Ġformations\":61164,\"Ġdenomin\":61165,\"\\\"/>.Ċ\":61166,\"endedor\":61167,\"Ġpancre\":61168,\"Ġamt\":61169,\"ĠonResume\":61170,\"onDelete\":61171,\"ĠBCH\":61172,\")(\\\"\":61173,\"movement\":61174,\"Ġpotassium\":61175,\"<!--[\":61176,\"Ġmemes\":61177,\"_SETUP\":61178,\"_gamma\":61179,\"ĠcolorWithRed\":61180,\"Ġgraves\":61181,\"Ġstatutes\":61182,\"Ġaquarium\":61183,\"ĠLamar\":61184,\"ĠxAxis\":61185,\"WebpackPlugin\":61186,\"_fold\":61187,\".geo\":61188,\"ĠFeet\":61189,\"-speaking\":61190,\"é¢Ŀ\":61191,\"_cos\":61192,\"ĠAvec\":61193,\"anst\":61194,\"ĠEEPROM\":61195,\"Ġdealership\":61196,\"ĠUnternehmen\":61197,\",Integer\":61198,\"ĠÃªtes\":61199,\".`|`Ċ\":61200,\"vine\":61201,\"ĠKnife\":61202,\"_vertical\":61203,\".Download\":61204,\"Ġoversized\":61205,\"lid\":61206,\"Ġpillar\":61207,\"caught\":61208,\"Ġflagged\":61209,\"(router\":61210,\"(REG\":61211,\"Ġbarbecue\":61212,\"browse\":61213,\"ĠFitzgerald\":61214,\"ĠÐ¿ÑĢÐ¾Ð²\":61215,\"irie\":61216,\"Ġerste\":61217,\"elib\":61218,\"_PRESS\":61219,\"Ġhealed\":61220,\"Ġhaut\":61221,\">xpath\":61222,\"ĠWen\":61223,\"grunt\":61224,\".Keyword\":61225,\"-haspopup\":61226,\"nw\":61227,\"SZ\":61228,\"gabe\":61229,\"InteractionEnabled\":61230,\"prech\":61231,\"Ġprimo\":61232,\"stripe\":61233,\"alted\":61234,\"_BORDER\":61235,\"findBy\":61236,\"_annotation\":61237,\"WebSocket\":61238,\"Bur\":61239,\"Ġdiplomacy\":61240,\"(td\":61241,\"ĠSimpl\":61242,\"detect\":61243,\"performance\":61244,\"Ġcarbohydrates\":61245,\"/ioutil\":61246,\"------+\":61247,\"_sr\":61248,\"meeting\":61249,\"Ġ|--------------------------------------------------------------------------Ċ\":61250,\"_Var\":61251,\"Ġrover\":61252,\"Ġcasi\":61253,\"ĠMatches\":61254,\"qry\":61255,\"_BOOK\":61256,\"Ġpresumed\":61257,\"ĠMÃ©t\":61258,\"/items\":61259,\"ĠCredentials\":61260,\"]).Ċ\":61261,\"ĠKardash\":61262,\"Administr\":61263,\"ĠSlovak\":61264,\"(',')Ċ\":61265,\"Ġconquest\":61266,\"Persist\":61267,\"ĠDrain\":61268,\"bij\":61269,\"Ġdov\":61270,\"ĠsÃ¸ger\":61271,\"Wonder\":61272,\"ASET\":61273,\"[min\":61274,\"guna\":61275,\"grown\":61276,\"Ġ})ĊĊĊ\":61277,\"AUD\":61278,\"Ġbeliever\":61279,\"isers\":61280,\"(sent\":61281,\"Jackson\":61282,\"Ġpais\":61283,\"ĠcudaMemcpy\":61284,\"Ġflashes\":61285,\"bere\":61286,\"Ġmultif\":61287,\"ĠCargo\":61288,\"ElementsByTagName\":61289,\"(epoch\":61290,\"ĠKunden\":61291,\"Recognition\":61292,\"ĠSetValue\":61293,\"ĠSunshine\":61294,\"ACP\":61295,\":str\":61296,\"Ġambigu\":61297,\"Ġíķľ\":61298,\"-linear\":61299,\"ĠWOW\":61300,\"(custom\":61301,\"ĠisEnabled\":61302,\"BAT\":61303,\"_diag\":61304,\"_GUI\":61305,\"Heat\":61306,\"Ġassemblies\":61307,\"ĠCette\":61308,\"/card\":61309,\"ĠDeclare\":61310,\"Ġupheld\":61311,\"ĠClaud\":61312,\"-flow\":61313,\"Ġhookup\":61314,\"IRQ\":61315,\"Father\":61316,\"Deletes\":61317,\"));//\":61318,\"ĠPTSD\":61319,\");ččĊ\":61320,\"egal\":61321,\".arrow\":61322,\"ĠMPU\":61323,\"Ã³j\":61324,\"Ġmotivate\":61325,\"ĠKatherine\":61326,\".frames\":61327,\"Ġthi\":61328,\"<Result\":61329,\".gray\":61330,\"ĠKushner\":61331,\"ĠCement\":61332,\"ĠBurl\":61333,\"Interview\":61334,\"='\\\".\":61335,\"POWER\":61336,\"ĠCDs\":61337,\"Ġ[&](\":61338,\"Ġchanger\":61339,\">>,Ċ\":61340,\"-we\":61341,\"ĠCLK\":61342,\"ĠAdri\":61343,\"Ġcil\":61344,\"=X\":61345,\"Ġsendo\":61346,\"ĠCelsius\":61347,\"blocked\":61348,\"OutOfBounds\":61349,\".!\":61350,\"oproject\":61351,\"andes\":61352,\"editing\":61353,\"Ġpumped\":61354,\"();}Ċ\":61355,\"à¦¿\":61356,\"_EVENTS\":61357,\"ĠFriedman\":61358,\"Ġ>/\":61359,\"Ġ****************************************\":61360,\"Ġtemptation\":61361,\"ĠIpsum\":61362,\"ĠCes\":61363,\"Ġnoticing\":61364,\"_ele\":61365,\"Accent\":61366,\"ĠNvidia\":61367,\"Ġamusement\":61368,\"Ġintroductory\":61369,\"ĉretval\":61370,\"Ġlil\":61371,\"irim\":61372,\"enqueue\":61373,\"-history\":61374,\"Ġcounselor\":61375,\"TRANSFER\":61376,\"_Vector\":61377,\"categoryId\":61378,\"pery\":61379,\"FILTER\":61380,\"(remote\":61381,\"Ġseparat\":61382,\"ĠEmbedded\":61383,\"ĠBacon\":61384,\"terraform\":61385,\"Ġrespectable\":61386,\"icha\":61387,\"aic\":61388,\"+'\\\\\":61389,\"Ġstray\":61390,\"ÐµÐ½Ð¸Ð¹\":61391,\"ĠAuditor\":61392,\"enticator\":61393,\"Ġcloak\":61394,\"ĠUNKNOWN\":61395,\"ĠAmen\":61396,\"vox\":61397,\"astreet\":61398,\"...]\":61399,\"Ġ`%\":61400,\"-property\":61401,\"ĠQualcomm\":61402,\"edited\":61403,\"Ġdiscreet\":61404,\"-Muslim\":61405,\".recipe\":61406,\"Ġvandal\":61407,\"ĠuÅ¼y\":61408,\"senha\":61409,\",is\":61410,\"ĠPompe\":61411,\"ĠKnicks\":61412,\"()',\":61413,\"(tb\":61414,\"ĠHID\":61415,\"Ġpew\":61416,\"Ġcarrots\":61417,\"Ġpolicym\":61418,\".li\":61419,\"Ġtwentieth\":61420,\"_prompt\":61421,\"scenario\":61422,\".JFrame\":61423,\"ĠMQTT\":61424,\"ĠIndividuals\":61425,\"toMatchSnapshot\":61426,\"ÃŃsticas\":61427,\"\\\"D\":61428,\"Ġfod\":61429,\"Ġricht\":61430,\"ĠZar\":61431,\"Ġresurrection\":61432,\"Ġmilitar\":61433,\"ĠManagers\":61434,\"_GRID\":61435,\"nonnull\":61436,\"BERT\":61437,\"Outputs\":61438,\"ĠĠĠĠĊĊĊ\":61439,\"Ġpredecessors\":61440,\"ĠisSelected\":61441,\"Ġcybersecurity\":61442,\"åĨĻ\":61443,\".mc\":61444,\"Qui\":61445,\"Ġalleging\":61446,\"Ġtic\":61447,\"Manufacturer\":61448,\"ĠEnhanced\":61449,\"ĠBiz\":61450,\"ĠreadOnly\":61451,\"Ã´n\":61452,\"Ġlumber\":61453,\"aed\":61454,\"Ġrains\":61455,\"provide\":61456,\"Late\":61457,\"Ġpedestrians\":61458,\"jav\":61459,\"Activation\":61460,\"'Brien\":61461,\"Ġvacancy\":61462,\"//-\":61463,\"Ġbladder\":61464,\"Ġagile\":61465,\"Ġsteals\":61466,\"Ġregistrar\":61467,\"Ġelectorate\":61468,\"Government\":61469,\"']=\\\"\":61470,\"albums\":61471,\"election\":61472,\"abl\":61473,\"ĠOrient\":61474,\"Ġpirates\":61475,\"Ġlooph\":61476,\"ĉreader\":61477,\"ĠÃºltimo\":61478,\"ĠPetro\":61479,\"ĠÑģÑĤÑĢÐ°Ð½Ð¸ÑĨ\":61480,\"Ġsamp\":61481,\"inverse\":61482,\".gradle\":61483,\"ĠDont\":61484,\"xon\":61485,\"Ġcread\":61486,\"ertility\":61487,\"rgctx\":61488,\"ĠpolÃŃtica\":61489,\"ValueChanged\":61490,\"ApiResponse\":61491,\"combo\":61492,\"ĠUX\":61493,\"Ġdaha\":61494,\"'an\":61495,\"-my\":61496,\"âĢľMy\":61497,\"pee\":61498,\"latlong\":61499,\"\\\\Base\":61500,\".wik\":61501,\"ĠPOT\":61502,\"Ġpunctuation\":61503,\"qus\":61504,\"inyin\":61505,\"=min\":61506,\"Ġnucleus\":61507,\"Ġconcessions\":61508,\".average\":61509,\"userinfo\":61510,\"Ġtablespoon\":61511,\"ĠNeighborhood\":61512,\"(Throwable\":61513,\">v\":61514,\"ovy\":61515,\"XXXXXXXX\":61516,\"isti\":61517,\"Ġbart\":61518,\"ï»¿Ċ\":61519,\"Encrypt\":61520,\"=end\":61521,\"Ġincur\":61522,\"Ġpertinent\":61523,\"_MINOR\":61524,\")\\\">Ċ\":61525,\"chief\":61526,\"Ġvd\":61527,\"(`Ċ\":61528,\"urgy\":61529,\"abyrinth\":61530,\"ĠShapes\":61531,\"Ġvagy\":61532,\".dds\":61533,\"memcmp\":61534,\"ĉIt\":61535,\"semester\":61536,\"ĠEmit\":61537,\"Ġinsan\":61538,\"Ġbrushed\":61539,\"_FATAL\":61540,\"\\\"errors\":61541,\"Ġdisruptive\":61542,\"%n\":61543,\"Ġcompositions\":61544,\"Ġbacheca\":61545,\"Ġdisagreement\":61546,\"Protect\":61547,\"LIKE\":61548,\".FileNotFoundException\":61549,\"Ġweitere\":61550,\"ĠMonaco\":61551,\"_<?\":61552,\"Ġmodeled\":61553,\"steel\":61554,\"eenth\":61555,\"Ġ[]).\":61556,\"(regex\":61557,\"enie\":61558,\".Flush\":61559,\".popup\":61560,\"ĠOvers\":61561,\".Debugger\":61562,\">`;Ċ\":61563,\"nite\":61564,\".quote\":61565,\"Ġcog\":61566,\"Ġwakes\":61567,\"ĠWrestling\":61568,\"Intro\":61569,\"Ġserde\":61570,\"Ġreusable\":61571,\"ĠCompound\":61572,\"ImplOptions\":61573,\"ĉItem\":61574,\"ĠnumOf\":61575,\"ĠCHR\":61576,\"ĠBolton\":61577,\"PLUS\":61578,\"bounding\":61579,\"(++\":61580,\"Ġ\\\",\\\";Ċ\":61581,\"ĠGuests\":61582,\"Ġdeprived\":61583,\"Ġmelody\":61584,\"ZIP\":61585,\">>()\":61586,\"Ġconceded\":61587,\"_die\":61588,\"Ġjoystick\":61589,\"Ġanatomy\":61590,\"ĠToolStrip\":61591,\"ĠEnough\":61592,\"\\\"*\":61593,\"intosh\":61594,\"habi\":61595,\"ĠSyracuse\":61596,\"ĠIncreased\":61597,\"Mus\":61598,\".patient\":61599,\"Ġincrements\":61600,\"ĠPIX\":61601,\"Ġbooty\":61602,\".private\":61603,\"ertoire\":61604,\"Ġcutter\":61605,\"Ġbekan\":61606,\"Ġdrawers\":61607,\"_ALIAS\":61608,\"Animating\":61609,\"_answers\":61610,\".attack\":61611,\"writers\":61612,\"Ġgaan\":61613,\"ikon\":61614,\"ĉcontroller\":61615,\"Ġfacade\":61616,\"ĵåĲį\":61617,\",status\":61618,\".fe\":61619,\"Ġpostponed\":61620,\"ĠFonts\":61621,\"ĠBenchmark\":61622,\"idental\":61623,\"Ġchilling\":61624,\"ĠKiev\":61625,\"Ġbrushes\":61626,\"-wheel\":61627,\"ĠHire\":61628,\"(proc\":61629,\"Ġchemotherapy\":61630,\"ĠÐ±ÑĭÑĤÑĮ\":61631,\"ĠNolan\":61632,\"(ierr\":61633,\"ĠJude\":61634,\"-Aug\":61635,\"umnos\":61636,\"conversation\":61637,\"ĠBehaviorSubject\":61638,\"baugh\":61639,\"Ġguitarist\":61640,\".offer\":61641,\"Ġaccuse\":61642,\"pard\":61643,\"reff\":61644,\".React\":61645,\"Ġuchar\":61646,\"Ġoffsetof\":61647,\"$status\":61648,\"/email\":61649,\".connected\":61650,\"/+\":61651,\"@qq\":61652,\"aravel\":61653,\"Ġfv\":61654,\".Persistent\":61655,\"enstein\":61656,\"...]ĊĊ\":61657,\".gridView\":61658,\"ĠJOB\":61659,\"-'.$\":61660,\".layoutControl\":61661,\"Ġcarg\":61662,\"ĠKot\":61663,\"_equals\":61664,\"Ġwithdrew\":61665,\"ATEST\":61666,\"-buttons\":61667,\"ĉUPROPERTY\":61668,\"ĠUIGraphics\":61669,\"ĠPublications\":61670,\"ĠINTERN\":61671,\"Ġethanol\":61672,\"Ã¤nger\":61673,\"SEND\":61674,\"ĉslot\":61675,\"Ð»ÐµÐ½Ð¸Ñı\":61676,\"Ġpaso\":61677,\"_extended\":61678,\"orthand\":61679,\"(sheet\":61680,\"Ġprocedural\":61681,\"Ġkidnapping\":61682,\"//----------------\":61683,\"[msg\":61684,\"Occurred\":61685,\"Alice\":61686,\"ĠCAST\":61687,\"Ġkata\":61688,\"æ³¨åĨĮ\":61689,\"cheap\":61690,\"icity\":61691,\"Ġreadiness\":61692,\"********************************************************************************\":61693,\"ĠSYN\":61694,\"ĠMaggie\":61695,\"rica\":61696,\"Ġyi\":61697,\"ĠTwe\":61698,\"ignon\":61699,\"anden\":61700,\"Ġjquery\":61701,\"ĠstartY\":61702,\"Ġavenue\":61703,\"Anth\":61704,\"_caption\":61705,\"ĠRows\":61706,\"Â¯Â¯Â¯Â¯\":61707,\"sequences\":61708,\"Ð¸ÑĦ\":61709,\"(\\\"/\\\")Ċ\":61710,\"crate\":61711,\"ĠSaga\":61712,\"Jud\":61713,\"Ġfacets\":61714,\"_scaled\":61715,\"Ruby\":61716,\"ĠPQ\":61717,\"Ġcrus\":61718,\"Iran\":61719,\".squeeze\":61720,\"ĉfd\":61721,\"Ġperce\":61722,\"Ġdatap\":61723,\"^^^^\":61724,\"_SCOPE\":61725,\"ĠSalmon\":61726,\"Ġtaille\":61727,\"ĠValor\":61728,\"AGEMENT\":61729,\"Rp\":61730,\"ĠGuardians\":61731,\"ĠreadFile\":61732,\"Ġnegro\":61733,\"Ġobra\":61734,\".Parcel\":61735,\"CACHE\":61736,\"retched\":61737,\"crm\":61738,\"qrst\":61739,\"oufl\":61740,\"íļĮ\":61741,\".nom\":61742,\"ssid\":61743,\"Ġsafest\":61744,\".Errors\":61745,\"_png\":61746,\"ConverterFactory\":61747,\"<Self\":61748,\"Ġseparates\":61749,\"_jButton\":61750,\"Ġmisuse\":61751,\"exceptions\":61752,\"Ġ[{\\\"\":61753,\"ĠPAD\":61754,\"çŃ¾\":61755,\"kHz\":61756,\"=en\":61757,\"ĠhÃłng\":61758,\"HZ\":61759,\"ĠXavier\":61760,\"{id\":61761,\"Ġstaircase\":61762,\"textfield\":61763,\"/docker\":61764,\"(tableName\":61765,\"Ġtelecommunications\":61766,\"onso\":61767,\"ocl\":61768,\"Parents\":61769,\"/parser\":61770,\"-drop\":61771,\"(styles\":61772,\"_modifier\":61773,\"RequestId\":61774,\".brand\":61775,\"ĠCoins\":61776,\"Ġkunt\":61777,\".Gr\":61778,\"ĠHISTORY\":61779,\"(drop\":61780,\"Brad\":61781,\"Ġseksi\":61782,\"_sdk\":61783,\"Ġinspected\":61784,\"predicate\":61785,\".fi\":61786,\"GOR\":61787,\"Ġcocoa\":61788,\"ĠIQueryable\":61789,\"---</\":61790,\"Ġdernier\":61791,\"ĠUserDefaults\":61792,\"_TS\":61793,\"Ġeos\":61794,\"Ġblender\":61795,\"Ġlouder\":61796,\"Spanish\":61797,\"liner\":61798,\"\\\\widgets\":61799,\"Ġschemas\":61800,\"_CAPTURE\":61801,\".micro\":61802,\"ãĤŃ\":61803,\"ĠðŁĳ\":61804,\"Ġander\":61805,\"altung\":61806,\"Ġ=='\":61807,\"Ġenforcing\":61808,\"ĠExist\":61809,\"uvw\":61810,\"irtschaft\":61811,\"ĠGreatest\":61812,\"ĠMosul\":61813,\"_po\":61814,\"Ġsimmer\":61815,\"Ġprogressed\":61816,\"Ġrotary\":61817,\"Ġnto\":61818,\"Noise\":61819,\"Ġchased\":61820,\"Ġinstincts\":61821,\"PublicKey\":61822,\"Ġsnapshots\":61823,\"ĠSuperv\":61824,\".mac\":61825,\"ĠBibli\":61826,\"...)ĊĊ\":61827,\"ĉold\":61828,\"KEN\":61829,\"ĠClim\":61830,\"ĠProgressDialog\":61831,\"licants\":61832,\"_slide\":61833,\"+h\":61834,\"Ġempowered\":61835,\"Injector\":61836,\"Ġinfluenza\":61837,\"Ġplanetary\":61838,\"Williams\":61839,\"Ġmond\":61840,\"enan\":61841,\".randomUUID\":61842,\"(Position\":61843,\"Ġhombres\":61844,\"Ġinsecure\":61845,\"Ġverbs\":61846,\"_rectangle\":61847,\"INSTALL\":61848,\"ĠParseException\":61849,\"_TA\":61850,\"$field\":61851,\".ImageIcon\":61852,\"ĠGujarat\":61853,\"-lived\":61854,\"_some\":61855,\"Ġclipping\":61856,\".getComponent\":61857,\".closest\":61858,\".live\":61859,\"Ġincid\":61860,\"čĊĉĉčĊ\":61861,\"Ġprodutos\":61862,\"_music\":61863,\"SqlConnection\":61864,\"ĠPrediction\":61865,\"ĠXT\":61866,\"-notes\":61867,\"ĠJewelry\":61868,\"remen\":61869,\"(reason\":61870,\"Snap\":61871,\"AffineTransform\":61872,\"angelog\":61873,\"Ġdictate\":61874,\"Ġzosta\":61875,\"BarController\":61876,\"/shop\":61877,\"eid\":61878,\"-sw\":61879,\"Courses\":61880,\"fontWeight\":61881,\"ĠHoffman\":61882,\"_Num\":61883,\"KR\":61884,\"ĠWillie\":61885,\"arkan\":61886,\"-scal\":61887,\"Ġaudition\":61888,\".disc\":61889,\"Ġtwists\":61890,\"Ġdepicts\":61891,\"Ġbanyak\":61892,\"ĠKits\":61893,\"ĠHezbollah\":61894,\"north\":61895,\"ĠGRE\":61896,\"Ã¶g\":61897,\"quoi\":61898,\"-threatening\":61899,\"Ġworms\":61900,\"ĠPN\":61901,\"Ġsexdate\":61902,\"Ġmonuments\":61903,\"MMC\":61904,\"bots\":61905,\"ĠSDLK\":61906,\"death\":61907,\"Ġpits\":61908,\"_choices\":61909,\"(solution\":61910,\"Ġproclaimed\":61911,\"ĠQing\":61912,\"Ġsscanf\":61913,\"strategy\":61914,\"deaux\":61915,\"ĠFischer\":61916,\"_IV\":61917,\"Ġinward\":61918,\"DatePicker\":61919,\"Ġsewer\":61920,\"Ġeurop\":61921,\"Ġhomelessness\":61922,\".SpringBootApplication\":61923,\"ĠSpaceX\":61924,\"Ġinforming\":61925,\"Ġ'!\":61926,\"Ġplaster\":61927,\"Initialization\":61928,\".beta\":61929,\"ĠPersons\":61930,\"uggling\":61931,\"Ġshampoo\":61932,\"ĠJeh\":61933,\"Ġserr\":61934,\"ĠmaxSize\":61935,\"Ġstitches\":61936,\"[path\":61937,\".ret\":61938,\"ĠPret\":61939,\"Neil\":61940,\"Converted\":61941,\"ĠMazda\":61942,\"POSIT\":61943,\"Toolkit\":61944,\"ĠREADME\":61945,\"CustomAttributes\":61946,\"archivo\":61947,\".Paint\":61948,\"getObject\":61949,\"IQ\":61950,\".WebDriver\":61951,\"Ġantibody\":61952,\"ĠLima\":61953,\"incorrect\":61954,\"Fraction\":61955,\"ĠDeadline\":61956,\"sendMessage\":61957,\".Offset\":61958,\"edio\":61959,\"Ġ×Ĳ\":61960,\"Ġsmoothing\":61961,\".bo\":61962,\"ĠCENT\":61963,\"elastic\":61964,\".charCodeAt\":61965,\"RefreshLayout\":61966,\"AGED\":61967,\");\\\\Ċ\":61968,\"Ġ[])ĊĊ\":61969,\"Ġtaps\":61970,\"DV\":61971,\"âĢķ\":61972,\"ĠCoy\":61973,\"Ġoutweigh\":61974,\"'gc\":61975,\"\\\\Exceptions\":61976,\"ĠGrammar\":61977,\"ĠGuatemala\":61978,\"ĠGuru\":61979,\"Ġtej\":61980,\"Ġfriendships\":61981,\"Ġcoping\":61982,\"(updated\":61983,\"_dx\":61984,\"Anal\":61985,\"-May\":61986,\"Ġmatchmaking\":61987,\"Ġjunto\":61988,\"PACKAGE\":61989,\"Ġrents\":61990,\"Ġèĩª\":61991,\"cakes\":61992,\"ãĢĤ',Ċ\":61993,\"rending\":61994,\"_Framework\":61995,\"-)\":61996,\"(upload\":61997,\"Ġoportun\":61998,\"Ġcausa\":61999,\"Ġprolific\":62000,\"RowCount\":62001,\"Ġnackte\":62002,\"ĠSoy\":62003,\"Shutdown\":62004,\"èĪ\":62005,\"_EXPI\":62006,\"ĠHarbour\":62007,\"Ġtore\":62008,\"\\\\Message\":62009,\"/U\":62010,\"OMBRE\":62011,\".segment\":62012,\"Ġcomed\":62013,\"roman\":62014,\"ĠsegÃºn\":62015,\"Sigma\":62016,\"Ġskiing\":62017,\"ĠTerrain\":62018,\"Ġbenchmarks\":62019,\"ĠAttention\":62020,\"Ġ}*/ĊĊ\":62021,\"Ġgeil\":62022,\"Ġcartoons\":62023,\"Ġattribution\":62024,\"Ġrotor\":62025,\"enha\":62026,\"ĠÎ³\":62027,\"Ġtraj\":62028,\"ĠcÃ´ng\":62029,\"Ġshakes\":62030,\"ĠClemson\":62031,\"Ġbrutality\":62032,\"Ġ;čĊčĊ\":62033,\"Ġeighteen\":62034,\"ĠAwareness\":62035,\"(rest\":62036,\"Ġviolin\":62037,\"_ROUTE\":62038,\".FieldName\":62039,\"ĠAde\":62040,\"izia\":62041,\"ĠHelm\":62042,\"Ġtying\":62043,\"ĠProgressBar\":62044,\"autor\":62045,\"Ġlondon\":62046,\"&w\":62047,\"goo\":62048,\"ISTRY\":62049,\"/Create\":62050,\"ĠUSING\":62051,\"ĠGX\":62052,\"ĠEFFECT\":62053,\"Fcn\":62054,\"ĠEncryption\":62055,\"CED\":62056,\"fine\":62057,\"-array\":62058,\"ĠpushViewController\":62059,\"@$\":62060,\"Uploaded\":62061,\"-write\":62062,\".getPage\":62063,\"_estado\":62064,\"ANTLR\":62065,\"ĠViewData\":62066,\"Ġ${(\":62067,\"Ġalmond\":62068,\"ĠLogical\":62069,\"Ġshooters\":62070,\"Ġìłľ\":62071,\"Ġpuff\":62072,\"Ġuncomment\":62073,\"Ġcustomizable\":62074,\"Äĥr\":62075,\"Directive\":62076,\"ĉidx\":62077,\"Challenge\":62078,\"Ġsummarize\":62079,\"ĠAvg\":62080,\".UserID\":62081,\".dispatchEvent\":62082,\"Ġcooker\":62083,\"ĠconnectionString\":62084,\"Ġshrinking\":62085,\"jad\":62086,\"ĠThemes\":62087,\"andatory\":62088,\"Ġdubious\":62089,\"Ġcep\":62090,\"spinner\":62091,\"Ġsubreddit\":62092,\"Ġiii\":62093,\"/cache\":62094,\"defer\":62095,\"Ġsubstituted\":62096,\"Ġgunman\":62097,\"cling\":62098,\"Ġì°\":62099,\"(ctrl\":62100,\"OrderId\":62101,\"_eng\":62102,\"Ġfilmmakers\":62103,\"Ġforwarding\":62104,\"Ġstranded\":62105,\"ĠLean\":62106,\"Ġë§Į\":62107,\"(Unit\":62108,\"ĠdidSet\":62109,\"lake\":62110,\"grounds\":62111,\"åĽł\":62112,\"Ġunregister\":62113,\"Ġminha\":62114,\"ĠVegan\":62115,\"ĉiVar\":62116,\"----------------------------------------------------------------------Ċ\":62117,\"ottle\":62118,\"IPC\":62119,\"Ġpragma\":62120,\"ĠIID\":62121,\"_Min\":62122,\"%;\\\">Ċ\":62123,\"_ram\":62124,\"drivers\":62125,\"ĠChick\":62126,\"Ġclr\":62127,\"_BUFF\":62128,\"ĠÐ²ÑĭÐ±\":62129,\"Merc\":62130,\"juven\":62131,\"Ġshim\":62132,\"ÑĭÑħ\":62133,\"Ġtheoretically\":62134,\"/forum\":62135,\"Ġspiders\":62136,\"Ġgoose\":62137,\"ĠPhoton\":62138,\"Ġproficiency\":62139,\"ĠClerk\":62140,\"_fig\":62141,\"Concern\":62142,\"(cost\":62143,\"Ġredd\":62144,\".environment\":62145,\"Crop\":62146,\"Ġâī¥\":62147,\"yectos\":62148,\".BatchNorm\":62149,\"-comp\":62150,\"$image\":62151,\"ĠNikon\":62152,\"Ġdmg\":62153,\"[::-\":62154,\"PLL\":62155,\"uncios\":62156,\"focused\":62157,\"Ġtuo\":62158,\"Ġhvordan\":62159,\"Ġattained\":62160,\"Ġprotector\":62161,\"ĠKant\":62162,\"Ġshores\":62163,\"ĠEthan\":62164,\"_school\":62165,\"Ġneatly\":62166,\".Shapes\":62167,\"ĠNem\":62168,\"hcp\":62169,\".'/'.$\":62170,\"ĠMÃ©xico\":62171,\"structuring\":62172,\"Ġlakh\":62173,\"Ġadresse\":62174,\"','#\":62175,\"ĠHaskell\":62176,\"_ENGINE\":62177,\"Ġrepent\":62178,\"Ġcuck\":62179,\".FIELD\":62180,\"ĠSke\":62181,\"@@@@\":62182,\"Hits\":62183,\"Ġimplants\":62184,\"ĠConstitutional\":62185,\"ĠPHPUnit\":62186,\"Ġtoilets\":62187,\".album\":62188,\"ä¸ĭè½½\":62189,\"ĉsetState\":62190,\"(\\\"----------------\":62191,\".Amount\":62192,\"ecture\":62193,\"ĠThousands\":62194,\"Neither\":62195,\"Ġpresets\":62196,\"ĠAssume\":62197,\"(factory\":62198,\"Ġlick\":62199,\"Ġgoalkeeper\":62200,\"<State\":62201,\"-security\":62202,\"_ie\":62203,\"esktop\":62204,\"ĠLv\":62205,\"ĠSymphony\":62206,\".samples\":62207,\"Ġhypertension\":62208,\"ÅĤu\":62209,\".just\":62210,\"Mensaje\":62211,\"!=-\":62212,\"<TKey\":62213,\"Ġspying\":62214,\",date\":62215,\"organized\":62216,\"ĠĠĠĠĠĠĠĠĠĠčĊ\":62217,\"(cuda\":62218,\"_Metadata\":62219,\"ubishi\":62220,\"-Benz\":62221,\"_Ass\":62222,\"ĠElseIf\":62223,\"Ġlesions\":62224,\"ĠPreston\":62225,\"Technical\":62226,\"Ġplatinum\":62227,\"/pi\":62228,\"Indexes\":62229,\"Ġparaph\":62230,\"Ġoverthrow\":62231,\"ipated\":62232,\"ontology\":62233,\"Ġdemographics\":62234,\"Ġcane\":62235,\"Ġprofitability\":62236,\"Ġestablishments\":62237,\"]&\":62238,\":absolute\":62239,\"entrada\":62240,\"Tp\":62241,\"Ġshareholder\":62242,\".'_\":62243,\"å¦Ĥæŀľ\":62244,\"npj\":62245,\"vrir\":62246,\"ĠEXEC\":62247,\"ĠPolicies\":62248,\"Ġfellowship\":62249,\"ĠCGRectGet\":62250,\"_recipe\":62251,\"_REC\":62252,\"unu\":62253,\"Ġrobbed\":62254,\"Ġturmoil\":62255,\")::\":62256,\".startDate\":62257,\"Ġevacuated\":62258,\"-equ\":62259,\"Ġfourteen\":62260,\"@SpringBootApplication\":62261,\"Ġæķ°æį®\":62262,\"nants\":62263,\"thren\":62264,\"Sony\":62265,\"DFS\":62266,\"-cigaret\":62267,\"Ġaggravated\":62268,\"Ġnederland\":62269,\"ĠFuj\":62270,\"uces\":62271,\"/use\":62272,\"ummer\":62273,\"(STD\":62274,\"ê°Ħ\":62275,\"*>&\":62276,\".percent\":62277,\"iants\":62278,\"ĠCt\":62279,\"VAS\":62280,\"_THEME\":62281,\"Ġsniper\":62282,\"_EL\":62283,\"-workers\":62284,\"Snow\":62285,\"ĠAura\":62286,\"iego\":62287,\"ĠGlob\":62288,\"NamedQuery\":62289,\"_BG\":62290,\"ĠLiveData\":62291,\"ĠSendMessage\":62292,\"ĠrespondsToSelector\":62293,\"encers\":62294,\"instructions\":62295,\"(It\":62296,\"åĳ½åĳ¨æľŁ\":62297,\"ĠGomez\":62298,\"charges\":62299,\".GeneratedValue\":62300,\"ĠMacron\":62301,\"(PORT\":62302,\"ĠProcesses\":62303,\".onResume\":62304,\"Ġfie\":62305,\"Builders\":62306,\")get\":62307,\"_wallet\":62308,\"Ġcanc\":62309,\"ĠMobility\":62310,\"Ġalarms\":62311,\"rosis\":62312,\"amaÃ±o\":62313,\"Ġpis\":62314,\"Ġãĥ»\":62315,\"Sha\":62316,\"Ġconfessed\":62317,\"(INFO\":62318,\"(','\":62319,\"_Server\":62320,\"Ġblasted\":62321,\"ĠFarmers\":62322,\"ruz\":62323,\"ckeditor\":62324,\"_IMPLEMENT\":62325,\"Ġmotto\":62326,\"ĠCARE\":62327,\"Ġydk\":62328,\"Bone\":62329,\"ĠademÃ¡s\":62330,\"+\\\"/\\\"+\":62331,\"PropTypes\":62332,\"_SZ\":62333,\".paint\":62334,\".pixel\":62335,\"ĠMessageType\":62336,\"Ġtweaks\":62337,\"`.ĊĊ\":62338,\"Verification\":62339,\"neck\":62340,\"berra\":62341,\"Ġmindful\":62342,\"Surv\":62343,\"Ġ:-Ċ\":62344,\"Ġanyways\":62345,\"ĠAdmission\":62346,\"accessible\":62347,\"FlatButton\":62348,\"Ġ\\\"'\\\");Ċ\":62349,\"Ġhaha\":62350,\"ToPoint\":62351,\"Ġburgers\":62352,\"getState\":62353,\"\\\\Helper\":62354,\"ĠFUNCT\":62355,\"ĠELEMENT\":62356,\"ĠCERT\":62357,\"ĠACCOUNT\":62358,\"charging\":62359,\"_candidate\":62360,\"_recent\":62361,\"ĠInstructor\":62362,\"Ġdrunken\":62363,\"YSQL\":62364,\"orative\":62365,\"\\\":\\\"\\\"\":62366,\"ĠtagName\":62367,\"_NEG\":62368,\"Ġqp\":62369,\"ĠUndefined\":62370,\"Ġgrease\":62371,\"ĉĠĠĉ\":62372,\"Ġeagerly\":62373,\"TexParameteri\":62374,\"distributed\":62375,\"Administrator\":62376,\"Distribution\":62377,\"ĠDecomp\":62378,\"ĠTransformer\":62379,\".btnSave\":62380,\"ĠGos\":62381,\"(Enum\":62382,\"cairo\":62383,\"-ci\":62384,\"/report\":62385,\"ĠPoster\":62386,\"_dependency\":62387,\"Ġexploits\":62388,\"setFlash\":62389,\"Ġxt\":62390,\"Ġjewellery\":62391,\"Ġdai\":62392,\"_RAM\":62393,\"Ġberries\":62394,\"Ġgranny\":62395,\"Fatal\":62396,\"Ã©al\":62397,\"-most\":62398,\".VisualBasic\":62399,\"ĠPend\":62400,\"bei\":62401,\"jak\":62402,\";*/Ċ\":62403,\"Boy\":62404,\">Select\":62405,\"indrical\":62406,\"Technology\":62407,\"ĠAllison\":62408,\"datatype\":62409,\"'clock\":62410,\"Ġkost\":62411,\"Ġbajo\":62412,\".Country\":62413,\"Zend\":62414,\".wrapper\":62415,\"à½\":62416,\"ĠFilipino\":62417,\"ocre\":62418,\"SSH\":62419,\"ĠSAMPLE\":62420,\"_initialized\":62421,\");?>Ċ\":62422,\"Ġpornost\":62423,\"esan\":62424,\"ĠCutting\":62425,\"Ġmixes\":62426,\"_again\":62427,\"Ġformulario\":62428,\"[V\":62429,\"Ġtelefono\":62430,\"/us\":62431,\"ĠloadData\":62432,\".references\":62433,\"ĠmapView\":62434,\"+\\\"_\":62435,\"ĠSQLiteDatabase\":62436,\"iton\":62437,\"ColumnType\":62438,\"ĠEverton\":62439,\".Results\":62440,\"/not\":62441,\"ĠgetFile\":62442,\"heritance\":62443,\"ĠgetHeight\":62444,\"$username\":62445,\"withdraw\":62446,\"_);čĊ\":62447,\".ut\":62448,\"ĠQApplication\":62449,\"urnal\":62450,\"-download\":62451,\"burger\":62452,\"preci\":62453,\"ĠThankfully\":62454,\".EVENT\":62455,\"Ġgreatness\":62456,\"Ġloosely\":62457,\"Ġmash\":62458,\"Ġgehen\":62459,\"_ant\":62460,\"Ġimpending\":62461,\".isPresent\":62462,\"Ġstains\":62463,\"IMS\":62464,\".backends\":62465,\"Ġirrigation\":62466,\"ĠTat\":62467,\"/tests\":62468,\"ĠKingston\":62469,\".translatesAutoresizingMaskIntoConstraints\":62470,\"Ġvomiting\":62471,\"-required\":62472,\"Ġblaze\":62473,\"ĠStafford\":62474,\"RID\":62475,\"/fwlink\":62476,\"Ġkale\":62477,\"sold\":62478,\"(progress\":62479,\"(chart\":62480,\"Ġcyst\":62481,\"Ġdiligence\":62482,\"/mp\":62483,\"Ġclergy\":62484,\"ĠBrowserRouter\":62485,\"ĠAPK\":62486,\"ĠCONTACT\":62487,\"BarItem\":62488,\"-Disposition\":62489,\"ĠMotorola\":62490,\"_sal\":62491,\"ĠWooden\":62492,\"ĠTHEY\":62493,\"Ġcommentators\":62494,\"Ġcommercials\":62495,\"=model\":62496,\".\\\"),Ċ\":62497,\"ĠPlugins\":62498,\"dain\":62499,\"headed\":62500,\"ĠCoordinates\":62501,\"Jane\":62502,\"ĠPreferred\":62503,\"Ġpodemos\":62504,\".isBlank\":62505,\"ĠStap\":62506,\"Ġwsp\":62507,\"ĠCOLL\":62508,\"_bid\":62509,\"Ġprobes\":62510,\"uania\":62511,\"(sym\":62512,\"Ġcuerpo\":62513,\"Ġmanipulating\":62514,\"Ġamazingly\":62515,\".DAY\":62516,\"umptech\":62517,\"acobian\":62518,\"Terminate\":62519,\"Ġstationed\":62520,\"SetBranch\":62521,\"Screenshot\":62522,\"esthesia\":62523,\"Ġwalker\":62524,\"#from\":62525,\"coordinate\":62526,\"_interest\":62527,\"Ġhelpless\":62528,\"ĉpub\":62529,\"nga\":62530,\"_Ex\":62531,\"Ġnw\":62532,\"Ġtextual\":62533,\"Ġplugs\":62534,\"Ġminion\":62535,\"mares\":62536,\"<>Ċ\":62537,\"ACA\":62538,\"CompanyName\":62539,\"(ec\":62540,\"ĠLandscape\":62541,\"_PROVIDER\":62542,\"cw\":62543,\"ĶĦ\":62544,\"AccountId\":62545,\"$:\":62546,\"ĠPersonally\":62547,\"propertyName\":62548,\"ĠKub\":62549,\"'i\":62550,\"ĠGiul\":62551,\"Ġprioritize\":62552,\"FORMANCE\":62553,\"ĠParade\":62554,\")\\\\Ċ\":62555,\"stdbool\":62556,\"ĠalertDialog\":62557,\"ĠLeh\":62558,\".catalog\":62559,\"Ġwebinar\":62560,\"Ġimporter\":62561,\"projectId\":62562,\"TYPO\":62563,\"__čĊ\":62564,\"GW\":62565,\"summer\":62566,\"Ġsinister\":62567,\".failed\":62568,\"Ġbesoin\":62569,\"isman\":62570,\"DEST\":62571,\"ĠnháºŃp\":62572,\"ĠmoÅ¼na\":62573,\"_instr\":62574,\"Ġpaved\":62575,\"Ġprefixes\":62576,\"Ġrampant\":62577,\"ĠyAxis\":62578,\"Ġæ³¨\":62579,\"_middle\":62580,\"Ġscholarly\":62581,\"Ġprostitutes\":62582,\"Ġmorale\":62583,\".permissions\":62584,\".getList\":62585,\"Ġrejecting\":62586,\"Ġlooping\":62587,\"ĠSpecifications\":62588,\"Ġimmensely\":62589,\"ĠMedian\":62590,\"(chain\":62591,\"Ġclich\":62592,\"/flutter\":62593,\"acf\":62594,\".urlopen\":62595,\"utterstock\":62596,\"Ġspectra\":62597,\"Ġadmir\":62598,\"/max\":62599,\".Emit\":62600,\"(weights\":62601,\"iÄĻ\":62602,\"Installing\":62603,\"Ju\":62604,\"ĠFell\":62605,\"ĠFRE\":62606,\".den\":62607,\"ĠBigInt\":62608,\"\\\">@\":62609,\"Ġ*);ĊĊ\":62610,\"ĠBiological\":62611,\"Ġpatented\":62612,\".pagination\":62613,\".roll\":62614,\"ĠDul\":62615,\"Ġdesarrollo\":62616,\"Regardless\":62617,\"ĺìĿ´\":62618,\"Ġrobe\":62619,\"ÐĿÐµ\":62620,\"ĠBoyd\":62621,\"/************************\":62622,\"receipt\":62623,\"ĠAssigned\":62624,\"attendance\":62625,\"-choice\":62626,\"etsy\":62627,\"_else\":62628,\",next\":62629,\"_existing\":62630,\"Ġ''),Ċ\":62631,\"Ġlibertin\":62632,\"traits\":62633,\"atte\":62634,\"Comparable\":62635,\"ĠCov\":62636,\"ĠAdoles\":62637,\",the\":62638,\"ĠLoaded\":62639,\"|r\":62640,\"=index\":62641,\"ĠGast\":62642,\"Ġinjector\":62643,\"ĉstop\":62644,\"-google\":62645,\"Ġfetal\":62646,\"Ġallo\":62647,\"yleft\":62648,\"getParameter\":62649,\"âĢĿâĢĶ\":62650,\"_sector\":62651,\".Utility\":62652,\"oscope\":62653,\".ease\":62654,\"ĠMagnetic\":62655,\"ArrayOf\":62656,\"Ġfearful\":62657,\"ĠInfer\":62658,\"ĠFuk\":62659,\"Johnson\":62660,\"$array\":62661,\"Ġsais\":62662,\"_contr\":62663,\"Descri\":62664,\"ĠDetailed\":62665,\"_leave\":62666,\"_ROT\":62667,\"ĠnÃ¤ch\":62668,\"Ġkami\":62669,\"DCALL\":62670,\":eq\":62671,\"Ġmonk\":62672,\"_objs\":62673,\"(Service\":62674,\"finance\":62675,\"Ġpodem\":62676,\"_restore\":62677,\"Ġdecorators\":62678,\"Ġadvising\":62679,\"ĠÐ¿Ð°ÑĢ\":62680,\".perm\":62681,\"ĠHai\":62682,\"Ġfk\":62683,\"unteers\":62684,\"ĠRTWF\":62685,\"_ix\":62686,\"ACS\":62687,\"Ġbreakout\":62688,\"direccion\":62689,\"ĠSunset\":62690,\"_fx\":62691,\"olkata\":62692,\"-radio\":62693,\"Het\":62694,\".utilities\":62695,\"_basis\":62696,\"(kind\":62697,\"ĠConc\":62698,\"Thumb\":62699,\"ĠMiche\":62700,\"delivr\":62701,\"Ġgute\":62702,\"ĠFilePath\":62703,\"ĠTribe\":62704,\"\\\\\\\")\":62705,\"_cuda\":62706,\"Difference\":62707,\"ĠMonsters\":62708,\"ĠsetType\":62709,\".ContentType\":62710,\"Ġdum\":62711,\"Envelope\":62712,\"agt\":62713,\"Ġunload\":62714,\"_checker\":62715,\"Ġresto\":62716,\"_people\":62717,\"Prices\":62718,\"Profiles\":62719,\"()\\\\\":62720,\"FUN\":62721,\"Ġ\\\"#\\\"\":62722,\"ĠPatterns\":62723,\"ĠSPD\":62724,\"_ROWS\":62725,\"Orig\":62726,\"blade\":62727,\"ĠlÃ©\":62728,\"%i\":62729,\"+++\":62730,\"Lifecycle\":62731,\"---------------Ċ\":62732,\"Tar\":62733,\"ThanOr\":62734,\"&q\":62735,\"Ġcriticisms\":62736,\"-ph\":62737,\"ElementException\":62738,\"_guest\":62739,\"Ġë¶\":62740,\"_As\":62741,\"ĠCarry\":62742,\"_BIG\":62743,\"akeup\":62744,\"_retry\":62745,\"ĠnÃ©cess\":62746,\"ĠMISS\":62747,\"isu\":62748,\"ĠSpiritual\":62749,\"_$_\":62750,\"Ġreflections\":62751,\"<t\":62752,\"ĠfunÃ§Ã£o\":62753,\"Ġmonarch\":62754,\"ĠPatel\":62755,\"_voltage\":62756,\"Ġrainy\":62757,\"court\":62758,\"Ġultrasound\":62759,\"iOS\":62760,\"_ALWAYS\":62761,\"Wo\":62762,\"_BLEND\":62763,\"oksen\":62764,\"Ġtraveler\":62765,\"ĠdataTable\":62766,\"setCurrent\":62767,\"Workflow\":62768,\".yellow\":62769,\"])-\":62770,\"ABSPATH\":62771,\"_iteration\":62772,\"Ð´ÑĢ\":62773,\"Ġubic\":62774,\"Ġmeats\":62775,\"/em\":62776,\"ĠDisorder\":62777,\"Ġenviar\":62778,\"SEO\":62779,\"Ġheavens\":62780,\"_stub\":62781,\"Ġadress\":62782,\"ĠTrie\":62783,\"ĠLindsay\":62784,\"lei\":62785,\"Ġplata\":62786,\".setting\":62787,\"Ġelek\":62788,\"Ġ(${\":62789,\"Automatic\":62790,\"Ġdownstairs\":62791,\"PIX\":62792,\"icional\":62793,\"abal\":62794,\"-storage\":62795,\"ichier\":62796,\"ĠAlphabet\":62797,\",label\":62798,\"@Ċ\":62799,\"Ġintestinal\":62800,\"Ġvara\":62801,\".ma\":62802,\"Ġprogn\":62803,\"Ġnephew\":62804,\"Timing\":62805,\"classname\":62806,\"Ġlocom\":62807,\"ĠSamantha\":62808,\"ĠAccordingly\":62809,\"ĠXCTestCase\":62810,\"ĠPlains\":62811,\"ĠLenin\":62812,\"nop\":62813,\"ĠTyson\":62814,\"Ġrenal\":62815,\"oine\":62816,\"(TestCase\":62817,\"ĠLomb\":62818,\"Bang\":62819,\"Ġvolum\":62820,\"_gender\":62821,\"Ġlut\":62822,\"Ġï¼\":62823,\"Configurer\":62824,\"ĠstrokeWidth\":62825,\".HttpServlet\":62826,\"|x\":62827,\".JScrollPane\":62828,\"Ġconsort\":62829,\".bumptech\":62830,\"tridges\":62831,\"Ġbeneficiary\":62832,\"=require\":62833,\"renc\":62834,\"ĠOU\":62835,\"entario\":62836,\"Ġurges\":62837,\"âĢĶnot\":62838,\"Campaign\":62839,\"dre\":62840,\"ĠRiverside\":62841,\"ĉtb\":62842,\"ĠoutputFile\":62843,\"Ġabst\":62844,\"Ġstructs\":62845,\"Ġrval\":62846,\"\\\\\\\">\\\"\":62847,\"Ġacquisitions\":62848,\"BLACK\":62849,\"Ġtrunc\":62850,\"Ġannotated\":62851,\"setUp\":62852,\"TOKEN\":62853,\"ĠCoca\":62854,\"Disappear\":62855,\":value\":62856,\"Ġaided\":62857,\"ttl\":62858,\"lux\":62859,\"Ġacuerdo\":62860,\"ĠFinger\":62861,\".Geometry\":62862,\"]');Ċ\":62863,\".gf\":62864,\"TXT\":62865,\"ĠScotia\":62866,\"avra\":62867,\"Ġvip\":62868,\"Ġwhopping\":62869,\"-girl\":62870,\"Ġcursed\":62871,\"][-\":62872,\"Ġcirculated\":62873,\"uncture\":62874,\"orman\":62875,\"ĠmAdapter\":62876,\"ĠâĢĶĊĊ\":62877,\"FileManager\":62878,\"(iParam\":62879,\"ImageButton\":62880,\"DAQ\":62881,\"Armor\":62882,\"Ġspat\":62883,\".jsdelivr\":62884,\"Ġmisog\":62885,\".ecore\":62886,\"']}Ċ\":62887,\"imports\":62888,\"Ġdinosaur\":62889,\"-Free\":62890,\"Ġannon\":62891,\"Ġtribunal\":62892,\"Ya\":62893,\".guid\":62894,\"mostly\":62895,\"====Ċ\":62896,\"Ġimagem\":62897,\"Suit\":62898,\"kas\":62899,\"ĠChannels\":62900,\"Budget\":62901,\"ĠDivide\":62902,\"jem\":62903,\"ĠGri\":62904,\"Ġindicative\":62905,\"\\\\Factory\":62906,\".repositories\":62907,\"ĠAMP\":62908,\".snp\":62909,\"ĠaÃ§\":62910,\"\\\"k\":62911,\"ĠÂµ\":62912,\"decoded\":62913,\"_arc\":62914,\"-Clause\":62915,\"ĠAdj\":62916,\"ĠnewArray\":62917,\"(GET\":62918,\"Ġlatin\":62919,\"Ġwz\":62920,\":uint\":62921,\"åĪ«\":62922,\"\\\"..\":62923,\"Connecting\":62924,\"ennon\":62925,\"å¹¶\":62926,\"ĠSes\":62927,\"Ġbelongings\":62928,\"+'&\":62929,\"ĉsettings\":62930,\"INV\":62931,\"ĠpÃ©\":62932,\"Ġadulthood\":62933,\"amble\":62934,\"_masks\":62935,\"-resolution\":62936,\"rats\":62937,\"Ġíģ´\":62938,\"Ġvog\":62939,\"ĠSho\":62940,\"ĠCovenant\":62941,\"Ġreminding\":62942,\"ornado\":62943,\"iad\":62944,\"å¼Ĥ\":62945,\"Creative\":62946,\"ĠSTYLE\":62947,\"Ġanomaly\":62948,\"\\\\Application\":62949,\"Ġmanifestation\":62950,\"ĠNano\":62951,\"MapView\":62952,\"ideal\":62953,\"achinery\":62954,\"ĠVaugh\":62955,\"printer\":62956,\"Verdana\":62957,\"/component\":62958,\"ĠaddChild\":62959,\"Ġlearner\":62960,\"Ġdecrypted\":62961,\"Ġtighter\":62962,\"æĿŁ\":62963,\"Ġjej\":62964,\"Ġ.ĊĊĊĊ\":62965,\"ĠLobby\":62966,\"lep\":62967,\"Ã¤nn\":62968,\"leigh\":62969,\"/routes\":62970,\"Ġcanopy\":62971,\"ĠFiscal\":62972,\":;\\\"\":62973,\"Ġburdens\":62974,\"/full\":62975,\"ĠCSR\":62976,\".SharedPreferences\":62977,\"/tree\":62978,\"Ġdroit\":62979,\"Implement\":62980,\"GetCurrent\":62981,\"(push\":62982,\"$x\":62983,\"ÑıÐ·\":62984,\"ACITY\":62985,\"==========Ċ\":62986,\"jc\":62987,\"_href\":62988,\".getRoot\":62989,\"ĠKD\":62990,\"(ls\":62991,\"[cnt\":62992,\"Ġdall\":62993,\"(bp\":62994,\"ĠEW\":62995,\"KeyEvent\":62996,\"lobe\":62997,\"Ġhtmlentities\":62998,\"Ġfalta\":62999,\"Ġvalves\":63000,\"Ġsizing\":63001,\"Porn\":63002,\"ĠshowError\":63003,\"ĠFrid\":63004,\"ĠÃĩ\":63005,\".randn\":63006,\"Ġtantr\":63007,\"Ġsax\":63008,\"urovision\":63009,\"theon\":63010,\"_RCC\":63011,\"xFD\":63012,\"InitStruct\":63013,\"Ġcanned\":63014,\"Ġquantidade\":63015,\".WARNING\":63016,\"ĠBritt\":63017,\"-register\":63018,\"actively\":63019,\"ĠNatalie\":63020,\"ãģ¿\":63021,\"ĠCONNECT\":63022,\"zek\":63023,\"Ġmillones\":63024,\"]int\":63025,\"Ġ',',\":63026,\"Ġprin\":63027,\"\\\":[-\":63028,\"Ġ//.\":63029,\"Ġintimidating\":63030,\"razione\":63031,\".ibm\":63032,\"ĠJakarta\":63033,\"Ð¼ÐµÑĢ\":63034,\"ĠloadChildren\":63035,\"_UPLOAD\":63036,\"ĠWeeks\":63037,\"ĠgetText\":63038,\"ĠðŁĴ\":63039,\"Ġ]]Ċ\":63040,\"ĠCosts\":63041,\"ÄĻp\":63042,\"payments\":63043,\".Movie\":63044,\"lh\":63045,\"´Ī\":63046,\"_certificate\":63047,\"=q\":63048,\"libraries\":63049,\"ĠAer\":63050,\"auss\":63051,\"ĉfail\":63052,\"OUNDS\":63053,\"sendKeys\":63054,\"Ġscams\":63055,\"warts\":63056,\"Hist\":63057,\"ĠEssex\":63058,\"Ġfury\":63059,\"Ġtitre\":63060,\"ĠCopenhagen\":63061,\"Ġpredefined\":63062,\"scp\":63063,\"serrat\":63064,\".ensure\":63065,\"ilee\":63066,\"Merit\":63067,\"_UNLOCK\":63068,\"ĠCorrection\":63069,\"Normalization\":63070,\"Ġä¿®æĶ¹\":63071,\"Ġstool\":63072,\"ĠåĪłéĻ¤\":63073,\"Shortcut\":63074,\"chosen\":63075,\"Ġbully\":63076,\"ĠfunciÃ³n\":63077,\"ãĥ¼ãĥ«\":63078,\"ĠçĶŁåĳ½åĳ¨æľŁ\":63079,\".alias\":63080,\">Total\":63081,\"ĠSTEM\":63082,\"peng\":63083,\"caler\":63084,\"perfect\":63085,\"Ġbonding\":63086,\"Phones\":63087,\"Ġpulp\":63088,\"ë¶Ģ\":63089,\"IEWS\":63090,\"ĠDeer\":63091,\"_LCD\":63092,\"ĠConcord\":63093,\"Wizard\":63094,\"Ġofrec\":63095,\"ĠEmerald\":63096,\"teness\":63097,\"navigator\":63098,\"Theory\":63099,\"Ġguardar\":63100,\"Ġfulfil\":63101,\"ĠUnauthorized\":63102,\"ĠBout\":63103,\"ĉhost\":63104,\"ĠRib\":63105,\"(ft\":63106,\"Docs\":63107,\".getBody\":63108,\"å¿ĥ\":63109,\"ĠRivera\":63110,\"Ġwaving\":63111,\"Ġperfil\":63112,\"BoundingClientRect\":63113,\".fa\":63114,\"paged\":63115,\"ĠAffiliate\":63116,\"Ġprolet\":63117,\"}->{\":63118,\"(scores\":63119,\"Ġvitae\":63120,\"{Name\":63121,\"scheduler\":63122,\"_SAN\":63123,\"ĠNec\":63124,\"ĠBeef\":63125,\"_tc\":63126,\"LIN\":63127,\"ĠEventType\":63128,\"ĠBufferedWriter\":63129,\"Ġsofter\":63130,\"ĠVoting\":63131,\"ĠGestureDetector\":63132,\"Ġunseen\":63133,\"ĠSCO\":63134,\"Ġelo\":63135,\"combine\":63136,\"_makeConstraints\":63137,\"Ġundergone\":63138,\"ĠOfficials\":63139,\",opt\":63140,\"Ġlayered\":63141,\"IÃĵN\":63142,\"Ġbankers\":63143,\"Ġsegregation\":63144,\"Ġrussian\":63145,\"Ġventana\":63146,\"getKey\":63147,\"Santa\":63148,\".ToolStripSeparator\":63149,\"ĠAeros\":63150,\".putInt\":63151,\"Ġinforms\":63152,\"_bill\":63153,\"ë¦Ħ\":63154,\".setMax\":63155,\"Ġ}>Ċ\":63156,\"ĠIPS\":63157,\"ĠAlic\":63158,\"\\\"}ĊĊ\":63159,\"Ġusher\":63160,\"ĠNguyen\":63161,\"Ġabsolut\":63162,\"Ġguarded\":63163,\"ĠRebel\":63164,\"ĠZw\":63165,\"ĠAnnunci\":63166,\"ĠprÃ¡\":63167,\"abcdefghijkl\":63168,\"ĠVerified\":63169,\"[ix\":63170,\"Ġtiers\":63171,\"Ã¢t\":63172,\".\\\")čĊ\":63173,\"iju\":63174,\"living\":63175,\"GPS\":63176,\".TestTools\":63177,\"SizePolicy\":63178,\"Ġmassages\":63179,\"assertInstanceOf\":63180,\"ĠpossÃŃvel\":63181,\"Ġbusc\":63182,\"ĠJudaism\":63183,\"Ġindispensable\":63184,\"ĠMostly\":63185,\"ITA\":63186,\"ĠgetContent\":63187,\"BrowserRouter\":63188,\"-counter\":63189,\"Ġobten\":63190,\"Ġ/>);Ċ\":63191,\"Ð¸Ð»\":63192,\"headline\":63193,\"(home\":63194,\"alice\":63195,\"ldre\":63196,\"_Module\":63197,\"Companies\":63198,\"NPC\":63199,\"Ġtorso\":63200,\".cons\":63201,\"ĉaddress\":63202,\"_purchase\":63203,\"ĠBard\":63204,\"gst\":63205,\"-animation\":63206,\"_paid\":63207,\".special\":63208,\"Ġdelim\":63209,\"Ġtakeover\":63210,\"(hand\":63211,\"enuine\":63212,\"-grey\":63213,\"ĠABI\":63214,\"SessionFactory\":63215,\"installer\":63216,\"_DISTANCE\":63217,\"ĠFavorites\":63218,\"łĢ\":63219,\"'>{\":63220,\"ĠLaurent\":63221,\"ÑĩÐµÑĤ\":63222,\"Ġstripslashes\":63223,\"Ġestaba\":63224,\"&t\":63225,\".pan\":63226,\"ĠPARTY\":63227,\"ĠBali\":63228,\"csi\":63229,\"(memory\":63230,\"ĠTodos\":63231,\"ĠSOAP\":63232,\"agnet\":63233,\"ĉbefore\":63234,\"OptionsResolver\":63235,\"iben\":63236,\"ĠÙħÙĨ\":63237,\"Ġadditive\":63238,\"ĠMelee\":63239,\"ĠManitoba\":63240,\"ĠPercentage\":63241,\"=(-\":63242,\".kill\":63243,\"Ġlx\":63244,\"anca\":63245,\"Ġfotograf\":63246,\"Ġblanc\":63247,\"ĠResidents\":63248,\"pink\":63249,\"HBoxLayout\":63250,\".union\":63251,\"ĠHY\":63252,\"ĠcontentView\":63253,\"-fat\":63254,\"ĉhas\":63255,\"ë£Į\":63256,\"Ġwhipped\":63257,\"vendors\":63258,\"ubre\":63259,\"ITHER\":63260,\".functional\":63261,\"ĠÐ²ÐµÑĢ\":63262,\"Canceled\":63263,\"-cn\":63264,\"InOut\":63265,\".RowStyles\":63266,\"Ġtrata\":63267,\"ĠIndoor\":63268,\"-fashioned\":63269,\"ĠBooth\":63270,\".LabelControl\":63271,\"Ġpope\":63272,\"ĠCarnegie\":63273,\"nergie\":63274,\"ĠBX\":63275,\"ãĢĤ\\\",Ċ\":63276,\"ĠWebster\":63277,\"ĉdiv\":63278,\"Narr\":63279,\"Ġconjug\":63280,\"kid\":63281,\"Ġmoderation\":63282,\"Ġamy\":63283,\"ĠSolve\":63284,\"VIC\":63285,\"ĠEZ\":63286,\"illac\":63287,\"ĠCipher\":63288,\"ĠAccepted\":63289,\"LABEL\":63290,\"Ġwrath\":63291,\"ĠminValue\":63292,\"ĠkaÅ¼\":63293,\"ĠDaughter\":63294,\").^\":63295,\"(dc\":63296,\"Ġresolves\":63297,\"scss\":63298,\"abouts\":63299,\"ultipartFile\":63300,\"Ġfeats\":63301,\"Ġlaundering\":63302,\"ĠcompaÃ±\":63303,\"Ġseguridad\":63304,\"Ġhobbies\":63305,\"-facing\":63306,\"\\\"value\":63307,\"getImage\":63308,\"SqlServer\":63309,\"ĠwithStyles\":63310,\">Date\":63311,\"ĠExped\":63312,\"$json\":63313,\"éĵ¾\":63314,\"ĠACTIONS\":63315,\"Sensitive\":63316,\"blast\":63317,\"ĠÃ¶ff\":63318,\"fte\":63319,\"CTSTR\":63320,\"ĠLogLevel\":63321,\"contracts\":63322,\".djang\":63323,\"\\\">ččĊ\":63324,\"ETYPE\":63325,\"Ġobjc\":63326,\"_SOUND\":63327,\"_spacing\":63328,\"_classifier\":63329,\"Ġroc\":63330,\"Classic\":63331,\"Ġë³´\":63332,\"_inverse\":63333,\"-acre\":63334,\"ĠFIL\":63335,\"ĠDVDs\":63336,\"Ġswallowed\":63337,\"villa\":63338,\"ĠReplies\":63339,\"Firebase\":63340,\"Ġphysique\":63341,\"ĉthat\":63342,\"ĠResize\":63343,\">>>>>>>\":63344,\"Nearly\":63345,\".artist\":63346,\"-{\":63347,\"?>čĊčĊ\":63348,\".lr\":63349,\".ir\":63350,\"([$\":63351,\"ianne\":63352,\"ĉob\":63353,\",'%\":63354,\"Ġknex\":63355,\"Ġcorro\":63356,\"ĠOwens\":63357,\"=nil\":63358,\"lays\":63359,\"apg\":63360,\"Ãĸ\":63361,\"ENO\":63362,\"Henry\":63363,\"Justin\":63364,\"electric\":63365,\"ĠNordic\":63366,\"æĮĩ\":63367,\"Ġexcludes\":63368,\"European\":63369,\"Ġtents\":63370,\"(StringUtils\":63371,\"(peer\":63372,\"ystore\":63373,\"Pocket\":63374,\"fuel\":63375,\"etus\":63376,\"ĠMarin\":63377,\"ÑĢÑĥÐº\":63378,\"è¯Ħ\":63379,\"ĠPens\":63380,\"Ġinefficient\":63381,\"Ġeternity\":63382,\".'&\":63383,\"ĠPackages\":63384,\"ĠAppConfig\":63385,\"Ġmultid\":63386,\"culo\":63387,\"Ġborrowers\":63388,\"ĠDebbie\":63389,\"Ġfronts\":63390,\"JJ\":63391,\"Ġ\\\"../../../../\":63392,\"Ġ\\\"+Ċ\":63393,\"================================================================================\":63394,\"ĠGavin\":63395,\"Ġmish\":63396,\"âķĳ\":63397,\"_ATTACK\":63398,\"Independ\":63399,\"à¯įà®\":63400,\"Ã¡f\":63401,\"gars\":63402,\"ĠParticipation\":63403,\"Verbose\":63404,\"Spr\":63405,\"Svg\":63406,\"(ValueError\":63407,\"Ġreconcile\":63408,\"ĉDBG\":63409,\"meet\":63410,\"ĠLoginPage\":63411,\"-unused\":63412,\"Ġjong\":63413,\"Ġancora\":63414,\"ĠØ£\":63415,\">Z\":63416,\"=w\":63417,\"ĠReno\":63418,\"vie\":63419,\"otionEvent\":63420,\"ĠListTile\":63421,\"_Runtime\":63422,\"Ġuphold\":63423,\"ĠObtain\":63424,\"provided\":63425,\"ĠDatePicker\":63426,\"ĠCGI\":63427,\"ĠBlackBerry\":63428,\"acho\":63429,\"ĠIsaiah\":63430,\"æķ´\":63431,\"ĠAbdullah\":63432,\"Ġupp\":63433,\"Ġurlpatterns\":63434,\"ĉsizeof\":63435,\"Ġpissed\":63436,\"ĠpreferredStyle\":63437,\"APPER\":63438,\"ĠVB\":63439,\"ĠTeresa\":63440,\"ognito\":63441,\"EMY\":63442,\"Ġelegance\":63443,\"ĠClayton\":63444,\"ativos\":63445,\"ĠAnalog\":63446,\"Ġgaussian\":63447,\"ĠHibernate\":63448,\"[][\":63449,\"Ġsweetness\":63450,\"ĠNielsen\":63451,\"ĠDuterte\":63452,\"(sel\":63453,\",+\":63454,\"Ġextraordin\":63455,\"flake\":63456,\"[Double\":63457,\"///čĊ\":63458,\"Ġmuchas\":63459,\"ĠBroadcasting\":63460,\"Association\":63461,\"exercise\":63462,\".Relative\":63463,\"Ġubiquitous\":63464,\"SBATCH\":63465,\"Ä±na\":63466,\"-food\":63467,\"Ġcrystall\":63468,\"ÑĥÐ±\":63469,\"Ġ'~\":63470,\"ĠÐĳ\":63471,\"Ġdunk\":63472,\"Ġzi\":63473,\"ĠMug\":63474,\"Ġdeception\":63475,\"ĠEmacs\":63476,\"ĊĠĠĠĠĊĠĠĠĠĊ\":63477,\"ĠÄĳÆ°á»£c\":63478,\"ĠWolves\":63479,\"amenti\":63480,\"Ġ')[\":63481,\"formats\":63482,\"Recv\":63483,\"Detailed\":63484,\"(HWND\":63485,\"_trial\":63486,\"agrant\":63487,\"Om\":63488,\"conscious\":63489,\"Ġosp\":63490,\"quÃ©\":63491,\"Ġgon\":63492,\"Ġmereka\":63493,\"arendra\":63494,\"Mine\":63495,\".linkedin\":63496,\"Ġfifo\":63497,\".monitor\":63498,\"Ġrune\":63499,\"mnop\":63500,\"Ġspeculate\":63501,\"egl\":63502,\"Ġvascular\":63503,\".tech\":63504,\"Ġmagma\":63505,\"Ġlest\":63506,\"umann\":63507,\"ĠDriverManager\":63508,\"Ġort\":63509,\"Ġlingering\":63510,\"Ġostream\":63511,\"Ġsparkling\":63512,\".connector\":63513,\"Ġtails\":63514,\"Ġkernels\":63515,\"USERNAME\":63516,\"ĉcc\":63517,\"ĠonSelect\":63518,\"/MPL\":63519,\"tape\":63520,\".djangoproject\":63521,\"Gene\":63522,\"âĢĻin\":63523,\"/filter\":63524,\"-envelope\":63525,\"Ġapplause\":63526,\"Ġregistros\":63527,\"ĠCory\":63528,\"offline\":63529,\"-shot\":63530,\"lesc\":63531,\"otent\":63532,\"Ġnumerator\":63533,\".effect\":63534,\"placements\":63535,\"ĠAFC\":63536,\".Sequence\":63537,\"Ġ----------------------------------------------------------------------------Ċ\":63538,\"ynthia\":63539,\"ĠGriffith\":63540,\"elman\":63541,\"setDescription\":63542,\"ĠNights\":63543,\".orders\":63544,\"Ġ`,Ċ\":63545,\"ĠSalad\":63546,\"jiang\":63547,\"Ġrecur\":63548,\"ĠSTATIC\":63549,\"-sponsored\":63550,\"ylene\":63551,\",email\":63552,\"__))\":63553,\")\\\").\":63554,\"CELL\":63555,\"amment\":63556,\"LAY\":63557,\",std\":63558,\".pref\":63559,\".Cor\":63560,\"redo\":63561,\"ĠFucked\":63562,\"Ġruss\":63563,\"Ġestablishes\":63564,\"nvarchar\":63565,\".GetFileName\":63566,\"Ġpemb\":63567,\"ĠSaud\":63568,\"_packets\":63569,\".invoice\":63570,\".getTotal\":63571,\"HomeController\":63572,\"ĠtÃ¶\":63573,\"agher\":63574,\".ent\":63575,\".AbsoluteConstraints\":63576,\"Ġgenus\":63577,\"ĠBabylon\":63578,\"Ġ../../\":63579,\"ĠMidnight\":63580,\"Ġwg\":63581,\"Ġdancer\":63582,\"-imm\":63583,\"dire\":63584,\"hazi\":63585,\"certificate\":63586,\"ĠmData\":63587,\"Ġcured\":63588,\"svn\":63589,\"\\\"B\":63590,\"ibre\":63591,\"Ġdrafts\":63592,\"Capital\":63593,\"Ġconcise\":63594,\"ĠPeach\":63595,\"Ġ|\\\\\":63596,\"Ġppm\":63597,\"_contains\":63598,\"Autor\":63599,\"AutoSize\":63600,\"_lb\":63601,\"Ġsolemn\":63602,\"Ġfingert\":63603,\"ĠIndicator\":63604,\"ĠSv\":63605,\"Park\":63606,\"$type\":63607,\"_MISS\":63608,\"annual\":63609,\"Paid\":63610,\"masters\":63611,\"ĠWD\":63612,\"Ġvuel\":63613,\"Ġejac\":63614,\"ĉglut\":63615,\"Ġunfinished\":63616,\"esteem\":63617,\"groupBox\":63618,\"Removing\":63619,\"Ġeinige\":63620,\"ĠScripts\":63621,\"getto\":63622,\".HandleFunc\":63623,\"\\\"]),\":63624,\"Ġdisadvantages\":63625,\"-front\":63626,\">p\":63627,\"setOnClickListener\":63628,\"Ġlandlords\":63629,\"ĠMÃ¼\":63630,\"Ġpreprocessing\":63631,\")}>\":63632,\"-context\":63633,\",bool\":63634,\"QUIT\":63635,\"Ġ\\\")\\\");Ċ\":63636,\"ĠWebsites\":63637,\"ĠCharlottesville\":63638,\"Latch\":63639,\".directive\":63640,\"ĠHuffington\":63641,\"_dirty\":63642,\"expiration\":63643,\"ĠTPM\":63644,\"Ġedx\":63645,\"ĠWebDriverWait\":63646,\"Ġadmired\":63647,\"Ġlistens\":63648,\"ĠVil\":63649,\"different\":63650,\"Ġlivelihood\":63651,\"ĠWarcraft\":63652,\"Ġposicion\":63653,\"Ġimpeachment\":63654,\"Jay\":63655,\"Ġpositives\":63656,\"Ġjunge\":63657,\"ĠSMB\":63658,\"/includes\":63659,\"('../../../\":63660,\"ArgumentNullException\":63661,\"descricao\":63662,\"ABCDE\":63663,\"-AA\":63664,\"Ġinvaded\":63665,\"Ġamerica\":63666,\"uede\":63667,\"ĠPhaser\":63668,\"Ġscorer\":63669,\"Ġdiscouraged\":63670,\"thin\":63671,\"Ġabdomen\":63672,\"ĠIPP\":63673,\"ĠHampton\":63674,\"/Delete\":63675,\"[src\":63676,\"CString\":63677,\"ĠNun\":63678,\"Ġepith\":63679,\"âĢ»\":63680,\".tables\":63681,\"ĠHein\":63682,\"Ġwhirl\":63683,\"Ġclarification\":63684,\"Ġwedge\":63685,\"ĠhÃ¤r\":63686,\"ĠTina\":63687,\"Ġthwart\":63688,\"ĠCostume\":63689,\"ionage\":63690,\"Cod\":63691,\"_acl\":63692,\"Ġresh\":63693,\"ĠMercy\":63694,\"ĠDixon\":63695,\"Ġdesarroll\":63696,\"Virgin\":63697,\"**)&\":63698,\"ĠLenovo\":63699,\"Ġerased\":63700,\"entions\":63701,\"Ġslipping\":63702,\"åĽĽ\":63703,\"Ġcraving\":63704,\"plants\":63705,\"Ġgettext\":63706,\"Ġmassively\":63707,\"ĠRename\":63708,\".hero\":63709,\"ãĤ»\":63710,\"Ġtomar\":63711,\"ĠCOST\":63712,\"ĠPractices\":63713,\".MediaType\":63714,\"ĠFunding\":63715,\"Fine\":63716,\"igeria\":63717,\"Unc\":63718,\"Ġswapping\":63719,\">'.Ċ\":63720,\"interp\":63721,\"artifact\":63722,\"ĠBags\":63723,\".viewModel\":63724,\"quoted\":63725,\"ĉLong\":63726,\"_SCORE\":63727,\"Ġsavvy\":63728,\"nelle\":63729,\"klÃ¤\":63730,\"Counts\":63731,\"Ú¯\":63732,\"FieldType\":63733,\"okable\":63734,\"ĠRTL\":63735,\"#index\":63736,\"Ġ%{\":63737,\"Ġarist\":63738,\".GetMapping\":63739,\"(AdapterView\":63740,\"=\\\"\\\")Ċ\":63741,\"Ġdisin\":63742,\"ĠTouchableOpacity\":63743,\"ĠMOZ\":63744,\"ĠDunn\":63745,\"Capability\":63746,\"akhstan\":63747,\"UIViewController\":63748,\"(sockfd\":63749,\"ĠJacques\":63750,\"=tk\":63751,\"arParams\":63752,\"conda\":63753,\"Ġadvocated\":63754,\"Ġpenetrate\":63755,\"JECTION\":63756,\"Ġë°ĺ\":63757,\"ĠFIND\":63758,\"Ġearns\":63759,\"appen\":63760,\"ê±\":63761,\"Ġthroughput\":63762,\"Ġpensions\":63763,\"Ġfuss\":63764,\"HTTPRequest\":63765,\"nuts\":63766,\"ocht\":63767,\"-established\":63768,\"ĠALIGN\":63769,\"Ġjspb\":63770,\"Disp\":63771,\"_embeddings\":63772,\"Ġrept\":63773,\"ĠYorker\":63774,\"Ã²ng\":63775,\"Ġjourneys\":63776,\"ĠApproval\":63777,\"ĉSELECT\":63778,\"(Graph\":63779,\"Ð¼Ð¸\":63780,\"Ġdolls\":63781,\"Ġsexist\":63782,\"Ġpans\":63783,\"Ġmpl\":63784,\"Ġoperative\":63785,\"ĠTorrent\":63786,\"YM\":63787,\"ĠPassion\":63788,\"æĸŃ\":63789,\".compiler\":63790,\"ĉCString\":63791,\"=color\":63792,\"orianCalendar\":63793,\"ĠKnock\":63794,\"Ġhailed\":63795,\"/state\":63796,\"Ġsetuptools\":63797,\"ĠMare\":63798,\"Ġsynchronize\":63799,\"ĠSwipe\":63800,\"Ġgamble\":63801,\",'']]],Ċ\":63802,\"Ġdefective\":63803,\"_OBJC\":63804,\"Ġdenim\":63805,\"Ġtad\":63806,\"ĠKimber\":63807,\"Ġneurological\":63808,\"Ãªncias\":63809,\"ĉcb\":63810,\".setPassword\":63811,\"ĠPleasant\":63812,\"ĠPhi\":63813,\"-tags\":63814,\"Ġcontag\":63815,\"ĠCoral\":63816,\"Ġdistract\":63817,\"itizer\":63818,\"Ġsunrise\":63819,\"setId\":63820,\"ĠChennai\":63821,\"ĠOgre\":63822,\"_HISTORY\":63823,\"PRESSION\":63824,\"_SUFFIX\":63825,\"duplicate\":63826,\".authService\":63827,\"Ġspaced\":63828,\"ĠBengals\":63829,\"Solver\":63830,\"Ġbureaucracy\":63831,\"_hits\":63832,\"ĠÑĤÐ¸Ð¿\":63833,\"ĠcÃ©\":63834,\"Ġdisgrace\":63835,\"è§Ĵ\":63836,\"isOpen\":63837,\"Chem\":63838,\"_license\":63839,\"_hostname\":63840,\"_BREAK\":63841,\"Ġfiery\":63842,\":D\":63843,\"/linux\":63844,\"Titulo\":63845,\"Radians\":63846,\"izons\":63847,\"Ram\":63848,\"odian\":63849,\"iangle\":63850,\"Ġninja\":63851,\"Everybody\":63852,\"(\\\">\":63853,\"ĠtakÅ¼e\":63854,\"Ġgroundbreaking\":63855,\"Ġdirig\":63856,\"HTMLElement\":63857,\"ĠUncomment\":63858,\"chein\":63859,\"ĠçĶŁåĳ½åĳ¨æľŁåĩ½æķ°\":63860,\"%\\\"Ċ\":63861,\"Ġtipos\":63862,\"CharCode\":63863,\"ĠProducto\":63864,\"fait\":63865,\"'l\":63866,\"-thumbnail\":63867,\"usu\":63868,\"_formula\":63869,\".TOP\":63870,\".buy\":63871,\"Ġmieux\":63872,\"Century\":63873,\"pei\":63874,\"Ġtbsp\":63875,\"-Pacific\":63876,\"ogi\":63877,\"Ġfatto\":63878,\"Ġfantast\":63879,\"ĠSALE\":63880,\".ads\":63881,\"Ġpillars\":63882,\"_trip\":63883,\"Ġtua\":63884,\"Ġapellido\":63885,\".setCellValue\":63886,\"Ġ((_\":63887,\"ĠNina\":63888,\"<c\":63889,\"inium\":63890,\"dfunding\":63891,\"-working\":63892,\"ĠEstados\":63893,\"ĠMali\":63894,\"<f\":63895,\"urances\":63896,\"pagina\":63897,\"_PK\":63898,\"Ġunarmed\":63899,\"oggled\":63900,\"Candidate\":63901,\"Rather\":63902,\"Ġfranchises\":63903,\"Ġcovenant\":63904,\"Âª\":63905,\"ippines\":63906,\"Gun\":63907,\"-feira\":63908,\"Ġlineage\":63909,\"_GRANTED\":63910,\"genres\":63911,\".Elapsed\":63912,\"Ġlargo\":63913,\"ÐĽ\":63914,\"-ready\":63915,\"_processed\":63916,\"langs\":63917,\"Ãºmeros\":63918,\"fq\":63919,\"/npm\":63920,\"_srv\":63921,\"Ġattendant\":63922,\"ivid\":63923,\"evice\":63924,\"ABI\":63925,\"(binary\":63926,\"_VALIDATE\":63927,\"ĠaddItem\":63928,\"_coef\":63929,\"aleb\":63930,\"ographically\":63931,\"BorderColor\":63932,\"Ġassay\":63933,\"ĠcatchError\":63934,\"ĠChrysler\":63935,\"ogh\":63936,\"ĠkeyValue\":63937,\"decision\":63938,\"-offs\":63939,\"Ġliegt\":63940,\"(DataType\":63941,\"Ġiris\":63942,\"Ġeup\":63943,\"riger\":63944,\"onica\":63945,\"Ġropes\":63946,\"Ġnarrowly\":63947,\"ĠQuadr\":63948,\"Ġepub\":63949,\"estinal\":63950,\"-turn\":63951,\"Ġlangs\":63952,\"çĽĳåĲ¬é¡µéĿ¢\":63953,\"Ġquello\":63954,\",args\":63955,\"igate\":63956,\"ĠSeems\":63957,\"Ġforte\":63958,\"CLI\":63959,\"_LOADING\":63960,\".Rule\":63961,\"Ġyouths\":63962,\"(xx\":63963,\"ĠAssuming\":63964,\"aghetti\":63965,\")ĊĊĊĊĊ\":63966,\"ĠonOptionsItemSelected\":63967,\"Occup\":63968,\"Ġdetrimental\":63969,\"Ġinnate\":63970,\"ĠBarrel\":63971,\"uencia\":63972,\"ĠonBlur\":63973,\"Ġlibs\":63974,\"[last\":63975,\"Ġcpf\":63976,\".Timeout\":63977,\"estation\":63978,\"Ġwiel\":63979,\"Ġutilizar\":63980,\"Ġdisguise\":63981,\"ĠDum\":63982,\"OCI\":63983,\"ONGO\":63984,\"Ġ(?,\":63985,\"ĠPatio\":63986,\"VertexArray\":63987,\".authorization\":63988,\"roz\":63989,\"ĠHos\":63990,\".Space\":63991,\"ĠVirus\":63992,\"(keyword\":63993,\"TOCOL\":63994,\"_CONTROLLER\":63995,\"ĠBlocked\":63996,\"ĠChop\":63997,\"wiÄĻ\":63998,\"\\\\Routing\":63999,\"/package\":64000,\"Ġpersuaded\":64001,\"beits\":64002,\"LCD\":64003,\"Ġmuc\":64004,\"_FORWARD\":64005,\"Ġoutlaw\":64006,\"Ġzaw\":64007,\"_vehicle\":64008,\"ĠJensen\":64009,\".Green\":64010,\"Ġ/////\":64011,\"IRCLE\":64012,\"-business\":64013,\".Hidden\":64014,\"Ġkonnte\":64015,\"pq\":64016,\"Ġparece\":64017,\"Ġlandscaping\":64018,\"ĠDecoration\":64019,\"ĠGRA\":64020,\"_profiles\":64021,\"ĠFlem\":64022,\"CLICK\":64023,\"ĠFAILURE\":64024,\"Ġions\":64025,\"_Timer\":64026,\".Does\":64027,\"Ġbouncing\":64028,\"uppy\":64029,\"ulis\":64030,\"/ag\":64031,\"ĠGarn\":64032,\"Ġhud\":64033,\"Ġresponder\":64034,\"Ġstrchr\":64035,\"Ġchoke\":64036,\"Ġstash\":64037,\"_checksum\":64038,\"Ġstamped\":64039,\"@GetMapping\":64040,\".ByteArray\":64041,\"ĠDys\":64042,\"aternity\":64043,\"(rb\":64044,\"ĠeditText\":64045,\"Ġerection\":64046,\"Ġcess\":64047,\"_every\":64048,\"_gateway\":64049,\"Ġ'\\\".\":64050,\"Ġstaffing\":64051,\"Ġinvoices\":64052,\"inicio\":64053,\"}],Ċ\":64054,\",var\":64055,\"ycin\":64056,\"ĠDion\":64057,\"Ġ%%Ċ\":64058,\"',(\":64059,\"-span\":64060,\"ĠthÃłnh\":64061,\"Ġborne\":64062,\"ĠKathleen\":64063,\"è¿ŀæİ¥\":64064,\"_cube\":64065,\"ĠinformaÃ§Ãµes\":64066,\"nger\":64067,\"/File\":64068,\"Ġdara\":64069,\"ĠmL\":64070,\"******Ċ\":64071,\"Ġmarkings\":64072,\"bbe\":64073,\"Ġrecurrent\":64074,\"ĠRanking\":64075,\"_integral\":64076,\"]>Ċ\":64077,\"Ġunanimously\":64078,\"Ġdiplomats\":64079,\"ĠIOS\":64080,\";\\\"><?\":64081,\"ĠMatte\":64082,\"ĠRaleigh\":64083,\"ĠImprove\":64084,\"existent\":64085,\"Ġfaker\":64086,\"ĠHighland\":64087,\"stem\":64088,\"-ms\":64089,\"ListOf\":64090,\".Listener\":64091,\"(wait\":64092,\"_RST\":64093,\"Una\":64094,\"Ġoccupational\":64095,\"-memory\":64096,\"ĠSurf\":64097,\"Ġbrute\":64098,\"_Element\":64099,\"dddd\":64100,\"ĠDecre\":64101,\".psi\":64102,\"-devel\":64103,\"ĠOnTriggerEnter\":64104,\"ToDelete\":64105,\"Ġherald\":64106,\"Ġsociales\":64107,\"Ġboosted\":64108,\".Itoa\":64109,\"*\\\"\":64110,\"Ġantidepress\":64111,\"ĠMaver\":64112,\"__))Ċ\":64113,\"(Duration\":64114,\"estate\":64115,\"brate\":64116,\"Cla\":64117,\"Ġä¸Ĭ\":64118,\"ëĲĺ\":64119,\"riÃ¨re\":64120,\"breaker\":64121,\"_leg\":64122,\"}elseif\":64123,\"_funcs\":64124,\"uÃŃ\":64125,\".pageY\":64126,\"creature\":64127,\"Ġcannabin\":64128,\"ĠAstro\":64129,\"locals\":64130,\"ĠLAS\":64131,\"_conversion\":64132,\"ĠCRUD\":64133,\".skill\":64134,\"Ġstrategist\":64135,\".pol\":64136,\"(segment\":64137,\"Ġpee\":64138,\"}\\\");ĊĊ\":64139,\".preview\":64140,\"Jam\":64141,\"Ġhefty\":64142,\"ivating\":64143,\"GridColumn\":64144,\"Ġcudd\":64145,\"Ġinjections\":64146,\"ĠNIL\":64147,\"-olds\":64148,\"flation\":64149,\"ĠLeafs\":64150,\"Ġspherical\":64151,\"Ġfallout\":64152,\"aminer\":64153,\"Ġ::=\":64154,\".pointer\":64155,\"-Mart\":64156,\"Ġmatte\":64157,\"Ġcoquine\":64158,\"Ġdiscontinued\":64159,\"ĠREGION\":64160,\".RightToLeft\":64161,\"Ġsqueezed\":64162,\"_POINTS\":64163,\"bestos\":64164,\"-lasting\":64165,\"(utils\":64166,\"<Base\":64167,\"Ġpardon\":64168,\"Stride\":64169,\"cdr\":64170,\"Ġnarrator\":64171,\"volution\":64172,\"ĠuserInput\":64173,\"_contacts\":64174,\"(enemy\":64175,\"ĠChambers\":64176,\"ziel\":64177,\"ĠblockSize\":64178,\"AnimationsModule\":64179,\"Ġimmersive\":64180,\"Ġouting\":64181,\"uestos\":64182,\"Tween\":64183,\"Ġkep\":64184,\"ĠrÃ©sult\":64185,\"ĠBollywood\":64186,\"DLL\":64187,\"ĠSurely\":64188,\".RowStyle\":64189,\"(tm\":64190,\"_generation\":64191,\"ĠStir\":64192,\"ĠdataSnapshot\":64193,\"church\":64194,\"Ġconfidentiality\":64195,\"_suspend\":64196,\"vip\":64197,\"ĠKathy\":64198,\"ãĤ¦\":64199,\"Ġviolently\":64200,\"pets\":64201,\"Ġmessed\":64202,\"Ġtextbooks\":64203,\"ĠĠĠĠĠĠĠĠĉĉĉ\":64204,\"æ¶Īæģ¯\":64205,\"ĠLaravel\":64206,\"ĠArcade\":64207,\"Ġenth\":64208,\"Ġbenign\":64209,\"_DROP\":64210,\"-enable\":64211,\"âĢĿ).\":64212,\"uvwxyz\":64213,\"_listing\":64214,\"ĠNIC\":64215,\"ãģķãģĦ\":64216,\"(\\\".\\\",\":64217,\"-rounded\":64218,\"-paced\":64219,\"patrick\":64220,\"Sele\":64221,\".getFirst\":64222,\".EXIT\":64223,\"eterminate\":64224,\"Gram\":64225,\"//****************************************************************************\":64226,\".external\":64227,\"Ġwrongdoing\":64228,\"ĠElm\":64229,\"Ġsank\":64230,\"Teen\":64231,\"ĠThomson\":64232,\"prior\":64233,\"jeta\":64234,\"ĠADS\":64235,\"ĠPersistence\":64236,\"ĠFolk\":64237,\"{\\\\\\\"\":64238,\"bond\":64239,\"_SPECIAL\":64240,\"_LAT\":64241,\"oneksi\":64242,\"Ġmotherboard\":64243,\"Ġshear\":64244,\"FullScreen\":64245,\"*K\":64246,\"(Blueprint\":64247,\"MethodInfo\":64248,\"Become\":64249,\"Ġhail\":64250,\"ĠDob\":64251,\"Ġgenerosity\":64252,\"Ġ?\\\";Ċ\":64253,\"Ġwhiskey\":64254,\"Ġthinner\":64255,\"ĠCp\":64256,\"Ġintersections\":64257,\"Crit\":64258,\"raisal\":64259,\"reffen\":64260,\"Whenever\":64261,\"Ġcommenced\":64262,\"Transformation\":64263,\"/write\":64264,\"=\\\"\\\"\\\"\":64265,\"(ld\":64266,\"Ġnorsk\":64267,\"AMENT\":64268,\".sharedInstance\":64269,\"_house\":64270,\"ĠglEnable\":64271,\"è½¯\":64272,\"Ġnao\":64273,\"Ġdeposition\":64274,\"Ġdinosaurs\":64275,\"ĠtimeStamp\":64276,\"__);ĊĊ\":64277,\".Ribbon\":64278,\"ĠLindsey\":64279,\":user\":64280,\"ĠÃĢ\":64281,\"_forms\":64282,\"minating\":64283,\"ĠOliv\":64284,\"ĠdÃ©but\":64285,\"barcode\":64286,\"similar\":64287,\"Ġplateau\":64288,\"Ġindem\":64289,\"Realm\":64290,\"Ġfertilizer\":64291,\"Ġcape\":64292,\"Ġchampagne\":64293,\"Ġselfie\":64294,\"Ġplainly\":64295,\"Ġcatastrophe\":64296,\"Ġbetrayed\":64297,\"versible\":64298,\"UpdateTime\":64299,\".OutputStream\":64300,\"biased\":64301,\"bounce\":64302,\"ĠSporting\":64303,\"Coordinator\":64304,\"developers\":64305,\"Ġtracer\":64306,\"Ġmustard\":64307,\"SQ\":64308,\"_terminal\":64309,\"Ġcooled\":64310,\"Ġavoidance\":64311,\"Logical\":64312,\"Ġyell\":64313,\"_routes\":64314,\"Ġartery\":64315,\"ĠBearings\":64316,\".mvp\":64317,\".GUI\":64318,\"UIScreen\":64319,\"ymm\":64320,\"itÃ¤\":64321,\"()[\\\"\":64322,\"ĠAzerbai\":64323,\"Ġconditioner\":64324,\"Ġwag\":64325,\"Ġscalp\":64326,\"vincial\":64327,\"owler\":64328,\".');ĊĊ\":64329,\"BLUE\":64330,\"ĠÂ§Â§\":64331,\"Boston\":64332,\"ĠLinkedHashMap\":64333,\"Documentation\":64334,\".Lerp\":64335,\"Ġdenne\":64336,\"Ġhesitation\":64337,\"ĠCelebrity\":64338,\"ĠHyde\":64339,\"Ġcommanding\":64340,\"acellular\":64341,\"Ġpavement\":64342,\"ĠHammond\":64343,\"assic\":64344,\"PLUGIN\":64345,\"Ġrevoked\":64346,\"Documento\":64347,\".photos\":64348,\"ĠWillow\":64349,\"ĠViking\":64350,\"Ġupfront\":64351,\"ĠLifetime\":64352,\"Ġ%[\":64353,\"Dream\":64354,\"å¤´\":64355,\"Ġaccelerator\":64356,\"Persona\":64357,\"_topics\":64358,\"ï¼īãĢģ\":64359,\"Ġ(_.\":64360,\"ĠsÃ©cur\":64361,\"ĠKw\":64362,\"_cash\":64363,\"Ġsoothing\":64364,\"ĠLovely\":64365,\"ĠHers\":64366,\"elon\":64367,\"LICENSE\":64368,\"_cached\":64369,\".sha\":64370,\"RFC\":64371,\".FileInputStream\":64372,\"-Al\":64373,\"ĠuserList\":64374,\"ĠnÃ¤r\":64375,\"Hillary\":64376,\"Ġpago\":64377,\".Plugin\":64378,\"ĠCove\":64379,\"_yaml\":64380,\"_rsp\":64381,\"'post\":64382,\"-duration\":64383,\"Ġsentido\":64384,\"ĠminHeight\":64385,\"Ġturret\":64386,\"-energy\":64387,\"Ġçī\":64388,\"ÑĢÑĥÐ³\":64389,\"oteca\":64390,\"_qual\":64391,\"Selective\":64392,\"ĠBELOW\":64393,\"ĉadmin\":64394,\"Ġ}},Ċ\":64395,\"'user\":64396,\"SVG\":64397,\"Ġculo\":64398,\"(World\":64399,\"-binding\":64400,\"nbr\":64401,\"ĠSends\":64402,\"Ġsupremacy\":64403,\"Ġskating\":64404,\"Ġcreek\":64405,\"Ġaccusation\":64406,\"apgolly\":64407,\".IDENTITY\":64408,\"Ġmandated\":64409,\"Ġgown\":64410,\"Ġwidths\":64411,\"ĠLSU\":64412,\"/version\":64413,\"ĠReaders\":64414,\"ĠRonaldo\":64415,\"Ġbaff\":64416,\"Ġ`;Ċ\":64417,\"GLISH\":64418,\"(dot\":64419,\"ĠOperators\":64420,\".SceneManagement\":64421,\"merc\":64422,\"_reports\":64423,\"-centric\":64424,\"ĠCeiling\":64425,\"={!\":64426,\"mony\":64427,\"ĠADDRESS\":64428,\"å¯¹è±¡\":64429,\"Matching\":64430,\"Ġunk\":64431,\"ĠkeyCode\":64432,\"Ġ'/')\":64433,\")data\":64434,\"ĠVolunteer\":64435,\"Ġlaz\":64436,\"ĠGuang\":64437,\"ĠCandidates\":64438,\"Ensure\":64439,\"iage\":64440,\"succ\":64441,\"Certain\":64442,\"Ġleftover\":64443,\"inin\":64444,\"-elements\":64445,\"pike\":64446,\"Ġslideshow\":64447,\".toolStripSeparator\":64448,\".phase\":64449,\"Ġentertained\":64450,\"ĠCarrie\":64451,\"ĠMohammad\":64452,\".logged\":64453,\"ĠscrollTop\":64454,\"ĠAbbey\":64455,\"imony\":64456,\"(resultSet\":64457,\"Ġadhesive\":64458,\"_DAMAGE\":64459,\"Ġioctl\":64460,\"brown\":64461,\"INST\":64462,\".Clone\":64463,\"Ġlooming\":64464,\"Deserialize\":64465,\"Ġluz\":64466,\"qrstuvwxyz\":64467,\".ident\":64468,\"Heavy\":64469,\"Ġdio\":64470,\"æĺ¯åĲ¦\":64471,\"ĠFurn\":64472,\"éĤ®\":64473,\"zimmer\":64474,\"ãĥ¼ãĥī\":64475,\"speaker\":64476,\"ĠGed\":64477,\"Ġunidentified\":64478,\"InterfaceOrientation\":64479,\"ĠSurvivor\":64480,\"deen\":64481,\"ĠBorg\":64482,\"toDouble\":64483,\"_bw\":64484,\"Ġpublishes\":64485,\"_ALERT\":64486,\"angs\":64487,\"ieres\":64488,\"Ġhei\":64489,\"ĠIConfiguration\":64490,\"Ġconstituted\":64491,\"WATCH\":64492,\"privation\":64493,\"ĠGranite\":64494,\".TextAlignment\":64495,\"_kw\":64496,\";\\\",Ċ\":64497,\"cot\":64498,\"ĠNewark\":64499,\"roach\":64500,\")obj\":64501,\"Compilation\":64502,\"CategoryId\":64503,\".setUser\":64504,\"ivy\":64505,\"ĠImaging\":64506,\"ighted\":64507,\"Ġwget\":64508,\"Ġmouths\":64509,\".lin\":64510,\"ĠRadioButton\":64511,\".Cmd\":64512,\"sse\":64513,\"Ġmeshes\":64514,\"ĠSole\":64515,\".records\":64516,\"Ġantis\":64517,\"(mon\":64518,\"ĠÑĩÐ¸ÑģÐ»Ð¾\":64519,\"ĤŃ\":64520,\"ĠìŀĪëĬĶ\":64521,\"AllArgsConstructor\":64522,\"Ġsurreal\":64523,\"ĠMarried\":64524,\"Ġxpath\":64525,\"\\\\f\":64526,\"Bring\":64527,\"Ġyahoo\":64528,\"ĠEtsy\":64529,\"_daily\":64530,\"Ġthrowable\":64531,\"ĠPlasma\":64532,\"/Public\":64533,\"imizeBox\":64534,\"Ġves\":64535,\"Ġtrom\":64536,\"_rhs\":64537,\"-alpha\":64538,\"ĠArbor\":64539,\"))-\":64540,\"Fish\":64541,\"feeds\":64542,\"Ġcalf\":64543,\"ĠSergeant\":64544,\"(enum\":64545,\"ĠRamsey\":64546,\"ĠIdentify\":64547,\".initState\":64548,\"Ġfluctuations\":64549,\"_ATTRIBUTES\":64550,\"Ġpwm\":64551,\"ESA\":64552,\"cpf\":64553,\"Simulation\":64554,\"Ġyouthful\":64555,\"ĠInfantry\":64556,\"Ġglanced\":64557,\"ĠProper\":64558,\"ä¹ī\":64559,\"ĠKraft\":64560,\"Cit\":64561,\"oops\":64562,\"=url\":64563,\"posting\":64564,\"declaring\":64565,\"ĠpNode\":64566,\"Javascript\":64567,\"ĉĉĉĉĊĉĉĉĉĊ\":64568,\".coordinates\":64569,\"riet\":64570,\"ĠSq\":64571,\"_CAT\":64572,\"ĠPapa\":64573,\"andi\":64574,\"////////////////////////////////////////////////////////////\":64575,\"Meeting\":64576,\"ĠìŀĲ\":64577,\"Imagen\":64578,\"Ã©rience\":64579,\"Aggregate\":64580,\".poly\":64581,\"Ġwaved\":64582,\"Ġinvers\":64583,\"searchModel\":64584,\"Ġtrolls\":64585,\"[level\":64586,\"ĠLowe\":64587,\"ullo\":64588,\"(place\":64589,\"ĠNASCAR\":64590,\"Ġorbital\":64591,\".story\":64592,\"Ġauthoritative\":64593,\".textView\":64594,\"Ġalph\":64595,\"_reduce\":64596,\"ĠFrames\":64597,\"ĠBrom\":64598,\"redi\":64599,\"(MethodImplOptions\":64600,\"macen\":64601,\"Tot\":64602,\"Ġmidd\":64603,\"Ùı\":64604,\"ĠBaseModel\":64605,\"ĠVega\":64606,\"Ġ?>\\\"Ċ\":64607,\"ĠRigidbody\":64608,\".setContentType\":64609,\"aaS\":64610,\"Baseline\":64611,\"Ġblankets\":64612,\"sap\":64613,\"Ġcasually\":64614,\"Univers\":64615,\"ĠTray\":64616,\"ĠAires\":64617,\"ĠmaxY\":64618,\"_PROPERTIES\":64619,\"Ġhelmets\":64620,\"Â¦\":64621,\"_descr\":64622,\"shint\":64623,\"_CPP\":64624,\"umo\":64625,\"aday\":64626,\"(plot\":64627,\"enzyme\":64628,\"ĠExceptions\":64629,\"_visual\":64630,\":]ĊĊ\":64631,\"(targetEntity\":64632,\"pheres\":64633,\"unan\":64634,\"Ġselon\":64635,\"wil\":64636,\"ĠRendering\":64637,\"KC\":64638,\"Ġconstituency\":64639,\"SCRIBE\":64640,\"esy\":64641,\"ĠFellowship\":64642,\"åı¸\":64643,\"Ġfuturo\":64644,\"Ġarmored\":64645,\"liste\":64646,\"oras\":64647,\"multiply\":64648,\"geme\":64649,\"coef\":64650,\"Ð¾Ð±ÑĢÐ°Ð¶\":64651,\"ĠDeliver\":64652,\"engo\":64653,\".userService\":64654,\"ONUS\":64655,\".onreadystatechange\":64656,\"Ġ\\\"/\\\",\":64657,\"ambio\":64658,\"_Project\":64659,\"')?>\":64660,\"Ġflipping\":64661,\"women\":64662,\".Cross\":64663,\"Ġholland\":64664,\"Ġcinematic\":64665,\"Ġwhistlebl\":64666,\"Ġlinguistic\":64667,\".Getter\":64668,\"ĠmÃ¤nner\":64669,\"ĠLego\":64670,\"ĠSchumer\":64671,\"assessment\":64672,\"_chk\":64673,\"Ġrecommending\":64674,\".scala\":64675,\"ĠGuarantee\":64676,\"Ġ@_\":64677,\".AUTH\":64678,\"ĠyPos\":64679,\"latex\":64680,\"ĠAlberto\":64681,\"æŃ¥\":64682,\"thora\":64683,\"à¸·à¹Ī\":64684,\"URLException\":64685,\"Ghost\":64686,\".Toolbar\":64687,\"Ġendian\":64688,\"éĹ¨\":64689,\"stractions\":64690,\"FileNotFoundException\":64691,\"Ġstimulating\":64692,\"bservice\":64693,\"atÃ³rio\":64694,\"itious\":64695,\"ĠauthService\":64696,\"_TRANSFER\":64697,\"ĠredirectTo\":64698,\"Ġmensen\":64699,\"ĠSPL\":64700,\"ĠÂ»,\":64701,\"Ġacet\":64702,\"_Back\":64703,\"à¤ķ\":64704,\"aac\":64705,\"ĠRiot\":64706,\"_FB\":64707,\"ĠZa\":64708,\"Plate\":64709,\"ĠlabelText\":64710,\"ĠÐ²ÑĢÐµÐ¼\":64711,\"hton\":64712,\"ĠMcA\":64713,\"ĠAppendix\":64714,\"ĠKok\":64715,\"Ġinterviewing\":64716,\"_spell\":64717,\"ĠSubjects\":64718,\"Ġburner\":64719,\"å¯¼\":64720,\"illian\":64721,\"Ġbumps\":64722,\"Passed\":64723,\"ĠContributor\":64724,\"Yo\":64725,\"bla\":64726,\"Ġsout\":64727,\".exc\":64728,\"Notifier\":64729,\"shiv\":64730,\".UnitTesting\":64731,\"uelles\":64732,\"_SLEEP\":64733,\"ĉopts\":64734,\"Ġprescriptions\":64735,\"Ġrevise\":64736,\"EDITOR\":64737,\"ĠannÃ©es\":64738,\"_pkg\":64739,\"ĠTracks\":64740,\"à¹Īà¸²\":64741,\"=forms\":64742,\".RUN\":64743,\"Ġaseg\":64744,\"ĠpÃ¡\":64745,\"Ġjes\":64746,\"Gre\":64747,\"acr\":64748,\"Officials\":64749,\"ukes\":64750,\"companies\":64751,\"\\\\Query\":64752,\"ĠPrintable\":64753,\"å®¢\":64754,\"_VO\":64755,\"Ġdeix\":64756,\"ĠdeviceId\":64757,\"Ġdisturbance\":64758,\"nist\":64759,\".iso\":64760,\"paralle\":64761,\"-describedby\":64762,\"ĠLif\":64763,\"Ġbreastfeeding\":64764,\"Ġfeminists\":64765,\"leground\":64766,\"Ġdame\":64767,\"Ġcompulsory\":64768,\"MERCHANTABILITY\":64769,\"-results\":64770,\"formedURLException\":64771,\":[Ċ\":64772,\"-interest\":64773,\"ĠsÃ¤\":64774,\"Ġnostalgia\":64775,\"Ġclarified\":64776,\"ĠPHOTO\":64777,\"Ġrevisit\":64778,\"Ġcapsules\":64779,\"Ġshines\":64780,\"Ġcraftsm\":64781,\"subjects\":64782,\"ĠĠĠĠĠĠĠĠĠĠĠčĊ\":64783,\"ä¸įèĥ½ä¸ºç©º\":64784,\"ĠSchwartz\":64785,\"reu\":64786,\"Ġmadrid\":64787,\".pending\":64788,\"ĠLIN\":64789,\"Ġunst\":64790,\"ĉmv\":64791,\"Ġvivastreet\":64792,\"Ġspoil\":64793,\"Ã¸j\":64794,\"ëĭ¹\":64795,\"Ġbuena\":64796,\"ĠdigitalWrite\":64797,\"subs\":64798,\"ĠUNIVERS\":64799,\"ĠSuicide\":64800,\"<Guid\":64801,\".elem\":64802,\"_construct\":64803,\"Ġamidst\":64804,\"Ġëı\":64805,\"-esteem\":64806,\"ĠIntegrity\":64807,\".fml\":64808,\"OutOfBoundsException\":64809,\"-Semitism\":64810,\"Beta\":64811,\"-going\":64812,\"Segments\":64813,\"ĠMae\":64814,\"ĠPersonality\":64815,\"urbation\":64816,\"åı³\":64817,\"Ġservicing\":64818,\"Ġbipolar\":64819,\"_STAGE\":64820,\".JPG\":64821,\"')}}\\\">\":64822,\"ishly\":64823,\"IVERY\":64824,\"ĠInspired\":64825,\".serv\":64826,\"(datas\":64827,\"Ġdivides\":64828,\"<Real\":64829,\"verture\":64830,\"Ġmotivations\":64831,\"verte\":64832,\"ENCH\":64833,\"fds\":64834,\"Ġrevolt\":64835,\"webtoken\":64836,\"instead\":64837,\"ĉopt\":64838,\"ĠMarijuana\":64839,\"_adc\":64840,\"bao\":64841,\"[SerializeField\":64842,\"Ġgraffiti\":64843,\"-aos\":64844,\"emiah\":64845,\"ĠfÃŃs\":64846,\"Ġethic\":64847,\"'all\":64848,\":key\":64849,\"ëĵ¤\":64850,\"Ġrestricting\":64851,\"ĠXHTML\":64852,\"ereo\":64853,\"undos\":64854,\"ĉendif\":64855,\"[:,:,\":64856,\"Ġstehen\":64857,\"akhir\":64858,\"Ġjuices\":64859,\"dataSource\":64860,\"_mk\":64861,\".deleted\":64862,\"Congress\":64863,\"immel\":64864,\"Electric\":64865,\"aos\":64866,\"ĠOverlay\":64867,\"ĠACLU\":64868,\"rnd\":64869,\"esses\":64870,\"ĠLuxembourg\":64871,\"parseFloat\":64872,\"Ġguts\":64873,\"classified\":64874,\"ĠdefStyle\":64875,\"ĠTcp\":64876,\"peating\":64877,\"Charts\":64878,\"_ur\":64879,\"_latest\":64880,\")!Ċ\":64881,\"cation\":64882,\".Getenv\":64883,\"(loop\":64884,\"Ġunl\":64885,\"_dtype\":64886,\"zeÅĦ\":64887,\"(JNIEnv\":64888,\".fetchone\":64889,\"Ġsigmoid\":64890,\"ĠOLD\":64891,\"ĠMinist\":64892,\"íģ\":64893,\"ĠKÃ¶\":64894,\"Ġfractions\":64895,\"Ġsiz\":64896,\"=====Ċ\":64897,\".PrintWriter\":64898,\"_Address\":64899,\"ĠAudience\":64900,\"Como\":64901,\"ĠBruins\":64902,\".activities\":64903,\"Ġancestry\":64904,\"ÑĥÐ»ÑĮÑĤ\":64905,\"ĉReturn\":64906,\"pun\":64907,\"Ġgrapes\":64908,\"ILog\":64909,\"Ġdijo\":64910,\"ĠPerkins\":64911,\"ĠVMware\":64912,\"_authenticated\":64913,\"Ã®tre\":64914,\"overwrite\":64915,\"ĠHd\":64916,\"Ġgalaxies\":64917,\"achu\":64918,\"Href\":64919,\"[D\":64920,\"Ġparce\":64921,\"LatLng\":64922,\"_patterns\":64923,\"ĠSHORT\":64924,\"Ġrumours\":64925,\"county\":64926,\"ĠGRID\":64927,\"Ġ[/\":64928,\"ĠSkyrim\":64929,\"DataGridViewTextBoxColumn\":64930,\"Ġcen\":64931,\"Ġcucumber\":64932,\".INT\":64933,\"_CONFIRM\":64934,\"Ġctl\":64935,\"perl\":64936,\"illos\":64937,\"ĠACA\":64938,\"ĠGeorgetown\":64939,\"_callable\":64940,\"ĠCrafts\":64941,\"/co\":64942,\"Ġinbound\":64943,\"ĠTechniques\":64944,\"setChecked\":64945,\"Ġpname\":64946,\"comput\":64947,\"Steel\":64948,\"Ġhandheld\":64949,\"ĠAlam\":64950,\"abstractmethod\":64951,\"é¢ĳ\":64952,\"INY\":64953,\"battle\":64954,\"_EVT\":64955,\"Ġceux\":64956,\"Ġatof\":64957,\"ĠAbyss\":64958,\"_validator\":64959,\"Ġhairs\":64960,\"VertexAttribArray\":64961,\"Ġcommons\":64962,\"-bind\":64963,\"Mui\":64964,\"Ġcosmetics\":64965,\"Ġmirac\":64966,\".marker\":64967,\"SCALE\":64968,\".Word\":64969,\"-ul\":64970,\"ĠDiversity\":64971,\"ĠDDS\":64972,\".cwd\":64973,\"_xyz\":64974,\"ĠComputes\":64975,\"(clicked\":64976,\"TEMPLATE\":64977,\"Ġzoning\":64978,\"Ġfins\":64979,\"ĠPJ\":64980,\"extView\":64981,\"Characteristic\":64982,\"igators\":64983,\"Ġproclaim\":64984,\"Ġpristine\":64985,\"Ġdatastore\":64986,\"Ġdiscourage\":64987,\"_nsec\":64988,\"Ġnineteenth\":64989,\"Ġcelui\":64990,\"Jonathan\":64991,\"Ġamph\":64992,\"ĠCrossing\":64993,\"ĠHumans\":64994,\"ĠBooker\":64995,\"Ã¢ce\":64996,\"getPost\":64997,\"ĠMonter\":64998,\"ĠFlavor\":64999,\"MediaType\":65000,\"\\\"âĢĶ\":65001,\"ĠArchae\":65002,\"@return\":65003,\"-aware\":65004,\"oru\":65005,\"-The\":65006,\"ampled\":65007,\"KF\":65008,\".Temp\":65009,\"ĠDre\":65010,\"({_\":65011,\"polygon\":65012,\"ĠÃ¦\":65013,\"ĠDefender\":65014,\"ï¼ĺ\":65015,\"_),\":65016,\".Unsupported\":65017,\"_^(\":65018,\"(IDC\":65019,\"$v\":65020,\"Ġworthless\":65021,\"ĠSEG\":65022,\"iliki\":65023,\"NoArgsConstructor\":65024,\"ĠMerch\":65025,\"Ġnop\":65026,\"Ġforgetting\":65027,\"Ġdopamine\":65028,\"jual\":65029,\"eon\":65030,\"ĠReasons\":65031,\"sortBy\":65032,\"('-',\":65033,\"-sync\":65034,\"ecedor\":65035,\"KP\":65036,\"(coord\":65037,\"(Chat\":65038,\"\\\\$\":65039,\"estring\":65040,\"cef\":65041,\".handleError\":65042,\"ÛĮØ¯\":65043,\"ÑģÐº\":65044,\"Ġhandc\":65045,\"elijke\":65046,\"ĠSpir\":65047,\"ĠBucks\":65048,\"ĠQRect\":65049,\"SetFont\":65050,\".execSQL\":65051,\"::ĊĊ\":65052,\"Ġsuicidal\":65053,\"seeing\":65054,\"Ġcider\":65055,\"ProgressDialog\":65056,\"Ġmolding\":65057,\"ĉtrace\":65058,\"Ġemphasizes\":65059,\"Ġmultiples\":65060,\"_PT\":65061,\"_Output\":65062,\"capital\":65063,\"Needs\":65064,\"_DIRECTION\":65065,\".isVisible\":65066,\"Ġreste\":65067,\"Ġovar\":65068,\"(shared\":65069,\"-compose\":65070,\".backward\":65071,\"ĉrect\":65072,\"Amazing\":65073,\".didReceiveMemoryWarning\":65074,\"SERVICE\":65075,\"ĠInjury\":65076,\"Brain\":65077,\"Ġausge\":65078,\"(pe\":65079,\"//************************************************************************\":65080,\"orption\":65081,\"_MAIL\":65082,\"oha\":65083,\"Ġsno\":65084,\"Ġboiled\":65085,\"ildenafil\":65086,\"ĠWelfare\":65087,\"ĠQuartz\":65088,\"Ġcaptcha\":65089,\"ĠWEST\":65090,\"ĠMaze\":65091,\"Ġgraphene\":65092,\"Ġperk\":65093,\"Ġmistress\":65094,\".FormStartPosition\":65095,\"Ġexperimentation\":65096,\"*)((\":65097,\"Ġbroadcasts\":65098,\"ĠremoveAll\":65099,\"ĉGUI\":65100,\"åĥı\":65101,\"abcdefghijklmnop\":65102,\"Ġunins\":65103,\"ASP\":65104,\"+w\":65105,\"mur\":65106,\"Ġdine\":65107,\"Ġarou\":65108,\"Ġescapes\":65109,\"ĠTobacco\":65110,\".named\":65111,\"ĠPatreon\":65112,\"_FACE\":65113,\"_spinner\":65114,\"moving\":65115,\"_votes\":65116,\"Ohio\":65117,\".encoding\":65118,\"Degrees\":65119,\"\\\"To\":65120,\"Ġprestige\":65121,\"osphere\":65122,\"ĠLancaster\":65123,\"ï¼Ĺ\":65124,\"ĠonCancel\":65125,\"ĠHIS\":65126,\"ÐŀÑĪÐ¸Ð±ÐºÐ°\":65127,\"Ġorchestr\":65128,\"Ġrefreshed\":65129,\"Dating\":65130,\"(mu\":65131,\"ĠJed\":65132,\"ĠEditorial\":65133,\"SetBranchAddress\":65134,\"CppTypeDefinition\":65135,\"ĠBronx\":65136,\"Ġgatherings\":65137,\"Ġ''čĊ\":65138,\"postData\":65139,\"ĠFram\":65140,\"Clipboard\":65141,\"ĠXPath\":65142,\"rays\":65143,\"Ġbakery\":65144,\"ĠrowCount\":65145,\"Ġlows\":65146,\"andWhere\":65147,\"_versions\":65148,\"ĠGunn\":65149,\"Ġweer\":65150,\"Ġcontextual\":65151,\"ĠKeyCode\":65152,\"ĠSaskatchewan\":65153,\"ĠPhilly\":65154,\"ĠMouth\":65155,\"ĠdoPost\":65156,\"Ġpercentile\":65157,\"ĠbufferSize\":65158,\"(freq\":65159,\"$smarty\":65160,\"ierte\":65161,\"issant\":65162,\"_fps\":65163,\"Ġintimacy\":65164,\"_booking\":65165,\"Ġdecomposition\":65166,\"unicipio\":65167,\"ĠNSIndexPath\":65168,\"ĠKR\":65169,\"Ġturbine\":65170,\"-prom\":65171,\"_CART\":65172,\"(coords\":65173,\"ecom\":65174,\"Ġcoward\":65175,\"Ġwaypoint\":65176,\"-Cola\":65177,\"Ġprofoundly\":65178,\"ĠERP\":65179,\"boundary\":65180,\"Ġpoorer\":65181,\"/example\":65182,\"Ġrencontr\":65183,\"Ġnicer\":65184,\"çģ\":65185,\"-chain\":65186,\"ĠEntityState\":65187,\"Ġgrading\":65188,\"ALIGN\":65189,\"ĠPicks\":65190,\".ak\":65191,\"-vector\":65192,\"ĠEntries\":65193,\"ĠSergio\":65194,\"Ġ********************************************************\":65195,\"ODB\":65196,\"Ġå½\":65197,\"Ġcoronary\":65198,\"Ġshaved\":65199,\"Ġaque\":65200,\"employer\":65201,\"Ġparch\":65202,\"Ġmeasurable\":65203,\"Ġbois\":65204,\"joining\":65205,\"Ġvolcano\":65206,\":M\":65207,\".threshold\":65208,\"ĠDoyle\":65209,\"verbosity\":65210,\"Ġâĸº\":65211,\"Ġspouses\":65212,\"Ġresumes\":65213,\"Nat\":65214,\"zM\":65215,\"_Enable\":65216,\"ĠUSED\":65217,\"ĠCarey\":65218,\"ĉfp\":65219,\"Patrick\":65220,\"ĠOsw\":65221,\"Possible\":65222,\".leading\":65223,\"ahrung\":65224,\"âĻªĊĊ\":65225,\"ĉĉĉĉĉĉĉĉĉĠ\":65226,\"ãĢĤãĢĮ\":65227,\".addEdge\":65228,\"Ġecx\":65229,\"'LBL\":65230,\"ĠTCL\":65231,\"Ġbirths\":65232,\"Ġtheatrical\":65233,\"Ġpij\":65234,\"greater\":65235,\"ĠFString\":65236,\"BED\":65237,\"íĻĺ\":65238,\".Cast\":65239,\"CX\":65240,\"/Main\":65241,\"peater\":65242,\"Ġpersuasive\":65243,\"conto\":65244,\"xlsx\":65245,\"_ABS\":65246,\"ĠBun\":65247,\"managedType\":65248,\"Ð³Ð¾\":65249,\"ĠScala\":65250,\"rador\":65251,\"Ġrecognizable\":65252,\"tru\":65253,\"Ġtj\":65254,\"\\\\Mapping\":65255,\"_BOARD\":65256,\"ĠtoJson\":65257,\"Ġbowel\":65258,\")d\":65259,\"'})\":65260,\"(hWnd\":65261,\"hrs\":65262,\"cant\":65263,\"__()ĊĊ\":65264,\"Ġinterrogation\":65265,\"licative\":65266,\"ĉĉĉĊĊ\":65267,\"ĠTwins\":65268,\"ĠAO\":65269,\"Bird\":65270,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":65271,\"perhaps\":65272,\"ofile\":65273,\"Ġpenc\":65274,\"ĠtreeNode\":65275,\"Ġtopical\":65276,\"-private\":65277,\"çī¹\":65278,\"ĠDiscuss\":65279,\"Ġdesn\":65280,\"Rua\":65281,\".VERTICAL\":65282,\"ãĢįãģ¨\":65283,\"IFORM\":65284,\"Ġcourtyard\":65285,\"ĠÑģÐµÑĢ\":65286,\"Ġ###Ċ\":65287,\"Ġempowering\":65288,\"ĠFacilities\":65289,\"\\\\\\\",\\\\\":65290,\"½Ķ\":65291,\":Object\":65292,\"ĠVotes\":65293,\"isel\":65294,\"Ġeuch\":65295,\"orst\":65296,\"(Clone\":65297,\".cookies\":65298,\"$tmp\":65299,\"(indices\":65300,\"ergency\":65301,\"Ġplagued\":65302,\"ĠDia\":65303,\"yclic\":65304,\"}))\":65305,\"ê²½\":65306,\"Ġduel\":65307,\"Ġheterosexual\":65308,\".addComponent\":65309,\"SECRET\":65310,\"lero\":65311,\"constraints\":65312,\"ĠgetConnection\":65313,\"ĠLebens\":65314,\"ĠPon\":65315,\"ĠChronicles\":65316,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":65317,\"ĠMourinho\":65318,\"Ġoccupancy\":65319,\"_slave\":65320,\"ORIZED\":65321,\"ĉY\":65322,\".highlight\":65323,\"_sensitive\":65324,\"Ġspectro\":65325,\".encrypt\":65326,\"Ġspoilers\":65327,\".SizeMode\":65328,\"Ġprofessionalism\":65329,\">In\":65330,\"Expires\":65331,\"Au\":65332,\"ĠHVAC\":65333,\"relations\":65334,\"ĠATK\":65335,\"_GENERAL\":65336,\"ĠSight\":65337,\"Ġkitchens\":65338,\":Register\":65339,\"Ġedm\":65340,\"Ġtolerated\":65341,\"ĠSESSION\":65342,\"ierz\":65343,\"ĠINST\":65344,\".paths\":65345,\"Ġperpetrators\":65346,\"ebp\":65347,\"pecting\":65348,\"educated\":65349,\"ĠPioneer\":65350,\"_REV\":65351,\"Ġbusty\":65352,\"statuses\":65353,\"Respond\":65354,\"shuffle\":65355,\"ĠTinder\":65356,\"Exactly\":65357,\"illisecond\":65358,\"ĠÐ·Ð½Ð°ÑĩÐµÐ½Ð¸Ðµ\":65359,\"(Account\":65360,\".&\":65361,\"izr\":65362,\"assuming\":65363,\"ĉOptional\":65364,\"Senha\":65365,\"Ġenrol\":65366,\"tur\":65367,\"Ġarrogant\":65368,\"ĠJObject\":65369,\"olithic\":65370,\"mapped\":65371,\"Ġtipped\":65372,\".UPDATE\":65373,\"Ã¨mes\":65374,\"GNUC\":65375,\"WX\":65376,\"Ġmonks\":65377,\".borderWidth\":65378,\"ĠShutdown\":65379,\"ĠHarmony\":65380,\"classification\":65381,\"ĠdequeueReusableCell\":65382,\"Ġ];čĊ\":65383,\".Gen\":65384,\"Ġlavoro\":65385,\"ĠLeonardo\":65386,\"Ġ&)\":65387,\"Ġdepois\":65388,\"ĠVolt\":65389,\"Eth\":65390,\"ĠLeone\":65391,\"ĠNederland\":65392,\"ĠEXTRA\":65393,\"Resolved\":65394,\"Ġpeninsula\":65395,\"_VM\":65396,\"Ger\":65397,\"Ø§Ø¯\":65398,\".prompt\":65399,\".align\":65400,\"ingga\":65401,\"films\":65402,\"HANDLE\":65403,\"Ġcarts\":65404,\"(Some\":65405,\"<Audio\":65406,\"Ġenlargement\":65407,\"Ġgroceries\":65408,\"-holder\":65409,\"Ġirritation\":65410,\"Communication\":65411,\"Ġprimaries\":65412,\"htub\":65413,\"_inicio\":65414,\"Ġcoordinating\":65415,\"(qu\":65416,\"Ġfais\":65417,\"Ġvisto\":65418,\"guided\":65419,\"Ġvlan\":65420,\"Ġespresso\":65421,\"Ã¨te\":65422,\"sehen\":65423,\"_peng\":65424,\"Ġroofing\":65425,\"ĠAlive\":65426,\"AxisSize\":65427,\"Ġstun\":65428,\"Ġrested\":65429,\"ullets\":65430,\"ĠMalaysian\":65431,\",UnityEngine\":65432,\"Ġenvy\":65433,\"'];čĊčĊ\":65434,\"ĠOst\":65435,\"_jump\":65436,\"ĠcontraseÃ±a\":65437,\"\\\"x\":65438,\"ĉPage\":65439,\")[\\\"\":65440,\"ĠSIP\":65441,\"ĠGeographic\":65442,\"Ġcaucus\":65443,\"_TER\":65444,\"âĢĿ;\":65445,\"PostExecute\":65446,\"imshow\":65447,\"ĠCOMPANY\":65448,\"ĠNeal\":65449,\"ĠHearing\":65450,\"(actor\":65451,\"Bid\":65452,\".PR\":65453,\".Products\":65454,\"ĠEmm\":65455,\"ĠæĽ\":65456,\"Ġpulses\":65457,\"_EV\":65458,\"/exp\":65459,\"_motion\":65460,\"Ġgbc\":65461,\"ĠnavigationController\":65462,\"ĠCourts\":65463,\"ĠIconData\":65464,\"wu\":65465,\"_rf\":65466,\"ĠRage\":65467,\"-flat\":65468,\"ĠHimself\":65469,\"_chunks\":65470,\"Ġoversh\":65471,\"Ġcif\":65472,\"(Is\":65473,\"peaker\":65474,\"ĠCPUs\":65475,\"irector\":65476,\",title\":65477,\".setDescription\":65478,\"Ġearthquakes\":65479,\"Ġwn\":65480,\"glyph\":65481,\"ulumi\":65482,\"Ġspeedy\":65483,\"Ġespacio\":65484,\"Ġemulate\":65485,\"Ġ\\\\\\\"$\":65486,\"_INF\":65487,\"calloc\":65488,\"-query\":65489,\"(vals\":65490,\"Ġseab\":65491,\"Ġhavoc\":65492,\"ĠInterstate\":65493,\"Ġtriangular\":65494,\"bindings\":65495,\"ĉĉĉĉĉĠĠĠĠĠ\":65496,\"ĠĉĠ\":65497,\"bcrypt\":65498,\"Ġcreditors\":65499,\"Ġsemif\":65500,\"lle\":65501,\"ienza\":65502,\"ĠKeller\":65503,\"Ġmonstr\":65504,\"ĠMarcos\":65505,\"(reinterpret\":65506,\"Ġhive\":65507,\"Scr\":65508,\"_hresult\":65509,\"Ġì¡°\":65510,\"ĠSqlDataReader\":65511,\"announce\":65512,\"_preferences\":65513,\"Ġtrusts\":65514,\"Erot\":65515,\"-worker\":65516,\"Ġtween\":65517,\"ĠStreets\":65518,\"ĤŃìłľ\":65519,\"ĠFranz\":65520,\"ĠâĢ¦.\":65521,\"UITextField\":65522,\".getItems\":65523,\"Ġtolua\":65524,\"âĢľOur\":65525,\"Ġsá»ĳ\":65526,\"Ġvirtues\":65527,\"Ġpoultry\":65528,\"=row\":65529,\"coded\":65530,\"NoSuch\":65531,\"Ġkod\":65532,\"lsi\":65533,\"Ġketo\":65534,\"ĠgroupName\":65535,\"asn\":65536,\"Ġuncomp\":65537,\"Ġtextile\":65538,\"toolStrip\":65539,\".Popen\":65540,\"Ġprostitute\":65541,\"Ġpromoter\":65542,\"\\\";}Ċ\":65543,\"Ġcollider\":65544,\"Broker\":65545,\"datasets\":65546,\"ĉNSString\":65547,\"angler\":65548,\"RIES\":65549,\"atoms\":65550,\"Ġrendez\":65551,\"apo\":65552,\"ĠëĦ\":65553,\".gc\":65554,\"ĠSOME\":65555,\"Ġfgets\":65556,\"GLE\":65557,\"Ġzal\":65558,\"ĠOpposition\":65559,\"handleSubmit\":65560,\"_math\":65561,\"Ġspre\":65562,\"Ġshortened\":65563,\"Ġcaves\":65564,\"SMS\":65565,\"-conscious\":65566,\"ĠSaves\":65567,\".BackgroundImageLayout\":65568,\"Ġelectromagnetic\":65569,\"(iterator\":65570,\"Ġunbe\":65571,\"jectories\":65572,\"Ġmediante\":65573,\"ĠÃ®nt\":65574,\"\\\",-\":65575,\"ĠASM\":65576,\"è®°å½ķ\":65577,\"Ġconfinement\":65578,\"âĢ¦ĊĊĊ\":65579,\"Exceptions\":65580,\"-major\":65581,\"ĠVanilla\":65582,\"ĠLOCATION\":65583,\"Ġelusive\":65584,\"UARIO\":65585,\"ĠINLINE\":65586,\"ĠproductName\":65587,\"_queries\":65588,\"...\\\";Ċ\":65589,\"ĠXiao\":65590,\"WindowTitle\":65591,\"lettes\":65592,\"Ġperpetual\":65593,\"Severity\":65594,\"ĠAchievement\":65595,\"Ã¢ncia\":65596,\"Ġreminders\":65597,\"sortable\":65598,\"Ġafforded\":65599,\"Ġinfluencing\":65600,\"ĠTunnel\":65601,\".learning\":65602,\"ĠQuÃ©\":65603,\"phetamine\":65604,\".BAD\":65605,\".metamodel\":65606,\"-device\":65607,\"ĠKontakt\":65608,\"âĶģâĶģ\":65609,\"-summary\":65610,\"('<?\":65611,\")<=\":65612,\"Ġwisely\":65613,\"_ot\":65614,\":model\":65615,\"ĠUW\":65616,\"ĠOpenSSL\":65617,\"ĠJpaRepository\":65618,\"Conexion\":65619,\"TOT\":65620,\".createdAt\":65621,\"(training\":65622,\"Ġbishops\":65623,\"Ġventures\":65624,\".Enqueue\":65625,\"ĠThermal\":65626,\"ĠBrewery\":65627,\"oten\":65628,\"ĠFatal\":65629,\"_supply\":65630,\"Ġconditioned\":65631,\"Ġsuperiority\":65632,\"ĠIbrahim\":65633,\"Ġcorpo\":65634,\"uously\":65635,\"ĠPractical\":65636,\"//[\":65637,\"ĠAfricans\":65638,\"ĠBahrain\":65639,\"Ġsteril\":65640,\"ĠClassNotFoundException\":65641,\".Region\":65642,\"Ġtransitional\":65643,\"Ġinterpreting\":65644,\".Sound\":65645,\"Ġfrontal\":65646,\"Ġharvesting\":65647,\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\":65648,\"ataire\":65649,\".HttpStatus\":65650,\"KM\":65651,\"ĠErotische\":65652,\"Ġerotiske\":65653,\"Fight\":65654,\"PackageName\":65655,\"ĠCACHE\":65656,\"wingConstants\":65657,\"ĠZimmerman\":65658,\"/car\":65659,\"ĠQuran\":65660,\"Metal\":65661,\"ĠuserManager\":65662,\"Ġmastery\":65663,\"(UUID\":65664,\"ĠviewWillAppear\":65665,\"Ġsummed\":65666,\"(-(\":65667,\"ĠĠĠĠĠĠĠĊĊ\":65668,\"Taken\":65669,\"Ġclockwise\":65670,\"ĠCafÃ©\":65671,\"(letter\":65672,\"ĠCrossRef\":65673,\"ĠAston\":65674,\"ĠAssemblyVersion\":65675,\"éĿŀ\":65676,\"nts\":65677,\"Ġ$('[\":65678,\"_RATIO\":65679,\"iciente\":65680,\"Ġrichtig\":65681,\"Ġpedig\":65682,\"(ix\":65683,\"ÑģÑĭÐ»\":65684,\"AssignableFrom\":65685,\"bounded\":65686,\"Ġalkal\":65687,\"_prices\":65688,\"ĠgÅĤ\":65689,\"anchise\":65690,\"_receiver\":65691,\"IGATION\":65692,\"_pull\":65693,\"ĠStatistical\":65694,\"_toolbar\":65695,\"amide\":65696,\"ĠAsyncTask\":65697,\"reta\":65698,\"Ġì¢\":65699,\"ĠREALLY\":65700,\"Ġbursts\":65701,\"ĠInquiry\":65702,\"Ġbigot\":65703,\"sanitize\":65704,\"ĠHomer\":65705,\"QuÃ©\":65706,\"ĠRouting\":65707,\".collectionView\":65708,\"ĠBillion\":65709,\"STRUCTOR\":65710,\".ejb\":65711,\"Ġench\":65712,\".setTimeout\":65713,\"Rub\":65714,\"-road\":65715,\".outputs\":65716,\"contest\":65717,\"Ġspheres\":65718,\"Ġresurrect\":65719,\"\\\".\\\"\":65720,\"ĠIris\":65721,\"Ġìļ\":65722,\"ĠXK\":65723,\"ĠRarity\":65724,\"ĠIService\":65725,\"atha\":65726,\"Ġåĩ\":65727,\"Ġprevail\":65728,\"ĉpp\":65729,\".Lo\":65730,\"getWidth\":65731,\"Ġww\":65732,\"Ġwichtig\":65733,\"@Getter\":65734,\"ĠJays\":65735,\"Ġspeculative\":65736,\"(att\":65737,\"Ġtedious\":65738,\"Ġscratches\":65739,\"ĠpelÃŃcul\":65740,\"Ġborough\":65741,\"ĠmÃ³\":65742,\"Represent\":65743,\"atorium\":65744,\"(Camera\":65745,\"ĠcolumnName\":65746,\"Ġreiterated\":65747,\"ĠCasting\":65748,\".getHeader\":65749,\"ĠâĢľ[\":65750,\"ĠJuice\":65751,\"chu\":65752,\".HTML\":65753,\"ĠAntwort\":65754,\"GLuint\":65755,\"ĉIterator\":65756,\"ĠANAL\":65757,\"Ġunpopular\":65758,\"(Locale\":65759,\"Ġmitigation\":65760,\"Ġadres\":65761,\"áº·\":65762,\"},{Ċ\":65763,\"ĠSchwar\":65764,\"_PAIR\":65765,\">(),Ċ\":65766,\"ouv\":65767,\"ĠAlf\":65768,\"xEF\":65769,\"çľģ\":65770,\"Ġescri\":65771,\"LOUR\":65772,\"SELF\":65773,\"ĠTmax\":65774,\"Tre\":65775,\"lots\":65776,\"Ġ(...)\":65777,\"]+$\":65778,\"Ġameric\":65779,\"/reference\":65780,\"ĠOdyssey\":65781,\"ĠMines\":65782,\"Ġagora\":65783,\"Ġprophecy\":65784,\"ĠOpportunities\":65785,\"professional\":65786,\"(proxy\":65787,\"phanumeric\":65788,\"ĠEdited\":65789,\"ologna\":65790,\".isOpen\":65791,\"(vertices\":65792,\"ĠRicky\":65793,\"_overlap\":65794,\">;\":65795,\".DOM\":65796,\"{}_\":65797,\"ĠCOMPUT\":65798,\"redirectTo\":65799,\"Ġshaken\":65800,\"Ġration\":65801,\"Ġnell\":65802,\"_bc\":65803,\"ĠNer\":65804,\"andReturn\":65805,\"Ġerected\":65806,\"Chief\":65807,\"Ġdinero\":65808,\"Ġjasmine\":65809,\"-------------Ċ\":65810,\"farm\":65811,\"ĠHate\":65812,\"TASK\":65813,\"ANNER\":65814,\"']]]Ċ\":65815,\"ĠNigel\":65816,\"hibit\":65817,\"ĠQText\":65818,\".Len\":65819,\"ĠteÅ¼\":65820,\"slides\":65821,\"felt\":65822,\"ĠREV\":65823,\"_hold\":65824,\"ĠCouple\":65825,\"escaped\":65826,\"-export\":65827,\">I\":65828,\"ewish\":65829,\"(Api\":65830,\"Ġ(![\":65831,\"Nous\":65832,\"OTOR\":65833,\"Ġsealing\":65834,\"Wie\":65835,\"Ġkannst\":65836,\"+xml\":65837,\"ĠmxArray\":65838,\"Ġadmiration\":65839,\".nb\":65840,\"Ġjewel\":65841,\".Team\":65842,\"Ġprosecute\":65843,\".xmlbeans\":65844,\"chw\":65845,\"(background\":65846,\"ĠAviv\":65847,\"ĉfill\":65848,\"Ġdisparity\":65849,\"àº\":65850,\"_APPEND\":65851,\"ĠPvP\":65852,\"ãĥĲ\":65853,\"ĠVive\":65854,\"Ġgrandson\":65855,\".addElement\":65856,\"Atomic\":65857,\"ĠprimaryKey\":65858,\"Ġcontinents\":65859,\"ĠFucking\":65860,\"%'Ċ\":65861,\"@mail\":65862,\"Ġculturally\":65863,\"anganese\":65864,\"ìłĦ\":65865,\"followers\":65866,\"Ġurn\":65867,\"Ġracks\":65868,\"ĠSAFE\":65869,\"//čĊčĊ\":65870,\"(\\\"/{\":65871,\"_INITIAL\":65872,\"_Response\":65873,\"EventData\":65874,\"'>$\":65875,\"starts\":65876,\"à©\":65877,\"Ġthaimassage\":65878,\"Ġspecialization\":65879,\"ĠìĦ¤ìłķ\":65880,\"edo\":65881,\"Ġcompensated\":65882,\"_charset\":65883,\"}.{\":65884,\"/entities\":65885,\"_fk\":65886,\"------ĊĊ\":65887,\"ascar\":65888,\"ĠcellForRowAtIndexPath\":65889,\"ĠProposal\":65890,\"ĠOtto\":65891,\"Ġ_____\":65892,\"Ġ\\\"*\\\"\":65893,\"Ġtoolkit\":65894,\"Ġexpectancy\":65895,\"DownList\":65896,\"-da\":65897,\"Ġprovocative\":65898,\"Ġmeio\":65899,\"Ġ=================================================================================\":65900,\"(()=>{Ċ\":65901,\"$link\":65902,\"incare\":65903,\"Ġicy\":65904,\"ĠHist\":65905,\"Accepted\":65906,\"Ġclones\":65907,\"ĠQA\":65908,\"Ġconfort\":65909,\"Ġproprio\":65910,\"ĠVog\":65911,\"(mark\":65912,\"_Search\":65913,\"Ġendwhile\":65914,\"Ġ$#\":65915,\"ãģĹãģĭ\":65916,\"_LT\":65917,\"InstanceId\":65918,\"bard\":65919,\"rne\":65920,\"regor\":65921,\"Ġnorge\":65922,\"\\\\:\":65923,\"ÑĢÑĥÐ·\":65924,\".btnAdd\":65925,\"Ġpillows\":65926,\"ĠParameterDirection\":65927,\"Handles\":65928,\"Ġdealings\":65929,\"Ġconvex\":65930,\"ĠCharity\":65931,\".NumericUpDown\":65932,\"ĠSkeleton\":65933,\"ĠZuckerberg\":65934,\"esen\":65935,\"ĠFAA\":65936,\"_ste\":65937,\"Ġhumid\":65938,\"jm\":65939,\"chg\":65940,\".getLocal\":65941,\"Ġtandem\":65942,\"istles\":65943,\"_mt\":65944,\".accounts\":65945,\"ĠInspection\":65946,\"ĠFraud\":65947,\"ĠkÃ¼\":65948,\"Ġsynchronous\":65949,\"ĠRicardo\":65950,\"ĠHue\":65951,\"ĠConnections\":65952,\"IMENT\":65953,\"ochastic\":65954,\"\\\\data\":65955,\"ĠEnterprises\":65956,\"-simple\":65957,\"ĠimageData\":65958,\"ĠUmb\":65959,\"-script\":65960,\"/general\":65961,\"APT\":65962,\"ĠTut\":65963,\"imization\":65964,\"Ġidade\":65965,\"ĠKem\":65966,\"elsif\":65967,\".ALIGN\":65968,\"ĠTories\":65969,\"ĠBasil\":65970,\"ogonal\":65971,\"hack\":65972,\"NullOrEmpty\":65973,\"\\\"),ĊĊ\":65974,\"ãĥĥãĥĪ\":65975,\"Ġ'%'\":65976,\"_RF\":65977,\"egot\":65978,\".aspect\":65979,\"(Project\":65980,\"LENGTH\":65981,\"plementary\":65982,\"_preds\":65983,\"ĠHolds\":65984,\"carrier\":65985,\"ĉlayer\":65986,\"Attached\":65987,\"-president\":65988,\"indh\":65989,\"'].'\\\"\":65990,\".ACCESS\":65991,\"ĠCENTER\":65992,\"Qualified\":65993,\"Ġostr\":65994,\".Symbol\":65995,\"tahun\":65996,\"ĠLANG\":65997,\"_business\":65998,\"ĉStart\":65999,\"erre\":66000,\"Ġashes\":66001,\"ĠAdvertisement\":66002,\".How\":66003,\"Ġ//------------------------------------------------\":66004,\"Ġobliv\":66005,\"Ġbleed\":66006,\"Ġsvo\":66007,\".nodeName\":66008,\"ĠitemName\":66009,\"ĠBANK\":66010,\"ÃŃculos\":66011,\"ĠEmmy\":66012,\"ĠDominican\":66013,\"')['\":66014,\"Ġrealloc\":66015,\"ulses\":66016,\"è¾ĵåĩº\":66017,\"ĠOffering\":66018,\"ëĬ¥\":66019,\"-program\":66020,\"ĠÑģÐ¾Ð¾Ð±Ñī\":66021,\"MOV\":66022,\"ĠnodeId\":66023,\"ÐµÐ¿\":66024,\"fluid\":66025,\"Ġtease\":66026,\"Ã¸re\":66027,\"Ġcomrades\":66028,\"Ġunreliable\":66029,\"ĠpostId\":66030,\"getID\":66031,\"ographs\":66032,\"Tank\":66033,\"ĠQVERIFY\":66034,\"Ġfloated\":66035,\"_THIS\":66036,\"cimiento\":66037,\"ĠNicar\":66038,\"shr\":66039,\"BoundingBox\":66040,\"Ġinorder\":66041,\"ĠGloss\":66042,\"WithTitle\":66043,\"uncio\":66044,\"Ġpersists\":66045,\"Ġdirects\":66046,\"acciÃ³n\":66047,\"Sampler\":66048,\"Ġblacklist\":66049,\"ĠaDecoder\":66050,\"Ġinvokes\":66051,\"_skin\":66052,\">If\":66053,\"truncate\":66054,\".Sin\":66055,\"soon\":66056,\"Ġdisfr\":66057,\"ĉVec\":66058,\"##_\":66059,\".school\":66060,\"Ġblinds\":66061,\"Ġacab\":66062,\"Ġpathetic\":66063,\"Ġvolcanic\":66064,\"Ġrdf\":66065,\"Ġcultivated\":66066,\"ĠUINavigationController\":66067,\"Ġipt\":66068,\"Ġgland\":66069,\"Ġevidently\":66070,\"Phys\":66071,\"Ġswamp\":66072,\"ĠimageName\":66073,\".Layer\":66074,\"ufe\":66075,\",['\":66076,\"ĠCrimson\":66077,\"éĢł\":66078,\"<footer\":66079,\"Ġbiking\":66080,\"ĠÐ´Ð°Ð½Ð½ÑĭÐµ\":66081,\"moves\":66082,\"crc\":66083,\"illation\":66084,\"Ġlaure\":66085,\"ÑĢÐ°Ð±Ð¾ÑĤ\":66086,\"ÑĥÐº\":66087,\"ĠCain\":66088,\"Ġpys\":66089,\"Ġcollide\":66090,\"Ġ|_|\":66091,\"(span\":66092,\"Ġging\":66093,\"Ġobedience\":66094,\"outers\":66095,\"Soon\":66096,\"ĠWhitney\":66097,\"ĠImports\":66098,\":UITableView\":66099,\"*&\":66100,\"Ġbk\":66101,\"WithError\":66102,\"-ext\":66103,\"_RDONLY\":66104,\"_tracking\":66105,\"noopener\":66106,\"Ã¼ns\":66107,\"ĠGtkWidget\":66108,\"skb\":66109,\"SAVE\":66110,\"Obs\":66111,\"('.')[\":66112,\"Ġauthored\":66113,\"-/\":66114,\"Louis\":66115,\".getOutputStream\":66116,\"Ġgeneralized\":66117,\"íĮ\":66118,\"Ġartisan\":66119,\"(cps\":66120,\"ĠDmit\":66121,\"Ð»Ð¸ÑĨ\":66122,\".ImageLayout\":66123,\"Ġsuchen\":66124,\"]},\":66125,\".collider\":66126,\"TabPage\":66127,\"]=[\":66128,\"hydro\":66129,\"_strip\":66130,\"Ġlicking\":66131,\"Ġboosts\":66132,\"Ġskepticism\":66133,\"Ġjogo\":66134,\"Ġcompeted\":66135,\"ĠëĤ´\":66136,\"NodeType\":66137,\"XF\":66138,\"Ġpossibilit\":66139,\"-copy\":66140,\"Ġtritur\":66141,\"ĠAttacks\":66142,\"ĠnÃ«\":66143,\"IDAD\":66144,\"ographies\":66145,\"TimeStamp\":66146,\"otyping\":66147,\"-Apr\":66148,\"ĠÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤÐµÐ»Ñı\":66149,\"Ġ\\\";\\\"\":66150,\"ĠHale\":66151,\"/apis\":66152,\"Ġ:]Ċ\":66153,\"_hdl\":66154,\"ĠDial\":66155,\"ĉConfig\":66156,\"_FRAGMENT\":66157,\"_Edit\":66158,\"/********************************************************\":66159,\"Ġcandidacy\":66160,\"ĠCompression\":66161,\"_losses\":66162,\"*>(&\":66163,\"Integral\":66164,\"Ġparody\":66165,\"Ġinitialise\":66166,\"fills\":66167,\"Ġaltri\":66168,\"_ELEMENTS\":66169,\"adastrar\":66170,\"correo\":66171,\"Ġwatt\":66172,\"_DRV\":66173,\"ĠForgot\":66174,\"ĠgetContext\":66175,\"Ġshortages\":66176,\"ĠOCT\":66177,\"weetalert\":66178,\"ĠOpens\":66179,\"*l\":66180,\"ĠKitty\":66181,\"âĢĻÃ©t\":66182,\"ĠPicasso\":66183,\".toByteArray\":66184,\"Ð¾Ð»ÑĥÑĩ\":66185,\"ĠDEN\":66186,\"å§ĵåĲį\":66187,\"Winter\":66188,\"antan\":66189,\"__[\":66190,\"Prim\":66191,\"Ġrooftop\":66192,\"ĠBillboard\":66193,\"testCase\":66194,\"produto\":66195,\"-thumb\":66196,\"Ġresets\":66197,\"gebn\":66198,\">Error\":66199,\".department\":66200,\"Ġearrings\":66201,\"ĠCarousel\":66202,\"(example\":66203,\"ĉem\":66204,\"\\\\Container\":66205,\"ĠElvis\":66206,\"Ġ----------------------------------------------------------------------------------------------------------------\":66207,\"England\":66208,\"credited\":66209,\"_constructor\":66210,\"Ġlor\":66211,\"ĠDawson\":66212,\"Burn\":66213,\"ĠBrigade\":66214,\"ĠMutex\":66215,\"ĠTransitional\":66216,\"ĠMouseEvent\":66217,\"grow\":66218,\".minute\":66219,\"ĠGMO\":66220,\"=[],\":66221,\"Ġsushi\":66222,\"Ġaesthetics\":66223,\"OCUS\":66224,\"ĠSELF\":66225,\"ĠAssertionError\":66226,\"ĠMCU\":66227,\"ĠhintText\":66228,\"Ġseaw\":66229,\"ngle\":66230,\"Ġexpelled\":66231,\"PROPERTY\":66232,\").</\":66233,\"-operation\":66234,\"ĠImmun\":66235,\"Ġlicens\":66236,\"ibia\":66237,\"Ġbieten\":66238,\"Ġgrips\":66239,\"CHANNEL\":66240,\"_ERRORS\":66241,\"_recursive\":66242,\"Ultimately\":66243,\"ĠMajesty\":66244,\"Ġdeactivate\":66245,\"ĠEXAMPLE\":66246,\"uciones\":66247,\"ĠcurrentValue\":66248,\"Ġevaluates\":66249,\"/Graphics\":66250,\"\\\"text\":66251,\"_palette\":66252,\"ĠTMP\":66253,\"ĠBeds\":66254,\".Cos\":66255,\"à¸±à¸Ļ\":66256,\"=torch\":66257,\"ĠPACKAGE\":66258,\"illard\":66259,\".cp\":66260,\"ķìĿ¸\":66261,\"-approved\":66262,\"ĠNorthwestern\":66263,\"<textarea\":66264,\"ĠCompatible\":66265,\"_RDWR\":66266,\".Quantity\":66267,\"@Id\":66268,\"_orientation\":66269,\"getUrl\":66270,\"Ġtranslating\":66271,\"ĠWeaver\":66272,\"ĠjsonArray\":66273,\"Ġemblem\":66274,\".IsNull\":66275,\"ĠCharts\":66276,\"[]}\":66277,\"gae\":66278,\"_nested\":66279,\"temps\":66280,\"pathname\":66281,\"CW\":66282,\"-written\":66283,\"ĠPARK\":66284,\"(cond\":66285,\"_alarm\":66286,\"Ġgere\":66287,\"ĠGiz\":66288,\"ĠNgb\":66289,\"Ġ._\":66290,\"appiness\":66291,\"ĠDeployment\":66292,\"iPad\":66293,\"\\\"]]\":66294,\"Ġstrstr\":66295,\"Ġtonumber\":66296,\"(dl\":66297,\"ĉword\":66298,\"[to\":66299,\"_FIXED\":66300,\"Expiration\":66301,\":return\":66302,\"Ont\":66303,\">Please\":66304,\"getTitle\":66305,\".splitext\":66306,\"combined\":66307,\"Od\":66308,\"Ġnovelty\":66309,\"\\\"S\":66310,\"Ġsvm\":66311,\"Coverage\":66312,\"ĠHut\":66313,\"Ġresisted\":66314,\"Ġello\":66315,\"ĠmÃ¶chte\":66316,\"Kay\":66317,\".like\":66318,\"ccione\":66319,\"Ġresembl\":66320,\"Deaths\":66321,\"Ġepit\":66322,\"(rgb\":66323,\".Classes\":66324,\"ĠÐ´Ð¾ÑģÑĤ\":66325,\"captures\":66326,\"]+\\\\\":66327,\"amient\":66328,\"ĠPaso\":66329,\".SendMessage\":66330,\"ĠRenault\":66331,\"ĠNarendra\":66332,\"tout\":66333,\"Ġhadde\":66334,\"ĠTween\":66335,\"Ã¥de\":66336,\"Ġoutfield\":66337,\"/></\":66338,\"@\\\\\":66339,\"ĠDurant\":66340,\"Ġabre\":66341,\"_story\":66342,\"Ġperfume\":66343,\"CppTypeDefinitionSizes\":66344,\"ĠÐ¿Ð°ÑĢÐ°Ð¼ÐµÑĤ\":66345,\"chemes\":66346,\"ĠSaddam\":66347,\"prenom\":66348,\"uspended\":66349,\"ĠBenefit\":66350,\"Ġscept\":66351,\"_Move\":66352,\"ĠNaj\":66353,\"-On\":66354,\"rud\":66355,\"ImagePath\":66356,\"Â®,\":66357,\"Ġanalysed\":66358,\"ĠOG\":66359,\"elleicht\":66360,\"birds\":66361,\"ekte\":66362,\"ĠAlison\":66363,\"Ġatheist\":66364,\"{%\":66365,\"abh\":66366,\"-photo\":66367,\"instrument\":66368,\"Ġhinted\":66369,\"ĠOffline\":66370,\")\\\");ĊĊ\":66371,\"_PREF\":66372,\"Ġstylist\":66373,\"ĠKubernetes\":66374,\"Ġferv\":66375,\"ĊĊĊĊĊĊĊĊĊĊĊĊĊĊ\":66376,\"(\\\"=\\\"\":66377,\".getM\":66378,\"Ġnoteworthy\":66379,\"Ġscouting\":66380,\"_translate\":66381,\"Ġbeginnings\":66382,\"ĠLuo\":66383,\"Ġql\":66384,\"_aligned\":66385,\"Ġerw\":66386,\"uars\":66387,\"_Path\":66388,\".'.$\":66389,\"Ġhoc\":66390,\"Ġderp\":66391,\"loi\":66392,\"ĠMcKin\":66393,\"è¯´æĺİ\":66394,\"/=\":66395,\"LinkId\":66396,\"stddef\":66397,\"reducers\":66398,\"isans\":66399,\".hist\":66400,\"'/>Ċ\":66401,\"ĠToxic\":66402,\"Ġdisappearing\":66403,\"Ġcis\":66404,\"(do\":66405,\"ĠmainScreen\":66406,\"_BANK\":66407,\"Ġdemonstrators\":66408,\"ĠPalette\":66409,\"uely\":66410,\"Rare\":66411,\"Ġresiding\":66412,\"Ġambiente\":66413,\"Ġmism\":66414,\"-question\":66415,\"Ġoppressed\":66416,\"Ġletra\":66417,\"<dynamic\":66418,\"ĠFotos\":66419,\"-policy\":66420,\"istem\":66421,\".exchange\":66422,\"stre\":66423,\"$/,\":66424,\"íķĺê¸°\":66425,\"$ĊĊ\":66426,\"ĠRene\":66427,\"Ġtouted\":66428,\"-Core\":66429,\"ĠCran\":66430,\"ĠTrader\":66431,\"Ġdew\":66432,\"Ġflap\":66433,\"ĉfilename\":66434,\"Ġinmate\":66435,\"(Mock\":66436,\"ĠSob\":66437,\"isbn\":66438,\"Ġnoe\":66439,\"ĠForbidden\":66440,\"Ġeles\":66441,\"Ġding\":66442,\"_sa\":66443,\")*/Ċ\":66444,\"arie\":66445,\"ĠSupports\":66446,\"Ġmodulation\":66447,\"Ġensl\":66448,\"ĠShadows\":66449,\"principal\":66450,\"angent\":66451,\"-Jan\":66452,\"ĠPants\":66453,\",tr\":66454,\"Ġfitte\":66455,\"Ġgarments\":66456,\"Margins\":66457,\"LTR\":66458,\"ĠMiy\":66459,\"ventus\":66460,\"ĠMÃ¶glich\":66461,\"[attr\":66462,\"/respond\":66463,\"Ġttk\":66464,\"ĠolduÄŁ\":66465,\"ĠConse\":66466,\"Premium\":66467,\"Ġfrancaise\":66468,\"_horizontal\":66469,\"_ib\":66470,\"ĠFare\":66471,\"Ġharvested\":66472,\"endir\":66473,\"(hit\":66474,\">*/Ċ\":66475,\"ĠIRepository\":66476,\"ylie\":66477,\"Ġdetects\":66478,\":no\":66479,\"âĺ´\":66480,\"ĠdiseÃ±\":66481,\"Ġunseren\":66482,\"Ġmocking\":66483,\"south\":66484,\"rates\":66485,\"Ġhypoc\":66486,\"ĠShortly\":66487,\"ĠBlacks\":66488,\"ÑĤÐ¸ÑĢÐ¾Ð²\":66489,\"ĠASAP\":66490,\"rebbe\":66491,\"iec\":66492,\".AddDays\":66493,\"Ġepis\":66494,\"-inflammatory\":66495,\"-net\":66496,\"Ġpall\":66497,\"ëĶ\":66498,\"Ġissuance\":66499,\"Ġcontentious\":66500,\".Areas\":66501,\"Ð¸Ð»ÑĮ\":66502,\"Ġcontiguous\":66503,\"[action\":66504,\"Ġexpres\":66505,\"!\\\")ĊĊ\":66506,\"ULO\":66507,\"Ġwre\":66508,\"Ġsubdiv\":66509,\"Ġturnaround\":66510,\"Ġaccel\":66511,\"ĠUniv\":66512,\"ĠUniversidad\":66513,\"sett\":66514,\"descr\":66515,\".Generation\":66516,\"Ġpatriot\":66517,\"Ġfas\":66518,\"****Ċ\":66519,\"QP\":66520,\"Ġåį\":66521,\"oppel\":66522,\"Ġjuegos\":66523,\".drawString\":66524,\"-confirm\":66525,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠ\":66526,\"<Props\":66527,\"Ġfamille\":66528,\"ĠHelmet\":66529,\"ertiary\":66530,\"athi\":66531,\"Ġcultivate\":66532,\"Ġduplication\":66533,\"ĠspyOn\":66534,\"*/)Ċ\":66535,\"ĠHunger\":66536,\"Orth\":66537,\"Ġpinpoint\":66538,\"ĠHag\":66539,\"Ġtimetable\":66540,\"marginTop\":66541,\"Ġrecipro\":66542,\"fell\":66543,\"ĠPersistent\":66544,\"ãģ©\":66545,\"plural\":66546,\"queued\":66547,\"Ġgracias\":66548,\"Ã¡tico\":66549,\"Ġhardship\":66550,\"ĠApartments\":66551,\"ĠJunk\":66552,\"ĠReve\":66553,\"_Msk\":66554,\"Ġsupra\":66555,\"ĠATP\":66556,\"ĠsetShow\":66557,\"åŃĹç¬¦ä¸²\":66558,\"ĠNottingham\":66559,\"Steven\":66560,\"ĠMund\":66561,\"ranges\":66562,\"Ġuploads\":66563,\"Ġbfs\":66564,\"pz\":66565,\"ultimate\":66566,\"ĠEfficiency\":66567,\"AMI\":66568,\"å¾Ħ\":66569,\"_REPEAT\":66570,\"Ġacademia\":66571,\".toolStripButton\":66572,\"ToEnd\":66573,\"rvine\":66574,\"ĠThy\":66575,\"ĠElectoral\":66576,\"ĠREQUIRED\":66577,\"Ġplunge\":66578,\"ĠRevolutionary\":66579,\"ĠTent\":66580,\"Ġgrenade\":66581,\"\\\":[{\\\"\":66582,\"Ġmour\":66583,\"Pow\":66584,\"Ġevangelical\":66585,\"TECTED\":66586,\"Ġoverturn\":66587,\"ĉInput\":66588,\"recommend\":66589,\"%C\":66590,\"Ġslag\":66591,\"ĠBhar\":66592,\"_encrypt\":66593,\"ĠWarfare\":66594,\"(age\":66595,\"ATEGORIES\":66596,\"mile\":66597,\"Ġheavenly\":66598,\"ammer\":66599,\"())[\":66600,\"adera\":66601,\"hg\":66602,\"ĠLAW\":66603,\"ĠpackageName\":66604,\"_typeDefinition\":66605,\"(be\":66606,\"DBNull\":66607,\"_tar\":66608,\"Ġheuristic\":66609,\"ĠWanted\":66610,\"ĠStub\":66611,\"Ġkitt\":66612,\"REC\":66613,\"Ġpasar\":66614,\".newBuilder\":66615,\"ĉgraph\":66616,\"iosa\":66617,\".columnHeader\":66618,\"ĠsetOpen\":66619,\"ĠThirty\":66620,\"Ġ\\\"%.\":66621,\"Albert\":66622,\"Ġsama\":66623,\"Ġrocking\":66624,\"Comple\":66625,\"MV\":66626,\"|()Ċ\":66627,\"_reads\":66628,\"(varargin\":66629,\"oulouse\":66630,\"ĠSIMD\":66631,\"Ġcarbohydrate\":66632,\"whole\":66633,\",None\":66634,\"ĭè¯ķ\":66635,\"ĠChand\":66636,\"czas\":66637,\"_queryset\":66638,\"Ġexistential\":66639,\"Ġedible\":66640,\"Ġagility\":66641,\"ĠWillis\":66642,\"Ġhym\":66643,\"ĠBrill\":66644,\"Ð¸Ñħ\":66645,\"ĠNotFoundException\":66646,\"Ġ(()\":66647,\"APSHOT\":66648,\"Ġsubstantive\":66649,\"_typeDefinitionSize\":66650,\"Ġvacancies\":66651,\"ENGINE\":66652,\"Ġanders\":66653,\"Ġsymb\":66654,\"Ġetree\":66655,\")._\":66656,\"Ġtransporting\":66657,\"imps\":66658,\"/cop\":66659,\"actable\":66660,\"_flux\":66661,\"ĠnewInstance\":66662,\"atoire\":66663,\"ĠcolumnIndex\":66664,\"ĠGio\":66665,\"Ġsubtitles\":66666,\".WinForms\":66667,\"Ð»ÑıÐµÐ¼\":66668,\"Ġalerted\":66669,\"Ġstripping\":66670,\"wendung\":66671,\"ĠMethodInvocation\":66672,\"ErrorHandler\":66673,\"Scrollbar\":66674,\"Portfolio\":66675,\"consum\":66676,\"ĠCOMMON\":66677,\"Lf\":66678,\"_based\":66679,\"ocaly\":66680,\"Ġeffet\":66681,\"vvm\":66682,\"ripsi\":66683,\"Ġflourish\":66684,\"chter\":66685,\"=========Ċ\":66686,\"Ġrequer\":66687,\".questions\":66688,\"(\\\"?\":66689,\"ĠposX\":66690,\"ĠPCR\":66691,\"ĠOrganizations\":66692,\"prÃ¼\":66693,\"Exam\":66694,\"ĠIncorporated\":66695,\"_phrase\":66696,\"Ġprayed\":66697,\"Ġhomeowner\":66698,\"ĠTaj\":66699,\"zx\":66700,\"ĠIdeally\":66701,\"_MACHINE\":66702,\"ĠRemoving\":66703,\"Coefficient\":66704,\"Ġeducating\":66705,\"Ġ?>&\":66706,\"Ġpours\":66707,\"iram\":66708,\"_peak\":66709,\"Ġnesting\":66710,\"abyte\":66711,\"nature\":66712,\"Ġafs\":66713,\"ĠRoo\":66714,\"cargo\":66715,\"objet\":66716,\"Ġfreeing\":66717,\"quake\":66718,\"Density\":66719,\"Ġdescricao\":66720,\"/********\":66721,\"Ġdashed\":66722,\"ĠgroÃŁ\":66723,\"ooky\":66724,\"ĠPEOPLE\":66725,\"_Post\":66726,\"Ġcervical\":66727,\"ĠAdjustable\":66728,\"ensual\":66729,\"ĠRevised\":66730,\"(reference\":66731,\"ĉBase\":66732,\"essim\":66733,\"Maint\":66734,\"ĠgetSize\":66735,\"ĠSandwich\":66736,\"radient\":66737,\"sink\":66738,\"://'\":66739,\"_tt\":66740,\"FPS\":66741,\"ĠArmenian\":66742,\"prevState\":66743,\"_LINES\":66744,\"Ġtighten\":66745,\"<[\":66746,\"]<<\\\"\":66747,\"ĠTraff\":66748,\"Ġliquids\":66749,\"Ġarcs\":66750,\"_Command\":66751,\"@protocol\":66752,\"-ish\":66753,\"Ġrubbed\":66754,\"BBC\":66755,\"/firebase\":66756,\"AppBar\":66757,\"<X\":66758,\"ĠSINGLE\":66759,\".StatusInternalServerError\":66760,\"Ġverte\":66761,\"/query\":66762,\"ĠgetConfig\":66763,\"ĠDirectX\":66764,\"physics\":66765,\"ycop\":66766,\"Ġbreaker\":66767,\"-volume\":66768,\"dataTable\":66769,\"âĢĻe\":66770,\"riott\":66771,\"ĠEternal\":66772,\"getHeight\":66773,\"ĠonItemClick\":66774,\"Ġquaternion\":66775,\"Ġkinky\":66776,\"deserialize\":66777,\"(Spring\":66778,\"Ġpeacefully\":66779,\"_Device\":66780,\"(Matrix\":66781,\"iÃ¨rement\":66782,\"(typ\":66783,\".vaadin\":66784,\".getMethod\":66785,\"ĠâĢĿĊĊ\":66786,\"Ġthreaded\":66787,\"ĠFamous\":66788,\"ĠGamb\":66789,\"Ġì§Ģ\":66790,\"ĠÐ¤\":66791,\"Ġfakt\":66792,\"Ġecht\":66793,\"_ub\":66794,\".JpaRepository\":66795,\"Ġunge\":66796,\"-ending\":66797,\"ĠCAMERA\":66798,\"credential\":66799,\"ĠPassport\":66800,\"ĉRTDBG\":66801,\"Ġextrad\":66802,\"-origin\":66803,\"Ġsacrificed\":66804,\"ĠSchultz\":66805,\"ĠTurtle\":66806,\".centerX\":66807,\"Ġshowcasing\":66808,\"Ġbzw\":66809,\"yro\":66810,\"isNull\":66811,\".isDirectory\":66812,\"maint\":66813,\"_bi\":66814,\"ĠSpringer\":66815,\"}()ĊĊ\":66816,\"issuer\":66817,\"-arm\":66818,\"esk\":66819,\"linha\":66820,\"Ġkort\":66821,\"ajas\":66822,\"alink\":66823,\"(Button\":66824,\"ĠRestoration\":66825,\"Ġincr\":66826,\"ĠZhou\":66827,\"ĉĠĠĠĠĠĠĠĠĉ\":66828,\"ĠDisclaimer\":66829,\"Ġkvinnor\":66830,\"ĠDare\":66831,\"Ġ<->\":66832,\"è¯¦\":66833,\"ĉĉĉĉĉĉĉĉĉĉĊ\":66834,\".Clamp\":66835,\"ĉscope\":66836,\"ĠMum\":66837,\"<<<<<<<\":66838,\"/{{\":66839,\"_artist\":66840,\"ĠReaction\":66841,\"ĠNickel\":66842,\"_Remove\":66843,\"((((\":66844,\"ëĮĢ\":66845,\"Ġdynasty\":66846,\"ĠThrows\":66847,\"ĠCoul\":66848,\"_rng\":66849,\"ĠDok\":66850,\".listView\":66851,\"ĠTucson\":66852,\"(tok\":66853,\"ĠPhilippe\":66854,\"ToShow\":66855,\"Ġdieta\":66856,\"ĠUltr\":66857,\".Tick\":66858,\"ĠGetType\":66859,\"iete\":66860,\"ĠLeah\":66861,\"Hardware\":66862,\"ĠComprehensive\":66863,\"COMMON\":66864,\"Ġindustri\":66865,\"irical\":66866,\"-bedroom\":66867,\"Ġgyro\":66868,\"ĠÐºÐ¾ÑĢ\":66869,\"Ġ-/Ċ\":66870,\"cour\":66871,\"ĠBrushes\":66872,\"Multiplier\":66873,\"Ġuserdata\":66874,\"ĠRecogn\":66875,\"Ġobligated\":66876,\"ĠLevin\":66877,\"ancestor\":66878,\"Ġmening\":66879,\"ĠUd\":66880,\",json\":66881,\"(assign\":66882,\"Ġndarray\":66883,\"_corner\":66884,\"@AllArgsConstructor\":66885,\"éªĮè¯ģçłģ\":66886,\"adors\":66887,\"Ġrespondent\":66888,\"GORITH\":66889,\"Ġtengo\":66890,\"ĠsetMessage\":66891,\"ĠIPO\":66892,\"arrays\":66893,\"ĠAGAIN\":66894,\"'[\":66895,\"Ġ\\\"-//\":66896,\"Ã¤m\":66897,\"ãĢĤ\\\\\":66898,\".once\":66899,\"currentTime\":66900,\"Gov\":66901,\"Ġgetopt\":66902,\"mlx\":66903,\"ĠTone\":66904,\"']];Ċ\":66905,\"Ġpredator\":66906,\"Wy\":66907,\"/entity\":66908,\"Ġmantra\":66909,\")>=\":66910,\"ograd\":66911,\"Ġmelan\":66912,\"ĠsortBy\":66913,\"ĠDEFINE\":66914,\"Protected\":66915,\"cdecl\":66916,\"'>\\\".$\":66917,\"<cv\":66918,\"crire\":66919,\"-Trump\":66920,\"Ġucfirst\":66921,\"cassert\":66922,\"Ġacknowledgement\":66923,\"ĠINV\":66924,\"ĠUNU\":66925,\".squareup\":66926,\"ĠSax\":66927,\"rette\":66928,\"()ĊĊĊĊ\":66929,\"ĠDataBase\":66930,\"ĠPatriot\":66931,\"_Row\":66932,\"ĠExhibition\":66933,\"Ġdetainees\":66934,\"ĠStringIO\":66935,\"_DEN\":66936,\"Modifiers\":66937,\"asar\":66938,\"irting\":66939,\"Ġtranquil\":66940,\"(enc\":66941,\"ĠãĤ³\":66942,\"ncoder\":66943,\"_unused\":66944,\"ĠBian\":66945,\"Verb\":66946,\"_excerpt\":66947,\"/export\":66948,\"ĠSext\":66949,\"Ds\":66950,\"AMPL\":66951,\"OfString\":66952,\"_tracks\":66953,\"wj\":66954,\"otonin\":66955,\"ĠITE\":66956,\"IVEN\":66957,\"-original\":66958,\"ĠFINAL\":66959,\"__)ĊĊĊ\":66960,\"Ġense\":66961,\"ĠUtt\":66962,\":**\":66963,\"ĠSurrey\":66964,\"ĠKaiser\":66965,\"administrator\":66966,\"-largest\":66967,\"Ġletzten\":66968,\"Ġchained\":66969,\"'H\":66970,\"Ġdocumenting\":66971,\"ĠLecture\":66972,\"RH\":66973,\"ollapsed\":66974,\"skirts\":66975,\"elder\":66976,\"ĠSixth\":66977,\"Ġallegiance\":66978,\"ISOString\":66979,\"UsageId\":66980,\".hardware\":66981,\"Ġpari\":66982,\"ĠwÃ¤hrend\":66983,\"Ġrdr\":66984,\"Ġhjem\":66985,\"LOOR\":66986,\"ĠLPARAM\":66987,\"ĠÐ¼Ð¾Ð¶ÐµÑĤ\":66988,\"Ġhomage\":66989,\"outside\":66990,\"ĠCharSet\":66991,\"<Game\":66992,\"ï¼Ļ\":66993,\"_MUTEX\":66994,\"))/(\":66995,\"_reordered\":66996,\"textInput\":66997,\"ANCED\":66998,\"ĠTee\":66999,\"Ġcornerback\":67000,\"QueryString\":67001,\"Ġlongitudinal\":67002,\"ĠHolidays\":67003,\"ABCDEFG\":67004,\".KeyPress\":67005,\".ul\":67006,\"ydro\":67007,\"ĠTate\":67008,\"ĉrouter\":67009,\"spots\":67010,\"Ġpaul\":67011,\"-prev\":67012,\"Ġknowingly\":67013,\"ĠKurds\":67014,\"ĠEurop\":67015,\".cert\":67016,\"BIG\":67017,\"(coeff\":67018,\"ĠClaus\":67019,\"/examples\":67020,\"ĠFarms\":67021,\"Ġ//(\":67022,\"SPAN\":67023,\"Ġcircus\":67024,\"ĠMIS\":67025,\"ĠTraits\":67026,\"-clear\":67027,\"Ġregimen\":67028,\"ĠbackgroundImage\":67029,\"usaha\":67030,\"_MetadataUsageId\":67031,\"Ġrhe\":67032,\"Clin\":67033,\"ĠDominic\":67034,\".nextDouble\":67035,\"(detail\":67036,\"ThreadPool\":67037,\"ĠCarpenter\":67038,\"sorting\":67039,\"Ġgovernors\":67040,\"Ġsingers\":67041,\"unlink\":67042,\"Ġringing\":67043,\"Ġschematic\":67044,\"Ġerrmsg\":67045,\"Ġbeb\":67046,\".\\\"+\":67047,\"ĠIncreases\":67048,\"\\\"All\":67049,\"Ġaconte\":67050,\"zia\":67051,\".TextChanged\":67052,\"ĠToDo\":67053,\",:);Ċ\":67054,\"nage\":67055,\"chl\":67056,\"owel\":67057,\"Ġgerade\":67058,\"_fft\":67059,\"Ġestamos\":67060,\"STAR\":67061,\"Ġdisgust\":67062,\"gran\":67063,\"portunity\":67064,\"Ġautobi\":67065,\"{}{Ċ\":67066,\"ĠCoupons\":67067,\"_GAIN\":67068,\"ĠTCHAR\":67069,\"/pass\":67070,\"çĶ±\":67071,\"Ġfootwear\":67072,\"(bounds\":67073,\"apus\":67074,\"cite\":67075,\"BOOT\":67076,\"ĠCodec\":67077,\"logue\":67078,\"-properties\":67079,\"automation\":67080,\"ĠShoe\":67081,\"spect\":67082,\"(mm\":67083,\"ĠKet\":67084,\"[param\":67085,\"Ġbasil\":67086,\"ĠAngularFire\":67087,\"Ġadventurous\":67088,\"_UClass\":67089,\"Ġindulge\":67090,\"ĉcuda\":67091,\"Ġinsulting\":67092,\".Expressions\":67093,\"ĠonCreateOptionsMenu\":67094,\"UEL\":67095,\"Ġbiting\":67096,\"(!_\":67097,\"ĠEncyclopedia\":67098,\"Ġbert\":67099,\"ĠVera\":67100,\"ĠBiblical\":67101,\"insics\":67102,\"_SIMPLE\":67103,\"Ġsalida\":67104,\"requested\":67105,\"ĠComposition\":67106,\".Atoi\":67107,\"(KeyEvent\":67108,\"erea\":67109,\"Ġdeported\":67110,\"ĠQur\":67111,\"Ġnipples\":67112,\"isArray\":67113,\"ĠÑĥÐºÐ°Ð·\":67114,\"Ġbrink\":67115,\"metros\":67116,\"Enumeration\":67117,\"ĠBuilds\":67118,\"ertos\":67119,\"Ġsaints\":67120,\".deploy\":67121,\"ethereum\":67122,\"Ġkindergarten\":67123,\"vanized\":67124,\"Ġcombin\":67125,\"Ġpouvoir\":67126,\"Kin\":67127,\"arÄ±\":67128,\"Ġ.....\":67129,\"ï¼¾\":67130,\".Go\":67131,\"Ġquirky\":67132,\"Ä±ndan\":67133,\"ĠactionTypes\":67134,\"ĠQUERY\":67135,\"Taylor\":67136,\"ĠRK\":67137,\"tat\":67138,\".packet\":67139,\"ĠIMPORTANT\":67140,\"Ġcushions\":67141,\"bulk\":67142,\"ductive\":67143,\"benef\":67144,\"ocrisy\":67145,\"Ġfueron\":67146,\"Ġcurses\":67147,\"Ġfilings\":67148,\"elier\":67149,\"(?:\":67150,\"_drive\":67151,\"Ġcontacto\":67152,\"ĠParkway\":67153,\"vides\":67154,\"gne\":67155,\"avage\":67156,\"\\\\\\\\.\":67157,\"fullName\":67158,\"dll\":67159,\"Ġshocks\":67160,\"Ġ################################################\":67161,\"_px\":67162,\"@Web\":67163,\".Persistence\":67164,\"Ġsunk\":67165,\".tooltip\":67166,\"autical\":67167,\"Newsletter\":67168,\"Ġwaiter\":67169,\"Ġinquire\":67170,\"Ð°ÐµÑĤÑģÑı\":67171,\"('__\":67172,\"tog\":67173,\"IENTATION\":67174,\"ĠcompanyId\":67175,\"ĠBasics\":67176,\"ĉJLabel\":67177,\"ĠmacOS\":67178,\"ĠMats\":67179,\"_tel\":67180,\"-prefix\":67181,\"Ġmutate\":67182,\"}')\":67183,\"cheng\":67184,\"ĠMilit\":67185,\"\\\"&\":67186,\"finding\":67187,\"ĠDataLoader\":67188,\".GPIO\":67189,\"ĠLevy\":67190,\"Ġsneakers\":67191,\"ĠcrÃ©d\":67192,\"awner\":67193,\"xia\":67194,\"/simple\":67195,\"CHR\":67196,\"Ġflotation\":67197,\".sensor\":67198,\"Brazil\":67199,\"ĠSeasons\":67200,\"ĠSpeak\":67201,\"-ball\":67202,\"ĠMutation\":67203,\"ukkan\":67204,\"ĠOmaha\":67205,\"âĢĻon\":67206,\"ĠCuomo\":67207,\"ĠJudicial\":67208,\"Ġcheckpoints\":67209,\"ĠFrem\":67210,\"ĉId\":67211,\"egrity\":67212,\"_af\":67213,\"@NoArgsConstructor\":67214,\"Ġtabela\":67215,\"[#\":67216,\"nota\":67217,\"ĠFactors\":67218,\"(groups\":67219,\"iswa\":67220,\"IVO\":67221,\"Ġscri\":67222,\"acet\":67223,\"ĠMeh\":67224,\"(clazz\":67225,\"Ġ[<\":67226,\"perial\":67227,\"Ġsurpassed\":67228,\"Ġjoked\":67229,\"Ġrud\":67230,\"Ġimbalance\":67231,\"ĠFrage\":67232,\"ssp\":67233,\"Ġindicted\":67234,\".market\":67235,\";m\":67236,\"Ġrepairing\":67237,\"-note\":67238,\"Debugger\":67239,\"(Web\":67240,\"Ġsings\":67241,\"ĠLoy\":67242,\"ĠDESIGN\":67243,\".Comp\":67244,\"-controller\":67245,\"Ġavocado\":67246,\"ĠBowie\":67247,\"contador\":67248,\"ulings\":67249,\"uchos\":67250,\"specifier\":67251,\"ĠVolvo\":67252,\"Ġdemos\":67253,\"ĠProduto\":67254,\".NotFound\":67255,\"ĠniÃ±os\":67256,\"ĠBols\":67257,\"_outer\":67258,\"Sher\":67259,\"AUTO\":67260,\"Ġjov\":67261,\"ĠFreddie\":67262,\"orias\":67263,\"Ġafect\":67264,\"Ġfacilitating\":67265,\"Ġdominating\":67266,\"Parcelable\":67267,\"','-\":67268,\"moon\":67269,\"Ġmetast\":67270,\"Ġscarf\":67271,\"ĠTherm\":67272,\"CallBack\":67273,\"ÑģÑĤÐ°Ð²\":67274,\".Import\":67275,\"Ġbetrayal\":67276,\"iculos\":67277,\"ĠweiÃŁ\":67278,\"åĮħ\":67279,\"_^\":67280,\"wifi\":67281,\"ĠSENSOR\":67282,\"_BUSY\":67283,\"$b\":67284,\"_FIND\":67285,\"Ġplastics\":67286,\"ĠCONVERT\":67287,\"ĉcall\":67288,\"ĠPrague\":67289,\"Ġgarnered\":67290,\"_learning\":67291,\"shoot\":67292,\"']))čĊ\":67293,\"ĠGinger\":67294,\"=pd\":67295,\",test\":67296,\"Profit\":67297,\"Ġestimator\":67298,\"Ġbree\":67299,\"Ġ//</\":67300,\"_have\":67301,\"ĠKod\":67302,\"_IMM\":67303,\"izzas\":67304,\"mighty\":67305,\"×ŀ\":67306,\"ĠOnClickListener\":67307,\"ãĥĩ\":67308,\"ĠScientist\":67309,\"Filtered\":67310,\"avl\":67311,\"hay\":67312,\"_generated\":67313,\"]'Ċ\":67314,\"ĠAuthorities\":67315,\":param\":67316,\"Ġstatt\":67317,\"-material\":67318,\"Ġlider\":67319,\"ĠCrop\":67320,\"ĠBunifu\":67321,\"ĠnextProps\":67322,\"orz\":67323,\"_ord\":67324,\"<x\":67325,\"_IOCTL\":67326,\"ĠMuscle\":67327,\"ĉexec\":67328,\"ENAME\":67329,\"_letters\":67330,\"#####\":67331,\"ĠCs\":67332,\"']==\\\"\":67333,\"Ġ\\\"')\":67334,\"Cleanup\":67335,\".structure\":67336,\"Îº\":67337,\"éĢļè¿ĩ\":67338,\"'];?>\\\"\":67339,\"ĠLatitude\":67340,\"bbing\":67341,\"Ġbananas\":67342,\"rections\":67343,\"ĠRandall\":67344,\"NYSE\":67345,\"Ġaprend\":67346,\".ResponseEntity\":67347,\"ĠtestData\":67348,\"\\\\e\":67349,\"ĠWK\":67350,\".AddComponent\":67351,\"_runs\":67352,\"Ã§ois\":67353,\"-mini\":67354,\"folders\":67355,\"Ġlosers\":67356,\"ĠTowers\":67357,\"-Encoding\":67358,\":r\":67359,\"chooser\":67360,\"Ġflattened\":67361,\"ÑģÑĤÐ°Ð½Ð¾Ð²\":67362,\"ĉPy\":67363,\"ä¸ľ\":67364,\"Ġdamned\":67365,\"Dept\":67366,\"wed\":67367,\"Ġpisc\":67368,\"gies\":67369,\"_games\":67370,\".mass\":67371,\"(Equal\":67372,\"Ġnatives\":67373,\".thumbnail\":67374,\"ltr\":67375,\"Ġeql\":67376,\"_income\":67377,\"ĉheaders\":67378,\"-haired\":67379,\"Ġmediocre\":67380,\"ĠWithdraw\":67381,\"Ġbitte\":67382,\"Ù¾\":67383,\"=in\":67384,\"ocked\":67385,\"Fully\":67386,\"ĠTEMPLATE\":67387,\"Ãºde\":67388,\"Odd\":67389,\"illez\":67390,\"Telephone\":67391,\"ĠĊĉĉĊ\":67392,\"(\\\"'\\\"\":67393,\"_sched\":67394,\"erne\":67395,\"Â¾\":67396,\".pick\":67397,\"ĠMSI\":67398,\"ĉff\":67399,\"Discovery\":67400,\"ĠCOD\":67401,\"ĠLack\":67402,\"Ġsensational\":67403,\"moth\":67404,\"ĠLegislative\":67405,\"Ñį\":67406,\"Ġviability\":67407,\"ĠgetEmail\":67408,\"Ġunanimous\":67409,\"Ġpellet\":67410,\"Ġ\\\"()\":67411,\"coat\":67412,\"agoon\":67413,\"ĠALWAYS\":67414,\"\\\\uC\":67415,\"_stdout\":67416,\"Andy\":67417,\"ĠnewList\":67418,\"ĠMaharashtra\":67419,\",__\":67420,\"=username\":67421,\"Ġscripting\":67422,\"ĠTmin\":67423,\"<Action\":67424,\"={},\":67425,\"symbols\":67426,\"Ġfencing\":67427,\"ĠvÃŃdeos\":67428,\"ĠMaurice\":67429,\"corlib\":67430,\"Ġkem\":67431,\"\\\"}),Ċ\":67432,\"ĠClassical\":67433,\"college\":67434,\"ĠHomepage\":67435,\"Ġ}}ĊĊ\":67436,\"_Msp\":67437,\"ĠComplaint\":67438,\"Ġsandy\":67439,\"Asian\":67440,\"_serializer\":67441,\"ĠLah\":67442,\"Ġbuds\":67443,\"ologne\":67444,\"ĠresponseData\":67445,\"ophile\":67446,\"kategori\":67447,\"Ended\":67448,\"lectic\":67449,\"Ġclaws\":67450,\"...');Ċ\":67451,\"Ġplanners\":67452,\"ĠZak\":67453,\"ĠGloves\":67454,\"\\\")}\":67455,\"Ġfashioned\":67456,\"bron\":67457,\"Ġnewcomers\":67458,\"vana\":67459,\"Ġpierws\":67460,\"Receipt\":67461,\"-env\":67462,\"Ġruta\":67463,\"ĠFarmer\":67464,\"odore\":67465,\"mui\":67466,\"Ġromant\":67467,\"Ġinflict\":67468,\"Ġseminars\":67469,\"=cv\":67470,\"(stock\":67471,\"Ġextractor\":67472,\"ĠTiffany\":67473,\"_uv\":67474,\".contacts\":67475,\"'),('\":67476,\"Ġsolves\":67477,\".ConnectionString\":67478,\"/debug\":67479,\"ĠAvery\":67480,\"ãĥ£\":67481,\"ĠmaxX\":67482,\"Spark\":67483,\"<this\":67484,\"Ġhikes\":67485,\"KeyValuePair\":67486,\"ĠQuiet\":67487,\"stab\":67488,\"ĠKomment\":67489,\"lycer\":67490,\"ĠMSM\":67491,\"ĠLantern\":67492,\"Ġconjunto\":67493,\"hsi\":67494,\"MULT\":67495,\"WithDuration\":67496,\"attached\":67497,\"ĠAster\":67498,\"ĉpoints\":67499,\"ĠSiber\":67500,\"ĠMethodist\":67501,\"/sites\":67502,\"Ġfortunes\":67503,\"Participant\":67504,\"ĠcustomerId\":67505,\")init\":67506,\"_servers\":67507,\"Ġweave\":67508,\"ĠTRAIN\":67509,\"Ġharassed\":67510,\"ìŀĳ\":67511,\"abcdefghijklmnopqrstuvwxyz\":67512,\"_far\":67513,\"Alchemy\":67514,\".lineWidth\":67515,\"Ġtherapists\":67516,\"ĠLob\":67517,\"equipment\":67518,\"Ġrecht\":67519,\".mipmap\":67520,\".nickname\":67521,\"Ġuntouched\":67522,\"AGON\":67523,\"ĠSaul\":67524,\"Ġworksheets\":67525,\"ĠVeteran\":67526,\"ouden\":67527,\"aclass\":67528,\"_asm\":67529,\"Ġtempl\":67530,\"ĠExpense\":67531,\"eight\":67532,\"#SBATCH\":67533,\"zones\":67534,\".parts\":67535,\"atrice\":67536,\"laws\":67537,\"toBeDefined\":67538,\"Effective\":67539,\"ĠPieces\":67540,\"arti\":67541,\"Ġinhibitors\":67542,\"ĉparameters\":67543,\"Ġtelegram\":67544,\"bourg\":67545,\"_notifications\":67546,\"Ġpositional\":67547,\"-deals\":67548,\"Ġ/*----------------------------------------------------------------\":67549,\"Ġshaders\":67550,\"]=$\":67551,\"Ġdeco\":67552,\"etypes\":67553,\"clare\":67554,\"ĠGSM\":67555,\".utility\":67556,\"ToStr\":67557,\"afen\":67558,\"ĠXm\":67559,\"_particles\":67560,\"Ġfluffy\":67561,\"Marketing\":67562,\"Ġstandings\":67563,\"?ĊĊĊĊĊĊ\":67564,\"UMAN\":67565,\"_PAYMENT\":67566,\"ĉTime\":67567,\"rawn\":67568,\"orro\":67569,\"Ġeerste\":67570,\"ĠpageNum\":67571,\"ĠCOP\":67572,\"Ġplagiar\":67573,\"Uploader\":67574,\"$self\":67575,\"later\":67576,\"erialized\":67577,\"ĠalignSelf\":67578,\"ĠâĻ¥\":67579,\".arraycopy\":67580,\"Ġnosotros\":67581,\"ĉgpio\":67582,\"Ġplotted\":67583,\"iterations\":67584,\"ĠRelax\":67585,\"cipher\":67586,\"Gift\":67587,\"ĠBett\":67588,\"ĠXR\":67589,\"Ġstriped\":67590,\"(environment\":67591,\"egers\":67592,\"_RESERVED\":67593,\"ĠkÃ¶nnte\":67594,\"Ġinferred\":67595,\"Pdf\":67596,\"sorry\":67597,\"parate\":67598,\".Concat\":67599,\"Ġlipid\":67600,\".BO\":67601,\"Ġorm\":67602,\"ĠConsort\":67603,\"Ġoverseeing\":67604,\"Ġamber\":67605,\"Ġplethora\":67606,\"ĉAction\":67607,\"querque\":67608,\"Ġhuis\":67609,\"Ġ=[\":67610,\"Ġprogresses\":67611,\"judul\":67612,\"Ġconvertible\":67613,\".embedding\":67614,\"Ġ{?>Ċ\":67615,\"Ġredux\":67616,\"[label\":67617,\":\\\");čĊ\":67618,\".online\":67619,\"quartered\":67620,\"Ġschooling\":67621,\"Ġ\\\"\\\\\\\"\\\"\":67622,\"[list\":67623,\"Alan\":67624,\"'}ĊĊ\":67625,\"ypsum\":67626,\"Ġstriving\":67627,\"ĠResponsible\":67628,\"ĠíĮĮìĿ¼\":67629,\".IntPtr\":67630,\"rikes\":67631,\"enville\":67632,\".setLayoutManager\":67633,\"ĠPassenger\":67634,\"Ġdisob\":67635,\"Ġferment\":67636,\".Pixel\":67637,\">('\":67638,\"Ġcontenders\":67639,\"-beta\":67640,\"Ġaffirmative\":67641,\"Ð½Ð¾ÑģÑĤÐ¸\":67642,\"iaÃ§Ã£o\":67643,\"Recommend\":67644,\"imiters\":67645,\"_ylim\":67646,\"Ġsubsidy\":67647,\"Ġerb\":67648,\"FileSize\":67649,\"(sr\":67650,\"Ġpoorest\":67651,\"Ġvoi\":67652,\"Sid\":67653,\"Ġslips\":67654,\"_minutes\":67655,\"Ġug\":67656,\"Æ¡n\":67657,\"ĠnatÃ¼rlich\":67658,\"ãĥŀ\":67659,\"bear\":67660,\"}_${\":67661,\"Ġfisse\":67662,\"Ġdiscriminatory\":67663,\"ĉĉĠĠĊ\":67664,\"ĠCoil\":67665,\"_iface\":67666,\".ver\":67667,\"Ġmined\":67668,\"Ġassassin\":67669,\"Ġunsett\":67670,\".requests\":67671,\".US\":67672,\"imageUrl\":67673,\"Ġstrategically\":67674,\"-band\":67675,\"Ġtrousers\":67676,\"XD\":67677,\"{/\":67678,\"lections\":67679,\"`()\":67680,\"\\\"P\":67681,\"Ġsketches\":67682,\"clientId\":67683,\"ĠSrc\":67684,\"opening\":67685,\"Putin\":67686,\"ĠPoetry\":67687,\"ĠPROM\":67688,\"ILLISECONDS\":67689,\"Ġbooming\":67690,\"Similarly\":67691,\":last\":67692,\".worker\":67693,\".getID\":67694,\".SP\":67695,\"servers\":67696,\"ocular\":67697,\"Ġspinach\":67698,\"ISK\":67699,\"Ã°\":67700,\"'])[\":67701,\"Ġchiefs\":67702,\"ĠgroÃŁen\":67703,\"rieving\":67704,\".ask\":67705,\"-sur\":67706,\"VV\":67707,\"/>\\\";Ċ\":67708,\"(remove\":67709,\"ĠKL\":67710,\"ĠHaley\":67711,\"@ResponseBody\":67712,\"-&\":67713,\"Swagger\":67714,\"Ġznaj\":67715,\".onError\":67716,\"rego\":67717,\"elix\":67718,\"ĠAVAILABLE\":67719,\"Ġseperti\":67720,\"iap\":67721,\"_miss\":67722,\"Ġsurgeries\":67723,\"Ġimpartial\":67724,\"ĠCot\":67725,\"aktion\":67726,\"Ġwhitelist\":67727,\"ĠÐ°Ð²\":67728,\"_mix\":67729,\"ĠBedrooms\":67730,\"Ġprimeira\":67731,\"Ġsignifica\":67732,\"/by\":67733,\"Ġstartling\":67734,\"ĠSPE\":67735,\"ucciÃ³n\":67736,\"Numer\":67737,\"IBM\":67738,\".fragments\":67739,\"Rent\":67740,\"ĠrÃ³wnieÅ¼\":67741,\".AUTO\":67742,\".ForEach\":67743,\"ĠZhu\":67744,\"ĠCunning\":67745,\"ĠWarn\":67746,\"ĠBH\":67747,\"_DOWNLOAD\":67748,\"ByKey\":67749,\")âĢĶ\":67750,\"Ġcommande\":67751,\"_ANS\":67752,\"Chron\":67753,\"FIT\":67754,\"_atoms\":67755,\"_SKIP\":67756,\"Ġvap\":67757,\"(Box\":67758,\"Ġldap\":67759,\"unprocessable\":67760,\"ITIONS\":67761,\"Ã©rÃ©\":67762,\",msg\":67763,\"Ġoutset\":67764,\"Ġdrilled\":67765,\"ĠdÃ©velopp\":67766,\"ĠCoat\":67767,\"ĠBenghazi\":67768,\"Hooks\":67769,\"ĠMissile\":67770,\"_Reset\":67771,\">/<\":67772,\"Ġ\\\"-\\\"Ċ\":67773,\"()=>{Ċ\":67774,\"ĠHoch\":67775,\".await\":67776,\"Adresse\":67777,\"Ġdigitally\":67778,\"\\\"These\":67779,\"oplevel\":67780,\"Ġasynchronously\":67781,\"ĠDucks\":67782,\"RESP\":67783,\"IRO\":67784,\".fix\":67785,\"ĠRadar\":67786,\"vertise\":67787,\"ÃŃses\":67788,\"Iterations\":67789,\"mouseup\":67790,\"mint\":67791,\"FIRST\":67792,\"Ġpaypal\":67793,\"_upgrade\":67794,\"Wrapped\":67795,\";čččĊ\":67796,\"+s\":67797,\"Ġcatcher\":67798,\".Op\":67799,\"_NOTICE\":67800,\"paralleled\":67801,\"CVE\":67802,\"forgot\":67803,\"Ġpanor\":67804,\"Ġoffre\":67805,\"Ġenorme\":67806,\"()čĊčĊčĊ\":67807,\"adiator\":67808,\"addAll\":67809,\"[text\":67810,\"(util\":67811,\".Promise\":67812,\"anism\":67813,\"_offer\":67814,\"ENDIF\":67815,\"dots\":67816,\"ĠKro\":67817,\"Ġspelled\":67818,\"ĠappName\":67819,\"Activities\":67820,\"ĠSpice\":67821,\"eated\":67822,\"Ġskb\":67823,\"ĠkÃ¶z\":67824,\"Ġtorchvision\":67825,\"Civil\":67826,\"Ġhos\":67827,\"_Helper\":67828,\"iÄĩ\":67829,\"_unsigned\":67830,\"è®º\":67831,\"âĢľAnd\":67832,\"ĉkfree\":67833,\".raise\":67834,\"Ġcalle\":67835,\"ĠLans\":67836,\"Ġantig\":67837,\"\\\\\\\">\\\";Ċ\":67838,\"branches\":67839,\"logradouro\":67840,\"Ġstalled\":67841,\"alyzed\":67842,\"Derived\":67843,\":not\":67844,\"Ġgibi\":67845,\"ĠTurnbull\":67846,\".userData\":67847,\"(Table\":67848,\"ĠDerived\":67849,\"ĉconf\":67850,\"Ġalgae\":67851,\"Ġkafka\":67852,\"Ġnakne\":67853,\"ĠHeating\":67854,\"ĠTire\":67855,\"adult\":67856,\"ĠDateFormat\":67857,\"opc\":67858,\"ensagem\":67859,\".Tools\":67860,\".MixedReality\":67861,\"rai\":67862,\"ĠWonderful\":67863,\")])ĊĊ\":67864,\"iard\":67865,\"ThemeProvider\":67866,\"ĠeventData\":67867,\"#ad\":67868,\".getUrl\":67869,\"Ġtoolbox\":67870,\"Ġoverriding\":67871,\"CONTENT\":67872,\"-products\":67873,\"wild\":67874,\"_expand\":67875,\"inaire\":67876,\"Bru\":67877,\"olls\":67878,\"ĠÑįÑĤÐ¾\":67879,\"ctest\":67880,\"Ġpunching\":67881,\"DRV\":67882,\"_spaces\":67883,\"ĠSuperintendent\":67884,\"Ġlayui\":67885,\"(feed\":67886,\"tod\":67887,\"Ġvh\":67888,\"Ġinsults\":67889,\"ĠSuc\":67890,\"iks\":67891,\"Torrent\":67892,\".kr\":67893,\"_activate\":67894,\"ĵĺ\":67895,\"jee\":67896,\"imers\":67897,\"ruits\":67898,\"Ġprecinct\":67899,\".Required\":67900,\"Ġsatisfies\":67901,\"Ġcheering\":67902,\"Ġarriv\":67903,\"ĉrec\":67904,\"ĠCobb\":67905,\"Ġconcussion\":67906,\"ujet\":67907,\"NotFoundError\":67908,\"Jean\":67909,\"Ġphoton\":67910,\">_\":67911,\"ĠBarcl\":67912,\"amd\":67913,\"Ġ%}Ċ\":67914,\"=\\\\\\\"#\":67915,\"Intern\":67916,\"ĠCommittees\":67917,\".bel\":67918,\"nummer\":67919,\"Ġlevitra\":67920,\"_verbose\":67921,\"(codec\":67922,\"ĠStitch\":67923,\"=\\\"\\\";čĊ\":67924,\"Ġregrets\":67925,\"Ġmultinational\":67926,\"Ġrestructuring\":67927,\"ĠMEN\":67928,\"ynchronization\":67929,\"Ġmediator\":67930,\"kir\":67931,\"Prince\":67932,\"Ġinhibit\":67933,\"Ġgost\":67934,\"ĠMMC\":67935,\"Ġsided\":67936,\"_dark\":67937,\"(blob\":67938,\">Lorem\":67939,\">\\\");ĊĊ\":67940,\"scanner\":67941,\":inline\":67942,\".carousel\":67943,\"otide\":67944,\"ĠWWW\":67945,\"Ġdrummer\":67946,\".family\":67947,\"Ġordinal\":67948,\"å½ĵåīį\":67949,\"Ġdiplomat\":67950,\"Ġsupplemental\":67951,\"ĠdafÃ¼r\":67952,\"ĠFAT\":67953,\"ĠYong\":67954,\"hapus\":67955,\"ĠJunction\":67956,\"zl\":67957,\".UseFont\":67958,\"ĠhashMap\":67959,\"-Re\":67960,\"Ġ\\\"**\":67961,\".setBackgroundResource\":67962,\"Ġimperfect\":67963,\".FindElement\":67964,\"ĠLLP\":67965,\"Ġmurderer\":67966,\"Ġtexte\":67967,\"isÃ©\":67968,\"actics\":67969,\"Toy\":67970,\"Grant\":67971,\"_disconnect\":67972,\"Ġbrasile\":67973,\"Ġemergencies\":67974,\"_lvl\":67975,\"Ġ@\\\"\\\\\":67976,\"}*/ĊĊ\":67977,\"_SOC\":67978,\"NORMAL\":67979,\"/gallery\":67980,\"asics\":67981,\"Eventually\":67982,\"Ġgrap\":67983,\"Ġcrist\":67984,\"Ġprojector\":67985,\"Ġgeomet\":67986,\"Ġdetectors\":67987,\"Ġcriticizing\":67988,\"Ġchicks\":67989,\"ĠHij\":67990,\"/frame\":67991,\"-money\":67992,\"\\\"description\":67993,\"Ġtexting\":67994,\"Ġsexism\":67995,\"ĠMVC\":67996,\"-general\":67997,\"Ġoverturned\":67998,\"Ġmover\":67999,\"ĠPhrase\":68000,\"ĠUNUSED\":68001,\"ĠEntrepreneur\":68002,\"TEGR\":68003,\"ellipse\":68004,\"Markdown\":68005,\"__(*\":68006,\"ĠKardashian\":68007,\"ppelin\":68008,\"ĠGott\":68009,\"Ġdyst\":68010,\"ĠRedux\":68011,\"Hola\":68012,\"?!ĊĊ\":68013,\"ĠRealty\":68014,\"Survey\":68015,\"ĠMcGregor\":68016,\"_handles\":68017,\"Ġintrigued\":68018,\"ĠgetUrl\":68019,\"Ġdevised\":68020,\"ĠPaypal\":68021,\"Ġthinkers\":68022,\"ĠStatusBar\":68023,\"ĠElig\":68024,\"Ġcomplexes\":68025,\"ĠÐºÐ¾Ð´\":68026,\"stocks\":68027,\"-initialized\":68028,\"Ġscandals\":68029,\"Ġcomforting\":68030,\"ĠRocks\":68031,\"Ġlions\":68032,\"locator\":68033,\"!]\":68034,\"ĠPony\":68035,\"Datum\":68036,\"ĠFet\":68037,\"ĠoffsetY\":68038,\"ĠRETURNS\":68039,\"Ġbreaches\":68040,\"TimeInterval\":68041,\"Ġvielen\":68042,\"Verse\":68043,\"Ġkad\":68044,\"Ġgaat\":68045,\"(\\\"-\\\",\":68046,\"ĠmouseY\":68047,\"(Post\":68048,\"ĠUh\":68049,\"eligible\":68050,\"alta\":68051,\"Ġutilise\":68052,\"facts\":68053,\"HIP\":68054,\"Ġorchestra\":68055,\"ĠSpaces\":68056,\"ispiel\":68057,\"Ġmultipart\":68058,\"-opacity\":68059,\"Searching\":68060,\"ĠPlato\":68061,\"Vision\":68062,\"Ġlul\":68063,\"ĠApprent\":68064,\"ç»ľ\":68065,\"[rand\":68066,\"-disabled\":68067,\"ĠFletcher\":68068,\"Ġtransports\":68069,\"&e\":68070,\"tparam\":68071,\"pole\":68072,\"ĠBuenos\":68073,\"Ãºblica\":68074,\"interaction\":68075,\"Ġhob\":68076,\"Ġinflicted\":68077,\"lite\":68078,\"ĠPARAMETERS\":68079,\"ĠStam\":68080,\"(mx\":68081,\"ĠAutoMapper\":68082,\"ilian\":68083,\"Ġquitting\":68084,\"={}\":68085,\"ĠJonas\":68086,\"Ġlocality\":68087,\"ĠSilence\":68088,\"_flutter\":68089,\"Ġnbr\":68090,\"liter\":68091,\"ĠNormalize\":68092,\"Ġacum\":68093,\"Brains\":68094,\"equip\":68095,\"]==\\\"\":68096,\"Ġdestino\":68097,\"ĠDios\":68098,\".Multiline\":68099,\"agree\":68100,\")ĊĊĊĊĊĊĊĊ\":68101,\"Ġstellen\":68102,\"Ġcurly\":68103,\".Office\":68104,\"-about\":68105,\"Ġ'./../../\":68106,\"ĠUTIL\":68107,\"ĠRp\":68108,\"âĢº\":68109,\"Ġmapa\":68110,\".DO\":68111,\"agal\":68112,\".windows\":68113,\"Ġadversely\":68114,\".XtraLayout\":68115,\"medical\":68116,\"Ġunsur\":68117,\"thermal\":68118,\".ModelAdmin\":68119,\".actual\":68120,\"setContent\":68121,\"Ġpostfix\":68122,\"PW\":68123,\"ĠChairs\":68124,\"Ġgramm\":68125,\"Ġcomplic\":68126,\"DISPLAY\":68127,\"ĠMoose\":68128,\"haar\":68129,\"ALES\":68130,\"Ġlda\":68131,\"/*****************************************************************************Ċ\":68132,\"Ġ'/'Ċ\":68133,\"ASN\":68134,\"ĠBarber\":68135,\"Ġmains\":68136,\"ĠmainWindow\":68137,\"Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ\":68138,\"Ġeman\":68139,\"_collect\":68140,\"Ġrempl\":68141,\".tax\":68142,\"bah\":68143,\"ĠPsychiatry\":68144,\"Descriptions\":68145,\"Ġexecutions\":68146,\"ĉLOGGER\":68147,\"&E\":68148,\":bg\":68149,\"Ġkd\":68150,\".damage\":68151,\"Ġnisi\":68152,\"æ¬¾\":68153,\"ĠCamel\":68154,\"inidad\":68155,\"ĠLifestyle\":68156,\"ĠTHIRD\":68157,\"Ġà¤¸\":68158,\"Ġpolygons\":68159,\"Ġattire\":68160,\"alent\":68161,\"_USART\":68162,\"Ġmalaria\":68163,\"lobs\":68164,\"Ġ]}Ċ\":68165,\"(register\":68166,\"-ps\":68167,\"_optimizer\":68168,\"(ALOAD\":68169,\"Ġvape\":68170,\".sock\":68171,\"ĲèĹı\":68172,\"$product\":68173,\"(ERR\":68174,\"ckpt\":68175,\"buquerque\":68176,\"Ġ}}\\\">{{\":68177,\"ĠHive\":68178,\"ĠMash\":68179,\"ĠEpid\":68180,\"ĠLund\":68181,\"_transactions\":68182,\"Ġsubclasses\":68183,\"Ease\":68184,\"_Close\":68185,\"_checkout\":68186,\"\\\"',Ċ\":68187,\"Sector\":68188,\"oise\":68189,\"-temp\":68190,\")\\\")\":68191,\"hyper\":68192,\"ercul\":68193,\"stackpath\":68194,\"_NR\":68195,\"ILLE\":68196,\"ĠrelaciÃ³n\":68197,\"ĠMatth\":68198,\"_CODEC\":68199,\"ĠhandleError\":68200,\"_One\":68201,\"alborg\":68202,\"ĉĉĠĠĠĠĠĠĠĠĠ\":68203,\"ĠUploaded\":68204,\"Nm\":68205,\"//=\":68206,\"*S\":68207,\"_EXPECT\":68208,\"Ġfractional\":68209,\"Cou\":68210,\"Ġscalable\":68211,\"ĠCID\":68212,\"<Post\":68213,\"ĉthread\":68214,\"hardware\":68215,\".changed\":68216,\".ElementAt\":68217,\"Ġarticulate\":68218,\"edores\":68219,\"Establish\":68220,\"={[Ċ\":68221,\"!*\":68222,\"ĠSJ\":68223,\"Meter\":68224,\".rep\":68225,\"ĠVOL\":68226,\"ĠOu\":68227,\"lÃ©\":68228,\"Ġpneumonia\":68229,\"_picker\":68230,\"explo\":68231,\"Ġìŀĳ\":68232,\"ĠSwim\":68233,\"dress\":68234,\"stories\":68235,\"/nav\":68236,\"Va\":68237,\"ĠØŃ\":68238,\"/self\":68239,\"Ġveterinary\":68240,\"(Dense\":68241,\"ĉboost\":68242,\"ĠIsNot\":68243,\"Ġtrusting\":68244,\"ĠLebanese\":68245,\"$request\":68246,\"xffffff\":68247,\"_removed\":68248,\"Ġupdater\":68249,\"Ø§Ø\":68250,\"DOWNLOAD\":68251,\"ĠImmediately\":68252,\"Ġroaming\":68253,\"ĠHorny\":68254,\".codigo\":68255,\"ĠFigures\":68256,\"Ġpantry\":68257,\"(samples\":68258,\"ĠBEL\":68259,\"ĠsetContent\":68260,\"umor\":68261,\"æĶ¯ä»ĺ\":68262,\"_MINUS\":68263,\"Ġunleashed\":68264,\"Ġproficient\":68265,\"ĉUI\":68266,\".Exceptions\":68267,\"Ġsrand\":68268,\"Pressure\":68269,\".assertNot\":68270,\"(serializer\":68271,\"ĉtxt\":68272,\"Ports\":68273,\"Ġnecesario\":68274,\"Ġrevived\":68275,\"Ġmilestones\":68276,\"cano\":68277,\"Escort\":68278,\"Ġentend\":68279,\"APE\":68280,\"ipc\":68281,\".atomic\":68282,\"ĠPemb\":68283,\"Ġreachable\":68284,\"Ġkans\":68285,\"whatever\":68286,\"ListBox\":68287,\"ĠCly\":68288,\"pictured\":68289,\"ĠElectro\":68290,\"abic\":68291,\"Ġfunk\":68292,\"Ġdiarrhea\":68293,\"ĠçĻ\":68294,\"ĠSolver\":68295,\"ĠBac\":68296,\"Ġskeletal\":68297,\"ĠïĤ\":68298,\"ĠFileNotFoundException\":68299,\"Ġ\\\")[\":68300,\"ĠTrait\":68301,\"udoku\":68302,\"----------ĊĊ\":68303,\"Angel\":68304,\"agr\":68305,\"Ġsimples\":68306,\"Ġbanc\":68307,\"ĠAlerts\":68308,\"ĠConfirmation\":68309,\"ĠAly\":68310,\"callbacks\":68311,\"Ġfunktion\":68312,\"Ġgraft\":68313,\"YPD\":68314,\"/AFP\":68315,\"WK\":68316,\"kur\":68317,\"CKET\":68318,\"ĠSlate\":68319,\"ĠStef\":68320,\"ĉRuntime\":68321,\"ĠESL\":68322,\"Ġpreaching\":68323,\"Broad\":68324,\"ĠsetDescription\":68325,\"azel\":68326,\"=ĊĊ\":68327,\"Ġjackpot\":68328,\"Ġ//!Ċ\":68329,\"viar\":68330,\"Ġeid\":68331,\"Ġativ\":68332,\"Ġreflexivity\":68333,\".Listen\":68334,\"Ġlyric\":68335,\"Ġverk\":68336,\"Ġcollusion\":68337,\"azaar\":68338,\"Ġwink\":68339,\"ĠMud\":68340,\"/operator\":68341,\"Ġexternally\":68342,\"Ġbaru\":68343,\"Ġbaskets\":68344,\"ticker\":68345,\"(photo\":68346,\"_even\":68347,\"Ġsponge\":68348,\"ĠheightFor\":68349,\"getChild\":68350,\"_formats\":68351,\".Execution\":68352,\"_Property\":68353,\"repos\":68354,\"theid\":68355,\"_PHYS\":68356,\"Ġevidenced\":68357,\".heading\":68358,\"Angular\":68359,\"ĠVenue\":68360,\"ĠHOUSE\":68361,\"ĠEstonia\":68362,\"Ð¼Ð°\":68363,\"rganization\":68364,\"/device\":68365,\"IRR\":68366,\"_then\":68367,\"arem\":68368,\"Ġaggi\":68369,\"EMON\":68370,\"ĠÑģÐº\":68371,\"ĠEph\":68372,\"ĠMSP\":68373,\"Ġlogfile\":68374,\"-leading\":68375,\"atham\":68376,\"Ġunmatched\":68377,\"ĠSituation\":68378,\"(){}Ċ\":68379,\"ĉchange\":68380,\"ĠChapters\":68381,\".RESULT\":68382,\"Ġoe\":68383,\"ETY\":68384,\"_vid\":68385,\"...',\":68386,\"Ġalternatively\":68387,\"_WS\":68388,\"ĠPlenty\":68389,\"ĠCrate\":68390,\"asionally\":68391,\"ĠLawn\":68392,\"ĠIMM\":68393,\"ĠVanity\":68394,\"ĠVoor\":68395,\"åĲ¯\":68396,\"Ġmij\":68397,\"sterreich\":68398,\"ĠRDF\":68399,\"ĠCriterion\":68400,\".Inv\":68401,\".Step\":68402,\"_Frame\":68403,\"ĠENUM\":68404,\"ï¾\":68405,\"Hopefully\":68406,\"NavController\":68407,\"Ġì¶Ķê°Ģ\":68408,\"ĠVader\":68409,\"Ġruthless\":68410,\"$key\":68411,\"ckt\":68412,\"inem\":68413,\"ilent\":68414,\"Ġrespecting\":68415,\"lcd\":68416,\"(bt\":68417,\"ĠElliot\":68418,\"ĠUnidos\":68419,\"(Channel\":68420,\"Ġeius\":68421,\"Ġastronauts\":68422,\"ĠHosting\":68423,\"Ġcaste\":68424,\"Ġharmed\":68425,\"ouples\":68426,\"<Role\":68427,\".Desc\":68428,\"-course\":68429,\"ĠCartoon\":68430,\"ileged\":68431,\"Ġmystical\":68432,\"Ġç±\":68433,\"(fieldName\":68434,\"WITHOUT\":68435,\",sum\":68436,\"'acc\":68437,\"ĉrows\":68438,\"ĠgetPassword\":68439,\"Ġcocks\":68440,\"pivot\":68441,\"nameof\":68442,\"Ġfeasibility\":68443,\"Ġcommencement\":68444,\"ĠDome\":68445,\".JSONException\":68446,\"ĠHyderabad\":68447,\"ĠListed\":68448,\"ĠComputers\":68449,\"[val\":68450,\"Ġisot\":68451,\"ĉwin\":68452,\"Ġneh\":68453,\"(INT\":68454,\"Republican\":68455,\"ĠÐ¿ÑĢÐ¾Ð²ÐµÑĢ\":68456,\"Fat\":68457,\"Ġequiv\":68458,\"ĠDatum\":68459,\"asti\":68460,\"Ġsoils\":68461,\"upuncture\":68462,\"pressive\":68463,\"_));Ċ\":68464,\".Warn\":68465,\"Ġharb\":68466,\".onOptionsItemSelected\":68467,\"Ġclown\":68468,\"ĠOWN\":68469,\"Ġexaminations\":68470,\"ĠExisting\":68471,\"jourd\":68472,\"Ġconcession\":68473,\"ĠFirebaseDatabase\":68474,\"Ġuptake\":68475,\"Ġenlisted\":68476,\"ĠCarb\":68477,\"Ġfus\":68478,\"Ġabusing\":68479,\".production\":68480,\"ynch\":68481,\"ilyn\":68482,\"refund\":68483,\"-have\":68484,\"(argument\":68485,\"Ġfscanf\":68486,\"concept\":68487,\"_LANE\":68488,\"Ġengages\":68489,\"ĠExactly\":68490,\"altura\":68491,\"(Address\":68492,\"Ġsynonymous\":68493,\"Town\":68494,\"ĠPayne\":68495,\"roit\":68496,\"periences\":68497,\"particles\":68498,\"_bd\":68499,\"ĠGrinder\":68500,\"ManagedObjectContext\":68501,\"(bb\":68502,\"[tmp\":68503,\"-cons\":68504,\"aoke\":68505,\"Ġsteward\":68506,\"ĠViewChild\":68507,\".drawLine\":68508,\"ĠWARN\":68509,\"Ġpues\":68510,\"modation\":68511,\"Ġzs\":68512,\"Agregar\":68513,\"Ġ\\\".\\\",\":68514,\".centerY\":68515,\"Ġflawless\":68516,\"Ġdeutsche\":68517,\"ĠLiqu\":68518,\"iteit\":68519,\"_intro\":68520,\"-used\":68521,\",target\":68522,\"ĠHDD\":68523,\"Ġ%+\":68524,\"orent\":68525,\"/Object\":68526,\"Ġdisrupted\":68527,\"Ã¢te\":68528,\"Ġacceso\":68529,\"ĠLowest\":68530,\"ĠWilliamson\":68531,\"_creator\":68532,\"Sell\":68533,\"ĠBUG\":68534,\"_repr\":68535,\"èĢĮ\":68536,\"Ġarchaeological\":68537,\"omers\":68538,\"ĠElon\":68539,\"ĠScrollView\":68540,\"Ġlinestyle\":68541,\"isRequired\":68542,\"isko\":68543,\"_rb\":68544,\"fÃ¼h\":68545,\"ĠĠĠĉĉ\":68546,\"(define\":68547,\"ĠSCM\":68548,\"ĠDIFF\":68549,\"_bs\":68550,\"pendicular\":68551,\"paced\":68552,\"ĠJournalism\":68553,\".JSONArray\":68554,\"ĠDataAccess\":68555,\"Maria\":68556,\"ĠBÃ¼\":68557,\"HELL\":68558,\"ĠMATRIX\":68559,\"OLTIP\":68560,\"apsible\":68561,\"]:ĊĊ\":68562,\"naires\":68563,\"_histogram\":68564,\"Ġflair\":68565,\"having\":68566,\"ĠUserID\":68567,\"ĠRelationships\":68568,\"Replacement\":68569,\"Ġrsa\":68570,\"Ġenriched\":68571,\"Ġrehears\":68572,\"ĠwÃ¤re\":68573,\"Ġloaders\":68574,\"ĠElena\":68575,\"ĠWatching\":68576,\"ĉjob\":68577,\"NEWS\":68578,\"/settingsdialog\":68579,\"ivec\":68580,\"_EQUALS\":68581,\"TemplateName\":68582,\"ĠBODY\":68583,\".adapters\":68584,\"woff\":68585,\"comboBox\":68586,\".NewReader\":68587,\"|required\":68588,\"_probability\":68589,\"Ġ(::\":68590,\"Ġcraz\":68591,\"ĠUF\":68592,\"TestId\":68593,\"Ġespecific\":68594,\"ibel\":68595,\"pawn\":68596,\"ëį\":68597,\"ĠMarr\":68598,\"ĠstartX\":68599,\"_sites\":68600,\"/>ĊĊ\":68601,\"Ġimplicated\":68602,\"(inner\":68603,\"Ġeffortlessly\":68604,\"ÂŃtion\":68605,\"award\":68606,\"Ġhovering\":68607,\"pri\":68608,\"$template\":68609,\"uang\":68610,\"Ġautomate\":68611,\"Ġ**/ĊĊ\":68612,\"ibli\":68613,\"Ġnutrit\":68614,\").(\":68615,\"eeee\":68616,\"ApiController\":68617,\"/owl\":68618,\"ĠWomens\":68619,\"-double\":68620,\"ĠOrdering\":68621,\"spm\":68622,\"Moder\":68623,\".Native\":68624,\"ĠBerger\":68625,\"esda\":68626,\"erdings\":68627,\"_echo\":68628,\"Ġsummarized\":68629,\"Ġelevate\":68630,\"_quad\":68631,\"Ġwoo\":68632,\"ulant\":68633,\"PropertyValue\":68634,\"Ġplist\":68635,\"ĠGRAPH\":68636,\"ĠSTDERR\":68637,\")').\":68638,\"Assertion\":68639,\"linkplain\":68640,\"Ġaccelerating\":68641,\"Ġsnippets\":68642,\"ĠSalman\":68643,\"abcd\":68644,\".echo\":68645,\"_idxs\":68646,\"Ġpcm\":68647,\"ocalyptic\":68648,\"_coordinate\":68649,\"(previous\":68650,\"-short\":68651,\".subtract\":68652,\"(Bit\":68653,\"?t\":68654,\"ĠNotebook\":68655,\"ĠKatrina\":68656,\"ifferential\":68657,\"silent\":68658,\"terminated\":68659,\"Ġtangent\":68660,\":T\":68661,\"ĠcosÃ¬\":68662,\"Ġparanoid\":68663,\"Ġdeprivation\":68664,\"/{{$\":68665,\"Ġhemisphere\":68666,\"Ġreinst\":68667,\"ecz\":68668,\"terr\":68669,\"ĠPLATFORM\":68670,\"Ġtroubleshooting\":68671,\"Ġvalidating\":68672,\"ĠOrion\":68673,\"asuring\":68674,\"Ð¸Ð½Ð°\":68675,\"Ġhubs\":68676,\"arence\":68677,\"ĠChallenges\":68678,\"Ġzeal\":68679,\"Spo\":68680,\"ĠScreens\":68681,\"Ġmundane\":68682,\"ĠDunk\":68683,\"Ġ#####\":68684,\"ĠREFER\":68685,\"onet\":68686,\".case\":68687,\"-positive\":68688,\"INTEGER\":68689,\".metroLabel\":68690,\"SAN\":68691,\"Ġprofessions\":68692,\"Ġtyres\":68693,\"Palindrome\":68694,\"ĠSECOND\":68695,\".GREEN\":68696,\"ĠSnapshot\":68697,\"ULK\":68698,\"_cid\":68699,\"$I\":68700,\"Ġcunt\":68701,\"estruction\":68702,\"Psych\":68703,\"ĠHttpResponseMessage\":68704,\"embali\":68705,\"_reviews\":68706,\"Selectable\":68707,\"_PRESENT\":68708,\"ĠJsonRequest\":68709,\"ĠTheta\":68710,\"_interp\":68711,\"Raster\":68712,\"#error\":68713,\",obj\":68714,\"Ġtweeting\":68715,\"_GPU\":68716,\"_today\":68717,\"_secs\":68718,\"nees\":68719,\".getSystemService\":68720,\"Ġvnode\":68721,\"ĠRegulatory\":68722,\"ĠFahrenheit\":68723,\"Ġscaler\":68724,\"_market\":68725,\".allocate\":68726,\"tickets\":68727,\"atak\":68728,\"ĠPike\":68729,\"ĠLor\":68730,\"ditor\":68731,\"ĠlocationManager\":68732,\"ĠinitData\":68733,\"ĠWare\":68734,\"ĠIncident\":68735,\"Ġcommentator\":68736,\"uentes\":68737,\"ĠInflate\":68738,\"ĠåĨ\":68739,\"Ġactividad\":68740,\"ĠBj\":68741,\"ENUM\":68742,\"Ġreused\":68743,\"ĠÐ¼ÐµÐ½\":68744,\"ĠsesiÃ³n\":68745,\".'));Ċ\":68746,\"ãģĵãĤĵ\":68747,\"/ge\":68748,\"against\":68749,\",line\":68750,\"(UnmanagedType\":68751,\")=\\\"\":68752,\"Ġyt\":68753,\"udiantes\":68754,\"rollable\":68755,\"å¡«\":68756,\"_COLLECTION\":68757,\"olis\":68758,\"umberland\":68759,\"(\\\"\\\"\\\"Ċ\":68760,\"Ġzipper\":68761,\"ČĊ\":68762,\"/signup\":68763,\"Ġstrands\":68764,\"rax\":68765,\".consumer\":68766,\"Ġuncertainties\":68767,\"DebugEnabled\":68768,\"Ġdefeats\":68769,\"Ġdrv\":68770,\"Ġrealism\":68771,\"agrams\":68772,\"XE\":68773,\"ĠHazard\":68774,\"-needed\":68775,\"(tableView\":68776,\".Elements\":68777,\"ĠSAR\":68778,\"ĉelem\":68779,\"(pkg\":68780,\"Simon\":68781,\"TintColor\":68782,\"ĠPhen\":68783,\"_EMP\":68784,\"ØĮ\":68785,\"?>ĊĊĊ\":68786,\"_attrib\":68787,\"ĠboxShadow\":68788,\"ĠCGAffineTransform\":68789,\"ĠCanberra\":68790,\"ĠstartPos\":68791,\"ĠRak\":68792,\"ĉcerr\":68793,\"ĠTanzania\":68794,\"uong\":68795,\"caf\":68796,\".basicConfig\":68797,\"oins\":68798,\"Contained\":68799,\"=set\":68800,\"_git\":68801,\"ĉpacket\":68802,\"Ġcof\":68803,\"(TR\":68804,\"æł¼å¼ı\":68805,\"({})Ċ\":68806,\"Ġdireccion\":68807,\"Ġplaylists\":68808,\"Ġaffine\":68809,\".setSelection\":68810,\"Ġammon\":68811,\"Ġconquered\":68812,\"ĠRamos\":68813,\"ĠPSP\":68814,\"=sum\":68815,\"Ġcorrelations\":68816,\"Ġroadmap\":68817,\"Ġextinct\":68818,\"Ġadvisable\":68819,\"Ġbombers\":68820,\"ĠUIResponder\":68821,\"_BP\":68822,\"ĠÐ±ÑĥÐ´ÐµÑĤ\":68823,\"ĠPremiere\":68824,\"ĠRU\":68825,\"trash\":68826,\"(cljs\":68827,\"gnu\":68828,\".Pages\":68829,\"Ġinspectors\":68830,\"Mexico\":68831,\"ĠVere\":68832,\"Prec\":68833,\"ĠScal\":68834,\"ispers\":68835,\"Runnable\":68836,\".orig\":68837,\"Ġsailors\":68838,\"Parsing\":68839,\"ĠVisitors\":68840,\"&type\":68841,\"popover\":68842,\"<(),\":68843,\"Ġowes\":68844,\"Ġreacts\":68845,\"ĠDefined\":68846,\"Ġrealmente\":68847,\"Ġdictatorship\":68848,\"administr\":68849,\"idend\":68850,\"=L\":68851,\"strcasecmp\":68852,\"]%\":68853,\"Ð¾Ð³ÑĢÐ°Ð¼\":68854,\"edula\":68855,\"-designed\":68856,\"COVER\":68857,\"_Channel\":68858,\"Ġprojeto\":68859,\"ymoon\":68860,\"CHKERRQ\":68861,\"éĩĬ\":68862,\"Ġverifying\":68863,\"/key\":68864,\".fromCharCode\":68865,\".Bit\":68866,\"_budget\":68867,\"Ġ%\\\"\":68868,\"veyor\":68869,\"Ġyum\":68870,\"Ġextremes\":68871,\"_CRE\":68872,\"getStatus\":68873,\"subsection\":68874,\"Ġsoaked\":68875,\"Ġgenau\":68876,\"_CHARACTER\":68877,\"æĮģ\":68878,\"-online\":68879,\".toCharArray\":68880,\"cerer\":68881,\"\\\"],\\\"\":68882,\"Ġstroll\":68883,\"ĠYuan\":68884,\"ĠWander\":68885,\"Ġsistem\":68886,\"_uc\":68887,\"(nombre\":68888,\"chantment\":68889,\"(close\":68890,\"meth\":68891,\"-secret\":68892,\"pseudo\":68893,\"County\":68894,\"CONTROL\":68895,\"Ġsolvent\":68896,\"Ġsoaring\":68897,\"Ġspies\":68898,\"NavItem\":68899,\"Ġresemblance\":68900,\"(bits\":68901,\"Ġcellul\":68902,\"Ġassociative\":68903,\".imwrite\":68904,\".coordinate\":68905,\"],$\":68906,\"(sk\":68907,\"*/)\":68908,\"Ġmocks\":68909,\"Ġjung\":68910,\"_DOC\":68911,\"-runtime\":68912,\"ĠGives\":68913,\"unj\":68914,\"(seg\":68915,\"([\\\\\":68916,\"Ġnah\":68917,\"_expect\":68918,\"RowIndex\":68919,\"(force\":68920,\"ĠGetValue\":68921,\"Ġsummaries\":68922,\"_SHARE\":68923,\"-trained\":68924,\"ĠBlanc\":68925,\"Ġfittings\":68926,\"Ġwaterfront\":68927,\".Note\":68928,\"ĠWand\":68929,\"overe\":68930,\"prediction\":68931,\"Ġcsr\":68932,\".topAnchor\":68933,\"ĠStroke\":68934,\"_Filter\":68935,\"athe\":68936,\"Ġ\\\"\\\\\\\\\\\"\":68937,\"ĠAFF\":68938,\"=\\\"/\\\">\":68939,\".RequestMethod\":68940,\"Ĳľç´¢\":68941,\"Ġwitnessing\":68942,\"Apparently\":68943,\"Ġmdi\":68944,\"sticks\":68945,\"ĠAlv\":68946,\"Ã¤ÃŁ\":68947,\"_contin\":68948,\"Ġboilers\":68949,\"ĠMarxist\":68950,\"IOC\":68951,\"nero\":68952,\"innacle\":68953,\"Lit\":68954,\"cec\":68955,\"KeyPress\":68956,\"GetData\":68957,\"Ġisnt\":68958,\"ÑĢÐ¾Ð²ÐµÑĢ\":68959,\"Ġqry\":68960,\"RootElement\":68961,\"ĠNSCoder\":68962,\".getNum\":68963,\"Ġthreesome\":68964,\"Uses\":68965,\".\\\"_\":68966,\"ĠContinuous\":68967,\"Ġpopulist\":68968,\"ĠPsychological\":68969,\"_cycles\":68970,\"Ġifdef\":68971,\"ipherals\":68972,\"ĉĠĠĠĠĠĠĠĠĠĠ\":68973,\"Ġadvises\":68974,\"ĠCompanion\":68975,\"tright\":68976,\"Ġgrowers\":68977,\"ĠSOCKET\":68978,\"ymce\":68979,\"RSS\":68980,\"memberOf\":68981,\"Touchable\":68982,\"_arrays\":68983,\"Ġjumper\":68984,\"Ġherpes\":68985,\"ĠTits\":68986,\"ĠTelefon\":68987,\"_PANEL\":68988,\"ugen\":68989,\"åĮĹäº¬\":68990,\".Site\":68991,\"_unregister\":68992,\"_chr\":68993,\".tf\":68994,\"-human\":68995,\"Ġasoci\":68996,\"Ġqueens\":68997,\"Anthony\":68998,\"Ġstringent\":68999,\"Ġmolest\":69000,\"setIcon\":69001,\"HEEL\":69002,\"HELP\":69003,\"DDS\":69004,\".cms\":69005,\"ISTRIBUT\":69006,\"cies\":69007,\".forChild\":69008,\".chk\":69009,\"ĠOttoman\":69010,\"ĠTPP\":69011,\"Ġmio\":69012,\"ĠBuf\":69013,\"boa\":69014,\"Versions\":69015,\"(locale\":69016,\"ĠRailroad\":69017,\"bcc\":69018,\"/**<\":69019,\"-paid\":69020,\"Ġcelery\":69021,\"atische\":69022,\"getOption\":69023,\"oriously\":69024,\"Ġadapters\":69025,\"Stores\":69026,\"/save\":69027,\"ĠBasis\":69028,\"ÑİÑĤ\":69029,\"ĠLad\":69030,\"_relationship\":69031,\"ĠClubs\":69032,\"Ġà¨\":69033,\":\\\"<<\":69034,\"_MISC\":69035,\"Visualization\":69036,\"Ġmirrored\":69037,\"esper\":69038,\"StrLn\":69039,\"ĠresponseObject\":69040,\"åĲĳ\":69041,\".encoder\":69042,\"---------ĊĊ\":69043,\"ĠgridView\":69044,\"_indent\":69045,\"antwort\":69046,\"Ġarrivals\":69047,\"ĠSettlement\":69048,\"ViewInit\":69049,\"-values\":69050,\"Ġwaterfall\":69051,\"Ġincarceration\":69052,\"ĠTeens\":69053,\"ĉsign\":69054,\"immune\":69055,\".secondary\":69056,\"Ġvideoer\":69057,\"Ġè¾ĵåħ¥\":69058,\"Ġintimidation\":69059,\"endale\":69060,\"########################################################################\":69061,\"Ġinsightful\":69062,\"Ġsands\":69063,\"Ġphotographic\":69064,\"Paginator\":69065,\"Ġdisciplined\":69066,\"_TLS\":69067,\"])),\":69068,\"rlen\":69069,\"<center\":69070,\"_PCM\":69071,\"Kelly\":69072,\"-billion\":69073,\".cx\":69074,\"Ġjeux\":69075,\"ĠfileList\":69076,\"ĠQDialog\":69077,\"tractive\":69078,\"Dt\":69079,\"Ġestrogen\":69080,\"Ġstarch\":69081,\"_emit\":69082,\"ĠÐ·Ð°Ð¿ÑĢÐ¾Ñģ\":69083,\"ĠQuart\":69084,\"Ġinadvertently\":69085,\"Ġtrong\":69086,\"shipment\":69087,\"ĠNOR\":69088,\"ĠScreening\":69089,\"ĠDisconnect\":69090,\"meno\":69091,\"ĠWorst\":69092,\"ĠNr\":69093,\"{k\":69094,\"spl\":69095,\"_ctr\":69096,\".sorted\":69097,\"-placeholder\":69098,\"();\\\"\":69099,\"hurst\":69100,\"-hit\":69101,\".solve\":69102,\"ç®Ĺ\":69103,\"Ġundead\":69104,\"Ġwhims\":69105,\"ĠgetDefault\":69106,\"ĠNikki\":69107,\"assemble\":69108,\"Ġrelocated\":69109,\"-ret\":69110,\"Italian\":69111,\":System\":69112,\".scheduler\":69113,\"âĢľSo\":69114,\"Forbidden\":69115,\"AVOR\":69116,\"ziaÅĤ\":69117,\".Adam\":69118,\"ĉcanvas\":69119,\"Ġpartnering\":69120,\"Ġgymn\":69121,\"Ġmanic\":69122,\"Different\":69123,\"ĠÃ¥rhus\":69124,\"Ġfertile\":69125,\"clf\":69126,\"-čĊ\":69127,\".review\":69128,\"odable\":69129,\"ĠBounds\":69130,\"obao\":69131,\"ĠPaperback\":69132,\"Ġmodific\":69133,\"checkpoint\":69134,\"ĠAppBundle\":69135,\"Ġstabilize\":69136,\"ĠAudioClip\":69137,\"monthly\":69138,\".beh\":69139,\"Ġflor\":69140,\"Ġbonded\":69141,\"ĠWorkout\":69142,\"comings\":69143,\"Ġrabbits\":69144,\"ĠBAL\":69145,\"CCR\":69146,\"_vue\":69147,\"ĠLevitra\":69148,\"Ġlibertine\":69149,\"Ġchallenger\":69150,\"ĠVacation\":69151,\"ToF\":69152,\"}$/\":69153,\"_Draw\":69154,\"Ġfences\":69155,\"Ġdatasource\":69156,\"Ġpapel\":69157,\"slick\":69158,\"_mes\":69159,\"ĠUIStoryboardSegue\":69160,\"(Tag\":69161,\"Ġå¯¹\":69162,\"Ġ'-')\":69163,\"_CLASSES\":69164,\"(Render\":69165,\"ĉfwrite\":69166,\"UED\":69167,\"AES\":69168,\"(jsonPath\":69169,\"Ġslows\":69170,\">Description\":69171,\"Ġenrichment\":69172,\"Ġitemprop\":69173,\"ĠPoverty\":69174,\"Ġabsorbing\":69175,\"ĠPsycho\":69176,\"æ±Ł\":69177,\",.ĊĊ\":69178,\"Inverse\":69179,\"Ġadjud\":69180,\"igidBody\":69181,\"zioni\":69182,\"Ġ\\\"'.$\":69183,\"ä¸įåŃĺåľ¨\":69184,\"Thai\":69185,\"Ġslain\":69186,\"Ġbrutally\":69187,\"ĠPerspective\":69188,\"ĠRetirement\":69189,\"$rs\":69190,\"ĠserviceName\":69191,\"ĠìĪ\":69192,\"-processing\":69193,\"brands\":69194,\":error\":69195,\"(propertyName\":69196,\"ĠBoeh\":69197,\"/cm\":69198,\"/read\":69199,\"AMB\":69200,\"Ġrotations\":69201,\".workspace\":69202,\":y\":69203,\"Ġuphol\":69204,\"unky\":69205,\"ĠBrace\":69206,\"/meta\":69207,\"ĠBrave\":69208,\"acje\":69209,\"(UInt\":69210,\"Ġvieille\":69211,\"radi\":69212,\"_dyn\":69213,\"NW\":69214,\"loser\":69215,\"erusform\":69216,\"ĠBarton\":69217,\"Ġfares\":69218,\"ĠMuk\":69219,\"á»ĩu\":69220,\"ĠAudioSource\":69221,\"((_\":69222,\".Big\":69223,\".organization\":69224,\"ĠTrick\":69225,\"Ġblush\":69226,\"(TYPE\":69227,\"ĠRelativeLayout\":69228,\"lectron\":69229,\"]}\\\"\":69230,\"ĠZap\":69231,\"ĠTwelve\":69232,\":L\":69233,\"Ġstiffness\":69234,\"_HEL\":69235,\"Ġspep\":69236,\"(coder\":69237,\"Ġtamanho\":69238,\"Ġantioxidant\":69239,\"Ġhospitalized\":69240,\"GPC\":69241,\"Ġscrutin\":69242,\"á»ģn\":69243,\"ĠSZ\":69244,\"ĠJulius\":69245,\"ĠSabb\":69246,\"elor\":69247,\"(mc\":69248,\"éĩĮ\":69249,\"ĠPins\":69250,\"Ġmoderately\":69251,\"ĠKÃ¼\":69252,\"organizations\":69253,\"ĠSCORE\":69254,\"Ġscour\":69255,\"Ġchor\":69256,\"ĠUIEdgeInsets\":69257,\"Ġskulle\":69258,\"_operand\":69259,\".gstatic\":69260,\"/nginx\":69261,\"ĠgetWidth\":69262,\"Battery\":69263,\"ĠSetter\":69264,\"mA\":69265,\"(Resources\":69266,\"_playlist\":69267,\"Ġmango\":69268,\"ĠORD\":69269,\"ankind\":69270,\"eways\":69271,\"?),\":69272,\"ĠGLUT\":69273,\"Ġjuste\":69274,\"Ġpayer\":69275,\"(cam\":69276,\"ĠTeach\":69277,\"ĠFlux\":69278,\"Ġoutspoken\":69279,\"ĠStringUtil\":69280,\"ĠZhao\":69281,\".Helper\":69282,\"Ġestilo\":69283,\"ĠAnthrop\":69284,\"ĠGuards\":69285,\"VocÃª\":69286,\":['\":69287,\"ĉproduct\":69288,\"updatedAt\":69289,\"Ġinspires\":69290,\"qw\":69291,\"BLEM\":69292,\"akistan\":69293,\"ĠczÄĻ\":69294,\"-hearted\":69295,\"ĠCompensation\":69296,\"Ð¸Ð³\":69297,\"Ġcoma\":69298,\"ĠFiat\":69299,\"Ġxmlhttp\":69300,\"Ġreferrals\":69301,\"Ġspectators\":69302,\"ĠTos\":69303,\"isos\":69304,\"IMPLEMENT\":69305,\"Ġentrepreneurial\":69306,\"ĠScouts\":69307,\"ĠAlone\":69308,\"broker\":69309,\"ProductId\":69310,\"ĠKobe\":69311,\"Ġchaud\":69312,\"/features\":69313,\"Ġroommate\":69314,\"ĠProjection\":69315,\"avourites\":69316,\"_JOIN\":69317,\"ĠAVC\":69318,\"_phys\":69319,\"KeyPressed\":69320,\",<\":69321,\"Ġunreachable\":69322,\"ĠCitation\":69323,\"[channel\":69324,\"startswith\":69325,\"ĠJaguars\":69326,\".IsFalse\":69327,\"membership\":69328,\"Attention\":69329,\"Ġremodeling\":69330,\"ĠCindy\":69331,\"Ġclinically\":69332,\"Ġmillennials\":69333,\"ĠÎ´\":69334,\"Ġrfl\":69335,\"enet\":69336,\"Ġobrig\":69337,\"Ġvolunteering\":69338,\"Credits\":69339,\"ĉar\":69340,\"Ġresisting\":69341,\"ĠProdukt\":69342,\"===\\\"\":69343,\"Ġconect\":69344,\"Ġrij\":69345,\"Ġ×Ķ\":69346,\"ĠpublicKey\":69347,\"Ġoy\":69348,\"ĠButt\":69349,\"_misc\":69350,\"ĠBeste\":69351,\"ĠPLC\":69352,\"ĠæŁ¥\":69353,\"ĠBoxFit\":69354,\"\\\"\\\".\":69355,\"TestFixture\":69356,\"Ġchatter\":69357,\"Ġdoorway\":69358,\"ysize\":69359,\"ĠÑĩÑĤ\":69360,\"ICTURE\":69361,\"='../\":69362,\"shown\":69363,\"_weather\":69364,\"ĠLogManager\":69365,\"]}\\\"Ċ\":69366,\"Ġcolourful\":69367,\"Ġrumored\":69368,\"ĠlÃ¥\":69369,\"Ġprobs\":69370,\"ĉbuild\":69371,\"Ġå¦Ĥ\":69372,\".rev\":69373,\"Ġintercepted\":69374,\"Gay\":69375,\"ListComponent\":69376,\"ĠpiÃ¨\":69377,\"\\\"At\":69378,\"Ġagar\":69379,\"ĠGund\":69380,\"_AES\":69381,\"ìĥ\":69382,\"İĺìĿ´\":69383,\"Ġauthorised\":69384,\"ĠChall\":69385,\"_logout\":69386,\"cron\":69387,\"ategies\":69388,\"persistent\":69389,\"ĠAndAlso\":69390,\"usz\":69391,\"_restart\":69392,\"Ġdecid\":69393,\"zf\":69394,\"Ġpaginator\":69395,\"oller\":69396,\"ĠHG\":69397,\"Opaque\":69398,\"seau\":69399,\"ĠOMIT\":69400,\"ĠThickness\":69401,\"ĠAirways\":69402,\"_dem\":69403,\"ytic\":69404,\"Ġprotested\":69405,\"Ġuprising\":69406,\"Ġsuing\":69407,\"ĠShelby\":69408,\".energy\":69409,\"Ġallele\":69410,\"-big\":69411,\"StringBuilder\":69412,\"Ġsidelines\":69413,\"ĠTU\":69414,\"_ai\":69415,\".HORIZONTAL\":69416,\"Ġraging\":69417,\".toLocale\":69418,\".must\":69419,\"xFFF\":69420,\".nih\":69421,\"Ġ'{}'\":69422,\"ÙĪØ¯\":69423,\"Ġpulmonary\":69424,\"Ġåıĳ\":69425,\"ĠnÃºmeros\":69426,\"ĠNapoleon\":69427,\"_MethodInfo\":69428,\"lasting\":69429,\"Ġexposures\":69430,\"Ġembark\":69431,\"_udp\":69432,\"Kids\":69433,\"_CONNECTED\":69434,\"Ġweeds\":69435,\"POOL\":69436,\"Ġkrij\":69437,\"Ġnuis\":69438,\"JNIEXPORT\":69439,\"aaaaaaaa\":69440,\"Ġíı\":69441,\"ä»½\":69442,\"Ġreplen\":69443,\"ĠTrials\":69444,\"wash\":69445,\"rut\":69446,\"-before\":69447,\"_ATTACHMENT\":69448,\"UNT\":69449,\"\\\\Validation\":69450,\"Ton\":69451,\"Ġheadings\":69452,\"Probably\":69453,\"Ġfabricated\":69454,\"SocketAddress\":69455,\"Ġlettre\":69456,\")\\\">\":69457,\"Ġvaccinated\":69458,\":http\":69459,\"Ġcondol\":69460,\"shed\":69461,\"ĠSpiele\":69462,\"ãĥĶ\":69463,\"Deploy\":69464,\".Contract\":69465,\"-bo\":69466,\"#/\":69467,\"Ġinterception\":69468,\"Ġisbn\":69469,\"Ġmanners\":69470,\"/ac\":69471,\"ĉCheck\":69472,\"_fg\":69473,\"ĠendPoint\":69474,\"_weapon\":69475,\"Ġunintention\":69476,\"Ġquits\":69477,\"_MIC\":69478,\"apiro\":69479,\"Ġballoons\":69480,\"Ġgrads\":69481,\"married\":69482,\"Ġ<*>\":69483,\"Ġdistort\":69484,\"_MESSAGES\":69485,\"ĠPSA\":69486,\"_PD\":69487,\"alsex\":69488,\"ĠDialogue\":69489,\"Ġregistrations\":69490,\"ĠOrigins\":69491,\"Ġflank\":69492,\"?;ĊĊ\":69493,\";ĊĊĊĊĊ\":69494,\"]-$\":69495,\"ĠDess\":69496,\".StatusBadRequest\":69497,\"Ġinhabited\":69498,\"Ġgilt\":69499,\"ĠSTDCALL\":69500,\".theta\":69501,\"$$$$\":69502,\"iclass\":69503,\"Apart\":69504,\".listBox\":69505,\"ĠBelarus\":69506,\"Ġdenen\":69507,\"ĠSussex\":69508,\"ĉdel\":69509,\"_EC\":69510,\"nearest\":69511,\"\\\\Order\":69512,\"Packages\":69513,\"formerly\":69514,\")ï¼Į\":69515,\"è´£\":69516,\"Sexy\":69517,\"Ġhorrors\":69518,\"ROADCAST\":69519,\"Approx\":69520,\"Desk\":69521,\"AMED\":69522,\".Normalize\":69523,\"_published\":69524,\"ĠDeborah\":69525,\"ç§ĳ\":69526,\"Ġpounding\":69527,\"ĠEsper\":69528,\"ĠDancing\":69529,\"ĠLOOP\":69530,\"ĠRoyals\":69531,\"Ġinsure\":69532,\"ĠInvestors\":69533,\"Ġtheological\":69534,\"Appointment\":69535,\"Ġcategorical\":69536,\"Ġcran\":69537,\"Validity\":69538,\"Ġresponders\":69539,\"Ġ()čĊ\":69540,\"epad\":69541,\"BITS\":69542,\"ĠLambert\":69543,\"summ\":69544,\"acidad\":69545,\"ĠloggedIn\":69546,\"=W\":69547,\".Localization\":69548,\"rido\":69549,\"'\\\")Ċ\":69550,\"ĠWebView\":69551,\"loth\":69552,\"Ġteaser\":69553,\"ĠCand\":69554,\"Ġepilepsy\":69555,\"Increase\":69556,\"ivityManager\":69557,\"entrant\":69558,\"Telefono\":69559,\".currentState\":69560,\"ĠNoel\":69561,\"ĠĠĠĠĠĠĠĠĠĠĠĠĉĉ\":69562,\"Ġexhaustion\":69563,\"elian\":69564,\"Ġcoveted\":69565,\"-production\":69566,\"(stdin\":69567,\"Ġpreferable\":69568,\"Ġoffending\":69569,\"(commit\":69570,\"ĉal\":69571,\"Ġrelocate\":69572,\"Ġanomal\":69573,\"ĠDiseases\":69574,\"ĠForg\":69575,\"ĠWIFI\":69576,\"ĠKilling\":69577,\"qv\":69578,\"Ġfmap\":69579,\"Ġllevar\":69580,\"titre\":69581,\".emp\":69582,\",$_\":69583,\"avr\":69584,\"CanBe\":69585,\"_ma\":69586,\"ĠHawkins\":69587,\"_ROUT\":69588,\"ĠloadImage\":69589,\"ĠWah\":69590,\"ĠDems\":69591,\"Ġindentation\":69592,\"precation\":69593,\"Ġæĸĩä»¶\":69594,\"ĠBudapest\":69595,\"Ġutc\":69596,\"(hours\":69597,\"Ġtranny\":69598,\"Ans\":69599,\"zyÄĩ\":69600,\".vehicle\":69601,\"Coins\":69602,\"ĠBraun\":69603,\"ĉResponse\":69604,\"Ġvrij\":69605,\"Ġstrangely\":69606,\"ĠFasc\":69607,\"\\\\Session\":69608,\"MouseListener\":69609,\"ĠRolls\":69610,\"áº§n\":69611,\".grpc\":69612,\"IntegerField\":69613,\"ĉafx\":69614,\"DockControl\":69615,\"%\\\\\":69616,\"%;\\\"\":69617,\"Ġgigg\":69618,\"Ġborrower\":69619,\"Ġdisponibles\":69620,\"_RECT\":69621,\"ĠThin\":69622,\"Ġpearl\":69623,\"xFB\":69624,\"Ġripple\":69625,\"ĠkHz\":69626,\".acquire\":69627,\"bios\":69628,\"tableFuture\":69629,\"/antlr\":69630,\"oracle\":69631,\"ĠAREA\":69632,\"Ġintensely\":69633,\"Ġprotobuf\":69634,\"ĠLENG\":69635,\"ĠHeadquarters\":69636,\"athed\":69637,\"Mind\":69638,\"iniz\":69639,\"ĉPath\":69640,\"XMLLoader\":69641,\"Ġallocations\":69642,\".slot\":69643,\"ProcAddress\":69644,\"ĠroleId\":69645,\";';Ċ\":69646,\"ĠBREAK\":69647,\"ĠPerforming\":69648,\".OrdinalIgnoreCase\":69649,\"-gl\":69650,\":h\":69651,\"Ġdownloadable\":69652,\"ĠSubscriber\":69653,\"anse\":69654,\"Ġcharacterize\":69655,\"Ġshrugged\":69656,\"Ġscp\":69657,\"Ġgusta\":69658,\"Ġmetall\":69659,\"Ġlaboratories\":69660,\"ĠXin\":69661,\"ĠMotorcycle\":69662,\"Ġeget\":69663,\"Ġfinanced\":69664,\"ĠMODIFY\":69665,\"*R\":69666,\"Ai\":69667,\"Ġextremism\":69668,\"ĠHalifax\":69669,\"Ġvamos\":69670,\"$num\":69671,\"Ġimpart\":69672,\"brick\":69673,\"Ġç±»\":69674,\"Ġfuera\":69675,\"ĠROLE\":69676,\".Concurrent\":69677,\"_OPERATOR\":69678,\"Ġcynical\":69679,\"ĠRegina\":69680,\"getError\":69681,\"Ø£\":69682,\"bsub\":69683,\"Japgolly\":69684,\"Ġinhibitor\":69685,\"Justice\":69686,\"ãħ\":69687,\"Nevertheless\":69688,\"-sem\":69689,\".ogg\":69690,\"requent\":69691,\"Ġnosso\":69692,\"Hair\":69693,\".Library\":69694,\"mdir\":69695,\"Ġhari\":69696,\"ĠTara\":69697,\"ĠPorto\":69698,\"netinet\":69699,\"Ġalliances\":69700,\"ellschaft\":69701,\"_Surface\":69702,\"ĉView\":69703,\"aturdays\":69704,\"Ġpopcorn\":69705,\"_PARSE\":69706,\"ĠRipple\":69707,\"Ġphantom\":69708,\"Ġmondo\":69709,\".createClass\":69710,\"ĠKoreans\":69711,\"Ġfase\":69712,\"ĠWochen\":69713,\"ĠEquip\":69714,\"-eight\":69715,\"ĠStatements\":69716,\"Ġadapting\":69717,\"Precio\":69718,\"ĠCure\":69719,\"Ġcambiar\":69720,\"æ°ĳ\":69721,\"Ġhexadecimal\":69722,\"spiracy\":69723,\"bilt\":69724,\"ĠYug\":69725,\"Ġ--->\":69726,\"ĠPPC\":69727,\"isz\":69728,\"akeFromNib\":69729,\"ĠDisp\":69730,\"ĠAthletics\":69731,\"Ġnightclub\":69732,\"GOOD\":69733,\".setGeometry\":69734,\"+[\":69735,\"/send\":69736,\"Ġbinaries\":69737,\"ĠrÃ¡p\":69738,\":req\":69739,\"-consuming\":69740,\"ertime\":69741,\"UPDATED\":69742,\"_nullable\":69743,\"VIN\":69744,\"ulia\":69745,\"cyan\":69746,\"Ġmisunderstanding\":69747,\"orical\":69748,\"degrees\":69749,\"Leading\":69750,\".AR\":69751,\"ickest\":69752,\"Nuevo\":69753,\"uforia\":69754,\"Ġgoodies\":69755,\"Ġfores\":69756,\"()<<\\\"\":69757,\"ademic\":69758,\"ActionCreators\":69759,\"servername\":69760,\"(nt\":69761,\"dbContext\":69762,\"Ġairborne\":69763,\"Ġexhibitions\":69764,\"cele\":69765,\"Ġtela\":69766,\"<Movie\":69767,\"('{}\":69768,\"Explanation\":69769,\"ĠhObject\":69770,\"Ġbearer\":69771,\"ensibly\":69772,\"nip\":69773,\"ĠJerome\":69774,\"ĠCZ\":69775,\"ĠdateFormatter\":69776,\"Ã©cial\":69777,\"SetName\":69778,\"ouce\":69779,\"Ġregress\":69780,\"&C\":69781,\"()\\\">\":69782,\".setPreferredSize\":69783,\"ĠMID\":69784,\"ĠAless\":69785,\"Ġhorsepower\":69786,\"Ġatm\":69787,\"ĠPackaging\":69788,\"Ġciphertext\":69789,\"RequestMethod\":69790,\"Ġbeiden\":69791,\"è£\":69792,\"ĠPOW\":69793,\".WriteHeader\":69794,\"director\":69795,\"-but\":69796,\"ãģłãģķãģĦ\":69797,\"incer\":69798,\"_dn\":69799,\"!!!!!\":69800,\"Ġmanufactures\":69801,\".TextUtils\":69802,\"Ġconsciously\":69803,\"Ġbounced\":69804,\"culture\":69805,\"ĠSpar\":69806,\"ĠPiper\":69807,\".press\":69808,\"-owner\":69809,\"Ġevaluator\":69810,\"ĠSTREAM\":69811,\".PictureBoxSizeMode\":69812,\"Ġsugars\":69813,\"ScreenWidth\":69814,\"ĠnextState\":69815,\"Ġivory\":69816,\"Ġbrunch\":69817,\"density\":69818,\"_OW\":69819,\"ĠCoronavirus\":69820,\"ĠCFR\":69821,\"bak\":69822,\"\\\\Category\":69823,\"æķ°ç»Ħ\":69824,\"Ġinvokevirtual\":69825,\"}()Ċ\":69826,\"Ġsujet\":69827,\"-marker\":69828,\"isdigit\":69829,\"ĠMobil\":69830,\"ĠJsonRequestBehavior\":69831,\"_REMOTE\":69832,\".existsSync\":69833,\"Ġriches\":69834,\".presenter\":69835,\"ĠglColor\":69836,\"Ġhanya\":69837,\"Ġfortress\":69838,\"Ġflashed\":69839,\"viz\":69840,\"requently\":69841,\"buat\":69842,\"$con\":69843,\">|\":69844,\".Func\":69845,\"Ġhumorous\":69846,\"uem\":69847,\".ZERO\":69848,\"ĠSTL\":69849,\"ĠBuk\":69850,\"/sample\":69851,\"ĠGros\":69852,\"Recipes\":69853,\"Ġinflated\":69854,\"Ġswung\":69855,\":F\":69856,\"Facing\":69857,\".Theme\":69858,\"Ð½Ð¸Ðº\":69859,\"Ġsplendid\":69860,\"ĠrequestId\":69861,\".CenterScreen\":69862,\"/autoload\":69863,\"embedded\":69864,\"_depart\":69865,\"ĠPorts\":69866,\"à¹ĥ\":69867,\"Ð°Ð¹Ð´\":69868,\"discussion\":69869,\"_consum\":69870,\"Ġscouts\":69871,\"Ġcolabor\":69872,\".Stage\":69873,\".nano\":69874,\"eldorf\":69875,\"Ġgemacht\":69876,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":69877,\"Ġpolicymakers\":69878,\"_PKT\":69879,\",Th\":69880,\"oky\":69881,\"_UID\":69882,\"Ping\":69883,\"Ġorchest\":69884,\"Ġoptics\":69885,\"uhan\":69886,\"ĠXOR\":69887,\"ĠespaÃ±ol\":69888,\"ĠAdidas\":69889,\"rng\":69890,\"mans\":69891,\".vstack\":69892,\"Ġgetaway\":69893,\"Ġhierarchical\":69894,\"anoia\":69895,\"ĠBitmapFactory\":69896,\"realm\":69897,\"ĉap\":69898,\"_apps\":69899,\"-divider\":69900,\".drawer\":69901,\"ĠHARD\":69902,\"'];?>Ċ\":69903,\"-packed\":69904,\"æ²»\":69905,\"_STRUCTURE\":69906,\"[Y\":69907,\"iParam\":69908,\"(eq\":69909,\"Ġencompasses\":69910,\"Ġ\\\\ĊĊ\":69911,\"->[\":69912,\"&utm\":69913,\"groupon\":69914,\"strate\":69915,\"DY\":69916,\"omorphic\":69917,\"':[\":69918,\"Ġgravitational\":69919,\"ĠMicha\":69920,\"ĠTencent\":69921,\"Ġcoached\":69922,\"ì¶ľ\":69923,\"ÑĥÐ¼ÐµÐ½ÑĤ\":69924,\"/mobile\":69925,\"MouseDown\":69926,\"bud\":69927,\"ĠYas\":69928,\"ĠProviders\":69929,\"NZ\":69930,\"ĉreport\":69931,\"errmsg\":69932,\"ĠimagePath\":69933,\"acterial\":69934,\"ĠManga\":69935,\"wicklung\":69936,\"(usuario\":69937,\"\\\"));čĊčĊ\":69938,\"/***\":69939,\"Ġorganise\":69940,\"Indexed\":69941,\"_QUAL\":69942,\"(PyObject\":69943,\"Ġsurrendered\":69944,\"POCH\":69945,\"ĠNOTES\":69946,\"\\\\\\\\\\\"\":69947,\"-job\":69948,\"Ġseventy\":69949,\"####Ċ\":69950,\"ĠManor\":69951,\"Ġdownright\":69952,\"Ġtimeframe\":69953,\"insurance\":69954,\"checker\":69955,\"ĠSECRET\":69956,\"Ġechoes\":69957,\"ĠCarmen\":69958,\".setHorizontalAlignment\":69959,\"ĠisChecked\":69960,\"ĠTOR\":69961,\"_nn\":69962,\"('(\":69963,\"FetchRequest\":69964,\"ĠPrinted\":69965,\"Fluid\":69966,\"ĠSTACK\":69967,\"GES\":69968,\"aigned\":69969,\"igor\":69970,\".Unknown\":69971,\"CBC\":69972,\"ĠCarlson\":69973,\".URI\":69974,\"Ġplight\":69975,\"/start\":69976,\"ĠPersonnel\":69977,\"ĠPREFIX\":69978,\",**\":69979,\"Ġlimite\":69980,\"_heat\":69981,\"%ï¼Į\":69982,\"ĠDonne\":69983,\"getNode\":69984,\"ĠScientology\":69985,\"Ġcomet\":69986,\"Ġwenig\":69987,\"Aside\":69988,\"ĠMPEG\":69989,\"'?\":69990,\"variably\":69991,\".endDate\":69992,\"Ġuncont\":69993,\"ĠScores\":69994,\"ĠLoginForm\":69995,\".generated\":69996,\",ch\":69997,\"-mar\":69998,\"ĠNed\":69999,\"ĠeventId\":70000,\"+p\":70001,\"ĠSIN\":70002,\"/reset\":70003,\".REACT\":70004,\"ĠMessi\":70005,\"_RANK\":70006,\".writeFile\":70007,\"Ġcripp\":70008,\"esthetic\":70009,\"ERSIST\":70010,\"Ġreimbursement\":70011,\"CurrentValue\":70012,\"Ġunin\":70013,\"DownLatch\":70014,\"ĠpaddingRight\":70015,\"Ġstocked\":70016,\"/'.\":70017,\"Ġrepayment\":70018,\"trak\":70019,\"/backend\":70020,\"ĠÐ¸Ð·Ð¼ÐµÐ½\":70021,\"CSR\":70022,\"Ġpreventive\":70023,\"Ġpantalla\":70024,\"_trim\":70025,\"Pedido\":70026,\"hospital\":70027,\"Ġmanageable\":70028,\"routeParams\":70029,\"textures\":70030,\"......ĊĊ\":70031,\"ĠsÃ©lection\":70032,\"NameValuePair\":70033,\"Ġpollut\":70034,\"Modes\":70035,\"ĠLaud\":70036,\"jay\":70037,\"ĠUrs\":70038,\"Ġsigner\":70039,\"ĠJJ\":70040,\"ĠCherokee\":70041,\"_EXISTS\":70042,\"Ġdwar\":70043,\"Ġ($('#\":70044,\"Ġreef\":70045,\">{$\":70046,\"ĠBaylor\":70047,\"ĠModelState\":70048,\"-_\":70049,\"ĠStructures\":70050,\"Ġsouvent\":70051,\"Specify\":70052,\"(pipe\":70053,\"Ġfracking\":70054,\"ĠGPA\":70055,\"Ġbele\":70056,\"ĉĉĉĉĉĉĉĠĠĠ\":70057,\"ĠMinority\":70058,\"Ġtud\":70059,\"Ġopenness\":70060,\"ĠIllustrated\":70061,\"Ġoxidation\":70062,\"ĠNK\":70063,\"ĉUpdate\":70064,\"ĠEMS\":70065,\"ĠTeddy\":70066,\"Ġgenerals\":70067,\"ĉMat\":70068,\"Ġradios\":70069,\"ĠAntique\":70070,\"conomy\":70071,\"ĠSquadron\":70072,\")','\":70073,\"å£°\":70074,\"Ġyoure\":70075,\"ĠMainPage\":70076,\"Ġbehaviours\":70077,\"enght\":70078,\"(@\\\"%@\\\",\":70079,\"Ġtestcase\":70080,\"ĠCompilation\":70081,\"Ġflavours\":70082,\"ĠExtend\":70083,\"illator\":70084,\"Ġcoh\":70085,\"Ġspline\":70086,\"ĠKG\":70087,\"-pay\":70088,\"Ġcommunism\":70089,\"ĠBusinesses\":70090,\"ocking\":70091,\".MaxLength\":70092,\"assandra\":70093,\"quiring\":70094,\"adden\":70095,\"ĠJeb\":70096,\"_fault\":70097,\"[file\":70098,\"Ġprominence\":70099,\"disciplinary\":70100,\"âĢĶthey\":70101,\"_extent\":70102,\"ĠVIC\":70103,\"Ġentails\":70104,\".partner\":70105,\"Ġhippoc\":70106,\"League\":70107,\"çĶ·\":70108,\"wipe\":70109,\"-spinner\":70110,\"Ġsalute\":70111,\"ĠSurgical\":70112,\"(outputs\":70113,\"worked\":70114,\"[strlen\":70115,\"appointed\":70116,\"ĠHeg\":70117,\"ĠACPI\":70118,\"([^\":70119,\"uala\":70120,\"_tol\":70121,\"ĠRit\":70122,\".Payment\":70123,\"kowski\":70124,\"Ġwalmart\":70125,\"requirements\":70126,\"ĠFINSEQ\":70127,\"_BACKGROUND\":70128,\"ĠOsborne\":70129,\"(errorMessage\":70130,\"Reporting\":70131,\"Ġauctions\":70132,\"Ġcombos\":70133,\"ĠNoticed\":70134,\"_oct\":70135,\"Ġprimero\":70136,\"taire\":70137,\"_hr\":70138,\"ĠÐ¼Ð¾Ð´\":70139,\"Ġcontradictory\":70140,\"=\\\"@\":70141,\"achines\":70142,\"(optarg\":70143,\"ĠPenguin\":70144,\"ĠAbbas\":70145,\"Ġsublime\":70146,\"Ġpageable\":70147,\"ĠDefensive\":70148,\"Ġdistinctly\":70149,\"ĠAutomatically\":70150,\"Understanding\":70151,\"EqualityComparer\":70152,\"gota\":70153,\"Ġ\\\"::\":70154,\"Ġpulver\":70155,\"ĠBattles\":70156,\"Ġunparalleled\":70157,\"TCHA\":70158,\"Ġconstrued\":70159,\"-aff\":70160,\"Ġprecursor\":70161,\"-lfs\":70162,\"Ġmaduras\":70163,\"ĠDaisy\":70164,\"ĠArbeits\":70165,\".Management\":70166,\"ĉIn\":70167,\"Ġrobes\":70168,\"ĠspÃ©c\":70169,\"âĢľ(\":70170,\"Ġmaternity\":70171,\"extent\":70172,\"ĠSpacer\":70173,\"DidAppear\":70174,\"ĉus\":70175,\".getRequestDispatcher\":70176,\"(cols\":70177,\"Ġplummet\":70178,\"ìħ\":70179,\"Ġ{ĊĊĊĊ\":70180,\"Ã©rica\":70181,\"ĠSizes\":70182,\".enum\":70183,\".Highlight\":70184,\"Ġ!!}</\":70185,\"ATTERY\":70186,\"ĠSoros\":70187,\"GLfloat\":70188,\"ãĤĦ\":70189,\"ĠJennings\":70190,\"??ĊĊ\":70191,\"ĠRomeo\":70192,\"Ġ?>ĊĊĊ\":70193,\"Wenn\":70194,\"Ġclimax\":70195,\"Ġcrem\":70196,\"_that\":70197,\"[âĢ¦\":70198,\"_domains\":70199,\"_REPLY\":70200,\"Ġcompleta\":70201,\"VEST\":70202,\"_particle\":70203,\"Ġsop\":70204,\"Ġfatalities\":70205,\"implify\":70206,\"ĠSKF\":70207,\"Ġinfusion\":70208,\"ĠJavier\":70209,\"Ġballet\":70210,\"Ġamigo\":70211,\".want\":70212,\"Ġcollagen\":70213,\"ĠLawyer\":70214,\".Statement\":70215,\".rt\":70216,\"baar\":70217,\"EndPoint\":70218,\"ĠBek\":70219,\"SHIP\":70220,\"Ġpatriarch\":70221,\"ĠAunt\":70222,\"_TM\":70223,\"ĠmÃŃn\":70224,\"Ġmastered\":70225,\"WXYZ\":70226,\"Ġespos\":70227,\"=logging\":70228,\"Ġrighteousness\":70229,\"torrent\":70230,\"Ġbst\":70231,\"_CHAIN\":70232,\"Ġoutskirts\":70233,\"(rotation\":70234,\"Ġ'.')\":70235,\"igrants\":70236,\"+lsi\":70237,\"ĠCCTV\":70238,\"_PHASE\":70239,\".azure\":70240,\"_Process\":70241,\"vae\":70242,\"ĠTropical\":70243,\"ĠAnkara\":70244,\"imageView\":70245,\"_RUNNING\":70246,\"Ġ*)__\":70247,\"áº¿n\":70248,\"(cli\":70249,\"scatter\":70250,\"Ġsche\":70251,\"Registrar\":70252,\"Ġairing\":70253,\"Ġpyplot\":70254,\"isiÃ³n\":70255,\"/customer\":70256,\"Ġsimplement\":70257,\"Ġclassy\":70258,\"ĠDWC\":70259,\"ĠBashar\":70260,\"ĠDEVELO\":70261,\"ĠVick\":70262,\"avail\":70263,\"ĠHÃ¶\":70264,\"_extend\":70265,\"drFc\":70266,\".isNotBlank\":70267,\"Ġplais\":70268,\"|}Ċ\":70269,\"Ġpornofil\":70270,\"labs\":70271,\"Ġhaus\":70272,\"Ġoriginating\":70273,\"Ġsurrounds\":70274,\"ĠQUAL\":70275,\"meg\":70276,\"/logger\":70277,\"[obj\":70278,\"Ġirresponsible\":70279,\"ĠPublicKey\":70280,\"HONE\":70281,\":'/\":70282,\"ibox\":70283,\"ĠFVector\":70284,\"|{Ċ\":70285,\"ataloader\":70286,\"hawks\":70287,\"HDR\":70288,\"Ġescalation\":70289,\"ĠPodsDummy\":70290,\"elite\":70291,\"Ġpresup\":70292,\"Cached\":70293,\">G\":70294,\".optimizer\":70295,\"ĠVisible\":70296,\"´Ģ\":70297,\"Ġnen\":70298,\"Ġpcs\":70299,\"ĠIdle\":70300,\"[Any\":70301,\"Ġkeyboards\":70302,\"ĠCOMPONENT\":70303,\"Ġtitanium\":70304,\"(mut\":70305,\"ĠLedger\":70306,\"Ġprosperous\":70307,\"etrofit\":70308,\"_LL\":70309,\"_patient\":70310,\"Ġpdata\":70311,\"Ġkontakte\":70312,\"Swipe\":70313,\"Ġcheerful\":70314,\"ĠHonduras\":70315,\"\\\"][$\":70316,\"Ġhemorrh\":70317,\"\\\":\\\"+\":70318,\"Ġleasing\":70319,\"Ġinstalls\":70320,\"ĠPax\":70321,\"ĠLogistics\":70322,\"Ġkinetic\":70323,\"ĠPhon\":70324,\"_movement\":70325,\"ĉbytes\":70326,\"Ġcinco\":70327,\"ĠMadness\":70328,\"\\\")+\":70329,\"ĠJE\":70330,\"_ij\":70331,\"SceneManager\":70332,\"ĠBust\":70333,\"ptest\":70334,\"aea\":70335,\"Ġbesser\":70336,\"ÃŃg\":70337,\"Ð´Ð¸Ð½\":70338,\"(tasks\":70339,\"(\\\"(\\\"\":70340,\"setType\":70341,\"(outfile\":70342,\"ĉreset\":70343,\"ĠARC\":70344,\"ĠmÃºsica\":70345,\"ĠShelf\":70346,\"ĠminY\":70347,\"pch\":70348,\"Ġweiber\":70349,\"issor\":70350,\"Ġtrouve\":70351,\"ĉButton\":70352,\"Ġregenerated\":70353,\"Å£i\":70354,\"imachinery\":70355,\"blocking\":70356,\".dataTables\":70357,\"_frac\":70358,\"ĠAdvantage\":70359,\".visitMethod\":70360,\"éĩįæĸ°\":70361,\"Ġextrapol\":70362,\"Ġteasing\":70363,\"ĠHitch\":70364,\"ĠGeek\":70365,\"ESCO\":70366,\"Ġwich\":70367,\"ĉax\":70368,\"_decor\":70369,\"ĠscreenWidth\":70370,\"ĠSophia\":70371,\"Forgot\":70372,\".uni\":70373,\"ĠVenture\":70374,\"_collision\":70375,\"Ġlawmaker\":70376,\"(Edit\":70377,\"blers\":70378,\"ĠgetNext\":70379,\"âĢĶyou\":70380,\"MediaPlayer\":70381,\"ĠHorde\":70382,\"ĠCongressman\":70383,\"observations\":70384,\"ĉproperty\":70385,\"Ġ<--\":70386,\"CreatedAt\":70387,\"ubyte\":70388,\"Ġquarantine\":70389,\"Ġdistressed\":70390,\"_APB\":70391,\"ĠGoodman\":70392,\"ãĤ«\":70393,\"Ġrecomend\":70394,\"_PRINTF\":70395,\"DONE\":70396,\"Bindable\":70397,\"rstrip\":70398,\"centaje\":70399,\"ĠUnexpected\":70400,\"ĠSCHOOL\":70401,\"ĠProfessionals\":70402,\"ĠGPUs\":70403,\"Lesson\":70404,\"Exclusive\":70405,\"Ġatrav\":70406,\"ĠDank\":70407,\"ĠLawyers\":70408,\"ĠWalton\":70409,\">[]\":70410,\"Ġaloud\":70411,\"=\\\"../../../\":70412,\"Ġdebating\":70413,\"ĠAVG\":70414,\"_VOL\":70415,\"/cgi\":70416,\".deg\":70417,\":g\":70418,\".Infof\":70419,\"MeasureSpec\":70420,\".song\":70421,\"mtree\":70422,\"ulls\":70423,\"Jordan\":70424,\"ĠCovers\":70425,\"Ġattributable\":70426,\"Ġjedis\":70427,\"iatrics\":70428,\"Ġrotterdam\":70429,\"Ġmeld\":70430,\"ĠContentType\":70431,\"Ġmantle\":70432,\"Ġalice\":70433,\"_duplicate\":70434,\"/Internal\":70435,\"Ġfilesize\":70436,\"ĉfire\":70437,\"rese\":70438,\"ondere\":70439,\"Ġfamiliarity\":70440,\"ĠCrest\":70441,\"Ġkarma\":70442,\"Ġtorino\":70443,\"Ġmesa\":70444,\"/temp\":70445,\"Ġchir\":70446,\"ĠOverflow\":70447,\"Ġtenemos\":70448,\"unik\":70449,\"NEXT\":70450,\"Alle\":70451,\"Ġnxt\":70452,\"Mart\":70453,\"Ġatl\":70454,\"Ġperiodo\":70455,\"_you\":70456,\"Ġ})).\":70457,\"intestinal\":70458,\".AdapterView\":70459,\"Ġhesitant\":70460,\"Ġcomparatively\":70461,\".UInt\":70462,\"(viewModel\":70463,\"Ġsangat\":70464,\"ĠResponsive\":70465,\"ĠZack\":70466,\"âħ\":70467,\"JAVA\":70468,\"ĠFuller\":70469,\"ĠâĿ¤\":70470,\".Consumer\":70471,\"Ġank\":70472,\"Ġreactors\":70473,\"fuck\":70474,\"_rat\":70475,\"ĠsessionFactory\":70476,\"_backward\":70477,\"Ġscrambled\":70478,\"ĉth\":70479,\"Ġinsensitive\":70480,\"Ġchamps\":70481,\"Ġnginx\":70482,\"Ġconhec\":70483,\"ĠJasper\":70484,\".fm\":70485,\"StrictEqual\":70486,\"achsen\":70487,\"-Nov\":70488,\"lassen\":70489,\".integration\":70490,\"(lbl\":70491,\"Compose\":70492,\"ĠFon\":70493,\"Ãļ\":70494,\"Gratis\":70495,\"ĠLime\":70496,\"ĠAdapterView\":70497,\"Ġpoisoned\":70498,\"anchors\":70499,\"è®¾è®¡\":70500,\"']?>\\\"\":70501,\"Ġprocur\":70502,\"Italy\":70503,\".MONTH\":70504,\"ĠLUA\":70505,\"ĠLithuania\":70506,\"ĠHeads\":70507,\"_CHUNK\":70508,\"ĠPUSH\":70509,\"AspectRatio\":70510,\"Ġweg\":70511,\"Ġvids\":70512,\"ĠWein\":70513,\"ĉINT\":70514,\"sessionId\":70515,\"Industry\":70516,\"Ġdenounced\":70517,\"JKLM\":70518,\"ĠVanessa\":70519,\".Identifier\":70520,\"propri\":70521,\"ĠÐ¸Ð³\":70522,\"ĠtÃ©cn\":70523,\"Ġmosaic\":70524,\"StreamReader\":70525,\"-Th\":70526,\"forth\":70527,\"Ġadherence\":70528,\"bate\":70529,\"Ġknights\":70530,\"sounds\":70531,\"Ġsalle\":70532,\"OMET\":70533,\"ãĤ¹ãĥĪ\":70534,\"-tm\":70535,\"ĠRhe\":70536,\".FileOutputStream\":70537,\"åĪĨç±»\":70538,\"ĠENG\":70539,\"holiday\":70540,\"ĠCongratulations\":70541,\")(Ċ\":70542,\"Ġaggregates\":70543,\"HOOK\":70544,\"ewire\":70545,\"Senator\":70546,\"Ġembeddings\":70547,\"epy\":70548,\"(COM\":70549,\"Ġrobber\":70550,\"Ã¤ter\":70551,\"wang\":70552,\"_teacher\":70553,\"Ġresentment\":70554,\"Ġlettuce\":70555,\"erreur\":70556,\"(ic\":70557,\"ĠTactical\":70558,\"ĠContracts\":70559,\"ĠmÃ¦nd\":70560,\"Ġsitios\":70561,\"Ġbastante\":70562,\"Ġnuevos\":70563,\"ĉNdrFc\":70564,\"ĠprivateKey\":70565,\"ucch\":70566,\"MMdd\":70567,\"Ġè¾ĵåĩº\":70568,\"umba\":70569,\"@foreach\":70570,\":\\\");ĊĊ\":70571,\"Ġslippery\":70572,\"ĠKeystone\":70573,\"Ġpioneering\":70574,\"_triangle\":70575,\"(\\\"Ċ\":70576,\"ĉĉĉĉĉĉĉĉĠĠ\":70577,\"ĠIntervention\":70578,\"SCI\":70579,\"ĠcJSON\":70580,\"Ġterminating\":70581,\"ë¹Ħ\":70582,\"Ġbabys\":70583,\"Subset\":70584,\"Ġë¡\":70585,\"Ġseulement\":70586,\"Ġmuestra\":70587,\"Entre\":70588,\"ä»¥ä¸Ĭ\":70589,\"ngo\":70590,\"\\\"bytes\":70591,\"QRST\":70592,\"Ġypos\":70593,\"persona\":70594,\"ĠDeploy\":70595,\"cee\":70596,\"Ġà®\":70597,\".goal\":70598,\"Ġhabitats\":70599,\"ĠisAdmin\":70600,\"Ġexploiting\":70601,\"Ġventil\":70602,\"ĠBalls\":70603,\"Ø§Ø¨\":70604,\"Ġmindfulness\":70605,\"(kwargs\":70606,\"Ġresembling\":70607,\"Ġchoir\":70608,\"ĠonBackPressed\":70609,\"ĠSECURITY\":70610,\"/gtest\":70611,\"Ġjustices\":70612,\"ĠintegerValue\":70613,\"blah\":70614,\"ĠAim\":70615,\"_finalize\":70616,\"keh\":70617,\"ĠComplexity\":70618,\"Ġaugust\":70619,\"getElementsByTagName\":70620,\"Ġpreach\":70621,\"Ġpronunciation\":70622,\"ĠTrash\":70623,\"-percent\":70624,\"_PRIV\":70625,\"ĠHunts\":70626,\"ĠCurse\":70627,\"uellen\":70628,\"Ġheavyweight\":70629,\"Xi\":70630,\"ĉselected\":70631,\"ĠMcCoy\":70632,\"å¼Ĥå¸¸\":70633,\"|=Ċ\":70634,\"ĠBattlefield\":70635,\"ItemImage\":70636,\"Ġdeductions\":70637,\"ĠElemental\":70638,\"());//\":70639,\"ĠBurk\":70640,\"})čĊčĊ\":70641,\"swift\":70642,\"/function\":70643,\"Usually\":70644,\"_St\":70645,\"_feats\":70646,\"ĠIsValid\":70647,\"Ġzad\":70648,\"ImageContext\":70649,\"Ġclassname\":70650,\"Ġdonner\":70651,\"Ġ-->ĊĊĊ\":70652,\"Ġmotorcycles\":70653,\"+'/'+\":70654,\"ĠsetBackground\":70655,\"\\\\CMS\":70656,\".AllArgsConstructor\":70657,\"ĠLexington\":70658,\".examples\":70659,\"ĠPurs\":70660,\"PushMatrix\":70661,\"Ġ==============================================================\":70662,\".addTarget\":70663,\"pora\":70664,\"Fullscreen\":70665,\"Ġgoof\":70666,\"hlen\":70667,\"Ã¤ge\":70668,\"ĠCURL\":70669,\"ĠInteresting\":70670,\"Ġretrieves\":70671,\"_Obj\":70672,\"inness\":70673,\"-----ĊĊ\":70674,\".tsv\":70675,\"(IM\":70676,\"ĠBraves\":70677,\"_ISR\":70678,\"osti\":70679,\"á»ĵ\":70680,\"ĠExterior\":70681,\"ĠCourtney\":70682,\"Ġresidues\":70683,\"Tier\":70684,\".*;čĊčĊ\":70685,\":black\":70686,\"webView\":70687,\"\\\"path\":70688,\"Ġmasa\":70689,\"]!='\":70690,\"ĠMatching\":70691,\"dur\":70692,\"Jvm\":70693,\"=context\":70694,\"_RING\":70695,\"Ġproponents\":70696,\"ĠQStringLiteral\":70697,\"Ġinflate\":70698,\"<Float\":70699,\"ĠDonovan\":70700,\"(IO\":70701,\"HORT\":70702,\"Ġdisagreed\":70703,\"isky\":70704,\"asking\":70705,\"_VEC\":70706,\"HASH\":70707,\"Ġmaths\":70708,\"ĠLastly\":70709,\"Ġdepressing\":70710,\".estado\":70711,\"Ġhalo\":70712,\"_ble\":70713,\"ĠGabri\":70714,\"<TResult\":70715,\"Ġtroop\":70716,\"Ġenums\":70717,\"ĠSERIAL\":70718,\"numerusform\":70719,\"ĠChic\":70720,\"-exec\":70721,\"Ġbacklog\":70722,\"ĠBravo\":70723,\"PopMatrix\":70724,\"ĠBrut\":70725,\"Ġbloque\":70726,\"Ġjunit\":70727,\"ĠWhilst\":70728,\"ÑĨÐ¸Ñı\":70729,\"few\":70730,\"¬ģ\":70731,\"ĠVariety\":70732,\"ĠPolitico\":70733,\"exemple\":70734,\"UserController\":70735,\"Ġhardened\":70736,\"akens\":70737,\"ĠSeeder\":70738,\"owards\":70739,\"checksum\":70740,\"ĠSai\":70741,\"VERTEX\":70742,\"Responses\":70743,\"plode\":70744,\"-hard\":70745,\"Species\":70746,\"RenderTarget\":70747,\"_CHAT\":70748,\"Ġshowcases\":70749,\"itimate\":70750,\"_FOREACH\":70751,\"_CONFIGURATION\":70752,\"eba\":70753,\"ĠEssentially\":70754,\"(poly\":70755,\"-learning\":70756,\"ĠgÃ¥r\":70757,\"_succ\":70758,\"(Mat\":70759,\"Ġcoils\":70760,\"bras\":70761,\"Ġama\":70762,\"_matching\":70763,\"industry\":70764,\"ĠNorris\":70765,\"ĠExposure\":70766,\"Ġpervasive\":70767,\"Ġdez\":70768,\"æĹı\":70769,\"Ġelectronically\":70770,\"DDR\":70771,\"ĠStim\":70772,\"ĠÑĦÐ°Ð¹Ð»Ð°\":70773,\"Ġmadre\":70774,\"nemonic\":70775,\"kich\":70776,\"ĠFragen\":70777,\"ĠRune\":70778,\"ĠonTouch\":70779,\"ĉscale\":70780,\"ĠPharmac\":70781,\"ĠMandatory\":70782,\"ĠSto\":70783,\"ĠBram\":70784,\"_Left\":70785,\"_STAR\":70786,\")}}\\\"\":70787,\"sciously\":70788,\"ÐµÐ·ÑĥÐ»ÑĮÑĤ\":70789,\"ç«Ļ\":70790,\"gravity\":70791,\"+C\":70792,\"}<\":70793,\"ANGES\":70794,\"Ġcontraction\":70795,\"ĠWallpaper\":70796,\".Face\":70797,\"ĠprÃ³ximo\":70798,\".fig\":70799,\"langle\":70800,\"ĠÐ¿ÐµÑĢÐµÐ¼\":70801,\"_CREAT\":70802,\"Basically\":70803,\"Ġawaits\":70804,\"ĠCHARACTER\":70805,\"Ġvpn\":70806,\"Hon\":70807,\"Ġevitar\":70808,\"ĠUndo\":70809,\"QS\":70810,\"ĠEdmund\":70811,\"Ġmiracles\":70812,\"ĠTiming\":70813,\"ĠVenezuel\":70814,\".Sqrt\":70815,\"oidal\":70816,\"Ġerrs\":70817,\"--------ĊĊ\":70818,\"ĠDECLARE\":70819,\"Ġvigorous\":70820,\"argon\":70821,\"Ġaggregated\":70822,\"ĠSharks\":70823,\"ĠCyrus\":70824,\"ĠreprÃ©s\":70825,\"matcher\":70826,\"ĠguiActive\":70827,\"?\\\")Ċ\":70828,\"ĠJNI\":70829,\".charset\":70830,\"'|\":70831,\"Ġgoats\":70832,\"indre\":70833,\".getDay\":70834,\"Ġparses\":70835,\"ĠIhren\":70836,\"__.'/\":70837,\"ileges\":70838,\"navigate\":70839,\"ĠBuffy\":70840,\"PHPUnit\":70841,\"Ġmassa\":70842,\"altar\":70843,\"')],Ċ\":70844,\"Ġoversees\":70845,\"Ġ{}čĊčĊ\":70846,\"ĠWLAN\":70847,\"clipboard\":70848,\"_Instance\":70849,\"Ġgladly\":70850,\"(series\":70851,\"Ġvad\":70852,\"ĠgetPage\":70853,\"[of\":70854,\".Interval\":70855,\"inus\":70856,\"charAt\":70857,\"olem\":70858,\"ainting\":70859,\".AF\":70860,\"_minor\":70861,\"_IL\":70862,\";y\":70863,\"ĠTelecom\":70864,\"ĠPond\":70865,\"Ġmmap\":70866,\"/^\":70867,\"ĠYak\":70868,\"ĠRabbi\":70869,\"enos\":70870,\"ĉContext\":70871,\".vec\":70872,\"(Attribute\":70873,\"Ġcategorized\":70874,\"Ġdiabetic\":70875,\"(rank\":70876,\"ĠpaÃŃses\":70877,\"Ġ@\\\"\\\";Ċ\":70878,\"Ġjika\":70879,\"arsity\":70880,\"Ġ/(\":70881,\".Help\":70882,\"-banner\":70883,\"ĠByron\":70884,\"Ġunrealistic\":70885,\"Ġ|_\":70886,\"ĠStopwatch\":70887,\"Ġexemptions\":70888,\"/cards\":70889,\"Ġtostring\":70890,\"ngine\":70891,\"Ġsprawling\":70892,\"Ġltd\":70893,\"ĠUnderstand\":70894,\"ĠÑĤÐµÐºÑģÑĤ\":70895,\"ewitness\":70896,\"ĠcallBack\":70897,\"-Year\":70898,\"Fuel\":70899,\"=*\":70900,\"Ġinventor\":70901,\"Ġbestselling\":70902,\"Ġhardness\":70903,\"ĠTus\":70904,\"Ġkeynote\":70905,\"Ġbeau\":70906,\"_abort\":70907,\"Ġpropor\":70908,\"Ġcomerc\":70909,\"_REFER\":70910,\"Pas\":70911,\"haven\":70912,\"-fix\":70913,\"Canonical\":70914,\"Ġlookout\":70915,\"Explorer\":70916,\"Ġcerco\":70917,\"(sensor\":70918,\"ĠJsonSerializer\":70919,\"Ġvoksen\":70920,\"Ġbrightest\":70921,\"Ġstabbing\":70922,\".Be\":70923,\".addProperty\":70924,\"ĠHumph\":70925,\"ĠisAuthenticated\":70926,\"æ²¡\":70927,\"Ġpores\":70928,\"Ġjego\":70929,\"ĠShowing\":70930,\"Ġ?>\\\">čĊ\":70931,\"_COST\":70932,\"ilinear\":70933,\"ĠWorkspace\":70934,\"Ġspel\":70935,\"agogue\":70936,\"ĠMillennium\":70937,\"ĠPopulate\":70938,\"Ġnid\":70939,\".parseColor\":70940,\"Solar\":70941,\"ĠGad\":70942,\"Ġì¤ĳ\":70943,\"ĠKamp\":70944,\"ĉrm\":70945,\"Ġbenz\":70946,\"ĠHonestly\":70947,\"Ġelectrode\":70948,\"ĠPrairie\":70949,\"ĠPROFILE\":70950,\"ĠOriental\":70951,\"ĠOLED\":70952,\"/copyleft\":70953,\"awaii\":70954,\"(products\":70955,\")\\\\<\":70956,\"-created\":70957,\".ManyToMany\":70958,\"\\\"How\":70959,\"ĠÐ²ÑĭÐ¿\":70960,\"Ġmitochondrial\":70961,\"_testing\":70962,\"(created\":70963,\"ĠgetField\":70964,\"_EVAL\":70965,\"].\\\"\":70966,\"ĠFSM\":70967,\"ĠRita\":70968,\"ĠåıĤæķ°\":70969,\"ĠcÃ´t\":70970,\"ĠInsight\":70971,\"ĉmysqli\":70972,\"_timing\":70973,\"IDO\":70974,\")))))Ċ\":70975,\"COVERY\":70976,\".imag\":70977,\"CDF\":70978,\"lust\":70979,\"ickt\":70980,\"_FP\":70981,\".','\":70982,\"gcc\":70983,\"Ġkurz\":70984,\"_pwm\":70985,\"Ġodpowied\":70986,\"ĠBarrier\":70987,\"/***************************************************************************Ċ\":70988,\"pak\":70989,\"-Israel\":70990,\"ĠRutgers\":70991,\"ĠselectedItem\":70992,\"ĠRamirez\":70993,\"Farm\":70994,\"Ġcalendars\":70995,\"gzip\":70996,\"Ġblockbuster\":70997,\"ĠPlymouth\":70998,\"çľĮ\":70999,\"responses\":71000,\".DialogInterface\":71001,\"-grand\":71002,\"ĠgetSource\":71003,\"Ġdejtings\":71004,\"Ġtieten\":71005,\"Ġcondemnation\":71006,\"Ġcontinuar\":71007,\".MockMvc\":71008,\"/english\":71009,\"ĠMediaPlayer\":71010,\"computed\":71011,\"ĠClippers\":71012,\"(delegate\":71013,\".Slf\":71014,\"Ġë¡ľ\":71015,\"ĠTide\":71016,\"Ġihrem\":71017,\"ĠWan\":71018,\"ÑĥÑİÑī\":71019,\"}><\":71020,\"Discussion\":71021,\"Ġwatts\":71022,\"-minus\":71023,\"ĠJuliet\":71024,\"éĽħ\":71025,\"Ġconcluding\":71026,\"andscape\":71027,\"ĠÃºltima\":71028,\"ĠDERP\":71029,\"ĠsignUp\":71030,\"ĠSecondly\":71031,\"WAIT\":71032,\"lds\":71033,\".callbacks\":71034,\"(hour\":71035,\"imators\":71036,\"volent\":71037,\"AAF\":71038,\"edriver\":71039,\"ĠMathematic\":71040,\"<Tuple\":71041,\"Ġ/>'\":71042,\"{j\":71043,\"_ABORT\":71044,\"Ether\":71045,\"Ġeducator\":71046,\"Ġprecaution\":71047,\"Ġfingertips\":71048,\"getVar\":71049,\"camatan\":71050,\"-debug\":71051,\"ĠRAF\":71052,\"[arg\":71053,\"Ġraced\":71054,\"Ġtsunami\":71055,\".flink\":71056,\"Ġglyc\":71057,\"uko\":71058,\"ĠMultiply\":71059,\"Ġredistribution\":71060,\"AGO\":71061,\"ĠRoutine\":71062,\"Ġopr\":71063,\"(lower\":71064,\"ĠFunktion\":71065,\".dk\":71066,\"Ġegt\":71067,\"_BASIC\":71068,\"syscall\":71069,\"ĠLSD\":71070,\"ĠDuplicate\":71071,\"_sell\":71072,\"ĠerrorHandler\":71073,\"_ips\":71074,\"Ġerv\":71075,\"annie\":71076,\"(resourceName\":71077,\"Ġbottled\":71078,\"Ġcrawling\":71079,\"egment\":71080,\".setTag\":71081,\"Ġrss\":71082,\"ĠQuarry\":71083,\"_exact\":71084,\".jwt\":71085,\"ĠBoards\":71086,\"opi\":71087,\"Ġnasal\":71088,\"ĠXYZ\":71089,\".ud\":71090,\"Northern\":71091,\"Ġactivating\":71092,\"edx\":71093,\"ovah\":71094,\"Ġindx\":71095,\"AlertDialog\":71096,\"Ġtienes\":71097,\"annya\":71098,\"_pan\":71099,\"(decimal\":71100,\".Dict\":71101,\"Ġsubsidiaries\":71102,\"ProductName\":71103,\"Few\":71104,\"dato\":71105,\"odied\":71106,\"-under\":71107,\"Ġê²ĥ\":71108,\"çīĪæľ¬\":71109,\"atism\":71110,\"[Math\":71111,\".'<\":71112,\"(infile\":71113,\"Ġdenotes\":71114,\"$class\":71115,\"_SECURITY\":71116,\"Ġsewage\":71117,\"melon\":71118,\"(Character\":71119,\"/github\":71120,\"Ġglaring\":71121,\".Guid\":71122,\"_sparse\":71123,\"ĠMargin\":71124,\"_dns\":71125,\"Ġmeiner\":71126,\"Ġleftist\":71127,\"ĉloc\":71128,\"abytes\":71129,\"Ġequipments\":71130,\"expo\":71131,\"ĠSomerset\":71132,\"EK\":71133,\"æį¢\":71134,\"Ġlecturer\":71135,\"Ġmemiliki\":71136,\"æł¸\":71137,\"ç´ł\":71138,\"pron\":71139,\":pointer\":71140,\"borrow\":71141,\"ĠProtective\":71142,\"_cf\":71143,\"ĠÐķÑģÐ»Ð¸\":71144,\"bpp\":71145,\"';ĊĊĊĊ\":71146,\"aturally\":71147,\"_NAV\":71148,\"Ġpeptide\":71149,\">d\":71150,\"Ġifstream\":71151,\"_FACTORY\":71152,\"');//\":71153,\"joined\":71154,\"mong\":71155,\"Ġtimespec\":71156,\"Ġdestabil\":71157,\"Ġautop\":71158,\"-limit\":71159,\"publication\":71160,\"ĠDenn\":71161,\".Memory\":71162,\"(skb\":71163,\"ĠAnaheim\":71164,\"_RETURNTRANSFER\":71165,\"oueur\":71166,\"(_('\":71167,\"legt\":71168,\"istingu\":71169,\"ĉpriv\":71170,\"Ġredirects\":71171,\"Mt\":71172,\"Ġalleen\":71173,\"ĠPointF\":71174,\"Ġomin\":71175,\"Ġcitt\":71176,\"ĠTage\":71177,\"ĠWalls\":71178,\"á»ī\":71179,\"Ġoccupying\":71180,\"xBF\":71181,\"rangle\":71182,\"Ġrelational\":71183,\"-org\":71184,\"Ġjpg\":71185,\"-derived\":71186,\"Ġmalfunction\":71187,\"ĠBenson\":71188,\"(scroll\":71189,\"ĠXD\":71190,\"Holy\":71191,\"(commands\":71192,\"Ġtipping\":71193,\"Ġprimitives\":71194,\"Ġsexle\":71195,\"CallCheck\":71196,\"ĠMASTER\":71197,\"_TEAM\":71198,\".setRequestHeader\":71199,\"_specs\":71200,\"Ġserge\":71201,\".Master\":71202,\"Ġims\":71203,\".SpringBootTest\":71204,\"paypal\":71205,\"ĠWANT\":71206,\".Inst\":71207,\"ĠCarpet\":71208,\"Ġwrongly\":71209,\"($('.\":71210,\"Ġbild\":71211,\".Roll\":71212,\"ĠUrb\":71213,\"-can\":71214,\"ãģıãģłãģķãģĦ\":71215,\"oliberal\":71216,\"<!--<\":71217,\"âĢĶfor\":71218,\"Ġnegate\":71219,\"(norm\":71220,\"aec\":71221,\"_salary\":71222,\"plaintext\":71223,\"odesk\":71224,\"ĠBosch\":71225,\"Scientists\":71226,\"indexes\":71227,\"Ġmpz\":71228,\"Ġgroundwater\":71229,\"}});Ċ\":71230,\"Ð°Ð»Ð¸Ð·\":71231,\"Ġero\":71232,\"Ġprescribe\":71233,\"ĠExtr\":71234,\"<ArrayList\":71235,\"Ġatrocities\":71236,\"Areas\":71237,\"ĠTInt\":71238,\"(players\":71239,\"Ġdatab\":71240,\"Ġwym\":71241,\"ãģĽ\":71242,\"Ġduas\":71243,\"_possible\":71244,\"Ġinstructional\":71245,\"itioner\":71246,\"/audio\":71247,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĊ\":71248,\"stored\":71249,\"OMPI\":71250,\"Ġapprentices\":71251,\"Tenant\":71252,\"ĠCout\":71253,\"Ġcontraception\":71254,\"Loan\":71255,\"_visibility\":71256,\"'||\":71257,\".ParseException\":71258,\"Ġcoincide\":71259,\".getWindow\":71260,\"ĠMartial\":71261,\"_tls\":71262,\"/books\":71263,\"Ġoutraged\":71264,\"Ġ(~(\":71265,\"strstr\":71266,\"ĠBoxes\":71267,\"éĥ½\":71268,\"ãĥ¥\":71269,\"ROI\":71270,\"Functional\":71271,\"ĠProd\":71272,\"<Test\":71273,\"Ġvideot\":71274,\"Ġamore\":71275,\"abbr\":71276,\"ĠMonument\":71277,\"Ġreinforcement\":71278,\"ĠCoconut\":71279,\".sendStatus\":71280,\".ke\":71281,\"ĠLeap\":71282,\"_articles\":71283,\"Pie\":71284,\"ĠIrvine\":71285,\"ABCDEFGHI\":71286,\"ĠExplanation\":71287,\"groupBy\":71288,\"Ġoverhe\":71289,\"ĠanÃ¡l\":71290,\"Ġclassifiers\":71291,\"ĠMixer\":71292,\"/colors\":71293,\"ĠUserData\":71294,\"_ARROW\":71295,\"_vlan\":71296,\".CreateDirectory\":71297,\"ĠHak\":71298,\"ĠBones\":71299,\"ĠApiResponse\":71300,\"ĠMoody\":71301,\"DAC\":71302,\"getc\":71303,\"è¶ħ\":71304,\".Fire\":71305,\"é£\":71306,\"Ġhitter\":71307,\"fresh\":71308,\"à¹ģ\":71309,\"ĠChildhood\":71310,\"xor\":71311,\"-http\":71312,\"ĠMOR\":71313,\".sendKeys\":71314,\"_shapes\":71315,\"ĠUps\":71316,\"ĠArrest\":71317,\"azzi\":71318,\"_opcode\":71319,\".Nombre\":71320,\"ĠprÃ³p\":71321,\"Ġzx\":71322,\"Ġtremendously\":71323,\"Spaces\":71324,\"ecc\":71325,\"Ġvelvet\":71326,\"Ġmemoria\":71327,\"ĠLAP\":71328,\".DrawLine\":71329,\"ĠtargetType\":71330,\"restriction\":71331,\"ĠDRV\":71332,\"[top\":71333,\"!âĢĻ\":71334,\"/chat\":71335,\"Ġsonic\":71336,\"Toronto\":71337,\"owi\":71338,\".docs\":71339,\"ĠInitialise\":71340,\"Ġ<!\":71341,\".tbl\":71342,\".PreparedStatement\":71343,\"/dom\":71344,\".rot\":71345,\"_PROM\":71346,\"Keeping\":71347,\"Ġharga\":71348,\"Ġjorn\":71349,\"Ġidentifiable\":71350,\"[ip\":71351,\"Pink\":71352,\"_Header\":71353,\"Ãĳ\":71354,\"adle\":71355,\"ç½ĳç»ľ\":71356,\"sequent\":71357,\"Activated\":71358,\"tmpl\":71359,\"ĠPall\":71360,\"Ġfatally\":71361,\"}})Ċ\":71362,\"Popover\":71363,\"ĠMcLaren\":71364,\"ChangedEventArgs\":71365,\"ĠFormation\":71366,\"Nam\":71367,\"newsletter\":71368,\".fromString\":71369,\"_imm\":71370,\"APPED\":71371,\",node\":71372,\"(det\":71373,\"Ġparallels\":71374,\"Ġlasers\":71375,\"Ġchocol\":71376,\"/port\":71377,\"affen\":71378,\"(details\":71379,\"Ġreplicated\":71380,\"AsStream\":71381,\"armac\":71382,\"]]=\":71383,\"alach\":71384,\"_sessions\":71385,\"AlgorithmException\":71386,\"Ġverbosity\":71387,\".ColumnStyles\":71388,\"(USER\":71389,\"Ġsleeps\":71390,\"Ġaquatic\":71391,\"_bulk\":71392,\"='./\":71393,\"ournÃ©e\":71394,\"ĠMSD\":71395,\"ĠBloc\":71396,\"ĠGle\":71397,\"Ġrepression\":71398,\"Ġentonces\":71399,\"ĉĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":71400,\"YNC\":71401,\".AllowGet\":71402,\"Ġturtles\":71403,\"Ġ'~/\":71404,\"esson\":71405,\"ĠDIE\":71406,\"ĠAqua\":71407,\"ĠSEQ\":71408,\";;;;;;;;;;;;;;;;\":71409,\".puts\":71410,\"ĠMAK\":71411,\"(Customer\":71412,\"Ġdesserts\":71413,\"Ġembell\":71414,\"Ġtaxed\":71415,\"åºĹ\":71416,\"Ġschl\":71417,\"resco\":71418,\"ĠFrog\":71419,\"ĠPendingIntent\":71420,\"_Local\":71421,\"/security\":71422,\"ĠRox\":71423,\"Ġspoiled\":71424,\"_WINDOWS\":71425,\"Jennifer\":71426,\"Ġdati\":71427,\"Unload\":71428,\".gridx\":71429,\"(stage\":71430,\"á»Ĺ\":71431,\"SqlCommand\":71432,\".mx\":71433,\"Ġblitz\":71434,\"ĠFortress\":71435,\"ĠBrowserAnimationsModule\":71436,\"wine\":71437,\"NSE\":71438,\"-ranking\":71439,\"yre\":71440,\"Ġlinkage\":71441,\"Ã¡k\":71442,\"ĳľ\":71443,\"atsapp\":71444,\"ĠCycl\":71445,\"Ġecology\":71446,\"Ġblatant\":71447,\"ĠPerf\":71448,\"ĠXiaomi\":71449,\"ĠDortmund\":71450,\"resultSet\":71451,\"ĠgiÃł\":71452,\"Ġfaucet\":71453,\"ĠDalton\":71454,\"Ġfrees\":71455,\"BUFF\":71456,\".parallel\":71457,\"ĠAstros\":71458,\"ĠVECTOR\":71459,\"Ġstandout\":71460,\"Ã³mo\":71461,\"Ġframeborder\":71462,\"_PARAMETERS\":71463,\"ĠFalk\":71464,\"ĠDigit\":71465,\"ĠelectrÃ³nico\":71466,\"Ġverr\":71467,\"UIAlertView\":71468,\"(Sql\":71469,\"-INF\":71470,\"\\\")));\":71471,\"''Ċ\":71472,\"(EFFECT\":71473,\"ĠZum\":71474,\"_DP\":71475,\")];čĊ\":71476,\"Ġantenn\":71477,\"Ġabbreviation\":71478,\"Ġseismic\":71479,\"_TRANSL\":71480,\"µľ\":71481,\".Millisecond\":71482,\",lat\":71483,\"ĠAnch\":71484,\"_Mod\":71485,\"Alright\":71486,\"dda\":71487,\"ĠÂ¥\":71488,\"UNDLE\":71489,\"ĠÐ·Ð°Ð³\":71490,\"Ġsulfur\":71491,\"ĠSith\":71492,\"ĠNimbus\":71493,\"ĠExamination\":71494,\"_wifi\":71495,\"}`);ĊĊ\":71496,\"Ġsensations\":71497,\"afs\":71498,\"_CLR\":71499,\"Ġinfinitely\":71500,\"ĠsystÃ¨me\":71501,\"_fonts\":71502,\"Impact\":71503,\"Powered\":71504,\"Ġ<=>\":71505,\"_need\":71506,\"DECREF\":71507,\"Ġ//////////////////////////////////////////////////////////////////////////\":71508,\"ĠRepo\":71509,\"getService\":71510,\"$n\":71511,\"_pct\":71512,\"Erreur\":71513,\"ĠNGOs\":71514,\"Ġ*ĊĊĊ\":71515,\".atan\":71516,\"_TMP\":71517,\"Ġcollapsing\":71518,\"Ġsho\":71519,\"_PCI\":71520,\".oper\":71521,\"(adj\":71522,\"Ġgiov\":71523,\">).\":71524,\"Ġincontro\":71525,\"arda\":71526,\"Ġapex\":71527,\"Ġmedida\":71528,\"ĠSheikh\":71529,\"ĠArmenia\":71530,\"associate\":71531,\"-wow\":71532,\"ĠTurning\":71533,\"ĠFreud\":71534,\"ĠFool\":71535,\"ĠLDS\":71536,\"-------ĊĊ\":71537,\"olson\":71538,\".FILE\":71539,\"_detector\":71540,\"Domin\":71541,\"Ġdeployments\":71542,\"Ġfarewell\":71543,\"(bind\":71544,\"Ġnovice\":71545,\"tdown\":71546,\"ĠgetElement\":71547,\"Ġvelit\":71548,\"asthan\":71549,\"ĉchannel\":71550,\"_FRAMEBUFFER\":71551,\".trailing\":71552,\".setEditable\":71553,\";,\":71554,\"ĠIDF\":71555,\"_PB\":71556,\"getLast\":71557,\"ĠCoastal\":71558,\"ĠHandy\":71559,\"linger\":71560,\"ãģ§ãĤĤ\":71561,\"Persistence\":71562,\".getService\":71563,\"ĠÐ¾Ðº\":71564,\"Ġnotwithstanding\":71565,\"(PR\":71566,\"UMB\":71567,\"'])){čĊ\":71568,\"embrance\":71569,\"excerpt\":71570,\"aqu\":71571,\"_bloc\":71572,\"ĠProvision\":71573,\"ĠMcDon\":71574,\"ĠGoldberg\":71575,\"ĠcomponentWillUnmount\":71576,\"ĠbasePath\":71577,\"-fired\":71578,\"Ġfollando\":71579,\"ĠTiles\":71580,\"@endforeach\":71581,\"ENCIL\":71582,\"ĠBoxing\":71583,\"iquer\":71584,\"Achie\":71585,\"Enums\":71586,\"BaseUrl\":71587,\"(scan\":71588,\"ĠPassive\":71589,\"abella\":71590,\"/sn\":71591,\".numericUpDown\":71592,\"Ġvern\":71593,\"localized\":71594,\"ĠMiz\":71595,\"ĠresultList\":71596,\"/vue\":71597,\"ERVICE\":71598,\".od\":71599,\"Ġlign\":71600,\"ĠStringTokenizer\":71601,\"Ġtrag\":71602,\"Accordion\":71603,\"Ġnoreferrer\":71604,\"mscorlib\":71605,\"Ã¡tis\":71606,\"byter\":71607,\"Ġshowdown\":71608,\"Ġsemaine\":71609,\"Ġ-->čĊčĊ\":71610,\"ĠMahm\":71611,\"}\\\";ĊĊ\":71612,\"Ġdq\":71613,\"ĠPublishers\":71614,\"ĠAmpl\":71615,\"ĠDanielle\":71616,\"Ġtern\":71617,\"èµ·\":71618,\"noÅĽÄĩ\":71619,\"ein\":71620,\"ĠAsyncStorage\":71621,\"unger\":71622,\"rouw\":71623,\"Ġscissors\":71624,\"/assert\":71625,\".bucket\":71626,\"/archive\":71627,\"_Man\":71628,\"Ġintoler\":71629,\"Ġ()=>\":71630,\"ĠÐĴÑĭ\":71631,\"Ġsai\":71632,\".xy\":71633,\".\\\"čĊ\":71634,\"Ġurinary\":71635,\"esub\":71636,\"ISTICS\":71637,\"ĠÎº\":71638,\"Ġcompliments\":71639,\"ĠtypingsJapgolly\":71640,\"ihar\":71641,\"Expansion\":71642,\"ĠServing\":71643,\"_students\":71644,\"ĠXBOOLE\":71645,\"(il\":71646,\"Ġì²ĺ\":71647,\"ĠjÃ³\":71648,\"(tol\":71649,\"(JS\":71650,\"ĉCG\":71651,\"ĠDRAW\":71652,\"twig\":71653,\"Ġoat\":71654,\"_smooth\":71655,\"ĠCSL\":71656,\"Ġosob\":71657,\"Ġensuing\":71658,\"Ġbanker\":71659,\"ĠBackpack\":71660,\"_ping\":71661,\"Ġwishlist\":71662,\"=ax\":71663,\"ĉĠĠĠĊ\":71664,\"Disney\":71665,\"steady\":71666,\"\\\">%\":71667,\"Ġprophets\":71668,\"ĠZX\":71669,\"Ġminimalist\":71670,\".PLAIN\":71671,\"Seattle\":71672,\".ordinal\":71673,\"ĠPIPE\":71674,\"Ġretorna\":71675,\"Ġjugador\":71676,\"ĠBret\":71677,\"ĠâĶľ\":71678,\"Ġplush\":71679,\"ULATOR\":71680,\"Sorting\":71681,\".gridy\":71682,\"ectomy\":71683,\"_activ\":71684,\"rack\":71685,\"Interactive\":71686,\"ĠAntarctica\":71687,\"Ġvengeance\":71688,\"enso\":71689,\"_known\":71690,\"upplier\":71691,\".Modules\":71692,\"ĠConnectionState\":71693,\"éļĲèĹı\":71694,\"@FindBy\":71695,\"Ġplacer\":71696,\"\\\\model\":71697,\"<()>\":71698,\".isSuccessful\":71699,\"-good\":71700,\"bz\":71701,\"ĠDraco\":71702,\"Assistant\":71703,\"-extra\":71704,\"Ð°Ð±Ð»Ð¸ÑĨ\":71705,\"Ġhypocrisy\":71706,\"Ġtst\":71707,\"ĠAgr\":71708,\"$txt\":71709,\"Ġlogistic\":71710,\"licensed\":71711,\"ĠHof\":71712,\"Ġtat\":71713,\"(iv\":71714,\"Ġintoxic\":71715,\"postId\":71716,\"_strike\":71717,\"Ġhumiliation\":71718,\"pcodes\":71719,\"\\\"sync\":71720,\"(recipe\":71721,\"+N\":71722,\"rente\":71723,\"ĉClient\":71724,\"ycopg\":71725,\"ĠZurich\":71726,\"ĠProfiles\":71727,\"Countries\":71728,\"Ġpict\":71729,\"Ġrollout\":71730,\"requencies\":71731,\"Ġpatched\":71732,\"Ġcartridges\":71733,\"Ġshading\":71734,\"Jar\":71735,\"Ġsalvage\":71736,\"ĠTaxes\":71737,\"Ġstandby\":71738,\"aporan\":71739,\"Eigen\":71740,\".angular\":71741,\"ĠNested\":71742,\"äº«\":71743,\"ĠisVisible\":71744,\"ĠDwight\":71745,\"_BRANCH\":71746,\".Delay\":71747,\"Ġkend\":71748,\"Ġfacilitated\":71749,\".flatMap\":71750,\"Ġsanta\":71751,\"ĉSend\":71752,\"/messages\":71753,\"ĠofType\":71754,\"ĉswap\":71755,\"#plt\":71756,\"ĠTurks\":71757,\"NES\":71758,\"Ġprogressively\":71759,\"ĠResidence\":71760,\"ĠTREE\":71761,\"Ġnoen\":71762,\"dio\":71763,\"Ġnelle\":71764,\"Ġsogar\":71765,\"itti\":71766,\"weekly\":71767,\"Ġambiguity\":71768,\"_Settings\":71769,\"Ware\":71770,\".neo\":71771,\"_DST\":71772,\"Ġæĸ¹\":71773,\"prep\":71774,\"lobby\":71775,\"@email\":71776,\"/movie\":71777,\"Ġfunkc\":71778,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":71779,\"ÂŃs\":71780,\"Ġguardians\":71781,\"-pos\":71782,\"Ġconfiguring\":71783,\"ĠCPS\":71784,\"ĠDeus\":71785,\"ĠvidÃ©os\":71786,\"_empresa\":71787,\"Ġslapped\":71788,\"<Model\":71789,\"Ġunderscores\":71790,\"Uh\":71791,\".accessToken\":71792,\"SETS\":71793,\"ĠSparse\":71794,\"ĠCald\":71795,\":path\":71796,\"ĠServers\":71797,\"=batch\":71798,\"Ġknitting\":71799,\"Ġxa\":71800,\"ĠsearchBar\":71801,\"Ġsnag\":71802,\"Ġinfused\":71803,\".bam\":71804,\"lever\":71805,\"Ġtaxonomy\":71806,\"Ãİ\":71807,\"Ġattaching\":71808,\"Ġhern\":71809,\"_NOP\":71810,\"Clickable\":71811,\"(Parse\":71812,\"ĠDynamo\":71813,\"-builder\":71814,\"Ġdereg\":71815,\"Ġscattering\":71816,\"è¿Ľè¡Į\":71817,\"anzi\":71818,\"ĠShepard\":71819,\"\\\">',Ċ\":71820,\"_XDECREF\":71821,\"ĠBuzzFeed\":71822,\"_MARGIN\":71823,\"PLOY\":71824,\".small\":71825,\"ĠmimeType\":71826,\"Ġholog\":71827,\"ĉcamera\":71828,\"lias\":71829,\"Ġsuspense\":71830,\"odynam\":71831,\"bau\":71832,\"Ġgraveyard\":71833,\"_named\":71834,\"\\\":\\\"'\":71835,\"Ġ************************************************\":71836,\"ĠgameOver\":71837,\"ĠLENGTH\":71838,\"ĉscreen\":71839,\"ĠdoInBackground\":71840,\"_dependencies\":71841,\"Ġrtc\":71842,\"/up\":71843,\"_ROM\":71844,\"Hall\":71845,\"Ġdeficiencies\":71846,\"(te\":71847,\"'#\":71848,\"_equiv\":71849,\"Ġpreorder\":71850,\"ĠAxe\":71851,\"Ð¾Ð¼Ñĥ\":71852,\".sendFile\":71853,\"Ġfilt\":71854,\"ĠLimits\":71855,\"ĠCavaliers\":71856,\".discount\":71857,\"âĨĲ\":71858,\"ĠWit\":71859,\"QRSTUV\":71860,\"Ġij\":71861,\"Ġtegen\":71862,\"Ġ:\\\",\":71863,\"difficulty\":71864,\"punkt\":71865,\"ĠEmails\":71866,\"chlor\":71867,\"(fun\":71868,\".Uint\":71869,\"ĠStall\":71870,\"_verified\":71871,\"uD\":71872,\"FileType\":71873,\"Ġpleasures\":71874,\"Ġjudiciary\":71875,\"Ġsham\":71876,\"ipur\":71877,\"_PLUS\":71878,\"offers\":71879,\"(foo\":71880,\"_GT\":71881,\"ĉcore\":71882,\"ENTION\":71883,\"ĠLiberation\":71884,\"CommandLine\":71885,\"_department\":71886,\".Ar\":71887,\"_neighbor\":71888,\"ĠSubmitted\":71889,\"Ġ<!--[\":71890,\"Ġlocating\":71891,\".Mapper\":71892,\"_strength\":71893,\"[...,\":71894,\"ĠJal\":71895,\"/load\":71896,\"Ġbuffs\":71897,\"Ġmotorists\":71898,\"ĉcs\":71899,\"ascending\":71900,\"ĠWhatsapp\":71901,\"ĠNass\":71902,\"_COLUMNS\":71903,\"Leon\":71904,\"ppe\":71905,\"eltas\":71906,\"Ġtjejer\":71907,\"_KEYWORD\":71908,\"qualification\":71909,\"hra\":71910,\"Ġridiculously\":71911,\"$info\":71912,\"FEATURE\":71913,\"doesn\":71914,\"ĠKW\":71915,\"ĠEnumerableStream\":71916,\"_MAT\":71917,\"ĠStreamLazy\":71918,\"Ġscratching\":71919,\".ticket\":71920,\"Ġshortcomings\":71921,\"ellipsis\":71922,\"=current\":71923,\"Ġcrest\":71924,\"Ġwhore\":71925,\"ĠPetroleum\":71926,\"contexts\":71927,\"ĠæŃ\":71928,\"-python\":71929,\"(jsonObject\":71930,\"ĠPrism\":71931,\"Ġyacht\":71932,\"·¨\":71933,\"flashdata\":71934,\"Ġleicht\":71935,\"ĠMorton\":71936,\"Ġsterling\":71937,\"_itr\":71938,\"_ud\":71939,\"Faces\":71940,\"Ġhires\":71941,\"ffa\":71942,\"',{Ċ\":71943,\"-camera\":71944,\"_REASON\":71945,\"ĠHelena\":71946,\"rug\":71947,\"ightly\":71948,\"Ġpermutations\":71949,\"ĠTorah\":71950,\"Ġæĺ¯åĲ¦\":71951,\"ĉrecord\":71952,\"ÃĢ\":71953,\".gmail\":71954,\"Fortunately\":71955,\"(Mod\":71956,\"Occurrences\":71957,\"Ġdepreci\":71958,\"Ġvaguely\":71959,\"/Z\":71960,\"VN\":71961,\".tp\":71962,\"_gener\":71963,\"Ġ{:?}\\\",\":71964,\"wahl\":71965,\"IKE\":71966,\"ĠLegislation\":71967,\"Ġhinter\":71968,\"Ġadel\":71969,\"(high\":71970,\"æıĲäº¤\":71971,\"/domain\":71972,\".tiles\":71973,\"ĠTibetan\":71974,\"ĠStereo\":71975,\"ĠfileSize\":71976,\"grupo\":71977,\"iae\":71978,\"SCP\":71979,\"Ġvouchers\":71980,\"ĠPandora\":71981,\"Ġdismay\":71982,\"ĠlÃ©g\":71983,\"ĠBehavioral\":71984,\"cran\":71985,\"Nested\":71986,\"accom\":71987,\"ĠNah\":71988,\"ĠBaltic\":71989,\"ĠDEST\":71990,\"Ġkisses\":71991,\"Vin\":71992,\"Ġprovoke\":71993,\"_Context\":71994,\"Ġweekdays\":71995,\"urgence\":71996,\"Lik\":71997,\"Ġplaza\":71998,\"Ġblev\":71999,\"Ġreaff\":72000,\"_Title\":72001,\"(Gtk\":72002,\"Ġcelle\":72003,\"#================================================================\":72004,\"ĠJoomla\":72005,\"\\\">//\":72006,\"Monthly\":72007,\".toDouble\":72008,\"(entries\":72009,\"ĠNRF\":72010,\"(gcf\":72011,\"ĠMiddleware\":72012,\"}-{\":72013,\"_HIDE\":72014,\"Ġlowers\":72015,\"(Self\":72016,\"åıĳéĢģ\":72017,\"ĠisLoggedIn\":72018,\"Ġbiodiversity\":72019,\"Ġmuschi\":72020,\"(candidate\":72021,\"ĠAnsi\":72022,\"ĉsm\":72023,\"/im\":72024,\"+')\":72025,\"cdc\":72026,\"Ġalguna\":72027,\"Ġsacrificing\":72028,\"/vendors\":72029,\"/API\":72030,\"Advertising\":72031,\"ĠGENERATED\":72032,\"ĠDisorders\":72033,\"ĠSerialization\":72034,\"Ġsavage\":72035,\"Ġé»\":72036,\"ĠInsights\":72037,\"Ġrevoke\":72038,\"Ġjurors\":72039,\"suit\":72040,\"ĠCamping\":72041,\"_profit\":72042,\"buch\":72043,\".Actions\":72044,\"ĠIDEA\":72045,\"olulu\":72046,\"Likes\":72047,\"ë²Īíĺ¸\":72048,\".BLL\":72049,\"vÃ¤\":72050,\"Ġcardi\":72051,\"Ġdisproportionately\":72052,\"Ġinsanity\":72053,\".eof\":72054,\"ĠPlatz\":72055,\".firstname\":72056,\"ĠSlash\":72057,\"_CF\":72058,\"jandro\":72059,\"ĠGauge\":72060,\"ĠSunder\":72061,\"ĠBunny\":72062,\"_um\":72063,\"èģĶç³»\":72064,\"ĠiPhones\":72065,\"ĠBIO\":72066,\"Ġkho\":72067,\"xFA\":72068,\"ĠFriendship\":72069,\"Ġcalmly\":72070,\"_thr\":72071,\"_Anim\":72072,\"Ġraison\":72073,\"/root\":72074,\".getById\":72075,\"ĠSavannah\":72076,\"ĠInterpret\":72077,\"killer\":72078,\"ĉwg\":72079,\"])]\":72080,\"ÑĥÐµÑĤ\":72081,\"KeyValue\":72082,\"[G\":72083,\"stretch\":72084,\"-playing\":72085,\"%;čĊ\":72086,\"Ġplank\":72087,\"Ġpeach\":72088,\"ĠDerrick\":72089,\"Ð´ÑĢÐµÑģ\":72090,\"ĠSham\":72091,\"APPLICATION\":72092,\".progressBar\":72093,\"Ġtransitioning\":72094,\"_drag\":72095,\".RequestBody\":72096,\".Mobile\":72097,\"Jones\":72098,\".Photo\":72099,\"Ġaxle\":72100,\"zug\":72101,\"/options\":72102,\"]])ĊĊ\":72103,\"ĉno\":72104,\"[href\":72105,\"Ġagregar\":72106,\"ĠServiceException\":72107,\"ningen\":72108,\"Difficulty\":72109,\"BOOLEAN\":72110,\"Adds\":72111,\"-handler\":72112,\"ĠGat\":72113,\"ĠEbony\":72114,\"áºŃn\":72115,\"bright\":72116,\"Ġcorpses\":72117,\".CheckedChanged\":72118,\"Ġmating\":72119,\"ĠHartford\":72120,\"Ġzou\":72121,\"Ġdudes\":72122,\"_alg\":72123,\"ĠJuli\":72124,\"ocup\":72125,\"ĠÐ¿ÑĢÐ°Ð²\":72126,\"ĠKaty\":72127,\"_InternalArray\":72128,\".ColumnHeadersHeightSizeMode\":72129,\"MethodManager\":72130,\"ĠRede\":72131,\"ĠlistItem\":72132,\".Bounds\":72133,\"Ġavenues\":72134,\"ĠCognitive\":72135,\"Extend\":72136,\"technical\":72137,\"âĢļ\":72138,\"snake\":72139,\"FromClass\":72140,\"iless\":72141,\"Ġ={\":72142,\"urette\":72143,\"/thread\":72144,\"FIELDS\":72145,\"IVING\":72146,\"ĠPOSIX\":72147,\"_ak\":72148,\"Ġ../../../\":72149,\"Mp\":72150,\"Ġanonymously\":72151,\"TargetException\":72152,\"affer\":72153,\"anything\":72154,\"\\\"is\":72155,\"greso\":72156,\"ĠLara\":72157,\"izados\":72158,\"Ġming\":72159,\".ta\":72160,\"_throw\":72161,\"Rh\":72162,\"Ġsolidity\":72163,\"nahme\":72164,\"ichage\":72165,\"Ġmound\":72166,\"olio\":72167,\"arya\":72168,\"ASURE\":72169,\"Ġwohl\":72170,\"Ġfurnishings\":72171,\".sections\":72172,\"Ġapologies\":72173,\"apikey\":72174,\"ĠScrew\":72175,\"ĠWarsaw\":72176,\"/graph\":72177,\"ĠSATA\":72178,\"yses\":72179,\"/buttons\":72180,\"ÐµÐ½Ð¾\":72181,\"UGHT\":72182,\"Ġpornstar\":72183,\"PictureBox\":72184,\"_Texture\":72185,\"ĠaÃ±\":72186,\"Ġnerd\":72187,\"-connected\":72188,\"Ġoutsiders\":72189,\"Ġoperatives\":72190,\"abble\":72191,\"/man\":72192,\"Ġplead\":72193,\"\\\\Db\":72194,\"ĠCovered\":72195,\"=S\":72196,\"ĠFlames\":72197,\"ï¿¥\":72198,\"_titles\":72199,\"Ġretract\":72200,\"Ġcollaborating\":72201,\"Ġbehand\":72202,\".DataGridViewColumnHeadersHeightSizeMode\":72203,\"Ġlabore\":72204,\"ĠtotalPrice\":72205,\"Ġspoiler\":72206,\"Ġdipped\":72207,\"\\\")){čĊ\":72208,\"_SB\":72209,\"ĠLei\":72210,\"Ġincluso\":72211,\"vell\":72212,\"ĉpl\":72213,\"Inactive\":72214,\"ĠUSSR\":72215,\"onden\":72216,\"Ġrouted\":72217,\".struct\":72218,\"à«\":72219,\"ĠMalik\":72220,\"ĠHEX\":72221,\"ĠCust\":72222,\"_PERCENT\":72223,\"_episode\":72224,\"æĭī\":72225,\"VERS\":72226,\"Ġcruising\":72227,\"Bookmark\":72228,\"âĢ¦ĊĊĊĊ\":72229,\"checkBox\":72230,\"ouflage\":72231,\"Ġnonzero\":72232,\"Ġaprox\":72233,\"ĠPurdue\":72234,\"coon\":72235,\"legs\":72236,\"ĠLottery\":72237,\"Slf\":72238,\"HAV\":72239,\">k\":72240,\">An\":72241,\"Ġslender\":72242,\"sched\":72243,\"Telegram\":72244,\"Rick\":72245,\"_Struct\":72246,\"_BC\":72247,\"Ġcustomary\":72248,\"ĠDamon\":72249,\"urchased\":72250,\"Ġkob\":72251,\"Ġtion\":72252,\"(prompt\":72253,\"Ġimb\":72254,\"xCC\":72255,\"ĉWebElement\":72256,\"Ġhemos\":72257,\"à¦°\":72258,\"ĠCNBC\":72259,\"ĠALLOW\":72260,\"ç±³\":72261,\"ĠENC\":72262,\".scalatest\":72263,\"ĠTBD\":72264,\"getReference\":72265,\"ĠImported\":72266,\"à¸°\":72267,\"Ġiw\":72268,\"olon\":72269,\"mil\":72270,\"://${\":72271,\".Manifest\":72272,\"Ġlh\":72273,\"ĠitemList\":72274,\"_ads\":72275,\"Inspectable\":72276,\"ĠToledo\":72277,\"ĠDisaster\":72278,\"UpdatedAt\":72279,\")'),\":72280,\"ĠPAN\":72281,\"FileChooser\":72282,\"Ġyuan\":72283,\"itm\":72284,\"ĠÐµÐ³Ð¾\":72285,\"ĠIbn\":72286,\"Hat\":72287,\"_ulong\":72288,\"apl\":72289,\"ĠUruguay\":72290,\"Ã©ny\":72291,\"ĠCraigslist\":72292,\"doch\":72293,\"Ġbile\":72294,\"Ġprodukt\":72295,\"Ġelectroly\":72296,\".Course\":72297,\"Ġmq\":72298,\"unctuation\":72299,\"/****************\":72300,\"uju\":72301,\"MMMM\":72302,\"_LEG\":72303,\"Ġneutron\":72304,\"Ġplurality\":72305,\"Ġ++$\":72306,\"foundation\":72307,\".ColumnStyle\":72308,\"ĠHoover\":72309,\".ACT\":72310,\"ĠBraz\":72311,\"lessons\":72312,\"fÃ¼hr\":72313,\"à¤Ĥ\":72314,\"ĠClassics\":72315,\"raig\":72316,\"Ġmh\":72317,\"Ġkettle\":72318,\"Strike\":72319,\"erdale\":72320,\"ENTA\":72321,\"ĠTableColumn\":72322,\"ĠShake\":72323,\"ĠWF\":72324,\"ĠLicensing\":72325,\"uaÃ§Ã£o\":72326,\"Ġsecara\":72327,\"ĠnewVal\":72328,\"Seleccion\":72329,\"Prefab\":72330,\"fighter\":72331,\"Launching\":72332,\"'\\\";čĊ\":72333,\".lon\":72334,\".utcnow\":72335,\"ĠHundreds\":72336,\"estead\":72337,\"ĠOverwatch\":72338,\"_AFTER\":72339,\"Ġremnants\":72340,\").\\\\\":72341,\"Ġlobbyists\":72342,\"Ġunintended\":72343,\"ĠëĲ\":72344,\"ysz\":72345,\"Ġlibros\":72346,\"-pages\":72347,\"INTERFACE\":72348,\"Ġdeterministic\":72349,\"ĠUNIQUE\":72350,\"ĠettÃ¤\":72351,\"SingleNode\":72352,\"ĉĉĉĉĉĉĉčĊ\":72353,\"-stat\":72354,\"Ġhashing\":72355,\"/access\":72356,\"tell\":72357,\"ĉusername\":72358,\"ĠDatos\":72359,\"BitConverter\":72360,\":host\":72361,\"Ġalternating\":72362,\"ĠâĢĭâĢĭ\":72363,\"Ġwaveform\":72364,\"<Element\":72365,\"ĠCanton\":72366,\"Ġdestac\":72367,\"tent\":72368,\".getMax\":72369,\"Ġstencil\":72370,\"ĠAcquisition\":72371,\".GenerationType\":72372,\"ĠMER\":72373,\"_combine\":72374,\"Ġ[].\":72375,\"_BITMAP\":72376,\"ldr\":72377,\"Ġcanv\":72378,\"ĠJVM\":72379,\"pars\":72380,\"Ġdownhill\":72381,\"DetailsService\":72382,\"(NAME\":72383,\"Ġrejuven\":72384,\"_within\":72385,\"Accessory\":72386,\"ĠSÃ©\":72387,\"/inc\":72388,\"\\\")]ĊĊ\":72389,\"Publication\":72390,\"_roi\":72391,\"Ġmobs\":72392,\".NoArgsConstructor\":72393,\"Ġeventos\":72394,\".vendor\":72395,\"_SELECTOR\":72396,\"Ã©fono\":72397,\"=\\\"[\":72398,\"Ġlaat\":72399,\"Ġblurred\":72400,\"ĠBorderSide\":72401,\"xFFFFFF\":72402,\"_written\":72403,\"Ġjente\":72404,\"/tiny\":72405,\".wp\":72406,\".styleable\":72407,\"ĠCharger\":72408,\"Ġbathing\":72409,\"ĠPanda\":72410,\"Ã©li\":72411,\"Ġpaciente\":72412,\"Ġgiochi\":72413,\"ĠViewState\":72414,\"cgi\":72415,\".logical\":72416,\"DonaldTrump\":72417,\",copy\":72418,\"emm\":72419,\"_Link\":72420,\"Ġinsignificant\":72421,\"ffmpeg\":72422,\"/pay\":72423,\"_quit\":72424,\"IODevice\":72425,\"ĠExists\":72426,\"Ġcooks\":72427,\"junction\":72428,\"ĠTXT\":72429,\"(egt\":72430,\"aniu\":72431,\"_partner\":72432,\"Ġfacult\":72433,\"ĠUnified\":72434,\"/sbin\":72435,\"ĠNeh\":72436,\"ĠKazakhstan\":72437,\"postcode\":72438,\"Ġvegas\":72439,\"Ġseinem\":72440,\"}],\":72441,\"tet\":72442,\"-payment\":72443,\"ĠCommentary\":72444,\"Ġguideline\":72445,\");$\":72446,\"ĠConsortium\":72447,\"ç³»ç»Ł\":72448,\"viso\":72449,\"ĠBilling\":72450,\"iciar\":72451,\"ĠTypeInfo\":72452,\"ĉtrans\":72453,\"<Texture\":72454,\"athom\":72455,\"laughs\":72456,\"Ġinterceptions\":72457,\"(EVENT\":72458,\"Forecast\":72459,\"Trap\":72460,\"trx\":72461,\"ĠWhites\":72462,\"submitted\":72463,\"algo\":72464,\"Ġtransporter\":72465,\"oundary\":72466,\"ĠInherits\":72467,\"ĠConexion\":72468,\".clientX\":72469,\"ĉproject\":72470,\"heartbeat\":72471,\"-other\":72472,\"Ġ';čĊ\":72473,\"Ã«r\":72474,\"orpion\":72475,\"(cors\":72476,\"ĠELECT\":72477,\"ĠPere\":72478,\"ĠuseMemo\":72479,\"ewriter\":72480,\"Ġsquirt\":72481,\"/extensions\":72482,\"/as\":72483,\".CLIENT\":72484,\"Ġgourmet\":72485,\"ĠautoComplete\":72486,\"REV\":72487,\"Ġbraking\":72488,\"_SELECTION\":72489,\"ãĥ¡ãĥ³ãĥĪ\":72490,\"_life\":72491,\"_ground\":72492,\"_ter\":72493,\"sns\":72494,\"ĠSPORT\":72495,\"Ĵáŀ\":72496,\"æ»\":72497,\"UniqueId\":72498,\"Ġdrip\":72499,\"_BROWSER\":72500,\"-meter\":72501,\"endez\":72502,\"Ġexhaustive\":72503,\"(SK\":72504,\"ĠBurlington\":72505,\"woord\":72506,\"(pow\":72507,\"ĠsearchText\":72508,\"ħĮ\":72509,\"heels\":72510,\"steller\":72511,\".sig\":72512,\"YOUR\":72513,\".ali\":72514,\"ĠDataColumn\":72515,\"ĠprojectName\":72516,\"_fecha\":72517,\"Ġrefunds\":72518,\"Ġtopo\":72519,\"ĠCHILD\":72520,\"ĠMarble\":72521,\"ĠforCell\":72522,\"Ġpessim\":72523,\"Ġcrispy\":72524,\"ifestyles\":72525,\"Ġoverdue\":72526,\"olarity\":72527,\"ĠamatÃ¸r\":72528,\"Md\":72529,\"PRESS\":72530,\"Ġinsurer\":72531,\"ocrat\":72532,\"Ġfacilitates\":72533,\"/čĊčĊ\":72534,\"Ġhurdles\":72535,\"_HI\":72536,\"Letters\":72537,\"minecraft\":72538,\"axter\":72539,\"yk\":72540,\"ĠeconÃ³m\":72541,\"ĠÐ½Ð°Ñĩ\":72542,\"ĠSWITCH\":72543,\"Consulta\":72544,\"ĠNora\":72545,\"CKER\":72546,\"_CT\":72547,\".appspot\":72548,\"Ġ//--\":72549,\"ĉBOOST\":72550,\"_courses\":72551,\"Ġwillingly\":72552,\"ë§Į\":72553,\"ffd\":72554,\"filer\":72555,\"ĠMeasures\":72556,\"Ġleases\":72557,\"ĠDorothy\":72558,\":].\":72559,\"subscriptions\":72560,\"Ġchois\":72561,\"Ġalan\":72562,\"Ġabrir\":72563,\".Popup\":72564,\"Estimated\":72565,\"ĠPLAN\":72566,\"àµį\":72567,\"ĠELF\":72568,\"Ġdistancing\":72569,\"ĉanswer\":72570,\"Ġrugs\":72571,\"Ki\":72572,\"áŁĴáŀ\":72573,\"Guild\":72574,\"extras\":72575,\"cps\":72576,\"Mocks\":72577,\"Ġtekst\":72578,\"*g\":72579,\".requestFocus\":72580,\"Ġalteration\":72581,\"ĠCategoria\":72582,\"immers\":72583,\"ĠDropbox\":72584,\"ĠAddr\":72585,\"å¼ķ\":72586,\"deps\":72587,\".MessageBox\":72588,\"!,Ċ\":72589,\".getB\":72590,\"Ġmigrated\":72591,\"ĠHobby\":72592,\"ĠMg\":72593,\".Vertex\":72594,\"Ġforgiven\":72595,\"ĠDeV\":72596,\"Ġwerd\":72597,\"ĠArabian\":72598,\"ĠSmoking\":72599,\"Ġstrawberry\":72600,\"ĠCMP\":72601,\"dbl\":72602,\"ĠDHS\":72603,\"-errors\":72604,\".pag\":72605,\"ĠRNG\":72606,\"Ġshave\":72607,\"Ġtwee\":72608,\"ĠassertNull\":72609,\"ĠDensity\":72610,\"dojo\":72611,\"ainment\":72612,\"Ġpj\":72613,\".YEAR\":72614,\"Ġ*));Ċ\":72615,\"ibraries\":72616,\"Jets\":72617,\"Executive\":72618,\"_dense\":72619,\".getContentPane\":72620,\"chandle\":72621,\"aina\":72622,\"-reference\":72623,\"Ġliar\":72624,\"ĠHEALTH\":72625,\"[test\":72626,\".isnan\":72627,\"Charlie\":72628,\"Ġpupper\":72629,\"Ġkir\":72630,\":hidden\":72631,\"isVisible\":72632,\"Ġkomt\":72633,\"Ġacquainted\":72634,\"ĠDruid\":72635,\"(Cs\":72636,\".lastname\":72637,\"DSA\":72638,\"Ġdissolve\":72639,\"ç¼ĸåı·\":72640,\"Various\":72641,\"ĠDex\":72642,\"_angles\":72643,\"/apimachinery\":72644,\"Ġexploding\":72645,\"(CharSequence\":72646,\"ĠHispan\":72647,\"++){ĊĊ\":72648,\".ModelSerializer\":72649,\"QRSTUVWXYZ\":72650,\"çĤ¹åĩ»\":72651,\"=settings\":72652,\"à¥ģ\":72653,\"PCS\":72654,\"ĠINTERNAL\":72655,\"ĠHUGE\":72656,\"Ġmicroscope\":72657,\"isAdmin\":72658,\"\\\\v\":72659,\".requireNonNull\":72660,\"Ð¾Ð»Ð¾Ð²\":72661,\"icerca\":72662,\"_SENT\":72663,\"Ġdepiction\":72664,\"ĠUserControl\":72665,\"ĠMemor\":72666,\"ĠAllocation\":72667,\"ĠBedford\":72668,\"ĠæĽ´\":72669,\"Ġtorment\":72670,\"azeera\":72671,\".Today\":72672,\"ĠRegarding\":72673,\"_ENC\":72674,\"_RANDOM\":72675,\"LogLevel\":72676,\"=R\":72677,\"ĠGreenland\":72678,\"Ġstrained\":72679,\"Ġmagnets\":72680,\"ĠalertController\":72681,\"ĠChronic\":72682,\"_registered\":72683,\"Ġlij\":72684,\"ĠEntryPoint\":72685,\"ĠRegiment\":72686,\"ucid\":72687,\"ĠCouldn\":72688,\"ĠActing\":72689,\"_ray\":72690,\"Ġnab\":72691,\"-separated\":72692,\"Ġpnl\":72693,\"Coach\":72694,\"ATYPE\":72695,\"Ġsupplementation\":72696,\"acers\":72697,\"fleet\":72698,\"InputBorder\":72699,\"ĠStructural\":72700,\"Ġdeine\":72701,\"Ġbreweries\":72702,\"anoi\":72703,\"Ġtranslators\":72704,\"Ġeigenen\":72705,\"Ġdances\":72706,\"tam\":72707,\"ĠCooperation\":72708,\"_requested\":72709,\"ĠMagical\":72710,\"ĉLEFT\":72711,\"Ġ\\\"\\\"),Ċ\":72712,\"+-+-+-+-+-+-+-+-\":72713,\"ĠNoir\":72714,\"ĠEstimate\":72715,\"ĠThreadPool\":72716,\"ĠHeck\":72717,\"Ġ'*.\":72718,\"Turkey\":72719,\"Ġsucceeding\":72720,\"drug\":72721,\"vio\":72722,\"Ġponer\":72723,\"ĠJad\":72724,\"izzly\":72725,\"everything\":72726,\"Ġ{}).\":72727,\"ĠInstitutes\":72728,\"Ġnuovo\":72729,\"ĠinitWithTitle\":72730,\"ĠluaL\":72731,\"ownik\":72732,\"Ġthor\":72733,\"Ġklar\":72734,\"Ġnotoriously\":72735,\"Ġdong\":72736,\"emens\":72737,\"_projection\":72738,\"_GRE\":72739,\".eye\":72740,\"Ġwatering\":72741,\"ĠTik\":72742,\"oS\":72743,\"ĠStranger\":72744,\"ĠĠčĊčĊ\":72745,\"paging\":72746,\"_intersect\":72747,\"ĠColonial\":72748,\"Lisa\":72749,\".unlink\":72750,\"Ġmip\":72751,\"anuts\":72752,\"amazon\":72753,\"ĠIDENT\":72754,\"stasy\":72755,\"Jwt\":72756,\"------+------+\":72757,\"ĠEVP\":72758,\"ContentLoaded\":72759,\"ĉBIT\":72760,\".parents\":72761,\"Ġallocating\":72762,\"ĠGOLD\":72763,\"}`;ĊĊ\":72764,\"ALAR\":72765,\"Ġprecisa\":72766,\"Distinct\":72767,\"sei\":72768,\"Ġsubpoena\":72769,\"Ġpomp\":72770,\"ĠPolo\":72771,\"coe\":72772,\"vj\":72773,\".workflow\":72774,\"estre\":72775,\"Ġconnexion\":72776,\"imetype\":72777,\".RowCount\":72778,\"ĠDhabi\":72779,\"Ġemits\":72780,\".BorderSize\":72781,\"(policy\":72782,\",message\":72783,\"OnInit\":72784,\")(_\":72785,\"Ġfiner\":72786,\"[number\":72787,\"Ġscripture\":72788,\"Reflect\":72789,\"-toolbar\":72790,\"(PATH\":72791,\"ĠENTRY\":72792,\"(...)Ċ\":72793,\"-domain\":72794,\"(strip\":72795,\")(*\":72796,\"Ġconveyed\":72797,\"Ġattentive\":72798,\"Ã¨ge\":72799,\"_LD\":72800,\"ĠGrants\":72801,\"-highlight\":72802,\"Ġbrethren\":72803,\"ÙĪÙĦ\":72804,\"ĠdequeueReusableCellWithIdentifier\":72805,\"apult\":72806,\".bottomAnchor\":72807,\"Ġopcion\":72808,\"ĠoutFile\":72809,\"reating\":72810,\"din\":72811,\"_sampler\":72812,\"ĉglEnable\":72813,\"ptype\":72814,\"_CONDITION\":72815,\"-efficient\":72816,\"&o\":72817,\"Ġjc\":72818,\"Ð§\":72819,\"/Form\":72820,\")frame\":72821,\"Ġbinge\":72822,\"_closure\":72823,\"IMA\":72824,\"(nextProps\":72825,\"ĉcd\":72826,\"ĠgetMenu\":72827,\"ĠgetSupportActionBar\":72828,\"Ġmanifold\":72829,\"ZR\":72830,\"changer\":72831,\"assing\":72832,\"dish\":72833,\"ĠMou\":72834,\".netflix\":72835,\"Ġpostcode\":72836,\"Ġwomb\":72837,\"ĠArs\":72838,\"âĢ¦)\":72839,\"ĠlineWidth\":72840,\"Deal\":72841,\"aras\":72842,\"ĠGranted\":72843,\"Ġhoax\":72844,\"Ġdirectional\":72845,\".KeyChar\":72846,\"Ġ==\\\"\":72847,\"ĠVerde\":72848,\"_KP\":72849,\"Ġsurrogate\":72850,\"ĠDUI\":72851,\"upyter\":72852,\"Ġpense\":72853,\"ĠRAND\":72854,\"(exc\":72855,\"Ġmisunderstood\":72856,\"ĠCUT\":72857,\"Ġä¸Ń\":72858,\"ĉti\":72859,\"_inside\":72860,\"Ġbicycles\":72861,\"Ġdean\":72862,\"directive\":72863,\".peer\":72864,\"icina\":72865,\"_iters\":72866,\"Ġimplying\":72867,\".obtain\":72868,\"Ġpsychiatrist\":72869,\"userService\":72870,\"elivery\":72871,\"ĉpart\":72872,\"Ġhurried\":72873,\"Ġbum\":72874,\"Ġhepatitis\":72875,\"jid\":72876,\"']>;Ċ\":72877,\"Ġunconventional\":72878,\"Ġfascist\":72879,\"ĠPey\":72880,\"è¯Ń\":72881,\"')}</\":72882,\".Cluster\":72883,\"ĠBitConverter\":72884,\"edata\":72885,\"Î¿Ïħ\":72886,\"âĶĤ\":72887,\"AppBundle\":72888,\".httpClient\":72889,\"Ġapo\":72890,\"AINS\":72891,\"ĠVF\":72892,\"_gid\":72893,\"Ġode\":72894,\"ERRY\":72895,\"ĠReceipt\":72896,\"ĠCandle\":72897,\"Ġmissionary\":72898,\"ĠCrane\":72899,\"ĠSTATES\":72900,\"bout\":72901,\"ayaran\":72902,\"...\\\",Ċ\":72903,\"Ġitinerary\":72904,\"(latitude\":72905,\"ĠCONS\":72906,\"/sidebar\":72907,\"Spider\":72908,\"GRID\":72909,\".debugLine\":72910,\"Ġ`'\":72911,\"-yellow\":72912,\"Ġrefinement\":72913,\"ĠMakeup\":72914,\"ĠDann\":72915,\"();čĊčĊčĊ\":72916,\"Ġovercoming\":72917,\"ĠBatter\":72918,\"/packages\":72919,\"ĠÐ²Ð¸Ð´\":72920,\"Ġary\":72921,\"âĢĿ?\":72922,\"rellas\":72923,\"Ġgrupos\":72924,\"ĠTypical\":72925,\"ĠMonsanto\":72926,\"Intersection\":72927,\"Ġtyre\":72928,\"======Ċ\":72929,\"Î®\":72930,\";;ĊĊ\":72931,\"Ġtrivia\":72932,\"_taken\":72933,\"Ġsmuggling\":72934,\"Ġnarrowed\":72935,\"áº©m\":72936,\"Ġpalabra\":72937,\"cea\":72938,\"particularly\":72939,\"AccessType\":72940,\"Ġcole\":72941,\"ToFit\":72942,\"Ġvere\":72943,\"ĠCOS\":72944,\"/videos\":72945,\"Ġ($(\\\"#\":72946,\"Ġcrane\":72947,\".hasMore\":72948,\"$path\":72949,\"ivism\":72950,\"Ġsupervisors\":72951,\"ĠFlores\":72952,\"programs\":72953,\".Zip\":72954,\"Ġimpacting\":72955,\"Ġmoto\":72956,\"ĠTJ\":72957,\"pegawai\":72958,\"_KIND\":72959,\"_interfaces\":72960,\"/****************************************\":72961,\"ĠLeaving\":72962,\"TextStyle\":72963,\"beiter\":72964,\"ĠWinning\":72965,\"-param\":72966,\"Gary\":72967,\"ĠSuns\":72968,\"alÄ±ÅŁ\":72969,\"duck\":72970,\"ĠthreadIdx\":72971,\"Ġpoets\":72972,\"Ġpleading\":72973,\"ĠCorinthians\":72974,\"fcc\":72975,\"awaiter\":72976,\"*-\":72977,\"Ġpersever\":72978,\"Ġactividades\":72979,\"_outline\":72980,\"-plan\":72981,\".scrollView\":72982,\"quat\":72983,\"Ġsamsung\":72984,\"Ġleveling\":72985,\"Ġsplitter\":72986,\"_geom\":72987,\"Ġprominently\":72988,\"ĠSeeds\":72989,\"åľŁ\":72990,\"uais\":72991,\"efully\":72992,\"IEnumerable\":72993,\"adds\":72994,\"versations\":72995,\"Ġdisables\":72996,\"ANDROID\":72997,\"ĠWeiter\":72998,\"_Format\":72999,\"_splits\":73000,\"ĠActiveSupport\":73001,\"(css\":73002,\"_micro\":73003,\"strike\":73004,\"ĠCauses\":73005,\"Ġvisibly\":73006,\"Cancelable\":73007,\"ĠYosh\":73008,\"Ġdraining\":73009,\"Ġcoli\":73010,\"asley\":73011,\"ĠResponsibilities\":73012,\"ĠSutton\":73013,\"*this\":73014,\"Shares\":73015,\"-graph\":73016,\"Ġenlarged\":73017,\"Routine\":73018,\"Ġframebuffer\":73019,\"Ġairflow\":73020,\"Ġtrx\":73021,\"ĠLeigh\":73022,\"ĠKens\":73023,\"(heap\":73024,\"Ġspilled\":73025,\"SCALL\":73026,\"ĠVelvet\":73027,\"actually\":73028,\"_ENCODING\":73029,\"ĠWorm\":73030,\"))}Ċ\":73031,\"ĠDangerous\":73032,\"Ġsuperintendent\":73033,\".look\":73034,\"Ġshel\":73035,\"/fs\":73036,\"Safety\":73037,\"å®ĭ\":73038,\".DEFINE\":73039,\"_factors\":73040,\"Ġpartido\":73041,\"Ġoptimizing\":73042,\"DoubleClick\":73043,\"-commercial\":73044,\"Ġlogically\":73045,\"cych\":73046,\"urve\":73047,\"Âµ\":73048,\"AILY\":73049,\"Ġreacting\":73050,\"_EXPR\":73051,\"kÃ¶\":73052,\".localizedDescription\":73053,\"Ġastounding\":73054,\"Ġpastry\":73055,\"Ġglossy\":73056,\"Ġbehaves\":73057,\"/ec\":73058,\"Ġclipped\":73059,\"Ġprowess\":73060,\"ĠUB\":73061,\"/*------------------------------------------------\":73062,\"ĉalpha\":73063,\"Ġextravag\":73064,\"Ġfinns\":73065,\"(Socket\":73066,\"ĠUnsafe\":73067,\"Ġquiere\":73068,\"_encoded\":73069,\"olumbia\":73070,\"Ġzab\":73071,\"stricted\":73072,\"Ġmnie\":73073,\"ĠMOS\":73074,\"Ġathletics\":73075,\"ĠKendall\":73076,\"Ġìĺ¤\":73077,\"AVAILABLE\":73078,\"inox\":73079,\"_OPCODE\":73080,\"ĠItemType\":73081,\"Ġcentrif\":73082,\"Ġinterstate\":73083,\"_books\":73084,\".delivery\":73085,\"ĠListe\":73086,\"orsi\":73087,\"_secure\":73088,\"growth\":73089,\"Ġvente\":73090,\"Ġpsychologists\":73091,\"ĠCCS\":73092,\"udence\":73093,\"Ġcrawler\":73094,\"/manual\":73095,\"ĠtextStyle\":73096,\"Ġpalindrome\":73097,\"Ġconducts\":73098,\"tabl\":73099,\"WithURL\":73100,\"/right\":73101,\"ĠDra\":73102,\".Mail\":73103,\"(sec\":73104,\"oftware\":73105,\"Ġseul\":73106,\"Ġwrinkles\":73107,\"_FW\":73108,\"Ay\":73109,\"ĠErnst\":73110,\"unbind\":73111,\"Ġcommend\":73112,\"_hooks\":73113,\"ĠMonetary\":73114,\"ĠQQ\":73115,\"unitOfWork\":73116,\"ĠEntityType\":73117,\"Ġhormonal\":73118,\".FAIL\":73119,\"@Slf\":73120,\"/channel\":73121,\"sono\":73122,\"Dans\":73123,\"_Register\":73124,\"Han\":73125,\"ORB\":73126,\"JKLMNOP\":73127,\"vented\":73128,\"Ġlongstanding\":73129,\"ĠbgColor\":73130,\"Ġ;)\":73131,\"ĠRobbie\":73132,\"(\\\".\\\"\":73133,\"Ġajust\":73134,\".handleClick\":73135,\"ratings\":73136,\"pter\":73137,\"Ġerotico\":73138,\"ĠJelly\":73139,\"******čĊ\":73140,\".DoesNotExist\":73141,\"ĉbe\":73142,\"$temp\":73143,\"\\\">&#\":73144,\"çĽ´\":73145,\"ĉPublic\":73146,\"Ŀì²´\":73147,\"ĠBuildings\":73148,\"-alone\":73149,\",'\\\\\":73150,\"Ġswaps\":73151,\"Ġperplex\":73152,\"_processors\":73153,\"ĠÐ´Ð²\":73154,\"ĠNYPD\":73155,\"PCR\":73156,\"æ¯ı\":73157,\"Ġhoje\":73158,\"EditMode\":73159,\"Ġvulgar\":73160,\"Ġverde\":73161,\"Ġ()=>{Ċ\":73162,\"/frontend\":73163,\"Ġtelefone\":73164,\"Ġlantern\":73165,\".pageX\":73166,\"ĠDud\":73167,\"limitations\":73168,\"Ġnotifier\":73169,\"ĠMessaging\":73170,\"!important\":73171,\"Ġsurgeons\":73172,\")=(\":73173,\"FixedSize\":73174,\".Zoom\":73175,\"inan\":73176,\"Ġcreds\":73177,\"ĠBUF\":73178,\".StackTrace\":73179,\"Ġwarranted\":73180,\"Ġsourcing\":73181,\"Ġconna\":73182,\"_FRE\":73183,\"Ġwoll\":73184,\"Ġrefining\":73185,\"_ALLOWED\":73186,\"_mv\":73187,\"ĠWorce\":73188,\"ĠSinclair\":73189,\"Checksum\":73190,\"Ġunlocks\":73191,\"ĠMarkdown\":73192,\"Ġfishermen\":73193,\"Dub\":73194,\"ĠBonnie\":73195,\"ĠĠĠĠĠĠĠĠĉĊ\":73196,\"Ġverz\":73197,\">,</\":73198,\"><![\":73199,\"['<{\":73200,\"jec\":73201,\"ĠErg\":73202,\"rather\":73203,\"Ġpalabras\":73204,\"ĠPACKET\":73205,\"mise\":73206,\"daq\":73207,\"ĠOktober\":73208,\"(GLFW\":73209,\"ĠHenri\":73210,\"ĠFot\":73211,\"ĠDuo\":73212,\"ĠNES\":73213,\"Ġsalsa\":73214,\"Ġunbiased\":73215,\"@SpringBootTest\":73216,\"Ġoffs\":73217,\"åħ¬åı¸\":73218,\"Ġamounted\":73219,\"FullPath\":73220,\"Ġquat\":73221,\"Ġmaiden\":73222,\"ĠSubset\":73223,\"ĠApplicationDbContext\":73224,\"mirror\":73225,\"nex\":73226,\".street\":73227,\"setQuery\":73228,\"$results\":73229,\"adero\":73230,\"gressor\":73231,\"_bug\":73232,\"isser\":73233,\"ĠSears\":73234,\"ĠfillColor\":73235,\".masks\":73236,\"ĠDiablo\":73237,\"_ANDROID\":73238,\"ÐŀÐ±\":73239,\"Ġfreaking\":73240,\"Ġrinse\":73241,\"(pkt\":73242,\"Ġbooklet\":73243,\"Ġsanctioned\":73244,\"Ġstreamed\":73245,\"tabpanel\":73246,\"ĠReturning\":73247,\"PlainText\":73248,\"LOYEE\":73249,\"alesce\":73250,\"Ð¾ÐºÐ°\":73251,\"ĠFixture\":73252,\"assadors\":73253,\"Ġdisbelief\":73254,\"ĠLust\":73255,\"Ġradicals\":73256,\".Features\":73257,\"_inches\":73258,\"(primary\":73259,\"ĠJMenuItem\":73260,\"_take\":73261,\"ĠCoke\":73262,\"UnitOfWork\":73263,\"ĠWCHAR\":73264,\"Ġconscient\":73265,\"onenumber\":73266,\"PING\":73267,\"abajo\":73268,\"](\\\"\":73269,\".sales\":73270,\"_here\":73271,\"ĠoffsetX\":73272,\"tagName\":73273,\"ĠÙĬ\":73274,\"_Right\":73275,\"ilig\":73276,\"theValue\":73277,\"ocard\":73278,\"Ġconsultancy\":73279,\"Ġblij\":73280,\"gorm\":73281,\"Navigate\":73282,\"Ä±c\":73283,\"IllegalArgumentException\":73284,\"_ve\":73285,\".CONTENT\":73286,\"uropean\":73287,\".radio\":73288,\"Ġenvisioned\":73289,\"ĠSOM\":73290,\".sd\":73291,\"ANTITY\":73292,\"ĠCALLBACK\":73293,\"Ġhg\":73294,\"decrypt\":73295,\"ç®±\":73296,\"\\\\Queue\":73297,\"ĠMILF\":73298,\"Ġrecurse\":73299,\"ĠDante\":73300,\".gamma\":73301,\"orks\":73302,\"(\\\"\\\"))Ċ\":73303,\"ĠGrim\":73304,\".openg\":73305,\"ĠMichele\":73306,\"Analy\":73307,\"ĠPru\":73308,\"_redirected\":73309,\"_pal\":73310,\"fallback\":73311,\"ĠåŃĹ\":73312,\"Ġdinners\":73313,\"Generating\":73314,\"$\\\",\":73315,\"historic\":73316,\"getSimpleName\":73317,\"ĠMillions\":73318,\"-global\":73319,\"routing\":73320,\"Ġconsolidate\":73321,\"Ġrecoil\":73322,\"ObjectOfType\":73323,\"Ġdesperation\":73324,\"Anywhere\":73325,\"ĠgetModel\":73326,\"_kill\":73327,\"obook\":73328,\"/display\":73329,\"\\\"/>ĊĊ\":73330,\"Ġmayo\":73331,\"ĠÑģÐ¿Ð¸ÑģÐ¾Ðº\":73332,\"Ġgoalie\":73333,\"xDF\":73334,\"ĠPreparation\":73335,\"Ġdependable\":73336,\".INVALID\":73337,\"...'\":73338,\"natal\":73339,\"moduleName\":73340,\"carbon\":73341,\"PAL\":73342,\"Ġmee\":73343,\"Ġcasing\":73344,\"é¡¹çĽ®\":73345,\"nicas\":73346,\"ĠHamm\":73347,\"ĠBabe\":73348,\"owane\":73349,\"Ġsynonym\":73350,\"ĠQin\":73351,\"ioc\":73352,\"emotion\":73353,\"Ġfermentation\":73354,\"Ġcumpl\":73355,\"ĠElectricity\":73356,\"(ROOT\":73357,\"tester\":73358,\"ĠHusband\":73359,\"ĠBau\":73360,\"_MACRO\":73361,\"akening\":73362,\"ĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĊ\":73363,\".fin\":73364,\"ĠConfidential\":73365,\"iez\":73366,\"MBER\":73367,\"Ġsperma\":73368,\"ĠHPV\":73369,\"txn\":73370,\"CONTACT\":73371,\".Throw\":73372,\"Ġmural\":73373,\"ĠTwist\":73374,\"(&___\":73375,\"Ġjd\":73376,\"Ġempowerment\":73377,\"Ġdistint\":73378,\"Ġbombings\":73379,\"Outcome\":73380,\"Ġshorten\":73381,\"å¾Į\":73382,\"ACCOUNT\":73383,\"_coverage\":73384,\"enco\":73385,\"_refer\":73386,\"setMessage\":73387,\"Ġreperc\":73388,\"ptides\":73389,\"Ġdeity\":73390,\"uchsia\":73391,\"(ht\":73392,\".subscription\":73393,\"Ġredistributed\":73394,\"ĠDynasty\":73395,\"_vc\":73396,\"-framework\":73397,\"ryfall\":73398,\"Ġgating\":73399,\"ĠLorenzo\":73400,\"oodoo\":73401,\"Ġdigestion\":73402,\"Ġfooting\":73403,\"ĉHashMap\":73404,\"realDonaldTrump\":73405,\"Ġapache\":73406,\"(valor\":73407,\"Ġpoisonous\":73408,\".Permission\":73409,\"Ġparamount\":73410,\"weit\":73411,\"lland\":73412,\"Ġhypotheses\":73413,\"ĠPry\":73414,\"Ġhomem\":73415,\"(Device\":73416,\"indice\":73417,\"eva\":73418,\"presence\":73419,\"ĠBentley\":73420,\"ĠEnding\":73421,\"Ġdomest\":73422,\"ĉtp\":73423,\"ĉerrors\":73424,\"corner\":73425,\"lda\":73426,\"ĊĉĉĉĉĊ\":73427,\"_PERSON\":73428,\"ĠSergey\":73429,\"ĠParses\":73430,\"-fiction\":73431,\".BackgroundColor\":73432,\"Ġsommes\":73433,\"Ġcoolest\":73434,\"Ġrubble\":73435,\".jobs\":73436,\"Ġdrowning\":73437,\"adoras\":73438,\"Ġwinger\":73439,\"ĠIncreasing\":73440,\"ÙĬØ©\":73441,\"BBBB\":73442,\"(Role\":73443,\"Ġoddly\":73444,\"DevExpress\":73445,\"-util\":73446,\"ĠShemale\":73447,\"primitive\":73448,\"Ġaffirmed\":73449,\".returnValue\":73450,\"-live\":73451,\"ĠActionController\":73452,\"Ã«l\":73453,\"erculosis\":73454,\"Ġprakt\":73455,\"Ġgeopol\":73456,\"pics\":73457,\"CDC\":73458,\".Fl\":73459,\".sid\":73460,\"rieben\":73461,\"(vars\":73462,\"+self\":73463,\"Ġinteriors\":73464,\"ĠAugustine\":73465,\"\\\":@\\\"\":73466,\"ĠStealth\":73467,\"ĠgetColor\":73468,\"ĠGentle\":73469,\"~\\\":\\\"\":73470,\"Ġwhim\":73471,\"('</\":73472,\"ĠSSE\":73473,\"ĠViolet\":73474,\"_cred\":73475,\"Ġata\":73476,\"ĠAzerbaijan\":73477,\"Ġ?????\":73478,\".every\":73479,\"(connect\":73480,\"ĠDrone\":73481,\"Ġtolerant\":73482,\"subtotal\":73483,\"_shuffle\":73484,\"ustainability\":73485,\"preferred\":73486,\"ĠSEX\":73487,\"Ġcongressman\":73488,\"Ġnamoro\":73489,\"Ġhonorable\":73490,\"ĠafterEach\":73491,\"ĠÅ¼yc\":73492,\"HAM\":73493,\".tom\":73494,\"Ġelong\":73495,\"ĠSerious\":73496,\"-Semitic\":73497,\"Ð¡ÑĤ\":73498,\"Ġflam\":73499,\"tener\":73500,\".TEST\":73501,\"ĠTRACK\":73502,\"ĠPhilips\":73503,\"ĠAren\":73504,\"ĠHicks\":73505,\"oined\":73506,\"ĠFah\":73507,\"isseur\":73508,\"Ġcircumcision\":73509,\"(tweet\":73510,\"Ġpoil\":73511,\"ĠSeen\":73512,\"_MAPPING\":73513,\"Ġinvariably\":73514,\"ĠFuse\":73515,\"Ġ'?'\":73516,\"=password\":73517,\"ĠëĤĺ\":73518,\"ĠIHttp\":73519,\"stype\":73520,\"fitness\":73521,\".Tags\":73522,\"Ġê°ľ\":73523,\"(DWORD\":73524,\"Ġqua\":73525,\"ĠMarvin\":73526,\"\\\"M\":73527,\".isAuthenticated\":73528,\".guard\":73529,\")?ĊĊ\":73530,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":73531,\"ĠShips\":73532,\"Ġsensit\":73533,\"};čĊčĊčĊ\":73534,\"ahaha\":73535,\"Ġlieutenant\":73536,\"ĠJaguar\":73537,\"Ġ//--------------------------------\":73538,\"UCE\":73539,\"Insp\":73540,\"ainter\":73541,\"_polygon\":73542,\".Down\":73543,\"Ġtextured\":73544,\".setAction\":73545,\"ogr\":73546,\"Ġscientifically\":73547,\"Ġshrine\":73548,\"Ġcloudy\":73549,\".Hour\":73550,\"PostBack\":73551,\"AZY\":73552,\"_candidates\":73553,\"(Search\":73554,\"Ġcommissioners\":73555,\"ĠBien\":73556,\"Ġdoctoral\":73557,\"ĠFeeling\":73558,\"_VERTICAL\":73559,\"ĠBd\":73560,\"nginx\":73561,\"Ġåľ¨\":73562,\"_argv\":73563,\"RSA\":73564,\"Ġeldest\":73565,\"-heavy\":73566,\"CONN\":73567,\"ĠHttpNotFound\":73568,\"-columns\":73569,\"ĠNPCs\":73570,\"Ġcafes\":73571,\"ĠgÃ©\":73572,\"Ġstalls\":73573,\"Ġforks\":73574,\"Ġpobl\":73575,\"Streams\":73576,\"Ġbastard\":73577,\"ĠRaptors\":73578,\"ĠGrammy\":73579,\"ĠGeh\":73580,\"_Tick\":73581,\"(preg\":73582,\"Ġlipstick\":73583,\"_ru\":73584,\"<H\":73585,\"ĠÄĳi\":73586,\".Car\":73587,\"Ġspared\":73588,\"monic\":73589,\"inctions\":73590,\"Africa\":73591,\"(dictionary\":73592,\"Ġ**)&\":73593,\"```\":73594,\"_pressure\":73595,\"mie\":73596,\"ĠRomanian\":73597,\"/mark\":73598,\"Ġmaintenant\":73599,\"Ġtren\":73600,\"ĠPostgreSQL\":73601,\"RELEASE\":73602,\"JPEG\":73603,\"Ġdedicate\":73604,\"MakeRange\":73605,\"Ġrobotics\":73606,\"aktiv\":73607,\"%%%\":73608,\"aar\":73609,\"viewModel\":73610,\"(mac\":73611,\"ucher\":73612,\"Ġdeben\":73613,\"Localization\":73614,\"Ð¾Ð·Ð²ÑĢÐ°ÑīÐ°ÐµÑĤ\":73615,\".setToolTip\":73616,\".fastjson\":73617,\"Ġperennial\":73618,\"-chief\":73619,\"kish\":73620,\"Ġattic\":73621,\"Subtitle\":73622,\"ĠSlam\":73623,\"ĠLiterary\":73624,\"ernes\":73625,\"ĠÑĤÐ¾Ð»ÑĮÐºÐ¾\":73626,\"ĠstartActivityForResult\":73627,\".ErrorMessage\":73628,\"binations\":73629,\"\\\"L\":73630,\"Ġforbid\":73631,\"Ġlodged\":73632,\".ListBox\":73633,\"ĠPSD\":73634,\"Ġcultura\":73635,\"UNCT\":73636,\"\\\"One\":73637,\"ĠGuill\":73638,\"ĠBattalion\":73639,\"Ġcaregivers\":73640,\"ĠKlo\":73641,\"Behind\":73642,\"Ġsearchable\":73643,\"_BOUND\":73644,\"ROC\":73645,\"Ġstereotype\":73646,\"Ġprepend\":73647,\"intersection\":73648,\"Basket\":73649,\"(lo\":73650,\"ĠfileInfo\":73651,\"ĠUIScrollView\":73652,\"ecessarily\":73653,\"ĠChes\":73654,\"-instance\":73655,\"Ġappart\":73656,\"ĠAmar\":73657,\"ĠrowData\":73658,\"Ġayuda\":73659,\"Ġcaravan\":73660,\"_pickle\":73661,\"Ġchaining\":73662,\")];ĊĊ\":73663,\"Ġboxed\":73664,\"aeper\":73665,\"ĠEVER\":73666,\"ynthesis\":73667,\"-fast\":73668,\"Ġë°°\":73669,\"åı¯ä»¥\":73670,\"Ġvolunteered\":73671,\"Ġexig\":73672,\"SIDE\":73673,\"ĠPhoneNumber\":73674,\"ulaire\":73675,\"ĠKad\":73676,\"Ġdarn\":73677,\"Ġyak\":73678,\"ĠBlink\":73679,\".spinner\":73680,\"Ġordeal\":73681,\"_enemy\":73682,\"ĠgetS\":73683,\"ĠBoo\":73684,\"LineNumber\":73685,\"_LOOK\":73686,\"ELCOME\":73687,\"Ġseams\":73688,\"Ġsagen\":73689,\"isclosed\":73690,\"(ray\":73691,\"[group\":73692,\"PTS\":73693,\".Navigate\":73694,\"ĠOwl\":73695,\"Ġdbus\":73696,\"Ġimpatient\":73697,\"ĠGupta\":73698,\"(objects\":73699,\"Ġapril\":73700,\"-qu\":73701,\"Ġoutras\":73702,\"ĠTHEM\":73703,\"ĠEMC\":73704,\"Empleado\":73705,\"Ġgrub\":73706,\"IAM\":73707,\"Ġvenom\":73708,\"Ġtranscend\":73709,\"Ġvictorious\":73710,\"ĠMayer\":73711,\"ĠÑĤÐ¾Ð²Ð°ÑĢ\":73712,\"ĠKelley\":73713,\"InputGroup\":73714,\"Ġrefill\":73715,\"WithType\":73716,\"Ġchauff\":73717,\"oldem\":73718,\"_tid\":73719,\"Ġflushed\":73720,\"\\\\system\":73721,\".randrange\":73722,\"ĠPOSITION\":73723,\"ĠTenant\":73724,\"conversion\":73725,\"calling\":73726,\"())),Ċ\":73727,\"Ð¾Ð½Ð°\":73728,\"Ġsideways\":73729,\"Ġlax\":73730,\"ĉrep\":73731,\"aepernick\":73732,\"Ġneger\":73733,\"ĠFlyers\":73734,\"Ġ\\\"@/\":73735,\"upakan\":73736,\"_elapsed\":73737,\"tube\":73738,\"PosX\":73739,\".sex\":73740,\"ĠlÃ¤sst\":73741,\"ĠGrave\":73742,\"åıĤ\":73743,\"(emp\":73744,\"(strtolower\":73745,\"converter\":73746,\"ĠSponsored\":73747,\"(worker\":73748,\"Ġmatrimon\":73749,\"Commission\":73750,\"(hw\":73751,\"_SIGNATURE\":73752,\"mek\":73753,\"Ġalgunas\":73754,\"_ET\":73755,\"istring\":73756,\"Lv\":73757,\"Slides\":73758,\"ĠweakSelf\":73759,\"Ġwk\":73760,\"ĠZig\":73761,\"Ġpubs\":73762,\"ĠBRA\":73763,\"Ġfluorescent\":73764,\"carry\":73765,\".erb\":73766,\"ĠIni\":73767,\".DrawString\":73768,\"ĠSEP\":73769,\"utters\":73770,\"Ùĳ\":73771,\"Royal\":73772,\"Ġcabbage\":73773,\"ĠSuk\":73774,\"]>=\":73775,\"ĠEdison\":73776,\"Ġspeculated\":73777,\".downcase\":73778,\"Ġtph\":73779,\"ĠÃĥ\":73780,\"Ġgunshot\":73781,\"rpm\":73782,\"Ġflutter\":73783,\"Ġanx\":73784,\"azes\":73785,\"QObject\":73786,\"ĠFavor\":73787,\"ĠmoduleName\":73788,\"&s\":73789,\"leh\":73790,\".Weight\":73791,\"ĠWAL\":73792,\"_VARS\":73793,\"ĠWasser\":73794,\"Ġoutbound\":73795,\"Ġerfolgre\":73796,\".valor\":73797,\"(light\":73798,\"ĠMagnus\":73799,\"Ġzoek\":73800,\"yh\":73801,\"Ġstylesheet\":73802,\">m\":73803,\"Whitespace\":73804,\"Ġ['/\":73805,\"ĉRequest\":73806,\"_increase\":73807,\"-distance\":73808,\"icolor\":73809,\"hci\":73810,\"ĠKING\":73811,\"PX\":73812,\"oil\":73813,\"eming\":73814,\"naments\":73815,\"Defines\":73816,\"Ġ[--\":73817,\"Ġvarios\":73818,\"ĠPRESS\":73819,\",axis\":73820,\"ĠCollider\":73821,\")}ĊĊ\":73822,\"Ġforcibly\":73823,\"Ġstaat\":73824,\"_STANDARD\":73825,\"Ġoccult\":73826,\"Ġbaptism\":73827,\"ĠCunningham\":73828,\"_builtin\":73829,\"CPF\":73830,\"[maxn\":73831,\"ĠRHS\":73832,\"ĠOnes\":73833,\"(_:\":73834,\"Ġinsecurity\":73835,\".registration\":73836,\"implified\":73837,\"ĠSymposium\":73838,\"hread\":73839,\"Ġquelle\":73840,\"Ġfrenzy\":73841,\"Calibri\":73842,\"ĠSPEED\":73843,\"oui\":73844,\"()],Ċ\":73845,\"according\":73846,\"Ġmcc\":73847,\"Ġasiat\":73848,\"Ġadjacency\":73849,\"ĠAble\":73850,\"Ġsaldo\":73851,\"nosti\":73852,\"Ġdime\":73853,\"etration\":73854,\"ĠModification\":73855,\"ĠHerb\":73856,\"Ġplaats\":73857,\"Ġinterpersonal\":73858,\"ĠíĻķìĿ¸\":73859,\"arme\":73860,\"Ġcomercial\":73861,\"ĠBates\":73862,\"(cards\":73863,\".getClient\":73864,\".NORMAL\":73865,\"ĉTest\":73866,\"ĠĠĠĠĠĠĠĠčĊĠĠĠĠĠĠĠĠčĊ\":73867,\"ĠRazor\":73868,\"weis\":73869,\"ITHUB\":73870,\"ĠENTITY\":73871,\"agit\":73872,\"Ġminecraft\":73873,\"proposal\":73874,\"Ġsalty\":73875,\"andr\":73876,\"ĠConclusion\":73877,\"Ġprudent\":73878,\"Ġ[@\":73879,\"ĠPuppet\":73880,\"igon\":73881,\"ĠGotham\":73882,\"Ġcheers\":73883,\"ĠShay\":73884,\"Ġji\":73885,\"ĠGDK\":73886,\"expert\":73887,\"Ġfunky\":73888,\"ĠZam\":73889,\"[NUM\":73890,\"Deque\":73891,\"_TWO\":73892,\"\\\\views\":73893,\"Ġprojekt\":73894,\"Ġdrowned\":73895,\"kids\":73896,\".sheet\":73897,\"Ġnond\":73898,\"Ġcourte\":73899,\"Ġ...ĊĊĊĊ\":73900,\"Ġpicturesque\":73901,\"Ġtubing\":73902,\"().\\\"\":73903,\"jets\":73904,\"_Public\":73905,\"ĠFarr\":73906,\"ĠArd\":73907,\"OURSE\":73908,\"Ġkadar\":73909,\"ĠProgramm\":73910,\".keyword\":73911,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":73912,\"iedades\":73913,\"atology\":73914,\"ĠDund\":73915,\"=count\":73916,\"Ġslowdown\":73917,\"-\\\",\":73918,\".ForegroundColor\":73919,\"Runs\":73920,\".TypeOf\":73921,\"$current\":73922,\"Ġupscale\":73923,\"ĉunion\":73924,\"(chip\":73925,\"umidity\":73926,\"=[]čĊ\":73927,\"Ġhart\":73928,\"Ġ$_[\":73929,\"ynec\":73930,\".Usuario\":73931,\"Ġoctave\":73932,\"Ġportrayal\":73933,\"ĠÐ½Ð¾Ð¼ÐµÑĢ\":73934,\"ĠOccupy\":73935,\"_nan\":73936,\"ĠSmartphone\":73937,\"hind\":73938,\"Ġwindshield\":73939,\"Ġloneliness\":73940,\"/chart\":73941,\"Ġactivates\":73942,\".ribbon\":73943,\"Ġlagi\":73944,\"Ġparach\":73945,\"Hyper\":73946,\"scaled\":73947,\"Tes\":73948,\"ĠBeet\":73949,\"Ġdissect\":73950,\"ĠCic\":73951,\"Ġ},ĊĊĊ\":73952,\">()ĊĊ\":73953,\".study\":73954,\"Ġcontrasting\":73955,\"ZERO\":73956,\"Ġtuna\":73957,\"ĠChow\":73958,\"_va\":73959,\"favor\":73960,\"[Index\":73961,\"ĠPowerShell\":73962,\"(proto\":73963,\"')):Ċ\":73964,\"_formatter\":73965,\"Christopher\":73966,\"OrNull\":73967,\"CISION\":73968,\"_consumer\":73969,\"Paste\":73970,\"(nome\":73971,\"enton\":73972,\"Ġunravel\":73973,\"_don\":73974,\"Ġparentheses\":73975,\"ĠNUIT\":73976,\"/]\":73977,\"ĠâĪ§\":73978,\"stacles\":73979,\"/comment\":73980,\"utting\":73981,\"Ġsloppy\":73982,\"([{\":73983,\".sav\":73984,\"toJson\":73985,\"Ġë¹Ħ\":73986,\"ĠPratt\":73987,\".modify\":73988,\".IsChecked\":73989,\"Ġvenez\":73990,\"ĠSETTINGS\":73991,\"jaw\":73992,\"Ġfirestore\":73993,\"Ġconsortium\":73994,\"Ġkab\":73995,\"ĠSupporting\":73996,\"ĠThesis\":73997,\"Ġnonlinear\":73998,\"Ġtextbox\":73999,\".\\\"\\\"\\\"\":74000,\"ĠEnerg\":74001,\".JOptionPane\":74002,\"Ġinterruption\":74003,\"Ã¨tres\":74004,\"Ġshale\":74005,\"ĠPlayed\":74006,\"Ġsociale\":74007,\"YGON\":74008,\"_BATCH\":74009,\"Ġtrimest\":74010,\"ĠProcedures\":74011,\"Ġattends\":74012,\"\\\"${\":74013,\"evaluation\":74014,\".ProgressBar\":74015,\"ĠAlexandra\":74016,\"chÃ©\":74017,\"_SEQUENCE\":74018,\"Ġcrochet\":74019,\"Ros\":74020,\"Ġihnen\":74021,\"Ġ\\\"***\":74022,\"Ġarous\":74023,\"Ġmodulus\":74024,\"_LINUX\":74025,\"StackSize\":74026,\"iationException\":74027,\".Mutable\":74028,\"Ġ)[\":74029,\"Ġpii\":74030,\"fifo\":74031,\"_PICK\":74032,\"Purpose\":74033,\"(Student\":74034,\"ĠNico\":74035,\"esz\":74036,\"/sm\":74037,\"ĠPPP\":74038,\"[input\":74039,\"åıĺ\":74040,\"Ġblasts\":74041,\"ĠMutual\":74042,\"rolley\":74043,\"Ġutiliser\":74044,\":The\":74045,\"åŁº\":74046,\".decoder\":74047,\"Ġobjetos\":74048,\"Ġawakening\":74049,\"ĠEnlight\":74050,\"ĉalign\":74051,\"_rewrite\":74052,\"/current\":74053,\"Ġdarauf\":74054,\"Cantidad\":74055,\",np\":74056,\"Ġvelocities\":74057,\"CLR\":74058,\"Ġmisinformation\":74059,\"Ġstreamlined\":74060,\"Ġgrooming\":74061,\"Ġazi\":74062,\"olg\":74063,\"Ġconstituent\":74064,\"Ġwee\":74065,\"ÑħÐ¾Ð´Ð¸Ð¼\":74066,\"ĠAlonso\":74067,\"ietf\":74068,\"cter\":74069,\"Ġthermostat\":74070,\"(CC\":74071,\"Ġstacking\":74072,\"_converter\":74073,\"ĠDisneyland\":74074,\"ĉfiles\":74075,\"ICI\":74076,\"_TOPIC\":74077,\"ĉElement\":74078,\"argas\":74079,\"Ġ\\\\@\":74080,\"ancock\":74081,\"ĠBaseEntity\":74082,\"(\\\"---\":74083,\"rbrakk\":74084,\"Ġnegatives\":74085,\"Ġvw\":74086,\"=fopen\":74087,\"chemist\":74088,\"Archivo\":74089,\"Ġ`.\":74090,\"ĠFOUR\":74091,\"(ai\":74092,\"TableWidgetItem\":74093,\"<?>>\":74094,\".pred\":74095,\"Trail\":74096,\"-factor\":74097,\"ĠImageButton\":74098,\"peria\":74099,\"ĠCelebration\":74100,\".ResponseBody\":74101,\"urchases\":74102,\"ĠgetKey\":74103,\"ĠCrab\":74104,\"Ġqi\":74105,\"ĠWick\":74106,\"Ġchast\":74107,\"Ġ......\":74108,\"Ġcomenz\":74109,\"Ġshards\":74110,\"ĠdÃ©cor\":74111,\"Ġhalves\":74112,\"QUENCY\":74113,\"Ġpowerhouse\":74114,\"LING\":74115,\"ClassLoader\":74116,\"centre\":74117,\"-send\":74118,\"mah\":74119,\"Ġshredded\":74120,\"ĠTIFF\":74121,\"inka\":74122,\".ĊĊĊĊĊ\":74123,\"Ġdesignate\":74124,\"ĠNightmare\":74125,\"ĠGenetic\":74126,\"_chance\":74127,\"(animation\":74128,\"quila\":74129,\"_species\":74130,\"NEY\":74131,\"oystick\":74132,\"rello\":74133,\"Î¬\":74134,\"Ġdivisive\":74135,\"ĠREC\":74136,\"Ġstumble\":74137,\"(fake\":74138,\"ĠLace\":74139,\"antaged\":74140,\"akest\":74141,\"promotion\":74142,\"ĠFowler\":74143,\"=center\":74144,\"ĠCiudad\":74145,\"Radi\":74146,\"ĠSleeping\":74147,\"utron\":74148,\"Ġquoi\":74149,\"ĠRAD\":74150,\"Ġexponentially\":74151,\"ĠBreed\":74152,\"Ġmonopol\":74153,\"highest\":74154,\"xmlns\":74155,\"IntPtr\":74156,\"Ġtutte\":74157,\"ĠRefriger\":74158,\"Ġé¡µéĿ¢\":74159,\"Ġzonder\":74160,\"lbrakk\":74161,\";element\":74162,\"ĠHed\":74163,\"Relations\":74164,\"ëħ\":74165,\"Correo\":74166,\"åł´\":74167,\"ĠMighty\":74168,\"ANGO\":74169,\"_compile\":74170,\".getCmp\":74171,\"Ġinvade\":74172,\".springboot\":74173,\"ĠTune\":74174,\"_snap\":74175,\"_FEED\":74176,\"Ġdecipher\":74177,\"=size\":74178,\"_fre\":74179,\"ĠTillerson\":74180,\"Ð¸ÐºÐ°\":74181,\"tight\":74182,\"Ġculprit\":74183,\"RTL\":74184,\"ĠPare\":74185,\"(pub\":74186,\"egov\":74187,\"Ġponto\":74188,\"Ġconsul\":74189,\"JSImport\":74190,\"Ġverwendet\":74191,\"ĠBooster\":74192,\"å¾ħ\":74193,\"Ġcarrot\":74194,\"verige\":74195,\"(LP\":74196,\"ĠwxT\":74197,\"Ġimproperly\":74198,\"\\\"):čĊ\":74199,\"Ġsuce\":74200,\"/modal\":74201,\"ĠICT\":74202,\".).ĊĊ\":74203,\"_marks\":74204,\"ĠCached\":74205,\"ĠCurriculum\":74206,\"Bs\":74207,\"ĉJOptionPane\":74208,\"ĽĦ\":74209,\"Ġcognition\":74210,\"ĠNegot\":74211,\"=result\":74212,\"_Font\":74213,\"arine\":74214,\"Ġconspic\":74215,\"ĠCalculation\":74216,\"ĠCEOs\":74217,\"-transparent\":74218,\"ĠBereich\":74219,\"ç¨ĭåºı\":74220,\".hy\":74221,\".Align\":74222,\"Ġhopeless\":74223,\"Ġcolomb\":74224,\"urbed\":74225,\"ĠSAX\":74226,\"Ġeinz\":74227,\"(zone\":74228,\"Ġmuzzle\":74229,\"Ġtrespass\":74230,\"ĠAbrams\":74231,\"ĠcompÃ©t\":74232,\"ĠSanctuary\":74233,\"ĠNSTextAlignment\":74234,\"Ġstav\":74235,\"Ġpragmatic\":74236,\"strength\":74237,\"WithOptions\":74238,\".band\":74239,\"aphael\":74240,\"Australian\":74241,\"ĠOSError\":74242,\"Manchester\":74243,\"Ide\":74244,\"\\\\Resource\":74245,\"Ð¾Ð´ÐµÑĢÐ¶\":74246,\"Ġzie\":74247,\"Harness\":74248,\".Tween\":74249,\"cams\":74250,\"âľĶ\":74251,\"-scalable\":74252,\"-ok\":74253,\"Ġjlong\":74254,\"ĠOlson\":74255,\"ĠOaks\":74256,\".slim\":74257,\"ĠsÅĤ\":74258,\"ĠnewObj\":74259,\".Inventory\":74260,\"Ġkenn\":74261,\"Ġnightmares\":74262,\"ircles\":74263,\".nt\":74264,\"gren\":74265,\"ĠTEN\":74266,\"ĠScots\":74267,\"ĠDisability\":74268,\"_manifest\":74269,\".sidebar\":74270,\"Ġshuffled\":74271,\"Ġhumility\":74272,\".tap\":74273,\"ĠGrain\":74274,\"noticed\":74275,\"ï¼īãĢĤ\":74276,\"_hpp\":74277,\"Ġdilation\":74278,\"Ġhandicap\":74279,\"getDate\":74280,\"ĠdziaÅĤ\":74281,\"').'</\":74282,\"recover\":74283,\"ysi\":74284,\"(gray\":74285,\"ahkan\":74286,\"Ġinterfering\":74287,\"_TOUCH\":74288,\"_reduction\":74289,\"Alter\":74290,\"Ġcuc\":74291,\"Expert\":74292,\"ĠLump\":74293,\"[:]\":74294,\"Ġreloc\":74295,\"Ġconduc\":74296,\"Charsets\":74297,\".listeners\":74298,\"-inverse\":74299,\"Ġsummons\":74300,\"ĠÃºnico\":74301,\"ĠOV\":74302,\"ĠSicher\":74303,\"ĠJFactory\":74304,\".getBoundingClientRect\":74305,\"jh\":74306,\"Ġskeletons\":74307,\"ĠAsians\":74308,\"ĠAMC\":74309,\"iselect\":74310,\".clientHeight\":74311,\"(fr\":74312,\"HasForeignKey\":74313,\".relative\":74314,\"ĠØ®\":74315,\"Ġmulticultural\":74316,\"_COLL\":74317,\"Ġmicrobial\":74318,\"Ġimportantes\":74319,\"Spain\":74320,\"Ġcylinders\":74321,\"ienie\":74322,\"_OWNER\":74323,\"(DIS\":74324,\"Ġfandom\":74325,\"(nx\":74326,\"ĠaplicaciÃ³n\":74327,\"ocator\":74328,\"essian\":74329,\"ĠClaude\":74330,\"Ġintolerance\":74331,\"ÅĤem\":74332,\"ĠSemantic\":74333,\".MiddleRight\":74334,\"AREST\":74335,\"Ġsieve\":74336,\"Ä±ÄŁÄ±\":74337,\"icable\":74338,\"ergic\":74339,\"Ġbattled\":74340,\"orbit\":74341,\")||(\":74342,\"uele\":74343,\"Ġfascination\":74344,\"ĠdÃ¥\":74345,\"ĠTight\":74346,\"_INCREF\":74347,\".IsSuccess\":74348,\",O\":74349,\"ĠstÃ¸r\":74350,\"Ġpressured\":74351,\".TRUE\":74352,\"ĠThousand\":74353,\"Ġgemeins\":74354,\"Ġzb\":74355,\"Ġspirituality\":74356,\"ĠZeus\":74357,\"ĠPowerful\":74358,\"battery\":74359,\"istes\":74360,\"Ġíĥ\":74361,\".shiro\":74362,\"ĠHipp\":74363,\"decltype\":74364,\".jface\":74365,\".temperature\":74366,\"Ġmarque\":74367,\"_bag\":74368,\"Atual\":74369,\"pricing\":74370,\"Clearly\":74371,\"_Abstract\":74372,\"Ã©k\":74373,\"ahrungen\":74374,\"Instr\":74375,\"ĉĊĊĊ\":74376,\"Ġchewing\":74377,\"ĠCoaching\":74378,\"$LANG\":74379,\"mallow\":74380,\"Ġseriousness\":74381,\"_cutoff\":74382,\"ĠQuarterly\":74383,\"}')ĊĊ\":74384,\"\\\")));ĊĊ\":74385,\"è§Ħ\":74386,\".Positive\":74387,\"-po\":74388,\"xito\":74389,\".Rad\":74390,\"Ġbrisk\":74391,\"ĠLifecycle\":74392,\"æķ°æį®åºĵ\":74393,\"fatal\":74394,\"Ġxpos\":74395,\".Detail\":74396,\"enal\":74397,\"MATCH\":74398,\"Ġheed\":74399,\"Ġafrican\":74400,\"Dados\":74401,\"berapa\":74402,\"Ġhelf\":74403,\"','',\":74404,\"Ġentrepreneurship\":74405,\"Ġcerts\":74406,\"ece\":74407,\">r\":74408,\"_fixture\":74409,\"Ġpooling\":74410,\"Ġmogelijk\":74411,\"ĠsetDate\":74412,\"æĶ¿\":74413,\"-complete\":74414,\"_RADIO\":74415,\"Ġkul\":74416,\"Ġgob\":74417,\"_SLAVE\":74418,\"Ġfurry\":74419,\"ĠNUITKA\":74420,\"ILITIES\":74421,\"Ġnoche\":74422,\"Ġcuff\":74423,\"Ġcontestants\":74424,\"ĠWV\":74425,\"Ġpassports\":74426,\"ĠÅĤ\":74427,\"ĠNail\":74428,\"_decimal\":74429,\"astle\":74430,\"ĠSoldiers\":74431,\"Recipient\":74432,\"Ġcoursework\":74433,\"Ġime\":74434,\"ĠSeats\":74435,\"_DL\":74436,\"Ġconsultations\":74437,\"_ADV\":74438,\"ĠIkea\":74439,\"Ġoficial\":74440,\"Ġregiment\":74441,\"ĠBaths\":74442,\"-pin\":74443,\"_BUCKET\":74444,\"ABCDEFGHIJKLMNOP\":74445,\"\\\"]));Ċ\":74446,\"<Mesh\":74447,\"\\\",{\":74448,\"Ġderives\":74449,\"âĢľFor\":74450,\"ĠYugosl\":74451,\"isEnabled\":74452,\"Ġsollten\":74453,\"Ġpetitions\":74454,\"overall\":74455,\"ĠgetTotal\":74456,\"_HINT\":74457,\"Minus\":74458,\"Ġanomalies\":74459,\"ĠPickup\":74460,\"==='\":74461,\"leitung\":74462,\"ĠDek\":74463,\"YSIS\":74464,\".sessions\":74465,\"Ġcarc\":74466,\"_Items\":74467,\"Ġintermittent\":74468,\".JsonProperty\":74469,\"ĠmMap\":74470,\"ĠKak\":74471,\"aincontri\":74472,\"_seek\":74473,\"Ġuname\":74474,\"_putstr\":74475,\"Fd\":74476,\"Limited\":74477,\"snow\":74478,\"ĠPavilion\":74479,\"ĠExact\":74480,\"Ġpostings\":74481,\"ĉdist\":74482,\"<stdlib\":74483,\"Lights\":74484,\"Ġfiltro\":74485,\"Workers\":74486,\"Ġsyslog\":74487,\"Girls\":74488,\"ĠGum\":74489,\"_years\":74490,\"'}}Ċ\":74491,\"ĠhÃ¤t\":74492,\"gay\":74493,\"(prob\":74494,\"ellas\":74495,\"Ġwilt\":74496,\".optimize\":74497,\"_DUMP\":74498,\"(XML\":74499,\"ĠDXGI\":74500,\"ĠmÃ©th\":74501,\"ITIZE\":74502,\"electron\":74503,\".cz\":74504,\"Ġsubsets\":74505,\"Ġresposta\":74506,\"Ġbead\":74507,\"Â».\":74508,\"ĠOSC\":74509,\"&page\":74510,\"gps\":74511,\"anian\":74512,\"Purple\":74513,\"Ġacronym\":74514,\"ROWN\":74515,\"Audit\":74516,\"Ġcourier\":74517,\"alie\":74518,\"ĠWass\":74519,\"Ġaudits\":74520,\"ĠPOV\":74521,\"ĠFacial\":74522,\"_strcmp\":74523,\"Ġ+%\":74524,\"ĠĠĠĠĠĊĊ\":74525,\"`);ĊĊ\":74526,\"EHICLE\":74527,\"[\\\"@\":74528,\"-national\":74529,\"éĽħé»ĳ\":74530,\"è½¯éĽħé»ĳ\":74531,\"_codigo\":74532,\"Ġunquestion\":74533,\"ilmington\":74534,\"requestCode\":74535,\"ĠIW\":74536,\".strategy\":74537,\"ĠSYMBOL\":74538,\"ĠgrÃ¶ÃŁ\":74539,\"_behavior\":74540,\"ĠrefreshToken\":74541,\"Ġmong\":74542,\"imentary\":74543,\"ĠShops\":74544,\"('?\":74545,\"_highlight\":74546,\"_lex\":74547,\"Ġilluminated\":74548,\"Ġpalp\":74549,\"-insert\":74550,\"Ġstrives\":74551,\"Ġforts\":74552,\"Ġembodiments\":74553,\"mpjes\":74554,\"_TOO\":74555,\"Ġdraggable\":74556,\"Ġimmersion\":74557,\"pins\":74558,\"ĠRegistr\":74559,\"ĠFreeBSD\":74560,\"_xlim\":74561,\"ĠTulsa\":74562,\"Snackbar\":74563,\"/date\":74564,\"Ġdavon\":74565,\"Ġautorelease\":74566,\"Ġvacations\":74567,\"ĉĉĠĉ\":74568,\"iceps\":74569,\"ĠRamp\":74570,\"ĠCynthia\":74571,\"_population\":74572,\"$$$\":74573,\"ĠTAR\":74574,\"enga\":74575,\"Ġpus\":74576,\"Ġå¹\":74577,\"Ġtimestep\":74578,\"Lifetime\":74579,\"Ġfilmer\":74580,\"YST\":74581,\"ĠGazette\":74582,\"Ġoutsider\":74583,\"ĠEXPORT\":74584,\"GORITHM\":74585,\".flex\":74586,\"ĠRoots\":74587,\"(pixel\":74588,\"zcze\":74589,\"airie\":74590,\"Ġoverloaded\":74591,\"STRACT\":74592,\"ĠCourier\":74593,\"ãģĸ\":74594,\"continent\":74595,\"Fred\":74596,\"Ġsemp\":74597,\"ĠStella\":74598,\"Ġdoubtful\":74599,\"admins\":74600,\"Ġopting\":74601,\"LOTS\":74602,\"Ġmanifesto\":74603,\"-folder\":74604,\"_dropout\":74605,\"utures\":74606,\"ÃŃveis\":74607,\"achievement\":74608,\"Ġcoy\":74609,\"faith\":74610,\"_HALF\":74611,\"irected\":74612,\"Ġcontato\":74613,\"Semaphore\":74614,\"Psi\":74615,\"Ġvitality\":74616,\"ĠFlatButton\":74617,\"ItemType\":74618,\"Ġimpecc\":74619,\"Ġbuoy\":74620,\"uin\":74621,\"Ġskyrocket\":74622,\"ĠSlayer\":74623,\"ĠRCMP\":74624,\"ĠSeventh\":74625,\"_Interface\":74626,\"Ġfierc\":74627,\"stations\":74628,\"ĠGraf\":74629,\"liced\":74630,\"Ġenumerator\":74631,\"Containers\":74632,\"Ġoi\":74633,\"ÃĩÃĥO\":74634,\"-ton\":74635,\"REP\":74636,\"(flow\":74637,\".coord\":74638,\"Gab\":74639,\"ĠMorph\":74640,\"ĠZoe\":74641,\"Ġharbour\":74642,\".messaging\":74643,\"_optional\":74644,\"ĠBaseActivity\":74645,\"resenter\":74646,\"Ġnbytes\":74647,\"Ġcourageous\":74648,\"=!\":74649,\"'It\":74650,\"Ġfors\":74651,\"Ġcorridors\":74652,\"ĠBEEN\":74653,\"Ġfused\":74654,\"=image\":74655,\".GridView\":74656,\"Ġsemen\":74657,\"igroup\":74658,\"uptime\":74659,\"ĠXB\":74660,\"æİĴåºı\":74661,\"Ġintegrates\":74662,\"_OC\":74663,\"Ġbailout\":74664,\"Ġteste\":74665,\"Ġocup\":74666,\"auled\":74667,\"_odd\":74668,\"pga\":74669,\"ĠASUS\":74670,\"ĠTSR\":74671,\"Ġoccupants\":74672,\"SetTitle\":74673,\"Schedulers\":74674,\"Ġbekommen\":74675,\"Bright\":74676,\"ĠMainForm\":74677,\"_('\":74678,\"FromArray\":74679,\"Ġindica\":74680,\"HAND\":74681,\"Orden\":74682,\"ĠTemper\":74683,\".statusText\":74684,\"political\":74685,\"ĠPercy\":74686,\"ãĢĤĊĊĊĊĊĊ\":74687,\".setX\":74688,\"getList\":74689,\"holes\":74690,\"Pix\":74691,\"Ġoutsourcing\":74692,\"ĠmessageId\":74693,\"ĠgetSession\":74694,\"ĠVIR\":74695,\"OfFile\":74696,\"ĠSpatial\":74697,\".FloatField\":74698,\")(__\":74699,\"ĠSwimming\":74700,\"ACLE\":74701,\"Ġsentir\":74702,\"Ġplunged\":74703,\"Ġaujourd\":74704,\"gunakan\":74705,\"(volume\":74706,\"Ġcrater\":74707,\".xls\":74708,\"ÂĢÂĻ\":74709,\"RenderWindow\":74710,\".usermodel\":74711,\"Ġfunctor\":74712,\"Domains\":74713,\"interpre\":74714,\"Ġabnormalities\":74715,\"arging\":74716,\"Democrats\":74717,\"Ġpalms\":74718,\"âłĢ\":74719,\"Ã¸d\":74720,\"*A\":74721,\"FromDate\":74722,\"|[\":74723,\"ĠAlternate\":74724,\"Ġpudo\":74725,\"Ġcondensed\":74726,\"(plan\":74727,\"deliver\":74728,\"Ġbulletin\":74729,\"']],\":74730,\"ĠcrÃ©er\":74731,\"-ip\":74732,\"Ws\":74733,\"\\\"\\\"\\\",Ċ\":74734,\"Ġikea\":74735,\"Ġvisite\":74736,\"Ġmultis\":74737,\"Resultado\":74738,\"ĠPhotographer\":74739,\"...',Ċ\":74740,\"Ġmigliori\":74741,\"ĠThreads\":74742,\"getStyle\":74743,\"eraÃ§Ã£o\":74744,\"<TSource\":74745,\"ĠGing\":74746,\"']\\\",\":74747,\"Ġsignaled\":74748,\"SuppressLint\":74749,\"Ġdword\":74750,\"ĠHuntington\":74751,\"ĠAAP\":74752,\"ANGLES\":74753,\".credentials\":74754,\"swagger\":74755,\"-console\":74756,\"\\\"--\":74757,\".TextInput\":74758,\"ĠNORTH\":74759,\"Ġnightly\":74760,\".FONT\":74761,\"Ġquotient\":74762,\"ä¹Ł\":74763,\"ĠschÃ¶n\":74764,\"ĠPlanner\":74765,\"Ġreadline\":74766,\"Ġconfronting\":74767,\"`}\":74768,\"ItemCount\":74769,\"ĉactive\":74770,\"ĠrÃ©pond\":74771,\"elmet\":74772,\"Ġgimm\":74773,\",nonatomic\":74774,\"ĠACTIVE\":74775,\"heure\":74776,\"/Private\":74777,\"Ġmec\":74778,\".Secret\":74779,\"ĠCIS\":74780,\"ÅĤug\":74781,\"(period\":74782,\"Ġllegar\":74783,\"uria\":74784,\"Describe\":74785,\"Ġpareja\":74786,\"ĠVed\":74787,\"-effects\":74788,\"ĠParsing\":74789,\"-resource\":74790,\"Ġaba\":74791,\"Ġ*,Ċ\":74792,\"Ġanatom\":74793,\"Ġ(*)(\":74794,\"-real\":74795,\"ĠVentures\":74796,\"ĠShields\":74797,\"ĠUniversities\":74798,\"PRESENT\":74799,\"ĠQLatin\":74800,\"Å¥\":74801,\"ĠWiley\":74802,\"Aaron\":74803,\"Ġracially\":74804,\"ĠNadu\":74805,\"ĠhttpResponse\":74806,\"ÃŃtica\":74807,\"Ġë°©\":74808,\"ĠgrÃ¡tis\":74809,\"ä»ĭ\":74810,\"omap\":74811,\"Ġanon\":74812,\"ĉpop\":74813,\"avatars\":74814,\"Ġsubparagraph\":74815,\"dzi\":74816,\"Projectile\":74817,\"DTV\":74818,\"listening\":74819,\"_regeneration\":74820,\"ĠShelter\":74821,\"<Vertex\":74822,\"/md\":74823,\"(le\":74824,\"Ġvak\":74825,\"selectedIndex\":74826,\"_]\":74827,\"ĠSynthetic\":74828,\"appId\":74829,\"ĠFired\":74830,\"Ġpamph\":74831,\"_latency\":74832,\"infile\":74833,\"(criteria\":74834,\"serialization\":74835,\"RCT\":74836,\"ĉev\":74837,\"ĠSCH\":74838,\"ĠOptical\":74839,\"Ġstirred\":74840,\"ĠPotion\":74841,\"ethical\":74842,\"::{Ċ\":74843,\"ĠPenguins\":74844,\"PHY\":74845,\"Decision\":74846,\"kart\":74847,\"Ġexporters\":74848,\"ĠPolyester\":74849,\"contres\":74850,\"ĠLawson\":74851,\"ĠEmployer\":74852,\"Ġsass\":74853,\"Ġdowntime\":74854,\"Ġbrokerage\":74855,\"ĠRotary\":74856,\"ĠWahl\":74857,\"WARN\":74858,\"ĠsetActive\":74859,\"templ\":74860,\"Cheers\":74861,\"-shell\":74862,\"Fitness\":74863,\"Ġquil\":74864,\"Ġcleaners\":74865,\"ĠçĽ\":74866,\"ĠMilano\":74867,\"-associated\":74868,\"}}},Ċ\":74869,\"PFN\":74870,\"ĠonPage\":74871,\"_streams\":74872,\"Ġsculptures\":74873,\"Ġnailed\":74874,\"=sc\":74875,\"é¦ĸé¡µ\":74876,\"Ð¸Ð¼Ð²\":74877,\"connexion\":74878,\"JOB\":74879,\"ĠKarma\":74880,\"ĠSwiftUI\":74881,\"ĠDez\":74882,\"/UI\":74883,\"ĠìĻ\":74884,\"getClientOriginal\":74885,\"Ġpunishing\":74886,\"Ġodense\":74887,\",right\":74888,\"enerative\":74889,\"ĠProble\":74890,\"ĠAppState\":74891,\"Ġdisclosures\":74892,\"ĠCanter\":74893,\"composer\":74894,\"upaten\":74895,\"Ġsuccessors\":74896,\"\\\">'Ċ\":74897,\"Ġpreserves\":74898,\".opend\":74899,\"_Normal\":74900,\"/hr\":74901,\"Ranges\":74902,\",long\":74903,\"ĉĉĉĉĠĠĠĠĠĠĠĠĠĠĠ\":74904,\"productos\":74905,\"Ġflyer\":74906,\"ĠGrupo\":74907,\"Nickname\":74908,\"Hier\":74909,\"ĠDEA\":74910,\"Sprites\":74911,\"ĉmask\":74912,\"_reserved\":74913,\"-shop\":74914,\".notifications\":74915,\"Ġdivisible\":74916,\"iosk\":74917,\"kerja\":74918,\"ingt\":74919,\"ĠFifty\":74920,\"Ġaccountant\":74921,\"ĠExploration\":74922,\"_broadcast\":74923,\"Ġextraordinarily\":74924,\"Ġkot\":74925,\"Ġcircumference\":74926,\"rouch\":74927,\"[Boolean\":74928,\"crawler\":74929,\"/remove\":74930,\"arella\":74931,\"Ġsexes\":74932,\"Hints\":74933,\"Ġgamb\":74934,\"Ġdared\":74935,\"tested\":74936,\"_KEEP\":74937,\"Ġfiltration\":74938,\"ickey\":74939,\"ĠInfluence\":74940,\"Ġspecificity\":74941,\"_IDS\":74942,\"ĠRodney\":74943,\"_IRQHandler\":74944,\"OnError\":74945,\"ĠprevState\":74946,\"iegel\":74947,\"ĠLESS\":74948,\"ĠawakeFromNib\":74949,\"ĠLU\":74950,\"umably\":74951,\"ortality\":74952,\"Ġmandates\":74953,\"ĉversion\":74954,\"ĠparentNode\":74955,\"Ġpests\":74956,\"Ġcasc\":74957,\"ceptar\":74958,\"ĠWoody\":74959,\"eree\":74960,\"_pf\":74961,\".POS\":74962,\"istra\":74963,\"lew\":74964,\"Yang\":74965,\"Ġsystemd\":74966,\"Ġroam\":74967,\".Gray\":74968,\"Ġcondu\":74969,\"âĢĶincluding\":74970,\"Violation\":74971,\"Mahon\":74972,\"ĠMUSIC\":74973,\"ĠSiri\":74974,\"ĠEntered\":74975,\"Ġcertains\":74976,\"elah\":74977,\"ĉMain\":74978,\".DateField\":74979,\".Health\":74980,\"ĠKasich\":74981,\"Ġcanine\":74982,\"=root\":74983,\"uddle\":74984,\"\\\\common\":74985,\"ĠSultan\":74986,\"financial\":74987,\"ĠQSql\":74988,\"Ġascent\":74989,\"Ġprueba\":74990,\"ziehung\":74991,\".getError\":74992,\"ĠGloria\":74993,\"Echo\":74994,\"_CHOICES\":74995,\"_eps\":74996,\"/provider\":74997,\"PHONE\":74998,\"åħ³éĹŃ\":74999,\"Ġcompromising\":75000,\"_APPRO\":75001,\"ProcessEvent\":75002,\"ĠbyteArray\":75003,\"ĠCruc\":75004,\"Â¨\":75005,\"Ġicing\":75006,\"ĠPCM\":75007,\"vect\":75008,\"Amy\":75009,\"ĠVacuum\":75010,\"incident\":75011,\"Ġusern\":75012,\"zbek\":75013,\"]+)/\":75014,\"Ġ}}\\\"><\":75015,\"ĠGetData\":75016,\"cntl\":75017,\"Ġsagt\":75018,\"_PRIMARY\":75019,\"Ġler\":75020,\"ĠFUCK\":75021,\"ĠStarr\":75022,\"IH\":75023,\"Ã¶rper\":75024,\"yms\":75025,\"])]Ċ\":75026,\"/tool\":75027,\"combination\":75028,\"Ġtamp\":75029,\"ĠBeit\":75030,\"ĠNIGHT\":75031,\"ĠannÃ©e\":75032,\"(am\":75033,\"\\\\Traits\":75034,\":\\\\\\\"\":75035,\"Ġcarga\":75036,\".ide\":75037,\"Ġdikke\":75038,\"Compet\":75039,\"Ġscooter\":75040,\"ĠxPos\":75041,\"(interp\":75042,\"Ġhasil\":75043,\"clid\":75044,\"Ġheures\":75045,\"glomer\":75046,\"shares\":75047,\"ï¼ĮĊĊ\":75048,\"ponde\":75049,\"áº£i\":75050,\"_duplicates\":75051,\"songs\":75052,\"}];Ċ\":75053,\"ĠSniper\":75054,\"ĠThur\":75055,\"ropp\":75056,\"Ġgrues\":75057,\"Ġores\":75058,\"ushima\":75059,\"Ġusability\":75060,\"éĴŁ\":75061,\"/member\":75062,\"oldemort\":75063,\"IsActive\":75064,\"GetEnumerator\":75065,\"mux\":75066,\"WINDOWS\":75067,\"NegativeButton\":75068,\"à¸³\":75069,\"-makers\":75070,\"ãĤ¤ãĥ³\":75071,\"ĠBerm\":75072,\"ByExample\":75073,\"ĠRÃ¼ck\":75074,\"Shows\":75075,\"ghi\":75076,\"ĠIhrer\":75077,\"ĠCrud\":75078,\"chef\":75079,\"_auc\":75080,\"ĠapÃ³s\":75081,\"ankan\":75082,\"ĠKDE\":75083,\"ILLS\":75084,\"Ġanglais\":75085,\"-refresh\":75086,\"ĉrange\":75087,\"xmm\":75088,\"(edges\":75089,\"Ġappel\":75090,\"\\\";}\":75091,\"Ġedi\":75092,\"Ġswollen\":75093,\"Ġbutcher\":75094,\"icides\":75095,\"hound\":75096,\"Ġ^(\":75097,\"ĠEvalu\":75098,\"ĠkeyboardType\":75099,\"SSID\":75100,\"robat\":75101,\"Ġnik\":75102,\"Ġstrawberries\":75103,\"\\\\\\\"]\":75104,\"nosis\":75105,\"MED\":75106,\"çĪ\":75107,\"äºĶ\":75108,\"imax\":75109,\"\\\\Annotation\":75110,\"Ġnuru\":75111,\"ĠMinimal\":75112,\"Ġwordpress\":75113,\"Ġcolder\":75114,\"ĉparse\":75115,\"/stretch\":75116,\"æī§è¡Į\":75117,\"romosome\":75118,\"DIM\":75119,\"Ġtentative\":75120,\":NSUTF\":75121,\",img\":75122,\"ĠMATERIAL\":75123,\"ĠJetBrains\":75124,\"Legendary\":75125,\"ĉstrncpy\":75126,\"Ġdefs\":75127,\"NumberFormatException\":75128,\"Ġbytecode\":75129,\"Ġwissen\":75130,\"_MORE\":75131,\"łíĥĿ\":75132,\"ĠCoff\":75133,\".Condition\":75134,\"ĠdÃ©part\":75135,\"dsn\":75136,\"Ġparametro\":75137,\"\\\\L\":75138,\".nanoTime\":75139,\"BOTTOM\":75140,\".What\":75141,\"ëĦ\":75142,\"ĠDix\":75143,\"_DA\":75144,\"(Container\":75145,\"ayar\":75146,\"Flexible\":75147,\".Raycast\":75148,\"ĠEdwin\":75149,\"[url\":75150,\"ÂĴ\":75151,\".strokeStyle\":75152,\"ĠPolynomial\":75153,\"ilitating\":75154,\"ĠQVBoxLayout\":75155,\"(rep\":75156,\".vn\":75157,\"-assets\":75158,\"CHASE\":75159,\"ĠEssentials\":75160,\"jylland\":75161,\"Ġaxs\":75162,\"ĠTrem\":75163,\".mainloop\":75164,\"ĠWINDOWS\":75165,\".REQUEST\":75166,\"Ġreint\":75167,\"ĠLibre\":75168,\"cheon\":75169,\"Ġguerr\":75170,\"ĉNdrFcShort\":75171,\".softmax\":75172,\"ĠAsus\":75173,\"-score\":75174,\"ĠJOHN\":75175,\">Status\":75176,\">Edit\":75177,\"ĠCame\":75178,\"ĠAshe\":75179,\"_using\":75180,\"ĠLone\":75181,\"Ġlesen\":75182,\"Ġreversing\":75183,\"ngrx\":75184,\".signature\":75185,\"-Assad\":75186,\"/native\":75187,\"_ratings\":75188,\"Ġnya\":75189,\"Ġadidas\":75190,\"(optional\":75191,\"\\\"](\":75192,\"Ġrecurrence\":75193,\"ĠBMP\":75194,\"ÏĮ\":75195,\"_gp\":75196,\"\\\">\\\\\":75197,\"_wrong\":75198,\"yps\":75199,\".Proxy\":75200,\"_UDP\":75201,\"QtCore\":75202,\"LinkedIn\":75203,\"Ġcavern\":75204,\"ĠspÃ©cial\":75205,\"_wire\":75206,\"Ġnanop\":75207,\".ball\":75208,\"Ġreducers\":75209,\"Ġmailed\":75210,\"dong\":75211,\"Ġopposes\":75212,\"ĠHanson\":75213,\"ĠSaturdays\":75214,\"acomment\":75215,\"_MetaData\":75216,\"ĠGalactic\":75217,\"(\\\"/\\\")\":75218,\"ĠCleaner\":75219,\"_TERM\":75220,\"Ġclaro\":75221,\".OUT\":75222,\"å®¡\":75223,\"Ġslik\":75224,\"Ġjednak\":75225,\"HandlerContext\":75226,\"Ġirradi\":75227,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":75228,\".tight\":75229,\"Breadcrumb\":75230,\"frey\":75231,\"Ġê°Ŀì²´\":75232,\"lbrace\":75233,\"LEGAL\":75234,\"-gun\":75235,\"ĠBlogs\":75236,\"ĠShirley\":75237,\"ĠPune\":75238,\"ursions\":75239,\"Ġsubtraction\":75240,\"Ġ***Ċ\":75241,\"armacy\":75242,\"Ġsamt\":75243,\"=\\\").\":75244,\"Ġpermissible\":75245,\"(rd\":75246,\"ĠWATER\":75247,\"Ġprofesional\":75248,\"Ġhandbook\":75249,\"Ġmourning\":75250,\"arefa\":75251,\"Ġasn\":75252,\"isex\":75253,\"Ġcontenu\":75254,\"ĠUNC\":75255,\".getPrice\":75256,\"ĠPumpkin\":75257,\"/ĊĊĊ\":75258,\"Ġcosine\":75259,\"Ġnied\":75260,\"ĠBrake\":75261,\"DataURL\":75262,\"ĠDataGridViewCellStyle\":75263,\"ĠReturned\":75264,\"ewood\":75265,\"iquÃ©\":75266,\"Ġbleak\":75267,\"Ġwebhook\":75268,\".They\":75269,\"arb\":75270,\"LANGADM\":75271,\"_ordered\":75272,\"Ġprank\":75273,\".NewRequest\":75274,\"Ġliterals\":75275,\"'}>Ċ\":75276,\"serialized\":75277,\"ktor\":75278,\"(rx\":75279,\"ĠgetY\":75280,\"ĉStringBuffer\":75281,\"(slice\":75282,\"rbrace\":75283,\"emento\":75284,\"Ġlanc\":75285,\"Deployment\":75286,\"Ġconcentrating\":75287,\"Sketch\":75288,\"Ġbrightly\":75289,\"Beginning\":75290,\"ĠDah\":75291,\"Tk\":75292,\"Insensitive\":75293,\"Ġsabe\":75294,\"(Module\":75295,\"Ġcedar\":75296,\"_continue\":75297,\"ĠwithObject\":75298,\"Ġcolumna\":75299,\"ĠCalder\":75300,\"ĠÐ¿Ð¾Ð¼\":75301,\"_softc\":75302,\"shaled\":75303,\"ertation\":75304,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":75305,\":@\\\"\\\"\":75306,\"ĠfaÃ§on\":75307,\"ustum\":75308,\"stk\":75309,\"_CRC\":75310,\"odzi\":75311,\"Ġascend\":75312,\"fgang\":75313,\"Ġprefab\":75314,\"Ġfindet\":75315,\":'+\":75316,\"åįķä½į\":75317,\"umbledore\":75318,\".invalidate\":75319,\"Ġtoi\":75320,\"angepicker\":75321,\"_AI\":75322,\"hil\":75323,\"Seat\":75324,\"Ġpiston\":75325,\"fib\":75326,\"_blueprint\":75327,\"ãĤ¸\":75328,\"_Record\":75329,\"rets\":75330,\"Fran\":75331,\"ĠCait\":75332,\"Ġpelic\":75333,\"Ġdna\":75334,\"ĠupdateTime\":75335,\"Ġ/^[\":75336,\"Ġrallied\":75337,\"ĠHimal\":75338,\"SSI\":75339,\"_planes\":75340,\"ĠOutstanding\":75341,\"ApplicationBuilder\":75342,\"stud\":75343,\"_locator\":75344,\"Ġabolition\":75345,\"Ġ($)\":75346,\"jerne\":75347,\"ĠAAC\":75348,\"/windows\":75349,\"-Cal\":75350,\"_SECONDS\":75351,\"Ġ''}Ċ\":75352,\"Ã¡ny\":75353,\"Ġyummy\":75354,\"æīĭæľºåı·\":75355,\"ĠVGA\":75356,\"ilate\":75357,\"ĠSurveillance\":75358,\"ĉGtk\":75359,\"ðŁĺ\":75360,\"Ġshimmer\":75361,\"alternate\":75362,\"ForSegue\":75363,\"uestra\":75364,\"-cover\":75365,\"asl\":75366,\"ĠInsets\":75367,\"lijah\":75368,\":S\":75369,\"ĉcategory\":75370,\"Ġfj\":75371,\"ÃŃlia\":75372,\"ĠMAD\":75373,\"@js\":75374,\"æŁ\":75375,\"Ġpooled\":75376,\"Ġtreaties\":75377,\"ĠBik\":75378,\"ĠHazel\":75379,\"Allocate\":75380,\"Ġairplanes\":75381,\"Ġsermon\":75382,\"ĠPositions\":75383,\"ĠMAIL\":75384,\"Stopping\":75385,\"avored\":75386,\"(Temp\":75387,\"Ġcheats\":75388,\".userID\":75389,\"Ġputa\":75390,\"-yyyy\":75391,\"UiThread\":75392,\"Ġofstream\":75393,\"\\\\Seeder\":75394,\"ĠCottage\":75395,\"Ġ^Ċ\":75396,\"ĠALTER\":75397,\"Ġquantify\":75398,\"reibung\":75399,\"Ġnecessities\":75400,\".LocalDate\":75401,\"ĠæĹ¥\":75402,\"pictures\":75403,\"Ġcrud\":75404,\"æľ¨\":75405,\"Ġdownturn\":75406,\"actoring\":75407,\"ĠDerm\":75408,\"Ġestruct\":75409,\"ĠMusik\":75410,\"Ġmlx\":75411,\".major\":75412,\".HttpSession\":75413,\"?<\":75414,\"yeah\":75415,\"Ġmojo\":75416,\"ĠUnityEditor\":75417,\"Ġrake\":75418,\"_tweet\":75419,\"ĠradioButton\":75420,\"ĠDominion\":75421,\"asString\":75422,\"ozy\":75423,\"Ġvodka\":75424,\"oglob\":75425,\"ĠAlumni\":75426,\"balances\":75427,\"_manual\":75428,\".loadtxt\":75429,\"_friends\":75430,\"ĠXmlDocument\":75431,\"[first\":75432,\"KeyCode\":75433,\"Ġpoetic\":75434,\"mina\":75435,\"Ġopciones\":75436,\"æīĵ\":75437,\"_supplier\":75438,\".FromResult\":75439,\"_district\":75440,\"ĠGala\":75441,\".qt\":75442,\"Ġcontractual\":75443,\"acons\":75444,\"-anchor\":75445,\"Ġyup\":75446,\"Ġunanswered\":75447,\"Ġmaxlen\":75448,\"ErrMsg\":75449,\"-sn\":75450,\"Ġhypnot\":75451,\"_WM\":75452,\"()][\":75453,\"Ġdeserving\":75454,\"owment\":75455,\"(Random\":75456,\"Ġvetor\":75457,\"ĠIST\":75458,\"Ð°Ð½Ð´\":75459,\"-lang\":75460,\"Ġsik\":75461,\"creasing\":75462,\"Ġportals\":75463,\"ĠBulldogs\":75464,\"promo\":75465,\"Ġprovoked\":75466,\"]};Ċ\":75467,\"ĠIbid\":75468,\"erglass\":75469,\"_WIFI\":75470,\"appropri\":75471,\"Ġredesigned\":75472,\"Ġ//----------------\":75473,\"zik\":75474,\"$o\":75475,\"ulton\":75476,\"ĠRelatives\":75477,\"Ġmetros\":75478,\"Ġmentoring\":75479,\"atÄĥ\":75480,\"ushman\":75481,\"Ġinherits\":75482,\"ĠRt\":75483,\"/preferences\":75484,\"imed\":75485,\"JOIN\":75486,\"(interface\":75487,\"Ġadept\":75488,\"ĠOffensive\":75489,\"ĠAGRE\":75490,\"onian\":75491,\".parsers\":75492,\"Ġpassphrase\":75493,\"Ġunserialize\":75494,\"Visited\":75495,\"ĠgetProperty\":75496,\"Ġnoc\":75497,\"edad\":75498,\"Ġ#-}ĊĊ\":75499,\"vida\":75500,\"solver\":75501,\"ĠMorales\":75502,\"Ġkvinne\":75503,\"ĠAccident\":75504,\"Ġveut\":75505,\"Ġmisguided\":75506,\"ĠRevelation\":75507,\"Ġrapide\":75508,\"punk\":75509,\"#----------------------------------------------------------------\":75510,\"ObjectId\":75511,\"abinet\":75512,\"extracomment\":75513,\"Ġbunny\":75514,\"ĠDeferred\":75515,\"utta\":75516,\"uae\":75517,\"busters\":75518,\"ĠSoil\":75519,\"GST\":75520,\".CurrentRow\":75521,\"ãģĳ\":75522,\"Ġgratuits\":75523,\"Ġcruiser\":75524,\"×ĳ\":75525,\"ĠTenn\":75526,\"jsc\":75527,\"ĠíķĦ\":75528,\"disposed\":75529,\"ABOUT\":75530,\"}ččĊ\":75531,\"expired\":75532,\"ĠXmlNode\":75533,\"ĠTattoo\":75534,\"Votes\":75535,\"Fold\":75536,\"Elizabeth\":75537,\"_FILENO\":75538,\"Ġconco\":75539,\"ĠGdk\":75540,\"opies\":75541,\"}}}\":75542,\"QUOTE\":75543,\"-II\":75544,\"spam\":75545,\"-li\":75546,\"Ġcarta\":75547,\".layouts\":75548,\"Ġbespoke\":75549,\"Ġamateurs\":75550,\"Ġcouleur\":75551,\"itamin\":75552,\"Ġirrespective\":75553,\"ĠblackColor\":75554,\".yahoo\":75555,\"Ġweary\":75556,\"Ġsweets\":75557,\"?\\\";Ċ\":75558,\"=\\\\\\\"%\":75559,\"_workspace\":75560,\"ĠDiameter\":75561,\"Ġamd\":75562,\"ĠNeue\":75563,\"ĠdbName\":75564,\"Jeremy\":75565,\"logfile\":75566,\"atrib\":75567,\"ĠHttpSession\":75568,\"ĉCreate\":75569,\"iddy\":75570,\".PARAM\":75571,\"Ġfian\":75572,\"Ġszcz\":75573,\"Ġqreal\":75574,\"_ESCAPE\":75575,\"usahaan\":75576,\".digest\":75577,\"ĠgetParent\":75578,\".DropDownList\":75579,\"ĠthÃ©\":75580,\"Ġmonstrous\":75581,\"Ġberhasil\":75582,\"\\\"\\\"\\\"čĊčĊ\":75583,\"SupportedContent\":75584,\"ĠGathering\":75585,\"incy\":75586,\".KeyCode\":75587,\"Ġfetus\":75588,\".cent\":75589,\"Ġbesonders\":75590,\"nilai\":75591,\"LTRB\":75592,\"Ġhinge\":75593,\"PROP\":75594,\".foundation\":75595,\"numer\":75596,\"-ranked\":75597,\"èį\":75598,\"Ġpainfully\":75599,\"Ġ(;;)\":75600,\"forme\":75601,\"Lady\":75602,\"/apple\":75603,\"ĠConstit\":75604,\"Ġstockings\":75605,\"æ´»\":75606,\"Ġmentors\":75607,\">Create\":75608,\"ĠInternalEnumerator\":75609,\"Ġtelevised\":75610,\"TokenType\":75611,\"Ġbrib\":75612,\"createView\":75613,\"/DTD\":75614,\"GitHub\":75615,\"(big\":75616,\"ĠmÃ¡ximo\":75617,\"å¾®è½¯éĽħé»ĳ\":75618,\".cf\":75619,\"ĠÂłĠÂłĠÂłĠÂł\":75620,\"<typeof\":75621,\"Ġprogressing\":75622,\".setWidth\":75623,\"(tv\":75624,\"Ġunfairly\":75625,\"ĠAnita\":75626,\"aryawan\":75627,\"Dal\":75628,\"URY\":75629,\"ogeneity\":75630,\"efa\":75631,\"/********************************************************************************\":75632,\"Ġdeja\":75633,\"OSE\":75634,\"rail\":75635,\"roof\":75636,\"_quotes\":75637,\"<j\":75638,\"ãĤ¨\":75639,\"(setting\":75640,\"levelname\":75641,\"_handling\":75642,\"Ã©ra\":75643,\"$j\":75644,\"Ġdarling\":75645,\".PathVariable\":75646,\"[source\":75647,\"MethodName\":75648,\"ĠOutlet\":75649,\"æĴŃ\":75650,\"ĠCocoa\":75651,\"Ubuntu\":75652,\"Ġmooie\":75653,\"Ġflorida\":75654,\"Ġrethink\":75655,\"ĠgetX\":75656,\"getElement\":75657,\"Ġradix\":75658,\"ĠGamer\":75659,\"dealloc\":75660,\"leftJoin\":75661,\"_SYN\":75662,\"GridLayout\":75663,\"\\\"go\":75664,\"(each\":75665,\"ĉscene\":75666,\"ĠPyErr\":75667,\"Howard\":75668,\".Signal\":75669,\"ĠTEM\":75670,\"Ġç§\":75671,\"VENTORY\":75672,\"Ġsimul\":75673,\"Ġ<<-\":75674,\"Ġturbines\":75675,\"Ġsurtout\":75676,\"alto\":75677,\"Ġunary\":75678,\"`čĊ\":75679,\"ĠScri\":75680,\"ĠMonk\":75681,\"Ġunfolded\":75682,\"Composition\":75683,\"PPER\":75684,\"Ġsiding\":75685,\"',{'\":75686,\"Ġtreff\":75687,\"_UNICODE\":75688,\"Ġderecho\":75689,\"Ġpolarity\":75690,\"Ġorc\":75691,\"<Document\":75692,\"(today\":75693,\".)ĊĊĊĊ\":75694,\"Ġseeming\":75695,\"\\\\V\":75696,\">ID\":75697,\"Ġfibonacci\":75698,\"(material\":75699,\"FLASH\":75700,\"directories\":75701,\"esters\":75702,\"TECTION\":75703,\"wrapped\":75704,\"-selection\":75705,\"-relative\":75706,\"(chr\":75707,\"Ġportfolios\":75708,\"ĠshowDialog\":75709,\"ingleton\":75710,\"ĠTICK\":75711,\"ĠInvestor\":75712,\"Ġbrav\":75713,\"ĠSVN\":75714,\"Ġhateful\":75715,\"rips\":75716,\"expiry\":75717,\"_coin\":75718,\">ĊĊĊĊĊ\":75719,\"Ġmarginalized\":75720,\"Ġexceedingly\":75721,\"navbarSupportedContent\":75722,\"(extension\":75723,\"Ġadvantageous\":75724,\".Microsoft\":75725,\"Ġensuite\":75726,\"-viol\":75727,\"_due\":75728,\"KH\":75729,\"ĠRomantic\":75730,\"inand\":75731,\"eci\":75732,\"reported\":75733,\"ĠCorpus\":75734,\"Ġspanking\":75735,\"ĠCrosby\":75736,\".Foundation\":75737,\"\\\\_\":75738,\"Ġannonces\":75739,\"Attachments\":75740,\"à¸²à¸£\":75741,\"ĠWax\":75742,\"ï¼ģï¼ģĊĊ\":75743,\"Ġsailed\":75744,\".Euler\":75745,\"ĉscroll\":75746,\"Ġpeasants\":75747,\"ĠBuilders\":75748,\".General\":75749,\"AREA\":75750,\"Ġmessing\":75751,\"vern\":75752,\"Ġdiaper\":75753,\"Ġoccupies\":75754,\"ĉlogin\":75755,\".LOC\":75756,\"igans\":75757,\"ï¼ģâĢĿ\":75758,\"_foot\":75759,\"_tau\":75760,\"-packages\":75761,\"recur\":75762,\"Alternative\":75763,\"ï¼ģãĢį\":75764,\"aroo\":75765,\"Ġtrustee\":75766,\",:]\":75767,\"æĸ¹å¼ı\":75768,\"?>>\":75769,\".Minute\":75770,\"Ġalcan\":75771,\"ĠConcepts\":75772,\"childNodes\":75773,\"Court\":75774,\"Ġcellar\":75775,\"lek\":75776,\"akis\":75777,\"Bubble\":75778,\"Ġobjected\":75779,\"Ġï»¿\":75780,\":]:Ċ\":75781,\".parseFloat\":75782,\"Ġsparks\":75783,\"-find\":75784,\"variation\":75785,\"Hack\":75786,\"Fans\":75787,\"_parsed\":75788,\"EntityType\":75789,\"auce\":75790,\"_trees\":75791,\"ĠEggs\":75792,\"UIBarButtonItem\":75793,\"_taxonomy\":75794,\"ĠSHOP\":75795,\"Twenty\":75796,\"_checks\":75797,\"ĠLX\":75798,\"utschein\":75799,\"(platform\":75800,\"Ġautopsy\":75801,\"Requirement\":75802,\"ĠRECT\":75803,\"toContain\":75804,\"','%\":75805,\"/editor\":75806,\"Ġqb\":75807,\"ĠEEG\":75808,\"hta\":75809,\"_TILE\":75810,\"-sum\":75811,\"ĠAlbuquerque\":75812,\"Ġshortcode\":75813,\"Ġsinus\":75814,\"Ġdesks\":75815,\"Ġpoop\":75816,\".opensource\":75817,\"ĠCollapse\":75818,\".der\":75819,\"Ġhawk\":75820,\"ĠVanguard\":75821,\"ĠMarriott\":75822,\"_Target\":75823,\"ĠBanana\":75824,\"_attention\":75825,\"ĠAriel\":75826,\"_ten\":75827,\"Ġbaker\":75828,\"âĢĶhe\":75829,\"ÄħÅ¼\":75830,\"velopment\":75831,\"Elf\":75832,\"_gchandle\":75833,\"Republicans\":75834,\"ĠitemBuilder\":75835,\"Won\":75836,\"_accum\":75837,\"ĠnewPassword\":75838,\"Ġdevoid\":75839,\"ĠMarkus\":75840,\"daemon\":75841,\".HttpContext\":75842,\"Krist\":75843,\"Ġaalborg\":75844,\"_trials\":75845,\"(assert\":75846,\"ãģ£ãģ¦\":75847,\"belt\":75848,\"Ġmildly\":75849,\"ervoir\":75850,\"Ġdescendant\":75851,\"ĠGiovanni\":75852,\"Ġdecltype\":75853,\"-Shirt\":75854,\"Ġapro\":75855,\"Applied\":75856,\".getParam\":75857,\"hof\":75858,\"urar\":75859,\"ĠOBS\":75860,\"_ser\":75861,\"(secret\":75862,\"[layer\":75863,\"Ġusefulness\":75864,\"ĠKou\":75865,\"_submission\":75866,\"_HORIZONTAL\":75867,\",tmp\":75868,\"/.Ċ\":75869,\"Ġlessen\":75870,\"_wc\":75871,\"_FINAL\":75872,\"Ð½Ð¾Ð¿\":75873,\".todos\":75874,\".XPath\":75875,\"ĠIData\":75876,\"Ġdoorstep\":75877,\"Ġcomposing\":75878,\"Ġhut\":75879,\"ĠVLAN\":75880,\"Ġoutf\":75881,\"è¯¥\":75882,\"(beta\":75883,\"***/ĊĊ\":75884,\"ĠIndo\":75885,\"Ġkla\":75886,\"_configure\":75887,\".Mark\":75888,\"oseconds\":75889,\"(Vertex\":75890,\"organisms\":75891,\"Ġffm\":75892,\"Ġdemolished\":75893,\"Ġ\\\"---\":75894,\"lesi\":75895,\"ĠSidney\":75896,\".getIndex\":75897,\".Monad\":75898,\"SelectedItem\":75899,\"ĠNavParams\":75900,\"azole\":75901,\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\":75902,\"_sentences\":75903,\"Ġinclination\":75904,\"ĠFathers\":75905,\"accountId\":75906,\"hari\":75907,\")>Ċ\":75908,\"/raw\":75909,\"Ġ'');ĊĊ\":75910,\"+l\":75911,\"(cd\":75912,\"Ġunzip\":75913,\"Ġglamorous\":75914,\"#\\\",\":75915,\"Ġnaw\":75916,\"Ġminib\":75917,\"ĠBran\":75918,\"Nach\":75919,\"_tweets\":75920,\"ĠCCP\":75921,\"%\\\"><\":75922,\"ĠStephens\":75923,\"masÄ±\":75924,\"'es\":75925,\"Ġrepar\":75926,\"_documents\":75927,\".closed\":75928,\"-ring\":75929,\"/categories\":75930,\"ĠDeepCopy\":75931,\"SUP\":75932,\".newaxis\":75933,\"Ġgdy\":75934,\"hoe\":75935,\"ĠReef\":75936,\"Ġpolitic\":75937,\"ĠRequirement\":75938,\"Ġsheds\":75939,\"sealed\":75940,\"Ġpathology\":75941,\"\\\"/><\":75942,\"modo\":75943,\"Ġstemming\":75944,\"Ġtaboo\":75945,\"ĠSavior\":75946,\"Ġ}čĊčĊčĊčĊ\":75947,\".cv\":75948,\"Ġjoueur\":75949,\"ĠCornwall\":75950,\"ĠReception\":75951,\"Ġillumination\":75952,\"Ġgdb\":75953,\"VEC\":75954,\"odu\":75955,\"ContentAlignment\":75956,\"stantial\":75957,\"baseline\":75958,\"_busy\":75959,\"/ĊĊĊĊ\":75960,\"ĠplayerId\":75961,\"æ£\":75962,\"_pet\":75963,\"ĠMiracle\":75964,\"urent\":75965,\"ĠMerlin\":75966,\"uben\":75967,\"ĠsetColor\":75968,\"Ġdarkest\":75969,\"stery\":75970,\"Ġcaric\":75971,\"Ġretard\":75972,\"ĠHousehold\":75973,\"Ġjal\":75974,\"Ġyp\":75975,\"\\\",\\\"\\\");Ċ\":75976,\"ĠAcer\":75977,\"[W\":75978,\"olkien\":75979,\"ayo\":75980,\"PrivateKey\":75981,\"ĠSTATS\":75982,\"ĠÐ½ÑĥÐ¶\":75983,\":'.$\":75984,\"Ġthankfully\":75985,\"Ġdistrust\":75986,\"getDefault\":75987,\"/facebook\":75988,\"ĠConrad\":75989,\"Ġutilizando\":75990,\"ĠKag\":75991,\"/name\":75992,\"Ġbamb\":75993,\".FromSeconds\":75994,\"Ġmutil\":75995,\"ĠLagos\":75996,\"ĠBlessed\":75997,\"illegal\":75998,\"iei\":75999,\"_TP\":76000,\"Ġmatlab\":76001,\"Ġcyclic\":76002,\"Ġwithheld\":76003,\"Ġhorribly\":76004,\"-hours\":76005,\"-Headers\":76006,\"Ġoverlaps\":76007,\"Ġcuatro\":76008,\"Ġequitable\":76009,\"Ġcolormap\":76010,\"Ġshin\":76011,\"ĠSuites\":76012,\"_lua\":76013,\"(vo\":76014,\"_RESULTS\":76015,\"ĠViktor\":76016,\"Downloading\":76017,\"noch\":76018,\"Moon\":76019,\"Ġdecidedly\":76020,\"ãģĶãģĸ\":76021,\"_RPC\":76022,\"Interpolator\":76023,\"Ġvans\":76024,\"{T\":76025,\"_spawn\":76026,\"ĠExxon\":76027,\"_Call\":76028,\"ĠClassroom\":76029,\"Ġserotonin\":76030,\"ĠDiploma\":76031,\"bedtls\":76032,\"ĠPrototype\":76033,\".execution\":76034,\"Ġdatingside\":76035,\"ĠGoku\":76036,\"_rooms\":76037,\"âĢĻam\":76038,\"graf\":76039,\"aceous\":76040,\"Ġaccommodating\":76041,\"},'\":76042,\".dimension\":76043,\"errorMsg\":76044,\"ĉmesh\":76045,\"Filled\":76046,\".preference\":76047,\"Ġsmarty\":76048,\"_coupon\":76049,\"ĠÃ¶ver\":76050,\"Ġconceive\":76051,\"odon\":76052,\"dice\":76053,\"ToDate\":76054,\"adamente\":76055,\"-mask\":76056,\"Ġescalating\":76057,\"âĢ¦)ĊĊ\":76058,\"InRange\":76059,\"_Em\":76060,\"Ġutiliza\":76061,\"Ġlevy\":76062,\"<![\":76063,\"ĠJenner\":76064,\"ĠRESOURCE\":76065,\"_STARTED\":76066,\"Ġvolleyball\":76067,\"Ġmga\":76068,\"ĠRossi\":76069,\"Chance\":76070,\"ĠEnded\":76071,\".until\":76072,\"Ġknockout\":76073,\"_exe\":76074,\"ĠPrescription\":76075,\"ĠCOUNTY\":76076,\".hr\":76077,\"iership\":76078,\"ERVE\":76079,\"é©\":76080,\"ãģ§ãģ¯\":76081,\"ĠperÃŃ\":76082,\"ĠimgUrl\":76083,\"ecx\":76084,\"ĠWyn\":76085,\"ĉReturns\":76086,\"_eye\":76087,\"ĠAging\":76088,\"queues\":76089,\"ĠåĪĿå§ĭåĮĸ\":76090,\".SerializedName\":76091,\".hours\":76092,\"Ġise\":76093,\".Actor\":76094,\"æĿ¡ä»¶\":76095,\"appl\":76096,\"Tan\":76097,\"/catalog\":76098,\"/Resources\":76099,\"elan\":76100,\"('{{\":76101,\"Ġinsn\":76102,\"ĠnodeName\":76103,\"Ġcookbook\":76104,\"','=','\":76105,\"ROME\":76106,\".templates\":76107,\"ecure\":76108,\"-keys\":76109,\"ĠglUniform\":76110,\"ĠgeÃ§\":76111,\"ĠRecover\":76112,\"IDX\":76113,\"ĠKristen\":76114,\"Ġpontos\":76115,\"`='$\":76116,\"argent\":76117,\"Ġarranging\":76118,\"è¨ĺäºĭ\":76119,\"Ġerle\":76120,\"enedor\":76121,\"()));\":76122,\"Ã¦kke\":76123,\"ĠGilles\":76124,\"\\\"}>Ċ\":76125,\".movies\":76126,\"-selector\":76127,\".learn\":76128,\"Ġpotency\":76129,\"Ġfino\":76130,\"ĉbg\":76131,\"Ġlehet\":76132,\"ĠlÃ¶\":76133,\"Ġerm\":76134,\"Ġasbestos\":76135,\"Ġdeste\":76136,\"Ġblockade\":76137,\"ĠROUND\":76138,\"Ġlname\":76139,\"ĠSeparate\":76140,\"Ã¤nge\":76141,\"Ġfuzz\":76142,\"ĉUN\":76143,\"_nome\":76144,\"_linked\":76145,\"ĠSharePoint\":76146,\"hausen\":76147,\"Ġloaf\":76148,\"-economic\":76149,\"ĠdidFinish\":76150,\"yen\":76151,\"Ġblasting\":76152,\"ĠWeird\":76153,\"ICLES\":76154,\"ĠGFX\":76155,\"Ġsuffice\":76156,\"ebin\":76157,\"Ġapproving\":76158,\"ĠReyes\":76159,\"ĠRTAL\":76160,\"igli\":76161,\"_tok\":76162,\"ordova\":76163,\"Carl\":76164,\"ĠPlays\":76165,\"lossen\":76166,\"paired\":76167,\"AGMA\":76168,\"wiÄħz\":76169,\"linkedin\":76170,\"Ġegal\":76171,\"(predicate\":76172,\"ĠRESPONSE\":76173,\"ĠminX\":76174,\"Ġchancellor\":76175,\"ĠRECEIVER\":76176,\"Ġascertain\":76177,\"Ġzer\":76178,\"ĠWorksheets\":76179,\"NK\":76180,\"Ġvowel\":76181,\"vant\":76182,\"UPS\":76183,\"âĢľ.\":76184,\"ĠHayden\":76185,\"ĠSpartan\":76186,\"rights\":76187,\".getIn\":76188,\"Ġinland\":76189,\"ĠNile\":76190,\"ĠTranslator\":76191,\"Ġrectangles\":76192,\"ButtonType\":76193,\"ĠSolic\":76194,\"Ġragazza\":76195,\"/tag\":76196,\"Ġirresist\":76197,\"#End\":76198,\"*******čĊ\":76199,\"Ġrestrained\":76200,\"Ġchiropr\":76201,\"/Sh\":76202,\"-flight\":76203,\"converted\":76204,\"Ġskirts\":76205,\"(chars\":76206,\"$view\":76207,\"ĠinputFile\":76208,\"gmail\":76209,\"_DIAG\":76210,\"Ġnumel\":76211,\"ĠGina\":76212,\"ellungen\":76213,\"Ġtaxa\":76214,\"Ġdripping\":76215,\"=\\\"\\\"/>Ċ\":76216,\"Ġbordered\":76217,\"Ġtoughness\":76218,\"leness\":76219,\"ĠBieber\":76220,\"_WAKE\":76221,\"(et\":76222,\"ĠsantÃ©\":76223,\"ĠTEX\":76224,\"_DISCONNECT\":76225,\"Ġpien\":76226,\"ĠFontStyle\":76227,\"_UL\":76228,\"-total\":76229,\"wolf\":76230,\"ĠMaritime\":76231,\"ĠOPTIONAL\":76232,\"-rest\":76233,\"Ġmembuat\":76234,\"ĠBSON\":76235,\"_similarity\":76236,\".overlay\":76237,\"Ġpalate\":76238,\"ĠBridges\":76239,\"AndPassword\":76240,\"ĠChavez\":76241,\"hetto\":76242,\".offsetHeight\":76243,\"Ġundesirable\":76244,\"Ġaplik\":76245,\"Ġ/>\\\\\":76246,\",to\":76247,\"Ġremover\":76248,\"ĠModeling\":76249,\"Ġpurchaser\":76250,\"ĠChoosing\":76251,\"opleft\":76252,\"ĠmutableListOf\":76253,\"ĠSistema\":76254,\"ĠIPL\":76255,\"ickerView\":76256,\"HasColumnType\":76257,\"Ġsobie\":76258,\"ubern\":76259,\"Ġaluno\":76260,\"Ġimaginative\":76261,\"ĠInterested\":76262,\"()}</\":76263,\"Ġdiversion\":76264,\"_tooltip\":76265,\".Sample\":76266,\"ĠFutures\":76267,\"contenido\":76268,\"ĠEINVAL\":76269,\"(encoded\":76270,\"ĠShaun\":76271,\"ĉpayload\":76272,\"dek\":76273,\">Your\":76274,\"Iso\":76275,\"Traversal\":76276,\"icie\":76277,\".crop\":76278,\"ĠJB\":76279,\"INGER\":76280,\"Ġexemplary\":76281,\"_relu\":76282,\"annis\":76283,\"ÐµÐ·ÑĥÐ»ÑĮÑĤÐ°ÑĤ\":76284,\"clubs\":76285,\"âĨĳ\":76286,\"Ġscramble\":76287,\"ĠUnblock\":76288,\"Ġdors\":76289,\"Ġshack\":76290,\"Ġminimizing\":76291,\"ĠPassing\":76292,\"addElement\":76293,\"á»Ŀ\":76294,\"Ġroofs\":76295,\"Ġjclass\":76296,\"cordova\":76297,\"PosY\":76298,\"(Canvas\":76299,\"(fin\":76300,\"-loss\":76301,\".btnClose\":76302,\"documentation\":76303,\"ĠRJ\":76304,\"among\":76305,\"Mos\":76306,\"lingen\":76307,\"ĠAgu\":76308,\"olynomial\":76309,\"]<=\":76310,\"Ġdifficile\":76311,\"ĠWinners\":76312,\"å±ķ\":76313,\"Stra\":76314,\"Ġcongreg\":76315,\"ĠEnables\":76316,\"ĠSymptoms\":76317,\"_sg\":76318,\"ĠRiding\":76319,\"_heads\":76320,\"ĠCosmetic\":76321,\"Ã®t\":76322,\".Singleton\":76323,\"ĠNicaragua\":76324,\"ĠĊĊĊĊĊ\":76325,\"ĠmÃŃ\":76326,\"'},čĊ\":76327,\"ĠBosnia\":76328,\">X\":76329,\"//*[\":76330,\"Ġpiled\":76331,\"casting\":76332,\"ĠgrÃ¢ce\":76333,\"ĠHelsinki\":76334,\"Gro\":76335,\"#af\":76336,\"ìĭĿ\":76337,\"Ġsouha\":76338,\"ĠIndie\":76339,\"_near\":76340,\"Ġimmobil\":76341,\".Excel\":76342,\"Ġradiant\":76343,\"_MB\":76344,\"ĠKeto\":76345,\"ventario\":76346,\"_agents\":76347,\"TableViewCell\":76348,\"ĠTheodore\":76349,\"========Ċ\":76350,\",list\":76351,\"(si\":76352,\"icipation\":76353,\"ARTH\":76354,\"setDisplay\":76355,\".Future\":76356,\"ĠSTANDARD\":76357,\"ĠOID\":76358,\"Ġfrowned\":76359,\"ĠMarilyn\":76360,\"olare\":76361,\"Pu\":76362,\"ĠsÃ©curitÃ©\":76363,\"Redux\":76364,\"SCO\":76365,\"ĉĉĉĉĉĠĠĠĠĠĠ\":76366,\"riv\":76367,\"pert\":76368,\"Ġsoftmax\":76369,\"Ġsenate\":76370,\"=email\":76371,\"Ġestimating\":76372,\"ĉtd\":76373,\"Fuck\":76374,\"ĠWaterloo\":76375,\"Ġmexico\":76376,\"Newton\":76377,\"Sab\":76378,\",âĢ¦ĊĊ\":76379,\"Ġcelestial\":76380,\"ĠQName\":76381,\"ĠgetApp\":76382,\"Nie\":76383,\"_pci\":76384,\"ĠQPointF\":76385,\"_lista\":76386,\".NVarChar\":76387,\"ĠCoc\":76388,\"Kar\":76389,\"Ġbusted\":76390,\"izational\":76391,\"ourd\":76392,\"_connector\":76393,\"ĠSeks\":76394,\"Ð½ÑĥÑİ\":76395,\"ÐĤ\":76396,\"/List\":76397,\"/ic\":76398,\"\\\\FrameworkBundle\":76399,\"uxt\":76400,\"Ġheadphone\":76401,\"EXTERN\":76402,\"-reset\":76403,\"ĠGeile\":76404,\"Ġtriang\":76405,\"ĠANN\":76406,\"ĠtÃŃ\":76407,\"ĠSPA\":76408,\"ĠMacedonia\":76409,\"Ġcriar\":76410,\"Ġclimbs\":76411,\"ĠSON\":76412,\"ĠCritics\":76413,\"ĠdÃ³\":76414,\"_SPLIT\":76415,\"ĠBoundary\":76416,\"_Insert\":76417,\"Cold\":76418,\".createCell\":76419,\"_saida\":76420,\".BLUE\":76421,\"BigDecimal\":76422,\"(Bytes\":76423,\"ĉState\":76424,\"---@\":76425,\"ViewSet\":76426,\"akah\":76427,\"_Report\":76428,\"-cross\":76429,\".getCurrentUser\":76430,\"ultur\":76431,\"(Fl\":76432,\"ĠImag\":76433,\"CTest\":76434,\"ìĥĿ\":76435,\"Ġstag\":76436,\"Ġozone\":76437,\"ĠkÃ©\":76438,\"repair\":76439,\")\\\");čĊ\":76440,\"Ġvows\":76441,\".Alter\":76442,\"ĠAlgebra\":76443,\"ĠAhead\":76444,\"gett\":76445,\".InnerText\":76446,\"ĠZheng\":76447,\".realpath\":76448,\"Ġdistractions\":76449,\",event\":76450,\"ĠINCLUDED\":76451,\".Matcher\":76452,\".spotify\":76453,\"Ġconsid\":76454,\".Mapping\":76455,\"ĠFoam\":76456,\"ĠNAND\":76457,\"Ġdevant\":76458,\"]\\\")]Ċ\":76459,\"Laura\":76460,\"Ġsacked\":76461,\"_xor\":76462,\"Ġrealms\":76463,\"ĠRobotics\":76464,\".Seek\":76465,\".$$\":76466,\"ĠRibbon\":76467,\"ĉHRESULT\":76468,\"ĠCrescent\":76469,\"EFR\":76470,\"ĠMeditation\":76471,\".getZ\":76472,\"ĠÐºÐ¾Ð¼Ð¿\":76473,\"jsonwebtoken\":76474,\":?\":76475,\"faf\":76476,\"VIOUS\":76477,\"allah\":76478,\"Ġpiping\":76479,\"Ġmoderne\":76480,\"postalcode\":76481,\"Ġleveraging\":76482,\"ĠCHIP\":76483,\"pcm\":76484,\"mai\":76485,\"ĠiP\":76486,\"AKER\":76487,\"dataGridView\":76488,\"_deps\":76489,\"-driver\":76490,\"Lie\":76491,\"discard\":76492,\"yntaxException\":76493,\"Ġect\":76494,\"ĠExhibit\":76495,\"Ġ(**\":76496,\"ĠëĶ\":76497,\"ChangeEvent\":76498,\"Ġsupermarkets\":76499,\"Ġshm\":76500,\"profits\":76501,\"pillar\":76502,\"raison\":76503,\"Wat\":76504,\"Ġpharmacies\":76505,\"Ġnrw\":76506,\"//================================================\":76507,\"ĉworld\":76508,\"Streaming\":76509,\"Diamond\":76510,\"ĠEnumerator\":76511,\"Ġenquiry\":76512,\".lambda\":76513,\"bek\":76514,\"ROTO\":76515,\"ĠPdfP\":76516,\"Ġhisto\":76517,\"ĠgetChild\":76518,\"/stretchr\":76519,\"ĠAMAZ\":76520,\"ĠArgumentOutOfRangeException\":76521,\"\\\"user\":76522,\"Ġsanitation\":76523,\"ĠClothes\":76524,\".numpy\":76525,\"fec\":76526,\"Ġ############\":76527,\"ÐµÐ¹ÑģÑĤÐ²\":76528,\"_lp\":76529,\"Ġazure\":76530,\"XPath\":76531,\"Vent\":76532,\"Labor\":76533,\"Ġmistakenly\":76534,\"Ġconduit\":76535,\"ĠFairfax\":76536,\"getStatusCode\":76537,\"ĠMoy\":76538,\"ListAdapter\":76539,\"Ġ(?)\":76540,\"Generally\":76541,\".isConnected\":76542,\"vido\":76543,\"MouseButton\":76544,\"GenerationStrategy\":76545,\"_deriv\":76546,\"Ġlekker\":76547,\"Measurement\":76548,\"_COOKIE\":76549,\"Ġ********************************************************************************\":76550,\"Ġcompetitiveness\":76551,\"Ġgamle\":76552,\"Ġretrospect\":76553,\"ĠEduardo\":76554,\"ĠDataService\":76555,\"Ġescorted\":76556,\"ĠQty\":76557,\"Holiday\":76558,\"ĉraw\":76559,\"leurs\":76560,\"Birthday\":76561,\"Ġheats\":76562,\".inverse\":76563,\"Ġ_čĊ\":76564,\"illum\":76565,\"okableCall\":76566,\"_ml\":76567,\"Liked\":76568,\"enumerate\":76569,\"Finite\":76570,\"-prop\":76571,\"AreaView\":76572,\"Ġmediation\":76573,\"Ġchanting\":76574,\"_NT\":76575,\"_unc\":76576,\"smouth\":76577,\"Ġpigment\":76578,\"PasswordEncoder\":76579,\"ĠvÃ©r\":76580,\"Ġwastewater\":76581,\"-Pack\":76582,\"Ġjoven\":76583,\"aes\":76584,\"KY\":76585,\"Pinterest\":76586,\"Ġmusica\":76587,\"laces\":76588,\"ĠWich\":76589,\"(rot\":76590,\"(ir\":76591,\"ĠìĤŃìłľ\":76592,\"ãģĿãĤĮ\":76593,\"_THE\":76594,\"getFile\":76595,\"[property\":76596,\"Ġendings\":76597,\"izzare\":76598,\"=train\":76599,\"-loving\":76600,\"Ġnouve\":76601,\"Ġcommas\":76602,\"Ġcambi\":76603,\"ĠZusammen\":76604,\"ĉExt\":76605,\"(observer\":76606,\"formik\":76607,\"Ġquindi\":76608,\"ĠIvory\":76609,\"ĠBolivia\":76610,\"asad\":76611,\"_legend\":76612,\"Cities\":76613,\"_FIRE\":76614,\"asdf\":76615,\".Depth\":76616,\"ValueGenerationStrategy\":76617,\"upd\":76618,\".GetResponse\":76619,\"Ġurgently\":76620,\"Invariant\":76621,\"GetX\":76622,\"Ġstature\":76623,\"Ġimagining\":76624,\"ateau\":76625,\"MOVED\":76626,\"(Transaction\":76627,\"_por\":76628,\"RefPtr\":76629,\".globalData\":76630,\"grave\":76631,\"imesteps\":76632,\"foundland\":76633,\"Salir\":76634,\"artists\":76635,\"ĠcreateAction\":76636,\"ĠSanto\":76637,\"ĠÐ½ÐµÑĤ\":76638,\"ĉĉĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":76639,\"-song\":76640,\"Ġnuisance\":76641,\"Ġimpover\":76642,\"_)čĊ\":76643,\"Ġcrowdfunding\":76644,\"Ġtimp\":76645,\"Pictures\":76646,\"Ġlodging\":76647,\"éĴ®\":76648,\"atasets\":76649,\"ãĥŃãĤ°\":76650,\"persons\":76651,\"conduct\":76652,\"Ġevade\":76653,\"Ġhaunting\":76654,\"Ġ!!}\":76655,\"ĠLARGE\":76656,\"Ġkitten\":76657,\"Ġuphill\":76658,\"(minutes\":76659,\"ĠEmanuel\":76660,\"'C\":76661,\"ĠSkywalker\":76662,\"purpose\":76663,\"_mapper\":76664,\"Ġadaptations\":76665,\".fillText\":76666,\"ruk\":76667,\"Ġrepertoire\":76668,\"(priority\":76669,\"(mapped\":76670,\"Robin\":76671,\"Ġerroneous\":76672,\"Ġinhal\":76673,\"BOVE\":76674,\"(\\\",\\\")Ċ\":76675,\"uellement\":76676,\"Ġfingerprints\":76677,\"ĠPYTHON\":76678,\"-dem\":76679,\"leanor\":76680,\"zÄħd\":76681,\"\\\"People\":76682,\"asier\":76683,\"Ġpatriotic\":76684,\".freeze\":76685,\"IJ\":76686,\"ĠBanco\":76687,\"ĠisSuccess\":76688,\"(vehicle\":76689,\"(Layout\":76690,\"Ġcarving\":76691,\"_cipher\":76692,\"Ġvezes\":76693,\"('_',\":76694,\"ĠFirstly\":76695,\"Ġfullest\":76696,\"ĠListening\":76697,\"_signals\":76698,\"ewolf\":76699,\"ĠSCR\":76700,\"ĠMerry\":76701,\"/testify\":76702,\"_SANITIZE\":76703,\"ioctl\":76704,\"IEEE\":76705,\"=Math\":76706,\"Ġenqu\":76707,\"ĉaux\":76708,\"âĻ¥\":76709,\"Ġdispersed\":76710,\"hare\":76711,\"bern\":76712,\"ĠAmend\":76713,\"Ġinsiders\":76714,\"ĠAlvarez\":76715,\"ĠZug\":76716,\"/calendar\":76717,\"Ġheure\":76718,\"-paper\":76719,\"Ġsofort\":76720,\"Ġsmith\":76721,\"Ġpob\":76722,\"(rate\":76723,\"ĠsociÃ©tÃ©\":76724,\"Ġwoes\":76725,\"Ġbrushing\":76726,\"qd\":76727,\"ologue\":76728,\"sockets\":76729,\"_YES\":76730,\".addColumn\":76731,\"Ġevasion\":76732,\"SOFTWARE\":76733,\"abox\":76734,\".ylim\":76735,\"Ġengulf\":76736,\"///////////////////////////////////////////////////////////////////////////////Ċ\":76737,\"ĠngOnDestroy\":76738,\"Ġnossa\":76739,\".lst\":76740,\"()}>Ċ\":76741,\".kwargs\":76742,\"Ġcontexto\":76743,\"ĠPUB\":76744,\"Fu\":76745,\"Ġbigotry\":76746,\"Ġbrid\":76747,\"Ġsteroid\":76748,\"Ġvigorously\":76749,\"Ġbursting\":76750,\"Ġvene\":76751,\"Ġsalads\":76752,\"ĠVARIABLES\":76753,\"ĠOnc\":76754,\"ĠfireEvent\":76755,\"sandbox\":76756,\"Ġtouchscreen\":76757,\"sans\":76758,\"/Instruction\":76759,\"Ġeof\":76760,\"lecture\":76761,\"?-\":76762,\".localization\":76763,\"VES\":76764,\"_voice\":76765,\"itura\":76766,\".reporting\":76767,\"Ġ]);\":76768,\"Nova\":76769,\"_COMPAT\":76770,\"Ġoutbreaks\":76771,\".clientWidth\":76772,\"iflower\":76773,\"_GRA\":76774,\"Initializing\":76775,\"_perf\":76776,\"()},\":76777,\"=P\":76778,\"_IMETHOD\":76779,\"Ġtightening\":76780,\"ĠtabBar\":76781,\"ĠBK\":76782,\"ĉDouble\":76783,\"/hash\":76784,\"Ġmez\":76785,\"ToUpper\":76786,\"TG\":76787,\"(indent\":76788,\"Ġsilica\":76789,\"Ġ//////\":76790,\"Ã¶k\":76791,\"Ġelves\":76792,\"emplates\":76793,\".CompareTo\":76794,\"Ġgunfire\":76795,\"animals\":76796,\"Ġkepada\":76797,\"ĠCPR\":76798,\"_LSB\":76799,\"ĉvertex\":76800,\"ĠÐ¿ÐµÑĢÐ²\":76801,\",!\":76802,\"Ġduly\":76803,\"_PATCH\":76804,\"ENA\":76805,\"ĉCC\":76806,\"composition\":76807,\"_sv\":76808,\"Lbl\":76809,\"jej\":76810,\"ÑģÑĤÑĢÐ¾Ð¹\":76811,\".EditValue\":76812,\"åħ·\":76813,\"antas\":76814,\"Ġbreadcrumb\":76815,\"ĠTester\":76816,\"ĠMeasurements\":76817,\"/Input\":76818,\"ĠRaz\":76819,\"_POLL\":76820,\"Independent\":76821,\".lucene\":76822,\"ĠMechanics\":76823,\"colon\":76824,\".surface\":76825,\"Ġunas\":76826,\"rado\":76827,\"PLICATE\":76828,\"CRT\":76829,\".setDefault\":76830,\"%H\":76831,\"Ġresponsable\":76832,\"Ġperpendicular\":76833,\"ĠRespir\":76834,\"ĠTunisia\":76835,\"\\\\Array\":76836,\"è·¯å¾Ħ\":76837,\"Ġpaw\":76838,\"Ġdebounce\":76839,\"(MPI\":76840,\"ĠØ¯Ø±\":76841,\"Ġelk\":76842,\"ĠRelayCommand\":76843,\"/light\":76844,\".serialization\":76845,\"BSITE\":76846,\")((((\":76847,\"ĠBios\":76848,\"_svg\":76849,\"(surface\":76850,\"Duplicates\":76851,\"Ġ(>\":76852,\"_AST\":76853,\".nick\":76854,\"\\\"Why\":76855,\"ĠIntellectual\":76856,\"abbreviation\":76857,\"earable\":76858,\"Ġconseguir\":76859,\"(Be\":76860,\"_Pods\":76861,\"<Animator\":76862,\"_UNDEFINED\":76863,\"ARRY\":76864,\"Ġ//~\":76865,\"perator\":76866,\".writeFileSync\":76867,\"Als\":76868,\"lder\":76869,\"Ġmiejs\":76870,\"Ġfuncs\":76871,\"incible\":76872,\"Ġdusty\":76873,\"ĠDrill\":76874,\"Ġcontinual\":76875,\"ĠElectron\":76876,\".enemy\":76877,\"(pb\":76878,\"Ġreunited\":76879,\"Smoke\":76880,\"-faced\":76881,\"Intensity\":76882,\"ĠTreeMap\":76883,\"ĠArgumentError\":76884,\".writeHead\":76885,\"ĠTRE\":76886,\"SplitOptions\":76887,\"/******/Ċ\":76888,\"Ġ\\\\<^\":76889,\"ĠInvestments\":76890,\"SUMER\":76891,\"Ġdac\":76892,\"ANI\":76893,\".YesNo\":76894,\"(ofSize\":76895,\"yth\":76896,\"eload\":76897,\"Ġimpres\":76898,\"Ġblobs\":76899,\".retrieve\":76900,\"Ġtyranny\":76901,\"ĠcancelButtonTitle\":76902,\"Ġhaci\":76903,\"ĠCasinos\":76904,\"Ġdhe\":76905,\"Retail\":76906,\"ĠPornhub\":76907,\"ĠCrimes\":76908,\"Oil\":76909,\"(IService\":76910,\"Resizable\":76911,\"ĉSo\":76912,\"Often\":76913,\"Ġcommonplace\":76914,\"_GC\":76915,\"aldi\":76916,\"athlon\":76917,\"(ViewGroup\":76918,\"(Employee\":76919,\"Ġsafeguards\":76920,\"éĢĢåĩº\":76921,\"_AURA\":76922,\"Ġunnoticed\":76923,\"ĠThorn\":76924,\"modele\":76925,\"Ġacordo\":76926,\"ĠWenger\":76927,\"imus\":76928,\"ensburg\":76929,\"omba\":76930,\"ciÃ³n\":76931,\"\\\"http\":76932,\"_Matrix\":76933,\"||||\":76934,\"ornecedor\":76935,\"ĉBufferedReader\":76936,\"registers\":76937,\"released\":76938,\"ĠaddObserver\":76939,\"ĠValent\":76940,\"(CultureInfo\":76941,\"Ġmannen\":76942,\"Ġburglary\":76943,\"_minute\":76944,\"Ġinterceptor\":76945,\"ocrates\":76946,\"attro\":76947,\"ĠYE\":76948,\"essler\":76949,\"listeners\":76950,\"/prom\":76951,\"Ġç¤\":76952,\"touches\":76953,\"Esp\":76954,\"ĠAbort\":76955,\"Ġffi\":76956,\"Ġclums\":76957,\"NIL\":76958,\"_VIRTUAL\":76959,\"Ġloin\":76960,\"ynomials\":76961,\"Ġ×ľ\":76962,\"Ġgz\":76963,\"ĠNeon\":76964,\"ISIS\":76965,\"amerate\":76966,\"_avail\":76967,\"Ġmaxi\":76968,\"ĠisArray\":76969,\"ColumnInfo\":76970,\"izin\":76971,\"Ġperso\":76972,\"Ġoud\":76973,\"ialized\":76974,\"ymi\":76975,\"Ġconfidently\":76976,\"=\\\"/\\\">Ċ\":76977,\".datasource\":76978,\"Ġpaycheck\":76979,\"ĠBav\":76980,\"/Branch\":76981,\"ĠTear\":76982,\"Ġmerupakan\":76983,\"ĠBrah\":76984,\"ĠÐºÐ¾Ð½ÑĤ\":76985,\"ïĤ\":76986,\",path\":76987,\"Ġdazzling\":76988,\"ĠUCHAR\":76989,\"Ġprovisional\":76990,\"Ð¿Ð¿\":76991,\"Ġlegalized\":76992,\"_algo\":76993,\"_RSA\":76994,\"alternative\":76995,\"ĠDETAILS\":76996,\"ToDo\":76997,\"reflection\":76998,\"_WEEK\":76999,\"ĠCLEAN\":77000,\"Ġslogans\":77001,\"Ġëĵ±\":77002,\"ĠVeterinary\":77003,\"idf\":77004,\".dateTimePicker\":77005,\"icontrol\":77006,\"(play\":77007,\"Ġullam\":77008,\"Ġ')čĊ\":77009,\"Ġcheque\":77010,\"å®ĭä½ĵ\":77011,\"Ġunserem\":77012,\"ĠArchitects\":77013,\"amentals\":77014,\"Ġvmax\":77015,\"Ġjemand\":77016,\"CEED\":77017,\"ĠOlivier\":77018,\"severity\":77019,\"RK\":77020,\"Disconnected\":77021,\"Ġweaponry\":77022,\"uiÃ§Ã£o\":77023,\"Ġbingo\":77024,\"dont\":77025,\"_CHANNELS\":77026,\"ĠDag\":77027,\"ĠdÃ¤r\":77028,\"Ã©rique\":77029,\"gradable\":77030,\"ĠCOMPLETE\":77031,\"Ġspanish\":77032,\"Ġinstrumentation\":77033,\"vasive\":77034,\"DRAW\":77035,\"Ġfputs\":77036,\"ĠSpend\":77037,\"ĠRespect\":77038,\"Courtesy\":77039,\"Ġscho\":77040,\"Ġpostage\":77041,\"ĠMeadows\":77042,\"Ġtutoring\":77043,\"ervo\":77044,\"Absolutely\":77045,\"Ã¡ndez\":77046,\"½Ķëĵľ\":77047,\"ĠSHR\":77048,\"phoon\":77049,\"ĠDepos\":77050,\"=''Ċ\":77051,\"Ġphysiology\":77052,\"*time\":77053,\"ĠTough\":77054,\"dock\":77055,\"/he\":77056,\"(Have\":77057,\"ĠMoines\":77058,\"STYPE\":77059,\"ĠBride\":77060,\"Ġstron\":77061,\"Ġworldview\":77062,\"Ġgratuito\":77063,\"Ġaerospace\":77064,\"ĠIhrem\":77065,\"Ġqc\":77066,\"Ġmanifestations\":77067,\"slaught\":77068,\"<Account\":77069,\"ĠInfos\":77070,\"ambil\":77071,\"_Final\":77072,\"Ġadministrations\":77073,\"Ġcollaborated\":77074,\".jdesktop\":77075,\"oluciÃ³n\":77076,\"asctime\":77077,\"_allocate\":77078,\"arrival\":77079,\"JOR\":77080,\"Ġshady\":77081,\"Ġpineapple\":77082,\"ãĤı\":77083,\"Ġsatin\":77084,\"brero\":77085,\"ĠLies\":77086,\"Ġtensors\":77087,\"ĠIntelligent\":77088,\".SelectedIndexChanged\":77089,\"Ġradiator\":77090,\"assistant\":77091,\"$fields\":77092,\"ĉstep\":77093,\"ĠMitgli\":77094,\"ĠEverett\":77095,\"ĠScheduled\":77096,\"Hora\":77097,\"\\\"]->\":77098,\"Ġmots\":77099,\"ĠDST\":77100,\"fontName\":77101,\"ĠWarwick\":77102,\"_Task\":77103,\"*C\":77104,\"ãĥ§\":77105,\"obel\":77106,\"_DET\":77107,\"Ġsociology\":77108,\"ĠKatz\":77109,\"icions\":77110,\"otland\":77111,\"adoo\":77112,\"_pars\":77113,\"Ġripping\":77114,\"icho\":77115,\"Ġnutritious\":77116,\"ĉdamage\":77117,\"Ky\":77118,\"Ġanchored\":77119,\"Ġartificially\":77120,\"ĠJuventus\":77121,\"/perl\":77122,\"Ġexpressive\":77123,\"xEE\":77124,\"ĠEnumeration\":77125,\".MESSAGE\":77126,\"(deg\":77127,\"å¿Ĺ\":77128,\"######\":77129,\"Ġ\\\"\\\"),\":77130,\"klÃ¤r\":77131,\"\\\\Mail\":77132,\"Designed\":77133,\"Ġstaffer\":77134,\"Ġsalts\":77135,\"*****čĊ\":77136,\"Ġâģ\":77137,\"ĠsetTitleColor\":77138,\"DVD\":77139,\".WriteAll\":77140,\"ellant\":77141,\"Ġcoercion\":77142,\"ĠSorting\":77143,\"è¨Ģ\":77144,\"Ġstarvation\":77145,\"//{{\":77146,\".heap\":77147,\"ĠMedieval\":77148,\"Ġ*----------------------------------------------------------------\":77149,\"ï¼ĳï¼Ĳ\":77150,\"Ġwards\":77151,\"ĠHerc\":77152,\"ĠHogwarts\":77153,\"-comments\":77154,\"ĠLauderdale\":77155,\"æ¼\":77156,\"Ġrift\":77157,\"Ġzeit\":77158,\"Ġproofs\":77159,\".viewport\":77160,\"$start\":77161,\"ĠBought\":77162,\".richTextBox\":77163,\"Ġcling\":77164,\"Ġ'**\":77165,\"Ownership\":77166,\"ĠBoehner\":77167,\"(dynamic\":77168,\"Ġmedically\":77169,\"ĠWTF\":77170,\"ĠMainMenu\":77171,\"è´Ń\":77172,\"Ġdiferente\":77173,\"/results\":77174,\"enthal\":77175,\"ĠWidgets\":77176,\"rush\":77177,\"ĠRMS\":77178,\"ĠVolley\":77179,\"ĠremoveFromSuperview\":77180,\"ĠLafayette\":77181,\"ĠFetchType\":77182,\"acas\":77183,\"Ġpathogens\":77184,\"ĠMMO\":77185,\".Currency\":77186,\"ocious\":77187,\"ĠspriteBatch\":77188,\"doll\":77189,\"Ġvampires\":77190,\"launcher\":77191,\"Ġpeaked\":77192,\"Ġdebunk\":77193,\"ĠASD\":77194,\"Ġunequal\":77195,\"Ġsquads\":77196,\"}.${\":77197,\"mani\":77198,\"\\\"E\":77199,\"ĠFahr\":77200,\"ĠISI\":77201,\"Ġunavoid\":77202,\"ophone\":77203,\"[:]Ċ\":77204,\"ĠDirected\":77205,\"Ġbushes\":77206,\".failure\":77207,\"Ġimmersed\":77208,\"exo\":77209,\"Histogram\":77210,\"ĠKann\":77211,\"Ġpiracy\":77212,\"ĠCrunch\":77213,\"ĠlÃ¦\":77214,\"//\\\"\":77215,\"Ġmonot\":77216,\"ĠSaunders\":77217,\"ĠSevent\":77218,\"(Abstract\":77219,\"Ġsmoker\":77220,\"rone\":77221,\".clientY\":77222,\"Ġ\\\"-\\\",\":77223,\"ĠFountain\":77224,\"Ġinne\":77225,\"ìĥī\":77226,\"Ctr\":77227,\"$input\":77228,\"PROFILE\":77229,\"ĠDonation\":77230,\"WithEmail\":77231,\"Ġfractures\":77232,\"Keeper\":77233,\"Ġmeisjes\":77234,\"Ġarchitectures\":77235,\"ĠLung\":77236,\"'image\":77237,\"harma\":77238,\"Ġabandoning\":77239,\"ALLED\":77240,\"subtype\":77241,\"reira\":77242,\"Ġmoss\":77243,\"ĠParsons\":77244,\"akedown\":77245,\"=obj\":77246,\"Ġsucess\":77247,\"Ġwearable\":77248,\"ãĤ§\":77249,\"Ġadulti\":77250,\".um\":77251,\"Ġvibrations\":77252,\"Ġswell\":77253,\"ĠDisclosure\":77254,\"ĠRDD\":77255,\"pairs\":77256,\"anggan\":77257,\"ĠmainBundle\":77258,\"ĠDIN\":77259,\"Ġrocked\":77260,\"shouldBe\":77261,\".gb\":77262,\"ĠIMD\":77263,\"ĠWN\":77264,\",arg\":77265,\"âĢ¦âĢ¦âĢ¦âĢ¦âĢ¦âĢ¦âĢ¦âĢ¦\":77266,\"[]=$\":77267,\".SM\":77268,\"Ġalguns\":77269,\"addons\":77270,\"_Common\":77271,\"_REFRESH\":77272,\"ĠÙģÙĬ\":77273,\"ĠTYPO\":77274,\"ĠEcology\":77275,\"Ġglu\":77276,\".DataType\":77277,\"ĠProbe\":77278,\"Lux\":77279,\"owego\":77280,\"Ġrek\":77281,\"ĠPlaintiff\":77282,\"achable\":77283,\".nama\":77284,\"*out\":77285,\"}}{{\":77286,\"ĠCAPITAL\":77287,\"ä½Ĩ\":77288,\"Importer\":77289,\".createServer\":77290,\"_resolve\":77291,\"_EPS\":77292,\"stellar\":77293,\"_Profile\":77294,\"ĉsw\":77295,\"-mon\":77296,\"udev\":77297,\"\\\\Plugin\":77298,\"_MIX\":77299,\"ĠDiscrim\":77300,\".fromLTRB\":77301,\"ĠStrand\":77302,\"Anything\":77303,\"powers\":77304,\"]]čĊ\":77305,\".TIM\":77306,\"Ġaddslashes\":77307,\"Ġesi\":77308,\"@Before\":77309,\"Ġsak\":77310,\"Ġ'/';Ċ\":77311,\"coc\":77312,\"ÅŁÄ±\":77313,\"Ġ));čĊ\":77314,\"_above\":77315,\"ĠECC\":77316,\"/cpu\":77317,\"Ġcade\":77318,\".Stderr\":77319,\"Ġpellets\":77320,\"ĠPalin\":77321,\"ĠgÃ©n\":77322,\"_java\":77323,\"Ġsalah\":77324,\"Ġbergen\":77325,\"_SWAP\":77326,\"Ġgib\":77327,\"iÃ£o\":77328,\"_distances\":77329,\"ĠCinder\":77330,\"Ġanarchist\":77331,\"imat\":77332,\"ĉmock\":77333,\"ãģĹãģ¾ãģĻ\":77334,\"Omega\":77335,\"Ġbahwa\":77336,\"_Parse\":77337,\".paper\":77338,\"ĉIntent\":77339,\"rens\":77340,\"/grid\":77341,\"Ġfilthy\":77342,\".ev\":77343,\"#####Ċ\":77344,\"Ġsare\":77345,\"Ġsoaking\":77346,\"ĠRegions\":77347,\"_USED\":77348,\"ĠSik\":77349,\"ifikasi\":77350,\"ĉEditor\":77351,\"Luck\":77352,\"ĠìĹ°\":77353,\"Äĥm\":77354,\".\\\";\":77355,\"ĠZiel\":77356,\"Ġgrayscale\":77357,\"(Func\":77358,\"ãĥģ\":77359,\".Dense\":77360,\"-leaning\":77361,\"Ġgraceful\":77362,\"GraphNode\":77363,\"_COMMIT\":77364,\"ĠCVS\":77365,\"Ġplains\":77366,\"Ġrej\":77367,\"pciones\":77368,\"Ġundermining\":77369,\"_cats\":77370,\"feb\":77371,\"CollectionView\":77372,\"SEMB\":77373,\"Ġthu\":77374,\"textbox\":77375,\"(Android\":77376,\"Ġrigor\":77377,\"ĠYield\":77378,\".isPlaying\":77379,\":view\":77380,\"remainder\":77381,\"ĠPip\":77382,\")index\":77383,\"ĠBecker\":77384,\"toLocale\":77385,\"autorelease\":77386,\"ĠRomero\":77387,\".Handled\":77388,\"ĠCabinets\":77389,\")V\":77390,\"Ġrte\":77391,\"ĠHulu\":77392,\"iciel\":77393,\"/animations\":77394,\"Ġpresume\":77395,\".transparent\":77396,\"Ġsubmenu\":77397,\"qm\":77398,\"ierten\":77399,\"ĠtextSize\":77400,\"Ġstarving\":77401,\"/job\":77402,\"Apache\":77403,\"Ġyielding\":77404,\"-article\":77405,\"'=>$_\":77406,\"Ġè¡\":77407,\"<SpriteRenderer\":77408,\"ĠShia\":77409,\"):(\":77410,\"Ġpubli\":77411,\"ziej\":77412,\"Ġtelesc\":77413,\"Ġteil\":77414,\"Legacy\":77415,\"ĠPlacement\":77416,\"()){\":77417,\"Ġtroublesome\":77418,\"æĺŁ\":77419,\"ĠpersÃ¶n\":77420,\"_AspNet\":77421,\"=}\":77422,\"(userID\":77423,\"Sus\":77424,\"ãĤº\":77425,\"-average\":77426,\"ĠQImage\":77427,\".Strict\":77428,\"teborg\":77429,\"-functions\":77430,\"REGION\":77431,\">New\":77432,\"_choose\":77433,\"(ci\":77434,\"Ġunleash\":77435,\"ĠRIGHTS\":77436,\"ĠSpear\":77437,\"ĉmake\":77438,\"Ġtys\":77439,\"anela\":77440,\"ĠWX\":77441,\"_MAKE\":77442,\"/setup\":77443,\"ĠonSave\":77444,\"Ġclinicians\":77445,\"ĉback\":77446,\".Linked\":77447,\"Ġconserve\":77448,\"Ġbitten\":77449,\"_variance\":77450,\"Ġlire\":77451,\"Ġinertia\":77452,\"uffles\":77453,\"_MPI\":77454,\"iddles\":77455,\"[arr\":77456,\".vocab\":77457,\"Ġshitty\":77458,\"Ġneste\":77459,\"ssize\":77460,\"ĠKT\":77461,\"bler\":77462,\"_linux\":77463,\"Ġmongodb\":77464,\"ĠITEMS\":77465,\"Kon\":77466,\"ĠBurst\":77467,\"_photos\":77468,\"Colorado\":77469,\"Ġacknowledgment\":77470,\"Ġoily\":77471,\"Ġnfs\":77472,\"ĠZionist\":77473,\"Ġaddicts\":77474,\"ĠaddUser\":77475,\"ĠMish\":77476,\"ĠkW\":77477,\"ĠWants\":77478,\"(records\":77479,\"ocurrency\":77480,\"JSGlobal\":77481,\".elapsed\":77482,\"ĠNb\":77483,\"Ġppt\":77484,\"\\\\Dependency\":77485,\"Rol\":77486,\"ĠÃ§alÄ±ÅŁ\":77487,\"Ġexpansions\":77488,\"bubble\":77489,\"Ġmidterm\":77490,\"Ġ'#{\":77491,\"ctxt\":77492,\"ISyntaxException\":77493,\"ĠValle\":77494,\"ĠCadillac\":77495,\"Ġ\\\"\\\"},Ċ\":77496,\"Ġsemua\":77497,\"richText\":77498,\"softmax\":77499,\"objPHPExcel\":77500,\".hstack\":77501,\"_critical\":77502,\"(<?\":77503,\"dj\":77504,\"Ġconson\":77505,\"ĠroomId\":77506,\"DOMContentLoaded\":77507,\"parms\":77508,\"Ġzeigt\":77509,\"TPL\":77510,\"-notch\":77511,\"Ġoppressive\":77512,\"Coding\":77513,\"ĠLeaves\":77514,\"(Display\":77515,\".signIn\":77516,\"//--\":77517,\"ĠOpr\":77518,\"cta\":77519,\"Ġmetav\":77520,\"Serialized\":77521,\"Ġunaffected\":77522,\"ĠATL\":77523,\"ĠKP\":77524,\"Atlantic\":77525,\",url\":77526,\",state\":77527,\"Ġbist\":77528,\"eneg\":77529,\"Ġsimplistic\":77530,\"Ġbidder\":77531,\"Ġpercept\":77532,\"Ġcelib\":77533,\"ĠTHROW\":77534,\"(/[\":77535,\"Tcp\":77536,\"Ġfurthermore\":77537,\".Acc\":77538,\"oppable\":77539,\"ä¸¤\":77540,\"ĠTart\":77541,\"ĠBenz\":77542,\"Ġembodied\":77543,\"(Const\":77544,\"Ġ+-\":77545,\"Participants\":77546,\"ĠhttpRequest\":77547,\"accent\":77548,\"ĠSÃ¼\":77549,\"Ġhorrifying\":77550,\"Ġ/>,\":77551,\"Ġenactment\":77552,\"ĠUNION\":77553,\"/logs\":77554,\"ĠscreenHeight\":77555,\"Ġetwa\":77556,\"ä¾ĭå¦Ĥ\":77557,\"ĠaÃºn\":77558,\"å·¦\":77559,\"_timeline\":77560,\"Ġ\\\"\\\"))Ċ\":77561,\"':''\":77562,\"BW\":77563,\"Ġrenovations\":77564,\"Ġ<Ċ\":77565,\"Pale\":77566,\">:</\":77567,\"Skeleton\":77568,\"ĠgetUsers\":77569,\"_dataframe\":77570,\"abr\":77571,\"materials\":77572,\"&eacute\":77573,\".DisplayName\":77574,\"Ġhvis\":77575,\"_languages\":77576,\".sy\":77577,\"tower\":77578,\"IFICATIONS\":77579,\"Ġbarric\":77580,\"ĠPluto\":77581,\"`;\":77582,\"ãĥĭ\":77583,\"cente\":77584,\"#ab\":77585,\"Ġlexical\":77586,\"ĠBRO\":77587,\"Ġrulings\":77588,\"HEY\":77589,\".iOS\":77590,\"returned\":77591,\".books\":77592,\"ĠHubb\":77593,\"eof\":77594,\">>::\":77595,\"ĠìĨ\":77596,\"ĠgoTo\":77597,\"èĢĥ\":77598,\"ãģ¨ãģĨ\":77599,\"<Form\":77600,\"copies\":77601,\".quant\":77602,\"ĠPotato\":77603,\"ĠCousins\":77604,\"ĠsÃ»\":77605,\"Govern\":77606,\"Ġgaler\":77607,\"ĠFIR\":77608,\"_Width\":77609,\"ĠSheldon\":77610,\".Dev\":77611,\"ĠResponsibility\":77612,\"sonian\":77613,\"Ġsuperclass\":77614,\"bitset\":77615,\"eddar\":77616,\"ĠLaboratories\":77617,\"Ġcoined\":77618,\"ĠTechnique\":77619,\"(Core\":77620,\"Ġsprayed\":77621,\"Ġpong\":77622,\"(Network\":77623,\"Ġroar\":77624,\"ĠEAST\":77625,\"strain\":77626,\"Ġmenstrual\":77627,\"ombat\":77628,\"Ġcalming\":77629,\"ĉDim\":77630,\"_movies\":77631,\"ĠRAID\":77632,\"-dismissible\":77633,\"Ġfreund\":77634,\"-chan\":77635,\"Ġresistor\":77636,\"_Copy\":77637,\"ocrine\":77638,\"Ġespionage\":77639,\"gado\":77640,\"NDAR\":77641,\"Ġporcelain\":77642,\"thalm\":77643,\"Ġ`[\":77644,\"Ġgrado\":77645,\"Ð¸ÑĢ\":77646,\"DOUBLE\":77647,\"Ġaccesses\":77648,\".Floor\":77649,\"ĠâĨĶ\":77650,\"Ġtokenize\":77651,\"analytics\":77652,\".CreateInstance\":77653,\"Ġsuche\":77654,\"ĉent\":77655,\"igner\":77656,\"ĠÐ¿ÐµÑĢÐµÐ´\":77657,\"Ġcondiciones\":77658,\".libs\":77659,\"\\\"';\":77660,\"PDOException\":77661,\"ĠonData\":77662,\"ĠAutism\":77663,\"-helper\":77664,\"Ġrewind\":77665,\"Ġcoffin\":77666,\"ãĥ¼ãĤ¸\":77667,\"Ġtransmitting\":77668,\".setAlignment\":77669,\"Ġdealloc\":77670,\"Ġancestral\":77671,\"ogie\":77672,\".COMP\":77673,\":frame\":77674,\"mmo\":77675,\"':\\\"\":77676,\"ĠRegents\":77677,\"Ġcheated\":77678,\".gg\":77679,\"Ġpaced\":77680,\"Ġestad\":77681,\"ocene\":77682,\"lsa\":77683,\"(fc\":77684,\"/groups\":77685,\"/misc\":77686,\"ĠShuttle\":77687,\"UPI\":77688,\"Ã¡o\":77689,\"-cycle\":77690,\"ĉprops\":77691,\"Ġrotten\":77692,\"Rejected\":77693,\"#ac\":77694,\".ua\":77695,\"ĠAmnesty\":77696,\"Ġpenned\":77697,\"INCREMENT\":77698,\"<dim\":77699,\".setUp\":77700,\"ĠTweets\":77701,\"ĠMaduro\":77702,\"ĠÙĤ\":77703,\"ĠCActive\":77704,\"ĉBYTE\":77705,\"(separator\":77706,\".Resize\":77707,\"uffman\":77708,\"supports\":77709,\"Ġurb\":77710,\"ĠFounded\":77711,\"_hard\":77712,\"Ġeclectic\":77713,\".Filters\":77714,\"ĠRoundedRectangle\":77715,\"_sampling\":77716,\"ĠJetzt\":77717,\"american\":77718,\".invokeLater\":77719,\"ĠButterfly\":77720,\"(connectionString\":77721,\"ĠNaomi\":77722,\"ĠJaime\":77723,\"rts\":77724,\"Ġmagically\":77725,\".machine\":77726,\"ĠAppalach\":77727,\"\\\"+\\\"\":77728,\"vale\":77729,\"-mounted\":77730,\"Ġache\":77731,\"MJ\":77732,\"ĠUIImagePickerController\":77733,\"-Jun\":77734,\"Mana\":77735,\"kraine\":77736,\"DCF\":77737,\"/Product\":77738,\"ĠRESERVED\":77739,\"ĠFHA\":77740,\":@\\\"%@\\\",\":77741,\"ĠProjekt\":77742,\"ĠNir\":77743,\"ĠCarnival\":77744,\"Ġ*&\":77745,\"ĠQS\":77746,\"WHO\":77747,\"Ġwelt\":77748,\"Ġmarrying\":77749,\"Alexander\":77750,\"ĠReviewed\":77751,\"acteria\":77752,\"Ġwan\":77753,\"(robot\":77754,\"ĠWindowManager\":77755,\"Ġmonumental\":77756,\"ĠDoming\":77757,\"/weather\":77758,\"_secondary\":77759,\"Operators\":77760,\"_SIDE\":77761,\"Kat\":77762,\"-zone\":77763,\"Ġsignifies\":77764,\"ĠHttpMethod\":77765,\"/context\":77766,\"\\\"čĊčĊčĊ\":77767,\"ĠRodrigo\":77768,\"Ġbub\":77769,\"/music\":77770,\"Ġseront\":77771,\"ĠmRNA\":77772,\"_emails\":77773,\"Ġ'>'\":77774,\"ĠGeme\":77775,\"ĠÑĢÐ°Ñģ\":77776,\"Ġ~~\":77777,\"Ġducks\":77778,\"ĠFreund\":77779,\"Experiment\":77780,\"Ġreopened\":77781,\"Ġ\\\\\\\"{\":77782,\"Ġellipt\":77783,\"Ġconcatenate\":77784,\"Ġpolo\":77785,\"TimeZone\":77786,\"ĠĠĊĠĠĠĠĊ\":77787,\"Ġcaptions\":77788,\"ricks\":77789,\".freq\":77790,\".memo\":77791,\"Ġsmb\":77792,\"Drug\":77793,\"][/\":77794,\"_BACKEND\":77795,\"ĠElla\":77796,\"ĠPortions\":77797,\"ĠfetchData\":77798,\"Ġcoroutine\":77799,\"Ġestava\":77800,\"ĠGenius\":77801,\":`~\":77802,\"ĠSwansea\":77803,\"(payment\":77804,\"Votre\":77805,\"ĠPruitt\":77806,\".offsetWidth\":77807,\"aryl\":77808,\"Ġuniformly\":77809,\"ĠWarp\":77810,\"ĠSEA\":77811,\"Ġdeductible\":77812,\"Ġbullied\":77813,\"ĠBesch\":77814,\"ĠProspect\":77815,\"OSP\":77816,\"\\\"Yeah\":77817,\"ĠAngry\":77818,\".Val\":77819,\"Ġgigs\":77820,\"Ġbulky\":77821,\"eteria\":77822,\".getStart\":77823,\"ĠMETH\":77824,\"Ġcoherence\":77825,\"Ġmediated\":77826,\"ÐµÐ³Ð¸ÑģÑĤ\":77827,\"....Ċ\":77828,\"ĠstrokeLine\":77829,\"mj\":77830,\"ĠUnsure\":77831,\"athroom\":77832,\"(Binary\":77833,\"_KeyPress\":77834,\"æŀĦ\":77835,\"inherits\":77836,\"Ġrepreh\":77837,\"ĉSchema\":77838,\"Ġunrestricted\":77839,\".definition\":77840,\"]?.\":77841,\"Ġith\":77842,\"åł±\":77843,\"Ġslime\":77844,\"msgs\":77845,\"_JS\":77846,\"ĉVersion\":77847,\"_SECURE\":77848,\"Ġcosto\":77849,\".Restr\":77850,\"csr\":77851,\"_TOOLTIP\":77852,\"pcl\":77853,\"ĠâĨĵ\":77854,\"SelfPermission\":77855,\".ravel\":77856,\"Ġmembres\":77857,\"Assembler\":77858,\"romium\":77859,\"surf\":77860,\"ĠUPDATED\":77861,\"(branch\":77862,\"(include\":77863,\"ĠIdol\":77864,\"\\\\Object\":77865,\"Ġcloning\":77866,\"ĠisNaN\":77867,\"Ġanz\":77868,\"Æ°á»Ŀng\":77869,\"Ġonc\":77870,\"_CLUSTER\":77871,\"Ġ{}),Ċ\":77872,\"iminary\":77873,\"ĉcontentPane\":77874,\"trail\":77875,\"Ġninety\":77876,\"ĠNiagara\":77877,\"ĠAndr\":77878,\"Ã©sz\":77879,\"Ġdific\":77880,\"utra\":77881,\"'}}>\":77882,\"ãĤ¤ãĥĪ\":77883,\"spar\":77884,\"Ġ\\\"\\\\\\\",\":77885,\"Ġmyfile\":77886,\"ffc\":77887,\"Ġnoticeably\":77888,\"eya\":77889,\"ĠPutting\":77890,\"JV\":77891,\".dimensions\":77892,\"erca\":77893,\"genesis\":77894,\"effective\":77895,\"Ġperder\":77896,\".OR\":77897,\"_COMPARE\":77898,\":len\":77899,\"/red\":77900,\"ĠAristotle\":77901,\"Ġqueried\":77902,\"Ġforeseeable\":77903,\"ĠUIControl\":77904,\"reminder\":77905,\"Ġcena\":77906,\"Ġhic\":77907,\"Ġ\\\"\\\";čĊčĊ\":77908,\"/basic\":77909,\"Ġaffordability\":77910,\",err\":77911,\"ĠÑģÐ¸Ð¼Ð²\":77912,\"ĠISR\":77913,\"licenses\":77914,\"VOICE\":77915,\".Lang\":77916,\".relationship\":77917,\"Ġlends\":77918,\"Ġnutzen\":77919,\"ĠespecÃŃf\":77920,\"ienda\":77921,\"<Pair\":77922,\"Tv\":77923,\"_RETRY\":77924,\"Ġhonoring\":77925,\"_declaration\":77926,\"(NO\":77927,\"ĠHick\":77928,\"Ġminlength\":77929,\"ĠGeschichte\":77930,\"apesh\":77931,\"ATOM\":77932,\"')\\\");Ċ\":77933,\"enterprise\":77934,\">}</\":77935,\"Ġpolitique\":77936,\"edition\":77937,\"_Debug\":77938,\"Anne\":77939,\".Scope\":77940,\"ctp\":77941,\"canonical\":77942,\">>;Ċ\":77943,\"Menus\":77944,\"Ġfiercely\":77945,\".Once\":77946,\"ĠBorrow\":77947,\"Ġsost\":77948,\"Ġservings\":77949,\"-flag\":77950,\"Ġvested\":77951,\"Ġfron\":77952,\"íķ¨\":77953,\"Ġfamine\":77954,\"\\\"])){Ċ\":77955,\"ereÃ§o\":77956,\"Ġkijken\":77957,\"ĠFlooring\":77958,\"çĲĥ\":77959,\"observation\":77960,\"ĠuserDao\":77961,\"=\\\"\\\">čĊ\":77962,\"COVID\":77963,\"baby\":77964,\"Ġtrough\":77965,\"ĠSeam\":77966,\"ĠFighters\":77967,\"omit\":77968,\"ĠCharges\":77969,\"Russ\":77970,\"Ġquelque\":77971,\"GetPosition\":77972,\"ĠMinisters\":77973,\"_receipt\":77974,\"ĠrootNode\":77975,\"multip\":77976,\"$search\":77977,\"\\\"))))Ċ\":77978,\"takes\":77979,\"Ġ(!!\":77980,\"ĠBAT\":77981,\"chang\":77982,\"Äĵ\":77983,\".oc\":77984,\"Ġskillet\":77985,\"ĠSKU\":77986,\"ĠGallagher\":77987,\"Ġcresc\":77988,\"weekday\":77989,\"ervised\":77990,\"CardContent\":77991,\".accel\":77992,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":77993,\"Tai\":77994,\"ĠCompatibility\":77995,\"xCF\":77996,\"_rewards\":77997,\"rdf\":77998,\"APPLE\":77999,\"-fed\":78000,\"Ġdepended\":78001,\"-generator\":78002,\"(Process\":78003,\"Ð¼Ð¾Ð¶\":78004,\"Ġdiscrepancy\":78005,\"Ġphosphate\":78006,\"Networking\":78007,\"è®¾è®¡åĻ¨\":78008,\"(ro\":78009,\"Ġconcurrency\":78010,\"ĉauth\":78011,\"Plug\":78012,\"ATALOG\":78013,\"subj\":78014,\"/team\":78015,\"(avg\":78016,\"okin\":78017,\"Ġpledges\":78018,\"Ġcollaborators\":78019,\"Ġembarked\":78020,\"ĠDoch\":78021,\"ĠDairy\":78022,\"competition\":78023,\"ĠMutableList\":78024,\"-seven\":78025,\"Ġconcurrently\":78026,\"ĠVij\":78027,\"Ġresetting\":78028,\"dpi\":78029,\"Ġslit\":78030,\"ĠPOINTER\":78031,\"ĠCART\":78032,\".dex\":78033,\"culos\":78034,\"_personal\":78035,\"Ġanalytic\":78036,\"#create\":78037,\"_memcpy\":78038,\"(ListNode\":78039,\"_Tag\":78040,\"ĠIrr\":78041,\"\\\">';čĊ\":78042,\"Shortly\":78043,\".tip\":78044,\"\\\\[\":78045,\"ĠRepresentation\":78046,\"_LITERAL\":78047,\".cbo\":78048,\"ĠKarnataka\":78049,\"ĠCompetitive\":78050,\"ĠRue\":78051,\"Ġrunoff\":78052,\"ĠSpells\":78053,\"fclose\":78054,\"cis\":78055,\"Fra\":78056,\"Ġremorse\":78057,\"ĠCologne\":78058,\"Ġranger\":78059,\"ĠMorg\":78060,\"fighters\":78061,\".RequestParam\":78062,\"Cors\":78063,\"Ġdenote\":78064,\"Ġchoses\":78065,\"Ã¢nd\":78066,\".recycle\":78067,\"ĠLogistic\":78068,\"ĠDEAD\":78069,\"-loaded\":78070,\"ĠClears\":78071,\"Ġkell\":78072,\"raphic\":78073,\"ĠMane\":78074,\"EMBER\":78075,\"Ġmasking\":78076,\"ĉeditor\":78077,\"Hallo\":78078,\":list\":78079,\"Ġethn\":78080,\"-seat\":78081,\"Ġ*)[\":78082,\"ĠGly\":78083,\"ĠACS\":78084,\"ĉstat\":78085,\"/Common\":78086,\"Ġdisguised\":78087,\"Finance\":78088,\"ĠElephant\":78089,\"temporary\":78090,\"ĠCarly\":78091,\"Ġcocos\":78092,\"ĠJudith\":78093,\"Ġwrappers\":78094,\"ĠLunar\":78095,\"ĠrÃ©cup\":78096,\"-setup\":78097,\"Ġsizable\":78098,\"ĠĠĉĠ\":78099,\"classifier\":78100,\"Ġfigsize\":78101,\"Ġmastur\":78102,\"ĠæĽ´æĸ°\":78103,\"ĠRwanda\":78104,\")t\":78105,\"ĠCups\":78106,\"Azure\":78107,\"()},Ċ\":78108,\"SPARENT\":78109,\"(dic\":78110,\"ĠTextFormField\":78111,\"Ġdeform\":78112,\"ĠdirecciÃ³n\":78113,\"Ġyaz\":78114,\"Ġglued\":78115,\"ĠatravÃ©s\":78116,\"coffee\":78117,\"ĠUpdating\":78118,\"ĠColleges\":78119,\"Ã¤llt\":78120,\"andelier\":78121,\"Ġsalir\":78122,\"ĠSCALE\":78123,\"qe\":78124,\"ê³µ\":78125,\"(receiver\":78126,\"mdb\":78127,\"\\\"math\":78128,\"isnan\":78129,\"telefone\":78130,\"REPORT\":78131,\".addMouseListener\":78132,\"dued\":78133,\"{}]\":78134,\"()):\":78135,\"Ġworkings\":78136,\"});ĊĊĊĊ\":78137,\"ĠcomponentWillMount\":78138,\"Servers\":78139,\"_CLOSED\":78140,\"IZER\":78141,\"Ġboob\":78142,\"ĠCONCAT\":78143,\"ĠHappiness\":78144,\"Ġcommune\":78145,\"xAB\":78146,\"ownership\":78147,\"_NEAR\":78148,\"_HARD\":78149,\"ĠYA\":78150,\"lion\":78151,\"Ġspiel\":78152,\"Ġtagging\":78153,\"Ġimmoral\":78154,\"-ground\":78155,\"Ġthunk\":78156,\"Ġlocus\":78157,\"ĠLatvia\":78158,\"izioni\":78159,\"clarsimp\":78160,\"Ġpatiently\":78161,\"\\\\Has\":78162,\"Ġsubordinate\":78163,\"ĠWHICH\":78164,\"entionPolicy\":78165,\"Ġdepleted\":78166,\"FSIZE\":78167,\"Ġ[,\":78168,\"ĠBiography\":78169,\"ĠSands\":78170,\"SHARE\":78171,\"Charset\":78172,\".writ\":78173,\"_SUS\":78174,\"ĠMoreno\":78175,\"Ġbroccoli\":78176,\"ĠVX\":78177,\"amics\":78178,\".GetUser\":78179,\"ĠCommod\":78180,\".scheme\":78181,\"(vs\":78182,\"Ġanalogous\":78183,\"Psy\":78184,\"=line\":78185,\".publisher\":78186,\"Ġonward\":78187,\"ÐµÐºÑģ\":78188,\"ĠDealers\":78189,\"ĠtoArray\":78190,\"ĠChoices\":78191,\"ÐĶÐ¾Ð±Ð°Ð²\":78192,\"ĠdefaultMessage\":78193,\"Ġagreg\":78194,\"ĠConcat\":78195,\"HV\":78196,\"ĠCircularProgress\":78197,\"_svc\":78198,\"TAB\":78199,\"_fil\":78200,\".MapPath\":78201,\"zburg\":78202,\"ĠgetProduct\":78203,\"ĠVERIFY\":78204,\".Mongo\":78205,\"Ġpundits\":78206,\"pulse\":78207,\"licting\":78208,\"giatan\":78209,\"Ġ...\\\"\":78210,\"Ġfiz\":78211,\"Ġantim\":78212,\"ĠChatt\":78213,\"_TYPEDEF\":78214,\"Guy\":78215,\"ĉtests\":78216,\"ĠSlovenia\":78217,\"ĠCommandLine\":78218,\"Ġbeneficiation\":78219,\"ĠbindActionCreators\":78220,\"NTAX\":78221,\"-Cs\":78222,\"Ġcharismatic\":78223,\".alloc\":78224,\"_nf\":78225,\"Ġassaulting\":78226,\"ĠÑĤÐ°Ð±Ð»Ð¸ÑĨ\":78227,\"ĠcÃ¡c\":78228,\"ĠScrolls\":78229,\"HAS\":78230,\"yyyyMMdd\":78231,\"ĠGale\":78232,\"ĠProzent\":78233,\"ĠThornton\":78234,\"dealer\":78235,\"Ġeviction\":78236,\"Ġanale\":78237,\"âĢİ\":78238,\"=\\\"(\":78239,\"Ġeag\":78240,\"('');ĊĊ\":78241,\"Ġcontemplating\":78242,\"hyp\":78243,\"belum\":78244,\"ĠFits\":78245,\"ĠExaminer\":78246,\"ĠBucc\":78247,\"Ġmembranes\":78248,\"Ġbrilliantly\":78249,\"ĠCeramic\":78250,\"Ã¨ve\":78251,\"ĠPound\":78252,\"Ġtreasury\":78253,\".');čĊ\":78254,\"ĉtc\":78255,\"ecake\":78256,\"CurrentUser\":78257,\".habbo\":78258,\"Ġtreason\":78259,\"ĠFTC\":78260,\"MUX\":78261,\"Ġnumbering\":78262,\"RIA\":78263,\"--)čĊ\":78264,\"Ġbeige\":78265,\"ĠArtem\":78266,\"bases\":78267,\"_BAND\":78268,\"ĠPavel\":78269,\"ÑģÑĤÑĢÑĥÐº\":78270,\"thed\":78271,\"_nbr\":78272,\"ĠÐ±Ð°Ð·\":78273,\"slideUp\":78274,\"ĠTaxi\":78275,\"Ġaquel\":78276,\"ĠMiscellaneous\":78277,\"elu\":78278,\"Ġinsulated\":78279,\"Ġassez\":78280,\".Configure\":78281,\"Ġquella\":78282,\"Ġparasites\":78283,\"Away\":78284,\"ducible\":78285,\"('='\":78286,\"Ġvero\":78287,\"ĠWatkins\":78288,\"ĠSeparator\":78289,\"apses\":78290,\"environments\":78291,\"Ġappraisal\":78292,\"paused\":78293,\"_death\":78294,\"ĠsituaciÃ³n\":78295,\"Ġfraternity\":78296,\"Ġinsistence\":78297,\"_crypto\":78298,\"AttribPointer\":78299,\"\\\"]],Ċ\":78300,\"Ġoxidative\":78301,\"Ġneuronal\":78302,\"ĠQGraphics\":78303,\"\\\">',\":78304,\"ĠSmile\":78305,\"Objective\":78306,\"ĠSakura\":78307,\"ZO\":78308,\"amientos\":78309,\".LocalDateTime\":78310,\"/unit\":78311,\"-frequency\":78312,\"-CS\":78313,\"\\\"};ĊĊ\":78314,\"Ġrelev\":78315,\"Allocation\":78316,\"%M\":78317,\"ĠDustin\":78318,\"Ġswiper\":78319,\"ĠNarc\":78320,\"tatus\":78321,\"Ġlonging\":78322,\"Ġthuisontvangst\":78323,\"Ġcommodo\":78324,\"ĠADA\":78325,\"imu\":78326,\"_forum\":78327,\"angi\":78328,\"ĉApplication\":78329,\"[from\":78330,\"ĠBethesda\":78331,\"otropic\":78332,\"ĠMUCH\":78333,\"Ġpredic\":78334,\"filme\":78335,\"(grammar\":78336,\"(APP\":78337,\"ĠCurl\":78338,\"Ġshorthand\":78339,\"affiliate\":78340,\"]**\":78341,\"_nth\":78342,\"iability\":78343,\"bomb\":78344,\"YT\":78345,\"(\\\"--------------------------------\":78346,\"ĠBicycle\":78347,\"imating\":78348,\".nii\":78349,\"ĠKara\":78350,\"askan\":78351,\"reactstrap\":78352,\"Ġwlan\":78353,\"ographers\":78354,\"ĉĠčĊ\":78355,\"paginator\":78356,\"ihanna\":78357,\"Ġmatchups\":78358,\"_PADDING\":78359,\"_registers\":78360,\"yte\":78361,\"Ġpricey\":78362,\"Ġfooth\":78363,\"ĠHuck\":78364,\"PARTMENT\":78365,\"Ġprohibiting\":78366,\".isDebugEnabled\":78367,\"à¤¸\":78368,\"lein\":78369,\"=res\":78370,\"/************************************************\":78371,\"ddl\":78372,\"mpr\":78373,\"Ġê°Ļ\":78374,\"ĠWALL\":78375,\"Ġrevolves\":78376,\"ĠPERF\":78377,\");}\":78378,\"ĠToby\":78379,\"/../\":78380,\"Ġkao\":78381,\"Ġforecasting\":78382,\"_Content\":78383,\"Ġ})),Ċ\":78384,\"porno\":78385,\"leaders\":78386,\"-hooks\":78387,\"istributor\":78388,\"/story\":78389,\"ĉlines\":78390,\"-reply\":78391,\"Ġadrenaline\":78392,\"FlowLayout\":78393,\".routing\":78394,\"ĉtimeout\":78395,\"Ġraided\":78396,\"ĉDD\":78397,\"Ġdisdain\":78398,\"consistent\":78399,\"geist\":78400,\"(\\\":/\":78401,\"(states\":78402,\"ĠHIT\":78403,\"-Ray\":78404,\"-health\":78405,\"Ġ//-\":78406,\"tement\":78407,\".navigateTo\":78408,\"Ġbenches\":78409,\"ewing\":78410,\"enzhen\":78411,\"-split\":78412,\"Reject\":78413,\"Ġpylab\":78414,\"Ġflashlight\":78415,\"Ġinitiating\":78416,\"ĠOECD\":78417,\"Ġentrega\":78418,\"Nature\":78419,\".orange\":78420,\"ĠÃºltimos\":78421,\"Ġecs\":78422,\".hover\":78423,\"Ġdeluxe\":78424,\"Roger\":78425,\"ĠTic\":78426,\"\\\",__\":78427,\"Ġplaceholders\":78428,\"Ġspawning\":78429,\"Ġnurture\":78430,\"Ġexchanging\":78431,\"CreateDate\":78432,\"Ġlamin\":78433,\"ĠSemiconductor\":78434,\"Ġ*/ĊĊĊĊ\":78435,\"ĠfÃ¸rste\":78436,\"Ġinitials\":78437,\"Ġproverb\":78438,\"ĠActress\":78439,\"Concat\":78440,\"ĠNicola\":78441,\"-shopping\":78442,\"ivitÃł\":78443,\"itian\":78444,\"ĠWert\":78445,\".AddScoped\":78446,\"Ġsalesman\":78447,\"bos\":78448,\"ĠFerry\":78449,\"CENTER\":78450,\"modelo\":78451,\"ĠRoe\":78452,\"ĠIslanders\":78453,\"upertino\":78454,\"Declare\":78455,\"Ġvowels\":78456,\"Ġboxer\":78457,\"(toolbar\":78458,\"Ġhalftime\":78459,\"nin\":78460,\"ĠBrooke\":78461,\"ĠVes\":78462,\"Ð»Ð°ÑĤ\":78463,\"Ġmotivo\":78464,\"protein\":78465,\"kus\":78466,\"busy\":78467,\"ĠstringValue\":78468,\"ĉMy\":78469,\"Nut\":78470,\"uzzi\":78471,\"Ġsez\":78472,\"Ġolds\":78473,\"Ġmethyl\":78474,\"ĠbÃ¼\":78475,\"hiba\":78476,\"ĠInspiration\":78477,\"Ġawaited\":78478,\"Bruce\":78479,\"BALL\":78480,\"ĠTRY\":78481,\"-lite\":78482,\"Ġunderestimate\":78483,\"ĉrv\":78484,\".mov\":78485,\"ĠhistÃ³\":78486,\"ĠErie\":78487,\"cname\":78488,\"/connect\":78489,\"conference\":78490,\"_trait\":78491,\"Ġkvinde\":78492,\"ĠInvocation\":78493,\"ĠDateTimeOffset\":78494,\"wechat\":78495,\"CEO\":78496,\"ĠLibyan\":78497,\".capitalize\":78498,\"Ġgracefully\":78499,\"Ġreels\":78500,\"increase\":78501,\".maxcdn\":78502,\"favorites\":78503,\"ITED\":78504,\"<Scalar\":78505,\".Fetch\":78506,\"Ġsuspicions\":78507,\"[MAXN\":78508,\"_TRANSACTION\":78509,\"Ġcylindrical\":78510,\".nextElement\":78511,\"Ġmorphology\":78512,\"ĠCed\":78513,\"Ġcname\":78514,\"(rawValue\":78515,\"Walking\":78516,\"Loads\":78517,\"_ALIGNMENT\":78518,\"_ROUND\":78519,\"ĠROCK\":78520,\"clusters\":78521,\"\\\"h\":78522,\"ueur\":78523,\"plans\":78524,\"Ġatheists\":78525,\"Ġvat\":78526,\"=\\\"__\":78527,\"awah\":78528,\"ervatives\":78529,\"ĠfindOne\":78530,\"Ġnotebooks\":78531,\"ĠTTL\":78532,\".GetAsync\":78533,\"ĠmÃ¼nchen\":78534,\"mAh\":78535,\"brtc\":78536,\"_PY\":78537,\"BuilderInterface\":78538,\"ĉgbc\":78539,\"Ġblanks\":78540,\"ĠdÃ©m\":78541,\"Recursive\":78542,\".ManyToManyField\":78543,\"_PARSER\":78544,\"Ġendeavors\":78545,\"Ġdrib\":78546,\"_php\":78547,\"Ġautomobiles\":78548,\"loit\":78549,\"ĠOrtiz\":78550,\"ĠUD\":78551,\"(dAtA\":78552,\"ĠMitsubishi\":78553,\"AttributeValue\":78554,\"Ġpoate\":78555,\"çĽ¸åħ³\":78556,\"Ġcavalry\":78557,\".Matchers\":78558,\"Ġingress\":78559,\"ĠJehovah\":78560,\"ĉseq\":78561,\"_street\":78562,\"ĠSofia\":78563,\"Ġscrolls\":78564,\"vinces\":78565,\"electronics\":78566,\"\\\\param\":78567,\"Ġzend\":78568,\"Ġskim\":78569,\".pix\":78570,\"enk\":78571,\"_areas\":78572,\"ĠBoise\":78573,\"-validator\":78574,\"Ġunearth\":78575,\"ofilm\":78576,\"ĠBCE\":78577,\"ovsky\":78578,\"ĠLever\":78579,\"Ġpoliceman\":78580,\"Ġmies\":78581,\"ĠPortrait\":78582,\"Ġpotions\":78583,\"_mot\":78584,\"massage\":78585,\"ÐµÐ½Ñĭ\":78586,\"Ġcud\":78587,\"Ġmanuscripts\":78588,\"continuous\":78589,\".tc\":78590,\"Ã¼z\":78591,\"ĠFreeze\":78592,\"_:*\":78593,\".hm\":78594,\"ĠCSRF\":78595,\"ĠMÃ¤dchen\":78596,\"-peer\":78597,\"ĠputStrLn\":78598,\"Ġimshow\":78599,\"Ġ@{$\":78600,\"ĠBauer\":78601,\"(tolua\":78602,\"Ġwrought\":78603,\"ĠGian\":78604,\"ĠÃ¶n\":78605,\"fung\":78606,\"ButtonTitles\":78607,\"})\\\",\":78608,\"ĠMurdoch\":78609,\"KW\":78610,\"ĠReported\":78611,\"sie\":78612,\"Ġmeilleurs\":78613,\"ĠKaepernick\":78614,\"Ġdsp\":78615,\"ĠEveryday\":78616,\"rends\":78617,\"ĠConce\":78618,\"Ġincontr\":78619,\".removeAttribute\":78620,\"ãģ¾ãģĹãģŁ\":78621,\"Ġrew\":78622,\"ĠPresence\":78623,\"/gin\":78624,\".Claims\":78625,\"ĉsl\":78626,\"Dragging\":78627,\"Ġspree\":78628,\"Ġactualizar\":78629,\"Ġnoss\":78630,\"Ġlifestyles\":78631,\";c\":78632,\"UDGE\":78633,\"InMillis\":78634,\"Ġitk\":78635,\"abby\":78636,\"(pa\":78637,\"issent\":78638,\"ĠPresidents\":78639,\"ĠHexatrigesimal\":78640,\"ecided\":78641,\"(tex\":78642,\"Ġcrowned\":78643,\"Philip\":78644,\"ĠSark\":78645,\"ĠAddition\":78646,\"ĠColbert\":78647,\"ĠGLES\":78648,\"ĠQLineEdit\":78649,\"Ġdrains\":78650,\"ĠsortOrder\":78651,\"escort\":78652,\"Ted\":78653,\"Ġmanifested\":78654,\".variant\":78655,\"ĠREFERENCES\":78656,\"(gc\":78657,\"/{$\":78658,\"ocyte\":78659,\"Ġornament\":78660,\"Ġbookstore\":78661,\"Hol\":78662,\"ĠVall\":78663,\"/')\":78664,\"acak\":78665,\"ĠNavBar\":78666,\"Ġnye\":78667,\"_Dec\":78668,\"olvimento\":78669,\"MRI\":78670,\"Ġhoop\":78671,\"ĠĠĠĊĠĠĠĠĊ\":78672,\"ĠPosting\":78673,\"Ġoutlining\":78674,\"agascar\":78675,\".breakpoints\":78676,\"catid\":78677,\"_triggered\":78678,\"Ġrunnable\":78679,\"/trunk\":78680,\"-chair\":78681,\"Ġbaiser\":78682,\"facility\":78683,\"Ġpollen\":78684,\"éŁ³\":78685,\"Ġ[[\\\"\":78686,\"ĠCGSizeMake\":78687,\"Ġassail\":78688,\"ĠAthena\":78689,\"ĠAddiction\":78690,\"iland\":78691,\";br\":78692,\".Keyboard\":78693,\"_fm\":78694,\"Ace\":78695,\"ĠREQ\":78696,\"ĠNewest\":78697,\";.\":78698,\"ĠMADE\":78699,\"setTimeout\":78700,\"ServletContext\":78701,\"ĉĉĉĉĉĠĠĠĠĠĠĠ\":78702,\"ĠLup\":78703,\"-reviewed\":78704,\"ĠAnalyzer\":78705,\".NaN\":78706,\"utura\":78707,\"Geom\":78708,\"ymes\":78709,\"_sin\":78710,\"Ġtrustees\":78711,\"//===\":78712,\"Ġadmittedly\":78713,\"Ġako\":78714,\"ĠUEFA\":78715,\"_hero\":78716,\"Github\":78717,\"_estimate\":78718,\"Ġcorrobor\":78719,\"entiful\":78720,\"ĠSteering\":78721,\"ĠMitar\":78722,\"ĠPipes\":78723,\"ĠkÃ¥\":78724,\"_season\":78725,\"ĠBCHP\":78726,\"/software\":78727,\"nette\":78728,\"*\\\",\":78729,\"undra\":78730,\"ĠgetRequest\":78731,\".Buffered\":78732,\"fern\":78733,\"Mario\":78734,\"Ġdispers\":78735,\"_categoria\":78736,\"Ġendlessly\":78737,\"guards\":78738,\"ĉatomic\":78739,\"scoped\":78740,\"Ġundone\":78741,\"SHOP\":78742,\"ĠTorch\":78743,\"ĠHastings\":78744,\"ĠFILES\":78745,\"_Save\":78746,\"WithMany\":78747,\"Wis\":78748,\"Ġintensified\":78749,\".argument\":78750,\"ĠApiService\":78751,\"ĠJSImport\":78752,\"eki\":78753,\"Insurance\":78754,\"sty\":78755,\".dsl\":78756,\"Ġ---------------------------------------------------------------------------Ċ\":78757,\"ltre\":78758,\"SEG\":78759,\"DRAM\":78760,\"-blocking\":78761,\"Ð½Ðµ\":78762,\"piring\":78763,\"ĠPRES\":78764,\"ĠFach\":78765,\"Ġsarc\":78766,\"ĠSME\":78767,\"ĠElem\":78768,\"ĠCaliforn\":78769,\"Unsafe\":78770,\"ĠComposer\":78771,\"(dep\":78772,\"ĠAttend\":78773,\"Ġ*)((\":78774,\"Ġteased\":78775,\"ĠATI\":78776,\"(pm\":78777,\"Ġ\\\"(\\\\<\":78778,\"']+\":78779,\"Ġsectarian\":78780,\"ĠPharma\":78781,\"EI\":78782,\"ĉTokenNameIdentifier\":78783,\"Ã§u\":78784,\"Ġaugmentation\":78785,\"Ġsaja\":78786,\"Ġcolore\":78787,\"deadline\":78788,\".ITEM\":78789,\"ĠRiy\":78790,\"maal\":78791,\"ĉclick\":78792,\"Permanent\":78793,\"Houston\":78794,\"Responsive\":78795,\"ĠErgebn\":78796,\"Ġ\\\"%\\\"\":78797,\".toObject\":78798,\"ĉpid\":78799,\".SubItems\":78800,\"Ġ[+\":78801,\"Ġfungus\":78802,\"Ġbrochure\":78803,\"ĠApproximately\":78804,\"Ġmik\":78805,\"veloper\":78806,\"Ġpagamento\":78807,\"åĬ¨çĶŁæĪĲ\":78808,\"Ġcyt\":78809,\"ĠTempl\":78810,\"eniable\":78811,\"ĠConan\":78812,\"Ġsetback\":78813,\"oblins\":78814,\"ĠNTN\":78815,\"ossal\":78816,\"VERBOSE\":78817,\".bio\":78818,\"ĠÅŀ\":78819,\"á»Ł\":78820,\"ĠGrip\":78821,\"<*\":78822,\"TRIES\":78823,\".choose\":78824,\"Phoenix\":78825,\"Ġprovincia\":78826,\"MFLOAT\":78827,\"Cars\":78828,\"Ġretrospective\":78829,\"Ġagony\":78830,\"Ġllen\":78831,\"Ġbumped\":78832,\"ylation\":78833,\"Ġwarto\":78834,\"Ġtoddlers\":78835,\"lav\":78836,\"(patient\":78837,\"Ġ()->\":78838,\"clc\":78839,\"ĠonActivityResult\":78840,\"Ġemulation\":78841,\"Ġbulld\":78842,\"_AUTHOR\":78843,\">O\":78844,\"/qu\":78845,\"ĠÂ¶\":78846,\"ĉhr\":78847,\"stdClass\":78848,\"Ġspacer\":78849,\"Translatef\":78850,\".adj\":78851,\":item\":78852,\"Ġexhausting\":78853,\"plx\":78854,\"Ġrevital\":78855,\"ÅĽnie\":78856,\"Ġcalifornia\":78857,\"setState\":78858,\"/tab\":78859,\"indsight\":78860,\"_Level\":78861,\"imilar\":78862,\".navigator\":78863,\"Ġtemperament\":78864,\"ĠdifÃŃc\":78865,\"Ġinexperienced\":78866,\"Ġimprint\":78867,\"ĠResist\":78868,\"_FOLLOW\":78869,\"ĠRetry\":78870,\"Ġengagements\":78871,\"CanBeConverted\":78872,\"Ġsingled\":78873,\".icons\":78874,\"Ġcondoms\":78875,\"ĠFeather\":78876,\"lernen\":78877,\")b\":78878,\"ĠNpgsql\":78879,\"ĠConsolid\":78880,\"pekt\":78881,\"ç«¯\":78882,\"stringValue\":78883,\"Gam\":78884,\"ĠSinai\":78885,\"ĠObjectType\":78886,\"_inp\":78887,\"Ġparti\":78888,\"ĠWaterproof\":78889,\"Ġcollided\":78890,\"Ġairs\":78891,\"/world\":78892,\"/Search\":78893,\"_syntax\":78894,\"ÅŁi\":78895,\"_annotations\":78896,\"ĠTaco\":78897,\"LAT\":78898,\"ĠOpcode\":78899,\"ãĢĤâĢĿĊĊ\":78900,\"Ġleash\":78901,\"ĠAlicia\":78902,\"ï¼Įé»ĺè®¤\":78903,\"ĠTSA\":78904,\"Ġhotter\":78905,\"_HandleTypeDef\":78906,\"ginas\":78907,\"Ġindifferent\":78908,\"CustomLabel\":78909,\"ĳĲ\":78910,\"odynamics\":78911,\"OnUiThread\":78912,\"ĠCara\":78913,\".devices\":78914,\"ĠForeignKey\":78915,\">');čĊ\":78916,\".but\":78917,\".tif\":78918,\"Ġæĸ°\":78919,\"ĠOkHttpClient\":78920,\"(Texture\":78921,\".SOCK\":78922,\"(instr\":78923,\"mist\":78924,\"Unnamed\":78925,\"Sr\":78926,\"*num\":78927,\"(NUM\":78928,\"*****ĊĊ\":78929,\"/help\":78930,\"beeld\":78931,\".adjust\":78932,\"_Parms\":78933,\"_ANGLE\":78934,\"TREE\":78935,\"Ġestudio\":78936,\"worksheet\":78937,\"//----------------------------------------------------------------------------Ċ\":78938,\"Advice\":78939,\"Ã¶ÃŁe\":78940,\"nEnter\":78941,\"aÄĩ\":78942,\"Ġageing\":78943,\"ĠKurdistan\":78944,\"_RTC\":78945,\"banks\":78946,\".UR\":78947,\"Ġincarnation\":78948,\"Ġglamour\":78949,\"ĠãĤ¹\":78950,\"Ġimperialism\":78951,\"ìŀħëĭĪëĭ¤\":78952,\"Ġsideline\":78953,\".ArrayAdapter\":78954,\"######Ċ\":78955,\"ĠSyrians\":78956,\"ĠAttendance\":78957,\"-esque\":78958,\"Ġgrenades\":78959,\"_qos\":78960,\"OSC\":78961,\"_door\":78962,\".Cap\":78963,\"DAL\":78964,\"Ġambush\":78965,\"ĉes\":78966,\"ToJson\":78967,\"Manufact\":78968,\"Emergency\":78969,\"ĠQFile\":78970,\"Ġåķ\":78971,\"ĉLP\":78972,\"æĲľç´¢\":78973,\"ĠGarland\":78974,\".connections\":78975,\".ReadFile\":78976,\"ĠHwy\":78977,\"âĢĶeven\":78978,\"xDE\":78979,\"Ġnouvelles\":78980,\"ĠHuss\":78981,\"Deposit\":78982,\"_foreign\":78983,\"abaj\":78984,\"ĠPoz\":78985,\"dbus\":78986,\"Ġiod\":78987,\"ÃĹĊĊ\":78988,\"ĠCheers\":78989,\"Jessica\":78990,\"Ġsaison\":78991,\"ĠPty\":78992,\"\\\"><!--\":78993,\"inoa\":78994,\"excluding\":78995,\"Ġbitterness\":78996,\"ueling\":78997,\"Protection\":78998,\"ĠBergen\":78999,\"ĉĉĉĠĊ\":79000,\"BEL\":79001,\"ĠTobias\":79002,\"Ġupd\":79003,\"ë²Ħ\":79004,\"Ġfoliage\":79005,\"_PUR\":79006,\"ĠAdvocate\":79007,\"ĠonRequest\":79008,\".partition\":79009,\"ĠDeveloped\":79010,\"Ġcrib\":79011,\"ÑģÐºÐ¸\":79012,\"voucher\":79013,\"ĠIntersection\":79014,\"Ġniece\":79015,\"Ġlk\":79016,\"ĠCaucus\":79017,\"([čĊ\":79018,\"ĠDetector\":79019,\"/lg\":79020,\"ĠHedge\":79021,\"Ġslugg\":79022,\"angstrom\":79023,\"ĠControllerBase\":79024,\"ĉyy\":79025,\".pp\":79026,\"ĠKling\":79027,\"ĠLTS\":79028,\"âĨĵ\":79029,\"arra\":79030,\"getJSON\":79031,\"_website\":79032,\"Ġidiots\":79033,\"ĠMeghan\":79034,\"ButtonModule\":79035,\"Ġ%>\":79036,\"Ġprojectiles\":79037,\"sword\":79038,\"ĠĠĠĠĉĉĉĉĉ\":79039,\"Ġasses\":79040,\"ĠSuche\":79041,\"Ġked\":79042,\"rÃ¡f\":79043,\"ĠsarÃł\":79044,\"LEncoder\":79045,\"RAND\":79046,\"ĠSomehow\":79047,\"ĠSala\":79048,\"Ġmultim\":79049,\"ĠnumRows\":79050,\"ĠRockies\":79051,\"Ġxd\":79052,\"Ġdisproportionate\":79053,\"ĉRTLI\":79054,\"ĉURL\":79055,\"agli\":79056,\"ĠSubLObject\":79057,\"ĠGraves\":79058,\"_regularizer\":79059,\"_characters\":79060,\".analytics\":79061,\".mods\":79062,\"Ġimprovis\":79063,\"ĠBlockPos\":79064,\"_installed\":79065,\"_CONTINUE\":79066,\"/down\":79067,\"SOC\":79068,\".apiUrl\":79069,\".UserService\":79070,\"Trees\":79071,\"æĬķ\":79072,\"_overflow\":79073,\"ausal\":79074,\"boxed\":79075,\"&Ċ\":79076,\"ĠJacqu\":79077,\"_usr\":79078,\"INTR\":79079,\"Ġsignage\":79080,\"Ġcoch\":79081,\"Normalized\":79082,\"ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ\":79083,\"Ġsustaining\":79084,\"ĠScrap\":79085,\"praak\":79086,\"-avatar\":79087,\".website\":79088,\"(gui\":79089,\"=response\":79090,\"(operator\":79091,\"Ġeffortless\":79092,\"ĠActionBar\":79093,\"FFE\":79094,\"ç«ĭ\":79095,\"ĉRegister\":79096,\"ARSE\":79097,\")n\":79098,\"ĠMOST\":79099,\"_SPR\":79100,\"_CHIP\":79101,\"asd\":79102,\"ĠtopLeft\":79103,\"ĠTxt\":79104,\"Ð°Ð¶Ð´\":79105,\".Volume\":79106,\"Ġinlet\":79107,\"Ġfractured\":79108,\"ĠLongitude\":79109,\"ĠDram\":79110,\".ConnectionStrings\":79111,\"abee\":79112,\"perate\":79113,\"jni\":79114,\"`t\":79115,\"finger\":79116,\"ĠJessie\":79117,\",ll\":79118,\"ĠRudy\":79119,\"Ġgenerously\":79120,\"_CONVERT\":79121,\"Ġeiusmod\":79122,\"ĠDai\":79123,\"imagin\":79124,\"ĠGObject\":79125,\"ĠÄĳÃ£\":79126,\"idious\":79127,\"ridged\":79128,\"Ġsopr\":79129,\"Ð»Ð°Ð´\":79130,\"Ġstitching\":79131,\"Ġkrb\":79132,\"ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĊ\":79133,\"Ġlavish\":79134,\"ĠCiv\":79135,\"StartElement\":79136,\"ĠLol\":79137,\"ĉutil\":79138,\"']].\":79139,\"ĠMalay\":79140,\"Ġ.čĊ\":79141,\"çı\":79142,\"_Invoke\":79143,\"ivist\":79144,\"Depending\":79145,\")\\\";čĊ\":79146,\"Ġtofu\":79147,\"ĠMCP\":79148,\"Ġstocking\":79149,\"Ġcathedral\":79150,\"Ġquadratic\":79151,\"aleza\":79152,\".moveToFirst\":79153,\"ColorBrush\":79154,\"ĠErect\":79155,\"ĠRCS\":79156,\":before\":79157,\"=node\":79158,\"ĠproblÃ¨me\":79159,\"_rho\":79160,\"Ġsvensk\":79161,\"Roy\":79162,\"basePath\":79163,\"Ġkond\":79164,\"ĠÐµÑģÑĤÑĮ\":79165,\"getSingleton\":79166,\"ĠDSM\":79167,\"Ian\":79168,\"Ġhunted\":79169,\"ĠTerrace\":79170,\"Ġchildcare\":79171,\"Ġcoeffs\":79172,\"Ġgraded\":79173,\"ĠLucia\":79174,\"ĠjsonObj\":79175,\"ableObject\":79176,\"Vault\":79177,\"ÃŃstica\":79178,\"_pago\":79179,\"_PF\":79180,\"andre\":79181,\"ĠAnatomy\":79182,\".JComboBox\":79183,\"oure\":79184,\"Ġgenotype\":79185,\"benchmark\":79186,\"Ġbaik\":79187,\"ĠQuÃ©bec\":79188,\"())čĊčĊ\":79189,\"Ġkunne\":79190,\"ĠPossibly\":79191,\"ĠBeispiel\":79192,\"Ġcondolences\":79193,\"=query\":79194,\"ĠvÃµ\":79195,\"Ġnuevas\":79196,\"ĠApocalypse\":79197,\"vection\":79198,\"ĉsprite\":79199,\"levator\":79200,\".\\\"]Ċ\":79201,\"getNext\":79202,\"(Register\":79203,\"Ġunsub\":79204,\"treeview\":79205,\"NodeId\":79206,\"ĠìĬ\":79207,\"&)Ċ\":79208,\"flt\":79209,\"Ġhotspot\":79210,\"Ġgastrointestinal\":79211,\"figcaption\":79212,\"owered\":79213,\"ĠCss\":79214,\"_ros\":79215,\"_scaling\":79216,\"Ġeditar\":79217,\"']]);Ċ\":79218,\".neg\":79219,\"Ġfuturistic\":79220,\"Ġstata\":79221,\"uctor\":79222,\"ULATE\":79223,\"ĠwÅĤ\":79224,\"-character\":79225,\"ĠĠĊĊĊ\":79226,\"ĠBeau\":79227,\"Ġpermalink\":79228,\"ByteBuffer\":79229,\"Ġdictates\":79230,\"ĠMLA\":79231,\"_Login\":79232,\"Conditional\":79233,\"SYM\":79234,\"Arrange\":79235,\"ĠStocks\":79236,\"Ġmeasles\":79237,\"à¤¤\":79238,\"Encryption\":79239,\"ĠEntire\":79240,\"ĠminOccurs\":79241,\"Ġhugs\":79242,\"/window\":79243,\"ĉprop\":79244,\"=$((\":79245,\"ĠUCS\":79246,\"ĠFir\":79247,\".Clock\":79248,\"-desktop\":79249,\"Ġmalformed\":79250,\"ĠAberdeen\":79251,\"ĠÃħ\":79252,\"ĠRoads\":79253,\"ĠBehaviour\":79254,\"()'\":79255,\"å±ŀæĢ§\":79256,\".Comparator\":79257,\"_mo\":79258,\"_IOS\":79259,\"ĠOrioles\":79260,\".Lookup\":79261,\"Ġfseek\":79262,\"_IB\":79263,\"/star\":79264,\"+</\":79265,\"_Destroy\":79266,\"-tra\":79267,\"('.')\":79268,\"ĠForCanBeConverted\":79269,\"ĠForCanBeConvertedToF\":79270,\"ĠForCanBeConvertedToForeach\":79271,\"ĠAad\":79272,\"Ġairstrikes\":79273,\"isOk\":79274,\"Ġfederation\":79275,\"ĠLabrador\":79276,\"_launcher\":79277,\"alogy\":79278,\">>();ĊĊ\":79279,\"ĠJub\":79280,\"utr\":79281,\"istinguished\":79282,\"abant\":79283,\"Regions\":79284,\"/helper\":79285,\"_listen\":79286,\"ĉToast\":79287,\"ĠFileManager\":79288,\"itoris\":79289,\"Ġelectrodes\":79290,\"GRADE\":79291,\"Ġbegged\":79292,\"ĠPlates\":79293,\"afone\":79294,\"!!!Ċ\":79295,\"Ġebx\":79296,\"ĠdefaultProps\":79297,\"ĠcompareTo\":79298,\"ĠSCC\":79299,\".extent\":79300,\"autos\":79301,\"Ġìĸ\":79302,\"ĠTolkien\":79303,\"::*;ĊĊ\":79304,\"*',\":79305,\".documents\":79306,\"sing\":79307,\"=BitConverter\":79308,\"ĠKrishna\":79309,\"Ġplaisir\":79310,\"Ġbuggy\":79311,\"Ġregulates\":79312,\"Ġfriday\":79313,\"Ġcompleteness\":79314,\"Ġaudible\":79315,\"ĠRecognitionException\":79316,\"Ġshedding\":79317,\"[]){Ċ\":79318,\"(ball\":79319,\"ĠChatColor\":79320,\"(Code\":79321,\"(),ĊĊ\":79322,\"Ġtertiary\":79323,\"ĠSIDE\":79324,\"(JSONObject\":79325,\"¤æĸŃ\":79326,\"Remarks\":79327,\"ĠlistBox\":79328,\".imageUrl\":79329,\"Ġdelaying\":79330,\"Ġsocioeconomic\":79331,\".lp\":79332,\"<My\":79333,\".onStart\":79334,\"ĠScor\":79335,\"byterian\":79336,\"-rock\":79337,\"_meter\":79338,\"Ġrepmat\":79339,\"Ġpregunta\":79340,\"ĠMETA\":79341,\"(gt\":79342,\"ĠFRIEND\":79343,\"Ġsorte\":79344,\"Ġhep\":79345,\"onomies\":79346,\"ĠautomÃ¡t\":79347,\"ĠFormats\":79348,\"stateProvider\":79349,\"-floor\":79350,\"_MUX\":79351,\"(Content\":79352,\"ĠINSTALL\":79353,\"ĠTitanium\":79354,\"ruc\":79355,\".Dataset\":79356,\"asco\":79357,\".MATCH\":79358,\"Ġfestivities\":79359,\"MSN\":79360,\".ot\":79361,\"ĠGetLastError\":79362,\"iens\":79363,\"Ġ__________________ĊĊ\":79364,\"_GF\":79365,\"_plate\":79366,\"ĠFormal\":79367,\"-letter\":79368,\"Kate\":79369,\"apia\":79370,\"Ġ******************************************************************************/Ċ\":79371,\"/generated\":79372,\"ĠDing\":79373,\"ĠFriedrich\":79374,\"Ġ')'\":79375,\"UBLISH\":79376,\"ĠAbilities\":79377,\"Ġunlocking\":79378,\".yy\":79379,\"ĠInterr\":79380,\"nothrow\":79381,\"ipop\":79382,\"ĠCORPOR\":79383,\"[array\":79384,\"<WebElement\":79385,\"_SID\":79386,\".qual\":79387,\"Diagnostic\":79388,\":\\\"\\\",Ċ\":79389,\"(moment\":79390,\"jured\":79391,\"Ġterrestrial\":79392,\"erule\":79393,\"Ġ&);Ċ\":79394,\"Ġbureaucratic\":79395,\"oppins\":79396,\"Ġjapon\":79397,\"leon\":79398,\"_rename\":79399,\"_DESTROY\":79400,\".EndsWith\":79401,\"Ġeruption\":79402,\"*******************************************************************************/Ċ\":79403,\"PET\":79404,\"_reload\":79405,\"Ġsupplementary\":79406,\"Ġzien\":79407,\"CLLocation\":79408,\"Ġklein\":79409,\"_ef\":79410,\":{}\":79411,\"Ġcomentarios\":79412,\"(validation\":79413,\".xtext\":79414,\"_IMAGES\":79415,\".setInput\":79416,\"ĠDecompiled\":79417,\"_TBL\":79418,\"complexType\":79419,\"_featured\":79420,\"Ġ?><?\":79421,\".vote\":79422,\"ĠFridays\":79423,\".consume\":79424,\".MEDIA\":79425,\"Ġsynerg\":79426,\"İĺìĿ´ì§Ģ\":79427,\"_HEADERS\":79428,\"xAC\":79429,\"_nv\":79430,\"ÎŃ\":79431,\"ĠSimone\":79432,\"Cerrar\":79433,\"addock\":79434,\".serializer\":79435,\"ĠClassified\":79436,\".ItemsSource\":79437,\"Ġprecondition\":79438,\"ãģĿãģĹãģ¦\":79439,\"DIST\":79440,\"ImageUrl\":79441,\"/random\":79442,\"ĠerÃ³t\":79443,\"[root\":79444,\"ALLERY\":79445,\"cj\":79446,\"xAD\":79447,\"###############################################################################Ċ\":79448,\"Ġitaliani\":79449,\"|#\":79450,\"Ġregenerate\":79451,\"Ġstrr\":79452,\"(||\":79453,\"ĠEmerson\":79454,\"ĠPIE\":79455,\"cliffe\":79456,\"ĉan\":79457,\">Password\":79458,\"toDate\":79459,\"Cipher\":79460,\"Ġconvoy\":79461,\"ĠXCTAssertTrue\":79462,\"/__\":79463,\"-focus\":79464,\"ĠRhino\":79465,\"Ġgoo\":79466,\"Ġboton\":79467,\".NoSuch\":79468,\"ĠReduced\":79469,\"MISS\":79470,\"ĠWinchester\":79471,\"urlencode\":79472,\"Ġmuddy\":79473,\"iya\":79474,\"ĠMbps\":79475,\"Ġstal\":79476,\"odafone\":79477,\"ä»¬\":79478,\"Ġpháº©m\":79479,\"Ġ\\\"/\\\";Ċ\":79480,\"ĠAmmo\":79481,\"NewProp\":79482,\"Ġ=ĊĊ\":79483,\"ĠÐŁÑĢ\":79484,\"Ġpaz\":79485,\"Ġlibero\":79486,\"ĉResource\":79487,\"neighbors\":79488,\",response\":79489,\"_attempts\":79490,\"Ġnk\":79491,\"Ġmilitias\":79492,\"_PAYLOAD\":79493,\".ByteString\":79494,\"ĠÑģÐ¾Ð´ÐµÑĢÐ¶\":79495,\"arton\":79496,\">Hello\":79497,\"lightly\":79498,\"owell\":79499,\"Ġguarding\":79500,\"ĠTOK\":79501,\"Ġwhereabouts\":79502,\"_dw\":79503,\"ĠRoulette\":79504,\"Ġgyr\":79505,\"ĠFedora\":79506,\".Buttons\":79507,\"Ġexclaimed\":79508,\"ĠSommer\":79509,\"AuthGuard\":79510,\"-rating\":79511,\"MethodBeat\":79512,\".positions\":79513,\"Median\":79514,\".âĢ¦ĊĊ\":79515,\"Ġglac\":79516,\"Ġundermined\":79517,\"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\":79518,\"_third\":79519,\".keep\":79520,\"Ġhaya\":79521,\"ĠtoJSON\":79522,\"ĠLaurie\":79523,\"ĠĉĠĠĠ\":79524,\"ĠAccum\":79525,\"Ġprune\":79526,\"urved\":79527,\"ĠNSF\":79528,\"ĠGrape\":79529,\"FLICT\":79530,\"è²\":79531,\"Ġpredis\":79532,\"_ptrs\":79533,\"Ġmulticast\":79534,\"(Group\":79535,\"ĠheiÃŁ\":79536,\"Ġfederally\":79537,\"_PAUSE\":79538,\"Ġmalaysia\":79539,\"ĠRecall\":79540,\"Ġrodz\":79541,\"ĠSentence\":79542,\"intel\":79543,\"_drvdata\":79544,\"-scenes\":79545,\"<y\":79546,\"Ġfooled\":79547,\"ĠLoud\":79548,\"Ġantivirus\":79549,\".plist\":79550,\"Ġverwenden\":79551,\"ĠWolfe\":79552,\")item\":79553,\"Ġtwisting\":79554,\"Ġespan\":79555,\"aterno\":79556,\"ĠAccord\":79557,\"()],\":79558,\"REMOVE\":79559,\"dehy\":79560,\"_Pre\":79561,\"Ġmiscar\":79562,\"vla\":79563,\"Ġsembl\":79564,\"Ġtether\":79565,\"ĠBij\":79566,\"/'ĊĊ\":79567,\"ĠCopies\":79568,\"-pattern\":79569,\".onView\":79570,\"-taking\":79571,\"_simps\":79572,\"ãģĹãģĭãģĹ\":79573,\"ĠDACA\":79574,\"orning\":79575,\"ĠPessoa\":79576,\"orny\":79577,\"_pas\":79578,\"Ġeighty\":79579,\"Tac\":79580,\"_STOCK\":79581,\".locations\":79582,\"\\\")},Ċ\":79583,\"ĠtÃ¡\":79584,\"-fields\":79585,\"okane\":79586,\"/kubernetes\":79587,\"Ġchica\":79588,\"ĠartÃŃculo\":79589,\"ìĤ\":79590,\"CREASE\":79591,\"ASA\":79592,\"ĠLond\":79593,\"Ġexemplo\":79594,\"Allows\":79595,\"htmlspecialchars\":79596,\"(vis\":79597,\"Ġjr\":79598,\"çģ«\":79599,\"ĠECM\":79600,\"Ġembar\":79601,\"_ADAPTER\":79602,\"Ġdiluted\":79603,\"_office\":79604,\"Ġskincare\":79605,\"AGING\":79606,\"ĠÃ¾\":79607,\"ĠSMART\":79608,\"/Table\":79609,\"Ġbasal\":79610,\"Concurrency\":79611,\"ĠVox\":79612,\"ĠUICollectionViewCell\":79613,\"Ġwol\":79614,\"ĠSOUTH\":79615,\"ĠfromDate\":79616,\"Ġcords\":79617,\"EMS\":79618,\".weixin\":79619,\"'elle\":79620,\"Ġå±\":79621,\"Ġgoalt\":79622,\"uib\":79623,\"ĠNeptune\":79624,\"(ord\":79625,\"Ä±nÄ±n\":79626,\"Ġmicrobes\":79627,\"Weapons\":79628,\"-Dec\":79629,\"ĠRooney\":79630,\"ĠSwagger\":79631,\"ëªħ\":79632,\"_la\":79633,\"Ġgenerado\":79634,\"ĠHir\":79635,\"Comic\":79636,\"Ġcarve\":79637,\"_rq\":79638,\"icter\":79639,\"Ġcartel\":79640,\"ancias\":79641,\"ĠPanasonic\":79642,\"Ġroadside\":79643,\"Ġfreshwater\":79644,\"Ġdbc\":79645,\"_texts\":79646,\"_sku\":79647,\"ĠSummers\":79648,\"ĠPictureBox\":79649,\".groupControl\":79650,\"VARCHAR\":79651,\"ReLU\":79652,\"Ġsabotage\":79653,\"čĊĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":79654,\"Ġscrollbar\":79655,\"Ġbattered\":79656,\"cip\":79657,\"-picture\":79658,\"ĉstats\":79659,\".creator\":79660,\"_CLEAN\":79661,\".MOD\":79662,\"Ġbigint\":79663,\"ĠTerrorism\":79664,\"_Show\":79665,\"ĠSpicer\":79666,\"_ETH\":79667,\"ĠÄĳá»ĥ\":79668,\"Ġsummers\":79669,\"ĠUran\":79670,\"/memory\":79671,\"Reviewed\":79672,\"Ġdues\":79673,\"setScale\":79674,\"ĠRays\":79675,\"ĠCSC\":79676,\"incoming\":79677,\"-buy\":79678,\"Ġprocure\":79679,\"entar\":79680,\"Ġbulls\":79681,\"Ġĉĉĉĉĉĉ\":79682,\"ĠFibonacci\":79683,\"-schema\":79684,\"makes\":79685,\"Ef\":79686,\"_Description\":79687,\"/alert\":79688,\"ĠjsonString\":79689,\"uffling\":79690,\"ĠKERNEL\":79691,\"ĠHoy\":79692,\"ĠgrantResults\":79693,\"onald\":79694,\"ĠProvincial\":79695,\"sending\":79696,\"ptom\":79697,\"ĠÐŀÐ±\":79698,\"Ġconstrain\":79699,\"ĠÅ¡to\":79700,\"ĠRaisedButton\":79701,\"UTDOWN\":79702,\"ĠGLsizei\":79703,\"Ġç¤º\":79704,\"ãĥĳ\":79705,\"ĠGon\":79706,\"PLIER\":79707,\"']}</\":79708,\"classic\":79709,\"Ġengraved\":79710,\"Ġmasculinity\":79711,\"Marsh\":79712,\"ssql\":79713,\"(Gravity\":79714,\"Ġlobster\":79715,\"ë¶Ħ\":79716,\"_Inter\":79717,\"\\\\base\":79718,\"':['\":79719,\"Ġdetalle\":79720,\"tweets\":79721,\"Ġjealousy\":79722,\"agenda\":79723,\",it\":79724,\"swire\":79725,\"+B\":79726,\"Ġtrout\":79727,\"_altern\":79728,\":\\\"#\":79729,\"ĠDwarf\":79730,\"ĠShapiro\":79731,\"eroon\":79732,\"Ġnok\":79733,\"_longitude\":79734,\"ĠWerner\":79735,\"Ġviolet\":79736,\"ursively\":79737,\"-await\":79738,\"Ġ}ĊĊĊĊĊĊ\":79739,\"ĠLennon\":79740,\"ĠAntarctic\":79741,\"ĠbÃ¥de\":79742,\"_slope\":79743,\"mando\":79744,\"ouncer\":79745,\"-ion\":79746,\"ĠDestruction\":79747,\"issenschaft\":79748,\"Pizza\":79749,\"ĠGeological\":79750,\"BOUND\":79751,\"Ġcine\":79752,\"Demon\":79753,\".people\":79754,\"_TOGGLE\":79755,\"ĉnodes\":79756,\"buscar\":79757,\".processor\":79758,\"Nh\":79759,\"/sdk\":79760,\"Ġmycket\":79761,\"auction\":79762,\"Meg\":79763,\"GMEM\":79764,\"Ġironically\":79765,\"æ¸ħ\":79766,\"Ġconverge\":79767,\"ĠUITableViewDataSource\":79768,\"Arduino\":79769,\">e\":79770,\"Joy\":79771,\"ĠShoulder\":79772,\"ĠDuc\":79773,\"PRIMARY\":79774,\".*(\":79775,\"-pres\":79776,\"ĠdialogRef\":79777,\"imageName\":79778,\"_invoke\":79779,\"\\\\Template\":79780,\"OI\":79781,\"Ġvriend\":79782,\"ĠGuerr\":79783,\"Ġprerequisite\":79784,\"ĠPGA\":79785,\"ĠResp\":79786,\")\\\",\\\"\":79787,\"llen\":79788,\"Ġsnapping\":79789,\"_First\":79790,\"KIT\":79791,\".setFocus\":79792,\"ĠCypress\":79793,\"crafted\":79794,\"/;Ċ\":79795,\"weighted\":79796,\"voy\":79797,\"_tF\":79798,\"_insn\":79799,\"ĠInstalling\":79800,\"ĠGallup\":79801,\"ADOR\":79802,\"ĠALOG\":79803,\"ContextHolder\":79804,\"ĠTout\":79805,\"ĠFoley\":79806,\"Ġcontemplate\":79807,\"ĠCoinbase\":79808,\"XÃ£\":79809,\"wand\":79810,\".CreateCommand\":79811,\"Sock\":79812,\"Ġunwrap\":79813,\"classpath\":79814,\"<Resource\":79815,\"_EST\":79816,\"=random\":79817,\"ĠShade\":79818,\"Ġdici\":79819,\"Ø¯ÙĬ\":79820,\"Ġkitty\":79821,\"Ð°ÑĤÐµÐ³\":79822,\"á»įn\":79823,\".Completed\":79824,\"plorer\":79825,\"Ġbabel\":79826,\".OnItemClickListener\":79827,\"ĠMcMahon\":79828,\"ĠrestTemplate\":79829,\"Ġtess\":79830,\"SetUp\":79831,\"/octet\":79832,\"Ġcalam\":79833,\"Ġhinges\":79834,\"Ġarterial\":79835,\"ĠTruman\":79836,\"ĠCheryl\":79837,\"_DDR\":79838,\"Ġtmpl\":79839,\"ĠLer\":79840,\"[hash\":79841,\"KER\":79842,\"Ġproporcion\":79843,\"Ġcoastline\":79844,\"acios\":79845,\"\\\">--}}Ċ\":79846,\"Ġdisadvantaged\":79847,\"TouchListener\":79848,\"ĠSega\":79849,\"coes\":79850,\"IllegalAccessException\":79851,\"<Box\":79852,\"ĠIncredible\":79853,\"Updater\":79854,\"FLT\":79855,\"iname\":79856,\"ĠInterfaces\":79857,\"+)\\\\\":79858,\"endimento\":79859,\"Ġpancakes\":79860,\"Ġinconsist\":79861,\".pet\":79862,\"Ġkeyof\":79863,\"InnerText\":79864,\">')\":79865,\"Dean\":79866,\"ĠPÃ©\":79867,\"(Control\":79868,\"Ġspar\":79869,\"linik\":79870,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":79871,\"ĠDane\":79872,\"_PAGES\":79873,\"ĠsetBackgroundColor\":79874,\"subcategory\":79875,\"ĠStringSplitOptions\":79876,\"Allen\":79877,\"!(\\\"{}\\\",\":79878,\"Ħìŀ¬\":79879,\"Ġbac\":79880,\"_PRODUCTS\":79881,\"uppercase\":79882,\"=$(\\\"#\":79883,\"ÄĻk\":79884,\"ĠUITapGestureRecognizer\":79885,\"META\":79886,\"Ġscarcely\":79887,\"éł\":79888,\"_managed\":79889,\"Ġconsumo\":79890,\"MouseMove\":79891,\"ĠSpecs\":79892,\"ĠSearching\":79893,\"HeaderView\":79894,\":')\":79895,\"Ġmicrosoft\":79896,\"ĠKosovo\":79897,\"emann\":79898,\".fft\":79899,\"ĠHubbard\":79900,\"Ġdex\":79901,\"_TERMIN\":79902,\"_FC\":79903,\"Ġphilippines\":79904,\"\\\\Collections\":79905,\"Ġteh\":79906,\"Ġqualifies\":79907,\"ĠinputValue\":79908,\"ĠGOT\":79909,\"(sa\":79910,\"ILLED\":79911,\"Ġslang\":79912,\"Ġkeinen\":79913,\"Ġfelon\":79914,\"ĠErick\":79915,\"abilidade\":79916,\".ser\":79917,\"Ġrunes\":79918,\"ĠUnreal\":79919,\"(or\":79920,\"Ġë¬¸ìŀĲ\":79921,\"Ġbidi\":79922,\"Ġirc\":79923,\"ĉiter\":79924,\"\\\"nil\":79925,\"/ubuntu\":79926,\"Ġmurdering\":79927,\"Ġ?.\":79928,\"unker\":79929,\"RectTransform\":79930,\"'))ĊĊĊ\":79931,\"Ġarity\":79932,\"ĠFreel\":79933,\".mount\":79934,\"COMMENT\":79935,\"Ġ\\\"*\\\",\":79936,\"encryption\":79937,\"[model\":79938,\"\\\"}}>Ċ\":79939,\".Touch\":79940,\"/thumb\":79941,\"Ġprez\":79942,\"/company\":79943,\"ĠrÃ³Å¼\":79944,\"Ġsoften\":79945,\"Ġpossibile\":79946,\"ĠECB\":79947,\"_Bool\":79948,\"Ġ-----Ċ\":79949,\"Ġintertw\":79950,\"_sta\":79951,\"_BAL\":79952,\".navigationBar\":79953,\"ĠRGBA\":79954,\"grily\":79955,\"stoff\":79956,\"acky\":79957,\"QB\":79958,\"@Api\":79959,\"pecia\":79960,\"ĠRpc\":79961,\"Ġamps\":79962,\"ĠFence\":79963,\"Ġgenomic\":79964,\"(alias\":79965,\"Vien\":79966,\"SpinBox\":79967,\".getSeconds\":79968,\"Ġglobalization\":79969,\"Ġcus\":79970,\"kubectl\":79971,\"Ġthrott\":79972,\"Ġinert\":79973,\"ĠScratch\":79974,\"ÃĹ</\":79975,\".issue\":79976,\"essay\":79977,\"-Isl\":79978,\"ĠmÃ¡r\":79979,\"ĉbit\":79980,\"Ġabolished\":79981,\".infinity\":79982,\"lineno\":79983,\".algorithm\":79984,\"orsch\":79985,\"EmailAddress\":79986,\"ĠDAG\":79987,\"bringing\":79988,\".myapplication\":79989,\".Support\":79990,\"_leader\":79991,\"ĠDevin\":79992,\"Ġ[]čĊčĊ\":79993,\"Ġrms\":79994,\"Ġbuckle\":79995,\"iglia\":79996,\"/problem\":79997,\"Ġhaute\":79998,\"Ġinstituted\":79999,\"IU\":80000,\"lama\":80001,\"EXPECTED\":80002,\"ĠBeckham\":80003,\"ĠHydraulic\":80004,\"Statics\":80005,\"_normalized\":80006,\".`,Ċ\":80007,\"Ġmimetype\":80008,\"Ġshaving\":80009,\"Overrides\":80010,\"ĠMercer\":80011,\"trfs\":80012,\"-stats\":80013,\"ospace\":80014,\"Ġantioxidants\":80015,\"infinity\":80016,\"Rocket\":80017,\"ĠEuler\":80018,\"-valu\":80019,\"ĠlÃ¸\":80020,\"-IN\":80021,\"Hmm\":80022,\"-return\":80023,\"ĠPANEL\":80024,\"Ġterminator\":80025,\"Ġtekn\":80026,\"Ġpredicates\":80027,\"Stamped\":80028,\"Ġsve\":80029,\"anter\":80030,\"Ġcyclist\":80031,\"ĠEpstein\":80032,\"Ġhitters\":80033,\"dogs\":80034,\".AddListener\":80035,\"_exceptions\":80036,\"ĠFOOT\":80037,\"icare\":80038,\"[tag\":80039,\"-fetch\":80040,\"UPLOAD\":80041,\".dropdown\":80042,\"Ġcentroids\":80043,\"Ġarbe\":80044,\"Ġhijo\":80045,\"ĠDatabaseReference\":80046,\"Political\":80047,\"ĠBASIC\":80048,\"-force\":80049,\"|$\":80050,\"ĠREVIEW\":80051,\".decorate\":80052,\"ĠAspect\":80053,\"Ġcommemor\":80054,\"Ġcleanse\":80055,\"ĠClaudia\":80056,\"generation\":80057,\"HLT\":80058,\"typeorm\":80059,\"prefer\":80060,\"overlap\":80061,\"biology\":80062,\"Streamer\":80063,\"commission\":80064,\"Ġthumbnails\":80065,\".CurrentCulture\":80066,\"Ġurlparse\":80067,\"Ġgiorno\":80068,\"Ġdevs\":80069,\"_aspect\":80070,\"Ġcherished\":80071,\"ĠNachricht\":80072,\"Ġrigged\":80073,\"/logging\":80074,\"hunt\":80075,\"TypeError\":80076,\"<Select\":80077,\"(prog\":80078,\"ĠGridLayout\":80079,\"èĲ\":80080,\"ĠEXPER\":80081,\"ĉKEY\":80082,\".dm\":80083,\"ĉcard\":80084,\"ĠTau\":80085,\"Ġnotamment\":80086,\"Ġheroine\":80087,\"Ġbathtub\":80088,\"atron\":80089,\"ĠæĶ\":80090,\"ï¼Ĵï¼Ĳ\":80091,\"conomics\":80092,\"Ġreversible\":80093,\"éĩĳé¢Ŀ\":80094,\"Ġjsx\":80095,\"ĠSpeakers\":80096,\"Deserializer\":80097,\".toFloat\":80098,\"ĠÐ¿ÐµÑĢÐµÐ¼ÐµÐ½\":80099,\"ĠProviding\":80100,\"è´¦\":80101,\"[element\":80102,\"*:\":80103,\">Returns\":80104,\"Ġtitular\":80105,\"Ġheartbreaking\":80106,\"_NB\":80107,\".Arguments\":80108,\"Ġoptic\":80109,\"attacks\":80110,\"ĠVulner\":80111,\"ĉkeys\":80112,\"Ġcontrole\":80113,\".RGB\":80114,\"Ġsubgroup\":80115,\"mandatory\":80116,\"ĠCAB\":80117,\"ĉengine\":80118,\"ãģ°\":80119,\"MEDIA\":80120,\"/trans\":80121,\"Ġdank\":80122,\"Ġserviced\":80123,\"Ġincarcerated\":80124,\"ĠFreak\":80125,\"Ġupto\":80126,\"drawer\":80127,\"[\\\"+\":80128,\"Ġentwick\":80129,\"gL\":80130,\"ModelError\":80131,\"Ġreaddir\":80132,\"istribute\":80133,\"Ġglare\":80134,\"iquement\":80135,\"china\":80136,\"ĠKaplan\":80137,\"ĠStability\":80138,\"posites\":80139,\"ĠJAXBElement\":80140,\"Ġtotalmente\":80141,\"(comm\":80142,\"_processes\":80143,\"Thousands\":80144,\"ĠIls\":80145,\"ertainty\":80146,\"ĠShades\":80147,\"actal\":80148,\"loggedIn\":80149,\"ĠNichols\":80150,\"ĠMidlands\":80151,\"devil\":80152,\"ĠstrSQL\":80153,\"\\\"})\":80154,\"ĠJord\":80155,\"(ff\":80156,\"ĠJuni\":80157,\"å°±\":80158,\"artisanlib\":80159,\"Ġmoons\":80160,\"Ġunresolved\":80161,\"Ġwitches\":80162,\"ĠGÃ¼\":80163,\"ĠGoblin\":80164,\"ansson\":80165,\"|%\":80166,\"Ġbz\":80167,\"Ġduplex\":80168,\"Ġ\\\"))\":80169,\".likes\":80170,\"(vertical\":80171,\"Ġcowboy\":80172,\"Seleccione\":80173,\"Ġ'*',\":80174,\"ĠSap\":80175,\"ĠSabbath\":80176,\"SORT\":80177,\"à¦¿à¦\":80178,\"_centers\":80179,\"\\\\Post\":80180,\"(Tree\":80181,\"Ġpartes\":80182,\"_yaw\":80183,\"aremos\":80184,\"seven\":80185,\"Ġhiatus\":80186,\"_intensity\":80187,\"-many\":80188,\"ĠDollars\":80189,\"-unstyled\":80190,\"Ġgripping\":80191,\"Ġmarvelous\":80192,\"Ġreceptions\":80193,\"Ġoverclock\":80194,\"berman\":80195,\"Ġheadquartered\":80196,\"xBB\":80197,\"classCallCheck\":80198,\"Ġobserves\":80199,\"Submitting\":80200,\"Ð¸ÑĩÐµÑģ\":80201,\"ĠHttpStatusCodeResult\":80202,\"Ġhieronta\":80203,\"ropping\":80204,\"FORCE\":80205,\"ĉutils\":80206,\"Ġvents\":80207,\"adders\":80208,\"ĠMIX\":80209,\"ĠElegant\":80210,\"Ġacos\":80211,\"(machine\":80212,\"Ġmeddling\":80213,\"Ġvile\":80214,\"-compatible\":80215,\"Ġcreams\":80216,\"ĠTableRow\":80217,\"ĠRehabilitation\":80218,\"Abb\":80219,\"(userInfo\":80220,\"_expired\":80221,\".ObjectMeta\":80222,\"Ġgodt\":80223,\"usual\":80224,\".bindingNavigatorMove\":80225,\"ĠRegistrar\":80226,\"migration\":80227,\"aptured\":80228,\",params\":80229,\"ĠcenterY\":80230,\"owan\":80231,\"locales\":80232,\"InputModule\":80233,\"Ġvigilant\":80234,\"Ġncols\":80235,\"Ġingr\":80236,\"ĠcÃ´tÃ©\":80237,\"vertime\":80238,\"Ġwidest\":80239,\"ĠHDF\":80240,\"ĠAlgeria\":80241,\"Ġchatt\":80242,\"$select\":80243,\"\\\"])čĊ\":80244,\"Ġmulter\":80245,\"ĠCheney\":80246,\"fuscated\":80247,\"='\\\".$_\":80248,\"ĠDenise\":80249,\"Ġriff\":80250,\"Absent\":80251,\"ĠtamaÃ±o\":80252,\"Ġjeszcze\":80253,\".Program\":80254,\"ĉbr\":80255,\"erais\":80256,\"Ġsandals\":80257,\"Ġ,,\":80258,\"Ġdissolution\":80259,\"Ġunterschied\":80260,\"Prov\":80261,\".transactions\":80262,\"ĠTrouble\":80263,\".middle\":80264,\".getDeclared\":80265,\"Ġsweating\":80266,\"ĠHancock\":80267,\"è´¹\":80268,\"Ġpog\":80269,\"ĠKia\":80270,\"Ġmodne\":80271,\"ĠAccessibility\":80272,\"Ġleakage\":80273,\"Ġdeceptive\":80274,\"ĠWOM\":80275,\"ĠÐ¾Ñģ\":80276,\"Ġcsak\":80277,\"acock\":80278,\".Syntax\":80279,\"Ġ,[\":80280,\".'),Ċ\":80281,\"Ġforeclosure\":80282,\"Ġunfavor\":80283,\"Ġexcl\":80284,\"CUDA\":80285,\"dense\":80286,\"<Unit\":80287,\"Ġvaping\":80288,\"Ġmajestic\":80289,\"iators\":80290,\"Ġautistic\":80291,\".gateway\":80292,\"UrlParser\":80293,\"Hell\":80294,\"ĠCostco\":80295,\"ĠHIP\":80296,\"Observers\":80297,\"ĠPeoples\":80298,\"ĠSpotlight\":80299,\"ĠTavern\":80300,\"ĠTOUR\":80301,\"plings\":80302,\".WRAP\":80303,\"Ġald\":80304,\"NAL\":80305,\"(\\\"***\":80306,\"setProperty\":80307,\"_Stop\":80308,\"announcement\":80309,\"ĠImmediate\":80310,\"ĠHSV\":80311,\"_TESTS\":80312,\"Ġcrave\":80313,\"_UC\":80314,\".decrypt\":80315,\"(Roles\":80316,\"Ġsubj\":80317,\"_Integer\":80318,\".notNull\":80319,\"ĠGst\":80320,\"ĠByrne\":80321,\"ĠAquarium\":80322,\"ĠCanc\":80323,\"_CHAN\":80324,\"ĠDTO\":80325,\".hl\":80326,\"Ġmenggunakan\":80327,\"Franc\":80328,\"DialogContent\":80329,\"...'Ċ\":80330,\"ĠKunst\":80331,\"ĠAllocator\":80332,\"USAGE\":80333,\"Knowledge\":80334,\"ĉcpu\":80335,\"Ġmorals\":80336,\"patients\":80337,\"Ġilk\":80338,\"Ġcriter\":80339,\"ĠVet\":80340,\"ĠMessiah\":80341,\"__:\":80342,\"avenous\":80343,\"_viewer\":80344,\"(Dictionary\":80345,\"ĠBodies\":80346,\"hasOne\":80347,\"Ð¸Ð¼ÐµÑĢ\":80348,\"Ġzipcode\":80349,\"Ster\":80350,\"ĠbÃ¡s\":80351,\"_Display\":80352,\"Ġfirma\":80353,\"ĠRaider\":80354,\"ĠKH\":80355,\"WithData\":80356,\"(ARG\":80357,\"Ġprotr\":80358,\"Ġmsec\":80359,\"Ġlavender\":80360,\"(Util\":80361,\"ĠÐ¿ÑĢÐ¾Ð³ÑĢÐ°Ð¼\":80362,\"_mux\":80363,\"_latitude\":80364,\"Portrait\":80365,\"Ġsitcom\":80366,\"Ġadicion\":80367,\"(constants\":80368,\"ĠAnxiety\":80369,\"ĠRoses\":80370,\"Ġstimulated\":80371,\"Ġchrono\":80372,\"Ġfossils\":80373,\"ĠAirbus\":80374,\"leftright\":80375,\"ĠMÃ©todo\":80376,\"\\\"w\":80377,\"Ġkleinen\":80378,\"Ġclique\":80379,\"omination\":80380,\"Ġmotel\":80381,\"/vector\":80382,\"declaration\":80383,\"ĠnewY\":80384,\"[H\":80385,\".scalar\":80386,\"ombo\":80387,\"hud\":80388,\";set\":80389,\"ftype\":80390,\"('').\":80391,\"ordes\":80392,\"ynos\":80393,\"'],ĊĊ\":80394,\"_FLUSH\":80395,\"identify\":80396,\"/devices\":80397,\"Ġdictated\":80398,\"Ġdejar\":80399,\"ĠEmin\":80400,\"ĠPendant\":80401,\"ĠonUpdate\":80402,\"])))\":80403,\"ĠBarker\":80404,\"Orm\":80405,\"è¯·éĢīæĭ©\":80406,\"_guide\":80407,\"Ã¡bado\":80408,\"ophe\":80409,\"Ġ\\\".Ċ\":80410,\"ĠBrewers\":80411,\"Ġbridal\":80412,\"ĠCES\":80413,\"_Category\":80414,\"ĠBTN\":80415,\"ĠDarth\":80416,\"#for\":80417,\"ethnic\":80418,\"architecture\":80419,\"ĠCoupe\":80420,\"idores\":80421,\"Ġfascism\":80422,\"Ġcontradictions\":80423,\"effects\":80424,\"InitialState\":80425,\"Ġç¤ºä¾ĭ\":80426,\"matplotlib\":80427,\".desktop\":80428,\"ĠÐŃ\":80429,\"ĠQPixmap\":80430,\"ĉbegin\":80431,\"Ġwnd\":80432,\"Ġcontiene\":80433,\"(helper\":80434,\".Notify\":80435,\"(Book\":80436,\"ĠGuaranteed\":80437,\"pll\":80438,\"iola\":80439,\"Ġfungi\":80440,\"ivent\":80441,\"ĠOA\":80442,\"æ²¡æľī\":80443,\"ĠwiÄĻcej\":80444,\"ĉĊĉĊĉĊĉĊ\":80445,\"ï¼ļ\\\"+\":80446,\"ĠTalks\":80447,\".started\":80448,\"ocities\":80449,\"Ġesports\":80450,\"<Input\":80451,\"ĠEXCEPTION\":80452,\"Ġactu\":80453,\".imp\":80454,\"Ġ\\\"/\\\"Ċ\":80455,\"Otherwise\":80456,\"ĠPension\":80457,\"ĠWaves\":80458,\"Æ°Æ¡\":80459,\"iards\":80460,\"Ġ*</\":80461,\"urgeon\":80462,\"ĠSCI\":80463,\"ĠLaurel\":80464,\"etag\":80465,\"Netflix\":80466,\"ĠResponses\":80467,\"Ġneoliberal\":80468,\"isContained\":80469,\"=my\":80470,\"Ġreprint\":80471,\"onestly\":80472,\"Ġdeparting\":80473,\"PWM\":80474,\"ewhat\":80475,\"=\\\"<<\":80476,\".yang\":80477,\"ĠTradition\":80478,\"+\\\":\":80479,\"depending\":80480,\"_Unit\":80481,\"ĠCodable\":80482,\"Ġwhisky\":80483,\"Ġcorrelate\":80484,\"Ġdiret\":80485,\"Lastly\":80486,\"ĉOutput\":80487,\"(inode\":80488,\"\\\\Log\":80489,\"ĠDependencies\":80490,\"WillDisappear\":80491,\"ĠPanels\":80492,\"ĠâĶľâĶĢâĶĢ\":80493,\"Ġostensibly\":80494,\"|--\":80495,\"Annual\":80496,\"Ġautoload\":80497,\"ValueHandling\":80498,\".coin\":80499,\"educt\":80500,\"ZY\":80501,\"ĠCanucks\":80502,\"Ġsmear\":80503,\"Ġrealidad\":80504,\"Ġ{{Ċ\":80505,\"ivol\":80506,\"etSocketAddress\":80507,\"ĠKemp\":80508,\"/Framework\":80509,\"Ġquickest\":80510,\"_\\\".$\":80511,\"Ġwithholding\":80512,\"Ġintrigue\":80513,\"ĠADDR\":80514,\"Diese\":80515,\"Weekly\":80516,\"_____\":80517,\"ĠInvalidArgumentException\":80518,\"olated\":80519,\"RunLoop\":80520,\"ĠpassÃ©\":80521,\".firebaseio\":80522,\".eulerAngles\":80523,\"istence\":80524,\"Ġfearing\":80525,\"ĠElementType\":80526,\"/Test\":80527,\"ĠæŁ¥è¯¢\":80528,\"Ġfondo\":80529,\"ĠParr\":80530,\"Ġzest\":80531,\"ĠTransformers\":80532,\"LineStyle\":80533,\"Ġethernet\":80534,\"affles\":80535,\"Ġnamedtuple\":80536,\"ĠScalars\":80537,\"NSURLSession\":80538,\"-extension\":80539,\"(Messages\":80540,\"ĠatenciÃ³n\":80541,\"ĠJerseys\":80542,\"bedPane\":80543,\"ĠStunden\":80544,\"Ġvoiture\":80545,\"Ġé»ĺè®¤\":80546,\".opengl\":80547,\"Ġ\\\"}\":80548,\"ĠRevenge\":80549,\"Ġ-------------------------------------------------------------------------Ċ\":80550,\"Instantiate\":80551,\"Ġenr\":80552,\"ValidationError\":80553,\"_ALREADY\":80554,\"Lots\":80555,\"oce\":80556,\"Ġscrim\":80557,\"Ġembody\":80558,\"ÑĢÐ°ÑĤ\":80559,\"Ġconcede\":80560,\"assel\":80561,\"ĠBRE\":80562,\"PLEASE\":80563,\"ĉdiff\":80564,\"ç»ĵæĿŁ\":80565,\".fp\":80566,\"bam\":80567,\"Meal\":80568,\"ĠMadonna\":80569,\"Ġpunishable\":80570,\"iffies\":80571,\"_unix\":80572,\"ìĻĢ\":80573,\"ĠGaga\":80574,\"\\\"struct\":80575,\"ToSend\":80576,\"ĠOCR\":80577,\"Ġpraising\":80578,\"getStore\":80579,\"Ġeuth\":80580,\"Ġarreglo\":80581,\"Ġferm\":80582,\"fdf\":80583,\"Cooldown\":80584,\"ĠRecycling\":80585,\"Ana\":80586,\"indr\":80587,\"_HP\":80588,\"ĠGovernance\":80589,\"Ġbarrage\":80590,\"/ca\":80591,\"Ġ,(\":80592,\"FÃ¼r\":80593,\"ĠISPs\":80594,\"Ġmenace\":80595,\"Virginia\":80596,\"Ġfanc\":80597,\"Ġnombres\":80598,\".instructions\":80599,\"Ġescalated\":80600,\"agina\":80601,\"ĠLevine\":80602,\"ĉfind\":80603,\"_er\":80604,\"Ġdejtingsaj\":80605,\"svp\":80606,\"agos\":80607,\"(sol\":80608,\"ĠLid\":80609,\"PRIVATE\":80610,\"ĠIMPLEMENT\":80611,\"efeller\":80612,\"(Target\":80613,\"à¹īà¸Ńà¸¡\":80614,\"housing\":80615,\".setCursor\":80616,\"Ġnehmen\":80617,\".receiver\":80618,\"ĠTutor\":80619,\"Ġmattered\":80620,\"mdat\":80621,\"regulated\":80622,\"ĠgetAddress\":80623,\"ĠMinuten\":80624,\"ĠIU\":80625,\"Ð»Ð°Ð²\":80626,\"Ġturnovers\":80627,\"Ġsuitability\":80628,\"ĉesc\":80629,\"calcul\":80630,\"_Stream\":80631,\"_filenames\":80632,\"-vars\":80633,\".....ĊĊ\":80634,\"Dia\":80635,\"Ġswims\":80636,\"Optimizer\":80637,\"<boost\":80638,\"ĠPermit\":80639,\"'])){\":80640,\"\\\\OptionsResolver\":80641,\"æ¡Ī\":80642,\"Ġhectares\":80643,\"(us\":80644,\"ĠDeveloping\":80645,\"_xs\":80646,\"Ġnovelist\":80647,\"ĠConvenience\":80648,\"walking\":80649,\"Ġcharms\":80650,\"ĠLease\":80651,\"ĉHAL\":80652,\"([&\":80653,\"Ġrestarted\":80654,\"Mage\":80655,\"Ipv\":80656,\"ĠÑįÐº\":80657,\"RLF\":80658,\"Ġassembling\":80659,\"ĠEcc\":80660,\"vinfos\":80661,\"pedido\":80662,\"Ġsynopsis\":80663,\"ĠStanton\":80664,\"startup\":80665,\".getvalue\":80666,\"ĠKitt\":80667,\"proper\":80668,\"Ġpretrained\":80669,\"ĠPEN\":80670,\".Term\":80671,\"Ġpequ\":80672,\"ephir\":80673,\"ĠAllies\":80674,\"ĠmodelAndView\":80675,\"Ġbutterflies\":80676,\"ĠKirst\":80677,\"ĠChecker\":80678,\"Ġcunning\":80679,\".setY\":80680,\"_Master\":80681,\"Increasing\":80682,\"Ġhurdle\":80683,\"Ġfists\":80684,\"ĠSlovakia\":80685,\"Ġnombreux\":80686,\"Ġ::Ċ\":80687,\"taskId\":80688,\"Ġfolly\":80689,\"<TreeNode\":80690,\"ĠVoldemort\":80691,\"Ġblister\":80692,\"ÅĤe\":80693,\".EntityManager\":80694,\".DOWN\":80695,\"ĠGregg\":80696,\"-coordinate\":80697,\"(vc\":80698,\"Ã¡bb\":80699,\".Toggle\":80700,\"ĠLisbon\":80701,\"ç¢\":80702,\"ĠÐ¿Ð¾ÑĤ\":80703,\"parentNode\":80704,\".setScale\":80705,\"_MISSING\":80706,\"Ġoutra\":80707,\"Ġkup\":80708,\"`]\":80709,\"_via\":80710,\"edics\":80711,\"ĠBorders\":80712,\"Ġipad\":80713,\"Ġedt\":80714,\"ĠCartesian\":80715,\"/mac\":80716,\"Ġbarley\":80717,\"ĠScarlet\":80718,\"ĠĠĠĠĊĠĠĠĠĊĠĠĠĠĊĠĠĠĠĊ\":80719,\"queryParams\":80720,\"Ġrhythms\":80721,\"Ġgearing\":80722,\"ZX\":80723,\"hydration\":80724,\"STS\":80725,\"Ġplentiful\":80726,\"corp\":80727,\"}@\":80728,\"integr\":80729,\"/at\":80730,\".deb\":80731,\"Ġundeniable\":80732,\"Ġopenssl\":80733,\".dead\":80734,\"ĠPillow\":80735,\"ĠBeans\":80736,\".ant\":80737,\"_qs\":80738,\"-information\":80739,\"Ġë³ĢìĪĺ\":80740,\"%\\\"),Ċ\":80741,\"ĠÐ´ÑĢÑĥÐ³\":80742,\"ĠSponge\":80743,\"Ġsift\":80744,\"testimonial\":80745,\"Ġunnatural\":80746,\"UIScrollView\":80747,\"vergence\":80748,\"(textBox\":80749,\"-pagination\":80750,\"ĠDisqus\":80751,\"_produk\":80752,\"agnar\":80753,\"KeyUp\":80754,\"ĉĉĉĠĠĠĠĠĠĠĠ\":80755,\"ÐµÐ»Ðµ\":80756,\"<source\":80757,\".il\":80758,\".atom\":80759,\"_Component\":80760,\"Ġyn\":80761,\"['__\":80762,\"Ġweakest\":80763,\"_decrypt\":80764,\"/msg\":80765,\"cbc\":80766,\"Ġpolitely\":80767,\"omat\":80768,\"Ġenlightenment\":80769,\"Ġcrea\":80770,\"Ġbruk\":80771,\"_already\":80772,\"Ġsockfd\":80773,\"unpack\":80774,\"orges\":80775,\"ĠUNESCO\":80776,\"inality\":80777,\"Ġsentinel\":80778,\"Ġaffluent\":80779,\"ĠthrowError\":80780,\"iets\":80781,\"ANJI\":80782,\"ĠSuffolk\":80783,\"bero\":80784,\"ketÃ¸y\":80785,\"Endpoints\":80786,\"executor\":80787,\"Ga\":80788,\".LA\":80789,\"_portfolio\":80790,\"unsch\":80791,\"elage\":80792,\"Ġgobierno\":80793,\"ĠBiol\":80794,\"Modification\":80795,\"ĠDecimalFormat\":80796,\"ĠVocÃª\":80797,\"Ġmethodologies\":80798,\"[].\":80799,\"ĠGV\":80800,\"Ġreplicas\":80801,\"âĢĶwith\":80802,\"););Ċ\":80803,\"posix\":80804,\"SuccessListener\":80805,\"phe\":80806,\"_normalize\":80807,\"ĠLarger\":80808,\"Ġrepercussions\":80809,\"_Vert\":80810,\"Ġhostel\":80811,\"Ġincompetent\":80812,\"hev\":80813,\"_DELTA\":80814,\"Ġpuedo\":80815,\"installation\":80816,\"_frag\":80817,\"(rr\":80818,\"ĠMAV\":80819,\"ĠLocalization\":80820,\"(\\\"\\\").\":80821,\"Ġ---------\":80822,\"čĊĊ\":80823,\"ĠPyTuple\":80824,\"ĠJulio\":80825,\"ĉGLuint\":80826,\"markup\":80827,\"_FAMILY\":80828,\"PROGRAM\":80829,\"ĠFirmware\":80830,\"*size\":80831,\"Wifi\":80832,\"Ġvisita\":80833,\"ĠErl\":80834,\"FindObject\":80835,\".UNRELATED\":80836,\"phthalm\":80837,\"Ġpersonalize\":80838,\"ĠcrÃ©ation\":80839,\"ĠĠĠĠĉĠ\":80840,\".precision\":80841,\"Ġsetters\":80842,\"ĠnewSize\":80843,\"ĠCatalan\":80844,\"ĉoption\":80845,\"Ġpiel\":80846,\"Ġcages\":80847,\"ĠStem\":80848,\"drawing\":80849,\"explained\":80850,\"Ġæİ§\":80851,\"Ġdreadful\":80852,\"errupted\":80853,\".getValueAt\":80854,\"ĠelapsedTime\":80855,\"Ġindefinite\":80856,\"ĠTHANK\":80857,\"_startup\":80858,\"SURE\":80859,\"Ġkidneys\":80860,\"ĠCuisine\":80861,\"|array\":80862,\"SendMessage\":80863,\"fav\":80864,\"ĠAerospace\":80865,\"_means\":80866,\"Ġneb\":80867,\"ĠOTP\":80868,\"Ġchurn\":80869,\"/fr\":80870,\"ĠReign\":80871,\"_classification\":80872,\"ĠMacDonald\":80873,\"\\\".ĊĊĊĊ\":80874,\"Ġchilly\":80875,\"Ġè¯·æ±Ĥ\":80876,\"ihat\":80877,\"STA\":80878,\"'autres\":80879,\"Ġlasc\":80880,\".mix\":80881,\"Ġblot\":80882,\"ĠIDD\":80883,\"datatable\":80884,\"spiel\":80885,\"ĠÃ©xito\":80886,\"artic\":80887,\".Axis\":80888,\".advance\":80889,\"ĠmouseX\":80890,\"'Ãł\":80891,\"Ġrecieved\":80892,\"Ġposi\":80893,\"Ġfourn\":80894,\"ĠMafia\":80895,\"Ġpca\":80896,\"belongs\":80897,\"ablytyped\":80898,\"AUTHORIZED\":80899,\".scalablytyped\":80900,\"ìľĦ\":80901,\"-dot\":80902,\"Ġemphasizing\":80903,\"Membership\":80904,\"*pow\":80905,\"-spin\":80906,\"ruta\":80907,\"hevik\":80908,\"_ASYNC\":80909,\"_compiler\":80910,\".Flag\":80911,\"Ġelbows\":80912,\".CREATE\":80913,\"Metro\":80914,\".logs\":80915,\"zman\":80916,\"pone\":80917,\"ÄĻÅ¼\":80918,\"Ġinters\":80919,\"Ġwebs\":80920,\"_HIDDEN\":80921,\"ĉnow\":80922,\"Communic\":80923,\"$tpl\":80924,\"scopes\":80925,\"ĠZika\":80926,\"Ġstringstream\":80927,\"ĠUncategorized\":80928,\"FY\":80929,\"/swagger\":80930,\"Penn\":80931,\"imeInterval\":80932,\"Ġcontends\":80933,\"xies\":80934,\"ĠSalesforce\":80935,\"Ġutens\":80936,\"Ġundis\":80937,\"Crystal\":80938,\".ndim\":80939,\"Ġformul\":80940,\"ĠFav\":80941,\"å¹¿\":80942,\"risk\":80943,\"nad\":80944,\"/tos\":80945,\"ĠPERFORMANCE\":80946,\"Ġwriteln\":80947,\"Ġcollo\":80948,\"antically\":80949,\"UDENT\":80950,\"Rgb\":80951,\"Ġofere\":80952,\"Ġmerges\":80953,\"fidf\":80954,\"Ġkz\":80955,\"Victoria\":80956,\"Ġ/^\\\\\":80957,\"Ġkube\":80958,\"ĠApostle\":80959,\"Ġdefends\":80960,\"<=(\":80961,\"ĠMEMORY\":80962,\"\\\\Id\":80963,\"ĠActiveForm\":80964,\"ĠOnePlus\":80965,\"HttpServletRequest\":80966,\"ĠTempData\":80967,\"ìłģ\":80968,\".ASCII\":80969,\"ÙĦØ§\":80970,\"KI\":80971,\"Ġfrat\":80972,\"_CIPHER\":80973,\".Surface\":80974,\"Ġpitfalls\":80975,\"-mediated\":80976,\"ypi\":80977,\"-alist\":80978,\"xBC\":80979,\"teachers\":80980,\"ĠCyc\":80981,\"Ġpsychedelic\":80982,\"ĠDumbledore\":80983,\"\\\").ĊĊ\":80984,\"ĠThatcher\":80985,\"ĠPrinciple\":80986,\"Together\":80987,\"Ġflora\":80988,\"weeks\":80989,\"_criteria\":80990,\"bones\":80991,\".internet\":80992,\"ĠblockDim\":80993,\".SingleOrDefault\":80994,\"Dice\":80995,\"ĠEvel\":80996,\"ĠTLabel\":80997,\"ĠIgor\":80998,\"ĠCopp\":80999,\"Ġinaugur\":81000,\"/private\":81001,\"Ġaberr\":81002,\"nds\":81003,\";if\":81004,\"-ranging\":81005,\"achts\":81006,\"_marshall\":81007,\"Ġ__________________________________\":81008,\".endTime\":81009,\"ĠModelRenderer\":81010,\"(food\":81011,\"(\\\"~\":81012,\"Ġsuppl\":81013,\"(\\\"\\\\(\":81014,\"Sq\":81015,\"Translated\":81016,\"ĠContinuing\":81017,\"Ġpossono\":81018,\"FIXME\":81019,\"ĠAngebot\":81020,\"iever\":81021,\"ĠKyoto\":81022,\"cil\":81023,\"NewUrlParser\":81024,\".Di\":81025,\"Ġhumane\":81026,\"Demand\":81027,\"ĠMartian\":81028,\"woods\":81029,\"ĠHeal\":81030,\"ĠYue\":81031,\"Ġcourthouse\":81032,\"Ġvont\":81033,\"Ġbons\":81034,\"integral\":81035,\"Ġ$('#'\":81036,\"etermination\":81037,\".modified\":81038,\"Ġprincipals\":81039,\"Ġalarmed\":81040,\".createObject\":81041,\"//--------------------------------------------------------------Ċ\":81042,\"/count\":81043,\"Ġentrenched\":81044,\"\\\\a\":81045,\"Ġintrusion\":81046,\"ĠNx\":81047,\"ĉĉĊĉĉĊĉĉĊ\":81048,\"chematic\":81049,\"Ġsliders\":81050,\"Ġselectable\":81051,\"_nl\":81052,\"iese\":81053,\"_estimators\":81054,\"ĠSvg\":81055,\"ĠdeleteUser\":81056,\"(mapping\":81057,\"Ġì²ĺë¦¬\":81058,\"Ġantagonist\":81059,\"Ġkinase\":81060,\"Ġwelded\":81061,\"ĠLena\":81062,\"edith\":81063,\"iali\":81064,\"(pic\":81065,\"Ġbreached\":81066,\"PIC\":81067,\"Ġcoaster\":81068,\"FDA\":81069,\"Ġkre\":81070,\"perfil\":81071,\"ĠGems\":81072,\"_fence\":81073,\"URLRequest\":81074,\"âĢĻapp\":81075,\"REFERENCE\":81076,\".Export\":81077,\"Ġminimized\":81078,\"ipel\":81079,\"idata\":81080,\")dealloc\":81081,\"escal\":81082,\"_fwd\":81083,\"memcpy\":81084,\"ĠLori\":81085,\"_Ref\":81086,\"Ġbara\":81087,\"ĠSellers\":81088,\"Ġdeterioration\":81089,\"fraction\":81090,\")];\":81091,\"/play\":81092,\"Â¥\":81093,\"-tests\":81094,\"Offsets\":81095,\"Oi\":81096,\"ĠKlaus\":81097,\"Ġquerying\":81098,\"wish\":81099,\"apel\":81100,\"_working\":81101,\"myModalLabel\":81102,\"ĠtoDate\":81103,\"permalink\":81104,\"Ġfrec\":81105,\"olecules\":81106,\"ĠGoose\":81107,\"-widgets\":81108,\"turtle\":81109,\"Improved\":81110,\"Ġroadway\":81111,\"kehr\":81112,\"Ġastronomy\":81113,\"Combine\":81114,\"Ġcigars\":81115,\"_GATE\":81116,\"/manage\":81117,\"ĠGerard\":81118,\"ĠProtector\":81119,\"Subsystem\":81120,\"/find\":81121,\"/YYYY\":81122,\"Ġtotaling\":81123,\"Ð¼Ð¾ÑĤ\":81124,\"ĠOman\":81125,\"Ġinfinit\":81126,\"-office\":81127,\"Ġinstantiation\":81128,\".Â§\":81129,\"ceu\":81130,\"(atom\":81131,\"ĠDropout\":81132,\"íģ¬\":81133,\"Ġcondemning\":81134,\"_basename\":81135,\"]}</\":81136,\"DataContext\":81137,\"ĠWashing\":81138,\".ON\":81139,\"Ġmommy\":81140,\"()};Ċ\":81141,\"Ġ;)ĊĊ\":81142,\"/ext\":81143,\"foregroundColor\":81144,\"unsupported\":81145,\"Ġsollen\":81146,\"ĠcomeÃ§\":81147,\"DISABLE\":81148,\"ĠonPause\":81149,\"ĠÑĩÑĤÐ¾Ð±Ñĭ\":81150,\"ĠAin\":81151,\"Gs\":81152,\"ĉTask\":81153,\"hawk\":81154,\"\\\"Not\":81155,\"AGR\":81156,\".getTable\":81157,\"Ġdivergence\":81158,\"Ġnegoci\":81159,\"Replacing\":81160,\"]})Ċ\":81161,\"illusion\":81162,\"ĠÎĶ\":81163,\"_KEYBOARD\":81164,\"Kr\":81165,\"ĉor\":81166,\"ç¡®è®¤\":81167,\"ĉprintln\":81168,\"ĠSearches\":81169,\"ĠFresno\":81170,\"Ġverdad\":81171,\"\\\\Middleware\":81172,\"Ġìµľ\":81173,\"})();\":81174,\"textAlign\":81175,\"inkel\":81176,\".Txt\":81177,\"Ġoptimizations\":81178,\"young\":81179,\"Ġleased\":81180,\"JT\":81181,\"ĠIonicModule\":81182,\"ettings\":81183,\"esehen\":81184,\"Ġfavourable\":81185,\"aney\":81186,\"ĠotherButtonTitles\":81187,\"ĠThames\":81188,\"ĉunit\":81189,\"COLUMN\":81190,\"Ġloi\":81191,\",proto\":81192,\"_PRI\":81193,\"Ġwandered\":81194,\"Ġsapi\":81195,\"backward\":81196,\"araoh\":81197,\"ĠFH\":81198,\"ĠAlg\":81199,\"ĉac\":81200,\"arro\":81201,\"åİĨ\":81202,\"ĠSOS\":81203,\"ĠDread\":81204,\"VectorXd\":81205,\".rmtree\":81206,\"_executor\":81207,\"Ġpregnancies\":81208,\"Ġpracy\":81209,\"ĠWww\":81210,\"ĠArchbishop\":81211,\"Ġmeinen\":81212,\"FU\":81213,\".Env\":81214,\"Ġenlightened\":81215,\"Ġoriginate\":81216,\"åıĬ\":81217,\"Ġzlib\":81218,\"_SA\":81219,\"Ġwastes\":81220,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":81221,\"pras\":81222,\"Ġhorrified\":81223,\"ĠCaldwell\":81224,\"toy\":81225,\"_shot\":81226,\"Ġlesbi\":81227,\"ĠMagnet\":81228,\"oxic\":81229,\"Surname\":81230,\"ĠshowToast\":81231,\"ĉDestroy\":81232,\".getExternal\":81233,\"ILI\":81234,\"ĠNeville\":81235,\"tsky\":81236,\"Ġmelakukan\":81237,\"Ġ\\\"&#\":81238,\"Ġflowering\":81239,\"Ġveterinarian\":81240,\"Ġharmonic\":81241,\"ĠCassandra\":81242,\"(Create\":81243,\"perse\":81244,\"Perm\":81245,\")NSString\":81246,\"ĠisIn\":81247,\"ĠFloatingActionButton\":81248,\"/New\":81249,\"ĠðĿ\":81250,\"capability\":81251,\"Ġcuckold\":81252,\"ĠBain\":81253,\"(){čĊčĊ\":81254,\"PEAR\":81255,\"Ġjaws\":81256,\"Ġgode\":81257,\"Ġcassette\":81258,\".frequency\":81259,\"SCORE\":81260,\".intent\":81261,\":[\\\"\":81262,\"Ġå¦Ĥæŀľ\":81263,\"ï¼ŁâĢĿ\":81264,\"/Image\":81265,\"Ġsiendo\":81266,\"_allocation\":81267,\":B\":81268,\"/Register\":81269,\"_kategori\":81270,\"unya\":81271,\".instances\":81272,\"ĠUNIVERSITY\":81273,\"Ġpleasantly\":81274,\"Ġglands\":81275,\"ĠYELLOW\":81276,\"ĠThick\":81277,\"Amt\":81278,\"Ġpry\":81279,\"Ġluk\":81280,\"(problem\":81281,\"Ġprojecting\":81282,\"[now\":81283,\"Ġestoy\":81284,\"(()=>\":81285,\"Ġwaypoints\":81286,\"ĠBlick\":81287,\".Require\":81288,\"Lake\":81289,\"ĠIGNORE\":81290,\"ĠQHBoxLayout\":81291,\"_responses\":81292,\".wr\":81293,\"&action\":81294,\".characters\":81295,\"IW\":81296,\"pageNum\":81297,\"Ġdistracting\":81298,\"]-'\":81299,\"pees\":81300,\"ouncy\":81301,\"Ġsegu\":81302,\".getSelectionModel\":81303,\"Inlining\":81304,\"'aff\":81305,\"ĠPreserve\":81306,\"Ġacquaintance\":81307,\"Ġanus\":81308,\"institution\":81309,\"Ġ//*\":81310,\"ĠSick\":81311,\"ĠKodi\":81312,\"ĠAVR\":81313,\"Ġbetr\":81314,\"ĠBernstein\":81315,\",cv\":81316,\"ccb\":81317,\"CAF\":81318,\"ĉsignal\":81319,\"è¨Ī\":81320,\"ResultsController\":81321,\"Ġsalopes\":81322,\"Ġphenotype\":81323,\"ubah\":81324,\"_datasets\":81325,\"Ġgracious\":81326,\"ĠClipboard\":81327,\"Ġgenders\":81328,\"downloads\":81329,\"Experimental\":81330,\"Ġbekannt\":81331,\"Ġnive\":81332,\".Ed\":81333,\"dismiss\":81334,\"\\\\Twig\":81335,\".Av\":81336,\"/tasks\":81337,\".pickle\":81338,\"*B\":81339,\"cestor\":81340,\"capitalize\":81341,\".GetService\":81342,\"KeyId\":81343,\".pitch\":81344,\"ĠControlled\":81345,\".saved\":81346,\"Ġzaj\":81347,\"ĠCathy\":81348,\"(CancellationToken\":81349,\"-animate\":81350,\"\\\\\\\\\\\\\":81351,\"ĠJasmine\":81352,\".LINE\":81353,\"Ġbothers\":81354,\"Ġbuffalo\":81355,\"ĠFOREIGN\":81356,\"Ġtackled\":81357,\"_HEAP\":81358,\"Ġservic\":81359,\">>,\":81360,\"ĠActors\":81361,\".Tx\":81362,\"ebx\":81363,\"_visitor\":81364,\"_marshaled\":81365,\",map\":81366,\"Ġheaters\":81367,\"ĠuLocal\":81368,\"ĠKapoor\":81369,\"Ġminut\":81370,\".readAs\":81371,\"Ġ................................\":81372,\"_VOLT\":81373,\".bz\":81374,\"Ġcorrecting\":81375,\"SEP\":81376,\"bring\":81377,\"Hu\":81378,\"ĠGus\":81379,\"AAD\":81380,\"ieran\":81381,\"frared\":81382,\"_rom\":81383,\"Ġscarcity\":81384,\"Ġapologise\":81385,\"Ġsolids\":81386,\"ĠFormatter\":81387,\"Ġ'%$\":81388,\"-vis\":81389,\"\\\",\\\"\\\",\":81390,\"UNDER\":81391,\"!!!!ĊĊ\":81392,\"ĠEleven\":81393,\"))]\":81394,\"Ġsatire\":81395,\"\\\\uB\":81396,\"Ġseventeen\":81397,\"LANGUAGE\":81398,\"Ġadversary\":81399,\"Ġstrftime\":81400,\"Ġnexus\":81401,\"ubits\":81402,\"Ġ'%\\\"\":81403,\"ĠSKIP\":81404,\"KHR\":81405,\".bat\":81406,\"ĠJeans\":81407,\".?\":81408,\"Ġimpost\":81409,\".qty\":81410,\"Compression\":81411,\"Ġprincipales\":81412,\"onio\":81413,\"Ġbarcelona\":81414,\"ĠChili\":81415,\"_most\":81416,\".uf\":81417,\"ĠcontentValues\":81418,\"ĠFist\":81419,\"ugador\":81420,\"TextWriter\":81421,\"BACKGROUND\":81422,\"Ġlivro\":81423,\"ĠDesire\":81424,\"measurement\":81425,\"Probe\":81426,\"Ġpudding\":81427,\".showError\":81428,\"ĠunterstÃ¼t\":81429,\"ãĢģãĢģ\":81430,\"ĠÄĩe\":81431,\"Ġpunitive\":81432,\"æŃ¢\":81433,\"ListGroup\":81434,\".Area\":81435,\"ĠðŁĺīĊĊ\":81436,\"oord\":81437,\"Ġscraping\":81438,\"(ticket\":81439,\"ĠWoche\":81440,\"ĠexpectedResult\":81441,\"ĠKostenlos\":81442,\"configured\":81443,\"_strerror\":81444,\".addHandler\":81445,\"mouseleave\":81446,\"ĠFelipe\":81447,\"ĠChim\":81448,\"_CSR\":81449,\"PCA\":81450,\"ificaÃ§Ã£o\":81451,\"++ĊĊ\":81452,\"yas\":81453,\"Ġæĸ¹æ³ķ\":81454,\"ĠIDM\":81455,\"ĠanimateWithDuration\":81456,\"Ġsamen\":81457,\".subtitle\":81458,\"_KeyDown\":81459,\"ĠTrey\":81460,\"Ġtemporada\":81461,\"Ġspd\":81462,\"ĠRc\":81463,\"ĠMassive\":81464,\"Ġbows\":81465,\"Hospital\":81466,\"Ġgroot\":81467,\"Ġpaving\":81468,\"Ġchores\":81469,\"ĠAlly\":81470,\"Ġcertifications\":81471,\"Ġxbox\":81472,\"selectAll\":81473,\"GameOver\":81474,\"Ġcornerstone\":81475,\"Recovered\":81476,\"Ġdeem\":81477,\"Ultra\":81478,\"ĠgetLast\":81479,\"Ġalma\":81480,\".textField\":81481,\"Ġwaived\":81482,\">({Ċ\":81483,\"ĠEstr\":81484,\"isable\":81485,\"Ġproton\":81486,\"_facebook\":81487,\"_TRAIN\":81488,\"Ġcooperating\":81489,\"ungi\":81490,\"Arizona\":81491,\"#echo\":81492,\"-expression\":81493,\".minutes\":81494,\"Ġprefixed\":81495,\"Ġfisheries\":81496,\".correct\":81497,\"ĠnÃ¦\":81498,\"(Sprite\":81499,\"Mods\":81500,\"ĠVide\":81501,\"ĠgetById\":81502,\"ĠKeynes\":81503,\"ĠEgyptians\":81504,\"_COD\":81505,\"Bien\":81506,\"reopen\":81507,\"ighet\":81508,\"REDENTIAL\":81509,\"Ġunwind\":81510,\"$čĊ\":81511,\"Ġracket\":81512,\"ĠfloatValue\":81513,\"ĠSpecialty\":81514,\"ocate\":81515,\"mounted\":81516,\"Attempts\":81517,\"Officers\":81518,\"HashTable\":81519,\"ĠdÃ©veloppement\":81520,\"Ġdap\":81521,\"Ġmtx\":81522,\"Narrated\":81523,\"kB\":81524,\"_STA\":81525,\"-Class\":81526,\"Ġdul\":81527,\"ĠLeads\":81528,\"ĠtrÃªs\":81529,\"friendly\":81530,\"ĠFiltering\":81531,\"-provider\":81532,\"ĠÑĥÑģÐ¿\":81533,\"ĠKolkata\":81534,\"masked\":81535,\"IData\":81536,\"Ġ[|\":81537,\"Â¤\":81538,\"ĠReese\":81539,\"ĠHonolulu\":81540,\"ToObject\":81541,\"Ġthrift\":81542,\"assi\":81543,\"Ġcongratulations\":81544,\"SKI\":81545,\"entarios\":81546,\"ĠFRONT\":81547,\"ufig\":81548,\"hon\":81549,\"ĉgetline\":81550,\"Ġhearty\":81551,\"caling\":81552,\"ĠÃ©conom\":81553,\"Ġ***/Ċ\":81554,\"_HERE\":81555,\"`(\":81556,\"Michigan\":81557,\"Beans\":81558,\"-route\":81559,\"Ġprinc\":81560,\"ĠGuidance\":81561,\"ĉemit\":81562,\".OP\":81563,\"thic\":81564,\"elope\":81565,\"ĠIRequest\":81566,\"ĠhandleClose\":81567,\"dataArray\":81568,\".ExecuteScalar\":81569,\"EPHIR\":81570,\"ĠConversely\":81571,\"(Font\":81572,\"Ġmetre\":81573,\"ĠSpieler\":81574,\"Ellipse\":81575,\"ĠPVOID\":81576,\"ĠDataContext\":81577,\"constructed\":81578,\"ANDING\":81579,\"-----------*/Ċ\":81580,\"Bonjour\":81581,\"_PHP\":81582,\"progressbar\":81583,\"NotSupportedException\":81584,\"Ġverdade\":81585,\"/change\":81586,\"orsk\":81587,\"Ġaromatic\":81588,\"respons\":81589,\"realloc\":81590,\"atisch\":81591,\",ev\":81592,\"ĠSioux\":81593,\"tea\":81594,\"ĠPoe\":81595,\"ä¹Ī\":81596,\"_cmos\":81597,\"Ġalb\":81598,\"(lr\":81599,\"ĠApparel\":81600,\"Ġdello\":81601,\"ĠÑĤÐ¾Ñĩ\":81602,\"Ġstreamline\":81603,\"wchar\":81604,\"Adobe\":81605,\",module\":81606,\"Ġuninsured\":81607,\"}\\\")čĊ\":81608,\"(\\\"//*[@\":81609,\"-phase\":81610,\"Ġfeu\":81611,\"_tA\":81612,\"zoek\":81613,\"Ġfollic\":81614,\"Ġtug\":81615,\"Ġbefind\":81616,\"Ġtallest\":81617,\"(mt\":81618,\"iedy\":81619,\"_Length\":81620,\"Ġstaunch\":81621,\"ĠremoveObject\":81622,\"Ġflakes\":81623,\"gresql\":81624,\"Ġinkl\":81625,\"ĠSCSI\":81626,\"ĠKeeper\":81627,\";l\":81628,\"ĠHindus\":81629,\"_PED\":81630,\"_COND\":81631,\"ĠLaundry\":81632,\"++]=\":81633,\"_AUX\":81634,\"ĠbyÅĤ\":81635,\"Ġaumento\":81636,\"marginLeft\":81637,\"equality\":81638,\"ĠLuz\":81639,\"ĠEck\":81640,\"_mas\":81641,\"_lens\":81642,\"Ġsterile\":81643,\"clientes\":81644,\"'})ĊĊ\":81645,\"Ġgoodwill\":81646,\"ĠEllison\":81647,\"SpaceItem\":81648,\"ĠshowMessage\":81649,\"ë¡ľê·¸\":81650,\"Ġcontrato\":81651,\"Posting\":81652,\".interpolate\":81653,\"(fill\":81654,\"Ġbullpen\":81655,\".gener\":81656,\"Ġhues\":81657,\"Ġmemorandum\":81658,\"toPromise\":81659,\"ĠByz\":81660,\"(px\":81661,\"(Program\":81662,\"RESSION\":81663,\"bfd\":81664,\"Ġplanta\":81665,\".mousePosition\":81666,\"ĠSpam\":81667,\"è´§\":81668,\"telegram\":81669,\"agy\":81670,\"Ġgefunden\":81671,\".Dom\":81672,\"Ġlineman\":81673,\".btnDelete\":81674,\"Ġselectively\":81675,\"ëĵł\":81676,\"IFS\":81677,\"ĠGetHashCode\":81678,\"Ġretir\":81679,\"Ġrequisite\":81680,\"BTTag\":81681,\"plib\":81682,\"Ġfirefox\":81683,\".trade\":81684,\"Ġ#$\":81685,\".compress\":81686,\"Ġladen\":81687,\"ĠDirectoryInfo\":81688,\"ĠModes\":81689,\"Ġkone\":81690,\"Ġdivul\":81691,\"ĉhs\":81692,\"croft\":81693,\"ĠWHY\":81694,\"xCE\":81695,\"/Grid\":81696,\"_AUD\":81697,\"ĠScre\":81698,\"ĠerrorThrown\":81699,\"Sadly\":81700,\"atitis\":81701,\"Ġnegligible\":81702,\".RegisterType\":81703,\"ĠMoist\":81704,\"æµĭè¯ķ\":81705,\"ĠBMC\":81706,\"leaflet\":81707,\"yne\":81708,\"roken\":81709,\"Ġvinc\":81710,\"tty\":81711,\"Ġbeurette\":81712,\"ĠAlpine\":81713,\"ĠMcM\":81714,\"Spoiler\":81715,\"distribution\":81716,\"-rays\":81717,\"Ġë°Ķ\":81718,\"_parents\":81719,\"Ġcrates\":81720,\"Ġcommuters\":81721,\"ĠArgentine\":81722,\"ï»¿/*Ċ\":81723,\"/framework\":81724,\"ĠchannelId\":81725,\"greens\":81726,\".setStyleSheet\":81727,\"Ġinaccessible\":81728,\"itates\":81729,\"Ġwarmed\":81730,\"Fabric\":81731,\"getattr\":81732,\"displayText\":81733,\"_MONITOR\":81734,\"Ġsidewalks\":81735,\"Intialized\":81736,\"Ġkomen\":81737,\"Ġdiscriminator\":81738,\"ĠNavigate\":81739,\"(Direction\":81740,\"ĠSpit\":81741,\"_additional\":81742,\"Ġhton\":81743,\"Ġespera\":81744,\"Ġdelve\":81745,\"Ġcompartir\":81746,\"Ġpreempt\":81747,\"processors\":81748,\"-git\":81749,\"been\":81750,\".SUB\":81751,\"ĠReeves\":81752,\"/gen\":81753,\";top\":81754,\"ĉMPI\":81755,\"ZW\":81756,\"GEST\":81757,\"abilir\":81758,\"Ġprogressives\":81759,\"haft\":81760,\"Auf\":81761,\"ĠActionType\":81762,\"leo\":81763,\"Ġutan\":81764,\"Inicial\":81765,\">User\":81766,\"Ġ});ĊĊĊĊ\":81767,\"ĠØ¨Ùĩ\":81768,\"ĠChains\":81769,\"isspace\":81770,\"/rem\":81771,\"SQLite\":81772,\"Ġceasefire\":81773,\"$ar\":81774,\"TRS\":81775,\"://{\":81776,\"ĠSpirits\":81777,\"Øº\":81778,\"(Size\":81779,\"Ġnug\":81780,\"ĠOlsen\":81781,\"Ġchloride\":81782,\"ĠDisplayName\":81783,\"ĠPert\":81784,\"ĠgetMax\":81785,\"ĠEditors\":81786,\"ĠPais\":81787,\"asmus\":81788,\"Vac\":81789,\"ĠTableName\":81790,\"Ġnuanced\":81791,\"ForMember\":81792,\"Ġsleepy\":81793,\"advisor\":81794,\"Ġstalking\":81795,\".median\":81796,\"_Att\":81797,\"ĠgetNode\":81798,\"ĠFancy\":81799,\"æķ°éĩı\":81800,\".AttributeSet\":81801,\"(instruction\":81802,\"xBD\":81803,\"Ġkop\":81804,\"Affected\":81805,\"/navbar\":81806,\"Ġailments\":81807,\"ĠRamadan\":81808,\"ĠAccent\":81809,\"ĠParamount\":81810,\"ĠGAM\":81811,\"ä½įç½®\":81812,\"=*/\":81813,\".INPUT\":81814,\"<Project\":81815,\"Least\":81816,\"ĠGenome\":81817,\"AccessorType\":81818,\"leftrightarrow\":81819,\"venting\":81820,\"/payment\":81821,\"_Ptr\":81822,\"Ġtame\":81823,\"ĠMEMBER\":81824,\"ĠBitcoins\":81825,\".epam\":81826,\".Please\":81827,\"Ġschwar\":81828,\"CppMethodIntialized\":81829,\"Ġunicorn\":81830,\"Ġbedeut\":81831,\"_HS\":81832,\"Ġautogenerated\":81833,\"ĠLilly\":81834,\"ĠAssess\":81835,\"ĠHeidi\":81836,\".sources\":81837,\".tell\":81838,\"argins\":81839,\"(\\\"'\\\",\":81840,\"Ð»Ð¾Ð¶\":81841,\"ĠErotic\":81842,\"Ġjusto\":81843,\"Ġesac\":81844,\"coma\":81845,\"ĠColony\":81846,\"Ġpct\":81847,\"ĉen\":81848,\"Ġempez\":81849,\"ĠDeleting\":81850,\"NEL\":81851,\"Ġenam\":81852,\"PressEvent\":81853,\"ĠResolver\":81854,\"ĠRTE\":81855,\"Fx\":81856,\"ĠIncorrect\":81857,\"Ġyc\":81858,\"_reading\":81859,\";base\":81860,\"Ġhashtags\":81861,\"ĠMariners\":81862,\".SetFloat\":81863,\"Ġreassuring\":81864,\"irsch\":81865,\"(userid\":81866,\"Ġ====\":81867,\"])));Ċ\":81868,\"kf\":81869,\"Ġtiled\":81870,\"eguard\":81871,\"Clientes\":81872,\"æĻĤéĸĵ\":81873,\"dsl\":81874,\"Rights\":81875,\"ĠPsalm\":81876,\"during\":81877,\"ClearColor\":81878,\"usta\":81879,\"<Comment\":81880,\"Ġnozzle\":81881,\"ĠPLACE\":81882,\"/history\":81883,\"ihu\":81884,\"iVar\":81885,\"Ġgerm\":81886,\"Ġtrimming\":81887,\"ĠHunters\":81888,\"ĠRSVP\":81889,\"Interestingly\":81890,\"jian\":81891,\")){ĊĊ\":81892,\".Expect\":81893,\"ĠToilet\":81894,\"Ġwallpapers\":81895,\".WebServlet\":81896,\"arpa\":81897,\"/mainwindow\":81898,\"hq\":81899,\"Ġuy\":81900,\"Ġindign\":81901,\"CheckedChangeListener\":81902,\"Ġcallers\":81903,\"ĠMouseEventArgs\":81904,\"ĠJScrollPane\":81905,\"ĠwÅĤa\":81906,\"repositories\":81907,\"ĠÅĽw\":81908,\"Ġreferencia\":81909,\"Ġiota\":81910,\"Ġcargar\":81911,\"_observer\":81912,\"HCI\":81913,\"silver\":81914,\"Ġdevastation\":81915,\"-semibold\":81916,\"ĠExplain\":81917,\"ĠBlockly\":81918,\".Xr\":81919,\"estureRecognizer\":81920,\"CancelButton\":81921,\"ĠLocke\":81922,\"Trial\":81923,\"_PLACE\":81924,\"jualan\":81925,\"ĠRubin\":81926,\"Stripe\":81927,\"ĠmetaData\":81928,\"confidence\":81929,\"_battery\":81930,\"Ġisl\":81931,\"Ġboa\":81932,\".targets\":81933,\"lijke\":81934,\"Ġadolescente\":81935,\"bew\":81936,\",False\":81937,\"ĠyOffset\":81938,\"Previously\":81939,\"=path\":81940,\"_AA\":81941,\"ĪæĿĥ\":81942,\"Ġbakeka\":81943,\"Ġlee\":81944,\"ĠBlocking\":81945,\"/title\":81946,\"Ġå¼Ģ\":81947,\"ĠStevenson\":81948,\")object\":81949,\"istros\":81950,\".getServer\":81951,\"Ġplantation\":81952,\"_Box\":81953,\"Ġ';'\":81954,\"tica\":81955,\"))];Ċ\":81956,\"Ġdisparities\":81957,\"Æ°á»Ľ\":81958,\"icrobial\":81959,\"Ġspas\":81960,\"/DD\":81961,\"(pointer\":81962,\"Ġmidpoint\":81963,\".getClassName\":81964,\"ĠTotally\":81965,\"Ġcongen\":81966,\"ĠtÃªte\":81967,\".xlim\":81968,\"COMPLETE\":81969,\"(fi\":81970,\"oward\":81971,\"Ð¼Ñı\":81972,\".asc\":81973,\"Ġpaginate\":81974,\"Ġlurking\":81975,\".signup\":81976,\"STYLE\":81977,\"Ġworsh\":81978,\"hv\":81979,\"Ġdefensively\":81980,\"ĠLutheran\":81981,\".fun\":81982,\"ĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼\":81983,\"psc\":81984,\"Ġadmon\":81985,\"ĠEstimated\":81986,\"ĠMySqlConnection\":81987,\".statusStrip\":81988,\"Ġantigen\":81989,\"Ġherramient\":81990,\"ĠConsumers\":81991,\"ĠYT\":81992,\".masksToBounds\":81993,\".xticks\":81994,\":request\":81995,\"ĠMoo\":81996,\"-au\":81997,\"ĠtoReturn\":81998,\"ĠSapphire\":81999,\"cox\":82000,\"exampleInputEmail\":82001,\"Ġcoraz\":82002,\"(piece\":82003,\"Ġreconstructed\":82004,\"_signup\":82005,\"'])?\":82006,\"Billing\":82007,\"ĠCrowley\":82008,\"storms\":82009,\"forcer\":82010,\"Ġsupremacist\":82011,\"_wheel\":82012,\"ĉpc\":82013,\".getDocument\":82014,\".unsqueeze\":82015,\".grade\":82016,\"ellung\":82017,\".shopping\":82018,\"customerId\":82019,\"Ġmedidas\":82020,\"ĠMoments\":82021,\"enuous\":82022,\"IFICATE\":82023,\"#######Ċ\":82024,\"æĸĩç«ł\":82025,\"á»įc\":82026,\"ormsg\":82027,\"alom\":82028,\"-trade\":82029,\"ĉbt\":82030,\"/student\":82031,\"brig\":82032,\"anness\":82033,\"(ra\":82034,\"Ġricerca\":82035,\"Speaker\":82036,\"rÃ³\":82037,\"gtest\":82038,\"Glyph\":82039,\"Ã¼gen\":82040,\"@Json\":82041,\"(summary\":82042,\"Kom\":82043,\"beth\":82044,\"/engine\":82045,\"Climate\":82046,\"submitButton\":82047,\"eve\":82048,\"Ġ=============================================================================Ċ\":82049,\"pedia\":82050,\"Ġusernames\":82051,\"ĠJM\":82052,\"Ġmse\":82053,\"inspect\":82054,\"ĠSnapdragon\":82055,\"Ġdefenseman\":82056,\"ĠUITableViewDelegate\":82057,\"indhoven\":82058,\"ĠBoyle\":82059,\"ĠAlta\":82060,\"ardu\":82061,\"Ġwrestler\":82062,\"ĠStrait\":82063,\"Ġegreg\":82064,\"_baseline\":82065,\"Environmental\":82066,\"Ġinvit\":82067,\"ĠBTS\":82068,\"ĠISIL\":82069,\"Ġcoop\":82070,\"hores\":82071,\"#@\":82072,\"Ġcompel\":82073,\"(skip\":82074,\"éĺ³\":82075,\"_DEPRECATED\":82076,\"iphers\":82077,\"doubleValue\":82078,\"ĠARR\":82079,\".Score\":82080,\"Ġchromosomes\":82081,\"clause\":82082,\"ĠLuigi\":82083,\"Ġsunscreen\":82084,\"Ġcytok\":82085,\".toJSONString\":82086,\"Ġpropre\":82087,\"poons\":82088,\"mitters\":82089,\"Ġkittens\":82090,\"Ġcatholic\":82091,\".lt\":82092,\"Â¬\":82093,\"_quick\":82094,\"Ġvrai\":82095,\"ĠIReadOnly\":82096,\"ĠHiggins\":82097,\"Ġshoved\":82098,\"Ġliaison\":82099,\"_own\":82100,\"Ġmosquitoes\":82101,\"_ng\":82102,\".SetKeyName\":82103,\"_Renderer\":82104,\"_Osc\":82105,\".unregister\":82106,\"MessageType\":82107,\"-founded\":82108,\"Ġsoutheastern\":82109,\"Ġhashtable\":82110,\".indent\":82111,\"Ġjoyful\":82112,\"_sex\":82113,\"sad\":82114,\".debian\":82115,\"_gas\":82116,\"Ġperish\":82117,\"Ġhete\":82118,\"_singleton\":82119,\"(grad\":82120,\"ĠktÃ³ra\":82121,\"Ġdwind\":82122,\"ittal\":82123,\"Seeing\":82124,\"ĠRookie\":82125,\"ĉLabel\":82126,\"shan\":82127,\"<<<<<<<<\":82128,\"ĠrÃ¨\":82129,\"iesel\":82130,\"arrera\":82131,\"christ\":82132,\"Ġcurvature\":82133,\"Ġephem\":82134,\"Formatting\":82135,\".dictionary\":82136,\".Setter\":82137,\"ĠHistogram\":82138,\"ĠStuttgart\":82139,\"Ġpacing\":82140,\"utations\":82141,\"ĠNSK\":82142,\"ĠPamela\":82143,\"ĠBail\":82144,\"Ġpolarization\":82145,\"ĠGÃ¶\":82146,\"ĠElaine\":82147,\"Ġkickoff\":82148,\"Ġchapel\":82149,\"=post\":82150,\"Ġmidway\":82151,\"ewis\":82152,\"_MR\":82153,\"ieee\":82154,\"-testing\":82155,\"mez\":82156,\">--\":82157,\"Ġdoctrines\":82158,\"Ġmilieu\":82159,\"ĠRADIO\":82160,\"taken\":82161,\"Respons\":82162,\"Ġhandset\":82163,\"Ġcontro\":82164,\"ĠApplies\":82165,\"éĺŁ\":82166,\".BindingSource\":82167,\"ĠØ¬\":82168,\"Ġhumili\":82169,\"ĠMelania\":82170,\"Overlap\":82171,\"(Parcel\":82172,\"Ġwarehouses\":82173,\".GetById\":82174,\"Ġfrankfurt\":82175,\"ĠWitt\":82176,\".proj\":82177,\"ĠSasha\":82178,\"ĠRever\":82179,\"Ġarticulated\":82180,\"anches\":82181,\"ĠSeminar\":82182,\"ĠDagger\":82183,\"ĠAgile\":82184,\"OWL\":82185,\"ĠBs\":82186,\"oklyn\":82187,\"Eta\":82188,\"Ġagosto\":82189,\"íķĺìĹ¬\":82190,\"Ġoptarg\":82191,\"ĉonChange\":82192,\"ĠROAD\":82193,\"GBK\":82194,\"Ġentfer\":82195,\".AutoComplete\":82196,\"Ġhelfen\":82197,\"Cheap\":82198,\"Ġapprentice\":82199,\"iotics\":82200,\"æĬĢ\":82201,\"OfYear\":82202,\"indered\":82203,\".MSG\":82204,\"ĠMarÃŃa\":82205,\"(inplace\":82206,\"Ġfinde\":82207,\"(DE\":82208,\".Serializer\":82209,\"$time\":82210,\"unnable\":82211,\"MainThread\":82212,\"deployment\":82213,\"Ġmpfr\":82214,\"richTextPanel\":82215,\");ĊĊĊĊĊ\":82216,\"Ġdanych\":82217,\"_BEFORE\":82218,\"_ary\":82219,\"ĠBaum\":82220,\"Ġturbulent\":82221,\"ĠMultimedia\":82222,\"Ġphysicist\":82223,\"åľº\":82224,\"Animate\":82225,\"=F\":82226,\"Pago\":82227,\"/twitter\":82228,\"ottie\":82229,\"ucursal\":82230,\"_pagination\":82231,\".archive\":82232,\"-document\":82233,\"inine\":82234,\"Seller\":82235,\"adress\":82236,\"éĵ¾æİ¥\":82237,\"Ð°ÑĤÐµÐ³Ð¾ÑĢ\":82238,\"_frm\":82239,\"noDB\":82240,\"igated\":82241,\"ĠOsama\":82242,\"petto\":82243,\">y\":82244,\"-Un\":82245,\"Ġcoppia\":82246,\"AlmostEqual\":82247,\".lex\":82248,\"Ġleveled\":82249,\"ĠSCIP\":82250,\"_HOOK\":82251,\"ILogger\":82252,\"neau\":82253,\"ï¼ŀ\":82254,\"ÛĮÙĨ\":82255,\"ikhail\":82256,\"Ġuploader\":82257,\"ĠCarolyn\":82258,\".addValue\":82259,\"thinking\":82260,\"printStats\":82261,\"Ġcambios\":82262,\"poi\":82263,\"ĠBED\":82264,\"Ġxbmc\":82265,\".ï¿½\":82266,\"Ġsarcast\":82267,\"ĠNEC\":82268,\"$body\":82269,\"AllWindows\":82270,\"Ġyoungster\":82271,\"Ġuneasy\":82272,\"(AT\":82273,\"Ġnostalgic\":82274,\"PRICE\":82275,\"ĠSeiten\":82276,\"Ġmaka\":82277,\"Ġlimp\":82278,\"Ġcontrasts\":82279,\"Coffee\":82280,\"ĉgen\":82281,\"Ġperms\":82282,\"ĠNeedless\":82283,\"ouve\":82284,\"arching\":82285,\"_penalty\":82286,\"rowad\":82287,\"ongan\":82288,\"_dur\":82289,\"Ġifndef\":82290,\"iaux\":82291,\"Ġcapacidad\":82292,\"ĠNorte\":82293,\"Ġ-*-čĊ\":82294,\"ifes\":82295,\"ĠMansion\":82296,\"#Region\":82297,\"Cancellation\":82298,\"Ġnearing\":82299,\"Ġlangu\":82300,\"erequisites\":82301,\"_experiment\":82302,\"ondheim\":82303,\"],&\":82304,\"ĠCooling\":82305,\"Ġsafari\":82306,\"Ġpioneers\":82307,\"Ġfarmhouse\":82308,\"Ġdistancia\":82309,\"Ġdeserted\":82310,\"ĠNarrow\":82311,\".sg\":82312,\"Ġentrar\":82313,\".ra\":82314,\"Ġrefurbished\":82315,\"Ġinterconnected\":82316,\"Ġsurvives\":82317,\"Ġqualifiers\":82318,\"_CHARS\":82319,\"-ajax\":82320,\"ĠRory\":82321,\"Ġkolej\":82322,\"/GL\":82323,\"_legal\":82324,\"ĠTYPES\":82325,\"ĠVoices\":82326,\"ĠFerd\":82327,\"ujemy\":82328,\"Ġscoreboard\":82329,\"ĠBOT\":82330,\"xDD\":82331,\"ĠIvanka\":82332,\"Ġhsv\":82333,\"nodiscard\":82334,\"ĠTHESE\":82335,\"mojom\":82336,\"Ġticking\":82337,\"peq\":82338,\"Ġæ·»åĬł\":82339,\"ĠNicol\":82340,\"ĉangle\":82341,\"_allocated\":82342,\"Ġstrut\":82343,\"xDB\":82344,\"Evaluate\":82345,\"ĠVARIANT\":82346,\"ĠreferencedColumnName\":82347,\"loh\":82348,\"ĠRequestOptions\":82349,\"Ġcoco\":82350,\"Ġbleach\":82351,\"_organization\":82352,\"ĠCHO\":82353,\"HTTPS\":82354,\"_barrier\":82355,\".visitMethodInsn\":82356,\"Ġvite\":82357,\"Ġ-$\":82358,\"[cell\":82359,\"Ġcessation\":82360,\"ĊĊĊĊĊĊĊĊĊĊĊ\":82361,\"ĠÑģÐ°Ð¹\":82362,\"Evaluation\":82363,\"ĠCIM\":82364,\"qualities\":82365,\"XmlAttribute\":82366,\"ĠEmoji\":82367,\"Ġ\\\"('\":82368,\"ĠTURN\":82369,\"xsd\":82370,\"ĠGIS\":82371,\"ĠcreateSelector\":82372,\"ripple\":82373,\"Ġunnecessarily\":82374,\"ĠnewPos\":82375,\"Ġsymbolism\":82376,\"obutton\":82377,\"Ġsamo\":82378,\"Ġ(*((\":82379,\".reward\":82380,\"KERNEL\":82381,\"(jScrollPane\":82382,\"Ġbystand\":82383,\"_icall\":82384,\"Ġdungeons\":82385,\"Ġconstellation\":82386,\"Ġembraces\":82387,\"ĠInfant\":82388,\"Austin\":82389,\".abstract\":82390,\"Ġcompagn\":82391,\"ĠConditioning\":82392,\"Mais\":82393,\"Verifier\":82394,\"ĠPyramid\":82395,\"ĠmListener\":82396,\"_building\":82397,\".Redis\":82398,\"ĠTooth\":82399,\"LOGGER\":82400,\".AsyncTask\":82401,\"_principal\":82402,\"exampleModalLabel\":82403,\"ĉLocal\":82404,\"Markers\":82405,\"Ġdolphins\":82406,\".TextEdit\":82407,\"'al\":82408,\"Ġoverst\":82409,\"-drive\":82410,\"Ġinsomnia\":82411,\"Ġadb\":82412,\"_queues\":82413,\"Eb\":82414,\"ĠDamn\":82415,\"istringstream\":82416,\"ĉDuel\":82417,\"ibble\":82418,\"Ġimread\":82419,\".finished\":82420,\"Ġmisrepresented\":82421,\"ÅĦst\":82422,\"ionales\":82423,\"\\\"Now\":82424,\".SelectSingleNode\":82425,\"Ġweakening\":82426,\"_instructions\":82427,\"-os\":82428,\"ĠstartPoint\":82429,\"ĠMime\":82430,\"ĠHeld\":82431,\"||(\":82432,\"ummings\":82433,\"okino\":82434,\"Ġrefl\":82435,\"ridor\":82436,\"Integrated\":82437,\"EObject\":82438,\"peats\":82439,\"Circular\":82440,\"ĠSodium\":82441,\"ĠpodrÃŃa\":82442,\"medicine\":82443,\"Ġparanoia\":82444,\"/background\":82445,\"(border\":82446,\"_slow\":82447,\"ĠpresentViewController\":82448,\"Ġcontingency\":82449,\"ĠPasadena\":82450,\"loops\":82451,\"ĠOc\":82452,\"applications\":82453,\"Ġmpg\":82454,\"ĠAQ\":82455,\".WinControls\":82456,\"ledon\":82457,\"ĠReq\":82458,\"ĠAcres\":82459,\"ibir\":82460,\"ĠgetWindow\":82461,\"ĠYah\":82462,\"Ġneedy\":82463,\"âĸº\":82464,\"ĠTOM\":82465,\"([...\":82466,\"Ġfq\":82467,\"ĠCamden\":82468,\"ordinated\":82469,\"ĉchildren\":82470,\"veget\":82471,\"ĉdirection\":82472,\"<Field\":82473,\"_correction\":82474,\"(END\":82475,\"HEET\":82476,\"Falsy\":82477,\".dylib\":82478,\"_REPO\":82479,\"Ġbrilliance\":82480,\"ogrÃ¡f\":82481,\"lod\":82482,\"Ġpowdered\":82483,\"(Art\":82484,\"ĠMILL\":82485,\"ÐµÐ´Ð°Ðº\":82486,\"_simulation\":82487,\"Ġsmashing\":82488,\"ĠurlString\":82489,\"Ġdreaded\":82490,\"rieg\":82491,\"/ns\":82492,\"ĠInterpreter\":82493,\":max\":82494,\"deriv\":82495,\"ĠPett\":82496,\"ĠmodÃ¨le\":82497,\"Ġamplified\":82498,\"ĠSignals\":82499,\".navCtrl\":82500,\"åĸ\":82501,\"Ġseparators\":82502,\"ĠSHIFT\":82503,\"Ġfidelity\":82504,\".son\":82505,\"(ca\":82506,\"ĠPLUGIN\":82507,\"Ġlighten\":82508,\"PBS\":82509,\"floating\":82510,\"(loader\":82511,\"Ġpeeled\":82512,\"hic\":82513,\"Ġtaped\":82514,\"Ġnovembre\":82515,\"Ġstuffing\":82516,\"ĠFirearms\":82517,\".Drawable\":82518,\"Ġcortical\":82519,\"ĠGUIContent\":82520,\"ĠVeronica\":82521,\"_rsa\":82522,\"Ġcommemorate\":82523,\".SYSTEM\":82524,\"Ġdams\":82525,\".isTrue\":82526,\"ĠPregnancy\":82527,\"ìĭł\":82528,\"Ġauditory\":82529,\"(Cell\":82530,\"Ġinvading\":82531,\"ĠforEach\":82532,\"ĉDraw\":82533,\"Marcus\":82534,\"Processed\":82535,\"Ġspraying\":82536,\"ĠOutlineInputBorder\":82537,\"esseract\":82538,\"ĠæľĢ\":82539,\"Pg\":82540,\"-quarters\":82541,\"Ġskl\":82542,\"/providers\":82543,\"toHaveBeenCalledTimes\":82544,\"Ġcosmos\":82545,\"Ġfinalists\":82546,\"Ġsleeper\":82547,\"ĠMaterialApp\":82548,\"dac\":82549,\"Ġbusinessmen\":82550,\"ÄŁer\":82551,\"Bias\":82552,\"datal\":82553,\"UpEdit\":82554,\"ĠTir\":82555,\"ISTIC\":82556,\"ĠHera\":82557,\"_intersection\":82558,\"ĠLama\":82559,\"ĉappend\":82560,\"Ġpollutants\":82561,\"ĠSikh\":82562,\"Ġcollaborations\":82563,\"nutrition\":82564,\"Ġhamm\":82565,\"ĠDillon\":82566,\"_DOT\":82567,\"Ġfirsthand\":82568,\"SOAP\":82569,\"=z\":82570,\".priv\":82571,\"Mismatch\":82572,\".sendRedirect\":82573,\".linkLabel\":82574,\"Ġwreak\":82575,\"Marvel\":82576,\"/sl\":82577,\"########################################\":82578,\"Ġmovable\":82579,\"ÑĥÐ¹\":82580,\"ĠDrinking\":82581,\"acea\":82582,\"Ġtrovare\":82583,\".CSS\":82584,\"Ġkern\":82585,\"vfs\":82586,\"æķ°åŃĹ\":82587,\"Ġstesso\":82588,\"ĠFORCE\":82589,\"Ġlief\":82590,\"Ġachieves\":82591,\"ĠElijah\":82592,\"GetProperty\":82593,\"/*@\":82594,\"ĠHumanity\":82595,\"(The\":82596,\"warm\":82597,\">\\\")\":82598,\"Ġcomputations\":82599,\".tintColor\":82600,\"Ġusleep\":82601,\"ĠGPLv\":82602,\"ndata\":82603,\"/cli\":82604,\"Moh\":82605,\">\\\"čĊ\":82606,\".bridge\":82607,\"Ġencyclopedia\":82608,\"ĠBIN\":82609,\"ĠSuppose\":82610,\"ĠØ¨Ø§\":82611,\"rieved\":82612,\"pagen\":82613,\"irse\":82614,\"Pacific\":82615,\".fullName\":82616,\"Ġallege\":82617,\"illustr\":82618,\"Ġê²°\":82619,\"Ġdeterrent\":82620,\"ĠNaples\":82621,\"included\":82622,\"Rates\":82623,\"ĠhasNext\":82624,\"ĠJeremiah\":82625,\"ĠFernandez\":82626,\"ĠgetOrder\":82627,\".Subscribe\":82628,\"Poss\":82629,\":)Ċ\":82630,\"ĠWorksheet\":82631,\"blend\":82632,\"Ġwitty\":82633,\"Ġcounterfeit\":82634,\"_dy\":82635,\"/Runtime\":82636,\"Ġsodom\":82637,\"/do\":82638,\"Ġ<|\":82639,\"ĠRecru\":82640,\"å£°æĺİ\":82641,\"Ġmodelos\":82642,\"Ġbitrate\":82643,\".crm\":82644,\"lus\":82645,\"ĠfileType\":82646,\"å°ĳ\":82647,\"Ġmarrow\":82648,\"ĠVenezuelan\":82649,\"Ġscav\":82650,\"ĠSTOCK\":82651,\"ĠImpossible\":82652,\"navigationBar\":82653,\"Ġsightings\":82654,\"ĠcellForRowAt\":82655,\"Ġrects\":82656,\"Ġairl\":82657,\"ĠLester\":82658,\"Ġnods\":82659,\"@register\":82660,\"xCD\":82661,\"pname\":82662,\"Ġpottery\":82663,\"Ġzwar\":82664,\"ĠSunderland\":82665,\"âĢ¦but\":82666,\"/control\":82667,\"Ġcalculus\":82668,\"(isolate\":82669,\"placeholders\":82670,\"*)_\":82671,\"Ġ}}čĊ\":82672,\"ĠKohana\":82673,\"codile\":82674,\"oteric\":82675,\"Ġprepaid\":82676,\"Ġgrandma\":82677,\"Ġsulph\":82678,\"ĠGaines\":82679,\"\\\\Module\":82680,\"Ġcounselling\":82681,\"-generic\":82682,\"ĠTues\":82683,\".Gradient\":82684,\"ĠThurs\":82685,\"Ġentra\":82686,\"Ġadvancements\":82687,\"SWEP\":82688,\"_MARKER\":82689,\"Ġklub\":82690,\"ĠmÃ©g\":82691,\"fffffff\":82692,\"\\\"]){Ċ\":82693,\"/compiler\":82694,\"adiens\":82695,\"StringValue\":82696,\"ĠSculpt\":82697,\"panels\":82698,\"å½¢\":82699,\"äº§åĵģ\":82700,\"arÃŃa\":82701,\"Ġderail\":82702,\"ĠLoch\":82703,\"Ġpepp\":82704,\"mpz\":82705,\"Ġâŀ\":82706,\"KV\":82707,\"ĠDietary\":82708,\"ARRIER\":82709,\"Ġpoo\":82710,\"ĠRANDOM\":82711,\"è³\":82712,\"ĠHomework\":82713,\".ValidationError\":82714,\"ĠMarxism\":82715,\"ÑĥÑĤÑĮ\":82716,\"Ġcomentario\":82717,\"_BOTH\":82718,\"Ġprm\":82719,\"castHit\":82720,\"iplina\":82721,\"ĠVoters\":82722,\".assignment\":82723,\"nett\":82724,\"SAMPLE\":82725,\"jis\":82726,\"\\\"title\":82727,\".validators\":82728,\"Ġ\\\"?\\\"\":82729,\"unidad\":82730,\"_figure\":82731,\"Ġaccru\":82732,\"ĠRemark\":82733,\"Founder\":82734,\".initializeApp\":82735,\"ĠPresents\":82736,\"ĠMULTI\":82737,\"vester\":82738,\".visitInsn\":82739,\"ĠgetPath\":82740,\"_different\":82741,\"Ġloosen\":82742,\"Ġarrogance\":82743,\"Ġjuni\":82744,\"ĠZahl\":82745,\"ĠGCBO\":82746,\"Ġmoderators\":82747,\"LineColor\":82748,\"ĠNodeType\":82749,\"_below\":82750,\"orgt\":82751,\"ĠHarlem\":82752,\"ĠOrwell\":82753,\"_UNIX\":82754,\".restart\":82755,\"ithe\":82756,\"Ġgenie\":82757,\"Ġclad\":82758,\"':{'\":82759,\"Ġshowcased\":82760,\"Ġlarvae\":82761,\"Michelle\":82762,\"ĠLH\":82763,\".getLog\":82764,\"Constructed\":82765,\"Ġhva\":82766,\"_subs\":82767,\"Ġdab\":82768,\".documentation\":82769,\"Ġnig\":82770,\"ĠMandarin\":82771,\"âĢĶare\":82772,\"-pic\":82773,\"_corners\":82774,\".Bot\":82775,\"][(\":82776,\"__':čĊ\":82777,\".EditorButton\":82778,\"-syntax\":82779,\"Sanders\":82780,\"ĠTanks\":82781,\"desired\":82782,\"stantiateViewController\":82783,\"Gear\":82784,\"ĠuserModel\":82785,\"ĉcontrol\":82786,\"DataBase\":82787,\"ĠDebate\":82788,\"inesis\":82789,\"Ġxe\":82790,\".magnitude\":82791,\"Ġyan\":82792,\"ĠApiException\":82793,\"(which\":82794,\"athering\":82795,\"Considering\":82796,\"ĠALPHA\":82797,\"ç¯\":82798,\"ĠRankings\":82799,\".life\":82800,\"ê°Ĵ\":82801,\"OFFSET\":82802,\".telegram\":82803,\"Ġfavicon\":82804,\"_ssh\":82805,\"ĠEDGE\":82806,\"Refs\":82807,\"andan\":82808,\"Ġadolescence\":82809,\"ĠShank\":82810,\"ĠSwamp\":82811,\"_perc\":82812,\"Ġcontrario\":82813,\".ny\":82814,\".\\\"),\":82815,\"Ġunten\":82816,\"_ENSURE\":82817,\"/orders\":82818,\"(cf\":82819,\"Ġuntreated\":82820,\"azen\":82821,\"(InputStream\":82822,\"Ġapprovals\":82823,\"Ġgermany\":82824,\"Ġavere\":82825,\"Triple\":82826,\"-bars\":82827,\"ĠsetPage\":82828,\"Jac\":82829,\"ĠFires\":82830,\"ĠDAYS\":82831,\"ç¨¿\":82832,\"Ġscratched\":82833,\"ĠBEN\":82834,\"-wife\":82835,\"Ġintellectuals\":82836,\"Ġpouco\":82837,\"Ġstabilization\":82838,\"Ġpelos\":82839,\"ĠSTORY\":82840,\"<fieldset\":82841,\"ĠMaiden\":82842,\".Circle\":82843,\"ĠsmÃ¥\":82844,\"////////////////////////////////////////////////////\":82845,\"/end\":82846,\"èĭ±\":82847,\"(numpy\":82848,\".panelControl\":82849,\"chrift\":82850,\"continental\":82851,\"_pel\":82852,\"DSL\":82853,\"<\\\\/\":82854,\"ĠOPS\":82855,\"ĠNoon\":82856,\"Ġundisclosed\":82857,\"ĠYin\":82858,\"spo\":82859,\"ĉdescribe\":82860,\"togroup\":82861,\"Ġdiapers\":82862,\"ĠmHandler\":82863,\"ĉClose\":82864,\"Ġrendition\":82865,\"={({\":82866,\"Entering\":82867,\"(DIR\":82868,\"_OLD\":82869,\"ĠSting\":82870,\"ĠPawn\":82871,\"usses\":82872,\"ĠgetCode\":82873,\"ItemList\":82874,\"Ġindis\":82875,\"Ġ>\\\",\":82876,\"Ġconfl\":82877,\"Ġdominates\":82878,\"thesized\":82879,\"stered\":82880,\"Ġcac\":82881,\"ĠGenuine\":82882,\"<Path\":82883,\"ĠHodg\":82884,\"-fly\":82885,\".cid\":82886,\"ĠobjectId\":82887,\"(#)\":82888,\".moveToNext\":82889,\"Dialogue\":82890,\"<pcl\":82891,\"tearDown\":82892,\"')}}Ċ\":82893,\"æ¸¸\":82894,\"Liver\":82895,\"MatrixXd\":82896,\"Ġcrappy\":82897,\"_DEAD\":82898,\".partial\":82899,\".DropDownStyle\":82900,\"fur\":82901,\".Collapsed\":82902,\"-town\":82903,\"ICIAL\":82904,\"Direccion\":82905,\"ĠsetResult\":82906,\"/result\":82907,\"ĠSheep\":82908,\"yscale\":82909,\"conti\":82910,\"Ġreconoc\":82911,\"é¾\":82912,\"[block\":82913,\"clazz\":82914,\"Ġbenefiting\":82915,\"AAP\":82916,\".requires\":82917,\".Cookie\":82918,\"Ġcaptivity\":82919,\".Section\":82920,\"]));\":82921,\"-caret\":82922,\"(va\":82923,\"ĠvÃ¤l\":82924,\"ĠHighlands\":82925,\"Nota\":82926,\"ĠFML\":82927,\"winter\":82928,\"Ġagendas\":82929,\"__,__\":82930,\"demand\":82931,\"Ġtutors\":82932,\"_SYM\":82933,\"(CH\":82934,\"Ġunequiv\":82935,\".transitions\":82936,\"ĠCalories\":82937,\"ĠEconomist\":82938,\".Pin\":82939,\"Ġdeflect\":82940,\"Exposed\":82941,\"Ġgep\":82942,\".LayoutControlItem\":82943,\"Ġrak\":82944,\"fiber\":82945,\"Ġapopt\":82946,\"ĠEnums\":82947,\"iteur\":82948,\"Ġmodifies\":82949,\"Ġreluctance\":82950,\"Ġspills\":82951,\"Ascending\":82952,\"Ġtemperatura\":82953,\"-interface\":82954,\"Ġcoworkers\":82955,\"Ġ:\\\\\":82956,\"ĠRoundedRectangleBorder\":82957,\"<KeyValuePair\":82958,\"Parsed\":82959,\"Ġwithdrawing\":82960,\"(hist\":82961,\"Ġtheorists\":82962,\"-ng\":82963,\"Ġchiff\":82964,\"ë¥¸\":82965,\"PAIR\":82966,\"ĠBrewer\":82967,\"Ka\":82968,\"ĠBowling\":82969,\"_tl\":82970,\"'}).\":82971,\"Ġprobing\":82972,\"Ars\":82973,\".realm\":82974,\"Ġestates\":82975,\"vary\":82976,\"ĠKes\":82977,\"Ġ\\\",\\\",\":82978,\"},čĊčĊ\":82979,\"Planning\":82980,\"ĠRecon\":82981,\"Ġconclus\":82982,\"vault\":82983,\"Ġincentiv\":82984,\"Ġbinnen\":82985,\"ĠPhillies\":82986,\".Loader\":82987,\"ĠFallen\":82988,\"_Two\":82989,\"ĠBias\":82990,\"RoleId\":82991,\"ĠParcelable\":82992,\"ĠDodd\":82993,\"Ġ$(\\\"#\\\"\":82994,\"äº¿åħĥ\":82995,\"-mean\":82996,\"(Output\":82997,\"ATTRIBUTE\":82998,\"Ġsecretive\":82999,\"ĠPeripheral\":83000,\"ĠFiled\":83001,\"Ġå·\":83002,\"_median\":83003,\".IC\":83004,\"ĠArrayBuffer\":83005,\"(TABLE\":83006,\"Ġ]ĊĊĊ\":83007,\"Ġanthology\":83008,\"Ġobscene\":83009,\"opause\":83010,\"ĠESV\":83011,\"Ã¡veis\":83012,\"osemite\":83013,\"Grupo\":83014,\"ĠMOCK\":83015,\"Ġunavoidable\":83016,\"Ġcovid\":83017,\"hower\":83018,\".Never\":83019,\"SetActive\":83020,\"{text\":83021,\"_proba\":83022,\"\\\\Configuration\":83023,\"ĠBryce\":83024,\"Ġcoerce\":83025,\"ĠVanderbilt\":83026,\"gements\":83027,\"legg\":83028,\"Ġrebut\":83029,\"ĠVIN\":83030,\"åĪĨéĴŁ\":83031,\"Ġobsessive\":83032,\"/cmd\":83033,\"Ġkomment\":83034,\"ĠLaugh\":83035,\"ëĭĪ\":83036,\"Ġselves\":83037,\"orra\":83038,\".rooms\":83039,\"Ġcomplexities\":83040,\"ĉoperator\":83041,\"Alternate\":83042,\"Ġsortie\":83043,\"getNum\":83044,\"Ġrealizado\":83045,\"Doing\":83046,\"_Grid\":83047,\"ĠsetSupportActionBar\":83048,\"Ã¤hlt\":83049,\"åĶ\":83050,\":{čĊ\":83051,\"Interested\":83052,\"Ġdiminishing\":83053,\"ĠLoot\":83054,\"AdapterFactory\":83055,\"-runner\":83056,\"saving\":83057,\"(sem\":83058,\"fad\":83059,\"EDURE\":83060,\"_documento\":83061,\"ĠCaleb\":83062,\"Ġguise\":83063,\"ĠMcGu\":83064,\"(units\":83065,\"Ġbezier\":83066,\"Ġpatt\":83067,\"Ġpelvic\":83068,\"Ġconosc\":83069,\"activo\":83070,\"ĠMalone\":83071,\".Take\":83072,\"(sqrt\":83073,\"stashop\":83074,\"-ended\":83075,\"ĠMidi\":83076,\"ĠBanc\":83077,\"ĠPepsi\":83078,\"_MAY\":83079,\"Ġpll\":83080,\"/inet\":83081,\"-enh\":83082,\"ĠItal\":83083,\"mour\":83084,\"Ġreluctantly\":83085,\".rcParams\":83086,\"Ġpals\":83087,\".pkg\":83088,\"Ġformas\":83089,\"lieÃŁlich\":83090,\"-books\":83091,\"omaly\":83092,\"Ġrecommand\":83093,\"PLICIT\":83094,\"iÄį\":83095,\".cgColor\":83096,\"(Board\":83097,\"ÐµÐ½Ð¸Ð¸\":83098,\"ĠLEN\":83099,\"_-_\":83100,\"ĠUno\":83101,\"ĠNOTIFY\":83102,\"hana\":83103,\"[slot\":83104,\"\\\\admin\":83105,\"InInspector\":83106,\")const\":83107,\"Ġflattering\":83108,\"igrams\":83109,\"cac\":83110,\"Ġheartfelt\":83111,\"Industrial\":83112,\"Airport\":83113,\"XI\":83114,\"Ġvalidar\":83115,\"representation\":83116,\"ĠRentals\":83117,\"Ġomission\":83118,\"Ġmythical\":83119,\"ĠEntrance\":83120,\"Ġsergeant\":83121,\"ĠwriteTo\":83122,\"ĠNorwich\":83123,\"ĠLionel\":83124,\"-bal\":83125,\"ĠZwe\":83126,\"_rent\":83127,\"Ġremar\":83128,\"ĠBahamas\":83129,\"ĠBale\":83130,\":\\\"\\\",\":83131,\"StateManager\":83132,\"ĠbÃ©nÃ©\":83133,\"Ġ!***\":83134,\"Ġblockers\":83135,\".sel\":83136,\"(LED\":83137,\"Ġfsm\":83138,\"Ġwiping\":83139,\"Ġzaman\":83140,\"ĠRei\":83141,\"aguay\":83142,\"..'\":83143,\"Ġloung\":83144,\"etcode\":83145,\"Ġlanz\":83146,\"citation\":83147,\"[`\":83148,\"-el\":83149,\"asbourg\":83150,\"ĠSOLD\":83151,\"ĠOrchard\":83152,\"CHandle\":83153,\"ĠLoft\":83154,\".divide\":83155,\"-With\":83156,\"/design\":83157,\".ServiceModel\":83158,\"Mis\":83159,\"ĠrawData\":83160,\"Ġinteracts\":83161,\"ĠErotik\":83162,\"ĠonPostExecute\":83163,\"èĻ\":83164,\"Ġvex\":83165,\"Ġstringify\":83166,\"ynes\":83167,\"_Email\":83168,\"_OM\":83169,\"quite\":83170,\"_effects\":83171,\"ADX\":83172,\"Ġadorned\":83173,\"ssf\":83174,\"editar\":83175,\"ĠMadame\":83176,\"Ġrefute\":83177,\"ĠLuca\":83178,\"ĠWolverine\":83179,\"sexo\":83180,\"Andre\":83181,\"<Route\":83182,\"ĠScenes\":83183,\"Ġreorder\":83184,\"_mx\":83185,\"createTime\":83186,\"Ġsynt\":83187,\",model\":83188,\"icrous\":83189,\"ĠMOUSE\":83190,\"ê¹\":83191,\"compression\":83192,\"Ġprinces\":83193,\"Ġshameful\":83194,\"Ġpau\":83195,\"ĠTED\":83196,\"(coeffs\":83197,\"à¯ģ\":83198,\"/umd\":83199,\"Ġcanyon\":83200,\"/render\":83201,\".used\":83202,\"ĠAgree\":83203,\"ĠJewel\":83204,\"/command\":83205,\"Barcode\":83206,\"(dead\":83207,\"websocket\":83208,\"umu\":83209,\"GLOSS\":83210,\"Ġfortn\":83211,\"Ġboasted\":83212,\"Ġ\\\"\\\\\\\">\":83213,\"istung\":83214,\"-machine\":83215,\"Ġincidental\":83216,\"ĠmM\":83217,\"-readable\":83218,\".fx\":83219,\"ĠPOLIT\":83220,\"Ġsymlink\":83221,\"(using\":83222,\"xED\":83223,\"Ġ\\\"\\\"\\\".\":83224,\".Stdout\":83225,\"Ġèĭ\":83226,\"Ġalmacen\":83227,\"ĉtrigger\":83228,\"-tip\":83229,\"ĠCOMMIT\":83230,\".ingredients\":83231,\"Ġmanifests\":83232,\"ĠOSS\":83233,\"ĠHaut\":83234,\"/loading\":83235,\".TypeString\":83236,\"(clean\":83237,\"ĠLIC\":83238,\"ĠBarbie\":83239,\"OOSE\":83240,\".âĢ¦\":83241,\"ĠInvitation\":83242,\"Ġredeemed\":83243,\").'</\":83244,\"Ġimdb\":83245,\"Ġbelang\":83246,\"Ġscrapped\":83247,\"-nil\":83248,\"ĠProud\":83249,\"Ð°ÑģÑĤ\":83250,\".SIZE\":83251,\"ĠsetVisible\":83252,\"Ġraining\":83253,\"Ġlenght\":83254,\"Ġanak\":83255,\"_CMP\":83256,\"Ġpanoramic\":83257,\"Ġgim\":83258,\"said\":83259,\"Ġprogen\":83260,\"ĠGBP\":83261,\"âĢł\":83262,\"Ġinvestigates\":83263,\"ĠprÃ¨s\":83264,\"/navigation\":83265,\".motion\":83266,\"ĠLightweight\":83267,\"ĉĉĠĠĠĠĠĠĠĠĠĠĠĠ\":83268,\"Ġontology\":83269,\"ĠNIH\":83270,\"(simp\":83271,\".pull\":83272,\"Ġpropositions\":83273,\"@WebServlet\":83274,\"Ġredefine\":83275,\"ĠENERGY\":83276,\"ìł¸\":83277,\"ORIZATION\":83278,\"ĠVerfÃ¼g\":83279,\"}}],Ċ\":83280,\"Ġwegen\":83281,\"à¹ĩ\":83282,\"&oacute\":83283,\".Board\":83284,\"Ġculpa\":83285,\"ĠGenetics\":83286,\"Ġ}>\":83287,\"Ġadamant\":83288,\"ãģķãĤĮ\":83289,\"ĉaudio\":83290,\"ê¸Ģ\":83291,\"Ġnumeral\":83292,\"Ġrestraining\":83293,\".INTERNAL\":83294,\"ĠMoms\":83295,\"ĠIPAddress\":83296,\"imenti\":83297,\"Ġalphabetical\":83298,\"ĠJFK\":83299,\"ĠAttempts\":83300,\"frage\":83301,\"Ġdarm\":83302,\"Ġbaseman\":83303,\"=log\":83304,\",error\":83305,\"ĠDISCLAIMS\":83306,\"ĉtexture\":83307,\"-covered\":83308,\"ĠPlum\":83309,\"ĠåķĨ\":83310,\"ĠpÃ©ri\":83311,\"(review\":83312,\"ĠForced\":83313,\"FH\":83314,\"Ġì´Ī\":83315,\"Ġeyebrow\":83316,\"_REGS\":83317,\"Ġchests\":83318,\"ĠLargest\":83319,\"]]:Ċ\":83320,\"UTOR\":83321,\"Ġenquiries\":83322,\"Ġcoke\":83323,\"-catching\":83324,\"ĠGeography\":83325,\"atel\":83326,\"(prod\":83327,\"orWhere\":83328,\"Nine\":83329,\"ĠPied\":83330,\"Ġadjusts\":83331,\"(prom\":83332,\"_menus\":83333,\"_exam\":83334,\"ĠNotificationCenter\":83335,\"ĉds\":83336,\"LIK\":83337,\"_twitter\":83338,\"CRC\":83339,\"Ġeux\":83340,\"ĠStable\":83341,\"iyor\":83342,\"Ġcarbonate\":83343,\".sal\":83344,\"Mapped\":83345,\"ieving\":83346,\")y\":83347,\"ynamodb\":83348,\".CompareTag\":83349,\"Ġsevered\":83350,\"'email\":83351,\"Ġforsk\":83352,\"lexport\":83353,\"IMITER\":83354,\"ĠApex\":83355,\"Ġhmac\":83356,\"ĠOdds\":83357,\"overrides\":83358,\":\\\";čĊ\":83359,\"Ġopioids\":83360,\"Ġmesmer\":83361,\"ĠGAL\":83362,\"-lines\":83363,\"ĠapplyMiddleware\":83364,\"Ġseria\":83365,\"ESIS\":83366,\"Ġnilai\":83367,\"Ġmalls\":83368,\"ĠPaolo\":83369,\"ĠLent\":83370,\".builders\":83371,\"/&\":83372,\"ĠClips\":83373,\"ĠJurassic\":83374,\"âķĿ\":83375,\"-cond\":83376,\"ãĥ¼ãĥĪ\":83377,\"|wx\":83378,\".house\":83379,\"Ġheraus\":83380,\"Ġhk\":83381,\"ĠCoco\":83382,\"\\\"\\\\Ċ\":83383,\"Ġaccreditation\":83384,\"ĠRach\":83385,\"ertest\":83386,\"shortcode\":83387,\"Ġvalidations\":83388,\"ULSE\":83389,\"Ġexcerpts\":83390,\"SeekBar\":83391,\"ĠgetLocation\":83392,\"Ġfenced\":83393,\"(gs\":83394,\"Ġlys\":83395,\"Ġharms\":83396,\"ĠHomo\":83397,\"âĢľShe\":83398,\"ĠâĢ»\":83399,\"=session\":83400,\"_COMPILE\":83401,\"Means\":83402,\"Ġpetitioner\":83403,\"IMO\":83404,\"\\\"]=>\":83405,\"dbe\":83406,\"_gps\":83407,\"Ġmj\":83408,\"_expire\":83409,\"ĠDAN\":83410,\"Ġxv\":83411,\"Ġfunciones\":83412,\"Ġshaky\":83413,\"Sugar\":83414,\"ĠgetResult\":83415,\"<Token\":83416,\"httpClient\":83417,\".onPause\":83418,\"sti\":83419,\"Snake\":83420,\"Mappings\":83421,\"ĠReaper\":83422,\"Ġfrei\":83423,\"ĠCosmos\":83424,\"uers\":83425,\"ĠHaj\":83426,\"ĠBlaze\":83427,\"ojis\":83428,\"CrLf\":83429,\".proc\":83430,\"Ġotp\":83431,\"ĠDraws\":83432,\"ĉREG\":83433,\"('''\":83434,\"Ġgenera\":83435,\"ĠAttached\":83436,\"REM\":83437,\"%;\\\">\":83438,\"urnished\":83439,\"_rp\":83440,\"Ġzoals\":83441,\"Ġassorted\":83442,\"itized\":83443,\"Ġcamino\":83444,\"Ġabducted\":83445,\".toBe\":83446,\"']):\":83447,\"ĠMoor\":83448,\"Including\":83449,\"Ġgrazing\":83450,\"setStatus\":83451,\"airobi\":83452,\"_Execute\":83453,\"ifiant\":83454,\"eldo\":83455,\"automatic\":83456,\"($)\":83457,\"Ġleaps\":83458,\"onedDateTime\":83459,\"(layers\":83460,\"-produced\":83461,\"ĠWorkbook\":83462,\"Ġenormously\":83463,\"Ġdepressive\":83464,\"Ġaaa\":83465,\"Embedded\":83466,\"BUM\":83467,\"Ġelles\":83468,\"Ġboarded\":83469,\"ÅĽmy\":83470,\"Ġmasih\":83471,\"_genes\":83472,\"ĉTexture\":83473,\"istar\":83474,\"ĠAugusta\":83475,\"ĠAppMethodBeat\":83476,\"Ġkode\":83477,\"abez\":83478,\"_pieces\":83479,\"Curr\":83480,\"Ġliberalism\":83481,\"Dick\":83482,\"Ale\":83483,\"Ġquale\":83484,\"}';Ċ\":83485,\".answers\":83486,\"ĠJAN\":83487,\"ĠPURE\":83488,\"Ġcanoe\":83489,\"ĠSAME\":83490,\"Qualifier\":83491,\"Ġdbname\":83492,\"ĠInnoc\":83493,\"ĉTRACE\":83494,\"ivre\":83495,\"Ġmech\":83496,\"asel\":83497,\"\\\",[\":83498,\"Ġasia\":83499,\"ĠCanterbury\":83500,\".DataBindings\":83501,\"kah\":83502,\"())))\":83503,\"Ġdziew\":83504,\"rete\":83505,\"Ġscreenings\":83506,\".MOUSE\":83507,\"Ġbusiest\":83508,\"ĉrenderer\":83509,\"Ġtestimonials\":83510,\"Ġaspire\":83511,\"fortune\":83512,\"ĠMSC\":83513,\"Ġdamping\":83514,\"\\\\\\\",Ċ\":83515,\"Wel\":83516,\"Wik\":83517,\"ĠìĹ¬\":83518,\"(tid\":83519,\"ĠCannes\":83520,\"ocop\":83521,\">\\\"+Ċ\":83522,\"facet\":83523,\"Ġslashed\":83524,\"ĠLiberia\":83525,\"Smooth\":83526,\"_che\":83527,\"Labour\":83528,\"Ġeminent\":83529,\":X\":83530,\"\\\\Backend\":83531,\"Ġ++)Ċ\":83532,\"Ġteamwork\":83533,\"_agg\":83534,\".Serve\":83535,\"ĠSND\":83536,\"ĠPICK\":83537,\"Ġwipes\":83538,\"/Typography\":83539,\"ĠAPA\":83540,\"ikki\":83541,\"Ġcoder\":83542,\"gaben\":83543,\"Ġunknow\":83544,\".Department\":83545,\"à¸±à¸ļ\":83546,\"ĠplayerName\":83547,\"*e\":83548,\"<Block\":83549,\"_upd\":83550,\"ĠGibbs\":83551,\"leasing\":83552,\"ĠColombian\":83553,\"(PHP\":83554,\"Ġ***!Ċ\":83555,\"ĠìĿ¼\":83556,\"ĠCurtain\":83557,\"/ay\":83558,\"ÙĦÙī\":83559,\"sports\":83560,\"Ġdesea\":83561,\"irÃ¡\":83562,\"Ġunconditional\":83563,\"Ġthrom\":83564,\"ĠCHRIST\":83565,\"ĠHOR\":83566,\"oscopic\":83567,\"ĠyaÅŁ\":83568,\"Ġnostro\":83569,\"...\\\");čĊ\":83570,\"Ġslur\":83571,\"Ġhatten\":83572,\"Ġpesticide\":83573,\"Ġfreeway\":83574,\"ĠCoh\":83575,\"Ġwannonce\":83576,\"Ġmeiden\":83577,\"_substr\":83578,\"_CSS\":83579,\"ĠSymbols\":83580,\"à¸·à¸Ń\":83581,\"DET\":83582,\"ĠMadden\":83583,\"Ġrequester\":83584,\".virtual\":83585,\"ĠwxDefault\":83586,\"ĠautomÃ¡ticamente\":83587,\"brids\":83588,\"iT\":83589,\".Priority\":83590,\"');</\":83591,\"bung\":83592,\"Deadline\":83593,\"Concrete\":83594,\"ĠnextPage\":83595,\"Ġë°Ľ\":83596,\"ĠStoke\":83597,\"kop\":83598,\"ĠÐ±Ð¾Ð»ÑĮ\":83599,\"ĠProduk\":83600,\"-maker\":83601,\"ĠProjectile\":83602,\"ancellable\":83603,\"ĠTHEIR\":83604,\"ToRemove\":83605,\"EMU\":83606,\"commercial\":83607,\"AVED\":83608,\"Ġweaving\":83609,\"Ġbiome\":83610,\"@Setter\":83611,\"qml\":83612,\"Ġbroaden\":83613,\"ĠÑģÐ¿\":83614,\"ISR\":83615,\"Ġdeactivated\":83616,\"ĠselectedIndex\":83617,\"rious\":83618,\"elps\":83619,\".Escape\":83620,\"Ġpolled\":83621,\"quia\":83622,\"_refl\":83623,\"_mime\":83624,\"<AudioSource\":83625,\"(Transform\":83626,\"evenodd\":83627,\"ĉrandom\":83628,\"locs\":83629,\"Ġdeut\":83630,\"replacement\":83631,\"Ġexaminer\":83632,\"HasKey\":83633,\"Ġë¦¬ìĬ¤íĬ¸\":83634,\"ĠCloth\":83635,\"Ġà¤ª\":83636,\"ĠRegistro\":83637,\"ĠEsther\":83638,\"ĠSharedModule\":83639,\".borrow\":83640,\"Ġoscillator\":83641,\"Ġfools\":83642,\"º«\":83643,\"Ġboasting\":83644,\"_pulse\":83645,\"sharing\":83646,\"Ġpistols\":83647,\"_PLAN\":83648,\"Ġseptember\":83649,\"Ġmuster\":83650,\"ĠmarchÃ©\":83651,\"CHEMY\":83652,\"Ġsui\":83653,\"Ġgebruik\":83654,\".='\":83655,\"errated\":83656,\"ĠLia\":83657,\"Ġhaunt\":83658,\"ĠCush\":83659,\"routeProvider\":83660,\"\\\"|\":83661,\"endphp\":83662,\"\\\"]]Ċ\":83663,\"Ġava\":83664,\"ï¼ģ\\\",\":83665,\"ì§¸\":83666,\"Ġcola\":83667,\"_SPELL\":83668,\"ĠalÃ©m\":83669,\"(Language\":83670,\"(dummy\":83671,\"Ġbunker\":83672,\"ĠEmpresa\":83673,\"ĠcreateContext\":83674,\":min\":83675,\"ĠBOOT\":83676,\"ĠMeredith\":83677,\"Zh\":83678,\"ĠDowning\":83679,\"wjgl\":83680,\".dc\":83681,\"sdale\":83682,\"Ġinconvenient\":83683,\"Ġreadme\":83684,\"NavigationView\":83685,\"CONDITION\":83686,\".dep\":83687,\"ĠrÃ©uss\":83688,\"ĠopciÃ³n\":83689,\"ĠAccountability\":83690,\".Mar\":83691,\"-guid\":83692,\"EDGE\":83693,\"EventManager\":83694,\"Ġdisciple\":83695,\"uckles\":83696,\"}}>\":83697,\"interested\":83698,\"FilterWhere\":83699,\"Ġpuss\":83700,\"-proxy\":83701,\"_statuses\":83702,\"Ġ[#\":83703,\"unfold\":83704,\"ĠRonnie\":83705,\"&&!\":83706,\"Ġacesso\":83707,\"uos\":83708,\"_yield\":83709,\"(calendar\":83710,\"(sound\":83711,\"ĠdataArray\":83712,\"ĠYates\":83713,\"Ġprocession\":83714,\"EFAULT\":83715,\"ĠGHC\":83716,\"amura\":83717,\"Ġstricter\":83718,\".BOTTOM\":83719,\"Ġhabitual\":83720,\"xAF\":83721,\"AVING\":83722,\"Ġsetups\":83723,\"Ġ={Ċ\":83724,\"**(\":83725,\"Ġsok\":83726,\"Ġretina\":83727,\"ĠFireplace\":83728,\"invert\":83729,\"ĠForrest\":83730,\"<data\":83731,\"\\\\Action\":83732,\"OUGH\":83733,\"Ġcareless\":83734,\".getActive\":83735,\"eses\":83736,\"ĠzdjÄĻ\":83737,\"))*(\":83738,\"SEM\":83739,\"ĠPanic\":83740,\"Touches\":83741,\"Ġpreco\":83742,\"/accounts\":83743,\"ä¾Ľ\":83744,\"PostalCodes\":83745,\"-plugins\":83746,\"<message\":83747,\"(power\":83748,\"Ġpercussion\":83749,\"ĠcÃ©l\":83750,\"æİ¨\":83751,\"Ġdanced\":83752,\"_SCANCODE\":83753,\"ĠSitting\":83754,\"ĠLoki\":83755,\"Sharing\":83756,\".Dir\":83757,\"Ġschwer\":83758,\"_LA\":83759,\".MenuStrip\":83760,\"_zeros\":83761,\"Ġfixation\":83762,\"ĠAmit\":83763,\"Ġcomplied\":83764,\".spaceBetween\":83765,\"Ġarresting\":83766,\"ĠSug\":83767,\"Ġperfor\":83768,\"Ġkomple\":83769,\"ĠEssence\":83770,\"Ġplein\":83771,\"simulation\":83772,\"ĠcreatedBy\":83773,\"ĠExpedition\":83774,\"ï¼ģĊĊĊĊ\":83775,\"trainer\":83776,\"\\\"]=$\":83777,\"Ġsuction\":83778,\"mPid\":83779,\"notin\":83780,\"Ġprecios\":83781,\"ĠAssurance\":83782,\"ĠLal\":83783,\".\\\"&\":83784,\"ĠminLength\":83785,\"ĠMinerals\":83786,\"trajectory\":83787,\"SAFE\":83788,\"Ġnuances\":83789,\"(extra\":83790,\"_videos\":83791,\"[]={\":83792,\"Ġhoneymoon\":83793,\"_prep\":83794,\"ĉĉĉĉĉĉĉĉĉĉĠ\":83795,\"Ġpurpos\":83796,\"Ġanzeigen\":83797,\".struts\":83798,\"Ġpagar\":83799,\".AutoSizeMode\":83800,\"Ġweniger\":83801,\"Ġpagan\":83802,\"Ġacidic\":83803,\"gMaps\":83804,\"Ġbeware\":83805,\"_ipc\":83806,\"Ġmeds\":83807,\"ĠdiseÃ±o\":83808,\")))ĊĊĊ\":83809,\"Church\":83810,\"Ġnurturing\":83811,\"_mpi\":83812,\"Ġresultant\":83813,\"ĠPistol\":83814,\"sPid\":83815,\"Msp\":83816,\"Moment\":83817,\"ĠUPLOAD\":83818,\"Nano\":83819,\"blick\":83820,\"Ġmesure\":83821,\"ĠLayers\":83822,\"_traj\":83823,\"ĠbuttonWithType\":83824,\"ĉcommon\":83825,\"ĠMyClass\":83826,\"Ø¨Ø±\":83827,\"xoops\":83828,\"_Height\":83829,\"_WARNINGS\":83830,\"SetText\":83831,\"ĠHispanics\":83832,\"NullPointerException\":83833,\".factor\":83834,\"Ġvielleicht\":83835,\"Ġshouts\":83836,\"trusted\":83837,\"ĠnewRow\":83838,\"ĠFranÃ§\":83839,\"[jj\":83840,\"âĢĶwho\":83841,\"ĠQDir\":83842,\"_advanced\":83843,\"(HaveOccurred\":83844,\"Ġunpl\":83845,\"/ros\":83846,\".easy\":83847,\"ĠBALL\":83848,\"çĿ\":83849,\"/lgpl\":83850,\"Ġsubconscious\":83851,\"Ġ'-';Ċ\":83852,\"Ġ');\":83853,\"ĠÑĸ\":83854,\"Ġscant\":83855,\"_sess\":83856,\"_playing\":83857,\"_ISO\":83858,\"ĠsetSize\":83859,\"_deck\":83860,\"_LARGE\":83861,\"ĠMey\":83862,\"Chicken\":83863,\"iffin\":83864,\"dispose\":83865,\"HEST\":83866,\"Laugh\":83867,\"ĠLCS\":83868,\"Ġonsite\":83869,\".isLoggedIn\":83870,\"Ġirritated\":83871,\"Ġbrigade\":83872,\"Ġdequeue\":83873,\"classNames\":83874,\"ĠMÃ¡s\":83875,\"ĠAtari\":83876,\"(IOException\":83877,\"Rachel\":83878,\"-sample\":83879,\"Ġeigentlich\":83880,\"IFDEF\":83881,\".neighbors\":83882,\"Ġseperate\":83883,\"ĠListings\":83884,\".ff\":83885,\"(import\":83886,\"ModelAttribute\":83887,\"Ġspender\":83888,\"Ġmotifs\":83889,\"ssue\":83890,\"ĠApprentice\":83891,\"-cat\":83892,\"rPid\":83893,\"/////////////////////////////////////////////////////////////////////////////Ċ\":83894,\"ocz\":83895,\"inions\":83896,\"/container\":83897,\"Ġplagiarism\":83898,\"WritableDatabase\":83899,\"/.ĊĊ\":83900,\"ĠFever\":83901,\"-Version\":83902,\"acija\":83903,\"Ġwei\":83904,\"-ing\":83905,\"Ġtemas\":83906,\"Ġsurged\":83907,\"Ġcria\":83908,\"Ġard\":83909,\"bitcoin\":83910,\".timezone\":83911,\"ĠobjectMapper\":83912,\"ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĊ\":83913,\"Ġylim\":83914,\"ĠICU\":83915,\"ĠDeprecated\":83916,\")();Ċ\":83917,\"ARGER\":83918,\"ungalow\":83919,\"TestData\":83920,\"(pts\":83921,\"FILENAME\":83922,\"upply\":83923,\"Ġpacientes\":83924,\",left\":83925,\"ĠWriteLine\":83926,\"Ġparcels\":83927,\"_folders\":83928,\"ĠDirk\":83929,\".assertIsInstance\":83930,\"McC\":83931,\"_Variable\":83932,\"(aa\":83933,\"ĠPork\":83934,\".Publish\":83935,\"-gay\":83936,\"ĠPetra\":83937,\"ĠConnecting\":83938,\"TabControl\":83939,\"ivering\":83940,\"(Screen\":83941,\"Ġchilled\":83942,\"Ġaio\":83943,\"TouchEvent\":83944,\"Ġaccession\":83945,\"ĠLois\":83946,\"/moment\":83947,\"ĠanvÃ¤nd\":83948,\"Ġsuicides\":83949,\"(help\":83950,\"anders\":83951,\"ĠVID\":83952,\"Bei\":83953,\"evento\":83954,\"ĠAngus\":83955,\"Vers\":83956,\"ĠBordeaux\":83957,\".streaming\":83958,\"Ġrouge\":83959,\"Ġcraftsmanship\":83960,\"ossil\":83961,\"_FALL\":83962,\"@media\":83963,\"ileaks\":83964,\"DataService\":83965,\"ĠTripAdvisor\":83966,\"ĠMaar\":83967,\"Curso\":83968,\"PostalCodesNL\":83969,\"();++\":83970,\"$PostalCodesNL\":83971,\"Ġocor\":83972,\"Ġtainted\":83973,\"Ġlem\":83974,\"-outs\":83975,\"Ġxxxx\":83976,\"Ġirritating\":83977,\"oxid\":83978,\"ointed\":83979,\"ĠToro\":83980,\"_ov\":83981,\".birth\":83982,\"+%\":83983,\"ĠCharacteristics\":83984,\"ĠBetting\":83985,\"Ġoffend\":83986,\"ĠPHYS\":83987,\"ĠICMP\":83988,\"xDC\":83989,\"ĠCd\":83990,\".getMap\":83991,\"atchet\":83992,\".currentIndex\":83993,\"ERAL\":83994,\"Ġkappa\":83995,\"idences\":83996,\"Paren\":83997,\"ĠSergei\":83998,\"-fin\":83999,\"'],['\":84000,\"Ã¡mara\":84001,\"Growing\":84002,\"Glass\":84003,\"ĉmeta\":84004,\"verbatim\":84005,\"/GPL\":84006,\"ĠKah\":84007,\"(svg\":84008,\"clist\":84009,\"ĠBlowjob\":84010,\"occan\":84011,\".abort\":84012,\"odelist\":84013,\"ĠdiffÃ©rents\":84014,\"_OPTS\":84015,\"=req\":84016,\"Ġintox\":84017,\"Ġdiagon\":84018,\"Ġ[(\\\"\":84019,\"&R\":84020,\"Ġobjectively\":84021,\"Ġblinking\":84022,\"ĠLoves\":84023,\"ringe\":84024,\"*);ĊĊ\":84025,\"ĠBonds\":84026,\"ĠLoved\":84027,\"elts\":84028,\"Ġdisparate\":84029,\"ĠEnrique\":84030,\"\\\"With\":84031,\"remium\":84032,\"ajaran\":84033,\"trying\":84034,\"-Russian\":84035,\"newInstance\":84036,\".TRAN\":84037,\"Ġoranges\":84038,\"/locale\":84039,\"ĠDISP\":84040,\"ĉns\":84041,\"ĠShutterstock\":84042,\"ĠCLOCK\":84043,\"(rad\":84044,\"Ġassurances\":84045,\"Ġrasp\":84046,\"Ubergraph\":84047,\"Emily\":84048,\"Ġinventions\":84049,\"riot\":84050,\"Ġtossing\":84051,\"Ġmakeover\":84052,\"ĠunitOfWork\":84053,\"buttonShape\":84054,\"åĪĿå§ĭåĮĸ\":84055,\"Ġparted\":84056,\"âĸĳ\":84057,\".sigmoid\":84058,\"Ġredirection\":84059,\"Ġdisturbances\":84060,\"Ġintimidated\":84061,\"ĉCreated\":84062,\"aget\":84063,\"Ġcorres\":84064,\"ĠNEG\":84065,\"itone\":84066,\"/front\":84067,\"ĠVerse\":84068,\"gambar\":84069,\"Ġpremiered\":84070,\"ĠIMO\":84071,\"ĠGobierno\":84072,\"Ġifs\":84073,\"ayah\":84074,\".COL\":84075,\"Ġfreder\":84076,\"Ġsubmerged\":84077,\"ĠNero\":84078,\"modifiable\":84079,\"/Footer\":84080,\"-central\":84081,\"Ġgouver\":84082,\"ĠTried\":84083,\"Ġdizzy\":84084,\"QueryParam\":84085,\"\\\">'+Ċ\":84086,\"_primitive\":84087,\"ç¨İ\":84088,\".gpu\":84089,\"Ġvoz\":84090,\"enze\":84091,\"ĠWilderness\":84092,\"Ġprobabil\":84093,\"/rec\":84094,\"Ġacces\":84095,\"ĠTrustees\":84096,\"Gb\":84097,\"ĠpaddingHorizontal\":84098,\"Shield\":84099,\"ĠNamen\":84100,\"uddled\":84101,\"ĠPriorityQueue\":84102,\"Poor\":84103,\"ĠSAF\":84104,\"--[[\":84105,\"Ġchlorine\":84106,\"Ġverbally\":84107,\"Ġaire\":84108,\">;čĊ\":84109,\"ilha\":84110,\"[color\":84111,\"andalone\":84112,\".addRow\":84113,\"ĠSok\":84114,\"ĠConor\":84115,\"Ġmejorar\":84116,\"'ils\":84117,\"detalle\":84118,\"Ġ\\\"),Ċ\":84119,\"%@\":84120,\".lazy\":84121,\".jump\":84122,\"oste\":84123,\"+F\":84124,\"Ġinfuri\":84125,\"Ġsonra\":84126,\"itemid\":84127,\"$log\":84128,\"Ġmurderous\":84129,\"LEC\":84130,\"ĉnil\":84131,\"ĠMÃ¤r\":84132,\"(pg\":84133,\"ileo\":84134,\"Ascii\":84135,\"ĠLockheed\":84136,\"ĠTheo\":84137,\"Bell\":84138,\"acionales\":84139,\".createNew\":84140,\"Ġå¾\":84141,\"-football\":84142,\"Ġecommerce\":84143,\"ĉSimple\":84144,\"cly\":84145,\".InnerException\":84146,\"Ġpesos\":84147,\"Ġtrope\":84148,\"ĠARGS\":84149,\"Miami\":84150,\"ĠPalo\":84151,\"ĠSuzanne\":84152,\"_mappings\":84153,\"#{@\":84154,\"ĠOccupational\":84155,\"_buckets\":84156,\"goals\":84157,\"_Run\":84158,\"-prepend\":84159,\"sss\":84160,\"marshall\":84161,\"Ġequivalence\":84162,\"ĠWelch\":84163,\"(OpCodes\":84164,\"ĉclock\":84165,\"ĠMedina\":84166,\"TERS\":84167,\"orang\":84168,\"Thought\":84169,\"Ġoats\":84170,\"_TEX\":84171,\"RICS\":84172,\"Ġindifference\":84173,\"Ġallot\":84174,\".UseText\":84175,\"ĠTricks\":84176,\"awe\":84177,\".FILL\":84178,\"-php\":84179,\".voice\":84180,\"ĠPathfinder\":84181,\"_TAGS\":84182,\"ĠTrit\":84183,\"æĮīéĴ®\":84184,\"bbc\":84185,\"Ġadditives\":84186,\"Ġschle\":84187,\"ĠKeyboardInterrupt\":84188,\"ĠuseParams\":84189,\"ĠBuchanan\":84190,\"riangle\":84191,\"Ġmultiplying\":84192,\"Ġselber\":84193,\"ĠYep\":84194,\"Chair\":84195,\"-reported\":84196,\"_SDK\":84197,\",no\":84198,\"ĠFalling\":84199,\"æ¹\":84200,\"Ġ(),Ċ\":84201,\"pdb\":84202,\"ĠBorough\":84203,\".removeFrom\":84204,\"Ġovershadow\":84205,\"igail\":84206,\"Ġtung\":84207,\"Ġmmc\":84208,\"[parent\":84209,\"Extern\":84210,\"aviolet\":84211,\"')\\\"Ċ\":84212,\"Ġcountertops\":84213,\"Ġubuntu\":84214,\"æ·\":84215,\"ĠÎĵ\":84216,\"Ġunpublished\":84217,\"ĠIndies\":84218,\"UNET\":84219,\"Ġoferta\":84220,\"Ġdames\":84221,\"Ġasteroids\":84222,\"Ġnovember\":84223,\"contrast\":84224,\".AddModelError\":84225,\"+Sans\":84226,\"Ġscrambling\":84227,\"textView\":84228,\"/crypto\":84229,\"UseProgram\":84230,\"@update\":84231,\"Desde\":84232,\"SAT\":84233,\"Ġdisple\":84234,\"annÃ©e\":84235,\"\\\\DependencyInjection\":84236,\"Ġitm\":84237,\"Ġç¼\":84238,\"Ġethos\":84239,\"APO\":84240,\"ĠGarcÃŃa\":84241,\"idis\":84242,\"ĠSteak\":84243,\"riba\":84244,\"_verification\":84245,\"ĠFK\":84246,\"ĠEinsatz\":84247,\"Ġpersonalised\":84248,\"-motion\":84249,\"ĠMelanie\":84250,\"Ã¶h\":84251,\"_VC\":84252,\"Ġdrifting\":84253,\".construct\":84254,\"ĠíĶĦ\":84255,\"Ġbatching\":84256,\"../../../../\":84257,\"ERP\":84258,\"_utc\":84259,\"Ġmultit\":84260,\"Ġmrb\":84261,\"ccak\":84262,\"chunks\":84263,\"Ġtranslucent\":84264,\"Ġpayoff\":84265,\"âĢĶan\":84266,\"Ġsill\":84267,\"Ġornaments\":84268,\"gua\":84269,\"UBY\":84270,\"(steps\":84271,\"ĠBORDER\":84272,\"ĠSOUND\":84273,\"``Ċ\":84274,\"enaries\":84275,\"ĠBitte\":84276,\"Ġglyphs\":84277,\"Ġoverrun\":84278,\"ĠblockIdx\":84279,\"ĠMST\":84280,\"Ġgenomes\":84281,\"tensorflow\":84282,\"DirectoryName\":84283,\"_lhs\":84284,\"Ġfint\":84285,\"addtogroup\":84286,\"Ġsteadfast\":84287,\"Ġcloves\":84288,\"ĠSoviets\":84289,\"ĠISA\":84290,\"Â£o\":84291,\"urgery\":84292,\"sov\":84293,\"ĠÐ²ÑĭÐ²Ð¾Ð´\":84294,\"Ġpud\":84295,\"-watch\":84296,\"ĠHospitals\":84297,\"}while\":84298,\"########################\":84299,\"á»£\":84300,\"Ġaktual\":84301,\"Ġkilograms\":84302,\"ĠFAC\":84303,\"ophys\":84304,\"prs\":84305,\"*@\":84306,\"yb\":84307,\"secured\":84308,\"ĠalgÃºn\":84309,\"Ġà¤¹\":84310,\"phans\":84311,\"Addon\":84312,\"Ġcentrally\":84313,\"_SUITE\":84314,\"Interesting\":84315,\"ultimo\":84316,\"Against\":84317,\"ĠEzra\":84318,\"ĠHeb\":84319,\"uida\":84320,\"Ġskys\":84321,\"OLVE\":84322,\"Benefits\":84323,\"Ġprise\":84324,\".*?)\":84325,\".isDefined\":84326,\"Ġstandoff\":84327,\"Ġplano\":84328,\".latest\":84329,\"Ġ($.\":84330,\"ĠGould\":84331,\"Ġcautioned\":84332,\"'](\":84333,\"Ġnuit\":84334,\"ĠHCI\":84335,\"football\":84336,\"Ġwillen\":84337,\"Proceed\":84338,\"Ġintending\":84339,\"tif\":84340,\"Ġsponsoring\":84341,\"ohana\":84342,\"Dos\":84343,\"Morning\":84344,\"Ġ!\\\");Ċ\":84345,\".shell\":84346,\"ĠRELATED\":84347,\"Ġpimp\":84348,\"/course\":84349,\"Ġramifications\":84350,\"Ġpixmap\":84351,\"Ġpowerless\":84352,\"Ġdouche\":84353,\"crime\":84354,\"contributors\":84355,\"(protocol\":84356,\"ĠgetPosition\":84357,\"SETTINGS\":84358,\"Ġviet\":84359,\"isses\":84360,\"WithEmailAndPassword\":84361,\"ReturnType\":84362,\"Appe\":84363,\"ĠIKE\":84364,\".Cookies\":84365,\".medium\":84366,\".getJSONArray\":84367,\"_For\":84368,\"/tinyos\":84369,\"ĠTableCell\":84370,\"ĠREPLACE\":84371,\".Networking\":84372,\"Ġbowed\":84373,\"ĉmd\":84374,\"=\\\"{!!\":84375,\"Ġhonda\":84376,\"ĠEur\":84377,\"Ġindonesia\":84378,\"Ġhend\":84379,\".viewmodel\":84380,\"ĉctrl\":84381,\"ĠTablets\":84382,\"-orange\":84383,\"erras\":84384,\"_graphics\":84385,\"{s\":84386,\"ĠTitles\":84387,\"Ġdiagnoses\":84388,\"ouple\":84389,\"_Double\":84390,\"[result\":84391,\"Ġjitter\":84392,\"_NUMERIC\":84393,\">f\":84394,\"_MY\":84395,\"Ð¸ÑģÑĤÐµÐ¼\":84396,\"storeId\":84397,\"Ġrelinqu\":84398,\"eos\":84399,\"Ġwidening\":84400,\"Ġtacos\":84401,\".YES\":84402,\"]+'\":84403,\"ĠIndexed\":84404,\"Ġprofessionnel\":84405,\"ĠStrap\":84406,\"BufferData\":84407,\"eea\":84408,\"erin\":84409,\"ANCES\":84410,\"_TXT\":84411,\"Ġ{}.\":84412,\"(contract\":84413,\"yw\":84414,\"Ġblindness\":84415,\"CHAN\":84416,\"ĉglColor\":84417,\"ĠcurrentPosition\":84418,\"ĠCaucasian\":84419,\"$img\":84420,\"#aa\":84421,\"Ġsean\":84422,\"Mess\":84423,\"*=*=\":84424,\"Ġcapacitor\":84425,\"alfa\":84426,\".RemoveAll\":84427,\"ĠWPARAM\":84428,\"ulado\":84429,\"nicos\":84430,\"Ġorgy\":84431,\"GX\":84432,\"_DEVICES\":84433,\"ourke\":84434,\"ĠkB\":84435,\"Ġsophistication\":84436,\"_audit\":84437,\"/IP\":84438,\"ĠLyft\":84439,\"/St\":84440,\"ĉcancel\":84441,\"Ġovarian\":84442,\"marine\":84443,\"kÄĻ\":84444,\"ĠYM\":84445,\"ĠMilo\":84446,\"ĠMatTable\":84447,\"ĠAbby\":84448,\"nze\":84449,\"ĠLudwig\":84450,\"_armor\":84451,\"Ġscaffold\":84452,\"á»Ĺi\":84453,\"authority\":84454,\"áº¥y\":84455,\".getProduct\":84456,\"ĠOrbit\":84457,\"_Parameter\":84458,\".dateFormat\":84459,\"/tags\":84460,\".Speed\":84461,\"(Line\":84462,\"Ġpolishing\":84463,\"Ġkomb\":84464,\"Ġrtrim\":84465,\"'icon\":84466,\"riere\":84467,\"ĠPrefer\":84468,\"strtolower\":84469,\"Regs\":84470,\"CBD\":84471,\"->Ċ\":84472,\"Ġparasite\":84473,\"endsWith\":84474,\"ĠCobra\":84475,\":test\":84476,\"ĠNuggets\":84477,\"Å¡t\":84478,\"CoreApplication\":84479,\"/bind\":84480,\"ĠMcInt\":84481,\"itunes\":84482,\"[--\":84483,\"ĠSurprise\":84484,\"_ING\":84485,\"ĠFaster\":84486,\"ÐĿÐ°\":84487,\":E\":84488,\"Ġdint\":84489,\"nge\":84490,\".\\\"','\\\".$\":84491,\"Ġadjective\":84492,\".bc\":84493,\"consume\":84494,\"BOR\":84495,\"(anchor\":84496,\"Ġesteem\":84497,\"Ġbreakup\":84498,\"decay\":84499,\"Ġ$ĊĊ\":84500,\"Edward\":84501,\"ASI\":84502,\"Ġattaches\":84503,\"_DISK\":84504,\"ĠWilmington\":84505,\"ĠKul\":84506,\"Ġ[[]\":84507,\"ĠDepartments\":84508,\"ĠreturnType\":84509,\"ĠUNITED\":84510,\"objective\":84511,\"Ġgirlfriends\":84512,\"_GU\":84513,\"@store\":84514,\"-Out\":84515,\".moves\":84516,\"(startDate\":84517,\"ĉJButton\":84518,\"ĠPace\":84519,\"ĠBeats\":84520,\"Ġlicz\":84521,\"Ġethereum\":84522,\"Ġcheered\":84523,\"Ġaucun\":84524,\"Regarding\":84525,\"Ġmigrating\":84526,\"Ġfutile\":84527,\"ĠTacoma\":84528,\"_Character\":84529,\"Ġvg\":84530,\"ĠCopa\":84531,\"Ø«\":84532,\"Ġnal\":84533,\"Ġlandfill\":84534,\"Ġtamil\":84535,\"Ġperpetrator\":84536,\"ĠPacers\":84537,\".getOrder\":84538,\"|čĊ\":84539,\"GetObject\":84540,\"Ġbla\":84541,\"ĠHaram\":84542,\"portlet\":84543,\"Ġlokal\":84544,\"Merchant\":84545,\"Passwords\":84546,\"onent\":84547,\"Ġarteries\":84548,\"ĠIntelli\":84549,\"\\\\System\":84550,\"=localhost\":84551,\".avi\":84552,\"ĠVend\":84553,\"(tbl\":84554,\"Correction\":84555,\"Ġuterus\":84556,\"Ġsaliva\":84557,\"++;čĊčĊ\":84558,\"('*',\":84559,\"Ġsnatch\":84560,\"ĠSTREET\":84561,\")[:\":84562,\"çĦ¡ãģĹãģ\":84563,\"Sentence\":84564,\"().'/\":84565,\":relative\":84566,\"ķãĤĵ\":84567,\"_userid\":84568,\"oling\":84569,\"ĠClash\":84570,\"ĉsetup\":84571,\"(mi\":84572,\"Ġjit\":84573,\"ĠScandinavian\":84574,\"ĠPhones\":84575,\"\\\"';Ċ\":84576,\"Ġtumult\":84577,\"ĠIntl\":84578,\"ĠSinn\":84579,\"(news\":84580,\"Ġdbs\":84581,\"ĠRemarks\":84582,\"Kitchen\":84583,\"Ġadmirable\":84584,\"_dash\":84585,\"ĠDOMAIN\":84586,\"addListener\":84587,\"\\\"].(\":84588,\"ĉMethod\":84589,\"markt\":84590,\",exports\":84591,\"Ġoutnumber\":84592,\"_ASC\":84593,\"premium\":84594,\")NULL\":84595,\"ĠBowman\":84596,\".setOnItemClickListener\":84597,\"ĠRegexOptions\":84598,\"Kel\":84599,\"/mat\":84600,\"ãģĵãĤĮ\":84601,\"Ġwearer\":84602,\"inis\":84603,\"[dim\":84604,\"ĠNutzung\":84605,\"isbury\":84606,\"åĪĿ\":84607,\"ĠrootReducer\":84608,\"eyJ\":84609,\"Included\":84610,\"-League\":84611,\"anax\":84612,\"(inflater\":84613,\"ĠFieldType\":84614,\"Ġshove\":84615,\"Ġfullfile\":84616,\"DataManager\":84617,\".getLeft\":84618,\"ĠFs\":84619,\"dropout\":84620,\"Ġë²Ī\":84621,\"ĠmaniÃ¨re\":84622,\"Ġflaming\":84623,\"Ġcompletamente\":84624,\"âĢ°\":84625,\"|.\":84626,\"Enemies\":84627,\"osci\":84628,\"ĠSAY\":84629,\"Ġmary\":84630,\"(RuntimeObject\":84631,\"Ġ~>\":84632,\"ĠSimpsons\":84633,\"'].$\":84634,\"_membership\":84635,\")\\\":\":84636,\"ĠlayoutManager\":84637,\"ĠRockefeller\":84638,\"Ġ'|'\":84639,\"IPH\":84640,\"DON\":84641,\"achte\":84642,\"Peace\":84643,\"htar\":84644,\"@\\\"Ċ\":84645,\"Ġtreadmill\":84646,\"Ġspurred\":84647,\"ĠKV\":84648,\"midd\":84649,\"Ġflowed\":84650,\"Ã£este\":84651,\"Genesis\":84652,\"==>\":84653,\"ĠVentura\":84654,\"_elim\":84655,\"ĠÐ¸Ð¼Ñı\":84656,\"Ġsongwriter\":84657,\"createForm\":84658,\"IGHL\":84659,\"Ġmolded\":84660,\"Ġrevered\":84661,\"UnderTest\":84662,\"imbledon\":84663,\"_Session\":84664,\"Ġmascot\":84665,\"Ġalf\":84666,\"ë©Ķ\":84667,\">Welcome\":84668,\"Ġknocks\":84669,\"ĠEquation\":84670,\".touches\":84671,\"_Last\":84672,\"Ġupbeat\":84673,\"bigint\":84674,\"Ġenvis\":84675,\"/banner\":84676,\"ãģĤãĤĬãģĮ\":84677,\"ĠDowns\":84678,\"_SF\":84679,\"ĠrunApp\":84680,\"Ġquesti\":84681,\"Traditional\":84682,\"_waiting\":84683,\"pickup\":84684,\"('@/\":84685,\"ĉse\":84686,\"ĠKern\":84687,\"ĠDelicious\":84688,\"Ġsaturn\":84689,\"ĠJSONException\":84690,\"ãĤį\":84691,\"JR\":84692,\"}());Ċ\":84693,\"ĠSomali\":84694,\"uai\":84695,\"imagem\":84696,\"andFilterWhere\":84697,\"Ã¨les\":84698,\"inbox\":84699,\"ĠyapÄ±\":84700,\"Ġmeisten\":84701,\"`](\":84702,\"SWG\":84703,\",class\":84704,\"àµįà´\":84705,\"taient\":84706,\"ĠFranÃ§ois\":84707,\"AuthToken\":84708,\"Ġpuesto\":84709,\"Ġjl\":84710,\"Ġgated\":84711,\"ĠDeaths\":84712,\"ĠSidd\":84713,\"Ġprevailed\":84714,\"-Ãªtre\":84715,\"(album\":84716,\"Ġqint\":84717,\"marca\":84718,\"ĠNAFTA\":84719,\"Ġtightened\":84720,\"_GAP\":84721,\"ENSIONS\":84722,\"ĠLibertarian\":84723,\"_stylesheet\":84724,\".SetInt\":84725,\"_publisher\":84726,\"pageNumber\":84727,\"zsche\":84728,\"ĠSQLAlchemy\":84729,\"Ġhoof\":84730,\"getToken\":84731,\"Ġneben\":84732,\"lund\":84733,\".mit\":84734,\"errs\":84735,\".setMinimum\":84736,\"-priced\":84737,\"(po\":84738,\"engage\":84739,\"_FT\":84740,\"//ĊĊĊ\":84741,\"Ġtome\":84742,\"Ġ\\\"></\":84743,\"Vectors\":84744,\"ĠTestUtils\":84745,\"filtr\":84746,\"Usu\":84747,\"ĠdictionaryWith\":84748,\"Ġobras\":84749,\"ĠBDSM\":84750,\".getTarget\":84751,\"Ġallowable\":84752,\"ĠInserts\":84753,\"ĉNone\":84754,\"Ġliberated\":84755,\"Kent\":84756,\"ĠWishlist\":84757,\"ĠLager\":84758,\"Ġjuin\":84759,\"Ġnues\":84760,\"Ġmonastery\":84761,\"Ġmicroseconds\":84762,\"ĠHanna\":84763,\"Ð¾ÑģÑĤÐ¸\":84764,\"weapons\":84765,\"_spot\":84766,\"odom\":84767,\".ModelForm\":84768,\"Ġorderly\":84769,\"FINITE\":84770,\"Ġresidences\":84771,\"_tC\":84772,\"CGColor\":84773,\"ĠÅ¾e\":84774,\"Ġscreenplay\":84775,\"Ġpymongo\":84776,\"ĠdÃ©t\":84777,\"Ġdesta\":84778,\"ĠNeuroscience\":84779,\"niest\":84780,\"@GeneratedValue\":84781,\"ELSE\":84782,\"<l\":84783,\"Ġdisjoint\":84784,\".published\":84785,\"ellan\":84786,\"ĠStringWriter\":84787,\".Broadcast\":84788,\"ĠFeinstein\":84789,\"amphetamine\":84790,\"KeySpec\":84791,\"ĠGrimm\":84792,\"ettel\":84793,\"à¸ľ\":84794,\"Ot\":84795,\"ibraltar\":84796,\"ceb\":84797,\"Ġtimings\":84798,\"inee\":84799,\"ĠAndrÃ©\":84800,\"Essay\":84801,\".jd\":84802,\"ĠBundesliga\":84803,\"Returned\":84804,\"Ġappalling\":84805,\".BigInteger\":84806,\"ĠSEN\":84807,\"ĠHomemade\":84808,\".chapter\":84809,\"-valid\":84810,\"ĠATTRIBUTE\":84811,\"ustria\":84812,\"ĠentÃ£o\":84813,\"Returning\":84814,\"vertiser\":84815,\".PackageManager\":84816,\"Clark\":84817,\"Ġquotas\":84818,\"ĠscaleFactor\":84819,\"Ġcoz\":84820,\"_mini\":84821,\"Ġmutated\":84822,\".activation\":84823,\"*math\":84824,\".vertx\":84825,\"<article\":84826,\"Ġembroidery\":84827,\"/business\":84828,\"ckett\":84829,\"scientific\":84830,\"ĠGiles\":84831,\"Ġracer\":84832,\"_performance\":84833,\"Ġlaminate\":84834,\"ĠPHI\":84835,\"RÃ©\":84836,\"ĠAthe\":84837,\"coles\":84838,\"ĠsaÄŁ\":84839,\"ĠInkWell\":84840,\"ĉsig\":84841,\"Ġspaceship\":84842,\"Ġinsol\":84843,\"ĠUClass\":84844,\".leadingAnchor\":84845,\"totals\":84846,\"Ġsprinkle\":84847,\"ĠModular\":84848,\"Ġ'\\\\\\\"\":84849,\"oron\":84850,\".ReadAllText\":84851,\"ĠĠĠĠĉčĊ\":84852,\"/ion\":84853,\"DEPTH\":84854,\"_minimum\":84855,\"\\\\Cache\":84856,\"Ġdiversified\":84857,\"ignet\":84858,\"Ġdojo\":84859,\"ĠUIAlertView\":84860,\"/tty\":84861,\"ĠSass\":84862,\"Ġ/\\\\.(\":84863,\"ĠIMAGES\":84864,\"Ġdatingsider\":84865,\"ĠExplos\":84866,\".genre\":84867,\"\\\\Events\":84868,\"Ġenumerated\":84869,\"currentState\":84870,\"itrust\":84871,\"CallableWrapper\":84872,\"Founded\":84873,\"Ġroyalties\":84874,\"(Properties\":84875,\"ĠUSPS\":84876,\"-----------čĊ\":84877,\".ReadToEnd\":84878,\"Ġcosy\":84879,\"Ġape\":84880,\"_definitions\":84881,\"ĠpageNo\":84882,\"Ġdzieci\":84883,\"standen\":84884,\"Ġbesar\":84885,\"itin\":84886,\"Ġconsequat\":84887,\"Ġprv\":84888,\"Ġsplitted\":84889,\"Ġesposa\":84890,\"=findViewById\":84891,\"Walker\":84892,\"ĠHearth\":84893,\"ibrator\":84894,\"otomy\":84895,\"aggable\":84896,\"Ġå½ĵ\":84897,\"ï¼ģ');Ċ\":84898,\"ionate\":84899,\"/year\":84900,\"ĠsetC\":84901,\"ĠMediaTek\":84902,\"-boy\":84903,\".toolStripMenuItem\":84904,\"Configs\":84905,\"attended\":84906,\"Ġemoc\":84907,\"ĠBai\":84908,\"opolitan\":84909,\"Ġintrusive\":84910,\"Ġzug\":84911,\"Ġffmpeg\":84912,\"_boost\":84913,\"Ġmozilla\":84914,\"Ġslicing\":84915,\"WG\":84916,\"pagesize\":84917,\"PropertyDescriptor\":84918,\"ĠAlejandro\":84919,\"USES\":84920,\"Hosting\":84921,\"Ġrisking\":84922,\"ĠInvite\":84923,\"ĠJazeera\":84924,\"Ġregained\":84925,\"ĠHague\":84926,\"Ġguerra\":84927,\"Ġenclosing\":84928,\"']\\\")Ċ\":84929,\"<Transform\":84930,\".NORTH\":84931,\"Ġcrim\":84932,\"INU\":84933,\"Ġclen\":84934,\"ĠMothers\":84935,\"ĠOwnership\":84936,\"Drink\":84937,\"Ġbeberapa\":84938,\".onerror\":84939,\")+Ċ\":84940,\"ĠtabIndex\":84941,\"ĠDio\":84942,\"ĠForty\":84943,\"(Link\":84944,\"Ġsegmented\":84945,\"Ġjames\":84946,\"ĠTargets\":84947,\"ĠRTS\":84948,\"ĠÐºÐ½Ð¾Ð¿\":84949,\"Ġvarias\":84950,\"ĠtÃŃtulo\":84951,\"ĠdÃ¼r\":84952,\"/Game\":84953,\"ransition\":84954,\"Ġdistinguishing\":84955,\"uktur\":84956,\"anje\":84957,\"ĠMcCabe\":84958,\"pai\":84959,\"(tk\":84960,\"Destructor\":84961,\"GameObjectWithTag\":84962,\"$h\":84963,\"Ġafr\":84964,\".setEmail\":84965,\"Ġrepetitions\":84966,\"landers\":84967,\"ĠShea\":84968,\"_claim\":84969,\"Ġacess\":84970,\"Benchmark\":84971,\".Est\":84972,\".PO\":84973,\"ĠNÃ¤\":84974,\"Ġitching\":84975,\"Ġcondominium\":84976,\"_FWD\":84977,\"Ġrealtime\":84978,\"Ġcivilized\":84979,\"_physical\":84980,\"Ral\":84981,\"Ġwinters\":84982,\"ĠYad\":84983,\"Ġfora\":84984,\"Ġcalibrated\":84985,\"Pets\":84986,\"Ġstormed\":84987,\"Ġjel\":84988,\"ĠSSP\":84989,\"datagrid\":84990,\"ĠLau\":84991,\"unar\":84992,\"ulfilled\":84993,\"ERING\":84994,\"ĠTrio\":84995,\"Ø±ÙĪ\":84996,\"ForegroundColor\":84997,\"=out\":84998,\"/******************************************************************************/Ċ\":84999,\"Ġvient\":85000,\"ĠADM\":85001,\"_Connection\":85002,\"-cancel\":85003,\"('.');Ċ\":85004,\"Ġsails\":85005,\"Ġequivalents\":85006,\"Nb\":85007,\"Ġflyers\":85008,\"ĠGIR\":85009,\"kelig\":85010,\"-wall\":85011,\".Requires\":85012,\"Ġcose\":85013,\"ĠANC\":85014,\"Ġjade\":85015,\"ĠAlec\":85016,\"Ġendregion\":85017,\"ĠEXTI\":85018,\"edere\":85019,\"Terrain\":85020,\"Specifications\":85021,\"ĠSweep\":85022,\"setItem\":85023,\"Ġsmirk\":85024,\"Ġscripted\":85025,\"[System\":85026,\"ç§ģ\":85027,\"Ġsynced\":85028,\"Ġsqr\":85029,\"gewater\":85030,\"Ġjewels\":85031,\"Ġhdc\":85032,\"à¥įà¤°\":85033,\"ÏĨ\":85034,\"Ã¼sseldorf\":85035,\"lien\":85036,\"Borders\":85037,\"ĠAtomicInteger\":85038,\"Ġparalysis\":85039,\"Classification\":85040,\"Ġglide\":85041,\"Ġump\":85042,\"Ġ/>}\":85043,\"Ġvending\":85044,\"à¸´à¸Ļ\":85045,\"notif\":85046,\"&_\":85047,\"ĠEmerging\":85048,\"aticon\":85049,\"Ġpropagated\":85050,\"-orders\":85051,\"agas\":85052,\"urgent\":85053,\"(TimeSpan\":85054,\"ALCHEMY\":85055,\"/bower\":85056,\"ìĤ°\":85057,\".boost\":85058,\".dependencies\":85059,\".SwingConstants\":85060,\"untlet\":85061,\".chars\":85062,\"-cigarettes\":85063,\"ĠMods\":85064,\"ĠĠĠĠĠĉ\":85065,\"Ġbravery\":85066,\"Ġcountered\":85067,\"relude\":85068,\"_mob\":85069,\"AINED\":85070,\"ngoing\":85071,\"Ġundergrad\":85072,\"GetMethod\":85073,\"Dual\":85074,\"_journal\":85075,\",No\":85076,\"Ġsidel\":85077,\"ĠLarson\":85078,\"+\\\",\\\"+\":85079,\"Ġnarration\":85080,\"ĠSubway\":85081,\"ĠLexer\":85082,\"ĠNing\":85083,\"indic\":85084,\"thane\":85085,\".SIG\":85086,\"-earth\":85087,\"Ġberry\":85088,\"ĠTeuchos\":85089,\"ĉEntity\":85090,\"erspective\":85091,\"Nos\":85092,\"ĠOwned\":85093,\"BUR\":85094,\"Ġlineno\":85095,\"ĠFiji\":85096,\"GetInt\":85097,\"StringRef\":85098,\"Ġ'&'\":85099,\"uada\":85100,\".caption\":85101,\"appName\":85102,\"(off\":85103,\"Ġverst\":85104,\"Ġtypo\":85105,\"éľĢè¦ģ\":85106,\"aterangepicker\":85107,\"Ġqemu\":85108,\"ĠGEO\":85109,\"_Cl\":85110,\".IT\":85111,\"ĠNunes\":85112,\"[Z\":85113,\"ĠCompletely\":85114,\".Live\":85115,\"ĠJas\":85116,\"Ġweit\":85117,\"cosity\":85118,\"Ġpolicemen\":85119,\"(targets\":85120,\"itledBorder\":85121,\"Ġè§£\":85122,\".Glide\":85123,\"Ġdemonic\":85124,\"Interior\":85125,\"------------------------------\":85126,\"ĠDota\":85127,\"Ġorbits\":85128,\"AMY\":85129,\"ĠTrinidad\":85130,\"icum\":85131,\".za\":85132,\"ĠgetInt\":85133,\"Atlanta\":85134,\"Ġamnesty\":85135,\"ĠRahul\":85136,\"Ġ_|\":85137,\"hiro\":85138,\"ĠTAKE\":85139,\"Ġjumlah\":85140,\"ĠAutomobile\":85141,\"á»ı\":85142,\"whose\":85143,\"_SAMPL\":85144,\"Patients\":85145,\"ĠÑĤÐµÐºÑĥÑī\":85146,\".subscriptions\":85147,\"ĠMention\":85148,\"ToWorld\":85149,\"ipa\":85150,\"ĉMessageBox\":85151,\"<ApplicationUser\":85152,\"ĠØ¥\":85153,\"fabric\":85154,\"keletal\":85155,\"BarButton\":85156,\"Ġarchetype\":85157,\"instant\":85158,\"Ġinternacional\":85159,\"ĠVoyager\":85160,\"(touch\":85161,\"ĠValk\":85162,\"/MIT\":85163,\"Ġcaul\":85164,\"'Connor\":85165,\"(\\\"!\":85166,\"(OP\":85167,\"faculty\":85168,\"ĠBaton\":85169,\"ĠVolunteers\":85170,\"tank\":85171,\"_BINDING\":85172,\";line\":85173,\"ĠVersions\":85174,\"YLES\":85175,\"Ġjeep\":85176,\"(Encoding\":85177,\"Ġgeological\":85178,\"Nich\":85179,\"(pdf\":85180,\"Ġanalyzes\":85181,\"Ġcaptivating\":85182,\"Ġhizo\":85183,\".mdl\":85184,\"Ġjap\":85185,\"Ġflips\":85186,\"ĉdf\":85187,\"ĠPiet\":85188,\"Ġnrows\":85189,\"Ġkamu\":85190,\"ĠÐ²Ð¾Ð·\":85191,\"Ġpruning\":85192,\"acula\":85193,\"Ġtraveller\":85194,\"Shoot\":85195,\".epsilon\":85196,\"ĠFleming\":85197,\"ibur\":85198,\"operate\":85199,\"ighter\":85200,\"Ġbegs\":85201,\"ĠWalnut\":85202,\"(Parser\":85203,\"Ġwithdrawals\":85204,\"iscopal\":85205,\"Ġbillboard\":85206,\"kek\":85207,\"-opening\":85208,\"ĠDude\":85209,\"coni\":85210,\"xEB\":85211,\"Ġcalor\":85212,\"amaha\":85213,\".TXT\":85214,\"Dry\":85215,\"Ġmissionaries\":85216,\"_Version\":85217,\"Ġmultiline\":85218,\"âĢĶwe\":85219,\"ĠcomponentDidUpdate\":85220,\"Favorites\":85221,\"igham\":85222,\"ĠjournÃ©e\":85223,\"Ġamused\":85224,\"ĠOmni\":85225,\"tgt\":85226,\"Ġwah\":85227,\"etine\":85228,\"Ġphased\":85229,\"ĠonStop\":85230,\"creativecommons\":85231,\"Soph\":85232,\"Ġunborn\":85233,\"=E\":85234,\"ĠFedEx\":85235,\"normally\":85236,\"Ġlyr\":85237,\"MatrixMode\":85238,\"Ġzeigen\":85239,\"Ath\":85240,\"ĠKum\":85241,\"Ã¤hlen\":85242,\"/\\\";ĊĊ\":85243,\"Ġdalle\":85244,\"Ġlance\":85245,\"ĠSuitable\":85246,\"Ġcounselors\":85247,\"åħ¨éĥ¨\":85248,\"Ġfasta\":85249,\"Ġblazing\":85250,\"ì§Ħ\":85251,\"/tutorial\":85252,\".tcp\":85253,\"æĻ¯\":85254,\"ManagerInterface\":85255,\"ĠSamar\":85256,\"ĉglUniform\":85257,\"Ġprerequisites\":85258,\"Ġanticipating\":85259,\"raquo\":85260,\"ksen\":85261,\"Magnitude\":85262,\"utomation\":85263,\"Hierarchy\":85264,\"Ġdeviations\":85265,\"imet\":85266,\"CCI\":85267,\"=(Ċ\":85268,\"Ġantlr\":85269,\"ĉinitial\":85270,\"ĠResorts\":85271,\"homes\":85272,\"ĉpool\":85273,\"ĠmatÃ©\":85274,\"?option\":85275,\":mysql\":85276,\"(utf\":85277,\".TabControl\":85278,\">Title\":85279,\"ĠAdopt\":85280,\".IsMatch\":85281,\"Ġentrusted\":85282,\"Susan\":85283,\"swing\":85284,\"imagenes\":85285,\"Ġselecion\":85286,\"Ġaiding\":85287,\"([]*\":85288,\"ĠsetFrame\":85289,\"spirit\":85290,\"/rss\":85291,\"Italic\":85292,\"ĠPropelException\":85293,\"ĠToll\":85294,\".FindGameObjectWithTag\":85295,\"inant\":85296,\"Ġselfies\":85297,\"]|[\":85298,\"ĠapplicationContext\":85299,\"ixe\":85300,\"cdb\":85301,\"ebb\":85302,\"ĠOverse\":85303,\"ĠsqlCommand\":85304,\"HostName\":85305,\"-launch\":85306,\"Risk\":85307,\";r\":85308,\".Span\":85309,\"_CITY\":85310,\"_MA\":85311,\"/\\\"ĊĊ\":85312,\"Pawn\":85313,\"ĠYelp\":85314,\"BundleOrNil\":85315,\"ĠmayorÃŃa\":85316,\"StackNavigator\":85317,\"!;Ċ\":85318,\"Ġthugs\":85319,\"ĠBarnett\":85320,\"ãĥ»ãĥ»ãĥ»ĊĊ\":85321,\"Ġê²Ģ\":85322,\"_CONV\":85323,\"Ġbuzzing\":85324,\"keterangan\":85325,\"Military\":85326,\"weed\":85327,\"Ġdelimited\":85328,\"èµĦæºĲ\":85329,\"ĠÐ°Ðº\":85330,\"_HELPER\":85331,\"ĠREADY\":85332,\"Looper\":85333,\"****/Ċ\":85334,\"ĠTrucks\":85335,\"åİ»\":85336,\"_pod\":85337,\"OMATIC\":85338,\"-java\":85339,\"Ġunify\":85340,\"/Area\":85341,\"Ġ'/');Ċ\":85342,\"ĠGambling\":85343,\".Hit\":85344,\"ĠFarrell\":85345,\"_fitness\":85346,\"recommended\":85347,\"zend\":85348,\"odie\":85349,\"_beam\":85350,\"Ġplage\":85351,\"ndon\":85352,\".assertj\":85353,\"Ġgrate\":85354,\"Measured\":85355,\".central\":85356,\"gesture\":85357,\"ĠGlobalKey\":85358,\"pyx\":85359,\"ĠNecklace\":85360,\"åįİ\":85361,\".AddColumn\":85362,\"ĠRudd\":85363,\"ĠPresbyterian\":85364,\"undler\":85365,\"#![\":85366,\"_lahir\":85367,\"()==\\\"\":85368,\"Accessibility\":85369,\"-training\":85370,\"ĠThou\":85371,\"_PIX\":85372,\"_TRY\":85373,\"<J\":85374,\"Æ°Æ¡ng\":85375,\"luck\":85376,\"_MAXIMUM\":85377,\"Ġthaw\":85378,\"Unified\":85379,\">Contact\":85380,\"-President\":85381,\"-parse\":85382,\"ĠPicker\":85383,\"Marco\":85384,\"trs\":85385,\"Î´\":85386,\".$.\":85387,\"_MESH\":85388,\"Ġsagte\":85389,\"+='\":85390,\"Ð¯\":85391,\"(parcel\":85392,\"ivors\":85393,\"Ġdiverted\":85394,\"AGAIN\":85395,\"Ġness\":85396,\"Ġvalleys\":85397,\"Ġ...(\":85398,\"ĠEQUI\":85399,\"ĠOuts\":85400,\"ĠDemonstr\":85401,\"Detalle\":85402,\"Ġë¶Ģ\":85403,\"PointXYZ\":85404,\".eps\":85405,\"Ġsynonyms\":85406,\"Ġ==(\":85407,\"âĢľYes\":85408,\"'utilisateur\":85409,\"Naming\":85410,\"LEV\":85411,\"protocols\":85412,\"ĠìĽ\":85413,\"ĠgetUsername\":85414,\"-var\":85415,\"_mtx\":85416,\"Ġspecular\":85417,\"Ġnotas\":85418,\"HorizontalAlignment\":85419,\"ĠBayer\":85420,\"sus\":85421,\"ĠĠĠĠĉĉĊ\":85422,\"ĠShack\":85423,\"resher\":85424,\"Ġimmature\":85425,\"bracht\":85426,\"ISCO\":85427,\".credit\":85428,\"Ġvines\":85429,\"_LP\":85430,\"EEDED\":85431,\"ĠScarborough\":85432,\"Ã¡nt\":85433,\")=='\":85434,\"ĉdelta\":85435,\"_COLORS\":85436,\".CustomButton\":85437,\"Ġafirm\":85438,\"ĠJing\":85439,\"Parms\":85440,\"centers\":85441,\"->___\":85442,\"ĠLDL\":85443,\"-contrib\":85444,\"ĠDresden\":85445,\"ĠPixels\":85446,\"Ġ\\\"\\\"\\\"\\\",Ċ\":85447,\"LETTE\":85448,\"xBE\":85449,\"ĠHust\":85450,\"ĠExecutionContext\":85451,\"ĠBuffett\":85452,\"clamp\":85453,\".Article\":85454,\"ĠRath\":85455,\"ĠPeyton\":85456,\"ĠLOWER\":85457,\"ooke\":85458,\"Ġtidal\":85459,\"Ġunheard\":85460,\"ĠShall\":85461,\"Ġbombard\":85462,\"anova\":85463,\"[mask\":85464,\"(credentials\":85465,\"ĠEuros\":85466,\"Ġbranching\":85467,\"Ġstronghold\":85468,\"Ġcivilizations\":85469,\"-connect\":85470,\"ĠLSTM\":85471,\"-moving\":85472,\"Ġuten\":85473,\"crast\":85474,\"_DISP\":85475,\"ĠControllers\":85476,\"upe\":85477,\".pen\":85478,\"Ġdessa\":85479,\"ĠdifÃŃcil\":85480,\"uitable\":85481,\"ofire\":85482,\"[child\":85483,\"REFERENCES\":85484,\"Ġdeceit\":85485,\"ĠUrg\":85486,\"<Edge\":85487,\"Ġdesi\":85488,\"ĠBOTH\":85489,\"Ġ')';Ċ\":85490,\"typeName\":85491,\"CommandEvent\":85492,\"whereIn\":85493,\"(optimizer\":85494,\"ĠrÃ©alis\":85495,\"Ġominous\":85496,\"ĠBracket\":85497,\"ĠdateString\":85498,\"Ġsingly\":85499,\"(JFrame\":85500,\"âĢĻT\":85501,\"eslint\":85502,\"(hero\":85503,\"ĠMara\":85504,\"Ġcatchy\":85505,\",callback\":85506,\"Ġctype\":85507,\"preset\":85508,\"ĉglfw\":85509,\"ÐµÑī\":85510,\"hk\":85511,\"Ġtitan\":85512,\"Aceptar\":85513,\"ãģ¡ãģ¯\":85514,\"_assigned\":85515,\"_erase\":85516,\"Ġinfancy\":85517,\"Reviewer\":85518,\"ĠRecorder\":85519,\"Ġscm\":85520,\"ĠBiggest\":85521,\"ĠGoa\":85522,\"ĉSC\":85523,\"_Location\":85524,\"_ori\":85525,\"kil\":85526,\"rende\":85527,\"Ġmarzo\":85528,\"StringUtil\":85529,\"ÑĥÑīÐµÑģÑĤÐ²\":85530,\"ĠHowe\":85531,\"Æ°á»Ŀi\":85532,\"fois\":85533,\"XMLElement\":85534,\"Ġderechos\":85535,\"Ġdung\":85536,\"ĠWak\":85537,\"ĠGaw\":85538,\"}\\\\\\\\\":85539,\"!\\\");\":85540,\"ĠJohannesburg\":85541,\"Ġsubmarines\":85542,\"Ġaccol\":85543,\"Ġfostering\":85544,\".ĊĊĊĊĊĊĊĊĊĊĊĊ\":85545,\".Operator\":85546,\"Ġnuova\":85547,\"Ġtrajectories\":85548,\".schedulers\":85549,\"ĠFollowers\":85550,\"ĠAndersen\":85551,\"ĠPeggy\":85552,\".fre\":85553,\"Ä±cÄ±\":85554,\"Ġkvp\":85555,\"cob\":85556,\"-len\":85557,\"Ġmails\":85558,\"Ġaccr\":85559,\"ĠJAVA\":85560,\"Ġadministering\":85561,\"DefaultCellStyle\":85562,\"Ġclickable\":85563,\"ĠJackets\":85564,\";display\":85565,\"Ġbreadcrumbs\":85566,\"chal\":85567,\":';Ċ\":85568,\"ĠHover\":85569,\"ucchini\":85570,\"Ġtec\":85571,\"Ġstopwatch\":85572,\"_Release\":85573,\"Mayor\":85574,\"áŀ¶\":85575,\"ĠYankee\":85576,\"chner\":85577,\"Artifact\":85578,\".banner\":85579,\"Ġkf\":85580,\"_study\":85581,\"fov\":85582,\"ĠMeetings\":85583,\"Ã¶m\":85584,\"Ġinjuring\":85585,\"/documentation\":85586,\"BCM\":85587,\"styl\":85588,\"ĉrb\":85589,\"Ġoriginals\":85590,\"Ġflere\":85591,\"ĠTerraria\":85592,\"tokenizer\":85593,\"-liter\":85594,\"');\\\"\":85595,\"Ġpetits\":85596,\"ĠBbw\":85597,\"ĠThief\":85598,\"UILTIN\":85599,\"ROUT\":85600,\"Ġsnug\":85601,\">>)\":85602,\"-nine\":85603,\"Ġ}];ĊĊ\":85604,\"ĠBellev\":85605,\"ĠelÃ©\":85606,\"Ġyyn\":85607,\"ynamo\":85608,\"gles\":85609,\"Ġsped\":85610,\".BUTTON\":85611,\"Ġdispersion\":85612,\"oubles\":85613,\"Ġnoveller\":85614,\"\\\"].\\\"\":85615,\"Ġpriesthood\":85616,\"Ġ\\\"\\\")ĊĊ\":85617,\"ĉgui\":85618,\"-inc\":85619,\"XmlNode\":85620,\"Ġstuds\":85621,\".IsActive\":85622,\"ĠtrÃ¤\":85623,\"Ġordained\":85624,\"ĠByteArrayInputStream\":85625,\"ĠrequestBody\":85626,\"ĠRTP\":85627,\"RESULTS\":85628,\"(coll\":85629,\"Ġreloading\":85630,\".Navigator\":85631,\"_counters\":85632,\"Ġbudding\":85633,\"Ġlicensee\":85634,\"ologi\":85635,\"Ġsáº£n\":85636,\"ĠKis\":85637,\"ĠFlatten\":85638,\"_pri\":85639,\"Ġappropriation\":85640,\"è¯Ħè®º\":85641,\"_RSP\":85642,\"combat\":85643,\"_PG\":85644,\"Ġhistograms\":85645,\"dq\":85646,\"Enterprise\":85647,\"ĠNOAA\":85648,\"ĠSpeedway\":85649,\"Ġbagi\":85650,\"ĠBewert\":85651,\"Floating\":85652,\"ĠKimberly\":85653,\"Prosec\":85654,\"Jimmy\":85655,\"ĠElias\":85656,\"Ġarbitrarily\":85657,\"Ġä½¿çĶ¨\":85658,\"ĠCounts\":85659,\"uste\":85660,\"FirstChild\":85661,\"ĠCleans\":85662,\".purchase\":85663,\"Ġinterpolated\":85664,\"Ġbuildup\":85665,\"_STENCIL\":85666,\"Egypt\":85667,\"Ġaure\":85668,\".truth\":85669,\"feof\":85670,\"ĠGim\":85671,\"ocache\":85672,\"ĠUttar\":85673,\"_COMPLETED\":85674,\"Seen\":85675,\"ĠNapoli\":85676,\"(dm\":85677,\"Ġgritty\":85678,\".enterprise\":85679,\"conexao\":85680,\"Ġgathers\":85681,\"ĠsetSearch\":85682,\"ĠClifford\":85683,\"ĠSnape\":85684,\"ĠSalvation\":85685,\"LoginForm\":85686,\"CriticalSection\":85687,\".userdetails\":85688,\"Ġrepaint\":85689,\"ãģĤãĤĬãģĮãģ¨ãģĨ\":85690,\"Hunter\":85691,\"Zen\":85692,\"Tiny\":85693,\"mland\":85694,\"ertil\":85695,\"ĉbuff\":85696,\"_Offset\":85697,\"Ġsmelled\":85698,\"River\":85699,\"-topic\":85700,\"Ġacomp\":85701,\"ĠRouteServiceProvider\":85702,\"Ġ<+\":85703,\"ombs\":85704,\"ĠCooperative\":85705,\"Ġseule\":85706,\"Ġaime\":85707,\"shouldReceive\":85708,\"Hong\":85709,\"Ġoasis\":85710,\"ĠGemini\":85711,\"rapid\":85712,\"Dup\":85713,\"(QtGui\":85714,\"odont\":85715,\"-gnu\":85716,\"ĠSelenium\":85717,\"')?></\":85718,\"ĠNope\":85719,\"GreaterThan\":85720,\".Observer\":85721,\"ĠAppropri\":85722,\"ĠLonely\":85723,\"Ġhaircut\":85724,\"Ġallerdings\":85725,\"Ã³pez\":85726,\"zÅĳ\":85727,\"Ġslump\":85728,\"ĠGins\":85729,\"Ġgiorni\":85730,\"Ġpaperback\":85731,\".FileReader\":85732,\"daf\":85733,\"creds\":85734,\"typings\":85735,\"dehyde\":85736,\"coil\":85737,\"Southern\":85738,\"ĠmouseClicked\":85739,\"zeichnet\":85740,\"userRepository\":85741,\"Destroyed\":85742,\"internet\":85743,\"ĠEid\":85744,\"Ġlinker\":85745,\"âĢĻB\":85746,\"Ġslaughtered\":85747,\"ĠPerr\":85748,\"ĉRuntimeObject\":85749,\"saida\":85750,\"ĠpageCount\":85751,\"ĠRandolph\":85752,\"ĠJNIEnv\":85753,\"_superuser\":85754,\"-directed\":85755,\"ĠIDb\":85756,\"ĠBernardino\":85757,\"ĠNinth\":85758,\"ĠAlgorithms\":85759,\"bdb\":85760,\"@testable\":85761,\".arm\":85762,\"bellion\":85763,\"(sid\":85764,\"Ġbriefed\":85765,\"âķĹ\":85766,\"éħįç½®\":85767,\"ĠUma\":85768,\"ĠIndices\":85769,\"ĠBuccane\":85770,\"Ġayant\":85771,\"Freedom\":85772,\"ĠYuri\":85773,\"etsk\":85774,\"_Ph\":85775,\"Ġitalia\":85776,\"closing\":85777,\"Ġwrists\":85778,\"Ġ*}\":85779,\"secutive\":85780,\"Enviar\":85781,\"raith\":85782,\"ĠHawth\":85783,\"×ĵ\":85784,\"Ġ******************************************************************************Ċ\":85785,\"pageTitle\":85786,\"Ġdhcp\":85787,\"Ġìĭ¤íĸī\":85788,\"wishlist\":85789,\"Ġblames\":85790,\"Ġsidl\":85791,\"udded\":85792,\"Ġcontroversies\":85793,\"èı\":85794,\"(userData\":85795,\"Ġlinspace\":85796,\"ĠDifferences\":85797,\"_deposit\":85798,\"DETAIL\":85799,\".deck\":85800,\"Ġcontinuum\":85801,\"Ġsacram\":85802,\"omite\":85803,\"Ġnfl\":85804,\"Cum\":85805,\"Ġsof\":85806,\"Ġevils\":85807,\"Ġentidad\":85808,\"ĉsock\":85809,\"ĠLemma\":85810,\".Ship\":85811,\"Ġzig\":85812,\"Telefone\":85813,\"IDES\":85814,\"ĠNumerous\":85815,\".metric\":85816,\"insn\":85817,\"Ġcopyrights\":85818,\"Ġcomplication\":85819,\"ĠURLSession\":85820,\"Ġdipping\":85821,\"Ġcq\":85822,\"ĠBusty\":85823,\"relationships\":85824,\"ĠCorvette\":85825,\"Summon\":85826,\"eventName\":85827,\"Issues\":85828,\"Ġirresistible\":85829,\"Ġgris\":85830,\"CASCADE\":85831,\"Ġpauses\":85832,\"Ġledge\":85833,\"_GP\":85834,\".Imp\":85835,\"Ġorderby\":85836,\"ĠOrganizer\":85837,\"ĠGreenwich\":85838,\"Oak\":85839,\"-members\":85840,\"ĠWebGL\":85841,\"Ġgamm\":85842,\"moduleId\":85843,\"ĠfullPath\":85844,\"logen\":85845,\"(eventName\":85846,\"(\\\".\\\");Ċ\":85847,\"Ġkrist\":85848,\"Ġcliffs\":85849,\"ĠPerception\":85850,\"ETING\":85851,\"Ġláº¡i\":85852,\"Ġinterv\":85853,\"Ġopportun\":85854,\"ĠJudges\":85855,\"ĠCombination\":85856,\"continued\":85857,\"cono\":85858,\".drawRect\":85859,\".Compose\":85860,\"Ġsiguientes\":85861,\"ĠDuffy\":85862,\"(encoding\":85863,\"ĠVulkan\":85864,\"ĠGerr\":85865,\"Ġparfait\":85866,\"(yy\":85867,\"_THAN\":85868,\"ĠgetService\":85869,\"_ORD\":85870,\",ep\":85871,\"graphic\":85872,\"ĠQueries\":85873,\"Ġparticulars\":85874,\"ĠHavana\":85875,\"=o\":85876,\"fans\":85877,\"Ġunilateral\":85878,\"ĠRFID\":85879,\"Compatibility\":85880,\"strand\":85881,\"Ġwaktu\":85882,\"Ġqualidade\":85883,\"PropertyParams\":85884,\"reten\":85885,\"(hostname\":85886,\"_CAR\":85887,\"Ġwidened\":85888,\"ĠXperia\":85889,\"pollo\":85890,\"Abort\":85891,\"!!)Ċ\":85892,\"ĠWag\":85893,\"--+\":85894,\"ĠÑĤÑĢ\":85895,\"ĠRecursive\":85896,\"Ġanne\":85897,\"ĠGameplay\":85898,\"<Client\":85899,\".Usage\":85900,\"ĠISSUE\":85901,\"Ġjdbc\":85902,\"isory\":85903,\"_macros\":85904,\"pickle\":85905,\".gameserver\":85906,\"Ġtvb\":85907,\"ÑĤÑĭ\":85908,\".OPEN\":85909,\"Ġpredetermined\":85910,\"Ġsire\":85911,\"ĉĉĉčĊĉĉĉčĊ\":85912,\"iscrimination\":85913,\"Ġrepealed\":85914,\"Ġconject\":85915,\"ĠPreconditions\":85916,\"Ġtilted\":85917,\"Ġinoc\":85918,\"Ġeuropean\":85919,\"abd\":85920,\"_DELETED\":85921,\"Ġ-,\":85922,\"âĢĵand\":85923,\"@FXML\":85924,\"Ġ)]Ċ\":85925,\"RING\":85926,\"Ġaliqua\":85927,\"Ġgruesome\":85928,\"ĠInches\":85929,\"Played\":85930,\"(confirm\":85931,\"ĠNVIC\":85932,\"_Total\":85933,\"isas\":85934,\"ĠOnion\":85935,\"Ġsecondo\":85936,\"ĠGetUser\":85937,\"\\\\Url\":85938,\"_abstract\":85939,\"Ġdevez\":85940,\"Ġcupboard\":85941,\"texts\":85942,\"ĠIsles\":85943,\"_MATH\":85944,\"Skipping\":85945,\"_costs\":85946,\"=output\":85947,\"ibili\":85948,\"Ġknull\":85949,\"_coeffs\":85950,\"_attempt\":85951,\"ĉRun\":85952,\"genden\":85953,\"rupted\":85954,\"Ġsoared\":85955,\"_hs\":85956,\"Ġadopts\":85957,\"_MODIFIED\":85958,\"\\\\Factories\":85959,\"ĠSweat\":85960,\"Ġdokument\":85961,\"ĠTelescope\":85962,\"ĠFixes\":85963,\"orque\":85964,\".Charting\":85965,\"_DAC\":85966,\"Ġsecretion\":85967,\"Ġrhetorical\":85968,\"Perfil\":85969,\"ĠmÃ¶chten\":85970,\",',\":85971,\"ĠviewPager\":85972,\"BUY\":85973,\"ĠonFocus\":85974,\"osals\":85975,\"Ġbiscuits\":85976,\"Ġvbox\":85977,\"Ġforcefully\":85978,\"Nintendo\":85979,\"ĠvÃ¡l\":85980,\"Ġclans\":85981,\"frog\":85982,\"ĠborderTop\":85983,\"Brief\":85984,\".BorderFactory\":85985,\"-serving\":85986,\"Ġquotations\":85987,\"ĠGarner\":85988,\"ĠAlley\":85989,\"\\\"?>Ċ\":85990,\"(scanner\":85991,\"Ġentail\":85992,\"Ġ//================================================================\":85993,\"(`<\":85994,\".descripcion\":85995,\"_By\":85996,\"ĠìļĶ\":85997,\"Ġpakistan\":85998,\"elho\":85999,\"Engineering\":86000,\"Ġboon\":86001,\"ĠLoose\":86002,\"ierge\":86003,\"Senate\":86004,\"ĠLY\":86005,\"responseObject\":86006,\"iore\":86007,\"Ã¡genes\":86008,\"Ġä¸į\":86009,\"ĠaddAction\":86010,\"ĠMACHINE\":86011,\"angkan\":86012,\"_mi\":86013,\"_ARR\":86014,\"Liter\":86015,\"OLF\":86016,\"Ġsupper\":86017,\"ĠpathMatch\":86018,\"ĠOrr\":86019,\"ÃŃd\":86020,\"(filtered\":86021,\"ĠauthToken\":86022,\"ĠâĦĿ\":86023,\"-</\":86024,\"(tensor\":86025,\"Ġrevolving\":86026,\"Ġiniciar\":86027,\"ĠSchwarz\":86028,\"defgroup\":86029,\"columnName\":86030,\"_trajectory\":86031,\"à¹Ħà¸¡\":86032,\"egasus\":86033,\"ĠìĿ´ë¦Ħ\":86034,\"Ġeater\":86035,\"Ġunderestimated\":86036,\"Ġbtc\":86037,\"ĠìĦłíĥĿ\":86038,\"enade\":86039,\"ĠSEXP\":86040,\"emouth\":86041,\"OMETRY\":86042,\"entered\":86043,\".phoneNumber\":86044,\"ĠVoc\":86045,\"Ġexcessively\":86046,\"ĠCATEGORY\":86047,\"_UPDATED\":86048,\"Ġmonarchy\":86049,\"archs\":86050,\"Ġcaveat\":86051,\"wins\":86052,\"Ġplaybook\":86053,\"shade\":86054,\"ĠsetUsername\":86055,\"Ġaccuses\":86056,\"ĠmoÅ¼li\":86057,\"Ġlorsque\":86058,\"Ġajud\":86059,\"hear\":86060,\"Ġpsycopg\":86061,\"(EC\":86062,\"Ġmelanch\":86063,\"throat\":86064,\"nih\":86065,\"WOOD\":86066,\"Ġvolts\":86067,\"_NEED\":86068,\"_while\":86069,\"ĠRiders\":86070,\"×¢\":86071,\"Ġ................................................................\":86072,\"NetMessage\":86073,\"Modificar\":86074,\".sess\":86075,\"(\\\"\\\"),\":86076,\"è©±\":86077,\"Ġpraises\":86078,\"Ġlcm\":86079,\"Ġmakeshift\":86080,\"ĠNOTHING\":86081,\"ĠArtifact\":86082,\"wij\":86083,\"typically\":86084,\"('^\":86085,\"<k\":86086,\"ÄĻki\":86087,\"ĠÐ¾ÑĤÐ¿ÑĢÐ°Ð²\":86088,\"Ġá\":86089,\"ĠdefStyleAttr\":86090,\"incerely\":86091,\"Ã©st\":86092,\"InThe\":86093,\"stime\":86094,\"Ġfragmented\":86095,\"Ġfrying\":86096,\"grim\":86097,\"fieldname\":86098,\"Ġcrossings\":86099,\"Ġamo\":86100,\"_Options\":86101,\"Ġhaired\":86102,\"/wait\":86103,\"Ġparchment\":86104,\"ĠcreateElement\":86105,\"HttpStatus\":86106,\"ĠerklÃ¤\":86107,\"izzazione\":86108,\"thumbnails\":86109,\"lovak\":86110,\"Ġbanging\":86111,\"Ġunimagin\":86112,\"ĠOven\":86113,\"(Audio\":86114,\"apsulation\":86115,\"Ġramps\":86116,\"çķª\":86117,\"ĠWoodward\":86118,\"éĹ®é¢ĺ\":86119,\"rogram\":86120,\"ÑĢÑĥÐ¿Ð¿\":86121,\"ĠWorship\":86122,\"Ġstad\":86123,\"Ġnef\":86124,\"ĠJaune\":86125,\"buzz\":86126,\"alus\":86127,\"ONDON\":86128,\"-su\":86129,\"Ġoutpatient\":86130,\"jac\":86131,\"ESPN\":86132,\"Ã¦lland\":86133,\"myp\":86134,\"Ġshowroom\":86135,\"Montserrat\":86136,\".getDrawable\":86137,\"Ã©tico\":86138,\"ĠvÃło\":86139,\"IBC\":86140,\"Experts\":86141,\"Mbps\":86142,\"\\\">#\":86143,\"Ġnortheastern\":86144,\"ĠMej\":86145,\"(milliseconds\":86146,\"âĢĶall\":86147,\"-reaching\":86148,\"ĉreply\":86149,\"?type\":86150,\"Ġcruz\":86151,\"Ġ><?\":86152,\".FindAsync\":86153,\"(circle\":86154,\"ĠShine\":86155,\"ĠMavericks\":86156,\"Ġsafezone\":86157,\"ĠLazar\":86158,\"Ġdistinctions\":86159,\"-feed\":86160,\".setCode\":86161,\"à¤ª\":86162,\"ĠtÃ©c\":86163,\"Ġserait\":86164,\"ĠMICRO\":86165,\"ĠConsumption\":86166,\"^n\":86167,\".fromFunction\":86168,\"ĠRupert\":86169,\"Ġharassing\":86170,\"-Co\":86171,\"Ġtik\":86172,\"ĠSvens\":86173,\".ImageAlign\":86174,\"_whitespace\":86175,\"Ġkicker\":86176,\"Ġcadastr\":86177,\"Cette\":86178,\"_notifier\":86179,\"ĠFAG\":86180,\"Ġprimal\":86181,\"Ġhomogeneous\":86182,\"Ġastronomical\":86183,\"ĠBurr\":86184,\".CopyTo\":86185,\"graphs\":86186,\"itto\":86187,\"OSH\":86188,\"ĠshowAlert\":86189,\"antro\":86190,\"\\\"default\":86191,\"emphasis\":86192,\"Wei\":86193,\"outcome\":86194,\"Ġaku\":86195,\"Ġcampaigned\":86196,\")\\\";ĊĊ\":86197,\"Ġreciprocal\":86198,\"ĠRoyale\":86199,\"Ġ############################################################################\":86200,\".TIME\":86201,\"Ġ<*\":86202,\"OffsetTable\":86203,\"compound\":86204,\"waitFor\":86205,\"uegos\":86206,\".stringValue\":86207,\"_SCHED\":86208,\"Ġfatt\":86209,\"ÂłÂłÂłÂłÂłÂłÂł\":86210,\".disk\":86211,\"Ġwarped\":86212,\"Ġcritiques\":86213,\"?'ĊĊ\":86214,\"(skill\":86215,\"Ġmoderated\":86216,\"_elems\":86217,\"KeyListener\":86218,\"Ġseasoning\":86219,\"Ġpourquoi\":86220,\"_FD\":86221,\"prd\":86222,\"hya\":86223,\"\\\">ÃĹ</\":86224,\"Ġnouveaux\":86225,\"Ġgiveaways\":86226,\"æĬ¥éģĵ\":86227,\"MainMenu\":86228,\";/*\":86229,\"ĠGron\":86230,\"quivos\":86231,\";čĊčĊčĊčĊ\":86232,\"Ġinfluencers\":86233,\"(TIM\":86234,\"SharedPtr\":86235,\"Ġdialogs\":86236,\"*****/Ċ\":86237,\".Atomic\":86238,\"ĠMorse\":86239,\"Ġpcb\":86240,\"ĠAPC\":86241,\".Immutable\":86242,\"Ġresizing\":86243,\"ĠLumpur\":86244,\"ĠHumanities\":86245,\"_solve\":86246,\"_human\":86247,\"etyl\":86248,\"ĠHurt\":86249,\"ĠEstablished\":86250,\"clared\":86251,\"Ġcompartments\":86252,\"Beam\":86253,\"_RM\":86254,\".false\":86255,\"(Grid\":86256,\"ĠQSize\":86257,\"_flg\":86258,\"istica\":86259,\">Login\":86260,\":UIButtonType\":86261,\"ĠExiting\":86262,\"clas\":86263,\"Ġarsen\":86264,\"(metric\":86265,\"rowsing\":86266,\"querySelector\":86267,\"_FRIEND\":86268,\"-io\":86269,\"Ġconfiscated\":86270,\"Ġdefiant\":86271,\"ĠMOTOR\":86272,\"regunta\":86273,\"ĠMorrow\":86274,\"ĠBers\":86275,\"Craig\":86276,\"ĠCPA\":86277,\"Ġsexkontakte\":86278,\"Ġsammen\":86279,\"/Auth\":86280,\".Lib\":86281,\"craper\":86282,\"icemail\":86283,\"cratch\":86284,\"ĠWired\":86285,\"Ġadvertiser\":86286,\"ĠgetClient\":86287,\"Ġresponsibly\":86288,\"ĉUObject\":86289,\".setRotation\":86290,\".Counter\":86291,\"_HOUR\":86292,\"TestCategory\":86293,\"Ġhindsight\":86294,\"\\\\controllers\":86295,\"walls\":86296,\".setMaximum\":86297,\"Ġpuberty\":86298,\"_teams\":86299,\"_MODAL\":86300,\".CO\":86301,\"Ġbadass\":86302,\")'],Ċ\":86303,\"Ãºsqueda\":86304,\"irut\":86305,\"Chelsea\":86306,\".transforms\":86307,\"Ġcapitalists\":86308,\"Marca\":86309,\"ĠAry\":86310,\"-coded\":86311,\"çİ¯\":86312,\"URED\":86313,\"<Transaction\":86314,\"ĠParliamentary\":86315,\")$_\":86316,\"Ġsubtly\":86317,\"Ġsilky\":86318,\"ĠDirt\":86319,\"Ġpuzzled\":86320,\"}');Ċ\":86321,\"quests\":86322,\"Football\":86323,\"ĠConfidence\":86324,\"uzu\":86325,\"bulan\":86326,\"Ġhumming\":86327,\"mouseenter\":86328,\"Retention\":86329,\"Ġsdl\":86330,\"okedex\":86331,\"','=',$\":86332,\"ĠKuala\":86333,\"SAM\":86334,\"Ġtransformative\":86335,\"PKG\":86336,\"illus\":86337,\"Ġrooting\":86338,\"ĠWitnesses\":86339,\"ĠRajasthan\":86340,\"å¼ł\":86341,\"-added\":86342,\"ĠTerritories\":86343,\"(square\":86344,\"rabbit\":86345,\"_Resource\":86346,\"éĸĭ\":86347,\"à¸ĵ\":86348,\"Ġwinnings\":86349,\"Ġsple\":86350,\"ĠdÃ¨s\":86351,\"ĠMDB\":86352,\"Ã©rt\":86353,\"ĠMattis\":86354,\"ailles\":86355,\"_weak\":86356,\"/jav\":86357,\"Ġcollapses\":86358,\"ĠĠĠĠĠĠĉĉ\":86359,\"Ġswirl\":86360,\"ĠNSStringFromClass\":86361,\"Ġvolver\":86362,\".Receive\":86363,\"ĠDexter\":86364,\"Ġtablename\":86365,\"reative\":86366,\".GetFiles\":86367,\"voor\":86368,\"ĠHoe\":86369,\"VERN\":86370,\"ĠOPC\":86371,\"íĥľ\":86372,\"ramids\":86373,\"çĦ¡ãģĹãģķãĤĵ\":86374,\"Spirit\":86375,\"ĠNOP\":86376,\"ĠMaintain\":86377,\"(sigma\":86378,\"otr\":86379,\"MouseClicked\":86380,\"quierda\":86381,\"_wf\":86382,\"Ð¾ÐºÐ°Ð·\":86383,\"appable\":86384,\"ĠHolden\":86385,\"ĠCountdown\":86386,\".sigma\":86387,\"chalk\":86388,\"bilder\":86389,\"Ġvisionary\":86390,\"ĉOn\":86391,\"$update\":86392,\"ĠGingrich\":86393,\"roomId\":86394,\">Nama\":86395,\"Ġyytype\":86396,\".DecimalField\":86397,\"macros\":86398,\".setLayoutParams\":86399,\"Ġrnn\":86400,\"ĠIMDb\":86401,\"ç§į\":86402,\"emales\":86403,\"Ġincididunt\":86404,\"Restricted\":86405,\"Ġpedals\":86406,\"ĠJog\":86407,\"ĠAdaptive\":86408,\"Ġfades\":86409,\".EventSystems\":86410,\"ĠPaige\":86411,\"Ġseis\":86412,\"Ġappropriated\":86413,\"FFT\":86414,\"gorit\":86415,\"Ġcohesive\":86416,\"ĠNicht\":86417,\"_workflow\":86418,\"lius\":86419,\"ĠFortnite\":86420,\"_IW\":86421,\"AtPath\":86422,\"Ġintoxicated\":86423,\"nostic\":86424,\"BinContent\":86425,\".reducer\":86426,\")?Ċ\":86427,\"']*\":86428,\"ĠObservation\":86429,\"_prefs\":86430,\".resolution\":86431,\".Payload\":86432,\"Mixed\":86433,\"ĠRai\":86434,\"(pdev\":86435,\"(@(\":86436,\"icot\":86437,\"$is\":86438,\"Ġcree\":86439,\"?=.*\":86440,\".QLabel\":86441,\"ĠGeorgian\":86442,\"xCA\":86443,\"Ġdeficient\":86444,\"thrown\":86445,\"Ġraping\":86446,\"upos\":86447,\"ĉcli\":86448,\"getView\":86449,\"Highlighted\":86450,\"CppGuid\":86451,\"Ġrelegated\":86452,\"Ġleaderboard\":86453,\"ReceiveProps\":86454,\".har\":86455,\"Ġcondi\":86456,\"IMITIVE\":86457,\"ĠMcCart\":86458,\")throws\":86459,\"buie\":86460,\"buah\":86461,\".coeff\":86462,\"ĠAussie\":86463,\"ĠSabha\":86464,\"(fabs\":86465,\"reland\":86466,\"ĠFÃ¶r\":86467,\"barang\":86468,\",top\":86469,\"ĉelsif\":86470,\"StepThrough\":86471,\"Ġskewed\":86472,\"ĠUnused\":86473,\"')}>Ċ\":86474,\"Ye\":86475,\"callee\":86476,\"Hibernate\":86477,\"ĠEverest\":86478,\"importDefault\":86479,\"Ġtarn\":86480,\"ĠNowadays\":86481,\"YA\":86482,\"ĠChallenger\":86483,\"_logical\":86484,\"ĠcreateDate\":86485,\"ĠGlouce\":86486,\"Ġcuanto\":86487,\"ĠHAR\":86488,\"ĠChill\":86489,\"\\\"^\":86490,\"Ġcursos\":86491,\".EOF\":86492,\"Ġnije\":86493,\"Ġangered\":86494,\"ocusing\":86495,\"<Contact\":86496,\"ĠAtmospheric\":86497,\"ĠWolfgang\":86498,\"ĠBJ\":86499,\"childs\":86500,\"ĠBugs\":86501,\"_HEX\":86502,\"(SP\":86503,\"Ã¥l\":86504,\"_evaluation\":86505,\"ĠRANGE\":86506,\"ĠSOP\":86507,\"_tokenize\":86508,\"msgid\":86509,\"Ġrex\":86510,\"ĉpm\":86511,\"Copying\":86512,\"*L\":86513,\"Dallas\":86514,\"-State\":86515,\"ulfill\":86516,\"ĠbyÅĤo\":86517,\"ĠContractor\":86518,\"Didn\":86519,\"ASTE\":86520,\"ĠPIO\":86521,\".Tele\":86522,\".water\":86523,\"dez\":86524,\"Ġangrily\":86525,\"Ġutilisateur\":86526,\"Ġvortex\":86527,\"Corporate\":86528,\"aturas\":86529,\"Ġprized\":86530,\"'url\":86531,\"uglify\":86532,\"Ġimpulses\":86533,\"Ġchronological\":86534,\"plen\":86535,\"_nama\":86536,\"/on\":86537,\"ĠOffices\":86538,\"ĠCPI\":86539,\"ĠAfterwards\":86540,\"ãģĵãĤĵãģ«\":86541,\"_BLOCKS\":86542,\"Grace\":86543,\"/************************************************************************************************\":86544,\"ĠKabul\":86545,\"ĠæĪĲ\":86546,\"ĠLeipzig\":86547,\"à¦¨\":86548,\"Shock\":86549,\"Aus\":86550,\"Ġmurm\":86551,\"_starts\":86552,\"ĠbÃ¤\":86553,\"ĠZy\":86554,\"\\\"F\":86555,\"-rights\":86556,\"Ġbehaving\":86557,\"('>\":86558,\"Ġmosques\":86559,\"*width\":86560,\"\\\"/>.</\":86561,\".unsplash\":86562,\".getActivity\":86563,\"UU\":86564,\"ĠShak\":86565,\"_rg\":86566,\"_Equals\":86567,\"'https\":86568,\"ĠOxygen\":86569,\"ĠPortsmouth\":86570,\"âĢĶone\":86571,\"Ġwatchers\":86572,\"ĠChoi\":86573,\"Ġsider\":86574,\"pectral\":86575,\"mqtt\":86576,\".createUser\":86577,\"jectives\":86578,\"urma\":86579,\"Registr\":86580,\"Personally\":86581,\"=key\":86582,\"ĠNEO\":86583,\"ĠFAQs\":86584,\"ibilidade\":86585,\"cksÃ¥\":86586,\"ĠCollaboration\":86587,\"ĉlbl\":86588,\".SERVER\":86589,\"Ġabound\":86590,\"ĠBene\":86591,\"wanted\":86592,\"-hole\":86593,\"Ġmuttered\":86594,\"Ġpep\":86595,\"nesc\":86596,\".Upload\":86597,\"semi\":86598,\"xEC\":86599,\"'>\\\"+\":86600,\"Ġembryo\":86601,\"ĠFixedUpdate\":86602,\"Castle\":86603,\".modelo\":86604,\"Ġpls\":86605,\"Ġenvelopes\":86606,\"_remain\":86607,\"Quarter\":86608,\"alertView\":86609,\"_formatted\":86610,\"Ġlashes\":86611,\"zelf\":86612,\"homme\":86613,\".flowLayoutPanel\":86614,\"airport\":86615,\"ĠMemories\":86616,\"ĠHERO\":86617,\"ĠAshton\":86618,\"Ġexhibiting\":86619,\"(SELECT\":86620,\"Submission\":86621,\"Stuff\":86622,\"_sun\":86623,\"ĠperÃŃodo\":86624,\"Ġdespre\":86625,\"ĉedit\":86626,\"ĠDtype\":86627,\"cessive\":86628,\"aad\":86629,\"Ġdescon\":86630,\"nelly\":86631,\"Ġ------------------------------------------------------------\":86632,\"Ġscriptures\":86633,\"ĠonViewCreated\":86634,\"ĠEVE\":86635,\"ĠBallet\":86636,\";};Ċ\":86637,\"UDO\":86638,\"ĠProbability\":86639,\"quirrel\":86640,\"Containing\":86641,\"ĠPlat\":86642,\"è¢\":86643,\"/bit\":86644,\"ĠJQuery\":86645,\"Ġtiener\":86646,\"/drivers\":86647,\"ĠPresidency\":86648,\"\\\\uD\":86649,\"ĠIve\":86650,\"iena\":86651,\"Ġhypers\":86652,\"ĠSpending\":86653,\"<W\":86654,\"ĠTHEME\":86655,\"ĠuserProfile\":86656,\"Ġannum\":86657,\"retweeted\":86658,\"Ġ\\\\''\":86659,\"bundles\":86660,\"()</\":86661,\"ĠCylinder\":86662,\"Ġoutliers\":86663,\"Ġdissemination\":86664,\"/apt\":86665,\"ĠNatasha\":86666,\"ĠrenderItem\":86667,\"ĠChips\":86668,\"Ġroundup\":86669,\"Ġimprov\":86670,\"Ġcommunicator\":86671,\"Ġskype\":86672,\"MMM\":86673,\"rijk\":86674,\".Place\":86675,\"Ġpasa\":86676,\"ĠSYNC\":86677,\"ensis\":86678,\"ĠAxel\":86679,\"enÃ§a\":86680,\"getStringExtra\":86681,\"abilitÃ©\":86682,\"Ġemacs\":86683,\".gravity\":86684,\"Ġcherish\":86685,\"ĠISSN\":86686,\"ĉJson\":86687,\"uyo\":86688,\"Ġuptime\":86689,\"Ġrandomness\":86690,\"Ġlofty\":86691,\"Bow\":86692,\"Crear\":86693,\"Ġtowering\":86694,\"categorie\":86695,\"/power\":86696,\"/welcome\":86697,\"|R\":86698,\"Ġbarring\":86699,\"idia\":86700,\"quam\":86701,\"Ãºdo\":86702,\"experimental\":86703,\"Ġcla\":86704,\"Ġcurator\":86705,\"reamble\":86706,\"indx\":86707,\"LLL\":86708,\"Ġ}):\":86709,\"Ġhistoire\":86710,\"simulate\":86711,\"<Any\":86712,\"ĠGlam\":86713,\"ĠBarg\":86714,\"ValueCollection\":86715,\"ĠInstituto\":86716,\"AsStringAsync\":86717,\"Ġadec\":86718,\"Ġfellows\":86719,\"pipes\":86720,\"ĠPlaceholder\":86721,\"ĠKg\":86722,\"ĠAlbums\":86723,\"Ġ*(*\":86724,\"_GOOD\":86725,\")\\\",čĊ\":86726,\".QRect\":86727,\"Ã¢m\":86728,\"Ġ}ččĊ\":86729,\"MarshalAs\":86730,\"Bachelor\":86731,\"ĠBarcode\":86732,\"ĠTraverse\":86733,\"Ġodio\":86734,\".setParent\":86735,\"Ġsemiconductor\":86736,\"ALLEL\":86737,\"Ġbanquet\":86738,\"ĠNewspaper\":86739,\"DOMNode\":86740,\"ĠNaughty\":86741,\"FormattedMessage\":86742,\"Ġdisrupting\":86743,\"æĺĵ\":86744,\"Ġlookahead\":86745,\"Ġgratuites\":86746,\"Ġcheesy\":86747,\"ĠSPF\":86748,\"nP\":86749,\"Ġarson\":86750,\"Ġantennas\":86751,\"_MIDDLE\":86752,\"_MALLOC\":86753,\".goBack\":86754,\"ĠProposition\":86755,\"ĠMichaels\":86756,\"_proof\":86757,\"ĠÐ½Ð°Ð¹Ð´\":86758,\"Ã¤tzlich\":86759,\"-roll\":86760,\"EDA\":86761,\"Ã¡nÃŃ\":86762,\"government\":86763,\"Ã¶tt\":86764,\"ĠEstablishment\":86765,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":86766,\"_HIT\":86767,\"ĠAIM\":86768,\"adol\":86769,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":86770,\"_REFERER\":86771,\"ĠformatDate\":86772,\"uctose\":86773,\"Ġdownloader\":86774,\"TextEdit\":86775,\"Ġdisarm\":86776,\"ĠHAPP\":86777,\"Ð¾Ð´Ð°\":86778,\"!).ĊĊ\":86779,\"/process\":86780,\"Ġbrainstorm\":86781,\"ĠORIGINAL\":86782,\".TableName\":86783,\"ĠKostenlose\":86784,\"ĠdÃ©p\":86785,\"ĠIsabel\":86786,\"Ġastronomers\":86787,\"QUIRES\":86788,\":\\\"-\":86789,\"uploader\":86790,\"://%\":86791,\"Ġamis\":86792,\"FileVersion\":86793,\"Ġ,$\":86794,\"cook\":86795,\",SIGNAL\":86796,\"',//\":86797,\"ĠSuppress\":86798,\"ĠLatinos\":86799,\"Ġwithhold\":86800,\"Ġmnemonic\":86801,\"_CYCLE\":86802,\"Ġhod\":86803,\"ĠWorse\":86804,\"erde\":86805,\"Ġtypeid\":86806,\"ĉexports\":86807,\"Ġachter\":86808,\"osas\":86809,\"Ġfootnote\":86810,\"hani\":86811,\"(Parameter\":86812,\"ĉRender\":86813,\"ĠYYSTACK\":86814,\"ĠXII\":86815,\"Ġsiden\":86816,\"Ġarousal\":86817,\"ĠOO\":86818,\"Bitte\":86819,\"Ġnearer\":86820,\"ĠCircus\":86821,\"ĠCOLORS\":86822,\"Ġwielding\":86823,\".FileSystem\":86824,\"Ġgrille\":86825,\"ĠDover\":86826,\"ĊĠĠĠĠĠĊ\":86827,\"(geometry\":86828,\"Ġstaples\":86829,\"ĠAnnouncement\":86830,\"Ġë²Ħ\":86831,\"Ġfortunately\":86832,\".Some\":86833,\"Ġmanganese\":86834,\"Ġinterviewer\":86835,\"YRO\":86836,\"Ġcryptography\":86837,\"Ġchambre\":86838,\".retry\":86839,\"Ġimitation\":86840,\"$fdata\":86841,\"Ġlotion\":86842,\"(identity\":86843,\".pg\":86844,\"Ġpresumption\":86845,\"_SUPER\":86846,\"vocab\":86847,\"ĠSemester\":86848,\"ĠAbel\":86849,\"_approved\":86850,\".compat\":86851,\"Ġwartime\":86852,\"]];ĊĊ\":86853,\"lut\":86854,\"_Account\":86855,\"?('\":86856,\"coop\":86857,\"/reg\":86858,\".setTo\":86859,\"itesse\":86860,\"ĠHydra\":86861,\"Bins\":86862,\"cadena\":86863,\">/',\":86864,\".\\\\\\\"\":86865,\"ĉaccount\":86866,\"ĠDahl\":86867,\"Ġdrown\":86868,\"Ġgauss\":86869,\"Ġtransformers\":86870,\"ĠMetallic\":86871,\"ĠHerbal\":86872,\"achs\":86873,\"_but\":86874,\"Ġiterative\":86875,\"ĠFreed\":86876,\"jur\":86877,\"|M\":86878,\";break\":86879,\"_FF\":86880,\"(download\":86881,\"á»ĥn\":86882,\".checkSelfPermission\":86883,\"NETWORK\":86884,\":flex\":86885,\"ĠCTL\":86886,\"ĠArb\":86887,\"ĠProduce\":86888,\"ĉsynchronized\":86889,\"âĢľOh\":86890,\".datatables\":86891,\"Ġcones\":86892,\"DÃ©\":86893,\"ÑĨÐ°\":86894,\"Alg\":86895,\"Ġfunciona\":86896,\"ĠUbisoft\":86897,\"Ġgeopolitical\":86898,\"Ġsieht\":86899,\"Ġhydration\":86900,\"sthrough\":86901,\"ĠDudley\":86902,\"azÄĥ\":86903,\"Ġtaxing\":86904,\"ĠÐ·Ð°ÐºÐ°Ð·\":86905,\"_ASM\":86906,\"Neutral\":86907,\"traditional\":86908,\"Playable\":86909,\"Ġspaghetti\":86910,\"ĠiCloud\":86911,\"ĠDaytona\":86912,\"Ġwerde\":86913,\"ĠANT\":86914,\"ĠPron\":86915,\"ĠStations\":86916,\"Ġattest\":86917,\"Ġfuller\":86918,\"Ġnovamente\":86919,\"]\\\\\\\\\":86920,\"cce\":86921,\"(deck\":86922,\"/ayushman\":86923,\"igsaw\":86924,\"Ġadultes\":86925,\"Ġterre\":86926,\".Orders\":86927,\"ĉproperties\":86928,\"DIG\":86929,\"ĠTIMES\":86930,\"\\\"indices\":86931,\"!<\":86932,\"Monad\":86933,\"Ġnonexistent\":86934,\"ĠAtlantis\":86935,\"Ġgrievances\":86936,\"urence\":86937,\"ĠIPPROTO\":86938,\"âĻĢâĻĢâĻĢâĻĢ\":86939,\"Ġempleado\":86940,\"ĠÙĥ\":86941,\".MoveNext\":86942,\"ĠIso\":86943,\"beautiful\":86944,\"Ġsoluble\":86945,\"Ġsluggish\":86946,\"Ġdiffs\":86947,\"_OBS\":86948,\"xmin\":86949,\"Ġtumble\":86950,\"ĠUnary\":86951,\"Ġzipfile\":86952,\"Ġsvenska\":86953,\"erland\":86954,\"/cupertino\":86955,\"ĉscript\":86956,\"isches\":86957,\"ModifiedDate\":86958,\"Ġveya\":86959,\"Ġdeterminant\":86960,\"ĠGorgeous\":86961,\"gboolean\":86962,\"ĠLOD\":86963,\"dcc\":86964,\"scenes\":86965,\"ĠTSRMLS\":86966,\"(TypeError\":86967,\"Ġcamouflage\":86968,\"Ġburge\":86969,\"Them\":86970,\".Assign\":86971,\"ĠlastIndex\":86972,\"_sphere\":86973,\"_ABI\":86974,\"ÃĦ\":86975,\"ilage\":86976,\"\\\\xff\":86977,\"Ġkayak\":86978,\"Ġfizz\":86979,\"uiten\":86980,\".ShouldBe\":86981,\"Ġhtonl\":86982,\"ĠPetite\":86983,\"Ġheals\":86984,\"ĠOsaka\":86985,\"NJ\":86986,\"InParameter\":86987,\"ĠBirch\":86988,\"Ġcommentaire\":86989,\"ĠSiege\":86990,\"Ġkeycode\":86991,\"-intensive\":86992,\"propTypes\":86993,\"Exports\":86994,\"ĠbuttonText\":86995,\"ĠGodzilla\":86996,\".Exchange\":86997,\"Ġunderstandably\":86998,\"Ġaccordion\":86999,\"ĠrÃ©gion\":87000,\"Ġmarkedly\":87001,\"anooga\":87002,\"Ġcontrat\":87003,\"_lift\":87004,\"[date\":87005,\"Ġscorn\":87006,\"ĠDataManager\":87007,\"âĢ¦âĢ¦ĊĊ\":87008,\"_COMPILER\":87009,\"ĠClaw\":87010,\"odate\":87011,\"Ġunderage\":87012,\"ĠImplemented\":87013,\"Cli\":87014,\"Kal\":87015,\"Productos\":87016,\"Ġenfermed\":87017,\"Ã©is\":87018,\"Ġdiscredit\":87019,\"ĠSamoa\":87020,\"ĠPresented\":87021,\"Ġcinemat\":87022,\"\\\\ActiveForm\":87023,\"Ġfern\":87024,\"ĠPrimer\":87025,\"æĤ¨\":87026,\"gere\":87027,\"Ġillusions\":87028,\"notated\":87029,\"Ġpoj\":87030,\"ĠmodelName\":87031,\"ĠPMC\":87032,\"Ġdecad\":87033,\"Ġforestry\":87034,\"voie\":87035,\"...ĊĊĊĊĊĊ\":87036,\"Ġ}};Ċ\":87037,\"ĠtokenId\":87038,\"ammu\":87039,\"ĠPersonen\":87040,\"ĠVERBOSE\":87041,\"Ġpatrols\":87042,\"Ġantic\":87043,\"_deep\":87044,\"egend\":87045,\"ĠSetProperty\":87046,\"ĠGareth\":87047,\"ĠMAS\":87048,\".restaurant\":87049,\"ĠHeavenly\":87050,\"iedo\":87051,\"_lead\":87052,\"ĠFuji\":87053,\"QN\":87054,\"Massage\":87055,\"ĠparamMap\":87056,\"Ġcita\":87057,\"_Speed\":87058,\"(bbox\":87059,\"ĠJUL\":87060,\"âĢĻan\":87061,\"Ġmente\":87062,\"ĠShowcase\":87063,\"ĠCSI\":87064,\">Type\":87065,\".Sn\":87066,\"otypical\":87067,\"ĠFallon\":87068,\".UTC\":87069,\"Ġpredatory\":87070,\"Ġorganising\":87071,\"cold\":87072,\"Ġparsers\":87073,\"uien\":87074,\"Ġcompilers\":87075,\"Ġ[=\":87076,\"ĠEuras\":87077,\"MOST\":87078,\"ĊĠĠĠĠĊĊ\":87079,\"RAR\":87080,\".Schedule\":87081,\".operations\":87082,\"ufs\":87083,\"Ã±ana\":87084,\"Ġpreocup\":87085,\"-treated\":87086,\".getWorld\":87087,\".':\":87088,\"ĠATH\":87089,\":start\":87090,\"Ġautoimmune\":87091,\"ĠBlackjack\":87092,\"_FINISH\":87093,\"(floor\":87094,\"Ġwreckage\":87095,\"URT\":87096,\".Brand\":87097,\"pais\":87098,\"cimal\":87099,\"ciÃ³\":87100,\"NFL\":87101,\"-equipped\":87102,\".contentOffset\":87103,\"Ġovercrow\":87104,\"ĠTZ\":87105,\"Ġodom\":87106,\"ĠCellular\":87107,\"ĉwritel\":87108,\"(inputStream\":87109,\"(pref\":87110,\"-stock\":87111,\"ĠDenied\":87112,\"-supported\":87113,\"Ġ'((\":87114,\"ancode\":87115,\".filtered\":87116,\"Dims\":87117,\"Ġjb\":87118,\"ĉprice\":87119,\"Ġ@@Ċ\":87120,\"nock\":87121,\".openConnection\":87122,\"Ġantics\":87123,\"resultCode\":87124,\"Playback\":87125,\"Ġcelular\":87126,\"ĠFOOD\":87127,\"ĠPodesta\":87128,\"=message\":87129,\".performance\":87130,\"ĠDmitry\":87131,\"altimore\":87132,\"Ġplated\":87133,\"Ġtuberculosis\":87134,\"_gem\":87135,\"(Editor\":87136,\"Tpl\":87137,\"Ġcrian\":87138,\"Ġbuffering\":87139,\"è§Ĩé¢ĳ\":87140,\"Ġ')ĊĊ\":87141,\"Vu\":87142,\"Mathf\":87143,\"Ġtimelines\":87144,\"ĠTata\":87145,\"/pp\":87146,\"Ġplast\":87147,\"ĠTruly\":87148,\"ĠSubstitute\":87149,\"kiem\":87150,\"kaar\":87151,\"ĠVish\":87152,\"'hui\":87153,\"ĠMagick\":87154,\"/Layout\":87155,\"uranÃ§a\":87156,\"_ttl\":87157,\"HideInInspector\":87158,\".keywords\":87159,\"ListModel\":87160,\"_Success\":87161,\"ilihan\":87162,\"Ġblackmail\":87163,\"ĠSerbian\":87164,\"quelle\":87165,\"ĠDysfunction\":87166,\"ĠPrepared\":87167,\"ĠjMenuItem\":87168,\"ĠloginUser\":87169,\"setattr\":87170,\".CR\":87171,\"_lcd\":87172,\"ĠbytesRead\":87173,\"Ġcdecl\":87174,\"Ġtownship\":87175,\"pek\":87176,\"ijkstra\":87177,\"Ġmaximizing\":87178,\".providers\":87179,\"Investigators\":87180,\"Ġshootout\":87181,\"Ġairspace\":87182,\"toolbox\":87183,\"QWidget\":87184,\"=pk\":87185,\"Ġporter\":87186,\"ĠPredator\":87187,\"ĠSunrise\":87188,\"Ġdevour\":87189,\"ĉUInt\":87190,\"ittance\":87191,\"SPA\":87192,\"_endian\":87193,\"ĠNagar\":87194,\"venida\":87195,\"/opt\":87196,\"ByEmail\":87197,\"ĠPhysician\":87198,\"\\\\D\":87199,\"ĠÐ¼Ñĭ\":87200,\"YEAR\":87201,\"ICC\":87202,\"/portfolio\":87203,\".executor\":87204,\"udem\":87205,\"Fallback\":87206,\"udu\":87207,\"Slim\":87208,\"Ã³ln\":87209,\"^{-\":87210,\"anske\":87211,\"Ġhustle\":87212,\"ĠIrene\":87213,\"Ġabyss\":87214,\"ĠRobbins\":87215,\"Ġindexer\":87216,\"Saudi\":87217,\"Ġwholesome\":87218,\"-slot\":87219,\"ĠTecn\":87220,\"ĠpageTitle\":87221,\"Ġcontestant\":87222,\"icopter\":87223,\"ĠcourseId\":87224,\"Chr\":87225,\"ĠAXIS\":87226,\"forder\":87227,\"_TUN\":87228,\"Traffic\":87229,\"Ġtypealias\":87230,\"Ġdarf\":87231,\"-uri\":87232,\"tsx\":87233,\".destroyAllWindows\":87234,\"Ġiterating\":87235,\"Reaction\":87236,\"ĉAM\":87237,\"Ġcuent\":87238,\"-cookie\":87239,\"Ġflavored\":87240,\"stoi\":87241,\"Ġflirting\":87242,\"ãĢĭï¼Į\":87243,\"à¤®\":87244,\"_CRYPTO\":87245,\"[token\":87246,\"Ġproletariat\":87247,\".âĢĻâĢĿĊĊ\":87248,\"ĉdc\":87249,\".StringVar\":87250,\"Ġlegitimately\":87251,\"_decorator\":87252,\"Locker\":87253,\"ĠJenna\":87254,\"URING\":87255,\"åĨį\":87256,\"_Printf\":87257,\"ATORY\":87258,\"-dist\":87259,\"Ġ\\\".\\\");Ċ\":87260,\".quiz\":87261,\"Ġirgend\":87262,\"-league\":87263,\"gien\":87264,\"ĠProduced\":87265,\"Helmet\":87266,\"åı¯èĥ½\":87267,\"Platforms\":87268,\"ĠResourceManager\":87269,\"ĠHundred\":87270,\"rometer\":87271,\"engkap\":87272,\"Hop\":87273,\"Ġpossui\":87274,\"BeforeEach\":87275,\"ĠCHK\":87276,\"ĠIMS\":87277,\"Ticker\":87278,\"Ġgrinned\":87279,\".getAs\":87280,\"Ġimposes\":87281,\"]\\\")\":87282,\"Forget\":87283,\"/import\":87284,\"Ġinjecting\":87285,\"Lov\":87286,\"Ġabril\":87287,\"_slices\":87288,\"-comm\":87289,\"ĠPRODUCTS\":87290,\"ĠOasis\":87291,\"ĠÃ¸ns\":87292,\"ĠReject\":87293,\"Ġregularization\":87294,\"implicitly\":87295,\"naz\":87296,\"Specifier\":87297,\"Ġimpoverished\":87298,\"æļ\":87299,\"Ġnominate\":87300,\"ĠOVERRIDE\":87301,\"ĠBands\":87302,\"ethyst\":87303,\"ĠJian\":87304,\"Ġnewcomer\":87305,\"ĠNab\":87306,\"Ġebp\":87307,\"ĠPager\":87308,\"ĠHumb\":87309,\"/cc\":87310,\"ĠexpÃ©rience\":87311,\"udging\":87312,\"Mb\":87313,\"dbuf\":87314,\"'/>\":87315,\"ĠocksÃ¥\":87316,\"ĠjdbcTemplate\":87317,\"ĠSHIPPING\":87318,\"Ġinterdisciplinary\":87319,\"ĠCET\":87320,\"autop\":87321,\"-symbol\":87322,\"avec\":87323,\"Ġcompounded\":87324,\"ĠChung\":87325,\"_SMS\":87326,\"-ie\":87327,\"ĠProsecutor\":87328,\"ĠLeia\":87329,\"ĠMandela\":87330,\"SingleOrDefault\":87331,\"ĉREQUIRE\":87332,\"atown\":87333,\"urrets\":87334,\"æĸĩåŃĹ\":87335,\"ĠCONTEXT\":87336,\"ENSITY\":87337,\"Ġinsurgents\":87338,\"ĠDias\":87339,\".station\":87340,\"ĠKlan\":87341,\"_measurement\":87342,\"_QMARK\":87343,\"Ġstoi\":87344,\"MOOTH\":87345,\">');ĊĊ\":87346,\"Ġingestion\":87347,\"ĠGlow\":87348,\"utches\":87349,\"bearing\":87350,\".toastr\":87351,\"Ġfragmentation\":87352,\"ippo\":87353,\"_SEGMENT\":87354,\"Ġstumbling\":87355,\"imar\":87356,\"stinian\":87357,\"_()Ċ\":87358,\"Ġmotivational\":87359,\"ListItemText\":87360,\"Ġwomens\":87361,\"OpenHelper\":87362,\"iband\":87363,\"ĠbtnSave\":87364,\"Ġincorporation\":87365,\"Ġdocumentaries\":87366,\"icl\":87367,\"ĠNd\":87368,\"ĠAra\":87369,\"Ġquake\":87370,\"ĠCummings\":87371,\"htm\":87372,\"astered\":87373,\".dtp\":87374,\"Ġcondos\":87375,\"ĠGundam\":87376,\"/disable\":87377,\"hydrate\":87378,\"ĠEpoch\":87379,\"Ġnationalists\":87380,\"Ġdever\":87381,\",request\":87382,\".getVersion\":87383,\"CELER\":87384,\"ĠSalah\":87385,\"Ġmote\":87386,\"ĠMellon\":87387,\"spotify\":87388,\"Ġorigen\":87389,\"Ġnale\":87390,\"Ġadversaries\":87391,\".JTable\":87392,\"forcements\":87393,\"ĠRetreat\":87394,\"Ġarchivos\":87395,\"Ġslashes\":87396,\".MouseDown\":87397,\"<::\":87398,\"_through\":87399,\"Alamat\":87400,\".blur\":87401,\"_finder\":87402,\"Ġallure\":87403,\"Peripheral\":87404,\"_passed\":87405,\"_challenge\":87406,\"ĠPaleo\":87407,\"INI\":87408,\"Dire\":87409,\"sphere\":87410,\"(COLOR\":87411,\"ackers\":87412,\"ĠGlyph\":87413,\"(integer\":87414,\"ĠÐºÐ¾\":87415,\"ĠRelevant\":87416,\"ĠÙ¾\":87417,\"Ġatas\":87418,\"_prim\":87419,\"ĠMUT\":87420,\"ninger\":87421,\"autoreleasepool\":87422,\"=__\":87423,\"ĠSigning\":87424,\"íķĺì§Ģ\":87425,\"Ġucz\":87426,\"EditingStyle\":87427,\"ĠHeater\":87428,\"ĠFairfield\":87429,\"ĠBeard\":87430,\",en\":87431,\"usat\":87432,\"('.'\":87433,\"/stream\":87434,\"ĠgetSupportFragmentManager\":87435,\"ĠmCurrent\":87436,\"_STATES\":87437,\"_wind\":87438,\"CHAPTER\":87439,\"probability\":87440,\"(annotation\":87441,\"Ġ*/čĊčĊčĊ\":87442,\".Unique\":87443,\".AddField\":87444,\"Higher\":87445,\".digital\":87446,\".experimental\":87447,\"awl\":87448,\"Ġwhence\":87449,\"ernote\":87450,\"SAME\":87451,\".ipv\":87452,\"toBeFalsy\":87453,\"brane\":87454,\"_categorical\":87455,\"Aura\":87456,\"ĠTypeScript\":87457,\"Ġspontaneously\":87458,\"longleftrightarrow\":87459,\"ikal\":87460,\"_TODO\":87461,\"ĠWyatt\":87462,\"Ġflurry\":87463,\"dif\":87464,\"Ġreckon\":87465,\"ĠCoroutine\":87466,\"ĉfflush\":87467,\"Ġworkflows\":87468,\"ĠFAMILY\":87469,\"sprites\":87470,\"_Work\":87471,\".GetSize\":87472,\"ĠConstraints\":87473,\"BigInt\":87474,\"itia\":87475,\"getRow\":87476,\"Ġduk\":87477,\"ĠisNew\":87478,\"ĠProdukte\":87479,\"xCB\":87480,\"isiert\":87481,\"funcs\":87482,\"ĠAdemÃ¡s\":87483,\"BindingUtil\":87484,\"ompiler\":87485,\"-inv\":87486,\"Ġchants\":87487,\"Ġentsprech\":87488,\"(ti\":87489,\"_IA\":87490,\"Ð¾ÑĢÐ´Ð¸Ð½\":87491,\"ĠFALL\":87492,\"imd\":87493,\"Ġlocaltime\":87494,\"<Link\":87495,\"Ð½Ð¸ÐºÐ°\":87496,\"Ġprofiler\":87497,\"ĠgetUserId\":87498,\"ĠPhysicians\":87499,\"RAD\":87500,\"Ġhmm\":87501,\"ĠNess\":87502,\"ĠTempo\":87503,\"ĠJT\":87504,\"Ġreconnaissance\":87505,\"<translation\":87506,\"Ġenticing\":87507,\"Ġquaint\":87508,\"Ġcoupe\":87509,\"__',\":87510,\"NASDAQ\":87511,\"ĠÐ·Ð½Ð°ÑĩÐµÐ½Ð¸Ñı\":87512,\"PERATURE\":87513,\"ĠPai\":87514,\"Ġtetas\":87515,\"CAS\":87516,\"IRROR\":87517,\"Ġkc\":87518,\"Ġtote\":87519,\"Ġdrawback\":87520,\"Ġparsley\":87521,\"ĉFunction\":87522,\"isty\":87523,\"ĠDUP\":87524,\"_CID\":87525,\"_UT\":87526,\"Ġksi\":87527,\"ĠjÃ¤\":87528,\"=val\":87529,\".toHexString\":87530,\"æĿ¿\":87531,\".clips\":87532,\"Ġoffen\":87533,\"ĠTECHNO\":87534,\"ĠShame\":87535,\"Ġsusceptibility\":87536,\"Ġstupidity\":87537,\"ĠTrout\":87538,\"ĠChampagne\":87539,\"ethylene\":87540,\"Ġbegr\":87541,\"_redis\":87542,\"Yep\":87543,\"Ġhans\":87544,\"ĠDefendant\":87545,\"Ġdashes\":87546,\"ĠuserType\":87547,\"_datos\":87548,\"Ġunic\":87549,\"krit\":87550,\"Ġreceptive\":87551,\"ĠGret\":87552,\"(mb\":87553,\"ĠInflu\":87554,\"Ã«n\":87555,\"}/>\":87556,\"interesting\":87557,\"UTURE\":87558,\"ĠimageSize\":87559,\"Ġgrd\":87560,\"Ġabsol\":87561,\"/fa\":87562,\".gradient\":87563,\"Ġwyst\":87564,\"]}>Ċ\":87565,\"legation\":87566,\"//------------------------------------------------------------------------------ĊĊ\":87567,\"ĠBlender\":87568,\"__);\":87569,\"ĠuserEmail\":87570,\"ĠPhar\":87571,\"lehem\":87572,\"))?\":87573,\"(Return\":87574,\"egra\":87575,\"utivo\":87576,\"Ġappendix\":87577,\"ĠRTVF\":87578,\"ĠSEAL\":87579,\"Ġgypsum\":87580,\"_Arg\":87581,\"Ġilluminate\":87582,\"ĠSchiff\":87583,\"quil\":87584,\".ComboBoxStyle\":87585,\"']))ĊĊ\":87586,\"Ġalters\":87587,\"Ġpractise\":87588,\"Ġust\":87589,\"ĠDimit\":87590,\"-Regular\":87591,\"Ġcreeping\":87592,\"ĠCanadiens\":87593,\"Ġretorn\":87594,\"-corner\":87595,\"Ġ\\\"]\\\"\":87596,\"(rng\":87597,\"Ġcanadian\":87598,\"Ġposto\":87599,\".assertAlmostEqual\":87600,\"ĠBecky\":87601,\"/ss\":87602,\"Ġhostages\":87603,\"Ġbiologist\":87604,\"ĠHospitality\":87605,\"ĠElk\":87606,\"ĠBarang\":87607,\"ëª©\":87608,\"bbbb\":87609,\".teacher\":87610,\"Ġterminates\":87611,\"ĠisError\":87612,\"ĠKendrick\":87613,\"endars\":87614,\"ĠSuggestions\":87615,\"Cel\":87616,\"ĠServiceProvider\":87617,\"ĠWichita\":87618,\"])),Ċ\":87619,\"Ġheadlights\":87620,\"_venta\":87621,\"ANTI\":87622,\"Ġpropiedad\":87623,\"Ġenlist\":87624,\"ĉorg\":87625,\"Messenger\":87626,\".land\":87627,\"\\\"'Ċ\":87628,\"aspers\":87629,\"Ġters\":87630,\"filt\":87631,\"ĠFunctor\":87632,\"Ġsling\":87633,\"_BLK\":87634,\"-European\":87635,\"ĠAchilles\":87636,\"\\\\Entities\":87637,\".DisplayMember\":87638,\"Ġredevelopment\":87639,\"ĉhelp\":87640,\"Ġ['-\":87641,\"ĠJulien\":87642,\"=Integer\":87643,\".isNullOrEmpty\":87644,\"ĠWoW\":87645,\"Payments\":87646,\"(hdr\":87647,\"Ġbaja\":87648,\"ĠJComboBox\":87649,\"Firefox\":87650,\"Ġconglomer\":87651,\"_cust\":87652,\"$\\\")Ċ\":87653,\"Ġmutants\":87654,\"Magn\":87655,\"ĠMPH\":87656,\"{_\":87657,\"_warnings\":87658,\"Ġgast\":87659,\"Lt\":87660,\"Ġtrainable\":87661,\"Trademark\":87662,\"BASH\":87663,\"ĠECS\":87664,\"Retrieve\":87665,\"'O\":87666,\"Ġinitialised\":87667,\"Ġchemin\":87668,\".Transport\":87669,\"ĠYing\":87670,\"asions\":87671,\"Ġmoc\":87672,\"_LOGGER\":87673,\"GENCY\":87674,\"ĠBlogger\":87675,\"Ġ\\\")\\\"Ċ\":87676,\"PEnd\":87677,\"Ġaccompagn\":87678,\".CODE\":87679,\"ĠmList\":87680,\"-educated\":87681,\",/\":87682,\"ĠMerrill\":87683,\"/people\":87684,\".'''Ċ\":87685,\"_todo\":87686,\"ĠgÃ¼n\":87687,\"_FULLSCREEN\":87688,\".cleanup\":87689,\"Unmarshaller\":87690,\".SuppressLint\":87691,\"Ġonslaught\":87692,\"ĠMarseille\":87693,\"ediator\":87694,\"_ENTRIES\":87695,\",default\":87696,\"meldung\":87697,\"elfth\":87698,\"ĠGovernments\":87699,\"Ġpleas\":87700,\"otts\":87701,\"Ġplunder\":87702,\"readOnly\":87703,\"Ġdysfunctional\":87704,\"'Neill\":87705,\"Ġunloaded\":87706,\"Ġsqueezing\":87707,\"Ġdood\":87708,\".addData\":87709,\"ĠAsi\":87710,\"MES\":87711,\"(schedule\":87712,\"Ġadventurers\":87713,\"expectException\":87714,\"Ġ}}>{\":87715,\"CLS\":87716,\"Ġrecher\":87717,\"ĠderniÃ¨re\":87718,\".Details\":87719,\"ĠrandomNumber\":87720,\"Ġiar\":87721,\"ĠLange\":87722,\"ewe\":87723,\"ĠEmil\":87724,\"Ġadverts\":87725,\"Ġdramas\":87726,\"ĠKomm\":87727,\"ĠĠĉĉĉĉ\":87728,\"_TestCase\":87729,\"ĠClarence\":87730,\"ÐµÐ½ÑĤÐ°\":87731,\"toupper\":87732,\".onSubmit\":87733,\"caa\":87734,\"_ALARM\":87735,\"*)ĊĊ\":87736,\"Ġë³Ģê²½\":87737,\".Private\":87738,\"Ġskyline\":87739,\"RAIN\":87740,\"(curl\":87741,\"osite\":87742,\"Ignoring\":87743,\"Ġvz\":87744,\"Ġvedere\":87745,\"ĠOSX\":87746,\"banana\":87747,\"Ġmetam\":87748,\"ĠtranslateY\":87749,\"ĠMcGr\":87750,\"âĢĻacc\":87751,\"ä»¥ä¸ĭ\":87752,\"Ġspiritually\":87753,\"(enabled\":87754,\"Ġrestores\":87755,\"ĠbtnCancel\":87756,\"vanished\":87757,\"ĠNuevo\":87758,\"Salvar\":87759,\"caffe\":87760,\"Ġmastering\":87761,\"iddled\":87762,\".isdigit\":87763,\"Ġgravy\":87764,\"agedList\":87765,\"\\\\Resources\":87766,\"Ġdownfall\":87767,\".Pass\":87768,\"Ġaltijd\":87769,\"Ġpizzas\":87770,\"Ġ}))\":87771,\"perms\":87772,\"ighton\":87773,\"Ġrepell\":87774,\"Ġ''),\":87775,\".normalized\":87776,\"Ġmarches\":87777,\"ĉresolve\":87778,\"ChildScrollView\":87779,\"ĠInstitutions\":87780,\"Attendance\":87781,\"lse\":87782,\"erdem\":87783,\".getInput\":87784,\"HasBeen\":87785,\"apeutics\":87786,\"Ġ*\\\\\":87787,\"ĠRitual\":87788,\"_LS\":87789,\"Ġspotify\":87790,\"ĠspÃ¤ter\":87791,\"ĠThumbnail\":87792,\"(cert\":87793,\"ĠgetResource\":87794,\"_plots\":87795,\"Ġstaining\":87796,\"adjusted\":87797,\"Ġ×©\":87798,\"DivElement\":87799,\"ĠTTC\":87800,\"Ġaprove\":87801,\".viewer\":87802,\"|=\":87803,\"getSource\":87804,\"çĶµè¯Ŀ\":87805,\"_TB\":87806,\"_billing\":87807,\"-Life\":87808,\"Ġpsyche\":87809,\"ĠtabPage\":87810,\"ĠInfect\":87811,\"xfff\":87812,\"_hid\":87813,\"Ġapocalypse\":87814,\"ĠNFS\":87815,\"ĠITER\":87816,\"WindowSize\":87817,\"heits\":87818,\"Ġincremented\":87819,\"ĠBray\":87820,\"enegro\":87821,\"Ġalmonds\":87822,\"YPRE\":87823,\"Normalize\":87824,\"âĢľWell\":87825,\"ĠApiController\":87826,\"[Unit\":87827,\"Genres\":87828,\"ĠNex\":87829,\"ĠLNG\":87830,\"Ġforegoing\":87831,\"Ġtendon\":87832,\"ĠHp\":87833,\"Council\":87834,\"ĠSaudis\":87835,\"ĠDeze\":87836,\"Ġscraped\":87837,\"Ġbottleneck\":87838,\"ĠOrn\":87839,\"Ġunmanned\":87840,\"ĠinvokingState\":87841,\"ĠExodus\":87842,\"_ATOMIC\":87843,\"SubMenu\":87844,\"_compress\":87845,\"#.\":87846,\"Drv\":87847,\".pushButton\":87848,\"Ġsuitcase\":87849,\"ossed\":87850,\"bitrary\":87851,\"Snippet\":87852,\"ĠEpidemi\":87853,\"Disallow\":87854,\"_CHK\":87855,\"Ġverifies\":87856,\"ĠCatalyst\":87857,\"âĢĶfrom\":87858,\"Ġcontaminants\":87859,\"Johnny\":87860,\"(fil\":87861,\"Ġderen\":87862,\"Ġoutcry\":87863,\"ĠJohann\":87864,\"<Tag\":87865,\"_san\":87866,\"Ġstddev\":87867,\"Ġparalyzed\":87868,\"ĠLexus\":87869,\"osate\":87870,\"ĠCharset\":87871,\"ĠRealt\":87872,\"=?\\\",\":87873,\"(Default\":87874,\"ĠTreasurer\":87875,\"Eine\":87876,\"Ġuntrue\":87877,\"Ġfinanzi\":87878,\"Ġbehavioural\":87879,\"Ġnipple\":87880,\"ĠRadical\":87881,\"ĠPaz\":87882,\"ĠMaison\":87883,\"-employed\":87884,\"Ġwereld\":87885,\"Ġjos\":87886,\"ĠDied\":87887,\"entreprise\":87888,\"$rows\":87889,\"Ġspoof\":87890,\"ĠÂ».\":87891,\"Ġkeypoints\":87892,\"Ġcupcakes\":87893,\"Ġ{});ĊĊ\":87894,\"chine\":87895,\"âĢĭâĢĭ\":87896,\",LOCATION\":87897,\"Ġplywood\":87898,\"Ġmagg\":87899,\"ĠRao\":87900,\"ĠDPR\":87901,\"Ġebooks\":87902,\")size\":87903,\"Ġspecialised\":87904,\"#ae\":87905,\"Ġmichael\":87906,\"ĠSTDOUT\":87907,\"ĠPell\":87908,\"AMERA\":87909,\"angelo\":87910,\"Ġingin\":87911,\"ĠmAuth\":87912,\"Ġlegalize\":87913,\"ĠCuando\":87914,\"Ġcerto\":87915,\"Ġlitres\":87916,\"ĠExtras\":87917,\"SHORT\":87918,\"Ġprematurely\":87919,\"ĠSemaphore\":87920,\"HEN\":87921,\"Ġamphib\":87922,\"ĠhÃ©\":87923,\"Exiting\":87924,\"euillez\":87925,\"ĠTMPro\":87926,\".preferences\":87927,\".getInfo\":87928,\"Ã©tica\":87929,\"\\\"\\\"\\\".\":87930,\".newArrayList\":87931,\"Ġkron\":87932,\"ĠBLL\":87933,\"cline\":87934,\"_gb\":87935,\"ĠTomas\":87936,\"probante\":87937,\"ITIONAL\":87938,\"á»ĳi\":87939,\"ĠLod\":87940,\"Isn\":87941,\",{Ċ\":87942,\"Ġkommun\":87943,\"wdx\":87944,\"genome\":87945,\"éĢ£\":87946,\"toHaveLength\":87947,\"'E\":87948,\"ĠpÃºblica\":87949,\"ĠDetected\":87950,\"Ġ_ĊĊ\":87951,\"ÑĮÑİ\":87952,\"+S\":87953,\"cloth\":87954,\"Rotor\":87955,\".numero\":87956,\"_stand\":87957,\"GCC\":87958,\"êµ\":87959,\"_vp\":87960,\"_FAR\":87961,\"Ahead\":87962,\"{}\\\\\":87963,\"(correct\":87964,\"\\\"crypto\":87965,\"modulo\":87966,\"_UTILS\":87967,\".Var\":87968,\"-men\":87969,\"Ġveniam\":87970,\"ĠMcCorm\":87971,\"getLocation\":87972,\"[code\":87973,\"%f\":87974,\"Ġdiffered\":87975,\"IPAddress\":87976,\"ĠStrawberry\":87977,\"ĠSahara\":87978,\"createClass\":87979,\"!/\":87980,\"Ġmemberships\":87981,\"Ġpronounce\":87982,\".Constraint\":87983,\"ĠEnrollment\":87984,\"Ġrenewables\":87985,\".gt\":87986,\"izzie\":87987,\"rzy\":87988,\"ersen\":87989,\"<=$\":87990,\"DELAY\":87991,\"Ġsignin\":87992,\"ĠPSU\":87993,\"AppName\":87994,\"}\\\\.[\":87995,\"EGA\":87996,\"Ġcient\":87997,\"ĠSynopsis\":87998,\"ĠletterSpacing\":87999,\"Ġchilds\":88000,\"ĠScaling\":88001,\")prepare\":88002,\"Ġcommuter\":88003,\"Slash\":88004,\"ouser\":88005,\"Ġwatermark\":88006,\"ĠUIScreen\":88007,\"olian\":88008,\"ĉvertices\":88009,\">Action\":88010,\"Ġaph\":88011,\"hands\":88012,\"ĠOCC\":88013,\"HU\":88014,\"Ġsecluded\":88015,\"Ġvisceral\":88016,\"Ġvideog\":88017,\"ĠSamurai\":88018,\"ĠZuk\":88019,\"ĠWidow\":88020,\"accine\":88021,\"Ġlille\":88022,\"ĠRyder\":88023,\"ĠProgrammer\":88024,\"Exporter\":88025,\"Ġmovimiento\":88026,\"apas\":88027,\"Ġleider\":88028,\"ulares\":88029,\"ieme\":88030,\"-density\":88031,\"descending\":88032,\"(IT\":88033,\"Ġscraper\":88034,\"Ġiceberg\":88035,\"_CRITICAL\":88036,\"Ġaute\":88037,\"_Style\":88038,\"ĠMAL\":88039,\"ĠHector\":88040,\"-Christian\":88041,\"Ġdifferentiated\":88042,\"ĠBison\":88043,\"ĠĠĠĠĠĠĠĉ\":88044,\".population\":88045,\"Rio\":88046,\"-Tr\":88047,\"=Value\":88048,\"ĠLuft\":88049,\"ĠGiuliani\":88050,\"çľŁ\":88051,\"Coupon\":88052,\"Ġhaciendo\":88053,\"ãĥĿ\":88054,\"ponce\":88055,\"_residual\":88056,\"Ġliá»ĩu\":88057,\"\\\\uff\":88058,\"Ð¾Ð±ÑħÐ¾Ð´Ð¸Ð¼\":88059,\"Ġrespecto\":88060,\"ĠDesired\":88061,\"DataStream\":88062,\".sax\":88063,\"Ġmop\":88064,\"ĠHacker\":88065,\"ANTA\":88066,\"Anc\":88067,\"Venta\":88068,\"ĠWordpress\":88069,\"ĉeffect\":88070,\"adapt\":88071,\"ĠInterviews\":88072,\"Ġdrawbacks\":88073,\"ALLENG\":88074,\"ĠgÃ©nÃ©ral\":88075,\"-badge\":88076,\"Resistance\":88077,\"ĠOSI\":88078,\"tournament\":88079,\"ĠReputation\":88080,\"ĠEisenhower\":88081,\"Filed\":88082,\"Ġhebt\":88083,\"#\\\\\":88084,\"createQueryBuilder\":88085,\"æľīæķĪ\":88086,\"vanced\":88087,\".HasKey\":88088,\"dde\":88089,\"(startTime\":88090,\"ĠInstaller\":88091,\"ĠImpl\":88092,\"coach\":88093,\"Ġpreached\":88094,\"Ġbrewed\":88095,\"Installer\":88096,\"olvable\":88097,\"Ġalas\":88098,\"(spell\":88099,\"############################\":88100,\"Ġdefamation\":88101,\"(Arg\":88102,\"ĠuserDetails\":88103,\"Ġlicensors\":88104,\"ĠInvestigations\":88105,\"Ġdiner\":88106,\"Ġfict\":88107,\"Stick\":88108,\"Neighbor\":88109,\"toThrow\":88110,\"-sector\":88111,\"Ġrisult\":88112,\"âĢĻ:\":88113,\"JNIEnv\":88114,\"ypical\":88115,\"designation\":88116,\"(wp\":88117,\"ĠconfirmPassword\":88118,\"-ios\":88119,\"Ġ\\\"-\\\";Ċ\":88120,\"ĉassertNotNull\":88121,\"addError\":88122,\"avras\":88123,\"Vm\":88124,\"(jQuery\":88125,\"ĠVictims\":88126,\"Ġreliant\":88127,\"ĠBlitz\":88128,\"Ġoutage\":88129,\"Ġfluoride\":88130,\"ĠTNT\":88131,\".Disclaimer\":88132,\"ĠSNMP\":88133,\"vably\":88134,\"Ġphotons\":88135,\".ReadAsStringAsync\":88136,\"Scheduled\":88137,\"Ġjewish\":88138,\"ĠGeoffrey\":88139,\"ĠGranny\":88140,\"~Ċ\":88141,\"-messages\":88142,\"(goal\":88143,\"Ġargent\":88144,\"ĠPest\":88145,\"Ġcongratulate\":88146,\"inosaur\":88147,\"Ġwhispers\":88148,\"Ġsistemas\":88149,\"ĠFÃ©\":88150,\"/Index\":88151,\".MILLISECONDS\":88152,\"Ġachievable\":88153,\"ĠBrittany\":88154,\"++++++++++++++++++++++++++++++++\":88155,\"ĠReturnType\":88156,\"Ġinfix\":88157,\".isSuccess\":88158,\".Categories\":88159,\"Ġoutlier\":88160,\".Asset\":88161,\"otec\":88162,\"Ġwizards\":88163,\"Ġbootloader\":88164,\"_ber\":88165,\"Ġrehabilit\":88166,\"antor\":88167,\"ĠVivo\":88168,\"ĠGarmin\":88169,\"objectId\":88170,\"@Path\":88171,\"ĠÃºnica\":88172,\"ĠYorkers\":88173,\"GuidId\":88174,\"$errors\":88175,\"Ġ+=Ċ\":88176,\"Ġaxiom\":88177,\"ĠPSI\":88178,\"ĠSucc\":88179,\"ĠSpokane\":88180,\"Ġ'\\\".$_\":88181,\"ĠLN\":88182,\".newLine\":88183,\"Ġintersects\":88184,\"lichkeit\":88185,\"ĠIAM\":88186,\".DropDownItems\":88187,\"Ġcourteous\":88188,\"ĠSmithsonian\":88189,\"ĠHmm\":88190,\"QDebug\":88191,\"straight\":88192,\"_sold\":88193,\"Bulk\":88194,\"TriState\":88195,\"ĠaddButton\":88196,\"ĠHiring\":88197,\"Transpose\":88198,\"ĠUITextView\":88199,\"istencia\":88200,\"/cpp\":88201,\"ĠÐ¿Ð¾Ð»Ñı\":88202,\"ĠCookbook\":88203,\"/Application\":88204,\"genic\":88205,\"ĠWooCommerce\":88206,\",vector\":88207,\"ĠBite\":88208,\".hw\":88209,\"Ġdocking\":88210,\"ĠTantra\":88211,\"ĠSVC\":88212,\"ĠMaurit\":88213,\"ialias\":88214,\"ĠAure\":88215,\"Ġbols\":88216,\"LOCITY\":88217,\"ĠWestbrook\":88218,\"ĠBPM\":88219,\"ĠFey\":88220,\"ĠSovere\":88221,\"Ġpanda\":88222,\"Ġquizzes\":88223,\"Ġcreo\":88224,\"speech\":88225,\"/dir\":88226,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²\":88227,\"Ġfoundational\":88228,\"-append\":88229,\"nThe\":88230,\"ĠapiUrl\":88231,\".XPATH\":88232,\"ĠLingu\":88233,\"ĠExhaust\":88234,\"Pakistan\":88235,\"Ġomap\":88236,\"ĠfontStyle\":88237,\"ÐµÑģÑĤÐ¸\":88238,\"Ġmanslaughter\":88239,\"_Long\":88240,\"Ġcarpets\":88241,\"Chess\":88242,\"elight\":88243,\"DrawerToggle\":88244,\"ĠPatty\":88245,\"_crossentropy\":88246,\"Ġtweaking\":88247,\"ÑĤÑĥ\":88248,\"ĠCALC\":88249,\"sip\":88250,\"ĠJMP\":88251,\"_________________ĊĊ\":88252,\"TreeView\":88253,\"-wave\":88254,\"Ġpasture\":88255,\"eliminar\":88256,\"Ġery\":88257,\"Ġrestless\":88258,\"êµ¬\":88259,\"Ġmariage\":88260,\"ĠEllie\":88261,\"_='\":88262,\"Ġvmin\":88263,\"Kick\":88264,\".toolbox\":88265,\"ĠMarino\":88266,\"ypsy\":88267,\"stdarg\":88268,\"ptrdiff\":88269,\"ĠPeaks\":88270,\"_Val\":88271,\"Ġingest\":88272,\"Ġcomps\":88273,\"Debe\":88274,\"ĠDeclarations\":88275,\"ircon\":88276,\"=all\":88277,\".Debugf\":88278,\"Prediction\":88279,\"Ġdau\":88280,\"(Member\":88281,\"Ġchiefly\":88282,\"/animate\":88283,\".Attach\":88284,\"Ġgastric\":88285,\"ĠUserDetails\":88286,\"Ã¶ren\":88287,\"koa\":88288,\"-boot\":88289,\"Ġsplice\":88290,\"lea\":88291,\"oti\":88292,\"[op\":88293,\"Squared\":88294,\"ĠscrollTo\":88295,\"ĠNewfoundland\":88296,\"ĉERROR\":88297,\"Wal\":88298,\"EMALE\":88299,\"GetY\":88300,\"Ġcabins\":88301,\"Ġabsl\":88302,\".mixer\":88303,\"Ġcdr\":88304,\"concert\":88305,\"ĠSylvia\":88306,\"BK\":88307,\"ä»Ĭå¹´\":88308,\"_CLAMP\":88309,\"ÑģÑĤÑĢÑĥÐºÑĤÐ¾ÑĢ\":88310,\"/games\":88311,\"Åĵur\":88312,\"<location\":88313,\"ĠcloseButton\":88314,\"ĠHairst\":88315,\"áº¡o\":88316,\"Ġcrumbling\":88317,\"Ġsulfate\":88318,\"Ġalguien\":88319,\"ĠJDBC\":88320,\"ĠKv\":88321,\"PIP\":88322,\"_surf\":88323,\"ĠuÅ¼ytk\":88324,\"Ġmanned\":88325,\"ĠOccasionally\":88326,\"objs\":88327,\"Minimal\":88328,\"-dess\":88329,\"ĠWAV\":88330,\"ĠErrorHandler\":88331,\"ĠsetLocation\":88332,\"Ġiets\":88333,\"Ġsubroutine\":88334,\"Ġtongues\":88335,\"_quiz\":88336,\"Miller\":88337,\"ĠBaseType\":88338,\"ĠVuex\":88339,\"irate\":88340,\"Seriously\":88341,\"typeid\":88342,\"Ġkutje\":88343,\"Ġprescribing\":88344,\"_survey\":88345,\".Ct\":88346,\"Ġblindly\":88347,\".getLabel\":88348,\",\\\");Ċ\":88349,\"Ġpotrze\":88350,\"ĠSwords\":88351,\"Sortable\":88352,\"ĠBlackburn\":88353,\"ĠMata\":88354,\"Ġponds\":88355,\"Ġprotestors\":88356,\"ĠEnsemble\":88357,\":focus\":88358,\"Ġitaliana\":88359,\"Ġdormant\":88360,\"ĠNel\":88361,\"INCLUDE\":88362,\"(Conv\":88363,\"Ġbuflen\":88364,\"ĠCDN\":88365,\".xhtml\":88366,\"Hdr\":88367,\"Ġcarcinoma\":88368,\"ĠWorcester\":88369,\"ndl\":88370,\"useRal\":88371,\"useRalative\":88372,\"useRalativeImagePath\":88373,\"Ġtakeaway\":88374,\"elementGuidId\":88375,\".labelX\":88376,\"[ID\":88377,\"ALER\":88378,\"ĉuv\":88379,\">()->\":88380,\"/li\":88381,\"+len\":88382,\"Ġpropel\":88383,\"Ġcabo\":88384,\"\\\\\\\"\\\");Ċ\":88385,\"Ġvocational\":88386,\"-pill\":88387,\".nlm\":88388,\"Ġerotica\":88389,\"opot\":88390,\"landscape\":88391,\"insk\":88392,\"Ġplacements\":88393,\".setAuto\":88394,\"Ġhomicides\":88395,\"_FieldOffsetTable\":88396,\":l\":88397,\"Ġannotate\":88398,\"-rise\":88399,\",alpha\":88400,\"Ġintervening\":88401,\"ambi\":88402,\".='<\":88403,\"Ġparler\":88404,\"ï½¥ï½¥\":88405,\"Ġcomplying\":88406,\"-handle\":88407,\"Ġinterruptions\":88408,\"plers\":88409,\"roups\":88410,\"_Def\":88411,\"ĠpickerView\":88412,\"Ġpierced\":88413,\"Ġeradicate\":88414,\"mobx\":88415,\"[train\":88416,\"Deferred\":88417,\"Ġtotaled\":88418,\"ChildIndex\":88419,\"ĠRecommendations\":88420,\"_WORDS\":88421,\"Ġsignify\":88422,\"ĠAero\":88423,\"_bootstrap\":88424,\"_Up\":88425,\"productName\":88426,\"-any\":88427,\"Ġppl\":88428,\"_PUT\":88429,\"Ġlyon\":88430,\"_IList\":88431,\"ĠÃ©crit\":88432,\"(guid\":88433,\"Ġcontagious\":88434,\"_Selection\":88435,\"/language\":88436,\"quan\":88437,\"Ġacupuncture\":88438,\"Ġofrece\":88439,\"ĉRTE\":88440,\".Guna\":88441,\"Ġsensed\":88442,\"ĠKrak\":88443,\"Ġunlucky\":88444,\"avic\":88445,\"titleLabel\":88446,\"Ġhaystack\":88447,\".bitmap\":88448,\"ĠCounseling\":88449,\"PLATFORM\":88450,\"_Tool\":88451,\"Tam\":88452,\"Were\":88453,\"ÑĢÐ°Ð·\":88454,\"_SPE\":88455,\"ĠonAnimation\":88456,\"=<?=$\":88457,\"ĠSle\":88458,\"ĠGuinness\":88459,\"Ġtweaked\":88460,\"-pressure\":88461,\"_months\":88462,\")o\":88463,\"Probability\":88464,\"ĠCampos\":88465,\".CONFIG\":88466,\"Vintage\":88467,\">window\":88468,\"ĠFactoryBot\":88469,\"postgresql\":88470,\"Ġtabletop\":88471,\"ĠCata\":88472,\"hoc\":88473,\"_asc\":88474,\"âĤ¬âĢľ\":88475,\"BackStack\":88476,\"Ã©o\":88477,\"ĠSous\":88478,\"setter\":88479,\"')])Ċ\":88480,\"velle\":88481,\"ĠAluminium\":88482,\"xBA\":88483,\".mongo\":88484,\"ĠVariation\":88485,\"ytut\":88486,\"nehmer\":88487,\"á»ĥm\":88488,\"Ġeffected\":88489,\"Ġ**/čĊ\":88490,\"Ġrecounted\":88491,\"Practice\":88492,\"CANCEL\":88493,\"cznie\":88494,\"Larry\":88495,\"Ġqa\":88496,\"ĠHuffman\":88497,\"getDrawable\":88498,\"Ġenfrent\":88499,\"ĠonCancelled\":88500,\"Ġleo\":88501,\"ĠXSS\":88502,\"ĠHurricanes\":88503,\"Ġjon\":88504,\"ĠTested\":88505,\"ĠMoral\":88506,\"Ġbedtime\":88507,\"ĠJADX\":88508,\"Ġechang\":88509,\"Ġnuestras\":88510,\"PCM\":88511,\")..\":88512,\"ĠìĪĺìłķ\":88513,\"Ġborderline\":88514,\"Ġassistir\":88515,\"ĠHelps\":88516,\"ĠDive\":88517,\"_snd\":88518,\"wit\":88519,\"_blend\":88520,\"ĠisFirst\":88521,\"Ġheapq\":88522,\"('=\":88523,\"Ġassembler\":88524,\"ĠMystic\":88525,\"orgh\":88526,\"Ġhijos\":88527,\"_KHR\":88528,\"(decoded\":88529,\"ĠQUI\":88530,\"Ġ×ĳ\":88531,\"ĠcontrolId\":88532,\"Spacer\":88533,\".aggregate\":88534,\"Ġshalt\":88535,\"_trap\":88536,\"ĠFamilie\":88537,\"Î¸\":88538,\"orta\":88539,\".PostMapping\":88540,\"ì°\":88541,\"Ġ'..',\":88542,\"zÃ¡\":88543,\"/arm\":88544,\".gallery\":88545,\"Ġimpeccable\":88546,\"ĠwindowHeight\":88547,\"slack\":88548,\"ffb\":88549,\"_qp\":88550,\"laden\":88551,\"ĠTERM\":88552,\"setLabel\":88553,\"ĠSingleChildScrollView\":88554,\"yÃ¼k\":88555,\"Ġpulumi\":88556,\"-gap\":88557,\"uniacid\":88558,\"ĉholder\":88559,\".addField\":88560,\"Ġtriples\":88561,\"ĠJudgment\":88562,\"ĠCena\":88563,\"parsers\":88564,\".drawText\":88565,\"ĠÐºÐ°Ð¶Ð´\":88566,\"Ġacct\":88567,\"hive\":88568,\"Ġmusique\":88569,\"ĠYaz\":88570,\"-posts\":88571,\"Ġfils\":88572,\"Ġ//{čĊ\":88573,\"_puts\":88574,\"ĠStatue\":88575,\"diamond\":88576,\"StorageSync\":88577,\"Ġshuts\":88578,\"Ġgettimeofday\":88579,\"ĠAABB\":88580,\"ichern\":88581,\"getLocale\":88582,\"intree\":88583,\"Ġfruitful\":88584,\"Bear\":88585,\"Ġplumber\":88586,\"qid\":88587,\"CHIP\":88588,\"Ġmotivating\":88589,\"Ġescalate\":88590,\".bulk\":88591,\"ĠPlayground\":88592,\"_mirror\":88593,\"ĠPeel\":88594,\"Ġdane\":88595,\"invoices\":88596,\"HasBeenSet\":88597,\"-vertical\":88598,\"ĠFrancesco\":88599,\"ĠASA\":88600,\"ĠÐºÐ¾Ð»Ð¸ÑĩÐµÑģÑĤÐ²Ð¾\":88601,\"Ãłn\":88602,\"Fourth\":88603,\"ĠCreateTable\":88604,\"cctor\":88605,\"Ġfrantic\":88606,\"aab\":88607,\"ĠKarachi\":88608,\"_imag\":88609,\"Ġnatuur\":88610,\"Eat\":88611,\"Ġstump\":88612,\"Ġrollers\":88613,\"Ġtraitement\":88614,\"ĠÐ¿ÑĢÐ¾Ð´\":88615,\"Ġrealistically\":88616,\"ĠePub\":88617,\"ĠZag\":88618,\"damn\":88619,\"ĠAnnex\":88620,\"pecies\":88621,\"(exit\":88622,\"Ġspectator\":88623,\"ĠBulgarian\":88624,\"Ġmeget\":88625,\"Ġmatures\":88626,\"Ġdetections\":88627,\"Ġzahl\":88628,\"enefit\":88629,\"akov\":88630,\"Ġadultos\":88631,\"middlewares\":88632,\"isObject\":88633,\"Kenn\":88634,\"Ġunethical\":88635,\"subnet\":88636,\"GraphQL\":88637,\"ĠGael\":88638,\".Dropout\":88639,\"Ġbureaucrats\":88640,\"ĠRedemption\":88641,\".Dto\":88642,\".Evaluate\":88643,\"Ġoggi\":88644,\"Ġtratamiento\":88645,\"Ġrecalling\":88646,\"istinguish\":88647,\"/release\":88648,\"_WRONLY\":88649,\"ĉmkdir\":88650,\"TypeEnum\":88651,\"ĠDARK\":88652,\"æµģ\":88653,\"ĠVapor\":88654,\"Ġatol\":88655,\"ĉinst\":88656,\".`);Ċ\":88657,\"/el\":88658,\"Ġreclaimed\":88659,\"ÃŁerdem\":88660,\"_lost\":88661,\"ĠAla\":88662,\"ĠÐ¾ÑĪÐ¸Ð±\":88663,\"ĠBarth\":88664,\"Colon\":88665,\"opor\":88666,\"_passwd\":88667,\"_exclude\":88668,\"APA\":88669,\"flowers\":88670,\"ĠEbook\":88671,\"ĠSTA\":88672,\"UNS\":88673,\"_DISPATCH\":88674,\"ACIÃĵN\":88675,\"termination\":88676,\"Ġnestled\":88677,\"adratic\":88678,\"RowAnimation\":88679,\"_km\":88680,\"Ġrond\":88681,\"]]></\":88682,\"ä½Ļ\":88683,\"Ġcosplay\":88684,\"Ġmillennium\":88685,\"_serialize\":88686,\"Ġverschiedenen\":88687,\"antt\":88688,\"ĠAmid\":88689,\"cretion\":88690,\")?$\":88691,\"Ġtowing\":88692,\".fil\":88693,\".FileWriter\":88694,\"Ġais\":88695,\"ĠeSports\":88696,\"prt\":88697,\"IPA\":88698,\".FALSE\":88699,\"Ġprick\":88700,\"Ending\":88701,\"ĠprÃ©sident\":88702,\"_glyph\":88703,\"Ġsupplemented\":88704,\"Ġcontar\":88705,\"\\\".$_\":88706,\"ĠBuyers\":88707,\"uja\":88708,\"ĠTimeZone\":88709,\"ennent\":88710,\"InProgress\":88711,\"ĠSustainability\":88712,\"ĠProsper\":88713,\"Contours\":88714,\"Ġstartled\":88715,\"_least\":88716,\"ĠCovent\":88717,\"chnitt\":88718,\"ĠMilky\":88719,\"Ġ\\\"->\":88720,\"etak\":88721,\"Ġtussen\":88722,\"-paying\":88723,\"_accessible\":88724,\"Batman\":88725,\"(itr\":88726,\"IALIZED\":88727,\"ĠTextArea\":88728,\"anke\":88729,\"_JUMP\":88730,\"Ġbehaved\":88731,\",options\":88732,\"xiv\":88733,\".PLL\":88734,\"qx\":88735,\".onNext\":88736,\"Ġverifier\":88737,\"ĠduÅ¼\":88738,\"ĠFukushima\":88739,\"ĠCORPORATION\":88740,\"_tD\":88741,\"ĠMeadow\":88742,\"Ġproyectos\":88743,\"Ġ('\\\\\":88744,\"ĠBarclays\":88745,\"Ġlegality\":88746,\"Ġhamburger\":88747,\"Ġeins\":88748,\"Indiana\":88749,\"ĠTKey\":88750,\"cloak\":88751,\"<algorithm\":88752,\"Ġpreacher\":88753,\"{lng\":88754,\".articles\":88755,\"setImage\":88756,\"Rename\":88757,\"Ġblossom\":88758,\"ĠBloss\":88759,\"Ġuur\":88760,\"Ġdads\":88761,\"ĠTitanic\":88762,\"ĠĠĠĠĠĠĠĠčĊčĊ\":88763,\"Ġordinances\":88764,\"ĠmÃ¤nn\":88765,\"Ġerk\":88766,\"Ġdistilled\":88767,\"ĠÃ¤l\":88768,\"Ġrupture\":88769,\"ĠCameras\":88770,\"Ã¹ng\":88771,\"Ġhairstyles\":88772,\"Ġembryos\":88773,\"âĢĿĊ\":88774,\".Nav\":88775,\"Ġstrm\":88776,\"ĉusage\":88777,\".AI\":88778,\"ĠTOUCH\":88779,\"ĠIllegalAccessException\":88780,\"ê²°\":88781,\"koneksi\":88782,\"!\\\")\":88783,\"Ġescap\":88784,\"udios\":88785,\"starttime\":88786,\"Ġmeinem\":88787,\"ĠSpiral\":88788,\"ĠErectile\":88789,\"ivalence\":88790,\"ĠitemType\":88791,\"Ġabaixo\":88792,\"Verts\":88793,\"taking\":88794,\"pst\":88795,\"ĠOscars\":88796,\"ĠDx\":88797,\"etty\":88798,\"MAL\":88799,\"ĠNeedle\":88800,\"ĠCOMPUTER\":88801,\"ä»»åĬ¡\":88802,\"ĠnewX\":88803,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":88804,\"plevel\":88805,\"ACEMENT\":88806,\"ĠJohan\":88807,\"PointF\":88808,\"Ġrestroom\":88809,\"vero\":88810,\"ĠelÅĳ\":88811,\"produk\":88812,\"ĠYEARS\":88813,\"ĉactual\":88814,\"UPLE\":88815,\"Convertible\":88816,\"Ġporrf\":88817,\"Injected\":88818,\"_both\":88819,\"/Gate\":88820,\"calculator\":88821,\"emailer\":88822,\".Pod\":88823,\"ĠZot\":88824,\"_smart\":88825,\"basis\":88826,\"<Color\":88827,\"Ġcravings\":88828,\"Drivers\":88829,\"(cos\":88830,\"datable\":88831,\"-metal\":88832,\"ĠPc\":88833,\".copyOf\":88834,\"Ġorientations\":88835,\"ĉast\":88836,\"ĠZombies\":88837,\"Ġbombed\":88838,\"Hostname\":88839,\"_raises\":88840,\"mensagem\":88841,\"Ġcortisol\":88842,\"ĠFiona\":88843,\"licos\":88844,\"heavy\":88845,\"Ġê°Ģìł¸\":88846,\"omencl\":88847,\"Ġcultured\":88848,\"Ġartikel\":88849,\"Å¡ÃŃ\":88850,\"jdk\":88851,\"Ġvandalism\":88852,\"Ġ}]);Ċ\":88853,\"Straight\":88854,\"Ġrehearsal\":88855,\"Edition\":88856,\"ĠInspir\":88857,\"ĉwc\":88858,\"Ġformulate\":88859,\"anzeigen\":88860,\"Ġpathological\":88861,\"Ġkennenlernen\":88862,\">{\\\"\":88863,\"Ġdiced\":88864,\"Ġbracelets\":88865,\"ĉĉĠĠĠĠĊ\":88866,\"*>*\":88867,\"/target\":88868,\".Agent\":88869,\".magic\":88870,\"Ġideologies\":88871,\"TRACK\":88872,\"_individual\":88873,\"<decltype\":88874,\"ĠRECEIVE\":88875,\"/boot\":88876,\":@{\":88877,\"QM\":88878,\"ĠMandal\":88879,\"NAMESPACE\":88880,\"Ġtercer\":88881,\"ĠReggie\":88882,\"ĠNicholson\":88883,\"ĠFulton\":88884,\"staking\":88885,\"Ġresonate\":88886,\"lparr\":88887,\"Ġconverters\":88888,\"Ġ(\\\"/\":88889,\"ĠMarlins\":88890,\"Informe\":88891,\"'=>['\":88892,\"Ġrobert\":88893,\"ĠHIM\":88894,\"webs\":88895,\".trailingAnchor\":88896,\".ascii\":88897,\"ĠMasc\":88898,\"Ġtechno\":88899,\"etxt\":88900,\"ĉĠĠĠĠĠĠĠĠĊ\":88901,\"Î±Î¹\":88902,\"(Seq\":88903,\"Ġ?>:</\":88904,\"ĠPeb\":88905,\"[selected\":88906,\"JECTED\":88907,\"CastException\":88908,\"?f\":88909,\"Ġeyewitness\":88910,\"Ġmeno\":88911,\"ĠDamien\":88912,\"_IEnumerator\":88913,\"Ġ................\":88914,\".SELECT\":88915,\"Ġcray\":88916,\"_paper\":88917,\".Rollback\":88918,\"IDEOS\":88919,\"rparr\":88920,\"inear\":88921,\"_Rel\":88922,\"ĠWilde\":88923,\"ĠWonderland\":88924,\"ĠShuffle\":88925,\"Ġstrikeouts\":88926,\"sigmoid\":88927,\"!(\\\"{\":88928,\"epam\":88929,\"Ġrichness\":88930,\"Ġendeavour\":88931,\"menuItem\":88932,\"ĠÐŁÐ¾Ð»ÑĥÑĩ\":88933,\"Ġfrustrations\":88934,\"_subscribe\":88935,\"Ġbooze\":88936,\"ĠLicht\":88937,\"Ġpeasant\":88938,\"Ġweighting\":88939,\"Ġå¿\":88940,\"ActionCode\":88941,\".tracks\":88942,\"ĠÃĺ\":88943,\"Ġmillionaire\":88944,\"(ur\":88945,\"'])ĊĊĊ\":88946,\"Ġ\\\".$_\":88947,\"_EDEFAULT\":88948,\"Ġcurls\":88949,\"_ComCallableWrapper\":88950,\".setViewport\":88951,\"Ġdend\":88952,\"Ġautour\":88953,\"ĠFourier\":88954,\"Ġboils\":88955,\"ĠJPG\":88956,\"Ġdigs\":88957,\"Ġcomplains\":88958,\"-lined\":88959,\"ĠBlades\":88960,\"_dicts\":88961,\"ĠIps\":88962,\"referer\":88963,\"Ġanyhow\":88964,\"antar\":88965,\"-sheet\":88966,\"ĉplay\":88967,\"ierce\":88968,\".Messaging\":88969,\"è§ģ\":88970,\"ĉprogress\":88971,\".DataVisualization\":88972,\"ĠStops\":88973,\"IntervalSince\":88974,\"@brief\":88975,\".wind\":88976,\"ĠgetInput\":88977,\"ĠKA\":88978,\"ĠRESPONS\":88979,\"Ġtarg\":88980,\"visualization\":88981,\"ĠEspaÃ±\":88982,\"nier\":88983,\"ĠDove\":88984,\"_isr\":88985,\"ĠAPPLY\":88986,\"bedo\":88987,\"[]{Ċ\":88988,\"Ġevacuate\":88989,\"Ġmicroscopic\":88990,\"æŃ£ç¡®\":88991,\"erot\":88992,\"-operative\":88993,\"ikut\":88994,\"Ġdbl\":88995,\"Ġajout\":88996,\".ix\":88997,\"ĠĠĠĠĠĠĠĠĊĠĠĠĠĊ\":88998,\"teste\":88999,\"nivel\":89000,\".snap\":89001,\"utzt\":89002,\".isAdmin\":89003,\"(IC\":89004,\"Ġoben\":89005,\"ĠEfficient\":89006,\"DDevice\":89007,\"Ġindemn\":89008,\"Ġfroze\":89009,\",rp\":89010,\"Ġdecember\":89011,\"ç»Ļ\":89012,\"Ġmelodies\":89013,\"ĠETA\":89014,\"ãģĵãĤĵãģ«ãģ¡ãģ¯\":89015,\"Ġqualche\":89016,\"ĠsetDefaultCloseOperation\":89017,\"ORIA\":89018,\"Ġzag\":89019,\"Ġallowances\":89020,\"/ph\":89021,\"-Token\":89022,\"ĠPou\":89023,\"Ġministries\":89024,\".LOGIN\":89025,\"ĠsearchTerm\":89026,\"Ġhurricanes\":89027,\"ĠFlour\":89028,\"ĠSUS\":89029,\"Themes\":89030,\"reece\":89031,\"Ġentrev\":89032,\"DXVECTOR\":89033,\"ĠBrenda\":89034,\"ErrorMsg\":89035,\":)];Ċ\":89036,\"Ġdomina\":89037,\"ĠInvisible\":89038,\"<>(\\\"\":89039,\"putc\":89040,\"HAVE\":89041,\"Evaluator\":89042,\"matching\":89043,\"-names\":89044,\"Ġlah\":89045,\"_YUV\":89046,\"æľįåĬ¡åĻ¨\":89047,\".WRITE\":89048,\"):\\\\\":89049,\"-definition\":89050,\"Ġchimney\":89051,\".cls\":89052,\"knowledge\":89053,\"ĠAlexandre\":89054,\"Ġcoleg\":89055,\"oÅĽci\":89056,\".Cho\":89057,\"Ġsoftened\":89058,\"Ġrotates\":89059,\"-states\":89060,\"ê·\":89061,\"violent\":89062,\"Ġ:)Ċ\":89063,\"ĠacciÃ³n\":89064,\"nika\":89065,\"ĠLatter\":89066,\"_Float\":89067,\"Ġegregious\":89068,\"odial\":89069,\"Synopsis\":89070,\"(xi\":89071,\"Ġ},{\":89072,\"cxx\":89073,\"Emma\":89074,\"ĠConcurrentHashMap\":89075,\"_Camera\":89076,\"Ġpeanuts\":89077,\"ãĤ³ãĥ¡ãĥ³ãĥĪ\":89078,\"_bed\":89079,\"ĠerrorCallback\":89080,\"ĠPapua\":89081,\",True\":89082,\"¶ļ\":89083,\"Ġstadiums\":89084,\"Ġknobs\":89085,\"ificaciones\":89086,\"Ġpurposely\":89087,\"ĠPureComponent\":89088,\"ĠÐºÐ»Ð¸\":89089,\".Track\":89090,\"ssc\":89091,\"(Job\":89092,\"(HttpContext\":89093,\"Ġchoisir\":89094,\"Ġì»\":89095,\"Ġausp\":89096,\"uppen\":89097,\"Adventure\":89098,\"ĠFLAC\":89099,\"Ġappellant\":89100,\"Ġ((\\\"\":89101,\"Ïĩ\":89102,\"Ġtrif\":89103,\"Ġdurations\":89104,\"ĠNGX\":89105,\".bp\":89106,\"actionDate\":89107,\".instant\":89108,\"-Requested\":89109,\"'&&\":89110,\"ĠÑĩÐµÑĢ\":89111,\"=bool\":89112,\"Ġlords\":89113,\"licing\":89114,\"Ġmarin\":89115,\"Ġblinded\":89116,\"/layouts\":89117,\"feito\":89118,\"izzling\":89119,\"Evt\":89120,\"Ġbullish\":89121,\"exclusive\":89122,\"âĢĻes\":89123,\".getOwnPropertyDescriptor\":89124,\"Ġbaptized\":89125,\"ĠÑģÐ»ÑĥÑĩ\":89126,\"ĠCecil\":89127,\".effects\":89128,\"Ġcryptographic\":89129,\"ĠVille\":89130,\"uft\":89131,\"ĠAnthem\":89132,\"Ġseeker\":89133,\"Ġnicknamed\":89134,\"Ġcampground\":89135,\"ĠactionBar\":89136,\"ĠEpisodes\":89137,\"Ġ--------Ċ\":89138,\"BuilderFactory\":89139,\"_UNSUPPORTED\":89140,\"VILLE\":89141,\".Registry\":89142,\"Tonight\":89143,\"Ġmaks\":89144,\"Ġaddons\":89145,\"ĠDecrypt\":89146,\".skills\":89147,\"(fh\":89148,\"Ġjugg\":89149,\"ĠCouples\":89150,\"ĠAmir\":89151,\"Ġ==========\":89152,\"Ġendereco\":89153,\".Strings\":89154,\"Ġharming\":89155,\"Ġbustling\":89156,\"(firstName\":89157,\".sparse\":89158,\"ITO\":89159,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":89160,\"æĿ¥æºĲ\":89161,\"odega\":89162,\"anagan\":89163,\".HandlerFunc\":89164,\"Ġtinder\":89165,\"Ġ#(\":89166,\"Ġimaginable\":89167,\"Ġaun\":89168,\"Presence\":89169,\"PackageManager\":89170,\"Ġludicrous\":89171,\"iÃ¨me\":89172,\"ĠgetObject\":89173,\"boxing\":89174,\"Ġsquid\":89175,\"Ãªtes\":89176,\"Daemon\":89177,\"_likes\":89178,\"Ĩµ\":89179,\"//----------------------------------------------------------------------------------------------------------------\":89180,\".www\":89181,\"ssel\":89182,\"etections\":89183,\"dae\":89184,\"/downloads\":89185,\"ĠClassifier\":89186,\"_SUBJECT\":89187,\"zego\":89188,\"_GROUPS\":89189,\"actices\":89190,\"_lite\":89191,\"Ġdanmark\":89192,\"/bl\":89193,\"apyrus\":89194,\"TIMER\":89195,\"ĠScriptures\":89196,\"ÑıÑĤ\":89197,\"spa\":89198,\"\\\"G\":89199,\"Ġpenetrating\":89200,\"Ġconformity\":89201,\"newline\":89202,\"Ġlyn\":89203,\"ĠMMP\":89204,\"ĠINTERFACE\":89205,\"ĠActionTypes\":89206,\".criteria\":89207,\"á»ĳng\":89208,\"Ġrestitution\":89209,\"ĉFOR\":89210,\"<path\":89211,\"=?\\\";Ċ\":89212,\"(percent\":89213,\"ndo\":89214,\"ĠACM\":89215,\"ĉct\":89216,\"@a\":89217,\"ĠtÃº\":89218,\"Ġspotting\":89219,\"Ã¼rn\":89220,\"ĠGER\":89221,\".writeValue\":89222,\"_blocked\":89223,\"Ymd\":89224,\"Ġineff\":89225,\"ĠRadiation\":89226,\"ĠOilers\":89227,\"Beer\":89228,\"rots\":89229,\"ĠTrot\":89230,\"rna\":89231,\"porter\":89232,\"enery\":89233,\"Ġpornofilm\":89234,\"ëĶĶ\":89235,\"_ck\":89236,\".Compute\":89237,\"Ġ[]ĊĊĊ\":89238,\"gium\":89239,\"ĠTELE\":89240,\"ĠInstances\":89241,\"*I\":89242,\"ĠwireType\":89243,\"onium\":89244,\"eshire\":89245,\"Ġputchar\":89246,\"Ġawakened\":89247,\".degree\":89248,\"heiten\":89249,\"-awaited\":89250,\"Ġneurotrans\":89251,\"-testid\":89252,\"ĊĊĠĠĠĠĊ\":89253,\"Ġç»ĵ\":89254,\"Ġkino\":89255,\"_DAYS\":89256,\"ĠValerie\":89257,\"ntity\":89258,\"@Bean\":89259,\"etCode\":89260,\"<Renderer\":89261,\"\\\"\\\"Ċ\":89262,\"Ġbern\":89263,\"Ġtotalitarian\":89264,\"clinic\":89265,\"ĠMÃ¼nchen\":89266,\"noinspection\":89267,\"isce\":89268,\"_tuples\":89269,\".Points\":89270,\"Ġpastoral\":89271,\"Jak\":89272,\"kening\":89273,\"/column\":89274,\"-producing\":89275,\"Ġabolish\":89276,\"feas\":89277,\"responseData\":89278,\"redirectToRoute\":89279,\"Ġobservational\":89280,\"pNext\":89281,\"zte\":89282,\"Choices\":89283,\"ĉLCD\":89284,\"&S\":89285,\"Ġbillionaires\":89286,\"_EOF\":89287,\"Ġcohorts\":89288,\"anken\":89289,\".combine\":89290,\"(Optional\":89291,\"_CONSOLE\":89292,\"ActivityIndicatorView\":89293,\"Ġpharmacist\":89294,\"ĠDough\":89295,\"ĠOperational\":89296,\"ç²\":89297,\"Ġjams\":89298,\"Solo\":89299,\"ĉduration\":89300,\".rm\":89301,\"ĠToni\":89302,\".leave\":89303,\"Ġpueda\":89304,\"ĠFay\":89305,\"Detach\":89306,\".MaximizeBox\":89307,\"Ġmartyr\":89308,\"Ġhaze\":89309,\"/ne\":89310,\"Ġmamma\":89311,\"selectorMethod\":89312,\"Ġpilgrimage\":89313,\"ĠAsphalt\":89314,\"Ġvalido\":89315,\"EndElement\":89316,\"Ġlapse\":89317,\"Ġ============================================================================Ċ\":89318,\"ilos\":89319,\"ernals\":89320,\"ConnectionFactory\":89321,\"ĠLoving\":89322,\".Compile\":89323,\"Ġcork\":89324,\"ĠBye\":89325,\"ibNameOrNil\":89326,\"estar\":89327,\"\\\\GeneratedValue\":89328,\"(LL\":89329,\"ĠRaisePropertyChanged\":89330,\"ĠIranians\":89331,\"ĠgetPrice\":89332,\"maries\":89333,\"jumbotron\":89334,\"ĠRebels\":89335,\"DIFF\":89336,\"ĠMoj\":89337,\"ortic\":89338,\"ĉconstexpr\":89339,\"ntp\":89340,\"Ġmagician\":89341,\"Ġpatriotism\":89342,\".ce\":89343,\".SimpleButton\":89344,\"ĠPRIV\":89345,\"histoire\":89346,\"higher\":89347,\"refixer\":89348,\"CJK\":89349,\"ĠOswald\":89350,\".sprites\":89351,\".Il\":89352,\"Ġarcane\":89353,\"ĠChun\":89354,\"_Of\":89355,\"Ġeverytime\":89356,\"ÑİÑī\":89357,\"Ġletras\":89358,\"ilan\":89359,\"baru\":89360,\"-bot\":89361,\"ĠSignificant\":89362,\"ĪìĬµëĭĪëĭ¤\":89363,\"âĢĮ\":89364,\"-issue\":89365,\"Ġinsanely\":89366,\"ategic\":89367,\"_VE\":89368,\":CGPoint\":89369,\"Marks\":89370,\".problem\":89371,\"'].'/\":89372,\"Ġredundancy\":89373,\"Ġdecryption\":89374,\"Hung\":89375,\"-validate\":89376,\"ĠAngelo\":89377,\"JM\":89378,\"Ġpopover\":89379,\"debit\":89380,\"ComputedStyle\":89381,\")__\":89382,\"(sin\":89383,\"Ġ'),\":89384,\"(defvar\":89385,\"Ã´te\":89386,\"ThanOrEqualTo\":89387,\".zh\":89388,\"(Note\":89389,\"ibBundleOrNil\":89390,\"ĠSonia\":89391,\"ymous\":89392,\"ãĢĤ<\":89393,\"Ġfilmy\":89394,\"Ġearthly\":89395,\"ĠLearned\":89396,\"[section\":89397,\".jsoup\":89398,\"strup\":89399,\"ĠPatron\":89400,\"Ġ)*\":89401,\"setFont\":89402,\"Ġheg\":89403,\"ĠdeltaY\":89404,\"_SCR\":89405,\".cut\":89406,\"ĠvbCrLf\":89407,\".ObjectMapper\":89408,\"ĠrÃ©ponse\":89409,\"Yu\":89410,\"(){}ĊĊ\":89411,\"-parameter\":89412,\"Ä±sÄ±\":89413,\"iazza\":89414,\"IZES\":89415,\"_SUPPLY\":89416,\"kits\":89417,\"Ġreins\":89418,\"(docs\":89419,\"%!\":89420,\"Ġsystemctl\":89421,\"ĠPsr\":89422,\"ĠWerk\":89423,\"Philadelphia\":89424,\"BREAK\":89425,\".appendTo\":89426,\"(lon\":89427,\"Abr\":89428,\"/renderer\":89429,\"ĠEleanor\":89430,\"CERT\":89431,\"ParameterValue\":89432,\"$get\":89433,\"Ġà²\":89434,\"ĠJL\":89435,\"Ġignite\":89436,\"Ġbáº¡n\":89437,\"ĠCaul\":89438,\"Ġhaste\":89439,\"Ġdomingo\":89440,\"Tesla\":89441,\"/configuration\":89442,\"(expect\":89443,\"usra\":89444,\"Ġprefect\":89445,\"Ġfrogs\":89446,\"Ġassignable\":89447,\"Ġintervened\":89448,\".choices\":89449,\"UIStoryboardSegue\":89450,\"ĠbÃ©\":89451,\"ĠLÃ¶s\":89452,\"alphabet\":89453,\"Ġpreamble\":89454,\"dba\":89455,\"Ġemitting\":89456,\".more\":89457,\"ĠBasel\":89458,\"(dateTime\":89459,\"()});Ċ\":89460,\"ĠnodeList\":89461,\"ĠFPGA\":89462,\"wel\":89463,\"Ġlodash\":89464,\"_authentication\":89465,\"Ã³rio\":89466,\"(runtime\":89467,\"_SCENE\":89468,\"Ġcuffs\":89469,\"ĠAdresse\":89470,\":<?\":89471,\"_cmds\":89472,\"TÃªn\":89473,\"Ġeject\":89474,\"ĉERR\":89475,\"<O\":89476,\"ĠKramer\":89477,\"âĢ¦Ċ\":89478,\"someone\":89479,\"ĠCPL\":89480,\"ï¼į\":89481,\"locking\":89482,\".Footer\":89483,\"Ġalm\":89484,\"ĠAdolf\":89485,\")./\":89486,\"ĠMatthias\":89487,\"Ġ\\\",\\\"Ċ\":89488,\"enuity\":89489,\"ĠLover\":89490,\"Ġalimentos\":89491,\"plets\":89492,\"Ã¤tze\":89493,\"(recv\":89494,\"uraa\":89495,\"STDOUT\":89496,\"antz\":89497,\".FloatTensor\":89498,\"ĠRae\":89499,\"pig\":89500,\"Ġterug\":89501,\"Ġtheolog\":89502,\"Ġtaxis\":89503,\"composite\":89504,\"sher\":89505,\"leDb\":89506,\"ĠRahmen\":89507,\"Ġ;-\":89508,\"Indented\":89509,\"Ġtrolling\":89510,\"ERICAN\":89511,\"getEmail\":89512,\"_ENCODE\":89513,\"getCell\":89514,\"ĠWrath\":89515,\"(suite\":89516,\"notEmpty\":89517,\".getRight\":89518,\"Ġbreathable\":89519,\"ãģŁãģł\":89520,\"ĠsetTime\":89521,\"'options\":89522,\"Ġpayloads\":89523,\"auga\":89524,\"edm\":89525,\"(weather\":89526,\"ĉsem\":89527,\"(front\":89528,\"Ġpayouts\":89529,\".setTexture\":89530,\",[],\":89531,\"ĠPacks\":89532,\"Ġcazzo\":89533,\"WithPath\":89534,\"Prog\":89535,\"mmas\":89536,\"Ġkok\":89537,\".Css\":89538,\"Ġdela\":89539,\"Award\":89540,\"Ã¼lt\":89541,\"soup\":89542,\"([('\":89543,\"ollipop\":89544,\",SLOT\":89545,\"chia\":89546,\"Ġblanco\":89547,\"OLUTE\":89548,\"-plane\":89549,\",List\":89550,\"xing\":89551,\"IMATE\":89552,\"-mort\":89553,\"Ġgravid\":89554,\"ĠHanging\":89555,\"Ġscoff\":89556,\".itemId\":89557,\"THEN\":89558,\"infer\":89559,\"Ġmisplaced\":89560,\"ĉMono\":89561,\"wayne\":89562,\"Ġedged\":89563,\"_nick\":89564,\"ĠMART\":89565,\"ĉstatement\":89566,\"ĠEventBus\":89567,\">About\":89568,\"Ġburgeoning\":89569,\"Ġciclo\":89570,\"LOOP\":89571,\"Ġdefy\":89572,\"ĠelementType\":89573,\"Ġconservatism\":89574,\"WebHost\":89575,\".Disabled\":89576,\"Ġclap\":89577,\"ĠAleks\":89578,\"roring\":89579,\"issional\":89580,\"-Bold\":89581,\"IRTH\":89582,\".itemView\":89583,\"qing\":89584,\"?key\":89585,\"ĠVenom\":89586,\"Ġantid\":89587,\"ĠFormatting\":89588,\"QPushButton\":89589,\"ĠAssemblyTitle\":89590,\"_reserve\":89591,\".Direct\":89592,\"Anime\":89593,\"Ġmaterially\":89594,\"Ġadjunct\":89595,\".setToolTipText\":89596,\"lassian\":89597,\"(nr\":89598,\"ĠningÃºn\":89599,\"Ġmisunderstand\":89600,\"ĠApplying\":89601,\"_compat\":89602,\"Ġmixin\":89603,\"Ġjeopardy\":89604,\"ÑĭÐ²Ð°ÐµÐ¼\":89605,\"Ġcocina\":89606,\"_WRONG\":89607,\"ATAR\":89608,\"KD\":89609,\"ĠcategoryName\":89610,\"HttpContext\":89611,\"Ġbubb\":89612,\"Ġankles\":89613,\"owering\":89614,\"Frameworks\":89615,\"Ġsegundos\":89616,\".Assembly\":89617,\"_Entity\":89618,\"HQ\":89619,\"Ġfours\":89620,\"Ġforfeiture\":89621,\"vlan\":89622,\"-dominated\":89623,\"-away\":89624,\"ICIENT\":89625,\".ReadByte\":89626,\"amax\":89627,\".=\\\"<\":89628,\"_sprites\":89629,\"ĠRemaining\":89630,\"LOOD\":89631,\"_requirements\":89632,\"'article\":89633,\"ĠPompeo\":89634,\"ĠtÃ©r\":89635,\"ĠDrops\":89636,\"HomeAs\":89637,\"HomeAsUp\":89638,\"Ãºa\":89639,\".nasa\":89640,\"_bio\":89641,\"ĠYoshi\":89642,\"Electronic\":89643,\"Ġjose\":89644,\"Ġintelig\":89645,\"Ġ?>><?\":89646,\">{!!\":89647,\"_prov\":89648,\"=DB\":89649,\"<!--Ċ\":89650,\"-floating\":89651,\"yum\":89652,\".JMenuItem\":89653,\"ĠNationwide\":89654,\"Impossible\":89655,\"è¯¦æĥħ\":89656,\"Jerry\":89657,\"Ġdescargar\":89658,\"ìķ¼\":89659,\"Decrypt\":89660,\"Ġtempered\":89661,\"Ġeks\":89662,\"ÃŃcia\":89663,\".large\":89664,\"Ġunfolds\":89665,\"Ġhver\":89666,\"ĠAVL\":89667,\".tt\":89668,\"âĤĢ\":89669,\"=%.\":89670,\"Ġtoppings\":89671,\"Ġstout\":89672,\"Ġseminal\":89673,\"xes\":89674,\"ĠOUTER\":89675,\"adro\":89676,\"Ġyok\":89677,\"ĠDere\":89678,\"ĉfreopen\":89679,\"_lng\":89680,\"Chunks\":89681,\".getOrElse\":89682,\"(elm\":89683,\"Ġ());ĊĊ\":89684,\"Celebr\":89685,\"_capability\":89686,\"Ġsociedad\":89687,\"Ġintimidate\":89688,\"ĠBlazers\":89689,\"igth\":89690,\"endcode\":89691,\"UILDER\":89692,\"ĠHannity\":89693,\"Ġ----------------------------------------------------------------------Ċ\":89694,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·\":89695,\"ĠTook\":89696,\"ĠMoved\":89697,\"Ġpronto\":89698,\"ĠMartins\":89699,\"DataExchange\":89700,\".Pool\":89701,\"eus\":89702,\"ĠjobId\":89703,\"ĠAxes\":89704,\"Ġhamstring\":89705,\".rmi\":89706,\"DataTask\":89707,\"ĠMagicMock\":89708,\"ĠGAS\":89709,\"ĠNaw\":89710,\"Ġsnel\":89711,\"_scenario\":89712,\"ĠemailAddress\":89713,\"ĠMuss\":89714,\"Ġphoenix\":89715,\"Ġdensities\":89716,\"ĠMacOS\":89717,\"rema\":89718,\"Ġtesters\":89719,\")?;ĊĊ\":89720,\"Ġpups\":89721,\"laps\":89722,\"ddb\":89723,\"/Peak\":89724,\"Ġbackstage\":89725,\"ĠbackButton\":89726,\"(nav\":89727,\"xAE\":89728,\"strcpy\":89729,\"ichtet\":89730,\"ĠRif\":89731,\"à¸ģà¸£\":89732,\"Ġhonoured\":89733,\"Ġgrappling\":89734,\"VertexBuffer\":89735,\".getAccount\":89736,\"-New\":89737,\"Ġoppress\":89738,\"Ġuttered\":89739,\"ĠUSAGE\":89740,\"_LEAVE\":89741,\"_collections\":89742,\"_Util\":89743,\"(\\\"\\\"));Ċ\":89744,\"Ġquieter\":89745,\"`),Ċ\":89746,\"ĠtypeId\":89747,\"Ġserif\":89748,\"stalk\":89749,\"ĠprimaryStage\":89750,\"xEA\":89751,\":NSLayout\":89752,\"_RB\":89753,\"_APPS\":89754,\"SKU\":89755,\"*scale\":89756,\"ĠCougar\":89757,\"ĉRETURN\":89758,\"ifiÃ©\":89759,\"timing\":89760,\"Ġidols\":89761,\"ëŀĺìĬ¤\":89762,\"âĢĶif\":89763,\"(formatter\":89764,\"Ġamalg\":89765,\"setWidth\":89766,\",mid\":89767,\"oreal\":89768,\".Roles\":89769,\"Ġdevel\":89770,\"ĠgetIndex\":89771,\"Ġstools\":89772,\"Ġsnowy\":89773,\"Ġgrandi\":89774,\"ÑıÐµÐ¼\":89775,\"iguiente\":89776,\"ÐºÐ¾Ð²\":89777,\"ĠCutter\":89778,\"roscope\":89779,\"aira\":89780,\"ÑĥÑĢÑģ\":89781,\"Ġtabel\":89782,\"Ġdefiance\":89783,\".ToBoolean\":89784,\"Ġperg\":89785,\"-community\":89786,\"Ġpursuits\":89787,\"(metrics\":89788,\"Muslim\":89789,\"ĠRiyadh\":89790,\"ĠâĤ¹\":89791,\".WebElement\":89792,\"ĠHarden\":89793,\"ĠCorruption\":89794,\"ĠAe\":89795,\"ĠTanner\":89796,\"Ġindeb\":89797,\"ĠCharging\":89798,\"_PROD\":89799,\"Ġâĵĺ\":89800,\"ĠcenterX\":89801,\"typing\":89802,\"Ġux\":89803,\"ĠToe\":89804,\"ĉloop\":89805,\"flo\":89806,\"Regional\":89807,\"_aa\":89808,\"Ġviewpoints\":89809,\">this\":89810,\"-resources\":89811,\"ĠImam\":89812,\"ĠShiv\":89813,\"Ġandra\":89814,\"REQUIRED\":89815,\"Ġseeded\":89816,\"umont\":89817,\"Ġtoaster\":89818,\"Ġhomeschool\":89819,\"ÛĮØ±\":89820,\"_extractor\":89821,\"modes\":89822,\"ĠMundo\":89823,\"_firestore\":89824,\"Ġpunishments\":89825,\"Ġboredom\":89826,\"juries\":89827,\".Safe\":89828,\"ambique\":89829,\"Ġadversity\":89830,\"ULER\":89831,\"Ġanalsex\":89832,\"morph\":89833,\"ĠOmn\":89834,\"()\\\">Ċ\":89835,\"ĠGIVEN\":89836,\"Sz\":89837,\"Ġnouns\":89838,\"Ġquam\":89839,\"ĠWikimedia\":89840,\"Ġdziewcz\":89841,\".communic\":89842,\"Courier\":89843,\"Bond\":89844,\".communication\":89845,\".Preference\":89846,\"slideDown\":89847,\"/gcc\":89848,\"Ġvibes\":89849,\"APIView\":89850,\"ĠOversight\":89851,\"_vk\":89852,\"Ġempres\":89853,\"Ġarisen\":89854,\"Ġ*/)\":89855,\"('('\":89856,\"Ġbtw\":89857,\"ĠconexiÃ³n\":89858,\"ĠUzbek\":89859,\"ĠìĦľ\":89860,\"ĠimageURL\":89861,\"ãĤª\":89862,\"stopped\":89863,\"ĠWouldn\":89864,\"ĠChew\":89865,\"grÃ©\":89866,\"Ġtruthful\":89867,\"ĠTransparent\":89868,\"(serv\":89869,\"ĠMcKay\":89870,\"=read\":89871,\"ĠSao\":89872,\"ĉGrid\":89873,\"Ġinduces\":89874,\".listFiles\":89875,\"Ġcarrera\":89876,\"ĠiconName\":89877,\"ĠCarlton\":89878,\".EventType\":89879,\"Ġdraped\":89880,\"_SAMPLES\":89881,\"(est\":89882,\"ĠRuiz\":89883,\"Ġcaptains\":89884,\"Ġmafia\":89885,\"ĠRaphael\":89886,\"ĠGAP\":89887,\"impan\":89888,\"comic\":89889,\"Ġmanten\":89890,\"$L\":89891,\"Ġaftermarket\":89892,\"×Ĺ\":89893,\"ĠCf\":89894,\"ĉtile\":89895,\"AppState\":89896,\"Ġwholesalers\":89897,\"lowest\":89898,\"Democratic\":89899,\"Ġpowering\":89900,\"apot\":89901,\"ĠCortex\":89902,\"(single\":89903,\"ophysical\":89904,\".utf\":89905,\"ï¼ŁãĢį\":89906,\"Ġtarea\":89907,\"Equip\":89908,\"Ġklik\":89909,\"Ġrua\":89910,\"ĠaValue\":89911,\"ĠMiner\":89912,\"ĠVeg\":89913,\"anyl\":89914,\"Cow\":89915,\"@c\":89916,\"_LOADED\":89917,\"ĠAHL\":89918,\"wake\":89919,\".LogInformation\":89920,\"(categories\":89921,\"ĠQUESTION\":89922,\".uml\":89923,\"ĠCreateMap\":89924,\"meer\":89925,\"Ġrencontrer\":89926,\"_su\":89927,\"Ġatleast\":89928,\"(PropertyName\":89929,\"ĠYao\":89930,\"ĠHaupt\":89931,\"BlockSize\":89932,\"ĠSAC\":89933,\"ĠLegs\":89934,\"bite\":89935,\"Ġlogarith\":89936,\"ĠIMessage\":89937,\"Backdrop\":89938,\"Ġgdk\":89939,\"ìľ¼ë©´\":89940,\".exclude\":89941,\"ADOS\":89942,\"-shift\":89943,\"athlete\":89944,\"_combined\":89945,\"Ġrebate\":89946,\"Ġpard\":89947,\"Ġimpedance\":89948,\"reau\":89949,\"_čĊčĊ\":89950,\"Ġdagen\":89951,\"kelas\":89952,\"Ġingresar\":89953,\"ĠBRAND\":89954,\".mkdirs\":89955,\"Ġreigning\":89956,\"Talking\":89957,\"/**ĊĊ\":89958,\"_RESOURCES\":89959,\"ĠPROGMEM\":89960,\"ĠdataSize\":89961,\"ãĥł\":89962,\"deny\":89963,\"IRS\":89964,\"Ġtelevis\":89965,\"=_('\":89966,\"egis\":89967,\"<?,\":89968,\"Ġupsetting\":89969,\"Ġsauces\":89970,\"Ġpuerto\":89971,\"ĠVogue\":89972,\"idine\":89973,\"ĠGreenwood\":89974,\"zion\":89975,\"/qt\":89976,\"å±Ģ\":89977,\".languages\":89978,\"ĠPlayboy\":89979,\"onnement\":89980,\"ĠPositioned\":89981,\"Ġä¸»\":89982,\"ĠFritz\":89983,\"Initially\":89984,\"nodeValue\":89985,\"_TRIANGLES\":89986,\"-backend\":89987,\"toISOString\":89988,\"ĠGovernors\":89989,\"YLON\":89990,\".ORDER\":89991,\"DOI\":89992,\"ĠChevron\":89993,\"Ġdecking\":89994,\"ĠSharia\":89995,\"othermal\":89996,\"EmptyEntries\":89997,\"(Initialized\":89998,\"dorf\":89999,\".lu\":90000,\"(Room\":90001,\".Yellow\":90002,\"ĠAbram\":90003,\"_lm\":90004,\"ĠÐ½Ð°Ð¿\":90005,\"ĠTHAN\":90006,\"~-~-~-~-\":90007,\".Override\":90008,\"ĠSVM\":90009,\"ĠSuspension\":90010,\"Ġabsorbs\":90011,\"_traffic\":90012,\"Ġ\\\">\\\"\":90013,\".fits\":90014,\"Ġreinforcing\":90015,\"Ġmoyen\":90016,\"erer\":90017,\"ĠRosenstein\":90018,\"ĠWeston\":90019,\"Ġconfines\":90020,\"OLA\":90021,\"orraine\":90022,\"_GRP\":90023,\"Ġstrapped\":90024,\"Ġmingle\":90025,\"ĉVk\":90026,\"Ġnostra\":90027,\"Ġactresses\":90028,\"ĠSammy\":90029,\"ligne\":90030,\"IGHLIGHT\":90031,\"Ġstup\":90032,\"ictory\":90033,\"Ġconvict\":90034,\"Ġsupp\":90035,\"peon\":90036,\"vrier\":90037,\"########################################################\":90038,\"Ġtrotz\":90039,\"Ġmeltdown\":90040,\"arkers\":90041,\".SelectCommand\":90042,\"ĠLiability\":90043,\"ĠBecame\":90044,\"Ġluckily\":90045,\"ĠÐ¿Ð¾ÑĢ\":90046,\"Ġreassure\":90047,\"ĠContrast\":90048,\"ĠAudrey\":90049,\"ĠConsultants\":90050,\"ĠQuentin\":90051,\"-Owned\":90052,\"ocrin\":90053,\"_STRIP\":90054,\"Ġretali\":90055,\"Ġrallying\":90056,\"ĠRequestContext\":90057,\"Ġmassac\":90058,\"ĉgr\":90059,\"LEE\":90060,\"ĠcaÅĤ\":90061,\"ĠJoanna\":90062,\"á»Ńa\":90063,\"hhh\":90064,\"ĠsqlSession\":90065,\"Ä±kl\":90066,\"Composer\":90067,\"ĠcurrentPlayer\":90068,\"agini\":90069,\"ĠBarbar\":90070,\"ĠHelloWorld\":90071,\"loomberg\":90072,\".Here\":90073,\"Ġdisgusted\":90074,\"ĉĉĉĉĉĉĠĠĠĠ\":90075,\"okus\":90076,\"Veter\":90077,\"Ġchops\":90078,\"ĠFORWARD\":90079,\"ĠEig\":90080,\"ĠPartialView\":90081,\"Ġimposs\":90082,\"Ġconsequential\":90083,\"Ġ['#\":90084,\"ĉlogging\":90085,\"ĠElis\":90086,\"procs\":90087,\",</\":90088,\"_pins\":90089,\"\\\\Doctrine\":90090,\"Uvs\":90091,\"ĠGIT\":90092,\"Ġtah\":90093,\"(rules\":90094,\"createFrom\":90095,\"Ġ'-')Ċ\":90096,\"handling\":90097,\"externalActionCode\":90098,\"RODUCTION\":90099,\"ForResource\":90100,\"sburg\":90101,\"<TextView\":90102,\"thinkable\":90103,\"angling\":90104,\"Ġ\\\"}\\\\\":90105,\"PRS\":90106,\"Approval\":90107,\"Ġklient\":90108,\"noun\":90109,\"ĠDiamonds\":90110,\"HG\":90111,\"ĠTribal\":90112,\".px\":90113,\"ĠpropName\":90114,\"Ġhely\":90115,\"Ð»Ð¸Ñĩ\":90116,\"ĠBoutique\":90117,\"\\\");}Ċ\":90118,\"/host\":90119,\"ĠstatusBar\":90120,\">Data\":90121,\"Ġdiscontent\":90122,\"Ġfrail\":90123,\".elementAt\":90124,\"Ġemanc\":90125,\"ĉfun\":90126,\"attles\":90127,\"Ġpropulsion\":90128,\"Ġinterchangeable\":90129,\"ĠTambiÃ©n\":90130,\"Ġvener\":90131,\"_LOWER\":90132,\"Ġpdo\":90133,\"Ġdetergent\":90134,\"Ġtavern\":90135,\"Venue\":90136,\".jasper\":90137,\"ytt\":90138,\"ĠJihad\":90139,\"âĢĻÃł\":90140,\"ĠmediaPlayer\":90141,\"?p\":90142,\"pcf\":90143,\"andoned\":90144,\"Ġreceber\":90145,\"OTP\":90146,\"(iOS\":90147,\"('${\":90148,\"Pts\":90149,\"Ġmanagerial\":90150,\"ĠTud\":90151,\"ĠWELL\":90152,\"oze\":90153,\"ĠAntoine\":90154,\"Ġ\\\\\\\\Ċ\":90155,\"ĠVect\":90156,\"ĠWimbledon\":90157,\"ismet\":90158,\"Ġbothering\":90159,\"iosis\":90160,\"getMethod\":90161,\"ĠinputData\":90162,\"ĠBinder\":90163,\"Ġdct\":90164,\"Ã¡ln\":90165,\"_BOLD\":90166,\"ĠJugend\":90167,\"ĠBeginners\":90168,\"ioms\":90169,\"Ġrelentlessly\":90170,\"ĠMondays\":90171,\"ä¼ĺ\":90172,\"Tomorrow\":90173,\"ĠSamp\":90174,\"\\\\Persistence\":90175,\"MASTER\":90176,\"(predictions\":90177,\"(numero\":90178,\".twitch\":90179,\".Restrict\":90180,\"ĠZZ\":90181,\"ĠMLM\":90182,\".Small\":90183,\"]byte\":90184,\"ĠViewPager\":90185,\"ĠAgencies\":90186,\"Ġparticipates\":90187,\"ĠinitWithStyle\":90188,\"%X\":90189,\"Ġ`,\":90190,\".Obj\":90191,\"Ġ?\\\");Ċ\":90192,\"Career\":90193,\"Ġ<%=\":90194,\"kul\":90195,\"CppI\":90196,\"ĠMushroom\":90197,\"urat\":90198,\"mia\":90199,\"Cd\":90200,\"arduino\":90201,\"ĠcountryCode\":90202,\"_placement\":90203,\"(\\\"================\":90204,\"-bel\":90205,\"Assertions\":90206,\"ĠprÃ³xima\":90207,\"()\\\")Ċ\":90208,\"_eg\":90209,\"SSIP\":90210,\"uze\":90211,\"placer\":90212,\"ambiguous\":90213,\"_INITIALIZER\":90214,\"ĠHats\":90215,\"ĠGOOGLE\":90216,\"Ġagitation\":90217,\"(mutex\":90218,\"HIGH\":90219,\":\\\")\":90220,\"Ġinvaders\":90221,\"Ġ)}ĊĊ\":90222,\".manual\":90223,\"ĠSiemens\":90224,\"ĉJPanel\":90225,\"bindung\":90226,\"ecera\":90227,\"/met\":90228,\"ĠÃ©c\":90229,\"(station\":90230,\"ĠposiciÃ³n\":90231,\"_issues\":90232,\"_aliases\":90233,\"_topology\":90234,\"ĠAutodesk\":90235,\"Acknowled\":90236,\"!*\\\\Ċ\":90237,\"ĠFreight\":90238,\"ĠFXMLLoader\":90239,\"ichel\":90240,\"(ChatColor\":90241,\"Ġdissoci\":90242,\"Ġanalogue\":90243,\"<usize\":90244,\"-ev\":90245,\"Ġtendr\":90246,\">All\":90247,\"ĠUSERS\":90248,\".resp\":90249,\"_integration\":90250,\"DisplayStyle\":90251,\"FAILURE\":90252,\"ÑĩÐ¸ÑĤ\":90253,\"ilded\":90254,\"_semaphore\":90255,\"academic\":90256,\"Ġsclerosis\":90257,\"Fal\":90258,\",st\":90259,\"`=\":90260,\"ifton\":90261,\"Ġsubstitutes\":90262,\"ĠSupporters\":90263,\"applicant\":90264,\"(kv\":90265,\"ĠBermuda\":90266,\"Ġdiscrepancies\":90267,\".Solid\":90268,\"weeney\":90269,\"Ġgul\":90270,\"Ġfiletype\":90271,\"Ġresultat\":90272,\"SenderId\":90273,\"Ġgezocht\":90274,\"ĠBerkshire\":90275,\"Ġ(\\\"<\":90276,\"(ml\":90277,\"(shift\":90278,\"_REDIRECT\":90279,\"OLON\":90280,\"/browse\":90281,\":NSMakeRange\":90282,\"Ġwaive\":90283,\"Ġexce\":90284,\"Ġcatalogs\":90285,\"ä¹¦\":90286,\"illions\":90287,\".GetCurrentMethod\":90288,\"Ġbilingual\":90289,\"ĠCascadeType\":90290,\"ĉTransform\":90291,\"_CUSTOMER\":90292,\"isify\":90293,\"ĠÐ±Ð»\":90294,\"ĠWhoever\":90295,\"ĠEAR\":90296,\"Ġ[=[\":90297,\"ĠÐ¼Ð¾Ð¶Ð½Ð¾\":90298,\"Ġjardin\":90299,\"@show\":90300,\"Ġheirs\":90301,\"Ġabandonment\":90302,\"ĠTranscript\":90303,\"]^\":90304,\":SetPoint\":90305,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":90306,\"ĠFaction\":90307,\"(entities\":90308,\"faction\":90309,\"mtx\":90310,\"_recall\":90311,\".NULL\":90312,\".optional\":90313,\"(prediction\":90314,\"AGENT\":90315,\"ĠðŁĺĢ\":90316,\"âĢĻy\":90317,\"âĢĻutil\":90318,\"Ġangst\":90319,\".Experimental\":90320,\"hoot\":90321,\"asyarak\":90322,\"autoplay\":90323,\"ĠSplashScreen\":90324,\"Ġhectic\":90325,\"Ġmeticulously\":90326,\"Ġcomer\":90327,\"Keith\":90328,\"Ġfrase\":90329,\"_UNIQUE\":90330,\".Magenta\":90331,\"(Max\":90332,\"ĠscaleY\":90333,\"Ġputt\":90334,\"(IF\":90335,\"ĠAPPLE\":90336,\"Porno\":90337,\".addCell\":90338,\"Ġmolt\":90339,\"chimp\":90340,\"Ġleggings\":90341,\"Ġflop\":90342,\"âĢĻhui\":90343,\"RTOS\":90344,\"/span\":90345,\".bed\":90346,\".Logic\":90347,\"Ġuntranslated\":90348,\"CLEAR\":90349,\";left\":90350,\"ĠBFS\":90351,\"-groups\":90352,\"took\":90353,\"_accepted\":90354,\"Ġcashier\":90355,\"eventId\":90356,\"Ġdowngrade\":90357,\"ĉĉĉĉĉĉĉĉĉĉĉĊ\":90358,\"Ð°Ð½Ð¸Ñİ\":90359,\"Ã¤nde\":90360,\"Ġcouncillor\":90361,\"Ġdred\":90362,\"dT\":90363,\"WRAPPER\":90364,\".ol\":90365,\"ä¸Ģé¡µ\":90366,\"MEA\":90367,\"Ġkinetics\":90368,\"Ġjmp\":90369,\"_flight\":90370,\"Fear\":90371,\"ĠChanel\":90372,\"_migration\":90373,\"hdl\":90374,\"erequisite\":90375,\".rar\":90376,\"-One\":90377,\"Ġshepherd\":90378,\".easing\":90379,\"(descriptor\":90380,\"Ġsubtotal\":90381,\"ãĥĵ\":90382,\"Compiled\":90383,\"ĠColt\":90384,\"dle\":90385,\"/mock\":90386,\")row\":90387,\"Ġresett\":90388,\"tero\":90389,\"Ġaerobic\":90390,\".intro\":90391,\"Ġcheckboxes\":90392,\"ĠMcCartney\":90393,\"ĠClyde\":90394,\"ï¼Įå¹¶\":90395,\"cooldown\":90396,\"-instagram\":90397,\"ĠMPG\":90398,\"ĠLeisure\":90399,\"Ġnawet\":90400,\"ĠNXT\":90401,\"RegularExpression\":90402,\"Ġrave\":90403,\"BILL\":90404,\"Ġbartender\":90405,\"Enlarge\":90406,\"Ġvais\":90407,\"Ġ:ĊĊĊĊ\":90408,\".Endpoint\":90409,\"Ġ\\\",čĊ\":90410,\"}}\\\">{{$\":90411,\"trees\":90412,\".eng\":90413,\"*log\":90414,\":[],Ċ\":90415,\"Ġbattalion\":90416,\"Subjects\":90417,\"Ġexposition\":90418,\"ĠToastr\":90419,\"ĠtopLevel\":90420,\"ĠCEL\":90421,\"Ġgubern\":90422,\"unsubscribe\":90423,\"cona\":90424,\"_approx\":90425,\"TZ\":90426,\"ĠTreeSet\":90427,\".community\":90428,\"Ġnarrower\":90429,\"(Expected\":90430,\"Clr\":90431,\"Ġgore\":90432,\"Ġacquitted\":90433,\"ĠEURO\":90434,\"ě[\":90435,\"Ġrepublican\":90436,\"Ġautobiography\":90437,\"_fds\":90438,\"Collapsed\":90439,\"ĠčĊĠčĊ\":90440,\"-pills\":90441,\"MBED\":90442,\"ĠiNdEx\":90443,\"ĠresponseType\":90444,\"glfw\":90445,\"-turned\":90446,\"åıĳå¸ĥ\":90447,\"ĉBoolean\":90448,\".Or\":90449,\"inia\":90450,\"Ġhovered\":90451,\"Ġsorter\":90452,\"ĠNh\":90453,\"ĠExercises\":90454,\"lements\":90455,\"idon\":90456,\"Toe\":90457,\"ĠrÃ©fÃ©\":90458,\"SSFWorkbook\":90459,\"Ġorganisers\":90460,\"ĠresultMap\":90461,\"_HOR\":90462,\"Dod\":90463,\"LocalStorage\":90464,\"ĠjsonResponse\":90465,\"AuthService\":90466,\"Ġsme\":90467,\"embros\":90468,\"Ġlobbyist\":90469,\"ogui\":90470,\".spin\":90471,\"ĠCorrections\":90472,\"_RAD\":90473,\"ĠLSM\":90474,\"(currency\":90475,\"ĠæĢ\":90476,\"Ġprefetch\":90477,\".Head\":90478,\"-reader\":90479,\"ĠRoz\":90480,\"ĉmouse\":90481,\"ĠTLC\":90482,\"ĠQTableWidgetItem\":90483,\"ĠSTORAGE\":90484,\"anneer\":90485,\"ĠìĹĲ\":90486,\"acen\":90487,\"SX\":90488,\"ImageRelation\":90489,\"Ġresurgence\":90490,\"izzy\":90491,\"ilogue\":90492,\"IVAL\":90493,\"Ġsmack\":90494,\"rrha\":90495,\"(PARAM\":90496,\"!I\":90497,\"ĠMech\":90498,\"ĠIMapper\":90499,\"Ġgist\":90500,\"ĠPOD\":90501,\"vore\":90502,\"ulaÃ§Ã£o\":90503,\"Ġ,-\":90504,\"Ġinvoluntary\":90505,\"QRS\":90506,\"=title\":90507,\"ĠBiom\":90508,\"ĠShelley\":90509,\"ĠCSP\":90510,\"Pes\":90511,\"drops\":90512,\"ĠÑĥÑģÐ¿ÐµÑĪ\":90513,\"dives\":90514,\"![Ċ\":90515,\"ĠLeast\":90516,\"Ġkako\":90517,\"ĠModelo\":90518,\"ĠfunctionName\":90519,\"Ġchoking\":90520,\"Ġdeformation\":90521,\"','');Ċ\":90522,\"caÃ§Ã£o\":90523,\"Ġsquirrel\":90524,\"setBackground\":90525,\"Broken\":90526,\"polit\":90527,\"Nonce\":90528,\"Ġkeyed\":90529,\"MeshPro\":90530,\".userInteractionEnabled\":90531,\"Ġflushing\":90532,\"Ġbpp\":90533,\"ĠAnglic\":90534,\"Trou\":90535,\"ĠWalters\":90536,\"Ġstutter\":90537,\"Hip\":90538,\"_war\":90539,\"ivement\":90540,\"Corn\":90541,\"Ġundue\":90542,\"apatkan\":90543,\"Ġminden\":90544,\"significant\":90545,\"(quantity\":90546,\"$insert\":90547,\"ĠALERT\":90548,\".Unicode\":90549,\"ihn\":90550,\"]:=\":90551,\"ĠpinMode\":90552,\"Ġfrais\":90553,\"interpreter\":90554,\"'action\":90555,\"Ġbleiben\":90556,\"¡´\":90557,\"rowsers\":90558,\"GIT\":90559,\"_DIRS\":90560,\"Forever\":90561,\"ĠPdfPCell\":90562,\"|m\":90563,\".setHeight\":90564,\"Ġforearm\":90565,\"Ġbattleground\":90566,\"ĠÐ¿Ð¾ÑģÐ»ÐµÐ´\":90567,\"ĠHath\":90568,\"ĠAuthorized\":90569,\"Ġconferred\":90570,\"ĠBOTTOM\":90571,\".getFloat\":90572,\"ographed\":90573,\"ardy\":90574,\"ĠserviÃ§o\":90575,\"otoxic\":90576,\"/authentication\":90577,\"ĠreprÃ©sent\":90578,\"Ġcomplexion\":90579,\"ĉCommon\":90580,\"_bh\":90581,\"Whole\":90582,\"ImageData\":90583,\"Ġtink\":90584,\"equalTo\":90585,\"ĠTHR\":90586,\"Ġdeltas\":90587,\"ĠAGE\":90588,\"izador\":90589,\"administration\":90590,\"quets\":90591,\"_filled\":90592,\"ĠHÃ¤\":90593,\"alloca\":90594,\"ĠBoone\":90595,\"ĉlcd\":90596,\"FolderPath\":90597,\".Raise\":90598,\"_#{\":90599,\"ertino\":90600,\"ĠThrone\":90601,\"à®¿\":90602,\"oxetine\":90603,\"pray\":90604,\"Ġdiligently\":90605,\"ĠArchie\":90606,\".multipart\":90607,\"Ġseo\":90608,\".getProject\":90609,\"Ġpaj\":90610,\"clerosis\":90611,\"ameron\":90612,\"Ġtoured\":90613,\"Ġnike\":90614,\"ĠBakery\":90615,\",parent\":90616,\"_TEM\":90617,\"Spatial\":90618,\"lapping\":90619,\"ProducesResponseType\":90620,\"(balance\":90621,\"Hundreds\":90622,\"-terminal\":90623,\"\\\"Do\":90624,\"ContentSize\":90625,\"Ġbbc\":90626,\"ĠdÃ©couvrir\":90627,\"utilus\":90628,\".undo\":90629,\",output\":90630,\"groupName\":90631,\"$max\":90632,\"ĠAlla\":90633,\"ĠÐºÐ°ÑĢÑĤ\":90634,\".ONE\":90635,\"_decision\":90636,\"EEEE\":90637,\"ĠxOffset\":90638,\"çª\":90639,\"Ġrunaway\":90640,\"Ġhandjob\":90641,\"Ġgenitals\":90642,\"(jTextField\":90643,\".radians\":90644,\"ĠPadres\":90645,\"dependence\":90646,\"Ġswallowing\":90647,\"rotein\":90648,\"Ġfleets\":90649,\"Ġcaratter\":90650,\"(can\":90651,\"ĠFloral\":90652,\"_Msg\":90653,\"ĠdeclaraciÃ³n\":90654,\"lsru\":90655,\"schools\":90656,\"Ġdelegated\":90657,\"ĠPenal\":90658,\"ĠChern\":90659,\"SmartPointer\":90660,\"storybook\":90661,\"ĠNylon\":90662,\"æĢĿ\":90663,\"_LESS\":90664,\"/address\":90665,\"ĠCORS\":90666,\"ĠìĿ´ë¯¸\":90667,\"Ġmoda\":90668,\"mdp\":90669,\"Ġderby\":90670,\"ĠPharmaceuticals\":90671,\"Ġeyed\":90672,\"_cpus\":90673,\"è¦ĭ\":90674,\"||Ċ\":90675,\".mag\":90676,\"(QL\":90677,\"ĠCivilization\":90678,\"éĮ\":90679,\"_Dep\":90680,\"Ġswearing\":90681,\"ĠShorts\":90682,\"uebas\":90683,\"Ġdeline\":90684,\"ĠAdvisors\":90685,\"ĠìŀĪëĭ¤\":90686,\"_FINE\":90687,\"}):\":90688,\",assign\":90689,\"ĠPCIe\":90690,\"{{{\":90691,\"Sci\":90692,\"Ġambos\":90693,\"ileen\":90694,\"Ġtuner\":90695,\"ĠparamName\":90696,\",total\":90697,\"(LocalDate\":90698,\"Ġspp\":90699,\"Ġerrores\":90700,\"ĠHelping\":90701,\"_merged\":90702,\".timeScale\":90703,\"_ELEM\":90704,\"_SOL\":90705,\"Ġavent\":90706,\"<d\":90707,\"Junior\":90708,\"ĉbar\":90709,\".lv\":90710,\"Ġì¹\":90711,\"=wx\":90712,\"Ġmiraculous\":90713,\"ĠRandomForest\":90714,\"ĠFranken\":90715,\"``,\":90716,\"(InitializedTypeInfo\":90717,\"Ġsuperheroes\":90718,\"Ġansible\":90719,\"_TypeDef\":90720,\"ĠPerm\":90721,\"OLER\":90722,\"Gran\":90723,\"-notification\":90724,\"Ġkaz\":90725,\"Ġexhilar\":90726,\"serter\":90727,\"Ġstorefront\":90728,\"_ends\":90729,\"################################################################################Ċ\":90730,\"ĉgit\":90731,\"DSP\":90732,\"CHAIN\":90733,\"¬´\":90734,\"InvalidOperationException\":90735,\"ĠSly\":90736,\"ï¼ļ<\":90737,\"Britain\":90738,\"/slider\":90739,\"Ġzmq\":90740,\"Ġbaj\":90741,\"bred\":90742,\".VALUE\":90743,\"Ġgrieving\":90744,\"ĠpornÃ´s\":90745,\"igua\":90746,\"INCLUDED\":90747,\"Wake\":90748,\"cbd\":90749,\"ĠMongolia\":90750,\"invisible\":90751,\"Ġcorrective\":90752,\"Ġcenterpiece\":90753,\"Caught\":90754,\"Ġkarakter\":90755,\"almÃ¶\":90756,\"Ġbelum\":90757,\"Ġadjoining\":90758,\"?(\\\"\":90759,\"ĠVisualization\":90760,\"kke\":90761,\"ificados\":90762,\"spd\":90763,\"_CBC\":90764,\"-Language\":90765,\"Ġstil\":90766,\"oretical\":90767,\"(completion\":90768,\"ĠVerfÃ¼gung\":90769,\"_Tree\":90770,\"rippling\":90771,\".RemoveEmptyEntries\":90772,\"ĠTAX\":90773,\"ĉCode\":90774,\"åĭķ\":90775,\"urga\":90776,\"ĠÑĥÐ¶Ðµ\":90777,\"Ġaider\":90778,\"ĠPrescott\":90779,\"Ġfilament\":90780,\"Ġ--------------------\":90781,\"theros\":90782,\"ÐµÑĢÐ°\":90783,\"debian\":90784,\"Ã¤hl\":90785,\"olah\":90786,\"_UNITS\":90787,\"Ark\":90788,\"Mounted\":90789,\".TrimSpace\":90790,\".getNumber\":90791,\"_eof\":90792,\".nr\":90793,\"ĠSHARES\":90794,\"ilater\":90795,\"Ġwicht\":90796,\"_comparison\":90797,\"Ġ)\\\"\":90798,\"clinical\":90799,\"ĠTEntity\":90800,\"venes\":90801,\".getProperties\":90802,\"Ġrelat\":90803,\"Ġannoyance\":90804,\"beb\":90805,\"Ġanesthesia\":90806,\"_intervals\":90807,\"_fh\":90808,\"Ġsudoku\":90809,\"Ġdisen\":90810,\"connecting\":90811,\"Ġoa\":90812,\"Ġâĸĳ\":90813,\"ZF\":90814,\"Ġcuz\":90815,\"SOEVER\":90816,\"ĠMÃ¶glichkeit\":90817,\"charted\":90818,\"Ġhasher\":90819,\"ĠKeeps\":90820,\"AEA\":90821,\"ĉlogrus\":90822,\"ĉNamespace\":90823,\"ortho\":90824,\"$action\":90825,\"ĠRoc\":90826,\"');?>\\\"\":90827,\"ĠPROT\":90828,\"@api\":90829,\"chsel\":90830,\"/gif\":90831,\"(Handle\":90832,\"Ġanunci\":90833,\"/py\":90834,\"invalidate\":90835,\"ĠMEP\":90836,\"tems\":90837,\";]/\":90838,\"èĥ\":90839,\"è¿Ĳ\":90840,\"Ġtaco\":90841,\"ADV\":90842,\"hpp\":90843,\"ButtonClick\":90844,\"Ġbringen\":90845,\"ĠTIMEOUT\":90846,\"Ġastrology\":90847,\"dateFormat\":90848,\"OGRAPH\":90849,\"FileStream\":90850,\"å®¡æł¸\":90851,\".Comm\":90852,\"'b\":90853,\"ĠGETGLOBAL\":90854,\"eating\":90855,\"andest\":90856,\"ĠSETUP\":90857,\"ĠAdvances\":90858,\".scrollHeight\":90859,\"AZE\":90860,\"endtime\":90861,\"weathermap\":90862,\"ĠMango\":90863,\"ĠRIP\":90864,\"Ġiterators\":90865,\"Ġcoax\":90866,\"ĠåĽ¾\":90867,\"<main\":90868,\"rms\":90869,\"pcb\":90870,\"Ġvaccinations\":90871,\"Ġdisagreements\":90872,\"ĉevents\":90873,\"<Location\":90874,\".Measure\":90875,\"Ġqueda\":90876,\"Ġsignalling\":90877,\"Ġdegraded\":90878,\"ĠAmelia\":90879,\"-confidence\":90880,\"dbName\":90881,\"_inactive\":90882,\"onation\":90883,\"Ġperipherals\":90884,\"æł·\":90885,\"SUPER\":90886,\"'R\":90887,\".way\":90888,\"PLAIN\":90889,\"ĠEngel\":90890,\"relay\":90891,\"Ġdebido\":90892,\"ĠTrotsky\":90893,\"èĮ\":90894,\"ĠÐ°Ð´ÑĢÐµÑģ\":90895,\"ĉusers\":90896,\"etchup\":90897,\"tep\":90898,\"ĠnewPosition\":90899,\"Ġwaivers\":90900,\"edicine\":90901,\"Ġtanggal\":90902,\"Ġammonia\":90903,\"-det\":90904,\"/exec\":90905,\"(padding\":90906,\"ĠShoppingCart\":90907,\"ĠPrintf\":90908,\"Handled\":90909,\"ĠNAMES\":90910,\"(clock\":90911,\"Ġ{}:\":90912,\"Ġsims\":90913,\"ĠTears\":90914,\"Ġ-------------------------------------------------------------------------\":90915,\"_CANNOT\":90916,\"LEGRO\":90917,\".SetParent\":90918,\"åħ¶ä¸Ń\":90919,\"Ġerreur\":90920,\"ipi\":90921,\"<Expression\":90922,\".timeline\":90923,\"Ġ'_',\":90924,\"Ġcoatings\":90925,\"ĠuseForm\":90926,\".tk\":90927,\"ĠFeast\":90928,\".SK\":90929,\"Ã¤sent\":90930,\"chwitz\":90931,\"Ġinventive\":90932,\"ĠMei\":90933,\"Ġvestib\":90934,\"ĠnÃ¤chsten\":90935,\"/big\":90936,\"Ġretreated\":90937,\"Ġpropane\":90938,\"victim\":90939,\"Akt\":90940,\"ĠPreservation\":90941,\"ĠPis\":90942,\"_SHADOW\":90943,\"Ġpriceless\":90944,\"rÃ³d\":90945,\"obbled\":90946,\"ĠroleName\":90947,\"ĠGDPR\":90948,\"Ġ'\\\",\":90949,\"Centre\":90950,\"Architecture\":90951,\"CppClass\":90952,\"Ġmattresses\":90953,\"Ġbeep\":90954,\"ĠDamian\":90955,\"æĿĥéĻĲ\":90956,\"bett\":90957,\"_aes\":90958,\"(cells\":90959,\"Ġë°°ìĹ´\":90960,\"Ġbitmask\":90961,\"couldn\":90962,\"-now\":90963,\"Ġinnovate\":90964,\"Ġhacen\":90965,\"ĠLyons\":90966,\"thickness\":90967,\"Ġwhistleblower\":90968,\"$filter\":90969,\"Ġeuler\":90970,\"ĠHarm\":90971,\"Ġleds\":90972,\"ĠKelvin\":90973,\".quick\":90974,\"ĠLÃ³pez\":90975,\"reve\":90976,\"Ġnigeria\":90977,\"Ġjylland\":90978,\".emptyList\":90979,\"Ġunsettling\":90980,\"usband\":90981,\"Ġtrackers\":90982,\"=\\\\\\\"\\\";Ċ\":90983,\"Ġcontinua\":90984,\"ĠNumero\":90985,\"endon\":90986,\"ĠGerry\":90987,\".TODO\":90988,\"Repeated\":90989,\"ĠSerena\":90990,\"Ð¸Ð¼Ð°Ð»ÑĮ\":90991,\"profil\":90992,\"ĠÐ²ÑģÐµÑħ\":90993,\"@admin\":90994,\".Lines\":90995,\"Ġtransmissions\":90996,\"Ġcj\":90997,\"anÃ§a\":90998,\"åĪłéĻ¤æĪĲåĬŁ\":90999,\"ĠgetMenuInflater\":91000,\"ufreq\":91001,\"ĠMathematical\":91002,\"NavigatorMove\":91003,\"Ġfwd\":91004,\"unittest\":91005,\"Ġsynthesized\":91006,\"Ġcreed\":91007,\"(Frame\":91008,\"psych\":91009,\"vod\":91010,\"uC\":91011,\"áº§u\":91012,\"ĠâĢľâĢ¦\":91013,\"Ġkrat\":91014,\"drawable\":91015,\"Ã¦re\":91016,\"=top\":91017,\"(Logger\":91018,\"ErrorException\":91019,\"aisal\":91020,\"/ws\":91021,\"ulled\":91022,\"ARING\":91023,\"ĠnIndex\":91024,\"Ġinternals\":91025,\"Ġefficiencies\":91026,\"Ġ#@\":91027,\"_brightness\":91028,\"_normals\":91029,\"ĠStout\":91030,\"Ġunveil\":91031,\"ĠShots\":91032,\"-company\":91033,\"_elt\":91034,\"(dllexport\":91035,\"ĠproducciÃ³n\":91036,\"Cisco\":91037,\"Blake\":91038,\"-mouth\":91039,\"Pear\":91040,\"ĠÐ´Ð¾ÑģÑĤÑĥÐ¿\":91041,\"ĠJACK\":91042,\"Ġíĺ¸\":91043,\"Ġstopwords\":91044,\"ĠTess\":91045,\"Ġposte\":91046,\"razier\":91047,\"èŃ\":91048,\"Messaging\":91049,\"·æĸ°\":91050,\"Tambah\":91051,\"Ġnarcotics\":91052,\"Ġcamper\":91053,\"Ġtripod\":91054,\"ĠglEnd\":91055,\"Ġgioc\":91056,\"combe\":91057,\"UserRole\":91058,\"Ul\":91059,\"Equivalent\":91060,\"Ġgnome\":91061,\"ĠFuÃŁ\":91062,\"packageName\":91063,\"_ue\":91064,\"Disclosure\":91065,\"amate\":91066,\"_tensors\":91067,\"ĠKathryn\":91068,\"_Bar\":91069,\"ThreadId\":91070,\"Ġverifica\":91071,\".assertNull\":91072,\"ĠOdin\":91073,\"bÃ©\":91074,\"ĠÑģÐ¾ÑģÑĤ\":91075,\"Ġjt\":91076,\".SelectedItems\":91077,\"Ġactionable\":91078,\"ĠRegards\":91079,\"hek\":91080,\":numel\":91081,\",GL\":91082,\"ĠPHONE\":91083,\"ĉDefault\":91084,\"Ġelast\":91085,\"Ġbeck\":91086,\"=create\":91087,\":'Ċ\":91088,\"arhus\":91089,\"modifiers\":91090,\"intptr\":91091,\"Ġpropio\":91092,\"ï¼Īç¬ĳ\":91093,\"ĠrequestOptions\":91094,\"Ġimplic\":91095,\"Ġduro\":91096,\"ĠPCS\":91097,\"Delimiter\":91098,\"(logits\":91099,\".EVT\":91100,\"WithContext\":91101,\"Ġoltre\":91102,\"_EXECUTE\":91103,\"olicited\":91104,\"_Enter\":91105,\"/from\":91106,\"ĠÑģÐ»Ð¾Ð²\":91107,\"ĠHorm\":91108,\"uibModal\":91109,\"_INFINITY\":91110,\"ï¼ĮãĢĬ\":91111,\"UGINS\":91112,\"ONGL\":91113,\",buf\":91114,\"Ġpourrait\":91115,\"pj\":91116,\"(cube\":91117,\"Ġugl\":91118,\"ĠSawyer\":91119,\"IFEST\":91120,\"Apis\":91121,\"ĠCoreData\":91122,\"Ġsesame\":91123,\".pth\":91124,\".getUserName\":91125,\"cased\":91126,\"Ġvanish\":91127,\"_Api\":91128,\"//:\":91129,\"/non\":91130,\".docker\":91131,\".si\":91132,\"alerts\":91133,\"Ġintestine\":91134,\"participants\":91135,\"-visible\":91136,\"emsp\":91137,\"mue\":91138,\"_pv\":91139,\"ĠCri\":91140,\"ogra\":91141,\"_experience\":91142,\"ĠINTERVAL\":91143,\"_regression\":91144,\"íķĺìĦ¸ìļĶ\":91145,\"endereco\":91146,\"latable\":91147,\".localtime\":91148,\"ĠBITS\":91149,\"ĠFolding\":91150,\"ĉĠĉĉ\":91151,\"Ã©se\":91152,\"-bearing\":91153,\"ĠXPAR\":91154,\"OPSIS\":91155,\"'^$',\":91156,\"incl\":91157,\"ĠOprah\":91158,\"Ġbooths\":91159,\"ĠRohing\":91160,\".BorderSide\":91161,\"atatype\":91162,\"CreatedBy\":91163,\",âĢĻâĢĿ\":91164,\"doctrine\":91165,\"Ġbreathed\":91166,\"_beg\":91167,\"Ġafflicted\":91168,\"Mountain\":91169,\"Bloc\":91170,\"Ġruining\":91171,\".Annotations\":91172,\"ĉintent\":91173,\"Ġstatically\":91174,\"_Utils\":91175,\"Launcher\":91176,\":normal\":91177,\"Ġuserinfo\":91178,\"-Jul\":91179,\"Kyle\":91180,\".ReadUInt\":91181,\"(urls\":91182,\"/if\":91183,\"mittel\":91184,\"bcm\":91185,\"@Module\":91186,\"ĠConstantin\":91187,\"Ġbj\":91188,\"ernaut\":91189,\"<r\":91190,\"ĠMentor\":91191,\"Ġegret\":91192,\"_oauth\":91193,\".DataContext\":91194,\"_CLI\":91195,\"(Constructor\":91196,\"ĠsetPosition\":91197,\"resar\":91198,\"enting\":91199,\"à¸¹à¸¥\":91200,\"Transmission\":91201,\"ĠnotifyDataSetChanged\":91202,\"ĠMouseButton\":91203,\"Ġ*\\\"\":91204,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠčĊ\":91205,\"ĠLydia\":91206,\"Ġswore\":91207,\"Ġplataforma\":91208,\"ĉbuttons\":91209,\"Ġsprung\":91210,\"(TokenType\":91211,\"Cx\":91212,\"Aqu\":91213,\"ĉĉĉĉĉĉĉĉĉĠĠ\":91214,\"ĉADD\":91215,\"uids\":91216,\"Ġà¤®\":91217,\"ĠæĹ¶éĹ´\":91218,\".ActionBar\":91219,\"Ġocur\":91220,\"Ġilma\":91221,\"-neutral\":91222,\"Ġ\\\".\\\";Ċ\":91223,\"ĉSize\":91224,\"Pieces\":91225,\"Ġstif\":91226,\"Ġ\\\"=\\\",\":91227,\"ĠEquivalent\":91228,\"Ġigen\":91229,\"dfd\":91230,\"_thickness\":91231,\"_readable\":91232,\"/false\":91233,\"Ġtooltips\":91234,\"oplast\":91235,\"hua\":91236,\"handleRequest\":91237,\".LAZY\":91238,\"<UFunction\":91239,\"immutable\":91240,\"ihilation\":91241,\"Ġorthodox\":91242,\".populate\":91243,\"Ġvera\":91244,\"Ġober\":91245,\"sand\":91246,\"vig\":91247,\"Conference\":91248,\"(Collision\":91249,\"/auto\":91250,\"ĠSolidColorBrush\":91251,\"*'\":91252,\",address\":91253,\"Ġsweetheart\":91254,\"Ã¡ticas\":91255,\"anine\":91256,\"_payments\":91257,\"Ġunmist\":91258,\"Ġtrumpet\":91259,\"BAL\":91260,\"ĠfileId\":91261,\"niejs\":91262,\"ADF\":91263,\"Ġmnist\":91264,\"ĠFehler\":91265,\"ãĢĳ,\":91266,\"CharacterSet\":91267,\"ĠVance\":91268,\"Inserted\":91269,\"Ġdownwards\":91270,\"Ġrotational\":91271,\"Ġencountering\":91272,\"MBProgressHUD\":91273,\"/System\":91274,\"/pop\":91275,\"Ġ})čĊčĊ\":91276,\"Ġ.'</\":91277,\"ï¼īčĊ\":91278,\"Ġdcc\":91279,\"asyarakat\":91280,\"Ġprincipally\":91281,\"å®ļä¹ī\":91282,\"(choices\":91283,\".paginator\":91284,\"Ġupbringing\":91285,\"Ġdotenv\":91286,\"())/\":91287,\"ĠTAS\":91288,\"gcd\":91289,\"_intf\":91290,\".mutex\":91291,\"prestashop\":91292,\"ĠbÃ¶r\":91293,\"dap\":91294,\"_demand\":91295,\"\\\\Desktop\":91296,\"toFloat\":91297,\"Ġsegregated\":91298,\"Ġclimates\":91299,\".OrderByDescending\":91300,\"(',')\":91301,\"PullParser\":91302,\"Atoms\":91303,\"ĠbenÃ¶t\":91304,\"Ġhomer\":91305,\"antu\":91306,\"IsEmpty\":91307,\"ĠBegins\":91308,\">Show\":91309,\"ĠSupplements\":91310,\"occus\":91311,\"Ġdope\":91312,\".booking\":91313,\"ĠAlmighty\":91314,\"[edge\":91315,\"ĠEbay\":91316,\"_race\":91317,\"Frozen\":91318,\"_travel\":91319,\"Ġpastors\":91320,\"_SURFACE\":91321,\"_genre\":91322,\"_HOT\":91323,\",dim\":91324,\"Tbl\":91325,\"mts\":91326,\"predictions\":91327,\"_cum\":91328,\"Ġdetalles\":91329,\"-transitional\":91330,\"Ġwakeup\":91331,\"Persons\":91332,\".colorbar\":91333,\"Strange\":91334,\"Ø¯Ùĩ\":91335,\"&W\":91336,\"ĠARP\":91337,\"_SOFT\":91338,\"_draft\":91339,\"IVA\":91340,\"Ġgrop\":91341,\"Ġliebe\":91342,\"Ġiid\":91343,\"Ø§Ø³\":91344,\"candidates\":91345,\"getAs\":91346,\"=_(\\\"\":91347,\".GetOrdinal\":91348,\"))==\":91349,\"annotate\":91350,\"ĠLumia\":91351,\"IRMWARE\":91352,\"_OPENGL\":91353,\"(formData\":91354,\"entimes\":91355,\"Ġwatershed\":91356,\"ĠÐ±ÐµÐ·\":91357,\"Ġfloppy\":91358,\"Towards\":91359,\"(compact\":91360,\"DDD\":91361,\"{n\":91362,\"Ġpoking\":91363,\"@m\":91364,\"Ġrecycl\":91365,\"structors\":91366,\"keyCode\":91367,\"Ġvehement\":91368,\"Ġlitre\":91369,\"ĠBIND\":91370,\"ĠFrancois\":91371,\"Ġnudity\":91372,\"Ġisize\":91373,\"ĉonClick\":91374,\"ystals\":91375,\"ĠgetSystemService\":91376,\"WebResponse\":91377,\"filesize\":91378,\"ĠChlor\":91379,\"coli\":91380,\"_seat\":91381,\".AddInParameter\":91382,\")test\":91383,\"Ġques\":91384,\"Ġcautiously\":91385,\"\\\"display\":91386,\".shtml\":91387,\"ĠGUIDATA\":91388,\"(\\\"**\":91389,\"Ġgranddaughter\":91390,\"ĠAssemblyDescription\":91391,\"ForEach\":91392,\"Wilson\":91393,\",eg\":91394,\"Ġbelievable\":91395,\"Ġcrossword\":91396,\"lobber\":91397,\"ĠStaples\":91398,\"(ship\":91399,\"Ġwaged\":91400,\"ĠBolshevik\":91401,\".AddItem\":91402,\"(Filter\":91403,\"_ABC\":91404,\"Ġ`\\\\\":91405,\"Ð¾Ñī\":91406,\"Ġmbox\":91407,\"ĠNes\":91408,\"ĠAVCapture\":91409,\"Ġconhe\":91410,\"ĠINTERNATIONAL\":91411,\"osg\":91412,\"Ġ])->\":91413,\"SKTOP\":91414,\"Ġkidd\":91415,\"ĠSST\":91416,\"Ġåħ³\":91417,\"ĠEthnic\":91418,\"ERSHEY\":91419,\"Ġmultic\":91420,\"_MUL\":91421,\"ĠFindObjectOfType\":91422,\"ĠExpenses\":91423,\"getMockBuilder\":91424,\"-guide\":91425,\"'L\":91426,\"ĠçĻ»\":91427,\"Ġraj\":91428,\"ĠBlanch\":91429,\"ĠAddresses\":91430,\"Nx\":91431,\"ĠIslamabad\":91432,\"Ð¾ÐºÑĥÐ¼ÐµÐ½ÑĤ\":91433,\"ĠBeaver\":91434,\".students\":91435,\"ĠAsyncCallback\":91436,\"sheets\":91437,\"ecast\":91438,\"ĠFundamental\":91439,\"Ġverdienen\":91440,\"Ġexacerbated\":91441,\"ĠModerator\":91442,\"CCCCCC\":91443,\"Ġtimeouts\":91444,\"Ġsubdivisions\":91445,\"Ġcompromises\":91446,\"uzzer\":91447,\"},${\":91448,\"_blocking\":91449,\"ermann\":91450,\"ĠMikhail\":91451,\"ĠSelbst\":91452,\"éĶĢ\":91453,\".shows\":91454,\"ä¸ĩåħĥ\":91455,\"ĠTf\":91456,\"ĠIHttpActionResult\":91457,\"ĠIEntity\":91458,\"Ġiq\":91459,\"FML\":91460,\"odem\":91461,\"stp\":91462,\"uctions\":91463,\".favorite\":91464,\".GetDirectoryName\":91465,\"Ġgrac\":91466,\"ĠxmlDoc\":91467,\"_pushButton\":91468,\"collector\":91469,\"=explode\":91470,\"ĠdestinationViewController\":91471,\"ĠSerialized\":91472,\":message\":91473,\"ĠCCC\":91474,\"_recovery\":91475,\"-kit\":91476,\"shima\":91477,\"rotch\":91478,\"Ġ`}Ċ\":91479,\"_supp\":91480,\"Tabla\":91481,\"ÑĢÐµÐ´ÐµÐ»\":91482,\"GtkWidget\":91483,\"ĠSIMPLE\":91484,\".phi\":91485,\"ĠLiberties\":91486,\"--[\":91487,\"Ġunveiling\":91488,\"Ġextents\":91489,\"bcd\":91490,\"Ġhvad\":91491,\"ĉcr\":91492,\".readdir\":91493,\"Ġreadability\":91494,\"Ġdismissing\":91495,\"Camb\":91496,\"Ġcasualty\":91497,\"ĠIPV\":91498,\"mites\":91499,\"Ġpurified\":91500,\".Orientation\":91501,\"Ġlj\":91502,\"imulator\":91503,\"fram\":91504,\"/location\":91505,\"Ġcommunicates\":91506,\":UIAlert\":91507,\"/social\":91508,\"elyn\":91509,\"DEN\":91510,\"Ġ×ŀ\":91511,\"ĠbeforeSend\":91512,\"ĠUnters\":91513,\"').\\\"\":91514,\"Ġ'');\":91515,\".writeObject\":91516,\"(grammarAccess\":91517,\"ĠApplicationContext\":91518,\"ByUsername\":91519,\"Ġskips\":91520,\"Ġfilho\":91521,\"Ġvieux\":91522,\"ĠmRecyclerView\":91523,\"Ġaroused\":91524,\".owl\":91525,\"Ġcurled\":91526,\"/callback\":91527,\"(':')[\":91528,\"Ġinund\":91529,\"Ġbreakpoints\":91530,\"-even\":91531,\".stem\":91532,\"Ġderog\":91533,\"Ġnep\":91534,\"ĠCompletableFuture\":91535,\"-Line\":91536,\"/*/\":91537,\".Hex\":91538,\"Ġrusse\":91539,\"Ġbif\":91540,\"ĠFond\":91541,\"iect\":91542,\"Ġallotted\":91543,\"detector\":91544,\"Ġ/ĊĊ\":91545,\"emode\":91546,\"uhe\":91547,\"uisse\":91548,\"ĠFIXED\":91549,\"mathrm\":91550,\"Ġunsus\":91551,\"ĠAutos\":91552,\"Ġ..........\":91553,\".travel\":91554,\"NAV\":91555,\"Ġlesbisk\":91556,\"ĠÃ¼zer\":91557,\"Ġcleric\":91558,\"Ġlimitless\":91559,\"olucion\":91560,\"Ġneckline\":91561,\"Ġdrifted\":91562,\"ĠReliable\":91563,\"ĠCary\":91564,\"ĠtenÃŃa\":91565,\"Ġ?>'\":91566,\"/commons\":91567,\"ĠGMC\":91568,\"_NPC\":91569,\"ĠBliss\":91570,\"ĠBurma\":91571,\"åĲĮæĹ¶\":91572,\"(depend\":91573,\"-suite\":91574,\"ĉstage\":91575,\"Doug\":91576,\"identification\":91577,\"_resolver\":91578,\"Began\":91579,\"[thread\":91580,\"Ġ;ĊĊĊ\":91581,\"NTSTATUS\":91582,\"Ġdisobed\":91583,\"|h\":91584,\"Ġaccumulating\":91585,\"Ġ\\\",\\\");Ċ\":91586,\"uParam\":91587,\".bill\":91588,\"ritch\":91589,\"Crime\":91590,\"ÐµÑģÑĮ\":91591,\"ĠRemain\":91592,\"çĦ¡æĸĻ\":91593,\"_THAT\":91594,\"`\\\"]Ċ\":91595,\".stamp\":91596,\"Ġparanormal\":91597,\"ĠMPC\":91598,\"\\\"urls\":91599,\"ĠEstates\":91600,\"ToFront\":91601,\"Thirty\":91602,\"Beth\":91603,\"'u\":91604,\"Ġì½Ķëĵľ\":91605,\"UFACT\":91606,\"ĠCrom\":91607,\"ĠMister\":91608,\"ĠEQUAL\":91609,\"enheim\":91610,\"Ġ//{\":91611,\"_was\":91612,\"Ġbouquet\":91613,\"ĠMiddleton\":91614,\"izu\":91615,\"_hashes\":91616,\"Ġhenne\":91617,\"ĠLINUX\":91618,\"ĉService\":91619,\"ĠTAM\":91620,\"Ġ`_\":91621,\"ĠATA\":91622,\"Ġdangling\":91623,\"pain\":91624,\"_BOUNDS\":91625,\"programming\":91626,\"ĠcurrentItem\":91627,\"Ġbesie\":91628,\"emble\":91629,\"(calc\":91630,\".Skin\":91631,\"Ġpearls\":91632,\"ĠBurb\":91633,\"-monitor\":91634,\"/cs\":91635,\"fir\":91636,\"(ver\":91637,\"[args\":91638,\"Ã¼cken\":91639,\"eparator\":91640,\"Dou\":91641,\".Ent\":91642,\"ĠESA\":91643,\"(fm\":91644,\"tones\":91645,\"ĠZac\":91646,\"ksam\":91647,\"âĢĻall\":91648,\"ĠMSS\":91649,\"\\\"Don\":91650,\"Ġsimplex\":91651,\"ĠConscious\":91652,\"ĠApplicant\":91653,\"pellier\":91654,\"Ġpedestal\":91655,\"$http\":91656,\"ĠAva\":91657,\".CG\":91658,\"ĠintÃ©ress\":91659,\"ĠIntegral\":91660,\"rede\":91661,\"=format\":91662,\".Paths\":91663,\"_PARTITION\":91664,\"Ġseh\":91665,\"ĠQuando\":91666,\"Youtube\":91667,\".putText\":91668,\"ì£¼ìĦ¸ìļĶ\":91669,\".AWS\":91670,\"ĠCsv\":91671,\"CursorPosition\":91672,\"-begin\":91673,\"_countries\":91674,\"-random\":91675,\"åį³\":91676,\"Phill\":91677,\"Ġpanorama\":91678,\"Ġtheres\":91679,\"åıª\":91680,\"Ġsilenced\":91681,\"ĠCumberland\":91682,\".VisibleIndex\":91683,\".statistics\":91684,\"Ġpropelled\":91685,\"Americans\":91686,\"Ġvalida\":91687,\"ĠGuam\":91688,\"ĠFEMA\":91689,\".syntax\":91690,\"dge\":91691,\"Ġdeepen\":91692,\"ĠĠĠĠĠĠĠĠĉĉĉĉ\":91693,\"ĠSpecialists\":91694,\"ĠSantana\":91695,\"ĠBeetle\":91696,\"Ġ%ĊĊ\":91697,\"UserProfile\":91698,\"(\\\"$.\":91699,\"Ġemploi\":91700,\"Ġemailing\":91701,\"getOrElse\":91702,\"_UPPER\":91703,\".drive\":91704,\"Ġredhead\":91705,\"FOUNDATION\":91706,\"Ġmultiplic\":91707,\"/effects\":91708,\"Ġhandwriting\":91709,\"_ta\":91710,\"ĠBaz\":91711,\"Ã¶ffent\":91712,\"prix\":91713,\"Ġchipset\":91714,\"ĠipAddress\":91715,\"ÃŃda\":91716,\"ĠUng\":91717,\"ĠScha\":91718,\".FLOAT\":91719,\"Ġquiero\":91720,\"ochrome\":91721,\"Ġreefs\":91722,\"bson\":91723,\"ĠmÃº\":91724,\"Ġtrays\":91725,\"Bomb\":91726,\"ĠmyList\":91727,\"ximity\":91728,\"ĠDeng\":91729,\"Uni\":91730,\"-Series\":91731,\"ogany\":91732,\"lÄ±k\":91733,\"/cal\":91734,\"Ġrealiza\":91735,\"ĠHib\":91736,\"ĉĊĉĊĊ\":91737,\"Ġhumiliating\":91738,\"[${\":91739,\"Ġpretended\":91740,\"ĠDatensch\":91741,\"ansible\":91742,\"ĉreload\":91743,\"Ġmiglior\":91744,\"_bet\":91745,\"ĠtotalTime\":91746,\"ĠBaxter\":91747,\"Ġenamel\":91748,\"/Images\":91749,\"ĠSES\":91750,\"ĠSpringApplication\":91751,\")initWithFrame\":91752,\"ĉcal\":91753,\"ELEMENT\":91754,\"ĠGuth\":91755,\"(BigInteger\":91756,\"ĠMedi\":91757,\".Members\":91758,\"Ġrejoice\":91759,\"Ġdof\":91760,\"PEndPoint\":91761,\"Ġclit\":91762,\"_REUSE\":91763,\"Makes\":91764,\"Ġszy\":91765,\"Ġshaded\":91766,\"Ġfavoured\":91767,\"istol\":91768,\"dex\":91769,\"ĠflexGrow\":91770,\"ħ§\":91771,\"_printer\":91772,\".fname\":91773,\"peration\":91774,\"ĠnÃ³s\":91775,\"gger\":91776,\"èĢģ\":91777,\"ĠÐ²ÑĢÐµÐ¼Ñı\":91778,\"(effect\":91779,\"ByUrl\":91780,\"ĠAPS\":91781,\"tutorial\":91782,\"ejs\":91783,\"SqlParameter\":91784,\"Ġscraps\":91785,\"Greetings\":91786,\"Fed\":91787,\"ĠRENDER\":91788,\"Ġblooms\":91789,\"Ġdebilitating\":91790,\"ometrics\":91791,\"Ġsimil\":91792,\"-hero\":91793,\"Ġrealpath\":91794,\"departments\":91795,\"BIND\":91796,\"ĠCassidy\":91797,\"lian\":91798,\"SKIP\":91799,\"-clean\":91800,\"Ġsildenafil\":91801,\"_multip\":91802,\"jsonData\":91803,\"Agents\":91804,\".fhir\":91805,\"Ġtrium\":91806,\"Ġastore\":91807,\"Ġnex\":91808,\":update\":91809,\"ĠÐ´Ð°\":91810,\"à¤²\":91811,\";\\\")Ċ\":91812,\".TextImageRelation\":91813,\"Ġmicroscopy\":91814,\"SUR\":91815,\"anky\":91816,\"ĠPetit\":91817,\"marketing\":91818,\"Ġverificar\":91819,\"amaged\":91820,\"cth\":91821,\"Ġinconsistencies\":91822,\"ĠmajÄħ\":91823,\"ĠgetInfo\":91824,\"Ġpassionately\":91825,\"Ġicmp\":91826,\"[]>Ċ\":91827,\"Singapore\":91828,\"ĠNewtown\":91829,\"Ġrailing\":91830,\"ĠEnlightenment\":91831,\"utherland\":91832,\"leine\":91833,\"_registro\":91834,\"ĠErica\":91835,\"_tickets\":91836,\"/method\":91837,\"izzato\":91838,\"Gatt\":91839,\"-feature\":91840,\"Ġ:-)\":91841,\"Ġserpent\":91842,\"ĠGroupLayout\":91843,\"Nike\":91844,\"unga\":91845,\"ĠMim\":91846,\"Ġincess\":91847,\"Ġdepletion\":91848,\"_lot\":91849,\"Ġbirthdays\":91850,\"Ġrenters\":91851,\"Ġequipos\":91852,\"ĠLehr\":91853,\"_Play\":91854,\"Ġspiele\":91855,\"ĠLAND\":91856,\"ĠEncounter\":91857,\"izando\":91858,\"Ġperu\":91859,\"Ġslamming\":91860,\"Ġreinstall\":91861,\"Ġangi\":91862,\"InTheDocument\":91863,\"Ġverschill\":91864,\"Ġverso\":91865,\".staff\":91866,\"(vp\":91867,\"(accounts\":91868,\"getApplication\":91869,\"Ġmantener\":91870,\".SO\":91871,\".AD\":91872,\"ĠMormons\":91873,\"ĉreal\":91874,\"Ġhotline\":91875,\"ĠCardio\":91876,\"pageIndex\":91877,\"bjerg\":91878,\"Fo\":91879,\"Ġconseils\":91880,\"Ġmigraine\":91881,\"Ġlatino\":91882,\"Ġtorpedo\":91883,\"jabi\":91884,\"/rs\":91885,\"ubber\":91886,\"ĠClasse\":91887,\"à¼\":91888,\"(/^\\\\\":91889,\"_deploy\":91890,\"GRES\":91891,\"ĠWHATSOEVER\":91892,\"Ġarcpy\":91893,\"Ġmiejsc\":91894,\"Army\":91895,\"ĠschÃ¶ne\":91896,\"Ġbmi\":91897,\"Ġ:\\\";Ċ\":91898,\"ĠCruiser\":91899,\"qh\":91900,\".prepend\":91901,\"Ġvive\":91902,\"oriasis\":91903,\"Ġ!=Ċ\":91904,\"tega\":91905,\"amedi\":91906,\"Projected\":91907,\"-bre\":91908,\",readonly\":91909,\"ĠsubTitle\":91910,\"Ġmistr\":91911,\"ĠInhal\":91912,\"covering\":91913,\"Ġzij\":91914,\"ĠARTICLE\":91915,\"RULE\":91916,\"Ġaltro\":91917,\"Ġsettles\":91918,\"idelberg\":91919,\":\\\".$\":91920,\"(fe\":91921,\"_bm\":91922,\"Ġproprietor\":91923,\"Ġkeer\":91924,\"Separated\":91925,\"_NEAREST\":91926,\"(strpos\":91927,\"ĠComputational\":91928,\"Ġern\":91929,\"InView\":91930,\"Across\":91931,\"Ġfruity\":91932,\"_mapped\":91933,\"Ġgratuitement\":91934,\"Ġ{}ĊĊĊ\":91935,\"potential\":91936,\"pants\":91937,\"Ġsentimental\":91938,\"ĠLinkedin\":91939,\"(patch\":91940,\"Ġadaptor\":91941,\"ĠUIStoryboard\":91942,\"Ġslashing\":91943,\"(\\\"/:\":91944,\"ĠtextDecoration\":91945,\".diag\":91946,\"\\\\Redirect\":91947,\"Ġneuroscience\":91948,\"ĠAdjustment\":91949,\"ĠScotch\":91950,\"ĠCosby\":91951,\"SEA\":91952,\"=view\":91953,\"Ġevolves\":91954,\"ĠSalisbury\":91955,\"ãĢģâĢľ\":91956,\"everyone\":91957,\"(arc\":91958,\"Ġapartheid\":91959,\"Ġazimuth\":91960,\"ĠShaman\":91961,\"Ø¥\":91962,\"Ã³nica\":91963,\":class\":91964,\"ĠInjector\":91965,\"ahas\":91966,\"abler\":91967,\"_estimator\":91968,\"_CUBE\":91969,\"ĠKrank\":91970,\"Ġunfavorable\":91971,\"Ġreputed\":91972,\"ĠConditional\":91973,\"Ġmilfs\":91974,\"ĠRestrictions\":91975,\"(href\":91976,\"Juan\":91977,\"<Entry\":91978,\"ĉtemplateUrl\":91979,\"_production\":91980,\"TypeID\":91981,\"Ġbalk\":91982,\"ĠnewArr\":91983,\"Ġlicences\":91984,\".solution\":91985,\".sam\":91986,\"ĠHv\":91987,\"Ġtrembling\":91988,\"Yaw\":91989,\"Ġfleece\":91990,\"Ġshovel\":91991,\"Wer\":91992,\"Ġpatter\":91993,\"=Y\":91994,\"ĠFrm\":91995,\"Screens\":91996,\"$\\\"\":91997,\"ĠBlond\":91998,\"ĠÑģÐ¸ÑģÑĤÐµÐ¼\":91999,\"(od\":92000,\"Ġnoct\":92001,\"ounters\":92002,\"useppe\":92003,\"|int\":92004,\".remaining\":92005,\"Ġultimo\":92006,\"Ġmasturbating\":92007,\"mmc\":92008,\"=G\":92009,\"\\\"]}Ċ\":92010,\"Ġfearless\":92011,\"Ġalgumas\":92012,\"cult\":92013,\"Alternatively\":92014,\"å²ģ\":92015,\"ODEV\":92016,\"ĠAdoption\":92017,\"Ġwealthiest\":92018,\"Ġmentre\":92019,\"/goto\":92020,\"Ġinformant\":92021,\"ĠRout\":92022,\"ofi\":92023,\"Ġhammered\":92024,\"ĠEsto\":92025,\"âĢĻBrien\":92026,\"ĠÅļ\":92027,\"Ġdemi\":92028,\"ĠÑģÐ»ÐµÐ´\":92029,\"ĠClintons\":92030,\"ìħĺ\":92031,\"å¤§å°ı\":92032,\"ECH\":92033,\"Ġanarchists\":92034,\"ĠBeverage\":92035,\"Ġgou\":92036,\"Ġbribery\":92037,\"Ġpickups\":92038,\"Ġuber\":92039,\"Ġsynergy\":92040,\"fcn\":92041,\"ĠHentai\":92042,\"ĠBasement\":92043,\"Ġmorb\":92044,\"_cu\":92045,\"jadi\":92046,\"(proj\":92047,\"ĠBingo\":92048,\"_cate\":92049,\"[email\":92050,\"*X\":92051,\"_SEP\":92052,\"Ġprincipio\":92053,\"updating\":92054,\"//}}\":92055,\"...(\":92056,\"ĠDOE\":92057,\"Ġzg\":92058,\"shapes\":92059,\"=tmp\":92060,\"Crud\":92061,\"Ġworkplaces\":92062,\"Ġstabilized\":92063,\"Ġtentang\":92064,\".productId\":92065,\"ĠTrident\":92066,\"Ġorchestrated\":92067,\"ĠBuccaneers\":92068,\"_tolerance\":92069,\"igraphy\":92070,\"Ã¼ler\":92071,\"ĠØµ\":92072,\"AQ\":92073,\"Ġathleticism\":92074,\"ĉServer\":92075,\"ewed\":92076,\"DidEnter\":92077,\"Registers\":92078,\"_emlrt\":92079,\"Ġfunctionalities\":92080,\"(hdc\":92081,\"_markers\":92082,\"Oregon\":92083,\"(Str\":92084,\"ĠGetById\":92085,\"Ġzwarte\":92086,\"ĠOCI\":92087,\"ĠJame\":92088,\"_crit\":92089,\"Ġstockholm\":92090,\"ĉDictionary\":92091,\"_capabilities\":92092,\"CTR\":92093,\"Ġnuma\":92094,\"_firstname\":92095,\"ĠNSRange\":92096,\"Ġmostra\":92097,\"ĠArrival\":92098,\"(IServiceCollection\":92099,\"Ġteaspoons\":92100,\"ĠSetUp\":92101,\"ĉĉčĊčĊ\":92102,\"(guild\":92103,\".\\\"]\":92104,\"Ġmá»Ľi\":92105,\"bff\":92106,\"DATES\":92107,\"()]ĊĊ\":92108,\"Ġhumanoid\":92109,\"thro\":92110,\"(klass\":92111,\"ĠVad\":92112,\"fsp\":92113,\"-Sah\":92114,\"ĠUSERNAME\":92115,\"ĠPropertyChangedEventArgs\":92116,\"Ġlesion\":92117,\"_DENIED\":92118,\"ĠTHINK\":92119,\"Ĥ¤\":92120,\"mental\":92121,\"Ġprecarious\":92122,\"ĠNose\":92123,\"Ġconcl\":92124,\"Ġwildfire\":92125,\"ĠTBranch\":92126,\"ĠBAM\":92127,\"/csv\":92128,\"ĠNAN\":92129,\"ĠClearance\":92130,\"\\\\Block\":92131,\".annotate\":92132,\"æī¾\":92133,\"ĠWHILE\":92134,\"gebung\":92135,\">List\":92136,\"shm\":92137,\"Ross\":92138,\"afd\":92139,\"[tid\":92140,\"PerPixel\":92141,\"+(\\\\\":92142,\"ĠCyan\":92143,\"ĠKnot\":92144,\"_vlog\":92145,\"/var\":92146,\"[__\":92147,\"Ġhashmap\":92148,\"();ččĊ\":92149,\"Ġamassed\":92150,\"ĠdatePicker\":92151,\"ĠSatoshi\":92152,\"_CAPACITY\":92153,\"Ġbuz\":92154,\"ĠMinh\":92155,\"SetColor\":92156,\"+='<\":92157,\"ĠInvent\":92158,\"orca\":92159,\"ignum\":92160,\"ĠAmph\":92161,\"Ġreflux\":92162,\"ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":92163,\"uhn\":92164,\"(TM\":92165,\"alley\":92166,\"Ġleftovers\":92167,\"fdc\":92168,\"âĢľThese\":92169,\"Ġcrawled\":92170,\"(Void\":92171,\"igte\":92172,\"ðŁĴ\":92173,\"setDefault\":92174,\"ĠBeginner\":92175,\"Pok\":92176,\"ĠHLS\":92177,\"ĠgameId\":92178,\"ĠAmbient\":92179,\"_PRED\":92180,\".\\\"},Ċ\":92181,\"Ã¼hrung\":92182,\".Sync\":92183,\"Ġinve\":92184,\"ĠNursery\":92185,\"Ġglazed\":92186,\"«ìŀĲ\":92187,\"_fatal\":92188,\"_dispatcher\":92189,\"[])čĊ\":92190,\"Ġdeutschen\":92191,\"ê±°\":92192,\"Shapes\":92193,\"Ġirreversible\":92194,\"_pes\":92195,\"_esc\":92196,\"Ġthermometer\":92197,\"ãĥĶãĥ¼\":92198,\"_sqrt\":92199,\"\\\"]==\\\"\":92200,\"Ġculmination\":92201,\"WordPress\":92202,\"Ġleven\":92203,\"VertexUvs\":92204,\"ĠHayward\":92205,\"ĠAssetImage\":92206,\"Ġmaize\":92207,\"Ġchicago\":92208,\"Ġtav\":92209,\"expenses\":92210,\"ÐŃ\":92211,\"+f\":92212,\".\\\"'\\\";Ċ\":92213,\"-SA\":92214,\"ĠKota\":92215,\"MainFrame\":92216,\".sale\":92217,\"_BU\":92218,\"Ġstren\":92219,\"_filt\":92220,\"/print\":92221,\"(Packet\":92222,\"ĠÐ·Ð°Ð²\":92223,\"Acts\":92224,\"ÐµÐ»ÐµÑĦ\":92225,\"Ġrematch\":92226,\"Ġridden\":92227,\"Ġ})();Ċ\":92228,\"Ġendoth\":92229,\"Ġcertify\":92230,\"ĠUIPickerView\":92231,\"\\\\Notifications\":92232,\"ĉTitle\":92233,\"Ġinequalities\":92234,\"ĠMoran\":92235,\"ĠDaemon\":92236,\"lesia\":92237,\"Ġhopping\":92238,\"Ġgusto\":92239,\"ĠFirebaseFirestore\":92240,\"Ġpolyline\":92241,\"Ġspiked\":92242,\"%\\\");Ċ\":92243,\"ĠLATIN\":92244,\"LabelText\":92245,\"Ġstrapon\":92246,\"_fid\":92247,\"-special\":92248,\"arged\":92249,\"ĠSTILL\":92250,\"QualifiedName\":92251,\".RES\":92252,\"#c\":92253,\".writeln\":92254,\"ĠImmutableList\":92255,\"ĠThumb\":92256,\"Ġsimd\":92257,\"Descricao\":92258,\".SetText\":92259,\"Ġnonprofits\":92260,\"Withdraw\":92261,\"-encoded\":92262,\"sbin\":92263,\"Ġamort\":92264,\"ĉdd\":92265,\"rif\":92266,\"Ġpaternal\":92267,\".MapFrom\":92268,\"_ask\":92269,\"Ġrecourse\":92270,\"Ġbackstory\":92271,\"ĉmanager\":92272,\"_DGRAM\":92273,\"ĠBihar\":92274,\"intelligence\":92275,\"Ġskimage\":92276,\"(encoder\":92277,\"Ġswirling\":92278,\"ĠAppet\":92279,\"_salt\":92280,\"Ġatte\":92281,\"ĠSQUARE\":92282,\"ĠNetz\":92283,\"_paint\":92284,\"asÄ±\":92285,\"isci\":92286,\"Flo\":92287,\"-goal\":92288,\".setStroke\":92289,\"ĠAuschwitz\":92290,\"ĠAbdel\":92291,\"Ġanew\":92292,\"Ġå®ŀ\":92293,\"ĠtotalPages\":92294,\"Ġrefactor\":92295,\"Ġcreatively\":92296,\"emax\":92297,\"odoxy\":92298,\"_txn\":92299,\".Sockets\":92300,\"ĠRidley\":92301,\"á»±c\":92302,\"samp\":92303,\"MinMax\":92304,\"Ġworsening\":92305,\"ountains\":92306,\"artner\":92307,\"-prof\":92308,\"singular\":92309,\"=is\":92310,\"ĠFEC\":92311,\"_FM\":92312,\"ĠæĪĸ\":92313,\"ĠCaught\":92314,\"_SCL\":92315,\"Ġexpo\":92316,\"infra\":92317,\"ĠMES\":92318,\"chap\":92319,\"alte\":92320,\"arkin\":92321,\"/mL\":92322,\"ĠsendData\":92323,\"ĠfranÃ§aise\":92324,\"ĠsÃ¦\":92325,\"_DEFINITION\":92326,\"******ĊĊ\":92327,\"\\\\Customer\":92328,\"ĠâĸĪâĸĪâĸĪâĸĪâĸĪ\":92329,\"Ġperpetrated\":92330,\"ĠFurious\":92331,\"Ġtenga\":92332,\"leared\":92333,\"ULLET\":92334,\"inic\":92335,\"earchBar\":92336,\"<Car\":92337,\"ĠRenewable\":92338,\"Ġcontemplated\":92339,\"/format\":92340,\"Ġforgiving\":92341,\".SubElement\":92342,\"PUTE\":92343,\".contentSize\":92344,\"Ġrespectfully\":92345,\"âĢľĊĊ\":92346,\"Ġpoignant\":92347,\"urile\":92348,\"})\\\"Ċ\":92349,\"sequential\":92350,\"/fast\":92351,\"prung\":92352,\"ĠStunning\":92353,\"ĠBYU\":92354,\"Ġcomparer\":92355,\"ĉrd\":92356,\"unicorn\":92357,\"Æ°a\":92358,\".GetItem\":92359,\"Ġsectional\":92360,\"judge\":92361,\"uxtap\":92362,\"Ġsunday\":92363,\"ĠpÃ¤\":92364,\"Minnesota\":92365,\"\\\"N\":92366,\"ĠapplicationWill\":92367,\"ANGER\":92368,\"Ġreasoned\":92369,\"ĠZEND\":92370,\"zap\":92371,\"=back\":92372,\"osphate\":92373,\"èĬĤçĤ¹\":92374,\"Ġtitten\":92375,\"ĠAssoc\":92376,\"ActivityCreated\":92377,\")[-\":92378,\"?\\\"ĊĊĊĊ\":92379,\"Ġjot\":92380,\"Ø¸\":92381,\"Ġuncompressed\":92382,\".IsDBNull\":92383,\"Ġvase\":92384,\"Ġlorem\":92385,\"Ġentreprise\":92386,\"ĠConsent\":92387,\"ãĥ©ãĥ³\":92388,\"ByVersion\":92389,\"Ġquienes\":92390,\"ĉcont\":92391,\"ĠBlackhawks\":92392,\"ĠBlasio\":92393,\"Ġtanker\":92394,\"Ġstarttime\":92395,\"ĠSeas\":92396,\"pios\":92397,\".SplitContainer\":92398,\"competitive\":92399,\"ĠpBuffer\":92400,\"Ġconsenting\":92401,\".addObserver\":92402,\"itched\":92403,\"Ġmiscellaneous\":92404,\"ĠTops\":92405,\"ĉlp\":92406,\"cmds\":92407,\".depart\":92408,\"ĠfName\":92409,\"ĉbest\":92410,\":P\":92411,\"Ġswath\":92412,\"Ġvoks\":92413,\"allon\":92414,\"ĠHtmlWebpackPlugin\":92415,\".loggedIn\":92416,\"buckets\":92417,\"Ġhomophobic\":92418,\"Ġsubdued\":92419,\"Ġmessagebox\":92420,\"WhatsApp\":92421,\"Ġdissip\":92422,\"ĠMANUAL\":92423,\"LIKELY\":92424,\"testdata\":92425,\"-Oct\":92426,\"Exited\":92427,\"ĠTasmania\":92428,\"lac\":92429,\"ĠthÃ´ng\":92430,\"Stories\":92431,\"Ġbiochemical\":92432,\"orre\":92433,\"Ġeclips\":92434,\"ĠAssemblyProduct\":92435,\"rtle\":92436,\"ĠWilhelm\":92437,\"pizza\":92438,\"_DH\":92439,\"conj\":92440,\"Ġpueblo\":92441,\"Ġlique\":92442,\"Ġcupid\":92443,\"ĠActivityCompat\":92444,\".Sm\":92445,\"\\\"]}\":92446,\"mailbox\":92447,\".optString\":92448,\"-ob\":92449,\"ĠMaui\":92450,\"ataires\":92451,\"Ġmerry\":92452,\"Rnd\":92453,\"ĠcaracterÃŃsticas\":92454,\"Tro\":92455,\"(cn\":92456,\".ld\":92457,\"-points\":92458,\".sb\":92459,\"Ġvej\":92460,\"Ġcaregiver\":92461,\"Ġnau\":92462,\"DIRECTORY\":92463,\"(ang\":92464,\"(.)\":92465,\"Ġexplanatory\":92466,\"elsey\":92467,\"ĠOvernight\":92468,\"Ġlaisse\":92469,\"ĠRATE\":92470,\"ĠGow\":92471,\"RecognitionException\":92472,\"ichert\":92473,\"Ġrevolutions\":92474,\"$category\":92475,\"Ġundefeated\":92476,\"/community\":92477,\"-parts\":92478,\"-application\":92479,\"+A\":92480,\"/sweetalert\":92481,\"ĠKm\":92482,\"ilated\":92483,\"atat\":92484,\"PAT\":92485,\"Äįe\":92486,\"ĠTec\":92487,\".onActivityResult\":92488,\"\\\\Web\":92489,\"ĠLug\":92490,\"ovolta\":92491,\"Ġaltru\":92492,\"igy\":92493,\"ĠbÄĻdÄħ\":92494,\"Ġactivations\":92495,\"Ġauditing\":92496,\"ERGE\":92497,\"Ġèĭ¥\":92498,\"Carlos\":92499,\"ĠkInstruction\":92500,\"miner\":92501,\"Ġ}}/\":92502,\"AndHashCode\":92503,\"ĠBourbon\":92504,\".prof\":92505,\"Ġimprimir\":92506,\"ĠFerdinand\":92507,\"Ð¼ÐµÐ½ÑĤ\":92508,\"/{}/\":92509,\"ĠClair\":92510,\"ĠOnCollision\":92511,\"saldo\":92512,\"raised\":92513,\"ĠABOVE\":92514,\"()=>\":92515,\"Ġdeutschland\":92516,\"hibited\":92517,\"Extreme\":92518,\"/hooks\":92519,\"Ġdout\":92520,\"ĠVOC\":92521,\"ethoven\":92522,\"PMC\":92523,\"Ġrestarting\":92524,\"ĠSCN\":92525,\"ĠEO\":92526,\"ĠDJs\":92527,\"PasswordField\":92528,\".Accessible\":92529,\"ĉbus\":92530,\"STRUCTIONS\":92531,\"Ġlaten\":92532,\"ĠSNAP\":92533,\"_HERSHEY\":92534,\"Ġonstage\":92535,\"å°ıæĹ¶\":92536,\"Ġsailor\":92537,\"ĠCurso\":92538,\"Ġimprovised\":92539,\"Ġgeneralize\":92540,\"Ġbueno\":92541,\"Ġceremonial\":92542,\"ĠCNS\":92543,\"Ġpigeon\":92544,\"msp\":92545,\"/AIDS\":92546,\"lineEdit\":92547,\"ĠFinancing\":92548,\"ĠjTable\":92549,\"Ġbottoms\":92550,\"ĠTextInputType\":92551,\"Ġmeisje\":92552,\"-signed\":92553,\"ĠGreenville\":92554,\"ophilia\":92555,\"IconModule\":92556,\"Ġclandest\":92557,\"emain\":92558,\"SCAN\":92559,\"_TIMES\":92560,\"Ġlecken\":92561,\"(cancel\":92562,\"Ġecstasy\":92563,\".MULT\":92564,\"Ġmoeten\":92565,\"Ġappropriations\":92566,\"ĠQLD\":92567,\"ĠGuil\":92568,\"Ġtrapping\":92569,\"xDA\":92570,\"ĠkÃ¶ln\":92571,\"enums\":92572,\"âĢľTo\":92573,\"porto\":92574,\"ningar\":92575,\"ĠTOO\":92576,\"-ST\":92577,\"ĠMaths\":92578,\"Ġkurs\":92579,\"ĠREPL\":92580,\"_contrib\":92581,\"ĠPhy\":92582,\"rang\":92583,\".maven\":92584,\"-follow\":92585,\"Ġ-----------\":92586,\"Ä±ÄŁ\":92587,\"_winner\":92588,\".Criteria\":92589,\"(dataSource\":92590,\"ĠsetInput\":92591,\"ĠTIMESTAMP\":92592,\"operands\":92593,\"getWindow\":92594,\".faceVertexUvs\":92595,\"ĠInvesting\":92596,\"Vy\":92597,\"Ġpersecuted\":92598,\"áº¿u\":92599,\"ĠPlumbing\":92600,\"ONGODB\":92601,\"Evidence\":92602,\"ĠStrom\":92603,\"quota\":92604,\"Liverpool\":92605,\"ĉattack\":92606,\"minimal\":92607,\"ĠonKeyDown\":92608,\"ĠmoduleId\":92609,\"ĠVeranst\":92610,\"mort\":92611,\"acists\":92612,\"ĠMASS\":92613,\"_UNDER\":92614,\".getRuntime\":92615,\"ENTICATION\":92616,\"ROKE\":92617,\"ĠscaleX\":92618,\"Ġserta\":92619,\"ĠFrequently\":92620,\"_TRANSFORM\":92621,\"Ġtwilight\":92622,\"ĠMcKenzie\":92623,\"ledged\":92624,\"Ġ@{@\\\"\":92625,\"_ACTIV\":92626,\"Ġhookers\":92627,\"=default\":92628,\"Ġwalnut\":92629,\"ĠuseNewUrlParser\":92630,\"ĠCheer\":92631,\"Ġwrongful\":92632,\"nio\":92633,\"btc\":92634,\".stride\":92635,\"Ġsuccesfully\":92636,\"ĠTroll\":92637,\"ificio\":92638,\".cond\":92639,\"Ġheaps\":92640,\"_PHOTO\":92641,\"<Address\":92642,\"ĠSticky\":92643,\"Ġnighttime\":92644,\"Ġdando\":92645,\"ĠBILL\":92646,\"ĠÐ¾ÑĤÐ²ÐµÑĤ\":92647,\"Determin\":92648,\"Ġfz\":92649,\"(signature\":92650,\"Ġvinden\":92651,\".CONNECT\":92652,\"ruise\":92653,\"Ġxu\":92654,\"prevent\":92655,\"FOX\":92656,\"UIApplicationDelegate\":92657,\"Splash\":92658,\"Ġembroidered\":92659,\"ĠHilfe\":92660,\".shader\":92661,\"Ġdoubted\":92662,\"ResponseStatus\":92663,\"Ġunstoppable\":92664,\"unload\":92665,\"+\\\"]\":92666,\"\\\"label\":92667,\"Ġfreelancer\":92668,\"Directed\":92669,\"Ġvorhand\":92670,\"ĠSno\":92671,\"existence\":92672,\"ordial\":92673,\"zag\":92674,\".Age\":92675,\"Ġspawns\":92676,\"ĠPSG\":92677,\"stitutions\":92678,\"Ġsighting\":92679,\"-talk\":92680,\"ĠÑģÐ¾ÑħÑĢÐ°Ð½\":92681,\"enerima\":92682,\"ĠBenton\":92683,\"_Store\":92684,\"TransparentColor\":92685,\"ĠExplosion\":92686,\"_ISS\":92687,\"Checkpoint\":92688,\"Ġdeflate\":92689,\"ÐĴÑĭÐ±\":92690,\"-transfer\":92691,\"ĠBabies\":92692,\"Ġima\":92693,\".usage\":92694,\"Ġnegativity\":92695,\"ĠExtremely\":92696,\"kj\":92697,\"Downloader\":92698,\"ĉact\":92699,\"[char\":92700,\"Normals\":92701,\"_references\":92702,\"Ġdracon\":92703,\"á»¥c\":92704,\"_TRNS\":92705,\"companyId\":92706,\"ĠVerd\":92707,\"anio\":92708,\"ĠMatchers\":92709,\"(relative\":92710,\"Ġreelection\":92711,\".HE\":92712,\"Tau\":92713,\"ĠÑģÑĤÑĢÐ¾ÐºÐ¸\":92714,\"ĠMetals\":92715,\"ĠCocktail\":92716,\"Ġaprender\":92717,\"_preference\":92718,\".Scheme\":92719,\"ĠglGetUniformLocation\":92720,\"UsingEncoding\":92721,\"ÑĢÐ³\":92722,\"Ġ\\\"]\\\");Ċ\":92723,\"Leaders\":92724,\"'Ãªtre\":92725,\"_Delay\":92726,\"Processes\":92727,\"iculture\":92728,\"\\\\\\\":{\\\\\\\"\":92729,\"âĢĶ\\\"\":92730,\"Emoji\":92731,\"-grow\":92732,\"ĠCCD\":92733,\"composed\":92734,\"Maintenance\":92735,\"ĠRyzen\":92736,\"(ag\":92737,\".prob\":92738,\"ĠSinatra\":92739,\"Ġhorrend\":92740,\"ĠMounted\":92741,\"_PEER\":92742,\"Ġcuk\":92743,\"ĠsÃ¸ker\":92744,\"ĠQuar\":92745,\"_RESOLUTION\":92746,\"'eau\":92747,\"Ġbourbon\":92748,\"ĠatIndex\":92749,\"/pol\":92750,\"Ġê´Ģ\":92751,\"ĉpw\":92752,\"})}Ċ\":92753,\".formData\":92754,\"Ġuden\":92755,\"Ġroaring\":92756,\"NotificationCenter\":92757,\"Ġclustered\":92758,\"Ġpairwise\":92759,\"multiline\":92760,\"GameData\":92761,\".Large\":92762,\")':\":92763,\"ĠÑģÐµÑĢÐ²ÐµÑĢ\":92764,\"ĠUIManager\":92765,\"Svc\":92766,\"ĠPlaystation\":92767,\".More\":92768,\".quality\":92769,\"ĠconfigFile\":92770,\"-containing\":92771,\"ĠGoat\":92772,\"encion\":92773,\"Ġlikeness\":92774,\"-using\":92775,\"Ġseaside\":92776,\"áº©u\":92777,\"anticipated\":92778,\"Folders\":92779,\"-Level\":92780,\"opcion\":92781,\")prepareForSegue\":92782,\">())\":92783,\"=add\":92784,\"\\\\grid\":92785,\"Ġyg\":92786,\"_DRIVE\":92787,\"ĠGetName\":92788,\".DAO\":92789,\"Ġhann\":92790,\"ĉcat\":92791,\"Ġvign\":92792,\"ĠHeller\":92793,\"ĠCREATED\":92794,\"beros\":92795,\"butt\":92796,\"Ġbends\":92797,\"ĠLeer\":92798,\"Ð¦\":92799,\"ĠSMP\":92800,\"Vect\":92801,\"ĠobjectType\":92802,\":async\":92803,\"Ġcompetency\":92804,\"ĠQtAws\":92805,\"Lou\":92806,\"/cat\":92807,\"Prostit\":92808,\"-ves\":92809,\"ĉtv\":92810,\"ĠEI\":92811,\"AndWait\":92812,\"ĠTOOL\":92813,\"}*\":92814,\"_Res\":92815,\"Ġalignments\":92816,\"ì¡°\":92817,\"ĠClamp\":92818,\"-pad\":92819,\"ĠwriteFile\":92820,\"ĠApprec\":92821,\"âĢĻautres\":92822,\"udades\":92823,\"Ġlugares\":92824,\"spender\":92825,\"[image\":92826,\"EXIST\":92827,\"Ġdeceive\":92828,\"Ġhunts\":92829,\"_VOICE\":92830,\"_DX\":92831,\"CAC\":92832,\"Ġ(('\":92833,\"isks\":92834,\",filename\":92835,\"Ġleans\":92836,\"InputDialog\":92837,\"DataContract\":92838,\"Ġsmoothed\":92839,\"Ġrecruiters\":92840,\"Ġtangled\":92841,\"_Tab\":92842,\"ĠFileAccess\":92843,\"YC\":92844,\"ĠvX\":92845,\"<dyn\":92846,\"Lexer\":92847,\"ĠâĺĨ\":92848,\"ĠglGen\":92849,\"Temporal\":92850,\"ĠATF\":92851,\"anko\":92852,\"UserCode\":92853,\"ĠKotlin\":92854,\"..ĊĊĊĊ\":92855,\"ENCED\":92856,\".untracked\":92857,\"_mr\":92858,\"Ġwavelengths\":92859,\"Ġdicho\":92860,\"Ġimu\":92861,\"_cre\":92862,\"[J\":92863,\"_DF\":92864,\"Ġattainment\":92865,\"Ġliters\":92866,\"[keys\":92867,\"Ġlistar\":92868,\"Https\":92869,\"Ġbrewers\":92870,\"ĠacompaÃ±\":92871,\"Ġtoasted\":92872,\".friend\":92873,\"Ġrelu\":92874,\"ĠPsychic\":92875,\"Manip\":92876,\"dna\":92877,\"Pri\":92878,\"-flash\":92879,\"(artist\":92880,\"ĠKov\":92881,\"preserve\":92882,\"_pemb\":92883,\".setProgress\":92884,\"Ġdusk\":92885,\"Ġcannabinoids\":92886,\"ĠKund\":92887,\"ĠCounties\":92888,\"ĠíİĺìĿ´ì§Ģ\":92889,\"Ġrenaming\":92890,\"ĠRusso\":92891,\"NSSet\":92892,\"(EXPR\":92893,\"åħ¶ä»ĸ\":92894,\"Diagram\":92895,\",last\":92896,\"(withDuration\":92897,\"Ġindebted\":92898,\"ĠDickens\":92899,\"ĠAlps\":92900,\"ĠDegrees\":92901,\"idar\":92902,\"-blood\":92903,\"+offset\":92904,\"ĠHud\":92905,\"ounder\":92906,\"ulnerable\":92907,\"Ġprio\":92908,\"blind\":92909,\"(pack\":92910,\"Ġnightlife\":92911,\"Ġillustrating\":92912,\"Ġnutshell\":92913,\"Ġbroadcasters\":92914,\"ĠcompanyName\":92915,\"itore\":92916,\".rightBarButtonItem\":92917,\"bote\":92918,\"ĠPIT\":92919,\"-scrollbar\":92920,\"Ġwindy\":92921,\"ĠQMainWindow\":92922,\"hue\":92923,\".epoch\":92924,\"Ġcamer\":92925,\"ĠCLUB\":92926,\"ifar\":92927,\"Unavailable\":92928,\"-quote\":92929,\"ĠGraz\":92930,\"Ġvalu\":92931,\"_MATERIAL\":92932,\"Ġpeny\":92933,\"Ġtratt\":92934,\"Ġlicked\":92935,\"ĉcan\":92936,\"ĠTaiwanese\":92937,\"PageIndex\":92938,\".Tipo\":92939,\"_Red\":92940,\"Ġvfs\":92941,\"_trampoline\":92942,\"ĠMPS\":92943,\"ĠPeanut\":92944,\"ĠLocked\":92945,\"ĉAT\":92946,\"jspb\":92947,\"_NODES\":92948,\"'We\":92949,\"ĠConvenient\":92950,\"_successful\":92951,\"+z\":92952,\"YLeaf\":92953,\"Ġpedigree\":92954,\"xz\":92955,\"Ġsalvar\":92956,\"_Desc\":92957,\"Ġnesta\":92958,\"Ġhardcoded\":92959,\".gold\":92960,\".ImageField\":92961,\"_BS\":92962,\"LK\":92963,\"Chocolate\":92964,\".Startup\":92965,\"Ġanecdotes\":92966,\".Ma\":92967,\"?]\":92968,\"/topic\":92969,\".ScrollBars\":92970,\"ÑģÑĤÐ²Ð°\":92971,\"ĠMOM\":92972,\"Ġqos\":92973,\"aryana\":92974,\"Ã¤chst\":92975,\"ĠMcGill\":92976,\"ĠEDUC\":92977,\"(posts\":92978,\"ĠEntwicklung\":92979,\"_skills\":92980,\"-guard\":92981,\"Ġtextiles\":92982,\"|unique\":92983,\"ĠArithmetic\":92984,\"LoadIdentity\":92985,\");}ĊĊ\":92986,\"Ġassures\":92987,\"Wildcard\":92988,\"Ġdefaulted\":92989,\"ĠNotSupportedException\":92990,\"ĠTomato\":92991,\".Summary\":92992,\"!\\\".\":92993,\"utherford\":92994,\"Ġloophole\":92995,\"Ġcmake\":92996,\"-dat\":92997,\"Ġragazzo\":92998,\"Ġcapitals\":92999,\"ĠImportance\":93000,\"ĠDungeons\":93001,\"_zones\":93002,\".sat\":93003,\"ĠĠĠĠĠĠĊĠĠĠĠĠĠĊ\":93004,\"categorias\":93005,\"Ġdatatable\":93006,\"Ġnajle\":93007,\"(gp\":93008,\"-ren\":93009,\"Ġpanicked\":93010,\"ĠSkyl\":93011,\"ĠQUICK\":93012,\"valueOf\":93013,\"Statistic\":93014,\"Ġdemeanor\":93015,\"ndern\":93016,\"ĠAppears\":93017,\"Pragma\":93018,\"_past\":93019,\"Hashtable\":93020,\"Ġthanking\":93021,\".csrf\":93022,\"Ġpave\":93023,\"ĠVictim\":93024,\"ĠPÃ¥\":93025,\"Firstname\":93026,\"CATEGORY\":93027,\"ilestone\":93028,\"')->__('\":93029,\"Ġincapac\":93030,\"StreamWriter\":93031,\"Ġcommunion\":93032,\"_stderr\":93033,\"èĩªæ²»\":93034,\"Ġhumanities\":93035,\"ĠÐ»Ñİ\":93036,\"ĠParas\":93037,\"loff\":93038,\"HeaderText\":93039,\"gregated\":93040,\".XRTableCell\":93041,\"ĠentityId\":93042,\"ĠMastery\":93043,\"oldt\":93044,\"')));ĊĊ\":93045,\"humidity\":93046,\"...\\\");ĊĊ\":93047,\"DeltaTime\":93048,\"Ġmktime\":93049,\"Photon\":93050,\"Ġpensar\":93051,\"scaling\":93052,\"_yellow\":93053,\"_multiply\":93054,\"ĠVulcan\":93055,\"ĠPearce\":93056,\"_lc\":93057,\"-exclusive\":93058,\"IsUnicode\":93059,\"Ġpadr\":93060,\"_PCIE\":93061,\"Ġglimps\":93062,\"Ġrampage\":93063,\"ĠPaginator\":93064,\"Ġconveying\":93065,\"nore\":93066,\"_detach\":93067,\"']!='\":93068,\"Ġbona\":93069,\"ĉCon\":93070,\"Naz\":93071,\"Ġseguint\":93072,\"Ġmiesz\":93073,\"Ġesos\":93074,\"Ġ'/')Ċ\":93075,\"Ġfaithfully\":93076,\"Ġbekom\":93077,\"Ð°ÐºÑģ\":93078,\"whelming\":93079,\".two\":93080,\"ĠSCE\":93081,\"-na\":93082,\"Ġ(){\":93083,\"ĠDamen\":93084,\"_tgt\":93085,\"adalafil\":93086,\"ĠMMI\":93087,\"Thin\":93088,\"Ġdepreciation\":93089,\"Ġabsentee\":93090,\"Ġsalario\":93091,\"ĠSomebody\":93092,\"ĠSloan\":93093,\"Ġerfolgreich\":93094,\":NSLocalizedString\":93095,\"ĠgehÃ¶rt\":93096,\"Ġemo\":93097,\"ĠLaguna\":93098,\"Ã¡sa\":93099,\"istrates\":93100,\"Raise\":93101,\"ĠAstroph\":93102,\"Ġ'\\\\\\\\'\":93103,\"_ped\":93104,\"ĠTHROUGH\":93105,\"ĠNietzsche\":93106,\"enerating\":93107,\"oplayer\":93108,\"Ġrodents\":93109,\"Ã¼hl\":93110,\"GameManager\":93111,\"ĠHeaderComponent\":93112,\"Ġmilan\":93113,\"queen\":93114,\"ĠPOLL\":93115,\"ĠLyme\":93116,\"ĠBriggs\":93117,\"ecer\":93118,\"wagon\":93119,\".DESC\":93120,\"ĠglBegin\":93121,\"Statements\":93122,\"etri\":93123,\"Ġmocker\":93124,\"ĠBlueprintReadOnly\":93125,\"/contentassist\":93126,\"emaakt\":93127,\"/loader\":93128,\"_lowercase\":93129,\"civil\":93130,\"_valor\":93131,\"_Global\":93132,\"Ġadr\":93133,\"itizen\":93134,\".Side\":93135,\"ĠEmblem\":93136,\"Ġthirds\":93137,\"_SHAPE\":93138,\"Regressor\":93139,\"PYTHON\":93140,\"Ġpsychotic\":93141,\"Ġcvs\":93142,\"ĠApplicationUser\":93143,\"Ġalunos\":93144,\"ToggleButton\":93145,\"Ġnga\":93146,\"ĠmÃ£e\":93147,\"advertisement\":93148,\"åĪĨäº«\":93149,\".ov\":93150,\"ĠAOL\":93151,\"REW\":93152,\"ĠØ§Ø³Øª\":93153,\"ĠGinny\":93154,\"Ġ//////////\":93155,\"Songs\":93156,\"acic\":93157,\"CMP\":93158,\"Ġrecognizer\":93159,\"ĠpÃ«r\":93160,\"DIC\":93161,\";\\\\\\\">\":93162,\"Ġclot\":93163,\":Event\":93164,\".TO\":93165,\"ĠCursors\":93166,\"\\\\Storage\":93167,\"ĠIonicPage\":93168,\"_jet\":93169,\"(BitConverter\":93170,\"Ġchildish\":93171,\"Trader\":93172,\"<HTMLInputElement\":93173,\"_FREQUENCY\":93174,\"=\\\";Ċ\":93175,\"ystack\":93176,\"Jur\":93177,\"ĠéĶ\":93178,\"Ġtcb\":93179,\"Ġrecibir\":93180,\".sz\":93181,\"Ġíģ´ëŀĺìĬ¤\":93182,\"PERSON\":93183,\"nova\":93184,\"Ġcoer\":93185,\"ĠMahmoud\":93186,\"ĠWorkplace\":93187,\"\\\"\\\"\\\"),Ċ\":93188,\".PageSize\":93189,\"getRoot\":93190,\"(baseUrl\":93191,\"[U\":93192,\"ĠMCS\":93193,\"ĠClarkson\":93194,\".vol\":93195,\"Ġ\\\"\\\"}Ċ\":93196,\"Ġpeux\":93197,\"ĠProductService\":93198,\"Ġmonday\":93199,\"ĠTestData\":93200,\"ĠMaul\":93201,\"Ġstrncmp\":93202,\"Ġshopper\":93203,\"theory\":93204,\"Ġetiquette\":93205,\"licence\":93206,\"scal\":93207,\"-cluster\":93208,\"ĠhistÃ³ria\":93209,\"ĠSubtract\":93210,\"Ġfiberglass\":93211,\"_lastname\":93212,\"ĠRewrite\":93213,\"/todo\":93214,\"Ġoverflowing\":93215,\"ĠGauss\":93216,\"okay\":93217,\"Ġclumsy\":93218,\"(xy\":93219,\"Ġexemp\":93220,\"analyze\":93221,\"-ticket\":93222,\"nine\":93223,\"ĠDeadpool\":93224,\"Ġcolum\":93225,\"ĠJK\":93226,\"Ġ[],čĊ\":93227,\"ĠAspen\":93228,\"Ġmalignant\":93229,\"hÃµes\":93230,\"Scala\":93231,\"inne\":93232,\"ĠCONSTANTS\":93233,\"_Price\":93234,\"#%%\":93235,\"Ġarsch\":93236,\"ĠNSAttributedString\":93237,\"ĠFileType\":93238,\"allocation\":93239,\"_singular\":93240,\"(Pointer\":93241,\"annies\":93242,\"Stored\":93243,\"Ġ';ĊĊ\":93244,\"âĢĻex\":93245,\"drs\":93246,\"Brightness\":93247,\"/OR\":93248,\"Textbox\":93249,\"Ġknack\":93250,\"Ġjenis\":93251,\"Ġocas\":93252,\"datap\":93253,\"ĠgameTime\":93254,\"Ġà°\":93255,\"ndx\":93256,\"ĠEVT\":93257,\"ByText\":93258,\"ĠattributeName\":93259,\"Ġjugar\":93260,\"_seqs\":93261,\"ĠFEATURES\":93262,\":date\":93263,\"fbe\":93264,\"ripper\":93265,\"ç¨į\":93266,\".Expr\":93267,\"Urban\":93268,\"idot\":93269,\"Ġoblivious\":93270,\"(DbContext\":93271,\"Carol\":93272,\"(',',$\":93273,\"ĠBrilliant\":93274,\"kad\":93275,\"centration\":93276,\"Ġkuk\":93277,\"ĠMANAGEMENT\":93278,\"_WEAPON\":93279,\"Ġjihadists\":93280,\"Ġentreg\":93281,\"ĠdoÄŁ\":93282,\"Ġappending\":93283,\"ĠZi\":93284,\"_ctxt\":93285,\"Ġquadrant\":93286,\"elementType\":93287,\"=img\":93288,\"bruar\":93289,\"ICAST\":93290,\"Ġintellectually\":93291,\".Annotation\":93292,\"Ġcampaigners\":93293,\".DataGridViewAutoSize\":93294,\"ĠÅŁek\":93295,\"Ġ/^(\":93296,\".DataTable\":93297,\"Ġweblog\":93298,\"(library\":93299,\"ĠFus\":93300,\"ĠOST\":93301,\"_Password\":93302,\"ĠBuckley\":93303,\"hoff\":93304,\"Aligned\":93305,\"_Real\":93306,\"ENTIC\":93307,\"/graphql\":93308,\"ĠWeed\":93309,\"ĠLSB\":93310,\"occasion\":93311,\"addafi\":93312,\"Lets\":93313,\"(\\\"`\":93314,\"Ġwiden\":93315,\"(visitor\":93316,\"Ġ\\\"\\\\Ċ\":93317,\"ANTE\":93318,\"-campus\":93319,\"-Bar\":93320,\"camel\":93321,\"Fmt\":93322,\":description\":93323,\".are\":93324,\"ĠAnast\":93325,\"ĠLonger\":93326,\"serious\":93327,\"Ġdaher\":93328,\"izzer\":93329,\"Multiplicity\":93330,\"ĠHollande\":93331,\"ĠAnnotations\":93332,\"()?\":93333,\"Ġprotester\":93334,\"ĠUrdu\":93335,\"Ġspecialties\":93336,\"_ly\":93337,\"Cad\":93338,\"annt\":93339,\"jsp\":93340,\"Ġjoe\":93341,\")r\":93342,\"ĠPersist\":93343,\"Ġobl\":93344,\"Ġdeadlock\":93345,\"Ġseri\":93346,\"RelativeTo\":93347,\"ĠYus\":93348,\"(Print\":93349,\"abilia\":93350,\"Ġunprotected\":93351,\"ĠASIC\":93352,\".Nome\":93353,\"ĠWebClient\":93354,\"ĠITV\":93355,\"Ã¼rnberg\":93356,\"itori\":93357,\"Signing\":93358,\"ĠReadonly\":93359,\"Ġeldre\":93360,\"ĠChecked\":93361,\"alnum\":93362,\"SourceType\":93363,\"lexical\":93364,\"Ġillustrator\":93365,\"ĠDirectorate\":93366,\"ĠTrom\":93367,\"mpp\":93368,\"logg\":93369,\".instrument\":93370,\"Ġwooded\":93371,\"ĠUserType\":93372,\"ĠRencontres\":93373,\"modelName\":93374,\"BTTagCompound\":93375,\">To\":93376,\"Ġfreezes\":93377,\"ĠConte\":93378,\"ĠCredential\":93379,\"cala\":93380,\"/workspace\":93381,\"Ġlibido\":93382,\"chluss\":93383,\"olleyError\":93384,\"Ġacciones\":93385,\"ĠJinping\":93386,\"atÃ©g\":93387,\"Interstitial\":93388,\")))));čĊ\":93389,\"ybrid\":93390,\"ĠRolled\":93391,\"ModelCreating\":93392,\"ĠReflex\":93393,\"ĠLucifer\":93394,\"Ġeher\":93395,\"Ġcarnival\":93396,\"!\\\";čĊ\":93397,\"_LOOKUP\":93398,\"ĠsuccÃ¨s\":93399,\"Ġreopening\":93400,\"Ġcreado\":93401,\"ĠSmy\":93402,\"ĠEnts\":93403,\".Since\":93404,\"ĠFisheries\":93405,\"/connection\":93406,\"ĠCSA\":93407,\"ĠÐ¿ÑĢÐ¾Ð³ÑĢÐ°Ð¼Ð¼\":93408,\"lsruhe\":93409,\"ĉactor\":93410,\"ĠStrauss\":93411,\"JsonValue\":93412,\"ĉeval\":93413,\"locker\":93414,\"ĠXIV\":93415,\"_hyper\":93416,\"ĠPolly\":93417,\"âĢ¦the\":93418,\"ĠGURL\":93419,\"ÐµÑģÑģ\":93420,\"Ġdives\":93421,\"ugeot\":93422,\"inema\":93423,\"bersome\":93424,\"Compra\":93425,\"-cultural\":93426,\"Ġgrands\":93427,\"Sac\":93428,\"ĠBarney\":93429,\"_QUESTION\":93430,\"Ġmaman\":93431,\"Ġhastily\":93432,\"Ġclubhouse\":93433,\"Ġgrund\":93434,\"_WALL\":93435,\"Ġpurification\":93436,\"Ħä»¶\":93437,\"Ð²Ð°\":93438,\"vestment\":93439,\".DisplayStyle\":93440,\"_cores\":93441,\"%S\":93442,\"ĠosÃ³b\":93443,\"Ġdisb\":93444,\"ĠFrankie\":93445,\"Ġindiscrim\":93446,\"_Begin\":93447,\"(er\":93448,\";o\":93449,\"ãĥ³ãĤ°\":93450,\"nodeName\":93451,\"Ġrefunded\":93452,\"Ġdismal\":93453,\"ĠHuffPost\":93454,\"Ġundecided\":93455,\"writeln\":93456,\"kÃ³w\":93457,\"ĠBose\":93458,\"ĉlib\":93459,\"oplan\":93460,\"interpreted\":93461,\"ĠMONEY\":93462,\"uvo\":93463,\"Ġntohs\":93464,\"iseum\":93465,\">j\":93466,\"Ġunfit\":93467,\"Ġhugged\":93468,\"ĠJest\":93469,\"mps\":93470,\"Ġbrom\":93471,\"'o\":93472,\"Ġfov\":93473,\"ĠShrine\":93474,\"ĠEITHER\":93475,\"ycastle\":93476,\"Ġsatur\":93477,\"requestData\":93478,\"[dir\":93479,\"OUCH\":93480,\"_Do\":93481,\"Ġyol\":93482,\"ĠinitialValues\":93483,\"[vertex\":93484,\"serviceName\":93485,\".salary\":93486,\"ĠAuthenticate\":93487,\"è¾¾\":93488,\"_VLAN\":93489,\"([]);ĊĊ\":93490,\"ĠSerum\":93491,\"PathParam\":93492,\"formulario\":93493,\"Ġsummarizes\":93494,\"OCR\":93495,\"oram\":93496,\"LDAP\":93497,\"bic\":93498,\"picked\":93499,\"-that\":93500,\"Ġcds\":93501,\"ĉanim\":93502,\"Ġintric\":93503,\"ĠWort\":93504,\"ĠVLC\":93505,\"ĠShiite\":93506,\"Studies\":93507,\".dispatcher\":93508,\"(enable\":93509,\".mixin\":93510,\"ĠSeymour\":93511,\"Ġbiomedical\":93512,\"ĠSpoon\":93513,\"ĠNorse\":93514,\"Ġintents\":93515,\"ĠÃ©quip\":93516,\"ĠDresses\":93517,\"LPARAM\":93518,\".setResult\":93519,\".deleteById\":93520,\"Ġnewfound\":93521,\"ĠOSD\":93522,\"ousy\":93523,\"Ġestados\":93524,\"[Byte\":93525,\"Chuck\":93526,\".onViewCreated\":93527,\"ĠContribution\":93528,\"_Enc\":93529,\"INET\":93530,\"Ġflavorful\":93531,\"ĠãĤ¢\":93532,\"visa\":93533,\"ĠHercules\":93534,\".getApp\":93535,\"ĠYok\":93536,\".MainActivity\":93537,\").[\":93538,\"Ġlaut\":93539,\"Invite\":93540,\"ĠChurches\":93541,\",'#\":93542,\"ÙĬØ±\":93543,\"(SS\":93544,\"Ġvenda\":93545,\"asjon\":93546,\".INTER\":93547,\"iphery\":93548,\"(Syntax\":93549,\"ondrous\":93550,\"ĉcenter\":93551,\"BracketAccess\":93552,\"ĠCapcom\":93553,\".getFont\":93554,\"ĠVaults\":93555,\"ĠdiseÃ±ador\":93556,\":o\":93557,\"(shell\":93558,\"ĠeCommerce\":93559,\"Ġaltre\":93560,\"_attached\":93561,\"Ġisr\":93562,\"Ġobtains\":93563,\".ContextCompat\":93564,\"Ġattendee\":93565,\"ĠTwice\":93566,\"ĠMood\":93567,\"éĤ®ç®±\":93568,\"nodoc\":93569,\"ĠPIXI\":93570,\"sofar\":93571,\"ĠBloody\":93572,\".Complete\":93573,\"ĠBER\":93574,\"ĠgetCategory\":93575,\"Ġdisqualified\":93576,\"_True\":93577,\"'er\":93578,\"-too\":93579,\"Ġhyperlink\":93580,\"_maximum\":93581,\"Neal\":93582,\"ĠpInfo\":93583,\".getElementsByName\":93584,\"scheduled\":93585,\"payer\":93586,\"ĉverify\":93587,\"-entity\":93588,\"metatable\":93589,\"bildung\":93590,\"ĠdeltaX\":93591,\"emplace\":93592,\"Ġreverted\":93593,\"repid\":93594,\"learner\":93595,\"}))ĊĊ\":93596,\"ucose\":93597,\"Ġrico\":93598,\"Ġbanged\":93599,\"ĠAfro\":93600,\"(inertia\":93601,\"ansa\":93602,\"ĠÃ¤ven\":93603,\"Karen\":93604,\"Ġsuperst\":93605,\"Ġfruition\":93606,\"otch\":93607,\"ĠPays\":93608,\"Residents\":93609,\"Ġprism\":93610,\"&);ĊĊ\":93611,\".jms\":93612,\"ĠSlug\":93613,\"='')\":93614,\"Ġguten\":93615,\"ĠSpielberg\":93616,\"ĠTForm\":93617,\"(before\":93618,\"ĠFinite\":93619,\"æĸ°å¢ŀ\":93620,\"Ġmeilleure\":93621,\"Ð¿Ð¸ÑģÐ°Ð½Ð¸Ðµ\":93622,\"_Err\":93623,\"-ft\":93624,\"nano\":93625,\".Addr\":93626,\"Ġ//čĊčĊ\":93627,\"ĠJonah\":93628,\"ĠDisco\":93629,\"Ġlunches\":93630,\"ĠDFA\":93631,\"explicit\":93632,\"]';Ċ\":93633,\"Ġrefinery\":93634,\"ĠStringType\":93635,\"unsqueeze\":93636,\"ĠLikely\":93637,\"Writes\":93638,\".bpm\":93639,\"ĠpItem\":93640,\"ounsel\":93641,\"Standing\":93642,\"Ġchoked\":93643,\"Ġansch\":93644,\"upil\":93645,\"ĠDebugger\":93646,\"âłĢâłĢ\":93647,\"<Group\":93648,\"ĠScalia\":93649,\"Ġsubstitutions\":93650,\"Ġclimbers\":93651,\"Ġ*)\\\"\":93652,\"Ġnanoparticles\":93653,\"ĠAPPRO\":93654,\"Ġpurchasers\":93655,\"ĠQTest\":93656,\"ĠAwakening\":93657,\"ĉSerial\":93658,\".repaint\":93659,\"Ġsavory\":93660,\"Ġporous\":93661,\"ĠaVar\":93662,\"ĠSuarez\":93663,\"-East\":93664,\"Boxes\":93665,\"ĠWeiner\":93666,\"ĠCRA\":93667,\"Ġê°ĴìĿĦ\":93668,\"Ġxlim\":93669,\"\\\"?ĊĊ\":93670,\"Ġwashington\":93671,\"ìļ´\":93672,\"Ġtotalement\":93673,\"_mtime\":93674,\".setScene\":93675,\"Ġllama\":93676,\"Ġcbo\":93677,\"efd\":93678,\"Ġunderrated\":93679,\"raising\":93680,\"ĠNATIONAL\":93681,\"Ġ******************************************************************************/ĊĊ\":93682,\"optic\":93683,\"ideas\":93684,\"ĠæıĲ\":93685,\"Ġlak\":93686,\"!!,\":93687,\"Ġkomm\":93688,\"paragus\":93689,\"Sites\":93690,\"Ġstressing\":93691,\"ĠMatButtonModule\":93692,\"ĠConverted\":93693,\"aname\":93694,\"_READONLY\":93695,\"]=>\":93696,\"Ġbordel\":93697,\"Ġbibliography\":93698,\"ĠgridColumn\":93699,\"Ġjournalistic\":93700,\"ìŀĦ\":93701,\"Ġraspberry\":93702,\"stice\":93703,\"Ġabrasive\":93704,\"ĠDBHelper\":93705,\"Ġintf\":93706,\"ĠRTBU\":93707,\"}'\\\",\":93708,\"ĠHao\":93709,\"swana\":93710,\"Ġjanvier\":93711,\"Ġinstitutes\":93712,\"ĠSebast\":93713,\"_COLS\":93714,\"Ġfigura\":93715,\"ĠZust\":93716,\"foy\":93717,\">());ĊĊ\":93718,\"ĠLiebe\":93719,\"Agency\":93720,\"Ġìĭľìŀĳ\":93721,\"ĠThumbnails\":93722,\"textTheme\":93723,\"Ġechoing\":93724,\"emperature\":93725,\"Ġfirepower\":93726,\"edb\":93727,\":');Ċ\":93728,\"Ã©gor\":93729,\"/feed\":93730,\"Ġhurl\":93731,\"-available\":93732,\"ĠRenders\":93733,\"Ġfds\":93734,\"ĠJSGlobal\":93735,\"ĠCitizenship\":93736,\"kiego\":93737,\"StandardItem\":93738,\".places\":93739,\"Ġscalability\":93740,\"ĠTrails\":93741,\"follower\":93742,\"ĠserviÃ§os\":93743,\"Ġ?>\\\"/>Ċ\":93744,\"[method\":93745,\"(ib\":93746,\"Ġridicule\":93747,\"Ġadaptable\":93748,\"filtro\":93749,\"Ġketogenic\":93750,\".ImageTransparentColor\":93751,\"ĠCFO\":93752,\"ĠPED\":93753,\"Ġ\\\"\\\");\":93754,\"oglobin\":93755,\"[sizeof\":93756,\"Brandon\":93757,\".ToShort\":93758,\"ĠniÅ¼\":93759,\"ĠTERMIN\":93760,\".getStatusCode\":93761,\"Ġdebtor\":93762,\"ĠCONSTRAINT\":93763,\"ĉside\":93764,\"ĠDomino\":93765,\"ÑĤÐ¾Ð¼\":93766,\"Ġglacier\":93767,\"Ġgrou\":93768,\"zp\":93769,\"ĠCarla\":93770,\"-Feb\":93771,\"Pel\":93772,\".readValue\":93773,\"climate\":93774,\"ĠtileSize\":93775,\".trip\":93776,\"ENTE\":93777,\"Ġchubby\":93778,\"Ġimposition\":93779,\"LOWER\":93780,\".byId\":93781,\".LookAndFeel\":93782,\"arih\":93783,\".findByIdAndUpdate\":93784,\"ĠStored\":93785,\"Ġbourgeoisie\":93786,\"HTTPRequestOperation\":93787,\"Ġsucker\":93788,\".dequeue\":93789,\"licken\":93790,\"Ġsubrange\":93791,\"_MEDIUM\":93792,\"Islam\":93793,\"ĠSparks\":93794,\"ï¼ļ%\":93795,\"importe\":93796,\"Ġ`-\":93797,\"Ġjoys\":93798,\"groupid\":93799,\"Flying\":93800,\"ĉbs\":93801,\"gross\":93802,\"ĠFiesta\":93803,\"Ġcst\":93804,\"Ġaficion\":93805,\"ophon\":93806,\"_CI\":93807,\"jn\":93808,\"Beauty\":93809,\"Ġsce\":93810,\"Ġcrackers\":93811,\"apk\":93812,\"Ġgord\":93813,\"Ġpretext\":93814,\"Ġ[\\\\\":93815,\"ĠCandid\":93816,\"Goals\":93817,\"ActionTypes\":93818,\",number\":93819,\"Ġpopulace\":93820,\"Ġentren\":93821,\"ĠAutof\":93822,\"éĻ¢\":93823,\"BaseContext\":93824,\"Balancer\":93825,\"(Border\":93826,\"Ġminced\":93827,\"recall\":93828,\"cba\":93829,\"Ġapproves\":93830,\"ĠKlopp\":93831,\"ermint\":93832,\"_frontend\":93833,\"esco\":93834,\"Ġnineteen\":93835,\"Driving\":93836,\"ĠXVI\":93837,\"ĠTactics\":93838,\"Ġprogramas\":93839,\"iesen\":93840,\"Mov\":93841,\"diet\":93842,\"autÃ©\":93843,\"(\\\".\\\")\":93844,\"Ġgoverno\":93845,\"_And\":93846,\"/mit\":93847,\"Ġcafeteria\":93848,\"-tracking\":93849,\"Ġcommuting\":93850,\".unknown\":93851,\"_typeof\":93852,\"ĠSSA\":93853,\"PROTO\":93854,\".Merge\":93855,\"ĠforCellReuseIdentifier\":93856,\"ĠSatisfaction\":93857,\"Ġ########################################################################\":93858,\"IMPLIED\":93859,\"ĠRestricted\":93860,\"ĠMagnum\":93861,\"Ð½Ð¾Ð¼\":93862,\"Kansas\":93863,\"aylight\":93864,\"ĠTowards\":93865,\"ĠTome\":93866,\"ĠTender\":93867,\"_dept\":93868,\".crt\":93869,\"trecht\":93870,\"STONE\":93871,\"Ġemptied\":93872,\"Ġ');ĊĊ\":93873,\"à¸ģà¸²à¸£\":93874,\"ÑıÑĤÑĮ\":93875,\"leck\":93876,\"Ġ[~,\":93877,\".expires\":93878,\"ĠTig\":93879,\"ĠIronically\":93880,\"ĉLL\":93881,\".NotNil\":93882,\"ĠåĬł\":93883,\"ĠGover\":93884,\"ĠPerspectives\":93885,\"ĠDVR\":93886,\"Ġlokale\":93887,\"Ġresend\":93888,\"Ġdoubly\":93889,\"Ġcomunidad\":93890,\"ĠAssemblyCompany\":93891,\"(turn\":93892,\"Ġsublist\":93893,\"Ġendorsements\":93894,\"_REGISTRY\":93895,\"!\\\")čĊ\":93896,\");;Ċ\":93897,\"Ġganze\":93898,\"ĠHarness\":93899,\"_matched\":93900,\"ä¾¡\":93901,\"âĢ¢ĊĊ\":93902,\"Chef\":93903,\"ĉInitialize\":93904,\");\\\">Ċ\":93905,\"ĠFarage\":93906,\"rish\":93907,\"altet\":93908,\"Dealer\":93909,\".LogWarning\":93910,\"(after\":93911,\"ĠGarten\":93912,\"Ġexplodes\":93913,\".CLASS\":93914,\"ĠuseRouter\":93915,\"-La\":93916,\"Ġsaddened\":93917,\"arov\":93918,\"ToUpdate\":93919,\"Ġæŀ\":93920,\"pii\":93921,\"'ĊĊĊĊ\":93922,\"ĠTRANSACTION\":93923,\"onga\":93924,\"logan\":93925,\"Crow\":93926,\"Ġbritish\":93927,\"ĠContentView\":93928,\"_BB\":93929,\"olvency\":93930,\"loadModel\":93931,\"TOOLS\":93932,\"heten\":93933,\"_nh\":93934,\"ABL\":93935,\"-vers\":93936,\"Arena\":93937,\".singletonList\":93938,\"(pat\":93939,\"ĉnames\":93940,\"(sq\":93941,\"Ġvalore\":93942,\"$req\":93943,\"Ġanthropology\":93944,\"Thinking\":93945,\"Ġmischief\":93946,\"Ġarchival\":93947,\"à¤¹\":93948,\".SetToolTip\":93949,\"prar\":93950,\"anja\":93951,\"Ġfirstly\":93952,\"ĉlight\":93953,\"--,\":93954,\"ĠSpears\":93955,\"Ġogl\":93956,\"steen\":93957,\"implements\":93958,\"rists\":93959,\"+E\":93960,\"ĠBans\":93961,\"Ġfastball\":93962,\"ĠHermes\":93963,\"veled\":93964,\"twenty\":93965,\"Ġnecesita\":93966,\"ĠMoroccan\":93967,\"isLoggedIn\":93968,\"CLOCKS\":93969,\".Abstractions\":93970,\".Packet\":93971,\"Ġmenacing\":93972,\"-vesm\":93973,\"ĠLivingston\":93974,\"Ġoci\":93975,\"Ġextradition\":93976,\"Ġ$($\":93977,\"ĠLocker\":93978,\"ĠRebellion\":93979,\"Ġmixins\":93980,\"ctal\":93981,\"/rfc\":93982,\"ĠSGD\":93983,\",idx\":93984,\"Ġbleibt\":93985,\"(\\\\$\":93986,\"Ġpeter\":93987,\"Ġbarren\":93988,\"Ġphosphory\":93989,\"Ġgoggles\":93990,\".hom\":93991,\"@d\":93992,\"='-\":93993,\".isUser\":93994,\"akash\":93995,\"_hub\":93996,\"ipelines\":93997,\"Ġ@}\":93998,\".surname\":93999,\"Interop\":94000,\"ĠinFile\":94001,\"Ġespecialmente\":94002,\"Ġautonom\":94003,\"ĠZambia\":94004,\"_COUNTRY\":94005,\"<Course\":94006,\"ideographic\":94007,\"ĠCameroon\":94008,\"findById\":94009,\")\\\".\":94010,\"ĠDepends\":94011,\"ritos\":94012,\".Our\":94013,\"Ġsubsidized\":94014,\"','\\\"+\":94015,\"Ġglean\":94016,\"ĠAssemblyCopyright\":94017,\"picable\":94018,\"Ġunwitting\":94019,\"Ġomdat\":94020,\"ĠEase\":94021,\"Ġembodies\":94022,\"(pDX\":94023,\"ĠVoter\":94024,\"Assigned\":94025,\"reveal\":94026,\"Ġfend\":94027,\"(parseFloat\":94028,\"Ġdps\":94029,\"tplib\":94030,\"assertCount\":94031,\"xmax\":94032,\"Unused\":94033,\"(fb\":94034,\"Ġsubmits\":94035,\"ĠReplica\":94036,\"(dy\":94037,\"Ġbande\":94038,\".semantic\":94039,\"ĠsearchString\":94040,\"ĠSanford\":94041,\"ĉfull\":94042,\"prm\":94043,\"_utilities\":94044,\"UNUSED\":94045,\"Ġscanners\":94046,\"Ġbfd\":94047,\".Organization\":94048,\"-cur\":94049,\"Rail\":94050,\"Ġxnxx\":94051,\"%);Ċ\":94052,\"Ġoverposting\":94053,\"Viet\":94054,\"Ġtapered\":94055,\"Ġcameo\":94056,\"ĠViewing\":94057,\"Ġdismantle\":94058,\"Ġfiss\":94059,\"ĠSentry\":94060,\"heatmap\":94061,\"ĠÃ¡reas\":94062,\"ĠGrÃ¼\":94063,\"Ġjig\":94064,\".clearRect\":94065,\"eventType\":94066,\"Ġturbulence\":94067,\"ckill\":94068,\".Focused\":94069,\"Ġintermediary\":94070,\"ĠObesity\":94071,\"atego\":94072,\"monto\":94073,\"ĠAlamofire\":94074,\"ĠSheila\":94075,\"ĠCOLLECTION\":94076,\"CardBody\":94077,\"ĠHabit\":94078,\"PLAN\":94079,\".visualization\":94080,\"%).ĊĊ\":94081,\"ĠIntelliJ\":94082,\"ĠGlover\":94083,\".spatial\":94084,\"Ġgreetings\":94085,\"ĠOpenFileDialog\":94086,\"{/*\":94087,\"ĠTÃ©lÃ©\":94088,\"ĠEf\":94089,\"Ġ\\\"[%\":94090,\"Ġmagistrate\":94091,\"ĠLitecoin\":94092,\"ĠSele\":94093,\"Ġcommerc\":94094,\"printw\":94095,\"nextInt\":94096,\".getChildAt\":94097,\"ĠGetCurrent\":94098,\"ĠeuropÃ©\":94099,\"ĠAIS\":94100,\"etten\":94101,\".EventQueue\":94102,\"anford\":94103,\"unakan\":94104,\".setOutput\":94105,\"Ġcmdline\":94106,\",get\":94107,\"ĠHeard\":94108,\".contentType\":94109,\"emd\":94110,\"ĠRetorna\":94111,\"acd\":94112,\"ĠPlayoff\":94113,\"acman\":94114,\".websocket\":94115,\"ClientId\":94116,\".exam\":94117,\"Ġattenuation\":94118,\".setCharacter\":94119,\"ĉCollection\":94120,\"æ°Ĺ\":94121,\"Ġpredictors\":94122,\"ĠSheridan\":94123,\"riminator\":94124,\"(Stack\":94125,\"_PKG\":94126,\"=''):Ċ\":94127,\"(pad\":94128,\"ĠNodo\":94129,\"Ġinteroper\":94130,\"ĠTransparency\":94131,\"ĉdx\":94132,\"zem\":94133,\"Ġpratique\":94134,\"Ġfibr\":94135,\"()?;Ċ\":94136,\"_MOBILE\":94137,\".REG\":94138,\"_YELLOW\":94139,\"Titan\":94140,\"')ĊĊĊĊ\":94141,\"ĠcomponentName\":94142,\"ĠCooler\":94143,\"isFunction\":94144,\".feedback\":94145,\"Ġperfected\":94146,\"Ġpaed\":94147,\"-scripts\":94148,\"Susp\":94149,\"<Option\":94150,\"ĠDt\":94151,\"íĦ´\":94152,\"'RE\":94153,\"ĠNRL\":94154,\"ĠManny\":94155,\"Ġrog\":94156,\"ĠGarr\":94157,\"_cookies\":94158,\"Spl\":94159,\"Ġpromoters\":94160,\"*dt\":94161,\"\\\\API\":94162,\"Ġevoke\":94163,\"_Entry\":94164,\"Ġfirefighter\":94165,\"ividad\":94166,\"Jacob\":94167,\"Ġlegion\":94168,\"(pol\":94169,\"ĉflash\":94170,\"ookeeper\":94171,\".clipsToBounds\":94172,\"Ġgraphite\":94173,\"'http\":94174,\"_TRIANGLE\":94175,\"ĠDropIndex\":94176,\".smtp\":94177,\"ĠUNSIGNED\":94178,\"_PICTURE\":94179,\"_ORIENTATION\":94180,\"ĠOPP\":94181,\"#'\":94182,\"Ã¡fico\":94183,\".histogram\":94184,\"ĠBenny\":94185,\">We\":94186,\"Ġrepost\":94187,\"Ġfiance\":94188,\"ĠBounty\":94189,\"stress\":94190,\"Datetime\":94191,\":H\":94192,\"ĠSphinx\":94193,\"Normally\":94194,\"apixel\":94195,\"ĠuserAgent\":94196,\"ĠMori\":94197,\"/lab\":94198,\".MODEL\":94199,\"ĠEmotional\":94200,\"Scaled\":94201,\"deviceId\":94202,\"Ġê³Ħ\":94203,\"ceased\":94204,\"<IM\":94205,\"ceeded\":94206,\"Ġlibrarian\":94207,\")null\":94208,\"Ġmicron\":94209,\"ĠFou\":94210,\"ulen\":94211,\"/live\":94212,\"rschein\":94213,\"fea\":94214,\"Ġhabil\":94215,\"ĠNavLink\":94216,\"necessary\":94217,\".codes\":94218,\"-make\":94219,\"ĠpParent\":94220,\"_relations\":94221,\"Ġrushes\":94222,\"Ġpropensity\":94223,\"ĠSkinny\":94224,\"WEST\":94225,\"_corpus\":94226,\"(reordered\":94227,\"fdb\":94228,\"ĠGetMessage\":94229,\"Brun\":94230,\".vs\":94231,\"ĠpÅĤ\":94232,\"Ġcrunchy\":94233,\"Boom\":94234,\"PJ\":94235,\"Jake\":94236,\"çº¦\":94237,\"$client\":94238,\"Ġ}])Ċ\":94239,\"Ġconverse\":94240,\"ĠGRAT\":94241,\"ĠCRS\":94242,\".Low\":94243,\"(validate\":94244,\"_CLICKED\":94245,\".bluetooth\":94246,\"ĉxtype\":94247,\"ĠcloseModal\":94248,\"_intent\":94249,\"Ġprognosis\":94250,\"sav\":94251,\"Ctl\":94252,\"Ġchooser\":94253,\"ĠSudoku\":94254,\"=User\":94255,\".clf\":94256,\"ĉexplicit\":94257,\"Ġpotentials\":94258,\"ĠGeorges\":94259,\"Ġelic\":94260,\"Ġtslib\":94261,\"ĠRagnar\":94262,\"_representation\":94263,\"-legged\":94264,\"hamster\":94265,\"ĠFirestore\":94266,\"convertView\":94267,\"Combined\":94268,\"ĠÐ´ÐµÐ»\":94269,\"Ġespect\":94270,\"ĠãĤĴ\":94271,\"ĠStamina\":94272,\"looks\":94273,\"ENARIO\":94274,\"/fixtures\":94275,\".sms\":94276,\"Ġsemiclass\":94277,\"Ġsemiclassical\":94278,\".Peek\":94279,\"]$\":94280,\"_DSP\":94281,\"_LVL\":94282,\"VIRTUAL\":94283,\"ĠCapitals\":94284,\"ĠSCT\":94285,\".While\":94286,\"ĠSubstance\":94287,\"-done\":94288,\"Ġenslaved\":94289,\"classify\":94290,\"entanyl\":94291,\"ĠVegetable\":94292,\"_DEPEND\":94293,\"Dani\":94294,\"Ġquieres\":94295,\"Ġabbiamo\":94296,\"ĠLiber\":94297,\"afc\":94298,\"éĢŁ\":94299,\"predicted\":94300,\".PNG\":94301,\"ĠWhip\":94302,\"//================================================================================\":94303,\"Ġâīł\":94304,\"ĠåĮ\":94305,\"DEM\":94306,\"CCA\":94307,\"/close\":94308,\"Ġ///</\":94309,\"Ġmesma\":94310,\"ĠBeirut\":94311,\"ĠInitializing\":94312,\"á»Ļt\":94313,\"MONTH\":94314,\"ĠíĽĦ\":94315,\"Parking\":94316,\"Comfort\":94317,\"ĠEngines\":94318,\"werp\":94319,\"@RequestParam\":94320,\"-Key\":94321,\"Ġbacklight\":94322,\"passes\":94323,\".numberOfLines\":94324,\"/Linux\":94325,\"(HTTP\":94326,\"ĠHttpURLConnection\":94327,\"osos\":94328,\".xx\":94329,\"Ġfilmpjes\":94330,\"Ġ===>\":94331,\"optimize\":94332,\"Canon\":94333,\"Ġ...\\\"Ċ\":94334,\"Ġ'\\\"';Ċ\":94335,\"ĠcÃ©lib\":94336,\"Ġprincipalmente\":94337,\"ĠPropertyValue\":94338,\"OUNCE\":94339,\"Ġexcursion\":94340,\"ĠAccessToken\":94341,\"requete\":94342,\"Voltage\":94343,\"explain\":94344,\"})();ĊĊ\":94345,\"URLOPT\":94346,\"Ġfungal\":94347,\"Greek\":94348,\"-blind\":94349,\"Ġfeudal\":94350,\"ĠSonata\":94351,\"ĠDiagnosis\":94352,\"$xml\":94353,\"editary\":94354,\"Ġstimulates\":94355,\"Pont\":94356,\".HasPrefix\":94357,\"boats\":94358,\"ĠScatter\":94359,\"ĠGENERIC\":94360,\"Ġfishes\":94361,\"=length\":94362,\"Ġmelhores\":94363,\"spent\":94364,\"Ã´m\":94365,\"ĠIngram\":94366,\">.ĊĊ\":94367,\"parity\":94368,\".VideoCapture\":94369,\"ĠTubes\":94370,\"Ġcomedic\":94371,\"ĠprocessData\":94372,\"ADB\":94373,\"(newState\":94374,\"åģľ\":94375,\"ĠWebseite\":94376,\"_Off\":94377,\",body\":94378,\"Ġsubcontract\":94379,\"Ġchute\":94380,\"Ġcartesian\":94381,\"thresh\":94382,\".Cart\":94383,\"Ġmetod\":94384,\"customize\":94385,\"Ltd\":94386,\"ĉsound\":94387,\"WebService\":94388,\"ĠHindered\":94389,\"[res\":94390,\"(Tile\":94391,\"capabilities\":94392,\"_OVERFLOW\":94393,\"ĠÑģÑģÑĭÐ»\":94394,\"ĠCoch\":94395,\"ĠtestName\":94396,\"WORDS\":94397,\"\\\\Modules\":94398,\"?url\":94399,\"_continuous\":94400,\"ĠQIcon\":94401,\"Ġstares\":94402,\"Ġejected\":94403,\"ĠInvasion\":94404,\"finalize\":94405,\"Ġgev\":94406,\"<g\":94407,\"ĠEditorGUI\":94408,\"Berlin\":94409,\".lineEdit\":94410,\"-regexp\":94411,\"Ġsled\":94412,\"ĠEACH\":94413,\"uco\":94414,\"Ġseeding\":94415,\"Ġlocalize\":94416,\"etu\":94417,\"_almost\":94418,\"panse\":94419,\"ĠSensors\":94420,\"_SI\":94421,\"*sp\":94422,\"ĠPropertyInfo\":94423,\"Ġaproxim\":94424,\"ĠdataGridViewTextBoxColumn\":94425,\"×ł\":94426,\"Ġdiferencia\":94427,\"LOOK\":94428,\"Ġomnip\":94429,\"ĠTuring\":94430,\"Ġunidades\":94431,\"ï¼ŁĊ\":94432,\".RowHeaders\":94433,\"_ACTIONS\":94434,\"ĠDaly\":94435,\"Ġfortified\":94436,\"ĠWage\":94437,\".simps\":94438,\"(issue\":94439,\"Ġlept\":94440,\"OwnerId\":94441,\"'order\":94442,\"åıį\":94443,\"ç¥¨\":94444,\"Ġrewriting\":94445,\".Italic\":94446,\"ĠForgotten\":94447,\"(IL\":94448,\"ĠNoSuchElementException\":94449,\"ewn\":94450,\"Ġpopulous\":94451,\"ĠShed\":94452,\"#${\":94453,\"ĠAlo\":94454,\"DeviceInfo\":94455,\"(INVOKE\":94456,\"Ġpena\":94457,\"ĠBBB\":94458,\".bb\":94459,\"Ġtors\":94460,\"Ġconducive\":94461,\"-purple\":94462,\"Ġsquarely\":94463,\"//---------------------------------------------------------------------------ĊĊ\":94464,\"ÐºÑĢÑĭ\":94465,\"fasta\":94466,\"Ġcpt\":94467,\"ĠIngen\":94468,\"Ġ{?}\":94469,\"ÑĥÐ³\":94470,\"Perl\":94471,\".sky\":94472,\"-automatic\":94473,\"implement\":94474,\"ornment\":94475,\".IMAGE\":94476,\"-Speed\":94477,\"ĉField\":94478,\"Ġpounded\":94479,\"ĠLZ\":94480,\"ĠautoFocus\":94481,\"Ġà¹Ģ\":94482,\".Companion\":94483,\"ĠVim\":94484,\"uncia\":94485,\"_skb\":94486,\"Ġunmarried\":94487,\"ĠSour\":94488,\"gaard\":94489,\"Leod\":94490,\"Ġàª\":94491,\".Cloud\":94492,\"Ġreinforces\":94493,\"']>\":94494,\"Ġfeliz\":94495,\"ĠUAV\":94496,\"rances\":94497,\"åįģ\":94498,\"ToListAsync\":94499,\".Executor\":94500,\"-ts\":94501,\"Ġ'.';Ċ\":94502,\"ĠKinect\":94503,\"ãģĦãģĨ\":94504,\"Ġbevor\":94505,\"ĠExtraction\":94506,\"_drawer\":94507,\"$sub\":94508,\"Ġuplifting\":94509,\".btnExit\":94510,\"('//*[@\":94511,\"REDIS\":94512,\"stdexcept\":94513,\"deo\":94514,\"Ġgiver\":94515,\"_bindings\":94516,\"ToDevice\":94517,\".mi\":94518,\"ĠEstimates\":94519,\"allele\":94520,\"???ĊĊ\":94521,\"ĠStreams\":94522,\"Ġafflict\":94523,\".sap\":94524,\"Ġquali\":94525,\"ĠGaul\":94526,\"Specifies\":94527,\"Ġzk\":94528,\"Ġsanitary\":94529,\"ĠnewIndex\":94530,\"specs\":94531,\"ĠfragmentManager\":94532,\"ĠNecessary\":94533,\"ĉSpring\":94534,\"=~\":94535,\"ĠOMAP\":94536,\"career\":94537,\"(\\\"-\\\");Ċ\":94538,\"ĠDarling\":94539,\"itag\":94540,\":pk\":94541,\"ĠStellar\":94542,\"Ġinfertility\":94543,\"lexible\":94544,\"Unary\":94545,\"Ġ:],\":94546,\".NEW\":94547,\"gsub\":94548,\"_UFunction\":94549,\".slides\":94550,\"Ġdiversos\":94551,\"_locals\":94552,\"\\\\\\\\/\":94553,\"Ġpcap\":94554,\"ĠOok\":94555,\".DataGridViewContentAlignment\":94556,\"ersonic\":94557,\"Ġtrebuie\":94558,\"Ġsequentially\":94559,\"abar\":94560,\"ĠIPCC\":94561,\"Ġdevout\":94562,\"\\\\Helpers\":94563,\"ETweet\":94564,\"Ġtrabajar\":94565,\"ĠWilkinson\":94566,\"ĠdaÃŁ\":94567,\"Humans\":94568,\"Teachers\":94569,\"ĠDataView\":94570,\"ĠYog\":94571,\"Ġjede\":94572,\"Ġambiance\":94573,\"trand\":94574,\"Ġerratic\":94575,\"Ġtá»«\":94576,\".rabbit\":94577,\"Ġnewbie\":94578,\"Ġentrances\":94579,\"Ġorthogonal\":94580,\"ĠDISPATCH\":94581,\"ĠSchro\":94582,\"_TURN\":94583,\":invoke\":94584,\"Ġtantal\":94585,\"ĠZones\":94586,\"statements\":94587,\"Limits\":94588,\"ĠGÃ¤\":94589,\"iaÅĤa\":94590,\".predicate\":94591,\".FR\":94592,\"ĠChristoph\":94593,\".Cons\":94594,\"ĠHorton\":94595,\"_Customer\":94596,\"ĉMD\":94597,\"Ġelkaar\":94598,\"ĠMSE\":94599,\"ĠIsActive\":94600,\"]*)\":94601,\"\\\\Unit\":94602,\"Ġeo\":94603,\"ForObject\":94604,\"eliac\":94605,\"-development\":94606,\"Ġteal\":94607,\"Ġstitched\":94608,\"ĠOutcome\":94609,\"oncÃ©\":94610,\"embedding\":94611,\"ĠonNext\":94612,\"Ġíķ´ëĭ¹\":94613,\"(existing\":94614,\".bid\":94615,\"ĉassertFalse\":94616,\"{l\":94617,\"LError\":94618,\"_bullet\":94619,\"(Html\":94620,\"ĠeBooks\":94621,\"perPage\":94622,\"/question\":94623,\".fake\":94624,\".mb\":94625,\"_dll\":94626,\"Ġcumshot\":94627,\"ĠMadagascar\":94628,\"HOLDER\":94629,\"Ġpesquisa\":94630,\"_DECLS\":94631,\"],[-\":94632,\"ĠAlbania\":94633,\"-toast\":94634,\"Ġprotagonists\":94635,\"Ġmyocard\":94636,\"Ġwalkers\":94637,\"Ġ=======\":94638,\"/Page\":94639,\"=<?=\":94640,\"Ġenquanto\":94641,\"_TRUNC\":94642,\"Ġseptembre\":94643,\"ĠlayoutParams\":94644,\"Ġ'../../../../../\":94645,\"ĠTrafford\":94646,\"Ġpalavra\":94647,\"Ġrundown\":94648,\"Ġbrittle\":94649,\"Ã¤che\":94650,\".YELLOW\":94651,\"ĠCeremony\":94652,\"ĠnewText\":94653,\"vecs\":94654,\"Ġessen\":94655,\"ĠMetodo\":94656,\"ĠGUIDE\":94657,\"Ġpostpone\":94658,\"ĠVStack\":94659,\"[\\\"$\":94660,\"ĠMicrosystems\":94661,\"\\\\Page\":94662,\"pmat\":94663,\"_FAULT\":94664,\"_mB\":94665,\"StateMachine\":94666,\"Faculty\":94667,\".wx\":94668,\"ĠMozart\":94669,\"anime\":94670,\"Ġpyt\":94671,\"ĠBukkit\":94672,\"-INFRINGEMENT\":94673,\"Ġsearcher\":94674,\"-basket\":94675,\"Ġomas\":94676,\"ĠTunis\":94677,\"ĠPlatt\":94678,\"Ġ{čĊčĊčĊ\":94679,\"yah\":94680,\"tolua\":94681,\"Introduced\":94682,\"supply\":94683,\"Ġmisogyn\":94684,\"ĠWaist\":94685,\"ĠEH\":94686,\"-operator\":94687,\"Ġdarken\":94688,\"ĠCosmic\":94689,\"Ġglaciers\":94690,\"ĠččĊ\":94691,\"][_\":94692,\"CompanyId\":94693,\"ĠReconstruction\":94694,\"izzlies\":94695,\"ĠlÃŃder\":94696,\"Ġcollegiate\":94697,\"ĠPetty\":94698,\"OURNAL\":94699,\"decorators\":94700,\"rams\":94701,\"((Ċ\":94702,\"ĠAstronomy\":94703,\"Ġrio\":94704,\"ĠCyril\":94705,\"juan\":94706,\"Ġreinc\":94707,\"ĠPistons\":94708,\"ĠBusy\":94709,\"ptron\":94710,\"Ġpomoc\":94711,\"ĉRTCK\":94712,\"Buying\":94713,\"//**Ċ\":94714,\"ĠWrapped\":94715,\"ĠMeer\":94716,\"Ġimap\":94717,\"Ġbestimm\":94718,\"ĠAgility\":94719,\".ToTable\":94720,\"stinence\":94721,\"])**\":94722,\"ĠAutomated\":94723,\"dsp\":94724,\"ĠGarlic\":94725,\"iode\":94726,\"exels\":94727,\"intros\":94728,\"Ġbestowed\":94729,\"(visible\":94730,\"Ġhydrated\":94731,\"noxious\":94732,\"ĠAuthenticationService\":94733,\"ĠshowModal\":94734,\"Ġcomposers\":94735,\"GENERAL\":94736,\"CTS\":94737,\"ĠShr\":94738,\"creat\":94739,\"Ġclosets\":94740,\"Ġgrounding\":94741,\"ĠCOMMENTS\":94742,\"Ġ+#\":94743,\"Ġgroundwork\":94744,\"(indexPath\":94745,\"gratis\":94746,\"uppies\":94747,\"Ġkvm\":94748,\"Ġcuales\":94749,\".DeepEqual\":94750,\"Ġalloys\":94751,\"-budget\":94752,\"(___\":94753,\"Ġconectar\":94754,\"-rad\":94755,\"Ġitch\":94756,\"lamp\":94757,\".grp\":94758,\"-addons\":94759,\"Ġseaborn\":94760,\"Ġnegligent\":94761,\"_Detail\":94762,\"Ġserene\":94763,\"Ġbarracks\":94764,\"Ġbq\":94765,\"ĠSect\":94766,\"(datos\":94767,\"Ġthematic\":94768,\"Ġpolluted\":94769,\"ĉanimation\":94770,\"Hugh\":94771,\"Executable\":94772,\"('/')[\":94773,\"Ġapoptosis\":94774,\"Ġabbreviated\":94775,\"foon\":94776,\"Ranked\":94777,\"ĉhit\":94778,\"ĉĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":94779,\"Continuous\":94780,\"ĠmoveTo\":94781,\"DBObject\":94782,\"Ġconceivable\":94783,\"ĠGwen\":94784,\"ĠÃ¡ll\":94785,\"__()\":94786,\"ĠLana\":94787,\"Ġeinzel\":94788,\"Ġrecounts\":94789,\"ystems\":94790,\"owany\":94791,\"):?>Ċ\":94792,\"ĠAkron\":94793,\"olini\":94794,\"Corp\":94795,\"aphrag\":94796,\"Ġ\\\"'.\":94797,\"Ġconvened\":94798,\"Ġ....ĊĊ\":94799,\"Ġcallee\":94800,\"ĠClover\":94801,\".descriptor\":94802,\".ItemStack\":94803,\"Ġperverse\":94804,\"_CE\":94805,\"=@\\\"\":94806,\"---čĊ\":94807,\"Ġbev\":94808,\"suma\":94809,\"accumulator\":94810,\"Ġlizard\":94811,\"ĠÐ¾Ñĩ\":94812,\"getDescription\":94813,\"ĠSaras\":94814,\".nextSibling\":94815,\"Ġelasticity\":94816,\"Ġchac\":94817,\"moved\":94818,\"_Top\":94819,\"trer\":94820,\"(down\":94821,\"elems\":94822,\"obili\":94823,\".postMessage\":94824,\"Ġ(âĪ\":94825,\"Csv\":94826,\"ĠYosemite\":94827,\"sweet\":94828,\"MATRIX\":94829,\"igrated\":94830,\"Ġforging\":94831,\"ĠPageSize\":94832,\"transforms\":94833,\"=YES\":94834,\"Ġdisclosing\":94835,\"ĠPediatric\":94836,\"ĠDeadly\":94837,\"ResourceId\":94838,\"-binary\":94839,\"ĠRowe\":94840,\"ĠCair\":94841,\"_extraction\":94842,\"Decre\":94843,\"ĠObst\":94844,\"plr\":94845,\"ĠPhysiology\":94846,\"mvc\":94847,\"hti\":94848,\".Te\":94849,\"Ġextravagant\":94850,\"ĠAntib\":94851,\"Ã³st\":94852,\"outdir\":94853,\"Ġcarne\":94854,\"ViewPager\":94855,\"Ġimplanted\":94856,\"SearchParams\":94857,\"Ã¼rger\":94858,\"conde\":94859,\"acente\":94860,\"_CUDA\":94861,\"$val\":94862,\"\\\"While\":94863,\"ĠtempList\":94864,\"Ġsynagogue\":94865,\"cmc\":94866,\"ĠÑĢÐ°Ð±Ð¾ÑĤÑĭ\":94867,\"Ġseznam\":94868,\"Ġsessuali\":94869,\"Ġcabeza\":94870,\"etÃł\":94871,\"ĠfaÃ§\":94872,\"geh\":94873,\"cede\":94874,\"\\\"Some\":94875,\":on\":94876,\"-formed\":94877,\"byname\":94878,\"Ġë°ĺíĻĺ\":94879,\"ĠnaÃ¯\":94880,\"ĠAUG\":94881,\"Ġeased\":94882,\"]){\":94883,\"(pthread\":94884,\"Ġjedem\":94885,\"(fixture\":94886,\"ĠParl\":94887,\"]});Ċ\":94888,\"Ġexpulsion\":94889,\"ĠInetAddress\":94890,\"ĠMLP\":94891,\".');\":94892,\"Ġoro\":94893,\"ĠSevilla\":94894,\"Ġformulaire\":94895,\"-terrorism\":94896,\"/WebAPI\":94897,\"*angstrom\":94898,\"crawl\":94899,\"_loan\":94900,\"_DIGEST\":94901,\"ĠKnoxville\":94902,\".gca\":94903,\"ĠDiy\":94904,\"ntag\":94905,\"ableViewController\":94906,\".Feed\":94907,\"-shared\":94908,\"Ġcocci\":94909,\"_invite\":94910,\"ĠBuckingham\":94911,\"ĠGluten\":94912,\"Ġendemic\":94913,\"Raised\":94914,\"ĠqueryInterface\":94915,\"Ġmartin\":94916,\"Báº¡n\":94917,\"Ġhare\":94918,\"Ġdein\":94919,\"rarian\":94920,\"myfile\":94921,\"Ġanguish\":94922,\"Texto\":94923,\"ĠBUFF\":94924,\"(ln\":94925,\"mars\":94926,\"_subtitle\":94927,\"_gift\":94928,\"Ġboldly\":94929,\"ĠSingular\":94930,\"(LogLevel\":94931,\"<Article\":94932,\"/stats\":94933,\"ĠÐ¿Ð¾Ð²\":94934,\"Ġitens\":94935,\"Ġdenomination\":94936,\".DataGridViewTriState\":94937,\"_LR\":94938,\"ĠDuchess\":94939,\"ĉBlock\":94940,\"tracer\":94941,\"-CN\":94942,\"\\\\AppData\":94943,\".lists\":94944,\"(Route\":94945,\"ĠGOODMAN\":94946,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":94947,\"Ġtinha\":94948,\"Ġeverlasting\":94949,\"aData\":94950,\"(compare\":94951,\"Ġrpt\":94952,\"\\\\Php\":94953,\".FILES\":94954,\"Ġsparing\":94955,\"Scar\":94956,\"ĠØ§ÙĦØª\":94957,\"ĠBethlehem\":94958,\"Ġbackpage\":94959,\"splice\":94960,\"fÃ¶r\":94961,\"@dynamic\":94962,\"á»©c\":94963,\"ì¦\":94964,\".paging\":94965,\"ĠBelmont\":94966,\".EXP\":94967,\"Ġinterle\":94968,\"ĠChecklist\":94969,\"ĠUnicorn\":94970,\"BEST\":94971,\"getPlayer\":94972,\".argsort\":94973,\"ĠwithString\":94974,\"ĠModerate\":94975,\"}\\\">Ċ\":94976,\".setImageBitmap\":94977,\"Ġtrenches\":94978,\"Ġgenerar\":94979,\"Ġfermented\":94980,\"Ġdejting\":94981,\"Ctrls\":94982,\"Ġdisagrees\":94983,\"Quiet\":94984,\"(SQLException\":94985,\"ĠTensorFlow\":94986,\"ONA\":94987,\"Portland\":94988,\".Ptr\":94989,\"llx\":94990,\"aston\":94991,\"Clusters\":94992,\"ĠUsuarios\":94993,\"Ġkhi\":94994,\"Ġgia\":94995,\"ĠDolphin\":94996,\"Åĳs\":94997,\"Ġluder\":94998,\"Ġdispositivo\":94999,\"ĠVy\":95000,\"ompson\":95001,\"Ġíķł\":95002,\"Ġkcal\":95003,\"ĠCalcium\":95004,\"SectionsIn\":95005,\"ĠCasc\":95006,\"Ġgratuiti\":95007,\"osomal\":95008,\"Ġundercut\":95009,\"ĠCah\":95010,\":params\":95011,\"ĠreturnUrl\":95012,\"ĠEre\":95013,\"Ã©rc\":95014,\"Ġintl\":95015,\"}/#{\":95016,\"ĠoutputPath\":95017,\"Ġfalsehood\":95018,\"ĠUserRole\":95019,\"<HashMap\":95020,\"ĠCreateUser\":95021,\"ĠCowboy\":95022,\"ĉUse\":95023,\"](Ċ\":95024,\"ĠShopify\":95025,\"ViewState\":95026,\"Advance\":95027,\"-tank\":95028,\"\\\"T\":95029,\"ĠJens\":95030,\"=options\":95031,\"(\\\"..\":95032,\".mime\":95033,\"ĠCRT\":95034,\"ĠhÃ¤tte\":95035,\"(so\":95036,\".UNKNOWN\":95037,\"ĠdarÃ¼ber\":95038,\"ĠCOVER\":95039,\"Gem\":95040,\"Cro\":95041,\"_RECV\":95042,\"_hierarchy\":95043,\"Choosing\":95044,\"JEXEC\":95045,\"Ġdorsal\":95046,\"+\\\"<\":95047,\"ĠNey\":95048,\"Woman\":95049,\"Bezier\":95050,\"Ġrigs\":95051,\"Ġontvang\":95052,\"ï¼ĮåĪĻ\":95053,\"ĠGaut\":95054,\"cmb\":95055,\"Nhap\":95056,\"Ġmonoc\":95057,\"Ġenergia\":95058,\"observeOn\":95059,\"stakes\":95060,\"-*-\":95061,\"ĠNack\":95062,\"}}\\\"Ċ\":95063,\"ervas\":95064,\"ĠHinderedRotor\":95065,\"Adjacent\":95066,\"ĠInternacional\":95067,\"ĉarea\":95068,\"ĠðŁĶ\":95069,\"Ġsparkle\":95070,\"()._\":95071,\".idea\":95072,\"Ġutrecht\":95073,\"ĠmappedBy\":95074,\"ĠColo\":95075,\"ĉTR\":95076,\"Poster\":95077,\"Ġcombating\":95078,\"ĠYellowstone\":95079,\"ierrez\":95080,\"acct\":95081,\"ĠsÃ¡ch\":95082,\".News\":95083,\"ĠfieldValue\":95084,\"Ġcaz\":95085,\"ĠFreem\":95086,\"ĉĉĊĉĊ\":95087,\"Ġusur\":95088,\"Ġsola\":95089,\"Ġcumbersome\":95090,\"Ġcatapult\":95091,\"\\\"./\":95092,\"ĠExecutors\":95093,\"ĠAmes\":95094,\"Ġ'<%=\":95095,\"fillna\":95096,\",âĢĶ\":95097,\":SetText\":95098,\"-categories\":95099,\"-archive\":95100,\"ĠPollution\":95101,\".Of\":95102,\"âĢľAt\":95103,\"_CHARSET\":95104,\"(Column\":95105,\"âĢĻ)\":95106,\"Ġunmistak\":95107,\"Ġearm\":95108,\"ĠPlatforms\":95109,\"ĠMomentum\":95110,\"Vectorizer\":95111,\"rawer\":95112,\"(passport\":95113,\"(plane\":95114,\"Ġrepresenta\":95115,\"Ġpubkey\":95116,\"ĠJain\":95117,\"Ġmennes\":95118,\"Ġinstantaneous\":95119,\"Ġethers\":95120,\"Ġnests\":95121,\"ĠPatton\":95122,\"ĠHACK\":95123,\"packing\":95124,\"IService\":95125,\"Ġrocker\":95126,\"Ġfica\":95127,\"ĠGladiator\":95128,\"ĠUPC\":95129,\"ĠLowell\":95130,\"bearer\":95131,\"Ġviper\":95132,\"_glob\":95133,\"Ġmashed\":95134,\"Ġhairstyle\":95135,\"Ġundermines\":95136,\"restaurants\":95137,\"Ġreactionary\":95138,\"Ġbillig\":95139,\"}\\\");čĊ\":95140,\"Ġvistas\":95141,\"Ġopendir\":95142,\"ĉlabels\":95143,\"allis\":95144,\"ĠWolff\":95145,\"ĠCPC\":95146,\"Ġrailways\":95147,\"ĠVaughan\":95148,\"ĠAsking\":95149,\"cai\":95150,\"ĠGn\":95151,\"_PROF\":95152,\"-Sep\":95153,\".curve\":95154,\"Multiply\":95155,\"ÑĢÐ°Ð½Ð¸ÑĨ\":95156,\"Ġmeetup\":95157,\"getDb\":95158,\"(GUI\":95159,\"Ġreimburse\":95160,\":result\":95161,\"Tumblr\":95162,\".Closed\":95163,\"Ġconforms\":95164,\"ĠHok\":95165,\"iedade\":95166,\"NewLabel\":95167,\"ĠnavCtrl\":95168,\"Doctors\":95169,\"ĠìķĪ\":95170,\"Ġbouts\":95171,\"Ġisc\":95172,\"/';ĊĊ\":95173,\"uhl\":95174,\".Ui\":95175,\"-sama\":95176,\"ĠCanonical\":95177,\"Ġmeticulous\":95178,\"Ġgrotes\":95179,\"Ġ//////////////////////////////////////////////////////////////////////\":95180,\"etes\":95181,\"Ġlangue\":95182,\"ĠfChain\":95183,\"ĠTypeface\":95184,\"ĠBrigham\":95185,\"iare\":95186,\"'Ã©tait\":95187,\"ĠEFF\":95188,\"Ġdestroyer\":95189,\"_matrices\":95190,\"NÃºmero\":95191,\"callable\":95192,\"_periods\":95193,\"struk\":95194,\"maj\":95195,\".rl\":95196,\".lift\":95197,\"ÙĬÙĦ\":95198,\"ÃĲ\":95199,\"RetVal\":95200,\"Denver\":95201,\"ĠTribute\":95202,\"kiye\":95203,\"zew\":95204,\"ĠSpare\":95205,\"Ġleukemia\":95206,\"Ġwaitress\":95207,\"ĠplutÃ´t\":95208,\"Aliases\":95209,\"ĠLocate\":95210,\"æ¶\":95211,\"Identification\":95212,\".tel\":95213,\"-days\":95214,\"territ\":95215,\"imbus\":95216,\"ĠButterKnife\":95217,\"ëĤ´\":95218,\"ruptcy\":95219,\"ĠGrades\":95220,\"Ġunderside\":95221,\"Ġhardships\":95222,\"unei\":95223,\"-contained\":95224,\"Ġ['.\":95225,\"Obsolete\":95226,\".Retrofit\":95227,\"Ġuranus\":95228,\"_rgba\":95229,\"Ġrapes\":95230,\"ĠKare\":95231,\"[âĢ¦]\":95232,\"ĠFinch\":95233,\".bunifuFlatButton\":95234,\"quisar\":95235,\"ĠNurses\":95236,\"egade\":95237,\"Ġhn\":95238,\"Exclude\":95239,\"Ġstochastic\":95240,\"Ġsotto\":95241,\"ĠPenalty\":95242,\"Ġsonst\":95243,\"Ġrosa\":95244,\"_Find\":95245,\"ĠInvalidate\":95246,\"ListItemIcon\":95247,\"',ččĊ\":95248,\"_pdu\":95249,\"ĠMeals\":95250,\"ajÄħc\":95251,\"ĠOops\":95252,\"ĠNotices\":95253,\"Ġderivation\":95254,\"[]čĊ\":95255,\"èº«\":95256,\"ystery\":95257,\"_five\":95258,\"Earn\":95259,\"=event\":95260,\"Ġogr\":95261,\"-REAL\":95262,\"ĠLips\":95263,\"selectors\":95264,\"adier\":95265,\"ĠsetBackgroundImage\":95266,\"(thing\":95267,\"Ġsoftball\":95268,\"\\\\xaa\":95269,\"(ident\":95270,\"ĠJury\":95271,\"ĠVoyage\":95272,\"ĠTArray\":95273,\"(Paint\":95274,\"Warm\":95275,\"EXTERNAL\":95276,\"asu\":95277,\"Ġ(!((\":95278,\".FETCH\":95279,\"Ġskirm\":95280,\"ORED\":95281,\"cancelled\":95282,\"ittel\":95283,\"Ġseedu\":95284,\"liches\":95285,\"oho\":95286,\",retain\":95287,\"(WebDriver\":95288,\"iptables\":95289,\"ERICA\":95290,\"Ġcleanliness\":95291,\"elloworld\":95292,\"Ġcohesion\":95293,\"gist\":95294,\"].'\":95295,\"erging\":95296,\"Ġisp\":95297,\".offsetTop\":95298,\"(factor\":95299,\"universal\":95300,\"ĠPlayback\":95301,\"ĠByteString\":95302,\"Ġdamning\":95303,\"ĠSSR\":95304,\"acus\":95305,\"ĠStaten\":95306,\"ĠåķĨåĵģ\":95307,\"ĠPee\":95308,\"ĠSampling\":95309,\"atoria\":95310,\"startIndex\":95311,\"åĲ«\":95312,\"Ġì´Īê¸°\":95313,\"ĠOliveira\":95314,\"ĠFlake\":95315,\"boom\":95316,\"_MSK\":95317,\"ĠFacing\":95318,\"orghini\":95319,\"foods\":95320,\"TreeWidgetItem\":95321,\"ĠHALF\":95322,\"\\\"\\\"\\\")Ċ\":95323,\"ĠCHAPTER\":95324,\"ĠEvelyn\":95325,\">+\":95326,\"ĠHornets\":95327,\"woke\":95328,\"Ġ/[\":95329,\"atholic\":95330,\".segments\":95331,\".navigateByUrl\":95332,\"ĠManus\":95333,\"Ġpeptides\":95334,\"Ġfleeting\":95335,\"ĠATV\":95336,\"ĠShib\":95337,\"IntArray\":95338,\"Ġmoz\":95339,\"problems\":95340,\"ogne\":95341,\".Other\":95342,\"Administration\":95343,\"%%*/\":95344,\"\\\"]==\":95345,\"ĠAndres\":95346,\"Ada\":95347,\"hints\":95348,\"\\\\\\\"\\\";Ċ\":95349,\"(png\":95350,\"Ġê°ĢëĬ¥\":95351,\"ãĥĬ\":95352,\"rejected\":95353,\"Ġmovers\":95354,\"çİĩ\":95355,\"Ġparenthesis\":95356,\"(assigns\":95357,\"Elite\":95358,\"Reminder\":95359,\"Ġsufferers\":95360,\"ĠResourceBundle\":95361,\"thag\":95362,\">'čĊ\":95363,\"antino\":95364,\"Periph\":95365,\"ĠShard\":95366,\"ChartData\":95367,\"(jj\":95368,\"Ġostat\":95369,\"huge\":95370,\"-authored\":95371,\".ci\":95372,\"Ġpymysql\":95373,\"Ġliners\":95374,\"ĠATS\":95375,\">Last\":95376,\")\\\")ĊĊ\":95377,\"Ġgetpid\":95378,\"GetSize\":95379,\"Ġextortion\":95380,\"[float\":95381,\"ĠEINA\":95382,\"/Base\":95383,\".setOnAction\":95384,\"Ð¾Ð»Ñı\":95385,\"ĠGlacier\":95386,\"_az\":95387,\"Ġtransporte\":95388,\"ĠSms\":95389,\"thumbs\":95390,\"Ġtreasurer\":95391,\"Ġmz\":95392,\"istik\":95393,\"REDIENT\":95394,\"Ġisi\":95395,\"_stuff\":95396,\"POSITORY\":95397,\"startdate\":95398,\"ĠZinc\":95399,\"æ±½\":95400,\"Ġkak\":95401,\"Ġerfahren\":95402,\"_COMBO\":95403,\"Ġucwords\":95404,\".Pay\":95405,\"Ġkingdoms\":95406,\"Ġexcelente\":95407,\"ignite\":95408,\"_variation\":95409,\"Ġnavegador\":95410,\"ä¸ĵ\":95411,\"viewController\":95412,\"rire\":95413,\"Honestly\":95414,\"Cascade\":95415,\"etrain\":95416,\"Argentina\":95417,\"cq\":95418,\"ĠMarian\":95419,\"/ar\":95420,\"Ġinteresse\":95421,\"urahan\":95422,\"(PC\":95423,\"Ġfrivol\":95424,\"ĠTrusted\":95425,\"(IConfiguration\":95426,\"ĠRihanna\":95427,\"endoza\":95428,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":95429,\"Ġproclamation\":95430,\"Ġpredominant\":95431,\"Ġconsts\":95432,\"-neck\":95433,\"Wolf\":95434,\".checkbox\":95435,\"Ġstanza\":95436,\"Ġentender\":95437,\"//(\":95438,\"Hands\":95439,\"Ġbilleder\":95440,\"ĠToshiba\":95441,\"abbix\":95442,\"ENCIES\":95443,\"Ġjim\":95444,\"PUR\":95445,\".lesson\":95446,\"Ġberth\":95447,\"larÄ±n\":95448,\"Blo\":95449,\"ĉext\":95450,\"eel\":95451,\"Ġdemasi\":95452,\"Ġcolonization\":95453,\"/disc\":95454,\"ï¼ı\":95455,\"Certainly\":95456,\"ç®¡çĲĨåĳĺ\":95457,\"Ġjogador\":95458,\"uÃ©\":95459,\"ColumnsMode\":95460,\"ĠJV\":95461,\"ĠInstitut\":95462,\"_spectrum\":95463,\".dense\":95464,\"ĠShortcut\":95465,\"Ġsebuah\":95466,\"Ġflashy\":95467,\"Regards\":95468,\"Ġsharper\":95469,\"cancellationToken\":95470,\"_detalle\":95471,\"ĠScarlett\":95472,\"ĠÐ¼Ð°ÑĤ\":95473,\"Ġnegocio\":95474,\"à¸ĸ\":95475,\"ĠJW\":95476,\"webdriver\":95477,\".wall\":95478,\"Ġxamarin\":95479,\"opaque\":95480,\".AddParameter\":95481,\"(Controller\":95482,\"-abortion\":95483,\"_FUNCTIONS\":95484,\"CustomerId\":95485,\"Ġvenir\":95486,\"ĠBuster\":95487,\"_predicted\":95488,\"/rules\":95489,\"-Methods\":95490,\"Ġgdzie\":95491,\"\\\"]');Ċ\":95492,\"ĠPx\":95493,\"CONS\":95494,\".Slice\":95495,\"Ġrevamped\":95496,\"ĠTableView\":95497,\"Ġdicks\":95498,\"Ġíĺ¸ì¶ľ\":95499,\"ĠAuxiliary\":95500,\"Opera\":95501,\"/rc\":95502,\"Ġunthinkable\":95503,\"Ġdeducted\":95504,\"lz\":95505,\"ĠLage\":95506,\"ĠRowling\":95507,\"proved\":95508,\"Offers\":95509,\",set\":95510,\"RGBO\":95511,\"ĠFU\":95512,\"ĠCentOS\":95513,\"ozo\":95514,\"ĠTrojan\":95515,\"ĠmaÃ±ana\":95516,\"Ġ//=\":95517,\"**:\":95518,\"Ġ{\\\\Ċ\":95519,\"ĠBowen\":95520,\"Knowing\":95521,\"Ġåº\":95522,\"=-=-=-=-=-=-=-=-\":95523,\"Ġebenfalls\":95524,\"]={Ċ\":95525,\"BMI\":95526,\"();)\":95527,\"(permission\":95528,\"Anderson\":95529,\"Ġdegrade\":95530,\"Soap\":95531,\"uÅŁ\":95532,\"ĠPuppy\":95533,\"ĠEthiopian\":95534,\"ĠTESTING\":95535,\"ensex\":95536,\"Ġdresser\":95537,\"ĠChore\":95538,\"Unhandled\":95539,\"Associate\":95540,\".additional\":95541,\"ĠdiffÃ©rentes\":95542,\"isque\":95543,\"ĠnecessÃ¡rio\":95544,\"Ġgenerics\":95545,\"(pf\":95546,\"Ġ\\\\`\":95547,\"ĠNearby\":95548,\"aporation\":95549,\"ĠThemeData\":95550,\"WiFi\":95551,\".Real\":95552,\"acyj\":95553,\"Liv\":95554,\"Ġpsychologically\":95555,\"methodPointerType\":95556,\"ĠNikol\":95557,\"ĠDedicated\":95558,\"_PORTS\":95559,\"ĠJae\":95560,\"NSAttributedString\":95561,\"Ġambassadors\":95562,\"ĠHandlers\":95563,\"ĠAnat\":95564,\"Ġvocalist\":95565,\"Ġrar\":95566,\"Ġdevuelve\":95567,\".gs\":95568,\"Ġxcb\":95569,\"Ġsubmodule\":95570,\"ĠASSIGN\":95571,\"ureen\":95572,\"Ġclases\":95573,\"emoth\":95574,\"_CNTL\":95575,\"_jwt\":95576,\"Ġë§Ī\":95577,\"Ġoutpost\":95578,\"ĠInbox\":95579,\"ĉflex\":95580,\"ĠGrocery\":95581,\"ILINE\":95582,\".mob\":95583,\"ĠConstr\":95584,\"]=]\":95585,\"(wallet\":95586,\"Ġsede\":95587,\"fal\":95588,\"Ġimpass\":95589,\"={['\":95590,\"Ġunfore\":95591,\"fuse\":95592,\"_Lean\":95593,\"Ġavalanche\":95594,\"=rand\":95595,\"Ġadultery\":95596,\"ĠGee\":95597,\"ĉInputStream\":95598,\"Ġcabel\":95599,\"_MOUNT\":95600,\"Ġnoticias\":95601,\"ĠRaum\":95602,\"Ġbytearray\":95603,\"ĠonHide\":95604,\"Ġ).Ċ\":95605,\"$instance\":95606,\"ĠdidSelectRowAtIndexPath\":95607,\"acam\":95608,\"-collection\":95609,\"Ġuphe\":95610,\"Potential\":95611,\"ĠSDS\":95612,\"_approval\":95613,\"Damn\":95614,\":convert\":95615,\"ĠModifications\":95616,\"ĠìĺĪ\":95617,\"Ġunab\":95618,\"Ġscrolled\":95619,\"+\\\");Ċ\":95620,\"Ġgauche\":95621,\"ĠHOL\":95622,\"antanamo\":95623,\"ĠcolumnHeader\":95624,\"ĉZEPHIR\":95625,\"zac\":95626,\"Ġoutings\":95627,\"Ġapplauded\":95628,\"horia\":95629,\"modx\":95630,\"Ġmillennia\":95631,\"&m\":95632,\".JsonIgnore\":95633,\"Ġpioneered\":95634,\"ĠCavs\":95635,\"ĉjs\":95636,\"departureday\":95637,\"_kb\":95638,\".Patient\":95639,\"Ġpetals\":95640,\"portrait\":95641,\"\\\"}}Ċ\":95642,\"HomeAsUpEnabled\":95643,\".pretty\":95644,\",cljs\":95645,\"Ġmedios\":95646,\"hashed\":95647,\"emodel\":95648,\"ĠMojo\":95649,\".fromRGBO\":95650,\"-pe\":95651,\"Ġintimately\":95652,\"Ġelgg\":95653,\"[];čĊ\":95654,\"/Observable\":95655,\"Ġobedient\":95656,\"ĠJamal\":95657,\"RequiredMixin\":95658,\"ĠListViewItem\":95659,\"ĉplaceholder\":95660,\"_transaksi\":95661,\"<Service\":95662,\"Ġensued\":95663,\"ĠRican\":95664,\"Saga\":95665,\"AUDIO\":95666,\"Ġjm\":95667,\"-sales\":95668,\"-multi\":95669,\"%\\\";Ċ\":95670,\"Ġclassifications\":95671,\"ĠtÃ£o\":95672,\"Coal\":95673,\";');Ċ\":95674,\"Ġdelights\":95675,\"_hz\":95676,\"_bold\":95677,\"DEPEND\":95678,\"ĠÐ¡Ð¾Ð·Ð´\":95679,\"atee\":95680,\"_subnet\":95681,\"ĠTownsend\":95682,\"ĠCastillo\":95683,\"Ġprt\":95684,\"$/)\":95685,\"Ġfilib\":95686,\"('/')[-\":95687,\"Ġupholstery\":95688,\"Ġcomponente\":95689,\"ĠXF\":95690,\".Reverse\":95691,\"_tunnel\":95692,\"Immediately\":95693,\"-move\":95694,\"Ġalist\":95695,\"WSC\":95696,\"structural\":95697,\"istorical\":95698,\"Tanggal\":95699,\"ĠCOURT\":95700,\"Ġobscured\":95701,\"Ġlandslide\":95702,\"Ġbedside\":95703,\"Ġbarang\":95704,\"-elected\":95705,\"Ġceramics\":95706,\"--*/Ċ\":95707,\"ĠWanna\":95708,\"Dyn\":95709,\"Ġverschiedene\":95710,\"Ġinducing\":95711,\"Ġflute\":95712,\".AppendText\":95713,\"ĠZub\":95714,\"ĠPulitzer\":95715,\":both\":95716,\".maxLength\":95717,\".PropertyType\":95718,\"awy\":95719,\"itemName\":95720,\"ĠNarrative\":95721,\"revolution\":95722,\"Ġhalten\":95723,\"ĠErrorResponse\":95724,\"gather\":95725,\"/utility\":95726,\":''\":95727,\"ĠKee\":95728,\"ĠOlympia\":95729,\"Clinical\":95730,\":green\":95731,\"ĠPlex\":95732,\"ĠKensington\":95733,\"ĠPhonetic\":95734,\"Ġdistributes\":95735,\"_exempt\":95736,\"Watching\":95737,\".Misc\":95738,\"Ġdomaine\":95739,\":\\\".\":95740,\"ãĥķãĤ\":95741,\"_MODULES\":95742,\"Ġhablar\":95743,\"ĠLaos\":95744,\".setTextSize\":95745,\".paused\":95746,\"_TW\":95747,\"Ġoverwhelm\":95748,\"Ġhemat\":95749,\"Luckily\":95750,\"ĠSENT\":95751,\"ĠInvestigators\":95752,\">({\":95753,\"(fout\":95754,\"ĠAUX\":95755,\".rawQuery\":95756,\"-strong\":95757,\"Ġresembled\":95758,\"ĠShaft\":95759,\"ĠXIII\":95760,\"suggest\":95761,\"Ġsingapore\":95762,\"_ability\":95763,\"$k\":95764,\"ĉiNdEx\":95765,\"\\\\Image\":95766,\"Cadastro\":95767,\".pivot\":95768,\"Ġmanpower\":95769,\"_atts\":95770,\".setFill\":95771,\"eworld\":95772,\"consts\":95773,\"GetWidth\":95774,\"Ġgratuita\":95775,\"ĠPetr\":95776,\"-answer\":95777,\"ĠHemisphere\":95778,\"ĠCaj\":95779,\"ĠTrades\":95780,\"Äĩi\":95781,\"ĠFreddy\":95782,\"OnChange\":95783,\"Ġpornografia\":95784,\"ĠSUMMARY\":95785,\"_meas\":95786,\"ĠDRIVE\":95787,\"ĠCree\":95788,\"_male\":95789,\"Ġsuk\":95790,\"Ġmaneuvers\":95791,\"setVisibility\":95792,\"alli\":95793,\"Ġdiscretionary\":95794,\"regation\":95795,\"YSTICK\":95796,\":href\":95797,\"Ġtaraf\":95798,\"Ġchu\":95799,\"Ġ@[\":95800,\"Enough\":95801,\".Transfer\":95802,\"IfNeeded\":95803,\":)])\":95804,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":95805,\"[axis\":95806,\"Translations\":95807,\".servers\":95808,\"ĠKEEP\":95809,\"',)Ċ\":95810,\"sponsor\":95811,\"archives\":95812,\".UltraWin\":95813,\"ĠHonour\":95814,\"']));\":95815,\"Ġineligible\":95816,\"ĠAntworten\":95817,\"ĠApplicationException\":95818,\"Ġcategorie\":95819,\"ĠWEIGHT\":95820,\"ĠBundy\":95821,\"ĠPIXEL\":95822,\"Ġduke\":95823,\"Tower\":95824,\"Scotland\":95825,\"Ġreferees\":95826,\"ĠAssemblyTrademark\":95827,\"ĉstartActivity\":95828,\".OneToOne\":95829,\"ĠAuswahl\":95830,\"Ġstrengthens\":95831,\".Quit\":95832,\"ĠURLRequest\":95833,\"eec\":95834,\"Ġregistrazione\":95835,\"Ġhoses\":95836,\"Actualizar\":95837,\"/array\":95838,\"Ġconstructions\":95839,\"ccd\":95840,\"ĠFileNotFoundError\":95841,\"ThÃªm\":95842,\"(resultado\":95843,\"ĠSERIES\":95844,\"Speak\":95845,\"_AHB\":95846,\"Blocked\":95847,\"-fontawesome\":95848,\":])\":95849,\"obble\":95850,\"(links\":95851,\"ĠCatalonia\":95852,\"GeV\":95853,\".DateFormat\":95854,\"Ġflea\":95855,\".ef\":95856,\"Ġsolicitud\":95857,\"ĠDY\":95858,\"codegen\":95859,\"ythe\":95860,\"Ġepoll\":95861,\"_TD\":95862,\"Ġaffirmation\":95863,\"_fa\":95864,\"ISTA\":95865,\"ĠEaton\":95866,\"createQuery\":95867,\"Ġlogistical\":95868,\"ĠRaycastHit\":95869,\"Ġcauliflower\":95870,\"Ġulcer\":95871,\".Alpha\":95872,\"inke\":95873,\"[..\":95874,\"EXAMPLE\":95875,\"-wage\":95876,\"Ġstati\":95877,\"ective\":95878,\".getMin\":95879,\"ĠSUBJECT\":95880,\"ĠAudioManager\":95881,\"zzarella\":95882,\"ĠSelectListItem\":95883,\"Ġ$čĊ\":95884,\"Ġohio\":95885,\"ĠTahoe\":95886,\"ĠkWh\":95887,\"queryString\":95888,\"Ġdepartamento\":95889,\"=admin\":95890,\"Ġworkstation\":95891,\")++;Ċ\":95892,\"HeaderInSection\":95893,\"ĠTriumph\":95894,\"Charlotte\":95895,\"ĠSMA\":95896,\"CÃ³mo\":95897,\"Ġverm\":95898,\"Ġtheano\":95899,\"bgcolor\":95900,\"\\\\\\\"\\\",Ċ\":95901,\"ĠReminder\":95902,\"Billy\":95903,\"oralType\":95904,\"geber\":95905,\"(clone\":95906,\"ĠKut\":95907,\"/>.\":95908,\"Apollo\":95909,\"Ġshl\":95910,\"ZH\":95911,\"Thunder\":95912,\"Ġgifs\":95913,\"_kelas\":95914,\"ĠRoths\":95915,\"Ġ}(\":95916,\"ĠBroadcom\":95917,\"ĠDepths\":95918,\"ĉINNER\":95919,\"parcel\":95920,\"Ġejercicio\":95921,\"Ġindependents\":95922,\"illow\":95923,\"executable\":95924,\"Evento\":95925,\"Ġzost\":95926,\"ĠHMAC\":95927,\"[DllImport\":95928,\"alles\":95929,\"_derivative\":95930,\"ApiKey\":95931,\"Ġstepper\":95932,\"=plt\":95933,\"getIndex\":95934,\"Ġvaleurs\":95935,\"Politics\":95936,\"ĠIDX\":95937,\"ĠUsa\":95938,\"ĠLTC\":95939,\".minLength\":95940,\"stro\":95941,\"_NC\":95942,\"Ġstagnant\":95943,\"Ġmontage\":95944,\"Ġblouse\":95945,\"elige\":95946,\"Ġturquoise\":95947,\"ĠSupern\":95948,\"æŃ³\":95949,\"vara\":95950,\"NewItem\":95951,\"_EXTENDED\":95952,\"Ġwoodworking\":95953,\"ĠEpiscopal\":95954,\".pair\":95955,\".UserInfo\":95956,\"Ġdirent\":95957,\"/tcp\":95958,\"Ġfraught\":95959,\"Slave\":95960,\".getLatitude\":95961,\"ĠToolbox\":95962,\"Ġearners\":95963,\"ĠHOUR\":95964,\"Ð°Ð»Ð°\":95965,\"posables\":95966,\"conditionally\":95967,\"_xx\":95968,\"ĠlanÃ§\":95969,\"(rp\":95970,\"Cha\":95971,\"Ġincarn\":95972,\".Dao\":95973,\"./(\":95974,\"Ø§Ùģ\":95975,\"Td\":95976,\"CEF\":95977,\"/rand\":95978,\".Virtual\":95979,\"ĠdbHelper\":95980,\"amines\":95981,\"Ġlz\":95982,\"Ġstos\":95983,\"ĠAtkins\":95984,\"_DD\":95985,\"itorio\":95986,\"Ġminimise\":95987,\"hipster\":95988,\"({...\":95989,\"_SRV\":95990,\"[frame\":95991,\"ĠRoku\":95992,\"GRP\":95993,\"Ġbarber\":95994,\".Fecha\":95995,\"Ġë°ľ\":95996,\"Ġgranularity\":95997,\"ĠSaying\":95998,\"_likelihood\":95999,\".barDockControl\":96000,\"Ġfrontline\":96001,\"ĠWhale\":96002,\"Ġsmelling\":96003,\"ĠContributions\":96004,\"ivant\":96005,\"Ġcrippling\":96006,\"preload\":96007,\"ĠHerrera\":96008,\"_WATCH\":96009,\"-et\":96010,\":expr\":96011,\"investment\":96012,\"ederation\":96013,\"_mgmt\":96014,\"Ġhoops\":96015,\"monkey\":96016,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊ\":96017,\"intersect\":96018,\"Ġcrimson\":96019,\"Ġsuoi\":96020,\"Ġ[]:Ċ\":96021,\"XObject\":96022,\"SFML\":96023,\"EQUAL\":96024,\"('~\":96025,\"centroid\":96026,\"ĉrestore\":96027,\"Ġprenatal\":96028,\"ĠMistress\":96029,\"Ġqx\":96030,\"tps\":96031,\"Ġrespawn\":96032,\"Ġ[]),Ċ\":96033,\"Ġkontrol\":96034,\"ãģĤãĤĬãģĮãģ¨ãģĨãģĶãģĸ\":96035,\"ModuleName\":96036,\"ĠnewPath\":96037,\"ĠPaging\":96038,\"Ġrins\":96039,\"_maker\":96040,\"\\\\brief\":96041,\"Ġbisher\":96042,\"ĉRead\":96043,\"Ġjihadist\":96044,\".persistent\":96045,\"ĠRobots\":96046,\"/grpc\":96047,\"ĠJou\":96048,\"Ã¤ren\":96049,\"ï¼Įåľ¨\":96050,\"-pt\":96051,\"Ġzdarma\":96052,\"_NM\":96053,\"ĠConnectivity\":96054,\"(bc\":96055,\"ĠFlorian\":96056,\"ĠSociology\":96057,\"_wo\":96058,\"AndServe\":96059,\"_();Ċ\":96060,\"ĠFLT\":96061,\"_DER\":96062,\"ĠConnie\":96063,\"ĠBroadcastReceiver\":96064,\"{(\":96065,\"Ġcommenter\":96066,\"Ġdemocrat\":96067,\"Ġamplify\":96068,\"----------čĊ\":96069,\"ĠHMS\":96070,\"Ġtrailed\":96071,\"ĠSoda\":96072,\"-tested\":96073,\"ulist\":96074,\")new\":96075,\"_Thread\":96076,\"Todd\":96077,\"Ġdebian\":96078,\"Vk\":96079,\"Ġpresenta\":96080,\"Ġcomforts\":96081,\"ĠWasher\":96082,\"Ġgarg\":96083,\"ĠHuckabee\":96084,\"ĠÑģÐ°Ð¼\":96085,\"Ġ!\\\"\":96086,\"AdapterManager\":96087,\"ĠEa\":96088,\"ĠAssociations\":96089,\"ĉĉĉĉĉĊĉĉĉĉĉĊ\":96090,\".getWritableDatabase\":96091,\"Ġnuclei\":96092,\"Ã©gorie\":96093,\"ĉĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":96094,\"BAB\":96095,\"Ġupkeep\":96096,\"ĠTup\":96097,\".withOpacity\":96098,\"lya\":96099,\"Ġluxe\":96100,\"upro\":96101,\"-eng\":96102,\"ĠrelaÃ§Ã£o\":96103,\"ĠkeyPressed\":96104,\"Ġhybrids\":96105,\"lfw\":96106,\"OperationContract\":96107,\"ĠnameLabel\":96108,\"ĠHort\":96109,\"_grupo\":96110,\"Ġbanda\":96111,\"Ix\":96112,\"Healthy\":96113,\".getEnd\":96114,\"frau\":96115,\"(Scene\":96116,\"(Collections\":96117,\"ĠSkipping\":96118,\"ubo\":96119,\"ĠfÃ¼n\":96120,\"\\\">-->Ċ\":96121,\"Ġdroits\":96122,\"Ġhomosexuals\":96123,\"Ġabduction\":96124,\"ĉwidget\":96125,\"$headers\":96126,\"ĠDAR\":96127,\"Ġfla\":96128,\"threat\":96129,\"Ġlouis\":96130,\".GetProperty\":96131,\"\\\"Just\":96132,\"(frames\":96133,\"ryo\":96134,\"profession\":96135,\"|i\":96136,\"íķ´ìĦľ\":96137,\"(sv\":96138,\"Ġunrecognized\":96139,\"Ionic\":96140,\"Fashion\":96141,\"ScreenState\":96142,\"ĠIncoming\":96143,\"NotNil\":96144,\"Ġsyncing\":96145,\"emie\":96146,\"Ġthermo\":96147,\"_procs\":96148,\"Ġinconsistency\":96149,\"religious\":96150,\".mj\":96151,\"Ġpersonn\":96152,\"Ġmomentos\":96153,\"orarily\":96154,\"ĠæĬ\":96155,\"_neurons\":96156,\"Illustr\":96157,\"imoto\":96158,\"ilik\":96159,\"ĠWoj\":96160,\"Trading\":96161,\"Ġappare\":96162,\"Ġentreprises\":96163,\"achat\":96164,\"ĠÂ¬\":96165,\"Ġneigh\":96166,\"BUTTONDOWN\":96167,\"ĠMaher\":96168,\"aghan\":96169,\"-hash\":96170,\"\\\"f\":96171,\"Ġclientele\":96172,\".addButton\":96173,\"ĉSP\":96174,\"Qi\":96175,\"Ġgrated\":96176,\"POSITE\":96177,\":>\":96178,\"ĠHowell\":96179,\"ĠComparative\":96180,\"ĠISC\":96181,\"ÂŃi\":96182,\"Ocean\":96183,\"Davis\":96184,\"ĠFilme\":96185,\"Wins\":96186,\"ĠJIT\":96187,\"occer\":96188,\"ĠCorm\":96189,\"ENCHMARK\":96190,\"rchive\":96191,\"icaÃ§Ã£o\":96192,\"Ġmata\":96193,\"Ġchildbirth\":96194,\"ĠOptionally\":96195,\"Ens\":96196,\"Ġxhttp\":96197,\"Ġelucid\":96198,\"_OscInitStruct\":96199,\"))):Ċ\":96200,\"Ġintuit\":96201,\"ĠDonate\":96202,\"Ġcorrelates\":96203,\">Delete\":96204,\"Ġequipe\":96205,\"Ġboca\":96206,\"Ġinflatable\":96207,\"erah\":96208,\"ĠDateTimeKind\":96209,\"Ġcalves\":96210,\"\\\\Lib\":96211,\"Ġemlrt\":96212,\"ĠTrilogy\":96213,\"ĠPanc\":96214,\"ĠDuis\":96215,\"ĠpelÃŃcula\":96216,\"WARDS\":96217,\"_DETECT\":96218,\"-sectional\":96219,\"dhcp\":96220,\"ForRow\":96221,\"-destruct\":96222,\"ĠPresenter\":96223,\"/slick\":96224,\",on\":96225,\"ĠCitadel\":96226,\"loggedin\":96227,\"_subtype\":96228,\"Ġsigue\":96229,\"Ġcuring\":96230,\"ĠFirewall\":96231,\"Ġfluorescence\":96232,\"ĠItalians\":96233,\"Ð¸ÑĤÑģÑı\":96234,\".getStyle\":96235,\"InSeconds\":96236,\"jie\":96237,\"-Smith\":96238,\"Ġxlink\":96239,\"Ġsubmissive\":96240,\"Ð¾Ð½ÑĤ\":96241,\"arbonate\":96242,\"ĠFaul\":96243,\"_goals\":96244,\"ĠCommissioners\":96245,\"chartInstance\":96246,\"_POSTFIELDS\":96247,\"Ġmedial\":96248,\"Ġmanos\":96249,\"Ġdelt\":96250,\"svm\":96251,\".Apis\":96252,\"ephy\":96253,\"Ġasympt\":96254,\"ĠappDelegate\":96255,\"Ġimprobable\":96256,\"cka\":96257,\"simd\":96258,\"/Error\":96259,\".âĢĵ\":96260,\"ĠPTS\":96261,\"deer\":96262,\"Ġsina\":96263,\"magnitude\":96264,\"IDADE\":96265,\"']}'\":96266,\"Ġmayores\":96267,\"ĉcomment\":96268,\"/console\":96269,\"\\\"@\":96270,\"volt\":96271,\".sell\":96272,\"ĠMacy\":96273,\"Ġmelod\":96274,\"ĠimÃ¡genes\":96275,\"_chg\":96276,\"Ġinout\":96277,\"idente\":96278,\")'),Ċ\":96279,\"dni\":96280,\".blob\":96281,\"Ġtypography\":96282,\"Ġeerie\":96283,\"_OID\":96284,\"pesan\":96285,\"ajan\":96286,\"Ġchopping\":96287,\"Ġbluff\":96288,\"adf\":96289,\"_bases\":96290,\".Formatter\":96291,\"Ġ\\\\%\":96292,\"ĠPageInfo\":96293,\"Carrier\":96294,\"ĠCalibration\":96295,\"como\":96296,\"-bodied\":96297,\"Ġfinancier\":96298,\"ĠINA\":96299,\".ERR\":96300,\"Ġhoodie\":96301,\"ĠSanity\":96302,\"guarded\":96303,\".opendaylight\":96304,\"ISMATCH\":96305,\"Highlights\":96306,\"Ã¼nk\":96307,\"aniem\":96308,\"angered\":96309,\"assignments\":96310,\"Ġregistrado\":96311,\"ĠUPPER\":96312,\"ampilkan\":96313,\"ashire\":96314,\"ĠNikola\":96315,\"ĠCFL\":96316,\"ĠHDC\":96317,\"Ġpoids\":96318,\"ĠIPs\":96319,\"Ġpreventative\":96320,\"ipsoid\":96321,\"ifix\":96322,\".camel\":96323,\".ga\":96324,\"Volumes\":96325,\"-ste\":96326,\"Yahoo\":96327,\"_sibling\":96328,\"Highest\":96329,\"optgroup\":96330,\"Ġkvinna\":96331,\"âĢĿãĢĤĊĊ\":96332,\"ĠAppliances\":96333,\"Ġ\\\"><\":96334,\"')\\\")Ċ\":96335,\"htt\":96336,\"ĠIdentified\":96337,\"Ġpencils\":96338,\"ĠmemberId\":96339,\"ĠappendString\":96340,\".loadData\":96341,\"ĠmockMvc\":96342,\"Ġjub\":96343,\"ĠSlut\":96344,\"ĠTaipei\":96345,\"statt\":96346,\"Polit\":96347,\"Ġpartager\":96348,\"DidChange\":96349,\"Increases\":96350,\")}.\":96351,\"ĠBaba\":96352,\"_CLIP\":96353,\"[unit\":96354,\"ĠÐºÐ»ÑİÑĩ\":96355,\"Ġalcuni\":96356,\"ĠLola\":96357,\"Ġclinging\":96358,\"@PostMapping\":96359,\"(concat\":96360,\"Ġssid\":96361,\"ĠFauc\":96362,\"okit\":96363,\"ĠRecorded\":96364,\"Ã¡lez\":96365,\"($('<\":96366,\".assertIsNot\":96367,\"Ġkali\":96368,\"Volt\":96369,\"Ġwarmly\":96370,\"Ġscares\":96371,\"getti\":96372,\"fÃ¼hrt\":96373,\"_does\":96374,\".EMAIL\":96375,\"imations\":96376,\"Ġspringfox\":96377,\"ĠDecom\":96378,\"arcy\":96379,\"Ġglitches\":96380,\"ĠMoff\":96381,\"ĠVoll\":96382,\".between\":96383,\"Ġcoorden\":96384,\"ĠParticularly\":96385,\"GBP\":96386,\"Ġsemble\":96387,\"Eastern\":96388,\"_MSB\":96389,\"]){čĊ\":96390,\"morgan\":96391,\"ĠEVAL\":96392,\"dere\":96393,\"HOUSE\":96394,\"moire\":96395,\"istique\":96396,\"_lstm\":96397,\"-commit\":96398,\"ysterious\":96399,\"Ġtwink\":96400,\"-thumbnails\":96401,\"enÃŃ\":96402,\":'',\":96403,\"Ġblackout\":96404,\"ĠFloors\":96405,\"Ġsofas\":96406,\"Ġoui\":96407,\"leshoot\":96408,\"ĠRaq\":96409,\"-abs\":96410,\"Ġkra\":96411,\"Mining\":96412,\"shaft\":96413,\".setColumns\":96414,\"Clazz\":96415,\"PRETTY\":96416,\".playlist\":96417,\"éĸ¢\":96418,\"-Saharan\":96419,\"MING\":96420,\"ĉbl\":96421,\"è®®\":96422,\"jf\":96423,\"DOCKER\":96424,\"hopefully\":96425,\"(ignore\":96426,\"ĠUsersController\":96427,\"ĠMitarbeiter\":96428,\"ĠLES\":96429,\"Hamilton\":96430,\"-metadata\":96431,\"ĠKK\":96432,\"iktig\":96433,\"Ġwollte\":96434,\"egrator\":96435,\"]bool\":96436,\",current\":96437,\"ĠvalueType\":96438,\"Ġexcavation\":96439,\"oland\":96440,\"Ġverv\":96441,\"/filepath\":96442,\"AuthProvider\":96443,\"Ġprocrast\":96444,\"ĉULONG\":96445,\"_MEMBERS\":96446,\"Ġuplift\":96447,\"ĠAutonomous\":96448,\"Ġartworks\":96449,\"ĠOutreach\":96450,\"Ġpore\":96451,\"Homepage\":96452,\"DialogTitle\":96453,\"ĠGenerating\":96454,\"PARSE\":96455,\"Ġsemanas\":96456,\"Ġhumano\":96457,\"JSGlobalScope\":96458,\"Ġvolte\":96459,\"Ġbella\":96460,\"(isinstance\":96461,\"Ġplc\":96462,\"\\\\Catalog\":96463,\"Ġesteemed\":96464,\"éĽ·\":96465,\"(suffix\":96466,\"Ġsweeps\":96467,\"ĉORDER\":96468,\"Ġdoivent\":96469,\"ĠSwarm\":96470,\"ĠCompiled\":96471,\"getPage\":96472,\"ADR\":96473,\".RichTextBox\":96474,\"ĠNaming\":96475,\"agged\":96476,\"ĠGANG\":96477,\"rasing\":96478,\"odeled\":96479,\"Ġgala\":96480,\"ĠJSName\":96481,\"ddf\":96482,\"Ġillust\":96483,\"ĠLansing\":96484,\"[port\":96485,\"-death\":96486,\"Ġdinheiro\":96487,\"ĠEighth\":96488,\"Ġbian\":96489,\"stÃ¥\":96490,\"ĠversiÃ³n\":96491,\"ĠLinearGradient\":96492,\"ĠHarding\":96493,\".*)\":96494,\"eczy\":96495,\"$header\":96496,\"ĠvÃ¥r\":96497,\"Unchecked\":96498,\"Ġkoje\":96499,\"ĠPaladin\":96500,\"())),\":96501,\"Giving\":96502,\"()})Ċ\":96503,\"Ġdips\":96504,\"Friendly\":96505,\"Ġportrays\":96506,\"Ġhelium\":96507,\"Ġinsurgency\":96508,\"_expiry\":96509,\"ĠstringByAppendingString\":96510,\"Ġaantal\":96511,\"slope\":96512,\"mast\":96513,\".getInteger\":96514,\"Ġ########################\":96515,\"_PIPELINE\":96516,\"Ġdensely\":96517,\"Ġmutating\":96518,\"midi\":96519,\"ĠSeit\":96520,\"ayne\":96521,\"NOWLED\":96522,\"ĠDesmond\":96523,\"ĠFName\":96524,\"ĠNairobi\":96525,\"\\\\Context\":96526,\"Ġcalcular\":96527,\"-den\":96528,\"Ġcott\":96529,\"]):čĊ\":96530,\"ĠRecommendation\":96531,\"ĠRolex\":96532,\"ĠvalidationResult\":96533,\".pat\":96534,\"ĠnÃły\":96535,\"ĠRestClient\":96536,\"ĠGPI\":96537,\"ĠAsheville\":96538,\"ĠOSP\":96539,\"ĠPERMISSION\":96540,\"ÐĶÐ°ÑĤÐ°\":96541,\"/notification\":96542,\"Knight\":96543,\"_Word\":96544,\"ĠBender\":96545,\"ranking\":96546,\"Ġpartida\":96547,\"_reservation\":96548,\"ÌĢ\":96549,\"ĠmName\":96550,\"Ġgetch\":96551,\"Ġborr\":96552,\"Ġdiligent\":96553,\"Discuss\":96554,\"æŃ£åľ¨\":96555,\"apeake\":96556,\"ioned\":96557,\"-Nazi\":96558,\".cum\":96559,\"ĠKron\":96560,\"=$('#\":96561,\"/single\":96562,\"Ġerotisch\":96563,\"ĠVib\":96564,\"Ġratified\":96565,\"Ġconcerted\":96566,\"ĠREGARD\":96567,\"Ġdobr\":96568,\".DriverManager\":96569,\"'r\":96570,\"Portable\":96571,\"ĉsuite\":96572,\"Ġrelaciones\":96573,\"ĠDop\":96574,\"emploi\":96575,\"DOB\":96576,\"Ġcrumbs\":96577,\"Ġxls\":96578,\"_Application\":96579,\"(':',\":96580,\"Ġ------------------------------------------------------------------------Ċ\":96581,\"mse\":96582,\"Ġberk\":96583,\"ĠReturnValue\":96584,\"ĠBelly\":96585,\"Ġcamar\":96586,\"ĠPeek\":96587,\"elsing\":96588,\"Ġnotifies\":96589,\"ĠTristan\":96590,\"ĠGAR\":96591,\"emme\":96592,\"ĠElevated\":96593,\"_CSV\":96594,\"(chalk\":96595,\"Ġtwenties\":96596,\"ĠSearchResult\":96597,\"=search\":96598,\"ĠMixing\":96599,\"Ã½t\":96600,\"Ġrecruiter\":96601,\"ĠIDEOGRAPH\":96602,\"ĠAgo\":96603,\"(Operation\":96604,\"$values\":96605,\"Ġworldly\":96606,\"ĠRosenberg\":96607,\"ĠConfigureServices\":96608,\">*</\":96609,\"KANJI\":96610,\"Ġchuckled\":96611,\"Ġstrife\":96612,\"ĠBombay\":96613,\"ĠBACKGROUND\":96614,\"etat\":96615,\"enumerator\":96616,\"ĠsÃ»r\":96617,\"Ġãģ®\":96618,\"_pedido\":96619,\"/Dk\":96620,\"Ġjean\":96621,\"_Column\":96622,\"Ġheatmap\":96623,\".Pending\":96624,\"Ġunsuccessfully\":96625,\"ĉep\":96626,\"Ġsinful\":96627,\"ĠAntony\":96628,\"_FOCUS\":96629,\"TextLabel\":96630,\"_reaction\":96631,\"ĠIDirect\":96632,\"Ġcarniv\":96633,\"Worksheet\":96634,\"Ġsuede\":96635,\"ĉRTCT\":96636,\"Ġsetbacks\":96637,\".unbind\":96638,\"ĠsiÃ¨\":96639,\"Liquid\":96640,\"_RENDERER\":96641,\"Mate\":96642,\"ĠMillennials\":96643,\"Ġepoxy\":96644,\"izziness\":96645,\"Ġbrazil\":96646,\"Ð¾ÑģÑĤÑĮ\":96647,\"&view\":96648,\"/gpio\":96649,\"Jamie\":96650,\".Gravity\":96651,\"=\\\".$_\":96652,\"ĠVAN\":96653,\"ĠIDR\":96654,\"appearance\":96655,\".Selenium\":96656,\"Leap\":96657,\".RelativeLayout\":96658,\"Signals\":96659,\"Acceleration\":96660,\"ĉHANDLE\":96661,\"/Open\":96662,\"ĠgetLogger\":96663,\"Spi\":96664,\"-writing\":96665,\"ĠÐ²ÑĭÐ·\":96666,\"-worthy\":96667,\"Ġwcs\":96668,\"ĠQTimer\":96669,\"ĠPolymer\":96670,\"Ġvant\":96671,\"ĉDelete\":96672,\"itte\":96673,\"Whilst\":96674,\"Ġalgum\":96675,\"Ġshielding\":96676,\"Ġkms\":96677,\"ĉĠĠĠĠĉĉĉ\":96678,\"Meteor\":96679,\"Ġaggregator\":96680,\"ĠSind\":96681,\"HostException\":96682,\"='',Ċ\":96683,\"ĠJSBracketAccess\":96684,\"ONO\":96685,\"_Build\":96686,\"Ġstripper\":96687,\"ĠLJ\":96688,\"<Component\":96689,\"/sources\":96690,\"Ġergonomic\":96691,\"ĠAccred\":96692,\"unce\":96693,\"onis\":96694,\"zeigt\":96695,\"ĠSkate\":96696,\"ĠRectTransform\":96697,\"Incomplete\":96698,\"Ġingenious\":96699,\"Ġcoisa\":96700,\"ĠcityName\":96701,\"habit\":96702,\"_TV\":96703,\"ĠANSW\":96704,\"...\\\">Ċ\":96705,\"Ġsnork\":96706,\"_opacity\":96707,\"ĠinitWithNibName\":96708,\"iado\":96709,\"AAC\":96710,\"Ġ]).\":96711,\";z\":96712,\"_paragraph\":96713,\"Ġnoses\":96714,\"stands\":96715,\"ifr\":96716,\"_mE\":96717,\"Iraq\":96718,\".Predicate\":96719,\"enaire\":96720,\"]]];Ċ\":96721,\"Ġunidad\":96722,\"Ġretirees\":96723,\"_hello\":96724,\"Ġmodele\":96725,\"ĠUITableViewController\":96726,\"fwrite\":96727,\"_numero\":96728,\"_visited\":96729,\"Ġrecebe\":96730,\"(Notification\":96731,\"Fantastic\":96732,\"_submenu\":96733,\"ĠPEM\":96734,\"ĠCupertino\":96735,\"approximately\":96736,\"classed\":96737,\".ReadString\":96738,\"Ġdomicile\":96739,\"_PW\":96740,\"Ġballpark\":96741,\"ĠKale\":96742,\"contra\":96743,\"_favorite\":96744,\"/of\":96745,\"Quite\":96746,\"ĠOTA\":96747,\"Ġaccelerometer\":96748,\"didn\":96749,\"|^\":96750,\"ĠRohingya\":96751,\"ivicrm\":96752,\"annabin\":96753,\"Ð¾Ð±ÑĭÑĤÐ¸\":96754,\"orado\":96755,\"')+\":96756,\"Haunted\":96757,\",ID\":96758,\"(UIAlertAction\":96759,\"urv\":96760,\"_bel\":96761,\"ĠMexicans\":96762,\"/terms\":96763,\"ĠPainter\":96764,\"InputLabel\":96765,\"ĠVinci\":96766,\"ĠRosie\":96767,\"\\\\uc\":96768,\"<Menu\":96769,\"Ġcoolant\":96770,\"(currentUser\":96771,\"_dual\":96772,\")\\\"},Ċ\":96773,\"&p\":96774,\"Ġconverged\":96775,\"Ġrestrain\":96776,\"ĠYugoslavia\":96777,\"=target\":96778,\"Ġimpuls\":96779,\"dsa\":96780,\"SearchTree\":96781,\"Ġhbox\":96782,\"ĠImpress\":96783,\"Â§Ãĥ\":96784,\"getFullYear\":96785,\"(da\":96786,\"ĠYYS\":96787,\".alignment\":96788,\".GetText\":96789,\".tokenize\":96790,\"ĠOlympus\":96791,\"Ġmurky\":96792,\"orestation\":96793,\"Ġdissatisfaction\":96794,\"ĉTArray\":96795,\"_kses\":96796,\".AddSingleton\":96797,\"ĠStartTime\":96798,\"Ġfanatic\":96799,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĉ\":96800,\"ĠentityType\":96801,\".override\":96802,\"Ġ-------------\":96803,\"ĠDatagram\":96804,\"fout\":96805,\"(withId\":96806,\"Ġ#__\":96807,\"Łèĥ½\":96808,\"ekyll\":96809,\".friends\":96810,\"ameleon\":96811,\"Ġzach\":96812,\".simpleButton\":96813,\"retorno\":96814,\"Ġkonk\":96815,\"/small\":96816,\"ĠQuickly\":96817,\"unread\":96818,\"Donate\":96819,\"DetailView\":96820,\"Ġdua\":96821,\"Ġpenetrated\":96822,\"OMUX\":96823,\"Ġnir\":96824,\"_pdata\":96825,\"\\\"],[\\\"\":96826,\"Ġlowes\":96827,\"Ġdoping\":96828,\"Ġasymmetric\":96829,\"Ġneedless\":96830,\"ourcem\":96831,\"Ġupro\":96832,\"ĠGuzzle\":96833,\"afb\":96834,\"Ġsextreffen\":96835,\"-collar\":96836,\"Ġcolossal\":96837,\"Monkey\":96838,\"nish\":96839,\"ĠhandleMessage\":96840,\"Increased\":96841,\"*dx\":96842,\"ĠChattanooga\":96843,\"forg\":96844,\"ĠOrden\":96845,\"Ġshri\":96846,\"ĠVand\":96847,\"Ġ\\\"@\\\"\":96848,\"ImageSharp\":96849,\"ĠWildcats\":96850,\"ponible\":96851,\".scenes\":96852,\"Ġpainters\":96853,\"ĠPfizer\":96854,\"ĠZah\":96855,\"ToLocal\":96856,\"ĠFlam\":96857,\"ĠÃ©taient\":96858,\"))^\":96859,\"ĠSandbox\":96860,\"ĠTRADE\":96861,\"Ġchromium\":96862,\"Ġacclaim\":96863,\"Ġpacman\":96864,\"Â´t\":96865,\")reader\":96866,\"Mari\":96867,\".Dispatcher\":96868,\".ADMIN\":96869,\"ĠRemed\":96870,\"Sweden\":96871,\"Ġoverlays\":96872,\".er\":96873,\"Ġpang\":96874,\"Ġcleanly\":96875,\"avenport\":96876,\"Toyota\":96877,\"patches\":96878,\"Ġvtx\":96879,\"ĠEis\":96880,\"clado\":96881,\"ĠRitch\":96882,\"ROLS\":96883,\"Ġhade\":96884,\"Ġconspicuous\":96885,\"Ġdocks\":96886,\"(jq\":96887,\"ĠPremiership\":96888,\"ĠBez\":96889,\"ĠâĦĸ\":96890,\"ĠÑĥÑģÐ»\":96891,\"_totals\":96892,\"Ġprova\":96893,\"ĠCue\":96894,\"ĠsaÃºde\":96895,\"ĠGameController\":96896,\"IMIZE\":96897,\",port\":96898,\"ãĢĤ(\":96899,\".Cdecl\":96900,\"InstantiationException\":96901,\"Ġcollage\":96902,\"ĠIOC\":96903,\"Ġbais\":96904,\"ĠonFinish\":96905,\"-stars\":96906,\"setSize\":96907,\"Ġmogul\":96908,\"Ġdisillusion\":96909,\"Ġchevy\":96910,\"(Schedulers\":96911,\"(IR\":96912,\"_locs\":96913,\"Ġcannons\":96914,\"Ġcancelling\":96915,\"/bus\":96916,\"Ġbufio\":96917,\"ĠYours\":96918,\"ĠPikachu\":96919,\"Ġterme\":96920,\"rÃ¥\":96921,\"fahren\":96922,\"ĠownerId\":96923,\"Ġobligatory\":96924,\"Ġculp\":96925,\"Ġacidity\":96926,\"-mult\":96927,\"ĠBamboo\":96928,\"Ġ'\\\">\":96929,\"_gs\":96930,\"Ġcompil\":96931,\"nard\":96932,\"-exc\":96933,\"Ġrhyme\":96934,\"Ġbutto\":96935,\"says\":96936,\"antasy\":96937,\"ë¸\":96938,\"ĠcittÃł\":96939,\"Ġcheg\":96940,\"TimeString\":96941,\"Ġpositivity\":96942,\"ĠDabei\":96943,\"Ġwang\":96944,\"Ġescre\":96945,\"\\\"c\":96946,\"ĉvideo\":96947,\"ĠRanked\":96948,\".strings\":96949,\">>>(\":96950,\"ĠÐ¸Ð½ÑĤÐµÑĢ\":96951,\"Ġresta\":96952,\"[:,:\":96953,\"Ġrendre\":96954,\"Ġdeser\":96955,\"Jos\":96956,\"Ġdisruptions\":96957,\"ĠÐ¾Ð¿ÐµÑĢ\":96958,\"sampling\":96959,\"suppress\":96960,\"ĠcontainerView\":96961,\"ĠSeamless\":96962,\"Ġairy\":96963,\"Ġonload\":96964,\".WindowManager\":96965,\"ĠPLA\":96966,\"braco\":96967,\".setPositiveButton\":96968,\"Ġpdu\":96969,\"Ġgsi\":96970,\"ĠCli\":96971,\"_gradients\":96972,\"ÑıÐ´\":96973,\"ĠWhisper\":96974,\"cstdint\":96975,\"ĠlÃ¤ng\":96976,\"Ġformulations\":96977,\"Ã©nom\":96978,\"ournemouth\":96979,\"[$_\":96980,\"Ġordinarily\":96981,\".setUsername\":96982,\"Ġfaculties\":96983,\"MITTED\":96984,\"/values\":96985,\"Ġweir\":96986,\"ĠApt\":96987,\"MZ\":96988,\"ĉcf\":96989,\"ucken\":96990,\"ĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉĉ\":96991,\"defense\":96992,\"[iVar\":96993,\"ĠBusinessException\":96994,\"Selectors\":96995,\"(coordinates\":96996,\"ĠResets\":96997,\"ĠDrinks\":96998,\"oleans\":96999,\"(stypy\":97000,\"_IOC\":97001,\".xxx\":97002,\"ĠSlater\":97003,\"ĠBelize\":97004,\"Ġ/************************************************************************\":97005,\"addin\":97006,\"_episodes\":97007,\"Ġischem\":97008,\"legalArgumentException\":97009,\"Danny\":97010,\"Ġpared\":97011,\".codehaus\":97012,\"ĠAssy\":97013,\"ĉRect\":97014,\"âŀ\":97015,\".lista\":97016,\"ĠÐ²Ð°ÑĪ\":97017,\"Ġvets\":97018,\"HWND\":97019,\"isoner\":97020,\"Ġxo\":97021,\"Ġorally\":97022,\"ĠStmt\":97023,\".rnn\":97024,\"ĠDPI\":97025,\"ĠStrikes\":97026,\".setViewportView\":97027,\"ĠèĩªåĬ¨çĶŁæĪĲ\":97028,\"YELLOW\":97029,\"GLenum\":97030,\"partners\":97031,\"ĠImplicit\":97032,\"Ġtako\":97033,\"âĢĻelle\":97034,\"ĠermÃ¶g\":97035,\"totalCount\":97036,\"Gil\":97037,\"ĉwork\":97038,\"Ġpratic\":97039,\"inati\":97040,\"abies\":97041,\"ĠSkinner\":97042,\"Ġspirited\":97043,\"Ġpancreatic\":97044,\"Ġhdf\":97045,\"'em\":97046,\"Ġpsychosis\":97047,\"olicit\":97048,\"Ġ\\\"{\\\"\":97049,\"_atual\":97050,\"ĠÃ©lect\":97051,\"TEAM\":97052,\"Ġdak\":97053,\"ĠSWAT\":97054,\".FragmentManager\":97055,\"Ġprovisioning\":97056,\"lifetime\":97057,\"_EXTENSIONS\":97058,\"ĠCASCADE\":97059,\"Ġ![\":97060,\"(KP\":97061,\"Ġvem\":97062,\"ĠInterracial\":97063,\"']},Ċ\":97064,\"spacer\":97065,\"_kv\":97066,\"Warehouse\":97067,\"RDD\":97068,\"_fsm\":97069,\".StretchImage\":97070,\",Yes\":97071,\"ĠRefugee\":97072,\"ĠBringing\":97073,\"ĠvÃ¡lido\":97074,\".intersection\":97075,\"Ġspooky\":97076,\"_portal\":97077,\"Ġmoth\":97078,\"ĠZodiac\":97079,\"ĠSOCIAL\":97080,\"MimeType\":97081,\"']}}</\":97082,\"Ġresizable\":97083,\"äºĽ\":97084,\"(phase\":97085,\"(mappedBy\":97086,\"Ġmundial\":97087,\"Ġconvo\":97088,\"/left\":97089,\"/documents\":97090,\"washing\":97091,\"ĠAmÃ©rica\":97092,\"_quota\":97093,\".poster\":97094,\"']\\\");Ċ\":97095,\"Ġstellt\":97096,\"ĠDISCLAIMER\":97097,\"[opt\":97098,\"Ġeds\":97099,\"ĠRaces\":97100,\"ventas\":97101,\"Ġpz\":97102,\"ĠCapac\":97103,\"ĠUserDao\":97104,\"itest\":97105,\"Proveedor\":97106,\"ĠShotgun\":97107,\"Ġthirsty\":97108,\"ĠBalanced\":97109,\"iqueta\":97110,\"Ġhealer\":97111,\"/\\\")\":97112,\".Sdk\":97113,\"Ġtert\":97114,\"\\\"data\":97115,\"_province\":97116,\".Automation\":97117,\"ĠfontWithName\":97118,\"_ANT\":97119,\"çķĮ\":97120,\"oodles\":97121,\"ĠREPRESENT\":97122,\"_GPS\":97123,\"Ġpersuasion\":97124,\"ĠDiscussions\":97125,\"Ġfred\":97126,\"NEG\":97127,\":border\":97128,\"ĉinitialize\":97129,\"ĉglog\":97130,\"-capital\":97131,\"ĠImVec\":97132,\"Ġdevis\":97133,\"Candidates\":97134,\".animations\":97135,\"Ġragazzi\":97136,\"ĠPrometheus\":97137,\"ĠKidd\":97138,\"Ġprogramma\":97139,\"Certificates\":97140,\"Conta\":97141,\".espresso\":97142,\"ĠëĲĺ\":97143,\"Ġbeide\":97144,\"éĻĨ\":97145,\".getRaw\":97146,\"ĠFullName\":97147,\"Ġiam\":97148,\"(*)(\":97149,\"maids\":97150,\"BH\":97151,\"ĠConspiracy\":97152,\"_DU\":97153,\"Ġblatantly\":97154,\"Ġ\\\\|\":97155,\"ĠWig\":97156,\"ĠConj\":97157,\"RenderingContext\":97158,\"Mitch\":97159,\"Ġalleles\":97160,\"Ġæ³¨æĦı\":97161,\"Ġrims\":97162,\"ĠNeighbor\":97163,\"ĠKylie\":97164,\".party\":97165,\"tors\":97166,\"Ġì¡°íļĮ\":97167,\"Ġwes\":97168,\"ĠCrafting\":97169,\"[\\\".\":97170,\".sponge\":97171,\"Ġê±\":97172,\"Islamic\":97173,\"Ġprosecuting\":97174,\"Ġwik\":97175,\".osgi\":97176,\"oningen\":97177,\"Grammar\":97178,\"'im\":97179,\"Ġaxial\":97180,\"Cleaning\":97181,\".getExternalStorage\":97182,\"=./\":97183,\"Ġchromat\":97184,\"ÐµÑħ\":97185,\"abay\":97186,\"Ġbola\":97187,\".Aggressive\":97188,\"'],$_\":97189,\"izacao\":97190,\"Preparing\":97191,\":Any\":97192,\".ENTER\":97193,\"-windows\":97194,\"Ġenraged\":97195,\"_dice\":97196,\"Ġdetta\":97197,\"ecal\":97198,\"_ORIGIN\":97199,\"Ġ------>\":97200,\"_Blue\":97201,\"Ġbotanical\":97202,\"Ġfrags\":97203,\"Ġfamilial\":97204,\"-du\":97205,\"Ġseizing\":97206,\"(blocks\":97207,\".rd\":97208,\".checkNotNull\":97209,\"Ġmiser\":97210,\"Ġmaxx\":97211,\"ĠKnee\":97212,\"ViewItem\":97213,\"InnerHTML\":97214,\"Danger\":97215,\"((__\":97216,\"Ġprzypad\":97217,\"createUrl\":97218,\"**,\":97219,\"ĠDecorating\":97220,\"ATEGY\":97221,\"?>/\":97222,\".Designer\":97223,\"hexdigest\":97224,\"ĠEverywhere\":97225,\"alleries\":97226,\".TEXTURE\":97227,\".Blocks\":97228,\"zell\":97229,\"ĠpreÃ§o\":97230,\"Suddenly\":97231,\"inputEmail\":97232,\"(sync\":97233,\".bd\":97234,\"golden\":97235,\">');\":97236,\"ĠDickinson\":97237,\">>(Ċ\":97238,\"ĠQUEUE\":97239,\"ĠgetColumn\":97240,\"ĠSAND\":97241,\".piece\":97242,\"licer\":97243,\"Flutter\":97244,\"ĠgetVersion\":97245,\"ĠresourceId\":97246,\"ogl\":97247,\"ÅĤaw\":97248,\".Branch\":97249,\"ĉweb\":97250,\"Ġframerate\":97251,\"PPP\":97252,\"Ġfray\":97253,\"CNT\":97254,\"Ġinformatie\":97255,\"']čĊčĊ\":97256,\"neas\":97257,\"HeaderCode\":97258,\"Ġæ¸\":97259,\"Ġtrg\":97260,\"rawtypes\":97261,\"Honda\":97262,\"Ġmarketer\":97263,\"ĠrequestData\":97264,\"ĠPg\":97265,\"ĉnot\":97266,\"ĠpageInfo\":97267,\"Ġaktuellen\":97268,\"ãģķãĤĵ\":97269,\"ĠAMS\":97270,\"pushViewController\":97271,\"ĉAL\":97272,\"Ġvests\":97273,\"produce\":97274,\"-mÃªme\":97275,\"ĠRahman\":97276,\"Funny\":97277,\"EZ\":97278,\"_Valid\":97279,\"Ġsquadron\":97280,\"Ġlash\":97281,\"Ġirm\":97282,\"iasco\":97283,\"ĠParan\":97284,\"Ġpetites\":97285,\"ĠDecay\":97286,\"Ġuninitialized\":97287,\"privileged\":97288,\"Ġmbedtls\":97289,\"å¤ĩæ³¨\":97290,\"Ġ^.\":97291,\"Ġecstatic\":97292,\"Detroit\":97293,\"Ġparten\":97294,\"Ġsouvenir\":97295,\".getLogin\":97296,\"Ð¼Ð¾ÑĤÑĢ\":97297,\"enÃ§Ã£o\":97298,\"ĠmÃŃnimo\":97299,\"ĠAccessed\":97300,\"riÃ³\":97301,\"Mic\":97302,\"ĠVocal\":97303,\".SetString\":97304,\"Ġmensajes\":97305,\"åĢį\":97306,\"Ġattravers\":97307,\"ĠAph\":97308,\"Ġ');čĊ\":97309,\"Ã¼nde\":97310,\"Ġenchanted\":97311,\"ĠRootState\":97312,\"ĠCLOSED\":97313,\"ĉĉĉĉĉĉĉĉčĊ\":97314,\"Ġcaliente\":97315,\"orris\":97316,\"Ġphysicists\":97317,\"hwnd\":97318,\"_vi\":97319,\"ĠrÃ¡pido\":97320,\"Ġcapitalized\":97321,\"edBy\":97322,\"Ġmachining\":97323,\"Ġhubby\":97324,\"ĠStacy\":97325,\".Bus\":97326,\"drink\":97327,\"Hur\":97328,\"Ġpropia\":97329,\"UnitTest\":97330,\"Ġmisconception\":97331,\"__));Ċ\":97332,\"/dc\":97333,\"ĠMayweather\":97334,\"_mC\":97335,\".createFrom\":97336,\"ĠQPainter\":97337,\"ropsych\":97338,\"innitus\":97339,\"ayas\":97340,\"Ġgeg\":97341,\"(dw\":97342,\"Ġusado\":97343,\"Ġtrickle\":97344,\"Ġannihil\":97345,\"ĠPasta\":97346,\"Ġ++Ċ\":97347,\"(ExpectedConditions\":97348,\".postValue\":97349,\"icap\":97350,\"ĠDonetsk\":97351,\"_soup\":97352,\"-publish\":97353,\"ĠPb\":97354,\"mentions\":97355,\"ACCEPT\":97356,\".Pull\":97357,\",âĢĻâĢĻ\":97358,\"Ġretarded\":97359,\"_ATOM\":97360,\"ĠTerminator\":97361,\"-court\":97362,\"ĠCLLocationCoordinate\":97363,\"Ġreverence\":97364,\"ĠSSC\":97365,\"utely\":97366,\"ĠWON\":97367,\"ĠGSL\":97368,\"frei\":97369,\".getLongitude\":97370,\"ĠopenFileDialog\":97371,\".Butter\":97372,\"-important\":97373,\"_MANY\":97374,\"ĠGong\":97375,\"âĢľHow\":97376,\"Ġgorge\":97377,\"=msg\":97378,\"ĠEzek\":97379,\"createCommand\":97380,\":checked\":97381,\"Ġinfographic\":97382,\".WEST\":97383,\"Dirs\":97384,\"Ġguarda\":97385,\"Ġbeetle\":97386,\"<small\":97387,\"-android\":97388,\"Ġcreditor\":97389,\"ĠMÃ©d\":97390,\"Ġfinalist\":97391,\"Ġabl\":97392,\"nev\":97393,\"_interaction\":97394,\"ĠMonterey\":97395,\"jah\":97396,\"Ġcandies\":97397,\"ĠQuincy\":97398,\"èªŃ\":97399,\"ĠbatchSize\":97400,\"akit\":97401,\"Ġobe\":97402,\"(para\":97403,\"Ġexperimented\":97404,\"Ġcouncillors\":97405,\"Ġclashed\":97406,\"squ\":97407,\"-strokes\":97408,\"ĠGK\":97409,\"ĠExpires\":97410,\"Ġprosecutions\":97411,\"ĠCreatures\":97412,\"ĠyÃ¶\":97413,\"xlim\":97414,\"_IMP\":97415,\"EntryPoint\":97416,\"ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ\":97417,\".DefaultCellStyle\":97418,\"Ġbreve\":97419,\"ĠBritann\":97420,\"Ġsweaty\":97421,\"Ġleth\":97422,\"Ġflashback\":97423,\"permanent\":97424,\"ĠJDK\":97425,\"_Details\":97426,\"Euro\":97427,\"ppt\":97428,\"ĠrichTextBox\":97429,\"/board\":97430,\"Ġtrance\":97431,\".cycle\":97432,\"');\\\");Ċ\":97433,\"Ġtoxin\":97434,\"_deinit\":97435,\"Ġoverarching\":97436,\"Ġconfigparser\":97437,\"ĠKawasaki\":97438,\".thumb\":97439,\"Ġplaya\":97440,\"ĠJosef\":97441,\"+_\":97442,\"Ġzeroes\":97443,\"Ġaup\":97444,\"ĠHari\":97445,\"committed\":97446,\"Nit\":97447,\".filePath\":97448,\"ĠDisabilities\":97449,\"manufact\":97450,\"-aligned\":97451,\".RESET\":97452,\"Ġrusty\":97453,\"Ey\":97454,\"Ġousted\":97455,\"cosa\":97456,\"Structured\":97457,\".getD\":97458,\"ĠsÃ¡bado\":97459,\">Loading\":97460,\"_mA\":97461,\".getRandom\":97462,\"blings\":97463,\"Ġcheeses\":97464,\"tti\":97465,\".âĢ¢\":97466,\"ĠBurgess\":97467,\"enderit\":97468,\".',čĊ\":97469,\"(\\\"\\\"+\":97470,\"acb\":97471,\"%p\":97472,\"indexed\":97473,\"_predicate\":97474,\"nesia\":97475,\"Ġbied\":97476,\"ĠCIT\":97477,\"(Pos\":97478,\"_radi\":97479,\"ä»·æł¼\":97480,\"Biz\":97481,\"ĠAdolescent\":97482,\"ĠviÃªn\":97483,\"cycl\":97484,\"_Cancel\":97485,\"Ġconclusive\":97486,\"Ġappellate\":97487,\"informatics\":97488,\"SJ\":97489,\"Ġelective\":97490,\"roleId\":97491,\"Fetcher\":97492,\"ĉCommand\":97493,\"(\\\"(%\":97494,\"Ġfart\":97495,\"ILA\":97496,\"getBlock\":97497,\"AUSE\":97498,\"ĠÐ´Ð°Ð½\":97499,\"ĠArte\":97500,\"Ġnotifying\":97501,\"Ġgele\":97502,\".same\":97503,\"ĠRegel\":97504,\"ĠBaÅŁ\":97505,\".creation\":97506,\"ĠVN\":97507,\"_community\":97508,\"Ġunsustainable\":97509,\"SEX\":97510,\"ĠgridSize\":97511,\"rescia\":97512,\"aversable\":97513,\"(',')[\":97514,\"ĠPhelps\":97515,\"á»ķi\":97516,\"ANCELED\":97517,\"-IS\":97518,\".runners\":97519,\"ĠStokes\":97520,\".Produ\":97521,\"Ġwhipping\":97522,\"_acquire\":97523,\"ĠinvestigaciÃ³n\":97524,\"fried\":97525,\".copyWith\":97526,\"ĠHardcover\":97527,\"-Se\":97528,\"áŀ¶áŀ\":97529,\"invitation\":97530,\"lesai\":97531,\"ĠDorm\":97532,\"ĠÑģÐ¿Ð¸ÑģÐºÐ°\":97533,\"Ġconcatenated\":97534,\"ophil\":97535,\"Ġthinker\":97536,\"/fontawesome\":97537,\"ĠLeopard\":97538,\"Ġ\\\"/\\\");Ċ\":97539,\"Ġresiduals\":97540,\"ĠMicrowave\":97541,\"Ġconforme\":97542,\"throp\":97543,\"Ġdisemb\":97544,\"ĠOMG\":97545,\"ĠDiscipline\":97546,\"ĠAcrobat\":97547,\"/repository\":97548,\"dfa\":97549,\"_MED\":97550,\"bufio\":97551,\"ĠmÃ©thode\":97552,\"_HOLD\":97553,\"iasi\":97554,\"_legacy\":97555,\")ččĊ\":97556,\"æ£Ģ\":97557,\"GetProcAddress\":97558,\"Ġyay\":97559,\"otence\":97560,\"orderid\":97561,\"-tw\":97562,\"Ġdearly\":97563,\"Incoming\":97564,\"/il\":97565,\"Ġneurop\":97566,\"ucz\":97567,\");čččĊ\":97568,\"ĠInnovative\":97569,\"Ġprofund\":97570,\"igmat\":97571,\"SelectionMode\":97572,\"relevant\":97573,\".GO\":97574,\"Ġbruises\":97575,\"Ġsach\":97576,\"odef\":97577,\"Ġreimb\":97578,\"/desktop\":97579,\"-spot\":97580,\"undance\":97581,\"Entropy\":97582,\"\\\\core\":97583,\"Ġsuger\":97584,\"ĠMvc\":97585,\"ĠGNOME\":97586,\"_indx\":97587,\"ĠYYSTYPE\":97588,\"ĠMatlab\":97589,\"ĠCIF\":97590,\"Ġ*))\":97591,\"ĠproductList\":97592,\"ĠAlright\":97593,\"acemark\":97594,\"ÑĤÐ¸Ð²\":97595,\"modification\":97596,\"international\":97597,\"Ġhomers\":97598,\"Ġdicts\":97599,\"ĠQFont\":97600,\".SQLite\":97601,\"Ġtransplantation\":97602,\"ĠMessageBoxButton\":97603,\"ĠElves\":97604,\"']])Ċ\":97605,\"(QIcon\":97606,\"Ġcinemas\":97607,\"COORD\":97608,\"-China\":97609,\"Ġkháº©u\":97610,\"æĪĳçļĦ\":97611,\"Ġskulls\":97612,\"Ġpainstaking\":97613,\"fce\":97614,\".XRLabel\":97615,\"Ġspecifier\":97616,\"Ġpreferring\":97617,\"/activity\":97618,\"(Photo\":97619,\"Ã¡lt\":97620,\".lot\":97621,\"''.\":97622,\"annonce\":97623,\".googlecode\":97624,\"-pdf\":97625,\"ĠPoke\":97626,\"_ACL\":97627,\"Ġendowed\":97628,\"discover\":97629,\".omg\":97630,\"Ġwoodland\":97631,\".Magic\":97632,\"Ġvolont\":97633,\"NotAllowed\":97634,\"Ġchave\":97635,\"BMW\":97636,\"','=',\":97637,\"ĠSIX\":97638,\"æĪĳä»¬\":97639,\"Ġkosher\":97640,\"Ġaspiration\":97641,\"intl\":97642,\"_refptr\":97643,\"'+Ċ\":97644,\"mentor\":97645,\".club\":97646,\"WindowState\":97647,\".ARR\":97648,\"Ġzza\":97649,\"ĠmessageType\":97650,\".equ\":97651,\"Thor\":97652,\"Ġinjust\":97653,\"Ġgums\":97654,\"ĠborderSide\":97655,\"/////\":97656,\"ĠTransmit\":97657,\"Ġbufsize\":97658,\"Ġhak\":97659,\"Ġellas\":97660,\"RANDOM\":97661,\"ĉmc\":97662,\"Ġpea\":97663,\"eko\":97664,\"documento\":97665,\"Ġhysteria\":97666,\"Ġarenas\":97667,\"Ġgunmen\":97668,\"Ġmike\":97669,\"Ġimpunity\":97670,\"atisation\":97671,\"_Zero\":97672,\"_COMPANY\":97673,\"ĠGors\":97674,\"ĠuseClass\":97675,\"(redis\":97676,\"ĠRUNNING\":97677,\"ĠBair\":97678,\"velte\":97679,\"Ġ','.\":97680,\"Ð°ÑĤÑĮÑģÑı\":97681,\"Ã¶st\":97682,\"encodeURIComponent\":97683,\"_restrict\":97684,\"Ġdecals\":97685,\"ĠPedido\":97686,\"Ġaltercation\":97687,\"Displays\":97688,\"ĠApplicants\":97689,\"CUS\":97690,\"Textarea\":97691,\"ĠAngola\":97692,\".future\":97693,\"ĠUSHORT\":97694,\"Ġsuppressing\":97695,\"Ġsetzen\":97696,\"APolynomial\":97697,\"Ġtoch\":97698,\"Ġhallmark\":97699,\"Ġ$$$\":97700,\"ĠCHARSET\":97701,\".rpm\":97702,\"ĠDich\":97703,\"--------------------\":97704,\"_parm\":97705,\"è¿ĺ\":97706,\"acciones\":97707,\"hait\":97708,\"WARDED\":97709,\"_routing\":97710,\"ĠNOM\":97711,\"Ġenclave\":97712,\"ĠLotto\":97713,\"ĉfr\":97714,\"complexContent\":97715,\"ĠBallard\":97716,\"kube\":97717,\"/win\":97718,\".getColumnModel\":97719,\"_REPLACE\":97720,\"HeaderValue\":97721,\"Ġestudiantes\":97722,\"Ġapis\":97723,\"Ġbpm\":97724,\"ĠTypeName\":97725,\"AndGet\":97726,\"rita\":97727,\"Plans\":97728,\">Note\":97729,\"Ġfetisch\":97730,\"Ġtoned\":97731,\"_goto\":97732,\"onsense\":97733,\"Ġmolds\":97734,\"Ġinfiltration\":97735,\"ĠGuerrero\":97736,\"ubbo\":97737,\"cki\":97738,\"($(\\\".\":97739,\"_activities\":97740,\"(changes\":97741,\"ĠofApp\":97742,\"ĠKepler\":97743,\"ĠDemp\":97744,\"ĠContinent\":97745,\".Ticks\":97746,\"ĠUnsigned\":97747,\"ĠJahres\":97748,\"Ġfreshmen\":97749,\"ĠArchived\":97750,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐ¹\":97751,\"Ġ'::\":97752,\"Tutorial\":97753,\"Cc\":97754,\"ĠtableLayoutPanel\":97755,\"fromJson\":97756,\".levels\":97757,\"_transient\":97758,\"Ġendorsing\":97759,\"ĠDIC\":97760,\"lauf\":97761,\"Ġshred\":97762,\"_EMIT\":97763,\"ificantly\":97764,\"ALA\":97765,\"/proto\":97766,\"Ġnarrowing\":97767,\"Utc\":97768,\"Factors\":97769,\"Ġsentient\":97770,\"æŀĲ\":97771,\"lixir\":97772,\"ĠCROSS\":97773,\"meteor\":97774,\"Ġgroin\":97775,\"Ġmdb\":97776,\"ĠRotterdam\":97777,\"Ġcomida\":97778,\"ĠOpCode\":97779,\"ĠDefaultValue\":97780,\"PermissionsResult\":97781,\"Ġheterogeneous\":97782,\"Ġmoot\":97783,\"Ġdeceived\":97784,\"-independent\":97785,\"ĠObjectOutputStream\":97786,\"Ġoverpower\":97787,\".dup\":97788,\"Ġldb\":97789,\"Ġdomestically\":97790,\"Ġbestellen\":97791,\"Ġlov\":97792,\"ĠContractors\":97793,\"Triangles\":97794,\"Ġfodder\":97795,\"Ġfilmes\":97796,\"ä¼ģ\":97797,\"Ġrevolver\":97798,\"StartupScript\":97799,\"/validation\":97800,\"ĠResourceType\":97801,\"iÅŁ\":97802,\"ĠLaz\":97803,\"fef\":97804,\"Ġlstm\":97805,\"{*\":97806,\".attachment\":97807,\".hits\":97808,\"ewith\":97809,\"DOG\":97810,\"Alabama\":97811,\"Ġmediums\":97812,\".mContext\":97813,\"-cols\":97814,\"åıĭ\":97815,\".notice\":97816,\"Ġattn\":97817,\"ĠPacking\":97818,\"ĠLn\":97819,\"_COMPLEX\":97820,\"/Users\":97821,\".savetxt\":97822,\"ĠRounds\":97823,\"?,?,?,?,\":97824,\"Ġingl\":97825,\"ĠROC\":97826,\"_female\":97827,\"ĠStard\":97828,\"]];\":97829,\"Ġwrestlers\":97830,\"Ġtorrents\":97831,\"Ġsinh\":97832,\"ï»¿ĊĊ\":97833,\"ë³µ\":97834,\"sense\":97835,\"however\":97836,\".Physics\":97837,\"Infrastructure\":97838,\"ĠSacr\":97839,\"Fel\":97840,\"ĠDISTRIBUT\":97841,\"Ã©ments\":97842,\"ĠValidates\":97843,\"############################################################\":97844,\"Ġ|/\":97845,\"Ġesl\":97846,\"ĠrÃ©seau\":97847,\"ĠBip\":97848,\"BYTES\":97849,\"_WATER\":97850,\"Turning\":97851,\"ELS\":97852,\"Ġjuxtap\":97853,\"Ġlesbische\":97854,\"Ã½ch\":97855,\"(Unknown\":97856,\"Neo\":97857,\"@JsonProperty\":97858,\"Ġalumnos\":97859,\"ĠRaqqa\":97860,\"imei\":97861,\".getBounds\":97862,\".MouseEventHandler\":97863,\"#######\":97864,\"GenericType\":97865,\"/cms\":97866,\"Ġturno\":97867,\"ĠÐ¼Ð¸Ð½\":97868,\"Ġfolklore\":97869,\"ĠEvo\":97870,\"Ġconductivity\":97871,\"Ġleben\":97872,\"Ġgearbox\":97873,\"-vs\":97874,\"ĠÏĨ\":97875,\"Ġdrinkers\":97876,\"Ġconexao\":97877,\"ĠTeeth\":97878,\"ĠgetArguments\":97879,\"ĠRAT\":97880,\"entious\":97881,\"Educ\":97882,\"+W\":97883,\"ĠInstitutional\":97884,\"ĠBord\":97885,\"isEqual\":97886,\"(pwd\":97887,\"Ġignited\":97888,\"ĠRousse\":97889,\"Ġimpactful\":97890,\"ĠMalk\":97891,\"Ġgeral\":97892,\"ĠPivot\":97893,\"Ġazt\":97894,\"Ġcsvfile\":97895,\"ĠRope\":97896,\"ĠSOLUTION\":97897,\"ĠArbitrary\":97898,\"Ġletto\":97899,\".MouseAdapter\":97900,\"Ġ}}}\":97901,\"ĠSailor\":97902,\"dera\":97903,\"Putting\":97904,\"Ġconcentrates\":97905,\"ĠauthDomain\":97906,\"âĢĿçļĦ\":97907,\"-finals\":97908,\",strlen\":97909,\"Muon\":97910,\"ĠOrdinary\":97911,\"firefox\":97912,\"ĠLaTeX\":97913,\"ĠHund\":97914,\"engineering\":97915,\"/blue\":97916,\"edTextBox\":97917,\"(\\\"\\\");\":97918,\"ĠCDDL\":97919,\"kept\":97920,\"ĠGetString\":97921,\"Kir\":97922,\"()='\":97923,\"ĠOCD\":97924,\"antium\":97925,\"$menu\":97926,\"ĠAppalachian\":97927,\"Secretary\":97928,\"ë¥ĺ\":97929,\"à¸µà¸¢\":97930,\"Semantic\":97931,\"Ġ*[\":97932,\"estone\":97933,\"ungkin\":97934,\"MaxY\":97935,\"-tone\":97936,\"\\\"};čĊ\":97937,\"_Part\":97938,\"<Member\":97939,\"tram\":97940,\"Ġtransistor\":97941,\"Ġ--------------------------------------------------------------------------Ċ\":97942,\"ĠDesde\":97943,\"Ġrightful\":97944,\"ĠCornel\":97945,\"æĳ\":97946,\".HOUR\":97947,\"Ġsidelined\":97948,\"referrer\":97949,\"maze\":97950,\"Ġholster\":97951,\"Ġcrippled\":97952,\"ĠDateFormatter\":97953,\"ophage\":97954,\"_mD\":97955,\"Ġdeselect\":97956,\"raud\":97957,\"ĠPKK\":97958,\"rowData\":97959,\"Ġlocksmith\":97960,\".responses\":97961,\"(productId\":97962,\"_STMT\":97963,\"KeyType\":97964,\".Then\":97965,\"zee\":97966,\"Ġcrt\":97967,\"ĠGrandma\":97968,\"@Resource\":97969,\"Ġbitwise\":97970,\"-cmpr\":97971,\"ãĢĤwww\":97972,\"zeitig\":97973,\"&display\":97974,\"CartItem\":97975,\"-No\":97976,\"ĠnumÃ©ro\":97977,\"Ġmaur\":97978,\"Ġinstancia\":97979,\"ĉdt\":97980,\"_npc\":97981,\"Ġskateboard\":97982,\"âĢľAll\":97983,\"ĠCrowd\":97984,\"ĠÃ¤n\":97985,\"Ġbraz\":97986,\"cae\":97987,\"ynet\":97988,\"/pm\":97989,\"/screen\":97990,\"OPTARG\":97991,\"ĠVBox\":97992,\"Ġleopard\":97993,\"_greater\":97994,\"cpt\":97995,\"<dd\":97996,\"Ġmechanically\":97997,\"ospels\":97998,\")f\":97999,\".lwjgl\":98000,\".getPort\":98001,\"ĠPREF\":98002,\".AddTransient\":98003,\"ppard\":98004,\"ĠíļĮ\":98005,\"Ethernet\":98006,\"Ġsaline\":98007,\"(levels\":98008,\"ĠserviceProvider\":98009,\".Angle\":98010,\"altitude\":98011,\"illaume\":98012,\"Ġscape\":98013,\"_CALC\":98014,\"_quest\":98015,\"ĠDissertation\":98016,\"ĠEDM\":98017,\"-Cds\":98018,\"Ġhonorary\":98019,\"stops\":98020,\"Ġsubdir\":98021,\"ĠVH\":98022,\"ĠCheat\":98023,\"Ġrightfully\":98024,\"QE\":98025,\".WriteByte\":98026,\"figures\":98027,\"ennie\":98028,\"(DBG\":98029,\"Ġvoksne\":98030,\"Ġexpended\":98031,\"UNICATION\":98032,\"ilinx\":98033,\"ĠRecap\":98034,\"_verts\":98035,\"Ġtraumat\":98036,\"ĠgetPlayer\":98037,\"Ġverbess\":98038,\"Ġcultivating\":98039,\"Ġinitiator\":98040,\"ThÃ´ng\":98041,\"findFirst\":98042,\"_perms\":98043,\"Ġbuc\":98044,\"Ġ\\\"\\\"\\\"čĊčĊ\":98045,\"TYPES\":98046,\"objectManager\":98047,\"(ConfigurationManager\":98048,\"Ġtimid\":98049,\"Ġsnapchat\":98050,\"Ġconseg\":98051,\"ĉdistance\":98052,\"_rights\":98053,\"_Des\":98054,\"ĠFlesh\":98055,\"-ver\":98056,\"Ġafl\":98057,\"frauen\":98058,\"Ġblasph\":98059,\"ĠQualitÃ¤t\":98060,\"maf\":98061,\"Monitoring\":98062,\".Diff\":98063,\"Ġshoreline\":98064,\"ĠresponseBody\":98065,\"memset\":98066,\"<decimal\":98067,\"SmartyHeaderCode\":98068,\"Ġinsets\":98069,\"ĠBinaryTree\":98070,\"ameda\":98071,\"Ġnihil\":98072,\"ĠNay\":98073,\"ymology\":98074,\"ĠWG\":98075,\"Ġtapi\":98076,\"ĠInstalled\":98077,\"maintenance\":98078,\")}\\\"Ċ\":98079,\"ĠXO\":98080,\"-period\":98081,\"sar\":98082,\"Ġninguna\":98083,\"ORMAT\":98084,\".setPrototypeOf\":98085,\"ĠKb\":98086,\"ĠHenrik\":98087,\"Ã©tique\":98088,\"ĠLahore\":98089,\"ĉAddress\":98090,\"Ġmelts\":98091,\"Ny\":98092,\"_advance\":98093,\"Ġvelocidad\":98094,\"Ġalumno\":98095,\"Ġsanitizer\":98096,\"Ġphishing\":98097,\"ĠComet\":98098,\"Ġchiar\":98099,\"ĉspec\":98100,\"trimmed\":98101,\"(statearr\":98102,\"onnen\":98103,\"Revenue\":98104,\"Lens\":98105,\"Ġchaired\":98106,\"ĠAssumes\":98107,\"Trash\":98108,\"_unset\":98109,\"\\\\Bridge\":98110,\"PointSize\":98111,\"ĠPolic\":98112,\"Ġsexuales\":98113,\"ĉdfs\":98114,\"ĠWideString\":98115,\"Ġaccrued\":98116,\"YW\":98117,\"_SCHEDULE\":98118,\"Ġkite\":98119,\"Ġparachute\":98120,\"[table\":98121,\"ĠactiveClassName\":98122,\".Quad\":98123,\"Israeli\":98124,\"ĠÅĵ\":98125,\"Ġhoog\":98126,\"Ġchá»ī\":98127,\"ewear\":98128,\"Ġtirelessly\":98129,\"setError\":98130,\".getAmount\":98131,\".setItems\":98132,\"ĠManson\":98133,\"ĠBayesian\":98134,\"_Flag\":98135,\"ACHER\":98136,\"/original\":98137,\"Ġimmac\":98138,\"ĠLosing\":98139,\"'>ĊĊ\":98140,\"Lic\":98141,\"ĠMirage\":98142,\"ĠAssemblyFileVersion\":98143,\"TeV\":98144,\"ĠValueEventListener\":98145,\"-solving\":98146,\"Tho\":98147,\"roulette\":98148,\"_WP\":98149,\"Ġuninterrupted\":98150,\"ĠfieldType\":98151,\".Typed\":98152,\"Ġamour\":98153,\"Ġmockery\":98154,\"(vol\":98155,\"ĠSubcommittee\":98156,\"ĠRuf\":98157,\"erox\":98158,\":UIButtonTypeCustom\":98159,\"ĠBlur\":98160,\"Ġwykon\":98161,\"nces\":98162,\"ASHBOARD\":98163,\"!!\\\");Ċ\":98164,\"Ġmurderers\":98165,\".daily\":98166,\"ĠDIAG\":98167,\"jing\":98168,\"Ġdolphin\":98169,\"ĠlÃ²ng\":98170,\"ĠbÃ¶\":98171,\"ĠVocabulary\":98172,\".StObject\":98173,\"')\\\">\":98174,\"Ġzun\":98175,\"Ġscrimmage\":98176,\"trÃ©al\":98177,\"ĠLig\":98178,\"[vi\":98179,\"Cole\":98180,\"Ġfrosting\":98181,\".Players\":98182,\"-translate\":98183,\"Feels\":98184,\"=\\\\\\\"/\":98185,\".ButterKnife\":98186,\"Ġ?>;Ċ\":98187,\"Ġavi\":98188,\"innie\":98189,\".Failure\":98190,\"Ġspindle\":98191,\"ConfigurationException\":98192,\"_hop\":98193,\"ĠposiÃ§Ã£o\":98194,\"ĠAwait\":98195,\"UIImagePickerController\":98196,\"ĉday\":98197,\"Ġgenom\":98198,\"Cab\":98199,\"ĠÑĢÐµÐ·ÑĥÐ»ÑĮÑĤÐ°ÑĤ\":98200,\"ORIGINAL\":98201,\"Ġejaculation\":98202,\"(tcp\":98203,\"SECOND\":98204,\"Ġtonic\":98205,\"ĠListBox\":98206,\"ĠĉĉĊ\":98207,\"()>Ċ\":98208,\"Ġquatre\":98209,\"Æ°á»£ng\":98210,\"withErrors\":98211,\".Maybe\":98212,\",âĢ¦\":98213,\"tokenId\":98214,\"_UNDEF\":98215,\"Ġfreshness\":98216,\"ĠAmendments\":98217,\".mapbox\":98218,\".CV\":98219,\"(blog\":98220,\"_gettime\":98221,\".quest\":98222,\"sparse\":98223,\"Ġresale\":98224,\"Ġenthusiastically\":98225,\"ĠProstitutas\":98226,\"Wa\":98227,\"Cargo\":98228,\".Parcelable\":98229,\"SENSOR\":98230,\"ĠRyu\":98231,\"Laughs\":98232,\"_Native\":98233,\"/pg\":98234,\"ysts\":98235,\"Ġphotoc\":98236,\"ç®Ģ\":98237,\"adopt\":98238,\".species\":98239,\"conciliation\":98240,\"Adjusted\":98241,\".FirebaseAuth\":98242,\"uttle\":98243,\"ordination\":98244,\"Ġmunch\":98245,\"ĠStake\":98246,\".ping\":98247,\"anker\":98248,\"(QStringLiteral\":98249,\"Ġsubscript\":98250,\"ĠĠĉĊ\":98251,\"ĠMCC\":98252,\"_Cmd\":98253,\"sexy\":98254,\"iou\":98255,\"ĠMANY\":98256,\"Ġnanny\":98257,\"TRAIN\":98258,\"Ġflourishing\":98259,\"ĠWatches\":98260,\"ĠQMap\":98261,\"ĠFerm\":98262,\"Ġwasm\":98263,\"ĠAbed\":98264,\"_UD\":98265,\"ĠGlasses\":98266,\"+v\":98267,\"Attend\":98268,\".Chain\":98269,\"Ġdecency\":98270,\"ĠSupplementary\":98271,\"hunter\":98272,\"-txt\":98273,\"Ġ\\\"}\\\";Ċ\":98274,\".setWindowTitle\":98275,\"(\\\"<?\":98276,\"ĠnumberWithInt\":98277,\"Ġafar\":98278,\"ç§»åĪ°\":98279,\"ritte\":98280,\"/lists\":98281,\")âĢĿ\":98282,\"Ġdiversas\":98283,\"Ġember\":98284,\".ReactNode\":98285,\"Ġkang\":98286,\"ĠStamford\":98287,\"[at\":98288,\".closePath\":98289,\"Ġcontraceptive\":98290,\"(locations\":98291,\"Ġavanz\":98292,\"ĠContainers\":98293,\"ĠScholars\":98294,\".accuracy\":98295,\"ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½\":98296,\"åķı\":98297,\"=\\\"--\":98298,\"ĠWrestle\":98299,\"ĠGuantanamo\":98300,\"Ġnymph\":98301,\"(guess\":98302,\".setColumn\":98303,\"_tE\":98304,\".contentMode\":98305,\"Ġinvalidated\":98306,\"ĠShooter\":98307,\"ĠMater\":98308,\".Submit\":98309,\"Ġangled\":98310,\"navbarDropdown\":98311,\"Ao\":98312,\"Ġæµ\":98313,\"Ð¸ÑģÐº\":98314,\"ĠSCAN\":98315,\"ĉcm\":98316,\"ĠMarkt\":98317,\"truck\":98318,\";'Ċ\":98319,\"////////////////////////////////////////////////////////////////////////////////ĊĊ\":98320,\"Ġghetto\":98321,\"Ġbuiten\":98322,\"ĠClown\":98323,\":!\":98324,\"Ġchimpan\":98325,\"'field\":98326,\"ammo\":98327,\"ĠDepend\":98328,\")})\":98329,\"(FLAGS\":98330,\"ĠRCA\":98331,\"ĠChoir\":98332,\"LoginPage\":98333,\"ĠGord\":98334,\"Compact\":98335,\"-pocket\":98336,\"Ġconsultar\":98337,\"ĠIntercept\":98338,\"ÅŁtir\":98339,\"uetype\":98340,\"onents\":98341,\"ĠstartPosition\":98342,\"Ġposix\":98343,\"ĠWohnung\":98344,\"_EXPRESSION\":98345,\"ĠLoginActivity\":98346,\"(opcode\":98347,\"ĠTango\":98348,\"ĠNumberOf\":98349,\".overflow\":98350,\"ĠWCS\":98351,\"ĠOccupation\":98352,\"_cg\":98353,\".Topic\":98354,\"ĠCareers\":98355,\"ARATION\":98356,\".getLine\":98357,\"Ġì¢ħ\":98358,\"ĠNacht\":98359,\"ĠtoItem\":98360,\"inclusive\":98361,\"aviest\":98362,\"-appointed\":98363,\"(internal\":98364,\"CONTEXT\":98365,\"(digits\":98366,\"={\\\"/\":98367,\"Ġplaywright\":98368,\"Ġdeadliest\":98369,\"leads\":98370,\".PUT\":98371,\"Ġ*}ĊĊ\":98372,\"ĠPact\":98373,\"ĠDiscounts\":98374,\"LocalizedMessage\":98375,\"ĠMÃ¤nner\":98376,\"_>\":98377,\"Ġmascara\":98378,\"(Profile\":98379,\"åĬŁèĥ½\":98380,\"imitÃ©\":98381,\"Ġwildfires\":98382,\"-ROM\":98383,\".isOn\":98384,\"(groupId\":98385,\"Repair\":98386,\"accumulate\":98387,\"Ġ<\\\",\":98388,\"Ġhandwritten\":98389,\"Ġacheter\":98390,\"ĠMGM\":98391,\"ĠIrma\":98392,\"->{_\":98393,\"gee\":98394,\"criminal\":98395,\"Ġèĭ¥è¦ģ\":98396,\"Ġmomentarily\":98397,\"\\\")!=\":98398,\"_lit\":98399,\"ĠexpiresIn\":98400,\".\\\").\":98401,\"éķ¿åº¦\":98402,\"ĠfrÃ¦kke\":98403,\"vlc\":98404,\"Ġorbs\":98405,\"),$\":98406,\"Ġventured\":98407,\"/>\\\\\":98408,\"charm\":98409,\"Nuitka\":98410,\"eldig\":98411,\"atonin\":98412,\"Witness\":98413,\"-lat\":98414,\"ĠsetHidden\":98415,\"Ġrelics\":98416,\"Ġconsulate\":98417,\".IGNORE\":98418,\"\\\"After\":98419,\"ĠsetAddress\":98420,\"Ġbesteht\":98421,\"Ġ'')ĊĊ\":98422,\".xaxis\":98423,\"ĠserÃ£o\":98424,\"Ġmisled\":98425,\"_UNIFORM\":98426,\"ĠVIA\":98427,\"incr\":98428,\"Ġzenith\":98429,\"Ġviscosity\":98430,\"Ġthinly\":98431,\".getSharedPreferences\":98432,\".ErrorCode\":98433,\"\\\"),\\\"\":98434,\"ĠMillionen\":98435,\"Ġ/>)Ċ\":98436,\"ScrollIndicator\":98437,\"-seeking\":98438,\"ĠPOLITICO\":98439,\"asca\":98440,\"_rl\":98441,\"Navig\":98442,\"(fullfile\":98443,\"Ġsolitude\":98444,\"Ġjuven\":98445,\"Ġhauling\":98446,\"ĠMacros\":98447,\"ĠGry\":98448,\"Ġexercitation\":98449,\"ĠATTACK\":98450,\"TickCount\":98451,\"Ġrites\":98452,\"Ġdoe\":98453,\"ParticleSystem\":98454,\"Ġslu\":98455,\"WindowText\":98456,\"ĠClassName\":98457,\"Ġslander\":98458,\"ĉPort\":98459,\"jong\":98460,\"?a\":98461,\".Dial\":98462,\"âĢĶat\":98463,\"$objPHPExcel\":98464,\"Ġsoar\":98465,\"ENN\":98466,\"appeared\":98467,\"Ġquotid\":98468,\"emachine\":98469,\"Ġnip\":98470,\"Ġmicrotime\":98471,\"ĠAlma\":98472,\";!\":98473,\"------------------------------------------------------------------------------------------------\":98474,\"ĠPassage\":98475,\"Ġdumpsters\":98476,\"ĠExclude\":98477,\"Ġsuggestive\":98478,\"ĠCircularProgressIndicator\":98479,\"_clr\":98480,\"ArrayType\":98481,\"ILLA\":98482,\"ElapsedTime\":98483,\"Driven\":98484,\"ĠresourceName\":98485,\"ĠGarrison\":98486,\"serir\":98487,\"-ahead\":98488,\"Ġpinnacle\":98489,\"ĠEspresso\":98490,\"Sparse\":98491,\"Ġassays\":98492,\"ĠGirlfriend\":98493,\"imid\":98494,\"]='\\\\\":98495,\"ONGLONG\":98496,\"Ġportraying\":98497,\"Lane\":98498,\"ĠbÃºsqueda\":98499,\"Ġreinforcements\":98500,\"ĠSpreadsheet\":98501,\"ĠArrayCollection\":98502,\",arr\":98503,\"lightbox\":98504,\"icana\":98505,\"<\\\"\":98506,\"builders\":98507,\"Kid\":98508,\"ĠMatSnackBar\":98509,\"EXPR\":98510,\"odcast\":98511,\"ĠFoundations\":98512,\"Ġinds\":98513,\"='${\":98514,\"Fizz\":98515,\"-functional\":98516,\"(workspace\":98517,\"Ġstemmed\":98518,\"_patches\":98519,\"ĠJarvis\":98520,\"READING\":98521,\"Ġdisrespectful\":98522,\"ĠQDom\":98523,\"Ġ${Ċ\":98524,\"estatus\":98525,\"Reached\":98526,\"!.ĊĊ\":98527,\"ILT\":98528,\"ĠNDEBUG\":98529,\"ĠCourage\":98530,\"birthdate\":98531,\"ĠTing\":98532,\"Ġutilizado\":98533,\"Ã¡nchez\":98534,\"Outdoor\":98535,\"Ġhandguns\":98536,\"RefCount\":98537,\"ÉĻ\":98538,\"romo\":98539,\"Ġtts\":98540,\".She\":98541,\"ĠPane\":98542,\"ãĢĳ,ãĢĲ\":98543,\"ĠIOCTL\":98544,\"/black\":98545,\"inscription\":98546,\"Ġbiopsy\":98547,\"ĠTimeInterval\":98548,\".TestCheck\":98549,\"ĠGUIStyle\":98550,\"ĠCapability\":98551,\"ĠBeitrag\":98552,\"donnees\":98553,\"Treatment\":98554,\".backup\":98555,\"Ġsignings\":98556,\"ĠBoca\":98557,\"drm\":98558,\".MAIN\":98559,\"Ġgoede\":98560,\"ĠMarkup\":98561,\"GREE\":98562,\"ĠBaseService\":98563,\".Creator\":98564,\"Ġjails\":98565,\"ĠKahn\":98566,\"IpAddress\":98567,\"ACHI\":98568,\"Ġinhibited\":98569,\"Ġ@$_\":98570,\"ĠAssass\":98571,\"Ġenviado\":98572,\"Heroes\":98573,\"ÐŁÐµÑĢ\":98574,\"ĠMaven\":98575,\".ls\":98576,\"Ġive\":98577,\"|RF\":98578,\"ĠresizeMode\":98579,\"Ġrumpe\":98580,\"_attachments\":98581,\"TU\":98582,\"Ġtactile\":98583,\"Attempting\":98584,\"Ġrobin\":98585,\"yaw\":98586,\"Ġmercenaries\":98587,\"ĠHabitat\":98588,\"enddate\":98589,\"Ġoxy\":98590,\"ĉRandom\":98591,\"ohon\":98592,\"IsNull\":98593,\"ĠValidationResult\":98594,\"ãĥļ\":98595,\"umbed\":98596,\"ppv\":98597,\"Ġarp\":98598,\"ichick\":98599,\"_rnn\":98600,\"ĠTFT\":98601,\"TexImage\":98602,\"\\\"On\":98603,\"ĠSampler\":98604,\"topl\":98605,\"Ġjane\":98606,\"yling\":98607,\"ĠUNICODE\":98608,\"TabIndex\":98609,\"<{Ċ\":98610,\"suspend\":98611,\"uvian\":98612,\",application\":98613,\"Ð¾Ð»Ð¸ÑĩÐµÑģÑĤÐ²Ð¾\":98614,\"yat\":98615,\"ezier\":98616,\"ĠCHUNK\":98617,\"ĠAdler\":98618,\"/Add\":98619,\"ĠKeyValue\":98620,\"ĠsposÃ³b\":98621,\"Sampling\":98622,\"chers\":98623,\"_AMD\":98624,\"Ru\":98625,\".MustCompile\":98626,\"Nation\":98627,\"Assoc\":98628,\"Managing\":98629,\"ĠEngl\":98630,\"_GB\":98631,\"Ġsuccinct\":98632,\"Ġdisliked\":98633,\"ĠIke\":98634,\"Bulletin\":98635,\"_ARCHIVE\":98636,\"Proposal\":98637,\"Ġjogging\":98638,\".CREATED\":98639,\"Ġchol\":98640,\"è£ħ\":98641,\"Į¨\":98642,\"-push\":98643,\"Ġreserva\":98644,\"corev\":98645,\"Ã¨tre\":98646,\"THR\":98647,\"Ġincompetence\":98648,\"Ġcharisma\":98649,\"æĦŁ\":98650,\"Ġ\\\"==\":98651,\"BTN\":98652,\"ĠLocator\":98653,\"ivet\":98654,\"('.')Ċ\":98655,\"ĠforIndexPath\":98656,\"Ã´me\":98657,\"Ġcapacit\":98658,\"waters\":98659,\"ĠWRONG\":98660,\"hoa\":98661,\"ĠMIPS\":98662,\"Ġemiss\":98663,\"ĠJacqueline\":98664,\"(cmp\":98665,\"Ġeens\":98666,\"Leo\":98667,\".timing\":98668,\"CLUSION\":98669,\"Ġ(\\\"-\":98670,\"åĵĪ\":98671,\".kode\":98672,\"ĠUndert\":98673,\"Ġbewild\":98674,\"ĠEssen\":98675,\".hd\":98676,\"Ġrenegot\":98677,\"Ġmower\":98678,\"Ġlsp\":98679,\"Ġpenchant\":98680,\"Ġmanoe\":98681,\"Ġagli\":98682,\"Ġrecal\":98683,\"ĠOPERATION\":98684,\"(^)(\":98685,\"ĠÎ½\":98686,\"ĠScoped\":98687,\"Ġ@\\\"Ċ\":98688,\"=label\":98689,\"[loc\":98690,\"Intl\":98691,\"ĠNz\":98692,\"tablet\":98693,\".ColumnName\":98694,\"ĠscreenSize\":98695,\"DBus\":98696,\"cooked\":98697,\"-registration\":98698,\"âĢľOne\":98699,\"-non\":98700,\"ĠwiÄĻc\":98701,\"Ġcosta\":98702,\".addTab\":98703,\".conditions\":98704,\"ĠHess\":98705,\"MEMORY\":98706,\"ĠAvalanche\":98707,\"()}}Ċ\":98708,\"Ġtriplet\":98709,\"Ġlabyrinth\":98710,\"ĠNodeList\":98711,\"ĠNYT\":98712,\"Ġyeni\":98713,\"dff\":98714,\".HtmlControls\":98715,\"AVIS\":98716,\"/Math\":98717,\"Ġmemcmp\":98718,\"Ø§Ø¡\":98719,\"Ð¾ÑģÑĮ\":98720,\"crap\":98721,\"(pages\":98722,\"Ġlxml\":98723,\"ĠQDateTime\":98724,\"_tcb\":98725,\"Ġopenid\":98726,\"Ġsynaptic\":98727,\"ĠMDMA\":98728,\"(slug\":98729,\"igmatic\":98730,\"enor\":98731,\"Ġcramped\":98732,\"GOP\":98733,\"ŃĲ\":98734,\".isFile\":98735,\"ĠDifferential\":98736,\"Ġ=\\\"\\\";Ċ\":98737,\"ĉĉĉĠĠĠĠĉ\":98738,\"ĠCooke\":98739,\"ĉUFUNCTION\":98740,\"Ġperseverance\":98741,\"RelativeLayout\":98742,\"IMPORTANT\":98743,\"Ġexon\":98744,\"ĠÐ¾Ð½\":98745,\"ibase\":98746,\"(CONT\":98747,\"novation\":98748,\"ä½ķ\":98749,\"[sub\":98750,\"AdminController\":98751,\"HTTPHeader\":98752,\"crear\":98753,\"ĠNIR\":98754,\"ĠDropDownList\":98755,\"Ġvalide\":98756,\"Ġdehydration\":98757,\".']\":98758,\"(WIN\":98759,\"Ġ...\\\\\":98760,\"Ġphotoshop\":98761,\"ĉInit\":98762,\"_cou\":98763,\"ĠtimeZone\":98764,\"darwin\":98765,\"romatic\":98766,\"NavigationItemSelectedListener\":98767,\"brates\":98768,\"]--;Ċ\":98769,\"Ġtragedies\":98770,\"ĠPediatrics\":98771,\"SMART\":98772,\"-API\":98773,\"ĠMessageLookup\":98774,\"ĉvo\":98775,\"Ġprejudices\":98776,\"ĠmA\":98777,\"Ups\":98778,\"ĠMISSING\":98779,\"ĉad\":98780,\"Cream\":98781,\"ĠTb\":98782,\"ĠMona\":98783,\"_ghost\":98784,\"ĉtypes\":98785,\"Emb\":98786,\"ĠDocumentary\":98787,\"');ĊĊĊĊ\":98788,\"Ġlup\":98789,\"_Reference\":98790,\"ĠBATCH\":98791,\"Ġintertwined\":98792,\"<Cell\":98793,\"ĠCabr\":98794,\"nation\":98795,\"ĠisConnected\":98796,\".removeListener\":98797,\"Ġcong\":98798,\"_ti\":98799,\"ĠSilicone\":98800,\"Ġê²°ê³¼\":98801,\"ĠWAN\":98802,\"ĠGibraltar\":98803,\"/response\":98804,\"ĉperson\":98805,\"chants\":98806,\"VIP\":98807,\"emergency\":98808,\"PixelFormat\":98809,\"-Am\":98810,\"Ġsouthwestern\":98811,\"_pll\":98812,\"ifers\":98813,\"_ONCE\":98814,\"ĠFayette\":98815,\".ncbi\":98816,\"_Panel\":98817,\".Qual\":98818,\"Ġpolys\":98819,\"ĠcreateStackNavigator\":98820,\"ï¿½t\":98821,\"Ġlayoffs\":98822,\"ĠBlanco\":98823,\"Feat\":98824,\"ĠVimeo\":98825,\"_chi\":98826,\"_lifetime\":98827,\"POINTS\":98828,\",private\":98829,\"Ġunbearable\":98830,\"printing\":98831,\"Ġcgi\":98832,\".BACK\":98833,\"Ġinterns\":98834,\"ĠNewly\":98835,\"infeld\":98836,\"(IB\":98837,\"ĠKata\":98838,\"ĠDefendants\":98839,\"Thr\":98840,\"é¢Ħ\":98841,\"_VF\":98842,\"FFFFFFFF\":98843,\"Ġdavidjl\":98844,\"Ġbitterly\":98845,\"Suggestions\":98846,\".setCancelable\":98847,\"FINAL\":98848,\"asons\":98849,\"_rwlock\":98850,\"_WRAPPER\":98851,\"Ġhappiest\":98852,\"(rowIndex\":98853,\"Ã³sito\":98854,\"TOTYPE\":98855,\"Automation\":98856,\"LogFile\":98857,\"Ġconsolation\":98858,\"ãĥĢ\":98859,\"ĠtÃªm\":98860,\"Ġprer\":98861,\"rgyz\":98862,\"ĠGeg\":98863,\"ĉdto\":98864,\".defaultValue\":98865,\"ĠKami\":98866,\"ĠASE\":98867,\"optimized\":98868,\"Ġíı¬\":98869,\"Ġoriginates\":98870,\"errMsg\":98871,\"ĠespaÃ§o\":98872,\"(SYS\":98873,\"ĠMcB\":98874,\"dance\":98875,\"_detected\":98876,\"ĠfrÃ¼\":98877,\"ĉĉĠĠĠĠĉĉ\":98878,\"<Date\":98879,\"(comb\":98880,\"ĠDecide\":98881,\"\\\\Field\":98882,\"ĠProposed\":98883,\"Rib\":98884,\"Ġdislikes\":98885,\"ĠWien\":98886,\"ĉDocument\":98887,\"Ġtraf\":98888,\"Ġstoria\":98889,\"ĠTells\":98890,\"')==\":98891,\"Cri\":98892,\"(VALUE\":98893,\"ĠBurnett\":98894,\",void\":98895,\"Ġdanh\":98896,\"Ġccp\":98897,\"Blockchain\":98898,\":\\\"-\\\"`Ċ\":98899,\"IClient\":98900,\"ISODE\":98901,\"Issuer\":98902,\")}čĊ\":98903,\",but\":98904,\"ĠUph\":98905,\"(Sub\":98906,\"ĠtÃ©lÃ©phone\":98907,\"ĠonDataChange\":98908,\"Ġmarshaller\":98909,\"-analytics\":98910,\",content\":98911,\"Ġdebacle\":98912,\"_ValueChanged\":98913,\"Ġfauna\":98914,\"Ġ#=>\":98915,\"Ġfoyer\":98916,\"'utilisation\":98917,\"ĠMÃ¼ller\":98918,\"ĠFetish\":98919,\"ĠdefaultManager\":98920,\"Ġbacktrack\":98921,\"Bah\":98922,\"Explicit\":98923,\"_ASCII\":98924,\"ĠmActivity\":98925,\"(Msg\":98926,\"Ġê²Į\":98927,\"ĠTERMS\":98928,\"ĠAngie\":98929,\"HSV\":98930,\"ĠMosque\":98931,\".Names\":98932,\"íĬ¼\":98933,\"reste\":98934,\"_parms\":98935,\"Ġgaping\":98936,\"Ġcropping\":98937,\"DataFrame\":98938,\"Ġresponsiveness\":98939,\"_undo\":98940,\"_tran\":98941,\".terminate\":98942,\"Ġitaliane\":98943,\"Ġwalkthrough\":98944,\"Ġattractiveness\":98945,\"Ð´Ðµ\":98946,\"_STS\":98947,\"_learn\":98948,\"Ġchocolates\":98949,\"ierarchical\":98950,\"-thinking\":98951,\"Ġ)))\":98952,\"ishments\":98953,\".Logf\":98954,\"ĠTMZ\":98955,\"ĠCanary\":98956,\"foil\":98957,\"ĠVaccine\":98958,\".vx\":98959,\"ĠSurround\":98960,\"Intermediate\":98961,\"Ġiov\":98962,\"vais\":98963,\"';\\\";Ċ\":98964,\"ï½ŀĊĊ\":98965,\"éĢģæĸĻ\":98966,\"âĢ¦it\":98967,\"Seats\":98968,\"Clar\":98969,\"Wars\":98970,\"ĠHutchinson\":98971,\"ĠHasan\":98972,\"!')ĊĊ\":98973,\"ĠRichie\":98974,\"cheiden\":98975,\"($('\":98976,\"York\":98977,\"Ġlids\":98978,\"Ġalphanumeric\":98979,\"ĠGlock\":98980,\".shapes\":98981,\"Ġsparking\":98982,\"_epsilon\":98983,\"uplicated\":98984,\".dirty\":98985,\"])==\":98986,\"ĠìľĦì¹ĺ\":98987,\"Ġscn\":98988,\"Ġ/****************************************************************\":98989,\"_PREVIEW\":98990,\"_HC\":98991,\"ielding\":98992,\"fgets\":98993,\"ĠAddison\":98994,\"ĠproductService\":98995,\"-figure\":98996,\"(retval\":98997,\"zano\":98998,\"Ġautob\":98999,\"ĉsd\":99000,\"_numer\":99001,\"ĠSetLastError\":99002,\"ĠFior\":99003,\"ificance\":99004,\"Untitled\":99005,\"Ġinfield\":99006,\"Ġ{}));Ċ\":99007,\"Ġspac\":99008,\"Ġrookies\":99009,\"(describing\":99010,\"ngen\":99011,\"à®¿à®\":99012,\".rdf\":99013,\".Mutex\":99014,\"Ġkneeling\":99015,\"ĠQE\":99016,\"setMax\":99017,\"ReadStream\":99018,\"Ġventas\":99019,\"sut\":99020,\"cmpeq\":99021,\".WriteAllText\":99022,\"ĠExperienced\":99023,\"$__\":99024,\"Ġkaum\":99025,\"ĠLIS\":99026,\"Ġdocumentos\":99027,\"_HEALTH\":99028,\"icontains\":99029,\"Ġartisans\":99030,\"OWNER\":99031,\"Ġblinked\":99032,\"getDisplay\":99033,\"Ġtoen\":99034,\"ĠrowNum\":99035,\"Ġavril\":99036,\"Ġinvis\":99037,\"ĠKear\":99038,\"toBeInTheDocument\":99039,\"apur\":99040,\"Ġracked\":99041,\"ĠMcMaster\":99042,\"_ATTRIB\":99043,\"Haz\":99044,\"Ġfactura\":99045,\"/ts\":99046,\"ĠÑĢÐ°Ð·Ð¼ÐµÑĢ\":99047,\"Ġzf\":99048,\"Ġshortfall\":99049,\".fasta\":99050,\"ĠCONSTANT\":99051,\".managed\":99052,\"gems\":99053,\"SharedPointer\":99054,\"Ġblurry\":99055,\"brightness\":99056,\"(components\":99057,\"Ġ...\\\"ĊĊ\":99058,\"SELL\":99059,\"ĠIllustrator\":99060,\".getChannel\":99061,\"ĠtrouvÃ©\":99062,\"ysters\":99063,\"Ġvois\":99064,\"ĠLinden\":99065,\"Ġemojis\":99066,\"Ġbrawl\":99067,\"ĠMSR\":99068,\"ĠElo\":99069,\"ĠCroatian\":99070,\"PopupMenu\":99071,\"Lewis\":99072,\".JWT\":99073,\"Ġastonished\":99074,\"Bush\":99075,\"(itemId\":99076,\"Ġdetachment\":99077,\"ĠEncore\":99078,\"å°Ķ\":99079,\"Ġrekl\":99080,\"Ġcram\":99081,\")$/\":99082,\".getHost\":99083,\"_recommend\":99084,\"-HT\":99085,\"_calibration\":99086,\"Authenticate\":99087,\".firebaseapp\":99088,\"UNIX\":99089,\"ĉCamera\":99090,\"ĠHEAP\":99091,\"Ideal\":99092,\".office\":99093,\"Ġgoofy\":99094,\"(Symbol\":99095,\"Ġjouer\":99096,\"_partitions\":99097,\"Ġrapidement\":99098,\"ĠGNUNET\":99099,\"idUser\":99100,\"Ġsupervise\":99101,\"(Contact\":99102,\"AWN\":99103,\"ãģĺ\":99104,\"Ġnaam\":99105,\"Ġaust\":99106,\"åľ¨çº¿\":99107,\"_softmax\":99108,\"AllowAnonymous\":99109,\"ammable\":99110,\"ROUTE\":99111,\"*D\":99112,\"Ġaden\":99113,\"ĠCristina\":99114,\"ĠCristiano\":99115,\"Ġbloodstream\":99116,\"subclass\":99117,\"_persona\":99118,\"CHILD\":99119,\"-know\":99120,\"ĠnavigationOptions\":99121,\"ĠZukunft\":99122,\"ĠPixar\":99123,\"Tyler\":99124,\"Ġunderworld\":99125,\"Ġsincerity\":99126,\"Ġdispenser\":99127,\"Ġkter\":99128,\"idders\":99129,\".addNode\":99130,\"-checked\":99131,\"Ġkeyst\":99132,\"ĠWTO\":99133,\".signals\":99134,\"Ġadventurer\":99135,\"ĠPang\":99136,\"\\\\R\":99137,\"=pos\":99138,\"Ġdispensaries\":99139,\"ĠCloset\":99140,\"(\\\"{\\\\\\\"\":99141,\"ideon\":99142,\"ĠnÃ©cessaire\":99143,\"()\\\"Ċ\":99144,\"_RECEIVED\":99145,\"ĠrÃ©sultats\":99146,\"Ġmoden\":99147,\"ĠIcelandic\":99148,\";d\":99149,\".allowed\":99150,\"(newUser\":99151,\"Ġmerciless\":99152,\".WaitFor\":99153,\"Ġdaycare\":99154,\"ĠConveyor\":99155,\"çĸ\":99156,\"ð¬\":99157,\"çĥ\":99158,\"çĹ\":99159,\"çł\":99160,\"èĦ\":99161,\"é²\":99162,\"å¦\":99163,\"çĿĢ\":99164,\"å¾Ī\":99165,\"éħ\":99166,\"çĭ\":99167,\"éª\":99168,\"æĤ\":99169,\"é¥\":99170,\"èħ\":99171,\"æĥ³\":99172,\"å¨\":99173,\"é¹\":99174,\"çĤ\":99175,\"åĴ\":99176,\"çĮ\":99177,\"è´¨\":99178,\"æ¢\":99179,\"æ°Ķ\":99180,\"ð«\":99181,\"æķĻ\":99182,\"çŁ\":99183,\"åĦ\":99184,\"åıĳå±ķ\":99185,\"åĪĽ\":99186,\"èĳ\":99187,\"æħ\":99188,\"åŀ\":99189,\"åģļ\":99190,\"æĪĺ\":99191,\"æĲ\":99192,\"å¼º\":99193,\"æ·±\":99194,\"åĩł\":99195,\"ç¿\":99196,\"å©\":99197,\"èŀ\":99198,\"å§Ķ\":99199,\"åĲĦ\":99200,\"èİ\":99201,\"é¸\":99202,\"éº\":99203,\"åıĹ\":99204,\"èģĮ\":99205,\"åĺ\":99206,\"æ½\":99207,\"é£İ\":99208,\"èĲ¥\":99209,\"åħļ\":99210,\"èľ\":99211,\"éĤ£\":99212,\"é¢Ĩ\":99213,\"çĳ\":99214,\"é³\":99215,\"æľ¯\":99216,\"ä»Ģ\":99217,\"æĪ¿\":99218,\"ç²¾\":99219,\"åª\":99220,\"éĨ\":99221,\"å¤ª\":99222,\"èĤ¡\":99223,\"èĽ\":99224,\"åħī\":99225,\"æŀģ\":99226,\"åĬŀ\":99227,\"èĵ\":99228,\"çĺ\":99229,\"å´\":99230,\"åĹ\":99231,\"èĬ±\":99232,\"çłĶ\":99233,\"å¿«\":99234,\"å¸Ī\":99235,\"è¶Ĭ\":99236,\"è§Ĥ\":99237,\"æ¤\":99238,\"æ¦\":99239,\"çŀ\":99240,\"èĤ²\":99241,\"çĪ±\":99242,\"çĻ½\":99243,\"ä¸ĸ\":99244,\"ä»Ģä¹Ī\":99245,\"çľ¼\":99246,\"å³\":99247,\"èĴ\":99248,\"æĵ\":99249,\"è¢«\":99250,\"å¹²\":99251,\"çĹħ\":99252,\"å£«\":99253,\"çĴ\":99254,\"è¸\":99255,\"æ¾\":99256,\"å·¥ä½ľ\":99257,\"è®©\":99258,\"çĥŃ\":99259,\"è¾ĥ\":99260,\"åĦ¿\":99261,\"åĬ©\":99262,\"ç§¯\":99263,\"ç³\":99264,\"çĵ\":99265,\"ç£\":99266,\"åĤ\":99267,\"è¹\":99268,\"èļ\":99269,\"å·±\":99270,\"çĻ¾\":99271,\"åĬ¿\":99272,\"èµĽ\":99273,\"æ¨\":99274,\"æ¿\":99275,\"èĸ\":99276,\"æĿĳ\":99277,\"å¸¦\":99278,\"å¢ĥ\":99279,\"æĬ¤\":99280,\"éŃ\":99281,\"å«\":99282,\"èĩªå·±\":99283,\"æµİ\":99284,\"ä½İ\":99285,\"åĮ»\":99286,\"éĺ²\":99287,\"åĨľ\":99288,\"èĨ\":99289,\"çĨ\":99290,\"é«\":99291,\"åĨĽ\":99292,\"æĪı\":99293,\"åįĩ\":99294,\"æĸ¯\":99295,\"ä½ı\":99296,\"èĲ½\":99297,\"åħ»\":99298,\"èĩ´\":99299,\"çĬ\":99300,\"çĩ\":99301,\"çħ\":99302,\"èĶ\":99303,\"ä¼ģä¸ļ\":99304,\"åĽ¢\":99305,\"æīį\":99306,\"æł¡\":99307,\"åĩĨ\":99308,\"å¥ĩ\":99309,\"åī¯\":99310,\"é¼\":99311,\"æ¼Ķ\":99312,\"é©¬\":99313,\"èµ°\":99314,\"ç¥ŀ\":99315,\"åħĭ\":99316,\"æľĽ\":99317,\"æ²¹\":99318,\"è¾¹\":99319,\"åįĥ\":99320,\"å¾Ģ\":99321,\"åĪĩ\":99322,\"æ©\":99323,\"ç¶\":99324,\"åĻ\":99325,\"éĻħ\":99326,\"çīĮ\":99327,\"ç¤¾ä¼ļ\":99328,\"æ¸¸æĪı\":99329,\"æĸ½\":99330,\"çħ§\":99331,\"æİ§\":99332,\"æ»¡\":99333,\"è¯Ĩ\":99334,\"éĩįè¦ģ\":99335,\"è¶³\":99336,\"çķĻ\":99337,\"ç»Ĩ\":99338,\"åįı\":99339,\"éĢĤ\":99340,\"æĩ\":99341,\"æ§\":99342,\"éĦ\":99343,\"èĿ\":99344,\"å¸Ĥåľº\":99345,\"ç»ıæµİ\":99346,\"ä¹ł\":99347,\"æĸĩåĮĸ\":99348,\"éļ¾\":99349,\"ä¹Ĳ\":99350,\"åĨ³\":99351,\"æ¬¢\":99352,\"è§ī\":99353,\"åĽŃ\":99354,\"åħ´\":99355,\"åħħ\":99356,\"ä¸¾\":99357,\"æī¹\":99358,\"èķ\":99359,\"æĬĬ\":99360,\"æĬĢæľ¯\":99361,\"ç©¶\":99362,\"ç¬¬ä¸Ģ\":99363,\"ä¾¿\":99364,\"åĵį\":99365,\"çİ©\":99366,\"åĿļ\":99367,\"èŀį\":99368,\"åįĬ\":99369,\"åĸľ\":99370,\"å±Ĥ\":99371,\"ç¦»\":99372,\"ä»ħ\":99373,\"éŁ\":99374,\"åĳ³\":99375,\"å¿µ\":99376,\"åŃ£\":99377,\"ç´§\":99378,\"ä¹ħ\":99379,\"é¤\":99380,\"éŀ\":99381,\"è¤\":99382,\"åĢĻ\":99383,\"åĨµ\":99384,\"çŁ³\":99385,\"åģ¥\":99386,\"æĢİ\":99387,\"å®Ŀ\":99388,\"è¡Ģ\":99389,\"åŁŁ\":99390,\"æĹ©\":99391,\"çŁ¥éģĵ\":99392,\"è´Ł\":99393,\"åįļ\":99394,\"å·´\":99395,\"äº²\":99396,\"å±ŀ\":99397,\"ä¸¥\":99398,\"äºī\":99399,\"å¯Ł\":99400,\"èº\":99401,\"ç°\":99402,\"å»ºè®¾\":99403,\"äº§ä¸ļ\":99404,\"åĲĥ\":99405,\"åŃ©\":99406,\"æĹħ\":99407,\"æł¹\":99408,\"æĿĲ\":99409,\"ä¼Ĺ\":99410,\"éļı\":99411,\"å®ĺ\":99412,\"åºķ\":99413,\"å½©\":99414,\"å¯Į\":99415,\"æ¸©\":99416,\"åį«\":99417,\"åī§\":99418,\"çĽĬ\":99419,\"æĬĹ\":99420,\"è´¢\":99421,\"çºª\":99422,\"æĨ\":99423,\"çĶŁæ´»\":99424,\"çº¢\":99425,\"çĶŁäº§\":99426,\"è¿ľ\":99427,\"éĴ±\":99428,\"åĶ®\":99429,\"ç¾¤\":99430,\"çıŃ\":99431,\"æ¥¼\":99432,\"éĩĩ\":99433,\"èīº\":99434,\"å±ħ\":99435,\"åģĩ\":99436,\"è°Ī\":99437,\"æĻļ\":99438,\"é¬\":99439,\"èĪª\":99440,\"å®³\":99441,\"èĹ\":99442,\"çį\":99443,\"åµ\":99444,\"çİĭ\":99445,\"åº·\":99446,\"èİ·\":99447,\"ç»Ń\":99448,\"äºļ\":99449,\"é£Ł\":99450,\"åİĭ\":99451,\"æĭĽ\":99452,\"èĮĥ\":99453,\"è®¸\":99454,\"åĽ´\":99455,\"é½\":99456,\"éĻį\":99457,\"çº³\":99458,\"åĵª\":99459,\"æķĻèĤ²\":99460,\"å·²ç»ı\":99461,\"å¾·\":99462,\"æŀĹ\":99463,\"å®īåħ¨\":99464,\"é¾Ļ\":99465,\"å¤§å®¶\":99466,\"éĿĴ\":99467,\"åºľ\":99468,\"æ²³\":99469,\"åı¤\":99470,\"èį¯\":99471,\"åĿĩ\":99472,\"æĻº\":99473,\"ä¹¡\":99474,\"çķ¥\":99475,\"åĨ·\":99476,\"ç¦ı\":99477,\"å®¤\":99478,\"ç»´\":99479,\"æī¿\":99480,\"å±Ĭ\":99481,\"è¯ī\":99482,\"åĪ»\":99483,\"èŁ\":99484,\"æª\":99485,\"å°±æĺ¯\":99486,\"è¿Ļä¸ª\":99487,\"ä¸Ńå¿ĥ\":99488,\"ä¸ĸçķĮ\":99489,\"åŁİå¸Ĥ\":99490,\"éĿŀå¸¸\":99491,\"åĪĴ\":99492,\"åıĮ\":99493,\"æĢİä¹Ī\":99494,\"åĪ°äºĨ\":99495,\"æľĥ\":99496,\"åı²\":99497,\"ä¾Ĩ\":99498,\"å¾ĭ\":99499,\"å¥ĸ\":99500,\"ç»Ī\":99501,\"åªĴ\":99502,\"å®ģ\":99503,\"è¯¾\":99504,\"èģĮä¸ļ\":99505,\"åħį\":99506,\"æµĭ\":99507,\"æĢ¥\":99508,\"æķĳ\":99509,\"çĭ¬\":99510,\"èŃ¦\":99511,\"é¤Ĳ\":99512,\"æĦ¿\":99513,\"è´«\":99514,\"çĸĳ\":99515,\"åļ\":99516,\"å¥¹\":99517,\"åıĪ\":99518,\"åĽłä¸º\":99519,\"ä¸įæĺ¯\":99520,\"å¤Ł\":99521,\"æĸ¹éĿ¢\":99522,\"éķĩ\":99523,\"äºĴ\":99524,\"éħĴ\":99525,\"è®²\":99526,\"çĸĹ\":99527,\"æĺ¥\":99528,\"æ¹ĸ\":99529,\"å¤ľ\":99530,\"è´£ä»»\":99531,\"äººæ°ĳ\":99532,\"åħ°\":99533,\"çŁŃ\":99534,\"æķħ\":99535,\"åĩı\":99536,\"æĻ®\":99537,\"äº®\":99538,\"ä¾Ŀ\":99539,\"åį°\":99540,\"éĿĻ\":99541,\"åĢĭ\":99542,\"å¾ģ\":99543,\"åĲ¸\":99544,\"ç¼º\":99545,\"æĶ»\":99546,\"åĩĢ\":99547,\"åħ¸\":99548,\"åĽº\":99549,\"è®¿\":99550,\"ç¹\":99551,\"çĢ\":99552,\"æıĲä¾Ľ\":99553,\"ç»ĩ\":99554,\"å¾Īå¤ļ\":99555,\"çłĶç©¶\":99556,\"è·Ł\":99557,\"ä¸»è¦ģ\":99558,\"æĥħåĨµ\":99559,\"çŃĸ\":99560,\"æŃ»\":99561,\"å¤§åŃ¦\":99562,\"æĶ¿åºľ\":99563,\"å½±åĵį\":99564,\"ä¹°\":99565,\"åħŃ\":99566,\"éĻ©\":99567,\"åħ«\":99568,\"æŁĲ\":99569,\"è´¨éĩı\":99570,\"åįł\":99571,\"å·®\":99572,\"æĽ´å¤ļ\":99573,\"æľĭ\":99574,\"éĿ©\":99575,\"å®£\":99576,\"çł´\":99577,\"è½»\":99578,\"åº§\":99579,\"æĺ¾\":99580,\"ç¨³\":99581,\"è´µ\":99582,\"èĥĮ\":99583,\"èī¯\":99584,\"çĸ«\":99585,\"æ¯Ĵ\":99586,\"ä¹İ\":99587,\"åĢŁ\":99588,\"è¿·\":99589,\"çŃĶ\":99590,\"æ¿Ģ\":99591,\"åĳ¼\":99592,\"äºĨä¸Ģ\":99593,\"è¶£\":99594,\"ä¼´\":99595,\"ä¼Ļ\":99596,\"è¼\":99597,\"ð¬Ń\":99598,\"åĽ½å®¶\":99599,\"æ´»åĬ¨\":99600,\"çİ°åľ¨\":99601,\"ç§ĳæĬĢ\":99602,\"åį¡\":99603,\"ä¸įåĲĮ\":99604,\"ä¸ªäºº\":99605,\"è®°èĢħ\":99606,\"ä¸įæĸŃ\":99607,\"éĹ»\":99608,\"ä¹Ŀ\":99609,\"èĳĹ\":99610,\"ç»¼\":99611,\"ä¸ĥ\":99612,\"æłĳ\":99613,\"æľĭåıĭ\":99614,\"åįĸ\":99615,\"ä¼¤\":99616,\"æ²Ļ\":99617,\"åĸĦ\":99618,\"å¥Ĺ\":99619,\"è½®\":99620,\"ç©¿\":99621,\"è¡¥\":99622,\"ä¸Ģå®ļ\":99623,\"çªģ\":99624,\"çĿ£\":99625,\"è¿½\":99626,\"å¨ģ\":99627,\"åı¦\":99628,\"åĽ°\":99629,\"æŀ¶\":99630,\"ç»Ŀ\":99631,\"æķ£\":99632,\"æİ¢\":99633,\"æ´Ĺ\":99634,\"ä¸´\":99635,\"ä¼¼\":99636,\"è´¸\":99637,\"ä¸°\":99638,\"æĺ¯ä¸Ģ\":99639,\"ç«ŀ\":99640,\"è¿İ\":99641,\"èģļ\":99642,\"è«\":99643,\"æįŁ\":99644,\"æī§\":99645,\"é©¾\":99646,\"è¿Ŀ\":99647,\"è¥\":99648,\"èł\":99649,\"ä»ĸä»¬\":99650,\"æĹ¶åĢĻ\":99651,\"å®ĥ\":99652,\"äººåĳĺ\":99653,\"è¿Ļæł·\":99654,\"å·¥ç¨ĭ\":99655,\"åĪĽæĸ°\":99656,\"åŃ©åŃĲ\":99657,\"å¸Į\":99658,\"éĥ¨åĪĨ\":99659,\"éĵ¶\":99660,\"ä»£è¡¨\":99661,\"é¦Ļ\":99662,\"å¸®\":99663,\"æİ¨è¿Ľ\":99664,\"çĽĺ\":99665,\"ç§¯æŀģ\":99666,\"éĥ¨éĹ¨\":99667,\"åŁ¹\":99668,\"æŃ¦\":99669,\"ä¸įä¼ļ\":99670,\"çŃĳ\":99671,\"éĢĻ\":99672,\"çİ©å®¶\":99673,\"æĭ¿\":99674,\"åİĤ\":99675,\"æ¯Ľ\":99676,\"çģµ\":99677,\"æŃĮ\":99678,\"ç»¿\":99679,\"å¦Ī\":99680,\"çĽĽ\":99681,\"é¦Ĩ\":99682,\"é¡º\":99683,\"èĦ¸\":99684,\"å°¼\":99685,\"ä¸½\":99686,\"å¥¥\":99687,\"éģĩ\":99688,\"è¯į\":99689,\"å°ģ\":99690,\"ä¸Ŀ\":99691,\"å¥½çļĦ\":99692,\"æĭħ\":99693,\"èĦ±\":99694,\"æģ¶\":99695,\"åİļ\":99696,\"åĬ³\":99697,\"çĽŁ\":99698,\"æĬĺ\":99699,\"åı¥\":99700,\"æĢĢ\":99701,\"æŁĵ\":99702,\"ä¹¦è®°\":99703,\"åĨł\":99704,\"é²ľ\":99705,\"æ¦Ĥ\":99706,\"éļĲ\":99707,\"å¹ħ\":99708,\"èµŀ\":99709,\"å¹ķ\":99710,\"æ¥Ń\":99711,\"éģĹ\":99712,\"åĪ¤\":99713,\"èĺ\":99714,\"å¶\":99715,\"æĬķèµĦ\":99716,\"è¡Įä¸ļ\":99717,\"äºĳ\":99718,\"çİ¯å¢ĥ\":99719,\"åŃ¦çĶŁ\":99720,\"åĲĪä½ľ\":99721,\"åģ¥åº·\":99722,\"é£ŀ\":99723,\"ä¸ĢæŃ¥\":99724,\"ä¸ĢçĽ´\":99725,\"åıĳçĶŁ\":99726,\"éĺ¿\":99727,\"é¢Ĩå¯¼\":99728,\"åĸľæ¬¢\":99729,\"åºĶè¯¥\":99730,\"çĤº\":99731,\"è®Ń\":99732,\"æĿĢ\":99733,\"æ¸¯\":99734,\"äº¤éĢļ\":99735,\"éĺ¶\":99736,\"éĴ¢\":99737,\"ä»¤\":99738,\"å°½\":99739,\"æ¯į\":99740,\"è¡£\":99741,\"ç²ī\":99742,\"é¡¶\":99743,\"ä¹Łä¸į\":99744,\"æĬĵ\":99745,\"èĭ¦\":99746,\"å¹¸\":99747,\"ç¤¼\":99748,\"ç¬¬ä¸ī\":99749,\"å¤§çļĦ\":99750,\"éģİ\":99751,\"çĥŁ\":99752,\"éģ¿\":99753,\"ä»į\":99754,\"åºĨ\":99755,\"æĢķ\":99756,\"è°¢\":99757,\"çĽĸ\":99758,\"å°Ħ\":99759,\"éľ²\":99760,\"æĸĹ\":99761,\"çĬ¶\":99762,\"åŃ¸\":99763,\"æ¯ķ\":99764,\"å·¨\":99765,\"çŁ¿\":99766,\"çļĩ\":99767,\"å¸Ń\":99768,\"çĹĩ\":99769,\"æī¬\":99770,\"å»¶\":99771,\"ä¾§\":99772,\"æ·¡\":99773,\"çļĦä¸Ģ\":99774,\"ç¶²\":99775,\"æ´ģ\":99776,\"ç¸\":99777,\"è§Ī\":99778,\"çŃ¹\":99779,\"ç§ĺ\":99780,\"è¯Ĭ\":99781,\"çı¾\":99782,\"èªī\":99783,\"æ¯«\":99784,\"ð¨\":99785,\"åį´\":99786,\"æĪĲä¸º\":99787,\"èĥ½åĬĽ\":99788,\"é»Ħ\":99789,\"æĹħæ¸¸\":99790,\"èĪ¬\":99791,\"æ¯Ķè¾ĥ\":99792,\"èµ·æĿ¥\":99793,\"äºĨè§£\":99794,\"èĩªçĦ¶\":99795,\"ä¸Ģæ¬¡\":99796,\"åŁºæľ¬\":99797,\"æĽ¾\":99798,\"ç»¼åĲĪ\":99799,\"èıľ\":99800,\"è§īå¾Ĺ\":99801,\"ç¬¬äºĮ\":99802,\"è·ĳ\":99803,\"æ³¢\":99804,\"åĢĴ\":99805,\"ç¡Ģ\":99806,\"åħµ\":99807,\"èįī\":99808,\"çĶ³\":99809,\"çĶ°\":99810,\"æĤ£\":99811,\"è§Ħå®ļ\":99812,\"èĥľ\":99813,\"èµĦäº§\":99814,\"æ¢¦\":99815,\"æľĿ\":99816,\"è¿ĻéĩĮ\":99817,\"å¤«\":99818,\"æĮ¥\":99819,\"ä½Ľ\":99820,\"å®Ī\":99821,\"éĽ¶\":99822,\"æĸ¼\":99823,\"ç¯ĩ\":99824,\"å²Ľ\":99825,\"åĵ¥\":99826,\"éŃĶ\":99827,\"ä¸įåĪ°\":99828,\"æīĺ\":99829,\"åºĬ\":99830,\"æ¬§\":99831,\"èį£\":99832,\"æ±ĩ\":99833,\"æī©\":99834,\"åģı\":99835,\"å¢Ļ\":99836,\"è®¯\":99837,\"å©ļ\":99838,\"æĥł\":99839,\"æ´ĭ\":99840,\"å®ľ\":99841,\"æ¶¦\":99842,\"æħ¢\":99843,\"éĢı\":99844,\"å®½\":99845,\"é¡¾\":99846,\"ç´¯\":99847,\"æ±¡\":99848,\"çĪĨ\":99849,\"ç§Ł\":99850,\"æĥĬ\":99851,\"æ¶¨\":99852,\"é¥°\":99853,\"éĺµ\":99854,\"é¥®\":99855,\"æļĸ\":99856,\"åºŁ\":99857,\"æĹĹ\":99858,\"éļĶ\":99859,\"ç¶ĵ\":99860,\"åĭĻ\":99861,\"å¯¦\":99862,\"éĢĶ\":99863,\"æī«\":99864,\"çĥĪ\":99865,\"éĽ»\":99866,\"åĪĳ\":99867,\"éĹľ\":99868,\"éĹª\":99869,\"å¥ĭ\":99870,\"åĤ¨\":99871,\"ç¼©\":99872,\"ä¾µ\":99873,\"å¬\":99874,\"ð¬¶\":99875,\"åĽ½éĻħ\":99876,\"ç»Ħç»ĩ\":99877,\"ä¸ĵä¸ļ\":99878,\"åıĳçİ°\":99879,\"å¸ĮæľĽ\":99880,\"ç»ıèĲ¥\":99881,\"åı«\":99882,\"æĿ¥è¯´\":99883,\"éļľ\":99884,\"ä»»ä½ķ\":99885,\"äº¤æĺĵ\":99886,\"éĩįçĤ¹\":99887,\"çļ®\":99888,\"ç»į\":99889,\"æ´¾\":99890,\"ç§ĳåŃ¦\":99891,\"åºĶçĶ¨\":99892,\"å»ºçŃĳ\":99893,\"èĤī\":99894,\"æĶ¹éĿ©\":99895,\"åŁºç¡Ģ\":99896,\"æ±ī\":99897,\"åĩºæĿ¥\":99898,\"è¿Ļä¹Ī\":99899,\"åĪļ\":99900,\"åĿĲ\":99901,\"ä¸įä»ħ\":99902,\"ä¼ļè®®\":99903,\"éĿł\":99904,\"åªĴä½ĵ\":99905,\"æ°¸\":99906,\"åĨ²\":99907,\"èĭı\":99908,\"å¤®\":99909,\"çĪ¶\":99910,\"åłĤ\":99911,\"å®ŀéĻħ\":99912,\"è¡Ĺ\":99913,\"ç«¥\":99914,\"éĺħ\":99915,\"äºĭæĥħ\":99916,\"åİŁåĽł\":99917,\"éħ¸\":99918,\"ä»¥æĿ¥\":99919,\"å¨±\":99920,\"å®«\":99921,\"åĿĹ\":99922,\"ç»©\":99923,\"éĩİ\":99924,\"ä¸įå¾Ĺ\":99925,\"ä¼łå¥ĩ\":99926,\"ç¡¬\":99927,\"åİħ\":99928,\"æĹ¢\":99929,\"ç»ĥ\":99930,\"èĦĳ\":99931,\"å¼±\":99932,\"æİĮ\":99933,\"è´´\":99934,\"æĮĤ\":99935,\"åħ³éĶ®\":99936,\"å°ļ\":99937,\"é¥Ń\":99938,\"åºĦ\":99939,\"çĻ¼\":99940,\"åľĭ\":99941,\"æİĪ\":99942,\"ä¸ªæľĪ\":99943,\"äºĪ\":99944,\"å¸ģ\":99945,\"è·Ŀ\":99946,\"æ²ī\":99947,\"ç«Ł\":99948,\"åĨ¬\":99949,\"æĬ½\":99950,\"éĨĴ\":99951,\"å¼Ł\":99952,\"è§¦\":99953,\"èģĺ\":99954,\"è±Ĩ\":99955,\"æļ´\":99956,\"åĳĬè¯ī\":99957,\"è±ª\":99958,\"èµ¢\":99959,\"è·¨\":99960,\"è³ĩ\":99961,\"çĪ¸\":99962,\"æĬ±\":99963,\"æµª\":99964,\"éº»\":99965,\"ä»ª\":99966,\"è¡¡\":99967,\"å¥¶\":99968,\"çģ¾\":99969,\"èµ¶\":99970,\"èĤ¥\":99971,\"å§Ĳ\":99972,\"åĢº\":99973,\"éľĩ\":99974,\"è®¢\":99975,\"æ¬Ĭ\":99976,\"ç·\":99977,\"å»ī\":99978,\"ä¿Ĺ\":99979,\"å¿ĺ\":99980,\"å¦ĩ\":99981,\"ç¼ĵ\":99982,\"åŃķ\":99983,\"æ¼«\":99984,\"è£ģ\":99985,\"çĩĥ\":99986,\"é»ĺ\":99987,\"çī¢\":99988,\"çĪ·\":99989,\"æĬµ\":99990,\"å®¾\":99991,\"æľīä¸Ģ\":99992,\"è¿¹\":99993,\"è¿«\":99994,\"è²Į\":99995,\"æľīçļĦ\":99996,\"ð¬ĺ\":99997,\"è¿ĺæĺ¯\":99998,\"æīĢä»¥\":99999,\"ä¹Łæĺ¯\":100000,\"è¿ĻäºĽ\":100001,\"å¯¹äºİ\":100002,\"åĲ§\":100003,\"çĽ®åīį\":100004,\"èĩªå·±çļĦ\":100005,\"èĥ½å¤Ł\":100006,\"å¦Ĥä½ķ\":100007,\"æľºæŀĦ\":100008,\"åıªæĺ¯\":100009,\"ç½ĳç«Ļ\":100010,\"åħ¨éĿ¢\":100011,\"ä¸ºäºĨ\":100012,\"å¼Ģåıĳ\":100013,\"æĸ°éĹ»\":100014,\"éĩĳèŀį\":100015,\"ç»§\":100016,\"å®¢æĪ·\":100017,\"ä¸Ģèµ·\":100018,\"èĮ¶\":100019,\"åħ³æ³¨\":100020,\"æ°´å¹³\":100021,\"åİĨåı²\":100022,\"å¢ŀéķ¿\":100023,\"é±\":100024,\"åŁºéĩĳ\":100025,\"åºŃ\":100026,\"åı¶\":100027,\"ä¿ĥ\":100028,\"éĽ¨\":100029,\"æ¶Īè´¹\":100030,\"èĪ¹\":100031,\"çŁ¥è¯Ĩ\":100032,\"æĪĺçķ¥\":100033,\"ç»ıéªĮ\":100034,\"å³°\":100035,\"æĽ²\":100036,\"èĦļ\":100037,\"åĨ°\":100038,\"å¤ı\":100039,\"å½Ĵ\":100040,\"ç¬Ķ\":100041,\"èĻĳ\":100042,\"çĶ²\":100043,\"åľĪ\":100044,\"è¯Ĺ\":100045,\"é½Ĳ\":100046,\"å®¹æĺĵ\":100047,\"çłĶåıĳ\":100048,\"éª¨\":100049,\"çº¸\":100050,\"è·µ\":100051,\"æĹ§\":100052,\"çķ¶\":100053,\"åĪ¸\":100054,\"è´·\":100055,\"åı¬\":100056,\"ç§ĭ\":100057,\"æ¶²\":100058,\"è¡ĮæĶ¿\":100059,\"çĮ®\":100060,\"èĤ¤\":100061,\"éĢĲ\":100062,\"è¶ĬæĿ¥\":100063,\"è¶ĬæĿ¥è¶Ĭ\":100064,\"æĦıè§ģ\":100065,\"èĪŀ\":100066,\"åīĤ\":100067,\"æ¶ī\":100068,\"ç¨ĭåº¦\":100069,\"åħ¬åħ±\":100070,\"æ¢°\":100071,\"æľ«\":100072,\"çº¯\":100073,\"åĶ±\":100074,\"æ´²\":100075,\"æĬ¢\":100076,\"æ¤į\":100077,\"å¿Ļ\":100078,\"ä¼°\":100079,\"å¼¹\":100080,\"æ³ī\":100081,\"æľĢå¤§\":100082,\"è¶ĭ\":100083,\"å·§\":100084,\"ç¦ģ\":100085,\"æī¶\":100086,\"åį±\":100087,\"çıł\":100088,\"çĨŁ\":100089,\"æĭľ\":100090,\"ä¸»ä¹ī\":100091,\"æĿĤ\":100092,\"éĻĦ\":100093,\"éģį\":100094,\"æĲŃ\":100095,\"æĮ¯\":100096,\"å¤ļå¹´\":100097,\"æķ¬\":100098,\"æĳĦ\":100099,\"çº·\":100100,\"å¼ĥ\":100101,\"æ¹¿\":100102,\"å¨ĺ\":100103,\"æ¡£\":100104,\"é©¶\":100105,\"æľĹ\":100106,\"æ®ĸ\":100107,\"æ¦ľ\":100108,\"åĵ¡\":100109,\"ä¸Ģä½ĵ\":100110,\"æŁ¥çľĭ\":100111,\"ç¹ģ\":100112,\"æµĵ\":100113,\"åħ¬å®ī\":100114,\"æ½ľ\":100115,\"è´¯\":100116,\"éªĹ\":100117,\"æĲľ\":100118,\"å·¡\":100119,\"è¬\":100120,\"éĬ\":100121,\"å§Ķä¼ļ\":100122,\"æĤł\":100123,\"åī©\":100124,\"æıŃ\":100125,\"åŃ£åº¦\":100126,\"ð«ĺ\":100127,\"ð¬¬\":100128,\"ä´\":100129,\"ðª\":100130,\"ä½Ĩæĺ¯\":100131,\"éĥ½æĺ¯\":100132,\"å¹³åı°\":100133,\"åŃ¦ä¹ł\":100134,\"åĵģçīĮ\":100135,\"ä¸Ķ\":100136,\"è¿Ļç§į\":100137,\"æĶ¿çŃĸ\":100138,\"æĭ¬\":100139,\"è®¤ä¸º\":100140,\"ä¸ĢèĪ¬\":100141,\"æłĩåĩĨ\":100142,\"æĶ¯æĮģ\":100143,\"æ¨¡å¼ı\":100144,\"åħ³ç³»\":100145,\"çļĦæĺ¯\":100146,\"è¿Ļä¸Ģ\":100147,\"ä¸įè¦ģ\":100148,\"çĶļ\":100149,\"ç²¾ç¥ŀ\":100150,\"æĭ¥\":100151,\"åĪ©çĶ¨\":100152,\"ä¿ĿæĬ¤\":100153,\"ä½ľçĶ¨\":100154,\"èĭ¥\":100155,\"åĽ½åĨħ\":100156,\"ä»ĭç»į\":100157,\"ä¸Ģä¸ĭ\":100158,\"å·¥ä¸ļ\":100159,\"çĽ®æłĩ\":100160,\"æľĢåĲİ\":100161,\"ä»·åĢ¼\":100162,\"å°į\":100163,\"éĵģ\":100164,\"è°ģ\":100165,\"ç»ĵæŀĦ\":100166,\"éĽª\":100167,\"æĻºèĥ½\":100168,\"ä¼łç»Ł\":100169,\"ä½ĵèĤ²\":100170,\"çĶŁæĢģ\":100171,\"æĭį\":100172,\"æİª\":100173,\"åĨľä¸ļ\":100174,\"çī¹èī²\":100175,\"è§Ħæ¨¡\":100176,\"æĹ¶ä»£\":100177,\"è¿ĩç¨ĭ\":100178,\"éĴĪ\":100179,\"æĿ¾\":100180,\"åĶĲ\":100181,\"åĮ»çĸĹ\":100182,\"çģ¯\":100183,\"åĪ¶éĢł\":100184,\"æł¸å¿ĥ\":100185,\"ä¸įåı¯\":100186,\"ç³»åĪĹ\":100187,\"åĲī\":100188,\"åľ£\":100189,\"åĢĳ\":100190,\"ä½³\":100191,\"æĿ¥çľĭ\":100192,\"æ¯ĶèµĽ\":100193,\"ä¸ĭæĿ¥\":100194,\"åĩºäºĨ\":100195,\"å¹²éĥ¨\":100196,\"å¾®ä¿¡\":100197,\"å½ĵåľ°\":100198,\"åį·\":100199,\"åį«çĶŁ\":100200,\"ä¼Ł\":100201,\"çĸ«æĥħ\":100202,\"è°·\":100203,\"åĩłä¸ª\":100204,\"éĺ´\":100205,\"çĶŁçī©\":100206,\"å°¤\":100207,\"ä¼Ĭ\":100208,\"èĤ¯\":100209,\"éĿ¢ç§¯\":100210,\"åĪĽéĢł\":100211,\"æı¡\":100212,\"åľĨ\":100213,\"æĻĵ\":100214,\"æĪĲäºĨ\":100215,\"åĩ¡\":100216,\"çĸ¾\":100217,\"ç«ŀäºī\":100218,\"è®¨\":100219,\"ä¸»é¢ĺ\":100220,\"é²ģ\":100221,\"è¿ª\":100222,\"ä¿Ħ\":100223,\"æĢª\":100224,\"ä¸¦\":100225,\"èĻļ\":100226,\"æ½®\":100227,\"çĥ§\":100228,\"èĢ³\":100229,\"æ±ł\":100230,\"éĢĤåĲĪ\":100231,\"æł¹æľ¬\":100232,\"åĬłçĽŁ\":100233,\"çĶµè§Ĩ\":100234,\"æ··\":100235,\"ç¼ĺ\":100236,\"çªĹ\":100237,\"çĬ¯\":100238,\"æĥ¯\":100239,\"æĦıä¹ī\":100240,\"åĬŀæ³ķ\":100241,\"ä¼ĳ\":100242,\"æ»ĳ\":100243,\"åĭĩ\":100244,\"æķ¢\":100245,\"å¯»\":100246,\"è¦Ĩ\":100247,\"éĢĥ\":100248,\"ç»ıçĲĨ\":100249,\"åĿı\":100250,\"æ³½\":100251,\"ä¹ĺ\":100252,\"åĪº\":100253,\"å±ı\":100254,\"é¡¿\":100255,\"äº¡\":100256,\"éĤĢ\":100257,\"åħ¼\":100258,\"åĭ¤\":100259,\"æ®ĭ\":100260,\"æĺł\":100261,\"æ¯ķä¸ļ\":100262,\"æĪª\":100263,\"è·Į\":100264,\"å£ģ\":100265,\"åı¦ä¸Ģ\":100266,\"çľŁå®ŀ\":100267,\"ç£¨\":100268,\"è¯ļ\":100269,\"å¿ħè¦ģ\":100270,\"æģĭ\":100271,\"æĩĤ\":100272,\"å¾Ĵ\":100273,\"è°ĵ\":100274,\"æķı\":100275,\"æĻ¨\":100276,\"èĥ¸\":100277,\"æĭ¼\":100278,\"å¦Ļ\":100279,\"è¯¸\":100280,\"èģĬ\":100281,\"æĤī\":100282,\"éº¼\":100283,\"åĩŃ\":100284,\"èĪĴ\":100285,\"æ¶Ĥ\":100286,\"è¿ģ\":100287,\"æ²¿\":100288,\"å¡ĳ\":100289,\"æĽ¿\":100290,\"æ¾³\":100291,\"å¿į\":100292,\"èĢĹ\":100293,\"éľ¸\":100294,\"åĩłå¹´\":100295,\"åĪĬ\":100296,\"èĦī\":100297,\"èħĲ\":100298,\"æ¡Į\":100299,\"çºł\":100300,\"æ»ļ\":100301,\"æĤ²\":100302,\"åĨĴ\":100303,\"å¦¹\":100304,\"çķħ\":100305,\"çºµ\":100306,\"æĳĩ\":100307,\"å¤º\":100308,\"è·¯ä¸Ĭ\":100309,\"å¿½\":100310,\"èĸª\":100311,\"æģĲ\":100312,\"æĦıæĢĿ\":100313,\"å«Į\":100314,\"æı´\":100315,\"æ°§\":100316,\"èĢĢ\":100317,\"éĺ»\":100318,\"è½¨\":100319,\"å¹»\":100320,\"æįķ\":100321,\"åĿ¦\":100322,\"åĵĪåĵĪ\":100323,\"çĭĲ\":100324,\"æ»¨\":100325,\"è²»\":100326,\"è¿Ł\":100327,\"äººéĥ½\":100328,\"ç»ĺ\":100329,\"åı¹\":100330,\"çµĲ\":100331,\"æī°\":100332,\"æ»ĭ\":100333,\"å¥ĳ\":100334,\"åĭŁ\":100335,\"ç¢º\":100336,\"ð¦\":100337,\"éĽĨåĽ¢\":100338,\"æĿİ\":100339,\"å¼Ģå±ķ\":100340,\"æıĲåįĩ\":100341,\"åħ¨åĽ½\":100342,\"æ±½è½¦\":100343,\"åŃ¦æł¡\":100344,\"æł¹æį®\":100345,\"è¿Ļæĺ¯\":100346,\"åĩºçİ°\":100347,\"éĻĪ\":100348,\"ç½Ĺ\":100349,\"èİ·å¾Ĺ\":100350,\"åĪĺ\":100351,\"éĶĢåĶ®\":100352,\"æľªæĿ¥\":100353,\"éľĢæ±Ĥ\":100354,\"å®ŀæĸ½\":100355,\"åĿļæĮģ\":100356,\"åħ¨çĲĥ\":100357,\"éĵ¶è¡Į\":100358,\"æİ§åĪ¶\":100359,\"é¡»\":100360,\"åľ°åĮº\":100361,\"æīĵéĢł\":100362,\"çļĦè¯Ŀ\":100363,\"å¸®åĬ©\":100364,\"ä½ĵç³»\":100365,\"è¾¾åĪ°\":100366,\"è§ĦåĪĴ\":100367,\"åŁ¹è®Ń\":100368,\"ä¸¤ä¸ª\":100369,\"æĬ¥åĳĬ\":100370,\"åľ°æĸ¹\":100371,\"å®Įåħ¨\":100372,\"æİī\":100373,\"ç»ĵåĲĪ\":100374,\"å®£ä¼ł\":100375,\"æ³ķå¾ĭ\":100376,\"èīºæľ¯\":100377,\"çĶµå½±\":100378,\"èªª\":100379,\"ä¸ĢçĤ¹\":100380,\"è¶ħè¿ĩ\":100381,\"çĶµåŃĲ\":100382,\"æĢĿæĥ³\":100383,\"æķĻåŃ¦\":100384,\"éĺ¶æ®µ\":100385,\"åķĨä¸ļ\":100386,\"çī©æµģ\":100387,\"åĪĽä¸ļ\":100388,\"æĸ¹æ¡Ī\":100389,\"çİ°ä»£\":100390,\"æ¡¥\":100391,\"èĲ½å®ŀ\":100392,\"å¸¦æĿ¥\":100393,\"äº§çĶŁ\":100394,\"ç§Ģ\":100395,\"æ³°\":100396,\"ä¹±\":100397,\"åħ·ä½ĵ\":100398,\"åĸĿ\":100399,\"èĵĿ\":100400,\"å®Ĺ\":100401,\"åįĩçº§\":100402,\"æ·±åħ¥\":100403,\"ä¿ĿéĻ©\":100404,\"ç®Ģåįķ\":100405,\"çĹĽ\":100406,\"ç¨³å®ļ\":100407,\"è¾Ĩ\":100408,\"å±ŀäºİ\":100409,\"å·Ŀ\":100410,\"ä¸įå°ĳ\":100411,\"åĴ¨\":100412,\"ä¸ľè¥¿\":100413,\"å½¢å¼ı\":100414,\"å¨±ä¹Ĳ\":100415,\"æŃ£å¸¸\":100416,\"é¸¡\":100417,\"åħħåĪĨ\":100418,\"å®ŀè·µ\":100419,\"éĩĮéĿ¢\":100420,\"è·³\":100421,\"èĻİ\":100422,\"æĪĲéķ¿\":100423,\"æļĹ\":100424,\"çĿ¡\":100425,\"ç½ª\":100426,\"çĲĨå¿µ\":100427,\"æĮĳ\":100428,\"èµĦæľ¬\":100429,\"å¤ļå°ĳ\":100430,\"ä¸ĭéĿ¢\":100431,\"å¸Ŀ\":100432,\"åħ¬å¼Ģ\":100433,\"æ¸Ĳ\":100434,\"éķ·\":100435,\"å±ĭ\":100436,\"æ¬¢è¿İ\":100437,\"å¿ĥçĲĨ\":100438,\"çĤİ\":100439,\"æ¹¾\":100440,\"è®ĵ\":100441,\"éĤĦ\":100442,\"ç³ĸ\":100443,\"ä¹Į\":100444,\"åĬ±\":100445,\"çīĻ\":100446,\"èħ¿\":100447,\"å²Ĺ\":100448,\"ä¼į\":100449,\"æĪĲåĳĺ\":100450,\"åŃĶ\":100451,\"å°ıç¼ĸ\":100452,\"èĳ£\":100453,\"æ³¡\":100454,\"åħĪè¿Ľ\":100455,\"åħ§\":100456,\"åĺ´\":100457,\"è´Ŀ\":100458,\"è»\":100459,\"æĲŀ\":100460,\"æ³Ľ\":100461,\"é¸Ł\":100462,\"ç½²\":100463,\"èĽĭ\":100464,\"ä¸»ä»»\":100465,\"çĽ®çļĦ\":100466,\"ä¹ı\":100467,\"æ´¥\":100468,\"æĪ´\":100469,\"ä¸¥æł¼\":100470,\"çħ¤\":100471,\"çĮ«\":100472,\"åĶ¯\":100473,\"å°Ĭ\":100474,\"çĶľ\":100475,\"åŀĥ\":100476,\"åľ¾\":100477,\"æĭŁ\":100478,\"çĦ¦\":100479,\"é«Ķ\":100480,\"å®ı\":100481,\"æ©Ł\":100482,\"é©»\":100483,\"æĹģ\":100484,\"å½»\":100485,\"éĥ½ä¸į\":100486,\"æĳ©\":100487,\"ä»ĵ\":100488,\"ä¹³\":100489,\"å²¸\":100490,\"è°ĭ\":100491,\"å¤§å¤ļ\":100492,\"çģŃ\":100493,\"èħ¾\":100494,\"æŁľ\":100495,\"èĪį\":100496,\"åħļçļĦ\":100497,\"å°ĺ\":100498,\"åįģå¹´\":100499,\"æĭĴ\":100500,\"è£¡\":100501,\"æŁĶ\":100502,\"å¹¼\":100503,\"éĶģ\":100504,\"ä¸ĵé¡¹\":100505,\"æīİ\":100506,\"é©¾é©¶\":100507,\"ç¢İ\":100508,\"è¢ĭ\":100509,\"éĶĭ\":100510,\"å£®\":100511,\"å°ĸ\":100512,\"çĶµæ±ł\":100513,\"è¿Ķ\":100514,\"æ¼ı\":100515,\"å¾ª\":100516,\"èıĮ\":100517,\"èĥĥ\":100518,\"è¾ħ\":100519,\"éĢĴ\":100520,\"èĥİ\":100521,\"éĻª\":100522,\"å¯¿\":100523,\"å¥Ķ\":100524,\"çĮĽ\":100525,\"çº¹\":100526,\"çŁ¥åĲį\":100527,\"å¿Ĩ\":100528,\"æ¡ĥ\":100529,\"æ£ĭ\":100530,\"éĢĨ\":100531,\"çĤ¼\":100532,\"ç±į\":100533,\"çī§\":100534,\"æł·çļĦ\":100535,\"è¾Ľ\":100536,\"åłĨ\":100537,\"å®ŀåľ¨\":100538,\"ä¼ı\":100539,\"å®¿\":100540,\"èµı\":100541,\"è£Ĥ\":100542,\"åįĬå¹´\":100543,\"åĢ¾\":100544,\"æ»¡æĦı\":100545,\"æ¢¯\":100546,\"æĦıåĳ³\":100547,\"åŃ¤\":100548,\"ç¥Ŀ\":100549,\"æĻ¶\":100550,\"èµĶ\":100551,\"åģ¿\":100552,\"èĦĤ\":100553,\"ç½ļ\":100554,\"ç¢į\":100555,\"æ²ĥ\":100556,\"æĵį\":100557,\"å´ĩ\":100558,\"æļĤ\":100559,\"è·ĥ\":100560,\"æĲ¬\":100561,\"å©Ĩ\":100562,\"éī\":100563,\"éī´\":100564,\"åħ´è¶£\":100565,\"èĲ¥ä¸ļ\":100566,\"è®Ĭ\":100567,\"èĦı\":100568,\"è¾Ī\":100569,\"å·ŀå¸Ĥ\":100570,\"è´«åĽ°\":100571,\"ç©·\":100572,\"ä¸Ńå°ı\":100573,\"æ¼Ĥ\":100574,\"çĻĮ\":100575,\"èľľ\":100576,\"ä¼Ļä¼´\":100577,\"çīµ\":100578,\"æĤŁ\":100579,\"éĻ·\":100580,\"èµĽåŃ£\":100581,\"æ¨£\":100582,\"åģ¶\":100583,\"æĺĨ\":100584,\"è¢Ń\":100585,\"æįĲ\":100586,\"èī°\":100587,\"æĤ¬\":100588,\"çĶ¢\":100589,\"èĳ¡\":100590,\"çĽĹ\":100591,\"å©´\":100592,\"å°İ\":100593,\"çº½\":100594,\"åĢ¡\":100595,\"æī®\":100596,\"è¨Ń\":100597,\"æĬĳ\":100598,\"ç¡ķ\":100599,\"è¾ĸ\":100600,\"éĥģ\":100601,\"è¾©\":100602,\"éĤ»\":100603,\"çİ°åĩº\":100604,\"è¦ı\":100605,\"å½¹\":100606,\"éĺĶ\":100607,\"åīµ\":100608,\"è¯±\":100609,\"æĥĳ\":100610,\"æ·Ģ\":100611,\"é¢Ī\":100612,\"ä¾¦\":100613,\"æģ°\":100614,\"æ£Ģå¯Ł\":100615,\"éĨ«\":100616,\"çĦ¶æĺ¯\":100617,\"åĭĥ\":100618,\"èĮ«\":100619,\"äĵ\":100620,\"ð¬¸\":100621,\"ä½ľä¸º\":100622,\"çļĦäºº\":100623,\"éĤ£ä¹Ī\":100624,\"ç¾İåĽ½\":100625,\"è¿ĺæľī\":100626,\"æıĲé«ĺ\":100627,\"èĻ½\":100628,\"åħ·æľī\":100629,\"åĮħæĭ¬\":100630,\"æĪĸèĢħ\":100631,\"ä¸įè¿ĩ\":100632,\"ä¸Ĭæµ·\":100633,\"åĮ»éĻ¢\":100634,\"èµĦéĩĳ\":100635,\"çĶļèĩ³\":100636,\"åĪ¶åº¦\":100637,\"è§£åĨ³\":100638,\"èģĶç½ĳ\":100639,\"ç»§ç»Ń\":100640,\"å»ºç«ĭ\":100641,\"è¿Ľä¸ĢæŃ¥\":100642,\"æĿĲæĸĻ\":100643,\"ä»Ĭå¤©\":100644,\"å¿ħé¡»\":100645,\"åĲĦç§į\":100646,\"çİ°åľº\":100647,\"ä»ĸçļĦ\":100648,\"å¢ŀåĬł\":100649,\"é¢ĨåŁŁ\":100650,\"åıĤä¸İ\":100651,\"æĮģç»Ń\":100652,\"ä¹ĭä¸Ģ\":100653,\"çī¹åĪ«\":100654,\"é±¼\":100655,\"åħ±åĲĮ\":100656,\"åĬª\":100657,\"çİī\":100658,\"äººä»¬\":100659,\"åħĪçĶŁ\":100660,\"ä¼ĺåĬ¿\":100661,\"ä¿ĿæĮģ\":100662,\"ä½ľåĵģ\":100663,\"çīĽ\":100664,\"æĪĲæľ¬\":100665,\"æĶ¶åħ¥\":100666,\"åıĬæĹ¶\":100667,\"è´Łè´£\":100668,\"æİ¥åıĹ\":100669,\"èįĲ\":100670,\"åıªè¦ģ\":100671,\"çľŁçļĦ\":100672,\"å¯¼èĩ´\":100673,\"æľºåĪ¶\":100674,\"è¡ĮåĬ¨\":100675,\"æĸ°çļĦ\":100676,\"å®ĮåĸĦ\":100677,\"ä¸ºä»Ģä¹Ī\":100678,\"ä¸Ńå¤®\":100679,\"æĪĲç«ĭ\":100680,\"æĦŁè§ī\":100681,\"åıĺåĮĸ\":100682,\"åıĹåĪ°\":100683,\"å¹¶ä¸į\":100684,\"åŃĻ\":100685,\"æĸ½å·¥\":100686,\"æĺİæĺ¾\":100687,\"è¿ĩåİ»\":100688,\"åıĳæĮ¥\":100689,\"çľŁæŃ£\":100690,\"åŁºåľ°\":100691,\"æĺİç¡®\":100692,\"èĥ¡\":100693,\"è®¸å¤ļ\":100694,\"ä¸Ģå¹´\":100695,\"æĸ¹åĲĳ\":100696,\"æģ©\":100697,\"çĽ¸ä¿¡\":100698,\"åľ³\":100699,\"è¯¦ç»Ĩ\":100700,\"äºĭä¸ļ\":100701,\"çĶŁåĳ½\":100702,\"åĴ¨è¯¢\":100703,\"æĸĩæĺİ\":100704,\"çĳŀ\":100705,\"ç»¿èī²\":100706,\"èİ«\":100707,\"æĦıè¯Ĩ\":100708,\"æĬķåħ¥\":100709,\"åĬłå¿«\":100710,\"æ¢ħ\":100711,\"ç¿»\":100712,\"å¼ĢæĶ¾\":100713,\"æĻ®éĢļ\":100714,\"åįıä¼ļ\":100715,\"æĪĲç»©\":100716,\"ä»Ļ\":100717,\"å¯Ĵ\":100718,\"è¯ģåĪ¸\":100719,\"è®¤è¯Ĩ\":100720,\"ä¸¹\":100721,\"å¤§éĩı\":100722,\"è¿ħ\":100723,\"åģļåĪ°\":100724,\"è®¾æĸ½\":100725,\"è´¸æĺĵ\":100726,\"èĥ½æºĲ\":100727,\"æĹ¶æľŁ\":100728,\"ä¸Ģå¤©\":100729,\"æ²»çĲĨ\":100730,\"åĺī\":100731,\"å®ĩ\":100732,\"ä¸°å¯Į\":100733,\"ä¸¾è¡Į\":100734,\"æĪĲæŀľ\":100735,\"èĤ¯å®ļ\":100736,\"çĭĹ\":100737,\"åĬ¨åĬĽ\":100738,\"æ£®\":100739,\"åĩłä¹İ\":100740,\"åĽłç´ł\":100741,\"æ°ĳæĹı\":100742,\"æ´ŀ\":100743,\"ç½ĳåıĭ\":100744,\"åĲĪçĲĨ\":100745,\"å¹¿å¤§\":100746,\"æ®Ĭ\":100747,\"æ´Ľ\":100748,\"æĿ¯\":100749,\"èĴĻ\":100750,\"çĶ¨äºİ\":100751,\"èŀįèµĦ\":100752,\"ç¥ĸ\":100753,\"æľºæ¢°\":100754,\"ä¸¾åĬŀ\":100755,\"èĩªåĬ¨\":100756,\"åĬŀåħ¬\":100757,\"é»ŀ\":100758,\"éĽĦ\":100759,\"åĢ¼å¾Ĺ\":100760,\"çĮª\":100761,\"ä»¥ä¸º\":100762,\"æĺĮ\":100763,\"è·Ŀç¦»\":100764,\"åĲ¸å¼ķ\":100765,\"ç»ķ\":100766,\"éļĨ\":100767,\"è®¡ç®Ĺ\":100768,\"éĺŁä¼į\":100769,\"å¤§ä¼ļ\":100770,\"å¼ķèµ·\":100771,\"çī¹çĤ¹\":100772,\"èĥ¶\":100773,\"å¹´è½»\":100774,\"æľ¬èº«\":100775,\"æľºåħ³\":100776,\"å®ĺæĸ¹\":100777,\"éĥĳ\":100778,\"æµĻ\":100779,\"è§Ĵèī²\":100780,\"èĳ£äºĭ\":100781,\"ä¸ºä¸»\":100782,\"æĹłè®º\":100783,\"ä¹łæĥ¯\":100784,\"æ¥ļ\":100785,\"æĭĵ\":100786,\"ç»Łè®¡\":100787,\"åħĦ\":100788,\"å¹¿æ³Ľ\":100789,\"åįĢ\":100790,\"æ±¡æŁĵ\":100791,\"è«ĭ\":100792,\"èĬĤçĽ®\":100793,\"ä¼¦\":100794,\"è¦ĨçĽĸ\":100795,\"èĢĲ\":100796,\"æī¶è´«\":100797,\"ç»ıåİĨ\":100798,\"éĩįè¦ģçļĦ\":100799,\"èĤ¡ä¸ľ\":100800,\"æĭĽèģĺ\":100801,\"åĽĽä¸ª\":100802,\"æĩī\":100803,\"èĥŀ\":100804,\"æĳĨ\":100805,\"é«ĺéĢŁ\":100806,\"éº¦\":100807,\"åİŁåĪĻ\":100808,\"èİ±\":100809,\"æĽ´å¥½\":100810,\"éķľ\":100811,\"åĩĮ\":100812,\"åŀĥåľ¾\":100813,\"éĢ²\":100814,\"çģ°\":100815,\"éĵº\":100816,\"äºĭæķħ\":100817,\"çĶĺ\":100818,\"ç©ºæ°Ķ\":100819,\"é¾Ħ\":100820,\"èı²\":100821,\"çĵ¶\":100822,\"æĺ¨\":100823,\"æĹ¥æĬ¥\":100824,\"æµ®\":100825,\"åľ°åĽ¾\":100826,\"åĳĪ\":100827,\"å¤§åĬĽ\":100828,\"ç»ª\":100829,\"å¸ħ\":100830,\"æľįåĭĻ\":100831,\"ä¸įéĶĻ\":100832,\"ä¹¡æĿĳ\":100833,\"å±¥\":100834,\"å¹³æĸ¹\":100835,\"éĹ²\":100836,\"æī£\":100837,\"ç´łè´¨\":100838,\"èµ´\":100839,\"éģŃ\":100840,\"èĲ¨\":100841,\"èĩªä¸»\":100842,\"éĩĳå±ŀ\":100843,\"èī¯å¥½\":100844,\"ä¸¤å¹´\":100845,\"æ³¥\":100846,\"é¢ľ\":100847,\"ç²¾å½©\":100848,\"ä¸Ńåįİ\":100849,\"æĻĭ\":100850,\"ä¹łè¿ĳ\":100851,\"ä¹łè¿ĳå¹³\":100852,\"æĪĺå£«\":100853,\"åģļçļĦ\":100854,\"éªĳ\":100855,\"æ»´\":100856,\"çĵľ\":100857,\"çīĪæĿĥ\":100858,\"èĤł\":100859,\"æľĥåĵ¡\":100860,\"çıį\":100861,\"ç¨®\":100862,\"ä»¿\":100863,\"çī©ä¸ļ\":100864,\"åĢĭäºº\":100865,\"å¦»\":100866,\"ä¼¸\":100867,\"æ±Ĺ\":100868,\"æĹº\":100869,\"çĲĨæĥ³\":100870,\"æĳ¸\":100871,\"è¿Ŀæ³ķ\":100872,\"å®Įæķ´\":100873,\"åİ¦\":100874,\"è¸ı\":100875,\"æĸĳ\":100876,\"æ¡Ĥ\":100877,\"ä½ĵåĪ¶\":100878,\"å¸«\":100879,\"æĿĨ\":100880,\"æ®¿\":100881,\"æ¯ģ\":100882,\"é¦Ī\":100883,\"è§Ĵåº¦\":100884,\"æ¬£\":100885,\"çĥ¦\":100886,\"èĤº\":100887,\"éĩĩè®¿\":100888,\"æĳĺ\":100889,\"æĮ¡\":100890,\"æ·ĺ\":100891,\"åħ»èĢģ\":100892,\"çĤ¸\":100893,\"è¿Ī\":100894,\"åİī\":100895,\"åĿĬ\":100896,\"è¾£\":100897,\"åĩĿ\":100898,\"æ³ª\":100899,\"çĸı\":100900,\"æİĺ\":100901,\"åĥıæĺ¯\":100902,\"éĽķ\":100903,\"ç¼Ŀ\":100904,\"èį·\":100905,\"æį·\":100906,\"åł¡\":100907,\"åı¥è¯Ŀ\":100908,\"çĸ¼\":100909,\"æłı\":100910,\"éģµ\":100911,\"ç¢³\":100912,\"å·¥åķĨ\":100913,\"æĲº\":100914,\"åĪ¥\":100915,\"ä¹Ļ\":100916,\"æĹĭ\":100917,\"æĥľ\":100918,\"ä¸Ģå¤§\":100919,\"å±Ĥæ¬¡\":100920,\"èµĸ\":100921,\"æĬ¬\":100922,\"æ¨Ĥ\":100923,\"è¯ŀ\":100924,\"åħĴ\":100925,\"ç¯®\":100926,\"èĤĥ\":100927,\"å§¿\":100928,\"æĬļ\":100929,\"çĵ·\":100930,\"çĶµåĬ¨\":100931,\"æĸ°åĨł\":100932,\"æ¶µ\":100933,\"ç¢ĳ\":100934,\"æ·®\":100935,\"æĹ¨\":100936,\"è¸ª\":100937,\"æ¸Ķ\":100938,\"æĦĪ\":100939,\"åıĶ\":100940,\"åįĹçľģ\":100941,\"ç¾©\":100942,\"å§Ķä¹¦è®°\":100943,\"è²¸\":100944,\"æ¶Į\":100945,\"è«ĸ\":100946,\"èĲĦ\":100947,\"æıı\":100948,\"å¿§\":100949,\"è¾¦\":100950,\"å¦Ĩ\":100951,\"æīŃ\":100952,\"åĳµ\":100953,\"éģ¥\":100954,\"è¨±\":100955,\"ä»ĩ\":100956,\"åįģä¸ī\":100957,\"åī²\":100958,\"èªį\":100959,\"èĪ°\":100960,\"é¢ĩ\":100961,\"é¥±\":100962,\"çĭł\":100963,\"é«ĺçļĦ\":100964,\"çµ±\":100965,\"æħİ\":100966,\"é¢ģ\":100967,\"åĲĪéĢĤ\":100968,\"æµ´\":100969,\"èµĭ\":100970,\"æĬ¼\":100971,\"å¦¥\":100972,\"éĻ¢éķ¿\":100973,\"èĢķ\":100974,\"è¾¨\":100975,\"æħ°\":100976,\"åįģåĽĽ\":100977,\"æľµ\":100978,\"èĵĦ\":100979,\"æŀ¢\":100980,\"å»·\":100981,\"æĤĦ\":100982,\"æ¶¯\":100983,\"çŁ©\":100984,\"åŃĲéĩĮ\":100985,\"çĬ¹\":100986,\"å±Ģéķ¿\":100987,\"éĲ\":100988,\"å¥ł\":100989,\"ä¼ļéķ¿\":100990,\"æĵļ\":100991,\"ä¸įåıĬ\":100992,\"åįģä¹Ŀ\":100993,\"æ¬º\":100994,\"èºº\":100995,\"éĺĲ\":100996,\"çºĮ\":100997,\"è¨»\":100998,\"åĨĬ\":100999,\"èŃĺ\":101000,\"é«ĺçŃī\":101001,\"èħº\":101002,\"å¤ķ\":101003,\"ç»ĳ\":101004,\"åĶ¤\":101005,\"èķ´\":101006,\"çķľ\":101007,\"æħĭ\":101008,\"åıĻ\":101009,\"åıĥ\":101010,\"å³¡\":101011,\"äººå¤§\":101012,\"éħ¿\":101013,\"éģ©\":101014,\"å¥¢\":101015,\"åı£æ°Ķ\":101016,\"éĮĦ\":101017,\"éı\":101018,\"åĭĺ\":101019,\"è´¿\":101020,\"éļª\":101021,\"éĭ\":101022,\"éļ¶\":101023,\"ð¥\":101024,\"ð¬£\":101025,\"ð£\":101026,\"ð«į\":101027,\"ð¬³\":101028,\"ð«ĵ\":101029,\"ð«Ħ\":101030,\"ð«Ł\":101031,\"ð¨±\":101032,\"äĹ\":101033,\"ä»¥åıĬ\":101034,\"æľīéĻĲ\":101035,\"åĳ¢\":101036,\"åĲĹ\":101037,\"çľĭåĪ°\":101038,\"è®¡åĪĴ\":101039,\"è¿Ľåħ¥\":101040,\"çĽ´æİ¥\":101041,\"åĪĨæŀĲ\":101042,\"åıªæľī\":101043,\"è®¾å¤ĩ\":101044,\"åħ¶å®ŀ\":101045,\"åĬłå¼º\":101046,\"ä¸ŃçļĦ\":101047,\"ä¿Ŀéļľ\":101048,\"èĢģå¸Ī\":101049,\"äººæīį\":101050,\"å¾ĹåĪ°\":101051,\"é£İéĻ©\":101052,\"ä¸Ģç§į\":101053,\"ç©ºéĹ´\":101054,\"æĪĳåĽ½\":101055,\"ä¹ĭåīį\":101056,\"ä¸ĵå®¶\":101057,\"æĿ¨\":101058,\"æĹ¥æľ¬\":101059,\"ç¾¤ä¼Ĺ\":101060,\"åıĤåĬł\":101061,\"æķĪæŀľ\":101062,\"æľīåħ³\":101063,\"å®¶åºŃ\":101064,\"åĮºåŁŁ\":101065,\"åĬªåĬĽ\":101066,\"éļıçĿĢ\":101067,\"æĹłæ³ķ\":101068,\"äº¤æµģ\":101069,\"è¡Įä¸º\":101070,\"æ£ĢæŁ¥\":101071,\"æľŁéĹ´\":101072,\"å¦ĤæŃ¤\":101073,\"èĤ¡ä»½\":101074,\"å½ĵæĹ¶\":101075,\"è£ħå¤ĩ\":101076,\"åĩĨå¤ĩ\":101077,\"éħĴåºĹ\":101078,\"è¿ĲåĬ¨\":101079,\"æıĲåĩº\":101080,\"å·¦åı³\":101081,\"æİªæĸ½\":101082,\"é£Łåĵģ\":101083,\"æ¶Īè´¹èĢħ\":101084,\"åŃ¦éĻ¢\":101085,\"æĮĩå¯¼\":101086,\"è¿ĲèĲ¥\":101087,\"éĩįå¤§\":101088,\"åĨľæĿĳ\":101089,\"éĢłæĪĲ\":101090,\"æĶ¿æ²»\":101091,\"éĴĪå¯¹\":101092,\"æŃ£å¼ı\":101093,\"åıĸå¾Ĺ\":101094,\"éĤ£ä¸ª\":101095,\"éĽĨä¸Ń\":101096,\"åıªèĥ½\":101097,\"å¿«éĢŁ\":101098,\"èº«ä½ĵ\":101099,\"åħļåĳĺ\":101100,\"èģĶåĲĪ\":101101,\"åĬĽéĩı\":101102,\"éĥ½æľī\":101103,\"æħ§\":101104,\"å¡Ķ\":101105,\"åĪ«äºº\":101106,\"è¡¨çİ°\":101107,\"æķħäºĭ\":101108,\"ä¸ĢåĪĩ\":101109,\"å°ĩ\":101110,\"èµĦæĸĻ\":101111,\"åŁ¹åħ»\":101112,\"éĺħè¯»\":101113,\"æľīäºº\":101114,\"èĲ¥éĶĢ\":101115,\"çĽĳçĿ£\":101116,\"çİ¯ä¿Ŀ\":101117,\"èĢĥèĻĳ\":101118,\"æ·±åľ³\":101119,\"ä¸¥éĩį\":101120,\"èĮĥåĽ´\":101121,\"å§Ķåĳĺ\":101122,\"çĽĳç®¡\":101123,\"ä¸īä¸ª\":101124,\"è£ħä¿®\":101125,\"åħ¬éĩĮ\":101126,\"åĪĨåĪ«\":101127,\"çĲĨè§£\":101128,\"éŁ©\":101129,\"åĬłå·¥\":101130,\"è®¤çľŁ\":101131,\"ä¸įå¥½\":101132,\"åİ»å¹´\":101133,\"éĻįä½İ\":101134,\"æľºä¼ļ\":101135,\"åįıè®®\":101136,\"ç¬¦åĲĪ\":101137,\"å¢ŀå¼º\":101138,\"æĬĢèĥ½\":101139,\"é¦ĸåħĪ\":101140,\"ç§¦\":101141,\"ä¸ģ\":101142,\"å°¾\":101143,\"æľīäºĨ\":101144,\"åľ°äº§\":101145,\"æ¸ł\":101146,\"æĸ¹ä¾¿\":101147,\"ç§»åĬ¨\":101148,\"éĢŁåº¦\":101149,\"å°¤åħ¶\":101150,\"éĢļçŁ¥\":101151,\"åĿĽ\":101152,\"éģ¿åħį\":101153,\"æģ¢\":101154,\"è´¡\":101155,\"èģĮå·¥\":101156,\"å®ŀåĬĽ\":101157,\"æĺ¯ä¸Ģç§į\":101158,\"åĲ¯åĬ¨\":101159,\"çĸ¾çĹħ\":101160,\"æĿ¥äºĨ\":101161,\"çĽ¸å¯¹\":101162,\"çİ°å®ŀ\":101163,\"èŀįåĲĪ\":101164,\"åĲĮæł·\":101165,\"åħ¬åĳĬ\":101166,\"çī¹æ®Ĭ\":101167,\"ç´«\":101168,\"ä¸ĭåİ»\":101169,\"ä¼łæĴŃ\":101170,\"æľĢå¥½\":101171,\"ä¼ĺè´¨\":101172,\"æ²Ĵ\":101173,\"æĮº\":101174,\"æĹ¦\":101175,\"è¯º\":101176,\"ä¸ĢåĲį\":101177,\"éģĵè·¯\":101178,\"ç¤ºèĮĥ\":101179,\"è¿ĩæĿ¥\":101180,\"åĲĮåŃ¦\":101181,\"é¼ĵ\":101182,\"æĿŃ\":101183,\"æľ¬æ¬¡\":101184,\"åĲĮæĦı\":101185,\"ä¸ĸçºª\":101186,\"ç¾Ĭ\":101187,\"æ¬²\":101188,\"å·¥èīº\":101189,\"çĵ¦\":101190,\"äººå£«\":101191,\"æľīæīĢ\":101192,\"ä»İäºĭ\":101193,\"æľīå¾Īå¤ļ\":101194,\"ä¸įäºĨ\":101195,\"å²Ĺä½į\":101196,\"åıĺå¾Ĺ\":101197,\"åĬ³åĬ¨\":101198,\"å¤Ħäºİ\":101199,\"å¹³åĿĩ\":101200,\"å½¢è±¡\":101201,\"å¡ŀ\":101202,\"åħ±äº«\":101203,\"çĿĽ\":101204,\"åĪ©æ¶¦\":101205,\"æŃ£æĺ¯\":101206,\"å¾Ģå¾Ģ\":101207,\"çĽ¸æ¯Ķ\":101208,\"æ¨ª\":101209,\"åĪ·\":101210,\"æµĻæ±Ł\":101211,\"å¤§éĥ¨åĪĨ\":101212,\"å¤ļä¸ª\":101213,\"æĤ¨çļĦ\":101214,\"çĶµåķĨ\":101215,\"å¾®åįļ\":101216,\"å§ĭç»Ī\":101217,\"çĬ¯ç½ª\":101218,\"æĺ¯åľ¨\":101219,\"ç»ĦåĲĪ\":101220,\"åİŁæĿ¥\":101221,\"æ¸ħæ¥ļ\":101222,\"åĲĦåľ°\":101223,\"æĦŁåıĹ\":101224,\"å½ĵä¸Ń\":101225,\"è¶ĭåĬ¿\":101226,\"æĻ¯åĮº\":101227,\"çľŁæĺ¯\":101228,\"ä¾ĽåºĶ\":101229,\"è½¬åŀĭ\":101230,\"çĭĤ\":101231,\"èĨľ\":101232,\"èĭĹ\":101233,\"å¿ł\":101234,\"å¾Īå¤§\":101235,\"èĤ¡æĿĥ\":101236,\"ç¾İåħĥ\":101237,\"æİĴåĲį\":101238,\"åĬ¨çī©\":101239,\"éĶħ\":101240,\"å¢¨\":101241,\"ä¸»å¸Ń\":101242,\"å¾Īå¥½\":101243,\"ç»Ŀå¯¹\":101244,\"æĿľ\":101245,\"è½¬è½½\":101246,\"çĴĥ\":101247,\"æĿĳæ°ĳ\":101248,\"åĲ¨\":101249,\"åĽŃåĮº\":101250,\"é«ĺåº¦\":101251,\"çī©è´¨\":101252,\"è¾ī\":101253,\"æĹ¥å¸¸\":101254,\"æıĴ\":101255,\"ä¸īå¹´\":101256,\"ä½ĵçİ°\":101257,\"æīįæĺ¯\":101258,\"ä»£çĲĨ\":101259,\"ä¸įç®¡\":101260,\"æģĴ\":101261,\"åľ°ä½į\":101262,\"ç²®\":101263,\"èĸĦ\":101264,\"æĺİçĻ½\":101265,\"ä¸Ģèĩ´\":101266,\"æĽ¼\":101267,\"åĵŃ\":101268,\"åĩ¤\":101269,\"åĬ²\":101270,\"æķĮ\":101271,\"æĪĺæĸĹ\":101272,\"ä¸»ä½ĵ\":101273,\"åħ¬å¸ĥ\":101274,\"åıĤèĢĥ\":101275,\"èĪªç©º\":101276,\"å¯º\":101277,\"åŃ¦ä¼ļ\":101278,\"åıįæĺł\":101279,\"ç¾İä¸½\":101280,\"å¤ªéĺ³\":101281,\"å»ºæĪĲ\":101282,\"æħ¢æħ¢\":101283,\"åĲĦä¸ª\":101284,\"éĤ¦\":101285,\"ç»ĦæĪĲ\":101286,\"ä¸īå¤§\":101287,\"éĶ¦\":101288,\"å¤§å¤ļæķ°\":101289,\"æ¦Ĥå¿µ\":101290,\"éŃĤ\":101291,\"åħ¬çĽĬ\":101292,\"èįĴ\":101293,\"èº«ä»½\":101294,\"æ·±åĪ»\":101295,\"åħ©\":101296,\"ç»ıåħ¸\":101297,\"åĲĦé¡¹\":101298,\"èĻķ\":101299,\"è¿ĽæŃ¥\":101300,\"åįģäºĮ\":101301,\"æī§æ³ķ\":101302,\"æĥ³åĪ°\":101303,\"æĦŁæŁĵ\":101304,\"åķĨåĬ¡\":101305,\"å°ıç»Ħ\":101306,\"èĶ¬\":101307,\"çıŃåŃĲ\":101308,\"åĲĮå¿Ĺ\":101309,\"éĿ¢ä¸´\":101310,\"çĤĴ\":101311,\"å¤ļç§į\":101312,\"è§ĤçĤ¹\":101313,\"åĵªéĩĮ\":101314,\"å°Ŀ\":101315,\"å§Ĩ\":101316,\"èħ¹\":101317,\"åŁİåĮº\":101318,\"å¤ªå¤ļ\":101319,\"çĹħæ¯Ĵ\":101320,\"åľ¨äºİ\":101321,\"æīĢè°ĵ\":101322,\"æĻ°\":101323,\"æŀĿ\":101324,\"æĭĸ\":101325,\"å®ħ\":101326,\"æķ´æ²»\":101327,\"ä½ıæĪ¿\":101328,\"åģ·\":101329,\"çĨĬ\":101330,\"èµģ\":101331,\"æ°Ľ\":101332,\"æł¼å±Ģ\":101333,\"åŁºç¡Ģä¸Ĭ\":101334,\"èĥĨ\":101335,\"åħ½\":101336,\"éĽ¶åĶ®\":101337,\"åĿ¡\":101338,\"å¥³åŃ©\":101339,\"æĴŀ\":101340,\"åħ¨åĬĽ\":101341,\"åĴĸ\":101342,\"èĤ©\":101343,\"çľī\":101344,\"èĩ³äºİ\":101345,\"åħļç»Ħ\":101346,\"ä¸Ģä»¶\":101347,\"æĭĨ\":101348,\"äºĭå®ŀ\":101349,\"åĤ³\":101350,\"æ¹ĺ\":101351,\"ç¶²ç«Ļ\":101352,\"å¾ªçİ¯\":101353,\"åĲĮæ¯Ķ\":101354,\"æĭĶ\":101355,\"åĮ»èį¯\":101356,\"åħ»æ®ĸ\":101357,\"åĽºå®ļ\":101358,\"å®ŀéĻħä¸Ĭ\":101359,\"è®°å¾Ĺ\":101360,\"åĪ©äºİ\":101361,\"æĤ¦\":101362,\"æĭ³\":101363,\"èĤĿ\":101364,\"æķĪçĽĬ\":101365,\"è©²\":101366,\"æ°ĳä¸»\":101367,\"çĹĩçĬ¶\":101368,\"é¢¨\":101369,\"å¹¼åĦ¿\":101370,\"å§ĳ\":101371,\"æĪĴ\":101372,\"ä¸ĭçļĦ\":101373,\"æ¸¡\":101374,\"å¹´åºķ\":101375,\"è®°å¿Ĩ\":101376,\"åĲĲ\":101377,\"å¤§å¹ħ\":101378,\"å¾½\":101379,\"åħ¬ä¼Ĺ\":101380,\"ä¿¡å¿ĥ\":101381,\"çİĽ\":101382,\"ä¼ļä¸Ĭ\":101383,\"ä¹Ķ\":101384,\"æĳĦå½±\":101385,\"æ£ĭçīĮ\":101386,\"éĻķ\":101387,\"åºĶæĢ¥\":101388,\"æĶ¶è´¹\":101389,\"æİ§èĤ¡\":101390,\"ä»ªå¼ı\":101391,\"çŀ¬\":101392,\"æīĢåľ¨\":101393,\"ç¢°\":101394,\"å§ĵ\":101395,\"é¡Į\":101396,\"æĶ¯éĥ¨\":101397,\"ä½¿åĳ½\":101398,\"çĤī\":101399,\"å¯Ħ\":101400,\"ç¿¼\":101401,\"åľ°ä¸ĭ\":101402,\"è¾ŀ\":101403,\"ä¿±\":101404,\"ä¸»æĮģ\":101405,\"è´§å¸ģ\":101406,\"æģ¨\":101407,\"èĤĮ\":101408,\"çĽĪ\":101409,\"éĶ»\":101410,\"å¿ĹæĦ¿\":101411,\"ç±»ä¼¼\":101412,\"æĮĸ\":101413,\"éĢ»\":101414,\"ç¸½\":101415,\"çºªå¿µ\":101416,\"åķ¥\":101417,\"å¼¯\":101418,\"åĲįåŃĹ\":101419,\"åģ¥èº«\":101420,\"çļĦå¿ĥ\":101421,\"é©±\":101422,\"èĥĮåĲİ\":101423,\"æ³ķå¸Ī\":101424,\"ç²Ĵ\":101425,\"èĥ½éĩı\":101426,\"è¾°\":101427,\"èī³\":101428,\"å½¼\":101429,\"æ®µæĹ¶éĹ´\":101430,\"åĲĪæ³ķ\":101431,\"æĵ¦\":101432,\"ç¾½\":101433,\"åİ¨\":101434,\"æĪĳè¯´\":101435,\"äºĭåĬ¡\":101436,\"åĩłå¤©\":101437,\"åħģ\":101438,\"ç¼´\":101439,\"åįĵ\":101440,\"ä¸¤ç§į\":101441,\"çĭ¬çī¹\":101442,\"å¸¶\":101443,\"éĴ»\":101444,\"æĥ©\":101445,\"é¢ĨåħĪ\":101446,\"è¶³å¤Ł\":101447,\"å£³\":101448,\"æĦıåĳ³çĿĢ\":101449,\"åĪĨå¸ĥ\":101450,\"ä¹ĥ\":101451,\"éģĭ\":101452,\"ä½©\":101453,\"è°±\":101454,\"çģ£\":101455,\"èį¡\":101456,\"è´¯å½»\":101457,\"å¹¾\":101458,\"ç£ģ\":101459,\"åħ¸åŀĭ\":101460,\"åīĩ\":101461,\"åĨ»\":101462,\"æ¬ł\":101463,\"ä¸įä¹ħ\":101464,\"æµ¦\":101465,\"éŃħ\":101466,\"å¼ĢäºĨ\":101467,\"ä½¿çĶ¨èĢħ\":101468,\"è¿Ļæ¬¾\":101469,\"å°Ī\":101470,\"èĦ±è´«\":101471,\"æĶ»åĿļ\":101472,\"ç®Ĺæĺ¯\":101473,\"ç¨Ģ\":101474,\"æĹłäºº\":101475,\"åłµ\":101476,\"å¥ı\":101477,\"éĥ½å¸Ĥ\":101478,\"åı¯è§ģ\":101479,\"ä¸įåĩº\":101480,\"æ·»\":101481,\"äºı\":101482,\"ç¾İå¥½\":101483,\"èĥĸ\":101484,\"éŁµ\":101485,\"æłĩå¿Ĺ\":101486,\"èĬĤèĥ½\":101487,\"æĬ«\":101488,\"å°º\":101489,\"å¯¸\":101490,\"ä¸Ģä»£\":101491,\"é¢Ĺ\":101492,\"èĢ¶\":101493,\"èĴ¸\":101494,\"åĸ®\":101495,\"æ»¿\":101496,\"çĮľ\":101497,\"æµĨ\":101498,\"åŁĥ\":101499,\"åįĥä¸ĩ\":101500,\"èµĮ\":101501,\"èģ²\":101502,\"ä½ľé£İ\":101503,\"è³ª\":101504,\"å¯¨\":101505,\"å¹´äºº\":101506,\"åį°è±¡\":101507,\"æ¡¶\":101508,\"æĴ¤\":101509,\"åįģäºĶ\":101510,\"æ¯ħ\":101511,\"æ²ª\":101512,\"åĽ½æľī\":101513,\"å¤§éĩıçļĦ\":101514,\"å¾¡\":101515,\"å¯ĵ\":101516,\"è¦ĸ\":101517,\"æ¼Ĥäº®\":101518,\"çľł\":101519,\"çĤŃ\":101520,\"é»İ\":101521,\"èĻ¹\":101522,\"åĪ©äºļ\":101523,\"èŃī\":101524,\"æµı\":101525,\"åįģåħ«\":101526,\"ä¸¢\":101527,\"è¾½\":101528,\"æľīä¸ĢäºĽ\":101529,\"æħĪ\":101530,\"åģľè½¦\":101531,\"å®ł\":101532,\"è§£æĶ¾\":101533,\"æľīå¤ļ\":101534,\"éĤĬ\":101535,\"å¸¸è§ģ\":101536,\"æĬ¹\":101537,\"çº¤\":101538,\"è¦ª\":101539,\"æ¡Ĩ\":101540,\"èİŀ\":101541,\"æ°§åĮĸ\":101542,\"è¿Ļä»¶\":101543,\"åĩ°\":101544,\"æŁ´\":101545,\"åıĳçĶµ\":101546,\"é¼ł\":101547,\"è½¬åĮĸ\":101548,\"å¨ĥ\":101549,\"æĮ¤\":101550,\"ç½©\":101551,\"å¯ĨåĪĩ\":101552,\"æĪĳä¸į\":101553,\"é«ĺæĸ°\":101554,\"ä¸Ģç¯ĩ\":101555,\"è¿Ľç¨ĭ\":101556,\"è¡°\":101557,\"è¿ĺä¸į\":101558,\"çħĮ\":101559,\"æĸ°åįİ\":101560,\"èĤ¿\":101561,\"æ»©\":101562,\"ä¸Ģæµģ\":101563,\"è¯Ī\":101564,\"å®ŀä½ĵ\":101565,\"å¤ĸåĽ½\":101566,\"èº²\":101567,\"èµł\":101568,\"è¦º\":101569,\"æ¢Ŀ\":101570,\"ä¸įè§ģ\":101571,\"è¨Ĭ\":101572,\"åĮ¹\":101573,\"åįµ\":101574,\"çĩ¥\":101575,\"æħķ\":101576,\"é½¿\":101577,\"å®´\":101578,\"é¥¼\":101579,\"èĳ¡èĲĦ\":101580,\"å°ıå¿ĥ\":101581,\"æģ¼\":101582,\"éĻĮ\":101583,\"æĺĤ\":101584,\"åĥ¹\":101585,\"èĬĿ\":101586,\"æ¯ıä¸ªäºº\":101587,\"åīįæıĲ\":101588,\"ä½ĵä¼ļ\":101589,\"æ¨Ļ\":101590,\"æĲľçĭĲ\":101591,\"å¯¹åħ¶\":101592,\"ä¸§\":101593,\"èľĤ\":101594,\"æµ¸\":101595,\"èª¿\":101596,\"åĿª\":101597,\"é¢ĸ\":101598,\"åĲįä¸º\":101599,\"ç¬¼\":101600,\"èĪĮ\":101601,\"æľ¬ä¹¦\":101602,\"èģ¯\":101603,\"çºº\":101604,\"ç®ĢçĽ´\":101605,\"éĽ¢\":101606,\"ç¾İçļĦ\":101607,\"éļ¨\":101608,\"é«ĺå³°\":101609,\"è¿Ļå®¶\":101610,\"åĤ¬\":101611,\"å°¸\":101612,\"ç¡ķå£«\":101613,\"èŃ·\":101614,\"è°¨\":101615,\"æĺı\":101616,\"æĶ¿åįı\":101617,\"è¡Ķ\":101618,\"ç¿Ĵ\":101619,\"åľĴ\":101620,\"åĽ½æ°ĳ\":101621,\"ä¸»è§Ĵ\":101622,\"è£ķ\":101623,\"ä¼ª\":101624,\"åºŀ\":101625,\"æ°ĳèĲ¥\":101626,\"æĥ§\":101627,\"ç§ĺä¹¦\":101628,\"çĹķ\":101629,\"çĻ¾åĪĨ\":101630,\"æº¶\":101631,\"æĹłçĸĳ\":101632,\"çļĦçľ¼\":101633,\"æĵİ\":101634,\"ä¼Łå¤§\":101635,\"å½°\":101636,\"åħ¬å®īå±Ģ\":101637,\"ç³ķ\":101638,\"å¼¥\":101639,\"åĤĻ\":101640,\"ä¹¾\":101641,\"æ¯«ä¸į\":101642,\"æ³¨æĺİ\":101643,\"åī¯æĢ»\":101644,\"æĦī\":101645,\"æķ¦\":101646,\"é¦¨\":101647,\"æĶĢ\":101648,\"éĢĿ\":101649,\"åı¯éĿł\":101650,\"å¤¸\":101651,\"åľĺ\":101652,\"éĿ¢ä¸Ĭ\":101653,\"æĬĸ\":101654,\"èĦĨ\":101655,\"é©°\":101656,\"ä¼Ĳ\":101657,\"å¦¨\":101658,\"å®ļäºĨ\":101659,\"ç³Ĭ\":101660,\"æŃ¡\":101661,\"éĥ¨éķ¿\":101662,\"ç§ī\":101663,\"èĪĨ\":101664,\"åĪĳäºĭ\":101665,\"åĲµ\":101666,\"æ¤Ĵ\":101667,\"è¡ĵ\":101668,\"è±«\":101669,\"èı©\":101670,\"åŃµ\":101671,\"é¥²\":101672,\"å°±å¥½\":101673,\"åłª\":101674,\"ä¸īè§Ĵ\":101675,\"åľºæ¯ĶèµĽ\":101676,\"ä¸įåģľ\":101677,\"æĵħ\":101678,\"åħ¨æĸĩ\":101679,\"æ³ģ\":101680,\"åŃ¦ä½į\":101681,\"æ±°\":101682,\"éłĺ\":101683,\"åıł\":101684,\"éļĽ\":101685,\"å¸Ĳ\":101686,\"çľĭåĩº\":101687,\"åĮł\":101688,\"å±ĢéĿ¢\":101689,\"æ³Į\":101690,\"è°Ĭ\":101691,\"åĲĮæľŁ\":101692,\"æĬķæłĩ\":101693,\"å¥´\":101694,\"æĿ¥çľĭçľĭ\":101695,\"èĦ¾\":101696,\"èŀº\":101697,\"æŃī\":101698,\"çĽ¯\":101699,\"ç¨İåĬ¡\":101700,\"å»Ĭ\":101701,\"æİ©\":101702,\"æħ¨\":101703,\"çĽ¼\":101704,\"èĬĴ\":101705,\"è®Ģ\":101706,\"æĮ£\":101707,\"èĮħ\":101708,\"æĸ¥\":101709,\"æ¤ħ\":101710,\"åĪ°æĿ¥\":101711,\"èĳĹä½ľ\":101712,\"çĭ±\":101713,\"äºĮæīĭ\":101714,\"ä»İæĿ¥\":101715,\"çĸ²\":101716,\"åºĬä¸Ĭ\":101717,\"æĸ°æµª\":101718,\"æ³Ħ\":101719,\"å¢ŀåĢ¼\":101720,\"ä¸Ľ\":101721,\"æļĳ\":101722,\"ä»İä¸ļ\":101723,\"æ·ĭ\":101724,\"å¤ļæł·\":101725,\"æľ´\":101726,\"ä»½é¢Ŀ\":101727,\"æŀ£\":101728,\"è¥¿çľģ\":101729,\"æľ¬è´¨\":101730,\"æ·±æ·±\":101731,\"èīĩ\":101732,\"ç»µ\":101733,\"äº§åĢ¼\":101734,\"æ¼ł\":101735,\"èħ»\":101736,\"çŃĽ\":101737,\"åİĮ\":101738,\"æģŃ\":101739,\"å«Įçĸĳ\":101740,\"æĪ¶\":101741,\"æ»ŀ\":101742,\"èĨĢ\":101743,\"åĬ£\":101744,\"åº§è°Ī\":101745,\"å¸¸æĢģ\":101746,\"çļĦæĥħ\":101747,\"è¦½\":101748,\"å¯Ĥ\":101749,\"åĮĨ\":101750,\"èĩº\":101751,\"é¡¯\":101752,\"çķı\":101753,\"éģ£\":101754,\"åįľ\":101755,\"çŃīå¥ĸ\":101756,\"è²¬\":101757,\"æº¯\":101758,\"éİ\":101759,\"çĤ¹å¤´\":101760,\"èĵ¬\":101761,\"æ±º\":101762,\"éħ¬\":101763,\"éģĬ\":101764,\"è³¼\":101765,\"è¨»åĨĬ\":101766,\"æľ¬æĬ¥\":101767,\"çµķ\":101768,\"æ´»æĢ§\":101769,\"åħĳ\":101770,\"éĮ¯\":101771,\"åĨ¶\":101772,\"åĸ»\":101773,\"æºĸ\":101774,\"èĤ¢\":101775,\"æºĥ\":101776,\"æĹ¬\":101777,\"åīĬ\":101778,\"çĲĨäºĭ\":101779,\"å±ł\":101780,\"æ²§\":101781,\"èļĢ\":101782,\"éĽ»åŃĲ\":101783,\"ä¸ºæŃ¢\":101784,\"å¸¸å§Ķ\":101785,\"çµĤ\":101786,\"éĬ·\":101787,\"çĭĢ\":101788,\"ä¾£\":101789,\"èĥĢ\":101790,\"èŃ°\":101791,\"çĶ¨è½¦\":101792,\"åĻª\":101793,\"æŃ·\":101794,\"åįĶ\":101795,\"åĪ¹\":101796,\"ç«Łæĺ¯\":101797,\"é©Ĺ\":101798,\"èĲĿ\":101799,\"çĻ«\":101800,\"çĹ«\":101801,\"æŃ§\":101802,\"å¼Ĭ\":101803,\"åª½\":101804,\"çıĬ\":101805,\"è¡·\":101806,\"éľī\":101807,\"åŁºçĿ£\":101808,\"éļ±\":101809,\"æ°¨\":101810,\"ç»¸\":101811,\"å°¼æĸ¯\":101812,\"çĥĺ\":101813,\"æľŁåĨħ\":101814,\"è°ħ\":101815,\"éĽĩ\":101816,\"éļĻ\":101817,\"åĸī\":101818,\"åī¥\":101819,\"çĹĺ\":101820,\"æĮ½\":101821,\"çĵ£\":101822,\"æ¹Ľ\":101823,\"æ¨±\":101824,\"æ¾İ\":101825,\"æ¹ĥ\":101826,\"åĨ¬å¥¥\":101827,\"æ£µ\":101828,\"å®°\":101829,\"åŀĴ\":101830,\"æ§ĭ\":101831,\"ä¾Ī\":101832,\"èĮĦ\":101833,\"åĺ¿\":101834,\"èıĩ\":101835,\"çĻĤ\":101836,\"åĬĥ\":101837,\"éį\":101838,\"èĶ½\":101839,\"çŀŃ\":101840,\"æķŀ\":101841,\"ä¹ĸ\":101842,\"éŁ§\":101843,\"è¾ľ\":101844,\"æĩĪ\":101845,\"ä½£\":101846,\"çŀ»\":101847,\"åŁĶ\":101848,\"èĪħ\":101849,\"å®ŀäºĭ\":101850,\"é¨\":101851,\"å§¥\":101852,\"çµ¡\":101853,\"åĺ»\":101854,\"çķ¢\":101855,\"æ²ĥå°Ķ\":101856,\"è¿Ħ\":101857,\"èĤĩ\":101858,\"æħĳ\":101859,\"ã§\":101860,\"äı\":101861,\"ðł\":101862,\"ð¬ĩ\":101863,\"ð«Ń\":101864,\"ð«Ĳ\":101865,\"ã³\":101866,\"©½\":101867,\"ð«ł\":101868,\"ãĽ\":101869,\"ð¬į\":101870,\"é¿\":101871,\"ð¬Ĵ\":101872,\"ãĻ\":101873,\"ð¬¤\":101874,\"ð¬´\":101875,\"ð«ĸ\":101876,\"ð¤\":101877,\"ã¬\":101878,\"ä²\":101879,\"ð«Ķ\":101880,\"ð«ļ\":101881,\"è¦ģæ±Ĥ\":101882,\"ä¸ĢäºĽ\":101883,\"å®ŀçİ°\":101884,\"èĢĮä¸Ķ\":101885,\"åĽłæŃ¤\":101886,\"çĶ±äºİ\":101887,\"åħ³äºİ\":101888,\"çĦ¶åĲİ\":101889,\"æİ¨åĬ¨\":101890,\"ä¸Ģæł·\":101891,\"æĮīçħ§\":101892,\"è¿Ļæł·çļĦ\":101893,\"å½¢æĪĲ\":101894,\"æľīäºĽ\":101895,\"æĽ´åĬł\":101896,\"ç»ıè¿ĩ\":101897,\"å»ºè®®\":101898,\"æ²»çĸĹ\":101899,\"ä½łä»¬\":101900,\"æīįèĥ½\":101901,\"ä¿ĥè¿Ľ\":101902,\"åĳĺå·¥\":101903,\"ä½ĵéªĮ\":101904,\"èĪĩ\":101905,\"åģļå¥½\":101906,\"ä¿Ŀè¯ģ\":101907,\"æķ´ä¸ª\":101908,\"æĺ¯ä¸Ģä¸ª\":101909,\"éĩĩçĶ¨\":101910,\"çĲĨè®º\":101911,\"æ¯Ķå¦Ĥ\":101912,\"ä¸ĬçļĦ\":101913,\"æİ¨èįĲ\":101914,\"çĶ³è¯·\":101915,\"å¤©ç©º\":101916,\"éĥ¨èĲ½\":101917,\"åįģåĪĨ\":101918,\"æĿ¥èĩª\":101919,\"ä¹ĭéĹ´\":101920,\"è°ĥæķ´\":101921,\"æ¯ıå¤©\":101922,\"è°ĥæŁ¥\":101923,\"æĤ£èĢħ\":101924,\"è¿ĩç¨ĭä¸Ń\":101925,\"é¦Ļæ¸¯\":101926,\"å¹¿åĳĬ\":101927,\"éĿ¢å¯¹\":101928,\"æ»¡è¶³\":101929,\"éķ¿æľŁ\":101930,\"è§ĦèĮĥ\":101931,\"æķ´ä½ĵ\":101932,\"æĶ¹åıĺ\":101933,\"æĻºæħ§\":101934,\"å¦Īå¦Ī\":101935,\"å¦Ĥä»Ĭ\":101936,\"åĲĪåĲĮ\":101937,\"éĥ½ä¼ļ\":101938,\"åĦ¿ç«¥\":101939,\"åĩıå°ĳ\":101940,\"éŁ³ä¹Ĳ\":101941,\"ç»ıå¸¸\":101942,\"ä¸Ĭå¸Ĥ\":101943,\"ä¼ĺç§Ģ\":101944,\"çļĦéĩįè¦ģ\":101945,\"ä¸ĢæĿ¡\":101946,\"æµ·å¤ĸ\":101947,\"åı¦å¤ĸ\":101948,\"ä¸Ģå®¶\":101949,\"åİĭåĬĽ\":101950,\"å¤§åŀĭ\":101951,\"çľĭçĿĢ\":101952,\"åĪĢ\":101953,\"å¹¸ç¦ı\":101954,\"æİ¨å¹¿\":101955,\"åĲĽ\":101956,\"å¾Ĳ\":101957,\"æī¾åĪ°\":101958,\"äºİæĺ¯\":101959,\"èĩªèº«\":101960,\"ä¸Ģä½į\":101961,\"åľŁåľ°\":101962,\"åĬłåħ¥\":101963,\"æİ¢ç´¢\":101964,\"æ¢ģ\":101965,\"ä¸»åĬ¨\":101966,\"å°±ä¸ļ\":101967,\"å¥³æĢ§\":101968,\"çªģçł´\":101969,\"ä¸įåĲĮçļĦ\":101970,\"è¿Ĳè¾ĵ\":101971,\"èĩªçĶ±\":101972,\"å±ħæ°ĳ\":101973,\"æŃ¤æ¬¡\":101974,\"çļĦæĹ¶éĹ´\":101975,\"å®¶éķ¿\":101976,\"ä¸Ģä¸ªäºº\":101977,\"æ£Ģæµĭ\":101978,\"åĨħéĥ¨\":101979,\"å¹¿å·ŀ\":101980,\"çĽ´æĴŃ\":101981,\"ä»İèĢĮ\":101982,\"è´·æ¬¾\":101983,\"åı¬å¼Ģ\":101984,\"æĶ¹éĢł\":101985,\"äººçĶŁ\":101986,\"å±ķç¤º\":101987,\"æ¯ıå¹´\":101988,\"å¥³äºº\":101989,\"çļĦæĸ¹å¼ı\":101990,\"æķĪçİĩ\":101991,\"å±±ä¸ľ\":101992,\"æ¸łéģĵ\":101993,\"ä¼¼ä¹İ\":101994,\"æ¡Īä»¶\":101995,\"åĪ©çĽĬ\":101996,\"çľĭçľĭ\":101997,\"å¿ĥéĩĮ\":101998,\"ç»´æĬ¤\":101999,\"å®Ŀå®Ŀ\":102000,\"ç½ĳä¸Ĭ\":102001,\"è®ºåĿĽ\":102002,\"å°±åı¯ä»¥\":102003,\"ä¸įè¶³\":102004,\"æģ¢å¤į\":102005,\"å¸ĥå±Ģ\":102006,\"è´¡çĮ®\":102007,\"ä¸ĭéĻį\":102008,\"æİĮæı¡\":102009,\"çļ®èĤ¤\":102010,\"å·¥åħ·\":102011,\"éĩįåºĨ\":102012,\"åĵģè´¨\":102013,\"æİ¨åĩº\":102014,\"çĶ·äºº\":102015,\"æī¿æĭħ\":102016,\"çªģåĩº\":102017,\"èĢĮè¨Ģ\":102018,\"æ²Ł\":102019,\"åįıè°ĥ\":102020,\"æĺ¯ä»Ģä¹Ī\":102021,\"æ±¤\":102022,\"æĴĳ\":102023,\"çĭ¬ç«ĭ\":102024,\"çİ¯èĬĤ\":102025,\"æī©å¤§\":102026,\"æ´ª\":102027,\"æĿ°\":102028,\"çĽĲ\":102029,\"ä»ģ\":102030,\"æ¶īåıĬ\":102031,\"èĢģäºº\":102032,\"åį³ä½¿\":102033,\"åįĹäº¬\":102034,\"éħįåĲĪ\":102035,\"é¬¼\":102036,\"çĪ¶äº²\":102037,\"ç½Ĺæĸ¯\":102038,\"å°ıåĮº\":102039,\"æķĻæİĪ\":102040,\"åĨ³çŃĸ\":102041,\"é¢Ħè®¡\":102042,\"æľ¬äºº\":102043,\"ä¼¯\":102044,\"ç«¹\":102045,\"åĪ°åºķ\":102046,\"å¸Ĥæ°ĳ\":102047,\"åĩºåı£\":102048,\"éĩĩè´Ń\":102049,\"æĢ»ç»ĵ\":102050,\"æŃ¦æ±ī\":102051,\"åĬłå¤§\":102052,\"å¹¿ä¸ľ\":102053,\"æµģç¨ĭ\":102054,\"äººåı£\":102055,\"å¦Ĥæŀľä½ł\":102056,\"åĩºåİ»\":102057,\"åĩī\":102058,\"åĨľæ°ĳ\":102059,\"çİ°è±¡\":102060,\"åĬĽåº¦\":102061,\"ç»ĻäºĪ\":102062,\"åħļå§Ķ\":102063,\"è¯Ńè¨Ģ\":102064,\"çº¿ä¸Ĭ\":102065,\"æĢİæł·\":102066,\"åĦ¿åŃĲ\":102067,\"ç¡®å®ŀ\":102068,\"ä¹ĭå¤ĸ\":102069,\"éĥ½åľ¨\":102070,\"èī¾\":102071,\"çļĦæĥħåĨµ\":102072,\"éĩĮçļĦ\":102073,\"åĽ´ç»ķ\":102074,\"æĽ´å¤ļçļĦ\":102075,\"ä¾Ŀæ³ķ\":102076,\"åħ¬åĽŃ\":102077,\"å®¶éĩĮ\":102078,\"æ¯įäº²\":102079,\"ä¸įåĨį\":102080,\"èĭ¹\":102081,\"æ³ķéĻ¢\":102082,\"éŁ©åĽ½\":102083,\"çĽ¸å½ĵ\":102084,\"ä¸įçŁ¥\":102085,\"è¯Ħä¼°\":102086,\"ä¸įçĶ¨\":102087,\"é¡ºåĪ©\":102088,\"éĩįè§Ĩ\":102089,\"è´¢åĬ¡\":102090,\"ä»ĸåĢĳ\":102091,\"åıĳè¡Į\":102092,\"ä¸ĵéĹ¨\":102093,\"åħ·å¤ĩ\":102094,\"å¹¶ä¸įæĺ¯\":102095,\"è¶³çĲĥ\":102096,\"éŀĭ\":102097,\"åıĳè¡¨\":102098,\"æ°¸è¿ľ\":102099,\"èĲ¥åħ»\":102100,\"éħįå¥Ĺ\":102101,\"æķ´åĲĪ\":102102,\"è´º\":102103,\"åĽŀçŃĶ\":102104,\"æĶ¶çĽĬ\":102105,\"ä¹Łè®¸\":102106,\"è»Ĭ\":102107,\"æİ¥è§¦\":102108,\"æĶ»åĩ»\":102109,\"åĽĽå·Ŀ\":102110,\"æĢ§èĥ½\":102111,\"åĽŀåĪ°\":102112,\"èħ°\":102113,\"ä¹Łæ²¡æľī\":102114,\"å¼Ħ\":102115,\"è®¾ç«ĭ\":102116,\"éĺ²æİ§\":102117,\"æĬĢå·§\":102118,\"éĢļå¸¸\":102119,\"è´¢æĶ¿\":102120,\"éĥ¨ç½²\":102121,\"åľºæĻ¯\":102122,\"æ±Łèĭı\":102123,\"è¡¨è¾¾\":102124,\"åĸ·\":102125,\"å¥³åĦ¿\":102126,\"èĪ¶\":102127,\"çµ¦\":102128,\"ä¼ļåĳĺ\":102129,\"æĪĸè®¸\":102130,\"äº©\":102131,\"ä¸ľæĸ¹\":102132,\"å¤©æ´¥\":102133,\"è¿ĳå¹´\":102134,\"çľĭæĿ¥\":102135,\"æ¯Ķä¾ĭ\":102136,\"å²©\":102137,\"éĵľ\":102138,\"çİ»\":102139,\"å®ŀéªĮ\":102140,\"æĢĿç»´\":102141,\"æĭħå¿ĥ\":102142,\"æ²Ī\":102143,\"èº«è¾¹\":102144,\"æ·±åĮĸ\":102145,\"ç²¾åĩĨ\":102146,\"ç§ģæľį\":102147,\"æ¶Īéĺ²\":102148,\"åİ»äºĨ\":102149,\"ç»Ĩèĥŀ\":102150,\"çĲĥéĺŁ\":102151,\"æĺİæĺŁ\":102152,\"é£Łçī©\":102153,\"å¾Īå¿«\":102154,\"è®©ä½ł\":102155,\"ä¿¡çĶ¨\":102156,\"åĶ¯ä¸Ģ\":102157,\"åħ¶å®ĥ\":102158,\"çŃīæĸ¹éĿ¢\":102159,\"å¾ĭå¸Ī\":102160,\"æŃ»äº¡\":102161,\"æŁ³\":102162,\"ä¸Ģæī¹\":102163,\"ä¸Ĭæ¶¨\":102164,\"æľºåľº\":102165,\"å½¢åĬ¿\":102166,\"æĦ¿æĦı\":102167,\"éĽĨä½ĵ\":102168,\"æĸ°åŀĭ\":102169,\"æįŁå¤±\":102170,\"æĽ¸\":102171,\"ä¸ĭåįĪ\":102172,\"æ¯ıæ¬¡\":102173,\"æĪĲå°±\":102174,\"åħ¬è·¯\":102175,\"èĻ«\":102176,\"åĴ±\":102177,\"è¥¿å®ī\":102178,\"æľĢä½³\":102179,\"ç§ĳçłĶ\":102180,\"å¤įæĿĤ\":102181,\"æľºåĻ¨\":102182,\"çĪ±æĥħ\":102183,\"çħ§çīĩ\":102184,\"å¹´é¾Ħ\":102185,\"è³ĩæĸĻ\":102186,\"ç²Ĺ\":102187,\"åĩĨç¡®\":102188,\"åĬłä¸Ĭ\":102189,\"åĩºçīĪ\":102190,\"è°Ĳ\":102191,\"å®¶å±ħ\":102192,\"èĥĮæĻ¯\":102193,\"ä¸Ģçº¿\":102194,\"äºĭé¡¹\":102195,\"åĬ¨ä½ľ\":102196,\"ç¥¥\":102197,\"æĢ»ä½ĵ\":102198,\"æĪ¿åŃĲ\":102199,\"ä¹Łå°±æĺ¯\":102200,\"å¤§æ¦Ĥ\":102201,\"é«ĺæķĪ\":102202,\"åĲ¹\":102203,\"æİĪæĿĥ\":102204,\"éĻĦè¿ĳ\":102205,\"æ¡Īä¾ĭ\":102206,\"éĹ¹\":102207,\"çĪ¸çĪ¸\":102208,\"å½©ç¥¨\":102209,\"æĢĴ\":102210,\"ä¸¾æĬ¥\":102211,\"æĻ®éģį\":102212,\"çķĻä¸ĭ\":102213,\"è¡£æľį\":102214,\"æĹłè®ºæĺ¯\":102215,\"åħħæ»¡\":102216,\"æ·±åº¦\":102217,\"æ¡ĳ\":102218,\"æĪªèĩ³\":102219,\"å¸¦æĿ¥çļĦ\":102220,\"éĻµ\":102221,\"æĦŁæĥħ\":102222,\"èµļ\":102223,\"åĵªäºĽ\":102224,\"æķ´æĶ¹\":102225,\"æĪĲçĨŁ\":102226,\"å¨ľ\":102227,\"é¼»\":102228,\"çŁĽ\":102229,\"çĽ¾\":102230,\"å¥½å¥½\":102231,\"ç¬¬åĽĽ\":102232,\"åĨłåĨĽ\":102233,\"è´¢å¯Į\":102234,\"æľĢå¥½çļĦ\":102235,\"è½¦åŀĭ\":102236,\"éĸĢ\":102237,\"åį³å°Ĩ\":102238,\"åĪĨä¸º\":102239,\"éĿĴå²Ľ\":102240,\"çº·çº·\":102241,\"ä»ĬæĹ¥\":102242,\"å¹³è¡¡\":102243,\"å¹³æĸ¹ç±³\":102244,\"éĤ£ç§į\":102245,\"åĩºçĶŁ\":102246,\"éĿĴæĺ¥\":102247,\"äººç¾¤\":102248,\"äººå·¥\":102249,\"ä¹ĭä¸ĭ\":102250,\"æ¹ĸåĮĹ\":102251,\"åľ¨æŃ¤\":102252,\"åįļå£«\":102253,\"æĹ¶åĪ»\":102254,\"æ²³åĮĹ\":102255,\"æĶ¾å¼ĥ\":102256,\"éĢļéģĵ\":102257,\"æ£®æŀĹ\":102258,\"çĸĨ\":102259,\"æķ¸\":102260,\"èĬ³\":102261,\"æīĵåĩ»\":102262,\"æĽ¹\":102263,\"åĮĸåŃ¦\":102264,\"æĥ³è±¡\":102265,\"ä¸ĩäºº\":102266,\"è´¢ç»ı\":102267,\"åħĥç´ł\":102268,\"ä¼ļè®¡\":102269,\"åħ¨ä½ĵ\":102270,\"æĦĽ\":102271,\"é«ĺä¸Ń\":102272,\"æľºéģĩ\":102273,\"å£°éŁ³\":102274,\"æĹħè¡Į\":102275,\"æµ©\":102276,\"æŁ±\":102277,\"å°ĳå¹´\":102278,\"åĽ½å¤ĸ\":102279,\"èĳĹåĲį\":102280,\"çĶŁåŃĺ\":102281,\"å§ľ\":102282,\"å¸¦é¢Ĩ\":102283,\"é¢ľèī²\":102284,\"ä¸Ĭä¸ĭ\":102285,\"äº§ä¸ļéĵ¾\":102286,\"æĽ´å¥½çļĦ\":102287,\"å²Ń\":102288,\"ä¼ĺæĥł\":102289,\"ä¾¿æĺ¯\":102290,\"åħ§å®¹\":102291,\"ä¸Ģåıª\":102292,\"çĲ´\":102293,\"æ¢¦æĥ³\":102294,\"ç§Łèµģ\":102295,\"å¼ĢåĲ¯\":102296,\"è´Ńçī©\":102297,\"åĮħåĲ«\":102298,\"åĪ©çİĩ\":102299,\"èµ·äºĨ\":102300,\"æľīåĬĽ\":102301,\"éĤ£éĩĮ\":102302,\"å®¡æī¹\":102303,\"å¯¹æīĭ\":102304,\"çİ°éĩĳ\":102305,\"å¤©çĦ¶\":102306,\"çĽĴ\":102307,\"çĪ½\":102308,\"å¿ħçĦ¶\":102309,\"åĮĸå·¥\":102310,\"ä¸ĵåĪ©\":102311,\"åķ¡\":102312,\"å¼Ģå¿ĥ\":102313,\"äººä½ĵ\":102314,\"éģĵå£«\":102315,\"æĢģåº¦\":102316,\"ç©ºè°ĥ\":102317,\"æĭĽåķĨ\":102318,\"å§»\":102319,\"ç¬¬äºĶ\":102320,\"æ£Ĵ\":102321,\"ä¸Ģç³»åĪĹ\":102322,\"åį±æľº\":102323,\"è½¬åıĺ\":102324,\"åľºæīĢ\":102325,\"é¸£\":102326,\"æĪ¿éĹ´\":102327,\"éĢ¼\":102328,\"è¯ķçĤ¹\":102329,\"å¯¹å¤ĸ\":102330,\"åĩºåı°\":102331,\"åľ¨è¿Ļ\":102332,\"åİĤå®¶\":102333,\"å·¨å¤§\":102334,\"ç®Ģä»ĭ\":102335,\"çľĭäºĨ\":102336,\"åħļå»º\":102337,\"æĮĩæĮ¥\":102338,\"çŁ³æ²¹\":102339,\"ä¸įåı¯èĥ½\":102340,\"èİ²\":102341,\"ä¸įå¤ª\":102342,\"åĪĽæĦı\":102343,\"ç¬¬ä¸Ģä¸ª\":102344,\"è´µå·ŀ\":102345,\"è¿ĩäºĨ\":102346,\"æľ¬æĿ¥\":102347,\"éģĵå¾·\":102348,\"çŃĶæ¡Ī\":102349,\"éĻ¶\":102350,\"ä¸Ģè·¯\":102351,\"èĤĸ\":102352,\"æ¸ħæ´ģ\":102353,\"æľīæľº\":102354,\"åĲįåįķ\":102355,\"æĿ±\":102356,\"åĳ¼åĲ¸\":102357,\"ä¸Ī\":102358,\"ç¦ıå»º\":102359,\"è¯ķéªĮ\":102360,\"å¼ķåıĳ\":102361,\"ä¹Łæ²¡\":102362,\"ä¸įä½ı\":102363,\"çĨŁæĤī\":102364,\"èĲ¬\":102365,\"ä¸įèī¯\":102366,\"çłĸ\":102367,\"èĩ´åĬĽ\":102368,\"çŃ¾è®¢\":102369,\"åĲĬ\":102370,\"ä¾¯\":102371,\"çĺ¦\":102372,\"å§ĳå¨ĺ\":102373,\"æĸ¤\":102374,\"å¦»åŃĲ\":102375,\"æĺ¥èĬĤ\":102376,\"çĪ¬\":102377,\"æĽĿ\":102378,\"çĥŃæĥħ\":102379,\"éķ¿æ²Ļ\":102380,\"èĲ¥éĢł\":102381,\"éħ·\":102382,\"éĵĿ\":102383,\"åŁºæľ¬ä¸Ĭ\":102384,\"åĳ¨åĽ´\":102385,\"ä»Ģéº¼\":102386,\"è®¤åı¯\":102387,\"åĪĨåŃĲ\":102388,\"ä¸Ģæĸ¹éĿ¢\":102389,\"è½´\":102390,\"å¼·\":102391,\"é©¬ä¸Ĭ\":102392,\"éĽ¾\":102393,\"èĩ£\":102394,\"å°¿\":102395,\"çĶŁæĦı\":102396,\"å®īå¾½\":102397,\"ç¥ŀç»ı\":102398,\"åĩºå¸Ń\":102399,\"èį¯åĵģ\":102400,\"çĲĨçĶ±\":102401,\"åįıåĲĮ\":102402,\"æµģåĬ¨\":102403,\"åıĳåĬ¨\":102404,\"åĿļå®ļ\":102405,\"è¡¨æĺİ\":102406,\"åĲİéĿ¢\":102407,\"ä¹īåĬ¡\":102408,\"å¦ĸ\":102409,\"æľīåı¯èĥ½\":102410,\"å¹´è½»äºº\":102411,\"å¤§éĻĨ\":102412,\"å²³\":102413,\"ä¸įèµ·\":102414,\"çŀ¬éĹ´\":102415,\"ä¸įå¾Ĺä¸į\":102416,\"çŃ¾çº¦\":102417,\"åĲĪæł¼\":102418,\"åħļæĶ¯éĥ¨\":102419,\"æµİåįĹ\":102420,\"ä¾¿åĪ©\":102421,\"éļıæĹ¶\":102422,\"å¥ī\":102423,\"ç§°ä¸º\":102424,\"äº§æĿĥ\":102425,\"åĲķ\":102426,\"çĽĨ\":102427,\"è¯¾åłĤ\":102428,\"ç·ļ\":102429,\"æ£ī\":102430,\"çº¿ä¸ĭ\":102431,\"èĩªè¡Į\":102432,\"ä¸¾æİª\":102433,\"åİ¦éĹ¨\":102434,\"èĩªä¿¡\":102435,\"å½±è§Ĩ\":102436,\"ä»Ķ\":102437,\"çĶŁæ´»ä¸Ń\":102438,\"æĿĥçĽĬ\":102439,\"çĻ½èī²\":102440,\"å°±ä¸į\":102441,\"è¿Ľå±ķ\":102442,\"æ¯ıæĹ¥\":102443,\"ä¾Ľç»Ļ\":102444,\"æĿĥåĪ©\":102445,\"æĹłæķ°\":102446,\"çĲĨè´¢\":102447,\"ä¾ĿæĹ§\":102448,\"ä¸ĬåįĪ\":102449,\"è¯ĨåĪ«\":102450,\"çĽĪåĪ©\":102451,\"çłĤ\":102452,\"è®¸åı¯\":102453,\"åĲĮäºĭ\":102454,\"åĺĽ\":102455,\"éģ¸\":102456,\"çĿĢåĬĽ\":102457,\"éĹ¨åı£\":102458,\"ä¸įå¤ļ\":102459,\"åħ¶æ¬¡\":102460,\"ç¢§\":102461,\"çī©çĲĨ\":102462,\"åĨħå¿ĥ\":102463,\"çĻ¾å§ĵ\":102464,\"æĢ»ç»Ł\":102465,\"å¹²åĩĢ\":102466,\"ç§¯ç´¯\":102467,\"åıįé¦Ī\":102468,\"æłĳç«ĭ\":102469,\"ç¤¾äº¤\":102470,\"ç§©\":102471,\"åįģä¸Ģ\":102472,\"éĤĵ\":102473,\"é©±åĬ¨\":102474,\"å±ķè§Ī\":102475,\"èĪĴéĢĤ\":102476,\"åŁºåĽł\":102477,\"å·®å¼Ĥ\":102478,\"è½¬è®©\":102479,\"å°ıå§Ĳ\":102480,\"æł·åŃĲ\":102481,\"ç¿Ķ\":102482,\"é«ĺåħ´\":102483,\"å½±åĵįåĬĽ\":102484,\"æīĭç»Ń\":102485,\"çĽ¸åĲĮ\":102486,\"çĽ¸åºĶ\":102487,\"æĻĴ\":102488,\"è§Ģ\":102489,\"å¸Ĥå§Ķ\":102490,\"èĬ¯\":102491,\"å±ķçİ°\":102492,\"åľ°çĲĥ\":102493,\"éĤª\":102494,\"ä¸Ģå®ļçļĦ\":102495,\"åħģè®¸\":102496,\"ä¿¡ä»»\":102497,\"æīĳ\":102498,\"éĻ¢æł¡\":102499,\"ç®Ģç§°\":102500,\"åģļæ³ķ\":102501,\"ä¹ĭè·¯\":102502,\"æĹĹä¸ĭ\":102503,\"èħĶ\":102504,\"æ¶Īå¤±\":102505,\"ä¸ĸçķĮä¸Ĭ\":102506,\"åŁİä¹¡\":102507,\"èĪŀåı°\":102508,\"å¾Īå¤§çļĦ\":102509,\"ç»ŁçŃ¹\":102510,\"åħ¬å¹³\":102511,\"èĤ¾\":102512,\"çļĦå¥½\":102513,\"æ±ģ\":102514,\"çľ¼åīį\":102515,\"éĽ£\":102516,\"å¹½\":102517,\"åħ±äº§\":102518,\"ä¸»åĬŀ\":102519,\"å¤Ħç½ļ\":102520,\"åºĻ\":102521,\"éģĵçĲĨ\":102522,\"å¼µ\":102523,\"æİ¥çĿĢ\":102524,\"çĮİ\":102525,\"çģĮ\":102526,\"çĶ±æŃ¤\":102527,\"äººåĬĽ\":102528,\"æµģè¡Į\":102529,\"ä¾ł\":102530,\"åı¯ä»¥è¯´\":102531,\"èĴĭ\":102532,\"å½¢æĢģ\":102533,\"æĹ¥åŃĲ\":102534,\"æ¼Ĩ\":102535,\"çķĻåŃ¦\":102536,\"çĽ¸éĹľ\":102537,\"æľĢå¤ļ\":102538,\"åĩŃåĢŁ\":102539,\"åħ¬äº¤\":102540,\"æĮĸæİĺ\":102541,\"æĿĤå¿Ĺ\":102542,\"ä¸»äºº\":102543,\"éļľç¢į\":102544,\"æł¡éķ¿\":102545,\"æĸ¹ä½į\":102546,\"ä¸ĬçıŃ\":102547,\"å¤ļåħĥ\":102548,\"èĥģ\":102549,\"éŃħåĬĽ\":102550,\"èĮĤ\":102551,\"åħħçĶµ\":102552,\"å¼ºå¤§\":102553,\"çĥ¤\":102554,\"å¥ĭæĸĹ\":102555,\"å®ŀçĶ¨\":102556,\"éĺģ\":102557,\"ç»ĻäºĨ\":102558,\"æľ¬ç§ĳ\":102559,\"æłĭ\":102560,\"æĭ¨\":102561,\"æķĻç»ĥ\":102562,\"éĥ½çŁ¥éģĵ\":102563,\"æ¯ķä¸ļçĶŁ\":102564,\"ç¢Ĺ\":102565,\"åŀĤ\":102566,\"è®¼\":102567,\"å®ģæ³¢\":102568,\"åŃ¦èĢħ\":102569,\"è°¢è°¢\":102570,\"åŁİéķĩ\":102571,\"æĢİä¹ĪåĬŀ\":102572,\"éģĶ\":102573,\"æĪĲäº¤\":102574,\"æ½ľåĬĽ\":102575,\"åį§\":102576,\"æĸ°å¼Ģ\":102577,\"éħįå¤ĩ\":102578,\"ä¸»åĬĽ\":102579,\"åĳ³éģĵ\":102580,\"çĥĤ\":102581,\"é£ŀè¡Į\":102582,\"å«ģ\":102583,\"å¤§å¤§\":102584,\"ç»Ļå¤§å®¶\":102585,\"å¤ĸéĿ¢\":102586,\"éĨī\":102587,\"åıĳè¨Ģ\":102588,\"æĹ©é¤Ĳ\":102589,\"åĲĦèĩª\":102590,\"å®Ļ\":102591,\"èį£èªī\":102592,\"æĬ«éľ²\":102593,\"é¡ŀ\":102594,\"åĨħçļĦ\":102595,\"èĤª\":102596,\"è¾Ĳ\":102597,\"æ³µ\":102598,\"æĬĽ\":102599,\"æĺŁæľŁ\":102600,\"ä¸Ģå¸¦\":102601,\"çĶŁç´ł\":102602,\"ç»ıéĶĢ\":102603,\"åĩ¶\":102604,\"åľ°ä¸Ĭ\":102605,\"åĳ½è¿Ĳ\":102606,\"åĵ²\":102607,\"ä¸Ĭåİ»\":102608,\"æĸĩçī©\":102609,\"è¯ĳ\":102610,\"æĮ¯åħ´\":102611,\"éķ¿æĹ¶éĹ´\":102612,\"ç¥Ń\":102613,\"åĲĪèĤ¥\":102614,\"è¿Ŀè§Ħ\":102615,\"èģª\":102616,\"ä½İäºİ\":102617,\"éĢĤå½ĵ\":102618,\"æľīåºı\":102619,\"æľ¬ç½ĳ\":102620,\"çķĻè¨Ģ\":102621,\"æĥ³æ³ķ\":102622,\"çŃ¾ç½²\":102623,\"å§ļ\":102624,\"æĢ§æł¼\":102625,\"èĴĻåı¤\":102626,\"æŁı\":102627,\"åŀ«\":102628,\"åŃ¦åİĨ\":102629,\"ä»ħä»ħ\":102630,\"è®²è¯Ŀ\":102631,\"éĶĲ\":102632,\"æĢĸ\":102633,\"åīª\":102634,\"èĭį\":102635,\"åĲĵ\":102636,\"å¼ºçĥĪ\":102637,\"åģ¥åħ¨\":102638,\"çĸ¯\":102639,\"åı¤ä»£\":102640,\"å¥Ī\":102641,\"ä¸įçĦ¶\":102642,\"ä¹¡éķĩ\":102643,\"æľĭåıĭä»¬\":102644,\"åĤħ\":102645,\"èģ½\":102646,\"ä¸ªæĢ§\":102647,\"æ³ķè§Ħ\":102648,\"å°ıéķĩ\":102649,\"çĶ»éĿ¢\":102650,\"ç¬¬åħŃ\":102651,\"ç¶²è·¯\":102652,\"åīįæĻ¯\":102653,\"åĲ¬è¯´\":102654,\"ä¼łåªĴ\":102655,\"æĿ¡ä¾ĭ\":102656,\"åĪ«çļĦ\":102657,\"ä¸įæĩĤ\":102658,\"é¡¾éĹ®\":102659,\"å¼ºåº¦\":102660,\"éĺ¿éĩĮ\":102661,\"èµ°åĬ¿\":102662,\"å¸½\":102663,\"çļĦç¡®\":102664,\"åĮºåĪ«\":102665,\"éĮ¢\":102666,\"ä¸»ç®¡\":102667,\"ä¸Ģçľĭ\":102668,\"æĸľ\":102669,\"åŃĺåľ¨çļĦ\":102670,\"ä»²\":102671,\"åį±å®³\":102672,\"éĵŃ\":102673,\"æ¸¸æĪıä¸Ń\":102674,\"éħ±\":102675,\"é¾Ļå¤´\":102676,\"äººå¿ĥ\":102677,\"éĢĢä¼ĳ\":102678,\"æµıè§Ī\":102679,\"åĬ«\":102680,\"éĺ²æ²»\":102681,\"ç®Ń\":102682,\"å±Ī\":102683,\"è¾½å®ģ\":102684,\"å£¤\":102685,\"è¿İæĿ¥\":102686,\"éŀį\":102687,\"çĶ¨æĿ¥\":102688,\"å¤§åľ°\":102689,\"ä»°\":102690,\"éĢļè®¯\":102691,\"å¼Ģå·¥\":102692,\"è£¤\":102693,\"å¦ĤåĲĮ\":102694,\"éª¤\":102695,\"éĺŁåĳĺ\":102696,\"è½©\":102697,\"ç¾İæľ¯\":102698,\"èĻŁ\":102699,\"åĲĮä¸Ģ\":102700,\"åľĸ\":102701,\"ä¹¦æ³ķ\":102702,\"æīĵåį°\":102703,\"åĲ«æľī\":102704,\"éĽĨæĪĲ\":102705,\"éĹ·\":102706,\"å¸Ĥåľºä¸Ĭ\":102707,\"æĹģè¾¹\":102708,\"åľ°æĿ¿\":102709,\"äº§çĶŁçļĦ\":102710,\"ç²¤\":102711,\"éĩįç»Ħ\":102712,\"è¡Ģæ¶²\":102713,\"çŃĭ\":102714,\"åĬŀäºĭ\":102715,\"å¸¸è§ģçļĦ\":102716,\"ä¸ĬåįĬå¹´\":102717,\"å±ıå¹ķ\":102718,\"åĲīæŀĹ\":102719,\"å·©\":102720,\"åĸľçĪ±\":102721,\"ç¿ł\":102722,\"ä¸īç§į\":102723,\"æ¡Ĩæŀ¶\":102724,\"ä¸ľèİŀ\":102725,\"çĶĺèĤĥ\":102726,\"èĬ¬\":102727,\"åĽ¾ä¹¦\":102728,\"åĩ¤åĩ°\":102729,\"æ°ĶåĢĻ\":102730,\"å°´\":102731,\"å°¬\":102732,\"ä¸¤å¤©\":102733,\"è¾ħå¯¼\":102734,\"åĢŁæ¬¾\":102735,\"æĹ¥èµ·\":102736,\"æ´Ĵ\":102737,\"ä¸Ģåº¦\":102738,\"è¹Ī\":102739,\"æ½Ń\":102740,\"æīĩ\":102741,\"çĻľ\":102742,\"æĸ°åħ´\":102743,\"åĤ²\":102744,\"è¯¸å¤ļ\":102745,\"è´ª\":102746,\"éĻ·åħ¥\":102747,\"èĪŁ\":102748,\"èĤºçĤİ\":102749,\"ä¸Ģæł·çļĦ\":102750,\"åİĺ\":102751,\"åľ°çĲĨ\":102752,\"æĬķæ³¨\":102753,\"éļĬ\":102754,\"åħīä¼ı\":102755,\"ä¿Ŀåģ¥\":102756,\"åħĶ\":102757,\"åħ¬åĬ¡\":102758,\"æīĵçł´\":102759,\"çĶ·åŃ©\":102760,\"åĬ³åĬ¡\":102761,\"ä½łä¼ļ\":102762,\"çĶ¨åľ°\":102763,\"æº¢\":102764,\"åıĳè¾¾\":102765,\"èĤļ\":102766,\"è¿ĩäºİ\":102767,\"èĩĤ\":102768,\"éĢĻæ¨£\":102769,\"è½»è½»\":102770,\"ä¸Ńåħ±\":102771,\"åĲĦåĽ½\":102772,\"åĶĩ\":102773,\"å®ŀä¹ł\":102774,\"èĻ¾\":102775,\"æ§½\":102776,\"ä¸įä¸Ĭ\":102777,\"åħįçĸ«\":102778,\"åįłæį®\":102779,\"å·¥ä¼ļ\":102780,\"åĽĬ\":102781,\"èĪªå¤©\":102782,\"åı¯çĪ±\":102783,\"æĸĹäºī\":102784,\"çĺ¤\":102785,\"å¦Ĥæľī\":102786,\"éĽĸ\":102787,\"å¯¹æĪĳ\":102788,\"åĩºç§Ł\":102789,\"å¥½çľĭ\":102790,\"å¤ªå¤§\":102791,\"æ°´åĪ©\":102792,\"åĬ¿åĬĽ\":102793,\"åħ¨æ°ĳ\":102794,\"ç½¢\":102795,\"èµ¢å¾Ĺ\":102796,\"çĶµä¿¡\":102797,\"è½¦éĹ´\":102798,\"æĻĤåĢĻ\":102799,\"å°ĳæķ°\":102800,\"éĵ¸\":102801,\"åħ³èģĶ\":102802,\"ä¸įä»ħä»ħ\":102803,\"ä¸ºæĤ¨\":102804,\"åĴ¸\":102805,\"æľºåĬ¨\":102806,\"è£Ļ\":102807,\"åĵįåºĶ\":102808,\"éģł\":102809,\"è²·\":102810,\"ç©´\":102811,\"å¢ħ\":102812,\"éĶ¡\":102813,\"çµĦ\":102814,\"çģ«è½¦\":102815,\"è³ĩè¨Ĭ\":102816,\"åĨ³èµĽ\":102817,\"æ±¡æ°´\":102818,\"èªŀ\":102819,\"å´Ľ\":102820,\"ç´§å¯Ĩ\":102821,\"ç¼ºå°ĳ\":102822,\"å¤ļäºº\":102823,\"æĢ»ä¹¦è®°\":102824,\"éĶĪ\":102825,\"èĳĽ\":102826,\"å¿ĺè®°\":102827,\"éĻĮçĶŁ\":102828,\"éķ¿å¤§\":102829,\"åħĪè¿ĽçļĦ\":102830,\"ç¡ħ\":102831,\"åıĳæĺİ\":102832,\"å©´åĦ¿\":102833,\"æīİå®ŀ\":102834,\"èĽĭçĻ½\":102835,\"ä¸ĢçĻ¾\":102836,\"çĽ®åħī\":102837,\"æħĮ\":102838,\"åĬłæ²¹\":102839,\"åĲŀ\":102840,\"ä¸Ģç¾¤\":102841,\"ä¸Ńä»ĭ\":102842,\"å¸ĸ\":102843,\"å¿Į\":102844,\"èģĮèĥ½\":102845,\"å¹¿æĴŃ\":102846,\"çĽĳå¯Ł\":102847,\"ç§ĺå¯Ĩ\":102848,\"çĭ®\":102849,\"è¿ĻæĿ¡\":102850,\"éĢ¢\":102851,\"æĢ¨\":102852,\"åįģåħŃ\":102853,\"è©¦\":102854,\"è¯´åĪ°\":102855,\"åĩĿèģļ\":102856,\"æĮĩç¤º\":102857,\"æ°¢\":102858,\"å¼ĺ\":102859,\"éĺĢ\":102860,\"æĸ©\":102861,\"éłħ\":102862,\"ä¸Ģå¼Ģå§ĭ\":102863,\"æİĴè¡Į\":102864,\"åľ¨æĪĳ\":102865,\"çºªå½ķ\":102866,\"æĬĦ\":102867,\"æłª\":102868,\"è¯´æ³ķ\":102869,\"ä¸Ńèį¯\":102870,\"å¥½å¤ļ\":102871,\"åıªä¸įè¿ĩ\":102872,\"çķĻåľ¨\":102873,\"ä¸ªå°ıæĹ¶\":102874,\"è®¤çŁ¥\":102875,\"çķ«\":102876,\"è§ģè¿ĩ\":102877,\"å°ıå¾®\":102878,\"ä½Ľå±±\":102879,\"çľ¾\":102880,\"è®²è¿°\":102881,\"æ¢³\":102882,\"ç§°åı·\":102883,\"æĹ¥æĻļ\":102884,\"è¢ĸ\":102885,\"åķ¤\":102886,\"æľªç»ı\":102887,\"æľĢæĹ©\":102888,\"æī®æ¼Ķ\":102889,\"è¡Ģç®¡\":102890,\"çº±\":102891,\"æĥħèĬĤ\":102892,\"ç¬¬ä¸ĥ\":102893,\"æį§\":102894,\"ä»Ĺ\":102895,\"æ¿ĢçĥĪ\":102896,\"æĹłçº¿\":102897,\"ä¸įå®¹æĺĵ\":102898,\"å¼Ģå¹ķ\":102899,\"æĸ°çĶŁ\":102900,\"ä¸ĵæ³¨\":102901,\"èĳ±\":102902,\"åįĹæµ·\":102903,\"çĩŁ\":102904,\"èµ·ä¾Ĩ\":102905,\"æ´¾åĩº\":102906,\"åĦĴ\":102907,\"ä¾¨\":102908,\"è¼ĥ\":102909,\"åįļè§Ī\":102910,\"éĢ¾\":102911,\"åĮĢ\":102912,\"ç»ıæµİåŃ¦\":102913,\"æ¸Ĺ\":102914,\"ä¿ĿèŃ·\":102915,\"çīº\":102916,\"çī²\":102917,\"çİ«\":102918,\"çĳ°\":102919,\"æľĢåĲİä¸Ģ\":102920,\"æĶ¿åĬ¡\":102921,\"æ§Ľ\":102922,\"èĻķçĲĨ\":102923,\"éļĲæĤ£\":102924,\"æī¿åĮħ\":102925,\"æ¥µ\":102926,\"æ¡©\":102927,\"çĽ²\":102928,\"å¯¼åĲĳ\":102929,\"èĩ´å¯Į\":102930,\"ç¼Ĩ\":102931,\"æģĭçĪ±\":102932,\"ä¸įåĬ¨\":102933,\"ç»Ļäºº\":102934,\"å·¢\":102935,\"è¡¨æĥħ\":102936,\"ä¸ľåįĹ\":102937,\"åĨħå¤ĸ\":102938,\"è¾ĪåŃĲ\":102939,\"åıī\":102940,\"åįļä¼ļ\":102941,\"åĬŁæķĪ\":102942,\"æ¸´\":102943,\"å±¬\":102944,\"æİĴéĻ¤\":102945,\"éĢĽ\":102946,\"ä¸Ģä¼ļ\":102947,\"ä¸įå¼Ģ\":102948,\"å¼Ģå¥ĸ\":102949,\"é»ĳé¾Ļ\":102950,\"é»ĳé¾Ļæ±Ł\":102951,\"å¿«ä¸ī\":102952,\"åº¦åģĩ\":102953,\"åĿ¤\":102954,\"éĤ®ä»¶\":102955,\"æĩĴ\":102956,\"ä¾ĽçĶµ\":102957,\"å»£\":102958,\"å¥½è¯Ħ\":102959,\"ç§ĺä¹¦éķ¿\":102960,\"æĪĺåľº\":102961,\"å¥½å¥ĩ\":102962,\"ä¾µæĿĥ\":102963,\"æĨ¾\":102964,\"æľĢåĪĿ\":102965,\"æī¹åıĳ\":102966,\"åİķ\":102967,\"è¼ķ\":102968,\"æŀ¯\":102969,\"ä¸ļåĨħ\":102970,\"è´ŃæĪ¿\":102971,\"ä¸įåľ¨\":102972,\"çºªå§Ķ\":102973,\"æīĢéľĢ\":102974,\"å¸Ĥéķ¿\":102975,\"è³½\":102976,\"å¼ķæĵİ\":102977,\"çģµéŃĤ\":102978,\"éĬĢ\":102979,\"æ»¤\":102980,\"çĿĲ\":102981,\"å¤ļé¡¹\":102982,\"åĽŀå¤´\":102983,\"èīĺ\":102984,\"å¤įå·¥\":102985,\"éĥ¨ä»¶\":102986,\"ç´§ç´§\":102987,\"æŁĲç§į\":102988,\"ä½¿åħ¶\":102989,\"æĸ°äºº\":102990,\"æŀļ\":102991,\"æ³ķå®ļ\":102992,\"å·´å·´\":102993,\"æ¶µçĽĸ\":102994,\"ç¨»\":102995,\"æĭ¾\":102996,\"æĻķ\":102997,\"è½¿\":102998,\"éĢļè¡Į\":102999,\"åĵĢ\":103000,\"æ³Ĭ\":103001,\"æ¸©é¦¨\":103002,\"éĽĨèģļ\":103003,\"çĨĻ\":103004,\"åĩĳ\":103005,\"åįģä¸ĥ\":103006,\"æ°Ķæģ¯\":103007,\"æıĲä¾ĽçļĦ\":103008,\"æ³³\":103009,\"å¥¥è¿Ĳ\":103010,\"çģ¾å®³\":103011,\"åĩĢåĮĸ\":103012,\"è·¨è¶Ĭ\":103013,\"åĵªæĢķ\":103014,\"éŁ¿\":103015,\"å¢ŀæ·»\":103016,\"çĦĬ\":103017,\"æ®ĭçĸ¾\":103018,\"ç¢Į\":103019,\"æĤĶ\":103020,\"è§ģè¯ģ\":103021,\"è¾ĸåĮº\":103022,\"å¿ĥèĦı\":103023,\"éļ§\":103024,\"åį¸\":103025,\"åı¯èĥ½æĢ§\":103026,\"æľīè¶£\":103027,\"åī¯ä¹¦è®°\":103028,\"åĮĸå¦Ĩ\":103029,\"ä¿Ĥ\":103030,\"æ£ļ\":103031,\"éĨĩ\":103032,\"å¸¦å¤´\":103033,\"éłĪ\":103034,\"è¿½ç©¶\":103035,\"æĳĶ\":103036,\"è¿Ļéĥ¨\":103037,\"ä¸įè®º\":103038,\"ç¥¸\":103039,\"å³»\":103040,\"éģķ\":103041,\"çĶŁèĤ²\":103042,\"å¤ł\":103043,\"å¤ĸäº¤\":103044,\"è¯Ħä¸º\":103045,\"ä»İå°ı\":103046,\"å°ıå°ı\":103047,\"é¥¿\":103048,\"æĴ¼\":103049,\"è·¨å¢ĥ\":103050,\"è¢«åĳĬ\":103051,\"åįĹå®ģ\":103052,\"èº«å¿ĥ\":103053,\"åĨįçĶŁ\":103054,\"æīĢè¯´\":103055,\"æĹ¶éĹ´åĨħ\":103056,\"åĪĹåħ¥\":103057,\"éĿĴæµ·\":103058,\"çĪ±å¥½\":103059,\"çªĦ\":103060,\"èĪĪ\":103061,\"è¿ĩæ¸¡\":103062,\"æ¿Ł\":103063,\"éĽĢ\":103064,\"å®¡è®®\":103065,\"åĽ½èµĦ\":103066,\"æŃ¥ä¼Ĳ\":103067,\"è½¨éģĵ\":103068,\"ä¿¡å¿µ\":103069,\"ä¸īåĪĨ\":103070,\"çĨ¬\":103071,\"åŃµåĮĸ\":103072,\"ç¼ł\":103073,\"éĥĬ\":103074,\"èĪĴæľį\":103075,\"çºªæ£Ģ\":103076,\"ä¸Ģä¸ĭåŃĲ\":103077,\"éĽ»è©±\":103078,\"è²ł\":103079,\"éĴ¥\":103080,\"åĮĻ\":103081,\"çĹ´\":103082,\"è¶ģ\":103083,\"ç»£\":103084,\"çĪµ\":103085,\"è½°\":103086,\"éªĦ\":103087,\"å§¨\":103088,\"æĭĺ\":103089,\"çĮ´\":103090,\"è®¶\":103091,\"è¿Ļåº§\":103092,\"çį¨\":103093,\"æ·ĺæ±°\":103094,\"çĹħä¾ĭ\":103095,\"æ²Ļåıĳ\":103096,\"è§Ĩä¸º\":103097,\"å¤´æĿ¡\":103098,\"å¿ħè¦ģçļĦ\":103099,\"åı¯è°ĵ\":103100,\"è¯Ŀè¯´\":103101,\"ç¯Ħ\":103102,\"æĹ©çĤ¹\":103103,\"æŀ¢çº½\":103104,\"ç¾¡\":103105,\"çĪ±åĽ½\":103106,\"çªģåıĳ\":103107,\"éĢĬ\":103108,\"æ½į\":103109,\"èį£èĢĢ\":103110,\"èŁ¹\":103111,\"æ¦Ĥçİĩ\":103112,\"å¾Īä¹ħ\":103113,\"æĥķ\":103114,\"è¨´\":103115,\"åľĨæ»¡\":103116,\"çļ±\":103117,\"åĪĨæ³Į\":103118,\"åħħè¶³\":103119,\"çľĭæ³ķ\":103120,\"è¾Ł\":103121,\"æĭ¦\":103122,\"æĭ©\":103123,\"å¯¹åºĶ\":103124,\"ä¸ºæł¸å¿ĥ\":103125,\"èħĬ\":103126,\"å¤ļä¹Ī\":103127,\"æµĳ\":103128,\"å®ıè§Ĥ\":103129,\"èĦĸ\":103130,\"åĲĪèµĦ\":103131,\"çĶŁæ¶¯\":103132,\"å®ŀè´¨\":103133,\"ä¼ĺçĤ¹\":103134,\"çĶ¨æ°´\":103135,\"å¯¿åĳ½\":103136,\"æ²«\":103137,\"åĲģ\":103138,\"è©¹\":103139,\"åĽ½éĺ²\":103140,\"å´©\":103141,\"åĿİ\":103142,\"èĨı\":103143,\"ä¸Ģè½®\":103144,\"éģĹäº§\":103145,\"æ¹¾åĮº\":103146,\"ç»İ\":103147,\"åįķçº¯\":103148,\"æ¾Ħ\":103149,\"åīįåĪĹ\":103150,\"èº«å½±\":103151,\"é»ĺé»ĺ\":103152,\"æįī\":103153,\"çĴ°\":103154,\"èıĬ\":103155,\"æĢľ\":103156,\"åħĭæĢĿ\":103157,\"æĢ»å±Ģ\":103158,\"çĩĥæĸĻ\":103159,\"ä¸ļæĢģ\":103160,\"åĲĦæł·\":103161,\"åĴ½\":103162,\"åĩºèī²\":103163,\"åĪĿå¿ĥ\":103164,\"åıĽ\":103165,\"çłĶè®¨\":103166,\"è¡«\":103167,\"åİĨç¨ĭ\":103168,\"ç¦½\":103169,\"è¶³å¤ŁçļĦ\":103170,\"èįĨ\":103171,\"çľĭå¾ħ\":103172,\"è´©\":103173,\"åĨ³å¿ĥ\":103174,\"è£¹\":103175,\"å¸ĪèĮĥ\":103176,\"åŀĦ\":103177,\"æĿł\":103178,\"åĩ¸\":103179,\"çĬ¹è±«\":103180,\"çĥŃè¡Ģ\":103181,\"åĲĪä¼Ļ\":103182,\"éħµ\":103183,\"èĲ½åľ¨\":103184,\"åįłåľ°\":103185,\"è¡¬\":103186,\"èĵī\":103187,\"æĦ¤\":103188,\"æ¸Ĭ\":103189,\"åĪĨæķ°\":103190,\"ç¬ĳçĿĢ\":103191,\"å¤ªå¹³\":103192,\"çĤ«\":103193,\"æİ¨ä»ĭ\":103194,\"æĸ¯åĿ¦\":103195,\"å½¢å®¹\":103196,\"æĵĬ\":103197,\"æĦŁåħ´è¶£\":103198,\"åĨĽäºº\":103199,\"åĩĮæĻ¨\":103200,\"å¯¹çħ§\":103201,\"åıĳçĹħ\":103202,\"å·¾\":103203,\"èĪī\":103204,\"æª¢\":103205,\"ç¬ĳäºĨ\":103206,\"ç¡®è¯Ĭ\":103207,\"è´ŁåĢº\":103208,\"å£®å¤§\":103209,\"æĪļ\":103210,\"äºĴèģĶ\":103211,\"èª²\":103212,\"èħ¦\":103213,\"æĹ±\":103214,\"åıĹæ¬¢è¿İ\":103215,\"åįī\":103216,\"éĻ¢å£«\":103217,\"æ©¡\":103218,\"ä¸Ģå¯¹\":103219,\"è¾±\":103220,\"æ²Ĥ\":103221,\"åı²ä¸Ĭ\":103222,\"æĲı\":103223,\"å´ĸ\":103224,\"ä»£è°¢\":103225,\"ç£·\":103226,\"é¡ĺ\":103227,\"æµĩ\":103228,\"å¸¸çĶ¨\":103229,\"åįĳ\":103230,\"åĩºåĽ½\":103231,\"è¯ł\":103232,\"ç¨³æŃ¥\":103233,\"ç»ıçºª\":103234,\"å¤ļå¤ļ\":103235,\"æīĢå¾Ĺ\":103236,\"ä¸ºä¸»é¢ĺ\":103237,\"ä¸ĢåĪĨ\":103238,\"æł½\":103239,\"é¡§\":103240,\"çº²\":103241,\"åĥħ\":103242,\"å£ĵ\":103243,\"åĦª\":103244,\"ç¿°\":103245,\"æİĢ\":103246,\"äººä¸º\":103247,\"åª³\":103248,\"æ´½\":103249,\"èĿ¶\":103250,\"å¤įåħ´\":103251,\"ä¼ļå½±åĵį\":103252,\"åĲĦçķĮ\":103253,\"éĤ£ä¸Ģ\":103254,\"é¢¤\":103255,\"çĢı\":103256,\"çĢıè¦½\":103257,\"å¯ŀ\":103258,\"åı¯æĢķ\":103259,\"åį³æĹ¶\":103260,\"çķ´\":103261,\"ä¸ĭåįĬå¹´\":103262,\"ç¬Ķè®°\":103263,\"éĻĦåĬł\":103264,\"çĥŃæ°´\":103265,\"å¥¸\":103266,\"ç£ħ\":103267,\"æĿī\":103268,\"æ¸ħåįİ\":103269,\"éĸ±\":103270,\"ç°¡\":103271,\"å¤Ħå¤Ħ\":103272,\"åĲĪéĩĳ\":103273,\"æ²³æµģ\":103274,\"ç´°\":103275,\"è´ŁéĿ¢\":103276,\"çļĦçľŁå®ŀ\":103277,\"åĻ¨æ¢°\":103278,\"èĴĲ\":103279,\"è¥¿äºļ\":103280,\"å·ħ\":103281,\"ç²¹\":103282,\"åİŁæĸĩ\":103283,\"æŀķ\":103284,\"è¡Ģåİĭ\":103285,\"åļ´\":103286,\"å¸ĺ\":103287,\"åĨĢ\":103288,\"æĮ«\":103289,\"çĶµè·¯\":103290,\"å°ıä¼Ļä¼´\":103291,\"èĿ´\":103292,\"æľĢå¿«\":103293,\"æĭĮ\":103294,\"å®ª\":103295,\"æĸ·\":103296,\"ç¿ħ\":103297,\"åĴ³\":103298,\"åĹ½\":103299,\"ç¾ŀ\":103300,\"èººåľ¨\":103301,\"èµĽè½¦\":103302,\"æ²Ĳ\":103303,\"éĻĲåº¦\":103304,\"ä¸ºä¸Ģä½ĵ\":103305,\"èĴľ\":103306,\"å¹«\":103307,\"æĲħ\":103308,\"åĭĭ\":103309,\"åīĸ\":103310,\"çº³ç¨İ\":103311,\"éķ¿æķĪ\":103312,\"ç½ķ\":103313,\"åī¯æľ¬\":103314,\"ç©į\":103315,\"éĴ©\":103316,\"ç¹¼\":103317,\"åĽ½åľŁ\":103318,\"è¼ī\":103319,\"ä¸įå¿ĺ\":103320,\"èŃ¦ç¤º\":103321,\"çģ¿\":103322,\"å¿ĥå¾Ĺ\":103323,\"æĦļ\":103324,\"å¿½çķ¥\":103325,\"åĽŀäºĭ\":103326,\"åįłæľī\":103327,\"æ·Ħ\":103328,\"çī¡\":103329,\"çĽĳäºĭ\":103330,\"ç¿¡\":103331,\"éĴĪå¯¹æĢ§\":103332,\"çªĥ\":103333,\"è£½\":103334,\"èĨĿ\":103335,\"ç³Ł\":103336,\"æ¸¯æ¾³\":103337,\"å¤ªå¤ª\":103338,\"æ¾¡\":103339,\"ç»ĨåĮĸ\":103340,\"åĶ®åĲİ\":103341,\"å®ŀåľ¨æĺ¯\":103342,\"ç«£\":103343,\"çį²\":103344,\"åĢ¾åĲĳ\":103345,\"å¼ķçĶ¨\":103346,\"é¹ħ\":103347,\"ç¬ĳå®¹\":103348,\"ä¹Ĳè¶£\":103349,\"æ°ĳæĶ¿\":103350,\"éĹ¨æĪ·\":103351,\"å±ģ\":103352,\"è¿·å¤±\":103353,\"éĶĮ\":103354,\"å°ıåº·\":103355,\"åĭī\":103356,\"æ³¼\":103357,\"ä¾ĭåŃĲ\":103358,\"ä¸īä½į\":103359,\"å»ł\":103360,\"èĶĵ\":103361,\"å¹¿éĺĶ\":103362,\"èĢį\":103363,\"èĢģèĻİ\":103364,\"åĭŁéĽĨ\":103365,\"èĦļæŃ¥\":103366,\"æĭ¯\":103367,\"åŃĹåı·\":103368,\"çĦ°\":103369,\"é¢ł\":103370,\"èļĤ\":103371,\"èļģ\":103372,\"é£¯\":103373,\"äººæĢ§\":103374,\"æĴ°\":103375,\"åİ¢\":103376,\"å±ĢéĻĲ\":103377,\"æľªæĪĲ\":103378,\"åĵªåĦ¿\":103379,\"å¤§åıĳ\":103380,\"ä¸įå®ļ\":103381,\"å¾ģæ±Ĥ\":103382,\"éĥµ\":103383,\"åĢºæĿĥ\":103384,\"çĪ±ä½ł\":103385,\"èºģ\":103386,\"ä»ħä¾Ľ\":103387,\"è¿ľå¤Ħ\":103388,\"éĨĽ\":103389,\"åĥµ\":103390,\"ç§¯æŀģæĢ§\":103391,\"æİ¡\":103392,\"åīįä¸ī\":103393,\"äºİä¸Ģä½ĵ\":103394,\"çŀĦ\":103395,\"çĿģ\":103396,\"æ²¸\":103397,\"åħ±èµ¢\":103398,\"éĢĢå½¹\":103399,\"è´Ŀå°Ķ\":103400,\"æİı\":103401,\"æĪ²\":103402,\"è¡į\":103403,\"éĶĤ\":103404,\"ä¸ĩä½Ļ\":103405,\"ç§ĳåĪĽ\":103406,\"æ¼ĶåĶ±\":103407,\"æ¬§åħĥ\":103408,\"æ·¡æ·¡\":103409,\"éĿĴå±±\":103410,\"èĹĿ\":103411,\"ç»½\":103412,\"ä»¤çīĮ\":103413,\"éĽĨç¾¤\":103414,\"ä½ľçī©\":103415,\"çĢĳ\":103416,\"å¤¯\":103417,\"ç½ĳæ¸¸\":103418,\"åħ«å¤§\":103419,\"éªļ\":103420,\"èªĵ\":103421,\"ä¼ļå±ķ\":103422,\"åħļåı²\":103423,\"æ£Ģå¯ŁéĻ¢\":103424,\"åĸĺ\":103425,\"éĺ±\":103426,\"èĢĮåĩº\":103427,\"éĢļè½¦\":103428,\"éĴĵ\":103429,\"æĥħäºº\":103430,\"æ¸Ľ\":103431,\"ä¸Ńç§ĭ\":103432,\"çĪŃ\":103433,\"åıªåī©\":103434,\"æĺĶ\":103435,\"éĩİçĶŁ\":103436,\"ç¡«\":103437,\"èĲĿåįľ\":103438,\"æĬµæĬĹ\":103439,\"çĻ«çĹ«\":103440,\"éĻĢ\":103441,\"èĶļ\":103442,\"å¸ľ\":103443,\"æ»¡æ»¡\":103444,\"èı±\":103445,\"éļĨéĩį\":103446,\"æĺŁçº§\":103447,\"æ½ĩ\":103448,\"åħ¬åħĥ\":103449,\"è°£\":103450,\"æ¯Ķäºļ\":103451,\"æ¡ĮåŃĲ\":103452,\"èµ£\":103453,\"è²¼\":103454,\"æĦ¿æľĽ\":103455,\"é¡½\":103456,\"æ´¾éģ£\":103457,\"ç¥Ľ\":103458,\"åªļ\":103459,\"éĺľ\":103460,\"èĳ«\":103461,\"èĬ¦\":103462,\"æ³»\":103463,\"å¡Į\":103464,\"çĭŃ\":103465,\"å»īæĶ¿\":103466,\"å¥ĳæľº\":103467,\"æĹĹèĪ°\":103468,\"æĥ«\":103469,\"ä¸¥åİī\":103470,\"åıĭæĥħ\":103471,\"å¦Ĭ\":103472,\"å¨ł\":103473,\"åĵªå®¶\":103474,\"èĨ¨\":103475,\"è¶Ł\":103476,\"æĮª\":103477,\"èĻĲ\":103478,\"éłģ\":103479,\"çŀ©\":103480,\"éºŁ\":103481,\"ç¨£\":103482,\"èģĶéĢļ\":103483,\"åı®\":103484,\"çİĭèĢħ\":103485,\"ä¸įç¡®å®ļ\":103486,\"çĳľ\":103487,\"è°İ\":103488,\"çī¢è®°\":103489,\"ç¢¼\":103490,\"æĬ¤èĤ¤\":103491,\"é¡·\":103492,\"çĦķ\":103493,\"åģļå¼º\":103494,\"éļ±ç§ģ\":103495,\"éļ±ç§ģæ¬Ĭ\":103496,\"åıĹå®³\":103497,\"ä¸įçĶ±\":103498,\"çĥ¹\":103499,\"é¥ª\":103500,\"é©³\":103501,\"ä¼½\":103502,\"ä¸Ŀç»¸\":103503,\"è¥Ħ\":103504,\"åįģä½Ļ\":103505,\"éºĹ\":103506,\"æ¬ĬåĪ©\":103507,\"èģŀ\":103508,\"åı¤èĢģ\":103509,\"éģı\":103510,\"åĲĦå¼ı\":103511,\"å°±è¡Į\":103512,\"åħ¥å¢ĥ\":103513,\"çĥģ\":103514,\"èľĺ\":103515,\"èĽĽ\":103516,\"çº¬\":103517,\"çŁ«\":103518,\"è»Ł\":103519,\"æ´Ĺè¡£\":103520,\"æĦ§\":103521,\"é¢Ħæ¡Ī\":103522,\"éľĨ\":103523,\"æ·±åİļ\":103524,\"éĺ¿æĭī\":103525,\"åĨĻåŃĹ\":103526,\"åį¦\":103527,\"éķĢ\":103528,\"æ¨¡æł·\":103529,\"åĤį\":103530,\"æĲį\":103531,\"èĸ¯\":103532,\"åłħ\":103533,\"åħ¬ç§¯\":103534,\"è¨İ\":103535,\"ä¼łæŁĵ\":103536,\"æ¯¯\":103537,\"çĲĨå·¥\":103538,\"åĨ·éĵ¾\":103539,\"ç«ĭæĸ¹\":103540,\"æ¢Ń\":103541,\"åľ£è¯ŀ\":103542,\"ç»¼èīº\":103543,\"çİ©ç¬ĳ\":103544,\"æĥ³ä¸įåĪ°\":103545,\"æĳĩå¤´\":103546,\"æ·¹\":103547,\"åģĩæĹ¥\":103548,\"åĢĺ\":103549,\"èĢ½\":103550,\"èİĵ\":103551,\"åŁ·\":103552,\"èĩªè´¸\":103553,\"åįĬå¤©\":103554,\"æªĶ\":103555,\"æ¾İæ¹ĥ\":103556,\"éķĳ\":103557,\"ä¸«\":103558,\"éĩĮç¨ĭ\":103559,\"å¼ĢèįĴ\":103560,\"èıı\":103561,\"å®Ŀè´µ\":103562,\"èŃ¬\":103563,\"åķŁ\":103564,\"æŁł\":103565,\"æª¬\":103566,\"é©Ń\":103567,\"æ±Ľ\":103568,\"çĨĬçĮ«\":103569,\"èķī\":103570,\"éļıä¹ĭ\":103571,\"å±ĳ\":103572,\"è¾ĥå¼º\":103573,\"èĥ³\":103574,\"èĨĬ\":103575,\"éĿĻéĿĻ\":103576,\"åĴª\":103577,\"æĭĽåĳ¼\":103578,\"ä»£è¨Ģ\":103579,\"ä¿¡ç®±\":103580,\"è£ħéħį\":103581,\"æĤį\":103582,\"åįķè½¦\":103583,\"èĲİ\":103584,\"å¤ļå½©\":103585,\"éĻ¸\":103586,\"ä»İä¸¥\":103587,\"æ©Ħ\":103588,\"æ¦Ħ\":103589,\"éĢ®\":103590,\"éĩĮæĸ¯\":103591,\"å§¿æĢģ\":103592,\"å¤ªæŀģ\":103593,\"éĩĿ\":103594,\"æºī\":103595,\"è¿Ń\":103596,\"ç§¸\":103597,\"ç§Ĩ\":103598,\"å·¥å§Ķ\":103599,\"æ±ķ\":103600,\"èģĨ\":103601,\"ä½¬\":103602,\"ç¼ħ\":103603,\"çĶ¸\":103604,\"åī¯å±Ģéķ¿\":103605,\"éĹº\":103606,\"èª¤\":103607,\"è¤Ĳ\":103608,\"ä¸įéĻĲ\":103609,\"èħķ\":103610,\"åĳķ\":103611,\"çŁ¶\":103612,\"åĨľå®¶\":103613,\"ç®¡å§Ķä¼ļ\":103614,\"é¥º\":103615,\"èĬľ\":103616,\"æ¾Ī\":103617,\"è©¢\":103618,\"å¨ģå°¼æĸ¯\":103619,\"ä½ķåĨµ\":103620,\"å°ıä¼Ļ\":103621,\"å¥¢ä¾Ī\":103622,\"è¿Ļç¯ĩ\":103623,\"è¯µ\":103624,\"ç«łç¨ĭ\":103625,\"ç´Ģ\":103626,\"éĲĺ\":103627,\"éĤ¢\":103628,\"ç³Ļ\":103629,\"ç¼Ģ\":103630,\"ä¹Ĵ\":103631,\"ä¹ĵ\":103632,\"çī¢åĽº\":103633,\"åĿŀ\":103634,\"å¼Ī\":103635,\"ä¾ĭå¤ĸ\":103636,\"å»³\":103637,\"è§Ħç«ł\":103638,\"èĬĻ\":103639,\"ç¯·\":103640,\"èº¯\":103641,\"æłĪ\":103642,\"åĿļå®ŀ\":103643,\"åŁºå»º\":103644,\"çĿĢçľ¼\":103645,\"ç·´\":103646,\"èĳ©\":103647,\"ç¼ļ\":103648,\"æ¦Ĩ\":103649,\"ä¸»åĭķ\":103650,\"ç¥Ģ\":103651,\"äºĴéĢļ\":103652,\"å°¤ä¸º\":103653,\"å®Ľ\":103654,\"éª¼\":103655,\"æ±²\":103656,\"ä¾ĥ\":103657,\"æĤłä¹ħ\":103658,\"æĳ§\":103659,\"æĭĩ\":103660,\"é«ĵ\":103661,\"éºĴ\":103662,\"éĻĽ\":103663,\"æŀ¸\":103664,\"æĿŀ\":103665,\"è´¬\":103666,\"å°ıé¾Ļ\":103667,\"åĵ®\":103668,\"èĵ¬åĭĥ\":103669,\"åĮĪ\":103670,\"çķľçī§\":103671,\"å¨©\":103672,\"ä¸ªå¤ļ\":103673,\"æ²¥\":103674,\"æĺ§\":103675,\"çĦļ\":103676,\"æĬĳéĥģ\":103677,\"çĸ¡\":103678,\"èĺĳ\":103679,\"éģİç¨ĭ\":103680,\"æ©±\":103681,\"éĿĵ\":103682,\"å¤§çĲĨ\":103683,\"é«¦\":103684,\"åĪĨè¾¨\":103685,\"æ¸¤\":103686,\"çĸ¤\":103687,\"åĬ¨èĥ½\":103688,\"å¼łå®¶\":103689,\"ä¸ĩåįĥ\":103690,\"æ»¥\":103691,\"é¥¥\":103692,\"åºŁå¼ĥ\":103693,\"å¸³\":103694,\"æ¼³\":103695,\"è±Ĳ\":103696,\"ä»ĳ\":103697,\"å«ī\":103698,\"å¦Ĵ\":103699,\"çŀĴ\":103700,\"è¡ħ\":103701,\"çĭ¸\":103702,\"å¾ģç¨ĭ\":103703,\"éĤ¯\":103704,\"éĥ¸\":103705,\"ç¥Ī\":103706,\"ç¥·\":103707,\"è¶´\":103708,\"ç»ĵæŀĦæĢ§\":103709,\"è§ĨåĲ¬\":103710,\"è¬Ŀ\":103711,\"çĴĢ\":103712,\"çĴ¨\":103713,\"åĩºå¤Ħ\":103714,\"è¯Ģ\":103715,\"å¾ĺ\":103716,\"å¾Ĭ\":103717,\"çľ¨\":103718,\"åĸĩ\":103719,\"åıŃ\":103720,\"åĺ²\":103721,\"çķ¸\":103722,\"å¹²äºĭ\":103723,\"æļ§\":103724,\"æ²Ľ\":103725,\"åĦĦ\":103726,\"å»ĵ\":103727,\"åİ¿éķ¿\":103728,\"èĥļ\":103729,\"çĲ¢\":103730,\"çŃ·\":103731,\"éĩĭ\":103732,\"ä¾®\":103733,\"åĲ©\":103734,\"åĴĲ\":103735,\"åĮ¿\":103736,\"æĬ¬èµ·\":103737,\"æ³£\":103738,\"æ¶¤\":103739,\"éº½\":103740,\"æĽĻ\":103741,\"åī¯éĻ¢éķ¿\":103742,\"åħļåĴĮ\":103743,\"æķ£åıĳ\":103744,\"æ¶¦æ»ĳ\":103745,\"åĵº\":103746,\"æĥ¬\":103747,\"æ¼«éķ¿\":103748,\"ä¸įæĩĪ\":103749,\"åŁł\":103750,\"åĹĵ\":103751,\"èĢģçĪ·\":103752,\"è®½\":103753,\"æĪĺç»ĦåĲĪ\":103754,\"æ£ł\":103755,\"åħ¨åŁŁ\":103756,\"èł¢\":103757,\"è¯¡\":103758,\"åīįçŀ»\":103759,\"æķĽ\":103760,\"ä¸Ģå°ģ\":103761,\"å¹Ĥ\":103762,\"èİĨ\":103763,\"è¯Ŀè¯Ń\":103764,\"ç»ĨåĪĻ\":103765,\"å±¿\":103766,\"åµĮ\":103767,\"éĢį\":103768,\"åĺ±\":103769,\"æ¸²\":103770,\"çĥ¯\":103771,\"çĿ¹\":103772,\"é¦Ĵ\":103773,\"èħ¥\":103774,\"æĬĹåĩ»\":103775,\"çĿ«\":103776,\"èįĶ\":103777,\"éļİ\":103778,\"æ³īæ°´\":103779,\"è¬Ĥ\":103780,\"çĤ¬\":103781,\"åĩıæİĴ\":103782,\"è¸Ĭ\":103783,\"è·»\":103784,\"æ·Į\":103785,\"éľ¾\":103786,\"å¥ĩçº³\":103787,\"å¯Ŀ\":103788,\"æ¤İ\":103789,\"æŁ¬\":103790,\"æĸ¯åŁº\":103791,\"åħ¬ç«ĭ\":103792,\"è¨ĵ\":103793,\"é£Ļ\":103794,\"é©¿\":103795,\"åĤµ\":103796,\"èĽĻ\":103797,\"ç¯ĩç«ł\":103798,\"åĪĨæĶ¯\":103799,\"ä¸Ĭå¹´\":103800,\"çŃĿ\":103801,\"ç¼¤\":103802,\"èĢģæĹ§\":103803,\"åĻ¬\":103804,\"æľ¦\":103805,\"èĥ§\":103806,\"æ¶Īè²»\":103807,\"æĵĶ\":103808,\"æ¦´\":103809,\"æ¿Ĵ\":103810,\"ç³¯\":103811,\"æ³¸\":103812,\"æįĨ\":103813,\"ç»ļ\":103814,\"èµİ\":103815,\"çĲĲ\":103816,\"èµĤ\":103817,\"æħ®\":103818,\"æ²Į\":103819,\"çĦĻ\":103820,\"æĴŃæĬ¥\":103821,\"æ·ĩ\":103822,\"åĪĩåħ¥\":103823,\"çĳķ\":103824,\"çĸµ\":103825,\"éģ´\":103826,\"ç¨ļ\":103827,\"ç©©\":103828,\"èŀĥ\":103829,\"æ£ķ\":103830,\"æĨ§\":103831,\"æĨ¬\":103832,\"ä¼º\":103833,\"æ¯Ĺ\":103834,\"æįį\":103835,\"æĬī\":103836,\"ç´Ĭ\":103837,\"å¼Ľ\":103838,\"æĭŃ\":103839,\"æĹıèĩªæ²»\":103840,\"åĿ·\":103841,\"ç«¶\":103842,\"è©³\":103843,\"è¿Ħä»Ĭ\":103844,\"è°´\":103845,\"çŀŃè§£\":103846,\"æŁ¿\":103847,\"é¢Ĭ\":103848,\"ç°§\":103849,\"çĥŁèĬ±\":103850,\"ä¾¥\":103851,\"çĿ¦\":103852,\"éħĿ\":103853,\"æ°ĵ\":103854,\"çĲī\":103855,\"å§Ĭ\":103856,\"æ²®\":103857,\"æħ·\":103858,\"èľķ\":103859,\"çĳļ\":103860,\"éĩĩçŁ¿\":103861,\"åł°\":103862,\"åºķèķ´\":103863,\"èĨ³\":103864,\"è¾ķ\":103865,\"éŁŃ\":103866,\"åĴĻ\":103867,\"ç²½\":103868,\"åīĶ\":103869,\"æ²¦\":103870,\"èĤ´\":103871,\"éķ¶\":103872,\"æĺ¼\":103873,\"è¾Ĺ\":103874,\"å©ª\":103875,\"åĮ®\":103876,\"æĸĵ\":103877,\"æ±¶\":103878,\"éĥ´\":103879,\"éł»\":103880,\"çªĴ\":103881,\"è¢±\":103882,\"åĽ±\":103883,\"èĢĺ\":103884,\"èļĮ\":103885,\"çĭĻ\":103886,\"çĹ¹\":103887,\"ç¥ī\":103888,\"æı®\":103889,\"æ·Ĩ\":103890,\"ç£ĭ\":103891,\"éĺª\":103892,\"æ«\":103893,\"ã¸\":103894,\"Ļ¶\":103895,\"ãĳ\":103896,\"ð£²\":103897,\"ä¢\":103898,\"ãŃ\":103899,\"ð¬¨\":103900,\"ð¬Ģ\":103901,\"ð¬®\":103902,\"ð¬¯\":103903,\"ð¬ľ\":103904,\"ðª¨\":103905,\"ð«Ĺ\":103906,\"ð¬Ĭ\":103907,\"ð¬±\":103908,\"ð¬Ł\":103909,\"äİ\":103910,\"ð¡\":103911,\"äĥ\":103912,\"ãł\":103913,\"ð©\":103914,\"ð©¾\":103915,\"ð¬º\":103916,\"ð¬Ļ\":103917,\"ãĢĶ\":103918,\"ãĢķ\":103919,\"çļĦæĹ¶åĢĻ\":103920,\"æľīéĻĲåħ¬åı¸\":103921,\"ä¹ĭåĲİ\":103922,\"ä¸ļåĬ¡\":103923,\"åķĬ\":103924,\"èĻ½çĦ¶\":103925,\"æĭ¥æľī\":103926,\"äºĴèģĶç½ĳ\":103927,\"éĤ£äºĽ\":103928,\"ä½łçļĦ\":103929,\"åĨ³å®ļ\":103930,\"éĻ¤äºĨ\":103931,\"åĽ¢éĺŁ\":103932,\"åı¯æĺ¯\":103933,\"ä»¥åĲİ\":103934,\"ç¤¾åĮº\":103935,\"çļĦéĹ®é¢ĺ\":103936,\"å¹¶ä¸Ķ\":103937,\"æķĻå¸Ī\":103938,\"å°±ä¼ļ\":103939,\"å¤©ç©ºéĥ¨èĲ½\":103940,\"æľĢç»Ī\":103941,\"å½ĵçĦ¶\":103942,\"ä¹Łæľī\":103943,\"ç¡®ä¿Ŀ\":103944,\"æĥ³è¦ģ\":103945,\"è´Ńä¹°\":103946,\"äººçļĦ\":103947,\"åĲ´\":103948,\"çļĦåıĳå±ķ\":103949,\"ä¸įçŁ¥éģĵ\":103950,\"è½¯ä»¶\":103951,\"æĪĳä»¬çļĦ\":103952,\"çĪ¶æ¯į\":103953,\"åīĳ\":103954,\"èĢĮæĺ¯\":103955,\"å®īæİĴ\":103956,\"åĲİæĿ¥\":103957,\"çļĦåľ°æĸ¹\":103958,\"èµµ\":103959,\"èĢĥè¯ķ\":103960,\"çªģçĦ¶\":103961,\"ä¸Ģå®ļè¦ģ\":103962,\"åĪ¶ä½ľ\":103963,\"è¯Ħä»·\":103964,\"åħįè´¹\":103965,\"è´¹çĶ¨\":103966,\"ç»Łä¸Ģ\":103967,\"çĦ¶èĢĮ\":103968,\"è¿Ļæ¬¡\":103969,\"éĿĴå¹´\":103970,\"äººç±»\":103971,\"äº¦\":103972,\"è®©äºº\":103973,\"è´Łè´£äºº\":103974,\"éĩĩåıĸ\":103975,\"çļĦäºĭæĥħ\":103976,\"ä¹Łä¼ļ\":103977,\"è½¦è¾Ĩ\":103978,\"æĽ´æĺ¯\":103979,\"å¼ºåĮĸ\":103980,\"æĪĳåĢĳ\":103981,\"ä»¥åīį\":103982,\"ä¼ĺåĮĸ\":103983,\"å§Ķåĳĺä¼ļ\":103984,\"åĽ°éļ¾\":103985,\"å¹´åº¦\":103986,\"ä½įäºİ\":103987,\"æĮĩåĩº\":103988,\"åĨįæ¬¡\":103989,\"åĬŀçĲĨ\":103990,\"æ¯ıä¸ª\":103991,\"å¯¹æĸ¹\":103992,\"è¿Ľè¡ĮäºĨ\":103993,\"æľĢé«ĺ\":103994,\"è¯¾ç¨ĭ\":103995,\"èº«ä¸Ĭ\":103996,\"æĽ¾ç»ı\":103997,\"åĮ»çĶŁ\":103998,\"å®īè£ħ\":103999,\"æľ±\":104000,\"è¿Ĳè¡Į\":104001,\"åıĮæĸ¹\":104002,\"æľĢå¤§çļĦ\":104003,\"æŀĦå»º\":104004,\"è¿ŀç»Ń\":104005,\"çļĦå°ı\":104006,\"å¥¹çļĦ\":104007,\"çŃīçŃī\":104008,\"æĶ¹åĸĦ\":104009,\"åĲĦç±»\":104010,\"éģĩåĪ°\":104011,\"æľīçĿĢ\":104012,\"äººçī©\":104013,\"æĢ»æĺ¯\":104014,\"è¿ħéĢŁ\":104015,\"åĪ¶å®ļ\":104016,\"å®ĥä»¬\":104017,\"å®ĺç½ĳ\":104018,\"è¿ĺè¦ģ\":104019,\"ç»Īäºİ\":104020,\"æĪ¿åľ°äº§\":104021,\"è¯ģæĺİ\":104022,\"èĤ¡ç¥¨\":104023,\"åºĶå½ĵ\":104024,\"èĭ±åĽ½\":104025,\"è¿ĲçĶ¨\":104026,\"æľĢæĸ°\":104027,\"äº«åıĹ\":104028,\"è®©æĪĳ\":104029,\"æĻļä¸Ĭ\":104030,\"å¾ŀ\":104031,\"å°ıè¯´\":104032,\"å°¤åħ¶æĺ¯\":104033,\"è®Ńç»ĥ\":104034,\"åħ¨å¸Ĥ\":104035,\"æĮĳæĪĺ\":104036,\"æľīçĤ¹\":104037,\"å¸¦çĿĢ\":104038,\"çļĦä¸ľè¥¿\":104039,\"é£İæł¼\":104040,\"é»Ħéĩĳ\":104041,\"å¼ķå¯¼\":104042,\"æŃ¤å¤ĸ\":104043,\"æľĢè¿ĳ\":104044,\"è¿½æ±Ĥ\":104045,\"å¼ºè°ĥ\":104046,\"ä¹Łåı¯ä»¥\":104047,\"æĦŁåĪ°\":104048,\"èĩªæĪĳ\":104049,\"çī¹åĪ«æĺ¯\":104050,\"æĪĲéĥ½\":104051,\"éĢĲæ¸Ĳ\":104052,\"å¿«ä¹Ĳ\":104053,\"ä¹ĭä¸Ń\":104054,\"æĬķèµĦèĢħ\":104055,\"ä»ĸä»¬çļĦ\":104056,\"æ°ı\":104057,\"å·¥ä½ľäººåĳĺ\":104058,\"äºĨä¸Ģä¸ª\":104059,\"åķ¦\":104060,\"ä¸ĢåĢĭ\":104061,\"åŁºå±Ĥ\":104062,\"æ²ŁéĢļ\":104063,\"ç¬¬ä¸Ģæ¬¡\":104064,\"å¹¶æ²¡æľī\":104065,\"çļĦå·¥ä½ľ\":104066,\"åľ¨è¿ĻéĩĮ\":104067,\"æŀª\":104068,\"æĶ¯æĴĳ\":104069,\"æĹ¶å°ļ\":104070,\"æĿ¥åĪ°\":104071,\"æĶ¶è´Ń\":104072,\"éĿ©åĳ½\":104073,\"æĺ¯ä¸įæĺ¯\":104074,\"è®¨è®º\":104075,\"ä¸ļç»©\":104076,\"å°±èĥ½\":104077,\"ç«ĭåį³\":104078,\"è¡Ĺéģĵ\":104079,\"åľ¨ä¸Ģèµ·\":104080,\"æľĪä»½\":104081,\"é«ĺç«¯\":104082,\"å¾Īéļ¾\":104083,\"ä¿Ħç½Ĺæĸ¯\":104084,\"æīĭæ®µ\":104085,\"åģļåĩº\":104086,\"ä¼Ĺå¤ļ\":104087,\"å®ŀè¡Į\":104088,\"æīĵå¼Ģ\":104089,\"æ¸¸å®¢\":104090,\"ä¾ĿçĦ¶\":104091,\"å°±åĥı\":104092,\"ç¦»å¼Ģ\":104093,\"è¯´éģĵ\":104094,\"æĸ°èĥ½æºĲ\":104095,\"æºª\":104096,\"äºķ\":104097,\"ä»¤äºº\":104098,\"ä¸Ģåľº\":104099,\"æĪĳæĥ³\":104100,\"ä¸¤äºº\":104101,\"èĩ³å°ĳ\":104102,\"çļĦçĶŁæ´»\":104103,\"æĺ¯ä¸ª\":104104,\"èĭ±è¯Ń\":104105,\"æ²Ĵæľī\":104106,\"æĢĿèĢĥ\":104107,\"éĻĲåĪ¶\":104108,\"åı°æ¹¾\":104109,\"ä¸ĢæĹ¦\":104110,\"çļĦä¸Ģä¸ª\":104111,\"é«ĺçº§\":104112,\"åĬŀåħ¬å®¤\":104113,\"å¾·åĽ½\":104114,\"æĪĳå°±\":104115,\"å®ļä½į\":104116,\"éĢĤåºĶ\":104117,\"æĮĩæłĩ\":104118,\"åħ¨çľģ\":104119,\"ä¸Ĭè¿°\":104120,\"å®ĥçļĦ\":104121,\"åĽŀå®¶\":104122,\"æ¬§æ´²\":104123,\"éĵģè·¯\":104124,\"é¼ĵåĬ±\":104125,\"çļĦå½±åĵį\":104126,\"é«ĺæł¡\":104127,\"å¤©ä¸ĭ\":104128,\"é«ĺè´¨éĩı\":104129,\"æĿŃå·ŀ\":104130,\"èµĦè®¯\":104131,\"æĶ¾åľ¨\":104132,\"æľīä¸Ģä¸ª\":104133,\"å°±è¦ģ\":104134,\"ä¸ĬéĿ¢\":104135,\"è§£éĩĬ\":104136,\"éĢĲæŃ¥\":104137,\"å°½ç®¡\":104138,\"æľīä»Ģä¹Ī\":104139,\"çļĦäºĭ\":104140,\"çĻ»è®°\":104141,\"äººæ°ĳå¸ģ\":104142,\"è§Ĥä¼Ĺ\":104143,\"è§Ĥå¯Ł\":104144,\"çĶµèĦĳ\":104145,\"çļĦåĲĮæĹ¶\":104146,\"ä½ľä¸ļ\":104147,\"å®£å¸ĥ\":104148,\"çļĦä½ľçĶ¨\":104149,\"åĽŀæĿ¥\":104150,\"éļ¾ä»¥\":104151,\"æīĢæľīçļĦ\":104152,\"å°ıåŃ¦\":104153,\"æıĲåīį\":104154,\"æ¤įçī©\":104155,\"åĩ¯\":104156,\"ä¸ĬäºĨ\":104157,\"å°±åľ¨\":104158,\"åħĪåĲİ\":104159,\"æīĭæľ¯\":104160,\"éĥŃ\":104161,\"éĿ¢åīį\":104162,\"æ¯ķç«Ł\":104163,\"äºĮæĺ¯\":104164,\"çº¢èī²\":104165,\"éĺ³åħī\":104166,\"èĭ¹æŀľ\":104167,\"å¾Īå¤ļäºº\":104168,\"ç»ĻæĪĳ\":104169,\"åĵ¦\":104170,\"çľ¼çĿĽ\":104171,\"éłŃ\":104172,\"ä¸Ģæĺ¯\":104173,\"åıĳå±ķçļĦ\":104174,\"åıįåºĶ\":104175,\"æĪ¿å±ĭ\":104176,\"æľŁå¾ħ\":104177,\"ç§įæ¤į\":104178,\"æĸĩåŃ¦\":104179,\"åį³åı¯\":104180,\"é¦ĸæ¬¡\":104181,\"èĭ±éĽĦ\":104182,\"å¤ļæ¬¡\":104183,\"åĮħè£ħ\":104184,\"æ²³åįĹ\":104185,\"ä¹ĭéĹ´çļĦ\":104186,\"ä»įçĦ¶\":104187,\"åĲ¬åĪ°\":104188,\"èĳ£äºĭéķ¿\":104189,\"è§ĦåĪĻ\":104190,\"ä¸Ģä»½\":104191,\"å¤§ä¼Ĺ\":104192,\"ä½¿å¾Ĺ\":104193,\"è¿Ľåı£\":104194,\"ä¸Ģçīĩ\":104195,\"æĢ§çļĦ\":104196,\"çļĦå¤§\":104197,\"æĪĳæĺ¯\":104198,\"äºĴåĬ¨\":104199,\"æ°£\":104200,\"çļĨ\":104201,\"åħ¬åı¸çļĦ\":104202,\"ä¸Ģè¾¹\":104203,\"åıĬåħ¶\":104204,\"èī¯å¥½çļĦ\":104205,\"æĭĵå±ķ\":104206,\"å½ĵå¹´\":104207,\"å¹¿åľº\":104208,\"åģļäºĨ\":104209,\"åŁºäºİ\":104210,\"æıĲéĨĴ\":104211,\"åħĦå¼Ł\":104212,\"èĢģæĿ¿\":104213,\"è¿ĳæĹ¥\":104214,\"çĬ¶åĨµ\":104215,\"æ³¨éĩį\":104216,\"åĪļåĪļ\":104217,\"è°ĥçłĶ\":104218,\"å¿ĥä¸Ń\":104219,\"æĬĬæı¡\":104220,\"éļıåĲİ\":104221,\"ä¸įå¤Ł\":104222,\"åĪĽä½ľ\":104223,\"ç«Ļåľ¨\":104224,\"çĽ¸äºĴ\":104225,\"çĸ«æĥħéĺ²æİ§\":104226,\"å¹´ä»£\":104227,\"å¸¦åĬ¨\":104228,\"ä¼¤å®³\":104229,\"ç«ŁçĦ¶\":104230,\"å¼ķè¿Ľ\":104231,\"ç´¯è®¡\":104232,\"è®©æĪĳä»¬\":104233,\"åĽŀæĶ¶\":104234,\"æĬ¥åĲį\":104235,\"åĬ©åĬĽ\":104236,\"èģĶçĽŁ\":104237,\"çŃĸçķ¥\":104238,\"åĳ¨è¾¹\":104239,\"åĭĴ\":104240,\"è¿ĺåľ¨\":104241,\"æµģéĩı\":104242,\"å¯»æī¾\":104243,\"çĶµåĬĽ\":104244,\"èĪ¹èĪ¶\":104245,\"è¿ĺèĥ½\":104246,\"æĭħä»»\":104247,\"çļĦæĥħåĨµä¸ĭ\":104248,\"çļĦåİŁåĽł\":104249,\"ç¼ºä¹ı\":104250,\"çĲĥåĳĺ\":104251,\"å²ģçļĦ\":104252,\"çĶ·åŃĲ\":104253,\"å·¥èµĦ\":104254,\"è¿ĳå¹´æĿ¥\":104255,\"åĳĢ\":104256,\"æıĲä¾ĽäºĨ\":104257,\"å¥¹ä»¬\":104258,\"å®¶åħ·\":104259,\"çĩķ\":104260,\"è½»æĿ¾\":104261,\"æł¡åĽŃ\":104262,\"èĢĥæł¸\":104263,\"åį±éĻ©\":104264,\"åħļç»Ħç»ĩ\":104265,\"æĢ»ç»ıçĲĨ\":104266,\"çļĦæĸ°\":104267,\"çİ»çĴĥ\":104268,\"è¿Ļä½į\":104269,\"å¯¹æŃ¤\":104270,\"å®¶äºº\":104271,\"çļĦè¦ģæ±Ĥ\":104272,\"æ¸©åº¦\":104273,\"æĮĩæķ°\":104274,\"çĽ´åĪ°\":104275,\"æŃ¤æĹ¶\":104276,\"æ¹ĸåįĹ\":104277,\"éĥ½è¦ģ\":104278,\"ä½ľåĩº\":104279,\"åĲĦä½į\":104280,\"èĢĥçĶŁ\":104281,\"ä¾Ŀæį®\":104282,\"è¯´è¯Ŀ\":104283,\"æĪĳä¹Ł\":104284,\"å·¥åİĤ\":104285,\"åıĺæĪĲ\":104286,\"ä»ĸäºº\":104287,\"æĪĳè§īå¾Ĺ\":104288,\"åĲĦçº§\":104289,\"ä¼łå¥ĩç§ģæľį\":104290,\"ä¸Ĭåįĩ\":104291,\"å¥½åĥı\":104292,\"åĬłéĢŁ\":104293,\"äºĮåįģ\":104294,\"è¢ģ\":104295,\"è£ħé¥°\":104296,\"éĥ½èĥ½\":104297,\"ä¸Ģå¼ł\":104298,\"åĬ¨æĢģ\":104299,\"å¹´çļĦ\":104300,\"è¿Ļå°±æĺ¯\":104301,\"ä¹Łè¦ģ\":104302,\"èµĦæł¼\":104303,\"æĪĺäºī\":104304,\"æĦŁè°¢\":104305,\"åŁ¹èĤ²\":104306,\"å¤©æ°Ķ\":104307,\"å¥³å£«\":104308,\"åı¯èĥ½ä¼ļ\":104309,\"çļĦäº§åĵģ\":104310,\"ä¹Łå°±\":104311,\"ä¸»è¦ģæĺ¯\":104312,\"åĪºæ¿Ģ\":104313,\"ç»Ļä½ł\":104314,\"å¤§æķ°æį®\":104315,\"åĮ»åŃ¦\":104316,\"åĪ¤æĸŃ\":104317,\"ä»ĸè¯´\":104318,\"è¡¨æ¼Ķ\":104319,\"äºļæ´²\":104320,\"ä¸ĵé¢ĺ\":104321,\"ç«ŀäºīåĬĽ\":104322,\"éĤ£æł·\":104323,\"å±ķå¼Ģ\":104324,\"å¹³æĹ¶\":104325,\"æİ¥ä¸ĭæĿ¥\":104326,\"æī¿è¯º\":104327,\"æ³ķåĽ½\":104328,\"åħ³å¿ĥ\":104329,\"ä¼ļæľī\":104330,\"éĤĢè¯·\":104331,\"é¢Ħéĺ²\":104332,\"å¯¹æİ¥\":104333,\"å¥½äºĨ\":104334,\"åĴ±ä»¬\":104335,\"çļĦæĦŁè§ī\":104336,\"æĢĿè·¯\":104337,\"éĥ½æ²¡æľī\":104338,\"çļĦæĸ¹æ³ķ\":104339,\"å¥³åŃĲ\":104340,\"åı¸æ³ķ\":104341,\"è¿ĺä¼ļ\":104342,\"è¶ĬæĿ¥è¶Ĭå¤ļ\":104343,\"åĽłçĤº\":104344,\"æµ·åįĹ\":104345,\"äººæķ°\":104346,\"å°Ĩä¼ļ\":104347,\"ä¸ļä¸»\":104348,\"é¤Ĳé¥®\":104349,\"å±ħä½ı\":104350,\"åıĳåĩº\":104351,\"è¿ĳæľŁ\":104352,\"å¼ķé¢Ĩ\":104353,\"æľºåĻ¨äºº\":104354,\"åĩºæĿ¥çļĦ\":104355,\"çľĭè§ģ\":104356,\"ä¿Ĭ\":104357,\"è®©ä»ĸ\":104358,\"ä¸įæĥ³\":104359,\"å·¥ä½ľçļĦ\":104360,\"è¡¥åħħ\":104361,\"æµħ\":104362,\"çī¹å¾ģ\":104363,\"ä¸Ĭå¸Ĥåħ¬åı¸\":104364,\"ç¾İé£Ł\":104365,\"å¹¿è¥¿\":104366,\"æ¯ıä¸Ģä¸ª\":104367,\"èĲ½åľ°\":104368,\"åĵģç§į\":104369,\"åĴĮè°Ĳ\":104370,\"å½»åºķ\":104371,\"é«ĺèĢĥ\":104372,\"æĺ¨å¤©\":104373,\"åīįå¾Ģ\":104374,\"çĽĳæµĭ\":104375,\"çĻ¾åº¦\":104376,\"åľ¨ä¸ŃåĽ½\":104377,\"çļĦéľĢæ±Ĥ\":104378,\"äº¿ç¾İåħĥ\":104379,\"åŃ¦æľ¯\":104380,\"æĶ¶åĪ°\":104381,\"æĿ¿åĿĹ\":104382,\"ä¸Ģæ®µ\":104383,\"æŀĦæĪĲ\":104384,\"ä¼ģä¸ļçļĦ\":104385,\"è¡¨éĿ¢\":104386,\"æķ´çĲĨ\":104387,\"ç»ĵå©ļ\":104388,\"äººå®¶\":104389,\"åģľæŃ¢\":104390,\"åŃ¦ç§ĳ\":104391,\"æĺ¾å¾Ĺ\":104392,\"ä¼ĳæģ¯\":104393,\"é¢ĦæľŁ\":104394,\"æĪĸæĺ¯\":104395,\"çļĦä¸»è¦ģ\":104396,\"åºĶå¯¹\":104397,\"èµ°äºĨ\":104398,\"ä¸ŃéĹ´\":104399,\"èµ°è¿Ľ\":104400,\"åĳĪçİ°\":104401,\"æĲŃéħį\":104402,\"é¹ı\":104403,\"æĺ¯åĽłä¸º\":104404,\"æĥħç»ª\":104405,\"å®ļæľŁ\":104406,\"ç¤¾ä¼ļä¸»ä¹ī\":104407,\"çŃīçº§\":104408,\"çŁĽçĽ¾\":104409,\"é£ŀæľº\":104410,\"èĩ³ä»Ĭ\":104411,\"æĶ¶éĽĨ\":104412,\"çļĦæķħäºĭ\":104413,\"åĪĩå®ŀ\":104414,\"å®ŀçİ°äºĨ\":104415,\"å½¢æĪĲäºĨ\":104416,\"åįĹæĸ¹\":104417,\"ä¸ŃåŃ¦\":104418,\"æµ·æ´ĭ\":104419,\"åĲ¦åĪĻ\":104420,\"æĭįæĳĦ\":104421,\"å¤§åŃ¦çĶŁ\":104422,\"åĩºçİ°äºĨ\":104423,\"æĦıå¤ĸ\":104424,\"ä¹Łèĥ½\":104425,\"çļĦèĥ½åĬĽ\":104426,\"åĿĲåľ¨\":104427,\"åĪĻæĺ¯\":104428,\"èĢĥå¯Ł\":104429,\"å°Ĭéĩį\":104430,\"éĺ²æŃ¢\":104431,\"ç´§å¼ł\":104432,\"è¯»ä¹¦\":104433,\"åĩºè¡Į\":104434,\"å°±æľī\":104435,\"å±¥è¡Į\":104436,\"çİ°ä»£åĮĸ\":104437,\"åĽ½åĬ¡\":104438,\"åĽ½åĬ¡éĻ¢\":104439,\"ç»´ä¿®\":104440,\"åİŁåĪĽ\":104441,\"æĺ¯æĮĩ\":104442,\"ä¼ĳéĹ²\":104443,\"çĤ®\":104444,\"æĸ°æĹ¶ä»£\":104445,\"éĢĻåĢĭ\":104446,\"ä¸įæķ¢\":104447,\"å®Įç¾İ\":104448,\"ç»ĨèĬĤ\":104449,\"éŃı\":104450,\"èĶ¬èıľ\":104451,\"é¢Ĩå¯¼çıŃåŃĲ\":104452,\"è¶ħçº§\":104453,\"è¡Įæĥħ\":104454,\"äººå·¥æĻºèĥ½\":104455,\"åį°åº¦\":104456,\"åŁºç¡Ģè®¾æĸ½\":104457,\"åıĪæĺ¯\":104458,\"èį¯çī©\":104459,\"åĲ¸æĶ¶\":104460,\"åį´æĺ¯\":104461,\"éĥİ\":104462,\"å¥ĸåĬ±\":104463,\"çļĦæľĭåıĭ\":104464,\"ä¿ĿçķĻ\":104465,\"è§Ħå¾ĭ\":104466,\"æĸ°çĸĨ\":104467,\"è¿ĺåı¯ä»¥\":104468,\"æİ¥è¿ĳ\":104469,\"æŃ¤åīį\":104470,\"æī¹åĩĨ\":104471,\"æĢİä¹Īæł·\":104472,\"çļĦä½įç½®\":104473,\"ä¸ĢåĿĹ\":104474,\"æĭĴç»Ŀ\":104475,\"é¡¾å®¢\":104476,\"ä¹Łåľ¨\":104477,\"ä¸ĢçĶŁ\":104478,\"éĥ¨éĺŁ\":104479,\"å¹´åīį\":104480,\"æĸ¹éĿ¢çļĦ\":104481,\"å°Ŀè¯ķ\":104482,\"çľŁæŃ£çļĦ\":104483,\"ç¦ģæŃ¢\":104484,\"è¿ĺæ²¡æľī\":104485,\"æ°ĳçĶŁ\":104486,\"èµ°åĲĳ\":104487,\"èĦ¸ä¸Ĭ\":104488,\"å½ĵå¤©\":104489,\"éĽĨåĽ¢åħ¬åı¸\":104490,\"çļĦä¸Ģç§į\":104491,\"è¥¿æĸ¹\":104492,\"åĽŀåºĶ\":104493,\"ä¸Ģå£°\":104494,\"å¸¸å¸¸\":104495,\"æıĲåĪ°\":104496,\"èħ¾è®¯\":104497,\"æľįè£ħ\":104498,\"ä¸ºä½ķ\":104499,\"äºĳåįĹ\":104500,\"å°±ç®Ĺ\":104501,\"ä¼łæī¿\":104502,\"åıįèĢĮ\":104503,\"ä¸ĩåĲ¨\":104504,\"è´¢äº§\":104505,\"å¦Ĥä¸ĭ\":104506,\"æĹ¥åīį\":104507,\"åİŁæľ¬\":104508,\"æľĢéĩįè¦ģçļĦ\":104509,\"è®¤è¯ģ\":104510,\"ä¸Ģéģĵ\":104511,\"ä¿¡æģ¯åĮĸ\":104512,\"å¾ĹåĪ°äºĨ\":104513,\"éĢ²è¡Į\":104514,\"æĪĳè¦ģ\":104515,\"éĢļä¿¡\":104516,\"å®¤åĨħ\":104517,\"èµļéĴ±\":104518,\"æĶ¶èĹı\":104519,\"è§£åĨ³æĸ¹æ¡Ī\":104520,\"æĪ¿äº§\":104521,\"çĭ¼\":104522,\"æ´»åĬĽ\":104523,\"ç»ıæµİåıĳå±ķ\":104524,\"çŃīå¾ħ\":104525,\"ä¹Łå¾Ī\":104526,\"åĿĳ\":104527,\"å¾Īå¥½çļĦ\":104528,\"éļ¾åº¦\":104529,\"ä¸įå¦Ĥ\":104530,\"äººæ°ĳæĶ¿åºľ\":104531,\"åĩºåıĳ\":104532,\"åīįæľŁ\":104533,\"æ¼Ķåĳĺ\":104534,\"å¥³çĶŁ\":104535,\"èģļçĦ¦\":104536,\"å®¡è®¡\":104537,\"é¢Ħæµĭ\":104538,\"ä¾Ŀæīĺ\":104539,\"äºĶå¹´\":104540,\"è¡¥è´´\":104541,\"æ¸ħæĻ°\":104542,\"éªĤ\":104543,\"çľĭèµ·æĿ¥\":104544,\"çļĦåŃ©åŃĲ\":104545,\"é¢ĳéģĵ\":104546,\"ä½ıå®ħ\":104547,\"éĿ¢åĲĳ\":104548,\"æľĢä½İ\":104549,\"æĹ¢çĦ¶\":104550,\"ä¸Ģå¥Ĺ\":104551,\"æķ°åŃ¦\":104552,\"ç¾¤ä½ĵ\":104553,\"åĮĹäº¬å¸Ĥ\":104554,\"å±ħçĦ¶\":104555,\"æ°ĽåĽ´\":104556,\"éĢĶå¾Ħ\":104557,\"çļĦåŁºç¡Ģä¸Ĭ\":104558,\"èģĮè´£\":104559,\"åı¯èĥ½æĺ¯\":104560,\"åĨĽäºĭ\":104561,\"æĪĲæķĪ\":104562,\"åŃ©åŃĲä»¬\":104563,\"è®¡ç®Ĺæľº\":104564,\"èµ¤\":104565,\"äº§ä¸ļåıĳå±ķ\":104566,\"å·¨å¤§çļĦ\":104567,\"å·¥äºº\":104568,\"çĶŁéķ¿\":104569,\"éĥ½åı¯ä»¥\":104570,\"çļĦæľºä¼ļ\":104571,\"èµĦè´¨\":104572,\"çĹĽèĭ¦\":104573,\"ç²īä¸Ŀ\":104574,\"å¢ĵ\":104575,\"å¹³å®ī\":104576,\"ç®¡éģĵ\":104577,\"è·ŁçĿĢ\":104578,\"é¥®é£Ł\":104579,\"åķĨå®¶\":104580,\"å¤ļå®¶\":104581,\"åı¸æľº\":104582,\"åºĶè¯¥æĺ¯\":104583,\"éĢıéľ²\":104584,\"è®¤å®ļ\":104585,\"è¡Įä¸ļçļĦ\":104586,\"çļĦä¼ģä¸ļ\":104587,\"æ¯ıä¸Ģ\":104588,\"èĮĥåĽ´åĨħ\":104589,\"è¾ĥå¤§\":104590,\"è´¤\":104591,\"å¤§èµĽ\":104592,\"å¤ļäºĨ\":104593,\"é¸¿\":104594,\"ä¸´åºĬ\":104595,\"åľ¨è¿Ļä¸ª\":104596,\"çļĦåĨħå®¹\":104597,\"éĶĢéĩı\":104598,\"å¾Īå°ĳ\":104599,\"åŃŁ\":104600,\"ç»´æĮģ\":104601,\"åĴĸåķ¡\":104602,\"æľ¬åľ°\":104603,\"èī²å½©\":104604,\"å¹¶éĿŀ\":104605,\"èĢĮå·²\":104606,\"æ¸©æļĸ\":104607,\"èĲ§\":104608,\"æĬĵä½ı\":104609,\"èĢĮä¸įæĺ¯\":104610,\"åĸĬ\":104611,\"çļĦåħ³ç³»\":104612,\"çī©åĵģ\":104613,\"éĤ£æĺ¯\":104614,\"åĨľäº§åĵģ\":104615,\"è¿ĻæĹ¶\":104616,\"å©ļå§»\":104617,\"æ°´æŀľ\":104618,\"æĶ¶èİ·\":104619,\"ä»ĺåĩº\":104620,\"å®¢æĪ·ç«¯\":104621,\"æ¼Ķåĩº\":104622,\"åħ¨æĸ°\":104623,\"è¿Ļä¹Łæĺ¯\":104624,\"æĺ¯çĶ±\":104625,\"è§Ĥå¿µ\":104626,\"æľīä¸ª\":104627,\"éĢłåŀĭ\":104628,\"èĥľåĪ©\":104629,\"ä¸īæĺ¯\":104630,\"è¶ħå¸Ĥ\":104631,\"åħļå»ºå·¥ä½ľ\":104632,\"æĶ¾å¿ĥ\":104633,\"çº¿è·¯\":104634,\"æĭĽçĶŁ\":104635,\"åĲĥé¥Ń\":104636,\"è½ī\":104637,\"å°½éĩı\":104638,\"è§ģåĪ°\":104639,\"åĲĮæ¯Ķå¢ŀéķ¿\":104640,\"åįİä¸º\":104641,\"æĪĳå¸Ĥ\":104642,\"æıĲåĩºäºĨ\":104643,\"æ°ĳèŃ¦\":104644,\"åįļçī©\":104645,\"åįļçī©é¦Ĩ\":104646,\"è¯ļä¿¡\":104647,\"åīįéĿ¢\":104648,\"å±±è¥¿\":104649,\"è¾ħåĬ©\":104650,\"è½¬ç§»\":104651,\"æĽ´ä¸º\":104652,\"ä¸°å¯ĮçļĦ\":104653,\"åį¢\":104654,\"å¿«éĢĴ\":104655,\"æĺ¾èĳĹ\":104656,\"çī©èµĦ\":104657,\"åĪ°è¾¾\":104658,\"æľīåĪ©äºİ\":104659,\"åĳĨ\":104660,\"åŃ©åŃĲçļĦ\":104661,\"ä¸įä½Ĩ\":104662,\"çłĶç©¶éĻ¢\":104663,\"çĶ³æĬ¥\":104664,\"æļ¨\":104665,\"æ°ĳéĹ´\":104666,\"åį»\":104667,\"çļĦå£°éŁ³\":104668,\"å¸ĤåľºçļĦ\":104669,\"ä¸Ģåı¥\":104670,\"çľģçº§\":104671,\"æĿ¥çļĦ\":104672,\"åĵªä¸ª\":104673,\"æīįä¼ļ\":104674,\"åĪĨéħį\":104675,\"èĶ¡\":104676,\"ä»ĸåľ¨\":104677,\"åħ±æľī\":104678,\"å¡ĺ\":104679,\"èĴĤ\":104680,\"éľį\":104681,\"åıĤè§Ĥ\":104682,\"ä¸Īå¤«\":104683,\"ä¾ĿéĿł\":104684,\"æľīæĹ¶\":104685,\"äºĨå¾Īå¤ļ\":104686,\"ä¸ĸçķĮæĿ¯\":104687,\"å®¶æĹı\":104688,\"ä¸įéľĢè¦ģ\":104689,\"å¤§å¸Ī\":104690,\"èŀįåħ¥\":104691,\"éĿŀæ³ķ\":104692,\"çĹħäºº\":104693,\"åĲİæľŁ\":104694,\"å¤§å®¶éĥ½\":104695,\"ç½ĳåĿĢ\":104696,\"åİŁæĸĻ\":104697,\"ä¾¿å®ľ\":104698,\"æ¶Ľ\":104699,\"ä»¿ä½Ľ\":104700,\"å·®è·Ŀ\":104701,\"åı¦ä¸Ģæĸ¹éĿ¢\":104702,\"äº§åĵģçļĦ\":104703,\"èµ«\":104704,\"æĥħåĨµä¸ĭ\":104705,\"éĴ¢éĵģ\":104706,\"æľ¬ç«Ļ\":104707,\"çº³åħ¥\":104708,\"å·²æľī\":104709,\"æľīæ²¡æľī\":104710,\"ä¼°è®¡\":104711,\"é£ĺ\":104712,\"æľŁè´§\":104713,\"åĢĭäººè³ĩæĸĻ\":104714,\"ä¸ĵä¸ļçļĦ\":104715,\"çĪĨåıĳ\":104716,\"èĩ´åĬĽäºİ\":104717,\"çİ°åľ¨çļĦ\":104718,\"æľīåĵªäºĽ\":104719,\"çł´åĿı\":104720,\"æķ°åŃĹåĮĸ\":104721,\"åľ°éĿ¢\":104722,\"é»ĳèī²\":104723,\"å¹¼åĦ¿åĽŃ\":104724,\"çļĦç²¾ç¥ŀ\":104725,\"äºŃ\":104726,\"å¯¼æ¼Ķ\":104727,\"çİ°æľī\":104728,\"æŃ¦åĻ¨\":104729,\"èĭıå·ŀ\":104730,\"çİĦ\":104731,\"æ±Łè¥¿\":104732,\"å»¶ä¼¸\":104733,\"è®ºæĸĩ\":104734,\"è¾ĥä¸º\":104735,\"çİ©æ³ķ\":104736,\"é¼İ\":104737,\"åĲĮæŃ¥\":104738,\"éĩĬæĶ¾\":104739,\"æĽĿåħī\":104740,\"åĿļåĨ³\":104741,\"å§Ķæīĺ\":104742,\"å°Ĩåľ¨\":104743,\"äºĪä»¥\":104744,\"ä½ľæĸĩ\":104745,\"èĢĮåľ¨\":104746,\"ä¼ĺåħĪ\":104747,\"åĽŀåİ»\":104748,\"ä¿®å¤į\":104749,\"åĽ½åĨħå¤ĸ\":104750,\"çŃĸåĪĴ\":104751,\"åıĳæĶ¾\":104752,\"å¿ĥæĥħ\":104753,\"çļĦåİĨåı²\":104754,\"éĿ¢è¯ķ\":104755,\"ä¸ľåĮĹ\":104756,\"ä¿¡åı·\":104757,\"ç²®é£Ł\":104758,\"è¯ģä¹¦\":104759,\"æŁĲäºĽ\":104760,\"è¿Ĳä½ľ\":104761,\"åĨ²åĩ»\":104762,\"çĥŃçĤ¹\":104763,\"æĹ¶æĹ¶\":104764,\"æĹ¶æĹ¶å½©\":104765,\"åľ°çĤ¹\":104766,\"ä¸Ģä½ĵåĮĸ\":104767,\"éļ¾é¢ĺ\":104768,\"æĽ°\":104769,\"ç«ĭåĪ»\":104770,\"æĺ¯éĿŀå¸¸\":104771,\"åħ±åĴĮ\":104772,\"åħ±åĴĮåĽ½\":104773,\"æ¿ĢåĬ±\":104774,\"æľīæķĪçļĦ\":104775,\"å¤Ħç½®\":104776,\"è¯¥åħ¬åı¸\":104777,\"æ£ĢéªĮ\":104778,\"èŃ¦æĸ¹\":104779,\"è´¾\":104780,\"äºĨä¸Ģä¸ĭ\":104781,\"ä»ĬåĲİ\":104782,\"çħ®\":104783,\"çĶ¨åĵģ\":104784,\"è¯»èĢħ\":104785,\"æĪĳåľ¨\":104786,\"åĽŀå¤į\":104787,\"ä¸Ģåº§\":104788,\"è¿ĺæ²¡\":104789,\"å®ļåĪ¶\":104790,\"æ²¡æĥ³åĪ°\":104791,\"å¤¹\":104792,\"ä¼łéĢĴ\":104793,\"ä¸Ģæ¬¾\":104794,\"å¼ºå¤§çļĦ\":104795,\"çļĦè¡Įä¸º\":104796,\"å¤ıå¤©\":104797,\"åıĳåĬ¨æľº\":104798,\"é¢ĨåŁŁçļĦ\":104799,\"å®ŀéªĮå®¤\":104800,\"ä¸ĢæĬĬ\":104801,\"æĺ¯ä¸ºäºĨ\":104802,\"éĻķè¥¿\":104803,\"æĭħä¿Ŀ\":104804,\"è¾¾æĪĲ\":104805,\"è¦ģæĺ¯\":104806,\"æĺİå¤©\":104807,\"ç»Ļä»ĸ\":104808,\"å»ºç«ĭäºĨ\":104809,\"ä¸įè¡Į\":104810,\"ä¸Ńæĸĩ\":104811,\"åľ°è¯´\":104812,\"åĲİçļĦ\":104813,\"çĽĳæİ§\":104814,\"éĢ¸\":104815,\"æĢ»éĥ¨\":104816,\"æľ¬æĸĩ\":104817,\"é¹¿\":104818,\"æĻ¯è§Ĥ\":104819,\"çļĦçĽ®æłĩ\":104820,\"èĽĩ\":104821,\"åĨ¯\":104822,\"ä¸ŃåĮ»\":104823,\"æķĪåºĶ\":104824,\"äº§éĩı\":104825,\"åŃĿ\":104826,\"è´¦æĪ·\":104827,\"è¿Ŀåıį\":104828,\"èĳ£äºĭä¼ļ\":104829,\"äº¬ä¸ľ\":104830,\"è´£ä»»ç¼ĸè¾ĳ\":104831,\"åķıé¡Į\":104832,\"çĪ±å¿ĥ\":104833,\"èŃ¦å¯Ł\":104834,\"é¤Ĳåİħ\":104835,\"å¸ĤæĶ¿åºľ\":104836,\"å¤©å¤©\":104837,\"æĸ°é²ľ\":104838,\"éĥĳå·ŀ\":104839,\"è¶ħè¶Ĭ\":104840,\"å½Ń\":104841,\"çŁ¥è¯Ĩäº§æĿĥ\":104842,\"åĽŀå¿Ĩ\":104843,\"è·¯çº¿\":104844,\"å»īæ´ģ\":104845,\"éĿĴå°ĳå¹´\":104846,\"åıĸå¾ĹäºĨ\":104847,\"çľĭåĪ°äºĨ\":104848,\"é¦¬\":104849,\"ç²¾åĵģ\":104850,\"åľ°éĵģ\":104851,\"æĮģæľī\":104852,\"ä¸ĭäºĨ\":104853,\"æľīæĹ¶åĢĻ\":104854,\"ä¸Ģäºº\":104855,\"æĴĴ\":104856,\"ä»Ķç»Ĩ\":104857,\"èĢģåħ¬\":104858,\"äºĭå®ŀä¸Ĭ\":104859,\"èģĶèµĽ\":104860,\"ä¾ĽåºĶéĵ¾\":104861,\"é¢Ħç®Ĺ\":104862,\"åĪ¶éĢłä¸ļ\":104863,\"å®īåħ¨çĶŁäº§\":104864,\"ä¿±ä¹Ĳ\":104865,\"ä¿±ä¹Ĳéĥ¨\":104866,\"çļĦæł¸å¿ĥ\":104867,\"æīĵç®Ĺ\":104868,\"å½±çīĩ\":104869,\"æĲŃå»º\":104870,\"ä¹Łä¸įä¼ļ\":104871,\"æĭħå½ĵ\":104872,\"å±ĤéĿ¢\":104873,\"åŃ¦åĳĺ\":104874,\"ä¸´æĹ¶\":104875,\"çĽ¸ç»ĵåĲĪ\":104876,\"å¯¹æ¯Ķ\":104877,\"ä»ĸæĺ¯\":104878,\"æĸ°åĮº\":104879,\"è¿Ľåİ»\":104880,\"çĻ¾å¹´\":104881,\"ä¿©\":104882,\"å°½å¿«\":104883,\"çĶµåŃĲåķĨåĬ¡\":104884,\"æĽ´æľī\":104885,\"æ¸ħçĲĨ\":104886,\"åı¦ä¸Ģä¸ª\":104887,\"åĤ»\":104888,\"ä»Ģä¹Īæł·çļĦ\":104889,\"æĺ¯æľĢ\":104890,\"åĳ¨å¹´\":104891,\"å¾Īå®¹æĺĵ\":104892,\"åĽ¢ç»ĵ\":104893,\"ç´Ħ\":104894,\"æĹ©å·²\":104895,\"çļĦåıĺåĮĸ\":104896,\"éľŀ\":104897,\"æĹ¥ä¸ĬåįĪ\":104898,\"å¤±åİ»\":104899,\"ä¸Ńåľĭ\":104900,\"çļĦä¸ĢäºĽ\":104901,\"å°ıåŃ©\":104902,\"ä¸ĭè·Į\":104903,\"éĶ»çĤ¼\":104904,\"éĳ\":104905,\"éĳ«\":104906,\"å¿ĹæĦ¿èĢħ\":104907,\"èĤ¡å¸Ĥ\":104908,\"èµĽäºĭ\":104909,\"è®¸åı¯è¯ģ\":104910,\"åı¯æĮģç»Ń\":104911,\"åĳĬè¯īè®°èĢħ\":104912,\"éĢ»è¾ĳ\":104913,\"å¼ķåħ¥\":104914,\"çļĦè¿ĩç¨ĭä¸Ń\":104915,\"è§Ĩè§ī\":104916,\"èĩªæ²»åĮº\":104917,\"è¯ģæį®\":104918,\"è£ħç½®\":104919,\"ç¬¬ä¸īæĸ¹\":104920,\"å¹´æĿ¥\":104921,\"å¹¿ä¸ľçľģ\":104922,\"å¸¦æĿ¥äºĨ\":104923,\"éķ¿æ±Ł\":104924,\"è®¿éĹ®\":104925,\"å·®ä¸įå¤ļ\":104926,\"æĺ¯æĪĳ\":104927,\"éģŃéģĩ\":104928,\"æĬĵå¥½\":104929,\"é«ĺè¾¾\":104930,\"å¹¶åľ¨\":104931,\"èĩªè§ī\":104932,\"ä¾ĽåºĶåķĨ\":104933,\"æĥħæĦŁ\":104934,\"ä½ıäºĨ\":104935,\"çļĦèģĮä¸ļ\":104936,\"çļĩå¸Ŀ\":104937,\"è¥¿éĥ¨\":104938,\"åĴĮå¹³\":104939,\"çļĦåĬĽéĩı\":104940,\"æ±ª\":104941,\"åħħåĪĨåıĳæĮ¥\":104942,\"æĬķè¯ī\":104943,\"èµ·åĪ°\":104944,\"äºĴçĽ¸\":104945,\"æ¾³éĹ¨\":104946,\"æİ¥åĪ°\":104947,\"æ°´æ³¥\":104948,\"æ¨¡åŀĭ\":104949,\"ä¸ĢåįĬ\":104950,\"ç§©åºı\":104951,\"æĪĳä»¬åľ¨\":104952,\"æī¿è®¤\":104953,\"ä¸Ģéĥ¨åĪĨ\":104954,\"åįłæ¯Ķ\":104955,\"å¦ĩå¥³\":104956,\"ç²ĺ\":104957,\"äºĨè§£åĪ°\":104958,\"ä¸Ģå®ļä¼ļ\":104959,\"åĲĦå¤§\":104960,\"èµ°åĩº\":104961,\"ä¸ºå¤§å®¶\":104962,\"é«ĺéĵģ\":104963,\"åı¯ä»¥åľ¨\":104964,\"ä½Ĩåľ¨\":104965,\"çĶŁæĢģçİ¯å¢ĥ\":104966,\"èı¯\":104967,\"çļĦä»·æł¼\":104968,\"éº»çĥ¦\":104969,\"æ¿Ģåıĳ\":104970,\"éĤ£å°±\":104971,\"çļĦæł·åŃĲ\":104972,\"ä¸ºæŃ¤\":104973,\"å¤©åľ°\":104974,\"çļĦçĽ®çļĦ\":104975,\"åĢºåĪ¸\":104976,\"å·²ç¶ĵ\":104977,\"åĽĽå¤§\":104978,\"åĲĮæĹ¶ä¹Ł\":104979,\"å½¼æŃ¤\":104980,\"æĭ¿åĪ°\":104981,\"åĲ«éĩı\":104982,\"åįģå¤§\":104983,\"éļ¾éģĵ\":104984,\"å¼Ĺ\":104985,\"ä¸Ģæ®µæĹ¶éĹ´\":104986,\"çħ§é¡¾\":104987,\"æķ°æį®æĺ¾ç¤º\":104988,\"æĪĲä¸ºäºĨ\":104989,\"èµ°åĪ°\":104990,\"æľ¬åħ¬åı¸\":104991,\"ç»Īç«¯\":104992,\"ä¹Łä¸įæĺ¯\":104993,\"å¤´åıĳ\":104994,\"å¤§çº¦\":104995,\"é£İæĻ¯\":104996,\"æ¶ĪèĢĹ\":104997,\"å®¡æŁ¥\":104998,\"äºīåıĸ\":104999,\"æ³ķæ²»\":105000,\"äºĭçī©\":105001,\"ç¼ĵè§£\":105002,\"æĥ¨\":105003,\"çĽ¸åºĶçļĦ\":105004,\"çļĦæķĪæŀľ\":105005,\"åıįå¤į\":105006,\"åıĳçĶŁäºĨ\":105007,\"éĢĻäºĽ\":105008,\"ç»ĥä¹ł\":105009,\"åİ¨æĪ¿\":105010,\"å¼Ģæĭĵ\":105011,\"æ¬£èµı\":105012,\"å¤«å¦»\":105013,\"ä¸įä¸Ģæł·\":105014,\"äº§èĥ½\":105015,\"èĬ¯çīĩ\":105016,\"è¦ģç´ł\":105017,\"åıįå¯¹\":105018,\"çİĩåħĪ\":105019,\"è´§çī©\":105020,\"æĹ¥çĶµ\":105021,\"ä½ľå®¶\":105022,\"æĶ¹è¿Ľ\":105023,\"æĪĲåĪĨ\":105024,\"åĽłèĢĮ\":105025,\"åĩıèĤ¥\":105026,\"æ½ĺ\":105027,\"å±±ä¸ľçľģ\":105028,\"åĬĿ\":105029,\"åŁĭ\":105030,\"æŃ¦è£ħ\":105031,\"æ±ĩæĬ¥\":105032,\"ä¸Ģä¸ªæľĪ\":105033,\"çĥŃéĹ¨\":105034,\"å¤§éģĵ\":105035,\"æ´»åĭķ\":105036,\"éĥ½å¾Ī\":105037,\"çĶµæ¢¯\":105038,\"ç´§æĢ¥\":105039,\"åĢºåĬ¡\":105040,\"å®¢æľį\":105041,\"ä¸Ģéĥ¨\":105042,\"ä½łæĺ¯\":105043,\"çİ°çĬ¶\":105044,\"æŃ£ç¡®çļĦ\":105045,\"ä¹ĭå¤Ħ\":105046,\"ç¼ĸåĪ¶\":105047,\"ä½łåı¯ä»¥\":105048,\"çŃīåľ°\":105049,\"èİī\":105050,\"å¯¹è¯Ŀ\":105051,\"æ·ĺå®Ŀ\":105052,\"è°ĥèĬĤ\":105053,\"æİĴæĶ¾\":105054,\"åºĵåŃĺ\":105055,\"ç´ļ\":105056,\"çļĦä¼ĺåĬ¿\":105057,\"æĿĥå¨ģ\":105058,\"ä»¥ä¸ĭç®Ģç§°\":105059,\"ä¸Ģé¡¹\":105060,\"èģļéĽĨ\":105061,\"ä¼łç»ŁçļĦ\":105062,\"æ··åĲĪ\":105063,\"è¿Ļä¸ĢçĤ¹\":105064,\"ä¸Ģçľ¼\":105065,\"æĹłéĻĲ\":105066,\"èİ·å¾ĹäºĨ\":105067,\"éĢīæīĭ\":105068,\"åĪ¶åĵģ\":105069,\"åįıä½ľ\":105070,\"çĭ¬çī¹çļĦ\":105071,\"ä¸Ģçº§\":105072,\"è¿Ļä¸ªéĹ®é¢ĺ\":105073,\"æĸĮ\":105074,\"æĺ¯æĪĳä»¬\":105075,\"æķĮäºº\":105076,\"æ¸ħæ´Ĺ\":105077,\"ä¸ĢçĽ´åľ¨\":105078,\"å°ıç±³\":105079,\"çļĦè¿ĩç¨ĭ\":105080,\"åľ¨åĮĹäº¬\":105081,\"ä¸ĢæĶ¯\":105082,\"æĹ©ä¸Ĭ\":105083,\"æĸĩèīº\":105084,\"ç¦ıåĪ©\":105085,\"é£ŁçĶ¨\":105086,\"æĦŁåĬ¨\":105087,\"åħ¨ç¨ĭ\":105088,\"æĶ¯åĩº\":105089,\"æĸ°å»º\":105090,\"å¸ķ\":105091,\"æĺ¾çĦ¶\":105092,\"çľŁçļĦæĺ¯\":105093,\"æĸ°éĹ»ç½ĳ\":105094,\"èĥ½åĲ¦\":105095,\"åįıåĬ©\":105096,\"äº²èĩª\":105097,\"å¾Īæľī\":105098,\"çĻ¼å±ķ\":105099,\"æĦıå¤§\":105100,\"æĦıå¤§åĪ©\":105101,\"çĶµç½ĳ\":105102,\"æĹ¥çĽĬ\":105103,\"çĨ±\":105104,\"èĤĮèĤ¤\":105105,\"çĶ·æĢ§\":105106,\"ç»Ħå»º\":105107,\"çŃīéĹ®é¢ĺ\":105108,\"æ¶ĪéĻ¤\":105109,\"æĬ¤çĲĨ\":105110,\"å¡ĳæĸĻ\":105111,\"ä¹Įåħĭ\":105112,\"ä¹Įåħĭåħ°\":105113,\"åķĨæłĩ\":105114,\"çĲ³\":105115,\"æĸ°æīĭ\":105116,\"çļĦçī¹çĤ¹\":105117,\"åĴ¬\":105118,\"å½ĵä¸ĭ\":105119,\"è®¾è®¡å¸Ī\":105120,\"èµĶåģ¿\":105121,\"ç¬¬åįģ\":105122,\"æĻºèĥ½åĮĸ\":105123,\"å¼ĢåıĳåĮº\":105124,\"åı¯ä»¥éĢļè¿ĩ\":105125,\"åħ±äº§åħļ\":105126,\"åİīå®³\":105127,\"çģµæ´»\":105128,\"æĹ¶åħī\":105129,\"éĥ¨ä½į\":105130,\"äººæĸĩ\":105131,\"è¿ĽæĿ¥\":105132,\"ä¹ĭæīĢä»¥\":105133,\"ä¸īåįģ\":105134,\"çļĦåŃ¦çĶŁ\":105135,\"éĺ²æĬ¤\":105136,\"åĽ½äº§\":105137,\"æ·±åľ³å¸Ĥ\":105138,\"éĤ£å°±æĺ¯\":105139,\"åĪ°ä½į\":105140,\"çī¹æľĹ\":105141,\"çī¹æľĹæĻ®\":105142,\"å®ŀæĹ¶\":105143,\"åı°çģ£\":105144,\"èĢĮä¸į\":105145,\"æĮĩå®ļ\":105146,\"åĿĿ\":105147,\"èħĲè´¥\":105148,\"çī¹å®ļ\":105149,\"å¢ŀéĢŁ\":105150,\"æłĩçŃ¾\":105151,\"æĪ¿ä»·\":105152,\"æĦģ\":105153,\"è´¯å½»èĲ½å®ŀ\":105154,\"æĢ§è´¨\":105155,\"çłĶç©¶çĶŁ\":105156,\"ç¾İå®¹\":105157,\"æī¹è¯Ħ\":105158,\"ç©¶ç«Ł\":105159,\"äººåĬĽèµĦæºĲ\":105160,\"éĸĭå§ĭ\":105161,\"åĽŀå½Ĵ\":105162,\"èĲ¥åķĨ\":105163,\"èĲ¥åķĨçİ¯å¢ĥ\":105164,\"ä¸ŃåĽ½äºº\":105165,\"çļĦåŁºæľ¬\":105166,\"è¯Ŀé¢ĺ\":105167,\"æłĩåĩĨåĮĸ\":105168,\"è¥¿èĹı\":105169,\"åĭ¾\":105170,\"çļĦè®¾è®¡\":105171,\"ç®ĢåįķçļĦ\":105172,\"å¤įåĪ¶\":105173,\"æ¸Ĳæ¸Ĳ\":105174,\"ä»¥å¤ĸ\":105175,\"èģĶåĬ¨\":105176,\"ä¸¤æ¬¡\":105177,\"æĢ§åĴĮ\":105178,\"æĽ´å¤§\":105179,\"çļĦåĲįåŃĹ\":105180,\"éŁ¦\":105181,\"ä½łè¦ģ\":105182,\"å¢ĥå¤ĸ\":105183,\"æĹ©æľŁ\":105184,\"åĪĿæŃ¥\":105185,\"è´¦åı·\":105186,\"å®³æĢķ\":105187,\"æĺ¨æĹ¥\":105188,\"åĪļæīį\":105189,\"ç¥ŀç§ĺ\":105190,\"ç²¾å¿ĥ\":105191,\"æµģéĢļ\":105192,\"åħ¨æĸ¹ä½į\":105193,\"ä»¥å¾Ģ\":105194,\"ä¹Łå°Ĩ\":105195,\"æĺ¯ä¸ŃåĽ½\":105196,\"åĽ½å®¶çº§\":105197,\"å°ĨåĨĽ\":105198,\"æĳĬ\":105199,\"æľĢä¸º\":105200,\"ç¬¬ä¸ĢæĹ¶éĹ´\":105201,\"æ¶Īæ¯Ĵ\":105202,\"å°Ĩäºİ\":105203,\"å¨ģèĥģ\":105204,\"èĭ±æĸĩ\":105205,\"æīĭä¸Ń\":105206,\"çĲĥè¿·\":105207,\"è§Ĥçľĭ\":105208,\"ç¦»å©ļ\":105209,\"æľ¬åľŁ\":105210,\"åĪĨæķ£\":105211,\"æĻ´\":105212,\"è¦ģæ³¨æĦı\":105213,\"æµªè´¹\":105214,\"ç®¡æİ§\":105215,\"åĩºåĶ®\":105216,\"æĢ»è£ģ\":105217,\"ä¸Ģéĺµ\":105218,\"å¨ĩ\":105219,\"äºĶä¸ª\":105220,\"å½ĵåĪĿ\":105221,\"çºłçº·\":105222,\"ä¸ĵçĶ¨\":105223,\"å¤ĩæ¡Ī\":105224,\"åĪĿæľŁ\":105225,\"å®ĥæĺ¯\":105226,\"åĮºåĿĹ\":105227,\"åĮºåĿĹéĵ¾\":105228,\"å¤§è¿ŀ\":105229,\"è¿Ļç±»\":105230,\"åıĺæĪĲäºĨ\":105231,\"éĤĦæĺ¯\":105232,\"åįļå®¢\":105233,\"çı¾åľ¨\":105234,\"ä¸Ģæĸ¹\":105235,\"å®ĮæĪĲäºĨ\":105236,\"è¿Ļä¸ªæĹ¶åĢĻ\":105237,\"åħ¨å¹´\":105238,\"ä¸Ĭçº¿\":105239,\"ç½Ĳ\":105240,\"ç«ŀèµĽ\":105241,\"åĩºçīĪç¤¾\":105242,\"åĵ¥åĵ¥\":105243,\"å¯«\":105244,\"å¾Ĺä»¥\":105245,\"èĬ±åĽŃ\":105246,\"äºĨèµ·æĿ¥\":105247,\"èĦ±è´«æĶ»åĿļ\":105248,\"çļĦåİŁåĪĻ\":105249,\"è®²è§£\":105250,\"æ¶ĪåĮĸ\":105251,\"æįŁå®³\":105252,\"æļĤæĹ¶\":105253,\"å¾ĹçŁ¥\":105254,\"éĢĤçĶ¨\":105255,\"éĹ¨åºĹ\":105256,\"è§£è¯»\":105257,\"æĻ®åıĬ\":105258,\"äººæ°ĳæ³ķéĻ¢\":105259,\"åī¯ä¸»ä»»\":105260,\"å¿ĥçģµ\":105261,\"è¯ĬæĸŃ\":105262,\"ç¾İå¥³\":105263,\"æŁ¯\":105264,\"å¹´ä»¥æĿ¥\":105265,\"æ´»è·ĥ\":105266,\"åĢŁåĬ©\":105267,\"åħ±å»º\":105268,\"è¯īè®¼\":105269,\"æĶ¾æĿ¾\":105270,\"çªĹåı£\":105271,\"ä¼ģæ¥Ń\":105272,\"åĬłæĭ¿\":105273,\"åĬłæĭ¿å¤§\":105274,\"ä¹°äºĨ\":105275,\"ä¸»æµģ\":105276,\"æĩĤå¾Ĺ\":105277,\"å°Ĩåħ¶\":105278,\"éĢıæĺİ\":105279,\"å·¥ä½ľä¸Ń\":105280,\"èĤ¡ä»·\":105281,\"æ¡£æ¡Ī\":105282,\"æ²¡æľīä»»ä½ķ\":105283,\"åĳĬçŁ¥\":105284,\"å¹´åĪĿ\":105285,\"æĹ¥ä¸ĭåįĪ\":105286,\"åİĤåķĨ\":105287,\"èĬĤå¥ı\":105288,\"ä¸»å¯¼\":105289,\"è£Ŀ\":105290,\"åħ³éĶ®è¯į\":105291,\"èģĬå¤©\":105292,\"åĨĻä½ľ\":105293,\"æĶ¹éĿ©å¼ĢæĶ¾\":105294,\"æľīæľĽ\":105295,\"éĢļæĬ¥\":105296,\"èĲĮ\":105297,\"æĢ»é¢Ŀ\":105298,\"çŁŃæľŁ\":105299,\"ä¸Ģçķª\":105300,\"çĶŁæ´»çļĦ\":105301,\"åĮĸçļĦ\":105302,\"æĺ¥å¤©\":105303,\"è¿Ļåľº\":105304,\"æĸ°å¼Ģä¼łå¥ĩ\":105305,\"æĺ¯è¦ģ\":105306,\"å°ļæľª\":105307,\"åıĺæĽ´\":105308,\"ä¸Ģåĳ¨\":105309,\"å®¢è§Ĥ\":105310,\"æĹ¥èĩ³\":105311,\"é¹°\":105312,\"çİ²\":105313,\"å°ĨæĿ¥\":105314,\"å®¢äºº\":105315,\"åıĺéĿ©\":105316,\"è¯´äºĨ\":105317,\"åİŁçĲĨ\":105318,\"èģĮåĬ¡\":105319,\"åıĪæľī\":105320,\"ä¸Ģåı¥è¯Ŀ\":105321,\"æĦŁåıĹåĪ°\":105322,\"ç¬ĶèĢħ\":105323,\"ç§»æ°ĳ\":105324,\"è¥¿åįĹ\":105325,\"ä¹ĥèĩ³\":105326,\"æŃ£è§Ħ\":105327,\"åĪĿä¸Ń\":105328,\"çĬ¬\":105329,\"å½ĵäºĭ\":105330,\"å½ĵäºĭäºº\":105331,\"æĪĳä»¬è¦ģ\":105332,\"åħ¥åı£\":105333,\"éĤ£æĹ¶\":105334,\"æľīéĻĲè´£ä»»\":105335,\"å°ĳå¥³\":105336,\"è¿Ļä¹Īå¤ļ\":105337,\"åĪĨåħ¬åı¸\":105338,\"å®ĩå®Ļ\":105339,\"çļĦéĢīæĭ©\":105340,\"å§Ĳå§Ĳ\":105341,\"åıĳèµ·\":105342,\"è»į\":105343,\"æĽ´å¥½åľ°\":105344,\"éĻĨç»Ń\":105345,\"æľ¬æľįåĭĻ\":105346,\"å«©\":105347,\"èµ¶ç´§\":105348,\"èĦĤèĤª\":105349,\"ç¬¬äºĮå¤©\":105350,\"æĪĳä¼ļ\":105351,\"ä¸¤ä½į\":105352,\"æķ²\":105353,\"åħ¬å®īæľºåħ³\":105354,\"ç§ĳæĬĢåĪĽæĸ°\":105355,\"å°ºå¯¸\":105356,\"è¾Ĳå°Ħ\":105357,\"å®ĹæķĻ\":105358,\"è½¬æį¢\":105359,\"åĩºçİ°åľ¨\":105360,\"ä¸Ģé¢Ĺ\":105361,\"æľŁéĻĲ\":105362,\"åĲĮåŃ¦ä»¬\":105363,\"åĮĹæĸ¹\":105364,\"ä½łå°±\":105365,\"ä¸Ģå¸¦ä¸Ģè·¯\":105366,\"èĢģå©Ĩ\":105367,\"æ¸¸æĪıçİ©å®¶\":105368,\"çļĦç»ĵæŀľ\":105369,\"è¡¥åģ¿\":105370,\"å¤ĸè´¸\":105371,\"å¯¹å¾ħ\":105372,\"ç»´çĶŁç´ł\":105373,\"ç»ıéĶĢåķĨ\":105374,\"è¿ĺå°Ĩ\":105375,\"åŃĲå¥³\":105376,\"æĽ´é«ĺ\":105377,\"ä¸įå¤§\":105378,\"éī´å®ļ\":105379,\"è®©ä»ĸä»¬\":105380,\"æīĢè°ĵçļĦ\":105381,\"æŃ»äºĨ\":105382,\"å¸®æī¶\":105383,\"åĵ²åŃ¦\":105384,\"ä»¥ä¸ĬçļĦ\":105385,\"çļĦåħ³éĶ®\":105386,\"æĹ©å°±\":105387,\"æĬ¥ä»·\":105388,\"éģµå®Ī\":105389,\"æī©å¼ł\":105390,\"æĺ¯å¾Ī\":105391,\"å¼ĢéĢļ\":105392,\"æĸ°åĬł\":105393,\"æĸ°åĬłåĿ¡\":105394,\"ç¿»è¯ĳ\":105395,\"è¯¢éĹ®\":105396,\"é¸Ń\":105397,\"ä½ĵåĨħ\":105398,\"ä¸¤ä¸ªäºº\":105399,\"çĪ¹\":105400,\"éľľ\":105401,\"ä¹¡æĿĳæĮ¯åħ´\":105402,\"çĿ¡è§ī\":105403,\"å®ĺåĳĺ\":105404,\"åĪĽå§ĭ\":105405,\"åĪĽå§ĭäºº\":105406,\"ä¼Ĺäºº\":105407,\"åį³ä¾¿\":105408,\"çĸ«èĭĹ\":105409,\"ä¼ģä¸ļå®¶\":105410,\"æ¸£\":105411,\"ç²¾åĬĽ\":105412,\"å¤ĸéĥ¨\":105413,\"èģªæĺİ\":105414,\"è¿Ļä¹Ł\":105415,\"å½ķåıĸ\":105416,\"åĨ²çªģ\":105417,\"åħ¨èº«\":105418,\"åŃ£èĬĤ\":105419,\"å¿½çĦ¶\":105420,\"çļĦæĢģåº¦\":105421,\"åĤ¨å¤ĩ\":105422,\"ä¿Ŀåħ»\":105423,\"çļĦæĥ³æ³ķ\":105424,\"ä¸Ĭæµ·å¸Ĥ\":105425,\"æĲºæīĭ\":105426,\"çļĦä¿¡æģ¯\":105427,\"åķĨåľº\":105428,\"çļĦæĢĿæĥ³\":105429,\"æĿĥåĬĽ\":105430,\"æ¯«æĹł\":105431,\"æĢĢåŃķ\":105432,\"ç¡¬ä»¶\":105433,\"åĨħèĴĻåı¤\":105434,\"æİ¢è®¨\":105435,\"åħ»çĶŁ\":105436,\"çļĦè¡¨çİ°\":105437,\"ç©ºä¸Ń\":105438,\"æģĲæĢĸ\":105439,\"å¾Īé«ĺ\":105440,\"ç»ıæµİç¤¾ä¼ļ\":105441,\"ä¸ĬæĿ¥\":105442,\"å»¶ç»Ń\":105443,\"éĩįå¤į\":105444,\"éĺ²èĮĥ\":105445,\"çļĦå½¢å¼ı\":105446,\"æľĪåºķ\":105447,\"èĢģå¹´äºº\":105448,\"ç»¿åĮĸ\":105449,\"å±±åĮº\":105450,\"æĭ¿åĩº\":105451,\"æĹħå®¢\":105452,\"æĽ´æį¢\":105453,\"åħ¬ä¸»\":105454,\"èĬĤçº¦\":105455,\"åħ¨åİ¿\":105456,\"åĽŀæĬ¥\":105457,\"çĲĨæĢ§\":105458,\"çĸ¯çĭĤ\":105459,\"æ¶īå«Į\":105460,\"åī§æĥħ\":105461,\"åĨ¬åŃ£\":105462,\"åĲİç»Ń\":105463,\"è¿Ļæĺ¯ä¸Ģä¸ª\":105464,\"æ¼Ķè®²\":105465,\"ä¸Ģå±Ĥ\":105466,\"æľīåħ³éĥ¨éĹ¨\":105467,\"æĹłå¥Ī\":105468,\"ç§įç±»\":105469,\"çĽ¸åħ³çļĦ\":105470,\"æĪĸèĢħæĺ¯\":105471,\"æī¶æĮģ\":105472,\"å¤ļæķ°\":105473,\"çļĦä½ľåĵģ\":105474,\"ä¸ĭä¸ĢæŃ¥\":105475,\"å¸ĪåĤħ\":105476,\"é«ĺéĢŁåħ¬è·¯\":105477,\"å¥½åıĭ\":105478,\"ä¼ĺç§ĢçļĦ\":105479,\"è¿ĽäºĨ\":105480,\"æģĲæĢķ\":105481,\"äºĨåĲ§\":105482,\"å¤§è§Ħæ¨¡\":105483,\"çļĦä¸ĸçķĮ\":105484,\"æĢĢçĸĳ\":105485,\"å··\":105486,\"åħ´å¥ĭ\":105487,\"æĪ°\":105488,\"æĿĳéĩĮ\":105489,\"æľĭåıĭåľĪ\":105490,\"åĨ¬å¤©\":105491,\"ä¸Ńåįİäººæ°ĳ\":105492,\"åįıåķĨ\":105493,\"è¯ĦéĢī\":105494,\"æĹŃ\":105495,\"å¢ŀåĬłäºĨ\":105496,\"åıĹä¼¤\":105497,\"ä¸ĢèĤ¡\":105498,\"ä¾¿æį·\":105499,\"ä¸ĳ\":105500,\"é¹¤\":105501,\"å¤ĸè§Ĥ\":105502,\"å·¥ç¨ĭå¸Ī\":105503,\"åĴĮåħ¶ä»ĸ\":105504,\"è¿Ļå°±\":105505,\"ä¸Ńå°ıä¼ģä¸ļ\":105506,\"è¥¿åĮĹ\":105507,\"åĽ½æľīä¼ģä¸ļ\":105508,\"èĭ¥æĺ¯\":105509,\"åı¯æĥľ\":105510,\"çĶŁæĹ¥\":105511,\"åĩ½\":105512,\"ä¹°åįĸ\":105513,\"ç¥Ŀç¦ı\":105514,\"äººæ°ĳç¾¤ä¼Ĺ\":105515,\"åħīæĺİ\":105516,\"åħ¬å¯ĵ\":105517,\"æĺ¯è°ģ\":105518,\"æĪĳçŁ¥éģĵ\":105519,\"è¯Ńæĸĩ\":105520,\"æķıæĦŁ\":105521,\"ä¸įéĶĻçļĦ\":105522,\"æĿ¥è®²\":105523,\"æ³¢åĬ¨\":105524,\"çļĦç¬¬ä¸Ģ\":105525,\"åľ°éľĩ\":105526,\"åľ¨åħ¨åĽ½\":105527,\"éª¨å¹²\":105528,\"å®īç½®\":105529,\"å®¶çĶµ\":105530,\"ä¸İæŃ¤\":105531,\"ä¸İæŃ¤åĲĮæĹ¶\":105532,\"åıĹçģ¾\":105533,\"çĥŃçº¿\":105534,\"çļĦæĬĢæľ¯\":105535,\"æµĭéĩı\":105536,\"ä¾Ŀèµĸ\":105537,\"ä¸ŃåĽ½çļĦ\":105538,\"çī¹æĢ§\":105539,\"è¾ĥé«ĺ\":105540,\"è¸©\":105541,\"ä¼ļåľ¨\":105542,\"å»ºéĢł\":105543,\"å¯¼èĪª\":105544,\"æĥ³èµ·\":105545,\"åħ¨ä¸ĸçķĮ\":105546,\"å»ºæĿĲ\":105547,\"ç¯Ģ\":105548,\"çļĦåŁºç¡Ģ\":105549,\"èĩªåĬ¨åĮĸ\":105550,\"åīįåĲİ\":105551,\"çĿ¡çľł\":105552,\"æİ¨è¡Į\":105553,\"æį®äºĨè§£\":105554,\"ä»Ģä¹ĪæĹ¶åĢĻ\":105555,\"ä¸įåĸľæ¬¢\":105556,\"çħ¤çĤŃ\":105557,\"éĤ£ä¹Īå¤ļ\":105558,\"å¸ĤåľºåĮĸ\":105559,\"ä¸įç®¡æĺ¯\":105560,\"ç«ĭåľº\":105561,\"éĥ½æ²¡\":105562,\"è¯¾é¢ĺ\":105563,\"æĪĳä»¬å°Ĩ\":105564,\"è¿ĩçļĦ\":105565,\"åĨįåĬłä¸Ĭ\":105566,\"çĪ¾\":105567,\"èº«æĿĲ\":105568,\"çĶ·å¥³\":105569,\"è¿ľè¿ľ\":105570,\"çĶ·çĶŁ\":105571,\"èĩªèº«çļĦ\":105572,\"è´Łæĭħ\":105573,\"çĻ¾ä¸ĩ\":105574,\"è¥¿çıŃ\":105575,\"è¥¿çıŃçīĻ\":105576,\"åĩĢåĪ©æ¶¦\":105577,\"æ¾³å¤§\":105578,\"æ¾³å¤§åĪ©äºļ\":105579,\"ä¸įåİ»\":105580,\"æī¿åıĹ\":105581,\"æ¥¼çĽĺ\":105582,\"å¢ĥåĨħ\":105583,\"æ··åĩĿ\":105584,\"æ··åĩĿåľŁ\":105585,\"æĢĿæĥ³æĶ¿æ²»\":105586,\"å¸ĤåĮº\":105587,\"æĭĽæłĩ\":105588,\"åĽ¢ä½ĵ\":105589,\"è¿Ľåº¦\":105590,\"åĨĽéĺŁ\":105591,\"åıįå¼¹\":105592,\"äºĨä¸ĢäºĽ\":105593,\"æİ¥å¾ħ\":105594,\"çļĦåŃ¦ä¹ł\":105595,\"éħįéĢģ\":105596,\"é£Łåĵģå®īåħ¨\":105597,\"æĽ¿ä»£\":105598,\"æĺ¯ä»¥\":105599,\"éĢļçĶ¨\":105600,\"çłĶç©¶æīĢ\":105601,\"ç¦ħ\":105602,\"æīĶ\":105603,\"éļĶç¦»\":105604,\"ä¸ĩå¹³æĸ¹ç±³\":105605,\"çļĦè§Ħå®ļ\":105606,\"ç»ĻæĪĳä»¬\":105607,\"æ¿Ģåħī\":105608,\"ä¼ļåĩºçİ°\":105609,\"çŁŃä¿¡\":105610,\"ç©¿çĿĢ\":105611,\"æ²Īéĺ³\":105612,\"æķĻæĿĲ\":105613,\"éĺ²çĸ«\":105614,\"ä¼ĺèī¯\":105615,\"çº¦å®ļ\":105616,\"æĪĳçľģ\":105617,\"åħ¬æ°ĳ\":105618,\"éģ¸æĵ\":105619,\"éģ¸æĵĩ\":105620,\"å·²æĪĲä¸º\":105621,\"ä¸įå¿ħ\":105622,\"ç¥ĸåĽ½\":105623,\"å¹¶æľª\":105624,\"åľŁå£¤\":105625,\"å¾®ç¬ĳ\":105626,\"äºĭä¸ļåįķä½į\":105627,\"çļĦæ¸¸æĪı\":105628,\"åħ¬ç¤º\":105629,\"åĲĪçĲĨçļĦ\":105630,\"çªĿ\":105631,\"æ°Ķè±¡\":105632,\"å®¶ä¸Ń\":105633,\"äº®çĽ¸\":105634,\"åį«æĺŁ\":105635,\"è®°è½½\":105636,\"è§Ĩéĩİ\":105637,\"åľ°åĮºçļĦ\":105638,\"ä½Ĩä»ĸ\":105639,\"èĤĮèĤī\":105640,\"äºıæįŁ\":105641,\"åĬŀåŃ¦\":105642,\"ä¸Ģè¡Į\":105643,\"è¯ŀçĶŁ\":105644,\"åıĳå¸ĥçļĦ\":105645,\"çļĦæľįåĬ¡\":105646,\"çļĦçłĶç©¶\":105647,\"åĳ¨æľ«\":105648,\"äº§ä¸ļåĽŃ\":105649,\"é«ĺæ¸©\":105650,\"æĪĲåĬŁçļĦ\":105651,\"æŃ¥éª¤\":105652,\"åŃĺåĤ¨\":105653,\"åŃĲåħ¬åı¸\":105654,\"è®©å¥¹\":105655,\"ä¸Ńæľī\":105656,\"åĺīå®¾\":105657,\"å¦®\":105658,\"æĺİå¹´\":105659,\"äºĨåĲĹ\":105660,\"äºīè®®\":105661,\"æĪĪ\":105662,\"ä¸Ģæľ¬\":105663,\"ç¾İä¸½çļĦ\":105664,\"ä½łè¯´\":105665,\"å¤§äºº\":105666,\"æĶ»çķ¥\":105667,\"ä¸įæľĥ\":105668,\"å¾ħéģĩ\":105669,\"ä¸Ģè¾Ĩ\":105670,\"çīĪæĿĥæīĢæľī\":105671,\"æ°ĳä¼Ĺ\":105672,\"åĬŁå¤«\":105673,\"å±ķä¼ļ\":105674,\"å¤§èĦĳ\":105675,\"æ¯ıæľĪ\":105676,\"å°ıéº¦\":105677,\"æµĻæ±Łçľģ\":105678,\"çļĦæīĢæľī\":105679,\"ä¸ĭæ»ĳ\":105680,\"èĵĿèī²\":105681,\"è¦ģæĥ³\":105682,\"åŃ¦çĶŁçļĦ\":105683,\"å½ĵä½ł\":105684,\"ä½ľæĪĺ\":105685,\"å®¶ä¹¡\":105686,\"å¤ļåĲį\":105687,\"é«ĺäºİ\":105688,\"åĿļå¼º\":105689,\"è¿ŀéĶģ\":105690,\"åĲİæŀľ\":105691,\"äººäºĭ\":105692,\"ç´ħ\":105693,\"æ¿ĢåĬ¨\":105694,\"è¿ĽæĶ»\":105695,\"ç©Ĩ\":105696,\"ä¸ĺ\":105697,\"è®©èĩªå·±\":105698,\"ä»¥æŃ¤\":105699,\"å¤«äºº\":105700,\"å¼Ģè®¾\":105701,\"æ°Ķè´¨\":105702,\"é¸¡èĽĭ\":105703,\"çĦ¡æ³ķ\":105704,\"åĲĥäºĨ\":105705,\"åĪĨåĪ«ä¸º\":105706,\"èģĶåĲĪåĽ½\":105707,\"å½ĵä»£\":105708,\"å¦Ĥæŀľæĺ¯\":105709,\"è¿ľç¨ĭ\":105710,\"åĸĤ\":105711,\"è®°ä½ı\":105712,\"æ¸ħåįķ\":105713,\"åĲĪä½ľä¼Ļä¼´\":105714,\"åİ»åģļ\":105715,\"æķħéļľ\":105716,\"æ¨¡æĭŁ\":105717,\"å¸ĪçĶŁ\":105718,\"åīįæĿ¥\":105719,\"çĶµè§Ĩåī§\":105720,\"çĥŃçĪ±\":105721,\"éľ²åĩº\":105722,\"é«ĺå±Ĥ\":105723,\"çĶµåĻ¨\":105724,\"çºªå¾ĭ\":105725,\"å¼ĢåıĳåķĨ\":105726,\"éķ¿å®ī\":105727,\"è½½ä½ĵ\":105728,\"çļĦå°±æĺ¯\":105729,\"è¢«äºº\":105730,\"åıĹçĲĨ\":105731,\"ç¯®çĲĥ\":105732,\"èİİ\":105733,\"äº¤ç»Ļ\":105734,\"æľªæĿ¥çļĦ\":105735,\"ä¸¤å¤§\":105736,\"åĲķå¸ĥ\":105737,\"çŃīäºº\":105738,\"çļĦæĹ¥åŃĲ\":105739,\"åĲĪä½ľç¤¾\":105740,\"æĮĳéĢī\":105741,\"åŃĺæ¬¾\":105742,\"ç³»ç»ŁçļĦ\":105743,\"æĬĬå®ĥ\":105744,\"æ²¡æľīä»Ģä¹Ī\":105745,\"ä»İæŃ¤\":105746,\"ä¸ŃåįĪ\":105747,\"çĸ¼çĹĽ\":105748,\"å·©åĽº\":105749,\"æµªæ¼«\":105750,\"çĽ¸åħ³éĥ¨éĹ¨\":105751,\"éķ¿åŁİ\":105752,\"çº¤ç»´\":105753,\"ä¸ĬéĹ¨\":105754,\"çĪĨçĤ¸\":105755,\"èµ·çĤ¹\":105756,\"çļĦéĢļçŁ¥\":105757,\"èĢĮæĿ¥\":105758,\"çļĦèĢģ\":105759,\"æīĭéĩĮ\":105760,\"è¯ŃéŁ³\":105761,\"è¾Ľèĭ¦\":105762,\"æ±Łèĭıçľģ\":105763,\"çĶ¨äºĨ\":105764,\"èº«ä»½è¯ģ\":105765,\"æľīåĬ©\":105766,\"æľīåĬ©äºİ\":105767,\"çī©èģĶç½ĳ\":105768,\"åĩºéĹ¨\":105769,\"å¼ŁåŃĲ\":105770,\"æĥ¹\":105771,\"è¿Ļä»¶äºĭ\":105772,\"æĪĳä»¬åı¯ä»¥\":105773,\"çļĦçĶŁåĳ½\":105774,\"æľīä¸Ģç§į\":105775,\"åºĹéĵº\":105776,\"åıĮæīĭ\":105777,\"çļĦæ¶Īæģ¯\":105778,\"èĢĲå¿ĥ\":105779,\"å°´å°¬\":105780,\"éĤ£å¤©\":105781,\"é¦ĸæī¹\":105782,\"æĺ¯ä¸Ģå®¶\":105783,\"äººæ°Ķ\":105784,\"åıįæŃ£\":105785,\"æĪĳåĴĮ\":105786,\"å®łçī©\":105787,\"ä¸įå¯¹\":105788,\"å¯»æ±Ĥ\":105789,\"çĽ¸ä¼¼\":105790,\"åľ¨ç¾İåĽ½\":105791,\"åı«åģļ\":105792,\"åĹİ\":105793,\"ç«ĭè¶³\":105794,\"çĶ¨éĢĶ\":105795,\"åħĨ\":105796,\"å¤§æ°Ķ\":105797,\"åĲĳä¸Ĭ\":105798,\"ä»ĸå°±\":105799,\"é¡¹çĽ®å»ºè®¾\":105800,\"èĭ¥å¹²\":105801,\"æĺ¯æľī\":105802,\"æ¿Ģæĥħ\":105803,\"çļĦæĦıä¹ī\":105804,\"æĺŃ\":105805,\"ä¸¥éĩįçļĦ\":105806,\"å¯ĨéĽĨ\":105807,\"èĪŀè¹Ī\":105808,\"èį£èİ·\":105809,\"èİ·æĤī\":105810,\"æ±ŁåįĹ\":105811,\"åģĩå¦Ĥ\":105812,\"æĪ·å¤ĸ\":105813,\"çº¿ç´¢\":105814,\"ç§ģäºº\":105815,\"è½¬åŀĭåįĩçº§\":105816,\"çļĦä»·åĢ¼\":105817,\"åįķçĭ¬\":105818,\"èĢģçĻ¾å§ĵ\":105819,\"å°įæĸ¼\":105820,\"åĽ½éĻħåĮĸ\":105821,\"ä¼°åĢ¼\":105822,\"æľįåĬ¡ä¸ļ\":105823,\"èĩŃ\":105824,\"æİīäºĨ\":105825,\"è§£åĨ³äºĨ\":105826,\"ä¹Łä¸įèĥ½\":105827,\"åħ¹\":105828,\"æĸ¯çī¹\":105829,\"æķħæĦı\":105830,\"è¿ĩåº¦\":105831,\"èĬĤæĹ¥\":105832,\"çĻ½çĻľ\":105833,\"çĻ½çĻľé£İ\":105834,\"ç»§æī¿\":105835,\"äºĨä¸įå°ĳ\":105836,\"äºĮäºº\":105837,\"è§ģéĿ¢\":105838,\"æĥ³æĥ³\":105839,\"å¤įåĲĪ\":105840,\"åº·å¤į\":105841,\"åİ¿åŁİ\":105842,\"åľ¨åĽ½åĨħ\":105843,\"åľºåľ°\":105844,\"éĻ¶çĵ·\":105845,\"è¿Ļé¡¹\":105846,\"çľ¼ä¸Ń\":105847,\"çł¸\":105848,\"æĦŁè§īåĪ°\":105849,\"æŀľçĦ¶\":105850,\"æĶ¾åħ¥\":105851,\"çº¦æĿŁ\":105852,\"æİĴæŁ¥\":105853,\"è½¦ä¸»\":105854,\"çļĦæĦıæĢĿ\":105855,\"æĸ°åŁİ\":105856,\"æĥ³çĿĢ\":105857,\"éģĤ\":105858,\"èĮ¶åı¶\":105859,\"ä¹°æĪ¿\":105860,\"åĨľæĪ·\":105861,\"é«ĺæīĭ\":105862,\"çİīç±³\":105863,\"æĸ°åĨłèĤºçĤİ\":105864,\"çħ§æĺİ\":105865,\"æĮĩåįĹ\":105866,\"è¸¢\":105867,\"æķĳæı´\":105868,\"æĻ¯çĤ¹\":105869,\"ç¨İæĶ¶\":105870,\"çļĦæīĭ\":105871,\"æŃ£å¥½\":105872,\"è¦ģæĬĬ\":105873,\"éļıæĦı\":105874,\"åħ¶å®ŀæĺ¯\":105875,\"ç»Ļèĩªå·±\":105876,\"è°ĪåĪ¤\":105877,\"æ¯ıå¤©éĥ½\":105878,\"æĢģåĬ¿\":105879,\"é¢Ħçº¦\":105880,\"åİĨåı²ä¸Ĭ\":105881,\"å®Ŀè´Ŀ\":105882,\"åīįè¿Ľ\":105883,\"ä¹Łå°±æĺ¯è¯´\":105884,\"çļĦæĦıè§ģ\":105885,\"åı£ç½©\":105886,\"åİĺç±³\":105887,\"èĬ±è´¹\":105888,\"ä½ĵèĤ²æĬķæ³¨\":105889,\"åħ¬ä¼Ĺåı·\":105890,\"èĳĹåĲįçļĦ\":105891,\"å¼ĢæĪ·\":105892,\"æĭįåįĸ\":105893,\"å²ģæľĪ\":105894,\"åĨħæ¶µ\":105895,\"å®Įæķ´çļĦ\":105896,\"é«ĺåİĭ\":105897,\"åħ¬åĬ¡åĳĺ\":105898,\"ä½¿çĶ¨çļĦ\":105899,\"çĶŁäº§çº¿\":105900,\"å¦¹å¦¹\":105901,\"èµ°è®¿\":105902,\"æĺ¯åı¯ä»¥\":105903,\"åľ¨å®¶\":105904,\"æļ´åĬĽ\":105905,\"æ³°åĽ½\":105906,\"è´¨çĸĳ\":105907,\"ä¸įéģİ\":105908,\"å¤©çĦ¶æ°Ķ\":105909,\"ç¼ºçĤ¹\":105910,\"å°ıåŀĭ\":105911,\"ä¸įä»ħæĺ¯\":105912,\"é»ĳæļĹ\":105913,\"æ¢¨\":105914,\"æĸĩæĹħ\":105915,\"è¦ģæľī\":105916,\"ä¸Ńå±±\":105917,\"çļĦæķ°æį®\":105918,\"å¾Ĺå¾Ī\":105919,\"ä»¥ä¾¿\":105920,\"å¯¹ä»ĸ\":105921,\"åĬłä»¥\":105922,\"çĻ¼çı¾\":105923,\"è®¾å®ļ\":105924,\"èĤļåŃĲ\":105925,\"éĿĸ\":105926,\"å¥īçĮ®\":105927,\"ä¸įåıĺ\":105928,\"åı£ç¢ĳ\":105929,\"åľ¨åĵªéĩĮ\":105930,\"ä½Ĳ\":105931,\"è¿Ļä¸¤ä¸ª\":105932,\"çļĦæĸ¹åĲĳ\":105933,\"æŀ«\":105934,\"äºĮæ¬¡\":105935,\"çīĩåĮº\":105936,\"éłĲ\":105937,\"ç£Ĭ\":105938,\"æĭ¿çĿĢ\":105939,\"å·²ç»ıæĪĲä¸º\":105940,\"ä¹ĭä¸Ĭ\":105941,\"å®ĹæĹ¨\":105942,\"å¥¶å¥¶\":105943,\"é«ĺæĸ°åĮº\":105944,\"ç¤¾æľĥ\":105945,\"è·Łè¸ª\":105946,\"æľįåĬ¡ä¸Ńå¿ĥ\":105947,\"æī¯\":105948,\"æīĭæĮĩ\":105949,\"ç¤¼çī©\":105950,\"å®¿èĪį\":105951,\"çĶ¨å¿ĥ\":105952,\"æıĲé«ĺäºĨ\":105953,\"äº®çĤ¹\":105954,\"ä¸įæĦ¿æĦı\":105955,\"æĴŃæĶ¾\":105956,\"å¤ļå°ĳéĴ±\":105957,\"æ²¡ä»Ģä¹Ī\":105958,\"æķ°åįģ\":105959,\"æĢ»çĽĳ\":105960,\"çļĦåŁİå¸Ĥ\":105961,\"æī¾åĪ°äºĨ\":105962,\"åĨħåľ°\":105963,\"åĪ°çİ°åľ¨\":105964,\"æĪĺæĸĹåĬĽ\":105965,\"åİŁå§ĭ\":105966,\"åĥ§\":105967,\"åĢĴæĺ¯\":105968,\"æľĢåħ·\":105969,\"è´«åĽ°æĪ·\":105970,\"éĢģåĪ°\":105971,\"çº§åĪ«\":105972,\"åĩºèµĦ\":105973,\"æĪªæŃ¢\":105974,\"ç§įåŃĲ\":105975,\"èĥ½ä¸įèĥ½\":105976,\"å¹¸è¿Ĳ\":105977,\"èĸĩ\":105978,\"é¡¹éĵ¾\":105979,\"æĮĤçīĮ\":105980,\"ä¸Ģæ¨£\":105981,\"ä¹ĺå®¢\":105982,\"èĲ½åĲİ\":105983,\"ä½ĨæĪĳ\":105984,\"æĹ©åľ¨\":105985,\"åĬ¨æ¼«\":105986,\"å¹³çŃī\":105987,\"å¯¹ä½ł\":105988,\"ä¸įæĢķ\":105989,\"å¤ĸçķĮ\":105990,\"å¤ļå¹´æĿ¥\":105991,\"é¦ĸä¸ª\":105992,\"æ²³åįĹçľģ\":105993,\"æĪĸåħ¶ä»ĸ\":105994,\"éķľå¤´\":105995,\"åįĹæĺĮ\":105996,\"ä¸ĢéĿ¢\":105997,\"éĢłæĪĲçļĦ\":105998,\"å´Ķ\":105999,\"çŃĴ\":106000,\"æķĻèĤ²éĥ¨\":106001,\"åľ°åŁŁ\":106002,\"æĺĨæĺİ\":106003,\"å·´é»İ\":106004,\"æīĭæ¸¸\":106005,\"ä¸ĢæĹ¶\":106006,\"çłį\":106007,\"é¡¶çº§\":106008,\"åħ±è®¡\":106009,\"åİŁæ²¹\":106010,\"è¾īçħĮ\":106011,\"è¯´æĺ¯\":106012,\"æĸ°åįİç¤¾\":106013,\"ç»ıåİĨäºĨ\":106014,\"ä¸įæŃ¢\":106015,\"è¦ģä¹Ī\":106016,\"èĢħçļĦ\":106017,\"æĢ»æĬķèµĦ\":106018,\"è¡Įé©¶\":106019,\"ä¸Ĭå¸Ŀ\":106020,\"å¹´çºª\":106021,\"çĲ¼\":106022,\"ä¼łè¯´\":106023,\"ç²¾èĭ±\":106024,\"æĸ¹éĴĪ\":106025,\"æ±Łæ¹ĸ\":106026,\"æĪĲçĤº\":106027,\"æĢ»éĩı\":106028,\"æĬķæĶ¾\":106029,\"åĬ¨çĶ»\":106030,\"èĹ¤\":106031,\"çĶµæºĲ\":106032,\"éĴĻ\":106033,\"åĲĮè¡Į\":106034,\"æĻ®éĢļçļĦ\":106035,\"åĽ¾ä¹¦é¦Ĩ\":106036,\"è¯ĪéªĹ\":106037,\"æħĪåĸĦ\":106038,\"è¿Ļä»½\":106039,\"ä¸»æĮģäºº\":106040,\"å°±è¿Ļæł·\":106041,\"èĢĮæĪĲ\":106042,\"èĩªè¡Įè½¦\":106043,\"ä¸ŃåĽ½çī¹èī²\":106044,\"èĤ¿çĺ¤\":106045,\"åĲ¾\":106046,\"å¼Łå¼Ł\":106047,\"åıĹçĽĬ\":106048,\"éĢīæĭ©äºĨ\":106049,\"æĺİæĺ¾çļĦ\":106050,\"æĬ¥èĢĥ\":106051,\"ç¬ĳéģĵ\":106052,\"éĽĸçĦ¶\":106053,\"æ¸©å·ŀ\":106054,\"éĿŀæ´²\":106055,\"ç§įç§į\":106056,\"åıĤåĬłäºĨ\":106057,\"è´§è¿Ĳ\":106058,\"éļıä¾¿\":106059,\"å°±æ²¡æľī\":106060,\"ç¸£\":106061,\"å¤®è§Ĩ\":106062,\"ç©¿è¶Ĭ\":106063,\"çļĦçİ°è±¡\":106064,\"åĩłæ¬¡\":106065,\"çļĦé£İéĻ©\":106066,\"æŃĮæĽ²\":106067,\"æľ¬å±Ĭ\":106068,\"å¹´åĨħ\":106069,\"ä¸įè¶ħè¿ĩ\":106070,\"è¿ĩå¤ļ\":106071,\"å¿ħé¡»è¦ģ\":106072,\"ç»ĵè®º\":106073,\"åĢŁéī´\":106074,\"ç¥ŀå¥ĩ\":106075,\"æľŁæľĽ\":106076,\"ä¸ĵäº«\":106077,\"éĿŀå¸¸éĩįè¦ģ\":106078,\"æĦıè¯ĨåĪ°\":106079,\"åĲĪå¹¶\":106080,\"æĬĬèĩªå·±\":106081,\"å¥Ĺè£ħ\":106082,\"éŃĶæ³ķ\":106083,\"å¤ıåŃ£\":106084,\"ä¸įåĥı\":106085,\"å¢ĥçķĮ\":106086,\"æĥĬåĸľ\":106087,\"æľīä¸Ģå¤©\":106088,\"çĦ¦çĤ¹\":106089,\"æĪĳè®¤ä¸º\":106090,\"åħ°å·ŀ\":106091,\"çĶµæ°Ķ\":106092,\"èģĶç³»æĪĳä»¬\":106093,\"ç§ĳæĻ®\":106094,\"å¥¹è¯´\":106095,\"çļĦæĸĩç«ł\":106096,\"å¥ĩæĢª\":106097,\"åıĭå¥½\":106098,\"é¥®æĸĻ\":106099,\"çļĦæĶ¯æĮģ\":106100,\"çŃĶåºĶ\":106101,\"éĩįéĩı\":106102,\"çĳ¶\":106103,\"åĩıè½»\":106104,\"ç§ĳåŃ¦å®¶\":106105,\"å·´è¥¿\":106106,\"éĩĳèŀįæľºæŀĦ\":106107,\"åħļå§Ķä¹¦è®°\":106108,\"è²¸æ¬¾\":106109,\"ç²¾èĩ´\":106110,\"ä»İæľª\":106111,\"åį°åĪ·\":106112,\"åĽŀé¡¾\":106113,\"é¦ĸéĥ½\":106114,\"åıĳèĤ²\":106115,\"éĹ®éģĵ\":106116,\"è¾¾åĪ°äºĨ\":106117,\"å¿įä¸įä½ı\":106118,\"æīįæľī\":106119,\"æįĲèµł\":106120,\"ä½ĽæķĻ\":106121,\"ä¸įæ¸ħ\":106122,\"éĺŁéķ¿\":106123,\"çĽ¸åıį\":106124,\"æĬ¥èŃ¦\":106125,\"å¤§åħ¨\":106126,\"æ¬§çĽŁ\":106127,\"å¸®å¿Ļ\":106128,\"çļĦæĻĤåĢĻ\":106129,\"çĽ®å½ķ\":106130,\"è¶³ä»¥\":106131,\"èī°éļ¾\":106132,\"ä»ĸä¹Ł\":106133,\"å·¥ä½ľèĢħ\":106134,\"å¤´èĦĳ\":106135,\"ç¼ºéĻ·\":106136,\"æĪĲç«ĭäºĨ\":106137,\"å°±å¼Ģå§ĭ\":106138,\"è®¤åĲĮ\":106139,\"é»Ħèī²\":106140,\"çĹħæĥħ\":106141,\"è¦ºå¾Ĺ\":106142,\"è¿Ļä¸¤\":106143,\"ä¿¡ä»°\":106144,\"åľĭå®¶\":106145,\"ä¸įä»ħä»ħæĺ¯\":106146,\"çĭ¬å®¶\":106147,\"èĪ¬çļĦ\":106148,\"æĿĲè´¨\":106149,\"æµ·ä¸Ĭ\":106150,\"çĤºäºĨ\":106151,\"æľºåĬ¨è½¦\":106152,\"çĽ¸å½ĵäºİ\":106153,\"å¤ļåħĥåĮĸ\":106154,\"æĽ´å¤§çļĦ\":106155,\"èĽ®\":106156,\"åģĩæľŁ\":106157,\"å¼ıçļĦ\":106158,\"äº¤éĢļè¿Ĳè¾ĵ\":106159,\"çľģå§Ķ\":106160,\"ä¸įç®Ĺ\":106161,\"æĶ¾ä¸ĭ\":106162,\"éĹ¯\":106163,\"äººåľ¨\":106164,\"æ¸¯åı£\":106165,\"æĹ¨åľ¨\":106166,\"åĳ½ä»¤\":106167,\"æŁĲä¸ª\":106168,\"å¹³ç¨³\":106169,\"åıªå¥½\":106170,\"äººäºº\":106171,\"äºŀ\":106172,\"äºĮç»´\":106173,\"äºĮç»´çłģ\":106174,\"æŀģä¸º\":106175,\"åĪ«å¢ħ\":106176,\"åħ¶ä½Ļ\":106177,\"å¤§äºĭ\":106178,\"ä¸»ç®¡éĥ¨éĹ¨\":106179,\"æĹłéĶ¡\":106180,\"éĹµ\":106181,\"éģŃåĪ°\":106182,\"è¯´è¿ĩ\":106183,\"ä¸ºä½ł\":106184,\"è§£çŃĶ\":106185,\"éªĮæĶ¶\":106186,\"çļĦç»ıéªĮ\":106187,\"åĮ¹éħį\":106188,\"çģ«ç®Ń\":106189,\"è±ªåįİ\":106190,\"æŁĲæŁĲ\":106191,\"çļĦæĹ¶ä»£\":106192,\"ä¹¦éĿ¢\":106193,\"æģĴå¤§\":106194,\"å»¶éķ¿\":106195,\"ä¸ĢåĲĮ\":106196,\"æľªèĥ½\":106197,\"äº¤æį¢\":106198,\"çĶ¢åĵģ\":106199,\"çŃīåĪ°\":106200,\"åĪĨç¦»\":106201,\"æīĵçĶµè¯Ŀ\":106202,\"å¹²çĩ¥\":106203,\"è¾ĥå¤ļ\":106204,\"å¤ļå¹´çļĦ\":106205,\"èĥĮæĻ¯ä¸ĭ\":106206,\"ä¸ºä¾ĭ\":106207,\"æĳĺè¦ģ\":106208,\"å´Ľèµ·\":106209,\"æŃ¤åĪ»\":106210,\"æľīæľºä¼ļ\":106211,\"æĿ¡æ¬¾\":106212,\"é¢Ĩå¯¼å°ıç»Ħ\":106213,\"çļĦèº«ä½ĵ\":106214,\"åįķä¸Ģ\":106215,\"å¤®è¡Į\":106216,\"ä¸įæĸŃæıĲé«ĺ\":106217,\"ä»·åĢ¼è§Ĥ\":106218,\"èĬ½\":106219,\"èĲį\":106220,\"æ³ķå¾ĭæ³ķè§Ħ\":106221,\"ä¸įéĶĪ\":106222,\"ä¸įéĶĪéĴ¢\":106223,\"åĩºäºİ\":106224,\"èĻļæĭŁ\":106225,\"æį®æĤī\":106226,\"çĥ¦æģ¼\":106227,\"åħ¨æĸ°çļĦ\":106228,\"æī«æıı\":106229,\"çĻ»éĻĨ\":106230,\"èīºæľ¯å®¶\":106231,\"çļĦé£Łçī©\":106232,\"çļĦåŃĺåľ¨\":106233,\"å®¢åİħ\":106234,\"æĪĳä»¬å°±\":106235,\"æŁ¥çľĭæĽ´å¤ļ\":106236,\"è¯Ħå®¡\":106237,\"å¸Ĥåł´\":106238,\"è¬Ľ\":106239,\"å·¨å¤´\":106240,\"ä¸ŃåĽ½ç»ıæµİ\":106241,\"äºĨèĩªå·±çļĦ\":106242,\"åĨ³è®®\":106243,\"çĽĳçĿ£ç®¡çĲĨ\":106244,\"æĬķç¥¨\":106245,\"åĨįåº¦\":106246,\"è¡ĮçĤº\":106247,\"æ³¨åħ¥\":106248,\"ä½ľä¸ºä¸Ģä¸ª\":106249,\"æ¯ıä¸ªäººéĥ½\":106250,\"åįķåħĥ\":106251,\"è¦ģçŁ¥éģĵ\":106252,\"è¢«ç§°ä¸º\":106253,\"ä¹ĭéĻħ\":106254,\"è§£éĻ¤\":106255,\"ä¸¸\":106256,\"æº«\":106257,\"ä¸īæĺŁ\":106258,\"é²ľæĺİ\":106259,\"ä¹Łéĥ½\":106260,\"æĹ¶æľº\":106261,\"åĩºæīĭ\":106262,\"æĥħå½¢\":106263,\"åķĨè´¸\":106264,\"éĢīä¸¾\":106265,\"å¯¹èĩªå·±\":106266,\"çĶŁåĬ¨\":106267,\"åħĭæľį\":106268,\"ä¸ªä½ĵ\":106269,\"èĭĳ\":106270,\"ç¨±\":106271,\"å¤§åİ¦\":106272,\"æĺ¯å¯¹\":106273,\"åĪ©æģ¯\":106274,\"è¿ĲåĬ¨åĳĺ\":106275,\"åĮĸè§£\":106276,\"åīįæ²¿\":106277,\"æĦŁæģ©\":106278,\"æĢ»ä¹ĭ\":106279,\"é«ĺæĸ°æĬĢæľ¯\":106280,\"åĿĩä¸º\":106281,\"åħ¨åĮº\":106282,\"æ°Ķæ°Ľ\":106283,\"åı¯ä»¥è¯´æĺ¯\":106284,\"ä½ıå®¿\":106285,\"åħļåĳĺå¹²éĥ¨\":106286,\"åĹ¯\":106287,\"è·µè¡Į\":106288,\"çļĦä¸ĵä¸ļ\":106289,\"èĢĥéªĮ\":106290,\"èķ¾\":106291,\"åħ¬åŃĲ\":106292,\"çļĦçĬ¶æĢģ\":106293,\"æ½®æµģ\":106294,\"ä¿¡æīĺ\":106295,\"è´¼\":106296,\"åĲĦæĸ¹\":106297,\"æķĳåĬ©\":106298,\"éĿŀå¸¸çļĦ\":106299,\"æ¡¥æ¢ģ\":106300,\"åħ¬æĸ¤\":106301,\"ä¼¼çļĦ\":106302,\"çľĭå¥½\":106303,\"å±Ģéĥ¨\":106304,\"å®īéĿĻ\":106305,\"éħįä»¶\":106306,\"å¸¸è§Ħ\":106307,\"å¼Ģè½¦\":106308,\"ç¬¬äºĮæ¬¡\":106309,\"ä¸Ĭçº§\":106310,\"åıĤèµĽ\":106311,\"å®¶å±ŀ\":106312,\"å¼ºåĬ¿\":106313,\"åľ¨ä»ĸ\":106314,\"åĲĳåīį\":106315,\"ä¹ĭåľ°\":106316,\"éĥ¡\":106317,\"è¡Įç¨ĭ\":106318,\"èŃ¦åĳĬ\":106319,\"è§Ħå®ļçļĦ\":106320,\"åķĨåŁİ\":106321,\"äºĶå¤§\":106322,\"æķĻå®¤\":106323,\"åįģè¶³\":106324,\"æīĢä»¥åľ¨\":106325,\"å°Ĩç»§ç»Ń\":106326,\"çŃīæĸ¹å¼ı\":106327,\"å®¶ä¼ģä¸ļ\":106328,\"äº¤ä»ĺ\":106329,\"çĤ¹è¯Ħ\":106330,\"ç»ĵç®Ĺ\":106331,\"ä¹Łåı¯\":106332,\"å¤ĸæ±ĩ\":106333,\"è¿Ļç§įæĥħåĨµ\":106334,\"æİĪäºĪ\":106335,\"å¸ĥç½®\":106336,\"æĪĲç«ĭäºİ\":106337,\"é¢ĦèŃ¦\":106338,\"ç®¡çĲĨäººåĳĺ\":106339,\"å©ļç¤¼\":106340,\"ç»ĵæĿŁåĲİ\":106341,\"åħ¥éĢī\":106342,\"æĹłæ¯Ķ\":106343,\"åĴĮåıĳå±ķ\":106344,\"çĻ½éħĴ\":106345,\"çİ©åħ·\":106346,\"ä¸ĩç¾İåħĥ\":106347,\"çļĦæĪĲç»©\":106348,\"æĭįçħ§\":106349,\"èĢĥèĻĳåĪ°\":106350,\"ä¼ģä¸ļåıĳå±ķ\":106351,\"äºĨä¸ª\":106352,\"çĶŁæ°Ķ\":106353,\"çļĦå¥³äºº\":106354,\"äºĶåįģ\":106355,\"çĪ·çĪ·\":106356,\"çº½çº¦\":106357,\"éĥ½è¢«\":106358,\"ä¸Ĭè¯¾\":106359,\"çĽ¡\":106360,\"ä¼łç»ŁæĸĩåĮĸ\":106361,\"æ½ľåľ¨\":106362,\"åıĳå°Ħ\":106363,\"ä¸Ģèº«\":106364,\"éĺ²å®Ī\":106365,\"åĪ®\":106366,\"é¢ĺçĽ®\":106367,\"åľ¨åĨħçļĦ\":106368,\"ç¾İå¥½çļĦ\":106369,\"è¿ĻéĩĮçļĦ\":106370,\"ä¸Ģä¸Ŀ\":106371,\"äººåĿĩ\":106372,\"åĢ¡å¯¼\":106373,\"èº«åĲİ\":106374,\"æī©å±ķ\":106375,\"å¤§éĹ¨\":106376,\"å°±è¢«\":106377,\"è¯¥é¡¹çĽ®\":106378,\"æŀ¶æŀĦ\":106379,\"ä¸Ģåı£\":106380,\"ä¿¡æģ¯æĬĢæľ¯\":106381,\"å¼Ģä¸ļ\":106382,\"æĶ¶åıĸ\":106383,\"ç½ĳé¡µ\":106384,\"æĶ¯æı´\":106385,\"å°ģéĹŃ\":106386,\"å¡ĳéĢł\":106387,\"å¤§èĥĨ\":106388,\"å¿«éĢŁåıĳå±ķ\":106389,\"çľĭä¼¼\":106390,\"æ¸Ŀ\":106391,\"è¿Ļæł·ä¸Ģä¸ª\":106392,\"æ¨¡åĿĹ\":106393,\"æ³¨æĦıåĪ°\":106394,\"çł´è§£\":106395,\"èĩªä»İ\":106396,\"åĳµåĳµ\":106397,\"ä¹ĭå¾Į\":106398,\"ä¹ĭæĹħ\":106399,\"è·ŁæĪĳ\":106400,\"æ³ķäºº\":106401,\"æİĴè¡Įæ¦ľ\":106402,\"åĿļå®Ī\":106403,\"å¥½å¤Ħ\":106404,\"çŁ³å¤´\":106405,\"å¹¶å°Ĩ\":106406,\"èĪ±\":106407,\"æŃĩ\":106408,\"ä¸¤å²¸\":106409,\"å¤ļä¹ħ\":106410,\"è±¡å¾ģ\":106411,\"ä¸ªæĢ§åĮĸ\":106412,\"çļĦè§Ĵåº¦\":106413,\"å¸Ĩ\":106414,\"ç¦ıå·ŀ\":106415,\"æŁ¥å¤Ħ\":106416,\"ä¸¤åĽ½\":106417,\"åĲ¸å¼ķäºĨ\":106418,\"é¦ĸå¸Ń\":106419,\"å¤§åĵ¥\":106420,\"é¤Ĭ\":106421,\"æ¶¨å¹ħ\":106422,\"éĢīçĶ¨\":106423,\"è¨±å¤ļ\":106424,\"èĲ½æĪ·\":106425,\"åĵĪå°Ķ\":106426,\"åĵĪå°Ķæ»¨\":106427,\"åģļä»Ģä¹Ī\":106428,\"ä»¥åħį\":106429,\"é¾į\":106430,\"æĹłéľĢ\":106431,\"åĪ°åºķæĺ¯\":106432,\"æĢ¡\":106433,\"åĳĬè¯īä½ł\":106434,\"éĺ²æ°´\":106435,\"è¿ĻæĹ¶åĢĻ\":106436,\"æ¬¢ä¹Ĳ\":106437,\"è½¬åĲĳ\":106438,\"è¿Ļä¸ªåľ°åĽ¾\":106439,\"åħ¥é©»\":106440,\"èįīåİŁ\":106441,\"æĹ¶ä»£çļĦ\":106442,\"åıĺåĬ¨\":106443,\"åĬłå¼ºå¯¹\":106444,\"åģ¶å°Ķ\":106445,\"å®ĪæĬ¤\":106446,\"æ°Ķæ¸©\":106447,\"äººéĹ´\":106448,\"æľĿé²ľ\":106449,\"ç»ıè´¹\":106450,\"åĽŃæŀĹ\":106451,\"å·¥åľ°\":106452,\"è§Ħæł¼\":106453,\"åĩłåįģ\":106454,\"è¯ķåĽ¾\":106455,\"å¦ĥ\":106456,\"éĤ£æĹ¶åĢĻ\":106457,\"å¼ĺæī¬\":106458,\"ä¸ļçķĮ\":106459,\"çļĦéĢŁåº¦\":106460,\"ä¼ļä¸įä¼ļ\":106461,\"èĲ¥æĶ¶\":106462,\"å°ıå¾®ä¼ģä¸ļ\":106463,\"çľĭè¿ĩ\":106464,\"æĬĬä»ĸ\":106465,\"éģµå¾ª\":106466,\"è¿Ļè¾¹\":106467,\"æ²¡æľīäºº\":106468,\"å£¶\":106469,\"æ¹ĸåįĹçľģ\":106470,\"æŀģåħ¶\":106471,\"çļĦäººçĶŁ\":106472,\"ä»ĸè¿ĺ\":106473,\"è½¬åĮĸä¸º\":106474,\"èµ°è¿ĩ\":106475,\"æĬ±çĿĢ\":106476,\"çīĽå¥¶\":106477,\"ä¸ĩäº©\":106478,\"å¿ĥæĢģ\":106479,\"æĹ¥å¸¸çĶŁæ´»\":106480,\"ä½ĵæ£Ģ\":106481,\"æĻĥ\":106482,\"çŃīé¢ĨåŁŁ\":106483,\"æĩīè©²\":106484,\"åı¯ä»¥çľĭåĪ°\":106485,\"æī¾ä¸įåĪ°\":106486,\"èĢģå¹´\":106487,\"æĬĬæĪĳ\":106488,\"ç§¯åĪĨ\":106489,\"æ¢³çĲĨ\":106490,\"ç»³\":106491,\"çļĦæĶ¿æ²»\":106492,\"å¸ĿåĽ½\":106493,\"éĻªä¼´\":106494,\"æ´Ľéĺ³\":106495,\"åħ¬æŃ£\":106496,\"å¼Ģåı£\":106497,\"çī¹èī²çļĦ\":106498,\"åĽ°å¢ĥ\":106499,\"ä¸Ĭæľī\":106500,\"ç«ĭä½ĵ\":106501,\"æīĵå·¥\":106502,\"åķ¤éħĴ\":106503,\"åľ¨éĤ£éĩĮ\":106504,\"éĤ£è¾¹\":106505,\"ä¸ªåĪ«\":106506,\"ä¸Ģå®ļæĺ¯\":106507,\"çļĦéĩįè¦ģæĢ§\":106508,\"ä¸»å¼ł\":106509,\"åĴĮæľįåĬ¡\":106510,\"ä¸Ĭç½ĳ\":106511,\"è¡¥åĬ©\":106512,\"åıªéľĢ\":106513,\"å¼¦\":106514,\"éģ®\":106515,\"åĬĽäºī\":106516,\"åº¦è¿ĩ\":106517,\"èĳ¬\":106518,\"é¡¿æĹ¶\":106519,\"éĦī\":106520,\"çººç»ĩ\":106521,\"åľ°åĿĹ\":106522,\"ä¿¡çĶ¨åį¡\":106523,\"ç½ļæ¬¾\":106524,\"åĳĬè¯īæĪĳ\":106525,\"éĽĻ\":106526,\"ä¹¦çĶ»\":106527,\"è¨Ńè¨Ī\":106528,\"æĢ»ä¼ļ\":106529,\"åĪ¤åĨ³\":106530,\"ä¿¡èªī\":106531,\"ä¸ªèĤ¡\":106532,\"å¹³å¸¸\":106533,\"æĢİéº¼\":106534,\"ä½ĵçİ°åľ¨\":106535,\"é»Ħæ²³\":106536,\"åĽĽå·Ŀçľģ\":106537,\"çľŁçĽ¸\":106538,\"åĲĦé¡¹å·¥ä½ľ\":106539,\"åĬ¨åĳĺ\":106540,\"å³°ä¼ļ\":106541,\"ä¸ĢæľŁ\":106542,\"æľīä¸Ģå®ļçļĦ\":106543,\"é«ĺåº¦éĩįè§Ĩ\":106544,\"ç¹ģèį£\":106545,\"åıĳçİ°äºĨ\":106546,\"ç½ĳçº¢\":106547,\"æīĭæ³ķ\":106548,\"å®¶åĽŃ\":106549,\"ä»ªåĻ¨\":106550,\"è¾ĥä½İ\":106551,\"çļĦå®īåħ¨\":106552,\"æ¡Ĳ\":106553,\"ä»ĺæ¬¾\":106554,\"æĬĳåĪ¶\":106555,\"åįĵè¶Ĭ\":106556,\"æŃ£éĿ¢\":106557,\"åĵĳ\":106558,\"å¼ºåĪ¶\":106559,\"ä»Ĭå¤©çļĦ\":106560,\"æĪĺèĥľ\":106561,\"æ¥¼å¸Ĥ\":106562,\"æĭ¿ä¸ĭ\":106563,\"é¢ľåĢ¼\":106564,\"ä¸ľéĥ¨\":106565,\"çłĶåĪ¶\":106566,\"çļĦæĪĺçķ¥\":106567,\"åľ¨ä¸Ģä¸ª\":106568,\"ä¸īäºº\":106569,\"å®ĮäºĨ\":106570,\"æĸ°æĬĢæľ¯\":106571,\"ç»ıæµİæķĪçĽĬ\":106572,\"å¯Įæľī\":106573,\"æ¾³æ´²\":106574,\"åĬ©çĲĨ\":106575,\"é¢Ĩåıĸ\":106576,\"è°Ń\":106577,\"çĩĥçĥ§\":106578,\"ç´łåħ»\":106579,\"éĤĦæľī\":106580,\"è¿ĽèĢĮ\":106581,\"ä»Ģä¹Īæĺ¯\":106582,\"çłĶç©¶ä¸Ńå¿ĥ\":106583,\"éĢĤçĶ¨äºİ\":106584,\"æİ¥æĶ¶\":106585,\"å¤±æľĽ\":106586,\"äºĮçº§\":106587,\"éĹ´çļĦ\":106588,\"åİŁæłĩé¢ĺ\":106589,\"èªįçĤº\":106590,\"æį¡\":106591,\"å¯¹çĿĢ\":106592,\"å¯¹éĿ¢\":106593,\"ä¸ŃåİŁ\":106594,\"éĵĥ\":106595,\"çĶŁäº§çļĦ\":106596,\"åıĳå¸ĥä¼ļ\":106597,\"å£«åħµ\":106598,\"è¿Ļåı¥è¯Ŀ\":106599,\"ç¼´çº³\":106600,\"ä¸Ģä¸ªä¸ª\":106601,\"åŃ¸çĶŁ\":106602,\"çĸĳéĹ®\":106603,\"äº¤èŃ¦\":106604,\"ç¤ºèĮĥåĮº\":106605,\"å¤©ä½¿\":106606,\"åľ¨ä¸Ĭæµ·\":106607,\"åĲĮæĻĤ\":106608,\"è½»æĺĵ\":106609,\"åĶ¯ä¸ĢçļĦ\":106610,\"çĥŃéĹ¹\":106611,\"ä¹Ĳè§Ĥ\":106612,\"çļĦèº«ä»½\":106613,\"åĸĦäºİ\":106614,\"å¤§åİħ\":106615,\"èĤ¯å®ļæĺ¯\":106616,\"éĺ²çģ«\":106617,\"å¤ĸåĩº\":106618,\"æį®è¯´\":106619,\"é¡¹çĽ®çļĦ\":106620,\"ä¸Ģåı°\":106621,\"èĻļåģĩ\":106622,\"ä¸Ģç¬Ķ\":106623,\"ç«ĭæ³ķ\":106624,\"ä¸¥èĤĥ\":106625,\"æī¿åĬŀ\":106626,\"åįģåĩł\":106627,\"çļĦç©ºéĹ´\":106628,\"æľ¬ç½ĳç«Ļ\":106629,\"åģļå¾Ĺ\":106630,\"ä¿Ŀæ¸©\":106631,\"æľĪåĪĿ\":106632,\"åľ¨ç½ĳä¸Ĭ\":106633,\"åĲĦæĸ¹éĿ¢\":106634,\"ä¸īå¤©\":106635,\"äº¤æĺĵæīĢ\":106636,\"è§£æŀĲ\":106637,\"åħļä¸Ńå¤®\":106638,\"è¿Ľåĩºåı£\":106639,\"åĴĮç¤¾ä¼ļ\":106640,\"æ¬¡æķ°\":106641,\"ä¹ĭå®¶\":106642,\"ç»´åº¦\":106643,\"æ´¾åĩºæīĢ\":106644,\"äº§çĶŁäºĨ\":106645,\"å¸¦æľī\":106646,\"å¾Īå¼º\":106647,\"æľīäºĽäºº\":106648,\"å¹´åĲİ\":106649,\"äºĨè®¸å¤ļ\":106650,\"å¯Ĩåº¦\":106651,\"åŃ¦æľŁ\":106652,\"çıłæµ·\":106653,\"æľĢå¤ļçļĦ\":106654,\"è¾¹ç¼ĺ\":106655,\"å®¹éĩı\":106656,\"ç¬¬äºĮä¸ª\":106657,\"ä¸ĢçĽ´æĺ¯\":106658,\"ä¸įç¦ģ\":106659,\"æŃ²\":106660,\"ä»ĭç»įäºĨ\":106661,\"ä¼ĺéĽħ\":106662,\"æ¯Ķè¼ĥ\":106663,\"èģĮä½į\":106664,\"æ¸©æŁĶ\":106665,\"æľīéĴ±\":106666,\"æľĢé«ĺçļĦ\":106667,\"åįļè§Īä¼ļ\":106668,\"ä¸įæĪĲ\":106669,\"éĶĻäºĨ\":106670,\"è¯ģçĽĳ\":106671,\"è¯ģçĽĳä¼ļ\":106672,\"æĪĲäºº\":106673,\"åĿĩåĮĢ\":106674,\"æľīåĪ©\":106675,\"è¶ĬåįĹ\":106676,\"æīĵäºĨ\":106677,\"å¥½åĲĥ\":106678,\"ç³»çµ±\":106679,\"è·Łéļı\":106680,\"çļĦåľ°ä½į\":106681,\"æŃ£å¦Ĥ\":106682,\"ç¨įå¾®\":106683,\"åį°åıĳ\":106684,\"åĪĽç«ĭ\":106685,\"é£İåħī\":106686,\"å°ĨæĪĲä¸º\":106687,\"ä¸įé«ĺ\":106688,\"é¢ĳç¹ģ\":106689,\"è®¾æľī\":106690,\"ä¼ŀ\":106691,\"æĭĨéĻ¤\":106692,\"å½±åĥı\":106693,\"æ¸ĹéĢı\":106694,\"å¹´å¼Ģå§ĭ\":106695,\"ç½ĳæĺĵ\":106696,\"è¦ģåģļ\":106697,\"çĶµåĬ¨è½¦\":106698,\"çľŁå¿ĥ\":106699,\"æµ·åĨĽ\":106700,\"ä¼łæĿ¥\":106701,\"å·®åĪ«\":106702,\"è°¨æħİ\":106703,\"çĥŁåı°\":106704,\"åįĥå¹´\":106705,\"è¯ģå®ŀ\":106706,\"çĲª\":106707,\"çļĦåħ·ä½ĵ\":106708,\"åĪ°å¤Ħ\":106709,\"ä¸įå®ľ\":106710,\"èľĢ\":106711,\"èĥ½åĬĽåĴĮ\":106712,\"çīºçī²\":106713,\"çļĦéĴ±\":106714,\"å¤§éĺŁ\":106715,\"é¦ĸè¦ģ\":106716,\"ä¸įæĦ¿\":106717,\"çİ«çĳ°\":106718,\"äººæ°ĳç½ĳ\":106719,\"è¿ĺæĺ¯è¦ģ\":106720,\"åĽĽå¹´\":106721,\"æįŁä¼¤\":106722,\"çļĦåģļæ³ķ\":106723,\"éĿĪ\":106724,\"è¡Ķæİ¥\":106725,\"åĲĪæĪĲ\":106726,\"æ²¡äºº\":106727,\"éĹ¨æ§Ľ\":106728,\"ä¿¡è´·\":106729,\"çļĦçĽ¸åħ³\":106730,\"ä¸ľé£İ\":106731,\"ç¤¾ä¿Ŀ\":106732,\"ä¸ĭæ¸¸\":106733,\"åĿĹéĴ±\":106734,\"è¿ĩåĲİ\":106735,\"çļĦåºĶçĶ¨\":106736,\"é¥¶\":106737,\"é¢ģåıĳ\":106738,\"ä¸Ģå¤Ħ\":106739,\"åįİå¤ı\":106740,\"ä¸ºä¼ģä¸ļ\":106741,\"åıªä¼ļ\":106742,\"ä¾µå®³\":106743,\"çļĦåĬŁèĥ½\":106744,\"åŃ¸ç¿Ĵ\":106745,\"ä¸Ńåįİæ°ĳæĹı\":106746,\"åıĳå¸ĥäºĨ\":106747,\"è¿İæİ¥\":106748,\"æĪĳèĩªå·±\":106749,\"è¿ĺéľĢè¦ģ\":106750,\"å¤ªéĺ³èĥ½\":106751,\"åİ»ä¸ĸ\":106752,\"æĺ¯ä½ł\":106753,\"åĲĪåĬĽ\":106754,\"ç»ĺçĶ»\":106755,\"åı°åĮĹ\":106756,\"çĿ£ä¿ĥ\":106757,\"åĮĹéĥ¨\":106758,\"æľīå¤ļå°ĳ\":106759,\"å¾Īéĩįè¦ģ\":106760,\"åĪĴåĪĨ\":106761,\"åı·çº¿\":106762,\"æĶ¾å¤§\":106763,\"ä¼ļè¢«\":106764,\"èİ·å¥ĸ\":106765,\"ä¹ĭåĨħ\":106766,\"å¤±åİ»äºĨ\":106767,\"çİ©å®¶ä»¬\":106768,\"éĩĩéĽĨ\":106769,\"å£¹\":106770,\"å®¶ä¼Ļ\":106771,\"çĻ½å¤©\":106772,\"åĽłä¸ºä»ĸ\":106773,\"ç¤¾ä¼ļæ²»çĲĨ\":106774,\"å¼ĢåĪĽ\":106775,\"çĶµç¼Ĩ\":106776,\"æĸ°ä¸Ģä»£\":106777,\"å¹¶è´Ń\":106778,\"å°±å·²ç»ı\":106779,\"çļĦç¤¾ä¼ļ\":106780,\"éĻ¤éĿŀ\":106781,\"åı¯ä»¥çĶ¨\":106782,\"å©ī\":106783,\"æ¯Ķè¾ĥå¥½\":106784,\"å®ŀä¸ļ\":106785,\"åĪĽåĬŀ\":106786,\"æıĲèµ·\":106787,\"é»ĥ\":106788,\"ä½ıåľ¨\":106789,\"å¸ĤæĶ¿\":106790,\"éĿ¢ä¸´çļĦ\":106791,\"èĥ½åľ¨\":106792,\"çŁŃçŁŃ\":106793,\"çľŁäºº\":106794,\"æĺİæĺİ\":106795,\"èµĦåĬ©\":106796,\"çļĦä¸įåĲĮ\":106797,\"å°ıæľĭåıĭ\":106798,\"é¢ĺæĿĲ\":106799,\"ç¾İåĳ³\":106800,\"æĺŁåº§\":106801,\"ä¸įä¸Ģæł·çļĦ\":106802,\"çľĭä¸Ĭåİ»\":106803,\"ä¸Ģæł¹\":106804,\"å¹¿å·ŀå¸Ĥ\":106805,\"åıĳçĶŁçļĦ\":106806,\"é«ĺç§ĳæĬĢ\":106807,\"ä¸Ģè¾ĪåŃĲ\":106808,\"äº¤åıī\":106809,\"ä½ĵç³»å»ºè®¾\":106810,\"åĽłä¸ºæĪĳ\":106811,\"çıįæĥľ\":106812,\"ä¸ĬåŃ¦\":106813,\"æĪĺæľ¯\":106814,\"æŃ¤ç±»\":106815,\"äº¤å¾Ģ\":106816,\"æĮīæĳ©\":106817,\"äººä»¬çļĦ\":106818,\"åħ¶å¯¦\":106819,\"åİŁæĿĲæĸĻ\":106820,\"æ¸´æľĽ\":106821,\"çĽ¸å¤Ħ\":106822,\"å¾®å¾®\":106823,\"æ®·\":106824,\"ä¹ĺåĿĲ\":106825,\"å¼Ģå±ķäºĨ\":106826,\"é«ĺåĵģè´¨\":106827,\"æĹłäººæľº\":106828,\"ä¸įæĺ¯å¾Ī\":106829,\"çļĦæĬķèµĦ\":106830,\"èĬĤçľģ\":106831,\"èĩī\":106832,\"ç²¾éĢī\":106833,\"çļĦæłĩåĩĨ\":106834,\"åįĹéĥ¨\":106835,\"è®¤è¯ĨåĪ°\":106836,\"å¹³éĿĻ\":106837,\"èĹ¥\":106838,\"æī«é»ĳ\":106839,\"æī«é»ĳéĻ¤\":106840,\"æī«é»ĳéĻ¤æģ¶\":106841,\"éĢĻç¨®\":106842,\"å»ºçŃĳéĿ¢ç§¯\":106843,\"ç¡®ç«ĭ\":106844,\"ç®¡çĲĨåĬŀæ³ķ\":106845,\"æĦıå¿Ĺ\":106846,\"ä¸¨\":106847,\"è®©åŃ©åŃĲ\":106848,\"æķĳçģ¾\":106849,\"å½ĵä»Ĭ\":106850,\"çģ«çģ¾\":106851,\"åĲĦéĥ¨éĹ¨\":106852,\"ä¾µçĬ¯\":106853,\"æ¯ıåĳ¨\":106854,\"æı½\":106855,\"ä¸Ģæ¬¡æĢ§\":106856,\"åħ¶ä»ĸäºº\":106857,\"éĶĻè¿ĩ\":106858,\"ä¸İåħ¶\":106859,\"åĭĩæ°Ķ\":106860,\"çĩĥæ°Ķ\":106861,\"é¦ĸå±Ĭ\":106862,\"æľįé¥°\":106863,\"ç²¥\":106864,\"å®Įæ¯ķ\":106865,\"å°±æĬĬ\":106866,\"åĬŀäºĭå¤Ħ\":106867,\"ä¸Ģä¼ļåĦ¿\":106868,\"ç¦»ä¸įå¼Ģ\":106869,\"å¦ĤæŀľæĤ¨\":106870,\"ä»ĵåºĵ\":106871,\"å¯¼å¸Ī\":106872,\"åĲĪéĢĤçļĦ\":106873,\"æ¯«ç±³\":106874,\"å®īåħ¨æĢ§\":106875,\"ä¾Ŀçħ§\":106876,\"äº§ä¸ļåĮĸ\":106877,\"ä½łçľĭ\":106878,\"çľŁçļĦå¾Ī\":106879,\"åŃ¤çĭ¬\":106880,\"éĺ²å¾¡\":106881,\"å¾Īç®Ģåįķ\":106882,\"é£İæ°´\":106883,\"ä½Ĩä¹Ł\":106884,\"æİ¨åĩºäºĨ\":106885,\"æ°ĳèĲ¥ä¼ģä¸ļ\":106886,\"çłģå¤´\":106887,\"å¤įæĿĤçļĦ\":106888,\"ç»ĦæĪĲéĥ¨åĪĨ\":106889,\"åħħæ»¡äºĨ\":106890,\"è¿ĳåĩłå¹´\":106891,\"çľģæĶ¿åºľ\":106892,\"æľīå¿ħè¦ģ\":106893,\"éĻ³\":106894,\"ä¹ĭç±»\":106895,\"ä¹ĭç±»çļĦ\":106896,\"æĢ§ä»·\":106897,\"æĢ§ä»·æ¯Ķ\":106898,\"åķĨåºĹ\":106899,\"å¸ĤåĢ¼\":106900,\"äººæīįåŁ¹åħ»\":106901,\"æ·±åıĹ\":106902,\"ç®¡çĲĨå±Ģ\":106903,\"æģĲæĥ§\":106904,\"ä»ħæľī\":106905,\"æĬµè¾¾\":106906,\"æµ·åħ³\":106907,\"èµĭäºĪ\":106908,\"äºĭåĦ¿\":106909,\"ä»·éĴ±\":106910,\"æīĭä¸Ĭ\":106911,\"èĩªå¾ĭ\":106912,\"åħ³çĪ±\":106913,\"äº«æľī\":106914,\"éģĹæĨ¾\":106915,\"å¾Īå¿«å°±\":106916,\"æĽ´å¿«\":106917,\"æłĩè¯Ĩ\":106918,\"åºĨç¥Ŀ\":106919,\"ä¹Łå¥½\":106920,\"ä¸įæĺĵ\":106921,\"æĪĳå¾Ī\":106922,\"æĶ¹éĿ©åıĳå±ķ\":106923,\"å¤ĸåľ°\":106924,\"æĬµæĬ¼\":106925,\"è¯Ĺäºº\":106926,\"åİķæīĢ\":106927,\"æĸ°åªĴä½ĵ\":106928,\"èĸĽ\":106929,\"è°Īè¯Ŀ\":106930,\"ä¸Ģå®ļç¨ĭåº¦\":106931,\"èµ°åľ¨\":106932,\"æľĢå¼º\":106933,\"åĬŁçİĩ\":106934,\"åħ±è¯Ĩ\":106935,\"å¤§æ¡¥\":106936,\"ä¸ĭæĸ¹\":106937,\"å¤ĸèµĦ\":106938,\"ç¢±\":106939,\"å·¡è§Ĩ\":106940,\"æ¹ĸåĮĹçľģ\":106941,\"ä¸ªçĻ¾åĪĨ\":106942,\"ä¸ªçĻ¾åĪĨçĤ¹\":106943,\"çļĦè´£ä»»\":106944,\"çļĦåĵģçīĮ\":106945,\"åĬ©æİ¨\":106946,\"åĪĽéĢłäºĨ\":106947,\"ä»»èģĮ\":106948,\"å¿«æį·\":106949,\"æĿĳåºĦ\":106950,\"åİ»çľĭ\":106951,\"æīįèĥ½å¤Ł\":106952,\"å±¤\":106953,\"æĪĳå®¶\":106954,\"æĺ¯ä¸Ģæ¬¾\":106955,\"ç¾ħ\":106956,\"åĨ°éĽª\":106957,\"æŀģå¤§\":106958,\"çģ¯åħī\":106959,\"éĨĭ\":106960,\"ä¸İåħ¶ä»ĸ\":106961,\"æıĲåĩºçļĦ\":106962,\"éĿłè¿ĳ\":106963,\"è°ĥåĬ¨\":106964,\"å°½åı¯èĥ½\":106965,\"åıĳåĬĽ\":106966,\"ç»Ļå¥¹\":106967,\"éĢĤéĩı\":106968,\"è·¨åĽ½\":106969,\"åħĪè¡Į\":106970,\"æĸ°æĿĲæĸĻ\":106971,\"ä½ľäºĨ\":106972,\"æ»¡äºĨ\":106973,\"ä¸įæ»¡\":106974,\"çļĦçľ¼çĿĽ\":106975,\"çľĭå¾Ĺ\":106976,\"è¿Ļä¸Ģæ¬¡\":106977,\"é½Ĳåħ¨\":106978,\"çļĦä¸Ģéĥ¨åĪĨ\":106979,\"ä¸Ļ\":106980,\"æ¸ħæĸ°\":106981,\"èªªæĺİ\":106982,\"èº«è¾¹çļĦ\":106983,\"æīĢæľīäºº\":106984,\"å½°æĺ¾\":106985,\"è±¹\":106986,\"åį¿\":106987,\"è¿Ĳè½¬\":106988,\"æĮĩå¼ķ\":106989,\"å¸Ĥåħ¬å®īå±Ģ\":106990,\"åıĤå±ķ\":106991,\"ä¹ĭæĹ¶\":106992,\"éĩĳèŀįæľįåĬ¡\":106993,\"èµĦæľ¬å¸Ĥåľº\":106994,\"èĥ½è®©\":106995,\"å¿ĺäºĨ\":106996,\"å¤©åłĤ\":106997,\"æ¯Ķå¦Ĥè¯´\":106998,\"éĬĢè¡Į\":106999,\"èĽĭç³ķ\":107000,\"çĶ©\":107001,\"æł¸å®ŀ\":107002,\"æĻ®äº¬\":107003,\"ä¼ĺç¾İ\":107004,\"åı£èħĶ\":107005,\"æ¼«çĶ»\":107006,\"çľ¼éĩĮ\":107007,\"äºĨä¸ĭæĿ¥\":107008,\"æĪĳä»¬ä¹Ł\":107009,\"ä¾į\":107010,\"ä¸ºä¸Ńå¿ĥ\":107011,\"å¥ĩè¿¹\":107012,\"éĿĴçĿĲ\":107013,\"æĪªèĩ³çĽ®åīį\":107014,\"åĩºä¾Ĩ\":107015,\"æĢ»åħ¬åı¸\":107016,\"å¼¥è¡¥\":107017,\"ç®Ĺæ³ķ\":107018,\"å·¥ä½ľå®¤\":107019,\"æīĢä»¥æĪĳ\":107020,\"æ°´åĪĨ\":107021,\"æīĢå±ŀ\":107022,\"ä¸įè¯´\":107023,\"ä½Ĩæĺ¯åľ¨\":107024,\"è¦ģåİ»\":107025,\"åĪĽä¸ļèĢħ\":107026,\"ä¸įæ¸ħæ¥ļ\":107027,\"åĽĽåĳ¨\":107028,\"æĺ¯ä»İ\":107029,\"çļĦæł¹æľ¬\":107030,\"çģ¶\":107031,\"æ¯Ľæ³½\":107032,\"æ¯Ľæ³½ä¸ľ\":107033,\"æµ·åı£\":107034,\"åĽĽåįģ\":107035,\"ä¹Łè¢«\":107036,\"èģ·\":107037,\"ä¸Ģæīĭ\":107038,\"ç»©æķĪ\":107039,\"çļĦçĶ·äºº\":107040,\"ä¹¦ç±į\":107041,\"ä¸ĢèĦ¸\":107042,\"å¤§äºİ\":107043,\"éĽ¶éĥ¨ä»¶\":107044,\"åħ³æĢĢ\":107045,\"å¹³ç±³\":107046,\"æļ´éľ²\":107047,\"å¾Ĺå¤ļ\":107048,\"ä¸īçº§\":107049,\"æľ¬åĳ¨\":107050,\"ä¸¤èĢħ\":107051,\"å¯¹ä¸ŃåĽ½\":107052,\"åıªè§ģ\":107053,\"æ¬§ç¾İ\":107054,\"å¦Ĥæŀľæľī\":107055,\"å·²ç»ıæĺ¯\":107056,\"çľĭå®Į\":107057,\"çģ«éĶħ\":107058,\"èµĲ\":107059,\"ä¸Ģéģį\":107060,\"æĦŁåĨĴ\":107061,\"ç»ĵå±Ģ\":107062,\"ä»ĵåĤ¨\":107063,\"å®ŀåľ°\":107064,\"åī¯æĢ»ç»ıçĲĨ\":107065,\"ä¹Łä¸įçŁ¥éģĵ\":107066,\"ç¢°åĪ°\":107067,\"åĲĪè®¡\":107068,\"å®¢æĪ·çļĦ\":107069,\"ç½Ĺé©¬\":107070,\"æĦīå¿«\":107071,\"é£Ľ\":107072,\"çĥŃçĥĪ\":107073,\"ä¼¦æķ¦\":107074,\"åĮ»ä¿Ŀ\":107075,\"éĺ¿éĩĮå·´å·´\":107076,\"åĨįè¯´\":107077,\"ä¸ºåŁºç¡Ģ\":107078,\"çĶŁäº§ç»ıèĲ¥\":107079,\"è¿ĻäºĽäºº\":107080,\"åĪĹè½¦\":107081,\"æ²³åĮĹçľģ\":107082,\"è¿Ļæ®µ\":107083,\"æ´»åĬ¨ä¸Ń\":107084,\"å©·\":107085,\"çĶŁçĲĨ\":107086,\"ä¸ŃåĽ½äººæ°ĳ\":107087,\"éĦĤ\":107088,\"åĲ¬åıĸ\":107089,\"å¤įä¹ł\":107090,\"æľīçĽĬ\":107091,\"æĶ¶æĭ¾\":107092,\"å¾Īåı¯èĥ½\":107093,\"ç½ĳç»ľæ¸¸æĪı\":107094,\"ä»¬çļĦ\":107095,\"èµĭèĥ½\":107096,\"éļ¾å¾Ĺ\":107097,\"åĪĨæīĭ\":107098,\"çľŁè¯ļ\":107099,\"åħ¬åı¸åľ¨\":107100,\"åĿĩè¡¡\":107101,\"åı£åĳ³\":107102,\"çīµå¤´\":107103,\"ä¸ĢèĪ¬çļĦ\":107104,\"è½¿è½¦\":107105,\"çŃīäºİ\":107106,\"æ²īé»ĺ\":107107,\"æĪĳéĥ½\":107108,\"å°ıç¨ĭåºı\":107109,\"ä¸Ģåī¯\":107110,\"æī¿è½½\":107111,\"åľ°è´¨\":107112,\"çķĮéĿ¢\":107113,\"çĶµæľº\":107114,\"çĦ¦èĻĳ\":107115,\"éĶĢåĶ®é¢Ŀ\":107116,\"æĸ°è½¦\":107117,\"ä¸Ĭæ¸¸\":107118,\"ä¸»æ¼Ķ\":107119,\"éļĲç§ģ\":107120,\"åıĳå±ķæĪĺçķ¥\":107121,\"çļĦåĬªåĬĽ\":107122,\"å¼Ģåħ³\":107123,\"è§£åĨ³éĹ®é¢ĺ\":107124,\"çĿ£å¯¼\":107125,\"å¯¹æĬĹ\":107126,\"å¾Īå¤ļäººéĥ½\":107127,\"æĹłæķĪ\":107128,\"äº§åĵģè´¨éĩı\":107129,\"å®īå¿ĥ\":107130,\"åįİäºº\":107131,\"ä¸įç¬¦åĲĪ\":107132,\"èĩªå®¶\":107133,\"éĺµå®¹\":107134,\"çļĦåĲĦç§į\":107135,\"çļĦçĲĨå¿µ\":107136,\"çļĦæĸĩåĮĸ\":107137,\"ä¸ºèĩªå·±\":107138,\"å±±æ°´\":107139,\"æ¸¸æ³³\":107140,\"éľĩèį¡\":107141,\"çĶŁæ´»æĸ¹å¼ı\":107142,\"è¿ľç¦»\":107143,\"çŁ³åĮĸ\":107144,\"æŃ¤äºĭ\":107145,\"æĺ¯çľŁçļĦ\":107146,\"çļĦæ¯Ķä¾ĭ\":107147,\"çĶ¨çĶµ\":107148,\"å¥¥è¿Ĳä¼ļ\":107149,\"ä¿Ŀå®ī\":107150,\"èĽĭçĻ½è´¨\":107151,\"çļĦå¿ĥçĲĨ\":107152,\"å·«\":107153,\"åı·çłģ\":107154,\"æ°Ķä½ĵ\":107155,\"åıĳæĶ¹\":107156,\"åıĳæĶ¹å§Ķ\":107157,\"åĮ»å¸Ī\":107158,\"æ¶ĤæĸĻ\":107159,\"æĺĬ\":107160,\"å¸Ĥçº§\":107161,\"ä¸ĸçķĮçļĦ\":107162,\"åĪĨåĪ«æĺ¯\":107163,\"çł´äº§\":107164,\"ä¸ĢæĿ¯\":107165,\"æĭīå¼Ģ\":107166,\"å¹³åĩ¡\":107167,\"çļĦåıĳçĶŁ\":107168,\"åĬ¨æīĭ\":107169,\"ä¸ĢçĽ´ä»¥æĿ¥\":107170,\"æīĭå·¥\":107171,\"éĩĮéĿ¢çļĦ\":107172,\"æĹłåħ³\":107173,\"ä»ĭåħ¥\":107174,\"èµ°ä¸Ĭ\":107175,\"å°±æĺ¯è¦ģ\":107176,\"å¹´éĹ´\":107177,\"åĩºçı¾\":107178,\"å½±éŁ¿\":107179,\"å¹ħåº¦\":107180,\"éĽģ\":107181,\"éģĵåħ·\":107182,\"çĽ®çļĦåľ°\":107183,\"åĲİèĢħ\":107184,\"ä¸Ĭæ¼Ķ\":107185,\"äºĨåĩł\":107186,\"æ®ĭçĸ¾äºº\":107187,\"å¿Ļç¢Į\":107188,\"æĺ¯åĲ¦æľī\":107189,\"å¹¶å¯¹\":107190,\"ä¼ļå¯¼èĩ´\":107191,\"æ°´åºĵ\":107192,\"ç»Ĩèĩ´\":107193,\"åĲİæĤĶ\":107194,\"å¿ĥæĢĿ\":107195,\"åģļäºĭ\":107196,\"åİĤæĪ¿\":107197,\"çĿ¿\":107198,\"è¿ĲèĲ¥åķĨ\":107199,\"å¤´éĥ¨\":107200,\"çļĦè§Ĵèī²\":107201,\"æĺ¯ä»ĸ\":107202,\"æĹ¢æľī\":107203,\"å°ıæĹ¶åĢĻ\":107204,\"å¼ºåĬ²\":107205,\"ä¸»æĴŃ\":107206,\"åħ¨åĽ½åĲĦåľ°\":107207,\"æįı\":107208,\"æįŁåĿı\":107209,\"åķĨä¼ļ\":107210,\"ä¿Ŀç½Ĺ\":107211,\"çľģå¸Ĥ\":107212,\"éļ§éģĵ\":107213,\"æľīä¸įå°ĳ\":107214,\"è¦ģåľ¨\":107215,\"å»ºè®¾é¡¹çĽ®\":107216,\"ç³ĸå°¿\":107217,\"ç³ĸå°¿çĹħ\":107218,\"æĿ¡ä»¶ä¸ĭ\":107219,\"ä¼ĺè´¨çļĦ\":107220,\"é¦ĸåıĳ\":107221,\"å½ĵæĹ¶çļĦ\":107222,\"ä¸°çĶ°\":107223,\"å¤§çĽĺ\":107224,\"çĽ¸ç»§\":107225,\"å®ģå¤ı\":107226,\"åħ¥ä½ı\":107227,\"æĪĳè¿ĺ\":107228,\"åħĭæĸ¯\":107229,\"å®ļä»·\":107230,\"å¹³æĸ¹åħ¬éĩĮ\":107231,\"çļĦçŁ¥è¯Ĩ\":107232,\"æĪĳä»¬ä¼ļ\":107233,\"åħĥå®Ŀ\":107234,\"ä½ĵéĩį\":107235,\"è³£\":107236,\"å¯¹æĪĳä»¬\":107237,\"çŁ³å®¶\":107238,\"çŁ³å®¶åºĦ\":107239,\"ç²¾åįİ\":107240,\"å½¢çĬ¶\":107241,\"åıĹåĪ°äºĨ\":107242,\"ä¿®è®¢\":107243,\"ç¾İåľĭ\":107244,\"é«ĺæ¸ħ\":107245,\"çľ¼éķľ\":107246,\"è§īå¾Ĺèĩªå·±\":107247,\"å¸¦ç»Ļ\":107248,\"åĶ®ä»·\":107249,\"éĹ¨ç¥¨\":107250,\"åŃķå¦ĩ\":107251,\"çĶµè§Ĩåı°\":107252,\"åıĳä½ľ\":107253,\"çļĦåĳ³éģĵ\":107254,\"éķ¿è¿ľ\":107255,\"åħ¬åħ±æľįåĬ¡\":107256,\"æŃ£å¸¸çļĦ\":107257,\"æľīè¿ĩ\":107258,\"é£İæĥħ\":107259,\"æ¯Ķéĩį\":107260,\"åĲ»\":107261,\"ç®¡çĲĨå·¥ä½ľ\":107262,\"ç»¼åĲĪæĢ§\":107263,\"å·²è¢«\":107264,\"è¯´èµ·\":107265,\"æİĴæ°´\":107266,\"ä¸įæĸŃåľ°\":107267,\"æĥħæĢĢ\":107268,\"è¾ĵéĢģ\":107269,\"è¿ĩæķı\":107270,\"çļĦåı¯èĥ½æĢ§\":107271,\"æľįçĶ¨\":107272,\"æľīè®¸å¤ļ\":107273,\"å§Ķåī¯ä¹¦è®°\":107274,\"åĮĸå¦Ĩåĵģ\":107275,\"æļĤåģľ\":107276,\"æĬķèµĦäºº\":107277,\"çıŃçº§\":107278,\"è¯´çĿĢ\":107279,\"åįĹåĮĹ\":107280,\"åĪĨè¡Į\":107281,\"çıłå®Ŀ\":107282,\"å¯¶\":107283,\"å¢ŀå¤ļ\":107284,\"è¢«åĬ¨\":107285,\"çī¹æ®ĬçļĦ\":107286,\"éĹľä¿Ĥ\":107287,\"çļĦèĦ¸\":107288,\"æĥŁ\":107289,\"ä¸įä¸Ģå®ļ\":107290,\"ç¶Ń\":107291,\"çģ«çĪĨ\":107292,\"ç§Łéĩĳ\":107293,\"çŀ§\":107294,\"éĩįå»º\":107295,\"è·ª\":107296,\"ä¸Ģç¨®\":107297,\"çļĦåĲĪä½ľ\":107298,\"å®īæħ°\":107299,\"ä»įæĺ¯\":107300,\"ä¸ĵä¸ļåĮĸ\":107301,\"è°ĥè§£\":107302,\"ä¸įå¦¨\":107303,\"éĢĻæĺ¯\":107304,\"å¿ħéłĪ\":107305,\"ä¼ĬæľĹ\":107306,\"å¾ĹäºĨ\":107307,\"æľįåĬ¡å¹³åı°\":107308,\"å§¬\":107309,\"åħĪéĶĭ\":107310,\"çİĭåŃĲ\":107311,\"çļĦä¸ĢåĪĩ\":107312,\"æĢ»çĲĨ\":107313,\"åĵ¼\":107314,\"çªĳ\":107315,\"çļĦå¿ĥæĥħ\":107316,\"çļĦéĩįå¤§\":107317,\"çĳŁ\":107318,\"ä¸Ģç¬ĳ\":107319,\"åıĳå±ķä¸Ń\":107320,\"åģ¥åº·åıĳå±ķ\":107321,\"åĵģçīĮçļĦ\":107322,\"ç¦®\":107323,\"ä½Ļäºº\":107324,\"ä»Ĭå¹´ä»¥æĿ¥\":107325,\"æķ°çłģ\":107326,\"çŃ¾è¯ģ\":107327,\"åİ»æī¾\":107328,\"åŁºéĩĳä¼ļ\":107329,\"æĬ±æĢ¨\":107330,\"æŃ£å½ĵ\":107331,\"çıŃåŃĲæĪĲåĳĺ\":107332,\"ä¸įåĲĪæł¼\":107333,\"åĪ¶å®ļäºĨ\":107334,\"ç¼ĵæħ¢\":107335,\"åĪ¶çº¦\":107336,\"æłıçĽ®\":107337,\"å¸Ĥåľºç»ıæµİ\":107338,\"ç»ĦæĪĲçļĦ\":107339,\"ä¸¥å³»\":107340,\"æĹ¥è®¯\":107341,\"ä¸ĢçĤ¹çĤ¹\":107342,\"æĺ¯æĢİä¹Ī\":107343,\"çļĦçħ§çīĩ\":107344,\"éĺ»æŃ¢\":107345,\"æ¨¡ç³Ĭ\":107346,\"ç¼¸\":107347,\"éģķåıį\":107348,\"æĲ¬è¿ģ\":107349,\"éĩĳéĴ±\":107350,\"å½¬\":107351,\"ä¸įå®ī\":107352,\"æĪĺçķ¥åĲĪä½ľ\":107353,\"å¡«åĨĻ\":107354,\"è®²ç©¶\":107355,\"åħħåĪĨåĪ©çĶ¨\":107356,\"èĥ½å¤ł\":107357,\"èĳ¡èĲĦéħĴ\":107358,\"éĩĩçĶ¨äºĨ\":107359,\"åľ¨ä»Ĭå¹´\":107360,\"ä¸Ńå°ıåŃ¦\":107361,\"åľ¨æĦı\":107362,\"çļĦåİĭåĬĽ\":107363,\"ä¸įå¹¸\":107364,\"åĪ¶èį¯\":107365,\"åı¯ä»¥è®©\":107366,\"è¢«è¯Ħä¸º\":107367,\"ç»ĨèıĮ\":107368,\"æĪıåī§\":107369,\"åįĬå¯¼\":107370,\"åįĬå¯¼ä½ĵ\":107371,\"è§Ĩè§Ĵ\":107372,\"åĸľæŃ¡\":107373,\"å¾ģæĶ¶\":107374,\"è°ĭåĪĴ\":107375,\"æŀģå¤§çļĦ\":107376,\"çĤ¹èµŀ\":107377,\"è®°èĢħä»İ\":107378,\"ä¸¤åĲį\":107379,\"èĩªåĬ©\":107380,\"èµ·æŃ¥\":107381,\"æĬ¤å£«\":107382,\"å®Ŀé©¬\":107383,\"å¤ªåŃĲ\":107384,\"å°ıå°ıçļĦ\":107385,\"æ¸©æ³ī\":107386,\"åĩºç§Łè½¦\":107387,\"ç§ŁæĪ¿\":107388,\"ä¸¤å®¶\":107389,\"éľĩæĴ¼\":107390,\"ç§īæī¿\":107391,\"ä¸Ģä»¶äºĭ\":107392,\"çĥĪå£«\":107393,\"å®ĺåħµ\":107394,\"è½¬èº«\":107395,\"ä¹ĲåĽŃ\":107396,\"çĻĮçĹĩ\":107397,\"æ¨¡èĮĥ\":107398,\"æĦ£\":107399,\"è¿ĩåİ»çļĦ\":107400,\"ä»£ä»·\":107401,\"çļĦæ¦Ĥå¿µ\":107402,\"åĩłçĻ¾\":107403,\"è´µéĺ³\":107404,\"æĭħå¿§\":107405,\"éĢĤå®ľ\":107406,\"çİ¯å¢ĥä¿ĿæĬ¤\":107407,\"çĥ«\":107408,\"ä½łæĥ³\":107409,\"æŃ¤åĲİ\":107410,\"ä½łä¹Ł\":107411,\"çįİ\":107412,\"éĻ¤æŃ¤\":107413,\"éĻ¤æŃ¤ä¹ĭå¤ĸ\":107414,\"è°ĥåº¦\":107415,\"ç§ĳçĽ®\":107416,\"æīĢè¯´çļĦ\":107417,\"åĬĩ\":107418,\"å¿½è§Ĩ\":107419,\"ä¸īæ¬¡\":107420,\"ä¸ĢæĹ¥\":107421,\"åŀĤçĽ´\":107422,\"ç«ŀæĬĢ\":107423,\"éĿ¢åĮħ\":107424,\"å¤§æĪĺ\":107425,\"æĲºå¸¦\":107426,\"å¦Ĥæŀľæ²¡æľī\":107427,\"åħ»æĪĲ\":107428,\"åĩºè¡Ģ\":107429,\"çĪ±å¥½èĢħ\":107430,\"æīĵéĢļ\":107431,\"èµ·è¯ī\":107432,\"åĳĪçİ°åĩº\":107433,\"æŃĮæīĭ\":107434,\"åľ¨å¤ĸ\":107435,\"é¢Ĩå¯¼å¹²éĥ¨\":107436,\"åĨ¥\":107437,\"èĪĨè®º\":107438,\"æıĲåıĸ\":107439,\"éĺ¿å°Ķ\":107440,\"æľĽçĿĢ\":107441,\"ä¸īäºļ\":107442,\"è²¡\":107443,\"åĪ·æĸ°\":107444,\"æĻļæĬ¥\":107445,\"è¿ĺæľīä¸Ģä¸ª\":107446,\"åĨ°ç®±\":107447,\"ç½ĳçĤ¹\":107448,\"åĩºåħ·\":107449,\"å¼ºçĥĪçļĦ\":107450,\"æĪĳçĽ¸ä¿¡\":107451,\"å¸ĮæľĽèĥ½\":107452,\"çīĻé½¿\":107453,\"äºĭå®ľ\":107454,\"ä¸ļåĨħäººå£«\":107455,\"ä»£æĽ¿\":107456,\"åıĺå½¢\":107457,\"éĽ²\":107458,\"è°ĥæİ§\":107459,\"åĪĽæĸ°åĪĽä¸ļ\":107460,\"æĭĨè¿ģ\":107461,\"æł¸æŁ¥\":107462,\"éĢĹ\":107463,\"åħ¥åŃ¦\":107464,\"æĦıåĲĳ\":107465,\"æıĽ\":107466,\"ä¸ĭæ¬¡\":107467,\"ä¼łè¾ĵ\":107468,\"ä»ĸä»¬åľ¨\":107469,\"èĢĮä¸Ķè¿ĺ\":107470,\"æĹ¥åľ¨\":107471,\"æķĻè®Ń\":107472,\"æ´»çĿĢ\":107473,\"çļĦæľīæķĪ\":107474,\"å¤įå·¥å¤į\":107475,\"å¤įå·¥å¤įäº§\":107476,\"æĺ¯ä¸Ģä»¶\":107477,\"çŃīçĿĢ\":107478,\"å¾©\":107479,\"åĭĩæķ¢\":107480,\"éģŃåıĹ\":107481,\"å¥Ķé©°\":107482,\"è®²åº§\":107483,\"è¯´å®Į\":107484,\"ç»Ļåĩº\":107485,\"è°¦\":107486,\"è¯ĬçĸĹ\":107487,\"çĽ²çĽ®\":107488,\"å®¢è¿Ĳ\":107489,\"å°±è¿ŀ\":107490,\"å¼Ģåħĥ\":107491,\"å¼Ģåħĥæ£ĭçīĮ\":107492,\"ä¸įæĸŃæıĲåįĩ\":107493,\"çĶ¨æĪ·çļĦ\":107494,\"æĴķ\":107495,\"ä¾Ľæ°´\":107496,\"ç¶ĵæ¿Ł\":107497,\"ä¸ŃåĮ»èį¯\":107498,\"èģĶæĥ³\":107499,\"åħ¬äº¤è½¦\":107500,\"èĪªçıŃ\":107501,\"æĬĢè¡ĵ\":107502,\"å¼ķèµ·çļĦ\":107503,\"å°¹\":107504,\"èµĦæ·±\":107505,\"åĽ½èµĦå§Ķ\":107506,\"èĺŃ\":107507,\"é¼»åŃĲ\":107508,\"éĹ½\":107509,\"æİĴéĺŁ\":107510,\"è§Ĥåħī\":107511,\"éģĹåĿĢ\":107512,\"ä¸ľäº¬\":107513,\"é¥ŃåºĹ\":107514,\"ä¸įæĸŃçļĦ\":107515,\"å°±æĺ¯ä¸Ģä¸ª\":107516,\"éķ¿ä¹ħ\":107517,\"çļĦè§ĤçĤ¹\":107518,\"å¨¶\":107519,\"æĪĳçİ°åľ¨\":107520,\"çķ°\":107521,\"å¾Ĺåĩº\":107522,\"å¿ħå®ļ\":107523,\"ä¸įåıĹ\":107524,\"åıªéľĢè¦ģ\":107525,\"åĽ°æī°\":107526,\"ç§ĳåŃ¦æĬĢæľ¯\":107527,\"çīĽèĤī\":107528,\"è¾ĥé«ĺçļĦ\":107529,\"è·ĳæŃ¥\":107530,\"æ²¾\":107531,\"èı©èĲ¨\":107532,\"æľĢå¾Į\":107533,\"ä¿Ŀå¯Ĩ\":107534,\"æ²»å®ī\":107535,\"éĤ±\":107536,\"å¸¸è¯Ĩ\":107537,\"èĦ¸èī²\":107538,\"åĮĹå¤§\":107539,\"æ±ĩèģļ\":107540,\"æĳĨèĦ±\":107541,\"é¾Ļå¤´ä¼ģä¸ļ\":107542,\"å¥³åıĭ\":107543,\"çŃīå·¥ä½ľ\":107544,\"ä¸Ńç¾İ\":107545,\"èģĮåľº\":107546,\"èĦĳè¢ĭ\":107547,\"åĨĻçļĦ\":107548,\"é¥²æĸĻ\":107549,\"åĬ³åĬ¨åĬĽ\":107550,\"å±¯\":107551,\"æĮģèĤ¡\":107552,\"åĽ¾åĥı\":107553,\"è¿ĩåİ»äºĨ\":107554,\"è²¨\":107555,\"è¾²\":107556,\"éĹ®æĪĳ\":107557,\"è·Łä½ł\":107558,\"çĶŁæŃ»\":107559,\"å®¡ç¾İ\":107560,\"é¢Ĺç²Ĵ\":107561,\"ä¸Ńæĸ¹\":107562,\"åĬłçĥŃ\":107563,\"æĹħè¡Įç¤¾\":107564,\"çĻ¼çĶŁ\":107565,\"ä¸įåłª\":107566,\"åĤ·\":107567,\"æ¥ł\":107568,\"åĬŀæ¡Ī\":107569,\"æŁĦ\":107570,\"æĹ¢æĺ¯\":107571,\"å¤ĦåĪĨ\":107572,\"çľŁå®ŀçļĦ\":107573,\"æĬ¥çº¸\":107574,\"å¸ĪçĪ¶\":107575,\"å®īå¾½çľģ\":107576,\"åī¯ä¸»å¸Ń\":107577,\"ä¹ĭéģĵ\":107578,\"å¯¼å¼¹\":107579,\"åŃ¦æł¡çļĦ\":107580,\"åŁİå¸ĤçļĦ\":107581,\"è°ĪåĪ°\":107582,\"æ¢Ĺ\":107583,\"å¹³éĿ¢\":107584,\"è¯´ä»Ģä¹Ī\":107585,\"é¢ĳçİĩ\":107586,\"éķ¿ä¸īè§Ĵ\":107587,\"çļĦåĪ©çĽĬ\":107588,\"é»¨\":107589,\"è±ĨèħĲ\":107590,\"å®ŀéĻħæĥħåĨµ\":107591,\"æŀĹä¸ļ\":107592,\"çºªæ£ĢçĽĳå¯Ł\":107593,\"ä½ıéĻ¢\":107594,\"çļĦæķ´ä½ĵ\":107595,\"åīįè¡Į\":107596,\"æĮ¨\":107597,\"çħ¤çŁ¿\":107598,\"åī¯æĢ»è£ģ\":107599,\"å°ıåĲĥ\":107600,\"æŀģç«¯\":107601,\"å©Ĩå©Ĩ\":107602,\"çİ°è´§\":107603,\"è¯ĹæŃĮ\":107604,\"éĴ¥åĮĻ\":107605,\"ç¼©çŁŃ\":107606,\"ä½Ĩè¿Ļ\":107607,\"æĸ°åĵģ\":107608,\"è¿Ļå¯¹\":107609,\"çŁ¥åĲįåº¦\":107610,\"å¿ĹæĦ¿æľįåĬ¡\":107611,\"å¤§å±Ģ\":107612,\"è¡¡éĩı\":107613,\"ä½ĵçİ°äºĨ\":107614,\"æ¡ĥèĬ±\":107615,\"åĲ¸å¼ķåĬĽ\":107616,\"åł¤\":107617,\"æĵħéķ¿\":107618,\"åĴĴ\":107619,\"çĽ¸æľº\":107620,\"ä¸Ģç«Ļ\":107621,\"ä¸Ģç«Ļå¼ı\":107622,\"æľĢç¾İ\":107623,\"æ°¸ä¹ħ\":107624,\"çļĦéĥ¨åĪĨ\":107625,\"åĪĨå·¥\":107626,\"å·¥ç¨ĭå»ºè®¾\":107627,\"æĲŃè½½\":107628,\"æ°´ä¸Ń\":107629,\"èĮ¨\":107630,\"çļĦæĵįä½ľ\":107631,\"ç»Łæ²»\":107632,\"çķħéĢļ\":107633,\"åħļçļĦåįģ\":107634,\"è¼¸\":107635,\"æ¸¬\":107636,\"ç¾İè§Ĥ\":107637,\"ä¸įåĪ©\":107638,\"åıįæĢĿ\":107639,\"éªĦåĤ²\":107640,\"æłĩçļĦ\":107641,\"æĿĢäºº\":107642,\"éĺ¿å§¨\":107643,\"é£ŁæĿĲ\":107644,\"åĲĥçļĦ\":107645,\"åĲİåĨį\":107646,\"çŁ£\":107647,\"ä¸¤ä¾§\":107648,\"æ¸ħæ°´\":107649,\"è¿ĽçĲĥ\":107650,\"å¼Ģå§ĭäºĨ\":107651,\"åĲ¬äºĨ\":107652,\"çĦĬæİ¥\":107653,\"çŁ®\":107654,\"å¨Ł\":107655,\"ä¸ºäºº\":107656,\"éĢģç»Ļ\":107657,\"åĨĴéĻ©\":107658,\"æķ·\":107659,\"ç»ĪæŃ¢\":107660,\"æīįçŁ¥éģĵ\":107661,\"è¿Ĳæ°Ķ\":107662,\"éĢļé£İ\":107663,\"æĥĬè®¶\":107664,\"ç§ĳåŃ¦éĻ¢\":107665,\"æıĲéĹ®\":107666,\"å¤ªåİŁ\":107667,\"çĽ¸åĲĮçļĦ\":107668,\"ä»ķ\":107669,\"èģĸ\":107670,\"æĥħæ³ģ\":107671,\"é¢Ĩå¯¼äºº\":107672,\"åĩºæĿ¥äºĨ\":107673,\"æ²¿çº¿\":107674,\"éĻ½\":107675,\"æĦŁè¦º\":107676,\"ä»įåľ¨\":107677,\"æ©Ļ\":107678,\"çº¦ä¸º\":107679,\"åĸĿéħĴ\":107680,\"çĶ¨èį¯\":107681,\"ä¸ĭä¸Ģ\":107682,\"æ³ķå®ĺ\":107683,\"é¡ºåºı\":107684,\"åģļä¸Ģä¸ª\":107685,\"åĭ¢\":107686,\"æŃª\":107687,\"çĶµç«ŀ\":107688,\"ä¼´éļıçĿĢ\":107689,\"ä¹ĭåĬĽ\":107690,\"ä¹ĭäºº\":107691,\"äºĳè®¡ç®Ĺ\":107692,\"åĪ«äººçļĦ\":107693,\"ç§ĳåŃ¦åıĳå±ķ\":107694,\"ç¬¬åħ«\":107695,\"å¹²æī°\":107696,\"å¥³ç¥ŀ\":107697,\"è¿Ļæł·åģļ\":107698,\"å¤Ħåľ¨\":107699,\"æ°´è´¨\":107700,\"éķ¿æĺ¥\":107701,\"å¸ĤåľºéľĢæ±Ĥ\":107702,\"ç»´æĿĥ\":107703,\"èĢ³æľµ\":107704,\"æĸĩåĮĸçļĦ\":107705,\"å¥¶ç²ī\":107706,\"ä¼łè¾¾\":107707,\"æīĭæľºçīĪ\":107708,\"æĽ¾åľ¨\":107709,\"äºĮæľŁ\":107710,\"åİŁåĽłæĺ¯\":107711,\"æºĲå¤´\":107712,\"åıĪèĥ½\":107713,\"è£¸\":107714,\"æĬĢæľ¯åĪĽæĸ°\":107715,\"æĸĩåĮĸæĹħæ¸¸\":107716,\"åıĳç¥¨\":107717,\"å¹´çº§\":107718,\"ä½łä¸į\":107719,\"ä¹ĭå¿ĥ\":107720,\"æķ°çĻ¾\":107721,\"åĲĳå¾Ģ\":107722,\"èĢģå®¶\":107723,\"åľĭéļĽ\":107724,\"çļĦé«ĺåº¦\":107725,\"æľĿéĺ³\":107726,\"æ¸ħéĻ¤\":107727,\"èĩªæľī\":107728,\"ä¹¦ä¸Ń\":107729,\"æ¸¸æĪıè£ħå¤ĩ\":107730,\"ä¸ĩå¤ļ\":107731,\"é©¾é©¶åĳĺ\":107732,\"ä½łçŁ¥éģĵ\":107733,\"åĽ½åºĨ\":107734,\"é£ŁåłĤ\":107735,\"æİ¥åı£\":107736,\"æĢ»æķ°\":107737,\"åħ¶ä»ĸçļĦ\":107738,\"çĶŁåĳ½çļĦ\":107739,\"ä½łåľ¨\":107740,\"çļĦçĽ®åħī\":107741,\"è¿Ļæĸ¹éĿ¢\":107742,\"éĥ½è¯´\":107743,\"çĸĹæ³ķ\":107744,\"åĭĩå£«\":107745,\"åľ¨åħ¨çĲĥ\":107746,\"ä¿ĿéĻ©åħ¬åı¸\":107747,\"çĿ£æŁ¥\":107748,\"åĸĦèī¯\":107749,\"è¡¨å½°\":107750,\"è¹²\":107751,\"è·¯æ®µ\":107752,\"æľĥåĵ¡è¦ı\":107753,\"æľĥåĵ¡è¦ıç¯Ħ\":107754,\"æĪ·åŀĭ\":107755,\"ä¿ĥä½¿\":107756,\"ä¿®å»º\":107757,\"é«ĺæ°´å¹³\":107758,\"åģļåĩºäºĨ\":107759,\"ä¸»åľº\":107760,\"è¡Įèµ°\":107761,\"ç©ºçĻ½\":107762,\"æľīäººè¯´\":107763,\"è¿Ļä¸ªä¸ĸçķĮ\":107764,\"åĲįä¹ī\":107765,\"å®Įç¾İçļĦ\":107766,\"ç¾¡æħķ\":107767,\"åıĬåħ¶ä»ĸ\":107768,\"åı¯çĶ¨\":107769,\"æĭĲ\":107770,\"è¾ĥå¤§çļĦ\":107771,\"æĬĢæľ¯åĴĮ\":107772,\"å°¼äºļ\":107773,\"çĻ¾è´§\":107774,\"æıī\":107775,\"éĢīè´Ń\":107776,\"éĺŁåıĭ\":107777,\"ä¼łæĦŁ\":107778,\"ä¼łæĦŁåĻ¨\":107779,\"åıªè¦ģä½ł\":107780,\"ä¸ºä»Ģä¹Īè¦ģ\":107781,\"ä¸ĵæ³¨äºİ\":107782,\"ä½Ļé¢Ŀ\":107783,\"åħ¸åŀĭçļĦ\":107784,\"çĽ®åīįå·²\":107785,\"æ¬²æľĽ\":107786,\"èģĶç»ľ\":107787,\"æµģä¼ł\":107788,\"çļĦå®¶åºŃ\":107789,\"åı·åı¬\":107790,\"çıįè´µ\":107791,\"ä¼Łå¤§çļĦ\":107792,\"éī´äºİ\":107793,\"è·Łä»ĸ\":107794,\"äº§çī©\":107795,\"ä¸įå·²\":107796,\"è¿Ŀæ³ķè¡Įä¸º\":107797,\"å¤´ä¸Ĭ\":107798,\"åĪĨè§£\":107799,\"åı¯ä»¥çľĭåĩº\":107800,\"æł¡åĮº\":107801,\"åŃĹä½ĵ\":107802,\"ä¿®çĤ¼\":107803,\"çĶļèĩ³æĺ¯\":107804,\"å¾®ä¿¡åħ¬ä¼Ĺ\":107805,\"åıĸä»£\":107806,\"èĲ¥ä¸ļæĶ¶åħ¥\":107807,\"æ½įåĿĬ\":107808,\"ä½łèĥ½\":107809,\"ç¤¾ä¼ļä¿Ŀéļľ\":107810,\"æ¯ĶèµĽä¸Ń\":107811,\"æ±¡æ°´å¤ĦçĲĨ\":107812,\"å¤«å¦ĩ\":107813,\"ä¸Ģå¹ħ\":107814,\"æ²¿æµ·\":107815,\"åı£æĦŁ\":107816,\"ä½Ĩåį´\":107817,\"å½ĵæĹ¥\":107818,\"çļĦæľĢå¤§\":107819,\"æ¯ıä¸Ģä½į\":107820,\"æ²¡äºĭ\":107821,\"çī¹åĪ¥\":107822,\"å¼ĢåŃ¦\":107823,\"è·¯éĿ¢\":107824,\"å¿ĥçĲĨåŃ¦\":107825,\"æĶ¾ç½®\":107826,\"éĩįåºĨå¸Ĥ\":107827,\"ä½łèĩªå·±\":107828,\"æ¶Īè´¹èĢħçļĦ\":107829,\"ä¸Ģæ³¢\":107830,\"èŃ¦æĥķ\":107831,\"åį§å®¤\":107832,\"æ³¨å°Ħ\":107833,\"é£İéĽ¨\":107834,\"æ²¿çĿĢ\":107835,\"åĳĬè¨´\":107836,\"è¡¨çİ°åĩº\":107837,\"åĽĽæĺ¯\":107838,\"åı¤åħ¸\":107839,\"æĽ´éĩįè¦ģçļĦ\":107840,\"å¥½äºĭ\":107841,\"çľ¼æ³ª\":107842,\"æ¨ĵ\":107843,\"å®¡åĪ¤\":107844,\"ç¢°æĴŀ\":107845,\"è½¦ç«Ļ\":107846,\"è¿Ľåħ¥äºĨ\":107847,\"éĽĨåĲĪ\":107848,\"æł¼å¤ĸ\":107849,\"å®¾é¦Ĩ\":107850,\"æĶ¯ä»ĺå®Ŀ\":107851,\"å¥¹æĺ¯\":107852,\"æĺ¯å¦Ĥä½ķ\":107853,\"äººæ¬¡\":107854,\"çļĦæĪĲåĬŁ\":107855,\"æĹłåĬĽ\":107856,\"æµ·æĭĶ\":107857,\"æĺ¥åŃ£\":107858,\"éĥ½ä¸įä¼ļ\":107859,\"çŃīå¤ļç§į\":107860,\"ä¸Ģä¸ªå°ı\":107861,\"åģľè½¦åľº\":107862,\"è®©æĽ´å¤ļ\":107863,\"è¿ĻçĤ¹\":107864,\"æĪĲåĵģ\":107865,\"éĴī\":107866,\"éģĩè§ģ\":107867,\"çıŃä¸»ä»»\":107868,\"æĦıæĦ¿\":107869,\"çļĦåĲĮåŃ¦\":107870,\"æ¸¸è§Ī\":107871,\"åİĭç¼©\":107872,\"åľ¨ä¼łå¥ĩ\":107873,\"å¼¹æĢ§\":107874,\"æĹ¥åĨħ\":107875,\"ç¦ıå»ºçľģ\":107876,\"è§ĴèĲ½\":107877,\"åĪĨå¼Ģ\":107878,\"ä¼ļè®©\":107879,\"å¤ĸåĽ´\":107880,\"çĨŁæĤīçļĦ\":107881,\"çĨĶ\":107882,\"ä¸ĩè¾Ĩ\":107883,\"å¤ľéĹ´\":107884,\"è½¦èº«\":107885,\"ä¸ŃæľŁ\":107886,\"å®ĮåĸĦçļĦ\":107887,\"åĵģç±»\":107888,\"åıĭè°Ĭ\":107889,\"éĢīæĭĶ\":107890,\"éªĳå£«\":107891,\"å½¦\":107892,\"çļĦçľĭæ³ķ\":107893,\"åĽ½çİĭ\":107894,\"è¾£æ¤Ĵ\":107895,\"åıĳå¸ĥæĹ¶éĹ´\":107896,\"åı¤åŁİ\":107897,\"éļıæľº\":107898,\"ç«ĸ\":107899,\"å¼Ģè¾Ł\":107900,\"ä¼ĹçĶŁ\":107901,\"æ²¡åĬŀæ³ķ\":107902,\"åįĥéĩĮ\":107903,\"æĿ¥æºĲäºİ\":107904,\"çļĦæĿĥåĪ©\":107905,\"æ¯ĶåĪĨ\":107906,\"æ»¡æĦıçļĦ\":107907,\"ä¿®è¡Į\":107908,\"åĿł\":107909,\"å¤§æµ·\":107910,\"èİ¹\":107911,\"åĩºèº«\":107912,\"è«ĩ\":107913,\"åħ³èĬĤ\":107914,\"åĲįäºº\":107915,\"éľĢè¦ģæ³¨æĦı\":107916,\"æĹ©æĻ¨\":107917,\"å¤ĸåįĸ\":107918,\"åıĪè¦ģ\":107919,\"æ¶īæ¡Ī\":107920,\"çĶ³è¯·äºº\":107921,\"éĻĦè¿ĳçļĦ\":107922,\"åĬłå¿«æİ¨è¿Ľ\":107923,\"æĸ°å¹´\":107924,\"å¤§è¡Ĺ\":107925,\"ä¸Ģé»ŀ\":107926,\"èĭıå®ģ\":107927,\"æĤĦæĤĦ\":107928,\"èĦ¾æ°Ķ\":107929,\"å¸ĮèħĬ\":107930,\"éļıåį³\":107931,\"æķ¢äºİ\":107932,\"å®ŀè·µä¸Ń\":107933,\"æĺ¯æ²¡æľī\":107934,\"æľīè¶£çļĦ\":107935,\"æĿ¥èĩªäºİ\":107936,\"è£ģåĪ¤\":107937,\"å¥³åŃ©åŃĲ\":107938,\"èĩ³åħ³\":107939,\"èĩ³åħ³éĩįè¦ģ\":107940,\"æĻºåĬĽ\":107941,\"èµ°åĩºåİ»\":107942,\"çŁŃæĿ¿\":107943,\"å¤§åĽ½\":107944,\"çļĦè®¤è¯Ĩ\":107945,\"å¹´å¤ľ\":107946,\"åĨįåĪ°\":107947,\"åĲĮæł·çļĦ\":107948,\"å¯Ĩå°ģ\":107949,\"å¤ĸäº¤éĥ¨\":107950,\"çĶŁæķĪ\":107951,\"æĤ¨åı¯ä»¥\":107952,\"ä½łåĢĳ\":107953,\"è¿ĩå¹´\":107954,\"å¼ĵ\":107955,\"è¡ĮæĿİ\":107956,\"æ¯Ķèµ·\":107957,\"èº«é«ĺ\":107958,\"è¿Ļä¸ªäºº\":107959,\"ä¸Ńå¤ĸ\":107960,\"éģĵæŃī\":107961,\"çĽ¯çĿĢ\":107962,\"äº²åŃĲ\":107963,\"éĹ¸\":107964,\"çĻ½äºĳ\":107965,\"èĦĸåŃĲ\":107966,\"ä¸ĢåĪĩéĥ½\":107967,\"æ·ĳ\":107968,\"è°ľ\":107969,\"åģ¶çĦ¶\":107970,\"éĿłè°±\":107971,\"é«ĺç®¡\":107972,\"ä¸ĭåıĳ\":107973,\"æĶ¾åĪ°\":107974,\"ç±»åĪ«\":107975,\"ä¸ĭåĪĹ\":107976,\"æ··ä¹±\":107977,\"åĲĪæ³ķæĿĥçĽĬ\":107978,\"çİ¯çĲĥ\":107979,\"æľīæķĪåľ°\":107980,\"åķĨæĪ·\":107981,\"æ¹ĸäºº\":107982,\"æµ·å²¸\":107983,\"æĬķäº§\":107984,\"ä¸¤ä¸ªæľĪ\":107985,\"éĥ½éĿŀå¸¸\":107986,\"å¢ŀå¼ºäºĨ\":107987,\"æĿ¥åĪ°äºĨ\":107988,\"åī©ä½Ļ\":107989,\"æĤ¨çļĦåŃ©åŃĲ\":107990,\"æµģæ°´\":107991,\"æŃ£ä¹ī\":107992,\"å¤©çĮ«\":107993,\"åģļè¿ĩ\":107994,\"ä½ķæĹ¶\":107995,\"æĪĳåİ»\":107996,\"çľģä»½\":107997,\"å¥ĸéĩĳ\":107998,\"è¯¥å¦Ĥä½ķ\":107999,\"ä¸ĭçıŃ\":108000,\"åģ¶åĥı\":108001,\"æĳĨæĶ¾\":108002,\"æĸ°æ¨¡å¼ı\":108003,\"æĬķè³ĩ\":108004,\"è·¯åı£\":108005,\"åĨľæ°ĳå·¥\":108006,\"å¤§åŃ¸\":108007,\"ä»¶äºĭ\":108008,\"æł¹æľ¬ä¸į\":108009,\"æµĵåº¦\":108010,\"æµĵåİļ\":108011,\"è½®èĥİ\":108012,\"æĪ¿ä¼ģ\":108013,\"éĿŀå¸¸å¥½\":108014,\"ä»İä¸Ń\":108015,\"äººæł¼\":108016,\"ç¿ģ\":108017,\"æĹ¶éĹ´åĴĮ\":108018,\"è¿Ļä¸įæĺ¯\":108019,\"åĪ¸åķĨ\":108020,\"æĥĬäºº\":108021,\"åĻ¨å®ĺ\":108022,\"åĩĨåĪĻ\":108023,\"æĥħæĻ¯\":108024,\"æĽ´é«ĺçļĦ\":108025,\"åŃ¦å®¶\":108026,\"æ³¡æ²«\":108027,\"åľ°æĸ¹æĶ¿åºľ\":108028,\"å°±çŁ¥éģĵ\":108029,\"åĳ¼åĲģ\":108030,\"ç»ıè´¸\":108031,\"èĬ±éĴ±\":108032,\"æľīä¸Ģæ¬¡\":108033,\"æĦŁæħ¨\":108034,\"ä¸Ģåįĥ\":108035,\"å¤ľæĻļ\":108036,\"è©¹å§Ĩ\":108037,\"è©¹å§Ĩæĸ¯\":108038,\"è¦ģéĹ»\":108039,\"ç»Ĵ\":108040,\"æºĲäºİ\":108041,\"çļĦè´¨éĩı\":108042,\"æ³¨æĦıäºĭé¡¹\":108043,\"æħ¢æĢ§\":108044,\"ç¨³å®ļçļĦ\":108045,\"å»ºè®¾åĴĮ\":108046,\"æĻ¯è±¡\":108047,\"éĩıåĮĸ\":108048,\"çļĦè©±\":108049,\"è¯Ħçº§\":108050,\"æºľ\":108051,\"çº¢åĮħ\":108052,\"éĢļéģİ\":108053,\"ç¤¾ä¼ļè´£ä»»\":108054,\"æĸ°äº§åĵģ\":108055,\"åĨ·éĿĻ\":108056,\"çľĭä¸įåĪ°\":108057,\"èģĶéĤ¦\":108058,\"éŃĦ\":108059,\"çļĦåīįæıĲ\":108060,\"çļĦåīįæıĲä¸ĭ\":108061,\"è¾ĥå¥½\":108062,\"çļĦæĦŁæĥħ\":108063,\"å®¢æĪ·æıĲä¾Ľ\":108064,\"çĭ¬èĩª\":108065,\"å¢ŀæĶ¶\":108066,\"æĸĩçĮ®\":108067,\"æĭ¼åĳ½\":108068,\"ç®¡çĲĨåĴĮ\":108069,\"æµģåĬ¨æĢ§\":108070,\"åħ¨å®¶\":108071,\"ä¸Ĭæĸ¹\":108072,\"æİ¨åĩºçļĦ\":108073,\"ä¸īåĽ½\":108074,\"ä¸Ģä¸ªæĺ¯\":108075,\"æĸ°ä¸Ģè½®\":108076,\"æĸĩåĮĸéģĹäº§\":108077,\"æ®º\":108078,\"å¤§æ¹¾åĮº\":108079,\"éĥ½éľĢè¦ģ\":108080,\"çļĦå®ŀéĻħ\":108081,\"ç·Ĭ\":108082,\"å¤§å¥ĸ\":108083,\"åħīèĬĴ\":108084,\"ä¾¿äºİ\":108085,\"çļĦè¡¨æĥħ\":108086,\"æ¼Ķç»İ\":108087,\"çº¢åĨĽ\":108088,\"å½ĵæĪĳ\":108089,\"æ²»æĦĪ\":108090,\"é¢Ŀåº¦\":108091,\"éĿľ\":108092,\"ä»»ä½ķäºº\":108093,\"è¡Ĺå¤´\":108094,\"çī¹æĸ¯\":108095,\"çī¹æĸ¯æĭī\":108096,\"åĮ»çĸĹæľºæŀĦ\":108097,\"ç»ĻåŃ©åŃĲ\":108098,\"è§ĦçŁ©\":108099,\"è£ľ\":108100,\"çļĦèº«å½±\":108101,\"ä¸ĵæłı\":108102,\"æĿ¥ä¸´\":108103,\"ç«¥å¹´\":108104,\"å¤įèĭı\":108105,\"è¨Ĥ\":108106,\"åŀĭåı·\":108107,\"åĽ¾æ¡Ī\":108108,\"ç®ĢåİĨ\":108109,\"æĭ±\":108110,\"èį·åħ°\":108111,\"ä»»æĦı\":108112,\"æī¿æİ¥\":108113,\"è¿Ļæīį\":108114,\"å®¢è½¦\":108115,\"æľĿçĿĢ\":108116,\"éłħçĽ®\":108117,\"åı°é£İ\":108118,\"çļĦæĪ¿åŃĲ\":108119,\"éªı\":108120,\"æĿ±è¥¿\":108121,\"éģĹä¼ł\":108122,\"è¶Ĭå¤ļ\":108123,\"äºĨä»ĸçļĦ\":108124,\"ä¸Ĭåĳ¨\":108125,\"ç®¡çĲĨåĪ¶åº¦\":108126,\"å¤±ä¸ļ\":108127,\"çĶ·åıĭ\":108128,\"æİ¥ç§į\":108129,\"å¨ģåĲį\":108130,\"çĴ°å¢ĥ\":108131,\"åıĳçĶŁåľ¨\":108132,\"ä¸ªåĽ½å®¶\":108133,\"åĪĽæĸ°åıĳå±ķ\":108134,\"æĶ¹åıĺäºĨ\":108135,\"åģ¥åº·çļĦ\":108136,\"åĢ¼å¾Ĺä¸Ģ\":108137,\"åĢ¼å¾Ĺä¸ĢæıĲ\":108138,\"åĽ¢ä¼Ļ\":108139,\"åģĩè®¾\":108140,\"åı°ä¸Ĭ\":108141,\"è§ĦèĮĥåĮĸ\":108142,\"éĻªåĲĮ\":108143,\"åº§æ¤ħ\":108144,\"åı¯æĢľ\":108145,\"åħĭæĢĿä¸»ä¹ī\":108146,\"æ³ķå¾ĭè´£ä»»\":108147,\"ä¸Ģé¡¿\":108148,\"æĬ¬å¤´\":108149,\"ä¸ºéĩįçĤ¹\":108150,\"è¿ľæ´ĭ\":108151,\"éĢıè¿ĩ\":108152,\"åħ¨çĲĥåĮĸ\":108153,\"è¶£åĳ³\":108154,\"ç¥¨æĪ¿\":108155,\"æ¯ıäºº\":108156,\"åĲĦç§įåĲĦæł·\":108157,\"äºĨåĩºæĿ¥\":108158,\"ç»Ŀå¯¹æĺ¯\":108159,\"ä¸ĭå±ŀ\":108160,\"ä¸ĢåıĮ\":108161,\"è¿ĻåĿĹ\":108162,\"æĬĹçĸ«\":108163,\"è¦ģçĤ¹\":108164,\"å½¢æĪĲçļĦ\":108165,\"æĪĳçľĭ\":108166,\"ä¸ĩéĩĮ\":108167,\"èĢĥçłĶ\":108168,\"ä¸ºåħ¶\":108169,\"æ°ĳå®¿\":108170,\"å¤ļä½į\":108171,\"å¤§èĩ´\":108172,\"ä»ĺè´¹\":108173,\"åħ¥æīĭ\":108174,\"å±ħå®¶\":108175,\"æīĢåľ¨åľ°\":108176,\"äººèº«\":108177,\"è¿ĩå¾Ĺ\":108178,\"è¯ķè¯ķ\":108179,\"è®¿è°Ī\":108180,\"åĬłéĩį\":108181,\"å°±ä¸įä¼ļ\":108182,\"çĶŁäº§ä¼ģä¸ļ\":108183,\"åĽŀåĽ½\":108184,\"åºķçº¿\":108185,\"èµ¶åĪ°\":108186,\"æĶ¯éĺŁ\":108187,\"æĪĳä»¬éĥ½\":108188,\"éĤ®æĶ¿\":108189,\"çĽ´èĩ³\":108190,\"éĴ¢çĲ´\":108191,\"åħľ\":108192,\"çłĶè®¨ä¼ļ\":108193,\"æľĪäº®\":108194,\"åĿļæĮģä»¥\":108195,\"åħ¬å®īéĥ¨\":108196,\"éĴ¢ç®¡\":108197,\"å°ıçĻ½\":108198,\"ç½®ä¸ļ\":108199,\"èģĭ\":108200,\"ä¹¦åĨĻ\":108201,\"æĿı\":108202,\"éħįæĸ¹\":108203,\"èĢĮåıĪ\":108204,\"çĳŀå£«\":108205,\"çķĮçļĦ\":108206,\"èĢģå¤§\":108207,\"æĪĲçĨŁçļĦ\":108208,\"å¹²ä»Ģä¹Ī\":108209,\"ä¸ĵé¡¹æĸĹäºī\":108210,\"çŃīå¤ļä¸ª\":108211,\"èĦ±ç¦»\":108212,\"ä¸īä¸ªæľĪ\":108213,\"çłĶç©¶åĳĺ\":108214,\"æĹĭè½¬\":108215,\"æŀģèĩ´\":108216,\"åħįè´£\":108217,\"åħįè´£å£°æĺİ\":108218,\"å¾Īå¤ļçİ©å®¶\":108219,\"è½¦ä¸Ĭ\":108220,\"äº¤äºĴ\":108221,\"å·²æĺ¯\":108222,\"ä¸Ģå°ı\":108223,\"çļĦéĩįçĤ¹\":108224,\"èĬ±äºĨ\":108225,\"ä¸įæĺİ\":108226,\"æľīåħ³è§Ħå®ļ\":108227,\"çĬ¹å¦Ĥ\":108228,\"çľ¸\":108229,\"å¯¡\":108230,\"çļĦè¡£æľį\":108231,\"åĮħè£¹\":108232,\"èº«åŃĲ\":108233,\"å¸ĪèĮĥå¤§åŃ¦\":108234,\"äºĭåħĪ\":108235,\"çº¿æĿ¡\":108236,\"æ³ķåĪ¶\":108237,\"åħ»æĬ¤\":108238,\"ç¨³å®ļæĢ§\":108239,\"éĤµ\":108240,\"åŀĦæĸŃ\":108241,\"é¡į\":108242,\"èĢĥåı¤\":108243,\"æĿłæĿĨ\":108244,\"èĭıèģĶ\":108245,\"æ°´çĶµ\":108246,\"åħ·ä½ĵçļĦ\":108247,\"æ¿Ģæ´»\":108248,\"æĪĳæł¡\":108249,\"åĪļå¼Ģå§ĭ\":108250,\"åĩ¸æĺ¾\":108251,\"ç¦¾\":108252,\"åħ¼èģĮ\":108253,\"éĢıéģİ\":108254,\"åľ¨æ¸¸æĪıä¸Ń\":108255,\"ç¤¾ä¼ļåıĳå±ķ\":108256,\"å¥½çİ©\":108257,\"å¹»æĥ³\":108258,\"ä¸įä»£è¡¨\":108259,\"æ³¨æĦıåĬĽ\":108260,\"æ£į\":108261,\"çĶ¨æīĭ\":108262,\"ç¾İäºº\":108263,\"è®¸å¤ļäºº\":108264,\"å¾Īæĺ¯\":108265,\"çļĦçłĶåıĳ\":108266,\"æīĵåĩº\":108267,\"åĲĪä¼Ļäºº\":108268,\"ä¸Ģå¤ľ\":108269,\"ç¼ĵç¼ĵ\":108270,\"ä¿®æŃ£\":108271,\"æĦŁçŁ¥\":108272,\"ç»Īèº«\":108273,\"æ¿Ģç´ł\":108274,\"çİ¯å¢ĥä¸ĭ\":108275,\"æ¬¡ä¼ļè®®\":108276,\"ç»ıæµİå¢ŀéķ¿\":108277,\"æīĽ\":108278,\"åıĳéħµ\":108279,\"åĪĨæŀĲå¸Ī\":108280,\"åľ¨æľªæĿ¥\":108281,\"ä¸»è¦ģæľī\":108282,\"ä¸ĢåŃ£åº¦\":108283,\"çļĦè¯´æ³ķ\":108284,\"ä»İæĿ¥æ²¡æľī\":108285,\"è´§è½¦\":108286,\"ç¼©å°ı\":108287,\"å¤ªè¿ĩ\":108288,\"æķĪåĬĽ\":108289,\"ä¸įä¸ĭ\":108290,\"æĬķç¨¿\":108291,\"èį¯ä¸ļ\":108292,\"ç»Ħéķ¿\":108293,\"ç«ĻçĤ¹\":108294,\"å¾Īåĸľæ¬¢\":108295,\"éĲµ\":108296,\"åĬ¿å¤´\":108297,\"æ¼ıæ´ŀ\":108298,\"æĦ¤æĢĴ\":108299,\"åħħå®ŀ\":108300,\"åĪĽä¸ļæĿ¿\":108301,\"çĪª\":108302,\"æľªå¿ħ\":108303,\"åºķéĥ¨\":108304,\"å¾ĹåĪĨ\":108305,\"äººæ°ĳåĮ»éĻ¢\":108306,\"äºĮæīĭæĪ¿\":108307,\"å·²ç»ıè¢«\":108308,\"å¤§æ¥¼\":108309,\"æĸ°æĪ¿\":108310,\"è¾¦æ³ķ\":108311,\"çĶ¨åĬĽ\":108312,\"æĭĵå®½\":108313,\"åĨħåľ¨\":108314,\"æĴŃåĩº\":108315,\"é¥°æ¼Ķ\":108316,\"ä¹Łè®©\":108317,\"ä½ľçĤº\":108318,\"çī©ä¸ļç®¡çĲĨ\":108319,\"åį´ä¸į\":108320,\"ä¸ºä¸ŃåĽ½\":108321,\"å±ĢåĬ¿\":108322,\"ä¸įèĤ¯\":108323,\"æľĢæĸ°çļĦ\":108324,\"åı¯ä»¥éĢīæĭ©\":108325,\"æĺ¾çİ°\":108326,\"å°±ç®Ĺæĺ¯\":108327,\"åľ¨æł¡\":108328,\"é¾Ł\":108329,\"ä¸¤æĿ¡\":108330,\"çļĦå®ŀåĬĽ\":108331,\"è¶Ĭå¥½\":108332,\"å¥¹åľ¨\":108333,\"å¿łè¯ļ\":108334,\"ä¹ŁéľĢè¦ģ\":108335,\"æ¸¸æĪıæĵįä½ľ\":108336,\"è¶ħåĩº\":108337,\"å¦Ĥæŀľä¸į\":108338,\"æīĢåľ¨çļĦ\":108339,\"ä½łè¿ĺ\":108340,\"ä»¥åĨħ\":108341,\"æľīä¸Ģå®ļ\":108342,\"åı¯è¾¾\":108343,\"è·ĳåĪ°\":108344,\"åīĽ\":108345,\"å»ºç«ĭåģ¥åħ¨\":108346,\"æķ´è½¦\":108347,\"åīįæĸ¹\":108348,\"éĹ´æİ¥\":108349,\"çŃ¹å¤ĩ\":108350,\"çĸ²åĬ³\":108351,\"ç¦»å¼ĢäºĨ\":108352,\"æ±Ŀ\":108353,\"éĿ¢éĥ¨\":108354,\"ä¹ĭåīįçļĦ\":108355,\"åıĺä¸º\":108356,\"å¦Ĥæŀľè¯´\":108357,\"å¯¹ä»ĺ\":108358,\"åĿĩåı¯\":108359,\"è¢«åĳĬäºº\":108360,\"ç²¾ç¾İ\":108361,\"èģļä¼ļ\":108362,\"çĿĢæĢ¥\":108363,\"è°·æŃĮ\":108364,\"ä¸Ģåı·\":108365,\"çº¢åĪ©\":108366,\"ä¼łå¥ĩæ¸¸æĪı\":108367,\"å»ĸ\":108368,\"è´ŀ\":108369,\"ä¹°åĪ°\":108370,\"éŃļ\":108371,\"ä½ĵè´¨\":108372,\"å°ĳäºĨ\":108373,\"æ³īå·ŀ\":108374,\"åĲŁ\":108375,\"ç»Ŀä¸į\":108376,\"é»ĳæģ¶\":108377,\"é»ĳæģ¶åĬ¿åĬĽ\":108378,\"ä¸Ĭæĺł\":108379,\"çļĦè¯Ŀé¢ĺ\":108380,\"ä¸ĩäººæ¬¡\":108381,\"ä¸ĸéĹ´\":108382,\"çĶ¨å·¥\":108383,\"è´¯ç©¿\":108384,\"å®ĿçŁ³\":108385,\"ä½łå¥½\":108386,\"åĪĩåī²\":108387,\"å¼ºåĽ½\":108388,\"åĽŀèĲ½\":108389,\"æ°´æĻ¶\":108390,\"æ¨¡ä»¿\":108391,\"æ´ªæ°´\":108392,\"éĢĻéº¼\":108393,\"åįģä¸īäºĶ\":108394,\"ä½ĳ\":108395,\"éĻĦä»¶\":108396,\"çļĦå¢ŀéķ¿\":108397,\"éĻĦå±ŀ\":108398,\"çİ°å·²\":108399,\"å¸®ä½ł\":108400,\"éĩĳçīĮ\":108401,\"é«ĺåİŁ\":108402,\"åľ¨å®¶éĩĮ\":108403,\"éĺ²èħĲ\":108404,\"ç¡®å®ŀæĺ¯\":108405,\"å®£è®²\":108406,\"å¤©æīį\":108407,\"ç»ıèĲ¥ç®¡çĲĨ\":108408,\"éĶħçĤī\":108409,\"åĲĪä¸Ģ\":108410,\"è§Ĥèµı\":108411,\"éķ¿è¾¾\":108412,\"ä¸»ä¹īæĢĿæĥ³\":108413,\"éĤ£éº¼\":108414,\"é£İäºĳ\":108415,\"ä¸ºä¸»çļĦ\":108416,\"æļĳåģĩ\":108417,\"æĮģä¹ħ\":108418,\"å¼Ĥåľ°\":108419,\"å¼ĢéĹ¨\":108420,\"æ¨¡æĿ¿\":108421,\"æī¹æ¬¡\":108422,\"ä¸įä¾¿\":108423,\"å¤©çĶŁ\":108424,\"åĩłä¸ªæľĪ\":108425,\"ä¸ĵç§ĳ\":108426,\"åı¦æľī\":108427,\"åħ¬å¸ĥçļĦ\":108428,\"æĩ·\":108429,\"åľºåĲĪ\":108430,\"çļĦå¿ĥæĢģ\":108431,\"è¿ĺå¥½\":108432,\"å®ŀæĪĺ\":108433,\"èĢģå¸ĪçļĦ\":108434,\"åħ©åĢĭ\":108435,\"åı¯åľ¨\":108436,\"éĤ£ä½į\":108437,\"å¥łå®ļäºĨ\":108438,\"ä¿ĥéĶĢ\":108439,\"æı´åĬ©\":108440,\"ä¸ĩçī©\":108441,\"æĥħæĬ¥\":108442,\"é¦ĸåħĪè¦ģ\":108443,\"æĸĩåĮĸåĴĮ\":108444,\"éĥ½å·²ç»ı\":108445,\"ä¸Ĭä¸ĸçºª\":108446,\"åĨľåľº\":108447,\"å¤§æī¹\":108448,\"æĺİçĻ½äºĨ\":108449,\"çļĦæĪĲéķ¿\":108450,\"çļĦæ¯ĶèµĽ\":108451,\"å¤±è¯¯\":108452,\"åģļæĪĲ\":108453,\"ä»Ĭå¤©å°ıç¼ĸ\":108454,\"é¢Ĩè¢ĸ\":108455,\"æıĲåįĩäºĨ\":108456,\"å¾Ĳå·ŀ\":108457,\"ä»įæľī\":108458,\"è¿ĩæ»¤\":108459,\"å¹½é»ĺ\":108460,\"çĥŃéĩı\":108461,\"ä¸Ģé¦ĸ\":108462,\"æ¼Ĥäº®çļĦ\":108463,\"åĩłç§į\":108464,\"åĢ¡è®®\":108465,\"å°±åı¯ä»¥äºĨ\":108466,\"æİĴåĪĹ\":108467,\"éĩįéĩį\":108468,\"ä¼ģä¸ļåĴĮ\":108469,\"ä¸ĵå±ŀ\":108470,\"çħİ\":108471,\"äº²æĪļ\":108472,\"çĻ¾åĪĨä¹ĭ\":108473,\"ç¨¿ä»¶\":108474,\"è¿ĺå¾Ĺ\":108475,\"äººåĵ¡\":108476,\"äºīå¤º\":108477,\"æĽ´å®¹æĺĵ\":108478,\"å¤§èĩªçĦ¶\":108479,\"éĽ»èħ¦\":108480,\"å¤ªç©º\":108481,\"åľ°å¤Ħ\":108482,\"å¤¢\":108483,\"ä»ĸå¯¹\":108484,\"å¿ħå°Ĩ\":108485,\"ä¸įå½ĵ\":108486,\"ä¸¥è°¨\":108487,\"åĩºåľº\":108488,\"å·²ç»ıæľī\":108489,\"é¢ĨåĨĽ\":108490,\"é«ĺæ¡£\":108491,\"ä¸ĢæīĢ\":108492,\"æłĹ\":108493,\"è®©åŃ¦çĶŁ\":108494,\"æĽ¹æĵį\":108495,\"æŁĲä¸Ģ\":108496,\"ä¼¸åĩº\":108497,\"èĬ±åįī\":108498,\"æ¸ħéĨĴ\":108499,\"èģĶç³»æĸ¹å¼ı\":108500,\"åĪĨå±Ģ\":108501,\"èħ³\":108502,\"æ©¡èĥ¶\":108503,\"éķ¿å¾Ĺ\":108504,\"ç»¿åľ°\":108505,\"è¢į\":108506,\"çļĦèīºæľ¯\":108507,\"å¥³æľĭåıĭ\":108508,\"ä¸Ńè¶ħ\":108509,\"ç¦»åŃĲ\":108510,\"å¤ļæł·åĮĸ\":108511,\"éĺ³åı°\":108512,\"ä½İç¢³\":108513,\"ä¸Ģç±»\":108514,\"çŃīæĸ¹éĿ¢çļĦ\":108515,\"å¾Ĺå¥½\":108516,\"æ¨¡åħ·\":108517,\"ä¸ĩäº¿\":108518,\"çķĻæĦı\":108519,\"ä¸´æ²Ĥ\":108520,\"å°ĳéĩı\":108521,\"çľĭåĲĳ\":108522,\"ç»ıèĲ¥èĢħ\":108523,\"çķĻä¸ĭäºĨ\":108524,\"åĿıäºĨ\":108525,\"åĳĬåĪ«\":108526,\"çľŁçĲĨ\":108527,\"ç¼´è´¹\":108528,\"æĬĬä½ł\":108529,\"çļĦä»»åĬ¡\":108530,\"æĪĳå¯¹\":108531,\"ä¹°åħ¥\":108532,\"çĻ»ä¸Ĭ\":108533,\"æľīä¸¤ä¸ª\":108534,\"ä¸Ģå¤´\":108535,\"æĵįæİ§\":108536,\"åħ¨è¦ĨçĽĸ\":108537,\"çĿĢæīĭ\":108538,\"å¢ĻéĿ¢\":108539,\"å¤ļæĸ¹\":108540,\"åı¯çĪ±çļĦ\":108541,\"ä¹Łåı¯èĥ½\":108542,\"æľĢæľī\":108543,\"è¿ĻäºĽéĥ½æĺ¯\":108544,\"æĥ¡\":108545,\"å®®\":108546,\"å¾Īå°ı\":108547,\"éĹ®é¢ĺæĺ¯\":108548,\"åĿĩæľī\":108549,\"å¾ģéĽĨ\":108550,\"è¯´åĩº\":108551,\"æľīæĦı\":108552,\"é¢Ĥ\":108553,\"æī¬å·ŀ\":108554,\"åķĨä¸ļæ¨¡å¼ı\":108555,\"çĶŁèĤĸ\":108556,\"æįĲæ¬¾\":108557,\"å²Ĥ\":108558,\"ç¾İæĻ¯\":108559,\"è¿ĺçľŁ\":108560,\"æĭ¥æĬ±\":108561,\"èº«ä½ĵåģ¥åº·\":108562,\"æ·±å¤Ħ\":108563,\"çľ¼ç¥ŀ\":108564,\"çļĦå½¢è±¡\":108565,\"ä¼ĺè¶Ĭ\":108566,\"å½ĵæĪĲ\":108567,\"åĮºåĪĨ\":108568,\"åİ»éĻ¤\":108569,\"æ³¨å®ļ\":108570,\"å§Ĳå¦¹\":108571,\"åĮºåĨħ\":108572,\"é©ļ\":108573,\"æļĹç¤º\":108574,\"æĺİäº®\":108575,\"æħ°éĹ®\":108576,\"å¸Ĥåľºä»½é¢Ŀ\":108577,\"çĮªèĤī\":108578,\"çļĦèµĦéĩĳ\":108579,\"åİĨç»ı\":108580,\"å§ĭç»ĪåĿļæĮģ\":108581,\"çĶŁæľº\":108582,\"ä¸įé¡¾\":108583,\"éĩĳåĪļ\":108584,\"å¤§å£°\":108585,\"éĻķè¥¿çľģ\":108586,\"é²į\":108587,\"åĨľä¸ļåĨľæĿĳ\":108588,\"æľīå®³\":108589,\"éĹ¨è¯Ĭ\":108590,\"æ¯ıä¸Ģæ¬¡\":108591,\"çļĦåĽłç´ł\":108592,\"é¢Ŀå¤ĸ\":108593,\"åİ¿çº§\":108594,\"çļĩåĲİ\":108595,\"åĽ½ä¼ģ\":108596,\"é¦ĸéĢī\":108597,\"ç¼ĸåĨĻ\":108598,\"æĭ¿èµ·\":108599,\"åģ·åģ·\":108600,\"ä¸İä¸ŃåĽ½\":108601,\"åįĸå®¶\":108602,\"ç»Ļä»ĸä»¬\":108603,\"ç¥ŀè¯Ŀ\":108604,\"åŃ¸æł¡\":108605,\"æĪĳä¸ĢçĽ´\":108606,\"çŁ¥éģĵäºĨ\":108607,\"åįĴ\":108608,\"åĴĮåľ°åĮº\":108609,\"ä»Ģä¹Īéĥ½\":108610,\"çĶ»å®¶\":108611,\"æľ¬çĿĢ\":108612,\"ä½ĻåĲį\":108613,\"å®¡çĲĨ\":108614,\"ä¸ĢåĲĳ\":108615,\"åıĳå±ķè¶ĭåĬ¿\":108616,\"åĮºéĹ´\":108617,\"æ³¨åĨĮèµĦæľ¬\":108618,\"çĲ¦\":108619,\"ä¸įåı¯ä»¥\":108620,\"çļĦåĦ¿åŃĲ\":108621,\"åĢ¼çıŃ\":108622,\"ä¸¥æł¼çļĦ\":108623,\"å®ŀä½ĵç»ıæµİ\":108624,\"æľīæĿĥ\":108625,\"æĪĳåıĪ\":108626,\"éĵ¶æ²³\":108627,\"ç«ĭé©¬\":108628,\"æĿĢäºĨ\":108629,\"åĮħå®¹\":108630,\"ç®¡å®¶\":108631,\"èº«é«Ķ\":108632,\"éĵħ\":108633,\"å°ıåŃĲ\":108634,\"ç®¡çĲĨç³»ç»Ł\":108635,\"æľīçļĦäºº\":108636,\"é£İçĶµ\":108637,\"æĻºèĥ½åĪ¶éĢł\":108638,\"ç²¾ç¡®\":108639,\"æĭĽåķĨå¼ķ\":108640,\"æĭĽåķĨå¼ķèµĦ\":108641,\"äºĮæīĭè½¦\":108642,\"åİ¿å§Ķ\":108643,\"èīºäºº\":108644,\"å¥ķ\":108645,\"è¿İæĿ¥äºĨ\":108646,\"ç»ĵæĿŁäºĨ\":108647,\"çļĦä¼łç»Ł\":108648,\"æĭ¼æĲı\":108649,\"å¥¥è¿ª\":108650,\"çĸĳæĥĳ\":108651,\"ä¹ĭæĹ¥èµ·\":108652,\"æłĩå¿ĹçĿĢ\":108653,\"åľ°åįĢ\":108654,\"è¯łéĩĬ\":108655,\"åĪ°æľŁ\":108656,\"åħ¨éĥ½\":108657,\"çŁŃæļĤ\":108658,\"æĺ¯æĪĳåĽ½\":108659,\"æĪĳå·²ç»ı\":108660,\"æ»´æ»´\":108661,\"å¤©èµĭ\":108662,\"å¯¹å¥¹\":108663,\"åį«çĶŁéĹ´\":108664,\"çĶŁäº§åŁºåľ°\":108665,\"æĹ¥è®°\":108666,\"çļĦæķĻåŃ¦\":108667,\"åĵĩ\":108668,\"æ°ĳäºĭ\":108669,\"è¿ĺåİŁ\":108670,\"æīĭä¸ŃçļĦ\":108671,\"çļĦèī¯å¥½\":108672,\"æ·«\":108673,\"ä¸Ńåħ±ä¸Ńå¤®\":108674,\"åĪĥ\":108675,\"åĵĦ\":108676,\"åľ¨ä»ĸçļĦ\":108677,\"å°Īæ¥Ń\":108678,\"åľºéĿ¢\":108679,\"éĤ»å±ħ\":108680,\"çĹĴ\":108681,\"å¦Ħ\":108682,\"å¤ĸç§ĳ\":108683,\"ä¸įéĢĤ\":108684,\"ä¸¾åĬŀçļĦ\":108685,\"éĤ¹\":108686,\"åħļçļĦå»ºè®¾\":108687,\"çĻ¼è¡¨\":108688,\"è·¨çķĮ\":108689,\"æ²īæ·Ģ\":108690,\"å¤§çīĩ\":108691,\"è¶Ĭé«ĺ\":108692,\"å°Ĩæĺ¯\":108693,\"è§īéĨĴ\":108694,\"åĤ¨åŃĺ\":108695,\"å¢ŀå¤§\":108696,\"ä¸įè®©\":108697,\"æķ´å½¢\":108698,\"å¹³åı°ä¸Ĭ\":108699,\"åĩłä½į\":108700,\"è¯īæ±Ĥ\":108701,\"å¥½ä¸įå¥½\":108702,\"åľį\":108703,\"æĸĩæľ¬\":108704,\"éĢ²åħ¥\":108705,\"ç´į\":108706,\"æł¹æĵļ\":108707,\"èįīæ¡Ī\":108708,\"åħŃä¸ª\":108709,\"åĭ¿\":108710,\"åĪ¶æĪĲ\":108711,\"é¥®æ°´\":108712,\"æ°¸æģĴ\":108713,\"èĩªæĿĢ\":108714,\"åı¸é©¬\":108715,\"éļ¾çĤ¹\":108716,\"ä¸ºæĪĳä»¬\":108717,\"å¼§\":108718,\"åī©ä¸ĭçļĦ\":108719,\"åĩĨå¤ĩå¥½\":108720,\"çļĦæľĢä½³\":108721,\"èģĶåĲĪä¼ļ\":108722,\"æĤ£èĢħçļĦ\":108723,\"æĪĳä¸įçŁ¥éģĵ\":108724,\"ä¸ĭä¸Ģä¸ª\":108725,\"åıĳå±ķæĸ¹åĲĳ\":108726,\"ç¬¨\":108727,\"æīĢä»¥æĪĳä»¬\":108728,\"åĨĻäºĨ\":108729,\"éĢłæĪĲäºĨ\":108730,\"æ²Ļæ¼ł\":108731,\"çŃĽéĢī\":108732,\"çģ¾åĮº\":108733,\"ä¸Ĭçľĭ\":108734,\"éħ¶\":108735,\"æ»ļåĬ¨\":108736,\"éļ¾åħį\":108737,\"åĲīåĪ©\":108738,\"ä¸Ģä¸Ģ\":108739,\"ç²¾å¯Ĩ\":108740,\"ä¼¸æīĭ\":108741,\"ç¤¼ä»ª\":108742,\"åħ¨æĺ¯\":108743,\"è¶Ĭå¤§\":108744,\"ä¸Ńæłĩ\":108745,\"åıĸåĨ³\":108746,\"åıĸåĨ³äºİ\":108747,\"éĢĶä¸Ń\":108748,\"è®¨åİĮ\":108749,\"æīĭåĨĮ\":108750,\"ç¬¬ä¹Ŀ\":108751,\"åŃĶåŃĲ\":108752,\"çĦ¶å¾Į\":108753,\"ä¸Ģåħ±\":108754,\"æµ·æĬ¥\":108755,\"æ¬¾å¼ı\":108756,\"æķ´å¤©\":108757,\"è¾¹çķĮ\":108758,\"è·¯è¾¹\":108759,\"æĻĭçº§\":108760,\"åĲĲæ§½\":108761,\"çļĦåħ³æ³¨\":108762,\"æĪĳæ²¡æľī\":108763,\"å°±æĺ¯åľ¨\":108764,\"çĽ®çļĦæĺ¯\":108765,\"åį³ä½¿æĺ¯\":108766,\"é¡¶å°ĸ\":108767,\"å·²ç»ıåľ¨\":108768,\"å®īåħ¨éļĲæĤ£\":108769,\"æłĩæĿĨ\":108770,\"åįĹéĢļ\":108771,\"ä¼ļå¯¹\":108772,\"åº§ä½į\":108773,\"èµ¢å¾ĹäºĨ\":108774,\"åİŁæĿ¥çļĦ\":108775,\"èº«ä¸º\":108776,\"ä¹¦åºĹ\":108777,\"è¢Ńåĩ»\":108778,\"ä»ĬæĻļ\":108779,\"ä»¥èī²\":108780,\"ä»¥èī²åĪĹ\":108781,\"æĬĸéŁ³\":108782,\"åį´æ²¡æľī\":108783,\"ä¸§å¤±\":108784,\"çļĦå±ĢéĿ¢\":108785,\"åįģåĽĽäºĶ\":108786,\"çŃīçĽ¸åħ³\":108787,\"æ±ĩæĢ»\":108788,\"å¤ĸè¡¨\":108789,\"ä¸ºæ°ĳ\":108790,\"éľĩæĥĬ\":108791,\"å¥Ĺè·¯\":108792,\"çĬ¯ç½ªå«Įçĸĳ\":108793,\"å°Ĩä»¥\":108794,\"çİĩé¢Ĩ\":108795,\"éħĴåĲ§\":108796,\"è¡Įä¸ļåıĳå±ķ\":108797,\"å¹´èĩ³\":108798,\"åĻ¨æĿĲ\":108799,\"åĴĮæĬĢæľ¯\":108800,\"æľĢå°ı\":108801,\"è¿Ļä¸ĢåĪĩ\":108802,\"èģĮç§°\":108803,\"å½ĵä½ľ\":108804,\"æİĢèµ·\":108805,\"åĴĭ\":108806,\"ä¸Ńéĥ¨\":108807,\"æīĭèĩĤ\":108808,\"ç½¢äºĨ\":108809,\"åª³å¦ĩ\":108810,\"æ´½è°Ī\":108811,\"æĹ¶ä»£ä¸ŃåĽ½\":108812,\"äººçĶŁçļĦ\":108813,\"æŀģéĻĲ\":108814,\"ç¦Ħ\":108815,\"åĮºæĶ¿åºľ\":108816,\"æľ¬éĴ±\":108817,\"ç¤¼åĵģ\":108818,\"çļĦéĤ£ä¸ª\":108819,\"ä¾¦æŁ¥\":108820,\"å¤ªå¤ļçļĦ\":108821,\"å®ŀæĸ½æĸ¹æ¡Ī\":108822,\"é«ĺæłĩåĩĨ\":108823,\"æĮĩæĮ¥éĥ¨\":108824,\"åĢ¾æĸľ\":108825,\"çī¹èī²ç¤¾ä¼ļ\":108826,\"çµĲæŀľ\":108827,\"éĴ»çŁ³\":108828,\"ç§»æ¤į\":108829,\"çī¹ç§į\":108830,\"èĩªæĦ¿\":108831,\"æĭľçĻ»\":108832,\"åįķèº«\":108833,\"åį´åıĪ\":108834,\"åĪ¥äºº\":108835,\"åĲĪè§Ħ\":108836,\"æľºçĶµ\":108837,\"çī¹æĦı\":108838,\"å½ĵåīįä½įç½®\":108839,\"ä¹°å®¶\":108840,\"åĲĪçº¦\":108841,\"èĤ©èĨĢ\":108842,\"ä¸ºåĩĨ\":108843,\"å®¶è£ħ\":108844,\"çļĦçĥŃæĥħ\":108845,\"éĿŀéģĹ\":108846,\"çļĦéŃħåĬĽ\":108847,\"åİŁåĳĬ\":108848,\"ç¤¾ä¼ļåĲĦçķĮ\":108849,\"ä¹°çļĦ\":108850,\"å¤ļåĲĥ\":108851,\"éĽķå¡ĳ\":108852,\"èµ·ä¹ī\":108853,\"åĬłåī§\":108854,\"éĤ£ä¸ĢåĪ»\":108855,\"å°Ĩè¿Ľä¸ĢæŃ¥\":108856,\"æ¡ĤæŀĹ\":108857,\"æĽ´å¼º\":108858,\"å¯¹ä¼ģä¸ļ\":108859,\"æĹłæĦı\":108860,\"ä¹łè¿ĳå¹³æĸ°\":108861,\"æµģå¤±\":108862,\"å¾®è½¯\":108863,\"çĽ¸å¯¹äºİ\":108864,\"åº§è°Īä¼ļ\":108865,\"ä¸»èĲ¥ä¸ļ\":108866,\"ä¸»èĲ¥ä¸ļåĬ¡\":108867,\"ç§ģåĭŁ\":108868,\"å±ķç¤ºäºĨ\":108869,\"å¸¸æĢģåĮĸ\":108870,\"è²´\":108871,\"ç¬¦åı·\":108872,\"å¹´è½»çļĦ\":108873,\"å°±éľĢè¦ģ\":108874,\"ä¹ŁæĽ¾\":108875,\"çļĦæĥħç»ª\":108876,\"è¾¾æłĩ\":108877,\"èĩ¨\":108878,\"ä½įå±ħ\":108879,\"ä»ħä¸º\":108880,\"é¦ĸå®¶\":108881,\"éĺ´éĺ³\":108882,\"ä¸įåĨįæĺ¯\":108883,\"åĽłä¸ºå®ĥ\":108884,\"ä¼ģä¸ļåľ¨\":108885,\"çĺ¾\":108886,\"åĲ¬è§ģ\":108887,\"åİŁæľī\":108888,\"åĪ¶è£ģ\":108889,\"å¯Ĥå¯ŀ\":108890,\"éĢļè¿ĩå¯¹\":108891,\"æ»ĳéĽª\":108892,\"è¿Ļå¼ł\":108893,\"çļĦçĲĨè§£\":108894,\"æĸ°ä¸ŃåĽ½\":108895,\"è¿ĻåĦ¿\":108896,\"ä½İä»·\":108897,\"æĥ³è¿ĩ\":108898,\"çļĦä¿¡å¿ĥ\":108899,\"å»ºçŃĳçī©\":108900,\"çļĦé¢ľèī²\":108901,\"ä¸įåºĶè¯¥\":108902,\"æĹłçĸĳæĺ¯\":108903,\"å¼ķèµ·äºĨ\":108904,\"åħ¨åĳĺ\":108905,\"æĿ°åĩº\":108906,\"è¿Ļæĺ¯æĪĳ\":108907,\"èª°\":108908,\"èĺĩ\":108909,\"éĺµåľ°\":108910,\"åħħåĢ¼\":108911,\"çŁ¿ä¸ļ\":108912,\"çĿĢä»ĸ\":108913,\"ä¿¡è®¿\":108914,\"ä¸ĩè¾¾\":108915,\"æĳ©æĵ¦\":108916,\"å¼Ģç«¯\":108917,\"èı²å¾ĭ\":108918,\"èı²å¾ĭå®¾\":108919,\"è½¦åŃĲ\":108920,\"æľ¬èº«çļĦ\":108921,\"çģ«è½¦ç«Ļ\":108922,\"å¸¸å·ŀ\":108923,\"ä¸ºä»£è¡¨\":108924,\"ä¸ºä»£è¡¨çļĦ\":108925,\"å¹¿çĶµ\":108926,\"äº²äºº\":108927,\"åı³æīĭ\":108928,\"éĽĨè£ħ\":108929,\"éĽĨè£ħç®±\":108930,\"çļĦåį°è±¡\":108931,\"æ©Łæľĥ\":108932,\"åĮĨåĮĨ\":108933,\"åħīçĶµ\":108934,\"å¤§æĸ¹\":108935,\"è¿ĺæľª\":108936,\"åĪ©å¥½\":108937,\"ç»Ŀå¤§å¤ļæķ°\":108938,\"åľ¨è¿Ļç§į\":108939,\"ä¸Ģç»Ħ\":108940,\"æĸ°èĤ¡\":108941,\"è½¬åıĳ\":108942,\"æ³ķåºŃ\":108943,\"æĹłæīĢ\":108944,\"éģĵè·¯ä¸Ĭ\":108945,\"çŁ¿å±±\":108946,\"èĳī\":108947,\"æĶ¶åĽŀ\":108948,\"ç§°ä¹ĭ\":108949,\"ç§°ä¹ĭä¸º\":108950,\"æıŃéľ²\":108951,\"åı£å²¸\":108952,\"åĲ¼\":108953,\"å¿ĥæĥ³\":108954,\"çļĦæ¢¦æĥ³\":108955,\"éĽ¯\":108956,\"ä¹ĭåĪĿ\":108957,\"å¥ĸé¡¹\":108958,\"è®¢éĺħ\":108959,\"èĵĿå¤©\":108960,\"åĿ¦åħĭ\":108961,\"ç«ĭæ¡Ī\":108962,\"èģĶæīĭ\":108963,\"ä½Ĩæĺ¯æĪĳ\":108964,\"å¸®æĪĳ\":108965,\"ä»ħä»£è¡¨\":108966,\"è¯´æĪĳ\":108967,\"çļĦè¶ĭåĬ¿\":108968,\"æ¯Ķè¾ĥå¤§\":108969,\"èµ°å»Ĭ\":108970,\"éĩįçĤ¹é¡¹çĽ®\":108971,\"èµĮåľº\":108972,\"åĲįçīĩ\":108973,\"æĦŁåı¹\":108974,\"åľ¨åľ°ä¸Ĭ\":108975,\"åıĳçĥŃ\":108976,\"èĮĥçķ´\":108977,\"çļĦéģĵè·¯\":108978,\"éĩĳèī²\":108979,\"ä»ĸåıĪ\":108980,\"ä¼ļäº§çĶŁ\":108981,\"æ°ĳåĽ½\":108982,\"å®ĺæĸ¹ç½ĳç«Ļ\":108983,\"æĶ¶çĽĬçİĩ\":108984,\"çļĦåĪ°æĿ¥\":108985,\"çļĦåĬŀæ³ķ\":108986,\"æĶ¹åĪ¶\":108987,\"ä¸ĩç§ĳ\":108988,\"ä¸įäºĪ\":108989,\"è¿ĻäºĽéĹ®é¢ĺ\":108990,\"çĪ±ä¸Ĭ\":108991,\"çĲĥåľº\":108992,\"è´£ä»¤\":108993,\"æİĪè¯¾\":108994,\"åľ¨é¦Ļæ¸¯\":108995,\"ç»Ĩèħ»\":108996,\"å¤ļä¸ĩ\":108997,\"åĲĮå¹´\":108998,\"å¤§ä½¿\":108999,\"æĸĭ\":109000,\"ä¹Łä¸º\":109001,\"æĥłå·ŀ\":109002,\"åĲīç¥¥\":109003,\"çĶ°åĽŃ\":109004,\"åĽ½å®¶éĺŁ\":109005,\"éĩįçĶŁ\":109006,\"åľ¨åħ¶\":109007,\"é¦Ļåĳ³\":109008,\"è´Łèį·\":109009,\"äº²åĪĩ\":109010,\"èĩªè±ª\":109011,\"æ²¡éĶĻ\":109012,\"åĽłä¸ºåľ¨\":109013,\"æĺŁæĺŁ\":109014,\"éĤĳ\":109015,\"è¿ĺæľīå¾Īå¤ļ\":109016,\"æĳ©æīĺ\":109017,\"æĳ©æīĺè½¦\":109018,\"æŃ¥è¡Į\":109019,\"ç®¡çĲĨä½ĵç³»\":109020,\"èĦļä¸ĭ\":109021,\"éģİåİ»\":109022,\"æ±īè¯Ń\":109023,\"å¯¹ä¸įèµ·\":109024,\"çļĦç»ıåİĨ\":109025,\"åıĬçĽ¸åħ³\":109026,\"ä¸įå°ĳäºº\":109027,\"éĩįç£ħ\":109028,\"åĬ³åĬ¨èĢħ\":109029,\"å¤§åĬĽåıĳå±ķ\":109030,\"æĢİä¹Īåģļ\":109031,\"çĭĹçĭĹ\":109032,\"ä¸ľåįĹäºļ\":109033,\"åĭĩäºİ\":109034,\"åħ¬éĸĭ\":109035,\"çĵ·çłĸ\":109036,\"åıĤçħ§\":109037,\"å¹¿æĴŃçĶµè§Ĩ\":109038,\"ä¸¾åĬ¨\":109039,\"æ±Łè¥¿çľģ\":109040,\"æķĪèĥ½\":109041,\"åĶ¯æľī\":109042,\"éĿ¢è²Į\":109043,\"èĩªåĬ¨é©¾é©¶\":109044,\"æ¦ľåįķ\":109045,\"å½ĵæĪĳä»¬\":109046,\"ä»²è£ģ\":109047,\"æľ¨æĿĲ\":109048,\"ç±³åħ°\":109049,\"çĻ½éĵ¶\":109050,\"çļĦäººéĥ½\":109051,\"å°±åĥıæĺ¯\":109052,\"æŃ¥åħ¥\":109053,\"åįłçĶ¨\":109054,\"åĩ»è´¥\":109055,\"è®©å¤§å®¶\":109056,\"ä¼ļè®©ä½ł\":109057,\"åİ¿æĶ¿åºľ\":109058,\"è¦ģçĶ¨\":109059,\"çŃīå½¢å¼ı\":109060,\"åįĩé«ĺ\":109061,\"è´£ä»»æĦŁ\":109062,\"å¤ĩçĶ¨\":109063,\"ä»ĸè®¤ä¸º\":109064,\"æ¸ħåįİå¤§åŃ¦\":109065,\"ä»ĸèĩªå·±\":109066,\"éĸ±è®Ģ\":109067,\"å¤ªå¹³æ´ĭ\":109068,\"éĶģå®ļ\":109069,\"çŃĨ\":109070,\"è¿Ļçīĩ\":109071,\"æī§æĶ¿\":109072,\"è¿ĶåĽŀæĲľçĭĲ\":109073,\"å°±æŃ¤\":109074,\"éģĩåĪ°äºĨ\":109075,\"å¼Ģå¹ķå¼ı\":109076,\"ç®¡çĲĨéĥ¨éĹ¨\":109077,\"å§¿åĬ¿\":109078,\"è®¾æĥ³\":109079,\"åĽĽåŃ£\":109080,\"æĬĢæľ¯äººåĳĺ\":109081,\"å·®çĤ¹\":109082,\"è¾ŀèģĮ\":109083,\"èĢģå¸«\":109084,\"çļĦæĦŁåıĹ\":109085,\"ä¹ŁéĿŀå¸¸\":109086,\"å¹´ä¸ĬåįĬå¹´\":109087,\"æĢªçī©\":109088,\"èĮĥæĸĩ\":109089,\"æĪĺå½¹\":109090,\"åĲ«ä¹ī\":109091,\"åħ¨è¿ĩç¨ĭ\":109092,\"èĢĮéĿŀ\":109093,\"éĢļè®¯åĳĺ\":109094,\"è¿Ļæł·æīįèĥ½\":109095,\"æľºç»Ħ\":109096,\"è£ı\":109097,\"çķ¶çĦ¶\":109098,\"èµĮåįļ\":109099,\"åĲĦæľī\":109100,\"å·¥ä½ľæľºåĪ¶\":109101,\"äºĭåĲİ\":109102,\"åī§éĻ¢\":109103,\"å±ĬæĹ¶\":109104,\"åĺ´éĩĮ\":109105,\"ä¸»çº¿\":109106,\"ä¸ĢåľĪ\":109107,\"ä¸»è¦ģåİŁåĽł\":109108,\"å°¸ä½ĵ\":109109,\"åĮ»çĸĹåĻ¨æ¢°\":109110,\"ä½łæĢİä¹Ī\":109111,\"ä½ĨçĶ±äºİ\":109112,\"æĹ¶ç©º\":109113,\"çĶ·æľĭåıĭ\":109114,\"çĶľèľľ\":109115,\"é«ĺåľ°\":109116,\"æĻĸ\":109117,\"èĴĲéĽĨ\":109118,\"åĩĿèģļåĬĽ\":109119,\"å¤ĩåıĹ\":109120,\"æĸĩåĪĽ\":109121,\"é©¬æĿ¥\":109122,\"é©¬æĿ¥è¥¿äºļ\":109123,\"æŁ´æ²¹\":109124,\"ä½¿äºº\":109125,\"æķĻä¼ļ\":109126,\"ç§ĭå¤©\":109127,\"æĺİçıł\":109128,\"åħŃåįģ\":109129,\"çİ¯å¢ĥä¸Ń\":109130,\"æ¸ħæĻ¨\":109131,\"ç§¯æŀģåıĤä¸İ\":109132,\"å·ħå³°\":109133,\"ä¸ºæľŁ\":109134,\"çŃ¾åŃĹ\":109135,\"æĦŁæ¿Ģ\":109136,\"ç§ĭåŃ£\":109137,\"æĿĳåŃĲ\":109138,\"æ¢ħè¥¿\":109139,\"æļ´éĽ¨\":109140,\"çĶŁæ´»åľ¨\":109141,\"çªĹæĪ·\":109142,\"æģ¶åĬ£\":109143,\"çº¯ç²¹\":109144,\"åľ¨æİ¥åıĹ\":109145,\"æ²¡èĥ½\":109146,\"è¡Įäºº\":109147,\"åĭº\":109148,\"æĭ¨æīĵ\":109149,\"ä½ľåĩºäºĨ\":109150,\"çļĦä¸»é¢ĺ\":109151,\"æľªä¾Ĩ\":109152,\"ä¸ŃæľĢ\":109153,\"æ¾ľ\":109154,\"é«ĺè¡Ģåİĭ\":109155,\"åħ´èµ·\":109156,\"æŃ£èĥ½éĩı\":109157,\"åŁ¹è®ŃçıŃ\":109158,\"æİ¥åħ¥\":109159,\"çĦ¶åĲİåĨį\":109160,\"åŃ¦çĶŁä»¬\":109161,\"é¢ĨåħĪçļĦ\":109162,\"çģ«çĥŃ\":109163,\"ä¸ĵèģĮ\":109164,\"æĪĸèĢħè¯´\":109165,\"å»ºè¨Ń\":109166,\"é»ı\":109167,\"å¯¹åħ¬åı¸\":109168,\"çī¹æľīçļĦ\":109169,\"åħīèį£\":109170,\"å½ĵåľº\":109171,\"éĿ¢åŃĲ\":109172,\"èµĦäº§ç®¡çĲĨ\":109173,\"æĹ¶æľŁçļĦ\":109174,\"çŀİ\":109175,\"åįİä¸ľ\":109176,\"åıĪä¸Ģæ¬¡\":109177,\"èĥİåĦ¿\":109178,\"å®ļçĤ¹\":109179,\"å¤´çĹĽ\":109180,\"æ¶²ä½ĵ\":109181,\"æĺ¯ä¸Ģä½į\":109182,\"å¸½åŃĲ\":109183,\"å¹´èµ·\":109184,\"ä¸įä½İäºİ\":109185,\"è¾ĥå°ĳ\":109186,\"éĿ¢ä¸´çĿĢ\":109187,\"å±Ĥå±Ĥ\":109188,\"èĿ´èĿ¶\":109189,\"èī°èĭ¦\":109190,\"éĺ¿æł¹\":109191,\"éĺ¿æł¹å»·\":109192,\"æ¦Ĥæĭ¬\":109193,\"è¯·éĹ®\":109194,\"èµ·åºĬ\":109195,\"å±Ģå±Ģéķ¿\":109196,\"ç¨³åģ¥\":109197,\"å¦ĤæŀľæĪĳä»¬\":109198,\"éħĴç²¾\":109199,\"æĪ·åı£\":109200,\"æĦŁæĤŁ\":109201,\"æĪĳä»¬éľĢè¦ģ\":109202,\"æĬĢèīº\":109203,\"èĩªåªĴä½ĵ\":109204,\"è¿ĽåĮĸ\":109205,\"æ¿ĢçĥĪçļĦ\":109206,\"ä½ĵæ¸©\":109207,\"èļķ\":109208,\"èĩ´è¾ŀ\":109209,\"å®ªæ³ķ\":109210,\"ä¸ĢçŃīå¥ĸ\":109211,\"çĵ¶é¢Ī\":109212,\"æĥłæ°ĳ\":109213,\"èµ°è·¯\":109214,\"çİ°ä»»\":109215,\"åķĨéĩı\":109216,\"ä¸ĭè½¦\":109217,\"åĪł\":109218,\"è²¬ä»»\":109219,\"èŀįåĲĪåıĳå±ķ\":109220,\"ç´łæĿĲ\":109221,\"æ²¹ä»·\":109222,\"åģļäºº\":109223,\"çŀª\":109224,\"æĶ¹éĿ©åĪĽæĸ°\":109225,\"çļĦåĮºåĪ«\":109226,\"è·¨å¢ĥçĶµåķĨ\":109227,\"æ¶īåıĬåĪ°\":109228,\"æīĺç®¡\":109229,\"æĪĳè¿ĺæĺ¯\":109230,\"åĿĲæłĩ\":109231,\"ç½ĳè®¯\":109232,\"å½ĵåľ°çļĦ\":109233,\"è¿½æº¯\":109234,\"åľŁèĢ³\":109235,\"åľŁèĢ³åħ¶\":109236,\"åºķä¸ĭ\":109237,\"åĩłåįģå¹´\":109238,\"ç©¿è¿ĩ\":109239,\"çĶŁæĢģæĸĩæĺİ\":109240,\"æİ¨èĸ\":109241,\"æİ¨èĸ¦\":109242,\"éłĨ\":109243,\"åĴ³åĹ½\":109244,\"åĪĨæĪĲ\":109245,\"çĹķè¿¹\":109246,\"æĪ·ç±į\":109247,\"éĥ½ä¸įèĥ½\":109248,\"æĻļä¼ļ\":109249,\"åĢ©\":109250,\"ä½ĵåĬĽ\":109251,\"è¿Ļä¸ªèģĮä¸ļ\":109252,\"æĹłå½¢\":109253,\"åıªæĥ³\":109254,\"è¿Ľåıĸ\":109255,\"æĿĢæŃ»\":109256,\"èĦĬ\":109257,\"äºĳåįĹçľģ\":109258,\"æľªçŁ¥\":109259,\"ç¾İèģĶ\":109260,\"ç¾İèģĶåĤ¨\":109261,\"å¤ĸå½¢\":109262,\"è¯±æĥĳ\":109263,\"çĽ£\":109264,\"è¡Įä½¿\":109265,\"åłĨç§¯\":109266,\"çĨŁç»ĥ\":109267,\"éĺĲè¿°\":109268,\"æľĢå¤§éĻĲåº¦\":109269,\"å·¡æŁ¥\":109270,\"å¤ºåĨł\":109271,\"ä¼ģä¸ļæĸĩåĮĸ\":109272,\"çĭ®åŃĲ\":109273,\"ä¿Ŀå®Ī\":109274,\"ä¸ºæł¸å¿ĥçļĦ\":109275,\"æī©æķ£\":109276,\"åĪ¶éĢłåķĨ\":109277,\"æŁĶè½¯\":109278,\"ä¸ºä¸Ģä½ĵçļĦ\":109279,\"æ¸¸çİ©\":109280,\"çĶŁçĹħ\":109281,\"å¹«åĬ©\":109282,\"åĶ±æŃĮ\":109283,\"æīįåı¯ä»¥\":109284,\"å®½æĿ¾\":109285,\"è¦ģæ¯Ķ\":109286,\"æĺ¯æĢİæł·\":109287,\"çģ°èī²\":109288,\"çİĭåĽ½\":109289,\"æĲħæĭĮ\":109290,\"è®¡éĩı\":109291,\"åĳ¨åĽ´çļĦ\":109292,\"æĻºèĥ½æīĭæľº\":109293,\"å¸¸åĬ¡\":109294,\"å¸¸åĬ¡åī¯\":109295,\"é©´\":109296,\"å°Ĩè¿ĳ\":109297,\"å¯»å¸¸\":109298,\"ä¸ŃåĽ½å¸Ĥåľº\":109299,\"å®¹åĻ¨\":109300,\"å±±ä¸Ĭ\":109301,\"èĥĮåĲİçļĦ\":109302,\"äº²å¯Ĩ\":109303,\"æīĢä»¥è¯´\":109304,\"éİ®\":109305,\"çļĦçĲĨçĶ±\":109306,\"å¤§åŁİå¸Ĥ\":109307,\"å¸¸å¹´\":109308,\"æĹħæ¸¸ä¸ļ\":109309,\"å°±æĺ¯è¿Ļæł·\":109310,\"åĨįæĿ¥\":109311,\"é«ĺä½į\":109312,\"åĨħé¥°\":109313,\"æŀĦéĢł\":109314,\"ä¸Ģèµ·æĿ¥\":109315,\"çĶ³è«ĭ\":109316,\"å·²ç»ıå¼Ģå§ĭ\":109317,\"çļĦåĬ¨ä½ľ\":109318,\"è¢«è¿«\":109319,\"éģįå¸ĥ\":109320,\"åīĸæŀĲ\":109321,\"å°ıäºĭ\":109322,\"å¿ĥä¸ŃçļĦ\":109323,\"ä½ĵåĪ¶æĶ¹éĿ©\":109324,\"çļĩå®¶\":109325,\"æķĻåłĤ\":109326,\"åĲĥå®Į\":109327,\"åĽ½æ°ĳåħļ\":109328,\"æĺİç¡®äºĨ\":109329,\"åıĳå±ķè§ĦåĪĴ\":109330,\"ç¬¬ä¸ĢæŃ¥\":109331,\"å¾Ĺèµ·\":109332,\"åľ¨åĵª\":109333,\"çļĦè·¯ä¸Ĭ\":109334,\"é»Ķ\":109335,\"çķ¶æĻĤ\":109336,\"å¤§åĬĽæĶ¯æĮģ\":109337,\"åıĮéĩį\":109338,\"çŁ¥éģĵèĩªå·±\":109339,\"åĲĪä½ľåįıè®®\":109340,\"æ°ĶåĬ¿\":109341,\"éķ¿æķĪæľºåĪ¶\":109342,\"ç½ķè§ģ\":109343,\"åĽŀæĿ¥äºĨ\":109344,\"ä»ĸä¼ļ\":109345,\"ä¸Ńæĸ°\":109346,\"ä¸Ńæĸ°ç½ĳ\":109347,\"çļĦåķĨåĵģ\":109348,\"èµłéĢģ\":109349,\"æ±ºå®ļ\":109350,\"å¸ĤåľºçĽĳç®¡\":109351,\"çķĻåŃ¦çĶŁ\":109352,\"çĶµåİĭ\":109353,\"äºļé©¬\":109354,\"äºļé©¬éĢĬ\":109355,\"è¿ĺæĺ¯æ¯Ķè¾ĥ\":109356,\"ä¿ĥè¿ĽäºĨ\":109357,\"æµģåħ¥\":109358,\"æĳĦåĥı\":109359,\"æĳĦåĥıå¤´\":109360,\"æıĲåıĬ\":109361,\"åıĳæİĺ\":109362,\"æī¾åĩº\":109363,\"æ¢Ŀä»¶\":109364,\"ç¹¼çºĮ\":109365,\"æĪĳåĸľæ¬¢\":109366,\"å¥İ\":109367,\"æ¦ľæł·\":109368,\"å¼ĢèĬ±\":109369,\"æ²īéĩį\":109370,\"åŁºåĩĨ\":109371,\"ä»ħä»ħæĺ¯\":109372,\"è½¨éģĵäº¤éĢļ\":109373,\"åĶĲå±±\":109374,\"çŃīä¸Ģç³»åĪĹ\":109375,\"ä¸įè¿ĩæĺ¯\":109376,\"åŃĺåľ¨çĿĢ\":109377,\"èĬ±çĶŁ\":109378,\"å¤·\":109379,\"ç»Īç©¶\":109380,\"ä¹Łæĺ¯ä¸Ģä¸ª\":109381,\"åįģåŃĹ\":109382,\"èĸªéħ¬\":109383,\"ä¼¤å¿ĥ\":109384,\"æĺ¥ç§ĭ\":109385,\"åĨ·åį´\":109386,\"ç²¾çģµ\":109387,\"çļĦåľ°åĽ¾\":109388,\"æ¯Ķçī¹\":109389,\"æ¯Ķçī¹å¸ģ\":109390,\"æĢ§åĪ«\":109391,\"ä½Ļä¸ĩåħĥ\":109392,\"ä¸įå¿ĺåĪĿå¿ĥ\":109393,\"å¿ĥçĸ¼\":109394,\"æĽ²çº¿\":109395,\"é«ĺä½İ\":109396,\"è¦ıå®ļ\":109397,\"æĻ¯èī²\":109398,\"è¦ģè¯´\":109399,\"åħ¬åı¸å°Ĩ\":109400,\"æ¶²åİĭ\":109401,\"è¿Ŀçº¦\":109402,\"åİļåº¦\":109403,\"åºŀå¤§çļĦ\":109404,\"è¿ĺæĺ¯å¾Ī\":109405,\"é¦ĸåħĪæĺ¯\":109406,\"çµ²\":109407,\"åĬ¡å®ŀ\":109408,\"ä¸¦ä¸Ķ\":109409,\"å¢ŀè¿Ľ\":109410,\"ç»Ħç»ĩå¼Ģå±ķ\":109411,\"èµ·æĿ¥äºĨ\":109412,\"è¾ĥå°ı\":109413,\"å¯¼æ¸¸\":109414,\"ä¸¤åľ°\":109415,\"ç¿ĺ\":109416,\"çģ¿çĥĤ\":109417,\"é£İéĩĩ\":109418,\"æĶ¯çº¿\":109419,\"æĶ¯çº¿ä»»åĬ¡\":109420,\"å¨±ä¹ĲåľĪ\":109421,\"å¤©æ´¥å¸Ĥ\":109422,\"åĮħåĽ´\":109423,\"æľ¬èµĽåŃ£\":109424,\"éĩįè¦ģè®²è¯Ŀ\":109425,\"åıĮåĲĳ\":109426,\"åįİä¸½\":109427,\"éĶ¤\":109428,\"åĦ¿å¥³\":109429,\"åįĸåĩº\":109430,\"ä¾Ĩèªª\":109431,\"ä»ĭç»įä¸Ģä¸ĭ\":109432,\"åĲ¦è®¤\":109433,\"åĭĿ\":109434,\"æĻ®éĢļäºº\":109435,\"çļĦåĬ¨åĬĽ\":109436,\"æ¶¨åģľ\":109437,\"åŁºéĩĳç®¡çĲĨ\":109438,\"ä¸Ģä¸ªéĩįè¦ģ\":109439,\"è¿Ĳæ²³\":109440,\"çħŀ\":109441,\"è´¢æĶ¿éĥ¨\":109442,\"è¡Įä¸ļåįıä¼ļ\":109443,\"éĥ½å°Ĩ\":109444,\"è¨Ģè®º\":109445,\"ä¸ĭä¾Ĩ\":109446,\"å¢¨è¥¿\":109447,\"å¢¨è¥¿åĵ¥\":109448,\"åĽłä¸ºä»ĸä»¬\":109449,\"æĢİä¹ĪåĽŀäºĭ\":109450,\"åĬłå¤§å¯¹\":109451,\"èĬŃ\":109452,\"çīĮåŃĲ\":109453,\"ä¼ļä½¿\":109454,\"å¦¹åŃĲ\":109455,\"ç«Ļéķ¿\":109456,\"å¿ħå¤ĩ\":109457,\"æłĳæľ¨\":109458,\"æģ¶æĦı\":109459,\"æ²³éģĵ\":109460,\"å¯Įè£ķ\":109461,\"ç¹ģåįİ\":109462,\"ä»£è¡¨åĽ¢\":109463,\"æµĳèº«\":109464,\"é¦ĸä½į\":109465,\"èĪªç©ºåħ¬åı¸\":109466,\"éĽ»å½±\":109467,\"ä¸ĵè¾ĳ\":109468,\"æ°´æºĲ\":109469,\"ä¸Ńæ¯Ĵ\":109470,\"ä¸¦ä¸į\":109471,\"èĢĮåİ»\":109472,\"éĥĿ\":109473,\"äºİæŃ¤\":109474,\"æĸĩåĮĸå»ºè®¾\":109475,\"èĤ¯å®ļä¼ļ\":109476,\"å¸ĮæľĽå¤§å®¶\":109477,\"æııåĨĻ\":109478,\"ä½İè°ĥ\":109479,\"æĸ°åħ´äº§ä¸ļ\":109480,\"æ·Ħåįļ\":109481,\"æĶ¾å¼Ģ\":109482,\"çļĦæĢ§æł¼\":109483,\"çĸ¾çĹħçļĦ\":109484,\"æķ´é¡¿\":109485,\"çº¿ä¸Ĭçº¿ä¸ĭ\":109486,\"éĢīé¡¹\":109487,\"çļĦè®¤åı¯\":109488,\"æķ´é½Ĳ\":109489,\"çĶļä¹Ī\":109490,\"çľģåĨħ\":109491,\"åı¤äºº\":109492,\"æ°ĳä¿Ĺ\":109493,\"çī¡ä¸¹\":109494,\"éĹ¨çªĹ\":109495,\"éĤ£æł·çļĦ\":109496,\"çĽĳäºĭä¼ļ\":109497,\"ç¿¡ç¿ł\":109498,\"ç¦¹\":109499,\"åįĥä¸ĩä¸įè¦ģ\":109500,\"æĶ¶ç¼©\":109501,\"çļĦæĸĩåŃĹ\":109502,\"åĴĮå°ļ\":109503,\"æĮĩä»¤\":109504,\"åħ±äº§åħļåĳĺ\":109505,\"çļĦçĪ¶äº²\":109506,\"å®Įå·¥\":109507,\"åĬ¡å·¥\":109508,\"é©¬æĭī\":109509,\"é©¬æĭīæĿ¾\":109510,\"æµĭè¯Ħ\":109511,\"å²ļ\":109512,\"ä¸įåģļ\":109513,\"ä¸ĥå¹´\":109514,\"åĿĩä»·\":109515,\"ä¸»è§Ĥ\":109516,\"å¾Īä¸įéĶĻ\":109517,\"èĤ¡ä¸ľå¤§ä¼ļ\":109518,\"äºĶä¸Ģ\":109519,\"é£İåĲ¹\":109520,\"å¼Ģéĩĩ\":109521,\"è¿Ļä¹Īå¤§\":109522,\"èĥ½çľĭåĪ°\":109523,\"èĢĥè¯Ħ\":109524,\"åį³ä¾¿æĺ¯\":109525,\"çİ°ä»£åĨľä¸ļ\":109526,\"æ¯Ķè¾ĥé«ĺ\":109527,\"è¦ģçľĭ\":109528,\"æ²¡äºĨ\":109529,\"è§£æ±º\":109530,\"çİ¯æ¯Ķ\":109531,\"åĨ²åĬ¨\":109532,\"æ·±å¤ľ\":109533,\"åĩłåįĥ\":109534,\"ä¿ı\":109535,\"ç½ĳæ°ĳ\":109536,\"å°±æ²¡\":109537,\"ä»ĸè¡¨ç¤º\":109538,\"éĩıåŃĲ\":109539,\"æĹ©é¤ĲåĬłçĽŁ\":109540,\"åįĬå²Ľ\":109541,\"æĲŀç¬ĳ\":109542,\"ä¸ĬæĬ¥\":109543,\"å¯©\":109544,\"é¢Ħè®¢\":109545,\"èľĤèľľ\":109546,\"æŁ¥æī¾\":109547,\"ä¼ĹæīĢ\":109548,\"ä¼ĹæīĢåĳ¨\":109549,\"ä¼ĹæīĢåĳ¨çŁ¥\":109550,\"æĹ©æĹ¥\":109551,\"åıĳæī¬\":109552,\"åĴĮä¸ªäºº\":109553,\"åĬłåħ¥äºĨ\":109554,\"åĸ®ä½į\":109555,\"åĪĨæĺİ\":109556,\"ç¬¬ä¸Ģæī¹\":109557,\"ç¾İåĨĽ\":109558,\"æĿĢæīĭ\":109559,\"éĹ¨å¤ĸ\":109560,\"åķĨåľĪ\":109561,\"ä¸ĢåĪ»\":109562,\"çļĦçľ¼ç¥ŀ\":109563,\"éľĦ\":109564,\"äºĽä»Ģä¹Ī\":109565,\"åĬłæ·±\":109566,\"æ¯ıä½į\":109567,\"å¸ĤéĿ¢ä¸Ĭ\":109568,\"åıĶåıĶ\":109569,\"çļĦéĤ£ç§į\":109570,\"ç²¤æ¸¯æ¾³\":109571,\"è´´å¿ĥ\":109572,\"æĸĩåĮĸäº§ä¸ļ\":109573,\"çº¢æĹĹ\":109574,\"åĺīåħ´\":109575,\"æĶ¶çĽĺ\":109576,\"å®ĮæĪĲåĲİ\":109577,\"ä¼ģä¸ļç®¡çĲĨ\":109578,\"çºµæ¨ª\":109579,\"ä¸įä¿¡\":109580,\"æĪĲéĥ½å¸Ĥ\":109581,\"æ´Ĺæ¾¡\":109582,\"ä¸¾è¡ĮçļĦ\":109583,\"çĶ¢çĶŁ\":109584,\"ç©¿ä¸Ĭ\":109585,\"åĪļå¥½\":109586,\"åħīçº¿\":109587,\"æīĵæŀ¶\":109588,\"è¿Ļæľ¬ä¹¦\":109589,\"åĶ®åĲİæľįåĬ¡\":109590,\"åĩłåĪĨ\":109591,\"ä¸Ĭæ¬¡\":109592,\"ä¸įåĪĨ\":109593,\"äº§åĲİ\":109594,\"éģ¿å¼Ģ\":109595,\"ç»Īæŀģ\":109596,\"ä»£è¡¨å¤§ä¼ļ\":109597,\"æ¼ĶæĬĢ\":109598,\"åĽŀè´Ń\":109599,\"åŃ¦è´¹\":109600,\"éĺ»ç¢į\":109601,\"ä¸Ģå¤§æī¹\":109602,\"ç«£å·¥\":109603,\"åĨ³å®ļäºĨ\":109604,\"ä½Ĩå¦Ĥæŀľ\":109605,\"çĶµæµģ\":109606,\"ä¸Ŀæ¯«\":109607,\"èĥ½å¤Łåľ¨\":109608,\"éĶĢåĶ®æĶ¶åħ¥\":109609,\"åľ¨åŃ¦æł¡\":109610,\"æ°´åĩĨ\":109611,\"è§Ĩçº¿\":109612,\"èĩªåľ¨\":109613,\"åķĨä¸ļéĵ¶è¡Į\":109614,\"ä¸ºäºĨè®©\":109615,\"çį²å¾Ĺ\":109616,\"çİ©å®¶æľĭåıĭ\":109617,\"éĿ¢èĨľ\":109618,\"åĪĨåī²\":109619,\"åī§æľ¬\":109620,\"ç«Ń\":109621,\"è¯´å¾Ĺ\":109622,\"æĥ³çŁ¥éģĵ\":109623,\"çļĦäººçī©\":109624,\"èĮħåı°\":109625,\"åĲĮä¸Ģä¸ª\":109626,\"æķ°æį®ä¸Ńå¿ĥ\":109627,\"çĶĦ\":109628,\"åĸľæĤ¦\":109629,\"ä¸ĭæĿ¥çļĦ\":109630,\"å®ļåĲĳ\":109631,\"æŀģåħ·\":109632,\"çļĦåľŁåľ°\":109633,\"éĤ£åĢĭ\":109634,\"æĳĦåħ¥\":109635,\"äºĨæĪĳçļĦ\":109636,\"é©¬è·¯\":109637,\"åħ¨ç¤¾ä¼ļ\":109638,\"è®®æ¡Ī\":109639,\"å±ĭåŃĲ\":109640,\"åĲįåı«\":109641,\"åĮª\":109642,\"åľ¨å¤ĸéĿ¢\":109643,\"åįİåįĹ\":109644,\"åıĳè´§\":109645,\"å¯ĴåĨ·\":109646,\"é«ĺçŃīæķĻèĤ²\":109647,\"è¯¦ç»ĨçļĦ\":109648,\"ä¸ªé¡¹çĽ®\":109649,\"çĶŁäº§åĬĽ\":109650,\"æĹ¶å¸¸\":109651,\"å°±æľĥ\":109652,\"ä¸ĩèĤ¡\":109653,\"éĻĮçĶŁäºº\":109654,\"æııç»ĺ\":109655,\"å½ĵçĦ¶æĺ¯\":109656,\"æĭīåĬ¨\":109657,\"éĵ¾æĿ¡\":109658,\"æī£éĻ¤\":109659,\"ä¸ĢçĽ´éĥ½\":109660,\"å°ıåŃ©åŃĲ\":109661,\"ä¼¤åı£\":109662,\"ç¬¬äºĮå±Ĭ\":109663,\"è´Ńç½®\":109664,\"çļĩé©¬\":109665,\"æĹłèģĬ\":109666,\"è¡¨åĨ³\":109667,\"è¯¸å¦Ĥ\":109668,\"åĵįèµ·\":109669,\"é£İæļ´\":109670,\"ä¸ĢæµģçļĦ\":109671,\"ç·¨\":109672,\"è§£æĶ¾åĨĽ\":109673,\"å®¤å¤ĸ\":109674,\"å°±è¿Ļä¹Ī\":109675,\"å³¶\":109676,\"æīĢæľīäººéĥ½\":109677,\"æĲľç´¢å¼ķæĵİ\":109678,\"çļĦæĪĲæľ¬\":109679,\"åħļæĶ¿\":109680,\"åıĳè¡Įäºº\":109681,\"çļĦäºĭå®ŀ\":109682,\"å¯¹è¯¥\":109683,\"åıĹæįŁ\":109684,\"ä¿Ħä¹Į\":109685,\"é²ľèĬ±\":109686,\"åĨľèį¯\":109687,\"æŀģéĢŁ\":109688,\"æĢ¥æĢ§\":109689,\"ä¸¤ä¼ļ\":109690,\"ä¸ĢèĪ¬æĿ¥è¯´\":109691,\"æµ·é²ľ\":109692,\"åĨĪ\":109693,\"çĶ¨äºº\":109694,\"çĶ¨äººåįķä½į\":109695,\"åĢª\":109696,\"åĦªæĥł\":109697,\"æł¹æºĲ\":109698,\"åĽ¢è´Ń\":109699,\"ç¾İæ´²\":109700,\"ä¸ĭè¡Į\":109701,\"å¹´æľ«\":109702,\"èľ¡\":109703,\"è¯ģä»¶\":109704,\"åľ¨æĪĳåĽ½\":109705,\"ä¸įåºĶ\":109706,\"æĮīæĹ¶\":109707,\"åłªç§°\":109708,\"åľºä¸Ĭ\":109709,\"å¹²éĥ¨èģĮå·¥\":109710,\"æľīå¾Īå¤§çļĦ\":109711,\"æķ°åŃĹç»ıæµİ\":109712,\"æ¼Ķç»ĥ\":109713,\"æį®ç»Łè®¡\":109714,\"å¾ĢæĿ¥\":109715,\"å¹¿åĳĬæľįåĬ¡\":109716,\"çļĦè·Ŀç¦»\":109717,\"æŃ¸\":109718,\"è¨Ģè¯Ń\":109719,\"è¢«èªī\":109720,\"è¢«èªīä¸º\":109721,\"åĭīå¼º\":109722,\"å°Ĭæķ¬\":109723,\"ä¸ĩäº¿åħĥ\":109724,\"ä¸ŃåĽ½åĽ½éĻħ\":109725,\"å¹²é¢Ħ\":109726,\"å¹´äº§\":109727,\"èĢķåľ°\":109728,\"èĮİ\":109729,\"åį³æĺ¯\":109730,\"æĺ¨æĻļ\":109731,\"æĪĲä¸ºä¸Ģä¸ª\":109732,\"çºłæŃ£\":109733,\"åĳ½åĲį\":109734,\"é¢ģå¸ĥ\":109735,\"çĮľæµĭ\":109736,\"ä¿ĿèŃ·æĶ¿çŃĸ\":109737,\"æĭ¢\":109738,\"æ´»æ³¼\":109739,\"çŃīéĥ¨éĹ¨\":109740,\"åŃ¦åĪ°\":109741,\"å¢ŀåĢ¼ç¨İ\":109742,\"èĪªçº¿\":109743,\"åĨ¤\":109744,\"åįģåĩłå¹´\":109745,\"æİ§èĤ¡èĤ¡ä¸ľ\":109746,\"ä¸ĢéĹ¨\":109747,\"ä¸ªå·¥ä½ľ\":109748,\"ä¸ªå·¥ä½ľæĹ¥\":109749,\"æĸ°è¥¿\":109750,\"æĸ°è¥¿åħ°\":109751,\"è®ºè¯ģ\":109752,\"ä»Ĩ\":109753,\"åı¦å¤ĸä¸Ģä¸ª\":109754,\"æĶ¹ç¼ĸ\":109755,\"ä¸¥ç¦ģ\":109756,\"åĸľå¥½\":109757,\"ä¸ªäººä¿¡æģ¯\":109758,\"æ»¡æĦıåº¦\":109759,\"åĵ¨\":109760,\"å¸ĪèµĦ\":109761,\"æĶ¹ä¸º\":109762,\"ç«ŀäºīå¯¹æīĭ\":109763,\"åĩºçĤī\":109764,\"åķĨäºº\":109765,\"å¤§æ£ļ\":109766,\"æĮĩå¯¼ä¸ĭ\":109767,\"å¦ĩç§ĳ\":109768,\"è¼ª\":109769,\"æīģ\":109770,\"åĲĮæĹ¶è¿ĺ\":109771,\"å¹¶éĢļè¿ĩ\":109772,\"æĪĺéĺŁ\":109773,\"èĶĵå»¶\":109774,\"ä¿ŀ\":109775,\"éĢĤå½ĵçļĦ\":109776,\"åīįè¾Ī\":109777,\"åĵģåĳ³\":109778,\"æ¹¿åľ°\":109779,\"æĪĲåŀĭ\":109780,\"ä¸įåıªæĺ¯\":109781,\"æĥ©ç½ļ\":109782,\"åĩºåı°äºĨ\":109783,\"çİ©æ¸¸æĪı\":109784,\"æīįåıĳçİ°\":109785,\"åºĶèģĺ\":109786,\"å¤ĸæĿ¥\":109787,\"åįłé¢Ĩ\":109788,\"å±ķæľĽ\":109789,\"å«Ĥ\":109790,\"æ¸¯èĤ¡\":109791,\"æ¡Įä¸Ĭ\":109792,\"æĶ¯æŁ±\":109793,\"çļĦæĥħå½¢\":109794,\"å¹¿éĺĶçļĦ\":109795,\"æĶ¯è¡Į\":109796,\"å´©æºĥ\":109797,\"æľĪä¸Ń\":109798,\"æľĪä¸ŃæĹ¬\":109799,\"ç»įåħ´\":109800,\"ä¸´è¿ĳ\":109801,\"æĬ¤æłı\":109802,\"æļ®\":109803,\"åįķèģĮä¸ļ\":109804,\"è¾¹å¢ĥ\":109805,\"æĹ¥çħ§\":109806,\"ä¸ĢåłĨ\":109807,\"çĽ´å¾Ħ\":109808,\"åħ±åĲĮä½ĵ\":109809,\"æĸ°åįİç½ĳ\":109810,\"æīĵå¥½\":109811,\"çĶµåĬ¨æ±½è½¦\":109812,\"ä¸įæĺİçĻ½\":109813,\"éĢĻè£¡\":109814,\"çĽĽå¤§\":109815,\"çİĭæľĿ\":109816,\"åĨįä¸Ģæ¬¡\":109817,\"åĬŀåħ¬åİħ\":109818,\"è´¨æĬ¼\":109819,\"åĲĪåĩ»\":109820,\"äººä»¬å¯¹\":109821,\"éĽ¶é£Ł\":109822,\"éĥ½ä¸įçŁ¥éģĵ\":109823,\"çļĦè¯Ńè¨Ģ\":109824,\"åĭŁéĽĨèµĦéĩĳ\":109825,\"åĬ¨èĦī\":109826,\"å½¤\":109827,\"è¿Ļåĩłå¹´\":109828,\"çŁŃè§Ĩé¢ĳ\":109829,\"å¤ªé«ĺ\":109830,\"å¸¸å§Ķä¼ļ\":109831,\"åĬłçıŃ\":109832,\"éĩįå¿ĥ\":109833,\"åªĴä½ĵæĬ¥éģĵ\":109834,\"æ²¡æ³ķ\":109835,\"éĹ»åĲį\":109836,\"çĥŃåº¦\":109837,\"å¹¿æ³ĽçļĦ\":109838,\"åħŃå¤§\":109839,\"çī©ä½ĵ\":109840,\"ä¸įè¯¥\":109841,\"é¢ĺä¸»\":109842,\"ç²¾å½©çļĦ\":109843,\"ä¸ºè¿Ľä¸ĢæŃ¥\":109844,\"èĻŀ\":109845,\"åĽºçĦ¶\":109846,\"è´µå·ŀçľģ\":109847,\"çºłç»ĵ\":109848,\"ä»£çĲĨäºº\":109849,\"æ³ķå®ļä»£è¡¨\":109850,\"åı¦ä¸Ģç§į\":109851,\"ä¸įåĲ«\":109852,\"æĭ¯æķĳ\":109853,\"ä¼ļç»Ļ\":109854,\"è¯Ĺè¯į\":109855,\"åĲĮç±»\":109856,\"å¾Ĺä¸įåĪ°\":109857,\"æĬĵç´§\":109858,\"ä»¥åħ¶\":109859,\"åħ¥åħļ\":109860,\"è¿ĺåı¯\":109861,\"æľŁåĪĬ\":109862,\"å¾Īå¤ļæĹ¶åĢĻ\":109863,\"æĹ¥åĲİ\":109864,\"åħ¬çº¦\":109865,\"ä¸Ģä¸¾\":109866,\"æ¯Ķè¾ĥå¤ļ\":109867,\"éĩĳæ²Ļ\":109868,\"æįŀ\":109869,\"æİĴåĩº\":109870,\"æŃ¦æľ¯\":109871,\"ä¸įæĸ·\":109872,\"ä¸ŃèĢĥ\":109873,\"ä¿¡èµĸ\":109874,\"ä»İä¸ļäººåĳĺ\":109875,\"çģ«çĦ°\":109876,\"éĨĴæĿ¥\":109877,\"ä½İæ¸©\":109878,\"éĢ¾æľŁ\":109879,\"åĬ±å¿Ĺ\":109880,\"éħ¥\":109881,\"åı¯è°ĵæĺ¯\":109882,\"è¿ĻæĦıåĳ³çĿĢ\":109883,\"é¢łè¦Ĩ\":109884,\"åĮĹäº¬å¤§åŃ¦\":109885,\"ä¸ĵçº¿\":109886,\"åıĬä»¥ä¸Ĭ\":109887,\"è¨ª\":109888,\"èĢĮåĲİ\":109889,\"çŁ¥ä¹İ\":109890,\"ä¸Ģå¯¹ä¸Ģ\":109891,\"å¨ĥå¨ĥ\":109892,\"çģ¾éļ¾\":109893,\"åħ¨å±Ģ\":109894,\"æīĢå¾Ĺç¨İ\":109895,\"å®ŀæĥł\":109896,\"èļĤèļģ\":109897,\"ä¹ŁçŁ¥éģĵ\":109898,\"æ¸©åĴĮ\":109899,\"èĲ½ä¸ĭ\":109900,\"åŀĭä¼ģä¸ļ\":109901,\"åĨįä¹Ł\":109902,\"ä¾ĽçĥŃ\":109903,\"é«ĺæ½®\":109904,\"çĢıè¦½åĻ¨\":109905,\"çļĦå·¨å¤§\":109906,\"åħĪå¤©\":109907,\"å¹´ä¸ŃåĽ½\":109908,\"ç±»ä¼¼çļĦ\":109909,\"çĲĨäºĭä¼ļ\":109910,\"ç©ºéĸĵ\":109911,\"çģµæĦŁ\":109912,\"åĬĽæ°Ķ\":109913,\"å¸¦ä¸Ĭ\":109914,\"ä¸įå¥½æĦıæĢĿ\":109915,\"æľīä½ķ\":109916,\"å·²åľ¨\":109917,\"åıĸåĩº\":109918,\"è¿Ŀæ³ķçĬ¯ç½ª\":109919,\"åŃ¦ä¹łè´¯å½»\":109920,\"åľ°å¸¦\":109921,\"æ¥¼æ¢¯\":109922,\"çŃīæĥħåĨµ\":109923,\"ä»İåīį\":109924,\"çļĦä¹łæĥ¯\":109925,\"ç³Łç³ķ\":109926,\"å°±èĥ½å¤Ł\":109927,\"è©ķ\":109928,\"ä¸Ģå¾ĭ\":109929,\"æĮ«æĬĺ\":109930,\"åİŁæĸĩåľ°åĿĢ\":109931,\"å½ĵå±Ģ\":109932,\"ä¸įéĢļ\":109933,\"æķ°åįĥ\":109934,\"éĺŁä¼įå»ºè®¾\":109935,\"æĹ¶èĬĤ\":109936,\"åģļèµ·\":109937,\"çļĦè®°å¿Ĩ\":109938,\"ç½ĳç»ľå®īåħ¨\":109939,\"åĩ¡æĺ¯\":109940,\"æ°¯\":109941,\"éĽķåĪ»\":109942,\"åŁĥåıĬ\":109943,\"æĪĳåı¯ä»¥\":109944,\"çĽĳçĲĨ\":109945,\"æĽ´åħ·\":109946,\"åŁİç®¡\":109947,\"èĭ¯\":109948,\"åı¥åŃĲ\":109949,\"èĭ¥æľī\":109950,\"ä»İæĿ¥ä¸į\":109951,\"çĽ¸åħ³è´Łè´£\":109952,\"å®īåħ¨æĦŁ\":109953,\"æĽ´è¦ģ\":109954,\"çļĦæĥħæĦŁ\":109955,\"çī¢çī¢\":109956,\"è¾ĥå¥½çļĦ\":109957,\"æ°®\":109958,\"ç¬ĳè¯Ŀ\":109959,\"è½¦å±ķ\":109960,\"ä¹ĭç¾İ\":109961,\"ç®Ģçº¦\":109962,\"ç±»åŀĭçļĦ\":109963,\"èĢģåĮĸ\":109964,\"çľĭä½ł\":109965,\"è¿ĩåĪĨ\":109966,\"éĹ¨åīį\":109967,\"ä¸ĢéĹ´\":109968,\"æĥ³åİ»\":109969,\"åªĽ\":109970,\"åľŁè±Ĩ\":109971,\"åıĪç§°\":109972,\"ä¸Ńä¿¡\":109973,\"åŃĺéĩı\":109974,\"é©¬äºĳ\":109975,\"èĩ´ä½¿\":109976,\"åħĪåīį\":109977,\"èĢģåŃĲ\":109978,\"æīĵæī®\":109979,\"æ¯ķä¸ļäºİ\":109980,\"æ¯ķä¸ļåĲİ\":109981,\"ç¾İå¥½çĶŁæ´»\":109982,\"å·¥ä¸ļä¼ģä¸ļ\":109983,\"å°±å¥½äºĨ\":109984,\"èħĲèļĢ\":109985,\"çıįçıł\":109986,\"åĪ°è¿ĻéĩĮ\":109987,\"æīĢéľĢçļĦ\":109988,\"è¿Ļæĺ¯åĽłä¸º\":109989,\"çĲĨæĥ³çļĦ\":109990,\"å·®å¼ĤåĮĸ\":109991,\"é®\":109992,\"é®®\":109993,\"äºļå¤ª\":109994,\"æĹłç©·\":109995,\"æıĲçİ°\":109996,\"ä¸ĵä¸ļæĬĢæľ¯\":109997,\"çĶ¢æ¥Ń\":109998,\"åŃ¦åŃĲ\":109999,\"ç§ĳå¹»\":110000,\"åįłåľ°éĿ¢ç§¯\":110001,\"ä¸įåĩĨ\":110002,\"æľªæĪĲå¹´äºº\":110003,\"æĶ¶å½ķ\":110004,\"è¿ĺæ¬¾\":110005,\"éĴ¢çŃĭ\":110006,\"æ¼¢\":110007,\"å¾ĹæĦı\":110008,\"ç»¼åĲĪä½ĵ\":110009,\"æŀģé«ĺ\":110010,\"åįķè¯į\":110011,\"é«ĺæķĪçļĦ\":110012,\"éª¨å¤´\":110013,\"æī§çĿĢ\":110014,\"çĽĽä¸ĸ\":110015,\"æ¨¡çī¹\":110016,\"æĽ´èĥ½\":110017,\"ç»ĿæľĽ\":110018,\"å¯¹åºĶçļĦ\":110019,\"æ¨Ĭ\":110020,\"æĸ°ä¸ī\":110021,\"æĸ°ä¸īæĿ¿\":110022,\"æģ°æģ°\":110023,\"åĲįå®¶\":110024,\"æł¸å¿ĥæĬĢæľ¯\":110025,\"ä¸ªå°ı\":110026,\"æĢİä¹Īä¼ļ\":110027,\"è¯´ä¸įå®ļ\":110028,\"è¥¿çĵľ\":110029,\"åĵİ\":110030,\"ç¢Ł\":110031,\"å¿ħä¸įåı¯\":110032,\"å¿ħä¸įåı¯å°ĳ\":110033,\"ä¹ĭéĸĵ\":110034,\"åĪĨç®¡\":110035,\"äº¤éĢļäºĭæķħ\":110036,\"å¼ĢåĬŀ\":110037,\"å¾ģæ±ĤæĦıè§ģ\":110038,\"äº¨\":110039,\"éĽ»åŃĲéĥµ\":110040,\"éĽ»åŃĲéĥµä»¶\":110041,\"ä¿¡æģ¯æľįåĬ¡\":110042,\"ä½łè§īå¾Ĺ\":110043,\"çĽ´è§Ĥ\":110044,\"å·²å®ĮæĪĲ\":110045,\"åĪĨä¼ļ\":110046,\"åĽŀåįĩ\":110047,\"éļ»\":110048,\"å¥½äºº\":110049,\"äºĨè§£ä¸Ģä¸ĭ\":110050,\"åį«æµ´\":110051,\"æľĢçĪ±\":110052,\"åºŀå¤§\":110053,\"å®¢æĪ¿\":110054,\"çĳŀåħ¸\":110055,\"éĥ½ä¸įæĺ¯\":110056,\"é¤¨\":110057,\"èĹī\":110058,\"çļĦåĲĦé¡¹\":110059,\"ä¸ºçĽ®æłĩ\":110060,\"çļĦè®¤çŁ¥\":110061,\"å½±åĵįåĬĽçļĦ\":110062,\"å¤¸å¼ł\":110063,\"ä½©æĪ´\":110064,\"æ±ĩçİĩ\":110065,\"çļĦçĪ±æĥħ\":110066,\"æĺ¥é£İ\":110067,\"æĺ¯æĪĳçļĦ\":110068,\"æ¨¹\":110069,\"åįĬå°ıæĹ¶\":110070,\"å±±åİ¿\":110071,\"å±±è¥¿çľģ\":110072,\"èĢĮè¿Ļ\":110073,\"æĽ´å¤ļä¿¡æģ¯\":110074,\"è¿ĺæľīä¸ĢäºĽ\":110075,\"ç²¾ç»ĨåĮĸ\":110076,\"ç¾İåŃ¦\":110077,\"çĶ±æĸ¼\":110078,\"ä»ħä¾ĽåıĤèĢĥ\":110079,\"å¾Īé«ĺçļĦ\":110080,\"åıłåĬł\":110081,\"è¿Ļä¹Īè¯´\":110082,\"å±ķåĩº\":110083,\"åĽĽå¤Ħ\":110084,\"ä¸ĩå®¶\":110085,\"æĭĽåĭŁ\":110086,\"çļĦå¼ºå¤§\":110087,\"æĤ£æľī\":110088,\"å°ıäºİ\":110089,\"ä¹Łè®¸æĺ¯\":110090,\"å¯¹èĩªå·±çļĦ\":110091,\"èģĮä¸ļæķĻèĤ²\":110092,\"æĿ¥è¿Ľè¡Į\":110093,\"æ¡£æ¬¡\":110094,\"æīĵèµ¢\":110095,\"éĥ½æľīçĿĢ\":110096,\"åº¸\":110097,\"è¯Ńæ°Ķ\":110098,\"çĶ²éĨĽ\":110099,\"ç©ºåĨĽ\":110100,\"è½¦åĨħ\":110101,\"åĽłä¸ºä½ł\":110102,\"å®ŀæķĪ\":110103,\"æĥħä¾£\":110104,\"åıĳè¾¾åĽ½å®¶\":110105,\"éķľåŃĲ\":110106,\"æ¯įå©´\":110107,\"ä½Ĩæĺ¯ä»ĸ\":110108,\"ç§¯æŀģæİ¨è¿Ľ\":110109,\"å¤§å¹ħåº¦\":110110,\"çļĦå¥³åĦ¿\":110111,\"é¤Ĳæ¡Į\":110112,\"åĲ¬å¾Ĺ\":110113,\"çļĦç§¯æŀģæĢ§\":110114,\"å¥½åĲ§\":110115,\"æĹ¥æ¶Īæģ¯\":110116,\"æľīä»»ä½ķ\":110117,\"æ¯Ĵåĵģ\":110118,\"æĹ©çĤ¹åĬłçĽŁ\":110119,\"ç¬¬ä¸Ģå¤©\":110120,\"å°½åĬĽ\":110121,\"æłĸ\":110122,\"ä¸»æīĵ\":110123,\"æĺ¯ä¸ĢåĲį\":110124,\"çĪĨæĸĻ\":110125,\"äºĭä¸ļåıĳå±ķ\":110126,\"å¾®åķĨ\":110127,\"äºİä¸Ģä½ĵçļĦ\":110128,\"çĶŁçĮª\":110129,\"èĩªçĦ¶èµĦæºĲ\":110130,\"çŀĦåĩĨ\":110131,\"è§Ħæ¨¡åĮĸ\":110132,\"å¹¶ä¸İ\":110133,\"èĤ¥èĥĸ\":110134,\"å®¶çĶ¨\":110135,\"å¤§çĪ·\":110136,\"é¢ĦåĳĬ\":110137,\"æĿ¥åģļ\":110138,\"éĺ³åİ¿\":110139,\"æŀĦçŃĳ\":110140,\"é¢ģå¥ĸ\":110141,\"åİĨåı²æĸĩåĮĸ\":110142,\"æľįåĭĻæĪĸ\":110143,\"æĢ»åĨ³èµĽ\":110144,\"åıĳåŀĭ\":110145,\"æĪĳçľŁçļĦ\":110146,\"æĽ¦\":110147,\"åıĤä¼ļ\":110148,\"èĦĨå¼±\":110149,\"åĩĨåħ¥\":110150,\"èħ¹éĥ¨\":110151,\"åı¸ä»¤\":110152,\"æĤ²åī§\":110153,\"å¤©ä¸Ĭ\":110154,\"åı£ä¸Ń\":110155,\"ä¸ĩä¸ª\":110156,\"åŃ¦ä¸ļ\":110157,\"æıĲåĢ¡\":110158,\"ä¸¤è¾¹\":110159,\"å¤§èĤ¡ä¸ľ\":110160,\"åı¤éķĩ\":110161,\"è¡Ģç³ĸ\":110162,\"çļĦç¨ĭåº¦\":110163,\"æ£īèĬ±\":110164,\"åĲİåı°\":110165,\"å°±åĮ»\":110166,\"æķ´æķ´\":110167,\"èĴ²\":110168,\"çĽĪåĪ©èĥ½åĬĽ\":110169,\"ç±½\":110170,\"èĦ«\":110171,\"çľĭéĩį\":110172,\"å®¶éķ·\":110173,\"èģĺçĶ¨\":110174,\"èµĽéģĵ\":110175,\"åīįèĢħ\":110176,\"å»ºèŃ°\":110177,\"å¾ĭå¸ĪäºĭåĬ¡\":110178,\"èīºæľ¯åĵģ\":110179,\"æľīèĩªå·±çļĦ\":110180,\"åĲ¦å®ļ\":110181,\"ç¤¾åĽ¢\":110182,\"åĳ¨äºĶ\":110183,\"å¸¦åĪ°\":110184,\"å·¥ä½ľä¼ļè®®\":110185,\"èĤ¡æľ¬\":110186,\"å¤ĸåĮħ\":110187,\"å®¶åħ¬åı¸\":110188,\"çĽĳçĭ±\":110189,\"èĪĬ\":110190,\"åĲįæł¡\":110191,\"è¥¿æ¹ĸ\":110192,\"è¶ħè¿ĩäºĨ\":110193,\"åįĹå±±\":110194,\"ç»Ħä»¶\":110195,\"åĢ¼å¾Ĺæ³¨æĦı\":110196,\"æĮ£æīİ\":110197,\"äºĭè¿¹\":110198,\"ç¶ĵçĩŁ\":110199,\"ç§ĳå®¤\":110200,\"å¥½åĲĹ\":110201,\"æ¤ħåŃĲ\":110202,\"åľĪåŃĲ\":110203,\"ä½Ĩå¥¹\":110204,\"æµģçķħ\":110205,\"åĲĦèĩªçļĦ\":110206,\"èģĮåĳĺ\":110207,\"è¡įçĶŁ\":110208,\"åħ¨åľº\":110209,\"æĴ¤éĶĢ\":110210,\"åį´è¢«\":110211,\"å®ģéĿĻ\":110212,\"åīįæīĢ\":110213,\"åīįæīĢæľª\":110214,\"åīįæīĢæľªæľī\":110215,\"ä¸»ä¸ļ\":110216,\"åĮĹç¾İ\":110217,\"è¯Ħå®ļ\":110218,\"åĵģå°Ŀ\":110219,\"å¤§å®¶éĥ½åľ¨\":110220,\"ä¸»å¸ħ\":110221,\"ç»Ĩå¿ĥ\":110222,\"ä¿¡æģ¯æĬ«éľ²\":110223,\"çļĦç«ŀäºī\":110224,\"éĢĻæ¨£çļĦ\":110225,\"ç§ĳåĪĽæĿ¿\":110226,\"éĩĩæĳĺ\":110227,\"ç¥¨æį®\":110228,\"éĢĲå¹´\":110229,\"èĭ±è¶ħ\":110230,\"è¡Įä¸ļåĨħ\":110231,\"äººå¯¿\":110232,\"åĲİåĭ¤\":110233,\"å¦ĤæĦı\":110234,\"ç¬Ķè¯ķ\":110235,\"æ·¡æ·¡çļĦ\":110236,\"ä¸įèĪĴæľį\":110237,\"ä½ĵç§¯\":110238,\"ä¹Łä¸įè¦ģ\":110239,\"éĿ¢æĸĻ\":110240,\"æł·æľ¬\":110241,\"ç¥ģ\":110242,\"æĮīè§Ħå®ļ\":110243,\"å¤§æ¦Ĥæĺ¯\":110244,\"æĥħåĨµè¿Ľè¡Į\":110245,\"åĲĦåįķä½į\":110246,\"çļĦç¬ĳå®¹\":110247,\"åĩºèī²çļĦ\":110248,\"ä»£è¡¨æĢ§\":110249,\"çļĦç¾İå¥½\":110250,\"éĴ¦\":110251,\"å¾®çĶŁçī©\":110252,\"è¶Ĭæĺ¯\":110253,\"æĸ¹åı¯\":110254,\"å¹²èĦĨ\":110255,\"éģĬæĪ²\":110256,\"çļĦåħ´è¶£\":110257,\"éĹ®è´£\":110258,\"åĽłä¸ºæĪĳä»¬\":110259,\"èĢĥéĩı\":110260,\"çĶŁçĶŁ\":110261,\"éĺ»åĬĽ\":110262,\"ä¸įåħģè®¸\":110263,\"æıĲè®®\":110264,\"åĩıæĮģ\":110265,\"åıªæĺ¯ä¸Ģä¸ª\":110266,\"æĪĳæĬĬ\":110267,\"åıĳçİ°èĩªå·±\":110268,\"å¢ŀå¹ħ\":110269,\"å¦į\":110270,\"èĹĿè¡ĵ\":110271,\"ä¸Ģå®¶äºº\":110272,\"åĪĨçº§\":110273,\"çļĦæķ°éĩı\":110274,\"è½®èŀįèµĦ\":110275,\"çŃīåĽłç´ł\":110276,\"å¤§å¤«\":110277,\"èģĺè¯·\":110278,\"é£İæľº\":110279,\"ç»½æĶ¾\":110280,\"ä»»ä½ķä¸Ģä¸ª\":110281,\"éłĤ\":110282,\"éĺ¶çº§\":110283,\"æĬĬå¥¹\":110284,\"è¿ĽåĨĽ\":110285,\"èĥ½åģļåĪ°\":110286,\"åŁ¹è®ŃæľºæŀĦ\":110287,\"çī©æĸĻ\":110288,\"ç«¥è¯Ŀ\":110289,\"æĮĩå¯¼æĦıè§ģ\":110290,\"éĺ®\":110291,\"æ·±åħ¥æİ¨è¿Ľ\":110292,\"ä¸»æľº\":110293,\"æ¸Ķä¸ļ\":110294,\"ä¸įæľį\":110295,\"æµĵéĥģ\":110296,\"è¡Ĺä¸Ĭ\":110297,\"ä¾Ŀæ¬¡\":110298,\"æĹ¶æ®µ\":110299,\"æ¢µ\":110300,\"çļĦåĸľçĪ±\":110301,\"å¾Īéķ¿\":110302,\"åĪĿçº§\":110303,\"æŀľæĸŃ\":110304,\"æĬ¢æķĳ\":110305,\"é¼ĵèĪŀ\":110306,\"ä¾ĽéľĢ\":110307,\"æ·±åħ¥å¼Ģå±ķ\":110308,\"äº§ä¸ļéĽĨç¾¤\":110309,\"åĻªéŁ³\":110310,\"åĲ¬çĿĢ\":110311,\"æ·±åĪ»çļĦ\":110312,\"å¿įåıĹ\":110313,\"çĶµç£ģ\":110314,\"å¼ºèĢħ\":110315,\"æ»ĭåĳ³\":110316,\"æĽ¼èģĶ\":110317,\"åı¯ä»¥çĽ´æİ¥\":110318,\"å¤§ç±³\":110319,\"æŃ·åı²\":110320,\"æĶ¿åĬ¡æľįåĬ¡\":110321,\"åħ¬å¼ı\":110322,\"ç¤¾ç¾¤\":110323,\"éģĵå£«èģĮä¸ļ\":110324,\"ä¹ĭæĥħ\":110325,\"æµ·æ°´\":110326,\"æ¼Ķå¥ı\":110327,\"åºĹéĩĮ\":110328,\"è¿¹è±¡\":110329,\"åıĳå±ķçĲĨå¿µ\":110330,\"é«ĺç©º\":110331,\"åĳ¨åĪĬ\":110332,\"åĽŀåĪ°äºĨ\":110333,\"ä¸įéĢĤåĲĪ\":110334,\"åłµå¡ŀ\":110335,\"åĬĪ\":110336,\"æ°´ä¸Ĭ\":110337,\"çĢĳå¸ĥ\":110338,\"çº³ç¨İäºº\":110339,\"çĩĥæ²¹\":110340,\"å·¥ç¨ĭé¡¹çĽ®\":110341,\"å³¡è°·\":110342,\"æľīéĴĪå¯¹æĢ§\":110343,\"åľĨå½¢\":110344,\"æľ¬å¸Ĥ\":110345,\"è¿Ļè¯Ŀ\":110346,\"ç®¡çĲĨèĢħ\":110347,\"ç¡®è¯ĬçĹħä¾ĭ\":110348,\"æĬĬæīĭ\":110349,\"å½©èī²\":110350,\"ä¸Ĭåīį\":110351,\"å¤¯å®ŀ\":110352,\"ç¾ĬèĤī\":110353,\"å¾Ģå¹´\":110354,\"æĵħèĩª\":110355,\"è¿·äºº\":110356,\"èĪªæ¯į\":110357,\"ç²¾ç»Ĩ\":110358,\"åľ¨æĪĳçļĦ\":110359,\"åĪĽæĬķ\":110360,\"éº¦åħĭ\":110361,\"æľĪç»ı\":110362,\"åĮĹæµ·\":110363,\"ä¹ĭæĺŁ\":110364,\"åı¶åŃĲ\":110365,\"å¸Ĥåľºç«ŀäºī\":110366,\"è¿Ļäºĭ\":110367,\"åıĥèĪĩ\":110368,\"äº§åľ°\":110369,\"åĶī\":110370,\"åķĨåĵģæĪ¿\":110371,\"èĪªè¿Ĳ\":110372,\"ä¼ĺå¼Ĥ\":110373,\"ä»ĸä»¬æĺ¯\":110374,\"éĽ¨æ°´\":110375,\"è¯įæ±ĩ\":110376,\"åĨľçĶ°\":110377,\"æ¬§éĺ³\":110378,\"çŁŃçº¿\":110379,\"ç®¡ç½ĳ\":110380,\"æł¹åŁº\":110381,\"åıªæľīä¸Ģä¸ª\":110382,\"éŀĭåŃĲ\":110383,\"å¸Ĥå§Ķä¹¦è®°\":110384,\"åĪ»æĦı\":110385,\"è¡Įè½¦\":110386,\"åıĪè¢«\":110387,\"åı¯éĿłæĢ§\":110388,\"è´±\":110389,\"ä»»åĳ½\":110390,\"åºĶåľ¨\":110391,\"å°±å¾Ĺ\":110392,\"æľįåĬ¡ä½ĵç³»\":110393,\"æĶ¿æĿĥ\":110394,\"åıĳè¨Ģäºº\":110395,\"è¿ĩå¾Ģ\":110396,\"ä¸¤åıª\":110397,\"èĻ½è¯´\":110398,\"éĢģä¸Ĭ\":110399,\"ä»Ģä¹Īäºĭ\":110400,\"æķ£æĸĩ\":110401,\"æİĮæİ§\":110402,\"èĸĦå¼±\":110403,\"ä¸ĭéĿ¢å°±\":110404,\"ä¸»è¦ģåĨħå®¹\":110405,\"å¾Īéĩįè¦ģçļĦ\":110406,\"å°±è¯´\":110407,\"çĻ½èī²çļĦ\":110408,\"éĤ£ä¸ªæĹ¶åĢĻ\":110409,\"ç»ıçºªäºº\":110410,\"çļĦæ¯įäº²\":110411,\"ç¬Ķè®°æľ¬\":110412,\"åºķå±Ĥ\":110413,\"è¿ĳä»£\":110414,\"è§£è¯´\":110415,\"è²łè²¬\":110416,\"æľĢå¤§åĮĸ\":110417,\"åķĨéĵº\":110418,\"æł¡åıĭ\":110419,\"æ²ģ\":110420,\"ä¸įåĩºæĿ¥\":110421,\"éĻ·éĺ±\":110422,\"ç¨ħ\":110423,\"åħ¬å¸ĥäºĨ\":110424,\"åĩĢåĢ¼\":110425,\"çĽ¸å¯¹è¾ĥ\":110426,\"ç¬Ľ\":110427,\"æł¸ç®Ĺ\":110428,\"åįİä¾¨\":110429,\"æĢ¥æķĳ\":110430,\"æĮºå¥½\":110431,\"åħĴç«¥\":110432,\"äºĮèĥİ\":110433,\"åĩºèĩª\":110434,\"åĿŁ\":110435,\"æīĭä¸ĭ\":110436,\"å±¡\":110437,\"åĪĽéĢłæĢ§\":110438,\"ä¸¥æł¼æĮīçħ§\":110439,\"åĨįåİ»\":110440,\"ä¸ľçĽŁ\":110441,\"äººæµģ\":110442,\"äºĨä¸Ģå£°\":110443,\"å°ıæĹ¶åīį\":110444,\"è´µæĹı\":110445,\"éľĸ\":110446,\"ä¹Łæĺ¯éĿŀå¸¸\":110447,\"éĢ±\":110448,\"çľĭäºĨçľĭ\":110449,\"ç¹ģæ®ĸ\":110450,\"èĩ³æŃ¤\":110451,\"é¢Ħå¤ĩ\":110452,\"å¾Īæĺİæĺ¾\":110453,\"æ¼Ķèīº\":110454,\"åĿĲçĿĢ\":110455,\"ä¿ĦåĨĽ\":110456,\"åľ¨è¿ĩåİ»\":110457,\"ä¹ĭäºĭ\":110458,\"æĬĵèİ·\":110459,\"åĿĲä¸ĭ\":110460,\"çĶ±ä¸ŃåĽ½\":110461,\"ä¹Łå¼Ģå§ĭ\":110462,\"çŃĶå¤į\":110463,\"åŀĥåľ¾åĪĨç±»\":110464,\"éĴĵé±¼\":110465,\"åĲĦç¨®\":110466,\"çĽ¸éģĩ\":110467,\"ä¸įåģľçļĦ\":110468,\"æī¹éĩı\":110469,\"éĩįè¦ģä½ľçĶ¨\":110470,\"å§Ķå±Ī\":110471,\"åħŃå¹´\":110472,\"ä¸ĥåįģ\":110473,\"ä¹ĭæĪĺ\":110474,\"é£İéĻ©ç®¡çĲĨ\":110475,\"éŁ³æ¨Ĥ\":110476,\"è¡ĮæĶ¿å¤Ħç½ļ\":110477,\"æľ¬äºĭ\":110478,\"æĴ°åĨĻ\":110479,\"èģļåĲĪ\":110480,\"éĢĤæĹ¶\":110481,\"æĲ¬å®¶\":110482,\"ç¢İçīĩ\":110483,\"çĽĽå®´\":110484,\"ç®Ģæ´ģ\":110485,\"åı¬éĽĨ\":110486,\"ç®ĢåĮĸ\":110487,\"åĮĹäº¬æĹ¶éĹ´\":110488,\"ç¬¬ä¸īå±Ĭ\":110489,\"æĿ¥åĽŀ\":110490,\"å¸¸çĶ¨çļĦ\":110491,\"äº¬æ´¥\":110492,\"äº¬æ´¥åĨĢ\":110493,\"æ¢¦å¹»\":110494,\"è¯ķè¡Į\":110495,\"æľºåºĬ\":110496,\"åĪ°æľĢåĲİ\":110497,\"åĬ©æīĭ\":110498,\"åĪĨå½©\":110499,\"åĩºåĵģ\":110500,\"åĪ¹è½¦\":110501,\"åĲ¯åıĳ\":110502,\"ä¾§éĿ¢\":110503,\"æ¯ıå½ĵ\":110504,\"çĽ¸åħ³è§Ħå®ļ\":110505,\"ä¸ĸäºº\":110506,\"è´Ńè½¦\":110507,\"å¿ĥçĽ®\":110508,\"å¿ĥçĽ®ä¸Ń\":110509,\"äºĶéĩĳ\":110510,\"è¿ĺè®°å¾Ĺ\":110511,\"ä¾ĿçĦ¶æĺ¯\":110512,\"æıĲæ¡Ī\":110513,\"çĶµåķĨå¹³åı°\":110514,\"åģļåĪ°äºĨ\":110515,\"æĿľç»Ŀ\":110516,\"å®īåįĵ\":110517,\"ä¸ĸçķĮåĲĦåľ°\":110518,\"åīįéĢĶ\":110519,\"æ´ĹåĩĢ\":110520,\"å¥ĭåĬĽ\":110521,\"åŁİå¸Ĥå»ºè®¾\":110522,\"å¤ļåĬŁèĥ½\":110523,\"ä¼ļéĢłæĪĲ\":110524,\"åıĳå¸ĥä¼ļä¸Ĭ\":110525,\"ç©¶ç«Łæĺ¯\":110526,\"åĪĨçº¢\":110527,\"çŁ¥èŃĺ\":110528,\"éĿ¢æĿ¿\":110529,\"æĹłå£°\":110530,\"æĢ¥éľĢ\":110531,\"å¤±çľł\":110532,\"çĪ¸å¦Ī\":110533,\"äºĤ\":110534,\"åħ¨æĻ¯\":110535,\"ç»ıåħ¸çļĦ\":110536,\"åī§ä¸Ń\":110537,\"é¢Ĩå¯¼ä¸ĭ\":110538,\"åħļåĨħ\":110539,\"åħ¥ä¾µ\":110540,\"æĭīæĸ¯\":110541,\"ä¸Ģå¹ķ\":110542,\"åĬłä¹ĭ\":110543,\"èĤĨ\":110544,\"èĭ±æł¼\":110545,\"èĭ±æł¼åħ°\":110546,\"å·§åħĭ\":110547,\"å·§åħĭåĬĽ\":110548,\"ä¸Ģå¿ĥ\":110549,\"èģĤ\":110550,\"å¾Ģå¾Ģæĺ¯\":110551,\"ç®¡çĲĨå±Ĥ\":110552,\"çĻ»åħ¥\":110553,\"å»ºç«ĭèµ·\":110554,\"å»ºåĽ½\":110555,\"åŃĲå®«\":110556,\"åºĶä»ĺ\":110557,\"æİ¢ç©¶\":110558,\"ç¬¬ä¸Ģä½į\":110559,\"ä½Ļå®¶\":110560,\"çŃīæ´»åĬ¨\":110561,\"æīĢèĩ´\":110562,\"è¾ĥå¿«\":110563,\"æĺ¯éĿŀ\":110564,\"æıĲåĲį\":110565,\"äºĮèĢħ\":110566,\"åıªåī©ä¸ĭ\":110567,\"åħ¶ä¸ŃåĮħæĭ¬\":110568,\"ç¼ĸç¨ĭ\":110569,\"çł´ç¢İ\":110570,\"ä¸Ńä¸ľ\":110571,\"å·¥ä½ľæĬ¥åĳĬ\":110572,\"çŃ¾åĲį\":110573,\"éħĴä¸ļ\":110574,\"çŁ¥æĻĵ\":110575,\"çĥŃå¿ĥ\":110576,\"éĿŀåĩ¡\":110577,\"èĲ¥ä¸ļæī§\":110578,\"èĲ¥ä¸ļæī§çħ§\":110579,\"äººå¤§ä»£è¡¨\":110580,\"ä¸Ģä¸ªæĸ°çļĦ\":110581,\"å¨ģæµ·\":110582,\"éĤ£äºº\":110583,\"æ¶¨ä»·\":110584,\"æ¶ĪçģŃ\":110585,\"éļ¾å¿ĺ\":110586,\"ç¶ĵé©Ĺ\":110587,\"åı£è¢ĭ\":110588,\"ç³»æķ°\":110589,\"æĸĩä¸Ń\":110590,\"å¥½è½¬\":110591,\"æĸ°éĽ¶åĶ®\":110592,\"è®²è¿°äºĨ\":110593,\"å¼ĢçĽĺ\":110594,\"çķĻç»Ļ\":110595,\"æħ¢æħ¢çļĦ\":110596,\"æĤ²ä¼¤\":110597,\"æľ¬æľŁ\":110598,\"äºĨå¤ļå°ĳ\":110599,\"è¿Ļè®©\":110600,\"åĲĮçŃī\":110601,\"æ¸ħæĺİ\":110602,\"ä¸ªåŁİå¸Ĥ\":110603,\"æºĸåĤĻ\":110604,\"åĩłä¹İæĺ¯\":110605,\"å¼ºåĬĽ\":110606,\"ä¿¯\":110607,\"æ°´ç¨»\":110608,\"åĽºå®ļçļĦ\":110609,\"æł¸åĩĨ\":110610,\"è¯´æľį\":110611,\"é¡¯ç¤º\":110612,\"è¿Ļå¥Ĺ\":110613,\"æĻºæħ§åŁİå¸Ĥ\":110614,\"å±ĭé¡¶\":110615,\"ä¸įæĿ¥\":110616,\"çĶŁé²ľ\":110617,\"çŁ¥æĥħ\":110618,\"æĬķèº«\":110619,\"åĳĬè¯īæĪĳä»¬\":110620,\"ä¸īåĽĽ\":110621,\"ä¸ĩä¸Ģ\":110622,\"è¾Ĩè½¦\":110623,\"ä¸ºä¹ĭ\":110624,\"åĪ°æĹ¶åĢĻ\":110625,\"è¿Ļæīįæĺ¯\":110626,\"åĲįçīĮ\":110627,\"åºŁæ°´\":110628,\"åİ»å¹´åĲĮæľŁ\":110629,\"å¹´éĻĲ\":110630,\"éģĭåĭķ\":110631,\"åıĮçľ¼\":110632,\"è¦ģç´§\":110633,\"å¯¹çŃĸ\":110634,\"åľºé¦Ĩ\":110635,\"çĻ¾ç§ĳ\":110636,\"è¶Ĭéĩİ\":110637,\"å¯ĮåĲ«\":110638,\"å¤§å¤ļæķ°äºº\":110639,\"æľĢå°ĳ\":110640,\"åı¬åĶ¤\":110641,\"åħ¸èĮĥ\":110642,\"åĨľæľº\":110643,\"æŃ£æĸĩ\":110644,\"åºĶçĶ¨äºİ\":110645,\"æ·±èĢķ\":110646,\"ä¿Ń\":110647,\"ä»Ģä¹Īä¸ľè¥¿\":110648,\"å¥Ĺé¤Ĳ\":110649,\"å½ĵéĢī\":110650,\"å·¦æīĭ\":110651,\"è°ĥçĲĨ\":110652,\"æĻļé¤Ĳ\":110653,\"éļ¾åħ³\":110654,\"åĩŃè¯ģ\":110655,\"çĪ±äºº\":110656,\"æĮĩè´£\":110657,\"è´£ç¼ĸ\":110658,\"çļĦä¸Ģæ¬¾\":110659,\"éĵ²\":110660,\"åįģä¸ª\":110661,\"èĢ»\":110662,\"æľįåĬ¡åķĨ\":110663,\"åľ°çĭ±\":110664,\"è¿ŀå¿Ļ\":110665,\"åĽ°æĥĳ\":110666,\"çļĵ\":110667,\"ä¸įåĲĥ\":110668,\"çİ°åľ¨å·²ç»ı\":110669,\"çĽĺçĤ¹\":110670,\"ä¸įåģľåľ°\":110671,\"ç®¡çĲĨæ¨¡å¼ı\":110672,\"è¿Ļæ®µæĹ¶éĹ´\":110673,\"æ¤°\":110674,\"ç¤¼åĮħ\":110675,\"æµģè½¬\":110676,\"æī«çłģ\":110677,\"éĽĨä¸Ńåľ¨\":110678,\"æ±ĤåĬ©\":110679,\"åįĬä¸ª\":110680,\"å¿«éĢŁå¢ŀéķ¿\":110681,\"å¾Ģä¸ĭ\":110682,\"è¯ĦåĪĨ\":110683,\"å°±æĥ³\":110684,\"åķĨåĬ¡éĥ¨\":110685,\"æľīéĹ®é¢ĺ\":110686,\"èİ·åĪ©\":110687,\"æ¯ĽçĹħ\":110688,\"æĦŁåºĶ\":110689,\"èī¯æĢ§\":110690,\"åĪĨæŃ§\":110691,\"åĨī\":110692,\"æĪĳä»¬çİ°åľ¨\":110693,\"è¦ģåĬłå¼º\":110694,\"å·§å¦Ļ\":110695,\"èŀºæĹĭ\":110696,\"åĪĩæį¢\":110697,\"çĭĦ\":110698,\"é¡ºçķħ\":110699,\"å°¤åħ¶æĺ¯åľ¨\":110700,\"èĬĿéº»\":110701,\"éļ¾è¿ĩ\":110702,\"æĹĹå¸ľ\":110703,\"å¤įåį°\":110704,\"å¤įåį°ä»¶\":110705,\"å¿ħéľĢ\":110706,\"å¯¹å¤ĸå¼ĢæĶ¾\":110707,\"éļ¾åıĹ\":110708,\"åİŁæĿ¥æĺ¯\":110709,\"ç®ĹäºĨ\":110710,\"é«ĺå±±\":110711,\"ç¦»èģĮ\":110712,\"çµĦç¹\":110713,\"çµĦç¹Ķ\":110714,\"å±ģèĤ¡\":110715,\"çĻ¾å®¶\":110716,\"éģĩä¸Ĭ\":110717,\"æĺĶæĹ¥\":110718,\"ä¸įå®¹\":110719,\"çĽĳç®¡éĥ¨éĹ¨\":110720,\"ä¸»æĦı\":110721,\"æµģåŁŁ\":110722,\"è·Įå¹ħ\":110723,\"èĩ³ä¸Ĭ\":110724,\"åĪ«è¯´\":110725,\"æĺ¯æ¯Ķè¾ĥ\":110726,\"å®ıè§Ĥç»ıæµİ\":110727,\"å¸Ĥåľºä¸»ä½ĵ\":110728,\"æ±¡æŁĵçī©\":110729,\"æķĳæ²»\":110730,\"ä¸°æĶ¶\":110731,\"åŃĺæĶ¾\":110732,\"åĩĦ\":110733,\"éĩĳå±±\":110734,\"æį¢äºĨ\":110735,\"ä¸ĵäºº\":110736,\"éĹľæĸ¼\":110737,\"æĹ¢è¦ģ\":110738,\"åĽ½è¶³\":110739,\"éļĭ\":110740,\"åıįåĩ»\":110741,\"èµ·èº«\":110742,\"åħĪæĺ¯\":110743,\"å¸ĮæľĽèĥ½å¤Ł\":110744,\"åĪ¶è®¢\":110745,\"åºĹéĿ¢\":110746,\"åĸĢ\":110747,\"æķĻä½ł\":110748,\"éĻįæ¸©\":110749,\"åĬĽæ±Ĥ\":110750,\"ä¸īçĻ¾\":110751,\"çī©ä»·\":110752,\"ä¸¢å¤±\":110753,\"å¢Ļä¸Ĭ\":110754,\"éĥ¨ä»½\":110755,\"æł·æĿ¿\":110756,\"ä¹ĭæĦı\":110757,\"ç½ĳå°ıç¼ĸ\":110758,\"ä¸ĸä¸Ĭ\":110759,\"è°ĥè¯ķ\":110760,\"æ±¡æŁĵéĺ²æ²»\":110761,\"å½±éĻ¢\":110762,\"å®Įåħ¨åı¯ä»¥\":110763,\"éĢļåħ³\":110764,\"ä¹īåĬ¡æķĻèĤ²\":110765,\"æ²¡æľīåĬŀæ³ķ\":110766,\"èĢ¿\":110767,\"å¦³\":110768,\"æĹłæĥħ\":110769,\"å¾ĹçĽĬ\":110770,\"å¾ĹçĽĬäºİ\":110771,\"æľŁçĽ¼\":110772,\"å¨±ä¹Ĳåľº\":110773,\"çĶ²æĸ¹\":110774,\"ä¸Ģæ±½\":110775,\"çĹ°\":110776,\"çĸĳä¼¼\":110777,\"æĸ°æµªå¾®åįļ\":110778,\"å¼ºè¡Į\":110779,\"å½ĵä»ĸ\":110780,\"èĥº\":110781,\"çĶ¨æĪ·æıĲä¾Ľ\":110782,\"åĮºå§Ķ\":110783,\"æĦ¿æĻ¯\":110784,\"æĬĺæī£\":110785,\"å¤±è¸ª\":110786,\"è¿«åĪĩ\":110787,\"åŃĹæ¯į\":110788,\"åĴ¯\":110789,\"èªįèŃĺ\":110790,\"ä»Ģä¹ĪæĦıæĢĿ\":110791,\"çĽĴåŃĲ\":110792,\"å½ķéŁ³\":110793,\"å»ºè®¾å·¥ç¨ĭ\":110794,\"ä¸ļä½Ļ\":110795,\"å®ŀè·µæ´»åĬ¨\":110796,\"çľŁç©º\":110797,\"çĤĸ\":110798,\"åľ¨è·¯ä¸Ĭ\":110799,\"ä¸»è¦ģåĮħæĭ¬\":110800,\"è¯¥æĢİä¹Ī\":110801,\"æĢ»æľī\":110802,\"æĢ§æĦŁ\":110803,\"æ°ĳèĪª\":110804,\"å¼ĢåºĹ\":110805,\"æ¬ºéªĹ\":110806,\"çªģåĩ»\":110807,\"ç¼ºå¤±\":110808,\"æī§ä¸ļ\":110809,\"åľ°éģĵ\":110810,\"å¹¶æĹł\":110811,\"æ°ĳåĬŀ\":110812,\"ç»Ħç»ĩçĶŁæ´»\":110813,\"æĪĳå¦Ī\":110814,\"è¨ĺèĢħ\":110815,\"ç®¡åĪ¶\":110816,\"æī¾ä¸ª\":110817,\"èĹ»\":110818,\"çĤİçĹĩ\":110819,\"äºĴåĬ©\":110820,\"æµıè§ĪåĻ¨\":110821,\"çİ©å®¶æĿ¥è¯´\":110822,\"éĻįä½İäºĨ\":110823,\"è£Ķ\":110824,\"æĮ£éĴ±\":110825,\"åķĨæľº\":110826,\"æĶ¹è£ħ\":110827,\"æµģæµª\":110828,\"æĶ¿æ³ķ\":110829,\"èĢģå¤´\":110830,\"çĶŁäº§åĴĮ\":110831,\"ç©Ĺ\":110832,\"äº²çĪ±\":110833,\"äº²çĪ±çļĦ\":110834,\"å±¥èģĮ\":110835,\"åŁİéĩĮ\":110836,\"ç»ĨåĪĨ\":110837,\"åĬ³åĬ¨åĲĪåĲĮ\":110838,\"åľ¨æĹ¥æľ¬\":110839,\"å¨ģå°Ķ\":110840,\"åį«è§Ĩ\":110841,\"éĢ£çµĲ\":110842,\"çĿĢéĩį\":110843,\"æĬĺç£¨\":110844,\"åĽ¾ä¸º\":110845,\"çľ·\":110846,\"å·¥åºı\":110847,\"æĵģ\":110848,\"æĵģæľī\":110849,\"ç½ĳç«Ļåľ°åĽ¾\":110850,\"çļĦä¸Ģå¤§\":110851,\"ç»Ħç»ĩå®ŀæĸ½\":110852,\"æĬĽå¼ĥ\":110853,\"åĴĮæĶ¯æĮģ\":110854,\"æ³ķåĪĻ\":110855,\"æµªæ½®\":110856,\"çİ°æľīçļĦ\":110857,\"åĩłçİĩ\":110858,\"ä¸ºå®¢æĪ·\":110859,\"åįģä¸ĩ\":110860,\"è¹Ħ\":110861,\"çªģåĩºéĹ®é¢ĺ\":110862,\"åıĥåĬł\":110863,\"éĥ½ä¼ļæľī\":110864,\"çĽ¤\":110865,\"è°ģéĥ½\":110866,\"æīĭåĬ¨\":110867,\"çĽ´è¾¾\":110868,\"çĤ¹å¤ļ\":110869,\"éĺ¶å±Ĥ\":110870,\"ä¸įä½³\":110871,\"éĤ£æ®µ\":110872,\"æ»¨æµ·\":110873,\"æĺ¯åĽ½åĨħ\":110874,\"æĪĳå¸ĮæľĽ\":110875,\"åĲĽåŃĲ\":110876,\"è§ĤéŁ³\":110877,\"åģļé¥Ń\":110878,\"æ±½è»Ĭ\":110879,\"åħ³ç¨İ\":110880,\"çľ¼åīįçļĦ\":110881,\"æ°´éĿ¢\":110882,\"èĢ³æľº\":110883,\"è¿½è¸ª\":110884,\"æİ¨éĢģ\":110885,\"éĴ±åĮħ\":110886,\"æģ¶å¿ĥ\":110887,\"æµ·åŁŁ\":110888,\"å·į\":110889,\"å¼ĢæĿ¥\":110890,\"è¡¨æĢģ\":110891,\"ä»ªè¡¨\":110892,\"å¹³åİŁ\":110893,\"åįģå¤ļå¹´\":110894,\"ä¹ŁæĹłæ³ķ\":110895,\"åħ¼é¡¾\":110896,\"è¡£æŁľ\":110897,\"æł½åŁ¹\":110898,\"æĪ¿æºĲ\":110899,\"è®¾ç«ĭäºĨ\":110900,\"ä¸ĩåĲį\":110901,\"æķ°é¢Ŀ\":110902,\"è¦ģåĿļæĮģ\":110903,\"åĲīæŀĹçľģ\":110904,\"è¯·èģĶç³»\":110905,\"ç»ıåİĨè¿ĩ\":110906,\"çļĦæľ¬è´¨\":110907,\"åħ¥éĹ¨\":110908,\"æľ¬æ¡Ī\":110909,\"çİĩè¾¾åĪ°\":110910,\"åı°éĺ¶\":110911,\"éĴŀ\":110912,\"æĪĳèĥ½\":110913,\"èİ²èĬ±\":110914,\"éĴł\":110915,\"ä¸Ģäºĭ\":110916,\"åİŁæľīçļĦ\":110917,\"æ¯ıåĢĭ\":110918,\"æ¯Ķäºļè¿ª\":110919,\"æ£ĭçīĮæ¸¸æĪı\":110920,\"ä¸įä¼ļæľī\":110921,\"å½ĴæĿ¥\":110922,\"äºĶçĻ¾\":110923,\"è¿ĩé«ĺ\":110924,\"éĽ·è¾¾\":110925,\"ä¸Ģèµ·åİ»\":110926,\"æķĻå¯¼\":110927,\"å°±è¯Ĭ\":110928,\"å°±å¾Ī\":110929,\"ä¸įåĲĮäºİ\":110930,\"ä¿º\":110931,\"å¸ĸåŃĲ\":110932,\"æĶ¿åįıå§Ķåĳĺ\":110933,\"çĸ«æĥħå½±åĵį\":110934,\"åĪĨè£Ĥ\":110935,\"ä¸ºä»Ģä¹Īä¼ļ\":110936,\"äºĶæĺŁ\":110937,\"å°ĳåĦ¿\":110938,\"æĬ¢éĻ©\":110939,\"æ¢¦è§ģ\":110940,\"è®°èĢħéĩĩè®¿\":110941,\"å±±è·¯\":110942,\"æĪĳä¸ªäºº\":110943,\"æ²Ļæ»©\":110944,\"è¹Ń\":110945,\"æĶ¹è®Ĭ\":110946,\"æĸ°åŀĭåĨł\":110947,\"æĸ°åŀĭåĨłçĬ¶\":110948,\"åĮ»æĬ¤\":110949,\"åĮ»æĬ¤äººåĳĺ\":110950,\"æµ·å°Ķ\":110951,\"åħ³äºİæĪĳä»¬\":110952,\"éĻ¤å¤ĸ\":110953,\"åºļ\":110954,\"å®£åĳĬ\":110955,\"ä¸īåįĥ\":110956,\"æ¦¨\":110957,\"ç§ĳæĬĢå¤§åŃ¦\":110958,\"ä¸ĥåħ«\":110959,\"é¡ºåºĶ\":110960,\"çĪ¸çĪ¸å¦Īå¦Ī\":110961,\"éĢīåıĸ\":110962,\"åī§çĥĪ\":110963,\"ä¹¡æĿĳæĹħæ¸¸\":110964,\"ç§¯æŀģæİ¢ç´¢\":110965,\"è¡¨çİ°ä¸º\":110966,\"å¾Īæ¸ħæ¥ļ\":110967,\"å¤§åĨĽ\":110968,\"æĿ¥çĶµ\":110969,\"å¥ĹæĪ¿\":110970,\"çİ°è¡Į\":110971,\"äº«åıĹåĪ°\":110972,\"çľĭçĤ¹\":110973,\"åĽºå®ļèµĦäº§\":110974,\"ä»¥äººä¸º\":110975,\"ä»¥äººä¸ºæľ¬\":110976,\"ä¸įå®Į\":110977,\"éĻįéĽ¨\":110978,\"åģļçļĦäºĭæĥħ\":110979,\"å¹¶äºİ\":110980,\"é¡½å¼º\":110981,\"èĢ¸\":110982,\"åĺ´å·´\":110983,\"çĽ¸åħ³ä¿¡æģ¯\":110984,\"æĪĳæ²¡\":110985,\"æĪĺçķ¥æĢ§\":110986,\"æĢĿå¿µ\":110987,\"åĪĺå¤ĩ\":110988,\"åĬ©æĶ»\":110989,\"é£İè²Į\":110990,\"éĿ¢å¯¹éĿ¢\":110991,\"ç§¯æŀģå¼Ģå±ķ\":110992,\"çĸĹæķĪ\":110993,\"çľĭä¹¦\":110994,\"ç¼ºåı£\":110995,\"åĽ½æ°ĳç»ıæµİ\":110996,\"ä½¿çĶ¨æĿĥ\":110997,\"éģ¥è¿ľ\":110998,\"å¡«è¡¥\":110999,\"ç¬¬ä¸īäºº\":111000,\"åįĬå¤ľ\":111001,\"æŃ¦æ±īå¸Ĥ\":111002,\"æĪĳåıĳçİ°\":111003,\"ä¼ĺæĥłæĶ¿çŃĸ\":111004,\"é£İåı£\":111005,\"å°±ä¸įèĥ½\":111006,\"ä¸ºä¸»è¦ģ\":111007,\"æµģåĩº\":111008,\"å´ĩæĭľ\":111009,\"å¹¶ä¸įèĥ½\":111010,\"é«ĺä¸ī\":111011,\"ä¸ĸçķĮä¸ĬæľĢ\":111012,\"æĥ³å¿ħ\":111013,\"åħ¶æīĢ\":111014,\"åĢĻéĢī\":111015,\"åĢĻéĢīäºº\":111016,\"ä¸įçĪ±\":111017,\"åī¯ä½ľçĶ¨\":111018,\"äººæ°ĳæĹ¥æĬ¥\":111019,\"æĪĳä¸įæĺ¯\":111020,\"å®ŀçī©\":111021,\"çĶµåİĤ\":111022,\"ä¹Łç®Ĺæĺ¯\":111023,\"æľīéĹľ\":111024,\"æľīèĥ½åĬĽ\":111025,\"æĮĤåľ¨\":111026,\"çľ¼ä¸ĭ\":111027,\"çº¦ç¿°\":111028,\"å°ıåŃ¦çĶŁ\":111029,\"èµ·åĪ°äºĨ\":111030,\"å·¥å¤«\":111031,\"åĲĮå¿ĥ\":111032,\"åĿ¦è¨Ģ\":111033,\"çłĮ\":111034,\"åıĳæĮ¥äºĨ\":111035,\"èģĮä¸ļéģĵå¾·\":111036,\"è¿ĻäºĽå¹´\":111037,\"å¿µå¤´\":111038,\"èĢģé¼ł\":111039,\"åħ¨èµĦ\":111040,\"åħ¨èµĦåŃĲ\":111041,\"ä¸Ģåĳ³\":111042,\"å¤ļä¸ĩåħĥ\":111043,\"æł¼æľĥ\":111044,\"éķ¿éĢĶ\":111045,\"å¸¦èµ°\":111046,\"èĭ±å¯¸\":111047,\"æĸĩä½ĵ\":111048,\"å¯¹ä»ĸä»¬\":111049,\"åĵŃäºĨ\":111050,\"å¡«æĬ¥\":111051,\"çīĪæĿĥå£°æĺİ\":111052,\"çĶµçº¿\":111053,\"è´Ńçī©ä¸Ńå¿ĥ\":111054,\"é¥±æ»¡\":111055,\"ä½İå¤´\":111056,\"å¼ºè¿«\":111057,\"ä¿Ŀæ´ģ\":111058,\"æ¬§åĨł\":111059,\"çĽ¸è¿ŀ\":111060,\"è®¤è´Ń\":111061,\"çģ«æĺŁ\":111062,\"é«ĺå°Ķ\":111063,\"é«ĺå°Ķå¤«\":111064,\"èĳ«èĬ¦\":111065,\"æłĩæ³¨\":111066,\"çļĦçĲĨæĥ³\":111067,\"æł¸éħ¸\":111068,\"æł¸éħ¸æ£Ģæµĭ\":111069,\"åĬī\":111070,\"ä¸ĢèĪ¬æĺ¯\":111071,\"æĢĿç´¢\":111072,\"è½¨è¿¹\":111073,\"çĥŃå¸¦\":111074,\"éĻ£\":111075,\"åĩĨç¡®æĢ§\":111076,\"æĪ´çĿĢ\":111077,\"åľ¨çĶŁæ´»ä¸Ń\":111078,\"æīĢèĥ½\":111079,\"æľ¯åĲİ\":111080,\"å¸¦ä½ł\":111081,\"ç¥ł\":111082,\"æ®ĭéħ·\":111083,\"ä¹Łåıªæĺ¯\":111084,\"çĶ³è´Ń\":111085,\"ä¸¾åĬŀäºĨ\":111086,\"æľīæĦıä¹ī\":111087,\"æĹºçĽĽ\":111088,\"åľ¨ç¶²\":111089,\"åľ¨ç¶²è·¯ä¸Ĭ\":111090,\"å¾Īå¤§ç¨ĭåº¦\":111091,\"ç®¡è¾ĸ\":111092,\"çĸ«æĥħæľŁéĹ´\":111093,\"è§¦æĳ¸\":111094,\"éĺ¶æ®µæĢ§\":111095,\"ä¼ļè§īå¾Ĺ\":111096,\"çļĦçĶ»éĿ¢\":111097,\"æİ¥åıĹäºĨ\":111098,\"è¡¨è¾¾äºĨ\":111099,\"éĤĵå°ı\":111100,\"éĤĵå°ıå¹³\":111101,\"åħļé£İ\":111102,\"åħļé£İå»īæĶ¿\":111103,\"åķĨåŃ¦éĻ¢\":111104,\"åħĳæį¢\":111105,\"é£Łåĵģèį¯åĵģ\":111106,\"éĿŀå¸¸å¥½çļĦ\":111107,\"çľ¯\":111108,\"çº³ç±³\":111109,\"åĬ¨æĳĩ\":111110,\"åĽŀéģ¿\":111111,\"çľĭèĳĹ\":111112,\"æ¬¾é¡¹\":111113,\"åħ«å¹´\":111114,\"åģļä¸ª\":111115,\"æĸĩæ¡£\":111116,\"éĩĳèŀįç§ĳæĬĢ\":111117,\"åħ¶ä¸Ńæľī\":111118,\"äºĨä¸Ģç³»åĪĹ\":111119,\"æĹĹèĪ°åºĹ\":111120,\"ç§°èµŀ\":111121,\"éĽ¢éĸĭ\":111122,\"åĪ¶åĨ·\":111123,\"å®¶éĹ¨åı£\":111124,\"åįģå¤ļ\":111125,\"ä¼´ä¾£\":111126,\"çľĭçĹħ\":111127,\"æĭīçĿĢ\":111128,\"æīĴ\":111129,\"çĸ²æĥ«\":111130,\"å°ĳæķ°æ°ĳæĹı\":111131,\"åĽ¾å½¢\":111132,\"è½§\":111133,\"å¢ŀéĩı\":111134,\"é¥²åħ»\":111135,\"çģ«å±±\":111136,\"æ¯ıä¸ªæľĪ\":111137,\"ä½ľä¸ºä¸ĢåĲį\":111138,\"è½´æī¿\":111139,\"æĸĩä¹¦\":111140,\"ç¼ķ\":111141,\"åħ·ä½ĵæĥħåĨµ\":111142,\"çĹĽçĤ¹\":111143,\"çĽ´éĶĢ\":111144,\"å¡Ĭ\":111145,\"ä¹Łæľĥ\":111146,\"çĥŃæ½®\":111147,\"å¹³æ°ĳ\":111148,\"æ¼ĶåĶ±ä¼ļ\":111149,\"æķĻçłĶ\":111150,\"éĢĥéģ¿\":111151,\"ä¸Ģè´¯\":111152,\"å°±è¶Ĭ\":111153,\"å®ŀå®ŀåľ¨\":111154,\"å®ŀå®ŀåľ¨åľ¨\":111155,\"ä¹łè¿ĳå¹³æĢ»\":111156,\"æºº\":111157,\"å¿ĥåºķ\":111158,\"éķ¿å¾ģ\":111159,\"åª½åª½\":111160,\"ç¬¬ä¸īæ¬¡\":111161,\"åĩºæ¼Ķ\":111162,\"çĭĢæ³ģ\":111163,\"å°Ķæĸ¯\":111164,\"ä»£çĲĨåķĨ\":111165,\"çĨı\":111166,\"çļĦå¯¹è±¡\":111167,\"çĶµéĩı\":111168,\"è¡ĮåĪĹ\":111169,\"åĽ½äºº\":111170,\"è·ĳäºĨ\":111171,\"åįĶåĬ©\":111172,\"èĲ¥è¿Ĳ\":111173,\"å¸ĪåħĦ\":111174,\"æ¦®\":111175,\"æĥ³åĥı\":111176,\"æĢ§å¼º\":111177,\"ç§ĳåŃ¦çłĶç©¶\":111178,\"å»¶å®ī\":111179,\"ä¸¥æł¼èĲ½å®ŀ\":111180,\"é¢Ĩä¼ļ\":111181,\"çĽ¸å·®\":111182,\"è·¯äºº\":111183,\"çĶ«\":111184,\"æľīä»·åĢ¼\":111185,\"æľīä»·åĢ¼çļĦ\":111186,\"ç¾İåĽ¢\":111187,\"æ°ĳä¸»çĶŁæ´»\":111188,\"æĪĳæīį\":111189,\"ç¾İåĽ½äºº\":111190,\"æ°Ķåĳ³\":111191,\"åıįå°Ħ\":111192,\"çļĦåĨ³å¿ĥ\":111193,\"å¤§è±Ĩ\":111194,\"äº¤ä»£\":111195,\"è¿Ľåĩº\":111196,\"åıįæĬĹ\":111197,\"æĮĩçļĦæĺ¯\":111198,\"ä»·ä½į\":111199,\"è¿Ľé©»\":111200,\"ä¸ĬçĻ¾\":111201,\"ä½įåĪĹ\":111202,\"ä¸ŃåĽ½ä¼ģä¸ļ\":111203,\"çļĦå¥½å¤Ħ\":111204,\"ä¸»ç¼ĸ\":111205,\"æ±½æ²¹\":111206,\"ä½ĨæĪĳä»¬\":111207,\"æĢİä¹Īçľĭ\":111208,\"é»Ħå±±\":111209,\"å¤ļåªĴä½ĵ\":111210,\"åĲİåį«\":111211,\"èİ·å¾ĹæĽ´å¤ļ\":111212,\"åĬ¡å¿ħ\":111213,\"ä¸ºå¥ĳæľº\":111214,\"é¦ĸé¥°\":111215,\"ä¸ĩåįļ\":111216,\"è¶ĬæĿ¥è¶Ĭå¤§\":111217,\"ä¸ĵé¡¹è¡ĮåĬ¨\":111218,\"å¥ĭè¿Ľ\":111219,\"ä»įçĦ¶æĺ¯\":111220,\"è´¨æĦŁ\":111221,\"å¦Ĥæŀľä¸įæĺ¯\":111222,\"ç«Ļèµ·æĿ¥\":111223,\"ä¹¾éļĨ\":111224,\"åı¯æĢķçļĦ\":111225,\"å¯Įè´µ\":111226,\"æ¸ħç®Ĺ\":111227,\"åĲĳä¸ĭ\":111228,\"åĢļ\":111229,\"çļĦçŃĶæ¡Ī\":111230,\"èĪ¹ä¸Ĭ\":111231,\"çļĦçľŁå®ŀæĢ§\":111232,\"çŃīåĬŁèĥ½\":111233,\"åĸľåī§\":111234,\"å¨ģåĬĽ\":111235,\"æĸ°é¢ĸ\":111236,\"æł¸çĶµ\":111237,\"æĬ¥éĶĢ\":111238,\"æķħä¹¡\":111239,\"ä¼´éļı\":111240,\"éŀŃ\":111241,\"å¦Ĭå¨ł\":111242,\"åĪĨåĮĸ\":111243,\"æľīå¾Īå¤§\":111244,\"æĢİä¹Īè¯´\":111245,\"æĻĤä»£\":111246,\"äº§åĩº\":111247,\"ä»ĭç»įè¯´\":111248,\"å¤ĦçĲĨåĻ¨\":111249,\"èĨ¨èĥĢ\":111250,\"åī¯å¸Ĥéķ¿\":111251,\"çļĦå¦»åŃĲ\":111252,\"æł·åĵģ\":111253,\"åĲĮæ¯Ķä¸ĭéĻį\":111254,\"åħĥå·¦åı³\":111255,\"çĶ¨èĩªå·±çļĦ\":111256,\"é«ĺéĽĦ\":111257,\"æĺ¥æĻļ\":111258,\"ä¹Łæľīå¾Īå¤ļ\":111259,\"çľ¼çĲĥ\":111260,\"æķ£æŃ¥\":111261,\"ä»ĸä»¬éĥ½\":111262,\"ç¬¬ä¸Ģå®¶\":111263,\"åĬŀå¥½\":111264,\"å®īéĺ²\":111265,\"ä¸Ģä¸ĩ\":111266,\"åľ¨éĩĮéĿ¢\":111267,\"éŁ³é¢ĳ\":111268,\"åı£åı·\":111269,\"ä¸Ģè¶Ł\":111270,\"ç¦ıçī¹\":111271,\"é³ŀ\":111272,\"æĥĬèī³\":111273,\"æĸ°å¨ĺ\":111274,\"ç»¿èī²åıĳå±ķ\":111275,\"ä¸Ńå¼ı\":111276,\"ä¹Łåıªæľī\":111277,\"çİ°èº«\":111278,\"åı¯ä¾Ľ\":111279,\"æ¯ıä¸Ģä¸ªäºº\":111280,\"ç¬¬ä¸īèĢħ\":111281,\"åľ°å½¢\":111282,\"éĴ¢ç»ĵæŀĦ\":111283,\"çĽĳçĿ£æ£ĢæŁ¥\":111284,\"åı«æĪĳ\":111285,\"èĩ´æķ¬\":111286,\"æ´Ĺæīĭ\":111287,\"ä¸ĭè°ĥ\":111288,\"åº·çĨĻ\":111289,\"æĪĲäº¤éĩı\":111290,\"ä¹ŁæĪĲä¸º\":111291,\"åħīæ»ĳ\":111292,\"å®Įæķ´æĢ§\":111293,\"çģ¼\":111294,\"ç¶²éłģ\":111295,\"éķ¿å¯¿\":111296,\"éģ©çĶ¨\":111297,\"çļĦä¸Ģé¡¹\":111298,\"çŀ©çĽ®\":111299,\"æĬĬèĩªå·±çļĦ\":111300,\"éĵ¶è¡Įåį¡\":111301,\"å°±å¿ħé¡»\":111302,\"ç¾İçĻ½\":111303,\"éŀįå±±\":111304,\"æľ¬é¢Ĩ\":111305,\"ä¸Ģç¢Ĺ\":111306,\"æīĵæ³ķ\":111307,\"æĤ¨å¥½\":111308,\"å¯¹åŃ©åŃĲ\":111309,\"æĬ¥éģĵç§°\":111310,\"ä¼łåĩº\":111311,\"å¤§èĩ£\":111312,\"ç¬ĭ\":111313,\"çĽı\":111314,\"é¾ļ\":111315,\"çĽ´çº¿\":111316,\"æĻºåºĵ\":111317,\"ç§Łè½¦\":111318,\"é£İåĳ³\":111319,\"çľĭä¸Ģä¸ĭ\":111320,\"æİ¨éĶĢ\":111321,\"éĥ¨éĥ¨éķ¿\":111322,\"è´¨éĩıåĴĮ\":111323,\"åĪĬçĻ»\":111324,\"å·¥ä¸ļåĮĸ\":111325,\"çİĩä¸º\":111326,\"éĽ¶ä»¶\":111327,\"ç¡¬åĮĸ\":111328,\"ä¸Ĭåįĥ\":111329,\"ç»ıéªĮåĢ¼\":111330,\"å¹³è¡Į\":111331,\"å£°éģĵ\":111332,\"æľįåĬ¡è´¨éĩı\":111333,\"çĶŁçĶ¢\":111334,\"æľĢå®¹æĺĵ\":111335,\"ä¸Ģæŀļ\":111336,\"å¹´æĬ¥\":111337,\"åħ¬ç½ĳ\":111338,\"åħ¬ç½ĳå®ī\":111339,\"åħ¬ç½ĳå®īå¤ĩ\":111340,\"çļĦèĥ½éĩı\":111341,\"å®ŀéĻħè¡ĮåĬ¨\":111342,\"è¦ģä¸įè¦ģ\":111343,\"æĹ¥æľ¬äºº\":111344,\"èĢ¶ç¨£\":111345,\"ç¼ĸåī§\":111346,\"æ¶©\":111347,\"åį°å°¼\":111348,\"ä¸Ĭä¸ĭæ¸¸\":111349,\"åĩłåı¥\":111350,\"ä¸Ńéĵģ\":111351,\"ç°¡åĸ®\":111352,\"èĩªå¸¦\":111353,\"çĶŁäºİ\":111354,\"ä¸Ģåı£æ°Ķ\":111355,\"åĭ¤å¥ĭ\":111356,\"éĻįä»·\":111357,\"å±ķçİ°äºĨ\":111358,\"å¸ĥæĭī\":111359,\"ä¼ļéĢīæĭ©\":111360,\"çļĦç»ıåħ¸\":111361,\"å¥½æľĭåıĭ\":111362,\"è½¦éģĵ\":111363,\"æķ´åĢĭ\":111364,\"åľĵ\":111365,\"éķ¿æľŁä»¥æĿ¥\":111366,\"æĬķå½±\":111367,\"çļĩåĨł\":111368,\"è¿ĩå¤§\":111369,\"åĳĬè¯īä»ĸ\":111370,\"ä¼ģä¸ļæıĲä¾Ľ\":111371,\"æĬ½è±¡\":111372,\"éĢĤåº¦\":111373,\"çļĦå¥³åŃ©\":111374,\"èµ·ä¼ı\":111375,\"çļĦåĬŁæķĪ\":111376,\"ä¸ĵé¡¹æķ´æ²»\":111377,\"åı¯éĢļè¿ĩ\":111378,\"ä¸įåĲĮç¨ĭåº¦\":111379,\"å¼Ĥè®®\":111380,\"åĩĢèµĦäº§\":111381,\"åĳĹ\":111382,\"ä»Ģä¹Īåĳ¢\":111383,\"å·¡éĢ»\":111384,\"è¸ıä¸Ĭ\":111385,\"ä½Ĩå®ĥ\":111386,\"ç²¾åº¦\":111387,\"ç®¡å±Ģ\":111388,\"ç¬¬ä¸ĢåĲį\":111389,\"åĨħåŃĺ\":111390,\"æĳĨåľ¨\":111391,\"åī©ä¸ĭ\":111392,\"ä¸»ä½ĵè´£ä»»\":111393,\"çĤ¹åįĬ\":111394,\"ä»¥èĩ³äºİ\":111395,\"åħ»èĢģä¿ĿéĻ©\":111396,\"æĦŁåıĹåĪ°äºĨ\":111397,\"çŁ¥åĲįçļĦ\":111398,\"å¯Įè±ª\":111399,\"å¦¥åĸĦ\":111400,\"åŃĻåŃĲ\":111401,\"éĵĤ\":111402,\"è¯´èĩªå·±\":111403,\"è®©æĤ¨\":111404,\"æķ°æİ§\":111405,\"çļĦçľ¼åħī\":111406,\"æ³¨éĶĢ\":111407,\"çļĦçģµéŃĤ\":111408,\"è¿ĺä¸įéĶĻ\":111409,\"éĹ®ä»ĸ\":111410,\"èĩªä¸»çłĶåıĳ\":111411,\"èĵĭ\":111412,\"ç´«èī²\":111413,\"åĽ½å®¶å®īåħ¨\":111414,\"è¾½å®ģçľģ\":111415,\"ä¹Łæ¯Ķè¾ĥ\":111416,\"ç¾İèĤ¡\":111417,\"ä¸įç¡®å®ļæĢ§\":111418,\"å¿ĥå¤´\":111419,\"æĪ³\":111420,\"çº§åĪ«çļĦ\":111421,\"è®ºè¿°\":111422,\"çļĦåĽŀçŃĶ\":111423,\"ä¿Ŀè¯ģéĩĳ\":111424,\"çŃīè¡Įä¸ļ\":111425,\"å¹¸ç¦ıæĦŁ\":111426,\"æŃ§è§Ĩ\":111427,\"æľºç¥¨\":111428,\"æ´¾äºº\":111429,\"èĩ´åĳ½\":111430,\"åĺ´è§Ĵ\":111431,\"æĸ°éĹ»ä¸Ńå¿ĥ\":111432,\"æĶ¾å¼ĥäºĨ\":111433,\"å®ľå±ħ\":111434,\"åĨĻä¸ĭ\":111435,\"éĹ®çŃĶ\":111436,\"è¿ĻéĩĮæĺ¯\":111437,\"å¤ļåľ°\":111438,\"åĮºåŁŁåĨħ\":111439,\"åīµæĸ°\":111440,\"çľĭä»ĸ\":111441,\"æī§æ³ķäººåĳĺ\":111442,\"åĬ¨æľº\":111443,\"éŁ³åĵį\":111444,\"çļĦåĳ½è¿Ĳ\":111445,\"é¡¶éĥ¨\":111446,\"åĵŁ\":111447,\"éĥ½æľĥ\":111448,\"æīĵéĢłæĪĲ\":111449,\"æĦıåĽ¾\":111450,\"çļĸ\":111451,\"åĢĴåħ¥\":111452,\"å·´èĲ¨\":111453,\"åĬ©åŃ¦\":111454,\"å¤įåı¤\":111455,\"åĲ¯çĶ¨\":111456,\"åĽ½éĻħå¸Ĥåľº\":111457,\"åĤ¨èĥ½\":111458,\"é»ĳé¾Ļæ±Łçľģ\":111459,\"ä¹ĺè½¦\":111460,\"è¿ĲåĬ¨ä¼ļ\":111461,\"ä¿ĿåĪ©\":111462,\"çŁ³æĿĲ\":111463,\"çµ®\":111464,\"çĤĴä½ľ\":111465,\"çļĦä¿¡ä»»\":111466,\"å°±æĪĲäºĨ\":111467,\"åı¯è§Ĥ\":111468,\"çļĩä¸Ĭ\":111469,\"è¿Ļåĩłå¤©\":111470,\"ä¸ĢéĶ®\":111471,\"åĨ·åĨ»\":111472,\"ä¿Ŀåį«\":111473,\"æł¸æ¡ĥ\":111474,\"åĲĪä½ľåħ³ç³»\":111475,\"éĢģåĩº\":111476,\"æĹĹä¸ĭçļĦ\":111477,\"åľ¨ä¹İ\":111478,\"ä¸ºå¹¿å¤§\":111479,\"åįĪé¤Ĳ\":111480,\"ä¸ĵè®¿\":111481,\"æĪĸå°Ĩ\":111482,\"éĿĴå²Ľå¸Ĥ\":111483,\"å¥Ķè·ĳ\":111484,\"æĹ¥æĬ¥éģĵ\":111485,\"å¥ĳåĲĪ\":111486,\"æĸ°æĺ¥\":111487,\"ä¸įå°ıå¿ĥ\":111488,\"ä¸¤ä¸ī\":111489,\"æĦıæĢĿæĺ¯\":111490,\"åĨ·èĹı\":111491,\"çļĦçĹĩçĬ¶\":111492,\"æĢ§åĳ½\":111493,\"è¶ħæłĩ\":111494,\"å¯Ĩç¢¼\":111495,\"ç§ĳæĬĢèĤ¡ä»½\":111496,\"äºĨä¸Ģæī¹\":111497,\"çĿ£å¯Ł\":111498,\"åªĴä»ĭ\":111499,\"å°Ħæīĭ\":111500,\"ä¿®åħ»\":111501,\"çīĩåĪ»\":111502,\"éĢĤåĲĪèĩªå·±\":111503,\"åıªè¦ģæĺ¯\":111504,\"åĲĥè¿ĩ\":111505,\"éĩĳéĵ¶\":111506,\"çĽ´å±ŀ\":111507,\"åŃ¦éĹ®\":111508,\"åİĭåĪ¶\":111509,\"çªĹå¤ĸ\":111510,\"æĶ¶åĪ°äºĨ\":111511,\"åħ¨åĽ½äººå¤§\":111512,\"ä½Ĩæĺ¯å¯¹äºİ\":111513,\"åľ¨æķ´ä¸ª\":111514,\"çļĦèĥĮåĲİ\":111515,\"åĩıå°ĳäºĨ\":111516,\"åıįèħĲ\":111517,\"åıįèħĲåĢ¡\":111518,\"åıįèħĲåĢ¡å»ī\":111519,\"æĹ·\":111520,\"åĪĨæľŁ\":111521,\"åľ¨æ·±åľ³\":111522,\"æīĵçĿĢ\":111523,\"æī«ä¸Ģ\":111524,\"æī«ä¸Ģæī«\":111525,\"æĶ¿åºľéĥ¨éĹ¨\":111526,\"æİ¥è¿ŀ\":111527,\"å±ŀäºİèĩªå·±\":111528,\"åŃĲå¼¹\":111529,\"åĲĮæł·æĺ¯\":111530,\"æĢ»åħ±\":111531,\"è½¦ä¼ģ\":111532,\"æ¢ĵ\":111533,\"åħ¬é¡·\":111534,\"åıĳå£°\":111535,\"éĴĽ\":111536,\"èµ°åĬ¿åĽ¾\":111537,\"ä¸»èĲ¥\":111538,\"åĸĶ\":111539,\"æķ°æį®åĪĨæŀĲ\":111540,\"ä¸įè¿ľ\":111541,\"æľīåĲį\":111542,\"æľīåĲįçļĦ\":111543,\"åģ¿è¿ĺ\":111544,\"å¾Īä½İ\":111545,\"è®ĵäºº\":111546,\"èĿī\":111547,\"é«ĺè´µ\":111548,\"å°ĳè®¸\":111549,\"æ°Ł\":111550,\"å¹¢\":111551,\"äº²æĥħ\":111552,\"è¿Ļä»¶äºĭæĥħ\":111553,\"çĶ¨é¤Ĳ\":111554,\"çĽ¸åħ³æĸ°éĹ»\":111555,\"å°±åºĶè¯¥\":111556,\"ç»ĪçĤ¹\":111557,\"æĺ¯å¤ļå°ĳ\":111558,\"çĻ»åľº\":111559,\"è¯ķç®¡\":111560,\"è¯ķç®¡å©´åĦ¿\":111561,\"åģļå¤§\":111562,\"åģļå¤§åģļå¼º\":111563,\"çļĦä¾ĭåŃĲ\":111564,\"åħ«ä¸ª\":111565,\"æĺİæĹ¥\":111566,\"çĤ³\":111567,\"èµ°åİ»\":111568,\"éģº\":111569,\"å¢©\":111570,\"ä½ĵä¼ļåĪ°\":111571,\"åĴı\":111572,\"ä¸ĭè¾¾\":111573,\"å¤įåıĳ\":111574,\"è¿½éĢĲ\":111575,\"æīĵåĵį\":111576,\"çļĦéļ±ç§ģæ¬Ĭ\":111577,\"åħ·æľīä¸Ģå®ļ\":111578,\"è¿Ļä¹Īå¤ļå¹´\":111579,\"æłĳæŀĹ\":111580,\"æľĢéķ¿\":111581,\"åĲĮèĥŀ\":111582,\"åħīæ³½\":111583,\"åŁŁåĲį\":111584,\"æĮĩåĲĳ\":111585,\"åıĹå®³èĢħ\":111586,\"æłĳèĦĤ\":111587,\"æľīå¤ļå¤§\":111588,\"å¤§éĿ¢ç§¯\":111589,\"æĹłç¼Ŀ\":111590,\"æĶ¹æŃ£\":111591,\"æĽ´å¤ļçļĦæĺ¯\":111592,\"æľŁæľ«\":111593,\"æŃ¼\":111594,\"ä¹īä¹Į\":111595,\"éĤ£ä½ł\":111596,\"çļĦç¬¬ä¸Ģä¸ª\":111597,\"èĮµ\":111598,\"å°§\":111599,\"èį«\":111600,\"ä¸įä»ħåı¯ä»¥\":111601,\"æ¶Įçİ°\":111602,\"æĢ»éĿ¢ç§¯\":111603,\"æĸ°éĹ»åıĳå¸ĥ\":111604,\"æ°ĳçĶ¨\":111605,\"å°±è¯»\":111606,\"æīĵè´¥\":111607,\"å¤ĸè¯Ń\":111608,\"æĪĳä»¬ä¸Ģèµ·\":111609,\"é¢Ħå®ļ\":111610,\"çĥ¹é¥ª\":111611,\"æľĢä¸»è¦ģ\":111612,\"æľĢä¸»è¦ģçļĦ\":111613,\"çīĮçħ§\":111614,\"åĽłåħ¶\":111615,\"ä½İä¸ĭ\":111616,\"ä¼ļåĲĮ\":111617,\"è§ģè§£\":111618,\"éĹ´éļĶ\":111619,\"æķĻç¨ĭ\":111620,\"å°ī\":111621,\"å¸Ĥä¸Ńå¿ĥ\":111622,\"åħ³éĶ®æĺ¯\":111623,\"æµ·åįĹçľģ\":111624,\"çī¹åĪ«æĺ¯åľ¨\":111625,\"ä¸ŃåĽ½å¤§éĻĨ\":111626,\"åħħè¶³çļĦ\":111627,\"æĹ¢èĥ½\":111628,\"åĤ³çµ±\":111629,\"çĳľä¼½\":111630,\"åħ¥åĽ´\":111631,\"æħ¢æħ¢åľ°\":111632,\"æĬ¥éħ¬\":111633,\"æī¹å¤į\":111634,\"å·¥ä¸ļåĽŃåĮº\":111635,\"ä¸İåıĳå±ķ\":111636,\"èĥ¸éĥ¨\":111637,\"åľ¨ç½ĳç»ľ\":111638,\"åľ¨ç½ĳç»ľä¸Ĭ\":111639,\"äº¤è°Ī\":111640,\"æĽ´æĶ¹\":111641,\"åįłæľīçİĩ\":111642,\"ä¸Ŀç»¸ä¹ĭè·¯\":111643,\"è¡Ľ\":111644,\"çłĶåĪ¤\":111645,\"åĪª\":111646,\"åĪªéĻ¤\":111647,\"è¿Ļåıª\":111648,\"çļĦæ°Ķæģ¯\":111649,\"åĬłå·ŀ\":111650,\"éĴ§\":111651,\"çĲĨäºĭéķ¿\":111652,\"ä¸ĸå®¶\":111653,\"æµģè¡ĮçļĦ\":111654,\"å¾Īæľīåı¯èĥ½\":111655,\"ä»¬éĥ½\":111656,\"ç»ıèĲ¥æ¨¡å¼ı\":111657,\"è¡Įä¸ļä¸Ń\":111658,\"éĢļçŁ¥ä¹¦\":111659,\"åĳ½é¢ĺ\":111660,\"æľ¬ç¶²ç«Ļ\":111661,\"æ²Ļçī¹\":111662,\"åıĳåħī\":111663,\"é«ĺä»·\":111664,\"å·²çĦ¶\":111665,\"åıĮåįģä¸Ģ\":111666,\"ä¸Ĭè¯ī\":111667,\"ç¿ħèĨĢ\":111668,\"è¿Ļä¸Ģå¹´\":111669,\"å¤§ä¼ļä¸Ĭ\":111670,\"éĩī\":111671,\"å®Įåħ¨æĺ¯\":111672,\"å¾Ĺå¤ª\":111673,\"ä¸ĢèĪ¬äºº\":111674,\"è¿ĺç®Ĺ\":111675,\"æĬĺåıł\":111676,\"æĬķæľº\":111677,\"çĤ¹çĩĥ\":111678,\"çİ°éĩĳæµģ\":111679,\"åħĶåŃĲ\":111680,\"ç½ĳæł¼\":111681,\"æİ¥è¿ĩ\":111682,\"ä¾Ľè´§\":111683,\"éĺ´å½±\":111684,\"åİŁåħĪ\":111685,\"æį£\":111686,\"å·¦ä¾§\":111687,\"åħĭæĭī\":111688,\"æīĵåį¡\":111689,\"ç§ĳæ¯Ķ\":111690,\"æ±ĩéĽĨ\":111691,\"åľ°çĲĨä½įç½®\":111692,\"è¯Ħå§Ķ\":111693,\"ç»ĵåĲĪèµ·æĿ¥\":111694,\"è¿Ľåħ¥åĪ°\":111695,\"åı¯è¡Į\":111696,\"åı¯è¡ĮæĢ§\":111697,\"è®©å®ĥ\":111698,\"åĪ¶åº¦æĶ¹éĿ©\":111699,\"çĶĺèĤĥçľģ\":111700,\"åĵĹ\":111701,\"åģıåģı\":111702,\"è¡£çī©\":111703,\"ç¥Ŀè´º\":111704,\"æºĲèĩª\":111705,\"å¹¶ä¸įä»£è¡¨\":111706,\"åĽ½åº¦\":111707,\"å¥½åĿı\":111708,\"æĿĸ\":111709,\"æĿŃå·ŀå¸Ĥ\":111710,\"æ¹¿åº¦\":111711,\"é²¸\":111712,\"åįļå½©\":111713,\"æ³°å±±\":111714,\"æĿĳèĲ½\":111715,\"æĸ°èģŀ\":111716,\"èĤĭ\":111717,\"åı¤èĢģçļĦ\":111718,\"çļĦç§ĺå¯Ĩ\":111719,\"ä¸Ģä¸ªéĹ®é¢ĺ\":111720,\"éģıåĪ¶\":111721,\"åįĥäº¿\":111722,\"è¿ĩç¡¬\":111723,\"å°Ħåĩ»\":111724,\"èĩªçĦ¶æĺ¯\":111725,\"äº§åĮº\":111726,\"çĤ¹çĤ¹å¤´\":111727,\"åı¯ä»¥å¸®åĬ©\":111728,\"è¯´å®ŀ\":111729,\"è¯´å®ŀè¯Ŀ\":111730,\"æĪĳåıªæĺ¯\":111731,\"ä¹ĭä½Ļ\":111732,\"åĲĮæĹ¶ä¹Łæĺ¯\":111733,\"ä¸ŃåĽ½éĺŁ\":111734,\"å»ºæĪĲåĲİ\":111735,\"ä¹Ĳè§Ĩ\":111736,\"åĳ¨å²ģ\":111737,\"èį¯åºĹ\":111738,\"éĩĳåįİ\":111739,\"ä¸¥éĩįå½±åĵį\":111740,\"è´¨åľ°\":111741,\"æĹħéģĬ\":111742,\"åħµåĻ¨\":111743,\"æķĻèĤ²æķĻåŃ¦\":111744,\"ç¦»åİ»\":111745,\"åĲĦå¼ıåĲĦæł·\":111746,\"ä»ĭç´\":111747,\"ä»ĭç´¹\":111748,\"å¼Ģå¤´\":111749,\"å°Ĩèĩªå·±çļĦ\":111750,\"åĲ¬åĬĽ\":111751,\"ä¿¡æģ¯ç³»ç»Ł\":111752,\"ä»İæł¹æľ¬\":111753,\"ä»İæł¹æľ¬ä¸Ĭ\":111754,\"æİĮå£°\":111755,\"æ¬¢åĸľ\":111756,\"å±ķåĮº\":111757,\"åķ¸\":111758,\"å¤ªå¤ļäºĨ\":111759,\"éĹ²ç½®\":111760,\"èĥ¡èĲĿåįľ\":111761,\"å§Ķå®£ä¼ł\":111762,\"å§Ķå®£ä¼łéĥ¨\":111763,\"åįĹéĺ³\":111764,\"å·ŀåĮº\":111765,\"ä¸İæĹ¶\":111766,\"ä¸İæĹ¶ä¿±\":111767,\"ä¸İæĹ¶ä¿±è¿Ľ\":111768,\"å«Įçĸĳäºº\":111769,\"èī¯å¿ĥ\":111770,\"å¤´é¡¶\":111771,\"è´¢æĬ¥\":111772,\"ä½Ľæ³ķ\":111773,\"å¾µ\":111774,\"åİŁä»¶\":111775,\"åĭŀ\":111776,\"çĶ·ç¯®\":111777,\"å¤ĸåĽ½äºº\":111778,\"è¿Ŀçºª\":111779,\"æī¾äºĨ\":111780,\"æįķæįī\":111781,\"çĽ¸è¯Ĩ\":111782,\"æĲľéĽĨ\":111783,\"çļĦä¼Łå¤§\":111784,\"ä¸īç»´\":111785,\"å°±è¡ĮäºĨ\":111786,\"çĭĲæľĪ\":111787,\"çĭĲæľĪå±±\":111788,\"å¸ĮæľĽéĢļè¿ĩ\":111789,\"èĢĮå¯¹äºİ\":111790,\"éĿ¢å°į\":111791,\"åĨĽåĽ¢\":111792,\"è¡ĹåĮº\":111793,\"æĤ¬æĮĤ\":111794,\"ä¾¿ç§ĺ\":111795,\"æľīä¸ĢçĤ¹\":111796,\"ä¼ļè®®ä¸Ĭ\":111797,\"ä¸ĭæīĭ\":111798,\"å»£åĳĬ\":111799,\"äºĶè¡Į\":111800,\"çŃīåĢĻ\":111801,\"ç´§ç´§åĽ´ç»ķ\":111802,\"æĭ¿äºĨ\":111803,\"æ¡ĮéĿ¢\":111804,\"ç¥ŀæĥħ\":111805,\"éĽĦåİļ\":111806,\"çŀ³\":111807,\"æ¥¼ä¸ĭ\":111808,\"å½ª\":111809,\"äºĭåıĳ\":111810,\"åĨįè§ģ\":111811,\"é¤ĺ\":111812,\"é¢ĦåĶ®\":111813,\"åİ»çľĭçľĭ\":111814,\"æĪĳä»¬åºĶè¯¥\":111815,\"ä¸īå®¶\":111816,\"æµĬ\":111817,\"ä¹ĲéĺŁ\":111818,\"çľĭä¸įè§ģ\":111819,\"èĦĳåŃĲ\":111820,\"æĮģæľīçļĦ\":111821,\"çĻ½èıľ\":111822,\"éĹªçĥģ\":111823,\"åĸĿæ°´\":111824,\"æİ§åĪ¶ç³»ç»Ł\":111825,\"ä¸ĵåĮº\":111826,\"æľĿå»·\":111827,\"æĪĳå¿ĥéĩĮ\":111828,\"å±ķåİħ\":111829,\"èľĺèĽĽ\":111830,\"åĨ»ç»ĵ\":111831,\"ç²ª\":111832,\"åºĲ\":111833,\"åĲĳç¤¾ä¼ļ\":111834,\"åĨ³çŃĸéĥ¨ç½²\":111835,\"çŁŃæľŁåĨħ\":111836,\"æĸ°ä¸ļæĢģ\":111837,\"æľĶ\":111838,\"æĹ¶æĬ¥\":111839,\"ä½¿ä¹ĭ\":111840,\"åĽłåŃĲ\":111841,\"åıĤä¸İèĢħ\":111842,\"çļĦå¹´è½»äºº\":111843,\"æīĭè¡¨\":111844,\"å°ģéĶģ\":111845,\"ä¸ºä»Ģä¹Īä¸į\":111846,\"åĲ¸çĥŁ\":111847,\"æ¯Ĵç´ł\":111848,\"åĪĳæ³ķ\":111849,\"çŁ«æŃ£\":111850,\"èº«æĹģ\":111851,\"åİŁè°ħ\":111852,\"çĽĳæĬ¤\":111853,\"æŃ¤å¤Ħ\":111854,\"éļ¨æĻĤ\":111855,\"æŀľå®ŀ\":111856,\"åĮ»çĸĹæľįåĬ¡\":111857,\"ä¸įåĲĪçĲĨ\":111858,\"æĲŀå¥½\":111859,\"çļĦèĦļæŃ¥\":111860,\"å¤ĸå¥Ĺ\":111861,\"ç¶ĵéģİ\":111862,\"æĶ¾ç¼ĵ\":111863,\"åģľçķĻ\":111864,\"æĺŁçĲĥ\":111865,\"çļĦä¸ĢéĿ¢\":111866,\"åĩłä½ķ\":111867,\"è½®åĽŀ\":111868,\"æ¯Ľå·¾\":111869,\"ä¿®çĲĨ\":111870,\"ä¸įçŁ¥ä¸į\":111871,\"ä¸įçŁ¥ä¸įè§ī\":111872,\"æķ´ä¸ªäºº\":111873,\"æ¯ģçģŃ\":111874,\"åı°å·ŀ\":111875,\"ä½¿çĶ¨å¯¿åĳ½\":111876,\"é»ĳçĻ½\":111877,\"æĳ¸ç´¢\":111878,\"é¼łæłĩ\":111879,\"éĿ©æĸ°\":111880,\"éºµ\":111881,\"ä¸ĵéĹ¨ä¸º\":111882,\"å¾Īå¤ļæľĭåıĭ\":111883,\"å·¥ä½ľç»Ħ\":111884,\"åĲĪå½±\":111885,\"çĤºä»Ģéº¼\":111886,\"æŀģåº¦\":111887,\"çļĦè¿ĽæŃ¥\":111888,\"å½ĵä¹ĭ\":111889,\"å½ĵä¹ĭæĹł\":111890,\"å½ĵä¹ĭæĹłæĦ§\":111891,\"è´´è¿ĳ\":111892,\"å°ºåº¦\":111893,\"åľ¨çİ°åľº\":111894,\"éĻįä¸´\":111895,\"åħ»èĢģéĩĳ\":111896,\"ç£ķ\":111897,\"åı¯ä»¥ä½¿\":111898,\"ç®¡çĲĨæ°´å¹³\":111899,\"æľ¬æĬ¥è®°èĢħ\":111900,\"æ³ķä»¤\":111901,\"åį¡è½¦\":111902,\"ä¸ľæµ·\":111903,\"å¤ļéĩį\":111904,\"åħ¶éĹ´\":111905,\"ç´Ļ\":111906,\"éĩįå¤§é¡¹çĽ®\":111907,\"æ±Ĺæ°´\":111908,\"ç»Ħå§Ķä¼ļ\":111909,\"ä¿¡æģ¯åħ¬å¼Ģ\":111910,\"ä¸įè®ºæĺ¯\":111911,\"ä¸ĢåĲ¬\":111912,\"èĴ¸æ±½\":111913,\"æıŃç§ĺ\":111914,\"è¶ħéģİ\":111915,\"è§¦åıĳ\":111916,\"å©¦\":111917,\"åħ³èģĶäº¤æĺĵ\":111918,\"å°±ç»Ļå¤§å®¶\":111919,\"å¥½ä¹ħ\":111920,\"åĢŁè´·\":111921,\"æ¸¸æĪıè§Ĵèī²\":111922,\"å¼ĢåĲ¯äºĨ\":111923,\"æİł\":111924,\"åħļçļĦåįģä¹Ŀ\":111925,\"ä¸ĭéĽ¨\":111926,\"çŁŃæĹ¶éĹ´åĨħ\":111927,\"å¯ħ\":111928,\"å¯¼åħ¥\":111929,\"å·¥ä½ľç»ıéªĮ\":111930,\"ä¹Łåıªèĥ½\":111931,\"éĽ·éľĨ\":111932,\"è·Łè¿Ľ\":111933,\"åį¡éĢļ\":111934,\"é¢ĩæľī\":111935,\"æľºä½ĵ\":111936,\"æĪĺå£«èģĮä¸ļ\":111937,\"å¥³ä¸»\":111938,\"ä½ĵåĪ¶æľºåĪ¶\":111939,\"è¶³åįı\":111940,\"èĪĴéĢĤçļĦ\":111941,\"åĢŁåı£\":111942,\"æī¹åĪ¤\":111943,\"æķ°åĢ¼\":111944,\"è«¾\":111945,\"éĺ¿æĭīä¼¯\":111946,\"åĺİ\":111947,\"æħ¶\":111948,\"è¾¾äºº\":111949,\"å¼Ģæ°´\":111950,\"å¤§éĽ¨\":111951,\"æ¸©å®¤\":111952,\"ä½İè¿·\":111953,\"ä»įæĹ§\":111954,\"éªĹåŃĲ\":111955,\"äº²å±ŀ\":111956,\"çĲĨæĻº\":111957,\"æľ¬åŁºéĩĳ\":111958,\"å¨ħ\":111959,\"åĨĻåŃĹæ¥¼\":111960,\"å¢Ļå£ģ\":111961,\"å®µ\":111962,\"èĻ½çĦ¶æĺ¯\":111963,\"é¡ºçĿĢ\":111964,\"åħ«åį¦\":111965,\"åķĨçĶ¨\":111966,\"ä¸įå¤±\":111967,\"è¿·èĮ«\":111968,\"é¡ºä¾¿\":111969,\"æļĳæľŁ\":111970,\"æ¬ºè´Ł\":111971,\"é¢ĳé¢ĳ\":111972,\"è¯¥æł¡\":111973,\"æĸĻçĲĨ\":111974,\"æ·±æĥħ\":111975,\"åīįéĶĭ\":111976,\"ä¿ĿèŃī\":111977,\"èģĮä¸ļçĶŁæ¶¯\":111978,\"åħ¬å¼Ģåıĳ\":111979,\"åħ¬å¼Ģåıĳè¡Į\":111980,\"åħ¥æĪ·\":111981,\"éłĵ\":111982,\"åĢ¾åĲ¬\":111983,\"éŃģ\":111984,\"æĦīæĤ¦\":111985,\"åĽŀåĲĪ\":111986,\"åħ¨åĬĽä»¥\":111987,\"åħ¨åĬĽä»¥èµ´\":111988,\"åĥ¹åĢ¼\":111989,\"èĥ½åĬĽå¼º\":111990,\"ç»ıå¼Ģ\":111991,\"ç»ıå¼ĢåĮº\":111992,\"è¿ľæĸ¹\":111993,\"çļĦéģĵçĲĨ\":111994,\"çĽ´åįĩ\":111995,\"çĽ´åįĩæľº\":111996,\"ä¸ºä¸»é¢ĺçļĦ\":111997,\"ç»ĻæĤ¨\":111998,\"è¿ĺæĥ³\":111999,\"æ¯ĶæĪĳ\":112000,\"åĨľçī§\":112001,\"æµ·åºķ\":112002,\"çŃ¾è®¢äºĨ\":112003,\"å¯¹äºİæĪĳä»¬\":112004,\"æĹ¶è®¸\":112005,\"éĶ®çĽĺ\":112006,\"å®ŀéĻħæİ§åĪ¶\":112007,\"çļĦæ¨¡æł·\":112008,\"åıįæĺłäºĨ\":112009,\"ä»£åĬŀ\":112010,\"åĮ»çĶ¨\":112011,\"éĽĨç»ĵ\":112012,\"åıĳå±ķåīįæĻ¯\":112013,\"æĮĩçĿĢ\":112014,\"åįİåĮĹ\":112015,\"è¿Ļåĩłä¸ª\":112016,\"åĲįæ°Ķ\":112017,\"åĤįæĻļ\":112018,\"èĩªåıĳ\":112019,\"æ³¢åħ°\":112020,\"å¤§åĬĽæİ¨è¿Ľ\":112021,\"èĩªç§°\":112022,\"èįĨå·ŀ\":112023,\"æĲįå®³\":112024,\"äºĨä¸Ģåı¥\":112025,\"æľĢåĪĿçļĦ\":112026,\"éĩĳèŀįåį±æľº\":112027,\"æĢĢå¿µ\":112028,\"è¡Įåĭķ\":112029,\"å¥³æİĴ\":112030,\"ä¸įè§£\":112031,\"ä¼łéĶĢ\":112032,\"è½¬è½½è¯·\":112033,\"é¥°åĵģ\":112034,\"åıªä¸º\":112035,\"ä¸İä¼Ĺ\":112036,\"ä¸İä¼Ĺä¸įåĲĮ\":112037,\"èĥ½èĢĹ\":112038,\"èı©æıĲ\":112039,\"è¿ĳä¸¤å¹´\":112040,\"è¿Ķä¹¡\":112041,\"é©¬ä¸Ĭå°±\":112042,\"äºĮçŃīå¥ĸ\":112043,\"æ°´ç®¡\":112044,\"æ³ķåŃ¦\":112045,\"çģŃçģ«\":112046,\"å¤§å§Ĳ\":112047,\"åĳ¨è½¬\":112048,\"æľīæľŁ\":112049,\"æľīæľŁå¾Ĵ\":112050,\"æľīæľŁå¾ĴåĪĳ\":112051,\"å°įæĸ¹\":112052,\"ç¥ŀèī²\":112053,\"æ²¹èĦĤ\":112054,\"ä¸īçĤ¹\":112055,\"ä¸įåĪ©äºİ\":112056,\"äºĭä¸ļéĥ¨\":112057,\"å°±è·Ł\":112058,\"å¼ĢæĶ¯\":112059,\"å°ıå¥³åŃ©\":112060,\"åħ±åĲĮåĬªåĬĽ\":112061,\"çĶļèĩ³è¿ĺ\":112062,\"è¿ĻåĲį\":112063,\"è¿Ļç¬Ķ\":112064,\"çİ¯åį«\":112065,\"æľīç§į\":112066,\"è§ĨåĬĽ\":112067,\"çĨŁçŁ¥\":112068,\"åħ¬ç§¯éĩĳ\":112069,\"æ¶Īéĺ²å®īåħ¨\":112070,\"é¢ĩä¸º\":112071,\"å¤§èħ¿\":112072,\"éĿ¶\":112073,\"çī¹æķĪ\":112074,\"æľįåĬ¡åĮº\":112075,\"å¼Ģåĩº\":112076,\"æ·±åº¦èŀįåĲĪ\":112077,\"æĹłå¿§\":112078,\"æŁ¥éĺħ\":112079,\"ç»Īç»ĵ\":112080,\"ä¿Ŀç¨İ\":112081,\"è¨İè«ĸ\":112082,\"å½ĵåģļ\":112083,\"è·³èĪŀ\":112084,\"å¯§\":112085,\"å¥³çİĭ\":112086,\"è®°èĢħåľ¨\":112087,\"åħ¨äº§ä¸ļéĵ¾\":112088,\"è´¯éĢļ\":112089,\"åħ´ä¸ļ\":112090,\"éĻįåĪ°\":112091,\"å°ģéĿ¢\":112092,\"åħ¨éĿ¢æİ¨è¿Ľ\":112093,\"å¥¶èĮ¶\":112094,\"éĢīåĿĢ\":112095,\"äºĨä¸Ģåľº\":112096,\"åĲĮä¼´\":112097,\"è®®è®º\":112098,\"æĲĵ\":112099,\"è¯¸èĳĽ\":112100,\"è¯¸èĳĽäº®\":112101,\"å¹²åĺĽ\":112102,\"æµģæĦŁ\":112103,\"ä¸ĵä¸ļçŁ¥è¯Ĩ\":112104,\"çĶµç«Ļ\":112105,\"åĩıå¼±\":112106,\"åĩºåħ¥\":112107,\"åĲĦçľģ\":112108,\"éĿŀå¸¸é«ĺ\":112109,\"åľ°æ¯¯\":112110,\"åıĳæĸĩ\":112111,\"çĦī\":112112,\"çĥ§çĥ¤\":112113,\"å£ģçº¸\":112114,\"æģ¶åĮĸ\":112115,\"èĬ¸\":112116,\"èĥĸåŃĲ\":112117,\"çĩĴ\":112118,\"çľģéĴ±\":112119,\"çĻ¾å¼º\":112120,\"çĲĨå·¥å¤§åŃ¦\":112121,\"éĴ¢æĿĲ\":112122,\"åĽ½æľīèµĦäº§\":112123,\"æĪĺæľº\":112124,\"æ³Ħéľ²\":112125,\"åĲİéĿ¢çļĦ\":112126,\"æ°´èµĦæºĲ\":112127,\"æ¢ħèĬ±\":112128,\"åĨĻçĿĢ\":112129,\"ä¹ĭå£°\":112130,\"æĹłåı¯\":112131,\"æĺİæľĿ\":112132,\"ç«ĭæĸ¹ç±³\":112133,\"ç·£\":112134,\"æĶ¾è¿ĩ\":112135,\"ç¦ıçĶ°\":112136,\"å¾Ĺä½ı\":112137,\"åıĹä¼Ĺ\":112138,\"ä¸Ńçº§\":112139,\"çĹħåıĺ\":112140,\"ä¸Ģçŀ¬éĹ´\":112141,\"æĿĥéĩį\":112142,\"äººæĢ§åĮĸ\":112143,\"åĮ»çĸĹåį«çĶŁ\":112144,\"ä¸įåĪ°ä½į\":112145,\"æĻºèĥ½å®¶å±ħ\":112146,\"é¥®çĶ¨\":112147,\"æ¼Ķåıĺ\":112148,\"é«ĺç´łè´¨\":112149,\"ä¹Ļæĸ¹\":112150,\"åģľçķĻåľ¨\":112151,\"èİ·æī¹\":112152,\"ç©¿æ¢Ń\":112153,\"å®¢åľº\":112154,\"æĮ½åĽŀ\":112155,\"äº¬åŁİ\":112156,\"çĶŁåĳ½åĬĽ\":112157,\"å¯¦éļĽ\":112158,\"çĩĪ\":112159,\"åĨįçİ°\":112160,\"çİ°å®ŀä¸Ń\":112161,\"æľīä¿¡å¿ĥ\":112162,\"çĸıéĢļ\":112163,\"åĺ´åĶĩ\":112164,\"éĽ·éĶĭ\":112165,\"èıľåįķ\":112166,\"éħ¯\":112167,\"è¶ħé«ĺ\":112168,\"å¾Īé«ĺåħ´\":112169,\"çĶŁæ®ĸ\":112170,\"éĢłä»·\":112171,\"è¯¯åĮº\":112172,\"æĨĭ\":112173,\"å¥½æ¶Īæģ¯\":112174,\"å´Ń\":112175,\"ä»¥èĩ´\":112176,\"å¼Ģçİ©ç¬ĳ\":112177,\"çĽĳè§Ĩ\":112178,\"å·¡å¯Ł\":112179,\"å¾·å·ŀ\":112180,\"æĹ©æĹ©\":112181,\"éĹªçĶµ\":112182,\"æĪªåĽ¾\":112183,\"åı¯ä»¥æł¹æį®\":112184,\"æīĭèīº\":112185,\"æİ¥è½¨\":112186,\"ç§įæĹı\":112187,\"æĢĢéĩĮ\":112188,\"åİ»åĮ»éĻ¢\":112189,\"ä¸ĢäºĮ\":112190,\"å¼ĢéĺĶ\":112191,\"åĩıéĢŁ\":112192,\"ä½Ĩä»İ\":112193,\"éĢĻä¸Ģ\":112194,\"åĩıåħį\":112195,\"ä¸»é¢ĺæķĻèĤ²\":112196,\"å¼Ģå·¥å»ºè®¾\":112197,\"è¹¦\":112198,\"æľĪé¥¼\":112199,\"ä¸ĭæ²ī\":112200,\"å°Ĭä¸¥\":112201,\"éĻĩ\":112202,\"å®ŀæľ¨\":112203,\"å»łåķĨ\":112204,\"å£°ç§°\":112205,\"èĢĥåľº\":112206,\"å¸ĥé²ģ\":112207,\"èĩªæĿ¥\":112208,\"èĩªæĿ¥æ°´\":112209,\"éĴ¾\":112210,\"å¹´ä»¥ä¸Ĭ\":112211,\"å¤§åıĶ\":112212,\"ä»ĸå·²ç»ı\":112213,\"åħ¨æĿĳ\":112214,\"èģĶç³»çĶµè¯Ŀ\":112215,\"ä¸ºå¯¼åĲĳ\":112216,\"åĪ¤å¤Ħ\":112217,\"å¯¹éĺµ\":112218,\"çĽ®æ¨Ļ\":112219,\"åĲįé¢Ŀ\":112220,\"å®¢æ°Ķ\":112221,\"æ¨ªåĲĳ\":112222,\"çŃīåĨħå®¹\":112223,\"åĩłçĤ¹\":112224,\"è°Īè®º\":112225,\"ä¸įä¹ı\":112226,\"å±ķçİ°åĩº\":112227,\"è¾ĥéķ¿\":112228,\"éĢĨè½¬\":112229,\"å°ıæĻĤ\":112230,\"æĺ¯å¤ļä¹Ī\":112231,\"æľ¬æľĪ\":112232,\"è¿ĳè§Ĩ\":112233,\"æĪĲç«ĭä»¥æĿ¥\":112234,\"ä»£è¡¨çĿĢ\":112235,\"æĬ¥å¤į\":112236,\"æĪıæĽ²\":112237,\"è¨ŃåĤĻ\":112238,\"åħ¥èĤ¡\":112239,\"å¾ģæľį\":112240,\"é«ĺåĩº\":112241,\"èĪŀåı°ä¸Ĭ\":112242,\"å¿ĥåĬ¨\":112243,\"ä¸¤çĤ¹\":112244,\"çĽ¸çķ¶\":112245,\"èĻĽ\":112246,\"ä¸»é¡µ\":112247,\"åĩłå®¶\":112248,\"æĹłä¸į\":112249,\"åįıå®ļ\":112250,\"æĸĲ\":112251,\"å¯ĵæĦı\":112252,\"åħ¨çº¿\":112253,\"æįķé±¼\":112254,\"åı¯ä»¥ä»İ\":112255,\"æľīè¿Ļæł·çļĦ\":112256,\"æģ¶éŃĶ\":112257,\"åĮħåŃĲ\":112258,\"æģ¤\":112259,\"å¼Ģå¥ĸç»ĵæŀľ\":112260,\"ä¸įæŃ»\":112261,\"èĹį\":112262,\"å¼¯æĽ²\":112263,\"æµ·å³¡\":112264,\"éĶĢæ¯ģ\":112265,\"çļĦçĭ¬çī¹\":112266,\"ç¤ºæĦı\":112267,\"ä¸įèĥ½åĨį\":112268,\"èĥ½æĬĬ\":112269,\"éĺ²çº¿\":112270,\"ä¸įå°ĳäºİ\":112271,\"æ±Ģ\":112272,\"çļĦéĤ£ä¸Ģ\":112273,\"çľŁæĥħ\":112274,\"åŀ®\":112275,\"è¢«æīĵ\":112276,\"åĽ½å®ī\":112277,\"ç¾İå¦Ļ\":112278,\"è¿Ļåĩł\":112279,\"åĩºéģĵ\":112280,\"æľįåĬ¡äºİ\":112281,\"æĪĲæŀľè½¬åĮĸ\":112282,\"æīįåįİ\":112283,\"å¤©é¹ħ\":112284,\"åĩłä¸ªäºº\":112285,\"åĢĺèĭ¥\":112286,\"èĢ½è¯¯\":112287,\"æĬĹæĪĺ\":112288,\"è¡ĮéĬ·\":112289,\"æĿ¥è¢Ń\":112290,\"åĢŁéĮ¢\":112291,\"èįīèİĵ\":112292,\"ä¸¥æł¼æī§è¡Į\":112293,\"ä¸¾è¡ĮäºĨ\":112294,\"å¤ĸç±į\":112295,\"å·²è¾¾\":112296,\"æĿĳåħļæĶ¯éĥ¨\":112297,\"è¡Ŀ\":112298,\"éĻįèĩ³\":112299,\"æµ·éĩı\":112300,\"é¤Ĳé¦Ĩ\":112301,\"æĢ¥å¿Ļ\":112302,\"æ·±è¿ľ\":112303,\"å¾Ģè¿Ķ\":112304,\"ç¨İåĬ¡å±Ģ\":112305,\"å¹¿æ³ĽåºĶçĶ¨\":112306,\"è®®åĳĺ\":112307,\"æĹłæķĮ\":112308,\"çľ¼åħī\":112309,\"çĥŃè¡Ģä¼łå¥ĩ\":112310,\"æŃĲ\":112311,\"äºĨäºĽ\":112312,\"è¿ĿèĥĮ\":112313,\"è¿Ļæĺ¯ä¸Ģç§į\":112314,\"ä¸įç¨³å®ļ\":112315,\"å¤§å®¶åĪĨäº«\":112316,\"è¡¨çı¾\":112317,\"åīįåįģ\":112318,\"è·¯è¿ĩ\":112319,\"æĴ©\":112320,\"åĲĮæĥħ\":112321,\"ä¹łä¿Ĺ\":112322,\"åıĳè´¢\":112323,\"åºĶæľīçļĦ\":112324,\"æĿİæŁĲ\":112325,\"èĤĽ\":112326,\"é©¬åħĭ\":112327,\"éĢļåĳĬ\":112328,\"å·¨äºº\":112329,\"ä¸ĢåĽ¢\":112330,\"éĢĻæ¬¡\":112331,\"ä¸įäºĨè§£\":112332,\"æĸ½è¡Į\":112333,\"èĳ¡èĲĦçīĻ\":112334,\"åıĺå¾ĹæĽ´åĬł\":112335,\"æı£\":112336,\"åĪĽæĸ°èĥ½åĬĽ\":112337,\"çķħéĶĢ\":112338,\"è¡¨æī¬\":112339,\"æ¯ĶåĪ©\":112340,\"æ¯ĶåĪ©æĹ¶\":112341,\"åĮ»çĸĹä¿ĿéĻ©\":112342,\"æĵįçºµ\":112343,\"ä¼¤äº¡\":112344,\"æµİå®ģ\":112345,\"åıĺäºĨ\":112346,\"æľ¬æ¬¡æ´»åĬ¨\":112347,\"åľŁè±ª\":112348,\"æĥ³åĬŀæ³ķ\":112349,\"æĺķ\":112350,\"å½ĵæĻļ\":112351,\"åĩºå±Ģ\":112352,\"çĥŃè®®\":112353,\"è°Īè°Ī\":112354,\"æĻĭåįĩ\":112355,\"åĬ¿å¿ħ\":112356,\"çĻ»å±±\":112357,\"éĤ£åĦ¿\":112358,\"åĲĥåĪ°\":112359,\"ä¹ĭåŁİ\":112360,\"å¿«æĿ¥\":112361,\"æ¹Ľæ±Ł\":112362,\"ç¬¬ä¸īä¸ª\":112363,\"åħ¨éĿ¢æıĲåįĩ\":112364,\"å¥ĸåŃ¦\":112365,\"å¥ĸåŃ¦éĩĳ\":112366,\"æĬķåħ¥ä½¿çĶ¨\":112367,\"é½Ĳé²ģ\":112368,\"åı¯ä»¥æĬĬ\":112369,\"åĴĮä»ĸçļĦ\":112370,\"è´ŃæĪ¿èĢħ\":112371,\"æŃ£å¼ıåĲ¯åĬ¨\":112372,\"åįİæ¶¦\":112373,\"ä¸įæĸŃå®ĮåĸĦ\":112374,\"éĴ¢æĿ¿\":112375,\"ç´¯ç§¯\":112376,\"æ»¡èĦ¸\":112377,\"åĽĽæĸ¹\":112378,\"è´¢çī©\":112379,\"ä»ĸä»¬ä¼ļ\":112380,\"å¤ıæĹ¥\":112381,\"éĤ£ä¸ªäºº\":112382,\"éĿłçĿĢ\":112383,\"çĤ¹äºĨ\":112384,\"çĤ¹äºĨçĤ¹å¤´\":112385,\"æ©ĭ\":112386,\"åıĪå¥½\":112387,\"åıĪå¥½åıĪ\":112388,\"åıĪå¥½åıĪå¿«\":112389,\"éĺµéĺµ\":112390,\"å°ģå»º\":112391,\"æľ¬çĶ°\":112392,\"çī©ä¸ļæľįåĬ¡\":112393,\"èĩªè´¸åĮº\":112394,\"åĲı\":112395,\"ä¾¿åĪ©åºĹ\":112396,\"åĽ½å®¶æłĩåĩĨ\":112397,\"éĿ¢ç²ī\":112398,\"èī°è¾Ľ\":112399,\"æĶ»åħ³\":112400,\"æīĵåĮħ\":112401,\"è½¦éĺŁ\":112402,\"äººéĢī\":112403,\"åı¯ä¸įæĺ¯\":112404,\"äºĮåįģå¹´\":112405,\"åĲįå¸Ī\":112406,\"æµ¦ä¸ľ\":112407,\"åħ¬è¯ģ\":112408,\"è¿ĲéĢģ\":112409,\"æĺ¯æľĢå¥½çļĦ\":112410,\"æŁĶåĴĮ\":112411,\"çİĭæŁĲ\":112412,\"çĹħæĪ¿\":112413,\"åĨ¶éĩĳ\":112414,\"ä¸Ģä»¶äºĭæĥħ\":112415,\"åį¤\":112416,\"åı¯æİ§\":112417,\"çīŁ\":112418,\"æĭĤ\":112419,\"å·²äºİ\":112420,\"äººéĢł\":112421,\"çĶŁçī©åĮ»èį¯\":112422,\"ä½ĵçİ°åĩº\":112423,\"èĤ²åĦ¿\":112424,\"èĢģå®ŀ\":112425,\"åľĸçīĩ\":112426,\"è«¸\":112427,\"ç´¯äºĨ\":112428,\"æĦŁåħ´è¶£çļĦ\":112429,\"åĽ¾çīĩæĿ¥æºĲ\":112430,\"ä¹Łæĺ¯ä¸Ģç§į\":112431,\"æ¾İæ¹ĥæĸ°éĹ»\":112432,\"æĹ¶è¡¨ç¤º\":112433,\"åħīè¾ī\":112434,\"æĬ¥åºŁ\":112435,\"å²ģæĹ¶\":112436,\"éħ®\":112437,\"æ£Ģä¿®\":112438,\"åıĺéĢŁ\":112439,\"åıĺéĢŁç®±\":112440,\"åľ¨èģĮ\":112441,\"éı¡\":112442,\"æįĤ\":112443,\"çĿ£åĬŀ\":112444,\"æ°¸ä¸į\":112445,\"åģļä¸ĢäºĽ\":112446,\"åİĨæĹ¶\":112447,\"å·¥ç¨ĭæľºæ¢°\":112448,\"æģ°å½ĵ\":112449,\"å°±åľ¨äºİ\":112450,\"ç§°åĳ¼\":112451,\"éĢļå¸¸æĺ¯\":112452,\"æł·å¼ı\":112453,\"åĳ¨ä¸Ģ\":112454,\"èĭ±éķĳ\":112455,\"åĿĩçº¿\":112456,\"ä¼łéĹ»\":112457,\"çĶ¨æĪ·ä½ĵéªĮ\":112458,\"èµŀåĲĮ\":112459,\"éª¨æĬĺ\":112460,\"ä¸ºä¸»ä½ĵ\":112461,\"æ±Łå±±\":112462,\"æ¸ħæľĿ\":112463,\"æĶĢåįĩ\":112464,\"ä¸įçĽ¸ä¿¡\":112465,\"éĿ´\":112466,\"æŃ¦åĬŁ\":112467,\"åĭ¤åĬ³\":112468,\"æĿ¥æī¾\":112469,\"å°ĨæĮģç»Ń\":112470,\"ä¸«å¤´\":112471,\"æ¨Ļæºĸ\":112472,\"è£´\":112473,\"æ·±æ·±çļĦ\":112474,\"åŃķèĤ²\":112475,\"è§ĦåĪĴå»ºè®¾\":112476,\"æ¸ħçĪ½\":112477,\"ç²¾åĩĨæī¶è´«\":112478,\"æīĵçł´äºĨ\":112479,\"è¿Ļä¸Ģå¤©\":112480,\"å·¥ä½ľæĢ»ç»ĵ\":112481,\"æĹħç¨ĭ\":112482,\"ä¸ľèĲ¥\":112483,\"æĶ¾å°Ħ\":112484,\"æľīåĩłä¸ª\":112485,\"éĿŀçī©è´¨\":112486,\"åĲĥå¾Ĺ\":112487,\"åĹ¨\":112488,\"ä¼ļåıĳçĶŁ\":112489,\"ç¯®æĿ¿\":112490,\"å¼Ģå°ģ\":112491,\"éº»å°Ĩ\":112492,\"èııæ³½\":112493,\"ä¸įåĲĪ\":112494,\"ç³»åĪĹäº§åĵģ\":112495,\"èŃ¬å¦Ĥ\":112496,\"ç¾İèªī\":112497,\"èĩªå·±åĸľæ¬¢\":112498,\"äº¤æĺĵä¸Ńå¿ĥ\":112499,\"åĲĪåĶ±\":112500,\"ä½¿æĪĳ\":112501,\"åĥıç´ł\":112502,\"å¸¦éĺŁ\":112503,\"ä½Ĩå¯¹äºİ\":112504,\"æĬĬè¿Ļä¸ª\":112505,\"èĤĿèĦı\":112506,\"åįķçº¯çļĦ\":112507,\"æĶ»åĿļæĪĺ\":112508,\"çĽĽä¼ļ\":112509,\"åĳµæĬ¤\":112510,\"æªĢ\":112511,\"èµ¶ä¸Ĭ\":112512,\"æ¥Ĭ\":112513,\"ä¹ħäºĨ\":112514,\"ç¡Ŀ\":112515,\"çŃĶé¢ĺ\":112516,\"ä¿ĿæĮģçĿĢ\":112517,\"è§ģè¯Ĩ\":112518,\"çĤ¹åĦ¿\":112519,\"åįĬä¸ªæľĪ\":112520,\"æ»ĩ\":112521,\"æµ¸æ³¡\":112522,\"ä¼łéĢģ\":112523,\"åľ¨å¸Ĥåľºä¸Ĭ\":112524,\"ä¹ĭä¹¡\":112525,\"çī¹éķ¿\":112526,\"éĽŀ\":112527,\"èªł\":112528,\"èº«å¤Ħ\":112529,\"æŁłæª¬\":112530,\"èº«ç©¿\":112531,\"çľģåħ¬å®ī\":112532,\"çľģåħ¬å®īåİħ\":112533,\"åıĻåĪ©äºļ\":112534,\"åĩłåĪĨéĴŁ\":112535,\"äººåĢĳ\":112536,\"åľ°æ®µ\":112537,\"èĩªåŃ¦\":112538,\"ä¹Łè¶ĬæĿ¥è¶Ĭ\":112539,\"èģĮæĿĥ\":112540,\"æĸ§\":112541,\"èĩ»\":112542,\"å½Ĵçº³\":112543,\"é©¾é©Ń\":112544,\"éĥ¨åĪĨåľ°åĮº\":112545,\"æ²¡æľīæĥ³åĪ°\":112546,\"æĴĩ\":112547,\"ä¹Įé²ģ\":112548,\"ä¹Įé²ģæľ¨\":112549,\"ä¹Įé²ģæľ¨é½Ĳ\":112550,\"èĤ²äºº\":112551,\"çļĦæŃ¥ä¼Ĳ\":112552,\"å»¶æľŁ\":112553,\"æ²¹æ°Ķ\":112554,\"åģļå®Į\":112555,\"åľ£åľ°\":112556,\"ä¸°åİļ\":112557,\"å®½å¸¦\":112558,\"åı¯éĿłçļĦ\":112559,\"åºŃéĻ¢\":112560,\"åŃľ\":112561,\"å°ıåº·ç¤¾ä¼ļ\":112562,\"å®īåħ¨ç®¡çĲĨ\":112563,\"å¹´ç¬¬\":112564,\"æİĴæ±¡\":112565,\"èĥĮåĮħ\":112566,\"å®¶ä½ı\":112567,\"åħ¶å®ŀå°±æĺ¯\":112568,\"ä¼ļè§ģ\":112569,\"å¸®åĬ©ä¼ģä¸ļ\":112570,\"ç½ĳè´Ń\":112571,\"æĺ¯ä¸įä¼ļ\":112572,\"é£¯åºĹ\":112573,\"æŃ»åİ»\":112574,\"åħįçĸ«åĬĽ\":112575,\"æľķ\":112576,\"åĸĿäºĨ\":112577,\"è½»å¾®\":112578,\"ä¸ªæľĪåĨħ\":112579,\"ç»ĦåĽ¢\":112580,\"åĴĮå®ĮåĸĦ\":112581,\"é¸½\":112582,\"æıĲéĢŁ\":112583,\"è¥¿å®īå¸Ĥ\":112584,\"ä¸Ńå¿ĥä¸»ä»»\":112585,\"æĹ¶éĹ´ä¸º\":112586,\"æľŁæĿĥ\":112587,\"è¶ķ\":112588,\"ä¸įä»ħè¦ģ\":112589,\"æľįä»İ\":112590,\"é¡ĺæĦı\":112591,\"ä¸įå°ı\":112592,\"ä¸įå°ıçļĦ\":112593,\"ç°ĩ\":112594,\"çª¦\":112595,\"åĪĩæĪĲ\":112596,\"åĵĪåĪ©\":112597,\"å¤©çľŁ\":112598,\"ä¸Ģæ¬¡æ¬¡\":112599,\"éĩĳå¸ģ\":112600,\"æĢİä¹Īèĥ½\":112601,\"ç½ĳè´·\":112602,\"ä¼ļè®¡å¸Ī\":112603,\"çŁŃç¼º\":112604,\"å¯¹æłĩ\":112605,\"åıĺå¾ĹæĽ´\":112606,\"åīįåĩłå¤©\":112607,\"éĺ²æ±Ľ\":112608,\"å½©èĻ¹\":112609,\"åĵģä½į\":112610,\"è¡¨æł¼\":112611,\"ä¸¥å¯Ĩ\":112612,\"æ¯ĽåĪ©çİĩ\":112613,\"çļĦåį±å®³\":112614,\"å½ķåĪ¶\":112615,\"æ°´åĬ¡\":112616,\"èĥ½å¤Łè®©\":112617,\"å¹³æĿ¿\":112618,\"ä¹³æĪ¿\":112619,\"è¸ıå®ŀ\":112620,\"é¦ĸåĪĽ\":112621,\"é¦Ļèķī\":112622,\"æĬ¥è¡¨\":112623,\"ä¸ĢæĬ¹\":112624,\"åĩºçĶŁäºİ\":112625,\"è²»çĶ¨\":112626,\"åĩºè®©\":112627,\"åĲĪæ³ķæĢ§\":112628,\"å°¼åħĭ\":112629,\"åĨ°åĨ·\":112630,\"é¦Ļæ°Ķ\":112631,\"åı·ç§°\":112632,\"èµ·çłģ\":112633,\"åŁİåİ¿\":112634,\"çİ©èĢį\":112635,\"ä¸ĬéĻĲ\":112636,\"ä¼ļè®®ç²¾ç¥ŀ\":112637,\"æĹģè¾¹çļĦ\":112638,\"ä¾¿ä¼ļ\":112639,\"æıŃæĻĵ\":112640,\"çİ©æĦı\":112641,\"éĽªå±±\":112642,\"åĲĳçĿĢ\":112643,\"ä½ĵèĤ²åľ¨çº¿\":112644,\"è¯´æĺİä¹¦\":112645,\"åĮĸèĤ¥\":112646,\"åħļç»Ħä¹¦è®°\":112647,\"åĬ¨äºº\":112648,\"ä¹ĭæīĢ\":112649,\"æľĪèĩ³\":112650,\"æľĢå¿«çļĦ\":112651,\"èĬĤåģĩæĹ¥\":112652,\"ä¸ĵåľº\":112653,\"èĢĥä¸Ĭ\":112654,\"çªŁ\":112655,\"é²ľè¡Ģ\":112656,\"è¾ĥå¼ºçļĦ\":112657,\"æĤĦçĦ¶\":112658,\"å¤ļä¸ªåĽ½å®¶\":112659,\"çªĹå¸ĺ\":112660,\"æŀģå¤§åľ°\":112661,\"ä¸įçĶ¨æĭħå¿ĥ\":112662,\"è¿Ļä¹Īåģļ\":112663,\"åĥ¹æł¼\":112664,\"ç¾İä¸½ä¹¡æĿĳ\":112665,\"å°ıæĹ¶åĨħ\":112666,\"ç´§è¿«\":112667,\"å¤§çģ«\":112668,\"èĥ³èĨĬ\":112669,\"æĵįä½ľç³»ç»Ł\":112670,\"æ®ĭçķĻ\":112671,\"åĨĻåĩº\":112672,\"ç¦ģå¿Į\":112673,\"åĬłçĽŁåºĹ\":112674,\"è¿ĳçĻ¾\":112675,\"ä¾¿åı¯\":112676,\"æķ´æĶ¹æİªæĸ½\":112677,\"éĩĩè®¿æĹ¶\":112678,\"åĶĲä»£\":112679,\"æ·±åĮĸæĶ¹éĿ©\":112680,\"çŁ¢\":112681,\"éĥ½åĸľæ¬¢\":112682,\"è¶ĬæĿ¥è¶Ĭé«ĺ\":112683,\"èĬ±æľµ\":112684,\"å¤´çĸ¼\":112685,\"å®īåº·\":112686,\"å¢ŀéķ¿çİĩ\":112687,\"çľ¼çľĭ\":112688,\"å°±æĺ¯ä¸ºäºĨ\":112689,\"èĢĮå¯¼èĩ´\":112690,\"åĬłå¿«å»ºè®¾\":112691,\"èĬ±æł·\":112692,\"åĨħå¿ĥçļĦ\":112693,\"æĺĨå±±\":112694,\"è³ĩæºĲ\":112695,\"åĽŀåĪ°å®¶\":112696,\"èıĬèĬ±\":112697,\"æ°´éĩı\":112698,\"å¾ģä¿¡\":112699,\"è¡ĮæĶ¿åĮº\":112700,\"ä¹ĥæĺ¯\":112701,\"æĬķèµĦé¡¹çĽ®\":112702,\"å«ģç»Ļ\":112703,\"ç¥ŀåľ£\":112704,\"ç¨ł\":112705,\"æľ¬æĿ¥å°±\":112706,\"éĢĲä¸Ģ\":112707,\"èģĮä¸ļæĬĢæľ¯\":112708,\"ä¸įèī¯ä¿¡æģ¯\":112709,\"æīĺè¿Ĳ\":112710,\"åĲ¯ç¤º\":112711,\"ä¹ĭåħ§å®¹\":112712,\"éŁ¶\":112713,\"å¥¢åįİ\":112714,\"æıŃç¤º\":112715,\"æĪĲä¸ºä¸ŃåĽ½\":112716,\"æ¶Īè´¹åĵģ\":112717,\"åħ¬çĶ¨\":112718,\"æĲŀå®ļ\":112719,\"è¯·ä½ł\":112720,\"æŁļ\":112721,\"åĨħè¡£\":112722,\"ä½Ĩä»ĸä»¬\":112723,\"ä¿Ŀæ¹¿\":112724,\"è¯¥åİ¿\":112725,\"é¥±åĴĮ\":112726,\"æİ¨åĲĳ\":112727,\"èµĦæĸĻæĺ¾ç¤º\":112728,\"ä¸įå½±åĵį\":112729,\"äººäººéĥ½\":112730,\"åıĳå±ķå£®å¤§\":112731,\"åħ»èĢģæľįåĬ¡\":112732,\"çĶŁæ´»æ°´å¹³\":112733,\"åĲĦåİ¿\":112734,\"ä½łéľĢè¦ģ\":112735,\"è¯´çļĦæĺ¯\":112736,\"å¤ĸåªĴ\":112737,\"æŃ¤äºº\":112738,\"æ¬¡è¦ģ\":112739,\"è¿½èµ¶\":112740,\"åºĶè¯¥å¦Ĥä½ķ\":112741,\"æĹ¥åĩĮæĻ¨\":112742,\"çķ¥æľī\":112743,\"éĥ½æĥ³\":112744,\"æ¸¸ä¹Ĳ\":112745,\"è¿Ļæ¬¾æ¸¸æĪı\":112746,\"å¹³æ·¡\":112747,\"æĺ¯ä¸ĢåĢĭ\":112748,\"å¤ĩèĢĥ\":112749,\"åĪ¶æŃ¢\":112750,\"ä¸Ģå®ļèĥ½\":112751,\"å¾Ĵå¼Ł\":112752,\"ä»¥çĤº\":112753,\"åįĥåħĥ\":112754,\"äºĶåħŃ\":112755,\"è¿ªå£«\":112756,\"è¿ªå£«å°¼\":112757,\"éĺ³æĢ§\":112758,\"åĨ¬å¥¥ä¼ļ\":112759,\"å°±æĺ¯åĽłä¸º\":112760,\"æĮĤéĴ©\":112761,\"æ¦ĤåĨµ\":112762,\"åıªè¦ģæľī\":112763,\"æ²¹çĶ»\":112764,\"åľ°æłĩ\":112765,\"ä¸Ĭè°ĥ\":112766,\"äº§ä¸ļåĽŃåĮº\":112767,\"åħ«åįģ\":112768,\"æ£±\":112769,\"æ¶²æĻ¶\":112770,\"æĿĳå§Ķä¼ļ\":112771,\"çŃ¾çº¦ä»ªå¼ı\":112772,\"è¿Ļåħ¶ä¸Ń\":112773,\"åĨĻéģĵ\":112774,\"ç¤ºèĮĥåŁºåľ°\":112775,\"éĩİçĶŁåĬ¨çī©\":112776,\"éĽ»åŃĲä¿¡ç®±\":112777,\"åĽ½éĻħè´¸æĺĵ\":112778,\"äººæĿĥ\":112779,\"ä¿Ŀç®¡\":112780,\"èĭ¥æĤ¨\":112781,\"åİĭæĬĳ\":112782,\"é»Ľ\":112783,\"åľ°çľĭçĿĢ\":112784,\"éĻ°\":112785,\"ä¸Ģå¹´å¤ļ\":112786,\"ä»İå®¹\":112787,\"ä¸ŃæĸŃ\":112788,\"å¯Łè§ī\":112789,\"ç§»äº¤\":112790,\"éĶ¯\":112791,\"æĪĸè®¸æĺ¯\":112792,\"ç¶ł\":112793,\"ä¸¤é¡¹\":112794,\"æľĢåĸľæ¬¢\":112795,\"æľĢåĸľæ¬¢çļĦ\":112796,\"å¤ľéĩĮ\":112797,\"åĲĮä»ģ\":112798,\"åĪĽæĸ°é©±åĬ¨\":112799,\"è°ģèĥ½\":112800,\"é£¾\":112801,\"åħīåŃ¦\":112802,\"åİĦ\":112803,\"èĦ±é¢ĸ\":112804,\"èĦ±é¢ĸèĢĮåĩº\":112805,\"è¿¦\":112806,\"æĺ¯ä¸įåı¯èĥ½\":112807,\"çª¥\":112808,\"èĥ½æ»¡è¶³\":112809,\"å®½åº¦\":112810,\"ä¼¦çĲĨ\":112811,\"åı¯ä»¥èİ·å¾Ĺ\":112812,\"è½¬ä¼ļ\":112813,\"å±±æĿĳ\":112814,\"éĵºè®¾\":112815,\"åĩºåĩ»\":112816,\"æĸĩåĮĸèīºæľ¯\":112817,\"ä¼ļè®®å®¤\":112818,\"æŃĮå£°\":112819,\"æ»Ķ\":112820,\"èĲİç¼©\":112821,\"æľįåĬ¡åĳĺ\":112822,\"åıĳè¡¨äºĨ\":112823,\"æĸ¼æĺ¯\":112824,\"æĺİç¡®è§Ħå®ļ\":112825,\"ç»´å¥ĩ\":112826,\"æ°´äº§\":112827,\"æĬķä¿Ŀ\":112828,\"éĺ´éģĵ\":112829,\"èµ¶å¿«\":112830,\"å¤ºå¾Ĺ\":112831,\"ä¸ĭåįķ\":112832,\"çī©æµģåħ¬åı¸\":112833,\"çİ¯ç»ķ\":112834,\"å½Ī\":112835,\"ä½ľé£İå»ºè®¾\":112836,\"æĹħæ¸¸æĻ¯åĮº\":112837,\"æľīæĽ´å¤ļçļĦ\":112838,\"ä¸°å¯Įå¤ļå½©\":112839,\"çĲĨè´¢äº§åĵģ\":112840,\"åĩºå·®\":112841,\"ä»İä¸¥æ²»\":112842,\"ä»İä¸¥æ²»åħļ\":112843,\"çĽ¸å¹²\":112844,\"æ»ĭæ¶¦\":112845,\"ä¸»åĬŀæĸ¹\":112846,\"åī§åľº\":112847,\"æ»ļçĲĥ\":112848,\"æ©Ħæ¦Ħ\":112849,\"èĩªä¸»åĪĽæĸ°\":112850,\"éĢļå¾Ģ\":112851,\"æł¼å°Ķ\":112852,\"çļĦä¼ĺçĤ¹\":112853,\"èĥĮä¸Ĭ\":112854,\"çªľ\":112855,\"çĪĨåĩº\":112856,\"å¹³æķ´\":112857,\"ä¸ĢèĦļ\":112858,\"åħ¨ä½ĵåĳĺå·¥\":112859,\"éĻĲå®ļ\":112860,\"åŁİéķĩåĮĸ\":112861,\"æ·³\":112862,\"éĢ®æįķ\":112863,\"è¡ĮåĬ¨è®¡åĪĴ\":112864,\"æīĵå¾Ĺ\":112865,\"åİļéĩį\":112866,\"çºªå½ķçīĩ\":112867,\"åĿļä¿¡\":112868,\"å¤®ä¼ģ\":112869,\"åĨįä¹Łä¸į\":112870,\"å¤©æ¶¯\":112871,\"åıĤèĢĥèµĦæĸĻ\":112872,\"æľīæ¯Ĵ\":112873,\"åĲ¸çº³\":112874,\"è¶Ĭåıĳ\":112875,\"éĩįè¦ģæĦıä¹ī\":112876,\"åĽ½éĺ²éĥ¨\":112877,\"è¿Ļä¸ªè¡Įä¸ļ\":112878,\"æĻ®æŁ¥\":112879,\"å¼ĤæĢ§\":112880,\"å»¶è¿Ł\":112881,\"å°ıå¹ħ\":112882,\"èī²æĥħ\":112883,\"ç»¼åĲĪæ²»çĲĨ\":112884,\"æŃ£æĺ¯åĽłä¸º\":112885,\"äº§ä¸ļç»ĵæŀĦ\":112886,\"çłĶç©¶æĬ¥åĳĬ\":112887,\"åģľä¸ĭ\":112888,\"éķ¿èĢģ\":112889,\"éĩĿå°į\":112890,\"åįĹäº¬å¸Ĥ\":112891,\"çģĮæºī\":112892,\"è½¬è¿Ĳ\":112893,\"æ¬ºè¯Ī\":112894,\"éĢłåģĩ\":112895,\"åĪĨå¸ĥå¼ı\":112896,\"æĦŁè§¦\":112897,\"æĪĳå½ĵæĹ¶\":112898,\"åıĳè§ī\":112899,\"åĽ¾çº¸\":112900,\"æĶ¹èī¯\":112901,\"çĭłçĭł\":112902,\"åĨ²åĪº\":112903,\"æĸ°äº¬\":112904,\"æĸ°äº¬æĬ¥\":112905,\"ç¥ŀåĻ¨\":112906,\"ç§¸ç§Ĩ\":112907,\"çĪº\":112908,\"å°Ĩè¿İæĿ¥\":112909,\"å·¥ä¿¡\":112910,\"å·¥ä¿¡éĥ¨\":112911,\"éĻĲéĩı\":112912,\"æŃ¢æįŁ\":112913,\"åŃ¦ä¼ļäºĨ\":112914,\"åįİçĽĽ\":112915,\"åįİçĽĽé¡¿\":112916,\"å¾Įä¾Ĩ\":112917,\"ä¸ĭéĿ¢æĺ¯\":112918,\"ä¸ĭéĿ¢æĺ¯å°ı\":112919,\"æĲ¬è¿Ĳ\":112920,\"ç¾İæľ¯é¦Ĩ\":112921,\"æ¸ħåĩī\":112922,\"å¤ļå¹´åīį\":112923,\"è©ŀ\":112924,\"åįĥç±³\":112925,\"è¡¨è¿°\":112926,\"æ±ŁéĹ¨\":112927,\"åĬłæ²¹ç«Ļ\":112928,\"æľ¬èĥ½\":112929,\"å¯¼è¯»\":112930,\"åĽ´è§Ĥ\":112931,\"å¹¶åĲĳ\":112932,\"åŁºæľ¬æĥħåĨµ\":112933,\"æīĵå¼ĢäºĨ\":112934,\"è¿Ļä¸īä¸ª\":112935,\"æ±ķå¤´\":112936,\"å¼ºæľīåĬĽ\":112937,\"å¼ºæľīåĬĽçļĦ\":112938,\"è¿Ľåľº\":112939,\"ä¹Ŀæ±Ł\":112940,\"çĲĥæĺŁ\":112941,\"å¥½çľĭçļĦ\":112942,\"å¤§æĪ·\":112943,\"æ¹¯\":112944,\"å¥ĩå¦Ļ\":112945,\"ä¹ĲåĻ¨\":112946,\"æĪĳçļĦå¿ĥ\":112947,\"çľīå¤´\":112948,\"åĨľä¸ļçĶŁäº§\":112949,\"ç¼ĸçłģ\":112950,\"åŁºç¤\":112951,\"åŁºç¤İ\":112952,\"å¤©æĸĩ\":112953,\"åĢĭäººè³ĩè¨Ĭ\":112954,\"åİ»è¿ĩ\":112955,\"èģĨåĲ¬\":112956,\"æĶ¾åģĩ\":112957,\"ä¸įåħ·å¤ĩ\":112958,\"æ·Ģç²ī\":112959,\"å¤§ä½¬\":112960,\"åħ¨å¤©\":112961,\"åħ¨éĿ¢å»ºæĪĲ\":112962,\"éļĲå½¢\":112963,\"ç¼ħçĶ¸\":112964,\"åĲ³\":112965,\"è¡ĮæĶ¿æī§æ³ķ\":112966,\"åŁİåł¡\":112967,\"èİ«æĸ¯\":112968,\"èİ«æĸ¯ç§ĳ\":112969,\"æīĢæľīæĿĥ\":112970,\"éĽĨåľĺ\":112971,\"å±Ģåī¯å±Ģéķ¿\":112972,\"åĩłä¹İæ²¡æľī\":112973,\"æ´ģåĩĢ\":112974,\"çĶµå½±èĬĤ\":112975,\"åŃ©ç«¥\":112976,\"æīĢåģļçļĦ\":112977,\"æ¸ħä»£\":112978,\"æĸ°çīĪ\":112979,\"éĵĿåĲĪéĩĳ\":112980,\"ä¸ºæĬĵ\":112981,\"ä¸ºæĬĵæīĭ\":112982,\"åĪ¤å®ļ\":112983,\"çī¹äº§\":112984,\"æīĭæ©Ł\":112985,\"ä¸įåı¯æĪĸ\":112986,\"ä¸įåı¯æĪĸç¼º\":112987,\"å¸Ĥåľºè§Ħæ¨¡\":112988,\"åĿ¯\":112989,\"åĮ»åŃ¦éĻ¢\":112990,\"å¿«è¦ģ\":112991,\"èĮľ\":112992,\"æĬĺèħ¾\":112993,\"äºĨè¿ĩæĿ¥\":112994,\"æĬ¥åĳĬæľŁåĨħ\":112995,\"çī©ç§į\":112996,\"ç»Łè®¡å±Ģ\":112997,\"æī©å»º\":112998,\"æ¶ħ\":112999,\"è´£ä»»äºº\":113000,\"éĺİ\":113001,\"è¯Ħè®®\":113002,\"å¾Ģäºĭ\":113003,\"æīĢç¤º\":113004,\"æķ´æ´ģ\":113005,\"éĹºèľľ\":113006,\"æĹħéĢĶ\":113007,\"å®ŀè®Ń\":113008,\"ä¹ĭç§°\":113009,\"å·´å£«\":113010,\"éĢŁåº¦å¿«\":113011,\"ä¸įä»ħå¦ĤæŃ¤\":113012,\"å®Ŀè´µçļĦ\":113013,\"åºŁçī©\":113014,\"æ²³æ°´\":113015,\"æİ¥çº³\":113016,\"ç²¾æ¹Ľ\":113017,\"åħ¶æ¬¡æĺ¯\":113018,\"é¡ºå¾·\":113019,\"åħ¬åħ±åį«çĶŁ\":113020,\"è¤Ĳèī²\":113021,\"ä¸įæĥľ\":113022,\"æĬĢæľ¯æľįåĬ¡\":113023,\"æİ·\":113024,\"æ±ĤèģĮ\":113025,\"ä¸īå³¡\":113026,\"æĬķåħ¥åĪ°\":113027,\"å¤ªåĲİ\":113028,\"åĲ¯åĬ¨ä»ªå¼ı\":113029,\"çĽ´æİ¥å½±åĵį\":113030,\"æĸ°æ¬¾\":113031,\"ä¸ªä¹¡éķĩ\":113032,\"çĻ¾äº¿\":113033,\"åº«\":113034,\"ä¹ŁæŃ£æĺ¯\":113035,\"åı¶çīĩ\":113036,\"æľĢæĹ©çļĦ\":113037,\"æĪĺç»©\":113038,\"å·¥æľŁ\":113039,\"æĻļæľŁ\":113040,\"è¿Ļæł·è¯´\":113041,\"è¯įè¯Ń\":113042,\"ä¾Ħ\":113043,\"æķ£çĥŃ\":113044,\"éĽĨæĪĲçĶµè·¯\":113045,\"åĲįè¯į\":113046,\"æĻºåķĨ\":113047,\"æĭ¥åłµ\":113048,\"çĭĤæ¬¢\":113049,\"è¿ĻèĪ¬\":113050,\"æµ´å®¤\":113051,\"åĳķåĲĲ\":113052,\"æľªæĿ¥åıĳå±ķ\":113053,\"ä¸īä½įä¸Ģä½ĵ\":113054,\"åªĴé«Ķ\":113055,\"ä¸įå¾Ĺè½¬è½½\":113056,\"åĽłä¸ºå¥¹\":113057,\"æĺ¾ç¤ºå±ı\":113058,\"ä¾Ľæļĸ\":113059,\"éĨ«éĻ¢\":113060,\"æľīæĦıæĢĿ\":113061,\"æľīæĦıæĢĿçļĦ\":113062,\"å¨±ä¹ĲåŁİ\":113063,\"åįµå·¢\":113064,\"åĪĽéĢłåĬĽ\":113065,\"ç«łèĬĤ\":113066,\"äººå¤§å¸¸å§Ķ\":113067,\"èĢĮçİ°åľ¨\":113068,\"å¤ĸå©Ĩ\":113069,\"å¢ŀæĮģ\":113070,\"äºĶåįĥ\":113071,\"èĢģå¸Īä»¬\":113072,\"æ´ĽæĿī\":113073,\"æ´ĽæĿīçŁ¶\":113074,\"æİĮæı¡äºĨ\":113075,\"ä¸ŃåĽ½æĸĩåĮĸ\":113076,\"æĸ°æĶ¿\":113077,\"ä¸»è¦ģçĶ¨äºİ\":113078,\"åıĳçĥ§\":113079,\"ç±»ä¼¼äºİ\":113080,\"åĮĹæŀģ\":113081,\"æĪĳä»¬è®¤ä¸º\":113082,\"å¼¥æ¼«\":113083,\"åħ¨çĲĥç»ıæµİ\":113084,\"é¢Ĳ\":113085,\"ä¸Ģèµ·è£ħä¿®\":113086,\"æĶĴ\":113087,\"æĭīèĲ¨\":113088,\"å¸¶ä¾Ĩ\":113089,\"åĨ·æ°´\":113090,\"ä¸īåĨľ\":113091,\"æĿ¿æĿĲ\":113092,\"è¿ŀè¿ŀ\":113093,\"éĵ®\":113094,\"ç»ıèĲ¥çĲĨå¿µ\":113095,\"å±±é¡¶\":113096,\"å¾Īæĥ³\":113097,\"çĺ«\":113098,\"å§ĭç»Īä¿ĿæĮģ\":113099,\"åľ¨å¹¿å·ŀ\":113100,\"ä¸įåĲĮæĦı\":113101,\"åıĺåİĭ\":113102,\"åıĺåİĭåĻ¨\":113103,\"äº§éĶĢ\":113104,\"è¡¨éĿ¢ä¸Ĭ\":113105,\"æīĢä»¥ä»ĸ\":113106,\"ç»ıéªĮä¸°å¯Į\":113107,\"éĥ¨å§Ķ\":113108,\"åħµåĽ¢\":113109,\"æīĢè¿°\":113110,\"æķ¦çħĮ\":113111,\"ç»ıèĲ¥èĮĥåĽ´\":113112,\"åı£è¯Ń\":113113,\"å¤±ä¿¡\":113114,\"æ¯ıä¸ªäººçļĦ\":113115,\"æīĭæĮģ\":113116,\"æģĲæħĮ\":113117,\"åł¡åŀĴ\":113118,\"é¦ħ\":113119,\"éĵ¸éĢł\":113120,\"æĭ¿åĩºæĿ¥\":113121,\"æİ¢æµĭ\":113122,\"å¤§å®¶ä¸Ģèµ·\":113123,\"å¥§\":113124,\"å®ŀè´¨æĢ§\":113125,\"å°ıåĦ¿\":113126,\"èĩºåįĹ\":113127,\"èĩºåįĹå¸Ĥ\":113128,\"å¼ĢåıĳèĢħ\":113129,\"åı¯æł¹æį®\":113130,\"ç®±åŃĲ\":113131,\"é¥ºåŃĲ\":113132,\"å¿ĻçĿĢ\":113133,\"æĿ¥ä¸įåıĬ\":113134,\"çĽ¸ä¼ł\":113135,\"åĽ½ç½ĳ\":113136,\"èħ¹æ³»\":113137,\"è¿ĻéĩĮæľī\":113138,\"é£İæĻ¯åĮº\":113139,\"åıĤä¿Ŀ\":113140,\"æŃ»èĢħ\":113141,\"æĪ´ä¸Ĭ\":113142,\"æ©Łæ§ĭ\":113143,\"è¯ķéªĮåĮº\":113144,\"ä¼łæİĪ\":113145,\"æµ·è¾¹\":113146,\"æ³ªæ°´\":113147,\"çĽ¸åħ³åĨħå®¹\":113148,\"éĥĳå·ŀå¸Ĥ\":113149,\"åħĳçİ°\":113150,\"ä¸¤åĳ¨\":113151,\"èĬľæ¹ĸ\":113152,\"çĶµåŃĲä¿¡æģ¯\":113153,\"çº¢å¤ĸ\":113154,\"æĹħæ¸¸å±Ģ\":113155,\"å¾Ģå¾Ģä¼ļ\":113156,\"è¿ħçĮĽ\":113157,\"ä¼łçľŁ\":113158,\"æ¸ħæ¾Ī\":113159,\"å°±è¿ĳ\":113160,\"å¾®ä¿¡ç¾¤\":113161,\"ç³»åĪĹæ´»åĬ¨\":113162,\"ç»ıå¸¸ä¼ļ\":113163,\"è§Ĥæµĭ\":113164,\"å¿ĥå¾Ĺä½ĵä¼ļ\":113165,\"éĻĪåĪĹ\":113166,\"åĮĹæĸĹ\":113167,\"è«®\":113168,\"è«®è©¢\":113169,\"è¿ĺæĺ¯ä¼ļ\":113170,\"æµĭç®Ĺ\":113171,\"æĺŁç©º\":113172,\"å®½å®¹\":113173,\"çī©ä¸ļåħ¬åı¸\":113174,\"æĪĴæĮĩ\":113175,\"å¸ħæ°Ķ\":113176,\"ä¸ĢæŃ¥æŃ¥\":113177,\"åħ±é¸£\":113178,\"åĨ³ä¸į\":113179,\"æİ¥ç®¡\":113180,\"å¦ĩèģĶ\":113181,\"æ¯Ķåĸ»\":113182,\"é²ģè¿ħ\":113183,\"æĮģçºĮ\":113184,\"çĽ¸äº²\":113185,\"å¨ģå°¼æĸ¯äºº\":113186,\"ç«ĭé¡¹\":113187,\"åĪĿå§ĭ\":113188,\"èĩªåĪ¶\":113189,\"è¿Īè¿Ľ\":113190,\"ä¸Ĭæ±½\":113191,\"å®ıä¼Ł\":113192,\"æł¹æľ¬æ²¡æľī\":113193,\"æĸ°åĨłçĹħæ¯Ĵ\":113194,\"åĵªç§į\":113195,\"åº·åħ»\":113196,\"è¡°èĢģ\":113197,\"å½ķåĥı\":113198,\"é«Ķé©Ĺ\":113199,\"ç»ĳå®ļ\":113200,\"é¢Ŀå¤´\":113201,\"äºĶæľĪ\":113202,\"èĬ±å¼Ģ\":113203,\"ä¸Ģçº¿åŁİå¸Ĥ\":113204,\"åĪ°åľº\":113205,\"æĬķéĻį\":113206,\"çĹĺçĹĺ\":113207,\"åıĹä¸įäºĨ\":113208,\"æīİæł¹\":113209,\"æĽ´ä½ķåĨµ\":113210,\"æĬ½æŁ¥\":113211,\"åĩºè·¯\":113212,\"å®¡è®®éĢļè¿ĩ\":113213,\"ä¸įåĥħ\":113214,\"èī²è°ĥ\":113215,\"çĻ¾ä½Ļ\":113216,\"èĤłéģĵ\":113217,\"æ·±åİļçļĦ\":113218,\"é©¬åĬĽ\":113219,\"æĹ©æĻļ\":113220,\"æŃĮèĪŀ\":113221,\"éĺ²æĻĴ\":113222,\"æľĢåĲİä¸Ģä¸ª\":113223,\"æ¨±èĬ±\":113224,\"å°ıä¼ĻåŃĲ\":113225,\"åľ¨å½ĵåľ°\":113226,\"å°ıä¼Ļä¼´ä»¬\":113227,\"èµ·æºĲ\":113228,\"åħ¨åªĴä½ĵ\":113229,\"ç°½\":113230,\"éħ±æ²¹\":113231,\"æĹłè®ºå¦Ĥä½ķ\":113232,\"è£¤åŃĲ\":113233,\"åģľäº§\":113234,\"ä¸įçĶ±å¾Ĺ\":113235,\"çīµå¼ķ\":113236,\"ä¼łåĬ¨\":113237,\"ä¹Ŀé¾Ļ\":113238,\"åĬłåĽº\":113239,\"ä¹Łä¸įæķ¢\":113240,\"æĬĢæľ¯æĶ¯æĮģ\":113241,\"ä¸Ĭå²Ĺ\":113242,\"ç»ıéªĮåĴĮ\":113243,\"æł¼æŀĹ\":113244,\"åĲ¸éĻĦ\":113245,\"æľªæĪĲå¹´\":113246,\"å¥¢ä¾Īåĵģ\":113247,\"è¿½æį§\":113248,\"å¥½ä¸įå®¹æĺĵ\":113249,\"èķ´åĲ«\":113250,\"ä¿Ŀå®ļ\":113251,\"æĬ¥ä¸ļ\":113252,\"æµ·åĨħå¤ĸ\":113253,\"ä½łçİ°åľ¨\":113254,\"æ²¹èĢĹ\":113255,\"è´¨éĩıç®¡çĲĨ\":113256,\"æ½ľæ°´\":113257,\"ä¸½æ±Ł\":113258,\"è½¬åħ¥\":113259,\"è¿Ļä¹Īä¹ħ\":113260,\"æĺİä»£\":113261,\"è´£ä»»åĪ¶\":113262,\"éĩįå·¥\":113263,\"å¤§å·´\":113264,\"è§¦åıĬ\":113265,\"èµ·åĪĿ\":113266,\"å¤§å¦Ī\":113267,\"æĸ¯å¡Ķ\":113268,\"åĨĽå·¥\":113269,\"ä¹¦éĻ¢\":113270,\"å³¨\":113271,\"æİ¨çĲĨ\":113272,\"è¿Ļç¯ĩæĸĩç«ł\":113273,\"è¿ģç§»\":113274,\"åľ¨åĲĮä¸Ģ\":113275,\"ç»Ĩç»Ĩ\":113276,\"åīĬå¼±\":113277,\"ä¹¦æĪ¿\":113278,\"ç¶ĵå¸¸\":113279,\"è¯ķé¢ĺ\":113280,\"æĤ£ä¸Ĭ\":113281,\"çĻ«çĹ«çĹħ\":113282,\"åĨ²æ´Ĺ\":113283,\"å¤ĸæı´\":113284,\"åħĭåĪ¶\":113285,\"åįģæľĪ\":113286,\"åģļä¸įåĪ°\":113287,\"ç¾İåĮĸ\":113288,\"å¦ĤæľŁ\":113289,\"è¿ĺéľĢ\":113290,\"å¤©åºľ\":113291,\"å°±æĦıåĳ³çĿĢ\":113292,\"çļĦç¡®æĺ¯\":113293,\"éªĹå±Ģ\":113294,\"å°ıç»ĦèµĽ\":113295,\"è©©\":113296,\"ä¹Ŀå¹´\":113297,\"æĻĵå¾Ĺ\":113298,\"çłĶç©¶äººåĳĺ\":113299,\"å¤§éħĴåºĹ\":113300,\"ç§ĳåŃ¸\":113301,\"åħŃåĲĪ\":113302,\"çķĮå®ļ\":113303,\"è½¦è½½\":113304,\"å¼ĢçĿĢ\":113305,\"æ¯«æĹłçĸĳ\":113306,\"æ¯«æĹłçĸĳéĹ®\":113307,\"è¿Ĳç»´\":113308,\"ç¦ģåĮº\":113309,\"èĦ±èĲ½\":113310,\"è®²å¸Ī\":113311,\"äº§ä¸ļåŁºåľ°\":113312,\"é«ĺæĢ§èĥ½\":113313,\"åħīå½©\":113314,\"çİ°éĺ¶æ®µ\":113315,\"åĩ¿\":113316,\"è¾ĥå·®\":113317,\"é¥®çĶ¨æ°´\":113318,\"éĸĭçĻ¼\":113319,\"ç½ĳåĲ§\":113320,\"çĮ´åŃĲ\":113321,\"æŃ¦æŀĹ\":113322,\"å®īåİ¿\":113323,\"ä¸įåı¯æĢĿ\":113324,\"ä¸įåı¯æĢĿè®®\":113325,\"éĬ·åĶ®\":113326,\"è´«ç©·\":113327,\"ä¸ºåķ¥\":113328,\"éºĵ\":113329,\"å¹¾åĢĭ\":113330,\"è§Ħæ¨¡ä»¥ä¸Ĭ\":113331,\"æıļ\":113332,\"è¢«åĽ°\":113333,\"ç¼ºå¸Ń\":113334,\"å¿«é¤Ĳ\":113335,\"æĬ¢åįł\":113336,\"æĻŁ\":113337,\"å¤įæ´»\":113338,\"æľ¬æĬ¥è®¯\":113339,\"åĪĽä¸ĭ\":113340,\"æµ·æ»©\":113341,\"éĩıäº§\":113342,\"å¦Ĥä½ķåİ»\":113343,\"è½¦ä½į\":113344,\"å¯ĩ\":113345,\"äºĮåįģåĽĽ\":113346,\"ç»ıæµİæįŁå¤±\":113347,\"éħįå¥Ĺè®¾æĸ½\":113348,\"åŁºæľ¬éĿ¢\":113349,\"äºīè®º\":113350,\"å°±å¥½åĥı\":113351,\"çłĶç©¶æĪĲæŀľ\":113352,\"éĻĪè¿°\":113353,\"æīĵåĬ¨\":113354,\"ä¸ĭå·´\":113355,\"ç§ĴéĴŁ\":113356,\"å¯¹äººä½ĵ\":113357,\"æĬĢæľ¯çłĶåıĳ\":113358,\"åİŁåŃĲ\":113359,\"æĺ¯ä¸Ģé¡¹\":113360,\"äºĨä¸Ģä»½\":113361,\"æĮĩçĶ²\":113362,\"çĶ¨éĩı\":113363,\"è¿ĺä¸įå¤Ł\":113364,\"æĶ¿åºľéĩĩè´Ń\":113365,\"çŁ¥è¯ĨçĤ¹\":113366,\"ä¸ŃåĽ½æ¢¦\":113367,\"å¾Īå¼Ģå¿ĥ\":113368,\"ç¤¼è²Į\":113369,\"éĿŀå¸¸å¤ļ\":113370,\"éĿŀå¸¸å¤ļçļĦ\":113371,\"åĽļ\":113372,\"æĹħé¦Ĩ\":113373,\"å°½æĥħ\":113374,\"æŃĮåĶ±\":113375,\"æ²Ļé¾Ļ\":113376,\"è½¦åİ¢\":113377,\"å®¢æµģ\":113378,\"åģıå·®\":113379,\"ç§¯ç´¯äºĨ\":113380,\"æ¡Ķ\":113381,\"çĶ»çĶ»\":113382,\"ä¹ŁåºĶè¯¥\":113383,\"åºĶçĶ¨ç¨ĭåºı\":113384,\"èĥĥèĤł\":113385,\"ä»¥å¾Į\":113386,\"è±ªå®ħ\":113387,\"æ·±åĬłå·¥\":113388,\"çĽ´è¨Ģ\":113389,\"åĮĸçŁ³\":113390,\"åĽ½éģĵ\":113391,\"ä¸ĥä¸ª\":113392,\"ä»İèĢĮä½¿\":113393,\"èĤłèĥĥ\":113394,\"æĹ¥è¶ĭ\":113395,\"çĪ¶åŃĲ\":113396,\"ç·©\":113397,\"æĭĽçīĮ\":113398,\"äº§å¦ĩ\":113399,\"çķªèĮĦ\":113400,\"æĪĳéĻ¢\":113401,\"å»ºçŃĳå·¥ç¨ĭ\":113402,\"å±ķè§Īä¼ļ\":113403,\"å®¶éķ¿ä»¬\":113404,\"åĨľä½ľçī©\":113405,\"æĹ¥å¤ľ\":113406,\"æĶ»æĵĬ\":113407,\"è§Ħéģ¿\":113408,\"èĪŁå±±\":113409,\"ä¾¿æ°ĳ\":113410,\"åħ«åŃĹ\":113411,\"ä¸įæĽ¾\":113412,\"æĶ¯éħį\":113413,\"çĨ¬å¤ľ\":113414,\"äººé¡ŀ\":113415,\"ç´ĢéĮĦ\":113416,\"ç»ıèĲ¥æ´»åĬ¨\":113417,\"å¤§æ¶¨\":113418,\"å¸Ĥå§Ķå¸¸å§Ķ\":113419,\"åĪĨéĲĺ\":113420,\"ä¸Ģä¸ªèģĮä¸ļ\":113421,\"çĹħåĽł\":113422,\"è¿Ļå¯¹äºİ\":113423,\"ä¸įå¾Ĺä¸įè¯´\":113424,\"åıĳçĶµæľº\":113425,\"æľīæīĢå¸®åĬ©\":113426,\"çĽ®æłĩä»»åĬ¡\":113427,\"åĽłåľ°\":113428,\"åĽłåľ°åĪ¶\":113429,\"åĽłåľ°åĪ¶å®ľ\":113430,\"å°Ĩè¾¾åĪ°\":113431,\"ç²Ĺç³Ļ\":113432,\"ç¨³åĽº\":113433,\"å«£\":113434,\"çİ°åľ¨å¾Īå¤ļ\":113435,\"ä¸ĸçķĮçº§\":113436,\"å¼łæŁĲ\":113437,\"çĤ¹ç¼Ģ\":113438,\"èĳµ\":113439,\"ç¤¾ä¼ļç»Ħç»ĩ\":113440,\"å¾ĢåĲİ\":113441,\"åĬłæģ¯\":113442,\"åĻªå£°\":113443,\"æľīåħ´è¶£\":113444,\"ä¸ºæĤ¨æıĲä¾Ľ\":113445,\"æ²¹æ¼Ĩ\":113446,\"ç¬¬åĽĽå±Ĭ\":113447,\"çļĩå®«\":113448,\"ä¹Ĵä¹ĵ\":113449,\"ä¹Ĵä¹ĵçĲĥ\":113450,\"éļ¨èĳĹ\":113451,\"éģ©åĲĪ\":113452,\"åįĹéĿŀ\":113453,\"æĵ´\":113454,\"è¥¿æ´ĭ\":113455,\"åĬłå¯Ĩ\":113456,\"æĪĲåĬŁä¸¾åĬŀ\":113457,\"åı£æ°´\":113458,\"æĪĲå¹´äºº\":113459,\"æīĢæıĲä¾ĽçļĦ\":113460,\"éļĶå£ģ\":113461,\"åľ¨äº¬\":113462,\"å½ĵåľ°æĹ¶éĹ´\":113463,\"çŃīåĲĦç§į\":113464,\"é£İæ°Ķ\":113465,\"å±ĭéĩĮ\":113466,\"ä¸ĢåŃĹ\":113467,\"çļĦæĹ¶éĹ´éĩĮ\":113468,\"åĺ¿åĺ¿\":113469,\"å¿«è®¯\":113470,\"ä¸Ńåľº\":113471,\"ä¸Ģçĵ¶\":113472,\"æ»ķ\":113473,\"é¢Ĩè·ĳ\":113474,\"å¥½èİ±\":113475,\"å¥½èİ±åĿŀ\":113476,\"æ²¡åħ³ç³»\":113477,\"åĩºå¢ĥ\":113478,\"ä¸įæĺ¯ä¸Ģä¸ª\":113479,\"éĥ½æĺ¯éĿŀå¸¸\":113480,\"éľĩåĬ¨\":113481,\"èİ·èĥľ\":113482,\"åįļå¼Ī\":113483,\"æĬļåħ»\":113484,\"å¯¹ç«ĭ\":113485,\"æľįåĬ¡æľºæŀĦ\":113486,\"è°£è¨Ģ\":113487,\"ç¤¾ä¼ļç§ĳåŃ¦\":113488,\"åĲ¬è¯´è¿ĩ\":113489,\"æī³\":113490,\"æīĵç£¨\":113491,\"åı£æľį\":113492,\"å¥½åĥıæĺ¯\":113493,\"ä»¥åıĬåħ¶ä»ĸ\":113494,\"çī¹è´¨\":113495,\"äº²è¿ĳ\":113496,\"ä¸Ģç»ı\":113497,\"æ¶Ŀ\":113498,\"éŃĶæľ¯\":113499,\"éģĵè·¯äº¤éĢļ\":113500,\"è§Ħæ¨¡æľĢå¤§\":113501,\"å®ŀæĸ½æĦıè§ģ\":113502,\"ä¹ŀ\":113503,\"ä¸Ģä¸ĸ\":113504,\"åŁ·è¡Į\":113505,\"è±Ĩçĵ£\":113506,\"åĪĹä¸º\":113507,\"æķħå®«\":113508,\"çĶŁåĳ½åĳ¨æľŁ\":113509,\"ä¸īç§įèģĮä¸ļ\":113510,\"è¯¦ç»Ĩä»ĭç»į\":113511,\"å®Įå¤ĩ\":113512,\"å²©çŁ³\":113513,\"éļıæīĭ\":113514,\"é£²\":113515,\"æķĪæŀľåĽ¾\":113516,\"ç§ĭåĨ¬\":113517,\"åĬŁå¾·\":113518,\"è§Ħç«łåĪ¶åº¦\":113519,\"æĹ¥æ¸Ĳ\":113520,\"æīĢéľĢè¦ģ\":113521,\"æīĢéľĢè¦ģçļĦ\":113522,\"å²Ľä¸Ĭ\":113523,\"åĩºåľŁ\":113524,\"åĽ¾æĸĩ\":113525,\"ç§ĳæĬĢè¿ĽæŃ¥\":113526,\"éĢļèĥĢ\":113527,\"èĢģå¤ªå¤ª\":113528,\"èĭĹæľ¨\":113529,\"éĵ¶å·Ŀ\":113530,\"å¸Ĳç¯·\":113531,\"éĿŀè¦ģ\":113532,\"éħįçĶµ\":113533,\"å¤Ħå¢ĥ\":113534,\"èĤ¡æĿĥæĬķèµĦ\":113535,\"ä¸ĢçĽ´åĪ°\":113536,\"åĿĩçĶ±\":113537,\"æĬĹæĹ¥\":113538,\"æį®ä»ĭç»į\":113539,\"ä½łåĸľæ¬¢\":113540,\"åĪĽæĸ°åŀĭ\":113541,\"åıĺè¿ģ\":113542,\"è§Ĩå¯Ł\":113543,\"å®Įåħ¨æ²¡æľī\":113544,\"åħĥæĹ¦\":113545,\"åı¯ä¿¡\":113546,\"åı¦è¡Į\":113547,\"æĿĳçº§\":113548,\"åħ¥åľº\":113549,\"æĲŃæ¡£\":113550,\"ä¹ŁåĽłæŃ¤\":113551,\"æį¢æĪĲ\":113552,\"ä¸įè´Ł\":113553,\"äºĨå¤§éĩıçļĦ\":113554,\"éģĶåĪ°\":113555,\"å¸Ĥåİ¿\":113556,\"å¹´è¼ķ\":113557,\"å¿«æīĭ\":113558,\"å¸Įå°Ķ\":113559,\"èĩªèĲ¥\":113560,\"éĽªèĬ±\":113561,\"æĲģ\":113562,\"çľ¼ç§ĳ\":113563,\"æŃ£ç¢º\":113564,\"çļĦå§¿æĢģ\":113565,\"åĿļå®ŀçļĦ\":113566,\"æĮĩçº¹\":113567,\"æªĶæ¡Ī\":113568,\"ç½®äºİ\":113569,\"ä½©æľį\":113570,\"è±ªéĹ¨\":113571,\"åĵĴ\":113572,\"æģ°å¥½\":113573,\"æª¢æŁ¥\":113574,\"åĪĿè¡·\":113575,\"å¤§åĶĲ\":113576,\"çº¦ä¼ļ\":113577,\"èĴ¸åıĳ\":113578,\"çŃ¹åĪĴ\":113579,\"å¹´ç»Ī\":113580,\"è¡Įæ¥Ń\":113581,\"åħ±éĿĴ\":113582,\"åħ±éĿĴåĽ¢\":113583,\"ä¼ļå¼ķèµ·\":113584,\"ä¸Ńç§ĳ\":113585,\"ä¸Ńç§ĳéĻ¢\":113586,\"æĮ¯åĬ¨\":113587,\"åį´åıĳçİ°\":113588,\"ä¸įåĬ¨äº§\":113589,\"èĮ¹\":113590,\"æĪ¿éĹ´éĩĮ\":113591,\"è´§å¸ģæĶ¿çŃĸ\":113592,\"æ²»çĻĤ\":113593,\"æħİéĩį\":113594,\"å¡ŀå°Ķ\":113595,\"åĽ½ç±į\":113596,\"åĽłæŀľ\":113597,\"çŃīçī¹çĤ¹\":113598,\"å±±è°·\":113599,\"ä¸ĭè¼ī\":113600,\"è®ĵæĪĳ\":113601,\"é¥®éħĴ\":113602,\"è¿Ļä¸ªæ¸¸æĪı\":113603,\"ç»Ŀå¤§éĥ¨åĪĨ\":113604,\"åĴ¨è¯¢æľįåĬ¡\":113605,\"å¹²æ´»\":113606,\"è®®ä¼ļ\":113607,\"æ¦Ĥè¿°\":113608,\"åĪĨåĮº\":113609,\"æŃ»åĲİ\":113610,\"ç«ĻçĿĢ\":113611,\"ä¸»è¦ģé¢Ĩå¯¼\":113612,\"åĲĮåŁİ\":113613,\"å¤§æłĳ\":113614,\"å¯¹åŃ¦çĶŁ\":113615,\"ç¤¾ä¼ļä¿ĿéĻ©\":113616,\"å¢ŀèµĦ\":113617,\"ä¸»äººåħ¬\":113618,\"å®£ä¼łæķĻèĤ²\":113619,\"æĸĩåĮĸäº¤æµģ\":113620,\"å®¢æĪ¶\":113621,\"çŁ¥åĲįåĵģçīĮ\":113622,\"æ»ŀåĲİ\":113623,\"äºĴè¡¥\":113624,\"æĦŁäºº\":113625,\"åī¿\":113626,\"åĲİä»£\":113627,\"äºīéľ¸\":113628,\"æķĻèĤ²åŁ¹è®Ń\":113629,\"éĿĻèĦī\":113630,\"ä¹ıåĬĽ\":113631,\"è¯´åĩºæĿ¥\":113632,\"çİĭèĢħèį£èĢĢ\":113633,\"åĢ«\":113634,\"åįĩèµ·\":113635,\"éķģ\":113636,\"åĩºæ¸¸\":113637,\"éĢļè¡Įè¯ģ\":113638,\"å·¥ä½ľå²Ĺä½į\":113639,\"åĮłå¿ĥ\":113640,\"æĭ¿æĿ¥\":113641,\"æ´Ĺè¡£æľº\":113642,\"æĪĳä¸įæĥ³\":113643,\"é¢Ħè§ģ\":113644,\"æ¼Ķç¤º\":113645,\"ä¸ĢçĽ´æ²¡æľī\":113646,\"è·Łå¥¹\":113647,\"å¯¹çħ§æ£ĢæŁ¥\":113648,\"ç°¿\":113649,\"ä¸ĵå¿ĥ\":113650,\"è®®äºĭ\":113651,\"åīįç«¯\":113652,\"åį¡å°Ķ\":113653,\"è¨Ńå®ļ\":113654,\"è®¾ç½®äºĨ\":113655,\"å©ļçº±\":113656,\"åľ¨åĽ½å¤ĸ\":113657,\"åı³ä¾§\":113658,\"è³¼çī©\":113659,\"å¥ĩèĳ©\":113660,\"å¢ŀåĬłåĢ¼\":113661,\"å¥½è¿Ĳ\":113662,\"åĽ½éĻħæľºåľº\":113663,\"ä¸ĭç§°\":113664,\"çĽ®åīįä¸ºæŃ¢\":113665,\"ç¥ŀä»Ļ\":113666,\"å®ĥåı¯ä»¥\":113667,\"æ¾Ħæ¸ħ\":113668,\"èĥ½ä½¿\":113669,\"æ¸¸åĩ»\":113670,\"æ¸¸åĩ»éĺŁ\":113671,\"åĩ¹\":113672,\"ä¸įè¦ģåĨį\":113673,\"åĨ³èĥľ\":113674,\"åĨ³æĪĺ\":113675,\"æĭ½\":113676,\"çĽĽåħ¸\":113677,\"å¾Īå¥½åľ°\":113678,\"æľĢç¾İçļĦ\":113679,\"åĥļ\":113680,\"å·´åŁº\":113681,\"å·´åŁºæĸ¯åĿ¦\":113682,\"æľĢéĢĤåĲĪ\":113683,\"é«ĺèģĮ\":113684,\"ä¿Ŀå§Ĩ\":113685,\"æİĪæ¬Ĭ\":113686,\"è¯´åĪ°è¿ĻéĩĮ\":113687,\"æİ¨å¼Ģ\":113688,\"çİĩè¾¾\":113689,\"ä¸īåĪĨä¹ĭä¸Ģ\":113690,\"ç®¡çĲĨä¸Ńå¿ĥ\":113691,\"äº¤æ±ĩ\":113692,\"æ£®æŀĹåħ¬åĽŃ\":113693,\"å¾Ģä¸Ĭ\":113694,\"éªĳè¡Į\":113695,\"æį®æŃ¤\":113696,\"çº½å¸¦\":113697,\"ç»ŀ\":113698,\"ä¸īæĸ¹\":113699,\"æĦıä¹īä¸ĬçļĦ\":113700,\"æİ¨è¿Ł\":113701,\"å¤ļæł·æĢ§\":113702,\"æĥ³èµ·äºĨ\":113703,\"æİĴåĲįç¬¬\":113704,\"å·¨é¢Ŀ\":113705,\"æĿŁç¼ļ\":113706,\"å®īå®ļ\":113707,\"äºĭå¯¦\":113708,\"çļĦæĦ¿æľĽ\":113709,\"è£ħå¤ĩåĪ¶éĢł\":113710,\"äººå±ħ\":113711,\"äººå±ħçİ¯å¢ĥ\":113712,\"å¿ĺè®°äºĨ\":113713,\"è¯¥æ¸¸æĪı\":113714,\"æ¥¼ä¸Ĭ\":113715,\"å¼Ģä¼ļ\":113716,\"æģ³\":113717,\"åıĭæĥħéĵ¾æİ¥\":113718,\"ç¡Ĵ\":113719,\"ç»ĻäºĪäºĨ\":113720,\"åģıå¥½\":113721,\"åĵī\":113722,\"äº¤éĢļå®īåħ¨\":113723,\"éĽĮ\":113724,\"æ²»çĹħ\":113725,\"è§īå¾Ĺå¾Ī\":113726,\"è¡¬è¡«\":113727,\"å¿ĥæĦ¿\":113728,\"æ´ŀå¯Ł\":113729,\"æ°ĳæ£Ģå¯ŁéĻ¢\":113730,\"æıĲçĤ¼\":113731,\"è¦ģè¿Ľä¸ĢæŃ¥\":113732,\"é©¾è½¦\":113733,\"æĻ®æĥł\":113734,\"æķĸ\":113735,\"ç¦ıéŁ³\":113736,\"éĢģè¾¾\":113737,\"è§ĦåĪĴè®¾è®¡\":113738,\"æīĭå¥Ĺ\":113739,\"å®īä¿Ŀ\":113740,\"è¿ĺä¸įå¦Ĥ\":113741,\"åīįè¿°\":113742,\"æłĩè®°\":113743,\"ç´§æİ¥çĿĢ\":113744,\"æ§Ĳ\":113745,\"æ·±æ·±åľ°\":113746,\"æ»¡æ»¡çļĦ\":113747,\"æĺ¥è¿Ĳ\":113748,\"æĹ¥äº§\":113749,\"çĪ±æĬ¤\":113750,\"åħ¨æĹ¥\":113751,\"åħ¨æĹ¥åĪ¶\":113752,\"è½¬åĬ¨\":113753,\"ç¥Ńç¥Ģ\":113754,\"ä¹°ä¸ľè¥¿\":113755,\"å¯¹æľªæĿ¥\":113756,\"æ¶Īå¤±äºĨ\":113757,\"åļ´éĩį\":113758,\"ä¸īæĿ¡\":113759,\"éħ¸å¥¶\":113760,\"éĽĨåĽ¢èĤ¡ä»½\":113761,\"è¥¿è·¯\":113762,\"åıªå¾Ĺ\":113763,\"éĢģåİ»\":113764,\"çĭłæĬĵ\":113765,\"åĪ©çĶ¨çİĩ\":113766,\"ä¸ĭåĳ¨\":113767,\"å¥ĭæĪĺ\":113768,\"æĺ¥èĬĤæľŁéĹ´\":113769,\"è´Łè´£ä»»\":113770,\"æĺĤè´µ\":113771,\"å°¾å·´\":113772,\"ç¯ĩæĸĩç«ł\":113773,\"åħ®\":113774,\"è®ĬæĪĲ\":113775,\"å¹¹\":113776,\"çĻ»éĮĦ\":113777,\"ä½Ī\":113778,\"å·¥åĮł\":113779,\"åĵªæĢķæĺ¯\":113780,\"åıįåĵį\":113781,\"ç§ĥ\":113782,\"åĩºè½¨\":113783,\"æĹ¥åĨĽ\":113784,\"åĲįèªī\":113785,\"æķıéĶĲ\":113786,\"æľįåĬ¡æ°´å¹³\":113787,\"çħ§å°Ħ\":113788,\"ä¼Ĭæĭī\":113789,\"ä¼Ĭæĭīåħĭ\":113790,\"åĨħéĺģ\":113791,\"èĬĴæŀľ\":113792,\"ä¸ĩåĪĨ\":113793,\"éĢĢæ¬¾\":113794,\"çĽ´æĴŃéĹ´\":113795,\"æĭ¿åĪ°äºĨ\":113796,\"å°İèĩ´\":113797,\"ç©ºæ°Ķä¸Ń\":113798,\"å®¢æĪ·æľįåĬ¡\":113799,\"è¿ĲåĬ¿\":113800,\"ç»ĵçŁ³\":113801,\"ä¸įå¿ħè¦ģçļĦ\":113802,\"èĥ¶åĽĬ\":113803,\"çĲĨä¼ļ\":113804,\"æĬ½åĩº\":113805,\"ç©ºæ°Ķè´¨éĩı\":113806,\"æ¯ķç«Łæĺ¯\":113807,\"åĨ·æ¼ł\":113808,\"ä¸Ģå¦Ĥ\":113809,\"ä¸Ģå¦ĤæĹ¢\":113810,\"ä¸Ģå¦ĤæĹ¢å¾Ģ\":113811,\"æĤ£çĹħ\":113812,\"åĬłæĮģ\":113813,\"èµŀåĬ©\":113814,\"é«®\":113815,\"åĳ½ä¸Ń\":113816,\"æĦıä¹īä¸Ĭ\":113817,\"ä¸įèĪį\":113818,\"åģļæ¢¦\":113819,\"æīĵæī«\":113820,\"æĺŁåħī\":113821,\"æĸŃè£Ĥ\":113822,\"åħ¨å¥Ĺ\":113823,\"è£ģå®ļ\":113824,\"é©¬åħĭæĢĿ\":113825,\"éª¨éª¼\":113826,\"ä¸Ģè·¯ä¸Ĭ\":113827,\"å®ļæĹ¶\":113828,\"å·¥ç¨ĭæĬĢæľ¯\":113829,\"å½¼å¾Ĺ\":113830,\"æ±²åıĸ\":113831,\"ä¸Ģè§Ī\":113832,\"åĲµæŀ¶\":113833,\"ä¿Ĺç§°\":113834,\"æłªæ´²\":113835,\"åºŁæĹ§\":113836,\"è¡ĮæĺŁ\":113837,\"åıĳçĶŁåıĺåĮĸ\":113838,\"é¦ĸä»ĺ\":113839,\"åįģåĪĨéĩįè¦ģ\":113840,\"æĬĬè¿ĻäºĽ\":113841,\"ç¥ŀå·ŀ\":113842,\"æıĲä¾ĽåķĨ\":113843,\"æ¥·\":113844,\"å±İ\":113845,\"çĬ¶åħĥ\":113846,\"åŁİå¢Ļ\":113847,\"çľĭä¸Ģçľĭ\":113848,\"çĶŁäº§èĥ½åĬĽ\":113849,\"åŁºæľ¬ä¸Ĭéĥ½\":113850,\"æīĵæī°\":113851,\"åĪĿæ¬¡\":113852,\"åĩºç¤º\":113853,\"åħ¶ä¸Ńä¸Ģä¸ª\":113854,\"çĶŁæĢģç³»ç»Ł\":113855,\"æīĭæİĮ\":113856,\"æµİåįĹå¸Ĥ\":113857,\"åľĭåħ§\":113858,\"æŃ£åĢ¼\":113859,\"å¹¾ä¹İ\":113860,\"æİ¨èįĲéĺħè¯»\":113861,\"è¿Ńä»£\":113862,\"è°ĥä¾ĥ\":113863,\"é¥®åĵģ\":113864,\"å¢Ļä½ĵ\":113865,\"åıĺçİ°\":113866,\"äºĨå¥½\":113867,\"äºĨå¥½åĩł\":113868,\"ä¸įçķĻ\":113869,\"çĪ²\":113870,\"å°½æĹ©\":113871,\"æŃ£åľ¨è¿Ľè¡Į\":113872,\"åĩºéĻ¢\":113873,\"æĿĢå®³\":113874,\"æıĲæ¬¾\":113875,\"åıĳå±ķç©ºéĹ´\":113876,\"åīįèº«\":113877,\"ä¸įæĸŃå¢ŀå¼º\":113878,\"æ·±å±Ĥæ¬¡\":113879,\"å®¹çº³\":113880,\"éĤ£ä»½\":113881,\"å·¥ä½ľæķĪçİĩ\":113882,\"æľ¬åĽ½\":113883,\"å¤±èĲ½\":113884,\"æŃ£åĽłä¸º\":113885,\"èĬĤæ°´\":113886,\"ä¸ĭä¸Ģä»£\":113887,\"çłĶåıĳä¸Ńå¿ĥ\":113888,\"ä¸įçĲĨ\":113889,\"å®Įå¥½\":113890,\"ä¿ĿæĬ¤åĮº\":113891,\"ç»ĵæŀĦè°ĥæķ´\":113892,\"å¥łå®ļ\":113893,\"å®£ç§°\":113894,\"éĺ»æĮ¡\":113895,\"æĴ¤ç¦»\":113896,\"ä¸įæĸ¹ä¾¿\":113897,\"åĴķ\":113898,\"ç¬ĳäºĨç¬ĳ\":113899,\"çİ¯å¢ĥæ±¡æŁĵ\":113900,\"ä½ıæĪ·\":113901,\"ç»Ŀç¼ĺ\":113902,\"éĻ¤å°ĺ\":113903,\"é«ĺå°ļ\":113904,\"æĢİä¹Īåı¯èĥ½\":113905,\"éĿ¢èī²\":113906,\"åķĨæ¥Ń\":113907,\"çĸ¹\":113908,\"èµĦæºĲä¼ĺåĬ¿\":113909,\"è¾ĸåĮºåĨħ\":113910,\"èĢĢçľ¼\":113911,\"æĳ§æ¯ģ\":113912,\"ä¸ĸçķĮç»ıæµİ\":113913,\"å¼ķæĿ¥\":113914,\"ä¸ĢåĪĻ\":113915,\"æĭĩæĮĩ\":113916,\"æĬµå¾¡\":113917,\"éĽį\":113918,\"åĩĨå¤ĩå·¥ä½ľ\":113919,\"çıłä¸īè§Ĵ\":113920,\"ç¨ĢåľŁ\":113921,\"èİ·å¾ĹæĦŁ\":113922,\"æĪĲåĬŁçİĩ\":113923,\"ç½ĳçº¦\":113924,\"ç½ĳçº¦è½¦\":113925,\"èĦĲ\":113926,\"æķ¬ä¸ļ\":113927,\"éĩĳä»·\":113928,\"ç²¾é«ĵ\":113929,\"ä¹°è½¦\":113930,\"åħ³åı£\":113931,\"åĨįå¤ļ\":113932,\"æŀģåĵģ\":113933,\"åĲĦå®¶\":113934,\"ä¸¾æĬ¥çĶµè¯Ŀ\":113935,\"èļĬ\":113936,\"æĸ¹å½¢\":113937,\"ç§ĳæĬĢæĪĲæŀľ\":113938,\"æľĢå¥½æĺ¯\":113939,\"éĹ®åĢĻ\":113940,\"çº¢éħĴ\":113941,\"åĽĽç§į\":113942,\"ç¿Ĵæħ\":113943,\"ç¿Ĵæħ£\":113944,\"åŀ¦\":113945,\"éĤ£åıª\":113946,\"é¢ĨæĤŁ\":113947,\"çľ¼éĥ¨\":113948,\"æ³°å®ī\":113949,\"ä»»æľŁ\":113950,\"ç£¨æįŁ\":113951,\"æĽ¿æį¢\":113952,\"åħ¸ç¤¼\":113953,\"ç¬¦åĲĪæĿ¡ä»¶\":113954,\"è¿ĺæľīä»Ģä¹Ī\":113955,\"åħ±äº«åįķè½¦\":113956,\"åı¯åĪĨä¸º\":113957,\"åŃ£åĲİ\":113958,\"åŃ£åĲİèµĽ\":113959,\"ä¸ľèİŀå¸Ĥ\":113960,\"å¿ĥæĦı\":113961,\"æīŃæĽ²\":113962,\"ä½ľä¸ºä¸Ģç§į\":113963,\"è¿Ļéĥ¨åĪĨ\":113964,\"åıĤä¸İåĪ°\":113965,\"ç½ĳçĲĥ\":113966,\"å¯¦çı¾\":113967,\"ç»Ħè£ħ\":113968,\"åĲĳå¤ĸ\":113969,\"å·¥ä½ľæĸ¹æ¡Ī\":113970,\"åįģæĿ¡\":113971,\"èª²ç¨ĭ\":113972,\"é¢¤æĬĸ\":113973,\"åĵ©\":113974,\"éĤ®å¯Ħ\":113975,\"äº¢\":113976,\"åħįè²»\":113977,\"ç§¤\":113978,\"åºĶæĢ¥ç®¡çĲĨ\":113979,\"åĽĽäºĶ\":113980,\"éºĴéºŁ\":113981,\"å¾ĴæŃ¥\":113982,\"è¨ĺå¾Ĺ\":113983,\"çĴĲ\":113984,\"æĺ¯åĲ¦ä¼ļ\":113985,\"æĦıè§ģåıįé¦Ī\":113986,\"éļ¾æĢª\":113987,\"çªį\":113988,\"äº¤æİ¥\":113989,\"ä¸¤åįĥ\":113990,\"æĩīçĶ¨\":113991,\"æľŁéĸĵ\":113992,\"æĲ¬åĪ°\":113993,\"è®®é¢ĺ\":113994,\"ç¢§æ¡Ĥ\":113995,\"ç¢§æ¡ĤåĽŃ\":113996,\"åģļçĶŁæĦı\":113997,\"éĻĽä¸ĭ\":113998,\"è·ĭ\":113999,\"èĢģäººå®¶\":114000,\"å¸¦åĽŀ\":114001,\"æŀ¸æĿŀ\":114002,\"è¡Įéķ¿\":114003,\"åĨħå®¹ç®Ģä»ĭ\":114004,\"æ¢¢\":114005,\"æĮĩæİ§\":114006,\"éĩįçĹĩ\":114007,\"ç½ĳåıĭä»¬\":114008,\"çı¾ä»£\":114009,\"ç±»äº§åĵģ\":114010,\"å¥Ķæ³¢\":114011,\"æ¸º\":114012,\"ç²īç¢İ\":114013,\"è¿Ļåıªæĺ¯\":114014,\"æ£Ģå¯Łæľºåħ³\":114015,\"é½Ĭ\":114016,\"æĪ¿ç§Ł\":114017,\"å¾·æĭī\":114018,\"å²ģä»¥ä¸Ĭ\":114019,\"çº¯åĩĢ\":114020,\"åĪĨå¸ĥåľ¨\":114021,\"èĥ½å¾ĹåĪ°\":114022,\"ä¸įå°½\":114023,\"ç«ŀä»·\":114024,\"çļĦå¸¦é¢Ĩ\":114025,\"çļĦå¸¦é¢Ĩä¸ĭ\":114026,\"ä¸Ńèį¯æĿĲ\":114027,\"æĿĳéķĩ\":114028,\"ä¸įåı¯éģ¿åħį\":114029,\"éľ²å¤©\":114030,\"å°ıå§ĳå¨ĺ\":114031,\"çī©ä»¶\":114032,\"èĳĹä½ľæĿĥ\":114033,\"æĭĺçķĻ\":114034,\"éĥ½è§īå¾Ĺ\":114035,\"æĽ²æĬĺ\":114036,\"æ·»åĬłåīĤ\":114037,\"åı¬åĽŀ\":114038,\"æīİå®ŀæİ¨è¿Ľ\":114039,\"æĬĦè¢Ń\":114040,\"åĮĸèº«\":114041,\"çĽ´èĲ¥\":114042,\"ä¹Łå¸ĮæľĽ\":114043,\"èį£èªīç§°åı·\":114044,\"åįĸç»Ļ\":114045,\"æľīä¸įåĲĮçļĦ\":114046,\"å¥ĩçī¹\":114047,\"éĥ½è®¤ä¸º\":114048,\"å¦ŀ\":114049,\"æĪĲéķ¿ä¸º\":114050,\"è¾©æĬ¤\":114051,\"ä¸»æķĻç»ĥ\":114052,\"æ³ķå¸ĪèģĮä¸ļ\":114053,\"æ¤įåħ¥\":114054,\"ç´¢å°¼\":114055,\"åĲ¬è¿ĩ\":114056,\"ä¹łæĥ¯äºĨ\":114057,\"å¤ºåıĸ\":114058,\"éŁĵ\":114059,\"æľ¬è´¨ä¸Ĭ\":114060,\"æİ¥åĬĽ\":114061,\"äºĳç«¯\":114062,\"è¦ģåģļå¥½\":114063,\"è·¯çģ¯\":114064,\"åįıåĲĮåıĳå±ķ\":114065,\"æľīå¾ħ\":114066,\"æ°´åŁŁ\":114067,\"æĲľçĭĲé¦ĸé¡µ\":114068,\"è´¨éĩıå®īåħ¨\":114069,\"åįģäºĮäºĶ\":114070,\"åĵ®åĸĺ\":114071,\"èĵ¬åĭĥåıĳå±ķ\":114072,\"åĲįå£°\":114073,\"èº«äº¡\":114074,\"çİĭåºľ\":114075,\"åİŁåĪĻä¸Ĭ\":114076,\"çĥĺå¹²\":114077,\"éģĹæ¼ı\":114078,\"éĿ¢çĽ®\":114079,\"åĽ½ä¼ļ\":114080,\"ä¸ĢçĽ´éĥ½æĺ¯\":114081,\"æľīä¸Ģä½į\":114082,\"éħįæľī\":114083,\"éĻªçĿĢ\":114084,\"ä¼ģåĽ¾\":114085,\"æĮīä¸ĭ\":114086,\"èĵĿåĽ¾\":114087,\"æ©ĺ\":114088,\"å¤§å¤ļæĺ¯\":114089,\"è¾©è®º\":114090,\"æĹĭå¾ĭ\":114091,\"æĬ¥éĢģ\":114092,\"æĿ¡è§Ħå®ļ\":114093,\"åĬ¨éĿĻ\":114094,\"åĮĪå¥´\":114095,\"æĭľè®¿\":114096,\"ä¸ĢåĪĢ\":114097,\"ä»ĸçŁ¥éģĵ\":114098,\"ä¸»æĿĥ\":114099,\"ä»ĸæĽ¾\":114100,\"æĴŃç§į\":114101,\"å£ģåŀĴ\":114102,\"çī¢è®°ä½¿åĳ½\":114103,\"åľ¨è¿Ļæĸ¹éĿ¢\":114104,\"æīĭèħķ\":114105,\"æĶ¯æŀ¶\":114106,\"ä¾Ĩèĩª\":114107,\"éĩįå¡ĳ\":114108,\"å¤ļå±Ĥæ¬¡\":114109,\"ä»ĭè´¨\":114110,\"éĿ¢åŃĶ\":114111,\"æ½®æ¹¿\":114112,\"åİ¿åŁŁ\":114113,\"æ¸¸æĪıå½ĵä¸Ń\":114114,\"å£ŀ\":114115,\"åĪĹåĩº\":114116,\"èµĽåĮº\":114117,\"å¤ļåįĬ\":114118,\"éĩįçĤ¹å·¥ä½ľ\":114119,\"æĪĳä»¬å¿ħé¡»\":114120,\"æŁıæŀĹ\":114121,\"é²ģèĥ½\":114122,\"æĸ½å±ķ\":114123,\"åĲĦåĮº\":114124,\"åħįç¨İ\":114125,\"èµĽåĲİ\":114126,\"æľĢéĩįè¦ģ\":114127,\"ä¸Ģä¸ªå¥½çļĦ\":114128,\"è¿Ŀæ³ķè¿Ŀè§Ħ\":114129,\"äºĨè§£æĽ´å¤ļ\":114130,\"æķ¬è¯·\":114131,\"ç¬ĳçĿĢè¯´\":114132,\"ä¸įæĸŃåıĳå±ķ\":114133,\"æĳĦå½±å¸Ī\":114134,\"ä»¥éĺ²\":114135,\"çĤ¸å¼¹\":114136,\"å£°åĵį\":114137,\"ç¤ģ\":114138,\"æĩ¿\":114139,\"èĪĨæĥħ\":114140,\"èĩªçĶ±è´¸æĺĵ\":114141,\"æķıæį·\":114142,\"ä¸īå¤§éĺ¶æ®µ\":114143,\"èĭĶ\":114144,\"æĹºåŃ£\":114145,\"ä¸įæ»¡æĦı\":114146,\"å¾®ä¿¡åı·\":114147,\"ä¿®ä¸º\":114148,\"çł´è£Ĥ\":114149,\"éĢĥç¦»\":114150,\"æ¯ıèĤ¡\":114151,\"è¾¾ä¸įåĪ°\":114152,\"æ¯ıå¹´éĥ½\":114153,\"çģ¯ç¬¼\":114154,\"æŃ¤åŁºç¡Ģä¸Ĭ\":114155,\"åĥıä¸ª\":114156,\"åĪĨå¨©\":114157,\"æĻ¾\":114158,\"ä¸įèĩ³äºİ\":114159,\"çº¢çº¿\":114160,\"è¯¯è§£\":114161,\"ä¸ľè·¯\":114162,\"æ·®å®ī\":114163,\"äº§åŃ¦\":114164,\"äº§åŃ¦çłĶ\":114165,\"èī¾æ»ĭ\":114166,\"èī¾æ»ĭçĹħ\":114167,\"åīįæıĲæĺ¯\":114168,\"æ¯ıä¸Ģå¤©\":114169,\"ä¸ĥå¤§\":114170,\"æłĳåı¶\":114171,\"èµ°å¾Ĺ\":114172,\"è¿Ļä¸¤ç§į\":114173,\"æİıåĩº\":114174,\"æİĲ\":114175,\"é¢Ĩå¯¼èĢħ\":114176,\"ä¸Ģæľµ\":114177,\"ä¸ªå¤ļæľĪ\":114178,\"ä¸Ńåħ³\":114179,\"ä¸Ńåħ³æĿĳ\":114180,\"è¯¾åłĤæķĻåŃ¦\":114181,\"å¤§åĴĸ\":114182,\"éģĭçĶ¨\":114183,\"è¯ļæĦı\":114184,\"ç»ĦåĽ¾\":114185,\"è¯ķçĿĢ\":114186,\"ä¹Ķæ²»\":114187,\"è¿ĺä¸įæĺ¯\":114188,\"æľīæĽ´å¥½çļĦ\":114189,\"åĲİå¤ĩ\":114190,\"æĸ°çĶŁåĦ¿\":114191,\"æ°Ķè¡Ģ\":114192,\"æ²¥éĿĴ\":114193,\"å±ıéļľ\":114194,\"æ¥ŃåĭĻ\":114195,\"æĪĳä»¥ä¸º\":114196,\"éķ¿çĽ¸\":114197,\"èĢģçĪ¸\":114198,\"éķĩæ±Ł\":114199,\"æľºæ¢°è®¾å¤ĩ\":114200,\"ä½Ĩæĺ¯å¦Ĥæŀľ\":114201,\"åĿļå®ļä¸į\":114202,\"åĿļå®ļä¸įç§»\":114203,\"åĨ²éĶĭ\":114204,\"ç®ĢçĽ´æĺ¯\":114205,\"åĤ¨èĵĦ\":114206,\"çº¯çĶµåĬ¨\":114207,\"æ¼«æŃ¥\":114208,\"ä¸¾èµ·\":114209,\"æģ¶æĢ§\":114210,\"è¨ĺéĮĦ\":114211,\"èģĮèĥ½éĥ¨éĹ¨\":114212,\"åħ¨éķ¿\":114213,\"éĽ»è¦ĸ\":114214,\"ä¹³èħº\":114215,\"ä½ķå¤Ħ\":114216,\"æ¶Īæŀģ\":114217,\"æŃ£å¤Ħäºİ\":114218,\"å®īå®ģ\":114219,\"æĪĲéķ·\":114220,\"åıĻè¿°\":114221,\"æºĥçĸ¡\":114222,\"ä½Ĩçİ°åľ¨\":114223,\"å¥³æĺŁ\":114224,\"å©´å¹¼åĦ¿\":114225,\"æĬķèŀįèµĦ\":114226,\"éĹ®éĹ®\":114227,\"æıŃå¼Ģ\":114228,\"è¯ı\":114229,\"åĲįå½ķ\":114230,\"èĺĳèıĩ\":114231,\"åĲĬé¡¶\":114232,\"æ¹ĸåĮº\":114233,\"åįĸåľº\":114234,\"å»ºç¯\":114235,\"å»ºç¯ī\":114236,\"èİ½\":114237,\"åĲ¬åĲ¬\":114238,\"ç«ŀäºīä¼ĺåĬ¿\":114239,\"åĩºä»»\":114240,\"æľīä¸¤ç§į\":114241,\"æ©±æŁľ\":114242,\"è¤ª\":114243,\"è¯ķåį·\":114244,\"ç»ıæµİæĬĢæľ¯\":114245,\"æ·±å±Ĥ\":114246,\"éĩįè¦ģåĨħå®¹\":114247,\"é£İæİ§\":114248,\"çĬ¶æĢģä¸ĭ\":114249,\"éĥ¨éĸĢ\":114250,\"å¹¿æ±½\":114251,\"è§Ĥæĳ©\":114252,\"éģĹçķĻ\":114253,\"è½¬è´¦\":114254,\"æĮģä»ĵ\":114255,\"æĢ»è®¡\":114256,\"åľĺéļĬ\":114257,\"æĪ¿ä¸ľ\":114258,\"éĺĢéĹ¨\":114259,\"åħ¬åħ³\":114260,\"åħ³åĪĩ\":114261,\"èĤĺ\":114262,\"æķ¸æĵļ\":114263,\"ä¸īåįģå¹´\":114264,\"è§ģè¯ģäºĨ\":114265,\"å±Ĩ\":114266,\"çģ°å°ĺ\":114267,\"æ¦ľé¦ĸ\":114268,\"è¦ĨçĽĸçİĩ\":114269,\"ä»Ļå¥³\":114270,\"çĶŁäº§æĢ»\":114271,\"çĶŁäº§æĢ»åĢ¼\":114272,\"æĪ¿è´·\":114273,\"æ±ŁåĮº\":114274,\"åħħçĶµæ¡©\":114275,\"çĻ¾åĲĪ\":114276,\"ç¢ºèªį\":114277,\"è½¬ç§»åĪ°\":114278,\"éĥ½æĹłæ³ķ\":114279,\"çºªå¿µé¦Ĩ\":114280,\"çŃ¾ç½²äºĨ\":114281,\"å¹¶ä¸įå¤ļ\":114282,\"æĮł\":114283,\"ä¸įå¤ªå¥½\":114284,\"ä¸ĸä»£\":114285,\"è¯¯å¯¼\":114286,\"é«ĺå³°è®ºåĿĽ\":114287,\"åħ¼å®¹\":114288,\"éľ¸æ°Ķ\":114289,\"æĿ¥è®¿\":114290,\"æīĢå¸¦æĿ¥çļĦ\":114291,\"æĺ¯ä¸Ģéĥ¨\":114292,\"æĻļé¥Ń\":114293,\"åİĨä»£\":114294,\"åĲ¦åīĩ\":114295,\"ä¹ħä¹ħ\":114296,\"æľīæķĪæľŁ\":114297,\"è¯±åıĳ\":114298,\"æĢ»èµĦäº§\":114299,\"æľ¬èº«å°±æĺ¯\":114300,\"çĶŁäº§åİĤå®¶\":114301,\"æĹ¶é«¦\":114302,\"èĢĲçĶ¨\":114303,\"ä»İå°ıå°±\":114304,\"æĿ¡çº¦\":114305,\"èĭ±åĭĩ\":114306,\"ä¿Ĺè¯Ŀè¯´\":114307,\"å¯ºåºĻ\":114308,\"å¿ĥçĲĨåģ¥åº·\":114309,\"ä»Ģä¹Īäºĭæĥħ\":114310,\"æ±īåŃĹ\":114311,\"çķĻä½ı\":114312,\"åįĹè·¯\":114313,\"ä¸īé¡¹\":114314,\"ä¸¢äºĨ\":114315,\"æĥ³åĪ°äºĨ\":114316,\"çŃ¹éĽĨ\":114317,\"éĻĦåĬłåĢ¼\":114318,\"è¥¿è£ħ\":114319,\"ä¹ĭä½ľ\":114320,\"åģļçļĦäºĭ\":114321,\"çķ¶æĤ¨\":114322,\"çķ¶æĤ¨åľ¨\":114323,\"é¦ĸæ¬¾\":114324,\"ä¸įåľ¨ä¹İ\":114325,\"å·¥ç¨ĭæĸ½å·¥\":114326,\"éļĲéļĲ\":114327,\"åıĺèº«\":114328,\"æ²¿éĢĶ\":114329,\"æĤłæĤł\":114330,\"ä¿Ŀæļĸ\":114331,\"çĶŁæ´»åŀĥåľ¾\":114332,\"æ¸¤æµ·\":114333,\"æŃ¦ä¾ł\":114334,\"å¥³ä¸»è§Ĵ\":114335,\"ä¸¾ä¾ĭ\":114336,\"æ·¨\":114337,\"çĻ½é¢Ĩ\":114338,\"è£ĻåŃĲ\":114339,\"è¿Ķè¿ĺ\":114340,\"è¿Īåĩº\":114341,\"é¾ĻéĹ¨\":114342,\"ç»ıæµİä½ĵ\":114343,\"æĶ¶å®ĺ\":114344,\"çķĮéĻĲ\":114345,\"è·³åĩº\":114346,\"åįĩåĢ¼\":114347,\"ç»µéĺ³\":114348,\"çĸ¤çĹķ\":114349,\"çľĭæ¸ħ\":114350,\"æĭĴçµķ\":114351,\"è¥Ħéĺ³\":114352,\"è¯¾å¤ĸ\":114353,\"åŃĲåŃĻ\":114354,\"æŃĮè¯į\":114355,\"æĪĲåĲį\":114356,\"æº¶æ¶²\":114357,\"åĦĴå®¶\":114358,\"åķĨä¸ļåĮĸ\":114359,\"è¾¨åĪ«\":114360,\"å¤ļè¾¾\":114361,\"ç½ĳåºĹ\":114362,\"ä¹Ŀå¤§\":114363,\"ä¹Ŀå¤§ç²¾ç¥ŀ\":114364,\"æŃ¤ä¸¾\":114365,\"è¿ŀè½½\":114366,\"ä¸ĢåĢĭäºº\":114367,\"èī²æ³½\":114368,\"æ¶µçĽĸäºĨ\":114369,\"è¦ıåĬĥ\":114370,\"åĽ½æĥħ\":114371,\"åį«çĶŁåģ¥åº·\":114372,\"ç§¯æŀģåĵįåºĶ\":114373,\"æĭĻ\":114374,\"åĪ¶åĬ¨\":114375,\"æĥ³è±¡åĬĽ\":114376,\"çļĦä¹Ĳè¶£\":114377,\"å¼łå®¶çķĮ\":114378,\"å´İ\":114379,\"éĩįåŀĭ\":114380,\"å¤ĸå¢Ļ\":114381,\"æĶ¾åŃ¦\":114382,\"è®¤çľŁåŃ¦ä¹ł\":114383,\"è´¬åĢ¼\":114384,\"æ³ķæ¡Ī\":114385,\"æĬ¤èĤ¤åĵģ\":114386,\"éĻ·åħ¥äºĨ\":114387,\"è¯·æĤ¨\":114388,\"åŀ¢\":114389,\"æķĻèĤ²èµĦæºĲ\":114390,\"äº¤æĺĵå¹³åı°\":114391,\"æĹ¶è£ħ\":114392,\"ä¼łæŁĵçĹħ\":114393,\"æ¹ĸæ³Ĭ\":114394,\"èµĦç®¡\":114395,\"åİ¨å¸Ī\":114396,\"éĹľéį\":114397,\"éĹľéįµ\":114398,\"åĵĪåĵĪåĵĪ\":114399,\"çĽĹçªĥ\":114400,\"çĶľç¾İ\":114401,\"åºĦåĽŃ\":114402,\"çĽ®åīįå·²ç»ı\":114403,\"è¾¹ä¸Ĭ\":114404,\"çģ«èĬ±\":114405,\"æĬ¥è®°èĢħ\":114406,\"æģĭæĥħ\":114407,\"ç´§åĩĳ\":114408,\"æ°´æµģ\":114409,\"è¿Ļæĺ¯æĪĳä»¬\":114410,\"æ³¥åľŁ\":114411,\"æĽ¾ä»»\":114412,\"æĸ¹è¨Ģ\":114413,\"åĳ¨åħŃ\":114414,\"åı·æ¥¼\":114415,\"ä¼ĳåģĩ\":114416,\"è¯¯ä¼ļ\":114417,\"åĽ½åĢº\":114418,\"åīįå¤ķ\":114419,\"ä¸¤å¼ł\":114420,\"éĹ«\":114421,\"éŃĶé¬¼\":114422,\"æĬĬæĮģ\":114423,\"èĬĤèĥ½çİ¯ä¿Ŀ\":114424,\"æ¸ħæ´ģèĥ½æºĲ\":114425,\"èĤ¥æĸĻ\":114426,\"é«ĺé¢ĳ\":114427,\"å°±æľīäºĨ\":114428,\"äº¤ä¼ļ\":114429,\"æ²¡éĴ±\":114430,\"éĽħæĢĿ\":114431,\"è¦ģåıĬæĹ¶\":114432,\"åŁ¹åħ»åŃ¦çĶŁ\":114433,\"æ¬£åĸľ\":114434,\"çĥŃæ°´åĻ¨\":114435,\"é¾Ļæ¹ĸ\":114436,\"äºĮæ¥¼\":114437,\"æĸ°æµªè´¢ç»ı\":114438,\"æĸ°åĬ¨èĥ½\":114439,\"èµ£å·ŀ\":114440,\"æĭ³å¤´\":114441,\"æµģåĲĳ\":114442,\"ä¹Łæĺ¯å¾Ī\":114443,\"åıĳåĶ®\":114444,\"ä¸ŃåĲ«æľī\":114445,\"åĲĵå¾Ĺ\":114446,\"å·¨æĺŁ\":114447,\"æĹłæīĢè°ĵ\":114448,\"æ¯ĽåŃĶ\":114449,\"åħ¬åħ±äº¤éĢļ\":114450,\"çĤİçĥŃ\":114451,\"èµ·èįī\":114452,\"åĬłçĽŁåķĨ\":114453,\"è¯´ä¸įåĩº\":114454,\"å¤§åŃ¦æ¯ķä¸ļ\":114455,\"å·¥ä¸ļåĽŃ\":114456,\"éłĺåŁŁ\":114457,\"åºĨåħ¸\":114458,\"æµģäº§\":114459,\"èģ²éŁ³\":114460,\"ä¼¼ä¹İæĺ¯\":114461,\"è´§æºĲ\":114462,\"æ·±åĪĩ\":114463,\"æ²»çĸĹæĸ¹æ³ķ\":114464,\"èµĦæºĲéħįç½®\":114465,\"ç¶²åıĭ\":114466,\"çĶ£\":114467,\"äº¥\":114468,\"èº²åľ¨\":114469,\"ç¤¾ç§ĳ\":114470,\"è»Łé«Ķ\":114471,\"å¥³è£ħ\":114472,\"æŃ¡è¿İ\":114473,\"ç»¼åĲĪå®ŀåĬĽ\":114474,\"æł¼å°ĩ\":114475,\"åħļåı²åŃ¦ä¹ł\":114476,\"æľĢåŁºæľ¬\":114477,\"æľĢåŁºæľ¬çļĦ\":114478,\"çľĭæľĽ\":114479,\"åıĹè´¿\":114480,\"ä¸įä»ħèĥ½\":114481,\"ä½ķå¿ħ\":114482,\"ä¸Ģä¸ªå°ıæĹ¶\":114483,\"ç¾Į\":114484,\"æĭĽæĶ¶\":114485,\"çĤĴèĤ¡\":114486,\"æĿĳå¹²éĥ¨\":114487,\"çĽ¸çĪ±\":114488,\"æ½ľèĥ½\":114489,\"ä¹į\":114490,\"æĹ¶è¾°\":114491,\"æ¬£æħ°\":114492,\"éĵ¶è¡Įä¸ļ\":114493,\"çĭŃçªĦ\":114494,\"éĩįçĤ¹é¢ĨåŁŁ\":114495,\"çİ°å®ŀçĶŁæ´»\":114496,\"éĮ¯èª¤\":114497,\"æĸ°è§Ħ\":114498,\"æ»¥çĶ¨\":114499,\"æĹ¶ä¸į\":114500,\"æĹ¶ä¸įæĹ¶\":114501,\"å¸³èĻŁ\":114502,\"ç¨Ģç¼º\":114503,\"åĲĳä¸ľ\":114504,\"ä¿Ŀåģ¥åĵģ\":114505,\"çıŃéķ¿\":114506,\"äºĴåĭķ\":114507,\"ç¬¼ç½©\":114508,\"æ½Ľ\":114509,\"æļĸå¿ĥ\":114510,\"è½°çĤ¸\":114511,\"åºĨå¹¸\":114512,\"è²Įä¼¼\":114513,\"æĵº\":114514,\"èĢĲç£¨\":114515,\"ä¸ĵä¸ļäººå£«\":114516,\"ä¸ĢèĪ¬éĥ½æĺ¯\":114517,\"æ¼³å·ŀ\":114518,\"åħ¨èĩªåĬ¨\":114519,\"å½ķçĶ¨\":114520,\"å¤§è·Į\":114521,\"æľīæķĪæĢ§\":114522,\"èĩªåĭķ\":114523,\"ä¸īä¸ªæĸ¹éĿ¢\":114524,\"æ¸¯åĮº\":114525,\"ä¿¡è²¸\":114526,\"éĢļè¯Ŀ\":114527,\"é«ĺæ¶¨\":114528,\"æ³Ħæ¼ı\":114529,\"éħįä¸Ĭ\":114530,\"åħļå·¥å§Ķ\":114531,\"è¢«è®¤ä¸º\":114532,\"è¢«è®¤ä¸ºæĺ¯\":114533,\"ä¸įä¼ļåĨį\":114534,\"è°ĥåīĤ\":114535,\"åıĤèĤ¡\":114536,\"èĦ±åıĳ\":114537,\"å¿łå®ŀ\":114538,\"åĨħåĪĨæ³Į\":114539,\"ç¹ģå¿Ļ\":114540,\"åıĮåĪĽ\":114541,\"é©»æĿĳ\":114542,\"åĪĴç®Ĺ\":114543,\"éģİä¾Ĩ\":114544,\"åľ£ç»ı\":114545,\"èıľé¸Ł\":114546,\"æĭ¼å¤ļå¤ļ\":114547,\"ä¸ŃåĽ½æ±½è½¦\":114548,\"çĥŁèįī\":114549,\"çĽ´æµģ\":114550,\"äºĨä¸Ģåı£æ°Ķ\":114551,\"ä½İæĪĲæľ¬\":114552,\"æī¾åĽŀ\":114553,\"èĩªåįĳ\":114554,\"ç¸½æĺ¯\":114555,\"æĸĩåĮĸåĪĽæĦı\":114556,\"å¤©æ²³\":114557,\"æ¨±æ¡ĥ\":114558,\"éªĳåħµ\":114559,\"éĩĮéĿ¢æľī\":114560,\"çİ®\":114561,\"èĥ½æī¾åĪ°\":114562,\"éĢĥè·ĳ\":114563,\"åĪĩå°Ķ\":114564,\"åĪĩå°Ķè¥¿\":114565,\"ä»¥ä¸ĭæĺ¯\":114566,\"å²³éĺ³\":114567,\"çļĦæ¦Ĥçİĩ\":114568,\"æĬµåĪ¶\":114569,\"å¸ĪäºĭåĬ¡\":114570,\"å¸ĪäºĭåĬ¡æīĢ\":114571,\"åĩĨæĹ¶\":114572,\"å±¬æĸ¼\":114573,\"è®¢è´Ń\":114574,\"åįłæį®äºĨ\":114575,\"ä¸ŃéĢĶ\":114576,\"å°ĭ\":114577,\"é»ĳé©¬\":114578,\"åİ¿åħ¬å®īå±Ģ\":114579,\"ä¸ĥæľĪ\":114580,\"èī²ç´ł\":114581,\"å¿ĥèĦıçĹħ\":114582,\"æĹ¶éĻĲ\":114583,\"æ¯įåħ¬åı¸\":114584,\"å¹ķåĲİ\":114585,\"ä¸Ĭæ¦ľ\":114586,\"åĢ¾åĲĳäºİ\":114587,\"çº¸ä¸Ĭ\":114588,\"æ¡ĵ\":114589,\"éĽĨä½ĵç»ıæµİ\":114590,\"æĥħå¢ĥ\":114591,\"è¦ģåģļåĪ°\":114592,\"ç©įæ¥µ\":114593,\"åıªæĢķ\":114594,\"æ¹ĺè¥¿\":114595,\"çļ±çº¹\":114596,\"åħ¨åľĭ\":114597,\"çĦ¡è«ĸ\":114598,\"å¥½æĦŁ\":114599,\"åįķä»·\":114600,\"è¿Ľç¨ĭä¸Ń\":114601,\"æĺĨä»ĳ\":114602,\"åĪĽå®¢\":114603,\"åħħæĸ¥\":114604,\"åħĪæĬĬ\":114605,\"è¯¥æĢİä¹ĪåĬŀ\":114606,\"åĵģå¾·\":114607,\"åħ¨éĿ¢åıĳå±ķ\":114608,\"è¨ĪåĬĥ\":114609,\"æĢ»å·¥ä¼ļ\":114610,\"ä½Ľå±±å¸Ĥ\":114611,\"æĬĹè¡¡\":114612,\"å¼Ģåľº\":114613,\"éĴ±å¸ģ\":114614,\"åıĭä»¬\":114615,\"å«īå¦Ĵ\":114616,\"ç´¢èµĶ\":114617,\"è®ĬåĮĸ\":114618,\"æĮ¤åİĭ\":114619,\"æĮĳè¡ħ\":114620,\"çŃīä¸Ģæī¹\":114621,\"æĿ¨æ¬¢\":114622,\"ä¸ĵå®¶åŃ¦èĢħ\":114623,\"èĥ½è¾¾åĪ°\":114624,\"èµ°è¿ĳ\":114625,\"è´«åĽ°åľ°åĮº\":114626,\"éĻĲæľŁ\":114627,\"ä¸įå¹³è¡¡\":114628,\"åĽ½åĨħå¸Ĥåľº\":114629,\"èµĽåľº\":114630,\"éħįèµĦ\":114631,\"è¦ģèĢĥèĻĳ\":114632,\"ä¸ĩåı°\":114633,\"æľĪæľ«\":114634,\"éĶ¥\":114635,\"åŃ«\":114636,\"æİ¥è§¦åĪ°\":114637,\"åĩºäº§\":114638,\"æķĻåŃ¸\":114639,\"ä½ľå¼Ĭ\":114640,\"çļĦæľĢåĲİä¸Ģ\":114641,\"ä¿ĥæĪĲ\":114642,\"åĲ¸åıĸ\":114643,\"æ½ľèīĩ\":114644,\"è¢«éªĹ\":114645,\"è¾ĵäºĨ\":114646,\"çĭĲçĭ¸\":114647,\"åįĩéĻį\":114648,\"è¿ĻäºĽä¸ľè¥¿\":114649,\"æĬķèµĦåŁºéĩĳ\":114650,\"çĶŁçī©åŃ¦\":114651,\"ç½ĳç»ľèĲ¥éĶĢ\":114652,\"åĲĳè®°èĢħ\":114653,\"èįīåľ°\":114654,\"æĢ¯\":114655,\"æľįåĬ¡èĥ½åĬĽ\":114656,\"éĥģéĹ·\":114657,\"åįķåĵģ\":114658,\"å¾Ĺç½ª\":114659,\"æĺĵäºİ\":114660,\"ä¸ªå¤ļå°ıæĹ¶\":114661,\"éĩįä»»\":114662,\"ä¸Ĭå®ĺ\":114663,\"æľ¬éĩĳ\":114664,\"çı¾åł´\":114665,\"æº¢ä»·\":114666,\"æĺŁè¾°\":114667,\"æ´»åĬ¨çİ°åľº\":114668,\"ä¸¹éº¦\":114669,\"å¸Ŀçİĭ\":114670,\"æŁ¥æĺİ\":114671,\"åŃĺåľ¨äºİ\":114672,\"é¦Ļæ°´\":114673,\"æĬ½æ£Ģ\":114674,\"å®ŀéĻħä¸Ĭæĺ¯\":114675,\"æĸ°å¾ģç¨ĭ\":114676,\"è´¢åĬ¡ç®¡çĲĨ\":114677,\"æİĽ\":114678,\"åĨľåİĨ\":114679,\"éĥ½èĥ½å¤Ł\":114680,\"éĤ¯éĥ¸\":114681,\"çľŁå¯¦\":114682,\"ç»Ĭ\":114683,\"åĨµä¸Ķ\":114684,\"ç½®èº«\":114685,\"ç¥Īç¥·\":114686,\"çĿģå¼Ģ\":114687,\"æĮĩçĤ¹\":114688,\"å¼Ģæľº\":114689,\"è¥¿å®ģ\":114690,\"åĮĹçº¦\":114691,\"ç§¯æ°´\":114692,\"åĩºåĬ¨\":114693,\"åıĳå±ķæ¨¡å¼ı\":114694,\"è½¬æĬĺ\":114695,\"èĢĥçĤ¹\":114696,\"æľīç½ĳåıĭ\":114697,\"è´«åĽ°æĿĳ\":114698,\"æĪĳä»¬çŁ¥éģĵ\":114699,\"åĪĨéĶĢ\":114700,\"å±±èĦī\":114701,\"æ¯ĶæĭŁ\":114702,\"ä¼°ç®Ĺ\":114703,\"æĶ¹å»º\":114704,\"å£®è§Ĥ\":114705,\"ç§īæĮģ\":114706,\"æıª\":114707,\"ç¦Ģ\":114708,\"åĮĸåŃ¦åĵģ\":114709,\"ä¸ŃåĽ½åĪ¶éĢł\":114710,\"ä¸Ģæŀ¶\":114711,\"æīįè¡Į\":114712,\"æĭĽå¾ħ\":114713,\"åıĺæį¢\":114714,\"åīįçº¿\":114715,\"å¹¸å¥½\":114716,\"è¿Ļæł·çļĦè¯Ŀ\":114717,\"å¿ĥè¡Ģç®¡\":114718,\"æĢ§çĸ¾çĹħ\":114719,\"åħ¨èĥ½\":114720,\"åĪĳä¾¦\":114721,\"ä¿¡æģ¯åıĳå¸ĥ\":114722,\"æĺ¾çĦ¶æĺ¯\":114723,\"éĿĴéĵľ\":114724,\"åĲĥä»Ģä¹Ī\":114725,\"çĶµä»·\":114726,\"æ³ķå¾ĭè§Ħå®ļ\":114727,\"çħ²\":114728,\"çĵ·åĻ¨\":114729,\"èĤīç±»\":114730,\"æıĴåħ¥\":114731,\"åĹľ\":114732,\"è¿Łè¿Ł\":114733,\"ä¸ĢçĤ¹éĥ½ä¸į\":114734,\"è¿ĺåĮħæĭ¬\":114735,\"èĪįä¸įå¾Ĺ\":114736,\"æłĩå¿ĹæĢ§\":114737,\"æľĪä»¥æĿ¥\":114738,\"ç³ĸæŀľ\":114739,\"éĥ½åºĶè¯¥\":114740,\"çİ¯å¢ĥåį«çĶŁ\":114741,\"èĪªè¡Į\":114742,\"éĥĳéĩį\":114743,\"ç½ĳæĬķ\":114744,\"åįģä½³\":114745,\"ç§ģä¸ĭ\":114746,\"æļ´è·Į\":114747,\"åĬłå¿«åıĳå±ķ\":114748,\"äº§åĵģçłĶåıĳ\":114749,\"åĪĽéĢłåĩº\":114750,\"æĢ»è§īå¾Ĺ\":114751,\"åºķçĽĺ\":114752,\"èķĬ\":114753,\"åĩºå¸Ńä¼ļè®®\":114754,\"ä¸»æĿ¿\":114755,\"æĹ¥æĻļéĹ´\":114756,\"å®ĺæĸ¹å¾®åįļ\":114757,\"å¼ķçĶ¨æĹ¥æľŁ\":114758,\"åī¯æķĻæİĪ\":114759,\"çĶµåŃĲäº§åĵģ\":114760,\"è¡°éĢĢ\":114761,\"çķĻåŃĺ\":114762,\"çģ«åĬĽ\":114763,\"çĴ§\":114764,\"çļĤ\":114765,\"åħ¼åħ·\":114766,\"éĩįè¿Ķ\":114767,\"é¢Ĩçķ¥\":114768,\"åĪĩéĻ¤\":114769,\"åĨįçĶŁèĥ½æºĲ\":114770,\"å®ŀåľ¨å¤ª\":114771,\"çĲĨè®ºä¸Ĭ\":114772,\"ä¸īå±Ĥ\":114773,\"ä¸ĸçķĮåĲĦåĽ½\":114774,\"å®ľæĺĮ\":114775,\"èĢ³è¾¹\":114776,\"å®½æķŀ\":114777,\"æ±īæĹı\":114778,\"çĻ½çĻ½\":114779,\"è¿ĻéĩĮéĿ¢\":114780,\"çĶŁæ´»ä¹łæĥ¯\":114781,\"èµŀèµı\":114782,\"çĶ·å£«\":114783,\"ä¸Ńä¿Ħ\":114784,\"è½¦ç¥¸\":114785,\"åīĤéĩı\":114786,\"éĻ¤åİ»\":114787,\"å·¦è¾¹\":114788,\"çŃĳçī¢\":114789,\"çīĽå¸Ĥ\":114790,\"å®¶åĬ¡\":114791,\"åķĥ\":114792,\"ç½®æį¢\":114793,\"ç´«å¤ĸ\":114794,\"ç´«å¤ĸçº¿\":114795,\"å¾Ģåīį\":114796,\"åĬĽåŃ¦\":114797,\"ç´§è·Ł\":114798,\"çĽ®çļĦåľ¨äºİ\":114799,\"ç»®\":114800,\"ç¥Ĥ\":114801,\"å®£è¨Ģ\":114802,\"äºĮæ°§åĮĸ\":114803,\"äºĮæ°§åĮĸç¢³\":114804,\"æĹłç¼ĺ\":114805,\"ç²¾éĢļ\":114806,\"è¨º\":114807,\"å¼ķåıĳäºĨ\":114808,\"æľĢåħĪ\":114809,\"æ´¾é©»\":114810,\"ä¸įå¿į\":114811,\"æĪĳçĪ¸\":114812,\"å¹´ä¸ĭåįĬå¹´\":114813,\"æ·ĭå·´\":114814,\"æ²¡éĹ®é¢ĺ\":114815,\"åºĹåĨħ\":114816,\"è·ŁæĪĳè¯´\":114817,\"çĶŁäº§çĶŁæ´»\":114818,\"è§ĤæľĽ\":114819,\"æ¸į\":114820,\"è¢«æī§è¡Į\":114821,\"è¢«æī§è¡Įäºº\":114822,\"èĪľ\":114823,\"æİº\":114824,\"ä¸Ģç§Ĵ\":114825,\"èįīåĿª\":114826,\"åĳ¼åĴĮ\":114827,\"åĳ¼åĴĮæµ©\":114828,\"åĳ¼åĴĮæµ©çī¹\":114829,\"äººæ°ĳéĵ¶è¡Į\":114830,\"çĦķåıĳ\":114831,\"è¯ģåĪ¸äº¤æĺĵ\":114832,\"çķĶ\":114833,\"æľºèĥ½\":114834,\"å¦¾\":114835,\"æĻļå¹´\":114836,\"å·¥åķĨèģĶ\":114837,\"åİŁåŀĭ\":114838,\"è§Ĵåº¦çľĭ\":114839,\"æĬ¥ç¤¾\":114840,\"è¯įæĿ¡\":114841,\"èº²éģ¿\":114842,\"éĩįåĲ¯\":114843,\"å¤ķéĺ³\":114844,\"èĤ¡æĿĥè½¬è®©\":114845,\"åľ¨ä¸Ģ\":114846,\"åľ¨ä¸ĢæĹģ\":114847,\"ç¤¾ä¼ļåĮĸ\":114848,\"åıĳå±ķåİĨç¨ĭ\":114849,\"æĭĸæ¬ł\":114850,\"ä½¿èĢħ\":114851,\"ä¸İåĲ¦\":114852,\"æĸ°å±ĢéĿ¢\":114853,\"ä»Ĭå¤©æĪĳä»¬\":114854,\"é½Ĳèģļ\":114855,\"å¯¹æĪĳè¯´\":114856,\"éĢĴäº¤\":114857,\"æľªæĽ¾\":114858,\"èİĬ\":114859,\"éĸī\":114860,\"äº²æīĭ\":114861,\"è§ĴéĢĲ\":114862,\"æľīé»ŀ\":114863,\"ç¨İçİĩ\":114864,\"ä½İå£°\":114865,\"é»ĺå¥ĳ\":114866,\"æĻ®æ³ķ\":114867,\"å¤§ä¸ĵ\":114868,\"ç¬¬äºĮå¤§\":114869,\"ä½ıåĿĢ\":114870,\"æĶ¾è¿Ľ\":114871,\"äºĮæĪĺ\":114872,\"äº²èº«\":114873,\"åĽºåĮĸ\":114874,\"ä¸ĭä¹¡\":114875,\"åħ³éĶ®æĬĢæľ¯\":114876,\"åĽŀæĥ³\":114877,\"æĬ¥åĪĬ\":114878,\"æ¶ĤæĬ¹\":114879,\"èĹıçĿĢ\":114880,\"ç¥ĿæĦ¿\":114881,\"åįĩæ¸©\":114882,\"çĶļèĩ³è¿ŀ\":114883,\"åħ¬åħĥåīį\":114884,\"ç¾İæĸ¹\":114885,\"è¯ļå®ŀ\":114886,\"æĹłåģ¿\":114887,\"åīµæ¥Ń\":114888,\"å°ıå¿ĥç¿¼\":114889,\"å°ıå¿ĥç¿¼ç¿¼\":114890,\"ä¸¤æīĭ\":114891,\"æ¸©é¦¨æıĲç¤º\":114892,\"ä»¿çľŁ\":114893,\"æĥ¶\":114894,\"èĥ¡åŃĲ\":114895,\"å·¥ä½ľç«Ļ\":114896,\"ç¡¬çĽĺ\":114897,\"ç«¿\":114898,\"åĤ³éĢģ\":114899,\"åħ¨æł¡\":114900,\"é²ľæ´»\":114901,\"çĴĢçĴ¨\":114902,\"ç»ĵå°¾\":114903,\"æį¢æĿ¥\":114904,\"æĪĢ\":114905,\"ä½İä½į\":114906,\"ä¸ĩåħĥä»¥ä¸Ĭ\":114907,\"åĬłåĪĨ\":114908,\"æİ¨ä»ĭä¼ļ\":114909,\"çĲĨèµĶ\":114910,\"å¾·å°Ķ\":114911,\"æĬĹè®®\":114912,\"æ´¼\":114913,\"åĸ§\":114914,\"åŁİéĻħ\":114915,\"å¾Īæ£Ĵ\":114916,\"äººæŃ»äº¡\":114917,\"ä¼ļå±ķä¸Ńå¿ĥ\":114918,\"äºĴèģĶäºĴéĢļ\":114919,\"èĸĦèĨľ\":114920,\"éĩįé»ŀ\":114921,\"ç¦ģæ¯Ĵ\":114922,\"åĨ·ç¬ĳ\":114923,\"å¤§å®¶åı¯ä»¥\":114924,\"é¦ĸçĽ¸\":114925,\"è¿ĳè·Ŀç¦»\":114926,\"æµ®çİ°\":114927,\"ç§ĺè¯Ģ\":114928,\"èµ·é£ŀ\":114929,\"æĲ¶\":114930,\"çľŁåģĩ\":114931,\"æģķ\":114932,\"å°ıåºĹ\":114933,\"æ°ĳçľ¾\":114934,\"åıĳå¸ĥåħ¬åĳĬ\":114935,\"ä¾§éĩį\":114936,\"å¾ĺå¾Ĭ\":114937,\"æĢĶ\":114938,\"æªĲ\":114939,\"æķ°çĽ®\":114940,\"åī¯ç§ĺä¹¦éķ¿\":114941,\"ä¸¤åı¥\":114942,\"éļĲçŀĴ\":114943,\"åıĮåıĮ\":114944,\"æīĭæĦŁ\":114945,\"èĳ¡äº¬\":114946,\"éģĹå¿ĺ\":114947,\"é¬¥\":114948,\"è¿Ļä¸ªåľ°æĸ¹\":114949,\"è¯´çļĦè¯Ŀ\":114950,\"å·¡åĽŀ\":114951,\"è¿Ŀç«ł\":114952,\"æī¾å·¥ä½ľ\":114953,\"æĶ¯çĲĥéĺŁ\":114954,\"è£¡éĿ¢\":114955,\"æĺ¾ç¤ºåĩº\":114956,\"èĩ³å°Ĭ\":114957,\"ä¸¤çº§\":114958,\"åīįæ®µæĹ¶éĹ´\":114959,\"çĺ¦èº«\":114960,\"èĤ¢ä½ĵ\":114961,\"æ¯įè¦ª\":114962,\"æīĭç»Ńè´¹\":114963,\"æ±½è½¦è¡Įä¸ļ\":114964,\"æİ©çĽĸ\":114965,\"æİ§èĤ¡éĽĨåĽ¢\":114966,\"åı£å¾Ħ\":114967,\"æĶ¿çŃĸæİªæĸ½\":114968,\"æµ·ç»µ\":114969,\"åħ¨éķĩ\":114970,\"äºĭåħ³\":114971,\"å¸Ńæī§è¡Į\":114972,\"å¸Ńæī§è¡Įå®ĺ\":114973,\"éĤ£æ¬¡\":114974,\"åı¯èĥ½åĩºçİ°\":114975,\"ä¸Ńå¿ĥåŁİå¸Ĥ\":114976,\"ç¿»èº«\":114977,\"ä¹Łç®Ĺ\":114978,\"ä¾µçķ¥\":114979,\"åĸĩåıŃ\":114980,\"æ¯ıæ¬¡éĥ½\":114981,\"è§ħ\":114982,\"éĻ¢éĻ¢éķ¿\":114983,\"å§ĭäºİ\":114984,\"èŃ¦åĬ¡\":114985,\"èį¯æĿĲ\":114986,\"å±łæĿĢ\":114987,\"æľ¬èº«å°±\":114988,\"éļıæĹ¶éļı\":114989,\"éļıæĹ¶éļıåľ°\":114990,\"åĶ®åįĸ\":114991,\"æĹłäººé©¾é©¶\":114992,\"é¢ħ\":114993,\"åĵģè³ª\":114994,\"åĺ²ç¬ĳ\":114995,\"è·ĳåİ»\":114996,\"åħĭéĩĮæĸ¯\":114997,\"çķ¸å½¢\":114998,\"ä¿®é¥°\":114999,\"çŁ©éĺµ\":115000,\"éŁ³ä¹Ĳä¼ļ\":115001,\"æŁ³å·ŀ\":115002,\"é½¡\":115003,\"ä¼ļè°Ī\":115004,\"æŃ£çīĪ\":115005,\"ä¹ŁåĲĮæł·\":115006,\"æļ§æĺ§\":115007,\"è¡ĮæĶ¿éĥ¨éĹ¨\":115008,\"ä¹ĸä¹ĸ\":115009,\"èĤ¤èī²\":115010,\"æĹ¶ä»»\":115011,\"çľŁåĪĩ\":115012,\"æľĪä¸ĭ\":115013,\"æľĪä¸ĭæĹ¬\":115014,\"ä¸ľæĸ¹è´¢å¯Į\":115015,\"è£ħä¿®åħ¬åı¸\":115016,\"éĢĢè¿ĺ\":115017,\"åĭĺå¯Ł\":115018,\"åĵ¥ä¼¦\":115019,\"åĵ¥ä¼¦æ¯Ķäºļ\":115020,\"çĭ¬ä¸Ģ\":115021,\"çĭ¬ä¸ĢæĹł\":115022,\"çĭ¬ä¸ĢæĹłäºĮ\":115023,\"è°ĥåĳ³\":115024,\"åİĭè¿«\":115025,\"åħ¨çĲĥæľĢå¤§\":115026,\"åī¯æł¡éķ¿\":115027,\"æĽ´ä½İ\":115028,\"åĪĨéĴŁåĲİ\":115029,\"åĽŀä¾Ĩ\":115030,\"åĪ¶åīĤ\":115031,\"åĳĬè¯īå¤§å®¶\":115032,\"çĤ¹éĴŁ\":115033,\"åįģä¸īå±Ĭ\":115034,\"åĳ¨åĽĽ\":115035,\"è¿Ļæł·ä¸Ģ\":115036,\"è¿Ļæł·ä¸ĢæĿ¥\":115037,\"èĭŁ\":115038,\"æľĽåİ»\":115039,\"æĪĲè¯Ń\":115040,\"å½ĵåį³\":115041,\"ç¬ĳå£°\":115042,\"ä¹ĭåĬ¿\":115043,\"åĪĳäºĭæ¡Īä»¶\":115044,\"æĮĤçĿĢ\":115045,\"ä½ķç§į\":115046,\"å°ıæ¸¸æĪı\":115047,\"åĽ½å®¶æĪĺçķ¥\":115048,\"åĨ·åĨ·\":115049,\"å®ľå®¾\":115050,\"æĲºç¨ĭ\":115051,\"è¶ĭäºİ\":115052,\"åıįçľģ\":115053,\"å¸¸è¯´\":115054,\"ä¸ĩæĪ·\":115055,\"åĥµå°¸\":115056,\"åįĥä¸ĩåĪ«\":115057,\"åıĳçİ°éĹ®é¢ĺ\":115058,\"åı¯çŁ¥\":115059,\"éĹ¨æĪ·ç½ĳç«Ļ\":115060,\"åģ¥åº·äº§ä¸ļ\":115061,\"åı³è¾¹\":115062,\"æµ·è¿Ĳ\":115063,\"è¿ĳä¹İ\":115064,\"åĮ»æ²»\":115065,\"æĢ»ç®Ĺ\":115066,\"ä¸ĢåĪĨéĴŁ\":115067,\"æĭ§\":115068,\"ä¹Łæľīä¸ĢäºĽ\":115069,\"ä¾ĽçĶµåħ¬åı¸\":115070,\"å»īä»·\":115071,\"å¸®ä»ĸ\":115072,\"æŃ¤æ¬¡æ´»åĬ¨\":115073,\"åıªèĥ½è¯´\":115074,\"èĬĭ\":115075,\"çīĩæ®µ\":115076,\"åŃĺåľ¨éĹ®é¢ĺ\":115077,\"ä½łä¼ļåıĳçİ°\":115078,\"è½®å»ĵ\":115079,\"ç½ĳéĢļ\":115080,\"æ»¨æ±Ł\":115081,\"æİĪä¿¡\":115082,\"é»İæĺİ\":115083,\"ä¸įå±ŀäºİ\":115084,\"çº¦åįł\":115085,\"éķ¿æ²Ļå¸Ĥ\":115086,\"èĥļèĥİ\":115087,\"åħĥä»¶\":115088,\"éĻĨåĨĽ\":115089,\"è³¼è²·\":115090,\"æĮĩæľĽ\":115091,\"å®ŀä¹łçĶŁ\":115092,\"çī¹çĤ¹æĺ¯\":115093,\"çıłæ±Ł\":115094,\"çľĭä¸įåĩº\":115095,\"ä¸įè§ģäºĨ\":115096,\"ç¼ī\":115097,\"éĺµèĲ¥\":115098,\"åĶĲæľĿ\":115099,\"æ²¡å¿ħè¦ģ\":115100,\"åĽ½åľŁèµĦæºĲ\":115101,\"ç»ıæµİåŃ¦å®¶\":115102,\"åĲĪèĤ¥å¸Ĥ\":115103,\"çĲ¢ç£¨\":115104,\"ç¡®åĪĩ\":115105,\"åŁİå¸Ĥåıĳå±ķ\":115106,\"çŃ·åŃĲ\":115107,\"äººæ°ĳæľįåĬ¡\":115108,\"æ»¡åĪĨ\":115109,\"è¿·ä¿¡\":115110,\"ä½ľèĢħæľ¬äºº\":115111,\"æĸĩç«łæĿ¥æºĲ\":115112,\"ç«Ļç«ĭ\":115113,\"æŀĦæĪĲäºĨ\":115114,\"è¾Ľåĭ¤\":115115,\"è¶ħå¼º\":115116,\"éĶļ\":115117,\"åīįä¸īåŃ£åº¦\":115118,\"å°±è§īå¾Ĺ\":115119,\"å´ĩé«ĺ\":115120,\"è¶Ĭä¾Ĩ\":115121,\"è¶Ĭä¾Ĩè¶Ĭ\":115122,\"å¸ĤåľºèĲ¥éĶĢ\":115123,\"ç»¼åĲĪç´łè´¨\":115124,\"åŃļ\":115125,\"ä¾®è¾±\":115126,\"äºĮåŃĹ\":115127,\"å·¥ä½ľä»»åĬ¡\":115128,\"åı²ä¸ĬæľĢ\":115129,\"æľĢä¼ĺ\":115130,\"åĲ©åĴĲ\":115131,\"è¡¨çĻ½\":115132,\"èİ«åĲį\":115133,\"èİ«åĲįåħ¶\":115134,\"èİ«åĲįåħ¶å¦Ļ\":115135,\"å¹£\":115136,\"åĲĮå¿Ĺä»¬\":115137,\"å»ºè®¾çĶ¨åľ°\":115138,\"åĦĢ\":115139,\"éħįåģ¶\":115140,\"å¼©\":115141,\"åĶ±çīĩ\":115142,\"æīĭèĦļ\":115143,\"åħ¼ä»»\":115144,\"åģľæĶ¾\":115145,\"æŃ£å®Ĺ\":115146,\"æĸ°åĨľæĿĳ\":115147,\"åĤ¬çĶŁ\":115148,\"æīĢåŃ¦æł¡\":115149,\"å¿µä½Ľ\":115150,\"åĶ¤éĨĴ\":115151,\"åħ±åĪĽ\":115152,\"æĭīä¸ģ\":115153,\"èĥĮçĿĢ\":115154,\"çĶŁæĢģä¿ĿæĬ¤\":115155,\"åı£å¤´\":115156,\"æĸ¹åĲĳçĽĺ\":115157,\"èª¿æķ´\":115158,\"æĭĽèģĺä¿¡æģ¯\":115159,\"åħ¶ä»ĸåĽ½å®¶\":115160,\"ç®Ģæĺĵ\":115161,\"åĮ¿åĲį\":115162,\"è¯Ħæµĭ\":115163,\"æĺ¯ä¸Ģåº§\":115164,\"çīµæīĭ\":115165,\"è¶³è¿¹\":115166,\"çĲĨè§£åĴĮ\":115167,\"æľĢåıĹ\":115168,\"å¿ĥè·³\":115169,\"çĪ¶è¦ª\":115170,\"éĿŀå¸¸åĸľæ¬¢\":115171,\"èĭ¦éļ¾\":115172,\"æĬĢå¸Ī\":115173,\"æ°ĳæĦı\":115174,\"æĪĺåĽ½\":115175,\"æĽ¿è¡¥\":115176,\"æ´¥è´´\":115177,\"ä¸ŃåĽ½ä¼łç»Ł\":115178,\"åĲĦè¡Į\":115179,\"åĲĦè¡ĮåĲĦ\":115180,\"åĲĦè¡ĮåĲĦä¸ļ\":115181,\"ç¬¬äºĶå±Ĭ\":115182,\"èį·èĬ±\":115183,\"æĦıèŃĺ\":115184,\"ç¥¨ä»·\":115185,\"åĪĨæµģ\":115186,\"æĿİçĻ½\":115187,\"æ±ŁåĮĹ\":115188,\"æİĴæĸ¥\":115189,\"ä½ĵéĩı\":115190,\"åĮħåĲ«äºĨ\":115191,\"åĪĺæŁĲ\":115192,\"çİ°å¦Ĥä»Ĭ\":115193,\"å·¥èīºåĵģ\":115194,\"è¿Ļç§įæĸ¹æ³ķ\":115195,\"åĬŀåħ¬æ¥¼\":115196,\"çĶµå·¥\":115197,\"çħĻ\":115198,\"åį¡çīĩ\":115199,\"å¹´å¹´åºķ\":115200,\"ä¸ĵé¡¹èµĦéĩĳ\":115201,\"åĮ»ç§ĳ\":115202,\"åĮ»ç§ĳå¤§åŃ¦\":115203,\"åĽŀå¤´çľĭ\":115204,\"ä¸įå±ĳ\":115205,\"èĩªé©¾\":115206,\"æ²¡æĶ¶\":115207,\"æīĵçĮİ\":115208,\"èĦ¸éĥ¨\":115209,\"åıĥèĢĥ\":115210,\"å°Ĩå£«\":115211,\"è´«åĽ°äººåı£\":115212,\"çĲĨæĥ³ä¿¡å¿µ\":115213,\"é£İå°ļ\":115214,\"äººæīįéĺŁä¼į\":115215,\"çĳ¾\":115216,\"æĿ¥è¿ĻéĩĮ\":115217,\"æ´Ĺæ¶¤\":115218,\"å¹´èĸª\":115219,\"èĭįçĻ½\":115220,\"ä¸ĩäºĭ\":115221,\"è¯¾æľ¬\":115222,\"åºĵéĩĮ\":115223,\"çī¹æ´¾\":115224,\"çī¹æ´¾åĳĺ\":115225,\"èµŀç¾İ\":115226,\"ç©¿æĪ´\":115227,\"è£½ä½ľ\":115228,\"èµŀæĪĲ\":115229,\"ä¸Ģä¾§\":115230,\"å½ĵåľ°äºº\":115231,\"æĭİ\":115232,\"çº¸è´¨\":115233,\"ä½Ļä¸ª\":115234,\"éĶĤçĶµæ±ł\":115235,\"æľºåŀĭ\":115236,\"éĻ¢éĻ¢å£«\":115237,\"åģļå·¥\":115238,\"å¼łè´´\":115239,\"ç¥Ľæĸĳ\":115240,\"æ®ĸæ°ĳ\":115241,\"å¥ĳçº¦\":115242,\"æ¹ĺæ½Ń\":115243,\"æĲĸ\":115244,\"åŃĺè´§\":115245,\"äº¤éĢļå¤§åŃ¦\":115246,\"è¶ģçĿĢ\":115247,\"æĸĩçī©ä¿ĿæĬ¤\":115248,\"å¤ĩæĪĺ\":115249,\"éĩĩçº³\":115250,\"åįĬæľĪ\":115251,\"æľĢåħ³éĶ®\":115252,\"æľĢåħ³éĶ®çļĦ\":115253,\"æİ¥éĢģ\":115254,\"æĶ¶åī²\":115255,\"åıįåĢĴ\":115256,\"çĥĽ\":115257,\"æ½Ķ\":115258,\"ä¼Łå¤§å¤įåħ´\":115259,\"çļĦè¯Ŀè¯Ń\":115260,\"å®¹å¿į\":115261,\"å®ļéĩı\":115262,\"æķĹ\":115263,\"åĵģçīĮå½¢è±¡\":115264,\"æīŃè½¬\":115265,\"åĽ½å®¶éĩįçĤ¹\":115266,\"èĨĿçĽĸ\":115267,\"ä¸Ģæ¥¼\":115268,\"å¤§éĻ¸\":115269,\"éĤªæģ¶\":115270,\"åĽŀåĳ³\":115271,\"çĮ¿\":115272,\"çĿ¡åīį\":115273,\"æĹłè¾ľ\":115274,\"çĹħæ¯ĴæĦŁæŁĵ\":115275,\"æľºæ¢°åĮĸ\":115276,\"çĤ¹äº®\":115277,\"æº¶è§£\":115278,\"åĩłä¹İæīĢæľī\":115279,\"è·ĳéģĵ\":115280,\"çĶµè§Ĩæľº\":115281,\"åı¨\":115282,\"æĳĩäºĨ\":115283,\"æĳĩäºĨæĳĩå¤´\":115284,\"èĩªè´Ł\":115285,\"ç»¼åĲĪåĪ©çĶ¨\":115286,\"èĩªå¦Ĥ\":115287,\"åİŁä¾Ĩ\":115288,\"ä¹Łä¸įæĥ³\":115289,\"èĬĤè¯¾\":115290,\"è¿ĩåī©\":115291,\"çĶ²çĬ¶\":115292,\"çĶ²çĬ¶èħº\":115293,\"æĸ°ä¸ĸçºª\":115294,\"èĩªä¸»åĵģçīĮ\":115295,\"é«ĺå±Ĥæ¬¡\":115296,\"ä¸Ģè§Ĵ\":115297,\"è¡Įäºĭ\":115298,\"ç¥ĸåħĪ\":115299,\"å©ļåĲİ\":115300,\"éĹ´éļĻ\":115301,\"ç¼ĿéļĻ\":115302,\"è¿ĻæĶ¯\":115303,\"ä¸įæĸŃåĪĽæĸ°\":115304,\"å¾®åŀĭ\":115305,\"æĽĻåħī\":115306,\"äº«çĶ¨\":115307,\"ä¸ŃåĽ½ç§»åĬ¨\":115308,\"éĹŃçİ¯\":115309,\"æī§æĦı\":115310,\"åıĳå±ķæł¼å±Ģ\":115311,\"æł¸å¿ĥåĮº\":115312,\"éªļæī°\":115313,\"åħļåĴĮåĽ½å®¶\":115314,\"ä¸ŃåĽ½æĶ¿åºľ\":115315,\"å¸¶èĳĹ\":115316,\"ä¸ĩåįĥçĵ¦\":115317,\"åħ©äºº\":115318,\"äºİæĺ¯æĪĳ\":115319,\"åĽºä½ĵ\":115320,\"çªģå¦Ĥ\":115321,\"çªģå¦Ĥåħ¶\":115322,\"çªģå¦Ĥåħ¶æĿ¥\":115323,\"éĩĮç¨ĭç¢ĳ\":115324,\"çĪ±ç¾İ\":115325,\"æŁ¥éªĮ\":115326,\"åıĮèµ¢\":115327,\"éĹªåħī\":115328,\"æ¥¼å®ĩ\":115329,\"æĻı\":115330,\"æľīè¶³å¤ŁçļĦ\":115331,\"æŁĶæĢ§\":115332,\"ä¿¡æģ¯å®īåħ¨\":115333,\"ç®¡çº¿\":115334,\"å¹¶ä¸įä¼ļ\":115335,\"åĻ¨ä»¶\":115336,\"ä½łåºĶè¯¥\":115337,\"çĿĢå®ŀ\":115338,\"æĺİæ¸ħ\":115339,\"æĬĹçĶŁç´ł\":115340,\"æīĵæŃ»\":115341,\"å®Įåħ¨ä¸įåĲĮ\":115342,\"èĬ±æ¤Ĵ\":115343,\"æĶ¾å®½\":115344,\"ä½İç«¯\":115345,\"åĽĽèĤ¢\":115346,\"åĮĹäº¬èµĽè½¦\":115347,\"éĽĨå¸Ĥ\":115348,\"æľªå©ļ\":115349,\"å¤§å¹ħæıĲåįĩ\":115350,\"å»ºçŃĳè®¾è®¡\":115351,\"çĭ¬æľīçļĦ\":115352,\"æİ¢éĻ©\":115353,\"æ²³æµģåŁŁ\":115354,\"æħķå®¹\":115355,\"è¢«çĽĹ\":115356,\"åĵºä¹³\":115357,\"èıģ\":115358,\"æĥ¬æĦı\":115359,\"è¶ĬæĿ¥è¶Ĭå¥½\":115360,\"å¹¿å¤§ç¾¤ä¼Ĺ\":115361,\"å¾·èĤ²\":115362,\"å¸Ĥåľºä»·æł¼\":115363,\"å¥¥å·´\":115364,\"å¥¥å·´é©¬\":115365,\"èĬĤçĽ®ä¸Ń\":115366,\"ä¸¤æ¬¾\":115367,\"ä¸ĩä½Ļåħĥ\":115368,\"ç»´å°Ķ\":115369,\"çĶŁçī©ç§ĳæĬĢ\":115370,\"åĲ¬èµ·æĿ¥\":115371,\"çłļ\":115372,\"æĭŁå®ļ\":115373,\"æ²¹çĶ°\":115374,\"å£°èªī\":115375,\"å»ºçŃĳä¸ļ\":115376,\"éĻĲè´Ń\":115377,\"çīĩåŃĲ\":115378,\"çķľç¦½\":115379,\"ç½ĳé¦ĸé¡µ\":115380,\"ä¼ĹçŃ¹\":115381,\"æĴŀåĩ»\":115382,\"åīįä¸įä¹ħ\":115383,\"åīįä¸ĸ\":115384,\"åĽĽä¸ªæĦıè¯Ĩ\":115385,\"æµĭç»ĺ\":115386,\"éĺ²ç©º\":115387,\"æ¼«éķ¿çļĦ\":115388,\"æ²Ĳæµ´\":115389,\"æ¯Ķè¾ĥç®Ģåįķ\":115390,\"æµĭå®ļ\":115391,\"åĽŀè°ĥ\":115392,\"è®©äººä»¬\":115393,\"èĴĭä»ĭ\":115394,\"èĴĭä»ĭçŁ³\":115395,\"ç»ĵæĻ¶\":115396,\"å¢ŀæ·»äºĨ\":115397,\"æĿ¡è¯Ħè®º\":115398,\"åī¯ä¼ļéķ¿\":115399,\"ä½ıæīĢ\":115400,\"ç»ĻåĩºäºĨ\":115401,\"è°ĥéħį\":115402,\"æ²ĸ\":115403,\"æľīçĶ¨\":115404,\"æľīçĶ¨çļĦ\":115405,\"ä¸ĢæĿ¡é¾Ļ\":115406,\"éĩİå¤ĸ\":115407,\"ç¼ĺåĪĨ\":115408,\"æ°¸è¿ľä¸įä¼ļ\":115409,\"æŀľæłĳ\":115410,\"å¤§åıĳå¿«ä¸ī\":115411,\"éº»éĨī\":115412,\"äºĳéĽĨ\":115413,\"åİ»åĵªéĩĮ\":115414,\"åħ¥å¸Ĥ\":115415,\"ä»»æĢ§\":115416,\"å»ºæ¡£\":115417,\"å»ºæ¡£ç«ĭ\":115418,\"å»ºæ¡£ç«ĭåį¡\":115419,\"ä¸Ģæ£µ\":115420,\"ç¤¾åįĢ\":115421,\"çĽ¸ä¼´\":115422,\"åļ·\":115423,\"å¡«åħħ\":115424,\"ä¸ĢæĹı\":115425,\"ç¾ģ\":115426,\"åıĸè¯ģ\":115427,\"èĪ°éĺŁ\":115428,\"åİĤåĮº\":115429,\"è¡·å¿ĥ\":115430,\"åıĳå±ķéĺ¶æ®µ\":115431,\"é«ĺå¼ºåº¦\":115432,\"åĹĵåŃĲ\":115433,\"é¢Ĩè¡Ķ\":115434,\"æ¥¼ä¸»\":115435,\"å¤§èĴľ\":115436,\"æŀķå¤´\":115437,\"ç²®æ²¹\":115438,\"é»Ħçĵľ\":115439,\"æĵĴ\":115440,\"å°ıçĭĹ\":115441,\"æĶ¹éĿ©å§Ķ\":115442,\"åįģåĪĨéĴŁ\":115443,\"é²ľèī³\":115444,\"åħ³ç¾½\":115445,\"çĭĢæħĭ\":115446,\"å®ŀçĶ¨æĢ§\":115447,\"å°ĳè§ģ\":115448,\"é£ŀæī¬\":115449,\"çĶ°éĩİ\":115450,\"æĲĤ\":115451,\"è¿Ļä¸ªè¯į\":115452,\"åºĶæĢ¥é¢Ħæ¡Ī\":115453,\"è§Ĵåº¦æĿ¥çľĭ\":115454,\"æķ¬çķı\":115455,\"æ³ķå®Ŀ\":115456,\"åĸĦæĦı\":115457,\"æīĵæĸŃ\":115458,\"å¯¹åĨ³\":115459,\"çµķå°į\":115460,\"åĢŁæŃ¤\":115461,\"å¼ĢæºĲ\":115462,\"å°ıèªª\":115463,\"ç¥º\":115464,\"å²ģä»¥ä¸ĭ\":115465,\"éĢĢå½¹åĨĽäºº\":115466,\"ä¸įä¹ħåīį\":115467,\"åĩºåİĤ\":115468,\"è®½åĪº\":115469,\"æĿ¥çľĭçľĭåĲ§\":115470,\"éŃĶåħ½\":115471,\"çķĻä¸ĭæĿ¥\":115472,\"å±ħå®¤\":115473,\"åłħæĮģ\":115474,\"çľĭäºĨä¸Ģ\":115475,\"çľĭäºĨä¸Ģçľ¼\":115476,\"éĽĨåĽ¢æĹĹä¸ĭ\":115477,\"æĪĺæĪĺç»ĦåĲĪ\":115478,\"è®¤çľŁèĲ½å®ŀ\":115479,\"æ±½è½¦äº§ä¸ļ\":115480,\"çī©çĲĨåŃ¦\":115481,\"æķµ\":115482,\"éĴĿ\":115483,\"åĽ¢éķ¿\":115484,\"ä¸įæĸŃæī©å¤§\":115485,\"èĤ©è´Ł\":115486,\"åıĳå±ķçĽ®æłĩ\":115487,\"è³ĩéĩĳ\":115488,\"åīįç½®\":115489,\"ä¸ŃåĽ½åı¤ä»£\":115490,\"æŃ»åĪĳ\":115491,\"åħħåĪĨä½ĵçİ°\":115492,\"åħ³éĹ¨\":115493,\"ç¾İæĦŁ\":115494,\"æīĵåħ¥\":115495,\"æĬĳéĥģçĹĩ\":115496,\"å°ĳçĪ·\":115497,\"æłĳæŀĿ\":115498,\"æ¶Īæģ¯ç§°\":115499,\"æ´Ľåħĭ\":115500,\"åį¯\":115501,\"è¿ĪåĲĳ\":115502,\"æİ¨åĭķ\":115503,\"ä»İä¸ļèĢħ\":115504,\"åİ»ä¹°\":115505,\"æ¬¢å¿«\":115506,\"æĭ¥æĮ¤\":115507,\"é©¬æ¡¶\":115508,\"æĬĬæİ§\":115509,\"æĶ¿åħļ\":115510,\"å¼łæī¬\":115511,\"å®¢æłĪ\":115512,\"çº¢æĺŁ\":115513,\"éĢģæĿ¥\":115514,\"åħ¨åŁŁæĹħæ¸¸\":115515,\"èĩªç§ģ\":115516,\"åįģäºĮæĿ¡\":115517,\"åı¹æģ¯\":115518,\"ä¸Ģèīĺ\":115519,\"ä¿Ŀè´¹\":115520,\"æĸ½å·¥çİ°åľº\":115521,\"æľīå¹¸\":115522,\"ç»ŃèĪª\":115523,\"åı¯èĥ½æľĥ\":115524,\"èĥĮåıĽ\":115525,\"ä½£éĩĳ\":115526,\"ä¸īçŃīå¥ĸ\":115527,\"å¾Īæ»¡æĦı\":115528,\"æ¸¸æĪıåī¯æľ¬\":115529,\"ç¾¤éĩĮ\":115530,\"æŀĦä»¶\":115531,\"åºıå¹ķ\":115532,\"å¤ªæ¹ĸ\":115533,\"æľ¨è´¨\":115534,\"æĻĭæ±Ł\":115535,\"çµĤæĸ¼\":115536,\"è·³è·ĥ\":115537,\"åĢºæĿĥäºº\":115538,\"çŃīè¯¸å¤ļ\":115539,\"æĶ¾åĩº\":115540,\"åħ³éĶ®æĹ¶åĪ»\":115541,\"æĦŁæŁĵèĢħ\":115542,\"é£ŀè¡Įåĳĺ\":115543,\"èĥĨåĽº\":115544,\"èĥĨåĽºéĨĩ\":115545,\"æĬ±æŃī\":115546,\"åĳ¨äºĮ\":115547,\"æĸ°æĹ¶æľŁ\":115548,\"åĨ·éĵ¾çī©æµģ\":115549,\"è¿Ļç§įæĸ¹å¼ı\":115550,\"è¯¥æĿĳ\":115551,\"åĽŀé¦Ī\":115552,\"åŁºçĿ£æķĻ\":115553,\"äººåıĤ\":115554,\"æŀ¯çĩ¥\":115555,\"æī¹åıĳå¸Ĥåľº\":115556,\"åħħåĪĨèĤ¯å®ļ\":115557,\"å¸ĤæĶ¿åįı\":115558,\"äºĭæ¥Ń\":115559,\"éľ¸çİĭ\":115560,\"çĥŃæĲľ\":115561,\"åįģä¹Ŀå¤§\":115562,\"ä¼´æľī\":115563,\"ç¾İåĽ½æĢ»ç»Ł\":115564,\"åŁİå¸Ĥç®¡çĲĨ\":115565,\"ä¸ĭä»¤\":115566,\"èĥ¸åı£\":115567,\"åıªçŁ¥éģĵ\":115568,\"åĳ¨ä¸ī\":115569,\"çĶ¨æĪ¶\":115570,\"éŃ¯\":115571,\"å¿ĥè¡Ģ\":115572,\"å¸¦å¤´äºº\":115573,\"åĮ»åĬ¡\":115574,\"åĮ»åĬ¡äººåĳĺ\":115575,\"æİ§åĪ¶åĻ¨\":115576,\"ä½ľåĵģåĨħå®¹\":115577,\"æĪĺåıĭ\":115578,\"åİĨå¹´\":115579,\"ä¸įåħĭ\":115580,\"ä¸įåħĭä¸įåıĬ\":115581,\"æĹ¥æŃ£å¼ı\":115582,\"è±Ĳå¯Į\":115583,\"ç¨İè´¹\":115584,\"æĹ¶æķĪ\":115585,\"å±ķä½į\":115586,\"è¡¡éĺ³\":115587,\"æĪ¿è²¸\":115588,\"çĪĨæ¬¾\":115589,\"ä¹ĲæĦı\":115590,\"çĶ·ä¸»\":115591,\"å¯¬\":115592,\"æľĥèŃ°\":115593,\"ä¹ĭå¤ľ\":115594,\"åĲĮæ¨£\":115595,\"ä¸įè¦ģå¤ª\":115596,\"ä¼Ĭæĸ¯\":115597,\"ä¼Ĭæĸ¯åħ°\":115598,\"åŁºæľ¬åİŁåĪĻ\":115599,\"åİ»æİī\":115600,\"ä½İä¿Ŀ\":115601,\"ä¸ªäº¤æĺĵ\":115602,\"ä¸ªäº¤æĺĵæĹ¥\":115603,\"èģĬèģĬ\":115604,\"åĽĽä½į\":115605,\"åħļç»ĦæĪĲåĳĺ\":115606,\"ä¸»è¦ģä»İäºĭ\":115607,\"å½±éŁ³\":115608,\"åĨĴåĩº\":115609,\"åĳ¼åĲ¸éģĵ\":115610,\"è¾¾å°Ķ\":115611,\"æľ¨åľ°æĿ¿\":115612,\"è¯¡å¼Ĥ\":115613,\"çģ¯åħ·\":115614,\"çģ«çĥ§\":115615,\"è§£èĦ±\":115616,\"æĦĪåıĳ\":115617,\"æ¹ĸå·ŀ\":115618,\"é£İä¿Ĺ\":115619,\"æĸ°å½¢åĬ¿\":115620,\"æĸ°å½¢åĬ¿ä¸ĭ\":115621,\"è²Ŀ\":115622,\"èĦĵ\":115623,\"åĬ¨åĬĽçĶµæ±ł\":115624,\"é£ŀèĪ¹\":115625,\"éŁ§æĢ§\":115626,\"åĪ©çī©\":115627,\"åĪ©çī©æµ¦\":115628,\"ä¸įè®¤è¯Ĩ\":115629,\"ç¼ĸç»ĩ\":115630,\"ä½ľåĿĬ\":115631,\"èģĮä¸ļæĬĢèĥ½\":115632,\"çľĭè¦ĭ\":115633,\"åĽ´æ£ĭ\":115634,\"æĺıè¿·\":115635,\"å½Ĵå±ŀäºİ\":115636,\"æĤ¬å´ĸ\":115637,\"éĨ«çĻĤ\":115638,\"å®ĭä»£\":115639,\"åºĦæĿĳ\":115640,\"èĹķ\":115641,\"çĮĽçĦ¶\":115642,\"çĩĥæĸĻçĶµæ±ł\":115643,\"å®ŀä½ĵåºĹ\":115644,\"ä¸įè¶³ä»¥\":115645,\"æĥħç·\":115646,\"æĥħç·Ĵ\":115647,\"å»ĬåĿĬ\":115648,\"çĶµåı°\":115649,\"åºĶåĬĽ\":115650,\"ä¸Ńå°ıåŃ¦çĶŁ\":115651,\"èĥ¡åĲĮ\":115652,\"éī´åĪ«\":115653,\"åĨħç½®\":115654,\"ä¹±è±¡\":115655,\"æ¬ĬçĽĬ\":115656,\"å¼ĢæĶ¾å¼ı\":115657,\"åįļæĸĩ\":115658,\"è®²è¯¾\":115659,\"çŃīåİŁåĽł\":115660,\"ç©·äºº\":115661,\"äº¤æĽ¿\":115662,\"æĬ¤çħ§\":115663,\"åıĳå±ķæľºéģĩ\":115664,\"å®¢åķĨ\":115665,\"åıįä¹ĭ\":115666,\"ç±³é¥Ń\":115667,\"å¹¶åıĳ\":115668,\"å¹¶åıĳçĹĩ\":115669,\"æ±īåŃĲ\":115670,\"æŀľåĽŃ\":115671,\"å¯¹æĪĳæĿ¥è¯´\":115672,\"åģıåĲĳ\":115673,\"æī¹ç¤º\":115674,\"è¯»åĲİ\":115675,\"è¯»åĲİæĦŁ\":115676,\"æĺİæĻº\":115677,\"åĽ´çĿĢ\":115678,\"åıįè½¬\":115679,\"æĿ¨å¹Ĥ\":115680,\"ä¸ĵåįĸ\":115681,\"ä¸ĵåįĸåºĹ\":115682,\"åıĹéĻĲ\":115683,\"åºŁè¯Ŀ\":115684,\"æŀģå°ĳ\":115685,\"åįĪåĲİ\":115686,\"è¿Ľä¿®\":115687,\"åīĬåĩı\":115688,\"æľ¬ç§ĳçĶŁ\":115689,\"ä¼ĺéĢī\":115690,\"åħīçħ§\":115691,\"åıĻäºĭ\":115692,\"åıĸæļĸ\":115693,\"åĮĹè·¯\":115694,\"æ¦ķ\":115695,\"èİĨçĶ°\":115696,\"æ¥¼å±Ĥ\":115697,\"å¤©èĬ±\":115698,\"å¤©èĬ±æĿ¿\":115699,\"çĤľ\":115700,\"å·²ç»ıæľīäºĨ\":115701,\"è¶¾\":115702,\"çĶ³åįļ\":115703,\"çĶµéĺ»\":115704,\"åĬŁè¯¾\":115705,\"æŃ¥æŃ¥\":115706,\"éĤ£ä¹Īå®¹æĺĵ\":115707,\"æŃ¤æĸĩ\":115708,\"ä½°\":115709,\"è®¡è¾ĥ\":115710,\"çīĩéĿ¢\":115711,\"çĶµå½±éĻ¢\":115712,\"ä¸įåħ¬å¹³\":115713,\"ä¸īæľŁ\":115714,\"æĹħæ¸¸èµĦæºĲ\":115715,\"å¤ļç§įå½¢å¼ı\":115716,\"è£Ĥç¼Ŀ\":115717,\"åĲİæİĴ\":115718,\"ç¡¬åº¦\":115719,\"åĽŀæļĸ\":115720,\"éģĵæķĻ\":115721,\"è´«è¡Ģ\":115722,\"æ¸ħé¦Ļ\":115723,\"ä¼¤çĹħ\":115724,\"æĦıç¾©\":115725,\"çļĦç¼ĺ\":115726,\"çļĦç¼ĺæķħ\":115727,\"åºĦä¸¥\":115728,\"åıªæĺ¯ä¸ºäºĨ\":115729,\"æīĵæĬĺ\":115730,\"ä»¥ä¾Ĩ\":115731,\"æ»¿è¶³\":115732,\"çİĽä¸½\":115733,\"é¢¨éļª\":115734,\"æĸĩç§ĳ\":115735,\"éħįå¤ĩäºĨ\":115736,\"è¿Ľé£Ł\":115737,\"æ¶¡\":115738,\"è·¯ç¨ĭ\":115739,\"åı«å£°\":115740,\"ä¸Ńå¿ĥåŁİåĮº\":115741,\"æľīæīĢä¸įåĲĮ\":115742,\"å¼µè²¼\":115743,\"é¢ĦæĬ¥\":115744,\"æľīå¤ļä¹Ī\":115745,\"è¿Ľè¡Įåħ¨éĿ¢\":115746,\"æĽ¾ç¶ĵ\":115747,\"ä¸īä»£\":115748,\"å®ıå¤§\":115749,\"æ¸ħæī«\":115750,\"éĢīåĩº\":115751,\"åĵªä¸Ģä¸ª\":115752,\"ä¸»ç¾©\":115753,\"ä¾Ŀæĵļ\":115754,\"çļ®éĿ©\":115755,\"èµ¶æĿ¥\":115756,\"çŃĽæŁ¥\":115757,\"æ¨Ł\":115758,\"ä¿ĿèįĲ\":115759,\"åĲĥæĥĬ\":115760,\"æľĭåıĭä»¬å¯¹\":115761,\"ä»ĸæĺ¯ä¸Ģä¸ª\":115762,\"åºŁæ°Ķ\":115763,\"æ»ħ\":115764,\"è´¢ç¨İ\":115765,\"æĿĳæĿĳæ°ĳ\":115766,\"èµĦäº§è´ŁåĢº\":115767,\"å®īå¨ľ\":115768,\"çĽ®åīįåĽ½åĨħ\":115769,\"æĦŁè§īèĩªå·±\":115770,\"çµĲåĲĪ\":115771,\"éĶ¦æłĩ\":115772,\"éĶ¦æłĩèµĽ\":115773,\"æĽ´æ·±\":115774,\"åŁºæķ°\":115775,\"éħ¿éħĴ\":115776,\"çī¹èī²äº§ä¸ļ\":115777,\"åİĭå®ŀ\":115778,\"ä¾Ŀæ³ķè¿½ç©¶\":115779,\"æ·¡å®ļ\":115780,\"ç®ĢçĽ´å°±æĺ¯\":115781,\"å£ĵåĬĽ\":115782,\"æ°ĳå¿ĥ\":115783,\"ä¸įåĲĪéĢĤ\":115784,\"çĶ±æŃ¤åı¯è§ģ\":115785,\"èµŀèªī\":115786,\"æ¾¤\":115787,\"åĩłå¹´åīį\":115788,\"åĲīä»ĸ\":115789,\"çł´æįŁ\":115790,\"è½»è½»åľ°\":115791,\"å²Ľå±¿\":115792,\"æĦıå¢ĥ\":115793,\"ä»Ģä¹Īåı«\":115794,\"åģĩè£ħ\":115795,\"éĢģè´§\":115796,\"å¹ķå¢Ļ\":115797,\"å¦¥åįı\":115798,\"åĽ½æĹĹ\":115799,\"äºĨå¾Īä¹ħ\":115800,\"åĪĨè¾¨çİĩ\":115801,\"ç´Ķ\":115802,\"éĺ³åĮº\":115803,\"åĩŃçĿĢ\":115804,\"åģľè½¦ä½į\":115805,\"äº¬éĥ½\":115806,\"éĶ£\":115807,\"æĵ¾\":115808,\"è¿ĽéĹ¨\":115809,\"åĪĺæµ·\":115810,\"åĽĽçº§\":115811,\"å¥³è¶³\":115812,\"è¡ĮæĶ¿å®¡æī¹\":115813,\"éģ¥æİ§\":115814,\"ä¸įéĮ¯\":115815,\"å¾Ĺå¾Īå¥½\":115816,\"ä¸ºçĽ®çļĦ\":115817,\"ä»įæľª\":115818,\"ç²¾è£ħ\":115819,\"éĢįéģ¥\":115820,\"å°½å¤´\":115821,\"çºłç¼ł\":115822,\"éłĺå°İ\":115823,\"æĭħè´Ł\":115824,\"æĪĸèĢħåħ¶ä»ĸ\":115825,\"åıªä¸įè¿ĩæĺ¯\":115826,\"åı®åĺ±\":115827,\"åģĩåĨĴ\":115828,\"æļĸæ°Ķ\":115829,\"çĽĲåŁİ\":115830,\"è¢«è§Ĩä¸º\":115831,\"è¯ºè´Ŀå°Ķ\":115832,\"ç»ĻäºĨæĪĳ\":115833,\"è¿ĳåįĥ\":115834,\"éĩįåĽŀ\":115835,\"éĨĴäºĨ\":115836,\"çĶµè§£\":115837,\"å¿½çķ¥äºĨ\":115838,\"èĥĮéĥ¨\":115839,\"æĸĩæĺİåŁİå¸Ĥ\":115840,\"æºħ\":115841,\"è²ĵ\":115842,\"æĬµæĮ¡\":115843,\"åĸľæ¬¢åĲĥ\":115844,\"éĿĻéĿĻåľ°\":115845,\"å¾Īæ·±\":115846,\"åŁºç¡ĢçŁ¥è¯Ĩ\":115847,\"è¿ĩéĶĻ\":115848,\"çĲĨç§ĳ\":115849,\"äº¤æµģåĲĪä½ľ\":115850,\"èĪĶ\":115851,\"èª¿æŁ¥\":115852,\"æħĪæĤ²\":115853,\"éĴ°\":115854,\"èĩ´çĶµ\":115855,\"å®£ä¼łæ´»åĬ¨\":115856,\"åıĺéĩı\":115857,\"çļĦäººæĿ¥è¯´\":115858,\"æĹ¶éļĶ\":115859,\"ä¸įç®¡ä½ł\":115860,\"çĽ¸è¿ĳ\":115861,\"è´µéĩĳå±ŀ\":115862,\"ä¹Łä¸įåı¯èĥ½\":115863,\"ç²īæľ«\":115864,\"åįĹçĵľ\":115865,\"çĻ½é©¬\":115866,\"åħīæºĲ\":115867,\"éĩĳå¥ĸ\":115868,\"çĭ¬è§Ĵ\":115869,\"çĭ¬è§Ĵåħ½\":115870,\"å¦¨ç¢į\":115871,\"ç»ĻåĬĽ\":115872,\"ä½Ĩä»į\":115873,\"å¼łå®¶åı£\":115874,\"èĲ¬åħĥ\":115875,\"æ¸²æŁĵ\":115876,\"éķ¿å¤§äºĨ\":115877,\"è®°èĢħäºĨè§£\":115878,\"æĢĢçĿĢ\":115879,\"è¦ģåŃ¦ä¼ļ\":115880,\"æ¸¸æĪıä»£\":115881,\"æ¸¸æĪıä»£ç»ĥ\":115882,\"äºĮçĻ¾\":115883,\"æĦıè¯Ĩå½¢æĢģ\":115884,\"çİº\":115885,\"è®¡åĪĴçĶŁèĤ²\":115886,\"æī¾åĩĨ\":115887,\"åħ°èĬ±\":115888,\"è¿Ļåº§åŁİå¸Ĥ\":115889,\"æ±¡æ³¥\":115890,\"å®ĺæĸ¹å¾®ä¿¡\":115891,\"å½Ĵå±ŀ\":115892,\"æ°§æ°Ķ\":115893,\"éģİç¨ĭä¸Ń\":115894,\"åį°è±¡æ·±åĪ»\":115895,\"ç¨³å¦¥\":115896,\"çµĲæĿŁ\":115897,\"åŃķæľŁ\":115898,\"çī¹æĿĥ\":115899,\"åĿļåĽº\":115900,\"é¡ºåĬ¿\":115901,\"æŀľèĶ¬\":115902,\"éĨ«å¸«\":115903,\"åİ®\":115904,\"ä¹Łæĺ¯å¦ĤæŃ¤\":115905,\"é¦Ĵå¤´\":115906,\"çĽ¸åĬ©\":115907,\"å¹²çº¿\":115908,\"ä¸Ģæľ¬ä¹¦\":115909,\"ç»¥\":115910,\"æĮ¯å¥ĭ\":115911,\"èĤ¾èĦı\":115912,\"åĭķçī©\":115913,\"é£ŀè·ĥ\":115914,\"èıľåĵģ\":115915,\"å¤ļä½Ļ\":115916,\"å¤ļä½ĻçļĦ\":115917,\"éĢĿä¸ĸ\":115918,\"æģĭäºº\":115919,\"å¼ĢåıĳåĪ©çĶ¨\":115920,\"é¡ºä¸°\":115921,\"éĩİå¿ĥ\":115922,\"æł¡å¤ĸ\":115923,\"æģĲé¾Ļ\":115924,\"éĿ¢åħ·\":115925,\"éķ¿è¾Ī\":115926,\"éļıå¤Ħ\":115927,\"éļıå¤Ħåı¯è§ģ\":115928,\"ç´§ç¼º\":115929,\"éĩįä¸Ń\":115930,\"éĩįä¸Ńä¹ĭ\":115931,\"éĩįä¸Ńä¹ĭéĩį\":115932,\"å¥¥æĸ¯\":115933,\"å¥¥æĸ¯åį¡\":115934,\"ä¸Ģä¸ªå¤ļ\":115935,\"ä¸Ģä¸ªå¤ļæľĪ\":115936,\"ä¸įåı¯ç¼ºå°ĳ\":115937,\"æĸ°æł¼å±Ģ\":115938,\"æıĲæĮ¯\":115939,\"è¡Įè´¿\":115940,\"æ¼Ĥæµģ\":115941,\"èģĬåŁİ\":115942,\"åħ´å»º\":115943,\"è´¨æ£Ģ\":115944,\"ç§ģæľįæ¸¸æĪı\":115945,\"æĽ´éĩįè¦ģ\":115946,\"è´®\":115947,\"çħľ\":115948,\"è½¬åıĺä¸º\":115949,\"è¿Ļä¸¤å¹´\":115950,\"ä¿Ŀé²ľ\":115951,\"æī§æķĻ\":115952,\"çĥ¨\":115953,\"å¼Ģåıĳå»ºè®¾\":115954,\"è¿ĲèĲ¥ç®¡çĲĨ\":115955,\"è¯¯å·®\":115956,\"äº¬åī§\":115957,\"å¸Ĳåı·\":115958,\"å·¥ä½ľä½ľé£İ\":115959,\"ä¸ĸä¿Ĺ\":115960,\"çĻ½å®«\":115961,\"å¤©åĽ½\":115962,\"å¤©åĽ½ç»§ç»Ń\":115963,\"å·´æĸ¯\":115964,\"èĲ¥åĪ©\":115965,\"åĵģæł¼\":115966,\"æĿĳæ°ĳä»¬\":115967,\"æĪ¿è½¦\":115968,\"çŃīçĹĩçĬ¶\":115969,\"å¦Ĥå®ŀ\":115970,\"å®¸\":115971,\"å±Ĥçº§\":115972,\"éĶĻè¿ĩäºĨ\":115973,\"ç»ĵå®ŀ\":115974,\"ç¬ĳèĦ¸\":115975,\"çľŁå®ŀæĢ§\":115976,\"éĥ½å¸ĤæĬ¥\":115977,\"é¥Ńèıľ\":115978,\"åºĶæ³¨æĦı\":115979,\"æĬ½çĥŁ\":115980,\"ä¼ªéĢł\":115981,\"åīįä¸Ģå¤©\":115982,\"éŃĶé¾Ļ\":115983,\"éŃĶé¾Ļä»¤çīĮ\":115984,\"çº¦è°Ī\":115985,\"ç»ŁçŃ¹æİ¨è¿Ľ\":115986,\"è®©çĶ¨æĪ·\":115987,\"åħ¨éĿ¢èĲ½å®ŀ\":115988,\"å¼Ħå¾Ĺ\":115989,\"è°ĪæģĭçĪ±\":115990,\"é¸ŁæĪĲéķ¿\":115991,\"é¸ŁæĪĲéķ¿è®°\":115992,\"æ´ĭæ´ĭ\":115993,\"çĸıæķ£\":115994,\"éĿ¢ç§¯çº¦\":115995,\"æµĵç¼©\":115996,\"æĸ¯é¡¿\":115997,\"çĶŁæĢģåľĪ\":115998,\"æī§å¯¼\":115999,\"ç§»éĢģ\":116000,\"é½¿è½®\":116001,\"æł¹æľ¬å°±ä¸į\":116002,\"ç¼©åĩı\":116003,\"èµ°ä¸ĭåİ»\":116004,\"çĿ«æ¯Ľ\":116005,\"ä¹Łä¸įéĶĻ\":116006,\"åıįæĺłåĩº\":116007,\"èĭ¦æģ¼\":116008,\"çĽ¸åħ³æĶ¿çŃĸ\":116009,\"é«ĺæ¥¼\":116010,\"ç²īèī²\":116011,\"æĬķèµĦé¢Ŀ\":116012,\"ä¸įç»ı\":116013,\"ä¸įç»ıæĦı\":116014,\"å®ģæĦ¿\":116015,\"èĪĮå¤´\":116016,\"æ»ĭçĶŁ\":116017,\"å®ģåİ¿\":116018,\"åīįåĪĹèħº\":116019,\"åĩ³\":116020,\"é£Łæ¬²\":116021,\"åıĸèĥľ\":116022,\"éĻ¢åŃĲ\":116023,\"ç´łè´¨æķĻèĤ²\":116024,\"æ»¨å·ŀ\":116025,\"æĬ¢æĬĵ\":116026,\"å¼Ĥåĳ³\":116027,\"åĴļ\":116028,\"åĬį\":116029,\"å®½éĺĶ\":116030,\"æļ´æ¶¨\":116031,\"æĥłåıĬ\":116032,\"è§Ħç¨ĭ\":116033,\"ä¾Ľåħ»\":116034,\"éĢģå¾Ģ\":116035,\"å±±åºĦ\":116036,\"ä¸ľäºļ\":116037,\"å±ķé¦Ĩ\":116038,\"è§£éĶģ\":116039,\"æĹłè§Ĩ\":116040,\"éĻįèĲ½\":116041,\"è¿ŀäºĳ\":116042,\"è¿ŀäºĳæ¸¯\":116043,\"åıĤè°ĭ\":116044,\"çİĸ\":116045,\"ç¬ĥ\":116046,\"èĢĹè´¹\":116047,\"æī¿å¾·\":116048,\"ç¤¾ä¼ļæķĪçĽĬ\":116049,\"åįĹæµ·ç½ĳ\":116050,\"åĪĽä¼¤\":116051,\"èĲ±\":116052,\"åħħæ²Ľ\":116053,\"ç½ĳç«Ļå»ºè®¾\":116054,\"å¤§åºĨ\":116055,\"åĨįéĢł\":116056,\"åŃĹæł·\":116057,\"åħ¨æ°ĳåģ¥èº«\":116058,\"èĮ«èĮ«\":116059,\"æµ®åĬ¨\":116060,\"åīįåı°\":116061,\"å¢ŀè®¾\":116062,\"éĢĽè¡Ĺ\":116063,\"åĢĴéĹŃ\":116064,\"æ³ķå¾ĭé¡¾éĹ®\":116065,\"çĸ®\":116066,\"çĹħçĹĩ\":116067,\"ç©ºåīį\":116068,\"è¯·æķĻ\":116069,\"èĥľä»»\":116070,\"æĿĢèıĮ\":116071,\"æĪĺæĸĹæľº\":116072,\"ç»ĺåĪ¶\":116073,\"å¤Ħæĸ¹\":116074,\"çªģåĽ´\":116075,\"çĮ«åĴª\":116076,\"æĬ¥åĳĬæĺ¾ç¤º\":116077,\"ç¿Ł\":116078,\"çķ¶åľ°\":116079,\"æľĢéļ¾\":116080,\"çºªå§Ķä¹¦è®°\":116081,\"ä½İåİĭ\":116082,\"èĻļç©º\":116083,\"è¿Ļéĥ¨çĶµå½±\":116084,\"äº§ä¸ļåįĩçº§\":116085,\"è°·çĪ±\":116086,\"è°·çĪ±åĩĮ\":116087,\"æĬ¼éĩĳ\":116088,\"å¥³æĸ¹\":116089,\"éĴ»çłĶ\":116090,\"æļĹæļĹ\":116091,\"è¿·ä½ł\":116092,\"æīĢè¬Ĥ\":116093,\"å¨ģå»ī\":116094,\"å¼ĢæľĹ\":116095,\"å²Ķ\":116096,\"çģ«çĤ¬\":116097,\"åĲĪçĲĨæĢ§\":116098,\"åħ¬åĬŀ\":116099,\"ä¼ļä¼ļéķ¿\":116100,\"éĺ´è°ĭ\":116101,\"å¼Ģå±Ģ\":116102,\"æĻ®éĢļè¯Ŀ\":116103,\"åį¡æĭī\":116104,\"å°ĳåĲĥ\":116105,\"éĹªèĢĢ\":116106,\"æŀľæ±ģ\":116107,\"æī§è¡ĮåĬĽ\":116108,\"è°Ľ\":116109,\"æĬ¢åĬ«\":116110,\"é«ĺéĢŁåıĳå±ķ\":116111,\"éŁ¬\":116112,\"åįĹæ²Ļ\":116113,\"é«ĺçŃīåŃ¦æł¡\":116114,\"æį¢ä¸ª\":116115,\"åı¯èĥ½åŃĺåľ¨\":116116,\"æĬĴ\":116117,\"è°±åĨĻ\":116118,\"è¢«æĬĵ\":116119,\"æĿ¯åŃĲ\":116120,\"èĬĤèĥ½åĩıæİĴ\":116121,\"æ°ĶåĢĻåıĺåĮĸ\":116122,\"åĪĨåĪ¥\":116123,\"ä¸Ńæŀ¢\":116124,\"æ¬¢åĳ¼\":116125,\"åħīçº¤\":116126,\"è¿Ļç¾¤\":116127,\"çľ¼çķĮ\":116128,\"åħ±åĲĮåıĳå±ķ\":116129,\"çİ°ä»Ĭ\":116130,\"éĹ»è¨Ģ\":116131,\"çī¹èī²å°ıéķĩ\":116132,\"æķĳäºº\":116133,\"éĻįæ°´\":116134,\"ä¸ĸçķĮä¸Ģæµģ\":116135,\"å°±é¤Ĳ\":116136,\"çŀ¥\":116137,\"å¤įä»ĩ\":116138,\"ç¾½æ¯Ľ\":116139,\"ç¾½æ¯ĽçĲĥ\":116140,\"è´©åįĸ\":116141,\"æºĲæ³ī\":116142,\"æĢ»ä½ĵè§ĦåĪĴ\":116143,\"åĬ¨æĦŁ\":116144,\"ä¸Ģå®¡\":116145,\"åĢŁéĴ±\":116146,\"è§ģæķĪ\":116147,\"èĬ±èįī\":116148,\"åĲĮä¸ļ\":116149,\"æŁ¥è©¢\":116150,\"åĽ½éĻħåĲĪä½ľ\":116151,\"ä¾ĽåĽ¾\":116152,\"åģ´\":116153,\"æłĵ\":116154,\"çĽ¸éĢļ\":116155,\"è°ĪåıĬ\":116156,\"è¿ĩç¨ĭå½ĵä¸Ń\":116157,\"é¦Ļèıĩ\":116158,\"åįģåĽĽæĿ¡\":116159,\"ä¸Ģå¼Ģå§ĭå°±\":116160,\"ä¸ĵåĳĺ\":116161,\"æĺİé¡¯\":116162,\"æīĵéĢłåĩº\":116163,\"ä¸ĭéĿ¢æĪĳä»¬\":116164,\"æľºæ²¹\":116165,\"åı°è¯į\":116166,\"åŃĲå¼Ł\":116167,\"æľĢå¸¸è§ģçļĦ\":116168,\"æĪĳè®°å¾Ĺ\":116169,\"ç»°\":116170,\"æĤ¬æµ®\":116171,\"è¿ĺçľŁæĺ¯\":116172,\"æĮĤåı·\":116173,\"åıĭåĸĦ\":116174,\"éĩįä¼¤\":116175,\"çħ§äº®\":116176,\"æŃ¦èŃ¦\":116177,\"åĩºçİ°éĹ®é¢ĺ\":116178,\"è¸Ĭè·ĥ\":116179,\"åľ°çĲĥä¸Ĭ\":116180,\"å¸Ĥäººå¤§\":116181,\"åıĹå®³äºº\":116182,\"å²Ĳ\":116183,\"åĲĮåŃ¸\":116184,\"éĩĳèŀįå¸Ĥåľº\":116185,\"æľīçļĦçİ©å®¶\":116186,\"å¸ĤæķĻèĤ²\":116187,\"å¸ĤæķĻèĤ²å±Ģ\":116188,\"åĲĦå¼Ĥ\":116189,\"ç·ļä¸Ĭ\":116190,\"æģº\":116191,\"æľīå¤§éĩıçļĦ\":116192,\"åķĨæĬ¥\":116193,\"åįķåįķ\":116194,\"åħ¨é¢Ŀ\":116195,\"ä¾ĿæĹ§æĺ¯\":116196,\"å¥½åĩłä¸ª\":116197,\"åĸµ\":116198,\"éĩįæķ´\":116199,\"çĶŁæ´»è´¨éĩı\":116200,\"æİ¢è®¿\":116201,\"åį°èĬ±\":116202,\"çĽĽè¡Į\":116203,\"å¾®è§Ĥ\":116204,\"èĪįå¾Ĺ\":116205,\"åºŁå¼ĥçī©\":116206,\"ç§¯èĵĦ\":116207,\"å®ļå±ħ\":116208,\"æĤ¼\":116209,\"èĮ¸\":116210,\"çļĦå¸®åĬ©\":116211,\"çļĦå¸®åĬ©ä¸ĭ\":116212,\"äº¿åĲ¨\":116213,\"åŃĶéĽĢ\":116214,\"è¿ĻæĿ¡è·¯\":116215,\"é¥µ\":116216,\"æĦĪåĬł\":116217,\"éķį\":116218,\"ä½ľæ¡Ī\":116219,\"èįĶæŀĿ\":116220,\"å¤ªå°ĳ\":116221,\"è·»èº«\":116222,\"åħ¬çĽĬæ´»åĬ¨\":116223,\"çĻ½æĸĳ\":116224,\"æĬĢæľ¯æ°´å¹³\":116225,\"å¸§\":116226,\"æĹłçŁ¥\":116227,\"åºĶè¯¥æĢİä¹Ī\":116228,\"éĢĢå¸Ĥ\":116229,\"æ¸Ń\":116230,\"åħ»çĮª\":116231,\"é©¼\":116232,\"ç¾¤å²Ľ\":116233,\"å¤§åį«\":116234,\"ä¹ĺçĶ¨è½¦\":116235,\"èı²å°Ķ\":116236,\"è´´åĲ§\":116237,\"åģľä¸ĭæĿ¥\":116238,\"æľīæľºç»ĵåĲĪ\":116239,\"åĪ»èĭ¦\":116240,\"çļĦåľ°\":116241,\"çļĦåľ°æŃ¥\":116242,\"è¯ĬæīĢ\":116243,\"å¼ĢæĪĺ\":116244,\"èĢģçīĮ\":116245,\"çŃ¹çłģ\":116246,\"åħ«å¤§ä»¥æĿ¥\":116247,\"æ¥¼æĪ¿\":116248,\"åŃĻæĤŁ\":116249,\"åŃĻæĤŁç©º\":116250,\"åħĴåŃĲ\":116251,\"ç¬¬ä¸ĢæĿ¡\":116252,\"ç¤¾äº¤åªĴä½ĵ\":116253,\"æĥ³èµ·æĿ¥\":116254,\"å¤§æ´ĭ\":116255,\"æĭ¼éŁ³\":116256,\"è¿Ľåįļä¼ļ\":116257,\"è¿ĩåħ³\":116258,\"æ²¼\":116259,\"ç©¿æĲŃ\":116260,\"éĤ£ä¸Ģå¤©\":116261,\"çł´éĹ¨\":116262,\"æĬķæłĩäºº\":116263,\"èµ¢å®¶\":116264,\"èĻļå¼±\":116265,\"æ¿ĥ\":116266,\"å®īæ£Ģ\":116267,\"å®¢å®¶\":116268,\"çĭ¬ç«ĭèĳ£äºĭ\":116269,\"æīĭåĬ¿\":116270,\"åīµéĢł\":116271,\"åľĨæ»¡å®ĮæĪĲ\":116272,\"ä¸ºä¸»çº¿\":116273,\"å¥½å¥ĩå¿ĥ\":116274,\"é¢ĨåľŁ\":116275,\"çªĸ\":116276,\"åħ¸åŀĭæ¡Īä¾ĭ\":116277,\"çªģåıĳäºĭä»¶\":116278,\"åºķæ°Ķ\":116279,\"å¤´æĻķ\":116280,\"å®Ľå¦Ĥ\":116281,\"è§¸\":116282,\"æ¸ħæ·¡\":116283,\"åļ¼\":116284,\"åģľçĶµ\":116285,\"ç²īå°ĺ\":116286,\"éĻįä½İæĪĲæľ¬\":116287,\"æĶ¾æīĭ\":116288,\"è®°èĢħè¡¨ç¤º\":116289,\"æĭĸå»¶\":116290,\"éªĩ\":116291,\"æ®ĭå¿į\":116292,\"çľģæķĻèĤ²\":116293,\"çľģæķĻèĤ²åİħ\":116294,\"é«ĺé¢Ŀ\":116295,\"éĦĻ\":116296,\"æ¥ŀ\":116297,\"åĨħç§ĳ\":116298,\"èĲ¥ä¸ļé¢Ŀ\":116299,\"åŁºçŁ³\":116300,\"æµģæ·Į\":116301,\"ä¸»æĹ¨\":116302,\"éĺĲéĩĬ\":116303,\"å»ºåįİ\":116304,\"æĥĬåı¹\":116305,\"çī¢åĽºæłĳç«ĭ\":116306,\"æĺ¯åĲ¦åŃĺåľ¨\":116307,\"å»ºåĨĽ\":116308,\"éĽ¾éľ¾\":116309,\"åħ¬è®¤\":116310,\"åħ¬è®¤çļĦ\":116311,\"æ°¨åŁº\":116312,\"æ°¨åŁºéħ¸\":116313,\"åīįåĩłå¹´\":116314,\"åĪ¹éĤ£\":116315,\"æ±Łä¸ľ\":116316,\"å·¥æ¥Ń\":116317,\"ä¸ĢçĤ¹ä¹Łä¸į\":116318,\"ä¿®å£«\":116319,\"äºĨä¸Ģéģį\":116320,\"åĪģ\":116321,\"æ»ļæ»ļ\":116322,\"åĪĨæł¡\":116323,\"çľŁçĪ±\":116324,\"è¡ĢèĦī\":116325,\"æĢ¥åī§\":116326,\"ä¸Ģç¾¤äºº\":116327,\"ç¾¯\":116328,\"æĪĲé¾Ļ\":116329,\"ç²¾ç¥ŀçĹħ\":116330,\"çĽ¸åħ³äººåĳĺ\":116331,\"éĿĵä¸½\":116332,\"ä¸īåŃ£åº¦\":116333,\"åĪĴå®ļ\":116334,\"ä¸ĸçķĮç¬¬ä¸Ģ\":116335,\"éĢļä¿Ĺ\":116336,\"åķĨä¸ļåľ°äº§\":116337,\"åĬŁèĥ½æĢ§\":116338,\"èµĦæľ¬ä¸»ä¹ī\":116339,\"è¯¦è§ģ\":116340,\"æĬĵæįķ\":116341,\"æĸĩæĺĮ\":116342,\"å®Ŀå®ī\":116343,\"è£ħéħįå¼ı\":116344,\"æºĲæºĲ\":116345,\"æºĲæºĲä¸įæĸŃ\":116346,\"çĶŁæĢķ\":116347,\"çºµåĲĳ\":116348,\"å£½\":116349,\"çľ¼è¢ĭ\":116350,\"èĤīä½ĵ\":116351,\"åı¤ä»Ĭ\":116352,\"èŀįåªĴä½ĵ\":116353,\"åģī\":116354,\"æł¼æľĥåĵ¡\":116355,\"çĥ·\":116356,\"åĬŁçĶ¨\":116357,\"æīŃçŁ©\":116358,\"ç»¿èī²éĢļéģĵ\":116359,\"åī§ç»Ħ\":116360,\"å¼±åĬ¿\":116361,\"è´¨éĩıéĹ®é¢ĺ\":116362,\"éĻĲé¢Ŀ\":116363,\"éªĨ\":116364,\"éģµä¹ī\":116365,\"å¯Ŀå®¤\":116366,\"æĥ³å¿µ\":116367,\"åł±åĳĬ\":116368,\"ä»ħæ¬¡\":116369,\"ä»ħæ¬¡äºİ\":116370,\"èŀįåĪĽ\":116371,\"æĭĽèģĺä¼ļ\":116372,\"åºĬåŀ«\":116373,\"è½¬åŀĭåıĳå±ķ\":116374,\"ä¸ŃåĽ½çĶµä¿¡\":116375,\"åĲ¬è¯Ŀ\":116376,\"è«ĭæ±Ĥ\":116377,\"å¤§éĥ¨åĪĨäºº\":116378,\"æ´»å¾Ĺ\":116379,\"åĵŃæ³£\":116380,\"è¶Ļ\":116381,\"åıĳçĹħçİĩ\":116382,\"ä¸įç¬¦\":116383,\"åĨĽå®ĺ\":116384,\"é¢Īæ¤İ\":116385,\"æĸ°åĨłçĸ«æĥħ\":116386,\"æŁ¬åŁĶ\":116387,\"æŁ¬åŁĶå¯¨\":116388,\"ä»»ä½ķå½¢å¼ı\":116389,\"äººéĻħ\":116390,\"äººéĻħåħ³ç³»\":116391,\"æĢ»æī¿åĮħ\":116392,\"å¹³åĿĩæ¯ı\":116393,\"æģŃåĸľ\":116394,\"åĦĺ\":116395,\"åħµé©¬\":116396,\"è¿ŁåĪ°\":116397,\"å·¥ä¼¤\":116398,\"çīĪæĿĥå½Ĵ\":116399,\"çīĪæĿĥå½ĴåİŁ\":116400,\"æĭ¥æĬ¤\":116401,\"ç³Ĭæ¶Ĥ\":116402,\"å¹²æ¶ī\":116403,\"å°ĳä¸įäºĨ\":116404,\"æĥ³æī¾\":116405,\"è´¹çİĩ\":116406,\"è¯¥éĻ¢\":116407,\"èŀįåĮĸ\":116408,\"è¿İåĲĪ\":116409,\"è§ĨåĲ¬èĬĤçĽ®\":116410,\"æł¼ç¶²ç«Ļ\":116411,\"çľīæ¯Ľ\":116412,\"æ¬¢è¿İå¤§å®¶\":116413,\"å®¶åºŃæķĻèĤ²\":116414,\"ä¾µèļĢ\":116415,\"ç»Ļä½łä»¬\":116416,\"è¡Ģæ¶²å¾ªçİ¯\":116417,\"å¯Ħæīĺ\":116418,\"å°ĸåı«\":116419,\"ä»¥ä¸ĭåĩłä¸ª\":116420,\"è¿ĺä»¥ä¸º\":116421,\"åħ¶ä»ĸçİ©å®¶\":116422,\"ç¬ĳç¬ĳ\":116423,\"æīĵåĲ¬\":116424,\"èĩªçĦ¶ç§ĳåŃ¦\":116425,\"åŁºç«Ļ\":116426,\"ä¹Ŀå·ŀ\":116427,\"ä¿Ŀé©¾\":116428,\"ä¿Ŀé©¾æĬ¤\":116429,\"ä¿Ŀé©¾æĬ¤èĪª\":116430,\"æĶ¾çľ¼\":116431,\"çŁ¥åĲįä¼ģä¸ļ\":116432,\"ç¸®\":116433,\"ç¨½\":116434,\"æļĩ\":116435,\"ä½¿çĶ¨ç¶²è·¯\":116436,\"é¢ĦçķĻ\":116437,\"å¤§è±¡\":116438,\"åıĳæĺİä¸ĵåĪ©\":116439,\"æĸĩå¨±\":116440,\"éĢłç¦ı\":116441,\"æ¹¿æ¶¦\":116442,\"éĿ¢æĿ¡\":116443,\"æ¶Īè´¹åįĩçº§\":116444,\"è®Ĭå¾Ĺ\":116445,\"åĩłåĲį\":116446,\"ä»Ħ\":116447,\"è®¤æ¸ħ\":116448,\"è¿ľæĻ¯\":116449,\"æıĴåº§\":116450,\"è¯¸ä¾¯\":116451,\"åıĺæĢģ\":116452,\"ç¦ıå½©\":116453,\"è´§æŀ¶\":116454,\"å¤±æİ§\":116455,\"ç§»åĬ¨ç«¯\":116456,\"ä¸Ĭåı¸\":116457,\"éĢłçº¸\":116458,\"å¸ĥæľĹ\":116459,\"çĴĩ\":116460,\"åı°åįĹ\":116461,\"åĮĹäº¬åĨ¬å¥¥\":116462,\"èĵĿçīĻ\":116463,\"éķ¿çŁŃ\":116464,\"æĬĺå°Ħ\":116465,\"ç»ĳæŀ¶\":116466,\"å¯Ĵåģĩ\":116467,\"è½¬åŁºåĽł\":116468,\"æĢ¥äºİ\":116469,\"æŃ£åĵģ\":116470,\"åħħæ»¿\":116471,\"å¤§çº²\":116472,\"æĬĹä½ĵ\":116473,\"è¨ĵç·´\":116474,\"æĶ¶ç´§\":116475,\"æ¯Ķè³½\":116476,\"åħµåĬĽ\":116477,\"æľ¬æĽ¸\":116478,\"äºĮä»£\":116479,\"æĢ¥è¯Ĭ\":116480,\"æĸĩæ¡Ī\":116481,\"ç»ıåķĨ\":116482,\"æĻ¨æĬ¥\":116483,\"æ£ĺ\":116484,\"æĢ»ä¹¦è®°åľ¨\":116485,\"åıĹéĤĢ\":116486,\"äºĶåĽĽ\":116487,\"å²ŃåįĹ\":116488,\"çĪ±åĲĥ\":116489,\"åŁĥå°Ķ\":116490,\"å¿ĥå¢ĥ\":116491,\"è¦ĨçĽĸéĿ¢\":116492,\"å®ŀåľ¨æĺ¯å¤ª\":116493,\"æł¹åºķ\":116494,\"çº·çº·è¡¨ç¤º\":116495,\"åĹħ\":116496,\"éļıçĿĢæĹ¶éĹ´\":116497,\"åİĨåı²æĤłä¹ħ\":116498,\"éħī\":116499,\"æĢ»éĺŁ\":116500,\"ä¸»é¢ĺæ´»åĬ¨\":116501,\"éĹ®åį·\":116502,\"é©¿ç«Ļ\":116503,\"æı¡ä½ı\":116504,\"åı¯èĥ½å¯¼èĩ´\":116505,\"æ°ĳéĸĵ\":116506,\"éĸĭåķŁ\":116507,\"ä½Ĩä¸įéĻĲ\":116508,\"ä½Ĩä¸įéĻĲäºİ\":116509,\"åįģéĩĮ\":116510,\"å¨¥\":116511,\"æįŁèĢĹ\":116512,\"çĸıå¯¼\":116513,\"çİ¯æ°§\":116514,\"ç¥ŀéĢļ\":116515,\"çĪ±å°Ķ\":116516,\"çĪ±å°Ķåħ°\":116517,\"æľ´å®ŀ\":116518,\"å¿«æĬ¥\":116519,\"æĶ¶åıĹ\":116520,\"æĪĸè¨±\":116521,\"èĥĮéĿ¢\":116522,\"æĸĩåĮĸä¼łåªĴ\":116523,\"ä¸īåĢĭ\":116524,\"æĶ»åĬ¿\":116525,\"å®īä¸ľ\":116526,\"å®īä¸ľå°¼\":116527,\"åĿĩå·²\":116528,\"é¡¾èĻĳ\":116529,\"éĦŃ\":116530,\"è¿Ļå®¶åħ¬åı¸\":116531,\"åħ¬åĳĬç§°\":116532,\"æıĲä¾Ľä¼ĺè´¨\":116533,\"ç¨³æŃ¥æİ¨è¿Ľ\":116534,\"å¤įè¯ķ\":116535,\"å°Ĩé¢Ĩ\":116536,\"è°Īèµ·\":116537,\"å¨Ħ\":116538,\"è¿ŀçº¿\":116539,\"æ©ŁéĹľ\":116540,\"åºĶçĶ¨åľºæĻ¯\":116541,\"çĶ»åĥı\":116542,\"è´¢è¿Ĳ\":116543,\"ä¿Ŀéļª\":116544,\"çĹħçĲĨ\":116545,\"æ¯Ľä¸»å¸Ń\":116546,\"ä¸Ŀæ¯«ä¸į\":116547,\"çĪ±å¥ĩ\":116548,\"çĪ±å¥ĩèīº\":116549,\"ä¸ĵå®¶ç»Ħ\":116550,\"åĳ¼åĶ¤\":116551,\"éĭ¼\":116552,\"çģ¸\":116553,\"é¢ĨåħĪåľ°ä½į\":116554,\"æıĲæĭĶ\":116555,\"éľ¸éģĵ\":116556,\"å±±åĿ¡\":116557,\"èĿİ\":116558,\"æ²¸èħ¾\":116559,\"è¯¥é¡¹\":116560,\"ä»ĬçĶŁ\":116561,\"ä¸Ģç¯ĩæĸĩç«ł\":116562,\"æĸ¹å¼ıè¿Ľè¡Į\":116563,\"é»ĳå®¢\":116564,\"æĶ¹åĬ¨\":116565,\"ä¸»é¡Į\":116566,\"æķ£å¸ĥ\":116567,\"ä»Ģä¹Īåľ°æĸ¹\":116568,\"åĮĸåĲĪ\":116569,\"åĮĸåĲĪçī©\":116570,\"éĿĻçĶµ\":116571,\"æĢ»æĶ¶åħ¥\":116572,\"å§Ķç»Ħç»ĩ\":116573,\"å§Ķç»Ħç»ĩéĥ¨\":116574,\"éĿĻæĢģ\":116575,\"èĢģåŃĹåı·\":116576,\"å®¤åıĭ\":116577,\"éĥ½ä¸įæķ¢\":116578,\"æŀ¶åŃĲ\":116579,\"çģµæķı\":116580,\"å®¡è§Ĩ\":116581,\"æĤ£åĦ¿\":116582,\"å±±å¯¨\":116583,\"èĸªèµĦ\":116584,\"é©°æı´\":116585,\"éĥ¨åĪĨåĨħå®¹\":116586,\"å¥½ä¼¼\":116587,\"æĪĲåĳĺåĽ½\":116588,\"åľ¨æĪĳçľĭæĿ¥\":116589,\"åħ³æ³¨åº¦\":116590,\"éĻĪæŁĲ\":116591,\"è¿Ļç§įäºĭæĥħ\":116592,\"éĢīå®ļ\":116593,\"ç²¾åŃĲ\":116594,\"å£ģçĶ»\":116595,\"æ±Łæ·®\":116596,\"é«ĺæĺĤ\":116597,\"æł¼åĬĽ\":116598,\"è¼©\":116599,\"åŃ¦åłĤ\":116600,\"æĤ¨åĲĮæĦı\":116601,\"ä¸ĢåĪĩéĥ½æĺ¯\":116602,\"æ½¤\":116603,\"éĸĥ\":116604,\"å¸ĮæľĽèĩªå·±\":116605,\"ä¿ĺ\":116606,\"æ±Łåİ¿\":116607,\"æ³¾\":116608,\"ç§ĳæķĻ\":116609,\"æīĵè¿Ľ\":116610,\"ä¸įæħİ\":116611,\"å¯ĴåĨ¬\":116612,\"æ¸Ķæ°ĳ\":116613,\"éĽ·æĸ¯\":116614,\"ä¸»å®°\":116615,\"æĹħæ¸¸åº¦åģĩ\":116616,\"çĶµåŃĲéĤ®ä»¶\":116617,\"æ±Ĥå©ļ\":116618,\"éļİæ®µ\":116619,\"åģ¥èº«æĪ¿\":116620,\"æ³¨æĺİåĩºå¤Ħ\":116621,\"äºĭæķħåıĳçĶŁ\":116622,\"çº§ä»¥ä¸Ĭ\":116623,\"åŃĺæ´»\":116624,\"æĸ½èĤ¥\":116625,\"èľľèľĤ\":116626,\"åµ©\":116627,\"æĮĸæİĺæľº\":116628,\"æĬĹæĭĴ\":116629,\"ä¼łå¯¼\":116630,\"æĺ¯ä»Ģä¹Īåĳ¢\":116631,\"ä¸Ĭå¹´åĲĮæľŁ\":116632,\"å»ºåħļ\":116633,\"çĶŁæħĭ\":116634,\"ä¿Ŀä½ı\":116635,\"æ¬¾è½¦åŀĭ\":116636,\"äººèĦī\":116637,\"éļĲèĶ½\":116638,\"å¤±æķĪ\":116639,\"éģ¿åŃķ\":116640,\"ç®Ģä¾¿\":116641,\"è°¢è°¢ä½ł\":116642,\"å®Īä½ı\":116643,\"æĶ¾æĺł\":116644,\"è¨Īçķ«\":116645,\"çİ°ä»£çī©æµģ\":116646,\"é¤Ĳå»³\":116647,\"æķħå±ħ\":116648,\"å¤§å¤§å°ı\":116649,\"å¤§å¤§å°ıå°ı\":116650,\"çī¹åĪ«å£°æĺİ\":116651,\"éģįåıĬ\":116652,\"å¿ĥçĲĨåĴ¨è¯¢\":116653,\"è³´\":116654,\"çĮ®è¡Ģ\":116655,\"å·²ç»ıè¾¾åĪ°\":116656,\"æīĵæĭĽåĳ¼\":116657,\"åıĮè¾¹\":116658,\"ä¸Ģæĸ¹éĿ¢æĺ¯\":116659,\"å´ĩå°ļ\":116660,\"éĺ¿å¯Į\":116661,\"éĺ¿å¯Įæ±Ĺ\":116662,\"æĮģæľīäºº\":116663,\"è±ģ\":116664,\"é£İçŃĿ\":116665,\"åĬ¨èį¡\":116666,\"äºĨä¸Ģä¼ļ\":116667,\"äºĨä¸Ģä¼ļåĦ¿\":116668,\"ä¸ĩè±¡\":116669,\"çľĭçĶµè§Ĩ\":116670,\"åįģä¸īæĿ¡\":116671,\"çĮĽçĥĪ\":116672,\"è¦ģä¸įçĦ¶\":116673,\"å¤ªæŀģæĭ³\":116674,\"å¼ķçĪĨ\":116675,\"ç»ıè¿ĩå¤ļå¹´\":116676,\"æ¸¸æĪıéĩĮçļĦ\":116677,\"é¾Ļæ³ī\":116678,\"æłĩéħį\":116679,\"è®ĵä»ĸåĢĳ\":116680,\"éĢłæŀĹ\":116681,\"åĮºåŁŁæĢ§\":116682,\"äº¿ä¸ĩ\":116683,\"æĪĺçķ¥å¸ĥå±Ģ\":116684,\"éķĩæĶ¿åºľ\":116685,\"åĶ®ç¥¨\":116686,\"çĶŁäº§å·¥èīº\":116687,\"éķĩåħļå§Ķ\":116688,\"ä¸Ńå°ıåŀĭ\":116689,\"æľ¨èĢ³\":116690,\"æ²³è¾¹\":116691,\"èĦ¾èĥĥ\":116692,\"æ¬¢è¿İæĤ¨\":116693,\"åıĺå¼Ĥ\":116694,\"ç¼¤çº·\":116695,\"åŀĥåľ¾æ¡¶\":116696,\"è¾©è¯ģ\":116697,\"è½¦åºĵ\":116698,\"æ¯Ķçİĩ\":116699,\"åħ´æĹº\":116700,\"è¯¦ç»ĨäºĨè§£\":116701,\"å®īå±ħ\":116702,\"çħ§æĸĻ\":116703,\"æĸ¹æīį\":116704,\"èµ¦\":116705,\"åĨķ\":116706,\"å¥Ķèµ´\":116707,\"å®Ŀé¸¡\":116708,\"åľºåĿĩ\":116709,\"çĽ®åīįæŃ£åľ¨\":116710,\"åĲŀåĻ¬\":116711,\"è¿°èģĮ\":116712,\"æĩµ\":116713,\"å¥ĩçĳŀ\":116714,\"ä»įå°Ĩ\":116715,\"èĪīè¾¦\":116716,\"å·¥åķĨå±Ģ\":116717,\"å¡ĳèĥ¶\":116718,\"åĬŀå®ŀäºĭ\":116719,\"æĸ¹æĸ¹éĿ¢\":116720,\"æĸ¹æĸ¹éĿ¢éĿ¢\":116721,\"æĸĩåĮĸèĬĤ\":116722,\"åħ¥èģĮ\":116723,\"é¸¥\":116724,\"ç©¿éĢı\":116725,\"ä»¥ä¹łè¿ĳå¹³\":116726,\"åį±éļª\":116727,\"æľ¦èĥ§\":116728,\"åİĨåı²æĢ§\":116729,\"æķŀå¼Ģ\":116730,\"ä¼Ļä¼´åħ³ç³»\":116731,\"çŁ¿åĮº\":116732,\"åĽ½éĻħåľ¨çº¿\":116733,\"ä¼łå¥ĩéĩĮéĿ¢\":116734,\"è¿ĳäºĽ\":116735,\"è¿ĳäºĽå¹´\":116736,\"åĬ£åĬ¿\":116737,\"æĶ»åĩ»åĬĽ\":116738,\"æĻºéĢł\":116739,\"ç¦§\":116740,\"çİĭåħĪçĶŁ\":116741,\"éĨ«çĶŁ\":116742,\"åĽĽé¡¹\":116743,\"å®ŀæĻ¯\":116744,\"åĪĿåĪĽ\":116745,\"å¿ĥè£¡\":116746,\"æĻ¶ä½ĵ\":116747,\"äº¤éĻħ\":116748,\"è®©æ¶Īè´¹èĢħ\":116749,\"è¯¾æĸĩ\":116750,\"æİĴæ°Ķ\":116751,\"å¹¶ä¸įæĦıåĳ³\":116752,\"çĽ¸å£°\":116753,\"ç¬¬ä¸Ģå±Ĭ\":116754,\"åİŁèĳĹ\":116755,\"éĽľ\":116756,\"æ²¡æľīå¤ªå¤§\":116757,\"è¡¥æ°´\":116758,\"çī©æµģä¼ģä¸ļ\":116759,\"ç¬¬äºĮæī¹\":116760,\"åħ¶å®ĥéĹ®é¢ĺ\":116761,\"æİĮéĹ¨\":116762,\"è´£ä»»å¿ĥ\":116763,\"é¤Ĳåħ·\":116764,\"ç¾Ĭæ¯Ľ\":116765,\"æ²¡æľīå¿ħè¦ģ\":116766,\"ä¹ĲåĽ¢\":116767,\"è¿ĽåŁİ\":116768,\"ä¸ĢçĤ¹åĦ¿\":116769,\"èº«å½¢\":116770,\"çļ®èĤ¤çĹħ\":116771,\"æĺ±\":116772,\"å¢ŀèĩ³\":116773,\"èģ²æĺİ\":116774,\"æıĲè´¨\":116775,\"ä½ĵèĤ²åľº\":116776,\"çŃ¹å»º\":116777,\"é¬Ĩ\":116778,\"è½¦çīĮ\":116779,\"éļĶéŁ³\":116780,\"è´Łè´£åĲĮå¿Ĺ\":116781,\"ä¸°ç¡ķ\":116782,\"ä½ĽéĻĢ\":116783,\"äºīåĲµ\":116784,\"åº¶\":116785,\"æ·¡æ°´\":116786,\"å°ıçĶ·åŃ©\":116787,\"ç§ģèĩª\":116788,\"åĮĸè¿Ľç¨ĭ\":116789,\"æĪĺå£«æĿ¥è¯´\":116790,\"æ²¹èħ»\":116791,\"èĦ±è´«èĩ´å¯Į\":116792,\"æĹ¥å¸¸å·¥ä½ľ\":116793,\"äº¤èŀį\":116794,\"åĨľè´¸\":116795,\"åĨľè´¸å¸Ĥåľº\":116796,\"åĵĪçĻ»\":116797,\"çĶµè´¹\":116798,\"èµĺ\":116799,\"åıĮèħ¿\":116800,\"æĵĶå¿ĥ\":116801,\"æĿ¥å½¢å®¹\":116802,\"ä½¿åĳ½æĦŁ\":116803,\"éĤ£ä¹Īç®Ģåįķ\":116804,\"èĬĻèĵī\":116805,\"åĢŁæ¬¾äºº\":116806,\"ç§Ģä¸½\":116807,\"è®ĵä»ĸ\":116808,\"ä¸¥åİīæīĵåĩ»\":116809,\"è³ŀ\":116810,\"æļ«\":116811,\"çħ¤æ°Ķ\":116812,\"çĪ¬ä¸Ĭ\":116813,\"æ½ĩæ´Ĵ\":116814,\"å¤ªä¹ħ\":116815,\"åĳ½åĲįä¸º\":116816,\"è·¯çĶ±\":116817,\"è·¯çĶ±åĻ¨\":116818,\"é©¯\":116819,\"æıĲæĹ©\":116820,\"æĬĹåĩ»çĸ«æĥħ\":116821,\"åĩĽ\":116822,\"äº¤åıĭ\":116823,\"éĶĢåĶ®æ¸łéģĵ\":116824,\"æ¯«ä¸įçĬ¹è±«\":116825,\"èĲ¥åľ°\":116826,\"çłĶç©¶è¡¨æĺİ\":116827,\"é±¼ç±»\":116828,\"æį¢å±Ĭ\":116829,\"æİ¡åıĸ\":116830,\"çīĨ\":116831,\"çĽĽå¼Ģ\":116832,\"æ²§æ¡ĳ\":116833,\"åºŃå®¡\":116834,\"ç»ıæŁ¥\":116835,\"åĬłå¼·\":116836,\"çĽ¸æ¯Ķäºİ\":116837,\"ä¸ĵçıŃ\":116838,\"ä½ĵåŀĭ\":116839,\"è¢«å®³\":116840,\"è¢«å®³äºº\":116841,\"æĶ¶æ¬¾\":116842,\"åħ·æľīèī¯å¥½\":116843,\"é«ĺå³°æľŁ\":116844,\"åģıä½İ\":116845,\"åĦŁ\":116846,\"åĨľä¸ļç§ĳæĬĢ\":116847,\"çī¹æ®ĬæĥħåĨµ\":116848,\"å¦Ĥæŀľçİ©å®¶\":116849,\"éķ¿çº¦\":116850,\"ç¬¬åħŃå±Ĭ\":116851,\"åħ¬å¼ĢæĭĽèģĺ\":116852,\"åĪĩæĸŃ\":116853,\"è¿«ä½¿\":116854,\"çĸĹç¨ĭ\":116855,\"ç¬¬äºĮç§į\":116856,\"ä¸įåħį\":116857,\"å¹²èŃ¦\":116858,\"çŁ³æ¦´\":116859,\"åĹ£\":116860,\"ä¸¤ç±»\":116861,\"çĪµå£«\":116862,\"åŁİä¹¡å±ħæ°ĳ\":116863,\"æŃ¤é¡¹\":116864,\"çĽ´è¾ĸ\":116865,\"çĽ´è¾ĸå¸Ĥ\":116866,\"åĳ¼åºĶ\":116867,\"éĴ¯\":116868,\"ç¦ıå¾·\":116869,\"æľºèº«\":116870,\"æĵįåľº\":116871,\"æ¿Ĵä¸´\":116872,\"äººç¾¤ä¸Ń\":116873,\"èĤ¡æ°ĳ\":116874,\"åŃ½\":116875,\"æ³ķåħ°\":116876,\"é¨İ\":116877,\"ç³¯ç±³\":116878,\"æĢ»çļĦ\":116879,\"æĢ»çļĦæĿ¥è¯´\":116880,\"åħ¸éĽħ\":116881,\"æĸ°éĻĪ\":116882,\"æĸ°éĻĪä»£è°¢\":116883,\"çĽ®çĿ¹\":116884,\"é¢Ħè¨Ģ\":116885,\"è·Įçł´\":116886,\"æĸ°ç¯ĩç«ł\":116887,\"æ¯ĴæĢ§\":116888,\"åĸĿèĮ¶\":116889,\"æŁ¥èİ·\":116890,\"äº®ä¸½\":116891,\"çĶŁäº§åķĨ\":116892,\"æĶ¹æĪĲ\":116893,\"ä¸ºäºĨæĽ´å¥½\":116894,\"æ·±äº¤\":116895,\"æ·±äº¤æīĢ\":116896,\"æİĥ\":116897,\"ä¹ĻèĤĿ\":116898,\"æ³¸å·ŀ\":116899,\"åħĪè¿ĽæĬĢæľ¯\":116900,\"è¾ĵç»Ļ\":116901,\"æķ£æĪ·\":116902,\"æĢĿç»´æĸ¹å¼ı\":116903,\"åºĹä¸»\":116904,\"è°ĭæ±Ĥ\":116905,\"æ¸¸æĪıæĬĢå·§\":116906,\"ä¸Ģå¹´çº§\":116907,\"çľ¼è§Ĵ\":116908,\"ä¸Ńä»ĭæľºæŀĦ\":116909,\"å·§åĲĪ\":116910,\"éĺ²çĽĹ\":116911,\"å¯¼è´Ń\":116912,\"æĪĬ\":116913,\"æĽ´éĢĤåĲĪ\":116914,\"åŁºæľ¬ä¿¡æģ¯\":116915,\"é©¬ä¸ģ\":116916,\"åħ»æ®ĸåľº\":116917,\"åıįè¿ĩæĿ¥\":116918,\"æİ¨å´ĩ\":116919,\"å¯ĨåĪĩåħ³æ³¨\":116920,\"åŁºéĩĳç»ıçĲĨ\":116921,\"æĮīéĶ®\":116922,\"åĨħéĥ¨æİ§åĪ¶\":116923,\"æĪĲåĳĺåįķä½į\":116924,\"æľ¯è¯Ń\":116925,\"åĪ¶æľį\":116926,\"åĪļéľĢ\":116927,\"æ£Ģç´¢\":116928,\"å¤§å¤§æıĲé«ĺ\":116929,\"åģ¥åº·ç®¡çĲĨ\":116930,\"èĩªæŃ¤\":116931,\"å®¢æĪ·éľĢæ±Ĥ\":116932,\"ä¸°èĥ¸\":116933,\"èµ·éĩį\":116934,\"èµ·éĩįæľº\":116935,\"æ¬łç¼º\":116936,\"æ¡ĪåŃĲ\":116937,\"æĥħäººèĬĤ\":116938,\"åħļæł¡\":116939,\"è¢ľ\":116940,\"è¯¥åī§\":116941,\"è¿·å¤±ä¼łå¥ĩ\":116942,\"ç»ļä¸½\":116943,\"åķª\":116944,\"æĹłç§ģ\":116945,\"éĢ²ä¸ĢæŃ¥\":116946,\"ç¬¬ä¸Ģç«ł\":116947,\"åĻ¨åħ·\":116948,\"åĨľèµĦ\":116949,\"ç¢ºå¯¦\":116950,\"åºıåĪĹ\":116951,\"å¨±ä¹Ĳå¹³åı°\":116952,\"èŀįèµĦç§Łèµģ\":116953,\"èµĦæºĲåħ±äº«\":116954,\"èģ½åĪ°\":116955,\"æĲŀå¾Ĺ\":116956,\"ç»§ç»Ńä¿ĿæĮģ\":116957,\"åĲ¯èĴĻ\":116958,\"çľº\":116959,\"ä¸Ŀè·¯\":116960,\"è®¾æĸ½å»ºè®¾\":116961,\"æİ¥åľ°\":116962,\"æİ¥åľ°æ°Ķ\":116963,\"ç¬¬ä¸īåŃ£åº¦\":116964,\"åŁºè°ĥ\":116965,\"åıĳéŁ³\":116966,\"ç¤¾ä¼ļèµĦæľ¬\":116967,\"éĽĩä¸»\":116968,\"è¿ŀèĥľ\":116969,\"æ²¡åķ¥\":116970,\"å»¢\":116971,\"èµ¶èµ´\":116972,\"æ¼ĶåĮĸ\":116973,\"åı¤æĢª\":116974,\"çİĭçĪ·\":116975,\"é¢ĦåħĪ\":116976,\"å¼Ģåħ·\":116977,\"åĽŀé¦ĸ\":116978,\"åľ°ä¸ĭæ°´\":116979,\"å°ıç¼ĸä¸Ģèµ·\":116980,\"èµİåĽŀ\":116981,\"åľ°è²Į\":116982,\"åĪĿä¸ī\":116983,\"åı¯çĶ¨äºİ\":116984,\"éģĹè¿¹\":116985,\"è¿Ļæī¹\":116986,\"èĸªæ°´\":116987,\"å¿ħçĦ¶ä¼ļ\":116988,\"æ²½\":116989,\"éįĭ\":116990,\"ç¬¬ä¸Ģéĥ¨\":116991,\"åĪĬçī©\":116992,\"å®ŀä¾ĭ\":116993,\"æ¸ħåĩĢ\":116994,\"ä¸ĬèµĽåŃ£\":116995,\"åĽ¾è¡¨\":116996,\"éĤ®è½®\":116997,\"åĵªè£¡\":116998,\"çĽ¸è§ģ\":116999,\"æī°ä¹±\":117000,\"æ¯ıæ¯ı\":117001,\"è¿Ļè¾ĪåŃĲ\":117002,\"ç¡«éħ¸\":117003,\"äºīçĽ¸\":117004,\"æº¯æºĲ\":117005,\"åĩºä¼Ĺ\":117006,\"çİīçŁ³\":117007,\"åħ±çĶŁ\":117008,\"æĹ¶éĹ´æ®µ\":117009,\"éĩįè¦ģæĮĩç¤º\":117010,\"æ¶Īè´¹éľĢæ±Ĥ\":117011,\"éķ¿éķ¿\":117012,\"éķ¿éķ¿çļĦ\":117013,\"å®īæĬļ\":117014,\"å¢ŀé«ĺ\":117015,\"æľ¬è½®\":117016,\"äº²çľ¼\":117017,\"é£İæ³¢\":117018,\"èĢģå¦Ī\":117019,\"æĶ¶è´¹æłĩåĩĨ\":117020,\"åĨħéĻĨ\":117021,\"æĮ¥åıĳ\":117022,\"åįĩåŃ¦\":117023,\"èĥ¸åīį\":117024,\"åģıè¿ľ\":117025,\"çº¯æ´ģ\":117026,\"æĸ½å·¥åįķä½į\":117027,\"èº«ä»·\":117028,\"è´¢åĬĽ\":117029,\"çº¶\":117030,\"è£ħçĶ²\":117031,\"æĺ¾ç¤ºåĻ¨\":117032,\"æ¯«åįĩ\":117033,\"æ·±çŁ¥\":117034,\"èĢ¶ç©\":117035,\"èĢ¶ç©Į\":117036,\"è¾ĥéĩı\":117037,\"åľ¨è¿ĩæ¸¡\":117038,\"åľ¨è¿ĩæ¸¡æľŁ\":117039,\"èĮĹ\":117040,\"ä¸Ģä¸ªæĺŁæľŁ\":117041,\"èĬ·\":117042,\"è´¿èµĤ\":117043,\"æ¿ķ\":117044,\"æĩĤäºĭ\":117045,\"ç§§\":117046,\"åħħå½ĵ\":117047,\"åĽ½ç«ĭ\":117048,\"èĬ±çĵ£\":117049,\"éĤĦè¦ģ\":117050,\"åħ¬åľĴ\":117051,\"è§¦åĬ¨\":117052,\"æ³°å·ŀ\":117053,\"ä»Ģä¹Īæł·\":117054,\"æ»ĭåħ»\":117055,\"è¯ĦåĪ¤\":117056,\"æĮ¥æīĭ\":117057,\"èĦĪ\":117058,\"å§¥å§¥\":117059,\"è¿Ĳè´¹\":117060,\"æ¯ħåĬĽ\":117061,\"å¿ĥæĻº\":117062,\"ä¸įæİĴéĻ¤\":117063,\"ç¬¬ä¸īä»£\":117064,\"éĢĢè´§\":117065,\"æĺŁéĻħ\":117066,\"æ°¸åĪ©\":117067,\"æĬ¤åį«\":117068,\"çıŃè½¦\":117069,\"è¨Ģè¡Į\":117070,\"ç¹ª\":117071,\"ä¸»åĬ¨æĢ§\":117072,\"å·¥ç¨ĭè´¨éĩı\":117073,\"éĥĬåĮº\":117074,\"ä¸Ģæłĭ\":117075,\"ä½Ĩå®ŀéĻħä¸Ĭ\":117076,\"ä¸īå¤§èģĮä¸ļ\":117077,\"åĳ¼åı«\":117078,\"å¥³åħĴ\":117079,\"è¯ģåĪ¸æĬķèµĦ\":117080,\"èĢĥæħ®\":117081,\"çĤ«èĢĢ\":117082,\"æ²»å¥½\":117083,\"åĺ¶\":117084,\"èĥ¤\":117085,\"åħīä¼ıåıĳçĶµ\":117086,\"åĩłæŃ¥\":117087,\"æīĢæīĢ\":117088,\"æīĢæīĢéķ¿\":117089,\"çħ§æł·\":117090,\"åĵ¥ä»¬\":117091,\"è¯Ľ\":117092,\"è¿Ļä¸ĢåĪ»\":117093,\"çŁ¿çī©è´¨\":117094,\"ä¸įå¾Ĺå·²\":117095,\"åĲĮçĽŁ\":117096,\"ç»Ĩå¾®\":117097,\"è·¯èĻİ\":117098,\"çĻ¾èĬ±\":117099,\"æ··æ²Į\":117100,\"ä¸Ĭæµ·è¯ģåĪ¸\":117101,\"éĢĢç¨İ\":117102,\"èµŀåı¹\":117103,\"æī®æ¼Ķæ¸¸æĪı\":117104,\"åĲįåĪĹ\":117105,\"åĲįåĪĹåīį\":117106,\"åĲįåĪĹåīįèĮħ\":117107,\"ç±³å°Ķ\":117108,\"ä»Ģä¹ĪåİŁåĽł\":117109,\"å®īåħ¨ä¿Ŀéļľ\":117110,\"ä¸Ģåıªæīĭ\":117111,\"ä¹³ä¸ļ\":117112,\"ä¸įçĶĺ\":117113,\"æĥħåķĨ\":117114,\"æĮ¡ä½ı\":117115,\"åİŁåĽłä¹ĭä¸Ģ\":117116,\"è¿Ļä¸¤å¤©\":117117,\"çĥĺçĦĻ\":117118,\"è±¬\":117119,\"ä½łä»¥ä¸º\":117120,\"æ²¡è§ģè¿ĩ\":117121,\"åĵªå®¶å¥½\":117122,\"åīįä»»\":117123,\"è¿Ľè´§\":117124,\"éĢĢåĽŀ\":117125,\"ä¸²èģĶ\":117126,\"èĩ³æĸ¼\":117127,\"åĨ°æ·ĩ\":117128,\"åĨ°æ·ĩæ·ĭ\":117129,\"æŁ¥çľĭè¯¦æĥħ\":117130,\"çı¾å¯¦\":117131,\"æİ¨æµĭ\":117132,\"æİ¥æīĭ\":117133,\"éļ¶å±ŀäºİ\":117134,\"åŁİå¸Ĥç¾¤\":117135,\"æĿİåħĪçĶŁ\":117136,\"çŁ¿æ³īæ°´\":117137,\"çī¹ä»·\":117138,\"æĽ´å¤ļç²¾å½©\":117139,\"ç¨ĭå¼ı\":117140,\"è¯»æĩĤ\":117141,\"å±ıèĶ½\":117142,\"å¥¥æŀĹ\":117143,\"å¥¥æŀĹåĮ¹\":117144,\"å¥¥æŀĹåĮ¹åħĭ\":117145,\"çº¢èĸ¯\":117146,\"å¥®\":117147,\"å®Ŀçİī\":117148,\"ç¶²çµ¡\":117149,\"è²§\":117150,\"æ¬§å¼ı\":117151,\"çĻ½ç³ĸ\":117152,\"èĩªçĦ¶çģ¾å®³\":117153,\"åĳĬè¯īå¥¹\":117154,\"å»ļ\":117155,\"çĤ¹åĩ»æŁ¥çľĭ\":117156,\"é£İæ¹¿\":117157,\"èµĦäº§éĩįç»Ħ\":117158,\"ä¹Łä¸įä¾ĭå¤ĸ\":117159,\"åįĬä¸ªå°ıæĹ¶\":117160,\"åĲ¸å¼ķæĽ´å¤ļ\":117161,\"æĹ¶éĹ´èĬĤçĤ¹\":117162,\"æĶ¶çº³\":117163,\"åĲ¸æ¯Ĵ\":117164,\"èĢģä¹¡\":117165,\"çĲħ\":117166,\"æľĢçµĤ\":117167,\"åıįæĦŁ\":117168,\"çĶ¨å¾®ä¿¡\":117169,\"çĶ¨å¾®ä¿¡æī«\":117170,\"éĢŁçİĩ\":117171,\"å¤§çĨĬçĮ«\":117172,\"åı¯æĥ³\":117173,\"åı¯æĥ³èĢĮ\":117174,\"åı¯æĥ³èĢĮçŁ¥\":117175,\"åĴ§\":117176,\"èµ°åħ¥\":117177,\"ç¢³éħ¸\":117178,\"èĮĥåĨ°\":117179,\"èĮĥåĨ°åĨ°\":117180,\"è¢«åĪ¤\":117181,\"ç§¯æŀģæİ¨åĬ¨\":117182,\"è¶³è¶³\":117183,\"ç²ĴåŃĲ\":117184,\"å¤§å®Ĺ\":117185,\"å¤§å®ĹåķĨåĵģ\":117186,\"ç½ĳç»ľç§ĳæĬĢ\":117187,\"æĽ¼åŁİ\":117188,\"å·²ä¹ħ\":117189,\"å·²ä¹ħçļĦ\":117190,\"ç§¦çļĩ\":117191,\"ç§¦çļĩå²Ľ\":117192,\"ä»»æķĻ\":117193,\"åĶ¯ç¾İ\":117194,\"æ·¡åĮĸ\":117195,\"æ¡ĤèĬ±\":117196,\"çŁ¥è¯ĨåĪĨåŃĲ\":117197,\"æĩĴå¾Ĺ\":117198,\"ä¸»åħ¬\":117199,\"è®¾è®¡çĲĨå¿µ\":117200,\"è³º\":117201,\"æīĢæıĲä¾Ľ\":117202,\"æīĢæıĲä¾Ľä¹ĭ\":117203,\"æĶ»åħĭ\":117204,\"åĤ¾\":117205,\"è¯Ńæ³ķ\":117206,\"åįĥåı¤\":117207,\"éĸĭæĶ¾\":117208,\"ç¬¬ä¸ĢèĬĤ\":117209,\"éĤĦæ²Ĵ\":117210,\"éĢĥçĶŁ\":117211,\"æ³Ĺ\":117212,\"åİ¿å§Ķä¹¦è®°\":117213,\"ä½ľèĢħæīĢæľī\":117214,\"çħ½\":117215,\"ç»ħ\":117216,\"æłħ\":117217,\"æľ´ç´ł\":117218,\"çĳķçĸµ\":117219,\"åĮħåĮħ\":117220,\"æ°ĳä¸»åħļ\":117221,\"ä¸įè¿ľå¤Ħ\":117222,\"å¥ĩå¼Ĥ\":117223,\"åĺ»åĺ»\":117224,\"æī¼\":117225,\"ç¿»å¼Ģ\":117226,\"æĢİèĥ½\":117227,\"éģ´éĢī\":117228,\"è§£éĩĭ\":117229,\"å¹¼ç¨ļ\":117230,\"è¦ģå¥½å¥½\":117231,\"è¶´åľ¨\":117232,\"ç´¢åıĸ\":117233,\"ç»ĪçĶŁ\":117234,\"åħ¨æµģç¨ĭ\":117235,\"éģ©çķ¶\":117236,\"åįıè°ĥåıĳå±ķ\":117237,\"æĬ¥ä»ĩ\":117238,\"ç§ĳæĬĢåĽŃ\":117239,\"ä»Ģä¹Īéĥ½ä¸į\":117240,\"æľĢåĲİä¸Ģæ¬¡\":117241,\"ç»Ļäººä¸Ģç§į\":117242,\"æł¸å®ļ\":117243,\"è¢«åĪĹåħ¥\":117244,\"æĦıæĥ³ä¸įåĪ°\":117245,\"èĢĥæŁ¥\":117246,\"åľ¨æŃ¤ä¹ĭåīį\":117247,\"æīĵçĲĥ\":117248,\"è¶ĬæĿ¥è¶Ĭå°ĳ\":117249,\"å®ļå¾ĭ\":117250,\"è¡ĮæĶ¿æľºåħ³\":117251,\"ä½ıæĪ¿åħ¬ç§¯\":117252,\"å°ıå§Ĳå§Ĳ\":117253,\"ä¸īèı±\":117254,\"ä¿®è¡¥\":117255,\"èŀĥèŁ¹\":117256,\"è¥¿çĶ²\":117257,\"æĢł\":117258,\"çŃīå¤ļé¡¹\":117259,\"äº§ä¸ļéĽĨèģļ\":117260,\"ä»·æł¼ä¸Ĭæ¶¨\":117261,\"åħ¬åħ±åľºæīĢ\":117262,\"è¢ĭåŃĲ\":117263,\"æĨ§æĨ¬\":117264,\"çļĦæĸ¹å¼ıæĿ¥\":117265,\"åĪ°è´¦\":117266,\"çģ½\":117267,\"å·´èı²\":117268,\"å·´èı²çī¹\":117269,\"æ¼Ķä¹ł\":117270,\"èŃ¦ç¤ºæķĻèĤ²\":117271,\"çķıæĥ§\":117272,\"å¼ķæµģ\":117273,\"æĶ¶æĶ¯\":117274,\"å±Ĥåĩº\":117275,\"å±Ĥåĩºä¸į\":117276,\"å±Ĥåĩºä¸įç©·\":117277,\"æĳĩæ»ļ\":117278,\"è¾¦çĲĨ\":117279,\"çºµè§Ĥ\":117280,\"æķĳæµİ\":117281,\"å®¶éĥ½çŁ¥éģĵ\":117282,\"åĮ¯\":117283,\"å°ıé¸Ł\":117284,\"ä»»åĭĻ\":117285,\"è®¡åħ¥\":117286,\"ç«ŀéĢī\":117287,\"å¼ĢèįĴæĹ¶æľŁ\":117288,\"åĳ¨æģ©\":117289,\"åĳ¨æģ©æĿ¥\":117290,\"äº¤ç»ĩ\":117291,\"çķ¢æ¥Ń\":117292,\"æł¹æį®èĩªå·±\":117293,\"æĸ°äººçİ©å®¶\":117294,\"åŃµåĮĸåĻ¨\":117295,\"éĩĩæļĸ\":117296,\"å¹³åĿĩæ°´å¹³\":117297,\"åħ¬å¼Ģè¯¾\":117298,\"å¤±åĪ©\":117299,\"ä¼ºæľį\":117300,\"çĬģ\":117301,\"å¿½æĤł\":117302,\"ä¸»è¦ģéĽĨä¸Ń\":117303,\"æ¤įæłĳ\":117304,\"æ¯ĹéĤ»\":117305,\"èĩºçģ£\":117306,\"åĩºåĽ½çķĻåŃ¦\":117307,\"æĬĹéľĩ\":117308,\"æĥ©æĪĴ\":117309,\"å¹´åºķåīį\":117310,\"åĴ¸éĺ³\":117311,\"æ°ĳå±ħ\":117312,\"å¤§çĲĨçŁ³\":117313,\"éĿ³\":117314,\"éķĸ\":117315,\"æ¸ħè¿ľ\":117316,\"è£ħè½½\":117317,\"èĩĢ\":117318,\"å½±ä¸ļ\":117319,\"å¼ŁåħĦ\":117320,\"æĤ²è§Ĥ\":117321,\"çĿĢçľ¼äºİ\":117322,\"æįįåį«\":117323,\"åī¥å¤º\":117324,\"ç¯Ĩ\":117325,\"å¾Īéķ¿æĹ¶éĹ´\":117326,\"è¥Ł\":117327,\"ç¬¬ä¸ĢçĻ¾\":117328,\"ä¸ĢåĪĨéĴ±\":117329,\"æĸ°éĹ»è®°èĢħ\":117330,\"éķ·æľŁ\":117331,\"æ³ķæĪĺç»ĦåĲĪ\":117332,\"è°ģçŁ¥éģĵ\":117333,\"èħ°éĥ¨\":117334,\"æ±īåł¡\":117335,\"åħ¥çĿ¡\":117336,\"åįĸæİī\":117337,\"æ¶Īè²»èĢħ\":117338,\"æĥ¯ä¾ĭ\":117339,\"æĥ³äºĨ\":117340,\"æĥ³äºĨæĥ³\":117341,\"èĢģæĹ§å°ıåĮº\":117342,\"ä¼łè¨Ģ\":117343,\"åĪĨæķ°çº¿\":117344,\"æµģæ³ª\":117345,\"ç»Ħç»ĩé¢Ĩå¯¼\":117346,\"äºļåĨĽ\":117347,\"å¢ŀåĢ¼æľįåĬ¡\":117348,\"å¾¹\":117349,\"ä¼¶\":117350,\"äºĽè®¸\":117351,\"å¸ĥèİ±\":117352,\"å¼ºæĤį\":117353,\"å®«å»·\":117354,\"ç»¿èĮ¶\":117355,\"åĮ¡\":117356,\"å¾ĪæŃ£å¸¸\":117357,\"æĺ¥å¤ı\":117358,\"æ¯Ļ\":117359,\"è¯Ħæ¯Ķ\":117360,\"åĩ¡äºĭ\":117361,\"æĬīæĭ©\":117362,\"åĢĴéľī\":117363,\"éĩįåº¦\":117364,\"åįıä¼ļä¼ļéķ¿\":117365,\"å¿§èĻĳ\":117366,\"ä¸ĭä¸Ģç¯ĩ\":117367,\"æ²ªæ·±\":117368,\"æĪİ\":117369,\"æīĵä»Ĺ\":117370,\"åįĪé¥Ń\":117371,\"å¹´é¾Ħæ®µ\":117372,\"ä¸ŃåĽ½è¶³çĲĥ\":117373,\"è®¾è®¡æĸ¹æ¡Ī\":117374,\"åºĶçĶ¨æŁ¥çľĭ\":117375,\"é¢ĦæĸĻ\":117376,\"åĹ¡\":117377,\"ç¥ĸçĪ¶\":117378,\"çļĦä¸Ģåĳĺ\":117379,\"æ´Ĺå¹²åĩĢ\":117380,\"åİĨåı²æĸ°\":117381,\"åİĨåı²æĸ°é«ĺ\":117382,\"çĭ¬åħ·\":117383,\"æħĭåº¦\":117384,\"æīĵäº¤\":117385,\"æīĵäº¤éģĵ\":117386,\"é»ĦçŁ³\":117387,\"çĽ¼æľĽ\":117388,\"çī§åľº\":117389,\"è½¬å¼¯\":117390,\"åįĩåįİ\":117391,\"åĨįä¹Łæ²¡æľī\":117392,\"èĭ±æīį\":117393,\"æĽ´åĲįä¸º\":117394,\"åĢŁçĶ¨\":117395,\"çºłéĶĻ\":117396,\"ç»Ŀå¯¹ä¸įä¼ļ\":117397,\"çİĭçīĮ\":117398,\"çĽĨåľ°\":117399,\"å¤±è°ĥ\":117400,\"å¥½è±¡\":117401,\"é³¥\":117402,\"ä¿Ŀä¿®\":117403,\"åĽĽä¸ªèĩªä¿¡\":117404,\"å¤´çļ®\":117405,\"åİŁåīĩ\":117406,\"æĬ¥æ¡Ī\":117407,\"å¥´éļ¶\":117408,\"å³Ļ\":117409,\"è°ĥæĸĻ\":117410,\"ä¹Łè¨±\":117411,\"èĲ½åĪ°\":117412,\"èĲ½åĪ°å®ŀ\":117413,\"èĲ½åĪ°å®ŀå¤Ħ\":117414,\"çĦļçĥ§\":117415,\"çĶŁæ´»çİ¯å¢ĥ\":117416,\"åºĶåıĬæĹ¶\":117417,\"è¶Ĭè¿ĩ\":117418,\"æĦŁè¬Ŀ\":117419,\"æĻ¯å¾·\":117420,\"æĻ¯å¾·éķĩ\":117421,\"çĬĢ\":117422,\"èº«éĤĬ\":117423,\"ç¨İåĬ¡æĢ»å±Ģ\":117424,\"åĩĢåľŁ\":117425,\"ä¾µåįł\":117426,\"åĬ¨å·¥\":117427,\"å¹´ä¹ĭ\":117428,\"å¹´ä¹ĭä¹ħ\":117429,\"ç¬¬äºĮèĬĤ\":117430,\"åĬ¨çī©åĽŃ\":117431,\"ç¬¬ä¸Ģä¹¦è®°\":117432,\"éħļ\":117433,\"çĶŁäº§è®¾å¤ĩ\":117434,\"æŁĲç§įç¨ĭåº¦\":117435,\"åľŃ\":117436,\"åĩŃåĢŁçĿĢ\":117437,\"éĺħè§Ī\":117438,\"çĻ½æ²Ļ\":117439,\"æ²¹çĥŁ\":117440,\"çªģçł´åı£\":117441,\"åıĹå½±åĵį\":117442,\"åı¯ä»¥æĽ´å¥½\":117443,\"å³°åĢ¼\":117444,\"æĿĤè´¨\":117445,\"å®¿è¿ģ\":117446,\"çĽĺæ´»\":117447,\"æ¿Ģèµ·\":117448,\"åĦ¿ç§ĳ\":117449,\"åĿĲèĲ½åľ¨\":117450,\"æĮªå¨ģ\":117451,\"æµ·å²Ľ\":117452,\"ç»Łç»Ł\":117453,\"éĻ¨\":117454,\"ä¼ĺäºİ\":117455,\"å°Īå®¶\":117456,\"ä¸ĢéĤĬ\":117457,\"èĲĬ\":117458,\"äºĨä¸Ģåı£\":117459,\"æ²ĥå°Ķæ²ĥ\":117460,\"æŃ£å¸¸ä½¿çĶ¨\":117461,\"æĻ®éģįåŃĺåľ¨\":117462,\"ä¸°æ»¡\":117463,\"çĶ»åį·\":117464,\"åºĶæĶ¶\":117465,\"åºĶæĶ¶è´¦\":117466,\"åºĶæĶ¶è´¦æ¬¾\":117467,\"å®Įæķ´çĥŃ\":117468,\"å®Įæķ´çĥŃæ¦ľ\":117469,\"æ³¨è§Ĩ\":117470,\"çĨĦ\":117471,\"èº¬\":117472,\"éĶĢåĶ®äººåĳĺ\":117473,\"è¶ĭåĲĳ\":117474,\"çĦ¦æĢ¥\":117475,\"åįģå¹´åīį\":117476,\"ä¼łç»Łäº§ä¸ļ\":117477,\"è³ªéĩı\":117478,\"åĩ¤åĩ°ç½ĳ\":117479,\"èµĦæºĲæķ´åĲĪ\":117480,\"æ¶Įåħ¥\":117481,\"æĸĩåĮĸä¼łæĴŃ\":117482,\"çķĮç¬¬ä¸Ģ\":117483,\"æ°´æ³µ\":117484,\"å®«æ®¿\":117485,\"æİ¢å¯»\":117486,\"ä¿®åīª\":117487,\"æĦıè¦ĭ\":117488,\"ç´Ĭä¹±\":117489,\"æĽī\":117490,\"çĻ½è¡£\":117491,\"èĻİåį«\":117492,\"ç´§æī£\":117493,\"å¤Ħå¤Ħéķ¿\":117494,\"åĪĽå»ºå·¥ä½ľ\":117495,\"çº¢æŀ£\":117496,\"é¥¼å¹²\":117497,\"äºĨåįĬå¤©\":117498,\"ä¼ļå½±åĵįåĪ°\":117499,\"çĽ¸ä¿¡å¤§å®¶\":117500,\"èħ¾é£ŀ\":117501,\"å°±å¦ĤåĲĮ\":117502,\"ä¸ĭéĿ¢å°ıç¼ĸ\":117503,\"æ°ĳèĲ¥ç»ıæµİ\":117504,\"æĻ¦\":117505,\"è£ħæī®\":117506,\"é»ĳå¤ľ\":117507,\"å¸¸å¾·\":117508,\"å·¥ä¸ļå¤§åŃ¦\":117509,\"æĺİçŁ¥\":117510,\"éĺŁåĳĺä»¬\":117511,\"åĲ¬è¯¾\":117512,\"æ¯ıéļĶ\":117513,\"çľŁæĺ¯å¤ª\":117514,\"åĲĪä½ľåħ±èµ¢\":117515,\"çĲĨåıĳ\":117516,\"æīįå¹²\":117517,\"çľĭèµ·ä¾Ĩ\":117518,\"æ®¿ä¸ĭ\":117519,\"å®īéĺ³\":117520,\"æīĢäº§çĶŁçļĦ\":117521,\"éĽĩä½£\":117522,\"æĬ¬èµ·å¤´\":117523,\"æį®æĬ¥éģĵ\":117524,\"éļĨéĩįä¸¾è¡Į\":117525,\"äº¤éĶĻ\":117526,\"è¶ħé¢Ŀ\":117527,\"åĮĸçĸĹ\":117528,\"é¡Ĩ\":117529,\"çºµæ·±\":117530,\"çĪ±åĽ½ä¸»ä¹ī\":117531,\"éĻ¢åī¯éĻ¢éķ¿\":117532,\"è®³\":117533,\"çľŁæŃ£åģļåĪ°\":117534,\"åŃ¤åįķ\":117535,\"èĩªçĦ¶èĢĮ\":117536,\"èĩªçĦ¶èĢĮçĦ¶\":117537,\"ä¿®èº«\":117538,\"èĬ¹\":117539,\"æģ¯æģ¯\":117540,\"æģ¯æģ¯çĽ¸åħ³\":117541,\"é©¾æł¡\":117542,\"æİ©é¥°\":117543,\"æ³½è¿ŀ\":117544,\"æ³½è¿ŀæĸ¯åŁº\":117545,\"ä¸¾æŃ¢\":117546,\"ç®¡çĲĨä½ĵåĪ¶\":117547,\"åħ¶ä¸Ńä¹ĭä¸Ģ\":117548,\"æĿ¾å¼Ľ\":117549,\"æĭ¦æĪª\":117550,\"åį«åģ¥\":117551,\"åį«åģ¥å§Ķ\":117552,\"ä»İåİ»å¹´\":117553,\"åĤ¢\":117554,\"è´Ńç¥¨\":117555,\"åĽ¾æłĩ\":117556,\"æ²³è¥¿\":117557,\"æ°ĳæĶ¿å±Ģ\":117558,\"ç§ģèĲ¥\":117559,\"å¤ĸåĽ½è¯Ń\":117560,\"å¹²è´§\":117561,\"æĵ¦æĭŃ\":117562,\"åľ°ä¸Ń\":117563,\"åľ°ä¸Ńæµ·\":117564,\"æµĵæµĵ\":117565,\"æµĵæµĵçļĦ\":117566,\"å§ĭå»º\":117567,\"å§ĭå»ºäºİ\":117568,\"ç¶ĵæŃ·\":117569,\"è·¯æ¼Ķ\":117570,\"æļ´é£İ\":117571,\"åŁºè¾ħ\":117572,\"æī¶è´«å·¥ä½ľ\":117573,\"ä¸ĢçĽ´å¤Ħäºİ\":117574,\"æĥħè¶£\":117575,\"äºĮåŃ£åº¦\":117576,\"åİĮæģ¶\":117577,\"é¡ºåĪ©å®ĮæĪĲ\":117578,\"æŁ¥å°ģ\":117579,\"é¡¶ç«¯\":117580,\"ä¸įåŃķ\":117581,\"ä¸Ģå¤§åłĨ\":117582,\"è¢«æ·ĺæ±°\":117583,\"æĺ¯çĶ¨æĿ¥\":117584,\"æľĢåĲĪéĢĤ\":117585,\"äº®çľ¼\":117586,\"å¹¶ä¸įæĺ¯å¾Ī\":117587,\"ç§ĳçłĶéĻ¢\":117588,\"ç§ĳçłĶéĻ¢æīĢ\":117589,\"ç²Ł\":117590,\"é¢Īéĥ¨\":117591,\"é»ĺé»ĺåľ°\":117592,\"é«ĺä¸ŃçĶŁ\":117593,\"æĹıèĩªæ²»åİ¿\":117594,\"æķĻåŃ¦è´¨éĩı\":117595,\"æĪĺçģ«\":117596,\"åĿİåĿ·\":117597,\"æĲŃä¹ĺ\":117598,\"è¯ĹæĦı\":117599,\"åĪĳèŃ¦\":117600,\"åĩºæ±Ĺ\":117601,\"åįģåħŃæĿ¡\":117602,\"è¯·åıĬæĹ¶\":117603,\"åĨľä¸ļå¤§åŃ¦\":117604,\"èĲ½åı¶\":117605,\"æĢ»èĢĮè¨Ģ\":117606,\"æĢ»èĢĮè¨Ģä¹ĭ\":117607,\"æĿľåħ°\":117608,\"æĿľåħ°çī¹\":117609,\"éĻªä½ł\":117610,\"åħ¬æĬ¥\":117611,\"çķĻè¨ĢæĿ¿\":117612,\"éĺħåİĨ\":117613,\"ç«¶çĪŃ\":117614,\"ç»ĻåĪ«äºº\":117615,\"æĹ¥æĬ¥ç¤¾\":117616,\"åĿĲèĲ½\":117617,\"åĿĲèĲ½äºİ\":117618,\"éĩĳåŃĹ\":117619,\"éĩĳåŃĹå¡Ķ\":117620,\"åĽ¤\":117621,\"è¯Ŀåī§\":117622,\"æĮģç»Ńæİ¨è¿Ľ\":117623,\"æ¼ıæ°´\":117624,\"è©³ç´°\":117625,\"æĢĢæĬ±\":117626,\"åıĺå¹»\":117627,\"é¥¥é¥¿\":117628,\"éļĲèº«\":117629,\"ä¸ªèµĽåŃ£\":117630,\"åĵ¡å·¥\":117631,\"æģ¢å¤įæŃ£å¸¸\":117632,\"äºĨå¥½å¤ļ\":117633,\"æĺŁå·´\":117634,\"æĺŁå·´åħĭ\":117635,\"åħīçİ¯\":117636,\"å¸ħåĵ¥\":117637,\"çĻ½éĽª\":117638,\"ç¨įç¨į\":117639,\"è®¡æıĲ\":117640,\"æĦĽæĥħ\":117641,\"éİĸ\":117642,\"ä¿¡éĺ³\":117643,\"è§Ģå¯Ł\":117644,\"å¦Ĥæŀľä½łæĥ³\":117645,\"çĽ¸æ¯Ķä¹ĭä¸ĭ\":117646,\"è§£å¼Ģ\":117647,\"æīĵåį°æľº\":117648,\"èº«èº¯\":117649,\"ç²¾ç¥ŀæĸĩæĺİ\":117650,\"èĤ¡æĮĩ\":117651,\"å¾®åĪĽ\":117652,\"çº¢èĮ¶\":117653,\"èĩ´çĻĮ\":117654,\"æģ©æĸ½\":117655,\"èħ¿éĥ¨\":117656,\"å¤§åŀĭå¤ļäºº\":117657,\"å®īåĢį\":117658,\"è¾ħå¯¼åĳĺ\":117659,\"èĪªéģĵ\":117660,\"å¸ĥå°Ķ\":117661,\"åįĹå®ģå¸Ĥ\":117662,\"ä¸ĬçıŃæĹı\":117663,\"ä¾§ç»ĵæŀĦæĢ§\":117664,\"è¿½éļı\":117665,\"å½ĵåľ°æĶ¿åºľ\":117666,\"èµ°åĩºæĿ¥\":117667,\"éĩĳèŀįä¸ļ\":117668,\"ä¸Ľä¹¦\":117669,\"é¡¹çĽ®ç»ıçĲĨ\":117670,\"è¿ĩæĪ·\":117671,\"éª¨æŀ¶\":117672,\"è¡Ļ\":117673,\"ä»Ģéº½\":117674,\"èħĭ\":117675,\"è¦ģå®³\":117676,\"åľ¨åºĬä¸Ĭ\":117677,\"ä»£è¨Ģäºº\":117678,\"ä¸¦å°ĩ\":117679,\"åĲĦä¸ªæĸ¹éĿ¢\":117680,\"è°´è´£\":117681,\"åħ±æĮ¯\":117682,\"åį³å°ĨåĪ°æĿ¥\":117683,\"èĤºçĻĮ\":117684,\"ä¾ĽéĶĢ\":117685,\"ä¸ĽæŀĹ\":117686,\"èµĥ\":117687,\"åįģä½Ļå¹´\":117688,\"åĭĺæİ¢\":117689,\"éŁµåĳ³\":117690,\"èĭ¦ç¬ĳ\":117691,\"æľĢå¤§ç¨ĭåº¦\":117692,\"éĩįçĤ¹åħ³æ³¨\":117693,\"ä¹ĭä¸¾\":117694,\"æ»¡æĢĢ\":117695,\"åıĹåĪ°å½±åĵį\":117696,\"æĭĽæĬķæłĩ\":117697,\"è¡¥é½Ĳ\":117698,\"è¥¿çº¢\":117699,\"è¥¿çº¢æŁ¿\":117700,\"é¬§\":117701,\"è£ħåį¸\":117702,\"éĤ»éĩĮ\":117703,\"èĤĩäºĭ\":117704,\"æİĴæ¯Ĵ\":117705,\"åŃ¤åĦ¿\":117706,\"éĽ¶è·Ŀç¦»\":117707,\"å®ŀå¹²\":117708,\"çľĭæŁ¥çľĭ\":117709,\"æĶ¶è´¹ç«Ļ\":117710,\"ç»·\":117711,\"åħ¬çĽĬæĢ§\":117712,\"éĢĴç»Ļ\":117713,\"æĶ»æīĵ\":117714,\"æĺŁçº§éħĴåºĹ\":117715,\"æĺİåªļ\":117716,\"çį¨ç«ĭ\":117717,\"è¯Ŀè¯ŃæĿĥ\":117718,\"ä¸ĢæŃ¥ä¸ĢæŃ¥\":117719,\"ä¹¦æ³ķå®¶\":117720,\"æľªç»ıæİĪæĿĥ\":117721,\"çŁ³èĨı\":117722,\"åĩŃä»Ģä¹Ī\":117723,\"çļĦæĹ¥\":117724,\"çļĦæĹ¥åŃĲéĩĮ\":117725,\"è¯±äºº\":117726,\"çĻ¾åĪĨçĻ¾\":117727,\"èĪĪè¶£\":117728,\"å¼łåħĪçĶŁ\":117729,\"èĢģçĪ·åŃĲ\":117730,\"æ³¢çī¹\":117731,\"åŁºéĩĳä»½é¢Ŀ\":117732,\"æ²Ļåıĳä¸Ĭ\":117733,\"å¥ĭæĸĹçĽ®æłĩ\":117734,\"æ°¢èĥ½\":117735,\"æ²ĥå°ĶçİĽ\":117736,\"ç¾©åĭĻ\":117737,\"éŁ³ç®±\":117738,\"æ²īæµ¸\":117739,\"æ²īæµ¸åľ¨\":117740,\"èĭ±åľĭ\":117741,\"çģ¯çģ«\":117742,\"è¿Ľé¡¹\":117743,\"ä¸¤ç«¯\":117744,\"ä¹Ķä¸¹\":117745,\"èĦ¸é¢Ĭ\":117746,\"åıĳå±ķæ½ľåĬĽ\":117747,\"åĭķä½ľ\":117748,\"åĵĪä½Ľ\":117749,\"å®´ä¼ļ\":117750,\"æ§į\":117751,\"ç«ĭå¿Ĺ\":117752,\"ç¡ķå£«åŃ¦ä½į\":117753,\"åĭĭç«ł\":117754,\"è¿Ļåľºæ¯ĶèµĽ\":117755,\"æĮģå¹³\":117756,\"éķĢéĶĮ\":117757,\"èĭ±çī¹\":117758,\"èĭ±çī¹å°Ķ\":117759,\"æķĻèģĮå·¥\":117760,\"åĬŁåĬĽ\":117761,\"è¯¥æ¡Ī\":117762,\"ä¸Ģæ¢Ŀ\":117763,\"åĺīå¹´\":117764,\"åĺīå¹´åįİ\":117765,\"è¿«ä¸įåıĬ\":117766,\"è¿«ä¸įåıĬå¾ħ\":117767,\"è¿Ļä¸ªæĹ¶ä»£\":117768,\"ç²¾å½©æĴŃæĬ¥\":117769,\"äººèĦ¸\":117770,\"äººèĦ¸è¯ĨåĪ«\":117771,\"æ£Ģå¯Łå®ĺ\":117772,\"å°ıèħ¿\":117773,\"éĨĴçĽ®\":117774,\"åħļæĢ»\":117775,\"åħļæĢ»æĶ¯\":117776,\"æĪŁ\":117777,\"èĮ«çĦ¶\":117778,\"è±ĨæµĨ\":117779,\"ä¸»æ²»\":117780,\"éĿĴæµ·çľģ\":117781,\"åĪĳäºĭè´£ä»»\":117782,\"çł°\":117783,\"ä¹ĭæ¬ĬåĪ©\":117784,\"äºĶå®ĺ\":117785,\"è¿·æĥĳ\":117786,\"åħ¥åºĵ\":117787,\"å®¶çºº\":117788,\"å¼¹ç°§\":117789,\"åįģäºĶæĿ¡\":117790,\"ç»Ļå®Ŀå®Ŀ\":117791,\"èĪªç©ºèĪªå¤©\":117792,\"å¾Ģå¤ĸ\":117793,\"å¼ķåĬĽ\":117794,\"çľ¼çļ®\":117795,\"æ¶īè¶³\":117796,\"æĿ¥å®¾\":117797,\"åľ¨çº¿è§Ĵèī²\":117798,\"çĥŃéĶĢ\":117799,\"æµģéĢĿ\":117800,\"æ³¡æ³¡\":117801,\"éĻįå¹ħ\":117802,\"è´ŁéĿ¢å½±åĵį\":117803,\"çº¢æ¥¼\":117804,\"çº¢æ¥¼æ¢¦\":117805,\"éļĶçĿĢ\":117806,\"ä¾¥å¹¸\":117807,\"è®¸ä¹ħ\":117808,\"åĴĮçĿ¦\":117809,\"èŃ½\":117810,\"ä½¿çĶ¨èĢħæĪĸ\":117811,\"ä¹°åįķ\":117812,\"è¿´\":117813,\"é£İæīĩ\":117814,\"æķĻå¸«\":117815,\"æ¡ĮåŃĲä¸Ĭ\":117816,\"å¾Īæ¼Ĥäº®\":117817,\"åł±å°İ\":117818,\"ç¬¬ä¸ĢåŃ£åº¦\":117819,\"ç©©å®ļ\":117820,\"æĤ²åĵĢ\":117821,\"çĿĢåĬĽæīĵéĢł\":117822,\"æĮŁ\":117823,\"è·¯æ¡¥\":117824,\"åĳĲ\":117825,\"åľ£è¯ŀèĬĤ\":117826,\"çļĩåŃĲ\":117827,\"ä»ĩæģ¨\":117828,\"éħĿéħ¿\":117829,\"ä¸įéĹ´\":117830,\"ä¸įéĹ´æĸŃ\":117831,\"æĮĩå°ĸ\":117832,\"ä¸ŃåĽ½ç½ĳæ¸¸\":117833,\"åŀ£\":117834,\"æĦıè§ģå»ºè®®\":117835,\"æ¯ħçĦ¶\":117836,\"äº®åº¦\":117837,\"èģĶè°Ĭ\":117838,\"å½ķåħ¥\":117839,\"åĦ²\":117840,\"å¨ĺå®¶\":117841,\"ç§ĳå°Ķ\":117842,\"ä¹Łæ²¡ä»Ģä¹Ī\":117843,\"æł¹æį®ä¸įåĲĮ\":117844,\"åı¶ä¿®\":117845,\"åĢ¼å®Ī\":117846,\"æľ«ç«¯\":117847,\"åĪ¨\":117848,\"åĤµåĭĻ\":117849,\"èģ¯åĲĪ\":117850,\"å¥ĩå¹»\":117851,\"èĻļæŀĦ\":117852,\"é»Ħæĺı\":117853,\"å¹³åĿ¦\":117854,\"æµģæ°ĵ\":117855,\"æĸ°åŁºå»º\":117856,\"æĮ½æķĳ\":117857,\"åįİå°Ķ\":117858,\"åįİå°Ķè¡Ĺ\":117859,\"æľĢåıĹæ¬¢è¿İ\":117860,\"ç»Ńçº¦\":117861,\"å¼Ĭç«¯\":117862,\"éŃĶæ³ķå¸Ī\":117863,\"éŃĶæ³ķå¸ĪåĴĮ\":117864,\"åħ·ä½ĵåĨħå®¹\":117865,\"çĲīçĴĥ\":117866,\"æī©å®¹\":117867,\"èĮ¶åĽŃ\":117868,\"ä¸»ä¹īèĢħ\":117869,\"ç«ĭéĿ¢\":117870,\"æİ¥åıĹéĩĩè®¿\":117871,\"åĩºåħ¥å¢ĥ\":117872,\"ç§ĳåįı\":117873,\"éĴ³\":117874,\"çµĲæ§ĭ\":117875,\"ç»ĵæŀľæĺ¾ç¤º\":117876,\"åı°è´¦\":117877,\"å°±æĿ¥çľĭçľĭ\":117878,\"èĩªæķĳ\":117879,\"åıįæĩī\":117880,\"åİ»åĵªåĦ¿\":117881,\"è¿Ļé¦ĸ\":117882,\"è¿Ļé¦ĸæŃĮ\":117883,\"åĲ¬ä¼Ĺ\":117884,\"å¤ĸå£³\":117885,\"ä½ĵèĤ²é¦Ĩ\":117886,\"å¯¦æĸ½\":117887,\"èŀºä¸Ŀ\":117888,\"æĭīåįĩ\":117889,\"çĮĽåľ°\":117890,\"åħ¨åĽ½äººæ°ĳ\":117891,\"æĤīå°¼\":117892,\"æĹıç¾¤\":117893,\"åĽ¢åĳĺ\":117894,\"ä¸¤ä¸ªå°ıæĹ¶\":117895,\"åľ¨çİ©å®¶\":117896,\"åľ¨çİ©å®¶ä¸Ń\":117897,\"çĶľçĶľ\":117898,\"æĬķè¡Į\":117899,\"åįĶæľĥ\":117900,\"éĻ¡\":117901,\"åĬłå·¥åİĤ\":117902,\"æ¦ĨæŀĹ\":117903,\"æŃ»è§Ĵ\":117904,\"åĨħå¹ķ\":117905,\"æīĢæľīæĥħèĬĤ\":117906,\"åĪ·åį¡\":117907,\"æ°´èĤ¿\":117908,\"èĥĥåı£\":117909,\"å«Įå¼ĥ\":117910,\"æ²®ä¸§\":117911,\"ä¸īå¹´çº§\":117912,\"æ¶Ĥå±Ĥ\":117913,\"å¿ĥä»ª\":117914,\"å¿ĥä»ªçļĦ\":117915,\"å¤Ń\":117916,\"é¦ĸè½®\":117917,\"æĹłè®ºæĺ¯åħ¶\":117918,\"éĢıæ°Ķ\":117919,\"äºĮåįģäºĶ\":117920,\"ç®«\":117921,\"åĬŁåĬ³\":117922,\"çŃ¾ä¸ĭ\":117923,\"æ²īè¿·\":117924,\"æķĳåĳ½\":117925,\"éĹªéĹª\":117926,\"åĲĥäºı\":117927,\"å±ķåĵģ\":117928,\"åį³æĹ¶åıĳçĶŁ\":117929,\"ç¶ľ\":117930,\"ç¶ľåĲĪ\":117931,\"æłĩæĺİ\":117932,\"çľĭçĶµå½±\":117933,\"åħ¬ç«ł\":117934,\"éĺ¿æ£®\":117935,\"éĺ¿æ£®çº³\":117936,\"èº«åĪĽéĢł\":117937,\"èº«åĪĽéĢłçļĦ\":117938,\"æ¸Ľå°ĳ\":117939,\"åĢ¼å¾Ĺåħ³æ³¨\":117940,\"éĽ¶åĶ®åķĨ\":117941,\"æįĨç»ĳ\":117942,\"è¸ıåħ¥\":117943,\"èĽŁ\":117944,\"æŁ´çº³\":117945,\"èĢģåħµ\":117946,\"ç»¿èī²çİ¯ä¿Ŀ\":117947,\"é¹Ń\":117948,\"éº»æľ¨\":117949,\"æıŃçīĮ\":117950,\"è¿Ļæ¬¾è½¦\":117951,\"ç¾İå¾·\":117952,\"ç¾İå¾·åħ¬åı¸\":117953,\"æ¶§\":117954,\"è°ģçŁ¥\":117955,\"æ´ĭèĳ±\":117956,\"æ¯įæł¡\":117957,\"ä¸ĢéĹª\":117958,\"çĶ·ä¸»è§Ĵ\":117959,\"æĹłçº¿çĶµ\":117960,\"å±łå®°\":117961,\"æĺ¯éŁ©åĽ½\":117962,\"æĺ¯éŁ©åĽ½å¨±\":117963,\"å®¹è²Į\":117964,\"åĿĩä½¿åħ¶\":117965,\"å¤ªå¿«\":117966,\"å¹´çĶ±\":117967,\"å¹´çĶ±çĽĽ\":117968,\"èĭ¦èĭ¦\":117969,\"åĬĽè¿ĺæĺ¯\":117970,\"åĬĽè¿ĺæĺ¯èĩª\":117971,\"æĨ©\":117972,\"èģ¯çµ¡\":117973,\"åĶ¾\":117974,\"åħ·æľīæĪĺå£«\":117975,\"è¿½éĹ®\":117976,\"åłĨæĶ¾\":117977,\"åıįé©³\":117978,\"å®ŀäºĭæ±Ĥ\":117979,\"å®ŀäºĭæ±Ĥæĺ¯\":117980,\"åŃ¸éĻ¢\":117981,\"åįģåĩłä¸ª\":117982,\"æķĳæĬ¤\":117983,\"æķĳæĬ¤è½¦\":117984,\"ç½ĳç»ľä¼łæĴŃ\":117985,\"åįģåħ«å±Ĭ\":117986,\"éĥ¨åī¯\":117987,\"éĥ¨åī¯éĥ¨éķ¿\":117988,\"çĹ´è¿·\":117989,\"ç®¡çĲĨæĿ¡ä¾ĭ\":117990,\"èŀįä¸ºä¸Ģä½ĵ\":117991,\"æĢ»äº§åĢ¼\":117992,\"è³ĵ\":117993,\"ä¸ĥæĺŁ\":117994,\"çıŃç»Ħ\":117995,\"ç»Łé¢Ĩ\":117996,\"è¯·å¤§å®¶\":117997,\"éĩĳéĻµ\":117998,\"èĪħèĪħ\":117999,\"æµ·æ¹¾\":118000,\"æĸ½çŃĸ\":118001,\"äº«èªī\":118002,\"éº¥\":118003,\"ç«¯åįĪ\":118004,\"ç»¿åŁİ\":118005,\"ç¢ºä¿Ŀ\":118006,\"å·´æĭī\":118007,\"åĨĴçĿĢ\":118008,\"æħ·æħ¨\":118009,\"ä¸ªäººè§ĤçĤ¹\":118010,\"ä¹Ļçĥ¯\":118011,\"ç¡ħè°·\":118012,\"éĸĭå±ķ\":118013,\"å°ļä¹¦\":118014,\"åĿļéŁ§\":118015,\"åºµ\":118016,\"èĢģé¾Ħ\":118017,\"èĢģé¾ĦåĮĸ\":118018,\"çľ¨çľ¼\":118019,\"ç»¿æ°´\":118020,\"ç»¿æ°´éĿĴå±±\":118021,\"ä¹¦é¦Ļ\":118022,\"ä¸»åĬĽåĨĽ\":118023,\"æīįæĺ¯çľŁæŃ£\":118024,\"æĬ¢åħĪ\":118025,\"æĪĲå°±æĦŁ\":118026,\"éĩįæŀĦ\":118027,\"éĴ¢åİĤ\":118028,\"æĪĲä»½\":118029,\"èĬ±çº¹\":118030,\"ä¹ĭäºī\":118031,\"å¹²ç»Ĩèĥŀ\":118032,\"æĹ¢åı¯ä»¥\":118033,\"ç¹ģçĲĲ\":118034,\"æĦļèł¢\":118035,\"éĿŀå¸¸æĺİæĺ¾\":118036,\"ä½ĵå½©\":118037,\"æĬĢæ³ķ\":118038,\"æĿĨèıĮ\":118039,\"å¹¿æ³Ľåħ³æ³¨\":118040,\"åĮĹå®ĭ\":118041,\"å§Ĭå¦¹\":118042,\"åįıåĬŀ\":118043,\"æ·®åįĹ\":118044,\"çĥı\":118045,\"æ´ĹèĦ¸\":118046,\"åıĹè®¿\":118047,\"åıĹè®¿èĢħ\":118048,\"éĩįè¦ģåĽłç´ł\":118049,\"å½±è§Ĩåī§\":118050,\"ç»¼èīºèĬĤçĽ®\":118051,\"èľķåıĺ\":118052,\"äºĮçº¿\":118053,\"äºĮçº¿åŁİå¸Ĥ\":118054,\"ä¼Ĭå§ĭ\":118055,\"çıĬçĳļ\":118056,\"èĩªæŁ¥\":118057,\"åħ¥åĽŃ\":118058,\"åĩ¶æīĭ\":118059,\"åħ¬è¯ī\":118060,\"éģĩéļ¾\":118061,\"éĩĩçŁ¿çŃī\":118062,\"èĩªçĲĨ\":118063,\"åĸ·æ¶Ĥ\":118064,\"æī©åħħ\":118065,\"éĢıè§Ĩ\":118066,\"é«ĺéĢŁå¢ŀéķ¿\":118067,\"åĽ¾çĶ»\":118068,\"ç¾¹\":118069,\"èĤĩåºĨ\":118070,\"è¾ľè´Ł\":118071,\"èµĶä»ĺ\":118072,\"è·¡\":118073,\"åģ¥åº·æĪĲéķ¿\":118074,\"ä»¥ä¸ĬåŃ¦åİĨ\":118075,\"åıĸå¾Ĺä»¥åıĬ\":118076,\"æ²īç§¯\":118077,\"åįģä¹Ŀå±Ĭ\":118078,\"çĽ¸éĹľæľįåĭĻ\":118079,\"æī§åĭ¤\":118080,\"åī¯åİ¿éķ¿\":118081,\"å¯°\":118082,\"åģľæ»ŀ\":118083,\"æ·¹æ²¡\":118084,\"çŁ³çģ°\":118085,\"çį¸\":118086,\"åĢ¦\":118087,\"ç¾İåªĴ\":118088,\"æķĻæ¡Ī\":118089,\"åĬłçĽĸ\":118090,\"åħ¬å¼ĢèµĽ\":118091,\"å¥łåŁº\":118092,\"æĺĨèĻ«\":118093,\"çŀħ\":118094,\"ç£·éħ¸\":118095,\"äºīåĪĽ\":118096,\"çİĭæĻĵ\":118097,\"ç¼ĵåĨ²\":118098,\"åİļåİļ\":118099,\"åİļåİļçļĦ\":118100,\"æŀ£åºĦ\":118101,\"ç²¾çĽĬ\":118102,\"ç²¾çĽĬæ±Ĥ\":118103,\"ç²¾çĽĬæ±Ĥç²¾\":118104,\"åĪĨæĶ¯æľºæŀĦ\":118105,\"å®ŀæĸ½ç»ĨåĪĻ\":118106,\"æĸ°èµĽåŃ£\":118107,\"ç¸½çµ±\":118108,\"éĢłè¡Ģ\":118109,\"é¢ĩåħ·\":118110,\"é»ĦåŁĶ\":118111,\"è¡ĢèĦĤ\":118112,\"äº¤éĢļå·¥åħ·\":118113,\"å³¥\":118114,\"æĹıèĩªæ²»å·ŀ\":118115,\"å¯ºéĻ¢\":118116,\"ç¢ºå®ļ\":118117,\"æ¦Ĥå¿µèĤ¡\":118118,\"æĦŁå®ĺ\":118119,\"æŁľåı°\":118120,\"åĶĶ\":118121,\"çŀŃè§£ä¸¦\":118122,\"æĢ»ä»·\":118123,\"åĲ¸åħ¥\":118124,\"æĢ¼\":118125,\"æĻļéĹ´\":118126,\"å±Ĭæ¯ķä¸ļçĶŁ\":118127,\"çĶŁå§ľ\":118128,\"éĺħè¯»åħ¨æĸĩ\":118129,\"å¾ĹåĪ°æľīæķĪ\":118130,\"æĲľæķĳ\":118131,\"åİĨæĿ¥\":118132,\"èŃīæĺİ\":118133,\"åĥ»\":118134,\"èĨ³é£Ł\":118135,\"åĦĦåħĥ\":118136,\"æīĵåİĭ\":118137,\"å®¾å®¢\":118138,\"åķ¼\":118139,\"ä¸ĢçĻ¾å¤ļ\":118140,\"æ·±åħ¥äººå¿ĥ\":118141,\"æ¢ħå·ŀ\":118142,\"çłĶåŃ¦\":118143,\"åħ³ä¹İ\":118144,\"è¼Ľ\":118145,\"äº²åıĭ\":118146,\"éħįæĸĻ\":118147,\"æĪĳçĪ±ä½ł\":118148,\"è´¸æĺĵæĪĺ\":118149,\"æľīèī²\":118150,\"æľīèī²éĩĳå±ŀ\":118151,\"æįĲåĬ©\":118152,\"ä¸ºé¦ĸ\":118153,\"ä¸ºé¦ĸçļĦ\":118154,\"å¯ĮåĬĽ\":118155,\"çĶ·ç¥ŀ\":118156,\"é³³\":118157,\"æµĩæ°´\":118158,\"åĲ±\":118159,\"æĺİç¡®æıĲåĩº\":118160,\"åı¹äºĨ\":118161,\"åı¹äºĨåı£æ°Ķ\":118162,\"ç¤¼æĭľ\":118163,\"è¿Ļä¸ªåĲįåŃĹ\":118164,\"ä¿¡å¾Ĵ\":118165,\"å¿Ĺå¼º\":118166,\"éĻĲæĹ¶\":118167,\"æĶ¶è²»\":118168,\"åĨľå®¶ä¹Ĳ\":118169,\"å°ıé¾ĻèĻ¾\":118170,\"èĲ½å¹ķ\":118171,\"æ§Ł\":118172,\"åŃ¦éľ¸\":118173,\"æĪĸå¤ļ\":118174,\"æĪĸå¤ļæĪĸ\":118175,\"æĪĸå¤ļæĪĸå°ĳ\":118176,\"åº§è°Īä¼ļä¸Ĭ\":118177,\"æ¶¼\":118178,\"éŃĶçİĭ\":118179,\"å²±\":118180,\"é¡¶å±Ĥ\":118181,\"é¡¶å±Ĥè®¾è®¡\":118182,\"èĦĳåŃĲéĩĮ\":118183,\"éĻ¢åŃĲéĩĮ\":118184,\"è½©è¾ķ\":118185,\"èº«å¿ĥåģ¥åº·\":118186,\"èħĳ\":118187,\"éĹľæ³¨\":118188,\"åıĤåĬłä¼ļè®®\":118189,\"ä¸ŃåįİæĸĩåĮĸ\":118190,\"è¿½å¯»\":118191,\"å®īçĦ¶\":118192,\"é£Ļåįĩ\":118193,\"éŁŃèıľ\":118194,\"é¸¦\":118195,\"åĤ¨éĩı\":118196,\"çĶ·æĸ¹\":118197,\"å¤ĩä»½\":118198,\"æĳĶåĢĴ\":118199,\"æ¶¦æ»ĳæ²¹\":118200,\"éĢ¼è¿ĳ\":118201,\"çĶ³è¯ī\":118202,\"é¸Łç±»\":118203,\"çŁ³æ²¹åĮĸå·¥\":118204,\"åĿļæŀľ\":118205,\"è¿Ļå®¶ä¼Ļ\":118206,\"æĭĴä¸į\":118207,\"çľŁçļ®\":118208,\"è·ĿéĽ¢\":118209,\"è¿ĺæĮº\":118210,\"éĽķåĥı\":118211,\"åĪĿæģĭ\":118212,\"æıĲä¾ĽæĽ´å¤ļ\":118213,\"æŁ¥çľĭåħ¨æĸĩ\":118214,\"æķ°åŃĹè´§å¸ģ\":118215,\"åĸīåĴĻ\":118216,\"åı¦ä¸Ģä½į\":118217,\"åĤ¬åĮĸ\":118218,\"åĤ¬åĮĸåīĤ\":118219,\"ä»İæĿ¥æ²¡\":118220,\"å¯ĨåĪĩçĽ¸åħ³\":118221,\"éĥ¨ä¸»ä»»\":118222,\"äº§åĵģç»ıçĲĨ\":118223,\"ä¸¦åĲĮæĦı\":118224,\"èĲ½åħ¥\":118225,\"å±ıå¹ķä¸Ĭ\":118226,\"åħ¬åı¸ç«łç¨ĭ\":118227,\"æį¢åı¥è¯Ŀ\":118228,\"æį¢åı¥è¯Ŀè¯´\":118229,\"ä½įæĸ¼\":118230,\"ä½Ķ\":118231,\"åĩ»æĿĢ\":118232,\"çĽ¸è¾ĥ\":118233,\"çĽ¸è¾ĥäºİ\":118234,\"ç²½åŃĲ\":118235,\"åįĹæŀģ\":118236,\"å®«é¢Ī\":118237,\"è£ģåĳĺ\":118238,\"æĺİç»Ĩ\":118239,\"ä»·åĢ¼éĵ¾\":118240,\"åĽĽä¸ªæĸ¹éĿ¢\":118241,\"æĥħåĨµæĿ¥çľĭ\":118242,\"æĮĳåīĶ\":118243,\"æ®ĺ\":118244,\"æŀģåĬĽ\":118245,\"çĸĳéļ¾\":118246,\"æĬµæĬĹåĬĽ\":118247,\"æĢ¥éĢŁ\":118248,\"æĪĮ\":118249,\"ä½İä¼°\":118250,\"éĹªè¿ĩ\":118251,\"æģ¬\":118252,\"èµŀæī¬\":118253,\"ä»ĸå¦Ī\":118254,\"æĪĲä¸ºä¸ĢåĲį\":118255,\"æ´Ĺç¤¼\":118256,\"é¢Ħè®¡å°Ĩ\":118257,\"åħĪè¿Ľåįķä½į\":118258,\"è¼Ķ\":118259,\"éĢĥèĦ±\":118260,\"çİ°åŃĺ\":118261,\"èĢģèĻİæľº\":118262,\"åįģä¸ĥæĿ¡\":118263,\"åı¦ä¸ĢåįĬ\":118264,\"æ¸©æĥħ\":118265,\"åī¥ç¦»\":118266,\"ä¸ĸè´¸\":118267,\"å®ĺåı¸\":118268,\"å¾Īå·®\":118269,\"éĹ´è·Ŀ\":118270,\"è¯·æ³¨æĦı\":118271,\"åı²è¯Ĺ\":118272,\"åĪ©åĻ¨\":118273,\"è¿Ĳç®Ĺ\":118274,\"æ²¦ä¸º\":118275,\"è©²ä½¿çĶ¨èĢħ\":118276,\"èĮ¬\":118277,\"éĶ¦ç»£\":118278,\"åı²æĸĻ\":118279,\"çģµæ´»æĢ§\":118280,\"èģĶç¤¾\":118281,\"æĹłåĬ©\":118282,\"æĬĹæ°§åĮĸ\":118283,\"èıľèĤ´\":118284,\"éĢłèĪ¹\":118285,\"æİīèĲ½\":118286,\"å¤įæŁ¥\":118287,\"åĭĥåĭĥ\":118288,\"åĳ¼å£°\":118289,\"çµ¦äºĪ\":118290,\"åĲĮäºĭä»¬\":118291,\"ç½°\":118292,\"è¯ķæİ¢\":118293,\"åħ³éĶ®åŃĹ\":118294,\"æįĲçĮ®\":118295,\"ç»Łè®¡æķ°æį®\":118296,\"åĪĽä½ľèĢħ\":118297,\"ä¸ĭåįĬ\":118298,\"ä¸ĭåįĬåľº\":118299,\"æī¿æĭħè´£ä»»\":118300,\"ç«¯æŃ£\":118301,\"ç©¿è¡£\":118302,\"ä¼łçĲĥ\":118303,\"åĬ©éķ¿\":118304,\"åĩ±\":118305,\"éķ¶åµĮ\":118306,\"é£ŀç¿Ķ\":118307,\"è¾ĵåįµ\":118308,\"è¾ĵåįµç®¡\":118309,\"ä¸ĩåħ¬éĩĮ\":118310,\"æİ¨å¹¿åºĶçĶ¨\":118311,\"å¿«æ¨Ĥ\":118312,\"ç§½\":118313,\"èī°å·¨\":118314,\"åĲ¬å®Į\":118315,\"åĿļç¡¬\":118316,\"å¥¥åľ°\":118317,\"å¥¥åľ°åĪ©\":118318,\"é¢ĵ\":118319,\"èĻĲå¾ħ\":118320,\"ä¾Ľæ±Ĥ\":118321,\"éľīç´ł\":118322,\"ä¼ªè£ħ\":118323,\"ä¹¡åľŁ\":118324,\"åĩ¡æľ¬ç½ĳ\":118325,\"åĩ¡æľ¬ç½ĳæ³¨\":118326,\"ä¼ĬåĪ©\":118327,\"è¡¡æ°´\":118328,\"æĽ´åĥıæĺ¯\":118329,\"åĪĨéĴŁå·¦åı³\":118330,\"è¦ıæ¨¡\":118331,\"äºĶåĪĨéĴŁ\":118332,\"åºĹåĬłçĽŁ\":118333,\"åĽ°éĽ£\":118334,\"åħ³åģľ\":118335,\"æĢĿç»ª\":118336,\"åĴ½åĸī\":118337,\"çĽ¸ç¬¦\":118338,\"çĥ¦èºģ\":118339,\"æĻĤæľŁ\":118340,\"åĳĪçı¾\":118341,\"è§£æķ£\":118342,\"è¯±å¯¼\":118343,\"éļĶçĥŃ\":118344,\"çĮ¶\":118345,\"åįĹå®ĭ\":118346,\"æ·±åħ¥äºĨè§£\":118347,\"çŃĶçĸĳ\":118348,\"æĺ¼å¤ľ\":118349,\"åįĥä¼ı\":118350,\"åĬ³åĬ¡æ´¾éģ£\":118351,\"çº¢è±Ĩ\":118352,\"åĿıäºĭ\":118353,\"çĤ¹æ»´\":118354,\"å°±ä¸ļå²Ĺä½į\":118355,\"çº¦åĲĪ\":118356,\"åħįéĻ¤\":118357,\"éĢĨåĬ¿\":118358,\"éĩįéĩĳå±ŀ\":118359,\"å®ĺå®£\":118360,\"ä½İå»ī\":118361,\"æģ¨ä¸įå¾Ĺ\":118362,\"å¾Ĺå¤©\":118363,\"å¾Ĺå¤©çĭ¬\":118364,\"å¾Ĺå¤©çĭ¬åİļ\":118365,\"ä¸Ģå°ģä¿¡\":118366,\"æĬ½å¥ĸ\":118367,\"è¾Ĺè½¬\":118368,\"çķĻå®Ī\":118369,\"çķĻå®ĪåĦ¿ç«¥\":118370,\"çŃĶåį·\":118371,\"å·¨åŀĭ\":118372,\"æľĢå¥½ä¸įè¦ģ\":118373,\"æµĻæ±Łå¤§åŃ¦\":118374,\"æĨ¨\":118375,\"æı¡æīĭ\":118376,\"éĴĪç»ĩ\":118377,\"æİĴéª¨\":118378,\"çĤ½\":118379,\"å°ģè£ħ\":118380,\"åįĢåŁŁ\":118381,\"ç©ºæ°ĶåĩĢåĮĸ\":118382,\"åħīå½±\":118383,\"åĢĴå¡Į\":118384,\"å§ļæĺİ\":118385,\"æ¤įè¢«\":118386,\"åŃ¦åīį\":118387,\"åŃ¦åīįæķĻèĤ²\":118388,\"èĬĿåĬł\":118389,\"èĬĿåĬłåĵ¥\":118390,\"ç¼©æ°´\":118391,\"ä½Ł\":118392,\"åľ¨çº¿åĴ¨è¯¢\":118393,\"èµıæŀĲ\":118394,\"éĿĴèĽĻ\":118395,\"æĬ±ä½ı\":118396,\"èĮĤåĲį\":118397,\"åħ¨åĬĽæīĵéĢł\":118398,\"åįļå£«åŃ¦ä½į\":118399,\"æ²§å·ŀ\":118400,\"åĻ¢\":118401,\"æĿĤçī©\":118402,\"åĪ»çĶ»\":118403,\"æįħ\":118404,\"å¾®éĩı\":118405,\"å¾®éĩıåħĥç´ł\":118406,\"ä¸ĢåĽŀäºĭ\":118407,\"é¸¡èĤī\":118408,\"åĪ©æ¶¦çİĩ\":118409,\"æīįç®Ĺ\":118410,\"å¾®å¦Ļ\":118411,\"æ£µæłĳ\":118412,\"è´ªå©ª\":118413,\"åĩıåĢ¼\":118414,\"æ¢¦å¢ĥ\":118415,\"åı¯è§Ĩ\":118416,\"åı¯è§ĨåĮĸ\":118417,\"å¹¿å¤§å¸Ĥæ°ĳ\":118418,\"ä¸ĵä¸ļä»İäºĭ\":118419,\"ç»ıçº¬\":118420,\"ç´§çĽ¯\":118421,\"çŁ¥å·±\":118422,\"è¤ļ\":118423,\"æĸĩåĮĸåºķèķ´\":118424,\"åİ¦éĹ¨å¸Ĥ\":118425,\"ä¸´æ¸¯\":118426,\"å¯¹åħ¶çľŁå®ŀ\":118427,\"å²¸è¾¹\":118428,\"è¦ĸçĤº\":118429,\"æĬĹçĻĮ\":118430,\"åĶĲå®ĩ\":118431,\"ä¸įå¾Ĺè¶ħè¿ĩ\":118432,\"å¨ģæħĳ\":118433,\"æ¡Ĩæŀ¶åįıè®®\":118434,\"èµ°ç§ģ\":118435,\"åĽ¢å§Ķ\":118436,\"å¤¸å¤§\":118437,\"æ¬Ħ\":118438,\"ç¥ŀç»ıç³»ç»Ł\":118439,\"æĳĦå½±ä½ľåĵģ\":118440,\"èĬ¥\":118441,\"å®īåºĨ\":118442,\"æµ·æ»¨\":118443,\"æŀĦæĢĿ\":118444,\"çīµæĮĤ\":118445,\"åı©\":118446,\"éĺĲæĺİ\":118447,\"éģģ\":118448,\"ç²¾æ²¹\":118449,\"ç©´ä½į\":118450,\"æĬ¤èº«\":118451,\"æĬ¤èº«ç¬¦\":118452,\"æĮĩå°İ\":118453,\"åŃĺåľ¨ä¸Ģå®ļ\":118454,\"å¯ĤéĿĻ\":118455,\"æµ·å¤ĸå¸Ĥåľº\":118456,\"éĿ¡\":118457,\"ç»¼åĲĪå¾ģ\":118458,\"ä¿Ĳ\":118459,\"è¨Īç®Ĺ\":118460,\"æĺİæľĹ\":118461,\"äºļè¿Ĳ\":118462,\"äºļè¿Ĳä¼ļ\":118463,\"åīįçŀ»æĢ§\":118464,\"åĮ®ä¹ı\":118465,\"äº§ä¸ļæī¶è´«\":118466,\"èĦĳæµ·\":118467,\"èĦĳæµ·ä¸Ń\":118468,\"åħļçļĦé¢Ĩå¯¼\":118469,\"åĪĺéĤ¦\":118470,\"æµģæĺŁ\":118471,\"æĵĤ\":118472,\"æĶĢçĻ»\":118473,\"åĴĶ\":118474,\"ä¸Ģä¸ĭåŃĲå°±\":118475,\"è¯Ĭæ²»\":118476,\"ä½¿åĬ²\":118477,\"åīµä½ľ\":118478,\"éĵŃè®°\":118479,\"éĴ±è´¢\":118480,\"æĹ¥æĬ¥è®°èĢħ\":118481,\"çĥŁçģ«\":118482,\"èĥľè´Ł\":118483,\"åįļä¸»\":118484,\"ä¸ŃåĽ½èģĶéĢļ\":118485,\"ç½ĳç«Ļé¦ĸé¡µ\":118486,\"å°±å¤Ł\":118487,\"å°±å¤ŁäºĨ\":118488,\"æīĳåħĭ\":118489,\"å±ħå§Ķä¼ļ\":118490,\"è°¬\":118491,\"å®īåħ¨äºĭæķħ\":118492,\"åķĨçĶ¨è½¦\":118493,\"å¾ªçİ¯ç»ıæµİ\":118494,\"æ·¤\":118495,\"èĢĥè¯ģ\":118496,\"å®ĿèĹı\":118497,\"å®Įç»ĵ\":118498,\"çłĶåıĳæĬķåħ¥\":118499,\"å²ĳ\":118500,\"æģŃæķ¬\":118501,\"ç¦»éĢĢä¼ĳ\":118502,\"æ°´å¢¨\":118503,\"å©¶\":118504,\"è¯Ĺåı¥\":118505,\"å®ģæ³¢å¸Ĥ\":118506,\"å¼±çĤ¹\":118507,\"åģľçīĮ\":118508,\"å¥¶æ²¹\":118509,\"å¥ĩçº³æ²³\":118510,\"æĨĤ\":118511,\"ç¤¾ä¼ļå®ŀè·µ\":118512,\"è´Ŀå£³\":118513,\"çłĤæµĨ\":118514,\"èĪ¹åıª\":118515,\"å®£æī¬\":118516,\"ç»¼åĲĪæķ´æ²»\":118517,\"åĤĳ\":118518,\"æ°ĳæĹıæĸĩåĮĸ\":118519,\"éĩįçİ°\":118520,\"ç§¯æ·Ģ\":118521,\"åħ¬çĦ¶\":118522,\"çħī\":118523,\"çĽ¸èģļ\":118524,\"æ±¾\":118525,\"çº¹çĲĨ\":118526,\"çĩĥçħ¤\":118527,\"æŃ¤ç§į\":118528,\"ç¾İå¦Ĩ\":118529,\"åįĥçĵ¦\":118530,\"çĲĽ\":118531,\"é©¾é©¶è¯ģ\":118532,\"éĺ¶æ¢¯\":118533,\"ä¸Ŀä¸Ŀ\":118534,\"å¾Īå¤ļäºĭæĥħ\":118535,\"åħīéĺ´\":118536,\"èĳĹä½ľæ¬Ĭ\":118537,\"åħ§éĥ¨\":118538,\"çĽ¸å¯¹æĿ¥è¯´\":118539,\"éĸĴ\":118540,\"éľĩæħĳ\":118541,\"èªªè©±\":118542,\"æĨĳ\":118543,\"ç«¥è£ħ\":118544,\"ä½ıæĪ¿åĴĮ\":118545,\"ä½ıæĪ¿åĴĮåŁİ\":118546,\"å·²ç»ıè¶ħè¿ĩ\":118547,\"ä¾¦å¯Ł\":118548,\"çŁ¿çī©\":118549,\"ä¾Ľå¤§å®¶\":118550,\"çī¹éĤĢ\":118551,\"ç¨ĭåºıåĳĺ\":118552,\"çķľçī§ä¸ļ\":118553,\"æ°ª\":118554,\"çĳª\":118555,\"åĢĴåľ¨\":118556,\"åĢĴåľ¨åľ°\":118557,\"æ¯Ģ\":118558,\"æ¢¯éĺŁ\":118559,\"æİ¥èĳĹ\":118560,\"æĬĹèıĮ\":118561,\"è¤ĩ\":118562,\"ç¬Ļ\":118563,\"æ¯Ķä¸Ĭå¹´\":118564,\"é¸¡æ±¤\":118565,\"åŃ¦ä¹łæĪĲç»©\":118566,\"æĸĳæĸĵ\":118567,\"åħĪå¯¼\":118568,\"åĪĹä¸¾\":118569,\"è°ĥæŁ¥æĺ¾ç¤º\":118570,\"æ©«\":118571,\"ä¹Ŀåįģ\":118572,\"è°¢éŁµ\":118573,\"è·¨è¶Ĭå¼ı\":118574,\"å¥³æĢ§æľĭåıĭ\":118575,\"èĲ¥åħ»ä»·åĢ¼\":118576,\"å®ŀè·µç»ıéªĮ\":118577,\"èĭıå·ŀå¸Ĥ\":118578,\"çĵ¶åŃĲ\":118579,\"æĸ°çļĦä¸Ģ\":118580,\"æĸ°çļĦä¸Ģå¹´\":118581,\"æĺİæĻ°\":118582,\"å®łçĪ±\":118583,\"åŃĹç¬¬\":118584,\"æľĹè¯µ\":118585,\"çº³æĸ¯\":118586,\"éĢĨè¡Į\":118587,\"è«ĭæĤ¨\":118588,\"è«ĭæĤ¨æıĲä¾Ľ\":118589,\"èĥ¸æĢĢ\":118590,\"ç¬¬ä¸ĥå±Ĭ\":118591,\"å¼ºå£®\":118592,\"ä»£åŃķ\":118593,\"æ±¶å·Ŀ\":118594,\"å®¶åĸ»\":118595,\"å®¶åĸ»æĪ·\":118596,\"å®¶åĸ»æĪ·æĻĵ\":118597,\"èħ®\":118598,\"åĲ¯è¿ª\":118599,\"æĹłéļľç¢į\":118600,\"èĻķçĲĨåıĬ\":118601,\"æĿ¥åİĨ\":118602,\"å®ŀåĬ¡\":118603,\"ä¹Łéļıä¹ĭ\":118604,\"æĬĢèĥ½åŁ¹è®Ń\":118605,\"åŃ¤ç«ĭ\":118606,\"åīģ\":118607,\"éĥ´å·ŀ\":118608,\"æĶ¶æķĽ\":118609,\"éł»éģĵ\":118610,\"èį£å¹¸\":118611,\"èİ«è¿ĩäºİ\":118612,\"æŃ¤æĻĤ\":118613,\"çºªå§ĶçĽĳ\":118614,\"çºªå§ĶçĽĳå§Ķ\":118615,\"çĽ¸éĤ»\":118616,\"åı¦ä¸Ģè¾¹\":118617,\"çªĴæģ¯\":118618,\"æľīå¾Īå¤ļç§į\":118619,\"æ¯ıéĢ¢\":118620,\"éĹ®ä¸ĸ\":118621,\"ç´¯ç´¯\":118622,\"éĿĴæĺ¥æľŁ\":118623,\"è·¯åĨµ\":118624,\"åħĭèİ±\":118625,\"è¿Ħä»Ĭä¸ºæŃ¢\":118626,\"æĥĬå¥ĩ\":118627,\"è·¨åº¦\":118628,\"éħ¿éĢł\":118629,\"åĩĭ\":118630,\"è¿ĳä¸īå¹´\":118631,\"åĨħé©¬\":118632,\"åĨħé©¬å°Ķ\":118633,\"æıį\":118634,\"è¿Ľå±ķæĥħåĨµ\":118635,\"èĮ§\":118636,\"æľīåºıæİ¨è¿Ľ\":118637,\"æĢ»åĨłåĨĽ\":118638,\"æĪĲç»©åįķ\":118639,\"éĽ»è©±åıĬ\":118640,\"ç´§å¯Ĩç»ĵåĲĪ\":118641,\"åºĬä½į\":118642,\"é¹Ĭ\":118643,\"æķ£åıĳçĿĢ\":118644,\"åĭŁèµĦ\":118645,\"æ°¨éħ¸\":118646,\"å½©ç¥ŀ\":118647,\"è®Ģåıĸ\":118648,\"éĩįæ¸©\":118649,\"ä¸ŃåŃĺåľ¨çļĦ\":118650,\"ç¾İéºĹ\":118651,\"ä¸įæĸŃå¢ŀåĬł\":118652,\"è½®æµģ\":118653,\"æİ¥åĲ¬\":118654,\"å¹´äº§åĢ¼\":118655,\"åįĥåħĭ\":118656,\"æĪĺåľºä¸Ĭ\":118657,\"çħ§é¡§\":118658,\"å¹²éĥ¨éĺŁä¼į\":118659,\"åį°ç«ł\":118660,\"ä¸Ģèĩ´æĢ§\":118661,\"è¿ŀå¤ľ\":118662,\"åħħè£ķ\":118663,\"é»ĳåĲįåįķ\":118664,\"åĩĢæ°´\":118665,\"ä¸Ģå¤§æĹ©\":118666,\"åĮħè¢±\":118667,\"çĬ¯è§Ħ\":118668,\"çĲĨè«ĸ\":118669,\"æŀģæĺĵ\":118670,\"éª¸\":118671,\"å¨ĺå¨ĺ\":118672,\"åĽ¢åľĨ\":118673,\"äº¿åħĥä»¥ä¸Ĭ\":118674,\"åĪ©çĶ¨æĤ¨çļĦ\":118675,\"å¸¦æĿ¥æĽ´å¤ļ\":118676,\"ä¸Ńå¤®ç©ºè°ĥ\":118677,\"æľĪèĸª\":118678,\"çĮľæĥ³\":118679,\"åĪºå®¢\":118680,\"ä½ľæģ¯\":118681,\"åįķè°ĥ\":118682,\"äºĴåĪ©\":118683,\"å¦Ĥæľīä¾µæĿĥ\":118684,\"å°ıå·§\":118685,\"åįģåł°\":118686,\"åĵĪåĵĪåĵĪåĵĪ\":118687,\"è¾¹éĻħ\":118688,\"æłĩè¯Ń\":118689,\"åĪĩåħ¥çĤ¹\":118690,\"éĢĨè¢Ń\":118691,\"è¯ķåīĤ\":118692,\"ç»¿è±Ĩ\":118693,\"è®ļ\":118694,\"åŁºçĿ£å¾Ĵ\":118695,\"å£¬\":118696,\"åħ¨æĺİæĺŁ\":118697,\"éĢīç§Ģ\":118698,\"èĪĮå°ĸ\":118699,\"ä¸įåĲĮç±»åŀĭ\":118700,\"çĥŁåĽ±\":118701,\"çģµæ°Ķ\":118702,\"åĮºç®¡å§Ķä¼ļ\":118703,\"åĨľåī¯\":118704,\"åĨľåī¯äº§åĵģ\":118705,\"èĶļæĿ¥\":118706,\"æ²ªæĮĩ\":118707,\"åħ»æ®ĸæĪ·\":118708,\"æĸĹå¿Ĺ\":118709,\"é¦ĸé¢Ĩ\":118710,\"è¡Ģèħ¥\":118711,\"åĬłç´§\":118712,\"ä¸Ģèĩ´å¥½è¯Ħ\":118713,\"ç¬¬ä¸īèĬĤ\":118714,\"æī¬å°ĺ\":118715,\"äº¤éĢļæŀ¢çº½\":118716,\"éĽ¶ç¢İ\":118717,\"é»ĳæ´ŀ\":118718,\"çľĭä¸įæĩĤ\":118719,\"å±ŀå®ŀ\":118720,\"ä¸»åŁİåĮº\":118721,\"å¨Ľ\":118722,\"å¨Ľæ¨Ĥ\":118723,\"ç¬ĳæĦı\":118724,\"èĻ¹æ¡¥\":118725,\"åĲĦä¸ªçİ¯èĬĤ\":118726,\"çķ¥å¾®\":118727,\"èĢķèĢĺ\":118728,\"æľ¬åľºæ¯ĶèµĽ\":118729,\"æĪĲè´¥\":118730,\"éĢīèĤ¡\":118731,\"èªŀè¨Ģ\":118732,\"çŃĶè¾©\":118733,\"èĩªä¹ł\":118734,\"æ£º\":118735,\"ä¸ĩæ¬§åħĥ\":118736,\"åģľå·¥\":118737,\"å¯¹åħ¶è¿Ľè¡Į\":118738,\"ç§¯æŀģéħįåĲĪ\":118739,\"ä¹¾åĿ¤\":118740,\"å¦ĸæĢª\":118741,\"èļĮåŁł\":118742,\"èµĦäº§è¯Ħä¼°\":118743,\"è°ĥçļ®\":118744,\"éĻ¤å¤ķ\":118745,\"åĽ´å¢Ļ\":118746,\"æľįå½¹\":118747,\"æ·±æ¸Ĭ\":118748,\"é¢ĦåĪ¶\":118749,\"çĥ½\":118750,\"å®īç¨³\":118751,\"å»ºæŀĦ\":118752,\"çĭĻåĩ»\":118753,\"ä¸»åĭķè¨»åĨĬ\":118754,\"éĥ½æľīèĩªå·±\":118755,\"æİĴåĲįç¬¬ä¸Ģ\":118756,\"éº»è¾£\":118757,\"çĢļ\":118758,\"çĥŁèĬ±çĪĨ\":118759,\"çĥŁèĬ±çĪĨç«¹\":118760,\"èĩªçĦ¶ä¿ĿæĬ¤\":118761,\"ä»Ļå¢ĥ\":118762,\"ä¸ºäºĨéģ¿åħį\":118763,\"åĨ·åºĵ\":118764,\"è§£æĶ¾æĢĿæĥ³\":118765,\"åĪĿäºĮ\":118766,\"ä½ĵè´´\":118767,\"é¦ĸå¯Į\":118768,\"è¿ªæĭľ\":118769,\"æļĤç¼ĵ\":118770,\"æĶ¯æĮģåĬĽåº¦\":118771,\"ä¾¦æİ¢\":118772,\"é©¬åĪº\":118773,\"åĮĹæ±½\":118774,\"ç¹ŀ\":118775,\"è°İè¨Ģ\":118776,\"éĢ£çºĮ\":118777,\"å·³\":118778,\"ä»»ä½ķæĹ¶åĢĻ\":118779,\"è½¦èģĶç½ĳ\":118780,\"åįķé¡¹\":118781,\"å¸Ńåį·\":118782,\"å»ºçŃĳæĿĲæĸĻ\":118783,\"ä¸Ńç§ĭèĬĤ\":118784,\"ç¡ķå£«çłĶç©¶\":118785,\"ç§ģç«ĭ\":118786,\"åħļåĴĮæĶ¿åºľ\":118787,\"æľ¬æ¬¡äº¤æĺĵ\":118788,\"èººåľ¨åºĬä¸Ĭ\":118789,\"ç½ĳåıĭè¯Ħè®º\":118790,\"å¦Ŀ\":118791,\"å®³ç¾ŀ\":118792,\"åħ¬ç«ĭåĮ»éĻ¢\":118793,\"ä¸ŀ\":118794,\"çĶŁçī©è´¨\":118795,\"åºĶéĤĢ\":118796,\"æĬ½åıĸ\":118797,\"åĩłå¼ł\":118798,\"æĳĺç¼ĸ\":118799,\"ç»ĺæľ¬\":118800,\"è¯¦è§£\":118801,\"å¼ºç¡¬\":118802,\"æľĢåħĪè¿ĽçļĦ\":118803,\"æĭĽèĤ¡\":118804,\"æĭĽèĤ¡ä¹¦\":118805,\"åįĥæĸ¹\":118806,\"åįĥæĸ¹çĻ¾\":118807,\"åįĥæĸ¹çĻ¾è®¡\":118808,\"éħįéŁ³\":118809,\"é©¾çħ§\":118810,\"å¾ģæĪĺ\":118811,\"èªĵè¨Ģ\":118812,\"æĭľå¸Ī\":118813,\"æĭľå¸ĪåŃ¦\":118814,\"æĭľå¸ĪåŃ¦èīº\":118815,\"æĬ±åĽ¢\":118816,\"ç±³ç²ī\":118817,\"éĿŀå¸¸éĢĤåĲĪ\":118818,\"èĪªæµ·\":118819,\"å±¥çº¦\":118820,\"åįģåħ«æĿ¡\":118821,\"éĶ»éĢł\":118822,\"éĩįè¦ģä¸¾æİª\":118823,\"åıĳæĮ¥ä½ľçĶ¨\":118824,\"æ·ļ\":118825,\"äººç¤¾\":118826,\"äººç¤¾å±Ģ\":118827,\"è¯ķçĤ¹å·¥ä½ľ\":118828,\"éĺľéĺ³\":118829,\"æ¡ĥåľĴ\":118830,\"æ°ĳä¼ģ\":118831,\"æ´ģçĻ½\":118832,\"è´µå®¾\":118833,\"åħ¬ç¤¾\":118834,\"è§īæĤŁ\":118835,\"è®°å¿ĨåĬĽ\":118836,\"æľĥåĵ¡è¨»åĨĬ\":118837,\"æŃ¤æ¡Ī\":118838,\"éº»çĹ¹\":118839,\"çıĢ\":118840,\"æĸ©èİ·\":118841,\"çĶ·åŃ©åŃĲ\":118842,\"å±ĢéĻĲäºİ\":118843,\"åĭĺæŁ¥\":118844,\"åĲĥé¥±\":118845,\"èĬ¬åħ°\":118846,\"æ£ķèī²\":118847,\"ç¦ıç¥ī\":118848,\"çĶ³èĬ±\":118849,\"æµ·çĽĹ\":118850,\"èĶĳ\":118851,\"æĸĩåŃ¸\":118852,\"æ´»æĢ§çĤŃ\":118853,\"çĽ´éĢļè½¦\":118854,\"è°¢éĤĢ\":118855,\"èººçĿĢ\":118856,\"åľĥ\":118857,\"æ¯ıæĹ¥ç»ıæµİ\":118858,\"åħ¬åħ±æĸĩåĮĸ\":118859,\"è®²æķħäºĭ\":118860,\"å¯Łçľĭ\":118861,\"æĤłéĹ²\":118862,\"åľ°åĿª\":118863,\"æ¶Įçİ°åĩº\":118864,\"é«ĺçŃīéĻ¢æł¡\":118865,\"èĮĦåŃĲ\":118866,\"éĺ²åį«\":118867,\"ä¾ĭè¡Į\":118868,\"æĺ¾éľ²\":118869,\"æĸ°å¸¸æĢģ\":118870,\"ç»Ŀä½³\":118871,\"å¯Įæ°ĳ\":118872,\"ä»¥äººæ°ĳ\":118873,\"ä»¥äººæ°ĳä¸º\":118874,\"éĤ¢åı°\":118875,\"å±ķæ¼Ķ\":118876,\"çĻ¼å¸ĥ\":118877,\"è´Łè½½\":118878,\"åģıç¦»\":118879,\"æ°¸éģł\":118880,\"éĩįè¦ģåİŁåĽł\":118881,\"åįıä¼ļä¼ļåĳĺ\":118882,\"éļ¾æ°ĳ\":118883,\"çĶŁäº§è½¦éĹ´\":118884,\"çģµåĬ¨\":118885,\"ä¸¤å¹´åīį\":118886,\"æĸ¹åľĨ\":118887,\"æ´»ä¸ĭåİ»\":118888,\"ä¸ĸçķĮè§Ĥ\":118889,\"éªĹåıĸ\":118890,\"ç¾İè²Į\":118891,\"èĥ½çľĭåĩº\":118892,\"çĻ¼æı®\":118893,\"è§Ĥå½±\":118894,\"åīĥ\":118895,\"åĲĪèµĦåħ¬åı¸\":118896,\"å©§\":118897,\"å¹²æĹ±\":118898,\"åħŃä¸ªæľĪ\":118899,\"å°¤ä¸ºéĩįè¦ģ\":118900,\"èĤ½\":118901,\"ç§¦åĽ½\":118902,\"æīĺç¦ı\":118903,\"å»ºçŃĳå¸Ī\":118904,\"åįĩçº§æĶ¹éĢł\":118905,\"å°ıé¢Ŀ\":118906,\"å°ıé¢Ŀè´·æ¬¾\":118907,\"ä¸¤ä¸ªç»´æĬ¤\":118908,\"æĭįæĭį\":118909,\"åı¯çĸĳ\":118910,\"æį¢åıĸ\":118911,\"æŃ¦å£«\":118912,\"èµĸä»¥\":118913,\"èµĸä»¥çĶŁåŃĺ\":118914,\"æĮļ\":118915,\"æ®¿åłĤ\":118916,\"èĩªçĦ¶çķĮ\":118917,\"ç£ģåľº\":118918,\"å¦Ĥä½ķçľĭå¾ħ\":118919,\"ä»ĬæĹ¥å¤´æĿ¡\":118920,\"è¥¿åŁŁ\":118921,\"èİ·è¯Ħ\":118922,\"é¢¨æł¼\":118923,\"ä¿ĦåĽ½\":118924,\"æīĵæĭ¼\":118925,\"å®£ä¼łçīĩ\":118926,\"å¾Īæĸ¹ä¾¿\":118927,\"ä¾Ľç»Ļä¾§\":118928,\"çºªå¿µç¢ĳ\":118929,\"æ¯«åħĭ\":118930,\"èĬ³é¦Ļ\":118931,\"å·¥åķĨéĵ¶è¡Į\":118932,\"è¯·çĤ¹åĩ»\":118933,\"ç¼ª\":118934,\"æĹłæķ°æ¬¡\":118935,\"èį¯å¸Ī\":118936,\"èħ¸\":118937,\"æ¸¸èīĩ\":118938,\"åĮ¾\":118939,\"å·¡èĪª\":118940,\"æ²»çĲĨä½ĵç³»\":118941,\"èĲ¥éĢłèī¯å¥½\":118942,\"æ··æ·Ĩ\":118943,\"éĢļçķħ\":118944,\"åĬ³ç´¯\":118945,\"ä»ĵä½į\":118946,\"å¢ŀéķ·\":118947,\"éļĲçº¦\":118948,\"æĿĤå¿Ĺç¤¾\":118949,\"åħ»èĤ²\":118950,\"åı¯èĥ½åıĳçĶŁ\":118951,\"èĢĥè©¦\":118952,\"è¥¿ä¾§\":118953,\"åĬłåĢį\":118954,\"ä¸»æĮģåı¬å¼Ģ\":118955,\"çķ¢ç«Ł\":118956,\"éĹ®è¯¢\":118957,\"æµ·æ£ł\":118958,\"èĹ©\":118959,\"æ³¨æĺİæĿ¥æºĲ\":118960,\"æ£Ģçĸ«\":118961,\"è¯·åģĩ\":118962,\"æĬļæĳ¸\":118963,\"èĵĦçĶµæ±ł\":118964,\"è·Łä¸įä¸Ĭ\":118965,\"çİ°ä»£ç¤¾ä¼ļ\":118966,\"çŃ¹èµĦ\":118967,\"ä½ĵèĤ²å½©ç¥¨\":118968,\"å»¶è¯¯\":118969,\"è¾Ľè¾£\":118970,\"éĿ¢å®¹\":118971,\"åį°è®°\":118972,\"çģŃäº¡\":118973,\"ç´łé£Ł\":118974,\"åħ´èĩ´\":118975,\"éľĢè¦ģçĶ¨\":118976,\"éľĢè¦ģçĶ¨åĪ°\":118977,\"å®Ŀå¦Ī\":118978,\"ç£ĭåķĨ\":118979,\"éļ¶å±ŀ\":118980,\"è´¡çĮ®åĬĽéĩı\":118981,\"åħ¬åħ±èµĦæºĲ\":118982,\"å¤§éĺª\":118983,\"åĨĽè®Ń\":118984,\"æĤ¬å¿µ\":118985,\"ç¤¾ä¼ļç¨³å®ļ\":118986,\"å¹²äºĭåĪĽä¸ļ\":118987,\"æľīæĿ¡ä»¶\":118988,\"æľīæĿ¡ä»¶çļĦ\":118989,\"ä¸Ģå¹´ä¸Ģåº¦\":118990,\"åİ¥\":118991,\"å¼ºå¥¸\":118992,\"è±ªè½¦\":118993,\"æİĮæŁľ\":118994,\"æ°´åĪ©å·¥ç¨ĭ\":118995,\"å³ª\":118996,\"ç§¯æŀģä½ľçĶ¨\":118997,\"æµ·æ·Ģ\":118998,\"æµ·æ·ĢåĮº\":118999,\"çĥŃæĴŃ\":119000,\"åĿļæĮģä¸įæĩĪ\":119001,\"åıĮèĦļ\":119002,\"ç»ŁæĪĺ\":119003,\"ä»»ä½ķäººéĥ½\":119004,\"åľ°ä¸ĭå®¤\":119005,\"åĨ¶çĤ¼\":119006,\"è°ħè§£\":119007,\"æ¸ĶèĪ¹\":119008,\"å¤ªéĺ³åŁİ\":119009,\"è¢«æįķ\":119010,\"è®¡ç®ĹåĻ¨\":119011,\"è¥¿åĮ»\":119012,\"èĪĴå¿ĥ\":119013,\"æ¡¦\":119014,\"éģ²\":119015,\"åĬĳ\":119016,\"è¨Ĺ\":119017,\"èİº\":119018,\"åĸ¬\":119019,\"çĵ¯\":119020,\"åĺĺ\":119021,\"åłķ\":119022,\"æķĿ\":119023,\"åĳ¦\":119024,\"èĭŀ\":119025,\"æŃ¹\":119026,\"æĵ¬\":119027,\"æ£Ħ\":119028,\"èĪµ\":119029,\"å¥ª\":119030,\"çļĭ\":119031,\"æĶ¸\":119032,\"åľ©\":119033,\"ç¤Ļ\":119034,\"ç¢ĺ\":119035,\"éıĪ\":119036,\"æĦķ\":119037,\"ç¹³\":119038,\"èĺ¸\":119039,\"è²Ĥ\":119040,\"æ¼²\":119041,\"æĳ¹\":119042,\"æĶĿ\":119043,\"åŃ¢\":119044,\"èķŃ\":119045,\"é¨°\":119046,\"æ½¼\":119047,\"éħ°\":119048,\"æĴ¥\":119049,\"è¹¬\":119050,\"é¨Ļ\":119051,\"è¸¹\":119052,\"éģĲ\":119053,\"çĺĢ\":119054,\"èĽ¤\":119055,\"æĤĸ\":119056,\"çĴŀ\":119057,\"ç£Ĳ\":119058,\"æİ°\":119059,\"è¾Ĭ\":119060,\"å¾ĳ\":119061,\"æİĸ\":119062,\"éģŀ\":119063,\"éĤ¸\":119064,\"éĽı\":119065,\"æĨİ\":119066,\"æľ½\":119067,\"çį»\":119068,\"ç®Ķ\":119069,\"è¤¶\":119070,\"æļ¢\":119071,\"æĺµ\":119072,\"çıĤ\":119073,\"æĤ¸\":119074,\"åģµ\":119075,\"åĻľ\":119076,\"å£¯\":119077,\"æĴ®\":119078,\"æģį\":119079,\"å©ķ\":119080,\"ç¯±\":119081,\"éĺĻ\":119082,\"çīł\":119083,\"è£ĺ\":119084,\"è³¢\":119085,\"éĩľ\":119086,\"éĵł\":119087,\"èİĺ\":119088,\"æ®Ĩ\":119089,\"çĻ¸\":119090,\"è´ı\":119091,\"ç²±\":119092,\"å«¡\":119093,\"åĨ¢\":119094,\"è¤Ĵ\":119095,\"æĩĬ\":119096,\"éľĵ\":119097,\"å¡µ\":119098,\"æĭ£\":119099,\"å»Ł\":119100,\"é£½\":119101,\"é¢Į\":119102,\"åļİ\":119103,\"æ·º\":119104,\"èĨł\":119105,\"åİŃ\":119106,\"åļĩ\":119107,\"åĳĥ\":119108,\"çĴĭ\":119109,\"çŃ±\":119110,\"æĭ·\":119111,\"èį§\":119112,\"éĶ°\":119113,\"åŃ°\":119114,\"èĵĵ\":119115,\"èĨ½\":119116,\"æŀī\":119117,\"åĸ½\":119118,\"çĽĶ\":119119,\"çŃĲ\":119120,\"ç¾ļ\":119121,\"èħĮ\":119122,\"è¾«\":119123,\"æ³ĵ\":119124,\"çĶ¬\":119125,\"èŁ²\":119126,\"åĸª\":119127,\"å¦ĵ\":119128,\"è¬Ģ\":119129,\"çĤĬ\":119130,\"æĽľ\":119131,\"æ±Ĳ\":119132,\"è´Ī\":119133,\"èįĢ\":119134,\"æĬł\":119135,\"ç¢¾\":119136,\"æ«ĥ\":119137,\"éŀł\":119138,\"èĳĨ\":119139,\"ç¥¯\":119140,\"å½Ŀ\":119141,\"é¦į\":119142,\"åĮ£\":119143,\"æľŃ\":119144,\"åĿĤ\":119145,\"ä¿ĳ\":119146,\"èĵ®\":119147,\"çĳĽ\":119148,\"æīī\":119149,\"èĩŁ\":119150,\"è²«\":119151,\"çİ¥\":119152,\"æ·¼\":119153,\"åİ²\":119154,\"é³Į\":119155,\"å³Ń\":119156,\"åĳĽ\":119157,\"é§\":119158,\"é§Ĳ\":119159,\"éģ·\":119160,\"ä¿ª\":119161,\"æĢĤ\":119162,\"è¾į\":119163,\"å±į\":119164,\"åĭģ\":119165,\"å¥ļ\":119166,\"éļħ\":119167,\"éĴ´\":119168,\"è¼Ŀ\":119169,\"å®¦\":119170,\"èĲĥ\":119171,\"çĺĭ\":119172,\"æĨ¶\":119173,\"æĤħ\":119174,\"è¾Ļ\":119175,\"åĳľ\":119176,\"çłº\":119177,\"éĢŀ\":119178,\"æµļ\":119179,\"éĸ£\":119180,\"èĸ©\":119181,\"éĻĭ\":119182,\"çĤĻ\":119183,\"èªķ\":119184,\"ä¸Ł\":119185,\"é¹½\":119186,\"ç±Į\":119187,\"è´°\":119188,\"éĭª\":119189,\"çľ©\":119190,\"æĴĲ\":119191,\"èĨº\":119192,\"éŀĺ\":119193,\"ç¾²\":119194,\"çª®\":119195,\"ç´Ĳ\":119196,\"æ®´\":119197,\"çº¾\":119198,\"èºį\":119199,\"ç´ĭ\":119200,\"çĦĸ\":119201,\"çĶº\":119202,\"çī½\":119203,\"çĤ¯\":119204,\"ç¼Ķ\":119205,\"æ¯ĵ\":119206,\"å¬°\":119207,\"æ¢§\":119208,\"äºŁ\":119209,\"è¢ħ\":119210,\"çįĦ\":119211,\"è¿¥\":119212,\"æ¼¾\":119213,\"çĿĳ\":119214,\"ç¸¾\":119215,\"é¦ĭ\":119216,\"é¤ħ\":119217,\"æ¹Ħ\":119218,\"æĺĩ\":119219,\"æŀŃ\":119220,\"èĸ°\":119221,\"æŁĳ\":119222,\"æ¦»\":119223,\"åĻĹ\":119224,\"åĻ´\":119225,\"æ££\":119226,\"åĶ§\":119227,\"çĨ¹\":119228,\"è¼¯\":119229,\"å¢Ł\":119230,\"é²²\":119231,\"æĪĽ\":119232,\"èī¦\":119233,\"èĬ®\":119234,\"åĺŁ\":119235,\"å¸¥\":119236,\"å¿»\":119237,\"çĮĿ\":119238,\"å¯µ\":119239,\"è³¦\":119240,\"èĽ¾\":119241,\"æ»¾\":119242,\"çĤķ\":119243,\"éĵ¬\":119244,\"èĴ¿\":119245,\"éĴ¨\":119246,\"çĥĻ\":119247,\"ç²ķ\":119248,\"æĥ¦\":119249,\"æº§\":119250,\"é¢į\":119251,\"éħ£\":119252,\"å³¦\":119253,\"ç±ģ\":119254,\"çĥĥ\":119255,\"åĨĹ\":119256,\"åıģ\":119257,\"çĽ§\":119258,\"ç½µ\":119259,\"éĴĹ\":119260,\"å¬ī\":119261,\"è°ı\":119262,\"ç³§\":119263,\"è¾Ń\":119264,\"æ·¬\":119265,\"èŁĴ\":119266,\"è¯©\":119267,\"è¦ĥ\":119268,\"çĻĸ\":119269,\"é½Ĵ\":119270,\"çĪĲ\":119271,\"ç®į\":119272,\"ç¼İ\":119273,\"ç£º\":119274,\"è¯«\":119275,\"è¤²\":119276,\"æĵł\":119277,\"èĲ¦\":119278,\"çĿ¬\":119279,\"è°į\":119280,\"éĦ°\":119281,\"æł¾\":119282,\"é¡ı\":119283,\"ç¸±\":119284,\"æ¡¨\":119285,\"éĨ¬\":119286,\"è¥²\":119287,\"è®ª\":119288,\"å©º\":119289,\"èįŁ\":119290,\"åĮĿ\":119291,\"çĨł\":119292,\"èĽĬ\":119293,\"æ¸ļ\":119294,\"å´½\":119295,\"é²¤\":119296,\"åķ°\":119297,\"åĮķ\":119298,\"ä¸Ĳ\":119299,\"è®¥\":119300,\"åı½\":119301,\"åı¼\":119302,\"çļ¿\":119303,\"è¿Ĥ\":119304,\"åĲĨ\":119305,\"å±¹\":119306,\"èĩ¼\":119307,\"è®¹\":119308,\"é©®\":119309,\"çº«\":119310,\"æ±ŀ\":119311,\"æĬ¡\":119312,\"èĭĩ\":119313,\"åĲł\":119314,\"åĲŃ\":119315,\"åĲ®\":119316,\"å²ĸ\":119317,\"ä½ĥ\":119318,\"çĭĪ\":119319,\"åºĩ\":119320,\"åĲĿ\":119321,\"éĹ°\":119322,\"æ±¹\":119323,\"å¿±\":119324,\"æĭĦ\":119325,\"æĭĹ\":119326,\"èĮī\":119327,\"èĭĽ\":119328,\"èĮģ\":119329,\"çŁ¾\":119330,\"èĻı\":119331,\"åĳ»\":119332,\"åĴĦ\":119333,\"å¿¿\":119334,\"èĤ®\":119335,\"çĭŀ\":119336,\"çĸŁ\":119337,\"çĸĻ\":119338,\"çĸļ\":119339,\"æ³ŀ\":119340,\"å¸ļ\":119341,\"å±ī\":119342,\"è¿¢\":119343,\"é©¹\":119344,\"çİ·\":119345,\"çıĬó\":119346,\"çıĬół\":119347,\"çıĬółĦ\":119348,\"çıĬółĦģ\":119349,\"æĮİ\":119350,\"æĭ´\":119351,\"åŀĽ\":119352,\"èį¤\":119353,\"æ®ĥ\":119354,\"çĽ¹\":119355,\"åĵĨ\":119356,\"è´»\":119357,\"æ¯¡\":119358,\"çĭ°\":119359,\"çĭ¡\":119360,\"æŁĴ\":119361,\"æģĥ\":119362,\"è¯¬\":119363,\"è¢Ħ\":119364,\"è¯²\":119365,\"èļ¤\":119366,\"èĢĻ\":119367,\"åŁĤ\":119368,\"æįİ\":119369,\"æįĮ\":119370,\"æ¢Ĩ\":119371,\"éħĮ\":119372,\"çł¾\":119373,\"æ®ī\":119374,\"åĶł\":119375,\"æĻĮ\":119376,\"èļ£\":119377,\"èļª\":119378,\"èļĵ\":119379,\"é¸¯\":119380,\"åĶģ\":119381,\"åĶĨ\":119382,\"åĢĶ\":119383,\"èĪĢ\":119384,\"è±º\":119385,\"èĥ°\":119386,\"é¸µ\":119387,\"é¸³\":119388,\"é¦ģ\":119389,\"ç¾Ķ\":119390,\"æ¶£\":119391,\"æ¶ķ\":119392,\"æĤ¯\":119393,\"è¯½\":119394,\"è°Ĩ\":119395,\"ç¥Ł\":119396,\"ç»¢\":119397,\"æįº\":119398,\"æį¶\":119399,\"æį»\":119400,\"æİĤ\":119401,\"èıł\":119402,\"èĲ¤\":119403,\"éħĹ\":119404,\"çľ¶\":119405,\"åķĦ\":119406,\"èļ¯\":119407,\"èĽĢ\":119408,\"åĶ¬\":119409,\"å¸·\":119410,\"éĵĲ\":119411,\"éĵĽ\":119412,\"åģİ\":119413,\"å¾Ļ\":119414,\"èĦ¯\":119415,\"è±ļ\":119416,\"çĮĸ\":119417,\"çĹĬ\":119418,\"æ¶®\":119419,\"æĥŃ\":119420,\"æĤ´\":119421,\"æĥĭ\":119422,\"è°ļ\":119423,\"æı©\":119424,\"æĲĢ\":119425,\"æĲĶ\":119426,\"æ¦Ķ\":119427,\"æ¤Ń\":119428,\"éĽ³\":119429,\"åĸ³\":119430,\"è·Ľ\":119431,\"èľĵ\":119432,\"èľĴ\":119433,\"é¹ĥ\":119434,\"éĶĦ\":119435,\"çĶ¥\":119436,\"çŃı\":119437,\"çĮ©\":119438,\"çĮ¬\":119439,\"çĮ¾\":119440,\"çĹ¢\":119441,\"çĹª\":119442,\"æĥ°\":119443,\"çªĺ\":119444,\"è°¤\":119445,\"éļĺ\":119446,\"å©¿\":119447,\"é¹ī\":119448,\"çĳĻ\":119449,\"æĸŁ\":119450,\"æ¤¿\":119451,\"éħª\":119452,\"éĽ¹\":119453,\"åĹ¦\":119454,\"è··\":119455,\"è·º\":119456,\"è·¤\":119457,\"èľĪ\":119458,\"èľĹ\":119459,\"å¹Į\":119460,\"é¦ı\":119461,\"èªĬ\":119462,\"æ¼ĵ\":119463,\"è¤Ĥ\":119464,\"èĶĹ\":119465,\"èĶ¼\":119466,\"åħ¢\":119467,\"è£³\":119468,\"èľ»\":119469,\"èĿĩ\":119470,\"åĺĢ\":119471,\"éĶ¹\":119472,\"ç®ķ\":119473,\"ç®©\":119474,\"çĺ©\":119475,\"çĺŁ\":119476,\"æ¼±\":119477,\"å¯¥\":119478,\"éª¡\":119479,\"æĴµ\":119480,\"æĴ¬\":119481,\"è±Į\":119482,\"åĺ¹\":119483,\"èĿł\":119484,\"èĿĮ\":119485,\"èĿĹ\":119486,\"èĿĻ\":119487,\"éķĲ\":119488,\"ç¨¼\":119489,\"ç¯ĵ\":119490,\"èĨĽ\":119491,\"é²«\":119492,\"çĺª\":119493,\"é²¨\":119494,\"æĨĶ\":119495,\"ç¿©\":119496,\"è¤¥\":119497,\"ç¼Ń\":119498,\"åĻ©\":119499,\"çĵ¢\":119500,\"éľİ\":119501,\"è¸±\":119502,\"è¹Ĥ\":119503,\"èŁĨ\":119504,\"é¹¦\":119505,\"ç¯¡\":119506,\"çĺ¸\":119507,\"çª¿\":119508,\"ç¼°\":119509,\"èĹĲ\":119510,\"è¹ĭ\":119511,\"èŁĭ\":119512,\"èŁĢ\":119513,\"èµ¡\":119514,\"èĩĬ\":119515,\"é³Ħ\":119516,\"ç³ł\":119517,\"æĩ¦\":119518,\"åļ£\":119519,\"éķ°\":119520,\"é³į\":119521,\"ç°¸\":119522,\"çĻ£\":119523,\"é³ĸ\":119524,\"é¬ĵ\":119525,\"èłķ\":119526,\"éľ¹\":119527,\"èºı\":119528,\"é»¯\":119529,\"çĵ¤\":119530,\"çŁĹ\":119531,\"ä¹Ĥ\":119532,\"ä¹ľ\":119533,\"åħĢ\":119534,\"å¼ĭ\":119535,\"åŃĳ\":119536,\"åŃĵ\":119537,\"å¹º\":119538,\"äºĵ\":119539,\"å»¿\":119540,\"ä¸ı\":119541,\"åįħ\":119542,\"ä»ĥ\":119543,\"ä»ī\":119544,\"ä»Ĥ\":119545,\"åĪĪ\":119546,\"çĪ»\":119547,\"åįŀ\":119548,\"éĹ©\":119549,\"è®£\":119550,\"å¤¬\":119551,\"çĪ¿\":119552,\"æ¯ĭ\":119553,\"éĤĹ\":119554,\"éĤĽ\":119555,\"èī½\":119556,\"èī¿\":119557,\"åıµ\":119558,\"ä¸ķ\":119559,\"åĮľ\":119560,\"åĬ¢\":119561,\"åįŁ\":119562,\"åı±\":119563,\"åı»\":119564,\"ä»¨\":119565,\"ä»Ł\":119566,\"ä»¡\":119567,\"ä»«\":119568,\"ä»ŀ\":119569,\"åį®\":119570,\"æ°Ĳ\":119571,\"çĬ°\":119572,\"åĪį\":119573,\"éĤĿ\":119574,\"éĤĻ\":119575,\"è®¦\":119576,\"è®§\":119577,\"è®«\":119578,\"å°»\":119579,\"éĺ¡\":119580,\"å°ķ\":119581,\"å¼ģ\":119582,\"èĢĴ\":119583,\"çİİ\":119584,\"çİĳ\":119585,\"åľ¬\":119586,\"æī¦\":119587,\"åľª\":119588,\"åľ¹\":119589,\"æīª\":119590,\"åľ®\":119591,\"åľ¯\":119592,\"èĬĬ\":119593,\"èĬį\":119594,\"èĬĦ\":119595,\"èĬ¨\":119596,\"èĬĳ\":119597,\"èĬİ\":119598,\"èĬĹ\":119599,\"äºĺ\":119600,\"åİį\":119601,\"å¤¼\":119602,\"æĪį\":119603,\"å°¥\":119604,\"ä¹©\":119605,\"æĹ¯\":119606,\"æĽ³\":119607,\"å²Į\":119608,\"å±º\":119609,\"åĩ¼\":119610,\"åĽ¡\":119611,\"éĴĩ\":119612,\"ç¼¶\":119613,\"æ°ĺ\":119614,\"æ°ĸ\":119615,\"çīĿ\":119616,\"ä¼İ\":119617,\"ä¼Ľ\":119618,\"ä¼¢\":119619,\"ä½¤\":119620,\"ä»µ\":119621,\"ä¼¥\":119622,\"ä¼§\":119623,\"ä¼ī\":119624,\"ä¼«\":119625,\"åĽŁ\":119626,\"æ±Ĩ\":119627,\"åĪĸ\":119628,\"å¤Ļ\":119629,\"æĹ®\":119630,\"åĪİ\":119631,\"çĬ·\":119632,\"çĬ¸\":119633,\"èĪĽ\":119634,\"åĩ«\":119635,\"éĤ¬\":119636,\"é¥§\":119637,\"æ±Ķ\":119638,\"æ±ľ\":119639,\"æ±Ĭ\":119640,\"å¿ĸ\":119641,\"å¿ı\":119642,\"è®´\":119643,\"è®µ\":119644,\"è®·\":119645,\"èģ¿\":119646,\"èī®\":119647,\"åİ¾\":119648,\"å¦ģ\":119649,\"çº¡\":119650,\"çº£\":119651,\"çº¥\":119652,\"çº¨\":119653,\"çİķ\":119654,\"çİĻ\":119655,\"æĬŁ\":119656,\"æĬĶ\":119657,\"åľ»\":119658,\"åĿį\":119659,\"æĬĥ\":119660,\"ã§Ĳ\":119661,\"èĬ«\":119662,\"èĬ¾\":119663,\"èĭĪ\":119664,\"èĭ£\":119665,\"èĭĭ\":119666,\"èĬ¼\":119667,\"èĭĮ\":119668,\"èĭģ\":119669,\"èĬ©\":119670,\"èĬª\":119671,\"èĬ¡\":119672,\"èĬŁ\":119673,\"èĭĦ\":119674,\"èĭİ\":119675,\"èĭ¡\":119676,\"æĿĮ\":119677,\"æĿĵ\":119678,\"æĿĪ\":119679,\"å¿ĳ\":119680,\"åŃĽ\":119681,\"éĤ´\":119682,\"éĤ³\":119683,\"å¥ģ\":119684,\"è±ķ\":119685,\"å¿Ĵ\":119686,\"æ¬¤\":119687,\"è½«\":119688,\"è¿ĵ\":119689,\"éĤ¶\":119690,\"å¿Ĳ\":119691,\"åį£\":119692,\"éĤº\":119693,\"æĹ°\":119694,\"åĳĭ\":119695,\"åĳĴ\":119696,\"åĳĵ\":119697,\"åĳĶ\":119698,\"åĳĸ\":119699,\"æĹ¸\":119700,\"åĲ¡\":119701,\"èĻ¬\":119702,\"åĲ½\":119703,\"åĲ£\":119704,\"åĲ²\":119705,\"å¸ı\":119706,\"å²Ī\":119707,\"å²ĺ\":119708,\"åħķ\":119709,\"åĽµ\":119710,\"åĽ«\":119711,\"éĴĬ\":119712,\"éĴĭ\":119713,\"éĴĮ\":119714,\"è¿ķ\":119715,\"æ°Ļ\":119716,\"æ°ļ\":119717,\"çī¤\":119718,\"ä½ŀ\":119719,\"ä½ļ\":119720,\"ä½Ŀ\":119721,\"ä½Ĺ\":119722,\"å½·\":119723,\"ä½ĺ\":119724,\"ä½¥\":119725,\"è±¸\":119726,\"åĿĮ\":119727,\"èĤŁ\":119728,\"å¥Ĥ\":119729,\"åĬ¬\":119730,\"çĭģ\":119731,\"é¸ł\":119732,\"é¥¨\":119733,\"é¥©\":119734,\"é¥«\":119735,\"é¥¬\":119736,\"åºĳ\":119737,\"åºĭ\":119738,\"çĸĶ\":119739,\"çĸĸ\":119740,\"èĤĵ\":119741,\"éĹ±\":119742,\"éĹ³\":119743,\"çĤĢ\":119744,\"æ²£\":119745,\"æ²ħ\":119746,\"æ²Ķ\":119747,\"æ²¤\":119748,\"æ²ı\":119749,\"æ²ļ\":119750,\"æ±©\":119751,\"æ±¨\":119752,\"æ²¨\":119753,\"æ±´\":119754,\"æ²Ĩ\":119755,\"æ²©\":119756,\"æ³Ĳ\":119757,\"æĢĥ\":119758,\"æĢĦ\":119759,\"å¿¡\":119760,\"å¿¤\":119761,\"å¿¾\":119762,\"æĢħ\":119763,\"å¿ª\":119764,\"æĢĨ\":119765,\"å¿Ń\":119766,\"å¿¸\":119767,\"è¯Ĥ\":119768,\"è¯ĥ\":119769,\"è¯ħ\":119770,\"è¯ĭ\":119771,\"è¯Į\":119772,\"è¯Ĵ\":119773,\"éĻĤ\":119774,\"éĻī\":119775,\"å¦©\":119776,\"å¦ª\":119777,\"å¦£\":119778,\"å¦Ĺ\":119779,\"å¦«\":119780,\"å§Ĵ\":119781,\"å¦¤\":119782,\"åĬŃ\":119783,\"åĪŃ\":119784,\"éĤ°\":119785,\"çºŃ\":119786,\"çº°\":119787,\"çº´\":119788,\"çİ¡\":119789,\"çİŃ\":119790,\"çİł\":119791,\"çİ¢\":119792,\"çİ¦\":119793,\"çĽĤ\":119794,\"å¿Ŀ\":119795,\"åĮ¦\":119796,\"åĿ©\":119797,\"æĬ¨\":119798,\"æĭ¤\":119799,\"åĿ«\":119800,\"æĭĪ\":119801,\"åŀĨ\":119802,\"æĬ»\":119803,\"åĬ¼\":119804,\"æĭĥ\":119805,\"æĭĬ\":119806,\"åĿ¼\":119807,\"åĿ»\":119808,\"ã§Ł\":119809,\"åĿ¨\":119810,\"åĿŃ\":119811,\"æĬ¿\":119812,\"åĿ³\":119813,\"èĭ·\":119814,\"èĭ¤\":119815,\"èĮı\":119816,\"èĭ«\":119817,\"èĭľ\":119818,\"èĭ´\":119819,\"èĭĴ\":119820,\"èĭĺ\":119821,\"èĮĮ\":119822,\"èĭ»\":119823,\"èĭĵ\":119824,\"èĮļ\":119825,\"èĮĨ\":119826,\"èĮĳ\":119827,\"èĮĵ\":119828,\"èĮĶ\":119829,\"èĮķ\":119830,\"èĮĢ\":119831,\"èĭķ\":119832,\"æŀ¥\":119833,\"æŀĩ\":119834,\"æĿª\":119835,\"æĿ³\":119836,\"æŀ§\":119837,\"æĿµ\":119838,\"æŀ¨\":119839,\"æŀŀ\":119840,\"æŀĭ\":119841,\"æĿ»\":119842,\"æĿ·\":119843,\"æĿ¼\":119844,\"çŁ¸\":119845,\"çłĢ\":119846,\"åĪ³\":119847,\"å¥Ħ\":119848,\"æ®ģ\":119849,\"éĥı\":119850,\"è½Ń\":119851,\"éĥħ\":119852,\"é¸¢\":119853,\"çĽ±\":119854,\"æĺĻ\":119855,\"æĿ²\":119856,\"æĺĥ\":119857,\"åĴĤ\":119858,\"åĳ¸\":119859,\"æĺĢ\":119860,\"æĹ»\":119861,\"æĺī\":119862,\"çĤħ\":119863,\"çķĢ\":119864,\"èĻ®\":119865,\"åĴĢ\":119866,\"åĳ·\":119867,\"é»¾\":119868,\"åĳ±\":119869,\"åĳ¤\":119870,\"åĴĨ\":119871,\"åĴĽ\":119872,\"åĳ¶\":119873,\"åĳ£\":119874,\"åĴĿ\":119875,\"å²¢\":119876,\"å²¿\":119877,\"å²¬\":119878,\"å²«\":119879,\"å¸Ļ\":119880,\"å²£\":119881,\"å³ģ\":119882,\"åĪ¿\":119883,\"å²·\":119884,\"åīĢ\":119885,\"å¸Ķ\":119886,\"å³Ħ\":119887,\"æ²ĵ\":119888,\"åĽ¹\":119889,\"ç½Ķ\":119890,\"éĴį\":119891,\"éĴİ\":119892,\"éĴı\":119893,\"éĴĴ\":119894,\"éĴķ\":119895,\"éĤ¾\":119896,\"è¿®\":119897,\"çī¦\":119898,\"ç«º\":119899,\"è¿¤\":119900,\"ä½¶\":119901,\"ä¾ĳ\":119902,\"ä¾ī\":119903,\"èĩ¾\":119904,\"ä¾Ĺ\":119905,\"ä¾ı\":119906,\"ä¾©\":119907,\"ä½»\":119908,\"ä½¾\":119909,\"ä¾ª\":119910,\"ä½¼\":119911,\"ä½¯\":119912,\"ä¾¬\":119913,\"å¸Ľ\":119914,\"ä¾Ķ\":119915,\"å¾Ĥ\":119916,\"åĪ½\":119917,\"éĥĦ\":119918,\"ç±´\":119919,\"çĵ®\":119920,\"æĪĹ\":119921,\"èĤ¼\":119922,\"äıĿ\":119923,\"èĤ±\":119924,\"èĤ«\":119925,\"è¿©\":119926,\"éĥĩ\":119927,\"çĭİ\":119928,\"çĭį\":119929,\"çĭĴ\":119930,\"åĴİ\":119931,\"é¥¯\":119932,\"é¥´\":119933,\"åĨ½\":119934,\"åĨ¼\":119935,\"åºĸ\":119936,\"çĸł\":119937,\"çĸĿ\":119938,\"åħĸ\":119939,\"åĬ¾\":119940,\"ð¬ī\":119941,\"ð¬ī¼\":119942,\"çĤĺ\":119943,\"çĤĿ\":119944,\"çĤĶ\":119945,\"æ³Ķ\":119946,\"æ²Ń\":119947,\"æ³·\":119948,\"æ³±\":119949,\"æ³ħ\":119950,\"æ³ł\":119951,\"æ³º\":119952,\"æ³ĸ\":119953,\"æ³«\":119954,\"æ³®\":119955,\"æ²±\":119956,\"æ³¯\":119957,\"æĢĻ\":119958,\"æĢµ\":119959,\"æĢ¦\":119960,\"æĢĽ\":119961,\"æĢı\":119962,\"æĢį\":119963,\"ã¤\":119964,\"ã¤ĺ\":119965,\"æĢ©\":119966,\"æĢ«\":119967,\"æĢ¿\":119968,\"å®ķ\":119969,\"ç©¹\":119970,\"å®ĵ\":119971,\"è¯ĵ\":119972,\"è¯Ķ\":119973,\"è¯ĸ\":119974,\"è¯ĺ\":119975,\"æĪ¾\":119976,\"è¯Ļ\":119977,\"æĪ½\":119978,\"éĥĵ\":119979,\"è¡©\":119980,\"ç¥Ĩ\":119981,\"ç¥İ\":119982,\"ç¥ĩ\":119983,\"è¯ľ\":119984,\"è¯Ł\":119985,\"è¯£\":119986,\"è¯¤\":119987,\"è¯§\":119988,\"è¯¨\":119989,\"æĪķ\":119990,\"éĻĶ\":119991,\"å¦²\":119992,\"å¦¯\":119993,\"å§Ĺ\":119994,\"å¸ĳ\":119995,\"åŃ¥\":119996,\"é©½\":119997,\"èĻ±\":119998,\"è¿¨\":119999,\"ç»Ģ\":120000,\"ç»ģ\":120001,\"ç»Ĥ\":120002,\"é©·\":120003,\"é©¸\":120004,\"ç»ī\":120005,\"ç»Į\":120006,\"éªĢ\":120007,\"çĶ¾\":120008,\"çıı\":120009,\"çıĲ\":120010,\"çıĳ\":120011,\"çİ³\":120012,\"é¡¸\":120013,\"çıī\":120014,\"çıĪ\":120015,\"æĭ®\":120016,\"åŀŃ\":120017,\"æĮĿ\":120018,\"æĮŀ\":120019,\"åŀ¤\":120020,\"èµ³\":120021,\"è´²\":120022,\"åŀ±\":120023,\"åŀĮ\":120024,\"åŀ§\":120025,\"åŀĵ\":120026,\"æĮ¦\":120027,\"åŀł\":120028,\"èįļ\":120029,\"èįĳ\":120030,\"è´³\":120031,\"èįľ\":120032,\"èİĴ\":120033,\"èĮ¼\":120034,\"èĮ´\":120035,\"èĮ±\":120036,\"èİĽ\":120037,\"èįŀ\":120038,\"èĮ¯\":120039,\"èįı\":120040,\"èįĩ\":120041,\"èįĥ\":120042,\"èįł\":120043,\"èĮŃ\":120044,\"åŀ©\":120045,\"èį¥\":120046,\"èį¦\":120047,\"èį¨\":120048,\"èį©\":120049,\"åīĭ\":120050,\"èįª\":120051,\"èį¬\":120052,\"èį®\":120053,\"æŁ°\":120054,\"æłī\":120055,\"æŁĺ\":120056,\"æłĬ\":120057,\"æŁ©\":120058,\"æŀ°\":120059,\"æłĮ\":120060,\"æŁĻ\":120061,\"æŀµ\":120062,\"æŀ³\":120063,\"æŁŀ\":120064,\"æŁĿ\":120065,\"æłĢ\":120066,\"æŁ¢\":120067,\"æłİ\":120068,\"æŁĪ\":120069,\"æŁģ\":120070,\"æŀ·\":120071,\"æŁ½\":120072,\"åīĮ\":120073,\"éħĬ\":120074,\"éĥ¦\":120075,\"çĶŃ\":120076,\"çłĹ\":120077,\"çłĺ\":120078,\"çłĴ\":120079,\"æĸ«\":120080,\"çłŃ\":120081,\"çłľ\":120082,\"èĢ·\":120083,\"èĻº\":120084,\"æ®Ĥ\":120085,\"æ®ĩ\":120086,\"æ®Ħ\":120087,\"è½±\":120088,\"è½²\":120089,\"è½³\":120090,\"è½¶\":120091,\"è½¸\":120092,\"èĻ¿\":120093,\"æ¯ĸ\":120094,\"è§ĩ\":120095,\"å°ľ\":120096,\"åĵĲ\":120097,\"çľĦ\":120098,\"çľį\":120099,\"ðł³\":120100,\"ðł³Ĳ\":120101,\"éĥ¢\":120102,\"çľĩ\":120103,\"çľĬ\":120104,\"çľĪ\":120105,\"ç¦º\":120106,\"åĵĤ\":120107,\"åĴ´\":120108,\"æĽ·\":120109,\"æĺ´\":120110,\"åĴ¦\":120111,\"åĵĵ\":120112,\"åĵĶ\":120113,\"çķİ\":120114,\"åĳ²\":120115,\"èĥĦ\":120116,\"çķĭ\":120117,\"çķĪ\":120118,\"èĻ¼\":120119,\"èĻ»\":120120,\"çĽħ\":120121,\"åĴ£\":120122,\"åĵķ\":120123,\"åīĲ\":120124,\"éĥ§\":120125,\"åĴ»\":120126,\"åĽ¿\":120127,\"åĴ¿\":120128,\"åĵĮ\":120129,\"åĵĻ\":120130,\"åĵļ\":120131,\"åĴ©\":120132,\"åĴ¤\":120133,\"åĵĿ\":120134,\"åĵı\":120135,\"åĵŀ\":120136,\"å³£\":120137,\"ç½ĺ\":120138,\"å³Ĵ\":120139,\"å³¤\":120140,\"å³ĭ\":120141,\"è´¶\":120142,\"éĴļ\":120143,\"éĴ¡\":120144,\"éĴ£\":120145,\"éĴ¤\":120146,\"éĴ«\":120147,\"æ°¡\":120148,\"çī¯\":120149,\"éĥľ\":120150,\"ç§ķ\":120151,\"ç§Ń\":120152,\"ç«½\":120153,\"ç¬Ī\":120154,\"ä¿¦\":120155,\"ä¿¨\":120156,\"ä¿ħ\":120157,\"åıŁ\":120158,\"åŀ¡\":120159,\"çī®\":120160,\"ä¿£\":120161,\"ä¿ļ\":120162,\"çļĪ\":120163,\"ä¿Ł\":120164,\"éĢħ\":120165,\"å¾ĩ\":120166,\"å¾ī\":120167,\"èĪ¢\":120168,\"éĥĹ\":120169,\"ä¿İ\":120170,\"éĥ¤\":120171,\"çĪ°\":120172,\"éĥĽ\":120173,\"çĵ´\":120174,\"èĥ¨\":120175,\"èĥª\":120176,\"èĥĽ\":120177,\"èĥĤ\":120178,\"èĥĻ\":120179,\"èĥį\":120180,\"èĥĹ\":120181,\"èĥĿ\":120182,\"æľĲ\":120183,\"èĥ«\":120184,\"é¸¨\":120185,\"åĮį\":120186,\"çĭ¨\":120187,\"çĭ¯\":120188,\"é£ĳ\":120189,\"çĭ©\":120190,\"çĭ²\":120191,\"è¨ĩ\":120192,\"éĢĦ\":120193,\"æĺĿ\":120194,\"é¥·\":120195,\"é¥¸\":120196,\"é¥¹\":120197,\"åŃª\":120198,\"å¨Ī\":120199,\"åº¥\":120200,\"çĸ¬\":120201,\"çĸ£\":120202,\"çĸ¥\":120203,\"çĸŃ\":120204,\"åºł\":120205,\"ç«ĳ\":120206,\"é£Ĵ\":120207,\"éĹ¼\":120208,\"éĹ¾\":120209,\"éĹ¿\":120210,\"éĺĤ\":120211,\"ç¾ĳ\":120212,\"è¿¸\":120213,\"ç±¼\":120214,\"éħĭ\":120215,\"çĤ»\":120216,\"çĥĢ\":120217,\"çĤ·\":120218,\"æ´±\":120219,\"æ´¹\":120220,\"æ´§\":120221,\"æ´Į\":120222,\"æµĥ\":120223,\"æ´ĩ\":120224,\"æ´Ħ\":120225,\"æ´Ļ\":120226,\"æ¶İ\":120227,\"æ´İ\":120228,\"æ´«\":120229,\"æµį\":120230,\"æ´®\":120231,\"æ´µ\":120232,\"æµĴ\":120233,\"æµĶ\":120234,\"æµķ\":120235,\"æ´³\":120236,\"æģ¸\":120237,\"æģĵ\":120238,\"æģ¹\":120239,\"æģ«\":120240,\"æģ»\":120241,\"æģĤ\":120242,\"æģª\":120243,\"æģ½\":120244,\"å®¥\":120245,\"æīĥ\":120246,\"è¡²\":120247,\"è¡½\":120248,\"è¡¿\":120249,\"è¢Ĥ\":120250,\"ç¥ľ\":120251,\"ç¥ĵ\":120252,\"ç¥ļ\":120253,\"è¯®\":120254,\"ç¥Ĺ\":120255,\"ç¥¢\":120256,\"è¯°\":120257,\"è¯³\":120258,\"é¸©\":120259,\"æĺ¶\":120260,\"åĴ«\":120261,\"å¼Ń\":120262,\"çīģ\":120263,\"èĥ¥\":120264,\"éĻŁ\":120265,\"å§®\":120266,\"å¨Ĩ\":120267,\"å§Ŀ\":120268,\"å§£\":120269,\"å§ĺ\":120270,\"å§¹\":120271,\"ç¾¿\":120272,\"çĤ±\":120273,\"çŁľ\":120274,\"ç»Ķ\":120275,\"éªģ\":120276,\"éªħ\":120277,\"ç»Ĺ\":120278,\"ç»Ľ\":120279,\"éªĪ\":120280,\"èĢĸ\":120281,\"æĮĪ\":120282,\"çı¥\":120283,\"çıĻ\":120284,\"é¡¼\":120285,\"çı°\":120286,\"çı©\":120287,\"çı§\":120288,\"çı£\":120289,\"çıŀ\":120290,\"çĲ¤\":120291,\"çı²\":120292,\"æģļ\":120293,\"åŁķ\":120294,\"åŁĺ\":120295,\"åŁĻ\":120296,\"åŁļ\":120297,\"æĮ¹\":120298,\"èĢĨ\":120299,\"èĢĦ\":120300,\"åŁĴ\":120301,\"æįĭ\":120302,\"è´½\":120303,\"åŀ¸\":120304,\"æįĥ\":120305,\"çĽį\":120306,\"èį¸\":120307,\"èİ³\":120308,\"èİ´\":120309,\"èİª\":120310,\"èİł\":120311,\"èİľ\":120312,\"èİħ\":120313,\"èį¼\":120314,\"èİ©\":120315,\"èį½\":120316,\"èİ¸\":120317,\"èį»\":120318,\"èİ¨\":120319,\"é¸ª\":120320,\"èİ¼\":120321,\"æł²\":120322,\"æł³\":120323,\"æ¡¡\":120324,\"æ¡İ\":120325,\"æ¡¢\":120326,\"æ¡¤\":120327,\"æ¢ĥ\":120328,\"æłĿ\":120329,\"æ¡ķ\":120330,\"æ¡ģ\":120331,\"æ¡§\":120332,\"æ¡ħ\":120333,\"æłŁ\":120334,\"æ¡ī\":120335,\"æł©\":120336,\"éĢĳ\":120337,\"éĢĭ\":120338,\"å½§\":120339,\"é¬²\":120340,\"è±ĩ\":120341,\"éħĲ\":120342,\"éĢ¦\":120343,\"åİĿ\":120344,\"åŃ¬\":120345,\"çłĿ\":120346,\"çł¹\":120347,\"çł§\":120348,\"çł·\":120349,\"çłŁ\":120350,\"çł¼\":120351,\"çł¥\":120352,\"çł£\":120353,\"åīŀ\":120354,\"çł»\":120355,\"è½¼\":120356,\"è½¾\":120357,\"è¾Ĥ\":120358,\"é¸«\":120359,\"è¶¸\":120360,\"é¾Ģ\":120361,\"é¸¬\":120362,\"èĻĶ\":120363,\"çľ¬\":120364,\"åĶĽ\":120365,\"çľĻ\":120366,\"åĵ§\":120367,\"åĵ½\":120368,\"æĻģ\":120369,\"é¸®\":120370,\"è¶µ\":120371,\"è¶¿\":120372,\"çķĽ\":120373,\"èļ¨\":120374,\"èļľ\":120375,\"èļį\":120376,\"èļĭ\":120377,\"èļ¬\":120378,\"èļĿ\":120379,\"èļ§\":120380,\"åĶ¢\":120381,\"åľĦ\":120382,\"åĶ£\":120383,\"åĶı\":120384,\"çĽİ\":120385,\"åĶĳ\":120386,\"å´Ĥ\":120387,\"å´ĥ\":120388,\"ç½¡\":120389,\"ç½Ł\":120390,\"è§Ĭ\":120391,\"èµħ\":120392,\"éĴ²\":120393,\"éĴµ\":120394,\"éĴ¹\":120395,\"éĴº\":120396,\"éĴ½\":120397,\"éĴ¼\":120398,\"éĴ¿\":120399,\"éĵĢ\":120400,\"éĵĦ\":120401,\"éĵĨ\":120402,\"éĵĪ\":120403,\"éĵī\":120404,\"éĵĬ\":120405,\"éĵĭ\":120406,\"éĵĮ\":120407,\"éĵį\":120408,\"ä¥\":120409,\"ä¥½\":120410,\"éĵİ\":120411,\"æ°©\":120412,\"æ°¤\":120413,\"æ°¦\":120414,\"æ¯ª\":120415,\"èĪĲ\":120416,\"ç§£\":120417,\"ç§«\":120418,\"çĽī\":120419,\"ç¬Ħ\":120420,\"ç¬ķ\":120421,\"ç¬Ĭ\":120422,\"ç¬ı\":120423,\"ç¬Ĩ\":120424,\"ä¿¸\":120425,\"ä¿µ\":120426,\"åģĮ\":120427,\"ä¿³\":120428,\"ä¿¶\":120429,\"åĢ¬\":120430,\"åĢı\":120431,\"æģģ\":120432,\"åĢŃ\":120433,\"ä¿¾\":120434,\"åĢľ\":120435,\"éļ¼\":120436,\"éļ½\":120437,\"åĢĮ\":120438,\"åĢ¥\":120439,\"èĩ¬\":120440,\"éĥ«\":120441,\"åĢ¨\":120442,\"è¡Ħ\":120443,\"é¢Ģ\":120444,\"å¾ķ\":120445,\"èĪ«\":120446,\"è¡¾\":120447,\"èĥ¯\":120448,\"èĥ±\":120449,\"èĥ´\":120450,\"èĥŃ\":120451,\"èĦį\":120452,\"èĥ¼\":120453,\"èĦĴ\":120454,\"é¸±\":120455,\"é¸²\":120456,\"çĭ·\":120457,\"çĮģ\":120458,\"çĭ³\":120459,\"çĮĥ\":120460,\"çĭº\":120461,\"éĢĸ\":120462,\"æ¡Ģ\":120463,\"é¥½\":120464,\"åĩĩ\":120465,\"æĮĽ\":120466,\"äº³\":120467,\"çĸ³\":120468,\"çĸ´\":120469,\"çĸ¸\":120470,\"çĸ½\":120471,\"çĹĪ\":120472,\"çĸ±\":120473,\"çĹĤ\":120474,\"çĹī\":120475,\"è¡®\":120476,\"é¢ĥ\":120477,\"æģ£\":120478,\"æĹĨ\":120479,\"æĹĦ\":120480,\"æĹĥ\":120481,\"éĺĥ\":120482,\"éĺĦ\":120483,\"è¨ļ\":120484,\"éĺĨ\":120485,\"æģĻ\":120486,\"ç²ĳ\":120487,\"çĥľ\":120488,\"çĥ©\":120489,\"çĥĬ\":120490,\"åī¡\":120491,\"éĥ¯\":120492,\"çĥ¬\":120493,\"æ¶ĳ\":120494,\"æµ¯\":120495,\"æ¶ŀ\":120496,\"æ¶Ł\":120497,\"å¨ĳ\":120498,\"æ¶ł\":120499,\"æµŀ\":120500,\"æ¶ĵ\":120501,\"æµ¥\":120502,\"æ¶Ķ\":120503,\"æµľ\":120504,\"æµł\":120505,\"æµ£\":120506,\"æĤļ\":120507,\"æĤŃ\":120508,\"æĤĿ\":120509,\"æĤĴ\":120510,\"æĤĮ\":120511,\"æĤĽ\":120512,\"çªĪ\":120513,\"åīľ\":120514,\"è¯¹\":120515,\"è¯¼\":120516,\"è¢Ĵ\":120517,\"è¢¢\":120518,\"è¯¿\":120519,\"è°Ģ\":120520,\"è°Ĥ\":120521,\"è°Ħ\":120522,\"è°ĩ\":120523,\"å±Ĳ\":120524,\"å±Ļ\":120525,\"éĻ¬\":120526,\"åĭĲ\":120527,\"å¥ĺ\":120528,\"çīĤ\":120529,\"èļ©\":120530,\"éĻ²\":120531,\"å¨Į\":120532,\"å¨ī\":120533,\"å¨²\":120534,\"å¨´\":120535,\"å¨£\":120536,\"å¨ĵ\":120537,\"å©Ģ\":120538,\"çķļ\":120539,\"éĢ¡\":120540,\"ç»ł\":120541,\"éªĬ\":120542,\"ç»¡\":120543,\"éªĭ\":120544,\"ç»¦\":120545,\"ç»¨\":120546,\"éªİ\":120547,\"éĤķ\":120548,\"é¸¶\":120549,\"å½Ĺ\":120550,\"èĢľ\":120551,\"çĦĺ\":120552,\"èĪĤ\":120553,\"çĲı\":120554,\"çĲĩ\":120555,\"éº¸\":120556,\"æı¶\":120557,\"åŁ´\":120558,\"åŁ¯\":120559,\"æį¯\":120560,\"æİ³\":120561,\"æİ´\":120562,\"åŁ¸\":120563,\"åŁµ\":120564,\"èµ§\":120565,\"åŁ¤\":120566,\"æįŃ\":120567,\"éĢµ\":120568,\"åŁĿ\":120569,\"åłĭ\":120570,\"åłį\":120571,\"æİ¬\":120572,\"é¸·\":120573,\"æį½\":120574,\"æİĬ\":120575,\"åłī\":120576,\"æİ¸\":120577,\"æį©\":120578,\"æİ®\":120579,\"æĤ«\":120580,\"åŁŃ\":120581,\"åŁ½\":120582,\"æİĩ\":120583,\"æİ¼\":120584,\"èģĥ\":120585,\"èĲģ\":120586,\"èıĺ\":120587,\"åłĩ\":120588,\"èĲĺ\":120589,\"èĲĭ\":120590,\"èı½\":120591,\"èıĸ\":120592,\"èĲľ\":120593,\"èĲ¸\":120594,\"èĲĳ\":120595,\"æ£»\":120596,\"èıĶ\":120597,\"èıŁ\":120598,\"èĲı\":120599,\"èı¹\":120600,\"èıª\":120601,\"èıħ\":120602,\"èıĢ\":120603,\"èı°\":120604,\"èı¡\":120605,\"æ¢¿\":120606,\"æ¢ı\":120607,\"è§ĭ\":120608,\"æ¡´\":120609,\"æ¡·\":120610,\"æ£ģ\":120611,\"æ¡«\":120612,\"æ£Ĥ\":120613,\"åķ¬\":120614,\"éĥ¾\":120615,\"æķķ\":120616,\"è±ī\":120617,\"éĦĦ\":120618,\"éħŀ\":120619,\"ç¡İ\":120620,\"ç¡Ń\":120621,\"ç¡ĸ\":120622,\"ç¡Ĺ\":120623,\"ç¡Ĳ\":120624,\"ç¡ĩ\":120625,\"ç¡Į\":120626,\"é¸¸\":120627,\"çĵł\":120628,\"åĮı\":120629,\"åİ©\":120630,\"æ®Ĵ\":120631,\"æ®ĵ\":120632,\"æ®į\":120633,\"èµī\":120634,\"éĽ©\":120635,\"è¾Ħ\":120636,\"åłĳ\":120637,\"çľŃ\":120638,\"çľ¦\":120639,\"åķ§\":120640,\"æĻ¡\":120641,\"æĻ¤\":120642,\"çľµ\":120643,\"åľĬ\":120644,\"åĸı\":120645,\"åķī\":120646,\"åĭĸ\":120647,\"æĻŀ\":120648,\"åĶµ\":120649,\"æĻĹ\":120650,\"åķŃ\":120651,\"çķ¦\":120652,\"è¶º\":120653,\"åķ®\":120654,\"è·Ħ\":120655,\"èļ¶\":120656,\"èĽĦ\":120657,\"èĽİ\":120658,\"èĽĨ\":120659,\"èļ°\":120660,\"åľī\":120661,\"èļ±\":120662,\"èĽī\":120663,\"èĽı\":120664,\"èļ´\":120665,\"åķģ\":120666,\"åķķ\":120667,\"åĶ¿\":120668,\"åķĲ\":120669,\"åĶ¼\":120670,\"åĶ·\":120671,\"åķĸ\":120672,\"åķµ\":120673,\"åķ¶\":120674,\"åķ·\":120675,\"åĶ³\":120676,\"åĶ°\":120677,\"åķľ\":120678,\"å¸»\":120679,\"å´ļ\":120680,\"å´¦\":120681,\"å¸¼\":120682,\"å´®\":120683,\"å´¤\":120684,\"å´Ĩ\":120685,\"èµĩ\":120686,\"èµĪ\":120687,\"èµĬ\":120688,\"éĵĳ\":120689,\"éĵĴ\":120690,\"éĵĹ\":120691,\"éĵĻ\":120692,\"éĵŁ\":120693,\"éĵ¡\":120694,\"éĵ¢\":120695,\"éĵ£\":120696,\"éĵ¤\":120697,\"éĵ§\":120698,\"éĵ¨\":120699,\"éĵ©\":120700,\"éĵª\":120701,\"éĵ«\":120702,\"éĵ¯\":120703,\"éĵ°\":120704,\"éĵ±\":120705,\"éĵ³\":120706,\"éĵµ\":120707,\"éĵ·\":120708,\"çī¾\":120709,\"é¸¹\":120710,\"ç§¾\":120711,\"éĢ¶\":120712,\"ç¬º\":120713,\"çŃĩ\":120714,\"ç¬¸\":120715,\"ç¬ª\":120716,\"ç¬®\":120717,\"ç¬ł\":120718,\"ç¬¥\":120719,\"ç¬¤\":120720,\"ç¬³\":120721,\"ç¬¾\":120722,\"ç¬ŀ\":120723,\"åģ¾\":120724,\"åģĥ\":120725,\"åģķ\":120726,\"åģĪ\":120727,\"åĤĢ\":120728,\"åģ¬\":120729,\"åģ»\":120730,\"çļĳ\":120731,\"çļİ\":120732,\"é¸»\":120733,\"å¾ľ\":120734,\"èĪ¸\":120735,\"èĪ»\":120736,\"èĪ´\":120737,\"èĪ·\":120738,\"é¾Ľ\":120739,\"ç¿İ\":120740,\"èĦ¬\":120741,\"èĦĺ\":120742,\"èĦ²\":120743,\"åĮĲ\":120744,\"çĮĹ\":120745,\"çĮ¡\":120746,\"çĮŀ\":120747,\"æĸĽ\":120748,\"çĮķ\":120749,\"é¦Ĺ\":120750,\"é¦ĥ\":120751,\"é¦Ħ\":120752,\"é¸¾\":120753,\"åº¹\":120754,\"åº¾\":120755,\"çĹĶ\":120756,\"çĹį\":120757,\"ç¿Ĭ\":120758,\"æĹĮ\":120759,\"æĹİ\":120760,\"è¢¤\":120761,\"éĺĩ\":120762,\"éĺĪ\":120763,\"éĺī\":120764,\"éĺĬ\":120765,\"éĺĭ\":120766,\"éĺį\":120767,\"éĺı\":120768,\"ç¾Ł\":120769,\"ç²Ŀ\":120770,\"çĦĲ\":120771,\"çĦĵ\":120772,\"çĦĹ\":120773,\"æ·ħ\":120774,\"æ·ŀ\":120775,\"æ¸İ\":120776,\"æ¶¿\":120777,\"æ·ĸ\":120778,\"æĮ²\":120779,\"æ·ł\":120780,\"æ¶¸\":120781,\"æ¸ĳ\":120782,\"æ·¦\":120783,\"æ·Ŀ\":120784,\"æ¶ª\":120785,\"æ·Ļ\":120786,\"æ¶«\":120787,\"æ¸Į\":120788,\"æĤ»\":120789,\"æĤ±\":120790,\"æĥĿ\":120791,\"æĥĺ\":120792,\"æĥĨ\":120793,\"æĥļ\":120794,\"æĥĩ\":120795,\"æĥ®\":120796,\"çªķ\":120797,\"è°Į\":120798,\"æīĪ\":120799,\"çļ²\":120800,\"è°ĳ\":120801,\"è£Ĩ\":120802,\"è¢·\":120803,\"è£ī\":120804,\"è°Ĵ\":120805,\"è°Ķ\":120806,\"è°ķ\":120807,\"è°ĸ\":120808,\"è°Ĺ\":120809,\"è°Ļ\":120810,\"è°Ŀ\":120811,\"éĢ¯\":120812,\"éĥ¿\":120813,\"éļĪ\":120814,\"ç²ľ\":120815,\"éļį\":120816,\"éļĹ\":120817,\"å©Ĭ\":120818,\"å¨¼\":120819,\"å©¢\":120820,\"å©µ\":120821,\"èĥ¬\":120822,\"è¢Ī\":120823,\"ç¿Į\":120824,\"æģ¿\":120825,\"æ¬¸\":120826,\"ç»«\":120827,\"éªĲ\":120828,\"ç»¯\":120829,\"ç»±\":120830,\"éªĴ\":120831,\"ç»²\":120832,\"éªĵ\":120833,\"ç»¶\":120834,\"ç»º\":120835,\"ç»»\":120836,\"ç»¾\":120837,\"éªĸ\":120838,\"ç¼ģ\":120839,\"èĢł\":120840,\"çĲ«\":120841,\"çĲµ\":120842,\"çĲ¶\":120843,\"çĲ¥\":120844,\"çĲ¨\":120845,\"çĲ°\":120846,\"çĲ®\":120847,\"çĲ¯\":120848,\"çĲ¬\":120849,\"çĲļ\":120850,\"è¾ĩ\":120851,\"é¼ĭ\":120852,\"æı³\":120853,\"åłŀ\":120854,\"æĲ½\":120855,\"æı¸\":120856,\"æıł\":120857,\"åłĻ\":120858,\"è¶Ħ\":120859,\"æıĸ\":120860,\"é¢ī\":120861,\"å¡Ħ\":120862,\"æı¿\":120863,\"èĢĭ\":120864,\"æıĦ\":120865,\"èĽ©\":120866,\"èĽ°\":120867,\"å¡Ĩ\":120868,\"æĳĴ\":120869,\"æıĨ\":120870,\"æİ¾\":120871,\"èģĴ\":120872,\"èĳĳ\":120873,\"èĳļ\":120874,\"éĿ°\":120875,\"éĿ¸\":120876,\"èĳ³\":120877,\"èĳº\":120878,\"èĳ¸\":120879,\"èĲ¼\":120880,\"èĳ¶\":120881,\"èĴĮ\":120882,\"èĳŃ\":120883,\"æ¥®\":120884,\"æ£¼\":120885,\"æ¤Ł\":120886,\"æ£¹\":120887,\"æ¤¤\":120888,\"æ£°\":120889,\"èµį\":120890,\"æ¤ĭ\":120891,\"æ¤ģ\":120892,\"æ¤ª\":120893,\"æ¤Ĳ\":120894,\"é¹ģ\":120895,\"éħ¤\":120896,\"éħ¢\":120897,\"éħ¡\":120898,\"é¹Ĥ\":120899,\"æ®ļ\":120900,\"æ®Ľ\":120901,\"éĽ±\":120902,\"è¾ĭ\":120903,\"æ¤ł\":120904,\"è¾İ\":120905,\"çĿĦ\":120906,\"çĿĩ\":120907,\"çĿĥ\":120908,\"æĪ¢\":120909,\"åĸĭ\":120910,\"åĹĴ\":120911,\"åĸĥ\":120912,\"åĸ±\":120913,\"åĸ¹\":120914,\"æĻ·\":120915,\"åĸĪ\":120916,\"è·ĸ\":120917,\"è·Ĺ\":120918,\"è·ŀ\":120919,\"è·ļ\":120920,\"è·İ\":120921,\"è·ı\":120922,\"è·Ĩ\":120923,\"èĽ±\":120924,\"èĽ²\":120925,\"èĽŃ\":120926,\"èĽ³\":120927,\"èĽĲ\":120928,\"èĽĶ\":120929,\"èĽŀ\":120930,\"èĽ´\":120931,\"èĽĺ\":120932,\"åĸģ\":120933,\"åĸŁ\":120934,\"åķ¾\":120935,\"åĹĸ\":120936,\"åĸĳ\":120937,\"åĹŁ\":120938,\"åĹŀ\":120939,\"åĸĻ\":120940,\"åµĺ\":120941,\"åµĸ\":120942,\"å´´\":120943,\"éģĦ\":120944,\"è©Ī\":120945,\"åµİ\":120946,\"åµ¬\":120947,\"åµĽ\":120948,\"åµ¯\":120949,\"åµĿ\":120950,\"åµ«\":120951,\"å¹Ħ\":120952,\"åµĭ\":120953,\"èµķ\":120954,\"éĵ»\":120955,\"éĵ¼\":120956,\"éĵ¿\":120957,\"éĶĥ\":120958,\"éĶĨ\":120959,\"éĶĩ\":120960,\"éĶī\":120961,\"éĶı\":120962,\"éĶĳ\":120963,\"éĶĴ\":120964,\"éĶĶ\":120965,\"éĶķ\":120966,\"æİ£\":120967,\"çŁ¬\":120968,\"æ°°\":120969,\"æ¯³\":120970,\"æ¯½\":120971,\"çĬĬ\":120972,\"çĬĦ\":120973,\"çĬĭ\":120974,\"é¹Ħ\":120975,\"çĬį\":120976,\"åµĩ\":120977,\"é»į\":120978,\"ç¨ĥ\":120979,\"ç¨Ĥ\":120980,\"çŃļ\":120981,\"çŃµ\":120982,\"çŃĮ\":120983,\"åĤ£\":120984,\"åĤĪ\":120985,\"èĪĦ\":120986,\"çīį\":120987,\"åĤ¥\":120988,\"åĤ§\":120989,\"éģĳ\":120990,\"åĤ©\":120991,\"å¾¨\":120992,\"åªŃ\":120993,\"çķ²\":120994,\"å¼ĳ\":120995,\"ç¿ķ\":120996,\"é¹Ĩ\":120997,\"èħĪ\":120998,\"èħĵ\":120999,\"èħĨ\":121000,\"èħ´\":121001,\"èħļ\":121002,\"èħ±\":121003,\"é±¿\":121004,\"é²Ģ\":121005,\"é²Ĥ\":121006,\"çĮ¢\":121007,\"çĮ¹\":121008,\"çĮ¥\":121009,\"é£ĵ\":121010,\"è§ŀ\":121011,\"è§ļ\":121012,\"çĮ±\":121013,\"é¢İ\":121014,\"é£§\":121015,\"é¦ĩ\":121016,\"é¦Ĭ\":121017,\"äºµ\":121018,\"èĦĶ\":121019,\"è£Ĵ\":121020,\"çĹ£\":121021,\"çĹ¨\":121022,\"çĹ¦\":121023,\"çĹŀ\":121024,\"çĹ¤\":121025,\"çĹ§\":121026,\"èµĵ\":121027,\"ç«¦\":121028,\"çĵ¿\":121029,\"åķ»\":121030,\"é¢ı\":121031,\"é¹ĩ\":121032,\"éĺĳ\":121033,\"éĺĴ\":121034,\"éĺķ\":121035,\"ç²ŀ\":121036,\"éģĴ\":121037,\"åŃ³\":121038,\"çĦ¯\":121039,\"çĦľ\":121040,\"çĦ±\":121041,\"é¹Ī\":121042,\"æ¸«\":121043,\"æ¹®\":121044,\"æ¹İ\":121045,\"æ¹ľ\":121046,\"æ¹į\":121047,\"æ¹«\":121048,\"æº²\":121049,\"æ¹Ł\":121050,\"æºĨ\":121051,\"æ¹²\":121052,\"æ¹Ķ\":121053,\"æ¹ī\":121054,\"æ¸¥\":121055,\"æ»ģ\":121056,\"æĦł\":121057,\"æĥº\":121058,\"æĦ¦\":121059,\"æĥ´\":121060,\"æĦĢ\":121061,\"æĦİ\":121062,\"æĦĶ\":121063,\"åĸ¾\":121064,\"å¯Ĳ\":121065,\"è°Ł\":121066,\"è£¢\":121067,\"è£İ\":121068,\"è£¥\":121069,\"ç¥¾\":121070,\"è°ł\":121071,\"è°¡\":121072,\"è°¥\":121073,\"è°§\":121074,\"åŃ±\":121075,\"å¼¼\":121076,\"å·½\":121077,\"éªĺ\":121078,\"åªª\":121079,\"å·¯\":121080,\"ç¿ļ\":121081,\"çļ´\":121082,\"éªĽ\":121083,\"ç¼Ĥ\":121084,\"ç¼ĥ\":121085,\"ç¼Ħ\":121086,\"å½ĺ\":121087,\"ç¼ĩ\":121088,\"ç¼Ī\":121089,\"ç¼Į\":121090,\"ç¼ĳ\":121091,\"ç¼Ĵ\":121092,\"ç¼Ĺ\":121093,\"é£¨\":121094,\"èĢ¢\":121095,\"çĳģ\":121096,\"çĳĹ\":121097,\"çĳĦ\":121098,\"éģ¨\":121099,\"éªľ\":121100,\"éŁ«\":121101,\"é«¡\":121102,\"å¡¬\":121103,\"éĦ¢\":121104,\"è¶Ķ\":121105,\"è¶ĳ\":121106,\"æĳħ\":121107,\"æĳģ\":121108,\"èľĩ\":121109,\"æĲĭ\":121110,\"æĲª\":121111,\"æĲĲ\":121112,\"æĲĽ\":121113,\"æĲł\":121114,\"æĳĪ\":121115,\"å½Ģ\":121116,\"æ¯Ĥ\":121117,\"æĲ¦\":121118,\"æĲ¡\":121119,\"èĵģ\":121120,\"æĪ¡\":121121,\"èĵį\":121122,\"éĦŀ\":121123,\"èĵĲ\":121124,\"èĵ¦\":121125,\"é¹ĭ\":121126,\"èĴ½\":121127,\"èĵĸ\":121128,\"èĵĬ\":121129,\"èĴ¯\":121130,\"èĵŁ\":121131,\"èĵĳ\":121132,\"èĴº\":121133,\"èĵł\":121134,\"èĴŁ\":121135,\"èĴ¡\":121136,\"èĴ¹\":121137,\"èĴ´\":121138,\"èĴĹ\":121139,\"èĵ¥\":121140,\"æ¥Ķ\":121141,\"æ¥Ĥ\":121142,\"æ¥Ŀ\":121143,\"æ¥«\":121144,\"æ¥¸\":121145,\"æ¤´\":121146,\"æ§Į\":121147,\"æ¥¯\":121148,\"çļĻ\":121149,\"æ¦Ī\":121150,\"æ§İ\":121151,\"æ¦ī\":121152,\"æ¥¦\":121153,\"æ¥£\":121154,\"æ¥¹\":121155,\"æ¤½\":121156,\"åī½\":121157,\"éħ©\":121158,\"èľĥ\":121159,\"ç¢Ľ\":121160,\"ç¢ĵ\":121161,\"ç¡¼\":121162,\"ç¢ī\":121163,\"ç¢ļ\":121164,\"ç¢ĩ\":121165,\"ç¢ľ\":121166,\"é¹Į\":121167,\"è¾ı\":121168,\"é¾ĥ\":121169,\"é¾ħ\":121170,\"è¨¾\":121171,\"ç²²\":121172,\"çĿļ\":121173,\"åĹª\":121174,\"éŁª\":121175,\"åĹ·\":121176,\"åĹī\":121177,\"çĿ¨\":121178,\"çĿ¢\":121179,\"éĽİ\":121180,\"çĿ¥\":121181,\"åĹĳ\":121182,\"åĹ«\":121183,\"åĹ¬\":121184,\"åĹĶ\":121185,\"åĹĿ\":121186,\"æĪ¥\":121187,\"åĹĦ\":121188,\"çħ¦\":121189,\"æļĦ\":121190,\"éģ¢\":121191,\"æļĮ\":121192,\"è·¬\":121193,\"è·¶\":121194,\"è·¸\":121195,\"è·Ĳ\":121196,\"è·£\":121197,\"è·¹\":121198,\"èĽ¸\":121199,\"èľĬ\":121200,\"èľį\":121201,\"èľī\":121202,\"èľ£\":121203,\"çķ¹\":121204,\"èĽ¹\":121205,\"åĹ¥\":121206,\"åĹ²\":121207,\"åĹ³\":121208,\"åĹĮ\":121209,\"åĹį\":121210,\"åĹĲ\":121211,\"åĹ¤\":121212,\"åĹµ\":121213,\"ç½¨\":121214,\"åµĬ\":121215,\"åµ´\":121216,\"éª°\":121217,\"éĶĹ\":121218,\"éĶĽ\":121219,\"éĶľ\":121220,\"éĶĿ\":121221,\"éĶŀ\":121222,\"éĶŁ\":121223,\"éĶ¢\":121224,\"éĶ¨\":121225,\"éĶ©\":121226,\"éĶŃ\":121227,\"éĶ±\":121228,\"éĽī\":121229,\"æ°²\":121230,\"çĬı\":121231,\"æŃĥ\":121232,\"ç¨ŀ\":121233,\"ç¨Ĺ\":121234,\"ç¨Ķ\":121235,\"çŃł\":121236,\"çŃ¢\":121237,\"çŃ®\":121238,\"çŃ²\":121239,\"çīĴ\":121240,\"æķ«\":121241,\"å¾Ń\":121242,\"æĦĨ\":121243,\"èīĦ\":121244,\"è§İ\":121245,\"æ¯¹\":121246,\"è²Ĭ\":121247,\"è²ħ\":121248,\"è²ī\":121249,\"é¢Ķ\":121250,\"èħł\":121251,\"èħ©\":121252,\"èħ¼\":121253,\"èħŃ\":121254,\"èħ§\":121255,\"å¡į\":121256,\"åªµ\":121257,\"é²ħ\":121258,\"é²Ĩ\":121259,\"é²ĩ\":121260,\"é²Ī\":121261,\"é²ĭ\":121262,\"é²Ĳ\":121263,\"èĤĦ\":121264,\"é¹Ĳ\":121265,\"é£ķ\":121266,\"è§¥\":121267,\"éģĽ\":121268,\"é¦Ĳ\":121269,\"é¹ĳ\":121270,\"äº¶\":121271,\"çĺĥ\":121272,\"çĹ±\":121273,\"çĹ¼\":121274,\"çĹ¿\":121275,\"çĺĲ\":121276,\"çĺģ\":121277,\"çĺĨ\":121278,\"éºĤ\":121279,\"æŃĨ\":121280,\"æĹĴ\":121281,\"éĺĸ\":121282,\"éĺĹ\":121283,\"ç¾§\":121284,\"è±¢\":121285,\"ç²³\":121286,\"çĮ·\":121287,\"çħ³\":121288,\"çħ¨\":121289,\"çħħ\":121290,\"çħĬ\":121291,\"çħ¸\":121292,\"çħº\":121293,\"æ»Ł\":121294,\"æº±\":121295,\"æºĺ\":121296,\"æ¼Ń\":121297,\"æ»¢\":121298,\"æº¥\":121299,\"æº½\":121300,\"è£Ł\":121301,\"æº»\":121302,\"æº·\":121303,\"æ»Ĺ\":121304,\"æ»«\":121305,\"æº´\":121306,\"æ»ı\":121307,\"æ»ĥ\":121308,\"æ»¦\":121309,\"æºı\":121310,\"æ»Ĥ\":121311,\"æ»ĵ\":121312,\"æºŁ\":121313,\"æ»ª\":121314,\"æĦ«\":121315,\"æħĬ\":121316,\"é²İ\":121317,\"éªŀ\":121318,\"çªł\":121319,\"çª£\":121320,\"è£±\":121321,\"è£¨\":121322,\"è£¾\":121323,\"è£°\":121324,\"ç¦Ĭ\":121325,\"è°©\":121326,\"è°ª\":121327,\"åª¾\":121328,\"å««\":121329,\"åª²\":121330,\"å«Ĵ\":121331,\"å«Ķ\":121332,\"åª¸\":121333,\"ç¼Ļ\":121334,\"ç¼ľ\":121335,\"ç¼Ľ\":121336,\"è¾Ķ\":121337,\"éªĿ\":121338,\"ç¼Ł\":121339,\"ç¼¡\":121340,\"ç¼¢\":121341,\"ç¼£\":121342,\"éªŁ\":121343,\"èĢ¥\":121344,\"çĴĪ\":121345,\"çĳŃ\":121346,\"çįĴ\":121347,\"è§ı\":121348,\"æħĿ\":121349,\"å«ł\":121350,\"åıĨ\":121351,\"æĳ½\":121352,\"å¢ģ\":121353,\"æĴĤ\":121354,\"æĳŀ\":121355,\"æĴĦ\":121356,\"ç¿¥\":121357,\"è¸ħ\":121358,\"æĳŃ\":121359,\"å¢ī\":121360,\"å¢Ĵ\":121361,\"æ¦ĸ\":121362,\"ç¶¦\":121363,\"èĶ«\":121364,\"èĶ·\":121365,\"éĿº\":121366,\"éĿ¼\":121367,\"éŀħ\":121368,\"éĿ¿\":121369,\"çĶį\":121370,\"èĶ¸\":121371,\"èĶŁ\":121372,\"èĶº\":121373,\"æĪ¬\":121374,\"èķĸ\":121375,\"èĶ»\":121376,\"èĵ¿\":121377,\"æĸ¡\":121378,\"é¹ķ\":121379,\"èĵ¼\":121380,\"æ¦Ľ\":121381,\"æ¦§\":121382,\"æ¦«\":121383,\"æ¦Ń\":121384,\"æ§Ķ\":121385,\"æ¦±\":121386,\"æ§ģ\":121387,\"æ§ł\":121388,\"æ¦·\":121389,\"åĥ°\":121390,\"éħ½\":121391,\"éħ¹\":121392,\"ç¢¡\":121393,\"ç¢´\":121394,\"ç¢£\":121395,\"ç¢²\":121396,\"èĩ§\":121397,\"è±¨\":121398,\"æ®¡\":121399,\"éľģ\":121400,\"èľļ\":121401,\"é¾ĩ\":121402,\"é¾Ī\":121403,\"äģ\":121404,\"äģĸ\":121405,\"çĿ½\":121406,\"åĺŀ\":121407,\"åĺĪ\":121408,\"åĺĮ\":121409,\"åĺģ\":121410,\"æļĿ\":121411,\"è¸Į\":121412,\"è¸ī\":121413,\"èľŀ\":121414,\"èľ¥\":121415,\"èľ®\":121416,\"èĿĪ\":121417,\"èľ´\":121418,\"èľ±\":121419,\"èľ©\":121420,\"èľ·\":121421,\"èľ¿\":121422,\"èŀĤ\":121423,\"èľ¢\":121424,\"åĺ¡\":121425,\"é¹Ĺ\":121426,\"åĺ£\":121427,\"åĺ¤\":121428,\"åĺļ\":121429,\"åĹ¾\":121430,\"åĺ§\":121431,\"ç½´\":121432,\"ç½±\":121433,\"å¹Ķ\":121434,\"å¶Ĥ\":121435,\"å¹Ľ\":121436,\"èµĻ\":121437,\"ç½Ĥ\":121438,\"éª·\":121439,\"éª¶\":121440,\"é¹ĺ\":121441,\"éĶ²\":121442,\"éĶ´\":121443,\"éĶ¶\":121444,\"éĶ·\":121445,\"éĶ¸\":121446,\"éĶµ\":121447,\"éķĤ\":121448,\"çĬĴ\":121449,\"ç®Ĳ\":121450,\"ç®¦\":121451,\"ç®§\":121452,\"ç®¸\":121453,\"ç®¬\":121454,\"ç®ħ\":121455,\"ç®ª\":121456,\"ç®ľ\":121457,\"ç®¢\":121458,\"ç®ĵ\":121459,\"åĥĸ\":121460,\"åĦĨ\":121461,\"åĥ³\":121462,\"åĥŃ\":121463,\"åĬģ\":121464,\"åĥ®\":121465,\"éŃĥ\":121466,\"éŃĨ\":121467,\"çĿ¾\":121468,\"èīĭ\":121469,\"éĦ±\":121470,\"èĨĪ\":121471,\"èĨĳ\":121472,\"é²ĳ\":121473,\"é²Ķ\":121474,\"é²ļ\":121475,\"é²Ľ\":121476,\"é²Ł\":121477,\"çįĲ\":121478,\"è§«\":121479,\"éĽĴ\":121480,\"å¤¤\":121481,\"é¦ĳ\":121482,\"éĬ®\":121483,\"å¡¾\":121484,\"çĺĮ\":121485,\"çĺĬ\":121486,\"çĺĺ\":121487,\"çĺĻ\":121488,\"æĹĸ\":121489,\"èĨĤ\":121490,\"éĺļ\":121491,\"éĦ¯\":121492,\"é²ŀ\":121493,\"ç²¿\":121494,\"ç²¼\":121495,\"ç³ģ\":121496,\"æ§Ĭ\":121497,\"é¹ļ\":121498,\"çĨĺ\":121499,\"çĨ¥\":121500,\"æ½¢\":121501,\"æ¼ķ\":121502,\"æ»¹\":121503,\"æ¼¯\":121504,\"æ¼¶\":121505,\"æ½ĭ\":121506,\"æ½´\":121507,\"æ¼ª\":121508,\"æ¼ī\":121509,\"æ¼©\":121510,\"æ¾ī\":121511,\"æħµ\":121512,\"æĲ´\":121513,\"çª¨\":121514,\"å¯¤\":121515,\"ç¶®\":121516,\"è°®\":121517,\"è¤¡\":121518,\"è¤Ļ\":121519,\"è¤ĵ\":121520,\"è¤Ľ\":121521,\"è¤Ĭ\":121522,\"è°¯\":121523,\"è°°\":121524,\"è°²\":121525,\"å±£\":121526,\"é¹Ľ\":121527,\"å«±\":121528,\"å«ĸ\":121529,\"å«¦\":121530,\"å«ļ\":121531,\"å«ĺ\":121532,\"é¼Ĳ\":121533,\"çŀĢ\":121534,\"é¹ľ\":121535,\"éªł\":121536,\"ç¼¥\":121537,\"ç¼¦\":121538,\"ç¼§\":121539,\"ç¼¨\":121540,\"éª¢\":121541,\"ç¼«\":121542,\"èĢ¦\":121543,\"èĢ§\":121544,\"çĴľ\":121545,\"çĴİ\":121546,\"çĴģ\":121547,\"å¥Ń\":121548,\"é«¯\":121549,\"é««\":121550,\"æĴ·\":121551,\"æĴħ\":121552,\"èµŃ\":121553,\"æĴ¸\":121554,\"éĭĨ\":121555,\"æĴĻ\":121556,\"æĴº\":121557,\"å¢Ģ\":121558,\"èģ©\":121559,\"è§Ĳ\":121560,\"éŀĳ\":121561,\"èķĻ\":121562,\"éŀĴ\":121563,\"èķĪ\":121564,\"èķ¨\":121565,\"èķ¤\":121566,\"èķŀ\":121567,\"èķº\":121568,\"çŀ¢\":121569,\"èķĥ\":121570,\"èķ²\":121571,\"èµľ\":121572,\"æ§¿\":121573,\"æ¨¯\":121574,\"æ§Ń\":121575,\"æ¨Ĺ\":121576,\"æ¨ĺ\":121577,\"æ§²\":121578,\"éĨĮ\":121579,\"éĨħ\":121580,\"éĿ¥\":121581,\"éŃĩ\":121582,\"é¤į\":121583,\"ç£Ķ\":121584,\"ç£Ļ\":121585,\"éľĪ\":121586,\"è¾ĺ\":121587,\"é¾ī\":121588,\"é¾Ĭ\":121589,\"è§ĳ\":121590,\"çŀĮ\":121591,\"çŀĭ\":121592,\"çŀĳ\":121593,\"åĺŃ\":121594,\"åĻİ\":121595,\"åĻ¶\":121596,\"é¢Ļ\":121597,\"æļ¹\":121598,\"åĻĺ\":121599,\"è¸Ķ\":121600,\"è¸Ŀ\":121601,\"è¸Ł\":121602,\"è¸Ĵ\":121603,\"è¸¬\":121604,\"è¸®\":121605,\"è¸¯\":121606,\"è¸º\":121607,\"è¸ŀ\":121608,\"èĿ½\":121609,\"èĿ¾\":121610,\"èĿ»\":121611,\"èĿ°\":121612,\"èĿ®\":121613,\"èŀĭ\":121614,\"èĿĵ\":121615,\"èĿ£\":121616,\"èĿ¼\":121617,\"åĺ¬\":121618,\"é¢ļ\":121619,\"åĻį\":121620,\"åĻĻ\":121621,\"åĻĮ\":121622,\"åĻĶ\":121623,\"é¢Ľ\":121624,\"å¹ŀ\":121625,\"å¹¡\":121626,\"å¶Ļ\":121627,\"å¶Ŀ\":121628,\"éªº\":121629,\"éķĬ\":121630,\"éķī\":121631,\"éķĮ\":121632,\"éķı\":121633,\"éķĴ\":121634,\"éķĵ\":121635,\"éķĶ\":121636,\"ç¨·\":121637,\"ç®´\":121638,\"ç¯ĳ\":121639,\"ç¯ģ\":121640,\"ç¯Į\":121641,\"çīĸ\":121642,\"åĦĭ\":121643,\"èĻ¢\":121644,\"é¹ŀ\":121645,\"èĨĺ\":121646,\"é²ł\":121647,\"é²¡\":121648,\"é²¢\":121649,\"é²£\":121650,\"é²¥\":121651,\"é²§\":121652,\"é²©\":121653,\"çįĹ\":121654,\"çįł\":121655,\"è§¯\":121656,\"é¦ĵ\":121657,\"é¦Ķ\":121658,\"éº¾\":121659,\"å»Ľ\":121660,\"çĺĽ\":121661,\"çĺ¼\":121662,\"çĺ¢\":121663,\"çĺł\":121664,\"é½ĳ\":121665,\"ç¾°\":121666,\"ð¥»\":121667,\"ð¥»Ĺ\":121668,\"ç³Į\":121669,\"ç³į\":121670,\"ç³ħ\":121671,\"çĨľ\":121672,\"çĨµ\":121673,\"æ¾į\":121674,\"æ¾Į\":121675,\"æ½¸\":121676,\"æ½¦\":121677,\"æ½²\":121678,\"éĭĪ\":121679,\"æ½Ł\":121680,\"æ½º\":121681,\"å¯®\":121682,\"çª³\":121683,\"è°³\":121684,\"è¤´\":121685,\"è¤Ł\":121686,\"è¤«\":121687,\"è°µ\":121688,\"çĨ¨\":121689,\"å±¦\":121690,\"åĭ°\":121691,\"æĪ®\":121692,\"èĿ¥\":121693,\"ç¼¬\":121694,\"ç¼®\":121695,\"ç¼¯\":121696,\"éª£\":121697,\"çķ¿\":121698,\"èĢ©\":121699,\"èĢ¨\":121700,\"èĢª\":121701,\"çĴŁ\":121702,\"éĿĽ\":121703,\"çĴł\":121704,\"çĴĺ\":121705,\"èģ±\":121706,\"èŀ¯\":121707,\"é«»\":121708,\"é«Ń\":121709,\"é«¹\":121710,\"æĵĢ\":121711,\"çĶı\":121712,\"æĵŀ\":121713,\"ç¸ł\":121714,\"ç£¬\":121715,\"é¢ŀ\":121716,\"èķ»\":121717,\"é¢Ł\":121718,\"èĸ¤\":121719,\"èĸ¨\":121720,\"æªł\":121721,\"èĸı\":121722,\"èĸ®\":121723,\"èĸľ\":121724,\"èĸħ\":121725,\"æ¨¾\":121726,\"æ©Ľ\":121727,\"æ©ĩ\":121728,\"æ¨µ\":121729,\"æªİ\":121730,\"æ©¹\":121731,\"æ¨½\":121732,\"æ¨¨\":121733,\"æ©¼\":121734,\"å¢¼\":121735,\"æ©Ĳ\":121736,\"ç¿®\":121737,\"éĨĲ\":121738,\"éĨį\":121739,\"éĨļ\":121740,\"ç£²\":121741,\"èµĿ\":121742,\"æ®ª\":121743,\"éľı\":121744,\"éĮ¾\":121745,\"è¾ļ\":121746,\"éģ½\":121747,\"æ°ħ\":121748,\"çŀŁ\":121749,\"çŀł\":121750,\"çŀ°\":121751,\"åļĦ\":121752,\"åļĨ\":121753,\"åĻ¤\":121754,\"æļ¾\":121755,\"è¹Ģ\":121756,\"è¸µ\":121757,\"è¸½\":121758,\"è¹ī\":121759,\"è¹ģ\":121760,\"èŀ¨\":121761,\"èŀĪ\":121762,\"èŀħ\":121763,\"èŀŃ\":121764,\"èŀł\":121765,\"èŀŁ\":121766,\"åĻ±\":121767,\"åĻ«\":121768,\"åĻ»\":121769,\"åĻ¼\":121770,\"ç½¹\":121771,\"åľľ\":121772,\"ä¦\":121773,\"ä¦ĥ\":121774,\"éķĹ\":121775,\"éķĺ\":121776,\"éķļ\":121777,\"éķĽ\":121778,\"éķĿ\":121779,\"éķŀ\":121780,\"éķł\":121781,\"æ°ĩ\":121782,\"æ°Ĩ\":121783,\"ç©ĳ\":121784,\"ç¯Ŀ\":121785,\"ç¯¥\":121786,\"ç¯¦\":121787,\"ç¯ª\":121788,\"ç¯Ļ\":121789,\"çĽ¥\":121790,\"åĬĵ\":121791,\"ç¿±\":121792,\"éŃī\":121793,\"éŃĪ\":121794,\"å¾¼\":121795,\"æŃĻ\":121796,\"èĨ¦\":121797,\"èĨĻ\":121798,\"é²®\":121799,\"é²±\":121800,\"é²³\":121801,\"é²´\":121802,\"é²µ\":121803,\"é²·\":121804,\"é²»\":121805,\"çį´\":121806,\"çįŃ\":121807,\"çį¬\":121808,\"éĤĤ\":121809,\"é¹§\":121810,\"å»¨\":121811,\"èµŁ\":121812,\"çĺ°\":121813,\"å»ª\":121814,\"çĺ¿\":121815,\"çĺµ\":121816,\"çĺ´\":121817,\"çĻĥ\":121818,\"çĺ³\":121819,\"éºĩ\":121820,\"éºĪ\":121821,\"å¬´\":121822,\"å£ħ\":121823,\"ç³Ĺ\":121824,\"çĶĳ\":121825,\"çĩİ\":121826,\"çĩł\":121827,\"çĩĶ\":121828,\"çĩ§\":121829,\"æ¿ĳ\":121830,\"æ¿ī\":121831,\"æ½ŀ\":121832,\"æ¾§\":121833,\"æ¾¹\":121834,\"æ¾¥\":121835,\"æ¾¶\":121836,\"æ¿Ĥ\":121837,\"è¤°\":121838,\"çª¸\":121839,\"å¬ĸ\":121840,\"çĬŁ\":121841,\"éļ°\":121842,\"å¬Ĺ\":121843,\"é¢¡\":121844,\"ç¼±\":121845,\"ç¼²\":121846,\"ç¼³\":121847,\"çĴ©\":121848,\"çĴª\":121849,\"èŀ«\":121850,\"æĵ¤\":121851,\"å£ķ\":121852,\"è§³\":121853,\"ç½Ħ\":121854,\"æĵ¢\":121855,\"èĸ¹\":121856,\"éŀ¡\":121857,\"éŀ¬\":121858,\"èĸ·\":121859,\"èĹĵ\":121860,\"èĹģ\":121861,\"æªĦ\":121862,\"æª©\":121863,\"æĩĭ\":121864,\"éĨ¢\":121865,\"ç¿³\":121866,\"ç¤ħ\":121867,\"ç£´\":121868,\"é¹©\":121869,\"é¾ĭ\":121870,\"é¾Į\":121871,\"è±³\":121872,\"å£ĳ\":121873,\"é»»\":121874,\"åļı\":121875,\"åļħ\":121876,\"è¹ĳ\":121877,\"è¹Ĵ\":121878,\"è¹Ĭ\":121879,\"èŁ¥\":121880,\"èŀ¬\":121881,\"èŀµ\":121882,\"çĸĥ\":121883,\"èŀ³\":121884,\"èŁĳ\":121885,\"åļĵ\":121886,\"ç½½\":121887,\"ç½¾\":121888,\"å¶·\":121889,\"é»ľ\":121890,\"é»Ŀ\":121891,\"é«ģ\":121892,\"é«Ģ\":121893,\"éķ¡\":121894,\"éķ¢\":121895,\"éķ£\":121896,\"éķ¦\":121897,\"éķ§\":121898,\"éķ©\":121899,\"éķª\":121900,\"éķ«\":121901,\"ç½ħ\":121902,\"ç°Į\":121903,\"ç¯¾\":121904,\"ç¯¼\":121905,\"ç°ĸ\":121906,\"ç°ĭ\":121907,\"é¼¢\":121908,\"åĦ¡\":121909,\"é¹ª\":121910,\"é¼¾\":121911,\"çļ¤\":121912,\"éŃį\":121913,\"é¾ł\":121914,\"ç¹ĩ\":121915,\"è²ĺ\":121916,\"éĤĪ\":121917,\"è²Ķ\":121918,\"èĩĮ\":121919,\"èĨ»\":121920,\"èĩĨ\":121921,\"èĩĥ\":121922,\"é²¼\":121923,\"é²½\":121924,\"é³Ģ\":121925,\"é³ĥ\":121926,\"é³ħ\":121927,\"é³ĩ\":121928,\"é³Ĭ\":121929,\"èŀ½\":121930,\"çĩ®\":121931,\"é¹«\":121932,\"ç³ľ\":121933,\"ç¸»\":121934,\"çĻį\":121935,\"éºĭ\":121936,\"æĩĳ\":121937,\"æ¿¡\":121938,\"æ¿®\":121939,\"æ¿ŀ\":121940,\"æ¿ł\":121941,\"æ¿¯\":121942,\"è¹ĩ\":121943,\"è¬ĩ\":121944,\"éĤĥ\":121945,\"è¥ģ\":121946,\"æªĹ\":121947,\"æĵĺ\":121948,\"åŃº\":121949,\"éļ³\":121950,\"å¬·\":121951,\"èŁĬ\":121952,\"é¹¬\":121953,\"éįª\":121954,\"éıĬ\":121955,\"é¬Ī\":121956,\"é¬ĥ\":121957,\"çŀ½\":121958,\"éŀ¯\":121959,\"éŀ¨\":121960,\"éŀ«\":121961,\"éŀ§\":121962,\"éŀ£\":121963,\"èĹľ\":121964,\"èĹł\":121965,\"éĨª\":121966,\"è¹Ļ\":121967,\"ç¤ĵ\":121968,\"çĩ¹\":121969,\"é¤®\":121970,\"çŀ¿\":121971,\"æĽĽ\":121972,\"é¢¢\":121973,\"èºĩ\":121974,\"è¹ļ\":121975,\"èŁĽ\":121976,\"èŁª\":121977,\"èŁł\":121978,\"èŁ®\":121979,\"é¹®\":121980,\"é»ł\":121981,\"é»Ł\":121982,\"é«ħ\":121983,\"é«Ĥ\":121984,\"éķ¬\":121985,\"éķŃ\":121986,\"éķ¯\":121987,\"é¦¥\":121988,\"ç°Ł\":121989,\"ç°ª\":121990,\"é¼¬\":121991,\"éĽł\":121992,\"èīŁ\":121993,\"é³İ\":121994,\"é³ı\":121995,\"é³Ĳ\":121996,\"çĻŀ\":121997,\"çĻĶ\":121998,\"ç³¨\":121999,\"è¹©\":122000,\"éİı\":122001,\"éĤĭ\":122002,\"é¬ı\":122003,\"æĶī\":122004,\"éŀ²\":122005,\"éŀ´\":122006,\"èĹ¿\":122007,\"èĺ§\":122008,\"èĺħ\":122009,\"éĨ®\":122010,\"éĨ¯\":122011,\"éħĥ\":122012,\"éľª\":122013,\"éľŃ\":122014,\"éľ¨\":122015,\"é»¼\":122016,\"åļ¯\":122017,\"è¹°\":122018,\"è¹¶\":122019,\"è¹½\":122020,\"è¹¼\":122021,\"è¹´\":122022,\"è¹¾\":122023,\"è¹¿\":122024,\"èłĸ\":122025,\"èłĵ\":122026,\"èŁ¾\":122027,\"èłĬ\":122028,\"é»¢\":122029,\"é«ĭ\":122030,\"é«Į\":122031,\"éķ²\":122032,\"ç±Ģ\":122033,\"é½ģ\":122034,\"éŃĳ\":122035,\"èī¨\":122036,\"é³ĵ\":122037,\"é³Ķ\":122038,\"é³ķ\":122039,\"é³Ĺ\":122040,\"é³Ļ\":122041,\"éıĸ\":122042,\"ç¾¸\":122043,\"ã¸Ĩ\":122044,\"çĢ£\":122045,\"çĢĽ\":122046,\"è¥¦\":122047,\"è°¶\":122048,\"è¥ŀ\":122049,\"éª¥\":122050,\"ç¼µ\":122051,\"çĵĴ\":122052,\"æĶĺ\":122053,\"èĺ©\":122054,\"èĺĸ\":122055,\"éĨ´\":122056,\"éľ°\":122057,\"éħĨ\":122058,\"çŁį\":122059,\"èºħ\":122060,\"é¼į\":122061,\"å·ī\":122062,\"é»©\":122063,\"é»¥\":122064,\"é»ª\":122065,\"éķ³\":122066,\"éķ´\":122067,\"é»§\":122068,\"çºĤ\":122069,\"çĴº\":122070,\"é¼¯\":122071,\"èĩľ\":122072,\"é³ľ\":122073,\"é³Ŀ\":122074,\"é³Ł\":122075,\"çį¾\":122076,\"åŃĢ\":122077,\"éª§\":122078,\"çĵĺ\":122079,\"é¼Ļ\":122080,\"éĨº\":122081,\"ç¤´\":122082,\"é¢¦\":122083,\"æĽ©\":122084,\"é³¢\":122085,\"éºĿ\":122086,\"å¤Ķ\":122087,\"çĪĿ\":122088,\"çģı\":122089,\"ç¦³\":122090,\"éĲ¾\":122091,\"ç¾¼\":122092,\"èł¡\":122093,\"èĢ±\":122094,\"é¹³\":122095,\"æ°į\":122096,\"é¥ķ\":122097,\"èºĲ\":122098,\"é«ĳ\":122099,\"éķµ\":122100,\"ç©°\":122101,\"é¥Ķ\":122102,\"é¬»\":122103,\"é¬Ł\":122104,\"è¶±\":122105,\"æĶ«\":122106,\"æĶ¥\":122107,\"é¢§\":122108,\"èºľ\":122109,\"é¼¹\":122110,\"çĻ¯\":122111,\"èł²\":122112,\"èł¹\":122113,\"èºŀ\":122114,\"è¡¢\":122115,\"çģŀ\":122116,\"è¥»\":122117,\"çºĽ\":122118,\"é¬£\":122119,\"æĶ®\":122120,\"åĽĶ\":122121,\"é¦ķ\":122122,\"æĪĨ\":122123,\"çĪ¨\":122124,\"é½ī\":122125,\"äºį\":122126,\"å°¢\":122127,\"å½³\":122128,\"åį¬\":122129,\"æ®³\":122130,\"ðłĻ¶\":122131,\"æ¯Į\":122132,\"éĤĺ\":122133,\"æĪĭ\":122134,\"åľ¢\":122135,\"æ°ķ\":122136,\"ä¼ĭ\":122137,\"ä»Ŀ\":122138,\"åĨ®\":122139,\"æ°¿\":122140,\"æ±Ī\":122141,\"æ°¾\":122142,\"å¿ī\":122143,\"å®Ħ\":122144,\"ð¬£Ļ\":122145,\"è®±\":122146,\"æīŀ\":122147,\"åľ²\":122148,\"åľ«\":122149,\"èĬı\":122150,\"èĬĥ\":122151,\"æľ³\":122152,\"æľ¸\":122153,\"ð¨Ļ\":122154,\"ð¨Ļ¸\":122155,\"éĤ¨\":122156,\"åĲĴ\":122157,\"åĲĸ\":122158,\"å±¼\":122159,\"å±¾\":122160,\"è¾¿\":122161,\"éĴĨ\":122162,\"ä»³\":122163,\"ä¼£\":122164,\"ä¼Ī\":122165,\"çĻ¿\":122166,\"çĶª\":122167,\"éĤł\":122168,\"çĬ´\":122169,\"åĨ±\":122170,\"éĤ¡\":122171,\"ð¬ĩķ\":122172,\"æ±ĭ\":122173,\"äľ\":122174,\"äľ£\":122175,\"è®»\":122176,\"ð¬£ŀ\":122177,\"åŃĸ\":122178,\"ð¬ĺĵ\":122179,\"çº©\":122180,\"çİĴ\":122181,\"çİĵ\":122182,\"çİĺ\":122183,\"çİļ\":122184,\"åĪ¬\":122185,\"ð«ŃŁ\":122186,\"åĿľ\":122187,\"åĿī\":122188,\"æī½\":122189,\"ð«Ń¢\":122190,\"åĿĭ\":122191,\"æīº\":122192,\"ã§ĳ\":122193,\"æ¯Ĳ\":122194,\"èĬ°\":122195,\"èĬ£\":122196,\"èĭĬ\":122197,\"èĭī\":122198,\"èĬĺ\":122199,\"èĬ´\":122200,\"èĬł\":122201,\"ð«ĩ\":122202,\"ð«ĩŃ\":122203,\"èĬ¤\":122204,\"æĿķ\":122205,\"æĿĻ\":122206,\"æĿĦ\":122207,\"æĿ§\":122208,\"æĿ©\":122209,\"å°ª\":122210,\"å°¨\":122211,\"è½ª\":122212,\"ð«ĲĦ\":122213,\"åĿĴ\":122214,\"èĬĪ\":122215,\"æĹ´\":122216,\"æĹµ\":122217,\"åĳĻ\":122218,\"ãķ\":122219,\"ãķ®\":122220,\"å²į\":122221,\"ð«µ\":122222,\"ð«µ·\":122223,\"å²ł\":122224,\"å²ľ\":122225,\"åĳĩ\":122226,\"åĨı\":122227,\"è§ĥ\":122228,\"å²Ļ\":122229,\"ä¼¾\":122230,\"ãĳĩ\":122231,\"ä¼Ń\":122232,\"ä½ĸ\":122233,\"ä¼²\":122234,\"ä½ģ\":122235,\"é£ı\":122236,\"çĭĥ\":122237,\"éĹ¶\":122238,\"æ±§\":122239,\"æ±«\":122240,\"ð£²ĺ\":122241,\"ð£²Ĺ\":122242,\"æ²Ħ\":122243,\"æ²ĺ\":122244,\"ð¬ĩĻ\":122245,\"æ±Ń\":122246,\"ã³ĩ\":122247,\"æ²ĩ\":122248,\"å¿®\":122249,\"å¿³\":122250,\"å¿º\":122251,\"ð¬£¡\":122252,\"ç¥ĥ\":122253,\"è¯ĩ\":122254,\"éĤ²\":122255,\"è¯İ\":122256,\"è¯Ĳ\":122257,\"å±ĥ\":122258,\"ð«¸\":122259,\"ð«¸©\":122260,\"å²Ĭ\":122261,\"éĺ½\":122262,\"ä¢º\":122263,\"éĺ¼\":122264,\"å¦§\":122265,\"å¦ĺ\":122266,\"ð¨ļ\":122267,\"ð¨ļķ\":122268,\"çº®\":122269,\"é©²\":122270,\"ð«ĺľ\":122271,\"çº»\":122272,\"ð¬ĺĺ\":122273,\"ð«ĺĿ\":122274,\"çº¼\":122275,\"çİ¤\":122276,\"çİŀ\":122277,\"çİ±\":122278,\"çİŁ\":122279,\"éĤ½\":122280,\"éĤ¿\":122281,\"åĿ¥\":122282,\"åĿ°\":122283,\"åĿ¬\":122284,\"åĿ½\":122285,\"å¼Ĩ\":122286,\"èĢµ\":122287,\"ä¢¼\":122288,\"ð¦Ń\":122289,\"ð¦Ńľ\":122290,\"èĮĭ\":122291,\"èĭ§\":122292,\"èĭ¾\":122293,\"èĭł\":122294,\"æŀħ\":122295,\"ãŃİ\":122296,\"æŀĺ\":122297,\"æŀį\":122298,\"çŁ¼\":122299,\"çŁ»\":122300,\"åĮ¼\":122301,\"ð¬¨Ĥ\":122302,\"ð¬Ģ©\":122303,\"ð¬Ģª\":122304,\"æĹ¿\":122305,\"æĺĦ\":122306,\"æĺĴ\":122307,\"æĺĪ\":122308,\"åĴī\":122309,\"åĴĩ\":122310,\"åĴį\":122311,\"å²µ\":122312,\"å²½\":122313,\"å²¨\":122314,\"å²ŀ\":122315,\"å³Ĥ\":122316,\"ãŁ\":122317,\"ãŁĥ\":122318,\"åĽ·\":122319,\"ð¬¬©\":122320,\"éĴĲ\":122321,\"éĴĶ\":122322,\"éĴĸ\":122323,\"çī¥\":122324,\"ä½´\":122325,\"åŀĪ\":122326,\"ä¾ģ\":122327,\"ä¾¹\":122328,\"ä½¸\":122329,\"ä½º\":122330,\"éļ¹\":122331,\"ãĳĬ\":122332,\"ä¾Ĥ\":122333,\"ä½½\":122334,\"ä¾ĺ\":122335,\"éĥĪ\":122336,\"èĪł\":122337,\"éĥĲ\":122338,\"éĥĥ\":122339,\"æĶ½\":122340,\"èĤŃ\":122341,\"èĤ¸\":122342,\"èĤ·\":122343,\"çĭī\":122344,\"çĭĿ\":122345,\"é¥³\":122346,\"å¿ŀ\":122347,\"çĤĮ\":122348,\"çĤĨ\":122349,\"æ³Ļ\":122350,\"æ²º\":122351,\"æ³Ĥ\":122352,\"æ³ľ\":122353,\"æ³ĥ\":122354,\"æ³ĩ\":122355,\"æĢĬ\":122356,\"å³ĥ\":122357,\"ç©¸\":122358,\"ç¥ĭ\":122359,\"ç¥Ĭ\":122360,\"ð«į£\":122361,\"ð¬£³\":122362,\"ð¬©½\":122363,\"é¸¤\":122364,\"å¼¢\":122365,\"å¼¨\":122366,\"éĻĳ\":122367,\"ð¬®¿\":122368,\"éĻİ\":122369,\"ð¬¯Ģ\":122370,\"åįº\":122371,\"ä¹¸\":122372,\"å¦Ń\":122373,\"å§Ī\":122374,\"ð«°\":122375,\"ð«°Ľ\":122376,\"è¿³\":122377,\"åıķ\":122378,\"ð¬³µ\":122379,\"é©µ\":122380,\"ð¬³¶\":122381,\"äĮ\":122382,\"äĮ¹\":122383,\"é©º\":122384,\"ð«łĬ\":122385,\"ç»ĭ\":122386,\"ç»Ĳ\":122387,\"çłī\":122388,\"èĢĶ\":122389,\"ãĽĥ\":122390,\"çİ¶\":122391,\"çıĩ\":122392,\"çıħ\":122393,\"ð¬įĽ\":122394,\"çıĭ\":122395,\"çİ¹\":122396,\"çıĮ\":122397,\"çİ¿\":122398,\"éŁ¨\":122399,\"åŀļ\":122400,\"åŀ¯\":122401,\"åŀĻ\":122402,\"åŀ²\":122403,\"åŁı\":122404,\"åŀį\":122405,\"èĢĩ\":122406,\"é¿į\":122407,\"åŀİ\":122408,\"åŀ´\":122409,\"åŀŁ\":122410,\"åŀŀ\":122411,\"æĮĵ\":122412,\"åŀµ\":122413,\"åŀı\":122414,\"æĭ¶\":122415,\"èįĸ\":122416,\"èįģ\":122417,\"èįĻ\":122418,\"èįĽ\":122419,\"èĮĪ\":122420,\"èĮ½\":122421,\"èįĦ\":122422,\"èĮº\":122423,\"ð¬ľ¬\":122424,\"èįĵ\":122425,\"èĮ³\":122426,\"ð¦°\":122427,\"ð¦°¡\":122428,\"èĮĽ\":122429,\"èįŃ\":122430,\"ãŃķ\":122431,\"æŁ·\":122432,\"æŁĥ\":122433,\"æŁĬ\":122434,\"æŀ¹\":122435,\"æłĲ\":122436,\"æŁĸ\":122437,\"éĥļ\":122438,\"åīħ\":122439,\"ä´ĵ\":122440,\"è¿º\":122441,\"åİĸ\":122442,\"çłĨ\":122443,\"çłĳ\":122444,\"çłĦ\":122445,\"èĢı\":122446,\"å¥ĵ\":122447,\"ä¶\":122448,\"ä¶®\":122449,\"è½µ\":122450,\"è½·\":122451,\"è½¹\":122452,\"è½º\":122453,\"æĺº\":122454,\"ðª¾\":122455,\"ðª¾¢\":122456,\"æĺ½\":122457,\"çĽ·\":122458,\"åĴ¡\":122459,\"åĴº\":122460,\"æĺ³\":122461,\"æĺ£\":122462,\"æĺ¤\":122463,\"æĺ«\":122464,\"æĺ¡\":122465,\"åĴ¥\":122466,\"æĺª\":122467,\"èĻ·\":122468,\"èĻ¸\":122469,\"åĵĥ\":122470,\"å³ĺ\":122471,\"èĢĳ\":122472,\"å³Ľ\":122473,\"ðª¨°\":122474,\"å³Ĺ\":122475,\"å³§\":122476,\"å¸¡\":122477,\"éĴĺ\":122478,\"ð«ĵ§\":122479,\"éĴľ\":122480,\"ð¬¬®\":122481,\"ð¬¬±\":122482,\"ð¬¬Ń\":122483,\"éĴª\":122484,\"éĴ¬\":122485,\"éĴŃ\":122486,\"çŁ§\":122487,\"ç§¬\":122488,\"ä¿«\":122489,\"èĪģ\":122490,\"ä¿ľ\":122491,\"ä¿Ļ\":122492,\"ä¿į\":122493,\"åŀķ\":122494,\"è¡İ\":122495,\"èĪ£\":122496,\"å¼ĩ\":122497,\"ä¾´\":122498,\"é¸§\":122499,\"äı¡\":122500,\"èĥł\":122501,\"ð¦Ļ¶\":122502,\"èĥĪ\":122503,\"èĥ©\":122504,\"èĥ£\":122505,\"æľı\":122506,\"é£Ĳ\":122507,\"è¨Ħ\":122508,\"é¥»\":122509,\"åº¤\":122510,\"çĸ¢\":122511,\"çĤ£\":122512,\"çĤŁ\":122513,\"ã¶\":122514,\"ã¶²\":122515,\"æ´Ń\":122516,\"æ´ĺ\":122517,\"æ´ĵ\":122518,\"æ´¿\":122519,\"ã³ļ\":122520,\"æ³ļ\":122521,\"æµĪ\":122522,\"æµī\":122523,\"æ´¸\":122524,\"æ´ĳ\":122525,\"æ´¢\":122526,\"æ´Ī\":122527,\"æ´ļ\":122528,\"æ´º\":122529,\"æ´¨\":122530,\"æµĲ\":122531,\"ã³ĺ\":122532,\"æ´´\":122533,\"æ´£\":122534,\"æģĶ\":122535,\"å®¬\":122536,\"çªĢ\":122537,\"æīĤ\":122538,\"è¢Ĩ\":122539,\"ç¥ı\":122540,\"ç¥Ĳ\":122541,\"ç¥ķ\":122542,\"åıļ\":122543,\"éĻ§\":122544,\"éĻŀ\":122545,\"å¨Ģ\":122546,\"å§ŀ\":122547,\"å§±\":122548,\"å§¤\":122549,\"å§¶\":122550,\"å§½\":122551,\"æŀ²\":122552,\"ç»ĸ\":122553,\"éªĥ\":122554,\"ð¬ĺ¡\":122555,\"ð¬³½\":122556,\"ð¬ĺ©\":122557,\"ð«Ħ§\":122558,\"å½ĸ\":122559,\"éªī\":122560,\"æģĿ\":122561,\"çıª\":122562,\"çıĽ\":122563,\"çı¹\":122564,\"çĲĬ\":122565,\"çİ¼\":122566,\"çıĸ\":122567,\"ðªŁ\":122568,\"ðªŁĿ\":122569,\"çı½\":122570,\"çı¦\":122571,\"çı«\":122572,\"çıĴ\":122573,\"ð¬į¤\":122574,\"çı¢\":122575,\"çıķ\":122576,\"çıĿ\":122577,\"ð«Ń¼\":122578,\"åŁĹ\":122579,\"åŀ¾\":122580,\"åŀº\":122581,\"åŁĨ\":122582,\"åŀ¿\":122583,\"åŁĮ\":122584,\"åŁĩ\":122585,\"èİ°\":122586,\"èĮĿ\":122587,\"ð¬ľ¯\":122588,\"éĦĢ\":122589,\"èİ¶\":122590,\"èİĿ\":122591,\"äĵĸ\":122592,\"èİĻ\":122593,\"æł»\":122594,\"æ¡ł\":122595,\"ð¬Ĥ\":122596,\"ð¬Ĥ©\":122597,\"æ¡Ħ\":122598,\"æ¢ł\":122599,\"æł´\":122600,\"æ¢´\":122601,\"æłĴ\":122602,\"éħİ\":122603,\"éħı\":122604,\"ð«łĨ\":122605,\"çłµ\":122606,\"çłł\":122607,\"çł«\":122608,\"çł¬\":122609,\"ç¡ģ\":122610,\"æģ§\":122611,\"ç¿ĥ\":122612,\"éĥª\":122613,\"ð¨Ĳ\":122614,\"ð¨ĲĪ\":122615,\"è¾Ģ\":122616,\"è¾ģ\":122617,\"ð¬Į\":122618,\"ð¬ĮĹ\":122619,\"åīķ\":122620,\"èµĢ\":122621,\"åĵ¢\":122622,\"æĻħ\":122623,\"æĻĬ\":122624,\"åĶĿ\":122625,\"åĵ³\":122626,\"åĵ±\":122627,\"åĨĶ\":122628,\"æĻĶ\":122629,\"æĻĲ\":122630,\"çķĸ\":122631,\"èļĦ\":122632,\"èļĨ\":122633,\"ð«ĳ\":122634,\"ð«ĳ¡\":122635,\"å¸±\":122636,\"å´ģ\":122637,\"å³¿\":122638,\"ðª¨¶\":122639,\"å´Ħ\":122640,\"å¸¨\":122641,\"å´Ģ\":122642,\"èµĨ\":122643,\"ð¬¬¸\":122644,\"éĴ·\":122645,\"ð¬¬»\":122646,\"ð¬¬¹\":122647,\"ð¬¬¿\":122648,\"ð¬Ńģ\":122649,\"çľļ\":122650,\"çĶ¡\":122651,\"ç¬«\":122652,\"åĢ»\":122653,\"åĢ´\":122654,\"èĦ©\":122655,\"åĢ®\":122656,\"åĢķ\":122657,\"åĢŀ\":122658,\"ð«¢\":122659,\"ð«¢¸\":122660,\"åĢĵ\":122661,\"åĢ§\":122662,\"è¡ĥ\":122663,\"èĻĴ\":122664,\"èĪŃ\":122665,\"èĪ¯\":122666,\"èĪ¥\":122667,\"çĵŀ\":122668,\"é¬¯\":122669,\"é¸°\":122670,\"èĦİ\":122671,\"æľĵ\":122672,\"èĥ²\":122673,\"èĻĵ\":122674,\"é±½\":122675,\"çĭ´\":122676,\"å³±\":122677,\"çĭ»\":122678,\"çľ¢\":122679,\"ð«Ĺ§\":122680,\"åĭį\":122681,\"çĹĦ\":122682,\"çĸ°\":122683,\"çĹĥ\":122684,\"ç«ĺ\":122685,\"ç¾ĸ\":122686,\"ç¾ĵ\":122687,\"æ¡Ĭ\":122688,\"æķī\":122689,\"çĥł\":122690,\"çĥĶ\":122691,\"çĥ¶\":122692,\"çĥ»\":122693,\"ð¬ĬĪ\":122694,\"æ¶į\":122695,\"æµ¡\":122696,\"æµŃ\":122697,\"æµ¬\":122698,\"æ¶Ħ\":122699,\"æ¶¢\":122700,\"æ¶Ĳ\":122701,\"æµ°\":122702,\"æµŁ\":122703,\"æµĽ\":122704,\"æµ¼\":122705,\"æµ²\":122706,\"æ¶ĺ\":122707,\"æĤĪ\":122708,\"æĤĥ\":122709,\"æĤ¢\":122710,\"ð¬ĴĪ\":122711,\"å®§\":122712,\"çªħ\":122713,\"çªĬ\":122714,\"çªİ\":122715,\"æīħ\":122716,\"æīĨ\":122717,\"è¢ª\":122718,\"è¢Ĺ\":122719,\"è¢¯\":122720,\"ç¥§\":122721,\"éļº\":122722,\"åł²\":122723,\"çĸį\":122724,\"ð¨º\":122725,\"ð¨ºĻ\":122726,\"éĻ´\":122727,\"çĥĿ\":122728,\"çł®\":122729,\"ãĽļ\":122730,\"åĵ¿\":122731,\"ç¿Ģ\":122732,\"ç¿Ĥ\":122733,\"åīŁ\":122734,\"ð¬³¿\":122735,\"ð«Ħ¨\":122736,\"ç»¤\":122737,\"éªį\":122738,\"ð¬ĺ«\":122739,\"äĤ\":122740,\"äĤ®\":122741,\"çĲİ\":122742,\"çı¸\":122743,\"çıµ\":122744,\"çĲĦ\":122745,\"çĲĪ\":122746,\"çĲĢ\":122747,\"çıº\":122748,\"æİŃ\":122749,\"åłİ\":122750,\"åłĲ\":122751,\"åŁ¼\":122752,\"æİİ\":122753,\"åŁ«\":122754,\"åłĮ\":122755,\"æĻ¢\":122756,\"ð«®\":122757,\"ð«®ĥ\":122758,\"æİŀ\":122759,\"åŁª\":122760,\"å£¸\":122761,\"ãĻį\":122762,\"èģį\":122763,\"èıĿ\":122764,\"èĲļ\":122765,\"èı¥\":122766,\"èİ¿\":122767,\"äĵ«\":122768,\"åĭļ\":122769,\"äĵ¬\":122770,\"èĲĨ\":122771,\"èıĤ\":122772,\"èıį\":122773,\"èı¼\":122774,\"èĲ£\":122775,\"äĵ¨\":122776,\"èıī\":122777,\"äĵĽ\":122778,\"æ¢¼\":122779,\"æ¢½\":122780,\"æ¡²\":122781,\"æ¢¾\":122782,\"æ¡¯\":122783,\"æ¢£\":122784,\"æ¢Į\":122785,\"æ¡¹\":122786,\"æķĶ\":122787,\"åİ£\":122788,\"ç¡Ķ\":122789,\"é¿İ\":122790,\"ç¡Ļ\":122791,\"ç¡ļ\":122792,\"ç¡Ĭ\":122793,\"ç¡į\":122794,\"åĭĶ\":122795,\"ä´ķ\":122796,\"é¾ģ\":122797,\"éĢ´\":122798,\"åĶª\":122799,\"åķ«\":122800,\"ç¿Ī\":122801,\"ã«\":122802,\"ã«°\":122803,\"æĻĻ\":122804,\"çķ¤\":122805,\"ð¬±ĸ\":122806,\"è¶¼\":122807,\"è·Ĥ\":122808,\"èĽĥ\":122809,\"èļ²\":122810,\"ð¬Ł½\":122811,\"èļº\":122812,\"åķ´\":122813,\"äİĥ\":122814,\"å´§\":122815,\"å´Ł\":122816,\"å´ŀ\":122817,\"å´Ĵ\":122818,\"å´Į\":122819,\"å´¡\":122820,\"éĵı\":122821,\"ð«ĵ¯\":122822,\"ð«Ł¹\":122823,\"éĵķ\":122824,\"ð«Ł¼\":122825,\"éĵĸ\":122826,\"éĵĺ\":122827,\"éĵļ\":122828,\"éĵŀ\":122829,\"éĵ¥\":122830,\"éĵ´\":122831,\"çī»\":122832,\"çī¿\":122833,\"ç¨Ĩ\":122834,\"ç¬±\":122835,\"ç¬¯\":122836,\"åģ°\":122837,\"åģ¡\":122838,\"é¸º\":122839,\"åģŃ\":122840,\"åģ²\":122841,\"åģģ\":122842,\"ã¿\":122843,\"ã¿ł\":122844,\"éĦħ\":122845,\"åģĵ\":122846,\"å¾Ľ\":122847,\"è¡Ĵ\":122848,\"èĪ³\":122849,\"èĪ²\":122850,\"é¸¼\":122851,\"æĤĨ\":122852,\"éĦĥ\":122853,\"çĵ»\":122854,\"äĿ\":122855,\"äĿĻ\":122856,\"èĦ¶\":122857,\"èĦŀ\":122858,\"èĦŁ\":122859,\"äı²\":122860,\"é±¾\":122861,\"çĮĩ\":122862,\"çĮĬ\":122863,\"çĮĦ\":122864,\"è§ĸ\":122865,\"ðłħ\":122866,\"ðłħ¤\":122867,\"åº±\":122868,\"åº¼\":122869,\"åº³\":122870,\"çĹĵ\":122871,\"ä´Ķ\":122872,\"ç««\":122873,\"åłĥ\":122874,\"éĺĮ\":122875,\"ç¾Ŀ\":122876,\"ç¾ķ\":122877,\"çĦĨ\":122878,\"çĥº\":122879,\"çĦĮ\":122880,\"æ·ı\":122881,\"ð¬ĩ¹\":122882,\"æ·Ł\":122883,\"æ·ľ\":122884,\"æ·´\":122885,\"æ·¯\":122886,\"æ¹´\":122887,\"æ¶´\":122888,\"ð¬į¡\":122889,\"ã¥\":122890,\"ã¥Ħ\":122891,\"æĥĽ\":122892,\"æĥĶ\":122893,\"æĤ°\":122894,\"æĥĻ\":122895,\"å¯ģ\":122896,\"éĢŃ\":122897,\"ð¬¤ĩ\":122898,\"ð«į¯\":122899,\"è¢¼\":122900,\"è£Ī\":122901,\"ç¥²\":122902,\"ð¬¤Ĭ\":122903,\"ð«į²\":122904,\"è°ŀ\":122905,\"èī´\":122906,\"å¼¸\":122907,\"å¼¶\":122908,\"ð¬¯İ\":122909,\"éļĥ\":122910,\"å©ŀ\":122911,\"å¨µ\":122912,\"å©¼\":122913,\"åªĸ\":122914,\"å©³\":122915,\"å©į\":122916,\"å©Į\":122917,\"å©«\":122918,\"å©¤\":122919,\"å©ĺ\":122920,\"å©ł\":122921,\"ð¬ĺ¬\":122922,\"ð¬ĺŃ\":122923,\"ð¬´Ĥ\":122924,\"ð«ĺ¦\":122925,\"ç»¹\":122926,\"ð«Łħ\":122927,\"ð¬ĺ¯\":122928,\"éªķ\":122929,\"ð«ĺ§\":122930,\"çµľ\":122931,\"çı·\":122932,\"çĲ²\":122933,\"çĲ¡\":122934,\"çĲŁ\":122935,\"çĲĶ\":122936,\"çĲŃ\":122937,\"åł¾\":122938,\"åł¼\":122939,\"æıķ\":122940,\"ãĻĺ\":122941,\"åł§\":122942,\"åĸĨ\":122943,\"åł¨\":122944,\"å¡ħ\":122945,\"åłł\":122946,\"çµ·\":122947,\"ðª£\":122948,\"ðª£»\":122949,\"ð¡İ\":122950,\"ð¡İļ\":122951,\"èĳľ\":122952,\"æĥİ\":122953,\"èĲ³\":122954,\"èĳĻ\":122955,\"éĿ¬\":122956,\"èĳ´\":122957,\"èĴĩ\":122958,\"èĴĪ\":122959,\"éĦļ\":122960,\"èĴī\":122961,\"èĵĩ\":122962,\"èĲ©\":122963,\"èĳ°\":122964,\"èĳİ\":122965,\"éĦĳ\":122966,\"èĴİ\":122967,\"èĳĸ\":122968,\"èĴĦ\":122969,\"èĲ¹\":122970,\"æ£¤\":122971,\"æ£½\":122972,\"æ£«\":122973,\"æ¤ĵ\":122974,\"æ¤ĳ\":122975,\"ð¬ĥ\":122976,\"ð¬ĥĬ\":122977,\"é¹Ģ\":122978,\"æ¤Ĩ\":122979,\"æ£ĵ\":122980,\"æ£¬\":122981,\"æ£ª\":122982,\"æ¤Ģ\":122983,\"æ¥Ĺ\":122984,\"ð¬·\":122985,\"ð¬·ķ\":122986,\"çĶ¦\":122987,\"éħ¦\":122988,\"è§Į\":122989,\"å¥¡\":122990,\"çļķ\":122991,\"ç¡ª\":122992,\"æ¬¹\":122993,\"è©Ł\":122994,\"ð«ĲĲ\":122995,\"è¾Į\":122996,\"æ£Ĳ\":122997,\"é¾Ĥ\":122998,\"ð¬¹\":122999,\"ð¬¹¼\":123000,\"é»¹\":123001,\"çīļ\":123002,\"çĿİ\":123003,\"æĻ«\":123004,\"æĻª\":123005,\"æĻ±\":123006,\"ð§\":123007,\"ð§¿\":123008,\"ð§¿¹\":123009,\"èĽĳ\":123010,\"çķ¯\":123011,\"æĸĿ\":123012,\"åĸ¤\":123013,\"å´¶\":123014,\"åµģ\":123015,\"ð«¶\":123016,\"ð«¶ĩ\":123017,\"å´¾\":123018,\"åµħ\":123019,\"å´¿\":123020,\"åµļ\":123021,\"ç¿Ļ\":123022,\"ð«ĸ®\":123023,\"åľĮ\":123024,\"åľĲ\":123025,\"èµĳ\":123026,\"èµĴ\":123027,\"é¿ı\":123028,\"éĵ¹\":123029,\"ð¬ŃĬ\":123030,\"éĵ½\":123031,\"ð¨±ĩ\":123032,\"ð«ĵ¶\":123033,\"éĶĬ\":123034,\"éĶį\":123035,\"éĶİ\":123036,\"ð¬Ńİ\":123037,\"éĶĵ\":123038,\"çĬĩ\":123039,\"é¢ĭ\":123040,\"ç¨Į\":123041,\"çŃĢ\":123042,\"çŃĺ\":123043,\"çŃľ\":123044,\"çŃ¥\":123045,\"çŃħ\":123046,\"åĤĥ\":123047,\"åĤī\":123048,\"ç¿Ľ\":123049,\"åĤĴ\":123050,\"åĤķ\":123051,\"èĪ¾\":123052,\"çķ¬\":123053,\"ð«ĸ¯\":123054,\"èĦ¿\":123055,\"èħĺ\":123056,\"äĲ\":123057,\"äĲĥ\":123058,\"èħĻ\":123059,\"èħĴ\":123060,\"ð¬±Ł\":123061,\"é²ĥ\":123062,\"çĮ°\":123063,\"ð«Ľ\":123064,\"ð«ĽŃ\":123065,\"çĮ¯\":123066,\"ãº\":123067,\"ãºĦ\":123068,\"é¦ī\":123069,\"åĩĵ\":123070,\"éĦĹ\":123071,\"ð«·\":123072,\"ð«··\":123073,\"å»ĭ\":123074,\"å»Ĩ\":123075,\"éĦĮ\":123076,\"ç²¢\":123077,\"éģĨ\":123078,\"æĹĲ\":123079,\"ð¬®±\":123080,\"çĦŀ\":123081,\"ð¬Ĭ¤\":123082,\"æ¬»\":123083,\"ð£¸\":123084,\"ð£¸£\":123085,\"æºļ\":123086,\"æºģ\":123087,\"æ¹Ŀ\":123088,\"æ¸°\":123089,\"æ¹ĵ\":123090,\"ã´\":123091,\"ã´Ķ\":123092,\"æ¸Ł\":123093,\"æºł\":123094,\"æ¸¼\":123095,\"æºĩ\":123096,\"æ¹£\":123097,\"æ¹ĳ\":123098,\"æºŀ\":123099,\"æĦĲ\":123100,\"æĦĥ\":123101,\"æķ©\":123102,\"çĶ¯\":123103,\"æ£¨\":123104,\"æīĬ\":123105,\"è££\":123106,\"ç¥¼\":123107,\"å©»\":123108,\"åªĨ\":123109,\"åªŀ\":123110,\"ãĽ¹\":123111,\"åªĵ\":123112,\"åªĤ\":123113,\"åªĦ\":123114,\"æ¯µ\":123115,\"çŁŀ\":123116,\"ð¬´ĥ\":123117,\"ð«ĺ¨\":123118,\"ç¼Ĭ\":123119,\"ç¼Ĳ\":123120,\"éªĻ\":123121,\"çĳĥ\":123122,\"çĳĵ\":123123,\"çĳħ\":123124,\"çĳĨ\":123125,\"ä´ĸ\":123126,\"çĳĸ\":123127,\"çĳĿ\":123128,\"çĳĶ\":123129,\"çĳĢ\":123130,\"ð¤§\":123131,\"ð¤§Ľ\":123132,\"çĳ³\":123133,\"çĳĤ\":123134,\"å¶ħ\":123135,\"çĳĳ\":123136,\"éģĺ\":123137,\"é«¢\":123138,\"å¡¥\":123139,\"åł½\":123140,\"èµª\":123141,\"æĳĽ\":123142,\"å¡Ŀ\":123143,\"æĲĴ\":123144,\"æĲĮ\":123145,\"èĴ±\":123146,\"èĴ¨\":123147,\"èĵı\":123148,\"èĶĢ\":123149,\"èĵ¢\":123150,\"èĵĤ\":123151,\"èĴ»\":123152,\"èĵ£\":123153,\"æ¤¹\":123154,\"æ¥ª\":123155,\"æ¦ĥ\":123156,\"æ¦ħ\":123157,\"æ¥Ĵ\":123158,\"æ¥©\":123159,\"æ¦ĩ\":123160,\"æ¤¸\":123161,\"æ¥Ļ\":123162,\"æŃħ\":123163,\"ð¬ª\":123164,\"ð¬ª©\":123165,\"ç¢ĥ\":123166,\"ç¢ı\":123167,\"ð¬ĴĶ\":123168,\"ç¢Ī\":123169,\"äĥħ\":123170,\"ç¡¿\":123171,\"éĦł\":123172,\"è¾Ĵ\":123173,\"ð¬¨İ\":123174,\"ð«Ĳĵ\":123175,\"é¾Ĩ\":123176,\"è§ľ\":123177,\"ä£\":123178,\"ä£ĺ\":123179,\"æļķ\":123180,\"é¹į\":123181,\"ð««\":123182,\"ð««ĩ\":123183,\"ã¬Ĭ\":123184,\"æļħ\":123185,\"è·±\":123186,\"èľĲ\":123187,\"èľİ\":123188,\"åµ²\":123189,\"èµĹ\":123190,\"éª±\":123191,\"éĶĸ\":123192,\"ð«ĵ¹\":123193,\"éĶĺ\":123194,\"éĶ³\":123195,\"éĶ§\":123196,\"éĶª\":123197,\"ð¬Ńļ\":123198,\"éĶ«\":123199,\"éĶ¬\":123200,\"ð¬ŃĽ\":123201,\"ç¨ĳ\":123202,\"ç¨Ļ\":123203,\"äħ\":123204,\"äħŁ\":123205,\"ð¬ķ\":123206,\"ð¬ķĤ\":123207,\"çŃ»\":123208,\"çŃ¼\":123209,\"çŃ¶\":123210,\"çŃ¦\":123211,\"çŃ¤\":123212,\"åĤº\":123213,\"é¹İ\":123214,\"åĥĩ\":123215,\"èīħ\":123216,\"èīī\":123217,\"è°¼\":123218,\"è²Ĩ\":123219,\"èħ½\":123220,\"èħ¨\":123221,\"èħ¯\":123222,\"é²ī\":123223,\"é²Ĭ\":123224,\"é²Į\":123225,\"ä²Ł\":123226,\"ð¬¶ĭ\":123227,\"ð¬¶į\":123228,\"é²ı\":123229,\"éĽĬ\":123230,\"çĮº\":123231,\"é£Ķ\":123232,\"è§Ł\":123233,\"ð¦Ŀ¼\":123234,\"é¦Į\":123235,\"è£Ľ\":123236,\"å»Ĵ\":123237,\"çĺħ\":123238,\"éĦĺ\":123239,\"é¹Ĵ\":123240,\"éĦľ\":123241,\"éºĢ\":123242,\"éĦ£\":123243,\"éĺĺ\":123244,\"ð«Ķ¶\":123245,\"çħģ\":123246,\"çħĥ\":123247,\"çħ´\":123248,\"çħĭ\":123249,\"çħŁ\":123250,\"çħĵ\":123251,\"æ»ł\":123252,\"æºį\":123253,\"æº¹\":123254,\"æ»Ĩ\":123255,\"æ»ī\":123256,\"æº¦\":123257,\"æºµ\":123258,\"æ¼·\":123259,\"æ»§\":123260,\"æ»ĺ\":123261,\"æ»į\":123262,\"æĦŃ\":123263,\"æħ¥\":123264,\"æħĨ\":123265,\"å¡±\":123266,\"ð«ĮĢ\":123267,\"è£¼\":123268,\"ç¦ĭ\":123269,\"ç¦Ķ\":123270,\"ç¦ĺ\":123271,\"ç¦Ĵ\":123272,\"è°«\":123273,\"é¹Ķ\":123274,\"ð«ĸ³\":123275,\"æĦį\":123276,\"å«Ħ\":123277,\"åª±\":123278,\"æĪ¤\":123279,\"åĭł\":123280,\"æĪ£\":123281,\"ð«ĺª\":123282,\"ð«ĺ¬\":123283,\"ç¼ŀ\":123284,\"èĢ¤\":123285,\"çĳ§\":123286,\"ð«ŀ\":123287,\"ð«ŀ©\":123288,\"çĳ¨\":123289,\"çĳ±\":123290,\"çĳ·\":123291,\"çĳ¢\":123292,\"æĸł\":123293,\"æĳı\":123294,\"å¢ķ\":123295,\"å¢Ī\":123296,\"å¢Ĳ\":123297,\"å¢ĺ\":123298,\"æĳ´\":123299,\"éĬİ\":123300,\"ð¡Ĳ\":123301,\"ð¡Ĳĵ\":123302,\"å¢ļ\":123303,\"æĴĸ\":123304,\"ðª¤\":123305,\"ðª¤Ĺ\":123306,\"éĿ½\":123307,\"éŀģ\":123308,\"èĶĮ\":123309,\"èĶĪ\":123310,\"èĵ°\":123311,\"èĶ¹\":123312,\"èĶĬ\":123313,\"åĺı\":123314,\"æ¦°\":123315,\"æ¦ĳ\":123316,\"æ§ļ\":123317,\"ð£Ĺ\":123318,\"ð£Ĺĭ\":123319,\"æ§ľ\":123320,\"æ¦į\":123321,\"çĸĲ\":123322,\"ð¬¸ĺ\":123323,\"éħº\":123324,\"éħ¾\":123325,\"éħ²\":123326,\"éħ´\":123327,\"ç¢¶\":123328,\"äĥİ\":123329,\"ð¬ĴĹ\":123330,\"ç¢¨\":123331,\"ð¥Ķ\":123332,\"ð¥Ķ²\":123333,\"ç¢¹\":123334,\"ç¢¥\":123335,\"åĬĤ\":123336,\"ð«ļĸ\":123337,\"ä´Ĺ\":123338,\"å¤¥\":123339,\"çŀį\":123340,\"é¹ĸ\":123341,\"ã¬İ\":123342,\"è·½\":123343,\"èľ¾\":123344,\"å¹ĸ\":123345,\"å¶į\":123346,\"åľĻ\":123347,\"ð¨±ı\":123348,\"éĶº\":123349,\"éĶ¼\":123350,\"éĶ½\":123351,\"ð¬Ń¤\":123352,\"éĶ¾\":123353,\"éĶ¿\":123354,\"éķĥ\":123355,\"éķĦ\":123356,\"éķħ\":123357,\"é¦Ŀ\":123358,\"é¹Ļ\":123359,\"ç®¨\":123360,\"ç®ĸ\":123361,\"åĬĦ\":123362,\"åĥ¬\":123363,\"åĥ¦\":123364,\"åĥĶ\":123365,\"åĥİ\":123366,\"æ§ĥ\":123367,\"ãĻ¦\":123368,\"é²Ĵ\":123369,\"é²ķ\":123370,\"ð«ļķ\":123371,\"é²ĸ\":123372,\"é²Ĺ\":123373,\"é²ĺ\":123374,\"é²Ļ\":123375,\"ð¬¶Ĳ\":123376,\"ð¬¶ı\":123377,\"ð©½\":123378,\"ð©½¾\":123379,\"å¤Ĳ\":123380,\"çįį\":123381,\"é£Ĺ\":123382,\"ð¬¸ļ\":123383,\"åĩĺ\":123384,\"å»ĳ\":123385,\"å»Ļ\":123386,\"çĺĹ\":123387,\"çĺ¥\":123388,\"çĺķ\":123389,\"é²Ŀ\":123390,\"éĦ«\":123391,\"çĨĩ\":123392,\"æ¼¹\":123393,\"æ¼ĸ\":123394,\"æ½Ĩ\":123395,\"æ¼¤\":123396,\"æ½©\":123397,\"æ¼¼\":123398,\"æ¼´\":123399,\"ã½\":123400,\"ã½ı\":123401,\"æ¼Ī\":123402,\"æ¼ĭ\":123403,\"æ¼»\":123404,\"æħ¬\":123405,\"çª¬\":123406,\"çªŃ\":123407,\"ã®\":123408,\"ã®¾\":123409,\"ð¬¤Ŀ\":123410,\"è¤ķ\":123411,\"ç¦Ľ\":123412,\"ç¦ļ\":123413,\"éļ©\":123414,\"å«ķ\":123415,\"å«Ń\":123416,\"å«ľ\":123417,\"å«ª\":123418,\"ð¬ĻĤ\":123419,\"ã»\":123420,\"ã»¬\":123421,\"éº¹\":123422,\"çĴĨ\":123423,\"æ¼¦\":123424,\"åıĩ\":123425,\"å¢£\":123426,\"å¢¦\":123427,\"å¢¡\":123428,\"åĬĲ\":123429,\"èĸģ\":123430,\"èķ°\":123431,\"èĶĥ\":123432,\"é¼Ĵ\":123433,\"æ§±\":123434,\"é¹Ŀ\":123435,\"ç£ı\":123436,\"ç£ī\":123437,\"æ®£\":123438,\"æħŃ\":123439,\"éľħ\":123440,\"æļµ\":123441,\"æļ²\":123442,\"æļ¶\":123443,\"è¸¦\":123444,\"è¸£\":123445,\"äĹĸ\":123446,\"èĿĺ\":123447,\"èĿ²\":123448,\"èĿ¤\":123449,\"åĻĩ\":123450,\"åĻĤ\":123451,\"åĻĢ\":123452,\"ç½¶\":123453,\"å¶²\":123454,\"å¶ĵ\":123455,\"ãłĩ\":123456,\"å¶Ł\":123457,\"å¶Ĵ\":123458,\"éķĨ\":123459,\"éķĪ\":123460,\"éķĭ\":123461,\"éķİ\":123462,\"ð¬Ń©\":123463,\"éķķ\":123464,\"ç¨¹\":123465,\"åĦĩ\":123466,\"çļŀ\":123467,\"çļĽ\":123468,\"ä´ĺ\":123469,\"èīİ\":123470,\"èīı\":123471,\"é¹Ł\":123472,\"ð©¾ĥ\":123473,\"é²¦\":123474,\"é²ª\":123475,\"é²¬\":123476,\"æ©¥\":123477,\"è§Ń\":123478,\"é¹ł\":123479,\"é¹¡\":123480,\"ç³ĩ\":123481,\"ç³Ī\":123482,\"ç¿¦\":123483,\"é¹¢\":123484,\"é¹£\":123485,\"çĨĽ\":123486,\"æ½ĸ\":123487,\"æ½µ\":123488,\"ãµ\":123489,\"ãµĲ\":123490,\"æ¾Ĥ\":123491,\"æ¾Ľ\":123492,\"çĳ¬\":123493,\"æ½½\":123494,\"æ½¾\":123495,\"æ½ı\":123496,\"æĨŃ\":123497,\"æĨķ\":123498,\"ð¬¸£\":123499,\"æĪŃ\":123500,\"è¤¯\":123501,\"ç¦¤\":123502,\"ð«į½\":123503,\"å«½\":123504,\"éģ¹\":123505,\"ð¬´Ĭ\":123506,\"çĴ¥\":123507,\"çĴ²\":123508,\"çĴĴ\":123509,\"æĨĻ\":123510,\"æĵĲ\":123511,\"éĦ¹\":123512,\"èĸ³\":123513,\"éŀĶ\":123514,\"é»ĩ\":123515,\"ð¬ŀ\":123516,\"ð¬ŀŁ\":123517,\"èķĹ\":123518,\"èĸ¢\":123519,\"èķ¹\":123520,\"æ©ŀ\":123521,\"æ©ĳ\":123522,\"æ©¦\":123523,\"éĨĳ\":123524,\"è§±\":123525,\"ç£¡\":123526,\"ð¥ķ\":123527,\"ð¥ķ¢\":123528,\"ç£ľ\":123529,\"è±®\":123530,\"ð«Ł¦\":123531,\"ð¬ºĪ\":123532,\"ð«łľ\":123533,\"é¹¾\":123534,\"èĻ¤\":123535,\"æļ¿\":123536,\"æĽĮ\":123537,\"æĽĪ\":123538,\"ã¬ļ\":123539,\"è¹ħ\":123540,\"è¸¶\":123541,\"äĹĽ\":123542,\"èŀĹ\":123543,\"çĸģ\":123544,\"ãłĵ\":123545,\"å¹ª\":123546,\"ðª©\":123547,\"ðª©ĺ\":123548,\"å¶¦\":123549,\"ð¬Ń¬\":123550,\"ð¨±ĳ\":123551,\"ð¬Ń¯\":123552,\"é¦ŀ\":123553,\"ç©Ħ\":123554,\"ç¯ļ\":123555,\"ç¯¯\":123556,\"ç°ī\":123557,\"é¼½\":123558,\"è¡ł\":123559,\"çĽ¦\":123560,\"èŀ£\":123561,\"ç¸¢\":123562,\"é²Ń\":123563,\"é²¯\":123564,\"é²°\":123565,\"é²º\":123566,\"é²¹\":123567,\"ð«Ĺ´\":123568,\"äº¸\":123569,\"çĻĢ\":123570,\"çĺŃ\":123571,\"ð¬¸¦\":123572,\"ç¾±\":123573,\"ç³Ĵ\":123574,\"çĩĭ\":123575,\"çĨ»\":123576,\"çĩĬ\":123577,\"çĩļ\":123578,\"çĩı\":123579,\"æ¿©\":123580,\"æ¿ĭ\":123581,\"æ¾ª\":123582,\"æ¾½\":123583,\"æ¾´\":123584,\"æ¾Ń\":123585,\"æ¾¼\":123586,\"æĨ·\":123587,\"æĨº\":123588,\"æĩĶ\":123589,\"é»ī\":123590,\"å¬Ľ\":123591,\"é¹¨\":123592,\"ç¿¯\":123593,\"ð«Ħ·\":123594,\"çĴ±\":123595,\"ð¤©½\":123596,\"çĴ¬\":123597,\"çĴ®\":123598,\"é«½\":123599,\"æĵ¿\":123600,\"èĸ¿\":123601,\"èĸ¸\":123602,\"æªĳ\":123603,\"æ«Ĩ\":123604,\"æªŀ\":123605,\"éĨ¨\":123606,\"ç¹Ħ\":123607,\"ç£¹\":123608,\"ç£»\":123609,\"çŀ«\":123610,\"çŀµ\":123611,\"è¹Ĳ\":123612,\"èŁı\":123613,\"ãĺ\":123614,\"ãĺİ\":123615,\"ð¬Ń³\":123616,\"éķ¤\":123617,\"ð¬Ń¶\":123618,\"ð«Ķį\":123619,\"éķ¥\":123620,\"éķ¨\":123621,\"ð¬Ń¸\":123622,\"ð¨±Ķ\":123623,\"ð¬Ń¼\":123624,\"ð«Ķİ\":123625,\"çŁ°\":123626,\"ç©Ļ\":123627,\"ç©ľ\":123628,\"ç©Ł\":123629,\"ç°ķ\":123630,\"ç°ĥ\":123631,\"ç°ı\":123632,\"åĦ¦\":123633,\"éŃĭ\":123634,\"æĸ¶\":123635,\"èīļ\":123636,\"ð¬¸ª\":123637,\"è°¿\":123638,\"ä²ł\":123639,\"ð¬¶Ł\":123640,\"é²¾\":123641,\"ð¬¶ł\":123642,\"é²¿\":123643,\"é³ģ\":123644,\"é³Ĥ\":123645,\"é³Ī\":123646,\"é³ī\":123647,\"çį¯\":123648,\"äĹª\":123649,\"é¦ĺ\":123650,\"è¥ķ\":123651,\"è¥ļ\":123652,\"ð¬¶¨\":123653,\"èŀ±\":123654,\"çĶĵ\":123655,\"å¬¬\":123656,\"å¬¥\":123657,\"ð¦Ī\":123658,\"ð¦Ī¡\":123659,\"ð«Ħ¸\":123660,\"çĵĢ\":123661,\"éĩĲ\":123662,\"é¬¶\":123663,\"çĪĩ\":123664,\"éŀ³\":123665,\"éŀ®\":123666,\"ð¬Łģ\":123667,\"èĹŁ\":123668,\"èĹ¦\":123669,\"èĹ¨\":123670,\"é¹²\":123671,\"æª«\":123672,\"é»¡\":123673,\"ç¤ŀ\":123674,\"ç¤Į\":123675,\"ð¥ĸ\":123676,\"ð¥ĸ¨\":123677,\"è¹¢\":123678,\"è¹ľ\":123679,\"èŁ«\":123680,\"äĹ´\":123681,\"åļļ\":123682,\"é«ĥ\":123683,\"éķ®\":123684,\"éķ±\":123685,\"éħĤ\":123686,\"é¦§\":123687,\"ç°ł\":123688,\"ç°Ŀ\":123689,\"ç°°\":123690,\"é¼«\":123691,\"é¼©\":123692,\"çļ¦\":123693,\"èĩĳ\":123694,\"ä²¢\":123695,\"é³ĳ\":123696,\"é³Ĵ\":123697,\"é¹±\":123698,\"é¹¯\":123699,\"çĻĹ\":123700,\"ð¦Ĵ\":123701,\"ð¦Ĵį\":123702,\"æĹŀ\":123703,\"ç¿·\":123704,\"åĨģ\":123705,\"äİĸ\":123706,\"çĢĶ\":123707,\"çĢį\":123708,\"çĢĮ\":123709,\"è¥ľ\":123710,\"ä´Ļ\":123711,\"ð¬ĻĬ\":123712,\"åļŃ\":123713,\"ã°\":123714,\"ã°Ģ\":123715,\"é¬·\":123716,\"éĨŃ\":123717,\"è¹¯\":123718,\"èłĭ\":123719,\"ç¿¾\":123720,\"é³ĺ\":123721,\"åĦ³\":123722,\"åĦ´\":123723,\"é¼Ĺ\":123724,\"ð¬¶Ń\":123725,\"ð©¾Į\":123726,\"é³ļ\":123727,\"é³Ľ\":123728,\"éºĳ\":123729,\"éºĸ\":123730,\"èłĥ\":123731,\"å½Ł\":123732,\"å¬¿\":123733,\"é¬Ĵ\":123734,\"èĺĺ\":123735,\"æ¬Ĥ\":123736,\"éĨµ\":123737,\"é¢¥\":123738,\"çĶĹ\":123739,\"ð¨Ł\":123740,\"ð¨Łł\":123741,\"å·ĩ\":123742,\"éħħ\":123743,\"é«İ\":123744,\"çĬ¨\":123745,\"ð¬¶®\":123746,\"ð¨Ń\":123747,\"ð¨Ńī\":123748,\"ã¸Į\":123749,\"çĪĶ\":123750,\"çĢ±\":123751,\"çĢ¹\":123752,\"çĢ¼\":123753,\"çĢµ\":123754,\"è¥«\":123755,\"åŃħ\":123756,\"éª¦\":123757,\"ð¬Ļĭ\":123758,\"èĢ°\":123759,\"ð¤«\":123760,\"ð¤«ī\":123761,\"çĵĸ\":123762,\"é¬ĺ\":123763,\"è¶¯\":123764,\"ð¬ºĵ\":123765,\"ç½į\":123766,\"é¼±\":123767,\"é³ł\":123768,\"é³¡\":123769,\"é³£\":123770,\"çĪŁ\":123771,\"çĪļ\":123772,\"çģĪ\":123773,\"éŁĤ\":123774,\"ç³µ\":123775,\"èĺ¼\":123776,\"ç¤µ\":123777,\"é¹´\":123778,\"èºĶ\":123779,\"çļŃ\":123780,\"é¾¢\":123781,\"é³¤\":123782,\"äº¹\":123783,\"ç±¥\":123784,\"é¼·\":123785,\"ð«ļŃ\":123786,\"çİĥ\":123787,\"éĨ¾\":123788,\"é½ĩ\":123789,\"è§¿\":123790,\"èł¼\":123791,\"×§\":123792,\"×¤\":123793,\"×Ľ\":123794,\"×ķ×ª\":123795,\"×¡\":123796,\"×Ļ×Ŀ\":123797,\"×¦\":123798,\"×Ĵ\":123799,\"×ĺ\":123800,\"×ķ×¨\":123801,\"×Ŀ\":123802,\"×ķ×ľ\":123803,\"×ĸ\":123804,\"à¹Ĥ\":123805,\"ïº\":123806,\"ðŁį\":123807,\"ðŁĲ\":123808,\"×Ļ×¨\":123809,\"ï»\":123810,\"ðŁĳ\":123811,\"ðĿĲ\":123812,\"ðŁı\":123813,\"ðŁĶ\":123814,\"ðŁĮ\":123815,\"ðŁİ\":123816,\"ðŁĵ\":123817,\"×Ł\":123818,\"ðĿĳ\":123819,\"×ķ×ĵ\":123820,\"ï¦\":123821,\"Ġ×ķ\":123822,\"×ķ×ĳ\":123823,\"à¸Ńà¸ĩ\":123824,\"ðĿĺ\":123825,\"×Ļ×ª\":123826,\"ðĿķ\":123827,\"à¸Ĺà¸µà¹Ī\":123828,\"Ø§Ø¦\":123829,\"ðŁ¤\":123830,\"×ķ×Ł\":123831,\"Ø±ÙĬ\":123832,\"×Ļ×ľ\":123833,\"à¸£à¸°\":123834,\"à¸²à¸¢\":123835,\"ï¯\":123836,\"ï®\":123837,\"à¸²à¸¡\":123838,\"âĩ\":123839,\"ðŁ¥\":123840,\"ïŃ\":123841,\"ðĿĻ\":123842,\"×ķ×ł\":123843,\"á½\":123844,\"Ġ×Ľ\":123845,\"ðŁļ\":123846,\"âļ\":123847,\"ï§\":123848,\"×ĳ×¨\":123849,\"×Ļ×ł\":123850,\"á´\":123851,\"Ġ×Ĺ\":123852,\"á¼\":123853,\"ðĿĹ\":123854,\"Ġ×¢\":123855,\"×Ļ×Ķ\":123856,\"ãģ£ãģŁ\":123857,\"ãģĵãģ¨\":123858,\"á¸\":123859,\"ÙĬÙĨ\":123860,\"ãģªãģĦ\":123861,\"Ø§Ø¹\":123862,\"à¸¨\":123863,\"à¹Īà¸ĩ\":123864,\"×Ļ×ĵ\":123865,\"×ŀ×©\":123866,\"áĪ\":123867,\"×ł×Ļ\":123868,\"×Ļ×ĳ\":123869,\"ï¥\":123870,\"ðĿĵ\":123871,\"Ġ×Ļ\":123872,\"×ļ\":123873,\"à¸±à¸ĩ\":123874,\"âĵ\":123875,\"ï¤\":123876,\"ĠØ§ÙĦØ£\":123877,\"à¸²à¸ģ\":123878,\"à¹īà¸Ļ\":123879,\"à¹Ģà¸£\":123880,\"×ķ×Ŀ\":123881,\"á¹\":123882,\"à¸¶\":123883,\"×Ļ×§\":123884,\"à¸ĭ\":123885,\"à¸Ħà¸£\":123886,\"à¸ĺ\":123887,\"à¸±à¸ģ\":123888,\"ðŁķ\":123889,\"ÙĪÙĨ\":123890,\"à¸Ńà¸¢\":123891,\"âĬ\":123892,\"ðĿĴ\":123893,\"ĠØ§ÙĦØ¹\":123894,\"à¸²à¸Ļ\":123895,\"×Ļ×Ł\":123896,\"ÙĦÙĬ\":123897,\"×Ļ×©\":123898,\"à¸Ľà¸£à¸°\":123899,\"à¹Ģà¸Ľ\":123900,\"Ġ×ł\":123901,\"×ķ×¡\":123902,\"à¸ł\":123903,\"ÙħÙĨ\":123904,\"×ķ×¢\":123905,\"×ķ×ŀ\":123906,\"âĮ\":123907,\"ðŁ§\":123908,\"à¹ĩà¸Ļ\":123909,\"à¸į\":123910,\"ãİ\":123911,\"áµ\":123912,\"ĠØ§ÙĦØ³\":123913,\"×ķ×§\":123914,\"à¸«à¸¥\":123915,\"ðŁĩ\":123916,\"âı\":123917,\"ðŁ¦\":123918,\"Ġ×Ķ×ŀ\":123919,\"ÙĪØ§\":123920,\"Ġ×ª\":123921,\"×¨×Ĳ\":123922,\"à¸Ńà¸Ļ\":123923,\"à¸©\":123924,\"à¹Īà¸§\":123925,\"×ķ×¦\":123926,\"íĹ\":123927,\"ãĦ\":123928,\"ï¨\":123929,\"ï¹\":123930,\"âİ\":123931,\"ï²\":123932,\"ðĿļ\":123933,\"ðĲ\":123934,\"à¸Ħà¸§\":123935,\"à¸«à¸Ļ\":123936,\"Ġ×¨\":123937,\"Ø¨ÙĬ\":123938,\"à¸£à¹Į\":123939,\"Ø±Ø§\":123940,\"Ø´Ø±\":123941,\"×ķ×Ĺ\":123942,\"×ķ×¤\":123943,\"×ķ×©\":123944,\"×ķ×Ĵ\":123945,\"íĿ\":123946,\"âĽ\":123947,\"à¸ķà¸´\":123948,\"à¹Ģà¸ģ\":123949,\"ï³\":123950,\"ï±\":123951,\"à¸Ķà¹ī\":123952,\"ë¹\":123953,\"ï¬\":123954,\"á¿\":123955,\"ðŁĽ\":123956,\"ðĿĸ\":123957,\"à¹Īà¸²à¸ĩ\":123958,\"à¸¹à¹ī\":123959,\"Ġ×Ķ×Ĳ\":123960,\"ĠØ§ÙĦØŃ\":123961,\"×¤×¨\":123962,\"ÙĪÙħ\":123963,\"à¹Ģà¸¥\":123964,\"íĸ\":123965,\"×Ļ×¢\":123966,\"ìĪ\":123967,\"íĵ\":123968,\"ðŁħ\":123969,\"áł\":123970,\"à¸Ħà¸§à¸²à¸¡\":123971,\"à¸Īà¸°\":123972,\"×ł×Ķ\":123973,\"Ġ×§\":123974,\"à¸Ł\":123975,\"à¹īà¸ĩ\":123976,\"à¸«à¸¡\":123977,\"ØªÙħ\":123978,\"×ľ×Ļ\":123979,\"ÙĬØ¯\":123980,\"à¹Īà¸Ļ\":123981,\"×Ĺ×¨\":123982,\"×©×¨\":123983,\"à¹Ģà¸Ĺ\":123984,\"×ŀ×¨\":123985,\"ëĸ\":123986,\"Ø¹ÙĦ\":123987,\"×ŀ×¢\":123988,\"â²\":123989,\"×ľ×Ķ\":123990,\"Ġ×¤\":123991,\"à¸Ńà¸ģ\":123992,\"Ø³ÙĦ\":123993,\"×Ļ×ŀ\":123994,\"ÙĤÙĬ\":123995,\"íİ\":123996,\"ØªØŃ\":123997,\"×Ļ×¡\":123998,\"×Ļ×Ĺ\":123999,\"íĽ\":124000,\"ï°\":124001,\"â½\":124002,\"áī\":124003,\"áĬ\":124004,\"á¨\":124005,\"ÙĩØ§\":124006,\"Ġ×ľ×Ķ\":124007,\"×ķ×Ĳ\":124008,\"ÙħØ§\":124009,\"à¹īà¸Ńà¸ĩ\":124010,\"Ø±Ø¨\":124011,\"ĠØ§ÙĦØ¬\":124012,\"×ŀ×ĵ\":124013,\"ÙħÙĦ\":124014,\"ØªØ±\":124015,\"à¹Ģà¸Ķ\":124016,\"×§×¨\":124017,\"íħ\":124018,\"ì¼\":124019,\"ê¿\":124020,\"ãĪ\":124021,\"áĲ\":124022,\"ðŁĹ\":124023,\"ê¦\":124024,\"áĭ\":124025,\"ðĿĶ\":124026,\"à¹Ģà¸Ľà¹ĩà¸Ļ\":124027,\"à¹ĥà¸«\":124028,\"à¸¡à¸²\":124029,\"à¸§à¹Īà¸²\":124030,\"à¸¡à¸µ\":124031,\"à¸µà¹ī\":124032,\"à¹Ħà¸¡à¹Ī\":124033,\"ÙĨÙĬ\":124034,\"Ø¤\":124035,\"à¸£à¸²\":124036,\"×ķ×Ļ\":124037,\"ãĤĪãģĨ\":124038,\"à¸´à¸Ķ\":124039,\"×Ļ×¤\":124040,\"×Ĺ×ľ\":124041,\"ÙĤØ¯\":124042,\"à¹Ģà¸ª\":124043,\"×Ļ×ĺ\":124044,\"à¸ģà¸¥\":124045,\"×¨×Ľ\":124046,\"×ķ×Ľ\":124047,\"×Ļ×Ľ\":124048,\"ëĪ\":124049,\"ëĥ\":124050,\"ðŁĸ\":124051,\"áħ\":124052,\"â¼\":124053,\"ãī\":124054,\"à¹Ħà¸Ķà¹ī\":124055,\"×ª×Ļ\":124056,\"×Ļ×Ĳ\":124057,\"ĠØ§ÙĦØ¥\":124058,\"à¸łà¸²\":124059,\"à¸£à¸´\":124060,\"ÙĤØ©\":124061,\"ØŃØ¯\":124062,\"ê»\":124063,\"ì±\":124064,\"×ª×Ĺ\":124065,\"ìº\":124066,\"âĭ\":124067,\"áĦ\":124068,\"á¾\":124069,\"âµ\":124070,\"â¾\":124071,\"ĠÙĪØ§ÙĦ\":124072,\"×ł×ķ\":124073,\"ÙĢ\":124074,\"ÙĬØ§\":124075,\"à¸ģà¹ĩ\":124076,\"×ŀ×Ķ\":124077,\"ãģĦãĤĭ\":124078,\"Ø¹Ø¯\":124079,\"ĠØ§ÙĦÙĨ\":124080,\"Ġ×Ķ×©\":124081,\"Ø¦\":124082,\"à¸±à¹īà¸ĩ\":124083,\"à¸£à¸±à¸ļ\":124084,\"ÙĪÙĤ\":124085,\"ãģ§ãģį\":124086,\"à¹Ģà¸ŀ\":124087,\"×Ľ×ľ\":124088,\"×ĺ×¨\":124089,\"à¸±à¸Ķ\":124090,\"à¸Ńà¸²\":124091,\"ì¢\":124092,\"à¸Ńà¸ļ\":124093,\"à¸ķà¸£\":124094,\"à¹Ģà¸Ĭ\":124095,\"ìĶ\":124096,\"ãģĹãģ¾\":124097,\"ëģ\":124098,\"ëķ\":124099,\"ðŁĻ\":124100,\"âĴ\":124101,\"á¶\":124102,\"à¹ģà¸¥\":124103,\"ÙĨØ§\":124104,\"à¹ĥà¸«à¹ī\":124105,\"à¹Ħà¸Ľ\":124106,\"×£\":124107,\"à¸±à¸§\":124108,\"à¸²à¸ĩ\":124109,\"×ĵ×¨\":124110,\"×ĳ×ľ\":124111,\"×¤×Ļ\":124112,\"Ġ×ĵ\":124113,\"ĠØ§ÙĦÙģ\":124114,\"à¹Ģà¸Ĥ\":124115,\"×©×Ķ\":124116,\"×Ĳ×¨\":124117,\"ë¬\":124118,\"ãģ«ãģª\":124119,\"ÑĢÐ¾\":124120,\"à¸§à¸´\":124121,\"ÙħØ±\":124122,\"×Ĳ×ª\":124123,\"ÙĥØ±\":124124,\"Ø³Ø¨\":124125,\"ÙĨØª\":124126,\"ãģĹãģĦ\":124127,\"Ø§Ø¬\":124128,\"à¸Ńà¸£à¹Į\":124129,\"ÙĥÙĦ\":124130,\"Ø³Ùħ\":124131,\"à¸ªà¸´\":124132,\"×Ļ×¦\":124133,\"ëĿ\":124134,\"íľ\":124135,\"ìī\":124136,\"áĨ\":124137,\"ÙĩÙħ\":124138,\"à¸Ļà¸µà¹ī\":124139,\"ãģĤãĤĭ\":124140,\"ãģĦãģ¦\":124141,\"Ø³ÙĬ\":124142,\"×ľ×Ĳ\":124143,\"Ø¯Ø±\":124144,\"ãģļ\":124145,\"ÙĪØ¬\":124146,\"ĠØ§ÙĦØ®\":124147,\"ØµØ±\":124148,\"íı\":124149,\"à¹īà¸²à¸ĩ\":124150,\"à¸¸à¸Ķ\":124151,\"×ķ×ĺ\":124152,\"×ĳ×¢\":124153,\"íĨ\":124154,\"à¸Ĭà¸²\":124155,\"à¸£à¸¡\":124156,\"×©×ŀ\":124157,\"×ŀ×¡\":124158,\"ê´\":124159,\"ì´\":124160,\"ëľ\":124161,\"ì¿\":124162,\"ì©\":124163,\"ë»\":124164,\"â¤\":124165,\"ðŁĨ\":124166,\"áĮ\":124167,\"áķ\":124168,\"Ø°Ø§\":124169,\"à¸Ĺà¸³\":124170,\"à¸ķà¹Ī\":124171,\"ĠØ§ÙĦÙĤ\":124172,\"ÙĦÙĥ\":124173,\"à¸¹à¹Ī\":124174,\"à¸Ħà¸¸\":124175,\"ÙĬÙħ\":124176,\"×ł×Ļ×Ŀ\":124177,\"à¸·à¹Īà¸Ń\":124178,\"ÙĪØ¹\":124179,\"ãĤĩ\":124180,\"Ø§ÙĤ\":124181,\"Ġ×ĳ×¢\":124182,\"à¹Ģà¸¡\":124183,\"Ø¬Ùħ\":124184,\"á»«\":124185,\"ãģĵãģ¨ãģĮ\":124186,\"Ø¨Ø¯\":124187,\"×ķ×Ķ\":124188,\"×©×ľ\":124189,\"ÙĩØ±\":124190,\"à¹Ģà¸Ļ\":124191,\"ãģ¹\":124192,\"íĭ\":124193,\"ì»\":124194,\"ì½\":124195,\"ëŃ\":124196,\"ìĮ\":124197,\"íĢ\":124198,\"ëĮ\":124199,\"ëº\":124200,\"ãĬ\":124201,\"à¹ĥà¸Ļ\":124202,\"Ġ×Ĵ\":124203,\"à¹Ĩ\":124204,\"à¸Īà¸²à¸ģ\":124205,\"à¸§à¸¢\":124206,\"à¹ĥà¸Ĭ\":124207,\"à¸ĩà¸²à¸Ļ\":124208,\"ĠØ§ÙĦØ´\":124209,\"Ø§ØŃ\":124210,\"à¹īà¸²à¸Ļ\":124211,\"à¸·à¹Īà¸Ńà¸ĩ\":124212,\"×Ĳ×Ļ\":124213,\"Ø¨ÙĦ\":124214,\"ãģ¨æĢĿ\":124215,\"×ł×¡\":124216,\"ãģ¾ãģĽ\":124217,\"ÙĥÙĨ\":124218,\"×¢×¨\":124219,\"ĠØ§ÙĦØ¯\":124220,\"×©×ª\":124221,\"íŀ\":124222,\"ÙħØ³\":124223,\"ØµÙĦ\":124224,\"×ķ×ł×Ķ\":124225,\"Ø§Ø±Ø©\":124226,\"ÙĦÙħ\":124227,\"à¸ªà¸¡\":124228,\"Ø£ÙĨ\":124229,\"×ª×¨\":124230,\"×Ĳ×ŀ\":124231,\"Ø¹Ø¨\":124232,\"Ø®Øª\":124233,\"ãĤĥ\":124234,\"ì¡\":124235,\"ì£\":124236,\"Ð¸Ð²Ð°\":124237,\"à¸ªà¸±\":124238,\"à¸¶à¸ģ\":124239,\"ì¸\":124240,\"ëĨ\":124241,\"Ð°Ð»ÑĮÐ½\":124242,\"ì³\":124243,\"ìį\":124244,\"ê¼\":124245,\"ê½\":124246,\"ìı\":124247,\"ãĮ\":124248,\"ãı\":124249,\"ï©\":124250,\"êª\":124251,\"áİ\":124252,\"Ġ×ĸ\":124253,\"à¸ģà¸±à¸Ļ\":124254,\"×Ļ×ķ\":124255,\"à¸Ħà¸Ļ\":124256,\"×ł×ķ×ª\":124257,\"à¸ľà¸¹à¹ī\":124258,\"à¹ĥà¸Ī\":124259,\"ãģĦãģŁ\":124260,\"ÙģØ±\":124261,\"×ĺ×Ļ\":124262,\"×¦×Ļ\":124263,\"ãĤĤãģ®\":124264,\"ĠØ§ÙĦØµ\":124265,\"ãģ¾ãģĽãĤĵ\":124266,\"Ø¯Ø©\":124267,\"×ĳ×Ļ\":124268,\"ĠØ§ÙĦØ±\":124269,\"Ġ×ŀ×Ĳ\":124270,\"à¸ªà¸³\":124271,\"à¹Ģà¸«\":124272,\"Ø¹Ø±\":124273,\"ãģªãģı\":124274,\"à¸ģà¸£à¸°\":124275,\"×ĳ×ĵ\":124276,\"à¹Ģà¸Ī\":124277,\"×Ļ×ļ\":124278,\"×Ĺ×Ļ\":124279,\"ÙĬØ¹\":124280,\"×©×ĳ\":124281,\"ÙĨØ©\":124282,\"ÙĪØ¶\":124283,\"ÙĦÙģ\":124284,\"ÙĢÙĢ\":124285,\"×¤×¢\":124286,\"íĪ\":124287,\"×ŀ×§\":124288,\"à¸Ĳ\":124289,\"ØŃØ©\":124290,\"Ø§Øµ\":124291,\"ÑĭÐ²Ð°\":124292,\"à¸Ħà¸¡\":124293,\"à¸§à¸±\":124294,\"à¸Ľà¸¥\":124295,\"ìŁ\":124296,\"íļ\":124297,\"ë´\":124298,\"ëĳ\":124299,\"ëī\":124300,\"ëĩ\":124301,\"ì¨\":124302,\"ë±\":124303,\"ëİ\":124304,\"â¬\":124305,\"á¥\":124306,\"áĹ\":124307,\"áĽ\":124308,\"áį\":124309,\"Å©\":124310,\"à¸Ķà¸µ\":124311,\"Ã´i\":124312,\"Ġ×¡\":124313,\"×ľ×ķ\":124314,\"á»Ŀi\":124315,\"à¸Ħà¸¸à¸ĵ\":124316,\"Ã¢y\":124317,\"à¸Ļà¸²\":124318,\"×Ĺ×ĵ\":124319,\"×ĵ×Ļ\":124320,\"à¸«à¸²\":124321,\"Ø¬ÙĦ\":124322,\"à¹Ģà¸§\":124323,\"ãĤĩãģĨ\":124324,\"ÙħØ©\":124325,\"ĠØ§ÙĦÙĥ\":124326,\"Ġ×Ķ×¢\":124327,\"Ø¬Ø±\":124328,\"×ĸ×¨\":124329,\"Ø§Ø·\":124330,\"×Ľ×ª\":124331,\"×ķ×ł×Ļ×Ŀ\":124332,\"ØŃÙħ\":124333,\"ê¶\":124334,\"Ø±Ùĥ\":124335,\"Ġ×ľ×¢\":124336,\"×ķ×ĸ\":124337,\"à¸ªà¸£\":124338,\"×¦×ľ\":124339,\"Ø¢\":124340,\"Ø§Ø³Øª\":124341,\"à¹Īà¸¡\":124342,\"Ø®Ø±\":124343,\"×¦×¢\":124344,\"×Ļ×¨×ķ×ª\":124345,\"Ø§Ø¯Ø©\":124346,\"Ø´Ø§Ø±\":124347,\"×ŀ×Ĺ\":124348,\"íĴ\":124349,\"à¹Ģà¸£à¸µà¸¢\":124350,\"×Ĺ×§\":124351,\"Ø§Ø«\":124352,\"à¸£à¸ĩ\":124353,\"à¹Ģà¸ķ\":124354,\"à¸Īà¸³\":124355,\"à¸Ŀ\":124356,\"à¹Īà¸²à¸¢\":124357,\"à¸Ħà¸¥\":124358,\"ÙĤÙĪ\":124359,\"Ð¸ÑĩÐµÑģÐº\":124360,\"à¸ĵà¹Į\":124361,\"à¸±à¸¢\":124362,\"ÙħØ¹\":124363,\"ë¨\":124364,\"ë¿\":124365,\"ë®\":124366,\"ï´\":124367,\"ì¥\":124368,\"ì«\":124369,\"ëµ\":124370,\"á¡\":124371,\"âį\":124372,\"ðĵ\":124373,\"â°\":124374,\"à¸Ĥà¸Ńà¸ĩ\":124375,\"Ùĭ\":124376,\"à¸ģà¸±à¸ļ\":124377,\"ãģ®ãģ§\":124378,\"à¹īà¸§\":124379,\"à¸Ńà¸¢à¹Īà¸²à¸ĩ\":124380,\"ãģŃ\":124381,\"á»ĩt\":124382,\"à¸ķà¹īà¸Ńà¸ĩ\":124383,\"×ŀ×Ļ\":124384,\"à¹ģà¸ļ\":124385,\"×Ĵ×¨\":124386,\"ÙĪÙģ\":124387,\"ÙĤÙĦ\":124388,\"à¸łà¸²à¸ŀ\":124389,\"×¨×Ļ\":124390,\"à¸¥à¸²\":124391,\"ÙĬØ³\":124392,\"Ġ×¦\":124393,\"ÙĬÙģ\":124394,\"Ġ×ĺ\":124395,\"à¸ľà¸¥\":124396,\"Ã¡ng\":124397,\"à¸£à¸§\":124398,\"Ġ×ŀ×©\":124399,\"×Ĳ×ķ×ª\":124400,\"×ĸ×Ķ\":124401,\"à¸¹à¸ģ\":124402,\"à¸Ļà¸±à¸ģ\":124403,\"Ø§ÙĨÙĬ\":124404,\"Ø¯Ø§\":124405,\"ãģ³\":124406,\"×Ľ×Ł\":124407,\"ãĤīãĤĮ\":124408,\"ãĤĮãģ°\":124409,\"×ª×§\":124410,\"Ãºc\":124411,\"ÙĪØ²\":124412,\"×Ļ×¨×Ķ\":124413,\"Ġngh\":124414,\"Ã¡nh\":124415,\"Ġ×ķ×Ĳ\":124416,\"á»ħ\":124417,\"à¸ªà¸¸à¸Ķ\":124418,\"ëį°\":124419,\"Ø§Ø¶\":124420,\"Ø§ÙĦÙĬ\":124421,\"Ø¨Ø§Ø±\":124422,\"Ø¹Ùħ\":124423,\"à¸ļà¸²\":124424,\"ØªØ¬\":124425,\"à¸ŀà¸£\":124426,\"×ķ×¨×Ķ\":124427,\"áº£ng\":124428,\"Ø®ÙĦ\":124429,\"à¸ī\":124430,\"áº¯c\":124431,\"×©×Ļ×Ŀ\":124432,\"íĶ\":124433,\"ÙģØ³\":124434,\"×Ļ×Ĵ\":124435,\"Ð¿ÑĢ\":124436,\"ĠØ§ÙĦØ«\":124437,\"Ø³Ø·\":124438,\"à¸£à¸¹à¹ī\":124439,\"à¸µà¹Īà¸¢\":124440,\"à¸Ńà¸Ķ\":124441,\"ãģªãĤĬ\":124442,\"×Ĵ×ĵ\":124443,\"ãģĦãģ¾ãģĹãģŁ\":124444,\"×¡×§\":124445,\"Ø®Øµ\":124446,\"laÅŁ\":124447,\"ÐµÐ½Ð½Ð¾\":124448,\"Ø¨ØŃ\":124449,\"à¸ªà¸Ļ\":124450,\"à¸®\":124451,\"×¨×Ĳ×©\":124452,\"ÙħÙĪ\":124453,\"Ø¯ÙĬØ¯\":124454,\"à¸©à¸²\":124455,\"×ķ×ļ\":124456,\"ãĥ§ãĥ³\":124457,\"à¸ķà¸¸\":124458,\"Ġêµ\":124459,\"ĠÑģÐ²Ð¾\":124460,\"×¦×ĳ\":124461,\"à¸Ńà¸¡\":124462,\"à¸Ľà¸£\":124463,\"ØªØ¹\":124464,\"×Ķ×ª\":124465,\"Ø§ÙħÙĦ\":124466,\"×ŀ×ł\":124467,\"ç¶ļ\":124468,\"à¸¤\":124469,\"íį\":124470,\"ëĺ\":124471,\"ë¤\":124472,\"ìĳ\":124473,\"â´\":124474,\"ãĭ\":124475,\"ĠØ¨Ø§ÙĦ\":124476,\"á»ģu\":124477,\"ĠØ§ÙĦÙĦ\":124478,\"à¸ķà¸±à¸§\":124479,\"Ø°Ùĩ\":124480,\"à¸¶à¸ĩ\":124481,\"à¹ĥà¸Ĭà¹ī\":124482,\"á»ĵng\":124483,\"à¸Ļà¸±\":124484,\"à¸¡à¸²à¸ģ\":124485,\"ãĥŁ\":124486,\"×ŀ×ķ\":124487,\"à¸Ĺà¸¢\":124488,\"á»Ļi\":124489,\"áº±\":124490,\"áº£o\":124491,\"à¹Ĥà¸Ķ\":124492,\"×Ĳ×ľ\":124493,\"à¸ªà¸²à¸¡\":124494,\"ÙĪØ¨\":124495,\"à¸Ĺà¸¸\":124496,\"à¸¢à¸±à¸ĩ\":124497,\"×¢×ª\":124498,\"×ķ×ł×ķ×ª\":124499,\"à¸Ĥà¸¶\":124500,\"à¸Ĥà¸¶à¹īà¸Ļ\":124501,\"à¸ģà¹Ī\":124502,\"áº«\":124503,\"á»ĳc\":124504,\"ãģĹãĤĩãģĨ\":124505,\"á»ĭch\":124506,\"Ġ×Ĳ×ķ×ª\":124507,\"Ġ×©×Ĳ\":124508,\"×Ľ×ķ×ľ\":124509,\"á»Ļc\":124510,\"Ø¹Ø©\":124511,\"à¸Ĺà¸µ\":124512,\"à¹Ģà¸Ń\":124513,\"ÙĥØª\":124514,\"ãģ»\":124515,\"áº»\":124516,\"ìĹħ\":124517,\"à¸Ńà¸Ńà¸ģ\":124518,\"Ø§ÙĨØª\":124519,\"à¹Ħà¸£\":124520,\"Ġ×Ĳ×Ĺ×¨\":124521,\"Ø·Ø±\":124522,\"ÙĨØ¯\":124523,\"à¸·à¹īà¸Ń\":124524,\"Ø·ÙĦ\":124525,\"×Ĳ×Ķ\":124526,\"uyÃªn\":124527,\"íĸī\":124528,\"×ĳ×Ķ\":124529,\"à¸Ħà¹Ī\":124530,\"à¸Ĭà¹Īà¸§\":124531,\"ãģĤãĤĬãģ¾ãģĻ\":124532,\"ÙĬØ¨\":124533,\"×§×ľ\":124534,\"ãĥĻ\":124535,\"Ä©\":124536,\"Ø³Ø±\":124537,\"à¸²à¸§\":124538,\"ãĤ±\":124539,\"à¸ļà¸£à¸´\":124540,\"×¨×Ĵ\":124541,\"á»ĥu\":124542,\"ØŃØª\":124543,\"×ķ×ŀ×Ļ\":124544,\"Ø¨ÙĨ\":124545,\"êµĲ\":124546,\"ÄŁu\":124547,\"ãģªãĤĵ\":124548,\"×ĳ×§\":124549,\"Ġ×¤×¨\":124550,\"áº¯n\":124551,\"ØŃÙĦ\":124552,\"×ĳ×Ĺ\":124553,\"áº¥u\":124554,\"×ĳ×ķ×ĵ\":124555,\"ãĥ¯\":124556,\"Ġ×ľ×§\":124557,\"à¸±à¸į\":124558,\"à¸ŀà¸´\":124559,\"×Ĺ×Ķ\":124560,\"×ĸ×Ľ\":124561,\"ãĥ¼ãĥł\":124562,\"ÑĤÐµÐ»ÑĮ\":124563,\"×ŀ×Ļ×ĵ\":124564,\"ÙĬØ®\":124565,\"áº³\":124566,\"ØªØµ\":124567,\"à¸ĺà¸´\":124568,\"è¾¼\":124569,\"ìĵ\":124570,\"ÙĥØ©\":124571,\"ÙĤØ¨\":124572,\"à¸Ħà¹Į\":124573,\"à¹īà¸²à¸¢\":124574,\"à¸ĵà¸°\":124575,\"à¸²à¸°\":124576,\"ëĴ\":124577,\"ê¾\":124578,\"ë·\":124579,\"ìĩ\":124580,\"êº\":124581,\"ìģ\":124582,\"ëĢ\":124583,\"ì¾\":124584,\"ë½\":124585,\"ëļ\":124586,\"ìŃ\":124587,\"ìİ\":124588,\"áĳ\":124589,\"ëĹ\":124590,\"êĴ\":124591,\"à¡\":124592,\"à¬\":124593,\"ðĲĮ\":124594,\"ãĩ\":124595,\"ðĿĦ\":124596,\"Ġ×ľ×Ĳ\":124597,\"ãģ¨ãģĦãģĨ\":124598,\"Ġnhi\":124599,\"×Ļ×ķ×ª\":124600,\"Ġ×©×Ķ\":124601,\"à¹ģà¸¥à¹īà¸§\":124602,\"Æ°á»Ľc\":124603,\"à¸Ķà¹īà¸§à¸¢\":124604,\"à¸Ĺà¸²à¸ĩ\":124605,\"×ł×ª\":124606,\"×¤×ª\":124607,\"à¹ģà¸ķà¹Ī\":124608,\"Æ°ng\":124609,\"à¸Ńà¸¢à¸¹à¹Ī\":124610,\"à¹īà¸³\":124611,\"Ġ×Ĳ×ľ\":124612,\"ÙĥÙħ\":124613,\"áº¥p\":124614,\"à¸¥à¸ĩ\":124615,\"ãģŁãĤģ\":124616,\"×Ĵ×ľ\":124617,\"à¸«à¸£\":124618,\"ĠÑĢÐµ\":124619,\"à¹Ģà¸Ĥà¹īà¸²\":124620,\"ÙĤØ±\":124621,\"Ġ×Ķ×¡\":124622,\"ÙĪÙĬ\":124623,\"à¸ªà¸²à¸¡à¸²à¸£\":124624,\"à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":124625,\"Äĥn\":124626,\"à¸Ńà¸µ\":124627,\"×¤×ķ\":124628,\"×Ļ×ł×ķ\":124629,\"à¸§à¸±à¸Ļ\":124630,\"áº·c\":124631,\"íķĻ\":124632,\"×ŀ×ª\":124633,\"Ãªu\":124634,\"áº¹\":124635,\"ÙģÙĬ\":124636,\"×ŀ×¦\":124637,\"à¸Ħà¸²\":124638,\"ãģĿãģĨ\":124639,\"ãĢħ\":124640,\"Ø§Ø²\":124641,\"Ø§Ùĩ\":124642,\"×¨×Ļ×Ŀ\":124643,\"áº¥n\":124644,\"à¸«à¸²à¸£\":124645,\"áº¡t\":124646,\"ÙĨÙĩ\":124647,\"à¹Ģà¸Ħà¸£\":124648,\"Ø¬Ùĩ\":124649,\"×Ľ×Ļ\":124650,\"áº¯t\":124651,\"à¸Ħà¹īà¸²\":124652,\"Ø±Ø©\":124653,\"ãĥı\":124654,\"ÙĥÙĪÙĨ\":124655,\"á»©ng\":124656,\"Ġìļ°\":124657,\"à¸¢à¹Į\":124658,\"à¹Īà¸§à¸Ļ\":124659,\"à¸ģà¸³\":124660,\"Ø«Ø±\":124661,\"ÑģÐ¸\":124662,\"ĠØ§ÙĦØ·\":124663,\"Ġ×Ķ×¦\":124664,\"ĠØ·\":124665,\"ĠØ§ÙĦÙĪ\":124666,\"ê¹Į\":124667,\"ØŃÙĬ\":124668,\"Ø§Ø±Ø§Øª\":124669,\"à¹Ģà¸ĭ\":124670,\"Ø¨Ø§\":124671,\"Ð³ÑĢ\":124672,\"à¸£à¸µ\":124673,\"à¸·à¸Ńà¸Ļ\":124674,\"Ø¹Øª\":124675,\"ÙĤØ§ÙĦ\":124676,\"Ø¯Ùħ\":124677,\"Ø¡\":124678,\"Ġ×ŀ×§\":124679,\"×ĵ×Ļ×Ŀ\":124680,\"×¢×ľ\":124681,\"ãģĴ\":124682,\"ëĭĺ\":124683,\"×¢×Ķ\":124684,\"Ġìĸ´\":124685,\"ÑģÑĮ\":124686,\"ÙĤØ·\":124687,\"ãĥĽ\":124688,\"èĢĥãģĪ\":124689,\"à¹ģà¸Ļ\":124690,\"ÙĪØ§Øª\":124691,\"Ã¢u\":124692,\"ĠìĤ¬ëŀ\":124693,\"à¸«à¸§\":124694,\"ĠØ§ÙĦØ£Ùħ\":124695,\"Ġ×Ķ×ŀ×©\":124696,\"Ø¨ÙĪ\":124697,\"à¸Ĭà¸Ļ\":124698,\"ãĤĵãģ§ãģĻ\":124699,\"à¸§à¸Ļ\":124700,\"à¸ģà¸£à¸£à¸¡\":124701,\"×ŀ×ķ×ĵ\":124702,\"ÙĥØ§ÙĨ\":124703,\"×ķ×£\":124704,\"Ð¾Ð»Ð¾Ð³\":124705,\"ØªÙĨ\":124706,\"à¸ķà¹Į\":124707,\"ê²ĥ\":124708,\"×¨×ĺ\":124709,\"á»«ng\":124710,\"×ķ×ĳ×Ķ\":124711,\"ÙħØŃ\":124712,\"ĠÐ§\":124713,\"×¤×Ĵ\":124714,\"à¸ªà¸ĸ\":124715,\"ãģĭãĤĬ\":124716,\"Ä±nÄ±z\":124717,\"à¹Ģà¸¢\":124718,\"ãĥ¼ãĥ³\":124719,\"ãģĬãĤĬ\":124720,\"×¤×©\":124721,\"à¸´à¸ķ\":124722,\"Ø·ÙĨ\":124723,\"×Ļ×ª×Ļ\":124724,\"×Ĳ×ł\":124725,\"Ã§ek\":124726,\"ìª\":124727,\"×ŀ×ĳ\":124728,\"à¸¨à¸²\":124729,\"ãĤ¹ãĤ¿\":124730,\"à¸ļà¸¸\":124731,\"×ĵ×ĳ×¨\":124732,\"ãģĦãģı\":124733,\"à¸ªà¸°\":124734,\"à¹Ģà¸«à¸¥\":124735,\"à¸´à¸ĩ\":124736,\"à¸ŀà¸±à¸Ļ\":124737,\"ãģĦãģŁãģł\":124738,\"ãĤĤãĤī\":124739,\"à¹īà¸¡\":124740,\"ãģĵãģ¨ãģĮãģ§ãģį\":124741,\"à¸²à¸£à¹Į\":124742,\"à¸¸à¸ĩ\":124743,\"íĳ\":124744,\"ì¯\":124745,\"ë¼\":124746,\"íĤ\":124747,\"ì·\":124748,\"ê¡\":124749,\"áı\":124750,\"áĴ\":124751,\"ðĿľ\":124752,\"á©\":124753,\"ðŁĦ\":124754,\"ðĲ¤\":124755,\"Ġ×©×ľ\":124756,\"Ġ×ŀ×Ķ\":124757,\"à¹ģà¸¥à¸°\":124758,\"Ġ×Ľ×ľ\":124759,\"áº½\":124760,\"á»Ļng\":124761,\"Ø°ÙĬ\":124762,\"Ð»Ðµ\":124763,\"×¥\":124764,\"ãģªãģ©\":124765,\"ĠÙĪØ£\":124766,\"à¸«à¸Ļà¹īà¸²\":124767,\"ãģ¾ãģ§\":124768,\"à¸ķà¹Īà¸Ń\":124769,\"à¸Ĺà¸±à¹īà¸ĩ\":124770,\"ãģłãģĳ\":124771,\"à¹ģà¸ļà¸ļ\":124772,\"à¹Ģà¸£à¸²\":124773,\"×¤×ľ\":124774,\"ãģŁãģĦ\":124775,\"à¹Ģà¸¥à¸¢\":124776,\"ãģ£ãģ¦ãģĦãĤĭ\":124777,\"áº¿p\":124778,\"à¸¶à¹Īà¸ĩ\":124779,\"ê´Ģ\":124780,\"ê³Ħ\":124781,\"×Ľ×ķ\":124782,\"à¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ\":124783,\"×§×Ļ\":124784,\"êµŃ\":124785,\"×¤×¡\":124786,\"ØªÙĬ\":124787,\"ãĥĦ\":124788,\"Ġ×Ķ×Ĺ\":124789,\"Ð³Ð¸\":124790,\"×¨×Ĳ×ľ\":124791,\"×ŀ×ľ\":124792,\"ĠØ£ÙĬ\":124793,\"ĠØ¹ÙĦÙĬ\":124794,\"ãģĭãģ£ãģŁ\":124795,\"×©×Ļ\":124796,\"Ð´Ñĥ\":124797,\"×ŀ×Ł\":124798,\"×ł×ĺ\":124799,\"×ł×Ļ×ª\":124800,\"miÅŁ\":124801,\"×Ľ×Ŀ\":124802,\"Ġ×ĳ×¨\":124803,\"Ġ×ľ×ĳ\":124804,\"ĠÐĽ\":124805,\"Ã§e\":124806,\"×ķ×ł×Ļ\":124807,\"ãĤĪãģĨãģ«\":124808,\"×¤×ķ×¨\":124809,\"ãĥį\":124810,\"ÙĥÙĬ\":124811,\"×Ĺ×ª\":124812,\"ÙģÙĦ\":124813,\"Ġ×Ķ×§\":124814,\"Ġ×Ķ×ĳ\":124815,\"Ġ×ŀ×¡\":124816,\"à¹Īà¸²à¸Ļ\":124817,\"Ð¿ÐµÑĢ\":124818,\"à¹Īà¸²à¸§\":124819,\"Ġ×ĳ×Ĳ\":124820,\"ĠÙĪÙĩ\":124821,\"à¸Ļà¸³\":124822,\"Ġ×ĳ×©\":124823,\"×ł×§\":124824,\"ãģ©ãģĨ\":124825,\"×©×ķ×ª\":124826,\"×ĵ×Ķ\":124827,\"à¹Ģà¸ļ\":124828,\"ÙĨØ³\":124829,\"Ġìļ°ë¦¬\":124830,\"à¸ªà¹Īà¸§à¸Ļ\":124831,\"à¸¥à¸±à¸ĩ\":124832,\"Ø¬Ø²\":124833,\"Ġ×Ĺ×Ļ\":124834,\"ÙĥØ«Ø±\":124835,\"à¸¥à¸°\":124836,\"ÙĩØ¯\":124837,\"ĠÙĪØ¨\":124838,\"Ø§ÙĦÙħ\":124839,\"à¹ģà¸¡\":124840,\"Æ¡i\":124841,\"Ġ×ĳ×Ĺ\":124842,\"á»¯a\":124843,\"à¹Ģà¸Ĺà¸¨\":124844,\"à¸ķà¸±à¹īà¸ĩ\":124845,\"Ð¾Ð³Ð´Ð°\":124846,\"×ľ×§\":124847,\"Ø¯Ø¯\":124848,\"à¸ªà¸£à¹īà¸²à¸ĩ\":124849,\"à¸Ĭà¸µ\":124850,\"ÙģØ¶\":124851,\"à¹ģà¸«\":124852,\"uyá»ĩn\":124853,\"à¸£à¸±à¸ģ\":124854,\"á»ĩm\":124855,\"à¸ªà¸²\":124856,\"×¤×§\":124857,\"à¸µà¸¢à¸ĩ\":124858,\"à¸ķà¹Īà¸²à¸ĩ\":124859,\"à¸Ħà¸£à¸±à¹īà¸ĩ\":124860,\"ØŃÙĤ\":124861,\"à¹Ģà¸Ńà¸ĩ\":124862,\"Ø§Ø¦ÙĬ\":124863,\"×ĺ×¢\":124864,\"Ø§ÙĦØ©\":124865,\"à¸´à¹Īà¸¡\":124866,\"ãĤ½\":124867,\"Ø¯Ùī\":124868,\"Ġ×¨×Ĳ\":124869,\"ãģ£ãģ¨\":124870,\"ãĥĥãĥĹ\":124871,\"ÙĬØ±Ø©\":124872,\"ê±´\":124873,\"×ŀ×Ĳ\":124874,\"×ķ×ķ\":124875,\"Ø¨Ø¹\":124876,\"ãģ²\":124877,\"à¸£à¸²à¸¢\":124878,\"×ĵ×Ŀ\":124879,\"ØªÙģ\":124880,\"à¸ķà¸ģ\":124881,\"áº¡ng\":124882,\"ãĤĴè¦ĭ\":124883,\"à¸Ĭà¸±\":124884,\"Æ°á»Ł\":124885,\"Æ°á»Łng\":124886,\"Ø¬Ø¨\":124887,\"×ķ×ŀ×¨\":124888,\"ĠìĤ¬ëŀĮ\":124889,\"Ã³ng\":124890,\"à¸£à¸±\":124891,\"Ġ×Ķ×ĸ\":124892,\"×¨×¦\":124893,\"Ġ×Ĺ×ĵ\":124894,\"Ø°ÙĦÙĥ\":124895,\"×ķ×¨×Ļ\":124896,\"ãģ¡ãĤĥ\":124897,\"ÙģØ¹\":124898,\"Ġ×ľ×¦\":124899,\"Ã¡i\":124900,\"à¹ĩà¸ļ\":124901,\"ãģİ\":124902,\"à¸ģà¸´\":124903,\"áº¡c\":124904,\"ë©°\":124905,\"ãģªãĤĭ\":124906,\"×ķ×ľ×Ŀ\":124907,\"à¹ģà¸Ĺ\":124908,\"×ķ×¥\":124909,\"Ð¼ÐµÑĤ\":124910,\"Ã¼ÅŁ\":124911,\"ÑĢÑı\":124912,\"à¸Ĵ\":124913,\"ÑģÑĤÐ¾Ñı\":124914,\"Ø¹ÙĪØ¯\":124915,\"ÙħØ§Ø±\":124916,\"Ø·Ø©\":124917,\"à¸ŀà¸·\":124918,\"ÐºÑĢ\":124919,\"à¹ģà¸ģ\":124920,\"à¹Ĥà¸£à¸ĩ\":124921,\"×ĳ×Ļ×ĺ\":124922,\"ê²ł\":124923,\"×ķ×ľ×Ķ\":124924,\"ØŃØ±\":124925,\"à¸·à¹Īà¸Ńà¸Ļ\":124926,\"×ķ×ĳ×¨\":124927,\"×Ĺ×©\":124928,\"ãĥķãĤ¡\":124929,\"×ŀ×ĺ\":124930,\"Ãºt\":124931,\"ĠdÃ¶n\":124932,\"áº¯ng\":124933,\"ëłĩ\":124934,\"áº³ng\":124935,\"à¸§à¸ģ\":124936,\"ØµØ¯\":124937,\"Ø®Ø·\":124938,\"à¸Ńà¸±\":124939,\"ãĤıãĤĮ\":124940,\"Ø³ÙĦØ§Ùħ\":124941,\"à¹Ģà¸£à¹ĩ\":124942,\"×Ļ×©×Ļ\":124943,\"Ø¬Ø§ÙĦ\":124944,\"ãģĳãĤĭ\":124945,\"à¸Ĭà¸²à¸ķà¸´\":124946,\"ÙĪØ§ÙĤ\":124947,\"à¹Ĥà¸Ļ\":124948,\"ãģ¦ãģĹãģ¾\":124949,\"Ø§Ø¹Ø©\":124950,\"ãĤŃãĥ£\":124951,\"à¸įà¸²\":124952,\"ÙĦØ§ÙĤ\":124953,\"à¸´à¸ģ\":124954,\"ĠÑģÐ¾Ð²\":124955,\"ÑĢÐ°Ðº\":124956,\"×Ļ×ł×Ļ\":124957,\"Ã¼ÄŁ\":124958,\"Ã¼ÄŁÃ¼\":124959,\"×§×ĳ\":124960,\"à¹Īà¸Ńà¸ĩ\":124961,\"ĠgerÃ§ek\":124962,\"à¸Ĺà¸±\":124963,\"Ð¾Ð²Ð°Ð½Ð¸Ñı\":124964,\"×ŀ×Ľ\":124965,\"Ø³Ø©\":124966,\"×Ļ×£\":124967,\"leÅŁ\":124968,\"ÙħØ¤\":124969,\"ĠìĿĺ\":124970,\"à¸Ĳà¸²à¸Ļ\":124971,\"ĠÑģÐ¾Ð±\":124972,\"ĠêµŃ\":124973,\"×¢×¦\":124974,\"Ð·Ð²\":124975,\"à¸ªà¸ĩ\":124976,\"Ø²ÙĦ\":124977,\"ãģıãĤĮ\":124978,\"Ð¸ÑĢÑĥ\":124979,\"ØªØ£\":124980,\"Ð¿Ð¾Ð»Ð½\":124981,\"ìĺĢ\":124982,\"ÙĨØ´\":124983,\"×Ľ×Ĳ\":124984,\"ÙħØ´\":124985,\"à¸Ķà¹Į\":124986,\"ÙĪÙĬÙĦ\":124987,\"à¹ģà¸Ĥ\":124988,\"ãģ£ãģ¦ãģĹãģ¾\":124989,\"Ð½Ð¾ÑģÑĤ\":124990,\"Ð²Ð»\":124991,\"ÙħÙĤ\":124992,\"Ø±Ø§Ø¬\":124993,\"å¤ī\":124994,\"ëĽ\":124995,\"â¸\":124996,\"ìĲ\":124997,\"à»\":124998,\"áļ\":124999,\"â»\":125000,\"êĻ\":125001,\"â§\":125002,\"ðĴ\":125003,\"ðĿĩ\":125004,\"Ġ×Ĳ×ª\":125005,\"ĠÙĦÙĦ\":125006,\"ĠØ£ÙĨ\":125007,\"Ġ×ķ×Ķ\":125008,\"ãģ«ãģ¯\":125009,\"Ġ×Ļ×©\":125010,\"ØªÙĩ\":125011,\"ÃŃnh\":125012,\"ÙĬØ§Øª\":125013,\"Ġ×ĳ×ŀ\":125014,\"à¸Ļà¸±à¹īà¸Ļ\":125015,\"à¸Ļà¹īà¸³\":125016,\"Ãło\":125017,\"à¸ķà¸²à¸¡\":125018,\"ãģ®ãģ¯\":125019,\"dÄ±r\":125020,\"Ġnghi\":125021,\"áº·t\":125022,\"×ŀ×Ļ×Ŀ\":125023,\"ãģ¦ãģĦãĤĭ\":125024,\"Ġ×ĳ×ª\":125025,\"à¸«à¸£à¸·à¸Ń\":125026,\"ĠØ³ÙĬ\":125027,\"ãģªãĤī\":125028,\"à¹Ĥà¸Ķà¸¢\":125029,\"Ä±yor\":125030,\"à¸Ńà¸µà¸ģ\":125031,\"á»ĩnh\":125032,\"ÑĭÐ¼\":125033,\"à¸Ĺà¸¸à¸ģ\":125034,\"Ġ×ľ×Ĺ\":125035,\"Ġ×Ķ×¨\":125036,\"Ġ×Ķ×Ļ\":125037,\"à¸ŀà¸£à¸°\":125038,\"à¹Ģà¸§à¸¥à¸²\":125039,\"ĠØº\":125040,\"áº«n\":125041,\"mÄ±ÅŁ\":125042,\"×Ľ×Ķ\":125043,\"á»ĳn\":125044,\"ãģ§ãģĹãĤĩãģĨ\":125045,\"ãĥ¢\":125046,\"à¸Ľà¸µ\":125047,\"×¡×Ļ\":125048,\"ãģĵãĤį\":125049,\"Ġ×ľ×¤\":125050,\"à¸£à¸ĸ\":125051,\"ê¸Ī\":125052,\"à¸ģà¸§à¹Īà¸²\":125053,\"ë¬´\":125054,\"á»įng\":125055,\"ãĤĵãģ§\":125056,\"ãĤĪãģĨãģª\":125057,\"á»ĵi\":125058,\"ãĤ¬\":125059,\"à¸ªà¹Īà¸ĩ\":125060,\"×Ļ×ł×Ķ\":125061,\"à¸ĸà¸¹à¸ģ\":125062,\"à¸Īà¸±à¸Ķ\":125063,\"Ġ×Ķ×Ĵ\":125064,\"ãĥľ\":125065,\"×ŀ×ķ×ª\":125066,\"ÙĪÙĥ\":125067,\"ëĭ¨\":125068,\"ĠØ«\":125069,\"ãģ®ãģĮ\":125070,\"à¹Ģà¸«à¹ĩà¸Ļ\":125071,\"Ø¹Ø§\":125072,\"à¸Ļà¸´\":125073,\"Åŀ\":125074,\"à¸Ńà¸°\":125075,\"ãģĪãĤĭ\":125076,\"Ø«ÙĦ\":125077,\"ØŃÙħØ¯\":125078,\"à¹Ģà¸ģà¸´à¸Ķ\":125079,\"×¤×©×¨\":125080,\"×¤×Ķ\":125081,\"à¸¡à¸´\":125082,\"Ø¦ÙĬØ³\":125083,\"à¸Ĺà¸³à¹ĥà¸«à¹ī\":125084,\"×¢×ĵ\":125085,\"ìĭ¤\":125086,\"à¸Ĭà¹Īà¸§à¸¢\":125087,\"ĠØ§ÙĦÙħÙĨ\":125088,\"Ø²ÙĬ\":125089,\"Ø¹ÙĬ\":125090,\"Ġ×Ľ×Ĳ\":125091,\"áº¡nh\":125092,\"á»¹\":125093,\"ãĤĵãģª\":125094,\"à¸ªà¸¹\":125095,\"×¦×¨\":125096,\"Æ°á»Ľng\":125097,\"×ķ×ķ×Ķ\":125098,\"à¹Ĥà¸¥\":125099,\"ĠØ§ÙĦÙĩ\":125100,\"à¸§à¸²\":125101,\"à¸«à¸¥à¸²à¸¢\":125102,\"ÑīÐµ\":125103,\"à¸Ĥà¹īà¸Ń\":125104,\"à¹īà¸Ńà¸¢\":125105,\"Ø¨Ø·\":125106,\"ÐºÐ°Ñı\":125107,\"ĠØ¢\":125108,\"ĠÐ¸Ñģ\":125109,\"ĠØ§ÙĦØº\":125110,\"à¸ģà¸²\":125111,\"à¸Ļà¹Īà¸²\":125112,\"ÙĬÙĪ\":125113,\"×ĳ×ķ×¨\":125114,\"á»ħn\":125115,\"à¸§à¸ĩ\":125116,\"×Ļ×ĸ\":125117,\"ì²Ń\":125118,\"Ð½Ð¸Ð¼\":125119,\"ëŁ°\":125120,\"×Ĵ×ķ×¨\":125121,\"ØµØŃ\":125122,\"ÙĦÙĪ\":125123,\"×Ĺ×ķ×ª\":125124,\"à¸ªà¸¸\":125125,\"Ø±ÙĬÙĤ\":125126,\"×¡×ĺ\":125127,\"Ġ×ŀ×¢\":125128,\"ãĥĨãĤ£\":125129,\"à¸Ħà¸´à¸Ķ\":125130,\"ãĤįãģĨ\":125131,\"à¹Ħà¸¥\":125132,\"à¸Ļà¹Į\":125133,\"á»ıi\":125134,\"ÑģÑĤÑĢÐ¾\":125135,\"à¸ªà¸Ķ\":125136,\"à¸ªà¸²à¸£\":125137,\"ÙĪÙĦØ©\":125138,\"áº§m\":125139,\"à¸£à¹Īà¸§\":125140,\"à¸£à¹Īà¸§à¸¡\":125141,\"à¸£à¸¸\":125142,\"ĠØ§ÙĦØ³ÙĬ\":125143,\"ìĺģ\":125144,\"Ġ×ŀ×ĳ\":125145,\"×¤×ĺ\":125146,\"à¸ķà¸´à¸Ķ\":125147,\"×ĺ×Ļ×Ŀ\":125148,\"Ġë¬´\":125149,\"ÙĤØ¯Ùħ\":125150,\"ĠdÃ¼ÅŁ\":125151,\"Ø§Ø¦ÙĦ\":125152,\"Ð¼Ñĭ\":125153,\"ØŃØ³\":125154,\"ÙĪØµ\":125155,\"×Ļ×§×Ķ\":125156,\"ãģ§ãģ¯ãģªãģĦ\":125157,\"à¹Ģà¸«à¸¡\":125158,\"Ð¾ÑĢÑĤ\":125159,\"íĨµ\":125160,\"ãģĲ\":125161,\"ÐºÑĢÐ°\":125162,\"à¸µà¸¢à¸§\":125163,\"Ø¹Ø§Ø±\":125164,\"Ø¦Ø©\":125165,\"íĥĢ\":125166,\"ãģ«ãģªãĤĬ\":125167,\"Ø¬Ø©\":125168,\"ÙĪÙĤØ¹\":125169,\"ÑĮÑı\":125170,\"×ķ×¦×Ķ\":125171,\"×©×Ŀ\":125172,\"Ø¨ÙĤ\":125173,\"Ġ×Ļ×Ķ\":125174,\"ÙĬØ·\":125175,\"Ä±mÄ±z\":125176,\"Ð´ÐµÑĢÐ¶\":125177,\"×Ļ×©×¨×Ĳ×ľ\":125178,\"ØºÙĬØ±\":125179,\"à¸£à¸Ńà¸ĩ\":125180,\"à¹Ģà¸£à¸µà¸¢à¸Ļ\":125181,\"Ġ×Ķ×ĺ\":125182,\"à¸«à¸¡à¸²à¸¢\":125183,\"ÙħÙĩ\":125184,\"Ø§ÙģØ©\":125185,\"ĠÐ¾ÑĢÐ³\":125186,\"ÙĪÙī\":125187,\"ãĥ©ãĤ¤\":125188,\"×ŀ×ł×Ķ\":125189,\"ĠÄĳo\":125190,\"ĠÐ³Ð¾ÑĢ\":125191,\"Ø§ÙħØ©\":125192,\"æ¥½\":125193,\"Ø«ÙĬØ±\":125194,\"à¸ģà¸´à¸Ī\":125195,\"á»ĵn\":125196,\"ÙĨØ¨\":125197,\"ÑĢÑĥÐ´\":125198,\"ìĹĪ\":125199,\"Ġ×Ĺ×ĳ×¨\":125200,\"ÑĢÐ°Ð¶\":125201,\"áº¡ch\":125202,\"ØªÙĪ\":125203,\"à¹Ĥà¸¡\":125204,\"×ĳ×Ļ×ĳ\":125205,\"ĠíĨµ\":125206,\"acaÄŁÄ±\":125207,\"Ø¬ÙĦØ³\":125208,\"à¹Ģà¸Ľà¸¥\":125209,\"à¸§à¸Ķ\":125210,\"à¸Ńà¸¥\":125211,\"ãģŁãĤĬ\":125212,\"à¸Ľà¸±à¸į\":125213,\"ĠìķĮ\":125214,\"Ø¹Ø±Ùģ\":125215,\"à¹Ħà¸Ł\":125216,\"Ø£Ø®\":125217,\"å¤ļãģĦ\":125218,\"à¸Ķà¸±à¸ĩ\":125219,\"Ø´Ùģ\":125220,\"ãģ£ãģ¦ãģĦãģ¾ãģĻ\":125221,\"×Ľ×ł×¡\":125222,\"ÑĨÐµ\":125223,\"ÐµÑģÐ¿\":125224,\"ÙħØ§Ùħ\":125225,\"à¸ŀà¸·à¹īà¸Ļ\":125226,\"Ð¸ÑĩÐµÑģÐºÐ¸\":125227,\"Ø®Ø¯\":125228,\"ÙĥÙĪÙħ\":125229,\"Ġ×Ķ×¨×Ĳ×©\":125230,\"ØªØ§Ø¨\":125231,\"é£Łãģ¹\":125232,\"à¸·à¸Ļ\":125233,\"Ð¾ÑĢÐ¾\":125234,\"ĠbÃ¶l\":125235,\"×ķ×Ĺ×ĵ\":125236,\"Ø¯ÙĬØ±\":125237,\"áº¯m\":125238,\"Ø¯Ø¹\":125239,\"ãģķãģĽ\":125240,\"à¸ĺà¸£\":125241,\"à¸ĺà¸£à¸£à¸¡\":125242,\"ãģĭãĤĤ\":125243,\"å¤ļãģı\":125244,\"rÃ¤\":125245,\"Ø³Ø¹\":125246,\"×Ļ×ľ×Ķ\":125247,\"Ø¶Ø±\":125248,\"ĠØ§ÙĦØ´Ø±\":125249,\"×ĸ×ķ×¨\":125250,\"×¢×ĳ×¨\":125251,\"áº¡m\":125252,\"Ð°Ð»ÑĮÐ½Ð¾\":125253,\"Ø±ÙĨ\":125254,\"Ø§ÙħØ¬\":125255,\"×Ľ×ļ\":125256,\"dÄ±ÄŁ\":125257,\"Ð´ÐµÐ½\":125258,\"Ø¶Ø§\":125259,\"ÙĦÙĬÙħ\":125260,\"Ġê·¸ëŁ¬\":125261,\"ØªÙħØ§Ø¹\":125262,\"Ø§Ø±ÙĬØ®\":125263,\"à¹Ĥà¸ķ\":125264,\"ĠÑģÑĢÐµÐ´\":125265,\"Ġ×ł×ķ×¡\":125266,\"ÙĤØ¨ÙĦ\":125267,\"Ð¾ÑĤÐ¾Ð²\":125268,\"leÅŁtir\":125269,\"ĠÐ¼ÐµÑģÑĤ\":125270,\"Ø³ÙĦÙħ\":125271,\"Ġ×¢×¦\":125272,\"ĠØ§ÙĦØ³ÙĦ\":125273,\"ÐµÑĤÑĮ\":125274,\"Ø§Ø¨Ø©\":125275,\"Ð½Ð°Ðº\":125276,\"à¸ªà¸ĸà¸²à¸Ļ\":125277,\"Ġ×ĳ×ł\":125278,\"à¸ļà¸±à¸Ļ\":125279,\"×Ľ×ł\":125280,\"ĠÃ¶ÄŁ\":125281,\"ãģ¨è¨Ģ\":125282,\"uyáº¿n\":125283,\"diÄŁ\":125284,\"áºŃu\":125285,\"ÑĢÐ°Ñģ\":125286,\"ãĤ·ãĥ§ãĥ³\":125287,\"nÄ±z\":125288,\"×ķ×ĵ×Ķ\":125289,\"ØªØ³\":125290,\"ÙħØ§ÙĦ\":125291,\"à¹Ģà¸«à¸ķà¸¸\":125292,\"à¸¢à¸§\":125293,\"à¸ŀà¸±à¸ģ\":125294,\"ãģĦãģªãģĦ\":125295,\"ĠÐºÐ°Ñĩ\":125296,\"à¸¥à¹Į\":125297,\"×¨×Ľ×ª\":125298,\"ÅŁtur\":125299,\"×ŀ×ķ×¡\":125300,\"ãģ¥\":125301,\"Ð±Ð¾Ð»\":125302,\"Ø¹ÙħØ§ÙĦ\":125303,\"×ķ×¨×ª\":125304,\"ÑĨÐ¸Ð¾Ð½\":125305,\"à¸¨à¸¶à¸ģ\":125306,\"à¸ı\":125307,\"ÑĢÐµÐ½\":125308,\"Ø§Ø³ÙĬ\":125309,\"Ø§Ø¦Ø±\":125310,\"à¹Ĥà¸Ľà¸£\":125311,\"ĠseÃ§\":125312,\"ØºÙĬ\":125313,\"ÑįÑĤ\":125314,\"ÐµÐ½Ð½\":125315,\"ãģªãģ®\":125316,\"×Ļ×©×Ķ\":125317,\"×Ļ×¤×ķ×¨\":125318,\"ãģŁãĤģãģ«\":125319,\"Ø²Ø©\":125320,\"ĠÃ§oc\":125321,\"ãĤ¯ãĥª\":125322,\"ÑĪÐµÐ½\":125323,\"ãĤıãģĳ\":125324,\"Ø±ÙĬØ¯\":125325,\"ĠÑĢÐ°ÑģÑģ\":125326,\"ÙĥØ§Øª\":125327,\"à¸ªà¸Ńà¸ļ\":125328,\"ceÄŁi\":125329,\"ãĤ¿ãĤ¤\":125330,\"à¸ļà¸£\":125331,\"ĠØ§ÙĦØ¨Ø±\":125332,\"×ł×ķ×¢\":125333,\"rÃ¼n\":125334,\"Ø±Ø§Ø¶\":125335,\"à¸¨à¸²à¸ª\":125336,\"à¸ķà¸£à¹Į\":125337,\"ãģįãģŁ\":125338,\"×ķ×ľ×ĵ\":125339,\"ÐµÑĢÐ¸\":125340,\"íĹĺ\":125341,\"áº¯p\":125342,\"ØªØ¹ÙĦ\":125343,\"ÙĥØ¯\":125344,\"Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\":125345,\"Ø·Ùģ\":125346,\"ĠÐ°Ð²ÑĤÐ¾Ð¼\":125347,\"Ġ×ŀ×¦\":125348,\"ÑĪÐ¸Ñħ\":125349,\"Ø§ØªÙģ\":125350,\"ĠÑħÐ¾ÑĤ\":125351,\"ÙİØ§\":125352,\"ãģıãĤĭ\":125353,\"×Ķ×¤\":125354,\"à¹Ĥà¸Ĺ\":125355,\"à¹ģà¸ŀ\":125356,\"à¹Īà¸Ńà¸¢\":125357,\"ĠØ§ÙĦÙħØ´\":125358,\"à¸ģà¸²à¸£à¸ĵà¹Į\":125359,\"Ð°Ð½Ð¸Ð·\":125360,\"×Ķ×ľ\":125361,\"Ø¸Ùħ\":125362,\"à¸¢à¸¸\":125363,\"liÄŁ\":125364,\"à¹Ħà¸Ĥ\":125365,\"à¸ĸà¸·à¸Ń\":125366,\"Ã¶z\":125367,\"ãģĳãģ¦\":125368,\"à¹Ģà¸ľ\":125369,\"à¸¸à¸¡\":125370,\"ãĥĹãĥ¬\":125371,\"Ġ×Ķ×Ĳ×Ĺ×¨\":125372,\"Ø®ØªÙĦÙģ\":125373,\"à¸İ\":125374,\"ÙĦØ§ØŃ\":125375,\"ĠdÃ¼zen\":125376,\"×¦×Ķ\":125377,\"Ø³Ø§Ø¡\":125378,\"×ķ×¨×ļ\":125379,\"×ķ×ĵ×Ļ\":125380,\"ÑĢÐ°ÑĦ\":125381,\"ÅŁtÄ±r\":125382,\"ãģ«åħ¥\":125383,\"ãģĪãģ°\":125384,\"ØµÙĪÙĦ\":125385,\"ĠÐľÐ¾Ñģ\":125386,\"Ø§ÙĩØ±\":125387,\"ãģ£ãģ\":125388,\"ĠÐ»ÑİÐ±\":125389,\"×Ļ×¢×Ķ\":125390,\"Ġ×Ķ×ŀ×§\":125391,\"à¸ªà¸´à¸Ĺ\":125392,\"à¸ªà¸´à¸Ĺà¸ĺà¸´\":125393,\"×Ļ×ł×Ŀ\":125394,\"ÙĦØ§Ùģ\":125395,\"à¸ŀà¸±à¸Ļà¸ĺ\":125396,\"×ķ×Ĳ×Ķ\":125397,\"à¸¡à¸±\":125398,\"à¸Ĥà¸ĵà¸°\":125399,\"Ð´Ð¾ÑĢ\":125400,\"ãģ¨ãģª\":125401,\"à¸ģà¸£à¸°à¸Ĺ\":125402,\"acÄ±\":125403,\"×ķ×ľ×ķ×Ĵ\":125404,\"ÑĥÑĪ\":125405,\"ãĥ¥ãĥ¼\":125406,\"ãĥ¦\":125407,\"ÙħØ³Øª\":125408,\"ĠaÅŁ\":125409,\"×©×§\":125410,\"×¤×ª×Ĺ\":125411,\"à¸²à¸¢à¸Ļ\":125412,\"íĩ\":125413,\"ë¢\":125414,\"ï·\":125415,\"íī\":125416,\"ìµ\":125417,\"ì¬\":125418,\"ðĿĽ\":125419,\"ìĴ\":125420,\"ëĻ\":125421,\"ê§\":125422,\"áĸ\":125423,\"â¨\":125424,\"â±\":125425,\"áĺ\":125426,\"ðĸ\":125427,\"àł\":125428,\"áĶ\":125429,\"ðĲŃ\":125430,\"á»¯ng\":125431,\"Å©ng\":125432,\"Ġ×Ķ×ª\":125433,\"ĠØ§ÙĦØ§\":125434,\"Ġ×ŀ×ª\":125435,\"à¸ĸà¸¶à¸ĩ\":125436,\"Ã²n\":125437,\"á»ĭnh\":125438,\"Ð½ÑĭÐ¼\":125439,\"Ġcáº£\":125440,\"à¸Ķà¸¹\":125441,\"Ġà¹ģà¸ķà¹Ī\":125442,\"Ġ×ĳ×Ķ\":125443,\"Ã³i\":125444,\"ãģ¨ãģĹãģ¦\":125445,\"Ãºng\":125446,\"ĠØ°\":125447,\"Ġ×Ķ×ł\":125448,\"ĠØ¨ÙĨ\":125449,\"ÙĦØ§ÙĦ\":125450,\"à¹Ħà¸Ĺà¸¢\":125451,\"á»ĩp\":125452,\"tÄ±\":125453,\"à¸¡à¸±à¸Ļ\":125454,\"áº±ng\":125455,\"á»ĳt\":125456,\"ÐºÐ¾Ð¼\":125457,\"à¸ĭà¸¶à¹Īà¸ĩ\":125458,\"à¸Ħà¸£à¸±à¸ļ\":125459,\"à¸ļà¹īà¸²à¸Ļ\":125460,\"ĠØ§ÙĦÙĬ\":125461,\"lÃ¼\":125462,\"ÙĪØ³\":125463,\"ãģłãģ£ãģŁ\":125464,\"à¹Ģà¸ĩ\":125465,\"Ġê³µ\":125466,\"Ð½Ñĥ\":125467,\"ãĤĪãĤĬ\":125468,\"Ð¼Ñĥ\":125469,\"à¹Ģà¸Ĥà¸²\":125470,\"ãĤĢ\":125471,\"Ð½Ð¸Ðµ\":125472,\"ãģ«ãģªãĤĭ\":125473,\"áºŃy\":125474,\"ĠÙĪØ§\":125475,\"ëł¤\":125476,\"×©×ķ\":125477,\"Ã¡p\":125478,\"×ĵ×ķ\":125479,\"ãģ§ãģĹãģŁ\":125480,\"Ø¹Ø¶\":125481,\"ÑģÐºÐ¾Ð¹\":125482,\"æĦŁãģĺ\":125483,\"ÑİÑĤÑģÑı\":125484,\"Ġ×Ļ×Ľ×ķ×ľ\":125485,\"ãĤĵãģł\":125486,\"Ð²Ð¸\":125487,\"à¹Ģà¸¥à¹Īà¸Ļ\":125488,\"ìĿ´ëĭ¤\":125489,\"ĠÙĦÙĩ\":125490,\"à¸Ħà¸·à¸Ń\":125491,\"ØªÙĥ\":125492,\"ÙħÙĥÙĨ\":125493,\"aÄŁÄ±\":125494,\"×ł×ĵ\":125495,\"ë¯¼\":125496,\"à¹Ħà¸§\":125497,\"à¸ªà¸³à¸«\":125498,\"à¸ªà¸³à¸«à¸£à¸±à¸ļ\":125499,\"ÑģÐ»ÐµÐ´\":125500,\"tÄ±r\":125501,\"ĠÙĦÙĬ\":125502,\"ĠØ§ÙĦØ¹ÙħÙĦ\":125503,\"×ĳ×ķ×ª\":125504,\"×ĳ×Ļ×Ŀ\":125505,\"à¸Ħà¸³\":125506,\"à¹Ģà¸Ħà¸£à¸·à¹Īà¸Ńà¸ĩ\":125507,\"lÄ±ÄŁÄ±\":125508,\"à¸·à¸Ńà¸ĩ\":125509,\"Ø¬Ø¯\":125510,\"íŀĪ\":125511,\"ìĭ¬\":125512,\"×¢×ķ×ª\":125513,\"à¸ªà¸´à¸Ļ\":125514,\"ÑĩÐ¸\":125515,\"Ø±Ø¶\":125516,\"à¹Ģà¸Ľà¸´à¸Ķ\":125517,\"à¸Ħà¹Īà¸²\":125518,\"ìĦł\":125519,\"ÙĪØ±Ø©\":125520,\"×§×ĺ\":125521,\"ìľł\":125522,\"Ø¹ÙħÙĦ\":125523,\"×Ĳ×Ļ×Ŀ\":125524,\"×ľ×Ļ×Ŀ\":125525,\"à¹ĥà¸«à¸į\":125526,\"à¹ĥà¸«à¸įà¹Ī\":125527,\"á»«a\":125528,\"á»įi\":125529,\"ãģ¶\":125530,\"ÃŃch\":125531,\"ãĥĩãĤ£\":125532,\"×ķ×¨×Ļ×Ŀ\":125533,\"ÑģÐ¾\":125534,\"ìķ½\":125535,\"Ð¾Ð²Ð°\":125536,\"ÑĩÐ°ÑģÑĤ\":125537,\"à¹Ģà¸Īà¹īà¸²\":125538,\"Ð¿ÑĢÐ¾\":125539,\"Ġ×ŀ×Ĺ\":125540,\"ãĥİ\":125541,\"×ķ×Ļ×ķ×ª\":125542,\"ĠÐ´Ðµ\":125543,\"ë§Ī\":125544,\"ì§ģ\":125545,\"×Ļ×¤×Ķ\":125546,\"ĠØ§ÙĦØ¹Ø§ÙĦÙħ\":125547,\"ë¥´\":125548,\"×¨×Ĳ×Ķ\":125549,\"uyá»ĥn\":125550,\"×¢×Ļ\":125551,\"à¸¡à¸·à¸Ń\":125552,\"Ø¥ÙĨ\":125553,\"à¸£à¸¹\":125554,\"ĠØ²\":125555,\"×Ļ×ķ×Ŀ\":125556,\"à¸ķà¹īà¸Ļ\":125557,\"ãģ¦ãģĦãģ¾ãģĻ\":125558,\"ÙħØ§ÙĨ\":125559,\"ĠÐ¥\":125560,\"à¸Ľà¸£à¸°à¹Ģà¸Ĺà¸¨\":125561,\"á»³\":125562,\"×ľ×ĳ\":125563,\"à¹Ģà¸Ķà¹ĩ\":125564,\"ãģŁãģ¡\":125565,\"à¸Ĺà¸µà¸¡\":125566,\"à¸Ļà¸°\":125567,\"ìĹ°\":125568,\"ĠìłĢ\":125569,\"ÙĦÙĩ\":125570,\"á»Łi\":125571,\"ĠØ§ÙĦØ²\":125572,\"Ø¯Ø§Ø±\":125573,\"ãĤ³ãĥ³\":125574,\"Ð¼Ð¸Ð½\":125575,\"à¹ģà¸«à¹Īà¸ĩ\":125576,\"à¸Ķà¸±à¸ļ\":125577,\"×Ľ×¨\":125578,\"Ð¶Ð°\":125579,\"íĸĪ\":125580,\"×ŀ×ĸ\":125581,\"á»£i\":125582,\"à¸Ķà¸²\":125583,\"ĠØ¹Ø¨Ø¯\":125584,\"à¹ģà¸£\":125585,\"×Ĳ×ª×¨\":125586,\"×¢×ł×Ļ\":125587,\"à¹Ģà¸Ħ\":125588,\"×ķ×¦×¨\":125589,\"ì§Ģë§Į\":125590,\"Ø§Ø¦Ùħ\":125591,\"Ø£Ø³\":125592,\"uyá»ģn\":125593,\"Ġ×Ĳ×ł\":125594,\"×Ĺ×ł×ķ\":125595,\"×ĸ×Ļ\":125596,\"à¸£à¹īà¸²à¸Ļ\":125597,\"ĠÐłÐ¾Ñģ\":125598,\"ĠÐłÐ¾ÑģÑģ\":125599,\"Ø±Ø¨ÙĬØ©\":125600,\"tÃ¼r\":125601,\"ãĤĭãģĵãģ¨\":125602,\"Ø¸Ø±\":125603,\"Ð±Ñĭ\":125604,\"à¸Ĺà¸µà¹Īà¸ªà¸¸à¸Ķ\":125605,\"Ġ×¦×¨\":125606,\"èĩªåĪĨ\":125607,\"Ð»Ð°Ñģ\":125608,\"ĠÑıÐ²\":125609,\"ĠÑıÐ²Ð»Ñı\":125610,\"à¸ŀà¸£à¹īà¸Ńà¸¡\":125611,\"à¸Ńà¸²à¸Ī\":125612,\"à¸ļà¸£à¸´à¸ģà¸²à¸£\":125613,\"ĠÃ§Ä±\":125614,\"ëįĺ\":125615,\"ĠØ§ÙĦÙħØ³Øª\":125616,\"ØªØ´\":125617,\"×©×ķ×ĳ\":125618,\"ãĤ´\":125619,\"ĠyapÄ±l\":125620,\"ĠØ§ÙĦØ°\":125621,\"à¸¸à¹Īà¸¡\":125622,\"à¸ĸà¹īà¸²\":125623,\"ìĦ¤\":125624,\"ì°¨\":125625,\"Ð²Ð°ÑĢ\":125626,\"à¹Ģà¸ŀà¸´à¹Īà¸¡\":125627,\"Æ°á»Ľi\":125628,\"ÙĥØ³\":125629,\"à¸Ńà¸¢à¸²à¸ģ\":125630,\"ãģ¦ãĤĤ\":125631,\"ĠÐ³Ð¾Ð´\":125632,\"ÙĬØ§Ø±\":125633,\"à¸ķà¸Ńà¸Ļ\":125634,\"ĠÐ¸Ð³ÑĢ\":125635,\"à¹Ħà¸Ķà¹īà¸£à¸±à¸ļ\":125636,\"ĠØ§ÙĦÙħØ±\":125637,\"ÙĤØª\":125638,\"Ġëĺ\":125639,\"ĠëĺĲ\":125640,\"áº©n\":125641,\"ãģĻãĤĭãģĵãģ¨\":125642,\"×Ĵ×Ŀ\":125643,\"Ġ×ĳ×ĳ\":125644,\"ØªØ¯\":125645,\"ÙĪØ§Ø±\":125646,\"ãĤ®\":125647,\"Ð¿Ð¾Ð»\":125648,\"ĠÐ¼Ð¾Ð³\":125649,\"ØªØ±Ùĥ\":125650,\"ÙĪØ«\":125651,\"ĠÃ§Ä±k\":125652,\"Ø§Ø©\":125653,\"à¹Ģà¸Ķà¸µà¸¢à¸§\":125654,\"à¸¡à¸µà¸Ħà¸§à¸²à¸¡\":125655,\"Ġ×ŀ×Ĵ\":125656,\"ØµÙģ\":125657,\"ĠÐ¢Ð°Ðº\":125658,\"Ġ×Ľ×ª\":125659,\"×Ļ×ĵ×Ļ\":125660,\"Ð¾Ð²Ð¾ÑĢ\":125661,\"áº§y\":125662,\"à¸ªà¸´à¹Īà¸ĩ\":125663,\"Ø¨Øª\":125664,\"Ã¼rÃ¼\":125665,\"ÙĨØ¬\":125666,\"à¸«à¸¥à¸±à¸ģ\":125667,\"×Ļ×Ķ×Ŀ\":125668,\"ÙĤØµ\":125669,\"Ð·Ñĭ\":125670,\"×Ľ×ª×ĳ\":125671,\"Æ°u\":125672,\"mÄ±z\":125673,\"ĠìĦ¸\":125674,\"Ð»Ð¾Ð³\":125675,\"ÙħÙĬÙĦ\":125676,\"ÙĬØ¬\":125677,\"íĴĪ\":125678,\"à¸ŀà¸ļ\":125679,\"à¸«à¸±à¸§\":125680,\"Ð·Ð½Ð°\":125681,\"×¨×§\":125682,\"à¹Ĥà¸£\":125683,\"Ġ×ĳ×¡\":125684,\"ĠBaÅŁkan\":125685,\"ĠëĶ°\":125686,\"à¸Ńà¸±à¸Ļ\":125687,\"à¸µà¹Īà¸¢à¸§\":125688,\"Ð½ÐµÑģ\":125689,\"à¹Ģà¸Ķà¸´à¸Ļ\":125690,\"ÙĬØ§ÙĨ\":125691,\"×ķ×ľ×Ļ\":125692,\"Ø§Ø®Øª\":125693,\"×¦×ķ×ª\":125694,\"ãģĵãģĵ\":125695,\"ĠØ§ÙĦØ§ÙĨ\":125696,\"ĠÐ¿ÑĢÐ¾ÑĨ\":125697,\"ãģ¾ãģł\":125698,\"×Ľ×¡\":125699,\"ĠØ§ÙĦØ¢\":125700,\"ÙĬØ²\":125701,\"ĠØ§ÙĦØ¯ÙĪÙĦ\":125702,\"ĠíķĺëĤĺ\":125703,\"Ø¶Ø¹\":125704,\"ê»ĺ\":125705,\"ÅĽwi\":125706,\"à¸¢à¸´\":125707,\"ãģ¡ãĤĥãĤĵ\":125708,\"ĠÙħØ´\":125709,\"à¸ĺà¸µ\":125710,\"ãģ¨ãģį\":125711,\"×ł×Ļ×ķ×ª\":125712,\"Ġë¯\":125713,\"Ġë¯¸\":125714,\"ĠsÄ±\":125715,\"ëĭĪê¹Į\":125716,\"ĠÐ¿Ð»\":125717,\"ØºÙĦ\":125718,\"à¹ģà¸£à¸ĩ\":125719,\"Ø¨ÙĬØ±\":125720,\"ãģĤãĤĬãģ¾ãģĽãĤĵ\":125721,\"ê·¼\":125722,\"ĠyÃ¼z\":125723,\"ĠdeÄŁer\":125724,\"åł´åĲĪ\":125725,\"á»¡\":125726,\"Ð¼Ð°ÑĤ\":125727,\"à¸£à¸²à¸Ĭ\":125728,\"ÙĪØ±ÙĬ\":125729,\"Ð¶ÐµÐ½\":125730,\"ãģ¾ãĤĬ\":125731,\"ãģ®ä¸Ń\":125732,\"×Ļ×ĵ×¢\":125733,\"à¸Ńà¸¸\":125734,\"à¸ļà¸Ńà¸¥\":125735,\"à¸Ľà¸±à¸įà¸«à¸²\":125736,\"Ø²Ùħ\":125737,\"ÄŁa\":125738,\"à¸Ńà¸·à¹Ī\":125739,\"à¸Ńà¸·à¹Īà¸Ļ\":125740,\"Ð¿Ð»\":125741,\"ĠÐ½ÐµÐ¾Ð±ÑħÐ¾Ð´Ð¸Ð¼\":125742,\"×Ľ×ĳ\":125743,\"à¹Ģà¸¨\":125744,\"×§×¨×Ķ\":125745,\"ì²ĺ\":125746,\"ëł¨\":125747,\"×ŀ×§×ķ×Ŀ\":125748,\"jÄħc\":125749,\"ÙĩÙĦ\":125750,\"Ġ×¢×ĳ×ķ×ĵ\":125751,\"à¹Ħà¸¡à¹ī\":125752,\"à¸ģà¸¥à¸±à¸ļ\":125753,\"×ķ×Ľ×ľ\":125754,\"×§×ĵ\":125755,\"Ø§ÙĦÙĬØ©\":125756,\"Ø±Ùĩ\":125757,\"ãģĳãĤĮãģ°\":125758,\"ĠÙĨÙģØ³\":125759,\"ãĤ¢ãĥ«\":125760,\"ìĹĪëĭ¤\":125761,\"×§×ķ×¨\":125762,\"Ð½ÐµÑĢ\":125763,\"Ø¨Ø§Ø¨\":125764,\"ãĤ¶\":125765,\"Ø³Ø¨Ø¨\":125766,\"ÙĦÙĬÙĦ\":125767,\"ØµÙĨ\":125768,\"ØµØ¯Ø±\":125769,\"áº¿m\":125770,\"à¸Ĭà¹Īà¸§à¸ĩ\":125771,\"ØŃÙĨ\":125772,\"Ġ×ĳ×Ĵ\":125773,\"×ŀ×ķ×¢\":125774,\"×ľ×Ĺ\":125775,\"å¤§ãģį\":125776,\"ØªØ¨\":125777,\"Ð½ÐµÑĤ\":125778,\"×Ļ×ĳ×Ķ\":125779,\"Ð±Ð»\":125780,\"ãĥĹãĥª\":125781,\"Ø§ØµØ©\":125782,\"ãģ¤ãģĳ\":125783,\"×Ļ×ŀ×ķ×©\":125784,\"ãģĮãģĤ\":125785,\"ëĭ´\":125786,\"ãģĭãĤĤãģĹ\":125787,\"ãģĭãĤĤãģĹãĤĮ\":125788,\"ãģ¡ãĤī\":125789,\"×ĳ×ĺ\":125790,\"ĠbaÄŁ\":125791,\"×Ļ×Ĺ×¡\":125792,\"×ĳ×ķ×¢\":125793,\"à¸¥à¸µ\":125794,\"×¤×¢×Ļ×ľ\":125795,\"Ð¸Ð¼Ð¸\":125796,\"gÅĤ\":125797,\"ĠÐ¸Ð¼Ðµ\":125798,\"Ø®Ø¯Ø§Ùħ\":125799,\"×Ĳ×Ļ×¨\":125800,\"Ġyapt\":125801,\"ãģ¨ãģĦ\":125802,\"à¸ĩà¹Īà¸²à¸¢\":125803,\"×ľ×Ļ×ķ\":125804,\"ØŃØ¯Ø«\":125805,\"Ø±Ø§ÙĤ\":125806,\"ĠÄĲi\":125807,\"Ø§Ø¯Ø±\":125808,\"ãģĵãģ¨ãĤĤ\":125809,\"×ĳ×Ļ×¨\":125810,\"ĠÐ²Ð·\":125811,\"Ø¶Ø§Ùģ\":125812,\"×ª×ķ×Ľ\":125813,\"ÑĢÐ¾Ð¼\":125814,\"Ø±Ø§Øª\":125815,\"à¹Ģà¸Ĺà¹Īà¸²\":125816,\"ãģĺãĤĥ\":125817,\"ãģĿãģĵ\":125818,\"Ø§Ø¬ØªÙħØ§Ø¹\":125819,\"à¹īà¸Ńà¸Ļ\":125820,\"ÙĤÙħ\":125821,\"ë³¸\":125822,\"Äŀ\":125823,\"×©×Ļ×ķ\":125824,\"×ĳ×ł×Ļ\":125825,\"ìľĦìĽĲ\":125826,\"à¹ģà¸Ī\":125827,\"×Ĺ×ķ×¨\":125828,\"Ø¯ÙĬÙĨØ©\":125829,\"ØªØ·\":125830,\"áº±m\":125831,\"Ã²a\":125832,\"à¸¢à¸Ńà¸Ķ\":125833,\"Ġëĭ¹\":125834,\"à¸ªà¸¸à¸Ĥ\":125835,\"×ĵ×¨×ļ\":125836,\"Ø¯ÙĨ\":125837,\"Ø³ÙĬÙĨ\":125838,\"ÙĪÙĤÙģ\":125839,\"ÑĨÑĭ\":125840,\"Ð³Ð¾ÑĤÐ¾Ð²\":125841,\"ÐµÐ¶Ð´Ñĥ\":125842,\"à¸ŀà¸§à¸ģ\":125843,\"Ø§ÙĤØªØµ\":125844,\"Ø§ÙĤØªØµØ§Ø¯\":125845,\"czÄĻ\":125846,\"niÄĻ\":125847,\"ÑĢÐµÐ±\":125848,\"ØŃÙĪ\":125849,\"à¸Ĺà¹Į\":125850,\"ãĤĪãģŃ\":125851,\"Ð´Ð¶\":125852,\"à¸ģà¸¥à¹Īà¸²à¸§\":125853,\"Ø¯ÙĬØ«\":125854,\"ãĤ³ãĥŁ\":125855,\"ÙĤÙĪÙħ\":125856,\"ĠØªØŃ\":125857,\"à¹Ģà¸ķà¸´\":125858,\"Ø§ÙģØ¸\":125859,\"à¸Īà¸¸\":125860,\"Ø±ÙĬØ§Ø¶\":125861,\"×ŀ×©×ļ\":125862,\"à¹Ĥà¸¢\":125863,\"ÐµÑĢÐµ\":125864,\"ãģ¿ãģŁãģĦ\":125865,\"ìĿ´ëĿ¼\":125866,\"ĠØ§ÙĦÙħÙĪ\":125867,\"ĠÑģÑĤÐ¾\":125868,\"à¹Ģà¸£à¹ĩà¸§\":125869,\"ĠÐ´ÐµÑĤ\":125870,\"ĠÑģÐ´ÐµÐ»\":125871,\"à¹Ģà¸Ĭà¸·à¹Īà¸Ń\":125872,\"×¤×ł×Ļ\":125873,\"ÙĪØ¶ÙĪØ¹\":125874,\"×ĳ×¡\":125875,\"à¹ģà¸Ķ\":125876,\"Ã³c\":125877,\"à¸£à¸´à¸¡\":125878,\"ÑĢÐ°Ð´\":125879,\"ìĪł\":125880,\"ãĥ¼ãĤº\":125881,\"ãģ«ãģĬ\":125882,\"Ð¸Ð½Ð¾\":125883,\"×¤×Ļ×ľ\":125884,\"à¸Ĭà¸±à¹Īà¸Ļ\":125885,\"×Ĺ×ĵ×©\":125886,\"à¹Ģà¸Ļà¸·à¹Īà¸Ńà¸ĩ\":125887,\"×ł×Ļ×¡\":125888,\"ØºØ±Ø¨\":125889,\"ãĤ¸ãĥ£\":125890,\"à¸ªà¸±à¸ĩ\":125891,\"à¹Ģà¸Ĺà¸µà¹Ī\":125892,\"à¹Ģà¸Ĺà¸µà¹Īà¸¢à¸§\":125893,\"ëŁ¼\":125894,\"à¹ģà¸Ł\":125895,\"ãĥ¼ãĤ·\":125896,\"ãĥ¼ãĤ·ãĥ§ãĥ³\":125897,\"ĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶\":125898,\"Ø¬ÙħÙĪØ¹\":125899,\"×ĳ×¨×Ļ×Ŀ\":125900,\"ãĥĪãĥ©\":125901,\"ĠÐºÐ°ÑĩÐµÑģÑĤÐ²\":125902,\"Ø·ÙĬ\":125903,\"ÑĤÑı\":125904,\"×¦×ķ×¢\":125905,\"ÄŁÄ±nÄ±\":125906,\"Ø¹ÙĦÙī\":125907,\"Ø§Ø°\":125908,\"ÙĪØ§ÙĤØ¹\":125909,\"ÙħÙĪØ§\":125910,\"Ø§Ø¦ÙĬÙĦ\":125911,\"ÐºÐ¾Ð»\":125912,\"á»ģm\":125913,\"à¸ľà¸¥à¸´à¸ķ\":125914,\"×Ļ×ł×ĺ×¨\":125915,\"Ø³Ùĥ\":125916,\"×©×Ļ×¨\":125917,\"à¸¨à¸¶à¸ģà¸©à¸²\":125918,\"à¸ļà¸±\":125919,\"ÑĩÐ°Ñģ\":125920,\"×ķ×¤×Ķ\":125921,\"×Ļ×¤×ķ×ľ\":125922,\"ĠØ§ÙĦØ³Ø§Ø¨\":125923,\"Ø±ÙĬØ¨\":125924,\"ĠØ§ÙĦØ¨ÙĬ\":125925,\"ãĤ¹ãĥĨ\":125926,\"ÑĩÐµÐ½\":125927,\"à¹ģà¸ľ\":125928,\"Ġ×ł×©\":125929,\"Ø²ÙĬØ¯\":125930,\"ØŃØ§Ø¯\":125931,\"ëįĶ\":125932,\"Ø±ÙĪØ¹\":125933,\"à¸Ĺà¸¸à¸Ļ\":125934,\"à¸ªà¸¡à¸²\":125935,\"czeÅĦ\":125936,\"×Ļ×ĵ×Ķ\":125937,\"ãģ§ãģĤ\":125938,\"ĠÃ§ocuk\":125939,\"Ø®Ø¨\":125940,\"à¸ļà¸²à¸¢\":125941,\"à¸Ľà¸£à¸°à¸Ĭà¸²\":125942,\"×ŀ×©×ľ\":125943,\"ãģªãģĭ\":125944,\"à¸ģà¸²à¸¢\":125945,\"ãĥģãĥ£\":125946,\"Ð°ÑĢÐ¸\":125947,\"ĠÑĩÐ°\":125948,\"à¸Ķà¸³\":125949,\"à¸Ĺà¸±à¹Īà¸§\":125950,\"ÑĥÑħ\":125951,\"ĠÃ¶z\":125952,\"Ġì¢ĭ\":125953,\"Ø¬Ø±ÙĬ\":125954,\"Ø§Ø¦ÙĤ\":125955,\"à¸łà¸±à¸¢\":125956,\"Ø·Ø§Ø±\":125957,\"Ø¯Ø§Ø±Ø©\":125958,\"Ä©nh\":125959,\"Ø«ÙĨ\":125960,\"zellik\":125961,\"Ø§ÙĦØª\":125962,\"Ġgeli\":125963,\"ãĥķãĤ©\":125964,\"Ð¾Ð»Ð¾Ð´\":125965,\"Ø±Ø¨Ø¹\":125966,\"×©×ª×ŀ×©\":125967,\"à¸ļà¸£à¸£\":125968,\"íĿ¬\":125969,\"ĠÃ¼rÃ¼n\":125970,\"Ġê·¸ëłĩ\":125971,\"à¸¨à¸²à¸ªà¸ķà¸£à¹Į\":125972,\"ãģľ\":125973,\"×Ļ×ĳ×ľ\":125974,\"ĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð²\":125975,\"Ø³Ø·ÙĬÙĨ\":125976,\"ãĤĴä½¿\":125977,\"ĠÐ¿Ð¾Ð¼Ð¾Ñī\":125978,\"×ķ×§×¨\":125979,\"ãĥ¯ãĥ¼\":125980,\"ĠyÃ¶net\":125981,\"×Ļ×§×¨\":125982,\"à¸Ĥà¸²\":125983,\"ÐµÑĢÐ¸Ð°Ð»\":125984,\"ØŃÙģ\":125985,\"Ġ×Ļ×¦\":125986,\"à¸Ĺà¸´\":125987,\"å£²\":125988,\"à¸Ļà¸Ńà¸ģ\":125989,\"×ķ×Ľ×¨\":125990,\"íĻľ\":125991,\"á»§y\":125992,\"ĠØ§ÙĦÙĤØ±\":125993,\"×Ļ×ĳ×ķ×ª\":125994,\"ÅĽni\":125995,\"ÙħØ´Ø§Ø±\":125996,\"Æ°á»£t\":125997,\"ĠÙĦØ¯ÙĬ\":125998,\"ÑĤÐµÐ»\":125999,\"ĠØ¥ÙĦÙĬ\":126000,\"Ø¹ÙĦÙĪÙħ\":126001,\"ìķĺ\":126002,\"Ð²Ð¸ÑĤ\":126003,\"à¸Ħà¸°\":126004,\"yrÄ±\":126005,\"ãģ¨ãģ£ãģ¦\":126006,\"à¹Ģà¸ī\":126007,\"à¸ĸà¸²à¸¡\":126008,\"ÙĤØ§Ø±\":126009,\"Ø¹ÙĦØ§Ùħ\":126010,\"áº·ng\":126011,\"ÙħÙĴ\":126012,\"×Ļ×ŀ×ª\":126013,\"Ø³Ø¨Ø©\":126014,\"ãĤ¯ãĥ©\":126015,\"×ķ×¡×£\":126016,\"ĠÐ¿ÑĢÐ¸Ð½\":126017,\"ãģĦãĤį\":126018,\"Ø³Ø§Ø³\":126019,\"Ø¹ØªØ¨Ø±\":126020,\"à¸§à¸´à¸Ĺà¸¢\":126021,\"à¸§à¸´à¸Ĺà¸¢à¸²\":126022,\"Ø³ÙĥØ±\":126023,\"ãĤ·ãĥ§\":126024,\"ãģģ\":126025,\"à¸±à¸ģà¸©\":126026,\"×ĳ×ķ×Ķ\":126027,\"à¸«à¸¢\":126028,\"ãģ¾ãĤĮ\":126029,\"ĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð·\":126030,\"ÐºÐ°Ð·Ð°Ð»\":126031,\"ĠÑģÐ²ÑıÐ·\":126032,\"uyáº¿t\":126033,\"ĠÐ¿ÑĢÐ¾Ð¸Ð·\":126034,\"Ġ×§×ĺ\":126035,\"à¹ģà¸ģà¹ī\":126036,\"Ð¿ÑĥÑģ\":126037,\"Ġê·¸ê²ĥ\":126038,\"ëĬĲ\":126039,\"Ð»ÐµÐºÑģ\":126040,\"ãĥ¼ãĥĹ\":126041,\"à¸ķà¸³\":126042,\"×ª×Ĺ×Ļ×ľ\":126043,\"à¸Ńà¸ĩà¸Ħà¹Į\":126044,\"áºµ\":126045,\"×ł×¦\":126046,\"Ø£Ø´\":126047,\"Ø´Ùĩ\":126048,\"à¸¢à¸°\":126049,\"à¸ģà¸İ\":126050,\"ĠØ§ÙĦØ¥Ø³ÙĦØ§Ùħ\":126051,\"ÐµÐ´ÑĮ\":126052,\"ãģ²ãģ¨\":126053,\"ëıĦë¡Ŀ\":126054,\"ãģ©ãģ®\":126055,\"ÑĥÐ²\":126056,\"ÐµÑĩÐµÐ½Ð¸Ðµ\":126057,\"ĠØ§ÙĦØªØ¬\":126058,\"ãģ«è¡Į\":126059,\"ĠÐ¿Ð¾Ð·Ð²\":126060,\"ãĤıãĤĬ\":126061,\"ÙĦØ§Ø«\":126062,\"íķĺìĺĢ\":126063,\"ĠÐ¼Ð°ÑĢ\":126064,\"ĠkonuÅŁ\":126065,\"ãĥ¬ãĤ¹\":126066,\"ãĤĴæĮģ\":126067,\"ĠÐ¾ÑģÐ½Ð¾Ð²\":126068,\"×Ĺ×ĳ\":126069,\"ÙĪØ¬ÙĪØ¯\":126070,\"×¤×ķ×Ł\":126071,\"Ð²Ð¾ÑĢ\":126072,\"ĠÐ½Ð¸Ðº\":126073,\"ãģĭãĤĭ\":126074,\"ÅŁtÄ±rma\":126075,\"×Ļ×¡×ĺ\":126076,\"Ø£ÙĦ\":126077,\"à¸«à¹Į\":126078,\"Ð¸Ð¾Ð½Ð°\":126079,\"Ð»ÑĮÐ½\":126080,\"ĠÐ³Ð¾Ñģ\":126081,\"ĠÐľÐ¾ÑģÐº\":126082,\"ÑĢÐ¾Ð±\":126083,\"×ķ×Ĳ×Ļ\":126084,\"ãģĬãĤĬãģ¾ãģĻ\":126085,\"ãģ£ãģ±\":126086,\"ÐºÐ»\":126087,\"à¸Ļà¸Ķà¹Į\":126088,\"Ø±ÙĬÙģ\":126089,\"Ø§Ø³Ø¨\":126090,\"ĠÑĢÐµÑĪ\":126091,\"ĠÐ´Ð¾Ð»\":126092,\"ãģ¹ãģį\":126093,\"×Ļ×ĳ×ķ×¨\":126094,\"Ð¼ÐµÑī\":126095,\"ĠÐ½Ð°ÑĪ\":126096,\"à¹ģà¸Ľà¸¥\":126097,\"ÑĢÐ¸ÑĤ\":126098,\"ÐºÑĥÑģ\":126099,\"Ð¸ÑĢÐ°\":126100,\"Ð°ÑĤÑĥÑĢ\":126101,\"ÙĪØ§ØµÙĦ\":126102,\"à¹Ģà¸ľà¸¢\":126103,\"à¸Ńà¸³\":126104,\"à¹Ģà¸ģà¸´à¸Ļ\":126105,\"ØºÙħ\":126106,\"ãģĻãģİ\":126107,\"lÄ±kl\":126108,\"ÅĦsk\":126109,\"ê²¬\":126110,\"×Ļ×Ľ×Ķ\":126111,\"×Ĺ×©×ĳ\":126112,\"ÙĪØ±ÙĬØ©\":126113,\"ĠÐ´ÐµÐ¹ÑģÑĤÐ²\":126114,\"×Ĺ×ľ×ĺ\":126115,\"Ġ×ľ×ŀ×¢\":126116,\"×¦×ľ×Ļ×Ĺ\":126117,\"ÐµÑĩÐ°\":126118,\"ÙģØ§Ø¹\":126119,\"×Ĵ×Ļ×ĵ\":126120,\"áºŃm\":126121,\"ÄĻb\":126122,\"Ø´Ø¹\":126123,\"ãģıãĤĬ\":126124,\"à¸ŀà¸¸\":126125,\"ÐµÐ´ÐµÑĢ\":126126,\"à¸Ĥà¸Ļ\":126127,\"à¸Ħà¸²à¸£\":126128,\"ĠÐ±Ð¾Ð»ÑĮÑĪ\":126129,\"ãģıãģªãĤĬ\":126130,\"à¸ĵà¸²\":126131,\"×ĵ×ķ×Ĵ\":126132,\"ĠÐ¼Ð½\":126133,\"ä¸ĬãģĮ\":126134,\"ç¶ļãģį\":126135,\"à¸¤à¸©\":126136,\"à¸Ĩ\":126137,\"Ø®ÙĬ\":126138,\"à¹Ģà¸Ĺà¸ŀ\":126139,\"à¸ªà¸±à¸¡\":126140,\"à¹Ģà¸ªà¸Ļ\":126141,\"à¹Ģà¸ªà¸Ļà¸Ń\":126142,\"ãĥ´\":126143,\"ĠÐ¸ÑģÑĤ\":126144,\"Ø¨Ø§Ø´Ø±\":126145,\"ĠÑĥÑĢÐ¾Ð²\":126146,\"×ŀ×ķ×ĸ\":126147,\"abÄ±\":126148,\"waÅ¼\":126149,\"×ķ×¦×Ĳ×Ķ\":126150,\"ÑĤÐ²ÐµÑĢ\":126151,\"à¸ŀà¸±à¸Ļà¸ĺà¹Į\":126152,\"×ł×Ĵ×ĵ\":126153,\"ãĤĭãģĵãģ¨ãģĮãģ§ãģį\":126154,\"ĠÑĤÑĢÐµÐ±\":126155,\"à¸ģà¸£à¸¸à¸ĩ\":126156,\"ØŃØªØ§Ø¬\":126157,\"à¹Ģà¸Ħà¸¥\":126158,\"ãĨ\":126159,\"ÄĻtr\":126160,\"Ġszczeg\":126161,\"Ġ×¨×©\":126162,\"à¸Ĺà¸ĺ\":126163,\"ĠÐ½ÐµÐº\":126164,\"ĠÐ½ÐµÐºÐ¾ÑĤÐ¾ÑĢ\":126165,\"Ð²ÑĪ\":126166,\"Ð¬\":126167,\"à¹Īà¸§à¸¢\":126168,\"à¸¥à¸¸\":126169,\"Ð±ÑĢÑı\":126170,\"à¸«à¸¡à¸¹à¹Ī\":126171,\"à¹ģà¸ķà¸ģ\":126172,\"×¨×Ľ×Ļ×Ŀ\":126173,\"Ġíĸī\":126174,\"Ã£i\":126175,\"ÙĥØ±Ø©\":126176,\"âŃ\":126177,\"íĲ\":126178,\"ãį\":126179,\"áģ\":126180,\"â®\":126181,\"â¥\":126182,\"ì®\":126183,\"à¿\":126184,\"â¿\":126185,\"áĤ\":126186,\"á¤\":126187,\"âł\":126188,\"íŁ\":126189,\"ðĲį\":126190,\"ðĲ°\":126191,\"ðĿĨ\":126192,\"ðŁĪ\":126193,\"Ġ×¢×ľ\":126194,\"ĠØ¹ÙĨ\":126195,\"ĠÙħØ¹\":126196,\"Ġ×ĸ×Ķ\":126197,\"ĠÙħØ§\":126198,\"ĠmÃł\":126199,\"Ġdá»¥\":126200,\"á»ĩc\":126201,\"Ð°Ñħ\":126202,\"sÄ±\":126203,\"íķĺê³ł\":126204,\"Ġ×ķ×ĳ\":126205,\"ĠÐŁÐ¾\":126206,\"×ķ×ª×¨\":126207,\"ĠÙĦÙħ\":126208,\"Ġ×ķ×ľ\":126209,\"ãģĹãģ¦ãģĦãĤĭ\":126210,\"Ġ×ŀ×Ļ\":126211,\"ĠØ¨ÙĬÙĨ\":126212,\"Ð·Ð°\":126213,\"ĠÙĥØ§ÙĨ\":126214,\"Ġ×Ķ×Ļ×Ķ\":126215,\"ëħĦ\":126216,\"×Ĳ×ķ\":126217,\"Ð´Ð¸\":126218,\"ĠÐ¿ÐµÑĢÐµ\":126219,\"dÄ±\":126220,\"Ġ×ľ×©\":126221,\"Ġ×©×ŀ\":126222,\"ãģĮãģĤãĤĭ\":126223,\"ãģĦãģĦ\":126224,\"ÑĢÐµ\":126225,\"×§×ķ\":126226,\"Ð¸Ð»Ð¸\":126227,\"Ð¼Ðµ\":126228,\"ÙĬØª\":126229,\"ãģ§ãģĤãĤĭ\":126230,\"ĠÐ²Ð¾\":126231,\"à¹ĥà¸«à¸¡\":126232,\"à¹ĥà¸«à¸¡à¹Ī\":126233,\"Ġ×©×ĳ\":126234,\"Ġà¹Ĥà¸Ķà¸¢\":126235,\"ÙĬÙĩ\":126236,\"ãģ§ãģĻãģĮ\":126237,\"ãģ¨ãģ¯\":126238,\"×¨×ķ\":126239,\"Ġà¸ĭà¸¶à¹Īà¸ĩ\":126240,\"ãģ§ãģįãĤĭ\":126241,\"Ð¼Ð¾\":126242,\"à¹Ģà¸ŀà¸·à¹Īà¸Ń\":126243,\"×¦×ķ\":126244,\"×ĺ×ķ\":126245,\"ìķĪ\":126246,\"Ġhá»į\":126247,\"à¹Ģà¸ĩà¸´à¸Ļ\":126248,\"ĠØ§ÙĦØ¨\":126249,\"Ġà¸¡à¸µ\":126250,\"ë¬¼\":126251,\"ÑģÐµ\":126252,\"ëĵ¤ìĿ´\":126253,\"Ġë§Ĳ\":126254,\"Ġlá»Ľ\":126255,\"aÅĤ\":126256,\"×Ĺ×ĳ×¨\":126257,\"Ġdá»±\":126258,\"ÙĬØ«\":126259,\"Ġthá»ĭ\":126260,\"à¸ģà¹Īà¸Ńà¸Ļ\":126261,\"Ġ×ĳ×Ľ×ľ\":126262,\"ãģ¸\":126263,\"ãģ¨æĢĿãģĦãģ¾ãģĻ\":126264,\"áº£nh\":126265,\"à¸¢à¸²\":126266,\"ÙģØ§\":126267,\"à¸ªà¸µ\":126268,\"à¸ķà¸²\":126269,\"ë²ķ\":126270,\"ãĥªãĥ¼\":126271,\"à¸£à¸²à¸Ħà¸²\":126272,\"Ġ×ķ×ľ×Ĳ\":126273,\"ãģ¨ãģĵãĤį\":126274,\"à¹Ģà¸¥à¸·à¸Ń\":126275,\"diÄŁi\":126276,\"ÙĪØ§ÙĨ\":126277,\"Ġ×ľ×Ķ×ª\":126278,\"à¸£à¸§à¸¡\":126279,\"×¤×Ļ×Ŀ\":126280,\"à¸ľà¸¡\":126281,\"Ð¶Ð¸\":126282,\"cÄ±\":126283,\"ÑĢÐ¾Ð´\":126284,\"ĠkarÅŁÄ±\":126285,\"×Ĵ×ķ\":126286,\"ãģ«ãģ¤\":126287,\"ãģ«ãģ¤ãģĦãģ¦\":126288,\"rÃł\":126289,\"×Ļ×ķ×ª×¨\":126290,\"ĠìĨĮ\":126291,\"×§×Ķ\":126292,\"ÑģÑĤÐ²Ð¾\":126293,\"ãģĳãģ©\":126294,\"gÃ©\":126295,\"à¸Ķà¹īà¸²à¸Ļ\":126296,\"çļĦãģ«\":126297,\"ĠÙĬÙħÙĥÙĨ\":126298,\"ìĨį\":126299,\"ÙĬÙĥ\":126300,\"à¹Ħà¸§à¹ī\":126301,\"ÑģÐºÐ¸Ð¹\":126302,\"Ã¬m\":126303,\"Ġ×ľ×Ĳ×Ĺ×¨\":126304,\"à¸Ńà¸²à¸«à¸²à¸£\":126305,\"Ġà¹Ģà¸ŀ\":126306,\"à¸£à¸²à¸°\":126307,\"à¸¥à¸¹à¸ģ\":126308,\"ÑģÑĤÐ°\":126309,\"Ġìľł\":126310,\"ÙĤÙĪÙĦ\":126311,\"Ð±Ð¾ÑĢ\":126312,\"ÑģÐºÐ¾Ð³Ð¾\":126313,\"à¸«à¸¥à¸±à¸ĩ\":126314,\"à¸Ĥà¹Īà¸²à¸§\":126315,\"à¹Ģà¸¡à¸·à¸Ńà¸ĩ\":126316,\"ê°ģ\":126317,\"tÃł\":126318,\"ÙĬÙĬÙĨ\":126319,\"Ø¹Ø±Ø¶\":126320,\"ë°©\":126321,\"ĠëıĻ\":126322,\"Ġà¹Ģà¸Ľ\":126323,\"Ġà¹Ģà¸Ľà¹ĩà¸Ļ\":126324,\"Ã§i\":126325,\"liÄŁi\":126326,\"ìĹĲê²Į\":126327,\"ãĤ¿ãĥ¼\":126328,\"Ġ×ľ×ª\":126329,\"×¤×ķ×ª\":126330,\"à¸Ĥà¸Ń\":126331,\"Ø±Ø³\":126332,\"ìłĲ\":126333,\"à¸ľà¹Īà¸²à¸Ļ\":126334,\"ÑĦÐ¸\":126335,\"Ø¬ÙĨ\":126336,\"ì¢ħ\":126337,\"Ġ×Ķ×¤\":126338,\"Ġngo\":126339,\"á»ĭa\":126340,\"Ġtá»ķ\":126341,\"Ġê·¸ë¦¬\":126342,\"à¹Ģà¸¡à¸·à¹Īà¸Ń\":126343,\"Ø°ÙĥØ±\":126344,\"ìĸĳ\":126345,\"ìĹŃ\":126346,\"×ĺ×ľ\":126347,\"kÄ±\":126348,\"ĠØ¹ÙħÙĦ\":126349,\"ĠØ¹ÙĨØ¯\":126350,\"à¸ĭà¸·à¹īà¸Ń\":126351,\"Ġê±°\":126352,\"Ð²Ðµ\":126353,\"rÃ¼\":126354,\"à¹Ģà¸Ńà¸²\":126355,\"à¸ªà¹Į\":126356,\"à¸Īà¸Ļ\":126357,\"×¡×ª\":126358,\"Ġgiáº£\":126359,\"ãĤĭãģ¨\":126360,\"à¸ģà¸³à¸¥à¸±à¸ĩ\":126361,\"Ð½ÐµÐ¹\":126362,\"à¸Īà¸£à¸´\":126363,\"à¸Īà¸£à¸´à¸ĩ\":126364,\"Ġëį\":126365,\"ĠëįĶ\":126366,\"à¸Ħà¹Īà¸°\":126367,\"Ã¬n\":126368,\"ĠsÃ¼re\":126369,\"Ġquy\":126370,\"à¸ļà¸²à¸ĩ\":126371,\"åıĸãĤĬ\":126372,\"×¨×Ĺ\":126373,\"×ĳ×ª\":126374,\"ãģĮãģĤãĤĬãģ¾ãģĻ\":126375,\"×¨×©\":126376,\"ìĹĲëĬĶ\":126377,\"Ġ×Ĳ×¤×©×¨\":126378,\"ayÄ±\":126379,\"ãģĮãĤī\":126380,\"ØŃØ¨\":126381,\"Ð°Ð½Ñģ\":126382,\"Ø³ÙĪ\":126383,\"ĠÐ¿ÑĢÐµ\":126384,\"Ø¯ÙĪ\":126385,\"ãģ«ãĤĪ\":126386,\"à¹Ģà¸ģà¸¡\":126387,\"à¸ªà¸¹à¸ĩ\":126388,\"makt\":126389,\"maktad\":126390,\"maktadÄ±r\":126391,\"ĠÃ¶nem\":126392,\"×Ļ×ŀ×Ļ×Ŀ\":126393,\"Ð±Ð¾\":126394,\"ÙĪÙĬØ©\":126395,\"à¸£à¸¹à¸Ľ\":126396,\"à¹Ĥà¸¥à¸ģ\":126397,\"ÙħÙĬØ¹\":126398,\"ÑģÑĤÑĥÐ¿\":126399,\"à¹Ĥà¸Ń\":126400,\"Ø¯ÙĬÙĨ\":126401,\"ì¤ĳ\":126402,\"ãģĹãģı\":126403,\"à¹Ģà¸ªà¸µà¸¢\":126404,\"Ð²Ñĭ\":126405,\"ÙħØª\":126406,\"íĺĦ\":126407,\"ãĥĲãĥ¼\":126408,\"Ø§Ø´\":126409,\"×§×¡\":126410,\"Ġtá»¥\":126411,\"à¸¥à¸Ķ\":126412,\"ÙģØ©\":126413,\"íĳľ\":126414,\"Ø±Ø¬\":126415,\"kÅĤad\":126416,\"ĠÅŁey\":126417,\"ĠØ£Ùħ\":126418,\"Ġà¹Ģà¸¡\":126419,\"ĠØ¨ÙĦ\":126420,\"ÑģÐºÐ°Ñı\":126421,\"ãģ¨ãģ®\":126422,\"Ġìĭ¤\":126423,\"áº¥m\":126424,\"à¸«à¹īà¸Ńà¸ĩ\":126425,\"à¸Ĭà¸¡\":126426,\"dÃ¼\":126427,\"ĠÃ§ek\":126428,\"Ġê³ł\":126429,\"×Ĵ×ĳ\":126430,\"à¸Ĭà¸µà¸§à¸´\":126431,\"à¸Ĭà¸µà¸§à¸´à¸ķ\":126432,\"ÙģØ¶ÙĦ\":126433,\"à¸¯\":126434,\"Ã§Ä±\":126435,\"ĠØ¨Ø´\":126436,\"ĠÙĩÙĨØ§\":126437,\"ãģįãģ¾ãģĹãģŁ\":126438,\"tÃ¼\":126439,\"Ġìĺģ\":126440,\"ĠTÃ¼rk\":126441,\"ÐºÑĤ\":126442,\"×¤×¨×¡\":126443,\"ãģ¨ãģĦãģĨãģĵãģ¨\":126444,\"íĶĦ\":126445,\"à¹ģà¸£à¸ģ\":126446,\"×¨×ķ×Ł\":126447,\"Ġaras\":126448,\"×ŀ×¦×Ĳ\":126449,\"Ġtá»ī\":126450,\"Ø³Ø§\":126451,\"à¸ŀà¸Ń\":126452,\"ĠØ§ÙĦÙħØŃ\":126453,\"ãĥ¤\":126454,\"ĠØ§ÙĦØ§Ø³Øª\":126455,\"ÙģÙĨ\":126456,\"×Ļ×ŀ×Ķ\":126457,\"Ø±Øª\":126458,\"ãģ¨ãĤĤ\":126459,\"ĠÐ½Ð°Ñģ\":126460,\"Ð¿ÑĢÐ¸\":126461,\"Ġ×Ĺ×ķ\":126462,\"Ð¸Ð»Ð°\":126463,\"ÙĬØ´\":126464,\"ĠgÃ¶z\":126465,\"Ġ×ĳ×ł×Ļ\":126466,\"Ä±mÄ±\":126467,\"ĠÑĤÐµÑħ\":126468,\"Ġhá»Ļ\":126469,\"ØºØ±\":126470,\"ÐºÐ¾Ð½\":126471,\"Ø§ØŃØª\":126472,\"Ġà¸ŀ\":126473,\"à¸Ńà¸Ńà¸Ļ\":126474,\"à¸Ńà¸Ńà¸Ļà¹Ħà¸¥\":126475,\"à¸Ńà¸Ńà¸Ļà¹Ħà¸¥à¸Ļà¹Į\":126476,\"ÑħÐ¾\":126477,\"ÑıÐ²\":126478,\"à¹ģà¸ªà¸Ķ\":126479,\"à¹ģà¸ªà¸Ķà¸ĩ\":126480,\"à¹Ģà¸ŀà¸µà¸¢à¸ĩ\":126481,\"ÑĤÐ¾Ð²\":126482,\"Ø§ÙĬ\":126483,\"Ġ×Ķ×ĵ\":126484,\"Ġ×ķ×Ľ\":126485,\"ãĤīãģĦ\":126486,\"×ķ×¤×Ł\":126487,\"Ġë¶Ī\":126488,\"à¸¥à¸Ńà¸ĩ\":126489,\"Ø·Ø§ÙĦ\":126490,\"ĠÐ½Ð¸\":126491,\"ĠÙħØ³Øª\":126492,\"áº¿c\":126493,\"Ġ×©×Ľ\":126494,\"ĠëķĮë¬¸\":126495,\"à¸§à¸±à¸Ļà¸Ĺà¸µà¹Ī\":126496,\"×Ļ×ľ×ĵ\":126497,\"ØŃØ§\":126498,\"ÐµÑĨ\":126499,\"Ġcá»©\":126500,\"×ĵ×ķ×¨\":126501,\"ĠÙħØŃ\":126502,\"×¨×Ľ×ĳ\":126503,\"Ø¨ÙĬØ¹\":126504,\"Ð½Ð¸Ð¸\":126505,\"ĠØ§ÙĦØ£ÙĪÙĦ\":126506,\"à¸Ħà¸§à¸£\":126507,\"ãģ¨æĢĿãģĨ\":126508,\"ĠÐ¡Ð¾\":126509,\"Ø§Ø¦ÙĬØ©\":126510,\"Ø±Ø§Ø¡\":126511,\"Ð¾ÑģÐ¾Ð±\":126512,\"ĠØ¨Ø£ÙĨ\":126513,\"×¢×ķ×ĵ\":126514,\"ĠÑĤÐµ\":126515,\"ãģĵãģĨ\":126516,\"ÑģÑĤÑĢÐ°\":126517,\"Ð°Ð¹Ð½\":126518,\"ĠsÃ¶z\":126519,\"ØªÙĨØ§\":126520,\"à¸Ńà¸´\":126521,\"áº·p\":126522,\"ĠìķĦëĭĪ\":126523,\"íķŃ\":126524,\"Ġ×¨×Ĳ×©\":126525,\"Ġà¹Ħà¸Ķà¹ī\":126526,\"Ġ×Ĵ×ĵ\":126527,\"Ġ×¡×¤×¨\":126528,\"Ð¾Ð±ÑīÐµ\":126529,\"ĠÙĪØ¥\":126530,\"adaÅŁ\":126531,\"ãģ¡ãĤĩ\":126532,\"×§×ķ×ľ\":126533,\"ÑĢÐµÐ·\":126534,\"ĠdÃ¼ÅŁÃ¼n\":126535,\"Ġ×ĳ×Ĳ×ŀ\":126536,\"Ġìĸ´ëĸ\":126537,\"×¢×¨×ĳ\":126538,\"Ð½ÐµÐµ\":126539,\"ĠÑģÑĤÑĢÐ°Ð½\":126540,\"Ø³Ø§ÙĨ\":126541,\"ynÄ±\":126542,\"ĠØ§ÙĦØ±Ø¦ÙĬØ³\":126543,\"ãģĹãģª\":126544,\"Ġ×ł×ª\":126545,\"ãģ«ãģªãģ£ãģŁ\":126546,\"gÃ¼\":126547,\"åıĹãģĳ\":126548,\"×ľ×ª\":126549,\"ìłĪ\":126550,\"ëĬĶëį°\":126551,\"Ø®ÙĬØ±\":126552,\"à¸ķà¹īà¸Ńà¸ĩà¸ģà¸²à¸£\":126553,\"ĠÙĦØ£ÙĨ\":126554,\"Ġchá»ĭ\":126555,\"ÙĪØ©\":126556,\"à¹ĥà¸ª\":126557,\"ë¶ĢíĦ°\":126558,\"íķĺë©´\":126559,\"á»¯u\":126560,\"à¹Ģà¸«à¸¡à¸·à¸Ńà¸Ļ\":126561,\"Ð±ÐµÑĢ\":126562,\"ĠìĿ´ìļ©\":126563,\"ĠÑģÐµÐ±\":126564,\"wiÄĻks\":126565,\"Ġ×ł×¢\":126566,\"ÑĤÑĥÑĢ\":126567,\"ĠnghÄ©\":126568,\"×©×ķ×ĺ\":126569,\"tiÄŁi\":126570,\"ĠdeÄŁi\":126571,\"×Ĳ×ĳ\":126572,\"Ġ×ŀ×ŀ\":126573,\"ãĥĹãĥŃ\":126574,\"waÅĤ\":126575,\"à¸Īà¸¶à¸ĩ\":126576,\"Ø®Ø¯Ùħ\":126577,\"×Ĳ×Ŀ\":126578,\"Ä±ÅŁÄ±\":126579,\"czÄħ\":126580,\"×¨×ĵ\":126581,\"ĠÑĢÑĥÐ±\":126582,\"Ø®Ø±Ùī\":126583,\"ãģ®æĸ¹\":126584,\"ĠÐ´ÐµÐ½ÑĮ\":126585,\"×Ĺ×Ļ×Ŀ\":126586,\"ÐµÑĤÐµ\":126587,\"ëĤľ\":126588,\"×Ĳ×Ĵ\":126589,\"×¢×ķ×¨\":126590,\"ë³Ħ\":126591,\"åĲĮãģĺ\":126592,\"ãĤ²\":126593,\"×¨×ļ\":126594,\"×ķ×©×Ĳ\":126595,\"ìľ¡\":126596,\"Ø§Ø®\":126597,\"×¦×Ļ×Ķ\":126598,\"á»±a\":126599,\"ãģĪãģ¦\":126600,\"×©×Ķ×ķ\":126601,\"Ð°Ð½ÑĤ\":126602,\"à¸¥à¸²à¸Ķ\":126603,\"Ð¸Ð½Ð³\":126604,\"ë¡ł\":126605,\"Ø§Ø¹Ø¯\":126606,\"ÙĪØ³Ø·\":126607,\"ĠÐ²Ð¾Ð¿\":126608,\"ĠÐ²Ð¾Ð¿ÑĢÐ¾Ñģ\":126609,\"ÙħÙĬÙĨ\":126610,\"à¸Ħà¸ĩ\":126611,\"×Ļ×¨×Ļ×Ŀ\":126612,\"cÃ³w\":126613,\"ê²©\":126614,\"Ġê·¸ëŁ°\":126615,\"Ġì§Ħ\":126616,\"Ġ×©×ľ×Ķ\":126617,\"à¹Ģà¸£à¸´à¹Īà¸¡\":126618,\"à¸Ĭà¸Ńà¸ļ\":126619,\"Ð´ÐµÑĤ\":126620,\"ÑİÑīÐ¸Ñħ\":126621,\"à¸ļà¸Ńà¸ģ\":126622,\"æĢĿãģĦ\":126623,\"Ø¹ÙĬØ¯\":126624,\"×¡×ŀ\":126625,\"×Ĵ×Ļ×¢\":126626,\"×¦×ĵ\":126627,\"Ø¨Ø§Øª\":126628,\"ĠëĶ°ëĿ¼\":126629,\"à¸Īà¸±à¸ĩ\":126630,\"ãģłãģĳãģ§\":126631,\"×¢×Ļ×¨\":126632,\"ĠÑĩÐµÐ»\":126633,\"ĠÑĩÐµÐ»Ð¾Ð²\":126634,\"ĠÑĩÐµÐ»Ð¾Ð²ÐµÐº\":126635,\"ãĥĥãĥģ\":126636,\"à¹Ģà¸ģà¸µà¹Īà¸¢à¸§\":126637,\"à¸Ķà¸´\":126638,\"Ġ×¤×¢\":126639,\"×Ļ×ŀ×Ļ\":126640,\"ë°ĺ\":126641,\"Ø®Ø§Ø±\":126642,\"×ĳ×Ļ×ª\":126643,\"×¢×Ļ×Ŀ\":126644,\"Ã¼yor\":126645,\"ãĤģãģ¦\":126646,\"ÐºÐ»Ð°Ð´\":126647,\"Ġà¸Īà¸²à¸ģ\":126648,\"à¹Ģà¸Ħà¸¢\":126649,\"à¸ªà¸Ńà¸ĩ\":126650,\"à¹ģà¸Ħà¹Ī\":126651,\"áº«u\":126652,\"à¸«à¸Ļà¸±à¸ĩ\":126653,\"×©×ľ×ķ×Ŀ\":126654,\"Ø§ÙĨÙĬØ©\":126655,\"åĩºä¼ļ\":126656,\"åĩºä¼ļãģĦ\":126657,\"à¸łà¸²à¸¢\":126658,\"à¸ļà¸²à¸Ĺ\":126659,\"à¸Ĭà¸²à¸§\":126660,\"muÅŁ\":126661,\"Ġ×ľ×§×ĳ×ľ\":126662,\"ãĤ·ãĥ£\":126663,\"ĠÄ°ÅŁ\":126664,\"×Ĵ×ĵ×ķ×ľ\":126665,\"Ø¬Ø¹ÙĦ\":126666,\"ë³Ģ\":126667,\"à¸¢à¸´à¹Īà¸ĩ\":126668,\"à¸Ļà¸²à¸¢\":126669,\"à¸Ļà¸µà¹Ī\":126670,\"à¸§à¸´à¸ĺà¸µ\":126671,\"ãĤīãģªãģĦ\":126672,\"ëłĪ\":126673,\"Ġë¬¸ìłľ\":126674,\"Ġà¸ģ\":126675,\"à¸Ĺà¸³à¸ĩà¸²à¸Ļ\":126676,\"à¹Ģà¸§à¹ĩà¸ļ\":126677,\"ÑĦÐµ\":126678,\"æ¥½ãģĹ\":126679,\"à¸ªà¸³à¸Ħ\":126680,\"à¸ªà¸³à¸Ħà¸±à¸į\":126681,\"Ø±Ùħ\":126682,\"ãģķãĤĮãģ¦\":126683,\"ĠÐ¾Ð±Ð»Ð°\":126684,\"×¨×Ĳ×Ļ\":126685,\"à¸«à¸¡à¸Ķ\":126686,\"ÙĨÙĬØ©\":126687,\"Ð»Ð¸Ð½\":126688,\"ĠeÄŁ\":126689,\"itim\":126690,\"ëł¹\":126691,\"ØµØ§ÙĦ\":126692,\"ÅĽl\":126693,\"à¸ľà¸´à¸Ķ\":126694,\"ãĥŀãĥ³\":126695,\"åħ¥ãĤĮ\":126696,\"à¹Ģà¸ķà¸Ńà¸£à¹Į\":126697,\"Ø§Ø±ÙĬ\":126698,\"ĠÐ¦\":126699,\"dÃ¼r\":126700,\"à¸ªà¸§à¸¢\":126701,\"ë¦½\":126702,\"Ø±ÙĥØ©\":126703,\"ĠhÃ£\":126704,\"×Ļ×ª×Ķ\":126705,\"à¸Ĥà¸Ļà¸²\":126706,\"à¸Ĥà¸Ļà¸²à¸Ķ\":126707,\"à¸Īà¸³à¸Ļ\":126708,\"à¸Īà¸³à¸Ļà¸§à¸Ļ\":126709,\"×©×ķ×§\":126710,\"ĠÐ´Ð¾Ð¼\":126711,\"ì±ħ\":126712,\"ãģĭãģĳ\":126713,\"×¤×ķ×ľ\":126714,\"à¸Ĭà¸²à¸¢\":126715,\"ÑģÐ¼Ð¾ÑĤÑĢ\":126716,\"ÑģÐ»ÑĥÐ¶\":126717,\"×©×Ĳ×ľ\":126718,\"ÐºÑĢÑĭÑĤ\":126719,\"Ġìŀĺ\":126720,\"é«ĺãģĦ\":126721,\"ĠÑĢÑĥÐº\":126722,\"ÙĨØµ\":126723,\"Ð´Ð°Ð²\":126724,\"Æ°á»¡\":126725,\"Æ°á»¡ng\":126726,\"Ø±Ø§Ùħ\":126727,\"×Ļ×ł×Ļ×Ŀ\":126728,\"ãĥ©ãĥ¼\":126729,\"ëĦ¤\":126730,\"ĠØªØ¹\":126731,\"lke\":126732,\"å¥½ãģį\":126733,\"æĮģãģ¡\":126734,\"Ġë§İ\":126735,\"ĠyÃ¼k\":126736,\"ĠÑģÐ¾ÑģÑĤÐ°Ð²\":126737,\"ÐµÐ½ÑĤÑĢ\":126738,\"peÅĤ\":126739,\"à¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢\":126740,\"à¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢à¸Ļ\":126741,\"íıī\":126742,\"ãĤĦãģĻ\":126743,\"×Ĺ×ĸ\":126744,\"×ĳ×¨×Ķ\":126745,\"ë£¨\":126746,\"ìĶĢ\":126747,\"Ø¨ØŃØ«\":126748,\"à¹Ģà¸ķà¹ĩ\":126749,\"Ã³wi\":126750,\"Ø¨Ùĩ\":126751,\"ãģįãģ¾ãģĻ\":126752,\"Ġ×¢×ŀ\":126753,\"×Ĵ×ķ×ľ\":126754,\"ÐµÐ·Ð´\":126755,\"ÙĬÙģØ©\":126756,\"à¸ªà¸Ļà¹ĥà¸Ī\":126757,\"Ġ×ª×ľ\":126758,\"ÑıÑī\":126759,\"ĠØ³ÙĨ\":126760,\"ĠÙĪØ§ØŃØ¯\":126761,\"ĠÑģÐ¼\":126762,\"ladÄ±\":126763,\"Ä±ld\":126764,\"×Ļ×¨×ª\":126765,\"à¸µà¸¢à¸Ļ\":126766,\"×ª×Ĺ×ª\":126767,\"ĠÐ¶Ð¸Ð·\":126768,\"à¸ŀà¸±\":126769,\"à¸ŀà¸±à¸Ĵ\":126770,\"à¸ŀà¸±à¸Ĵà¸Ļà¸²\":126771,\"à¸Ĭà¸´\":126772,\"Ø§Ø®ÙĦ\":126773,\"ãģ£ãģ¦ãģĦãģŁ\":126774,\"à¸£à¸±à¸Ĳ\":126775,\"ãĤģãĤĭ\":126776,\"à¹Ĥà¸ģ\":126777,\"ĠTá»ķ\":126778,\"Ġhakk\":126779,\"Ø±Ùģ\":126780,\"ìłĢ\":126781,\"ÑģÐ¾Ð±\":126782,\"ãģªãģĳãĤĮãģ°\":126783,\"ÙĩÙĪ\":126784,\"Ġë²ķ\":126785,\"ãĤĨ\":126786,\"ĠØ§ÙĦØ³Ø¹ÙĪØ¯\":126787,\"Ġ×Ĳ×ª×¨\":126788,\"Ø§Øº\":126789,\"Ġ×ľ×ĵ\":126790,\"à¹ģà¸ķ\":126791,\"à¹ģà¸ķà¹Īà¸ĩ\":126792,\"íĮĮ\":126793,\"ÑĥÐ¿Ð¸ÑĤÑĮ\":126794,\"à¸ŀà¸·à¹īà¸Ļà¸Ĺà¸µà¹Ī\":126795,\"×ĳ×ª×Ļ\":126796,\"à¹ĩà¸ģ\":126797,\"ÅĤat\":126798,\"Ġê°ľìĿ¸\":126799,\"ìłķë³´\":126800,\"ÑĤÐ°Ð»\":126801,\"ĠgÃ¼ven\":126802,\"ĠÄ°l\":126803,\"Ġê°ģ\":126804,\"ĠØ¨Øª\":126805,\"×ŀ×ķ×ł×Ķ\":126806,\"ĠØ§ÙĦØŃÙĥÙĪÙħ\":126807,\"ÙĤØ§Øª\":126808,\"à¹ģà¸ģà¹Ī\":126809,\"à¸«à¸²à¸ģ\":126810,\"Ð½ÑĮ\":126811,\"à¸Ľà¸£à¸±à¸ļ\":126812,\"à¸¡à¸²à¸ĵ\":126813,\"ĠÐ½ÐµÑģÐº\":126814,\"ĠØ¶\":126815,\"à¸ªà¸¡à¸±\":126816,\"à¸ªà¸¡à¸±à¸Ħà¸£\":126817,\"ãģĮãģĤãĤĬ\":126818,\"Ð¼ÐµÑģÑĤ\":126819,\"Ġ×Ĳ×¦×ľ\":126820,\"ĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸\":126821,\"×¡×¨\":126822,\"ÙĬÙħØ©\":126823,\"ĠÑħÐ¾ÑĢÐ¾\":126824,\"ĠÑħÐ¾ÑĢÐ¾ÑĪ\":126825,\"Ġ×Ļ×ķ×ĵ\":126826,\"Ã¼s\":126827,\"×Ĵ×Ļ×©\":126828,\"à¸ļà¸Ĺ\":126829,\"ØªÙĨØ¸\":126830,\"à¸§à¸²à¸ĩ\":126831,\"à¸¡à¸«à¸²\":126832,\"Ġ×Ľ×ķ×ľ\":126833,\"à¸Ĥà¹īà¸²à¸ĩ\":126834,\"ë°ľ\":126835,\"Ð³Ð¾Ð´\":126836,\"Ð´Ð°Ð½\":126837,\"ãģĭãĤĤãģĹãĤĮãģ¾ãģĽãĤĵ\":126838,\"ãģĵãģ¡ãĤī\":126839,\"ãĥĲãĤ¤\":126840,\"eceÄŁi\":126841,\"Ø¯ÙĬØ¯Ø©\":126842,\"ÙĨÙī\":126843,\"Ġëĭ¤ìĿĮ\":126844,\"à¸§à¸µ\":126845,\"ØºØ§\":126846,\"Ð»Ð¸Ð·\":126847,\"à¹Ģà¸Ķà¸´\":126848,\"à¹Ģà¸Ķà¸´à¸¡\":126849,\"ĠÙĬØ³Øª\":126850,\"ĠyÄ±lÄ±\":126851,\"koÅĦ\":126852,\"ãģ§ãģĹãĤĩãģĨãģĭ\":126853,\"ãģĤãģª\":126854,\"ãģĤãģªãģŁ\":126855,\"ÑĨÐµÐ½\":126856,\"ĠÙĪØ²\":126857,\"×Ĳ×Ļ×©\":126858,\"à¹Īà¸Ń\":126859,\"Ø±ØŃ\":126860,\"ê´ĳ\":126861,\"ÑĢÐ°ÑģÑĤ\":126862,\"Ġ×Ķ×ľ\":126863,\"ãģĹãģ¦ãĤĤ\":126864,\"×ŀ×¨×Ľ\":126865,\"×ŀ×¨×Ľ×ĸ\":126866,\"éģķãģĦ\":126867,\"ãģŁãģı\":126868,\"ĠÑģÑĥÐ´\":126869,\"Ð²ÐµÑģÑĤÐ¸\":126870,\"ĠíķĦìļĶ\":126871,\"ãĥķãĤ§\":126872,\"ÑĤÐµÐ»ÑĮÐ½Ð¾\":126873,\"à¹Ģà¸ŀà¸·à¹Īà¸Ńà¸Ļ\":126874,\"ÅĤuÅ¼\":126875,\"à¹Ģà¸Ķà¸´à¸Ļà¸Ĺà¸²à¸ĩ\":126876,\"×©×ķ×¨\":126877,\"Ġ×ŀ×ĵ\":126878,\"×ķ×¢×ľ\":126879,\"ÙĦØ§Ùħ\":126880,\"à¹Ħà¸ĭ\":126881,\"Ð»ÐµÐ¹\":126882,\"ÐºÑĥÑĢ\":126883,\"áº¢\":126884,\"à¸Ĺà¸²à¸Ļ\":126885,\"ì§ĳ\":126886,\"ĠÐ³Ð¾ÑĢÐ¾Ð´\":126887,\"×¨×¡\":126888,\"×ľ×ķ×Ĵ\":126889,\"masÄ±nÄ±\":126890,\"ĠÐ»ÑĥÑĩ\":126891,\"à¸¥à¹Īà¸²\":126892,\"ìļ¸\":126893,\"×©×ĺ\":126894,\"ĠÐĺÐ½\":126895,\"íĤ¤\":126896,\"ÙĪÙĦØ§\":126897,\"ìķł\":126898,\"ĠØ£ÙĬØ¶Ø§\":126899,\"ÙĥØ§Ø±\":126900,\"ĠØ§ÙĦØªØ¹\":126901,\"à¸ªà¸¹à¹Ī\":126902,\"ãĤ¼\":126903,\"×ĳ×Ļ×Ĳ\":126904,\"à¸¢à¸ģ\":126905,\"ĠØŃÙĤ\":126906,\"Ø±Ø¨ÙĬ\":126907,\"ãģĺãĤĥãģªãģĦ\":126908,\"à¸£à¸±à¸ģà¸©à¸²\":126909,\"ÑħÐ¾Ð´Ð¸ÑĤ\":126910,\"à¸ķà¸Ńà¸ļ\":126911,\"×ł×ĺ×Ļ\":126912,\"ĠØ§ÙĦÙħØ¬\":126913,\"ØªÙħØ¹\":126914,\"Ð¾Ð²Ð°ÑĤÑĮ\":126915,\"ÙĦÙĬÙĨ\":126916,\"×Ļ×ŀ×ķ×ª\":126917,\"ĠmÃ¹\":126918,\"nÄĻ\":126919,\"ĠØ¯ÙĬ\":126920,\"×Ľ×©×Ļ×ķ\":126921,\"ĠhiÃ§\":126922,\"ëĳĲ\":126923,\"ÙĪØ§Ø¡\":126924,\"ÙĪØ·\":126925,\"ĠØ§ÙĦØ¨ÙĦ\":126926,\"à¹ģà¸¡à¹ī\":126927,\"×§×ķ×ª\":126928,\"ÙĪØ¬Ø¯\":126929,\"å§ĭãĤģ\":126930,\"ÙĬØ¦Ø©\":126931,\"Ġë§¤\":126932,\"ØµØ¨ØŃ\":126933,\"×¤×Ĳ\":126934,\"Ð³Ð¾ÑĢ\":126935,\"×¡×Ķ\":126936,\"Ø¨ÙĬÙĤ\":126937,\"à¸¢à¸²à¸ģ\":126938,\"ĠÐ½Ð°Ð´\":126939,\"ÙĬÙĳ\":126940,\"ĠØ¨ÙĪ\":126941,\"×¡×ķ×¨\":126942,\"ÙħÙĥØ§ÙĨ\":126943,\"×¨×ĳ\":126944,\"×Ĵ×ĸ\":126945,\"×¦×ª\":126946,\"bilit\":126947,\"Ð»Ð°Ð³\":126948,\"ĠNgo\":126949,\"×Ĳ×ķ×¨\":126950,\"à¸ķà¸Ļ\":126951,\"íĬ¹\":126952,\"à¸Ĺà¸µà¹Īà¸Ķà¸µ\":126953,\"à¸Ľà¸£à¸°à¸Īà¸³\":126954,\"Ð¾Ð²Ð°Ð½Ð¸Ðµ\":126955,\"ãģĦãģ¤\":126956,\"ãĥĥãĤ¯ãĤ¹\":126957,\"åĲĪãĤı\":126958,\"åĲĪãĤıãģĽ\":126959,\"×Ļ×ł×ķ×Ļ\":126960,\"áº¡y\":126961,\"Ø«ÙĤ\":126962,\"ĠÐ¿ÑĢÐ¾Ð±\":126963,\"ĠÐ¿ÑĢÐ¾Ð±Ð»ÐµÐ¼\":126964,\"ÅŁeh\":126965,\"ÅŁehir\":126966,\"Ø¹Ø§Ø¯Ø©\":126967,\"Ø§ÙĨÙĪÙĨ\":126968,\"à¸ķà¸±à¸§à¹Ģà¸Ńà¸ĩ\":126969,\"ì¶ķ\":126970,\"Ä±lan\":126971,\"Ð±Ð°Ð½\":126972,\"ãĥ³ãĥī\":126973,\"à¸Īà¸µ\":126974,\"Ġ×Ķ×©×ł×Ļ\":126975,\"Ð¿Ð¾ÑĤ\":126976,\"×ķ×ľ×Ļ×Ŀ\":126977,\"à¸¥à¸±à¸ļ\":126978,\"ĠÑįÑĤÐ¸\":126979,\"×ĳ×§×©\":126980,\"ë¹ĦìĬ¤\":126981,\"à¸Ńà¸¢à¹Īà¸²à¸ĩà¹Ħà¸£\":126982,\"×Ļ×ľ×Ļ\":126983,\"à¹ĥà¸Ĭà¹Ī\":126984,\"ĠØ§ÙĦÙĥÙĦ\":126985,\"ãĥļãĥ¼ãĤ¸\":126986,\"ØµØ©\":126987,\"ÑĤÐ¸ÑĢ\":126988,\"ãĤĵãģ©\":126989,\"Ð·ÑĭÐº\":126990,\"wyÅ¼\":126991,\"ÙĩÙĬ\":126992,\"ĠÙħÙĦÙĬ\":126993,\"ĠÐ²Ð¸Ð´Ðµ\":126994,\"Ø¸Ø§Ùħ\":126995,\"Ø¯Ø§ÙĪÙĦ\":126996,\"×ŀ×ª×Ļ\":126997,\"ĠsÄ±k\":126998,\"à¹Ģà¸ķà¸´à¸¡\":126999,\"ãĤ¢ãĤ¤\":127000,\"ÐºÐ°Ñħ\":127001,\"×¦×Ļ×ľ\":127002,\"à¹Ģà¸Ĭà¹Īà¸Ļ\":127003,\"Ð¼Ð°Ð³\":127004,\"Ð¼Ð°Ð³Ð°Ð·\":127005,\"Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½\":127006,\"à¸Ľà¸±\":127007,\"à¸Ľà¸±à¸Ī\":127008,\"Ġ×©×Ļ×¨×ķ×ª\":127009,\"à¸µà¸¢à¸¡\":127010,\"ãĥĸãĥ«\":127011,\"ĠØ¯ÙĪÙĦ\":127012,\"×§×¨×Ļ×Ŀ\":127013,\"ÙĩÙı\":127014,\"Ð¾Ð²Ð¾\":127015,\"ĠÃ¼ret\":127016,\"Ø¯ÙĪÙĨ\":127017,\"à¹ģà¸Ļà¸§\":127018,\"à¹Ģà¸Ļà¸·à¹īà¸Ń\":127019,\"ĠÑĦÐ¾ÑĤ\":127020,\"ãĥĺ\":127021,\"ãģ¤ãģĭ\":127022,\"ÑıÑģ\":127023,\"ĠíķĺëĤĺëĭĺ\":127024,\"Ø§Ø¦Ø¹\":127025,\"ĠÐ¿Ð»Ð°ÑĤ\":127026,\"ìĺĪ\":127027,\"ĠdostÄĻp\":127028,\"ÙĪØ¬Ùĩ\":127029,\"Ġ×Ķ×Ĺ×Ļ\":127030,\"×ł×Ļ×§\":127031,\"Ð´ÐµÐ¹\":127032,\"íĽĦ\":127033,\"Ä±y\":127034,\"Ø¨ØŃØ±\":127035,\"à¹Ģà¸ªà¸£à¸´à¸¡\":127036,\"Ġ×ľ×Ĵ\":127037,\"Ø°ÙĩØ¨\":127038,\"Ø¬ÙĬÙĦ\":127039,\"Ø±ÙĥØ²\":127040,\"Ġëħ\":127041,\"Ġëħ¸\":127042,\"×¤×Ļ×ľ×ķ\":127043,\"ãģ¾ãģļ\":127044,\"iriÅŁ\":127045,\"ĠÙĥÙĬÙģ\":127046,\"Ġ×ĳ×¦\":127047,\"ĠêµĲ\":127048,\"ÑĢÐ¾ÑģÑģ\":127049,\"ĠØ´ÙĬ\":127050,\"ĠiÃ§er\":127051,\"×Ĵ×ķ×ĳ×Ķ\":127052,\"Ð¼ÐµÐ½Ð½Ð¾\":127053,\"×¢×ĳ×Ļ×¨\":127054,\"×ķ×ŀ×Ķ\":127055,\"ãĤīãģĹãģĦ\":127056,\"ãģ¼\":127057,\"ÑīÐ¸Ð½\":127058,\"è²·ãģĦ\":127059,\"Ø¬ÙħÙĪØ¹Ø©\":127060,\"ĠdÃ¶nem\":127061,\"Ġ×ĳ×Ĳ×¨\":127062,\"Ð²ÐµÑģÑĤ\":127063,\"×ķ×¨×ķ×ª\":127064,\"Ø³Ùģ\":127065,\"à¹ģà¸Ĺà¸Ļ\":127066,\"ĠÐ´Ð¾ÐºÑĥÐ¼ÐµÐ½ÑĤ\":127067,\"ĠØ§ÙĬ\":127068,\"Ø¬Ø§ÙĨ\":127069,\"×¦×ķ×¢×Ļ\":127070,\"ĠÐ¾ÑģÐ¾Ð±\":127071,\"ĠØ§ÙĦÙħØ³\":127072,\"ÑĢÐ°Ð±\":127073,\"à¸łà¸¹\":127074,\"à¸Ķà¸²à¸§\":127075,\"Ð»ÐµÐºÑĤ\":127076,\"Ø¹ÙĤ\":127077,\"×ķ×ĵ×ķ×ª\":127078,\"Ġolu\":127079,\"ĠoluÅŁtur\":127080,\"ãģ¾ãģ¾\":127081,\"ÐµÐ´Ð¸Ð½\":127082,\"à¹Ģà¸Ńà¸ģ\":127083,\"ãĤµãĤ¤\":127084,\"ëĦĪ\":127085,\"Ø·ÙĨÙĬ\":127086,\"Ø·ÙĤØ©\":127087,\"ĠÐłÐ°Ð·\":127088,\"ÙĦÙĳ\":127089,\"ÑĩÐµÐ¼\":127090,\"Ġ×ľ×ĺ\":127091,\"à¸ªà¸±à¹Īà¸ĩ\":127092,\"Ø³Ø±Ø§Ø¦ÙĬÙĦ\":127093,\"Ġ×¤×¨×ĺ×Ļ\":127094,\"Ð´ÐµÑģÑĮ\":127095,\"Ġ×ł×Ľ\":127096,\"Ø§ÙĨØ¨\":127097,\"ÙĬØ§Ø©\":127098,\"ÙħØ¨Ø±\":127099,\"ĠkÄ±\":127100,\"à¸Ľà¸ı\":127101,\"à¸Ľà¸ıà¸´\":127102,\"à¸ļà¸±à¸ķà¸´\":127103,\"×ł×ª×Ļ\":127104,\"ìĨ¡\":127105,\"Ø±Ø§Ø¨\":127106,\"à¹ĥà¸ķ\":127107,\"à¹ĥà¸ķà¹ī\":127108,\"×Ļ×ł×ª\":127109,\"ÙĪÙĬØ±\":127110,\"Ġ×Ķ×ŀ×Ļ\":127111,\"ÐµÐ¹ÑĩÐ°Ñģ\":127112,\"×§×ķ×ĳ\":127113,\"Ø¯Ø±Ø§Ø³\":127114,\"ĠÙħÙĤ\":127115,\"Ø±ÙĬÙĨ\":127116,\"Ø®Ø§Øµ\":127117,\"ãģĬéĩĳ\":127118,\"ĠØ¬Ø¯Ø§\":127119,\"ãģĨãģ¡\":127120,\"ëħ¸\":127121,\"Ä±rÄ±m\":127122,\"æ§ĺ\":127123,\"ãģ«å¯\":127124,\"ãģ«å¯¾\":127125,\"ÑĨÐµÐ²\":127126,\"Ġvard\":127127,\"ĠÐĲÐ½\":127128,\"eÄŁ\":127129,\"ÑģÑĤÐ²ÐµÐ½Ð½Ð¾\":127130,\"Ð¨\":127131,\"Ø³Ø¯\":127132,\"à¸ģà¸¸\":127133,\"à¹ģà¸ľà¸Ļ\":127134,\"à¸£à¸¹à¹īà¸ª\":127135,\"à¸£à¸¹à¹īà¸ªà¸¶à¸ģ\":127136,\"Ø§ØªØŃØ§Ø¯\":127137,\"ÑĳÑĤ\":127138,\"×Ĺ×ķ×§\":127139,\"ãģĻãģĲ\":127140,\"Ø·ÙĦØ§ÙĤ\":127141,\"Ġ×§×ķ×ĵ\":127142,\"à¹ĥà¸Ĭà¹īà¸ĩ\":127143,\"à¹ĥà¸Ĭà¹īà¸ĩà¸²à¸Ļ\":127144,\"ãĥ¼ãĤ¿\":127145,\"ĠsÃ¼r\":127146,\"ÑĢÐ¾Ðº\":127147,\"ë³ĳ\":127148,\"à¸ªà¸¡à¸²à¸Ĭ\":127149,\"à¸ªà¸¡à¸²à¸Ĭà¸´à¸ģ\":127150,\"ãĥķãĥ¬\":127151,\"è¾¼ãģ¿\":127152,\"ãĤ»ãĥ³\":127153,\"Ġê°Ģì§Ģ\":127154,\"à¸ľà¹īà¸²\":127155,\"ÑįÑĤÐ¾Ð¼Ñĥ\":127156,\"Ð¸ÑĤÐµÐ»\":127157,\"à¸łà¸±\":127158,\"à¸ĳ\":127159,\"ãĥĸãĥ©\":127160,\"×Ľ×ª×ķ×ĳ\":127161,\"×ł×Ŀ\":127162,\"ÐµÐ½Ð½ÑĭÐµ\":127163,\"×¢×¨×Ľ×ª\":127164,\"ĠìĤ\":127165,\"ĠìĤ´\":127166,\"à¸Ĥà¹īà¸²\":127167,\"×ł×ķ×¡\":127168,\"ãĥ¬ãĥĵ\":127169,\"ÑĢÐµÑģ\":127170,\"à¹Ģà¸¥à¸Ĥ\":127171,\"Ø«Ø§ÙĦ\":127172,\"ìĹĨ\":127173,\"ĠÑĩÐ°ÑģÑĤ\":127174,\"à¸²à¸¨\":127175,\"ãĥªãĤ¢\":127176,\"uÃ§\":127177,\"×Ļ×Ľ×ķ×ª\":127178,\"à¸¥à¹īà¸²à¸Ļ\":127179,\"iÃ«\":127180,\"ãĤ¸ãĤ§\":127181,\"à¸Īà¸Ń\":127182,\"ÙĪØŃØ¯\":127183,\"×Ļ×¦×ķ×ĳ\":127184,\"Ġ×ĳ×©×ľ\":127185,\"Ð¾ÐºÐ¾\":127186,\"Ø¶Ø©\":127187,\"Ø°Ø±\":127188,\"ĠÑĥÐ´\":127189,\"Ä°L\":127190,\"×ķ×¦×Ļ×Ŀ\":127191,\"×ĸ×ŀ×Ł\":127192,\"à¸Ľà¸ģ\":127193,\"íķĻêµĲ\":127194,\"Ø³Ø§Ùħ\":127195,\"à¹Ħà¸Ķ\":127196,\"à¸¥à¸°à¹Ģà¸Ń\":127197,\"à¸¥à¸°à¹Ģà¸Ńà¸µà¸¢\":127198,\"à¸¥à¸°à¹Ģà¸Ńà¸µà¸¢à¸Ķ\":127199,\"áº£y\":127200,\"Ð°ÑĨÐ¸Ð¾Ð½\":127201,\"ãĤ¹ãĤ¯\":127202,\"×¤×ķ×¡\":127203,\"à¸£à¹Īà¸²à¸ĩ\":127204,\"ÐµÐ½Ð½ÑĭÐ¹\":127205,\"Ø¹ÙĨ\":127206,\"Ø¹ÙĦÙĨ\":127207,\"Ø§Ø¦Ùģ\":127208,\"dÄĻ\":127209,\"Ø¤ÙĪÙĦ\":127210,\"×ľ×ķ×ķ\":127211,\"Ġ×ĳ×©×ĳ\":127212,\"ä»ĬåĽŀ\":127213,\"ĠØ§ÙĦØ¬ÙĨ\":127214,\"Ø¯Ø§Ø¯\":127215,\"waÄĩ\":127216,\"ãĥªãĥ³\":127217,\"ĠìŀĲìĭł\":127218,\"Ø§ÙĨÙĬØ§\":127219,\"ãĥ¡ãĥª\":127220,\"ÙĦÙĪÙĨ\":127221,\"à¸Ĺà¹Īà¸Ńà¸ĩ\":127222,\"à¸Ĺà¹Īà¸Ńà¸ĩà¹Ģà¸Ĺà¸µà¹Īà¸¢à¸§\":127223,\"Ø§ÙģÙĬ\":127224,\"ĠÐ»Ð¸ÑĪ\":127225,\"ÙħÙĬØ©\":127226,\"Ð¾ÑĤÐ²ÐµÑĤ\":127227,\"ÑĩÐ¸Ð½\":127228,\"ÃĬ\":127229,\"ãĥ¡ãĥ³\":127230,\"å®Ł\":127231,\"éļĽãģ«\":127232,\"ĠÑĢÐ°Ð¹\":127233,\"ãĤ¦ãĥ³\":127234,\"×Ļ×¨×ķ×©\":127235,\"×Ļ×¨×ķ×©×ľ×Ļ×Ŀ\":127236,\"à¸¡à¸°\":127237,\"Ġara\":127238,\"ÐºÐ°Ð·Ð°ÑĤÑĮ\":127239,\"à¸ķà¸±à¸Ķ\":127240,\"ÑĥÑİÑĤ\":127241,\"ĠÃ¼st\":127242,\"×Ĵ×ķ×ĳ\":127243,\"×Ĵ×ķ×ĳ×ķ×ª\":127244,\"malÄ±\":127245,\"ÐµÐ³Ð¾Ð´\":127246,\"ÐµÐ³Ð¾Ð´Ð½Ñı\":127247,\"Ø§ÙģÙĤ\":127248,\"à¸Ĭà¹Īà¸Ńà¸ĩ\":127249,\"ĠÃ¶zellik\":127250,\"×Ļ×¦×ķ×¨\":127251,\"ĠmiÄĻd\":127252,\"ĠiliÅŁ\":127253,\"ĠÐ½Ð°ÑħÐ¾Ð´\":127254,\"×¢×ĸ×¨\":127255,\"×ľ×Ľ×ª\":127256,\"ÙĨØªØ§Ø¬\":127257,\"ĠÑģÐµÐ¼\":127258,\"à¸Īà¹Īà¸²à¸¢\":127259,\"à¸ķà¸£à¸§\":127260,\"à¸ķà¸£à¸§à¸Ī\":127261,\"×¤×¨×ķ\":127262,\"à¸Ĥà¸±à¸ļ\":127263,\"ãģŀ\":127264,\"ĠÐ¿Ð»Ð¾\":127265,\"ÐºÐ¾Ð»ÑĮ\":127266,\"×ŀ×¢×ĺ\":127267,\"íķĺìĭľ\":127268,\"jÄħce\":127269,\"ÙĨØ§ÙĨ\":127270,\"à¸¥à¸µà¸ģ\":127271,\"Ð½ÑĥÑĤ\":127272,\"ĠÐ¾Ð±ÑĢÐ°Ð·\":127273,\"ÙĥØ¨Ø±\":127274,\"ĠØ§ÙĦÙĪØ·ÙĨ\":127275,\"ãģķãģĽãģ¦\":127276,\"ÙĤØ§Ø¡\":127277,\"×ŀ×ĵ×Ļ×ł\":127278,\"yÃ¼\":127279,\"×¤×Ļ×ª\":127280,\"×ł×ķ×Ł\":127281,\"ÙħÙĨØ¸\":127282,\"à¸«à¸Ļà¸±à¸ģ\":127283,\"ìŀĪ\":127284,\"ãĤ«ãĥ¼ãĥī\":127285,\"Ø¹ÙĨÙĬ\":127286,\"Ð¿Ð¾Ð´\":127287,\"Ø¶Ø§Ø¡\":127288,\"à¸Ļà¸ķà¹Į\":127289,\"×ŀ×©×¤\":127290,\"à¸§à¹Į\":127291,\"×¨×ķ×§\":127292,\"à¸ªà¸·à¹Īà¸Ń\":127293,\"×¤×§×Ļ×ĵ\":127294,\"ãģªãĤīãģªãģĦ\":127295,\"ĠìĹ¬ëŁ¬\":127296,\"ÙĦØ¬\":127297,\"ÑīÐ¸ÑĤ\":127298,\"ãĥĥãĤ·\":127299,\"ÙĦÙĬØ³\":127300,\"ĠÙĦÙħØ§\":127301,\"ìłĳ\":127302,\"×ĳ×Ļ×Ł\":127303,\"ãĥģãĤ§\":127304,\"ĠgÃ¼Ã§\":127305,\"Ġchá»©\":127306,\"×ķ×¦×Ĳ\":127307,\"×§×¨×ĳ\":127308,\"à¹Ĥà¸ŀ\":127309,\"Ð¾ÑĩÐ½Ð¾\":127310,\"×¡×§×Ļ\":127311,\"×©×ľ×Ŀ\":127312,\"ØµØ±Ùģ\":127313,\"ĠLÃł\":127314,\"×¢×Ļ×ª\":127315,\"á»·\":127316,\"à¹Ĥà¸Ńà¸ģ\":127317,\"à¹Ĥà¸Ńà¸ģà¸²\":127318,\"à¹Ĥà¸Ńà¸ģà¸²à¸ª\":127319,\"Ġ×Ķ×ĵ×ĳ×¨\":127320,\"à¸Ļà¸±à¹Īà¸Ļ\":127321,\"Ø²Ø±\":127322,\"Ð½Ð°ÐºÐ¾\":127323,\"íļį\":127324,\"ãĤĤãģ¡\":127325,\"ãĤĤãģ¡ãĤį\":127326,\"ãĤĤãģ¡ãĤįãĤĵ\":127327,\"Ø§ÙħØª\":127328,\"Ø¹Ø¯Ø§Ø¯\":127329,\"Ð¸Ð½Ñĭ\":127330,\"ÅĤyw\":127331,\"à¸Ħà¸ĵà¸°\":127332,\"à¸Ĺà¸°\":127333,\"ktÃ¶r\":127334,\"×Ļ×Ĺ×Ķ\":127335,\"ĠÐ¼Ðµ\":127336,\"ĠÐ¼ÐµÑģÑı\":127337,\"×ł×Ķ×Ĵ\":127338,\"ĠÑģÑĥÑīÐµÑģÑĤÐ²\":127339,\"à¸Ļà¸±à¸Ļ\":127340,\"ÑĦÑĦ\":127341,\"ÐµÐºÑĤÐ¸Ð²\":127342,\"Ø¹ÙĦÙĪÙħØ§Øª\":127343,\"Ð±ÑĥÐ´\":127344,\"à¸Ļà¸±à¸ģà¸ĩà¸²à¸Ļ\":127345,\"à¸«à¸Ļà¹īà¸²à¸Ĺà¸µà¹Ī\":127346,\"ÙĤÙĬÙĤ\":127347,\"ãĤ·ãĥ³\":127348,\"ãģ«éĸ¢\":127349,\"×Ĳ×¨×Ĵ\":127350,\"ĠÐ¿ÑĢÐ¾ÑĤ\":127351,\"ĠÐ¿ÑĢÐ¾ÑĤÐ¸Ð²\":127352,\"ĠìŀĪìĸ´\":127353,\"ÙĤÙĬÙĤØ©\":127354,\"ìĹĩ\":127355,\"kÃ¼r\":127356,\"ãģ«ãģªãĤĬãģ¾ãģĹãģŁ\":127357,\"ĠÐ´ÐµÑıÑĤ\":127358,\"ĠÐ´ÐµÑıÑĤÐµÐ»ÑĮ\":127359,\"×¤×ķ×¨×ĺ\":127360,\"à¸Łà¹īà¸²\":127361,\"à¹Ģà¸ł\":127362,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð°ÑĤ\":127363,\"×ĸ×Ļ×§\":127364,\"Ġolduk\":127365,\"Ø¹Ø§Ùħ\":127366,\"ĠÑĤÐ¾ÑĢ\":127367,\"yrÄ±ca\":127368,\"ÃªÌ\":127369,\"ãĤŃãĥ³ãĤ°\":127370,\"ãģ«ãģ¨ãģ£ãģ¦\":127371,\"à¹Ģà¸īà¸ŀ\":127372,\"à¹Ģà¸īà¸ŀà¸²à¸°\":127373,\"ãģ¯ãģļ\":127374,\"×ŀ×Ĳ×Ļ\":127375,\"à¸ªà¸°à¸Ķ\":127376,\"à¸ªà¸°à¸Ķà¸§à¸ģ\":127377,\"ìľ¼ë©°\":127378,\"à¸ģà¸µ\":127379,\"à¸¬\":127380,\"Ġ×¢×ķ×©\":127381,\"à¸łà¸²à¸©à¸²\":127382,\"à¸Ĺà¸±à¸Ļ\":127383,\"acakt\":127384,\"acaktÄ±r\":127385,\"Ø§Ø¹Ø¯Ø©\":127386,\"ĠÑĥÑģÐ»ÑĥÐ³\":127387,\"×¡×¨×ĺ\":127388,\"×ķ×ŀ×ķ×ª\":127389,\"×Ķ×ķ×¨\":127390,\"×ŀ×ķ×ĳ\":127391,\"×ŀ×ķ×ĳ×Ł\":127392,\"Ø³ÙĬØ§Ø³\":127393,\"Ø§ØªÙģØ§ÙĤ\":127394,\"×Ķ×¦×ľ\":127395,\"ÙħØ¤Ø³\":127396,\"ĠpÃ³\":127397,\"ĠÐºÐ½Ð¸\":127398,\"×Ļ×Ľ×ķ×ľ\":127399,\"à¹Ģà¸«à¸¥à¸·à¸Ń\":127400,\"×Ľ×ľ×Ľ\":127401,\"×ł×ĸ\":127402,\"ÑĪÐ¸Ðµ\":127403,\"rÃ¨s\":127404,\"ĠØ§ÙĦØŃÙĤ\":127405,\"Ð»ÑıÑĢ\":127406,\"à¸«à¸į\":127407,\"à¸«à¸įà¸´à¸ĩ\":127408,\"×¨×Ĵ×Ļ×©\":127409,\"à¹Ģà¸ªà¹īà¸Ļ\":127410,\"×©×ĳ×ķ×Ł\":127411,\"Ã´tel\":127412,\"Ð°Ð¿ÑĢ\":127413,\"Ð°Ð¿ÑĢÐ¸Ð¼ÐµÑĢ\":127414,\"Ø§Ø¨ÙĦ\":127415,\"ĠÑĢÐ°Ð·Ð²Ð¸ÑĤ\":127416,\"ĠÐ¿Ð¾Ð»ÑĮÐ·\":127417,\"ĠÐ¡ÐµÑĢ\":127418,\"×ķ×ĳ×Ļ\":127419,\"rÃ³Å¼\":127420,\"ìĭŃ\":127421,\"ãĤ¯ãĥĪ\":127422,\"ãģĹãĤĪãģĨ\":127423,\"à¸ģà¸£à¸¡\":127424,\"ØŃÙĥÙĪÙħ\":127425,\"à¹Ĥà¸ļ\":127426,\"à¸Ĺà¹īà¸²à¸¢\":127427,\"ĠMÃ¡\":127428,\"ĠÑĤÑĭ\":127429,\"à¸Ħà¸£à¸±à¸§\":127430,\"ÑĢÑĥÐ±\":127431,\"áº¡p\":127432,\"ĠmÅĤ\":127433,\"ĠmÅĤod\":127434,\"ĠgÃ¶rÃ¼ÅŁ\":127435,\"ĠgeliÅŁ\":127436,\"Æ°Æ¡i\":127437,\"×ŀ×©×§\":127438,\"ÙĢÙĢÙĢÙĢ\":127439,\"à¸£à¸²à¸§\":127440,\"ãģĹãģ£\":127441,\"ãģĹãģ£ãģĭãĤĬ\":127442,\"ĠÐļÐ¾Ð½\":127443,\"ĠkÃª\":127444,\"à¹Ĥà¸Ĺà¸£\":127445,\"èĲ½ãģ¡\":127446,\"åĩºãģ¦\":127447,\"à¸¥à¸±à¸ģà¸©\":127448,\"Ġ×Ĵ×ĳ×ķ×Ķ\":127449,\"ãĥĻãĥ«\":127450,\"ê±°ëĤĺ\":127451,\"ë§Ĳ\":127452,\"×Ļ×ľ×ĵ×Ļ×Ŀ\":127453,\"ĠëĦĪ\":127454,\"×ŀ×¨×Ļ\":127455,\"à¸£à¸ª\":127456,\"ãĥŃãĥ³\":127457,\"Ð¸Ð»Ð¾\":127458,\"Ð½Ð¾ÑģÑĤÑĮÑİ\":127459,\"×ĸ×¨×Ĺ\":127460,\"Ð¿Ð¾Ð½\":127461,\"Ġ×Ķ×©×ľ\":127462,\"ê²łìĬµëĭĪëĭ¤\":127463,\"ĠkiÅŁ\":127464,\"ĠÐļÐ¸\":127465,\"à¸§à¸£\":127466,\"Ø¯Ø§Ø¹\":127467,\"ÅŁim\":127468,\"ÙĨÙĳ\":127469,\"Ð²Ð°ÑĤ\":127470,\"Ø±Ø§Ùĥ\":127471,\"Ø¨Ø§ÙĦ\":127472,\"Ð¸Ð´Ðµ\":127473,\"Ġ×Ķ×ŀ×Ĺ\":127474,\"ìĸµ\":127475,\"ØªÙģØ§Ø¹\":127476,\"Ø£Øª\":127477,\"ëĬĺ\":127478,\"×©×Ļ×ª\":127479,\"Ø³ØªÙħØ±\":127480,\"ĠÑĦÐ°Ðº\":127481,\"ĠØ§ÙĦØ£ÙħØ±ÙĬ\":127482,\"ëŀ¨\":127483,\"Ø§Ø³Ùħ\":127484,\"ĠaÄŁ\":127485,\"ĠÃ§ev\":127486,\"ÙĥÙĪØ±\":127487,\"ãģķãģ¾\":127488,\"ĠÃ§Ã¶z\":127489,\"ĠØ±Ø³\":127490,\"Äħda\":127491,\"à¸ªà¸Ļà¸¸\":127492,\"ãģĹãģ¦ãģıãĤĮ\":127493,\"Ð½Ñİ\":127494,\"leÅŁme\":127495,\"ãĤªãĥ³\":127496,\"ãģ¨ãģªãĤĬ\":127497,\"avaÅŁ\":127498,\"×ĺ×Ļ×ĳ\":127499,\"ØŃØ¶\":127500,\"×ķ×¦×Ĳ×ķ×ª\":127501,\"ÙĨÙħÙĪ\":127502,\"Ä±t\":127503,\"ĠÑħÐ°\":127504,\"ĠÑħÐ°ÑĢÐ°Ðº\":127505,\"ĠÑħÐ°ÑĢÐ°ÐºÑĤÐµÑĢ\":127506,\"ĠdÅĤ\":127507,\"ãĥĹãĥ©\":127508,\"à¸Ĭà¸¸à¸¡\":127509,\"à¹Īà¸Ńà¸Ļ\":127510,\"×ķ×ĳ×ľ\":127511,\"ÑģÐ¾Ð»\":127512,\"×ĵ×Ĵ\":127513,\"Ð°ÑĢÐ°ÑĤ\":127514,\"nivers\":127515,\"ĠgerÃ§ekleÅŁtir\":127516,\"ĠØ§ÙĦÙĦÙĬ\":127517,\"à¸£à¸°à¸¢à¸°\":127518,\"ĠÙħØ®ØªÙĦÙģ\":127519,\"ĠgÃ¶nder\":127520,\"ÙģØ§Ø±\":127521,\"doÄŁ\":127522,\"doÄŁan\":127523,\"ØµÙĦØ§ØŃ\":127524,\"ĠyayÄ±n\":127525,\"ãĥĨãĥ³\":127526,\"à¸£à¸§à¸Ī\":127527,\"×Ļ×Ĺ×Ļ×ĵ\":127528,\"Ã¼nkÃ¼\":127529,\"ÑĨÐ¸Ð°Ð»ÑĮÐ½\":127530,\"à¸ļà¸¹\":127531,\"à¸¡à¸¸\":127532,\"hÃ¤\":127533,\"Ø®Ùģ\":127534,\"å¢Ĺ\":127535,\"å¢ĹãģĪ\":127536,\"ÐµÑĩÐ½Ð¾\":127537,\"ĠØ§ÙĦØ³ÙĨ\":127538,\"à¸Ĥà¸²à¸§\":127539,\"imdi\":127540,\"Ð«\":127541,\"à¸Ļà¸Ńà¸ģà¸Īà¸²à¸ģ\":127542,\"à¸ļà¸²à¸¥\":127543,\"×ª×©\":127544,\"ĠdÃ¼zenle\":127545,\"Ð¼ÑĭÑģÐ»\":127546,\"ãģıãģª\":127547,\"Å¼u\":127548,\"ĠwspÃ³ÅĤ\":127549,\"ĠÐ½Ð°Ð·\":127550,\"Ä±ndaki\":127551,\"ØªØ±Ø©\":127552,\"ÅŁek\":127553,\"ĠÃ¶d\":127554,\"ĠÙĪÙĥ\":127555,\"ĠÐ¿Ð¾Ð·Ð²Ð¾Ð»Ñı\":127556,\"Ġ×ª×ķ×Ľ\":127557,\"ÙħÙĨØªØ¬\":127558,\"ë§ī\":127559,\"ĠØ§ÙĦØ«ÙĦØ§Ø«\":127560,\"Ð°ÑĨÐ¸Ñİ\":127561,\"ÙĪØ±ÙĪ\":127562,\"ÑĭÐ²Ð°ÐµÑĤ\":127563,\"Ø®ØµØµ\":127564,\"ĠØ§ÙĦÙģÙĦ\":127565,\"ĠØ§ÙĦÙģÙĦØ³Ø·ÙĬÙĨ\":127566,\"Ø¥Ø¬Ø±\":127567,\"Ø¥Ø¬Ø±Ø§Ø¡\":127568,\"Ø§ÙĨØªØ®\":127569,\"Ø§ÙĨØªØ®Ø§Ø¨\":127570,\"Ø§Ø±ÙĬØ©\":127571,\"×ķÖ\":127572,\"Ø¢ÙĨ\":127573,\"×ŀ×¢×ķ×ª\":127574,\"ĠÐ¼Ð°Ð»\":127575,\"Ġ×Ĳ×Ĺ\":127576,\"à¸Ĺà¹īà¸Ńà¸ĩ\":127577,\"zeÅĽ\":127578,\"Ġë§Įëĵ¤\":127579,\"Ø±ÙĬØ¹\":127580,\"äºĭãĤĴ\":127581,\"à¸ļà¸£à¸´à¸«à¸²à¸£\":127582,\"×ľ×ŀ×Ļ×ĵ\":127583,\"ĠÐ¼ÑĥÐ¶\":127584,\"ØªØ±ÙĪ\":127585,\"ĠØ¨Ø§ÙĦØ¥\":127586,\"×¤×Ļ×§\":127587,\"Ø²ÙħØ©\":127588,\"ĠÃ¶ÄŁrenc\":127589,\"ãĥ¶\":127590,\"Ø§ÙħØ¹Ø©\":127591,\"×§×ĳ×ķ×¦\":127592,\"×ŀ×ł×ķ×ª\":127593,\"Ø±ÙĬÙħ\":127594,\"ĠÐ¾ÐºÐ°Ð·\":127595,\"ãģłãģĳãģ©\":127596,\"ĠhÄ±z\":127597,\"Ġ×©×Ĳ×ª\":127598,\"ãĤ¢ãĥ¼\":127599,\"ĠmoÅ¼liwo\":127600,\"ìĦ¼\":127601,\"ÙĪØ§Ø¨\":127602,\"Ð¾Ð³ÑĢÐ°ÑĦ\":127603,\"ĠØ¹Ø¨Ø¯Ø§ÙĦ\":127604,\"ãĤĴè¡Į\":127605,\"Ø¨ÙĬÙĦ\":127606,\"ĠÄ°Ã§\":127607,\"à¸¢à¸²à¸¢\":127608,\"ĠÑĥÑĩÐ°ÑģÑĤ\":127609,\"ÑĦÐµÑģÑģ\":127610,\"ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°\":127611,\"áº¤\":127612,\"ÙĨÙĬÙĨ\":127613,\"Ø¹Ø¯ÙĦ\":127614,\"à¸ªà¸£à¸£\":127615,\"Ø¯ÙĬÙĦ\":127616,\"×ĳ×Ļ×§\":127617,\"czyÅĤ\":127618,\"ÑĢÐ¾Ð¼Ðµ\":127619,\"ĠÐ¼ÐµÐ´\":127620,\"ìĻĶ\":127621,\"ãĥ©ãĤ¤ãĥ³\":127622,\"ĠÑĤÐµÐ¿\":127623,\"ÐµÑĢÑĮ\":127624,\"iÄŁi\":127625,\"Ð²ÐµÐ»Ð¸\":127626,\"ÑĢÐ¸ÑģÑĤ\":127627,\"×¡×ķ×¤\":127628,\"×ŀ×ľ×Ĺ\":127629,\"ĠØ§ÙĦØ¥ÙĨ\":127630,\"Ġ×ľ×Ķ×©\":127631,\"è¶ĬãģĹ\":127632,\"ĠÑĢÑĭ\":127633,\"×ķ×Ĳ×¨\":127634,\"Ø±ÙĩØ§Ø¨\":127635,\"×¤×ķ×Ĳ×Ļ\":127636,\"ĠÐ³Ð¾ÑģÑĥÐ´\":127637,\"ĠÐ³Ð¾ÑģÑĥÐ´Ð°ÑĢ\":127638,\"ĠÐ³Ð¾ÑģÑĥÐ´Ð°ÑĢÑģÑĤÐ²\":127639,\"ĠØ§ÙĦØ£ÙħÙĬØ±\":127640,\"ÙħØ¬\":127641,\"à¹Ģà¸«à¸¡à¸²à¸°\":127642,\"ÑĢÐµÐ²\":127643,\"à¸Ĭà¸µà¸ŀ\":127644,\"ãĥķãĥĪ\":127645,\"Ð¸ÑĩÐ½Ð¾\":127646,\"ĠØ§ÙĦÙħØ¤\":127647,\"Ġiht\":127648,\"íħľ\":127649,\"Ø¯ÙĨÙĬ\":127650,\"Ø±Øµ\":127651,\"Ð»Ð°ÑģÑĤ\":127652,\"à¹Ģà¸«à¸¥à¹Īà¸²\":127653,\"Ä±lÄ±r\":127654,\"à¸£à¸ĵà¹Į\":127655,\"×ŀ×©×Ļ×ļ\":127656,\"Ġdá»ĭ\":127657,\"Ø·ÙģØ§ÙĦ\":127658,\"×ĺ×ķ×Ł\":127659,\"Ġ×ĳ×Ļ×ł\":127660,\"ãģ¾ãģ£ãģŁ\":127661,\"Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñı\":127662,\"ØªØŃØ±\":127663,\"Ø¨Ø§ØŃ\":127664,\"à¹Ģà¸ªà¸·à¹īà¸Ń\":127665,\"ãģĻãģĶ\":127666,\"ltÃ¼r\":127667,\"à¸ĩà¸²à¸¡\":127668,\"ĠtÃ¼\":127669,\"ĠÐ¿ÑĢÐ¸Ð¼\":127670,\"ĠÐ¿ÑĢÐ¸Ð¼ÐµÐ½\":127671,\"Ġhayat\":127672,\"ëĥĲ\":127673,\"ëĭĮ\":127674,\"×ł×Ļ×ķ\":127675,\"Ð²ÐµÐ´ÐµÐ½\":127676,\"ìħ¨\":127677,\"à¸Īà¸±à¸¢\":127678,\"à¸ģà¹Īà¸Ń\":127679,\"ĠÐ²Ð¾Ð´\":127680,\"Ð¾ÑģÑĤÐ¾Ñı\":127681,\"Ð½Ð°ÑĤ\":127682,\"à¹ģà¸«à¸¥\":127683,\"Ø³ÙħÙĬ\":127684,\"à¸Ķà¸³à¹Ģà¸Ļ\":127685,\"à¸Ķà¸³à¹Ģà¸Ļà¸´à¸Ļ\":127686,\"wÃ³d\":127687,\"Ã¶yle\":127688,\"ãĥĢãĤ¤\":127689,\"ÑĪÐ¸Ð¹\":127690,\"Ð¼ÐµÑīÐµÐ½\":127691,\"ãģĹãģ¾ãģĨ\":127692,\"ãĥīãĥ©\":127693,\"ÙĪØ¶ØŃ\":127694,\"à¸Ńà¸Ļà¸¸\":127695,\"ĠØ§ÙĦØ§Ø¬ØªÙħØ§Ø¹\":127696,\"laÅŁma\":127697,\"à¸Ħà¸Ńà¸Ļ\":127698,\"×ŀ×¨×Ļ×Ŀ\":127699,\"ÙĨØ§ÙħØ¬\":127700,\"×©×¨×ķ×ª\":127701,\"Ø§ÙĦØ£\":127702,\"ĠksiÄħÅ¼\":127703,\"ĠÐ°Ð½\":127704,\"ÑĢÐ°Ð¹\":127705,\"Ø§ÙĩØ±Ø©\":127706,\"×ŀ×ĵ×Ķ\":127707,\"ä¸Ģç·\":127708,\"ä¸Ģç·Ĵ\":127709,\"ä¸Ģç·Ĵãģ«\":127710,\"ÑĢÐ¸ÑĤÐ¾ÑĢ\":127711,\"dÄ±kl\":127712,\"à¹ģà¸ĸ\":127713,\"à¹ģà¸Ĥà¹Īà¸ĩ\":127714,\"ÐµÐºÑĤÐ¾ÑĢ\":127715,\"×ŀ×¡×¢\":127716,\"ÑĢÐ°ÐºÑĤÐ¸\":127717,\"uÄŁu\":127718,\"×ķ×ĳ×ª\":127719,\"à¸ªà¸¹à¸ķà¸£\":127720,\"ĠÃ§alÄ±ÅŁm\":127721,\"ĠÃ§alÄ±ÅŁmalar\":127722,\"ĠÐ°Ð½Ð°\":127723,\"ãĥĽãĥ¼ãĥł\":127724,\"ĠbÃ¶lÃ¼m\":127725,\"ĠØ¨Øµ\":127726,\"Ð¾Ð»Ð¾Ñģ\":127727,\"ĠìķĬëĬĶ\":127728,\"à¹Īà¸°\":127729,\"ÙĪØªØ±\":127730,\"ä¹Ĺ\":127731,\"Ø³ØªØ®Ø¯Ø§Ùħ\":127732,\"×¤×Ļ×Ļ×¡\":127733,\"×¤×Ļ×Ļ×¡×ĳ\":127734,\"×¤×Ļ×Ļ×¡×ĳ×ķ×§\":127735,\"ĠÐºÑĢÐ°Ñģ\":127736,\"Ð»Ð¸Ðº\":127737,\"Ø±ÙĬØŃ\":127738,\"×ŀ×©×ľ×Ķ\":127739,\"à¹Ģà¸¢à¸µà¹Īà¸¢\":127740,\"à¹Ģà¸¢à¸µà¹Īà¸¢à¸¡\":127741,\"Ð²Ð¸Ñģ\":127742,\"Ð¾Ð¼Ð½\":127743,\"ÄŁun\":127744,\"ãĥŃãĥ¼ãĥ³\":127745,\"Ø£ØªÙĬ\":127746,\"à¸ķà¸£à¸µ\":127747,\"çĶ³ãģĹ\":127748,\"ØªÙħØ±\":127749,\"ìĹĪìĬµëĭĪëĭ¤\":127750,\"ĠÙĪØºÙĬØ±\":127751,\"redni\":127752,\"ĠØ§ÙĦØµÙģ\":127753,\"ĠÐ½Ð°ÑģÑĤÐ¾Ñı\":127754,\"ĠÐ½Ð°ÑģÑĤÐ¾ÑıÑī\":127755,\"à¸ķà¸£à¸²\":127756,\"ĠÑĥÑģÐ»Ð¾Ð²\":127757,\"ĠÑĥÑģÐ»Ð¾Ð²Ð¸Ñı\":127758,\"ÑĨÐµÐ¿\":127759,\"×Ķ×Ĺ×ľ×ĺ\":127760,\"Ø·ÙĬØ¹\":127761,\"ĠBakan\":127762,\"ĠØ§ÙĦØ±ÙĪ\":127763,\"Ð¸Ð»ÑĮÐ½Ð¾\":127764,\"ĠÐ¼ÐµÑĤ\":127765,\"à¸Ķà¸Ńà¸ģ\":127766,\"ãģĭãĤīãģªãģĦ\":127767,\"ĠÐ¿Ð¾ÑģÑĤÐ¾Ñı\":127768,\"ĠÐ¿Ð¾ÑģÑĤÐ¾ÑıÐ½\":127769,\"ĠÑĩÐ°Ñģ\":127770,\"Ã¼c\":127771,\"wrÃ³\":127772,\"Ð±ÑĥÑĢ\":127773,\"ãĥĲãĥĥãĤ¯\":127774,\"ãĥ©ãĥ³ãĥī\":127775,\"ĠÐ¾Ð³ÑĢ\":127776,\"à¸ªà¸±à¸į\":127777,\"à¸ªà¸±à¸įà¸įà¸²\":127778,\"à¸¡à¸±à¹Īà¸Ļ\":127779,\"à¸Ħà¸Ńà¸¡\":127780,\"alÄ±k\":127781,\"ĠÐ½ÐµÐ´\":127782,\"Ã¼mÃ¼z\":127783,\"ĠÅĽwie\":127784,\"Ã©rio\":127785,\"×Ļ×Ĳ×Ķ\":127786,\"Ø¯ÙħØ§Øª\":127787,\"Ä±rl\":127788,\"ĠÐ¾ÑĤÐ·\":127789,\"ĠÐ¾ÑĤÐ·ÑĭÐ²\":127790,\"ä»ĺãģį\":127791,\"ĠkaÅ¼de\":127792,\"Ð¼Ð¸Ð½Ð¸ÑģÑĤ\":127793,\"ãĤ°ãĥ«\":127794,\"ë°ĸ\":127795,\"ÐµÐ·Ð½\":127796,\"Ø§ÙĦÙģ\":127797,\"Ġ×©×§×ľ\":127798,\"ÙħØ¶\":127799,\"ãĥĿãĥ¼ãĥĪ\":127800,\"ÙħÙĨØª\":127801,\"ÙĤÙĬØ§Ùħ\":127802,\"Ø´ÙĨ\":127803,\"×Ļ×¨×ķ×¢\":127804,\"ãĤŃãĥ£ãĥ³\":127805,\"Ð´Ð¾ÑĢÐ¾Ð²\":127806,\"×ŀ×Ļ×ª×Ļ\":127807,\"ÙĪÙĦÙĪØ¬\":127808,\"ÙĥØ§Ùģ\":127809,\"ĠÑĢÐ°Ð·Ð»Ð¸Ñĩ\":127810,\"Ð¸ÑĤÐµÑĤ\":127811,\"Ð½Ð¾Ð»Ð¾Ð³\":127812,\"à¸¥à¸ĩà¸Ĺà¸¸à¸Ļ\":127813,\"ĠyaklaÅŁ\":127814,\"ãĥ¬ãĤ¤\":127815,\"ê²łëĭ¤\":127816,\"æ±ĤãĤģ\":127817,\"Ø±ÙĪÙģ\":127818,\"ĠíĬ\":127819,\"ĠíĬ¹\":127820,\"ãģ£ãģıãĤĬ\":127821,\"à¸Ħà¸§à¸²à¸¡à¸Ħà¸´à¸Ķ\":127822,\"×Ķ×Ļ×¡×ĺ\":127823,\"Ø¥ÙĤ\":127824,\"ãģ¦ãģĦ\":127825,\"à¹Ĥà¸Ĭ\":127826,\"ĠBÃ¼yÃ¼k\":127827,\"ĠÐ¤ÐµÐ´ÐµÑĢ\":127828,\"ÑĨÐ¸Ð½\":127829,\"ÑĢÐ¾Ð²Ð°\":127830,\"ĠØ§ÙĦØ§ÙĤØªØµØ§Ø¯\":127831,\"ĠchÃ¡\":127832,\"à¸ĺà¸²à¸Ļ\":127833,\"ë¥ł\":127834,\"à¹Ħà¸ķ\":127835,\"ÃŃpio\":127836,\"ÙĭØ§\":127837,\"ĠÐ¾Ð±ÑıÐ·\":127838,\"ÙĩØ¬\":127839,\"Ġì¤ĳìļĶ\":127840,\"ãģ®ãģ§ãģ¯ãģªãģĦ\":127841,\"Ø¨Ø§Ø±Ø§Ø©\":127842,\"ãĤ¤ãĥ«\":127843,\"ĠÐ½Ð¾ÑĢÐ¼\":127844,\"á»īnh\":127845,\"mÃ¶\":127846,\"mÃ¶glich\":127847,\"ÑĨÐ¸Ð¿\":127848,\"ãĤ¢ãĤ¯\":127849,\"×Ķ×Ļ\":127850,\"ÑĨÐ¸Ð°Ð»ÑĮÐ½Ð¾\":127851,\"ĠÅĽwi\":127852,\"ØªÙĤ\":127853,\"ĠÑģÑĤÐ¾Ð¸Ð¼\":127854,\"Ø¨ÙĬØ¹ÙĬ\":127855,\"Ġ×ľ×©×ŀ\":127856,\"Ð³Ð»Ñı\":127857,\"Ð³Ð»ÑıÐ´\":127858,\"ãģ¦ãģıãĤĮ\":127859,\"ÄĻdzi\":127860,\"à¸Ĥà¸±\":127861,\"à¸Ĥà¸±à¹īà¸Ļ\":127862,\"Ø·ÙĤ\":127863,\"ĠìĹŃ\":127864,\"ãģ£ãģ¦ãģĹãģ¾ãģĨ\":127865,\"ĠdeÄŁerl\":127866,\"ĠdeÄŁerlendir\":127867,\"ĠÃ¼lk\":127868,\"ĠÐ¼Ð½Ð¾Ð³\":127869,\"à¹ĭ\":127870,\"ë¿Ĳ\":127871,\"ĠÐ£ÐºÑĢÐ°\":127872,\"ÄŁini\":127873,\"ĠÐ±ÐµÐ·Ð¾Ð¿\":127874,\"ĠÐ±ÐµÐ·Ð¾Ð¿Ð°Ñģ\":127875,\"à¸Ńà¸Ńà¸ģà¹ģà¸ļà¸ļ\":127876,\"Ø§Ø¸\":127877,\"ØŃØ¯Ø§Ø«\":127878,\"Ð»ÐµÑĢ\":127879,\"×Ļ×¥\":127880,\"×Ļ×ł×ĺ×¨×ł×ĺ\":127881,\"larÄ±nÄ±z\":127882,\"ØŃÙĬØŃ\":127883,\"Å¼eli\":127884,\"à¸Ńà¸±à¸ĩ\":127885,\"à¸Ńà¸±à¸ĩà¸ģ\":127886,\"à¸Ńà¸±à¸ĩà¸ģà¸¤à¸©\":127887,\"ĠÐ¾ÑĤÐ»Ð¸Ñĩ\":127888,\"à¸±à¸ª\":127889,\"ëŀį\":127890,\"Ð¾Ð¶Ð½Ð¾\":127891,\"ãĤ¹ãĥĿ\":127892,\"ĠÑħÐ¾Ñĩ\":127893,\"ĠÐºÐ°Ð¿\":127894,\"ÐµÑĩÐµÐ½\":127895,\"ØŃÙĦØ©\":127896,\"ÙĬØ§Ùĩ\":127897,\"Ð½Ð°Ð»\":127898,\"×ķ×¦×¨×Ļ×Ŀ\":127899,\"Ġkald\":127900,\"åĥį\":127901,\"ĠØ§ÙĦØ´Ø®Øµ\":127902,\"ĠÐ·Ð½Ð°\":127903,\"Ġwzgl\":127904,\"Å¼ycz\":127905,\"ê°Ŀ\":127906,\"à¸ŀà¸¥à¸±à¸ĩ\":127907,\"íģ¼\":127908,\"ĠÃ¶l\":127909,\"Ġbá»¥\":127910,\"Ø´ÙĩØ±\":127911,\"ĠÐ·Ð°Ð¼\":127912,\"ĠÐ´ÐµÐ²\":127913,\"×Ļ×ĺ×ª\":127914,\"ØªØ¹ÙĦÙĤ\":127915,\"ÙĪÙħØ©\":127916,\"ãĤĴä½ľ\":127917,\"ãģįãģ¦\":127918,\"íĥĿ\":127919,\"rasÄ±nda\":127920,\"ãĤĴæİ¢\":127921,\"ĠÙħØ¨Ø§Ø´Ø±\":127922,\"Ø±Ø§Ø¬Ø¹\":127923,\"ĠÐ²Ð¾Ð·Ð´\":127924,\"ÙħØŃØ§\":127925,\"×ķ×©×¨\":127926,\"ĠÐ¸ÑģÑĤÐ¾ÑĢ\":127927,\"à¸¡à¸±à¸ģ\":127928,\"tÄ±ÄŁ\":127929,\"Ø«Ø§Ø±\":127930,\"ØªØ±ÙĨØª\":127931,\"à¹ģà¸Ĥà¹ĩ\":127932,\"à¹ģà¸Ĥà¹ĩà¸ĩ\":127933,\"Ð¿Ð¾Ñĩ\":127934,\"Ġ×ĳ×Ĳ×ķ×ª\":127935,\"ë¯Ģ\":127936,\"ëĿ¼ëıĦ\":127937,\"à¸Ĭà¸±à¸Ķ\":127938,\"à¸ªà¸ķà¹Į\":127939,\"ãĥĭãĥĥãĤ¯\":127940,\"Ð¸Ð´ÐµÐ½ÑĤ\":127941,\"ĠÐ³ÑĢÑĥÐ¿Ð¿\":127942,\"ØªØ®\":127943,\"áºł\":127944,\"à¸¢à¸·à¸Ļ\":127945,\"à¸¢à¸±à¸Ļ\":127946,\"Ã³ry\":127947,\"TÃľ\":127948,\"ãģĹãĤĥ\":127949,\"ĠÐ¿ÑĢÐ¾Ð²ÐµÐ´\":127950,\"Ð»ÑıÐµÑĤ\":127951,\"ÙħØ®\":127952,\"à¸¢à¸Ńà¸¡\":127953,\"×Ľ×ł×¡×ª\":127954,\"ĠØ§ÙĦÙħÙĨØª\":127955,\"Ġolmad\":127956,\"×¨×Ľ×ĸ×Ļ\":127957,\"ĠÐ²ÑģÑĤÑĢ\":127958,\"ĠÐ¸ÑģÑģÐ»ÐµÐ´\":127959,\"ÑĤÐ²ÐµÑĢÐ¶\":127960,\"Ø¨Ø¯ÙĪ\":127961,\"ÐµÑĢÑĤ\":127962,\"ï»·\":127963,\"±ħ\":127964,\"à¸ªà¸±à¸¡à¸ŀà¸±à¸Ļà¸ĺà¹Į\":127965,\"à¸´à¹Īà¸Ļ\":127966,\"×¦×Ļ×ĳ\":127967,\"wiÄĻt\":127968,\"Ġì°¸\":127969,\"ĠzwiÄħz\":127970,\"Ø³Ø¨ÙĪØ¹\":127971,\"ãĥĥãĤ°\":127972,\"à¸Ľà¸¥à¸Ńà¸Ķ\":127973,\"à¸Ľà¸¥à¸Ńà¸Ķà¸łà¸±à¸¢\":127974,\"ãĤĤãĤĬ\":127975,\"ÙĤØ¯Ø³\":127976,\"Ġsprz\":127977,\"Ġsprzeda\":127978,\"Ġistedi\":127979,\"Ġkhu\":127980,\"ĠÐ´ÐµÐ½\":127981,\"ĠkoÅĦ\":127982,\"Ġ×ĳ×Ĺ×Ļ\":127983,\"à¹Ģà¸Ĺà¹īà¸²\":127984,\"×ķ×¡×Ļ×£\":127985,\"ãĥĭãĥ¥ãĥ¼\":127986,\"ĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤ\":127987,\"ĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤÐ°Ð²\":127988,\"à¹Ĥà¸Ł\":127989,\"Ã©v\":127990,\"ĠØ§ÙĦØµØŃ\":127991,\"ØµØŃØ§Ø¨\":127992,\"à¹Ģà¸Īà¹ĩà¸ļ\":127993,\"Ð²Ð»ÐµÐº\":127994,\"à¸§à¸±à¸ķ\":127995,\"à¸ĸà¸¸\":127996,\"ãģĵãģ¨ãģĮãģ§ãģįãģ¾ãģĻ\":127997,\"ÙĤÙĬÙĤÙĬ\":127998,\"×ķ×Ĺ×¨\":127999,\"ÑĭÑĪ\":128000,\"ĠÐ¾ÑĤÐ½Ð¾\":128001,\"ĠÐ¾ÑĤÐ½Ð¾ÑĪ\":128002,\"Ð¾Ð±Ð¸Ð»ÑĮ\":128003,\"ÙģØŃ\":128004,\"Ä±nt\":128005,\"Ä±ntÄ±\":128006,\"Ġ×ľ×ĳ×ĵ\":128007,\"íİĺìĿ´ì§Ģ\":128008,\"ãĥĬãĥ«\":128009,\"ĠÙħØ³Ø§Ø¡\":128010,\"×Ļ×ĺ×ĳ\":128011,\"ÑĮÐµÑĢ\":128012,\"ëĦ·\":128013,\"ÑĭÑĤÐ°\":128014,\"ĠÐ¾ÑĩÐµÑĢ\":128015,\"à¸Ķà¸·à¹Ī\":128016,\"à¸Ķà¸·à¹Īà¸¡\":128017,\"ĠNgh\":128018,\"ØªØ¹Ø¨\":128019,\"ÙĦØ§ÙĤØ§Øª\":128020,\"×ķ×ľ×ķ×Ĵ×Ļ×Ķ\":128021,\"ĠìĿ´ê²ĥ\":128022,\"Ġ×Ķ×ĳ×¨\":128023,\"ìľµ\":128024,\"à¹Ģà¸Ħà¸¥à¸·à¹Īà¸Ńà¸Ļ\":128025,\"ÙĩØ©\":128026,\"à¸Īà¸³à¹Ģà¸Ľà¹ĩà¸Ļ\":128027,\"å¤īãģĪ\":128028,\"wiÅĽcie\":128029,\"chod\":128030,\"chodzÄħ\":128031,\"Ð²ÑĢÐ¾\":128032,\"×ŀ×Ĺ×Ļ×¨\":128033,\"ĠyÄ±\":128034,\"ĠyÄ±ll\":128035,\"ì¡Į\":128036,\"à¹Ħà¸«à¸§\":128037,\"ãģªãģıãģª\":128038,\"ĠÐ·Ð°Ð²Ð¸Ñģ\":128039,\"ĠìĺĪìĪĺ\":128040,\"ÙģØ°\":128041,\"á»§ng\":128042,\"à¸ŀà¸¸à¸Ĺà¸ĺ\":128043,\"Ð·Ð½\":128044,\"layan\":128045,\"ãĤ¡\":128046,\"à¸ģà¹ĩà¸ķà¸²à¸¡\":128047,\"ĠsaÄŁlam\":128048,\"à¸£à¸ĵ\":128049,\"ĠÑģÐ¸ÑĤ\":128050,\"ĠÑģÐ¸ÑĤÑĥ\":128051,\"ĠØ§ÙĦØªÙĨ\":128052,\"×Ķ×ĸ\":128053,\"ĠØ·ÙĪÙĬÙĦ\":128054,\"taÅĤ\":128055,\"ĠgÃ¶rd\":128056,\"å¤īãĤı\":128057,\"ëĥ¥\":128058,\"à¸Ħà¹Īà¸Ńà¸¢\":128059,\"×Ĳ×ķ×ĺ\":128060,\"ëħĲ\":128061,\"ãĥ©ãĥ³ãĤ¹\":128062,\"à¸§à¸±à¸Ĵ\":128063,\"à¸§à¸±à¸Ĵà¸Ļ\":128064,\"ĠoluÅŁ\":128065,\"×¤×¢×ķ×ľ\":128066,\"ĠszczegÃ³ÅĤ\":128067,\"à¸Ħà¸²à¸ªà¸´\":128068,\"à¸Ħà¸²à¸ªà¸´à¹Ĥà¸Ļ\":128069,\"powied\":128070,\"ĠÑĤÐµÐ±\":128071,\"à¸«à¸Ļà¹Īà¸§à¸¢\":128072,\"ĠÐ¼Ð¸Ð»\":128073,\"ØŃÙĥ\":128074,\"à¸Ĺà¸Ķ\":128075,\"ĠÐ¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð»\":128076,\"ÅĤow\":128077,\"à¹Ģà¸ģà¸µà¸¢\":128078,\"ĠÑģÐ¾Ð²ÐµÑĢ\":128079,\"ãĤ©\":128080,\"à¸Ľà¸£à¸´\":128081,\"ĠÐ¸Ñİ\":128082,\"Ð½Ð°ÑĩÐµÐ½\":128083,\"ÑĢÐµÐ½Ð´\":128084,\"muÅŁtur\":128085,\"ĠÐ¿ÑĢÐ¾Ð´ÑĥÐº\":128086,\"Ð·Ð´\":128087,\"ÑıÑĤÐ¸\":128088,\"ÑıÑĤÐ¸Ñı\":128089,\"à¹Ģà¸¡à¸µà¸¢\":128090,\"Ø±Ø§ØªÙĬØ¬\":128091,\"ĠamacÄ±\":128092,\"×©×ķ×ľ\":128093,\"×©×ķ×ľ×Ĺ\":128094,\"à¸ªà¸°à¸Ńà¸²\":128095,\"à¸ªà¸°à¸Ńà¸²à¸Ķ\":128096,\"×¤×Ĵ×¢\":128097,\"Ø¹Ø¨Ø©\":128098,\"dÄ±n\":128099,\"íħĶ\":128100,\"Ġ×ŀ×©×Ĺ×§\":128101,\"Ġfiyat\":128102,\"ĠÐ·Ð°Ñı\":128103,\"ĠÐ·Ð°ÑıÐ²\":128104,\"à¹Ĥà¸«à¸¥\":128105,\"à¹Ĥà¸«à¸¥à¸Ķ\":128106,\"à¸ģà¸£à¸¸à¸ĩà¹Ģà¸Ĺà¸ŀ\":128107,\"×¦×Ļ×Ļ×Ł\":128108,\"ìļ±\":128109,\"ÙħØ¨\":128110,\"ÙħØ¨Ø§Ø¯\":128111,\"landÄ±r\":128112,\"ĠÐ²ÐµÑģÑĮ\":128113,\"ĠhÃ¼k\":128114,\"ĠÐĴÐ¾Ð·\":128115,\"ÑĩÐ¸ÑĤÑĭÐ²Ð°\":128116,\"à¸§à¸¥\":128117,\"×ķ×¦×¢\":128118,\"à¸Ĥà¸ĵà¸°à¸Ĺà¸µà¹Ī\":128119,\"ĠaÅŁaÄŁÄ±\":128120,\"×ľ×Ĳ×ķ×ŀ×Ļ\":128121,\"trzym\":128122,\"Ã¤ÃŁig\":128123,\"owoÅĽci\":128124,\"ãģĿãĤĤ\":128125,\"ĠrozwiÄħz\":128126,\"ĠgÅĤÃ³wn\":128127,\"Ð¼Ð¾Ð½ÑĤ\":128128,\"×ŀ×ķ×ŀ\":128129,\"ĠÑģÑĤÐ°Ð½\":128130,\"ÙĦØ§ÙĤØ©\":128131,\"prowad\":128132,\"prowadzi\":128133,\"ĠÑģÐ¾ÑģÑĤÐ¾Ñı\":128134,\"×Ļ×Ĳ×ķ×ª\":128135,\"rÄ±\":128136,\"gÄ±\":128137,\"ãĥĳãĥĳ\":128138,\"ĠÐ½Ð°Ð»Ð¸Ñĩ\":128139,\"×Ķ×¦×¢\":128140,\"Ġ×ł×Ķ\":128141,\"à¸Ħà¸±à¸ļ\":128142,\"Ø¹Ø±Ø§Ø¶\":128143,\"Ð¸Ð¶\":128144,\"ÙĩØ§Ø¦ÙĬ\":128145,\"ãĤīãģı\":128146,\"Ð¾Ð¶ÐµÑĤ\":128147,\"ĠÐ¾Ð±Ð¾ÑĢ\":128148,\"ĠÐ¾Ð±Ð¾ÑĢÑĥÐ´\":128149,\"Ø£Ø³ÙĦ\":128150,\"à¹ĩà¸Ķ\":128151,\"ÑĢÑĥÑĤ\":128152,\"Ø¯ÙĬÙħÙĤ\":128153,\"Ø¯ÙĬÙħÙĤØ±Ø§\":128154,\"Ġjeste\":128155,\"×ķ×ķ×Ļ×¨\":128156,\"×ĳ×ĵ×Ļ×§\":128157,\"Ð´ÐµÑĢÐ¶Ð¸Ð²Ð°\":128158,\"ãģĬãģı\":128159,\"ewnÄĻtr\":128160,\"ewnÄĻtrzn\":128161,\"à¸ŀà¸¤\":128162,\"Ġ×Ĳ×ķ×Ķ\":128163,\"×ª×Ĺ×ķ×©\":128164,\"Ġzob\":128165,\"Ð´ÑĥÐ¼\":128166,\"ĠÑģÑĭ\":128167,\"ÙĬØ±Ø§\":128168,\"ĠwiÄĻks\":128169,\"à¹ģà¸ķà¸ģà¸ķà¹Īà¸²à¸ĩ\":128170,\"lararas\":128171,\"lararasÄ±\":128172,\"íĺĢ\":128173,\"ëī´\":128174,\"×ķ×Ĵ×ľ\":128175,\"ĠÐ¾ÑĤÐ¼ÐµÑĤ\":128176,\"ĠÑĢÐ°Ð½\":128177,\"ØªÙĥÙĦ\":128178,\"Ð¸ÑĤÐµÐ»ÑĮÐ½\":128179,\"à¸Ľà¸£à¸°à¸§à¸±\":128180,\"à¸Ľà¸£à¸°à¸§à¸±à¸ķà¸´\":128181,\"ìŀĸ\":128182,\"Ð¼Ð¾Ð¶Ð½Ð¾\":128183,\"pieczeÅĦ\":128184,\"pieczeÅĦst\":128185,\"ëª»\":128186,\"ìĬ¨\":128187,\"×ŀ×¡×ŀ\":128188,\"á»¦\":128189,\"à¸¨à¸´\":128190,\"à¸¨à¸´à¸¥\":128191,\"à¸¨à¸´à¸¥à¸Ľ\":128192,\"ĠÅļw\":128193,\"ãĥĥãĤ·ãĥ§ãĥ³\":128194,\"unitÃł\":128195,\"Ġmieszka\":128196,\"ĠmieszkaÅĦ\":128197,\"przed\":128198,\"przedsi\":128199,\"przedsiÄĻb\":128200,\"przedsiÄĻbior\":128201,\"à¸Ľà¸£à¸°à¸ªà¸´à¸Ĺà¸ĺà¸´\":128202,\"à¸Ľà¸£à¸°à¸ªà¸´à¸Ĺà¸ĺà¸´à¸łà¸²à¸ŀ\":128203,\"à¸¢à¹Ī\":128204,\"ìķĻ\":128205,\"à¸£à¸§à¸Ķ\":128206,\"à¸£à¸§à¸Ķà¹Ģà¸£à¹ĩà¸§\":128207,\"å½ĵãģŁãĤĬ\":128208,\"Ã¤lle\":128209,\"ÑĥÐµÑĤÑģÑı\":128210,\"Ã£n\":128211,\"ëłµ\":128212,\"thÃ¨\":128213,\"ãĤĴåĪ©çĶ¨\":128214,\"ìµľ\":128215,\"íĵ¨\":128216,\"à¸Ĺà¸±à¸ļ\":128217,\"à¸²à¸Ħà¸¡\":128218,\"ãģĩ\":128219,\"ëĤĮ\":128220,\"à¹Ģà¸Ľà¸¥à¹Īà¸²\":128221,\"â¦\":128222,\"ë¾\":128223,\"êĢ\":128224,\"êĩ\":128225,\"â¡\":128226,\"ðŁŁ\":128227,\"ãĲ\":128228,\"âº\":128229,\"áŃ\":128230,\"áĻ\":128231,\"áĵ\":128232,\"á²\":128233,\"ðĵı\":128234,\"á¬\":128235,\"â¯\":128236,\"ä¨\":128237,\"êĿ\":128238,\"ê«\":128239,\"ðĳ\":128240,\"ðĵĥ\":128241,\"ðĿħ\":128242,\"<unk\":128243,\"<unk>\":128244,\"<s>\":128245,\"</s\":128246,\"</s>\":128247,\"ĠØ¹ÙĦÙī\":128248,\"Ġmá»Ļt\":128249,\"Ġvá»Ľi\":128250,\"ĠngÆ°á»Ŀi\":128251,\"ĠØ¥ÙĦÙī\":128252,\"Ġnhá»¯ng\":128253,\"Ġthá»ĥ\":128254,\"Ġ×Ĳ×ķ\":128255,\"Ġ×¢×Ŀ\":128256,\"Ø§Ùĭ\":128257,\"Ġà¹ģà¸¥à¸°\":128258,\"ĠÙĦØ§\":128259,\"ĠnhÆ°\":128260,\"ĠØ§ÙĦØªÙĬ\":128261,\"Ġ×Ķ×ķ×Ĳ\":128262,\"ĠÄĳáº¿n\":128263,\"ĠØ£ÙĪ\":128264,\"Ġvá»ģ\":128265,\"ĠlÃłm\":128266,\"Ġsáº½\":128267,\"ĠcÅ©ng\":128268,\"Ġá»Ł\":128269,\"ĠÄĳÃ³\":128270,\"Ġnhiá»ģu\":128271,\"Ġtáº¡i\":128272,\"ĠtrÃªn\":128273,\"Ġ×Ĵ×Ŀ\":128274,\"ĠnhÃł\":128275,\"Ġ×Ľ×Ļ\":128276,\"Ġsá»±\":128277,\"ĠÄĳáº§u\":128278,\"Ġbá»ĭ\":128279,\"ĠÙĩØ°Ø§\":128280,\"Ġnháº¥t\":128281,\"Ġpháº£i\":128282,\"Ġhiá»ĩn\":128283,\"Ġdá»¥ng\":128284,\"ĠÄĳá»Ļng\":128285,\"ĠØ§ÙĦÙĦÙĩ\":128286,\"ĠØĮ\":128287,\"ĠÙĥÙĦ\":128288,\"Ġviá»ĩc\":128289,\"ĠnÄĥm\":128290,\"ĠthÃ¬\":128291,\"Ġhá»įc\":128292,\"ĠÙĪØª\":128293,\"tÃ©\":128294,\"ĠØ§ÙĨ\":128295,\"ĠtÃ´i\":128296,\"Ġ×Ĳ×ł×Ļ\":128297,\"Ġ×ľ×Ļ\":128298,\"Ġ×ŀ×ķ\":128299,\"ĠngÃły\":128300,\"ĠnÆ°á»Ľc\":128301,\"Ġ×Ķ×Ļ×Ĳ\":128302,\"Ġ×Ĳ×Ļ\":128303,\"ĠhÆ¡n\":128304,\"ĠÙĩØ°Ùĩ\":128305,\"ĠÙĪÙĬ\":128306,\"ĠØ§ÙĦØ°ÙĬ\":128307,\"Ġ×ķ×ŀ\":128308,\"ĠgiÃ¡\":128309,\"ĠnhÃ¢n\":128310,\"ĠchÃŃnh\":128311,\"ĠmÃ¬nh\":128312,\"ĠÐĿÐ°\":128313,\"Ġtháº¿\":128314,\"Ġ×Ļ×ķ×ª×¨\":128315,\"Ġ×Ĳ×Ŀ\":128316,\"ĠnÃªn\":128317,\"Ġhá»£\":128318,\"Ġhá»£p\":128319,\"ĠcÃ²n\":128320,\"ĠÙĩÙĪ\":128321,\"ĠcÆ¡\":128322,\"Ġráº¥t\":128323,\"ĠViá»ĩt\":128324,\"ĠØ¨Ø¹Ø¯\":128325,\"Ġ×©×Ļ\":128326,\"Ġthá»Ŀi\":128327,\"ĠcÃ¡ch\":128328,\"ĠÄĳá»ĵng\":128329,\"ĠÐ½Ð¾\":128330,\"ĠtrÆ°á»Ŀng\":128331,\"ØŁ\":128332,\"ĠÄĳá»ĭnh\":128333,\"ĠÄĳiá»ģu\":128334,\"×Ļ×Ļ×Ŀ\":128335,\"Ġthá»±c\":128336,\"nÄ±n\":128337,\"ĠhÃ¬nh\":128338,\"ĠnÃ³i\":128339,\"ĠcÃ¹ng\":128340,\"Ġ×Ķ×Ķ\":128341,\"ĠØ¥ÙĨ\":128342,\"Ġ×Ĳ×ĳ×ľ\":128343,\"ĠnhÆ°ng\":128344,\"Ġbiáº¿t\":128345,\"ĠÐ¶Ðµ\":128346,\"ĠchÃºng\":128347,\"ĠÄĳang\":128348,\"ĠØ°ÙĦÙĥ\":128349,\"ĠlÃªn\":128350,\"ĠkhÃ¡ch\":128351,\"ĠnÃło\":128352,\"Ġsá»Ń\":128353,\"ĠkhÃ¡c\":128354,\"Ġë°ı\":128355,\"ĠlÃ½\":128356,\"×Ļ×Ļ\":128357,\"ĠÄĳÃ¢y\":128358,\"Ġ×ľ×ŀ\":128359,\"Ġcáº§n\":128360,\"ĠtrÃ¬nh\":128361,\"ĠphÃ¡t\":128362,\"ãģ«ãĤĤ\":128363,\"Ð¿Ð¾\":128364,\"ĠnÄĥng\":128365,\"Ġbá»Ļ\":128366,\"Ġvá»¥\":128367,\"ĠÄĳá»Ļ\":128368,\"ÑĩÐµ\":128369,\"ĠnháºŃn\":128370,\"ĠtrÆ°á»Ľc\":128371,\"Ġ×¢×ĵ\":128372,\"ĠhÃłnh\":128373,\"ĠØ®ÙĦØ§ÙĦ\":128374,\"ĠlÆ°á»£ng\":128375,\"Ġcáº¥p\":128376,\"Ġtá»±\":128377,\"ĠvÃ¬\":128378,\"ĠtÆ°\":128379,\"Ġcháº¥t\":128380,\"Ġ×Ľ×ŀ×ķ\":128381,\"ĠgÃ¬\":128382,\"Ġ×©×ł\":128383,\"Ġtáº¿\":128384,\"×ª×ķ\":128385,\"Ġnghiá»ĩp\":128386,\"Ġmáº·t\":128387,\"ĠÙĥÙħØ§\":128388,\"Ġ×ĳ×Ļ×Ł\":128389,\"Ġ×¨×§\":128390,\"Ġtháº¥y\":128391,\"ĠmÃ¡y\":128392,\"ĠÙģÙī\":128393,\"ĠdÃ¢n\":128394,\"Ġ×Ĳ×Ĺ×ĵ\":128395,\"ĠtÃ¢m\":128396,\"Ġ×Ľ×ļ\":128397,\"Ġ×ľ×ķ\":128398,\"Ð²Ð¾\":128399,\"ĠtÃ¡c\":128400,\"ĠtoÃłn\":128401,\"ĠÙĪÙħ\":128402,\"Ġkáº¿t\":128403,\"Ġà¸«à¸£à¸·à¸Ń\":128404,\"ĠÙĪØ§ÙĦÙħ\":128405,\"ĠÄĳiá»ĥm\":128406,\"Ġ×ĸ×ķ\":128407,\"Ġ×ĳ×ķ\":128408,\"×Ľ×ķ×ª\":128409,\"Ġhá»Ļi\":128410,\"Ġbáº±ng\":128411,\"ØªÙĩØ§\":128412,\"Ġ×Ľ×ĵ×Ļ\":128413,\"Ġ×Ķ×Ŀ\":128414,\"Ġxuáº¥t\":128415,\"ĠÙĤØ¯\":128416,\"Ġbáº£o\":128417,\"Ġtá»ĳt\":128418,\"ĠtÃ¬nh\":128419,\"ĠÙĩÙĬ\":128420,\"ĠÄĳá»ĳi\":128421,\"Ġthiáº¿t\":128422,\"Ġhiá»ĩu\":128423,\"Ġtiáº¿p\":128424,\"Ġtáº¡o\":128425,\"×ª×Ķ\":128426,\"Ġchá»§\":128427,\"oÅĽÄĩ\":128428,\"ĠgiÃº\":128429,\"ĠgiÃºp\":128430,\"ĠÃ½\":128431,\"Ġquáº£\":128432,\"Ġloáº¡i\":128433,\"ĠcÃ´\":128434,\"ĠÃ´\":128435,\"ĠÃ´ng\":128436,\"Ġ×Ķ×ķ\":128437,\"ĠØ§ÙĦÙĬÙĪÙħ\":128438,\"ĠtÃŃnh\":128439,\"Ð³Ð°\":128440,\"ĠphÃ²ng\":128441,\"ĠÄĥn\":128442,\"ĠØ¹Ø§Ùħ\":128443,\"Ġvá»ĭ\":128444,\"larÄ±nÄ±\":128445,\"rÃŃa\":128446,\"Ġtá»Ľi\":128447,\"ĠÄĳÆ°á»Ŀng\":128448,\"Ġgiá»Ľi\":128449,\"Ġbáº£n\":128450,\"Ġcáº§u\":128451,\"ĠnhiÃªn\":128452,\"Ġbá»ĩnh\":128453,\"ĠthÆ°á»Ŀng\":128454,\"Ġ×Ĳ×Ļ×Ł\":128455,\"ĠÄĳá»ģ\":128456,\"Ġhá»ĩ\":128457,\"Ġ×Ļ×©×¨×Ĳ×ľ\":128458,\"ĠquÃ¡\":128459,\"ĠÐĹÐ°\":128460,\"ãģ®ãģ§ãģĻãģĮ\":128461,\"ĠÐŁÑĢÐ¸\":128462,\"Ġpháº§n\":128463,\"ĠÙĪÙĦØ§\":128464,\"Ġlá»Ľn\":128465,\"Ġtrá»ĭ\":128466,\"Ġcáº£m\":128467,\"ĠÐ¼Ð¾\":128468,\"ĠdÃ¹ng\":128469,\"ĠØ§ÙĦÙī\":128470,\"ĠØ¹ÙĦÙĬÙĩ\":128471,\"ĠìŀĪìĬµëĭĪëĭ¤\":128472,\"ÙĬÙĤ\":128473,\"ĠÙĤØ¨ÙĦ\":128474,\"Ġhoáº·c\":128475,\"ĠØŃÙĬØ«\":128476,\"Ġà¸Ĺà¸µà¹Ī\":128477,\"ĠØºÙĬØ±\":128478,\"ĠÄĳáº¡i\":128479,\"Ġsá»ĳng\":128480,\"Ð½ÑĭÐ¼Ð¸\":128481,\"Ġthá»©c\":128482,\"Ġ×¤×Ļ\":128483,\"ĠÄĳiá»ĩn\":128484,\"ãģªãģĭãģ£ãģŁ\":128485,\"Ġgiáº£i\":128486,\"Ġváº«n\":128487,\"ĠÐ¸Ñħ\":128488,\"ĠÃ¶nce\":128489,\"ĠváºŃy\":128490,\"Ġmuá»ĳn\":128491,\"Ġáº£nh\":128492,\"à¹ĥà¸Ļà¸ģà¸²à¸£\":128493,\"ĠQuá»ĳc\":128494,\"Ġkáº¿\":128495,\"×ł×Ĳ\":128496,\"Ġ×¡×Ļ\":128497,\"ĠyÃªu\":128498,\"ãģ®ãģĭ\":128499,\"ĠÄĳáº¹\":128500,\"ĠÄĳáº¹p\":128501,\"Ġchá»©c\":128502,\"ĠyÄ±l\":128503,\"ĠTÃ¼rkiye\":128504,\"dÃ©\":128505,\"ĠÙĤØ§ÙĦ\":128506,\"Ġdá»ĭch\":128507,\"ĠolduÄŁu\":128508,\"Ġchá»įn\":128509,\"ĠØªÙħ\":128510,\"à¸«à¸Ļà¸¶à¹Īà¸ĩ\":128511,\"ãģķãĤĮãģŁ\":128512,\"ĠphÃ¡p\":128513,\"ìĽĶ\":128514,\"Ġtiá»ģn\":128515,\"ãģĹãģ¾ãģĹãģŁ\":128516,\"Ġ×©×ľ×Ĳ\":128517,\"ÙĦØ©\":128518,\"Ġ×ľ×¤×ł×Ļ\":128519,\"Ġ×ĳ×Ļ×ª\":128520,\"ĠHÃł\":128521,\"ĠØŃØª\":128522,\"ĠØŃØªÙī\":128523,\"Ġ×¢×ķ×ĵ\":128524,\"ĠnÃ³\":128525,\"ĠthÃ¡ng\":128526,\"à¹Ģà¸¥à¸·à¸Ńà¸ģ\":128527,\"×¨×Ķ\":128528,\"ĠtÄĥng\":128529,\"ĠcÃ¡i\":128530,\"Ġtriá»ĥn\":128531,\"Ġ×Ĳ×ķ×ª×ķ\":128532,\"ìłģìĿ¸\":128533,\"ĠCÃ´ng\":128534,\"Ġ×ľ×Ķ×Ļ×ķ×ª\":128535,\"ĠÐ³Ð¾Ð´Ð°\":128536,\"Ð¸Ñİ\":128537,\"ĠØ¨Ø¹Ø¶\":128538,\"Ġà¸ģà¸²à¸£\":128539,\"èī¯ãģĦ\":128540,\"ÙĪØª\":128541,\"ĠliÃªn\":128542,\"ĠÐĿÐ¾\":128543,\"ĠÐĿÐµ\":128544,\"çļĦãģª\":128545,\"ĠÙħØª\":128546,\"ĠÑĤÐ°ÐºÐ¶Ðµ\":128547,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐµ\":128548,\"Ġ×Ļ×ĵ×Ļ\":128549,\"Ġtrá»įng\":128550,\"ãĤµãĤ¤ãĥĪ\":128551,\"ìłģìľ¼ë¡ľ\":128552,\"ĠtáºŃp\":128553,\"Ġ×©×ľ×Ļ\":128554,\"íķĺê²Į\":128555,\"ĠtÃłi\":128556,\"ĠÐ¯\":128557,\"Ġrá»ĵi\":128558,\"Ø§Ùĥ\":128559,\"ĠthÆ°Æ¡ng\":128560,\"Ġ×Ķ×ĸ×Ķ\":128561,\"ĠÙĪÙħÙĨ\":128562,\"à¸Ĺà¸µà¹Īà¸¡à¸µ\":128563,\"Ġcuá»Ļc\":128564,\"ĠbÃ¼yÃ¼k\":128565,\"ãģ¨ãģĭ\":128566,\"Ġ×ĳ×Ļ×ķ×ª×¨\":128567,\"Ġláº§n\":128568,\"ĠgÃ¶re\":128569,\"Ġtrá»Ł\":128570,\"Ġ×ĺ×ķ×ĳ\":128571,\"ÑĤÑĮÑģÑı\":128572,\"Ġthá»ĳng\":128573,\"Ġ×Ľ×©\":128574,\"ĠtiÃªu\":128575,\"Ġ×ŀ×Ĳ×ķ×ĵ\":128576,\"ØĽ\":128577,\"kÄħ\":128578,\"Ġà¹ĥà¸Ļ\":128579,\"Ġváº¥n\":128580,\"Ġ×©×ľ×ķ\":128581,\"ĠÄĳá»ģu\":128582,\"ÙģØª\":128583,\"Ġê²ĥìĿ´\":128584,\"ĠhÃ³a\":128585,\"ĠØ§ÙĦØ¹Ø§Ùħ\":128586,\"ĠÙĬÙĪÙħ\":128587,\"ÐºÐ¾Ð¹\":128588,\"Ġbiá»ĩt\":128589,\"ÑģÑĤÐ¾\":128590,\"Ġ×Ķ×Ļ×ķ\":128591,\"à¸Ĺà¸µà¹Īà¸Īà¸°\":128592,\"Ġ×ĵ×Ļ\":128593,\"Ġ×Ĳ×ļ\":128594,\"ĠÃ¡n\":128595,\"ØµÙĪØ±\":128596,\"ĠtrÃŃ\":128597,\"ĠÐŁÑĢÐ¾\":128598,\"Ġlá»±c\":128599,\"ãģĹãģ¦ãģĦãģ¾ãģĻ\":128600,\"ĠbÃłi\":128601,\"Ġ×ĸ×Ĳ×ª\":128602,\"ĠbÃ¡o\":128603,\"à¸ļà¸Ļ\":128604,\"ĠëĮĢíķľ\":128605,\"Ġtiáº¿\":128606,\"Ġtiáº¿ng\":128607,\"ĠbÃªn\":128608,\"ãģķãĤĮãĤĭ\":128609,\"siÃ³n\":128610,\"ĠtÃ¬m\":128611,\"×¢×ķ\":128612,\"mÃ©\":128613,\"Ð½Ð¸Ñı\":128614,\"ãģ»ãģ©\":128615,\"Ġà¹Ģà¸ŀà¸£à¸²à¸°\":128616,\"Ø¨Ø©\":128617,\"Ġë¶Ħ\":128618,\"Ġ×Ĳ×ĸ\":128619,\"à¸Ĺà¹Īà¸²à¸Ļ\":128620,\"×ª×Ŀ\":128621,\"ĠthÃªm\":128622,\"Ġhoáº¡t\":128623,\"yÄ±\":128624,\"×ĸ×ķ\":128625,\"Ġgiá»Ŀ\":128626,\"ĠbÃ¡n\":128627,\"à¸Ĥà¸²à¸¢\":128628,\"ÑĩÐ°\":128629,\"Ġà¹Ĩ\":128630,\"ĠØ§ÙĦÙħØª\":128631,\"ĠÐ¾ÑĩÐµÐ½ÑĮ\":128632,\"Ġbáº¥t\":128633,\"Ġtráº»\":128634,\"ÑĤÑĢ\":128635,\"ĠØ£ÙĨÙĩ\":128636,\"ĠØ«Ùħ\":128637,\"Ġ×Ľ×ŀ×Ķ\":128638,\"ĠkhÃ³\":128639,\"Ġráº±ng\":128640,\"ĠÙĪÙģÙĬ\":128641,\"Ð½Ð¸Ð¹\":128642,\"ĠhoÃłn\":128643,\"tÃ³\":128644,\"Ġ×Ĳ×©×¨\":128645,\"ĠìĥĿê°ģ\":128646,\"ÑģÐ°\":128647,\"Ġ×Ľ×ĳ×¨\":128648,\"ĠÑįÑĤÐ¾Ð¼\":128649,\"larÄ±nÄ±n\":128650,\"ĠchÆ°a\":128651,\"Ð·Ð¸\":128652,\"Ġdáº«n\":128653,\"ĠÐļÐ°Ðº\":128654,\"Ø¬ÙĪ\":128655,\"ĠÐ±ÑĭÐ»Ð¾\":128656,\"ĠÙĬØª\":128657,\"nÄ±\":128658,\"ÅĤam\":128659,\"ĠÙĪÙĩÙĪ\":128660,\"×ĳ×ķ\":128661,\"Ð¿Ð¸\":128662,\"×¨×ª\":128663,\"Ġquá»ĳc\":128664,\"Ð¶Ð´\":128665,\"ĠÄĳÆ¡n\":128666,\"ÙĥØªØ¨\":128667,\"Ġmáº¯t\":128668,\"à¸£à¸°à¸ļ\":128669,\"à¸£à¸°à¸ļà¸ļ\":128670,\"ĠÙĥØ§ÙĨØª\":128671,\"ĠthÃ¢n\":128672,\"à¸ªà¸´à¸Ļà¸Ħà¹īà¸²\":128673,\"×Ĵ×Ļ\":128674,\"ĠphÆ°Æ¡ng\":128675,\"à¹Ħà¸¡à¹Īà¹Ħà¸Ķà¹ī\":128676,\"ĠìĦ±\":128677,\"ĠCÃ¡c\":128678,\"Ġ×Ķ×ŀ×ķ\":128679,\"ĠÑĤÐµÐ¼\":128680,\"Ġ×ĵ×ķ\":128681,\"à¸Ńà¸°à¹Ħà¸£\":128682,\"ĠvÄĥn\":128683,\"ãģªãģ®ãģ§\":128684,\"ĠNá»Ļi\":128685,\"Ġ×¢×ķ\":128686,\"ãĤīãĤĮãĤĭ\":128687,\"ĠsÃ¡ng\":128688,\"ĠgÃ¶ster\":128689,\"ãģĵãģ¨ãĤĴ\":128690,\"ĠtarafÄ±ndan\":128691,\"ĠÐ¼Ð°\":128692,\"ĠÐ¿Ð¾ÑģÐ»Ðµ\":128693,\"Ġ×ł×Ļ×ª\":128694,\"Ġ×ł×Ļ×ª×Ł\":128695,\"ĠÐ»ÐµÑĤ\":128696,\"Ġ×ľ×ł×ķ\":128697,\"ÑģÑģ\":128698,\"Ġ×Ļ×ķ\":128699,\"Ð¿Ðµ\":128700,\"ĠÙĪÙĦÙĥ\":128701,\"ĠÙĪÙĦÙĥÙĨ\":128702,\"ĠngoÃłi\":128703,\"ĠÄĳá»ĭa\":128704,\"rzÄħd\":128705,\"dziaÅĤ\":128706,\"ĠÙħØ±\":128707,\"Ð¸ÑĤÑĮÑģÑı\":128708,\"Ġ×Ĳ×Ĺ×¨×Ļ\":128709,\"Ġ×ľ×Ľ×ľ\":128710,\"à¸Ĥà¹īà¸Ńà¸¡\":128711,\"à¸Ĥà¹īà¸Ńà¸¡à¸¹à¸¥\":128712,\"ĠÐ±Ð¾Ð»\":128713,\"ĠÐ±Ð¾Ð»ÐµÐµ\":128714,\"Ø¬ÙħØ¹\":128715,\"Ð»ÐµÑĤ\":128716,\"Ġlá»ĭch\":128717,\"ĠÙħØ«ÙĦ\":128718,\"Ġê·¸ë¦¬ê³ł\":128719,\"Ġthá»©\":128720,\"ĠdeÄŁil\":128721,\"ÙĪØŃ\":128722,\"Ġ×©×ľ×ļ\":128723,\"ĠÙħØŃÙħØ¯\":128724,\"Ġnáº¿u\":128725,\"ĠÄĳá»ķi\":128726,\"Ġvá»«a\":128727,\"Ġmá»įi\":128728,\"ĠÐ¾Ð½Ð¸\":128729,\"ĠlÃºc\":128730,\"ĠÙĬÙĥÙĪÙĨ\":128731,\"ì§Ī\":128732,\"Ġ×©×ľ×ł×ķ\":128733,\"ĠÐĶÐ¾\":128734,\"Ġ×©×ł×Ļ\":128735,\"à¸¥à¸´\":128736,\"×Ĳ×¤×©×¨\":128737,\"Ġsá»©c\":128738,\"ê¶Į\":128739,\"Ġá»©ng\":128740,\"à¹Ħà¸¡à¹Īà¸¡à¸µ\":128741,\"Ø·ÙĦØ¨\":128742,\"ĠÑĩÐµÐ¼\":128743,\"ĠchuyÃªn\":128744,\"ĠthÃŃch\":128745,\"Ġ×ķ×Ļ\":128746,\"íķ©\":128747,\"ĠÙħØµØ±\":128748,\"Ð´Ð¾\":128749,\"ĠÄĳáº¥t\":128750,\"Ġcháº¿\":128751,\"à¸Ĭà¸·à¹Īà¸Ń\":128752,\"Ġìĭł\":128753,\"ĠØ¥Ø°Ø§\":128754,\"ĠØ±Ø¦ÙĬØ³\":128755,\"Ġ×©×Ļ×©\":128756,\"Ġgiáº£m\":128757,\"ÑģÐºÐ°\":128758,\"larÄ±nda\":128759,\"Ġsá»Ł\":128760,\"ĠtÃŃch\":128761,\"ĠÙĦÙĥÙĨ\":128762,\"ĠØ¨Ùħ\":128763,\"×¢×ķ×ĳ\":128764,\"×¢×ķ×ĳ×ĵ\":128765,\"ÅĤÄħcz\":128766,\"larÄ±na\":128767,\"Ġ×©×Ŀ\":128768,\"ĠÙĦØª\":128769,\"Ġ×©×Ķ×ķ×Ĳ\":128770,\"tÃ³w\":128771,\"Ġëĭ¤ë¥¸\":128772,\"ĠØ£ÙĥØ«Ø±\":128773,\"ãģ®ãģ§ãģĻ\":128774,\"×Ľ×Ļ×Ŀ\":128775,\"ĠolduÄŁunu\":128776,\"ãģĭãģª\":128777,\"ãĤĤãģĨ\":128778,\"ÙĬØŃ\":128779,\"ĠnhÃ¬n\":128780,\"Ġnghá»ĩ\":128781,\"ãģ«ãģªãģ£ãģ¦\":128782,\"Ð¿Ð°\":128783,\"Ġquyáº¿t\":128784,\"ÙĦÙĤ\":128785,\"tÃ¡\":128786,\"ĠluÃ´n\":128787,\"ĠÄĳáº·c\":128788,\"Ġ×Ĳ×¨\":128789,\"Ġtuá»ķi\":128790,\"sÃ£o\":128791,\"ìĻ¸\":128792,\"Ø±Ø¯\":128793,\"ĠØ¨ÙĩØ§\":128794,\"Ġ×Ķ×Ļ×ķ×Ŀ\":128795,\"×ķ×ķ×Ļ\":128796,\"ãģ§ãģĻãģŃ\":128797,\"ĠÑĤÐ¾Ð³Ð¾\":128798,\"Ġthá»§\":128799,\"ãģĹãģŁãģĦ\":128800,\"Ø±ÙĤ\":128801,\"Ġbáº¯t\":128802,\"Ð³Ñĥ\":128803,\"Ġtá»Ń\":128804,\"ÑĪÐ°\":128805,\"Ġà¸Ľà¸µ\":128806,\"Ġ×Ķ×Ĳ×Ŀ\":128807,\"íı¬\":128808,\"Å¼a\":128809,\"Ġ×Ĳ×ª×Ķ\":128810,\"Ġná»Ļi\":128811,\"ĠphÃŃ\":128812,\"ĠÅŁekilde\":128813,\"Ġlá»Ŀi\":128814,\"dÄ±ÄŁÄ±\":128815,\"Ġ×Ľ×Ĳ×Ł\":128816,\"ĠtÃ¼m\":128817,\"Ġmáº¡nh\":128818,\"ĠMá»¹\":128819,\"ãģĿãĤĵãģª\":128820,\"Ġnhá»ı\":128821,\"ãģªãģĮãĤī\":128822,\"ĠbÃ¬nh\":128823,\"Ä±p\":128824,\"à¸ŀà¸²\":128825,\"ĠÄĳÃ¡nh\":128826,\"ĠÙĪÙĦ\":128827,\"×¨×ķ×ª\":128828,\"Ġ×Ĳ×Ļ×ļ\":128829,\"Ġchuyá»ĥn\":128830,\"ÙĥØ§\":128831,\"ãĤĮãĤĭ\":128832,\"à¹ģà¸¡à¹Ī\":128833,\"ãĤĪãģı\":128834,\"ĠÙĪÙĤØ¯\":128835,\"íĸĪëĭ¤\":128836,\"ĠnÆ¡i\":128837,\"ãģ«ãĤĪãģ£ãģ¦\":128838,\"Ġviáº¿t\":128839,\"Ġà¹Ģà¸ŀà¸·à¹Īà¸Ń\":128840,\"ëĲĺëĬĶ\":128841,\"Ø§Ø¯ÙĬ\":128842,\"ĠÙģØ¥ÙĨ\":128843,\"ì¦Ŀ\":128844,\"ĠÄĳáº·t\":128845,\"ĠhÆ°á»Ľng\":128846,\"ĠxÃ£\":128847,\"ĠÃ¶nemli\":128848,\"ãģłãģ¨\":128849,\"Ġmáº¹\":128850,\"Ġ×ĳ×Ļ\":128851,\"Ġ×ĵ×ĳ×¨\":128852,\"ĠváºŃt\":128853,\"ĠÄĳáº¡o\":128854,\"Ġdá»±ng\":128855,\"ĠÑĤÐ¾Ð¼\":128856,\"ĠÙģÙĬÙĩØ§\":128857,\"ĠØ¬ÙħÙĬØ¹\":128858,\"ĠthuáºŃt\":128859,\"stÄĻp\":128860,\"Ġtiáº¿t\":128861,\"Ø´ÙĬ\":128862,\"ĠÐµÑīÐµ\":128863,\"ãģĻãĤĭãģ¨\":128864,\"ĠmÃłu\":128865,\"ĠÑįÑĤÐ¾Ð³Ð¾\":128866,\"ĠvÃ´\":128867,\"ĠÐŃÑĤÐ¾\":128868,\"ĠtháºŃt\":128869,\"Ġná»¯a\":128870,\"Ġbiáº¿n\":128871,\"Ġná»¯\":128872,\"Ġ×ľ×Ľ×Ŀ\":128873,\"×Ļ×Ļ×Ł\":128874,\"ĠØ³Øª\":128875,\"ĠÐŀÑĤ\":128876,\"Ġphá»¥\":128877,\"ê¹Įì§Ģ\":128878,\"Ġ×ľ×ļ\":128879,\"Ġká»³\":128880,\"à¹ĥà¸Ħà¸£\":128881,\"ĠgÃ¢y\":128882,\"ĠÙĦÙĦÙħ\":128883,\"Ġtá»¥c\":128884,\"ØªÙĬÙĨ\":128885,\"Ġtrá»£\":128886,\"Ġ×ľ×¤×Ļ\":128887,\"Ġbá»ĳ\":128888,\"ĠÐļÐ°\":128889,\"ĠÄĳÃ¬nh\":128890,\"owÄħ\":128891,\"sÄ±nda\":128892,\"Ġkhiáº¿n\":128893,\"sÄ±z\":128894,\"ĠÐºÐ¾Ð³Ð´Ð°\":128895,\"×¡×ľ\":128896,\"ĠÐ±ÑĭÐ»\":128897,\"à¸Ļà¹īà¸Ńà¸¢\":128898,\"Ð¾Ð±ÑĢÐ°Ð·\":128899,\"Ġê²ĥìĿ´ëĭ¤\":128900,\"ëĵ¤ìĿĢ\":128901,\"ãģ¸ãģ®\":128902,\"Ġà¹Ģà¸¡à¸·à¹Īà¸Ń\":128903,\"Ġphá»¥c\":128904,\"Ġ×Ĺ×ľ×§\":128905,\"Ġháº¿t\":128906,\"ĠÄĳa\":128907,\"à¹Ģà¸Ķà¹ĩà¸ģ\":128908,\"íĺķ\":128909,\"lÃŃ\":128910,\"ê¸ī\":128911,\"ĠØ¹Ø¯Ø¯\":128912,\"ĠÄĳá»ĵ\":128913,\"Ġgáº§n\":128914,\"Ġ×Ļ×ķ×Ŀ\":128915,\"ĠsÄ©\":128916,\"ÑĢÑıÐ´\":128917,\"Ġquyá»ģn\":128918,\"Ġ×Ĳ×ľ×Ĳ\":128919,\"ÙĩÙħØ§\":128920,\"×ł×Ļ×Ķ\":128921,\"×ľ×ķ×ª\":128922,\"Ġ×Ķ×¨×ĳ×Ķ\":128923,\"ĠtiÃªn\":128924,\"ĠalÄ±n\":128925,\"Ġdá»ħ\":128926,\"äººãģĮ\":128927,\"Ð½Ð¾Ñģ\":128928,\"Ð»ÑģÑı\":128929,\"ĠÄĳÆ°a\":128930,\"à¸ªà¸²à¸§\":128931,\"Ð¸ÑĢÐ¾Ð²Ð°Ð½\":128932,\"Ġ×ŀ×¡×¤×¨\":128933,\"×Ĵ×Ł\":128934,\"Ġkiáº¿n\":128935,\"ĠÐ¨\":128936,\"pÃ©\":128937,\"Ð±Ñĥ\":128938,\"Ð¾Ð²Ð¾Ð¹\":128939,\"Ð±Ð°\":128940,\"ĠØ¥ÙĦØ§\":128941,\"×Ĳ×ľ×Ļ\":128942,\"ĠxÃ¢y\":128943,\"Ġbá»Łi\":128944,\"Ġ×©×ķ\":128945,\"äººãģ®\":128946,\"×§×Ļ×Ŀ\":128947,\"à¹Ģà¸Ķà¸·à¸Ńà¸Ļ\":128948,\"ĠkhÃ¡\":128949,\"Ġ×ķ×ľ×Ķ\":128950,\"×ĵ×ķ×ª\":128951,\"Ġ×¢×ĳ×ķ×¨\":128952,\"ĠØ¨Ø´ÙĥÙĦ\":128953,\"ĠÙĩÙĨØ§Ùĥ\":128954,\"ÑĤÑĢÐ°\":128955,\"ĠíķĺëĬĶ\":128956,\"à¸£à¸Ńà¸ļ\":128957,\"owaÅĤ\":128958,\"hÃ©\":128959,\"Ġdiá»ħn\":128960,\"Ġ×Ķ×Ľ×ľ\":128961,\"ĠØ£Ø³\":128962,\"Ġchuyá»ĩn\":128963,\"à¸£à¸°à¸Ķà¸±à¸ļ\":128964,\"ĠNhá»¯ng\":128965,\"Ġ×Ĳ×Ĺ×ª\":128966,\"ĠØŃÙĪÙĦ\":128967,\"Ð»Ð¾Ð²\":128968,\"×ł×¨\":128969,\"Ġ×ķ×ł\":128970,\"ĠchÆ¡i\":128971,\"ĠiÃ§inde\":128972,\"ÑģÑĤÐ²Ñĥ\":128973,\"Ġphá»ĳ\":128974,\"ĠÑģÑĥ\":128975,\"ç§ģãģ¯\":128976,\"Ġchá»©ng\":128977,\"Ġvá»±c\":128978,\"à¹ģà¸Ń\":128979,\"ĠláºŃp\":128980,\"Ġtá»«ng\":128981,\"å°ĳãģĹ\":128982,\"ĠNguy\":128983,\"ĠNguyá»ħn\":128984,\"ĠÙģÙĬÙĩ\":128985,\"ĠÐ±Ð°\":128986,\"×Ļ×Ļ×ª\":128987,\"Ġ×ľ×¢×©×ķ×ª\":128988,\"Ġ×ŀ×Ľ\":128989,\"Ġnghiá»ĩm\":128990,\"ĠÐ¼Ð½Ð¾Ð³Ð¾\":128991,\"ĠÐµÐµ\":128992,\"ëĲĺìĸ´\":128993,\"Ġlá»£i\":128994,\"Ġ×ľ×ľ×Ĳ\":128995,\"Ġ×Ľ×Ł\":128996,\"ĠchÃŃ\":128997,\"ãģ§ãģ®\":128998,\"×Ĺ×ķ\":128999,\"×©×ķ×Ŀ\":129000,\"Ġ×ŀ×¨\":129001,\"ĠÐĶÐ»Ñı\":129002,\"Åģ\":129003,\"Ġ×Ľ×Ĳ×©×¨\":129004,\"ĠMá»Ļt\":129005,\"ĠÙĪØ§ÙĦØª\":129006,\"ĠìĿ´ëŁ°\":129007,\"ÅŁa\":129008,\"Ġchiáº¿n\":129009,\"ĠarasÄ±nda\":129010,\"Ġ×ĳ×Ĳ×ª×¨\":129011,\"ãģķãĤĮãģ¦ãģĦãĤĭ\":129012,\"Ø´ÙĥÙĦ\":129013,\"ĠtÆ°á»£ng\":129014,\"ĠØªØª\":129015,\"ĠCÃ³\":129016,\"Ġbá»ı\":129017,\"Ġtá»īnh\":129018,\"ĠkhÃŃ\":129019,\"ĠÐ¿ÑĢÐ¾ÑģÑĤ\":129020,\"ĠÐ¿ÑĢÐ¾ÑģÑĤÐ¾\":129021,\"ĠÙĪÙĤØ§ÙĦ\":129022,\"ĠgiÃ¡o\":129023,\"ĠNáº¿u\":129024,\"×Ĳ×ŀ×¨\":129025,\"×¢×ł×Ļ×Ļ×Ł\":129026,\"íİ¸\":129027,\"ÙĩØ¯Ùģ\":129028,\"ĠBá»Ļ\":129029,\"ĠbÃłn\":129030,\"ĠnguyÃªn\":129031,\"ĠgÃ¼zel\":129032,\"à¸ªà¸²à¸¢\":129033,\"ì²ľ\":129034,\"×ŀ×ķ×¨\":129035,\"ĠphÃ¢n\":129036,\"×¡×¤×§\":129037,\"×§×ĳ×ľ\":129038,\"ĠØ§ÙĦÙħØªØŃ\":129039,\"ĠØ§ÙĦÙħØªØŃØ¯Ø©\":129040,\"Ø§Ø¦Ø¯\":129041,\"Ġ×Ĳ×ŀ×¨\":129042,\"ĠkiÅŁi\":129043,\"ì¤Ģ\":129044,\"Ġtruyá»ģn\":129045,\"ĠÙĦÙĩØ§\":129046,\"ĠÐľÐ°\":129047,\"à¸ļà¸£à¸´à¸©\":129048,\"à¸ļà¸£à¸´à¸©à¸±\":129049,\"à¸ļà¸£à¸´à¸©à¸±à¸Ĺ\":129050,\"Ġ×©×ł×Ļ×Ŀ\":129051,\"ĠÐ¼ÐµÐ½Ñı\":129052,\"ÅŁe\":129053,\"Ġdiá»ĩn\":129054,\"Ġ×Ĳ×ł×Ĺ×ł×ķ\":129055,\"kÃ¼\":129056,\"Ġcá»ķ\":129057,\"Ġmá»Ĺi\":129058,\"wÃ¤\":129059,\"ÙħÙĬ\":129060,\"Ġhiá»ĥu\":129061,\"ëĭ¬\":129062,\"Ġ×Ķ×Ĺ×ľ\":129063,\"ĠtÃªn\":129064,\"Ġkiá»ĩn\":129065,\"ÙĨÙĤÙĦ\":129066,\"Ġvá»ĩ\":129067,\"×ĵ×ª\":129068,\"ĠÐłÐ¾ÑģÑģÐ¸Ð¸\":129069,\"Ð»Ñĥ\":129070,\"ĠØ§ÙĦØ¹Ø±Ø¨ÙĬØ©\":129071,\"ĠØ·Ø±ÙĬÙĤ\":129072,\"Ġ×Ķ×ĳ×Ļ×ª\":129073,\"ÑģÐµÑĢ\":129074,\"ĠÐ¼Ð½Ðµ\":129075,\"Ã¤u\":129076,\"Ġtriá»ĩu\":129077,\"ĠÄĳá»§\":129078,\"Ġ×¨×ĳ\":129079,\"ØªÙĩÙħ\":129080,\"à¸ĭà¸µ\":129081,\"Ġì§Ģê¸Ī\":129082,\"liÅĽmy\":129083,\"Ø¯Ø¹Ùħ\":129084,\"ãģłãĤįãģĨ\":129085,\"ÑģÐºÐ¸Ðµ\":129086,\"Ġhá»ıi\":129087,\"Ġ×§×ķ\":129088,\"ÑĢÑĥÑģ\":129089,\"ÙĨØ¸Ø±\":129090,\"ãģ®ãĤĤ\":129091,\"Ġ×Ķ×Ľ×Ļ\":129092,\"ĠìĽĲ\":129093,\"ÙĪÙĩ\":129094,\"ĠÙĪÙİ\":129095,\"ĠBáº¡n\":129096,\"Ð¿Ð»Ð°ÑĤ\":129097,\"Ġ×ŀ×ŀ×©\":129098,\"Ð»ÑİÐ±\":129099,\"ĠÐ½ÑĥÐ¶Ð½Ð¾\":129100,\"ĠthÆ°\":129101,\"ãģµ\":129102,\"ãģıãĤīãģĦ\":129103,\"Ø±Ø´\":129104,\"×¨×ķ×Ĺ\":129105,\"ĠÙĬØªÙħ\":129106,\"Ġ×¦×¨×Ļ×ļ\":129107,\"ĠphÃ¡\":129108,\"à¸¡à¸Ńà¸ĩ\":129109,\"Ġ×ĳ×Ĳ×ķ×¤×Ł\":129110,\"Ġcáº£nh\":129111,\"Ġíķľëĭ¤\":129112,\"Ġ×Ķ×ŀ×ª\":129113,\"à¸ķà¹Īà¸²à¸ĩà¹Ĩ\":129114,\"à¸¡à¸µà¸ģà¸²à¸£\":129115,\"ÑģÐºÐ¸Ñħ\":129116,\"ĠÐĴÑģÐµ\":129117,\"ĠØ§ÙĪ\":129118,\"Ø¬ÙĬ\":129119,\"ãģĵãģ¨ãģ¯\":129120,\"ĠdÃłi\":129121,\"Ġhá»ĵ\":129122,\"èĩªåĪĨãģ®\":129123,\"à¹Ħà¸«à¸Ļ\":129124,\"ëĵ¤ìĿĦ\":129125,\"ĠVÄĥn\":129126,\"ĠÐ´Ð°Ð¶\":129127,\"ĠÐ´Ð°Ð¶Ðµ\":129128,\"ÑĭÐ¼Ð¸\":129129,\"Ð»Ð°ÑģÑĮ\":129130,\"ÙĬÙĪÙĨ\":129131,\"ÙĨÙĪ\":129132,\"cÃ³\":129133,\"ãģĹãģ¦ãģĦãģŁ\":129134,\"ãģłãģĭãĤī\":129135,\"Ø·Ø§ÙĦØ¨\":129136,\"Ġcá»Ńa\":129137,\"Ð¿ÑĢÐ¾Ñģ\":129138,\"ãģªãģ©ãģ®\":129139,\"à¸£à¸¸à¹Īà¸Ļ\":129140,\"Ġchiáº¿c\":129141,\"Ð»Ñĭ\":129142,\"ĠÑıÐ²Ð»ÑıÐµÑĤÑģÑı\":129143,\"Ġná»ķi\":129144,\"ãģ®ãģĬ\":129145,\"Ġ×Ĳ×ª×Ŀ\":129146,\"ĠëķĮë¬¸ìĹĲ\":129147,\"à¸ģà¸¥à¸²à¸ĩ\":129148,\"ĠbaÅŁka\":129149,\"ìĦĿ\":129150,\"ĠÑĨÐµÐ»\":129151,\"ÙģÙĤ\":129152,\"ãģ«ãĤĪãĤĭ\":129153,\"ÙĤØ§\":129154,\"ĠÃ§Ä±kar\":129155,\"Ġcá»©u\":129156,\"Ø·Ø§\":129157,\"Ġ×©×ª\":129158,\"à¹Ĥà¸Ħ\":129159,\"Ġ×ŀ×ľ\":129160,\"Ġ×Ķ×¤×¨\":129161,\"ĠÐ³Ð´Ðµ\":129162,\"ĠØ®Ø·\":129163,\"åīįãģ«\":129164,\"cjÄĻ\":129165,\"Ġ×Ĺ×©×ķ×ĳ\":129166,\"×¨×Ĵ×¢\":129167,\"Ġkhoáº£ng\":129168,\"ĠÄĳá»Ŀi\":129169,\"ĠÐłÐµ\":129170,\"ĠÐ¾Ð½Ð°\":129171,\"Ġ×Ĳ×ł×ķ\":129172,\"ãģ®ãģ«\":129173,\"ĠØ§ÙĦØ°ÙĬÙĨ\":129174,\"ÐºÑĥÐ¿\":129175,\"ãĤµãĥ¼ãĥ\":129176,\"ãĤµãĥ¼ãĥĵ\":129177,\"ãĤµãĥ¼ãĥĵãĤ¹\":129178,\"Ð²Ð°Ð»\":129179,\"Ð³Ðµ\":129180,\"Ġgiá»¯a\":129181,\"ĠKhÃ´ng\":129182,\"ĠâĹĭ\":129183,\"à¸ģà¸¥à¸¸à¹Īà¸¡\":129184,\"ĠÙħÙĨØ°\":129185,\"à¸Ńà¹Īà¸²à¸Ļ\":129186,\"ĠÑģÐ¿Ð¾ÑģÐ¾Ð±\":129187,\"ĠÄĳá»Ļi\":129188,\"ĠdiÄŁer\":129189,\"Ġà¸ĸà¹īà¸²\":129190,\"ÙħØ«ÙĦ\":129191,\"Ġ×Ķ×Ĳ×Ļ\":129192,\"ĠØ¯ÙĪÙĨ\":129193,\"ÙĬØ±Ø§ÙĨ\":129194,\"ÑīÐ¸\":129195,\"Ø¨ÙĨØ§Ø¡\":129196,\"ĠØ¢Ø®Ø±\":129197,\"Ø¸ÙĩØ±\":129198,\"Ġ×ĳ×Ľ\":129199,\"ĠØ§ÙĦÙħØ¹\":129200,\"ãĥĴ\":129201,\"Ġtáº¥t\":129202,\"Ġmá»¥c\":129203,\"ĠdoÄŁru\":129204,\"ãģŁãĤī\":129205,\"Ġ×¡×ķ\":129206,\"ĠxÃ¡c\":129207,\"à¸£à¸Ń\":129208,\"ĠcÄĥn\":129209,\"ĠÐ¾Ð½Ð»\":129210,\"ĠÐ¾Ð½Ð»Ð°Ð¹Ð½\":129211,\"ĠkÃ½\":129212,\"ĠchÃ¢n\":129213,\"Ġà¹Ħà¸¡à¹Ī\":129214,\"Ø§ØŃØ©\":129215,\"rÃ¡n\":129216,\"×ł×Ļ×Ļ×Ŀ\":129217,\"Ġ×ĳ×Ł\":129218,\"ĠÐĸ\":129219,\"à¸ķà¸£à¸ĩ\":129220,\"Ð´Ñĭ\":129221,\"Ġsáº¯c\":129222,\"ÙĦØª\":129223,\"ãĥŃãĥ¼\":129224,\"ĠÙĦÙĨ\":129225,\"Ġ×¨×ķ\":129226,\"ĠdÆ°á»Ľi\":129227,\"à¹Ģà¸ĺ\":129228,\"à¹Ģà¸ĺà¸Ń\":129229,\"eÄŁi\":129230,\"Ġ×ķ×©\":129231,\"ĠÙĦØ£\":129232,\"Ġgáº·p\":129233,\"Ġcá»ĳ\":129234,\"ãģ¨ãģ¦ãĤĤ\":129235,\"Ø±ÙĪØ³\":129236,\"Ġ×ľ×Ķ×Ļ\":129237,\"Ġë³¸\":129238,\"ä¸ĬãģĴ\":129239,\"Ġmá»©c\":129240,\"ÑħÐ°\":129241,\"Ġìŀ¬\":129242,\"à¸īà¸±à¸Ļ\":129243,\"ÑĢÑĥÐ¶\":129244,\"ĠaÃ§Ä±k\":129245,\"ÙĪØ§ÙĦ\":129246,\"Ġ×ĸ×ŀ×Ł\":129247,\"äººãģ¯\":129248,\"Ø¹ÙĬÙĨ\":129249,\"ÑıÑħ\":129250,\"Ġ×Ĵ×ĵ×ķ×ľ\":129251,\"×¨×ķ×ĳ\":129252,\"gÃ³\":129253,\"ëĿ¼ê³ł\":129254,\"ĠarkadaÅŁ\":129255,\"ÙĨØ´Ø±\":129256,\"ĠÐ³Ð¾Ð´Ñĥ\":129257,\"ĠÐ±Ð¾Ð»ÑĮÑĪÐµ\":129258,\"ãģ¡ãĤĩãģ£ãģ¨\":129259,\"ĠcÃ¢u\":129260,\"ĠsÃ¡t\":129261,\"íĶ¼\":129262,\"Ġtiáº¿n\":129263,\"íķ´ìķ¼\":129264,\"ĠÙĪØ£ÙĨ\":129265,\"à¸Ļà¸²à¸Ļ\":129266,\"Ġ×ĳ×Ĳ×ŀ×¦×¢\":129267,\"Ġ×ĳ×Ĳ×ŀ×¦×¢×ķ×ª\":129268,\"Ġ×ľ×¨\":129269,\"Ġquáº£n\":129270,\"ĠÙĪØ§ÙĦØ£\":129271,\"Ġ×Ĳ×ķ×ª×Ķ\":129272,\"Ġìĸ´ëĸ¤\":129273,\"Ġê²ĥìĿĢ\":129274,\"ØŃØ³ÙĨ\":129275,\"Ġmáº¥t\":129276,\"à¸Ħà¸¹à¹Ī\":129277,\"ãĥ¬ãĥ¼\":129278,\"ĠÐĶÐ°\":129279,\"ĠolmasÄ±\":129280,\"Ġthuá»Ļc\":129281,\"×ł×Ĺ\":129282,\"íĨł\":129283,\"ĠsÃ¶yle\":129284,\"ãģĿãģĨãģ§ãģĻ\":129285,\"ĠØªÙĥÙĪÙĨ\":129286,\"Ð»ÑĥÑĩ\":129287,\"×ľ×Ļ×ļ\":129288,\"ĠØ£ØŃØ¯\":129289,\"Ð»Ð¸ÑģÑĮ\":129290,\"ĠÐ²ÑģÐµÐ³Ð¾\":129291,\"Ġ×Ķ×¨×ĳ\":129292,\"Ġëª»\":129293,\"oÄŁ\":129294,\"oÄŁlu\":129295,\"ĠìĦł\":129296,\"ĠÐºÐ°ÑĢ\":129297,\"à¸łà¸²à¸Ħ\":129298,\"eÅĦ\":129299,\"Ġà¸ģà¹ĩ\":129300,\"ĠaynÄ±\":129301,\"ĠbÃł\":129302,\"ãģªãĤĵãģ¦\":129303,\"Ġëª¨ëĵł\":129304,\"ÙĤØ±Ø§Ø±\":129305,\"ãģĹãģªãģĦ\":129306,\"ĠÐĴÐ¾\":129307,\"ĠÙĪÙĩÙĬ\":129308,\"Ð½Ð¸ÐºÐ¸\":129309,\"ãĤĮãģŁ\":129310,\"Ġchuáº©n\":129311,\"×¨×¢\":129312,\"ÙģØ±ÙĬÙĤ\":129313,\"ãĤĴåıĹãģĳ\":129314,\"ĠÄĳÃºng\":129315,\"Ð±Ðµ\":129316,\"×Ľ×ķ×Ĺ\":129317,\"Ð¿Ñĥ\":129318,\"Ġ×ķ×Ĵ×Ŀ\":129319,\"×ŀ×ł×Ļ\":129320,\"íĸ¥\":129321,\"×¦×Ļ×Ŀ\":129322,\"à¸ĭà¸´\":129323,\"ÙĩÙĨ\":129324,\"Ð½ÐµÐ¼\":129325,\"Ġ×ĳ×ĳ×Ļ×ª\":129326,\"Ø±Ø¹\":129327,\"Ġà¸ª\":129328,\"ĠÄĲÃł\":129329,\"íķĺëĭ¤\":129330,\"Ġáº¥y\":129331,\"×Ĺ×ķ×ĵ\":129332,\"×Ĺ×ķ×ĵ×©\":129333,\"ĠÑĩÐµÑĢÐµÐ·\":129334,\"ÑĥÐ»\":129335,\"ĠBÃ¬nh\":129336,\"Ġê²ĥìĿĦ\":129337,\"Ġ×Ĵ×¨\":129338,\"ä»ĺãģĳ\":129339,\"×Ĺ×ľ×§\":129340,\"ĠØªÙĦÙĥ\":129341,\"à¹ĥà¸ªà¹Ī\":129342,\"szÄħ\":129343,\"ÙĤØ§Ùħ\":129344,\"Ø¯ÙĪØ±\":129345,\"ĠÙģÙĤØ·\":129346,\"Ġhá»¯u\":129347,\"ĠÐ¼Ð¾Ð³ÑĥÑĤ\":129348,\"Ġgá»įi\":129349,\"Ġ×§×¨\":129350,\"à¸Īà¸°à¸¡à¸µ\":129351,\"ØªÙĤØ¯Ùħ\":129352,\"ĠØ¹Ø¨Ø±\":129353,\"Ġ×ľ×Ķ×Ŀ\":129354,\"ĠÑģÐ°Ð¼Ð¾\":129355,\"×¡×ĵ×¨\":129356,\"ĠcÃłng\":129357,\"rÃŃ\":129358,\"Ġìŀ¥\":129359,\"ëĵ¤ìĿĺ\":129360,\"ĠÙĦÙĥ\":129361,\"Ð¿Ð¾ÑĢÑĤ\":129362,\"Ġkháº£\":129363,\"ĠÑģÐµÐ±Ñı\":129364,\"×ł×Ł\":129365,\"ĠØ¯ÙĪØ±\":129366,\"Ġmá»Ł\":129367,\"ĠcÃ¢y\":129368,\"Ġfark\":129369,\"ĠfarklÄ±\":129370,\"Ð°ÑİÑĤ\":129371,\"Ġtrá»±c\":129372,\"wiÄĻksz\":129373,\"Ġthuá»ĳc\":129374,\"ĠØªØŃØª\":129375,\"ØªÙĦ\":129376,\"Ð¾Ð²ÑĭÐµ\":129377,\"ëĤł\":129378,\"ĠÐ²Ð°Ð¼\":129379,\"Ø¨ÙĦØº\":129380,\"Ġê°ĻìĿĢ\":129381,\"íĮĲ\":129382,\"ÙĦØ¨\":129383,\"ĠnasÄ±l\":129384,\"ĠÐ¾Ð´Ð¸Ð½\":129385,\"Ð¼Ð°Ð½\":129386,\"ĠØ¹ÙĦÙĬÙĩØ§\":129387,\"Ð±Ð¸\":129388,\"Ġ×¤×©×ķ×ĺ\":129389,\"×ĳ×¨×Ļ\":129390,\"Ġ×©×ł×Ķ\":129391,\"ĠëıĦ\":129392,\"ĠÄĲáº¡i\":129393,\"Ġ×Ĳ×ķ×ª×Ŀ\":129394,\"ĠØ§ÙĦØŃØ±\":129395,\"ĠÐ±Ð¾\":129396,\"à¸Īà¸¸à¸Ķ\":129397,\"ĠrÃµ\":129398,\"ĠdeÄŁiÅŁ\":129399,\"Ġëĭ¨\":129400,\"ĠÑģÐ»ÑĥÑĩÐ°\":129401,\"ĠÑģÐ»ÑĥÑĩÐ°Ðµ\":129402,\"Ġ×Ĳ×ł×©×Ļ×Ŀ\":129403,\"×ĵ×£\":129404,\"×©×ĳ×ª\":129405,\"Ġ×©×ľ×Ľ×Ŀ\":129406,\"ĠchÃº\":129407,\"nikÃ³w\":129408,\"ĠtanÄ±\":129409,\"ĠcÃ¡o\":129410,\"ĠÄĳÃ¡\":129411,\"Ġ×Ĳ×ĵ×Ŀ\":129412,\"Ġê°ķ\":129413,\"Ġnhiá»ĩm\":129414,\"Ġ×ľ×¡\":129415,\"Ġ×Ľ×ª×ĳ\":129416,\"Ġ×Ķ×¡×¤×¨\":129417,\"ĠÄĳÄĥng\":129418,\"ĠëĳĲ\":129419,\"à¸ľà¸´\":129420,\"à¸ľà¸´à¸§\":129421,\"Ø¬Ø§\":129422,\"Ġê°Ĳ\":129423,\"Ø±Ø£\":129424,\"Ø³ØªØ®Ø¯Ùħ\":129425,\"ãģ«ãģªãĤĬãģ¾ãģĻ\":129426,\"Ġtá»·\":129427,\"×ĺ×ķ×¨\":129428,\"Ð³Ð¾Ð²Ð¾ÑĢ\":129429,\"ĠÐ²Ð¾Ñģ\":129430,\"ĠÙħÙĨÙĩØ§\":129431,\"Ð¸ÑĢÐ¾Ð²Ð°ÑĤÑĮ\":129432,\"ĠÄĳáº§y\":129433,\"×ł×Ĵ\":129434,\"ĠÙħÙĪ\":129435,\"ĠÙħÙĪÙĤØ¹\":129436,\"×¨×Ľ×Ļ\":129437,\"ØªÙı\":129438,\"ëª¨\":129439,\"Ġ×ª×ķ\":129440,\"ÙĬØ§Ùĭ\":129441,\"à¹ĥà¸Ķ\":129442,\"ãĤĬãģ¾ãģĻ\":129443,\"à¸Ńà¸¢à¸¹à¹Īà¹ĥà¸Ļ\":129444,\"ĠØ£ÙĪÙĦ\":129445,\"ĠØ£Ø®Ø±Ùī\":129446,\"ĠcÆ°\":129447,\"ØµØ§Ø±\":129448,\"×ŀ×Ĺ×©×ĳ\":129449,\"Ð±ÑĢÐ°\":129450,\"ÅĦski\":129451,\"Ð±ÑĢ\":129452,\"ĠÙĬÙı\":129453,\"à¸ģà¸´à¸Ļ\":129454,\"Ġchá»ĳng\":129455,\"ÙħÙı\":129456,\"Ġà¸Ħà¸·à¸Ń\":129457,\"ĠØªÙĨ\":129458,\"tÃŃ\":129459,\"yÄĩ\":129460,\"Ġmáº¡ng\":129461,\"ÙģÙĪ\":129462,\"ĠdÃ¼nya\":129463,\"×§×¨×Ĳ\":129464,\"Ġ×§×ľ\":129465,\"ĠØŃØ§ÙĦ\":129466,\"cÃŃa\":129467,\"Ġà¹Ģà¸£à¸²\":129468,\"Ġ×¨×ķ×¦×Ķ\":129469,\"ĠÃ¡p\":129470,\"ë°ķ\":129471,\"Ø§ÙĤØ©\":129472,\"Ð½Ð¸Ñİ\":129473,\"Ġ×Ĳ×ľ×ķ\":129474,\"Ġ×ŀ×¡×ķ\":129475,\"ãģ§ãģ¯ãģªãģı\":129476,\"Ġtráº£\":129477,\"Ġ×§×©×¨\":129478,\"miÅŁtir\":129479,\"ĠlÆ°u\":129480,\"Ġhá»Ĺ\":129481,\"ĠÐ±ÑĭÐ»Ð¸\":129482,\"Ġláº¥y\":129483,\"Ø¹ÙĦÙħ\":129484,\"ĠÃ¶zel\":129485,\"æ°ĹãģĮ\":129486,\"Ġ×ĵ×¨×ļ\":129487,\"ÙħØ¯\":129488,\"sÄ±nÄ±\":129489,\"×ł×ķ×©×Ĳ\":129490,\"rÃ³w\":129491,\"ÑĩÐµÑĢ\":129492,\"êµĲìľ¡\":129493,\"ĠÐľÐ¾\":129494,\"Ð»ÐµÐ³\":129495,\"ĠVá»Ľi\":129496,\"à¸§à¸±à¸Ļà¸Ļà¸µà¹ī\":129497,\"ÑİÑīÐ¸Ðµ\":129498,\"ãģĬãģĻ\":129499,\"ãģĬãģĻãģĻ\":129500,\"ãģĬãģĻãģĻãĤģ\":129501,\"ëıħ\":129502,\"Ġ×Ļ×Ķ×Ļ×Ķ\":129503,\"×ŀ×ĺ×¨\":129504,\"ÑıÐ¼Ð¸\":129505,\"Ġlá»±a\":129506,\"ĠÄĳáº¥u\":129507,\"à¹Ģà¸ªà¸µà¸¢à¸ĩ\":129508,\"ĠtÆ°Æ¡ng\":129509,\"ëĵ±\":129510,\"ĠÑģÑĤÐ°ÑĢ\":129511,\"à¹ĥà¸ļ\":129512,\"à¸§à¸±à¸Ķ\":129513,\"ĠÄ°stanbul\":129514,\"Ġà¸Īà¸°\":129515,\"à¸ķà¸¥à¸²à¸Ķ\":129516,\"ĠØ¨ÙĬ\":129517,\"à¹ģà¸Ļà¸°\":129518,\"à¹ģà¸Ļà¸°à¸Ļà¸³\":129519,\"Ø³Ø§Ø¹Ø¯\":129520,\"ĠØ¨Ø£\":129521,\"Ġkiá»ĥm\":129522,\"ØŃØ³Ø¨\":129523,\"à¸Ĭà¸±à¹īà¸Ļ\":129524,\"Ġ×ķ×¢×ķ×ĵ\":129525,\"Ð¾Ð²ÑĭÑħ\":129526,\"Ð¾ÑģÐ½Ð¾Ð²\":129527,\"ĠtrÆ°á»Łng\":129528,\"×¦×ĳ×¢\":129529,\"ĠÃŃt\":129530,\"Ġká»¹\":129531,\"crÃ©\":129532,\"ÑıÐ¼\":129533,\"êµ°\":129534,\"ãģĮãģªãģĦ\":129535,\"ÙĬÙĦØ©\":129536,\"ãĥķãĤ£\":129537,\"Ø±Ùī\":129538,\"ĠÙĬØ¬Ø¨\":129539,\"Ġ×Ĳ×£\":129540,\"Ġcá»±c\":129541,\"ãĤīãĤĮãģŁ\":129542,\"Ġà¸ľà¸¹à¹ī\":129543,\"Ġà¸Ń\":129544,\"larÄ±mÄ±z\":129545,\"ĠkadÄ±n\":129546,\"Ġê·¸ëŀĺ\":129547,\"Ġê·¸ëŀĺìĦľ\":129548,\"ĠëĺĲëĬĶ\":129549,\"ĠÄĳáº£\":129550,\"ĠÄĳáº£m\":129551,\"Ġ×Ĳ×ķ×ŀ×¨\":129552,\"Ġyáº¿u\":129553,\"ciÄħ\":129554,\"ciÄħg\":129555,\"Ġtá»ĳ\":129556,\"Ġ×©×Ĳ×ł×Ļ\":129557,\"ĠdziaÅĤa\":129558,\"ÑīÐ°\":129559,\"ĠÄĳÃłn\":129560,\"sÄ±na\":129561,\"ãģĵãĤĮãģ¯\":129562,\"Ġ×ĳ×ľ×Ļ\":129563,\"Ġ×ĳ×Ļ×©×¨×Ĳ×ľ\":129564,\"Ð»Ð¾ÑģÑĮ\":129565,\"Ġgiá»¯\":129566,\"ê°Ĳ\":129567,\"ÑĢÐ¾Ð½\":129568,\"ØªØ¬Ø§Ø±\":129569,\"Ð³Ð»Ð°Ð²\":129570,\"Ð²Ð¸Ð½\":129571,\"Ġháº¡n\":129572,\"ĠyapÄ±lan\":129573,\"Ø¨Ø³\":129574,\"Ġà¸ŀà¸£à¹īà¸Ńà¸¡\":129575,\"ê´Ģë¦¬\":129576,\"mÄ±ÅŁtÄ±r\":129577,\"bÃ¼\":129578,\"rÃ¼ck\":129579,\"ĠBaÅŁkanÄ±\":129580,\"ĠÙĦÙĬØ³\":129581,\"ĠsÆ¡\":129582,\"à¸Īà¸±à¸ĩà¸«à¸§\":129583,\"à¸Īà¸±à¸ĩà¸«à¸§à¸±à¸Ķ\":129584,\"Ø¯Ø§Ø¡\":129585,\"Ġ×Ķ×Ľ\":129586,\"vÃŃ\":129587,\"×©×Ĳ×¨\":129588,\"ĠhÆ°á»Łng\":129589,\"ĠbÃ³ng\":129590,\"ĠChÃŃnh\":129591,\"Äħc\":129592,\"à¹Ģà¸ģà¸µà¹Īà¸¢à¸§à¸ģà¸±à¸ļ\":129593,\"Ġtá»©\":129594,\"Ġtá»©c\":129595,\"ĠÑĨÐ²ÐµÑĤ\":129596,\"Ġtá»ĳi\":129597,\"ĠnghÄ©a\":129598,\"ÙĦØ§Ø¹Ø¨\":129599,\"Ø¯ÙĦ\":129600,\"Ġ×¤×¢×Ŀ\":129601,\"hÃ¶r\":129602,\"à¸Ĭà¸¸à¸Ķ\":129603,\"à¸ŀà¸¹\":129604,\"à¸ŀà¸¹à¸Ķ\":129605,\"Ð¿Ð°Ñģ\":129606,\"ĠÅŁu\":129607,\"ĠtÆ°á»Łng\":129608,\"Ø®Ø§Ø±Ø¬\":129609,\"ĠÃ¢m\":129610,\"ĠÐ¸Ð½ÑĤÐµÑĢÐµÑģ\":129611,\"ÐµÐ½Ð½ÑĭÑħ\":129612,\"×Ĳ×ł×Ļ\":129613,\"Ø¨Ø¯Ø£\":129614,\"ëĿ¼ëĬĶ\":129615,\"ì¹´\":129616,\"æĸ¹ãģĮ\":129617,\"Ð»Ð¸Ð²\":129618,\"Ġà¸Ħà¸Ļ\":129619,\"×¢×¨×ļ\":129620,\"à¸Ĥà¸Ńà¸ĩà¸Ħà¸¸à¸ĵ\":129621,\"Ð¿Ð°Ð´\":129622,\"Ġcáº¡nh\":129623,\"ĠëĤ¨\":129624,\"ĠÄĳÃ¢u\":129625,\"Ġbiá»ĥu\":129626,\"ãĤĤãģĤãĤĭ\":129627,\"×ľ×Ĵ\":129628,\"Ġà¸ªà¸³à¸«à¸£à¸±à¸ļ\":129629,\"Ġxuá»ĳng\":129630,\"×¡×ķ\":129631,\"ĠØ°Ø§Øª\":129632,\"ĠÐľÐµ\":129633,\"Ø¹Ø§ÙĦÙħ\":129634,\"×Ĳ×¡\":129635,\"Ø¨ÙĬØ©\":129636,\"Ø´Ø§\":129637,\"Ð¸ÐµÐ¼\":129638,\"ĠNgÆ°á»Ŀi\":129639,\"íĺĳ\":129640,\"ÑģÐ»Ð¾Ð²\":129641,\"ĠÐ¿Ð°\":129642,\"Ġmáº«u\":129643,\"ĠÐ¿ÑĢÐ¾ÑĨÐµÑģÑģ\":129644,\"ĠNhÃł\":129645,\"Ð¿ÑĢÐ¾Ð¸Ð·\":129646,\"Ð¿ÑĢÐ¾Ð¸Ð·Ð²Ð¾Ð´\":129647,\"à¸łà¸²à¸¢à¹ĥà¸Ļ\":129648,\"Ġà¸ļà¸²à¸Ĺ\":129649,\"×ŀ×ł×ķ\":129650,\"ĠÐ¾ÑĢÐ³Ð°Ð½\":129651,\"×¨×¦×ķ\":129652,\"×ķ×ŀ×Ļ×Ŀ\":129653,\"ĠyazÄ±\":129654,\"ĠdÃ¹\":129655,\"ãĥ¬ãĥ³\":129656,\"ÙĪÙĦÙĬ\":129657,\"à¸¢à¸¹\":129658,\"ĠtrÃ²\":129659,\"à¹Ģà¸ŀà¸¥à¸ĩ\":129660,\"Ġ×ŀ×ľ×Ĳ\":129661,\"à¸ķà¸¥\":129662,\"à¸ķà¸¥à¸Ńà¸Ķ\":129663,\"ĠÄĳáº¡t\":129664,\"Ġ×Ĺ×ĵ×©\":129665,\"pÃ³ÅĤ\":129666,\"Ġ×ŀ×ĵ×Ļ\":129667,\"ujÄħc\":129668,\"×ŀ×ł×Ķ×ľ\":129669,\"Ġ×©×ĳ×ķ\":129670,\"Ġ×Ķ×ŀ×©×¤×ĺ\":129671,\"Ġ×Ĳ×ľ×Ķ\":129672,\"ĠÙĪØ°ÙĦÙĥ\":129673,\"à¹Ģà¸ŀà¸£à¸²à¸°\":129674,\"ĠÄĳoÃłn\":129675,\"Ġíķ¨ê»ĺ\":129676,\"Ġdá»¥c\":129677,\"Ø´Øª\":129678,\"Ġula\":129679,\"ĠulaÅŁ\":129680,\"ĠquÃ½\":129681,\"Ġ×Ķ×Ĵ×ĵ×ķ×ľ\":129682,\"à¸ķà¸±à¹īà¸ĩà¹ģà¸ķà¹Ī\":129683,\"Ġ×©×¨\":129684,\"Ø´ÙĩØ¯\":129685,\"×ł×©×Ļ×Ŀ\":129686,\"à¸ŀà¸¥\":129687,\"Ø±ÙĪØ§\":129688,\"ãĤĮãģ¦\":129689,\"ĠÐ½Ð¸Ñħ\":129690,\"ĠÐ´ÐµÐ»Ð°\":129691,\"ãģ§ãģįãģªãģĦ\":129692,\"ÅĤoÅ¼\":129693,\"×Ĳ×Ĺ×¨\":129694,\"ì½Ķ\":129695,\"ãĤ¢ãĥĥãĥĹ\":129696,\"Ø¯ÙģØ¹\":129697,\"Ġtiá»ĩn\":129698,\"Ġkhá»ı\":129699,\"Ġkhá»ıe\":129700,\"ĠØ§ÙĦØ¹Ø§ÙħØ©\":129701,\"ãģ«ãģĤãĤĭ\":129702,\"ĠÄĳá»Ļc\":129703,\"ì¡±\":129704,\"Ġcá»¥\":129705,\"Ð¹ÑĤÐµ\":129706,\"ĠÐ·Ð°ÐºÐ¾Ð½\":129707,\"ĠÐ¿ÑĢÐ¾ÐµÐºÑĤ\":129708,\"ìĸ¸\":129709,\"ÙĦØŃ\":129710,\"ĠÃ§alÄ±ÅŁma\":129711,\"ãĤĴãģĻãĤĭ\":129712,\"ÑħÐ¸\":129713,\"Ø¹Ø§Ø¯\":129714,\"Ġ×ł×ŀ×¦×Ĳ\":129715,\"Ġ×¨×Ļ\":129716,\"à¸Ńà¸Ńà¸ģà¸¡à¸²\":129717,\"ĠTÃ´i\":129718,\"Ġtháº§n\":129719,\"ĠÙĬØ§\":129720,\"à¸¥à¸²à¸¢\":129721,\"ĠÐ°Ð²ÑĤÐ¾\":129722,\"ĠsÄ±ra\":129723,\"ĠÙĥØ«ÙĬØ±\":129724,\"ÙħÙĬØ²\":129725,\"ĠØ§ÙĦØ¹ÙĦÙħ\":129726,\"æĸ¹ãģ¯\":129727,\"×ķ×¢×ĵ\":129728,\"ĠÐ¾Ð±Ð»Ð°ÑģÑĤÐ¸\":129729,\"×Ļ×ľ×Ļ×Ŀ\":129730,\"ãģĮåĩº\":129731,\"à¸ĺà¸¸\":129732,\"à¸ĺà¸¸à¸£\":129733,\"à¸ĺà¸¸à¸£à¸ģà¸´à¸Ī\":129734,\"ÙĤØªÙĦ\":129735,\"×¨×Ĳ×ķ\":129736,\"Ġngu\":129737,\"Ġnguá»ĵn\":129738,\"Ġà¸¡à¸²\":129739,\"ĠÐ¿Ð»Ð°Ð½\":129740,\"tÃ³rio\":129741,\"Ġcuá»ĳi\":129742,\"ÑģÐºÐ¾Ð¼\":129743,\"ĠØ§ÙĦÙħØ§Ø¶\":129744,\"ĠØ§ÙĦÙħØ§Ø¶ÙĬ\":129745,\"Ġ×ĳ×¢×ľ\":129746,\"Ġ×¨×ĳ×Ļ×Ŀ\":129747,\"ĠluáºŃn\":129748,\"ÙĥÙĪ\":129749,\"à¸Ĺà¸±à¹īà¸ĩà¸«à¸¡à¸Ķ\":129750,\"Ð²Ð°Ð½\":129751,\"Ġthoáº¡i\":129752,\"à¹Ħà¸Ń\":129753,\"Ð±Ð¸ÑĢ\":129754,\"ĠØ§ÙĦØ¶\":129755,\"ØªØ§\":129756,\"ĠÑĢÐ¾Ð´\":129757,\"ĠVÃł\":129758,\"×ŀ×Ļ×Ł\":129759,\"ĠÐ±ÑĭÐ»Ð°\":129760,\"ÐºÐ°Ð¼Ð¸\":129761,\"ĠÐĶÐµ\":129762,\"tÄ±k\":129763,\"×§×¨×Ļ\":129764,\"ĠeÄŁitim\":129765,\"ĠÙĥØ¨ÙĬØ±\":129766,\"Ø¨Ùĥ\":129767,\"ĠÙĦÙĪ\":129768,\"Ð²Ð¾Ð¹\":129769,\"Ġãģĵãģ®\":129770,\"ĠÑĤÑĢÑĥÐ´\":129771,\"myÅĽl\":129772,\"ĠsÆ°\":129773,\"à¸ŀà¸µà¹Ī\":129774,\"Ġà¹ģà¸¥à¹īà¸§\":129775,\"×¢×§\":129776,\"Ġ×Ĺ×ĳ×¨×ª\":129777,\"à¸£à¸°à¸«à¸§\":129778,\"à¸£à¸°à¸«à¸§à¹Īà¸²à¸ĩ\":129779,\"×Ļ×Ļ×Ķ\":129780,\"ĠØ§ÙĦÙĨØ§Ø³\":129781,\"Ã¼nÃ¼\":129782,\"Ġ×ľ×ŀ×Ķ\":129783,\"ĠchÆ°Æ¡ng\":129784,\"ĠHá»ĵ\":129785,\"Ø§Ø±Øª\":129786,\"ãĤĪãģĨãģ§ãģĻ\":129787,\"lÃ¡\":129788,\"×§×Ļ×Ļ×Ŀ\":129789,\"æľ¬å½ĵ\":129790,\"æľ¬å½ĵãģ«\":129791,\"ãģĵãĤĵãģª\":129792,\"ÑģÐ¾Ð²\":129793,\"Ġ×ķ×Ĺ\":129794,\"à¹Ģà¸ģà¹ĩà¸ļ\":129795,\"ĠÐºÑĤÐ¾\":129796,\"à¹Ĥà¸£à¸Ħ\":129797,\"ĠØ´Ø±ÙĥØ©\":129798,\"Ø¹Ø²ÙĬ\":129799,\"Ø¹Ø²ÙĬØ²\":129800,\"Ø·ÙĦÙĤ\":129801,\"Ð¿ÑĥÑģÑĤ\":129802,\"ÙģØªØŃ\":129803,\"ëŀĢ\":129804,\"ĠhÃ£y\":129805,\"Ø¶Ùħ\":129806,\"ë¦°\":129807,\"åł´åĲĪãģ¯\":129808,\"ãĤªãĥ¼\":129809,\"Ġháº¯n\":129810,\"Ġ×Ĳ×ĳ×Ļ×ĳ\":129811,\"Ġ×©×ľ×Ķ×Ŀ\":129812,\"Ġ×Ķ×Ļ×Ļ×ª×Ķ\":129813,\"ĠØ§ÙĦØ¯ÙĪÙĦØ©\":129814,\"ĠØ§ÙĦÙĪÙĤ\":129815,\"ĠØ§ÙĦÙĪÙĤØª\":129816,\"ãģĤãģ¾ãĤĬ\":129817,\"ĠtaÅŁÄ±\":129818,\"Ä°N\":129819,\"×¢×¡×§\":129820,\"ãģ¦ãģĦãģŁ\":129821,\"Ġtá»ķng\":129822,\"ĠØ§ÙĦØ¥ÙĨØ³\":129823,\"ĠØ§ÙĦØ¥ÙĨØ³Ø§ÙĨ\":129824,\"ÑĢÐµÑĪ\":129825,\"ĠgÃ¡i\":129826,\"ĠÑĨÐµÐ½\":129827,\"ĠÙģÙĤØ¯\":129828,\"ÙħØ§Øª\":129829,\"ãģķãĤĵãģ®\":129830,\"ĠphÃ¹\":129831,\"×ĺ×Ķ\":129832,\"ĠÙĪØ§ÙĦØªÙĬ\":129833,\"ĠØ¨Ùĥ\":129834,\"ìĿ´ëĤĺ\":129835,\"ÐºÑģ\":129836,\"ÙħÙĬØ±\":129837,\"ĠvÃ¹ng\":129838,\"ĠØ§ÙĦØ´Ø¹Ø¨\":129839,\"ĠNhÆ°ng\":129840,\"ãĥĢãĥ¼\":129841,\"Ġ×Ĺ×Ļ×Ļ×Ŀ\":129842,\"ĠØ´Ø®Øµ\":129843,\"×§×ķ×ĵ\":129844,\"ê²Ģ\":129845,\"×¢×©\":129846,\"×¢×ķ×ľ×Ŀ\":129847,\"×¦×ķ×¨\":129848,\"Ø¹ÙĤØ¯\":129849,\"ĠiÅŁlem\":129850,\"Ġ×Ķ×ĳ×Ĳ\":129851,\"ĠdÆ°á»¡ng\":129852,\"à¸Łà¸£à¸µ\":129853,\"ĠphÃŃa\":129854,\"ãģ®ä¸Ńãģ§\":129855,\"ĠÐ¿Ð¸\":129856,\"ĠngÃłnh\":129857,\"Ð½Ð¸Ð¼Ð°\":129858,\"ĠÙĩÙĦ\":129859,\"Ġ×ķ×Ĳ×ª\":129860,\"ĠÄĳÃ¡ng\":129861,\"Ã©quipe\":129862,\"ĠÑįÑĤÐ¾ÑĤ\":129863,\"ĠgÃ¶rev\":129864,\"ë§¤\":129865,\"ĠquÃ¢n\":129866,\"å¼ķãģį\":129867,\"æĻĤãģ«\":129868,\"ĠØ¨ÙħØ§\":129869,\"×ŀ×Ļ×ª\":129870,\"ĠÃ¼lke\":129871,\"Ġ×ŀ×§×ķ×Ŀ\":129872,\"×ĳ×Ł\":129873,\"æ°ĹæĮģãģ¡\":129874,\"Ġë§İìĿĢ\":129875,\"ĠyÃ¼ksek\":129876,\"ÑĨÐµÐ½ÑĤÑĢ\":129877,\"ĠÙħØ¬ÙĦØ³\":129878,\"ç§ģãģ®\":129879,\"ÙĤØ¯Ø±\":129880,\"Ġë¶Ģë¶Ħ\":129881,\"Ġì°¨\":129882,\"Ø®Ø±Ø¬\":129883,\"ãģĭãģªãĤĬ\":129884,\"ë³´ëĭ¤\":129885,\"Ġ×ŀ×Ļ×ĵ×¢\":129886,\"peÅĤni\":129887,\"Ġxá»Ń\":129888,\"ìĹĲìĦľëĬĶ\":129889,\"ĠØ¨Ø§ÙĦÙħ\":129890,\"ĠÙĪÙħØ§\":129891,\"ĠÑįÑĤÐ¾Ð¹\":129892,\"Ø¨ÙĬÙĨ\":129893,\"nÃ¼\":129894,\"ØŃØ²\":129895,\"ØŃØ²Ø¨\":129896,\"ĠÑĢÐ°Ð±Ð¾ÑĤÐ°\":129897,\"ĠNháºŃt\":129898,\"ÙĦØ§Ø¡\":129899,\"Ġëĵ¤\":129900,\"Ġëĵ¤ìĸ´\":129901,\"ãĤĦãģĻãģĦ\":129902,\"×Ĺ×ĸ×§\":129903,\"Ġ×Ķ×Ĺ×ĳ×¨×Ķ\":129904,\"Ð¿Ð¸ÑĤ\":129905,\"ãģĭãĤīãģ®\":129906,\"Ġë§ĲìĶĢ\":129907,\"Ġ×¤×ķ\":129908,\"ÙĦÙİ\":129909,\"à¹Ģà¸ķà¹ĩà¸¡\":129910,\"ĠÐļÐ¾\":129911,\"ĠmÃ³wi\":129912,\"ĠtÃŃn\":129913,\"×¨×Ĵ×©\":129914,\"×¤×¨×§\":129915,\"Ġtráº¡ng\":129916,\"ĠÐŀÐ½\":129917,\"×Ĺ×ķ×¥\":129918,\"ĠØ¹ÙĨØ¯ÙħØ§\":129919,\"ĠØ¨Ø±\":129920,\"ä½¿ãģĦ\":129921,\"Ġrá»Ļng\":129922,\"ëĮĢë¡ľ\":129923,\"íĪ¬\":129924,\"ĠktÃ³rych\":129925,\"Ð²Ð¸Ð´\":129926,\"à¸¥à¸¹à¸ģà¸Ħà¹īà¸²\":129927,\"ĠmogÄħ\":129928,\"Ġ×©×Ĺ\":129929,\"×ĳ×Ĺ×¨\":129930,\"ãĥĸãĥŃãĤ°\":129931,\"ĠThÃłnh\":129932,\"Ġ×Ķ×¨×Ļ\":129933,\"ĠÑģÑĤÐ°ÑĤÑĮ\":129934,\"ĠHá»Ļi\":129935,\"à¸ļà¹īà¸²à¸ĩ\":129936,\"çī¹ãģ«\":129937,\"ĠÄĲá»©c\":129938,\"èĢħãģ®\":129939,\"×¢×ŀ×ķ×ĵ\":129940,\"×ĺ×¨×Ķ\":129941,\"Ð¥\":129942,\"ĠÙħÙħØ§\":129943,\"ĠeÅŁ\":129944,\"ĠÐ½ÐµÐ¾Ð±ÑħÐ¾Ð´Ð¸Ð¼Ð¾\":129945,\"Ð½Ð¸ÐºÐ¾Ð²\":129946,\"ĠÃ¼zerinde\":129947,\"aÅĤa\":129948,\"Ġchá»ĭu\":129949,\"ĠØ§ÙĦØ¯ÙĬÙĨ\":129950,\"Ø£Ø®Ø¨Ø§Ø±\":129951,\"ĠÄĳau\":129952,\"ãģĮå¤ļãģĦ\":129953,\"jÄħcych\":129954,\"Ø¯Ø®ÙĦ\":129955,\"larÄ±nd\":129956,\"larÄ±ndan\":129957,\"Ġsáº»\":129958,\"à¸ŀà¸´à¹Ģà¸¨\":129959,\"à¸ŀà¸´à¹Ģà¸¨à¸©\":129960,\"×ª×Ł\":129961,\"tÄ±ÄŁÄ±\":129962,\"ĠluáºŃt\":129963,\"ĠÅŀe\":129964,\"ãĤ«ãĥ¼\":129965,\"ãģ®ãģĤãĤĭ\":129966,\"Ġ×Ķ×Ĳ×ª×¨\":129967,\"ĠØ§ÙĦØ¢ÙĨ\":129968,\"Ä±ldÄ±\":129969,\"ĠÃ¡o\":129970,\"ĠÐ½Ð°ÑĩÐ°Ð»\":129971,\"Ġviá»ĩn\":129972,\"Ġ×ĳ×¢×ķ×ľ×Ŀ\":129973,\"Ð·Ð½Ð°Ñĩ\":129974,\"×Ļ×ĺ×Ķ\":129975,\"ÐºÐ°Ð¼\":129976,\"ĠÐĺÐ·\":129977,\"à¹Ģà¸Ĥà¸µà¸¢à¸Ļ\":129978,\"à¸Ļà¹īà¸Ńà¸ĩ\":129979,\"ÑĤÑĢÐ¾\":129980,\"à¹Ģà¸Ł\":129981,\"ĠÐ¶Ð¸Ð·Ð½Ð¸\":129982,\"Ġà¸ªà¹Īà¸§à¸Ļ\":129983,\"ĠváºŃn\":129984,\"Ġê´Ģëł¨\":129985,\"ĠlÃ¢u\":129986,\"×¡×ĺ×¨\":129987,\"×§×©\":129988,\"Ø³ÙĬØ±\":129989,\"Ġ×Ĳ×ķ×ª×Ļ\":129990,\"ĠmÃ´i\":129991,\"Ø§Ø¦Ø¨\":129992,\"ĠÐ¾ÑģÑĤÐ°\":129993,\"ĠmÃ³n\":129994,\"Ġ×ĳ×ŀ×§×ķ×Ŀ\":129995,\"ĠØ¯Ø§Ø®ÙĦ\":129996,\"Ġ×Ĳ×ķ×¨\":129997,\"ĠÐ²Ð°Ñģ\":129998,\"ÙĥØ´Ùģ\":129999,\"ìĺ¨\":130000,\"à¸ĸà¹Īà¸²à¸¢\":130001,\"ĠkullanÄ±l\":130002,\"ĠtÃ´\":130003,\"ãģ«ãĤĪãĤĬ\":130004,\"ĠëĺĲíķľ\":130005,\"Ġ×¢×ĳ×ķ×ĵ×Ķ\":130006,\"ĠriÃª\":130007,\"ĠriÃªng\":130008,\"ĠyakÄ±n\":130009,\"Ø²Ø§\":130010,\"Å»\":130011,\"×Ĳ×ķ×Ľ×ľ\":130012,\"Ø´Ø§Ø±Ùĥ\":130013,\"ĠÐ±ÐµÑģ\":130014,\"×´\":130015,\"ĠØ§Ø¨ÙĨ\":130016,\"ĠTá»ķng\":130017,\"ÙĨØ¸\":130018,\"ÅĽwiad\":130019,\"ãĤµãĥ¼\":130020,\"à¸«à¸²à¸¢\":130021,\"ĠGÃ¼n\":130022,\"ĠhakkÄ±nda\":130023,\"à¹Ģà¸Ĥà¹īà¸²à¸¡à¸²\":130024,\"Ø²ÙĨ\":130025,\"ĠÐłÐ¾\":130026,\"Ġbiá»ĥn\":130027,\"ãģ©ãģĵ\":130028,\"ÙģØ¹ÙĦ\":130029,\"Ø²Ø¹\":130030,\"×¤×¨×ĺ\":130031,\"Ġ×Ķ×Ł\":130032,\"Ø£ÙĩÙĦ\":130033,\"Ġtháº¥t\":130034,\"ØŃÙħÙĦ\":130035,\"ÑĩÑĥ\":130036,\"ĠìĤ¬ìĭ¤\":130037,\"ì°¸\":130038,\"ĠìľĦíķ´\":130039,\"ÙĪØ¸\":130040,\"ĠÐŁÐ¾Ð´\":130041,\"Ġkhoáº£n\":130042,\"ÑĤÐµÐ½\":130043,\"ĠÙģØ§ÙĦ\":130044,\"ÑģÐ°Ð´\":130045,\"à¸Ļà¸Ńà¸Ļ\":130046,\"ĠØ§ÙĦØ³Ø¹ÙĪØ¯ÙĬØ©\":130047,\"\\\"ØĮ\":130048,\"ĠØ§ÙĦÙĴ\":130049,\"ãĤīãģļ\":130050,\"ĠtoÃ¡n\":130051,\"Ġcháº¯c\":130052,\"×Ľ×Ļ×¨\":130053,\"mÃ©d\":130054,\"mÃ©dia\":130055,\"Ø²ÙĪ\":130056,\"ĠyanÄ±\":130057,\"×¤×ł×Ļ×Ŀ\":130058,\"ØŃØ¸\":130059,\"ĠÐ±ÐµÑģÐ¿\":130060,\"ĠÐ±ÐµÑģÐ¿Ð»Ð°ÑĤ\":130061,\"ĠÐ±ÐµÑģÐ¿Ð»Ð°ÑĤÐ½Ð¾\":130062,\"ĠØ£ÙħØ§Ùħ\":130063,\"à¸Ńà¸²à¸¢\":130064,\"à¸Ńà¸²à¸¢à¸¸\":130065,\"×¨×©×ª\":130066,\"Ġgá»ĵ\":130067,\"Ġgá»ĵm\":130068,\"Ġuá»ĳng\":130069,\"ØµØ¨\":130070,\"kÄ±r\":130071,\"ãĥĳãĥ¼\":130072,\"Ġ×ľ×ĵ×¢×ª\":130073,\"ĠÐºÑĥÐ¿Ð¸ÑĤÑĮ\":130074,\"×ľ×ķ×Ĺ\":130075,\"ÙĪØ¶Ø¹\":130076,\"ÙĤÙĬÙħ\":130077,\"à¸Ľà¸²\":130078,\"Ð¶Ð¸Ð²\":130079,\"à¸Ķà¸´à¸Ļ\":130080,\"×Ĳ×ķ×¤\":130081,\"à¹Ģà¸¥à¹ĩà¸ģ\":130082,\"ãĥĥãĥī\":130083,\"Ð¸ÑĩÐµÑģÐºÐ¸Ñħ\":130084,\"ĠChá»§\":130085,\"ÐºÑĢÐ°Ñģ\":130086,\"ÙĪØµÙĦ\":130087,\"pÅĤat\":130088,\"Ð¼Ð¾ÑĢ\":130089,\"Ġ×Ķ×Ĳ×ķ\":130090,\"à¸Ńà¸´à¸Ļ\":130091,\"ĠíķľêµŃ\":130092,\"Ð³ÑĢÐµ\":130093,\"Ġìłľê³µ\":130094,\"ì°½\":130095,\"Ġê°ľìĿ¸ìłķë³´\":130096,\"Ġnghá»ĭ\":130097,\"à¸ĭà¸²\":130098,\"ØŃØ³Ø§Ø¨\":130099,\"ĠbyÅĤa\":130100,\"ÙħÙĦÙĥ\":130101,\"Ð¸ÑĩÐµÑģÐºÐ¸Ðµ\":130102,\"ĠbÃ¡c\":130103,\"Ø¶ØŃ\":130104,\"ê¸¸\":130105,\"×©×ŀ×¢\":130106,\"Ġìĸ´ëĸ»\":130107,\"Ġìĸ´ëĸ»ê²Į\":130108,\"ìĽĮ\":130109,\"Ø§ØªÙĩ\":130110,\"à¹Ĥà¸£à¸ĩà¹ģ\":130111,\"à¹Ĥà¸£à¸ĩà¹ģà¸£à¸¡\":130112,\"Ø®Ø¯ÙħØ©\":130113,\"ĠÐłÐ°\":130114,\"×Ľ×ķ×ľ×Ŀ\":130115,\"×ŀ×©×Ĺ×§\":130116,\"ĠÙĪÙĥØ§ÙĨ\":130117,\"×¡×ķ×£\":130118,\"ĠØ§ÙĦØŃÙĥÙĪÙħØ©\":130119,\"Ġ×ĳ×ĺ\":130120,\"ĠtráºŃn\":130121,\"Ġ×Ķ×¢×ķ×ľ×Ŀ\":130122,\"ĠÃŃch\":130123,\"tÄħ\":130124,\"×©×ŀ×ķ\":130125,\"Ġ×Ķ×¨×Ĳ×©×ķ×Ł\":130126,\"Ġíķĺê³ł\":130127,\"ãģķãĤī\":130128,\"ãģķãĤīãģ«\":130129,\"ãģ«ãģĹãģ¦\":130130,\"Ġà¸ľà¸¡\":130131,\"ãģ®ãĤĪãģĨãģª\":130132,\"ĠÙĪÙĤØª\":130133,\"ãĥįãĥĥãĥĪ\":130134,\"ÙĦØ¹Ø¨\":130135,\"ÙĪØ´\":130136,\"ìĺ¬\":130137,\"Ġà¸«à¸²à¸ģ\":130138,\"ĠmiaÅĤ\":130139,\"à¸Ĺà¸Ńà¸ĩ\":130140,\"Ð¸ÑĤÐ°\":130141,\"Ø§ØµØ±\":130142,\"Ð¸Ð»ÑģÑı\":130143,\"Ð·Ðµ\":130144,\"à¸Ľà¸£à¸°à¸¡à¸²à¸ĵ\":130145,\"ãģĿãĤĮãģ¯\":130146,\"ĠbÄ±r\":130147,\"ĠbÄ±rak\":130148,\"ØµÙĨØ§Ø¹\":130149,\"Ð®\":130150,\"Ø´Ø¹Ø±\":130151,\"Ġ×ł×Ĵ×ĵ\":130152,\"ĠØ¨Ø³Ø¨Ø¨\":130153,\"ãĥĿãĤ¤\":130154,\"ãĥĿãĤ¤ãĥ³ãĥĪ\":130155,\"ĠØ§ÙĦØ¬ÙĪ\":130156,\"ĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮÐºÐ¾\":130157,\"Ġkiáº¿m\":130158,\"ÙģÙİ\":130159,\"ĠØ¶Ø¯\":130160,\"×ĳ×Ļ×ĺ×ķ×Ĺ\":130161,\"ØªØ§Ø¨Ø¹\":130162,\"ÙĨØ²\":130163,\"ĠBáº£n\":130164,\"ĠaÃ§Ä±kl\":130165,\"ĠaÃ§Ä±klama\":130166,\"Ġà¸Ħà¸¸à¸ĵ\":130167,\"à¸Ĺà¸²\":130168,\"ÅĤÃ³w\":130169,\"Ø·Ø¨\":130170,\"ÙĨØŃÙĨ\":130171,\"Ġ×ŀ×§×ķ×¨\":130172,\"ĠÄ°s\":130173,\"ĠÐ´Ð¾Ð¼Ð°\":130174,\"Ġà¸§à¸±à¸Ļ\":130175,\"ĠdÃłnh\":130176,\"ÑıÐ½\":130177,\"Ð¼Ð¸ÑĢ\":130178,\"ĠmÃ´\":130179,\"ĠvÃłng\":130180,\"ØµØ§Ø¨\":130181,\"sÄ±nÄ±n\":130182,\"à¸Ħà¸·à¸Ļ\":130183,\"Ø®Ø¨Ø±\":130184,\"×ĸ×Ľ×ķ\":130185,\"Ġ×ŀ×©×Ķ×ķ\":130186,\"mÃ¼\":130187,\"ĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ð¸\":130188,\"Ġ×Ķ×¢×Ļ×¨\":130189,\"ĠÙĥÙĪ\":130190,\"ÙĤÙĦØ¨\":130191,\"Ġlá»Ľp\":130192,\"Ð¸ÐºÐ¸\":130193,\"×ł×ĳ\":130194,\"à¹Ĥà¸Ħà¸£\":130195,\"à¹Ĥà¸Ħà¸£à¸ĩ\":130196,\"à¹Ĥà¸Ħà¸£à¸ĩà¸ģà¸²à¸£\":130197,\"×ŀ×ķ×¢×ĵ\":130198,\"ÑıÑĤÑģÑı\":130199,\"à¸«à¸¥à¸±à¸ĩà¸Īà¸²à¸ģ\":130200,\"ÐµÐ½Ð¸Ñİ\":130201,\"Ġ×©×¢\":130202,\"ĠbÆ°á»Ľc\":130203,\"ãĥ¡ãĥ¼ãĥ«\":130204,\"ãĤĦãĤĬ\":130205,\"Ġ×Ļ×ķ×ĵ×¢\":130206,\"Ġê´Ģíķľ\":130207,\"ĠØ§ÙĦØ£ÙħØ±\":130208,\"ĠbÃ¶lge\":130209,\"ĠÑģÐ²Ð¾Ð¹\":130210,\"ÙĦØ³\":130211,\"Ġ×ŀ×Ļ×ķ×Ĺ×ĵ\":130212,\"ĠëĤ´ìļ©\":130213,\"ĠØ£Ø¬ÙĦ\":130214,\"ĠÄĲÃ´ng\":130215,\"Ġ×ŀ×ł×ª\":130216,\"Ġìĭľê°Ħ\":130217,\"ÙĥÙİ\":130218,\"ãģ¨ãģĦãģĨãģ®ãģ¯\":130219,\"ĠnaleÅ¼y\":130220,\"ØªÙĨØ¸ÙĬÙħ\":130221,\"ĠÑģÐ¾Ð·Ð´Ð°\":130222,\"ĠphÃ©\":130223,\"ĠphÃ©p\":130224,\"ãģ§ãģįãģ¾ãģĻ\":130225,\"ĠØ¹ÙĦÙħ\":130226,\"å¤§ãģįãģª\":130227,\"ãĤ²ãĥ¼ãĥł\":130228,\"íħĮ\":130229,\"Ġ×Ľ×ķ×ľ×ľ\":130230,\"ĠÐ¸Ð½ÑĤÐµÑĢÐ½ÐµÑĤ\":130231,\"ĠTá»«\":130232,\"ãģ¨ãģªãĤĭ\":130233,\"Ø²Ø§ÙĦ\":130234,\"ĠktÃ³rym\":130235,\"ĠnhÃ©\":130236,\"ìĪľ\":130237,\"Ð½ÐµÐ²\":130238,\"Ð´ÐµÑĢ\":130239,\"ãĤ¢ãĥĹãĥª\":130240,\"iá»ĩu\":130241,\"×ĳ×Ļ×ľ\":130242,\"ĠØªØ³\":130243,\"ĠÄĲÃ¢y\":130244,\"ĠØ§ÙĦØ®Ø§ØµØ©\":130245,\"Ġà¹Ģà¸Ĭ\":130246,\"Ġà¹Ģà¸Ĭà¹Īà¸Ļ\":130247,\"ØµØ§Ø¯\":130248,\"Ġdáº¡ng\":130249,\"Ø³Ø¹Ø±\":130250,\"Ġ×©×Ļ×ŀ×ķ×©\":130251,\"×Ĵ×Ļ×Ŀ\":130252,\"ãģĮãģĤãģ£ãģŁ\":130253,\"Ð¿ÑĢÐ¾Ð²\":130254,\"Ð¿ÑĢÐ¾Ð²Ð¾Ð´\":130255,\"Ġ×Ĳ×Ļ×ł×ķ\":130256,\"Ġ×ľ×¨×Ĳ\":130257,\"Ġ×ľ×¨×Ĳ×ķ×ª\":130258,\"ĠØ£ÙģØ¶ÙĦ\":130259,\"ĠØŃÙĦ\":130260,\"ĠØ£Ø¨ÙĪ\":130261,\"ê°ķ\":130262,\"Ġì§ĳ\":130263,\"ãģ®ãĤĪãģĨãģ«\":130264,\"Ġ×¤×ł×Ļ\":130265,\"×¡×Ļ×Ŀ\":130266,\"ĠÙĪÙĩØ°Ø§\":130267,\"ĠkaÃ§\":130268,\"ĠÃ©Ã©n\":130269,\"Ġê±´\":130270,\"ë°Ķ\":130271,\"ÑĥÐ·\":130272,\"à¸Ĥà¸Ńà¸ĩà¹Ģà¸£à¸²\":130273,\"iÅĤ\":130274,\"ĠÐľÑĭ\":130275,\"Ġcháº¿t\":130276,\"ĠØ§ÙĦØ«Ø§ÙĨÙĬ\":130277,\"×Ĳ×§\":130278,\"Ġ×ķ×¢×ľ\":130279,\"ĠØ§ÙĦØ·Ø¨\":130280,\"×ĳ×ĺ×Ĺ\":130281,\"ĠØ¬Ø¯ÙĬØ¯Ø©\":130282,\"ĠØ¹Ø¯Ùħ\":130283,\"Ø¹Ø²\":130284,\"à¸ªà¸´à¹Īà¸ĩà¸Ĺà¸µà¹Ī\":130285,\"ãģĻãĤĮãģ°\":130286,\"ĠÄĳÃ´\":130287,\"ì£ł\":130288,\"Ø¯ÙĤ\":130289,\"Ð½Ð¾Ð¼Ñĥ\":130290,\"Ġká»ĥ\":130291,\"ãĤ¢ãĥ³\":130292,\"å¤ļãģıãģ®\":130293,\"à¸Ľà¸£à¸°à¸ģ\":130294,\"à¸Ľà¸£à¸°à¸ģà¸Ńà¸ļ\":130295,\"×¤×¢×Ļ×ľ×ķ×ª\":130296,\"ĠÑģÑĤÐ¾Ð»\":130297,\"mayÄ±\":130298,\"ãģ¤ãģĦ\":130299,\"ĠyÄ±lÄ±nda\":130300,\"Ġà¸Īà¸¶à¸ĩ\":130301,\"koÅĦcz\":130302,\"ĠThÃ´ng\":130303,\"ĠÐ°ÐºÑĤÐ¸Ð²\":130304,\"Ð½ÑģÑĤ\":130305,\"Ð½ÑģÑĤÑĢÑĥ\":130306,\"ĠÃĸz\":130307,\"Ġ×ª×ŀ×Ļ×ĵ\":130308,\"ĠÙĥÙĨØª\":130309,\"ÑģÐ¸ÑģÑĤÐµÐ¼\":130310,\"prÃ©s\":130311,\"prÃ©sent\":130312,\"ĠnÃ¢\":130313,\"ĠnÃ¢ng\":130314,\"gÅĤos\":130315,\"ĠÙĪØ²ÙĬØ±\":130316,\"ØŃØµÙĦ\":130317,\"ĠÐ¸Ð¼ÐµÐµÑĤ\":130318,\"ØŃØ±ÙĥØ©\":130319,\"à¸ŀà¹Īà¸Ń\":130320,\"ãĤĴãģĬ\":130321,\"ĠØ§Ø³ØªØ®Ø¯Ø§Ùħ\":130322,\"×Ĳ×Ļ×¨×ķ×¢\":130323,\"ä»ĸãģ®\":130324,\"Ġ×©×Ķ×Ŀ\":130325,\"ãģĹãģŁãĤī\":130326,\"×©×ŀ×Ļ\":130327,\"ÑģÐ»Ð°\":130328,\"mÄ±\":130329,\"ĠbazÄ±\":130330,\"Ġíķĺì§Ģë§Į\":130331,\"×ĵ×ľ\":130332,\"ĠyaptÄ±ÄŁÄ±\":130333,\"ãĥĬãĥ¼\":130334,\"×ľ×Ļ×ľ×Ķ\":130335,\"ãģ¨ãģĦãģ£ãģŁ\":130336,\"Ã¤ndig\":130337,\"ĠÅŁa\":130338,\"ĠÙģÙĬÙħØ§\":130339,\"Ð¸ÑĤÐµÐ»Ñı\":130340,\"×ŀ×ķ×©\":130341,\"à¸Ĥà¸Ńà¸ļ\":130342,\"lÃ¼k\":130343,\"Ġhá»ĵi\":130344,\"Ġëªħ\":130345,\"ĠØ§ÙĦÙĥØ«ÙĬØ±\":130346,\"×¦×Ĳ\":130347,\"ĠhazÄ±r\":130348,\"Ø·Ø±Ùģ\":130349,\"Ø§ÙĬØ§\":130350,\"ĠÄĳÃ´i\":130351,\"ÐµÐ½Ð´\":130352,\"ÙĦØº\":130353,\"×Ĺ×ĸ×ķ×¨\":130354,\"ĠÐ²ÑģÐµÐ³\":130355,\"ĠÐ²ÑģÐµÐ³Ð´Ð°\":130356,\"ëĲĺê³ł\":130357,\"×ĵ×ķ×ĵ\":130358,\"Ð°Ð½Ð°\":130359,\"Ø¯ÙĪÙĦØ©\":130360,\"Ġhoáº¡ch\":130361,\"Ø¹ÙĦØ§\":130362,\"Ø¹ÙĦØ§Ø¬\":130363,\"Ġ×ķ×¢×ĵ\":130364,\"×Ķ×Ŀ\":130365,\"ÐºÐ¸Ð¹\":130366,\"ÙĦÙĲ\":130367,\"Ġ×¢×ľ×Ļ×ķ\":130368,\"ÑİÑīÐ¸Ð¹\":130369,\"Ġngá»§\":130370,\"ØµÙĨØ¹\":130371,\"ĠØ§ÙĦØ¹Ø±Ø§ÙĤ\":130372,\"à¸ķà¹Īà¸Ńà¹Ħà¸Ľ\":130373,\"ãģŁãģıãģķãĤĵ\":130374,\"Ġpháº¡m\":130375,\"ÙĦØ§ÙĨ\":130376,\"Ø§ØªÙĩØ§\":130377,\"ĠbÃ¶yle\":130378,\"ØªÙĨÙģÙĬ\":130379,\"ØªÙĨÙģÙĬØ°\":130380,\"Ġ×©×Ķ×Ļ×Ĳ\":130381,\"ÑģÑĥ\":130382,\"à¸¢à¸²à¸§\":130383,\"Ġ×©×ķ×ł×Ļ×Ŀ\":130384,\"Ġ×ŀ×ķ×ľ\":130385,\"ĠÑģÐ¸Ð»\":130386,\"Ġ×Ĳ×Ĺ×¨×Ļ×Ŀ\":130387,\"Ġphá»§\":130388,\"ÙĤØ·Ø¹\":130389,\"ĠThá»§\":130390,\"à¸Ľà¸£à¸°à¹Ģà¸Ĺà¸¨à¹Ħà¸Ĺà¸¢\":130391,\"ÙĨÙĤ\":130392,\"ĠÄĳoáº¡n\":130393,\"ĠØ¨Ø¥\":130394,\"Ð¿ÑĢÐµÐ´ÐµÐ»\":130395,\"×ķ×ª×ķ\":130396,\"ĠyarÄ±\":130397,\"Ð¿ÑĢÐµ\":130398,\"ĠczÄĻÅĽci\":130399,\"ØŃÙĥÙħ\":130400,\"×ķ×ł×Ļ×ª\":130401,\"×¤×¢×ľ\":130402,\"ãĤĴãģĹãģ¦\":130403,\"ĠktÃ³rzy\":130404,\"×ľ×Ŀ\":130405,\"ĠÄĲiá»ģu\":130406,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÐ°Ñı\":130407,\"ĠìĿ´ìĥģ\":130408,\"ãģĤãģ£ãģŁ\":130409,\"Ġ×ŀ×ĵ×ķ×ĳ×¨\":130410,\"×¤×ķ×¢×ľ\":130411,\"dÄ±m\":130412,\"éĢļãĤĬ\":130413,\"ĠÐ±ÑĥÐ´ÑĥÑĤ\":130414,\"à¹Ģà¸§à¹ĩà¸ļà¹Ħà¸ĭ\":130415,\"à¹Ģà¸§à¹ĩà¸ļà¹Ħà¸ĭà¸ķà¹Į\":130416,\"Ø§Ø®Ø±\":130417,\"×Ĺ×Ļ×ľ\":130418,\"Ġ×Ļ×ľ\":130419,\"Ġ×Ļ×ľ×ĵ×Ļ×Ŀ\":130420,\"×Ĺ×Ļ×¤\":130421,\"×Ĺ×Ļ×¤×ķ×©\":130422,\"ĠdÃ²ng\":130423,\"Ġ×©×ĸ×Ķ\":130424,\"ÑĮÐµ\":130425,\"ãģĤãģ¨\":130426,\"ìŀĲê°Ģ\":130427,\"×Ĳ×ĵ\":130428,\"ĠÃ¼z\":130429,\"ĠÃ¼zere\":130430,\"Ø¸ÙĦ\":130431,\"Ġ×Ĳ×ķ×ľ×Ļ\":130432,\"Ġ×ĳ×Ļ×ķ×Ŀ\":130433,\"ÙĦØ§Øª\":130434,\"ĠmÃª\":130435,\"ì¹¨\":130436,\"ØªØŃØ¯\":130437,\"ØªØŃØ¯Ø«\":130438,\"ĠØ®Ø§ØµØ©\":130439,\"ĠØ¨Ø±ÙĨ\":130440,\"ĠØ¨Ø±ÙĨØ§ÙħØ¬\":130441,\"ĠHÃłn\":130442,\"×Ĺ×¡\":130443,\"ĠÙĪÙĦÙħ\":130444,\"×¢×Ŀ\":130445,\"ĠmÄ±\":130446,\"à¸Łà¸±à¸ĩ\":130447,\"×©×¢×Ķ\":130448,\"ÙĪÙģÙĤ\":130449,\"×¡×ĳ×Ļ×¨\":130450,\"Ð°Ð»ÑĮÐ½ÑĭÐ¹\":130451,\"×Ĺ×©×ķ×ĳ\":130452,\"ĠnÃłng\":130453,\"ë³¼\":130454,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÑħ\":130455,\"Ġ×Ĺ×ķ×§\":130456,\"tÃ¶r\":130457,\"ĠÐ»ÑĥÑĩÑĪÐµ\":130458,\"ãĥĳãĥ³\":130459,\"à¸¥à¹Īà¸²à¸ªà¸¸à¸Ķ\":130460,\"ĠØ¬Ø¯ÙĬØ¯\":130461,\"ÙĬØ¯Ø©\":130462,\"à¸Ĺà¸£à¸ĩ\":130463,\"ãĤĪãĤĬãĤĤ\":130464,\"ÙĦÙĦ\":130465,\"ãĤĤãģ£ãģ¨\":130466,\"×©×ĺ×Ĺ\":130467,\"Ġ×ķ×Ĳ×Ļ\":130468,\"Ġgiá»ĳng\":130469,\"Ø¥Ø¶Ø§Ùģ\":130470,\"×§×ª\":130471,\"ë§Ŀ\":130472,\"ĠzostaÅĤ\":130473,\"ÑĢÐ¾Ð·\":130474,\"×Ļ×¤×Ļ×Ŀ\":130475,\"Ġ×Ľ×ľ×ľ\":130476,\"×ª×ķ×Ľ×Ł\":130477,\"dÄ±ÄŁÄ±nÄ±\":130478,\"ÙĤØ³Ùħ\":130479,\"ĠÑģÑĩÐ¸ÑĤ\":130480,\"ĠÑģÑĩÐ¸ÑĤÐ°\":130481,\"×ĺ×ķ×ª\":130482,\"ĠÆ°u\":130483,\"ĠØ¢ÙĦ\":130484,\"ĠÐ¼Ð¾Ð¼\":130485,\"ĠÐ¼Ð¾Ð¼ÐµÐ½ÑĤ\":130486,\"ĠØ§ÙĦØªØ¹ÙĦÙĬÙħ\":130487,\"×¢×ľ×ķ×ª\":130488,\"Ġchá»¯a\":130489,\"ĠyÃ¶n\":130490,\"ĠtrÃł\":130491,\"ĠØŃÙĬÙĨ\":130492,\"à¸ĭà¸±\":130493,\"ĠCÃ¡\":130494,\"×¢×ĸ\":130495,\"ĠØ§ÙĦØ£ÙħÙĨ\":130496,\"cÃŃ\":130497,\"Ġvá»ĳn\":130498,\"Ġà¸Ļà¸²à¸¢\":130499,\"Ð¾Ð±ÑĢÐ°\":130500,\"×§×Ĳ\":130501,\"Ġthiáº¿u\":130502,\"ãĥŀãĥ¼\":130503,\"à¸ªà¸§à¸Ļ\":130504,\"Ġgá»Ń\":130505,\"Ġgá»Ńi\":130506,\"Ġê¹\":130507,\"Ġê¹Ģ\":130508,\"Ġthiá»ĩn\":130509,\"ÙĤØ¹\":130510,\"wÄĻ\":130511,\"ĠÐ½Ð°Ð¼\":130512,\"ÑĤÐ¾Ð»\":130513,\"ĠsÃ¢n\":130514,\"×¡×ķ×Ĵ\":130515,\"ĠgeÃ§ir\":130516,\"ÑĤÐ¾Ð½\":130517,\"ÐµÐ²Ð°\":130518,\"ĠÙĪØ¶Ø¹\":130519,\"ĠØ¹Ø´Ø±\":130520,\"ÑģÐ»Ð¾\":130521,\"à¸Īà¸±à¸ļ\":130522,\"ãĤ·ãĥ¼\":130523,\"ãĤĤãģĤãĤĬãģ¾ãģĻ\":130524,\"Ġváº»\":130525,\"ĠÄĲá»ĥ\":130526,\"Ø±ÙģØ¹\":130527,\"ĠØ§ÙĦØ£ÙĪÙĦÙī\":130528,\"ÑĤÐ°ÑĢ\":130529,\"ãģªãģıãģ¦\":130530,\"ÙħÙİ\":130531,\"quÃŃ\":130532,\"×¢×ł×Ļ×Ļ×ł\":130533,\"Ð³ÐµÐ½\":130534,\"ĠhÃ´m\":130535,\"à¸Īà¸²\":130536,\"Ġnhá»Ľ\":130537,\"ĠØ§ÙĦØ¹Ø±Ø¨ÙĬ\":130538,\"×Ĳ×Ł\":130539,\"Ġlá»Ļ\":130540,\"ĠjeÅĽli\":130541,\"à¹Ģà¸Ĺà¹Īà¸²à¸Ļà¸±à¹īà¸Ļ\":130542,\"ĠØ£ÙĨÙĩØ§\":130543,\"Ġtuy\":130544,\"Ġtuyá»ĩt\":130545,\"ĠØªØµ\":130546,\"ĠØªØµÙĨÙĬ\":130547,\"ĠØªØµÙĨÙĬÙģ\":130548,\"Ġê·¸ëŁ¬ëĤĺ\":130549,\"Ð¾ÑĨÐµÐ½\":130550,\"à¸ģà¸´à¸Īà¸ģà¸£à¸£à¸¡\":130551,\"ãĤĦãģ£ãģ¦\":130552,\"Ġkhá»ıi\":130553,\"Ġlá»ĩ\":130554,\"ĠØ§ÙĦÙħØ¬ØªÙħØ¹\":130555,\"à¸Ńà¸²à¸Īà¸Īà¸°\":130556,\"à¸Īà¸°à¹Ģà¸Ľà¹ĩà¸Ļ\":130557,\"Ð¾Ð²ÑĭÐ¹\":130558,\"×¨×Ŀ\":130559,\"à¸£à¹īà¸Ńà¸Ļ\":130560,\"×©×ŀ×©\":130561,\"äººãģ«\":130562,\"ĠÃ¼zerine\":130563,\"×¤×¨×Ļ\":130564,\"duÄŁu\":130565,\"ÑĩÐ¸Ðº\":130566,\"ĠmÃ¹a\":130567,\"Ġ×ŀ×ª×ķ×ļ\":130568,\"ĠcáºŃp\":130569,\"ĠØªØ§Ø±ÙĬØ®\":130570,\"×ĳ×ľ×ª×Ļ\":130571,\"Ġì¢Ģ\":130572,\"ÙĦØ¹\":130573,\"Ø¨Ø§ÙĨ\":130574,\"ĠchÃºt\":130575,\"Ġ×Ķ×ĸ×ŀ×Ł\":130576,\"nÃ©e\":130577,\"ĠLiÃªn\":130578,\"ĠÙĦÙĦØ£\":130579,\"ØŃØ¯ÙĪØ¯\":130580,\"Ġ×¢×Ľ×©×Ļ×ķ\":130581,\"Ð²Ð¾Ð·\":130582,\"ĠyaptÄ±\":130583,\"ĠÐ¾Ð±Ð¾\":130584,\"à¹ĥà¸«à¹īà¸ģà¸±à¸ļ\":130585,\"Ġ×ĳ×Ķ×Ŀ\":130586,\"ãģıãģ¦\":130587,\"Ø±Ø£Ø³\":130588,\"ĠÑģÑĢÐµÐ´ÑģÑĤÐ²\":130589,\"ĠBÃłi\":130590,\"ãģĵãģ¨ãģ«\":130591,\"ĠìĤ¬íļĮ\":130592,\"Ġëª¨ëĳĲ\":130593,\"×ĳ×Ĳ\":130594,\"Ġtráº¯ng\":130595,\"ĠØ§ÙĦØ¨ÙĦØ¯\":130596,\"ĠHoÃłng\":130597,\"Ð»Ð¸Ð±Ð¾\":130598,\"ĠÐ´ÑĢÑĥÐ³Ð¸Ñħ\":130599,\"Ä°R\":130600,\"ÑĥÐ¼Ð°\":130601,\"ĠJeÅĽli\":130602,\"ãĤĤãģĹ\":130603,\"ĠvÃ²ng\":130604,\"Ġ×Ĳ×ª×¨×Ļ×Ŀ\":130605,\"ĠÄĳá»įc\":130606,\"ĠÐ²Ð¾ÑĤ\":130607,\"ãģłãģĮ\":130608,\"ë°°\":130609,\"à¸Ķà¸¹à¹ģà¸¥\":130610,\"Ġ×ŀ×Ľ×ľ\":130611,\"ìĹĲëıĦ\":130612,\"Ð³Ð°Ð·\":130613,\"Ġ×ł×ķ×¡×¤×Ļ×Ŀ\":130614,\"ãģĵãģ¨ãģ§\":130615,\"ĠØªÙĪ\":130616,\"ãģ§ãģĤãĤĬ\":130617,\"à¸Ļà¸±à¹Īà¸ĩ\":130618,\"ĠÐ¼Ð¾Ð¶ÐµÑĤÐµ\":130619,\"szÄĻ\":130620,\"ãģ®ãģł\":130621,\"ĠÙħÙĨÙĩ\":130622,\"Ġbá»ķ\":130623,\"ĠbÃ¼t\":130624,\"ĠbÃ¼tÃ¼n\":130625,\"ë³´ê³ł\":130626,\"Ġchá»ĵng\":130627,\"à¹ģà¸Īà¹īà¸ĩ\":130628,\"ĠVÃ¬\":130629,\"ĠØŃØ±\":130630,\"Ġgiáº£n\":130631,\"ĠÙħØ¯ÙĬÙĨØ©\":130632,\"ØªØ·Ø¨ÙĬÙĤ\":130633,\"à¸Īà¸´\":130634,\"æĹ¥ãģ®\":130635,\"Ð±Ð¸Ð»\":130636,\"à¸ģà¸Ńà¸ĩ\":130637,\"ê³³\":130638,\"ĠØ£ÙħØ§\":130639,\"ìĨĲ\":130640,\"ĠtrÃ¡i\":130641,\"ĠÐ²ÑģÐµÐ¼\":130642,\"ĠØ³ÙĨØ©\":130643,\"ĠÑģÐ°Ð¹ÑĤ\":130644,\"ĠÐ³Ð¾ÑĤÐ¾Ð²\":130645,\"Ð¿Ñĭ\":130646,\"ĠëĲł\":130647,\"ĠØ§ÙĦØ®Ø·\":130648,\"ĠØ§ÙĦØ±Ø¦ÙĬØ³ÙĬØ©\":130649,\"Ġíķ©ëĭĪëĭ¤\":130650,\"ĠìķĦëĭĪëĿ¼\":130651,\"ĠìĿ´ëłĩ\":130652,\"ĠìĿ´ëłĩê²Į\":130653,\")ØĮ\":130654,\"hÃ¤lt\":130655,\"ĠØ£ÙħØ±\":130656,\"ĠØ¹ÙħØ±\":130657,\"à¸ģà¹ĩà¸Īà¸°\":130658,\"Ġà¸Ĺà¸³à¹ĥà¸«à¹ī\":130659,\"ĠcÃ¢n\":130660,\"Ġ×ĳ×ľ\":130661,\"Ġ×ĳ×ľ×ĳ×ĵ\":130662,\"×¤×¡×§\":130663,\"ĠÙĬÙĤÙĪÙĦ\":130664,\"Ð½ÑĥÑĤÑĮ\":130665,\"à¹ģà¸Ħ\":130666,\"Ġ×§×¦×ª\":130667,\"Ġnáº±m\":130668,\"ĠhÃ²a\":130669,\"bilitÃł\":130670,\"ĠìĹĨëĭ¤\":130671,\"Ġ×Ľ×¤×Ļ\":130672,\"ÑĢÐ¾Ð¶\":130673,\"Ð»Ð°Ð³Ð°\":130674,\"Ġ×Ķ×©×Ļ\":130675,\"ĠNgoÃłi\":130676,\"ĠÙĪØ¬\":130677,\"ĠÙĪØ¬ÙĪØ¯\":130678,\"ĠìľĦíķľ\":130679,\"ĠusÅĤug\":130680,\"Ġtuáº§n\":130681,\"dÅº\":130682,\"×ŀ×ķ×Ł\":130683,\"ĠØ§ÙĦØ¹Ø¯ÙĬØ¯\":130684,\"Ġcháº³ng\":130685,\"à¸ªà¸¸à¸Ĥà¸łà¸²à¸ŀ\":130686,\"Ġ×ĳ×ĵ×¨×ļ\":130687,\"ĠÑģÐµÐ±Ðµ\":130688,\"ĠìŀĪìĿĦ\":130689,\"ĠØ§ÙĦØŃØ§ÙĦ\":130690,\"ĠdÃ¡\":130691,\"ĠcÆ°á»Ŀi\":130692,\"ĠnghiÃªn\":130693,\"ieÅĦ\":130694,\"ĠDÆ°Æ¡ng\":130695,\"ï¼ħ\":130696,\"Ø´Ø¯\":130697,\"ãģĦãģ¤ãĤĤ\":130698,\"ĠÐ²ÑĭÐ±Ð¾ÑĢ\":130699,\"Ġcá»Ļng\":130700,\"×©×Ļ×ł×ķ×Ļ\":130701,\"Ġcháº¡y\":130702,\"Ġ×ĳ×¢×ľ×Ļ\":130703,\"Ø§Ø®Ø¨Ø§Ø±\":130704,\"íķĺë©°\":130705,\"Å¼Äħ\":130706,\"Ø¬Ø§Ø²\":130707,\"Ġ×ł×¨×Ĳ×Ķ\":130708,\"à¸¨à¸¹\":130709,\"à¸¨à¸¹à¸Ļ\":130710,\"à¸¨à¸¹à¸Ļà¸¢à¹Į\":130711,\"×Ĵ×¢\":130712,\"Ġ×¢×ĵ×Ļ\":130713,\"Ġ×¢×ĵ×Ļ×Ļ×Ł\":130714,\"Ø¨Ø±Ø§\":130715,\"ÑĨÐ¸Ð¹\":130716,\"ĠÄĲá»ĵng\":130717,\"ÙĤØ§ÙĨÙĪÙĨ\":130718,\"ĠÄĳá»©ng\":130719,\"ãģĹãģŁãĤĬ\":130720,\"Ġ×Ĺ×Ļ×Ļ\":130721,\"ĠëĲľ\":130722,\"ĠëĲľëĭ¤\":130723,\"ĠÐ¼ÐµÐ¶Ð´Ñĥ\":130724,\"à¸ŀà¸§à¸ģà¹Ģà¸Ĥà¸²\":130725,\"ĠBáº¯c\":130726,\"à¸¥à¸³\":130727,\"ë°±\":130728,\"ĠíĻķ\":130729,\"à¸¡à¸²à¸ģà¸¡\":130730,\"à¸¡à¸²à¸ģà¸¡à¸²à¸¢\":130731,\"Ð±Ð°Ð½Ðº\":130732,\"à¸Ńà¸²à¸ģà¸²à¸£\":130733,\"ĠhÃł\":130734,\"Ġ×ľ×ł\":130735,\"à¸Ńà¸Ń\":130736,\"Ġë°Ķë¡ľ\":130737,\"Ð»Ð¾Ð¼\":130738,\"mÃ¡tica\":130739,\"ĠØŃØ¯\":130740,\"Ø§Ø¨Øª\":130741,\"à¸Ĺà¸µà¹Īà¸Ļà¸µà¹Ī\":130742,\"ĠcoÅĽ\":130743,\"ÙģÙĬØ¯ÙĬ\":130744,\"ÙģÙĬØ¯ÙĬÙĪ\":130745,\"ĠÐ¼ÐµÑģÑĤÐ¾\":130746,\"ĠphÃºt\":130747,\"à¸¡à¸²à¸ģà¸ģà¸§à¹Īà¸²\":130748,\"×Ĳ×¤\":130749,\"Ø¨ÙĲ\":130750,\"ĠPhÃº\":130751,\"ì±Ħ\":130752,\"ĠÙĪØ³ÙĦÙħ\":130753,\"à¸Īà¸µà¸Ļ\":130754,\"Ð¿Ð¾ÑĤÑĢÐµÐ±\":130755,\"Ġ×Ĺ×ĵ×©×ķ×ª\":130756,\"Ø´ÙĪ\":130757,\"Ġ×¢×¦×ŀ×ķ\":130758,\"ĠØ¹ÙħÙĦÙĬØ©\":130759,\"à¸Ħà¸¸à¸ĵà¸łà¸²à¸ŀ\":130760,\"ãģ¾ãģĻãģĮ\":130761,\"Ø¯Ø¹ÙĪ\":130762,\"Ø·Ø±ÙĤ\":130763,\"à¹Ħà¸¡à¹Īà¸ķà¹īà¸Ńà¸ĩ\":130764,\"ë²Ķ\":130765,\"ìĬ¹\":130766,\"ĠkÃŃch\":130767,\"ĠìĹĨëĬĶ\":130768,\"ĠÑĤÐ°Ð¼\":130769,\"ĠÙĨØŃÙĪ\":130770,\"ĠØ§ÙĦÙĤØ§ÙĨÙĪÙĨ\":130771,\"×Ĺ×ķ×Ŀ\":130772,\"ĠkÄ±z\":130773,\"Ġ×ĵ×Ļ×Ł\":130774,\"ĠÐ²ÑĢÐµÐ¼ÐµÐ½Ð¸\":130775,\"ãģ£ãģŁãĤĬ\":130776,\"ĠØ´ÙĩØ±\":130777,\"ĠìĦľë¹ĦìĬ¤\":130778,\"×¢×©×Ķ\":130779,\"ĠgiÃ¡c\":130780,\"ĠØ§ÙĦØ³ÙĦØ§Ùħ\":130781,\"Ġ×Ĳ×©\":130782,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐ°\":130783,\"à¸Īà¸±à¸Ķà¸ģà¸²à¸£\":130784,\"ÐºÐ¾ÑĢ\":130785,\"Ġ×Ķ×ĺ×ķ×ĳ\":130786,\"à¸£à¸²à¸¢à¸ģà¸²à¸£\":130787,\"ì£¼ìĿĺ\":130788,\"à¹ģà¸ķà¹Īà¸¥à¸°\":130789,\"Ġê·¸ëŁ°ëį°\":130790,\"à¸Ĺà¸µà¹Īà¹Ģà¸Ľà¹ĩà¸Ļ\":130791,\"Ġ×ª×ķ×ļ\":130792,\"Ø¨ÙĬØ§ÙĨ\":130793,\"ÐĻ\":130794,\"oÅĽciÄħ\":130795,\"ÑĤÐ¾Ðº\":130796,\"ĠÃĶ\":130797,\"ĠÃĶng\":130798,\"à¹Ħà¸¡à¹Īà¹ĥà¸Ĭà¹Ī\":130799,\"ãģ¿ãģ¦\":130800,\"ÐŁÐ¾\":130801,\"ĠÐ§ÑĤÐ¾\":130802,\"íĻ©\":130803,\"×ĺ×ĳ×¢\":130804,\"Ð¼ÐµÑĤÑĢ\":130805,\"Ġ×ĳ×ŀ×Ķ\":130806,\"Ġ×ĳ×ŀ×Ķ×ľ\":130807,\"Ġ×ĳ×ŀ×Ķ×ľ×ļ\":130808,\"ÑĩÑĮ\":130809,\"×§×©×Ķ\":130810,\"Ð·Ð½Ð°Ðº\":130811,\"Ð·Ð½Ð°ÐºÐ¾Ð¼\":130812,\"ujÄĻ\":130813,\"×Ļ×¦×¨\":130814,\"ĠØ§ÙĦÙħÙĦÙĥ\":130815,\"Ä±yla\":130816,\"×Ĳ×ŀ×ª\":130817,\"à¸Ľà¸´à¸Ķ\":130818,\"×Ĳ×Ĺ×ĵ\":130819,\"Ø±Ø§Ø¯\":130820,\"ĠmáºŃt\":130821,\"ëĭ¤ëĬĶ\":130822,\"Ġláº¡nh\":130823,\"×©×ľ×ķ×©\":130824,\"ØŃØ¯ÙĬØ«\":130825,\"ØªØ²\":130826,\"å¹´ãģ®\":130827,\"ĠÐºÐ²Ð°ÑĢ\":130828,\"ĠÐºÐ²Ð°ÑĢÑĤÐ¸ÑĢ\":130829,\"ä½ľãĤĬ\":130830,\"Ø±ÙĪØ¨\":130831,\"Ð¾Ð²Ð°Ð½\":130832,\"ĠÐ¢Ðµ\":130833,\"à¸Īà¸³à¸ģ\":130834,\"à¸Īà¸³à¸ģà¸±à¸Ķ\":130835,\"Ø¨Ø§Ø·\":130836,\"×Ĵ×ª\":130837,\"ĠÐ¼Ð°ÑĪ\":130838,\"ĠÐ¼Ð°ÑĪÐ¸Ð½\":130839,\"×Ļ×¦×Ķ\":130840,\"ãģ»ãģ¨\":130841,\"ãģ»ãģ¨ãĤĵãģ©\":130842,\"ÃŃdo\":130843,\"ĠÑıÐ·ÑĭÐº\":130844,\"à¸ļà¸´à¸Ļ\":130845,\"à¸ªà¸ĸà¸²à¸Ļà¸Ĺà¸µà¹Ī\":130846,\"ĠìĹ´\":130847,\"ãĤ¦ãĤ§\":130848,\"ĠcÃł\":130849,\"Ð¿Ð°Ð½\":130850,\"åı£ãĤ³ãĥŁ\":130851,\"ĠØ±Ø¯\":130852,\"Ø§ÙĤØª\":130853,\"ĠÙĥØ¨\":130854,\"ĠÙĥØ¨ÙĬØ±Ø©\":130855,\"ÑģÑĤÐ°Ð»\":130856,\"×©×ŀ×Ĺ\":130857,\"posiciÃ³n\":130858,\"ĠÙħÙĦÙĬÙĪÙĨ\":130859,\"ĠìĿ´ìķ¼\":130860,\"ĠìĿ´ìķ¼ê¸°\":130861,\"ĠhÃºt\":130862,\"ĠÅĽwiat\":130863,\"Ġë°©ë²ķ\":130864,\"ĠÑģÐ²ÐµÑĤ\":130865,\"ĠÐ²Ð¸Ð´ÐµÐ¾\":130866,\"ĠØ§ÙĦÙĨØ¸Ø§Ùħ\":130867,\"Ġtrá»Ŀi\":130868,\"ĠëĮĢíķ´ìĦľ\":130869,\"×¨×ŀ×ª\":130870,\"ØªØ¯Ø§ÙĪÙĦ\":130871,\"×ķ×¨×ĵ\":130872,\"×ª×ŀ\":130873,\"×ª×ŀ×ķ×ł×ķ×ª\":130874,\"Ġ×ŀ×Ł\":130875,\"ĠÐ´Ð²Ð°\":130876,\"Ġ×Ķ×§×ķ\":130877,\"æĹ¥ãģ«\":130878,\"Ġ×Ķ×Ĵ×Ļ×¢\":130879,\"à¹Ģà¸ŀà¸´à¹Īà¸¡à¹Ģà¸ķà¸´à¸¡\":130880,\"ÙħØ§Ø±Ø³\":130881,\"Ġê²ĥìŀħëĭĪëĭ¤\":130882,\"ãģªãģĦãģ¨\":130883,\"Ġnhiá»ĩt\":130884,\"ëĲ©ëĭĪëĭ¤\":130885,\"Ġ×ĳ×ł×ķ×©×Ĳ\":130886,\"Ġê°Ģìŀ¥\":130887,\"Ġvá»£\":130888,\"ĠÄĳÃ³ng\":130889,\"×¦×Ļ×ľ×ķ×Ŀ\":130890,\"ê´Ģê³Ħ\":130891,\"Ð²Ð°Ñı\":130892,\"×Ĳ×Ļ×ĸ\":130893,\"×Ĳ×Ļ×ĸ×Ķ\":130894,\"ĠÙĨØ¸Ø§Ùħ\":130895,\"ÙħØŃØ§ÙģØ¸\":130896,\"Ġtáº£i\":130897,\"ê¸°ëıĦ\":130898,\"à¸Ľà¸±à¸Īà¸Īà¸¸\":130899,\"à¸Ľà¸±à¸Īà¸Īà¸¸à¸ļà¸±à¸Ļ\":130900,\"×Ľ×ĵ×ķ×¨\":130901,\"ĠìķĦìĿ´\":130902,\"×Ľ×ł×Ļ×¡\":130903,\"à¹Ģà¸ķà¸£\":130904,\"à¹Ģà¸ķà¸£à¸µà¸¢à¸¡\":130905,\"Ġngoáº¡i\":130906,\"ĠØ¯ÙĪÙĦØ§Ø±\":130907,\"Ġráº»\":130908,\"ĠkhÄĥn\":130909,\"Ø¹Ø¯Ø¯\":130910,\"Ø´Ø¹Ø¨\":130911,\"czyÄĩ\":130912,\"ĠØ§ÙĦÙĥØ±\":130913,\"ĠÑĩÐµÐ»Ð¾Ð²ÐµÐºÐ°\":130914,\"ĠÙĪØ¥ÙĨ\":130915,\"×Ĳ×ĺ\":130916,\"ĠthÆ¡\":130917,\"ĠØ§ÙĦØ±ÙĬØ§Ø¶\":130918,\"Ð¾Ð¿ÑĢÐµÐ´ÐµÐ»\":130919,\"Ð¾Ð¿ÑĢÐµÐ´ÐµÐ»ÐµÐ½\":130920,\"×Ķ×ŀ×©×ļ\":130921,\"ĠÐĿÐ¾Ð²Ð¾\":130922,\"Ð·ÑĭÐ²Ð°\":130923,\"ĠØ§ÙĦØ¯ÙĪÙĦÙĬ\":130924,\"ĠÄĳÃ¡p\":130925,\"ĠÐºÑĢÐµÐ´\":130926,\"ĠÐºÑĢÐµÐ´Ð¸ÑĤ\":130927,\"Ð¾Ð²Ð¾Ð³Ð¾\":130928,\"ĠmÃ´n\":130929,\"à¸Ľà¸£à¸°à¹Ĥà¸¢\":130930,\"à¸Ľà¸£à¸°à¹Ĥà¸¢à¸Ĭà¸Ļ\":130931,\"à¸Ľà¸£à¸°à¹Ĥà¸¢à¸Ĭà¸Ļà¹Į\":130932,\"ÑģÑĤÐµ\":130933,\"ĠThá»ĭ\":130934,\"Ø¯ÙĬØ©\":130935,\"×ŀ×¦×ķ\":130936,\"ÙģØ§Øª\":130937,\"×§×ĵ×Ŀ\":130938,\"ìĿ´ëĿ¼ê³ł\":130939,\"ÙĪØ®\":130940,\"Ġ×Ĺ×ĸ\":130941,\"ĠÑĦÐ¾ÑĤÐ¾\":130942,\"×ľ×Ļ×ª\":130943,\"ØªÙİ\":130944,\"ÙĪØ¨Ø±\":130945,\"Ð¹ÑĤÐ¸\":130946,\"ĠÃ¶ÄŁren\":130947,\"Ġ×Ķ×ĸ×ķ\":130948,\"Ġvá»įng\":130949,\"ÙĤÙĪØ©\":130950,\"ĠTÃ¢y\":130951,\"ĠÐĿÐ¸\":130952,\"Ġ×©×ķ×ĳ\":130953,\"ãģ¨è¨ĢãĤıãĤĮ\":130954,\"ãģ©ãĤĵãģª\":130955,\"×Ĺ×¦×Ļ\":130956,\"ï½ľ\":130957,\"Ġ×ķ×Ķ×ķ×Ĳ\":130958,\"ä¸Ģãģ¤\":130959,\"ĠÑģÑĤÐ¾Ð¸ÑĤ\":130960,\"niÄħ\":130961,\"×ĺ×¨×Ļ\":130962,\"ĠÐ´ÐµÑĤÐµÐ¹\":130963,\"Ð½ÑıÑĤÑĮ\":130964,\"ĠÑģÐ´ÐµÐ»Ð°ÑĤÑĮ\":130965,\"Ġë§İìĿ´\":130966,\"ä½ķãģĭ\":130967,\"ãģĽãĤĭ\":130968,\"à¹Ħà¸«à¸¡\":130969,\"à¸ķà¸´à¸Ķà¸ķà¹Īà¸Ń\":130970,\"Ġ×ĳ×ª×Ĺ\":130971,\"Ġ×ĳ×ª×Ĺ×ķ×Ŀ\":130972,\"ìĻĦ\":130973,\"ì§ĢëĬĶ\":130974,\"ÑģÑĤÐ°ÑĤ\":130975,\"ÑıÑģÐ½\":130976,\"Ã¼b\":130977,\"Ġtháº£\":130978,\"Ġ×ĳ×Ĳ×ŀ×ª\":130979,\"Ġtuyáº¿n\":130980,\"×ĵ×Ļ×¨×Ķ\":130981,\"Ġ×Ĳ×Ļ×©×Ļ\":130982,\"×ĸ×Ľ×¨\":130983,\"ãģ°ãģĭãĤĬ\":130984,\"ĠxÃ©t\":130985,\"×Ľ×Ļ×ķ\":130986,\"×Ľ×Ļ×ķ×ķ×Ł\":130987,\"diÄŁini\":130988,\"ĠØ§ÙĦÙħÙĪØ¶ÙĪØ¹\":130989,\"ĠháºŃu\":130990,\"à¸Īà¸²à¸ģà¸ģà¸²à¸£\":130991,\"×ĳ×¡×Ļ×¡\":130992,\"Ġ×ŀ×Ĵ×Ļ×¢\":130993,\"×ĳ×Ļ×¢\":130994,\"ĠÙĪØ¬Ùĩ\":130995,\"à¹ģà¸Ķà¸ĩ\":130996,\"à¸Ļà¸²à¸ĩ\":130997,\"ĠÅŀa\":130998,\"ì¡´\":130999,\"ë¡Ģ\":131000,\"à¸ķà¸°\":131001,\"Ġ×Ķ×Ĺ×Ļ×Ļ×Ŀ\":131002,\"ÙģÙĬØ¯\":131003,\"ãģ§ãģĻãģĭãĤī\":131004,\"ê·ľ\":131005,\"Åºni\":131006,\"ĠÐ»ÑİÐ´ÐµÐ¹\":131007,\"ĠyÃ¼zde\":131008,\"Ä±yorum\":131009,\"ĠØ§ÙĦØ¨ØŃØ±\":131010,\"eÃ±o\":131011,\"Ð¿Ð°ÑĢ\":131012,\"ÙĬÙĤØ©\":131013,\"Ð¾Ð±ÑĢ\":131014,\"×¨×ķ×ļ\":131015,\"ØªÙĪÙĤØ¹\":131016,\"ĠØ§ÙĦØ´ÙĬØ®\":131017,\"åĪĿãĤģãģ¦\":131018,\"ĠÑĤÐµÐ»ÐµÑĦ\":131019,\"ĠÑĤÐµÐ»ÐµÑĦÐ¾Ð½\":131020,\"ĠthÃ´i\":131021,\"Ġ×Ļ×Ľ×ķ×ľ×Ļ×Ŀ\":131022,\"ĠÅŁirk\":131023,\"ĠÅŁirket\":131024,\"Ġìļ°ë¦¬ê°Ģ\":131025,\"ĠÄĳÃ´ng\":131026,\"Ġ×ª×ķ×ĵ×Ķ\":131027,\"ÑģÐ¼Ð¾ÑĤÑĢÐµÑĤÑĮ\":131028,\"ĠÙĦÙĩÙħ\":131029,\"Ġ×ľ×Ľ\":131030,\"ĠNÃ³\":131031,\"ĠØŃØ§ÙĦØ©\":131032,\"ãģĦãģĳ\":131033,\"×§×¨×ķ\":131034,\"azÄ±\":131035,\"ãĤ³ãĥ¼\":131036,\"ĠÙĦÙĦØª\":131037,\"sÄ±nÄ±z\":131038,\"ĠHáº£i\":131039,\"ê¸°ìĪł\":131040,\"à¸¢à¸±à¸ĩà¹Ħà¸¡à¹Ī\":131041,\"ëĭ¤ê³ł\":131042,\"×¤×Ĺ\":131043,\"Ġ×ľ×Ĵ×ĳ×Ļ\":131044,\"ĠØ¹ÙĨÙĩ\":131045,\"ĠÐºÐ°Ð·\":131046,\"ĠÐºÐ°Ð·Ð¸Ð½Ð¾\":131047,\"Ø¨ÙĪØ±\":131048,\"ÑĦÐµÑĢ\":131049,\"Ġê°ĻìĿ´\":131050,\"ØªØ³Ø¬ÙĬÙĦ\":131051,\"ĠØ§ÙĦÙħØ±ÙĥØ²\":131052,\"ĠThÃ¡i\":131053,\"Ð´Ð°ÑĤÑĮ\":131054,\"×ŀ×Ļ×Ļ×ľ\":131055,\"ĠpaylaÅŁ\":131056,\"ãģ¤ãģ®\":131057,\"à¹Ģà¸£à¸·à¸Ń\":131058,\"nÃ§a\":131059,\"×ł×ķ×Ĺ\":131060,\"Ġ×Ĳ×¤×Ļ×ľ×ķ\":131061,\"ãģ¨èĢĥãģĪ\":131062,\"ãģ¨ãģĹãģ¦ãģ¯\":131063,\"à¹Ģà¸Īà¸Ń\":131064,\"×ŀ×¤\":131065,\"ĠgiriÅŁ\":131066,\"Ð»Ð¸ÑĤ\":131067,\"ÑĤÐµÐ»Ñı\":131068,\"ÑĳÐ½\":131069,\"æ°Ĺãģ«\":131070,\"ĠgÃ³\":131071,\"ĠgÃ³p\":131072,\"åĪĩãĤĬ\":131073,\"Ġ×Ķ×Ĺ×ĵ×©\":131074,\"Ð¶Ð°Ð»\":131075,\"Ġ×ĵ×¢×ª\":131076,\"éģķãģĨ\":131077,\"à¹Ģà¸Ĥà¹īà¸²à¹Ħà¸Ľ\":131078,\"Ġ×¡×¨×ĺ\":131079,\"eÃ±a\":131080,\"æĸ°ãģĹãģĦ\":131081,\"Ø±Ùİ\":131082,\"ĠÐĲÑĢ\":131083,\"Ġpháº£n\":131084,\"à¸Īà¸°à¹Ħà¸Ķà¹ī\":131085,\"Ġ×ĳ×¦×ķ×¨×Ķ\":131086,\"Ø´Ø§Ùĩ\":131087,\"Ø´Ø§ÙĩØ¯\":131088,\"ÙĪØ±Ø¯\":131089,\"à¹Ģà¸Ļà¸·à¹Īà¸Ńà¸ĩà¸Īà¸²à¸ģ\":131090,\"Ð¸Ð»Ð¸ÑģÑĮ\":131091,\"à¹ģà¸¥à¸°à¸ģà¸²à¸£\":131092,\"Ġ×Ķ×ĸ×Ľ\":131093,\"Ġ×Ķ×ĸ×Ľ×ķ×Ļ×ķ×ª\":131094,\"eiÃŁ\":131095,\"ãĥ¨\":131096,\"ìĥĪ\":131097,\"ĠÃĩa\":131098,\"Æ¯\":131099,\"×©×Ĵ\":131100,\"ÙĬÙĨØ©\":131101,\"à¸£à¹īà¸Ńà¸ĩ\":131102,\"ãĤµãĥ³\":131103,\"ÑĢÐ¾ÑģÑģÐ¸Ð¹\":131104,\"ÑĢÐ¾ÑģÑģÐ¸Ð¹ÑģÐº\":131105,\"aÄŁa\":131106,\"ĠÐ½Ð°ÑĩÐ¸Ð½Ð°\":131107,\"ĠØµÙĦÙī\":131108,\"à¸Ĺà¸¸à¸ģà¸Ħà¸Ļ\":131109,\"íļĮìĤ¬\":131110,\"ĠÐ»Ð¸ÑĨ\":131111,\"Ø´ÙĬØ±\":131112,\"ĠØ´ÙĬØ¡\":131113,\"ÙĬÙĨØ§\":131114,\"Ġ×¤×Ĺ×ķ×ª\":131115,\"ĠiÃ§eris\":131116,\"ĠiÃ§erisinde\":131117,\"ĠØ£ØŃÙħØ¯\":131118,\"ĠÅ¼eby\":131119,\"ì´Ŀ\":131120,\"ĠÐ¿Ð¾ÐºÐ°Ð·\":131121,\"ĠÐ¸Ð¼ÐµÐ½Ð½Ð¾\":131122,\"à¸«à¸Ļà¸±à¸ĩà¸ª\":131123,\"à¸«à¸Ļà¸±à¸ĩà¸ªà¸·à¸Ń\":131124,\"ĠÑĤÑĢÐµ\":131125,\"à¸ªà¸±à¸ĩà¸Ħà¸¡\":131126,\"Ø¥ÙĲ\":131127,\"ãģĮå¿ħè¦ģ\":131128,\"ÙĬÙĳØ©\":131129,\"×¤×¦\":131130,\"íĭ°\":131131,\"ĠÙħØ¬Ø§ÙĦ\":131132,\"×ł×¤×©\":131133,\"ÐºÐ°Ð½\":131134,\"×Ĺ×ķ×¤\":131135,\"×Ĺ×ķ×¤×©\":131136,\"ì²ĺëŁ¼\":131137,\"Ð¾Ð²Ð°Ñı\":131138,\"Ð·Ð¾Ð²\":131139,\"Ġháº¡\":131140,\"ĠdziÄĻki\":131141,\"×Ļ×¨×ķ\":131142,\"Ġ×ľ×ŀ×¦\":131143,\"Ġ×ľ×ŀ×¦×ķ×Ĳ\":131144,\"×Ļ×ĵ×ķ\":131145,\"Ġsá»£\":131146,\"Ġ×ľ×Ķ×Ĵ×Ļ×¢\":131147,\"×§×ĳ×¢\":131148,\"Ġchiá»ģu\":131149,\"ãĥŀãĤ¤\":131150,\"ĠdÃłng\":131151,\"à¹ģà¸Łà¸Ļ\":131152,\"ĠÃ¼ye\":131153,\"×Ļ×ł×Ĵ\":131154,\"à¹Ģà¸£à¸µà¸¢à¸ģ\":131155,\"ç§ģãģĮ\":131156,\"thÃ©\":131157,\"ĠÑĦÐ¸Ð»ÑĮ\":131158,\"ĠÑĦÐ¸Ð»ÑĮÐ¼\":131159,\"ĠNgÃły\":131160,\"ĠÐ¶ÐµÐ½\":131161,\"ĠÐ¶ÐµÐ½ÑīÐ¸Ð½\":131162,\"Ø¬ÙĬØ¯\":131163,\"nÃ§\":131164,\"à¸Ľà¸£à¸²\":131165,\"×Ļ×ŀ×ķ\":131166,\"Ġná»ģn\":131167,\"×Ĳ×ķ×ľ×Ŀ\":131168,\"ĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑģÑĤÑĮ\":131169,\"Ġëĭ¤ìĭľ\":131170,\"è¦ĭãģŁ\":131171,\"à¸ĸà¸Ļ\":131172,\"à¸ĸà¸Ļà¸Ļ\":131173,\"mÄ±zÄ±\":131174,\"ĠÙħØ¬ÙħÙĪØ¹Ø©\":131175,\"cjÄħ\":131176,\"ĠÐłÐ¤\":131177,\"à¸ģà¸³à¸«à¸Ļ\":131178,\"à¸ģà¸³à¸«à¸Ļà¸Ķ\":131179,\"ĠìĹ¬ê¸°\":131180,\"landÄ±\":131181,\"Ð½Ð¸ÑĨ\":131182,\"ÑģÑĤÐ²Ðµ\":131183,\"Ġ×ĵ×ĳ×¨×Ļ×Ŀ\":131184,\"ĠskÅĤad\":131185,\"ãĤĬãģ¾ãģĹãģŁ\":131186,\"ĠÐ¾ÑĤÐºÑĢÑĭÑĤ\":131187,\"Ð½ÑıÑĤ\":131188,\"ĠÑģÐ²Ð¾ÐµÐ¹\":131189,\"à¸Īà¸´à¸ķ\":131190,\"ĠÐºÐ°ÑĩÐµÑģÑĤÐ²Ðµ\":131191,\"ĠettiÄŁi\":131192,\"ìĤ¬íķŃ\":131193,\"ĠØ§ÙĦÙĬÙħÙĨ\":131194,\"Ð¸ÑĩÐµÑģÐºÐ¸Ð¹\":131195,\"ë¸Į\":131196,\"Ġ×ĳ×Ĳ×¨×¥\":131197,\"ĠØ§Ø³Ùħ\":131198,\"ĠÐ¸Ð·Ð²ÐµÑģÑĤ\":131199,\"rÃ£o\":131200,\"ĠattivitÃł\":131201,\"à¹Ģà¸Ľà¹ĩà¸Ļà¸ģà¸²à¸£\":131202,\"ĠØ§ÙĦØ¯ÙĥØª\":131203,\"ĠØ§ÙĦØ¯ÙĥØªÙĪØ±\":131204,\"ĠÙĪØ§ØŃØ¯Ø©\":131205,\"ĠÑģÑĩÐµÑĤ\":131206,\"ĠÐ¿ÑĢÐ¸Ñĩ\":131207,\"ĠÐ¿ÑĢÐ¸ÑĩÐ¸Ð½\":131208,\"ĠÙĪØ²Ø§Ø±Ø©\":131209,\"Ġhuyá»ĩn\":131210,\"ĠÙĥØªØ§Ø¨\":131211,\"à¹ģà¸Ļà¹Īà¸Ļ\":131212,\"à¹ģà¸Ļà¹Īà¸Ļà¸Ńà¸Ļ\":131213,\"ĠgÃ¼nÃ¼\":131214,\"Ð³ÑĢÑĥÐ·\":131215,\"ĠØ§ÙĦØ®Ø§Øµ\":131216,\"ĠgÃ¶rÃ¼l\":131217,\"×ľ×ŀ×ĵ\":131218,\"ĠìłķëıĦ\":131219,\"×ķ×ĳ×Ļ×ľ\":131220,\"Ġ×ŀ×§×¦×ķ×¢×Ļ\":131221,\"ĠÐ¾ÑģÐ¾Ð±ÐµÐ½Ð½Ð¾\":131222,\"à¸Ľà¸£à¸°à¸ģà¸²\":131223,\"à¸Ľà¸£à¸°à¸ģà¸²à¸¨\":131224,\"acaÄŁÄ±nÄ±\":131225,\"ë¶ģ\":131226,\"à¸łà¸¹à¸¡à¸´\":131227,\"ĠÑįÐ»ÐµÐºÑĤ\":131228,\"ĠÑįÐ»ÐµÐºÑĤÑĢÐ¾\":131229,\"Ġ×§×©×Ķ\":131230,\"Ø³ÙĦØ·\":131231,\"à¸Ĭà¸Ļà¸°\":131232,\"×¢×Ļ×ľ\":131233,\"ĠÐ§Ðµ\":131234,\"à¹ģà¸Ļà¹Ī\":131235,\"lÄ±ÄŁ\":131236,\"lÄ±ÄŁÄ±n\":131237,\"Ġ×ŀ×¢×¨×Ľ×ª\":131238,\"å¥½ãģįãģª\":131239,\"à¸¡à¸²à¸ģà¸Ĥà¸¶à¹īà¸Ļ\":131240,\"×ŀ×¢×ĳ×¨\":131241,\"ĠØ§ÙĦÙħØºØ±Ø¨\":131242,\"ĠÐ¿ÐµÑĢÐ¸\":131243,\"ĠÐ¿ÐµÑĢÐ¸Ð¾Ð´\":131244,\"Ġnháº¡c\":131245,\"Ø§ÙĪÙĬ\":131246,\"ĠÙĪØ¹ÙĦÙī\":131247,\"Ø£Ø®Ø°\":131248,\"ĠCÃ´\":131249,\"×ª×¨×ĳ×ķ×ª\":131250,\"×Ĵ×Ķ\":131251,\"ĠktÃ³rej\":131252,\"×Ĳ×Ļ×ª\":131253,\"×ĳ×ķ×Ĳ\":131254,\"Ð´ÐµÐ»ÑĮ\":131255,\"à¸£à¸µà¸§à¸´\":131256,\"à¸£à¸µà¸§à¸´à¸§\":131257,\"Ð¶Ñĥ\":131258,\"Ġ×ĳ×Ĺ×ķ\":131259,\"ÐµÑĪÑĮ\":131260,\"ĠØ£ÙĦÙģ\":131261,\"ĠØ§ÙĦÙĪØ·ÙĨÙĬ\":131262,\"ĠØ§ÙĦÙħÙĨØ·ÙĤØ©\":131263,\"nÄħÄĩ\":131264,\"ĠthiÃªn\":131265,\"Ð¸ÑĩÐµÑģÐºÐ¾Ð¹\":131266,\"ĠØ§ÙĦÙħÙĦ\":131267,\"ĠØ¹Ùħ\":131268,\"×¡×¤×¨\":131269,\"ĠnhÃ³m\":131270,\"ÙĪØµÙģ\":131271,\"ĠChÃºng\":131272,\"ĠØ±ÙĤÙħ\":131273,\"ãģ¾ãģĹãģŁãģĮ\":131274,\"alitÃ©\":131275,\"à¸¥à¸¡\":131276,\"ĠëĤ´ê°Ģ\":131277,\"×ľ×§×ķ×Ĺ\":131278,\"ĠSÆ¡n\":131279,\"posiÃ§Ã£o\":131280,\"miÄĻ\":131281,\"ĠtrÃ¡nh\":131282,\"ĠÄĲá»Ļ\":131283,\"×Ľ×Ĺ\":131284,\"ãģĤãģ£ãģ¦\":131285,\"à¸Ńà¸¢à¹Īà¸²\":131286,\"Ġ×ŀ×Ĺ×Ļ×¨\":131287,\"Ġ×Ķ×Ļ×ª×Ķ\":131288,\"à¸Ľà¹Īà¸²\":131289,\"à¸Ńà¸·à¹Īà¸Ļà¹Ĩ\":131290,\"Ø´ÙĤ\":131291,\"×ł×¡×Ļ\":131292,\"ë¦¼\":131293,\"ãģ¦ãģĹãģ¾ãģĨ\":131294,\"Ġ×ŀ×¦×ĳ\":131295,\"ãģ«åĩº\":131296,\"ÙħÙĪØ§Ø·ÙĨ\":131297,\"à¸¢à¸±à¸ĩà¸¡à¸µ\":131298,\"Ð°Ð»ÑĮÐ½ÑĭÐµ\":131299,\"sanÄ±z\":131300,\"Ø¥Ø³Ø±Ø§Ø¦ÙĬÙĦ\":131301,\"ĠvÃłi\":131302,\"ì¤Ħ\":131303,\"ãģ¨æĢĿãģ£ãģ¦\":131304,\"×Ļ×ķ×ł×Ļ\":131305,\"çĶŁãģį\":131306,\"ĠsÃ¢u\":131307,\"ÑĩÐ¸ÑģÑĤ\":131308,\"Ġlá»ħ\":131309,\"ĠGiÃ¡\":131310,\"à¸Ńà¸¸à¸Ľ\":131311,\"à¸Ńà¸¸à¸Ľà¸ģà¸£\":131312,\"à¸Ńà¸¸à¸Ľà¸ģà¸£à¸ĵà¹Į\":131313,\"Ġnháº¹\":131314,\"rÃ¶\":131315,\"×¡×ĺ×Ļ\":131316,\"ãģķãĤĵãģĮ\":131317,\"Ġdáº§u\":131318,\"Ø¹Ùİ\":131319,\"ØªØ±Ø§\":131320,\"×Ĵ×ĵ×ľ\":131321,\"ĠtÃ©cnica\":131322,\"×Ľ×ł×Ļ×Ŀ\":131323,\"×ª×§×©\":131324,\"×ª×§×©×ķ×¨×ª\":131325,\"ĠÐ½ÐµÐ³Ð¾\":131326,\"Ã©tait\":131327,\"Ġmá»ģm\":131328,\"ÑģÐµÑĤ\":131329,\"ĠnháºŃt\":131330,\"Ġ×ŀ×¢×ľ\":131331,\"Ġ×Ķ×¢×ĳ×ķ×ĵ\":131332,\"Ġ×Ķ×¢×ĳ×ķ×ĵ×Ķ\":131333,\"Ġ×Ĵ×Ļ×ľ\":131334,\"ãģ¯ãģªãģĦ\":131335,\"Ø§Ø¦ØŃ\":131336,\"ĠÐ·Ð´ÐµÑģÑĮ\":131337,\"×Ĳ×Ļ×ł×ĺ×¨\":131338,\"ÙħÙĲ\":131339,\"Ġ×Ļ×Ĺ×ĵ\":131340,\"Ø±Ø§Ùģ\":131341,\"ì²ĺë¦¬\":131342,\"×ĵ×¢×ķ×ª\":131343,\"ì¹ľ\":131344,\"ĠÐ¢Ð¾\":131345,\"ĠTháº¿\":131346,\"ì¶©\":131347,\"Ġ×ł×Ľ×ķ×Ł\":131348,\"Ø¹ÙĬØ´\":131349,\"Ð½Ð¸Ð·\":131350,\"ĠØ¬Ø§ÙĨØ¨\":131351,\"×ŀ×§×¦×ķ×¢\":131352,\"à¹Ĥà¸ĭ\":131353,\"ÑģÑĥÑĤ\":131354,\"ìĸ´ìļĶ\":131355,\"ãĤĴè¦ĭãģ¦\":131356,\"Ø§Ø±Ø¯\":131357,\"ĠaÃ§Ä±l\":131358,\"ĠØ§ÙĦØŃÙĬØ§Ø©\":131359,\"à¸ģà¹ĩà¹Ħà¸Ķà¹ī\":131360,\"ãģĿãĤĮãĤĴ\":131361,\"Ø¹Ø¶ÙĪ\":131362,\"ĠÐ³ÑĢÐ°Ð¶\":131363,\"ĠÐ³ÑĢÐ°Ð¶Ð´Ð°Ð½\":131364,\"à¸Īà¸°à¸ķà¹īà¸Ńà¸ĩ\":131365,\"ĠìĿ´ëŁ¬\":131366,\"ĠìĿ´ëŁ¬íķľ\":131367,\"ĠtrÃ¡ch\":131368,\"ÙĨÙİ\":131369,\"ĠkÄ±sa\":131370,\"ÃĶ\":131371,\"ÑĪÐºÐ°\":131372,\"ãģ®äºº\":131373,\"ĠÐŁÐ¾Ñģ\":131374,\"ĠÐŁÐ¾ÑģÐ»Ðµ\":131375,\"ÑĥÐ»ÑĮ\":131376,\"ÙĪØ§Ø¬Ùĩ\":131377,\"ÙĤØ±Ø¨\":131378,\"à¸Ľà¸ıà¸´à¸ļà¸±à¸ķà¸´\":131379,\"ê°Ļ\":131380,\"Ġ×ŀ×ł\":131381,\"ĠÑģÐ²Ð¾Ð¸\":131382,\"Ø¨Ø±Ø§ÙħØ¬\":131383,\"ĠØ±ÙĪ\":131384,\"Ð¿ÑĢÐ¾Ð´\":131385,\"Ð¿ÑĢÐ¾Ð´Ð°Ð¶\":131386,\"ĠbyÅĤy\":131387,\"à¸§à¸±à¸¢\":131388,\"ĠgÃ¶rÃ¼n\":131389,\"ĠÃĪ\":131390,\"ÑİÑīÐ¸Ð¼\":131391,\"ĠÑĤÐ°ÐºÐ¾Ð¹\":131392,\"ÙģÙĪØ±\":131393,\"ĠÙģØ¹ÙĦ\":131394,\"ĠÐ±ÐµÐ»\":131395,\"ëĲł\":131396,\"erÃŃa\":131397,\"ĠÑģÐ²Ð¾Ñİ\":131398,\"ĠlÃ£\":131399,\"ĠlÃ£nh\":131400,\"à¹Ģà¸ŀà¸·à¹Īà¸Ńà¹ĥà¸«à¹ī\":131401,\"ÙĤÙĨ\":131402,\"ØªØ·ÙĪÙĬØ±\":131403,\"ĠsayÄ±\":131404,\"ĠÑģÐµÐ¹ÑĩÐ°Ñģ\":131405,\"Ġ×Ĳ×Ĺ×¨×ª\":131406,\"×§×ķ×¤×Ķ\":131407,\"×§×ķ×¨×¡\":131408,\"ĠØ³Ùħ\":131409,\"Ġ×ĺ×Ļ×¤×ķ×ľ\":131410,\"ìĿ´ëĿ¼ëĬĶ\":131411,\"Ø¯Ø±Ø§Ø³Ø©\":131412,\"èµ·ãģĵ\":131413,\"×Ĺ×Ļ×ł\":131414,\"×Ĺ×Ļ×ł×ķ×ļ\":131415,\"×ĵ×§\":131416,\"Ġë§ŀ\":131417,\"ĠÐºÐ¾Ð¼Ð°Ð½Ð´\":131418,\"ĠÐĳÐ¾\":131419,\"ĠÐ¸Ð³ÑĢÑĭ\":131420,\"à¸ļà¸µ\":131421,\"ĠØ£Ùİ\":131422,\"Ð²ÐµÐ½\":131423,\"ĠØ§ÙĦØ¬Ø¯ÙĬØ¯\":131424,\"ĠÙĦØ¥\":131425,\"Ġ×ķ×Ĳ×ł×Ļ\":131426,\"Ġ×Ķ×¡×Ļ\":131427,\"Ð¸ÑĩÐµÑģÐºÐ¾Ð³Ð¾\":131428,\"Ø±ÙĪØŃ\":131429,\"à¸ģà¸²à¸£à¸¨à¸¶à¸ģà¸©à¸²\":131430,\"ĠTrÆ°á»Ŀng\":131431,\"Ð¸Ð³ÑĢÐ°\":131432,\"Ä±lmasÄ±\":131433,\"ĠÐ¼Ð°ÑģÑģ\":131434,\"ãģ¨ãģįãģ«\":131435,\"à¸Ĺà¸µà¹Īà¸ľà¹Īà¸²à¸Ļ\":131436,\"à¸Ĺà¸µà¹Īà¸ľà¹Īà¸²à¸Ļà¸¡à¸²\":131437,\"ĠØ§ÙĦØ³Ø§Ø¨ÙĤ\":131438,\"Ġ×ŀ×¢×ĺ\":131439,\"Ð²Ð°ÑĤÑĮ\":131440,\"mÃ¼ÅŁ\":131441,\"Ġ×ľ×Ľ×ļ\":131442,\"Ġtá»ĭch\":131443,\"ÙģÙĩÙħ\":131444,\"ØªØ¯Ø±ÙĬØ¨\":131445,\"Ø´Ùĥ\":131446,\"Ġ×ĳ×ŀ×Ļ\":131447,\"Ġ×ĳ×ŀ×Ļ×ķ×Ĺ×ĵ\":131448,\"ÙĤØ·Ø§Ø¹\":131449,\"ãģªãģĹ\":131450,\"×ķ×¦×Ļ×Ĳ\":131451,\"ĠÙĪØ³ÙĬ\":131452,\"Ð·Ñĥ\":131453,\"Ġyat\":131454,\"ĠyatÄ±rÄ±m\":131455,\"ë§İ\":131456,\"Ġtháº¯ng\":131457,\"ãģĬå®¢\":131458,\"ãģĬå®¢æ§ĺ\":131459,\"ĠThiÃªn\":131460,\"ãģ«å¯¾ãģĹãģ¦\":131461,\"ÑĢÐ¸Ñģ\":131462,\"ÙĨØªØ§Ø¦\":131463,\"ÙĨØªØ§Ø¦Ø¬\":131464,\"Ġ×ŀ×©×¨\":131465,\"Ġ×ŀ×©×¨×ĵ\":131466,\"ĠØªØ¹Ø§ÙĦ\":131467,\"ĠØªØ¹Ø§ÙĦÙī\":131468,\"×©×ł×Ļ\":131469,\"ÙĩØ§Ùħ\":131470,\"×Ĳ×ł×©×Ļ×Ŀ\":131471,\"ĠÅ¼ycia\":131472,\"ĠÑĢÑĥÐ±Ð»ÐµÐ¹\":131473,\"ÙĬØ¶\":131474,\"ĠkatÄ±l\":131475,\"ĠÙħÙĪØ¶ÙĪØ¹\":131476,\"ĠvardÄ±r\":131477,\"ĠÙħÙĨØ·ÙĤØ©\":131478,\"ĠTráº§n\":131479,\"ĠÐ²ÐµÑģ\":131480,\"Ã¼p\":131481,\"ÙħÙĪÙĨ\":131482,\"ÑĪÐ»Ð¸\":131483,\"ĠnÃ³ng\":131484,\"Ø®ÙĦÙģ\":131485,\"ĠÐ¡ÑĤÐ°\":131486,\"ĠÐ´Ð¾ÑĢ\":131487,\"ĠÐ´Ð¾ÑĢÐ¾Ð³\":131488,\"ĠwÅĤaÅĽnie\":131489,\"eÄŁin\":131490,\"Ġhiá»ĥm\":131491,\"ĠÐ¡Ð°Ð¼\":131492,\"ê»ĺìĦľ\":131493,\"ĠÑĦÐ°\":131494,\"ãģ»ãģĨ\":131495,\"ãģ»ãģĨãģĮ\":131496,\"×ķ×¤×Ļ×¢\":131497,\"ê°Ī\":131498,\"Ø¯ÙĪÙĦ\":131499,\"ĠthuÃª\":131500,\"Ġchá»Ĺ\":131501,\"Ġëĭ¹ìĭł\":131502,\"ãģĳãĤĮ\":131503,\"ãģĳãĤĮãģ©\":131504,\"ë³´íĺ¸\":131505,\"ãģķãĤĮãģ¦ãģĦãģ¾ãģĻ\":131506,\"ĠÐ½Ð°Ð´Ð¾\":131507,\"ĠìĤ¬ëŀĮëĵ¤\":131508,\"à¹Ģà¸Ĥà¸ķ\":131509,\"à¸ªà¸¡à¸±à¸¢\":131510,\"zÅĤ\":131511,\"ØªÙĪØ±\":131512,\"Ġ×©×ª×Ļ\":131513,\"vÃª\":131514,\"Ġ×ĳ×ª×ķ×ļ\":131515,\"à¸Ĭà¸±à¸¢\":131516,\"ãģĦãģ£ãģŁ\":131517,\"ìĿĳ\":131518,\"Ġtáº§\":131519,\"Ġtáº§ng\":131520,\"×©×Ľ×¨\":131521,\"Ġê¸Ģ\":131522,\"Ġ×Ķ×©×ł×Ķ\":131523,\"ĠØ§ÙĨÙĩ\":131524,\"ç«ĭãģ¡\":131525,\"rÃ©s\":131526,\"fÃ¼hren\":131527,\"Ø±ØŃÙħ\":131528,\"ê·¹\":131529,\"ĠâĢ«\":131530,\"Ġsuáº¥t\":131531,\"à¸Łà¸´\":131532,\"ÙĬÙĩØ§\":131533,\"ĠØ§ÙĦØ§ØªØŃØ§Ø¯\":131534,\"Ġtuyá»ĥn\":131535,\"ãģ¾ãĤĭ\":131536,\"Ġmáº¡i\":131537,\"ĠngÃ¢n\":131538,\"ãĤ°ãĥ©\":131539,\"æ¬²ãģĹãģĦ\":131540,\"Ø³Ø§Ø±\":131541,\"ãĤĤãģ®ãģ§ãģĻ\":131542,\"ÐºÐ¸Ðµ\":131543,\"ĠseÃ§im\":131544,\"åħ¥ãĤĬ\":131545,\"ãģªãģ©ãĤĴ\":131546,\"ÑĤÑĢÐ¸\":131547,\"ĠÑģÐ¿ÐµÑĨ\":131548,\"ĠØ£Ø¯\":131549,\"ĠÐ¾Ð´Ð½Ð¾\":131550,\"ÑĪÐµÐ»\":131551,\"ãĥĩãĥ¼ãĤ¿\":131552,\"ãĤ·ãĤ¹ãĥĨ\":131553,\"ãĤ·ãĤ¹ãĥĨãĥł\":131554,\"è¡Įãģį\":131555,\"ãģ¨æĢĿãģ£ãģŁ\":131556,\"à¹Ģà¸ģà¸´à¸Ķà¸Ĥà¸¶à¹īà¸Ļ\":131557,\"ĠÑĤÐ¾Ð¶\":131558,\"ĠÑĤÐ¾Ð¶Ðµ\":131559,\"Ġsáº¡ch\":131560,\"ĠÑģÑĢÐ¾Ðº\":131561,\"ĠÐºÐ»Ð¸ÐµÐ½ÑĤ\":131562,\"ĠÙħØ´Ø±ÙĪØ¹\":131563,\"ĠaltÄ±nda\":131564,\"Ġì·¨\":131565,\"ä¸Ńãģ®\":131566,\"ãģķãģĽãĤĭ\":131567,\"ãģĻãģ¹\":131568,\"ãģĻãģ¹ãģ¦\":131569,\"ê°ľë°ľ\":131570,\"ĠÄĳÃªm\":131571,\"ãģªãģĦãģ®ãģ§\":131572,\"ì²ł\":131573,\"×¢×ĳ×ĵ\":131574,\"Ġdáº¥u\":131575,\"à¸Ħà¸Ļà¸Ĺà¸µà¹Ī\":131576,\"ĠCÃ¡ch\":131577,\"ØªØ¹ÙĦÙĬÙħ\":131578,\"Ġháº¡i\":131579,\"ãĤ»ãĥķãĥ¬\":131580,\"ĠÙĨÙģØ³Ùĩ\":131581,\"ĠíĨµíķ´\":131582,\"ÑĪÐ»Ð¾\":131583,\"ĠÐ½Ð°Ð¿ÑĢÐ°Ð²\":131584,\"ĠÐ½Ð°Ð¿ÑĢÐ°Ð²Ð»ÐµÐ½\":131585,\"ÑĢÑĥÑĩ\":131586,\"íĶĮ\":131587,\"Ġ×ĳ×¨×Ļ×Ĳ\":131588,\"ãģ®ãģ¿\":131589,\"ãģ«ãģĬãģĦãģ¦\":131590,\"×ĳ×ł×§\":131591,\"ãĤ¨ãĥ³\":131592,\"Ø«ÙĦØ§Ø«\":131593,\"Ġmá»¹\":131594,\"ĠÑģÐ°Ð¹ÑĤÐµ\":131595,\"ĠÐµÐ¼Ñĥ\":131596,\"ØªØºÙĬ\":131597,\"ØªØºÙĬÙĬØ±\":131598,\"Ø®ØµÙĪØµ\":131599,\"ÑĤÐµÐ»Ð¸\":131600,\"Ġ×ķ×ľ×Ľ×Ł\":131601,\"×¤×¢×Ŀ\":131602,\"ĠÐ¿Ð¾ÑįÑĤÐ¾Ð¼Ñĥ\":131603,\"Ø±Ø§ÙĨ\":131604,\"Ð¸ÑĤÐµÐ»ÐµÐ¹\":131605,\"Ð¿Ð¸ÑģÐ°Ð½\":131606,\"×¢×¥\":131607,\"ĠìĤ¬ìĹħ\":131608,\"ÙħØ²\":131609,\"Ø¬ÙħÙĬØ¹\":131610,\"ë©´ìĦľ\":131611,\"à¸ľà¸¥à¸´à¸ķà¸łà¸±\":131612,\"à¸ľà¸¥à¸´à¸ķà¸łà¸±à¸ĵ\":131613,\"à¸ľà¸¥à¸´à¸ķà¸łà¸±à¸ĵà¸ĳ\":131614,\"à¸ľà¸¥à¸´à¸ķà¸łà¸±à¸ĵà¸ĳà¹Į\":131615,\"ĠÐ¿ÑĢÐ¸Ð¼ÐµÑĢ\":131616,\"ãĤŃãĥ¼\":131617,\"lÃ¢\":131618,\"ĠchÄĥm\":131619,\"çĽ®ãģ®\":131620,\"ãģĦãģĭ\":131621,\"ãģ¨è¨ĢãģĨ\":131622,\"×ĸ×ķ×Ĵ\":131623,\"Ġ×ĳ×ĵ×Ļ\":131624,\"Ġ×ĳ×ĵ×Ļ×ķ×§\":131625,\"ãģĬåºĹ\":131626,\"à¸ķà¸Ńà¸Ļà¸Ļà¸µà¹ī\":131627,\"Ġphá»ĳi\":131628,\"Ð¿ÑĤ\":131629,\"à¸ªà¸Ļà¸²à¸¡\":131630,\"Ø·ÙĪ\":131631,\"ØµØ§ØŃ\":131632,\"ØµØ§ØŃØ¨\":131633,\"ĠDÃ¼\":131634,\"ĠDÃ¼nya\":131635,\"ĠÐ¿Ð¾ÐºÐ°\":131636,\"Ð¿Ð°Ð»\":131637,\"ĠÄĳáº£o\":131638,\"ĠØ§ÙĦÙģÙĪØ±\":131639,\"ĠØ§ÙĦÙģÙĪØ±ÙĥØ³\":131640,\"ĠmÃ¡u\":131641,\"ÐºÑĢÐµÐ¿\":131642,\"ĠØ§ÙĦØ³Ø§Ø¹Ø©\":131643,\"ĠÐ³Ð¾ÑĢÐ¾Ð´Ð°\":131644,\"ÙģØµÙĦ\":131645,\"Ð°Ð¹ÑĤÐµ\":131646,\"ĠÐ´Ð¾Ð³\":131647,\"ĠÐ´Ð¾Ð³Ð¾Ð²Ð¾ÑĢ\":131648,\"ĠØ¥Ø°\":131649,\"Ġ×ĳ×Ľ×ľ×ľ\":131650,\"ÙĬØªÙĩ\":131651,\"×Ĵ×ĳ×¨\":131652,\"ĠbirÃ§\":131653,\"ĠbirÃ§ok\":131654,\"ë¬¸íĻĶ\":131655,\"ãģĿãģĨãģª\":131656,\"Ø±Ø§ØŃ\":131657,\"ĠÙħØ±Ø©\":131658,\"ĠÐ´ÐµÐ½ÑĮÐ³Ð¸\":131659,\"fÃ¤\":131660,\"à¸Ĥà¹īà¸²à¸§\":131661,\"ĠÑģÐ¾Ð²ÑĢÐµÐ¼\":131662,\"ĠÑģÐ¾Ð²ÑĢÐµÐ¼ÐµÐ½Ð½\":131663,\"×ľ×Ĺ×¥\":131664,\"èī¯ãģı\":131665,\"ĠÙģØ£\":131666,\"Ġ×ķ×ĸ×Ķ\":131667,\"ĠÐ·Ð°Ð½Ð¸\":131668,\"ĠÐ·Ð°Ð½Ð¸Ð¼Ð°\":131669,\"Ġê°Ģì§Ģê³ł\":131670,\"ĠhÆ¡i\":131671,\"ãģªãģ®ãģĭ\":131672,\"ãĥĨãĥ¬ãĥĵ\":131673,\"Ġ×¨×ĳ×ķ×ª\":131674,\"à¸ķà¸µ\":131675,\"Ġ×ĳ×©×ł×ª\":131676,\"ĠTáº¡i\":131677,\"ĠthuáºŃn\":131678,\"ÑģÐµÐ»\":131679,\"ÑĳÐ¼\":131680,\"dziÄĩ\":131681,\"ĠÑģÐºÐ°\":131682,\"ĠÑģÐºÐ°Ñĩ\":131683,\"ĠÑģÐºÐ°ÑĩÐ°ÑĤÑĮ\":131684,\"×ķ×ŀ×ķ\":131685,\"Ð³Ð»Ð°\":131686,\"ĠÐ¼Ð¸Ð½ÑĥÑĤ\":131687,\"åĩºãģĻ\":131688,\"Ġ×Ĺ×Ļ×Ļ×ĳ\":131689,\"Ġ×ª×Ĵ×ķ×ĳ×Ķ\":131690,\"à¸£à¸¹à¸Ľà¹ģà¸ļà¸ļ\":131691,\"Ð½Ð¸ÑĨÐ°\":131692,\"ĠÄ°n\":131693,\"ĠØ£Ø¹\":131694,\"ĠØ¶ÙħÙĨ\":131695,\"ÙħØ«Ø§ÙĦ\":131696,\"ĠyaÅŁan\":131697,\"ĠìĹ°êµ¬\":131698,\"ĠLÃª\":131699,\"×©×ľ×Ĺ\":131700,\"ãģıãģªãĤĭ\":131701,\"ìĹĨìĿ´\":131702,\"ĠÑĤÑĢÐ¸\":131703,\"ĠÑĩÐ°ÑģÑĤÐ¾\":131704,\"ĠÐ¾Ð±ÑĢÐ°ÑĤ\":131705,\"Ð¿Ð»Ð¾\":131706,\"Ø¯Ø®\":131707,\"Ø¯Ø®ÙĪÙĦ\":131708,\"Ø³Ùĩ\":131709,\"à¸Ńà¸²à¸ģ\":131710,\"à¸Ńà¸²à¸ģà¸²à¸¨\":131711,\"Ġ×Ľ×ĸ×Ķ\":131712,\"Ġ×Ķ×¢×¡×§\":131713,\"ĠØ§ÙĦØ£ÙĨ\":131714,\"å¹´ãģ«\":131715,\"×¢×©×ķ\":131716,\"Ġ×©×¢×ķ×ª\":131717,\"ĠmÃłn\":131718,\"×Ĳ×¨×Ļ\":131719,\"sÄ±yla\":131720,\"ÙģØ±ÙĤ\":131721,\"Ð½Ð¸Ñħ\":131722,\"ĠØªØ³Øª\":131723,\"è¦ĭãģ¦\":131724,\"ØŃØ§ÙĪÙĦ\":131725,\"×Ĳ×Ļ×Ľ×ķ×ª\":131726,\"ĠbaÅŁladÄ±\":131727,\"stÄħ\":131728,\"stÄħpi\":131729,\"à¸Ĺà¸µà¹Īà¹Ģà¸£à¸²\":131730,\"ÙĤØ±Ø±\":131731,\"Ø¬Ø§Ø¨\":131732,\"Ġ×ĳ×¨×ķ×¨\":131733,\"à¹Ģà¸Ĥà¹īà¸²à¹ĥà¸Ī\":131734,\"×ŀ×Ĺ×§×¨\":131735,\"alÄ±m\":131736,\"Ġ×¡×Ļ×¤×ķ×¨\":131737,\"ãģ§ãģĤãĤĮãģ°\":131738,\"Ġ×©×ŀ×ķ×¨×ķ×ª\":131739,\"Ġ×ķ×ŀ×Ķ\":131740,\"ãģĵãģĿ\":131741,\"idÃ©e\":131742,\"ä¸ĭãģķãģĦ\":131743,\"ØªÙĨØ§ÙĪÙĦ\":131744,\"Ġà¸¥à¹īà¸²à¸Ļ\":131745,\"Ġìļ°ë¦¬ëĬĶ\":131746,\"Ø§ÙĨØ§\":131747,\"ÑģÑĤÐ¾Ð¹\":131748,\"Ð±Ð¾ÑĤ\":131749,\"ĠyaÅŁam\":131750,\"kÃ¶y\":131751,\"Ø¥ÙĦ\":131752,\"ÑĢÑĭÐ²\":131753,\"ê¸°ìĹħ\":131754,\"Ġ×Ķ×ŀ×ĵ\":131755,\"Ġ×Ķ×ŀ×ĵ×Ļ×ł×Ķ\":131756,\"Ø¯Ø¨\":131757,\"×¢×Ļ×ł×Ļ\":131758,\"×ŀ×ª×Ĺ\":131759,\"Ġ×¤×¨×Ļ\":131760,\"ãĥĭãĥ¼\":131761,\"Ø§ÙħÙĬ\":131762,\"Ġnháº±m\":131763,\"ãĤĮãģªãģĦ\":131764,\"ØªØ¹Ø±Ùģ\":131765,\"Ġë§ĪìĿĮ\":131766,\"ìĵ°\":131767,\"Ġháº¥p\":131768,\"×¨×Ĵ×Ļ×ľ\":131769,\"Ø¨Ùİ\":131770,\"ĠrÄĥng\":131771,\"glÄħd\":131772,\"ĠÑģÐ¸ÑģÑĤÐµÐ¼Ñĭ\":131773,\"ĠkhÃ³a\":131774,\"ãģ§ãģĻãĤĪãģŃ\":131775,\"å¤§ãģįãģı\":131776,\"ê¸°ë¥¼\":131777,\"ĠkÃ©o\":131778,\"ÙĪØ¡\":131779,\"Ø¬Ø§Ùħ\":131780,\"Ø¬Ø§ÙħØ¹\":131781,\"Ġ×¢×Ļ×¦×ķ×ĳ\":131782,\"tÃ©ri\":131783,\"Ġ×ª×©\":131784,\"Ġ×Ĳ×ĳ×Ļ\":131785,\"ĠChÆ°Æ¡ng\":131786,\"à¸ļà¸£à¸´à¹Ģà¸§\":131787,\"à¸ļà¸£à¸´à¹Ģà¸§à¸ĵ\":131788,\"ãģ¤ãģı\":131789,\"Ġ×Ĺ×ķ×ľ\":131790,\"×¢×ª×Ļ×ĵ\":131791,\"×©×Ļ×ŀ×Ķ\":131792,\"ëĤ¨\":131793,\"Ġ×©×Ĳ×Ļ×Ł\":131794,\"ĠÙĪØ§ÙĦØ¥\":131795,\"ÑĦÐ°\":131796,\"ĠkhÃ¡m\":131797,\"Ġ×ĺ×ķ×ĳ×Ķ\":131798,\"ĠÐ²ÑĭÑģ\":131799,\"ĠÐ²ÑĭÑģÐ¾ÐºÐ¾\":131800,\"ĠØ§ÙĦØŃØ¯ÙĬØ«\":131801,\"äººãĤĤ\":131802,\"dÃ¼ÄŁÃ¼\":131803,\"×Ļ×Ĺ×ķ×ĵ\":131804,\"ØªØ¹ÙĦÙĬ\":131805,\"ØªØ¹ÙĦÙĬÙĤ\":131806,\"lÃ¶\":131807,\"ØªØŃØ¯ÙĬØ¯\":131808,\"Ð½ÐµÐ³Ð¾\":131809,\"ĠÑĥÐ´Ð¾Ð±\":131810,\"Ġ×ľ×ŀ×Ļ\":131811,\"Ġ×¨×ķ×¦×Ļ×Ŀ\":131812,\"ĠØ¬Ø§Ø¡\":131813,\"Ġ×ĳ×ĸ×ŀ×Ł\":131814,\"à¸Ľà¸ģà¸ķà¸´\":131815,\"é«ĺãģı\":131816,\"à¸Ľà¸¥à¸²\":131817,\"ĠartÄ±k\":131818,\"ĠbugÃ¼n\":131819,\"×§×ł×Ļ\":131820,\"ĠkhoÃ¡\":131821,\"ĠÙħØ±ÙĥØ²\":131822,\"ĠìŀĲê¸°\":131823,\"Ø¯Ø±Ø¬Ø©\":131824,\"×ŀ×©×¨×ĵ\":131825,\"Ġgiáº¥y\":131826,\"ĠchÃ³ng\":131827,\"×§×¤\":131828,\"ÙĬØ¨Ø©\":131829,\"ĠczÄĻsto\":131830,\"Ð²Ð°Ð»Ð¸\":131831,\"ÙĥØ¨\":131832,\"ìŁģ\":131833,\"à¸ªà¸ļà¸²à¸¢\":131834,\"à¸Ľà¸£à¸°à¸Ĭà¸²à¸Ĭà¸Ļ\":131835,\"×Ĵ×ķ×£\":131836,\"ëŁī\":131837,\"ãģ®ãģĵãģ¨\":131838,\"à¸¥à¸Ń\":131839,\"Ġnghá»ī\":131840,\"åŃĲãģ©\":131841,\"åŃĲãģ©ãĤĤ\":131842,\"à¹Ħà¸Ķà¹īà¸Ńà¸¢\":131843,\"à¹Ħà¸Ķà¹īà¸Ńà¸¢à¹Īà¸²à¸ĩ\":131844,\"×ĵ×¢\":131845,\"ĠØ§ÙĦØªÙī\":131846,\"ĠÑģÐ¾Ð²ÐµÑĤ\":131847,\"ĠqualitÃł\":131848,\"åĩºãģĹ\":131849,\"ĠÑĢÑĥÐºÐ¾Ð²\":131850,\"ĠÑĢÑĥÐºÐ¾Ð²Ð¾Ð´\":131851,\"à¸£à¸²à¸¢à¸¥à¸°à¹Ģà¸Ńà¸µà¸¢à¸Ķ\":131852,\"ãģªãģĭãģªãģĭ\":131853,\"ê¸°ê´Ģ\":131854,\"Ġ×Ĺ×ķ×©\":131855,\"Ġ×Ĺ×ķ×©×ĳ\":131856,\"Ð»Ð¾ÑĤ\":131857,\"à¸Ļà¸°à¸Ħà¸£à¸±à¸ļ\":131858,\"×§×ĳ×ķ×¦×Ķ\":131859,\"ĠthÃ¡i\":131860,\"Ġ×©×ĳ×Ķ\":131861,\"ĠÑĪÐºÐ¾Ð»\":131862,\"ĠÙĦÙĥÙĦ\":131863,\"à¹ĥà¸Ļà¸Ĭà¹Īà¸§à¸ĩ\":131864,\"ĠÙħÙĥØ§ÙĨ\":131865,\"ëķĮ\":131866,\"Ġcáº£i\":131867,\"ĠChÃŃ\":131868,\"ÑĥÑĩÐ°\":131869,\"ìĿµ\":131870,\"Ġxáº£y\":131871,\"à¸Ĭà¸Ļà¸´à¸Ķ\":131872,\"ĠcáºŃu\":131873,\"ÐºÑĢÐ¾Ð²\":131874,\"ssÃ©\":131875,\"ĠÙĨÙĪØ¹\":131876,\"ĠÐ¢Ð°\":131877,\"Ø®ÙħØ³\":131878,\"×¤×ķ×¡×ĺ\":131879,\"Ġmáº¯c\":131880,\"ĠÄĳem\":131881,\"à¸ģà¸²à¸£à¹ĥà¸Ĭà¹ī\":131882,\"×¨×ķ×¡\":131883,\"ĠÐĽÐµ\":131884,\"Ġthá»Ń\":131885,\"à¸£à¹Īà¸²à¸ĩà¸ģà¸²à¸¢\":131886,\"Ã¼zÃ¼\":131887,\"æĹ¥æľ¬ãģ®\":131888,\"ê³¼ìłķ\":131889,\"×©×Ļ×Ĳ\":131890,\"ĠìŀĪê³ł\":131891,\"×ĳ×ķ×ľ\":131892,\"ìķħ\":131893,\"ĠÙĪØ§ÙĦØ§\":131894,\"ĠÐĽÐ¸\":131895,\"ĠÐ²ÑģÑĳ\":131896,\"ĠuÅ¼ytkow\":131897,\"×Ĺ×ķ×ľ\":131898,\"Ø±ÙģØ¶\":131899,\"ĠsonuÃ§\":131900,\"ãģĦãģ¾ãģĽãĤĵ\":131901,\"ìĤ¬ìĹħ\":131902,\"ëĪĦ\":131903,\"ÑĤÐµÐº\":131904,\"ĠudziaÅĤ\":131905,\"Ð»ÐµÐ·\":131906,\"Ġ×Ķ×Ļ×Ļ×ª×Ļ\":131907,\"ãĤīãĤĮãģ¦\":131908,\"ÙħØ³Ø¤ÙĪÙĦ\":131909,\"Ø±Ø§Ø±\":131910,\"ÑĤÐ°Ð½\":131911,\"ĠÄĳÃło\":131912,\"Ġ×¨×ķ×ĳ\":131913,\"Ġ×ĳ×©×ĳ×Ļ×ľ\":131914,\"ä»ĬåĽŀãģ¯\":131915,\"ãĤ¸ãĥ¥\":131916,\"Ġ×¢×ĳ×¨\":131917,\"ãģĽãģ¦\":131918,\"Ð¿Ð¾Ð»ÑĮ\":131919,\"aklÄ±\":131920,\"ĠkÃŃnh\":131921,\"Ø¯Øª\":131922,\"Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ\":131923,\"ĠØ§ÙĦÙħØµ\":131924,\"ĠØ§ÙĦÙħØµØ±ÙĬ\":131925,\"à¸Īà¸£à¸´à¸ĩà¹Ĩ\":131926,\"ĠØ§ÙĦØ´Ø±ÙĥØ©\":131927,\"ĠÄĳá»ı\":131928,\"ãĥĽãĥĨ\":131929,\"ãĥĽãĥĨãĥ«\":131930,\"ÑįÐºÐ¾Ð½\":131931,\"ÑįÐºÐ¾Ð½Ð¾Ð¼\":131932,\"ĠÙĪØ¹ÙĨ\":131933,\"Ġ×ª×ł\":131934,\"Ġ×ª×ł×Ĳ×Ļ\":131935,\"ĠØ§ÙĦØ¯ÙĪÙĦÙĬØ©\":131936,\"Ġì§ĢìĹŃ\":131937,\"ãģ§ãģĻãģĭ\":131938,\"ĠÐ²Ð°ÑĢÐ¸\":131939,\"ĠÐ²Ð°ÑĢÐ¸Ð°Ð½ÑĤ\":131940,\"ĠØ§ÙĦØ¹Ø±Ø¨\":131941,\"ÐµÐ»Ð°\":131942,\"ĠtÆ°á»Ľng\":131943,\"skÄħ\":131944,\"Ġmáº·c\":131945,\"à¸ªà¸±à¸ģ\":131946,\"ãĥĵãĥ¼\":131947,\"Ġ×ĳ×Ĵ×ľ\":131948,\"Ġ×ĳ×Ĵ×ľ×ľ\":131949,\"ãĥķãĤ¡ãĥ³\":131950,\"×ĳ×Ļ×¦\":131951,\"×ĳ×Ļ×¦×ķ×¢\":131952,\"Ð»Ð¸ÑģÑĤ\":131953,\"à¸Łà¸¸\":131954,\"à¸Łà¸¸à¸ķ\":131955,\"à¸Łà¸¸à¸ķà¸ļà¸Ńà¸¥\":131956,\"à¸Ŀà¹Īà¸²à¸¢\":131957,\"ìŀĲìĿĺ\":131958,\"ĠØ³ÙĪÙģ\":131959,\"Ġ×©×Ķ×ª\":131960,\"Ġê±¸\":131961,\"×¢×ĳ×ķ×ĵ\":131962,\"ãģĻãĤĭãģĵãģ¨ãģĮ\":131963,\"ĠÑĩÐ°ÑģÑĤÑĮ\":131964,\"ãĤ¢ãĥ¡ãĥª\":131965,\"ãĤ¢ãĥ¡ãĥªãĤ«\":131966,\"ĠtakÄ±m\":131967,\"Ġsá»Ľ\":131968,\"Ġsá»Ľm\":131969,\"×©×¨×Ķ\":131970,\"è¨ĢãģĨ\":131971,\"Ð»Ð°Ð½\":131972,\"ì»¤\":131973,\"×Ľ×ł×Ķ\":131974,\"ÙĪÙģÙĬ\":131975,\"íĹĪ\":131976,\"luÄŁu\":131977,\"ĠëĮĢíķ´\":131978,\"Ġ×ľ×ĳ×Ļ×ª\":131979,\"Ġ×Ķ×¨×Ĳ×©×ķ×ł×Ķ\":131980,\"ØµÙħ\":131981,\"ĠsÃ¶yled\":131982,\"ĠsÃ¶yledi\":131983,\"à¸Ľà¸²à¸ģ\":131984,\"ĠardÄ±ndan\":131985,\"ãģĪãģŁ\":131986,\"à¸Ĺà¸±à¹Īà¸§à¹Ħà¸Ľ\":131987,\"Ġ×ł×ķ×¡×£\":131988,\"Ð±Ð¾Ð»ÑĮ\":131989,\"ãĤĵãģ§ãģĻãģĳãģ©\":131990,\"ĠÐ»Ð¸ÑĪÑĮ\":131991,\"Ġ×ĳ×Ĳ×Ļ\":131992,\"ĠÐ±ÑĭÑģÑĤÑĢÐ¾\":131993,\"à¸ªà¸±à¸Ļ\":131994,\"Ġ×ĳ×¤×ł×Ļ\":131995,\"Ð»ÐµÑĩ\":131996,\"ĠØ§ÙĦØ®Ø¨Ø±\":131997,\"ĠsÃ³c\":131998,\"ĠthÃº\":131999,\"ĠÐ¿ÑıÑĤ\":132000,\"ãģĬé¡ĺ\":132001,\"ãģĬé¡ĺãģĦ\":132002,\"ÑĤÐ¸Ð½\":132003,\"ãģ«ãģ¤ãģĦãģ¦ãģ¯\":132004,\"×¤×Ł\":132005,\"ĠÐ´Ð²ÑĥÑħ\":132006,\"à¸įà¸µà¹Ī\":132007,\"à¸įà¸µà¹Īà¸Ľ\":132008,\"à¸įà¸µà¹Īà¸Ľà¸¸\":132009,\"à¸įà¸µà¹Īà¸Ľà¸¸à¹Īà¸Ļ\":132010,\"Ð¾Ð¿ÐµÑĢ\":132011,\"ĠØ§ÙĦØ¨Ø´Ø±\":132012,\"ĠØ§ÙĦÙħØ§ÙĦ\":132013,\"Ä±yoruz\":132014,\"ØªØŃÙħÙĬÙĦ\":132015,\"à¸ģà¸°\":132016,\"éĸĵãģ«\":132017,\"×Ĺ×ķ×©\":132018,\"ĠNguyÃªn\":132019,\"ãģĦãģ¦ãģĦãĤĭ\":132020,\"Ð´ÑĥÑĪ\":132021,\"×©×¤×¢\":132022,\"ÑĪÑĥ\":132023,\"å®ŁéļĽãģ«\":132024,\"ĠÑĢÐ°Ð¹Ð¾Ð½\":132025,\"ĠChá»ī\":132026,\"ÙĨØµØ±\":132027,\"Ġìļ´\":132028,\"Ġìļ´ìĺģ\":132029,\"Ġ×Ķ×ĵ×Ļ×Ł\":132030,\"ØŃØ¯Ø¯\":132031,\"Ø±Ø²\":132032,\"ĠØ§ÙĦØ¯Ùħ\":132033,\"ĠPhÃ¡p\":132034,\"ÑĤÑģÑı\":132035,\"è¦ĭãģĪ\":132036,\"Ġtiá»ĥu\":132037,\"Ġsá»Ńa\":132038,\"Ð°ÑİÑĤÑģÑı\":132039,\"ĠBÃ¡\":132040,\"Ġ×ķ×Ľ×ľ\":132041,\"Ðĸ\":132042,\"ÑĪÐ¸Ð¼\":132043,\"ìĿ´ëĬĶ\":132044,\"Ð»ÐµÐ²\":132045,\"dÄ±k\":132046,\"ĠprÃ©sente\":132047,\"ĠaraÃ§\":132048,\"ØµØ¯ÙĤ\":132049,\"ĠÐ¿Ð¾Ð¼Ð¾Ð³\":132050,\"ĠØ§ÙĦØ´Ø±ÙĤ\":132051,\"ĠÙĪØ§ÙĦØ°ÙĬ\":132052,\"Ø±ÙĬØ§\":132053,\"×ĳ×ł×ķ×ª\":132054,\"Ġngá»ĵi\":132055,\"×¨×ķ×¤\":132056,\"×¨×ķ×¤×Ĳ\":132057,\"Ġtháº¥p\":132058,\"ãĤĦãģ¯\":132059,\"ãĤĦãģ¯ãĤĬ\":132060,\"ĠØ§ÙĦØ¬Ø¯ÙĬØ¯Ø©\":132061,\"éĿŀå¸¸ãģ«\":132062,\"ÙĬÙĦÙĬ\":132063,\"ìª½\":132064,\"ØªØ¹Ø§ÙħÙĦ\":132065,\"ãģłãģ¨æĢĿãģĦãģ¾ãģĻ\":132066,\"ÙħÙħ\":132067,\"Ð¸ÑĤÐµÐ»Ð¸\":132068,\"ãĤµãĤ¤ãĤº\":132069,\"Ø§Ø¯Ø§Øª\":132070,\"ĠØ§ÙĦÙħØ§ÙĦÙĬØ©\":132071,\"ÙĥØ§ØªØ¨\":132072,\"ÐºÐ»Ð¸\":132073,\"Ð²ÐµÑĢÑħ\":132074,\"Ð½Ð¸Ñĩ\":132075,\"Ġ×ľ×¢×ĳ×ķ×ĵ\":132076,\"×ľ×Ļ×Ķ\":132077,\"ØŃÙİ\":132078,\"ãĤ¤ãĥĻ\":132079,\"ãĤ¤ãĥĻãĥ³ãĥĪ\":132080,\"Ġ×ª×Ĵ×ķ×ĳ×ķ×ª\":132081,\"ÑĦÐ¾Ð½\":132082,\"ĠÐ´ÑĢÑĥÐ³Ð¸Ðµ\":132083,\"×Ĳ×ĸ×ķ×¨\":132084,\"ĠperÃ²\":132085,\"ìķŀ\":132086,\"åĢŁãĤĬ\":132087,\"×¨×¦×Ļ\":132088,\"×Ĳ×ĸ\":132089,\"Ð°Ð»ÑĮÐ½ÑĭÑħ\":132090,\"Ġê²ĥìľ¼ë¡ľ\":132091,\"ĠÐ¿ÑĢÐ°Ð²Ð¾\":132092,\"ĠØ§ÙĦØ£Ø±Ø¶\":132093,\"à¹Ģà¸Ĺà¸Ħ\":132094,\"à¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļ\":132095,\"à¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļà¹Ĥà¸¥\":132096,\"à¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļà¹Ĥà¸¥à¸¢\":132097,\"à¹Ģà¸Ĺà¸Ħà¹Ĥà¸Ļà¹Ĥà¸¥à¸¢à¸µ\":132098,\"×¦×¨×Ļ\":132099,\"ĠÐļÑĥ\":132100,\"Ä±lma\":132101,\"æ±ºãĤģ\":132102,\"Ø§ÙĪ\":132103,\"Ġ×ĵ×§×ķ×ª\":132104,\"à¸Ħà¸£à¸¹\":132105,\"ĠÙħØ³ØªÙĪÙī\":132106,\"à¸Ľà¹īà¸Ńà¸ĩ\":132107,\"à¸Ľà¹īà¸Ńà¸ĩà¸ģà¸±à¸Ļ\":132108,\"×ĵ×ķ×ŀ×Ķ\":132109,\"ĠÑģÐµÐ³Ð¾Ð´Ð½Ñı\":132110,\"Ø³ÙĪÙĤ\":132111,\"×¨×Ĺ×ķ×ĳ\":132112,\"ĠØ¥Ø¯Ø§Ø±Ø©\":132113,\"ÑħÐ¾Ð¶\":132114,\"éģİãģİ\":132115,\"à¸Ħà¸Ń\":132116,\"Ð½ÑĥÐ»\":132117,\"×ķ×Ľ×Ķ\":132118,\"ÙĪØ§ÙģÙĤ\":132119,\"×Ľ×ľ×ľ\":132120,\"Ġ×Ķ×ĵ×ķ\":132121,\"ĠlÄ©nh\":132122,\"Ġkháº£o\":132123,\"×Ĳ×ŀ×¦×¢\":132124,\"ë¨¸\":132125,\"Ġ×Ľ×Ļ×¦\":132126,\"Ġ×Ľ×Ļ×¦×ĵ\":132127,\"ĠÐ´Ð¾Ð»Ð¶Ð½Ñĭ\":132128,\"à¸«à¸§à¸±à¸ĩ\":132129,\"ãĥĩãĤ¶\":132130,\"ãĥĩãĤ¶ãĤ¤ãĥ³\":132131,\"Ġngá»Ŀ\":132132,\"ä¸Ńãģ«\":132133,\"à¸ģà¸¥à¸±à¸ļà¸¡à¸²\":132134,\"Ø¬ÙħØ§ÙĦ\":132135,\"à¸Ķà¸±à¸ĩà¸ģà¸¥à¹Īà¸²à¸§\":132136,\"Ø³ÙĥÙĨ\":132137,\"Ø³ÙĨ\":132138,\"ĠÃ¶zellikle\":132139,\"Ð·ÐµÑĢ\":132140,\"rzÄĻ\":132141,\"×ŀ×ķ×¨×Ķ\":132142,\"Ġláº¡\":132143,\"×ŀ×Ļ×ł×Ļ\":132144,\"×¨×Ļ×ª\":132145,\"ãģĿãĤĮãģĮ\":132146,\"ãģĭãĤĮ\":132147,\"ĠÙĬÙħÙĥÙĨÙĥ\":132148,\"Ã¶ffentlich\":132149,\"Ð³Ð°Ð½\":132150,\"ĠØ§ÙĦØŃÙĦ\":132151,\"ĠmiÄĻdzy\":132152,\"ĠÑĩÐ°ÑģÑĤÐ¸\":132153,\"ujÄħcy\":132154,\"ĠbaÄŁlÄ±\":132155,\"ĠiliÅŁki\":132156,\"ÙģØ§Ø¡\":132157,\"ãĥªãĥ³ãĤ°\":132158,\"ĠhÃ£ng\":132159,\"ĠÐºÐ¾Ð½ÑĤÑĢ\":132160,\"ĠÐºÐ¾Ð½ÑĤÑĢÐ¾Ð»\":132161,\"ÐºÐ¾Ð¿\":132162,\"×©×Ļ×¢\":132163,\"×©×Ļ×¢×ķ×¨\":132164,\"ĠÐĴÐ°ÑĪ\":132165,\"Ġ×Ķ×ª×§\":132166,\"ÙħÙĨØ¹\":132167,\"ĠpolÃŃtico\":132168,\"ĠÐ³Ð¾Ð»Ð¾Ð²\":132169,\"ĠØ¥ÙĬ\":132170,\"Ø¥ÙĨØªØ§Ø¬\":132171,\"à¸ļà¸´\":132172,\"ĠÐ³Ð¾Ð²Ð¾ÑĢ\":132173,\"ĠÐ³Ð¾Ð²Ð¾ÑĢÐ¸ÑĤ\":132174,\"Ġphá»ķ\":132175,\"ĠÑģÐµÐ¼ÑĮ\":132176,\"ãģ¯ãģĤãĤĬãģ¾ãģĽãĤĵ\":132177,\"ĠÙĪØ§Ø³Øª\":132178,\"×ŀ×©×¤×ĺ\":132179,\"Ð·ÐµÐ¼\":132180,\"×ŀ×ĵ×ĳ×¨\":132181,\"Ġíģ°\":132182,\"ĠìĿ´ë²Ī\":132183,\"ê°ĢëĬĶ\":132184,\"Ġì§ĢìĽĲ\":132185,\"ĠcaÅĤy\":132186,\"ĠgeliÅŁtir\":132187,\"ÑģÐºÐ¾Ðµ\":132188,\"posÃ©\":132189,\"ĠkhÃ´\":132190,\"à¸ķà¸´à¸Ķà¸ķà¸²à¸¡\":132191,\"missÃ£o\":132192,\"Ġ×ľ×ŀ×¨\":132193,\"Ġ×ľ×ŀ×¨×ķ×ª\":132194,\"ĠbÃ³\":132195,\"à¸ķà¸£à¸§à¸Īà¸ªà¸Ńà¸ļ\":132196,\"Ġnghá»ģ\":132197,\"ĠÐ±Ð¸Ð·\":132198,\"ĠÐ±Ð¸Ð·Ð½ÐµÑģ\":132199,\"ÑģÑĤÐµÑĢ\":132200,\"ÙĪÙİ\":132201,\"æ¥½ãģĹãģ\":132202,\"æ¥½ãģĹãģ¿\":132203,\"ãģĵãĤĮãģĭãĤī\":132204,\"wiÄħzan\":132205,\"à¸ªà¸Ńà¸Ļ\":132206,\"ÙħÙĪØ±\":132207,\"×ł×ĵ×ľ\":132208,\"Ġ×Ķ×Ĳ×ĵ×Ŀ\":132209,\"ĠÐ¼Ð¾Ð»Ð¾Ð´\":132210,\"ØŃÙħØ§\":132211,\"ØŃÙħØ§ÙĬØ©\":132212,\"ÑģÑĤÑĢÐ°Ð½\":132213,\"Ġbuá»ķi\":132214,\"×ª×Ļ×Ļ×Ŀ\":132215,\"abileceÄŁi\":132216,\"LÄ°\":132217,\"à¹Ģà¸¢à¸Ńà¸°\":132218,\"à¸Īà¸£\":132219,\"Ø³ÙĥØ§ÙĨ\":132220,\"à¸Ļà¸±à¸Ķ\":132221,\"Ġmáº¥y\":132222,\"ĠÐĳÐ°\":132223,\"sÅĤaw\":132224,\"ĠÙģÙĦØ§\":132225,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÐ¾Ð¹\":132226,\"ĠÐ¿Ð»Ð¾Ñī\":132227,\"ĠÐ¿Ð»Ð¾ÑīÐ°Ð´\":132228,\"ãĤĤãģĤãĤĬ\":132229,\"szczÄĻ\":132230,\"×Ļ×¤×ķ\":132231,\"×©×ŀ×ª\":132232,\"owaÅĤa\":132233,\"ĠnÃ´ng\":132234,\"×¦×ĳ×Ĳ\":132235,\"ĠìŀĪìĹĪ\":132236,\"ãģ¾ãģ¨\":132237,\"ãģ¾ãģ¨ãĤģ\":132238,\"ÙĤÙĪØ§Øª\":132239,\"ãģ¿ãĤĵãģª\":132240,\"Ġ×Ľ×ŀ×¢×ĺ\":132241,\"ĠxÃºc\":132242,\"ï¼Ĩ\":132243,\"rÄĻ\":132244,\"rÄĻcz\":132245,\"×ĵ×ŀ×Ļ\":132246,\"ĠtáºŃn\":132247,\"à¸Ķà¸§à¸ĩ\":132248,\"ê²½ìłľ\":132249,\"Ð¿ÑĥÑĤ\":132250,\"Ø£Ø±Ø¨Ø¹\":132251,\"Ġ×ŀ×©×ª×ŀ×©\":132252,\"ãĤ¿ãĤ¤ãĥĹ\":132253,\"Ġìłľê°Ģ\":132254,\"Ġ×ľ×Ľ×Ł\":132255,\"ĠÐ¾Ð±ÑĢÐ°Ð·Ð¾Ð¼\":132256,\"ÙĬÙĥØ§\":132257,\"wÅĤ\":132258,\"wÅĤasn\":132259,\"ĠØ§ÙĦÙĪØ·ÙĨÙĬØ©\":132260,\"Ø¨ÙĬØ¨\":132261,\"×ŀ×ľ×Ļ\":132262,\"ÐºÑĢÐ°ÑĤ\":132263,\"ê¸°ìĹĲ\":132264,\"ÙĤØ§Ø¯\":132265,\"ĠÙĦØ¯Ùī\":132266,\"à¸Ħà¸§à¸²à¸¡à¸£à¸¹à¹ī\":132267,\"×ŀ×ĵ×Ļ×ł×Ļ×ķ×ª\":132268,\"ê²¨\":132269,\"ĠíĺĦìŀ¬\":132270,\"×©×ª×Ļ\":132271,\"Ð¼Ð¾Ð»\":132272,\"ĠmÃ¡i\":132273,\"à¸ŀà¸´à¸¡\":132274,\"à¸ŀà¸´à¸¡à¸ŀ\":132275,\"à¸ŀà¸´à¸¡à¸ŀà¹Į\":132276,\"à¸«à¸¥à¸§à¸ĩ\":132277,\"ĠxuyÃªn\":132278,\"×Ĺ×¡×¨\":132279,\"Ø±ÙĪÙĨ\":132280,\"ãģĿãģĨãģĦãģĨ\":132281,\"ãģĿãĤĮãģŀ\":132282,\"ãģĿãĤĮãģŀãĤĮ\":132283,\"Ġ×Ľ×©×Ķ\":132284,\"ÐŁÑĢÐ°Ð²\":132285,\"×ŀ×ĳ×¦×¢\":132286,\"Ø¹Ø±Ø¨\":132287,\"ĠbÃ¼yÃ¼\":132288,\"×¤×Ļ×ª×ķ×Ĺ\":132289,\"à¸Īà¸ļ\":132290,\"ĠØ£ÙĥØ¨Ø±\":132291,\"×©×¨×ª\":132292,\"×ŀ×Ľ×©×Ļ×¨\":132293,\"ĠÙĪÙħØ¹\":132294,\"ãģ®ãģŁãĤģãģ«\":132295,\"à¸Ļà¸±à¸ļ\":132296,\"ì°°\":132297,\"ãĥªãĥķãĤ©\":132298,\"ãĥªãĥķãĤ©ãĥ¼ãĥł\":132299,\"ĠcÆ°á»Ŀng\":132300,\"ĠìłĢíĿ¬\":132301,\"ÙħÙĨØ¸ÙħØ©\":132302,\"ĠhiÃ§bir\":132303,\"ãģ§ãģ¯ãģĤãĤĬãģ¾ãģĽãĤĵ\":132304,\"à¸£à¸Ńà¸¢\":132305,\"ëĲľëĭ¤\":132306,\"ãģĻãģĲãģ«\":132307,\"ÐºÐ»Ð°\":132308,\"ĠÃ¼rÃ¼nler\":132309,\"Ġkiá»ĥu\":132310,\"ĠëĤĺëĬĶ\":132311,\"ÑĤÐºÐ¸\":132312,\"ÑģÐ¸Ð¼\":132313,\"Ġchá»īnh\":132314,\"ãĤĤãģªãģĦ\":132315,\"à¸¨à¸£à¸µ\":132316,\"æĽ¿ãģĪ\":132317,\"taÅŁ\":132318,\"ĠØ¨ÙĥÙĦ\":132319,\"Ġ×ķ×Ļ×©\":132320,\"visÃ£o\":132321,\"ä¼Ŀ\":132322,\"ä¼ĿãģĪ\":132323,\"ÙĦØ¯\":132324,\"×ľ×Ļ×ŀ\":132325,\"×ľ×Ļ×ŀ×ķ×ĵ\":132326,\"tÃ³ria\":132327,\"Ø¯Ùĳ\":132328,\"Ø§ÙħØ±\":132329,\"Ġê·¸ëłĩê²Į\":132330,\"ĠmateriaÅĤ\":132331,\"à¸Ĺà¸£à¸²\":132332,\"à¸Ĺà¸£à¸²à¸ļ\":132333,\"ãģ®æĸ¹ãģĮ\":132334,\"ãģ¦ãģįãģŁ\":132335,\"Ø¶Øº\":132336,\"Ø¶ØºØ·\":132337,\"ĠÙĬØ¹ÙĨÙĬ\":132338,\"ÐµÐ»Ð¾\":132339,\"×Ĳ×Ķ×ĳ×Ķ\":132340,\"×¢×ŀ\":132341,\"ÅŁÄ±k\":132342,\"ìŀĲëĬĶ\":132343,\"ãĤ¿ãĥ³\":132344,\"ĠbáºŃt\":132345,\"×ŀ×©×¤×Ĺ×Ķ\":132346,\"ÐºÑĢÐ¸\":132347,\"Ð±Ð»Ð¸\":132348,\"à¸ªà¸±à¸ķ\":132349,\"à¸ªà¸±à¸ķà¸§à¹Į\":132350,\"ĠØ³ÙĨÙĪØ§Øª\":132351,\"ĠPhÆ°Æ¡ng\":132352,\"ãģ¦ãģĹãģ¾ãģ£ãģŁ\":132353,\"ãģªãģľ\":132354,\"Ġ×ĳ×Ĳ×ķ\":132355,\"ĠcÃ¡n\":132356,\"Ø³Ø¬ÙĦ\":132357,\"Ġláº½\":132358,\"ãĤ±ãĥ¼ãĤ¹\":132359,\"Ġ×§×Ļ×ĳ×ľ\":132360,\"à¸ļà¸Ĺà¸Ħà¸§à¸²à¸¡\":132361,\"Ġ×ķ×Ľ×Ł\":132362,\"ĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð²Ð»ÐµÐ½\":132363,\"Ġná»ĳi\":132364,\"ĠcomentÃ¡rio\":132365,\"ÐµÐ½Ð¸ÐµÐ¼\":132366,\"Ġtá»ı\":132367,\"lÃł\":132368,\"Ġ×©×Ķ×Ļ×Ķ\":132369,\"ÑģÐ»Ð°Ð²\":132370,\"ĠØ§ÙĦÙĪÙĦØ§\":132371,\"ĠØ§ÙĦÙĪÙĦØ§ÙĬØ§Øª\":132372,\"ÙĦØ¬ÙĨØ©\":132373,\"×§×ķ×¨×Ĳ\":132374,\"Ð±ÑĭÑĤ\":132375,\"Ġì¦\":132376,\"Ġì¦ī\":132377,\"ãģ§ãģĻãģĹ\":132378,\"à¸«à¸£à¸·à¸Ńà¹Ħà¸¡à¹Ī\":132379,\"Ð·Ð°ÑīÐ¸ÑĤ\":132380,\"ÙģÙĦØ³Ø·ÙĬÙĨ\":132381,\"Ġmiá»ħn\":132382,\"à¹Ģà¸¢à¹ĩà¸Ļ\":132383,\"ĠÃ§alÄ±ÅŁan\":132384,\"×Ļ×Ĵ×Ķ\":132385,\"ĠEÄŁ\":132386,\"ĠEÄŁitim\":132387,\"ãĥĥãĤ·ãĥ¥\":132388,\"ĠÐ¾Ð¿Ñĭ\":132389,\"ĠÐ¾Ð¿ÑĭÑĤ\":132390,\"Ø±Øº\":132391,\"Ø±ØºØ¨\":132392,\"ĠÑģÐ²Ð¾Ð¸Ñħ\":132393,\"à¸Ľà¸£à¸°à¸ķ\":132394,\"à¸Ľà¸£à¸°à¸ķà¸¹\":132395,\"Ġ×ŀ×Ĳ×ĵ\":132396,\"×Ľ×ķ×ł×Ļ×Ŀ\":132397,\"à¸Ļà¸µ\":132398,\"ĠÐ²ÑĭÑħÐ¾Ð´\":132399,\"ãģ®ä¸Ńãģ«\":132400,\"×¤×ľ×Ĳ\":132401,\"ĠÙĪÙĦÙĬØ³\":132402,\"×¤×ķ×¨×¡\":132403,\"×¤×ķ×¨×¡×Ŀ\":132404,\"ÙħØ³ÙĦÙħ\":132405,\"ĠngÃ´i\":132406,\"×ĵ×ŀ×ķ×ª\":132407,\"ãĤĴä½¿ãģ£ãģ¦\":132408,\"ĠÐ¿Ð¾Ð¼Ð¾ÑīÑĮÑİ\":132409,\"Ø£Ø³Ø±\":132410,\"Ð±Ð»Ð¾Ðº\":132411,\"ÙĤÙĩ\":132412,\"ãģĹãģ¾ãģĦ\":132413,\"ãģ¨ãģĹãģŁ\":132414,\"ĠÐ¿ÐµÑģ\":132415,\"ãĥīãĥ«\":132416,\"×Ĺ×Ŀ\":132417,\"ãģĹãģªãģĮãĤī\":132418,\"ĠÐŁÑĢÐµÐ´\":132419,\"ãĥģãĤ§ãĥĥãĤ¯\":132420,\"å¼·ãģĦ\":132421,\"×©×Ļ×¨×ķ×ª\":132422,\"Ð´Ð°ÐµÑĤ\":132423,\"×Ļ×ĳ×ķ\":132424,\"ĠgenÃ§\":132425,\"Ð¸Ð»Ð°Ñģ\":132426,\"Ð¸Ð»Ð°ÑģÑĮ\":132427,\"ĠØ¨ÙĦØ¯\":132428,\"æĤª\":132429,\"æĤªãģĦ\":132430,\"Ġ×ŀ×©×ª\":132431,\"æ§ĺãĢħ\":132432,\"æ§ĺãĢħãģª\":132433,\"à¸ĺà¸£à¸£à¸¡à¸Ĭà¸²à¸ķà¸´\":132434,\"ĠÙĥØ§ÙħÙĦ\":132435,\"ĠØ§ÙĦØ³Ùħ\":132436,\"×ĳ×ĺ×Ļ×Ĺ\":132437,\"cÃ¡\":132438,\"gÃªncia\":132439,\"ãĤ¹ãĤ¿ãĥ¼\":132440,\"à¸Ĺà¸³à¸ģà¸²à¸£\":132441,\"×Ļ×ľ×ª\":132442,\"Ġ×Ļ×ķ×¦×Ĳ\":132443,\"wÃ³j\":132444,\"à¸ļà¸¸à¸Ħ\":132445,\"à¸ļà¸¸à¸Ħà¸Ħà¸¥\":132446,\"Ø¹ØªÙħ\":132447,\"Ø¹ØªÙħØ¯\":132448,\"ãģĿãĤĮãģ«\":132449,\"ĠØ§ÙĦØªØ§Ø±ÙĬØ®\":132450,\"ÙĤØ±Ø§Ø¡\":132451,\"ĠyÃ¶netim\":132452,\"×§×©×¨\":132453,\"ĠÑģÐ¿Ð¾ÑĢÑĤ\":132454,\"Ġ×¨×Ĳ×©×ķ×Ł\":132455,\"ĠseÃ±al\":132456,\"Ġcháº¯n\":132457,\"çĦ¡ãģĦ\":132458,\"ĠÐ´Ð¾ÑģÑĤÐ°ÑĤ\":132459,\"ĠÐ´Ð¾ÑģÑĤÐ°ÑĤÐ¾ÑĩÐ½Ð¾\":132460,\"ĠÃ¡gua\":132461,\"à¸ģà¸£à¸ĵ\":132462,\"à¸ģà¸£à¸ĵà¸µ\":132463,\"Ġ×ŀ×©×ķ\":132464,\"Ġtráº£i\":132465,\"ë²Į\":132466,\"ujÄħcych\":132467,\"ÙģØ±Ø¯\":132468,\"à¹ĥà¸ģà¸¥\":132469,\"à¹ĥà¸ģà¸¥à¹ī\":132470,\"ãĤĭãģ®ãģ¯\":132471,\"×¨×ķ×ķ×Ĺ\":132472,\"ÙĨÙĥ\":132473,\"ĠØ§ÙĦÙĨÙĤ\":132474,\"ãģ®ãģ§ãģĹãĤĩãģĨ\":132475,\"ãģ®ãģ§ãģĹãĤĩãģĨãģĭ\":132476,\"ÙħØ¹Ø±Ùģ\":132477,\"ÙħØ¹Ø±ÙģØ©\":132478,\"ÑĥÑīÐµ\":132479,\"Ġ×ĳ×¢×Ļ×§×¨\":132480,\"ØªØµÙĦ\":132481,\"Ġ×Ķ×Ĳ×¨\":132482,\"Ġ×Ķ×Ĳ×¨×¥\":132483,\"ĠÅŀi\":132484,\"à¸Ĥà¸²à¸Ķ\":132485,\"íŀĺ\":132486,\"ãģªãĤĵãģ¨\":132487,\"ĠìĤ¬ëŀĳ\":132488,\"lÃ¼ÄŁÃ¼\":132489,\"Ø¨Ø§Ø¡\":132490,\"ĠØ§ÙĦØ¢Ø®Ø±\":132491,\"ĠfamÃŃlia\":132492,\"ĠThÃ¡ng\":132493,\"ÑīÐµÐ½Ð¸Ñı\":132494,\"ãĤ¯ãĥŃ\":132495,\"ĠThá»©\":132496,\"æĽ¸ãģį\":132497,\"ÐµÐ½Ð½Ð¾Ð¹\":132498,\"ìŀ¡\":132499,\"Ð±Ð»Ð°Ð³\":132500,\"Ð±Ð»Ð°Ð³Ð¾\":132501,\"Ð¿Ð¾Ð²\":132502,\"à¹ģà¸§\":132503,\"à¸ĩà¸Ħà¹Į\":132504,\"à¸Ńà¸±à¸Ļà¸Ķà¸±à¸ļ\":132505,\"ãģĤãģĴ\":132506,\"à¸£à¹īà¸²à¸¢\":132507,\"Ã¼nÃ¼n\":132508,\"Ġ×Ļ×Ľ×ķ×ľ×Ķ\":132509,\"Ð·Ð¾Ð½\":132510,\"ĠÐľÐ¸\":132511,\"Ð¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð»\":132512,\"Ġë³´ë©´\":132513,\"ØŃÙģØ¸\":132514,\"ÃªÌģ\":132515,\"ãģ«ãģĻãĤĭ\":132516,\"Ġ×ª×Ĳ\":132517,\"Ġ×Ķ×¡×ķ\":132518,\"ĠÑģÑĤÐ¾ÑĢ\":132519,\"ĠÑģÑĤÐ¾ÑĢÐ¾Ð½\":132520,\"ãĥĪãĥĥãĥĹ\":132521,\"ÅĤoÅĽÄĩ\":132522,\"ëħ¼\":132523,\"ëĵĿ\":132524,\"ĠÙĪØ§ÙĦØ¹\":132525,\"ì¶Ķ\":132526,\"Ġ×Ļ×¦×Ĳ\":132527,\"ĠÑĢÐ°Ð·Ð´ÐµÐ»\":132528,\"Ð°Ð»ÑĮÐ½Ð°Ñı\":132529,\"×Ĳ×ł×©×Ļ\":132530,\"spoÅĤ\":132531,\"spoÅĤec\":132532,\"spoÅĤeczn\":132533,\"Ø¥Ø¹ÙĦ\":132534,\"Ø¥Ø¹ÙĦØ§ÙĨ\":132535,\"ÙĤÙĪÙī\":132536,\"íķĺë©´ìĦľ\":132537,\"ØªØ·ÙĪØ±\":132538,\"ĠsiÃªu\":132539,\"á»Ľt\":132540,\"Ð´Ð²Ð¸\":132541,\"Ð´Ð²Ð¸Ð¶\":132542,\"Ġquáº§n\":132543,\"kÄ±l\":132544,\"ĠÐ¿ÑĢÐ¸Ð·Ð½Ð°\":132545,\"ĠHÃ£\":132546,\"ĠHÃ£y\":132547,\"ĠØ¨Ø§ÙĦØª\":132548,\"manÄ±n\":132549,\"ãĤ«ãĥ«\":132550,\"Ġká»·\":132551,\"×§×ľ×Ļ\":132552,\"ëĲĺì§Ģ\":132553,\"ØªØ¹ÙĦÙħ\":132554,\"ìĭľìĦ¤\":132555,\"ìĭ¶\":132556,\"íĺ¼\":132557,\"ÙĥÙĬÙģ\":132558,\"å£²ãĤĬ\":132559,\"à¸§à¸´à¸Ĭà¸²\":132560,\"Ð±Ð°Ð»\":132561,\"ĠØ£ØŃ\":132562,\"ĠÐ´Ð¾Ð»Ð¶ÐµÐ½\":132563,\"à¸£à¸²à¸ĩ\":132564,\"à¸£à¸²à¸ĩà¸§à¸±\":132565,\"à¸£à¸²à¸ĩà¸§à¸±à¸¥\":132566,\"ÙħØ§Ø¡\":132567,\"Ø¬Ø§Ø±\":132568,\"Åļ\":132569,\"Ġ×ŀ×Ĳ×ĸ\":132570,\"×¨×ŀ×Ķ\":132571,\"ãģĭãĤĤãģĹãĤĮãģªãģĦ\":132572,\"Ã©tude\":132573,\"czÄħc\":132574,\"ĠgÃ³r\":132575,\"×ł×¡×Ķ\":132576,\"ÙħÙĬØ¯\":132577,\"ĠÐŁÐµÑĢÐµ\":132578,\"Ø£Ø®Ø±\":132579,\"ãģĿãģ®å¾Į\":132580,\"à¹Ģà¸Ķà¸µà¸¢à¸§à¸ģà¸±à¸Ļ\":132581,\"×ŀ×Ĵ×ķ\":132582,\"×ŀ×Ĵ×ķ×ķ×Ł\":132583,\"Ð´Ð¾Ð²\":132584,\"masÄ±na\":132585,\"×¢×ł×Ķ\":132586,\"ãĤ±ãĥĥãĥĪ\":132587,\"×¡×¢\":132588,\"×¡×¢×Ļ×£\":132589,\"ĠTÆ°\":132590,\"ĠtÃ³c\":132591,\"íĻľëıĻ\":132592,\"ĠÐŀÐ´\":132593,\"ĠÐŀÐ´Ð½Ð°ÐºÐ¾\":132594,\"ĠdolayÄ±\":132595,\"Ø¤ÙĥØ¯\":132596,\"ê³Ħíļį\":132597,\"×ľ×¨\":132598,\"Ð²ÐµÑĩ\":132599,\"Ġkhá»Łi\":132600,\"Ġthá»§y\":132601,\"×ĵ×Ł\":132602,\"à¸£à¸ģ\":132603,\"à¸ļà¸±à¸ķà¸£\":132604,\"à¹Ģà¸ģà¹Īà¸²\":132605,\"ĠØ§ÙĦØ«Ø§ÙĦ\":132606,\"ĠØ§ÙĦØ«Ø§ÙĦØ«\":132607,\"ĠpodrÃ¡\":132608,\"×¢×¨×Ļ\":132609,\"ÙĨØ¬Ø§ØŃ\":132610,\"Ġkháº¯c\":132611,\"ì¸¡\":132612,\"Ä°M\":132613,\"ãĤ»ãĥĥãĥĪ\":132614,\"Å¼enia\":132615,\"Ġ×ľ×Ĺ×ĳ×¨\":132616,\"erÃł\":132617,\"ì´Ī\":132618,\"ĠkÃ¼Ã§\":132619,\"ĠkÃ¼Ã§Ã¼k\":132620,\"Ø§ØªÙĩÙħ\":132621,\"à¸ĭà¹Į\":132622,\"ÙħØ´Ø§Ø±ÙĥØ©\":132623,\"ĠØ§ÙĦØ¨Ø·\":132624,\"ĠdÃ¢y\":132625,\"ÐµÐ½Ð½ÑĭÐ¼\":132626,\"à¸Ĺà¸µà¹Īà¹Ħà¸¡à¹Ī\":132627,\"ÙĤÙİ\":132628,\"ĠvÆ°á»£t\":132629,\"ĠtrÃ¬\":132630,\"ĠwpÅĤyw\":132631,\"AÅŀ\":132632,\"Ð·Ð¾\":132633,\"ĠØ§ÙĦØ³ÙĬØ¯\":132634,\"à¸Ĺà¸°à¹Ģà¸¥\":132635,\"ĠÑģÐ¾Ð´ÐµÑĢÐ¶Ð°\":132636,\"Ø¹Ø·ÙĬ\":132637,\"ĠØ§ÙĦØ¹ÙĨ\":132638,\"èĢħãģĮ\":132639,\"à¹Ģà¸«à¸Ļ\":132640,\"à¹Ģà¸«à¸Ļà¸·à¸Ń\":132641,\"ĠbÃŃ\":132642,\"ĠÃ¼zerinden\":132643,\"ĠVÅ©\":132644,\"ĠnuÃ´i\":132645,\"ÙĨÙħ\":132646,\"Ð°Ð»ÑĮÐ½Ð¾Ð³Ð¾\":132647,\"×¢×Ļ×Ł\":132648,\"ØŃØ¶Ø±\":132649,\"ĠÐ¾ÑĤÐ´ÐµÐ»\":132650,\"ëªĩ\":132651,\"ìķ¡\":132652,\"ĠÙĦØ¯ÙĬÙĩ\":132653,\"ìĻľ\":132654,\"ĠsektÃ¶r\":132655,\"ĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾\":132656,\"ĠÐĶÐ¶\":132657,\"ĠhÃ´\":132658,\"äºĭãģĮ\":132659,\"Ð¸ÑĢÐ¾Ð²Ð°Ð½Ð¸Ðµ\":132660,\"Ð°Ð»ÑĮÐ½Ð¾Ð¹\":132661,\"Ġë¯¸êµŃ\":132662,\"Ø±ØŃÙĦ\":132663,\"ĠÑįÐºÑģ\":132664,\"Ð¿ÑĢÐ°Ð²Ð»Ñı\":132665,\"Ġnhá»Ŀ\":132666,\"ĠÄĳáº©\":132667,\"ĠÄĳáº©y\":132668,\"ÙģÙĥØ±\":132669,\"ĠÙĪØ£Ø¶Ø§Ùģ\":132670,\"ãĥĲãĤ¹\":132671,\"×ª×ķ×Ľ×ł×Ļ×ª\":132672,\"ÑĤÐµÐ»ÐµÐ¹\":132673,\"ĠØ¥ÙĦÙĬÙĩ\":132674,\"ãģ¨è¨Ģãģ£ãģ¦\":132675,\"ĠÐ´Ð²Ðµ\":132676,\"Ġcháº¥p\":132677,\"ĠLÃ¶\":132678,\"à¸Ħà¸¥à¸´\":132679,\"à¸Ħà¸¥à¸´à¸Ľ\":132680,\"ĠØ³ÙĪØ±\":132681,\"ĠØ³ÙĪØ±ÙĬØ§\":132682,\"×ŀ×Ĺ×ķ\":132683,\"stÃ¤\":132684,\"Ð´Ð¾Ð±\":132685,\"Ġniá»ĩm\":132686,\"ãģ®å¤§\":132687,\"×¤×¨×ķ×Ļ×§\":132688,\"×¤×¨×ķ×Ļ×§×ĺ\":132689,\"ĠChÃ¢u\":132690,\"Ġ×ŀ×Ķ×Ŀ\":132691,\"ÑģÐºÐ¸Ð¼\":132692,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐ¸ÑĤÑĮ\":132693,\"ÙĬÙĪÙħ\":132694,\"Ø«ÙĪØ±\":132695,\"×¤×ķ×ľ×Ļ×ĺ\":132696,\"×¤×ķ×ľ×Ļ×ĺ×Ļ\":132697,\"ĠÐ¼ÐµÑģÑıÑĨ\":132698,\"åħ¨ãģ¦\":132699,\"ĠØ§ÙĦÙħØ¬ÙĦØ³\":132700,\"ĠØ§ÙĦØªØ§ÙĦÙĬ\":132701,\"Ġ×Ĺ×¨\":132702,\"åĲĳãģĳ\":132703,\"×Ľ×ŀ×Ķ\":132704,\"Ð±ÐµÐ´\":132705,\"Ø£Ø¹Ø¶\":132706,\"Ø£Ø¹Ø¶Ø§Ø¡\":132707,\"ÙĪÙĦØ¯\":132708,\"à¸§à¹Īà¸²à¸Īà¸°\":132709,\"ĠbÃ¡nh\":132710,\"à¸Ļà¸´à¸¢\":132711,\"à¸Ļà¸´à¸¢à¸¡\":132712,\"à¸Ľà¸£à¸°à¸ģà¸±à¸Ļ\":132713,\"ÑģÑĤÐ°Ð²Ð¸ÑĤÑĮ\":132714,\"à¸ŀà¸Ļà¸±à¸Ļ\":132715,\"ĠÑįÑĦÑĦ\":132716,\"ĠÑįÑĦÑĦÐµÐºÑĤÐ¸Ð²\":132717,\"ĠÐ°Ð²ÑĤÐ¾ÑĢ\":132718,\"ĠÄĲÄĥng\":132719,\"ĠthÆ°á»Łng\":132720,\"ãĤĴæĦŁãģĺ\":132721,\"à¸ģà¸±à¸ļà¸ģà¸²à¸£\":132722,\"å¾Įãģ«\":132723,\"ĠyaÄŁ\":132724,\"Ø³ØªØ§ÙĨ\":132725,\"Ġliá»ģn\":132726,\"ãģĦãģ¾\":132727,\"iÃªu\":132728,\"à¹Ĥà¸Ķà¸Ļ\":132729,\"ĠÙĦØ°ÙĦÙĥ\":132730,\"à¹Ĥà¸£à¸ĩà¹Ģà¸£à¸µà¸¢à¸Ļ\":132731,\"×¦×Ļ×Ĵ\":132732,\"ĠØ§ÙĦÙħØ¹ÙĦÙĪÙħØ§Øª\":132733,\"ç§ģãģŁãģ¡\":132734,\"à¸Ĺà¸µà¹Īà¸Ħà¸¸à¸ĵ\":132735,\"ãģ«ãģªãģ£ãģ¦ãģĦãĤĭ\":132736,\"×ŀ×ĵ×Ļ×ł×Ķ\":132737,\"×¡×Ľ×Ŀ\":132738,\"ĠÐ²Ð½Ðµ\":132739,\"à¸ŀà¸Ļà¸±à¸ģà¸ĩà¸²à¸Ļ\":132740,\"ÑĢÐµÐ¹\":132741,\"à¹Ģà¸Īà¹īà¸²à¸«à¸Ļà¹īà¸²à¸Ĺà¸µà¹Ī\":132742,\"ĠHiá»ĩn\":132743,\"ĠmÃ©dico\":132744,\"ĠØªØŃÙĤÙĬÙĤ\":132745,\"ÑĮÑĤÐµ\":132746,\"miÅŁti\":132747,\"ÙĤÙĬØ§Ø¯Ø©\":132748,\"ãĤıãģĭãĤĬ\":132749,\"à¸¡à¸²à¸Īà¸²à¸ģ\":132750,\"ëħĢ\":132751,\"ãģ«éĸ¢ãģĻãĤĭ\":132752,\"×Ĳ×¨×Ĵ×ķ×Ł\":132753,\"mÃ¨tre\":132754,\"Ġ×¢×¦×ŀ×Ļ\":132755,\"ĠChÃºa\":132756,\"à¸£à¸¹à¹īà¸Ī\":132757,\"à¸£à¸¹à¹īà¸Īà¸±à¸ģ\":132758,\"ì£Ħ\":132759,\"ëĭµ\":132760,\"à¹ģà¸Ĺà¹ī\":132761,\"ĠgeÃ§en\":132762,\"ĠlanÃ§a\":132763,\"ĠØ§ÙĦØ¨ØŃØ«\":132764,\"×ĵ×ŀ×ķ\":132765,\"ãģ¯ãģĺ\":132766,\"ãģ¯ãģĺãĤģ\":132767,\"ĠdÃ¶nÃ¼ÅŁ\":132768,\"è¿ĳãģı\":132769,\"à¹Ģà¸ªà¸¡\":132770,\"à¹Ģà¸ªà¸¡à¸Ń\":132771,\"ëĿ½\":132772,\"ĠÃ¼Ã§\":132773,\"á»ŀ\":132774,\"ÑĪÐ°Ñı\":132775,\"à¸Ĺà¸£\":132776,\"ØŃÙĤÙĬÙĤØ©\":132777,\"à¸Ĥà¸Ńà¸ĩà¸ģà¸²à¸£\":132778,\"Ġë¬´ìĹĩ\":132779,\"Ġ×Ķ×Ľ×¨\":132780,\"ĠØ§ÙĦØµÙĬÙĨ\":132781,\"ĠÐ»ÑİÐ´Ð¸\":132782,\"à¸ķà¸²à¸¢\":132783,\"Ø¨ÙĪÙĦ\":132784,\"ĠviÃªm\":132785,\"Ġthiá»ĩu\":132786,\"à¸ģà¸Ķ\":132787,\"Ġ×ľ×ĵ×ĳ×¨\":132788,\"×¤×ł×Ķ\":132789,\"×Ĳ×¨×ĳ×¢\":132790,\"Ø³Ùī\":132791,\"ĠØ§ÙĦØ³ÙĬØ§Ø³\":132792,\"ĠØ§ÙĦØ³ÙĬØ§Ø³ÙĬØ©\":132793,\"ydÄ±\":132794,\"ÙĪØŃØ¯Ø©\":132795,\"ĠÐ´ÐµÑıÑĤÐµÐ»ÑĮÐ½Ð¾ÑģÑĤÐ¸\":132796,\"Ġ×ķ×Ķ×ŀ\":132797,\"Ð¿ÐµÑĩ\":132798,\"Ð¿ÐµÑĩÐ°ÑĤ\":132799,\"Ð¸ÑĢÐ¾Ð²Ð°Ð½Ð¸Ñı\":132800,\"ĠÑģÐ¾Ð³\":132801,\"ĠÑģÐ¾Ð³Ð»Ð°Ñģ\":132802,\"Ġ×Ľ×ĵ\":132803,\"Ġ×Ľ×ĵ×Ĳ×Ļ\":132804,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤÑĮ\":132805,\"×¡×¤×ķ×¨×ĺ\":132806,\"ĠilÃ§e\":132807,\"expÃ©rience\":132808,\"ĠThá»Ŀi\":132809,\"Ä°K\":132810,\"à¹Ħà¸Łà¸Łà¹īà¸²\":132811,\"ëĵ¤ìĹĲê²Į\":132812,\"à¸Ľà¸£à¸°à¹Ģà¸ł\":132813,\"à¸Ľà¸£à¸°à¹Ģà¸łà¸Ĺ\":132814,\"ĠmÃ¼mk\":132815,\"ĠmÃ¼mkÃ¼n\":132816,\"Ġ×Ĳ×ķ×ª×ł×ķ\":132817,\"ìĦ±ìĿĦ\":132818,\"ĠìĿ´ìľł\":132819,\"Ø²ÙĬØ§Ø±Ø©\":132820,\"ĠoldukÃ§a\":132821,\"rÃ³b\":132822,\"ĠØ£ÙĨØ§\":132823,\"Ġ×Ķ×ĳ×Ļ\":132824,\"ÑģÐµÐ½\":132825,\"×¢×Ļ×§×¨\":132826,\"×Ļ×ĵ×ķ×¢\":132827,\"dzÄħ\":132828,\"ÙħØ¹ÙĦÙĪÙħØ§Øª\":132829,\"Ø´Ø§Ø¨\":132830,\"ĠparÃ§a\":132831,\"à¸Ļà¸°à¸Ħà¸°\":132832,\"Ø¨Ø§Ø³\":132833,\"ĠÑĤÐ¾ÑĢÐ³\":132834,\"ĠÑĤÐ¾ÑĢÐ³Ð¾Ð²\":132835,\"Ġ×Ĺ×ĵ×¨\":132836,\"×Ľ×¨×ĺ\":132837,\"×Ľ×¨×ĺ×Ļ×¡\":132838,\"ĠAyrÄ±ca\":132839,\"ÃªÌ£\":132840,\"ìľ¨\":132841,\"ĠÑĤÐ°ÐºÐ¸Ðµ\":132842,\"Ġ×ŀ×¦×ķ×Ļ\":132843,\"ãĥ©ãĥ³ãĤŃãĥ³ãĤ°\":132844,\"×©×Ļ×ķ×ķ×§\":132845,\"åīįãģ®\":132846,\"ĠBáº£o\":132847,\"ÑīÑĥ\":132848,\"æĹ©ãģı\":132849,\"ĠPhÃ²ng\":132850,\"à¸ŀà¸£à¸°à¸£à¸²à¸Ĭ\":132851,\"×¤×Ĺ×ķ×ª\":132852,\"ĠÐ³Ð»\":132853,\"ĠÐ³Ð»Ð°Ð·\":132854,\"à¸Ĺà¹Īà¸²\":132855,\"Ġdáº¡y\":132856,\"ÑĢÐ¾ÑģÑĤ\":132857,\"à¹Ĥà¸Ķà¸¢à¹Ģà¸īà¸ŀà¸²à¸°\":132858,\"ĠquáºŃn\":132859,\"Ġ×Ĺ×ĳ×¨×ķ×ª\":132860,\"mÃªme\":132861,\"mÄ±ÅŁtÄ±\":132862,\"ĠØ§ÙĦØªØ¯Ø§ÙĪÙĦ\":132863,\"Ġnáº¡n\":132864,\"Ġ×Ķ×ĵ×Ļ\":132865,\"ĠØ§ÙĦØ·Ø±ÙĬÙĤ\":132866,\"×Ĵ×ķ×ª\":132867,\"Ġ×Ķ×ĵ×¨×ļ\":132868,\"ujÄħce\":132869,\"Ġchá»¯\":132870,\"ãĤĤãģ®ãģ®\":132871,\"ë°Ľ\":132872,\"ãģķãĤĵãģ¯\":132873,\"ĠyardÄ±m\":132874,\"ĠØ§ÙĦØ¹Ùħ\":132875,\"Ġì§Ħíĸī\":132876,\"Ġ×Ļ×Ĺ\":132877,\"Ġ×Ļ×Ĺ×¡×Ļ\":132878,\"ĠØ§ÙĦÙħØ¯ÙĬÙĨØ©\":132879,\"ĠcÃº\":132880,\"à¸ģà¸µà¸¬\":132881,\"à¸ģà¸µà¸¬à¸²\":132882,\"ĠniÃªn\":132883,\"misiÃ³n\":132884,\"×ł×Ļ×¡×Ļ\":132885,\"×ł×Ļ×¡×Ļ×ķ×Ł\":132886,\"ĠÐ²Ð¾Ð·ÑĢÐ°ÑģÑĤ\":132887,\"Ġ×¢×ķ×©×Ķ\":132888,\"ĠÙħØ¯ÙĬØ±\":132889,\"ÑıÑģÑĮ\":132890,\"ØŃØ¬Ùħ\":132891,\"íĻĺê²½\":132892,\"ĠØ§ÙĦØ£Ø®Ø±Ùī\":132893,\"uÃŁer\":132894,\"ĠØ§ÙĦØ¹Ø§ÙĦÙħÙĬØ©\":132895,\"ĠNgá»įc\":132896,\"êµĲíļĮ\":132897,\"ä¸Ĭãģ§\":132898,\"×Ļ×Ķ×ķ×ĵ\":132899,\"×Ļ×Ķ×ķ×ĵ×Ļ×Ŀ\":132900,\"ÙħØ³Ø§Ø¹Ø¯Ø©\":132901,\"ĠÐ¶Ð¸Ð·Ð½ÑĮ\":132902,\"ĠÐ¿Ð¾ÑĤÐ¾Ð¼Ñĥ\":132903,\"ĠØ§ÙĦÙħÙħÙĦ\":132904,\"ĠØ§ÙĦÙħÙħÙĦÙĥØ©\":132905,\"ĠGÃ¶r\":132906,\"Ø±ÙĲ\":132907,\"×ŀ×§×ķ×ŀ×ķ×ª\":132908,\"åĩºæĿ¥ãĤĭ\":132909,\"ÑĦÑĤ\":132910,\"ĠìĿ´ìłľ\":132911,\"ĠÑĢÐµÐ¼\":132912,\"ĠÑĢÐµÐ¼Ð¾Ð½ÑĤ\":132913,\"×ª×ķ×ļ\":132914,\"æĻĤãģ¯\":132915,\"ãĤīãĤĮãģªãģĦ\":132916,\"altÄ±\":132917,\"å®¶ãģ®\":132918,\"ĠØ§ÙĦØ¥Ø¹ÙĦØ§Ùħ\":132919,\"ë¦¬ëĬĶ\":132920,\"ãģĭãĤīãģ¯\":132921,\"ĠHáº¡\":132922,\"ãģĤãģ®\":132923,\"×ĵ×Ļ×ķ×Ł\":132924,\"Ø±ÙĬØ³\":132925,\"ĠsocietÃł\":132926,\"ĠØ§ÙĦÙĥØ¨ÙĬØ±\":132927,\"Ġ×ĳ×ŀ×¡\":132928,\"Ġ×ĳ×ŀ×¡×Ĵ×¨\":132929,\"Ġ×ĳ×ŀ×¡×Ĵ×¨×ª\":132930,\"ĠìŀĪìľ¼ë©°\":132931,\"Ġnáº·ng\":132932,\"ÙĩÙī\":132933,\"ĠBÃł\":132934,\"×ŀ×¨×ķ\":132935,\"ĠjÄĻ\":132936,\"ĠjÄĻzy\":132937,\"ĠjÄĻzyk\":132938,\"Ġ×Ľ×ŀ×ķ×ĳ×Ł\":132939,\"×¢×ľ×Ķ\":132940,\"à¸Ĺà¸µà¹Īà¹Ħà¸Ķà¹ī\":132941,\"ãģ¾ãģĹãĤĩãģĨ\":132942,\"×ŀ×¡×¤×¨\":132943,\"Ð¢Ðŀ\":132944,\"Ø³ÙĬØ§Ø³Ø©\":132945,\"ĠÐºÐ°Ð¶Ð´ÑĭÐ¹\":132946,\"ë²ł\":132947,\"tÄ±m\":132948,\"yá»ĩn\":132949,\"à¸£à¸µà¹Ī\":132950,\"ĠÐ´ÐµÑĤÑģÐº\":132951,\"à¸§à¸´à¸ĺà¸µà¸ģà¸²à¸£\":132952,\"mÃ³wi\":132953,\"×ĺ×¢×Ŀ\":132954,\"×Ķ×¦×ľ×Ĺ×Ķ\":132955,\"Ø¶ÙĬÙģ\":132956,\"ĠÑħÐ¾ÑĤÑı\":132957,\"ãĤĵãģ§ãģĦãĤĭ\":132958,\"à¸Ħà¸²à¸Ķ\":132959,\"à¸Ħà¸£à¸ļ\":132960,\"ĠÐºÑĥÑĢÑģ\":132961,\"ĠbaÅŁarÄ±\":132962,\"×ĳ×¨×ķ\":132963,\"ÙĬØ¹Ø©\":132964,\"ĠÐĿÑĥ\":132965,\"à¸Ħà¸§à¸²à¸¡à¹Ģà¸Ľà¹ĩà¸Ļ\":132966,\"Ġ×ľ×ŀ×©×ľ\":132967,\"Ġì¢ĭìĿĢ\":132968,\"ÙħØ¤Ø³Ø³\":132969,\"ÙħØ¤Ø³Ø³Ø§Øª\":132970,\"ĠprÃ©cis\":132971,\"Ġtháº£o\":132972,\"à¸ģà¹ĩà¸Ħà¸·à¸Ń\":132973,\"Ġ×©×Ľ×ľ\":132974,\"fÃ¼hrung\":132975,\"ãģĦãģ§\":132976,\"à¹ģà¸¥à¸°à¸¡à¸µ\":132977,\"à¸ģà¹ĩà¸¡à¸µ\":132978,\"Ġ×©×©\":132979,\"Ð¼ÐµÐ»\":132980,\"ĠÐºÐ½Ð¸Ð³\":132981,\"ĠØ¨Ø§ÙĦÙĨ\":132982,\"ĠØ¨Ø§ÙĦÙĨØ³Ø¨Ø©\":132983,\"ĠaldÄ±\":132984,\"ÑĤÐ°Ð¹\":132985,\"Ġ×Ĺ×ĵ×©×Ļ×Ŀ\":132986,\"å®Łãģ¯\":132987,\"Ø¹ÙĪØ§\":132988,\"ĠìĿĺë¯¸\":132989,\"Ð¸Ð·Ð¼\":132990,\"ÑĢÐ°Ð±Ð¾ÑĤÐ°ÑĤÑĮ\":132991,\"ÙģØµ\":132992,\"Ġ×ĳ×ł×ķ×¡×£\":132993,\"ãģ¨ãģĹãģ¦ãĤĤ\":132994,\"à¹Ģà¸Ľà¹ĩà¸Ļà¸Ĺà¸µà¹Ī\":132995,\"ĠÑģÐ»ÐµÐ´ÑĥÐµÑĤ\":132996,\"èĢĥãģĪãģ¦\":132997,\"Ġ×Ľ×Ļ×ķ×Ŀ\":132998,\"ÑģÑĤÑĭ\":132999,\"×Ľ×ľ×Ľ×ľ×Ļ\":133000,\"æµģãĤĮ\":133001,\"ãĤĴãģ¤ãģĳ\":133002,\"ÑĩÐ°ÑĤ\":133003,\"×Ļ×Ľ×ķ×Ł\":133004,\"×Ļ×¨×Ļ\":133005,\"larÄ±yla\":133006,\"ãĤ¤ãĥ¡\":133007,\"ãĤ¤ãĥ¡ãĥ¼ãĤ¸\":133008,\"×ł×ĸ×§\":133009,\"ĠciÃ²\":133010,\"ĠsÄ±n\":133011,\"ĠsÄ±nÄ±r\":133012,\"à¸Ļà¸Ħà¸£\":133013,\"ÐºÐ°ÑĤ\":133014,\"Ġlá»Ĺi\":133015,\"ëŀĮ\":133016,\"ØªÙģØ§Øµ\":133017,\"ØªÙģØ§ØµÙĬÙĦ\":133018,\"ëĨĵ\":133019,\"ĠÙħØ¶\":133020,\"ilmiÅŁ\":133021,\"Ø¨Ø§Ø±Ùĥ\":133022,\"ÐĿÐĺ\":133023,\"Ġtháº©m\":133024,\"Ġ×Ĳ×ķ×ª×ļ\":133025,\"ĠÐ¿ÑĢÐ¸Ð½Ð¸Ð¼\":133026,\"ĠÐ¿ÑĢÐ¸Ð½Ð¸Ð¼Ð°\":133027,\"ĠyÃ¶nt\":133028,\"ĠyÃ¶ntem\":133029,\"Ġ×ŀ×§×ĳ×ľ\":133030,\"ĠktÃ³rego\":133031,\"ê·Ģ\":133032,\"Ø´Ø±Ùģ\":133033,\"Ø¯Ø§Ùħ\":133034,\"ãģĦãĤįãģĦãĤį\":133035,\"ĠAlÃ©m\":133036,\"ĠgÃ¶rÃ¼\":133037,\"ĠgÃ¶rÃ¼nt\":133038,\"ĠgÃ¶rÃ¼ntÃ¼\":133039,\"Ø¯Ø³\":133040,\"ÑĪÐºÐ¸\":133041,\"Ð³ÑĢÐ°Ð´\":133042,\"Ġláº¡c\":133043,\"Ġsá»¯a\":133044,\"ãĤīãĤĮãģ¾ãģĻ\":133045,\"oÃłi\":133046,\"ÑīÐµÐ½\":133047,\"ãģĭãģªãģĦ\":133048,\"ĠÐ¿Ð¾Ð¿\":133049,\"ĠÐ¿Ð¾Ð¿Ñĥ\":133050,\"ĠÐ¿Ð¾Ð¿ÑĥÐ»ÑıÑĢ\":133051,\"ĠØ§ÙĦÙħÙĪÙĤØ¹\":133052,\"rÃ¤g\":133053,\"ï¼¡\":133054,\"íķĦ\":133055,\"ãĤĴè¦ĭãĤĭ\":133056,\"Ø§ÙħØ§\":133057,\"ĠØ§ÙĦØŃØ±Ø¨\":133058,\"ĠÐŁÐ°\":133059,\"Ġ×ľ×Ĳ×ª×¨\":133060,\"Ġtá»ĳc\":133061,\"×ĳ×ľ×Ķ\":133062,\"Ø±Ø¦ÙĬØ³\":133063,\"Ð²Ñĥ\":133064,\"ÙĬØ¯ÙĬ\":133065,\"ÐºÐ°Ð·Ð°Ð½\":133066,\"Ġ×Ĺ×©×ĳ×ķ×Ł\":133067,\"hÃ´tel\":133068,\"×¢×ķ×ł×Ķ\":133069,\"Ø¨ÙĨÙĬ\":133070,\"×ŀ×ķ×ľ\":133071,\"ĠÐ´Ð½Ñı\":133072,\"éĽ£ãģĹãģĦ\":133073,\"Ð²ÐµÐ´ÐµÐ½Ð¸Ñı\":133074,\"Ġ×ķ×ŀ×ª\":133075,\"Ð½Ð°Ð¿ÑĢÐ¸Ð¼ÐµÑĢ\":133076,\"ÙĤØ§Ø¨ÙĦ\":133077,\"ĠrÃ©sultat\":133078,\"ĠÑĢÐ°Ð·Ð²Ð¸ÑĤÐ¸Ñı\":133079,\"Ø±Ùĳ\":133080,\"ìłĦë¬¸\":133081,\"ĠØ§ÙĦÙħØ²ÙĬØ¯\":133082,\"ĠìľĦíķ´ìĦľ\":133083,\"ëĨį\":133084,\"íĻķ\":133085,\"ĠThiáº¿t\":133086,\"íĮ¨\":133087,\"malÄ±dÄ±r\":133088,\"ĠczÅĤ\":133089,\"ĠczÅĤowie\":133090,\"ĠczÅĤowiek\":133091,\"ĠÙĦØ¨ÙĨ\":133092,\"ĠÙĦØ¨ÙĨØ§ÙĨ\":133093,\"Ã¼sÃ¼\":133094,\"ãģªãĤĵãģł\":133095,\"ĠÅ¼ycie\":133096,\"ĠÑħÐ¾ÑĢÐ¾ÑĪÐ¾\":133097,\"æĸ¹ãģ«\":133098,\"ëĭ¤ë©´\":133099,\"Ð¸ÑĩÐµÑģÐºÐ°Ñı\":133100,\"×¢×¨×Ļ×Ľ\":133101,\"×¢×¨×Ļ×Ľ×ª\":133102,\"ãģ¾ãģĽãĤĵãģ§ãģĹãģŁ\":133103,\"ĠÑģÐ¾Ð±Ð¾Ð¹\":133104,\"Ġgá»Ĺ\":133105,\"ĠÐ´ÐµÐ»Ð°ÑĤÑĮ\":133106,\"daÄĩ\":133107,\"Ð°ÑĢÐ°\":133108,\"rÃ³Å¼ni\":133109,\"à¹Ģà¸¥à¸µà¹ī\":133110,\"à¹Ģà¸¥à¸µà¹īà¸¢\":133111,\"à¹Ģà¸¥à¸µà¹īà¸¢à¸ĩ\":133112,\"à¸Ŀà¸²à¸ģ\":133113,\"ĠØªÙĤ\":133114,\"ĠØªÙĤØ¯ÙĬ\":133115,\"ĠØªÙĤØ¯ÙĬÙħ\":133116,\"à¸«à¸Ļà¸¸à¹Īà¸¡\":133117,\"ĠmÃ¼cade\":133118,\"ĠmÃ¼cadele\":133119,\"ì§Ģë¥¼\":133120,\"ãĤ¤ãĤ¹\":133121,\"ĠØ£Ø³Ø§Ø³\":133122,\"jÄħcego\":133123,\"ĠÅŁeh\":133124,\"Ð½ÑĤÐµÑĢ\":133125,\"ÑĨÐ¸Ñİ\":133126,\"ï»»\":133127,\"ÑİÑīÐµÐ³Ð¾\":133128,\"à¹Ĥà¸Ľà¸£à¹ģ\":133129,\"à¹Ĥà¸Ľà¸£à¹ģà¸ģà¸£à¸¡\":133130,\"ĠmieÄĩ\":133131,\"ØŃÙĥÙĪÙħØ©\":133132,\"ãģ§ãģĹãģŁãģĮ\":133133,\"×Ļ×¡×Ķ\":133134,\"ãĤĤãģ®ãĤĴ\":133135,\"Ġ×ŀ×Ĳ×ª\":133136,\"à¸ªà¸¸à¸Ķà¸Ĺà¹īà¸²à¸¢\":133137,\"ĠcÅ©\":133138,\"ÙĨØ³Ø¨\":133139,\"ĠÐ¿ÑĢÐ¾Ñĩ\":133140,\"ĠÐ´Ð½ÐµÐ¹\":133141,\"ĠÑįÑĤÐ¸Ñħ\":133142,\"×ľ×ŀ×ª\":133143,\"Ð½ÑıÑı\":133144,\"ÑįÐº\":133145,\"Ġì§ĢëĤľ\":133146,\"à¸¡à¸«à¸²à¸§à¸´à¸Ĺà¸¢à¸²\":133147,\"à¸¡à¸«à¸²à¸§à¸´à¸Ĺà¸¢à¸²à¸¥\":133148,\"à¸¡à¸«à¸²à¸§à¸´à¸Ĺà¸¢à¸²à¸¥à¸±à¸¢\":133149,\"dÃ£o\":133150,\"ĠMÃ¡y\":133151,\"ĠêµŃê°Ģ\":133152,\"à¸ļà¸¸à¸£à¸µ\":133153,\"×Ĵ×Ļ×ľ\":133154,\"ĠÑĤÑĭÑģÑı\":133155,\"ĠÑĤÑĭÑģÑıÑĩ\":133156,\"ÙģÙĥ\":133157,\"ĠÐĺÑģ\":133158,\"è¡ĮãĤıãĤĮ\":133159,\"×¤×¨×ĵ\":133160,\"ãģ¤ãģį\":133161,\"à¸Ħà¸£à¸Ńà¸ļ\":133162,\"à¸Ħà¸£à¸Ńà¸ļà¸Ħà¸£à¸±à¸§\":133163,\"à¸Ĥà¸¶à¹īà¸Ļà¸¡à¸²\":133164,\"ä»ĬæĹ¥ãģ¯\":133165,\"ĠìĤ¬ëŀĮìĿ´\":133166,\"×¢×¦×ŀ×Ķ\":133167,\"Ð¿Ð¾ÑĢ\":133168,\"ĠKá»³\":133169,\"ĠÆ¡n\":133170,\"ĠthÄĥm\":133171,\"ÙģØ§ÙĤ\":133172,\"ãģļãģ«\":133173,\"Ġ×ľ×§×¨\":133174,\"Ġ×ľ×§×¨×ķ×Ĳ\":133175,\"Ø§ÙģÙĬØ©\":133176,\"ÙħÙİØ§\":133177,\"Ð³Ð°ÑĢ\":133178,\"ØµÙĦØ§\":133179,\"ØµÙĦØ§Ø©\":133180,\"Ġ×ŀ×ĸ×Ķ\":133181,\"lÄ±ÄŁÄ±nÄ±\":133182,\"Ġ×Ĳ×Ļ×ł×Ķ\":133183,\"ÐºÑĢÐ¾\":133184,\"ĠngÆ°Æ¡i\":133185,\"ĠÐ²Ð½Ð¸Ð¼\":133186,\"ĠÐ²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ\":133187,\"jÄħcy\":133188,\"ÙĢÙĢÙĢÙĢÙĢ\":133189,\"ÑģÑħÐ¾Ð´\":133190,\"ãģªãĤĵãģĭ\":133191,\"×ŀ×Ļ×ľ\":133192,\"Ġ×Ķ×Ĳ×Ĺ\":133193,\"ãĤıãģªãģĦ\":133194,\"Ø¹Ø³ÙĥØ±\":133195,\"ĠìĦ¸ê³Ħ\":133196,\"ĠÑĩÐµÐ³Ð¾\":133197,\"ĠÑģÑĢÐµÐ´ÑģÑĤÐ²Ð°\":133198,\"ĠÐłÐ°Ñģ\":133199,\"ãģªãģģ\":133200,\"ÙĨÙģØ³\":133201,\"×¨×Ļ×ķ×Ł\":133202,\"ÑģÑĥÐ´\":133203,\"ĠìĿ¸ê°Ħ\":133204,\"ĠØ§ÙĦÙħÙĤØ¨ÙĦ\":133205,\"ÙĨØ¹Ùħ\":133206,\"ØªÙĪÙģØ±\":133207,\"×©×ĳ×¢\":133208,\"Ä±lm\":133209,\"Ä±lmÄ±ÅŁ\":133210,\"Ġ×ľ×ª×ª\":133211,\"ØªØµÙģ\":133212,\"×Ķ×¤×ķ×ļ\":133213,\"à¹ĥà¸Ļà¸Ľà¸µ\":133214,\"ìĿ´ê³ł\":133215,\"ÙģÙĪØ²\":133216,\"à¸ľà¸¥à¸ĩà¸²à¸Ļ\":133217,\"ĠGiÃ¡o\":133218,\"à¸ļà¸Ńà¸ģà¸§à¹Īà¸²\":133219,\"ĠdÄ±ÅŁ\":133220,\"ĠdÄ±ÅŁÄ±nda\":133221,\"ì£½\":133222,\"ĠdzieÅĦ\":133223,\"ÐºÑĨÐ¸Ð¸\":133224,\"Ð¸ÑĨÐµ\":133225,\"ãģ®ä¸Ģ\":133226,\"Ø¹Ø´\":133227,\"Ð¿ÑĢÐµÑģÑģ\":133228,\"à¸«à¸Ļà¹Īà¸Ńà¸¢\":133229,\"à¸¥à¸±à¸ģà¸©à¸ĵà¸°\":133230,\"ĠpossibilitÃł\":133231,\"à¹Ħà¸Ķà¹īà¸£à¸±à¸ļà¸ģà¸²à¸£\":133232,\"à¸«à¸¢à¸¸à¸Ķ\":133233,\"ĠphiÃªn\":133234,\"çĶŁãģ¾ãĤĮ\":133235,\"Ø·ÙĪÙĦ\":133236,\"ÑĦÐ¸Ð½\":133237,\"fÃ¼r\":133238,\"ØŃÙĬØ§Ø©\":133239,\"íĸĪìĬµëĭĪëĭ¤\":133240,\"×Ľ×ł×ķ×ª\":133241,\"à¸Ľà¸£à¸°à¸ª\":133242,\"à¸Ľà¸£à¸°à¸ªà¸ļ\":133243,\"à¸Ľà¸£à¸°à¸ªà¸ļà¸ģà¸²à¸£à¸ĵà¹Į\":133244,\"ëĲĺìĹĪ\":133245,\"ĠkaÅ¼dy\":133246,\"Ġluyá»ĩn\":133247,\"ĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð·Ð°ÑĨÐ¸Ð¸\":133248,\"å°ĳãģªãģı\":133249,\"ÑģÑĤÑĢÐ¾ÐµÐ½\":133250,\"ĠtÃ©cnico\":133251,\"×§×Ķ×ľ\":133252,\"Ġ×ķ×Ĳ×Ĺ\":133253,\"ĠØ¹ÙĦÙĬÙĥ\":133254,\"ÑīÐµÐ½Ð¸Ðµ\":133255,\"Ġ×Ķ×Ļ×ľ×ĵ×Ļ×Ŀ\":133256,\"ÙĪØ³Ø§Ø¦ÙĦ\":133257,\"Ġ×ķ×Ķ×ª\":133258,\"ØªÙħÙĬØ²\":133259,\"ĠÑģÐºÐ°Ð·Ð°Ð»\":133260,\"ĠÐ¿Ð¾Ð»Ð¸\":133261,\"Ġ×Ķ×ŀ×¡\":133262,\"ÙĦÙĳÙİ\":133263,\"ÙħØ¤Ø³Ø³Ø©\":133264,\"Ġ×ŀ×Ļ×ĵ\":133265,\"ãģ£ãģ¡\":133266,\"ĠëĦĪë¬´\":133267,\"à¸ŀà¸µ\":133268,\"Ġtáº·ng\":133269,\"Ġtáº¥n\":133270,\"×¨×©×Ŀ\":133271,\"ĠmÃ©dica\":133272,\"Ġ×¢×ķ×ŀ\":133273,\"Ġ×¢×ķ×ŀ×ĵ\":133274,\"ÑĦÐ¾ÑĢ\":133275,\"ÙħØ±Ø©\":133276,\"Ġvatanda\":133277,\"ĠvatandaÅŁ\":133278,\"ĠÐ´ÐµÐ»Ð¾\":133279,\"à¸Ļà¸¡\":133280,\"ãģ¨åĲĮãģĺ\":133281,\"ÙģÙī\":133282,\"ÑģÐ¾ÑĢ\":133283,\"Ġ×Ķ×¡×¨×ĺ\":133284,\"ĠÃ©poca\":133285,\"ìłķì±ħ\":133286,\"ĠÑģÐ²ÑıÐ·Ð°Ð½\":133287,\"Ø¶Ø±Ø¨\":133288,\"ĠÙĦÙĨØ§\":133289,\"ĠuÅ¼ywa\":133290,\"ĠØ§ÙĦØ¬ÙĬØ´\":133291,\"ÑİÑĢ\":133292,\"×ĳ×¡×ķ×£\":133293,\"ĠÐ¼Ñĥ\":133294,\"ĠÐ¼ÑĥÐ·ÑĭÐº\":133295,\"bilitÃ©\":133296,\"ĠmaÃ§\":133297,\"Ø³Ùİ\":133298,\"ØªÙĦÙĥ\":133299,\"ãģ¬\":133300,\"ÙĬÙĦØ§\":133301,\"ÑĪÐ»Ð°\":133302,\"ÙĢÙĢÙĢ\":133303,\"ĠÐ¾Ð´Ð½Ð¾Ð¹\":133304,\"Ð·Ð²Ð°Ð½\":133305,\"ĠÑģÑĢÐ°Ð·\":133306,\"ĠÑģÑĢÐ°Ð·Ñĥ\":133307,\"ÙĨØ¸Ùħ\":133308,\"Ø±Ø§Ùĩ\":133309,\"ĠÙĦÙĩØ°Ø§\":133310,\"×Ľ×ķ×¨\":133311,\"Ġ×Ķ×©×ĳ×ķ×¢\":133312,\"Ġ×Ķ×©×ª\":133313,\"ĠQuáº£ng\":133314,\"ãĥ«ãĥ¼\":133315,\"ãģĪãģªãģĦ\":133316,\"×ĺ×Ĳ\":133317,\"Ġmiá»ģn\":133318,\"ĠPháºŃt\":133319,\"ĠØ§ÙĦØ³ÙĪÙĤ\":133320,\"ÄĤ\":133321,\"ĠØ§ÙĦØ¬ÙħØ¹\":133322,\"ĠØ§ÙĦØ¬ÙħØ¹Ø©\":133323,\"ÑİÑīÐµÐ¹\":133324,\"aÅĤem\":133325,\"Ø¹ØªÙĤØ¯\":133326,\"Ø£ÙĦÙħ\":133327,\"ÑģÐºÐµ\":133328,\"ĠìĿ´íķ´\":133329,\"ÙĨØ³Ø®\":133330,\"è¨ĢãģĦ\":133331,\"Ð´Ð¾Ð±Ð°Ð²\":133332,\"Ø³Ø¨ÙĤ\":133333,\"×¢×ķ×¨×¨\":133334,\"ÑĤÐ¸Ð¿\":133335,\"ãģĿãģĵãģ§\":133336,\"visiÃ³n\":133337,\"Ø¹ÙĪØ¯Ø©\":133338,\"ë¨¹\":133339,\"×ŀ×ĸ×¨×Ĺ\":133340,\"ĠØ¥ØŃ\":133341,\"Ġ×ľ×ĳ×Ļ×Ł\":133342,\"Ġ×ľ×¦×Ĳ×ª\":133343,\"ĠyardÄ±\":133344,\"ĠyardÄ±mc\":133345,\"ĠyardÄ±mcÄ±\":133346,\"Ä°Z\":133347,\"×§×¤×Ķ\":133348,\"trÃ©\":133349,\"liÄŁini\":133350,\"ÐºÐ»ÑİÑĩÐ°\":133351,\"ĠÃ¼retim\":133352,\"ĠayrÄ±\":133353,\"ĠkiÅŁiler\":133354,\"à¸Ħà¹īà¸Ļ\":133355,\"à¸Ħà¹īà¸Ļà¸«à¸²\":133356,\"ĠSá»±\":133357,\"Ġ×Ľ×¡\":133358,\"Ġ×Ľ×¡×£\":133359,\"ĠÑĤÐ°ÐºÐ¸Ñħ\":133360,\"ĠXuÃ¢n\":133361,\"ĠÐ»ÐµÐ³\":133362,\"ĠÐ»ÐµÐ³ÐºÐ¾\":133363,\"Ø«ÙĤØ§ÙģØ©\":133364,\"ÐĿÐŀ\":133365,\"ãĤ¹ãĤ¿ãĥĥ\":133366,\"ãĤ¹ãĤ¿ãĥĥãĥķ\":133367,\"åĲĪãģĦ\":133368,\"Ġ×Ķ×©×Ļ×ŀ×ķ×©\":133369,\"manÄ±z\":133370,\"ĠÐĴÐ°Ñģ\":133371,\"gÃ¼n\":133372,\"ìľĦìĽĲíļĮ\":133373,\"ĠwspÃ³ln\":133374,\"ĠÑģÐ²Ð¾Ðµ\":133375,\"íĥģ\":133376,\"à¹Ģà¸Ļà¸µà¸¢\":133377,\"ÙĪØ¨Ø©\":133378,\"Ð²ÑıÐ·\":133379,\"Ä±dÄ±r\":133380,\"ëĲĺìĹĪëĭ¤\":133381,\"ĠdeÄŁiÅŁtir\":133382,\"ãĤĭãģĵãģ¨ãģĮ\":133383,\"Ġ×Ĺ×ĵ×©×Ķ\":133384,\"ãĤīãĤĮãģ¦ãģĦãĤĭ\":133385,\"×Ĺ×Ļ×Ļ×ĳ\":133386,\"ĠÐļÐ°ÑĢ\":133387,\"×ł×Ļ×ª×ķ×Ĺ\":133388,\"Ġ×§×ĺ×Ł\":133389,\"×¨×ĸ\":133390,\"ÙĪØº\":133391,\"èªŃãģ¿\":133392,\"ĠØªÙĤÙĪÙħ\":133393,\"ĠÙĥØ§ÙĦ\":133394,\"à¸Ŀà¸¶à¸ģ\":133395,\"Ġë°ľìĥĿ\":133396,\"olÃ³gico\":133397,\"Ø±Ø§Ø¹\":133398,\"à¹ģà¸ģà¹īà¹Ħà¸Ĥ\":133399,\"ĠÑĢÐ°Ð±Ð¾ÑĤÑĥ\":133400,\"ÙĨÙĳÙİ\":133401,\"à¸Ńà¸¢à¸¹à¹Īà¸Ĺà¸µà¹Ī\":133402,\"ĠØ§ÙĦØ«Ø§ÙĨÙĬØ©\":133403,\"ĠNhÃ¢n\":133404,\"ÑħÐ²Ð°ÑĤ\":133405,\"Ã¶ne\":133406,\"ĠØ¹Ø¯Ø©\":133407,\"à¹ģà¸ªà¸ĩ\":133408,\"ÑĤÐ¾Ð¿\":133409,\"Ð¿ÑĥÑģÐºÐ°\":133410,\"Ø´Ø±Ø§Ø¡\":133411,\"ĠÐļÐ¾Ð¼\":133412,\"Ġ×¤×¢×ķ×ľ×Ķ\":133413,\"ìĤ¬ìĿ´\":133414,\"ìĤ¬ìĿ´íĬ¸\":133415,\"è¡Įãģ£ãģ¦\":133416,\"Ġ×Ķ×Ķ×ª\":133417,\"ĠÑģÑĤÐ¾ÑĢÐ¾\":133418,\"ĠÑģÑĤÐ¾ÑĢÐ¾Ð½Ñĭ\":133419,\"Ø¯Ø±Ø³\":133420,\"à¸ĭà¸¹\":133421,\"à¸ķà¹Īà¸³\":133422,\"ĠØ£Ø¨ÙĬ\":133423,\"Ð¿Ð¾Ð´Ð¾Ð±\":133424,\"ãģ«ãģ¦\":133425,\"Ø§Ø±ØªÙģØ§Ø¹\":133426,\"ĠÙħØ¤\":133427,\"Ð¸ÐºÐ¾Ð²\":133428,\"gefÃ¼hrt\":133429,\"à¸¡à¸·à¸Ńà¸ĸà¸·à¸Ń\":133430,\"ĠÙĦÙĤØ¯\":133431,\"ĠØ£ÙĨÙĳ\":133432,\"Ø³ÙĬØ·Ø±\":133433,\"ãģ¾ãģļãģ¯\":133434,\"×¡×ĵ\":133435,\"ÑģÐºÐ¾Ð»ÑĮÐºÐ¾\":133436,\"ãģ¿ãģŁãģĦãģª\":133437,\"×ĵ×¨×Ĵ\":133438,\"×¢×Ļ×ĵ\":133439,\"à¹ĥà¸«à¹īà¸ļà¸£à¸´à¸ģà¸²à¸£\":133440,\"ĠÐĶÐ¸\":133441,\"×ĳ×¢×Ļ×ķ×ª\":133442,\"Ġ×Ķ×Ĺ×ķ\":133443,\"Ð¿Ð¸ÑģÑĮ\":133444,\"ĠØ§ÙĦØ®ÙĦ\":133445,\"Ð±Ð°Ð²\":133446,\"ĠÄ°lk\":133447,\"ĠØ§ÙĦØ®Ùħ\":133448,\"ĠØ§ÙĦØ®ÙħÙĬØ³\":133449,\"ĠÙĬÙĤÙĪÙħ\":133450,\"æĻĤãģ®\":133451,\"ĠsÅĤow\":133452,\"ĠØ£ÙĩÙħ\":133453,\"Ø®ÙĦÙĤ\":133454,\"ĠØ£ØµØ¨ØŃ\":133455,\"Ġchá»©a\":133456,\"ĠthÃ¡c\":133457,\"ÙģØ§ÙĦ\":133458,\"Ġchá»Ŀ\":133459,\"ĠØ§ÙĦØ®Ø§Ø±\":133460,\"ĠØ§ÙĦØ®Ø§Ø±Ø¬\":133461,\"ĠØ§ÙĦØ®Ø§Ø±Ø¬ÙĬØ©\":133462,\"Ø·Ø§Ø¦Ø±\":133463,\"ĠtÃł\":133464,\"ĠtÃłu\":133465,\"à¸ģà¸¥à¹īà¸Ńà¸ĩ\":133466,\"ĠØ§ÙĦÙħØ±Ø£\":133467,\"ĠØ§ÙĦÙħØ±Ø£Ø©\":133468,\"åħ¨ãģı\":133469,\"ĠÃĸn\":133470,\"çļĦãģ«ãģ¯\":133471,\"ĠpiÃ¨ce\":133472,\"×Ĵ×Ļ×ĳ\":133473,\"ĠØ§ÙĦÙĪØ§ÙĤØ¹\":133474,\"ä»Ĭãģ®\":133475,\"ĠØ§ÙĦÙħÙĤ\":133476,\"cznÄħ\":133477,\"ÙģØ¹Ø§ÙĦ\":133478,\"ÐµÐ½Ð½Ð¾Ð³Ð¾\":133479,\"ĠÑĦÐ°ÐºÑĤ\":133480,\"ìĭłì²Ń\":133481,\"ĠÐŀÐ½Ð¸\":133482,\"ĠØ§ÙĦØ¨ÙĦØ§Ø¯\":133483,\"Ð¾Ð²Ð¸Ñĩ\":133484,\"ëıĮ\":133485,\"ÑĦÑĥÐ½ÐºÑĨÐ¸\":133486,\"Ġìĸ´ëĬĲ\":133487,\"ãĥķãĤ©ãĥ¼\":133488,\"dÃŃ\":133489,\"Ð¸Ð»Ð¾ÑģÑĮ\":133490,\"ÙħÙī\":133491,\"ĠØ§ÙĦØ£ÙħØ±ÙĬÙĥ\":133492,\"ĠØ§ÙĦØ£ÙħØ±ÙĬÙĥÙĬØ©\":133493,\"×ĺ×Ļ×¤×ķ×ľ\":133494,\"íĶĦë¡ľê·¸\":133495,\"íĶĦë¡ľê·¸ëŀ¨\":133496,\"Ġ×©×ķ×ł×ķ×ª\":133497,\"Ø´ÙħÙĦ\":133498,\"ĠÐ¿Ð°ÑĢÐ°\":133499,\"Ġ×Ķ×Ĺ×ķ×§\":133500,\"ÙĪØ²Ø§Ø±Ø©\":133501,\"ãģ¨ãģĻãĤĭ\":133502,\"Ġquáº£ng\":133503,\"ĠaÄŁÄ±r\":133504,\"ĠØ§ÙĦÙĦØ¬\":133505,\"ĠØ§ÙĦÙĦØ¬ÙĨØ©\":133506,\"ê¸´\":133507,\"ĠTÃ¢n\":133508,\"Ø¬ÙħÙĦ\":133509,\"Ð´Ð¾Ð»\":133510,\"à¹ģà¸ŀà¸Ĺà¸¢\":133511,\"à¹ģà¸ŀà¸Ĺà¸¢à¹Į\":133512,\"Ġ×¨×Ĳ×©×Ļ\":133513,\"ÑīÐµÐ¹\":133514,\"ĠÃ§evre\":133515,\"ĠÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑģ\":133516,\"Ġ×ĳ×ŀ×©×ļ\":133517,\"ĠaltÄ±n\":133518,\"ĠØ£Ø¹ÙħØ§ÙĦ\":133519,\"ĠÑģÐ²Ð¾ÐµÐ³Ð¾\":133520,\"ãĤĪãģĦ\":133521,\"×Ĺ×ľ×Ļ×ĺ\":133522,\"×ŀ×ł×¢\":133523,\"Ġ×¨×ĳ×Ķ\":133524,\"ĠØ£ÙĬØ¶Ø§Ùĭ\":133525,\"×ĸ×ľ\":133526,\"ĠØ§ÙĦØ³ÙĬØ§Ø³ÙĬ\":133527,\"æĢĿãģĨ\":133528,\"×§×¨×§\":133529,\"×§×¨×§×¢\":133530,\"ĠØ§ÙĦÙģØ±ÙĬÙĤ\":133531,\"Ð±Ð¸ÑĤ\":133532,\"×§×ł×Ķ\":133533,\"ĠØ¥ÙĨÙĩ\":133534,\"ĠÐĴÐ°Ð¼\":133535,\"ÐłÐŀ\":133536,\"ãĥĪãĥª\":133537,\"å¿ħè¦ģãģª\":133538,\"ĠchÃ¢u\":133539,\"ç¶ļãģĳ\":133540,\"ĠÃ§Ã¶zÃ¼m\":133541,\"gÅĤow\":133542,\"Ø¹ÙĤÙĦ\":133543,\"å£²ãĤĭ\":133544,\"iáº¿t\":133545,\"à¸Ĭà¸´à¹īà¸Ļ\":133546,\"ĠØŃÙĤÙĪÙĤ\":133547,\"Ø·ÙĦØ¹\":133548,\"ĠÄĳen\":133549,\"ĠÙĥØ§ÙģØ©\":133550,\"ãģ®ãģĶ\":133551,\"Ġë¬\":133552,\"Ġë¬¼\":133553,\"Ġë¬¼ë¡ł\":133554,\"ĠØ±Ø³ÙĪÙĦ\":133555,\"Ð·Ð°Ð¼\":133556,\"Ð·Ð°Ð¼ÐµÐ½\":133557,\"ĠkullanÄ±cÄ±\":133558,\"×¢×ķ×ľ\":133559,\"èī²ãĢħ\":133560,\"ÑĪÐ¸ÑĢ\":133561,\"Ġ×Ĺ×©\":133562,\"Ġwygl\":133563,\"ĠwyglÄħda\":133564,\"×©×Ļ×ŀ×ķ×©\":133565,\"å¿ĺãĤĮ\":133566,\"×¢×Ļ×¦×ķ×ĳ\":133567,\"ĠØ§ÙĦØ³ÙĪØ±ÙĬ\":133568,\"å°ĳãģªãģĦ\":133569,\"ĠÐ¿Ð¾Ð¸ÑģÐº\":133570,\"à¸ªà¸³à¸Ļà¸±à¸ģà¸ĩà¸²à¸Ļ\":133571,\"Ġ×ŀ×¦×ĵ\":133572,\"ĠmÃ¼ÅŁ\":133573,\"ĠmÃ¼ÅŁter\":133574,\"ĠmÃ¼ÅŁteri\":133575,\"ĠÙħÙĨÙĩÙħ\":133576,\"à¸ķà¸³à¹ģ\":133577,\"à¸ķà¸³à¹ģà¸«à¸Ļ\":133578,\"à¸ķà¸³à¹ģà¸«à¸Ļà¹Īà¸ĩ\":133579,\"ÅĽmie\":133580,\"Ġ×©×ł×ª\":133581,\"Ġ×Ķ×¤×Ļ\":133582,\"×¤×¨×©\":133583,\"×¢×ĳ×¨×Ļ×ª\":133584,\"à¸ªà¸Ļà¸±à¸ļ\":133585,\"à¸ªà¸Ļà¸±à¸ļà¸ªà¸Ļà¸¸\":133586,\"à¸ªà¸Ļà¸±à¸ļà¸ªà¸Ļà¸¸à¸Ļ\":133587,\"è¨Ģãģ£ãģ¦\":133588,\"à¸ģà¸²à¸£à¸Īà¸±à¸Ķ\":133589,\"ĠMoÅ¼e\":133590,\"Ð¸Ð·Ð°ÑĨÐ¸Ð¸\":133591,\"á»©t\":133592,\"ĠÙĪØ¨Ø¹Ø¯\":133593,\"ĠdeÄŁild\":133594,\"ĠdeÄŁildir\":133595,\"Ġ×ª×ŀ\":133596,\"Ġ×ŀ×ŀ×ł×ķ\":133597,\"è©±ãĤĴ\":133598,\"ĠÑĨÐµÐ½Ð°\":133599,\"ĠthÃºc\":133600,\"×Ļ×ŀ×ķ×Ł\":133601,\"ĠBÃ¡o\":133602,\"ãĤĴåıĸãĤĬ\":133603,\"å®īãģĦ\":133604,\"Ġ×¢×ķ×©×Ļ×Ŀ\":133605,\"èĩªåĪĨãģĮ\":133606,\"lÃ©e\":133607,\"ãĤĭãģ®ãģ§\":133608,\"Ð¸ÑĢÑĥÐµÑĤ\":133609,\"ãģ¦ãĤĭ\":133610,\"Ø³ØªØ±\":133611,\"ĠØ§ÙĦØŃÙĬ\":133612,\"×Ļ×ľ×ķ×ª\":133613,\"Ġ×Ĺ×ĳ\":133614,\"ÙĤØ±Ø£\":133615,\"ØªÙħÙĥÙĨ\":133616,\"Ø³Ø§Ø¦ÙĦ\":133617,\"prÃ¼f\":133618,\"ãģĭãģĳãģ¦\":133619,\"ĠÑģÐ¾Ð±ÑģÑĤÐ²ÐµÐ½Ð½Ð¾\":133620,\"ĠìľĦíķĺìĹ¬\":133621,\"×ľ×Ļ×ĺ\":133622,\"ãģĮå¤ļãģı\":133623,\"ÙĬØªÙĩØ§\":133624,\"ç«ĭãģ¦\":133625,\"à¸¡à¸Ńà¸ļ\":133626,\"ìĭľìŀ¥\":133627,\"Ð¾ÑĢÐ°\":133628,\"ĠsavaÅŁ\":133629,\"×ĺ×Ļ×ĳ×Ļ\":133630,\"×ĳ×ł×ķ\":133631,\"ÙħØ§Ø°Ø§\":133632,\"ê¸°ê°Ħ\":133633,\"ãģªãģ©ãģ§\":133634,\"Ġ×ŀ×ª×Ĺ×Ļ×ľ\":133635,\"Ġnhiá»ħ\":133636,\"Ġnhiá»ħm\":133637,\"ÐºÐ°ÑĢ\":133638,\"ÐºÐ°ÑĢÑĤ\":133639,\"Ġ×ľ×Ķ×©×ª×ŀ×©\":133640,\"×ł×Ļ×Ĺ\":133641,\"Ø§Ø¯ÙĬØ©\":133642,\"à¸£à¸²à¸¢à¸ĩà¸²à¸Ļ\":133643,\"ĠprzykÅĤad\":133644,\"ÑīÐ¸Ð¹\":133645,\"ØŃØ¶ÙĪØ±\":133646,\"ĠhÃ´n\":133647,\"ÃĿ\":133648,\"×ª×ķ×¦×Ĳ×ķ×ª\":133649,\"Ø±Ø§Ø¨Ø·\":133650,\"Ġbáº¿p\":133651,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐ¸\":133652,\"åĩºä¼ļãģĦç³»\":133653,\"à¸Ľà¸¥à¹Īà¸Ńà¸¢\":133654,\"ĠØ§ÙĦØ´Ø¨Ø§Ø¨\":133655,\"Ø§ÙĩÙĦ\":133656,\"ä»Ĭãģ¾ãģ§\":133657,\"Ø±Ø¬Ø¹\":133658,\"ãĤ¶ãĥ¼\":133659,\"ÙĤÙģ\":133660,\"ĠGroÃŁ\":133661,\"ĠíļĮìĽĲ\":133662,\"Ø§Ø¬Ø±\":133663,\"Ġ×ĳ×ŀ×§×¨×Ķ\":133664,\"ĠseguranÃ§a\":133665,\"fÃ¼hl\":133666,\"ãģ¦ãģĦãģı\":133667,\"à¸«à¸¡à¸Ń\":133668,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÐ¾Ð¼\":133669,\"ĠNÄĥm\":133670,\"ĠdÅĤugo\":133671,\"ÙħÙĨØŃ\":133672,\"×©×ķ×ķ×Ļ\":133673,\"ĠØ£ÙĬØ§Ùħ\":133674,\"à¸ªà¸łà¸²à¸ŀ\":133675,\"rzÄħ\":133676,\"Ø´Ø±ÙĥØ§Øª\":133677,\"ãĤĴèĢĥãģĪ\":133678,\"Ð´Ð°ÑĢ\":133679,\"à¸Ľà¸£à¸°à¸Ĭà¸¸à¸¡\":133680,\"Ġ×ķ×Ĳ×ĸ\":133681,\"iá»ĩn\":133682,\"ĠtÆ°Æ¡i\":133683,\"×©×Ļ×Ĺ\":133684,\"à¸Ńà¹Īà¸Ńà¸Ļ\":133685,\"æĽ¸ãģĦãģ¦\":133686,\"Ġngá»¯\":133687,\"×ĳ×Ļ×ĺ×Ĺ\":133688,\"×ĳ×Ļ×ĺ×Ĺ×ķ×Ł\":133689,\"Ġsáºµ\":133690,\"Ġsáºµn\":133691,\"ì§ĢëıĦ\":133692,\"ĠÐ¿ÑĢÐµÐ¿\":133693,\"ĠÐ¿ÑĢÐµÐ¿Ð°ÑĢÐ°ÑĤ\":133694,\"ĠÐ½Ð°ÑĥÑĩ\":133695,\"ĠÃľnivers\":133696,\"ĠÃľniversites\":133697,\"ĠÃľniversitesi\":133698,\"Ġ×Ĵ×ĵ×ķ×ľ×Ķ\":133699,\"Ġ×Ķ×ł×ª\":133700,\"Ġ×Ķ×ł×ª×ĳ×¢\":133701,\"ãģ§ãģĤãģ£ãģŁ\":133702,\"ĠmiesiÄħ\":133703,\"ĠmiesiÄħc\":133704,\"Ð³ÑĢÐ°Ð¼\":133705,\"Ð³ÑĢÐ°Ð¼Ð¼\":133706,\"ĠØ¨Ø´Ø£ÙĨ\":133707,\"ĠÑħÑĢ\":133708,\"×§×Ļ×ĵ\":133709,\"×§×Ļ×ĵ×ķ×Ŀ\":133710,\"Ø´ÙĥØ±\":133711,\"Ġá»ķ\":133712,\"Ġá»ķn\":133713,\"ãģĮãģĤãģ£ãģ¦\":133714,\"ãģķãĤĮãģ¾ãģĻ\":133715,\"Ġ×Ĺ×ķ×ĵ\":133716,\"Ġ×Ĺ×ķ×ĵ×©×Ļ×Ŀ\":133717,\"ÙħÙĪØ§Ø¬Ùĩ\":133718,\"ÙħÙĪØ§Ø¬ÙĩØ©\":133719,\"Ø£Ø´Ø®Ø§Øµ\":133720,\"Ø¨Øº\":133721,\"à¹Ģà¸£à¸µà¸¢à¸Ļà¸£à¸¹à¹ī\":133722,\"ãģĹãģ¦ãģĦãģı\":133723,\"Ġsáº¡n\":133724,\"å¿ħãģļ\":133725,\"×ł×Ļ×Ĵ\":133726,\"×ł×Ļ×Ĵ×ķ×ĵ\":133727,\"Ø¨Ø§ÙĦØº\":133728,\"×Ĺ×©×ŀ\":133729,\"×Ĺ×©×ŀ×ľ\":133730,\"Ġnapraw\":133731,\"ĠnaprawdÄĻ\":133732,\"Ø´ÙĩØ§Ø¯\":133733,\"×Ĳ×ķ×Ķ\":133734,\"×Ĳ×ķ×Ķ×ĳ\":133735,\"Ð¸ÑĨÑĭ\":133736,\"Ġ×Ķ×¨×Ľ×ĳ\":133737,\"ëŀĳ\":133738,\"Ġ×ª×¢\":133739,\"Ġ×Ķ×Ļ×©\":133740,\"Ġ×Ķ×Ļ×©×¨×Ĳ\":133741,\"Ġ×Ķ×Ļ×©×¨×Ĳ×ľ×Ļ\":133742,\"Ø£ÙħÙĨ\":133743,\"ÑİÑīÐ°Ñı\":133744,\"skÃ³r\":133745,\"LERÄ°\":133746,\"Ġ×Ķ×Ĳ×Ĺ×¨×ķ×Ł\":133747,\"×¢×ł×§\":133748,\"ĠÙĪÙĥÙĦ\":133749,\"ãģĵãģĵãģ§\":133750,\"ĠquÃ¡n\":133751,\"liÄŁin\":133752,\"à¸ģà¸İà¸«à¸¡à¸²à¸¢\":133753,\"Ø·Ùħ\":133754,\"Ø£Ø¬Ùĩ\":133755,\"Ø£Ø¬ÙĩØ²Ø©\":133756,\"ĠErdoÄŁan\":133757,\"ãģ§ãģĬ\":133758,\"ĠÐ²ÑĢÐ°\":133759,\"ĠÐ²ÑĢÐ°Ñĩ\":133760,\"ĠPhÃ³\":133761,\"à¸Ĭà¸±à¹Īà¸§\":133762,\"à¸Ĭà¸±à¹Īà¸§à¹Ĥà¸¡\":133763,\"à¸Ĭà¸±à¹Īà¸§à¹Ĥà¸¡à¸ĩ\":133764,\"ĠphÃºc\":133765,\"×Ļ×¤×ķ×ª\":133766,\"×¢×Ļ×ķ×Ł\":133767,\"ĠduÅ¼o\":133768,\"ãĥģãĥ¼ãĥł\":133769,\"ĠÙĬÙİ\":133770,\"ĠÐ·Ð°Ð´Ð°Ñĩ\":133771,\"Ġ×Ĵ×ĳ×ķ×Ķ×Ķ\":133772,\"Ġ×Ľ×Ľ×ľ\":133773,\"Ð»Ð¾Ð¶ÐµÐ½\":133774,\"Ã©tat\":133775,\"ĠngÄĥn\":133776,\"èµ·ãģį\":133777,\"ĠTiáº¿n\":133778,\"ØµØ¹Ø¨\":133779,\"ĠexperiÃªncia\":133780,\"Ø®Ùħ\":133781,\"à¸ģà¸²à¸£à¸Ĺà¸³à¸ĩà¸²à¸Ļ\":133782,\"Ø³ÙĬØ¯\":133783,\"ĠDá»±\":133784,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÐ¾Ð³Ð¾\":133785,\"ladÄ±ÄŁÄ±\":133786,\"Ġkhá»ķ\":133787,\"Ġê³ĦìĨį\":133788,\"ÑīÐ¸Ðº\":133789,\"à¸ªà¹Īà¸§à¸Ļà¸ķà¸±à¸§\":133790,\"Ð·Ð¾ÑĢ\":133791,\"ÙĨÙı\":133792,\"Ġà¸Ķà¸±à¸ĩ\":133793,\"Ġà¸Ķà¸±à¸ĩà¸Ļà¸±à¹īà¸Ļ\":133794,\"Ġcáº¥u\":133795,\"ĠÄĳá»ĳc\":133796,\"Ð¾ÑĦ\":133797,\"ĠØ§ÙĦØ£Ø¹ÙħØ§ÙĦ\":133798,\"ãģªãģıãģ¦ãĤĤ\":133799,\"×ķ×Ľ×Ļ×Ŀ\":133800,\"à¹ģà¸Ľ\":133801,\"ĠBÃªn\":133802,\"ãĥ¯ãĥ³\":133803,\"ĠgiÃ¡m\":133804,\"ĠÅŀu\":133805,\"ĠdÃ¡ng\":133806,\"Ø¹ÙĦÙĬ\":133807,\"à¹Ģà¸ģà¸©\":133808,\"à¹Ģà¸ģà¸©à¸ķà¸£\":133809,\"ÙĪØ¬Ø¨\":133810,\"Ð½Ð½ÑĭÐµ\":133811,\"ÙĤØ¶Ø§Ø¡\":133812,\"à¸Ħà¸§à¸ļ\":133813,\"à¸Ħà¸§à¸ļà¸Ħà¸¸\":133814,\"à¸Ħà¸§à¸ļà¸Ħà¸¸à¸¡\":133815,\"ãģ¤ãģ¤\":133816,\"ĠViá»ĩc\":133817,\"×ŀ×ĳ×ĺ\":133818,\"×©×Ļ×ª×ķ×£\":133819,\"ĠÐ²ÐµÐ´ÑĮ\":133820,\"kaza\":133821,\"kazaÅĤ\":133822,\"à¸ķà¸³à¸£à¸§à¸Ī\":133823,\"ãĤ¿ãĥ«\":133824,\"ĠÐ¿Ð¾Ð²Ñĭ\":133825,\"ĠÐ¿Ð¾Ð²ÑĭÑĪÐµÐ½\":133826,\"ĠSá»Ł\":133827,\"ĠìĦ¤ëªħ\":133828,\"ĠÃĩÃ¼nkÃ¼\":133829,\"ìĥĿíĻľ\":133830,\"Ö¾\":133831,\"ãĤĮãģ¦ãģĦãĤĭ\":133832,\"Ġ×ĳ×¨×Ĳ×©\":133833,\"×¨×ķ×Ĵ\":133834,\"ĠÐ¾ÑĦÐ¸\":133835,\"ĠÐ¾ÑĦÐ¸ÑĨÐ¸Ð°Ð»ÑĮÐ½\":133836,\"ĠÑĥÑģÑĤÐ°Ð½Ð¾Ð²\":133837,\"ĠÑĥÑģÑĤÐ°Ð½Ð¾Ð²Ð»ÐµÐ½\":133838,\"ĠØ§ÙĦÙħØµØ±\":133839,\"ĠØ§ÙĦÙħØµØ±ÙĬØ©\":133840,\"ĠÐŁÐ¾ÑįÑĤÐ¾Ð¼Ñĥ\":133841,\"ÙĨØµÙģ\":133842,\"ĠÙĪØ§ÙĦÙĨ\":133843,\"ĠhÃłi\":133844,\"à¸Ħà¸´\":133845,\"ĠAprÃ¨s\":133846,\"ì³Ĳ\":133847,\"à¹Ģà¸ĭà¸µà¸¢\":133848,\"×ĵ×ŀ×Ķ\":133849,\"activitÃ©\":133850,\"à¸Ħà¸´à¸Ķà¸§à¹Īà¸²\":133851,\"ÑĤÑĢÐµÐ½\":133852,\"à¹Ģà¸®\":133853,\"ãĥıãĤ¤\":133854,\"ãģĮå¢ĹãģĪ\":133855,\"ÐµÐ½Ð½Ð°Ñı\":133856,\"Ġìĺ¤ëĬĺ\":133857,\"ãĥ¢ãĥ³\":133858,\"ĠÐºÐ¾Ð½ÐµÑĩÐ½Ð¾\":133859,\"ĠÙħÙĤØ§Ø¨ÙĦ\":133860,\"clÃ©\":133861,\"ĠhÃ¼\":133862,\"Ġtháº³ng\":133863,\"ìłģìĿ´\":133864,\"ĠÐĲÐ»ÐµÐºÑģ\":133865,\"ĠÐĲÐ»ÐµÐºÑģÐ°Ð½\":133866,\"ĠÐĲÐ»ÐµÐºÑģÐ°Ð½Ð´ÑĢ\":133867,\"ãĥŀãĥ³ãĤ·ãĥ§ãĥ³\":133868,\"ãģ²ãģ¨ãģ¤\":133869,\"ãģªãģĬ\":133870,\"à¹Ģà¸Īà¹īà¸²à¸Ĥà¸Ńà¸ĩ\":133871,\"ëĵľë¦¬\":133872,\"Ø´Ø§Ø¡\":133873,\"ĠsaÄŁlÄ±k\":133874,\"ĠÅŁimdi\":133875,\"×Ļ×Ĳ×ľ\":133876,\"ØªØ£Ø«ÙĬØ±\":133877,\"Ø£Ø³Ø¨\":133878,\"Ø£Ø³Ø¨Ø§Ø¨\":133879,\"ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ÐµÐ½\":133880,\"Ð»Ð¾Ðº\":133881,\"×©×Ļ×ĳ×Ķ\":133882,\"Ġláº¯m\":133883,\"ĠTrÆ°á»Ľc\":133884,\"Ġ×Ķ×¢×ľ\":133885,\"ë¦¬ë¥¼\":133886,\"ĠÑĢÐµÐ¶\":133887,\"ĠÑĢÐµÐ¶Ð¸Ð¼\":133888,\"intÃ©\":133889,\"intÃ©gr\":133890,\"×Ĵ×ł×Ļ\":133891,\"ĠØ§ÙĦØ´Ø¹Ø±\":133892,\"ĠmilhÃµes\":133893,\"ĠpequeÃ±o\":133894,\"ãĤ³ãĥ¼ãĤ¹\":133895,\"×ķ×Ľ×Ĺ\":133896,\"à¹Ģà¸Ĭà¹īà¸²\":133897,\"Ø´Ø±ÙĤ\":133898,\"ĠhÆ°Æ¡ng\":133899,\"à¸£à¸±à¸Ĳà¸ļà¸²à¸¥\":133900,\"à¸ģà¸¥à¸²à¸¢\":133901,\"à¸ģà¸¥à¸²à¸¢à¹Ģà¸Ľà¹ĩà¸Ļ\":133902,\"ĠÐ¿Ð¾Ð´ÑħÐ¾Ð´\":133903,\"×ª×©×ķ×ĳ×Ķ\":133904,\"ãģıãģªãģ£ãģ¦\":133905,\"ĠØ§ÙĦØ£ÙħÙħ\":133906,\"ĠHá»įc\":133907,\"ĠwspÃ³ÅĤpr\":133908,\"ĠwspÃ³ÅĤprac\":133909,\"ÑĩÑĥÐ²\":133910,\"ÑĩÑĥÐ²ÑģÑĤÐ²\":133911,\"ÃŃstico\":133912,\"à¹Ģà¸ģà¸²à¸°\":133913,\"ìĽĢ\":133914,\"ĠÐ½Ð°Ð·Ð°Ð´\":133915,\"ãĤĭãĤĪãģĨãģ«\":133916,\"ĠÐ¡Ð¨\":133917,\"ĠÐ¡Ð¨ÐĲ\":133918,\"Ð¼Ð¾Ð½\":133919,\"ĠAsÃŃ\":133920,\"×ķ×¨×Ĵ\":133921,\"Ð¿Ð¾Ð»Ð½ÐµÐ½\":133922,\"×ŀ×¡×ľ\":133923,\"×ŀ×¡×ľ×ķ×ľ\":133924,\"à¹Ģà¸¥à¸·à¸Ńà¸Ķ\":133925,\"à¹Ģà¸£à¸´à¹Īà¸¡à¸ķà¹īà¸Ļ\":133926,\"ĠØ§ÙĦØ¥Ùħ\":133927,\"ĠØ§ÙĦØ¥ÙħØ§Ø±Ø§Øª\":133928,\"×¦×Ķ×¨\":133929,\"ãĥ¡ãĥªãĥĥãĥĪ\":133930,\"ĠÐ¿Ð¾ÑĤÐ¾Ð¼\":133931,\"Ð²Ð¸Ð·\":133932,\"ĠÙģØªØ±Ø©\":133933,\"å¾Įãģ®\":133934,\"ÐĿÐĲ\":133935,\"×ŀ×¡×¨\":133936,\"ÙĬØ±ÙĬ\":133937,\"prÃ©\":133938,\"ĠteÅŁek\":133939,\"ĠteÅŁekkÃ¼r\":133940,\"ĠÃ¶deme\":133941,\"Ø¯Ø§ÙĨ\":133942,\"ãģ¾ãģĹãģ¦\":133943,\"çĽ®ãģ«\":133944,\"ĠÑĤÐµÑĩÐµÐ½Ð¸Ðµ\":133945,\"lard\":133946,\"lardÄ±r\":133947,\"à¹Ģà¸£à¸²à¸Īà¸°\":133948,\"×¡×¤×Ļ\":133949,\"ĠÙĪÙĥØ°ÙĦÙĥ\":133950,\"ĠhÃ¡t\":133951,\"Ġtá»Ļc\":133952,\"à¸Ħà¸¸à¸¢\":133953,\"Ġbá»©c\":133954,\"ØŃÙĬÙĨ\":133955,\"èģŀãģĦãģ¦\":133956,\"ÙħØ¤Ø´Ø±\":133957,\"ĠNhÆ°\":133958,\"ĠÐ¼ÐµÐ½ÐµÐµ\":133959,\"à¸¥à¸°à¸Ħà¸£\":133960,\"ÑģÐ¸Ð½\":133961,\"ĠÑĢÐµÐº\":133962,\"ĠÑĢÐµÐºÐ»\":133963,\"ĠÑĢÐµÐºÐ»Ð°Ð¼\":133964,\"ĠÙģÙĩÙĪ\":133965,\"Ġ×ľ×ĸ\":133966,\"×Ļ×ł×ķ×ª\":133967,\"ĠÅŁart\":133968,\"ÑģÑĤÐ°Ð²ÐºÐ°\":133969,\"Ġíı¬íķ¨\":133970,\"ãģ«è¡Įãģı\":133971,\"ï¼Ŀ\":133972,\"ĠÐ¿Ð¾Ð·Ð²Ð¾Ð»ÑıÐµÑĤ\":133973,\"Ġ×ª×ķ×Ľ×ľ×ķ\":133974,\"Ð¾Ð²Ð°Ð»\":133975,\"ØµÙĦØ©\":133976,\"Ġ×ľ×©×ł×ķ×ª\":133977,\"ĠÐĺÐ³ÑĢ\":133978,\"ÙħÙĨØªØ¬Ø§Øª\":133979,\"ĠsatÄ±ÅŁ\":133980,\"ÑģÐºÐ¾\":133981,\"ĠØ§ÙĦØ«ÙĦØ§Ø«Ø§Ø¡\":133982,\"Ġ×Ķ×ĵ×ĳ×¨×Ļ×Ŀ\":133983,\"ãģĹãģ¾ãģĹãĤĩãģĨ\":133984,\"Ø¨ÙĤÙī\":133985,\"åĬĽãĤĴ\":133986,\"ĠÃĩok\":133987,\"ãĥģãĥ¥\":133988,\"à¹Ģà¸Ĭà¸·à¹īà¸Ń\":133989,\"à¸¢à¸¸à¸Ħ\":133990,\"à¸¨à¸²à¸¥\":133991,\"Ġ×§×ķ×ĵ×Ŀ\":133992,\"×ĸ×¨×Ļ×Ŀ\":133993,\"ãģ®åł´åĲĪ\":133994,\"ĠìķĬìķĺ\":133995,\"ãģĤãĤĬãģ¾ãģĻãģĮ\":133996,\"×Ĳ×©×¨\":133997,\"è¡Įãģı\":133998,\"ãģ»ãģĭ\":133999,\"æ°Ĺãģ«ãģªãĤĭ\":134000,\"Ð¹Ð´ÐµÑĤ\":134001,\"íķĺìĺĢëĭ¤\":134002,\"Ø³ØªÙħØ±Ø§Ø±\":134003,\"ĠÐŁÑĢÐµ\":134004,\"ĠÑģÐ±Ð¾ÑĢ\":134005,\"ĠìķĦë¬´\":134006,\"ç§ģãĤĤ\":134007,\"Ø¹Øµ\":134008,\"ĠÐ½Ð¸Ñĩ\":134009,\"ĠÐ½Ð¸ÑĩÐµÐ³Ð¾\":134010,\"ĠÐ¿ÑĢÐ¸ÐµÐ¼\":134011,\"×§×ķ×ŀ\":134012,\"ĠìĪĺëıĦ\":134013,\"Ġì¡´\":134014,\"Ġì¡´ìŀ¬\":134015,\"ĠØ£Ø«ÙĨ\":134016,\"ĠØ£Ø«ÙĨØ§Ø¡\":134017,\"ĠÙĪØ§ÙĦØŃ\":134018,\"ãģĮãģ§ãģįãĤĭ\":134019,\"Ġ×ª×Ķ\":134020,\"Ġ×ª×Ķ×Ļ×Ķ\":134021,\"×¨×Ł\":134022,\"ĠÑģÐ²ÑıÐ·Ð¸\":134023,\"×Ĵ×©×ª\":134024,\"ÑģÐ¿ÐµÐºÑĤ\":134025,\"×¡×ĳ×Ļ×ĳ\":134026,\"×¡×ĳ×Ļ×ĳ×Ķ\":134027,\"ĠíķĦìļĶíķľ\":134028,\"ØªØ®ØµØµ\":134029,\"ĠÐ¶Ð¸Ð²\":134030,\"ĠÐ¶Ð¸Ð²Ð¾ÑĤ\":134031,\"ĠMayÄ±s\":134032,\"ØªØ¹Ø§\":134033,\"ØªØ¹Ø§ÙĪÙĨ\":134034,\"ĠØ¹ÙĨÙĩØ§\":134035,\"Ã³wki\":134036,\"ĠØ§ÙĦÙģÙĦØ³Ø·ÙĬÙĨÙĬ\":134037,\"ãģłãģĳãģ§ãģªãģı\":134038,\"ìĿ¸ì§Ģ\":134039,\"ĠØ§ÙĦØ³ÙĪØ¯\":134040,\"ĠØ§ÙĦØ³ÙĪØ¯Ø§ÙĨ\":134041,\"Ø¥Ø¬Ø±Ø§Ø¡Ø§Øª\":134042,\"ĠkÃ¶tÃ¼\":134043,\"Ġ×Ļ×ª×¨\":134044,\"×Ĵ×Ļ×©×Ķ\":134045,\"Ġ×¦×ķ×¨×ļ\":134046,\"à¸£à¸ĸà¸¢\":134047,\"à¸£à¸ĸà¸¢à¸Ļà¸ķà¹Į\":134048,\"ÑħÐ¾ÑĤ\":134049,\"ÐłÐĲ\":134050,\"ÙĪØ·ÙĨ\":134051,\"ĠsayÄ±sÄ±\":134052,\"×¡×Ĺ×¨\":134053,\"ÙħÙĪÙĦ\":134054,\"ãĤĴæĮģãģ£ãģ¦\":134055,\"Ø¹Ø§ÙĨ\":134056,\"Ġtá»Ļi\":134057,\"ĠÐ²ÑĭÑĪÐµ\":134058,\"Ġtáº§m\":134059,\"ãĥĪãĥ¬\":134060,\"×Ļ×¦×ķ\":134061,\"à¸¡à¸¸à¸¡\":134062,\"Ø³ÙĪØ¯\":134063,\"ìłĦìŀĲ\":134064,\"ãĤµãĥŃãĥ³\":134065,\"ìĤ°ìĹħ\":134066,\"ĠÐ¾ÑģÐ½Ð¾Ð²Ð°Ð½\":134067,\"Ø®ÙģØ¶\":134068,\"×¨×¦×Ķ\":134069,\"Ø¨ÙĬØ¶\":134070,\"×ķÖ¹\":134071,\"×¡×Ļ×Ļ×¢\":134072,\"Ġ×©×Ĳ×Ļ\":134073,\"ĠØ§ÙĦÙĤØ±Ø¢ÙĨ\":134074,\"ĠÐ¢Ð°ÐºÐ¶Ðµ\":134075,\"×ŀ×©×ŀ×¢×ķ×ª\":134076,\"Ø³ÙĩÙĦ\":134077,\"Ġ×Ķ×ł×Ķ\":134078,\"ãĤĴãģĹãģ¦ãģĦãĤĭ\":134079,\"×Ļ×Ļ×¡\":134080,\"×Ķ×ķ×Ĳ\":134081,\"ĠBÃŃ\":134082,\"ĠÐ¼Ð°Ð»Ð¾\":134083,\"ĠëĶ°ëĿ¼ìĦľ\":134084,\"Ġ×¨×Ĺ×ĳ\":134085,\"ãģĮé«ĺãģĦ\":134086,\"ÙĪØ§Ø³\":134087,\"ìĤ¼\":134088,\"×ł×¢\":134089,\"ãģ£ãģ¡ãĤĥ\":134090,\"ĠTÃ¼m\":134091,\"à¸Ńà¸µà¸ģà¸Ķà¹īà¸§à¸¢\":134092,\"ãģĹãģ¦ãģıãģłãģķãģĦ\":134093,\"ÙĨØ´Ø§Ø·\":134094,\"ãĥĹãĥ©ãĥ³\":134095,\"Ð°Ð»Ð¸ÑģÑĮ\":134096,\"×ĵ×ľ×ª\":134097,\"ĠwczeÅĽ\":134098,\"ĠwczeÅĽniej\":134099,\"ĠÑįÑĤÐ¸Ð¼\":134100,\"Ġthá»ĭt\":134101,\"à¸ļà¸±à¸į\":134102,\"à¸ļà¸±à¸įà¸Ĭà¸µ\":134103,\"ãģļãģ£ãģ¨\":134104,\"ÑĢÐ¸Ð½\":134105,\"ĠswojÄħ\":134106,\"íķĺëĬĶëį°\":134107,\"Ġë§Įëĵ¤ìĸ´\":134108,\"ØªØ´Ùĥ\":134109,\"ØªØ´ÙĥÙĬÙĦ\":134110,\"Ø§Ø¦Ùĩ\":134111,\"Ġ×ľ×¤×Ĺ×ķ×ª\":134112,\"ãĥĭãĥ¥\":134113,\"ãĥĭãĥ¥ãĥ¼ãĤ¹\":134114,\"×Ľ×Ĳ×Ł\":134115,\"ãģ§ãģįãģŁ\":134116,\"Ð·Ð²Ð¾Ð½\":134117,\"ĠstaÅĤ\":134118,\"×Ĺ×ĳ×¨×ª×Ļ\":134119,\"ĠØ£Ø¹ÙĦÙĨ\":134120,\"à¹ģà¸ļà¸ļà¸Ļà¸µà¹ī\":134121,\"Ø¨Ø¯Ø¡\":134122,\"ãĤģãģŁ\":134123,\"Ġ×ŀ×©×ŀ×¢×ķ×ª\":134124,\"Ġ×ŀ×©×ŀ×¢×ķ×ª×Ļ\":134125,\"Ã¶rÃ¼\":134126,\"Ġháº¡nh\":134127,\"zÃ¤hl\":134128,\"ĠLÃ½\":134129,\"Ġ×ĳ×Ķ×ª\":134130,\"Ġ×ĳ×Ķ×ª×Ĳ×Ŀ\":134131,\"Ð±Ð°ÑĢ\":134132,\"ì¦Ī\":134133,\"ä»ĬåĽŀãģ®\":134134,\"ĠyÃ¼\":134135,\"ĠyÃ¼ks\":134136,\"ĠyÃ¼ksel\":134137,\"ãĤ½ãĥ¼\":134138,\"ãģĤãĤĮ\":134139,\"×ª×ľ×ŀ×Ļ×ĵ\":134140,\"ãģ¤ãģª\":134141,\"×ĳ×ł×Ļ×Ŀ\":134142,\"Ġxáº¿p\":134143,\"ĠÐ¼ÑĥÐ¶ÑĩÐ¸Ð½\":134144,\"ĠØ§ÙĦÙĥØªØ§Ø¨\":134145,\"×Ľ×ŀ×ķ×ª\":134146,\"ĠÃ§e\":134147,\"ĠÃ§eÅŁ\":134148,\"ĠÃ§eÅŁit\":134149,\"ĠÃ§eÅŁitli\":134150,\"×ĵ×Ļ×¨×ķ×ª\":134151,\"à¸ļà¸¸à¸į\":134152,\"ĠØ§ÙĦØ¥ÙĦÙĥ\":134153,\"ĠØ§ÙĦØ¥ÙĦÙĥØªØ±ÙĪ\":134154,\"ĠØ§ÙĦØ¥ÙĦÙĥØªØ±ÙĪÙĨÙĬ\":134155,\"ĠØ¨Ø§ÙĦØ¥Ø¶\":134156,\"ĠØ¨Ø§ÙĦØ¥Ø¶Ø§ÙģØ©\":134157,\"ĠyÃ¶nel\":134158,\"ĠyÃ¶nelik\":134159,\"mysÅĤ\":134160,\"à¸Ķà¹īà¸§à¸¢à¸ģà¸²à¸£\":134161,\"à¸ģà¸²à¸£à¸Ĺà¸³\":134162,\"Ð¾Ð²ÑĭÐ¼\":134163,\"Ø£Ø²ÙħØ©\":134164,\"æİ¢ãģĹ\":134165,\"íļ¨\":134166,\"Ġ×ķ×Ĳ×Ŀ\":134167,\"ĠnghiÃªm\":134168,\"ÑĪÐ¸Ð½\":134169,\"ÐºÐ°Ð»\":134170,\"ĠcrianÃ§as\":134171,\"èĩªåĪĨãģ§\":134172,\"ĠÐ½Ð°Ð¹\":134173,\"ĠÐ½Ð°Ð¹ÑĤÐ¸\":134174,\"ĠSá»ĳ\":134175,\"ĠÃ¶ÄŁrenciler\":134176,\"ãĥ¶æľĪ\":134177,\"ÑģÐ°Ð½\":134178,\"ĠJÃ¡\":134179,\"ĠkonuÅŁma\":134180,\"Ø´Ø±Ø·\":134181,\"ëĪĪ\":134182,\"arriÃ¨re\":134183,\"Ø¶Ø±ÙĪØ±Ø©\":134184,\"ãĥĶãĥ³\":134185,\"×¢×©×¨\":134186,\"Ð°ÑĢÑĮ\":134187,\"Ø¬ÙħØ§Ø¹\":134188,\"ĠdÃ©co\":134189,\"Ġ×Ļ×Ķ×ķ×ĵ×Ļ\":134190,\"à¸ŀà¸¥à¸²à¸Ķ\":134191,\"ĠÙĬÙĥÙĨ\":134192,\"ĠØ¬Ø§ÙħØ¹Ø©\":134193,\"Ø·Ø¨ÙĤ\":134194,\"ĠboÅŁ\":134195,\"×ķ×ķ×Ĳ\":134196,\"×ŀ×ĵ×¢\":134197,\"×§×ĳ×ķ×¦×ª\":134198,\"×¤×Ļ×¨\":134199,\"jÄħcym\":134200,\"ÙħØ´Ø§\":134201,\"ÙħØ´Ø§ÙĥÙĦ\":134202,\"×¦×¤×ķ×Ł\":134203,\"Ø¥Ø³Øª\":134204,\"×ŀ×Ľ×¨\":134205,\"Ø³ÙħØ¹\":134206,\"ĠÐºÐ°ÐºÐ¾Ð¹\":134207,\"ÑĤÐ²Ð¾ÑĢ\":134208,\"ØŃØ¬\":134209,\"ÙģØ±Ø¶\":134210,\"Ð¿ÑĢÐ°Ð²Ð»ÐµÐ½\":134211,\"ĠÐ½Ð¸ÐºÐ°Ðº\":134212,\"Ġmiá»ĩ\":134213,\"Ġmiá»ĩng\":134214,\"Ã¼ÃŁ\":134215,\"Ð¸ÑĢÐ¾Ð²Ð°Ð»\":134216,\"×ľ×ŀ×ķ×ª\":134217,\"æ¬¡ãģ®\":134218,\"ÙĦØ·\":134219,\"à¸ķà¸±à¸Ļ\":134220,\"×Ķ×ª×Ĺ×Ļ×ľ\":134221,\"ĠfotoÄŁ\":134222,\"ĠfotoÄŁraf\":134223,\"Ø·Ø±ØŃ\":134224,\"à¸Ńà¸Ńà¸ģà¹Ħà¸Ľ\":134225,\"ĠyÃªn\":134226,\"ĠÐ¿Ð¾Ðº\":134227,\"ĠÐ¿Ð¾ÐºÑĥÐ¿\":134228,\"ĠÐ¿Ð¾ÐºÑĥÐ¿Ð°\":134229,\"ÑĨÑĥ\":134230,\"ĠÐºÐ¾Ð¼Ð¿ÑĮÑİ\":134231,\"ĠÐºÐ¾Ð¼Ð¿ÑĮÑİÑĤÐµÑĢ\":134232,\"ĠØ§ÙĦÙĥØ±ÙĬÙħ\":134233,\"ØªØµÙħ\":134234,\"ØªØµÙħÙĬÙħ\":134235,\"ĠÐ¾ÐºÐ°Ð·Ð°\":134236,\"ĠzarÃ³wn\":134237,\"ĠzarÃ³wno\":134238,\"ëĮĢì¶ľ\":134239,\"ãĤ»ãĥ³ãĤ¿ãĥ¼\":134240,\"ĠjakoÅĽci\":134241,\"æĤ©\":134242,\"æĤ©ãģ¿\":134243,\"Ø£ÙĨÙĪ\":134244,\"Ø£ÙĨÙĪØ§Ø¹\":134245,\"ë¹ł\":134246,\"Ġìłķë§Ĳ\":134247,\"Ġkáº»\":134248,\"ĠÑģÐ°Ð¹ÑĤÐ°\":134249,\"Ġ×Ķ×¢×¨×ĳ\":134250,\"ÙĩØ²\":134251,\"presiÃ³n\":134252,\"ĠÑģÑĤÐµÐ½\":134253,\"ãģ£ãģ¦ãĤĭ\":134254,\"ĠhÄ±zlÄ±\":134255,\"ÐļÐĲ\":134256,\"×ŀ×©×¤×Ĺ×ª\":134257,\"ĠÙĨÙĩØ§\":134258,\"ĠÙĨÙĩØ§ÙĬØ©\":134259,\"ãģ¾ãģĦ\":134260,\"Ð¾ÑħÑĢÐ°Ð½\":134261,\"à¸£à¹īà¸Ńà¸¢\":134262,\"à¸¥à¸¶à¸ģ\":134263,\"ĠÙĪØ¨Ø§ÙĦ\":134264,\"ãĤĤãģ®ãģĮ\":134265,\"×¨×Ľ×Ļ×ĳ\":134266,\"ãĤ¤ãĥ¤\":134267,\"Ø³Ø¤\":134268,\"Ø³Ø¤Ø§ÙĦ\":134269,\"ĠÙĦØ£ÙĨÙĩ\":134270,\"ĠkonuÅŁtu\":134271,\"ÐļÑĥÐ¿Ð¸ÑĤÑĮ\":134272,\"Ġ×©×Ĳ×ª×Ķ\":134273,\"ĠÙĪØ§ÙĦØ³\":134274,\"ĠmoÅ¼liwoÅĽci\":134275,\"ĠprÃ³b\":134276,\"ëĶ°\":134277,\"ãģ©ãĤĮ\":134278,\"ĠÐľÐ¸Ð½\":134279,\"ĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð·Ð¼\":134280,\"ãģ«å¯¾ãģĻãĤĭ\":134281,\"ĠPrÃ©\":134282,\"ĠprivÃ©\":134283,\"chÃ¨\":134284,\"ãģĦãģŁãģłãģį\":134285,\"à¸ªà¸Ļà¸¸à¸ģ\":134286,\"ajÄħce\":134287,\"ĠDzi\":134288,\"ĠDziÄĻki\":134289,\"ÅĤatw\":134290,\"rÃ¤n\":134291,\"rÃ¤nk\":134292,\"æĿ¥ãģŁ\":134293,\"Ġ×Ķ×Ļ×Ķ×ķ×ĵ×Ļ\":134294,\"ãĤ¬ãĥ¼\":134295,\"ĠÑĢÐ°Ð´\":134296,\"ĠÑĢÐ°Ð´Ð¸\":134297,\"ÐºÑĤÐ¸Ð²\":134298,\"Ø£ÙĩØ¯\":134299,\"Ø£ÙĩØ¯Ø§Ùģ\":134300,\"×©×Ĳ×Ļ×¨\":134301,\"ãģ¦ãģĦãģªãģĦ\":134302,\"ĠfrÃ¼h\":134303,\"ĠÐ¾ÐºÐ¾Ð»\":134304,\"ĠÐ¾ÐºÐ¾Ð»Ð¾\":134305,\"ĠregiÃ£o\":134306,\"ĠÑĩÐ¸ÑģÐ»Ðµ\":134307,\"Ġponiew\":134308,\"ĠponiewaÅ¼\":134309,\"ìĦ¼íĦ°\":134310,\"Ġbáº§u\":134311,\"Ġê·\":134312,\"Ġê·ľ\":134313,\"Ġê·ľìłķ\":134314,\"ĠHÃ²a\":134315,\"ĠÑĤÐ¾ÑĤ\":134316,\"ãĤĤå¤ļãģĦ\":134317,\"ĠØ§ÙĦØ¥Ø³ÙĦØ§ÙħÙĬØ©\":134318,\"ãģĭãģĦ\":134319,\"ÑįÐ½\":134320,\"ĠÑĥÐºÐ°Ð·Ð°Ð½\":134321,\"ĠÑĤÐ°ÐºÐ¾Ðµ\":134322,\"ï¼³\":134323,\"ëĮĢíķĻ\":134324,\"ĠgeniÅŁ\":134325,\"ĠØ§ÙĦØ®ÙĬ\":134326,\"ĠØ§ÙĦØ®ÙĬØ§Ø±Ø§Øª\":134327,\"ãĤĴè¡ĮãģĨ\":134328,\"×©×ŀ×Ķ\":134329,\"ĠLÃłm\":134330,\"ÙĪÙĨÙĬ\":134331,\"Ġ×Ĳ×ľ×Ļ×ķ\":134332,\"Äĺ\":134333,\"à¹Ħà¸¡à¹Īà¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":134334,\"äººãģ¨\":134335,\"Ø¨Ø±Ø²\":134336,\"×Ļ×¡×ķ×ĵ\":134337,\"×Ĵ×ľ×Ļ\":134338,\"ĠÙĬÙĨØ§\":134339,\"ĠÙĬÙĨØ§ÙĬØ±\":134340,\"ĠÐºÐ°ÑĢÑĤÐ¸Ð½\":134341,\"ĠtÃ´n\":134342,\"à¹Ģà¸ģà¸£\":134343,\"à¸Ħà¸Ķà¸µ\":134344,\"Ġ×ľ×Ĳ×ķ×¨×ļ\":134345,\"ãĤĤãĤīãģĨ\":134346,\"ãģĭãģĭãĤĭ\":134347,\"Ð°Ð½Ð¸Ð¸\":134348,\"ĠaraÅŁtÄ±rma\":134349,\"ÙĦØ§ØŃØ¸\":134350,\"ãģĦãĤĦ\":134351,\"ĠTÃłi\":134352,\"Ġà¸Ļà¸Ńà¸ģà¸Īà¸²à¸ģ\":134353,\"Ġà¸Ļà¸Ńà¸ģà¸Īà¸²à¸ģà¸Ļà¸µà¹ī\":134354,\"ĠÄĲáº£ng\":134355,\"ãģ£ãģ¦ãģįãģŁ\":134356,\"Ġà¸ĭà¸¶à¹Īà¸ĩà¹Ģà¸Ľà¹ĩà¸Ļ\":134357,\"Ġtáº£\":134358,\"ĠmoÅ¼liwoÅĽÄĩ\":134359,\"ĠSáº£n\":134360,\"ĠÄ°ki\":134361,\"Ġcáº¯t\":134362,\"Ø³Ø£ÙĦ\":134363,\"ĠbakÄ±m\":134364,\"Ø´Ø¨\":134365,\"à¸ķà¸µà¹ī\":134366,\"à¸ŀà¸¢à¸²à¸¢\":134367,\"à¸ŀà¸¢à¸²à¸¢à¸²à¸¡\":134368,\"à¸ªà¸±à¸Ľ\":134369,\"à¸ªà¸±à¸Ľà¸Ķà¸²\":134370,\"à¸ªà¸±à¸Ľà¸Ķà¸²à¸«à¹Į\":134371,\"ë°Ģ\":134372,\"ÐµÑĢÑĭ\":134373,\"ĠcÃ¡nh\":134374,\"Ġthuáº¿\":134375,\"ØªØ¨Ø¹\":134376,\"ãģ«åħ¥ãĤĮ\":134377,\"ÑİÑģÑĮ\":134378,\"íļĮìĿĺ\":134379,\"ç°¡åį\":134380,\"ç°¡åįĺ\":134381,\"ç°¡åįĺãģ«\":134382,\"ĠtrÃºc\":134383,\"ĠØ§ÙĦÙĥÙĪÙĬ\":134384,\"ĠØ§ÙĦÙĥÙĪÙĬØª\":134385,\"ãĤıãģĳãģ§ãģĻ\":134386,\"ĠÑģÐ²Ð¾Ð±\":134387,\"ĠÑģÐ²Ð¾Ð±Ð¾Ð´\":134388,\"ĠÑĥÑĩÐ°ÑģÑĤÐ½Ð¸Ðº\":134389,\"à¸ªà¸´à¹īà¸Ļ\":134390,\"ĠÐ¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°\":134391,\"ĠÐ¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°Ð»ÑĮÐ½\":134392,\"ÑģÐ¿Ð¾ÑĢ\":134393,\"×Ĺ×ķ×ĳ×Ķ\":134394,\"ÙħØ¹ÙĨÙī\":134395,\"ĠØ§ÙĦÙģØªØ±Ø©\":134396,\"à¸ªà¸¹à¸ĩà¸ªà¸¸à¸Ķ\":134397,\"ãĤıãģļ\":134398,\"ĠÄĳÃ¨\":134399,\"ĠÄĳÃ¨n\":134400,\"æ¯Ķãģ¹\":134401,\"à¸²à¸ĺà¸´\":134402,\"ĠmoÅ¼emy\":134403,\"à¹ģà¸ĭ\":134404,\"à¸Īà¸°à¹Ħà¸¡à¹Ī\":134405,\"Ġsáº¯p\":134406,\"ÐļÐŀ\":134407,\"ĠprÃ¡ctica\":134408,\"ÙĪÙĥØ§ÙĦØ©\":134409,\"è¾¼ãĤĵãģ§\":134410,\"olÃ³gica\":134411,\"ĠÐµÑī\":134412,\"ĠÐµÑīÑĳ\":134413,\"ØªØ¹Ø¯ÙĬÙĦ\":134414,\"ĠØ£ÙĥØ¯\":134415,\"Ġ×¦×¨×Ļ×Ľ\":134416,\"Ġ×¦×¨×Ļ×Ľ×Ļ×Ŀ\":134417,\"Ø«Ùħ\":134418,\"ĠÐºÑĢÑĥ\":134419,\"ĠÐºÑĢÑĥÐ¿\":134420,\"×ĳ×Ļ×§×ķ×¨×ª\":134421,\"Ġì¡°ê¸Ī\":134422,\"ãģ¨ãģįãģ¯\":134423,\"Ġbáº¡c\":134424,\"ĠÑĢÐ°ÑģÐ¿Ð¾Ð»\":134425,\"ĠÑĢÐ°ÑģÐ¿Ð¾Ð»Ð¾Ð¶\":134426,\"ĠÑĢÐ°ÑģÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½\":134427,\"Ø²ÙĬÙĨ\":134428,\"ĠÐļÑĢÐ¾Ð¼Ðµ\":134429,\"ĠØ§ÙĦÙĨØ¸Ø±\":134430,\"×Ķ×ķ×ĵ\":134431,\"ĠØ§ÙĦØ³Ø¨Øª\":134432,\"ãģ¨æĢĿãģĦ\":134433,\"ĠpaÅĦst\":134434,\"ĠpaÅĦstw\":134435,\"ĠÙĦÙĬØ³Øª\":134436,\"ĠÐ±ÑĥÐ´Ñĥ\":134437,\"à¸Ĺà¸±à¸Ļà¸Ĺà¸µ\":134438,\"à¸£à¸²à¸¡\":134439,\"ØŃØµÙĪÙĦ\":134440,\"ãģĹãģ¦ãģıãĤĮãĤĭ\":134441,\"ĠØ§ÙĦØ¥Ø³Ø±Ø§Ø¦ÙĬÙĦ\":134442,\"ĠØ§ÙĦØ¥Ø³Ø±Ø§Ø¦ÙĬÙĦÙĬ\":134443,\"ãģĵãĤĮãģ¾ãģ§\":134444,\"ìĤ¬ë¥¼\":134445,\"ĠsÃ¼rÃ¼\":134446,\"à¹Ģà¸§à¸Ńà¸£à¹Į\":134447,\"à¹Ģà¸ĭà¸Ńà¸£à¹Į\":134448,\"ĠutilisÃ©\":134449,\"ĠÑģÐ¸ÑģÑĤÐµÐ¼Ð°\":134450,\"ĠdwÃ³\":134451,\"ĠdwÃ³ch\":134452,\"ĠprÃ³prio\":134453,\"Ġëĵ±ìĿĦ\":134454,\"arrÃªt\":134455,\"ĠÐ§Ð°\":134456,\"×Ĳ×ŀ×ł×ķ×ª\":134457,\"Ø¹Ø§Ø±Ø¶\":134458,\"à¹Ģà¸ģà¸¡à¸ªà¹Į\":134459,\"Ġ×ľ×Ķ×ĳ×Ļ×Ł\":134460,\"Ġ×ľ×ĳ×Ĺ\":134461,\"Ġ×ľ×ĳ×Ĺ×ķ×¨\":134462,\"à¸ªà¸²à¸Ĥà¸²\":134463,\"ĠÐľÐ¾ÑģÐºÐ²Ðµ\":134464,\"Ø¨Ø¹Ø¯\":134465,\"ĠØ§ÙĦÙĤØ±Ø§Ø±\":134466,\"ĠÄĲá»ĭa\":134467,\"Ġ×Ĺ×Ĵ\":134468,\"ÙģØªØ±\":134469,\"ÙĪÙĨØ©\":134470,\"Ġ×Ķ×ĸ×Ĳ×ª\":134471,\"å¸Ĥãģ®\":134472,\"ãģ»ãģĹãģĦ\":134473,\"Ġ×ĳ×¢×Ļ×¨\":134474,\"ĠÑĤÐµÐ¿ÐµÑĢÑĮ\":134475,\"ìĬµëĭĪê¹Į\":134476,\"à¹Ħà¸¡à¹Īà¸§\":134477,\"à¹Ħà¸¡à¹Īà¸§à¹Īà¸²\":134478,\"à¹Ħà¸¡à¹Īà¸§à¹Īà¸²à¸Īà¸°\":134479,\"×ŀ×Ĳ×Ķ\":134480,\"æĥħåł±\":134481,\"æĥħåł±ãĤĴ\":134482,\"ØºÙĨ\":134483,\"ĠÐ¿Ð¾Ñı\":134484,\"ĠÐ¿Ð¾ÑıÐ²Ð¸\":134485,\"éģİãģĶ\":134486,\"ØªØ´Øº\":134487,\"ØªØ´ØºÙĬÙĦ\":134488,\"Ð²ÐµÐ»\":134489,\"Ġ×Ĺ×ŀ\":134490,\"ãģ¨ãģªãĤĬãģ¾ãģĻ\":134491,\"ĠraÄŁ\":134492,\"ĠraÄŁmen\":134493,\"ãģĭãģ©ãģĨ\":134494,\"ãģĭãģ©ãģĨãģĭ\":134495,\"ÐµÐ½ÐºÐ¾\":134496,\"ì§Ģê³ł\":134497,\"Ġ×Ĳ×ľ×Ļ×Ķ\":134498,\"ĠØ£ÙĦ\":134499,\"à¸Īà¸³à¸«à¸Ļ\":134500,\"à¸Īà¸³à¸«à¸Ļà¹Īà¸²à¸¢\":134501,\"nÄ±zÄ±\":134502,\"Ġ×ľ×§×Ĺ×ª\":134503,\"Ø£ÙĩÙħ\":134504,\"Ø£ÙĩÙħÙĬØ©\":134505,\"ØªØºÙĬØ±\":134506,\"×©×Ĺ×¨\":134507,\"×¡×ķ×¤×¨\":134508,\"×ĵ×Ļ×¨\":134509,\"èī¯ãģĭãģ£ãģŁ\":134510,\"×ŀ×ľ×Ĺ×ŀ×Ķ\":134511,\"ÑģÑĤÐ²Ð¸Ðµ\":134512,\"ÑĤÑĢÐ°ÑĤ\":134513,\"ĠØ§ÙĦØ£Ø®\":134514,\"ĠØ§ÙĦØ£Ø®ÙĬØ±Ø©\":134515,\"ĠØ§ÙĦØŃØµÙĪÙĦ\":134516,\"ĠcrÃ©dito\":134517,\"×¦×Ļ×¢\":134518,\"ãĥ¬ãĥĻãĥ«\":134519,\"Ø¨Ø±ÙĬ\":134520,\"ëĲĲ\":134521,\"ãģłãģ£ãģ¦\":134522,\"ĠrealtÃł\":134523,\"Ø³ÙģØ±\":134524,\"×ķ×ł×ķ\":134525,\"×Ĵ×ķ×ĵ\":134526,\"×Ĵ×ķ×ĵ×ľ\":134527,\"à¸®à¸²\":134528,\"ãģĹãģ¦ãģĬãĤĬãģ¾ãģĻ\":134529,\"ĠgÃł\":134530,\"Ġ×ľ×ĳ×¦×¢\":134531,\"å¼ķè¶ĬãģĹ\":134532,\"Ġ×ŀ×Ļ×ľ×Ļ\":134533,\"Ġ×ŀ×Ļ×ľ×Ļ×ķ×Ł\":134534,\"ÙħØ¯Ø±\":134535,\"ÙħØ¯Ø±Ø³Ø©\":134536,\"×¤×ķ×ĺ\":134537,\"à¸Ļà¹īà¸³à¸¡à¸±à¸Ļ\":134538,\"ëģĿ\":134539,\"Ø¹ÙĥØ³\":134540,\"ĠÙĤØ¶\":134541,\"ĠÑĢÑĭÐ±\":134542,\"Ø®Ø·Ø·\":134543,\"×ŀ×ķ×¡×ĵ\":134544,\"Ġ×Ľ×ľ×ľ×Ļ\":134545,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÐ¾Ðµ\":134546,\"×¦×Ļ×ķ×Ł\":134547,\"ĠÐ¼ÐµÑģÑĤÐ°\":134548,\"ãģĭãģ¤\":134549,\"Ð³ÑĢÑĥÐ¿Ð¿\":134550,\"×ľ×Ļ×ľ\":134551,\"×ª×ķ×Ĳ×¨\":134552,\"ë³µì§Ģ\":134553,\"à¹ģà¸ľà¹Īà¸Ļ\":134554,\"Ġ×ĳ×¢×ª\":134555,\"æĻĤéĸĵãĤĴ\":134556,\"ï¼£\":134557,\"ãģ¨ãģĦãģĨãģĵãģ¨ãģ§\":134558,\"Ġ×ľ×Ķ×§\":134559,\"Ġ×ľ×ĸ×Ķ\":134560,\"ĠìłĢëĬĶ\":134561,\"ĠØ§ÙĦØ¥Ø±ÙĩØ§Ø¨\":134562,\"ĠìŀĪëĬĶëį°\":134563,\"ĠÑĤÐ¾Ð³Ð´Ð°\":134564,\"Ġ×Ķ×¦×Ļ\":134565,\"×ķ×ľ×ĺ\":134566,\"Ġ×¨×¤×ķ×Ĳ×Ļ\":134567,\"ãģĵãģ¨ãģ§ãģĻ\":134568,\"ĠÄĳÃŃch\":134569,\"ØŃÙĬØ§\":134570,\"Ġ×Ķ×ŀ×©×Ĺ×§\":134571,\"ãģľãģ²\":134572,\"Ġ×ŀ×Ĳ×¤×©×¨\":134573,\"ãģ¿ãģ¾ãģĹãģŁ\":134574,\"ĠØ§ÙĦØ£ÙħÙĬØ±ÙĥÙĬ\":134575,\"ÙħØ¬ØªÙħØ¹\":134576,\"ĠØ³Ø§Ø¨\":134577,\"ĠØ³Ø§Ø¨ÙĤ\":134578,\"×Ľ×Ļ×ľ\":134579,\"áº¾\":134580,\"ãĥªãĤ¹ãĥĪ\":134581,\"Ġìĥ\":134582,\"ĠìĥĪ\":134583,\"ĠìĥĪë¡ľ\":134584,\"ĠìĥĪë¡ľìļ´\":134585,\"ĠDá»ĭch\":134586,\"à¹Ģà¸«à¸¡à¸²à¸°à¸ªà¸¡\":134587,\"ĠØ§ÙĦÙĨØ¨ÙĬ\":134588,\"×ľ×ľ\":134589,\"ÙĨØ¹\":134590,\"ÐĵÐ»Ð°Ð²\":134591,\"ÐĵÐ»Ð°Ð²Ð½Ð°Ñı\":134592,\"ÙħØ±Ø¶\":134593,\"Ġ×ķ×ĵ\":134594,\"ØªÙĤÙĬ\":134595,\"ØªÙĤÙĬÙĬÙħ\":134596,\"Ġbáº£ng\":134597,\"ĠÙģÙĤØ§ÙĦ\":134598,\"×¢×ŀ×Ļ\":134599,\"Ð´ÑĢÐ°\":134600,\"Ġsuá»ĳt\":134601,\"Ø³Ø±Ø¹Ø©\":134602,\"Ġcá»Ń\":134603,\"Ġ×Ķ×Ļ×Ĺ×Ļ×ĵ\":134604,\"Ø³Ø¹ÙĬØ¯\":134605,\"à¸Ńà¸²à¸Ĭà¸µà¸ŀ\":134606,\"ĠØ³ÙĪØ§Ø¡\":134607,\"ãĤ½ãĥķãĥĪ\":134608,\"ĠÐ»Ð¸ÑĩÐ½Ð¾\":134609,\"ĠÐļÐ¾ÑĢ\":134610,\"Ø§ÙĩØªÙħ\":134611,\"Ø§ÙĩØªÙħØ§Ùħ\":134612,\"à¸Ńà¸Ķà¸µ\":134613,\"à¸Ńà¸Ķà¸µà¸ķ\":134614,\"ãģĲãĤīãģĦ\":134615,\"Ġihtiya\":134616,\"ĠihtiyaÃ§\":134617,\"ãģ¾ãģ§ãģ®\":134618,\"ìĭľìĬ¤\":134619,\"ìĭľìĬ¤íħľ\":134620,\"ÑĢÑĥÑĪ\":134621,\"ãĤĦãģ£ãģ±\":134622,\"ãĤĦãģ£ãģ±ãĤĬ\":134623,\"ÐºÐµÑĢ\":134624,\"ĠÅ¼y\":134625,\"ĠÅ¼yw\":134626,\"ÐºÐ»Ð¾Ð½\":134627,\"ĠlÆ°á»£t\":134628,\"Ã¾\":134629,\"Ð´Ð°ÑĩÐ¸\":134630,\"tÃ¼rk\":134631,\"ØºÙĪ\":134632,\"ĠÐ¸Ð³ÑĢÐ¾Ðº\":134633,\"ĠphÃª\":134634,\"Ġ×©×¢×ľ\":134635,\"ĠØ§ÙĦÙħØ¯ÙĨÙĬ\":134636,\"ĠìĹ¬ëŁ¬ë¶Ħ\":134637,\"×¢×¨×Ļ×Ŀ\":134638,\"ÑħÐ¾Ð´ÑıÑĤ\":134639,\"Ġxá»©\":134640,\"ÐĹÐ°\":134641,\"ĠÙģØ±Øµ\":134642,\"à¸Īà¸°à¸Ĺà¸³à¹ĥà¸«à¹ī\":134643,\"íģ´\":134644,\"×¢×ĳ×ķ×¨\":134645,\"à¹Ģà¸«à¸¥à¹Īà¸²à¸Ļà¸µà¹ī\":134646,\"èĢĥãģĪãĤĭ\":134647,\"ÑĢÐµÑģÑĤ\":134648,\"Ð½Ð½ÑĭÐ¹\":134649,\"Ġcáº§m\":134650,\"Ø¯Ø§Ø®ÙĦ\":134651,\"ĠÙħÙĦÙĬØ§Ø±\":134652,\"ĠÐĲÐ»\":134653,\"ĠÐ²ÑĢÐµÐ¼ÐµÐ½\":134654,\"à¸Ĭà¹Īà¸§à¸¢à¹ĥà¸«à¹ī\":134655,\"×¨×Ļ×ķ×ª\":134656,\"ëĵ¯\":134657,\"é£²ãģ¿\":134658,\"×ł×ľ\":134659,\"×©×ª×£\":134660,\"ĠØ§ÙĦØ³Ø¹ÙĪØ¯ÙĬ\":134661,\"uÃŁ\":134662,\"ìĿ¸ëį°\":134663,\"ĠìĿ¼ë°ĺ\":134664,\"ÅĤÄĻ\":134665,\"Ġmá»ĳi\":134666,\"×ŀ×Ļ×ł\":134667,\"ĠØ§ÙĦØ£Ø·ÙģØ§ÙĦ\":134668,\"ĠÃ§Ä±kan\":134669,\"Ã©cole\":134670,\"×§×Ļ×©\":134671,\"×§×Ļ×©×ķ×¨\":134672,\"ĠÐ¾ÑģÑĥÑīÐµÑģÑĤÐ²\":134673,\"ĠÐ¾ÑģÑĥÑīÐµÑģÑĤÐ²Ð»Ñı\":134674,\"×ĳ×Ĳ×¨\":134675,\"à¹Ħà¸Ľà¸Ķà¹īà¸§à¸¢\":134676,\"Ġ×¢×ķ×ľ×Ķ\":134677,\"à¸ģà¹ĩà¹Ħà¸¡à¹Ī\":134678,\"ãĥ¢ãĥĩ\":134679,\"ãĥ¢ãĥĩãĥ«\":134680,\"ØªØŃÙĪÙĦ\":134681,\"ĠÐ¾Ð´Ð½Ð¾Ð³Ð¾\":134682,\"×ª×Ĺ×Ļ×ľ×ª\":134683,\"ĠØªØ®\":134684,\"Ġchcia\":134685,\"ĠchciaÅĤ\":134686,\"ãĥĲãĥ³\":134687,\"èĢħãģ¯\":134688,\"ĠÙħØŃÙĦ\":134689,\"ÑģÐ»Ð¾Ð¶\":134690,\"ÑģÐ»Ð¾Ð¶Ð½\":134691,\"ĠtÄĻ\":134692,\"ĠÃ§Ä±kt\":134693,\"ĠÃ§Ä±ktÄ±\":134694,\"ĠCÆ¡\":134695,\"à¹Ħà¸Ķà¹īà¹Ģà¸¥à¸¢\":134696,\"Ä±rken\":134697,\"à¹Ģà¸Ĥà¹īà¸²à¸ªà¸¹à¹Ī\":134698,\"ÙħØŃÙĥ\":134699,\"ÙħØŃÙĥÙħØ©\":134700,\"à¸Ħà¸¸à¹īà¸¡\":134701,\"à¸Ļà¹Īà¸²à¸Īà¸°\":134702,\"Ð»ÑİÐ´\":134703,\"Ð´ÐµÑģÑı\":134704,\"Ð´ÐµÑģÑıÑĤ\":134705,\"ĠÐ»ÑİÐ±Ð¾Ð¹\":134706,\"ØªØŃØ±ÙĬØ±\":134707,\"×¦×¢×ĵ\":134708,\"ĠÐµÑĳ\":134709,\"ĠØ§ÙĦØŃÙĥÙħ\":134710,\"ĠØµØ¨Ø§ØŃ\":134711,\"à¹Ģà¸ļà¸Ńà¸£à¹Į\":134712,\"ĠrÃ³Å¼nych\":134713,\"Ð³Ð¸Ð±\":134714,\"ĠÑģÐ¾ÑĤ\":134715,\"ĠÑģÐ¾ÑĤÑĢÑĥÐ´\":134716,\"ĠÑģÐ¾ÑĤÑĢÑĥÐ´Ð½Ð¸Ðº\":134717,\"ĠÐ¾Ð±ÑĬÐµÐ¼\":134718,\"×¤×ĺ×¨\":134719,\"ãģĻãģĶãģı\":134720,\"ãģ«éĸ¢ãģĹãģ¦\":134721,\"Ð²Ð¾Ð»\":134722,\"Ø«ÙħØ§ÙĨ\":134723,\"Ġdáº§n\":134724,\"æĬľ\":134725,\"æĬľãģĳ\":134726,\"Ġ×¢×©\":134727,\"Ġ×¢×©×ķ×Ļ\":134728,\"×¡×ķ×Ł\":134729,\"ãģªãģ®ãģ§ãģĻ\":134730,\"ãģ¯ãģ©ãģĨ\":134731,\"×ŀ×¢×¨×ĳ\":134732,\"ï¼°\":134733,\"ÙħØµØ±\":134734,\"ÙħÙĨØ§Ø³Ø¨\":134735,\"ÙħÙĨØ§Ø³Ø¨Ø©\":134736,\"ä¸Ĭãģ®\":134737,\"×Ĳ×Ļ×©×ķ×¨\":134738,\"ĠìĦ¤ì¹ĺ\":134739,\"×ŀ×ĵ×Ļ×ł×ķ×ª\":134740,\"×ŀ×¨×ª\":134741,\"ãĤĭãģ®ãģĮ\":134742,\"Ø¯Ùİ\":134743,\"ĠØ§ÙĦØ´Ø±ÙĥØ§Øª\":134744,\"ìĭľê°Ħ\":134745,\"ĠÑĢÐµÑĪÐµÐ½Ð¸Ðµ\":134746,\"ãģĻãĤĭãģ®ãģ¯\":134747,\"ĠìŀĲìĭłìĿĺ\":134748,\"×ľ×ŀ×ķ\":134749,\"ãģ¨ãģĵãĤįãģ§\":134750,\"Ġ×§×¦×¨\":134751,\"ĠmÃ£i\":134752,\"ĠkÃ¼ltÃ¼r\":134753,\"ãĥ©ãĤ¤ãĥĸ\":134754,\"à¸ľà¸¹à¹īà¸«à¸įà¸´à¸ĩ\":134755,\"æĻĤéĸĵãģĮ\":134756,\"ÐºÐ»ÑİÑĩÐ¸\":134757,\"diÄŁiniz\":134758,\"à¸¡à¸²à¸ģà¹Ĩ\":134759,\"ØªØŃÙħÙĦ\":134760,\"Ġháº¡t\":134761,\"ãĤ¦ãĤ£\":134762,\"Ð¿Ð»Ðµ\":134763,\"×ŀ×ľ×Ĳ\":134764,\"ÅĤÃ³\":134765,\"Ġgá»ĳc\":134766,\"Ġ×Ĳ×ķ×ĵ×ķ×ª\":134767,\"à¸«à¸§à¸²à¸Ļ\":134768,\"ĠØ§ÙĦÙĪØ²\":134769,\"ĠØ§ÙĦÙĪØ²Ø±Ø§Ø¡\":134770,\"ëĵ¤ê³¼\":134771,\"ĠØµØŃ\":134772,\"ĠØµØŃÙĬÙģØ©\":134773,\"ĠÐ¼Ð¼\":134774,\"ØªØ¯Ø®ÙĦ\":134775,\"ĠpersÃ¶nlich\":134776,\"ĠØ²ÙĬ\":134777,\"ĠØ²ÙĬØ§Ø¯Ø©\":134778,\"ãĤ·ãĤ¢\":134779,\"Ġngáº¯n\":134780,\"à¸Ħà¸¥à¸´à¸ģ\":134781,\"ĠsÃ´ng\":134782,\"ĠtÃ¼ket\":134783,\"ÑįÑĦÑĦ\":134784,\"ÑįÑĦÑĦÐµÐºÑĤ\":134785,\"×©×Ļ×ĳ\":134786,\"ĠØ§Ø¹Øª\":134787,\"ØªØ¶\":134788,\"ØªØ¶ÙħÙĨ\":134789,\"ĠØ§ÙĦÙħØ´Ø±ÙĪØ¹\":134790,\"ĠproduÃ§Ã£o\":134791,\"ĠÐ¿ÑĢÐ¸Ð¼ÐµÐ½Ñı\":134792,\"Ð½Ð¸ÑĨÑĭ\":134793,\"ì£¼ëĬĶ\":134794,\"Ø±Ùı\":134795,\"ĠmÆ¡\":134796,\"ĠhayatÄ±\":134797,\"ëŁ½\":134798,\"ĠÃ¼cret\":134799,\"ĠyanÄ±nda\":134800,\"ĠprÃ¡tica\":134801,\"×ĳ×Ļ×§×ķ×¨\":134802,\"ÃľN\":134803,\"ÑģÐ¾ÑĤ\":134804,\"ãĤıãģĳãģ§\":134805,\"ĠÐ´Ð¾Ð»Ð³Ð¾\":134806,\"×ª×Ľ×ķ\":134807,\"ĠìķĦëĭĮ\":134808,\"ëį°ìĿ´\":134809,\"ĠÃ§iz\":134810,\"ĠchoÄĩ\":134811,\"Ġ×Ķ×Ļ×ª\":134812,\"Ġ×Ķ×Ļ×ª×¨\":134813,\"ĠsoÃ¡t\":134814,\"×Ľ×ĳ×ĵ\":134815,\"à¹Ģà¸¥à¹Īà¸²\":134816,\"ĠÐ´ÐµÑĢ\":134817,\"ĠÐ´ÐµÑĢÐµÐ²\":134818,\"ãĤĴåħ¥ãĤĮ\":134819,\"×Ĺ×ķ×¡\":134820,\"×Ĺ×ķ×¡×¨\":134821,\"Ø¬ÙĬÙĨ\":134822,\"tÃ³n\":134823,\"onnÃ©\":134824,\"ĠÐ¿Ð¾Ð»Ð½Ð¾ÑģÑĤÑĮÑİ\":134825,\"äººãģŁãģ¡\":134826,\"ĠprÃªt\":134827,\"ëł¸\":134828,\"ĠdÃ©cembre\":134829,\"cÄ±lar\":134830,\"Ġ×ª×ª\":134831,\"Ġê²½ìļ°ìĹĲëĬĶ\":134832,\"ÙĪØ¹Ø¯\":134833,\"è¦ĭãĤĭ\":134834,\"à¸§à¸´à¸Īà¸±à¸¢\":134835,\"ë¶Ī\":134836,\"Ø²ÙĪØ§\":134837,\"Ø²ÙĪØ§Ø¬\":134838,\"dÃ¬\":134839,\"ãģ§ãģĻãĤĪ\":134840,\"ĠÐ²Ð¾Ð´Ð¾\":134841,\"ĠÙĬÙĪØ¬Ø¯\":134842,\"ÑģÐ¾ÑģÑĤÐ¾Ñı\":134843,\"ÐŀÐ¡\":134844,\"ĠÄĲÃ³\":134845,\"×Ĺ×¤×©\":134846,\"Ġ×¦×Ļ×ĳ×ķ×¨\":134847,\"ĠØ§ÙĦÙĤØ·\":134848,\"ĠØ§ÙĦÙĤØ·Ø§Ø¹\":134849,\"ĠÐ¸Ð¼ÐµÑİÑĤ\":134850,\"ĠpháºŃn\":134851,\"×Ľ×¡×¤×Ļ\":134852,\"Ð¿Ð¾Ð»Ð½Ð¸ÑĤÐµÐ»ÑĮ\":134853,\"éĻĲãĤĬ\":134854,\"ĠÑģÑĢÐ°Ð²\":134855,\"ĠÑģÑĢÐ°Ð²Ð½\":134856,\"ÙħØ§ÙĦÙĥ\":134857,\"×ĵ×¨×ķ×Ŀ\":134858,\"çļĨãģķãĤĵ\":134859,\"ØŃÙĤÙĤ\":134860,\"à¹ģà¸«à¸¥à¹Īà¸ĩ\":134861,\"ĠØ§ÙĦØ±Ø³ÙħÙĬ\":134862,\"Ð¾ÑĩÐºÐ¸\":134863,\"×ĺ×ĳ×Ĺ\":134864,\"ĠcanlÄ±\":134865,\"Ġ×ľ×ľ\":134866,\"Ġ×ľ×ľ×ŀ×ķ×ĵ\":134867,\"×ŀ×ĳ×ķ\":134868,\"×ª×Ľ\":134869,\"×ª×Ľ×ł×Ļ×ª\":134870,\"ĠØ§ÙĦÙħØ´Ø§Ø±\":134871,\"ĠØ§ÙĦÙħØ´Ø§Ø±ÙĥØ©\":134872,\"Ä°Åŀ\":134873,\"ĠØ³ÙĬØ§Ø³ÙĬ\":134874,\"Ð²Ð¾Ð»ÑĮ\":134875,\"ĠÑģÐ¿ÑĢÐ°Ð²\":134876,\"æĿ¥ãģ¦\":134877,\"×¤×ķ×¨×ķ×Ŀ\":134878,\"à¸ªà¸³à¹Ģà¸£à¹ĩ\":134879,\"à¸ªà¸³à¹Ģà¸£à¹ĩà¸Ī\":134880,\"ĠÅŁÃ¶yle\":134881,\"ĠzostaÅĤa\":134882,\"ĠHÃ¼\":134883,\"×¨×ķ×©\":134884,\"Ø¯ÙĦÙĬÙĦ\":134885,\"ÑĢÐ¸Ð´\":134886,\"×©×Ł\":134887,\"×ŀ×§×ķ×¨\":134888,\"ĠÑĥÑĩ\":134889,\"ĠÑĥÑĩÐµÐ±\":134890,\"ĠÑįÑĤÐ°\":134891,\"ÐºÐ¾Ð²Ð°\":134892,\"à¸ķà¸Ļà¹Ģà¸Ńà¸ĩ\":134893,\"ÙĨÙĲ\":134894,\"à¸Ńà¸µà¸ģà¸Ħà¸£à¸±à¹īà¸ĩ\":134895,\"à¸£à¸°à¸ļà¸¸\":134896,\"Ġdá»¯\":134897,\"ĠØ§ÙĦØŃØ§ÙĦÙĬ\":134898,\"×Ľ×ķ×Ľ\":134899,\"×Ľ×ķ×Ľ×ĳ\":134900,\"Ġ×ŀ×Ĳ×©×¨\":134901,\"Ġtrá»¥\":134902,\"ÑĤÐµÐ»ÐµÐ¼\":134903,\"ĠÐ²Ð»Ð¸\":134904,\"ĠÐ²Ð»Ð¸Ñı\":134905,\"Ġ×©×Ĳ×ª×Ŀ\":134906,\"Ġuwag\":134907,\"ĠuwagÄĻ\":134908,\"×ĺ×Ļ×ª\":134909,\"×Ĳ×ĵ×Ŀ\":134910,\"à¸Ķà¸¸\":134911,\"Ġ×Ķ×Ĳ×ľ×Ķ\":134912,\"ĠkarÄ±ÅŁ\":134913,\"ĠÄĲá»ĳi\":134914,\"Ð´Ð°ÑİÑĤ\":134915,\"ãģªãģ®ãģ«\":134916,\"Äħcych\":134917,\"à¹Ģà¸Ļà¹īà¸Ļ\":134918,\"ãģĹãģ¦ãģĹãģ¾ãģĨ\":134919,\"intÃ©rieur\":134920,\"ĠfÃŃsica\":134921,\"ĠÐŁÐ¾Ð»\":134922,\"ãģĹãģķ\":134923,\"à¸Ĺà¸³à¹Ħà¸¡\":134924,\"ĠLÃ¢m\":134925,\"ĠØ§ÙĦÙħØ³ÙĦÙħ\":134926,\"ĠØ§ÙĦÙħØ³ÙĦÙħÙĬÙĨ\":134927,\"ØµØŃØ©\":134928,\"ìĹĦ\":134929,\"à¹Ģà¸Ķà¹ĩà¸Ķ\":134930,\"ĠÑĥÑĩÐµÑĤ\":134931,\"Ã¢Ìģ\":134932,\"ĠØ¨ÙĦØ§\":134933,\"ĠØ§ÙĦØ§Ø¬ØªÙħØ§Ø¹ÙĬ\":134934,\"×¤×¨×¡×Ŀ\":134935,\"ãĥķãĥ©\":134936,\"ĠÐļÐ¾Ð³Ð´Ð°\":134937,\"mieÅĽci\":134938,\"ĠØ¨ÙĬÙĨÙħØ§\":134939,\"Ġ×ŀ×Ĳ×ŀ×¨×Ļ×Ŀ\":134940,\"Ġ×ĳ×Ĳ×ĸ×ķ×¨\":134941,\"×ķ×©×Ļ×Ŀ\":134942,\"ĠÑģÐ´ÐµÐ»Ð°\":134943,\"entrÃ©e\":134944,\"à¹Ģà¸Ħà¹īà¸²\":134945,\"ÑĥÐ³Ð»\":134946,\"ĠØ§ÙĦÙģÙĨÙĬ\":134947,\"ĠÐĴÐ¾ÑĤ\":134948,\"à¸Ĺà¸µà¹Īà¸¡à¸²\":134949,\"×ķ×¦×Ĵ\":134950,\"ÙĤØ¯Ø±Ø©\":134951,\"Ġëª©\":134952,\"Ġëª©ìłģ\":134953,\"íıīê°Ģ\":134954,\"ĠØ§ÙĦØ£Ø±Ø¨Ø¹\":134955,\"ĠØ§ÙĦØ£Ø±Ø¨Ø¹Ø§Ø¡\":134956,\"×¤×¡×Ļ×§\":134957,\"ĠÑıÐ²Ð»ÑıÑİÑĤÑģÑı\":134958,\"Ø¨ÙĪÙĨ\":134959,\"ì°¾\":134960,\"×ŀ×¢×¨×Ľ\":134961,\"×ŀ×¢×¨×Ľ×ķ×ª\":134962,\"ãĤ·ãĤ§\":134963,\"ĠØ¨Ø§ÙĦØ£\":134964,\"íĸĪëįĺ\":134965,\"ĠØ§ÙĦØ¨Ø±ÙĨØ§ÙħØ¬\":134966,\"ĠØ§ÙĦØ£ØŃØ¯\":134967,\"ĠmÅ©\":134968,\"ĠmÅ©i\":134969,\"Ð¿Ð°ÑĤ\":134970,\"Ø¨Ø«\":134971,\"ĠÑĨÐµÐ½Ñĭ\":134972,\"Ġ×ĳ×ª×ľ\":134973,\"è¨ĢãĤıãĤĮ\":134974,\"ĠØ§ÙĦÙħØ¬Ø§ÙĦ\":134975,\"ĠìĦ¸ìĥģ\":134976,\"Ġ×Ĵ×ķ×¤\":134977,\"ĠÐ½Ð°ÑĪÐµÐ¹\":134978,\"ĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ñı\":134979,\"Ð±Ð¸Ð½\":134980,\"Ã¶lÃ¼\":134981,\"×Ļ×Ļ×ĺ\":134982,\"Ġ×ŀ×¡×¤×Ļ×§\":134983,\"à¸¢à¸±à¸ĩà¸Ħà¸ĩ\":134984,\"ĠÐ§Ð¸\":134985,\"ĠÐ°Ð½ÑĤÐ¸\":134986,\"ĠÑģÑĢÐµÐ´Ð¸\":134987,\"à¸ªà¹Īà¸§à¸Ļà¹ĥà¸«à¸įà¹Ī\":134988,\"Ð¾ÑĩÐºÐ°\":134989,\"íĬ¹ë³Ħ\":134990,\"à¸§à¹Īà¸²à¸ĩ\":134991,\"Ð³Ð¾ÑĢÐ¾Ð´\":134992,\"Ø¨Ø§Ùĥ\":134993,\"à¹Ģà¸ªà¸µà¹Īà¸¢\":134994,\"à¹Ģà¸ªà¸µà¹Īà¸¢à¸ĩ\":134995,\"ãĤĤãĤīãģĦ\":134996,\"×§×ķ×Ŀ\":134997,\"ãģĽãģļ\":134998,\"ĠØ§ÙĦÙĤØ§ÙĩØ±Ø©\":134999,\"Ġ×ĳ×Ľ×ļ\":135000,\"ÙħØ´Ø§Ø±ÙĬØ¹\":135001,\"Ø¨Ø§ØŃØ«\":135002,\"ĠÐ¿Ð¾Ñĩ\":135003,\"ĠÐ¿Ð¾ÑĩÑĤÐ¸\":135004,\"ĠÑĦÐ¾ÑĢÐ¼Ð°\":135005,\"SÄ°\":135006,\"Ġ×ŀ×¦×Ļ×¢\":135007,\"à¸¥à¸·\":135008,\"à¸¥à¸·à¸¡\":135009,\"ĠÑĤÐµÑĢ\":135010,\"ĠÑĤÐµÑĢÑĢÐ¸ÑĤÐ¾ÑĢ\":135011,\"ĠÑĤÐµÑĢÑĢÐ¸ÑĤÐ¾ÑĢÐ¸Ð¸\":135012,\"ĠÐ²Ð¼ÐµÑģÑĤ\":135013,\"ĠÐ²Ð¼ÐµÑģÑĤÐµ\":135014,\"dÄ±klarÄ±\":135015,\"opÃ©ration\":135016,\"à¹Ĥà¸«\":135017,\"ØµØ¯ÙĬ\":135018,\"ØµØ¯ÙĬÙĤ\":135019,\"íĸīìłķ\":135020,\"ØªØ¬Ø§\":135021,\"ØªØ¬Ø§ÙĪØ²\":135022,\"ĠsuÃ§\":135023,\"Ġarty\":135024,\"Ġartyku\":135025,\"ĠartykuÅĤ\":135026,\"ãĤ·ãĥ§ãĥĥãĥĹ\":135027,\"×©×¤\":135028,\"×©×¤×Ļ×¢\":135029,\"Ġ×Ķ×©×Ļ×¨×ķ×ª\":135030,\"à¹ģà¸ĸà¸¡\":135031,\"ë¸Ķ\":135032,\"ĠukÅĤad\":135033,\"Ġ×ķ×Ľ×Ļ\":135034,\"à¸«à¸¥à¸²à¸ģ\":135035,\"à¸«à¸¥à¸²à¸ģà¸«à¸¥à¸²à¸¢\":135036,\"æĸ¹ãĤĤ\":135037,\"ĠpodrÃ³Å¼\":135038,\"ĠEÄŁer\":135039,\"ĠÐºÐ¾Ð¼Ð½Ð°ÑĤ\":135040,\"ĠÑģÐ°Ð¼ÑĭÑħ\":135041,\"ĠÐ²ÐºÑĥÑģ\":135042,\"Ð±ÐµÐ¶\":135043,\"Ġ×ĳ×§×ķ\":135044,\"æİĽãģĳ\":135045,\"ãģ¿ãĤĭãģ¨\":135046,\"ĠiliÅŁkin\":135047,\"ĠÙĬØ¹ÙħÙĦ\":135048,\"ĠÐ¿Ð¾Ð´Ð°ÑĢ\":135049,\"ĠyazÄ±lÄ±\":135050,\"ãĤĴå¾Ĺ\":135051,\"ĠwystÄĻp\":135052,\"à¸Ĺà¸µà¹Īà¹ĥà¸Ĭà¹ī\":135053,\"ØŃØ§Ø¯Ø«\":135054,\"ÙĪÙĬØ¯\":135055,\"ÐºÑĥÐ»ÑĮÑĤ\":135056,\"ÐºÑĥÐ»ÑĮÑĤÑĥÑĢ\":135057,\"à¸ģà¸²à¸£à¹ģà¸Ĥà¹Īà¸ĩ\":135058,\"à¸ģà¸²à¸£à¹ģà¸Ĥà¹Īà¸ĩà¸Ĥ\":135059,\"à¸ģà¸²à¸£à¹ģà¸Ĥà¹Īà¸ĩà¸Ĥà¸±à¸Ļ\":135060,\"ÙħÙĪØ¸\":135061,\"ÙħÙĪØ¸Ùģ\":135062,\"ÙĬÙħÙĬ\":135063,\"ãĤĵãģ§ãģĻãģĮ\":135064,\"diÄŁim\":135065,\"diÄŁimiz\":135066,\"ĠÐŁÐµÑĢ\":135067,\"ĠÐŁÐµÑĢÐ²\":135068,\"ĠmÃ£o\":135069,\"ĠÑģÐµÐ·\":135070,\"ĠÑģÐµÐ·Ð¾Ð½\":135071,\"Ġ×Ķ×ŀ×¢\":135072,\"ÙħØ¬ÙħÙĪØ¹Ø©\":135073,\"ĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ð¸\":135074,\"iáº¿c\":135075,\"Ã£ng\":135076,\"ĠÄĳáº¥y\":135077,\"ãģĶç´\":135078,\"ãģĶç´¹\":135079,\"ãģĶç´¹ä»ĭ\":135080,\"ĠadÄ±m\":135081,\"à¹Ħà¸«à¸¥\":135082,\"ĠÐ¿ÑĢÐ°ÐºÑĤÐ¸\":135083,\"ĠÐ¿ÑĢÐ°ÐºÑĤÐ¸Ñĩ\":135084,\"ĠÐ¿ÑĢÐ°ÐºÑĤÐ¸ÑĩÐµÑģ\":135085,\"ĠÐ¿ÑĢÐ°ÐºÑĤÐ¸ÑĩÐµÑģÐºÐ¸\":135086,\"ĠØ§ÙĦÙĨÙģØ³\":135087,\"ĠÑĢÐ°Ð±Ð¾ÑĤÐµ\":135088,\"ÙĦÙĬÙģ\":135089,\"ĠØ§ÙĦØ¬ÙĨÙĪØ¨\":135090,\"ĠÐ²Ð¾Ð´Ñĭ\":135091,\"ì¹Ļ\":135092,\"ĠÐ¼Ð¸ÑĢÐ°\":135093,\"ĠÄĳá»«ng\":135094,\"ĠÐ¿ÑĢÐ¾ÑĤÐ¸Ð²Ð¾\":135095,\"ĠÑģÑĤÑĢÐ°Ð½Ñĭ\":135096,\"à¸¥à¸¹\":135097,\"ìĤ¶\":135098,\"kreÅĽl\":135099,\"Ġbulund\":135100,\"ĠbulunduÄŁu\":135101,\"à¹ģà¸ªà¸Ļ\":135102,\"ãĤ±ãĤ¢\":135103,\"×ª×Ĺ×ķ×ŀ×Ļ\":135104,\"×¨×Ľ×Ķ\":135105,\"Ġ×ľ×§×ķ×Ĺ\":135106,\"Ġ×ľ×§×ķ×Ĺ×ķ×ª\":135107,\"Ġ×Ľ×ª×ķ×ĳ×ª\":135108,\"ĠÙĦÙĥÙħ\":135109,\"Ø¨Ø´Ø±\":135110,\"ĠrÃłng\":135111,\"Ġ×ŀ×Ķ×ŀ\":135112,\"Ġ×Ĳ×Ĺ×¨×ķ×ª\":135113,\"ĠÐ±Ð¾Ð½\":135114,\"ĠÐ±Ð¾Ð½ÑĥÑģ\":135115,\"ï½Ĺ\":135116,\"à¹ģà¸¢à¸ģ\":135117,\"ãģĤãģªãģŁãģ®\":135118,\"ĠÑĥÑĩÐ°ÑģÑĤÐ¸Ðµ\":135119,\"ĠEyl\":135120,\"ĠEylÃ¼l\":135121,\"ĠÃ§alÄ±ÅŁmalarÄ±\":135122,\"Ø®Ø·Ø±\":135123,\"ìĿ½\":135124,\"à¸ģà¸²à¸£à¹ĥà¸Ĭà¹īà¸ĩà¸²à¸Ļ\":135125,\"ĠÐ°Ð½Ð°Ð»Ð¸Ð·\":135126,\"×ª×§×ĳ×ľ\":135127,\"Ð½Ð¸ÐµÐ¼\":135128,\"ĠÄ°ns\":135129,\"ĠÄ°nsan\":135130,\"ĠØ¨ÙĪØ§Ø³\":135131,\"ĠØ¨ÙĪØ§Ø³Ø·Ø©\":135132,\"Ġ×ł×Ľ×ł×¡\":135133,\"Ġ×Ķ×ŀ×Ļ×ĵ×¢\":135134,\"ĠÃ§o\":135135,\"ĠÃ§oÄŁu\":135136,\"á»ĺ\":135137,\"ĠêµŃë¯¼\":135138,\"ãĤĤãģĦãģĦ\":135139,\"Ġ×Ľ×ľ×Ļ\":135140,\"ĠÑģÑĢÐµÐ´Ð½Ðµ\":135141,\"gÅĤo\":135142,\"gÅĤoÅĽ\":135143,\"ĠnegÃ³\":135144,\"ĠnegÃ³cio\":135145,\"ĠÑĢÐµÐ³Ð¸ÑģÑĤ\":135146,\"ĠÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ°\":135147,\"ĠÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ°ÑĨÐ¸Ð¸\":135148,\"Ġtrá»ĵng\":135149,\"ĠÐ¿ÑĢÑı\":135150,\"ĠÐ¿ÑĢÑıÐ¼Ð¾\":135151,\"ëłĪìĿ´\":135152,\"ĠkÃ©m\":135153,\"ÐºÐ»Ðµ\":135154,\"à¸Ļà¸³à¸¡à¸²\":135155,\"ĠÑĦÐ¸Ð½\":135156,\"ĠÑĦÐ¸Ð½Ð°Ð½Ñģ\":135157,\"ĠÑĦÐ¸Ð½Ð°Ð½ÑģÐ¾Ð²\":135158,\"Ġkiá»ĩm\":135159,\"à¸¢à¸±à¸ĩà¹Ħ\":135160,\"à¸¢à¸±à¸ĩà¹Ħà¸ĩ\":135161,\"à¸¢à¸´à¸ĩ\":135162,\"à¹Ĥà¸Ľ\":135163,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐ¸Ð»\":135164,\"×Ļ×ĸ×Ŀ\":135165,\"à¹ģà¸¥à¸°à¸Ħà¸§à¸²à¸¡\":135166,\"ĠÐ²Ð¾Ð¾Ð±ÑīÐµ\":135167,\"ØµÙĬØ±\":135168,\"ãĥıãĥ³\":135169,\"ĠØ§ÙĦÙĤØ§Ø¯\":135170,\"ĠØ§ÙĦÙĤØ§Ø¯Ùħ\":135171,\"ĠØ¨Ø¯ÙĪÙĨ\":135172,\"Ø¹Ø¸Ùħ\":135173,\"×ª×ł×ķ×¢\":135174,\"×ª×ł×ķ×¢×Ķ\":135175,\"Ø£ÙħÙĦ\":135176,\"ãģķãģĪ\":135177,\"ÑĤÐµÐ¼\":135178,\"ÑĤÐµÐ¼Ð¿ÐµÑĢ\":135179,\"ÑĤÐµÐ¼Ð¿ÐµÑĢÐ°ÑĤÑĥÑĢ\":135180,\"Ġ×ľ×Ļ×¦×ķ×¨\":135181,\"ĠrÄĻk\":135182,\"Ø±Ø³ÙĦ\":135183,\"ìŀĲë¥¼\":135184,\"Ġ×Ļ×¦×Ļ×¨×ª\":135185,\"ÙĨØ¨ÙĬ\":135186,\"ÑĩÐ½Ð°Ñı\":135187,\"ØªØŃÙĦÙĬÙĦ\":135188,\"ĠÐ¼Ð¸Ðº\":135189,\"ĠÐ¼Ð¸ÐºÑĢÐ¾\":135190,\"ĠSÃ¶z\":135191,\"ĠforÃ§a\":135192,\"ÑģÐ¾Ð½\":135193,\"ĠØ§ÙĦØ¹Ø±Ø§\":135194,\"ĠØ§ÙĦØ¹Ø±Ø§ÙĤÙĬ\":135195,\"ĠHá»ĵng\":135196,\"ãģĻãĤĭãģŁãĤģãģ«\":135197,\"à¸Ĺà¸µà¹Īà¸Ńà¸¢à¸¹à¹Ī\":135198,\"Ġ×ķ×Ĳ×£\":135199,\"ØµÙĬØ¯\":135200,\"ĠìķĬê³ł\":135201,\"à¸£à¸±à¸ĩ\":135202,\"ĠØ§ÙĦØªÙĪØ§ØµÙĦ\":135203,\"à¹Ģà¸¡à¸ķà¸£\":135204,\"ÑĥÑģÑĤÑĢÐ¾Ð¹\":135205,\"ÑĥÑģÑĤÑĢÐ¾Ð¹ÑģÑĤÐ²\":135206,\"mÄ±yor\":135207,\"ĠØ¨Ø§Ø³Ùħ\":135208,\"Ġ×ķ×Ľ×ķ\":135209,\"ĠGÃ¼l\":135210,\"á»Ĳ\":135211,\"Ãītat\":135212,\"ØºØ§ÙĦ\":135213,\"Ø¥ÙĨØ´\":135214,\"Ø¥ÙĨØ´Ø§Ø¡\":135215,\"TÄ°\":135216,\"à¸Ĥà¹īà¸²à¸¡\":135217,\"Ġtroch\":135218,\"ĠtrochÄĻ\":135219,\"Ø¥Øµ\":135220,\"Ø¥ØµØ§Ø¨Ø©\":135221,\"ĠØ«Ø§ÙĨÙĬ\":135222,\"ĠØ§ÙĦØµØŃØ©\":135223,\"Ġ×ĸ×Ķ×ķ\":135224,\"jÄħcej\":135225,\"ãĥĢãĥ³\":135226,\"ìĿ¸ìĿ´\":135227,\"ĠÐ²Ð¾Ð»Ð¾Ñģ\":135228,\"ëĲĺë©´\":135229,\"ĠzakÅĤad\":135230,\"ãģĻãģĵãģ¨\":135231,\"ä»¥ä¸Ĭãģ®\":135232,\"Ġ×Ķ×ŀ×§×ķ×Ŀ\":135233,\"ÙħØ´Ø§Ùĩ\":135234,\"ÙħØ´Ø§ÙĩØ¯Ø©\":135235,\"ÑĩÐ¸Ð²\":135236,\"Ø¨Ø´\":135237,\"à¸¢à¹īà¸²à¸¢\":135238,\"ĠsÃ¼rdÃ¼r\":135239,\"ĠNáºµ\":135240,\"ĠNáºµng\":135241,\"ĠÐ¸Ð³ÑĢÐ°ÑĤÑĮ\":135242,\"Ġê·¸ëŁ¬ë©´\":135243,\"ãĥķãĥ«\":135244,\"à¸¥à¹Īà¸°\":135245,\"ĠtendrÃ¡\":135246,\"ĠbÃły\":135247,\"à¹Ģà¸Ľà¹ĩà¸Ļà¸ľà¸¹à¹ī\":135248,\"Ġoko\":135249,\"ĠokoÅĤo\":135250,\"wÅĤa\":135251,\"wÅĤaÅĽci\":135252,\"wÅĤaÅĽciw\":135253,\"æĢĿãĤı\":135254,\"ĠYaÅŁ\":135255,\"ĠBá»ĩnh\":135256,\"íıŃ\":135257,\"Ø¨ÙĬØ¯\":135258,\"×§×¨×Ł\":135259,\"à¹Ģà¸¨à¸£\":135260,\"à¹Ģà¸¨à¸£à¸©\":135261,\"à¹Ģà¸¨à¸£à¸©à¸Ĳ\":135262,\"à¹Ģà¸¨à¸£à¸©à¸Ĳà¸ģà¸´à¸Ī\":135263,\"ĠØ§ÙĦØ£ÙĪØ±ÙĪ\":135264,\"ĠØ§ÙĦØ£ÙĪØ±ÙĪØ¨ÙĬ\":135265,\"flÃ¤che\":135266,\"ä¹ĹãĤĬ\":135267,\"Ġbá»ģn\":135268,\"ÙĩØ¨\":135269,\"æľĢãĤĤ\":135270,\"ĠsaÃ§\":135271,\"à¸Ńà¸³à¹Ģà¸ł\":135272,\"à¸Ńà¸³à¹Ģà¸łà¸Ń\":135273,\"ĠØ£Ø¬\":135274,\"ĠØ§ÙĦØ¯Ø§Ø®ÙĦ\":135275,\"ĠØ§ÙĦØ¯Ø§Ø®ÙĦÙĬØ©\":135276,\"×ĺ×ķ×ĳ\":135277,\"ãĤĤãģªãģı\":135278,\"ĠÐ»Ð¸ÑĨÐ°\":135279,\"à¹ģà¸¥à¹īà¸§à¸ģà¹ĩ\":135280,\"×ĸ×Ľ×Ļ×¨\":135281,\"ĠquÃł\":135282,\"ĠÙĥØ°ÙĦÙĥ\":135283,\"ØµØŃÙģ\":135284,\"ĠÃĤu\":135285,\"ÙĪØ¨Ø§\":135286,\"à¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢à¸Ļà¹ģà¸Ľà¸¥\":135287,\"à¹Ģà¸Ľà¸¥à¸µà¹Īà¸¢à¸Ļà¹ģà¸Ľà¸¥à¸ĩ\":135288,\"à¸ķà¸±à¸§à¸Ńà¸¢à¹Īà¸²à¸ĩ\":135289,\"ĠrÃ¡pida\":135290,\"Ġtasar\":135291,\"ĠtasarÄ±m\":135292,\"ĠØ¹ÙĦÙĬÙĩÙħ\":135293,\"×¡×ķ×ľ\":135294,\"cÄ±lÄ±\":135295,\"cÄ±lÄ±k\":135296,\"ĠØ±ØºÙħ\":135297,\"ìĭľíĤ¤\":135298,\"Ġ×Ĳ×ľ×§\":135299,\"Ġ×Ĳ×ľ×§×ĺ×¨\":135300,\"Ġ×Ĳ×ľ×§×ĺ×¨×ķ×ł×Ļ\":135301,\"à¹ģà¸ļà¹Īà¸ĩ\":135302,\"Ġháº¡ng\":135303,\"ãģ£ãģ¦ãģıãĤĮ\":135304,\"ĠÙĨØªÙĬ\":135305,\"ĠÙĨØªÙĬØ¬Ø©\":135306,\"Ä±klÄ±\":135307,\"ØºØ§ÙĨ\":135308,\"à¸Ĥà¹īà¸Ńà¸Ħà¸§à¸²à¸¡\":135309,\"à¸Ľà¸¥à¸²à¸¢\":135310,\"ĠØ£ÙħØ³\":135311,\"à¸Ĺà¸µà¹Īà¹Ģà¸ģà¸µà¹Īà¸¢à¸§\":135312,\"à¸Ĺà¸µà¹Īà¹Ģà¸ģà¸µà¹Īà¸¢à¸§à¸Ĥ\":135313,\"à¸Ĺà¸µà¹Īà¹Ģà¸ģà¸µà¹Īà¸¢à¸§à¸Ĥà¹īà¸Ńà¸ĩ\":135314,\"ĠdÃ©fin\":135315,\"ĠdÃ©fini\":135316,\"ÙģÙĨØ§Ø¯\":135317,\"ÙģÙĨØ§Ø¯ÙĤ\":135318,\"à¹Ħà¸Ķà¹īà¸§à¹Īà¸²\":135319,\"ãģªãģĦãĤĪãģĨãģ«\":135320,\"ĠprÃ³pria\":135321,\"ĠPhÃ¡t\":135322,\"ãĤĦãģĻãģı\":135323,\"à¸ªà¸§à¸¢à¸ĩà¸²à¸¡\":135324,\"ê³łìļĶ\":135325,\"ÑıÐµÑĤ\":135326,\"ãģĭãĤĤãģĹãĤĮãģ¾ãģĽãĤĵãģĮ\":135327,\"ØªØ±Ø¬Ùħ\":135328,\"ĠÐºÑĢÐ°ÑģÐ¸Ð²\":135329,\"Ġ×ŀ×¨×Ĳ×©\":135330,\"Ð´ÐµÐ¶\":135331,\"ĠÙĬÙĪÙĨ\":135332,\"ĠÙĬÙĪÙĨÙĬÙĪ\":135333,\"ÑģÐºÐ¾ÑĢ\":135334,\"ĠKasÄ±m\":135335,\"ê³Ħìķ½\":135336,\"ÐºÐ¾Ñģ\":135337,\"ĠÐ½Ð°ÑĢÑĥ\":135338,\"ĠÐ½Ð°ÑĢÑĥÑĪÐµÐ½\":135339,\"ĠduÅ¼e\":135340,\"accÃ¨s\":135341,\"Ġhá»ĵng\":135342,\"ĠvÅ©\":135343,\"ãģĦãģŁãģĹãģ¾ãģĻ\":135344,\"Ġ×ĺ×Ļ\":135345,\"Ġ×ĺ×Ļ×ķ×ľ\":135346,\"lÄ±klarÄ±\":135347,\"ĠquÃª\":135348,\"ëħ¸ëıĻ\":135349,\"ìķĶ\":135350,\"CIÃĵN\":135351,\"Ġtáº¯c\":135352,\"pressÃ£o\":135353,\"ĠìŀĪìľ¼\":135354,\"à¸ªà¸´à¸Ĺà¸ĺà¸´à¹Į\":135355,\"íĥĦ\":135356,\"Ġ×Ķ×ŀ×ŀ×©×ľ×Ķ\":135357,\"å¬īãģĹãģĦ\":135358,\"ĠÄĲáº·c\":135359,\"ÙĨØ²ÙĦ\":135360,\"ĠÐ´ÑĢÑĥÐ³Ð¾Ð¹\":135361,\"Ð´ÑĥÑĤ\":135362,\"ìĪĻ\":135363,\"Ġthá»¥\":135364,\"à¹Ģà¸ªà¸£\":135365,\"à¹Ģà¸ªà¸£à¹ĩ\":135366,\"à¹Ģà¸ªà¸£à¹ĩà¸Ī\":135367,\"Ġtoplant\":135368,\"ĠtoplantÄ±\":135369,\"×Ĳ×ŀ×Ł\":135370,\"×ķ×ľ×ª\":135371,\"Ð¿Ð¾Ð¼Ð½\":135372,\"ĠyoÄŁun\":135373,\"ÅĦskiego\":135374,\"ì°©\":135375,\"ĠØ«ÙĦØ§Ø«\":135376,\"ĠØ«ÙĦØ§Ø«Ø©\":135377,\"Ġláº¯ng\":135378,\"ë¦´\":135379,\"à¸£à¸²à¸Ĭà¸ģà¸²à¸£\":135380,\"ĠÑģÐ»Ð¾Ð²Ð°\":135381,\"á»Ĩ\":135382,\"à¸Ķà¸µà¸ģà¸§à¹Īà¸²\":135383,\"ãģĶãģĸãģĦãģ¾ãģĻ\":135384,\"ĠÐ´Ð¸Ð·\":135385,\"ĠÐ´Ð¸Ð·Ð°Ð¹Ð½\":135386,\"fÃ©rence\":135387,\"lÄ±klar\":135388,\"ãģªãĤĵãģ§ãģĻ\":135389,\"ajÄħcy\":135390,\"Ġëĭ¤ìĸĳ\":135391,\"Ġëĭ¤ìĸĳíķľ\":135392,\"×§×Ļ×¨\":135393,\"ØŃØ§Ø±\":135394,\"à¸ªà¸¹à¹ī\":135395,\"Ġzro\":135396,\"Ġzrobi\":135397,\"ĠzrobiÄĩ\":135398,\"×ŀ×Ļ×Ľ×Ķ\":135399,\"à¸Ĭà¹Īà¸§à¸¢à¹Ģà¸«à¸¥à¸·à¸Ń\":135400,\"ĠÑįÑĤÑĥ\":135401,\"ë´ī\":135402,\"æ¥½ãģĹãģĦ\":135403,\"Ø³ÙĪØ±\":135404,\"íķĺê±°ëĤĺ\":135405,\"ÙħØ¤ØªÙħØ±\":135406,\"ĠpoczÄħ\":135407,\"ĠpoczÄħtk\":135408,\"ĠpoczÄħtku\":135409,\"ĠØ¹Ø±Ø¨ÙĬ\":135410,\"Ø§ÙĦØ£Ø±\":135411,\"Ø§ÙĦØ£Ø±Ø¯ÙĨ\":135412,\"à¸Ķà¸£\":135413,\"Åĵuvre\":135414,\"ĠÙĪÙĥØ§ÙĨØª\":135415,\"ĠÅĽredni\":135416,\"Ø®Ø¶Ø±\":135417,\"Ġchuyáº¿n\":135418,\"Ð½ÑĤ\":135419,\"ĠìķĮê³ł\":135420,\"Ġvá»Ŀi\":135421,\"Ġ×ĳ×Ļ×ĵ×Ļ\":135422,\"×ŀ×ĵ×ķ×ĳ×¨\":135423,\"ÙĪÙģØ±\":135424,\"ÙĬØ¡\":135425,\"×ł×Ľ×¡\":135426,\"ĠÐĽÐ°\":135427,\"Ð»Ð¾Ð½\":135428,\"Ġxáº¥u\":135429,\"ÙģÙĬÙĨ\":135430,\"ĠfÃ©vrier\":135431,\"ĠÐŀÐ½Ð°\":135432,\"ĠVá»ģ\":135433,\"ĠÅŁeyler\":135434,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐµÐ½\":135435,\"Ð·Ð°Ð´\":135436,\"ĠnÃ©t\":135437,\"à¹Ħà¸Ľà¸¢à¸±à¸ĩ\":135438,\"×Ĺ×©×ĳ×ķ\":135439,\"à¸ļà¸±à¸Ļà¸Ĺ\":135440,\"à¸ļà¸±à¸Ļà¸Ĺà¸¶à¸ģ\":135441,\"ĠgerÃ§ekleÅŁ\":135442,\"Ð¸ÑĩÐµÑģÐºÐ¾Ðµ\":135443,\"ìĪĺê°Ģ\":135444,\"Ø«Ø¨Øª\":135445,\"ãģ¤ãģ¾ãĤĬ\":135446,\"ĠÑĥÑģÐ»Ð¾Ð²Ð¸ÑıÑħ\":135447,\"ëĭ¤ê°Ģ\":135448,\"à¸£à¸²à¸¢à¹Ħà¸Ķà¹ī\":135449,\"×Ľ×Ĳ×ĳ\":135450,\"à¹Ĥà¸Ľà¸£à¹Ĥà¸¡\":135451,\"à¹Ĥà¸Ľà¸£à¹Ĥà¸¡à¸Ĭà¸±à¹Īà¸Ļ\":135452,\"jÃ¤hr\":135453,\"jÃ¤hrige\":135454,\"×§×ł×Ļ×Ŀ\":135455,\"×ŀ×ķ×§\":135456,\"×ŀ×ķ×§×ĵ\":135457,\"ãģ«è¡Įãģ£ãģ¦\":135458,\"Ø¢ÙĦ\":135459,\"Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ\":135460,\"Ġ×ľ×Ľ×ª×ķ×ĳ\":135461,\"Ø¬ÙħÙĩ\":135462,\"Ø¬ÙħÙĩÙĪØ±ÙĬØ©\":135463,\"à¸īà¸ļ\":135464,\"à¸īà¸ļà¸±à¸ļ\":135465,\"ĠCÃ²n\":135466,\"à¸ľà¸ªà¸¡\":135467,\"ãģªãģ©ãģĮ\":135468,\"×Ĳ×Ķ×ĳ\":135469,\"ĠÐ´ÐµÐ¹ÑģÑĤÐ²Ð¸Ñı\":135470,\"yÄ±z\":135471,\"à¹Ħà¸¡à¹Īà¹Ģà¸Ħà¸¢\":135472,\"Ø¬ÙĪØ²\":135473,\"×Ķ×Ĺ×ľ×ĺ×Ķ\":135474,\"fÃ¤llt\":135475,\"ãĥĵãĤ¸\":135476,\"ãĥĵãĤ¸ãĥį\":135477,\"ãĥĵãĤ¸ãĥįãĤ¹\":135478,\"Ġ×Ĳ×Ļ×ł×Ŀ\":135479,\"ĠÐ½Ð°ÑħÐ¾Ð´Ð¸ÑĤÑģÑı\":135480,\"ĠdziÅĽ\":135481,\"Ø³ØªØ·ÙĬØ¹\":135482,\"×ľ×Ļ×Ł\":135483,\"Ø®ÙĦØ§Ùģ\":135484,\"ÙĩÙĲ\":135485,\"ĠatrÃ¡s\":135486,\"íĺģ\":135487,\"ãĤĴãģĶ\":135488,\"Ġ×Ķ×ŀ×ķ×¦×¨\":135489,\"ĠBakanlÄ±ÄŁÄ±\":135490,\"ÑİÑīÐµÐµ\":135491,\"ÙħÙĨØ§Ø·\":135492,\"ÙħÙĨØ§Ø·ÙĤ\":135493,\"ÙģØ¯\":135494,\"à¸Ļà¸³à¹Ħà¸Ľ\":135495,\"ĠÐ²Ð°Ð¶\":135496,\"ĠÐ²Ð°Ð¶Ð½Ð¾\":135497,\"Ġmáº¡ch\":135498,\"×Ľ×ł×ķ\":135499,\"Ø¨Ø¹Ø«\":135500,\"lanmasÄ±\":135501,\"Ġayr\":135502,\"ĠayrÄ±l\":135503,\"ìĤ¬íļĮ\":135504,\"dÃŃa\":135505,\"pÅĤyw\":135506,\"Ø§ÙħÙĬØ©\":135507,\"íĺľ\":135508,\"×Ĳ×ł×Ĵ×ľ\":135509,\"×Ĳ×ł×Ĵ×ľ×Ļ×ª\":135510,\"ĠìŀĪëĭ¤ëĬĶ\":135511,\"ĠØ³Ø§Ø¹Ø©\":135512,\"ĠëĤĺíĥĢ\":135513,\"bÃ¶\":135514,\"à¸Ħà¸±à¸Ļ\":135515,\"ĠdziaÅĤania\":135516,\"Ø©Ùĭ\":135517,\"ĠngÅ©\":135518,\"×ł×¦×Ĺ\":135519,\"ãģ¯ãģĤãĤĭ\":135520,\"ĠyaÅŁÄ±nda\":135521,\"stÃ¼ck\":135522,\"caracter\":135523,\"caracterÃŃsticas\":135524,\"Ġrá»Ńa\":135525,\"ĠÙħØ®ØªÙĦÙģØ©\":135526,\"ãģ«ãģĬãģĳãĤĭ\":135527,\"à¹ģà¸ŀà¸ĩ\":135528,\"à¸§à¸´à¹Īà¸ĩ\":135529,\"×ª×¤×ķ\":135530,\"Ø³Ø§ÙĩÙħ\":135531,\"ä½¿ãģĨ\":135532,\"ÙĥØ±ÙĬ\":135533,\"×Ĳ×¤×Ļ\":135534,\"...............\":135535,\"ĠÑĤÐ°ÐºÐ¸Ð¼\":135536,\"×Ļ×Ľ×ķ×Ļ\":135537,\"Ø´Ø¨Ùĩ\":135538,\"Ø¬ÙĬØ±\":135539,\"ãģĿãģ®ãģ¾ãģ¾\":135540,\"acjÄĻ\":135541,\"ĠØ§ÙĦØªØ±Ùĥ\":135542,\"ĠØ§ÙĦØªØ±ÙĥÙĬ\":135543,\"ĠÐ¿ÑĢÐ°Ð²Ð¸Ð»ÑĮÐ½Ð¾\":135544,\"ĠØªØ¹ÙħÙĦ\":135545,\"à¸ģà¸¥à¹īà¸²\":135546,\"ĠbiÃªn\":135547,\"Ġ×ĳ×ł×Ļ×Ļ×ª\":135548,\"ĠÐºÐ»ÑĥÐ±\":135549,\"Ġ×ŀ×©×Ķ\":135550,\"Ð²ÑĪÐ¸Ð¹\":135551,\"ãģĵãģ¨ãģĮãģ§ãģįãĤĭ\":135552,\"à¸ŀà¸±à¸Ļà¸ĺà¸¸\":135553,\"à¸ŀà¸±à¸Ļà¸ĺà¸¸à¹Į\":135554,\"×¨×ķ×Ŀ\":135555,\"ĠØ§ÙĦÙģØ±ÙĨ\":135556,\"ĠØ§ÙĦÙģØ±ÙĨØ³ÙĬ\":135557,\"à¹Ģà¸Ľà¹ĩà¸Ļà¸Ħà¸Ļ\":135558,\"ãģĹãģ¦ãģĬãĤĬ\":135559,\"Ġtháº§y\":135560,\"ãĤĵãģłãģĳãģ©\":135561,\"ìĶ¨\":135562,\"ÙħØ¯ÙĨ\":135563,\"ØªÙĪÙĨ\":135564,\"ĠÐ¼ÐµÑĤÐ°Ð»\":135565,\"ĠÐ¼ÐµÑĤÐ°Ð»Ð»\":135566,\"ĠinÃŃcio\":135567,\"à¸Ńà¸Ńà¸ģà¸Īà¸²à¸ģ\":135568,\"ëĴ¤\":135569,\"Ġcuá»ĳn\":135570,\"Ġbuá»Ļc\":135571,\"ÙĨØ³ÙĬ\":135572,\"Ã¤cht\":135573,\"×ŀ×Ļ×ł×Ļ×Ŀ\":135574,\"ãģķãģ¦\":135575,\"ãģĮãģ§ãģį\":135576,\"ÑĬÐµÐ¼\":135577,\"ĠtÃ¡i\":135578,\"ĠÐ§ÑĤ\":135579,\"ĠÐ§ÑĤÐ¾Ð±Ñĭ\":135580,\"à¸Ľà¸¥à¸¹à¸ģ\":135581,\"à¸Ĭà¸¸à¸¡à¸Ĭà¸Ļ\":135582,\"Ð½ÑģÐºÐ¸Ð¹\":135583,\"Ġvá»¯ng\":135584,\"Ġ×Ķ×ľ×ĳ\":135585,\"Ã«le\":135586,\"Ġ×©×¢×ĳ×¨\":135587,\"Ð²Ð°ÑĤÑĮÑģÑı\":135588,\"Ð±Ð¾Ð¹\":135589,\"Ø¹ÙĪÙĨ\":135590,\"à¹ģà¸Ķà¸Ļ\":135591,\"Ġ×¡×¤×¨×Ļ×Ŀ\":135592,\"ĠtuyÃªn\":135593,\"ĠnhiÃªu\":135594,\"ĠQuÃ½\":135595,\"Ġhuyáº¿t\":135596,\"ãĤıãģĭãĤīãģªãģĦ\":135597,\"Ġ×ŀ×Ľ×Ł\":135598,\"Ġ×Ķ×§×ľ\":135599,\"Ġ×ľ×Ĳ×ķ×¨\":135600,\"ĠÄĲiá»ĩn\":135601,\"Ø´Ø¤\":135602,\"Ø´Ø¤ÙĪÙĨ\":135603,\"Ġ×ŀ×Ĺ×¤×©\":135604,\"ĠÐ¿Ð¾ÑģÑĤÐ¾ÑıÐ½Ð½Ð¾\":135605,\"×ŀ×Ļ×¨\":135606,\"ìħĶ\":135607,\"ÐŀÑģ\":135608,\"ÐŀÑģÐ½Ð¾Ð²\":135609,\"×ĸ×Ļ×ª\":135610,\"ĠHÃ¡\":135611,\"ĠÑĩÐ°ÑģÐ¾Ð²\":135612,\"×Ĳ×ķ×ľ×Ļ\":135613,\"ĠmÃ¡t\":135614,\"Ø®Ø±ÙĪ\":135615,\"Ø®Ø±ÙĪØ¬\":135616,\"ÙĤØ¶Ø§\":135617,\"ÙĤØ¶Ø§ÙĬØ§\":135618,\"à¹Ģà¸Ľà¸Ńà¸£à¹Į\":135619,\"ĠÙĬÙĪÙĦ\":135620,\"ĠÙĬÙĪÙĦÙĬÙĪ\":135621,\"à¹Ĥà¸Ĺà¸©\":135622,\"×ł×¤×ľ\":135623,\"×ª×ķ×©\":135624,\"×ª×ķ×©×ĳ×Ļ\":135625,\"ĠvÃ¡rios\":135626,\"×ŀ×¨×Ĳ×Ķ\":135627,\"ëĿ¼ìĿ´\":135628,\"ÙĨØº\":135629,\"×ĳ×¦×¢\":135630,\"Ð³Ð¾Ð½\":135631,\"ĠÄĲÆ°á»£c\":135632,\"Ø¹Ùı\":135633,\"Ð¿ÑĥÑģÐº\":135634,\"ĠÙĪØ§ÙĦÙģ\":135635,\"Ã¼cÃ¼\":135636,\"×Ļ×§×Ļ×Ŀ\":135637,\"ĠØ³Ø¨ÙĬÙĦ\":135638,\"×ľ×ĳ×Ł\":135639,\"ĠØ§ÙĦÙĤØ±ÙĨ\":135640,\"×¡×ķ×ª\":135641,\"ĠQuáºŃn\":135642,\"ãģĵãĤĮãģĮ\":135643,\"ãĥĸãĥ©ãĥ³ãĥī\":135644,\"×Ĵ×ŀ×¨\":135645,\"ĠwartoÅĽci\":135646,\"ĠÙĪØ¨ÙĬÙĨ\":135647,\"Ġdáº¡\":135648,\"ÐĲÐ²\":135649,\"ÐĲÐ²ÑĤÐ¾\":135650,\"ĠolacaktÄ±r\":135651,\"à¸Ļà¸Ĺà¹Į\":135652,\"ÙħØ·Ø§Ø±\":135653,\"Ġ×¢×§×ĳ\":135654,\"Ġ×ª×¤\":135655,\"ãģĹãģ¦ãģĦãģ¦\":135656,\"×¦×ŀ×Ĺ\":135657,\"à¸Īà¸Ńà¸ĩ\":135658,\"ĠÃ¶de\":135659,\"ìį¨\":135660,\"ÙĨØ§Ø³\":135661,\"èª¿ãģ¹\":135662,\"ĠÐ¾Ð³ÑĢÐ¾Ð¼Ð½\":135663,\"ë³´íĹĺ\":135664,\"×ĺ×§\":135665,\"×ĺ×§×¡×ĺ\":135666,\"ĠbaÅŁv\":135667,\"ĠbaÅŁvuru\":135668,\"Ġpomys\":135669,\"ĠpomysÅĤ\":135670,\"ãģ«ä¹Ĺ\":135671,\"Ġ×©×Ľ×Ł\":135672,\"ĠØ§ÙĦÙħØ³Ø¤ÙĪÙĦ\":135673,\"ĠÐ·Ð°Ð½\":135674,\"ĠÐ·Ð°Ð½ÑıÑĤ\":135675,\"ĠdÆ°Æ¡ng\":135676,\"ãĥĹãĥ¬ãĤ¤\":135677,\"à¸¥à¸ļ\":135678,\"ÑĤÐ¸ÐºÐ°\":135679,\"ĠAralÄ±k\":135680,\"ĠÐ½ÐµÐ´Ð¾\":135681,\"Ġmá»Ļ\":135682,\"Ġoran\":135683,\"ĠoranÄ±\":135684,\"ĠktÃ³r\":135685,\"ĠktÃ³rÄħ\":135686,\"Ġ×Ķ×Ĳ×Ĺ×¨×ķ×ł×ķ×ª\":135687,\"Ø§Ø¦ÙĨ\":135688,\"ÅĦs\":135689,\"ÅĦska\":135690,\"åĽ½ãģ®\":135691,\"×ŀ×ĺ×Ļ\":135692,\"ĠÐ²Ð¾Ð¿ÑĢÐ¾ÑģÑĭ\":135693,\"à¸Ńà¸ĩà¸Ħà¹Įà¸ģà¸£\":135694,\"×ŀ×ķ×¦×Ĳ\":135695,\"ĠpÃ³Åº\":135696,\"ĠpÃ³Åºniej\":135697,\"×©×ŀ×Ĳ×ľ\":135698,\"Ġkaps\":135699,\"Ġkapsam\":135700,\"ĠkapsamÄ±nda\":135701,\"ĠmÃ¡quina\":135702,\"ĠÅĽwiecie\":135703,\"ĠhoÃłng\":135704,\"ĠÃ¶zgÃ¼\":135705,\"×Ĵ×ķ×¨×Ŀ\":135706,\"ãģĤãģŁãĤĬ\":135707,\"à¸ķà¸±à¸Ķà¸ªà¸´à¸Ļ\":135708,\"à¸ķà¸±à¸Ķà¸ªà¸´à¸Ļà¹ĥà¸Ī\":135709,\"Ð±ÑĢÐ¸\":135710,\"ãģ«ãģªãĤĭãģ¨\":135711,\"ØªÙĥÙĪÙĨ\":135712,\"Ġ×ķ×Ķ×Ļ×Ĳ\":135713,\"Ġchiáº¿u\":135714,\"ÑģÑĤÐ°Ð½Ð°Ð²\":135715,\"ÑģÑĤÐ°Ð½Ð°Ð²Ð»Ð¸\":135716,\"ÑģÑĤÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°\":135717,\"×ŀ×ķ×Ĵ\":135718,\"citÃ©\":135719,\"ĠKÃ¶rper\":135720,\"Ġ×©×Ĵ×Ŀ\":135721,\"Ø¹Ø¸\":135722,\"Ø¹Ø¸ÙĬÙħ\":135723,\"Ġ×Ķ×Ĳ×Ļ×©×Ļ\":135724,\"ĠmatiÃ¨re\":135725,\"ĠÙģÙĪÙĤ\":135726,\"Ġkto\":135727,\"ĠktoÅĽ\":135728,\"à¸Ļà¹Ĥà¸¢\":135729,\"à¸Ļà¹Ĥà¸¢à¸ļà¸²à¸¢\":135730,\"å¾ħãģ¡\":135731,\"à¹Ģà¸¡à¸Ļ\":135732,\"à¹Ģà¸¡à¸Ļà¸¹\":135733,\"AÃĩÃĥO\":135734,\"ĠtÃ¹\":135735,\"ĠtÃ¹y\":135736,\"ãĥĪãĥ³\":135737,\"ĠÐ¾ÑĤÐºÐ°Ð·\":135738,\"Ġ×ŀ×ķ×¦×¨\":135739,\"Ã¼lÃ¼\":135740,\"ãģķãĤĵãģ«\":135741,\"Ġ×Ĺ×ķ×ĳ\":135742,\"×§×¨×Ļ×Ĳ×Ķ\":135743,\"ĠØ§ÙĦØ®Ø¯ÙħØ§Øª\":135744,\"ĠÙĦÙħØ¯Ø©\":135745,\"Ø±Ø¤\":135746,\"Ø±Ø¤ÙĬØ©\":135747,\"ãĤĴè¦ĭãģ¤ãģĳ\":135748,\"à¸Łà¸²\":135749,\"ĠrÃ©ussi\":135750,\"à¸Ļà¸±à¸ģà¹Ģà¸£à¸µà¸¢à¸Ļ\":135751,\"ĠÑĩÐ¸ÑģÐ»\":135752,\"à¸ģà¸²à¸£à¹Ģà¸¥à¹Īà¸Ļ\":135753,\"ĠhazÄ±rl\":135754,\"ĠhazÄ±rlan\":135755,\"ĠÐ¿ÐµÑĢÐ²ÑĭÐ¹\":135756,\"Ð»Ð¸Ð¼\":135757,\"ĠÐ¾ÑĤÐ·ÑĭÐ²Ñĭ\":135758,\"ĠwyjÄħ\":135759,\"ĠwyjÄħtk\":135760,\"ĠØ£ÙĤÙĦ\":135761,\"×¡×ļ\":135762,\"Ġê²°ìłķ\":135763,\"Ġ×ľ×ŀ×¢×©×Ķ\":135764,\"Ġláº¯p\":135765,\"à¹ģà¸ļà¸£\":135766,\"à¹ģà¸ļà¸£à¸Ļà¸Ķà¹Į\":135767,\"à¸§à¹Īà¸²à¹Ģà¸Ľà¹ĩà¸Ļ\":135768,\"ĠØ¨Ø¯Ø§\":135769,\"ĠØ¨Ø¯Ø§ÙĬØ©\":135770,\"ãģ¨ãģĦãģĨãģ®ãģĮ\":135771,\"Ð¸ÑĩÐµÑģÐºÐ¸Ð¼\":135772,\"à¸ģà¸²à¸£à¸ŀà¸±à¸Ĵà¸Ļà¸²\":135773,\"ĠbÃło\":135774,\"ĠmiaÅĤa\":135775,\"ywaÄĩ\":135776,\"ĠMÃ¤rz\":135777,\"ĠÙĨØ³Ø¨Ø©\":135778,\"ĠÃ©conomique\":135779,\"×ĸ×ŀ\":135780,\"×ĸ×ŀ×ł×Ļ×Ŀ\":135781,\"æŃ¢ãĤģ\":135782,\"Ġtá»§\":135783,\"íķĺìĭł\":135784,\"ĠkaÅ¼dego\":135785,\"straÃŁe\":135786,\"à¸Ĭà¸µà¹ī\":135787,\"à¹Ģà¸ļà¸²\":135788,\"ÑĢÐµÑģÑĥÑĢÑģ\":135789,\"ÐµÐ²Ð¾Ð¹\":135790,\"Ø´Ø¨Ø§Ø¨\":135791,\"à¸ķà¹Īà¸²à¸ĩà¸Ľà¸£à¸°à¹Ģà¸Ĺà¸¨\":135792,\"Ġ×Ĳ×Ļ×©\":135793,\"Ġ×Ĳ×Ļ×©×Ļ×ª\":135794,\"×Ļ×ķ×¤\":135795,\"×Ļ×ķ×¤×Ļ\":135796,\"ĠìļĶêµ¬\":135797,\"ì¡°ìĤ¬\":135798,\"ãģ£ãģŁãĤī\":135799,\"×ľ×Ļ×§\":135800,\"Ð¼Ð¸Ð½Ð¸ÑģÑĤÑĢ\":135801,\"ãĤĤãģ®ãģ¯\":135802,\"ĠlÆ°Æ¡ng\":135803,\"ĠÐ½Ð°Ð¸\":135804,\"ĠÐ½Ð°Ð¸Ð±Ð¾Ð»\":135805,\"ĠÐ½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ\":135806,\"íİĺ\":135807,\"à¹ģà¸ŀà¹ī\":135808,\"ãĤŃãĥ¥\":135809,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÑĭÐ¼\":135810,\"à¹ģà¸Ĺà¸ĩ\":135811,\"à¹ģà¸Ĺà¸ĩà¸ļà¸Ńà¸¥\":135812,\"Ġ×ł×Ļ×Ķ\":135813,\"Ġ×ł×Ļ×Ķ×ķ×ľ\":135814,\"âĤª\":135815,\"ĠGiáº£i\":135816,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°\":135817,\"ëł¥ìĿĦ\":135818,\"ãģĹãģĭãĤĤ\":135819,\"à¸ģà¹ĩà¸ķà¹īà¸Ńà¸ĩ\":135820,\"ĠÑĢÐµÐ±\":135821,\"ĠÑĢÐµÐ±ÐµÐ½\":135822,\"ĠÑĢÐµÐ±ÐµÐ½ÐºÐ°\":135823,\"ØªÙĪØ§ØµÙĦ\":135824,\"ãĤ°ãĥ«ãĥ¼ãĥĹ\":135825,\"ãĤĦãĤī\":135826,\"à¹Ģà¸Ľà¸´à¸Ķà¸ķà¸±à¸§\":135827,\"Ð±ÑĢÐ¾\":135828,\"ë°ĸìĹĲ\":135829,\"ÙĨÙİØ§\":135830,\"×Ķ×Ĵ\":135831,\"×Ķ×Ĵ×ł×Ķ\":135832,\"à¸Ĺà¸£à¸±\":135833,\"à¸Ĺà¸£à¸±à¸ŀ\":135834,\"à¸Ĺà¸£à¸±à¸ŀà¸¢à¹Į\":135835,\"Ġkhá»ĳi\":135836,\"×¢×¦×ŀ×ķ\":135837,\"Ð±Ð¾Ð»ÐµÐ·Ð½\":135838,\"Ġë°ĽìķĦ\":135839,\"à¸¡à¸Ļ\":135840,\"à¸¡à¸Ļà¸¸\":135841,\"à¸¡à¸Ļà¸¸à¸©\":135842,\"à¸¡à¸Ļà¸¸à¸©à¸¢à¹Į\":135843,\"âĹĨ\":135844,\"×ŀ×¦×ľ×Ļ×Ĺ\":135845,\"ÑıÐ²Ð»ÐµÐ½Ð¸Ðµ\":135846,\"ÙħØ·ÙĦ\":135847,\"ÙħØ·ÙĦÙĪØ¨\":135848,\"Ø®Ø§ÙĦÙģ\":135849,\"ØªÙĪÙĤÙģ\":135850,\"ãģ§ãģįãģ¾ãģĽãĤĵ\":135851,\"Ð¾ÑģÑĤÐµÐ¹\":135852,\"Ð¼ÐµÑĩÐ°\":135853,\"ê¸°ëĬĶ\":135854,\"×ª×©×¢\":135855,\"ØµÙĬØ¨\":135856,\"Ġ×ĳ×¢×ķ×ĵ\":135857,\"à¸Ĥà¸Ńà¸ĩà¹Ģà¸Ĥà¸²\":135858,\"ÑĤÑıÐ¶\":135859,\"ĠÑĥÐ¿ÑĢÐ°Ð²\":135860,\"ĠÑĥÐ¿ÑĢÐ°Ð²Ð»ÐµÐ½Ð¸Ñı\":135861,\"ĠgÃ©nÃ©r\":135862,\"ĠthÃŃ\":135863,\"×¤×ļ\":135864,\"ĠØ±ÙħØ¶\":135865,\"ĠØ±ÙħØ¶Ø§ÙĨ\":135866,\"Ġtruyá»ĩn\":135867,\"Ø¥Ø¹Ø¯Ø§Ø¯\":135868,\"ãĤµãĥĿãĥ¼ãĥĪ\":135869,\"ĠÐ¿Ð¾Ð»Ð½Ð¾\":135870,\"Ø®Ø§Ùħ\":135871,\"ÐŁÐµÑĤ\":135872,\"ÐŁÐµÑĤÐµÑĢ\":135873,\"ÐŁÐµÑĤÐµÑĢÐ±ÑĥÑĢ\":135874,\"ÐŁÐµÑĤÐµÑĢÐ±ÑĥÑĢÐ³\":135875,\"ÙħÙĨØªØ¯Ùī\":135876,\"ãģķãĤĮãģ¾ãģĹãģŁ\":135877,\"ĠëĮĢíķĺìĹ¬\":135878,\"à¸ľà¸¹à¹īà¸Ĺà¸µà¹Ī\":135879,\"Ġ×ŀ×Ĳ×ķ\":135880,\"×ľ×ł×ĵ\":135881,\"Ð¾ÑĩÐ½ÑĭÐµ\":135882,\"ĠÐ½Ð°ÑĩÐ°Ð»Ð°\":135883,\"Ġ×ľ×Ļ×ľ×ĵ×Ļ×Ŀ\":135884,\"Ð¾Ð²Ð¾Ðµ\":135885,\"ãģĻãĤĭãģĵãģ¨ãģ§\":135886,\"ĠØ§ÙĦÙĨÙģ\":135887,\"ĠØ§ÙĦÙĨÙģØ·\":135888,\"ìŀĪëĬĶ\":135889,\"ØºÙĨÙĬ\":135890,\"×¤×ĵ\":135891,\"ãĤ¾\":135892,\"ĠCrÃ©\":135893,\"ãģ©ãģ¡ãĤī\":135894,\"Ø«Ø§ÙĨ\":135895,\"ÑĢÐ°Ð±Ð°ÑĤ\":135896,\"ÑĢÐ°Ð±Ð°ÑĤÑĭÐ²Ð°\":135897,\"Ġê°Ļëĭ¤\":135898,\"à¸Īà¸±\":135899,\"à¸Īà¸±à¸ģà¸£\":135900,\"Ġchá»¥\":135901,\"Ġchá»¥p\":135902,\"ĠÐ¼Ð°ÑģÑĤ\":135903,\"ĠÐ¼Ð°ÑģÑĤÐµÑĢ\":135904,\"Ġnáº¯m\":135905,\"ĠÑģÑĤÐ°Ð»Ð¸\":135906,\"Ġ×Ķ×Ĳ×Ļ×¨×ķ×¢\":135907,\"ãĤ½ãĥ³\":135908,\"åĪĨãģĭãĤĬ\":135909,\"Ø·Ø¨Ø¹\":135910,\"Ø¨Ø¯Ø§\":135911,\"grÃ¡fico\":135912,\"Ð³ÐµÑĢ\":135913,\"à¸Ķà¸³à¹Ģà¸Ļà¸´à¸Ļà¸ģà¸²à¸£\":135914,\"ĠsaldÄ±r\":135915,\"ĠsaldÄ±rÄ±\":135916,\"Ð²ÑĪÐ¸Ñħ\":135917,\"ãģĭãģ£ãģŁãģ§ãģĻ\":135918,\"ĠyapÄ±yor\":135919,\"ĠØ§ÙĦÙģØª\":135920,\"×¦×¨×¤×ª\":135921,\"Ð·Ð´Ð¾ÑĢÐ¾Ð²\":135922,\"×ĳ×¢×ľ\":135923,\"Ġ×Ĳ×ŀ×Ļ×ª×Ļ\":135924,\"ĠÐ¾Ð±Ñĭ\":135925,\"ĠÐ¾Ð±ÑĭÑĩ\":135926,\"ĠÐ¾Ð±ÑĭÑĩÐ½Ð¾\":135927,\"Ġ×ľ×ķ×ŀ×¨\":135928,\"ØªÙĥÙĨ\":135929,\"ØªÙĥÙĨÙĪÙĦÙĪØ¬\":135930,\"ØªÙĥÙĨÙĪÙĦÙĪØ¬ÙĬØ§\":135931,\"ĠhakkÄ±\":135932,\"ĠÑĢÐ°Ð²\":135933,\"ĠÑĢÐ°Ð²Ð½Ð¾\":135934,\"Ø±ÙĬÙĥ\":135935,\"Ġ×ĳ×ŀ×Ļ×ĵ\":135936,\"Ġ×ĳ×ŀ×Ļ×ĵ×Ķ\":135937,\"à¹ģà¸ģà¹īà¸§\":135938,\"Ġìĸĺ\":135939,\"Ġìĸĺê¸°\":135940,\"ãģĹãģ¦ãģĦãģ¾ãģĹãģŁ\":135941,\"ĠkÄ±sm\":135942,\"ĠkÄ±smÄ±\":135943,\"ê±¸\":135944,\"åĨħãģ®\":135945,\"ì§ķ\":135946,\"à¹Ģà¸«à¸¡à¸·à¸Ńà¸Ļà¸ģà¸±à¸Ļ\":135947,\"ĠÙģÙĲ\":135948,\"ĠÙģÙĲÙĬ\":135949,\"ÙĤØ§Ø¹Ø¯Ø©\":135950,\"ĠmoÅ¼esz\":135951,\"ÙħØµØ§ÙĦ\":135952,\"ÙħØµØ§ÙĦØŃ\":135953,\"ãģ¾ãģŁãģ¯\":135954,\"Ð±ÐµÐ³\":135955,\"ĠsÄ±c\":135956,\"ĠsÄ±cak\":135957,\"ÑĩÐ¸Ñģ\":135958,\"ÑĩÐ¸ÑģÐ»ÐµÐ½\":135959,\"ĠÐ½Ð¾Ð³\":135960,\"ãĥģãĥ£ãĥ³\":135961,\"ãĥ«ãĥī\":135962,\"ĠgiÃ³\":135963,\"ĠsÄ±nÄ±\":135964,\"ĠsÄ±nÄ±f\":135965,\"Ð¸Ð²Ð°ÑĤÑĮ\":135966,\"ĠquÃªn\":135967,\"Ġìłģ\":135968,\"Ġìłģìļ©\":135969,\"ĠJoÃ£o\":135970,\"ÙģØ§Ø¯\":135971,\"ĠGlÃ¼ck\":135972,\"à¸Ĺà¸Ńà¸Ķ\":135973,\"ĠgÃ³i\":135974,\"ï¼Ĭ\":135975,\"ĠdÃ©tail\":135976,\"ĠØ¯ÙĬØ³Ùħ\":135977,\"ĠØ¯ÙĬØ³ÙħØ¨Ø±\":135978,\"ë¡ľìĦľ\":135979,\"×ŀ×ķ×Ĺ\":135980,\"à¹Ħà¸®\":135981,\"ĠÐ¾ÑĤÐ´\":135982,\"ĠÐ¾ÑĤÐ´ÑĭÑħ\":135983,\"Ġkhuyáº¿n\":135984,\"à¸Ħà¸Ńà¸¢\":135985,\"ĠØ¬ÙĨÙĬ\":135986,\"ĠØ¬ÙĨÙĬÙĩ\":135987,\"ĠØ§ÙĦØ¯ÙģØ§Ø¹\":135988,\"à¸Ļà¹īà¸³à¸«à¸Ļà¸±à¸ģ\":135989,\"ĠìĤ¬ëŀĮëĵ¤ìĿ´\":135990,\"Ġthá»«a\":135991,\"ĠÃ¶ÄŁrenci\":135992,\"ĠÐ¿Ð¾Ð¼Ð¾ÑīÐ¸\":135993,\"ĠczÄĻÅĽÄĩ\":135994,\"×©×ĺ×¨\":135995,\"ĠNhi\":135996,\"ĠNhiá»ģu\":135997,\"×ł×¦×Ļ\":135998,\"ĠÐ½Ð°ÑĪÐµÐ¼\":135999,\"ĠkarÅŁÄ±laÅŁ\":136000,\"Ġ×Ķ×©×ł×Ļ×Ŀ\":136001,\"ĠÄĲÆ°á»Ŀng\":136002,\"ĠtrÃº\":136003,\"ĠÑĢÐ°Ð·Ð»Ð¸ÑĩÐ½ÑĭÑħ\":136004,\"ĠØ§ÙĦØ´ÙĩØ±\":136005,\"Ġ×ľ×¢×ķ×ľ×Ŀ\":136006,\"ØŃØ¬Ø±\":136007,\"ĠÄĳá»ķ\":136008,\"ĠìĿĺíķ´\":136009,\"à¸ļà¹Īà¸Ńà¸¢\":136010,\"Ġ×Ķ×Ļ×ľ×ĵ\":136011,\"ãģ¨ãģªãģ£ãģŁ\":136012,\"Ġ×Ĺ×ķ×ķ×ª\":136013,\"Ġ×©×Ļ×¨×ķ×ª×Ļ\":136014,\"Äħcy\":136015,\"Ø³Ø±ÙĬ\":136016,\"KÄ°\":136017,\"×¤×ł×ķ\":136018,\"ÑģÑĤÑĢÑĥÐºÑĤÑĥÑĢ\":136019,\"ÑĤÑĢÑĥÐ´\":136020,\"Ġ×Ķ×§×¨\":136021,\"Ġ×Ķ×§×¨×ķ×ĳ\":136022,\"ĠtháºŃm\":136023,\"èģŀãģį\":136024,\"ÙĤÙĪÙĬ\":136025,\"ÐºÐ»ÑİÑĩÐµÐ½\":136026,\"ÑĤÐµÑħ\":136027,\"ÑĤÐµÑħÐ½Ð¾Ð»Ð¾Ð³\":136028,\"è¡Įãģ£ãģŁ\":136029,\"Ġ×ķ×Ĳ×Ļ×Ł\":136030,\"ĠÅŁeklin\":136031,\"ĠÅŁeklinde\":136032,\"rÃ´\":136033,\"ÑĢÐ¾Ð³\":136034,\"ĠÐ½Ð¾Ð²ÑĭÐµ\":136035,\"Ġ×¡×ĳ×Ļ×ĳ\":136036,\"ĠtecnologÃŃa\":136037,\"×¡×Ľ\":136038,\"×¡×Ľ×ķ×Ŀ\":136039,\"ĠÅŀub\":136040,\"ĠÅŀubat\":136041,\"Ġ×Ķ×ŀ×ľ×Ĳ\":136042,\"Ġwypos\":136043,\"ĠwyposaÅ¼\":136044,\"ãģ¯ä½ķ\":136045,\"ãĤ¬ãĥ³\":136046,\"ê°ĸ\":136047,\"ĠÐºÐ°ÐºÐ¸Ðµ\":136048,\"ĠÃ§ocuklar\":136049,\"Ġ×ľ×¦×ĵ\":136050,\"ĠkayÄ±t\":136051,\"ĠÐ¼ÐµÑģÑĤÐµ\":136052,\"ÙħØ¯ÙĬÙĨØ©\":136053,\"Ġ×Ľ×Ĵ\":136054,\"Ġ×Ľ×Ĵ×ķ×Ł\":136055,\"ãģĹãģ¦ãĤĭ\":136056,\"ĠÙħØ§ÙĬÙĪ\":136057,\"ãģ£ãģ¦ãģĹãģ¾ãģ£ãģŁ\":136058,\"ĠÐ¿ÑĢÐ¾Ð³ÑĢÐ°Ð¼Ð¼Ñĭ\":136059,\"à¹ģà¸¥à¸Ļà¸Ķà¹Į\":136060,\"ãĥ¯ãĤ¤\":136061,\"×¢×¨×ķ×¥\":136062,\"ÑģÐ¸Ð´\":136063,\"ĠBÃ¶yle\":136064,\"Ġì²ĺìĿĮ\":136065,\"Ġ×ª×¤×§×Ļ×ĵ\":136066,\"ĠTrÃªn\":136067,\"íĥĪ\":136068,\"ĠÐłÐ¾ÑģÑģÐ¸Ð¹\":136069,\"ĠÐłÐ¾ÑģÑģÐ¸Ð¹ÑģÐºÐ¾Ð¹\":136070,\"ĠsÃłn\":136071,\"ĠrÃ¨gle\":136072,\"ĠyaklaÅŁÄ±k\":136073,\"à¹Ģà¸¥à¸´à¸ģ\":136074,\"ĠØ¯Ø§Ø¦Ùħ\":136075,\"Ġ×ķ×Ĵ\":136076,\"Ø§Ø¨Ø±\":136077,\"ĠbÃ¨\":136078,\"ĠØ§ÙĦÙĤØ¯Ùħ\":136079,\"ĠÑĢÐµÑĪÐµÐ½Ð¸Ñı\":136080,\"hiÃªn\":136081,\"ÑĤÐ¸Ðº\":136082,\"ÄĦ\":136083,\"à¸ļà¸£à¸£à¸¢à¸²à¸ģ\":136084,\"à¸ļà¸£à¸£à¸¢à¸²à¸ģà¸²à¸¨\":136085,\"×¨×¦×ķ×Ł\":136086,\"åĭķãģį\":136087,\"ĠGÃ¤ste\":136088,\"Ġê¸°ë³¸\":136089,\"ĠÙĬØ¹Ø±Ùģ\":136090,\"ĠSá»Ń\":136091,\"gÅĤÄĻb\":136092,\"à¹Ģà¸Ńà¸ª\":136093,\"×Ĳ×ŀ×Ļ×Ł\":136094,\"ĠÐ¿ÑĥÐ½Ðº\":136095,\"ĠÐ¿ÑĥÐ½ÐºÑĤ\":136096,\"Ġ×Ļ×ķ×ĵ×¢×Ļ×Ŀ\":136097,\"ãĤ«ãĥ©ãĥ¼\":136098,\"Ġ×ĳ×¡×ĵ×¨\":136099,\"Ġbuá»ĵn\":136100,\"Ð¹ÑĤ\":136101,\"Ð¹ÑĤÐµÑģÑĮ\":136102,\"ãĤĴæ±ĤãĤģ\":136103,\"Ġ×Ĳ×ª×Ľ×Ŀ\":136104,\"Ġëª¨ë¥´\":136105,\"Ø¸Ø±ÙĪÙģ\":136106,\"ÑĩÐµÑģÑĤÐ²Ð¾\":136107,\"ìĸ´ìĦľ\":136108,\"ĠÐ¾Ð´Ð½Ð°\":136109,\"ĠkapÄ±\":136110,\"Ġëħ¸ëł¥\":136111,\"ĠKÃ¼che\":136112,\"ĠØ§ÙĦØªØ´\":136113,\"Ø·ÙĬØ¨\":136114,\"ĠíĬ¹íŀĪ\":136115,\"ĠÐ²ÑĭÐ¿ÑĥÑģ\":136116,\"ĠÐ²ÑĭÐ¿ÑĥÑģÐº\":136117,\"×ĵ×ª×Ļ\":136118,\"ĠuÄŁ\":136119,\"ĠuÄŁra\":136120,\"Ø§Ø¦ÙĩØ§\":136121,\"ĠthoÃ¡t\":136122,\"ãģªãĤĤãģ®\":136123,\"ÑĳÑĢ\":136124,\"ê¸°ê°Ģ\":136125,\"ĠgeliÅŁme\":136126,\"ØªØŃÙĤ\":136127,\"ØªØŃÙĤÙĤ\":136128,\"ĠÐ¾Ð¿Ð°Ñģ\":136129,\"Ð±ÑĢÐ¾Ñģ\":136130,\"à¸«à¸¸\":136131,\"à¸«à¸¸à¹īà¸Ļ\":136132,\"ì¼Ģ\":136133,\"ãĤ¹ãĥŀ\":136134,\"ãĤ¹ãĥŀãĥĽ\":136135,\"Ø£ÙģØ±\":136136,\"Ø£ÙģØ±Ø§Ø¯\":136137,\"ĠThá»±c\":136138,\"Ġtháº¯\":136139,\"ãĥªãĥ³ãĤ¯\":136140,\"Ġniá»ģm\":136141,\"ĠHÃ¶he\":136142,\"Ø¹ÙħØ§Ø±\":136143,\"ÙĥÙĪØ±ÙĪÙĨ\":136144,\"ÙĥÙĪØ±ÙĪÙĨØ§\":136145,\"ĠÄĲáº¿n\":136146,\"ĠÑģÐ°Ð¼Ð¾Ð¼\":136147,\"ĠÑĤÐµÐ»Ðµ\":136148,\"ĠÄĳoÃ¡n\":136149,\"à¸Ħà¸§à¸²à¸¡à¸Ħà¸´à¸Ķà¹Ģà¸«à¹ĩà¸Ļ\":136150,\"ĠÐ´Ð¸ÑģÐº\":136151,\"Ø£Ø·ÙģØ§ÙĦ\":136152,\"à¸¡à¸²à¸£à¹Į\":136153,\"à¸Ĺà¸«à¸²à¸£\":136154,\"à¸Ĺà¸Ļ\":136155,\"ĠØ¨Ø¹ÙĬØ¯\":136156,\"ĠØ§ÙĦÙĩÙĨØ¯\":136157,\"åĩºãģĹãģ¦\":136158,\"Ġkarde\":136159,\"ĠkardeÅŁ\":136160,\"×Ķ×Ļ×¡×ĺ×ķ×¨\":136161,\"×Ķ×Ļ×¡×ĺ×ķ×¨×Ļ×Ķ\":136162,\"éģ¸ãģ³\":136163,\"Ø¹Ø§ÙħÙĦ\":136164,\"à¸Ĥà¸¢à¸²à¸¢\":136165,\"ĠtÃ¼rl\":136166,\"ĠtÃ¼rlÃ¼\":136167,\"ĠìĿ¼ìĿ´\":136168,\"ĠmatÃ©ria\":136169,\"Ġ×Ľ×ľ×ķ×ŀ×¨\":136170,\"ãĥģãĥ£ãĥ¼\":136171,\"Ø¬ÙħØ§Ø¹Ø©\":136172,\"ĠÑģÐ²Ð¾Ð¸Ð¼\":136173,\"Ø¥ÙĤØ§ÙħØ©\":136174,\"ä¾ĭãģĪãģ°\":136175,\"Ø³Ø§Ø¨\":136176,\"Ø¢Ø®Ø±\":136177,\"ÙĤØ¯ÙĬØ±\":136178,\"×Ĳ×ŀ×Ļ\":136179,\"ìĸ»\":136180,\"Ġ×ł×ķ×¡×¤×ª\":136181,\"ĠÐĴÐ»Ð°Ð´\":136182,\"ĠÐĴÐ»Ð°Ð´Ð¸Ð¼\":136183,\"ĠÐĴÐ»Ð°Ð´Ð¸Ð¼Ð¸ÑĢ\":136184,\"ĠestarÃ¡\":136185,\"ãģĵãģĨãģĦãģĨ\":136186,\"ãĤĴä½¿çĶ¨\":136187,\"à¸¡à¸²à¸ķà¸£\":136188,\"à¸¡à¸²à¸ķà¸£à¸Ĳà¸²à¸Ļ\":136189,\"ãģ£ãģ½\":136190,\"ĠnÃº\":136191,\"ĠnÃºi\":136192,\"à¸¢à¸²à¸ĩ\":136193,\"ĠØ§ÙĦØ¬ÙĨØ³\":136194,\"ĠÃ¼stÃ¼n\":136195,\"ëľ»\":136196,\"ãĤ»ãĥ«\":136197,\"ãģ¦ãģĦãģįãģ¾ãģĻ\":136198,\"Ġ×Ĺ×ķ×ĸ\":136199,\"Ġ×Ĺ×ķ×ĸ×¨\":136200,\"ĠÐĵÐ»Ð°Ð²\":136201,\"à¹Ĥà¸Ĭà¸Ħ\":136202,\"íıĲ\":136203,\"ÙĨØªØ¸Ø±\":136204,\"Ġ×Ĵ×ĳ×Ļ\":136205,\"Ø¹ÙĤØ¨\":136206,\"intÃ©r\":136207,\"intÃ©rÃªt\":136208,\"×ŀ×¤×Ĵ\":136209,\"×ŀ×¤×Ĵ×©\":136210,\"ĠthÃ¹\":136211,\"Ø§ÙģØª\":136212,\"Ġ×ŀ×©×¤\":136213,\"Ġ×ŀ×©×¤×ĺ×Ļ\":136214,\"ĠÙħÙĪØ§ÙĤØ¹\":136215,\"è¦ļ\":136216,\"è¦ļãģĪ\":136217,\"×ĵ×Ļ×Ł\":136218,\"à¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩà¸£à¸²à¸§\":136219,\"ãģ¾ãģĤ\":136220,\"Ġgháº¿\":136221,\"Ð¸ÑĢÑĥÑİÑĤ\":136222,\"à¸ģà¸§\":136223,\"à¸ģà¸§à¹īà¸²à¸ĩ\":136224,\"ĠÐ¿Ð¾Ð²ÐµÑĢ\":136225,\"ĠÐ¿Ð¾Ð²ÐµÑĢÑħ\":136226,\"ĠÐ¿Ð¾Ð²ÐµÑĢÑħÐ½Ð¾ÑģÑĤ\":136227,\"×ł×ĵ×¨\":136228,\"ĠÐºÐ¾Ð½ÑĨÐµ\":136229,\"ĠÐ´Ð¾Ð»Ð¶Ð½Ð°\":136230,\"Ġ×Ļ×©×Ļ×¨\":136231,\"acaÄŁÄ±z\":136232,\"ìĹĶ\":136233,\"ĠnÃŃvel\":136234,\"ĠÃ¶r\":136235,\"ĠÃ¶rnek\":136236,\"ÙĥÙģ\":136237,\"ĠÐ¤ÐµÐ´ÐµÑĢÐ°ÑĨÐ¸Ð¸\":136238,\"Ġêµ¬ìĦ±\":136239,\"à¸«à¸±à¸§à¹ĥà¸Ī\":136240,\"ĠVáºŃy\":136241,\"Ð¼ÐµÐ´\":136242,\"Ð¼ÐµÐ´Ð¸\":136243,\"Ð¼ÐµÐ´Ð¸ÑĨÐ¸Ð½\":136244,\"Ð¼ÐµÐ´Ð¸ÑĨÐ¸Ð½ÑģÐº\":136245,\"Ø§Ø²ÙĬ\":136246,\"×Ĵ×ĳ×ķ×ľ\":136247,\"ÑĦÑĢ\":136248,\"ĠzusÃ¤tzlich\":136249,\"à¸ģà¸ģ\":136250,\"ĠØ§ÙĦØ§ÙĤØªØµØ§Ø¯ÙĬØ©\":136251,\"ĠhÃ¨\":136252,\"luÄŁun\":136253,\"Ø¬Ùİ\":136254,\"à¹Ħà¸Łà¸¥à¹Į\":136255,\"ÄĲT\":136256,\"ãģĿãģ®ä»ĸ\":136257,\"à¸Ĺà¸´à¹īà¸ĩ\":136258,\"ĠØ§ÙĦØ£ÙĪ\":136259,\"Ø±Ø³Ùħ\":136260,\"æ°Ĺãģ¥\":136261,\"ìĿ´ë©°\":136262,\"ÑĮÐµÐ²\":136263,\"ØµØ·\":136264,\"ĠØ§ÙĦØ§Ø³ØªØ«\":136265,\"ĠØ§ÙĦØ§Ø³ØªØ«ÙħØ§Ø±\":136266,\"à¸Ńà¸²à¸Ħà¸²à¸£\":136267,\"ĠÑĤÐ¾ÑĩÐ½Ð¾\":136268,\"ĠVÃ¢n\":136269,\"à¸Ńà¸£\":136270,\"à¸Ńà¸£à¹Īà¸Ńà¸¢\":136271,\"ĠØ§ÙĦØ³ÙĨØ©\":136272,\"ĠcÆ°á»Ľi\":136273,\"×Ļ×Ķ×Ł\":136274,\"íį¼\":136275,\"è©±ãģĹ\":136276,\"âĹĭ\":136277,\"ĠìķĬìĿĢ\":136278,\"ãĥ¡ãĥ¼ãĤ\":136279,\"ãĥ¡ãĥ¼ãĤ«\":136280,\"ãĥ¡ãĥ¼ãĤ«ãĥ¼\":136281,\"ĠÑĤÐµÐ¿Ð»Ð¾\":136282,\"å½¼ãĤī\":136283,\"ĠÄ°z\":136284,\"ĠÄ°zmir\":136285,\"íĻį\":136286,\"ĠrÆ°á»£\":136287,\"ĠrÆ°á»£u\":136288,\"æĢĿãģĦåĩº\":136289,\"ĠPháº¡m\":136290,\"ĠchÃ¡u\":136291,\"×¦×Ļ×ķ×ª\":136292,\"ĠìĿ¼ë³¸\":136293,\"ìĤ¬ëĬĶ\":136294,\"ĠÑģÐ¾Ð·Ð´Ð°Ð½\":136295,\"ĠaracÄ±\":136296,\"Ġ×¢×¨\":136297,\"Ġ×¢×¨×Ļ×Ľ×Ķ\":136298,\"ĠíķĺëĤĺëĭĺìĿĺ\":136299,\"dziÅĤ\":136300,\"à¸Ľà¸£à¸°à¸ĺà¸²à¸Ļ\":136301,\"ĠserÃŃa\":136302,\"ĠìŀĪëıĦë¡Ŀ\":136303,\"Ø¯Ø±Ø¬\":136304,\"íķľëĭ¤ëĬĶ\":136305,\"à¸Ńà¸²à¸Ĺ\":136306,\"à¸Ńà¸²à¸Ĺà¸´à¸ķ\":136307,\"à¸Ńà¸²à¸Ĺà¸´à¸ķà¸¢à¹Į\":136308,\"ÑĤÐµÐ»ÑĮÐ½ÑĭÐ¹\":136309,\"ĠØ®Ø¯ÙħØ§Øª\":136310,\"×ŀ×ł×ĺ\":136311,\"ĠlÆ°á»£c\":136312,\"ĠSÃłi\":136313,\"ĠÙĪØ§Ø¶\":136314,\"ĠÙĪØ§Ø¶ØŃ\":136315,\"ØºØ§Ø²\":136316,\"ĠdoÄŁal\":136317,\"Ġ×ĳ×©×Ŀ\":136318,\"ĠÐ´Ð»Ð¸Ð½\":136319,\"ĠØ¥Ø·Ø§Ø±\":136320,\"Ġ×ĳ×¡×¤×¨\":136321,\"ãĤĴä¸İ\":136322,\"ãĤĴä¸İãģĪ\":136323,\"Ġë²ķë¥ł\":136324,\"ĠÑĥÐ²ÐµÐ»Ð¸\":136325,\"ĠÑĥÐ²ÐµÐ»Ð¸ÑĩÐ¸\":136326,\"à¸ªà¹Ħà¸ķ\":136327,\"à¸ªà¹Ħà¸ķà¸¥à¹Į\":136328,\"à¹Ħà¸ģà¸¥\":136329,\"×ĳ×Ĺ×Ł\":136330,\"ĠìĿ´íĽĦ\":136331,\"Ġmunic\":136332,\"ĠmunicÃŃpio\":136333,\"ØªÙħØ«ÙĦ\":136334,\"ĠÄĳÃ¡o\":136335,\"HÃ´tel\":136336,\"Ġlá»Ńa\":136337,\"ĠÄĳáº³ng\":136338,\"ÑĩÐºÐ¸\":136339,\"Ø´Ø±ÙĪ\":136340,\"Ø´Ø±ÙĪØ·\":136341,\"ĠìĿ´ë¥¼\":136342,\"ÙĬÙĭØ§\":136343,\"×ŀ×ľ×ļ\":136344,\"×ŀ×Ķ×Ļ×¨×ķ×ª\":136345,\"ĠÐ¾Ð±ÑıÐ·Ð°ÑĤÐµÐ»ÑĮ\":136346,\"ĠÐ¾Ð±ÑıÐ·Ð°ÑĤÐµÐ»ÑĮÐ½Ð¾\":136347,\"Ã©nergie\":136348,\"ĠmudanÃ§a\":136349,\"Ġmá»¥\":136350,\"Ġmá»¥n\":136351,\"ĠnÂº\":136352,\"ĠØ§ÙĦØªØ¹Ø§\":136353,\"ĠØ§ÙĦØªØ¹Ø§ÙĪÙĨ\":136354,\"ĠØ§ÙĦØ§Ø¬ØªÙħØ§Ø¹ÙĬØ©\":136355,\"ĠÐ¿Ð»Ð°ÑģÑĤ\":136356,\"Ġëĵ±ìĿĺ\":136357,\"ãĥĲãĤ¤ãĤ¯\":136358,\"ÙĩØ¬ÙĪÙħ\":136359,\"ĠSaÃºde\":136360,\"Ġì¤ĳìļĶíķľ\":136361,\"Ġ×Ķ×¦×Ļ×ĳ×ķ×¨\":136362,\"×ª×§×Ł\":136363,\"ĠØ§ÙĦØ¹Ø§ÙĦÙħÙĬ\":136364,\"ĠÐ±Ð¾Ð»ÑĮÑĪÐ¾Ð¹\":136365,\"ĠÙĥÙĦÙħ\":136366,\"ĠÙĥÙĦÙħØ©\":136367,\"ãģ®ãģ§ãģ¯ãģªãģĦãģ§ãģĹãĤĩãģĨãģĭ\":136368,\"ĠÙħØ¨Ø§Ø±Ø§Ø©\":136369,\"Ġ×©×Ĳ×ł\":136370,\"Ġ×©×Ĳ×ł×Ĺ×ł×ķ\":136371,\"ãĤ¹ãĤ¿ãĤ¤ãĥ«\":136372,\"ĠSaÄŁ\":136373,\"ĠSaÄŁlÄ±k\":136374,\"ĠhÆ°\":136375,\"×ł×Ĺ×Ķ\":136376,\"Ġ×ĳ×§×¨×ĳ\":136377,\"Ø·Ø¹Ùħ\":136378,\"à¸«à¸´à¸Ļ\":136379,\"à¸Ĺà¸¸à¸ģà¸§à¸±à¸Ļ\":136380,\"à¸Ħà¸£à¸±à¹īà¸ĩà¸Ĺà¸µà¹Ī\":136381,\"ĠlÃłnh\":136382,\"ĠdonnÃ©\":136383,\"ãģĽãģĦ\":136384,\"Ø¬Ø²ÙĬØ±Ø©\":136385,\"Ð´Ð¾ÑĢÐ¾Ð¶\":136386,\"ì¼ľ\":136387,\"ØªÙĨØ¸ÙĬÙģ\":136388,\"ãĥģãĥ§\":136389,\"ĠaldÄ±ÄŁÄ±\":136390,\"Ø¬Ø§Ø¬\":136391,\"ĠÑĤÐ¾Ð¼Ñĥ\":136392,\"à¸Ľà¸´\":136393,\"Ġ×ĳ×¨×©×ª\":136394,\"ãģıãģªãĤĬãģ¾ãģĻ\":136395,\"ĠÐ¿ÑĢÐ¸Ð½ÑĨÐ¸Ð¿\":136396,\"Ġ×Ĺ×ľ×ķ\":136397,\"ëı¼\":136398,\"×ķ×Ĵ×©\":136399,\"Ø³Ø³\":136400,\"à¸Ľà¸¹\":136401,\"Ġháº§u\":136402,\"æĦŁãģĺãĤĭ\":136403,\"ï¼´\":136404,\"Ø¯ÙĪØ§\":136405,\"ĠÑģÐ¼Ð¾Ð³\":136406,\"scriÃ§Ã£o\":136407,\"ĠtháºŃn\":136408,\"Ġ×¨×ķ×Ĳ×Ķ\":136409,\"Ð¾Ð±ÑĢÐ°Ð¶ÐµÐ½\":136410,\"ĠØ§ÙĦØªØ¬Ø§Ø±ÙĬØ©\":136411,\"Ø·Ø¨ÙĬØ¹\":136412,\"jÄħcÄħ\":136413,\"íĸīìľĦ\":136414,\"ĠÐ½Ð¾Ð²ÑĭÐ¹\":136415,\"Ġ×ŀ×Ĺ×ĵ×©\":136416,\"æĮ¯ãĤĬ\":136417,\"guÃ©\":136418,\"Ġ×Ĳ×Ļ×¨×ķ×¢\":136419,\"Ġ×Ĳ×Ļ×¨×ķ×¢×Ļ×Ŀ\":136420,\"ĠØ§ÙĦØ°ÙĩØ¨\":136421,\"×ĵ×Ĳ\":136422,\"ØªØ§ÙĨ\":136423,\"ãģłãģĹ\":136424,\"à¸Ńà¸±à¸ķà¸£à¸²\":136425,\"à¹Ĥà¸Ī\":136426,\"Ø¨ÙĦØ§Ø¯\":136427,\"×Ķ×Ļ×Ļ×ł×ķ\":136428,\"ĠÑģÐ¿Ðµ\":136429,\"ĠÑģÐ¿ÐµÑĨÐ¸Ð°Ð»ÑĮÐ½Ð¾\":136430,\"ĠÅĽwiata\":136431,\"ãĤĵãģ§ãģĻãĤĪ\":136432,\"Ø´Ø±ÙĥØ©\":136433,\"ĠpÅĤyt\":136434,\"ĠsituÃ©\":136435,\"Ġ×Ľ×Ĳ×ľ×Ķ\":136436,\"×¡×ĳ×¨\":136437,\"ĠkaÅ¼d\":136438,\"ĠkaÅ¼dym\":136439,\"ãĤĴæĮģãģ¤\":136440,\"×ľ×Ķ×ľ\":136441,\"×ľ×Ķ×ľ×Ł\":136442,\"ĠwÅĤas\":136443,\"ĠwÅĤasne\":136444,\"ĠsaÄŁlan\":136445,\"×ŀ×¢×ľ×Ķ\":136446,\"ĠØ§ÙĦØ§ÙĪÙĦ\":136447,\"ìĹĲìĦľëıĦ\":136448,\"×Ĳ×Ļ×¨×ķ×¤×Ķ\":136449,\"ØªÙĤÙĨÙĬØ©\":136450,\"ÙħØ§Ø¦\":136451,\"ÙħØ§Ø¦Ø©\":136452,\"ĠcompaÃ±ÃŃa\":136453,\"ĠsÃ¼rek\":136454,\"ĠsÃ¼rekli\":136455,\"ĠÐ¸ÑģÐºÑĥÑģ\":136456,\"ĠÐ¸ÑģÐºÑĥÑģÑģÑĤÐ²\":136457,\"ĠBÃ¼rger\":136458,\"×ª×Ĺ×¨\":136459,\"×ª×Ĺ×¨×ķ×ª\":136460,\"à¸ŀà¸£à¹īà¸Ńà¸¡à¸ģà¸±à¸ļ\":136461,\"Ø´Ùħ\":136462,\"à¸ĸà¸·à¸Ńà¸§à¹Īà¸²\":136463,\"è¾¼ãĤĢ\":136464,\"ä¼ĳãģ¿\":136465,\"ĠØ§ÙĦØ£Ø¨\":136466,\"ĠÑģÑĤÐ¾Ð¸Ð¼Ð¾ÑģÑĤÑĮ\":136467,\"ĠÐ¿ÑĢÐ°Ð²Ð°\":136468,\"mayÄ±n\":136469,\"à¸«à¸§à¸¢\":136470,\"ĠØ§ÙĦØ·Ø¨ÙĬØ¹ÙĬ\":136471,\"à¸Ĺà¸µà¹Īà¸ŀà¸±à¸ģ\":136472,\"ĠEstÃ¡\":136473,\"ÑĭÐ²Ð°ÑİÑĤ\":136474,\"Ø¨Ø³ÙĬ\":136475,\"Ø¨Ø³ÙĬØ·\":136476,\"Ġ×ĳ×¢×ĳ×¨\":136477,\"åı¯èĥ½ãģ§ãģĻ\":136478,\"Ġ×ĵ×ķ×ľ\":136479,\"Ġ×ĵ×ķ×ľ×¨\":136480,\"ÙĩÙİØ§\":136481,\"Ð²Ð¾ÑĢÐ¾ÑĤ\":136482,\"ãģ¦ãģĦãģ¾ãģĹãģŁ\":136483,\"à¹Ĥà¸Ĺà¸£à¸¨\":136484,\"à¹Ĥà¸Ĺà¸£à¸¨à¸±\":136485,\"à¹Ĥà¸Ĺà¸£à¸¨à¸±à¸ŀ\":136486,\"à¹Ĥà¸Ĺà¸£à¸¨à¸±à¸ŀà¸Ĺà¹Į\":136487,\"Ġ×§×ł\":136488,\"ĠØ§ÙĦØ«ÙĨ\":136489,\"ĠØ§ÙĦØ«ÙĨØ§Ø¦ÙĬØ©\":136490,\"ĠcoÃ»t\":136491,\"à¸ķà¸´à¸Ķà¸ķà¸±à¹īà¸ĩ\":136492,\"ĠÃ¶rg\":136493,\"ĠÃ¶rgÃ¼t\":136494,\"ĠØ§ÙĦØ®ÙĦÙĬ\":136495,\"ĠØ§ÙĦØ®ÙĦÙĬØ¬\":136496,\"Ġbá»įn\":136497,\"×ķ×ľ×ķ×Ĵ×Ļ\":136498,\"ëŀľ\":136499,\"ĠÐĳÐ¾Ð»ÑĮ\":136500,\"ĠÐĳÐ¾Ð»ÑĮÑĪ\":136501,\"×Ĵ×ĳ×¨×Ļ×Ŀ\":136502,\"ÙĤÙĬØ¯\":136503,\"×ĳ×Ļ×ĺ×ķ×Ļ\":136504,\"æīĵãģ¡\":136505,\"ĠolmuÅŁ\":136506,\"fÃ¤h\":136507,\"fÃ¤hig\":136508,\"à¸¥à¸²à¸Ļ\":136509,\"ĠÙĤØ·Ø±\":136510,\"×©×¤×Ķ\":136511,\"èªŃãĤĵãģ§\":136512,\"à¸Ĥà¸§à¸²\":136513,\"Ġchiáº¿m\":136514,\"ãĤ¤ãĥ³ãĤ¿\":136515,\"ãĤ¤ãĥ³ãĤ¿ãĥ¼ãĥ\":136516,\"ãĤ¤ãĥ³ãĤ¿ãĥ¼ãĥį\":136517,\"ãĤ¤ãĥ³ãĤ¿ãĥ¼ãĥįãĥĥãĥĪ\":136518,\"Ġ×ľ×©×ŀ×ķ×¨\":136519,\"ĠØªØ±Ùĥ\":136520,\"ĠØªØ±ÙĥÙĬØ§\":136521,\"×¨×ķ×ĺ\":136522,\"ãģ¨æĢĿãģĦãģ¾ãģĹãģŁ\":136523,\"ĠØ§ÙĦØªÙĤ\":136524,\"ĠdÆ°\":136525,\"ãģ¦ãģıãĤĮãĤĭ\":136526,\"ãģĹãģŁãģĵãģ¨\":136527,\"ĠrÃ³Å¼ne\":136528,\"ĠØ§ÙĦØ·ÙģÙĦ\":136529,\"ĠPostÃ©\":136530,\"Ġ×ŀ×©×ķ×Ŀ\":136531,\"ÑįÑĢ\":136532,\"ĠÑĢÐ°Ð±Ð¾ÑĤÐ°ÐµÑĤ\":136533,\"ãĤ·ãĥª\":136534,\"ãĤ·ãĥªãĥ¼ãĤº\":136535,\"Ġ×ĳ×Ķ×Ĺ×ľ×ĺ\":136536,\"×§×Ķ×Ļ×ľ×Ķ\":136537,\"ãĤ«ãĥ¡\":136538,\"ãĤ«ãĥ¡ãĥ©\":136539,\"ï¼¯\":136540,\"ĠìĤ¬ìĿ´\":136541,\"ĠkÃ¬\":136542,\"ĠthÆ°á»Ľc\":136543,\"Ø¶Ø¨Ø·\":136544,\"ÙĤØ¨ÙĪÙĦ\":136545,\"åĪ¥ãģ®\":136546,\"ĠparticuliÃ¨re\":136547,\"ĠÑģÐ²Ð¾ÐµÐ¼\":136548,\"Ġ×¢×¡×§\":136549,\"Ġ×¢×¡×§×Ļ×Ŀ\":136550,\"×ĳ×Ĺ×Ļ×¨×ķ×ª\":136551,\"×ĳ×Ļ×ł×ķ\":136552,\"à¸ĭà¸Ń\":136553,\"Ġ×¢×ķ×ĳ×¨\":136554,\"ãģłãģ£ãģŁãģ®ãģ§\":136555,\"Ä±ldÄ±ÄŁÄ±\":136556,\"ÙħØ¯Ø§Ø±\":136557,\"ÙħØ¯Ø§Ø±Ø³\":136558,\"ì£¼ìĭľ\":136559,\"à¸Ńà¸²à¸¨\":136560,\"à¸Ńà¸²à¸¨à¸±à¸¢\":136561,\"Ġtáº¥m\":136562,\"à¸ŀà¸´à¸Ī\":136563,\"à¸ŀà¸´à¸Īà¸²à¸£\":136564,\"à¸ŀà¸´à¸Īà¸²à¸£à¸ĵà¸²\":136565,\"ÑĤÐµÐ»ÑĮÐ½ÑĭÐµ\":136566,\"ÑģÐºÑĥÑİ\":136567,\"ÐľÐĺ\":136568,\"à¹Ģà¸ģà¸²\":136569,\"à¹Ģà¸ģà¸²à¸«à¸¥\":136570,\"à¹Ģà¸ģà¸²à¸«à¸¥à¸µ\":136571,\"×ĵ×Ĺ\":136572,\"à¹Ģà¸Ĭà¸´à¸ĩ\":136573,\"ĠØ¯ÙĤÙĬÙĤØ©\":136574,\"íķĻìĥĿ\":136575,\"Ġ×©×Ĳ×ľ×Ķ\":136576,\"ĠcontrÃ´le\":136577,\"ĠsituaÃ§Ã£o\":136578,\"à¸Ĥà¸Ńà¸ĩà¸ľà¸¹à¹ī\":136579,\"ÙĨØ·ÙĤ\":136580,\"ê³¼íķĻ\":136581,\"à¸«à¸¥à¸²à¸¢à¸Ħà¸Ļ\":136582,\"Ġnáº¯ng\":136583,\"ÙĤÙı\":136584,\"ì¡°ê±´\":136585,\"Ñķ\":136586,\"ãĥĥãģ¨\":136587,\"×ŀ×Ļ×ľ×Ķ\":136588,\"GrÃ¼n\":136589,\"×Ļ×Ļ×¢\":136590,\"×Ļ×Ļ×¢×ķ×¥\":136591,\"×ŀ×ł×Ľ\":136592,\"ëŃĲ\":136593,\"×ŀ×¢×ŀ×ĵ\":136594,\"à¸ªà¸³à¸Ļà¸±à¸ģ\":136595,\"Ø¬Ø¯Ø¯\":136596,\"à¸Ħà¸±à¸Ķ\":136597,\"Ġ×Ķ×ŀ×©×¤\":136598,\"Ġ×Ķ×ŀ×©×¤×Ĺ×Ķ\":136599,\"×ŀ×©×§×ľ\":136600,\"ÙĦÙı\":136601,\"Ġtytu\":136602,\"ĠtytuÅĤ\":136603,\"ÑĪÐµÐ¹\":136604,\"ĠìĿ¼ë¶Ģ\":136605,\"ÑĪÐµÐ½Ð¸Ðµ\":136606,\"ĠphÃ³ng\":136607,\"ĠìĹŃìĤ¬\":136608,\"ãĤ«ãĥ³\":136609,\"ĠtÃºi\":136610,\"ĠÙĨÙĪÙģ\":136611,\"ĠÙĨÙĪÙģÙħØ¨Ø±\":136612,\"grÃ¼n\":136613,\"ĠØ§ÙĦØ´ÙħØ§ÙĦ\":136614,\"ÅĽwiadc\":136615,\"ÅĽwiadczenie\":136616,\"×¢×¨×Ķ\":136617,\"Ġ×¢×ķ×ĳ\":136618,\"Ġ×¢×ķ×ĳ×ĵ×Ļ×Ŀ\":136619,\"×ĵ×ķ×Ĵ×ŀ×Ĳ\":136620,\"ä»Ĭãģ¯\":136621,\"ĠvÃ£o\":136622,\"ĠÐ¢ÐµÐ¼\":136623,\"ÑģÐ¸Ð»ÑĮ\":136624,\"Ġchá»£\":136625,\"ÙħØ±Ø§\":136626,\"ÙħØ±Ø§ÙĤØ¨\":136627,\"à¹Ħà¸¡à¹Īà¸£à¸¹à¹ī\":136628,\"ĠØ±Ø§Ø¦Ø¹\":136629,\"×Ĳ×ł×Ĺ×ł×ķ\":136630,\"à¸ªà¹Īà¸ĩà¹Ģà¸ªà¸£à¸´à¸¡\":136631,\"×¦×Ĺ\":136632,\"ĠìŀĪìĸ´ìĦľ\":136633,\"Ġkurulu\":136634,\"ĠkuruluÅŁ\":136635,\"ĠÃĸzellik\":136636,\"ĠÃĸzellikle\":136637,\"Ġ×ª×Ļ×§\":136638,\"ĠghÃ©\":136639,\"ĠsprzÄĻ\":136640,\"ĠsprzÄĻt\":136641,\"×¢×¨×ķ×ª\":136642,\"Ø±Ø§ØŃØ©\":136643,\"ãģ£ãģį\":136644,\"ãģ£ãģįãĤĬ\":136645,\"ĠìķĦëŀĺ\":136646,\"stituiÃ§Ã£o\":136647,\"ĠÐ´Ð¾Ð»Ð¶Ð½Ð¾\":136648,\"×Ķ×¨×©\":136649,\"×Ķ×¨×©×ŀ×Ķ\":136650,\"×Ķ×ľ×ļ\":136651,\"ãģ¡ãģª\":136652,\"ãģ¡ãģªãģ¿\":136653,\"ãģ¡ãģªãģ¿ãģ«\":136654,\"×¤×Ĺ×ĵ\":136655,\"ĠØ§ÙĦØ¬ÙħÙĬØ¹\":136656,\"×ĳ×¢×ľ×Ļ\":136657,\"ĠtrÃ¹ng\":136658,\"Ġ×¤×ª×Ĺ\":136659,\"×ŀ×ľ×Ĺ×ŀ×ª\":136660,\"ãĥĨãĥ¼ãĥ\":136661,\"ãĥĨãĥ¼ãĥŀ\":136662,\"ÙħØªØ§Ø¨\":136663,\"ÙħØªØ§Ø¨Ø¹Ø©\":136664,\"Ġëª¨ìĬµ\":136665,\"ÙĬØµ\":136666,\"åĲĪãģĨ\":136667,\"ĠYap\":136668,\"ĠYapÄ±\":136669,\"ĠÑģÐºÐ°Ð·Ð°ÑĤÑĮ\":136670,\"ëª°\":136671,\"à¸Ĺà¸µà¹Īà¸ªà¸³à¸Ħà¸±à¸į\":136672,\"ĠìĹĨìĬµëĭĪëĭ¤\":136673,\"Ġnháº¯c\":136674,\"ĠÃ¼lkeler\":136675,\"ĠÐ¼Ð½Ð¾Ð³Ð¸Ðµ\":136676,\"íķĺìħ¨\":136677,\"à¸¡à¸²à¸ģà¸Ĺà¸µà¹Īà¸ªà¸¸à¸Ķ\":136678,\"à¸ģà¹īà¸²\":136679,\"à¸ģà¹īà¸²à¸§\":136680,\"ĠÄ°yi\":136681,\"Ð»ÐµÐ¶\":136682,\"Ð»ÐµÐ¶Ð°\":136683,\"ãĤ¸ãĥ§\":136684,\"à¸Ĺà¸±à¸ŀ\":136685,\"Ø§ÙĪØ±\":136686,\"Ġ×Ĺ×ĳ×¨×Ļ\":136687,\"Ġ×ľ×©×Ŀ\":136688,\"ì²«\":136689,\"ĠTá»Ń\":136690,\"×ŀ×ķ×ł×Ļ\":136691,\"ÙĤÙĪØ¯\":136692,\"à¸ģà¸£à¸°à¹Ģà¸Ľ\":136693,\"à¸ģà¸£à¸°à¹Ģà¸Ľà¹ĭ\":136694,\"à¸ģà¸£à¸°à¹Ģà¸Ľà¹ĭà¸²\":136695,\"ĠÐ¿ÑĢÐ¾Ð±Ð»ÐµÐ¼Ñĭ\":136696,\"ĠaÃ§Ä±s\":136697,\"ĠaÃ§Ä±sÄ±ndan\":136698,\"Ġ×Ķ×ŀ×Ľ\":136699,\"ĠÙħØ¹Ø¸Ùħ\":136700,\"ÙĤÙĬØ§Ø³\":136701,\"ĠÐ¿ÑĢÐ¾Ð´Ð¾Ð»Ð¶\":136702,\"ĠÐ¿ÑĢÐ¾Ð´Ð¾Ð»Ð¶Ð°\":136703,\"ĠverdiÄŁi\":136704,\"ĠÐ¿ÑĢÐµÐ´Ð¼ÐµÑĤ\":136705,\"ãģĦãģ¾ãģĻãģĮ\":136706,\"ĠëĶ°ë¥¸\":136707,\"ĠØ§ÙĦÙĤÙĬØ§Ùħ\":136708,\"ĠØ¥ÙĦÙĬÙĩØ§\":136709,\"Ð¢ÐĲ\":136710,\"Ð¿Ð¾Ð·\":136711,\"ãĤ·ãĥ¥\":136712,\"ä¸ĬãģĮãĤĬ\":136713,\"à¹Ģà¸Ķà¸´à¸¡à¸ŀà¸±à¸Ļ\":136714,\"à¸ģà¸¸à¸¥\":136715,\"ØŃØ±ÙĬØ©\":136716,\"×§×ĳ×ķ×¦×ķ×ª\":136717,\"ë¯¿\":136718,\"ĠØ§ÙĦÙħÙĨØ§\":136719,\"ĠØ§ÙĦÙħÙĨØ§Ø·ÙĤ\":136720,\"ĠÐ²ÑĭÐ¿Ð¾Ð»\":136721,\"ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½Ñı\":136722,\"ãĥĭãĤ¢\":136723,\"Ġê²°êµŃ\":136724,\"×Ĺ×ķ×ŀ\":136725,\"×Ĺ×ķ×ŀ×¨×Ļ×Ŀ\":136726,\"ĠÐ£ÐºÑĢÐ°Ð¸Ð½Ñĭ\":136727,\"à¸«à¸Ńà¸¡\":136728,\"×¨×Ļ×¡\":136729,\"ĠÑħÐ¾ÑĤÐµÐ»\":136730,\"ĠÐ¾Ð±ÑĢÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñı\":136731,\"Ġkháº³ng\":136732,\"ĠmÆ°a\":136733,\"ĠgÃ¶rme\":136734,\"ĠgÃ¼Ã§lÃ¼\":136735,\"Ø³Ø¹Ùī\":136736,\"à¸¡à¸±à¹Īà¸Ļà¹ĥà¸Ī\":136737,\"íķĺê²łìĬµëĭĪëĭ¤\":136738,\"ĠÐ¿Ð¾Ð»Ñĥ\":136739,\"ĠfÃ¼nf\":136740,\"ãģ¨æĢĿãģ£ãģ¦ãģĦãģ¾ãģĻ\":136741,\"Ġê·¸ê²ĥìĿĢ\":136742,\"ĠdÃ¼ÅŁÃ¼nce\":136743,\"ìŀł\":136744,\"ĠHÆ°á»Ľng\":136745,\"ĠTiá»ĥu\":136746,\"ĠÃ§ift\":136747,\"ãģĳãģ°\":136748,\"à¸Īà¸Ļà¸ĸà¸¶à¸ĩ\":136749,\"à¸Ĺà¸³à¹Ħà¸Ķà¹ī\":136750,\"ĠìŀĲì²´\":136751,\"ĠdÃµ\":136752,\"ĠdÃµi\":136753,\"à¸Īà¸±à¸Ļ\":136754,\"à¸Īà¸±à¸Ļà¸Ĺ\":136755,\"à¸Īà¸±à¸Ļà¸Ĺà¸£à¹Į\":136756,\"eceÄŁini\":136757,\"×ł×ķ×¢×¨\":136758,\"ØºØ§Ø±\":136759,\"ĠØ§ÙĦØ£ÙħØ±ÙĬÙĥÙĬ\":136760,\"Ø¯Ø§Ø¹Ø´\":136761,\"ĠÐ±ÐµÐ·Ð¾Ð¿Ð°ÑģÐ½Ð¾ÑģÑĤÐ¸\":136762,\"ĠÐ±Ñİ\":136763,\"ĠÐ±ÑİÐ´Ð¶\":136764,\"ĠÐ±ÑİÐ´Ð¶ÐµÑĤ\":136765,\"ãĥĬãĤ¤\":136766,\"à¸ŀà¸ļà¸§à¹Īà¸²\":136767,\"daÄŁ\":136768,\"×Ĳ×ķ×¤×Ł\":136769,\"íĹĮ\":136770,\"ãĥĢãĤ¤ãĤ¨\":136771,\"ãĥĢãĤ¤ãĤ¨ãĥĥãĥĪ\":136772,\"ĠëĮĢíĨµ\":136773,\"ĠëĮĢíĨµëł¹\":136774,\"DÄ°\":136775,\"Ø£ØŃØ¯Ø§Ø«\":136776,\"ĠAÄŁ\":136777,\"ĠAÄŁust\":136778,\"ĠAÄŁustos\":136779,\"ØŃÙĦÙĪÙĦ\":136780,\"ĠwÅĽ\":136781,\"ĠwÅĽrÃ³d\":136782,\"ĠÑģÐ¾Ð¾ÑĤÐ²ÐµÑĤ\":136783,\"ĠÑģÐ¾Ð¾ÑĤÐ²ÐµÑĤÑģÑĤÐ²\":136784,\"ĠÑģÐ¾Ð¾ÑĤÐ²ÐµÑĤÑģÑĤÐ²Ð¸Ð¸\":136785,\"ĠLuáºŃt\":136786,\"Ġ×Ľ×ľ×¤×Ļ\":136787,\"ĠÐ²ÐµÑī\":136788,\"ĠÐ²ÐµÑīÐµÑģÑĤÐ²\":136789,\"×§×Ļ×¥\":136790,\"ĠØ¨ÙĩØ°Ø§\":136791,\"Ø¹Ø§Ø´\":136792,\"à¹Ģà¸Ľà¹ĩà¸Ļà¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ\":136793,\"Ð¢Ðķ\":136794,\"Ġ×ĳ×Ĳ×Ļ×ł×ĺ×¨×ł×ĺ\":136795,\"Ø³Ø¹Ø¯\":136796,\"Ġ×Ķ×ĺ×Ļ×¤×ķ×ľ\":136797,\"×¤×Ļ×¡\":136798,\"à¸ĩà¹Īà¸²à¸¢à¹Ĩ\":136799,\"ĠGerÃ¤t\":136800,\"×ľ×Ļ×ĵ×Ķ\":136801,\"ĠÑĢÐ¸ÑģÐº\":136802,\"×ľ×§×Ĺ\":136803,\"Ð½Ð½Ð°Ñı\":136804,\"×¨×Ļ×ĵ\":136805,\"Ð¿ÑĢÐ°ÐºÑĤÐ¸\":136806,\"Ð¿ÑĢÐ°ÐºÑĤÐ¸Ðº\":136807,\"à¸Ĥà¸±à¹īà¸Ļà¸ķà¸Ńà¸Ļ\":136808,\"à¸Ļà¹Īà¸²à¸£à¸±à¸ģ\":136809,\"larÄ±nÄ±zÄ±\":136810,\"à¸Ńà¸Ļà¸¸à¸įà¸²\":136811,\"à¸Ńà¸Ļà¸¸à¸įà¸²à¸ķ\":136812,\"ĠzdjÄĻcia\":136813,\"ĠbÃ¢y\":136814,\"ÑģÑĢ\":136815,\"ÑģÑĢÐ¾Ñĩ\":136816,\"ãĥĭãĥ³ãĤ°\":136817,\"ĠÃ¶ner\":136818,\"ĠÃ¶neri\":136819,\"ĠÐ½Ð¾Ð²ÑĭÑħ\":136820,\"Ø¯Ø¹ÙĪØ©\":136821,\"Ġgáº¯n\":136822,\"ĠØ§ÙĦÙĦØ¨ÙĨ\":136823,\"ĠØ§ÙĦÙĦØ¨ÙĨØ§ÙĨÙĬ\":136824,\"ãĥĨãĤ£ãĥ¼\":136825,\"ĠØµØŃÙĬØŃ\":136826,\"ÐµÐ¼ÑĭÑħ\":136827,\"çĸ²ãĤĮ\":136828,\"ĠÐ¿ÑĢÐ¾Ð¸Ñģ\":136829,\"ĠÐ¿ÑĢÐ¾Ð¸ÑģÑħÐ¾Ð´Ð¸ÑĤ\":136830,\"à¸ªà¸ķà¸´\":136831,\"ĠTáº¿t\":136832,\"Ġ×Ķ×ľ×ľ×ķ\":136833,\"à¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩà¸Ļà¸µà¹ī\":136834,\"×ŀ×ĳ×ł×Ķ\":136835,\"ĠconteÃºdo\":136836,\"ĠØ§Ø®Øª\":136837,\"ĠØ§Ø®ØªÙĬØ§Ø±\":136838,\"ÙħØ³ÙĦ\":136839,\"ÙħØ³ÙĦØ³ÙĦ\":136840,\"ëıĪ\":136841,\"Ġ×ľ×Ļ×ĵ\":136842,\"à¸ŀà¸´à¸ĺà¸µ\":136843,\"ĠÑģÐ¾Ð²Ñģ\":136844,\"ĠÑģÐ¾Ð²ÑģÐµÐ¼\":136845,\"ãģĮãģĤãĤĬãģ¾ãģĹãģŁ\":136846,\"ĠsÃ³ng\":136847,\"Ø¥ØµÙĦØ§ØŃ\":136848,\"ë§ģ\":136849,\"ÙģÙĬØ±\":136850,\"ĠJeÅ¼eli\":136851,\"ìłľëıĦ\":136852,\"dÅĤug\":136853,\"ìĥģìĿĦ\":136854,\"ĠcáºŃn\":136855,\"Ġhá»įp\":136856,\"Ø£Ø³Øª\":136857,\"Ø£Ø³ØªØ§Ø°\":136858,\"Ġ×ŀ×Ļ×©×Ķ\":136859,\"Ġ×ŀ×Ļ×©×Ķ×ķ\":136860,\"ĠdÃły\":136861,\"ĠchÃłng\":136862,\"ãģ¡ãĤĥãĤĵãģ¨\":136863,\"ĠÄĳÃ¡m\":136864,\"ĠswÃ³j\":136865,\"ĠpoderÃ¡\":136866,\"ĠÐ¾ÑĤÐ»Ð¸ÑĩÐ°\":136867,\"ĠpÃ©riode\":136868,\"Ã¼ndig\":136869,\"×ĺ×¢×Ł\":136870,\"ÑģÑĤÑĢÐ¾Ð¸ÑĤÐµÐ»ÑĮ\":136871,\"×¨×ª×Ļ\":136872,\"Ġ×Ļ×Ķ×Ļ×ķ\":136873,\"×ľ×¡\":136874,\"ĠØ§ÙĦÙħÙĨØ²ÙĦ\":136875,\"à¸Ļà¸´à¹īà¸§\":136876,\"Ð¸ÑĦÐ¸ÐºÐ°\":136877,\"Ð¸ÑĦÐ¸ÐºÐ°ÑĨÐ¸\":136878,\"ðŁĺī\":136879,\"ĠadÄ±na\":136880,\"ãĢĤãĢĤãĢĤ\":136881,\"×Ĳ×Ļ×Ł\":136882,\"×¡×Ļ×¨\":136883,\"ĠÙĬØ¹Ø¯\":136884,\"çŃĶãģĪ\":136885,\"Ø§ÙĦØ¬Ø²\":136886,\"Ø§ÙĦØ¬Ø²Ø§Ø¦Ø±\":136887,\"ÐµÐ½ÑĮÐº\":136888,\"à¸£à¸«\":136889,\"à¸£à¸«à¸±à¸ª\":136890,\"ĠTÃ¼rkÃ§e\":136891,\"ê¾¸\":136892,\"Ġ×Ļ×ķ×Ľ×ľ\":136893,\"Ġ×©×ķ×ł×Ķ\":136894,\"Ġ×ĳ×ŀ×¦×ĳ\":136895,\"ĠÐ´ÐµÐ¹ÑģÑĤÐ²Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\":136896,\"ĠØ¨Ø£ÙĨÙĩ\":136897,\"×ŀ×§×ĵ\":136898,\"Ġ×Ķ×©×§\":136899,\"Ø®ÙĬØ§Ø±Ø§Øª\":136900,\"ĠfÄ±\":136901,\"ĠfÄ±rs\":136902,\"ĠfÄ±rsat\":136903,\"ëĳĺ\":136904,\"ĠìĦľìļ¸\":136905,\"Ġ×Ķ×Ĵ×ķ×£\":136906,\"Ø±Ø¹Ø§\":136907,\"Ø±Ø¹Ø§ÙĬØ©\":136908,\"ĠKáº¿t\":136909,\"ÐºÑģÐ¸\":136910,\"ĠÑĥÑģÐ»ÑĥÐ³Ð¸\":136911,\"Ð½Ð¾ÑģÑĤÐµÐ¹\":136912,\"ìļ´ëıĻ\":136913,\"ĠÐ¾Ð±ÑĬÑı\":136914,\"ĠÐ¾Ð±ÑĬÑıÐ²Ð»\":136915,\"Ð½ÐµÐ¶\":136916,\"×Ķ×¤×ļ\":136917,\"Ġ×ĳ×¢×Ļ×ł×Ļ\":136918,\"ëĨĴ\":136919,\"ĠÐ¿ÑĢÐ¾ÑĨÐµÐ´\":136920,\"ĠÐ¿ÑĢÐ¾ÑĨÐµÐ´ÑĥÑĢ\":136921,\"Ġihtiy\":136922,\"ĠihtiyacÄ±\":136923,\"Ġë°Ķëŀį\":136924,\"Ġë°ĶëŀįëĭĪëĭ¤\":136925,\"à¸ģà¸¥à¸±à¸§\":136926,\"ĠÑģÐ»Ð¾Ð¶Ð½Ð¾\":136927,\"×§×Ļ×Ļ×ŀ×ª\":136928,\"ĠÄĲÃ¬nh\":136929,\"ĠÙħÙĦÙģ\":136930,\"Ġà¹Ĥà¸Ķà¸¢à¸¡à¸µ\":136931,\"ĠkatkÄ±\":136932,\"ØªØŃÙĪÙĬÙĦ\":136933,\"à¹Ħà¸ŀ\":136934,\"ĠHá»į\":136935,\"Ã±e\":136936,\"ĠÐ´Ð¾ÑħÐ¾Ð´\":136937,\"Ġthoáº£i\":136938,\"íķĺìĹ¬ìķ¼\":136939,\"ãĤ¹ãĥĿãĥ¼ãĥ\":136940,\"ãĤ¹ãĥĿãĥ¼ãĥĦ\":136941,\"ĠGÃ²n\":136942,\"ĠkÃ¨\":136943,\"ĠkÃ¨m\":136944,\"éĢ²ãĤģ\":136945,\"ãĤ¹ãĥ¼ãĥ\":136946,\"ãĤ¹ãĥ¼ãĥĳ\":136947,\"ãĤ¹ãĥ¼ãĥĳãĥ¼\":136948,\"ĠgiÃłu\":136949,\"ĠØ¥Ø¹Ø§Ø¯Ø©\":136950,\"Ġ×ľ×ķ×§\":136951,\"Ġ×ľ×ķ×§×Ĺ\":136952,\"ĠÑħÐ¾ÑĩÐµÑĤ\":136953,\"×ĺ×ľ×ķ×ķ\":136954,\"×ĺ×ľ×ķ×ķ×Ļ×ĸ\":136955,\"×ĺ×ľ×ķ×ķ×Ļ×ĸ×Ļ×Ķ\":136956,\"Ġthuyáº¿t\":136957,\"ãģĿãĤĮãģ§\":136958,\"ĠvardÄ±\":136959,\"à¹Ħà¸£à¹ī\":136960,\"Ø¹Ø¨Ø¯\":136961,\"ĠRepÃºblica\":136962,\"ãĥ¼ãĤ¿ãĥ¼\":136963,\"Ġ×ŀ×Ĳ×ķ×ª\":136964,\"à¹Ħà¸Ľà¹ģà¸¥à¹īà¸§\":136965,\"ĠyapÄ±lacak\":136966,\"ãĤ¹ãĤ¿ãĥ¼ãĥĪ\":136967,\"ãģ»ãģ¼\":136968,\"ĠkoÅŁ\":136969,\"ĠÐ¼Ð°ÑĤÐµÑĢÐ¸\":136970,\"ĠsiÃ¨cle\":136971,\"ĠØ§ÙĦÙħØ®ØªÙĦÙģ\":136972,\"ĠØ§ÙĦÙħØ®ØªÙĦÙģØ©\":136973,\"Ġ×ľ×§×¨×Ĳ\":136974,\"Ġ×ľ×§×¨×Ĳ×ª\":136975,\"Ġ×Ķ×¤×ķ×¢×ľ\":136976,\"ĠtÃ²a\":136977,\"ĠrÆ¡i\":136978,\"åĳ¨ãĤĬ\":136979,\"à¸Ŀà¸Ļ\":136980,\"jÅĽÄĩ\":136981,\"ĠìķĬìĿĦ\":136982,\"Ø§ÙĨØªÙĤØ§ÙĦ\":136983,\"ëĸł\":136984,\"Ð¸Ð²Ð°ÐµÑĤ\":136985,\"ãĥĪãĥ«\":136986,\"ĠØ§ÙĦÙģÙĦØ³Ø·ÙĬÙĨÙĬØ©\":136987,\"à¸ģà¸¥à¹Īà¸²à¸§à¸§à¹Īà¸²\":136988,\"Ø§ÙĥØª\":136989,\"ĠÃĸl\":136990,\"ĠÑĢÐµÑĪÐ¸\":136991,\"ĠÑĢÐµÑĪÐ¸Ð»\":136992,\"Ġ×ł×ķ×¡×¤×ķ×ª\":136993,\"Ġìłķì¹ĺ\":136994,\"Ð²Ð»ÐµÑĩÐµÐ½\":136995,\"ÙħØ±ØŃÙĦØ©\":136996,\"ĠcomeÃ§a\":136997,\"ĠyÄ±k\":136998,\"ìĤ´\":136999,\"à¸ĺà¸Ļà¸²\":137000,\"à¸ĺà¸Ļà¸²à¸Ħà¸²à¸£\":137001,\"à¸Ńà¸Ļà¸²\":137002,\"à¸Ńà¸Ļà¸²à¸Ħ\":137003,\"à¸Ńà¸Ļà¸²à¸Ħà¸ķ\":137004,\"ĠpequeÃ±a\":137005,\"ä»ķäºĭãĤĴ\":137006,\"ĠØ¨Ø°ÙĦÙĥ\":137007,\"ĠÐ½Ð¾Ð²Ð¾Ð³Ð¾\":137008,\"ãģĹãģ¦ãģĦãģªãģĦ\":137009,\"ĠØ§ÙĦÙħÙĬØ§Ùĩ\":137010,\"à¸ģà¹ĩà¹Ģà¸Ľà¹ĩà¸Ļ\":137011,\"ĠÐ¶ÑĥÑĢ\":137012,\"ĠÐ¶ÑĥÑĢÐ½Ð°Ð»\":137013,\"Ð²ÐµÑģ\":137014,\"Ø®ØªØ§Ø±\":137015,\"Ġë§¤ìļ°\":137016,\"ĠMÃ£\":137017,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð°ÑĤÑĭ\":137018,\"Ø¶Ø¹Ùģ\":137019,\"ĠØ§ÙĦÙģÙĥØ±\":137020,\"ãģ§ãģĻãģ®ãģ§\":137021,\"ãĥ¡ãĥ³ãĥĲãĥ¼\":137022,\"ĠÐºÑĢÑĥÐ³\":137023,\"ĠØ§ÙĦØ³ÙĦØ·Ø©\":137024,\"à¸Ħà¸£à¸±à¹īà¸ĩà¹ģà¸£à¸ģ\":137025,\"à¸ģà¸£à¸°à¸Ĺà¸£à¸§\":137026,\"à¸ģà¸£à¸°à¸Ĺà¸£à¸§à¸ĩ\":137027,\"ÑĨÐ¾Ð²\":137028,\"éķ·ãģĦ\":137029,\"å¤§ãģįãģĦ\":137030,\"ĠgeÃ§miÅŁ\":137031,\"ìĦ±ìĿ´\":137032,\"Ġ×¦×¨×Ļ×Ľ×Ķ\":137033,\"ĠÐ¼Ð¾Ñī\":137034,\"ĠÐ¼Ð¾ÑīÐ½\":137035,\"Ġ×§×Ļ×©\":137036,\"Ġ×§×Ļ×©×ķ×¨×Ļ×Ŀ\":137037,\"ĠNasÄ±l\":137038,\"Ð³ÑĢÐ°Ð½\":137039,\"Ġ×ŀ×ķ×¦×¨×Ļ×Ŀ\":137040,\"Ġ×ŀ×¡×ķ×Ĵ\":137041,\"ĠyÃ¼r\":137042,\"ĠyÃ¼rÃ¼t\":137043,\"Ġ×ľ×Ĺ×¦×ķ\":137044,\"×ķÖ¼\":137045,\"ĠìŀĪìĹĪëĭ¤\":137046,\"ĠterÃ¶r\":137047,\"ĠThÆ°Æ¡ng\":137048,\"ĠÙĪÙĬÙħ\":137049,\"ĠÙĪÙĬÙħÙĥÙĨ\":137050,\"Ø¬ÙĪÙĨ\":137051,\"ĠÙĪØºÙĬØ±ÙĩØ§\":137052,\"×ŀ×¤×ķ\":137053,\"×Ĵ×ķ×¨×ŀ×Ļ×Ŀ\":137054,\"×Ľ×ĳ×Ļ×©\":137055,\"ĠØ§ÙĦÙĦØº\":137056,\"ĠØ§ÙĦÙĦØºØ©\":137057,\"Ø´Ø±Ùĥ\":137058,\"ĠØ§ÙĦØ±Ø§Ø¨\":137059,\"ĠØ§ÙĦØ±Ø§Ø¨Ø¹\":137060,\"ĠÐ¿ÑĢÐµÐº\":137061,\"ĠÐ¿ÑĢÐµÐºÑĢÐ°Ñģ\":137062,\"ĠÐ¿ÑĢÐµÐºÑĢÐ°ÑģÐ½\":137063,\"ĠenergÃŃa\":137064,\"×§×ĵ×ŀ×Ļ\":137065,\"ãģıãģªãģ£ãģŁ\":137066,\"ĠÄĳá»©\":137067,\"ĠÄĳá»©a\":137068,\"Servi\":137069,\"ServiÃ§o\":137070,\"ĠkaldÄ±r\":137071,\"åĥįãģį\":137072,\"ĠÐ¾Ð´ÐµÐ¶\":137073,\"ĠÐ¾Ð´ÐµÐ¶Ð´\":137074,\"ë¬¼ìĿĦ\":137075,\"ãģĿãģĨãģ§\":137076,\"ãģĮãģĤãĤĮãģ°\":137077,\"ìĻķ\":137078,\"×¦×ĵ×§\":137079,\"ĠartÄ±r\":137080,\"Ġileti\":137081,\"ĠiletiÅŁim\":137082,\"ãĤĪãģĨãģ§\":137083,\"ãĥĪãĥ¼\":137084,\"ãĤ¢ãĥĭ\":137085,\"ãĤ¢ãĥĭãĥ¡\":137086,\"×ĺ×Ļ×Ļ×ľ\":137087,\"ãĥķãĥªãĥ¼\":137088,\"ãĥĿãĥ³\":137089,\"ÐŁÑĢÐ¾\":137090,\"ĠØ¹Ø§ÙĦÙĬØ©\":137091,\"ĠÃ¶ÄŁret\":137092,\"ĠÃ¶ÄŁretmen\":137093,\"ĠÐºÐ°ÑĩÐµÑģÑĤÐ²Ð°\":137094,\"Ġ×Ķ×ĺ×ĳ×¢\":137095,\"ĠÐ·Ð½Ð°Ñİ\":137096,\"ãģ¦ãģıãĤĭ\":137097,\"Ġmá»«ng\":137098,\"ÙħÙĪØª\":137099,\"×©×ķ×ŀ×¨\":137100,\"×Ĺ×ľ×ĳ\":137101,\"ĠwzglÄĻ\":137102,\"ĠwzglÄĻdu\":137103,\"ë²Īì§¸\":137104,\"Ġtá»ĵ\":137105,\"Ġtá»ĵn\":137106,\"ãĥ¯ãĥ¼ãĤ¯\":137107,\"ĠpoÅ¼ycz\":137108,\"ĠpoÅ¼yczk\":137109,\"×Ļ×ķ×¦×¨×Ļ×Ŀ\":137110,\"ÙĥØ±Ùħ\":137111,\"ĠÐ³Ð°ÑĢ\":137112,\"ĠÐ³Ð°ÑĢÐ°Ð½\":137113,\"ĠÐ³Ð°ÑĢÐ°Ð½ÑĤÐ¸\":137114,\"à¸¥à¹īà¸²à¸ĩ\":137115,\"ĠìĺģíĻĶ\":137116,\"×ĺ×Ļ×¡\":137117,\"Ġtháº»\":137118,\"ĠìŀĪëĭ¤ê³ł\":137119,\"Ø§ÙĦØªØ²\":137120,\"Ø§ÙĦØªØ²Ø§Ùħ\":137121,\"ĠÐ½Ð°ÑĪÐ¸\":137122,\"isÃ©e\":137123,\"ãģĵãĤĮãĤĴ\":137124,\"Ġmáº½\":137125,\"Ø¶ÙĦ\":137126,\"Ø¨ÙĪØª\":137127,\"Ġ×Ľ×Ľ×Ķ\":137128,\"há»Ł\":137129,\"ĠØ§ÙĦØ³ÙĪØ±ÙĬØ©\":137130,\"Ġ×ľ×¢×ķ×ŀ\":137131,\"Ġ×ľ×¢×ķ×ŀ×ª\":137132,\"ĠbaÅŁar\":137133,\"ĠbaÅŁarÄ±lÄ±\":137134,\"ÐµÑģÑĤÑĮ\":137135,\"à¸Ħà¸£à¸µ\":137136,\"à¸Ħà¸£à¸µà¸¡\":137137,\"ĠìłĦì²´\":137138,\"ĠØ³ÙĬÙĥÙĪÙĨ\":137139,\"Ġ×ŀ×ĵ×ķ×¢\":137140,\"ĠëķĮë¬¸ìĿ´ëĭ¤\":137141,\"Ġcá»©ng\":137142,\"gerÃ¤t\":137143,\"ĠÐ¼Ð¸ÑĢ\":137144,\"ĠÐ¼Ð¸ÑĢÐµ\":137145,\"ĠÙĥÙĬÙģÙĬØ©\":137146,\"Ġ×¤×¨×ĺ×Ļ×Ŀ\":137147,\"ĠgoÅĽci\":137148,\"Ð¸ÑĤÐµÑģÑĮ\":137149,\"ÑĥÑĪÐºÐ¸\":137150,\"Ø¤ÙħÙĨ\":137151,\"Ġ×Ĳ×Ľ×Ł\":137152,\"ĠØ§ÙĦØ±Ø¬ÙĦ\":137153,\"Ġlá»įc\":137154,\"à¹Ģà¸£à¸µà¸¢à¸ģà¸§à¹Īà¸²\":137155,\"ãģĵãģ®ãĤĪãģĨãģª\":137156,\"ë§Įíģ¼\":137157,\"ĠÐ¿ÐµÑĩ\":137158,\"ÙĪÙĦØ§Øª\":137159,\"ĠÃľye\":137160,\"liÄŁinde\":137161,\"à¸Ħà¸°à¹ģà¸Ļ\":137162,\"à¸Ħà¸°à¹ģà¸Ļà¸Ļ\":137163,\"ãĤĭãģĵãģ¨ãģ¯\":137164,\"à¸§à¸´à¹Ģà¸Ħà¸£\":137165,\"à¸§à¸´à¹Ģà¸Ħà¸£à¸²à¸°\":137166,\"à¸§à¸´à¹Ģà¸Ħà¸£à¸²à¸°à¸«à¹Į\":137167,\"ĠÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑģÑĤÐ¸\":137168,\"ĠØ§ÙĦÙĨØ³Ø§Ø¡\":137169,\"ãĥīãĥ©ãĥŀ\":137170,\"ĠgÃ¼c\":137171,\"ĠgÃ¼cÃ¼\":137172,\"ĠtÆ°á»Ŀng\":137173,\"ĠacompaÃ±a\":137174,\"ãĤ¤ãĥ©\":137175,\"×§×¦×ĳ\":137176,\"ĠYÃ¶\":137177,\"ĠYÃ¶net\":137178,\"ĠYÃ¶netim\":137179,\"à¸ªà¸±à¸¡à¸ľ\":137180,\"à¸ªà¸±à¸¡à¸ľà¸±à¸ª\":137181,\"à¸Ļà¸²à¸¡\":137182,\"ĠÄĳá»£i\":137183,\"à¹ģà¸«à¹Īà¸ĩà¸Ĭà¸²à¸ķà¸´\":137184,\"ãģĿãĤĮãģ§ãĤĤ\":137185,\"Ã¤tig\":137186,\"×ª×ķ×Ŀ\":137187,\"ĠbaÅŁlat\":137188,\"ĠÐ²ÑģÐµÐ¹\":137189,\"×ª×Ļ×§\":137190,\"×ª×Ļ×§×ķ×Ł\":137191,\"ĠNgÃ´\":137192,\"ĠGeschÃ¤\":137193,\"ĠGeschÃ¤fts\":137194,\"Ø£Ùħ\":137195,\"Ø£ÙħØ±Ø§Ø¶\":137196,\"à¹Ģà¸Ĺà¸Ħà¸Ļ\":137197,\"à¹Ģà¸Ĺà¸Ħà¸Ļà¸´\":137198,\"à¹Ģà¸Ĺà¸Ħà¸Ļà¸´à¸Ħ\":137199,\"ĠÐ¼ÐµÐ½ÑĮ\":137200,\"ĠÐ¼ÐµÐ½ÑĮÑĪÐµ\":137201,\"ĠÃ¶lÃ§\":137202,\"ĠÃ¶lÃ§Ã¼\":137203,\"ĠÙĬØ¬Ø¹ÙĦ\":137204,\"ĠÄĳá»¡\":137205,\"×©×Ļ×ľ\":137206,\"×©×Ļ×ľ×ķ×ĳ\":137207,\"ĠGrÃ¶ÃŁe\":137208,\"ĠÙĩØ§ØªÙģ\":137209,\"à¸£à¹īà¸²à¸Ļà¸Ńà¸²à¸«à¸²à¸£\":137210,\"×Ķ×ľ×Ļ×Ľ\":137211,\"×Ķ×ľ×Ļ×Ľ×Ļ\":137212,\"Ð¸ÑĢÑĥÑİÑī\":137213,\"èĭ¥ãģĦ\":137214,\"ĠÃĸzel\":137215,\"ãģĦãģŁãĤī\":137216,\"à¸Ħà¸³à¸ĸà¸²à¸¡\":137217,\"ĠzostaÅĤy\":137218,\"Ġ×Ķ×¡×Ļ×¤×ķ×¨\":137219,\"×Ķ×ķ×ľ\":137220,\"×Ķ×ķ×ľ×ļ\":137221,\"à¹Ģà¸Ĭà¹Īà¸Ļà¸ģà¸±à¸Ļ\":137222,\"à¹Ĥà¸Ĩ\":137223,\"à¹Ĥà¸Ĩà¸©\":137224,\"à¹Ĥà¸Ĩà¸©à¸ĵà¸²\":137225,\"×Ĳ×¨×¦×ķ×ª\":137226,\"×Ĵ×¨×¤×Ļ\":137227,\"ĠaoÃ»t\":137228,\"ĠÙĬØ±ÙĬØ¯\":137229,\"ØªÙĪØ¬\":137230,\"ØªÙĪØ¬ÙĬÙĩ\":137231,\"ĠÑįÑĤÐ°Ð¿\":137232,\"ãĤ¹ãĤ¿ãĥ³\":137233,\"ĠkrÃ³\":137234,\"ĠkrÃ³tk\":137235,\"ãĤĴä½¿ãģĨ\":137236,\"ì·¨\":137237,\"éĸ¢ãĤı\":137238,\"à¸Ķà¹īà¸§à¸¢à¸Ħà¸§à¸²à¸¡\":137239,\"à¸Ļà¸³à¹Ģà¸ªà¸Ļà¸Ń\":137240,\"ĠayrÄ±ca\":137241,\"à¸Īà¹īà¸²à¸ĩ\":137242,\"ĠÑĦÐ¾ÑĤÐ¾Ð³ÑĢÐ°ÑĦ\":137243,\"ĠÐ²ÐµÑĩ\":137244,\"ĠÐ²ÐµÑĩÐµÑĢ\":137245,\"åĩºãģĹãģŁ\":137246,\"ĠÐ¥Ð¾\":137247,\"Ġ×ŀ×¨×Ĵ×Ļ×©\":137248,\"à¹ĥà¸«à¹īà¹Ģà¸Ľà¹ĩà¸Ļ\":137249,\"ãĤĴçĽ®\":137250,\"ãĤĴçĽ®æĮĩ\":137251,\"×ľ×ŀ×Ļ×Ŀ\":137252,\"nÄħÅĤ\":137253,\"ĠÑģÑĤÐ°Ð½Ð´\":137254,\"ĠÑģÑĤÐ°Ð½Ð´Ð°ÑĢÑĤ\":137255,\"ĠSÃ¼d\":137256,\"ĠTÃ¢m\":137257,\"Ø§Ø®ØªØ¨Ø§Ø±\":137258,\"à¹Ģà¸ģà¸Ńà¸£à¹Į\":137259,\"ÙħØ³Ø±ØŃ\":137260,\"Ġbiá»ĩn\":137261,\"Ø¨Ùı\":137262,\"ĠØµØ§ÙĦ\":137263,\"ĠØµØ§ÙĦØŃ\":137264,\"ĠPhá»¥\":137265,\"íľ´\":137266,\"ãĥ¬ãĥĵãĥ¥ãĥ¼\":137267,\"Ġbá»¥ng\":137268,\"ĠrÃ©gime\":137269,\"ĠØ£Ø´ÙĩØ±\":137270,\"ĠÑĢÐ°Ð±Ð¾ÑĤÐ½Ð¸Ðº\":137271,\"à¸Ŀà¸±à¸Ļ\":137272,\"Ø§Ø¹ØªÙħ\":137273,\"Ø§Ø¹ØªÙħØ§Ø¯\":137274,\"ĠÐ·Ð°Ð¼ÐµÑĤ\":137275,\"ãģ¾ãģ£ãģ¦\":137276,\"Ġcháº·t\":137277,\"æĿ¥ãĤĭ\":137278,\"ĠØ§ÙĦÙĤÙĪØ§Øª\":137279,\"ãģ«åħ¥ãģ£ãģ¦\":137280,\"ØªØŃØ§ÙĦÙģ\":137281,\"ÙħØ²ÙĬØ¯\":137282,\"ĠÙĬØµÙĦ\":137283,\"ìĹ¼\":137284,\"à¹Ģà¸Ĭà¹ĩ\":137285,\"à¹Ģà¸Ĭà¹ĩà¸Ħ\":137286,\"Ġká»ĭ\":137287,\"Ġká»ĭp\":137288,\"ĠìķĦì§ģ\":137289,\"×Ĳ×ł×Ĵ\":137290,\"ĠÐ¾Ð±Ð»Ð°ÑģÑĤÑĮ\":137291,\"ĠpomocÄħ\":137292,\"Ġ×ķ×©×ľ\":137293,\"ëĵłì§Ģ\":137294,\"ĠGiÃ¡m\":137295,\"ĠStÃ¼ck\":137296,\"ĠchÃ¡y\":137297,\"ĠëĤĺìĺ¤\":137298,\"×©×Ļ×ĺ×ª\":137299,\"×ŀ×ĵ×¨\":137300,\"×ŀ×ĵ×¨×Ļ×ļ\":137301,\"ĠsÃ¼reÃ§\":137302,\"ÐºÐ²Ð°\":137303,\"×ĳ×ľ×Ļ×Ŀ\":137304,\"×Ķ×ª×Ļ\":137305,\"×Ķ×ª×Ļ×Ļ×Ĺ×¡\":137306,\"ÙĤØ¨Ø§ÙĦ\":137307,\"Ġ×¡×ķ×Ĵ\":137308,\"Ġ×¡×ķ×Ĵ×Ļ\":137309,\"ÑģÑĤÐ¾Ð»ÑĮ\":137310,\"ä½ķãĤĤ\":137311,\"×ĸ×Ľ×ķ×¨\":137312,\"è²·ãģĨ\":137313,\"å®īãģı\":137314,\"à¸Ħà¸£à¸±à¹īà¸ĩà¸Ļà¸µà¹ī\":137315,\"kÃ¶p\":137316,\"ĠÑģÐµÑĢÐ²Ð¸Ñģ\":137317,\"Ð¾ÑĩÐ½ÑĭÑħ\":137318,\"ê±°ëŀĺ\":137319,\"ØªØ£Ùĥ\":137320,\"ØªØ£ÙĥÙĬØ¯\":137321,\"×ĵ×ľ×§\":137322,\"ĠÐ¿Ð¾ÑĩÐµÐ¼\":137323,\"ĠÐ¿Ð¾ÑĩÐµÐ¼Ñĥ\":137324,\"Ð¿Ð¸ÑģÐ°ÑĤÑĮ\":137325,\"×ĳ×©×¨\":137326,\"ĠHÃłng\":137327,\"ĠTÃ¬m\":137328,\"Ġtrá»«\":137329,\"ãĤ»ãĥĥãĤ¯ãĤ¹\":137330,\"×ķ×ł×Ĵ\":137331,\"mÄ±zda\":137332,\"Ð¿ÑģÐ¸\":137333,\"ĠìŀĪê¸°\":137334,\"ĠrÃºt\":137335,\"Ø²Ø§ÙĨ\":137336,\"ØªÙĨÙĪØ¹\":137337,\"ÙħÙĤØ§\":137338,\"ÙħÙĤØ§ÙĪÙħØ©\":137339,\"Ġ×ľ×¦×ķ×¨×ļ\":137340,\"Ġ×ĳ×Ļ×¨×ķ×©×ľ×Ļ×Ŀ\":137341,\"ãĥ´ãĤ£\":137342,\"ebile\":137343,\"ebileceÄŁi\":137344,\"ãĥ¦ãĥ¼ãĤ\":137345,\"ãĥ¦ãĥ¼ãĤ¶\":137346,\"ãĥ¦ãĥ¼ãĤ¶ãĥ¼\":137347,\"ãĤĴä½ľãĤĭ\":137348,\"ÑģÐ¼ÐµÑĢ\":137349,\"ÑģÐ¼ÐµÑĢÑĤ\":137350,\"Ġì§ģ\":137351,\"Ġì§ģìłĳ\":137352,\"ĠÐŁÐ°ÑĢ\":137353,\"ØŃØ§Ø¶\":137354,\"ØŃØ§Ø¶Ø±\":137355,\"ÙħÙĥØ§Ùģ\":137356,\"ÙħÙĥØ§ÙģØŃØ©\":137357,\"à¸¥à¸´à¸Ļ\":137358,\"ãģ¦ãģįãģ¦\":137359,\"ÑĢÐ¾ÑģÐ»\":137360,\"ĠÄ°ÅŁte\":137361,\"ÙĤØµÙĬØ±\":137362,\"Ġ×ĳ×Ĵ×Ļ×ľ\":137363,\"Ġ×ŀ×ª×Ĳ×Ļ×Ŀ\":137364,\"Ġ×Ķ×Ĺ×ĵ\":137365,\"Ġ×Ķ×Ĺ×ĵ×©×Ķ\":137366,\"×¨×ķ×¢\":137367,\"ĠproduktÃ³w\":137368,\"ĠÙħØµØ¯Ø±\":137369,\"Ð½ÐµÑĨ\":137370,\"ĠØ§ÙĦØ¹ÙħÙĦØ§Øª\":137371,\"ĠÃ§Ä±kma\":137372,\"ĠØ¯Ø¨ÙĬ\":137373,\"×§×Ļ×Ł\":137374,\"×ª×Ĳ×¨\":137375,\"×ª×Ĳ×¨×Ļ×ļ\":137376,\"×ł×Ļ×Ļ×ĵ\":137377,\"ØµØ±Ø§Ø¹\":137378,\"lÃ¨ve\":137379,\"×¦×Ļ×¨\":137380,\"à¸Ķà¸±à¸Ļ\":137381,\"à¹ĥà¸«à¹īà¹Ħà¸Ķà¹ī\":137382,\"ãĤ¿ãĤ¤ãĥł\":137383,\"Ġgiáº£ng\":137384,\"Ð¡ÐŁ\":137385,\"ĠØ§ÙĦÙħØŃÙĦ\":137386,\"ĠØ§ÙĦÙħØŃÙĦÙĬØ©\":137387,\"ĠTáº¥t\":137388,\"×ľ×ķ×ĺ\":137389,\"há»ķ\":137390,\"ĠamÃ©ric\":137391,\"ĠamÃ©ricain\":137392,\"Ġ×ĳ×©×ľ×ĳ\":137393,\"Ġ×ľ×Ĳ×ķ×ŀ×Ļ\":137394,\"ĠpeÃ§a\":137395,\"ĠÑĢÐ°Ð·Ð½ÑĭÑħ\":137396,\"ãģĦãĤĭãģ¨\":137397,\"ãĥĩãĥ³\":137398,\"×¡×§×¨\":137399,\"Ġ×Ķ×ŀ×Ĺ×Ļ×¨\":137400,\"ãģ¨ãģĦãģĨãĤĤãģ®\":137401,\"Ø±ØªØ¨Ø·\":137402,\"ĠÐ¸ÑģÑĤÐ¾Ñĩ\":137403,\"ĠÐ¸ÑģÑĤÐ¾ÑĩÐ½Ð¸Ðº\":137404,\"à¸ªà¸¡à¸±à¸Ħà¸£à¸ªà¸¡à¸²à¸Ĭà¸´à¸ģ\":137405,\"Ġà¸Ĺà¸±à¹īà¸ĩ\":137406,\"Ġà¸Ĺà¸±à¹īà¸ĩà¸Ļà¸µà¹ī\":137407,\"ĠTáºŃp\":137408,\"ãģ£ãģ¦ãģĦãģĨ\":137409,\"ĠØ§ÙĦÙĪØµÙĪÙĦ\":137410,\"ĠdÃ©cada\":137411,\"ĠÐ¾ÑĦÐ¾ÑĢÐ¼\":137412,\"ĠÐ¾ÑĦÐ¾ÑĢÐ¼Ð»ÐµÐ½\":137413,\"à¸ªà¸³à¸«à¸£à¸±à¸ļà¸ģà¸²à¸£\":137414,\"ĠogÃ³ln\":137415,\"ãģĨãģ¡ãģ«\":137416,\"ĠvÃ¡rias\":137417,\"ãģĻãģİãĤĭ\":137418,\"ÙĪÙĩØ§\":137419,\"à¹Ĥà¸Ľà¸£à¸Ķ\":137420,\"ĠÐłÐ¾ÑģÑģÐ¸Ñı\":137421,\"äººãĢħ\":137422,\"ãģĹãģ¦ãģįãģŁ\":137423,\"ĠsÄ±rasÄ±nda\":137424,\"ĠngÃ´n\":137425,\"Ø³ÙĨØ©\":137426,\"ØªÙħØªØ¹\":137427,\"×ŀ×Ľ×ĳ×Ļ\":137428,\"Ġnháº¥n\":137429,\"×¢×ŀ×Ļ×ĵ\":137430,\"á»¨\":137431,\"Ð¶Ð¸ÑĤÑĮ\":137432,\"ãĤīãģĽ\":137433,\"grÃ¡f\":137434,\"grÃ¡fica\":137435,\"ĠÙĤÙĪÙĦ\":137436,\"ĠÙĤÙĪÙĦÙĩ\":137437,\"ëĭ¨ì²´\":137438,\"à¸«à¹īà¸²\":137439,\"à¸«à¹īà¸²à¸¡\":137440,\"ä½¿ãģ£ãģ¦\":137441,\"×ª×Ļ×ĳ\":137442,\"×ª×Ļ×ĳ×ª\":137443,\"iá»ĥu\":137444,\"à¹ģà¸Ĭà¸¡\":137445,\"à¹ģà¸Ĭà¸¡à¸Ľ\":137446,\"à¹ģà¸Ĭà¸¡à¸Ľà¹Į\":137447,\"áº¬\":137448,\"ĠëĤĺëĿ¼\":137449,\"ĠÙħØ¨Ø§Ø´Ø±Ø©\":137450,\"ĠtrÄĥm\":137451,\"Ø³ÙĥÙĪ\":137452,\"ĠØ§ÙĦØ°Ùī\":137453,\"ĠbiÃ§\":137454,\"ĠbiÃ§im\":137455,\"ØªØ±Ø§Ø¬Ø¹\":137456,\"ĠÐ¾Ð±ÐµÑģÐ¿\":137457,\"ĠÐ¾Ð±ÐµÑģÐ¿ÐµÑĩ\":137458,\"ĠÐ¾Ð±ÐµÑģÐ¿ÐµÑĩÐ¸Ð²Ð°\":137459,\"ĠÐ²Ð¾Ð·Ð´ÑĥÑħ\":137460,\"ÑĭÐ²Ð°ÑĤÑĮ\":137461,\"ÙĦØŃÙĤ\":137462,\"ĠMÃ¼dÃ¼\":137463,\"ĠMÃ¼dÃ¼rl\":137464,\"ĠMÃ¼dÃ¼rlÃ¼ÄŁÃ¼\":137465,\"ĠyaptÄ±r\":137466,\"Ġ×¤×¨×¡\":137467,\"Ġ×¤×¨×¡×ķ×Ŀ\":137468,\"Ø·ÙĪØ±\":137469,\"ÑģÑĤÐ²Ð¾Ð²Ð°ÑĤÑĮ\":137470,\"ìŀ¥ìĿĦ\":137471,\"à¸Ĺà¸µà¹Īà¸Ķà¸µà¸Ĺà¸µà¹Īà¸ªà¸¸à¸Ķ\":137472,\"à¸Ńà¸±à¸¥\":137473,\"ÑĢÑİ\":137474,\"ÙħØ³ØªÙĤØ¨ÙĦ\":137475,\"ÑģÐ»ÑĥÑĪ\":137476,\"ÑģÐ»ÑĥÑĪÐ°\":137477,\"èªįãĤģ\":137478,\"Ġ×ľ×Ļ×ŀ\":137479,\"Ġ×ľ×Ļ×ŀ×ķ×ĵ×Ļ\":137480,\"×ª×©×ķ×ĳ\":137481,\"×ª×©×ķ×ĳ×ķ×ª\":137482,\"ĠgerÃ§ekleÅŁtiril\":137483,\"ĠØ§ÙĦØ§ØªÙģØ§ÙĤ\":137484,\"ĠÑĥÑĢÐ¾Ð²Ð½Ðµ\":137485,\"ĠÑĤÑĢÐ°Ð²\":137486,\"Ġ×Ķ×ŀ×ķ×Ł\":137487,\"ØŃÙģØ§Ø¸\":137488,\"ĠÙħÙĲ\":137489,\"ĠÙħÙĲÙĨ\":137490,\"ĠÙħÙĲÙĨÙĴ\":137491,\"ĠdemÃ¡s\":137492,\"×ŀ×ķ×ĸ×Ļ×§×Ķ\":137493,\"×©×Ļ×Ĺ×Ķ\":137494,\"ĠbÃº\":137495,\"Ð°Ð»ÑĮÐ½ÑĭÐ¼\":137496,\"ãĤıãģŁ\":137497,\"ãĤıãģŁãģĹ\":137498,\"ĠØ§ÙĦÙħÙĪØ§Ø¯\":137499,\"×ª×Ľ×ł\":137500,\"×ª×Ľ×ł×ķ×Ł\":137501,\"ãĥŃãĥĥãĤ¯\":137502,\"hiáº¿u\":137503,\"ĠÑĥÐ¼Ðµ\":137504,\"ÙħØŃØ§ÙĪÙĦØ©\":137505,\"×Ĳ×ķ×©×¨\":137506,\"ĠÐºÐ¾Ð½ÐºÑĥÑĢ\":137507,\"ĠÐºÐ¾Ð½ÐºÑĥÑĢÑģ\":137508,\"Ġ×ŀ×ĳ×Ĺ\":137509,\"Ġ×ŀ×ĳ×Ĺ×Ļ×ł×ª\":137510,\"Ġanlam\":137511,\"ĠanlamÄ±\":137512,\"Ġliá»ĩt\":137513,\"ĠÐ²ÑħÐ¾Ð´\":137514,\"ĠHÃ¬nh\":137515,\"ĠÙĨÙĬ\":137516,\"ĠÙĨÙĬÙĪØ²\":137517,\"ãĤ¸ãĥ£ãĥ¼\":137518,\"×ĳ×Ļ×¥\":137519,\"ÑĤÐµÐ»ÑĮÐ½ÑĭÑħ\":137520,\"à¸Ĺà¸¸à¸ģà¸Ńà¸¢à¹Īà¸²à¸ĩ\":137521,\"ĠkiÅŁinin\":137522,\"Ø£ÙĥØ«Ø±\":137523,\"ĠÐ¸ÑģÑĤÐ¾ÑĢÐ¸Ð¸\":137524,\"Ġë³ĢíĻĶ\":137525,\"×¤×ľ×¡×ĺ\":137526,\"×¤×ľ×¡×ĺ×Ļ×ł×Ļ\":137527,\"ĠÑģÐµÑĤ\":137528,\"ĠÑģÐµÑĤÐ¸\":137529,\"dÄ±ÄŁÄ±mÄ±z\":137530,\"íķĺëıĦë¡Ŀ\":137531,\"×Ķ×¨\":137532,\"×Ķ×¨×ĳ×Ķ\":137533,\"ãģĻãĤĭãģĵãģ¨ãģ¯\":137534,\"Ġphiáº¿u\":137535,\"ØªØŃØ³ÙĬÙĨ\":137536,\"ĠÅĽrod\":137537,\"ĠÅĽrodow\":137538,\"ĠÅĽrodowisk\":137539,\"ĠÑĢÐ°ÑģÑħÐ¾Ð´\":137540,\"Ø¨Ø±ÙĬØ¯\":137541,\"ĠØ±ÙĬ\":137542,\"ĠØ±ÙĬØ§ÙĦ\":137543,\"Ġ×ķ×Ľ×ļ\":137544,\"ì§ĢìļĶ\":137545,\"×Ľ×ŀ×ķ\":137546,\"Ġ×¢×ľ×Ļ×Ķ×Ŀ\":137547,\"fÃŃcio\":137548,\"ĠkararÄ±\":137549,\"tÄ±ÄŁÄ±nÄ±\":137550,\"ĠÐ¡Ð¾Ð²\":137551,\"ĠÐ¡Ð¾Ð²ÐµÑĤ\":137552,\"ãģĬéĩĳãĤĴ\":137553,\"Ð¼ÐµÐ¶Ð´Ñĥ\":137554,\"Ð¼ÐµÐ¶Ð´ÑĥÐ½Ð°\":137555,\"Ð¼ÐµÐ¶Ð´ÑĥÐ½Ð°ÑĢÐ¾Ð´\":137556,\"Ð¼ÐµÐ¶Ð´ÑĥÐ½Ð°ÑĢÐ¾Ð´Ð½\":137557,\"Ġmá»Ŀi\":137558,\"ĠØ§ÙĦØ¥ÙĬØ±\":137559,\"ĠØ§ÙĦØ¥ÙĬØ±Ø§ÙĨÙĬ\":137560,\"ĠØ§ÙĦØ±ÙĪØ³ÙĬ\":137561,\"ØµÙĨØ¯\":137562,\"ØµÙĨØ¯ÙĪÙĤ\":137563,\"ĠØ§ÙĦØ¥ÙĨØªØ±ÙĨØª\":137564,\"Ġtáº¯m\":137565,\"ĠÑĤÐ°ÐºÐ¾Ð³Ð¾\":137566,\"Ġ×ĳ×ľ×ķ×Ĵ\":137567,\"ĠÃ¼crets\":137568,\"ĠÃ¼cretsiz\":137569,\"×Ĺ×ĸ×Ļ×¨\":137570,\"ìĸ´ìķ¼\":137571,\"ĠPháº§n\":137572,\"ï¼ľ\":137573,\"Ġ×ĺ×ĳ×¢\":137574,\"Ġ×ĺ×ĳ×¢×Ļ\":137575,\"×Ĳ×ŀ×Ĳ\":137576,\"Ø§ÙĤÙĦ\":137577,\"ĠcondiÃ§Ãµes\":137578,\"ÙĤØ§ØªÙĦ\":137579,\"ĠÑĢÐµÐ·ÑĥÐ»ÑĮÑĤÐ°ÑĤÐµ\":137580,\"ĠÑģÐ²Ð¾Ð¸Ð¼Ð¸\":137581,\"×¦×ĳ×Ļ×¢\":137582,\"gÃ©ni\":137583,\"Ġzes\":137584,\"Ġzespo\":137585,\"ĠzespoÅĤ\":137586,\"ÑĪÐ¸Ð²\":137587,\"Ġ×¤×¨×ĺ×Ļ×ķ×ª\":137588,\"ÙħØ³ØªØ´Ùģ\":137589,\"ÙħØ³ØªØ´ÙģÙī\":137590,\"Ø´Ø±Ø¹\":137591,\"ĠkoÅĽci\":137592,\"Ġ×Ķ×Ĳ×Ļ×ł×ĺ×¨×ł×ĺ\":137593,\"ĠÐ§ÐµÑĢ\":137594,\"Ð¿Ð¾ÑĩÑĤ\":137595,\"ĠactivitÃ©s\":137596,\"çŁ¥ãģ£ãģ¦\":137597,\"Ġ×ĳ×ĸ×Ķ\":137598,\"ĠyÃ¼zden\":137599,\"ãģªãĤĬãģ¾ãģĽãĤĵ\":137600,\"Ġíĺ¹\":137601,\"Ġíĺ¹ìĿĢ\":137602,\"Ġ×ŀ×©×ł×Ķ\":137603,\"ĠÐĴÐµÑĢ\":137604,\"Ġ×ĳ×Ĳ×ķ×ª×ķ\":137605,\"éĿ¢çĻ½\":137606,\"éĿ¢çĻ½ãģĦ\":137607,\"Ø´Ø±ØŃ\":137608,\"grÃ¼nde\":137609,\"ÙģØ´\":137610,\"ÙģØ´ÙĦ\":137611,\"ĠsÃ©jour\":137612,\"ë´Ĳ\":137613,\"ĠrÃ´le\":137614,\"Ø´Ø¹Ø§Ø±\":137615,\"ÐµÐ¼ÑĭÐµ\":137616,\"ĠØ§ÙĦØ¬Ø³Ùħ\":137617,\"Ð°Ð»ÑĮÐ½Ð¾Ðµ\":137618,\"Ġìĥģíĥľ\":137619,\"ï¼¤\":137620,\"ë¯Ģë¡ľ\":137621,\"ĠÙĨÙĤØ·\":137622,\"ĠÙĨÙĤØ·Ø©\":137623,\"ãģĿãģĨãģł\":137624,\"ãģĻãĤĭãģ®ãģĮ\":137625,\"à¸«à¸¹\":137626,\"Ġnhá»ĭ\":137627,\"ĠeconÃ³mica\":137628,\"×¡×ĺ×ķ×ĵ\":137629,\"×¡×ĺ×ķ×ĵ×ł×ĺ\":137630,\"à¸¡à¸µà¹Ĥà¸Ńà¸ģà¸²à¸ª\":137631,\"ĠgestÃ£o\":137632,\"à¸£à¸¹à¹īà¸§à¹Īà¸²\":137633,\"Ġloáº¡t\":137634,\"ĠØ§ÙĦÙħÙı\":137635,\"ĠØ§ÙĦØŃÙħÙĦ\":137636,\"ĠØ§ÙĦØ¹ÙħÙĦÙĬØ©\":137637,\"Ġê²ĥëıĦ\":137638,\"ĠÐľÐ¾ÑģÐºÐ²Ð°\":137639,\"×§×ĺ×ķ×¨\":137640,\"ĠÐ¿Ð¾Ð´ÑĢÐ¾Ð±\":137641,\"ĠÐ¿Ð¾Ð´ÑĢÐ¾Ð±Ð½\":137642,\"ĠlÆ°ng\":137643,\"ØªÙģØ³\":137644,\"ØªÙģØ³ÙĬØ±\":137645,\"ĠØ§ÙĦØ¨Ø¹\":137646,\"ĠØ§ÙĦØ¨Ø¹Ø¶\":137647,\"Ø¦Øª\":137648,\"ÐķÐĿ\":137649,\"ìĹ°êµ¬\":137650,\"à¹ĥà¸«à¹īà¸Ħà¸¸à¸ĵ\":137651,\"ãģĤãĤĬãģ¾ãģĹãģŁ\":137652,\"Ġbirka\":137653,\"ĠbirkaÃ§\":137654,\"ĠÄ°sl\":137655,\"ĠÄ°slam\":137656,\"çĹĽãģ¿\":137657,\"Ġháº£o\":137658,\"ĠÐ¼Ð°Ñı\":137659,\"ĠiÅŁÃ§i\":137660,\"×©×\":137661,\"×©×ģ\":137662,\"à¸ģà¸²à¸£à¹Ģà¸¡à¸·à¸Ńà¸ĩ\":137663,\"×ķ×Ķ×¨\":137664,\"ĠchÃ³\":137665,\"ëĨĢ\":137666,\"ĠyanlÄ±\":137667,\"ĠyanlÄ±ÅŁ\":137668,\"å¹¸ãģĽ\":137669,\"×Ĳ×¨×Ĵ×ķ×ł×Ļ\":137670,\"à¸Ńà¸²à¸Īà¸²à¸£\":137671,\"à¸Ńà¸²à¸Īà¸²à¸£à¸¢à¹Į\":137672,\"ĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ñİ\":137673,\"ÐĵÐŀ\":137674,\"×ł×Ĺ×©\":137675,\"ĠìķĮìķĦ\":137676,\"ĠÑħÐ°ÑĢÐ°ÐºÑĤÐµÑĢÐ¸ÑģÑĤ\":137677,\"ĠÑħÐ°ÑĢÐ°ÐºÑĤÐµÑĢÐ¸ÑģÑĤÐ¸Ðº\":137678,\"à¸Ħà¸¸à¸ĵà¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":137679,\"è¦ĭãģĪãĤĭ\":137680,\"à¸Ĭà¸±à¸Ķà¹Ģà¸Ī\":137681,\"à¸Ĭà¸±à¸Ķà¹Ģà¸Īà¸Ļ\":137682,\"ĠdziaÅĤal\":137683,\"ĠdziaÅĤalnoÅĽci\":137684,\"à¹Ĥà¸ŀà¸ªà¸ķà¹Į\":137685,\"ĠÐļÐ¾Ð»\":137686,\"ĠÙģÙĩÙĬ\":137687,\"Ġ×ŀ×¤×ł×Ļ\":137688,\"Ġ×Ķ×§×©×¨\":137689,\"ÙħØ±Ùĥ\":137690,\"ÙħØ±ÙĥØ²\":137691,\"ĠhoÃ¡\":137692,\"ĠÐ°Ð¿Ð¿\":137693,\"ĠÐ°Ð¿Ð¿Ð°ÑĢÐ°ÑĤ\":137694,\"Ġpami\":137695,\"ĠpamiÄĻ\":137696,\"ĠpamiÄĻta\":137697,\"ĠÃ§Ã¼nkÃ¼\":137698,\"×ĵ×ķ×Ł\":137699,\"ãģ¯ãģĵãģ¡ãĤī\":137700,\"ĠMÃł\":137701,\"ĠÙĬÙĤØ¯Ùħ\":137702,\"ĠÐ¿ÑĢÐµÐ·\":137703,\"ĠÐ¿ÑĢÐµÐ·Ð¸Ð´ÐµÐ½ÑĤ\":137704,\"à¸Ńà¸¸à¸ķ\":137705,\"à¸Ńà¸¸à¸ķà¸ªà¸²\":137706,\"à¸Ńà¸¸à¸ķà¸ªà¸²à¸«\":137707,\"à¸Ńà¸¸à¸ķà¸ªà¸²à¸«à¸ģà¸£à¸£à¸¡\":137708,\"ì§ĢìĽĲ\":137709,\"Ġ×Ĳ×¤×©×¨×ķ×ª\":137710,\"schÃ¼t\":137711,\"schÃ¼tz\":137712,\"ĠTiÃªn\":137713,\"ĠsayÄ±lÄ±\":137714,\"ĠÐ³ÑĢÑĥÐ¿Ð¿Ñĭ\":137715,\"Ð¾ÑĩÐ½ÑĭÐ¹\":137716,\"Ġ×ľ×¢×ŀ×ķ×ĵ\":137717,\"ĠwrzeÅĽ\":137718,\"ĠwrzeÅĽnia\":137719,\"ĠÄĲáº§u\":137720,\"à¹Ģà¸Ĥà¹īà¸²à¸£à¹Īà¸§à¸¡\":137721,\"nÄ±zda\":137722,\"Ø®ÙĬØµ\":137723,\"ĠgÃ¼nc\":137724,\"ĠgÃ¼ncel\":137725,\"ĠÙĦÙĩØ°Ùĩ\":137726,\"ĠÙĬØ¹ØªØ¨Ø±\":137727,\"lÃ©gi\":137728,\"ãĤıãģĭãĤĭ\":137729,\"Ġrá»«ng\":137730,\"Ø¸Ùĩ\":137731,\"Ø¸ÙĩÙĪØ±\":137732,\"Ġ×ŀ×ĳ×Ļ×Ł\":137733,\"Ġê¸°íĥĢ\":137734,\"åĪĩãĤĮ\":137735,\"lanmÄ±ÅŁ\":137736,\"à¸Ĺà¸µà¹Īà¸¡à¸µà¸Ħà¸§à¸²à¸¡\":137737,\"Ġhá»ģ\":137738,\"ØªÙĪØ¬Ùĩ\":137739,\"ĠØ§ÙĦØ¥Ø¯Ø§Ø±Ø©\":137740,\"ĠÃºtil\":137741,\"×¡×¤×ķ\":137742,\"à¸Ħà¸§à¸²à¸¡à¸£à¸±à¸ģ\":137743,\"à¹Ĥà¸®\":137744,\"ĠÐ¿Ð¾Ð»Ð¸ÑĤ\":137745,\"ĠÐ¿Ð¾Ð»Ð¸ÑĤÐ¸Ðº\":137746,\"ĠsatÄ±n\":137747,\"ĠÅŀimdi\":137748,\"×ŀ×ķ×¨×Ļ×Ŀ\":137749,\"ìķĺëĭ¤\":137750,\"×Ĺ×ķ×ķ\":137751,\"×Ĺ×ķ×ķ×Ļ×Ķ\":137752,\"à¸Ħà¸Ńà¸¡à¸ŀà¸´\":137753,\"à¸Ħà¸Ńà¸¡à¸ŀà¸´à¸§\":137754,\"à¸Ħà¸Ńà¸¡à¸ŀà¸´à¸§à¹Ģà¸ķà¸Ńà¸£à¹Į\":137755,\"ĠØ§Ø°Ø§\":137756,\"ØªØ®Ø§Ø°\":137757,\"ãĤ¨ãĥ«\":137758,\"ĠpossibilitÃ©\":137759,\"à¸¢à¸·à¸Ļà¸¢à¸±à¸Ļ\":137760,\"ĠÃ¼nivers\":137761,\"ĠÃ¼niversite\":137762,\"ĠØ§ÙĦØ¯ÙĪØ±ÙĬ\":137763,\"ĠìķĬëĬĶëĭ¤\":137764,\"ĠìĦľë¡ľ\":137765,\"ØŃØ§ÙĦ\":137766,\"Ġë¨\":137767,\"Ġë¨¼\":137768,\"Ġë¨¼ìłĢ\":137769,\"à¸Ĺà¸µà¹Īà¸ĸà¸¹à¸ģ\":137770,\"ì§ľ\":137771,\"ĠskÃ³ry\":137772,\"Ð»ÑĮÑĨ\":137773,\"à¹ĥà¸Ĭà¹īà¹Ģà¸§à¸¥à¸²\":137774,\"×ĳ×§×©×ª\":137775,\"ĠØ°ÙĪ\":137776,\"æĹ¥ãĢħ\":137777,\"ĠÐºÐ¾ÑĤÐ¾ÑĢÑĥÑİ\":137778,\"ĠÑĥÑĢÐ¾Ð²ÐµÐ½ÑĮ\":137779,\"ê¹¨\":137780,\"à¹Ħà¸Ĺ\":137781,\"ãĤµãĥĹãĥª\":137782,\"ãĤ¸ãĥ§ãĥ³\":137783,\"ãģĻãģ¹ãģį\":137784,\"ĠGÃ³r\":137785,\"ãĥĪãĤ¤\":137786,\"ãĥĪãĤ¤ãĥ¬\":137787,\"ĠyaÅŁama\":137788,\"Ġdá»ĭp\":137789,\"Ġbá»¯a\":137790,\"à¸ĭà¸¸\":137791,\"ĠÃ¶lÃ¼m\":137792,\"ãģ£ãģ¦ãģıãĤĭ\":137793,\"à¸ģà¸²à¸£à¸Ħà¹īà¸²\":137794,\"×©×¢×¨\":137795,\"ĠÑĤÐ¸Ð¿Ð°\":137796,\"ĠÐ³ÐµÑĢ\":137797,\"ĠÐ³ÐµÑĢÐ¾\":137798,\"×¨×§×¢\":137799,\"ĠuwaÅ¼\":137800,\"ĠuwaÅ¼a\":137801,\"×©×ŀ×Ł\":137802,\"ĠhastalÄ±k\":137803,\"ãĤıãĤĮãĤĭ\":137804,\"baÅŁÄ±\":137805,\"ÑĩÑĤÐ¾\":137806,\"Ġ×ĳ×ŀ×¨×Ľ×ĸ\":137807,\"Ġìļ°ë¦¬ìĿĺ\":137808,\"ĠÙĥØ§ÙĨÙĪØ§\":137809,\"ĠØ£Ø¨Ø±\":137810,\"ĠØ£Ø¨Ø±ÙĬÙĦ\":137811,\"ì¸µ\":137812,\"à¹Ħà¸Ĥà¹Ī\":137813,\"ĠÙĪÙĦÙĪ\":137814,\"à¸Ĺà¸±à¸§\":137815,\"à¸Ĺà¸±à¸§à¸£à¹Į\":137816,\"ĠÙĪØ£ÙĥØ¯\":137817,\"à¸Ĭà¸§à¸Ļ\":137818,\"×ľ×ķ×§\":137819,\"æį¨\":137820,\"æį¨ãģ¦\":137821,\"ĠÄ°Ã§in\":137822,\"pÃ©ri\":137823,\"Ġyal\":137824,\"ĠyalnÄ±z\":137825,\"ÑĮÑıÐ½\":137826,\"Ġgáº¯ng\":137827,\"à¸ģà¹ĩà¸¢à¸±à¸ĩ\":137828,\"ĠÐ£ÐºÑĢÐ°Ð¸Ð½\":137829,\"ĠÑģÐ°Ð¼Ð¸\":137830,\"ĠÐ¿ÑĢÐ¾Ð²ÐµÐ´ÐµÐ½\":137831,\"à¸ķà¸ģà¹ģà¸ķà¹Īà¸ĩ\":137832,\"ĠQuÃ¢n\":137833,\"Ã©paration\":137834,\"ĠbaÅŁÄ±nda\":137835,\"Ġznale\":137836,\"ĠznaleÅº\":137837,\"ĠznaleÅºÄĩ\":137838,\"ãĤ±ãĥ¼\":137839,\"ãĥİãĥ¼\":137840,\"à¸ĸà¸¹à¸ģà¸ķà¹īà¸Ńà¸ĩ\":137841,\"ëª¸\":137842,\"ĠëıĮ\":137843,\"ĠëıĮìķĦ\":137844,\"ĠSchÃ¼ler\":137845,\"ĠÐ¿Ð¾Ð´Ð³Ð¾ÑĤÐ¾Ð²\":137846,\"ĠÐ¿Ð¾Ð´Ð³Ð¾ÑĤÐ¾Ð²Ðº\":137847,\"Ø¹Ø±ÙĪ\":137848,\"Ø¹Ø±ÙĪØ¶\":137849,\"laÅŁtÄ±r\":137850,\"ĠÑģÐ¾ÑģÑĤÐ°Ð²Ð»ÑıÐµÑĤ\":137851,\"ĠÐ¿ÑĢÐ¾Ð¸Ð·Ð²Ð¾Ð´\":137852,\"ĠÐ¿ÑĢÐ¾Ð¸Ð·Ð²Ð¾Ð´ÑģÑĤÐ²Ð°\":137853,\"ĠÐ¾ÑģÐ½Ð¾Ð²Ðµ\":137854,\"ĠØ´ÙħØ§ÙĦ\":137855,\"à¸ģà¸£à¸µ\":137856,\"ĠgÃ¶rÃ¼ÅŁme\":137857,\"Ð¾ÑĩÐµÐº\":137858,\"Ġ×Ĺ×ĳ×¨×Ļ×Ŀ\":137859,\"ÙħØ®Ø§Ø·\":137860,\"ÙħØ®Ø§Ø·Ø±\":137861,\"ï¼Ń\":137862,\"×¨×¤×Ĳ\":137863,\"ĠMáº¹\":137864,\"à¸¢à¸Ńà¸¡à¸£à¸±à¸ļ\":137865,\"Ġváº¿t\":137866,\"Ø®Ø°\":137867,\"ĠØ§ÙĦØªØ·\":137868,\"ĠØ§ÙĦØªØ·Ø¨ÙĬÙĤ\":137869,\"à¸Ļà¸¶à¸ģ\":137870,\"Ġ×Ķ×Ľ×ł×¡×ª\":137871,\"ĠÐ¾Ð³ÑĢÐ°Ð½Ð¸\":137872,\"ĠÐ¾Ð³ÑĢÐ°Ð½Ð¸ÑĩÐµÐ½\":137873,\"ĠÃĩalÄ±ÅŁ\":137874,\"ĠØ§ÙĦÙħÙĨØªØ¯Ùī\":137875,\"à¸Īà¸³à¸Ļà¸§à¸Ļà¸¡à¸²à¸ģ\":137876,\"ĠÑĤÐ¾ÑĢÑĢ\":137877,\"ĠÑĤÐ¾ÑĢÑĢÐµÐ½ÑĤ\":137878,\"ĠìĤ´ìķĦ\":137879,\"à¸ŀà¸¥à¸±à¸ĩà¸ĩà¸²à¸Ļ\":137880,\"à¸Ĭà¸±à¸Ļ\":137881,\"ĠÐĲÐ½Ð´ÑĢ\":137882,\"ĠrÃ©alisÃ©\":137883,\"×ŀ×©×Ĳ\":137884,\"à¹ģà¸Ĭ\":137885,\"à¹ģà¸Ĭà¸£à¹Į\":137886,\"ĠÐ±Ð¾Ð³\":137887,\"à¸¡à¸²à¹ģà¸¥à¹īà¸§\":137888,\"ĠØ§ÙĦÙĨØ§Ø±\":137889,\"ĠolmadÄ±ÄŁÄ±\":137890,\"×ĵ×¢×Ķ\":137891,\"ĠÑĥÐ²ÐµÑĢ\":137892,\"ĠÑĥÐ²ÐµÑĢÐµÐ½\":137893,\"ãĤĭãĤĤãģ®\":137894,\"Ø£Ø¯\":137895,\"Ø£Ø¯ÙĪØ§Øª\":137896,\"Ġ×Ķ×ĸ×ķ×Ĵ\":137897,\"Ø¥Ø¹ÙĦØ§Ùħ\":137898,\"há»ı\":137899,\"ĠNÃ¤he\":137900,\"ĠÑĤÐµÑģÑĤ\":137901,\"Ġ×ŀ×ķ×Ľ×¨\":137902,\"Ġë¬¸ìłľê°Ģ\":137903,\"×ª×ķ×¦×Ĳ×Ķ\":137904,\"mÃ³\":137905,\"mÃ³vel\":137906,\"ĠØ§ÙĦØªØ¬Ø§Ø±Ø©\":137907,\"ĠÐ¼Ð½Ð¾Ð³Ð¸Ñħ\":137908,\"Ð¾Ð±ÑīÐ°\":137909,\"Ġ×¢×¡×§×Ļ\":137910,\"ĠEducaÃ§Ã£o\":137911,\"×§×©×Ļ×Ŀ\":137912,\"Ã©tabl\":137913,\"Ã©tablissement\":137914,\"ĠÐ´ÐµÐ»Ðµ\":137915,\"Ð¸ÑĢÑĥÐµÑĤÑģÑı\":137916,\"Ø¢Ø«Ø§Ø±\":137917,\"Ġ×Ķ×ŀ×¨×Ľ×ĸ×Ļ\":137918,\"ãĥĲãĥ«\":137919,\"ĠÐ²ÑģÑĤÑĢÐµÑĩ\":137920,\"ãģĴãĤĭ\":137921,\"ĠciÄħ\":137922,\"ĠciÄħgu\":137923,\"ÙĬØ³Øª\":137924,\"à¸łà¸²à¸§\":137925,\"à¸łà¸²à¸§à¸°\":137926,\"Ø£ÙħØ±\":137927,\"ĠÐ¾Ð¶Ð¸\":137928,\"ĠÐ¾Ð¶Ð¸Ð´Ð°\":137929,\"Ġá»§y\":137930,\"ãĥŀãĥ«\":137931,\"Ø±Ø§Ø³\":137932,\"Ð¾ÑĩÐ½Ð¾Ð¹\":137933,\"×ª×Ĵ×ķ×ĳ×ķ×ª\":137934,\"ØªØ¹Ø±ÙĬÙģ\":137935,\"ĠÑģÐ¾ÑĨÐ¸Ð°Ð»ÑĮÐ½Ð¾\":137936,\"ãĤĴéĸĭ\":137937,\"ĠÐ¸ÑģÑģÐ»ÐµÐ´Ð¾Ð²Ð°\":137938,\"ĠdÃº\":137939,\"ĠdÃºvida\":137940,\"ĠskÅĤ\":137941,\"ĠskÅĤada\":137942,\"ĠhÃ¤ufig\":137943,\"ĠÐ²ÑĭÐ±ÑĢ\":137944,\"ĠÐ²ÑĭÐ±ÑĢÐ°ÑĤÑĮ\":137945,\"ãģ®ãģ§ãģ¯ãģªãģĦãģĭ\":137946,\"ĠÑģÐ¸Ð»ÑĮÐ½Ð¾\":137947,\"ÑĤÐ²ÐµÑĢÐ¶Ð´ÐµÐ½\":137948,\"×¨×¤\":137949,\"×¨×¤×ķ×Ĳ×Ķ\":137950,\"æĢĿãģĦãģ¾ãģĻ\":137951,\"ØŃØ±Øµ\":137952,\"×©×ķ×ª×£\":137953,\"ÙħØ³Ø¬Ø¯\":137954,\"à¹Ĥà¸Ĭà¸§à¹Į\":137955,\"ÐµÐ¼ÑģÑı\":137956,\"Ð²ÑĪÐ¸Ðµ\":137957,\"ĠÐ¼Ð»\":137958,\"ĠÐ¼Ð»Ð½\":137959,\"Ġ×ľ×Ķ×ĳ×Ļ×Ĳ\":137960,\"ĠÙĬØªØ¹ÙĦÙĤ\":137961,\"à¸ķà¸¹à¹ī\":137962,\"ĠÐ¿ÑĢÐ°Ð·\":137963,\"ĠÐ¿ÑĢÐ°Ð·Ð´\":137964,\"ĠÐ¿ÑĢÐ°Ð·Ð´Ð½Ð¸Ðº\":137965,\"ĠÐ½ÐµÐ¼\":137966,\"ĠÐ½ÐµÐ¼Ð½Ð¾Ð³Ð¾\":137967,\"ĠsÃłng\":137968,\"ØªÙĨØ³ÙĬ\":137969,\"ØªÙĨØ³ÙĬÙĤ\":137970,\"Ġtá»Ŀ\":137971,\"ĠÐ¼ÐµÐ´Ð¸\":137972,\"ãģ«æĪ\":137973,\"ãģ«æĪ»\":137974,\"à¸Ħà¸§à¹īà¸²\":137975,\"ãģĭãģĳãĤĭ\":137976,\"×ĳ×ľ×ķ×ª\":137977,\"ĠÑįÐºÑģÐ¿\":137978,\"ĠÑįÐºÑģÐ¿ÐµÑĢÑĤ\":137979,\"ĠÐ´ÐµÐ²ÑĥÑĪ\":137980,\"ĠÐ´ÐµÐ²ÑĥÑĪÐº\":137981,\"ĠØŃØµ\":137982,\"ÙĨØ´Ø£\":137983,\"ãģĮãģĤãĤĭãģ®ãģ§\":137984,\"ĠØªØ±Ø§Ùħ\":137985,\"ĠØªØ±Ø§ÙħØ¨\":137986,\"Ø£Ø³ÙĪØ§ÙĤ\":137987,\"Ġ×ľ×¤×ł×ķ×ª\":137988,\"ĠØ§ï»·\":137989,\"ãģ«ãģı\":137990,\"ãģ«ãģıãģĦ\":137991,\"ĠØ£Ø¹ÙĦÙī\":137992,\"Ġ×ľ×Ķ×ŀ×©×Ļ×ļ\":137993,\"rÃ¤u\":137994,\"×©×ŀ×Ļ×Ŀ\":137995,\"åĪĨãģĳ\":137996,\"ãģĻãģ§\":137997,\"ãģĻãģ§ãģ«\":137998,\"×Ķ×ľ×Ľ×Ķ\":137999,\"×Ĺ×ľ×Ļ×£\":138000,\"Ġì±ħ\":138001,\"Ġì±ħìŀĦ\":138002,\"à¹Ģà¸Īà¸£à¸´\":138003,\"à¹Ģà¸Īà¸£à¸´à¸į\":138004,\"éģĬãģ³\":138005,\"Ø¬Ø³Ø¯\":138006,\"à¸ªà¸²à¸ĺ\":138007,\"à¸ªà¸²à¸ĺà¸²à¸£\":138008,\"à¸ªà¸²à¸ĺà¸²à¸£à¸ĵ\":138009,\"ĠbasÄ±n\":138010,\"ÑĢÐ°Ð³\":138011,\"Ð³Ð°Ð´\":138012,\"ĠhoÅŁ\":138013,\"íķµ\":138014,\"×ĳ×Ĺ×Ļ×¨×Ķ\":138015,\"×ŀ×¡×ļ\":138016,\"ĠìłľíĴĪ\":138017,\"ØªÙħÙĪÙĬÙĦ\":138018,\"ĠLÆ°u\":138019,\"ë¡ľë¶ĢíĦ°\":138020,\"ĠÐ¿Ð¾Ð±\":138021,\"ĠÐ¿Ð¾Ð±ÐµÐ´\":138022,\"ÙħÙĨØ°\":138023,\"å¸¸ãģ«\":138024,\"ÙĤØ³\":138025,\"ĠØ§ÙĦÙħØµØ¯Ø±\":138026,\"ĠÙĪØ§ÙĦØ§Ø³Øª\":138027,\"Ġkháº¯p\":138028,\"ĠØ§ÙĦØ¬Ø§ÙĨØ¨\":138029,\"Ġnguyá»ĩn\":138030,\"éĸĵéģķãģĦ\":138031,\"ĠÑģÑĤÑĢÐ°\":138032,\"ĠÑģÑĤÑĢÐ°Ñħ\":138033,\"ĠÑģÑĤÑĢÐ°ÑħÐ¾Ð²\":138034,\"à¸£à¸µà¸ļ\":138035,\"ĠxÆ°Æ¡ng\":138036,\"Ġì°¾\":138037,\"Ġì°¾ìķĦ\":138038,\"Ġngáº¡i\":138039,\"Ð³Ð°Ð»\":138040,\"à¸ĭà¸µà¹Ī\":138041,\"Ġ×ĳ×¤×Ļ×Ļ×¡×ĳ×ķ×§\":138042,\"Ð¦ÐµÐ½ÑĤÑĢ\":138043,\"ĠavaliaÃ§Ã£o\":138044,\"ĠeconÃ³mico\":138045,\"×ĸ×Ł\":138046,\"ĠÐľÐ°Ðº\":138047,\"ĠinterÃ©s\":138048,\"à¸ģà¸¥à¸´à¹Īà¸Ļ\":138049,\"ÑģÑĤÑĮÑİ\":138050,\"ĠÄĳÆ°Æ¡ng\":138051,\"å¼·ãģı\":138052,\"ĠKhÃ¡ch\":138053,\"à¹Ģà¸Ļà¸·à¹īà¸Ńà¸«à¸²\":138054,\"ĠYazÄ±\":138055,\"è²·ãģ£ãģ¦\":138056,\"ÐłÐķ\":138057,\"à¹Ģà¸ŀà¸´à¹Īà¸¡à¸Ĥà¸¶à¹īà¸Ļ\":138058,\"à¸ªà¸¡à¸ļà¸¹\":138059,\"à¸ªà¸¡à¸ļà¸¹à¸£à¸ĵà¹Į\":138060,\"ĠÐ¼Ð¸ÑĢÐ¾Ð²\":138061,\"×Ĵ×ł×Ļ×Ŀ\":138062,\"ĠÄĳá»©c\":138063,\"à¸Ńà¸²à¸£à¹Į\":138064,\"ØµØ§Øµ\":138065,\"ãģĬãĤĪ\":138066,\"ãģĬãĤĪãģ³\":138067,\"ÃªÌī\":138068,\"ĠØ§ÙĦÙħØ¤ØªÙħØ±\":138069,\"ĠØ§ÙĦÙħØ±ØŃÙĦØ©\":138070,\"à¸ªà¸Ńà¸ļà¸ĸà¸²à¸¡\":138071,\"Ġà¸Īà¸²à¸ģà¸Ļà¸±à¹īà¸Ļ\":138072,\"ĠØªØ¹Ø¯\":138073,\"ãģĿãģ®ãģŁãĤģ\":138074,\"ĠkhÃ¡ng\":138075,\"à¸Ļà¸´à¸Ķ\":138076,\"ãĥĬãĥ³\":138077,\"ëĦ¤ìļĶ\":138078,\"ĠØ§ÙĦØ§ØŃØª\":138079,\"ĠØ§ÙĦØ§ØŃØªÙĦØ§ÙĦ\":138080,\"ìļķ\":138081,\"ĠÐ¼Ð¾Ð´ÐµÐ»Ð¸\":138082,\"ĠÐ¿ÑĢÐ¾ÑĨÐµÐ½ÑĤ\":138083,\"à¸ŀà¸§à¸ģà¹Ģà¸£à¸²\":138084,\"Ġ×Ķ×¦×ĵ\":138085,\"Ġ×Ķ×¦×ĵ×ĵ×Ļ×Ŀ\":138086,\"stÃ¤nde\":138087,\"×ł×Ĵ×¨\":138088,\"Ġdotyc\":138089,\"ĠdotyczÄħ\":138090,\"ĠdotyczÄħce\":138091,\"ĠÅĽwiÄĻt\":138092,\"×ŀ×¨×Ķ\":138093,\"ãģĻãģĶãģĦ\":138094,\"ãĥĩãĤ£ãĥ³ãĤ°\":138095,\"à¸ģà¸²à¸£à¸ªà¸£à¹īà¸²à¸ĩ\":138096,\"ëĤ¬\":138097,\"Ġì°¸ìĹ¬\":138098,\"ÑģÑħ\":138099,\"ÑģÑħÐµÐ¼\":138100,\"ÙħÙĪØ³\":138101,\"Ġnáº¥u\":138102,\"Ġ×ľ×ŀ×¢×ľ×Ķ\":138103,\"à¹Ģà¸Ľà¹īà¸²\":138104,\"à¹Ģà¸Ľà¹īà¸²à¸«à¸¡à¸²à¸¢\":138105,\"ĠmÃ¹i\":138106,\"Ø§Ø¦Ø²\":138107,\"íĽĪ\":138108,\"×Ĺ×ĳ×ķ×¨×Ķ\":138109,\"à¸ľà¸¹à¹īà¹ĥà¸Ĭà¹ī\":138110,\"ĠpaÅº\":138111,\"ĠpaÅºdzi\":138112,\"ĠpaÅºdziern\":138113,\"ĠpaÅºdziernika\":138114,\"à¸¥à¸ĩà¹Ħà¸Ľ\":138115,\"ÙĤØ§Ø¹\":138116,\"ĠcháºŃm\":138117,\"ĠÃ¶zellikleri\":138118,\"ĠÄĲo\":138119,\"ĠÄĲoÃłn\":138120,\"Ð¶ÐµÐ½Ð¸Ðµ\":138121,\"Ġháº³\":138122,\"Ġháº³n\":138123,\"ĠaÅŁk\":138124,\"ï½į\":138125,\"ãĥĳãĤ¹\":138126,\"×Ķ×ķ×¨×Ĳ×ķ×ª\":138127,\"ĠÅ»\":138128,\"ĠÅ»y\":138129,\"×ŀ×ĸ×ľ\":138130,\"ĠÑĥÐºÑĢÐ°\":138131,\"ĠÑĥÐºÑĢÐ°Ð¸Ð½\":138132,\"à¹Ģà¸Ĭà¸´\":138133,\"à¹Ģà¸Ĭà¸´à¸į\":138134,\"ÐłÐĺ\":138135,\"ĠzwiÄħzku\":138136,\"×Ķ×Ĺ×ľ×ĺ×ª\":138137,\"ãĤĵãģ§ãģĻãĤĪãģŃ\":138138,\"ãģ¦ãģĬãĤĬ\":138139,\"Ð»Ð¾Ð¶Ð¸ÑĤÑĮ\":138140,\"×ŀ×ķ×ł×Ļ×Ŀ\":138141,\"à¸®à¸´\":138142,\"ì°¬\":138143,\"ĠØ§ÙĦÙħØ´ØªØ±Ùĥ\":138144,\"ĠdÃ¼ÅŁÃ¼k\":138145,\"Ð°Ð³ÐµÐ½ÑĤ\":138146,\"ĠØ§ÙĦØ£Ø³Ø¨ÙĪØ¹\":138147,\"ĠÙĤØ±ÙĬØ¨\":138148,\"Ð¸Ð½Ð´\":138149,\"Ð¸Ð½Ð´Ð¸Ð²\":138150,\"Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´\":138151,\"Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´Ñĥ\":138152,\"Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑĥÐ°Ð»ÑĮÐ½\":138153,\"fÃ¶rder\":138154,\"ĠseÃ§en\":138155,\"ĠseÃ§enek\":138156,\"ĠÃ©tant\":138157,\"ĠÐ»ÑİÐ±Ð¸Ð¼\":138158,\"ÐºÐ°Ð·ÑĭÐ²Ð°ÐµÑĤ\":138159,\"à¸§à¸´à¸Ļ\":138160,\"Ġ×Ķ×ĳ×Ĳ×Ļ×Ŀ\":138161,\"ĠÐ´Ð¾Ð²\":138162,\"ĠÐ´Ð¾Ð²Ð¾Ð»ÑĮ\":138163,\"ĠÐ´Ð¾Ð²Ð¾Ð»ÑĮÐ½Ð¾\":138164,\"×¢×ĵ×Ļ×£\":138165,\"Ġokre\":138166,\"ĠokreÅĽ\":138167,\"ĠokreÅĽlon\":138168,\"ĠØªØ±ÙĬØ¯\":138169,\"à¹Ģà¸¡à¸·à¹Īà¸Ńà¸§à¸±à¸Ļà¸Ĺà¸µà¹Ī\":138170,\"ãĤĪãģĭãģ£ãģŁ\":138171,\"Cumh\":138172,\"Cumhur\":138173,\"Cumhurba\":138174,\"CumhurbaÅŁ\":138175,\"CumhurbaÅŁkan\":138176,\"CumhurbaÅŁkanÄ±\":138177,\"Ġná»£\":138178,\"à¸ľà¸¹à¹īà¹Ģà¸¥à¹Īà¸Ļ\":138179,\"ĠcomplÃ¨te\":138180,\"à¹Ģà¸ŀà¸¨\":138181,\"Ø¯ÙĲ\":138182,\"ĠdÃ¼z\":138183,\"ĠdÃ¼zey\":138184,\"ãģ§ãģĤãĤĭãģĵãģ¨\":138185,\"extÃ©rieur\":138186,\"×³\":138187,\"ĠinformaÃ§Ã£o\":138188,\"ãĤ¯ãĥªãĥĭãĥĥãĤ¯\":138189,\"ĠPubli\":138190,\"ĠPubliÃ©\":138191,\"×¨×ķ×ĵ\":138192,\"à¸Ħà¸§à¸²à¸¡à¸Ľà¸¥à¸Ńà¸Ķà¸łà¸±à¸¢\":138193,\"ĠØ£ÙĬØ¶\":138194,\"ĠØ£ÙĬØ¶ÙĭØ§\":138195,\"ØªØ³Ø¨Ø¨\":138196,\"ãģ¤ãĤĤãĤĬ\":138197,\"Ð¸Ð·Ð¼Ð°\":138198,\"à¸Ĥà¸¶à¹īà¸Ļà¹Ħà¸Ľ\":138199,\"ÙĥÙĲ\":138200,\"ÙĦÙĪÙħ\":138201,\"Ġ×©×¦×¨\":138202,\"Ġ×©×¦×¨×Ļ×ļ\":138203,\"ãģ¯ãĤĤãģ¡ãĤįãĤĵ\":138204,\"ĠÐºÐ°Ð½\":138205,\"ĠÐºÐ°Ð½Ð°Ð»\":138206,\"ãģ«ãģªãģ£ãģ¦ãģĦãģ¾ãģĻ\":138207,\"ĠØ§ÙĦØ£ÙĥØ«Ø±\":138208,\"ØªØ§ØŃ\":138209,\"ÙĨØªÙĩ\":138210,\"ÙĨØªÙĩØ§Ø¡\":138211,\"Ø§ÙĪÙĬØ©\":138212,\"ĠBugÃ¼n\":138213,\"Ð½ÑģÐºÐ¾Ð³Ð¾\":138214,\"à¸Ķà¹Īà¸§à¸Ļ\":138215,\"Ã©volution\":138216,\"ãģ£ãģ¦ãģĦãģ¾ãģĹãģŁ\":138217,\"ãĤħ\":138218,\"ĠVÆ°Æ¡ng\":138219,\"à¸łà¸²à¸ŀà¸¢\":138220,\"à¸łà¸²à¸ŀà¸¢à¸Ļ\":138221,\"à¸łà¸²à¸ŀà¸¢à¸Ļà¸ķà¸£à¹Į\":138222,\"Ġ×Ķ×¦×ľ×Ļ×Ĺ\":138223,\"ĠØ§ÙĦØ¥Ø³ÙĦØ§ÙħÙĬ\":138224,\"ÙĦÙĬØ¨\":138225,\"ĠediÃ§Ã£o\":138226,\"ÑģÑĤÑĢÐµÐ»\":138227,\"ĠkhÃºc\":138228,\"ÙĨÙħÙĪØ°\":138229,\"ÙĨÙħÙĪØ°Ø¬\":138230,\"×ľ×¦×Ķ\":138231,\"ÑģÑĤÐ°Ð²Ð¸Ð»\":138232,\"à¸ĸà¸²\":138233,\"à¸ªà¸£à¹īà¸²à¸ĩà¸Ħà¸§à¸²à¸¡\":138234,\"ãģĦãģ£ãģ±\":138235,\"ãģĦãģ£ãģ±ãģĦ\":138236,\"ÑģÑĤÐ°Ð²Ð»ÐµÐ½\":138237,\"ĠØ§ÙĦÙĤØ¯Ø³\":138238,\"ĠngÆ°á»£c\":138239,\"Ø¨Ø®\":138240,\"à¸ªà¸«à¸£\":138241,\"à¸ªà¸«à¸£à¸±\":138242,\"à¸ªà¸«à¸£à¸±à¸Ĳ\":138243,\"ĠØ£Øº\":138244,\"ĠØ£ØºØ³Ø·\":138245,\"ĠØ£ØºØ³Ø·Ø³\":138246,\"ãģĨãģ¾\":138247,\"ãģĨãģ¾ãģı\":138248,\"ĠêµŃìłľ\":138249,\"ØŃØ¶Ø§Ø±\":138250,\"Ġdá»«ng\":138251,\"æĬ¼ãģĹ\":138252,\"ØªÙĪØ§\":138253,\"ØªÙĪØ§Ø¬Ø¯\":138254,\"×©×ŀ×Ĺ×Ķ\":138255,\"ãģıãĤĵ\":138256,\"Ġ×ĳ×¢×¦\":138257,\"Ġ×ĳ×¢×¦×Ŀ\":138258,\"×ŀ×ł×Ļ×ķ×ª\":138259,\"×ķ×Ļ×ĵ\":138260,\"×ķ×Ļ×ĵ×Ĳ×ķ\":138261,\"à¸Ĭà¸´à¸ĩ\":138262,\"ĠpracÄĻ\":138263,\"ĠÐ·Ð°ÑĤ\":138264,\"ĠÐ·Ð°ÑĤÐµÐ¼\":138265,\"ĠìŀĲìľł\":138266,\"Ġì¤Ģ\":138267,\"Ġì¤Ģë¹Ħ\":138268,\"ĠbáºŃ\":138269,\"ĠbáºŃc\":138270,\"Ġ×Ķ×ŀ×¦×ĳ\":138271,\"ĠÙĤÙĬÙħØ©\":138272,\"à¹Ģà¸Ńà¹Ģà¸Ĭ\":138273,\"à¹Ģà¸Ńà¹Ģà¸Ĭà¸µà¸¢\":138274,\"ĠperchÃ¨\":138275,\"ĠØ§ÙĦØ¹Ø³ÙĥØ±\":138276,\"ĠØ§ÙĦØ¹Ø³ÙĥØ±ÙĬØ©\":138277,\"Ø¬ÙĬØ¨\":138278,\"ëŀµ\":138279,\"ÙħÙĩØ±\":138280,\"ÙħÙĩØ±Ø¬Ø§ÙĨ\":138281,\"ÙħØ±Ø§Ùĥ\":138282,\"ÙħØ±Ø§ÙĥØ²\":138283,\"ĠÐ¾Ð´Ð½Ð°ÐºÐ¾\":138284,\"à¸Ķà¸µà¹Ĩ\":138285,\"Ġ×¦×¤×ķ\":138286,\"ĠkullanÄ±lan\":138287,\"ĠÐºÐ¸Ð½Ð¾\":138288,\"ãĥĨãĤ£ãĥ³ãĤ°\":138289,\"ĠGiá»Ľi\":138290,\"ØªÙĪØ²\":138291,\"ØªÙĪØ²ÙĬØ¹\":138292,\"à¸¢à¸´à¸Ļ\":138293,\"à¸¢à¸´à¸Ļà¸Ķà¸µ\":138294,\"ĠcÅĵur\":138295,\"ĠiÅŁaret\":138296,\"Ġ×ĳ×¢×ĸ×¨\":138297,\"Ġ×ĳ×¢×ĸ×¨×ª\":138298,\"ĠÐ¿Ð°ÑĨÐ¸\":138299,\"ĠÐ¿Ð°ÑĨÐ¸ÐµÐ½ÑĤ\":138300,\"ãģ¿ãģŁãģĦãģ§ãģĻ\":138301,\"Ð²ÐµÐ·\":138302,\"Ð»Ð¸Ð½Ð°\":138303,\"Ð¾Ð´Ðµ\":138304,\"Ġ×Ĳ×ķ×ª×Ł\":138305,\"dÄ±ÄŁÄ±nÄ±z\":138306,\"ĠÐĲÐ²\":138307,\"ĠÐĲÐ²ÑĤÐ¾ÑĢ\":138308,\"ï¼®\":138309,\"ĠCáº§n\":138310,\"ĠØ§ÙĦØ§Ø®\":138311,\"ĠØ§ÙĦØ§Ø®Ø¨Ø§Ø±\":138312,\"Ġê±°ìĿĺ\":138313,\"ĠatenÃ§Ã£o\":138314,\"ĠgeldiÄŁi\":138315,\"ãĤªãĤ¹\":138316,\"ãĤªãĤ¹ãĤ¹\":138317,\"ãĤªãĤ¹ãĤ¹ãĥ¡\":138318,\"ÐµÐ²ÑĭÐµ\":138319,\"ÐºÑĢÑĭÐ»\":138320,\"à¹Ģà¸Ĭà¸µà¸¢à¸ĩ\":138321,\"à¹Ģà¸Ĭà¸µà¸¢à¸ĩà¹ĥà¸«à¸¡à¹Ī\":138322,\"ĠmarÃ§o\":138323,\"ĠØ§ÙĦÙħØ§Ø¯Ø©\":138324,\"ĠÐ³Ð¾Ð»\":138325,\"ĠsprzedaÅ¼y\":138326,\"Ġíķ´ê²°\":138327,\"ĠÐķÐ³Ð¾\":138328,\"ê¹Ģ\":138329,\"Ġ×ľ×§×ĳ×ľ×ª\":138330,\"ĠØ§ÙĦÙģÙĨØ§ÙĨ\":138331,\"ĠcomunicaciÃ³n\":138332,\"à¹Ģà¸ªà¹īà¸Ļà¸Ĺà¸²à¸ĩ\":138333,\"íĺ¹\":138334,\"à¸Ĭà¸³\":138335,\"à¸Ĭà¸³à¸£à¸°\":138336,\"Ġ×Ľ×Ĳ×ŀ\":138337,\"Ġ×Ľ×Ĳ×ŀ×ķ×¨\":138338,\"à¸Ĭà¹Īà¸²à¸ĩ\":138339,\"Ø²ÙĩØ±\":138340,\"ĠklientÃ³w\":138341,\"Ð¸Ð²Ð°ÑİÑĤ\":138342,\"Ð°Ð½Ð³\":138343,\"×ł×ļ\":138344,\"Ġgá»įn\":138345,\"ÃľR\":138346,\"ìĺģìĥģ\":138347,\"ĠØºØ²Ø©\":138348,\"ìĿĮìĿĦ\":138349,\"Ġbezpo\":138350,\"ĠbezpoÅĽ\":138351,\"ĠbezpoÅĽredni\":138352,\"ĠØ§ÙĦÙħÙĪØ§\":138353,\"ĠØ§ÙĦÙħÙĪØ§Ø·ÙĨ\":138354,\"ĠØ§ÙĦÙħÙĪØ§Ø·ÙĨÙĬÙĨ\":138355,\"ãĤĮãģ¾ãģĻ\":138356,\"ĠÐ¼Ð°ÑĤÑĩ\":138357,\"×Ĳ×ķ×Ł\":138358,\"ĠØ±Ø³ÙħÙĬ\":138359,\"ĠÑįÐºÐ¾Ð½\":138360,\"ĠÑįÐºÐ¾Ð½Ð¾Ð¼\":138361,\"ĠÑįÐºÐ¾Ð½Ð¾Ð¼Ð¸ÑĩÐµÑģÐº\":138362,\"ãĥľãĥ¼\":138363,\"ĠÐ´Ð¸ÑĢ\":138364,\"ĠÐ´Ð¸ÑĢÐµÐºÑĤÐ¾ÑĢ\":138365,\"ĠÑģÐºÐ¾ÑĢÐ¾\":138366,\"à¸ļà¸³\":138367,\"à¸ļà¸³à¸£\":138368,\"à¸ļà¸³à¸£à¸¸à¸ĩ\":138369,\"ĠÑĦÑĥÑĤ\":138370,\"ĠÑĦÑĥÑĤÐ±Ð¾Ð»\":138371,\"Ġ×Ĳ×Ļ×ľ\":138372,\"Ġì¤ĳêµŃ\":138373,\"ìľ¤\":138374,\"eÄŁe\":138375,\"à¹Ħà¸ģà¹Ī\":138376,\"traÃ®\":138377,\"traÃ®n\":138378,\"ĠÑĤÑĢÑĥÐ±\":138379,\"à¹Ģà¸ļà¸·\":138380,\"à¹Ģà¸ļà¸·à¹īà¸Ńà¸ĩ\":138381,\"à¹ģà¸¡à¸Ļ\":138382,\"ĠØªØŃØ¯ÙĬØ«\":138383,\"Ġ×Ľ×¢×ª\":138384,\"ØŃØ§Ø³Ø¨\":138385,\"lÄ±ÄŁa\":138386,\"×§×Ļ×Ļ×ŀ×Ļ×Ŀ\":138387,\"Ð¾ÑģÑĤÑĮÑİ\":138388,\"à¸Ŀà¸±\":138389,\"à¸Ŀà¸±à¹Īà¸ĩ\":138390,\"Ø´ØºÙĦ\":138391,\"ìĽ¹\":138392,\"ĠÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾\":138393,\"ĠbÃ¶lÃ¼mÃ¼\":138394,\"à¸«à¸Ļà¸µ\":138395,\"ĠistediÄŁi\":138396,\"ĠtrÆ°ng\":138397,\"ãĥĮ\":138398,\"à¸®à¸Ń\":138399,\"Ø£ÙĨØ´\":138400,\"Ø£ÙĨØ´Ø·Ø©\":138401,\"ĠØ§ÙĦÙħØ³ÙĬ\":138402,\"ĠØ§ÙĦÙħØ³ÙĬØŃ\":138403,\"à¸¥à¸±à¸ģà¸©à¸ĵà¹Į\":138404,\"Ġná»Ńa\":138405,\"à¸Ĺà¸µà¹Īà¸ķà¹īà¸Ńà¸ĩà¸ģà¸²à¸£\":138406,\"ÑĪÐµÐº\":138407,\"Ð»Ñĳ\":138408,\"Ġ×©×Ļ×Ķ\":138409,\"Ġ×©×Ļ×Ķ×Ļ×Ķ\":138410,\"ĠkhuÃ´n\":138411,\"ĠÑĤÑĢÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñı\":138412,\"Ġ×ľ×¢×ĸ×ķ×¨\":138413,\"ĠØ§ÙĦØ¹ÙħØ±\":138414,\"à¸£à¸²à¸Ħà¸²à¸ĸà¸¹à¸ģ\":138415,\"ÙĩÙıÙħÙĴ\":138416,\"Ã¼st\":138417,\"Ã¼stÃ¼\":138418,\"ĠÐ´ÐµÐ½ÐµÐ³\":138419,\"Ġnáº¡\":138420,\"à¸Ĥà¸Ļà¸¡\":138421,\"ĠÐ±Ð»Ð°Ð³\":138422,\"ĠÐ±Ð»Ð°Ð³Ð¾Ð´\":138423,\"ĠÐ±Ð»Ð°Ð³Ð¾Ð´Ð°ÑĢ\":138424,\"ĠÐ±Ð»Ð°Ð³Ð¾Ð´Ð°ÑĢÑı\":138425,\"Ø¥Ø³ÙĦØ§Ùħ\":138426,\"à¸Ļà¸´à¸§\":138427,\"çŁ¥ãĤīãģªãģĦ\":138428,\"Ø«ÙĤØ©\":138429,\"ĠÐ³Ð¾Ð»Ð¾Ñģ\":138430,\"×Ĳ×ķ×¨×Ĺ\":138431,\"Ġtrá»©ng\":138432,\"ĠÐ¾Ð´Ð½Ð¾Ð¼\":138433,\"ĠkoÅĦcu\":138434,\"Ġ×ķ×¨×§\":138435,\"WiÄĻ\":138436,\"WiÄĻcej\":138437,\"Ġ×Ĳ×Ļ×Ľ×ķ×ª\":138438,\"Ġ×Ĳ×Ļ×Ľ×ķ×ª×Ļ\":138439,\"ÑģÐ¾Ñģ\":138440,\"ĠjeÅ¼eli\":138441,\"ä»¥ä¸ĭãģ®\":138442,\"å°ıãģķ\":138443,\"å°ıãģķãģª\":138444,\"Ð¾Ð»Ð¾Ð³Ð¸Ð¸\":138445,\"ĠÐ¾Ð±ÑģÐ»ÑĥÐ¶\":138446,\"ĠÐ¾Ð±ÑģÐ»ÑĥÐ¶Ð¸Ð²Ð°\":138447,\"ÙĥØªØ§Ø¨Ø©\":138448,\"Ġê´Ģìĭ¬\":138449,\"×¢×©×Ļ×¨\":138450,\"ĠarasÄ±ndaki\":138451,\"ĠÑĢÐ°Ð¹Ð¾Ð½Ð°\":138452,\"ÙĪØ§Ø¬Ø¨\":138453,\"Ġ×ĳ×Ĺ×Ļ×Ļ\":138454,\"íķ´ì£¼\":138455,\"ĠgÃ³c\":138456,\"Ð°Ð¹Ð»\":138457,\"ĠTÃ¬nh\":138458,\"æļ®ãĤī\":138459,\"æļ®ãĤīãģĹ\":138460,\"æĻĤãģ«ãģ¯\":138461,\"ĠÐ³Ð¾ÑĢÐ¾Ð´Ðµ\":138462,\"Ġ×Ľ×Ĳ×Ļ×ľ\":138463,\"Ġ×Ľ×Ĳ×Ļ×ľ×ķ\":138464,\"ĠCá»Ļng\":138465,\"ãģ©ãģĨãģĹãģ¦ãĤĤ\":138466,\"×Ĺ×ķ×£\":138467,\"ØªØŃØ±Ùĥ\":138468,\"ĠÑģÐ»Ð¾Ð²Ð°Ð¼\":138469,\"à¸Īà¸°à¸Ĭà¹Īà¸§à¸¢\":138470,\"ĠØ§ÙĦÙħØ³ØªÙĤØ¨ÙĦ\":138471,\"ÙĤØ¶\":138472,\"ÙĤØ¶ÙĬ\":138473,\"×ĳ×¡×ķ×¤\":138474,\"×ĳ×¡×ķ×¤×ķ\":138475,\"iÄĻÄĩ\":138476,\"ĠYÄ±l\":138477,\"Ø´ÙĬØ®\":138478,\"à¸Ħà¸¸à¸ĵà¸Īà¸°\":138479,\"×©×ŀ×ķ×ª\":138480,\"ĠØªØ¹Ø±Ø¶\":138481,\"ĠanÃ¡lise\":138482,\"ĠÑģÐ¾Ð±Ð¸ÑĢÐ°\":138483,\"à¹Ģà¸ŀà¸Ĭ\":138484,\"à¹Ģà¸ŀà¸Ĭà¸£\":138485,\"ĠÐ²ÐµÐ»Ð¸\":138486,\"ĠÐ²ÐµÐ»Ð¸Ðº\":138487,\"à¸ªà¸±à¹īà¸Ļ\":138488,\"ĠpopulaÃ§Ã£o\":138489,\"à¸£à¹Īà¸§à¸¡à¸ģà¸±à¸Ļ\":138490,\"×Ĺ×ŀ\":138491,\"×Ĺ×ŀ×Ļ×©×Ļ\":138492,\"×¡×Ļ×¡\":138493,\"åĨħãģ§\":138494,\"ĠsobÄħ\":138495,\"ĠYay\":138496,\"ĠYayÄ±n\":138497,\"ãĥ¡ãĥĭãĥ¥ãĥ¼\":138498,\"ĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤÐ°Ð²Ð»Ñı\":138499,\"ãģłãģ¨æĢĿãģĨ\":138500,\"Ġê³łê°Ŀ\":138501,\"ĠÐ¾Ð´Ð½Ð¸Ð¼\":138502,\"à¹ĥà¸Ļà¹Ģà¸£à¸·à¹Īà¸Ńà¸ĩ\":138503,\"Ġsá»ķ\":138504,\"ĠÐĹÐ´ÐµÑģÑĮ\":138505,\"ĠÐ¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñı\":138506,\"ĠìĿ¼ìĿĦ\":138507,\"ãģªãģ®ãģł\":138508,\"ÐºÐ»Ð°Ð´ÑĭÐ²Ð°\":138509,\"ÑĢÐ¼Ð°\":138510,\"Ġ×ķ×ĳ×Ľ×ľ\":138511,\"ØªØ£ÙħÙĬÙĨ\":138512,\"ĠÐ¿ÑĢÐ¸ÑıÑĤ\":138513,\"ĠÐ¿ÑĢÐ¸ÑıÑĤÐ½\":138514,\"ÙħÙħØ§Ø±\":138515,\"ÙħÙħØ§Ø±Ø³Ø©\":138516,\"ãģ¨ãģªãģ£ãģ¦\":138517,\"ĠØ¬ÙħÙĬÙĦ\":138518,\"Ġì§Ī\":138519,\"Ġì§Īë¬¸\":138520,\"ĠquestÃ£o\":138521,\"iÃ©\":138522,\"iÃ©ndo\":138523,\"à¸«à¹īà¸Ńà¸ĩà¸ŀà¸±à¸ģ\":138524,\"ãĥĳãĥ¼ãĥĪ\":138525,\"ÑĤÐ²ÐµÑĢÐ¶Ð´Ð°\":138526,\"Ð½ÑģÐºÐ¾Ð¹\":138527,\"Ð·Ð°Ð»\":138528,\"à¸¡à¸¸à¹Īà¸ĩ\":138529,\"á»Ĭ\":138530,\"Ġ×Ķ×Ĳ×Ĺ×¨×ķ×ł×Ķ\":138531,\"ĠThÆ°\":138532,\"ì£¼ë¯¼\":138533,\"ĠØ§ÙĦØ¹Ø¨\":138534,\"Ã©vÃ©n\":138535,\"Ã©vÃ©nement\":138536,\"ÙĤÙĪØ§Ø¹Ø¯\":138537,\"Ø¯Ùı\":138538,\"ĠìķĬìĬµëĭĪëĭ¤\":138539,\"Ġë³´ê¸°\":138540,\"ĠyapÄ±lmasÄ±\":138541,\"à¹Ģà¸£à¸²à¸ģ\":138542,\"à¹Ģà¸£à¸²à¸ģà¹ĩ\":138543,\"ØŃØ°Ø±\":138544,\"ÙĤØµØ±\":138545,\"ãģ¦ãģĹãģ¾ãģĦãģ¾ãģĹãģŁ\":138546,\"Ġà¹Ģà¸Ľà¹ĩà¸Ļà¸ķà¹īà¸Ļ\":138547,\"ãģ¨ãģ«\":138548,\"ãģ¨ãģ«ãģĭ\":138549,\"ãģ¨ãģ«ãģĭãģı\":138550,\"Ð½ÑĨÐµ\":138551,\"Ð·Ð²ÑĥÐº\":138552,\"ãģĹãĤĪãģĨãģ¨\":138553,\"ĠØ§ÙĦØµØŃÙĬØ©\":138554,\"Ġ×©×Ķ×Ļ×ķ\":138555,\"ĠDiÄŁer\":138556,\"ÙĤÙĦÙĤ\":138557,\"ãĤ¸ãĥ£ãĥ³\":138558,\"Ġrá»Ŀi\":138559,\"ĠÐ»ÐµÑĩ\":138560,\"ĠÐ»ÐµÑĩÐµÐ½Ð¸Ñı\":138561,\"ØªØ¨Ø§Ø¯\":138562,\"ØªØ¨Ø§Ø¯ÙĦ\":138563,\"×¦×¤×Ķ\":138564,\"à¸Ħà¸§à¸²à¸¡à¹Ģà¸«à¹ĩà¸Ļ\":138565,\"ĠØ´Ø¨\":138566,\"ĠØ´Ø¨ÙĥØ©\":138567,\"×¨×Ļ×§\":138568,\"ÙħØ¹Ø¯\":138569,\"ÙħØ¹Ø¯Ø§Øª\":138570,\"dÄ±ÄŁÄ±nda\":138571,\"Ġ×ĳ×©×ł×Ļ×Ŀ\":138572,\"Ġ×Ķ×Ļ×©×¨×Ĳ×ľ\":138573,\"Ġ×Ķ×Ļ×©×¨×Ĳ×ľ×Ļ×ª\":138574,\"ĠsÄ±nav\":138575,\"×ł×¦×Ļ×Ĵ\":138576,\"à¸§à¸±à¸ķà¸ĸà¸¸\":138577,\"ĠØ§ÙĦØ¨Ø±ÙĦÙħ\":138578,\"ĠØ§ÙĦØ¨Ø±ÙĦÙħØ§ÙĨ\":138579,\"tivitÃł\":138580,\"ãĤĵãģłãĤįãģĨ\":138581,\"×§×Ļ×Ļ×ŀ\":138582,\"ÙĦÙĬÙĥ\":138583,\"ĠÄĳÃ²\":138584,\"ĠÄĳÃ²i\":138585,\"ĠÐĺÐ½ÑĤÐµÑĢ\":138586,\"ĠÐĺÐ½ÑĤÐµÑĢÐ½ÐµÑĤ\":138587,\"ãģ«ãģ¨ãģ£ãģ¦ãģ¯\":138588,\"ãģ£ãģĵ\":138589,\"×§×ķ×¡\":138590,\"Ø³ØªØŃÙĤ\":138591,\"æķĻãģĪãģ¦\":138592,\"ãĥĢãĥ¡\":138593,\"ĠÙħÙĨØ²ÙĦ\":138594,\"à¹Ģà¸ĭà¹ĩà¸Ļ\":138595,\"ä½¿ãģĪãĤĭ\":138596,\"è¦ĭç©į\":138597,\"è¦ĭç©įãĤĤãĤĬ\":138598,\"Ø£Ùģ\":138599,\"Ø£ÙģÙĥØ§Ø±\":138600,\"ĠÐ¸Ð³ÑĢÐ¾Ð²\":138601,\"ĠÐ¸Ð³ÑĢÐ¾Ð²ÑĭÐµ\":138602,\"ĠmÄĻÅ¼\":138603,\"ĠmÄĻÅ¼czy\":138604,\"ĠmÄĻÅ¼czyzn\":138605,\"ĠØ§ÙĦØŃÙĤÙĬÙĤÙĬ\":138606,\"Ø¹Ø¨Ø±\":138607,\"×Ľ×ķ×ľ×ł×ķ\":138608,\"íĿ¥\":138609,\"×ŀ×Ĳ×ķ×Ĺ×¨\":138610,\"Ø®ØªØµ\":138611,\"ãĥŀãĥŀ\":138612,\"Ġ×Ĳ×Ĺ×ķ×ĸ\":138613,\"íĮĢ\":138614,\"Ġrá»ĳi\":138615,\"ĠÐ²ÑĤÐ¾ÑĢ\":138616,\"ĠÐ²ÑĤÐ¾ÑĢÐ¾Ð¹\":138617,\"Ġláº«n\":138618,\"Ð¿ÑĢÐ¾Ð¼\":138619,\"Ð¿ÑĢÐ¾Ð¼ÑĭÑĪ\":138620,\"Ð¿ÑĢÐ¾Ð¼ÑĭÑĪÐ»ÐµÐ½\":138621,\"Ð¿ÑĢÐ¾Ð¼ÑĭÑĪÐ»ÐµÐ½Ð½\":138622,\"ĠÐ¾ÑĤÐ½Ð¾ÑĪÐµÐ½Ð¸Ñı\":138623,\"Ġsá»©\":138624,\"ĠÐ¼Ð¾Ð±Ð¸Ð»ÑĮ\":138625,\"ĠÐ¼Ð¾Ð±Ð¸Ð»ÑĮÐ½\":138626,\"ĠÑįÑĤÐ¾Ð¼Ñĥ\":138627,\"Ġtáº¡p\":138628,\"ĠìĤ¬ê±´\":138629,\"ĠìķĮëł¤\":138630,\"ÙĥÙı\":138631,\"ÙĥÙıÙħÙĴ\":138632,\"Ġ×§×ķ×¨×Ķ\":138633,\"ĠÑĦÐ¸ÑĢ\":138634,\"ĠÑĦÐ¸ÑĢÐ¼\":138635,\"ĠsÄ±kÄ±ntÄ±\":138636,\"×ł×Ľ\":138637,\"×ł×Ľ×ķ×Ł\":138638,\"ÙĪÙĦÙĪØ¬ÙĬ\":138639,\"ØŃØ§ÙĨ\":138640,\"Ġloáº¡n\":138641,\"Ġ×Ĳ×ľ×£\":138642,\"Ġmáº¯n\":138643,\"abhÃ¤ng\":138644,\"abhÃ¤ngig\":138645,\"ĠÑĥÑĢÐ¾Ð²Ð½Ñı\":138646,\"Ġ×ľ×ĳ×ĵ×ķ×§\":138647,\"ÙĬÙħÙĨ\":138648,\"layÄ±n\":138649,\"Ġháº£i\":138650,\"ĠÐ·Ð°Ð²Ð¾Ð´\":138651,\"ĠìķĦì£¼\":138652,\"à¸ªà¸ĸà¸²\":138653,\"à¸ªà¸ĸà¸²à¸ļà¸±à¸Ļ\":138654,\"ĠgÃ¼venlik\":138655,\"à¹Ģà¸Ķà¹Īà¸Ļ\":138656,\"×ĳ×ĵ×§\":138657,\"ĠëĪ\":138658,\"ĠëĪĦ\":138659,\"ĠëĪĦêµ¬\":138660,\"éĩįè¦ģãģª\":138661,\"à¸£à¸Ńà¸ĩà¸£à¸±à¸ļ\":138662,\"schlie\":138663,\"schlieÃŁen\":138664,\"Ġìĸ¼\":138665,\"Ġìĸ¼ë§Ī\":138666,\"Ġìĸ¼ë§ĪëĤĺ\":138667,\"ÑĤÐ¸ÐºÐ¸\":138668,\"íķľëĭ¤ê³ł\":138669,\"ãģłãģ£ãģŁãĤī\":138670,\"Ġ×Ķ×Ļ×ĺ×ĳ\":138671,\"ãģªãģĳãĤĮãģ°ãģªãĤīãģªãģĦ\":138672,\"Ã¢Ì\":138673,\"Ã¢Ì£\":138674,\"Ġpháº¡t\":138675,\"akÄ±ÅŁ\":138676,\"ãģ¦ãģĹãģ¾ãģĦãģ¾ãģĻ\":138677,\"à¹Ģà¸ĭà¹ĩ\":138678,\"ĠÐ¡ÐµÐ³Ð¾Ð´Ð½Ñı\":138679,\"ĠinsanlarÄ±n\":138680,\"ĠdÃ©veloppe\":138681,\"×ª×¤×¨\":138682,\"×ª×¤×¨×Ļ×ĺ\":138683,\"Ø§ÙĨØªØ´Ø§Ø±\":138684,\"ê°ĳ\":138685,\"FranÃ§ois\":138686,\"Ø£ÙĦØ¹\":138687,\"Ø£ÙĦØ¹Ø§Ø¨\":138688,\"ãĤĴè¶ħ\":138689,\"ãĤĴè¶ħãģĪ\":138690,\"Ġê°ĻìĬµëĭĪëĭ¤\":138691,\"ãĤ³ãĥ¬\":138692,\"ĠÐ¼ÐµÑģÑıÑĨÐµÐ²\":138693,\"íĮħ\":138694,\"ĠØ§ÙĦØ¬Ø§ÙħØ¹Ø©\":138695,\"ìĿ¸íĦ°\":138696,\"ìĿ¸íĦ°ëĦ·\":138697,\"×ĵ×¨×ķ×©\":138698,\"ĠÙĪØ£Ø´Ø§Ø±\":138699,\"ĠÐ¿ÑĢÐ°Ð²Ð¸Ð»Ð°\":138700,\"ãģĿãģĵãģ«\":138701,\"×Ĺ×ŀ×ĵ\":138702,\"à¹Ģà¸«à¸ķà¸¸à¸ģà¸²à¸£à¸ĵà¹Į\":138703,\"Ġê²½íĹĺ\":138704,\"ãģ¶ãĤĬ\":138705,\"×ľ×©\":138706,\"×ľ×©×ķ×Ł\":138707,\"à¹Ģà¸ĸ\":138708,\"ĠDoÄŁu\":138709,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ\":138710,\"ĠÃ§ocuÄŁu\":138711,\"Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½Ðµ\":138712,\"ĠÄĳiá»ĥn\":138713,\"ĠaslÄ±\":138714,\"ĠaslÄ±nda\":138715,\"ĠdoenÃ§a\":138716,\"ĠØ³Ø§Ø¹\":138717,\"ĠØ³Ø§Ø¹Ø§Øª\":138718,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°Ð½Ð¸Ñı\":138719,\"×¨×ķ×¦×Ļ×Ŀ\":138720,\"ĠÐ·Ð½Ð°ÑĩÐ¸ÑĤ\":138721,\"ĠÑĢÐ°Ð¼\":138722,\"ĠÑĢÐ°Ð¼ÐºÐ°Ñħ\":138723,\"ê±°ë¦¬\":138724,\"ĠÐ¿ÑĭÑĤÐ°\":138725,\"ãĥģãĥ³\":138726,\"ĠÐ¿Ð¾ÑģÐº\":138727,\"ĠÐ¿Ð¾ÑģÐºÐ¾Ð»ÑĮ\":138728,\"ĠÐ¿Ð¾ÑģÐºÐ¾Ð»ÑĮÐºÑĥ\":138729,\"Ø¥Ø¨Ø±\":138730,\"Ø¥Ø¨Ø±Ø§Ùĩ\":138731,\"Ø¥Ø¨Ø±Ø§ÙĩÙĬÙħ\":138732,\"ĠÑĤÑĢÐµÑħ\":138733,\"ĠGenÃ§\":138734,\"Ø³ÙĪÙģ\":138735,\"ĠveÃŃculo\":138736,\"ĠNgÃ¢n\":138737,\"ĠÐ¾ÑĩÐµÑĢÐµÐ´ÑĮ\":138738,\"à¸Ħà¸£à¸¶à¹Īà¸ĩ\":138739,\"×Ĳ×ĳ×Ļ\":138740,\"à¸ķà¹īà¸¡\":138741,\"ãĤĴè¡ĮãģĦ\":138742,\"ĠØ§ÙĦØ³Ø§Ø¨ÙĤØ©\":138743,\"Ð½Ð°ÑĨÐ¸\":138744,\"Ð½Ð°ÑĨÐ¸Ð¾Ð½Ð°\":138745,\"Ð½Ð°ÑĨÐ¸Ð¾Ð½Ð°Ð»ÑĮÐ½\":138746,\"ĠgestiÃ³n\":138747,\"ØªÙĤØ¯\":138748,\"ĠØ§ÙĦØ¨ÙĬØ§ÙĨ\":138749,\"ĠØ§ÙĦØ¨ÙĬØ§ÙĨØ§Øª\":138750,\"ĠØ§ÙĦØ§ÙĨØªØ®Ø§Ø¨\":138751,\"ĠØ§ÙĦØ§ÙĨØªØ®Ø§Ø¨Ø§Øª\":138752,\"à¹Ģà¸Ĭà¹Īà¸²\":138753,\"×ĵ×Ĳ×Ĵ\":138754,\"Ġ×ľ×Ĵ×ŀ×¨×Ļ\":138755,\"ĠØªØŃØªØ§Ø¬\":138756,\"ĠthÃ´n\":138757,\"à¸ķà¹īà¸Ńà¸Ļ\":138758,\"à¸ķà¹īà¸Ńà¸Ļà¸£à¸±à¸ļ\":138759,\"å¥³ãģ®\":138760,\"å¥³ãģ®åŃĲ\":138761,\"Ġthá»Ł\":138762,\"Ø·ØŃÙĨ\":138763,\"à¸²à¸£à¹Įà¸Ķ\":138764,\"×ª×ŀ×Ļ×ĵ\":138765,\"ĠÑģÐ°Ð¼ÑĭÐ¼\":138766,\"Ġìĭľíĸī\":138767,\"Ø¥ØµØ¯\":138768,\"Ø¥ØµØ¯Ø§Ø±\":138769,\"ĠNghá»ĩ\":138770,\"ìķķ\":138771,\"Ø³Ø¦\":138772,\"Ø³Ø¦ÙĦ\":138773,\"à¸Ńà¸²à¸£\":138774,\"à¸Ńà¸²à¸£à¸¡\":138775,\"à¸Ńà¸²à¸£à¸¡à¸ĵà¹Į\":138776,\"à¹ģà¸®\":138777,\"×ł×ĺ×ľ\":138778,\"Ġì¢ĭìķĦ\":138779,\"×ķ×ľ×ľ\":138780,\"Ġ×ĳ×Ľ×ª×ĳ\":138781,\"ãĤ«ãĥ©\":138782,\"×¦×¢×Ļ×¨×Ļ×Ŀ\":138783,\"ØªØ¹Ø¨ÙĬØ±\":138784,\"Ġ×ŀ×§×¨×Ķ\":138785,\"ĠÑĦÐ°ÐºÑĤÐ¾ÑĢ\":138786,\"ĠØªÙħØ§Ùħ\":138787,\"ĠØªÙħØ§ÙħØ§\":138788,\"ëįķ\":138789,\"ĠvÆ°á»Ŀ\":138790,\"ĠvÆ°á»Ŀn\":138791,\"ĠdÄ±ÅŁÄ±\":138792,\"ãģĦãģ¡\":138793,\"Ġ×ľ×§×ł×ķ×ª\":138794,\"ĠØ§ÙĦØ¹ÙĦØ§ÙĤØ§Øª\":138795,\"Ð¿ÑĥÐ±\":138796,\"Ð¿ÑĥÐ±Ð»Ð¸\":138797,\"Ø¥ÙĬÙħ\":138798,\"Ø¥ÙĬÙħØ§ÙĨ\":138799,\"à¸Ńà¸³à¸Ļà¸²\":138800,\"à¸Ńà¸³à¸Ļà¸²à¸Ī\":138801,\"åĲ«ãģ¾ãĤĮ\":138802,\"ãĤĭãģŁãĤģãģ«\":138803,\"×¡×Ĵ\":138804,\"×¡×Ĵ×ł×ķ×Ł\":138805,\"ØªØŃØ¯ÙĬ\":138806,\"ĠauprÃ¨s\":138807,\"ĠØ§ÙĦØ¬ÙĩØ§\":138808,\"ĠØ§ÙĦØ¬ÙĩØ§Ø²\":138809,\"Ġ×ŀ×ª×Ĺ×ª\":138810,\"ÐµÐ½Ð½ÑĥÑİ\":138811,\"ĠÐ·Ð¸Ð¼\":138812,\"à¸ģà¸²à¹ģà¸Ł\":138813,\"Ġ×ĳ×ª×ķ×¨\":138814,\"ĠnghÃ¨\":138815,\"ĠnghÃ¨o\":138816,\"ĠÐĽÑİ\":138817,\"ĠÐĽÑİÐ±\":138818,\"×ª×§×¦×Ļ×ĳ\":138819,\"×ŀ×¢×©×Ķ\":138820,\"ĠØ§ÙĦØ¨ÙĬØª\":138821,\"×¦×Ļ×¤\":138822,\"ĠÐ¾Ð±ÑıÐ·Ð°Ð½\":138823,\"ĠMá»Ĺi\":138824,\"ĠÐ¢ÑĥÑĢ\":138825,\"ĠÙĪØ¨Ø§ÙĦØª\":138826,\"ĠÙĪØ¨Ø§ÙĦØªØ§ÙĦÙĬ\":138827,\"ĠdÃ©cision\":138828,\"ĠØ¨Ø¯\":138829,\"ĠØ¨Ø¯Ø£Øª\":138830,\"Ġcá»¥c\":138831,\"Ġbask\":138832,\"ĠbaskÄ±\":138833,\"ĠhatÄ±rl\":138834,\"ĠhatÄ±rla\":138835,\"å°ıãģķãģĦ\":138836,\"ĠgerÃ§ekten\":138837,\"à¸ľà¸±à¸ģ\":138838,\"åı¯èĥ½ãģª\":138839,\"×ŀ×Ĳ×¡\":138840,\"ĠcrÃŃtica\":138841,\"ĠìĿĺìĽĲ\":138842,\"Ø¹ÙĤÙĪØ¯\":138843,\"×ĺ×Ľ×ł\":138844,\"×ĺ×Ľ×ł×ķ×ľ×ķ×Ĵ×Ļ×Ķ\":138845,\"è¨ĢãģĪãģ°\":138846,\"ĠÙĤÙĨØ§\":138847,\"ĠÙĤÙĨØ§Ø©\":138848,\"ĠìĿ´ê²ĥìĿĢ\":138849,\"ØªØµØ±\":138850,\"à¸Łà¸±à¸Ļ\":138851,\"ĠÑĢÐµÑĨÐµÐ¿\":138852,\"ĠÑĢÐµÑĨÐµÐ¿ÑĤ\":138853,\"ĠØ¨ÙĨÙģØ³\":138854,\"ÑĢÐ¾ÑĪ\":138855,\"ĠÐ¼Ð°ÑĢÑĤÐ°\":138856,\"Ġsonras\":138857,\"ĠsonrasÄ±\":138858,\"×ķ×ĳ×©\":138859,\"ãĥªãĤ¹ãĤ¯\":138860,\"ĠFranÃ§ais\":138861,\"á»ļ\":138862,\"ê°Ķ\":138863,\"Ġ×Ķ×ĳ×¨×Ļ×ª\":138864,\"×¤×Ļ×¦\":138865,\"×¤×Ļ×¦×ķ×Ļ\":138866,\"ĠÙĦÙħØ§Ø°Ø§\":138867,\"ĠÐļÐ¸ÐµÐ²\":138868,\"ĠÑģÐ¼ÑĭÑģÐ»\":138869,\"ê¸Īìľµ\":138870,\"ãĤ·ãĥ£ãĥ«\":138871,\"ãĥ©ãĤ¤ãĥĪ\":138872,\"ìĽĥ\":138873,\"×ŀ×Ĺ×¨\":138874,\"ãĨį\":138875,\"ĠkullanÄ±m\":138876,\"Ġ×Ĳ×¦×ľ×ł×ķ\":138877,\"ĠtÃłn\":138878,\"ãĥıãĥ¼\":138879,\"ãģ¨ãģ¨ãĤĤ\":138880,\"ãģ¨ãģ¨ãĤĤãģ«\":138881,\"ÑĢÐµÐ³\":138882,\"ÑĢÐµÐ³Ð¸\":138883,\"ÑĢÐµÐ³Ð¸Ð¾Ð½\":138884,\"ãģªãģıãģªãĤĭ\":138885,\"Ġcháº£y\":138886,\"ĠØ¬ÙĩØ©\":138887,\"ÅĦskiej\":138888,\"à¸Ńà¸µà¹Ģà¸¡\":138889,\"à¸Ńà¸µà¹Ģà¸¡à¸¥\":138890,\"ãģįãģ£ãģ¨\":138891,\"ĠìĺĪìĤ°\":138892,\"ĠkitabÄ±\":138893,\"ĠeducaÃ§Ã£o\":138894,\"ĠbuluÅŁ\":138895,\"Ð¾Ð»Ð¾Ð³Ð¸Ñı\":138896,\"ĠÐºÐ¾Ð½ÐºÑĢ\":138897,\"ĠÐºÐ¾Ð½ÐºÑĢÐµÑĤ\":138898,\"×Ĵ×Ļ×¨\":138899,\"ĠÐ¿ÑĢÐµÐ´Ð»Ð°Ð³\":138900,\"ĠÐ¿ÑĢÐµÐ´Ð»Ð°Ð³Ð°ÐµÑĤ\":138901,\"ĠYÃªn\":138902,\"Ġíķľë²Ī\":138903,\"Ġ×ŀ×¨×Ľ×ĸ×Ļ\":138904,\"à¹Ģà¸Ľà¸´à¸Ķà¹Ģà¸ľà¸¢\":138905,\"ÑĤÐ²ÐµÑĢÐ´\":138906,\"ĠHá»ĩ\":138907,\"ĠÐĵÑĢ\":138908,\"à¸Ŀà¹īà¸²\":138909,\"×Ķ×©×§\":138910,\"×Ķ×©×§×¢×Ķ\":138911,\"ĠÐ½Ð°ÑĥÐº\":138912,\"ìłĲìĿĦ\":138913,\"ĠÐ½ÐµÐ»ÑĮ\":138914,\"ĠÐ½ÐµÐ»ÑĮÐ·\":138915,\"ĠÐ½ÐµÐ»ÑĮÐ·Ñı\":138916,\"Ð³Ð¸Ð½\":138917,\"ĠBÃ¶l\":138918,\"ĠBÃ¶lge\":138919,\"ĠÐ²Ð»Ð°\":138920,\"ĠÐ²Ð»Ð°ÑģÑĤÐ¸\":138921,\"à¹Ģà¸Ļà¹ĩ\":138922,\"à¹Ģà¸Ļà¹ĩà¸ķ\":138923,\"ê³¨\":138924,\"ĠÃ¶ld\":138925,\"ĠÃ¶ldÃ¼r\":138926,\"×Ľ×ł×¢\":138927,\"ĠØ§ÙĦÙĩÙĬØ¦Ø©\":138928,\"ØªØ§Ø±ÙĬØ®\":138929,\"ĠÐĳÑĢ\":138930,\"ĠÑģÐ¼Ð¾Ð¶\":138931,\"ĠÑģÐ¼Ð¾Ð¶ÐµÑĤÐµ\":138932,\"ĠLÃºc\":138933,\"à¹Ħà¸Ľà¸ĸà¸¶à¸ĩ\":138934,\"ĠBakanÄ±\":138935,\"ĠerklÃ¤rt\":138936,\"ĠÐĲÐ½Ð°\":138937,\"ĠscÃ¨ne\":138938,\"åķıãģĦ\":138939,\"åķıãģĦåĲĪãĤıãģĽ\":138940,\"ÙħÙĩÙĨØ¯\":138941,\"ÙħÙĩÙĨØ¯Ø³\":138942,\"ĠÐ½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ\":138943,\"Ð¸Ð²Ð°Ð½Ð¸Ñı\":138944,\"ãĤĴå¤īãģĪ\":138945,\"ä»ĺãģįåĲĪ\":138946,\"ãĥĳãĤ½\":138947,\"ãĥĳãĤ½ãĤ³ãĥ³\":138948,\"æĺİãĤī\":138949,\"æĺİãĤīãģĭ\":138950,\"à¹Ģà¸Ńà¸ģà¸ªà¸²à¸£\":138951,\"à¹Ģà¸ģà¸´à¸Ļà¹Ħà¸Ľ\":138952,\"Ð»ÐµÐ¿\":138953,\"ãģĹãģŁãĤĤãģ®\":138954,\"ĠCÃ¢m\":138955,\"ĠCÃ¢mara\":138956,\"×§×ķ×ľ×ł×ķ×¢\":138957,\"Ġ×ĳ×Ĵ×Ļ×Ł\":138958,\"Ġoczy\":138959,\"ĠoczywiÅĽcie\":138960,\"attivitÃł\":138961,\"ãĥĵãĥ¥ãĥ¼\":138962,\"ĠeducaciÃ³n\":138963,\"Ä°YE\":138964,\"ê¹ĮìļĶ\":138965,\"ãĤ¨ãĥªãĤ¢\":138966,\"Ð½ÐµÑģÑĤÐ¸\":138967,\"ĠmÃ³g\":138968,\"ĠmÃ³gÅĤ\":138969,\"Ġ×§×ĺ×ł×Ļ×Ŀ\":138970,\"ĠPrÃ¤\":138971,\"Ġ×ľ×¢×ĳ×ķ×¨\":138972,\"Ø¨ÙĨÙī\":138973,\"Ð·Ð¾Ð»\":138974,\"Ð·Ð¾Ð»Ð¾ÑĤ\":138975,\"ĠwnÄĻtr\":138976,\"ĠwnÄĻtrz\":138977,\"ĠconstruÃ§Ã£o\":138978,\"à¸£à¸±à¸ļà¸£à¸Ńà¸ĩ\":138979,\"Ø³Ø¬ÙĨ\":138980,\"Ġ×§×ķ×ł\":138981,\"×¡×Ļ×¤×ķ×¨\":138982,\"ĠÙħØ¯Ùī\":138983,\"Ø±Ø¶Ùī\":138984,\"Ð¿Ð»Ð°Ð²\":138985,\"ï¼¥\":138986,\"Ġila\":138987,\"ĠilaÃ§\":138988,\"ãĤĭãģ¹ãģį\":138989,\"ĠÙħÙĪÙĤÙģ\":138990,\"à¸ģà¸£à¸¸\":138991,\"à¸ģà¸£à¸¸à¸ĵà¸²\":138992,\"chodzÄħc\":138993,\"ĠÑĤÑĭÑģ\":138994,\"ÐķÐ²ÑĢÐ¾\":138995,\"ĠÙĬØŃØ¯Ø«\":138996,\"ãĥ¡ãĤ¤ãĥ³\":138997,\"ĠØ§ÙĦØµØŃÙĬ\":138998,\"ĠÐĶÐ°Ð½\":138999,\"Ø¯Ø¹Ø§Ø¡\":139000,\"ãĤ´ãĥ¼ãĥ«\":139001,\"×©×ł×ª×Ļ\":139002,\"×©×ł×ª×Ļ×Ļ×Ŀ\":139003,\"à¸Ķà¹īà¸§à¸¢à¸ģà¸±à¸Ļ\":139004,\"ĠolacaÄŁÄ±\":139005,\"Ġ×ĳ×ŀ×Ĺ×Ļ×¨\":139006,\"×Ķ×§\":139007,\"×Ķ×§×ŀ×ª\":139008,\"ãĥ¢ãĥİ\":139009,\"ĠÃ§alÄ±ÅŁtÄ±\":139010,\"ĠjÃ³venes\":139011,\"ãģĦãģıãĤī\":139012,\"ĠÙħØ¹Ø¯ÙĦ\":139013,\"ĠCÅ©ng\":139014,\"ĠSegÃºn\":139015,\"ĠdÃ¶nemde\":139016,\"Ġ×ľ×Ļ×ĵ×Ļ\":139017,\"ãģįãģ¡\":139018,\"ãģįãģ¡ãĤĵ\":139019,\"ãģįãģ¡ãĤĵãģ¨\":139020,\"ÙģØ±ÙĨØ³\":139021,\"ÙģØ±ÙĨØ³Ø§\":139022,\"åĲĳãģį\":139023,\"ĠcampaÃ±a\":139024,\"ĠÑģÐ°Ð¼Ð¾ÑģÑĤÐ¾Ñı\":139025,\"ĠÑģÐ°Ð¼Ð¾ÑģÑĤÐ¾ÑıÑĤÐµÐ»ÑĮÐ½Ð¾\":139026,\"á»Ģ\":139027,\"ÙĤÙĪØ§\":139028,\"Ø³ÙĦØ§ØŃ\":139029,\"à¸ģà¸£à¸°à¹ģ\":139030,\"à¸ģà¸£à¸°à¹ģà¸ª\":139031,\"ĠÐ¿Ð¾Ð»ÑĮÐ·Ñĥ\":139032,\"nqu\":139033,\"nquÃªte\":139034,\"à¸£à¹Īà¸§à¸¡à¸ģà¸±à¸ļ\":139035,\"ëĬĲëĥĲ\":139036,\"à¸Ĺà¸µà¸¡à¸Ĭà¸²à¸ķà¸´\":139037,\"ĠyÄ±llÄ±k\":139038,\"ìĬ¬\":139039,\"ĠØ£ØµØŃØ§Ø¨\":139040,\"illÃ©\":139041,\"ĠdÃ³la\":139042,\"ĠdÃ³lares\":139043,\"ĠÐºÐ¾Ð¶\":139044,\"ĠÐºÐ¾Ð¶Ð¸\":139045,\"à¸¥à¹īà¸Ń\":139046,\"à¹Ģà¸£à¸µà¸¢à¸ļà¸£\":139047,\"à¹Ģà¸£à¸µà¸¢à¸ļà¸£à¹īà¸Ńà¸¢\":139048,\"à¹Ģà¸ŀà¸´\":139049,\"à¹Ģà¸ŀà¸´à¹Īà¸ĩ\":139050,\"ÑĢÐ¸ÑĤÐ¾ÑĢÐ¸\":139051,\"Ġíĳľ\":139052,\"ĠíĳľíĺĦ\":139053,\"ĠÐ¿ÐµÑĢÐµÐ²\":139054,\"ĠÐ¿ÐµÑĢÐµÐ²Ð¾Ð´\":139055,\"×¤×Ĵ×Ļ×¢×Ķ\":139056,\"ĠdeÄŁerlendirme\":139057,\"ÙģØ§Ø¦\":139058,\"ĠÐ²ÑĭÐ³Ð¾Ð´\":139059,\"Ä±nÄ±zÄ±\":139060,\"×ķ×Ľ×Ļ×Ĺ\":139061,\"ĠÐ´Ð¾ÑģÑĤÐ¸Ð³\":139062,\"ĠngÃłn\":139063,\"æĢĿãģ£ãģŁ\":139064,\"ĠÐķÑģÑĤÑĮ\":139065,\"ĠØ§ÙĦØ±ØºÙħ\":139066,\"ĠzwiÄħzane\":139067,\"Ø±Ø¨Ø·\":139068,\"à¸Ļà¸¶à¸ĩ\":139069,\"Ġ×ľ×Ĺ×ķ×§\":139070,\"ĠszczegÃ³ln\":139071,\"ĠszczegÃ³lnie\":139072,\"ĠØ¨Ø§Ø³ØªØ®Ø¯Ø§Ùħ\":139073,\"ĠfÃŃsico\":139074,\"×¢×¡\":139075,\"×¢×¡×ķ×§\":139076,\"Ø³ÙĦÙĪÙĥ\":139077,\"ĠØ§ØŃØ¯\":139078,\"ÑĩÑĳÑĤ\":139079,\"×ĸ×Ľ×Ķ\":139080,\"Ġlá»ĩnh\":139081,\"ĠÙĪØŃØª\":139082,\"ĠÙĪØŃØªÙī\":139083,\"à¸Ħà¸§à¸²à¸¡à¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":139084,\"à¸Ńà¸¢à¸¹à¹Īà¹ģà¸¥à¹īà¸§\":139085,\"à¸ģà¸²à¸£à¹Ģà¸Ķà¸´à¸Ļà¸Ĺà¸²à¸ĩ\":139086,\"ØªØ®Ø°\":139087,\"×¦×Ļ×ķ×ĵ\":139088,\"ĠØ§ÙĦØ£Ø³\":139089,\"ĠØ§ÙĦØ£Ø³ÙĩÙħ\":139090,\"Ġtá»ĩ\":139091,\"ãģ£ãģ¦ãģĦãģ¦\":139092,\"à¸ªà¸£à¸¸\":139093,\"à¸ªà¸£à¸¸à¸Ľ\":139094,\"ĠÐºÐ¾Ð¼ÑĦ\":139095,\"ĠÐºÐ¾Ð¼ÑĦÐ¾ÑĢÑĤ\":139096,\"ìĺ¤ëĬĶ\":139097,\"ĠÑĢÐ°Ð·Ð²\":139098,\"ĠÑĢÐ°Ð·Ð²Ð¸Ð²Ð°\":139099,\"Ð»Ð°Ð½Ð´\":139100,\"hÃ¤nge\":139101,\"ĠØ¨ÙĨØ³Ø¨Ø©\":139102,\"à¹Ģà¸Ĥà¸µà¸¢à¸§\":139103,\"×¢×¦×Ŀ\":139104,\"Ġ×ľ×ľ×Ľ×ª\":139105,\"ÑģÐ¾ÑĨÐ¸Ð°Ð»ÑĮÐ½\":139106,\"Ġëĭ¤ìĿĮê³¼\":139107,\"Ġ×¨×©×ķ×ŀ\":139108,\"×ŀ×¨×Ĺ×ĳ\":139109,\"Ø³ÙĤØ·\":139110,\"ĠalanÄ±\":139111,\"ĠÄĳá»ĩ\":139112,\"é£Łãģ¹ãĤĭ\":139113,\"à¸Ķà¸¶à¸ĩ\":139114,\"ĠgegenÃ¼ber\":139115,\"ĠØ¨ÙĩØ°Ùĩ\":139116,\"à¸ĸà¸·à¸Ńà¹Ģà¸Ľà¹ĩà¸Ļ\":139117,\"ëķħ\":139118,\"à¸Ħà¸Ļà¹Ħà¸Ĺà¸¢\":139119,\"ãĤ¢ãĤ¦\":139120,\"ãĤ¢ãĤ¦ãĥĪ\":139121,\"à¸¨à¸±à¸ģ\":139122,\"à¸¨à¸±à¸ģà¸Ķà¸´\":139123,\"à¸¨à¸±à¸ģà¸Ķà¸´à¹Į\":139124,\"ÙĤÙĪØ§ÙĨ\":139125,\"ÙĤÙĪØ§ÙĨÙĬÙĨ\":139126,\"Ġhá»Ļp\":139127,\"ãģªãģıãģªãģ£ãģ¦\":139128,\"Ġ×Ĳ×ŀ×ł\":139129,\"Ġ×Ĳ×ŀ×ł×Ŀ\":139130,\"à¹Ģà¸ķà¸·à¸Ńà¸Ļ\":139131,\"ĠÐ·Ð°Ð²Ð¸ÑģÐ¸Ð¼\":139132,\"ĠÐ·Ð°Ð²Ð¸ÑģÐ¸Ð¼Ð¾ÑģÑĤÐ¸\":139133,\"×ª×Ļ×Ĳ\":139134,\"×ª×Ļ×Ĳ×ķ×¨\":139135,\"å§ĭãĤģãģŁ\":139136,\"Ġngá»į\":139137,\"Ġngá»įt\":139138,\"íĴį\":139139,\"ê³¼ìŀ¥\":139140,\"Ġbáº¡i\":139141,\"ãģ§ãģįãģ¦\":139142,\"ĠcomeÃ§ar\":139143,\"à¸Ľà¸£à¸²à¸ģ\":139144,\"à¸Ľà¸£à¸²à¸ģà¸ı\":139145,\"ĠÐ³Ð¾Ð´Ñĭ\":139146,\"Ð¼ÐµÑģ\":139147,\"ĠØ§ÙĦÙħØ³ØªÙĪÙī\":139148,\"ĠÑģÐ°Ð¼ÑĭÐµ\":139149,\"Ð»Ð»ÐµÑĢ\":139150,\"ãģ£ãģ¦ãģĹãģ¾ãģĦãģ¾ãģĻ\":139151,\"ãģ¨ãģ®ãģĵãģ¨\":139152,\"biÃ³\":139153,\"à¸ģà¸¥à¹Īà¸Ńà¸ĩ\":139154,\"ĠØ§ÙĦØ²ÙĪØ¬\":139155,\"ãģ«è¡Įãģ£ãģŁ\":139156,\"à¸Ħà¹Īà¸Ńà¸Ļ\":139157,\"à¸Ħà¹Īà¸Ńà¸Ļà¸Ĥà¹īà¸²à¸ĩ\":139158,\"ĠbaÄŁl\":139159,\"ĠbaÄŁlant\":139160,\"ĠbaÄŁlantÄ±\":139161,\"ç¢ºãģĭ\":139162,\"ç¢ºãģĭãģ«\":139163,\"ãĥľãĥ¼ãĥ«\":139164,\"çµĤãĤıãĤĬ\":139165,\"×©×ŀ×¨\":139166,\"à¸Ĺà¸µà¹Īà¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":139167,\"ÙĦØ²Ùħ\":139168,\"Ð´Ð°ÐµÑĤÑģÑı\":139169,\"à¸£à¸±à¸ļà¸Ľà¸£à¸°\":139170,\"à¸£à¸±à¸ļà¸Ľà¸£à¸°à¸Ĺà¸²à¸Ļ\":139171,\"å¤īãĤıãĤĬ\":139172,\"ï¼¢\":139173,\"ĠìĺĪìĪĺëĭĺ\":139174,\"ãĤĪãģĨãģ¨\":139175,\"à¸¡à¸±à¸ģà¸Īà¸°\":139176,\"ĠHÆ°Æ¡ng\":139177,\"ÙĨÙģØ°\":139178,\"×ŀ×ĵ×ĵ\":139179,\"ĠìĿ¸ìłķ\":139180,\"ÑħÐ¾Ð´Ð¸ÑĤÑĮ\":139181,\"ĠÐ·Ð°Ð²Ð¸ÑģÐ¸ÑĤ\":139182,\"×ķ×ĵ×Ļ×¢\":139183,\"ãģĵãģ¨ãģĮãģĤãĤĬãģ¾ãģĻ\":139184,\"Ø¹Ø±Ø§ÙĤ\":139185,\"Ø³Ø·ØŃ\":139186,\"à¸ģà¸³à¹Ħà¸£\":139187,\"ëĵ¤ëıĦ\":139188,\"×Ļ×¦×Ļ×¨×Ķ\":139189,\"ãģĨãģĵãģ¨\":139190,\"ÙĦØ§ØŃÙĤ\":139191,\"ãģĦãĤĮãģ°\":139192,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·ÑĥÑİÑĤ\":139193,\"ĠBá»Łi\":139194,\"Ġ×©×§×ľ×Ļ×Ŀ\":139195,\"ÑĨÐ¸ÐºÐ»\":139196,\"ÐĲÐŀ\":139197,\"Ġ×ĳ×©×ł×Ķ\":139198,\"ÙĨØ´Ø·\":139199,\"Ġ×©×Ļ×ł×ķ×Ļ\":139200,\"Ġ×©×Ļ×ł×ķ×Ļ×Ļ×Ŀ\":139201,\"ĠpoblaciÃ³n\":139202,\"ĠHÆ°ng\":139203,\"à¸£à¸°à¸§\":139204,\"à¸£à¸°à¸§à¸±à¸ĩ\":139205,\"Ø±ÙĬØ§Ø¶Ø©\":139206,\"Ø±ØµØ¯\":139207,\"ØªÙĤÙĦÙĬ\":139208,\"ØªÙĤÙĦÙĬØ¯\":139209,\"ĠÃ¼lkem\":139210,\"ĠÃ¼lkemiz\":139211,\"à¸Ĭà¸°\":139212,\"ãĤ¯ãĥªãĥ¼ãĥł\":139213,\"èģŀãģĦãģŁ\":139214,\"ĠwaÅ¼\":139215,\"ĠwaÅ¼ne\":139216,\"ê±°ëĵł\":139217,\"ê±°ëĵłìļĶ\":139218,\"×ŀ×Ĳ×ĳ×§\":139219,\"×Ĺ×ĵ×©×ķ×ª\":139220,\"ĠWroc\":139221,\"ĠWrocÅĤaw\":139222,\"ĠKÃ¼ltÃ¼r\":139223,\"sist\":139224,\"sistÃªncia\":139225,\"×¢×ĸ×¨×Ķ\":139226,\"ĠgÆ°Æ¡ng\":139227,\"à¸£à¹īà¸²à¸Ļà¸Ħà¹īà¸²\":139228,\"ĠÙĪØ£ÙĪØ¶ØŃ\":139229,\"Ã¡ndose\":139230,\"ãĤ·ãĥ¼ãĥ³\":139231,\"×Ĳ×ł×¨×Ĵ\":139232,\"×Ĳ×ł×¨×Ĵ×Ļ×Ķ\":139233,\"ãģªãģĦãģ§ãģĻ\":139234,\"Ġkhá»§ng\":139235,\"Ġë¬¸ìĦľ\":139236,\"Ġ×ĳ×ĵ×ĳ×¨\":139237,\"×ĵ×Ļ×ķ\":139238,\"×ĵ×Ļ×ķ×ķ×Ĺ\":139239,\"ĠrÃ©gl\":139240,\"ÙħÙĪØ§Ø¯\":139241,\"Ð¾Ð±Ð¾ÑĢ\":139242,\"Ð¾Ð±Ð¾ÑĢÐ¾ÑĤ\":139243,\"Ġ×Ķ×ĳ×ľ\":139244,\"Ġ×Ķ×ĳ×ľ×ķ×Ĵ\":139245,\"ØŃØ§Ùħ\":139246,\"ĠØ§ÙĦØ¹Ø§Øµ\":139247,\"ĠØ§ÙĦØ¹Ø§ØµÙħØ©\":139248,\"Ð¿ÐµÑĢÐ°ÑĤÐ¾ÑĢ\":139249,\"ØªØ®ÙĦ\":139250,\"ØªØ®ÙĦØµ\":139251,\"ãģŁãģłãģĹ\":139252,\"ØªØ³Ùħ\":139253,\"à¹Ĥà¸£à¸ĩà¸ŀ\":139254,\"à¹Ĥà¸£à¸ĩà¸ŀà¸¢à¸²\":139255,\"à¹Ĥà¸£à¸ĩà¸ŀà¸¢à¸²à¸ļà¸²à¸¥\":139256,\"ĠYÃ¼k\":139257,\"ĠYÃ¼ksek\":139258,\"Ġ×©×ł×Ļ×ª\":139259,\"Ġ×©×ł×Ļ×ª×Ł\":139260,\"liÄŁe\":139261,\"Ġ×¤×ª\":139262,\"Ġ×¤×ª×ķ×Ĺ\":139263,\"ĠbeÄŁ\":139264,\"ĠbeÄŁen\":139265,\"Ġ×ŀ×ķ×¨\":139266,\"Ġ×ŀ×ķ×¨×Ľ×ĳ\":139267,\"ĠØ±Ø³Ø§ÙĦØ©\":139268,\"íĨµìĭł\":139269,\"Ġavalia\":139270,\"ĠavaliaÃ§Ãµes\":139271,\"Ġmanh\":139272,\"ĠmanhÃ£\":139273,\"Ġìķŀ\":139274,\"Ġìķŀìľ¼ë¡ľ\":139275,\"ÙĤØªØ±\":139276,\"ÙĤØªØ±ØŃ\":139277,\"à¹Ģà¸ģà¸·à¸Ń\":139278,\"à¹Ģà¸ģà¸·à¸Ńà¸ļ\":139279,\"ĠproposÃ©\":139280,\"Ø£ÙħØ§\":139281,\"Ø£ÙħØ§ÙĥÙĨ\":139282,\"ĠÐŀÐŀ\":139283,\"ĠÐŀÐŀÐŀ\":139284,\"ÙħÙĤØ§Ø±\":139285,\"ÙħÙĤØ§Ø±ÙĨØ©\":139286,\"ëĦĲ\":139287,\"ãģĦãģŁãģłãģı\":139288,\"ÙĤÙĬÙĦ\":139289,\"ĠÐ½Ð°ÑĪÐ¸Ñħ\":139290,\"ãĤ«ãĥĥãĥĹ\":139291,\"×Ĺ×ľ×ª\":139292,\"Ġëĭ¤ë§Į\":139293,\"à¸Ĺà¸±à¹Īà¸§à¹Ĥà¸¥à¸ģ\":139294,\"ãĥįãĤ¿\":139295,\"ØŃØ³Ø§Ø³\":139296,\"ãģ«ãģªãĤĮ\":139297,\"Ø¬Ø§Ø¦\":139298,\"Ø¬Ø§Ø¦Ø²Ø©\":139299,\"Ã©change\":139300,\"Ã©conom\":139301,\"Ã©conomie\":139302,\"Ð¢Ðĺ\":139303,\"×¡×ª×Ľ×ľ\":139304,\"à¸Ĺà¸±à¹īà¸ĩà¸ªà¸Ńà¸ĩ\":139305,\"ĠØ§ÙĦØ®Ø§Ùħ\":139306,\"ĠØ§ÙĦØ®Ø§ÙħØ³\":139307,\"×§×ĺ×¢\":139308,\"auwaÅ¼\":139309,\"à¸ľà¸¹à¹īà¸Ĭà¸²à¸¢\":139310,\"à¹ģà¸Ľà¸¥à¸ģ\":139311,\"åĲĮæĻĤãģ«\":139312,\"Ð·Ð½Ð°Ð½Ð¸Ñı\":139313,\"ãģĦãģŁãģłãģįãģ¾ãģĹãģŁ\":139314,\"Ġ×ŀ×ĳ×ľ×Ļ\":139315,\"à¸Ĥà¸Ńà¹ĥà¸«à¹ī\":139316,\"ĠØ§ÙĦØªØ±Ø¨ÙĬØ©\":139317,\"ĠdÃ©couvert\":139318,\"ĠÅ¼yciu\":139319,\"aprÃ¨s\":139320,\"Ġyab\":139321,\"Ġyabanc\":139322,\"ĠyabancÄ±\":139323,\"ĠbaÅŁlayan\":139324,\"ìĹĪëįĺ\":139325,\"ĠhesabÄ±\":139326,\"Ġë§Įìķ½\":139327,\"ë§Īëĭ¤\":139328,\"ĠThÃ¡nh\":139329,\"ãĥ´ãĤ¡\":139330,\"à¸Ľà¸£à¸±à¸ļà¸Ľà¸£\":139331,\"à¸Ľà¸£à¸±à¸ļà¸Ľà¸£à¸¸à¸ĩ\":139332,\"ĠMáº·c\":139333,\"à¹Ģà¸«à¸ķà¸¸à¸ľà¸¥\":139334,\"ĠÐĳÐµÐ·\":139335,\"ĠcapacitÃł\":139336,\"ÅĤeÅĽ\":139337,\"ĠÐ¿ÑĢÐµÐ¸Ð¼\":139338,\"ĠÐ¿ÑĢÐµÐ¸Ð¼ÑĥÑīÐµÑģÑĤÐ²\":139339,\"ĠÅļwiÄĻt\":139340,\"ĠpubliÃ©\":139341,\"×ŀ×¢×¦×ĳ\":139342,\"ÙħØ´Ø§Ø±ÙĥØ§Øª\":139343,\"à¸łà¸²à¸©\":139344,\"à¸łà¸²à¸©à¸µ\":139345,\"ĠdeuxiÃ¨me\":139346,\"ĠÙħØŃØ§ÙģØ¸\":139347,\"ĠÙħØŃØ§ÙģØ¸Ø©\":139348,\"ĠSchÃ¶n\":139349,\"ï½¤\":139350,\"Ġ×Ķ×ĳ×¢\":139351,\"Ġ×Ķ×ĳ×¢×Ļ×Ķ\":139352,\"ĠÙĪØ§ÙĦÙĦÙĩ\":139353,\"è¨Ģãģ£ãģŁ\":139354,\"à¸ķà¹īà¸²à¸Ļ\":139355,\"à¸§à¸£à¸£à¸ĵ\":139356,\"à¸Ĺà¸´à¸¨\":139357,\"ĠbaÅŁÄ±na\":139358,\"ĠmogÄĻ\":139359,\"×©×Ļ×¤×ķ×¨\":139360,\"ĠÙĪØ¹Ø¯\":139361,\"ĠÙĪØ¹Ø¯Ùħ\":139362,\"ĠhistÃ³rico\":139363,\"ĠkÄ±sÄ±\":139364,\"ĠìĿ´ê²Į\":139365,\"ĠPolÃŃtica\":139366,\"ĠÑģÐ¸ÑĤÑĥÐ°ÑĨÐ¸Ð¸\":139367,\"ĠkoÅĦca\":139368,\"×ĳ×ĵ×Ļ×§×Ķ\":139369,\"ĠØ§ÙĦØ³ÙĬØ§Ø±Ø§Øª\":139370,\"ãģªãĤīãģ°\":139371,\"ãĤµãĥ©\":139372,\"ãĤĭãģĵãģ¨ãģĮãģ§ãģįãĤĭ\":139373,\"ĠdecisÃ£o\":139374,\"×ķ×ķ×ĵ\":139375,\"lÃ¤ss\":139376,\"lÃ¤ssig\":139377,\"Ġ×ľ×Ļ×©×¨×Ĳ×ľ\":139378,\"ĠÙĬØ£ØªÙĬ\":139379,\"×¨×ķ×ĸ\":139380,\"Ã¶ÄŁ\":139381,\"Ã¶ÄŁret\":139382,\"Ã¶ÄŁretim\":139383,\"ĠÐ´ÐµÐº\":139384,\"ĠÐ´ÐµÐºÐ°Ð±\":139385,\"ĠÐ´ÐµÐºÐ°Ð±ÑĢÑı\":139386,\"Ġ×©×Ĺ×ķ×¨\":139387,\"ãģ¦ãģıãĤĮãģŁ\":139388,\"Ø¹Ø¨Ø§Ø±Ø©\":139389,\"ĠÃ©lectrique\":139390,\"ĠØ§ÙĦØªÙĨÙħÙĬØ©\":139391,\"Ø¬Ø±Ùī\":139392,\"ĠìĪĺíĸī\":139393,\"à¸Ĺà¸¹\":139394,\"ĠÑĢÐµÐ°Ð»ÑĮÐ½Ð¾\":139395,\"ÑģÐ¿Ð¾ÑģÐ¾Ð±\":139396,\"à¸Ħà¸¥à¹īà¸²à¸¢\":139397,\"ĠØ³Ø¹ÙĪØ¯\":139398,\"Ã¶nÃ¼\":139399,\"ĠÙģÙħÙĨ\":139400,\"ØªÙĥÙĪ\":139401,\"ØªÙĥÙĪÙĬÙĨ\":139402,\"ĠÐºÐ°ÑĩÐµÑģÑĤÐ²Ð¾\":139403,\"ĠÐºÐ¾Ð½ÑĤÐ°Ðº\":139404,\"ĠÐºÐ¾Ð½ÑĤÐ°ÐºÑĤ\":139405,\"ĠsÃ¶zleÅŁme\":139406,\"à¸Ńà¹īà¸²à¸ĩ\":139407,\"ĠØªÙĪÙģ\":139408,\"ĠØªÙĪÙģÙĬØ±\":139409,\"×Ķ×ĸ×ĵ\":139410,\"×Ķ×ĸ×ĵ×ŀ×ł×ķ×ª\":139411,\"ĠØ·ÙĪÙĬÙĦØ©\":139412,\"ĠtÃ©rmino\":139413,\"Ġ×Ĳ×Ļ×¤×Ķ\":139414,\"ãĥĵãĥ«\":139415,\"à¸ªà¹Ĥà¸¡\":139416,\"à¸ªà¹Ĥà¸¡à¸ªà¸£\":139417,\"ĠØ§ÙĦØ§Ø«\":139418,\"ĠØ§ÙĦØ§Ø«ÙĨÙĬÙĨ\":139419,\"ÐµÐ²Ð¸Ñĩ\":139420,\"ĠopiniÃ³n\":139421,\"à¸Ľà¸§à¸Ķ\":139422,\"åı¤ãģĦ\":139423,\"à¸£à¹Īà¸²\":139424,\"ĠBiaÅĤ\":139425,\"ĠÑģÑĤÐ°Ð»\":139426,\"ĠÑģÑĤÐ°Ð»Ð¾\":139427,\"Ã³logo\":139428,\"ĠìķĦëĭĪëĭ¤\":139429,\"Ġ×Ĳ×Ļ×ª\":139430,\"Ġ×Ĳ×Ļ×ª×ķ\":139431,\"à¹Ģà¸«à¹ĩà¸Ļà¸§à¹Īà¸²\":139432,\"à¸ļà¸²à¸£à¹Į\":139433,\"çĦ¼\":139434,\"çĦ¼ãģį\":139435,\"ĠìĿ´ìļ©ìŀĲ\":139436,\"ĠÐ½ÐµÐºÐ¾ÑĤÐ¾ÑĢÑĭÐµ\":139437,\"ksz\":139438,\"ksztaÅĤ\":139439,\"ksztaÅĤc\":139440,\"ãĤŃãĥ£ãĥĥãĤ·\":139441,\"ãĤŃãĥ£ãĥĥãĤ·ãĥ³ãĤ°\":139442,\"ĠroÅĽ\":139443,\"ĠroÅĽlin\":139444,\"ÑĢÐ°Ð¶Ð°\":139445,\"×ĳ×ł×Ļ×Ļ×Ķ\":139446,\"à¸Ľà¸£à¸ªà¸´\":139447,\"à¸Ľà¸£à¸ªà¸´à¸ķ\":139448,\"ĠgÃ¶rdÃ¼\":139449,\"×ŀ×ł×Ķ×Ļ×Ĵ\":139450,\"å¤īãĤıãģ£ãģ¦\":139451,\"Ġ×Ĳ×Ķ\":139452,\"Ġ×Ĳ×Ķ×ĳ×ª×Ļ\":139453,\"à¹Ģà¸£à¹Īà¸ĩ\":139454,\"ĠÃ¶nÃ¼nde\":139455,\"Ġê·¸ëĥ¥\":139456,\"Ð¿Ð¾Ð»Ð¸ÑĤ\":139457,\"Ð¿Ð¾Ð»Ð¸ÑĤÐ¸ÑĩÐµÑģÐº\":139458,\"ãĥ¡ãĥĩãĤ£\":139459,\"ãĥ¡ãĥĩãĤ£ãĤ¢\":139460,\"ĠDetay\":139461,\"ĠDetaylÄ±\":139462,\"ĠØ§ÙĦØµÙģØŃØ©\":139463,\"à¸ģà¸²à¸£à¹Ģà¸ĩà¸´à¸Ļ\":139464,\"Ġìµľê·¼\":139465,\"×Ľ×©×ľ\":139466,\"ï¼©\":139467,\"Ð²ÑĪÐµÐ³Ð¾\":139468,\"íķĺìĭ¤\":139469,\"ĠÐŃÑĤ\":139470,\"ĠÐŃÑĤÐ¾ÑĤ\":139471,\"à¸ªà¸·\":139472,\"à¸ªà¸·à¸ļ\":139473,\"Ġngá»«ng\":139474,\"ĠÐ´Ð¾ÐºÑĥÐ¼ÐµÐ½ÑĤÐ¾Ð²\":139475,\"Ð´Ð°Ð²Ð°ÑĤÑĮ\":139476,\"ĠØ§ÙĦØ´Ø®ØµÙĬØ©\":139477,\"Ġ×¦×¢×Ļ×¨\":139478,\"Ø¯Ø±Ùĥ\":139479,\"Ø³ØŃØ¨\":139480,\"à¹Ħà¸¡à¹Īà¸Ħà¹Īà¸Ńà¸¢\":139481,\"Ġ×Ķ×ŀ×§×ķ×ŀ×Ļ\":139482,\"à¸ªà¸±à¹Īà¸ĩà¸ĭà¸·à¹īà¸Ń\":139483,\"Ġê·¸ê²ĥìĿĦ\":139484,\"ãģĤãĤĭãģĦ\":139485,\"ãģĤãĤĭãģĦãģ¯\":139486,\"×Ĳ×ķ×ĺ×ķ×ĳ\":139487,\"×Ĳ×ķ×ĺ×ķ×ĳ×ķ×¡\":139488,\"ÐºÑĨÐ¸Ð¾Ð½\":139489,\"ĠÐľÐ¾Ð¶Ð½Ð¾\":139490,\"ãģıãģł\":139491,\"ãģıãģłãģķ\":139492,\"ĠÐ¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ñı\":139493,\"ï»Ł\":139494,\"ĠìŀĳìĹħ\":139495,\"Ġ×Ļ×ķ×¡×£\":139496,\"Ø¥Ø¯Ø§Ø±Ø©\":139497,\"ĠØ§ÙĦØŃØ§Ø¬\":139498,\"×ł×¡×Ļ×¢×Ķ\":139499,\"Ð¸Ð·Ð°ÑĨÐ¸Ñı\":139500,\"×Ĳ×ľ×ĳ\":139501,\"×Ĳ×ľ×ĳ×ķ×Ŀ\":139502,\"Ð¿ÐµÐ´\":139503,\"Ġ×§×ĺ×ł×Ķ\":139504,\"ĠÙĨÙģØ³ÙĩØ§\":139505,\"ĠMinistÃ©rio\":139506,\"ĠÐ¿ÐµÐ½\":139507,\"ĠÐ¿ÐµÐ½ÑģÐ¸\":139508,\"ãĥĲãĥ©ãĥ³ãĤ¹\":139509,\"Ġ×Ķ×ª×ķ×¨×Ķ\":139510,\"Ġtáº¡m\":139511,\"ĠìĹŃìĭľ\":139512,\"ï½¡\":139513,\"Ġthá»±\":139514,\"ĠÄ±sÄ±\":139515,\"ì»¨\":139516,\"ãģĹãģ£ãģĭãĤĬãģ¨\":139517,\"ĠxÆ°a\":139518,\"Ġcáº·p\":139519,\"×Ĺ×Ļ×ĳ×ķ×¨\":139520,\"à¸§à¸±à¸Ĵà¸Ļà¸ĺà¸£à¸£à¸¡\":139521,\"stÃ¤r\":139522,\"stÃ¤rke\":139523,\"ĠÑģÐ°Ð¼ÑĭÐ¹\":139524,\"pisa\":139525,\"pisaÄĩ\":139526,\"ĠoluÅŁan\":139527,\"ĠØ§ÙĦØ¥ÙħØ§Ùħ\":139528,\"ĠcÄĥng\":139529,\"ĠgÃ¼nl\":139530,\"ĠgÃ¼nlÃ¼k\":139531,\"Ġ×ł×©×Ĳ×¨\":139532,\"Ġkhiá»ĥn\":139533,\"ç¶ļãģĳãĤĭ\":139534,\"stituciÃ³n\":139535,\"ĠcapacitÃ©\":139536,\"Ġjaki\":139537,\"ĠjakiÅĽ\":139538,\"Ð²ÑĪÐ¸Ñģ\":139539,\"Ð²ÑĪÐ¸ÑģÑĮ\":139540,\"×¤×¢×ķ×ľ×ķ×ª\":139541,\"ĠØŃÙĬØ§Øª\":139542,\"ĠØŃÙĬØ§ØªÙĩ\":139543,\"ĠÐ½Ð¸ÐºÐ¾Ð³Ð´Ð°\":139544,\"ÐĽÐ¬\":139545,\"Ġ×Ķ×¢×ķ×ĳ\":139546,\"Ġ×Ķ×¢×ķ×ĳ×ĵ×Ķ\":139547,\"ĠchÃło\":139548,\"à¸«à¸¥à¸²à¸¢à¹Ĩ\":139549,\"ĠÑıÐ½\":139550,\"ĠÑıÐ½Ð²Ð°ÑĢ\":139551,\"ĠÑıÐ½Ð²Ð°ÑĢÑı\":139552,\"à¸Īà¸³à¹Ģà¸Ľà¹ĩà¸Ļà¸ķà¹īà¸Ńà¸ĩ\":139553,\"ĠhÃ¶her\":139554,\"ãģķãĤĮãģ¦ãģĦãģŁ\":139555,\"à¸ªà¸ĩà¸ªà¸±\":139556,\"à¸ªà¸ĩà¸ªà¸±à¸¢\":139557,\"ĠØ§ÙĦØ§Ø³\":139558,\"ĠØ§ÙĦØ§Ø³ÙĦØ§Ùħ\":139559,\"ĠØ§ÙĦØ´ÙħØ³\":139560,\"à¸ªà¸ĸà¸²à¸Ļà¸µ\":139561,\"ãĤ¯ãĥ©ãĤ¹\":139562,\"à¸ŀà¸£à¸£\":139563,\"à¸ŀà¸£à¸£à¸Ħ\":139564,\"pÃµ\":139565,\"pÃµe\":139566,\"ĠporÃ©m\":139567,\"à¸Ľà¸£à¸°à¸ªà¸ĩ\":139568,\"à¸Ľà¸£à¸°à¸ªà¸ĩà¸Ħà¹Į\":139569,\"powiedzie\":139570,\"powiedzieÄĩ\":139571,\"ĠÐ¼Ð¾Ð³Ñĥ\":139572,\"ĠÐ¶ÐµÐ»\":139573,\"ĠÐ¶ÐµÐ»ÐµÐ·\":139574,\"ĠØ§ÙĦØ«ÙĤ\":139575,\"ĠØ§ÙĦØ«ÙĤØ§ÙģÙĬ\":139576,\"ĠÐ¿ÑĢÐ°Ð²Ð¸Ð»Ð¾\":139577,\"ĠgdyÅ¼\":139578,\"×¤×©×ķ×ĺ\":139579,\"ÑĢÐ°Ð±Ð¾ÑĤÐºÐ°\":139580,\"ĠÙĥØ±Ø©\":139581,\"Ø´Ø¯Ø¯\":139582,\"ÙħØ§Ø±Ùĥ\":139583,\"ÙħÙĥØ©\":139584,\"ĠÐ¿Ð¾Ð´Ð¿Ð¸Ñģ\":139585,\"×ĺ×ķ×ķ×Ĺ\":139586,\"ĠÅĽc\":139587,\"ĠÅĽcian\":139588,\"ĠØ±Ø¬Ø§ÙĦ\":139589,\"Ġ×ª×ľ×ķ×Ļ\":139590,\"Ð¸ÑĪ\":139591,\"Ð¸ÑĪÑĮ\":139592,\"ĠmÃ©dec\":139593,\"ĠmÃ©decin\":139594,\"ëįĶëĿ¼ëıĦ\":139595,\"ĠÑĤÐµÐ±Ñı\":139596,\"Ġ×ľ×Ķ×ķ×¡×Ļ×£\":139597,\"ãģĬè©±\":139598,\"Ġà¹ģà¸ķà¹Īà¸ģà¹ĩ\":139599,\"Ø¯Ø§Ùģ\":139600,\"Ø¯Ø§ÙģØ¹\":139601,\"ĠCÃ¹ng\":139602,\"ãĥ»ãĥ»ãĥ»ãĥ»\":139603,\"ê¶ģ\":139604,\"ĠdeberÃŃa\":139605,\"à¸«à¸Ļà¹Īà¸§à¸¢à¸ĩà¸²à¸Ļ\":139606,\"ĠvaÌĢ\":139607,\"Ġ×¢×¦×ŀ\":139608,\"Ġ×¢×¦×ŀ×Ŀ\":139609,\"à¹Ģà¸Ĭà¸·à¹Īà¸Ńà¸§à¹Īà¸²\":139610,\"×©×§×¢\":139611,\"Ġ×Ķ×Ľ×ķ×ľ\":139612,\"Ġ×Ķ×Ľ×ķ×ľ×ľ\":139613,\"Ð½Ð¸Ð±ÑĥÐ´\":139614,\"Ð½Ð¸Ð±ÑĥÐ´ÑĮ\":139615,\"ĠëĦĪíĿ¬\":139616,\"ĠÐ¾Ð±ÑĢÐ°Ñī\":139617,\"ĠÐ¾Ð±ÑĢÐ°ÑīÐ°\":139618,\"Ġ×¢×ĳ×ķ×ĵ×ª\":139619,\"ĠØ§ÙĦÙħÙĨØªØ®Ø¨\":139620,\"Ä±yord\":139621,\"Ä±yordu\":139622,\"ÙĪØ°\":139623,\"×Ĺ×©×Ļ×ĳ×ķ×ª\":139624,\"Ġ×Ķ×¢×Ļ×§\":139625,\"Ġ×Ķ×¢×Ļ×§×¨×Ļ\":139626,\"ì¢Į\":139627,\"à¸¢à¸¸à¹Ĥà¸£\":139628,\"à¸¢à¸¸à¹Ĥà¸£à¸Ľ\":139629,\"ĠÐ°Ð¿ÑĢ\":139630,\"ĠÐ°Ð¿ÑĢÐµÐ»Ñı\":139631,\"szed\":139632,\"szedÅĤ\":139633,\"Ð´Ð¾Ð½\":139634,\"à¹Ģà¸ķà¸´à¸ļ\":139635,\"à¹Ģà¸ķà¸´à¸ļà¹Ĥà¸ķ\":139636,\"ÐºÐ¾Ð»Ð¾\":139637,\"ĠkaÅ¼dej\":139638,\"å¸°\":139639,\"å¸°ãĤĬ\":139640,\"ĠÐ¼Ð¸Ð»Ð»Ð¸\":139641,\"ĠÐ¼Ð¸Ð»Ð»Ð¸Ð¾Ð½\":139642,\"ç¾İåĳ³ãģĹãģĦ\":139643,\"ØªÙĤØ§Ø±\":139644,\"ØªÙĤØ§Ø±ÙĬØ±\":139645,\"ĠìĿ´ë£¨\":139646,\"ĠìĿ´ë£¨ìĸ´\":139647,\"ĠsprzedaÅ¼\":139648,\"×Ķ×ķ×¦×Ĳ×ķ×ª\":139649,\"ãĤ¢ãĤ¯ãĤ»\":139650,\"ãĤ¢ãĤ¯ãĤ»ãĤ¹\":139651,\"×¨×ķ×¥\":139652,\"ĠÐ³Ð¾ÑģÑĥÐ´Ð°ÑĢÑģÑĤÐ²ÐµÐ½Ð½\":139653,\"Ø£ØŃÙĥ\":139654,\"Ø£ØŃÙĥØ§Ùħ\":139655,\"ĠoluÅŁu\":139656,\"ĠAÃ§\":139657,\"ĠAÃ§Ä±k\":139658,\"ãĤ¸ãĥ¼\":139659,\"ç´łæĻ´\":139660,\"ç´łæĻ´ãĤīãģĹãģĦ\":139661,\"Ġ×ĳ×©×ĳ×ķ×¢\":139662,\"Ø¨Ø°\":139663,\"Ø¨Ø°ÙĦ\":139664,\"à¸ªà¸²à¹Ģà¸«à¸ķà¸¸\":139665,\"Ġpozosta\":139666,\"ĠpozostaÅĤ\":139667,\"ØŃØ±Ùħ\":139668,\"ĠimportÃ¢ncia\":139669,\"leÅŁtirme\":139670,\"ĠÐ´ÑĢÐµÐ²\":139671,\"ĠmÃ³vil\":139672,\"ĠAynÄ±\":139673,\"ĠÐ½Ð°Ð»Ð¾Ð³\":139674,\"ĠÐ½Ð°Ð»Ð¾Ð³Ð¾Ð²\":139675,\"Ġ×Ĺ×Ļ×¤×Ķ\":139676,\"ĠÑĦÐ¾ÑĢÐ¼Ñĥ\":139677,\"à¸Ĺà¸Ķà¸ªà¸Ńà¸ļ\":139678,\"ĠksiÄħÅ¼ki\":139679,\"ĠmaÅĤe\":139680,\"ÙħØ³Ø£ÙĦ\":139681,\"ÙħØ³Ø£ÙĦØ©\":139682,\"ï¼¾ï¼¾\":139683,\"Ã§Ã£este\":139684,\"Ã©viter\":139685,\"ĠÐºÐ¾Ð½ÑģÑĤÑĢÑĥÐº\":139686,\"ĠÐºÐ¾Ð½ÑģÑĤÑĢÑĥÐºÑĨÐ¸\":139687,\"ï¾ŀ\":139688,\"Ġ×ª×ķ×Ľ×ł\":139689,\"ãĤ¹ãĥĪãĥ¬ãĤ¹\":139690,\"ĠØ§ÙĦØ§ÙĤØªØµØ§Ø¯ÙĬ\":139691,\"×ŀ×ĵ×Ļ\":139692,\"ĠwÅĤad\":139693,\"ĠwÅĤadz\":139694,\"Ø®ÙĪÙģ\":139695,\"ĠÐ¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð»Ð¾Ð²\":139696,\"ãģ¨ãģ£ãģ¦ãĤĤ\":139697,\"Ġznajdu\":139698,\"ĠznajdujÄħ\":139699,\"ÙģØ¦Ø©\":139700,\"ãģ©ãģ®ãĤĪãģĨãģª\":139701,\"æĬĳãģĪ\":139702,\"×ł×Ĺ×ľ\":139703,\"ĠdÃ¼ny\":139704,\"ĠdÃ¼nyan\":139705,\"ĠdÃ¼nyanÄ±n\":139706,\"Ð³ÑĢÐ°Ð½Ð¸\":139707,\"Ð³ÑĢÐ°Ð½Ð¸Ñĩ\":139708,\"Ġ×Ķ×©×ľ×Ļ×©×Ļ\":139709,\"Ġ×Ķ×Ĳ×©\":139710,\"åıĬãģ³\":139711,\"ìĭŃìĭľ\":139712,\"ìĭŃìĭľìĺ¤\":139713,\"ĠÐ´Ð¾Ð»Ð»\":139714,\"ĠÐ´Ð¾Ð»Ð»Ð°ÑĢ\":139715,\"ĠÐ¿Ð¾Ð²ÑĤÐ¾ÑĢ\":139716,\"Ġ×Ĺ×Ļ×ł×Ŀ\":139717,\"×ª×¤×ª×Ĺ\":139718,\"ÑĥÐ²ÐµÐ»Ð¸\":139719,\"ÑĥÐ²ÐµÐ»Ð¸ÑĩÐµÐ½\":139720,\"ãĤ«ãĥª\":139721,\"rawid\":139722,\"rawidÅĤow\":139723,\"×ķ×ķ×ľ\":139724,\"ãĥŁãĥ¥\":139725,\"ì½ĺ\":139726,\"ĠByÅĤ\":139727,\"ÐľÐĲ\":139728,\"Ø¹ÙĲ\":139729,\"ĠÑģÐ¾Ð²ÐµÑĢÑĪ\":139730,\"ĠÑģÐ¾Ð²ÐµÑĢÑĪÐµÐ½Ð½Ð¾\":139731,\"ĠÐ¼Ð¾Ð¹\":139732,\"Ġ×ķ×ľ×Ĳ×Ĺ×¨\":139733,\"æħ£\":139734,\"æħ£ãĤĮ\":139735,\"ØŃØ§ÙģØ¸\":139736,\"Ġë¬´ë£Į\":139737,\"à¸Ħà¸ĵà¸°à¸ģà¸£à¸£à¸¡\":139738,\"à¸Ħà¸ĵà¸°à¸ģà¸£à¸£à¸¡à¸ģà¸²à¸£\":139739,\"Ġìĸ´ëĶĶ\":139740,\"Ġdiferen\":139741,\"ĠdiferenÃ§a\":139742,\"ĠØ§ÙĦØ£Ø³Ø§Ø³\":139743,\"ĠØ§ÙĦØ£Ø³Ø§Ø³ÙĬØ©\":139744,\"Ġ×ľ×Ĳ×Ĺ×¨×ķ×ł×Ķ\":139745,\"ê·ł\":139746,\"Ġ×Ķ×©×ł×Ļ×Ļ×Ķ\":139747,\"ìľĦìĽĲìŀ¥\":139748,\"à¸¥à¸¸à¸ģ\":139749,\"Ã§iler\":139750,\"Ġ×Ķ×Ĳ×ľ×ķ\":139751,\"èģŀãģı\":139752,\"Ġ×ķ×Ĳ×¤×Ļ×ľ×ķ\":139753,\"ĠÑĢÐµÐ°Ð»Ð¸Ð·\":139754,\"ĠÑĢÐµÐ°Ð»Ð¸Ð·Ð°ÑĨÐ¸\":139755,\"à¸£à¸°à¸¢à¸°à¹Ģà¸§à¸¥à¸²\":139756,\"ĠØ¬Ø¯Ø§Ùĭ\":139757,\"ØªØ¨Ø§Ø¹\":139758,\"ĠvehÃŃculo\":139759,\"ĠÐ´Ð¾Ð»Ð³\":139760,\"à¸Ľà¸£à¸´à¸¡à¸²à¸ĵ\":139761,\"ì¦Ĳ\":139762,\"Ġ×ľ×ŀ×§×ķ×Ŀ\":139763,\"ĠìĤ¬ì§Ħ\":139764,\"à¸Ĭà¹īà¸²\":139765,\"Ġ×ŀ×¢×ķ×ľ×Ķ\":139766,\"ĠgÃ¶rm\":139767,\"ĠgÃ¶rmek\":139768,\"ĠÙĪÙĩØ°Ùĩ\":139769,\"Ð¿ÐµÑĢÐ²\":139770,\"Ð¿ÐµÑĢÐ²ÑĭÑħ\":139771,\"ê·¸ëŀĺ\":139772,\"ĠØ§ÙĦØ¨Ø±ÙĬØ·\":139773,\"ĠØ§ÙĦØ¨Ø±ÙĬØ·Ø§ÙĨÙĬ\":139774,\"ĠÐ¸ÑİÐ½Ñı\":139775,\"ĠÐĵÐ¾ÑĢ\":139776,\"Ġ×ľ×©×ľ×Ŀ\":139777,\"ÐĲÐĿ\":139778,\"ĠÐ½Ð°Ð·Ð½Ð°ÑĩÐµÐ½\":139779,\"Ð¾Ð¾ÑĢ\":139780,\"Ð¾Ð¾ÑĢÑĥÐ¶\":139781,\"ĠÃ¶zelli\":139782,\"ĠÃ¶zelliÄŁi\":139783,\"ĠÐ½Ð¸Ð¶Ðµ\":139784,\"ç¶ļãģĳãģ¦\":139785,\"ĠÐ°ÑĢÐµÐ½Ð´\":139786,\"ĠkatÄ±lÄ±\":139787,\"ĠkatÄ±lÄ±m\":139788,\"ĠØ¥Ø·ÙĦØ§ÙĤ\":139789,\"ĠÙĪØ¥Ø°Ø§\":139790,\"ĠÐ¾ÐºÑĤÑı\":139791,\"ĠÐ¾ÐºÑĤÑıÐ±ÑĢÑı\":139792,\"à¹Ĥà¸ķà¹\":139793,\"à¹Ĥà¸ķà¹Ĭ\":139794,\"à¹Ĥà¸ķà¹Ĭà¸°\":139795,\"ĠolduklarÄ±\":139796,\"ÙħÙĪÙĤØ¹\":139797,\"ëĤ©\":139798,\"ãģ¨æĢĿãģ£ãģ¦ãģĦãĤĭ\":139799,\"Ġ×©×Ļ×Ľ×ķ×ľ\":139800,\"à¸§à¸²à¸Ķ\":139801,\"Ø³ÙĬÙĦ\":139802,\"à¸Ĥà¸§à¸±\":139803,\"à¸Ĥà¸§à¸±à¸į\":139804,\"ØªØŃÙĥÙħ\":139805,\"ìĤŃ\":139806,\"ĠconnaÃ®t\":139807,\"×ł×¤×ª×Ĺ\":139808,\"Ġcháº·\":139809,\"Ġcháº·n\":139810,\"ĠÙħØŃÙħ\":139811,\"ĠÙħØŃÙħÙĪØ¯\":139812,\"ãģ´\":139813,\"ĠÐ¿ÑĢÐ¾Ð´ÑĥÐºÑĨÐ¸Ð¸\":139814,\"Ð·Ð´ÑĢÐ°Ð²\":139815,\"ãģĶè¦\":139816,\"ãģĶè¦§\":139817,\"×Ĳ×ĳ×Ĳ\":139818,\"ĠvÃ©ritable\":139819,\"ĠØ·ÙģÙĦ\":139820,\"ãĥĪãĥ©ãĥĸãĥ«\":139821,\"ê³¡\":139822,\"Ġ×ª×ŀ×ķ×ł×Ķ\":139823,\"ĠkiÃªn\":139824,\"ĠÙĤØ§Ø¯Ø±\":139825,\"Ø¥ÙĤÙĦÙĬÙħ\":139826,\"ĠÐ¿ÑĢÐµÐ´Ð¿ÑĢÐ¸\":139827,\"ĠÐ¿ÑĢÐµÐ´Ð¿ÑĢÐ¸ÑıÑĤÐ¸Ñı\":139828,\"ĠbÄĥng\":139829,\"ĠayÄ±nda\":139830,\"Ġgáº¥p\":139831,\"ÐµÑħÐ°Ð»\":139832,\"ĠgiÃłnh\":139833,\"ĠÐ´Ð°Ð²\":139834,\"ĠÐ´Ð°Ð²Ð½Ð¾\":139835,\"ìĺĢëĭ¤\":139836,\"à¸Ļà¸±à¸ģà¹Ģà¸ķ\":139837,\"à¸Ļà¸±à¸ģà¹Ģà¸ķà¸°\":139838,\"ÙħØ³ØªØ´Ø§Ø±\":139839,\"Ø³ØªØ±Ø§ØªÙĬØ¬\":139840,\"Ø³ØªØ±Ø§ØªÙĬØ¬ÙĬ\":139841,\"Ø±ÙħØ²\":139842,\"ĠtÄ©nh\":139843,\"ë¡Ń\":139844,\"ĠÑĩÐµÑĤ\":139845,\"ĠÑĩÐµÑĤÑĭ\":139846,\"ĠÑĩÐµÑĤÑĭÑĢÐµ\":139847,\"ĠEntÃ£o\":139848,\"ĠØµØº\":139849,\"ĠØµØºÙĬØ±Ø©\":139850,\"×ĳ×Ļ×ĺ×ķ×ľ\":139851,\"Ø®Ø·ÙĪØ·\":139852,\"ĠÑĢÐ°Ð·Ð²Ð¸ÑĤÐ¸Ðµ\":139853,\"ĠamacÄ±yla\":139854,\"à¸Ĺà¸µà¸§à¸µ\":139855,\"ĠÐ¾ÑģÑĤ\":139856,\"ĠÐ¾ÑģÑĤÐ°Ð»ÑĮÐ½\":139857,\"×©×ķ×ľ×Ĺ×Ł\":139858,\"Ġ×Ľ×ł×Ļ×¡\":139859,\"Ġ×Ľ×ł×Ļ×¡×Ķ\":139860,\"ĠdáºŃy\":139861,\"ĠyaÅŁayan\":139862,\"Ġ×ŀ×Ķ×ķ×ķ×Ķ\":139863,\"ĠÑĥÑģÐ¸\":139864,\"ĠÑĥÑģÐ¸Ð»Ð¸\":139865,\"×ŀ×¤×Ļ\":139866,\"ĠÐ¿ÑĢÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñı\":139867,\"ĠØ±Ø¨\":139868,\"ĠØ±Ø¨ÙħØ§\":139869,\"ĠØ§ÙĦØ£ÙĪØ³Ø·\":139870,\"Ġìľłì§Ģ\":139871,\"Ġpracownik\":139872,\"ĠpracownikÃ³w\":139873,\"×ŀ×¡×ķ×¨×ª\":139874,\"ÙĤØ§Ø±Ø¨\":139875,\"à¸Ħà¸§à¸²à¸¡à¸£à¸¹à¹īà¸ªà¸¶à¸ģ\":139876,\"à¹ģà¸«à¸¥à¸°\":139877,\"ĠØ§ÙĦÙĨÙĤØ¯\":139878,\"Ġ×Ĳ×ľ×¤×Ļ\":139879,\"ÙħØ³Ø¦\":139880,\"ÙħØ³Ø¦ÙĪÙĦ\":139881,\"ÐµÐ²ÑĭÑħ\":139882,\"ÐºÐ»ÑİÑĩÐµÐ½Ð¸Ñı\":139883,\"×ĳ×Ļ×ł\":139884,\"×ĳ×Ļ×ł×Ļ×Ķ×Ŀ\":139885,\"×©×ķ×Ĳ×Ķ\":139886,\"ĠÅŁark\":139887,\"ĠÅŁarkÄ±\":139888,\"ĠsÃ¼rec\":139889,\"ĠsÃ¼recin\":139890,\"à¹Ģà¸Ħà¸£à¸Ķ\":139891,\"à¹Ģà¸Ħà¸£à¸Ķà¸´à¸ķ\":139892,\"ãĥĲãĥ¬\":139893,\"ĠØ´Ø£ÙĨ\":139894,\"à¹Ģà¸Ńà¸²à¹Ħà¸§à¹ī\":139895,\"niÄĻcie\":139896,\"×¨×¦×Ĺ\":139897,\"ĠaÅŁama\":139898,\"×ł×¤×Ĵ×¢\":139899,\"Ġthá»Ŀ\":139900,\"Ġkhuáº©n\":139901,\"diÄŁinde\":139902,\"ÑıÑīÐ¸Ñħ\":139903,\"ãĥĺãĥ«\":139904,\"ĠÃ¼berh\":139905,\"ĠÃ¼berhaupt\":139906,\"ĠÑĤÑĢÐµÐ±Ð¾Ð²Ð°\":139907,\"ĠdÅĤugi\":139908,\"×ĺ×Ļ×Ł\":139909,\"à¸Ĥà¸Ļà¸²à¸Ķà¹ĥà¸«à¸įà¹Ī\":139910,\"ĠØ§ÙĦØ£Ùĩ\":139911,\"ĠØ§ÙĦØ£ÙĩÙĦÙĬ\":139912,\"ĠMÃ¼d\":139913,\"ĠMÃ¼dÃ¼rÃ¼\":139914,\"Ġ×Ļ×Ķ×ķ×ĵ×Ķ\":139915,\"ÑĭÐ²Ð°ÐµÑĤÑģÑı\":139916,\"Ø³Ø§Ø·\":139917,\"×Ķ×ª×ł×Ķ×Ĵ\":139918,\"×Ķ×ª×ł×Ķ×Ĵ×ķ×ª\":139919,\"à¸ģà¸²à¸£à¸ľà¸¥à¸´à¸ķ\":139920,\"íĴĢ\":139921,\"à¸ªà¸ĸà¸²à¸Ļà¸ģà¸²à¸£à¸ĵà¹Į\":139922,\"ĠÐ¾ÑĦ\":139923,\"ĠÐ¾ÑĦÐ¸Ñģ\":139924,\"ĠÙĦØ¹Ø¨Ø©\":139925,\"ĠstronÄĻ\":139926,\"Ġ×¨×Ĳ×ķ×Ļ\":139927,\"×Ĺ×ĳ×ľ\":139928,\"ĠÑĢÑĭÐ½\":139929,\"ĠÑĢÑĭÐ½ÐºÐµ\":139930,\"Ġ×ľ×ŀ×¢×Ł\":139931,\"Ø§Ø³ÙĦ\":139932,\"à¸«à¸±à¸Ļ\":139933,\"Ġ×Ĳ×Ĺ×Ļ\":139934,\"ĠÐ¿ÑĢÐ¾Ð´Ð¾Ð»\":139935,\"ê°Ģìŀħ\":139936,\"Ġ×ĳ×¨×Ĺ\":139937,\"Ġ×ĳ×¨×Ĺ×ĳ×Ļ\":139938,\"Ð´Ð¶ÐµÑĢ\":139939,\"Ġ×ľ×Ĺ×ľ\":139940,\"Ġ×ľ×Ĺ×ľ×ķ×ĺ\":139941,\"Ġ×ľ×Ĺ×ľ×ķ×ĺ×Ļ×Ł\":139942,\"à¸¨à¸²à¸ªà¸Ļà¸²\":139943,\"ãĤ¢ãĤ¤ãĥĨ\":139944,\"ãĤ¢ãĤ¤ãĥĨãĥł\":139945,\"Ġ×¤×¨×ķ×¤\":139946,\"Ø¬Ø²Ø§Ø¡\":139947,\"à¸¥à¸Ńà¸¢\":139948,\"ĠciaÅĤa\":139949,\"Ġgiáº¿t\":139950,\"ĠÐ·Ð½Ð°ÑĩÐ¸ÑĤÐµÐ»ÑĮÐ½Ð¾\":139951,\"ĠolmadÄ±ÄŁ\":139952,\"ĠolmadÄ±ÄŁÄ±nÄ±\":139953,\"Ð½Ð´\":139954,\"Ð½Ð´ÐµÐºÑģ\":139955,\"ØªØ£ÙĥØ¯\":139956,\"Ġìĸ¸\":139957,\"Ġìĸ¸ìłľ\":139958,\"aydÄ±n\":139959,\"ãĥīãĥ¬ãĤ¹\":139960,\"Ġsáº¯t\":139961,\"Ġíĺ¸íħĶ\":139962,\"Ġë¶ģ\":139963,\"Ġë¶ģíķľ\":139964,\"ãĥĳãĤ¤\":139965,\"Ġ×ŀ×©×Ĺ×§×Ļ\":139966,\"à¸Ħà¸Ļà¸Ńà¸·à¹Īà¸Ļ\":139967,\"ĠÐ¸Ð·Ð³Ð¾ÑĤÐ¾Ð²\":139968,\"ĠÐ¸Ð·Ð³Ð¾ÑĤÐ¾Ð²Ð»ÐµÐ½\":139969,\"à¹Ģà¸ģà¸µà¸¢à¸£\":139970,\"à¹Ģà¸ģà¸µà¸¢à¸£à¸ķà¸´\":139971,\"×ª×§×©×¨\":139972,\"ĠÑĢÐ°ÑģÑĩÐµÑĤ\":139973,\"à¸ªà¹Ģà¸ķ\":139974,\"ĠlÃ¤nger\":139975,\"ĠiÅŁlet\":139976,\"ĠiÅŁletme\":139977,\"ĠØ¹ÙĦÙĬÙĨ\":139978,\"ĠØ¹ÙĦÙĬÙĨØ§\":139979,\"Ã©lection\":139980,\"ĠØ§ÙĦØºØ±Ø¨ÙĬØ©\":139981,\"íĭĢ\":139982,\"ãĤĤãĤīãģĪ\":139983,\"ĠÐºÐ½Ð¸Ð³Ð¸\":139984,\"Ø£Ø³Ùħ\":139985,\"Ø£Ø³ÙħØ§Ø¡\":139986,\"Ġthá»ı\":139987,\"Ġthá»ıa\":139988,\"à¸«à¸Ļà¸¹\":139989,\"Ġ×ł×¢×©×Ķ\":139990,\"à¸łà¸²à¸¢à¹ĥà¸ķà¹ī\":139991,\"à¸ŀà¸·à¸Ĭ\":139992,\"Ø±ÙĬØ·\":139993,\"ÙģÙĪØ¶\":139994,\"ãģĤãĤĬãģĮãģ¨ãģĨãģĶãģĸãģĦãģ¾ãģĹãģŁ\":139995,\"×©×ĵ×Ķ\":139996,\"Ġngá»±c\":139997,\"ĠÑģÐµÑĢÑĮ\":139998,\"ĠÑģÐµÑĢÑĮÐµÐ·Ð½\":139999,\"TÃ´i\":140000,\"ĠfiyatlarÄ±\":140001,\"ĠÐ²ÑģÑİ\":140002,\"ĠCÃ³digo\":140003,\"Ġ×Ķ×©×Ĳ\":140004,\"Ġ×Ķ×©×Ĳ×ľ×Ķ\":140005,\"ĠPÃºblica\":140006,\"Ø¥Ø®\":140007,\"Ø¥Ø®ÙĪØ§ÙĨ\":140008,\"ĠÐ·Ð°ÑıÐ²Ð¸Ð»\":140009,\"ãĥ¦ãĥ¼\":140010,\"×¨×Ĳ×Ļ×ª\":140011,\"voluciÃ³n\":140012,\"Ġszko\":140013,\"ĠszkoÅĤy\":140014,\"Ø¬Ø±ÙĬØ¯Ø©\":140015,\"ĠpensÃ©\":140016,\"ìī¬\":140017,\"ĠBÃ¼yÃ¼kÅŁehir\":140018,\"ĠØ£ÙħØ±ÙĬ\":140019,\"ĠØ£ÙħØ±ÙĬÙĥÙĬ\":140020,\"à¸Ļà¸±à¸ģà¸¨à¸¶à¸ģà¸©à¸²\":140021,\"Ġtodav\":140022,\"ĠtodavÃŃa\":140023,\"ĠÐ¡Ð°Ð½\":140024,\"ĠÐ¡Ð°Ð½ÐºÑĤ\":140025,\"íķĺìŀĲ\":140026,\"ØŃÙĪØ§ÙĦ\":140027,\"×Ľ×ķ×©×¨\":140028,\"à¹Ģà¸¥à¸¢à¸Ħà¸£à¸±à¸ļ\":140029,\"Ġalgu\":140030,\"ĠalguÃ©m\":140031,\"ÙģØ²\":140032,\"ĠÃ§ekil\":140033,\"Ġ×ĵ×¨×Ľ×Ļ×Ŀ\":140034,\"ãĥĲãĥ©\":140035,\"à¸ģà¹ĩà¸ªà¸²à¸¡à¸²à¸£à¸ĸ\":140036,\"à¸ªà¹Īà¸§à¸Ļà¸¥à¸Ķ\":140037,\"íı°\":140038,\"ĠPÃºb\":140039,\"ĠPÃºblico\":140040,\"à¹ģà¸Ļà¸§à¸Ĺà¸²à¸ĩ\":140041,\"×Ĳ×ª×Ĵ×¨\":140042,\"Ø´Ø§Ø´\":140043,\"Ø´Ø§Ø´Ø©\":140044,\"ciÅĽni\":140045,\"ĠÃľrÃ¼n\":140046,\"ÙĦÙĪØŃ\":140047,\"ĠØ§ÙĦØ¨ÙĨ\":140048,\"ĠØ§ÙĦØ¨ÙĨÙĥ\":140049,\"ì¡°ì¹ĺ\":140050,\"ĠorganizaciÃ³n\":140051,\"ãģĤãĤĬãģĮãģ¨ãģĨãģĶãģĸãģĦãģ¾ãģĻ\":140052,\"sÃ¤tze\":140053,\"ĠÑģÐµÐ¼ÐµÐ¹\":140054,\"ÙĤØµØ¯\":140055,\"ÑģÑĤÐ²ÐµÐ½Ð½ÑĭÐµ\":140056,\"ĠprÃ©cÃ©d\":140057,\"ĠprÃ©cÃ©dent\":140058,\"à¸ģà¸£à¸¸à¸ĩà¹Ģà¸Ĺà¸ŀà¸¯\":140059,\"ãģ¨è¨ĢãģĦ\":140060,\"×ĳ×ł×Ļ×Ļ×Ł\":140061,\"ĠØŃÙĪ\":140062,\"ĠØŃÙĪØ§ÙĦÙĬ\":140063,\"×¡×§×¡\":140064,\"ĠsaÄŁlamak\":140065,\"Ġ×ľ×¦×Ļ×Ļ×Ł\":140066,\"×§×ĵ×©\":140067,\"Ġ×Ķ×ŀ×¢×¨×Ľ×ª\":140068,\"Ġ×ľ×Ķ×¢×ĳ×Ļ×¨\":140069,\"ĠgÃ¼nd\":140070,\"ĠgÃ¼ndem\":140071,\"ĠÐ½Ð°ÑĪÐµÐ³Ð¾\":140072,\"à¹ĥà¸Ļà¸ŀà¸·à¹īà¸Ļà¸Ĺà¸µà¹Ī\":140073,\"à¹Ģà¸Ħà¸£à¸·à¸Ń\":140074,\"à¹Ģà¸Ħà¸£à¸·à¸Ńà¸Ĥ\":140075,\"à¹Ģà¸Ħà¸£à¸·à¸Ńà¸Ĥà¹Īà¸²à¸¢\":140076,\"Ø¸Ø§ÙĩØ±Ø©\":140077,\"ÙħÙĨØ¸Ùħ\":140078,\"ÙħÙĨØ¸ÙħØ§Øª\":140079,\"ÙħØªØ§Ø²\":140080,\"è¿½ãģĦ\":140081,\"dÄ±kt\":140082,\"dÄ±ktan\":140083,\"ĠëįĶìļ±\":140084,\"ĠÐĿÐ°Ð¿ÑĢÐ¸Ð¼ÐµÑĢ\":140085,\"twÃ³r\":140086,\"×ŀ×ķ×¢×¦×Ķ\":140087,\"ÙĥÙĪÙĥ\":140088,\"Ð©\":140089,\"×ŀ×ĺ×¤×ľ\":140090,\"Ã³lica\":140091,\"è¨ªãĤĮ\":140092,\"ĠëĮĢë¶Ģ\":140093,\"ĠëĮĢë¶Ģë¶Ħ\":140094,\"ãĤ¯ãĥªãĥĥãĤ¯\":140095,\"ãĤĴéģ¸\":140096,\"ãĤĴéģ¸ãģ¶\":140097,\"Ġpowsta\":140098,\"ĠpowstaÅĤ\":140099,\"ĠrazÃ³n\":140100,\"×ĳ×ķ×Ĺ×¨\":140101,\"ĠÑģÐ¾Ð¾Ð±ÑīÐ¸Ð»\":140102,\"Ġ×§×ĳ×ķ×¢\":140103,\"rÃªt\":140104,\"à¸Ķà¸µà¸Ĥà¸¶à¹īà¸Ļ\":140105,\"×ŀ×¡×¢×ĵ\":140106,\"×ŀ×¡×¢×ĵ×ķ×ª\":140107,\"ĠÃĸsterreich\":140108,\"Ġ×ł×Ĺ×©×ĳ\":140109,\"ÙħØ¨Ø§Ø¯Ø±Ø©\":140110,\"ì´ī\":140111,\"×Ĵ×ł×ĺ×Ļ\":140112,\"ä¿¡ãģĺ\":140113,\"duÄŁ\":140114,\"duÄŁunu\":140115,\"ĠphÃº\":140116,\"ĠØ§ÙĦØ£Ø®ÙĬØ±\":140117,\"ĠØªØ¹ØªØ¨Ø±\":140118,\"landÄ±rÄ±l\":140119,\"ãģ¨ãģ¯ãģĦ\":140120,\"ãģ¨ãģ¯ãģĦãģĪ\":140121,\"ĠØ§ÙĦØ·ÙĦ\":140122,\"ĠØ§ÙĦØ·ÙĦØ§Ø¨\":140123,\"ĠNÂº\":140124,\"éģ¿ãģĳ\":140125,\"Ø§ÙĦÙħØ¹\":140126,\"Ø§ÙĦÙħØ¹Ø±ÙĪÙģ\":140127,\"à¸ªà¸łà¸²\":140128,\"éĽ¢ãĤĮ\":140129,\"ĠÐ¿Ð¾Ð¼Ð¾ÑīÑĮ\":140130,\"ĠÐ·Ð½Ð°ÐµÑĤ\":140131,\"ãĥĹãĥ¬ãĤ¼\":140132,\"ãĥĹãĥ¬ãĤ¼ãĥ³ãĥĪ\":140133,\"ĠsupÃ©rieur\":140134,\"Ġ×©×ľ×Ļ×©×Ļ\":140135,\"ĠØ§ÙĦÙĨÙĪØ¹\":140136,\"ãĤĵãģ§ãģĻãģŃ\":140137,\"à¸Ńà¸ļà¸£à¸¡\":140138,\"Ġgiá»įng\":140139,\"ĠwzglÄĻd\":140140,\"ĠØ§ÙĦÙģÙĤØ±\":140141,\"Ã¨rent\":140142,\"Ġ×ŀ×Ĳ×Ĺ\":140143,\"Ġ×ŀ×Ĳ×Ĺ×ķ×¨×Ļ\":140144,\"×Ĵ×Ĵ\":140145,\"×Ļ×Ļ×ĳ\":140146,\"ÙħÙĦØ§Ø¨\":140147,\"ÙħÙĦØ§Ø¨Ø³\":140148,\"ĠhÃ¼kÃ¼\":140149,\"ĠhÃ¼kÃ¼met\":140150,\"Ġ×ŀ×Ĵ×Ļ×ĳ\":140151,\"ĠÐŀÑĩ\":140152,\"ĠÐŀÑĩÐµÐ½ÑĮ\":140153,\"æĹ©ãģĦ\":140154,\"ĠconstrucciÃ³n\":140155,\"ĠthÆ°á»£ng\":140156,\"ï¼ĭ\":140157,\"ĠcoraÃ§Ã£o\":140158,\"à¹Ģà¸«à¸¥à¹ĩà¸ģ\":140159,\"ĠBaÅŁb\":140160,\"ĠBaÅŁbakan\":140161,\"éĢ£ãĤĮ\":140162,\"ãģĻãĤĭãģĵãģ¨ãģĮãģ§ãģįãģ¾ãģĻ\":140163,\"ĠÙĤØ§ÙħØª\":140164,\"ĠØ§ÙĥØ«Ø±\":140165,\"ÙģØ§Ø¹ÙĦ\":140166,\"ĠÑĦÐ¾ÑĢ\":140167,\"ĠÑĦÐ¾ÑĢÑĥÐ¼\":140168,\"ØºØ°ÙĬ\":140169,\"ĠiÅŁle\":140170,\"ĠiÅŁleml\":140171,\"ĠiÅŁlemleri\":140172,\"ĠìĤ¬ëŀĮìĿĢ\":140173,\"ĠìŀĳìĦ±\":140174,\"Ġë§Īëł¨\":140175,\"ÙħØ¬ÙĦØ³\":140176,\"à¸«à¸¡à¸¹\":140177,\"Ð´Ð²\":140178,\"Ð´Ð²Ð¸Ð³\":140179,\"Ð´Ð²Ð¸Ð³Ð°\":140180,\"à¹Ģà¸ªà¸µà¸¢à¸Ĭà¸µà¸§à¸´à¸ķ\":140181,\"×Ķ×ª×¤×ª×Ĺ\":140182,\"×Ķ×ª×¤×ª×Ĺ×ķ×ª\":140183,\"ĠÐ¼ÐµÑĤÑĢÐ¾\":140184,\"ĠÑģÐµÐ½ÑĤ\":140185,\"ĠÑģÐµÐ½ÑĤÑı\":140186,\"ĠÑģÐµÐ½ÑĤÑıÐ±ÑĢÑı\":140187,\"ê³§\":140188,\"Ġ×ľ×¤×¢\":140189,\"Ġ×ľ×¤×¢×ŀ×Ļ×Ŀ\":140190,\"à¹Ģà¸ļà¸µà¸¢\":140191,\"è©³ãģĹãģı\":140192,\"çķ°ãģªãĤĭ\":140193,\"ĠÄ°lÃ§e\":140194,\"ĠAtat\":140195,\"ĠAtatÃ¼r\":140196,\"ĠAtatÃ¼rk\":140197,\"à¸£à¸¸à¹Īà¸ĩ\":140198,\"ĠkaldÄ±\":140199,\"Ġì£¼ìŀ¥\":140200,\"ĠprÃ©sence\":140201,\"ĠÐ½Ð°Ð±\":140202,\"ĠÐ½Ð°Ð±Ð»Ñİ\":140203,\"ĠÐ½Ð°Ð±Ð»ÑİÐ´Ð°\":140204,\"ĠÑģÐ°Ð¼Ð¾Ð³Ð¾\":140205,\"×Ĵ×ķ×©\":140206,\"×ŀ×ĺ×ķ×¤\":140207,\"×ŀ×ĺ×ķ×¤×ľ\":140208,\"ĠÐ²ÑĭÐ±Ð¸ÑĢÐ°\":140209,\"ĠìŀĲë¦¬\":140210,\"åĪĨãģĭãĤīãģªãģĦ\":140211,\"ĠÐ·ÑĥÐ±\":140212,\"Ġ×©×Ľ×ĳ×¨\":140213,\"ĠØ¯Ø§Ø¦\":140214,\"ĠØ¯Ø§Ø¦ÙħØ§\":140215,\"ĠÐ¿Ð°ÑĢÑĤÐ¸\":140216,\"ï¼²\":140217,\"ĠØ§ÙĬØ¶Ø§\":140218,\"ĠÑħÐ¾Ð·\":140219,\"ĠÑħÐ¾Ð·Ñı\":140220,\"ĠÑħÐ¾Ð·ÑıÐ¹\":140221,\"ĠÑħÐ¾Ð·ÑıÐ¹ÑģÑĤÐ²\":140222,\"ĠØ§ÙĦØ£Ø¬\":140223,\"ĠØ§ÙĦØ£Ø¬ÙĨØ¨\":140224,\"ĠØ§ÙĦØ£Ø¬ÙĨØ¨ÙĬØ©\":140225,\"ĠÐĹÐ½Ð°\":140226,\"ĠApÃ³s\":140227,\"ĠÑįÐ½ÐµÑĢ\":140228,\"ĠÑįÐ½ÐµÑĢÐ³Ð¸\":140229,\"Ġyans\":140230,\"ĠyansÄ±\":140231,\"ĠJusti\":140232,\"ĠJustiÃ§a\":140233,\"ĠprÃ©vu\":140234,\"à¸¡à¸§à¸¥\":140235,\"ìŀ¥ëĭĺ\":140236,\"à¸ģà¸£à¸°à¸ļ\":140237,\"à¸ģà¸£à¸°à¸ļà¸§à¸Ļ\":140238,\"à¸ģà¸£à¸°à¸ļà¸§à¸Ļà¸ģà¸²à¸£\":140239,\"×ŀ×ŀ\":140240,\"×ŀ×ŀ×ķ×¦×¢\":140241,\"Ġháº¹\":140242,\"Ġháº¹n\":140243,\"Ð·Ð´Ð°Ð½Ð¸Ðµ\":140244,\"ĠakÅŁ\":140245,\"ĠakÅŁam\":140246,\"×ĺ×ķ×¤\":140247,\"Ġgerekt\":140248,\"Ġgerekti\":140249,\"ĠgerektiÄŁini\":140250,\"Ġnarz\":140251,\"ĠnarzÄĻdzi\":140252,\"Ã©po\":140253,\"Ã©poque\":140254,\"ĠTháº§n\":140255,\"Ġwysoko\":140256,\"ĠwysokoÅĽci\":140257,\"à¸ľà¸¹à¹īà¸Ľ\":140258,\"à¸ľà¸¹à¹īà¸Ľà¹Īà¸§à¸¢\":140259,\"ĠÙĬØ¨Ø¯ÙĪ\":140260,\"ÑĤÐµÐ»ÑĮÐ½Ð¾Ð³Ð¾\":140261,\"ĠÐ²Ð·Ð³Ð»ÑıÐ´\":140262,\"ĠjednÄħ\":140263,\"ĠìĿĺê²¬\":140264,\"Ġà¸Ĥà¸ĵà¸°à¸Ĺà¸µà¹Ī\":140265,\"×¤×Ļ×ĵ\":140266,\"ìĥģëĭ´\":140267,\"Ġmá»¡\":140268,\"×Ķ×ŀ×ľ\":140269,\"×Ķ×ŀ×ľ×¦×ķ×ª\":140270,\"ĠÑģÐ¾ÑģÑĤÐ¾\":140271,\"ĠÑģÐ¾ÑģÑĤÐ¾Ð¸ÑĤ\":140272,\"ĠÐ°Ð²Ð¸\":140273,\"ĠÐ°Ð²Ð¸Ð°\":140274,\"ĠLÃ¤nder\":140275,\"ØªØµÙĪÙĬØ±\":140276,\"×ŀ×ĵ×Ļ×Ķ\":140277,\"ìłĪì°¨\":140278,\"ãģ¨ãĤĬ\":140279,\"ãģ¨ãĤĬãģĤ\":140280,\"ãģ¨ãĤĬãģĤãģĪ\":140281,\"ãģ¨ãĤĬãģĤãģĪãģļ\":140282,\"ĠÑĢÑıÐ´\":140283,\"ĠÑĢÑıÐ´Ð¾Ð¼\":140284,\"ĠNháº¥t\":140285,\"ĠØ§ÙĦÙĥØ§ÙħÙĦ\":140286,\"×Ĺ×ľ×ľ\":140287,\"ĠGiáº¥y\":140288,\"×¦×ĺ×¨\":140289,\"×¦×ĺ×¨×£\":140290,\"Ġ×ľ×ĳ×ĺ×ľ\":140291,\"ĠÐ¸Ð¼ÐµÑĤÑĮ\":140292,\"×¡×ŀ×ķ×ļ\":140293,\"ĠparticipaÃ§Ã£o\":140294,\"íķľëĭ¤ë©´\":140295,\"ÙħÙĨØªØ¯ÙĬ\":140296,\"ÙħÙĨØªØ¯ÙĬØ§Øª\":140297,\"ĠeÄŁlen\":140298,\"gÃ¤nge\":140299,\"Ø±Ø¨ØŃ\":140300,\"ãĤ®ãĥ£\":140301,\"ĠØ§ÙĦØ±ÙĤÙħ\":140302,\"à¸ĭà¹īà¸³\":140303,\"ĠHÃ³a\":140304,\"×ŀ×¨×Ĺ×§\":140305,\"ØŃÙħØ§Ùħ\":140306,\"Ø¨ÙĪÙĥ\":140307,\"ĠArtÃŃculo\":140308,\"ãĥĦãĤ¢ãĥ¼\":140309,\"×Ķ×¤×Ľ×Ķ\":140310,\"×Ĺ×ľ×ķ×Ł\":140311,\"ĠÐ¿ÐµÑĢÐµÑħÐ¾Ð´\":140312,\"lenmiÅŁ\":140313,\"Ø²Ø±Ø§Ø¹Ø©\":140314,\"ĠseÃ±or\":140315,\"ãģ£ãģ¦ãģįãģ¦\":140316,\"Ø¥Ø´\":140317,\"Ø¥Ø´Ø§Ø±Ø©\":140318,\"ĠpodÃŃa\":140319,\"ĠÃľlke\":140320,\"Ð½ÑģÐºÐ°Ñı\":140321,\"ĠadaptÃ©\":140322,\"ĠdÃ¼zenlen\":140323,\"ĠdÃ¼zenlenen\":140324,\"ĠÑģÑĤÐ°Ð»Ð°\":140325,\"ĠÙĬØŃØªØ§Ø¬\":140326,\"Ġnier\":140327,\"Ġnieruch\":140328,\"Ġnieruchomo\":140329,\"ĠnieruchomoÅĽci\":140330,\"ãģĵãģ¨ãģĮãģĤãĤĭ\":140331,\"à¸¢à¸Ńà¸Ķà¹Ģà¸¢à¸µà¹Īà¸¢à¸¡\":140332,\"ĠÙħØ¬\":140333,\"ĠÙħØ¬Ø§ÙĨÙĬ\":140334,\"ĠÐ·Ð°Ð±\":140335,\"ĠÐ·Ð°Ð±Ð¾Ð»\":140336,\"ĠÐ·Ð°Ð±Ð¾Ð»ÐµÐ²\":140337,\"ĠÐ·Ð°Ð±Ð¾Ð»ÐµÐ²Ð°Ð½Ð¸Ñı\":140338,\"ĠÅĽro\":140339,\"ĠÅĽrodk\":140340,\"ĠÅĽrodkÃ³w\":140341,\"Ġ×Ķ×ľ×Ĳ×ķ×ŀ×Ļ\":140342,\"ĠdokÅĤad\":140343,\"ĠdokÅĤadnie\":140344,\"ãģŁãģıãģªãģĦ\":140345,\"ãģ¯ãģļãģ§ãģĻ\":140346,\"ãģ¨æĢĿãģ£ãģ¦ãģĦãģŁ\":140347,\"Ã©cran\":140348,\"ìĹħì²´\":140349,\"trzymaÅĤ\":140350,\"ÑģÑĤÐ²ÐµÐ½Ð½ÑĭÐ¹\":140351,\"ĠNotÃŃc\":140352,\"ĠNotÃŃcias\":140353,\"ÙħØ±ÙĬ\":140354,\"ÙħØ±ÙĬØ¶\":140355,\"æ°Ĺè»\":140356,\"æ°Ĺè»½\":140357,\"æ°Ĺè»½ãģ«\":140358,\"ëĵ£\":140359,\"Ġ×ĵ×ķ×Ĳ×¨\":140360,\"Ġ×ľ×ŀ×ł\":140361,\"Ġ×ľ×ŀ×ł×ķ×¢\":140362,\"ĠÃ§alÄ±ÅŁÄ±yor\":140363,\"ĠÅŁidd\":140364,\"ĠÅŁiddet\":140365,\"ĠMáº·t\":140366,\"ĠateÅŁ\":140367,\"ĠÐ¿Ð¾Ð»ÑĥÑĩÐµÐ½Ð¸Ñı\":140368,\"à¹Ģà¸Ħà¸£à¸·à¹Īà¸Ńà¸ĩà¸¡à¸·à¸Ń\":140369,\"ĠgrÃ¶ÃŁer\":140370,\"Ø¯Ø§Ø¦\":140371,\"Ø¯Ø§Ø¦Ø±Ø©\":140372,\"Ġbulun\":140373,\"ĠbulunmaktadÄ±r\":140374,\"à¹Ģà¸«à¸£\":140375,\"à¹Ģà¸«à¸£à¸µà¸¢\":140376,\"à¹Ģà¸«à¸£à¸µà¸¢à¸į\":140377,\"à¸Ļà¸±à¸ģà¸Ĺà¹Īà¸Ńà¸ĩà¹Ģà¸Ĺà¸µà¹Īà¸¢à¸§\":140378,\"ĠalanÄ±nda\":140379,\"ĠÑĥÐ·Ð½Ð°\":140380,\"ĠÐ»ÐµÑĩÐµÐ½Ð¸Ðµ\":140381,\"å£²ãĤĮ\":140382,\"ĠÃ§evir\":140383,\"ĠdesteÄŁi\":140384,\"ĠheiÃŁt\":140385,\"âĸ²\":140386,\"ØŃØ·\":140387,\"à¸Ħà¸³à¸ķà¸Ńà¸ļ\":140388,\"ãĤªãĥ³ãĥ©ãĤ¤ãĥ³\":140389,\"Ġ×ĳ×Ĺ×Ļ×Ļ×Ŀ\":140390,\"ãĥ¦ãĥĭ\":140391,\"ĠdÃ¼zenleme\":140392,\"ĠmodalitÃł\":140393,\"Ø³Ø±Ø·\":140394,\"Ø³Ø±Ø·Ø§ÙĨ\":140395,\"×ŀ×Ľ×ķ×Ł\":140396,\"ĠÐ´Ð°Ð½Ð½ÑĭÐ¹\":140397,\"ØªØ±Øª\":140398,\"ØªØ±ØªÙĬØ¨\":140399,\"à¸ļà¸²à¸ĩà¸Ħà¸Ļ\":140400,\"ĠÄĲá»ĭnh\":140401,\"à¸¡à¸¹à¸¥\":140402,\"à¸¡à¸¹à¸¥à¸Ħà¹Īà¸²\":140403,\"ÙĨÙĤØµ\":140404,\"à¸ģà¸²à¸£à¸£à¸±à¸ģà¸©à¸²\":140405,\"ĠÑĦÐ¾Ð½\":140406,\"ĠÑĦÐ¾Ð½Ð´\":140407,\"ãĤĪãģĨãģ«ãģªãģ£ãģŁ\":140408,\"ÙħØ¹Ø§ÙĦ\":140409,\"ÙħØ¹Ø§ÙĦØ¬Ø©\":140410,\"ĠOsman\":140411,\"ĠOsmanlÄ±\":140412,\"Ð¸ÑĩÐµÑģÐºÐ¾Ð¼\":140413,\"à¸Ńà¸¢à¸²à¸ģà¸Īà¸°\":140414,\"ãģķãģ¾ãģĸ\":140415,\"ãģķãģ¾ãģĸãģ¾\":140416,\"ãģķãģ¾ãģĸãģ¾ãģª\":140417,\"Ġ×ª×ķ×Ľ×ľ\":140418,\"×¢×¦×ĳ\":140419,\"ĠØ§ÙĦØ¹Ø³Ùĥ\":140420,\"ĠØ§ÙĦØ¹Ø³ÙĥØ±ÙĬ\":140421,\"ĠvÃ©hic\":140422,\"ĠvÃ©hicule\":140423,\"Ġ×Ļ×¦×Ĺ×§\":140424,\"ĠØ§ÙĦÙĪØŃ\":140425,\"ĠØ§ÙĦÙĪØŃÙĬØ¯\":140426,\"ĠØ§ÙĦØ¹Ø¯ÙĪ\":140427,\"ĠQuáº£n\":140428,\"Ġê³µëıĻ\":140429,\"Ø¨Ø¯ÙĦ\":140430,\"ĠÄĳáº£ng\":140431,\"Ġmá»ĩnh\":140432,\"Ġniezb\":140433,\"ĠniezbÄĻ\":140434,\"ĠniezbÄĻdn\":140435,\"ĠyayÄ±nlan\":140436,\"Ð¾Ð±ÑīÐ¸\":140437,\"ĠgÃ¶tÃ¼r\":140438,\"×¦×¤\":140439,\"×¦×¤×ķ×Ļ\":140440,\"ĠÙĦÙĬØ¨ÙĬ\":140441,\"ĠÙĦÙĬØ¨ÙĬØ§\":140442,\"ØŃÙĪØ§\":140443,\"ĠÐ´Ð¾Ð±\":140444,\"ĠÐ´Ð¾Ð±ÑĢÐ¾\":140445,\"Ð¸ÑĢÑĥÐµÐ¼\":140446,\"ĠØ§ÙĦØŃÙĥÙĪÙħÙĬØ©\":140447,\"mÃ¤ÃŁig\":140448,\"ĠediciÃ³n\":140449,\"Ð²Ð»ÐµÐºÐ°ÑĤÐµÐ»ÑĮ\":140450,\"Ð²Ð»ÐµÐºÐ°ÑĤÐµÐ»ÑĮÐ½\":140451,\"Ġ×ª×©×ľ×ķ×Ŀ\":140452,\"Ġ×Ķ×©×ķ×ł×Ļ×Ŀ\":140453,\"à¸¡à¸´à¸ĸà¸¸\":140454,\"à¸¡à¸´à¸ĸà¸¸à¸Ļ\":140455,\"à¸¡à¸´à¸ĸà¸¸à¸Ļà¸²à¸¢à¸Ļ\":140456,\"é£Łãģ¹ãģ¦\":140457,\"ĠìĪĺì§ĳ\":140458,\"×¡×ĳ×Ļ\":140459,\"ĠÐ¸ÑİÐ»Ñı\":140460,\"Ġà¹Ħà¸Ķà¹īà¹ģà¸ģà¹Ī\":140461,\"×ľ×Ĺ×Ŀ\":140462,\"trÃ¤\":140463,\"trÃ¤gt\":140464,\"ãģĿãĤĤãģĿãĤĤ\":140465,\"ÐĿÐķ\":140466,\"ĠÐ²Ð½ÑĥÑĤ\":140467,\"ĠÐ²Ð½ÑĥÑĤÑĢÐ¸\":140468,\"ãģ¨ä¸Ģç·Ĵãģ«\":140469,\"ãĤ«ãĥķãĤ§\":140470,\"Ġ×ĳ×Ĺ×ĵ×¨\":140471,\"×Ĺ×ŀ×©\":140472,\"ãĤ¨ãĥį\":140473,\"ãĤ¨ãĥįãĥ«\":140474,\"ãĤ¨ãĥįãĥ«ãĤ®\":140475,\"ãĤ¨ãĥįãĥ«ãĤ®ãĥ¼\":140476,\"à¸Ĥà¸Ńà¸ĩà¸ķà¸±à¸§à¹Ģà¸Ńà¸ĩ\":140477,\"Ø¨ÙĤØ§Ø¡\":140478,\"×¤×¡×Ļ×Ľ\":140479,\"×¤×¡×Ļ×Ľ×ķ×ľ×ķ×Ĵ\":140480,\"ãĥ¡ãĥĥ\":140481,\"ãĥ¡ãĥĥãĤ»\":140482,\"ãĥ¡ãĥĥãĤ»ãĥ¼ãĤ¸\":140483,\"ÙĦÙĤØ¨\":140484,\"AÄŀ\":140485,\"×©×§×Ļ×¢\":140486,\"ÙĤØ³Ø§Ùħ\":140487,\"×ĵ×ķ×Ĵ×ŀ×Ķ\":140488,\"æ·±ãģĦ\":140489,\"íĸĪëĬĶëį°\":140490,\"ĠrozwiÄħzanie\":140491,\"à¸Ļà¸±à¹Īà¸Ļà¹Ģà¸Ńà¸ĩ\":140492,\"×Ļ×¦×ĳ\":140493,\"ĠtrÃ´ng\":140494,\"à¹ĥà¸Ĭà¹īà¸ļà¸£à¸´à¸ģà¸²à¸£\":140495,\"ĠØ§ÙĦÙħÙĪØ³Ùħ\":140496,\"ĠÐ´ÐµÑĤÐ¸\":140497,\"ãģĹãģĭãģªãģĦ\":140498,\"×¡×Ļ×Ł\":140499,\"ĠrÃ©fÃ©rence\":140500,\"à¹ģà¸«à¹īà¸ĩ\":140501,\"ãĤĤãĤīãģ£ãģŁ\":140502,\"Ġ×ľ×¨×Ľ\":140503,\"Ġ×ľ×¨×Ľ×ķ×©\":140504,\"Ø´Ø¹ÙĪØ±\":140505,\"ĠÐĳÐ¾Ð³\":140506,\"ĠlazÄ±m\":140507,\"Ġ×Ļ×©×ł×Ŀ\":140508,\"ĠÐ¿Ð°ÑĢÑĤ\":140509,\"ĠÐ¿Ð°ÑĢÑĤÐ½ÐµÑĢ\":140510,\"ĠÑĥÐ½Ð¸ÐºÐ°\":140511,\"ĠÑĥÐ½Ð¸ÐºÐ°Ð»ÑĮÐ½\":140512,\"ĠmatÃ©riel\":140513,\"×ŀ×¨×§\":140514,\"ĠphÆ°á»Ŀng\":140515,\"ĠÐ·Ð°Ð¹\":140516,\"ĠÐ·Ð°Ð¹Ð¼\":140517,\"ÙģÙĤØ¯\":140518,\"UniversitÃł\":140519,\"×¢×¨×Ľ×Ļ×Ŀ\":140520,\"ĠbaÃ±o\":140521,\"ĠÐ½Ð¾Ñı\":140522,\"ĠÐ½Ð¾ÑıÐ±ÑĢÑı\":140523,\"à¸Ľà¹īà¸²à¸¢\":140524,\"Ġtats\":140525,\"ĠtatsÃ¤ch\":140526,\"ĠtatsÃ¤chlich\":140527,\"ĠÑĤÑĢÐµÑĤÑĮ\":140528,\"ÑįÐ¼\":140529,\"ãĥĻãĥ¼ãĤ¹\":140530,\"Ġnhá»±a\":140531,\"ìĬ¤íģ¬\":140532,\"ĠØ¹Ø¨Ø¯Ø§ÙĦÙĦÙĩ\":140533,\"Ġ×ª×ķ×¨×Ķ\":140534,\"Ø£Ø´ÙĬ\":140535,\"Ø£Ø´ÙĬØ§Ø¡\":140536,\"ĠÙĦÙĦØºØ§\":140537,\"ĠÙĦÙĦØºØ§ÙĬØ©\":140538,\"ÙħÙĪØ§ÙĤ\":140539,\"ÙħÙĪØ§ÙĤÙģ\":140540,\"ĠgÅĤÃ³wna\":140541,\"ĠartÄ±ÅŁ\":140542,\"Ġ×ŀ×§×ķ×ŀ×Ļ\":140543,\"ãĤ¯ãĥ©ãĥĸ\":140544,\"ĠØ³ÙĪÙī\":140545,\"ĠìĹ¬ìĦ±\":140546,\"Ø§Ø³Ø±\":140547,\"Ø§Ø³Ø±Ø§Ø¦ÙĬÙĦ\":140548,\"Ġ×ł×Ľ×ª×ĳ\":140549,\"à¸¢à¹īà¸Ńà¸Ļ\":140550,\"ĠdeberÃ¡\":140551,\"Ġpháº«u\":140552,\"ÑİÑīÐµÐ¼\":140553,\"ĠÙĦØ¯ÙĬÙĨØ§\":140554,\"×ŀ×ĺ×Ķ\":140555,\"Ġ×ł×ķ×ľ×ĵ\":140556,\"ĠÐ²ÑģÑĤÑĢÐµÑĩÐ°\":140557,\"ãĤīãĤĮãģ¦ãģĦãģ¾ãģĻ\":140558,\"ĠcaÅĤej\":140559,\"à¸¢à¸¶\":140560,\"à¸¢à¸¶à¸Ķ\":140561,\"Ð¿Ð¾ÑĤÐµÐ½\":140562,\"Ð¿Ð¾ÑĤÐµÐ½ÑĨÐ¸\":140563,\"ĠÐ»Ð¸ÑĤ\":140564,\"ĠÐ»Ð¸ÑĤÐµÑĢ\":140565,\"ĠÐ»Ð¸ÑĤÐµÑĢÐ°ÑĤÑĥÑĢ\":140566,\"ĠÐºÐ°Ð¶Ð´Ð¾Ð¼\":140567,\"ĠíĮĲ\":140568,\"ĠíĮĲëĭ¨\":140569,\"à¸Īà¸¹\":140570,\"ĠpresenÃ§a\":140571,\"ãģªãĤĵãģ§\":140572,\"ÙħÙĬØ§Ùĩ\":140573,\"Ð¸Ð½ÑĦÐ¾ÑĢÐ¼\":140574,\"Ð¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ð¾Ð½\":140575,\"Ð¸Ð½ÑĦÐ¾ÑĢÐ¼Ð°ÑĨÐ¸Ð¾Ð½Ð½\":140576,\"ĠìŀĲìĹ°\":140577,\"×¨×Ľ×©\":140578,\"ĠÃ¶dÃ¼l\":140579,\"ç¶ļãģı\":140580,\"ĠÐ¿Ñģ\":140581,\"ĠÐ¿ÑģÐ¸Ñħ\":140582,\"ĠÐ¿ÑģÐ¸ÑħÐ¾Ð»Ð¾Ð³\":140583,\"ØªØ°ÙĥØ±\":140584,\"Ġìŀħìŀ¥\":140585,\"à¸¥à¸Ķà¹Į\":140586,\"ìĦłê±°\":140587,\"ãģ£ãģ¦ãģĬãĤĬãģ¾ãģĻ\":140588,\"Ġ×Ļ×¢\":140589,\"Ġ×Ļ×¢×§×ĳ\":140590,\"ĠØ§ÙĦØ·Ø¹Ø§Ùħ\":140591,\"ãĥĨãĤ¹ãĥĪ\":140592,\"ĠTuáº¥n\":140593,\"ĠparticipaciÃ³n\":140594,\"×ŀ×ķ×ŀ×Ĺ×Ķ\":140595,\"×Ĵ×¨×¡×Ķ\":140596,\"ĠØ§ÙĦØªÙĨÙģÙĬ\":140597,\"ĠØ§ÙĦØªÙĨÙģÙĬØ°ÙĬ\":140598,\"ĠÐ±ÐµÐ·Ð¾Ð¿Ð°ÑģÐ½\":140599,\"gef\":140600,\"gefÃ¤hr\":140601,\"Ø´ÙĪØ±\":140602,\"ĠmyÅĽli\":140603,\"ÙĪØ§Ø´ÙĨ\":140604,\"ÙĪØ§Ø´ÙĨØ·ÙĨ\":140605,\"×ł×ķ×¡×¢\":140606,\"ÙĥÙĩ\":140607,\"ÙĥÙĩØ±Ø¨\":140608,\"ÙĥÙĩØ±Ø¨Ø§Ø¡\":140609,\"ĠmusiaÅĤ\":140610,\"ìĭ¸\":140611,\"ãĥĸãĥ©ãĥĥãĤ¯\":140612,\"ĠcrÃ©Ã©\":140613,\"ÙĨÙĩØ§Ø±\":140614,\"owoÅĽÄĩ\":140615,\"ÙħØŃØ§ÙĥÙħ\":140616,\"ĠwÅĤaÅĽ\":140617,\"ĠwÅĤaÅĽc\":140618,\"ĠwÅĤaÅĽciciel\":140619,\"ĠÙĬØ¤\":140620,\"ĠÙĬØ¤Ø¯ÙĬ\":140621,\"×ŀ×¢×ķ×ł\":140622,\"×Ĳ×ĳ×ľ\":140623,\"Ø®Ø·Ø£\":140624,\"ĠÑħÐ¾Ð»Ð¾Ð´\":140625,\"×ĸ×ķ×ľ\":140626,\"ãģĵãĤĮãĤī\":140627,\"ãģĵãĤĮãĤīãģ®\":140628,\"ĠbÃ¡sica\":140629,\"à¸¤à¸Ķ\":140630,\"à¸¤à¸Ķà¸¹à¸ģ\":140631,\"à¸¤à¸Ķà¸¹à¸ģà¸²\":140632,\"à¸¤à¸Ķà¸¹à¸ģà¸²à¸¥\":140633,\"èĲ½ãģ¡çĿĢ\":140634,\"ãģªãģĦãģĵãģ¨\":140635,\"ØµÙĪÙħ\":140636,\"ÙĨØ¬ØŃ\":140637,\"×ł×§×ķ×ĵ\":140638,\"×ł×§×ķ×ĵ×ª\":140639,\"ÐºÐ»Ð°ÑģÑģ\":140640,\"íķĺìĭľëĬĶ\":140641,\"ëĦĺ\":140642,\"Ġ×©×Ĳ×Ļ×ł×ķ\":140643,\"ĠÐ¡ÐµÐ¹ÑĩÐ°Ñģ\":140644,\"mayacaÄŁÄ±\":140645,\"ĠyapÄ±lÄ±r\":140646,\"ĠcategorÃŃa\":140647,\"Ø¹Ø¨Ø§Ø¯\":140648,\"ĠÐ¢ÐµÐ¿\":140649,\"ĠÐ¢ÐµÐ¿ÐµÑĢÑĮ\":140650,\"×Ķ×Ļ×¡×ĺ×ķ×¨×Ļ\":140651,\"háº¿\":140652,\"ãĤ³ãĥ¼ãĥī\":140653,\"ĠcabeÃ§a\":140654,\"Ø¬ÙħØ§\":140655,\"Ø¬ÙħØ§Ùĩ\":140656,\"Ø¬ÙħØ§ÙĩÙĬØ±\":140657,\"ä½İãģĦ\":140658,\"ĠÑĤÐ¾Ð²Ð°ÑĢÐ¾Ð²\":140659,\"à¸Ĭà¸²à¸§à¸ļà¹īà¸²à¸Ļ\":140660,\"ĠÑģÑĤÐ°Ð½Ð¾Ð²\":140661,\"ĠÑģÑĤÐ°Ð½Ð¾Ð²Ð¸ÑĤÑģÑı\":140662,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð±Ð¸Ð»ÑĮ\":140663,\"ĠÑģÐ»ÑĥÑĩÐ°Ð¹\":140664,\"à¸Ńà¸±à¸ŀ\":140665,\"ĠGiriÅŁ\":140666,\"ĠìĿ¼ëĭ¨\":140667,\"ĠÐ¿ÑĢÐ¾Ñģ\":140668,\"ĠÐ¿ÑĢÐ¾ÑģÐ¼Ð¾ÑĤÑĢ\":140669,\"ãģªãģıãģªãģ£ãģŁ\":140670,\"à¸¡à¸µà¸Ľà¸±à¸įà¸«à¸²\":140671,\"ïºİ\":140672,\"Ã©coute\":140673,\"ĠÙħÙĪØ¬ÙĪØ¯\":140674,\"ĠØ³Ø±ÙĬØ¹\":140675,\"ĠÙĪÙĩÙĨØ§\":140676,\"ĠÙĪÙĩÙĨØ§Ùĥ\":140677,\"à¸Ħà¸¸à¸ĵà¸ªà¸¡\":140678,\"à¸Ħà¸¸à¸ĵà¸ªà¸¡à¸ļà¸±à¸ķà¸´\":140679,\"Ġìļ°ìĦł\":140680,\"à¸ŀà¸£à¸°à¸ŀà¸¸à¸Ĺà¸ĺ\":140681,\"å¥½ãģ¿\":140682,\"Ø¸ÙĦÙħ\":140683,\"ĠÐ¼Ð°ÐºÑģ\":140684,\"ĠÐ¼Ð°ÐºÑģÐ¸Ð¼Ð°Ð»ÑĮ\":140685,\"ĠÐ¼Ð°ÐºÑģÐ¸Ð¼Ð°Ð»ÑĮÐ½Ð¾\":140686,\"ãĥªãĤ¢ãĥ«\":140687,\"à¹ģà¸¡à¹īà¸§à¹Īà¸²\":140688,\"ĠØ§ÙĦØŃÙĪØ§Ø±\":140689,\"ãĥĹãĥ©ãĤ¹\":140690,\"ĠØ¹ÙĦØ§ÙĤØ©\":140691,\"ĠíĸīëıĻ\":140692,\"ĠgÃ¶nderil\":140693,\"ĠlÃ£i\":140694,\"ĠsaÄŁlÄ±kl\":140695,\"ĠsaÄŁlÄ±klÄ±\":140696,\"ĠÑĪÐ°Ð³\":140697,\"Ġ×ĳ×Ĳ×¨×Ķ\":140698,\"prowadziÄĩ\":140699,\"ãģĦãģıãģ¤ãģĭ\":140700,\"ĠØ¨ØªØ§Ø±ÙĬØ®\":140701,\"Ġ×ĳ×Ĳ×ķ×ª×Ķ\":140702,\"ĠmÃ³c\":140703,\"ĠÐľÐ½Ðµ\":140704,\"ãĥĹãĥ¬ãĥ¼\":140705,\"×Ĳ×ĸ×¨×Ĺ\":140706,\"åł´åĲĪãģ«ãģ¯\":140707,\"ä½¿ãģĪ\":140708,\"à¹Ģà¸£à¸·à¸Ńà¸Ļ\":140709,\"ĠÐŁÐµÑĤ\":140710,\"ĠÐŁÐµÑĤÑĢ\":140711,\"ãģ«åħ¥ãĤĭ\":140712,\"ÙħØ§Ø¯Ø©\":140713,\"à¹Ģà¸ĩà¸·à¹Īà¸Ńà¸Ļ\":140714,\"à¹Ģà¸ĩà¸·à¹Īà¸Ńà¸Ļà¹Ħà¸Ĥ\":140715,\"ĠÑģÐ¾ÑģÑĤÐ¾ÑıÐ½Ð¸Ðµ\":140716,\"Ã´nica\":140717,\"ĠÑĦÐµÐ²\":140718,\"ĠÑĦÐµÐ²ÑĢÐ°\":140719,\"ĠÑĦÐµÐ²ÑĢÐ°Ð»Ñı\":140720,\"Ġ×ķ×ĸ\":140721,\"Ġ×ķ×ĸ×Ĳ×ª\":140722,\"à¸Ħà¸£à¸´\":140723,\"à¸Ħà¸£à¸´à¸ª\":140724,\"ĠÐķÑīÐµ\":140725,\"ãģ£ãģ¦ãģĹãģ¾ãģĦãģ¾ãģĹãģŁ\":140726,\"ĠÐ¿ÑĢÐ°Ð²Ð¸ÑĤÐµÐ»ÑĮ\":140727,\"ĠÐ¿ÑĢÐ°Ð²Ð¸ÑĤÐµÐ»ÑĮÑģÑĤÐ²\":140728,\"ĠtÃ¤glich\":140729,\"Ġëĭ¹ìĭľ\":140730,\"×ŀ×ķ×¢×ŀ×ĵ\":140731,\"ĠÐ´Ð²Ð¾ÑĢ\":140732,\"æīķ\":140733,\"æīķãģĦ\":140734,\"ĠÑģÑĤÐ°Ð½ÐµÑĤ\":140735,\"ĠÐ²Ð¾Ð·Ð´ÐµÐ¹ÑģÑĤÐ²\":140736,\"ĠÐ²Ð¾Ð·Ð´ÐµÐ¹ÑģÑĤÐ²Ð¸\":140737,\"ĠfÃªte\":140738,\"à¹Ģà¸ªà¸²\":140739,\"×ª×§×ķ×ķ×Ķ\":140740,\"Ġuyar\":140741,\"ĠuyarÄ±\":140742,\"à¸ģà¸¥à¸±à¸ļà¹Ħà¸Ľ\":140743,\"ĠgiÆ°á»Ŀng\":140744,\"ĠÐ²Ð°\":140745,\"ĠÐ²Ð°ÑĪÐ¸\":140746,\"ĠÄĳáºŃu\":140747,\"ĠSpaÃŁ\":140748,\"ĠìķĦë§Ī\":140749,\"à¹Ħà¸Ķà¹īà¸ĩà¹Īà¸²à¸¢\":140750,\"Ġ×Ķ×ŀ×ĳ×§×©\":140751,\"æĸ°ãģŁ\":140752,\"æĸ°ãģŁãģª\":140753,\"Ä±lÄ±yor\":140754,\"Ð¿Ð»Ð°Ð½\":140755,\"Ġ×Ķ×ĳ×¨×Ļ×Ĳ×ķ×ª\":140756,\"ĠaÄŁrÄ±\":140757,\"ĠsaygÄ±\":140758,\"å»ºãģ¦\":140759,\"ĠnajwyÅ¼\":140760,\"ĠnajwyÅ¼sz\":140761,\"Ø³ÙĬØ§Ø³Ø§Øª\":140762,\"ãģĬå¾Ĺ\":140763,\"ĠØ§ÙĦØ¹ÙĦÙĬ\":140764,\"ĠØ§ÙĦØ¹ÙĦÙĬØ§\":140765,\"ĠcorazÃ³n\":140766,\"ì¹ĺë£Į\":140767,\"à¸«à¸±à¸§à¸Ĥà¹īà¸Ń\":140768,\"ĠØ¨ØŃÙĬ\":140769,\"ĠØ¨ØŃÙĬØ«\":140770,\"Ð·Ð²ÐµÐ·Ð´\":140771,\"Ø¨ÙĪØ§Ø¨Ø©\":140772,\"ÐĽÐĺ\":140773,\"ÙĦØ§Ø²Ùħ\":140774,\"Ġrozp\":140775,\"Ġrozpoc\":140776,\"ĠrozpoczÄĻ\":140777,\"è§¦ãĤĮ\":140778,\"ĠØ§ÙĦØ¬ÙħÙĩ\":140779,\"ĠØ§ÙĦØ¬ÙħÙĩÙĪØ±\":140780,\"ĠspÄĻd\":140781,\"ĠspÄĻdz\":140782,\"à¸§à¸´à¸Ĺà¸¢à¸²à¸¨à¸²à¸ªà¸ķà¸£à¹Į\":140783,\"Ð¸Ð²Ð°ÐµÑĤÑģÑı\":140784,\"ĠÐ´Ð°Ð½Ð½Ð¾Ð¹\":140785,\"ĠreprÃ©sente\":140786,\"ĠÄĳá»ĭch\":140787,\"Ġ×¢×ŀ×ķ×§\":140788,\"à¸Ńà¸±à¸Ļà¸ķà¸£\":140789,\"à¸Ńà¸±à¸Ļà¸ķà¸£à¸²à¸¢\":140790,\"ĠestratÃ©g\":140791,\"ĠestratÃ©gia\":140792,\"padÅĤ\":140793,\"ĠÐ²Ð¿Ð¾Ð»Ð½\":140794,\"ĠÐ²Ð¿Ð¾Ð»Ð½Ðµ\":140795,\"ĠÐ¿ÑĢÐµÐ´Ð¾ÑģÑĤÐ°Ð²Ð»ÐµÐ½\":140796,\"×Ĺ×ľ×ķ×§\":140797,\"×Ĺ×ľ×ķ×§×ª\":140798,\"ãĤ¢ãĥĬ\":140799,\"ĠØ§ÙĦØºØ°\":140800,\"ĠØ§ÙĦØºØ°Ø§Ø¦ÙĬ\":140801,\"ĠÑĥÐ·Ð½\":140802,\"ĠÑĥÐ·Ð½Ð°ÑĤÑĮ\":140803,\"à¸ĭà¹īà¸²à¸¢\":140804,\"å½ĵãģ¦\":140805,\"ØŃÙĬØ§Ø¡\":140806,\"ĠbÃ¡sico\":140807,\"×§×ķ×ĳ×¢\":140808,\"ĠØ§ÙĦÙħØ¨Ø§Ø±Ø§Ø©\":140809,\"ĠØ§ÙĦÙĩØ§ØªÙģ\":140810,\"Ġ×Ľ×ł×Ĵ×ĵ\":140811,\"à¸Ľà¸£à¸°à¸«à¸¢\":140812,\"à¸Ľà¸£à¸°à¸«à¸¢à¸±à¸Ķ\":140813,\"ÐļÐ°Ðº\":140814,\"à¸Ĺà¸µà¹Īà¸Ļà¹Īà¸²\":140815,\"à¸Ĺà¸µà¹Īà¸Ļà¹Īà¸²à¸ªà¸Ļà¹ĥà¸Ī\":140816,\"ãģ¾ãģģ\":140817,\"ï½¢\":140818,\"ÑģÐºÐ¾Ð¿\":140819,\"ĠsonrasÄ±nda\":140820,\"ĠurzÄħd\":140821,\"ĠurzÄħdzenia\":140822,\"×Ľ×ķ×ķ×ł\":140823,\"×Ľ×ķ×ķ×ł×ª\":140824,\"Ġ×ľ×Ķ×ª×ŀ×ķ×ĵ\":140825,\"Ġ×ľ×Ķ×ª×ŀ×ķ×ĵ×ĵ\":140826,\"ĠÑģÐ»Ð¸\":140827,\"ĠÑģÐ»Ð¸ÑĪ\":140828,\"ĠÑģÐ»Ð¸ÑĪÐºÐ¾Ð¼\":140829,\"ĠÑģÑĤÑĥÐ´\":140830,\"ĠÑģÑĤÑĥÐ´ÐµÐ½ÑĤ\":140831,\"Ġ×Ķ×ķ×ĵ\":140832,\"Ġ×Ķ×ķ×ĵ×¢×Ķ\":140833,\"ë¹Ħìļ©\":140834,\"à¸Ńà¸¢à¸²à¸ģà¹ĥà¸«à¹ī\":140835,\"Ġbá»ģ\":140836,\"à¸¢à¸¸à¸Ĺà¸ĺ\":140837,\"ÐĺÐĿ\":140838,\"Ø³Ø§Ø¦Ø±\":140839,\"Ø£ØµÙĪÙĦ\":140840,\"ĠØ§ÙĦØºØ±Ùģ\":140841,\"ãģĵãģ¨ãĤĤãģĤãĤĬãģ¾ãģĻ\":140842,\"è¾¼ãģ¾ãĤĮ\":140843,\"ĠØ§ÙĦØ³Ø§Ø¨Ø¹\":140844,\"Ġcá»§\":140845,\"ãģĦãģŁãģłãģĦãģŁ\":140846,\"ì§ĵ\":140847,\"ìĤ¬ë¬´\":140848,\"powiedÅº\":140849,\"ØªÙģÙĥ\":140850,\"ØªÙģÙĥÙĬØ±\":140851,\"Ð¸ÑĢÐ¾Ð²ÐºÐ¸\":140852,\"ĠíĨµíķ´ìĦľ\":140853,\"ãĤ¨ãĤ¹ãĥĨ\":140854,\"ĠÐ´ÐµÑıÑĤÐµÐ»ÑĮÐ½Ð¾ÑģÑĤÑĮ\":140855,\"ĠÐ´Ð°Ð½Ð½ÑĭÐ¼\":140856,\"Ġ×¢×ķ×¨\":140857,\"Ġ×¢×ķ×¨×Ľ×Ļ\":140858,\"×ķ×ĵ×¢×ª\":140859,\"ĠhayatÄ±nÄ±\":140860,\"ĠbÄħd\":140861,\"ĠbÄħdÅº\":140862,\"obsÅĤug\":140863,\"à¹Ģà¸ŀà¸µà¸¢à¸ĩà¹ģà¸Ħà¹Ī\":140864,\"à¸ĭà¹Īà¸²\":140865,\"è²łãģĳ\":140866,\"ĠÑģÑĤÑĢÐµÐ¼\":140867,\"ĠÄĳá»īnh\":140868,\"ĠÐłÑĥÑģ\":140869,\"ĠNá»¯\":140870,\"Ġ×ľ×Ķ×©×Ļ×Ĵ\":140871,\"Ġjednoc\":140872,\"Ġjednocze\":140873,\"ĠjednoczeÅĽnie\":140874,\"Ġ×Ķ×Ĵ×ĳ×ķ×Ķ\":140875,\"Ø£Ø®ÙĦØ§ÙĤ\":140876,\"ĠÐ½Ð°ÑģÐµÐ»\":140877,\"ĠÐ½Ð°ÑģÐµÐ»ÐµÐ½Ð¸Ñı\":140878,\"ĠÙĬÙĨØ¨\":140879,\"ĠÙĬÙĨØ¨ØºÙĬ\":140880,\"ãģĮãģĭ\":140881,\"ãģĮãģĭãģĭ\":140882,\"×Ĵ×¢×ª\":140883,\"ÐŀÐł\":140884,\"ĠÐ½Ð°Ð»Ð¸ÑĩÐ¸Ð¸\":140885,\"Ġë§Īì§Ģ\":140886,\"Ġë§Īì§Ģë§ī\":140887,\"ĠíĸīìĤ¬\":140888,\"ĠtreÅĽci\":140889,\"Ġê°Ģì¹ĺ\":140890,\"ì¦ĺ\":140891,\"ĠÐ°Ð½Ð°Ð»Ð¾Ð³\":140892,\"×Ķ×¦×¢×ª\":140893,\"Ð²Ð»Ð°Ð´\":140894,\"Ð²Ð»Ð°Ð´Ðµ\":140895,\"ĠÑģÐ´ÐµÐ»Ð°Ð»\":140896,\"Ġ×ł×Ĵ×Ļ×©\":140897,\"Ġ×ł×Ĵ×Ļ×©×ķ×ª\":140898,\"Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ\":140899,\"à¸Ĩà¹Īà¸²\":140900,\"ĠDÃ¶n\":140901,\"×Ľ×ľ×Ľ×ľ×Ķ\":140902,\"×ŀ×ĸ×Ĵ\":140903,\"ÙħÙģ\":140904,\"ÙħÙģÙĩ\":140905,\"ÙħÙģÙĩÙĪÙħ\":140906,\"×Ķ×ĵ\":140907,\"×Ķ×ĵ×¤×¡\":140908,\"×Ķ×ĵ×¤×¡×Ķ\":140909,\"ãģĻãģİãģ¦\":140910,\"ĠÐ³ÑĢ\":140911,\"ĠÐ³ÑĢÐ½\":140912,\"×ŀ×ĺ×ķ×¡\":140913,\"Ġê¸°ìĸµ\":140914,\"ï¾Ł\":140915,\"ĠpÅĤyn\":140916,\"ĠGrÃ¼nde\":140917,\"ĠBÃ¼cher\":140918,\"ĠwedÅĤug\":140919,\"ãģ¾ãģłãģ¾ãģł\":140920,\"Ġ×ł×Ķ×ĵ×¨\":140921,\"ĠÙĬØ³ØªØ·ÙĬØ¹\":140922,\"ĠHiá»ĩp\":140923,\"ãĤŃãĥ£ãĥ³ãĥļ\":140924,\"ãĤŃãĥ£ãĥ³ãĥļãĥ¼ãĥ³\":140925,\"Ġthá»ķ\":140926,\"ĠeuropÃ©enne\":140927,\"à¸ļà¸±à¸ĩ\":140928,\"à¸ļà¸±à¸ĩà¸Ħà¸±à¸ļ\":140929,\"ĠszczegÃ³ÅĤowo\":140930,\"×ł×©×§\":140931,\"ãĥķãĥ©ãĥ³ãĤ¹\":140932,\"×ŀ×ķ×ŀ×Ĺ×Ļ\":140933,\"ĠcomÃºn\":140934,\"ĠÃ§arp\":140935,\"ØŃØªÙĬØ§\":140936,\"ØŃØªÙĬØ§Ø¬\":140937,\"ØŃØªÙĬØ§Ø¬Ø§Øª\":140938,\"ëĭ´ëĭ¹\":140939,\"ä½ķåº¦\":140940,\"ä½ķåº¦ãĤĤ\":140941,\"×ĵ×ĳ×§\":140942,\"ãģįãĤĮ\":140943,\"ãģįãĤĮãģĦ\":140944,\"ĠÐºÐ°Ð¼\":140945,\"ĠÐºÐ°Ð¼ÐµÑĢ\":140946,\"ĠespecÃŃfico\":140947,\"ĠtelÃ©fono\":140948,\"à¸ķà¸±à¹īà¸ĩà¸Ńà¸¢à¸¹à¹Ī\":140949,\"IÅŀ\":140950,\"ãģ©ãĤĵãģ©\":140951,\"ãģ©ãĤĵãģ©ãĤĵ\":140952,\"×¢×¦×ŀ×Ĳ×Ļ\":140953,\"à¸Ķà¸±à¸ĩà¸Ļà¸µà¹ī\":140954,\"ĠÑĦÐ¾ÑĢÐ¼Ð¸ÑĢÐ¾Ð²\":140955,\"ĠÑĦÐ¾ÑĢÐ¼Ð¸ÑĢÐ¾Ð²Ð°\":140956,\"×ķ×ŀ×ĳ\":140957,\"ĠkullanÄ±mÄ±\":140958,\"ÐľÐŀ\":140959,\"×¢×©×Ļ\":140960,\"×¢×©×Ļ×Ļ×Ķ\":140961,\"ĠÃ¶nlem\":140962,\"à¹Ģà¸Ńà¹ĩ\":140963,\"à¹Ģà¸Ńà¹ĩà¸¡\":140964,\"×ŀ×©×§×Ļ×¢\":140965,\"×¨×Ļ×Ĺ\":140966,\"à¸Ĥà¸±à¸Ķ\":140967,\"ĠíĻľ\":140968,\"ĠíĻľìļ©\":140969,\"à¸ĭà¸°\":140970,\"ãĤĪãģĨãģ«ãģªãĤĬãģ¾ãģĹãģŁ\":140971,\"ĠÑĢÐ°ÑģÐ¿ÑĢ\":140972,\"ĠÑĢÐ°ÑģÐ¿ÑĢÐ¾ÑģÑĤ\":140973,\"ĠÑĢÐ°ÑģÐ¿ÑĢÐ¾ÑģÑĤÑĢÐ°Ð½\":140974,\"ĠÑĢÐ°ÑģÐ¿ÑĢÐ¾ÑģÑĤÑĢÐ°Ð½ÐµÐ½\":140975,\"×Ľ×Ļ×ķ×Ł\":140976,\"ÙĤØ¨Ø¶\":140977,\"ØªØµØ±ÙĬØŃ\":140978,\"ØªØµØ±ÙĬØŃØ§Øª\":140979,\"ĠÐ¾ÑĢÐ¸\":140980,\"ĠÐ¾ÑĢÐ¸Ð³\":140981,\"ĠÐ¾ÑĢÐ¸Ð³Ð¸Ð½Ð°\":140982,\"ĠÐ¾ÑĢÐ¸Ð³Ð¸Ð½Ð°Ð»\":140983,\"ĠØ§ÙĦØ¹Ø§ÙĦÙĬ\":140984,\"à¹ģà¸«à¹Īà¸ĩà¸Ļà¸µà¹ī\":140985,\"ãĥķãĤ¡ãĥ¼\":140986,\"ãģ¦ãģĦãģį\":140987,\"ãģ¦ãģĦãģįãģŁãģĦ\":140988,\"×¤×ª×¨\":140989,\"×¤×ª×¨×ķ×ł×ķ×ª\":140990,\"Ġ×ĳ×Ļ×Ĺ\":140991,\"Ġ×ĳ×Ļ×Ĺ×ĵ\":140992,\"Ġodby\":140993,\"ĠodbyÅĤ\":140994,\"ĠÐ¾ÑĩÐµÑĢÐµÐ´\":140995,\"ĠtrÆ°Æ¡ng\":140996,\"ãĤŃãĥ³\":140997,\"×ŀ×ķ×¤\":140998,\"×ŀ×ķ×¤×¢\":140999,\"ëĵľë¦½\":141000,\"ëĵľë¦½ëĭĪëĭ¤\":141001,\"à¸ŀà¸·à¹īà¸Ļà¸Ĳà¸²à¸Ļ\":141002,\"ìŀĲê²©\":141003,\"ĠViá»ĩn\":141004,\"ĠDespuÃ©s\":141005,\"Ġ×Ĳ×ľ×Ļ×ł×ķ\":141006,\"ĠdurÃ©e\":141007,\"íĩ´\":141008,\"ĠmÃ¼zik\":141009,\"iáº¿u\":141010,\"ĠÑĢÐ°Ð·Ð¼ÐµÑīÐµÐ½\":141011,\"ĠÐºÑĥÐ´\":141012,\"ĠÐºÑĥÐ´Ð°\":141013,\"ØºØ¶\":141014,\"ØºØ¶Ø¨\":141015,\"ĠTambÃ©m\":141016,\"à¸Īà¸±à¸Ķà¸ªà¹Īà¸ĩ\":141017,\"à¸ģà¸²à¸£à¹ģà¸ªà¸Ķà¸ĩ\":141018,\"onomÃŃa\":141019,\"ĠÐ°Ð½Ð³\":141020,\"ĠÐ°Ð½Ð³Ð»Ð¸\":141021,\"ĠÐ°Ð½Ð³Ð»Ð¸Ð¹\":141022,\"ĠÐ°Ð½Ð³Ð»Ð¸Ð¹ÑģÐº\":141023,\"Ġznal\":141024,\"Ġznalaz\":141025,\"ĠznalazÅĤ\":141026,\"×ª×¨×Ĵ\":141027,\"×ª×¨×Ĵ×ķ×Ŀ\":141028,\"ĠÑģÐ½Ð¾Ð²\":141029,\"ĠÑģÐ½Ð¾Ð²Ð°\":141030,\"ĠÑĩÐ°ÑģÐ°\":141031,\"ĠcommunautÃ©\":141032,\"ĠespecÃŃfica\":141033,\"ĠLá»ĭch\":141034,\"ĠliÃ©\":141035,\"ÙģØ¬Ø±\":141036,\"à¹Ģà¸ģà¹Īà¸ĩ\":141037,\"Ø¹Ø§ÙĦ\":141038,\"Ø¹Ø§ÙĦØ¬\":141039,\"Ø£ÙĨØ¸\":141040,\"Ø£ÙĨØ¸ÙħØ©\":141041,\"ESÄ°\":141042,\"ĠØ§ÙĦØŃØ¯ÙĬØ¯\":141043,\"à¸ŀà¸£à¸°à¸Ńà¸ĩà¸Ħà¹Į\":141044,\"Ġ×¤×¨×©×ª\":141045,\"ĠÐ´Ð²Ð¸Ð¶\":141046,\"ĠÐ´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñı\":141047,\"ĠØ§ÙĦØ¬Ø§Ø±ÙĬ\":141048,\"à¸ĺà¸²à¸Ļà¸µ\":141049,\"Ð½ÐµÑģÐµÐ½\":141050,\"ĠØ§ÙĦÙĨÙĩØ§Ø¦ÙĬ\":141051,\"ĠÐ±ÐµÑĢ\":141052,\"ĠÐ±ÐµÑĢÐµÐ¼\":141053,\"ĠÐ±ÐµÑĢÐµÐ¼ÐµÐ½Ð½\":141054,\"ĠdÃ©partement\":141055,\"à¹Ģà¸Ĺà¸µà¸¢\":141056,\"à¹Ģà¸Ĺà¸µà¸¢à¸ļ\":141057,\"ĠÐľÐ°ÑĢÐ¸\":141058,\"ĠÐ½ÐµÐºÐ¾ÑĤÐ¾ÑĢÑĭÑħ\":141059,\"Ð¾Ð±ÐµÑģÐ¿\":141060,\"Ð¾Ð±ÐµÑģÐ¿ÐµÑĩÐµÐ½\":141061,\"×Ĺ×ķ×ĸ\":141062,\"×Ĺ×ķ×ĸ×Ķ\":141063,\"ÙĨØªØ¬\":141064,\"à¸Īà¸°à¹Ħà¸Ķà¹īà¸£à¸±à¸ļ\":141065,\"á»°\":141066,\"ĠÃ©lÃ©ments\":141067,\"Ø¹Ø·\":141068,\"Ø¹Ø·Ø§Ø¡\":141069,\"Ġtáº¯t\":141070,\"iá»ĩm\":141071,\"ÑİÑīÐ¸ÑħÑģÑı\":141072,\"ãģĹãģ°\":141073,\"ãģĹãģ°ãĤīãģı\":141074,\"ĠÐ¿Ð¾Ð¼Ð¾Ð¶ÐµÑĤ\":141075,\"à¸Ĥà¸ĵà¸°à¸Ļà¸µà¹ī\":141076,\"Ġ×¢×©×¨×ķ×ª\":141077,\"éģķãģ£ãģ¦\":141078,\"ĠÐ¿ÑĢÐ¾Ð³\":141079,\"ĠÐ¿ÑĢÐ¾Ð³Ð½\":141080,\"ĠÐ¿ÑĢÐ¾Ð³Ð½Ð¾Ð·\":141081,\"ĠtÅĤ\":141082,\"ĠtÅĤum\":141083,\"ĠtÅĤumacz\":141084,\"TÃ¼r\":141085,\"TÃ¼rkiye\":141086,\"ãģįãģ£\":141087,\"ãģįãģ£ãģĭãģĳ\":141088,\"Ġ×Ķ×ł×ķ×Ľ\":141089,\"Ġ×Ķ×ł×ķ×Ľ×Ĺ×Ļ\":141090,\"ĠìĥĿìĤ°\":141091,\"ĠÑĦÐ¾ÑĢÐ¼Ñĭ\":141092,\"ç¾İãģĹãģĦ\":141093,\"à¸Ľà¸£à¸¶à¸ģ\":141094,\"à¸Ľà¸£à¸¶à¸ģà¸©à¸²\":141095,\"ĠlumiÃ¨re\":141096,\"ãĤªãĥ¼ãĥĹ\":141097,\"ãĤªãĥ¼ãĥĹãĥ³\":141098,\"à¸Ľà¸·à¸Ļ\":141099,\"à¸§à¸±à¸ªà¸Ķ\":141100,\"à¸§à¸±à¸ªà¸Ķà¸¸\":141101,\"ÐµÑĢÑĤÐ²\":141102,\"ÙĥÙĦÙģ\":141103,\"ï½£\":141104,\"à¸ĺà¸£à¸£à¸¡à¸Ķà¸²\":141105,\"×ł×ĺ×¨\":141106,\"ĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð²Ð»ÑıÐµÑĤ\":141107,\"ĠanÃ¡lisis\":141108,\"ĠbÃ£i\":141109,\"Ø¨Ø§ÙĤÙĬ\":141110,\"à¸Ľà¸£à¸°à¹Ģà¸Ķ\":141111,\"à¸Ľà¸£à¸°à¹Ģà¸Ķà¹ĩà¸Ļ\":141112,\"ĠÑģÐ»ÑĥÑĩÐ°Ñı\":141113,\"ĠÑģÐ»ÑĥÑĩÐ°ÑıÑħ\":141114,\"ÐĽÐĲ\":141115,\"à¸ªà¸±à¸ĩà¹Ģà¸ģ\":141116,\"à¸ªà¸±à¸ĩà¹Ģà¸ģà¸ķ\":141117,\"Ġprzec\":141118,\"ĠprzecieÅ¼\":141119,\"ÙħØµÙĦ\":141120,\"ÙħØµÙĦØŃØ©\":141121,\"×©×ķ×§×ķ×ľ×ĵ\":141122,\"ĠÐ¾Ð±Ð¾ÑĢÑĥÐ´Ð¾Ð²Ð°Ð½Ð¸Ñı\":141123,\"ĠtrwaÅĤ\":141124,\"Ø±ÙĪÙħ\":141125,\"ìķĪëĤ´\":141126,\"ĠNghá»ĭ\":141127,\"Ø®Ø´\":141128,\"à¸ļà¸²à¸Ħà¸²à¸£\":141129,\"à¸ļà¸²à¸Ħà¸²à¸£à¹Īà¸²\":141130,\"ĠÐ¾Ð¿ÑĨÐ¸Ð¾Ð½\":141131,\"ĠÑģÐ¾Ð·Ð´Ð°Ð½Ð¸Ñı\":141132,\"ãĤ³ãĤ¹ãĥĪ\":141133,\"Ġ×Ķ×¢×ľ×Ļ\":141134,\"Ġ×Ķ×¢×ľ×Ļ×ķ×Ł\":141135,\"lÃ¤uft\":141136,\"ãĥĻãĤ¹ãĥĪ\":141137,\"ĠrÃª\":141138,\"ĠrÃªve\":141139,\"×Ĳ×ĳ×Ļ×ĳ\":141140,\"×Ļ×Ļ×ļ\":141141,\"ë¶Ļ\":141142,\"ãĤ¤ãĥ³ãĥī\":141143,\"ÅĤoÅ¼y\":141144,\"ÅĤoÅ¼yÄĩ\":141145,\"Ø¹Ø§Ø¦ÙĦ\":141146,\"Ø¹Ø§Ø¦ÙĦØ©\":141147,\"Ø£ÙĪØ±\":141148,\"Ø£ÙĪØ±Ø§ÙĤ\":141149,\"à¸Ĺà¹īà¸Ńà¸ĩà¸ĸ\":141150,\"à¸Ĺà¹īà¸Ńà¸ĩà¸ĸà¸´à¹Īà¸Ļ\":141151,\"ĠÃ¤hn\":141152,\"ĠÃ¤hnlich\":141153,\"ãĥŁãĥĭ\":141154,\"à¸ľà¸¹\":141155,\"à¸ľà¸¹à¹īà¸Ļ\":141156,\"à¸ľà¸¹à¹īà¸Ļà¸³\":141157,\"ĠÐ¼Ð°ÑĤÐµÑĢÐ¸Ð°Ð»Ñĭ\":141158,\"ĠÐºÐ°Ð¿Ð¸ÑĤ\":141159,\"ĠÐºÐ°Ð¿Ð¸ÑĤÐ°Ð»\":141160,\"ï¼¦\":141161,\"ĠseÃ§il\":141162,\"Ġhá»©ng\":141163,\"ĠintÃ©ressant\":141164,\"ãģ£ãģ¦ãģĦãģı\":141165,\"ĠeÄŁer\":141166,\"ëĲĺìĹĪìĬµëĭĪëĭ¤\":141167,\"ĠanlaÅŁma\":141168,\"ãģĶåĪ©çĶ¨\":141169,\"Ġ×ĳ×ĸ×Ľ\":141170,\"Ġ×ĳ×ĸ×Ľ×ķ×ª\":141171,\"ëĿ¼ë©´\":141172,\"ĠÙĬÙĪØ³\":141173,\"ĠÙĬÙĪØ³Ùģ\":141174,\"Ø£Ø³ÙĦØŃØ©\":141175,\"ĠGefÃ¼hl\":141176,\"ĠÐ½Ð¾ÑĢÐ¼Ð°Ð»ÑĮÐ½\":141177,\"ãĥĻãĥ³\":141178,\"ãģķãĤĮãĤĭãģĵãģ¨\":141179,\"ĠÐĳÐµÑģ\":141180,\"ãģ¨ãģĦãģĪãģ°\":141181,\"ĠÙħÙĩÙħ\":141182,\"ĠÙħÙĩÙħØ©\":141183,\"ãģ§ãģĹãĤĩãģĨãģŃ\":141184,\"ĠêµŃëĤ´\":141185,\"à¹Ģà¸¡à¹ĩà¸Ķ\":141186,\"×ŀ×ĳ×§×¨\":141187,\"ĠØ§ÙĦØ¯ÙĨÙĬ\":141188,\"ĠØ§ÙĦØ¯ÙĨÙĬØ§\":141189,\"à¸Ĭà¸¹\":141190,\"ÐºÑĢÑĥÑĤ\":141191,\"ĠthoÃ¡ng\":141192,\"Ġ×ł×ĵ×¨\":141193,\"Ġ×ł×ĵ×¨×©\":141194,\"ĠÑĢÐ°ÑģÑģÐºÐ°Ð·Ð°Ð»\":141195,\"ĠAuÃŁerdem\":141196,\"×¤×Ĳ×¨\":141197,\"×¤×Ĳ×¨×§\":141198,\"Ġ×ŀ×©×Ĺ×§×Ļ×Ŀ\":141199,\"×¦×¨×Ľ×Ļ×Ŀ\":141200,\"×ŀ×ĵ×ķ\":141201,\"×ŀ×ĵ×ķ×Ļ×§\":141202,\"èĭ¦ãģĹ\":141203,\"ĠÑģÐ¸Ð³\":141204,\"ĠÑģÐ¸Ð³Ð½Ð°Ð»\":141205,\"ĠMá»įi\":141206,\"Ġtrá»¯\":141207,\"ĠnastÄĻp\":141208,\"ĠnastÄĻpnie\":141209,\"Ġì¶Ķì§Ħ\":141210,\"ĠØ§ÙĦÙģÙĨØ¯\":141211,\"ĠØ§ÙĦÙģÙĨØ¯ÙĤ\":141212,\"koÅĦczyÅĤ\":141213,\"à¸ªà¸µà¹Ī\":141214,\"×§×Ļ×ĳ\":141215,\"×§×Ļ×ĳ×ķ×¥\":141216,\"ĠÐ½ÑĥÐ¶Ð½Ñĭ\":141217,\"å¤§åĪĩ\":141218,\"å¤§åĪĩãģª\":141219,\"æıĽãģĪ\":141220,\"×ª×ķ×¡\":141221,\"×ª×ķ×¡×¤×ª\":141222,\"ãģ£ãģ¦ãģĦãģªãģĦ\":141223,\"ĠÐ¼Ñı\":141224,\"ĠÐ¼ÑıÐ³\":141225,\"ĠÐ¼ÑıÐ³Ðº\":141226,\"Ġjakie\":141227,\"ĠjakieÅĽ\":141228,\"à¸ķà¸³à¸ļ\":141229,\"à¸ķà¸³à¸ļà¸¥\":141230,\"ĠìŀĪì§Ģ\":141231,\"×ĳ×ĺ×Ĳ\":141232,\"ĠÐ¾ÑĤÐ»Ð¸ÑĩÐ½Ð¾\":141233,\"ÙĤÙĲ\":141234,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð±\":141235,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð±Ð¸\":141236,\"ĠÐ°Ð²ÑĤÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñı\":141237,\"Ø¯ÙĬÙħÙĤØ±Ø§Ø·ÙĬ\":141238,\"ĠØ§ÙĦÙĪØ§\":141239,\"ĠØ§ÙĦÙĪØ§ØŃØ¯\":141240,\"ĠØ³ÙĪØ±ÙĬØ©\":141241,\"Ø£ØºÙĦ\":141242,\"Ø£ØºÙĦØ¨\":141243,\"ĠÑįÐºÑĢÐ°Ð½\":141244,\"ãĥĹãĥ©ãĤ¤\":141245,\"ĠjesteÅĽ\":141246,\"ãĥĲãĥª\":141247,\"Ġ×Ķ×Ĳ×ķ×ķ×Ļ×¨\":141248,\"Ø§Ø¦Ùĥ\":141249,\"à¸Ńà¸¢à¹Īà¸²à¸ĩà¸¢à¸´à¹Īà¸ĩ\":141250,\"ÑĢÐµÐºÑĤ\":141251,\"Ġumo\":141252,\"ĠumoÅ¼\":141253,\"ĠumoÅ¼li\":141254,\"ĠumoÅ¼liw\":141255,\"ĠumoÅ¼liwia\":141256,\"ĠnÃ¤chste\":141257,\"ĠìŀĪì§Ģë§Į\":141258,\"ĠÐ¿ÑĢÐµÐ´Ð½\":141259,\"ĠÐ¿ÑĢÐµÐ´Ð½Ð°Ð·\":141260,\"ĠÐ¿ÑĢÐµÐ´Ð½Ð°Ð·Ð½Ð°ÑĩÐµÐ½\":141261,\"ĠmaÃ§Ä±\":141262,\"Ġpomi\":141263,\"ĠpomiÄĻd\":141264,\"ĠpomiÄĻdzy\":141265,\"ĠØ§ÙĦÙĦÙĤØ§Ø¡\":141266,\"à¹Ģà¸Ķà¸Ńà¸°\":141267,\"ĠÐ½Ð¾Ð²Ð¾ÑģÑĤÐ¸\":141268,\"×ŀ×Ĺ×ľ×Ķ\":141269,\"Ø±ÙĬØ§Ø¶ÙĬ\":141270,\"à¸Ķà¸Ļ\":141271,\"à¸Ķà¸Ļà¸ķà¸£à¸µ\":141272,\"Ø¨ØµØ±\":141273,\"ìĬ¤íĥĢ\":141274,\"scripciÃ³n\":141275,\"Ġnapisa\":141276,\"ĠnapisaÅĤ\":141277,\"Ġ×ł×©×ŀ×¢\":141278,\"ĠØ§ÙĦÙħØŃÙĦÙĬ\":141279,\"Ġhiá»ĥn\":141280,\"×Ĳ×Ĺ\":141281,\"×Ĳ×Ĺ×¨×Ĳ×Ļ\":141282,\"ĠÐ³ÑĢÐ°Ð½Ð¸ÑĨ\":141283,\"æīĭç¶ļãģį\":141284,\"ÙĥØ³Ø¨\":141285,\"Ġà¹ģà¸ķà¹Īà¸ĸà¹īà¸²\":141286,\"à¸Ķà¸²à¸§à¸Ļà¹Į\":141287,\"à¸Ķà¸²à¸§à¸Ļà¹Įà¹Ĥà¸«à¸¥à¸Ķ\":141288,\"ãĤĭãģĵãģ¨ãģĮãģ§ãģįãģ¾ãģĻ\":141289,\"åŁºæľ¬çļĦãģ«\":141290,\"ÙĪÙĦØ§Ø¯\":141291,\"rÃ¤ume\":141292,\"Ø¯ÙģØ§Ø¹\":141293,\"×Ļ×¦×¢\":141294,\"ĠOczy\":141295,\"ĠOczywiÅĽcie\":141296,\"ĠÅģ\":141297,\"ĠÅģa\":141298,\"Ø§ÙĦÙĬØ§Ø¨\":141299,\"Ø§ÙĦÙĬØ§Ø¨Ø§ÙĨ\":141300,\"áºłI\":141301,\"ĠBirliÄŁi\":141302,\"×Ķ×ķ×¦\":141303,\"×Ķ×ķ×¦×Ĳ×ª\":141304,\"ĠÄĳua\":141305,\"Ġê·¸ëŁ¬ëĭĪê¹Į\":141306,\"ĠrÃ©alitÃ©\":141307,\"Ø¹ÙĦØ§ÙĤØ§Øª\":141308,\"Jeste\":141309,\"JesteÅĽ\":141310,\"ĠÐ¼Ð½Ð¾Ð¶\":141311,\"ĠÐ¼Ð½Ð¾Ð¶ÐµÑģÑĤÐ²Ð¾\":141312,\"ï¼«\":141313,\"ãĥĹãĥŃãĤ¸ãĤ§\":141314,\"ãĥĹãĥŃãĤ¸ãĤ§ãĤ¯ãĥĪ\":141315,\"ĠÑĦÐ»\":141316,\"Ø¸ÙĨ\":141317,\"×Ĵ×ľ×Ĵ×ľ\":141318,\"ĠmÅĤodzie\":141319,\"ĠmÅĤodzieÅ¼\":141320,\"à¸Ļà¹īà¸³à¸ķà¸²\":141321,\"à¸Ļà¹īà¸³à¸ķà¸²à¸¥\":141322,\"ÐĽÐķ\":141323,\"×ĳ×ķ×ĺ\":141324,\"Ġ×ľ×Ķ×Ĵ×Ļ×ĵ\":141325,\"ãģĵãģ¨ãĤĤãģĤãĤĭ\":141326,\"Ø²Ø§Ø¯\":141327,\"×ŀ×Ļ×ĵ×¢\":141328,\"ĠgÅĤÃ³wnie\":141329,\"ãĥıãĤ¦\":141330,\"ãĥıãĤ¦ãĤ¹\":141331,\"Ð±ÐµÐ»\":141332,\"ĠÃ©tape\":141333,\"ðŁĺĢ\":141334,\"ĠÐ¼Ð¾Ð´ÐµÐ»ÑĮ\":141335,\"aÄŁÄ±nÄ±\":141336,\"×©×Ĺ×§\":141337,\"×©×Ĺ×§×Ł\":141338,\"ĠniÃ±o\":141339,\"à¸Ĭà¹īà¸²à¸ĩ\":141340,\"à¹Ģà¸¥à¸µà¸¢\":141341,\"ĠÑĦÐ¾ÑĢÐ¼Ðµ\":141342,\"ĠØ§ÙĦØ´Ø±ÙĬÙģ\":141343,\"ĠÑĥÐ´Ð°ÑĢ\":141344,\"arriv\":141345,\"arrivÃ©e\":141346,\"ĠmiesiÄĻ\":141347,\"ĠmiesiÄĻcy\":141348,\"ØŃØ±Ùĥ\":141349,\"ØŃØ±ÙĥØ§Øª\":141350,\"ĠDiá»ħn\":141351,\"ÐĿÐ«\":141352,\"ãģ¾ãģ£ãģŁãģı\":141353,\"Ġ×Ļ×¨×ķ×§\":141354,\"ÐµÑģÑĤÐµÑģÑĤÐ²\":141355,\"ÐµÑģÑĤÐµÑģÑĤÐ²ÐµÐ½Ð½\":141356,\"Ġê·¸ëŁ¼\":141357,\"ĠØ§ÙĦÙħØªÙĪ\":141358,\"ĠØ§ÙĦÙħØªÙĪØ³Ø·\":141359,\"ĠbÃ©nÃ©fic\":141360,\"ĠbÃ©nÃ©ficie\":141361,\"Ġwybra\":141362,\"ĠwybraÄĩ\":141363,\"ĠØ§ÙĦØ²ÙħÙĨ\":141364,\"ĠÐ¿ÑĢÐ¸Ð½Ñı\":141365,\"ĠÐ¿ÑĢÐ¸Ð½ÑıÐ»\":141366,\"ÙģØ±ØŃ\":141367,\"Ġksz\":141368,\"ĠksztaÅĤ\":141369,\"ĠksztaÅĤt\":141370,\"×§×ľ×ĺ\":141371,\"×ĳ×ĵ×Ļ×§×ª\":141372,\"Ġgiáº¥\":141373,\"Ġgiáº¥c\":141374,\"ĠproprietÃł\":141375,\"Ð´ÐµÑĢÐ¶Ð°Ð½\":141376,\"ĠKÃ¶ln\":141377,\"ĠGÃ¼zel\":141378,\"×Ļ×¤×ķ×Ļ\":141379,\"ĠCuá»Ļc\":141380,\"ÑįÑĤÐ°Ð¶\":141381,\"ØªØ±ÙĥÙĬ\":141382,\"ØªØ±ÙĥÙĬØ²\":141383,\"Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹\":141384,\"ĠÐ¿Ñĥ\":141385,\"ĠÐ¿ÑĥÑĤÐ¸\":141386,\"Ø§Ø®ØªÙĦØ§Ùģ\":141387,\"åĩºãģ¦ãģıãĤĭ\":141388,\"à¸ļà¸¸à¸ģ\":141389,\"âĿ¤\":141390,\"ÑĦÐ°Ð½\":141391,\"×¤×©×ĺ\":141392,\"à¸ļà¸±à¸Ļà¹Ģà¸Ĺ\":141393,\"à¸ļà¸±à¸Ļà¹Ģà¸Ĺà¸´à¸ĩ\":141394,\"ĠØ§ÙĦØ³Ø§Ø¯\":141395,\"ĠØ§ÙĦØ³Ø§Ø¯Ø³\":141396,\"ĠØ§ÙĦÙĤÙĪÙħ\":141397,\"ĠØ§ÙĦÙĤÙĪÙħÙĬ\":141398,\"ĠyÃ¶netici\":141399,\"ÙĩÙĪØ§Øª\":141400,\"ÙĩÙĪØ§ØªÙģ\":141401,\"ĠresponsÃ¡vel\":141402,\"ĠÐ¿Ð¾Ð´Ð´ÐµÑĢÐ¶Ð¸Ð²Ð°\":141403,\"ĠØ§ÙĦØ³ÙĦØ·\":141404,\"ĠØ§ÙĦØ³ÙĦØ·Ø§Øª\":141405,\"ãģĹãģ¦ãģĬãģı\":141406,\"ãĥļãĥĥãĥĪ\":141407,\"à¸Ľà¸¸à¹Īà¸¡\":141408,\"ĠoglÄħda\":141409,\"ÙĨØ§ÙĤ\":141410,\"ÙĨØ§ÙĤØ´\":141411,\"à¸Ħà¸Ńà¸Ļà¹Ĥà¸Ķ\":141412,\"ĠMÃ¼sl\":141413,\"ĠMÃ¼slÃ¼\":141414,\"ĠMÃ¼slÃ¼man\":141415,\"ĠMoÅ¼\":141416,\"ĠMoÅ¼na\":141417,\"ĠnumÃ©rique\":141418,\"Ġvá»ı\":141419,\"ĠØ³ÙĬØªÙħ\":141420,\"ĠyerleÅŁ\":141421,\"Ð¼Ð¾Ð½ÑĤÐ°Ð¶\":141422,\"ĠgoÃ»t\":141423,\"ãģ¦ãģĬãĤĬãģ¾ãģĻ\":141424,\"ĠKhÃ¡nh\":141425,\"ĠÐµÐ´Ð¸Ð½\":141426,\"ĠÐµÐ´Ð¸Ð½ÑģÑĤÐ²\":141427,\"Ø§ÙĨØ®Ùģ\":141428,\"Ø§ÙĨØ®ÙģØ§Ø¶\":141429,\"ìĭľíĹĺ\":141430,\"Ġláº·ng\":141431,\"ĠÑĢÐ¾Ð»ÑĮ\":141432,\"à¸ķà¸±à¸§à¹ģà¸Ĺà¸Ļ\":141433,\"à¸Ħà¹Īà¸²à¹ĥà¸Ĭà¹ī\":141434,\"à¸Ħà¹Īà¸²à¹ĥà¸Ĭà¹īà¸Īà¹Īà¸²à¸¢\":141435,\"ĠverfÃ¼g\":141436,\"ĠverfÃ¼gbar\":141437,\"ìĻĶëĭ¤\":141438,\"ãģĦãģļ\":141439,\"ãģĦãģļãĤĮ\":141440,\"ĠÐ¸ÑģÑģÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñı\":141441,\"Ð¼ÐµÑīÐ°\":141442,\"×Ķ×Ĺ\":141443,\"×Ķ×Ĺ×ĸ×¨\":141444,\"à¹ģà¸Łà¸Ĭà¸±à¹Īà¸Ļ\":141445,\"ØªØµØ±Ùģ\":141446,\"Ø¥Ø±ÙĩØ§Ø¨\":141447,\"ĠexercÃŃcio\":141448,\"ĠÃ©lev\":141449,\"ĠÃ©levÃ©\":141450,\"à¸ªà¸±à¸įà¸įà¸²à¸ĵ\":141451,\"ÃĸZ\":141452,\"ãĥĹãĥŃãĤ°\":141453,\"ãĥĹãĥŃãĤ°ãĥ©\":141454,\"ãĥĹãĥŃãĤ°ãĥ©ãĥł\":141455,\"ĠwewnÄĻtrzn\":141456,\"ĠhenÃ¼z\":141457,\"é£Ľãģ³\":141458,\"à¹Ģà¸Ķà¸Ńà¸£à¹Į\":141459,\"ÑģÑĥÐ¶\":141460,\"ÑģÑĥÐ¶Ð´ÐµÐ½\":141461,\"Ø´Ø¹ÙĪØ¨\":141462,\"ãģ²ãģ¨ãĤĬ\":141463,\"ĠwyÅĤÄħ\":141464,\"ĠwyÅĤÄħcznie\":141465,\"ĠÐ¿Ð»Ð¾ÑħÐ¾\":141466,\"ÐĶÐķ\":141467,\"áº¦\":141468,\"ÙģØ¹Ø§ÙĦÙĬ\":141469,\"ÙģØ¹Ø§ÙĦÙĬØ§Øª\":141470,\"ĠØ§ÙĦØ¹Ø´Ø±\":141471,\"ÑģÑĤÑĥÐ¿Ð¸Ð»\":141472,\"Ġyarg\":141473,\"ĠyargÄ±\":141474,\"Ð½ÑİÑİ\":141475,\"×ķ×Ĳ×ĳ\":141476,\"ĠuÃ§\":141477,\"ĠuÃ§ak\":141478,\"ë²½\":141479,\"ØªÙĪÙĤÙĬ\":141480,\"ØªÙĪÙĤÙĬØ¹\":141481,\"Ġì¤ĳìĭ¬\":141482,\"×ł×Ļ×ķ×ķ×ĺ\":141483,\"Ø£ÙĥÙĦ\":141484,\"ç½®ãģĦãģ¦\":141485,\"éłĤãģį\":141486,\"Ġ×Ķ×ª×ĳ\":141487,\"Ġ×Ķ×ª×ĳ×Ļ×¢×Ķ\":141488,\"ĠdÃ¼rfen\":141489,\"ÙħÙĤØ§ÙĦ\":141490,\"ÙħÙĤØ§ÙĦØ§Øª\":141491,\"ĠØ²ÙħÙĨ\":141492,\"à¸ŀà¸¤à¸¨\":141493,\"à¸ŀà¸¤à¸¨à¸Ī\":141494,\"à¸ŀà¸¤à¸¨à¸Īà¸´à¸ģ\":141495,\"à¸ŀà¸¤à¸¨à¸Īà¸´à¸ģà¸²à¸¢à¸Ļ\":141496,\"ĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮ\":141497,\"ĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮÐºÐ¸\":141498,\"ĠÐ½ÐµÑģÐºÐ¾Ð»ÑĮÐºÐ¸Ñħ\":141499,\"ĠcrianÃ§a\":141500,\"à¸¡à¸´à¸ķà¸£\":141501,\"×ŀ×Ľ×Ļ×¨×ķ×ª\":141502,\"à¸ģà¸²à¸£à¸ļà¸£à¸´à¸«à¸²à¸£\":141503,\"ĠtÃ©lÃ©charg\":141504,\"Ġ×Ĳ×ķ×Ķ×ĳ×ª\":141505,\"ĠBÃ¼ro\":141506,\"ä½ľãģ£ãģŁ\":141507,\"ĠKiÅŁi\":141508,\"ç¾İåĳ³ãģĹ\":141509,\"à¹Ģà¸¥à¸¢à¸Ħà¹Īà¸°\":141510,\"à¸ŀà¸ļà¸ģà¸±à¸ļ\":141511,\"à¸Īà¹īà¸²\":141512,\"ĠÃ§er\":141513,\"ĠÃ§erÃ§\":141514,\"ĠÃ§erÃ§eve\":141515,\"ãĤĴä½ľãģ£ãģ¦\":141516,\"ĠÐ¿ÐµÑĢÐ²ÑĥÑİ\":141517,\"×ŀ×¦×¨×Ļ×Ŀ\":141518,\"×Ĳ×ľ×ķ×Ķ\":141519,\"×Ĳ×ľ×ķ×Ķ×Ļ×Ŀ\":141520,\"ĠagrÃ©\":141521,\"ĠagrÃ©able\":141522,\"ĠayÄ±r\":141523,\"Ä°LÄ°\":141524,\"ãĤ¥\":141525,\"ĠíĺĦ\":141526,\"ĠíĺĦìĭ¤\":141527,\"Ø«Ø§ÙĦØ«\":141528,\"×ª×ĸ\":141529,\"×ª×ĸ×ķ×ł×Ķ\":141530,\"ãģ¨ãģĦãģ£ãģ¦\":141531,\"ãģ¨ãģĦãģ£ãģ¦ãĤĤ\":141532,\"ĠØ§Ø¨ÙĪ\":141533,\"ĠÑģÐ¾Ð±Ð°Ðº\":141534,\"é£Łãģ¹ãģŁ\":141535,\"ĠÐ´Ð°Ð½Ð½Ð¾Ð¼\":141536,\"à¹Ģà¸¥à¸´\":141537,\"à¹Ģà¸¥à¸´à¸¨\":141538,\"Ġíļ\":141539,\"Ġíļ¨\":141540,\"Ġíļ¨ê³¼\":141541,\"ãĤĤãĤīãģĪãĤĭ\":141542,\"×ł×¦×ľ\":141543,\"ÑĦÐ¸Ðº\":141544,\"ÑĦÐ¸ÐºÑģ\":141545,\"ĠjesteÅĽmy\":141546,\"×ª×Ĺ×ķ×©×Ķ\":141547,\"à¹Ħà¸¡à¹Īà¸Ħà¸§à¸£\":141548,\"ĠØŃØ³ÙĬÙĨ\":141549,\"à¸ģà¸²à¸£à¸¥à¸ĩà¸Ĺà¸¸à¸Ļ\":141550,\"ë´¤\":141551,\"ĠÐĺÐ¼ÐµÐ½Ð½Ð¾\":141552,\"à¸ļà¸Ńà¸£à¹Į\":141553,\"à¸ļà¸Ńà¸£à¹Įà¸Ķ\":141554,\"ĠCáº£nh\":141555,\"ìĦľë¹ĦìĬ¤\":141556,\"ĠÐ¿Ð¾Ð»Ð¾Ð²\":141557,\"ĠÐ¿Ð¾Ð»Ð¾Ð²Ð¸Ð½\":141558,\"ĠÐ·Ð°Ð¼ÐµÑĩÐ°\":141559,\"ãģĦãĤįãĤĵãģª\":141560,\"Ġ×ĳ×Ļ×§\":141561,\"Ġ×ĳ×Ļ×§×©\":141562,\"Ð»ÑĥÑĪ\":141563,\"ãĤĴè¿İ\":141564,\"ãĤĴè¿İãģĪ\":141565,\"Ø¬Ø±ÙĬÙħØ©\":141566,\"ĠtÃ¢y\":141567,\"ĠØ§ÙĦÙĨÙĪ\":141568,\"ĠØ§ÙĦÙĨÙĪÙĪÙĬ\":141569,\"ÃĤN\":141570,\"ì¿ł\":141571,\"à¸«à¸Ļà¸²à¸§\":141572,\"Ġ×ĳ×Ĺ×©×ĳ×ķ×Ł\":141573,\"Ø²Ø§Ø±\":141574,\"à¸Ķà¸²à¸£\":141575,\"à¸Ķà¸²à¸£à¸²\":141576,\"ĠÅĽl\":141577,\"ĠÅĽlub\":141578,\"à¸¡à¸µà¸Ħà¸§à¸²à¸¡à¸ªà¸¸à¸Ĥ\":141579,\"Ġnhu\":141580,\"ĠnhuáºŃn\":141581,\"ÙħØŃØ·Ø©\":141582,\"à¹Ģà¸ªà¸·à¹īà¸Ńà¸ľà¹īà¸²\":141583,\"ĠÐ¢Ð¾Ð»ÑĮÐºÐ¾\":141584,\"ĠÙĥØ³\":141585,\"ĠÙĥØ³Ø§Ø±Ø©\":141586,\"ÙħØ´Ø±ÙĪØ¹\":141587,\"niÄĻcia\":141588,\"×¢×Ľ×©×Ļ×ķ\":141589,\"ØªÙĦÙģ\":141590,\"ØªÙĦÙģØ²ÙĬ\":141591,\"ØªÙĦÙģØ²ÙĬÙĪÙĨ\":141592,\"ĠlÆ°á»Ľi\":141593,\"ĠÐľÐ¾ÑģÐºÐ²Ñĭ\":141594,\"ĠrÃ©serve\":141595,\"ĠanlaÅŁ\":141596,\"ĠanlaÅŁÄ±l\":141597,\"ĠedeceÄŁi\":141598,\"à¸£à¸Ńà¸ĩà¹Ģà¸Ĺà¹īà¸²\":141599,\"ĠØ¨Ø·\":141600,\"ĠØ¨Ø·Ø±ÙĬ\":141601,\"ĠØ¨Ø·Ø±ÙĬÙĤØ©\":141602,\"ãģ¦ãģĹãģ¾ãģ£ãģ¦\":141603,\"ãĤĤãĤīãģ£ãģ¦\":141604,\"Ø¨Ø±Ø¬\":141605,\"æ±ļ\":141606,\"æ±ļãĤĮ\":141607,\"Ġchoc\":141608,\"Ġchocia\":141609,\"ĠchociaÅ¼\":141610,\"Ġzobac\":141611,\"ĠzobaczyÄĩ\":141612,\"Ð¿ÑĢÑı\":141613,\"Ð¿ÑĢÑıÐ¶ÐµÐ½\":141614,\"ĠÑĨÐ¸ÑĦ\":141615,\"ĠÑĨÐ¸ÑĦÑĢ\":141616,\"ĠÐ¼Ð°Ð¼\":141617,\"ĠÐ²Ð·ÑıÑĤÑĮ\":141618,\"Ġcháº¡m\":141619,\"Ø¬Ø³Ùħ\":141620,\"ØŃÙħØ§Ø³\":141621,\"à¹Ģà¸¥à¹Īà¸¡\":141622,\"à¸ŀà¸´à¸©\":141623,\"×Ķ×¤×Ľ×ķ\":141624,\"à¸Ĭà¹Īà¸Ńà¸ĩà¸Ĺà¸²à¸ĩ\":141625,\"ĠÐ²ÐµÐº\":141626,\"ĠÐ²ÐµÐºÐ°\":141627,\"Æ¡Ìģ\":141628,\"Æ¡Ìģi\":141629,\"ĠTiá»ģn\":141630,\"Ġtráº§m\":141631,\"Ð¼ÑĭÑĪ\":141632,\"Ð¼ÑĭÑĪÐ»\":141633,\"ĠÑĤÑĥ\":141634,\"ĠÑĤÑĥÑĢÐ¸ÑģÑĤ\":141635,\"Ġchc\":141636,\"ĠchcÄħ\":141637,\"ĠÐ°Ð²Ð³\":141638,\"ĠÐ°Ð²Ð³ÑĥÑģÑĤ\":141639,\"ĠÐ°Ð²Ð³ÑĥÑģÑĤÐ°\":141640,\"×¡×Ĳ×ķ×ª\":141641,\"Ġ×¨×Ĵ×ľ\":141642,\"à¸ľà¸¥à¸ģà¸£à¸°à¸Ĺ\":141643,\"à¸ľà¸¥à¸ģà¸£à¸°à¸Ĺà¸ļ\":141644,\"å¤īãĤıãĤĭ\":141645,\"Ġ×Ķ×Ĳ×Ĺ×¨×ķ×ł×Ļ×Ŀ\":141646,\"Ø³ÙģÙĬØ±\":141647,\"ĠÑĩÐ°ÑīÐµ\":141648,\"ãģĦãĤī\":141649,\"ãģĦãĤīãģ£\":141650,\"ãģĦãĤīãģ£ãģĹãĤĥ\":141651,\"×ķ×ŀ×ł×Ļ×Ŀ\":141652,\"ĠarttÄ±r\":141653,\"ĠChá»ĭ\":141654,\"Ġì¡°ì§ģ\":141655,\"ĠÑĥÑģÐ¿ÐµÑħ\":141656,\"Ġ×¢×ķ×¡\":141657,\"Ġ×¢×ķ×¡×§\":141658,\"ĠìĥĿëªħ\":141659,\"ÑĨÐ¸ÑĤ\":141660,\"ĠregiÃ³n\":141661,\"ÐŀÐĿ\":141662,\"ĠdoÄŁum\":141663,\"ĠyaÅŁad\":141664,\"ĠyaÅŁadÄ±ÄŁÄ±\":141665,\"à¸Ĺà¸Ķà¸¥à¸Ńà¸ĩ\":141666,\"ĠgÃ¶zÃ¼\":141667,\"×©×Ļ×¨×Ķ\":141668,\"Ð´ÑĥÐ¼Ð°Ð»\":141669,\"ĠdaÄŁÄ±\":141670,\"ĠdaÄŁÄ±t\":141671,\"à¸Ĺà¸µà¸¡à¸ĩà¸²à¸Ļ\":141672,\"Ġtiá»ģm\":141673,\"ĠØ§ÙĦÙĥØ¨Ø±\":141674,\"ĠØ§ÙĦÙĥØ¨Ø±Ùī\":141675,\"ì¹Ń\":141676,\"ĠGÃ¼nc\":141677,\"ĠGÃ¼ncelle\":141678,\"ĠGÃ¼ncelleme\":141679,\"ê¹Ĭ\":141680,\"ĠÐ¾Ð±Ð¾ÑĢÑĥÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ\":141681,\"ĠÑĢÐµÑĪÐ°\":141682,\"á»¤\":141683,\"ĠÐ¿Ð¸ÑĤ\":141684,\"ĠÐ¿Ð¸ÑĤÐ°Ð½Ð¸Ñı\":141685,\"à¹Ģà¸£à¸µà¸¢à¸ļ\":141686,\"×Ľ×ª×Ļ×ĳ×Ķ\":141687,\"ĠÐ¿Ð¾Ð½\":141688,\"ĠÐ¿Ð¾Ð½ÑĢÐ°Ð²\":141689,\"ĠÐ¿Ð¾Ð½ÑĢÐ°Ð²Ð¸\":141690,\"Ġ×Ķ×ķ×ľ×ĵ\":141691,\"Ġ×Ķ×ķ×ľ×ĵ×ª\":141692,\"Ġê²ģ\":141693,\"Ġê²ģëĭĪëĭ¤\":141694,\"ĠÐ¿ÐµÑĢÐ²Ð¾Ð¹\":141695,\"ãĥ©ãĤ¤ãĥķ\":141696,\"ĠÅŁiir\":141697,\"krÄĻ\":141698,\"krÄĻc\":141699,\"Ġthiá»ĥu\":141700,\"à¹Ģà¸¥à¸¢à¸Ĺà¸µ\":141701,\"à¹Ģà¸¥à¸¢à¸Ĺà¸µà¹Ģà¸Ķà¸µà¸¢à¸§\":141702,\"×ĺ×¢×ł×ķ×ª\":141703,\"Ø§Ø¦ÙĩÙħ\":141704,\"Ġ×Ĳ×¡×ķ×¨\":141705,\"ĠÐ¿Ð»Ð°ÑĤÐµÐ¶\":141706,\"ØªØ±Ø¯Ø¯\":141707,\"ĠmoÅ¼liwe\":141708,\"Ġkhá»Ľ\":141709,\"Ġkhá»Ľp\":141710,\"ØªÙģØ§Ø¹ÙĦ\":141711,\"ĠÑĪÐºÐ¾Ð»ÑĮ\":141712,\"ĠÑĪÐºÐ¾Ð»ÑĮÐ½\":141713,\"ĠÙĤØµØ©\":141714,\"ĠmÃ©tier\":141715,\"nÄĻÅĤa\":141716,\"à¸«à¸¥à¹Īà¸Ń\":141717,\"Ġá»§ng\":141718,\"Ġprzegl\":141719,\"ĠprzeglÄħd\":141720,\"ĠØ§ÙĦÙħØªØ¹ÙĦ\":141721,\"ĠØ§ÙĦÙħØªØ¹ÙĦÙĤØ©\":141722,\"ĠÑģÑĭÐ½\":141723,\"ĠÐ²Ð¾Ð»Ð½\":141724,\"ãĥĩãĥ¼ãĥĪ\":141725,\"ĠÐŃÑĤÐ¸\":141726,\"ĠÐºÑĢÐ¾Ð¼Ðµ\":141727,\"à¸Ħà¸²à¸£à¹Į\":141728,\"×ł×§×ķ×ĵ×Ķ\":141729,\"Ġ×ľ×©×ŀ×ķ×¢\":141730,\"Ġ×ĸ×ķ×Ľ×¨\":141731,\"ï¼§\":141732,\"ÙĬÙİØ§\":141733,\"Ġgiá»ıi\":141734,\"åĥįãģı\":141735,\"ĠÑģÐ½Ð¸\":141736,\"ĠÑģÐ½Ð¸Ð¶ÐµÐ½\":141737,\"à¹ģà¸Ķà¸Ķ\":141738,\"à¸£à¸¸à¸Ļ\":141739,\"à¸£à¸¸à¸Ļà¹ģà¸£à¸ĩ\":141740,\"Ġhiá»ĩp\":141741,\"ografÃŃa\":141742,\"à¹Ģà¸Īà¸Ńà¸£à¹Į\":141743,\"ĠÐ´Ð²Ð¸Ð³\":141744,\"ĠÐ´Ð²Ð¸Ð³Ð°ÑĤ\":141745,\"ĠÐ´Ð²Ð¸Ð³Ð°ÑĤÐµÐ»\":141746,\"ĠÃ¼y\":141747,\"ĠÃ¼yeler\":141748,\"ĠÃ¼yeleri\":141749,\"ĠÐ±ÑĥÐº\":141750,\"ĠÐ±ÑĥÐºÐ²\":141751,\"ãĤĤå¤ļãģı\":141752,\"Ġthiá»ĩt\":141753,\"ĠPaÃŃs\":141754,\"ĠØ·Ø¨ÙĬØ¹ÙĬ\":141755,\"à¹ģà¸Īà¸ģ\":141756,\"ĠØ§ÙĦØµØŃÙĬØŃ\":141757,\"ĠapprÃ©\":141758,\"ĠapprÃ©ci\":141759,\"ĠdecisiÃ³n\":141760,\"Ġë°ĺëĵľ\":141761,\"Ġë°ĺëĵľìĭľ\":141762,\"ĠÑĤÐµÐ±Ðµ\":141763,\"ãĤ·ãĥ¼ãĤº\":141764,\"ãĤ·ãĥ¼ãĤºãĥ³\":141765,\"ĠÐ´Ð°Ð»ÑĮÐ½\":141766,\"ĠìĬ¤\":141767,\"ĠìĬ¤ìĬ¤\":141768,\"ĠìĬ¤ìĬ¤ë¡ľ\":141769,\"ĠThá»ĥ\":141770,\"ĠkarÅŁ\":141771,\"ĠkarÅŁÄ±s\":141772,\"ĠkarÅŁÄ±sÄ±nda\":141773,\"ĠKÃ¶n\":141774,\"ĠKÃ¶nig\":141775,\"Ð¸Ð²Ð°Ð½Ð¸Ðµ\":141776,\"×ĳ×ķ×¦×¢\":141777,\"Ð³Ð»Ð°Ñģ\":141778,\"ĠtwÃ³\":141779,\"ĠtwÃ³rc\":141780,\"à¸Ľà¸ģà¸Ħà¸£\":141781,\"à¸Ľà¸ģà¸Ħà¸£à¸Ńà¸ĩ\":141782,\"ĠGÅĤ\":141783,\"ĠGÅĤÃ³wn\":141784,\"ĠUnterstÃ¼t\":141785,\"ĠUnterstÃ¼tzung\":141786,\"ĠÐ´ÑĥÑħ\":141787,\"ĠÐ´ÑĥÑħÐ¾Ð²\":141788,\"Ø£ÙħØ§ÙĨ\":141789,\"×Ĺ×©×©\":141790,\"ØªØ¸\":141791,\"ØªØ¸Ø§ÙĩØ±\":141792,\"ĠÐ»ÑİÐ±Ð¾Ð¼\":141793,\"à¸ķà¸²à¸£\":141794,\"à¸ķà¸²à¸£à¸²à¸ĩ\":141795,\"ĠkrÃ³l\":141796,\"Ø£ØŃØ¯Ø«\":141797,\"ì¡Įëĭ¤\":141798,\"ÐļÑĥÑĢÑģ\":141799,\"ãĥĥãĥĦ\":141800,\"×ŀ×§×ķ×ĳ×ľ\":141801,\"ĠÑģÐ¸Ð¼Ð²Ð¾Ð»\":141802,\"ĠdÃ©sorm\":141803,\"ĠdÃ©sormais\":141804,\"wÃ¼ns\":141805,\"wÃ¼nsche\":141806,\"ÑĥÐ½Ð¸\":141807,\"ÑĥÐ½Ð¸ÑĨÐ¸Ð¿\":141808,\"ÑĥÐ½Ð¸ÑĨÐ¸Ð¿Ð°Ð»ÑĮÐ½\":141809,\"à¸«à¸¥à¸±à¸ģà¸ªà¸¹à¸ķà¸£\":141810,\"ÙĨØªØ´Ø±\":141811,\"ĠÐ°Ð»\":141812,\"ĠÐ°Ð»Ðº\":141813,\"ĠÐ°Ð»ÐºÐ¾Ð³\":141814,\"ĠÐ°Ð»ÐºÐ¾Ð³Ð¾Ð»\":141815,\"ĠÑĥÑĩÐ¸ÑĤÑĭÐ²Ð°\":141816,\"à¸ģà¸³à¸ģà¸±à¸ļ\":141817,\"Ġ×ľ×¤×¢×ķ×ľ\":141818,\"ĠìĹ°ê²°\":141819,\"sÄħd\":141820,\"ĠØ§ÙĦØ£ÙĬ\":141821,\"ĠØ§ÙĦØ£ÙĬØ§Ùħ\":141822,\"ØºÙĬØ§Ø¨\":141823,\"ĠÐ½Ð°ÑĢ\":141824,\"ĠÐ½Ð°ÑĢÐºÐ¾\":141825,\"×ŀ×ķ×ĵ×¢\":141826,\"ĠÑģÐµÑĢÐ¸Ð¸\":141827,\"Ð¿Ð¸ÑģÑĭÐ²Ð°\":141828,\"à¸ªà¸´à¸§\":141829,\"ç¶ļãģĦãģ¦\":141830,\"çĶ³ãģĹè¾¼ãģ¿\":141831,\"Ġ×ľ×Ĵ×¨\":141832,\"Ġ×ľ×Ĵ×¨×ķ×Ŀ\":141833,\"ĠÐ´ÐµÐ¼\":141834,\"ĠÐ´ÐµÐ¼Ð¾\":141835,\"Ġë³´ëĤ´\":141836,\"ØªÙĩØ¯ÙĬØ¯\":141837,\"ĠÙħØ´ÙĬØ±Ø§\":141838,\"Ġduy\":141839,\"Ġduyá»ĩt\":141840,\"ĠwiÄĻksze\":141841,\"ÙħØ¹Ø§ÙĬ\":141842,\"ÙħØ¹Ø§ÙĬÙĬØ±\":141843,\"ĠGda\":141844,\"ĠGdaÅĦsk\":141845,\"Ġrah\":141846,\"Ġrahats\":141847,\"ĠrahatsÄ±z\":141848,\"×¨×ķ×¦×Ķ\":141849,\"lÃ¶s\":141850,\"lÃ¶sung\":141851,\"ĠÐ¢Ð°ÐºÐ¸Ð¼\":141852,\"ÑĪÐµÐ´\":141853,\"ÑĪÐµÐ´ÑĪ\":141854,\"Ø¹Ø²ÙĦ\":141855,\"Ġ×¨×©×Ļ×ŀ×ª\":141856,\"Ġ×ľ×Ķ×Ļ×Ľ\":141857,\"Ġ×ľ×Ķ×Ļ×Ľ×ł×¡\":141858,\"ĠÐ¿ÑĥÑĤ\":141859,\"ĠÐ¿ÑĥÑĤÐµÑĪ\":141860,\"ĠÐ¿ÑĥÑĤÐµÑĪÐµÑģÑĤÐ²\":141861,\"ĠnotÃŃcia\":141862,\"ĠalÄ±ÅŁ\":141863,\"ĠalÄ±ÅŁver\":141864,\"ĠalÄ±ÅŁveriÅŁ\":141865,\"ĠwÅĤos\":141866,\"ĠwÅĤosÃ³w\":141867,\"ĠØ¨Øº\":141868,\"ĠØ¨ØºØ¯Ø§Ø¯\":141869,\"ĠverÃ¶ffent\":141870,\"ĠverÃ¶ffentlicht\":141871,\"ĠKhÃ¡\":141872,\"ĠtÃ¡n\":141873,\"ëĲĺê¸°\":141874,\"Ġë°©ë¬¸\":141875,\"ÙģÙĬÙĦ\":141876,\"à¹Ģà¸ģà¸´à¸Ķà¸Īà¸²à¸ģ\":141877,\"åı¯æĦĽ\":141878,\"åı¯æĦĽãģĦ\":141879,\"à¸ĸà¸¸à¸ĩ\":141880,\"ĠzewnÄĻtrzn\":141881,\"à¸łà¸²à¸©à¸²à¸Ńà¸±à¸ĩà¸ģà¸¤à¸©\":141882,\"ĠmÃ¡xima\":141883,\"Ġulus\":141884,\"ĠuluslararasÄ±\":141885,\"Ġ×ł×Ķ×ł\":141886,\"à¸Ĥà¹Īà¸²à¸§à¸ªà¸²à¸£\":141887,\"ĠìĿĺìĤ¬\":141888,\"à¹Ģà¸«à¸¥à¸·à¸Ńà¸ĩ\":141889,\"ĠØ¯ÙĤ\":141890,\"ĠØ¯ÙĤØ§Ø¦ÙĤ\":141891,\"à¸ªà¸·à¹Īà¸Ńà¸ªà¸²à¸£\":141892,\"ë¨¼\":141893,\"ĠÑģÐ¾ÑģÑĤÐ¾ÑıÐ½Ð¸Ð¸\":141894,\"à¸ªà¸¡à¸²à¸Ħà¸¡\":141895,\"á»Ĥ\":141896,\"ĠÐľÐ¾ÑģÐºÐ¾Ð²\":141897,\"ĠÐľÐ¾ÑģÐºÐ¾Ð²ÑģÐº\":141898,\"×ŀ×¡×ķ×Ĵ×ľ\":141899,\"ãģĭãģĭãĤĬ\":141900,\"ĠTruyá»ģn\":141901,\"à¹ģà¸Ĥà¹ĩà¸ĩà¹ģà¸£à¸ĩ\":141902,\"×ŀ×Ĺ×ĸ×Ļ×§\":141903,\"à¹Ĥà¸ģà¹ī\":141904,\"ÙĬØ³Ø±\":141905,\"ìĶ©\":141906,\"×Ĳ×ķ×§\":141907,\"×Ĳ×ķ×§×ĺ\":141908,\"×Ĳ×ķ×§×ĺ×ķ×ĳ×¨\":141909,\"ĠproximitÃ©\":141910,\"ÙħÙĨÙĩØ¬\":141911,\"ĠØ§ÙĦØ¬Ø²\":141912,\"ĠØ§ÙĦØ¬Ø²Ø§Ø¦\":141913,\"ĠØ§ÙĦØ¬Ø²Ø§Ø¦Ø±ÙĬ\":141914,\"ĠÄĲiá»ĥm\":141915,\"ĠÐ´ÐµÐ½ÐµÐ¶\":141916,\"ĠÐ´ÐµÐ½ÐµÐ¶Ð½\":141917,\"ÙģØŃØµ\":141918,\"ÙģØ¦\":141919,\"ĠÐĳÑĥÐ´\":141920,\"×Ĵ×Ļ×ĵ×ķ×ľ\":141921,\"ĠÐĴÐµÐ´ÑĮ\":141922,\"Ø¹ÙĦØ§ÙħØ©\":141923,\"Ġ×Ĳ×Ĺ×¨×ķ×ł×ķ×ª\":141924,\"ãģĦãģŁãģłãģĦãģ¦\":141925,\"Ø³ÙĦØŃ\":141926,\"ØŃÙĦÙħ\":141927,\"Ø²ÙĪØ§Ø±\":141928,\"ÙĥØ³Ø±\":141929,\"×ĺ×§×¡\":141930,\"ĠÐ±Ð°Ð½\":141931,\"ĠÐ±Ð°Ð½ÐºÐ¾Ð²\":141932,\"ĠÐ¿ÑĢÐ¾Ð¶\":141933,\"ĠÐ¿ÑĢÐ¾Ð¶Ð¸Ð²Ð°\":141934,\"liwo\":141935,\"liwoÅĽci\":141936,\"ĠTiáº¿p\":141937,\"ĠØ§ÙĦÙħÙĨØ§Ø³Ø¨\":141938,\"ĠØ§ÙĦØ®ÙĬØ§Ø±\":141939,\"ãģĬãģĭ\":141940,\"ãģĬãģĭãģĴ\":141941,\"à¸Ķà¸Ńà¸ģà¹Ħà¸¡à¹ī\":141942,\"Ã¤mp\":141943,\"Ã¤mpfe\":141944,\"à¸ķà¸±à¹īà¸ĩà¹ĥà¸Ī\":141945,\"ĠÐ·Ð°ÑīÐ¸ÑĤ\":141946,\"ĠÐ·Ð°ÑīÐ¸ÑĤÑĭ\":141947,\"ĠThÆ°á»Ŀng\":141948,\"ĠØµÙģ\":141949,\"ĠØµÙģØŃØ©\":141950,\"×Ĺ×ķ×¨×£\":141951,\"ãĥĲãĥĥãĤ°\":141952,\"Ġ×ĵ×Ļ×Ĵ\":141953,\"Ġ×ĵ×Ļ×Ĵ×Ļ×ĺ\":141954,\"Ġ×ĵ×Ļ×Ĵ×Ļ×ĺ×ľ×Ļ\":141955,\"Ġ×Ķ×Ĺ×ķ×ľ×Ļ×Ŀ\":141956,\"Ð²ÐµÑī\":141957,\"Ð²ÐµÑīÐ°\":141958,\"ĠÐºÑĥÐ»ÑĮÑĤ\":141959,\"ĠÐºÑĥÐ»ÑĮÑĤÑĥ\":141960,\"ĠÐºÑĥÐ»ÑĮÑĤÑĥÑĢÑĭ\":141961,\"ĠØ§ÙĦØ§ÙĨØªØ±ÙĨØª\":141962,\"ĠhÃ¶ch\":141963,\"ĠhÃ¶chst\":141964,\"Ġíĺķ\":141965,\"Ġíĺķíĥľ\":141966,\"ĠÐ²Ð¾Ð¹\":141967,\"ĠÐ²Ð¾Ð¹Ð½Ñĭ\":141968,\"ÐĽÐŀ\":141969,\"ìĭłìļ©\":141970,\"Ġ×ŀ×ĳ×ķ×¡\":141971,\"Ġ×ŀ×ĳ×ķ×¡×¡\":141972,\"×ŀ×ł×Ļ×¢\":141973,\"ĠfiyatÄ±\":141974,\"ĠÑģÐ»ÑĥÐ¶\":141975,\"ĠÑģÐ»ÑĥÐ¶Ð±Ñĭ\":141976,\"à¸Ĺà¸±à¸¨\":141977,\"à¸Ĺà¸±à¸¨à¸Ļ\":141978,\"ãģĵãģ¨ãģĮå¤ļãģĦ\":141979,\"Ġ×Ķ×ŀ×©×ª\":141980,\"Ġ×Ķ×ŀ×©×ª×ŀ×©\":141981,\"å¯ĦãģĽ\":141982,\"×ŀ×©×ľ×ķ×Ĺ\":141983,\"æĻĤçĤ¹\":141984,\"æĻĤçĤ¹ãģ§\":141985,\"à¸ŀà¸£à¸µ\":141986,\"à¸ŀà¸£à¸µà¹Ģà¸¡à¸µà¸¢\":141987,\"à¸ŀà¸£à¸µà¹Ģà¸¡à¸µà¸¢à¸£à¹Į\":141988,\"à¸ŀà¸£à¸µà¹Ģà¸¡à¸µà¸¢à¸£à¹Įà¸¥à¸µà¸ģ\":141989,\"Ġdifficolt\":141990,\"ĠdifficoltÃł\":141991,\"ãĥ¬ãĤ¹ãĥĪ\":141992,\"ãĥ¬ãĤ¹ãĥĪãĥ©ãĥ³\":141993,\"à¸ªà¸¡à¹Ģà¸Ķà¹ĩ\":141994,\"à¸ªà¸¡à¹Ģà¸Ķà¹ĩà¸Ī\":141995,\"ĠÐ¶Ð¸Ð´\":141996,\"ĠÐ¶Ð¸Ð´Ðº\":141997,\"ĠzupeÅĤ\":141998,\"ĠzupeÅĤnie\":141999,\"ĠÙħØ¬Ø±\":142000,\"ĠÙħØ¬Ø±Ø¯\":142001,\"ãģĮå§ĭ\":142002,\"ãģĮå§ĭãģ¾\":142003,\"ãĤŃãĥ£ãĥ©\":142004,\"Ġ×Ĳ×ķ×ķ×Ļ×¨\":142005,\"ãģĬäºĴ\":142006,\"ãģĬäºĴãģĦ\":142007,\"ĠpotrÃł\":142008,\"ĠPaÅĦst\":142009,\"ĠPaÅĦstwo\":142010,\"ĠØ¨ÙĬØ§ÙĨ\":142011,\"ĠØ¨ÙĬØ§ÙĨØ§Øª\":142012,\"ĠÐ¸Ð½Ð¾Ð³Ð´Ð°\":142013,\"ĠÑĢÐ°\":142014,\"ĠÑĢÐ°ÑģÑĤÐ²\":142015,\"ĠÑĢÐ°ÑģÑĤÐ²Ð¾ÑĢ\":142016,\"Ġ×ĸ×ŀ×ł\":142017,\"à¸¢à¸´à¹īà¸¡\":142018,\"ÄĨ\":142019,\"ãģ¾ãģķ\":142020,\"ãģ¾ãģķãģ«\":142021,\"ãĥķãĤ¡ãĤ¤ãĥ«\":142022,\"ĠgÃ¶rdÃ¼ÄŁÃ¼\":142023,\"à¸ªà¸ĩà¸Ħà¸£\":142024,\"à¸ªà¸ĩà¸Ħà¸£à¸²à¸¡\":142025,\"ĠArkadaÅŁ\":142026,\"ĠrozwiÄħzania\":142027,\"×ŀ×ķ×ĺ\":142028,\"piÄĻ\":142029,\"piÄĻt\":142030,\"ØµØºØ±\":142031,\"à¸ªà¸¢\":142032,\"à¸ªà¸¢à¸²à¸¡\":142033,\"ãĤĨãģ£ãģıãĤĬ\":142034,\"Ġtráº§n\":142035,\"ĠeconomÃŃa\":142036,\"ĠgehÃ¶ren\":142037,\"ãĤ·ãĥ§ãĥ¼\":142038,\"ĠsÅĤucha\":142039,\"à¸ŀà¸Ńà¹ĥà¸Ī\":142040,\"ĠÐ¾ÑĤÐ¼ÐµÑĤÐ¸Ð»\":142041,\"ÙĨØªÙĤÙĦ\":142042,\"ĠpropÃ³sito\":142043,\"ĠÐ²Ð°ÑĪÐµÐ³Ð¾\":142044,\"Ġnháº¯n\":142045,\"à¹ģà¸ĸà¸§\":142046,\"ĠÐºÐ¾Ð¼Ð¸Ñģ\":142047,\"ĠÐºÐ¾Ð¼Ð¸ÑģÑģÐ¸\":142048,\"waÅ¼nie\":142049,\"ĠyavaÅŁ\":142050,\"×ŀ×Ļ×§\":142051,\"×ŀ×Ļ×§×ķ×Ŀ\":142052,\"×©×Ĳ×ľ×ª\":142053,\"ĠyÄ±llarda\":142054,\"ĠÐ®\":142055,\"ĠÐ®ÑĢ\":142056,\"×ł×¡×Ļ×ĳ×ķ×ª\":142057,\"×ª×¦\":142058,\"×ª×¦×ķ×Ĵ\":142059,\"ĠÐ¾Ð´Ð½Ñĥ\":142060,\"Ġà¸Ńà¸¢à¹Īà¸²à¸ĩà¹Ħà¸£\":142061,\"Ġà¸Ńà¸¢à¹Īà¸²à¸ĩà¹Ħà¸£à¸ģà¹ĩà¸ķà¸²à¸¡\":142062,\"ëģ¼\":142063,\"à¹Ħà¸¥à¹Ī\":142064,\"ØªØ³ÙĦÙĬÙħ\":142065,\"Ø¨ÙĦØ§Øº\":142066,\"Ġìī\":142067,\"Ġìī½\":142068,\"Ġìī½ê²Į\":142069,\"ãĥļãĥ³\":142070,\"Ð·Ð²ÑĥÑĩ\":142071,\"ĠWÃ¤h\":142072,\"ĠWÃ¤hrend\":142073,\"Ġ×Ļ×Ļ×ª\":142074,\"Ġ×Ļ×Ļ×ª×Ľ×Ł\":142075,\"ĠkhuyÃªn\":142076,\"Ġváº½\":142077,\"ĠÐ°Ð¼ÐµÑĢ\":142078,\"ĠÐ°Ð¼ÐµÑĢÐ¸Ðº\":142079,\"ĠÐ°Ð¼ÐµÑĢÐ¸ÐºÐ°Ð½\":142080,\"ĠÐ°Ð¼ÐµÑĢÐ¸ÐºÐ°Ð½ÑģÐº\":142081,\"Ø¹Ø¬Ø¨\":142082,\"ãĥĽãĥ¼ãĥłãĥļãĥ¼ãĤ¸\":142083,\"ĠÐ½Ð¸ÐºÑĤÐ¾\":142084,\"ĠÙĤÙİ\":142085,\"ĠÙĤÙİØ§ÙĦ\":142086,\"ĠÙĤÙİØ§ÙĦÙİ\":142087,\"ÐĲÐĹ\":142088,\"ÙħØ¬ÙħÙĪØ¹\":142089,\"ÙħØ¬ÙħÙĪØ¹Ø§Øª\":142090,\"ĠnecessitÃł\":142091,\"Ġpobli\":142092,\"ĠpobliÅ¼u\":142093,\"Ġpháº¥n\":142094,\"ĠÐ¡Ð¾Ð¾Ð±Ñī\":142095,\"ÙħÙĤØ§Ø·\":142096,\"ÙħÙĤØ§Ø·Ø¹\":142097,\"Ġ×Ķ×¦×ķ×¨×ļ\":142098,\"laÅŁtÄ±rma\":142099,\"à¸§à¸´à¸Ķ\":142100,\"à¸§à¸´à¸Ķà¸µ\":142101,\"à¸§à¸´à¸Ķà¸µà¹Ĥà¸Ń\":142102,\"Ġê·¸ë¦¬ìĬ¤\":142103,\"Ġê·¸ë¦¬ìĬ¤ëıĦ\":142104,\"ãĤ¿ãĤ¤ãĥŁ\":142105,\"ãĤ¿ãĤ¤ãĥŁãĥ³ãĤ°\":142106,\"×§×ĺ×Ĵ×ķ×¨\":142107,\"×§×ĺ×Ĵ×ķ×¨×Ļ×Ķ\":142108,\"Ġ×Ĺ×ķ×¤\":142109,\"Ġ×Ĺ×ķ×¤×©×Ļ\":142110,\"Ø£Ø¬Ø±\":142111,\"ĠÐ¸Ð¼ÐµÐ½Ð¸\":142112,\"ĠÑĢÐ°Ð½ÐµÐµ\":142113,\"à¹Ģà¸ŀà¸·à¹Īà¸Ńà¸Ļà¹Ĩ\":142114,\"ĠJesÃºs\":142115,\"ÑģÐ¾ÐµÐ´Ð¸Ð½\":142116,\"ÑģÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½\":142117,\"Ġ×¨×Ĺ×ķ×§\":142118,\"à¹Ĥà¸ļà¸£à¸²\":142119,\"à¹Ĥà¸ļà¸£à¸²à¸ĵ\":142120,\"ĠHÆ¡n\":142121,\"ĠtháºŃp\":142122,\"ØªØ¹ÙĬÙĬÙĨ\":142123,\"ĠtartÄ±ÅŁ\":142124,\"ĠtartÄ±ÅŁma\":142125,\"ĠGespr\":142126,\"ĠGesprÃ¤ch\":142127,\"×ª×¨×ķ×¤\":142128,\"×ª×¨×ķ×¤×ķ×ª\":142129,\"ĠcatÃ©gorie\":142130,\"ĠÐ¾ÐºÐ°Ð·ÑĭÐ²Ð°\":142131,\"ĠÐ½Ð°Ð»Ð¸ÑĩÐ¸Ðµ\":142132,\"ĠprÃ©sentÃ©\":142133,\"Ġkull\":142134,\"Ġkulland\":142135,\"ĠkullandÄ±\":142136,\"ĠÃ¼nl\":142137,\"ĠÃ¼nlÃ¼\":142138,\"ĠÙģÙĥØ±Ø©\":142139,\"Ð¸Ð·Ð°ÑĤÐ¾ÑĢ\":142140,\"×Ĳ×ķ×ł\":142141,\"×Ĳ×ķ×ł×Ļ×ĳ\":142142,\"×Ĳ×ķ×ł×Ļ×ĳ×¨×¡\":142143,\"×Ĳ×ķ×ł×Ļ×ĳ×¨×¡×Ļ×ĺ×ª\":142144,\"ĠÑĢÐ°ÑģÑģÐ¼Ð°ÑĤ\":142145,\"ĠÑĢÐ°ÑģÑģÐ¼Ð°ÑĤÑĢ\":142146,\"ĠÑĢÐ°ÑģÑģÐ¼Ð°ÑĤÑĢÐ¸Ð²Ð°\":142147,\"ØªÙĥÙĦÙħ\":142148,\"ÙĥØªØ±ÙĪ\":142149,\"ÙĥØªØ±ÙĪÙĨÙĬ\":142150,\"ĠÑģÐ¾ÑĩÐµÑĤ\":142151,\"ĠÑģÐ¾ÑĩÐµÑĤÐ°\":142152,\"ãĤĴè¦ĭãģĽ\":142153,\"Ġngá»«a\":142154,\"ĠÐłÐµÑģÐ¿\":142155,\"ĠÐłÐµÑģÐ¿ÑĥÐ±\":142156,\"ĠÐłÐµÑģÐ¿ÑĥÐ±Ð»Ð¸Ðº\":142157,\"ãĤ¦ãĤ©\":142158,\"ãĤ¦ãĤ©ãĥ¼\":142159,\"ĠÐľÐµÐ¶Ð´Ñĥ\":142160,\"ĠìŀĪê²Į\":142161,\"ĠmÃ¢\":142162,\"ĠìļĶì²Ń\":142163,\"Ø¶Ø§Ø±\":142164,\"à¸¥à¸¸à¹īà¸Ļ\":142165,\"ëĮĢíķĻêµĲ\":142166,\"×ĸ×Ļ×Ľ\":142167,\"×ĸ×Ļ×Ľ×¨×ķ×Ł\":142168,\"ãĤ¹ãĥļ\":142169,\"ãĤ¹ãĥļãĥ¼ãĤ¹\":142170,\"ĠÐºÑĢÐ°ÑģÐ¾ÑĤ\":142171,\"ï¼¨\":142172,\"ê¼Ń\":142173,\"ãĤĴéĽĨ\":142174,\"ãĤĴéĽĨãĤģ\":142175,\"ë°Ŀ\":142176,\"Ġ×Ķ×ł×Ĳ\":142177,\"Ġ×Ķ×ł×Ĳ×©×Ŀ\":142178,\"Ġê°Ģìļ´\":142179,\"Ġê°Ģìļ´ëį°\":142180,\"ØªÙĥÙĦÙģØ©\":142181,\"ĠØŃÙĤÙĬÙĤÙĬ\":142182,\"Ġhalk\":142183,\"ĠhalkÄ±n\":142184,\"ÑİÑīÑĥÑİ\":142185,\"ĠÑģÐ¿Ð¸Ð½\":142186,\"×¡×¨×ĺ×Ł\":142187,\"ĠÐ¿ÐµÑĢÐ²Ð¾Ð³Ð¾\":142188,\"ĠÐ¿Ð¾Ð»Ð¾Ð¶\":142189,\"ĠÐ¿Ð¾Ð»Ð¾Ð¶Ð¸ÑĤÐµÐ»ÑĮÐ½\":142190,\"ĠÐ´Ð»\":142191,\"ĠÐ´Ð»Ð¸ÑĤÐµÐ»ÑĮÐ½\":142192,\"ĠVÄ©nh\":142193,\"ê´´\":142194,\"ĠÑģÑĭÑĢ\":142195,\"ĠíĨµíķĺìĹ¬\":142196,\"ë³ĳìĽĲ\":142197,\"à¹Ĥà¸£à¸ĩà¸ĩà¸²à¸Ļ\":142198,\"à¸£à¸±à¸ļà¸ľà¸´à¸Ķ\":142199,\"à¸£à¸±à¸ļà¸ľà¸´à¸Ķà¸Ĭà¸Ńà¸ļ\":142200,\"ØªØ¬ÙĨØ¨\":142201,\"sÅĤ\":142202,\"sÅĤuch\":142203,\"ãĤ¢ãĥ«ãĥĲ\":142204,\"ãĤ¢ãĥ«ãĥĲãĥł\":142205,\"ëī´ìĬ¤\":142206,\"ĠpatiÃ«\":142207,\"ĠpatiÃ«nt\":142208,\"Ġìĺ¤í\":142209,\"Ġìĺ¤íŀ\":142210,\"Ġìĺ¤íŀĪ\":142211,\"Ġìĺ¤íŀĪëł¤\":142212,\"ĠDerne\":142213,\"ĠDerneÄŁi\":142214,\"wrÃ³ci\":142215,\"wrÃ³ciÄĩ\":142216,\"ĠÐ¾Ð±Ñī\":142217,\"ĠÐ¾Ð±ÑīÐµÑģÑĤÐ²\":142218,\"ĠÐ¾Ð±ÑīÐµÑģÑĤÐ²ÐµÐ½Ð½Ð¾\":142219,\"ĠêµĲìĪĺ\":142220,\"tÄ±ÄŁÄ±mÄ±z\":142221,\"Ġ×Ķ×ŀ×©×Ļ×ĳ\":142222,\"kÃ¶rper\":142223,\"ĠÐ¿Ð¾Ð·Ð²Ð¾Ð»\":142224,\"ĠÐ¿Ð¾Ð·Ð²Ð¾Ð»Ð¸ÑĤ\":142225,\"ĠChiáº¿n\":142226,\"Ø£Ø®ÙĪ\":142227,\"ĠAydÄ±n\":142228,\"à¸Ķà¹īà¸²à¸Ļà¸¥\":142229,\"à¸Ķà¹īà¸²à¸Ļà¸¥à¹Īà¸²à¸ĩ\":142230,\"Ġdru\":142231,\"ĠdruÅ¼\":142232,\"ĠdruÅ¼yn\":142233,\"Ġë°ľíĳľ\":142234,\"ĠTháº£o\":142235,\"Ø¬ÙĩØ§Ø¯\":142236,\"à¸ģà¸£à¸°à¸Ĺà¸¹à¹ī\":142237,\"ĠÐºÑĢÐ¾Ð²\":142238,\"ĠÐºÑĢÐ¾Ð²Ð¸\":142239,\"ĠiÃ§erik\":142240,\"Ġnadzie\":142241,\"ĠnadziejÄĻ\":142242,\"ĠÐ¡Ð¼Ð¾ÑĤÑĢ\":142243,\"Ġphá»©c\":142244,\"Ø¬ØªÙħØ§Ø¹\":142245,\"Ø¬ØªÙħØ§Ø¹ÙĬØ©\":142246,\"ÐºÐ¾Ð¼Ð¿Ð¾Ð½\":142247,\"ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑĤ\":142248,\"ĠÐ±Ð¸Ð»\":142249,\"ĠÐ±Ð¸Ð»ÐµÑĤ\":142250,\"ãĥĲãĥ³ãĥī\":142251,\"ĠPolÃŃcia\":142252,\"Ø§ÙĦØªÙĩ\":142253,\"Ø§ÙĦØªÙĩØ§Ø¨\":142254,\"ØŃØ±Ùģ\":142255,\"ØªØ®Ø·\":142256,\"ØªØ®Ø·ÙĬØ·\":142257,\"ãĤ³ãĥ¼ãĥ\":142258,\"ãĤ³ãĥ¼ãĥĴ\":142259,\"ãĤ³ãĥ¼ãĥĴãĥ¼\":142260,\"ï½¥ï½¥ï½¥\":142261,\"à¸ĭà¸Ńà¸¢\":142262,\"ĠcrÃ©dit\":142263,\"è²·ãģ£ãģŁ\":142264,\"ĠÐ¿Ð¾ÑĢÑıÐ´\":142265,\"ĠÐ¿Ð¾ÑĢÑıÐ´ÐºÐµ\":142266,\"ĠphÃ³\":142267,\"Ġwida\":142268,\"ĠwidaÄĩ\":142269,\"Ø¬Ø±Ø§Ø¦Ùħ\":142270,\"à¸ľà¸µ\":142271,\"ĠbÄĻdÄĻ\":142272,\"Ġ×ŀ×¤×ª×Ĺ\":142273,\"ãĥĳãĥ¼ãĥ\":142274,\"ãĥĳãĥ¼ãĥĨ\":142275,\"ãĥĳãĥ¼ãĥĨãĤ£\":142276,\"ãĥĳãĥ¼ãĥĨãĤ£ãĥ¼\":142277,\"ĠKaÅ¼\":142278,\"ĠKaÅ¼dy\":142279,\"ĠÐ½ÐµÐ¾Ð±ÑħÐ¾Ð´Ð¸Ð¼Ð¾ÑģÑĤÐ¸\":142280,\"à¸Łà¸Ńà¸£à¹Į\":142281,\"à¸Łà¸Ńà¸£à¹Įà¸¡\":142282,\"ĠÐ¼Ð°Ð»ÑĭÑĪ\":142283,\"ĠÐ¿Ð»Ð¾ÑĤ\":142284,\"ĠÑĥÑģÑĤÑĢÐ¾Ð¹\":142285,\"ĠÑĥÑģÑĤÑĢÐ¾Ð¹ÑģÑĤÐ²Ð°\":142286,\"à¸ĸà¸Ńà¸Ļ\":142287,\"ĠoluÅŁturul\":142288,\"ĠÅĽwiad\":142289,\"ĠÅĽwiadom\":142290,\"ÙħØ¹ÙĩØ¯\":142291,\"ĠÐ¿ÑĢÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½\":142292,\"Æł\":142293,\"×¨×Ļ×©\":142294,\"ÙħØ³ØªØ«\":142295,\"ÙħØ³ØªØ«ÙħØ±\":142296,\"×ł×Ļ×Ļ×¨\":142297,\"paÃ±\":142298,\"Ġ;-)\":142299,\"Ġë°ľê²¬\":142300,\"ĠgÃ¶rÃ¼yor\":142301,\"ÙħØ¤ÙĦÙģ\":142302,\"ĠÄĲá»ģ\":142303,\"ĠØ§ÙĦÙĨÙĪØ§Ø¨\":142304,\"×Ĺ×§×Ļ×¨×Ķ\":142305,\"Ġmá»ıi\":142306,\"è¿°ãģ¹\":142307,\"ÐĿÐ¸Ðº\":142308,\"ìŀĸìķĦ\":142309,\"ìŀĸìķĦìļĶ\":142310,\"prowadziÅĤ\":142311,\"lÃ³g\":142312,\"lÃ³gica\":142313,\"×¤×¡×ĺ\":142314,\"×¤×¡×ĺ×Ļ×ĳ×ľ\":142315,\"Ġ×ŀ×ĵ×Ķ\":142316,\"Ġ×ŀ×ĵ×Ķ×Ļ×Ŀ\":142317,\"ãģĵãģĵãģ¾ãģ§\":142318,\"×Ķ×ª×Ĺ\":142319,\"×Ķ×ª×Ĺ×ľ×Ķ\":142320,\"Ġ×¤×ķ×¡\":142321,\"Ġ×¤×ķ×¡×ĺ×Ļ×Ŀ\":142322,\"ĠÐ½ÐµÐ²\":142323,\"ĠÐ½ÐµÐ²Ð¾Ð·\":142324,\"ĠÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾\":142325,\"ĠdostÄĻpny\":142326,\"ĠØºØ§ÙĦ\":142327,\"ĠØºØ§ÙĦØ¨\":142328,\"ĠbezpieczeÅĦst\":142329,\"ĠbezpieczeÅĦstwa\":142330,\"åĪĨãģĭãĤĭ\":142331,\"ĠFÃ¼hrung\":142332,\"à¸ģà¸µà¹ī\":142333,\"gemÃ¤ÃŁ\":142334,\"à¸Ĭà¹Īà¸§à¸ĩà¹Ģà¸§à¸¥à¸²\":142335,\"Ġìļ°ë¦¬ëĤĺ\":142336,\"Ġìļ°ë¦¬ëĤĺëĿ¼\":142337,\"ãģ¥ãģıãĤĬ\":142338,\"ĠØ§ÙĦÙħØ³ÙĦ\":142339,\"ĠØ§ÙĦÙħØ³ÙĦØŃØ©\":142340,\"ĠlibertÃ©\":142341,\"ÐºÐ»ÑİÑĩÐµÐ½Ð¸Ðµ\":142342,\"ĠzamÃ³w\":142343,\"ĠzamÃ³wienia\":142344,\"à¸£à¸ĸà¹Ħà¸Ł\":142345,\"Ø£ÙģÙĦ\":142346,\"Ø£ÙģÙĦØ§Ùħ\":142347,\"ÙħØ±Ø§Ø¬\":142348,\"ÙħØ±Ø§Ø¬Ø¹Ø©\":142349,\"Ġë¹ĦêµĲ\":142350,\"ĠØ§ÙĦØªØ§Ø¨\":142351,\"ĠØ§ÙĦØªØ§Ø¨Ø¹Ø©\":142352,\"Ġë§ĮëĤĺ\":142353,\"ĠÐ±ÑĥÐ¼\":142354,\"ĠÐ±ÑĥÐ¼Ð°Ð³\":142355,\"ĠgÃ©nero\":142356,\"Ġìŀĺëª»\":142357,\"×ŀ×¤×ķ×¨×ĺ\":142358,\"è²·ãģĦçī©\":142359,\"ĠÙĦØ¯ÙĬÙĥ\":142360,\"Ġ×ľ×¢×Ļ×ª\":142361,\"Ġ×ľ×¢×Ļ×ª×Ļ×Ŀ\":142362,\"ĠsÅĤab\":142363,\"ĠÐ¿ÑĢÐµÐ´ÑģÑĤÐ°Ð²Ð»Ñı\":142364,\"ãĤ¿ãĤ¤ãĥĪ\":142365,\"ãĤ¿ãĤ¤ãĥĪãĥ«\":142366,\"ÙħØµ\":142367,\"ÙħØµØ·Ùģ\":142368,\"ÙħØµØ·ÙģÙī\":142369,\"ĠdifficultÃ©\":142370,\"ãĥĨãĤ£ãĥĸ\":142371,\"ĠpewnoÅĽci\":142372,\"ĠpewnoÅĽciÄħ\":142373,\"Ġë¬´ìĬ¨\":142374,\"Ø¥Ø±Ø³\":142375,\"Ø¥Ø±Ø³Ø§ÙĦ\":142376,\"ĠÐ´Ð°Ð»ÑĮ\":142377,\"ĠÐ´Ð°Ð»ÑĮÑĪÐµ\":142378,\"Ġ×ľ×ł×¡\":142379,\"Ġ×ľ×ł×¡×ķ×ª\":142380,\"à¸«à¸¡à¸¹à¹Īà¸ļà¹īà¸²à¸Ļ\":142381,\"×ŀ×¡×ŀ×Ľ×Ļ\":142382,\"Ø£Ø³ÙĦÙĪØ¨\":142383,\"ĠzwÅĤ\":142384,\"ĠzwÅĤas\":142385,\"ĠzwÅĤaszc\":142386,\"ĠzwÅĤaszcza\":142387,\"ĠÐ¿ÑĢÐµÐ¶\":142388,\"ĠÐ¿ÑĢÐµÐ¶Ð´Ðµ\":142389,\"ĠÐ¾ÑĢÐ³Ð°Ð½Ð¸Ð·Ð°ÑĨÐ¸Ñı\":142390,\"ĠdÃ¶nemin\":142391,\"ĠdÃ¶neminde\":142392,\"Ġá»¦\":142393,\"Ġá»¦y\":142394,\"ä¸ĭãģĴ\":142395,\"ĠÐ¿Ð¾ÑģÐ»ÐµÐ´Ð½Ð¸Ðµ\":142396,\"ĠgÃ¼ne\":142397,\"ĠgÃ¼neÅŁ\":142398,\"Ġ×Ĳ×ĸ×¨\":142399,\"Ġ×Ĳ×ĸ×¨×Ĺ×Ļ\":142400,\"ãģ§ãģĤãĤįãģĨ\":142401,\"ĠÙĨÙĤ\":142402,\"ĠÙĨÙĤØ§Ø·\":142403,\"æŃ£ãģĹãģĦ\":142404,\"ĠÑĢÐµÐ³\":142405,\"ĠÑĢÐµÐ³Ð¸Ð¾Ð½Ð°\":142406,\"ĠFÃ¶rder\":142407,\"ê²½ìĺģ\":142408,\"dÄ±klar\":142409,\"dÄ±klarÄ±nÄ±\":142410,\"trzymaÄĩ\":142411,\"Ø£Ø´Ùĥ\":142412,\"Ø£Ø´ÙĥØ§ÙĦ\":142413,\"×Ķ×ª×Ĳ\":142414,\"×Ķ×ª×Ĳ×ŀ×Ķ\":142415,\"à¸Ĺà¸³à¹ĥà¸«à¹īà¹Ģà¸ģà¸´à¸Ķ\":142416,\"ĠGebÃ¤\":142417,\"ĠGebÃ¤ude\":142418,\"ĠÐ¡ÐµÑĢÐ³\":142419,\"ĠÐ¡ÐµÑĢÐ³ÐµÐ¹\":142420,\"ĠÐ·Ð´Ð¾ÑĢÐ¾Ð²\":142421,\"ĠÐ·Ð´Ð¾ÑĢÐ¾Ð²ÑĮÑı\":142422,\"ĠrÃ£i\":142423,\"ĠÐ¿ÑĢÐµÐ´ÑĥÑģ\":142424,\"ĠÐ¿ÑĢÐµÐ´ÑĥÑģÐ¼Ð¾ÑĤÑĢ\":142425,\"ĠÐ¿ÑĢÐµÐ´ÑĥÑģÐ¼Ð¾ÑĤÑĢÐµÐ½\":142426,\"Ġ×Ķ×¦×Ļ×ĳ\":142427,\"Ġ×Ķ×¦×Ļ×ĳ×ķ×¨×Ļ\":142428,\"ĠdÃ©sir\":142429,\"ĠÐ½Ð¾Ñĩ\":142430,\"ĠÐ½Ð¾ÑĩÑĮ\":142431,\"mÃ¶glichkeiten\":142432,\"Ġ×Ĳ×Ĺ×¨×ķ×ł×Ļ×Ŀ\":142433,\"ĠsoirÃ©e\":142434,\"ĠNháºŃn\":142435,\"Ùª\":142436,\"à¸Ľà¸£à¸°à¸§à¸±à¸ķà¸´à¸¨à¸²à¸ªà¸ķà¸£à¹Į\":142437,\"êµĲíĨµ\":142438,\"ĠØ£Ø®ÙĬ\":142439,\"ĠdÃ©cid\":142440,\"ĠdÃ©cidÃ©\":142441,\"Ġwyja\":142442,\"ĠwyjaÅĽni\":142443,\"Ġà¸ªà¸´\":142444,\"Ġà¸ªà¸´à¸ĩ\":142445,\"Ġà¸ªà¸´à¸ĩà¸«à¸²\":142446,\"Ġà¸ªà¸´à¸ĩà¸«à¸²à¸Ħà¸¡\":142447,\"à¹ģà¸Ńà¸£à¹Į\":142448,\"à¸«à¸Ļà¹īà¸²à¸Īà¸Ń\":142449,\"×¡×ª×¨\":142450,\"Ġê¶\":142451,\"Ġê¶Į\":142452,\"Ġê¶Įë¦¬\":142453,\"plÃ¤tze\":142454,\"Ø¨Ø·ÙĦ\":142455,\"ê±´ìĦ¤\":142456,\"Ġ×Ĳ×Ļ×ŀ×Ļ\":142457,\"Ġ×Ĳ×Ļ×ŀ×Ļ×Ļ×ľ\":142458,\"ãģ½\":142459,\"ØªØ±Ø§Ø«\":142460,\"×Ĳ×ľ×Ļ×ŀ×ķ×ª\":142461,\"ĠdisponÃŃveis\":142462,\"Ġzale\":142463,\"ĠzaleÅ¼y\":142464,\"à¸Ľà¸£à¸°à¸Ĭà¸²à¸ªà¸±à¸¡à¸ŀà¸±à¸Ļà¸ĺà¹Į\":142465,\"ĠÅļwiat\":142466,\"ĠporÃ³wn\":142467,\"ĠporÃ³wna\":142468,\"Ġ×ľ×ĺ×ķ×ĳ×ª\":142469,\"×Ķ×ĸ×ŀ×ł×Ķ\":142470,\"Ġ×Ľ×ª×ķ×¦×Ĳ×Ķ\":142471,\"Ġ×ĳ×§×ľ\":142472,\"Ġ×ĳ×§×ľ×ķ×ª\":142473,\"ĠÐ¾ÑĤÐºÑĢ\":142474,\"ĠÐ¾ÑĤÐºÑĢÑĭÐ²Ð°\":142475,\"ãĥĳãĥ¯ãĥ¼\":142476,\"ë¿Ĳë§Į\":142477,\"ĠÐ²ÑģÑı\":142478,\"ĠÐ²ÑģÑıÐº\":142479,\"ãģ¨ãģªãģ£ãģ¦ãģĦãĤĭ\":142480,\"ĠgiáºŃn\":142481,\"ĠÐ¾ÐºÑĢÑĥ\":142482,\"ĠÐ¾ÐºÑĢÑĥÐ¶Ð°\":142483,\"ĠÐ¾ÐºÑĢÑĥÐ¶Ð°ÑİÑī\":142484,\"ĠUniversitÃ¤t\":142485,\"ĠÑĢÐ¾Ð¶\":142486,\"ĠÑĢÐ¾Ð¶Ð´\":142487,\"ĠÑĢÐ¾Ð¶Ð´ÐµÐ½Ð¸Ñı\":142488,\"Ø®ÙĬÙĦ\":142489,\"ĠÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸Ð¹\":142490,\"ĠÑĢÐ°Ð·Ð»Ð¸ÑĩÐ½ÑĭÐµ\":142491,\"ĠÐ¦ÐµÐ½Ð°\":142492,\"×ł×Ļ×ķ×ĸ\":142493,\"×ł×Ļ×ķ×ĸ×ľ\":142494,\"×ł×Ļ×ķ×ĸ×ľ×ĺ×¨\":142495,\"Ġê³µê°Ħ\":142496,\"Ġê°ľëħĲ\":142497,\"landÄ±rma\":142498,\"ĠÑĥÐ´Ð°Ð»ÐµÐ½\":142499,\"à¸ŀà¸±à¸ģà¸ľ\":142500,\"à¸ŀà¸±à¸ģà¸ľà¹Īà¸Ńà¸Ļ\":142501,\"ĠprotecciÃ³n\":142502,\"ĠbÅĤ\":142503,\"ĠbÅĤÄĻd\":142504,\"ÃĪ\":142505,\"Ġíĸīë³µ\":142506,\"ĠÅŁÃ¼\":142507,\"ĠÅŁÃ¼phe\":142508,\"ĠíĶ\":142509,\"ĠíĶ¼\":142510,\"ĠíĶ¼íķ´\":142511,\"Ġëĭ¤ë¥´\":142512,\"à¹Ħà¸¡à¹Īà¹Ģà¸ģà¸´à¸Ļ\":142513,\"ãģ¿ãģª\":142514,\"ãģ¿ãģªãģķãĤĵ\":142515,\"ĠÐ¿Ð¾ÑĤÑĢÐµÐ±\":142516,\"ĠÐ¿Ð¾ÑĤÑĢÐµÐ±Ð¸ÑĤÐµÐ»\":142517,\"ĠØ§ÙĦÙĥÙĦØ§Ùħ\":142518,\"ìķĦë²Ħ\":142519,\"ìķĦë²Ħì§Ģ\":142520,\"ãĤĴä½¿ãģ£ãģŁ\":142521,\"Ġbá»¥i\":142522,\"ĠÐ¿Ð¾ÑĤÐµÑĢ\":142523,\"ĠÐ¿Ð¾ÑĤÐµÑĢÑı\":142524,\"ĠØ¢ÙĦØ§Ùģ\":142525,\"ĠÐ½Ð°ÑģÑĤÐ¾ÑıÑīÐµÐµ\":142526,\"ãģıãģªãĤĬãģ¾ãģĹãģŁ\":142527,\"clusÃ£o\":142528,\"ãĤ³ãĥĶãĥ¼\":142529,\"×¦×¤×Ļ\":142530,\"×¦×¤×Ļ×Ļ×Ķ\":142531,\"Ø®ÙĦØ§\":142532,\"Ø®ÙĦØ§Øµ\":142533,\"à¸¥à¹īà¸³\":142534,\"ãĥ¯ãĤ¤ãĥ³\":142535,\"Ġà¸¡à¸µà¸Ļà¸²\":142536,\"Ġà¸¡à¸µà¸Ļà¸²à¸Ħà¸¡\":142537,\"Ø´Ø®Øµ\":142538,\"Ø´Ø®ØµÙĬØ§Øª\":142539,\"Ġ×ĸ×§\":142540,\"Ġ×ĸ×§×ķ×§\":142541,\"×Ļ×Ļ×¦\":142542,\"×Ļ×Ļ×¦×Ĵ\":142543,\"èĢĥãģĪæĸ¹\":142544,\"ĠÃ¼rÃ¼nÃ¼\":142545,\"ĠÐ¸ÑģÐ¿Ð¾Ð»\":142546,\"ĠÐ¸ÑģÐ¿Ð¾Ð»Ð½Ð¸\":142547,\"ĠcompaÃ±ero\":142548,\"×§×¦×Ķ\":142549,\"×ŀ×¢×ł×Ļ×§\":142550,\"ÙħØŃÙħØ¯\":142551,\"ĠcÃ¡mara\":142552,\"ĠÐ¿ÐµÐ´\":142553,\"ĠÐ¿ÐµÐ´Ð°Ð³\":142554,\"ĠÐ¿ÐµÐ´Ð°Ð³Ð¾Ð³\":142555,\"Ð¼Ð°ÑĢ\":142556,\"Ð¼Ð°ÑĢÐº\":142557,\"×Ķ×ª×ł×Ĵ×ĵ\":142558,\"ĠìĨĮê°ľ\":142559,\"ĠcomunitÃł\":142560,\"ê³¤\":142561,\"ĠNgÃłi\":142562,\"à¸ªà¸ĩà¸ļ\":142563,\"ĠmieszkaÅĦcÃ³w\":142564,\"ĠÙĨÙĩØ§Ø¦ÙĬ\":142565,\"ivitÃ©\":142566,\"ĠÐ¸Ð´Ðµ\":142567,\"ĠÐ¸Ð´ÐµÐ°Ð»ÑĮÐ½\":142568,\"ĠØ£Ø³Ø¨ÙĪØ¹\":142569,\"Ġ×Ļ×¢×ľ\":142570,\"Ġ×ľ×¨×Ĳ×©\":142571,\"Ġ×ľ×¨×Ĳ×©×ķ×ł×Ķ\":142572,\"ĠÐ·Ð°Ð¿Ð¸ÑģÐ¸\":142573,\"ĠÐºÐ¾ÑĢÐ¿ÑĥÑģ\":142574,\"à¸§à¸ĩà¸¨\":142575,\"à¸§à¸ĩà¸¨à¹Į\":142576,\"ĠÐĶÐ¼\":142577,\"ĠÐĶÐ¼Ð¸ÑĤ\":142578,\"ĠÐĶÐ¼Ð¸ÑĤÑĢ\":142579,\"ĠkÃ¶nnt\":142580,\"ĠbÃ¶lges\":142581,\"ĠbÃ¶lgesinde\":142582,\"×Ľ×Ļ×Ľ\":142583,\"×Ľ×Ļ×Ľ×¨\":142584,\"ĠØ§ÙĦØ¥Ø«ÙĨ\":142585,\"ĠØ§ÙĦØ¥Ø«ÙĨÙĬÙĨ\":142586,\"Ġngá»Ļ\":142587,\"ì¹ł\":142588,\"Ø¯Ø±Ø§Ø¬\":142589,\"Ġuda\":142590,\"ĠudaÅĤo\":142591,\"ìºĲ\":142592,\"Ø¨Ø±ÙĨØ§ÙħØ¬\":142593,\"ĠÑģÑĥÐ´ÐµÐ±\":142594,\"ĠÑģÑĥÐ´ÐµÐ±Ð½\":142595,\"ĠzunÃ¤chst\":142596,\"ĠEducaciÃ³n\":142597,\"ãģ¨ãģªãģ£ãģ¦ãģĦãģ¾ãģĻ\":142598,\"Ġ×Ķ×Ĳ×ŀ×Ļ×ª×Ļ\":142599,\"ĠÄ°nt\":142600,\"ĠÄ°nternet\":142601,\"ĠcaÅĤego\":142602,\"ãĥĹãĥªãĥ³\":142603,\"Ø¥Ø¨Ø¯\":142604,\"Ø¥Ø¨Ø¯Ø§Ø¹\":142605,\"ĠÐ¿Ð¾ÑĢÑĤÐ°Ð»\":142606,\"à¹Ĥà¸ķà¹ī\":142607,\"Ġ×Ķ×§×©×ķ×¨\":142608,\"Ð¿Ð»Ð¾Ð´\":142609,\"ĠÙħØ¯\":142610,\"ĠÙħØ¯Ø±ÙĬØ¯\":142611,\"×ŀ×¡×¢×ĵ×Ķ\":142612,\"ĠØ´ÙĬØ¦\":142613,\"ĠØ´ÙĬØ¦Ø§\":142614,\"à¸ģà¹Īà¸Ńà¸ªà¸£à¹īà¸²à¸ĩ\":142615,\"Ġì°¸ê³ł\":142616,\"à¹Ģà¸Ĺà¸£\":142617,\"à¹Ģà¸Ĺà¸£à¸Ķ\":142618,\"Ġ×ĳ×ŀ×§×¨×Ļ×Ŀ\":142619,\"ĠbÃ¢t\":142620,\"ĠbÃ¢timent\":142621,\"åĳ¼ãģ³\":142622,\"ç´łæķµ\":142623,\"ç´łæķµãģª\":142624,\"przedsiÄĻbiorst\":142625,\"przedsiÄĻbiorstw\":142626,\"Ġ×ł×ª×ķ×ł×Ļ×Ŀ\":142627,\"×Ĺ×ľ×ķ×Ŀ\":142628,\"à¸£à¸§à¸¢\":142629,\"ÙħÙĪØ¶ÙĪØ¹\":142630,\"ĠÑģÐ¾Ð±ÑĢÐ°Ð½\":142631,\"Ð²ÐµÐ´ÑĥÑī\":142632,\"ĠÑĤÐµÐ°ÑĤ\":142633,\"ĠÑĤÐµÐ°ÑĤÑĢ\":142634,\"meye\":142635,\"meyeceÄŁi\":142636,\"ĠpieniÄħ\":142637,\"ĠpieniÄħd\":142638,\"ĠpieniÄħdze\":142639,\"ÑĢÐµÐ·Ð¸Ð´ÐµÐ½ÑĤ\":142640,\"ØŃØµØ±\":142641,\"ìĺ¥\":142642,\"à¹Ģà¸¢à¸·à¸Ńà¸Ļ\":142643,\"ĠÑĥÐ½Ð¸\":142644,\"ĠÑĥÐ½Ð¸Ð²ÐµÑĢ\":142645,\"ĠÑĥÐ½Ð¸Ð²ÐµÑĢÑģ\":142646,\"ĠÑĥÐ½Ð¸Ð²ÐµÑĢÑģÐ¸ÑĤÐµÑĤ\":142647,\"ĠØ§ÙĦØ±ØŃ\":142648,\"ĠØ§ÙĦØ±ØŃÙħÙĨ\":142649,\"ĠÑĤÐµÑħÐ½Ð¾Ð»Ð¾Ð³\":142650,\"ĠÑĤÐµÑħÐ½Ð¾Ð»Ð¾Ð³Ð¸Ð¸\":142651,\"ìĹĲëĦĪ\":142652,\"ìĹĲëĦĪì§Ģ\":142653,\"ĠíķŃ\":142654,\"ĠíķŃìĥģ\":142655,\"à¸ĺà¸²\":142656,\"à¸ĺà¸²à¸ķà¸¸\":142657,\"ĠEspaÃ±ol\":142658,\"×ĵ×Ĵ×©\":142659,\"Ġêµī\":142660,\"Ġêµīìŀ¥\":142661,\"Ġêµīìŀ¥íŀĪ\":142662,\"ĠÅĤat\":142663,\"ĠÅĤatwo\":142664,\"Ġká»ĭch\":142665,\"Ø¥Ø²\":142666,\"Ø¥Ø²Ø§ÙĦØ©\":142667,\"ĠÐ´ÐµÐ¹ÑģÑĤÐ²Ð¸Ðµ\":142668,\"ĠsaÄŁlayan\":142669,\"à¸ªà¸¸à¸Ķà¸¢à¸Ńà¸Ķ\":142670,\"ĠzostaÄĩ\":142671,\"ĠdisponÃŃvel\":142672,\"ïºį\":142673,\"verstÃ¤nd\":142674,\"verstÃ¤ndlich\":142675,\"twor\":142676,\"tworzyÄĩ\":142677,\"Ø¹Ø¬Ø²\":142678,\"à¹Ģà¸Ĥà¹īà¸¡\":142679,\"à¸¢à¹Īà¸Ńà¸¡\":142680,\"ĠstratÃ©g\":142681,\"ĠstratÃ©gie\":142682,\"à¸ľà¸¥à¹Ħà¸¡à¹ī\":142683,\"Ġê°ģì¢ħ\":142684,\"ĠÙħÙĪØ§\":142685,\"ĠÙħÙĪØ§Ø¶\":142686,\"ĠÙħÙĪØ§Ø¶ÙĬØ¹\":142687,\"Ø§ØŃØªØ¬\":142688,\"Ø§ØŃØªØ¬Ø§Ø¬\":142689,\"Ġáº¤\":142690,\"Ġáº¤n\":142691,\"×ŀ×ŀ×©×ľ×Ķ\":142692,\"ĠÅŁekil\":142693,\"×ŀ×Ĺ×ľ\":142694,\"×ŀ×Ĺ×ľ×ķ×ª\":142695,\"Ġà¸ĺ\":142696,\"Ġà¸ĺà¸±à¸Ļ\":142697,\"Ġà¸ĺà¸±à¸Ļà¸§à¸²\":142698,\"Ġà¸ĺà¸±à¸Ļà¸§à¸²à¸Ħà¸¡\":142699,\"Ġìĭ¤ìłľ\":142700,\"Ġìĭ¤ìłľë¡ľ\":142701,\"ì¤ĳìķĻ\":142702,\"ëįĶëĿ¼\":142703,\"ĠÑĪÐ¸ÑĢ\":142704,\"ĠÑĪÐ¸ÑĢÐ¾ÐºÐ¾\":142705,\"ĠsoluciÃ³n\":142706,\"à¸§à¸²à¸ĩà¹ģà¸ľà¸Ļ\":142707,\"×Ĳ×ķ×ĺ×ķ×ŀ\":142708,\"×Ĳ×ķ×ĺ×ķ×ŀ×ĺ×Ļ\":142709,\"ĠÑĢÐµÑģÑĤ\":142710,\"ĠÑĢÐµÑģÑĤÐ¾ÑĢ\":142711,\"ĠÑĢÐµÑģÑĤÐ¾ÑĢÐ°Ð½\":142712,\"ëį¸\":142713,\"ÑĤÑĢÐ°Ð´\":142714,\"ÑĤÑĢÐ°Ð´Ð¸\":142715,\"ÑĤÑĢÐ°Ð´Ð¸ÑĨÐ¸Ð¾Ð½\":142716,\"ÑĤÑĢÐ°Ð´Ð¸ÑĨÐ¸Ð¾Ð½Ð½\":142717,\"à¸¡à¸°à¹Ģà¸£à¹ĩ\":142718,\"à¸¡à¸°à¹Ģà¸£à¹ĩà¸ĩ\":142719,\"à¹Ĥà¸ª\":142720,\"ĠolmasÄ±nÄ±\":142721,\"×ŀ×ķ×¡×¨\":142722,\"ĠÐ¾ÑĤÐ½Ð¾ÑĪÐµÐ½Ð¸Ð¸\":142723,\"Ġê°ĢëĬ¥ìĦ±\":142724,\"Ġyuk\":142725,\"ĠyukarÄ±\":142726,\"ìĨĶ\":142727,\"ĠÑģÑĦ\":142728,\"ĠÑģÑĦÐµÑĢÐµ\":142729,\"Ġ×§×ķ×¤\":142730,\"ãĤ±ãĥ¼ãĤ\":142731,\"ãĤ±ãĥ¼ãĤŃ\":142732,\"âĢķâĢķ\":142733,\"ĠØ§ÙĦØ£ÙĦÙħ\":142734,\"ĠØ§ÙĦØ£ÙĦÙħØ§ÙĨÙĬ\":142735,\"áº¢N\":142736,\"×ª×ķ×Ľ×ł×Ļ×ķ×ª\":142737,\"ĠÑģÑĥÑīÐµÑģÑĤÐ²ÑĥÐµÑĤ\":142738,\"æĪĳãĢħ\":142739,\"ĠØ§ÙĦØµØ§Ø¯Ø±\":142740,\"ĠTrá»įng\":142741,\"ĠÐ°Ð´\":142742,\"ĠÐ°Ð´Ð¼Ð¸Ð½Ð¸ÑģÑĤ\":142743,\"ĠÐ°Ð´Ð¼Ð¸Ð½Ð¸ÑģÑĤÑĢÐ°\":142744,\"ĠÐ°Ð´Ð¼Ð¸Ð½Ð¸ÑģÑĤÑĢÐ°ÑĨÐ¸\":142745,\"ĠÐ´ÑĢÑĥÐ³Ð¸Ð¼Ð¸\":142746,\"ÑģÐ¿ÐµÑĪ\":142747,\"Ø¹ÙĦØ§ÙħØ§Øª\":142748,\"ĠÐ°Ð±\":142749,\"ĠÐ°Ð±ÑģÐ¾Ð»\":142750,\"ĠÐ°Ð±ÑģÐ¾Ð»ÑİÑĤ\":142751,\"ĠÐ°Ð±ÑģÐ¾Ð»ÑİÑĤÐ½Ð¾\":142752,\"à¸¤à¸Ķà¸¹\":142753,\"Ã©tr\":142754,\"Ã©tranger\":142755,\"Ð½ÑıÑĤÐ¸\":142756,\"Ð½ÑıÑĤÐ¸Ðµ\":142757,\"×¢×ķ×ł\":142758,\"×¢×ķ×ł×©\":142759,\"ĠÙĤØ§Ø¦\":142760,\"ĠÙĤØ§Ø¦ÙĦØ§\":142761,\"ĠÐ¼Ð°Ñģ\":142762,\"ĠÐ¼Ð°ÑģÐ»Ð¾\":142763,\"ãĥīãĤ¤\":142764,\"ãĥīãĤ¤ãĥĦ\":142765,\"å¿ħè¦ģãģĮãģĤãĤĬãģ¾ãģĻ\":142766,\"×ŀ×ķ×ĸ×Ļ×Ĳ\":142767,\"×ŀ×ķ×ĸ×Ļ×Ĳ×ķ×Ł\":142768,\"ĠNgoáº¡i\":142769,\"ĠkÃªnh\":142770,\"à¸ģà¸²à¸£à¸Ńà¸Ńà¸ģà¹ģà¸ļà¸ļ\":142771,\"×ŀ×¤×§\":142772,\"×ŀ×¤×§×ĵ\":142773,\"ÙħÙĨØ§Ø²\":142774,\"ÙħÙĨØ§Ø²ÙĦ\":142775,\"ë·°\":142776,\"íĹ¤\":142777,\"ÙħÙĩØ§Ø±Ø§Øª\":142778,\"ĠpropriÃ©tÃ©\":142779,\"×¤×Ĵ×Ļ×©×Ķ\":142780,\"ÑĩÑĢ\":142781,\"ÑĩÑĢÐµÐ¶\":142782,\"ÑĩÑĢÐµÐ¶Ð´ÐµÐ½\":142783,\"×Ķ×ķ×¦×Ĳ×Ķ\":142784,\"ØŃÙĥÙĬÙħ\":142785,\"ĠíĻĪ\":142786,\"ĠíĻĪíİĺìĿ´ì§Ģ\":142787,\"åİ³\":142788,\"åİ³ãģĹãģĦ\":142789,\"×¢×ŀ×ĵ×Ķ\":142790,\"ĠAuÃŁen\":142791,\"Ø³ÙĪØ¡\":142792,\"ë¹Ī\":142793,\"ĠÙĪØ®\":142794,\"ĠÙĪØ®Ø§ØµØ©\":142795,\"Ð¸Ð½ÑĤÐµÑĢ\":142796,\"Ð¸Ð½ÑĤÐµÑĢÐµÑģ\":142797,\"èĩ´ãģĹãģ¾ãģĻ\":142798,\"ĠhÃ¼kÃ¼m\":142799,\"à¹Ħà¸Ĥà¸¡à¸±à¸Ļ\":142800,\"Ġdavran\":142801,\"ĠdavranÄ±ÅŁ\":142802,\"à¹Ģà¸ķà¸µà¸¢à¸ĩ\":142803,\"Ð²ÑĢÐµÐ¼\":142804,\"Ð²ÑĢÐµÐ¼ÐµÐ½Ð½Ð¾\":142805,\"à¹Ģà¸Ĺà¸¨à¸ģà¸²\":142806,\"à¹Ģà¸Ĺà¸¨à¸ģà¸²à¸¥\":142807,\"å¼ķãģ£\":142808,\"å¼ķãģ£è¶ĬãģĹ\":142809,\"×Ĳ×¨×ķ×Ĺ\":142810,\"×Ĳ×¨×ķ×Ĺ×ª\":142811,\"à¹Ģà¸§à¸´\":142812,\"à¹Ģà¸§à¸´à¸£à¹Į\":142813,\"à¸Ńà¸¢à¹Īà¸²à¸ĩà¸£à¸§à¸Ķà¹Ģà¸£à¹ĩà¸§\":142814,\"ĠìĹ¬íĸī\":142815,\"ĠÑĢÐ°Ð½ÑĮ\":142816,\"ĠÑĢÐ°Ð½ÑĮÑĪÐµ\":142817,\"Ġzobow\":142818,\"ĠzobowiÄħ\":142819,\"ĠzobowiÄħz\":142820,\"Ġ×ķ×Ľ×ŀ×ķ×ĳ×Ł\":142821,\"ĠØ§ÙĦÙħÙĩ\":142822,\"ĠØ§ÙĦÙħÙĩÙĨÙĬ\":142823,\"ãĤ¢ãĤ¸\":142824,\"ãĤ¢ãĤ¸ãĤ¢\":142825,\"ë°©ìĨ¡\":142826,\"à¸Ńà¸Ńà¸ģà¸ģà¸³à¸¥à¸±à¸ĩ\":142827,\"à¸Ńà¸Ńà¸ģà¸ģà¸³à¸¥à¸±à¸ĩà¸ģà¸²à¸¢\":142828,\"amÃ©li\":142829,\"amÃ©liorer\":142830,\"å½ĵãģŁãĤĬåīį\":142831,\"Ġregelm\":142832,\"ĠregelmÃ¤ÃŁig\":142833,\"ãģĬåĭ\":142834,\"ãģĬåĭ§\":142835,\"ãģĬåĭ§ãĤģ\":142836,\"ĠmÆ°á»Ŀi\":142837,\"Ø¨Ø±ÙħØ¬\":142838,\"ĠNatÃ¼rlich\":142839,\"ĠDÅ©ng\":142840,\"ĠØ§ÙĦØ±Ø¬Ø§ÙĦ\":142841,\"ĠthÃ©p\":142842,\"ĠolmuÅŁtur\":142843,\"×ŀ×ķ×¡×Ļ×§×Ķ\":142844,\"fÃ¤lle\":142845,\"ì£¼íĥĿ\":142846,\"ĠØ§ÙĦÙģØ±Øµ\":142847,\"ĠnajwiÄĻks\":142848,\"ĠnajwiÄĻkszy\":142849,\"ĠÃ§aÄŁ\":142850,\"ĠÃ§aÄŁrÄ±\":142851,\"ì¸ł\":142852,\"ĠvÃŃct\":142853,\"ĠvÃŃctima\":142854,\"ĠÑģÐ¾Ð²ÐµÑĢÑĪÐµÐ½\":142855,\"×Ķ×Ļ×Ļ×ª×Ļ\":142856,\"à¹Ģà¸Ķà¸µ\":142857,\"à¹Ģà¸Ķà¸µà¹ĭ\":142858,\"à¹Ģà¸Ķà¸µà¹ĭà¸¢à¸§\":142859,\"Ã¼yÃ¼\":142860,\"ĠÐ´Ð¾Ð¿\":142861,\"ĠÐ´Ð¾Ð¿Ð¾Ð»Ð½\":142862,\"ĠÐ´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑĤÐµÐ»ÑĮÐ½Ð¾\":142863,\"à¹ģà¸ķà¸ģà¸ķà¹Īà¸²à¸ĩà¸ģà¸±à¸Ļ\":142864,\"ĠÃ¡l\":142865,\"ĠÃ¡lbum\":142866,\"à¸Ľà¸£à¸°à¸Īà¸³à¸Ľà¸µ\":142867,\"ĠÑĦÐµÐ´ÐµÑĢ\":142868,\"ĠÑĦÐµÐ´ÐµÑĢÐ°Ð»ÑĮÐ½\":142869,\"ĠobsÅĤ\":142870,\"ĠobsÅĤugi\":142871,\"à¹Ģà¸£à¸·à¹Ī\":142872,\"à¹Ģà¸£à¸·à¹Īà¸Ńà¸¢\":142873,\"à¹Ģà¸£à¸·à¹Īà¸Ńà¸¢à¹Ĩ\":142874,\"ëģĮ\":142875,\"ĠnghÃ¬n\":142876,\"ĠBaÅŁkanlÄ±ÄŁÄ±\":142877,\"ØªØ£Ø³ÙĬ\":142878,\"ØªØ£Ø³ÙĬØ³\":142879,\"Ġ×ĳ×ĳ×ķ×§×¨\":142880,\"Ġ×¢×ĳ×ķ×ĵ×ķ×ª\":142881,\"ĠØ¨ØµÙĪØ±Ø©\":142882,\"ãĤıãģĳãģ§ãģ¯ãģªãģĦ\":142883,\"fÃ¼hrer\":142884,\"ãĤ¹ãĤŃ\":142885,\"ãĤ¹ãĤŃãĥ«\":142886,\"ĠØ§ÙĦÙĤØ¶\":142887,\"ĠØ§ÙĦÙĤØ¶ÙĬØ©\":142888,\"ĠÐ´Ð¾Ð»Ð¶Ð½Ð¾ÑģÑĤ\":142889,\"ÙģØ§Ø±ÙĤ\":142890,\"ĠcomeÃ§ou\":142891,\"ĠorganisÃ©\":142892,\"ĠxuÃ¢n\":142893,\"ĠÑģÐ¾Ð¾Ð±ÑīÐ°ÐµÑĤ\":142894,\"ĠÐ¿ÑĢÐ¸Ð´\":142895,\"ĠÐ¿ÑĢÐ¸Ð´ÐµÑĤÑģÑı\":142896,\"TÃľRK\":142897,\"ãĥ¬ãĥ¼ãĤ·ãĥ§ãĥ³\":142898,\"KhÃ´ng\":142899,\"Ø§Ø³ØªÙģ\":142900,\"Ø§Ø³ØªÙģØ§Ø¯Ø©\":142901,\"ä¸ĬãģĮãģ£ãģ¦\":142902,\"Ġumie\":142903,\"ĠumiejÄĻ\":142904,\"ĠumiejÄĻtn\":142905,\"ĠumiejÄĻtnoÅĽci\":142906,\"ëĤ¸\":142907,\"à¹Ģà¸Ļà¸Ńà¸£à¹Į\":142908,\"×ĵ×ķ×ķ×Ĺ\":142909,\"ÃŃsimo\":142910,\"IÃĬ\":142911,\"IÃĬN\":142912,\"ĠalcanÃ§\":142913,\"Ġà¸ķà¸¸\":142914,\"Ġà¸ķà¸¸à¸¥à¸²\":142915,\"Ġà¸ķà¸¸à¸¥à¸²à¸Ħà¸¡\":142916,\"×©×ľ×ĺ×ķ×Ł\":142917,\"ĠÃ©lÃ¨\":142918,\"ĠÃ©lÃ¨ves\":142919,\"ĠÄĳu\":142920,\"ĠÄĳuá»ķi\":142921,\"ĠØ£Ùģ\":142922,\"ĠØ£ÙģØ±ÙĬ\":142923,\"ĠØ£ÙģØ±ÙĬÙĤÙĬ\":142924,\"ĠØ£ÙģØ±ÙĬÙĤÙĬØ§\":142925,\"ãĤĴæİ¢ãģĻ\":142926,\"ĠÐ¿ÑĢÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñı\":142927,\"Ø¬Ø§Ø¯\":142928,\"ĠÑħÐ¾ÑĤÑĮ\":142929,\"ÑģÐ°Ð»\":142930,\"ÑģÐ°Ð»Ð¾Ð½\":142931,\"à¸Ľà¸£à¸°à¹Ģà¸¡\":142932,\"à¸Ľà¸£à¸°à¹Ģà¸¡à¸´à¸Ļ\":142933,\"ãĤŃãĥĥãĥģ\":142934,\"ãĤŃãĥĥãĥģãĥ³\":142935,\"×ĳ×ĵ×Ļ×§×ķ×ª\":142936,\"ĠchÃ¹\":142937,\"ĠchÃ¹a\":142938,\"ÐĴÐ¸Ð´Ðµ\":142939,\"ÐĴÐ¸Ð´ÐµÐ¾\":142940,\"Ð¸ÑĢÐ¾Ð²ÐºÐ°\":142941,\"ĠÑħÐ¾ÑĤÐ¸ÑĤÐµ\":142942,\"ĠspÃ©cifique\":142943,\"à¸£à¸ªà¸Ĭà¸²à¸ķà¸´\":142944,\"è¾¼ãĤĵãģł\":142945,\"ä¼¸ãģ³\":142946,\"×Ķ×¦×ľ×Ĺ×ª\":142947,\"ãģ©ãģ®ãĤĪãģĨãģ«\":142948,\"Ø³Ø¹Ø§Ø¯Ø©\":142949,\"ĠÐ»Ð¸Ð´\":142950,\"ĠÐ»Ð¸Ð´ÐµÑĢ\":142951,\"à¸¡à¸ĩ\":142952,\"à¸¡à¸ĩà¸Ħà¸¥\":142953,\"ØŃØ§ÙħÙĦ\":142954,\"à¸«à¸¥à¸¸à¸Ķ\":142955,\"à¸Ńà¸¢à¹Īà¸²à¸ĩà¸ķà¹Īà¸Ń\":142956,\"à¸Ńà¸¢à¹Īà¸²à¸ĩà¸ķà¹Īà¸Ńà¹Ģà¸Ļà¸·à¹Īà¸Ńà¸ĩ\":142957,\"ãģķãģĽãģ¦éłĤ\":142958,\"ØªØ³ÙĪÙĬ\":142959,\"ØªØ³ÙĪÙĬÙĤ\":142960,\"ĠaÅŁaÄŁÄ±d\":142961,\"ĠaÅŁaÄŁÄ±daki\":142962,\"ĠÑĨÐµÐ»ÑĮ\":142963,\"ĠÑĨÐµÐ»ÑĮÑİ\":142964,\"ĠAraÅŁtÄ±rma\":142965,\"à¸Ĥà¸±à¸ļà¸£à¸ĸ\":142966,\"ÙĩØ°Ùĩ\":142967,\"à¸¥à¸ĩà¸Ĺà¸°\":142968,\"à¸¥à¸ĩà¸Ĺà¸°à¹Ģà¸ļ\":142969,\"à¸¥à¸ĩà¸Ĺà¸°à¹Ģà¸ļà¸µà¸¢à¸Ļ\":142970,\"ØªÙĥØ§ÙħÙĦ\":142971,\"Ġcio\":142972,\"ĠcioÃ¨\":142973,\"ãģ¦ãģĬãģı\":142974,\"ĠØ§ÙĦØµØŃÙģÙĬ\":142975,\"ĠíĬ¹ìłķ\":142976,\"Ð¿Ð¾Ð»Ð½Ð¸ÑĤÑĮ\":142977,\"ãĤĵãģĺãĤĥãģªãģĦ\":142978,\"ãĤĵãģĺãĤĥãģªãģĦãģĭ\":142979,\"ĠØ§ÙĦØ¬Ùĩ\":142980,\"ĠØ§ÙĦØ¬ÙĩØ§Øª\":142981,\"ĠÑĥÑģÐ¿ÐµÑĪÐ½Ð¾\":142982,\"ĠÐ²Ð¾Ðº\":142983,\"ĠÐ²Ð¾ÐºÑĢÑĥÐ³\":142984,\"ĠÑģÐ¸ÑĤÑĥÐ°ÑĨÐ¸Ñı\":142985,\"Ġ×Ķ×Ĳ×ŀ×¨\":142986,\"Ġ×Ķ×Ĳ×ŀ×¨×Ļ×§\":142987,\"Ġ×Ķ×Ĳ×ŀ×¨×Ļ×§×Ĳ×Ļ\":142988,\"×ŀ×Ĵ×ĸ\":142989,\"×ŀ×Ĵ×ĸ×Ļ×Ł\":142990,\"ĠÐ°ÐºÑĤÑĥ\":142991,\"ĠÐ°ÐºÑĤÑĥÐ°Ð»ÑĮÐ½\":142992,\"Ã©ta\":142993,\"Ã©tais\":142994,\"ĠmogÅĤa\":142995,\"ĠÑĤÐ¾ÑĩÐºÐ¸\":142996,\"Ġ×ŀ×Ķ×ŀ×¢\":142997,\"Ġ×ŀ×Ķ×ŀ×¢×¨×Ľ×ª\":142998,\"à¸¡à¸µà¸Ľà¸£à¸°à¸ªà¸´à¸Ĺà¸ĺà¸´à¸łà¸²à¸ŀ\":142999,\"×Ļ×¨×Ļ×ĵ×Ķ\":143000,\"×Ĵ×¨×ŀ×ł\":143001,\"×Ĵ×¨×ŀ×ł×Ļ×Ķ\":143002,\"ĠÐ³Ð»Ð°Ð²\":143003,\"ĠÐ³Ð»Ð°Ð²Ð½Ð¾Ðµ\":143004,\"Ġë¯¸ëŀĺ\":143005,\"Ġ×ł×Ľ×ķ×ł×Ķ\":143006,\"ĠÙĪØ·ÙĨÙĬ\":143007,\"opport\":143008,\"opportunitÃł\":143009,\"Ġhá»§y\":143010,\"ĠÙĦØªØŃ\":143011,\"ĠÙĦØªØŃÙĤÙĬÙĤ\":143012,\"ĠÃ³rg\":143013,\"ĠÃ³rgÃ£o\":143014,\"ãĤ¹ãĥĶ\":143015,\"ãĤ¹ãĥĶãĥ¼ãĥī\":143016,\"ĠÃ¶nÃ¼\":143017,\"ĠÃ¶nÃ¼ne\":143018,\"ÙħØ¹Ø§ÙħÙĦ\":143019,\"×©×ŀ×Ļ×¨×Ķ\":143020,\"ĠÐ²ÐµÑģÑĮÐ¼Ð°\":143021,\"ĠwiÄĻkszo\":143022,\"ĠwiÄĻkszoÅĽÄĩ\":143023,\"ĠØ§Ø³ØªØ±Ø§ØªÙĬØ¬\":143024,\"ĠØ§Ø³ØªØ±Ø§ØªÙĬØ¬ÙĬØ©\":143025,\"ĠÙģØ¥\":143026,\"ĠÙģØ¥Ø°Ø§\":143027,\"à¹Ģà¸Ĭà¸·à¹Īà¸Ńà¸¡\":143028,\"à¹Ģà¸Ĭà¸·à¹Īà¸Ńà¸¡à¸ķà¹Īà¸Ń\":143029,\"Ġ×ľ×¤×¨\":143030,\"Ġ×ľ×¤×¨×ĺ×Ļ×Ŀ\":143031,\"ÙħØ¶ÙĬ\":143032,\"ĠGerÃ§ek\":143033,\"ĠÃ§ocuklarÄ±n\":143034,\"ÙĪØ«Ø§Ø¦ÙĤ\":143035,\"ĠÙħØ³Ø§Ø¡Ùĭ\":143036,\"ĠunterstÃ¼tzt\":143037,\"ĠprÃ©st\":143038,\"ĠprÃ©stamo\":143039,\"ĠÐłÐ°Ð·Ð¼ÐµÑĢ\":143040,\"ĠÅŁeker\":143041,\"ĠsÃ©culo\":143042,\"×ĳ×Ķ×Ļ×¨\":143043,\"Ø´ÙĩÙĪØ±\":143044,\"Ġà¸Ńà¸µà¸ģ\":143045,\"Ġà¸Ńà¸µà¸ģà¸Ĺà¸±à¹īà¸ĩ\":143046,\"ĠllegÃ³\":143047,\"à¸¨à¸´à¸¥à¸Ľà¸°\":143048,\"æĪĳãģĮ\":143049,\"æĪĳãģĮå®¶\":143050,\"Ø¹ÙĤÙĪ\":143051,\"Ø¹ÙĤÙĪØ¨Ø§Øª\":143052,\"ĠFÃ¤lle\":143053,\"ĠsÅĤuÅ¼\":143054,\"ĠsÅĤuÅ¼b\":143055,\"ĠØ§ÙĦØŃÙĤÙĪÙĤ\":143056,\"ĠÐ¿Ð»Ð¸ÑĤ\":143057,\"ĠÐ¸Ð½Ð¾ÑģÑĤ\":143058,\"ĠÐ¸Ð½Ð¾ÑģÑĤÑĢÐ°Ð½\":143059,\"ĠÐ¸Ð½Ð¾ÑģÑĤÑĢÐ°Ð½Ð½\":143060,\"à¹ĥà¸Ļà¸Ĥà¸ĵà¸°à¸Ĺà¸µà¹Ī\":143061,\"ãĤ«ãĥĨ\":143062,\"ãĤ«ãĥĨãĤ´\":143063,\"ãĤ«ãĥĨãĤ´ãĥª\":143064,\"à¸Ńà¸´à¸ª\":143065,\"à¸Ńà¸´à¸ªà¸£à¸°\":143066,\"à¹Ģà¸ľà¸¢à¹ģ\":143067,\"à¹Ģà¸ľà¸¢à¹ģà¸ŀà¸£\":143068,\"à¹Ģà¸ľà¸¢à¹ģà¸ŀà¸£à¹Ī\":143069,\"ãģĬãģĦ\":143070,\"ãģĬãģĦãģĹãģĦ\":143071,\"Ø§Ø³ØªÙĤÙĦ\":143072,\"Ø§Ø³ØªÙĤÙĦØ§ÙĦ\":143073,\"ØªØŃØ¶\":143074,\"ØªØŃØ¶ÙĬØ±\":143075,\"åĬ©ãģĳ\":143076,\"ÙħØ±Ø§ÙģÙĤ\":143077,\"Ġ×ĵ×ķ×¨\":143078,\"Ġ×ĵ×ķ×¨×©\":143079,\"×ŀ×ª×Ļ×Ļ×Ĺ×¡\":143080,\"×¡×Ļ×Ľ\":143081,\"×¡×Ļ×Ľ×ķ×Ŀ\":143082,\"íĮĮíĬ¸\":143083,\"ĠwyÅĽ\":143084,\"ĠwyÅĽw\":143085,\"ĠwyÅĽwiet\":143086,\"ĠwyÅĽwietl\":143087,\"ĠØ§ÙĦØ§ÙĨØ³Ø§ÙĨ\":143088,\"ĠStraÃŁen\":143089,\"ï¼¬\":143090,\"ãģ«åŁº\":143091,\"ãģ«åŁºãģ¥\":143092,\"ĠcapÃŃtulo\":143093,\"à¸¥à¸¸à¸¢\":143094,\"Ġ×Ķ×ŀ×§×¦×ķ×¢×Ļ\":143095,\"ãģĤãĤĭç¨ĭåº¦\":143096,\"á»¢\":143097,\"ĠØ§ÙĦÙĦØ§\":143098,\"ĠØ§ÙĦÙĦØ§Ø²ÙħØ©\":143099,\"æķĻãģĪ\":143100,\"Ġ×¨×©×Ĳ×Ļ\":143101,\"Ð·Ð°Ð²\":143102,\"Ð·Ð°Ð²Ð¸Ñģ\":143103,\"Ð·Ð°Ð²Ð¸ÑģÐ¸Ð¼\":143104,\"à¸Ľà¸±à¸Īà¸Īà¸±à¸¢\":143105,\"à¹Ģà¸ĭà¸¥\":143106,\"à¹Ģà¸ĭà¸¥à¸¥à¹Į\":143107,\"ĠdiffÃ©rence\":143108,\"ĠAltÄ±n\":143109,\"ĠÐºÑĢÐ°Ð¹\":143110,\"ĠÐºÑĢÐ°Ð¹Ð½Ðµ\":143111,\"ĠÐ·Ð»Ð¾\":143112,\"ĠgÃ¼nÃ¼mÃ¼z\":143113,\"ĠÐ½Ð°ÑĤÑĥÑĢ\":143114,\"ĠÐ½Ð°ÑĤÑĥÑĢÐ°Ð»ÑĮÐ½\":143115,\"×Ĵ×ķ×ľ×©×Ļ×Ŀ\":143116,\"ĠÐºÐ°ÑĤÐµÐ³Ð¾ÑĢ\":143117,\"ĠÐºÐ°ÑĤÐµÐ³Ð¾ÑĢÐ¸Ð¸\":143118,\"ĠÐ·Ð½Ð°Ðº\":143119,\"à¸ģà¹Īà¸Ńà¸Ļà¸«à¸Ļà¹īà¸²\":143120,\"à¸ģà¹Īà¸Ńà¸Ļà¸«à¸Ļà¹īà¸²à¸Ļà¸µà¹ī\":143121,\"ĠÙħÙĨØª\":143122,\"ĠÙħÙĨØªØ®Ø¨\":143123,\"ãĥĽãĥ¼ãĥ«\":143124,\"ĠÐµÐ²ÑĢÐ¾\":143125,\"à¸ªà¸§\":143126,\"à¸ªà¸§à¸¡\":143127,\"ĠìľĦìĽĲ\":143128,\"ĠìľĦìĽĲëĭĺ\":143129,\"ĠØ§ÙĦØŃÙĪØ«\":143130,\"ĠØ§ÙĦØŃÙĪØ«ÙĬ\":143131,\"ĠÑģÐ¾Ð´ÐµÑĢÐ¶Ð¸ÑĤ\":143132,\"ãĥķãĤ¡ãĥĥãĤ·ãĥ§ãĥ³\":143133,\"Ġà¸ģà¸±à¸Ļ\":143134,\"Ġà¸ģà¸±à¸Ļà¸¢\":143135,\"Ġà¸ģà¸±à¸Ļà¸¢à¸²à¸¢à¸Ļ\":143136,\"ãĤªãĥª\":143137,\"ãĤªãĥªãĤ¸\":143138,\"ãĤªãĥªãĤ¸ãĥĬãĥ«\":143139,\"ĠÐ±ÑĢÐµÐ½Ð´\":143140,\"ãĤĴæĮģãģ£ãģ¦ãģĦãĤĭ\":143141,\"ĠinversiÃ³n\":143142,\"Ġê°ĸ\":143143,\"Ġê°ĸê³ł\":143144,\"ĠnovitÃł\":143145,\"ê´Ģê´ĳ\":143146,\"Ġà¸ŀà¸¤à¸©\":143147,\"Ġà¸ŀà¸¤à¸©à¸łà¸²\":143148,\"Ġà¸ŀà¸¤à¸©à¸łà¸²à¸Ħà¸¡\":143149,\"×ķ×¨×Ĺ×Ļ×Ŀ\":143150,\"×Ľ×ľ×ķ×ľ\":143151,\"Ġngáº¡c\":143152,\"×Ļ×Ļ×©\":143153,\"×Ļ×Ļ×©×ķ×ĳ\":143154,\"fÃ¤ll\":143155,\"fÃ¤llig\":143156,\"ĠÑĤÑĢÐµÐ±ÑĥÐµÑĤÑģÑı\":143157,\"ĠcarÃ¡\":143158,\"ĠcarÃ¡cter\":143159,\"ĠprincÃŃpio\":143160,\"ĠÅĤaz\":143161,\"ĠÅĤazien\":143162,\"ĠÅĤazienk\":143163,\"ĠgiÃ£n\":143164,\"ÑģÑĤÑĢÐ°Ð¸Ð²Ð°\":143165,\"ÙħØ³Ø§Ø¨\":143166,\"ÙħØ³Ø§Ø¨ÙĤØ©\":143167,\"à¹Ģà¸Ħà¸£à¸·à¹Īà¸Ńà¸ĩà¸Ķà¸·à¹Īà¸¡\":143168,\"ØªØ±ÙĥÙĬØ¨\":143169,\"voluÃ§Ã£o\":143170,\"ĠÐŁÐ¾Ñĩ\":143171,\"ĠÐŁÐ¾ÑĩÐµÐ¼\":143172,\"ĠÐŁÐ¾ÑĩÐµÐ¼Ñĥ\":143173,\"ÐºÐ°Ð·Ð°Ð»Ð¾ÑģÑĮ\":143174,\"ĠÐ¿ÑĢÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñı\":143175,\"à¹Ģà¸Ĺà¸µà¸¢à¸¡\":143176,\"íĮĶ\":143177,\"à¸Ĥà¹īà¸Ńà¹Ģà¸ªà¸Ļà¸Ń\":143178,\"à¸Ľà¸±à¸įà¸įà¸²\":143179,\"ĠÐ¾Ð±ÑĥÑĩ\":143180,\"ĠÐ¾Ð±ÑĥÑĩÐµÐ½Ð¸Ñı\":143181,\"ĠÑģÐµÑĢÐ¸\":143182,\"ĠÑģÐµÑĢÐ¸Ð°Ð»\":143183,\"ĠinglÃ©s\":143184,\"ĠÙĦÙĥØ±Ø©\":143185,\"Ġ×ĺ×ľ\":143186,\"Ġ×ĺ×ľ×¤×ķ×Ł\":143187,\"Ġìłĳ\":143188,\"Ġìłĳê·¼\":143189,\"×Ĳ×ķ×Ĵ\":143190,\"×Ĳ×ķ×Ĵ×ķ×¡\":143191,\"×Ĳ×ķ×Ĵ×ķ×¡×ĺ\":143192,\"ĠÐ±Ð¾Ð»ÑĮÑĪÐ¾Ðµ\":143193,\"ĠÐļÐ¾Ð½ÐµÑĩÐ½Ð¾\":143194,\"×¢×Ļ×ª×ķ×ł\":143195,\"×¢×Ļ×ª×ķ×ł×Ĳ×Ļ\":143196,\"ĠÐºÐ½Ð¾Ð¿Ðº\":143197,\"ĠÐ·Ð½\":143198,\"ĠÐ·Ð½Ð°ÑĤÑĮ\":143199,\"ĠÄĳá»±\":143200,\"ĠÄĳá»±ng\":143201,\"Ð²Ð»Ð°Ð¶\":143202,\"Ð²Ð»Ð°Ð¶Ð½\":143203,\"×ŀ×Ļ×ĺ×ĳ\":143204,\"ãĤ¬ãĤ¤\":143205,\"ãĤ¬ãĤ¤ãĥī\":143206,\"..........\":143207,\"Ġà¸ģà¸¸à¸¡\":143208,\"Ġà¸ģà¸¸à¸¡à¸łà¸²à¸ŀ\":143209,\"Ġà¸ģà¸¸à¸¡à¸łà¸²à¸ŀà¸±à¸Ļ\":143210,\"Ġà¸ģà¸¸à¸¡à¸łà¸²à¸ŀà¸±à¸Ļà¸ĺ\":143211,\"Ġà¸ģà¸¸à¸¡à¸łà¸²à¸ŀà¸±à¸Ļà¸ĺà¹Į\":143212,\"bez\":143213,\"bezpieczeÅĦst\":143214,\"bezpieczeÅĦstw\":143215,\"ãĥĳãĥĳæ´»\":143216,\"Ø¹Ø§Ø·\":143217,\"Ø¹Ø§Ø·Ùģ\":143218,\"ĠÄĳáºŃm\":143219,\"ĠÐ·ÑĢ\":143220,\"ĠÐ·ÑĢÐµÐ½Ð¸Ñı\":143221,\"ĠborÃ§\":143222,\"ĠÐ½ÐµÐ´ÐµÐ»\":143223,\"ĠÐ½ÐµÐ´ÐµÐ»Ñİ\":143224,\"Ġhá»ı\":143225,\"Ġhá»ıng\":143226,\"ìŀ¥ìķł\":143227,\"ìŀ¥ìķłìĿ¸\":143228,\"ĠØ§ÙĦØ¹ÙĦØ§ÙĤØ©\":143229,\"Ġíģ¬\":143230,\"Ġíģ¬ê²Į\":143231,\"à¹Ħà¸£à¹Ī\":143232,\"à¸ļà¸²à¸Ķ\":143233,\"à¸ļà¸²à¸Ķà¹Ģà¸Īà¹ĩà¸ļ\":143234,\"à¸Ŀà¸£à¸±\":143235,\"à¸Ŀà¸£à¸±à¹Īà¸ĩ\":143236,\"à¸Ŀà¸£à¸±à¹Īà¸ĩà¹Ģà¸¨\":143237,\"à¸Ŀà¸£à¸±à¹Īà¸ĩà¹Ģà¸¨à¸ª\":143238,\"×¨×¢×Ļ\":143239,\"×¨×¢×Ļ×ķ×ł×ķ×ª\":143240,\"ĠëĮ\":143241,\"ĠëĮĵ\":143242,\"ĠëĮĵê¸Ģ\":143243,\"Ġnajb\":143244,\"Ġnajbli\":143245,\"ĠnajbliÅ¼\":143246,\"ĠnajbliÅ¼sz\":143247,\"ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·ÑĥÐµÑĤÑģÑı\":143248,\"ĠcientÃŃf\":143249,\"ĠcientÃŃfico\":143250,\"×¢×ŀ×§\":143251,\"Ġgá»£i\":143252,\"Ø´ØŃÙĨ\":143253,\"ĠÅĽm\":143254,\"ĠÅĽmier\":143255,\"ĠÅĽmierci\":143256,\"à¸Ħà¸²à¸ªà¸´à¹Ĥà¸Ļà¸Ńà¸Ńà¸Ļà¹Ħà¸¥à¸Ļà¹Į\":143257,\"×Ĺ×©×ĳ×ª×Ļ\":143258,\"Ġningu\":143259,\"ĠninguÃ©m\":143260,\"è¾¼ãĤģ\":143261,\"ãģ·\":143262,\"ĠÑĥÐ³\":143263,\"ĠÑĥÐ³Ð¾Ð»\":143264,\"ï½°\":143265,\"×¤×ª×Ļ×Ĺ\":143266,\"×¤×ª×Ļ×Ĺ×ª\":143267,\"Ġ×Ķ×¨×Ĳ×©×ķ×ł×Ļ×Ŀ\":143268,\"pÃ³sito\":143269,\"ãĤŃãĥ¬ãĤ¤\":143270,\"ãģ©ãģĵãĤį\":143271,\"à¹Ģà¸Ĺà¹Īà¸²à¹Ħ\":143272,\"à¹Ģà¸Ĺà¹Īà¸²à¹Ħà¸«à¸£\":143273,\"à¹Ģà¸Ĺà¹Īà¸²à¹Ħà¸«à¸£à¹Ī\":143274,\"ĠÐ¸Ð½ÑĤÐµÑĢÑĮÐµÑĢ\":143275,\"ĠØŃØ§Ø¬\":143276,\"ĠØŃØ§Ø¬Ø©\":143277,\"à¸ªà¸µà¸Ĥà¸²à¸§\":143278,\"ìĸ¼\":143279,\"Ġná»Ļ\":143280,\"Ġná»Ļp\":143281,\"ĠÃŃnd\":143282,\"ĠÃŃndice\":143283,\"à¸ªà¸³à¸£à¸§à¸Ī\":143284,\"ĠÐºÐ°Ð¶Ð´Ð¾Ð¹\":143285,\"ĠhotÃ©is\":143286,\"ĠnastÄĻ\":143287,\"ĠnastÄĻpn\":143288,\"Ġ×Ķ×§×ķ×ĵ\":143289,\"Ġ×Ķ×§×ķ×ĵ×Ŀ\":143290,\"×¤×ķ×¤\":143291,\"×¤×ķ×¤×ķ×ľ\":143292,\"×¤×ķ×¤×ķ×ľ×¨×Ļ\":143293,\"Ð²ÑĪÐµÐ¹\":143294,\"ãĤ·ãĥ³ãĥĹ\":143295,\"ãĤ·ãĥ³ãĥĹãĥ«\":143296,\"ĠzdjÄĻÄĩ\":143297,\"ĠÐ³ÑĢÑĥÐ¿Ð¿Ð°\":143298,\"ĠÐ¿Ð¾Ð¼ÐµÑī\":143299,\"ĠÐ¿Ð¾Ð¼ÐµÑīÐµÐ½Ð¸Ñı\":143300,\"ãģ©ãģĨãģĦãģĨ\":143301,\"ĠÐ¸ÑģÐ¿ÑĭÑĤÐ°\":143302,\"ĠogÅĤ\":143303,\"ĠogÅĤos\":143304,\"ĠogÅĤoszen\":143305,\"ĠogÅĤoszeni\":143306,\"à¸ªà¸£à¹īà¸²à¸ĩà¸ªà¸£à¸£\":143307,\"à¸ªà¸£à¹īà¸²à¸ĩà¸ªà¸£à¸£à¸Ħà¹Į\":143308,\"à¸ŀà¸£à¸£à¸ĵ\":143309,\"ĠÃ§Ä±kÄ±ÅŁ\":143310,\"ĠÑĩÐ°ÑģÑĤÐ½Ð¾ÑģÑĤÐ¸\":143311,\"Ġ×ķ×Ļ×ķ×ª×¨\":143312,\"ç¶ļãģįãĤĴ\":143313,\"ç¶ļãģįãĤĴèªŃ\":143314,\"ç¶ļãģįãĤĴèªŃãĤĢ\":143315,\"à¸ģà¸£à¸±\":143316,\"à¸ģà¸£à¸±à¸¡\":143317,\"Ð³ÑĢÐ°ÑĦ\":143318,\"ĠÐ²Ð»Ð°Ð´\":143319,\"ĠÐ²Ð»Ð°Ð´ÐµÐ»ÑĮ\":143320,\"ĠÐ²Ð»Ð°Ð´ÐµÐ»ÑĮÑĨ\":143321,\"ĠistediÄŁ\":143322,\"ĠistediÄŁiniz\":143323,\"×ĳ×ľ×¢\":143324,\"×ĳ×ľ×¢×ĵ×Ļ\":143325,\"ÙħÙĪØ§Ùģ\":143326,\"ÙħÙĪØ§ÙģÙĤØ©\":143327,\"Ġ×Ļ×ķ×¨\":143328,\"Ġ×Ļ×ķ×¨×§\":143329,\"ãĤ«ãĥ¼ãĥīãĥŃãĥ¼ãĥ³\":143330,\"ĠØ§ÙĦÙħØ´ÙĥÙĦ\":143331,\"ĠØ§ÙĦÙħØ´ÙĥÙĦØ©\":143332,\"ĠêµŃíļĮ\":143333,\"×¡×¤×ĺ\":143334,\"×¡×¤×ĺ×ŀ\":143335,\"×¡×¤×ĺ×ŀ×ĳ×¨\":143336,\"Ġìĸ´ëłµ\":143337,\"ÙĥØ§Ùħ\":143338,\"ÙĥØ§ÙħÙĬØ±Ø§\":143339,\"schlÃ¼\":143340,\"schlÃ¼sse\":143341,\"ĠØ«ÙĨ\":143342,\"ĠØ«ÙĨØ§Ø¦ÙĬ\":143343,\"ìī½\":143344,\"ĠÐŀÑģÐ¾Ð±\":143345,\"ĠÐŀÑģÐ¾Ð±ÐµÐ½Ð½Ð¾\":143346,\"ĠÐ¸Ð½Ð²ÐµÑģÑĤÐ¸\":143347,\"ĠÐ¸Ð½Ð²ÐµÑģÑĤÐ¸ÑĨÐ¸\":143348,\"Ø§ØŃØªÙħ\":143349,\"Ø§ØŃØªÙħØ§ÙĦ\":143350,\"EÄŀ\":143351,\"EÄŀÄ°\":143352,\"íķĺê²łëĭ¤\":143353,\"Ġ×Ĳ×ĳ×¨×Ķ\":143354,\"Ġ×Ĳ×ĳ×¨×Ķ×Ŀ\":143355,\"Ġ×ĳ×Ĺ×Ļ×ł×Ŀ\":143356,\"Ø£ÙĪØ¶\":143357,\"Ø£ÙĪØ¶Ø§Ø¹\":143358,\"ĠdÃ©l\":143359,\"ĠdÃ©lai\":143360,\"Ġ×Ĳ×ķ×Ķ×ĳ×Ļ×Ŀ\":143361,\"ĠÑģÐ¾Ñħ\":143362,\"ĠÑģÐ¾ÑħÑĢ\":143363,\"ĠÑģÐ¾ÑħÑĢÐ°Ð½Ð¸\":143364,\"ĠÐ´Ð¾ÑģÑĤÐ¸Ð¶\":143365,\"ĠÐ´Ð¾ÑģÑĤÐ¸Ð¶ÐµÐ½Ð¸\":143366,\"à¸ªà¸´à¹Īà¸ĩà¹ģ\":143367,\"à¸ªà¸´à¹Īà¸ĩà¹ģà¸§à¸Ķ\":143368,\"à¸ªà¸´à¹Īà¸ĩà¹ģà¸§à¸Ķà¸¥\":143369,\"à¸ªà¸´à¹Īà¸ĩà¹ģà¸§à¸Ķà¸¥à¹īà¸Ńà¸¡\":143370,\"ĠØ§ÙĦÙħØ¨Ø§Ø´Ø±\":143371,\"ĠÑĦÐ¸Ð³\":143372,\"ĠÑĦÐ¸Ð³ÑĥÑĢ\":143373,\"Ð¼Ð¾Ð¶ÐµÐ¼\":143374,\"×ľ×ŀ×Ļ×ĵ×Ķ\":143375,\"ĠcinÃ©\":143376,\"ĠcinÃ©ma\":143377,\"Ġbada\":143378,\"ĠbadaÅĦ\":143379,\"Ø¬Ø¨ÙĩØ©\":143380,\"ĠÐ´ÐµÐ¿\":143381,\"ĠÐ´ÐµÐ¿ÑĥÑĤ\":143382,\"ĠÐ´ÐµÐ¿ÑĥÑĤÐ°ÑĤ\":143383,\"ĠdistÃ¢ncia\":143384,\"ĠØ§ÙĦÙħØ¹Ø§Ø±\":143385,\"ĠØ§ÙĦÙħØ¹Ø§Ø±Ø¶Ø©\":143386,\"thÃ¨se\":143387,\"Ã¼nc\":143388,\"Ã¼ncÃ¼\":143389,\"ĠÐ´Ð°Ð½Ð½Ð¾Ð³Ð¾\":143390,\"ĠBelgi\":143391,\"ĠBelgiÃ«\":143392,\"Ġ×ĳ×ĳ×§\":143393,\"Ġ×ĳ×ĳ×§×©×Ķ\":143394,\"à¸¢à¹Īà¸²à¸Ļ\":143395,\"ĠsoluÃ§Ã£o\":143396,\"Ġ×Ķ×¦×ĺ×¨\":143397,\"Ġ×Ķ×¦×ĺ×¨×¤×ķ\":143398,\"ĠØ£ÙĨØŃ\":143399,\"ĠØ£ÙĨØŃØ§Ø¡\":143400,\"ĠØ¯ÙħØ´\":143401,\"ĠØ¯ÙħØ´ÙĤ\":143402,\"à¸¡à¸±à¹ī\":143403,\"à¸¡à¸±à¹īà¸¢\":143404,\"ÙħØºØ±Ø¨\":143405,\"Ø§Ø³ØªØ¹ÙħØ§ÙĦ\":143406,\"ĠSÅĤow\":143407,\"ĠëıĻìĭľ\":143408,\"ĠëıĻìĭľìĹĲ\":143409,\"ĠÑģÐ¾Ñģ\":143410,\"ĠÑģÐ¾ÑģÐµÐ´\":143411,\"ì²ŃìĨĮ\":143412,\"ì²ŃìĨĮëħĦ\":143413,\"ĠÐ³ÑĢÐ°ÑĦ\":143414,\"ĠÐ³ÑĢÐ°ÑĦÐ¸Ðº\":143415,\"ĠìŀĳìĿĢ\":143416,\"Ġyeti\":143417,\"ĠyetiÅŁtir\":143418,\"ĠìĿ´ê²ĥìĿ´\":143419,\"à¸«à¹Īà¸²à¸ĩ\":143420,\"Ø¥ÙħÙĥØ§ÙĨ\":143421,\"Ø¥ÙħÙĥØ§ÙĨÙĬØ©\":143422,\"Ø§Ø³ØªØ¹Ø±Ø§Ø¶\":143423,\"ÙħØ®Ø¯Ø±\":143424,\"ĠÑĩÑĥÑĤÑĮ\":143425,\"ÙħØ¯ÙĬØ±\":143426,\"ÙħØ¯ÙĬØ±ÙĬØ©\":143427,\"Ġà¹Ģà¸¡à¸©\":143428,\"Ġà¹Ģà¸¡à¸©à¸²à¸¢à¸Ļ\":143429,\"ĠÐ¼ÐµÑħ\":143430,\"ĠÐ¼ÐµÑħÐ°Ð½Ð¸Ð·\":143431,\"ĠÐ¼ÐµÑħÐ°Ð½Ð¸Ð·Ð¼\":143432,\"ĠÑģÑĥÐ¼\":143433,\"ĠÑģÑĥÐ¼Ð¼Ñĥ\":143434,\"ĠvÃ¶\":143435,\"ĠvÃ¶ll\":143436,\"ĠvÃ¶llig\":143437,\"ĠÐ´ÑĢÑĥÐ·\":143438,\"ĠÐ´ÑĢÑĥÐ·ÑĮÑı\":143439,\"ãĤĴåĪ©çĶ¨ãģĹãģ¦\":143440,\"à¸ļà¸£à¸£à¸Īà¸¸\":143441,\"poÅ¼ycz\":143442,\"×ŀ×©×Ľ\":143443,\"×ŀ×©×Ľ×ł×ª\":143444,\"×ŀ×©×Ľ×ł×ª×Ĳ\":143445,\"ĠeuropÃ©en\":143446,\"ĠpropriÃ©\":143447,\"ĠpropriÃ©taire\":143448,\"Ġkháº¥u\":143449,\"ãģĦãģŁãģłãģĳãĤĭ\":143450,\"ĠtecrÃ¼\":143451,\"ĠtecrÃ¼be\":143452,\"×Ķ×ĳ\":143453,\"×Ķ×ĳ×ł×Ķ\":143454,\"ĠcuÌ\":143455,\"ĠcuÌī\":143456,\"ĠcuÌīa\":143457,\"×Ĳ×ķ×ķ\":143458,\"×Ĳ×ķ×ķ×Ļ×¨×Ķ\":143459,\"Ġ×Ľ×ķ×ľ×ķ\":143460,\"Ulus\":143461,\"UluslararasÄ±\":143462,\"Ġ×ł×ķ×ª\":143463,\"Ġ×ł×ķ×ª×Ł\":143464,\"ãģ«åĲĳ\":143465,\"ãģ«åĲĳãģĳãģ¦\":143466,\"ë¹Ľ\":143467,\"à¸Ĺà¸±à¸ģà¸©\":143468,\"à¸Ĺà¸±à¸ģà¸©à¸°\":143469,\"Ø³ÙĤÙĪ\":143470,\"Ø³ÙĤÙĪØ·\":143471,\"ĠÐ²Ð½\":143472,\"ĠÐ²Ð½ÐµÑĪ\":143473,\"ĠÐ²Ð½ÐµÑĪÐ½Ðµ\":143474,\"Ġurz\":143475,\"ĠurzÄĻd\":143476,\"ĠÃ¡mb\":143477,\"ĠÃ¡mbito\":143478,\"à¸Ńà¸ĺà¸´\":143479,\"à¸Ńà¸ĺà¸´à¸ļà¸²à¸¢\":143480,\"ĠÅĤad\":143481,\"ĠÅĤadn\":143482,\"ê±´ì¶ķ\":143483,\"wÃ³dzt\":143484,\"wÃ³dztw\":143485,\"ĠquestÃµes\":143486,\"Ġ×©×§\":143487,\"Ġ×©×§×Ļ×ĳ×ľ\":143488,\"ĠmiejscowoÅĽci\":143489,\"ĠÐ²Ð°Ð»\":143490,\"ĠÐ²Ð°Ð»ÑİÑĤ\":143491,\"hÃ¤user\":143492,\"à¸«à¸Ļà¸Ńà¸ĩ\":143493,\"ãģ¨åħ±\":143494,\"ãģ¨åħ±ãģ«\":143495,\"ãĥıãĥ¼ãĥī\":143496,\"Ġê°ľìµľ\":143497,\"ĠÐ¾ÑģÐ½Ð¾Ð²Ð½Ð¾Ð¼\":143498,\"ĠÐ¼ÑıÑģ\":143499,\"Ø§Ø¹Øª\":143500,\"Ø§Ø¹ØªÙĤØ§ÙĦ\":143501,\"à¸ªà¸ĸà¸´\":143502,\"à¸ªà¸ĸà¸´à¸ķà¸´\":143503,\"Ngu\":143504,\"Nguá»ĵn\":143505,\"ĠÙħØ¬ÙĦ\":143506,\"ĠÙħØ¬ÙĦØ©\":143507,\"à¹ģà¸Ĥà¸Ļ\":143508,\"ĠØ§ÙĦÙĦÙĬØ¨ÙĬ\":143509,\"×¤×¢×Ļ×ľ×ķ×Ļ×ķ×ª\":143510,\"Ġ×Ķ×¨×¤×ķ×Ĳ×Ļ\":143511,\"×¤×¨×ķ×¤\":143512,\"×¤×¨×ķ×¤×Ļ×ľ\":143513,\"×§×ľ×Ĳ\":143514,\"×§×ľ×Ĳ×¡×Ļ\":143515,\"ÙĥØªØ´Ùģ\":143516,\"ãģ«ãģªãģ£ãģ¦ãģĹãģ¾ãģĨ\":143517,\"à¹Ģà¸Ħà¸¥à¹ĩà¸Ķ\":143518,\"à¹Ģà¸Ħà¸¥à¹ĩà¸Ķà¸¥à¸±à¸ļ\":143519,\"Ġì»´\":143520,\"Ġì»´íĵ¨\":143521,\"Ġì»´íĵ¨íĦ°\":143522,\"Ġ×Ĺ×Ļ×ķ×ĳ×Ļ\":143523,\"ĠnÃ¤m\":143524,\"ĠnÃ¤mlich\":143525,\"åĳ¼ãģ°\":143526,\"åĳ¼ãģ°ãĤĮ\":143527,\"ĠÑĢÐ¾Ð»\":143528,\"ĠÑĢÐ¾Ð»Ð¸\":143529,\"ĠspÃ©cialisÃ©\":143530,\"à¸Ļà¸§à¸±à¸ķ\":143531,\"à¸Ļà¸§à¸±à¸ķà¸ģà¸£à¸£à¸¡\":143532,\"ÙĨØµÙĪØµ\":143533,\"Ð¿ÐµÑĢÐµÐ´\":143534,\"Ð¿ÐµÑĢÐµÐ´Ð°Ñĩ\":143535,\"thÃ¨que\":143536,\"Ġ×¨×Ĳ×Ļ×ª×Ļ\":143537,\"ãĥĢãĤ¦ãĥ³\":143538,\"ãĤıãģĭ\":143539,\"ãĤıãģĭãģ£ãģ¦\":143540,\"Ð±ÐµÑĢÐµÐ¶\":143541,\"ĠÑģÐµÐº\":143542,\"ĠÑģÐµÐºÑĢ\":143543,\"ĠÑģÐµÐºÑĢÐµÑĤ\":143544,\"ĠÐ¿Ð¾ÑģÑĤÐ¾ÑıÐ½Ð½\":143545,\"à¸Ĥà¸Ļà¸ªà¹Īà¸ĩ\":143546,\"ĠmÃ¼k\":143547,\"ĠmÃ¼kem\":143548,\"ĠmÃ¼kemmel\":143549,\"ÐµÑĤÐµÑģÑĮ\":143550,\"ĠØ§ÙĦØ³ÙĨÙĪØ§Øª\":143551,\"ĠìłĦíĺĢ\":143552,\"Ġ×Ķ×ŀ×§×ķ×¨×Ļ\":143553,\"ĠmÃ¼d\":143554,\"ĠmÃ¼dah\":143555,\"ĠmÃ¼dahale\":143556,\"Ġwyb\":143557,\"ĠwybÃ³r\":143558,\"ĠtendÃªncia\":143559,\"Ø¥Ø¯Ø§Ø±\":143560,\"Ø¥Ø¯Ø§Ø±ÙĬØ©\":143561,\"ĠunterstÃ¼tzen\":143562,\"×ª×ĳ×¨\":143563,\"×ª×ĳ×¨×¨\":143564,\"ĠdiÃ¡\":143565,\"ĠdiÃ¡logo\":143566,\"ĠÃĸnce\":143567,\"ĠÃĸnceki\":143568,\"ãĤ¹ãĥĿãĥĥãĥĪ\":143569,\"ëĦ£\":143570,\"ĠGeli\":143571,\"ĠGeliÅŁ\":143572,\"ãĤĴéĢļ\":143573,\"ãĤĴéĢļãģĹãģ¦\":143574,\"ĠFuÃŁball\":143575,\"Ġsalari\":143576,\"ĠsalariÃ©\":143577,\"ĠÐ¿ÑĢÐ¾Ð´ÑĥÐºÑĤÐ¾Ð²\":143578,\"ØµÙģÙĤØ©\":143579,\"à¸£à¸§à¸ļ\":143580,\"à¸£à¸§à¸ļà¸£à¸§à¸¡\":143581,\"à¹ĥà¸Ļà¸Ĳà¸²à¸Ļ\":143582,\"à¹ĥà¸Ļà¸Ĳà¸²à¸Ļà¸°\":143583,\"Ġkayna\":143584,\"ĠkaynaÄŁÄ±\":143585,\"ĠìŀĳíĴĪ\":143586,\"ĠÐ²ÑĭÑĢÐ°Ð¶\":143587,\"ĠÐ²ÑĭÑĢÐ°Ð¶ÐµÐ½\":143588,\"ĠÑģÑĤÐµÐ¿\":143589,\"ĠÑģÑĤÐµÐ¿ÐµÐ½Ð¸\":143590,\"ĠØ§ÙĦÙħÙĪØ¬ÙĪØ¯\":143591,\"ĠØ§ÙĦÙħÙĪØ¬ÙĪØ¯Ø©\":143592,\"à¸¥à¹īà¸¡\":143593,\"ĠnajczÄĻ\":143594,\"ĠnajczÄĻÅĽcie\":143595,\"ĠnajczÄĻÅĽciej\":143596,\"Ġzwy\":143597,\"Ġzwyk\":143598,\"ĠzwykÅĤ\":143599,\"Ġê·¸ëłĩì§Ģ\":143600,\"à¸ģà¸£à¸°à¸Ī\":143601,\"à¸ģà¸£à¸°à¸Īà¸²à¸¢\":143602,\"Ġëĭµ\":143603,\"Ġëĭµë³Ģ\":143604,\"ĠÑĢÐµÐ°Ðº\":143605,\"ĠÑĢÐµÐ°ÐºÑĨÐ¸\":143606,\"ĠÅĽwieÅ¼\":143607,\"ĠÑģÑĤÐ¾Ð¸Ð¼Ð¾ÑģÑĤÐ¸\":143608,\"ÙħÙĨØ§ÙĤ\":143609,\"ÙħÙĨØ§ÙĤØ´\":143610,\"ÙħÙĨØ§ÙĤØ´Ø©\":143611,\"ĠÑħÐ¾ÑĩÑĥ\":143612,\"ãĥľãĥ¼ãĥī\":143613,\"ĠrÃ³Å¼nic\":143614,\"ĠÐºÑĢÑĭ\":143615,\"ĠÐºÑĢÑĭÑĪ\":143616,\"âľĵ\":143617,\"ãĤ³ãĥ³ãĥĨãĥ³\":143618,\"ãĤ³ãĥ³ãĥĨãĥ³ãĥĦ\":143619,\"ĠÐ¿ÑĢÐµÐ´Ð¿Ð¾Ñĩ\":143620,\"×ŀ×¨×ĳ×Ļ×ª\":143621,\"ĠØ´Ùĥ\":143622,\"ĠØ´ÙĥØ±Ø§\":143623,\"ĠÐ´Ð°Ð»\":143624,\"ĠÐ´Ð°Ð»ÐµÐº\":143625,\"ĠÐ´Ð°Ð»ÐµÐºÐ¾\":143626,\"Ø¨Ø±ÙĬØ·\":143627,\"Ø¨Ø±ÙĬØ·Ø§ÙĨÙĬØ§\":143628,\"Ø¹ÙĨØ§\":143629,\"Ø¹ÙĨØ§ÙĬØ©\":143630,\"ĠÑĢÐ°ÑģÑģÐºÐ°Ð·\":143631,\"ĠÑĢÐ°ÑģÑģÐºÐ°Ð·ÑĭÐ²Ð°\":143632,\"Ø£ÙĦÙĪ\":143633,\"Ø£ÙĦÙĪØ§ÙĨ\":143634,\"æĮģãģ£ãģ¦\":143635,\"æĮģãģ£ãģ¦ãģĦ\":143636,\"ÙħØ¨Ø§Ø¯Ø¦\":143637,\"×Ķ×¢×ĳ×¨\":143638,\"×Ķ×¢×ĳ×¨×ª\":143639,\"ĠyayÄ±\":143640,\"ĠyayÄ±ml\":143641,\"ĠyayÄ±mla\":143642,\"mÃ¡t\":143643,\"mÃ¡ticos\":143644,\"à¸ģà¸±à¸ĩ\":143645,\"à¸ģà¸±à¸ĩà¸§à¸¥\":143646,\"Ġ×ľ×¤×ª\":143647,\"Ġ×ľ×¤×ª×ķ×Ĺ\":143648,\"à¸ŀà¸¤à¸ķà¸´\":143649,\"à¸ŀà¸¤à¸ķà¸´à¸ģà¸£à¸£à¸¡\":143650,\"íĤ¬\":143651,\"ĠÐ¾ÐºÑĢÑĥÐ³\":143652,\"Ġ×ŀ×¦×ķ×ķ×Ķ\":143653,\"ÐĽÐµÐ½Ð¸\":143654,\"ÐĽÐµÐ½Ð¸Ð½\":143655,\"ĠTriá»ģu\":143656,\"ãĤ³ãĥŁãĥ¥\":143657,\"ãĤ³ãĥŁãĥ¥ãĥĭ\":143658,\"ãĤ³ãĥŁãĥ¥ãĥĭãĤ±\":143659,\"ãĤ³ãĥŁãĥ¥ãĥĭãĤ±ãĥ¼ãĤ·ãĥ§ãĥ³\":143660,\"ÙĥÙĨÙĬ\":143661,\"ÙĥÙĨÙĬØ³Ø©\":143662,\"ãĤĴä¸Ńå¿ĥ\":143663,\"ãĤĴä¸Ńå¿ĥãģ«\":143664,\"ĠmiÄĻdz\":143665,\"ĠmiÄĻdzyn\":143666,\"ĠmiÄĻdzynar\":143667,\"ĠmiÄĻdzynarod\":143668,\"ĠmiÄĻdzynarodow\":143669,\"ÙĦÙĨ\":143670,\"ÙĦÙĨØ¯Ø§\":143671,\"Ø¨Ø±Ø´\":143672,\"Ø¨Ø±Ø´ÙĦÙĪÙĨ\":143673,\"Ø¨Ø±Ø´ÙĦÙĪÙĨØ©\":143674,\"à¸ģà¸£à¸°à¸ķà¸¸\":143675,\"à¸ģà¸£à¸°à¸ķà¸¸à¹īà¸Ļ\":143676,\"ĠgÄ±\":143677,\"ĠgÄ±da\":143678,\"à¸Ľà¸£à¸°à¸Ĺà¸±à¸ļ\":143679,\"à¸Ľà¸£à¸°à¸Ĺà¸±à¸ļà¹ĥà¸Ī\":143680,\"Ġë¶Īêµ¬\":143681,\"Ġë¶Īêµ¬íķĺê³ł\":143682,\"ĠÙĨØ·\":143683,\"ĠÙĨØ·Ø§ÙĤ\":143684,\"ĠÐľÐ¾Ð¶ÐµÑĤ\":143685,\"PrÃ¤s\":143686,\"PrÃ¤sident\":143687,\"ĠÑģÐºÐ¾ÑĢ\":143688,\"ĠÑģÐºÐ¾ÑĢÐ¾ÑģÑĤÑĮ\":143689,\"Ġ×Ķ×ĳ×ķ×§×¨\":143690,\"ÐµÑħÐ°ÑĤÑĮ\":143691,\"Ġgáº¡o\":143692,\"Ġ×©×Ĳ×Ļ×ł×Ŀ\":143693,\"Ġ×ĳ×ł×ķ×Ĵ\":143694,\"Ġ×ĳ×ł×ķ×Ĵ×¢\":143695,\"ĠÐ¾Ð¿Ð¸ÑģÐ°Ð½Ð¸Ðµ\":143696,\"Ġuczni\":143697,\"ĠuczniÃ³w\":143698,\"à¹Ģà¸Ńà¹ĩà¸Ļ\":143699,\"ĠØªØ´\":143700,\"ĠØªØ´Ø±ÙĬÙĨ\":143701,\"ĠnhÃ£n\":143702,\"ë¹¨\":143703,\"ĠcaractÃ¨re\":143704,\"×¢×ľ×Ļ\":143705,\"×¢×ľ×Ļ×Ļ×Ķ\":143706,\"æ¥½ãģĹãĤģãĤĭ\":143707,\"ĠÑģÐ°Ñħ\":143708,\"ĠÑģÐ°ÑħÐ°ÑĢ\":143709,\"Ð´ÑĥÐ¼Ð°ÑĤÑĮ\":143710,\"ĠÐĴÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾\":143711,\"ØµÙĬØ§ÙĨ\":143712,\"ØµÙĬØ§ÙĨØ©\":143713,\"Ã¶mÃ¼r\":143714,\"à¸ªà¸¥\":143715,\"à¸ªà¸¥à¹ĩ\":143716,\"à¸ªà¸¥à¹ĩà¸Ń\":143717,\"à¸ªà¸¥à¹ĩà¸Ńà¸ķ\":143718,\"ë¡¯\":143719,\"ĠthÃ³i\":143720,\"grÃ¶ÃŁe\":143721,\"ĠksiÄĻ\":143722,\"ĠksiÄĻg\":143723,\"ĠÑĢÐ¾Ð¼\":143724,\"ĠÑĢÐ¾Ð¼Ð°Ð½\":143725,\"ÙĤØ§Ø³Ùħ\":143726,\"×ŀ×ĳ×ķ×Ĵ\":143727,\"×ŀ×ĳ×ķ×Ĵ×¨×Ļ×Ŀ\":143728,\"besch\":143729,\"beschÃ¤ft\":143730,\"beschÃ¤ftig\":143731,\"×Ķ×¦×¢×Ķ\":143732,\"ĠÃģrea\":143733,\"ĠÐ·Ð°ÑıÐ²Ðº\":143734,\"Ä¹\":143735,\"ĠÐ»ÑİÐ±Ð¾Ð³Ð¾\":143736,\"Ġà¸¡\":143737,\"Ġà¸¡à¸ģà¸£\":143738,\"Ġà¸¡à¸ģà¸£à¸²à¸Ħà¸¡\":143739,\"ÑĦÐ¸Ð·\":143740,\"ÑĦÐ¸Ð·Ð¸ÑĩÐµÑģÐº\":143741,\"Ð¸Ð½ÑĦ\":143742,\"Ð¸Ð½ÑĦÐµÐº\":143743,\"Ð¸Ð½ÑĦÐµÐºÑĨÐ¸\":143744,\"Ø§ÙĦØ·\":143745,\"Ø§ÙĦØ·Ø§Ø¦Ùģ\":143746,\"ĠÐºÐ¾Ð»Ð»\":143747,\"ĠÐºÐ¾Ð»Ð»ÐµÐºÑĤÐ¸Ð²\":143748,\"ÐµÐ·Ð¶Ð°\":143749,\"ĠØ³Ø¨ØŃ\":143750,\"ĠØ³Ø¨ØŃØ§ÙĨ\":143751,\"ĠØ³Ø¨ØŃØ§ÙĨÙĩ\":143752,\"schlÃ¤\":143753,\"schlÃ¤ge\":143754,\"ĠÐ´Ð¸\":143755,\"ĠÐ´Ð¸Ð°Ð³\":143756,\"ĠÐ´Ð¸Ð°Ð³Ð½Ð¾ÑģÑĤ\":143757,\"ĠÐ¾ÑĤÐ¼ÐµÑĤÐ¸ÑĤÑĮ\":143758,\"Ð¢Ð¬\":143759,\"ĠØ§ÙĦØ¯Ø±\":143760,\"ĠØ§ÙĦØ¯Ø±Ø§Ø³ÙĬ\":143761,\"×¢×¦×ŀ\":143762,\"×¢×¦×ŀ×Ĳ×ķ×ª\":143763,\"ĠdÃ©march\":143764,\"ĠdÃ©marche\":143765,\"Ġ×ĺ×ķ×¢\":143766,\"Ġ×ĺ×ķ×¢×Ł\":143767,\"ĠfuncionÃ¡rios\":143768,\"á»µ\":143769,\"×ľ×Ľ×Ĳ\":143770,\"×ľ×Ľ×Ĳ×ķ×¨×Ķ\":143771,\"à¸ĭà¹Ī\":143772,\"à¸ĭà¹Īà¸Ńà¸¡\":143773,\"ĠÑĩÑĥÐ²\":143774,\"ĠÑĩÑĥÐ²ÑģÑĤÐ²Ð¾\":143775,\"âĸ¼\":143776,\"Ð¿ÑĥÑī\":143777,\"Ð¿ÑĥÑīÐµÐ½\":143778,\"ĠÐ¼ÐµÑĢ\":143779,\"ĠÐ¼ÐµÑĢÐ¾Ð¿\":143780,\"ĠÐ¼ÐµÑĢÐ¾Ð¿ÑĢÐ¸\":143781,\"ĠÐ¼ÐµÑĢÐ¾Ð¿ÑĢÐ¸ÑıÑĤÐ¸Ñı\":143782,\"ĠuÃ§u\":143783,\"ĠuÃ§uÅŁ\":143784,\"ãĤĴåĪ©çĶ¨ãģĻãĤĭ\":143785,\"aÄŁ\":143786,\"aÄŁlÄ±\":143787,\"ìĺĪìĪł\":143788,\"à¹ģà¸¢à¹Ī\":143789,\"ĠØ§ÙĦÙĥÙħ\":143790,\"ĠØ§ÙĦÙĥÙħØ¨ÙĬ\":143791,\"ĠØ§ÙĦÙĥÙħØ¨ÙĬÙĪØªØ±\":143792,\"ØªÙĪÙĬ\":143793,\"ØªÙĪÙĬØªØ±\":143794,\"à¹Ģà¸Ĭà¸µà¹Īà¸¢à¸§\":143795,\"à¹Ģà¸Ĭà¸µà¹Īà¸¢à¸§à¸Ĭà¸²\":143796,\"à¹Ģà¸Ĭà¸µà¹Īà¸¢à¸§à¸Ĭà¸²à¸į\":143797,\"á»Ķ\":143798,\"Ġhiáº¿m\":143799,\"Ø°Ø§ÙĥØ±Ø©\":143800,\"Ġ×Ķ×ŀ×Ļ×ķ×Ĺ×ĵ\":143801,\"ĠìĪľ\":143802,\"ĠìĪľê°Ħ\":143803,\"ĠKÄ±\":143804,\"ĠKÄ±sa\":143805,\"ĠgeleceÄŁi\":143806,\"Ð¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°\":143807,\"Ð¿ÑĢÐ¾ÑĦÐµÑģÑģÐ¸Ð¾Ð½Ð°Ð»\":143808,\"ĠogÃ³\":143809,\"ĠogÃ³le\":143810,\"ĠgÅĤÃ³w\":143811,\"ĠgÅĤÃ³wne\":143812,\"ĠÑģÑĤÐ¸Ð»ÑĮ\":143813,\"×Ĳ×¤×ľ\":143814,\"×Ĳ×¤×ľ×Ļ×§\":143815,\"×Ĳ×¤×ľ×Ļ×§×¦×Ļ×Ķ\":143816,\"à¸ªà¸¡à¸²à¸£à¹Į\":143817,\"à¸ªà¸¡à¸²à¸£à¹Įà¸Ĺ\":143818,\"à¸ªà¸¡à¸²à¸£à¹Įà¸Ĺà¹Ĥà¸Ł\":143819,\"à¸ªà¸¡à¸²à¸£à¹Įà¸Ĺà¹Ĥà¸Łà¸Ļ\":143820,\"ĠthÃ¡nh\":143821,\"ÐŁÐ¾Ð´\":143822,\"ÐŁÐ¾Ð´ÑĢÐ¾Ð±\":143823,\"ÐŁÐ¾Ð´ÑĢÐ¾Ð±Ð½ÐµÐµ\":143824,\"ĠØ§ÙĦØªÙĪÙĨ\":143825,\"ĠØ§ÙĦØªÙĪÙĨØ³ÙĬ\":143826,\"ĠbahÃ§e\":143827,\"à¹ģà¸ģà¹īà¸Ľà¸±à¸įà¸«à¸²\":143828,\"Ã©ducation\":143829,\"europ\":143830,\"europÃ¤\":143831,\"europÃ¤ische\":143832,\"ĠKsi\":143833,\"ĠKsiÄĻ\":143834,\"ĠëĦĺ\":143835,\"ĠëĦĺìĸ´\":143836,\"ĠvÃ¼c\":143837,\"ĠvÃ¼cud\":143838,\"Ġyayg\":143839,\"ĠyaygÄ±n\":143840,\"Ġniekt\":143841,\"ĠniektÃ³ry\":143842,\"ĠniektÃ³rych\":143843,\"ãģŃãģĩ\":143844,\"ĠÐºÐ°Ð¶\":143845,\"ĠÐºÐ°Ð¶ÐµÑĤÑģÑı\":143846,\"ÐºÐ°Ð¶\":143847,\"ÐºÐ°Ð¶ÐµÑĤ\":143848,\"ĠØ§ÙĦØ¯ÙĬÙħÙĤØ±Ø§\":143849,\"ĠØ§ÙĦØ¯ÙĬÙħÙĤØ±Ø§Ø·\":143850,\"ĠØ§ÙĦØ¯ÙĬÙħÙĤØ±Ø§Ø·ÙĬØ©\":143851,\"æŃ©\":143852,\"æŃ©ãģĦãģ¦\":143853,\"Ġvaz\":143854,\"Ġvazge\":143855,\"ĠvazgeÃ§\":143856,\"ĠÐ¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑĮ\":143857,\"ĠÐ¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑĮÐ½\":143858,\"ãĥĳãĤ¿\":143859,\"ãĥĳãĤ¿ãĥ¼ãĥ³\":143860,\"ĠëĬ\":143861,\"ĠëĬĲ\":143862,\"ĠëĬĲëĤĮ\":143863,\"ãģ¡ãĤĩãģĨ\":143864,\"ãģ¡ãĤĩãģĨãģ©\":143865,\"Ġà¸ģà¸£\":143866,\"Ġà¸ģà¸£à¸ģà¸İ\":143867,\"Ġà¸ģà¸£à¸ģà¸İà¸²à¸Ħà¸¡\":143868,\"ØªØ¬Ø¯ÙĬØ¯\":143869,\"ĠØ´Ø§ÙħÙĦ\":143870,\"à¸«à¸¥à¸±à¸ģà¸Ĳà¸²à¸Ļ\":143871,\"ĠÐ¼Ð°ÑĢÑĪ\":143872,\"ĠÐ¼Ð°ÑĢÑĪÑĢÑĥÑĤ\":143873,\"ĠvÃŃt\":143874,\"ĠvÃŃtima\":143875,\"ĠquizÃ¡\":143876,\"aygÄ±\":143877,\"×ĵ×ĳ×¨×Ļ×ķ\":143878,\"ĠÐ¸Ð·Ð´\":143879,\"ĠÐ¸Ð·Ð´ÐµÐ»Ð¸\":143880,\"ĠÐ¸Ð·Ð´ÐµÐ»Ð¸Ñı\":143881,\"Ð¿Ð»Ð°\":143882,\"Ð¿Ð»Ð°Ñĩ\":143883,\"Ð¿Ð»Ð°ÑĩÐ¸Ð²Ð°\":143884,\"ä»»ãģĽ\":143885,\"ĠÃ©quipÃ©\":143886,\"ä¹ħãģĹãģ\":143887,\"ä¹ħãģĹãģ¶\":143888,\"ä¹ħãģĹãģ¶ãĤĬ\":143889,\"ĠÐºÐ°ÑĤ\":143890,\"ĠÐºÐ°ÑĤÐ°Ð»\":143891,\"ĠÐºÐ°ÑĤÐ°Ð»Ð¾Ð³\":143892,\"à¸ªà¹īà¸¡\":143893,\"ĠÑĢÐµÐ¹\":143894,\"ĠÑĢÐµÐ¹ÑĤ\":143895,\"ĠÑĢÐµÐ¹ÑĤÐ¸Ð½Ð³\":143896,\"Ġthuyá»ģn\":143897,\"ĠØ§ÙĦÙħÙĤØ¯Ø³\":143898,\"espÃ¨re\":143899,\"ãģ«åħ¥ãģ£ãģŁ\":143900,\"à¸«à¸¡à¸²à¸¢à¹Ģà¸¥à¸Ĥ\":143901,\"×ª×Ĺ×ķ×©×ª\":143902,\"à¸Ļà¹Īà¸°\":143903,\"ĠpeÅĤ\":143904,\"ĠpeÅĤne\":143905,\"ĠpÃ©rd\":143906,\"ĠpÃ©rdida\":143907,\"à¸«à¸¡à¸§à¸Ķ\":143908,\"à¸«à¸¡à¸§à¸Ķà¸«à¸¡à¸¹à¹Ī\":143909,\"Ð¸ÑĩÐµÑģÐºÑĥÑİ\":143910,\"çµĤãĤı\":143911,\"çµĤãĤıãģ£ãģŁ\":143912,\"Ġ×Ĵ×ķ×Ĵ×ľ\":143913,\"à¸Ĺà¸³à¸Ħà¸§à¸²à¸¡\":143914,\"à¸Ĺà¸³à¸Ħà¸§à¸²à¸¡à¸ªà¸°à¸Ńà¸²à¸Ķ\":143915,\"HotÃ©is\":143916,\"ĠÐ·Ð°ÑĢ\":143917,\"ĠÐ·Ð°ÑĢÐµÐ³Ð¸ÑģÑĤ\":143918,\"ĠÐ·Ð°ÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ¸\":143919,\"ĠÐ·Ð°ÑĢÐµÐ³Ð¸ÑģÑĤÑĢÐ¸ÑĢÐ¾Ð²Ð°\":143920,\"ĠÑģÐ¾Ð±ÑĭÑĤÐ¸\":143921,\"ĠÑģÐ¾Ð±ÑĭÑĤÐ¸Ñı\":143922,\"Ġ×ĸ×Ľ×Ĳ\":143923,\"ÙħÙĨØ¸ÙĪÙħØ©\":143924,\"Ġ×Ķ×ŀ×¦\":143925,\"Ġ×Ķ×ŀ×¦×Ļ×Ĳ×ķ×ª\":143926,\"ÙħÙĥÙĪÙĨ\":143927,\"ÙħÙĥÙĪÙĨØ§Øª\":143928,\"ä¸ĬãģĮãĤĭ\":143929,\"ĠmÄĻ\":143930,\"ĠmÄĻsk\":143931,\"à¸«à¸£à¸·à¸Ńà¹Ģà¸Ľà¸¥à¹Īà¸²\":143932,\"ëĤ®\":143933,\"Ġnoktas\":143934,\"ĠnoktasÄ±\":143935,\"ĠÐ±Ð¾Ð»ÑĮÑĪÐ¸Ð¼\":143936,\"ĠÐ»ÑĥÑĩÑĪÐ¸Ñħ\":143937,\"Ø´ÙĩÙĬØ¯\":143938,\"à¸Ńà¸³à¸Ļ\":143939,\"à¸Ńà¸³à¸Ļà¸§à¸¢\":143940,\"à¸Ńà¸³à¸Ļà¸§à¸¢à¸Ħà¸§à¸²à¸¡\":143941,\"à¸Ńà¸³à¸Ļà¸§à¸¢à¸Ħà¸§à¸²à¸¡à¸ªà¸°à¸Ķà¸§à¸ģ\":143942,\"ĠÐµÐ²\":143943,\"ĠÐµÐ²ÑĢ\":143944,\"ĠÐµÐ²ÑĢÐ¾Ð¿\":143945,\"ĠÐµÐ²ÑĢÐ¾Ð¿ÐµÐ¹\":143946,\"à¸īà¸²à¸¢\":143947,\"ìĦŃ\":143948,\"ÙħÙģØ§\":143949,\"ÙħÙģØ§ÙĪØ¶\":143950,\"ÙħÙģØ§ÙĪØ¶Ø§Øª\":143951,\"ë¹Į\":143952,\"èµ¤ãģ¡ãĤĥãĤĵ\":143953,\"ĠÑĥÐ´Ð°Ð»Ð¾ÑģÑĮ\":143954,\"ĠÐ¥Ð¾ÑĤ\":143955,\"ĠÐ¥Ð¾ÑĤÑı\":143956,\"przedsiÄĻbiorc\":143957,\"ĠHÃ´m\":143958,\"íķĺìĺĢìĬµëĭĪëĭ¤\":143959,\"ĠÐ½Ð°Ð³\":143960,\"ĠÐ½Ð°Ð³ÑĢÑĥÐ·\":143961,\"ĠÐ½Ð°Ð³ÑĢÑĥÐ·Ðº\":143962,\"Ġ×ĳ×Ļ×ł×ľ×Ĳ×ķ×ŀ×Ļ\":143963,\"Ġê°ĢëĬ¥íķľ\":143964,\"ĠHá»¯u\":143965,\"à¸Ńà¸¸à¸Ķ\":143966,\"à¸Ńà¸¸à¸Ķà¸¡\":143967,\"×ª×ķ×¤\":143968,\"×ª×ķ×¤×¢×Ķ\":143969,\"ĠmiÅĤo\":143970,\"ĠmiÅĤoÅĽci\":143971,\"ksiÄħÅ¼\":143972,\"ksiÄħÅ¼ka\":143973,\"ĠØ§ÙĦÙĦØ¹Ø¨Ø©\":143974,\"à¸īà¸²à¸ģ\":143975,\"à¸ªà¸°à¸ªà¸¡\":143976,\"×ŀ×ª×¨\":143977,\"×ŀ×ª×¨×Ĺ×©\":143978,\"ĠlÃ©gÃ¨re\":143979,\"Ġ×ľ×¦×¤\":143980,\"Ġ×ľ×¦×¤×Ļ×Ķ\":143981,\"ĠÐ¸ÑģÑĤÐ¾ÑĢÐ¸Ñı\":143982,\"ĠãĥĪãĥ©\":143983,\"ĠãĥĪãĥ©ãĥĥãĤ¯\":143984,\"ĠãĥĪãĥ©ãĥĥãĤ¯ãĥĲãĥĥãĤ¯\":143985,\"ĠÐºÐ°\":143986,\"ĠÐºÐ°ÑĦÐµ\":143987,\"×ŀ×¡×ŀ×ļ\":143988,\"ĠcÃ¼m\":143989,\"ĠcÃ¼mle\":143990,\"à¹Ģà¸Ħà¸¥à¸·à¹Īà¸Ńà¸Ļà¹Ħà¸«à¸§\":143991,\"ãģĬãģĿ\":143992,\"ãģĬãģĿãĤīãģı\":143993,\"ìŀĲëıĻ\":143994,\"ìŀĲëıĻì°¨\":143995,\"à¸Ńà¸±à¸ķ\":143996,\"à¸Ńà¸±à¸ķà¹Ĥà¸Ļ\":143997,\"à¸Ńà¸±à¸ķà¹Ĥà¸Ļà¸¡à¸±\":143998,\"à¸Ńà¸±à¸ķà¹Ĥà¸Ļà¸¡à¸±à¸ķà¸´\":143999,\"ĠÅŁik\":144000,\"ĠÅŁikay\":144001,\"ĠÅŁikayet\":144002,\"extrÃªme\":144003,\"krÃ¤\":144004,\"krÃ¤fte\":144005,\"ëĤĻ\":144006,\"íķĳ\":144007,\"ì²Ļ\":144008,\"íĺĪ\":144009,\"ì°į\":144010,\"âĻ¡\":144011,\"ìŀĶ\":144012,\"ë¢°\":144013,\"íĿĶ\":144014,\"íĿĲ\":144015,\"âĩĴ\":144016,\"ë§Ľ\":144017,\"ìĬĪ\":144018,\"á»Ĵ\":144019,\"ìĺµ\":144020,\"âĹİ\":144021,\"íĤ¨\":144022,\"ê¿Ī\":144023,\"ìĪ¨\":144024,\"ìĽ¨\":144025,\"ë§¥\":144026,\"ï½Ģ\":144027,\"ï¼ª\":144028,\"áº¨\":144029,\"ãħİ\":144030,\"ÑĹ\":144031,\"ìĦ¬\":144032,\"ì¹¼\":144033,\"ï¼¶\":144034,\"ìĽł\":144035,\"ëŁ´\":144036,\"Åĥ\":144037,\"ëĤ¼\":144038,\"ëĭĲ\":144039,\"âĢ¹\":144040,\"ë¦Ń\":144041,\"ì§Ĳ\":144042,\"âĢ¤\":144043,\"Ãħ\":144044,\"ëľ¨\":144045,\"íĦ¸\":144046,\"íľĺ\":144047,\"ê²ģ\":144048,\"ë´ħ\":144049,\"Ãĺ\":144050,\"ëŃĶ\":144051,\"ëĺĳ\":144052,\"âĹĩ\":144053,\"ìĹĺ\":144054,\"ï»´\":144055,\"ë§¹\":144056,\"ï¾Ŀ\":144057,\"ìĬ·\":144058,\"íĥķ\":144059,\"ï¼ł\":144060,\"ì»´\":144061,\"ëłĮ\":144062,\"ì½ľ\":144063,\"ï»¹\":144064,\"ãħł\":144065,\"ì¡¸\":144066,\"ëħ¹\":144067,\"âĤº\":144068,\"âĸ¶\":144069,\"íĥĲ\":144070,\"êµ´\":144071,\"íĳ¸\":144072,\"ÑĶ\":144073,\"íĶ½\":144074,\"Ðħ\":144075,\"ë°¤\":144076,\"Ôģ\":144077,\"ì²¨\":144078,\"ì¶ĺ\":144079,\"ë²Ĺ\":144080,\"ë©¸\":144081,\"ï¼»\":144082,\"ï¼½\":144083,\"ï¼·\":144084,\"ì°Į\":144085,\"ÃĴ\":144086,\"íı´\":144087,\"ìĵ¸\":144088,\"ì´Į\":144089,\"ëģĶ\":144090,\"ëĶ©\":144091,\"ëĩĮ\":144092,\"ë©Ģ\":144093,\"ë²¨\":144094,\"ï¼µ\":144095,\"ë§¡\":144096,\"ëĭ«\":144097,\"à¸¿\":144098,\"ãģ±\":144099,\"ìĩ¼\":144100,\"ìºł\":144101,\"ë®¤\":144102,\"ê±±\":144103,\"ì»¬\":144104,\"âĦĥ\":144105,\"ëĶ±\":144106,\"ëĥĪ\":144107,\"ìĭ±\":144108,\"íĻĪ\":144109,\"ëŀĲ\":144110,\"ìħĢ\":144111,\"ìłł\":144112,\"ÐĨ\":144113,\"ëłī\":144114,\"ï½ħ\":144115,\"ï½ı\":144116,\"íĻĢ\":144117,\"ëĽ°\":144118,\"á»®\":144119,\"íĤ¹\":144120,\"ê½ĥ\":144121,\"ï»¤\":144122,\"ïºĶ\":144123,\"êº¼\":144124,\"ìķī\":144125,\"âĻ¦\":144126,\"ï½ģ\":144127,\"ìĵ´\":144128,\"ãĢī\":144129,\"ì°®\":144130,\"ì¤ĺ\":144131,\"á»ª\":144132,\"ëģĦ\":144133,\"ëĲ¨\":144134,\"ìķĮ\":144135,\"íĿĺ\":144136,\"íħĲ\":144137,\"ãĢĪ\":144138,\"ê²ª\":144139,\"ëĭ¥\":144140,\"ê²¼\":144141,\"á»Į\":144142,\"ë§¨\":144143,\"ëģĬ\":144144,\"ë²¤\":144145,\"ëĳĶ\":144146,\"íĿ¡\":144147,\"á»¬\":144148,\"ë¬ĺ\":144149,\"ãģī\":144150,\"ëŀ«\":144151,\"íĶĪ\":144152,\"íħį\":144153,\"ìŀĥ\":144154,\"ï½ī\":144155,\"ìģľ\":144156,\"âĸ½\":144157,\"ë¬»\":144158,\"âĸ³\":144159,\"ï¼¸\":144160,\"ìģĺ\":144161,\"ì¶°\":144162,\"ìĬ´\":144163,\"ìķ±\":144164,\"ìĩĦ\":144165,\"áº®\":144166,\"ï´¿\":144167,\"ï´¾\":144168,\"âĤ½\":144169,\"ëĦĵ\":144170,\"ë£©\":144171,\"ì³¤\":144172,\"ê´ľ\":144173,\"ÃĻ\":144174,\"á»ľ\":144175,\"ï¿£\":144176,\"ëĵŃ\":144177,\"ë©ĺ\":144178,\"ê»´\":144179,\"ëł´\":144180,\"Ðĥ\":144181,\"ë¬µ\":144182,\"ì§Ŀ\":144183,\"ãģº\":144184,\"ðŁĺĤ\":144185,\"ëŀ¬\":144186,\"ìłĬ\":144187,\"ê´Ħ\":144188,\"ìŀĬ\":144189,\"íŀĮ\":144190,\"ìĦ¯\":144191,\"âĪĢ\":144192,\"âĸ¡\":144193,\"ëĢĮ\":144194,\"ëŀĻ\":144195,\"ï½ĥ\":144196,\"áº¶\":144197,\"ï¾Ħ\":144198,\"ïºĺ\":144199,\"ë¹¼\":144200,\"ÃĮ\":144201,\"âĸ·\":144202,\"ê¸į\":144203,\"ë©ĭ\":144204,\"ãģĥ\":144205,\"ìĺĨ\":144206,\"ìĺ®\":144207,\"ëª¬\":144208,\"ë¡¤\":144209,\"ëł¬\":144210,\"ëĬ¦\":144211,\"âĸª\":144212,\"ì¼ĵ\":144213,\"ìľĪ\":144214,\"ì§§\":144215,\"ï½½\":144216,\"ëĥī\":144217,\"ï¾Į\":144218,\"ëĺĲ\":144219,\"ï¼ĥ\":144220,\"á»Ħ\":144221,\"ì´¬\":144222,\"ì¶¤\":144223,\"ï¼¹\":144224,\"ï»Ń\":144225,\"âĤ«\":144226,\"ï½ĩ\":144227,\"ìĺ·\":144228,\"ëĸ¨\":144229,\"âī«\":144230,\"ë¦¿\":144231,\"âľ¨\":144232,\"Ù±\":144233,\"ì¯¤\":144234,\"ê¹Ķ\":144235,\"ðŁĺĬ\":144236,\"ìĪ«\":144237,\"ê³±\":144238,\"êµ³\":144239,\"ï½ĭ\":144240,\"à¸Į\":144241,\"Äł\":144242,\"ëĶ¸\":144243,\"ë°ĳ\":144244,\"ìħĭ\":144245,\"íİ´\":144246,\"âľħ\":144247,\"íĥĳ\":144248,\"ëĪĩ\":144249,\"íı¼\":144250,\"ðŁĺį\":144251,\"ìĺĽ\":144252,\"ï»£\":144253,\"Ñĺ\":144254,\"ì©Į\":144255,\"ë¦ħ\":144256,\"ìĿį\":144257,\"ï½¸\":144258,\"ëįľ\":144259,\"ãģħ\":144260,\"íİ¼\":144261,\"ëĭĿ\":144262,\"ë¿Į\":144263,\"ì¼°\":144264,\"ìĭ«\":144265,\"ë°¥\":144266,\"íĽĮ\":144267,\"ì¨Į\":144268,\"ë¹Ļ\":144269,\"ï½İ\":144270,\"ë´Ħ\":144271,\"ìĦ¹\":144272,\"ï½²\":144273,\"ìĮĵ\":144274,\"Òĳ\":144275,\"ë°į\":144276,\"ëłĢ\":144277,\"íĨ¤\":144278,\"ï½¯\":144279,\"ë¤Ħ\":144280,\"ê½¤\":144281,\"ï½Ĵ\":144282,\"ìķ¨\":144283,\"ï½¼\":144284,\"ê¹Ĳ\":144285,\"íģĲ\":144286,\"âĦĸ\":144287,\"ë§º\":144288,\"ïº®\":144289,\"ëħģ\":144290,\"ê²¸\":144291,\"ï»ł\":144292,\"íĬľ\":144293,\"Å¹\":144294,\"ë¥Ń\":144295,\"ëĪī\":144296,\"ï½Ķ\":144297,\"íĮ¬\":144298,\"ìŀĩ\":144299,\"ï¬ģ\":144300,\"ï»¨\":144301,\"ëĳ¥\":144302,\"ëŀĦ\":144303,\"Ù¬\":144304,\"íĭ´\":144305,\"ìŀī\":144306,\"Ú¾\":144307,\"ìĽħ\":144308,\"ï»®\":144309,\"ëĭī\":144310,\"âīª\":144311,\"âĹĦ\":144312,\"ëĪĮ\":144313,\"íĽ¼\":144314,\"ì¤į\":144315,\"Å¸\":144316,\"ì¤¬\":144317,\"ì¾Į\":144318,\"ï½ĵ\":144319,\"ï¾Ĭ\":144320,\"ðŁı»\":144321,\"ï¾ī\":144322,\"Ðģ\":144323,\"íĺĲ\":144324,\"ï¾Ļ\":144325,\"ê¼¬\":144326,\"íŀĲ\":144327,\"âĢ¥\":144328,\"ëŁŃ\":144329,\"ë§ŀ\":144330,\"ìĥ¤\":144331,\"ïºĴ\":144332,\"íĭ±\":144333,\"ë½ĳ\":144334,\"Ãķ\":144335,\"âĪļ\":144336,\"ëĤĦ\":144337,\"ê¹Ŀ\":144338,\"ëĨĪ\":144339,\"áºº\":144340,\"ìħĪ\":144341,\"ìĮį\":144342,\"âĢ¡\":144343,\"ï¼±\":144344,\"ìģ¨\":144345,\"âĺº\":144346,\"ëĴ·\":144347,\"ìĺ³\":144348,\"ðŁĳį\":144349,\"ëª½\":144350,\"ëĤŃ\":144351,\"ïºŃ\":144352,\"ë©Ī\":144353,\"á»Ī\":144354,\"íķĢ\":144355,\"ëĭĻ\":144356,\"ë¦ĩ\":144357,\"ìķ¤\":144358,\"ìį¼\":144359,\"ãĥµ\":144360,\"Ñ£\":144361,\"ìľĹ\":144362,\"âŃĲ\":144363,\"ï¾ĺ\":144364,\"íĹ¬\":144365,\"ê¾¼\":144366,\"ìķĹ\":144367,\"ï»Į\":144368,\"ê±·\":144369,\"ëħķ\":144370,\"ë¡±\":144371,\"ìķĬ\":144372,\"ï¾Ģ\":144373,\"ìĩł\":144374,\"íĮ©\":144375,\"ïºª\":144376,\"ë§Ļ\":144377,\"ï¼¿\":144378,\"ê¿Ķ\":144379,\"íİľ\":144380,\"ë£¸\":144381,\"íĶĶ\":144382,\"ï»³\":144383,\"ëıķ\":144384,\"ìĭ¼\":144385,\"á»İ\":144386,\"ë§ĺ\":144387,\"ì¢ĭ\":144388,\"íĨ¡\":144389,\"ï½±\":144390,\"íĿĳ\":144391,\"á»¸\":144392,\"ì¦Į\":144393,\"ì¹¸\":144394,\"ëŃĺ\":144395,\"ï¾Ĺ\":144396,\"ï»ĭ\":144397,\"íĬĢ\":144398,\"ë¥Ļ\":144399,\"ì½©\":144400,\"ëģĹ\":144401,\"ëį´\":144402,\"ìħľ\":144403,\"Â¸\":144404,\"ë»Ĳ\":144405,\"ìĥµ\":144406,\"ê²Ĳ\":144407,\"ëĵ¬\":144408,\"ë£°\":144409,\"ãħĭ\":144410,\"ìĹī\":144411,\"á»ĸ\":144412,\"ëĦĮ\":144413,\"ï½¶\":144414,\"ë´ĩ\":144415,\"ëĤ³\":144416,\"ãĤľ\":144417,\"ëĸ»\":144418,\"íİĢ\":144419,\"ëį©\":144420,\"íķ¸\":144421,\"Ã·\":144422,\"ê¼¼\":144423,\"ëĶľ\":144424,\"ë°´\":144425,\"ë©į\":144426,\"âĹ¯\":144427,\"ìĹĳ\":144428,\"ìĻ¼\":144429,\"ïºĳ\":144430,\"ë¶ķ\":144431,\"ë¡¬\":144432,\"ï½Į\":144433,\"íĨ¨\":144434,\"ïº´\":144435,\"ëłĺ\":144436,\"ê°¤\":144437,\"ìĪ²\":144438,\"Ñĵ\":144439,\"ìħī\":144440,\"ï»ĵ\":144441,\"ëĪĶ\":144442,\"ëį§\":144443,\"âĢ¼\":144444,\"ï»²\":144445,\"ê°±\":144446,\"ê¿Ģ\":144447,\"ëĭ·\":144448,\"áº¸\":144449,\"áºª\":144450,\"ÆĴ\":144451,\"ëį¤\":144452,\"ìĪŃ\":144453,\"ï½Ĥ\":144454,\"ï½Ī\":144455,\"Åł\":144456,\"ë£¬\":144457,\"Ñµ\":144458,\"ëĸ¡\":144459,\"ëĥĦ\":144460,\"ìĦ°\":144461,\"ëĵĪ\":144462,\"ï¾ĥ\":144463,\"ëĩ¨\":144464,\"ï½Ĳ\":144465,\"êµ½\":144466,\"ìĹ½\":144467,\"ëĤĢ\":144468,\"ë¬¶\":144469,\"ï½·\":144470,\"ìıŁ\":144471,\"íĺĶ\":144472,\"ê¼Ī\":144473,\"ëģĪ\":144474,\"ì¥Ĳ\":144475,\"ïºĹ\":144476,\"ÄĮ\":144477,\"ëĪł\":144478,\"ëĸ¼\":144479,\"íĢ´\":144480,\"âī¥\":144481,\"ëĭŃ\":144482,\"ì±Ļ\":144483,\"ê»ı\":144484,\"ë©¤\":144485,\"ìĥĺ\":144486,\"ëį®\":144487,\"ë£¡\":144488,\"ìĤ½\":144489,\"ãĪľ\":144490,\"Ä¨\":144491,\"âĢ§\":144492,\"ï½º\":144493,\"Ä£\":144494,\"ì¦ī\":144495,\"ï¼¼\":144496,\"Û©\":144497,\"âĪĻ\":144498,\"ë°ı\":144499,\"ë¹ħ\":144500,\"ðŁĺĽ\":144501,\"íĪ´\":144502,\"ðŁĴķ\":144503,\"ãĢĴ\":144504,\"ìŀĺ\":144505,\"ïº¤\":144506,\"ï½ĸ\":144507,\"ë©ľ\":144508,\"ë²¼\":144509,\"ëĿĦ\":144510,\"ëļľ\":144511,\"ï»ĺ\":144512,\"ìĥĮ\":144513,\"ï½Ħ\":144514,\"ì©Ķ\":144515,\"ï½Ļ\":144516,\"ïº©\":144517,\"Ûŀ\":144518,\"âĺİ\":144519,\"ìł¤\":144520,\"ëĲ©\":144521,\"ÅĿ\":144522,\"âŀ¡\":144523,\"ï»§\":144524,\"Ðı\":144525,\"ì«ĵ\":144526,\"ê³½\":144527,\"Éĳ\":144528,\"ãĥ²\":144529,\"ëĤ«\":144530,\"ë¦ī\":144531,\"ì¢ģ\":144532,\"ë°Ń\":144533,\"ðŁĺģ\":144534,\"ë¹µ\":144535,\"ì²©\":144536,\"ì»µ\":144537,\"ðŁĺĺ\":144538,\"ë±ħ\":144539,\"âīĪ\":144540,\"ë¹ļ\":144541,\"ï»ľ\":144542,\"ðŁĻı\":144543,\"íģ°\":144544,\"ìĦŀ\":144545,\"ï¾ļ\":144546,\"ìĺ¹\":144547,\"ë¼Ī\":144548,\"ëĤ¯\":144549,\"ëŀ©\":144550,\"íļ¡\":144551,\"ï½ķ\":144552,\"íĥĵ\":144553,\"ëĿł\":144554,\"ê³ģ\":144555,\"ëĵĢ\":144556,\"ìĹł\":144557,\"ï¼º\":144558,\"ë§ĳ\":144559,\"ëĭ¿\":144560,\"ì¿¨\":144561,\"ãİ¡\":144562,\"ÐĬ\":144563,\"íĦ±\":144564,\"Å¨\":144565,\"ïº³\":144566,\"ï¾ı\":144567,\"âĭħ\":144568,\"ê¼´\":144569,\"âī¤\":144570,\"íĮģ\":144571,\"Î©\":144572,\"ê¶¤\":144573,\"ìĪį\":144574,\"âľ¿\":144575,\"ì½¤\":144576,\"ëĪħ\":144577,\"íĨ±\":144578,\"ãħľ\":144579,\"áĲħ\":144580,\"ÅĴ\":144581,\"ðŁĳī\":144582,\"ï»¦\":144583,\"Ðª\":144584,\"ë¥ľ\":144585,\"íķ«\":144586,\"ï¾ĭ\":144587,\"âĻ«\":144588,\"ê¹ľ\":144589,\"ë°¸\":144590,\"ëĶĺ\":144591,\"íĿī\":144592,\"ï¾ģ\":144593,\"ï¾Ľ\":144594,\"ëłĽ\":144595,\"ê²¹\":144596,\"ì¿¼\":144597,\"ï»¬\":144598,\"âŀ¤\":144599,\"ðŁĻģ\":144600,\"ïºł\":144601,\"ëĨ¨\":144602,\"ë¯¹\":144603,\"ê¸ĭ\":144604,\"ë»Ķ\":144605,\"ê¹ĥ\":144606,\"ëĳĳ\":144607,\"íĭ¸\":144608,\"íİĻ\":144609,\"âŀĸ\":144610,\"ãĥ½\":144611,\"ì§ļ\":144612,\"ï½¬\":144613,\"ï»¥\":144614,\"íĮ½\":144615,\"âĢĴ\":144616,\"ìĮĢ\":144617,\"ìŃī\":144618,\"ëļ±\":144619,\"ãĤŀ\":144620,\"íĭĪ\":144621,\"ãĤĲ\":144622,\"ëīĺ\":144623,\"Î£\":144624,\"ê³°\":144625,\"ë¹Ĺ\":144626,\"ï¾İ\":144627,\"ðŁĺŃ\":144628,\"íĿł\":144629,\"ìĹ¿\":144630,\"ê°ļ\":144631,\"ì¤Į\":144632,\"ë§µ\":144633,\"ï½³\":144634,\"ãģ¢\":144635,\"ï»Ĺ\":144636,\"âī¦\":144637,\"Ú¤\":144638,\"ëłģ\":144639,\"ê¼½\":144640,\"ï»«\":144641,\"âī§\":144642,\"ì´Ľ\":144643,\"ìłĿ\":144644,\"áº°\":144645,\"âĻ£\":144646,\"ìºĺ\":144647,\"âĪĩ\":144648,\"ê²ī\":144649,\"ë°Ł\":144650,\"ï»Ķ\":144651,\"íĸĩ\":144652,\"âĸĴ\":144653,\"ðŁĳı\":144654,\"Ãŀ\":144655,\"ðŁĺĨ\":144656,\"ïº¼\":144657,\"âĿĹ\":144658,\"ìºĶ\":144659,\"ì¹©\":144660,\"ëĸ¤\":144661,\"ëĥħ\":144662,\"âĶľ\":144663,\"ï½»\":144664,\"ÎĶ\":144665,\"áĥ¦\":144666,\"ìŀİ\":144667,\"âĺĢ\":144668,\"âĪ¼\":144669,\"ðŁĶ¥\":144670,\"ë°Į\":144671,\"ìłĸ\":144672,\"íĹĽ\":144673,\"Îķ\":144674,\"ïºĥ\":144675,\"ë¶ī\":144676,\"âĪŀ\":144677,\"íĥŃ\":144678,\"Ãĭ\":144679,\"âģĦ\":144680,\"ãħĩ\":144681,\"ëĦ¥\":144682,\"ëĭ®\":144683,\"ëł·\":144684,\"íĮĿ\":144685,\"ìº¡\":144686,\"ë·Ķ\":144687,\"ì©į\":144688,\"íĤ´\":144689,\"ëļ«\":144690,\"âĵĴ\":144691,\"íķį\":144692,\"âĻĤ\":144693,\"ï¾Ĩ\":144694,\"âĨ©\":144695,\"ìį©\":144696,\"ïºķ\":144697,\"íĿĻ\":144698,\"Ñľ\":144699,\"íĤ·\":144700,\"íĿ°\":144701,\"íĥ±\":144702,\"ëķĲ\":144703,\"ï¾Ĵ\":144704,\"×ĥ\":144705,\"ëĮĦ\":144706,\"ìĺ´\":144707,\"ìķµ\":144708,\"ê¹¥\":144709,\"ëŀŃ\":144710,\"ìª¼\":144711,\"ãİĿ\":144712,\"ðŁĺħ\":144713,\"ëıĭ\":144714,\"ëª«\":144715,\"ïº¸\":144716,\"ë®¬\":144717,\"ë²ħ\":144718,\"ëĳł\":144719,\"ìħ°\":144720,\"ì»·\":144721,\"ëĶª\":144722,\"ëħĶ\":144723,\"ãħ¡\":144724,\"ìĶ»\":144725,\"íķı\":144726,\"ëį±\":144727,\"ïº¨\":144728,\"ï¾į\":144729,\"ï½µ\":144730,\"ì¢Ģ\":144731,\"íİĮ\":144732,\"ï»°\":144733,\"ïº£\":144734,\"Æ£\":144735,\"ðŁ¤£\":144736,\"ï·º\":144737,\"ëĤļ\":144738,\"âĭĨ\":144739,\"ë³į\":144740,\"ðŁĺĦ\":144741,\"ìĸĢ\":144742,\"ìĻł\":144743,\"ëĨĶ\":144744,\"íĹ¨\":144745,\"ï»Ľ\":144746,\"ï»Ŀ\":144747,\"á»¶\":144748,\"ìĸĺ\":144749,\"ìİĦ\":144750,\"ÚĨ\":144751,\"ï»ŀ\":144752,\"ëĢĲ\":144753,\"ê²Ķ\":144754,\"ï»µ\":144755,\"âĹ¦\":144756,\"íļŁ\":144757,\"ê¹ģ\":144758,\"ê°ĵ\":144759,\"ëĶ´\":144760,\"ìıĺ\":144761,\"ëļĿ\":144762,\"á»ł\":144763,\"ëŀ´\":144764,\"ëĦī\":144765,\"âĺŀ\":144766,\"ï½ĺ\":144767,\"Å½\":144768,\"ë¦İ\":144769,\"âĸ¬\":144770,\"ëŃī\":144771,\"âĩĽ\":144772,\"ìį¬\":144773,\"ïºŁ\":144774,\"Ëľ\":144775,\"ë¶ĵ\":144776,\"ìĽ°\":144777,\"Åľ\":144778,\"ëŃĩ\":144779,\"á»²\":144780,\"Ëļ\":144781,\"ëķĢ\":144782,\"âĺĳ\":144783,\"ðŁı¼\":144784,\"ìĸ½\":144785,\"âĮĴ\":144786,\"Ðİ\":144787,\"É¾\":144788,\"íĮ¡\":144789,\"ï¾ħ\":144790,\"ìŀŃ\":144791,\"ï½¨\":144792,\"ì¹«\":144793,\"ìľĮ\":144794,\"ÒĽ\":144795,\"êµ¿\":144796,\"ëĭ¦\":144797,\"âĶĶ\":144798,\"ï¾ĳ\":144799,\"ì§ĸ\":144800,\"ìºĦ\":144801,\"ãĢĥ\":144802,\"Ê¼\":144803,\"ê²Ł\":144804,\"ï½§\":144805,\"Ä¢\":144806,\"íİł\":144807,\"ë§·\":144808,\"ê°ĩ\":144809,\"ìĭ¹\":144810,\"ðŁĴ¦\":144811,\"ï¾ľ\":144812,\"ëĬĻ\":144813,\"ë²¡\":144814,\"Å¿\":144815,\"ðŁĺĭ\":144816,\"ðŁĴª\":144817,\"ì¿Ħ\":144818,\"ë©ķ\":144819,\"ìŃ¤\":144820,\"ëĬĦ\":144821,\"ðŁĮ¸\":144822,\"ãĤĿ\":144823,\"Çİ\":144824,\"ï½ļ\":144825,\"ÄĹ\":144826,\"ëģĵ\":144827,\"ê¶Ĳ\":144828,\"áµī\":144829,\"ãĥĤ\":144830,\"ê»į\":144831,\"ðŁĺ¦\":144832,\"ãĢĿ\":144833,\"ðŁ¤Ĺ\":144834,\"ÑŁ\":144835,\"ìĹİ\":144836,\"âľĮ\":144837,\"ìīĲ\":144838,\"ÃĨ\":144839,\"íĹĲ\":144840,\"ðŁİī\":144841,\"Îĳ\":144842,\"ï½Ń\":144843,\"ðŁĴĻ\":144844,\"ìĽ¬\":144845,\"íĢĺ\":144846,\"ï»¢\":144847,\"ðŁĺİ\":144848,\"íĳ¼\":144849,\"íĿ©\":144850,\"ï»Ħ\":144851,\"íħĢ\":144852,\"ëłĲ\":144853,\"ì¥¬\":144854,\"Ðĭ\":144855,\"ìĥ·\":144856,\"ëľ¬\":144857,\"ðŁĺĥ\":144858,\"ëĦ¬\":144859,\"ë¥¨\":144860,\"ìĽį\":144861,\"ï½Ĩ\":144862,\"ï½´\":144863,\"ãĥħ\":144864,\"Ãı\":144865,\"ï»ª\":144866,\"âĻł\":144867,\"ëĬ¬\":144868,\"ë±Ģ\":144869,\"ë°ĭ\":144870,\"ìĥĢ\":144871,\"ï½¾\":144872,\"ëĤ±\":144873,\"ì»¸\":144874,\"ðŁĴĸ\":144875,\"ðŁĳĮ\":144876,\"Ñŀ\":144877,\"ì§±\":144878,\"ËĨ\":144879,\"ðŁĵļ\":144880,\"âŃķ\":144881,\"ï¬Ĥ\":144882,\"ï»¡\":144883,\"ëĳ¬\":144884,\"íĪ¼\":144885,\"âĸ¸\":144886,\"ê°¯\":144887,\"ê¹ħ\":144888,\"ï½®\":144889,\"ëĺ¥\":144890,\"Ä¡\":144891,\"íĮŁ\":144892,\"ÐĮ\":144893,\"ìĨŁ\":144894,\"ïºĵ\":144895,\"ï»¼\":144896,\"ÃĽ\":144897,\"ãĥ¾\":144898,\"ëĮĵ\":144899,\"íĴĭ\":144900,\"ìķĵ\":144901,\"ï½¹\":144902,\"ëĤ¡\":144903,\"ðŁĳĩ\":144904,\"áº¼\":144905,\"ãĢŁ\":144906,\"ðŁĮŁ\":144907,\"íĥł\":144908,\"ãĢĨ\":144909,\"âĢŁ\":144910,\"ë¸Ĳ\":144911,\"ðŁĮ¹\":144912,\"ìł¼\":144913,\"ðŁĵĮ\":144914,\"ìĶ¬\":144915,\"âĹĢ\":144916,\"ðŁĴĵ\":144917,\"ê¹İ\":144918,\"ìĤĲ\":144919,\"ìĶĮ\":144920,\"ÑĽ\":144921,\"âĶĪ\":144922,\"ë²³\":144923,\"ãİŀ\":144924,\"Õ¡\":144925,\"íĤµ\":144926,\"ðŁ¤Ķ\":144927,\"ëĢĶ\":144928,\"ìĬĲ\":144929,\"íĻī\":144930,\"âľ¦\":144931,\"ëľ¯\":144932,\"ìł¯\":144933,\"ëĶ§\":144934,\"Î¦\":144935,\"ËĪ\":144936,\"ìī¼\":144937,\"âĹĬ\":144938,\"ëľ©\":144939,\"ëľ°\":144940,\"ï¾Ĳ\":144941,\"ë¿Ķ\":144942,\"ìĹ®\":144943,\"ì·Į\":144944,\"ïº§\":144945,\"ÎĴ\":144946,\"ëµĻ\":144947,\"ï»Ĭ\":144948,\"ì°Ķ\":144949,\"íİĦ\":144950,\"ðŁĴĹ\":144951,\"áº´\":144952,\"ì°¢\":144953,\"íľ¼\":144954,\"ê½Ĥ\":144955,\"ì±Ķ\":144956,\"ìī´\":144957,\"âĸ¾\":144958,\"íĪ°\":144959,\"ëĭĽ\":144960,\"âĿ£\":144961,\"ï½ª\":144962,\"ðŁĴľ\":144963,\"Ëĺ\":144964,\"ãħ¤\":144965,\"âĨĹ\":144966,\"íĸĦ\":144967,\"âĻ¬\":144968,\"ìķ°\":144969,\"ïºľ\":144970,\"âī¡\":144971,\"ãĢĵ\":144972,\"ìĳ¥\":144973,\"íĮį\":144974,\"íīģ\":144975,\"ë»Ĺ\":144976,\"íľł\":144977,\"íľ©\":144978,\"âľĪ\":144979,\"íĢĦ\":144980,\"ìĸĩ\":144981,\"ì¢ĩ\":144982,\"íŀĻ\":144983,\"ëª¹\":144984,\"ãĤĽ\":144985,\"ðŁĺ±\":144986,\"ëįŁ\":144987,\"à¹ħ\":144988,\"êµ¶\":144989,\"Ù«\":144990,\"ìĶģ\":144991,\"âľª\":144992,\"ï¾Ī\":144993,\"ðŁĻĮ\":144994,\"âļ¡\":144995,\"Îļ\":144996,\"ì¼Ī\":144997,\"ï¾Ķ\":144998,\"ï¾Ĥ\":144999,\"êµī\":145000,\"ïº»\":145001,\"ðŁĴĭ\":145002,\"á¹£\":145003,\"ÓĻ\":145004,\"ìĨľ\":145005,\"ìĹ£\":145006,\"âľ©\":145007,\"ìľĻ\":145008,\"ïº°\":145009,\"áº²\":145010,\"ìŀ£\":145011,\"âĿĮ\":145012,\"âĺģ\":145013,\"ìķİ\":145014,\"Ä½\":145015,\"Ûģ\":145016,\"ãĦ±\":145017,\"ëŁ¿\":145018,\"íĮ¸\":145019,\"ê½ī\":145020,\"ìıł\":145021,\"ðŁįĢ\":145022,\"âĨĶ\":145023,\"ëŃ¡\":145024,\"ï»ģ\":145025,\"ï¼Ħ\":145026,\"ðŁĴ¥\":145027,\"âĺĽ\":145028,\"íĹ·\":145029,\"ëĳ¡\":145030,\"Îł\":145031,\"Î¤\":145032,\"âĦĵ\":145033,\"ïº·\":145034,\"ÎĻ\":145035,\"ëıĶ\":145036,\"ì§¤\":145037,\"âĶĥ\":145038,\"ãĦ·\":145039,\"ÇĴ\":145040,\"ðŁ¥°\":145041,\"ëĶķ\":145042,\"ìļ¥\":145043,\"ì¸Ħ\":145044,\"íĽĶ\":145045,\"ïºĩ\":145046,\"ïº¬\":145047,\"ðŁĺ¢\":145048,\"ë¹¡\":145049,\"ìĶ¹\":145050,\"Å³\":145051,\"ËĿ\":145052,\"íİĳ\":145053,\"ï¾ĵ\":145054,\"ðŁĴļ\":145055,\"ëĬĳ\":145056,\"êº¾\":145057,\"íĨ°\":145058,\"Ã¿\":145059,\"ÐĦ\":145060,\"ëĮĲ\":145061,\"ë½Ģ\":145062,\"ì·Ħ\":145063,\"ðŁĵį\":145064,\"ðŁĻĪ\":145065,\"âĹĪ\":145066,\"ê¿ĩ\":145067,\"ì¼Ħ\":145068,\"íİ«\":145069,\"ðŁĩ·\":145070,\"âĶĭ\":145071,\"âļł\":145072,\"ë±ī\":145073,\"ìį°\":145074,\"ìĻĪ\":145075,\"Éª\":145076,\"ïºĭ\":145077,\"ðŁĺľ\":145078,\"ÎŁ\":145079,\"ðŁĻĤ\":145080,\"âļ½\":145081,\"ÅĪ\":145082,\"ë¹Ķ\":145083,\"íĮľ\":145084,\"à¹ı\":145085,\"ìĸ¹\":145086,\"íĪŃ\":145087,\"ðŁ¥ĩ\":145088,\"ãĦ´\":145089,\"ëĶ¥\":145090,\"ìŃĪ\":145091,\"âĪĨ\":145092,\"ëĸ³\":145093,\"ë±ĥ\":145094,\"ìŀ¦\":145095,\"ï»Ĳ\":145096,\"Îľ\":145097,\"âľ§\":145098,\"Ïį\":145099,\"ìłĵ\":145100,\"âĹķ\":145101,\"ëĴĢ\":145102,\"ï»Ģ\":145103,\"ðŁĶ´\":145104,\"ê½ģ\":145105,\"ëĮĪ\":145106,\"ëİĮ\":145107,\"ãĤİ\":145108,\"â¦ģ\":145109,\"ì½§\":145110,\"ï¯¾\":145111,\"âĿ¯\":145112,\"à¸ħ\":145113,\"ðŁĻĦ\":145114,\"âĿĢ\":145115,\"ðŁĶ¹\":145116,\"âĩĲ\":145117,\"êµµ\":145118,\"âĩĶ\":145119,\"ë¶Ĳ\":145120,\"ðŁĴĽ\":145121,\"Î¾\":145122,\"íĥ¬\":145123,\"âĿĦ\":145124,\"Ò£\":145125,\"ãĢ°\":145126,\"âĪĳ\":145127,\"âĺ¼\":145128,\"âīł\":145129,\"Ò¯\":145130,\"ïº¯\":145131,\"ê¿¨\":145132,\"âľĸ\":145133,\"Êĸ\":145134,\"íĢĢ\":145135,\"ê¾Ģ\":145136,\"íĹĿ\":145137,\"âĶ£\":145138,\"ãİľ\":145139,\"ëĶĽ\":145140,\"ëľ¸\":145141,\"ïº«\":145142,\"ê¿°\":145143,\"ðŁĩ¹\":145144,\"ÇĲ\":145145,\"ÛĴ\":145146,\"ë£»\":145147,\"ïºĸ\":145148,\"Ñļ\":145149,\"ëĬł\":145150,\"Ûķ\":145151,\"ê¹¡\":145152,\"ë¿ľ\":145153,\"ì²¼\":145154,\"ï¨ĳ\":145155,\"ë¥µ\":145156,\"ìį¸\":145157,\"íħħ\":145158,\"íĳ¹\":145159,\"ÖĢ\":145160,\"ï³Į\":145161,\"ãħ£\":145162,\"ìĳ¤\":145163,\"ì½ķ\":145164,\"ëķł\":145165,\"ðŁĮ¿\":145166,\"íĥĶ\":145167,\"ìĽģ\":145168,\"Î¶\":145169,\"âŀľ\":145170,\"ìĬĺ\":145171,\"íĽĹ\":145172,\"ë©§\":145173,\"ìīĺ\":145174,\"Õ¶\":145175,\"á¹ĩ\":145176,\"ðŁİģ\":145177,\"ï½¿\":145178,\"ï¼Ĥ\":145179,\"á¼Ĳ\":145180,\"âľķ\":145181,\"âŀ¢\":145182,\"ëĦ¨\":145183,\"ì»«\":145184,\"ì¯Ķ\":145185,\"ì°ľ\":145186,\"ðŁĴ°\":145187,\"íħĿ\":145188,\"ãİı\":145189,\"ë³¶\":145190,\"Òĵ\":145191,\"âĨ³\":145192,\"ìĥ´\":145193,\"íģĺ\":145194,\"âĸĢ\":145195,\"ë²Ļ\":145196,\"à¸ĥ\":145197,\"á½¶\":145198,\"Äķ\":145199,\"â¬ĩ\":145200,\"ë¤ĺ\":145201,\"ðŁİµ\":145202,\"âľļ\":145203,\"ïºı\":145204,\"Î¡\":145205,\"âĹī\":145206,\"ðŁĴ«\":145207,\"ÐĪ\":145208,\"ìĸĦ\":145209,\"ì§Ļ\":145210,\"ï»ĥ\":145211,\"ðĿĳĴ\":145212,\"ëŃĦ\":145213,\"âĿ¥\":145214,\"âĿĸ\":145215,\"âĺĿ\":145216,\"Ê¹\":145217,\"á¸¥\":145218,\"âĢ¿\":145219,\"ãħħ\":145220,\"ê¸ģ\":145221,\"ëķ¡\":145222,\"ëį¥\":145223,\"âĪ©\":145224,\"ê»Ħ\":145225,\"ë®Į\":145226,\"Ò±\":145227,\"âĪĹ\":145228,\"ëłĻ\":145229,\"ïºĮ\":145230,\"ËĲ\":145231,\"ðŁĺ³\":145232,\"ðŁĳ©\":145233,\"ðŁİ¶\":145234,\"ì¿µ\":145235,\"ðŁ¤©\":145236,\"ê·¤\":145237,\"ëĮĶ\":145238,\"ïºĲ\":145239,\"Ïİ\":145240,\"ì¶¥\":145241,\"ï½Ĭ\":145242,\"á¹Ń\":145243,\"ë¤¼\":145244,\"âĸ«\":145245,\"ì§ł\":145246,\"á¼Ģ\":145247,\"ê»ĳ\":145248,\"ëĮģ\":145249,\"íĢ¸\":145250,\"âĻĽ\":145251,\"ðŁĴŀ\":145252,\"âĸ°\":145253,\"ðĿĳĸ\":145254,\"ëĿ¤\":145255,\"à¤¦\":145256,\"ì´ĺ\":145257,\"ðŁĺĩ\":145258,\"ëĶ¤\":145259,\"ÎĹ\":145260,\"ðŁĻĩ\":145261,\"ËĽ\":145262,\"ì©¡\":145263,\"âĪ§\":145264,\"Õ¥\":145265,\"ÑĻ\":145266,\"ëĲ¬\":145267,\"ëĸĦ\":145268,\"ðŁĮ·\":145269,\"ìĹĮ\":145270,\"ðŁĺ¥\":145271,\"ëĪ´\":145272,\"ï»ļ\":145273,\"ÉĽ\":145274,\"ïºĦ\":145275,\"ï»ı\":145276,\"ÅĮ\":145277,\"ë²ļ\":145278,\"ìĭ£\":145279,\"ïºĢ\":145280,\"Îĵ\":145281,\"ðŁĺĮ\":145282,\"ËĻ\":145283,\"ëŀı\":145284,\"ðŁĶ¸\":145285,\"ðŁĵ·\":145286,\"ëģ½\":145287,\"íģ½\":145288,\"ðŁĴ¡\":145289,\"ðŁĮ±\":145290,\"ëºı\":145291,\"ìģł\":145292,\"ìĥĲ\":145293,\"ëıĹ\":145294,\"ì¸°\":145295,\"ëĪķ\":145296,\"ÎĿ\":145297,\"âģī\":145298,\"ðŁĮ¼\":145299,\"íĮł\":145300,\"âĭ¯\":145301,\"áĥĺ\":145302,\"âľ¤\":145303,\"ê±Ķ\":145304,\"íĮİ\":145305,\"ðŁĴ¯\":145306,\"ìıĻ\":145307,\"íĹī\":145308,\"ÙŃ\":145309,\"ì½°\":145310,\"ïº¿\":145311,\"ï»±\":145312,\"ì±Į\":145313,\"âĺķ\":145314,\"ðŁİĢ\":145315,\"ÄĿ\":145316,\"ë°§\":145317,\"ìĤ¿\":145318,\"áĳķ\":145319,\"ðŁįĥ\":145320,\"âĩ¨\":145321,\"ÎĽ\":145322,\"ë§´\":145323,\"ë³ķ\":145324,\"áĳĲ\":145325,\"âĸĵ\":145326,\"ðĿĳľ\":145327,\"âĻ»\":145328,\"íĤ¥\":145329,\"Õ¸\":145330,\"ãĪ±\":145331,\"ëºĢ\":145332,\"ì²¸\":145333,\"ïºĽ\":145334,\"ðŁıĨ\":145335,\"ðŁĩª\":145336,\"âĿĵ\":145337,\"ÄĢ\":145338,\"ì½¥\":145339,\"ðŁĩ§\":145340,\"á½·\":145341,\"âľĤ\":145342,\"ìŀ¼\":145343,\"ï§¡\":145344,\"ðŁĵ¸\":145345,\"âĻ¯\":145346,\"ÉĶ\":145347,\"á½¸\":145348,\"âĮª\":145349,\"ï»ĸ\":145350,\"ï¥§\":145351,\"âļ«\":145352,\"âĶĹ\":145353,\"ðŁĮĪ\":145354,\"ï»©\":145355,\"ðŁĵ²\":145356,\"ÏĪ\":145357,\"ðŁĺ¡\":145358,\"ðĿĳİ\":145359,\"ìľ½\":145360,\"ì§¬\":145361,\"ì§Ĭ\":145362,\"á½³\":145363,\"ìĮ¤\":145364,\"ëĤį\":145365,\"âīĴ\":145366,\"ðŁĳ¨\":145367,\"âĺĺ\":145368,\"Ó©\":145369,\"âĤĵ\":145370,\"âĪĤ\":145371,\"ï¹ģ\":145372,\"ðŁĴĲ\":145373,\"íħĥ\":145374,\"ðŁı½\":145375,\"ê·Ħ\":145376,\"ðŁĺı\":145377,\"ðŁĮº\":145378,\"ðŁĺĶ\":145379,\"ï½«\":145380,\"âľİ\":145381,\"ëµĪ\":145382,\"ðŁĩ¸\":145383,\"âĢ£\":145384,\"âŀĶ\":145385,\"ëĺĺ\":145386,\"ìĥ¬\":145387,\"Êĥ\":145388,\"â¬ħ\":145389,\"ì©Ĳ\":145390,\"ðŁĻĨ\":145391,\"ðŁİĦ\":145392,\"Ä¾\":145393,\"âŁ¶\":145394,\"áĥĲ\":145395,\"âĺ»\":145396,\"ì±ķ\":145397,\"ìģ©\":145398,\"ë½ķ\":145399,\"ìº£\":145400,\"ðŁĳĪ\":145401,\"ðŁĻĭ\":145402,\"ï¾ĸ\":145403,\"Òļ\":145404,\"Õ«\":145405,\"ìĮĪ\":145406,\"ë²§\":145407,\"ðŁĩ®\":145408,\"ï½Ŀ\":145409,\"ðŁįģ\":145410,\"ìĹ¥\":145411,\"Ä³\":145412,\"ë½Ĳ\":145413,\"íį½\":145414,\"íĽĳ\":145415,\"âĤ¹\":145416,\"ãħģ\":145417,\"ìĶ½\":145418,\"ðŁĶģ\":145419,\"à¤¯\":145420,\"ê¾¹\":145421,\"ëīľ\":145422,\"âĹ¡\":145423,\"íķĮ\":145424,\"Îĺ\":145425,\"ë£¹\":145426,\"ìĻĵ\":145427,\"ðŁĩ¦\":145428,\"ðŁĳĢ\":145429,\"âĶĮ\":145430,\"á¿¦\":145431,\"ëĦĽ\":145432,\"ìĦ£\":145433,\"ìŃĻ\":145434,\"ï±ł\":145435,\"Îŀ\":145436,\"Ê»\":145437,\"á¿¶\":145438,\"âĿĿ\":145439,\"ê±Ģ\":145440,\"ëĸ´\":145441,\"ãĦ¹\":145442,\"ðŁĴİ\":145443,\"Ï¹\":145444,\"âĽħ\":145445,\"ï»ķ\":145446,\"ãĥ±\":145447,\"ï½Ľ\":145448,\"ëĮķ\":145449,\"ë¹½\":145450,\"ì¥Ķ\":145451,\"ì¿¤\":145452,\"ðŁĸ¤\":145453,\"ÑĴ\":145454,\"ê¹į\":145455,\"ëİĢ\":145456,\"ìĭ¯\":145457,\"ë»¤\":145458,\"ðŁĵŀ\":145459,\"ðŁĵ£\":145460,\"ðŁĺĿ\":145461,\"ìį¹\":145462,\"ìĹ¡\":145463,\"ì°Ĳ\":145464,\"á½Ĳ\":145465,\"ï»Ī\":145466,\"âľį\":145467,\"Äı\":145468,\"ðŁĮŀ\":145469,\"âĦ¦\":145470,\"ê½Ŀ\":145471,\"ë»ĺ\":145472,\"ìĪ±\":145473,\"âĶĺ\":145474,\"ðŁĮ»\":145475,\"âĤ´\":145476,\"âŀ¨\":145477,\"íĲģ\":145478,\"ê¶Ī\":145479,\"âĺ¢\":145480,\"ðŁĺĪ\":145481,\"ï½©\":145482,\"âĦĹ\":145483,\"ê°Ń\":145484,\"ê°¸\":145485,\"ë»ĳ\":145486,\"ì¥´\":145487,\"ì»¥\":145488,\"ï¤Ĭ\":145489,\"ï»Ĵ\":145490,\"ðŁĺķ\":145491,\"âĺĶ\":145492,\"ìĺĲ\":145493,\"ðŁļĹ\":145494,\"ëĹĦ\":145495,\"ë§ı\":145496,\"Õ½\":145497,\"âĸ»\":145498,\"âŁµ\":145499,\"ìī°\":145500,\"ï»ĳ\":145501,\"âĻ©\":145502,\"Î¥\":145503,\"ðŁĺ£\":145504,\"âĬĤ\":145505,\"ãħĤ\":145506,\"ìħ¸\":145507,\"íıĦ\":145508,\"âľ½\":145509,\"ì¦Ļ\":145510,\"âĸ£\":145511,\"ê±į\":145512,\"ê¿ĭ\":145513,\"ì«Ħ\":145514,\"ìºĩ\":145515,\"ðŁĩµ\":145516,\"ðŁĳĳ\":145517,\"âľĺ\":145518,\"ðĿĳĽ\":145519,\"ìį½\":145520,\"ìºī\":145521,\"ï¬µ\":145522,\"ðŁĶº\":145523,\"âĦ®\":145524,\"íĥ¤\":145525,\"ðŁĩº\":145526,\"ðŁĴµ\":145527,\"íħ¨\":145528,\"ï½ĳ\":145529,\"Î¨\":145530,\"ìĥ¹\":145531,\"ìĸķ\":145532,\"ì¹µ\":145533,\"ðŁĵ±\":145534,\"à¤µ\":145535,\"ðŁĳĬ\":145536,\"ðŁĴĦ\":145537,\"ðŁĴĿ\":145538,\"ãĮĶ\":145539,\"ìĻģ\":145540,\"Ðĩ\":145541,\"à®Ĳ\":145542,\"âĸ¹\":145543,\"á´Ľ\":145544,\"âĹĺ\":145545,\"ëº¨\":145546,\"íĥī\":145547,\"ìĸĮ\":145548,\"ðŁĲ¶\":145549,\"ãĤĳ\":145550,\"Ëĩ\":145551,\"Åı\":145552,\"á½¹\":145553,\"ìħ§\":145554,\"ï¹°\":145555,\"ðĿĳ¡\":145556,\"ðŁĶĿ\":145557,\"ðŁĺ»\":145558,\"ðŁĴĥ\":145559,\"ðŁ¤¦\":145560,\"ðŁįĴ\":145561,\"íĢµ\":145562,\"âľĨ\":145563,\"ë¹´\":145564,\"ï§¤\":145565,\"ï»Ļ\":145566,\"á´Ĺ\":145567,\"ðŁĮ´\":145568,\"Í¾\":145569,\"ëĮĳ\":145570,\"ì¨ĭ\":145571,\"ìµ¸\":145572,\"ðŁİĪ\":145573,\"ðŁıł\":145574,\"á½±\":145575,\"ÛĨ\":145576,\"á¿ĸ\":145577,\"âĢĽ\":145578,\"ì°¼\":145579,\"íķ¥\":145580,\"íĹ´\":145581,\"ðŁĩ¬\":145582,\"ì°Ŀ\":145583,\"âĪł\":145584,\"ï¼ĩ\":145585,\"âĬĻ\":145586,\"âĿĳ\":145587,\"ëĦĭ\":145588,\"ëŀĹ\":145589,\"ë°ī\":145590,\"ìĹĬ\":145591,\"ì¢Ĩ\":145592,\"íĮ¥\":145593,\"ï°²\":145594,\"ðŁĵĸ\":145595,\"ðŁĺ®\":145596,\"âļª\":145597,\"ðŁĺļ\":145598,\"âĿŀ\":145599,\"ðĿĳŁ\":145600,\"ðŁİĤ\":145601,\"Åķ\":145602,\"áĲĪ\":145603,\"êº½\":145604,\"ì±ł\":145605,\"ïºĿ\":145606,\"ê¿ī\":145607,\"áĥł\":145608,\"ðŁıĥ\":145609,\"ðŁĴ¸\":145610,\"âĿģ\":145611,\"âĹ¾\":145612,\"Úª\":145613,\"á¹ĥ\":145614,\"íĬ¬\":145615,\"ðŁĩ±\":145616,\"íİŃ\":145617,\"ðŁĺŀ\":145618,\"ë¾°\":145619,\"á¹Ľ\":145620,\"ëĽ¸\":145621,\"âĿĤ\":145622,\"êĴ³\":145623,\"âĶĲ\":145624,\"íĵ°\":145625,\"âŀł\":145626,\"ê´ĺ\":145627,\"ëħĺ\":145628,\"ë»¥\":145629,\"ì¾ħ\":145630,\"ðŁĺĲ\":145631,\"âĪª\":145632,\"ðŁĳģ\":145633,\"âĪ´\":145634,\"âĹģ\":145635,\"ëºĲ\":145636,\"ìŀ¤\":145637,\"ì±Ĺ\":145638,\"ðŁı¾\":145639,\"Î§\":145640,\"á½»\":145641,\"âŀ¥\":145642,\"ìŁĪ\":145643,\"ï»ī\":145644,\"âĸĮ\":145645,\"ãĥ®\":145646,\"ðŁ¤¤\":145647,\"âĩĵ\":145648,\"ì¼ł\":145649,\"á´ı\":145650,\"ë§¬\":145651,\"ë»£\":145652,\"ðŁĴ¬\":145653,\"ðŁįĵ\":145654,\"Ä¸\":145655,\"Ù¹\":145656,\"Ê¿\":145657,\"á½°\":145658,\"ëķľ\":145659,\"ì°¡\":145660,\"ì°»\":145661,\"íİį\":145662,\"ðŁİ¯\":145663,\"ðŁįĤ\":145664,\"ðŁĳ§\":145665,\"âĻ¢\":145666,\"áĨŀ\":145667,\"âĻ§\":145668,\"âļľ\":145669,\"âľī\":145670,\"ëĵ¦\":145671,\"ëŃ£\":145672,\"ìĪı\":145673,\"ìĵ±\":145674,\"ÅŃ\":145675,\"ÊĬ\":145676,\"âĴ¸\":145677,\"âĩ©\":145678,\"ðŁĴĶ\":145679,\"Õµ\":145680,\"Ðī\":145681,\"Ò»\":145682,\"ë§£\":145683,\"ìĽľ\":145684,\"ì¿¡\":145685,\"íĽħ\":145686,\"íĽ¤\":145687,\"ïº¢\":145688,\"âľĭ\":145689,\"âĪĪ\":145690,\"ðŁĮį\":145691,\"Êľ\":145692,\"ëĬª\":145693,\"ëĴ¹\":145694,\"ïº²\":145695,\"âĸĦ\":145696,\"ãħĪ\":145697,\"ëļ¤\":145698,\"íİ©\":145699,\"âĪ¨\":145700,\"ðŁ¤ª\":145701,\"áĥļ\":145702,\"ê³¶\":145703,\"íĬķ\":145704,\"ðŁĺ¬\":145705,\"âĪ«\":145706,\"ðŁĳĭ\":145707,\"ÒĲ\":145708,\"íĬ¿\":145709,\"ðŁĶµ\":145710,\"ðŁĴ¨\":145711,\"ðŁĮĻ\":145712,\"ëĩ©\":145713,\"âľ³\":145714,\"ë¨ģ\":145715,\"ëºĦ\":145716,\"ìĻĳ\":145717,\"ìºħ\":145718,\"íıĪ\":145719,\"ðĿĳĻ\":145720,\"ðŁĴĺ\":145721,\"ãİ¥\":145722,\"âĿı\":145723,\"âľ°\":145724,\"ï¯¿\":145725,\"ëµĲ\":145726,\"ì¼Ĳ\":145727,\"ïº±\":145728,\"Õ´\":145729,\"ï¬Ģ\":145730,\"âľ´\":145731,\"ðŁ¤Ń\":145732,\"ðŁĳĨ\":145733,\"âĽĶ\":145734,\"ê·ĵ\":145735,\"ìĮĮ\":145736,\"ðŁ¤·\":145737,\"ÛĶ\":145738,\"ðŁ§¡\":145739,\"ðŁĺĵ\":145740,\"Îĸ\":145741,\"âı°\":145742,\"ê²ľ\":145743,\"ëĭ³\":145744,\"ëİħ\":145745,\"ë°Ī\":145746,\"ï®Ĳ\":145747,\"ðŁı¡\":145748,\"âĨª\":145749,\"âĵĶ\":145750,\"âľĬ\":145751,\"Ï²\":145752,\"ÜĲ\":145753,\"ðŁĩ³\":145754,\"ÖĤ\":145755,\"âľı\":145756,\"ìĸĹ\":145757,\"ì«Ļ\":145758,\"ðŁĺ²\":145759,\"ÄŃ\":145760,\"âĻŃ\":145761,\"âĶı\":145762,\"âĹĮ\":145763,\"ðŁĺ¯\":145764,\"áµĴ\":145765,\"íĬł\":145766,\"Ä·\":145767,\"Êģ\":145768,\"à¤Ł\":145769,\"á¹ģ\":145770,\"á¼°\":145771,\"á¿Ĩ\":145772,\"â«\":145773,\"â«¸\":145774,\"ëį«\":145775,\"ì³ĩ\":145776,\"ì¼¤\":145777,\"íĽ¨\":145778,\"ðŁĴŁ\":145779,\"ÊĢ\":145780,\"Ê³\":145781,\"ëĵĲ\":145782,\"âķ°\":145783,\"âĿĩ\":145784,\"ÇĢ\":145785,\"ÇĶ\":145786,\"É´\":145787,\"âĺļ\":145788,\"âĺľ\":145789,\"ê¶Ĥ\":145790,\"ì«Ĵ\":145791,\"ì±Ī\":145792,\"ðŁĩ¨\":145793,\"ðŁİ¥\":145794,\"ðŁĵĿ\":145795,\"Ä§\":145796,\"ðĿĳĲ\":145797,\"ÛĪ\":145798,\"à¤¬\":145799,\"ì¬Ĳ\":145800,\"íĹ¥\":145801,\"âĻ¨\":145802,\"ðŁį´\":145803,\"ï¹ı\":145804,\"Ëĭ\":145805,\"ðŁ¥º\":145806,\"âĸ¨\":145807,\"íĻĭ\":145808,\"âĪħ\":145809,\"ëģĻ\":145810,\"ëŀł\":145811,\"ìĨ¥\":145812,\"âĢĸ\":145813,\"ðŁ¤ĺ\":145814,\"ðŁĲ»\":145815,\"áµķ\":145816,\"ÇĿ\":145817,\"âĺı\":145818,\"ïºļ\":145819,\"ï»Ĥ\":145820,\"ðŁļ©\":145821,\"ìĪŁ\":145822,\"ËĬ\":145823,\"â¤µ\":145824,\"ðŁĴ§\":145825,\"ãħį\":145826,\"ë©©\":145827,\"Æ¬\":145828,\"Îĩ\":145829,\"âĩ§\":145830,\"âĵļ\":145831,\"ìĤ¯\":145832,\"ìĪ¯\":145833,\"ëĨĭ\":145834,\"âľ¯\":145835,\"ðŁļĢ\":145836,\"Úĺ\":145837,\"Ú¨\":145838,\"âľŃ\":145839,\"ê²ħ\":145840,\"íĮ°\":145841,\"íľĻ\":145842,\"ðŁĮĬ\":145843,\"ðŁİĵ\":145844,\"ðŁĺĻ\":145845,\"Ëĥ\":145846,\"ðŁĴģ\":145847,\"ðŁĳİ\":145848,\"âĺ¹\":145849,\"ðŁĺ«\":145850,\"ðŁĴ»\":145851,\"ëĤµ\":145852,\"ìĿĬ\":145853,\"íĮ»\":145854,\"Ò³\":145855,\"á½²\":145856,\"âŀŀ\":145857,\"ëĤĳ\":145858,\"ëĿĪ\":145859,\"ì£¤\":145860,\"ï»¯\":145861,\"ðŁĩ©\":145862,\"ðŁ¥³\":145863,\"âĴ¼\":145864,\"ðŁ¦ĭ\":145865,\"âĺĤ\":145866,\"ðŁĺ°\":145867,\"ðŁĻĥ\":145868,\"ðŁĺĴ\":145869,\"Ûİ\":145870,\"Ïķ\":145871,\"á¸¤\":145872,\"ë£½\":145873,\"ìĬ¥\":145874,\"ðĿĳī\":145875,\"ÉĲ\":145876,\"ðŁįİ\":145877,\"âķ¯\":145878,\"âķ¹\":145879,\"àº²\":145880,\"ï¾ł\":145881,\"ë¹ķ\":145882,\"ïºĨ\":145883,\"Êº\":145884,\"Ó§\":145885,\"âĨł\":145886,\"ëĥĩ\":145887,\"ìİĪ\":145888,\"ìŁ¤\":145889,\"ï±¢\":145890,\"âķ¬\":145891,\"âĺł\":145892,\"ðŁİĬ\":145893,\"ãįį\":145894,\"ãİİ\":145895,\"âĺ°\":145896,\"âľĥ\":145897,\"ãħī\":145898,\"ë¯Ī\":145899,\"ë¹¤\":145900,\"ìıŃ\":145901,\"ðĿĳ¢\":145902,\"ðŁĲ¾\":145903,\"Åĭ\":145904,\"ðŁĳ¶\":145905,\"âĶĽ\":145906,\"ï¿¢\":145907,\"áĥ¡\":145908,\"Ä¼\":145909,\"ÅĨ\":145910,\"ÑĲ\":145911,\"ìĥĽ\":145912,\"ìĺĮ\":145913,\"ì±¤\":145914,\"íħģ\":145915,\"íļĥ\":145916,\"ï³Ĭ\":145917,\"ðĿĳĶ\":145918,\"ðŁĩ«\":145919,\"âĭ°\":145920,\"ðŁĺ¨\":145921,\"âĤ©\":145922,\"Õ¬\":145923,\"á¸į\":145924,\"á»´\":145925,\"âĨĺ\":145926,\"âĺ¯\":145927,\"ãħı\":145928,\"ìł¬\":145929,\"âĻĶ\":145930,\"ðŁĶĶ\":145931,\"ðŁĺł\":145932,\"ðŁĻĬ\":145933,\"à®ľ\":145934,\"á¹ħ\":145935,\"âĹĲ\":145936,\"âĿĪ\":145937,\"âŀ½\":145938,\"ìĥħ\":145939,\"ðĿĳł\":145940,\"Æ¢\":145941,\"âĭĻ\":145942,\"ê°Ľ\":145943,\"ëĿµ\":145944,\"ë£Ł\":145945,\"ìıľ\":145946,\"ïºģ\":145947,\"ðŁĴŃ\":145948,\"âĬĥ\":145949,\"ðŁĲ°\":145950,\"ãħĮ\":145951,\"Üĵ\":145952,\"âŀķ\":145953,\"á½ģ\":145954,\"ìķ³\":145955,\"ðĿĳĿ\":145956,\"ðŁİ¬\":145957,\"É¡\":145958,\"à¤Ĺ\":145959,\"áĲī\":145960,\"ì©ľ\":145961,\"ì¶§\":145962,\"ï³ī\":145963,\"ï»ħ\":145964,\"ðĿĲŀ\":145965,\"à¤¶\":145966,\"ðŁĵ¢\":145967,\"ðŁįĭ\":145968,\"ðŁĴħ\":145969,\"ï¾ķ\":145970,\"â¬Ĩ\":145971,\"âĪµ\":145972,\"ðŁ¤ĳ\":145973,\"áĥ£\":145974,\"ÆĦ\":145975,\"Ñ¹\":145976,\"á¼Ķ\":145977,\"ê°ł\":145978,\"ê´Į\":145979,\"ê·Ĳ\":145980,\"ëĽ´\":145981,\"ì±ĺ\":145982,\"ï®Ń\":145983,\"ïº¹\":145984,\"ïº¾\":145985,\"âľĹ\":145986,\"âĿ¦\":145987,\"ðŁĳ¦\":145988,\"áĥĹ\":145989,\"Ù²\":145990,\"á½´\":145991,\"âĪı\":145992,\"âľ®\":145993,\"ê¹°\":145994,\"ë²µ\":145995,\"ìĦĢ\":145996,\"ì©Ŀ\":145997,\"ïºŀ\":145998,\"ïº½\":145999,\"ðŁĩŃ\":146000,\"ËĤ\":146001,\"ðŁįĳ\":146002,\"ðŁįĮ\":146003,\"ðŁĶ»\":146004,\"ê¹¬\":146005,\"ìĬŃ\":146006,\"ìľ·\":146007,\"ðŁĽĳ\":146008,\"Ç§\":146009,\"ë¼Ľ\":146010,\"ïº¡\":146011,\"ïºº\":146012,\"ðĿĳļ\":146013,\"ðŁĵ¦\":146014,\"ðŁĶİ\":146015,\"ðŁĹĵ\":146016,\"áĥĶ\":146017,\"âľĴ\":146018,\"âľ¡\":146019,\"ðŁĮµ\":146020,\"âĶķ\":146021,\"ëĢĿ\":146022,\"ðŁįĬ\":146023,\"âĺĥ\":146024,\"ìĺħ\":146025,\"à¦¬\":146026,\"ðŁ¦ģ\":146027,\"âİ¯\":146028,\"ðŁĲķ\":146029,\"Ñ¿\":146030,\"à¥¤\":146031,\"à¼ĭ\":146032,\"ê·Ī\":146033,\"ì«Į\":146034,\"ðŁĩ°\":146035,\"âĿī\":146036,\"ì«Ģ\":146037,\"íĿĦ\":146038,\"ðĿĲ¢\":146039,\"ðŁļ¨\":146040,\"âĻ¤\":146041,\"ðŁĺ©\":146042,\"ðŁįį\":146043,\"ðŁĺĳ\":146044,\"ðŁļļ\":146045,\"ÖĦ\":146046,\"ë«\":146047,\"ë«¼\":146048,\"à¤ı\":146049,\"á¿·\":146050,\"âĮ©\":146051,\"âĺĲ\":146052,\"âŀ£\":146053,\"ê¸±\":146054,\"ê¼¿\":146055,\"ëĦĿ\":146056,\"ìı´\":146057,\"ìļ¤\":146058,\"ì¿±\":146059,\"íİĲ\":146060,\"ðŁĴ¢\":146061,\"ì´Ĳ\":146062,\"âĩĳ\":146063,\"âĶĵ\":146064,\"âģ¾\":146065,\"ÜĿ\":146066,\"ðŁį°\":146067,\"â´°\":146068,\"Æı\":146069,\"ÏŁ\":146070,\"Úº\":146071,\"Ûĥ\":146072,\"áĦĴ\":146073,\"âĪŁ\":146074,\"âĿį\":146075,\"ãĦ²\":146076,\"ìľħ\":146077,\"ì¤ı\":146078,\"ðŁĩ²\":146079,\"êºĦ\":146080,\"ðŁİ¤\":146081,\"âľ£\":146082,\"â¸Ŀ\":146083,\"ï¸µ\":146084,\"àº§\":146085,\"áĢĻ\":146086,\"âķł\":146087,\"Õ¯\":146088,\"âı©\":146089,\"ðĿĳ£\":146090,\"ðŁĴ£\":146091,\"Åĺ\":146092,\"à¥Ĳ\":146093,\"âģĥ\":146094,\"âĮĺ\":146095,\"ê»Į\":146096,\"ìĮĶ\":146097,\"ðĿĳĺ\":146098,\"ðŁ¤ĵ\":146099,\"Õ¿\":146100,\"à¤Ń\":146101,\"âĮļ\":146102,\"âľĿ\":146103,\"ðŁĲ¼\":146104,\"ËĮ\":146105,\"âķļ\":146106,\"ï¦Ĺ\":146107,\"âĿķ\":146108,\"âķ£\":146109,\"ðŁĲ±\":146110,\"à®¤\":146111,\"Ñ¾\":146112,\"à¤ļ\":146113,\"à¤ľ\":146114,\"ìĪĦ\":146115,\"ìļľ\":146116,\"ðŁİ®\":146117,\"ÉĴ\":146118,\"Ú·\":146119,\"àºį\":146120,\"âĨµ\":146121,\"âĪĺ\":146122,\"âĿĬ\":146123,\"ë¿į\":146124,\"ìĲĪ\":146125,\"ìļĺ\":146126,\"ì¯§\":146127,\"íĥ¯\":146128,\"ìĸı\":146129,\"ï¸°\":146130,\"ðŁĩ¯\":146131,\"ðŁ§ļ\":146132,\"ðŁĺµ\":146133,\"ðŁĺ·\":146134,\"ðŁĮ³\":146135,\"àº¥\":146136,\"Äī\":146137,\"Ä¥\":146138,\"âľ¶\":146139,\"á¿¾\":146140,\"âĬ±\":146141,\"âĺ¾\":146142,\"ê°ī\":146143,\"ê¼°\":146144,\"ëºĳ\":146145,\"ðŁĶĬ\":146146,\"ðŁĸĲ\":146147,\"Å¤\":146148,\"Ò«\":146149,\"à®®\":146150,\"âĮĪ\":146151,\"âĹĹ\":146152,\"ëĦµ\":146153,\"ëħľ\":146154,\"ëľ¹\":146155,\"ðĿĳ¥\":146156,\"ðŁĴ¿\":146157,\"ðŁĽĴ\":146158,\"ÊĴ\":146159,\"áŀĵ\":146160,\"ðŁĲĿ\":146161,\"ðŁ¦Ħ\":146162,\"ðŁį·\":146163,\"âĺŁ\":146164,\"ï¸¶\":146165,\"ðŁ¤Ł\":146166,\"Ô±\":146167,\"âĨ²\":146168,\"âĪİ\":146169,\"âľ«\":146170,\"ëĩ½\":146171,\"ëıĲ\":146172,\"ëķĦ\":146173,\"ï¦³\":146174,\"ï§Ŀ\":146175,\"ïºĻ\":146176,\"ðŁĳ»\":146177,\"ðŁĵº\":146178,\"êµ¼\":146179,\"ìĮ©\":146180,\"ðŁĮ²\":146181,\"È±\":146182,\"íĶķ\":146183,\"ðŁĺ¤\":146184,\"ãĮ¢\":146185,\"ÊĶ\":146186,\"à¤¡\":146187,\"á¼Ī\":146188,\"ëİĥ\":146189,\"ë©±\":146190,\"ë®Ī\":146191,\"ðĿĲ«\":146192,\"âĬķ\":146193,\"ëĥł\":146194,\"ë»¬\":146195,\"íĭĶ\":146196,\"Õ¤\":146197,\"á¼±\":146198,\"âľ¥\":146199,\"âĺĦ\":146200,\"âĪ¥\":146201,\"âļķ\":146202,\"ðŁĳĦ\":146203,\"ðŁİħ\":146204,\"àºĻ\":146205,\"âĶ¬\":146206,\"á½µ\":146207,\"Õ¾\":146208,\"Öģ\":146209,\"âĹĶ\":146210,\"ê¿į\":146211,\"ëĸµ\":146212,\"ë©İ\":146213,\"ë®´\":146214,\"ìķ´\":146215,\"áĥľ\":146216,\"á¼¡\":146217,\"âĶĬ\":146218,\"âķ®\":146219,\"âĹ¼\":146220,\"ðŁį¾\":146221,\"ðŁĽį\":146222,\"ðŁĳĹ\":146223,\"ðŁ¤ŀ\":146224,\"âľĦ\":146225,\"ÕĢ\":146226,\"à¦²\":146227,\"Ëī\":146228,\"âŁ¨\":146229,\"Ä¯\":146230,\"ÏĬ\":146231,\"á´ľ\":146232,\"ë¹³\":146233,\"ï³ĭ\":146234,\"ï¿ł\":146235,\"Äª\":146236,\"âĤ¸\":146237,\"âľ±\":146238,\"ê»Ĳ\":146239,\"ëĭ»\":146240,\"ë§¸\":146241,\"ìŀ¿\":146242,\"ì©¨\":146243,\"ìŃĲ\":146244,\"ì°¿\":146245,\"íħŁ\":146246,\"ðĿĲ§\":146247,\"ðĿĳĳ\":146248,\"ðŁĮİ\":146249,\"ðŁĵ®\":146250,\"ðŁķĶ\":146251,\"âĹĻ\":146252,\"âĹ»\":146253,\"âŀ§\":146254,\"ìŁĿ\":146255,\"âľ¬\":146256,\"ãĥ°\":146257,\"âģĪ\":146258,\"âĵĺ\":146259,\"ðŁĴĮ\":146260,\"ï¬ĥ\":146261,\"àºĶ\":146262,\"ìĶ°\":146263,\"ðŁĺª\":146264,\"×Ģ\":146265,\"ìĥ¨\":146266,\"ïŃĭ\":146267,\"ðŁįķ\":146268,\"ðŁĺ´\":146269,\"Ï³\":146270,\"á¼Ħ\":146271,\"á½ħ\":146272,\"âĩ¢\":146273,\"âķŃ\":146274,\"ìĺ»\":146275,\"íĬ¤\":146276,\"Üĺ\":146277,\"â¤´\":146278,\"âĹį\":146279,\"áŀŁ\":146280,\"ðŁįº\":146281,\"áŀļ\":146282,\"ðŁıĬ\":146283,\"ðŁĲ·\":146284,\"ÊĮ\":146285,\"á½º\":146286,\"âģ»\":146287,\"ê½Į\":146288,\"ëĪĹ\":146289,\"ëĹı\":146290,\"ì¿°\":146291,\"íĢ¼\":146292,\"íįħ\":146293,\"ï·²\":146294,\"ðŁĮı\":146295,\"ðŁį«\":146296,\"ðŁį³\":146297,\"ðŁİ°\":146298,\"ðŁĳ°\":146299,\"ðŁĴ²\":146300,\"á¥Ļ\":146301,\"ðŁĲŁ\":146302,\"ï¿¡\":146303,\"ðŁĹ£\":146304,\"ðŁįľ\":146305,\"âľ²\":146306,\"ãİ¢\":146307,\"ðŁĶ°\":146308,\"á¼¸\":146309,\"á½ĳ\":146310,\"Äİ\":146311,\"áĦĢ\":146312,\"âĻķ\":146313,\"ëłĿ\":146314,\"ìĪ´\":146315,\"ïŃŃ\":146316,\"Óľ\":146317,\"ÔĢ\":146318,\"ëĢľ\":146319,\"ëĥĶ\":146320,\"ìĬĽ\":146321,\"ì«ĳ\":146322,\"ìº¥\":146323,\"ìº¬\":146324,\"ðĿĳ¦\":146325,\"ðŁĶ¶\":146326,\"ì¾¨\":146327,\"ðĿĲļ\":146328,\"ðŁį»\":146329,\"ðŁĴį\":146330,\"ðŁ¤¡\":146331,\"ðŁķĬ\":146332,\"â½ĩ\":146333,\"âĵĲ\":146334,\"ðŁįŃ\":146335,\"ðŁįª\":146336,\"ðŁĶĨ\":146337,\"Ò¡\":146338,\"á´ĩ\":146339,\"ÉĹ\":146340,\"ÜĶ\":146341,\"âĦİ\":146342,\"âĿĥ\":146343,\"ëĹĢ\":146344,\"ï²Ķ\":146345,\"ïºĪ\":146346,\"ðĿĲ»\":146347,\"ðŁĴĬ\":146348,\"ðŁļ«\":146349,\"Ñ°\":146350,\"Ñ³\":146351,\"à¤·\":146352,\"âĹł\":146353,\"ðŁĳ¤\":146354,\"ï¾ĩ\":146355,\"âĺĵ\":146356,\"ðŁįµ\":146357,\"ðŁ¤¨\":146358,\"âĸŃ\":146359,\"à®´\":146360,\"Ü¢\":146361,\"Ü¬\":146362,\"à´®\":146363,\"ðŁķº\":146364,\"Ô¹\":146365,\"Õ£\":146366,\"à´¯\":146367,\"á´Ģ\":146368,\"âĮī\":146369,\"âľĲ\":146370,\"âŀ¦\":146371,\"ê¹½\":146372,\"ëĮľ\":146373,\"ðŁı¥\":146374,\"ðŁĵ©\":146375,\"Ò¹\":146376,\"Óĺ\":146377,\"à¤ħ\":146378,\"âĿ§\":146379,\"ÆĹ\":146380,\"âĹ½\":146381,\"ðŁĳ«\":146382,\"ðŁİ§\":146383,\"ðŁĳ£\":146384,\"âľ»\":146385,\"ðŁĻħ\":146386,\"ðŁĺĸ\":146387,\"ðŁĴ®\":146388,\"àº°\":146389,\"ðŁĶľ\":146390,\"ðŁįĦ\":146391,\"ðŁ¤Ŀ\":146392,\"áĥĿ\":146393,\"áŀĢ\":146394,\"âĩ¦\":146395,\"Ê¾\":146396,\"Ò®\":146397,\"Õ¼\":146398,\"à¤Ĩ\":146399,\"âĹħ\":146400,\"âļĵ\":146401,\"âļĸ\":146402,\"ê¿©\":146403,\"ë¯Ħ\":146404,\"ìĲĲ\":146405,\"ìŀ°\":146406,\"ì§Ń\":146407,\"íĭĭ\":146408,\"íİ¨\":146409,\"íĻ§\":146410,\"ï²ĳ\":146411,\"ðŁİĹ\":146412,\"Ù³\":146413,\"ðŁĳ¸\":146414,\"à¦®\":146415,\"ðŁĳķ\":146416,\"Úµ\":146417,\"âĢ¾\":146418,\"âŀ°\":146419,\"ðŁĳ¯\":146420,\"ðŁİ¼\":146421,\"ðŁıģ\":146422,\"Äº\":146423,\"Êı\":146424,\"Ú³\":146425,\"âı±\":146426,\"ê½Ī\":146427,\"ëĿĮ\":146428,\"ìĮī\":146429,\"ìĹ·\":146430,\"ìŀ´\":146431,\"íĹ¹\":146432,\"íľ¨\":146433,\"ðĿĹ²\":146434,\"ðŁĮĲ\":146435,\"ðŁİĻ\":146436,\"ðŁıµ\":146437,\"íĽĻ\":146438,\"ðĿĳħ\":146439,\"ðŁĺ¶\":146440,\"âĵħ\":146441,\"âķ¥\":146442,\"ðŁįı\":146443,\"ï¦İ\":146444,\"Õ©\":146445,\"ðĿĲĦ\":146446,\"Ó£\":146447,\"Ú¿\":146448,\"âĻļ\":146449,\"ðŁĶĹ\":146450,\"á¸«\":146451,\"âĭ®\":146452,\"âĸ¦\":146453,\"âĽ½\":146454,\"âľµ\":146455,\"ãħĨ\":146456,\"ãħĬ\":146457,\"ëĦĻ\":146458,\"ëĿ¨\":146459,\"ë¥Ħ\":146460,\"ìĦ¦\":146461,\"ì§°\":146462,\"ì§¹\":146463,\"íīĪ\":146464,\"ï§ĳ\":146465,\"ï»ĩ\":146466,\"ðŁĮ¾\":146467,\"ðŁıĸ\":146468,\"ðŁĲĳ\":146469,\"ðŁĴ³\":146470,\"ðŁĵĨ\":146471,\"Ûĩ\":146472,\"Üķ\":146473,\"á½½\":146474,\"ëĦľ\":146475,\"à´²\":146476,\"à´³\":146477,\"àºŃ\":146478,\"áĥĽ\":146479,\"âĿĶ\":146480,\"âĳħ\":146481,\"áĥ¥\":146482,\"ðŁĵħ\":146483,\"âŀ³\":146484,\"á´µ\":146485,\"ï¹¡\":146486,\"ï¹¶\":146487,\"ÎĨ\":146488,\"à¤¥\":146489,\"áīµ\":146490,\"âĿĻ\":146491,\"âĿ±\":146492,\"ëīł\":146493,\"ëİł\":146494,\"ëıĽ\":146495,\"ë¿ħ\":146496,\"ìĶ¸\":146497,\"íĳ¯\":146498,\"íŀī\":146499,\"íŀĽ\":146500,\"ï§Ħ\":146501,\"ïŃĺ\":146502,\"ïº¦\":146503,\"ï»¸\":146504,\"ðĿĳĤ\":146505,\"ðĿĳı\":146506,\"Ïĳ\":146507,\"Úł\":146508,\"áĢĶ\":146509,\"áŀĶ\":146510,\"á¹¢\":146511,\"ëĦ¸\":146512,\"ðĿĲ¨\":146513,\"ðŁĩ´\":146514,\"Õ°\":146515,\"ðŁĳł\":146516,\"ðŁįĨ\":146517,\"ðŁıĢ\":146518,\"ðŁĳĲ\":146519,\"ðŁįĩ\":146520,\"ðŁĲ£\":146521,\"áĪŃ\":146522,\"Üª\":146523,\"ðŁĮĢ\":146524,\"áŀĺ\":146525,\"âĩĦ\":146526,\"ðĿĲĢ\":146527,\"ÊĻ\":146528,\"âĶ¼\":146529,\"ðŁı¿\":146530,\"Æ·\":146531,\"Èł\":146532,\"Ñ½\":146533,\"âĤ¨\":146534,\"ê´Ń\":146535,\"ê¹»\":146536,\"ëĶ¨\":146537,\"ìĪĢ\":146538,\"ì¾°\":146539,\"íĨĪ\":146540,\"ï®§\":146541,\"ï¯½\":146542,\"ðŁĶħ\":146543,\"ðŁĶ®\":146544,\"Å¢\":146545,\"Ê°\":146546,\"Ñ¸\":146547,\"à¤£\":146548,\"âĬĹ\":146549,\"ëªĦ\":146550,\"ï¹·\":146551,\"ïºħ\":146552,\"ðĿĲµ\":146553,\"ðŁĮ¶\":146554,\"ðŁĵ°\":146555,\"ðŁĶ·\":146556,\"ðŁĸĴ\":146557,\"ðŁ¤²\":146558,\"ëī©\":146559,\"ðŁİĨ\":146560,\"ðŁ§Ĳ\":146561,\"ðŁį®\":146562,\"âĨº\":146563,\"âĿ¢\":146564,\"ðŁĳª\":146565,\"ðŁĳ±\":146566,\"âĨ¡\":146567,\"áŀı\":146568,\"Úķ\":146569,\"ðŁį¹\":146570,\"ðŁĴĢ\":146571,\"Ë®\":146572,\"Ó¨\":146573,\"Öħ\":146574,\"à¤ĩ\":146575,\"âĤ¡\":146576,\"âĪķ\":146577,\"âĺī\":146578,\"ê¹¼\":146579,\"ê¼Ĳ\":146580,\"ì½¸\":146581,\"ðĿĲ¬\":146582,\"ðŁıħ\":146583,\"ðŁĳĻ\":146584,\"ðŁĴī\":146585,\"ðŁ¤Ļ\":146586,\"Èĺ\":146587,\"É³\":146588,\"É¹\":146589,\"Ùº\":146590,\"áĢĦ\":146591,\"á¿³\":146592,\"âļĺ\":146593,\"âĿĨ\":146594,\"ëĨī\":146595,\"ìĸį\":146596,\"ìĺĩ\":146597,\"ì¥ĺ\":146598,\"íĸħ\":146599,\"íĻĳ\":146600,\"ï®Ĭ\":146601,\"ï¿Ń\":146602,\"ðĿĴĲ\":146603,\"ðĿĹ¢\":146604,\"ðŁĶĸ\":146605,\"ðŁĶ¨\":146606,\"ðŁļĳ\":146607,\"ðŁļ²\":146608,\"Æ¸\":146609,\"âĹ¥\":146610,\"ðĿĲŃ\":146611,\"ðŁį½\":146612,\"âĹĳ\":146613,\"âĵĩ\":146614,\"ðŁĶ±\":146615,\"âľ¼\":146616,\"ï¹ĥ\":146617,\"âķ±\":146618,\"ãĢĹ\":146619,\"ðŁıĭ\":146620,\"ðŁļ´\":146621,\"ðĿĲ®\":146622,\"Äļ\":146623,\"Õı\":146624,\"Ä¶\":146625,\"áĥĳ\":146626,\"á¹¬\":146627,\"ÄĪ\":146628,\"ÄĴ\":146629,\"Ò°\":146630,\"Óķ\":146631,\"âĲ\":146632,\"âĲ£\":146633,\"âĹ¢\":146634,\"âļĻ\":146635,\"ãħĹ\":146636,\"ê°¬\":146637,\"ê³ª\":146638,\"ê»Ģ\":146639,\"ëĦ´\":146640,\"ëİģ\":146641,\"ëĿĶ\":146642,\"ë¬½\":146643,\"ëŃį\":146644,\"ìĩ³\":146645,\"ì°¹\":146646,\"íĮ¹\":146647,\"íŀĿ\":146648,\"ï®ĭ\":146649,\"ï¶Ī\":146650,\"ðĿĴĤ\":146651,\"ðŁ¥Ģ\":146652,\"ðŁ¦ħ\":146653,\"Êĺ\":146654,\"á¼ĳ\":146655,\"âģİ\":146656,\"ðŁįŀ\":146657,\"âĨĸ\":146658,\"âĨĻ\":146659,\"ðŁİĥ\":146660,\"âĦ¡\":146661,\"âĭ±\":146662,\"ðŁĶį\":146663,\"à²¨\":146664,\"áµĥ\":146665,\"âĶ«\":146666,\"â¦¿\":146667,\"ðŁĩ»\":146668,\"Æ¤\":146669,\"Òı\":146670,\"Ò·\":146671,\"Ûī\":146672,\"à®ķ\":146673,\"á¸³\":146674,\"ï¬±\":146675,\"ðŁĨĶ\":146676,\"ÚŃ\":146677,\"Û¦\":146678,\"áħ¡\":146679,\"âĦ¹\":146680,\"ê¿İ\":146681,\"ëķĶ\":146682,\"ë¼ī\":146683,\"ìļ§\":146684,\"ì²µ\":146685,\"ì´¨\":146686,\"íĬĪ\":146687,\"íĸĲ\":146688,\"ðĿĹĺ\":146689,\"ðŁĩ¿\":146690,\"ðŁİĸ\":146691,\"ðŁĳħ\":146692,\"ðŁĵĺ\":146693,\"ðŁļĻ\":146694,\"ðŁĽµ\":146695,\"à¶½\":146696,\"âĽµ\":146697,\"ðĿĲ³\":146698,\"ðĿĲ¸\":146699,\"âļĶ\":146700,\"ðŁĳŃ\":146701,\"Óĳ\":146702,\"âĶ¯\":146703,\"ðŁħ¿\":146704,\"ðŁĺ¹\":146705,\"ï¿«\":146706,\"â¼¤\":146707,\"ðŁĴĩ\":146708,\"ðŁĵİ\":146709,\"ðŁĸĭ\":146710,\"à¦¸\":146711,\"ðĿĲį\":146712,\"Ä²\":146713,\"Ïĭ\":146714,\"Ñ¬\":146715,\"Ú¬\":146716,\"ÜĴ\":146717,\"á´¬\":146718,\"ï¨Ħ\":146719,\"É£\":146720,\"Ëĳ\":146721,\"Ïµ\":146722,\"ÒĿ\":146723,\"Û¥\":146724,\"Üł\":146725,\"à¹Ľ\":146726,\"áĥķ\":146727,\"áĬķ\":146728,\"á¾¶\":146729,\"âĤ·\":146730,\"âĩ¾\":146731,\"âķ©\":146732,\"âĸĲ\":146733,\"âĺª\":146734,\"âĺ®\":146735,\"âĿļ\":146736,\"âĿŃ\":146737,\"âŀ±\":146738,\"âµİ\":146739,\"ãıĬ\":146740,\"ë©ĵ\":146741,\"ìĹ¾\":146742,\"ìªĦ\":146743,\"íĵĮ\":146744,\"íķ¼\":146745,\"ïŃ¬\":146746,\"ðĿĳĨ\":146747,\"ðĿĳŀ\":146748,\"ðĿĸĬ\":146749,\"ðŁİ¸\":146750,\"ðŁıĦ\":146751,\"ðŁĳµ\":146752,\"ðŁĴł\":146753,\"ðŁĶĺ\":146754,\"ðŁ¥Ĥ\":146755,\"Åª\":146756,\"à·ĥ\":146757,\"á´¼\":146758,\"âĬ°\":146759,\"ë³ı\":146760,\"ë´£\":146761,\"ï¥ľ\":146762,\"ðŁĵĪ\":146763,\"ðŁķ¯\":146764,\"ðŁ§Ģ\":146765,\"âĻĲ\":146766,\"ðŁĨĹ\":146767,\"ðŁĵķ\":146768,\"ðŁ§ģ\":146769,\"Ü«\":146770,\"âĿĲ\":146771,\"Õķ\":146772,\"à½ķ\":146773,\"âŀĿ\":146774,\"à¦ķ\":146775,\"ðĿĲ¶\":146776,\"É¢\":146777,\"ÎĦ\":146778,\"áĨ¢\":146779,\"âĤ±\":146780,\"Õį\":146781,\"à¡ķ\":146782,\"á´°\":146783,\"á¸©\":146784,\"âĽ·\":146785,\"âĿ®\":146786,\"ê¡ĵ\":146787,\"ëı¤\":146788,\"ëĹĲ\":146789,\"ëµĮ\":146790,\"ìĳĪ\":146791,\"íı¿\":146792,\"íĹµ\":146793,\"ðĿĲİ\":146794,\"ðŁĨĺ\":146795,\"ðŁıŁ\":146796,\"É¥\":146797,\"Õ»\":146798,\"à¡Ķ\":146799,\"à¤ĸ\":146800,\"á´¸\":146801,\"âİĻ\":146802,\"âİ¥\":146803,\"âı³\":146804,\"ëģķ\":146805,\"ëĬī\":146806,\"ì¡į\":146807,\"ì¹¡\":146808,\"ï¦¶\":146809,\"ï¬Ł\":146810,\"ï®«\":146811,\"ï®¯\":146812,\"ï±ĥ\":146813,\"ï·»\":146814,\"ïºµ\":146815,\"ðĿĹĶ\":146816,\"ðĿĹ¡\":146817,\"ðŁİ¨\":146818,\"ðŁĶĴ\":146819,\"ÚĽ\":146820,\"à¤§\":146821,\"âŀ¹\":146822,\"áĢĢ\":146823,\"ðŁįħ\":146824,\"âĹ¤\":146825,\"à¤ł\":146826,\"ðŁĲ¥\":146827,\"áĥĴ\":146828,\"ðŁıĿ\":146829,\"ðŁį¼\":146830,\"ãĮ§\":146831,\"âĿĽ\":146832,\"ðŁĲĪ\":146833,\"à¦¯\":146834,\"áĢŀ\":146835,\"ãĢĸ\":146836,\"áŀĻ\":146837,\"à¦ª\":146838,\"ÕĨ\":146839,\"âĬĨ\":146840,\"âľ¾\":146841,\"ðŁĲĹ\":146842,\"ï¹¿\":146843,\"Ä¦\":146844,\"ÜŁ\":146845,\"à²ł\":146846,\"à²¥\":146847,\"áŀī\":146848,\"á´¥\":146849,\"á´©\":146850,\"á½Ģ\":146851,\"á½¡\":146852,\"âĨķ\":146853,\"âŀ¯\":146854,\"ê¡ĳ\":146855,\"ëĳ£\":146856,\"ë±Į\":146857,\"ìĪĳ\":146858,\"ìľĶ\":146859,\"ìŀ½\":146860,\"ì¨į\":146861,\"ðĿĳĢ\":146862,\"ðŁĮĮ\":146863,\"ðŁį¦\":146864,\"ðŁį©\":146865,\"ðŁĲļ\":146866,\"ðŁĵĴ\":146867,\"ðŁĵ¹\":146868,\"ðŁ¥ĳ\":146869,\"Äĭ\":146870,\"ËĹ\":146871,\"Ñ«\":146872,\"Õ¢\":146873,\"Ú°\":146874,\"âĮĢ\":146875,\"âĹĤ\":146876,\"âĹ£\":146877,\"âľĽ\":146878,\"âĿĴ\":146879,\"âĿĺ\":146880,\"âŀĻ\":146881,\"âŀ²\":146882,\"ãİį\":146883,\"ê¡Ĳ\":146884,\"ëŀĸ\":146885,\"ìĬĿ\":146886,\"ìĽ¤\":146887,\"ì¡ĭ\":146888,\"ì¨°\":146889,\"íĹĻ\":146890,\"ï¥¸\":146891,\"ï³į\":146892,\"ï»İ\":146893,\"ðĿĳĵ\":146894,\"ðŁĵĬ\":146895,\"ðŁļ¼\":146896,\"ï¦ģ\":146897,\"ðĿķĴ\":146898,\"ðŁĳľ\":146899,\"ðŁĳ¿\":146900,\"ðŁĩ½\":146901,\"à·Ħ\":146902,\"âĸ´\":146903,\"ãįī\":146904,\"âĬĩ\":146905,\"ðŁ§¸\":146906,\"Ú¡\":146907,\"â¾ĥ\":146908,\"ðŁĹ»\":146909,\"âĵĳ\":146910,\"ðŁ¤¸\":146911,\"ðŁ¤¯\":146912,\"êĴ°\":146913,\"ðĿĲĵ\":146914,\"âĶ´\":146915,\"êĴ±\":146916,\"áĢĺ\":146917,\"âĽĦ\":146918,\"ï¹¹\":146919,\"ÓĶ\":146920,\"áĥ±\":146921,\"Ü¡\":146922,\"ßŀ\":146923,\"âĻı\":146924,\"âľ¸\":146925,\"ìĳ¨\":146926,\"ðĿĲĿ\":146927,\"ðĿĲ¥\":146928,\"ðŁįī\":146929,\"ðŁĳ¼\":146930,\"ðŁ¥Ŀ\":146931,\"ÆĶ\":146932,\"Ý¬\":146933,\"à¤«\":146934,\"àºļ\":146935,\"á´´\":146936,\"á½ĸ\":146937,\"âĤ¶\":146938,\"âİ¢\":146939,\"âĿħ\":146940,\"âŁ«\":146941,\"ãİĽ\":146942,\"ë®¨\":146943,\"ëºĮ\":146944,\"ë¼ĺ\":146945,\"ìĨĿ\":146946,\"ìľ³\":146947,\"ìŀĮ\":146948,\"ì£Ĺ\":146949,\"ìªĺ\":146950,\"ì»¹\":146951,\"ï·¼\":146952,\"ïºĤ\":146953,\"ðĿĲ´\":146954,\"ðĿĲ¼\":146955,\"ðŁĮļ\":146956,\"ðŁı«\":146957,\"ðŁĴ¤\":146958,\"ðŁĴ¶\":146959,\"ðŁĴ¼\":146960,\"Êķ\":146961,\"Ê½\":146962,\"â²Ł\":146963,\"ãīł\":146964,\"ê¡Ĵ\":146965,\"ëľĢ\":146966,\"ìĥ¾\":146967,\"ì¸¤\":146968,\"ï¥ģ\":146969,\"ðĿļĬ\":146970,\"ðŁļĥ\":146971,\"âŀĽ\":146972,\"ìħ´\":146973,\"áĦĭ\":146974,\"âĩĹ\":146975,\"ï§·\":146976,\"âĺĸ\":146977,\"ðŁĲ¦\":146978,\"â¸ľ\":146979,\"ðŁĴ´\":146980,\"ðŁ¤ļ\":146981,\"ãĬĹ\":146982,\"âĮĽ\":146983,\"áĪĽ\":146984,\"à¼º\":146985,\"â½ī\":146986,\"ðŁı¢\":146987,\"âĵŀ\":146988,\"âĺ½\":146989,\"ãĢĻ\":146990,\"ðŁ¤®\":146991,\"ÅĲ\":146992,\"áĥ¬\":146993,\"ðĿĹ»\":146994,\"ðŁįĸ\":146995,\"ÆĬ\":146996,\"ÊŁ\":146997,\"ßĭ\":146998,\"à¤ĭ\":146999,\"áµĶ\":147000,\"á¿ĥ\":147001,\"âĦī\":147002,\"âĮĭ\":147003,\"âı²\":147004,\"âĵĪ\":147005,\"âĵ¢\":147006,\"âķĶ\":147007,\"âļĳ\":147008,\"âĿĭ\":147009,\"âĿİ\":147010,\"âµľ\":147011,\"âµ£\":147012,\"ëĴĪ\":147013,\"ëľģ\":147014,\"ë¶ĩ\":147015,\"ìį»\":147016,\"ìĺŃ\":147017,\"ì§¢\":147018,\"íĹĢ\":147019,\"ï§Ĭ\":147020,\"ï¬¸\":147021,\"ï±¡\":147022,\"ðĿĲº\":147023,\"ðĿĳ§\":147024,\"ðĿĺ¦\":147025,\"ðŁĵ¥\":147026,\"ðŁĺŁ\":147027,\"ðŁ¥Ĳ\":147028,\"Äĸ\":147029,\"É¨\":147030,\"áĢĲ\":147031,\"áĥĵ\":147032,\"áºĵ\":147033,\"á¼¶\":147034,\"á½Ħ\":147035,\"âĤ¤\":147036,\"âĮľ\":147037,\"âĮŁ\":147038,\"âİł\":147039,\"âĽ¸\":147040,\"âµį\":147041,\"âµı\":147042,\"âµĵ\":147043,\"ãĢĺ\":147044,\"ë·¸\":147045,\"íħ¼\":147046,\"ï¦Į\":147047,\"ïŃĦ\":147048,\"ïŃİ\":147049,\"ðĿĻļ\":147050,\"ðĿļĺ\":147051,\"à¼ĵ\":147052,\"ëŃħ\":147053,\"áĲĽ\":147054,\"ãİ¾\":147055,\"ï¨Ģ\":147056,\"ðŁĹ½\":147057,\"âĻŀ\":147058,\"Ëĸ\":147059,\"âĹŀ\":147060,\"ðŁ¤«\":147061,\"ðŁĺĹ\":147062,\"ï½¦\":147063,\"ðŁ¤¢\":147064,\"âģĩ\":147065,\"ãĢµ\":147066,\"ðŁįĶ\":147067,\"áĬł\":147068,\"ðŁĺ¼\":147069,\"ðĿĹ®\":147070,\"ðŁĲ³\":147071,\"ðĿĲĭ\":147072,\"ðŁĨļ\":147073,\"ðŁĶĽ\":147074,\"Ñ»\":147075,\"Ü¨\":147076,\"à®²\":147077,\"âľŀ\":147078,\"âµĻ\":147079,\"êµ£\":147080,\"ì¸¨\":147081,\"ðĿĲľ\":147082,\"ðĿĺ°\":147083,\"ðŁĶ½\":147084,\"Ç»\":147085,\"Ç¿\":147086,\"Êĩ\":147087,\"ÎĲ\":147088,\"ÐĢ\":147089,\"Ñ¡\":147090,\"Ñ²\":147091,\"ÒĴ\":147092,\"Ù¶\":147093,\"ßķ\":147094,\"à¶±\":147095,\"áĲģ\":147096,\"âģŀ\":147097,\"âĸ§\":147098,\"âĽĪ\":147099,\"âľľ\":147100,\"âľ¹\":147101,\"âŁ¹\":147102,\"â¤ĩ\":147103,\"ê²Ĭ\":147104,\"ê¾ľ\":147105,\"ë¯Ĳ\":147106,\"ë³Ĳ\":147107,\"ìħ©\":147108,\"ìĲ¬\":147109,\"ìĳ¹\":147110,\"ï¤Ķ\":147111,\"ï¦ļ\":147112,\"ï¬ł\":147113,\"ïŃĶ\":147114,\"ïº¶\":147115,\"ðĿĴı\":147116,\"ðĿĸĨ\":147117,\"ðĿĹ¶\":147118,\"ðŁıĤ\":147119,\"ðŁĲ½\":147120,\"ðŁĴ©\":147121,\"ðŁĵ½\":147122,\"ðŁĹ¨\":147123,\"ðŁĹº\":147124,\"ðŁĺ¸\":147125,\"ðŁ¥§\":147126,\"ÅĹ\":147127,\"Êİ\":147128,\"ÒĻ\":147129,\"×²\":147130,\"à¤Ī\":147131,\"á¼´\":147132,\"á¿ĳ\":147133,\"âµī\":147134,\"ãħĵ\":147135,\"ì½´\":147136,\"ðĿĸĵ\":147137,\"ðŁĵĹ\":147138,\"ðŁĶª\":147139,\"ðŁĸį\":147140,\"ÏĴ\":147141,\"ðŁĳ¬\":147142,\"áĥĻ\":147143,\"âĨ¬\":147144,\"âĶ¤\":147145,\"âĽ¹\":147146,\"âĻŁ\":147147,\"ðŁļ¶\":147148,\"ðŁĳ¾\":147149,\"âĪĭ\":147150,\"ðŁĲ¯\":147151,\"à¼İ\":147152,\"âľ·\":147153,\"ï¨Ļ\":147154,\"âĶ»\":147155,\"ðŁĳ¹\":147156,\"áĦī\":147157,\"àºª\":147158,\"â¾ı\":147159,\"â½ħ\":147160,\"ãİĸ\":147161,\"Ñ´\":147162,\"Õ®\":147163,\"Ú¼\":147164,\"áĢķ\":147165,\"áĨ¼\":147166,\"ëŃı\":147167,\"ðŁĲ¸\":147168,\"ðŁļ£\":147169,\"ÆĿ\":147170,\"Ô»\":147171,\"áĥ¢\":147172,\"ðŁį¯\":147173,\"É¦\":147174,\"Õ¦\":147175,\"âĻĭ\":147176,\"ï¬«\":147177,\"ðĿĹ¦\":147178,\"Çļ\":147179,\"É±\":147180,\"à¤ī\":147181,\"á´Ħ\":147182,\"âĻĵ\":147183,\"âĽ°\":147184,\"âŁª\":147185,\"ëĥĺ\":147186,\"ë¢¸\":147187,\"ìĤĳ\":147188,\"ï®Ķ\":147189,\"ðĿķĸ\":147190,\"ðĿĹ§\":147191,\"ðŁĩ¼\":147192,\"ðŁĵĭ\":147193,\"ðŁļľ\":147194,\"ðŁ¥¤\":147195,\"Ä®\":147196,\"Å·\":147197,\"ßĬ\":147198,\"à¥¥\":147199,\"à®ª\":147200,\"áŀĦ\":147201,\"áµĢ\":147202,\"á¸ħ\":147203,\"á¼¢\":147204,\"âĪĿ\":147205,\"âĬ¹\":147206,\"âĴ¶\":147207,\"âķ´\":147208,\"âĽ±\":147209,\"âĽ³\":147210,\"âĽº\":147211,\"âŀŁ\":147212,\"ãıĦ\":147213,\"ê¸Ķ\":147214,\"ê¹Ł\":147215,\"ëĩ°\":147216,\"ë¹»\":147217,\"ìĤ¥\":147218,\"ìĽ»\":147219,\"ì°Ł\":147220,\"íĥ°\":147221,\"íĨº\":147222,\"íļ½\":147223,\"ï¤´\":147224,\"ï¥¾\":147225,\"ï³Ŀ\":147226,\"ðĿĲ¦\":147227,\"ðĿĴľ\":147228,\"ðĿĴŁ\":147229,\"ðĿļĹ\":147230,\"ðŁİŃ\":147231,\"ðŁıĵ\":147232,\"ðŁı³\":147233,\"ðŁıº\":147234,\"ðŁĲį\":147235,\"ðŁĳĥ\":147236,\"ðŁĴı\":147237,\"ðŁ¤ĸ\":147238,\"ðŁ¤µ\":147239,\"Õ²\":147240,\"âµĶ\":147241,\"ëĺ¬\":147242,\"ï¦£\":147243,\"ÊĤ\":147244,\"áĨ«\":147245,\"áŀĳ\":147246,\"ðĿĸİ\":147247,\"ðĿĹĸ\":147248,\"áĦĥ\":147249,\"âĩł\":147250,\"áĢ¡\":147251,\"à½Ħ\":147252,\"âŀ¸\":147253,\"ï¦Ļ\":147254,\"âĩļ\":147255,\"ðŁĲ¬\":147256,\"ðŁĲ¢\":147257,\"â¾Ĵ\":147258,\"ðŁĲ¤\":147259,\"ðŁĶ«\":147260,\"ãĢŀ\":147261,\"ï¸º\":147262,\"ðŁĺº\":147263,\"â½´\":147264,\"ðŁĨķ\":147265,\"âģ¿\":147266,\"ðŁį¨\":147267,\"à²ķ\":147268,\"ðŁļĺ\":147269,\"áŀħ\":147270,\"à¦ħ\":147271,\"áŀ¢\":147272,\"à¨ľ\":147273,\"âļĮ\":147274,\"ãĢ½\":147275,\"à·´\":147276,\"âĵĽ\":147277,\"áĢľ\":147278,\"ìĨ¨\":147279,\"Ë©\":147280,\"ÜĹ\":147281,\"âĭ¼\":147282,\"ðŁĻī\":147283,\"ÅĬ\":147284,\"Éĵ\":147285,\"Ê²\":147286,\"Î°\":147287,\"Ñ¼\":147288,\"Ô¿\":147289,\"à¡Ĳ\":147290,\"à¼ľ\":147291,\"à½¦\":147292,\"á¶ľ\":147293,\"âĤ²\":147294,\"âĨ¨\":147295,\"âĬ¥\":147296,\"âķ§\":147297,\"âĻľ\":147298,\"ãĭ¡\":147299,\"ë´¬\":147300,\"ë¶ĳ\":147301,\"ìī¿\":147302,\"ìİħ\":147303,\"ìł±\":147304,\"ì°§\":147305,\"ï²¡\":147306,\"ðĿĴĽ\":147307,\"ðĿķ£\":147308,\"ðĿĹľ\":147309,\"ðŁį²\":147310,\"ðŁİ©\":147311,\"ðŁĲĲ\":147312,\"ðŁĲł\":147313,\"ðŁĳ½\":147314,\"ðŁĴĳ\":147315,\"ðŁĵľ\":147316,\"ðŁķµ\":147317,\"ðŁļĮ\":147318,\"ðŁĽ£\":147319,\"Êĭ\":147320,\"Ó¯\":147321,\"Ù¸\":147322,\"ßĶ\":147323,\"ßĻ\":147324,\"à¡ĵ\":147325,\"á´į\":147326,\"á¸¿\":147327,\"âıº\":147328,\"âĸ¥\":147329,\"ë¤½\":147330,\"íľĳ\":147331,\"ðĿĲ¹\":147332,\"ðĿĸĶ\":147333,\"ðĿļİ\":147334,\"ðŁĵĦ\":147335,\"ðŁ¦·\":147336,\"Æĥ\":147337,\"à¦Ł\":147338,\"âĮĤ\":147339,\"âĺŃ\":147340,\"â²ļ\":147341,\"ëĿķ\":147342,\"ðŁİ£\":147343,\"à®ĩ\":147344,\"à½Ĩ\":147345,\"áħµ\":147346,\"áĹľ\":147347,\"âĢ½\":147348,\"âĮ£\":147349,\"âģ½\":147350,\"ðŁĵ¬\":147351,\"ðŁ¤§\":147352,\"âĩª\":147353,\"â½£\":147354,\"âĹŁ\":147355,\"ï¨Ĺ\":147356,\"êĴª\":147357,\"ðŁĽĢ\":147358,\"ÇĤ\":147359,\"ðŁ¥¶\":147360,\"ðŁİį\":147361,\"ï¿©\":147362,\"ðŁĳĴ\":147363,\"áµĪ\":147364,\"ï¸¿\":147365,\"áħ©\":147366,\"â¾¦\":147367,\"à°¤\":147368,\"á´ĸ\":147369,\"à¨¬\":147370,\"àºĹ\":147371,\"à¼»\":147372,\"Ñº\":147373,\"à¨ª\":147374,\"á´³\":147375,\"ðĿĲĪ\":147376,\"à»Ģ\":147377,\"á´¿\":147378,\"âĤį\":147379,\"âĩ¡\":147380,\"âĽª\":147381,\"ðĿĲĤ\":147382,\"ðĿĴķ\":147383,\"ðŁĲľ\":147384,\"Êį\":147385,\"Ñ±\":147386,\"à½ĥ\":147387,\"ë®Ĳ\":147388,\"ìĽ¡\":147389,\"ìľģ\":147390,\"ðĿĲ¿\":147391,\"ðĿķł\":147392,\"ðŁĳĽ\":147393,\"Æª\":147394,\"Ïº\":147395,\"Ó¬\":147396,\"Ù¿\":147397,\"Ý£\":147398,\"àªī\":147399,\"à®¹\":147400,\"à½ĳ\":147401,\"áĨ¯\":147402,\"áµĩ\":147403,\"âĩ¥\":147404,\"âıª\":147405,\"âĻ°\":147406,\"âļŃ\":147407,\"âļ¾\":147408,\"ãħĦ\":147409,\"êĢ°\":147410,\"ê°Ĺ\":147411,\"ê²ĭ\":147412,\"ê²»\":147413,\"ê¶ľ\":147414,\"ê¼ĩ\":147415,\"ê½¹\":147416,\"ëĤŁ\":147417,\"ëħĪ\":147418,\"ëĭ¢\":147419,\"ë§Ł\":147420,\"ëªĨ\":147421,\"ëµĢ\":147422,\"ì½±\":147423,\"íĩĺ\":147424,\"íľľ\":147425,\"ï§¾\":147426,\"ï±µ\":147427,\"ï²¢\":147428,\"ï²¤\":147429,\"ðĿĴĬ\":147430,\"ðĿĺ¯\":147431,\"ðŁįĹ\":147432,\"ðŁıį\":147433,\"ðŁĲĺ\":147434,\"ðŁĵ¡\":147435,\"ðŁĶŀ\":147436,\"ðŁ¤³\":147437,\"ðŁ¥ģ\":147438,\"ðŁ¥Ĺ\":147439,\"ðŁ¦Ĭ\":147440,\"Äµ\":147441,\"Æ¦\":147442,\"Çµ\":147443,\"É¯\":147444,\"Îı\":147445,\"ÕĦ\":147446,\"Ü¥\":147447,\"à½ģ\":147448,\"á¨ł\":147449,\"âķ«\":147450,\"ãİī\":147451,\"ë·´\":147452,\"ìĨİ\":147453,\"ìİĮ\":147454,\"ì£µ\":147455,\"íĽł\":147456,\"ï§ª\":147457,\"ï³ı\":147458,\"ï»º\":147459,\"ðĿĳģ\":147460,\"ðĿĳĩ\":147461,\"ðĿĴĨ\":147462,\"ðŁİł\":147463,\"ðŁĲĶ\":147464,\"ðŁĳŁ\":147465,\"Åĸ\":147466,\"à¤Į\":147467,\"á¾½\":147468,\"ê¦Ĵ\":147469,\"à®Ł\":147470,\"á´±\":147471,\"ðŁı°\":147472,\"ðŁĲŀ\":147473,\"à½Ģ\":147474,\"áĢħ\":147475,\"âĬ¿\":147476,\"ðŁĲ§\":147477,\"áĽģ\":147478,\"â¼Ī\":147479,\"âĶ¿\":147480,\"ðŁ¥´\":147481,\"â¼¿\":147482,\"ðŁ§ľ\":147483,\"ãħ¿\":147484,\"âĦ«\":147485,\"ãĢ³\":147486,\"ãĬĻ\":147487,\"â¼Ģ\":147488,\"ï¦¬\":147489,\"ðŁı¬\":147490,\"ðŁĵ»\":147491,\"áĬĽ\":147492,\"áĦħ\":147493,\"àºĬ\":147494,\"àºĽ\":147495,\"áħ³\":147496,\"ðŁĳ®\":147497,\"à®±\":147498,\"âĺĩ\":147499,\"ðĿĲı\":147500,\"à´µ\":147501,\"à»ģ\":147502,\"à½ı\":147503,\"à½¢\":147504,\"á¥±\":147505,\"âĤ£\":147506,\"ï¥¦\":147507,\"ïŃĻ\":147508,\"ï´©\":147509,\"ï¹Ĥ\":147510,\"ðŁį£\":147511,\"ðŁķ¹\":147512,\"Ïĸ\":147513,\"à¶¸\":147514,\"àº¢\":147515,\"áĭŃ\":147516,\"âİĿ\":147517,\"âĹĿ\":147518,\"âĻĪ\":147519,\"âĻİ\":147520,\"ê½¥\":147521,\"ì³Ķ\":147522,\"ì¼ĳ\":147523,\"ï±°\":147524,\"ðĿĳĥ\":147525,\"ðŁĮª\":147526,\"ðŁį¡\":147527,\"Åİ\":147528,\"Ê¦\":147529,\"Ñ§\":147530,\"Óİ\":147531,\"Ô´\":147532,\"ÚĪ\":147533,\"ßĵ\":147534,\"ß§\":147535,\"à¤Ķ\":147536,\"áĪ«\":147537,\"áĪµ\":147538,\"áĹ©\":147539,\"á´ł\":147540,\"á¼ł\":147541,\"âĢĹ\":147542,\"âģĳ\":147543,\"âĦı\":147544,\"âĸĩ\":147545,\"â²£\":147546,\"ãĦ³\":147547,\"ãī®\":147548,\"ê³Ĺ\":147549,\"ëĦĴ\":147550,\"ëĸ«\":147551,\"ë¡Ħ\":147552,\"ë¹°\":147553,\"ë½ģ\":147554,\"ìĦģ\":147555,\"ìĮĺ\":147556,\"ìŁĮ\":147557,\"ì³ī\":147558,\"ì¼ķ\":147559,\"ï¬»\":147560,\"ï³İ\":147561,\"ï¹¸\":147562,\"ï¹¾\":147563,\"ðĿĲĨ\":147564,\"ðĿĳ·\":147565,\"ðĿĽ¼\":147566,\"ðŁİı\":147567,\"ðŁİŀ\":147568,\"ðŁĲĻ\":147569,\"ðŁĳĤ\":147570,\"ðŁĵģ\":147571,\"ðŁĸ±\":147572,\"ðŁļį\":147573,\"ðŁļ§\":147574,\"ðŁĽ¡\":147575,\"ðŁ¤Ĵ\":147576,\"ðŁ¥ŀ\":147577,\"ðŁ¥©\":147578,\"ðŁ¦Ģ\":147579,\"ðŁ¦ĸ\":147580,\"Ë¢\":147581,\"Üļ\":147582,\"à®µ\":147583,\"áĢģ\":147584,\"áī°\":147585,\"âıŃ\":147586,\"âĻ¿\":147587,\"ê³ĺ\":147588,\"ëıĿ\":147589,\"ëķĥ\":147590,\"ìħĮ\":147591,\"ìĴ¸\":147592,\"ìĽŁ\":147593,\"íħĦ\":147594,\"íľ«\":147595,\"ï§ĺ\":147596,\"ï¿¬\":147597,\"ðŁı·\":147598,\"ðŁĶ§\":147599,\"ðŁ¥Ī\":147600,\"Æĸ\":147601,\"áŀĩ\":147602,\"áŀĸ\":147603,\"âģº\":147604,\"âĹľ\":147605,\"âŀ©\":147606,\"ê¦Ń\":147607,\"ëĻ¤\":147608,\"ïŃ¼\":147609,\"ðĿĻĸ\":147610,\"ðĿĻ£\":147611,\"ðĿĻ¤\":147612,\"ðŁĮĿ\":147613,\"ðŁĶĳ\":147614,\"ðŁĽł\":147615,\"àºĩ\":147616,\"âĺ£\":147617,\"ãĦ¨\":147618,\"ðĿĸĹ\":147619,\"Óĵ\":147620,\"âĨ£\":147621,\"ðŁ¥ī\":147622,\"ðŁĮł\":147623,\"ðŁĺ½\":147624,\"ãİł\":147625,\"Å§\":147626,\"ðŁĲĴ\":147627,\"ï§Ĳ\":147628,\"ðŁĺ¿\":147629,\"âĪ¬\":147630,\"ðŁĲ®\":147631,\"âŁ±\":147632,\"à²¡\":147633,\"â¾¼\":147634,\"à°²\":147635,\"Ë¶\":147636,\"âĸ¿\":147637,\"ÕĪ\":147638,\"áŀİ\":147639,\"áħ¥\":147640,\"áŀĹ\":147641,\"Õ§\":147642,\"ðŁ¤Ĳ\":147643,\"ðŁįł\":147644,\"à¦¤\":147645,\"à¶º\":147646,\"âĻį\":147647,\"ìĺĻ\":147648,\"íĺĵ\":147649,\"ï¹º\":147650,\"ðŁĽ³\":147651,\"Åī\":147652,\"á´İ\":147653,\"âıľ\":147654,\"âĶ³\":147655,\"ê¸·\":147656,\"ì¡Ķ\":147657,\"ðĿĴĪ\":147658,\"ðĿĴį\":147659,\"ðĿĴ¹\":147660,\"ðĿĵĩ\":147661,\"ðĿķŁ\":147662,\"ðĿĹ¹\":147663,\"ðŁĮħ\":147664,\"ðŁı´\":147665,\"ÄĶ\":147666,\"Ä¤\":147667,\"Åµ\":147668,\"Ç¾\":147669,\"Ïŀ\":147670,\"Ï¶\":147671,\"Ô³\":147672,\"ÜĨ\":147673,\"ß©\":147674,\"à¡Ĵ\":147675,\"à¤ĺ\":147676,\"à¶ļ\":147677,\"à½ĸ\":147678,\"áģĬ\":147679,\"áĥŀ\":147680,\"áĦĤ\":147681,\"áĭ«\":147682,\"á´º\":147683,\"á¸£\":147684,\"á¸ª\":147685,\"á¹Ĥ\":147686,\"á¼·\":147687,\"á¿ĩ\":147688,\"âĩĮ\":147689,\"âı¬\":147690,\"âĻĮ\":147691,\"â®Ł\":147692,\"â´»\":147693,\"âµŁ\":147694,\"ê¦ķ\":147695,\"ê¦ª\":147696,\"ê¦®\":147697,\"ê²Ħ\":147698,\"ê¾Ĳ\":147699,\"ëĥĳ\":147700,\"ëķĭ\":147701,\"ë¡¸\":147702,\"ë¬Ģ\":147703,\"ìĩ¤\":147704,\"ìĪ©\":147705,\"ìľķ\":147706,\"ìŃĺ\":147707,\"ì·°\":147708,\"ì·¸\":147709,\"íľĢ\":147710,\"ï¤£\":147711,\"ï§į\":147712,\"ï±Ħ\":147713,\"ï³ĳ\":147714,\"ðĿĲ¤\":147715,\"ðĿĴĵ\":147716,\"ðĿĴ¶\":147717,\"ðĿĹ¼\":147718,\"ðĿĻĬ\":147719,\"ðŁĩ¾\":147720,\"ðŁĮĽ\":147721,\"ðŁĮ®\":147722,\"ðŁİĩ\":147723,\"ðŁİ²\":147724,\"ðŁıĽ\":147725,\"ðŁĳ¥\":147726,\"ðŁĳ´\":147727,\"ðŁĴĨ\":147728,\"ðŁĵĤ\":147729,\"ðŁĵ§\":147730,\"ðŁķĲ\":147731,\"ðŁĸķ\":147732,\"ðŁĺ§\":147733,\"ðŁĻĢ\":147734,\"ðŁļĴ\":147735,\"ðŁĽ«\":147736,\"ðŁ¤ł\":147737,\"ðŁ¥ļ\":147738,\"ðŁ¥Ľ\":147739,\"ðŁ¥£\":147740,\"Ç¯\":147741,\"È§\":147742,\"ÎĬ\":147743,\"Ò²\":147744,\"×°\":147745,\"Ûĳ\":147746,\"áĥ©\":147747,\"áĦĮ\":147748,\"áĪį\":147749,\"áī¥\":147750,\"áıĤ\":147751,\"âģ±\":147752,\"âĬ¢\":147753,\"âĹĵ\":147754,\"âĿ°\":147755,\"ë¿¡\":147756,\"ìĽ©\":147757,\"íģŃ\":147758,\"íĨ³\":147759,\"íĬĦ\":147760,\"íĵ¸\":147761,\"ï¥£\":147762,\"ï¥´\":147763,\"ï±Ĳ\":147764,\"ï±¯\":147765,\"ï³ļ\":147766,\"ðĿĸĺ\":147767,\"ðĿĺĢ\":147768,\"ðŁĲĬ\":147769,\"ðŁĲĮ\":147770,\"ðŁĳļ\":147771,\"ðŁĵĥ\":147772,\"ðŁļĽ\":147773,\"ðŁļª\":147774,\"ðŁ¤°\":147775,\"Ä´\":147776,\"áĥ®\":147777,\"áĹ¨\":147778,\"âĻ®\":147779,\"â²ŀ\":147780,\"ãĪĶ\":147781,\"ìħį\":147782,\"ãħĥ\":147783,\"ï¥¡\":147784,\"àº¡\":147785,\"Õİ\":147786,\"Õº\":147787,\"â¬Ľ\":147788,\"â½¤\":147789,\"ðĿĲ²\":147790,\"âŀµ\":147791,\"áĢĽ\":147792,\"âĶħ\":147793,\"âĨŁ\":147794,\"â¼Ĭ\":147795,\"ðŁĮ½\":147796,\"ðŁļ¿\":147797,\"ï¦Ĭ\":147798,\"ãĦ£\":147799,\"âĽ©\":147800,\"ï©Ľ\":147801,\"ðŁį±\":147802,\"â¾¨\":147803,\"à´¤\":147804,\"áŀģ\":147805,\"àºŀ\":147806,\"Êļ\":147807,\"ðĿĲĴ\":147808,\"à´±\":147809,\"áŀľ\":147810,\"à®©\":147811,\"à°Ĺ\":147812,\"à´ļ\":147813,\"âĩ£\":147814,\"ï¦ķ\":147815,\"Õħ\":147816,\"Æĺ\":147817,\"âĤ¦\":147818,\"âĶĦ\":147819,\"ï¦Ł\":147820,\"ï¦«\":147821,\"ðĿĲģ\":147822,\"ðĿĲĥ\":147823,\"ðŁį¸\":147824,\"ðŁĲ²\":147825,\"Å¶\":147826,\"Éĸ\":147827,\"ßĺ\":147828,\"à¸¦\":147829,\"à½Ķ\":147830,\"áĨ·\":147831,\"âģķ\":147832,\"âĵĤ\":147833,\"âĿľ\":147834,\"ï¥¥\":147835,\"ï¬®\":147836,\"ðĿĹĿ\":147837,\"ðĿĹ¿\":147838,\"ðŁİ¾\":147839,\"ðŁĹĿ\":147840,\"ðŁ¦Į\":147841,\"Æħ\":147842,\"Çª\":147843,\"ÒĹ\":147844,\"ÜĽ\":147845,\"ßł\":147846,\"à¡ĳ\":147847,\"áī£\":147848,\"áĬŃ\":147849,\"á¹¡\":147850,\"âŀ¼\":147851,\"âŀ¾\":147852,\"â´±\":147853,\"ãī¡\":147854,\"ê³¯\":147855,\"ë½Ī\":147856,\"ìĤĺ\":147857,\"ìīĳ\":147858,\"ì«ĺ\":147859,\"íĮĥ\":147860,\"íĻ°\":147861,\"ï¤Ĺ\":147862,\"ðŁĮ¬\":147863,\"ðŁĮ°\":147864,\"ðŁį¤\":147865,\"Ä»\":147866,\"Åĩ\":147867,\"Æ¨\":147868,\"Éķ\":147869,\"Ò¢\":147870,\"Òº\":147871,\"Öį\":147872,\"×±\":147873,\"Ú±\":147874,\"Ú½\":147875,\"ÛĲ\":147876,\"à¤Ľ\":147877,\"à·Ģ\":147878,\"à¹ļ\":147879,\"àº«\":147880,\"á´¹\":147881,\"á½Ķ\":147882,\"á¾³\":147883,\"âĤĴ\":147884,\"âĨ´\":147885,\"âĩĿ\":147886,\"âīħ\":147887,\"âĮ¨\":147888,\"âĵĵ\":147889,\"âĸ¢\":147890,\"âļ¬\":147891,\"âŀŃ\":147892,\"â²Ĵ\":147893,\"ãİ¿\":147894,\"ê¿´\":147895,\"ëĪ±\":147896,\"ëį¬\":147897,\"ëİĲ\":147898,\"ëĲ«\":147899,\"ëĶ«\":147900,\"ë±ģ\":147901,\"ìĥ¥\":147902,\"íĮ¼\":147903,\"ïŃĵ\":147904,\"ï®¥\":147905,\"ï²°\":147906,\"ðĿĲĩ\":147907,\"ðĿĲĳ\":147908,\"ðĿĳĮ\":147909,\"ðĿĵª\":147910,\"ðĿķļ\":147911,\"ðĿĺª\":147912,\"ðĿĺ¼\":147913,\"ðĿļĽ\":147914,\"ðŁĩ¶\":147915,\"ðŁĮĦ\":147916,\"ðŁĮķ\":147917,\"ðŁĮ¤\":147918,\"ðŁĮ§\":147919,\"ðŁį¬\":147920,\"ðŁİĭ\":147921,\"ðŁİ»\":147922,\"ðŁı¨\":147923,\"ðŁĲĩ\":147924,\"ðŁĳĵ\":147925,\"ðŁĵĲ\":147926,\"ðŁĵĻ\":147927,\"ðŁĶ¼\":147928,\"ðŁķĴ\":147929,\"ðŁĸı\":147930,\"ðŁĸ¥\":147931,\"ðŁ¤¬\":147932,\"ðŁ¥Ĭ\":147933,\"ðŁ¥Ĵ\":147934,\"ßĮ\":147935,\"àºĦ\":147936,\"á¼µ\":147937,\"âķ¡\":147938,\"â²¤\":147939,\"â´¼\":147940,\"âµ¢\":147941,\"ãĪ¯\":147942,\"ëĵ¸\":147943,\"ëŁĩ\":147944,\"ëºį\":147945,\"ðĿĻ§\":147946,\"ðŁįĪ\":147947,\"ðŁĶ¬\":147948,\"ðŁĸĬ\":147949,\"ðŁ¤¾\":147950,\"Ë¡\":147951,\"Ü©\":147952,\"âĮ¡\":147953,\"âŃĳ\":147954,\"â²¦\":147955,\"ë©ī\":147956,\"ì¼Ń\":147957,\"ï¿¤\":147958,\"ðĿĴİ\":147959,\"ðĿĹ¥\":147960,\"ðŁĲµ\":147961,\"ðŁķ¶\":147962,\"ðŁķ¸\":147963,\"ðŁ¤ľ\":147964,\"Õª\":147965,\"áĪĭ\":147966,\"ðŁ¥µ\":147967,\"ï°ģ\":147968,\"áµĲ\":147969,\"âķĵ\":147970,\"áĢĸ\":147971,\"âĭĪ\":147972,\"Éŀ\":147973,\"âŀ®\":147974,\"à¥°\":147975,\"ãĨģ\":147976,\"ðŁĴ±\":147977,\"ðŁıŃ\":147978,\"áĨ¨\":147979,\"ðŁįļ\":147980,\"ðŁ¦Ĳ\":147981,\"á´»\":147982,\"âĺĮ\":147983,\"à´ķ\":147984,\"Õ±\":147985,\"áħ®\":147986,\"ðĿĲĮ\":147987,\"Å¦\":147988,\"àºķ\":147989,\"âľĻ\":147990,\"Ë³\":147991,\"Ôµ\":147992,\"âķĴ\":147993,\"ðĿĹĹ\":147994,\"ðĿĹł\":147995,\"Úļ\":147996,\"à¦§\":147997,\"âĨĿ\":147998,\"âĻī\":147999,\"ãĮ»\":148000,\"ì¹Ĭ\":148001,\"ðĿĹº\":148002,\"ðŁ§ĺ\":148003,\"ì³£\":148004,\"ï¬Ŀ\":148005,\"ðŁĳº\":148006,\"ÇŁ\":148007,\"ÎĪ\":148008,\"Î«\":148009,\"Ñ¥\":148010,\"Ô²\":148011,\"Õ¨\":148012,\"Ü¦\":148013,\"à¦Ĩ\":148014,\"à¦¥\":148015,\"áĲ¢\":148016,\"á¼ģ\":148017,\"á¼ĺ\":148018,\"á¼¦\":148019,\"âĵĿ\":148020,\"ãĪ°\":148021,\"ãİĹ\":148022,\"ê²¡\":148023,\"ë¨Ģ\":148024,\"ì£Ķ\":148025,\"ì´¤\":148026,\"ìµĿ\":148027,\"ï§´\":148028,\"ïŃĬ\":148029,\"ï²Ł\":148030,\"ðĿĲ·\":148031,\"ðĿĳĭ\":148032,\"ðĿĵī\":148033,\"ðĿĺµ\":148034,\"ðŁĴ·\":148035,\"ðŁĽ©\":148036,\"ðŁ§¹\":148037,\"ÅĶ\":148038,\"Êŀ\":148039,\"Ë¥\":148040,\"ÎĮ\":148041,\"Ñ©\":148042,\"ÓĲ\":148043,\"Ół\":148044,\"Úĳ\":148045,\"ÚĴ\":148046,\"ß¨\":148047,\"àªĪ\":148048,\"áĲĥ\":148049,\"á¹¯\":148050,\"âĤĭ\":148051,\"âĤµ\":148052,\"âĦħ\":148053,\"âĦł\":148054,\"âĪ£\":148055,\"âīº\":148056,\"âī»\":148057,\"âĬĽ\":148058,\"âĮĲ\":148059,\"âİĵ\":148060,\"âĺ¸\":148061,\"âĻĴ\":148062,\"âļĴ\":148063,\"âľĩ\":148064,\"âľł\":148065,\"â´·\":148066,\"âµĸ\":148067,\"ãĦ¸\":148068,\"ãī¢\":148069,\"ãī°\":148070,\"êĩ´\":148071,\"ê´¸\":148072,\"êºł\":148073,\"ëĤı\":148074,\"ëĤ¢\":148075,\"ëĲĢ\":148076,\"ëº´\":148077,\"ìĥľ\":148078,\"ìįħ\":148079,\"ì¤«\":148080,\"ì±¦\":148081,\"ìºĳ\":148082,\"ì¼ģ\":148083,\"ì¿³\":148084,\"íĤģ\":148085,\"íħ¡\":148086,\"íĴĤ\":148087,\"íĴī\":148088,\"íľĦ\":148089,\"ïŃª\":148090,\"ï®¬\":148091,\"ï¯¦\":148092,\"ï±ª\":148093,\"ï²ı\":148094,\"ï´Ģ\":148095,\"ï»Ĩ\":148096,\"ï¿¦\":148097,\"ðĿĳĹ\":148098,\"ðĿĸĻ\":148099,\"ðŁĮ¡\":148100,\"ðŁįĿ\":148101,\"ðŁį§\":148102,\"ðŁİ«\":148103,\"ðŁıĺ\":148104,\"ðŁıª\":148105,\"ðŁĲĭ\":148106,\"ðŁĲĽ\":148107,\"ðŁĲº\":148108,\"ðŁĳĸ\":148109,\"ðŁĳŀ\":148110,\"ðŁĳ·\":148111,\"ðŁĵĢ\":148112,\"ðŁĶĦ\":148113,\"ðŁĶĮ\":148114,\"ðŁķĻ\":148115,\"ðŁĻį\":148116,\"ðŁĻİ\":148117,\"ðŁ¦į\":148118,\"Ç°\":148119,\"ÉŁ\":148120,\"ÊĨ\":148121,\"Ô¼\":148122,\"Úľ\":148123,\"à¦¡\":148124,\"à¦¶\":148125,\"áĴĥ\":148126,\"á¼©\":148127,\"âĵķ\":148128,\"â²Ī\":148129,\"ê°°\":148130,\"ê¹ł\":148131,\"êºħ\":148132,\"ëĦ¹\":148133,\"ë¯ĵ\":148134,\"íĲĪ\":148135,\"ï§¶\":148136,\"ï®ĳ\":148137,\"ï²¨\":148138,\"ðĿĴī\":148139,\"ðĿĴĶ\":148140,\"ðĿĹ¨\":148141,\"ðĿĻŀ\":148142,\"ðĿļĴ\":148143,\"ðĿļķ\":148144,\"ðŁĲİ\":148145,\"ðŁ¤ķ\":148146,\"ðŁ§Ķ\":148147,\"Ï°\":148148,\"ÔĿ\":148149,\"âĮĬ\":148150,\"âĴ¾\":148151,\"ãī£\":148152,\"ïŃ©\":148153,\"ðĿļŀ\":148154,\"Êĳ\":148155,\"à¦¦\":148156,\"áĦĩ\":148157,\"âīĥ\":148158,\"â²Ģ\":148159,\"ìŁİ\":148160,\"ðĿĳ¶\":148161,\"ðĿĵ²\":148162,\"ðŁİ·\":148163,\"ðŁļ¹\":148164,\"àºģ\":148165,\"áłł\":148166,\"ãĦļ\":148167,\"ðŁĲ¿\":148168,\"áĽļ\":148169,\"âķ³\":148170,\"ðŁĲŃ\":148171,\"âĴ¹\":148172,\"ðĿĸļ\":148173,\"âĻĸ\":148174,\"ãĪ²\":148175,\"âĨ¾\":148176,\"áĦĨ\":148177,\"âķĽ\":148178,\"ðŁ¤į\":148179,\"â½¥\":148180,\"ðŁĮ¨\":148181,\"âĪ®\":148182,\"ãĮĺ\":148183,\"ãįĳ\":148184,\"ï¹Ģ\":148185,\"âĵĹ\":148186,\"âĬĦ\":148187,\"ðŁı¹\":148188,\"ËĴ\":148189,\"ðŁ¤±\":148190,\"ãıľ\":148191,\"ðŁİĮ\":148192,\"ï¥Ń\":148193,\"à¦£\":148194,\"ðŁİ¹\":148195,\"ãĬŁ\":148196,\"à´°\":148197,\"ðĿĲĶ\":148198,\"à´¨\":148199,\"à½ļ\":148200,\"âľº\":148201,\"Õ·\":148202,\"ðŁĳ³\":148203,\"à¦ľ\":148204,\"âĺĭ\":148205,\"âĻĬ\":148206,\"ãĢĽ\":148207,\"Èĭ\":148208,\"à®°\":148209,\"áĥ¨\":148210,\"âĦķ\":148211,\"íĳĢ\":148212,\"ðĿĵĥ\":148213,\"ðŁ¦Ķ\":148214,\"Ä¿\":148215,\"ÅĢ\":148216,\"Æ³\":148217,\"Éļ\":148218,\"Öĥ\":148219,\"Ü£\":148220,\"ßŁ\":148221,\"à¦Ń\":148222,\"à§¡\":148223,\"à¶»\":148224,\"àº£\":148225,\"à½ĩ\":148226,\"á¸¨\":148227,\"á½Ī\":148228,\"â½¬\":148229,\"ê¡Ķ\":148230,\"ì³Ħ\":148231,\"ï¨ī\":148232,\"ðĿĲ¡\":148233,\"ðĿĺ¢\":148234,\"ðŁį¿\":148235,\"ðŁİŁ\":148236,\"ðŁıī\":148237,\"ðŁĶĲ\":148238,\"ðŁļħ\":148239,\"ðŁ¤½\":148240,\"Æį\":148241,\"Ç«\":148242,\"Ç½\":148243,\"Èļ\":148244,\"Îī\":148245,\"Ó¤\":148246,\"Óª\":148247,\"ÕĬ\":148248,\"Ù¼\":148249,\"Ú´\":148250,\"ßĿ\":148251,\"à¶ľ\":148252,\"á¼ķ\":148253,\"á¿¥\":148254,\"âİŀ\":148255,\"ãĢļ\":148256,\"ãī¤\":148257,\"ê³¸\":148258,\"ê·ģ\":148259,\"ëĵĦ\":148260,\"ëĵķ\":148261,\"ì¨Ķ\":148262,\"ì±¨\":148263,\"ðĿĲ¾\":148264,\"ðĿĳ»\":148265,\"ðĿĶ¼\":148266,\"ðĿķĿ\":148267,\"ðĿĺŃ\":148268,\"ðŁĨĻ\":148269,\"ðŁĵ¤\":148270,\"ðŁĶŁ\":148271,\"ðŁĹ¼\":148272,\"Äľ\":148273,\"Æģ\":148274,\"Æ¿\":148275,\"Ç³\":148276,\"Ç·\":148277,\"Éĥ\":148278,\"Éł\":148279,\"Êī\":148280,\"Ê§\":148281,\"Ë²\":148282,\"Ï´\":148283,\"Õģ\":148284,\"Õŀ\":148285,\"Öĩ\":148286,\"ÛĤ\":148287,\"Ûĵ\":148288,\"ßĹ\":148289,\"ß¦\":148290,\"à¦¹\":148291,\"à®³\":148292,\"à´¸\":148293,\"à»Ĥ\":148294,\"áĪĿ\":148295,\"áĪª\":148296,\"áĭµ\":148297,\"áĲĬ\":148298,\"áĴª\":148299,\"áļĸ\":148300,\"áŀĽ\":148301,\"á´¢\":148302,\"áµı\":148303,\"áµŃ\":148304,\"á¶«\":148305,\"á¸ı\":148306,\"áºĴ\":148307,\"á¼¥\":148308,\"á½ķ\":148309,\"á½¼\":148310,\"âĤĬ\":148311,\"âĦĤ\":148312,\"âĦ©\":148313,\"âĩī\":148314,\"âī£\":148315,\"âĮł\":148316,\"âİŁ\":148317,\"âı®\":148318,\"âķĺ\":148319,\"âĹĸ\":148320,\"âĺ©\":148321,\"âĻĳ\":148322,\"âĻ²\":148323,\"âļĽ\":148324,\"ãĦŁ\":148325,\"ãī±\":148326,\"ãİļ\":148327,\"ê¡ķ\":148328,\"êªĸ\":148329,\"ê°¹\":148330,\"ê²Ĩ\":148331,\"êµĦ\":148332,\"ëĩ¬\":148333,\"ëĭ¯\":148334,\"ëıł\":148335,\"ëĴ¬\":148336,\"ëĸĪ\":148337,\"ëĸ½\":148338,\"ëĺĶ\":148339,\"ëŀ¸\":148340,\"ë¸ħ\":148341,\"ë»ł\":148342,\"ë¿Ł\":148343,\"ìĤµ\":148344,\"ìĬī\":148345,\"ìľ°\":148346,\"ìłĭ\":148347,\"ìłĶ\":148348,\"ì¥¡\":148349,\"ìŃĿ\":148350,\"ì¼¬\":148351,\"íĪĩ\":148352,\"íīľ\":148353,\"íįĦ\":148354,\"íĽ¾\":148355,\"íĿ£\":148356,\"ï¤©\":148357,\"ï¤¯\":148358,\"ï¦ľ\":148359,\"ï¦§\":148360,\"ï§ľ\":148361,\"ï¨Ī\":148362,\"ï¬ª\":148363,\"ï¬´\":148364,\"ïŃ½\":148365,\"ï®ī\":148366,\"ï¯ŀ\":148367,\"ï°Ĵ\":148368,\"ï±ĩ\":148369,\"ï¿Ħ\":148370,\"ðĿĲħ\":148371,\"ðĿĳĦ\":148372,\"ðĿĳº\":148373,\"ðĿĴĹ\":148374,\"ðĿĵ®\":148375,\"ðĿķĽ\":148376,\"ðĿķŀ\":148377,\"ðĿĸĳ\":148378,\"ðĿĺģ\":148379,\"ðĿĺĨ\":148380,\"ðĿĺ¶\":148381,\"ðĿĻ¢\":148382,\"ðĿļľ\":148383,\"ðŁĮĥ\":148384,\"ðŁĮ¦\":148385,\"ðŁįŁ\":148386,\"ðŁİİ\":148387,\"ðŁıĻ\":148388,\"ðŁĲ©\":148389,\"ðŁĲ«\":148390,\"ðŁĲ´\":148391,\"ðŁĳĶ\":148392,\"ðŁĵī\":148393,\"ðŁĵĽ\":148394,\"ðŁĶī\":148395,\"ðŁĸ¼\":148396,\"ðŁĹĥ\":148397,\"ðŁĹ¯\":148398,\"ðŁļĩ\":148399,\"ðŁļĲ\":148400,\"ðŁļµ\":148401,\"ðŁ¤¶\":148402,\"ðŁ¥ĭ\":148403,\"ðŁ¥ĵ\":148404,\"ðŁ¥®\":148405,\"ðŁ¦İ\":148406,\"ðŁ¦ł\":148407,\"ðŁ§Ĵ\":148408,\"ðŁ§¨\":148409,\"ÆĲ\":148410,\"Çį\":148411,\"ÓĢ\":148412,\"ÔĽ\":148413,\"à²°\":148414,\"à´Ļ\":148415,\"áĢĴ\":148416,\"ê²Ŀ\":148417,\"ê¹¹\":148418,\"ë©¥\":148419,\"ìĸĶ\":148420,\"ï¤ģ\":148421,\"ï¤ı\":148422,\"ï¦ī\":148423,\"ï¦ĵ\":148424,\"ï§ī\":148425,\"ï²Ŀ\":148426,\"ðĿĹŀ\":148427,\"ðĿĹ±\":148428,\"ðŁĮĭ\":148429,\"ðŁį¶\":148430,\"à¦ļ\":148431,\"ìķľ\":148432,\"ðĿĲ¯\":148433,\"ðĿļĿ\":148434,\"à°¨\":148435,\"à½ĺ\":148436,\"à½ł\":148437,\"á¡¥\":148438,\"á¾°\":148439,\"âģį\":148440,\"âĶ°\":148441,\"â¬ľ\":148442,\"ðĿĲł\":148443,\"ðĿĳ¯\":148444,\"ðĿĹĽ\":148445,\"ðĿĵ»\":148446,\"ðĿĸĪ\":148447,\"âŀ»\":148448,\"áŀł\":148449,\"â¡±\":148450,\"â»ĳ\":148451,\"ðŁ§µ\":148452,\"ï¦¢\":148453,\"ðŁĳĺ\":148454,\"ãĤĶ\":148455,\"â¼Ł\":148456,\"ãĬ¤\":148457,\"ï¦Ŀ\":148458,\"ãĮ¦\":148459,\"âĢ¸\":148460,\"ðŁĶĻ\":148461,\"ã¹\":148462,\"ã¹¦\":148463,\"ï¹ħ\":148464,\"ï©Į\":148465,\"ãī¨\":148466,\"ï¸½\":148467,\"âį¥\":148468,\"ðŁļī\":148469,\"ðŁ¥ľ\":148470,\"âĵľ\":148471,\"â»Ŀ\":148472,\"ï¨ľ\":148473,\"ðŁĴĴ\":148474,\"áĦĳ\":148475,\"â¾ŀ\":148476,\"ï¨ģ\":148477,\"à´ª\":148478,\"áĦİ\":148479,\"âŀ´\":148480,\"à¦·\":148481,\"áħ¬\":148482,\"áŀ§\":148483,\"âĨ¢\":148484,\"âķ¦\":148485,\"âľĳ\":148486,\"Ë¬\":148487,\"ÕĲ\":148488,\"à¼Ķ\":148489,\"Ê¤\":148490,\"Ë¨\":148491,\"à¤ŀ\":148492,\"à»ĥ\":148493,\"à¼ļ\":148494,\"âĵ¥\":148495,\"âķľ\":148496,\"ðŁĲĸ\":148497,\"á¼Ļ\":148498,\"á¼¤\":148499,\"ìĨ°\":148500,\"ÈĤ\":148501,\"Ê±\":148502,\"à®ļ\":148503,\"áĥ§\":148504,\"á´ĭ\":148505,\"á´®\":148506,\"âĿ¡\":148507,\"âŀ·\":148508,\"ëĿ¡\":148509,\"ï§¢\":148510,\"ï¯¡\":148511,\"ðĿķķ\":148512,\"ðŁħ°\":148513,\"ðŁ¦¸\":148514,\"Ç¸\":148515,\"Óŀ\":148516,\"Ô¶\":148517,\"ÖĨ\":148518,\"Úģ\":148519,\"Ûĭ\":148520,\"áİ¥\":148521,\"á¾¿\":148522,\"âĶŃ\":148523,\"âĶ®\":148524,\"êĢĢ\":148525,\"ê±ĺ\":148526,\"ëĲŃ\":148527,\"ë½Ħ\":148528,\"ìĶĲ\":148529,\"ì¸Į\":148530,\"íģł\":148531,\"íĻ±\":148532,\"ï¥ī\":148533,\"ï¨ĸ\":148534,\"ðĿĳ´\":148535,\"ðĿĸĴ\":148536,\"ðĿĺ¨\":148537,\"ðĿļĮ\":148538,\"ðŁĲ¡\":148539,\"ðŁĳ¢\":148540,\"ðŁĵĶ\":148541,\"Åħ\":148542,\"Æİ\":148543,\"È©\":148544,\"Òª\":148545,\"Ôĥ\":148546,\"áĥ«\":148547,\"á¸ĩ\":148548,\"âĽŁ\":148549,\"ê»Ń\":148550,\"ë¨Ħ\":148551,\"ìŁĢ\":148552,\"ì¤´\":148553,\"íļĲ\":148554,\"ï¤³\":148555,\"ðŁŁ¢\":148556,\"Æ§\":148557,\"È¼\":148558,\"ÊĿ\":148559,\"ËĦ\":148560,\"Ëħ\":148561,\"Ëį\":148562,\"Ë§\":148563,\"Ò¥\":148564,\"ÕĶ\":148565,\"Øı\":148566,\"Ø¼\":148567,\"ßĲ\":148568,\"ßľ\":148569,\"à¤ĵ\":148570,\"à¦Ļ\":148571,\"à®ĵ\":148572,\"à¶´\":148573,\"à¼į\":148574,\"à¼Ĵ\":148575,\"à½£\":148576,\"áĢĤ\":148577,\"áĢĬ\":148578,\"áĦĦ\":148579,\"áĪĺ\":148580,\"áĭĬ\":148581,\"áĮį\":148582,\"áĳĭ\":148583,\"áŀĤ\":148584,\"áł¢\":148585,\"á¡Ŀ\":148586,\"á´¦\":148587,\"áµį\":148588,\"áµ¨\":148589,\"á¸¡\":148590,\"á¸¯\":148591,\"á¼£\":148592,\"âģĤ\":148593,\"âĦĺ\":148594,\"âĦľ\":148595,\"âĦ³\":148596,\"âĦµ\":148597,\"âĨ¦\":148598,\"âĩĨ\":148599,\"âĪ·\":148600,\"âĬļ\":148601,\"âĮ«\":148602,\"âĮ¯\":148603,\"âİĽ\":148604,\"âİľ\":148605,\"âİ¤\":148606,\"âİ¦\":148607,\"âİ®\":148608,\"âĳī\":148609,\"âĶī\":148610,\"âķĻ\":148611,\"âĸĤ\":148612,\"âĹŃ\":148613,\"âĺĬ\":148614,\"âĺį\":148615,\"âĺĴ\":148616,\"âļĨ\":148617,\"âĽ§\":148618,\"âĽ²\":148619,\"âŀĺ\":148620,\"â¥Ħ\":148621,\"â´³\":148622,\"â´½\":148623,\"âµĪ\":148624,\"ãī¯\":148625,\"ãİĳ\":148626,\"ã§¬\":148627,\"êĻ¬\":148628,\"ê§ģ\":148629,\"ê³¬\":148630,\"ê´ŀ\":148631,\"ê»ľ\":148632,\"ëħĵ\":148633,\"ëĭ¼\":148634,\"ëįĸ\":148635,\"ëĸ±\":148636,\"ëĿ°\":148637,\"ë¡¹\":148638,\"ë¢´\":148639,\"ë£Ģ\":148640,\"ë¤ł\":148641,\"ë¨ķ\":148642,\"ëŃ¥\":148643,\"ìĦ¶\":148644,\"ìħ¤\":148645,\"ìĮķ\":148646,\"ìįª\":148647,\"ìı©\":148648,\"ìĴĢ\":148649,\"ìĶ¯\":148650,\"ìĿĶ\":148651,\"ìĿľ\":148652,\"ìłŃ\":148653,\"ì§¦\":148654,\"ì¨©\":148655,\"ì²¬\":148656,\"ì³¥\":148657,\"ì¼¯\":148658,\"íĢ«\":148659,\"íĢŃ\":148660,\"íĥ¸\":148661,\"íĵģ\":148662,\"íķ¬\":148663,\"íĹ¸\":148664,\"íĽķ\":148665,\"íľŃ\":148666,\"íĿĹ\":148667,\"ï¤Į\":148668,\"ï¤ª\":148669,\"ï§¿\":148670,\"ï¬Ħ\":148671,\"ï¬ħ\":148672,\"ïŃĳ\":148673,\"ïŃ«\":148674,\"ïŃº\":148675,\"ï®Ĥ\":148676,\"ï®¢\":148677,\"ï®¨\":148678,\"ï°İ\":148679,\"ï°ł\":148680,\"ï²£\":148681,\"ï³Ĳ\":148682,\"ï³Ĵ\":148683,\"ï³ĺ\":148684,\"ï³ľ\":148685,\"ï¹¼\":148686,\"ï¿¨\":148687,\"ðĿĲ©\":148688,\"ðĿĴļ\":148689,\"ðĿķĶ\":148690,\"ðĿķ¤\":148691,\"ðĿĸĮ\":148692,\"ðĿĹ£\":148693,\"ðĿĹ°\":148694,\"ðĿĹ´\":148695,\"ðĿĺĤ\":148696,\"ðĿĺ¥\":148697,\"ðĿĺ®\":148698,\"ðĿĺ¸\":148699,\"ðĿĻĢ\":148700,\"ðĿĽ¾\":148701,\"ðĿľı\":148702,\"ðŁĮģ\":148703,\"ðŁĮľ\":148704,\"ðŁĮ¥\":148705,\"ðŁĮ¯\":148706,\"ðŁįĲ\":148707,\"ðŁİĴ\":148708,\"ðŁıĶ\":148709,\"ðŁıķ\":148710,\"ðŁı®\":148711,\"ðŁĲĤ\":148712,\"ðŁĲī\":148713,\"ðŁĲ¹\":148714,\"ðŁĶķ\":148715,\"ðŁĶļ\":148716,\"ðŁķĳ\":148717,\"ðŁķ£\":148718,\"ðŁĹŀ\":148719,\"ðŁĹ¡\":148720,\"ðŁĹ¿\":148721,\"ðŁļĨ\":148722,\"ðŁļĬ\":148723,\"ðŁļĵ\":148724,\"ðŁļķ\":148725,\"ðŁļ¾\":148726,\"ðŁĽģ\":148727,\"ðŁĽİ\":148728,\"ðŁĽı\":148729,\"ðŁ¤´\":148730,\"ðŁ¥ķ\":148731,\"ðŁ¥ĸ\":148732,\"ðŁ¥ł\":148733,\"ðŁ¥¥\":148734,\"ðŁ¦Ĩ\":148735,\"ðŁ¦ī\":148736,\"ðŁ¦ļ\":148737,\"ðŁ§ĳ\":148738,\"ðŁ§¥\":148739,\"ðŁ§¿\":148740,\"Å°\":148741,\"Æº\":148742,\"É§\":148743,\"àªĩ\":148744,\"à®£\":148745,\"áĪĪ\":148746,\"áĬ¤\":148747,\"áĭ®\":148748,\"áĮĪ\":148749,\"áĮµ\":148750,\"á¥²\":148751,\"âĵŁ\":148752,\"êĻ³\":148753,\"ê°Ĭ\":148754,\"ëķģ\":148755,\"ëķ¨\":148756,\"ìĬģ\":148757,\"ï¦µ\":148758,\"ï¬²\":148759,\"ðĿĸį\":148760,\"ðĿĺĮ\":148761,\"ðĿĺ³\":148762,\"ðĿĻ©\":148763,\"ðŁįĻ\":148764,\"ðŁĸĸ\":148765,\"áī³\":148766,\"áĭ¨\":148767,\"áĸĩ\":148768,\"áŀĮ\":148769,\"á¹§\":148770,\"âķª\":148771,\"âŀļ\":148772,\"â²ĺ\":148773,\"êķ\":148774,\"êķ¥\":148775,\"ï¤·\":148776,\"ï®£\":148777,\"ï¯ł\":148778,\"ðĿĴĸ\":148779,\"ðĿķĺ\":148780,\"ðĿĸĩ\":148781,\"ðĿĹŁ\":148782,\"ðĿĹª\":148783,\"ðĿĹ¯\":148784,\"ðĿĻł\":148785,\"ðŁĵı\":148786,\"à¦Ĺ\":148787,\"âĴ»\":148788,\"â²ł\":148789,\"ðĿĵµ\":148790,\"Ê£\":148791,\"à°ľ\":148792,\"áĬ¢\":148793,\"áŀĲ\":148794,\"á¸·\":148795,\"âĦĽ\":148796,\"âĩĢ\":148797,\"âĩĬ\":148798,\"êĴ¦\":148799,\"ê¦ł\":148800,\"ï®¤\":148801,\"ðŁįĽ\":148802,\"ðŁ¤Ľ\":148803,\"á¨¾\":148804,\"âŀº\":148805,\"áķ¯\":148806,\"áĽı\":148807,\"âĩĤ\":148808,\"âĶ¹\":148809,\"âĻĹ\":148810,\"ðŁĸ¨\":148811,\"ê¦ı\":148812,\"àª°\":148813,\"áļ¨\":148814,\"ðŁ¤¥\":148815,\"ðŁ§¢\":148816,\"ãĲĤ\":148817,\"ãĦ¥\":148818,\"ðŁĸĮ\":148819,\"â¼Ĵ\":148820,\"ãĬ§\":148821,\"âį©\":148822,\"ðŁ¦ĳ\":148823,\"âĶ·\":148824,\"ï©Ĳ\":148825,\"ï©¡\":148826,\"ðĵĪ\":148827,\"ðĵĪĴ\":148828,\"â»Ħ\":148829,\"ï¨Ĵ\":148830,\"âĦª\":148831,\"Ò§\":148832,\"ÚĮ\":148833,\"âĢ¶\":148834,\"âºł\":148835,\"â»ģ\":148836,\"âĨ¸\":148837,\"áĦĲ\":148838,\"ãħĲ\":148839,\"à»Ħ\":148840,\"áĹª\":148841,\"âĨ¼\":148842,\"âĩĭ\":148843,\"âĩĺ\":148844,\"âĮĳ\":148845,\"âĸ©\":148846,\"ðĿĲĹ\":148847,\"ÄĬ\":148848,\"à¦ī\":148849,\"ìīł\":148850,\"É¤\":148851,\"ßį\":148852,\"ßı\":148853,\"áµĹ\":148854,\"âĤ¥\":148855,\"âĵī\":148856,\"âĶł\":148857,\"âĶ¨\":148858,\"âķĦ\":148859,\"ä¤\":148860,\"ä¤Ģ\":148861,\"ê»¸\":148862,\"ï®ģ\":148863,\"ðĵĤ\":148864,\"ðĵĤĥ\":148865,\"ðŁ¦ķ\":148866,\"ÆĽ\":148867,\"à¦ĩ\":148868,\"ãıĺ\":148869,\"ï®¼\":148870,\"Úĵ\":148871,\"ÚĿ\":148872,\"à¦ĵ\":148873,\"à¶¯\":148874,\"á´ħ\":148875,\"á½Ļ\":148876,\"âģ¼\":148877,\"âĸİ\":148878,\"â¼©\":148879,\"äĶ\":148880,\"äĶĢ\":148881,\"ë»¡\":148882,\"ìĽ½\":148883,\"íģĦ\":148884,\"ï¥¼\":148885,\"ï±ī\":148886,\"ï¹»\":148887,\"ðĿĸĭ\":148888,\"ðĿĻĪ\":148889,\"ðĿĻª\":148890,\"ðĿĻ¶\":148891,\"ðŁĲĦ\":148892,\"ðŁĲĨ\":148893,\"áİ¢\":148894,\"á¸Į\":148895,\"âĿ´\":148896,\"ðŁı¸\":148897,\"ÈĿ\":148898,\"É¸\":148899,\"Îħ\":148900,\"Ïľ\":148901,\"Ó¢\":148902,\"Õ¹\":148903,\"à´ħ\":148904,\"àºĪ\":148905,\"áĭ°\":148906,\"áĳİ\":148907,\"áłµ\":148908,\"á¡ł\":148909,\"á´ī\":148910,\"á¸µ\":148911,\"á¿´\":148912,\"âĵ£\":148913,\"âĶ¶\":148914,\"â½¯\":148915,\"ê²¥\":148916,\"ê¿ĺ\":148917,\"ëģİ\":148918,\"ëİĪ\":148919,\"ëĶ¯\":148920,\"ë²°\":148921,\"ìĺ¯\":148922,\"ìĽ¸\":148923,\"ìŀĹ\":148924,\"ì§ĺ\":148925,\"ì¬¬\":148926,\"ì·¬\":148927,\"íģħ\":148928,\"íĵĶ\":148929,\"íĽĿ\":148930,\"ï¤®\":148931,\"ï¤¹\":148932,\"ï¥²\":148933,\"ï¯ĸ\":148934,\"ðĿĵħ\":148935,\"ðĿĻĦ\":148936,\"ðŁĵ¶\":148937,\"ðŁĹĴ\":148938,\"ðŁ¥Ķ\":148939,\"ðŁ¥Ń\":148940,\"Å®\":148941,\"Å´\":148942,\"Æī\":148943,\"Æ«\":148944,\"Çģ\":148945,\"Ç£\":148946,\"Çº\":148947,\"Ç¼\":148948,\"Èį\":148949,\"È¯\":148950,\"Éľ\":148951,\"Ê¬\":148952,\"Ëģ\":148953,\"Ë¤\":148954,\"Ëµ\":148955,\"ÏĽ\":148956,\"Ò¤\":148957,\"Ò¬\":148958,\"Óı\":148959,\"ÓĽ\":148960,\"Ó¡\":148961,\"Ó³\":148962,\"ÔĮ\":148963,\"Ô¬\":148964,\"Õ³\":148965,\"Ù»\":148966,\"Úī\":148967,\"Ú§\":148968,\"Üľ\":148969,\"ßª\":148970,\"à¤Ŀ\":148971,\"à¦Ľ\":148972,\"à¨Ĩ\":148973,\"àªķ\":148974,\"àª¡\":148975,\"à®İ\":148976,\"à°¬\":148977,\"àµ»\":148978,\"àµ¼\":148979,\"à¶ł\":148980,\"à¶Ń\":148981,\"à¶¶\":148982,\"à·Ĩ\":148983,\"à¼½\":148984,\"áĢļ\":148985,\"áħ¢\":148986,\"áĨ¸\":148987,\"áĪĢ\":148988,\"áĪķ\":148989,\"áĪ°\":148990,\"áī¡\":148991,\"áī¤\":148992,\"áĬ¦\":148993,\"áĬ«\":148994,\"áĭĭ\":148995,\"áĭį\":148996,\"áİ¯\":148997,\"áĳŃ\":148998,\"áķĹ\":148999,\"áŁĽ\":149000,\"á¥Ĵ\":149001,\"á©ī\":149002,\"áŃº\":149003,\"á´¡\":149004,\"áµĺ\":149005,\"áµĽ\":149006,\"á¶ł\":149007,\"á¸ģ\":149008,\"á¸ĭ\":149009,\"á¹Ļ\":149010,\"á¹Ŀ\":149011,\"á¹¦\":149012,\"áºħ\":149013,\"á¼Ĥ\":149014,\"á½ĥ\":149015,\"á½į\":149016,\"á½§\":149017,\"á¾·\":149018,\"âĢµ\":149019,\"âĤİ\":149020,\"âĦĿ\":149021,\"âħĢ\":149022,\"âĨŀ\":149023,\"âĨ§\":149024,\"âĩħ\":149025,\"âĪĥ\":149026,\"âīı\":149027,\"âī½\":149028,\"âĬŀ\":149029,\"âĬ¡\":149030,\"âĬ§\":149031,\"âĬ¶\":149032,\"âĭĦ\":149033,\"âİĴ\":149034,\"âİ¡\":149035,\"âİ£\":149036,\"âİª\":149037,\"âıİ\":149038,\"âĵĥ\":149039,\"âĵĸ\":149040,\"âĵ¨\":149041,\"âķĭ\":149042,\"âķĸ\":149043,\"âķ¢\":149044,\"âķ²\":149045,\"âĸĨ\":149046,\"âĸĬ\":149047,\"âĸį\":149048,\"âĸ®\":149049,\"âĺ¡\":149050,\"âĺ¦\":149051,\"âĺ±\":149052,\"âĺ¿\":149053,\"âĻĺ\":149054,\"âĻĿ\":149055,\"âļ°\":149056,\"âĽĳ\":149057,\"âŀª\":149058,\"â¤Ŀ\":149059,\"â¤¢\":149060,\"â¤·\":149061,\"â§«\":149062,\"â¨Ń\":149063,\"â¨¯\":149064,\"â±£\":149065,\"â²İ\":149066,\"âµĽ\":149067,\"ãħĶ\":149068,\"ãĪı\":149069,\"ãī²\":149070,\"ãī³\":149071,\"ãĬĳ\":149072,\"ãĭĽ\":149073,\"ãİĲ\":149074,\"ê²¤\":149075,\"ê·¿\":149076,\"ê¹ŀ\":149077,\"ê»¨\":149078,\"ê¼į\":149079,\"ê¿¸\":149080,\"ëĥ¬\":149081,\"ëĩĲ\":149082,\"ëĭł\":149083,\"ëį¯\":149084,\"ëĹĮ\":149085,\"ëĹĳ\":149086,\"ë¥Ģ\":149087,\"ëªĥ\":149088,\"ëª¯\":149089,\"ë±¡\":149090,\"ë³ĵ\":149091,\"ë³½\":149092,\"ëµľ\":149093,\"ìĤ³\":149094,\"ìħ¥\":149095,\"ìĩ½\":149096,\"ìı¨\":149097,\"ìı¸\":149098,\"ìķį\":149099,\"ìĸĸ\":149100,\"ìŁ¨\":149101,\"ì¢ĥ\":149102,\"ì¢į\":149103,\"ì¥ĳ\":149104,\"ì§¼\":149105,\"ì©ĥ\":149106,\"ì®ľ\":149107,\"ì®¸\":149108,\"ì³ĳ\":149109,\"ì´¥\":149110,\"ì¾ĥ\":149111,\"íħ¦\":149112,\"íĪ¿\":149113,\"íĵ½\":149114,\"íķ³\":149115,\"íĸı\":149116,\"íĹł\":149117,\"íĿ«\":149118,\"ï¤ĵ\":149119,\"ï¤ĺ\":149120,\"ï¥İ\":149121,\"ï¥¶\":149122,\"ï¦ħ\":149123,\"ï¦½\":149124,\"ï§ĩ\":149125,\"ï¬Ĩ\":149126,\"ï¬³\":149127,\"ï®ĩ\":149128,\"ï®Ī\":149129,\"ï®Ŀ\":149130,\"ï®©\":149131,\"ï®±\":149132,\"ï¯ĺ\":149133,\"ï¯Ļ\":149134,\"ï¯¢\":149135,\"ï¯£\":149136,\"ï¯¤\":149137,\"ï¯¥\":149138,\"ï±Ĥ\":149139,\"ï²Ĩ\":149140,\"ï²ª\":149141,\"ï´¼\":149142,\"ïºī\":149143,\"ïºĬ\":149144,\"ïº¥\":149145,\"ðĿĳ¨\":149146,\"ðĿĳ©\":149147,\"ðĿĳ²\":149148,\"ðĿĴĮ\":149149,\"ðĿĴª\":149150,\"ðĿĴ®\":149151,\"ðĿĵĤ\":149152,\"ðĿĵĪ\":149153,\"ðĿĵ¯\":149154,\"ðĿĶ¨\":149155,\"ðĿķĢ\":149156,\"ðĿķĨ\":149157,\"ðĿķ¦\":149158,\"ðĿķ§\":149159,\"ðĿķ«\":149160,\"ðĿķ·\":149161,\"ðĿĹµ\":149162,\"ðĿĹ¸\":149163,\"ðĿĺĦ\":149164,\"ðĿĺĻ\":149165,\"ðĿĺł\":149166,\"ðĿĺ¬\":149167,\"ðĿĻį\":149168,\"ðĿĻĳ\":149169,\"ðĿĻ¡\":149170,\"ðĿĻ¨\":149171,\"ðĿĻ·\":149172,\"ðĿļį\":149173,\"ðĿĽ¿\":149174,\"ðŁĥ\":149175,\"ðŁĥı\":149176,\"ðŁħĺ\":149177,\"ðŁī\":149178,\"ðŁīĳ\":149179,\"ðŁİ¡\":149180,\"ðŁİª\":149181,\"ðŁİ±\":149182,\"ðŁİ³\":149183,\"ðŁİº\":149184,\"ðŁıİ\":149185,\"ðŁıĹ\":149186,\"ðŁıļ\":149187,\"ðŁıŀ\":149188,\"ðŁı¦\":149189,\"ðŁı§\":149190,\"ðŁĲģ\":149191,\"ðŁĲħ\":149192,\"ðŁĲĵ\":149193,\"ðŁĴĤ\":149194,\"ðŁĵĳ\":149195,\"ðŁĵĵ\":149196,\"ðŁĵ¨\":149197,\"ðŁĵ«\":149198,\"ðŁĶĭ\":149199,\"ðŁĶŃ\":149200,\"ðŁĶ¯\":149201,\"ðŁķĹ\":149202,\"ðŁļĤ\":149203,\"ðŁļ¢\":149204,\"ðŁļ¦\":149205,\"ðŁļ¬\":149206,\"ðŁĽĭ\":149207,\"ðŁĽĮ\":149208,\"ðŁĽ¬\":149209,\"ðŁĽ¶\":149210,\"ðŁŁ¡\":149211,\"ðŁ¥ĺ\":149212,\"ðŁ¥Ł\":149213,\"ðŁ¥¦\":149214,\"ðŁ¦ĩ\":149215,\"ðŁ¦Ī\":149216,\"ðŁ§Ĭ\":149217,\"ðŁ§Ĺ\":149218,\"ðŁ§¤\":149219,\"Ê·\":149220,\"Ë¹\":149221,\"á¹ļ\":149222,\"á½¥\":149223,\"âĦŁ\":149224,\"ê²¯\":149225,\"ê»«\":149226,\"ë°·\":149227,\"ìĥĨ\":149228,\"ìĽĿ\":149229,\"ì¨ī\":149230,\"ì«ı\":149231,\"ï¯ķ\":149232,\"ðĿľĭ\":149233,\"É²\":149234,\"ÒŃ\":149235,\"ÓĪ\":149236,\"à½Ľ\":149237,\"áĭĵ\":149238,\"áĻŃ\":149239,\"áł©\":149240,\"á¹®\":149241,\"âĦĴ\":149242,\"âĨ»\":149243,\"âµĥ\":149244,\"ëĢ¨\":149245,\"ëł§\":149246,\"ìī¥\":149247,\"ìĮľ\":149248,\"ìĹ¶\":149249,\"ì¨Ī\":149250,\"ìª¾\":149251,\"íı½\":149252,\"íļĶ\":149253,\"íĽµ\":149254,\"ï¤¸\":149255,\"ï¦Ĳ\":149256,\"ï§Ĺ\":149257,\"ï§ļ\":149258,\"ï¬¯\":149259,\"ðĿĲĬ\":149260,\"ðĿķĹ\":149261,\"ðĿĹļ\":149262,\"ðĿļĸ\":149263,\"ðŁħ´\":149264,\"Èĥ\":149265,\"ÉĿ\":149266,\"Ï±\":149267,\"ÓĹ\":149268,\"à¤¢\":149269,\"áħł\":149270,\"áī¦\":149271,\"áĳĮ\":149272,\"áĴ¼\":149273,\"áŀ¡\":149274,\"áł¨\":149275,\"áłŃ\":149276,\"á¨ħ\":149277,\"á¨Ķ\":149278,\"á´ĺ\":149279,\"á¶¦\":149280,\"á¸İ\":149281,\"á¼ħ\":149282,\"á¼¹\":149283,\"âĨ¯\":149284,\"âĵİ\":149285,\"ãıĮ\":149286,\"êī\":149287,\"êīĤ\":149288,\"ëĨ§\":149289,\"ëĿ±\":149290,\"ì¢¡\":149291,\"íĪ½\":149292,\"ï¤ĩ\":149293,\"ï¤Ľ\":149294,\"ðĿĲķ\":149295,\"ðĿĵ¸\":149296,\"ðĿĵ¼\":149297,\"ðĿĹķ\":149298,\"ðĿĺĪ\":149299,\"ðŁı£\":149300,\"ðŁı¤\":149301,\"ðŁĹĦ\":149302,\"Ñ·\":149303,\"Òł\":149304,\"áµĸ\":149305,\"á¼¨\":149306,\"ë¬Ħ\":149307,\"ï°´\":149308,\"âĪ½\":149309,\"ÕŃ\":149310,\"Ú¹\":149311,\"à¥Ł\":149312,\"áĢĨ\":149313,\"áŀĴ\":149314,\"ãĢ¶\":149315,\"ê¦«\":149316,\"ï¸ĵ\":149317,\"ðĿĲĽ\":149318,\"ðĿĺĹ\":149319,\"ðŁıľ\":149320,\"ì«Ń\":149321,\"ðŁ§ŀ\":149322,\"à½Ĥ\":149323,\"âĨ¿\":149324,\"âĩı\":149325,\"âĵģ\":149326,\"âĶ§\":149327,\"âķģ\":149328,\"âķ¤\":149329,\"ê¦Ĺ\":149330,\"ê¦¤\":149331,\"ðŁıĪ\":149332,\"áŀķ\":149333,\"Ô½\":149334,\"àªĹ\":149335,\"à¬Ĩ\":149336,\"âķķ\":149337,\"ï½ł\":149338,\"â¼¦\":149339,\"â¼¯\":149340,\"â¾·\":149341,\"âĶĸ\":149342,\"à¬ĵ\":149343,\"âĺĹ\":149344,\"âįĭ\":149345,\"ï¨Ŀ\":149346,\"â¼¥\":149347,\"ï¦ª\":149348,\"âĦĬ\":149349,\"ãĢ´\":149350,\"âį¢\":149351,\"ð¡Ī\":149352,\"ð¡Ī½\":149353,\"ï©¨\":149354,\"ãĢ»\":149355,\"ãıĥ\":149356,\"ï¦¡\":149357,\"ï¨ĺ\":149358,\"ðŁĲĥ\":149359,\"ðŁĨĸ\":149360,\"ðŁĹ¾\":149361,\"ãĦĩ\":149362,\"Þĭ\":149363,\"â¼¼\":149364,\"ï¨Ń\":149365,\"ÞĢ\":149366,\"ÞĦ\":149367,\"ÞĪ\":149368,\"ÞĲ\":149369,\"âĮĦ\":149370,\"â»ĺ\":149371,\"ãŁ¢\":149372,\"áħ§\":149373,\"ðĲĮ¿\":149374,\"Ë»\":149375,\"à²Ĺ\":149376,\"áĢĩ\":149377,\"áŀĬ\":149378,\"âķĩ\":149379,\"ãĩ¼\":149380,\"ãİ°\":149381,\"ÕĴ\":149382,\"ÜĪ\":149383,\"ß¥\":149384,\"à¿Ĳ\":149385,\"áĢŁ\":149386,\"âĨ¥\":149387,\"âķĮ\":149388,\"â½Ģ\":149389,\"â½°\":149390,\"â¾Ĭ\":149391,\"äĦ\":149392,\"äĦĢ\":149393,\"ðĵĲ\":149394,\"ðĵĲį\":149395,\"ðŁİ¦\":149396,\"âĤ¯\":149397,\"âĬĺ\":149398,\"âĦį\":149399,\"Êµ\":149400,\"Ñ¶\":149401,\"Úĥ\":149402,\"à¦Ķ\":149403,\"à´¦\":149404,\"áİ¶\":149405,\"áĵķ\":149406,\"á¹¨\":149407,\"âĤł\":149408,\"âĩ°\":149409,\"âĹĴ\":149410,\"â¿Ĭ\":149411,\"ê·±\":149412,\"ì¹ķ\":149413,\"íĪ©\":149414,\"ïŃĢ\":149415,\"ðĿĴ¸\":149416,\"ðĿĵĬ\":149417,\"ðĿĺ©\":149418,\"Ç¦\":149419,\"É«\":149420,\"áĬ¨\":149421,\"È¹\":149422,\"Ê¯\":149423,\"Îª\":149424,\"ÚĢ\":149425,\"áĮ¸\":149426,\"áİ»\":149427,\"áıķ\":149428,\"áı´\":149429,\"á²Ĥ\":149430,\"á½¨\":149431,\"âıĿ\":149432,\"âĺĻ\":149433,\"ëĥ¨\":149434,\"ëĦ¼\":149435,\"ëĪĻ\":149436,\"ë£ħ\":149437,\"ìĶ¼\":149438,\"ìķĿ\":149439,\"ìļ¬\":149440,\"ìľ±\":149441,\"ï¥Ĥ\":149442,\"ï¦¹\":149443,\"ï¬¹\":149444,\"ïŃģ\":149445,\"ï³Ī\":149446,\"ðĿĶħ\":149447,\"ðĿĺ¤\":149448,\"ðĿĻı\":149449,\"ðĿĻĻ\":149450,\"ðŁķī\":149451,\"ðŁ§Ļ\":149452,\"á¸ĳ\":149453,\"ê´¼\":149454,\"ëģį\":149455,\"ëĹ´\":149456,\"ëĿ³\":149457,\"ë°ŀ\":149458,\"ë°¢\":149459,\"ëµĺ\":149460,\"ìĤĶ\":149461,\"ìĦĦ\":149462,\"ì¼ļ\":149463,\"íĢł\":149464,\"íĬ±\":149465,\"íĮĸ\":149466,\"ï¤ĳ\":149467,\"ï¦´\":149468,\"ï¦¸\":149469,\"ï´į\":149470,\"ðĿĺ·\":149471,\"Ä¬\":149472,\"Å¬\":149473,\"ÆĢ\":149474,\"Æĭ\":149475,\"Æľ\":149476,\"Çĳ\":149477,\"Çĺ\":149478,\"Çŀ\":149479,\"Ç¥\":149480,\"Ç®\":149481,\"É°\":149482,\"É¶\":149483,\"É·\":149484,\"É½\":149485,\"ÊĪ\":149486,\"ÊĲ\":149487,\"Ëİ\":149488,\"ËŁ\":149489,\"Ë¦\":149490,\"Ë¯\":149491,\"ÏĲ\":149492,\"Ïĵ\":149493,\"Ï¢\":149494,\"Ï¤\":149495,\"Ïª\":149496,\"ÏŃ\":149497,\"Ï®\":149498,\"Ï»\":149499,\"Ñł\":149500,\"ÑŃ\":149501,\"Ò¨\":149502,\"ÓĿ\":149503,\"Ô¡\":149504,\"Ô·\":149505,\"Õī\":149506,\"Õĵ\":149507,\"Õĸ\":149508,\"Õļ\":149509,\"ÕĿ\":149510,\"Öİ\":149511,\"Ø¿\":149512,\"Úħ\":149513,\"Úį\":149514,\"ÚĶ\":149515,\"ÛĬ\":149516,\"Û¾\":149517,\"ÜĻ\":149518,\"ÝĴ\":149519,\"Ýĺ\":149520,\"ßĴ\":149521,\"ßĸ\":149522,\"à¤Ĭ\":149523,\"à¤Ĳ\":149524,\"à¦ı\":149525,\"à¦ĸ\":149526,\"à§Ł\":149527,\"àª®\":149528,\"àª¹\":149529,\"à®ħ\":149530,\"à®Ĩ\":149531,\"à°¡\":149532,\"à°°\":149533,\"à²ļ\":149534,\"à²®\":149535,\"à²¯\":149536,\"à´Ł\":149537,\"à´·\":149538,\"àµ¾\":149539,\"à¶ĳ\":149540,\"à¶ŀ\":149541,\"à¼¼\":149542,\"à½ĵ\":149543,\"áĢĵ\":149544,\"áĤ¦\":149545,\"áĥĸ\":149546,\"áĥŃ\":149547,\"áĥ¯\":149548,\"áħ¨\":149549,\"áħª\":149550,\"áĨ°\":149551,\"áĪģ\":149552,\"áĪİ\":149553,\"áĪĵ\":149554,\"áĪ¥\":149555,\"áĪ²\":149556,\"áĪ´\":149557,\"áĪ»\":149558,\"áīł\":149559,\"áī²\":149560,\"áī¶\":149561,\"áĬ£\":149562,\"áĬ¥\":149563,\"áĬª\":149564,\"áĭĺ\":149565,\"áĭ²\":149566,\"áĭ¶\":149567,\"áĮ£\":149568,\"áį¡\":149569,\"áį£\":149570,\"áİ¬\":149571,\"áİ¾\":149572,\"áĲ¡\":149573,\"áķķ\":149574,\"áĸ±\":149575,\"áĹĲ\":149576,\"áĹŃ\":149577,\"áĺī\":149578,\"áļ±\":149579,\"áĽŁ\":149580,\"áŀ¥\":149581,\"áŁĶ\":149582,\"áł£\":149583,\"áłª\":149584,\"áł°\":149585,\"áł´\":149586,\"á¤ĸ\":149587,\"á¥£\":149588,\"á®\":149589,\"á®ł\":149590,\"á¯\":149591,\"á¯Ļ\":149592,\"á°\":149593,\"á°į\":149594,\"á´Ĭ\":149595,\"á´¾\":149596,\"áµģ\":149597,\"áµİ\":149598,\"áµŀ\":149599,\"áµ¤\":149600,\"á¶ħ\":149601,\"á¶ĺ\":149602,\"á¶Ł\":149603,\"á¶¢\":149604,\"á¶¤\":149605,\"á¶±\":149606,\"á¶»\":149607,\"á¸ī\":149608,\"á¸ŀ\":149609,\"á¸º\":149610,\"á¹ĵ\":149611,\"á¹Ĺ\":149612,\"á¹ª\":149613,\"áºĬ\":149614,\"áºı\":149615,\"áºĽ\":149616,\"á¼ĥ\":149617,\"á¼Į\":149618,\"á¼¿\":149619,\"á½Ĥ\":149620,\"á½ĵ\":149621,\"á½Ĺ\":149622,\"á½¦\":149623,\"á¾±\":149624,\"á¾´\":149625,\"á¿ĺ\":149626,\"á¿Ł\":149627,\"á¿¸\":149628,\"âģĺ\":149629,\"âĤĳ\":149630,\"âĤĽ\":149631,\"âĤ¿\":149632,\"âĦĩ\":149633,\"âĦŀ\":149634,\"âĦ±\":149635,\"âĩŁ\":149636,\"âĩ²\":149637,\"âĪ¤\":149638,\"âĪ¶\":149639,\"âīĤ\":149640,\"âī¾\":149641,\"âĬ¨\":149642,\"âĬ³\":149643,\"âĬ·\":149644,\"âĭĮ\":149645,\"âĭĺ\":149646,\"âĮķ\":149647,\"âĮ¥\":149648,\"âĮµ\":149649,\"âĮº\":149650,\"âį£\":149651,\"âį²\":149652,\"âįµ\":149653,\"âİĩ\":149654,\"âıĥ\":149655,\"âıĲ\":149656,\"âıł\":149657,\"âı¤\":149658,\"âı¶\":149659,\"âı¸\":149660,\"âı¹\":149661,\"âĳĤ\":149662,\"âĴ·\":149663,\"âĴº\":149664,\"âĵ¡\":149665,\"âĵ¤\":149666,\"âĶ¾\":149667,\"âĸĺ\":149668,\"âĸµ\":149669,\"âĹª\":149670,\"âĹ·\":149671,\"âĺ¨\":149672,\"âĺ«\":149673,\"âĺ²\":149674,\"âĺ³\":149675,\"âĻĨ\":149676,\"âļ¤\":149677,\"âļ¥\":149678,\"âĽĵ\":149679,\"âĽ´\":149680,\"âĽ¾\":149681,\"âŀ«\":149682,\"âŀ¿\":149683,\"âŁ·\":149684,\"â¤ĳ\":149685,\"â¤«\":149686,\"â¤¶\":149687,\"â¤½\":149688,\"â§ª\":149689,\"â¨Ģ\":149690,\"â©½\":149691,\"â¬¡\":149692,\"â¬¢\":149693,\"â¬¤\":149694,\"â²ĸ\":149695,\"â²ª\":149696,\"âµĢ\":149697,\"â¸®\":149698,\"â¸½\":149699,\"ãĢł\":149700,\"ãĢ·\":149701,\"ãĦĮ\":149702,\"ãĦĺ\":149703,\"ãħĳ\":149704,\"ãĪİ\":149705,\"ãĪĲ\":149706,\"ãĬľ\":149707,\"ãĮĵ\":149708,\"ãĮł\":149709,\"ãİŁ\":149710,\"ãİ¤\":149711,\"ãİ§\":149712,\"ã¬®\":149713,\"äĪ\":149714,\"äĪĢ\":149715,\"ä°\":149716,\"ä°Ģ\":149717,\"êħ\":149718,\"êħī\":149719,\"êĩĹ\":149720,\"êĪ\":149721,\"êĪį\":149722,\"ê§Ĥ\":149723,\"ê§Ĭ\":149724,\"êªĢ\":149725,\"ê²Ī\":149726,\"ê²į\":149727,\"ê³Ģ\":149728,\"êµł\":149729,\"ê½Ĳ\":149730,\"ê¾Ī\":149731,\"ê¿±\":149732,\"ëĥı\":149733,\"ëĦĳ\":149734,\"ëħ¤\":149735,\"ëĩ¸\":149736,\"ëĪ¼\":149737,\"ëīħ\":149738,\"ëĬ£\":149739,\"ëĭº\":149740,\"ëįŀ\":149741,\"ëĲĮ\":149742,\"ëķ¸\":149743,\"ëĺł\":149744,\"ëĻĩ\":149745,\"ëĻĪ\":149746,\"ëľ½\":149747,\"ëŀĶ\":149748,\"ëłľ\":149749,\"ë£Ĳ\":149750,\"ë§Ģ\":149751,\"ë§Ĭ\":149752,\"ëªĢ\":149753,\"ë¬Ń\":149754,\"ë¯¾\":149755,\"ë³ľ\":149756,\"ë´Ĭ\":149757,\"ëµī\":149758,\"ë·ľ\":149759,\"ë¸Ģ\":149760,\"ë¹ĭ\":149761,\"ìģĦ\":149762,\"ìĤ£\":149763,\"ìĤ»\":149764,\"ìĦµ\":149765,\"ìħĴ\":149766,\"ìīĪ\":149767,\"ìīĶ\":149768,\"ìĬĮ\":149769,\"ìĬĻ\":149770,\"ìĲ´\":149771,\"ìĵº\":149772,\"ìķļ\":149773,\"ìķº\":149774,\"ìĸľ\":149775,\"ìĹª\":149776,\"ìĺľ\":149777,\"ìĻ¤\":149778,\"ìļĽ\":149779,\"ìļº\":149780,\"ìĿħ\":149781,\"ìĿı\":149782,\"ìĿŃ\":149783,\"ìĿ¶\":149784,\"ìłĽ\":149785,\"ì¡Ī\":149786,\"ì¢ī\":149787,\"ì¢Ķ\":149788,\"ì©ł\":149789,\"ìŃĮ\":149790,\"ì¯©\":149791,\"ì´£\":149792,\"ì¸ķ\":149793,\"ì¹Ł\":149794,\"ì¾¡\":149795,\"ì¿Ļ\":149796,\"íģĩ\":149797,\"íģī\":149798,\"íĩĢ\":149799,\"íĪ¶\":149800,\"íĸĳ\":149801,\"íĸ¤\":149802,\"íĹħ\":149803,\"íľı\":149804,\"íĿĿ\":149805,\"ï¤Ĵ\":149806,\"ï¤ķ\":149807,\"ï¤¬\":149808,\"ï¥ħ\":149809,\"ï¥ĩ\":149810,\"ï¥ı\":149811,\"ï¥ļ\":149812,\"ï¥Ł\":149813,\"ï¦Ħ\":149814,\"ï¦Ī\":149815,\"ï¦¨\":149816,\"ï¦©\":149817,\"ï¦²\":149818,\"ï§ģ\":149819,\"ï§ĥ\":149820,\"ï§Ķ\":149821,\"ï§ł\":149822,\"ï§£\":149823,\"ï§®\":149824,\"ïŃĲ\":149825,\"ïŃĸ\":149826,\"ïŃ¦\":149827,\"ïŃ´\":149828,\"ïŃµ\":149829,\"ïŃ¶\":149830,\"ïŃ¸\":149831,\"ï®Į\":149832,\"ï®İ\":149833,\"ï®ŀ\":149834,\"ï®Ł\":149835,\"ï®¡\":149836,\"ï®ª\":149837,\"ï¯Ķ\":149838,\"ï¯Ĺ\":149839,\"ï¯ļ\":149840,\"ï¯Ľ\":149841,\"ï¯Ŀ\":149842,\"ï¯Ł\":149843,\"ï¯§\":149844,\"ï¯¨\":149845,\"ï¯«\":149846,\"ï¯¯\":149847,\"ï¯°\":149848,\"ï¯±\":149849,\"ï¯²\":149850,\"ï¯³\":149851,\"ï¯´\":149852,\"ï¯µ\":149853,\"ï¯¶\":149854,\"ï°Ģ\":149855,\"ï±ħ\":149856,\"ï±Ķ\":149857,\"ï±´\":149858,\"ï²ģ\":149859,\"ï³ķ\":149860,\"ï·½\":149861,\"ï¸ķ\":149862,\"ï¸±\":149863,\"ï¹£\":149864,\"ï¹½\":149865,\"ï»į\":149866,\"ï¾±\":149867,\"ðĿĲĻ\":149868,\"ðĿĲ½\":149869,\"ðĿĳ¤\":149870,\"ðĿĳ®\":149871,\"ðĿĳµ\":149872,\"ðĿĴĥ\":149873,\"ðĿĴĦ\":149874,\"ðĿĵŃ\":149875,\"ðĿĵ·\":149876,\"ðĿĶĸ\":149877,\"ðĿĶŀ\":149878,\"ðĿĶ¢\":149879,\"ðĿĶ¦\":149880,\"ðĿĶ¬\":149881,\"ðĿķĦ\":149882,\"ðĿķĬ\":149883,\"ðĿķİ\":149884,\"ðĿķĻ\":149885,\"ðĿķľ\":149886,\"ðĿķŃ\":149887,\"ðĿķ³\":149888,\"ðĿķ¸\":149889,\"ðĿķ¾\":149890,\"ðĿĸī\":149891,\"ðĿĸı\":149892,\"ðĿĺĩ\":149893,\"ðĿĺī\":149894,\"ðĿĺĸ\":149895,\"ðĿĺĽ\":149896,\"ðĿĺŀ\":149897,\"ðĿĺ«\":149898,\"ðĿĺ¾\":149899,\"ðĿĻĩ\":149900,\"ðĿĻī\":149901,\"ðĿĻĭ\":149902,\"ðĿĻİ\":149903,\"ðĿĻĺ\":149904,\"ðĿĻ¥\":149905,\"ðĿļĥ\":149906,\"ðĿļĲ\":149907,\"ðĿļĶ\":149908,\"ðĿľĥ\":149909,\"ðŁĦ·\":149910,\"ðŁħĿ\":149911,\"ðŁħ¾\":149912,\"ðŁĨĤ\":149913,\"ðŁĨĵ\":149914,\"ðŁĮĤ\":149915,\"ðŁĮĨ\":149916,\"ðŁĮī\":149917,\"ðŁĮĳ\":149918,\"ðŁĮĺ\":149919,\"ðŁĮ©\":149920,\"ðŁĮ«\":149921,\"ðŁį¢\":149922,\"ðŁį¥\":149923,\"ðŁİĽ\":149924,\"ðŁİ¢\":149925,\"ðŁİ´\":149926,\"ðŁĳ¡\":149927,\"ðŁĴ¾\":149928,\"ðŁĵŃ\":149929,\"ðŁĶĪ\":149930,\"ðŁĶ¦\":149931,\"ðŁĶ²\":149932,\"ðŁĶ³\":149933,\"ðŁķĵ\":149934,\"ðŁķķ\":149935,\"ðŁķĺ\":149936,\"ðŁķŁ\":149937,\"ðŁķ·\":149938,\"ðŁĹ³\":149939,\"ðŁļĦ\":149940,\"ðŁļĶ\":149941,\"ðŁļĸ\":149942,\"ðŁĽĲ\":149943,\"ðŁĽ¤\":149944,\"ðŁĽ¸\":149945,\"ðŁł\":149946,\"ðŁł³\":149947,\"ðŁ¤¹\":149948,\"ðŁ¥ĥ\":149949,\"ðŁ¥¨\":149950,\"ðŁ¥ª\":149951,\"ðŁ¥¾\":149952,\"ðŁ¦ĥ\":149953,\"ðŁ¦Ĵ\":149954,\"ðŁ¦Ļ\":149955,\"ðŁ¦¶\":149956,\"ðŁ§ł\":149957,\"ðŁ§ª\":149958,\"ðŁ§Ń\":149959,\"ðŁ§²\":149960,\"ð£·\":149961,\"ð£·Ń\":149962,\"ð¦ĺ\":149963,\"ð¦ĺĴ\":149964,\"Æĳ\":149965,\"ÇĻ\":149966,\"È®\":149967,\"Øł\":149968,\"ÚĦ\":149969,\"ÜĢ\":149970,\"ß¢\":149971,\"áīĢ\":149972,\"áĬĲ\":149973,\"áİł\":149974,\"áºŀ\":149975,\"ëĪŀ\":149976,\"ëķŁ\":149977,\"ë£ģ\":149978,\"ë¤Ĺ\":149979,\"ìĦ¥\":149980,\"ìħĳ\":149981,\"ìĸĲ\":149982,\"ìĽĽ\":149983,\"ì£ķ\":149984,\"íİı\":149985,\"íĽĵ\":149986,\"ï¥º\":149987,\"ï³Ľ\":149988,\"ï´«\":149989,\"ðĸ§\":149990,\"ðĸ§·\":149991,\"ðĿķģ\":149992,\"ðŁĲª\":149993,\"ðŁĴĪ\":149994,\"ðŁĵł\":149995,\"ðŁķĽ\":149996,\"ðŁķ´\":149997,\"ÑĿ\":149998,\"ÓĬ\":149999,\"à¥²\":150000,\"àªª\":150001,\"áĥ¤\":150002,\"áįĲ\":150003,\"á¶°\":150004,\"á¼Ŀ\":150005,\"á½©\":150006,\"âĭĭ\":150007,\"âĴ½\":150008,\"âĻ¾\":150009,\"â½Ķ\":150010,\"â¾¯\":150011,\"ãĦĴ\":150012,\"ãħļ\":150013,\"ëĲį\":150014,\"ë·ģ\":150015,\"ìĭĢ\":150016,\"ìļĿ\":150017,\"ì¥°\":150018,\"ìº´\":150019,\"íĭī\":150020,\"íĿ½\":150021,\"ï¦Ģ\":150022,\"ï¦¿\":150023,\"ï§ħ\":150024,\"ï§ĵ\":150025,\"ïŃ¯\":150026,\"ï®Ĩ\":150027,\"ðĲ¤ķ\":150028,\"ðĿĲŁ\":150029,\"ðĿĴħ\":150030,\"ðĿĵľ\":150031,\"ðĿĶ°\":150032,\"ðĿĶ»\":150033,\"ðĿĺį\":150034,\"ðĿĻ¯\":150035,\"ðŁĦ½\":150036,\"ðŁħĤ\":150037,\"ðŁħĶ\":150038,\"ðŁħ½\":150039,\"ðŁĵ´\":150040,\"ðŁ§ĸ\":150041,\"ÓĴ\":150042,\"á¸²\":150043,\"ëī¼\":150044,\"Çı\":150045,\"Èĵ\":150046,\"Ê¸\":150047,\"ÕĤ\":150048,\"Ûħ\":150049,\"ß¡\":150050,\"ß£\":150051,\"à®¯\":150052,\"à°Ī\":150053,\"à²¸\":150054,\"àº®\":150055,\"à¼ķ\":150056,\"áĢİ\":150057,\"áĨ¡\":150058,\"áĲĭ\":150059,\"áĲķ\":150060,\"áĳ¯\":150061,\"áŀĨ\":150062,\"á¨ķ\":150063,\"á©Ī\":150064,\"âģħ\":150065,\"âĨļ\":150066,\"âĶİ\":150067,\"âł©\":150068,\"â²Ĥ\":150069,\"â²Ķ\":150070,\"â²¨\":150071,\"ãĬļ\":150072,\"íĵ²\":150073,\"ðĿĳĪ\":150074,\"ðĿĳ¬\":150075,\"ðĿĳ¹\":150076,\"ðĿĴ¾\":150077,\"ðĿĵ±\":150078,\"ðĿĵ½\":150079,\"ðĿķ¯\":150080,\"ðĿķ»\":150081,\"ðĿĺ½\":150082,\"ðĿļĨ\":150083,\"ðŁĦ°\":150084,\"ðŁĲ¨\":150085,\"Òķ\":150086,\"à²ħ\":150087,\"ï¨Ĩ\":150088,\"ðĿĳ°\":150089,\"ðŁĦ¸\":150090,\"Ôİ\":150091,\"Øį\":150092,\"Ùµ\":150093,\"à²¶\":150094,\"áĢĪ\":150095,\"áĺĹ\":150096,\"áł¸\":150097,\"á¡¡\":150098,\"á¨²\":150099,\"á©ģ\":150100,\"á´·\":150101,\"áµ§\":150102,\"âķ¨\":150103,\"âļģ\":150104,\"â¾Ŀ\":150105,\"ãĢ¼\":150106,\"ãĦı\":150107,\"êĴ«\":150108,\"ê¦¥\":150109,\"ê¦©\":150110,\"ê¦²\":150111,\"ìĺ¼\":150112,\"íĵĲ\":150113,\"ðĵĩ\":150114,\"ðĵĩ¼\":150115,\"ðĿķ¿\":150116,\"ðŁĽ´\":150117,\"ë¨ľ\":150118,\"à²µ\":150119,\"à´İ\":150120,\"à¼Ģ\":150121,\"âĩĸ\":150122,\"ãĪ«\":150123,\"âĵĢ\":150124,\"áħ´\":150125,\"áļ¾\":150126,\"áĽŀ\":150127,\"áĽ«\":150128,\"á¥´\":150129,\"âĨĽ\":150130,\"âĨ¶\":150131,\"âĩ¤\":150132,\"âķŁ\":150133,\"âĺ·\":150134,\"âļĲ\":150135,\"ðŁ§´\":150136,\"á¹³\":150137,\"âĶį\":150138,\"âĶĴ\":150139,\"âĶ©\":150140,\"âĶ¦\":150141,\"â¾µ\":150142,\"àªľ\":150143,\"àª¤\":150144,\"âĩĻ\":150145,\"âĶ±\":150146,\"âķĢ\":150147,\"â½Ĭ\":150148,\"ï½Ł\":150149,\"à¬¡\":150150,\"ðł®\":150151,\"ðł®·\":150152,\"âķĥ\":150153,\"â°Ķ\":150154,\"ãĬ¦\":150155,\"ðŁİĲ\":150156,\"ãĩ°\":150157,\"â¼Ŀ\":150158,\"â¾Ķ\":150159,\"â½Ĵ\":150160,\"âłĴ\":150161,\"ï¨¦\":150162,\"ï©Ĵ\":150163,\"ï¨²\":150164,\"ï©ĸ\":150165,\"ðĵı¸\":150166,\"ãĮĥ\":150167,\"ðĸ¤\":150168,\"ðĸ¤Ĳ\":150169,\"ï¦Ń\":150170,\"âĬħ\":150171,\"â¾³\":150172,\"ä´¥\":150173,\"ï©ķ\":150174,\"ðŁĮĶ\":150175,\"áŀĭ\":150176,\"âļį\":150177,\"â¼ĭ\":150178,\"ãİĺ\":150179,\"ðĲĮ²\":150180,\"É©\":150181,\"áİĳ\":150182,\"âĨ®\":150183,\"âĩĥ\":150184,\"âļİ\":150185,\"ãĩ±\":150186,\"ãĭ©\":150187,\"ãĮ¶\":150188,\"êĻª\":150189,\"ëİ¬\":150190,\"ï¨Ĳ\":150191,\"ï¨Ľ\":150192,\"ï©Ĭ\":150193,\"ï©į\":150194,\"ðĵħ\":150195,\"ðĵħº\":150196,\"Ï¡\":150197,\"Èĳ\":150198,\"ÉĤ\":150199,\"Ôĵ\":150200,\"ßİ\":150201,\"à´§\":150202,\"áĢī\":150203,\"áĢĭ\":150204,\"áĢĳ\":150205,\"áĢł\":150206,\"áļĻ\":150207,\"á¨Ħ\":150208,\"á¨©\":150209,\"á¨¹\":150210,\"á©ĵ\":150211,\"á¬ľ\":150212,\"á´Ļ\":150213,\"áµĳ\":150214,\"âĤŃ\":150215,\"âĨ°\":150216,\"âľģ\":150217,\"â½Ĳ\":150218,\"ãĭ¯\":150219,\"ãĮ½\":150220,\"íĨ¢\":150221,\"ï¤¿\":150222,\"ðŁĤ\":150223,\"ðŁĤ»\":150224,\"ÈĴ\":150225,\"Íº\":150226,\"Ô¥\":150227,\"Õĳ\":150228,\"Ú¶\":150229,\"à§İ\":150230,\"à¶®\":150231,\"àºĸ\":150232,\"àºľ\":150233,\"àº½\":150234,\"áĥ»\":150235,\"áħ¯\":150236,\"áĭŀ\":150237,\"áĸķ\":150238,\"á´Ī\":150239,\"á¶Ĩ\":150240,\"á¸ľ\":150241,\"á¹¼\":150242,\"á¿¨\":150243,\"âĦĭ\":150244,\"âĦŃ\":150245,\"âĪ±\":150246,\"âĮĵ\":150247,\"âĶĩ\":150248,\"âĶ¢\":150249,\"â±®\":150250,\"â²Ħ\":150251,\"ãĩ¾\":150252,\"ãĪ¬\":150253,\"ë¸¡\":150254,\"ìĲī\":150255,\"íĻĽ\":150256,\"ðĿķª\":150257,\"Æ¹\":150258,\"Í²\":150259,\"Óģ\":150260,\"Û¼\":150261,\"à¦«\":150262,\"áħŁ\":150263,\"áīĨ\":150264,\"áįĪ\":150265,\"áºĸ\":150266,\"á½ī\":150267,\"âĶ¸\":150268,\"â½©\":150269,\"êľ\":150270,\"êľ¥\":150271,\"êµħ\":150272,\"ëĤĶ\":150273,\"ëĦł\":150274,\"ëĩĹ\":150275,\"ëĻĿ\":150276,\"ìļ¯\":150277,\"ìļ·\":150278,\"ìŁĽ\":150279,\"ì·Ĳ\":150280,\"íŁ¬\":150281,\"íŁ®\":150282,\"íŁ°\":150283,\"ï¦Ĩ\":150284,\"ï¦±\":150285,\"ï²ŀ\":150286,\"ï³¤\":150287,\"ï³¥\":150288,\"ðĲĮ¸\":150289,\"ðĿĶı\":150290,\"ðĿķ®\":150291,\"ðĿĺ£\":150292,\"à¦Ī\":150293,\"âıı\":150294,\"ãĦĸ\":150295,\"ê²ĩ\":150296,\"ëĸĺ\":150297,\"ëľ·\":150298,\"ëŀĴ\":150299,\"ë¡ĵ\":150300,\"ë¢ī\":150301,\"ë£ĥ\":150302,\"ë§ĭ\":150303,\"ë²ĭ\":150304,\"ìĤ·\":150305,\"ìĪķ\":150306,\"ìĮ¨\":150307,\"ìĵ»\":150308,\"ìĸĬ\":150309,\"ìĻ¬\":150310,\"ìĿ»\":150311,\"ì¦ģ\":150312,\"ìµ¤\":150313,\"ì·ĥ\":150314,\"íĢľ\":150315,\"íħī\":150316,\"íįł\":150317,\"íıħ\":150318,\"íĳ±\":150319,\"íķķ\":150320,\"íĸł\":150321,\"íĿķ\":150322,\"ÆĻ\":150323,\"Æļ\":150324,\"Æŀ\":150325,\"Çĥ\":150326,\"ÇĬ\":150327,\"Çľ\":150328,\"Ç¤\":150329,\"ÇŃ\":150330,\"Ç¹\":150331,\"ÈĢ\":150332,\"Èģ\":150333,\"Èħ\":150334,\"Èī\":150335,\"ÈĹ\":150336,\"ÈŁ\":150337,\"È¤\":150338,\"È¥\":150339,\"È¨\":150340,\"Èµ\":150341,\"Èº\":150342,\"È»\":150343,\"ÉĮ\":150344,\"É®\":150345,\"Êħ\":150346,\"Ê¥\":150347,\"Ê¨\":150348,\"Ëĵ\":150349,\"ËĶ\":150350,\"Ëł\":150351,\"Ë£\":150352,\"Ë¸\":150353,\"Í´\":150354,\"ÏĹ\":150355,\"Ïĺ\":150356,\"ÏĻ\":150357,\"Ïļ\":150358,\"ÏĿ\":150359,\"Ï¨\":150360,\"Ï¬\":150361,\"Ï¾\":150362,\"Ï¿\":150363,\"Ñª\":150364,\"ÒĢ\":150365,\"Òľ\":150366,\"Ò¼\":150367,\"Ò½\":150368,\"ÓĤ\":150369,\"Óħ\":150370,\"Óĩ\":150371,\"Óį\":150372,\"Óĸ\":150373,\"ÓŁ\":150374,\"Ó«\":150375,\"Ó±\":150376,\"ÔĨ\":150377,\"Ôĩ\":150378,\"Ôº\":150379,\"Õĭ\":150380,\"Öī\":150381,\"ØĪ\":150382,\"ØĬ\":150383,\"Ø½\":150384,\"Ø¾\":150385,\"Ù·\":150386,\"ÚĤ\":150387,\"ÚĬ\":150388,\"Úĸ\":150389,\"ÚĹ\":150390,\"Ú£\":150391,\"Ú«\":150392,\"Ú¸\":150393,\"ÛĢ\":150394,\"Ûį\":150395,\"Û½\":150396,\"Üī\":150397,\"Ü¤\":150398,\"Ý§\":150399,\"Ý´\":150400,\"Þĥ\":150401,\"Þ¤\":150402,\"Þ¥\":150403,\"ßļ\":150404,\"ßĽ\":150405,\"ß¤\":150406,\"àłį\":150407,\"àłĵ\":150408,\"àł³\":150409,\"à¡¢\":150410,\"à¥ł\":150411,\"à§ł\":150412,\"à§º\":150413,\"à¨Ĭ\":150414,\"à¨Ĳ\":150415,\"à¨®\":150416,\"à¨¯\":150417,\"à¨°\":150418,\"à¨¸\":150419,\"àªĨ\":150420,\"àª³\":150421,\"àªµ\":150422,\"àª½\":150423,\"à¬Į\":150424,\"à¬ĺ\":150425,\"à¬½\":150426,\"à®ĥ\":150427,\"à®¸\":150428,\"à°Ĩ\":150429,\"à°ķ\":150430,\"à°¦\":150431,\"à²Ĩ\":150432,\"à²Ĭ\":150433,\"à²Į\":150434,\"à²Ĳ\":150435,\"à²Ľ\":150436,\"à²¤\":150437,\"à²¦\":150438,\"à²ª\":150439,\"à²²\":150440,\"à²¹\":150441,\"à´Ĩ\":150442,\"à´ı\":150443,\"à´Ĺ\":150444,\"à´«\":150445,\"à´¹\":150446,\"àµº\":150447,\"àµ½\":150448,\"à¶ħ\":150449,\"à¶Ĭ\":150450,\"à¶Ķ\":150451,\"à¶§\":150452,\"à¶«\":150453,\"à¶°\":150454,\"à¼Ħ\":150455,\"à¼ħ\":150456,\"à¼Ĭ\":150457,\"à½Ļ\":150458,\"à½¡\":150459,\"à½§\":150460,\"à¿Ģ\":150461,\"à¿Ļ\":150462,\"áĢĿ\":150463,\"áĢ§\":150464,\"áĢ©\":150465,\"áĢ¿\":150466,\"áģµ\":150467,\"áĤģ\":150468,\"áĤ½\":150469,\"áĥĤ\":150470,\"áĥª\":150471,\"áĦĬ\":150472,\"áĦ¢\":150473,\"áħ¦\":150474,\"áħŃ\":150475,\"áĨ®\":150476,\"áĨ±\":150477,\"áĨ»\":150478,\"áĩ\":150479,\"áĩĤ\":150480,\"áĪħ\":150481,\"áĪī\":150482,\"áĪĮ\":150483,\"áĪĲ\":150484,\"áĪĴ\":150485,\"áĪĻ\":150486,\"áĪļ\":150487,\"áĪľ\":150488,\"áĪŀ\":150489,\"áĪ©\":150490,\"áĪ³\":150491,\"áĪº\":150492,\"áĪ½\":150493,\"áīħ\":150494,\"áī¢\":150495,\"áī±\":150496,\"áī´\":150497,\"áĬĥ\":150498,\"áĬį\":150499,\"áĬĸ\":150500,\"áĬ®\":150501,\"áĬ¸\":150502,\"áĭĽ\":150503,\"áĭĿ\":150504,\"áĭ³\":150505,\"áĮģ\":150506,\"áĮħ\":150507,\"áĮ¥\":150508,\"áĮ¦\":150509,\"áĮ¨\":150510,\"áįĬ\":150511,\"áįį\":150512,\"áįķ\":150513,\"áįĸ\":150514,\"áį¢\":150515,\"áį¤\":150516,\"áİĴ\":150517,\"áİª\":150518,\"áıģ\":150519,\"áıĲ\":150520,\"áıŁ\":150521,\"áĲĤ\":150522,\"áĲĸ\":150523,\"áĲĿ\":150524,\"áĲŀ\":150525,\"áĲŁ\":150526,\"áĲł\":150527,\"áĳĸ\":150528,\"áĴĭ\":150529,\"áĴį\":150530,\"áĴ¡\":150531,\"áĵ«\":150532,\"áĶķ\":150533,\"áķĭ\":150534,\"áķĳ\":150535,\"áķĻ\":150536,\"áķļ\":150537,\"áķĽ\":150538,\"áķ¤\":150539,\"áķ¦\":150540,\"áķ®\":150541,\"áķ¼\":150542,\"áĸĵ\":150543,\"áĹĹ\":150544,\"áĹ¢\":150545,\"áĹ¯\":150546,\"áĹ·\":150547,\"áĺĦ\":150548,\"áĺĳ\":150549,\"áĽĤ\":150550,\"áĽĻ\":150551,\"áŀį\":150552,\"áłĨ\":150553,\"áł¡\":150554,\"áł¦\":150555,\"áł®\":150556,\"áł¯\":150557,\"áł²\":150558,\"áł·\":150559,\"á¡į\":150560,\"á¡ŀ\":150561,\"á¡¤\":150562,\"á¡´\":150563,\"á¡µ\":150564,\"á¤ĵ\":150565,\"á¥ĸ\":150566,\"á¥°\":150567,\"á¨¦\":150568,\"á¨§\":150569,\"á¨¨\":150570,\"á¨ª\":150571,\"á¨¬\":150572,\"á¨¯\":150573,\"á¨³\":150574,\"á¨µ\":150575,\"á©ĥ\":150576,\"á¬ķ\":150577,\"áŃ£\":150578,\"á±\":150579,\"á±ļ\":150580,\"á²ł\":150581,\"á´ĵ\":150582,\"á´¶\":150583,\"áµĤ\":150584,\"áµĮ\":150585,\"áµ¥\":150586,\"áµ´\":150587,\"á¶ĩ\":150588,\"á¸Ī\":150589,\"á¸ł\":150590,\"á¸§\":150591,\"á¸´\":150592,\"á¸¾\":150593,\"á¹Ģ\":150594,\"á¹ĸ\":150595,\"á¹Ł\":150596,\"á¹ł\":150597,\"á¹«\":150598,\"á¹±\":150599,\"á¹·\":150600,\"á¹¿\":150601,\"áºĦ\":150602,\"áºį\":150603,\"áºĳ\":150604,\"áºĹ\":150605,\"á¼ī\":150606,\"á¼ĵ\":150607,\"á¼Ń\":150608,\"á½ĭ\":150609,\"á½Ĵ\":150610,\"á½ł\":150611,\"á½£\":150612,\"á¾Ħ\":150613,\"á¾ı\":150614,\"á¾ĳ\":150615,\"á¾Ĺ\":150616,\"á¾¦\":150617,\"á¾§\":150618,\"á¾¾\":150619,\"á¿Ħ\":150620,\"á¿ĵ\":150621,\"á¿¡\":150622,\"á¿¬\":150623,\"âģļ\":150624,\"âĤĮ\":150625,\"âĦģ\":150626,\"âĦĶ\":150627,\"âĦ£\":150628,\"âĦ§\":150629,\"âĦ¯\":150630,\"âĦ°\":150631,\"âĦ´\":150632,\"âħħ\":150633,\"âĨľ\":150634,\"âĨ«\":150635,\"âĨŃ\":150636,\"âĨ±\":150637,\"âĨ¹\":150638,\"âĨ½\":150639,\"âĩĩ\":150640,\"âĩľ\":150641,\"âĩµ\":150642,\"âĪī\":150643,\"âĪĬ\":150644,\"âĪĸ\":150645,\"âĪľ\":150646,\"âĪ¾\":150647,\"âīĢ\":150648,\"âīĭ\":150649,\"âīĮ\":150650,\"âīĵ\":150651,\"âīľ\":150652,\"âī´\":150653,\"âī¿\":150654,\"âĬĬ\":150655,\"âĬĭ\":150656,\"âĬĶ\":150657,\"âĬĸ\":150658,\"âĬ£\":150659,\"âĬ¦\":150660,\"âĭİ\":150661,\"âĭª\":150662,\"âĭ²\":150663,\"âĮ¦\":150664,\"âĮ§\":150665,\"âįº\":150666,\"âİĪ\":150667,\"âİ¨\":150668,\"âİ¬\":150669,\"âİ³\":150670,\"âİ¼\":150671,\"âİ¾\":150672,\"âıĮ\":150673,\"âıļ\":150674,\"âı«\":150675,\"âı¯\":150676,\"âıµ\":150677,\"âĴľ\":150678,\"âĴĿ\":150679,\"âĴ«\":150680,\"âĵĦ\":150681,\"âĵĬ\":150682,\"âĵĻ\":150683,\"âĵ©\":150684,\"âĶĳ\":150685,\"âĶĻ\":150686,\"âĶļ\":150687,\"âĶ¥\":150688,\"âķħ\":150689,\"âķī\":150690,\"âķį\":150691,\"âķı\":150692,\"âķŀ\":150693,\"âĸļ\":150694,\"âĸ¯\":150695,\"âĹĥ\":150696,\"âĹļ\":150697,\"âĹ¬\":150698,\"âĹ´\":150699,\"âĺĪ\":150700,\"âĺ¤\":150701,\"âĺ¥\":150702,\"âĺ§\":150703,\"âĺ¬\":150704,\"âĻģ\":150705,\"âĻ±\":150706,\"âļĥ\":150707,\"âļĦ\":150708,\"âļħ\":150709,\"âļı\":150710,\"âļļ\":150711,\"âļŀ\":150712,\"âļŁ\":150713,\"âļ±\":150714,\"âļ²\":150715,\"âľĢ\":150716,\"âľŁ\":150717,\"âľ¢\":150718,\"âĿµ\":150719,\"âŁ¡\":150720,\"âŁ¦\":150721,\"âŁ§\":150722,\"âŁ³\":150723,\"âŁ¾\":150724,\"âŁ¿\":150725,\"âłĩ\":150726,\"â¤Ħ\":150727,\"â¤º\":150728,\"â¥Ĥ\":150729,\"â¥¹\":150730,\"â§ī\":150731,\"â§¼\":150732,\"â§½\":150733,\"â¨į\":150734,\"â¬Ĭ\":150735,\"â¬Ł\":150736,\"âŃŀ\":150737,\"â®ŀ\":150738,\"â®³\":150739,\"â¯Ī\":150740,\"â¯ĳ\":150741,\"â±ł\":150742,\"â±±\":150743,\"â²Ń\":150744,\"â´¹\":150745,\"âµķ\":150746,\"â¸¾\":150747,\"âº«\":150748,\"â¼Ĩ\":150749,\"â¼ł\":150750,\"â½Ł\":150751,\"â½¼\":150752,\"â¾Ľ\":150753,\"â¾§\":150754,\"â¿ĥ\":150755,\"â¿»\":150756,\"ãĤķ\":150757,\"ãĤŁ\":150758,\"ãĦĽ\":150759,\"ãĦ¡\":150760,\"ãĦ¶\":150761,\"ãĦº\":150762,\"ãħĴ\":150763,\"ãħŁ\":150764,\"ãĨĢ\":150765,\"ãĩ»\":150766,\"ãĪĳ\":150767,\"ãĪŃ\":150768,\"ãĪ®\":150769,\"ãĪ³\":150770,\"ãĪ¹\":150771,\"ãī¥\":150772,\"ãī¦\":150773,\"ãī¹\":150774,\"ãī¿\":150775,\"ãĬŀ\":150776,\"ãĬ¨\":150777,\"ãĭĳ\":150778,\"ãĭ¥\":150779,\"ãĭ´\":150780,\"ãĭº\":150781,\"ãİĦ\":150782,\"ãİķ\":150783,\"ãİ¯\":150784,\"ãıĤ\":150785,\"ãıĪ\":150786,\"ãıĵ\":150787,\"ãıĸ\":150788,\"ãı±\":150789,\"ãĲ±\":150790,\"ãŁģ\":150791,\"ã¢\":150792,\"ã¢¨\":150793,\"ã¨\":150794,\"ã¨³\":150795,\"ã«ª\":150796,\"ã«´\":150797,\"ã¶³\":150798,\"ãº¾\":150799,\"äĢ\":150800,\"äĢĢ\":150801,\"äĭ\":150802,\"äĭĮ\":150803,\"äĮĢ\":150804,\"äĲĢ\":150805,\"äłĢ\":150806,\"äł\":150807,\"äł¼\":150808,\"ä§\":150809,\"ä§ŀ\":150810,\"ä¨°\":150811,\"ä¨º\":150812,\"ä´Ģ\":150813,\"ä·\":150814,\"ä·ħ\":150815,\"ä·¸\":150816,\"êĤ\":150817,\"êĤ«\":150818,\"êĮ\":150819,\"êĮ¼\":150820,\"êį\":150821,\"êį²\":150822,\"êĴµ\":150823,\"êĵ\":150824,\"êĵ½\":150825,\"êĻŃ\":150826,\"êĿĽ\":150827,\"êĿ¥\":150828,\"êŀ\":150829,\"êŀĬ\":150830,\"ê¦Ĩ\":150831,\"ê¦ĩ\":150832,\"ê¦Ł\":150833,\"ê¦¨\":150834,\"ê§Ī\":150835,\"ê©\":150836,\"ê©Ł\":150837,\"êªĭ\":150838,\"êªĳ\":150839,\"êªķ\":150840,\"êªĹ\":150841,\"êªľ\":150842,\"êª®\":150843,\"êª±\":150844,\"êª»\":150845,\"êª¼\":150846,\"ê«Ģ\":150847,\"ê«Ŀ\":150848,\"ê°ĥ\":150849,\"ê°ĺ\":150850,\"ê±ľ\":150851,\"ê²ĵ\":150852,\"ê²ļ\":150853,\"ê³Ļ\":150854,\"ê³¾\":150855,\"ê´Ĺ\":150856,\"ê´Ļ\":150857,\"êµĽ\":150858,\"ê¶ĥ\":150859,\"ê¶ķ\":150860,\"ê¶¨\":150861,\"ê¸©\":150862,\"ê¸¿\":150863,\"ê¹Ħ\":150864,\"ê¹Ĩ\":150865,\"ê¹ī\":150866,\"ê¹ĵ\":150867,\"ê¹¢\":150868,\"ê¹£\":150869,\"ê¹¸\":150870,\"êº³\":150871,\"ê¿ı\":150872,\"ê¿ķ\":150873,\"ê¿§\":150874,\"ëĢ©\":150875,\"ëģħ\":150876,\"ëĥµ\":150877,\"ëĦĸ\":150878,\"ëĦĹ\":150879,\"ëĦ¢\":150880,\"ëħĤ\":150881,\"ëĨĲ\":150882,\"ëĩľ\":150883,\"ëĪĭ\":150884,\"ëĪļ\":150885,\"ëīį\":150886,\"ëī¨\":150887,\"ëĬļ\":150888,\"ëĬ¡\":150889,\"ëĭľ\":150890,\"ëĭª\":150891,\"ëĮĺ\":150892,\"ëĮ¤\":150893,\"ëĮ¸\":150894,\"ëİŁ\":150895,\"ëı¨\":150896,\"ëĲĦ\":150897,\"ëĲı\":150898,\"ëĲ´\":150899,\"ëĲ¸\":150900,\"ëĳģ\":150901,\"ëĳ¿\":150902,\"ëĴ¨\":150903,\"ëĵ·\":150904,\"ëĶ®\":150905,\"ëĶ²\":150906,\"ëķ§\":150907,\"ëĸĶ\":150908,\"ëĸª\":150909,\"ëĺŃ\":150910,\"ëļĢ\":150911,\"ëļł\":150912,\"ëĽĶ\":150913,\"ëĽ©\":150914,\"ëľħ\":150915,\"ëŀķ\":150916,\"ëŀ°\":150917,\"ëŁĲ\":150918,\"ëł¡\":150919,\"ë¡ŀ\":150920,\"ë¡£\":150921,\"ë¡µ\":150922,\"ë£Ħ\":150923,\"ë£į\":150924,\"ë¤³\":150925,\"ë¦į\":150926,\"ë¦ı\":150927,\"ë¦³\":150928,\"ë§Ħ\":150929,\"ë§Ĩ\":150930,\"ë§į\":150931,\"ë§ľ\":150932,\"ë§«\":150933,\"ë§»\":150934,\"ë¨®\":150935,\"ë©Ĥ\":150936,\"ë©Ń\":150937,\"ëª´\":150938,\"ë¬ľ\":150939,\"ë¬ł\":150940,\"ë¬«\":150941,\"ë¬¾\":150942,\"ëŃ¬\":150943,\"ë®ĺ\":150944,\"ë®¹\":150945,\"ë¯ķ\":150946,\"ë¯ľ\":150947,\"ë°¨\":150948,\"ë°ª\":150949,\"ë±Ķ\":150950,\"ë²ĺ\":150951,\"ë²Ľ\":150952,\"ë²±\":150953,\"ë²´\":150954,\"ë´½\":150955,\"ëµ¤\":150956,\"ëµ¨\":150957,\"ë·Ĺ\":150958,\"ë·ĺ\":150959,\"ë¸ĵ\":150960,\"ë¸ľ\":150961,\"ë¹ª\":150962,\"ëºĥ\":150963,\"ëºĺ\":150964,\"ëºµ\":150965,\"ë»´\":150966,\"ë¼Ĳ\":150967,\"ë¾Ķ\":150968,\"ìģŃ\":150969,\"ìĤł\":150970,\"ìĤ®\":150971,\"ìĥı\":150972,\"ìĥĻ\":150973,\"ìĦº\":150974,\"ìħ¢\":150975,\"ìĨĢ\":150976,\"ìĨħ\":150977,\"ìĨ¤\":150978,\"ìĨ¦\":150979,\"ìĨ¬\":150980,\"ìĩ±\":150981,\"ìĪµ\":150982,\"ìĭ¨\":150983,\"ìĭ´\":150984,\"ìĮ°\":150985,\"ìįľ\":150986,\"ìİĹ\":150987,\"ìİĺ\":150988,\"ìİ¼\":150989,\"ìĳī\":150990,\"ìĳĿ\":150991,\"ìĳ»\":150992,\"ìĴĶ\":150993,\"ìĴ¯\":150994,\"ìĵ©\":150995,\"ìķĲ\":150996,\"ìķĸ\":150997,\"ìĸł\":150998,\"ìĸ¾\":150999,\"ìĹĥ\":151000,\"ìĹĹ\":151001,\"ìĹľ\":151002,\"ìĹ¨\":151003,\"ìĺĤ\":151004,\"ìĺĦ\":151005,\"ìĺı\":151006,\"ìĺ¾\":151007,\"ìĺ¿\":151008,\"ìľ§\":151009,\"ìĿĲ\":151010,\"ìĿĸ\":151011,\"ìĿ·\":151012,\"ìŀį\":151013,\"ìŀı\":151014,\"ìŀ¨\":151015,\"ìŀª\":151016,\"ìŀ³\":151017,\"ìł¡\":151018,\"ìł´\":151019,\"ìł¹\":151020,\"ì¡Ģ\":151021,\"ì¡ª\":151022,\"ì¡µ\":151023,\"ì¢Ĳ\":151024,\"ì¢¨\":151025,\"ì£Į\":151026,\"ì£Ļ\":151027,\"ì£³\":151028,\"ì¦ĳ\":151029,\"ì§¥\":151030,\"ì§´\":151031,\"ì§¾\":151032,\"ì¨ĵ\":151033,\"ì¨ķ\":151034,\"ì©°\":151035,\"ì©»\":151036,\"ì©¼\":151037,\"ìªĹ\":151038,\"ì¬Ķ\":151039,\"ì¬ĺ\":151040,\"ì®®\":151041,\"ì¯ķ\":151042,\"ì¯ĺ\":151043,\"ì°İ\":151044,\"ì°¯\":151045,\"ì±ĥ\":151046,\"ì±µ\":151047,\"ì²§\":151048,\"ì²®\":151049,\"ì²¯\":151050,\"ì³¬\":151051,\"ì´ĭ\":151052,\"ì´¢\":151053,\"ìµ¥\":151054,\"ì¶£\":151055,\"ì¸Ī\":151056,\"ì¸Ļ\":151057,\"ìº¤\":151058,\"ìºŃ\":151059,\"ì»½\":151060,\"ì¼Ļ\":151061,\"ì½¬\":151062,\"ì¾Ģ\":151063,\"ì¿ħ\":151064,\"ì¿½\":151065,\"íĢħ\":151066,\"íģ¦\":151067,\"íĤħ\":151068,\"íĥ¶\":151069,\"íĥ¹\":151070,\"íĦĶ\":151071,\"íħ£\":151072,\"íĨĦ\":151073,\"íĨ§\":151074,\"íĨ¹\":151075,\"íĩ¼\":151076,\"íī¤\":151077,\"íĬ½\":151078,\"íĭĤ\":151079,\"íĭĳ\":151080,\"íįĪ\":151081,\"íįĻ\":151082,\"íį¿\":151083,\"íİ¶\":151084,\"íĲĿ\":151085,\"íĴľ\":151086,\"íĵĿ\":151087,\"íĵª\":151088,\"íĵ±\":151089,\"íĵ·\":151090,\"íĵ¼\":151091,\"íĶĻ\":151092,\"íĶł\":151093,\"íķļ\":151094,\"íķĽ\":151095,\"íķŀ\":151096,\"íķŁ\":151097,\"íķ§\":151098,\"íķ¶\":151099,\"íĸĬ\":151100,\"íĸĭ\":151101,\"íĸį\":151102,\"íĸĶ\":151103,\"íĸĺ\":151104,\"íĸ¡\":151105,\"íĸ¬\":151106,\"íĹ£\":151107,\"íĹ¿\":151108,\"íĺĸ\":151109,\"íĺŃ\":151110,\"íļ°\":151111,\"íĽį\":151112,\"íĽ½\":151113,\"íĿŁ\":151114,\"íĿŃ\":151115,\"íĿ´\":151116,\"íŀľ\":151117,\"ï¤ī\":151118,\"ï¤Ń\":151119,\"ï¤²\":151120,\"ï¤µ\":151121,\"ï¤¼\":151122,\"ï¥Ģ\":151123,\"ï¥ĳ\":151124,\"ï¥Ĵ\":151125,\"ï¥ķ\":151126,\"ï¥ĺ\":151127,\"ï¥Ļ\":151128,\"ï¥«\":151129,\"ï¥¬\":151130,\"ï¥°\":151131,\"ï¥¿\":151132,\"ï¦ĭ\":151133,\"ï¦ı\":151134,\"ï¦Ķ\":151135,\"ï¦ĸ\":151136,\"ï¦ĺ\":151137,\"ï¦Ľ\":151138,\"ï¦ł\":151139,\"ï¦®\":151140,\"ï¦¯\":151141,\"ï¦º\":151142,\"ï¦»\":151143,\"ï¦¾\":151144,\"ï§Ĩ\":151145,\"ï§ĸ\":151146,\"ï§Ľ\":151147,\"ï§ŀ\":151148,\"ï§Ł\":151149,\"ï§§\":151150,\"ï§³\":151151,\"ï§º\":151152,\"ï§½\":151153,\"ï¨ĥ\":151154,\"ï¨ļ\":151155,\"ï¨¢\":151156,\"ï©Ł\":151157,\"ï¬¤\":151158,\"ï¬¬\":151159,\"ï¬¼\":151160,\"ïŃĴ\":151161,\"ïŃķ\":151162,\"ïŃĽ\":151163,\"ïŃĿ\":151164,\"ïŃŀ\":151165,\"ïŃŁ\":151166,\"ïŃ¤\":151167,\"ïŃ§\":151168,\"ïŃ¨\":151169,\"ïŃ®\":151170,\"ïŃ°\":151171,\"ïŃ±\":151172,\"ïŃ·\":151173,\"ïŃ¹\":151174,\"ïŃ»\":151175,\"ï®Ģ\":151176,\"ï®ĥ\":151177,\"ï®Ħ\":151178,\"ï®ħ\":151179,\"ï®į\":151180,\"ï®Ĵ\":151181,\"ï®ĵ\":151182,\"ï®ķ\":151183,\"ï®¦\":151184,\"ï®®\":151185,\"ï®°\":151186,\"ï¯ĵ\":151187,\"ï¯ľ\":151188,\"ï¯©\":151189,\"ï¯ª\":151190,\"ï¯¬\":151191,\"ï¯Ń\":151192,\"ï¯®\":151193,\"ï¯·\":151194,\"ï¯¹\":151195,\"ï¯»\":151196,\"ï¯¼\":151197,\"ï°ĥ\":151198,\"ï°Į\":151199,\"ï°Ĳ\":151200,\"ï°ĺ\":151201,\"ï°Ļ\":151202,\"ï°ľ\":151203,\"ï°ŀ\":151204,\"ï°¢\":151205,\"ï°®\":151206,\"ï°°\":151207,\"ï°¼\":151208,\"ï°¿\":151209,\"ï±Ģ\":151210,\"ï±ģ\":151211,\"ï±Ī\":151212,\"ï±ĭ\":151213,\"ï±ı\":151214,\"ï±Ń\":151215,\"ï²Ģ\":151216,\"ï²ĩ\":151217,\"ï²Ī\":151218,\"ï²ĭ\":151219,\"ï²İ\":151220,\"ï²Ĵ\":151221,\"ï²ľ\":151222,\"ï²ł\":151223,\"ï²¬\":151224,\"ï²»\":151225,\"ï³ĩ\":151226,\"ï³Ķ\":151227,\"ï³£\":151228,\"ï³«\":151229,\"ï´ĺ\":151230,\"ï´°\":151231,\"ï´½\":151232,\"ï¶\":151233,\"ï¶°\":151234,\"ï¸ĸ\":151235,\"ï¸´\":151236,\"ï¸¹\":151237,\"ï¹į\":151238,\"ï¹Ĺ\":151239,\"ï¹¢\":151240,\"ï¹¤\":151241,\"ï¹©\":151242,\"ï¹±\":151243,\"ï¾°\":151244,\"ï¿Ĥ\":151245,\"ï¿®\":151246,\"ðĲĮ°\":151247,\"ðĲĮ¹\":151248,\"ðĲĮº\":151249,\"ðĲĮ½\":151250,\"ðĲįĤ\":151251,\"ðĲįĥ\":151252,\"ðĲįĦ\":151253,\"ðĲİ\":151254,\"ðĲİ¹\":151255,\"ðĲ¤Ĥ\":151256,\"ðĲ¤į\":151257,\"ðĲ¤ı\":151258,\"ðĲ¤ĵ\":151259,\"ðĲŃī\":151260,\"ðĲŃį\":151261,\"ðĲ°ĩ\":151262,\"ðĲ°°\":151263,\"ðĳĤ\":151264,\"ðĳĤĦ\":151265,\"ðĳĺ\":151266,\"ðĳĺģ\":151267,\"ðĴĢ\":151268,\"ðĴĢ¸\":151269,\"ðĴģ\":151270,\"ðĴģº\":151271,\"ðĴĦ\":151272,\"ðĴĦ·\":151273,\"ðĴĬ\":151274,\"ðĴĬĳ\":151275,\"ðĴĭ\":151276,\"ðĴĭĹ\":151277,\"ðĴĮ\":151278,\"ðĴĮ¨\":151279,\"ðĵĥ¢\":151280,\"ðĵĥ°\":151281,\"ðĸł\":151282,\"ðĸłļ\":151283,\"ðĿĦĥ\":151284,\"ðĿĦħ\":151285,\"ðĿĦķ\":151286,\"ðĿĦĻ\":151287,\"ðĿĦ±\":151288,\"ðĿĦ´\":151289,\"ðĿĦ¹\":151290,\"ðĿħİ\":151291,\"ðĿħª\":151292,\"ðĿĨ£\":151293,\"ðĿĨ³\":151294,\"ðĿĨ¹\":151295,\"ðĿĩĬ\":151296,\"ðĿĩĹ\":151297,\"ðĿĩļ\":151298,\"ðĿĩľ\":151299,\"ðĿĩł\":151300,\"ðĿĲī\":151301,\"ðĿĲĸ\":151302,\"ðĿĲĺ\":151303,\"ðĿĲ£\":151304,\"ðĿĲ±\":151305,\"ðĿĳĬ\":151306,\"ðĿĳŃ\":151307,\"ðĿĳ¼\":151308,\"ðĿĳ½\":151309,\"ðĿĴ°\":151310,\"ðĿĴ·\":151311,\"ðĿĴ¿\":151312,\"ðĿĵģ\":151313,\"ðĿĵĭ\":151314,\"ðĿĵİ\":151315,\"ðĿĵĴ\":151316,\"ðĿĵĺ\":151317,\"ðĿĵ¢\":151318,\"ðĿĵ¦\":151319,\"ðĿĵ«\":151320,\"ðĿĵ¿\":151321,\"ðĿĶİ\":151322,\"ðĿĶ±\":151323,\"ðĿĶ´\":151324,\"ðĿĶ·\":151325,\"ðĿĶ¸\":151326,\"ðĿĶ½\":151327,\"ðĿķĤ\":151328,\"ðĿķĥ\":151329,\"ðĿķĭ\":151330,\"ðĿķı\":151331,\"ðĿķĲ\":151332,\"ðĿķ¥\":151333,\"ðĿķ´\":151334,\"ðĿķº\":151335,\"ðĿĸĲ\":151336,\"ðĿĸĽ\":151337,\"ðĿĸĿ\":151338,\"ðĿĸŀ\":151339,\"ðĿĹ©\":151340,\"ðĿĹ³\":151341,\"ðĿĹ½\":151342,\"ðĿĺĬ\":151343,\"ðĿĺĭ\":151344,\"ðĿĺĶ\":151345,\"ðĿĺ±\":151346,\"ðĿĺ´\":151347,\"ðĿĺ¿\":151348,\"ðĿĻĴ\":151349,\"ðĿĻĿ\":151350,\"ðĿĻŁ\":151351,\"ðĿĻ¬\":151352,\"ðĿĻŃ\":151353,\"ðĿĻ»\":151354,\"ðĿĻ¾\":151355,\"ðĿļĪ\":151356,\"ðĿļĭ\":151357,\"ðĿļĳ\":151358,\"ðĿļŁ\":151359,\"ðĿļł\":151360,\"ðĿļ£\":151361,\"ðĿĽ½\":151362,\"ðĿľĤ\":151363,\"ðĿľĶ\":151364,\"ðĿľĻ\":151365,\"ðŁĢ\":151366,\"ðŁĢĦ\":151367,\"ðŁĦ²\":151368,\"ðŁĦ¶\":151369,\"ðŁħĲ\":151370,\"ðŁħĸ\":151371,\"ðŁħļ\":151372,\"ðŁħĽ\":151373,\"ðŁħ¦\":151374,\"ðŁħ¶\":151375,\"ðŁħ»\":151376,\"ðŁħ¼\":151377,\"ðŁĨĥ\":151378,\"ðŁĨĨ\":151379,\"ðŁĨİ\":151380,\"ðŁĪ¯\":151381,\"ðŁĪ²\":151382,\"ðŁĪ¹\":151383,\"ðŁĮĩ\":151384,\"ðŁĮĵ\":151385,\"ðŁįĺ\":151386,\"ðŁİĳ\":151387,\"ðŁİ¿\":151388,\"ðŁıı\":151389,\"ðŁıĴ\":151390,\"ðŁı©\":151391,\"ðŁı¯\":151392,\"ðŁĲĢ\":151393,\"ðŁĳĿ\":151394,\"ðŁĴ¹\":151395,\"ðŁĴº\":151396,\"ðŁĵŁ\":151397,\"ðŁĵª\":151398,\"ðŁĵ¼\":151399,\"ðŁĶĢ\":151400,\"ðŁĶĤ\":151401,\"ðŁĶĥ\":151402,\"ðŁĶĩ\":151403,\"ðŁĶĵ\":151404,\"ðŁĶ¢\":151405,\"ðŁĶ¤\":151406,\"ðŁĶ©\":151407,\"ðŁķĸ\":151408,\"ðŁķļ\":151409,\"ðŁķľ\":151410,\"ðŁķĿ\":151411,\"ðŁķŀ\":151412,\"ðŁķł\":151413,\"ðŁķ¢\":151414,\"ðŁķ³\":151415,\"ðŁĸĩ\":151416,\"ðŁĸĳ\":151417,\"ðŁĸ¶\":151418,\"ðŁĹģ\":151419,\"Ñ¨\":151420,\"Úİ\":151421,\"á¡Į\":151422,\"á¸°\":151423,\"áºĢ\":151424,\"á¼®\":151425,\"á½Ŀ\":151426,\"âĦ¬\":151427,\"âļ§\":151428,\"âĽ¤\":151429,\"ã³¬\":151430,\"êĻĭ\":151431,\"ê¸ĳ\":151432,\"ëĶī\":151433,\"ëĹį\":151434,\"ë¡ĳ\":151435,\"ë¯ĳ\":151436,\"ë»ħ\":151437,\"ë¼Ŀ\":151438,\"ìĦĲ\":151439,\"ìī¡\":151440,\"ìĭ²\":151441,\"ìı±\":151442,\"ìĹ¤\":151443,\"ìĿ©\":151444,\"ìĿ¿\":151445,\"ìŁĻ\":151446,\"ìł°\":151447,\"ì¥ī\":151448,\"íĬŃ\":151449,\"íķ®\":151450,\"ï®ı\":151451,\"ðŁħ±\":151452,\"ðŁĨĴ\":151453,\"ðŁķĭ\":151454,\"Éĺ\":151455,\"Êĵ\":151456,\"Õĥ\":151457,\"à´´\":151458,\"à½ħ\":151459,\"áĨº\":151460,\"áĪĬ\":151461,\"áĪ¨\":151462,\"áĪ¾\":151463,\"áīĲ\":151464,\"áĮĥ\":151465,\"áĮ½\":151466,\"áĶŃ\":151467,\"áłĤ\":151468,\"áł¬\":151469,\"á¨¸\":151470,\"á©ĭ\":151471,\"á¶ı\":151472,\"á¾Ķ\":151473,\"á¿Ĳ\":151474,\"á¿ļ\":151475,\"âĻĻ\":151476,\"âļĤ\":151477,\"âļĹ\":151478,\"â¡¢\":151479,\"â¤¦\":151480,\"ëĸ°\":151481,\"ë¤Ĥ\":151482,\"ë§ł\":151483,\"ë±ĭ\":151484,\"ë±Ĳ\":151485,\"ìĽ¢\":151486,\"ìľ¾\":151487,\"ì³ħ\":151488,\"ì»ģ\":151489,\"íģ»\":151490,\"íĥĻ\":151491,\"íĵĸ\":151492,\"íĵŃ\":151493,\"íķ±\":151494,\"íĽľ\":151495,\"ï¤ħ\":151496,\"ï¤Ĩ\":151497,\"ï¦ĥ\":151498,\"ï§©\":151499,\"ï¨Ĥ\":151500,\"ðĲ¤Ķ\":151501,\"ðĲŃĵ\":151502,\"ðĲ°¼\":151503,\"ðĿĵŀ\":151504,\"ðĿĵ°\":151505,\"ðĿĻľ\":151506,\"ðĿļģ\":151507,\"ðŁħ¢\":151508,\"ðŁıĩ\":151509,\"È²\":151510,\"Ê¶\":151511,\"ÔĪ\":151512,\"Ôĳ\":151513,\"Ýĵ\":151514,\"Ý¥\":151515,\"à¤ĳ\":151516,\"à¥±\":151517,\"à¬ī\":151518,\"à°³\":151519,\"à°µ\":151520,\"à²Ł\":151521,\"áĢı\":151522,\"áģ¼\":151523,\"áī¨\":151524,\"áĬĴ\":151525,\"áĭ©\":151526,\"áĮĦ\":151527,\"áĮĶ\":151528,\"áĲ§\":151529,\"áĴĮ\":151530,\"áĶħ\":151531,\"áĶĬ\":151532,\"áłĦ\":151533,\"á¨ģ\":151534,\"á¸ĥ\":151535,\"á¸»\":151536,\"âĶŀ\":151537,\"âĺµ\":151538,\"âļ£\":151539,\"â²¢\":151540,\"ãĪª\":151541,\"ä¶µ\":151542,\"ê²Ļ\":151543,\"ê²´\":151544,\"ê³Ĥ\":151545,\"ë¡¼\":151546,\"ìĨĬ\":151547,\"ì¼ĩ\":151548,\"íĭį\":151549,\"íĵ¬\":151550,\"íĵ®\":151551,\"íĵ¶\":151552,\"íĵ»\":151553,\"ï¤¦\":151554,\"ï¥ł\":151555,\"ï¥±\":151556,\"ïŃ²\":151557,\"ðĲŃĬ\":151558,\"ðĲ±ħ\":151559,\"ðĸ¥\":151560,\"ðĸ¥¨\":151561,\"ðĿĳ³\":151562,\"ðĿĵķ\":151563,\"ðĿĵ¬\":151564,\"ðĿĵ¹\":151565,\"ðĿĵ¾\":151566,\"ðĿĶĵ\":151567,\"ðĿķį\":151568,\"ðĿķ¡\":151569,\"ðĿķ±\":151570,\"ðĿĸĸ\":151571,\"ðĿĺı\":151572,\"ðĿĺĲ\":151573,\"ðĿĺļ\":151574,\"ðĿĻ®\":151575,\"ðĿĻ°\":151576,\"ðĿĻ¸\":151577,\"ðĿĻº\":151578,\"ðĿĻ¼\":151579,\"ðĿĻ½\":151580,\"ðĿĻ¿\":151581,\"ðĿļĦ\":151582,\"ðĿļı\":151583,\"ðŁħħ\":151584,\"ðŁħĵ\":151585,\"ÆĪ\":151586,\"àłĮ\":151587,\"áĻ³\":151588,\"áļĮ\":151589,\"áĽħ\":151590,\"áĽĲ\":151591,\"á¤Ĭ\":151592,\"á¸Ĭ\":151593,\"âĶ½\":151594,\"âķĬ\":151595,\"âĽĩ\":151596,\"âĽı\":151597,\"âĿª\":151598,\"âĿ«\":151599,\"âŁ°\":151600,\"ãĦį\":151601,\"ãĦĵ\":151602,\"ãĦ§\":151603,\"ãħĸ\":151604,\"ãī«\":151605,\"ê¦Ķ\":151606,\"ï±Ĭ\":151607,\"àºĤ\":151608,\"áħ£\":151609,\"á¥Ķ\":151610,\"á¥¤\":151611,\"âĨ¤\":151612,\"âĨ·\":151613,\"âĩŀ\":151614,\"âĸ¤\":151615,\"âŀ¶\":151616,\"ãĪ¼\":151617,\"ï¨·\":151618,\"ðĵı§\":151619,\"âĶ²\":151620,\"âĢ´\":151621,\"âĴŁ\":151622,\"âĴ¡\":151623,\"â°Ĥ\":151624,\"â°į\":151625,\"â°İ\":151626,\"â°Ĳ\":151627,\"â°ĳ\":151628,\"â°Ł\":151629,\"â°ł\":151630,\"â°¡\":151631,\"â¼Ń\":151632,\"ãĬ¥\":151633,\"âĴł\":151634,\"â½º\":151635,\"ãĩº\":151636,\"ãĩ½\":151637,\"ï¨Ĭ\":151638,\"áķ·\":151639,\"âį¨\":151640,\"âºŁ\":151641,\"â½Ĺ\":151642}"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/task.py",
    "content": "import asyncio\nimport copy\nimport datetime\nimport json\nimport os\nimport time\nfrom abc import abstractmethod\nfrom typing import List, Optional, Any\n\nimport aiofiles\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.messages import BaseMessage, ToolMessage, HumanMessage, AIMessage\nfrom langchain_openai.chat_models.base import _convert_message_to_dict\nfrom pydantic import BaseModel, Field, ConfigDict, model_validator\n\nfrom bisheng_langchain.linsight.const import TaskStatus, CallUserInputToolName, ExecConfig\nfrom bisheng_langchain.linsight.event import ExecStep, GenerateSubTask, BaseEvent, NeedUserInput, TaskStart, TaskEnd\nfrom bisheng_langchain.linsight.prompt import SingleAgentPrompt, SummarizeHistoryPrompt, LoopAgentSplitPrompt, \\\n    LoopAgentPrompt, SummarizeAnswerPrompt, SplitEvent\nfrom bisheng_langchain.linsight.utils import encode_str_tokens, generate_uuid_str, \\\n    record_llm_prompt, extract_json_from_markdown, get_model_name_from_llm\n\n\nclass BaseTask(BaseModel):\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    id: str = Field(..., description='Unique ID')\n    parent_id: Optional[str] = Field(default=None, description='父任务id，有则说明是二级任务')\n    next_id: Optional[list[str]] = Field(default=None, description='依赖当前任务的任务id列表')\n    first_task: bool = Field(default=False, description='是否是第一个任务，有些逻辑需要知道是否是首个任务')\n\n    query: str = Field(..., description='用户问题')\n    file_dir: str = Field(default=\"\", description='存储文件的目录')\n    llm: BaseLanguageModel = Field(..., description='Language model to use for processing queries')\n    finally_sop: str = Field(default=\"\", description=\"最终的SOP，用于处理任务的最终结果。\")\n\n    history: List[BaseMessage] = Field(default_factory=list, description='原始聊天记录，包含user、tool、AI消息')\n    status: str = Field(TaskStatus.WAITING.value, description='任务状态')\n    answer: list[Any] = Field(default_factory=list, description='任务答案，最终的结果')\n    summarize_answer: Optional[str] = Field(default=None, description='总结后的答案，主要用于其他任务获取最终结果')\n    task_manager: Optional[Any] = Field(None, description='Task manager for handling tasks and workflows')\n    user_input: Optional[str] = Field(default=None, description='用户输入的内容')\n    exec_config: ExecConfig = Field(default_factory=ExecConfig, description='执行过程中的配置')\n    file_list: Optional[list[str]] = Field(default_factory=list, description='用户上传的所有文件列表')\n    file_list_str: Optional[str] = Field(default='', description='用户上传的文件列表字符串')\n\n    # llm generate task field\n    step_id: str = Field(default='', description='Step ID')\n    target: str = Field(default='', description='任务目标')\n    display_target: str = Field(default='', description='任务展示目标，给用户看的')\n    sop: str = Field(default='', description='任务SOP，子任务的当前方法')\n    node_loop: bool = Field(False, description='是否循环，循环的话需要生成子任务去执行')\n    profile: str = Field(default='', description='任务角色')\n    description: str = Field(default='', description='任务描述')\n    prompt: Optional[str] = Field(default='', description='任务的prompt')\n    precautions: Optional[str] = Field(default='', description='任务注意事项')\n    workflow: Optional[str] = Field(default='', description='步骤的执行流程')\n    input: list[str] = Field(default_factory=list,\n                             description='任务输入，必须是前置步骤的step_id或\"query\",可以多个。\"query\"代表用户的原始问题')\n\n    children: Optional[list['BaseTask']] = []  # List of child tasks, if is loop agent\n\n    # sub task field\n    original_query: Optional[str] = Field(default='', description='整体任务目标')\n    original_method: Optional[str] = Field(default='', description='整体任务方法')\n    original_done: Optional[str] = Field(default='', description='已完成的内容')\n    last_answer: Optional[str] = Field(default='', description='上一步骤的答案，暂无用处')\n\n    @model_validator(mode=\"before\")\n    @classmethod\n    def validate_task(cls, values: dict) -> dict:\n        # Convert all string fields to str type, because llm may generate them as int or other types\n        if values.get(\"target\"):\n            values[\"target\"] = str(values[\"target\"])\n        if values.get(\"prompt\"):\n            values[\"prompt\"] = str(values[\"prompt\"])\n        if values.get(\"step_id\"):\n            values[\"step_id\"] = str(values[\"step_id\"])\n        if values.get(\"sop\"):\n            values[\"sop\"] = str(values[\"sop\"])\n        if values.get(\"description\"):\n            values[\"description\"] = str(values[\"description\"])\n        if values.get(\"profile\"):\n            values[\"profile\"] = str(values[\"profile\"])\n        if values.get(\"workflow\"):\n            values[\"workflow\"] = str(values[\"workflow\"])\n        if values.get(\"precautions\"):\n            values[\"precautions\"] = str(values[\"precautions\"])\n        if not values.get(\"display_target\"):\n            values[\"display_target\"] = values.get(\"target\", \"\")\n        else:\n            values[\"display_target\"] = str(values[\"display_target\"])\n        if values.get(\"original_query\"):\n            values[\"original_query\"] = str(values[\"original_query\"])\n        if values.get(\"original_method\"):\n            values[\"original_method\"] = str(values[\"original_method\"])\n        if values.get(\"original_done\"):\n            values[\"original_done\"] = str(values[\"original_done\"])\n        return values\n\n    def get_task_info(self) -> dict:\n        return self.model_dump(exclude={\"task_manager\", \"llm\", \"file_dir\", \"finally_sop\", \"children\", \"exec_config\"})\n\n    async def get_input_str(self) -> str:\n        if not self.input:\n            return \"\"\n        input_str = \"\"\n        for key in self.input:\n            if key == \"query\":\n                continue\n            step_answer = await self.task_manager.get_step_answer(key)\n            input_str += f\"<{key}的输出>\\n{step_answer}\\n</{key}的输出>\\n\"\n        if input_str:\n            input_str = f\"输入：\\n{input_str}\"\n        return input_str\n\n    async def _base_invoke_llm(self, llm: BaseLanguageModel, tools: Optional[list[dict]], messages: list[BaseMessage],\n                               **kwargs) -> BaseMessage:\n        for i in range(max(self.exec_config.retry_num, 1)):\n            try:\n                # get tool schema\n                start_time = time.time()\n                if tools:\n                    res = await llm.ainvoke(messages, tools=tools, **kwargs)\n                else:\n                    res = await llm.ainvoke(messages, **kwargs)\n                if self.exec_config.debug and res:\n                    record_llm_prompt(llm, \"\\n\".join([one.text() for one in messages]), res.text(),\n                                      res, time.time() - start_time,\n                                      self.exec_config.debug_id)\n                return res\n            except Exception as e:\n                if i == self.exec_config.retry_num - 1:\n                    raise e\n                else:\n                    await asyncio.sleep(self.exec_config.retry_sleep)\n                    continue\n        raise Exception(\"Failed to invoke LLM after retries.\")\n\n    async def _ainvoke_llm(self, messages: list[BaseMessage], **kwargs) -> BaseMessage:\n        \"\"\"\n        Invoke the language model with the provided messages.\n        :param messages: List of messages to be sent to the language model.\n        :return: The response from the language model.\n        \"\"\"\n        tools = self.task_manager.get_all_tool_schema\n        return await self._base_invoke_llm(self.llm, tools, messages, **kwargs)\n\n    async def _ainvoke_llm_without_tools(self, messages: list[BaseMessage], **kwargs) -> BaseMessage:\n        \"\"\"\n        Invoke the language model without tools.\n        :param messages: List of messages to be sent to the language model.\n        :return: The response from the language model.\n        \"\"\"\n        return await self._base_invoke_llm(self.llm, None, messages, **kwargs)\n\n    async def _split_task_llm(self, messages: list[BaseMessage], **kwargs) -> BaseMessage:\n        \"\"\"\n        Invoke the language model to split the task into subtasks.\n        :param messages: List of messages to be sent to the language model.\n        :return: The response from the language model containing the split tasks.\n        \"\"\"\n        model_name = get_model_name_from_llm(llm=self.llm)\n        # 目前只支持openai模型的json模式输出\n        if model_name.startswith(\"gpt\"):\n            kwargs[\"response_format\"] = SplitEvent\n        return await self._base_invoke_llm(self.llm, None, messages, **kwargs)\n\n    async def _get_all_files(self, dir_path: str) -> List[List]:\n        \"\"\"\n        获取指定目录下的所有文件路径, 按修改时间倒序\n        Get all file paths in the specified directory.\n        :param dir_path: The directory path to search for files.\n        :return: A list of file paths. [[xx/xxx, mtime],[xx/xxx, mtime],...]\n        \"\"\"\n        file_paths = []\n        if not os.path.exists(dir_path):\n            return file_paths\n        for entry in os.scandir(dir_path):\n            if entry.is_file():\n                file_paths.append([entry.path, entry.stat().st_mtime])\n            else:\n                # 如果是目录，则递归获取子目录的文件\n                sub_files = await self._get_all_files(entry.path)\n                file_paths.extend(sub_files)\n        file_paths.sort(key=lambda x: x[1], reverse=True)\n        return file_paths\n\n    async def _get_file_content(self) -> str:\n        \"\"\"\n        切分任务时获取文件内容\n        Get the content of the files uploaded by the user.\n        :return: A string containing the content of the files.\n        \"\"\"\n        file_content = \"\"\n        ignore_files = \"\"\n        # 如果是第一个任务则获取用户上传的文件内容\n        if self.first_task:\n            if not self.file_list:\n                return file_content\n        else:\n            # 否则获取中间过程产生的文件内容, 不包含用户上传的文件\n            ignore_files = \";\".join(self.file_list)\n\n        all_files = await self._get_all_files(self.file_dir)\n        file_num = 0\n        for one_file in all_files:\n            if file_num >= self.exec_config.max_file_content_num:\n                break\n            one_file = one_file[0]\n            one_file_name = os.path.basename(one_file)\n            if one_file_name in ignore_files:\n                continue\n            one_file_content = \"\"\n            try:\n                async with aiofiles.open(one_file, mode=\"r\", encoding=\"utf-8\") as f:\n                    async for line in f:\n                        one_file_content += line\n                        if len(one_file_content) > self.exec_config.file_content_length:\n                            one_file_content = one_file_content[:self.exec_config.file_content_length]\n                            break\n                file_num += 1\n            except Exception:\n                pass\n            if one_file_content:\n                file_content += f\"{one_file_name}文件内容:\\n{one_file_content}\\n\\n\"\n        return file_content\n\n    async def handle_user_input(self, user_input: str) -> None:\n        \"\"\"\n        Handle user input for the task.\n        This method should be called when the task is waiting for user input.\n        :param user_input: The input provided by the user.\n        \"\"\"\n        self.user_input = user_input\n        self.status = TaskStatus.INPUT_OVER.value\n\n    async def summarize_history(self, messages_str: str) -> str:\n        \"\"\"\n        调用LLM总结历史记录,去除细节,保留关键信息\n\n        Args:\n            messages_str: 历史记录文本\n\n        Returns:\n            总结后的历史记录\n        \"\"\"\n        # This is a placeholder for the actual summarization logic.\n        # You would typically call an LLM or a summarization service here.\n        # For now, we will just return a truncated version of the messages_str.\n        query = self.target\n        if self.parent_id:\n            query = self.target\n        prompt = SummarizeHistoryPrompt.format(sop=self.sop, query=query, history_str=messages_str)\n        res = await self._ainvoke_llm_without_tools([HumanMessage(content=prompt)])\n        return res.content\n\n    async def ainvoke_loop(self):\n        \"\"\"\n        Execute the subtask in a loop.\n        This method should contain the logic to perform the task's operation in a loop.\n        \"\"\"\n        # generate sub-tasks based on the loop condition\n        if not self.children:\n            self.children = await self.generate_sub_tasks()\n            self.task_manager.add_tasks(self.children)\n            await self.put_event(GenerateSubTask(task_id=self.id,\n                                                 subtask=[one.get_task_info() for one in self.children]))\n        if not self.children:\n            self.status = TaskStatus.SUCCESS.value\n            return None\n        # 如果是循环任务，子任务执行完毕后需要将结果合并。目前\n        all_failed = True\n        answer = []\n        error = \"\"\n        # _ = await asyncio.gather(*[one.ainvoke() for one in self.children])\n\n        for one in self.children:\n            await one.ainvoke()\n            if one.status == TaskStatus.SUCCESS.value:\n                all_failed = False\n                answer.append(one.get_finally_answer())\n            else:\n                error += one.get_finally_answer() + \"\\n\"\n        self.status = TaskStatus.FAILED.value if all_failed else TaskStatus.SUCCESS.value\n        self.answer.append(error) if all_failed else self.answer.extend(answer)\n        return None\n\n    async def _get_sub_tasks(self) -> List[dict]:\n        \"\"\"\n        Generate subtasks based on the current task.\n        This method should contain the logic to create subtasks.\n        :return: List of generated subtasks.\n        \"\"\"\n        prompt = LoopAgentSplitPrompt.format(query=self.query, sop=self.sop,\n                                             step_list=self.task_manager.get_step_list(),\n                                             processed_steps=self.task_manager.get_processed_steps(),\n                                             input_str=await self.get_input_str(),\n                                             file_content=await self._get_file_content(),\n                                             prompt=self.target,\n                                             precautions=self.precautions)\n        messages = [HumanMessage(content=prompt)]\n        sub_task = None\n        for i in range(self.exec_config.retry_num):\n            if i > 0:\n                res = await self._split_task_llm(messages, temperature=self.exec_config.retry_temperature)\n            else:\n                res = await self._split_task_llm(messages)\n            try:\n                # 解析生成的任务json数据\n                sub_task = extract_json_from_markdown(res.content)\n                break\n            except Exception as e:\n                if i == self.exec_config.retry_num - 1:\n                    raise e\n                continue\n        original_query = sub_task.get(\"总体任务目标\", \"\")\n        original_method = f'{sub_task.get(\"总体方法\", \"\")}\\n{sub_task.get(\"可用资源\", \"\")}'\n        original_done = str(sub_task.get(\"已经完成的内容\", \"\"))\n        sub_task_list = sub_task.get(\"任务列表\", [])\n        res = []\n        for one in sub_task_list:\n            parent_info = self.model_dump(\n                exclude={\"children\", \"history\", \"status\", \"target\", \"sop\", \"task_manager\", \"llm\"})\n            display_target = one.get(\"当前目标\", \"\")\n            target = f'{one.get(\"当前目标\", \"\")}\\n{one.get(\"输出方法\", \"\")}'\n            if one.get(\"标题层级\", \"\"):\n                target += f\"\\n标题层级要求: {one.get('标题层级', '')}\"\n            if one.get(\"标题层级类型\", \"\"):\n                target += f\"\\n标题层级类型: {one.get('标题层级类型', '')}\"\n            if one.get(\"思考\", \"\"):\n                target += f\"\\n思考: {one.get('思考', '')}\"\n            parent_info.update({\n                \"original_query\": original_query,\n                \"original_method\": original_method,\n                \"original_done\": original_done,\n                \"target\": target,\n                \"sop\": one.get(\"当前方法\", \"\"),\n                \"id\": generate_uuid_str(),\n                \"parent_id\": self.id,\n                \"task_manager\": self.task_manager,\n                \"llm\": self.llm,\n                \"display_target\": display_target,\n            })\n            res.append(parent_info)\n        return res\n\n    async def put_event(self, event: BaseEvent) -> None:\n        if not self.task_manager:\n            raise RuntimeError('Task manager not initialized.')\n        if not self.task_manager.aqueue:\n            raise RuntimeError('Task manager queue not initialized.')\n        self.task_manager.aqueue.put_nowait(event)\n\n    @abstractmethod\n    async def _ainvoke(self):\n        raise NotImplementedError\n\n    async def ainvoke(self) -> None:\n        await self.put_event(TaskStart(task_id=self.id, name=self.profile))\n        try:\n            await self._ainvoke()\n        except Exception as e:\n            self.status = TaskStatus.FAILED.value\n            self.answer.append(f\"task exec failed: {str(e)[-100:]}\")\n            raise e\n        finally:\n            await self.put_event(\n                TaskEnd(task_id=self.id, status=self.status, name=self.profile, answer=self.get_finally_answer(),\n                        data=self.get_task_info()))\n\n    @abstractmethod\n    async def get_history_str(self) -> str:\n        raise NotImplementedError\n\n    async def get_answer(self) -> str:\n        if self.summarize_answer:\n            return self.summarize_answer\n\n        # 如果有子任务，拼接所有子任务的答案\n        if self.children:\n            self.summarize_answer = \"\\n\".join([await one.get_answer() for one in self.children])\n            return self.summarize_answer\n\n        if not self.history:\n            return \"\"\n\n        prompt_str = SummarizeAnswerPrompt.format(history_str=await self.get_history_str(),\n                                                  step_list=self.task_manager.get_step_list(),\n                                                  step_id=self.step_id,\n                                                  depend_step=self.task_manager.get_depend_step(self.step_id))\n        res = await self._ainvoke_llm_without_tools([HumanMessage(content=prompt_str)])\n        self.summarize_answer = res.content\n        return self.summarize_answer\n\n    def get_finally_answer(self) -> str:\n        \"\"\"\n        Get the final answer of the task.\n        This method returns the last answer in the answer list.\n        :return: The final answer as a string.\n        \"\"\"\n        if self.answer:\n            return str(self.answer[-1])\n        return \"\"\n\n\nclass Task(BaseTask):\n    \"\"\"\n    Represents a task in the Lingsi agent system.\n    This class is used to define the structure of a task,\n    including its ID, name, description, and status.\n    \"\"\"\n\n    async def get_history_str(self) -> str:\n        history_list = await self.build_messages_with_history()\n        # 首条是sop的描述，不需要\n        history_list = history_list[1:]\n        return json.dumps([_convert_message_to_dict(one) for one in history_list], ensure_ascii=False, indent=2)\n\n    async def build_system_message(self) -> BaseMessage:\n        \"\"\"\n        Build the system message for the task.\n        :return: The system message as a BaseMessage object.\n        \"\"\"\n        current_time = datetime.datetime.now().strftime(\"%Y-%m-%d %H\")\n        # 说明是二级子任务\n        if self.node_loop and self.parent_id:\n            prompt = LoopAgentPrompt.format(profile=self.profile,\n                                            current_time=current_time,\n                                            file_dir=self.file_dir,\n                                            original_query=self.original_query,\n                                            original_method=self.original_method,\n                                            original_done=self.original_done,\n                                            last_answer=await self.get_input_str(),\n                                            single_sop=self.sop,\n                                            step_id=self.step_id,\n                                            target=self.target)\n        else:\n            prompt = SingleAgentPrompt.format(profile=self.profile,\n                                              current_time=current_time,\n                                              file_dir=self.file_dir,\n                                              query=self.query,\n                                              sop=self.finally_sop,\n                                              step_list=self.task_manager.get_step_list(),\n                                              processed_steps=self.task_manager.get_processed_steps(),\n                                              input_str=await self.get_input_str(),\n                                              step_id=self.step_id,\n                                              target=self.target,\n                                              single_sop=self.sop,\n                                              precautions=self.precautions)\n        return HumanMessage(content=prompt)\n\n    async def build_messages_with_history(self) -> list[BaseMessage]:\n        messages = []\n        system_message = await self.build_system_message()\n        messages.append(system_message)\n\n        if not self.history:\n            return messages\n\n        messages.extend(self.history)\n\n        # 如果有聊天历史记录, 需要对工具消息做精简\n        all_tool_messages = []\n        all_remain_messages = []\n        for one in messages:\n            if 'tool_calls' in one.additional_kwargs or isinstance(one, ToolMessage):\n                all_tool_messages.append(one)\n            else:\n                all_remain_messages.append(one)\n        all_tool_messages_str = json.dumps([one.model_dump() for one in all_tool_messages], ensure_ascii=False,\n                                           indent=2)\n        if len(encode_str_tokens(all_tool_messages_str)) > self.exec_config.tool_buffer:\n            messages_str = json.dumps([one.model_dump() for one in messages], ensure_ascii=False, indent=2)\n            history_summary = await self.summarize_history(messages_str)\n            # 将总结后的历史记录插入到system_message后面\n            all_remain_messages.append(AIMessage(content=history_summary))\n            self.history = all_remain_messages\n            return all_remain_messages\n        return messages\n\n    async def _ainvoke(self) -> None:\n        \"\"\"\n        Execute the task.\n        This method should contain the logic to perform the task's operation.\n        \"\"\"\n        self.status = TaskStatus.PROCESSING.value\n        if self.node_loop and not self.parent_id:\n            return await self.ainvoke_loop()\n\n        for i in range(self.exec_config.max_steps):\n            messages = await self.build_messages_with_history()\n            res = await self._ainvoke_llm(messages)\n            self.history.append(res)\n            print(res)\n            if \"tool_calls\" in res.additional_kwargs and res.tool_calls:\n                for one in res.tool_calls:\n                    tool_name = one.get(\"name\")\n                    tool_args = one.get(\"args\")\n                    call_reason = tool_args.get(\"call_reason\") if \"call_reason\" in tool_args else \"\"\n\n                    # 等待用户输入的特殊工具调用\n                    if tool_name == CallUserInputToolName:\n                        # 等待用户输入\n                        self.status = TaskStatus.INPUT.value\n                        call_reason = tool_args.get(\"call_content\") or tool_args.get(\"call_reason\")\n                        await self.put_event(\n                            NeedUserInput(task_id=self.id, call_reason=call_reason, params=tool_args.copy()))\n                        # 等待用户输入\n                        while self.status != TaskStatus.INPUT_OVER.value:\n                            await asyncio.sleep(0.5)\n\n                        # 用户输入结束继续执行\n                        self.status = TaskStatus.PROCESSING.value\n                        self.history.append(\n                            ToolMessage(name=tool_name, content=self.user_input, tool_call_id=one.get(\"id\")))\n                        self.user_input = None\n                        break\n\n                    # 正常工具调用\n                    await self.put_event(ExecStep(task_id=self.id,\n                                                  call_id=one.get('id'),\n                                                  call_reason=call_reason,\n                                                  name=tool_name,\n                                                  params=tool_args,\n                                                  status=\"start\"))\n                    tool_result, _ = await self.task_manager.ainvoke_tool(tool_name, copy.deepcopy(tool_args))\n                    await self.put_event(ExecStep(task_id=self.id,\n                                                  call_id=one.get('id'),\n                                                  call_reason=call_reason,\n                                                  name=tool_name,\n                                                  params=tool_args,\n                                                  output=tool_result,\n                                                  status=\"end\"))\n                    self.history.append(ToolMessage(name=tool_name, content=tool_result, tool_call_id=one.get(\"id\")))\n            else:  # 不需要工具调用说明输出了最终答案，执行结束\n                break\n        if isinstance(self.history[-1], AIMessage):\n            self.status = TaskStatus.SUCCESS.value\n            self.answer.append(self.history[-1].content)\n        else:\n            self.status = TaskStatus.FAILED.value\n            self.answer.append(\"task exec over max steps and not generate answer\")\n        return None\n\n    async def generate_sub_tasks(self) -> list['Task']:\n        sub_tasks_info = await self._get_sub_tasks()\n        return [Task(**one) for one in sub_tasks_info]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/linsight/utils.py",
    "content": "import json\nimport os\nimport re\nimport uuid\nfrom typing import Any\n\nfrom langchain_core.language_models import BaseLanguageModel\nfrom transformers import AutoTokenizer\n\ntokenizer = AutoTokenizer.from_pretrained(os.path.join(os.path.dirname(__file__), \"resource/model_tokenizer\"),\n                                          trust_remote_code=True)\n\n\ndef extract_json_from_markdown(markdown_code_block: str) -> dict:\n    \"\"\"\n    从markdown代码块中提取JSON内容。\n    :param markdown_code_block: 包含JSON的markdown代码块字符串。\n    :return: 提取的JSON对象，如果没有找到则抛出异常。\n    \"\"\"\n    # 定义正则表达式模式\n    json_pattern = r\"```json(.*?)```\"\n    # 使用 re.DOTALL 使 . 能够匹配换行符\n    matches = re.search(json_pattern, markdown_code_block, re.DOTALL)\n\n    if not matches:\n        try:\n            # 尝试直接解析整个markdown代码块为JSON\n            return json.loads(markdown_code_block)\n        except json.decoder.JSONDecodeError:\n            raise Exception(f\"Invalid JSON format from llm response\")\n\n    json_str = matches.group(1).strip()\n    try:\n        return json.loads(json_str)\n    except json.JSONDecodeError:\n        raise Exception(f\"Invalid JSON format from json str\")\n\n\n# 提取文本中的markdown代码块内容\ndef extract_code_blocks(markdown_code_block: str) -> str | None:\n    # 定义正则表达式模式\n    pattern = r\"```\\w*\\s*(.*?)```\"\n\n    # 使用 re.DOTALL 使 . 能够匹配换行符\n    matches = re.findall(pattern, markdown_code_block, re.DOTALL)\n\n    if not matches:\n        return None\n    res = \"\"\n    for match in matches:\n        res += f\"{match.strip()}\\n\"\n    # 去除每段代码块两端的空白字符\n    return res\n\n\ndef format_size(size_bytes):\n    \"\"\"将字节大小格式化为人类可读形式\"\"\"\n    for unit in ['B', 'KB', 'MB', 'GB', 'TB']:\n        if size_bytes < 1024.0:\n            return f\"{size_bytes:.2f} {unit}\"\n        size_bytes /= 1024.0\n    return f\"{size_bytes:.2f} PB\"\n\n\ndef encode_str_tokens(text: str) -> list[int]:\n    \"\"\"\n    Encode a string into a list of token IDs using the BERT tokenizer.\n    :param text: The input string to be encoded.\n    :return: A list of token IDs.\n    \"\"\"\n    tokens = tokenizer.encode(text)\n    return tokens\n\n\ndef generate_uuid_str() -> str:\n    \"\"\"\n    Generate a UUID string.\n    :return: A UUID string.\n    \"\"\"\n    return uuid.uuid4().hex\n\n\ndef get_model_name_from_llm(llm: BaseLanguageModel) -> str:\n    \"\"\"\n    Get the model name from a BaseLanguageModel instance.\n    :param llm: An instance of BaseLanguageModel.\n    :return: The model name as a string. If the model name cannot be determined, returns \"unknown_model\".\n    \"\"\"\n    try:\n        model_name = getattr(llm, \"model\")\n    except AttributeError:\n        try:\n            model_name = getattr(llm, \"model_name\") or getattr(llm, \"deployment_name\")\n        except AttributeError:\n            model_name = \"unknown_model\"\n    return model_name\n\n\ndef record_llm_prompt(llm: BaseLanguageModel, prompt: str, answer: str, token_usage: Any, cost_time: float,\n                      debug_id: str):\n    if not debug_id:\n        return\n\n    generate_tokens_num = 0\n    prompt_tokens_num = 0\n    cached_tokens_num = 0\n    try:\n        token_usage = token_usage.response_metadata.get('token_usage', {}) or token_usage.usage_metadata\n\n        if token_usage:\n            generate_tokens_num = token_usage.get('output_tokens', 0) or token_usage.get('completion_tokens', 0)\n            prompt_tokens_num = token_usage.get('input_tokens', 0) or token_usage.get('prompt_tokens', 0)\n            cached_tokens_num = token_usage.get('cached_tokens', 0) or token_usage.get('prompt_tokens_details', {}).get(\n                'cached_tokens', 0) or token_usage.get('input_tokens_details', {}).get('cache_read', 0)\n    except Exception:\n        pass\n\n    model_name = get_model_name_from_llm(llm)\n\n    debug_path = os.path.abspath(os.path.join(os.path.dirname(__file__), \"linsightdebug\"))\n    os.makedirs(debug_path, exist_ok=True)\n    file_path = os.path.join(debug_path, f\"{debug_id}.jsonl\")\n    with open(f'{file_path}', 'a') as f:\n        f.write(\n            json.dumps({\n                \"model\": model_name,\n                \"prompt\": prompt,\n                \"response\": answer,\n                \"generate_tokens_num\": generate_tokens_num,\n                \"prompt_tokens_num\": prompt_tokens_num,\n                \"cached_tokens_num\": cached_tokens_num,\n                \"time\": cost_time\n            }, ensure_ascii=False) + \"\\n\"\n        )\n\n\nif __name__ == '__main__':\n    a = {\n        \"totalResponseMessage\": \"```json\\n{\\n \\\"total_thought\\\": \\\"本任务需系统性盘点2025年企业AI产品，最终输出结构化Markdown表格文件。根据指导手册，需分为六大步骤：1）确定信息源网站清单，2）明确表格结构与输出文件名，3）收集产品名称清单，4）收集并写入产品详细信息（每个产品为子步骤），5）格式检查，6）交付与汇报。每步均有明确目标、依赖关系和工具要求，需严格按SOP执行，确保信息真实、格式规范、内容完整。\\\",\\n \\\"steps\\\": [\\n {\\n \\\"thought\\\": \\\"第一步需确定权威且更新及时的2025年企业AI产品信息源网站清单，为后续检索产品信息做准备。需使用网页搜索工具，筛选出至少3-5个全球知名、专门收录企业AI新品的网站，并整理名称与链接。此步骤不依赖前序步骤，结果将供后续定向检索使用。\\\",\\n \\\"step_id\\\": \\\"step_1\\\",\\n \\\"profile\\\": \\\"确定2025年企业AI产品信息源网站清单。\\\",\\n \\\"target\\\": \\\"输出包含网站名称和链接的清单，至少3-5个权威信息源。\\\",\\n \\\"workflow\\\": \\\"使用@fire_search_scrape@和@tool_type_17_06a943c59f33a34bb5924aaf72cd2995@，以“2025企业AI产品发布网站”、“2025企业AI新品收录平台”、“2025企业AI工具导航网站”、“2025年企业AI产品盘点”等关键词，检索全球范围内专门收录和发布2025年企业AI产品的网站。筛选出权威且更新及时的网站（如Product Hunt、AI Top Tools、Gartner、Forrester、TechCrunch等），整理名称和链接，形成信息源清单。\\\",\\n \\\"precautions\\\": \\\"优先选择全球知名、更新及时的网站，确保信息源权威可靠。\\\",\\n \\\"input_thought\\\": \\\"本步骤为起始步骤，无需依赖前置步骤，仅需用户原始问题作为输入。\\\",\\n \\\"input\\\": [\\\"query\\\"],\\n \\\"node_loop\\\": false },\\n {\\n \\\"thought\\\": \\\"第二步需明确汇总内容结构和输出文件名，为后续数据收集和写入做格式准备。需确定表格字段（产品名称、简介、发布时间、官网链接、主要功能/亮点、适用行业/场景），并在指定文件写入表头和概览说明。依赖于步骤1的信息源清单，确保表格结构与SOP一致。\\\",\\n \\\"step_id\\\": \\\"step_2\\\",\\n \\\"profile\\\": \\\"明确表格字段清单与输出文件名，写入表头和概览说明。\\\",\\n \\\"target\\\": \\\"输出表格字段清单，创建2025企业AI产品汇总.md文件并写入表头和说明。\\\",\\n \\\"workflow\\\": \\\"确定表格字段：产品名称、简介、发布时间、官网链接、主要功能/亮点、适用行业/场景。确定输出文件名为2025企业AI产品汇总.md。使用@add_text_to_file@工具，在文件中写入盘点概览说明及Markdown表头：| 产品名称 | 简介 | 发布时间 | 官网链接 |主要功能/亮点 |适用行业/场景 |，表头后不留空行。\\\",\\n \\\"precautions\\\": \\\"表头后不要有空行，字段需覆盖所有要求内容。\\\",\\n \\\"input_thought\\\": \\\"需依赖步骤1的信息源清单作为后续检索参考，但本步骤主要为格式准备，输入为step_1。\\\",\\n \\\"input\\\": [\\\"step_1\\\"],\\n \\\"node_loop\\\": false },\\n {\\n \\\"thought\\\": \\\"第三步需收集不少于20款2025年已发布或计划发布的企业AI产品名称。需依次检索步骤1确定的信息源网站，验证每个产品的首次发布时间为2025年，必要时补充知识库检索。此步骤依赖于step_1（信息源清单），结果为产品名称清单。\\\",\\n \\\"step_id\\\": \\\"step_3\\\",\\n \\\"profile\\\": \\\"收集2025年企业AI产品名称清单，确保数量和发布时间要求。\\\",\\n \\\"target\\\": \\\"输出不少于20款2025年企业AI产品名称清单。\\\",\\n \\\"workflow\\\": \\\"依次检索step_1确定的信息源网站，查找2025年已发布或计划发布的企业AI产品。每找到一个产品名称，使用@web_search@或@tool_type_17_06a943c59f33a34bb5924aaf72cd2995@工具，验证其首次发布日期为2025年（已发布或官方明确计划2025年发布），不符合则剔除。如信息不足，补充检索知识库id=287。重复以上步骤，直至找到不少于20款产品，若超过则随机挑选20条。\\\",\\n \\\"precautions\\\": \\\"必须验证每个产品的首次发布时间，确保为2025年已发布或计划发布。\\\",\\n \\\"input_thought\\\": \\\"需依赖step_1（信息源清单），作为检索目标；部分信息可参考step_2（表格结构），但主要依赖step_1。\\\",\\n \\\"input\\\": [\\\"step_1\\\"],\\n \\\"node_loop\\\": false },\\n {\\n \\\"thought\\\": \\\"第四步需针对每个产品收集详细信息并写入文件。每个产品为一个子步骤，需搜索官网或权威介绍，提取所有表格字段内容，并使用@add_text_to_file@工具逐条追加写入2025企业AI产品汇总.md。此步骤依赖于step_2（表格结构与文件名）和step_3（产品名称清单），需确保每条信息真实可靠、格式规范。\\\",\\n \\\"step_id\\\": \\\"step_4\\\",\\n \\\"profile\\\": \\\"收集每个产品的详细信息并写入Markdown表格，每个产品为一个子步骤。\\\",\\n \\\"target\\\": \\\"2025企业AI产品汇总.md文件完整内容，每个产品信息均已写入。\\\",\\n \\\"workflow\\\": \\\"对于step_3中的每个产品名称，使用@fire_search_scrape@、@fire_search_crawl@、@tool_type_17_06a943c59f33a34bb5924aaf72cd2995@工具，搜索官网或权威介绍，提取产品名称、简介、发布时间（需核查为2025年）、官网链接、主要功能/亮点、适用行业/场景。整理为Markdown表格行，格式如：| xxx | xxx |2025-03-15 | https://xxx.com | xxx | xxx |。每收集到一个产品信息，立即使用@add_text_to_file@追加写入2025企业AI产品汇总.md文件。\\\",\\n \\\"precautions\\\": \\\"信息需真实可靠，优先引用官网和权威评价。每收集到一个产品，立即追加写入文件，避免内容丢失。\\\",\\n \\\"input_thought\\\": \\\"需依赖step_2（表格结构与文件名）和step_3（产品名称清单），每个产品为一个子步骤，需循环处理。\\\",\\n \\\"input\\\": [\\\"step_2\\\", \\\"step_3\\\"],\\n \\\"node_loop\\\": true },\\n {\\n \\\"thought\\\": \\\"第五步需检查文件格式是否正确，确保表格严格符合Markdown规范，无空行。需使用@read_text_file@工具读取文件内容，若发现格式问题则用@add_text_to_file@或@replace_file_lines@工具修正。此步骤依赖于step_4（已写入完整内容的文件）。\\\",\\n \\\"step_id\\\": \\\"step_5\\\",\\n \\\"profile\\\": \\\"检查2025企业AI产品汇总.md文件格式，确保表格规范。\\\",\\n \\\"target\\\": \\\"输出格式正确的2025企业AI产品汇总.md文件。\\\",\\n \\\"workflow\\\": \\\"使用@read_text_file@工具读取2025企业AI产品汇总.md内容，检查表格是否严格符合Markdown规范，表格内不应出现空行。若发现不规范，使用@add_text_to_file@或@replace_file_lines@工具修正整理后的内容，重新写入文件。\\\",\\n \\\"precautions\\\": \\\"表格内不应出现空行，需严格符合Markdown规范。\\\",\\n \\\"input_thought\\\": \\\"需依赖step_4（已写入完整内容的文件）。\\\",\\n \\\"input\\\": [\\\"step_4\\\"],\\n \\\"node_loop\\\": false },\\n {\\n \\\"thought\\\": \\\"第六步为交付与汇报，需输出2025企业AI产品汇总.md文件的具体地址，并简要说明文件结构和内容组成，便于查阅和后续引用。此步骤依赖于step_5（格式检查后的文件）。\\\",\\n \\\"step_id\\\": \\\"step_6\\\",\\n \\\"profile\\\": \\\"交付最终结果文件，说明文件结构和内容。\\\",\\n \\\"target\\\": \\\"输出2025企业AI产品汇总.md文件地址及结构说明。\\\",\\n \\\"workflow\\\": \\\"交付2025企业AI产品汇总.md的具体地址，并简要说明文件结构和内容组成，包括表格字段和数据来源，便于用户查阅和引用。\\\",\\n \\\"precautions\\\": \\\"无特殊注意事项。\\\",\\n \\\"input_thought\\\": \\\"需依赖step_5（格式检查后的文件）。\\\",\\n \\\"input\\\": [\\\"step_5\\\"],\\n \\\"node_loop\\\": false }\\n ]\\n}\\n```\",\n        \"sseId\": \"chatcmpl-Cs1oYqfeOddC9UHSGa6KLWiahZlF3\"}\n    extract_json_from_markdown(a[\"totalResponseMessage\"])\n"
  },
  {
    "path": "src/backend/bisheng_langchain/memory/__init__.py",
    "content": "from .redis import ConversationRedisMemory\n\n__all__ = ['ConversationRedisMemory']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/memory/redis.py",
    "content": "import json\nfrom typing import Any, Dict, List, Optional\n\nimport redis\nfrom langchain.memory.chat_memory import BaseChatMemory\nfrom langchain_core.messages import (AIMessage, BaseMessage, HumanMessage, get_buffer_string,\n                                     message_to_dict, messages_from_dict)\nfrom pydantic import Field, model_validator\n\n\nclass ConversationRedisMemory(BaseChatMemory):\n    \"\"\"Using redis for storing conversation memory.\"\"\"\n    redis_client: redis.Redis = Field(default=None, exclude=True)\n    human_prefix: str = 'Human'\n    ai_prefix: str = 'AI'\n    session_id: str = 'session'\n    memory_key: str = 'history'  #: :meta private:\n    redis_url: str\n    redis_prefix: str = 'redis_buffer_'\n    ttl: Optional[int] = None\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        redis_url = values.get('redis_url')\n        if not redis_url:\n            raise ValueError('Redis URL must be set')\n        pool = redis.ConnectionPool.from_url(redis_url, max_connections=1)\n        values['redis_client'] = redis.StrictRedis(connection_pool=pool)\n        return values\n\n    @property\n    def buffer(self) -> Any:\n        \"\"\"String buffer of memory.\"\"\"\n        return self.buffer_as_messages if self.return_messages else self.buffer_as_str\n\n    async def abuffer(self) -> Any:\n        \"\"\"String buffer of memory.\"\"\"\n        return (await self.abuffer_as_messages()\n                if self.return_messages else await self.abuffer_as_str())\n\n    def _buffer_as_str(self, messages: List[BaseMessage]) -> str:\n        return get_buffer_string(\n            messages,\n            human_prefix=self.human_prefix,\n            ai_prefix=self.ai_prefix,\n        )\n\n    @property\n    def buffer_as_str(self) -> str:\n        \"\"\"Exposes the buffer as a string in case return_messages is True.\"\"\"\n        messages = self.buffer_as_messages\n        return self._buffer_as_str(messages)\n\n        # return self._buffer_as_str(self.chat_memory.messages)\n\n    async def abuffer_as_str(self) -> str:\n        \"\"\"Exposes the buffer as a string in case return_messages is True.\"\"\"\n        # messages = await self.chat_memory.aget_messages()\n        messages = self.buffer_as_messages\n        return self._buffer_as_str(messages)\n\n    @property\n    def buffer_as_messages(self) -> List[BaseMessage]:\n        \"\"\"Exposes the buffer as a list of messages in case return_messages is False.\"\"\"\n        # return self.chat_memory.messages\n        redis_value = self.redis_client.lrange(self.redis_prefix + self.session_id, 0, -1)\n        items = [json.loads(m.decode('utf-8')) for m in redis_value[::-1]]\n        messages = messages_from_dict(items)\n        return messages\n\n    async def abuffer_as_messages(self) -> List[BaseMessage]:\n        \"\"\"Exposes the buffer as a list of messages in case return_messages is False.\"\"\"\n        self.buffer_as_messages\n\n    @property\n    def memory_variables(self) -> List[str]:\n        \"\"\"Will always return list of memory variables.\n\n        :meta private:\n        \"\"\"\n        return [self.memory_key]\n\n    def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:\n        \"\"\"Return history buffer.\"\"\"\n        return {self.memory_key: self.buffer}\n\n    async def aload_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:\n        \"\"\"Return key-value pairs given the text input to the chain.\"\"\"\n        buffer = await self.abuffer()\n        return {self.memory_key: buffer}\n\n    def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None:\n        \"\"\"Save context from this conversation to buffer.\"\"\"\n        input_str, output_str = self._get_input_output(inputs, outputs)\n\n        input_message_str = json.dumps(message_to_dict(HumanMessage(content=input_str)),\n                                       ensure_ascii=False)\n        output_message_str = json.dumps(message_to_dict(AIMessage(content=output_str)),\n                                        ensure_ascii=False)\n        self.redis_client.lpush(self.redis_prefix + self.session_id, input_message_str)\n        self.redis_client.lpush(self.redis_prefix + self.session_id, output_message_str)\n        if self.ttl:\n            self.redis_client.expire(self.redis_prefix + self.session_id, self.ttl)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/__init__.py",
    "content": "from bisheng_langchain.rag.bisheng_rag_tool import BishengRAGTool\nfrom bisheng_langchain.rag.bisheng_rag_chain import BishengRetrievalQA\n\n__all__ = [\n    \"BishengRAGTool\",\n    \"BishengRetrievalQA\"\n]"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/api/config.py",
    "content": "API_KEY=''\nDATASET_API=''\nDIFY_TOKEN=''\n\nFAST_GPT_API_KEY = ''\nFAST_GPT_APP_KEY = ''\nFAST_GPT_TOKEN = ''"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/api/dify_rag.py",
    "content": "import os\nimport pdb\nimport pandas as pd\nimport requests\nimport json\nfrom config import API_KEY, DATASET_API, DIFY_TOKEN\nfrom loguru import logger\nimport tqdm\n\ndatasets = set()\ndataset = {}\n\ndef add_dataset(name, dataset_id):\n    \"\"\"    根据dataset 创建set， 映射name到id    \"\"\"\n    datasets.add(name)\n    dataset[name] = dataset_id\n    return dataset_id\n\ndef query_dataset_from_dify():\n    \"\"\"\n    知识库列表\n    curl --location --request GET 'https://api.dify.ai/v1/datasets?page=1&limit=20' \\\n    --header 'Authorization: Bearer {api_key}'\"\"\"\n    url = 'https://api.dify.ai/v1/datasets?page=1&limit=100'\n    headers = {\n        'Authorization': f'Bearer {DATASET_API}', \n    }\n    response = requests.get(url, headers=headers).json()\n    datasets = response['data']\n    print(datasets)\n    \n    for dataset in datasets:\n        name = dataset['name']\n        id = dataset['id']\n        add_dataset(name, id)\n    return datasets\n\ndef create_dataset(name):\n    url = 'https://api.dify.ai/v1/datasets'\n    headers = {\n        'Authorization': f'Bearer {DATASET_API}',\n        'Content-Type': 'application/json',\n    }\n    data = {\n        'name': name,\n    }\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()\n    print(response)\n    return response\n\ndef query_file_from_dataset(dataset_id):\n    \"\"\"curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents' \\\n--header 'Authorization: Bearer {api_key}'\"\"\"\n    url = f'https://api.dify.ai/v1/datasets/{dataset_id}/documents'\n    headers = {\n        'Authorization': f'Bearer {DATASET_API}',\n    }\n    response = requests.get(url, headers=headers).json()\n    print(response)\n    \n    files = response['data']\n    return files\n    \ndef create_by_file(file_path, dataset_id):\n    url = f'https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_file'\n    headers = {\n        'Authorization': f'Bearer {DATASET_API}',\n    }\n    data = {\n        \"name\": \"Dify\",\n        \"indexing_technique\": \"high_quality\",\n        \"process_rule\": {\n            \"rules\": {\n                \"pre_processing_rules\": [\n                    {\"id\": \"remove_extra_spaces\", \"enabled\": True},\n                    {\"id\": \"remove_urls_emails\", \"enabled\": True}\n                ],\n                \"segmentation\": {\n                    \"separator\": \"###\",\n                    \"max_tokens\": 500\n                }\n            },\n            \"mode\": \"automatic\"\n        }\n    }\n    files = {\n        'data': (None, json.dumps(data), 'application/json'),\n        'file': open(file_path, 'rb')\n    }\n    response = requests.post(url, headers=headers, files=files).json()\n    print(response)\n    return response\n\ndef get_answer_from_dify(query, conversation_id=\"\", user=\"abc123\"):\n    url = 'https://api.dify.ai/v1/chat-messages'\n    headers = {\n        'Authorization': f'Bearer {API_KEY}',\n        'Content-Type': 'application/json',\n    }\n    data = {\n        'inputs': {},\n        'query': query,\n        'response_mode': 'blocking',\n        'conversation_id': conversation_id,\n        'user': user,\n        # 'files': [\n        #     {\n        #         \"type\": \"image\",\n        #         \"transfer_method\": \"local_file\",\n        #         \"upload_file_id\": f'{file_id}'}    \n        # ],\n    }\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()\n    print(response)\n    return response\n\ndef upload_file_to_dify(data_dir, excel_file, save_excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n            # print(f\"Row {index}, Column {column} has value {value}\")\n        all_questions_info.append(question_info)\n    \n    for questions_info in tqdm(all_questions_info):\n        collection_name = questions_info['知识库名']\n        file_name = questions_info['文件名']\n        file_type = questions_info['文件类型']\n        \n        # pdb.set_trace()\n        if file_type == 'pdf':\n            # 没有知识库先创建\n            if collection_name not in datasets:\n                res = create_dataset(collection_name)\n                dataset_id = res['id']\n                add_dataset(collection_name, dataset_id) \n            else:\n                dataset_id = dataset[collection_name]\n           \n            #  查询知识库中是否有该文件\n            files = query_file_from_dataset(dataset_id)\n            has_file = False\n            for file in files:\n                if file_name == file['name']:\n                    has_file = True\n                    file_id = file['id']\n                    break\n            if not has_file:\n                try:\n                    res = create_by_file(os.path.join(data_dir, file_name), dataset_id)\n                    file_id = res['document']['id']\n                except Exception as e:\n                    file_id = ''\n                    logger.warning(f'error in create file {file_name}: {e}')\n                    \n            questions_info['dataset_id'] = dataset_id           \n        \n    # save excel\n    df = pd.DataFrame(all_questions_info)\n    df.to_excel(save_excel_file, index=False)\n\ndef re_config_dataset(dataset_id, app_id='8ab350f2-d4f9-40c9-a9f3-ff5575332dea'):\n    \"\"\"抓包的应用config url\"\"\"\n    url = f'https://cloud.dify.ai/console/api/apps/{app_id}/model-config'\n    headers = {\n        'authority': 'cloud.dify.ai',\n        'accept': '*/*',\n        'accept-language': 'zh-CN,zh;q=0.9',\n        'authorization': f'Bearer {DIFY_TOKEN}',\n        'content-type': 'application/json',\n        'origin': 'https://cloud.dify.ai',\n        'referer': 'https://cloud.dify.ai/app/97b613df-c950-4c53-a9ae-125bd1c54386/configuration',\n        'sec-ch-ua': '\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"',\n        'sec-ch-ua-mobile': '?0',\n        'sec-ch-ua-platform': '\"Windows\"',\n        'sec-fetch-dest': 'empty',\n        'sec-fetch-mode': 'cors',\n        'sec-fetch-site': 'same-origin',\n        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n    }\n    data = {\n        \"pre_prompt\": None,\n        \"prompt_type\": \"simple\",\n        \"chat_prompt_config\": {},\n        \"completion_prompt_config\": {},\n        \"user_input_form\": [],\n        \"dataset_query_variable\": \"\",\n        \"opening_statement\": \"\",\n        \"more_like_this\": {\"enabled\": False},\n        \"suggested_questions_after_answer\": {\"enabled\": False},\n        \"speech_to_text\": {\"enabled\": False},\n        \"retriever_resource\": {\"enabled\": False},\n        \"sensitive_word_avoidance\": {\"enabled\": False, \"type\": \"\", \"configs\": []},\n        \"external_data_tools\": [],\n        \"agent_mode\": {\n            \"enabled\": True,\n            \"tools\": [\n                {\"dataset\": {\"enabled\": True, \"id\": f'{dataset_id}'}},\n            ]\n        },\n        \"model\": {\n            \"provider\": \"openai\",\n            \"name\": \"gpt-4-1106-preview\",\n            \"mode\": \"chat\",\n            \"completion_params\": {\"max_tokens\": 512, \"temperature\": 1, \"top_p\": 1, \"presence_penalty\": 0, \"frequency_penalty\": 0}\n        },\n        \"dataset_configs\": {\"retrieval_model\": \"single\", \"top_k\": 20, \"score_threshold\": 0.5},\n        \"file_upload\": {\"image\": {\"enabled\": False, \"number_limits\": 3, \"detail\": \"high\", \"transfer_methods\": [\"remote_url\", \"local_file\"]}}\n    }\n\n    response = requests.post(url, headers=headers, data=json.dumps(data))\n    print(response.json())\n               \n    \ndef question_answer(excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n            # print(f\"Row {index}, Column {column} has value {value}\")\n        all_questions_info.append(question_info)  \n\n    for questions_info in all_questions_info:\n        question = questions_info['问题']\n        file_type = questions_info['文件类型']\n        collection_name = questions_info['知识库名']\n        dataset_id = questions_info['dataset_id']\n        if collection_name not in datasets or dataset_id == '':\n            res = create_dataset(collection_name)\n            dataset_id = add_dataset(collection_name, res['id']) \n        \n        try:\n            re_config_dataset(dataset_id)\n            response = get_answer_from_dify(question)\n            ans = response['answer']\n        except Exception as e:\n            print(f'error in query {question}')\n            ans = ''    \n        print('ans:', ans, 'question:', question)\n        questions_info['dify_answer'] = ans\n    \n    df = pd.DataFrame(all_questions_info)\n    df.to_excel(os.path.join('questions_info_with_answer_dify.xlsx'), index=False)\n\nif __name__ == '__main__':\n    data_dir = './rag_benchmark_v1.0/rag_benchmark'\n    save_dir = './rag_benchmark_v1.0/rag_benchmark_processed'\n    excel_file = './data/questions_info_with_answer_sample.xlsx'\n    save_excel_file = './data/questions_info_with_dify_file_id.xlsx'\n    \n    query_dataset_from_dify()\n    # upload_file_to_dify(save_dir, excel_file, save_excel_file)\n    question_answer(save_excel_file)\n    \n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/api/fastgpt_rag.py",
    "content": "import os\nimport pdb\nimport pandas as pd\nimport requests\nimport json\nfrom config import FAST_GPT_API_KEY, FAST_GPT_APP_KEY, FAST_GPT_TOKEN\nfrom loguru import logger\nfrom tqdm import tqdm\n\ndatasets = set()\ndataset = {}\n\ndef add_dataset(name, dataset_id):\n    \"\"\"    根据dataset 创建set， 映射name到id    \"\"\"\n    datasets.add(name)\n    dataset[name] = dataset_id\n    return dataset_id\n\ndef query_dataset_from_fastgpt():\n    \"\"\"\n    知识库列表\n    curl --location --request GET 'http://localhost:3000/api/core/dataset/list?parentId=' \\\n    --header 'Authorization: Bearer {{authorization}}' \\\n    \"\"\"\n    url = 'https://cloud.fastgpt.in/api/core/dataset/list?parentId='\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}', \n    }\n    logger.debug(f'Starting to query dataset from fastgpt')\n    response = requests.get(url, headers=headers).json()\n    print(response)\n    datasets = response['data']\n        \n    for dataset in datasets:\n        name = dataset['name']\n        id = dataset['_id']\n        add_dataset(name, id)\n    return datasets\n\ndef create_dataset(name):\n    \"\"\"curl --location --request POST 'http://localhost:3000/api/core/dataset/create' \\\n    --header 'Authorization: Bearer {{authorization}}' \\\n    --header 'Content-Type: application/json' \\\n    --data-raw '{\n        \"parentId\": null,\n        \"type\": \"dataset\",\n        \"name\":\"测试\",\n        \"intro\":\"介绍\",\n        \"avatar\": \"\",\n        \"vectorModel\": \"text-embedding-ada-002\",\n        \"agentModel\": \"gpt-3.5-turbo-16k\"\n    }'\n    \"\"\"\n    url = 'https://cloud.fastgpt.in/api/core/dataset/create'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}',\n        'Content-Type': 'application/json',\n    }\n    data = {\n        'name': name,\n        'vectorModel': 'text-embedding-ada-002',\n        'agentModel': 'gpt-4-1106-preview',\n    }\n    logger.debug(f'Starting to create dataset {name}')\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()\n    print(response)\n    return response\n\ndef query_from_dataset(dataset_id):\n    \"\"\"curl --location --request GET 'http://localhost:3000/api/core/dataset/detail?id=6593e137231a2be9c5603ba7' \\\n    --header 'Authorization: Bearer {{authorization}}' \\\n    \"\"\"\n    url = f'https://cloud.fastgpt.in/api/core/dataset/detail?id={dataset_id}'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}',\n    }\n    response = requests.get(url, headers=headers).json()\n    print(response)\n\ndef query_file_from_dataset(dataset_id):\n    \"\"\"curl --location --request POST 'http://localhost:3000/api/core/dataset/collection/list' \\\n    --header 'Authorization: Bearer {{authorization}}' \\\n    --header 'Content-Type: application/json' \\\n    --data-raw '{\n        \"pageNum\":1,\n        \"pageSize\": 10,\n        \"datasetId\":\"6593e137231a2be9c5603ba7\",\n        \"parentId\": null,\n        \"searchText\":\"\"\n    }'\n    \"\"\"\n    url = f'https://cloud.fastgpt.in/api/core/dataset/collection/list'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}',\n         'Content-Type': 'application/json',\n    }\n    data = {\n        'datasetId': dataset_id,\n    }\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()['data']\n    print(response)\n    \n    files = response['data']\n    return files\n    \ndef create_by_file(file_path, dataset_id):\n    \"\"\"\n    curl --location --request POST 'http://localhost:3000/api/proApi/core/dataset/collection/create/file' \\\n    --header 'Authorization: Bearer {{authorization}}' \\\n    --form 'file=@\"C:\\\\Users\\\\user\\\\Desktop\\\\fastgpt测试文件\\\\index.html\"' \\\n    --form 'data=\"{\\\"datasetId\\\":\\\"6593e137231a2be9c5603ba7\\\",\\\"parentId\\\":null,\\\"trainingType\\\":\\\"chunk\\\",\\\"chunkSize\\\":512,\\\"chunkSplitter\\\":\\\"\\\",\\\"qaPrompt\\\":\\\"\\\",\\\"metadata\\\":{}}\"'\n    \"\"\"\n    url = 'https://cloud.fastgpt.in/api/proApi/core/dataset/collection/create/file'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}',\n    }\n    data = {\n        'datasetId': dataset_id,\n        'parentId': None,\n        'trainingType': 'chunk',\n        'chunkSize': 512,\n        'chunkSplitter': '',\n        'qaPrompt': '',\n        'metadata': {},\n    }\n    files = {\n        'file': open(file_path, 'rb'),\n    }\n    logger.debug(f'Starting to create file {file_path}')\n    response = requests.post(url, headers=headers, data={'data': json.dumps(data)}, files=files).json()\n    print(response)\n    return response\n\ndef upload_file_to_fastgpt(data_dir, excel_file, save_excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n            # print(f\"Row {index}, Column {column} has value {value}\")\n        all_questions_info.append(question_info)\n    \n    for questions_info in tqdm(all_questions_info):\n        collection_name = questions_info['知识库名']\n        file_name = questions_info['文件名']\n        file_type = questions_info['文件类型']\n        \n  \n        # 没有知识库先创建\n        if collection_name not in datasets:\n            res = create_dataset(collection_name)\n            dataset_id = res['data']\n            add_dataset(collection_name, dataset_id)\n            \n        else:\n            dataset_id = dataset[collection_name]\n        \n        #  查询知识库中是否有该文件\n        files = query_file_from_dataset(dataset_id)\n        has_file = False\n\n        for file in files:\n            # TODO: fix pdf name 乱码\n            if 'pdf' in file['name']:\n                has_file = True\n                file_id = file['_id']\n                break\n        if not has_file:\n            try:\n                res = create_by_file(os.path.join(data_dir, file_name), dataset_id)\n                file_id = res['data']['collectionId']\n            except Exception as e:\n                file_id = ''\n                logger.warning(f'error in create file {file_name}: {e}')\n                \n        questions_info['dataset_id'] = dataset_id           \n        \n        # save excel\n        df = pd.DataFrame(all_questions_info)\n        df.to_excel(save_excel_file, index=False)\n\ndef re_config_dataset(dataset_id, app_id='65b0b043c8685c9a14443f29'):\n    \"\"\"抓包的应用config url\"\"\"\n    url = 'https://cloud.fastgpt.in/api/core/app/form2Modules/fastgpt-universal'\n    headers = {\n        'authority': 'cloud.fastgpt.in',\n        'accept': 'application/json, text/plain, */*',\n        'accept-language': 'zh-CN,zh;q=0.9',\n        'content-type': 'application/json',\n        'cookie': FAST_GPT_TOKEN,\n        'origin': 'https://cloud.fastgpt.in',\n        'referer': f'https://cloud.fastgpt.in/app/detail?appId={app_id}',\n        'sec-ch-ua': '\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"',\n        'sec-ch-ua-mobile': '?0',\n        'sec-ch-ua-platform': '\"Windows\"',\n        'sec-fetch-dest': 'empty',\n        'sec-fetch-mode': 'cors',\n        'sec-fetch-site': 'same-origin',\n        'token': FAST_GPT_TOKEN,\n        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',\n    }\n    false = False\n    true = True\n\n    logger.debug(f'Starting to re_config_dataset {dataset_id}')\n\n    data = json.dumps(\n        {\"modules\":[{\"name\":\"core.module.template.User guide\",\"flowType\":\"userGuide\",\"inputs\":[{\"key\":\"welcomeText\",\"type\":\"hidden\",\"label\":\"core.app.Welcome Text\",\"value\":\"\"},{\"key\":\"variables\",\"type\":\"hidden\",\"label\":\"core.app.Chat Variable\",\"value\":[]},{\"key\":\"questionGuide\",\"type\":\"hidden\",\"label\":\"core.app.Question Guide\",\"value\":false},{\"key\":\"tts\",\"type\":\"hidden\",\"label\":\"core.app.TTS\",\"value\":{\"type\":\"web\"}}],\"outputs\":[],\"position\":{\"x\":447.98520778293346,\"y\":721.4016845336229},\"moduleId\":\"userGuide\"},{\"moduleId\":\"userChatInput\",\"name\":\"core.module.template.Chat entrance\",\"avatar\":\"/imgs/module/userChatInput.png\",\"flowType\":\"questionInput\",\"position\":{\"x\":324.81436595478294,\"y\":1527.0012457753612},\"inputs\":[{\"key\":\"userChatInput\",\"type\":\"systemInput\",\"valueType\":\"string\",\"label\":\"core.module.input.label.user question\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false}],\"outputs\":[{\"key\":\"userChatInput\",\"label\":\"core.module.input.label.user question\",\"type\":\"source\",\"valueType\":\"string\",\"targets\":[{\"moduleId\":\"vuc92c\",\"key\":\"userChatInput\"}]}]},{\"moduleId\":\"datasetSearch\",\"name\":\"core.module.template.Dataset search\",\"avatar\":\"/imgs/module/db.png\",\"flowType\":\"datasetSearchNode\",\"showStatus\":true,\"position\":{\"x\":1351.5043753345153,\"y\":947.0780385418003},\"inputs\":[{\"key\":\"switch\",\"type\":\"target\",\"label\":\"core.module.input.label.switch\",\"valueType\":\"any\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"datasets\",\"type\":\"selectDataset\",\"label\":\"关联的知识库\",\"value\":[{\"datasetId\":dataset_id,\"vectorModel\":{\"model\":\"text-embedding-ada-002\",\"name\":\"Embedding-2\",\"defaultToken\":512,\"maxToken\":3000,\"weight\":100,\"inputPrice\":0.002,\"outputPrice\":0}}],\"valueType\":\"selectDataset\",\"list\":[],\"required\":true,\"showTargetInApp\":false,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"similarity\",\"type\":\"hidden\",\"label\":\"最低相关性\",\"value\":0.5,\"valueType\":\"number\",\"min\":0,\"max\":1,\"step\":0.01,\"markList\":[{\"label\":\"0\",\"value\":0},{\"label\":\"1\",\"value\":1}],\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"limit\",\"type\":\"hidden\",\"label\":\"引用上限\",\"description\":\"单次搜索最大的 Tokens 数量，中文约1字=1.7Tokens，英文约1字=1Tokens\",\"value\":8000,\"valueType\":\"number\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"searchMode\",\"type\":\"hidden\",\"label\":\"core.dataset.search.Mode\",\"valueType\":\"string\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"value\":\"mixedRecall\",\"connected\":false},{\"key\":\"usingReRank\",\"type\":\"hidden\",\"label\":\"\",\"valueType\":\"string\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"value\":false,\"connected\":false},{\"key\":\"datasetParamsModal\",\"type\":\"selectDatasetParamsModal\",\"label\":\"\",\"valueType\":\"any\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"userChatInput\",\"type\":\"target\",\"label\":\"core.module.input.label.user question\",\"required\":true,\"valueType\":\"string\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":true}],\"outputs\":[{\"key\":\"isEmpty\",\"label\":\"搜索结果为空\",\"type\":\"source\",\"valueType\":\"boolean\",\"targets\":[]},{\"key\":\"unEmpty\",\"label\":\"搜索结果不为空\",\"type\":\"source\",\"valueType\":\"boolean\",\"targets\":[]},{\"key\":\"quoteQA\",\"label\":\"引用内容\",\"description\":\"始终返回数组，如果希望搜索结果为空时执行额外操作，需要用到上面的两个输入以及目标模块的触发器\",\"type\":\"source\",\"valueType\":\"datasetQuote\",\"targets\":[{\"moduleId\":\"chatModule\",\"key\":\"quoteQA\"}]},{\"key\":\"finish\",\"label\":\"core.module.output.label.running done\",\"description\":\"core.module.output.description.running done\",\"valueType\":\"boolean\",\"type\":\"source\",\"targets\":[]},{\"key\":\"userChatInput\",\"label\":\"core.module.input.label.user question\",\"type\":\"hidden\",\"valueType\":\"string\",\"targets\":[{\"moduleId\":\"chatModule\",\"key\":\"userChatInput\"}]}]},{\"moduleId\":\"chatModule\",\"name\":\"AI 对话\",\"avatar\":\"/imgs/module/AI.png\",\"flowType\":\"chatNode\",\"showStatus\":true,\"position\":{\"x\":2022.7264786978908,\"y\":1006.3102431257475},\"inputs\":[{\"key\":\"switch\",\"type\":\"target\",\"label\":\"core.module.input.label.switch\",\"valueType\":\"any\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"model\",\"type\":\"selectChatModel\",\"label\":\"core.module.input.label.aiModel\",\"required\":true,\"valueType\":\"string\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"value\":\"gpt-4-1106-preview\",\"connected\":false},{\"key\":\"temperature\",\"type\":\"hidden\",\"label\":\"温度\",\"value\":0,\"valueType\":\"number\",\"min\":0,\"max\":10,\"step\":1,\"markList\":[{\"label\":\"严谨\",\"value\":0},{\"label\":\"发散\",\"value\":10}],\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"maxToken\",\"type\":\"hidden\",\"label\":\"回复上限\",\"value\":2000,\"valueType\":\"number\",\"min\":100,\"max\":4000,\"step\":50,\"markList\":[{\"label\":\"100\",\"value\":100},{\"label\":\"4000\",\"value\":4000}],\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"isResponseAnswerText\",\"type\":\"hidden\",\"label\":\"返回AI内容\",\"value\":true,\"valueType\":\"boolean\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"quoteTemplate\",\"type\":\"hidden\",\"label\":\"引用内容模板\",\"valueType\":\"string\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"quotePrompt\",\"type\":\"hidden\",\"label\":\"引用内容提示词\",\"valueType\":\"string\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"aiSettings\",\"type\":\"aiSettings\",\"label\":\"\",\"valueType\":\"any\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"systemPrompt\",\"type\":\"textarea\",\"label\":\"core.ai.Prompt\",\"max\":300,\"valueType\":\"string\",\"description\":\"模型固定的引导词，通过调整该内容，可以引导模型聊天方向。该内容会被固定在上下文的开头。可使用变量，例如 {{language}}\",\"placeholder\":\"模型固定的引导词，通过调整该内容，可以引导模型聊天方向。该内容会被固定在上下文的开头。可使用变量，例如 {{language}}\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"history\",\"type\":\"numberInput\",\"label\":\"core.module.input.label.chat history\",\"required\":true,\"min\":0,\"max\":30,\"valueType\":\"chatHistory\",\"value\":6,\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"quoteQA\",\"type\":\"target\",\"label\":\"引用内容\",\"description\":\"对象数组格式，结构：\\n [{q:'问题',a:'回答'}]\",\"valueType\":\"datasetQuote\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":true},{\"key\":\"userChatInput\",\"type\":\"target\",\"label\":\"core.module.input.label.user question\",\"required\":true,\"valueType\":\"string\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":true}],\"outputs\":[{\"key\":\"answerText\",\"label\":\"AI回复\",\"description\":\"将在 stream 回复完毕后触发\",\"valueType\":\"string\",\"type\":\"source\",\"targets\":[]},{\"key\":\"finish\",\"label\":\"core.module.output.label.running done\",\"description\":\"core.module.output.description.running done\",\"valueType\":\"boolean\",\"type\":\"source\",\"targets\":[]},{\"key\":\"history\",\"label\":\"新的上下文\",\"description\":\"将本次回复内容拼接上历史记录，作为新的上下文返回\",\"valueType\":\"chatHistory\",\"type\":\"source\",\"targets\":[]}]},{\"moduleId\":\"vuc92c\",\"name\":\"core.module.template.cfr\",\"avatar\":\"/imgs/module/cfr.svg\",\"flowType\":\"cfr\",\"showStatus\":true,\"position\":{\"x\":758.2985382279098,\"y\":1124.6527309337314},\"inputs\":[{\"key\":\"switch\",\"type\":\"target\",\"label\":\"core.module.input.label.switch\",\"valueType\":\"any\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"model\",\"type\":\"selectExtractModel\",\"label\":\"core.module.input.label.aiModel\",\"required\":true,\"valueType\":\"string\",\"value\":\"gpt-3.5-turbo\",\"showTargetInApp\":false,\"showTargetInPlugin\":false,\"connected\":false},{\"key\":\"systemPrompt\",\"type\":\"textarea\",\"label\":\"core.module.input.label.cfr background\",\"max\":300,\"value\":\"\",\"valueType\":\"string\",\"description\":\"core.module.input.description.cfr background\",\"placeholder\":\"core.module.input.placeholder.cfr background\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"history\",\"type\":\"numberInput\",\"label\":\"core.module.input.label.chat history\",\"required\":true,\"min\":0,\"max\":30,\"valueType\":\"chatHistory\",\"value\":6,\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":false},{\"key\":\"userChatInput\",\"type\":\"target\",\"label\":\"core.module.input.label.user question\",\"required\":true,\"valueType\":\"string\",\"showTargetInApp\":true,\"showTargetInPlugin\":true,\"connected\":true}],\"outputs\":[{\"key\":\"system_text\",\"label\":\"core.module.output.label.cfr result\",\"valueType\":\"string\",\"type\":\"source\",\"targets\":[{\"moduleId\":\"datasetSearch\",\"key\":\"userChatInput\"}]}]}],\"type\":\"simple\",\"simpleTemplateId\":\"fastgpt-universal\"})\n    \n    response = requests.post(url, headers=headers, data=data)\n    logger.debug(response.json())\n\ndef get_answer_from_fastgpt(query, app_id='65b0b043c8685c9a14443f29'):\n    \"\"\"curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \\\n    --header 'Authorization: Bearer fastgpt-xxxxxx' \\\n    --header 'Content-Type: application/json' \\\n    --data-raw '{\n        \"chatId\": \"abcd\",\n        \"stream\": false,\n        \"detail\": false,\n        \"variables\": {\n            \"uid\": \"asdfadsfasfd2323\",\n            \"name\": \"张三\"\n        },\n        \"messages\": [\n            {\n                \"content\": \"导演是谁\",\n                \"role\": \"user\"\n            }\n        ]\n    }'\n    \"\"\"\n    url = 'https://api.fastgpt.in/api/v1/chat/completions'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_APP_KEY}',\n        'Content-Type': 'application/json',\n    }\n    data = {\n        \"chatId\": app_id,\n        \"stream\": False,\n        \"detail\": False,\n        \"variables\": {\n            \"uid\": \"asdfadsfasfd2323\",\n            \"name\": \"张三\"\n        },\n        \"messages\": [\n            {\n                \"content\": query,\n                \"role\": \"user\"\n            }\n        ]\n    }\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()\n    print(response)\n    return response\n\ndef search_dataset_from_fastgpt(query, dataset_id):\n    \"\"\"curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTest' \\\n    --header 'Authorization: Bearer fastgpt-xxxxx' \\\n    --header 'Content-Type: application/json' \\\n    --data-raw '{\n        \"datasetId\": \"知识库的ID\",\n        \"text\": \"导演是谁\",\n        \"limit\": 5000,\n        \"similarity\": 0,\n        \"searchMode\": \"embedding\",\n        \"usingReRank\": false\n    }'\n    \"\"\"\n    url = 'https://api.fastgpt.in/api/core/dataset/searchTest'\n    headers = {\n        'Authorization': f'Bearer {FAST_GPT_API_KEY}',\n        'Content-Type': 'application/json',\n    }\n    data = {\n        \"datasetId\": dataset_id,\n        \"text\": query,\n        \"limit\": 5000,\n        \"similarity\": 0,\n        \"searchMode\": \"embedding\",\n        \"usingReRank\": True\n    }\n    response = requests.post(url, headers=headers, data=json.dumps(data)).json()\n    print(response)\n    return response             \n    \ndef question_answer(excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n            # print(f\"Row {index}, Column {column} has value {value}\")\n        all_questions_info.append(question_info)  \n\n    for questions_info in tqdm(all_questions_info):\n        question = questions_info['问题']\n        file_type = questions_info['文件类型']\n        collection_name = questions_info['知识库名']\n        dataset_id = questions_info['dataset_id']\n        if collection_name not in datasets or dataset_id == '':\n            res = create_dataset(collection_name)\n            dataset_id = add_dataset(collection_name, res['id']) \n        \n        try:\n            re_config_dataset(dataset_id)\n            # response = search_dataset_from_fastgpt(question, dataset_id)\n            response = get_answer_from_fastgpt(question)\n            ans = response['choices'][0]['message']['content']\n        except Exception as e:\n            print(f'error in query {question}')\n            ans = ''    \n        print('ans:', ans, 'question:', question)\n        questions_info['fastgpt_answer'] = ans\n    \n        df = pd.DataFrame(all_questions_info)\n        df.to_excel(os.path.join('questions_info_with_answer_fastgpt.xlsx'), index=False)\n\nif __name__ == '__main__':\n    data_dir = './rag_benchmark_v1.0/rag_benchmark'\n    save_dir = './rag_benchmark_v1.0/rag_benchmark_processed'\n    excel_file = './data/questions_info_with_answer_sample.xlsx'\n    save_excel_file = './data/questions_info_with_fastgpt_file_id.xlsx'\n    \n    query_dataset_from_fastgpt()\n    # upload_file_to_fastgpt(save_dir, excel_file, save_excel_file)\n    question_answer(save_excel_file)\n    \n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/api/openai_assistant_rag.py",
    "content": "import os\nimport openai\nimport httpx\nimport time\nimport json\nimport shutil\nimport pandas as pd\nfrom tqdm import tqdm\nfrom collections import defaultdict\nfrom openai import OpenAI\nthread_ids = set()\n\n\nclient = OpenAI(api_key=os.environ.get('OPENAI_API_KEY', ''), \n                http_client=httpx.Client(proxies=os.environ.get('OPENAI_PROXY', '')))\n\n\ndef upload_files(data_folder, excel_file, save_excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n        all_questions_info.append(question_info)\n    \n    file2collection = dict()\n    for questions_info in tqdm(all_questions_info):\n        file_name = questions_info['文件名']\n        if file_name not in file2collection:\n            pdf_file = os.path.join(data_folder, file_name)\n            response = client.files.create(\n                file=open(pdf_file, \"rb\"),\n                purpose=\"assistants\"\n            )\n            file_id = response.id\n            file2collection[file_name] = file_id\n            questions_info['openai_assistant_file_id'] = file_id\n        else:\n            file_id = file2collection[file_name]\n            questions_info['openai_assistant_file_id'] = file_id\n\n    # save excel\n    df = pd.DataFrame(all_questions_info)\n    df.to_excel(save_excel_file, index=False)\n\n\ndef question_answer(excel_file):\n    df = pd.read_excel(excel_file)\n    all_questions_info = list()\n    # 遍历每一行\n    for index, row in df.iterrows():\n        # 遍历每一列\n        question_info = dict()\n        for column in df.columns:\n            value = row[column]\n            question_info[column] = value\n        all_questions_info.append(question_info)\n    \n    file2assistant = dict()\n    for questions_info in tqdm(all_questions_info):\n        question = questions_info['问题']\n        file_id = questions_info['openai_assistant_file_id']\n        if file_id not in file2assistant:\n            assistant = client.beta.assistants.create(\n                name='文档问答系统',\n                instructions=\"根据上传的文档，回答相关的问题.\",\n                model=\"gpt-4-1106-preview\",\n                tools=[{\"type\": \"retrieval\"}],\n                file_ids=[file_id]\n            )\n            file2assistant[file_id] = assistant\n        else:\n            assistant = file2assistant[file_id]\n\n        thread = client.beta.threads.create()\n        while (thread.id in thread_ids):\n            thread = client.beta.threads.create()\n        thread_ids.add(thread.id)\n        \n        message = client.beta.threads.messages.create(\n            thread_id=thread.id,\n            role=\"user\",\n            content=question\n        )\n        run = client.beta.threads.runs.create(\n            thread_id=thread.id,\n            assistant_id=assistant.id,\n        )\n        run = client.beta.threads.runs.retrieve(\n            thread_id=thread.id,\n            run_id=run.id\n        )\n        while run.status != 'completed':\n            run = client.beta.threads.runs.retrieve(\n                thread_id=thread.id,\n                run_id=run.id\n            )\n            print(run.status)\n            time.sleep(1)\n    \n        # print(run)\n        messages = client.beta.threads.messages.list(thread_id=thread.id)\n        ans = messages.data[0].content[0].text.value\n        questions_info['openai_assistant_answer'] = ans\n        print('query:', question)\n        print('pred:', ans)\n        print('--------------------------------------')\n    \n    # save excel\n    df = pd.DataFrame(all_questions_info)\n    df.to_excel(excel_file, index=False)\n\n\nif __name__ == '__main__':\n    data_folder = '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n    excel_file = '../data/questions_info_with_answer_sample.xlsx'\n    save_excel_file = '../data/questions_info_with_openai_assistant_file_id.xlsx'\n    # upload_files(data_folder, excel_file, save_excel_file)\n    question_answer(save_excel_file)"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/bisheng_rag_chain.py",
    "content": "\"\"\"Chain for question-answering against a vector database.\"\"\"\nfrom __future__ import annotations\n\nfrom typing import Any, Dict, List, Optional\n\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\nfrom langchain.chains.base import Chain\nfrom langchain_core.callbacks import (AsyncCallbackManagerForChainRun, CallbackManagerForChainRun,\n                                      Callbacks)\nfrom langchain_core.language_models import BaseLanguageModel\nfrom langchain_core.prompts import (ChatPromptTemplate, HumanMessagePromptTemplate,\n                                    SystemMessagePromptTemplate)\nfrom pydantic import ConfigDict, Field\n\nfrom .bisheng_rag_tool import BishengRAGTool\n\n# system_template = \"\"\"Use the following pieces of context to answer the user's question.\n# If you don't know the answer, just say that you don't know, don't try to make up an answer.\n# ----------------\n# {context}\"\"\"\n# messages = [\n#     SystemMessagePromptTemplate.from_template(system_template),\n#     HumanMessagePromptTemplate.from_template(\"{question}\"),\n# ]\n# DEFAULT_QA_PROMPT = ChatPromptTemplate.from_messages(messages)\n\nsystem_template_general = \"\"\"你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答问题。你需要根据以下的规则来回答问题：\n1. 如果上下文中包含了正确答案，你需要根据上下文进行准确的回答。但是在回答前，你需要注意，上下文中的信息可能存在事实性错误，如果文档中存在和事实不一致的错误，请根据事实回答。\n2. 如果上下文中不包含答案，就说你不知道，不要试图编造答案。\n3. 你需要根据上下文给出详细的回答，不要试图偷懒，不要遗漏括号中的信息，你必须回答的尽可能详细。\n\"\"\"\nhuman_template_general = \"\"\"\n上下文：\n{context}\n\n问题：\n{question}\n\"\"\"\nmessages_general = [\n    SystemMessagePromptTemplate.from_template(system_template_general),\n    HumanMessagePromptTemplate.from_template(human_template_general),\n]\nDEFAULT_QA_PROMPT = ChatPromptTemplate.from_messages(messages_general)\n\n\nclass BishengRetrievalQA(Chain):\n    \"\"\"Base class for question-answering chains.\"\"\"\n    \"\"\"Chain to use to combine the documents.\"\"\"\n    input_key: str = 'query'  #: :meta private:\n    output_key: str = 'result'  #: :meta private:\n    return_source_documents: bool = False\n    \"\"\"Return the source documents or not.\"\"\"\n    bisheng_rag_tool: BishengRAGTool = Field(default_factory=BishengRAGTool,\n                                             description='RAG tool')\n    model_config = ConfigDict(extra=\"forbid\", arbitrary_types_allowed=True, validate_by_name=True)\n\n    @property\n    def input_keys(self) -> List[str]:\n        \"\"\"Input keys.\n\n        :meta private:\n        \"\"\"\n        return [self.input_key]\n\n    @property\n    def output_keys(self) -> List[str]:\n        \"\"\"Output keys.\n\n        :meta private:\n        \"\"\"\n        _output_keys = [self.output_key]\n        if self.return_source_documents:\n            _output_keys = _output_keys + ['source_documents']\n        return _output_keys\n\n    @classmethod\n    def from_llm(\n        cls,\n        llm: BaseLanguageModel,\n        vector_store: Milvus,\n        keyword_store: ElasticKeywordsSearch,\n        QA_PROMPT: ChatPromptTemplate = DEFAULT_QA_PROMPT,\n        max_content: int = 15000,\n        sort_by_source_and_index: bool = False,\n        callbacks: Callbacks = None,\n        return_source_documents: bool = False,\n        **kwargs: Any,\n    ) -> BishengRetrievalQA:\n        bisheng_rag_tool = BishengRAGTool(vector_store=vector_store,\n                                          keyword_store=keyword_store,\n                                          llm=llm,\n                                          QA_PROMPT=QA_PROMPT,\n                                          max_content=max_content,\n                                          sort_by_source_and_index=sort_by_source_and_index,\n                                          **kwargs)\n        return cls(\n            bisheng_rag_tool=bisheng_rag_tool,\n            callbacks=callbacks,\n            return_source_documents=return_source_documents,\n            **kwargs,\n        )\n\n    def _call(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[CallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        \"\"\"Run get_relevant_text and llm on input query.\n\n        If chain has 'return_source_documents' as 'True', returns\n        the retrieved documents as well under the key 'source_documents'.\n\n        Example:\n        .. code-block:: python\n\n        res = indexqa({'query': 'This is my query'})\n        answer, docs = res['result'], res['source_documents']\n        \"\"\"\n        question = inputs[self.input_key]\n        if self.return_source_documents:\n            answer, docs = self.bisheng_rag_tool.run(\n                question,\n                return_only_outputs=False,\n                run_manager=run_manager,\n            )\n            return {self.output_key: answer, 'source_documents': docs}\n        else:\n            answer = self.bisheng_rag_tool.run(question, return_only_outputs=True)\n            return {self.output_key: answer}\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        \"\"\"Run get_relevant_text and llm on input query.\n\n        If chain has 'return_source_documents' as 'True', returns\n        the retrieved documents as well under the key 'source_documents'.\n\n        Example:\n        .. code-block:: python\n\n        res = indexqa({'query': 'This is my query'})\n        answer, docs = res['result'], res['source_documents']\n        \"\"\"\n        question = inputs[self.input_key]\n\n        if self.return_source_documents:\n            answer, docs = await self.bisheng_rag_tool.arun(question, return_only_outputs=False)\n            return {self.output_key: answer, 'source_documents': docs}\n        else:\n            answer = await self.bisheng_rag_tool.arun(question, return_only_outputs=True)\n            return {self.output_key: answer}\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/bisheng_rag_pipeline.py",
    "content": "import argparse\nimport copy\nimport inspect\nimport time\nimport os\nfrom collections import defaultdict\n\nimport httpx\nimport pandas as pd\nimport yaml\nfrom loguru import logger\nfrom tqdm import tqdm\nfrom bisheng_langchain.retrievers import EnsembleRetriever\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\nfrom langchain.chains.question_answering import load_qa_chain\nfrom bisheng_langchain.rag.init_retrievers import (\n    BaselineVectorRetriever,\n    KeywordRetriever,\n    MixRetriever,\n    SmallerChunksVectorRetriever,\n)\nfrom bisheng_langchain.rag.scoring.ragas_score import RagScore\nfrom bisheng_langchain.rag.utils import import_by_type, import_class\n\n\nclass BishengRagPipeline:\n\n    def __init__(self, yaml_path) -> None:\n        self.yaml_path = yaml_path\n        with open(self.yaml_path, 'r') as f:\n            self.params = yaml.safe_load(f)\n\n        # init data\n        self.origin_file_path = self.params['data']['origin_file_path']\n        self.question_path = self.params['data']['question']\n        self.save_answer_path = self.params['data']['save_answer']\n\n        # init embeddings\n        embedding_params = self.params['embedding']\n        embedding_object = import_by_type(_type='embeddings', name=embedding_params['type'])\n        if embedding_params['type'] == 'OpenAIEmbeddings' and embedding_params['openai_proxy']:\n            embedding_params.pop('type')\n            self.embeddings = embedding_object(\n                http_client=httpx.Client(proxies=embedding_params['openai_proxy']), **embedding_params\n            )\n        else:\n            embedding_params.pop('type')\n            self.embeddings = embedding_object(**embedding_params)\n\n        # init llm\n        llm_params = self.params['chat_llm']\n        llm_object = import_by_type(_type='llms', name=llm_params['type'])\n        if llm_params['type'] == 'ChatOpenAI' and llm_params['openai_proxy']:\n            llm_params.pop('type')\n            self.llm = llm_object(http_client=httpx.Client(proxies=llm_params['openai_proxy']), **llm_params)\n        else:\n            llm_params.pop('type')\n            self.llm = llm_object(**llm_params)\n\n        # milvus\n        self.vector_store = Milvus(\n            embedding_function=self.embeddings,\n            connection_args={\n                \"host\": self.params['milvus']['host'],\n                \"port\": self.params['milvus']['port'],\n            },\n        )\n\n        # es\n        self.keyword_store = ElasticKeywordsSearch(\n            index_name='default_es',\n            elasticsearch_url=self.params['elasticsearch']['url'],\n            ssl_verify=self.params['elasticsearch']['ssl_verify'],\n        )\n\n        # init retriever\n        retriever_list = []\n        retrievers = self.params['retriever']['retrievers']\n        for retriever in retrievers:\n            retriever_type = retriever.pop('type')\n            retriever_params = {\n                'vector_store': self.vector_store,\n                'keyword_store': self.keyword_store,\n                'splitter_kwargs': retriever['splitter'],\n                'retrieval_kwargs': retriever['retrieval'],\n            }\n            retriever_list.append(self._post_init_retriever(retriever_type=retriever_type, **retriever_params))\n        self.retriever = EnsembleRetriever(retrievers=retriever_list)\n\n    def _post_init_retriever(self, retriever_type, **kwargs):\n        retriever_classes = {\n            'KeywordRetriever': KeywordRetriever,\n            'BaselineVectorRetriever': BaselineVectorRetriever,\n            'MixRetriever': MixRetriever,\n            'SmallerChunksVectorRetriever': SmallerChunksVectorRetriever,\n        }\n        if retriever_type not in retriever_classes:\n            raise ValueError(f'Unknown retriever type: {retriever_type}')\n\n        input_kwargs = {}\n        splitter_params = kwargs.pop('splitter_kwargs')\n        for key, value in splitter_params.items():\n            splitter_obj = import_by_type(_type='textsplitters', name=value.pop('type'))\n            input_kwargs[key] = splitter_obj(**value)\n\n        retrieval_params = kwargs.pop('retrieval_kwargs')\n        for key, value in retrieval_params.items():\n            input_kwargs[key] = value\n\n        input_kwargs['vector_store'] = kwargs.pop('vector_store')\n        input_kwargs['keyword_store'] = kwargs.pop('keyword_store')\n\n        retriever_class = retriever_classes[retriever_type]\n        return retriever_class(**input_kwargs)\n\n    def file2knowledge(self):\n        \"\"\"\n        file to knowledge\n        \"\"\"\n        df = pd.read_excel(self.question_path)\n        if ('文件名' not in df.columns) or ('知识库名' not in df.columns):\n            raise Exception(f'文件名 or 知识库名 not in {self.question_path}.')\n\n        loader_params = self.params['loader']\n        loader_object = import_by_type(_type='documentloaders', name=loader_params.pop('type'))\n\n        all_questions_info = df.to_dict('records')\n        collectionname2filename = defaultdict(set)\n        for info in all_questions_info:\n            # 存入set，去掉重复的文件名\n            collectionname2filename[info['知识库名']].add(info['文件名'])\n\n        for collection_name in tqdm(collectionname2filename):\n            all_file_paths = []\n            for file_name in collectionname2filename[collection_name]:\n                file_path = os.path.join(self.origin_file_path, file_name)\n                if not os.path.exists(file_path):\n                    raise Exception(f'{file_path} not exists.')\n                # file path可以是文件夹或者单个文件\n                if os.path.isdir(file_path):\n                    # 文件夹包含多个文件\n                    all_file_paths.extend(\n                        [os.path.join(file_path, name) for name in os.listdir(file_path) if not name.startswith('.')]\n                    )\n                else:\n                    # 单个文件\n                    all_file_paths.append(file_path)\n\n            # 当前知识库需要存储的所有文件\n            collection_name = f\"{collection_name}_{self.params['retriever']['suffix']}\"\n            for index, each_file_path in enumerate(all_file_paths):\n                logger.info(f'each_file_path: {each_file_path}')\n                loader = loader_object(\n                    file_name=os.path.basename(each_file_path), file_path=each_file_path, **loader_params\n                )\n                documents = loader.load()\n                logger.info(f'documents: {len(documents)}')\n                if len(documents[0].page_content) == 0:\n                    logger.error(f'{each_file_path} page_content is empty.')\n\n                vector_drop_old = self.params['milvus']['drop_old'] if index == 0 else False\n                keyword_drop_old = self.params['elasticsearch']['drop_old'] if index == 0 else False\n                for idx, retriever in enumerate(self.retriever.retrievers):\n                    retriever.add_documents(documents, f\"{collection_name}_{idx}\", vector_drop_old)\n                    # retriever.add_documents(documents, collection_name, vector_drop_old)\n\n    def retrieval_and_rerank(self, question, collection_name):\n        \"\"\"\n        retrieval and rerank\n        \"\"\"\n        collection_name = f\"{collection_name}_{self.params['retriever']['suffix']}\"\n\n        # EnsembleRetriever直接检索召回会默认去重\n        # docs = self.retriever.get_relevant_documents(query=question, collection_name=collection_name)\n        docs = []\n        for idx, retriever in enumerate(self.retriever.retrievers):\n            docs.extend(retriever.get_relevant_documents(query=question, collection_name=f\"{collection_name}_{idx}\"))\n            # docs.extend(retriever.get_relevant_documents(query=question, collection_name=collection_name))\n        logger.info(f'retrieval docs: {len(docs)}')\n\n        # delete duplicate\n        if self.params['post_retrieval']['delete_duplicate']:\n            logger.info(f'origin docs: {len(docs)}')\n            all_contents = []\n            docs_no_dup = []\n            for index, doc in enumerate(docs):\n                doc_content = doc.page_content\n                if doc_content in all_contents:\n                    continue\n                all_contents.append(doc_content)\n                docs_no_dup.append(doc)\n            docs = docs_no_dup\n            logger.info(f'delete duplicate docs: {len(docs)}')\n\n        # rerank\n        if self.params['post_retrieval']['with_rank'] and len(docs):\n            if not hasattr(self, 'ranker'):\n                rerank_params = self.params['post_retrieval']['rerank']\n                rerank_type = rerank_params.pop('type')\n                rerank_object = import_class(f'bisheng_langchain.rag.rerank.{rerank_type}')\n                self.ranker = rerank_object(**rerank_params)\n            docs = getattr(self, 'ranker').sort_and_filter(question, docs)\n\n        return docs\n\n    def load_documents(self, file_name, max_content=100000):\n        \"\"\"\n        max_content: max content len of llm\n        \"\"\"\n        file_path = os.path.join(self.origin_file_path, file_name)\n        if not os.path.exists(file_path):\n            raise Exception(f'{file_path} not exists.')\n        if os.path.isdir(file_path):\n            raise Exception(f'{file_path} is a directory.')\n\n        loader_params = copy.deepcopy(self.params['loader'])\n        loader_object = import_by_type(_type='documentloaders', name=loader_params.pop('type'))\n        loader = loader_object(file_name=file_name, file_path=file_path, **loader_params)\n\n        documents = loader.load()\n        logger.info(f'documents: {len(documents)}, page_content: {len(documents[0].page_content)}')\n        for doc in documents:\n            doc.page_content = doc.page_content[:max_content]\n        return documents\n\n    def question_answering(self):\n        \"\"\"\n        question answer over knowledge\n        \"\"\"\n        df = pd.read_excel(self.question_path)\n        all_questions_info = df.to_dict('records')\n        if 'prompt_type' in self.params['generate']:\n            prompt_type = self.params['generate']['prompt_type']\n            prompt = import_class(f'bisheng_langchain.rag.prompts.{prompt_type}')\n        else:\n            prompt = None\n        qa_chain = load_qa_chain(\n            llm=self.llm, chain_type=self.params['generate']['chain_type'], prompt=prompt, verbose=False\n        )\n        file2docs = dict()\n        for questions_info in tqdm(all_questions_info):\n            question = questions_info['问题']\n            file_name = questions_info['文件名']\n            collection_name = questions_info['知识库名']\n\n            if self.params['generate']['with_retrieval']:\n                # retrieval and rerank\n                docs = self.retrieval_and_rerank(question, collection_name)\n            else:\n                # load document\n                if file_name not in file2docs:\n                    docs = self.load_documents(file_name)\n                    file2docs[file_name] = docs\n                else:\n                    docs = file2docs[file_name]\n\n            # question answer\n            try:\n                ans = qa_chain({\"input_documents\": docs, \"question\": question}, return_only_outputs=False)\n            except Exception as e:\n                logger.error(f'question: {question}\\nerror: {e}')\n                ans = {'output_text': str(e)}\n\n            # context = '\\n\\n'.join([doc.page_content for doc in docs])\n            # content = prompt.format(context=context, question=question)\n\n            # # for rate_limit\n            # time.sleep(15)\n\n            rag_answer = ans['output_text']\n            logger.info(f'question: {question}\\nans: {rag_answer}\\n')\n            questions_info['rag_answer'] = rag_answer\n            # questions_info['rag_context'] = '\\n----------------\\n'.join([doc.page_content for doc in docs])\n            # questions_info['rag_context'] = content\n\n        df = pd.DataFrame(all_questions_info)\n        df.to_excel(self.save_answer_path, index=False)\n\n    def score(self):\n        \"\"\"\n        score\n        \"\"\"\n        metric_params = self.params['metric']\n        if metric_params['type'] == 'bisheng-ragas':\n            score_params = {\n                'excel_path': self.save_answer_path,\n                'save_path': os.path.dirname(self.save_answer_path),\n                'question_column': metric_params['question_column'],\n                'gt_column': metric_params['gt_column'],\n                'answer_column': metric_params['answer_column'],\n                'query_type_column': metric_params.get('query_type_column', None),\n                'contexts_column': metric_params.get('contexts_column', None),\n                'metrics': metric_params['metrics'],\n                'batch_size': metric_params['batch_size'],\n                'gt_split_column': metric_params.get('gt_split_column', None),\n                'whether_gtsplit': metric_params.get('whether_gtsplit', False), # 是否需要模型对gt进行要点拆分\n            }\n            rag_score = RagScore(**score_params)\n            rag_score.score()\n        else:\n            # todo: 其他评分方法\n            pass\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser(description='Process some integers.')\n    # 添加参数\n    parser.add_argument('--mode', type=str, default='qa', help='upload or qa or score')\n    parser.add_argument('--params', type=str, default='config/test/baseline_s2b.yaml', help='bisheng rag params')\n    # 解析参数\n    args = parser.parse_args()\n\n    rag = BishengRagPipeline(args.params)\n\n    if args.mode == 'upload':\n        rag.file2knowledge()\n    elif args.mode == 'qa':\n        rag.question_answering()\n    elif args.mode == 'score':\n        rag.score()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/bisheng_rag_pipeline_v2.py",
    "content": "import argparse\nimport copy\nimport time\nimport inspect\nimport os\nimport httpx\nimport pandas as pd\nimport yaml\nimport math\nfrom collections import defaultdict\nfrom loguru import logger\nfrom tqdm import tqdm\nfrom langchain.docstore.document import Document\nfrom langchain.chains.question_answering import load_qa_chain\nfrom langchain.chains.llm import LLMChain\nfrom bisheng_langchain.retrievers import EnsembleRetriever\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\nfrom bisheng_langchain.rag.init_retrievers import (\n    BaselineVectorRetriever,\n    KeywordRetriever,\n    MixRetriever,\n    SmallerChunksVectorRetriever,\n)\nfrom bisheng_langchain.rag.scoring.ragas_score import RagScore\nfrom bisheng_langchain.rag.extract_info import extract_title\nfrom bisheng_langchain.rag.utils import import_by_type, import_class\n\n\nclass BishengRagPipeline:\n\n    def __init__(self, yaml_path) -> None:\n        self.yaml_path = yaml_path\n        with open(self.yaml_path, 'r') as f:\n            self.params = yaml.safe_load(f)\n\n        # init data\n        self.origin_file_path = self.params['data']['origin_file_path']\n        self.question_path = self.params['data']['question']\n        self.save_answer_path = self.params['data']['save_answer']\n\n        # init embeddings\n        embedding_params = self.params['embedding']\n        embedding_object = import_by_type(_type='embeddings', name=embedding_params['type'])\n        if embedding_params['type'] == 'OpenAIEmbeddings' and embedding_params['openai_proxy']:\n            embedding_params.pop('type')\n            self.embeddings = embedding_object(\n                http_client=httpx.Client(proxies=embedding_params['openai_proxy']),\n                http_async_client=httpx.AsyncClient(proxies=embedding_params['openai_proxy']),\n                **embedding_params\n            )\n        else:\n            embedding_params.pop('type')\n            self.embeddings = embedding_object(**embedding_params)\n\n        # init llm\n        llm_params = self.params['chat_llm']\n        llm_object = import_by_type(_type='llms', name=llm_params['type'])\n        if llm_params['type'] == 'ChatOpenAI' and llm_params['openai_proxy']:\n            llm_params.pop('type')\n            self.llm = llm_object(\n                http_client=httpx.Client(proxies=llm_params['openai_proxy']),\n                http_async_client=httpx.AsyncClient(proxies=llm_params['openai_proxy']),\n                **llm_params\n            )\n        else:\n            llm_params.pop('type')\n            self.llm = llm_object(**llm_params)\n\n        # milvus\n        self.vector_store = Milvus(\n            embedding_function=self.embeddings,\n            connection_args={\n                \"host\": self.params['milvus']['host'],\n                \"port\": self.params['milvus']['port'],\n            },\n        )\n\n        # es\n        if self.params['elasticsearch'].get('extract_key_by_llm', False):\n            extract_key_prompt = import_class(f'bisheng_langchain.rag.prompts.EXTRACT_KEY_PROMPT')\n            llm_chain = LLMChain(llm=self.llm, prompt=extract_key_prompt)\n        else:\n            llm_chain = None\n        self.keyword_store = ElasticKeywordsSearch(\n            index_name='default_es',\n            elasticsearch_url=self.params['elasticsearch']['url'],\n            ssl_verify=self.params['elasticsearch']['ssl_verify'],\n            llm_chain=llm_chain\n        )\n\n        # init retriever\n        retriever_list = []\n        retrievers = self.params['retriever']['retrievers']\n        for retriever in retrievers:\n            retriever_type = retriever.pop('type')\n            retriever_params = {\n                'vector_store': self.vector_store,\n                'keyword_store': self.keyword_store,\n                'splitter_kwargs': retriever['splitter'],\n                'retrieval_kwargs': retriever['retrieval'],\n            }\n            retriever_list.append(self._post_init_retriever(retriever_type=retriever_type, **retriever_params))\n        self.retriever = EnsembleRetriever(retrievers=retriever_list)\n\n    def _post_init_retriever(self, retriever_type, **kwargs):\n        retriever_classes = {\n            'KeywordRetriever': KeywordRetriever,\n            'BaselineVectorRetriever': BaselineVectorRetriever,\n            'MixRetriever': MixRetriever,\n            'SmallerChunksVectorRetriever': SmallerChunksVectorRetriever,\n        }\n        if retriever_type not in retriever_classes:\n            raise ValueError(f'Unknown retriever type: {retriever_type}')\n\n        input_kwargs = {}\n        splitter_params = kwargs.pop('splitter_kwargs')\n        for key, value in splitter_params.items():\n            splitter_obj = import_by_type(_type='textsplitters', name=value.pop('type'))\n            input_kwargs[key] = splitter_obj(**value)\n\n        retrieval_params = kwargs.pop('retrieval_kwargs')\n        for key, value in retrieval_params.items():\n            input_kwargs[key] = value\n\n        input_kwargs['vector_store'] = kwargs.pop('vector_store')\n        input_kwargs['keyword_store'] = kwargs.pop('keyword_store')\n\n        retriever_class = retriever_classes[retriever_type]\n        return retriever_class(**input_kwargs)\n\n    def file2knowledge(self):\n        \"\"\"\n        file to knowledge\n        \"\"\"\n        df = pd.read_excel(self.question_path)\n        if ('文件名' not in df.columns) or ('知识库名' not in df.columns):\n            raise Exception(f'文件名 or 知识库名 not in {self.question_path}.')\n\n        loader_params = self.params['loader']\n        loader_object = import_by_type(_type='documentloaders', name=loader_params.pop('type'))\n\n        all_questions_info = df.to_dict('records')\n        collectionname2filename = defaultdict(set)\n        for info in all_questions_info:\n            # 存入set，去掉重复的文件名\n            collectionname2filename[info['知识库名']].add(info['文件名'])\n\n        for collection_name in tqdm(collectionname2filename):\n            all_file_paths = []\n            for file_name in collectionname2filename[collection_name]:\n                file_path = os.path.join(self.origin_file_path, file_name)\n                if not os.path.exists(file_path):\n                    raise Exception(f'{file_path} not exists.')\n                # file path可以是文件夹或者单个文件\n                if os.path.isdir(file_path):\n                    # 文件夹包含多个文件\n                    all_file_paths.extend(\n                        [os.path.join(file_path, name) for name in os.listdir(file_path) if not name.startswith('.')]\n                    )\n                else:\n                    # 单个文件\n                    all_file_paths.append(file_path)\n\n            # 当前知识库需要存储的所有文件\n            collection_name = f\"{collection_name}_{self.params['retriever']['suffix']}\"\n            for index, each_file_path in enumerate(all_file_paths):\n                logger.info(f'each_file_path: {each_file_path}')\n                loader = loader_object(\n                    file_name=os.path.basename(each_file_path), file_path=each_file_path, **loader_params\n                )\n                documents = loader.load()\n\n                # # load from text\n                # if each_file_path.endswith('.pdf'):\n                #     with open(each_file_path.replace('.pdf', '.txt'), 'r') as f:\n                #         content = f.read()\n                #     documents = [Document(page_content=content, metadata={'source': os.path.basename(each_file_path)})]\n                \n                logger.info(f'documents: {len(documents)}, page_content: {len(documents[0].page_content)}')\n                if len(documents[0].page_content) == 0:\n                    logger.error(f'{each_file_path} page_content is empty.')\n\n                # add aux info\n                add_aux_info = self.params['retriever'].get('add_aux_info', False)\n                if add_aux_info:\n                    for doc in documents:\n                        try:\n                            title = extract_title(llm=self.llm, text=doc.page_content)\n                            logger.info(f'extract title: {title}')\n                        except Exception as e:\n                            logger.error(f\"Failed to extract title: {e}\")\n                            title = ''\n                        doc.metadata['title'] = title\n\n                vector_drop_old = self.params['milvus']['drop_old'] if index == 0 else False\n                keyword_drop_old = self.params['elasticsearch']['drop_old'] if index == 0 else False\n                for idx, retriever in enumerate(self.retriever.retrievers):\n                    retriever.add_documents(documents, collection_name, vector_drop_old, add_aux_info=add_aux_info)\n\n    def retrieval_and_rerank(self, question, collection_name, max_content=100000):\n        \"\"\"\n        retrieval and rerank\n        \"\"\"\n        collection_name = f\"{collection_name}_{self.params['retriever']['suffix']}\"\n        # EnsembleRetriever直接检索召回会默认去重\n        docs = self.retriever.get_relevant_documents(query=question, collection_name=collection_name)\n        logger.info(f'retrieval docs origin: {len(docs)}')\n\n        # delete duplicate\n        if self.params['post_retrieval']['delete_duplicate']:\n            logger.info(f'origin docs: {len(docs)}')\n            all_contents = []\n            docs_no_dup = []\n            for index, doc in enumerate(docs):\n                doc_content = doc.page_content\n                if doc_content in all_contents:\n                    continue\n                all_contents.append(doc_content)\n                docs_no_dup.append(doc)\n            docs = docs_no_dup\n            logger.info(f'delete duplicate docs: {len(docs)}')\n\n        # rerank\n        if self.params['post_retrieval']['with_rank'] and len(docs):\n            if not hasattr(self, 'ranker'):\n                rerank_params = self.params['post_retrieval']['rerank']\n                rerank_type = rerank_params.pop('type')\n                rerank_object = import_class(f'bisheng_langchain.rag.rerank.{rerank_type}')\n                self.ranker = rerank_object(**rerank_params)\n            docs = getattr(self, 'ranker').sort_and_filter(question, docs)\n\n        # delete redundancy according to max_content \n        doc_num, doc_content_sum = 0, 0\n        for doc in docs:\n            doc_content_sum += len(doc.page_content)\n            if doc_content_sum > max_content:\n                break\n            doc_num += 1\n        docs = docs[:doc_num]\n        logger.info(f'retrieval docs after delete redundancy: {len(docs)}')\n\n        # 按照文档的source和chunk_index排序，保证上下文的连贯性和一致性\n        if self.params['post_retrieval'].get('sort_by_source_and_index', False):\n            logger.info('sort chunks by source and chunk_index')\n            docs = sorted(docs, key=lambda x: (x.metadata['source'], x.metadata['chunk_index']))\n        return docs\n\n    def load_documents(self, file_name, max_content=100000):\n        \"\"\"\n        直接加载文档，如果文档过长，直接截断处理；\n        max_content: max content len of llm\n        \"\"\"\n        file_path = os.path.join(self.origin_file_path, file_name)\n        if not os.path.exists(file_path):\n            raise Exception(f'{file_path} not exists.')\n        if os.path.isdir(file_path):\n            raise Exception(f'{file_path} is a directory.')\n\n        loader_params = copy.deepcopy(self.params['loader'])\n        loader_object = import_by_type(_type='documentloaders', name=loader_params.pop('type'))\n        loader = loader_object(file_name=file_name, file_path=file_path, **loader_params)\n\n        documents = loader.load()\n        logger.info(f'documents: {len(documents)}, page_content: {len(documents[0].page_content)}')\n        for doc in documents:\n            doc.page_content = doc.page_content[:max_content]\n        return documents\n\n    def question_answering(self):\n        \"\"\"\n        question answer over knowledge\n        \"\"\"\n        df = pd.read_excel(self.question_path)\n        all_questions_info = df.to_dict('records')\n        if 'prompt_type' in self.params['generate']:\n            prompt_type = self.params['generate']['prompt_type']\n            prompt = import_class(f'bisheng_langchain.rag.prompts.{prompt_type}')\n        else:\n            prompt = None\n        qa_chain = load_qa_chain(\n            llm=self.llm, chain_type=self.params['generate']['chain_type'], prompt=prompt, verbose=False\n        )\n        file2docs = dict()\n        for questions_info in tqdm(all_questions_info):\n            question = questions_info['问题']\n            file_name = questions_info['文件名']\n            collection_name = questions_info['知识库名']\n\n            # if question != '请分析江苏中设集团股份有限公司2021年重大关联交易的情况。':\n            #     continue\n\n            if self.params['generate']['with_retrieval']:\n                # retrieval and rerank\n                docs = self.retrieval_and_rerank(question, collection_name, max_content=self.params['generate']['max_content'])\n            else:\n                # load document\n                if file_name not in file2docs:\n                    docs = self.load_documents(file_name, max_content=self.params['generate']['max_content'])\n                    file2docs[file_name] = docs\n                else:\n                    docs = file2docs[file_name]\n\n            # question answer\n            try:\n                ans = qa_chain({\"input_documents\": docs, \"question\": question}, return_only_outputs=True)\n            except Exception as e:\n                logger.error(f'question: {question}\\nerror: {e}')\n                ans = {'output_text': str(e)}\n            rag_answer = ans['output_text']\n            \n            # context = '\\n\\n'.join([doc.page_content for doc in docs])\n            # content = prompt.format(context=context, question=question)\n\n            # for rate_limit\n            # time.sleep(30)\n            logger.info(f'question: {question}\\nans: {rag_answer}\\n')\n            questions_info['rag_answer'] = rag_answer\n            # questions_info['rag_context'] = '\\n----------------\\n'.join([doc.page_content for doc in docs])\n            # questions_info['rag_context'] = content\n\n        df = pd.DataFrame(all_questions_info)\n        df.to_excel(self.save_answer_path, index=False)\n\n    def score(self):\n        \"\"\"\n        score\n        \"\"\"\n        metric_params = self.params['metric']\n        if metric_params['type'] == 'bisheng-ragas':\n            score_params = {\n                'excel_path': self.save_answer_path,\n                'save_path': os.path.dirname(self.save_answer_path),\n                'question_column': metric_params['question_column'],\n                'gt_column': metric_params['gt_column'],\n                'answer_column': metric_params['answer_column'],\n                'query_type_column': metric_params.get('query_type_column', None),\n                'contexts_column': metric_params.get('contexts_column', None),\n                'metrics': metric_params['metrics'],\n                'batch_size': metric_params['batch_size'],\n                'gt_split_column': metric_params.get('gt_split_column', None),\n                'whether_gtsplit': metric_params.get('whether_gtsplit', False), # 是否需要模型对gt进行要点拆分\n            }\n            rag_score = RagScore(**score_params)\n            rag_score.score()\n        else:\n            # todo: 其他评分方法\n            pass\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser(description='Process some integers.')\n    # 添加参数\n    parser.add_argument('--mode', type=str, default='qa', help='upload or qa or score')\n    parser.add_argument('--params', type=str, default='config/test/baseline_s2b.yaml', help='bisheng rag params')\n    # 解析参数\n    args = parser.parse_args()\n\n    rag = BishengRagPipeline(args.params)\n\n    if args.mode == 'upload':\n        rag.file2knowledge()\n    elif args.mode == 'qa':\n        rag.question_answering()\n    elif args.mode == 'score':\n        rag.score()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/bisheng_rag_tool.py",
    "content": "import os\nfrom typing import Any, Dict, Optional, Tuple, Union\n\nimport httpx\nimport yaml\nfrom langchain.chains.combine_documents import create_stuff_documents_chain\nfrom langchain.chains.llm import LLMChain\nfrom langchain_core.callbacks import CallbackManagerForChainRun\nfrom langchain_core.language_models.base import LanguageModelLike\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_core.runnables import RunnableConfig\nfrom langchain_core.tools import BaseTool, Tool\nfrom langchain_core.vectorstores import VectorStoreRetriever\nfrom loguru import logger\nfrom pydantic import BaseModel, Field\n\nfrom bisheng_langchain.rag.extract_info import extract_title\nfrom bisheng_langchain.rag.init_retrievers import (BaselineVectorRetriever, KeywordRetriever,\n                                                   MixRetriever, SmallerChunksVectorRetriever)\nfrom bisheng_langchain.rag.utils import import_by_type, import_class\nfrom bisheng_langchain.retrievers import EnsembleRetriever\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch, Milvus\n\n\nclass MultArgsSchemaTool(Tool):\n\n    def _to_args_and_kwargs(self, tool_input: Union[str, Dict], tool_call_id: Optional[str]) -> Tuple[Tuple, Dict]:\n        # For backwards compatibility, if run_input is a string,\n        # pass as a positional argument.\n        if isinstance(tool_input, str):\n            return (tool_input,), {}\n        else:\n            return (), tool_input\n\n\nclass BishengRAGTool:\n\n    def __init__(self,\n                 vector_store: Optional[Milvus] = None,\n                 keyword_store: Optional[ElasticKeywordsSearch] = None,\n                 llm: Optional[LanguageModelLike] = None,\n                 collection_name: Optional[str] = None,\n                 QA_PROMPT: Optional[ChatPromptTemplate] = None,\n                 **kwargs) -> None:\n        if collection_name is None and (keyword_store is None or vector_store is None):\n            raise ValueError(\n                'collection_name must be provided if keyword_store or vector_store is not provided'\n            )\n        self.collection_name = collection_name\n\n        yaml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),\n                                 'config/baseline_v2.yaml')\n        with open(yaml_path, 'r', encoding='utf-8') as f:\n            self.params = yaml.safe_load(f)\n\n        # update params\n        max_content = kwargs.get('max_content', 15000)\n        sort_by_source_and_index = kwargs.get('sort_by_source_and_index', True)\n        self.params['generate']['max_content'] = max_content\n        self.params['post_retrieval']['sort_by_source_and_index'] = sort_by_source_and_index\n\n        # init llm\n        if llm:\n            self.llm = llm\n        else:\n            llm_params = self.params['chat_llm']\n            llm_object = import_by_type(_type='llms', name=llm_params['type'])\n            if llm_params['type'] == 'ChatOpenAI' and llm_params['openai_proxy']:\n                llm_params.pop('type')\n                self.llm = llm_object(http_client=httpx.Client(proxies=llm_params['openai_proxy']),\n                                      **llm_params)\n            else:\n                llm_params.pop('type')\n                self.llm = llm_object(**llm_params)\n\n        # init milvus\n        if vector_store:\n            # if vector_store is retriever, get vector_store instance\n            if isinstance(vector_store, VectorStoreRetriever):\n                self.vector_store = vector_store.vectorstore\n            else:\n                self.vector_store = vector_store\n        else:\n            # init embeddings\n            embedding_params = self.params['embedding']\n            embedding_object = import_by_type(_type='embeddings', name=embedding_params['type'])\n            if embedding_params['type'] == 'OpenAIEmbeddings' and embedding_params['openai_proxy']:\n                embedding_params.pop('type')\n                self.embeddings = embedding_object(\n                    http_client=httpx.Client(proxies=embedding_params['openai_proxy']),\n                    **embedding_params)\n            else:\n                embedding_params.pop('type')\n                self.embeddings = embedding_object(**embedding_params)\n\n            self.vector_store = Milvus(\n                embedding_function=self.embeddings,\n                connection_args={\n                    'host': self.params['milvus']['host'],\n                    'port': self.params['milvus']['port'],\n                },\n            )\n\n        # init keyword store\n        if keyword_store:\n            self.keyword_store = keyword_store\n        else:\n            if self.params['elasticsearch'].get('extract_key_by_llm', False):\n                extract_key_prompt = import_class(\n                    'bisheng_langchain.rag.prompts.EXTRACT_KEY_PROMPT')\n                llm_chain = LLMChain(llm=self.llm, prompt=extract_key_prompt)\n            else:\n                llm_chain = None\n            self.keyword_store = ElasticKeywordsSearch(\n                index_name='default_es',\n                elasticsearch_url=self.params['elasticsearch']['url'],\n                ssl_verify=self.params['elasticsearch']['ssl_verify'],\n                llm_chain=llm_chain,\n            )\n\n        # init retriever\n        retriever_list = []\n        retrievers = self.params['retriever']['retrievers']\n        for retriever in retrievers:\n            retriever_type = retriever.pop('type')\n            retriever_params = {\n                'vector_store': self.vector_store,\n                'keyword_store': self.keyword_store,\n                'splitter_kwargs': retriever['splitter'],\n                'retrieval_kwargs': retriever['retrieval'],\n            }\n            retriever_list.append(\n                self._post_init_retriever(retriever_type=retriever_type, **retriever_params))\n        self.retriever = EnsembleRetriever(retrievers=retriever_list)\n\n        # init qa chain\n        if QA_PROMPT:\n            prompt = QA_PROMPT\n        else:\n            if 'prompt_type' in self.params['generate']:\n                prompt_type = self.params['generate']['prompt_type']\n                prompt = import_class(f'bisheng_langchain.rag.prompts.{prompt_type}')\n            else:\n                prompt = None\n        self.prompt_inputs = prompt.input_variables\n        self.qa_chain = create_stuff_documents_chain(llm=self.llm, prompt=prompt)\n\n    def _post_init_retriever(self, retriever_type, **kwargs):\n        retriever_classes = {\n            'KeywordRetriever': KeywordRetriever,\n            'BaselineVectorRetriever': BaselineVectorRetriever,\n            'MixRetriever': MixRetriever,\n            'SmallerChunksVectorRetriever': SmallerChunksVectorRetriever,\n        }\n        if retriever_type not in retriever_classes:\n            raise ValueError(f'Unknown retriever type: {retriever_type}')\n\n        input_kwargs = {}\n        splitter_params = kwargs.pop('splitter_kwargs')\n        for key, value in splitter_params.items():\n            splitter_obj = import_by_type(_type='textsplitters', name=value.pop('type'))\n            input_kwargs[key] = splitter_obj(**value)\n\n        retrieval_params = kwargs.pop('retrieval_kwargs')\n        for key, value in retrieval_params.items():\n            input_kwargs[key] = value\n\n        input_kwargs['vector_store'] = kwargs.pop('vector_store')\n        input_kwargs['keyword_store'] = kwargs.pop('keyword_store')\n\n        retriever_class = retriever_classes[retriever_type]\n        return retriever_class(**input_kwargs)\n\n    def file2knowledge(self, file_path, drop_old=True):\n        \"\"\"\n        file to knowledge\n        \"\"\"\n        loader_params = self.params['loader']\n        loader_object = import_by_type(_type='documentloaders', name=loader_params.pop('type'))\n\n        logger.info(f'file_path: {file_path}')\n        loader = loader_object(file_name=os.path.basename(file_path),\n                               file_path=file_path,\n                               **loader_params)\n        documents = loader.load()\n        logger.info(f'documents: {len(documents)}, page_content: {len(documents[0].page_content)}')\n        if len(documents[0].page_content) == 0:\n            logger.error(f'{file_path} page_content is empty.')\n\n        # add aux info\n        add_aux_info = self.params['retriever'].get('add_aux_info', False)\n        if add_aux_info:\n            for doc in documents:\n                try:\n                    title = extract_title(llm=self.llm, text=doc.page_content)\n                    logger.info(f'extract title: {title}')\n                except Exception as e:\n                    logger.error(f'Failed to extract title: {e}')\n                    title = ''\n                doc.metadata['title'] = title\n\n        for idx, retriever in enumerate(self.retriever.retrievers):\n            retriever.add_documents(documents,\n                                    self.collection_name,\n                                    drop_old=drop_old,\n                                    add_aux_info=add_aux_info)\n\n    def retrieval_and_rerank(self, query):\n        \"\"\"\n        retrieval and rerank\n        \"\"\"\n        # EnsembleRetriever直接检索召回会默认去重\n        docs = self.retriever.get_relevant_documents(query=query,\n                                                     collection_name=self.collection_name)\n        logger.info(f'retrieval docs origin: {len(docs)}')\n\n        # delete redundancy according to max_content\n        doc_num, doc_content_sum = 0, 0\n        for doc in docs:\n            doc_content_sum += len(doc.page_content)\n            if doc_content_sum > self.params['generate']['max_content']:\n                break\n            doc_num += 1\n        docs = docs[:doc_num]\n        logger.info(f'retrieval docs after delete redundancy: {len(docs)}')\n\n        # 按照文档的source和chunk_index排序，保证上下文的连贯性和一致性\n        if self.params['post_retrieval'].get('sort_by_source_and_index', False):\n            logger.info('sort chunks by source and chunk_index')\n            docs = sorted(docs,\n                          key=lambda x: (x.get('source', \"\") or x.get(\"document_name\", \"\"), x.metadata['chunk_index']))\n        return docs\n\n    def run(self,\n            query,\n            return_only_outputs=True,\n            run_manager: Optional[CallbackManagerForChainRun] = None) -> Any:\n        docs = self.retrieval_and_rerank(query)\n        try:\n            kwargs = {}\n            if run_manager:\n                kwargs['config'] = RunnableConfig(callbacks=[run_manager])\n            tmp_input = {\n                'context': docs,\n            }\n            if 'question' in self.prompt_inputs:\n                tmp_input['question'] = query\n            ans = self.qa_chain.invoke(tmp_input, **kwargs)\n        except Exception as e:\n            logger.exception(f'question: {query}\\nerror: {e}')\n            ans = str(e)\n        if return_only_outputs:\n            return ans\n        else:\n            return ans, docs\n\n    async def arun(self, query: str, return_only_outputs=True) -> str:\n        rag_answer = self.run(query, return_only_outputs)\n        return rag_answer\n\n    @classmethod\n    def get_rag_tool(cls, name, description, **kwargs: Any) -> BaseTool:\n\n        class InputArgs(BaseModel):\n            query: str = Field(description='question asked by the user.')\n\n        return MultArgsSchemaTool(name=name,\n                                  description=description,\n                                  func=cls(**kwargs).run,\n                                  coroutine=cls(**kwargs).arun,\n                                  args_schema=InputArgs)\n\n\nif __name__ == '__main__':\n    # rag_tool = BishengRAGTool(collection_name='rag_finance_report_0_test')\n    # rag_tool.file2knowledge(file_path='/home/public/rag_benchmark_finance_report/金融年报财报的来源文件/2021-04-23__金宇生物技术股份有限公司__600201__生物股份__2020年__年度报告.pdf')\n\n    from langchain.chat_models import ChatOpenAI\n    from langchain.embeddings import OpenAIEmbeddings\n\n    # embedding\n    embeddings = OpenAIEmbeddings(model='text-embedding-ada-002')\n    # llm\n    llm = ChatOpenAI(model='gpt-4-1106-preview', temperature=0.01)\n    collection_name = 'rag_finance_report_0_benchmark_caibao_1000_source_title'\n    # milvus\n    vector_store = Milvus(\n        collection_name=collection_name,\n        embedding_function=embeddings,\n        connection_args={\n            'host': '110.16.193.170',\n            'port': '50062',\n        },\n    )\n    # es\n    keyword_store = ElasticKeywordsSearch(\n        index_name=collection_name,\n        elasticsearch_url='http://110.16.193.170:50062/es',\n        ssl_verify={'basic_auth': ['elastic', 'oSGL-zVvZ5P3Tm7qkDLC']},\n    )\n\n    tool = BishengRAGTool.get_rag_tool(name='rag_knowledge_retrieve',\n                                       description='金融年报财报知识库问答',\n                                       vector_store=vector_store,\n                                       keyword_store=keyword_store,\n                                       llm=llm,\n                                       max_content=15000)\n    print(tool.run('能否根据2020年金宇生物技术股份有限公司的年报，给我简要介绍一下报告期内公司的社会责任工作情况？',\n                   return_only_outputs=False))\n\n    # tool = BishengRAGTool.get_rag_tool(\n    #     name='rag_knowledge_retrieve',\n    #     description='金融年报财报知识库问答',\n    #     collection_name='rag_finance_report_0_benchmark_caibao_1000_source_title'\n    # )\n    # print(tool.run('能否根据2020年金宇生物技术股份有限公司的年报，给我简要介绍一下报告期内公司的社会责任工作情况？'))\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n  question: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample.xlsx'\n  save_answer: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample_gpt4_12chunk_test.xlsx'\n\nmilvus:\n  host: '192.168.106.116'\n  port: '19530'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://192.168.106.116:9200'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: 'http://118.195.232.223:39995'\n\nchat_llm:\n  type: 'ChatOpenAI'\n  model: 'gpt-4-1106-preview'\n  openai_api_key: ''\n  openai_proxy: 'http://118.195.232.223:39995'\n  temperature: 0.0\n\n# chat_llm:\n#   type: 'ChatQWen'\n#   model_name: 'qwen1.5-72b-chat'\n#   api_key: ''\n#   temperature: 0.01\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'http://192.168.106.12:10001/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'test_mix'\n  retrievers: \n    - type: 'MixRetriever'\n      splitter:\n        vector_text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 50\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n        keyword_text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 50\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n      retrieval:\n        combine_strategy: 'mix'\n        search_type: 'similarity'\n        vector_search_kwargs: \n          k: 6\n        keyword_search_kwargs: \n          k: 6\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n\ngenerate:\n  with_retrieval: True\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  metrics: ['answer_correctness_bisheng']\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_caibao.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n  question: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample.xlsx'\n  save_answer: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/finance_report_data_100_single_gpt3.5_20chunk.xlsx'\n\nmilvus:\n  host: '110.16.193.170'\n  port: '50062'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://110.16.193.170:50062/es'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: ''\n\nchat_llm:\n  type: 'ChatOpenAI'\n  model: 'gpt-4-1106-preview'\n  openai_api_key: ''\n  openai_proxy: ''\n  temperature: 0.0\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'http://bisheng.dataelem.com/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'test_mix'\n  retrievers: \n    - type: 'MixRetriever'\n      splitter:\n        vector_text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 50\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n        keyword_text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 50\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n      retrieval:\n        combine_strategy: 'mix'\n        search_type: 'similarity'\n        vector_search_kwargs: \n          k: 6\n        keyword_search_kwargs: \n          k: 6\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n\ngenerate:\n  with_retrieval: True\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  # metrics: ['answer_correctness_bisheng']\n  metrics: ['answer_recall_bisheng']\n  gt_split_column: 'gt_split_point'\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_caibao_knowledge_v2.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_finance_report'\n  question: '/home/public/rag_benchmark_finance_report/finance_report_data_100.xlsx'\n  save_answer: '/home/public/rag_benchmark_finance_report/finance_report_data_100_knowledge_command-r-plus_20chunk_chunk_size_1000.xlsx'\n\nmilvus:\n  host: '110.16.193.170'\n  port: '50062'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://110.16.193.170:50062/es'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: ''\n\n# chat_llm:\n#   type: 'ChatOpenAI'\n#   model: 'gpt-4-1106-preview'\n#   openai_api_key: ''\n#   openai_proxy: ''\n#   temperature: 0.0\n\nchat_llm:\n  type: 'ChatCohere'\n  model: 'command-r-plus'\n  cohere_api_key: ''\n  max_tokens: 1000\n  temperature: 0.01\n\n# chat_llm:\n#   type: 'ChatOpenAI'\n#   model: 'moonshot-v1-128k'\n#   openai_api_base: 'https://api.moonshot.cn/v1'\n#   openai_api_key : \"Y21pamZpdWNwN2Zic3ZtdGJpdGc6bXNrLWZLNHp4VDMxMklsVU56MUxmOVNwY0RMeFMyaUg=\"\n#   openai_proxy: ''\n#   temperature: 0.01\n\n# chat_llm:\n#   type: 'ChatQWen'\n#   model_name: 'qwen1.5-72b-chat'\n#   api_key: ''\n#   temperature: 0.01\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'https://bisheng.dataelem.com/api/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'benchmark_caibao_1000_knowledge_source_title'\n  retrievers: \n    - type: 'KeywordRetriever'\n      splitter:\n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 0\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10\n    - type: 'BaselineVectorRetriever'\n      splitter: \n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 0\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n  sort_by_source_and_index: False\n\ngenerate:\n  with_retrieval: True\n  max_content: 100000\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  # metrics: ['answer_correctness_bisheng']\n  metrics: ['answer_recall_bisheng']\n  gt_split_column: 'gt_split_point'\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_caibao_v2.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_finance_report'\n  question: '/home/public/rag_benchmark_finance_report/finance_report_data_100_single.xlsx'\n  save_answer: '/home/public/rag_benchmark_finance_report/finance_report_data_100_single_command-r-plus_20chunk_chunk_size_1000_with_source_title_overlap100.xlsx'\n\nmilvus:\n  host: '110.16.193.170'\n  port: '50062'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://110.16.193.170:50062/es'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n  extract_key_by_llm: False\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: ''\n\n# chat_llm:\n#   type: 'ChatOpenAI'\n#   model: 'gpt-4-1106-preview'\n#   openai_api_key: ''\n#   openai_proxy: ''\n#   temperature: 0.0\n\nchat_llm:\n  type: 'ChatCohere'\n  model: 'command-r-plus'\n  cohere_api_key: ''\n  max_tokens: 1000\n  temperature: 0.01\n\n# chat_llm:\n#   type: 'ChatQWen'\n#   model_name: 'qwen1.5-110b-chat'\n#   api_key: ''\n#   temperature: 0.01\n\n# chat_llm:\n#   type: 'ChatOpenAI'\n#   model: 'qwen1.5-110b-chat'\n#   openai_api_base: 'http://60.31.21.42:12511/v1'\n#   openai_api_key : \"Z9b8x3V7C2n0Q5T\"\n#   openai_proxy: ''\n#   temperature: 0.01\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'https://bisheng.dataelem.com/api/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'benchmark_caibao_1000_source_title_overlap100'\n  add_aux_info: True\n  retrievers: \n    - type: 'KeywordRetriever'\n      splitter:\n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 100\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10\n    - type: 'BaselineVectorRetriever'\n      splitter: \n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 100\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n  sort_by_source_and_index: False\n\ngenerate:\n  with_retrieval: True\n  max_content: 100000\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  # metrics: ['answer_correctness_bisheng']\n  metrics: ['answer_recall_bisheng']\n  gt_split_column: 'gt_split_point'\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_demo_v2.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n  question: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample.xlsx'\n  save_answer: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample_gpt4_10w.xlsx'\n\nmilvus:\n  host: '192.168.106.116'\n  port: '19530'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://192.168.106.116:9200'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: 'http://192.168.106.20:1081'\n\nchat_llm:\n  type: 'ChatOpenAI'\n  model: 'gpt-4-1106-preview'\n  openai_api_key: ''\n  openai_proxy: 'http://192.168.106.20:1081'\n  temperature: 0.0\n\n# chat_llm:\n#   type: 'ChatQWen'\n#   model_name: 'qwen1.5-72b-chat'\n#   api_key: ''\n#   temperature: 0.01\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'http://192.168.106.12:10001/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'benchmark_demo_test'\n  retrievers: \n    - type: 'KeywordRetriever'\n      splitter:\n        text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 0\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10000\n    - type: 'BaselineVectorRetriever'\n      splitter: \n        text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 500\n          chunk_overlap: 0\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 10000\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n  sort_by_source_and_index: True\n\ngenerate:\n  with_retrieval: True\n  max_content: 100000\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  metrics: ['answer_correctness_bisheng']\n  # metrics: ['answer_recall_bisheng']\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_s2b_mix.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n  question: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample.xlsx'\n  save_answer: '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/questions_info_with_answer_sample_gpt4_12chunk_s2b.xlsx'\n\nmilvus:\n  host: '192.168.106.116'\n  port: '19530'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://192.168.106.116:9200'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: 'http://118.195.232.223:39995'\n\nchat_llm:\n  type: 'ChatOpenAI'\n  model: 'gpt-4-1106-preview'\n  openai_api_key: ''\n  openai_proxy: 'http://118.195.232.223:39995'\n  temperature: 0.0\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'http://192.168.106.12:10001/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'test_s2b_mix'\n  retrievers: \n    - type: 'SmallerChunksVectorRetriever'\n      splitter:\n        parent_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 1024\n          chunk_overlap: 200\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n        child_splitter:\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 216\n          chunk_overlap: 0\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n      retrieval:\n        search_type: 'similarity'\n        child_search_kwargs: \n          k: 12\n    - type: 'KeywordRetriever'\n      splitter:\n        text_splitter:\n          type: 'ElemCharacterTextSplitter'\n          chunk_size: 1024\n          chunk_overlap: 200\n          separators: [\"\\n\\n\", \"\\n\", \" \", \"\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 6\n          \npost_retrieval:\n  delete_duplicate: True\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n\ngenerate:\n  with_retrieval: True\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  metrics: ['answer_correctness_bisheng']\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/config/baseline_v2.yaml",
    "content": "data:\n  origin_file_path: '/home/public/rag_benchmark_finance_report'\n  question: '/home/public/rag_benchmark_finance_report/finance_report_data_100_single.xlsx'\n  save_answer: '/home/public/rag_benchmark_finance_report/finance_report_data_100_single_qwen1.5_72b_20chunk_chunk_size_1000_with_source_title.xlsx'\n\nmilvus:\n  host: '110.16.193.170'\n  port: '50062'\n  drop_old: True\n\nelasticsearch:\n  url: 'http://110.16.193.170:50062/es'\n  ssl_verify:\n    basic_auth: [\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\"]\n  drop_old: True\n  extract_key_by_llm: False\n\nembedding:\n  type: 'OpenAIEmbeddings'\n  model: 'text-embedding-ada-002'\n  openai_api_key: ''\n  openai_proxy: ''\n\nchat_llm:\n  type: 'ChatOpenAI'\n  model: 'gpt-4-1106-preview'\n  openai_api_key: ''\n  openai_proxy: ''\n  temperature: 0.0\n\nloader: \n  type: 'ElemUnstructuredLoader'\n  unstructured_api_url: 'https://bisheng.dataelem.com/api/v1/etl4llm/predict'\n\nretriever: \n  type: 'EnsembleRetriever' # 不动\n  suffix: 'benchmark_caibao_1000_source_title'\n  add_aux_info: True\n  retrievers: \n    - type: 'KeywordRetriever'\n      splitter:\n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 100\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 100\n    - type: 'BaselineVectorRetriever'\n      splitter: \n        text_splitter:\n          # type: 'ElemCharacterTextSplitter'\n          type: 'RecursiveCharacterTextSplitter'\n          chunk_size: 1000\n          chunk_overlap: 100\n          separators: [\"\\n\\n\"]\n      retrieval:\n        search_type: 'similarity'\n        search_kwargs: \n          k: 100\n          \npost_retrieval:\n  delete_duplicate: False\n  with_rank: False\n  rerank:\n    type: 'CustomReranker'\n    model_path: '/home/public/llm/bge-reranker-large'\n    device_id: 'cuda:0'\n    threshold: 0.0\n  sort_by_source_and_index: True\n\ngenerate:\n  with_retrieval: True\n  max_content: 15000\n  chain_type: 'stuff'\n  # prompt_type: 'BASE_PROMPT'\n  prompt_type: 'CHAT_PROMPT'\n\nmetric:\n  type: 'bisheng-ragas'\n  question_column: '问题'\n  gt_column: 'GT'\n  answer_column: 'rag_answer'\n  query_type_column: '问题类型'\n  # metrics: ['answer_correctness_bisheng']\n  metrics: ['answer_recall_bisheng']\n  gt_split_column: 'gt_split_point'\n  batch_size: 5"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/extract_info.py",
    "content": "from bisheng_langchain.chat_models import ChatQWen\nfrom langchain.chains.llm import LLMChain\nfrom langchain.prompts.chat import (\n    ChatPromptTemplate,\n    SystemMessagePromptTemplate,\n    HumanMessagePromptTemplate,\n)\n\nsystem_template = \"\"\"你是一个可靠标题生成或者提取助手。你会收到一篇文档的主要内容，请根据这些内容生成或者提取这篇文档的标题。\"\"\"\nhuman_template = \"\"\"\n文档内容如下：\n{context}\n\n生成或提取的标题：\n\"\"\"\n\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(human_template),\n]\ntitle_extract_prompt = ChatPromptTemplate.from_messages(messages)\n\n\ndef extract_title(llm, text, max_length=7000, abstract_prompt: str = None) -> str:\n    \"\"\"\n    此方法在bisheng_langchain模型的还有两处调用用，在不能提供abstract_propmpt的情况下\n    使用原来现有提示词.\n    \"\"\"\n    if abstract_prompt:\n        updated_messages = [\n            SystemMessagePromptTemplate.from_template(abstract_prompt),\n            HumanMessagePromptTemplate.from_template(human_template),\n        ]\n        updated_title_extract_prompt = ChatPromptTemplate.from_messages(updated_messages)\n        chain = LLMChain(llm=llm, prompt=updated_title_extract_prompt)\n    else:\n        chain = LLMChain(llm=llm, prompt=title_extract_prompt)\n    ans = chain.run(context=text[:max_length])\n    return ans\n\nasync def async_extract_title(llm, text, max_length=7000, abstract_prompt: str = None) -> str:\n    \"\"\"\n    此方法在bisheng_langchain模型的还有两处调用用，在不能提供abstract_propmpt的情况下\n    使用原来现有提示词.\n    \"\"\"\n    if abstract_prompt:\n        updated_messages = [\n            SystemMessagePromptTemplate.from_template(abstract_prompt),\n            HumanMessagePromptTemplate.from_template(human_template),\n        ]\n        updated_title_extract_prompt = ChatPromptTemplate.from_messages(updated_messages)\n        chain = LLMChain(llm=llm, prompt=updated_title_extract_prompt)\n    else:\n        chain = LLMChain(llm=llm, prompt=title_extract_prompt)\n    ans = await chain.arun(context=text[:max_length])\n    return ans\n\n\nif __name__ == \"__main__\":\n    llm = ChatQWen(model_name=\"qwen1.5-72b-chat\", api_key=\"\", temperature=0.01)\n    text = \"江苏蔚蓝锂芯股份有限公司\\n2021 年年度报告 \\n2022 年 03 月\\n\\n 第一节 重要提示、目录和释义\\n公司董事会、监事会及董事、监事、高级管理人员保证年度报告内容的真实、准确、完整，不存在虚假记载、误导性陈述或重大遗漏，并承担个别和连带的法律责任。\\n公司负责人 CHEN KAI、主管会计工作负责人林文华及会计机构负责人(会计主管人员)张宗红声明：保证本年度报告中财务报告的真实、准确、完整。\\n所有董事均已出席了审议本报告的董事会会议。\"\n    ans = extract_title(llm, text)\n    print(ans)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/init_retrievers/__init__.py",
    "content": "from .baseline_vector_retriever import BaselineVectorRetriever\nfrom .keyword_retriever import KeywordRetriever\nfrom .mix_retriever import MixRetriever\nfrom .smaller_chunks_retriever import SmallerChunksVectorRetriever\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/init_retrievers/baseline_vector_retriever.py",
    "content": "from typing import Any, List, Optional\n\nfrom langchain.text_splitter import TextSplitter\nfrom langchain_core.documents import Document\nfrom pydantic import Field\nfrom langchain_core.retrievers import BaseRetriever\nfrom loguru import logger\n\n\nclass BaselineVectorRetriever(BaseRetriever):\n\n    vector_store: Any\n    text_splitter: TextSplitter\n    search_type: str = 'similarity'\n    search_kwargs: dict = Field(default_factory=dict)\n\n    def add_documents(\n        self,\n        documents: List[Document],\n        collection_name: str,\n        drop_old: bool = False,\n        **kwargs,\n    ) -> None:\n        split_docs = self.text_splitter.split_documents(documents)\n        logger.info(f'BaselineVectorRetriever: split document into {len(split_docs)} chunks')\n        for chunk_index, split_doc in enumerate(split_docs):\n            if 'chunk_bboxes' in split_doc.metadata:\n                split_doc.metadata.pop('chunk_bboxes')\n            split_doc.metadata['chunk_index'] = chunk_index\n            if kwargs.get('add_aux_info', False):\n                split_doc.page_content = split_doc.metadata['source'] + '\\n' + split_doc.metadata[\n                    'title'] + '\\n' + split_doc.page_content\n\n        connection_args = self.vector_store.connection_args\n        embedding_function = self.vector_store.embedding_func\n        self.vector_store.from_documents(\n            split_docs,\n            embedding=embedding_function,\n            collection_name=collection_name,\n            connection_args=connection_args,\n            drop_old=drop_old,\n        )\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        collection_name: Optional[str] = None,\n    ) -> List[Document]:\n        if collection_name:\n            self.vector_store = self.vector_store.__class__(\n                collection_name=collection_name,\n                embedding_function=self.vector_store.embedding_func,\n                connection_args=self.vector_store.connection_args,\n            )\n        if self.search_type == 'similarity':\n            result = self.vector_store.similarity_search(query, **self.search_kwargs)\n        return result\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/init_retrievers/keyword_retriever.py",
    "content": "from typing import Any, List, Optional\n\nfrom langchain.text_splitter import TextSplitter\nfrom langchain_core.documents import Document\nfrom pydantic import Field\nfrom langchain_core.retrievers import BaseRetriever\nfrom loguru import logger\n\n\nclass KeywordRetriever(BaseRetriever):\n    keyword_store: Any\n    text_splitter: TextSplitter\n    search_type: str = 'similarity'\n    search_kwargs: dict = Field(default_factory=dict)\n\n    def add_documents(\n        self,\n        documents: List[Document],\n        collection_name: str,\n        drop_old: bool = False,\n        **kwargs,\n    ) -> None:\n        split_docs = self.text_splitter.split_documents(documents)\n        logger.info(f'KeywordRetriever: split document into {len(split_docs)} chunks')\n        for chunk_index, split_doc in enumerate(split_docs):\n            if 'chunk_bboxes' in split_doc.metadata:\n                split_doc.metadata.pop('chunk_bboxes')\n            split_doc.metadata['chunk_index'] = chunk_index\n            if kwargs.get('add_aux_info', False):\n                split_doc.page_content = split_doc.metadata['source'] + '\\n' + split_doc.metadata[\n                    'title'] + '\\n' + split_doc.page_content\n\n        elasticsearch_url = self.keyword_store.elasticsearch_url\n        ssl_verify = self.keyword_store.ssl_verify\n        self.keyword_store.from_documents(\n            split_docs,\n            embedding='',\n            index_name=collection_name,\n            elasticsearch_url=elasticsearch_url,\n            ssl_verify=ssl_verify,\n            drop_old=drop_old,\n        )\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        collection_name: Optional[str] = None,\n    ) -> List[Document]:\n        if collection_name:\n            self.keyword_store = self.keyword_store.__class__(\n                index_name=collection_name,\n                elasticsearch_url=self.keyword_store.elasticsearch_url,\n                ssl_verify=self.keyword_store.ssl_verify,\n                llm_chain=self.keyword_store.llm_chain)\n        if self.search_type == 'similarity':\n            result = self.keyword_store.similarity_search(query, **self.search_kwargs)\n        return result\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/init_retrievers/mix_retriever.py",
    "content": "from typing import Any, List, Optional\n\nfrom bisheng_langchain.vectorstores import ElasticKeywordsSearch\nfrom langchain.text_splitter import TextSplitter\nfrom langchain_core.documents import Document\nfrom pydantic import Field\nfrom langchain_core.retrievers import BaseRetriever\n\n\nclass MixRetriever(BaseRetriever):\n    vector_store: Any\n    keyword_store: ElasticKeywordsSearch\n    vector_text_splitter: TextSplitter\n    keyword_text_splitter: TextSplitter\n    # retrieval\n    search_type: str = 'similarity'\n    vector_search_kwargs: dict = Field(default_factory=dict)\n    keyword_search_kwargs: dict = Field(default_factory=dict)\n    combine_strategy: str = 'mix'  # \"keyword_front, vector_front, mix\"\n\n    def add_documents(\n        self,\n        documents: List[Document],\n        collection_name: str,\n        drop_old: bool = False,\n        **kwargs,\n    ) -> None:\n        vector_split_docs = self.vector_text_splitter.split_documents(documents)\n        for chunk_index, split_doc in enumerate(vector_split_docs):\n            if 'chunk_bboxes' in split_doc.metadata:\n                split_doc.metadata.pop('chunk_bboxes')\n            split_doc.metadata['chunk_index'] = chunk_index\n            if kwargs.get('add_aux_info', False):\n                split_doc.page_content = split_doc.metadata['source'] + '\\n' + split_doc.metadata[\n                    'title'] + '\\n' + split_doc.page_content\n        keyword_split_docs = self.keyword_text_splitter.split_documents(documents)\n        for chunk_index, split_doc in enumerate(keyword_split_docs):\n            if 'chunk_bboxes' in split_doc.metadata:\n                split_doc.metadata.pop('chunk_bboxes')\n            split_doc.metadata['chunk_index'] = chunk_index\n            if kwargs.get('add_aux_info', False):\n                split_doc.page_content = split_doc.metadata['source'] + '\\n' + split_doc.metadata[\n                    'title'] + '\\n' + split_doc.page_content\n\n        self.keyword_store.from_documents(\n            keyword_split_docs,\n            embedding='',\n            index_name=collection_name,\n            elasticsearch_url=self.keyword_store.elasticsearch_url,\n            ssl_verify=self.keyword_store.ssl_verify,\n            drop_old=drop_old,\n        )\n\n        self.vector_store.from_documents(\n            vector_split_docs,\n            embedding=self.vector_store.embedding_func,\n            collection_name=collection_name,\n            connection_args=self.vector_store.connection_args,\n            drop_old=drop_old,\n        )\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        collection_name: Optional[str] = None,\n    ) -> List[Document]:\n        if collection_name:\n            self.keyword_store = self.keyword_store.__class__(\n                index_name=collection_name,\n                elasticsearch_url=self.keyword_store.elasticsearch_url,\n                ssl_verify=self.keyword_store.ssl_verify,\n                llm_chain=self.keyword_store.llm_chain)\n            self.vector_store = self.vector_store.__class__(\n                collection_name=collection_name,\n                embedding_function=self.vector_store.embedding_func,\n                connection_args=self.vector_store.connection_args,\n            )\n        if self.search_type == 'similarity':\n            keyword_docs = self.keyword_store.similarity_search(query,\n                                                                **self.keyword_search_kwargs)\n            vector_docs = self.vector_store.similarity_search(query, **self.vector_search_kwargs)\n            if self.combine_strategy == 'keyword_front':\n                return keyword_docs + vector_docs\n            elif self.combine_strategy == 'vector_front':\n                return vector_docs + keyword_docs\n            elif self.combine_strategy == 'mix':\n                combine_docs = []\n                min_len = min(len(keyword_docs), len(vector_docs))\n                for i in range(min_len):\n                    combine_docs.append(keyword_docs[i])\n                    combine_docs.append(vector_docs[i])\n                combine_docs.extend(keyword_docs[min_len:])\n                combine_docs.extend(vector_docs[min_len:])\n                return combine_docs\n            else:\n                raise ValueError(f'Expected combine_strategy to be one of '\n                                 f'(keyword_front, vector_front, mix),'\n                                 f'instead found {self.combine_strategy}')\n        else:\n            raise ValueError(\n                f'Expected search_type to be one of (similarity), instead found {self.search_type}'\n            )\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/init_retrievers/smaller_chunks_retriever.py",
    "content": "import uuid\nfrom typing import Any, List, Optional\n\nfrom langchain.text_splitter import TextSplitter\nfrom langchain_core.documents import Document\nfrom pydantic import Field\nfrom langchain_core.retrievers import BaseRetriever\n\n\nclass SmallerChunksVectorRetriever(BaseRetriever):\n    vector_store: Any\n    child_search_kwargs: dict = Field(default_factory=dict)\n    \"\"\"Keyword arguments to pass to the search function.\"\"\"\n    child_splitter: TextSplitter\n    parent_splitter: Optional[TextSplitter] = None\n    \"\"\"The text splitter to use to create parent documents.\n    If none, then the parent documents will be the raw documents passed in.\"\"\"\n    id_key: str = 'doc_id'\n\n    def add_documents(\n        self,\n        documents: List[Document],\n        collection_name: str,\n        drop_old: bool = False,\n        **kwargs,\n    ) -> None:\n        if self.parent_splitter is not None:\n            documents = self.parent_splitter.split_documents(documents)\n        for chunk_index, split_doc in enumerate(documents):\n            if 'chunk_bboxes' in split_doc.metadata:\n                split_doc.metadata.pop('chunk_bboxes')\n            split_doc.metadata['chunk_index'] = chunk_index\n            if kwargs.get('add_aux_info', False):\n                split_doc.page_content = split_doc.metadata['source'] + '\\n' + split_doc.metadata[\n                    'title'] + '\\n' + split_doc.page_content\n        doc_ids = [str(uuid.uuid4()) for _ in documents]\n\n        par_docs = []\n        child_docs = []\n        for i, par_doc in enumerate(documents):\n            _id = doc_ids[i]\n            par_doc.metadata[self.id_key] = _id\n            sub_docs = self.child_splitter.split_documents([par_doc])\n            for _doc in sub_docs:\n                _doc.metadata[self.id_key] = _id\n                if kwargs.get('add_aux_info', False):\n                    _doc.page_content = _doc.metadata['source'] + '\\n' + _doc.metadata[\n                        'title'] + '\\n' + _doc.page_content\n            par_docs.append(par_doc)\n            child_docs.extend(sub_docs)\n\n        self.vector_store.from_documents(\n            par_docs,\n            embedding=self.vector_store.embedding_func,\n            collection_name=collection_name + 'parent',\n            connection_args=self.vector_store.connection_args,\n            drop_old=drop_old,\n            no_embedding=True,\n        )\n        self.vector_store.from_documents(\n            child_docs,\n            embedding=self.vector_store.embedding_func,\n            collection_name=collection_name + 'child',\n            connection_args=self.vector_store.connection_args,\n            drop_old=drop_old,\n        )\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        collection_name: Optional[str] = None,\n    ) -> List[Document]:\n        if collection_name:\n            child_vectorstore = self.vector_store.__class__(\n                collection_name=collection_name + 'child',\n                embedding_function=self.vector_store.embedding_func,\n                connection_args=self.vector_store.connection_args,\n            )\n            parent_vectorstore = self.vector_store.__class__(\n                collection_name=collection_name + 'parent',\n                embedding_function=self.vector_store.embedding_func,\n                connection_args=self.vector_store.connection_args,\n            )\n        sub_docs = child_vectorstore.similarity_search(query, **self.child_search_kwargs)\n        doc_ids, ret = [], []\n        for doc in sub_docs:\n            doc_id = doc.metadata[self.id_key]\n            if doc_id not in doc_ids:\n                doc_ids.append(doc_id)\n                par_doc = parent_vectorstore.query(expr=f'{self.id_key} == \"{doc_id}\"')\n                ret.extend(par_doc)\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/prompts/__init__.py",
    "content": "from .prompt import BASE_PROMPT, CHAT_PROMPT, CHAT_PROMPT_GENERAL\nfrom .extract_key_prompt import EXTRACT_KEY_PROMPT\n\n__all__ = [\n    'BASE_PROMPT',\n    'CHAT_PROMPT',\n    'CHAT_PROMPT_GENERAL',\n    'EXTRACT_KEY_PROMPT',\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/prompts/extract_key_prompt.py",
    "content": "from langchain.prompts.prompt import PromptTemplate\n\n\nEXTRACT_KEY_PROMPT = PromptTemplate(\n    input_variables=['question'],\n    template=\"\"\"分析给定Question，提取Question中包含的KeyWords，输出列表形式\n\nExamples:\nQuestion: 达梦公司在过去三年中的流动比率如下：2021年：3.74倍；2020年：2.82倍；2019年：2.05倍。\nKeyWords: ['过去三年', '流动比率', '2021', '3.74', '2020', '2.82', '2019', '2.05']\n\n----------------\nQuestion: {question}\nKeyWords: \"\"\",\n)\n\n# EXTRACT_KEY_PROMPT = PromptTemplate(\n#     input_variables=['question'],\n#     template=\"\"\"分析给定Question，提取Question中包含的KeyWords，输出列表形式\n\n# Examples:\n# Question: 能否根据2020年金宇生物技术股份有限公司的年报，给我简要介绍一下报告期内公司的社会责任工作情况？\n# KeyWords: ['报告期', '社会责任', '工作情况']\n\n# Question: 请根据江化微2019年的年报，简要介绍报告期内公司主要销售客户的客户集中度情况，并结合同行业情况进行分析。\n# KeyWords: ['报告期', '主要', '销售客户', '客户集中度', '同行业', '分析']\n\n# Question: 请问，在苏州迈为科技股份有限公司2019年的年报中，现金流的情况是否发生了重大变化？若发生，导致重大变化的原因是什么？\n# KeyWords: ['现金流', '重大变化', '原因']\n\n# ----------------\n# Question: {question}\n# KeyWords: \"\"\",\n# )"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/prompts/prompt.py",
    "content": "from langchain_core.prompts import PromptTemplate\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\n\nprompt_template = \"\"\"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n{context}\n\nQuestion: {question}\nHelpful Answer:\"\"\"\nBASE_PROMPT = PromptTemplate(\n    template=prompt_template, input_variables=[\"context\", \"question\"]\n)\n\n\nsystem_template = \"\"\"# 任务\n你是一位知识库问答助手，遵守以下规则回答问题：\n1. 严谨、专业地回答用户的问题。\n2. 回答时须严格基于【参考文本】中的内容：\n- 如果【参考文本】中有明确与用户问题相关的文字内容，请依据相关内容进行回答；如果【参考文本】中没有任何与用户问题相关的内容，则直接回复：“没有找到相关内容”。\n- 如果相关内容中包含 markdown 格式的图片（例如 ![image](路径/IMAGE_1.png)），必须严格保留其原始 markdown 格式，不得添加引号、代码块（`或```）或其他特殊符号，也不得修改图片路径，保证可以正常渲染 markdown 图片。\n3. 当【参考文本】中的内容来源于多个不同的信息源时，若相关内容存在明显差异或冲突，请分别列出这些差异或冲突的答案；若无差异或冲突，只给出一个统一的回答即可。\n\n# 参考文本\n{context}\"\"\"\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_template),\n    HumanMessagePromptTemplate.from_template(\"{question}\"),\n]\nCHAT_PROMPT = ChatPromptTemplate.from_messages(messages)\n\n\nsystem_template_general = \"\"\"你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答问题。你需要根据以下的规则来回答问题：\n1. 如果上下文中包含了正确答案，你需要根据上下文进行准确的回答。但是在回答前，你需要注意，上下文中的信息可能存在事实性错误，如果文档中存在和事实不一致的错误，请根据事实回答。\n2. 如果上下文中不包含答案，就说你不知道，不要试图编造答案。\n3. 你需要根据上下文给出详细的回答，不要试图偷懒，不要遗漏括号中的信息，你必须回答的尽可能详细。\n\"\"\"\nhuman_template_general = \"\"\"\n上下文：\n{context}\n\n问题：\n{question}\n\"\"\"\nmessages_general = [\n    SystemMessagePromptTemplate.from_template(system_template_general),\n    HumanMessagePromptTemplate.from_template(human_template_general),\n]\nCHAT_PROMPT_GENERAL = ChatPromptTemplate.from_messages(messages_general)"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/prompts/prompt_cohere.py",
    "content": "from langchain_core.prompts import PromptTemplate\nfrom langchain_core.prompts.chat import (\n    ChatPromptTemplate,\n    HumanMessagePromptTemplate,\n    SystemMessagePromptTemplate,\n)\n\n\npirate_preamble = \"\"\"\n## Task & Context\n你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答用户的问题。\n\n## Style Guide\n你需要遵循以下的规则来回答用户问题：\n- 如果给定的上下文中没有找到相关的答案，就说你不知道，不要试图编造答案；\n- 回答的语言跟用户的问题语言保持一致，比如用户的问题是中文，请用中文作答；用户的问题是英文，请用英文作答；\n- 你需要根据上下文给出尽可能详细的回答；\n\"\"\"\n\nmessages = [\n    SystemMessagePromptTemplate.from_template(pirate_preamble),\n    HumanMessagePromptTemplate.from_template(\"{question}\"),\n]\nCOHERE_CHAT_PROMPT = ChatPromptTemplate.from_messages(messages)\n\n\n# system_content = \"\"\"## Task & Context\n# 你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答用户的问题。\n\n# ## Style Guide\n# 你需要遵循以下的规则来回答用户问题：\n# - 如果给定的上下文中没有找到相关的答案，就说你不知道，不要试图编造答案；\n# - 回答的语言跟用户的问题语言保持一致，比如用户的问题是中文，请用中文作答；用户的问题是英文，请用英文作答；\n# - 你需要根据上下文给出尽可能详细的回答；|<instruct>|Carefully perform the following instructions, in order, starting each with a new line.\n# Firstly, Decide which of the retrieved documents are relevant to the user's last input by writing 'Relevant Documents:' followed by comma-separated list of document numbers. If none are relevant, you should instead write 'None'.\n# Secondly, Decide which of the retrieved documents contain facts that should be cited in a good answer to the user's last input by writing 'Cited Documents:' followed a comma-separated list of document numbers. If you dont want to cite any of them, you should instead write 'None'.\n# Thirdly, Write 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. Do not insert any citations or grounding markup.\n# Finally, Write 'Grounded answer:' followed by a response to the user's last input. Use the symbols <co: doc> and </co: doc> to indicate when a fact comes from a document in the search result, e.g <co: 0>my fact</co: 0> for a fact from document 0.|<documents>|{documents}\"\"\"\n\nsystem_content = \"\"\"## Task & Context\n你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答用户的问题。\n\n## Style Guide\n你需要遵循以下的规则来回答用户问题：\n- 如果给定的上下文中没有找到相关的答案，就说你不知道，不要试图编造答案；\n- 回答的语言跟用户的问题语言保持一致，比如用户的问题是中文，请用中文作答；用户的问题是英文，请用英文作答；\n- 你需要根据上下文给出尽可能详细的回答；|<instruct>|Carefully perform the following instructions, in order, starting each with a new line.\nWrite 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. Do not insert any citations or grounding markup.|<documents>|{documents}\"\"\"\nmessages = [\n    SystemMessagePromptTemplate.from_template(system_content),\n    HumanMessagePromptTemplate.from_template(\"{question}\"),\n]\nCOHERE_LOCAL_CHAT_PROMPT_RAG = ChatPromptTemplate.from_messages(messages)\n\n\n# prompt_template = \"\"\"<BOS_TOKEN><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|># Safety Preamble\n# The instructions in this section override those in the task description and style guide sections. Don't answer questions that are harmful or immoral.\n\n# # System Preamble\n# ## Basic Rules\n# You are a powerful conversational AI trained by Cohere to help people. You are augmented by a number of tools, and your job is to use and consume the output of these tools to best help the user. You will see a conversation history between yourself and a user, ending with an utterance from the user. You will then see a specific instruction instructing you what kind of response to generate. When you answer the user's requests, you cite your sources in your answers, according to those instructions.\n\n# # User Preamble\n# ## Task & Context\n# 你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答用户的问题。\n\n# ## Style Guide\n# 你需要遵循以下的规则来回答用户问题：\n# - 如果给定的上下文中没有找到相关的答案，就说你不知道，不要试图编造答案；\n# - 回答的语言跟用户的问题语言保持一致，比如用户的问题是中文，请用中文作答；用户的问题是英文，请用英文作答；\n# - 你需要根据上下文给出尽可能详细的回答；<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>{question}<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|><results>\n# {documents}\n# </results><|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>Carefully perform the following instructions, in order, starting each with a new line.\n# Write 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. Do not insert any citations or grounding markup.<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>\"\"\"\n\n\nprompt_template = \"\"\"<BOS_TOKEN><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|># Safety Preamble\nThe instructions in this section override those in the task description and style guide sections. Don't answer questions that are harmful or immoral.\n\n# System Preamble\n## Basic Rules\nYou are a powerful conversational AI trained by Cohere to help people. You are augmented by a number of tools, and your job is to use and consume the output of these tools to best help the user. You will see a conversation history between yourself and a user, ending with an utterance from the user. You will then see a specific instruction instructing you what kind of response to generate.\n\n# User Preamble\n## Task & Context\n你是一个准确且可靠的知识库问答助手，能够借助上下文知识回答用户的问题。\n\n## Style Guide\nUnless the user asks for a different style of answer, you should answer in full sentences, using proper grammar and spelling.<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>{question}<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|><results>\n{documents}\n</results><|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>Carefully perform the following instructions, in order, starting each with a new line.\n- 回答的语言跟用户的问题语言保持一致，比如用户的问题是中文，请用中文作答；用户的问题是英文，请用英文作答；\n- 你需要根据上下文给出尽可能详细的回答；\n- Write 'Answer:' followed by a response to the user's last input. Use the retrieved documents to help you. <|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>\"\"\"\nCOHERE_RAW_PROMPT = PromptTemplate(\n    template=prompt_template, input_variables=[\"documents\", \"question\"]\n)\n\n\n# prompt_template = \"\"\"<BOS_TOKEN><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>Use the following pieces of context to answer the question at the end. \n# If you don't know the answer, just say that you don't know, don't try to make up an answer.<results>\n# {documents}\n# </results><|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>{question}<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>\"\"\"\n\n# # prompt_template = \"\"\"<BOS_TOKEN><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>Use the following pieces of context to answer the question at the end. \n# # If you don't know the answer, just say that you don't know, don't try to make up an answer.\n# # ----------------\n# # {documents}<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>{question}<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>\"\"\"\n# COHERE_RAW_PROMPT = PromptTemplate(\n#     template=prompt_template, input_variables=[\"documents\", \"question\"]\n# )"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/qa_corpus/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/rag/qa_corpus/qa_generator.py",
    "content": "import os\nimport random\nimport json\nimport copy\nimport pandas as pd\nfrom loguru import logger\nfrom tqdm import tqdm\nfrom langchain.document_loaders import PyPDFLoader\nfrom langchain_core.prompts import PromptTemplate\nfrom bisheng_langchain.document_loaders import ElemUnstructuredLoader\nfrom bisheng_ragas.trainset import TrainsetGenerator\n\n\nprompt_template = \"\"\"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n{context}\n\nQuestion: {question}\nHelpful Answer:\"\"\"\nPROMPT = PromptTemplate(\n    template=prompt_template, input_variables=[\"context\", \"question\"]\n)\n\n\nclass RagQAGenerator(object):\n\n    def __init__(self, \n                 corpus_folder,\n                 qa_gen_folder,\n                 unstructured_api_url=\"https://bisheng.dataelem.com/api/v1/etl4llm/predict\",\n                 model_name=\"gpt-4-0125-preview\"):\n        self.unstructured_api_url = unstructured_api_url\n        self.corpus_folder = corpus_folder\n        self.qa_gen_folder = qa_gen_folder\n        self.model_name = model_name\n        if not os.path.exists(self.qa_gen_folder):\n            os.makedirs(self.qa_gen_folder)\n    \n    def generate(self):\n        for file_name in tqdm(os.listdir(self.corpus_folder)):\n            file_path = os.path.join(self.corpus_folder, file_name)\n            logger.info(f'{file_name} generate qa start ...')\n            # only consider pdf file\n            if file_name.endswith('.pdf'):\n                self.generate_qa_each_file(file_path)\n            else:\n                continue\n\n    def generate_qa_each_file(self, file_path, train_size=100):\n        file_name = os.path.basename(file_path)\n        loader = ElemUnstructuredLoader(file_name=file_name,\n                                        file_path=file_path,\n                                        unstructured_api_url=self.unstructured_api_url)\n        documents = loader.load()\n        for doc in documents:\n            doc.metadata = dict()\n        logger.info(f'documents: {len(documents)}')\n\n        trainsetgenerator = TrainsetGenerator.from_default(\n            openai_generator_llm=self.model_name,\n            openai_filter_llm=self.model_name)\n        trainset = trainsetgenerator.generate(documents, train_size=train_size)\n\n        save_path = os.path.join(self.qa_gen_folder, os.path.splitext(file_name)[0] + '_qa_gen.xlsx')\n        df = trainset.to_pandas()\n        df.to_excel(save_path, index=False)\n        return save_path\n    \n    def statistic_qa(self):\n        total_qa_num = 0\n        all_qa_info = dict()\n        for file_name in os.listdir(self.qa_gen_folder):\n            file_path = os.path.join(self.qa_gen_folder, file_name)\n            if file_name.endswith('.xlsx'):\n                df = pd.read_excel(file_path)\n                qa_info = df.to_dict('records')\n                logger.info(f'{file_name} qa num: {len(qa_info)}')\n                total_qa_num += len(qa_info)\n                all_qa_info[file_name] = qa_info\n        logger.info(f'total_file_num: {len(list(all_qa_info.keys()))}, total_qa_num: {total_qa_num}')\n        return all_qa_info\n\n    def format_qa_for_sft(self, min_context_num=3, max_context_num=7):\n        random.seed(123)\n        all_qa_info = self.statistic_qa()\n        train_samples = []\n        test_samples = []\n        for file_name in all_qa_info:\n            # each file qa\n            qa_info = all_qa_info[file_name]\n            if len(qa_info) == 0:\n                continue\n            contexts = []\n            for qa in qa_info:\n                ground_truth_context = str(eval(qa['ground_truth_context'])[0])\n                contexts.append(ground_truth_context)\n            \n            random.shuffle(qa_info)\n            for i, qa in enumerate(qa_info):\n                question = qa['question']\n                ground_truth_context = str(eval(qa['ground_truth_context'])[0])\n                ground_truth = str(eval(qa['ground_truth'])[0])\n                \n                # 加入其他干扰context\n                random_number = random.randint(\n                    min(min_context_num, len(contexts)), \n                    min(max_context_num, len(contexts))\n                )\n                random_context = random.sample(contexts, random_number)\n                if ground_truth_context in random_context:\n                    random_context.remove(ground_truth_context)\n                # 将当前context随机插入到其他context中\n                insert_position = random.randint(0, len(random_context))\n                random_context.insert(insert_position, ground_truth_context)\n\n                random_context = '\\n\\n'.join(random_context)\n                prompt = PROMPT.format(context=random_context, question=question)\n                each_sample = {\n                    'instruction': '', \n                    'input': prompt, \n                    'output': ground_truth,\n                    'history': []\n                }\n                if i < 0.9 * len(qa_info):\n                    train_samples.append(each_sample)\n                else:\n                    test_samples.append(each_sample)\n             \n        logger.info(f'train_samples: {len(train_samples)} test_samples: {len(test_samples)}')\n        save_folder = os.path.dirname(self.qa_gen_folder)\n        with open(os.path.join(save_folder, f'train_samples_ganrao_chunk{max_context_num+1}.json'), 'w') as f:\n            json.dump(train_samples, f, indent=2, ensure_ascii=False)\n        with open(os.path.join(save_folder, f'test_samples_ganrao_chunk{max_context_num+1}.json'), 'w') as f:\n            json.dump(test_samples, f, indent=2, ensure_ascii=False)\n\n\nif __name__ == '__main__':\n    corpus_folder = '/home/public/rag_benchmark_v1.0/rag_benchmark_processed'\n    qa_gen_folder = '/home/public/rag_benchmark_v1.0/rag_qa_gen_filter'\n    generator = RagQAGenerator(corpus_folder=corpus_folder, qa_gen_folder=qa_gen_folder)\n    # generator.generate()\n    # generator.statistic_qa()\n    generator.format_qa_for_sft(min_context_num=5, max_context_num=11)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/rerank/__init__.py",
    "content": "from .rerank import CustomReranker\n\n__all__ = [\n    'CustomReranker',\n]\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/rerank/rerank.py",
    "content": "import torch\nfrom transformers import AutoModelForSequenceClassification, AutoTokenizer\n\n\nclass CustomReranker:\n\n    def __init__(self, model_path, device_id='cuda:0', threshold=0.0):\n        self.device_id = device_id\n        self.threshold = threshold\n        self.tokenizer = AutoTokenizer.from_pretrained(model_path)\n        self.rank_model = AutoModelForSequenceClassification.from_pretrained(model_path).to(device_id)\n        self.rank_model.eval()\n\n    def match_score(self, chunk, query):\n        \"\"\"\n        rerank模型计算query和chunk的相似度\n        \"\"\"\n        pairs = [[query, chunk]]\n\n        with torch.no_grad():\n            inputs = self.tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512).to(self.device_id)\n            scores = self.rank_model(**inputs, return_dict=True).logits.view(-1, ).float()\n            scores = torch.sigmoid(scores) \n            scores = scores.cpu().numpy()\n            \n        return scores[0]\n\n    def sort_and_filter(self, query, all_chunks):\n        \"\"\"\n        rerank模型对所有chunk进行排序\n        \"\"\"\n        chunk_match_score = []\n        for index, chunk in enumerate(all_chunks):\n            chunk_text = chunk.page_content\n            chunk_match_score.append(self.match_score(chunk_text, query))\n\n        sorted_res = sorted(enumerate(chunk_match_score), key=lambda x: -x[1])\n        remain_chunks = [all_chunks[elem[0]] for elem in sorted_res if elem[1] >= self.threshold]\n        if not remain_chunks:\n            remain_chunks = [all_chunks[sorted_res[0][0]]]\n\n        # for index, chunk in enumerate(remain_chunks):\n        #     print('query:', query)\n        #     print('chunk_text:', chunk.page_content)\n        #     print('socre:', sorted_res[index][1])\n        #     print('***********')\n\n        return remain_chunks"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/rerank/rerank_benchmark.py",
    "content": "import json\nimport os\nimport numpy as np\nimport torch\nfrom transformers import AutoModelForSequenceClassification, AutoTokenizer\n\ntokenizer = AutoTokenizer.from_pretrained('/home/public/llm/bge-reranker-large')\nmodel = AutoModelForSequenceClassification.from_pretrained('/home/public/llm/bge-reranker-large').to('cuda:2')\nmodel.eval()\n\n\ndef min_edit_distance(a, b):\n    dp = [[0 for i in range(len(b) + 1)] for j in range(len(a) + 1)]\n    for i in range(len(a) + 1):\n        dp[i][0] = i\n    for j in range(len(b) + 1):\n        dp[0][j] = j\n    for i in range(1, len(a) + 1):\n        for j in range(1, len(b) + 1):\n            if a[i - 1] == b[j - 1]:\n                dp[i][j] = dp[i - 1][j - 1]\n            else:\n                dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)\n    return dp[-1][-1]\n\n\ndef is_matched(text0, text1, thrd=10):\n    text0.replace(\" \", \"\").replace(\"\\n\", \"\")\n    text1.replace(\" \", \"\").replace(\"\\n\", \"\")\n    dist = min_edit_distance(text0, text1)\n    if dist < thrd:\n        return True\n    return False\n\n\ndef match_score(chunk, query):\n    \"\"\"\n    rerank模型计算query和chunk的相似度\n    \"\"\"\n    pairs = [[query, chunk]]\n\n    with torch.no_grad():\n        inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512).to('cuda:2')\n        scores = model(**inputs, return_dict=True).logits.view(-1, ).float()\n        scores = torch.sigmoid(scores) \n        scores = scores.cpu().numpy()\n        \n    return scores[0]\n\n\ndef sort_filter_all_chunks_method1(d, th=0.0):\n    \"\"\"\n    rerank模型对所有chunk进行排序\n    \"\"\"\n    # answer关键词已提取好\n    query = d['question']\n    all_chunks = d['all_chunks']\n\n    chunk_match_score = []\n    for index, chunk in enumerate(all_chunks):\n        chunk_text = chunk['text']\n        chunk_match_score.append(match_score(chunk_text, query))\n\n    sorted_res = sorted(enumerate(chunk_match_score), key=lambda x: -x[1])\n    print('-----------')\n    print(sorted_res)\n    remain_chunks = [all_chunks[elem[0]] for elem in sorted_res if elem[1] >= th]\n    if not remain_chunks:\n        remain_chunks = [all_chunks[sorted_res[0][0]]]\n\n    # for index, chunk in enumerate(remain_chunks):\n    #     print('query:', query)\n    #     print('chunk_text:', chunk['text'])\n    #     print('socre:', sorted_res[index][1])\n    #     print('***********')\n\n    d['all_chunks'] = remain_chunks\n\n\ndef calc_precision_recall(d):\n    \"\"\"\n    计算分数\n    \"\"\"\n    d_ves = d[\"all_chunks\"][:10]\n    d_es = d[\"all_chunks\"][10:]\n    all_chunks = []\n    for i in range(len(d_es)):\n        all_chunks.append(d_es[i])\n        all_chunks.append(d_ves[i])\n    all_chunks.extend(d_ves[i+1:])\n    d[\"all_chunks\"] = all_chunks\n    \n    sort_filter_all_chunks_method1(d)\n    NCHUNK = len(d[\"chunks\"])\n    NCHUNK_ALL = len(d[\"all_chunks\"])\n    print('chunks:', NCHUNK, 'all_chunks:', NCHUNK_ALL)\n\n    scores = np.zeros((NCHUNK, NCHUNK_ALL))\n    for j in range(NCHUNK):\n        for i in range(NCHUNK):\n            if d[\"chunks\"][j][\"text\"] == d[\"all_chunks\"][i]['text']:\n                scores[j][i] = 1\n            elif abs(len(d[\"chunks\"][j][\"text\"]) - len(d[\"all_chunks\"][i]['text'])) > 10:\n                scores[j][i] = 0\n            elif is_matched(d[\"chunks\"][j][\"text\"], d[\"all_chunks\"][i]['text']):\n                scores[j][i] = 1\n\n    N_gt = NCHUNK\n    N_all = NCHUNK_ALL\n    if NCHUNK != 0:\n        N_right = sum(scores.max(axis=1))\n    else:\n        N_right = 0\n    recall = 0 if N_gt == 0 else N_right / N_gt\n    return recall, N_gt, N_right, N_all\n\n\nwith open('zhaogushu_retriever_gt_convert_key.json', 'r') as f:\n    retriever_gt_list = json.load(f)\nmFieldRecall = 0\ntotal_N_gt, total_N_right, total_N_all = 0, 0, 0\nD_SCORES = {}\nnquestion = 0\nfor d in retriever_gt_list:\n    recall, N_gt, N_right, N_all = calc_precision_recall(d)\n    mFieldRecall += recall\n    D_SCORES[d[\"question\"]] = {'recall': recall}\n    total_N_gt += N_gt\n    total_N_right += N_right\n    total_N_all += N_all\n    nquestion += 1\n\nmFieldRecall = 0 if nquestion == 0 else mFieldRecall / nquestion\nmMethodRecall = total_N_right / total_N_gt\n\nprint(f'mFieldRecall: {mFieldRecall * 100:.2f} %')\nprint(f'mMethodRecall: {mMethodRecall * 100:.2f} %')\nprint(f'total_N_right: {total_N_right}, total_N_gt: {total_N_gt}, total_N_all: {total_N_all}' )\nprint(f'nquestion: {nquestion}, mean_N_right: {total_N_right / nquestion}, mean_N_gt: {total_N_gt / nquestion}, mean_N_all: {total_N_all / nquestion}')"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/run_qa_gen_web.py",
    "content": "import os\nimport tempfile\nimport gradio as gr\nfrom bisheng_langchain.rag.qa_corpus.qa_generator import RagQAGenerator\n\n\ntmpdir = '/home/public/rag_benchmark_v1.0/tmp'\nif not os.path.exists(tmpdir):\n    os.makedirs(tmpdir)\n\nqa_gen_folder = '/home/public/rag_benchmark_v1.0/rag_qa_gen_demo'\nif not os.path.exists(qa_gen_folder):\n    os.makedirs(qa_gen_folder)\nmodel_name = \"gpt-4-0125-preview\"\nunstructured_api_url = \"https://bisheng.dataelem.com/api/v1/etl4llm/predict\"\ngenerator = RagQAGenerator(corpus_folder='',\n                           qa_gen_folder=qa_gen_folder, \n                           unstructured_api_url=unstructured_api_url, \n                           model_name=model_name)\n\n\ndef qa_gen_run(intput_file, gen_qa_num):\n    gen_qa_num = int(gen_qa_num)\n    file_path = intput_file.name\n    output_file = generator.generate_qa_each_file(file_path, train_size=gen_qa_num)\n    return output_file\n\n\nwith tempfile.TemporaryDirectory(dir=tmpdir) as tmpdir:\n    with gr.Blocks(css='#margin-top {margin-top: 15px} #center {text-align: center;} #description {text-align: center}') as demo:\n        with gr.Row(elem_id='center'):\n            gr.Markdown('# Bisheng qa auto generation Demo')\n\n        with gr.Row(elem_id = 'description'):\n            gr.Markdown(\"\"\"Qa generation for anything.\"\"\")\n\n        with gr.Row():\n            intput_file = gr.components.File(label='FlowFile')\n            gen_qa_num = gr.Textbox(label='生成的问题数量', value=10, interactive=True, lines=2)\n\n        with gr.Row():\n            with gr.Column():\n                btn0 = gr.Button('Run Qa Gen')\n                out0 = gr.components.File(label='FlowFile')\n                btn0.click(fn=qa_gen_run, inputs=[intput_file, gen_qa_num], outputs=out0)\n                \n        demo.launch(server_name='192.168.106.20', server_port=9118, share=True)"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/run_rag_evaluate_web.py",
    "content": "import os\nimport gradio as gr\nimport pandas as pd\nfrom pathlib import Path\nfrom gradio import components\nfrom bisheng_langchain.rag.scoring.ragas_score import RagScore\n\n\nsave_folder = '/home/public/rag_benchmark_v1.0/rag_score_demo'\nif not os.path.exists(save_folder):\n    os.makedirs(save_folder)\n\n\ndef rag_evaluate(excel_file, metric='answer_recall_bisheng', batch_size=5):\n    excel_path = excel_file.name\n    df = pd.read_excel(excel_path)\n    if '问题类型' not in df.columns:\n        df['问题类型'] = len(df['问题'].tolist()) * ['QA']\n    df.to_excel(excel_path, index=False)\n    params = {\n        'excel_path': excel_path,\n        'save_path': save_folder,\n        'question_column': '问题',\n        'query_type_column': '问题类型',\n        'gt_column': '人工标注',\n        'answer_column': '模型回答',\n        'metrics': [metric],\n        'batch_size': int(batch_size),\n    }\n    rag_score = RagScore(**params)\n    rag_score.score()\n\n    output_path = Path(save_folder) / f\"{Path(excel_path).stem}_score.xlsx\"\n    return str(output_path)\n\n\nif __name__ == '__main__':\n     title = \"\"\"毕昇QA问答自动评估系统\"\"\"\n     with gr.Blocks() as demo:\n        gr.Markdown(title)\n        \n        with gr.Row():\n            with gr.Column(scale=2):\n                with gr.Row():\n                    eval_intput_file = gr.components.File(label='FlowFile')\n                    with gr.Column():\n                        metric_options = [\"answer_recall_bisheng\", \"answer_correctness_bisheng\"]\n                        metric = gr.components.Dropdown(label=\"评估方法\", choices=metric_options, default=metric_options[0], interactive=True)\n                        # metric = gr.Textbox(label='评估方法', value='answer_recall_bisheng', interactive=True, lines=2)\n                        batch_size = gr.Textbox(label='批评估大小', value=5, interactive=True, lines=2)\n                btn0 = gr.Button('Run Evaluation')\n            eval_out_file = gr.components.File(label='FlowFile')\n\n        btn0.click(fn=rag_evaluate, inputs=[eval_intput_file, metric, batch_size], outputs=[eval_out_file])\n        demo.queue().launch(share=False, inbrowser=True, server_name=\"0.0.0.0\", server_port=8218)"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/scoring/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/rag/scoring/llama_index_score.py",
    "content": "import os\nimport shutil\n\nimport httpx\nimport nest_asyncio\nimport pandas as pd\n\nnest_asyncio.apply()\nfrom collections import defaultdict\n\nfrom llama_index.core import ServiceContext\nfrom llama_index.embeddings.openai import OpenAIEmbedding\nfrom llama_index.core.evaluation import CorrectnessEvaluator\nfrom llama_index.llms.openai import OpenAI\nfrom tqdm import tqdm\n\nopenai_api_key = os.environ.get('OPENAI_API_KEY', '')\nopenai_proxy = os.environ.get('OPENAI_PROXY', '')\n\n\ndef llama_index_answer_correctness(querys, responses, references):\n    embed = OpenAIEmbedding(api_key=openai_api_key, http_client=httpx.AsyncClient(proxies=openai_proxy))\n\n    model_name = \"gpt-3.5-turbo-16k\"\n    service_context = ServiceContext.from_defaults(\n        llm=OpenAI(model=model_name, api_key=openai_api_key, http_client=httpx.AsyncClient(proxies=openai_proxy)),\n        embed_model=embed,\n    )\n    evaluator = CorrectnessEvaluator(service_context=service_context)\n\n    correctness_scores = []\n    correctness_feedbacks = []\n    for i in tqdm(range(len(querys))):\n        result = evaluator.evaluate(\n            query=querys[i],\n            response=responses[i],\n            reference=references[i],\n        )\n        correctness = result.score\n        feedback = result.feedback\n        correctness_scores.append(correctness)\n        correctness_feedbacks.append(feedback)\n    return correctness_scores, correctness_feedbacks\n\n\ndef rag_benchmark_scoring(excel_file):\n    if not os.path.exists(excel_file + '.bak'):\n        shutil.copy(excel_file, excel_file + '.bak')\n\n    df = pd.read_excel(excel_file)\n    df.dropna(subset=['问题', 'GT', 'rag_answer'], inplace=True)\n    all_questions_info = df.to_dict('records')\n\n    questions = []\n    ground_truths = []\n    answers = []\n    for question_info in all_questions_info:\n        question = question_info['问题']\n        gt = question_info['GT']\n        pred = question_info['rag_answer']\n\n        questions.append(question)\n        answers.append(pred)\n        ground_truths.append(gt)\n\n    correctness_scores, correctness_feedbacks = llama_index_answer_correctness(questions, answers, ground_truths)\n\n    score_map = {\n        'llama_index_correctness': correctness_scores,\n    }\n\n    for metric, scores in score_map.items():\n        df[metric] = df.index.map({i: score for i, score in enumerate(scores)})\n    df.to_excel(excel_file, index=False)\n\n    if '问题类型' in df.columns:\n        grouped_df = (\n            df.groupby('问题类型')\n            .agg({'问题': 'count', **{metric: 'mean' for metric in score_map}})\n            .rename(columns={'问题': '问题数量'})\n        )\n        total_question = grouped_df['问题数量'].sum()\n        grouped_df.loc['all', '问题数量'] = total_question\n        for metric in score_map:\n            grouped_df.loc['all', metric] = df[metric].sum() / total_question\n        return grouped_df\n\n\nif __name__ == '__main__':\n    excel_file = './data/benchmark_v1.0.xlsx'\n    print(rag_benchmark_scoring(excel_file))\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/scoring/ragas_score.py",
    "content": "import json\nimport os\nimport re\nfrom collections import defaultdict\nfrom dataclasses import dataclass\nfrom pathlib import Path\nfrom typing import Any, Dict, List, Optional, Tuple, Union\n\nimport pandas as pd\nfrom datasets import Dataset\nfrom loguru import logger\nfrom bisheng_ragas import evaluate\nfrom bisheng_ragas.metrics import AnswerCorrectness, AnswerCorrectnessBisheng, AnswerRecallBisheng\n\n\n@dataclass\nclass RagScore:\n    excel_path: str\n    save_path: str\n    question_column: str\n    gt_column: str\n    answer_column: str\n    metrics: List[str]\n    contexts_column: Optional[str] = None\n    query_type_column: Optional[str] = None\n    gt_split_column: Optional[str] = None\n    batch_size: int = 5\n    whether_gtsplit: bool = False\n\n    def _validate_metrics(self):\n        for metric in self.metrics:\n            if not hasattr(self, f'ragas_{metric}'):\n                raise Exception(f'\"ragas_{metric}\" 未实现!')\n\n    def ragas_answer_correctness(self, dataset: Dataset) -> pd.DataFrame:\n        # answer_correctness, 只考虑事实相似度\n        weights = [1.0, 0.0]\n        answer_correctness = AnswerCorrectness(weights=weights, batch_size=self.batch_size)\n        result = evaluate(\n            dataset=dataset,\n            metrics=[\n                answer_correctness,\n            ],\n        )\n        self.score_map_keys = list(result.keys())\n        df = result.to_pandas()\n        return df\n\n    def ragas_answer_correctness_bisheng(self, dataset: Dataset) -> pd.DataFrame:\n        answer_correctness = AnswerCorrectnessBisheng(batch_size=self.batch_size)\n        result = evaluate(\n            dataset=dataset,\n            metrics=[answer_correctness],\n        )\n        self.score_map_keys = list(result.keys())\n        df = result.to_pandas()\n        return df\n\n    def ragas_answer_recall_bisheng(self, dataset: Dataset) -> pd.DataFrame:\n        answer_recall =AnswerRecallBisheng(batch_size=self.batch_size, \n                                           whether_gtsplit=self.whether_gtsplit)\n        result = evaluate(\n            dataset=dataset,\n            metrics=[answer_recall],\n        )\n        self.score_map_keys = list(result.keys())\n        df = result.to_pandas()\n        return df\n\n    def _remove_source(self, pred: str) -> str:\n        \"\"\"去除【1†source】, only for openai assistant\"\"\"\n        pattern = re.compile(\"【(\\d+)†source】\")\n        match = re.findall(pattern, pred)\n        for i in match:\n            str_temp = f\"【{i}†source】\"\n            pred = pred.replace(str_temp, '')\n        return pred\n\n    def score(self) -> Tuple[pd.DataFrame, Optional[pd.DataFrame]]:\n        df = pd.read_excel(self.excel_path)\n        ori_row_nums = df.shape[0]\n\n        # 删除含有na的行\n        columns_to_check = [\n            self.question_column,\n            self.gt_column,\n            self.answer_column,\n            self.contexts_column,\n            self.query_type_column,\n        ]\n        # 是否有要点拆分列\n        if self.gt_split_column:\n            columns_to_check.append(self.gt_split_column)\n\n        df.dropna(subset=[col for col in columns_to_check if col], inplace=True)\n        df = df.reset_index()\n        print(f'删除含有na的行 {ori_row_nums - df.shape[0]} 个!')\n        print(f'总计 {df.shape[0]} 个问题')\n\n        questions = df[self.question_column].tolist()\n        answers = df[self.answer_column].tolist()\n        # answers = df[self.answer_column].apply(self._remove_source).tolist() # for openai assistant\n        ground_truths = df[self.gt_column].apply(lambda x: [x]).tolist()\n        # todo: contexts可能是保存在json中的，这段代码可能需要修改\n        contexts = (\n            [['']] * len(questions)\n            if not self.contexts_column\n            else df[self.contexts_column].apply(lambda x: [x]).tolist()\n        )\n        # To dict\n        if self.gt_split_column:\n            gtsplit = df[self.gt_split_column].tolist()\n            data: Dict[str, List[Any]] = {\n                \"question\": questions,\n                \"answer\": answers,\n                \"contexts\": contexts,\n                \"ground_truths\": ground_truths,\n                'gt_split_point': gtsplit\n            }\n        else:\n            data: Dict[str, List[Any]] = {\n                \"question\": questions,\n                \"answer\": answers,\n                \"contexts\": contexts,\n                \"ground_truths\": ground_truths,\n            }\n        # Convert dict to dataset\n        dataset = Dataset.from_dict(data)\n\n        self._validate_metrics()\n\n        save_group_df = dict()\n        for metric_name in self.metrics:\n            ragas_result = getattr(self, f'ragas_{metric_name}')(dataset)\n            if metric_name =='answer_recall_bisheng':\n                if self.gt_split_column:\n                    df[self.gt_split_column] = ragas_result[\"gt_split_point\"]\n                else:\n                    df[\"gt_split_point\"] = ragas_result[\"gt_split_point\"]\n                df[\"analyse\"] = ragas_result[\"analyse\"]\n\n            score_map = dict().fromkeys(self.score_map_keys, ragas_result)\n            for metric, scores in score_map.items():\n                df[metric] = df.index.map({idx: rows[metric] for idx, rows in scores.iterrows()})\n\n            if self.query_type_column and self.query_type_column in df.columns:\n                grouped_df = df.groupby(self.query_type_column)\n                grouped_df = grouped_df.agg({self.question_column: 'count', **{metric: 'mean' for metric in score_map}})\n                grouped_df.rename(columns={self.question_column: '问题个数'}, inplace=True)\n                \n                total_question = grouped_df['问题个数'].sum()\n                grouped_df.loc['总计', '问题个数'] = total_question\n                for metric in score_map:\n                    grouped_df.loc['总计', metric] = df[metric].sum() / total_question\n                save_group_df[f'{metric_name}_group'] = grouped_df\n                \n                print(grouped_df.to_markdown())\n\n        # save\n        output_path = Path(self.save_path) / f\"{Path(self.excel_path).stem}_score.xlsx\"\n        with pd.ExcelWriter(output_path) as writer:\n            df.to_excel(writer, sheet_name='Sheet1', index=False)\n            if len(save_group_df):\n                for metric, grouped_df in save_group_df.items():\n                    grouped_df.to_excel(writer, sheet_name=metric, index=True)\n        print(f'保存到 {output_path} 成功!')\n\n\nif __name__ == '__main__':\n    params = {\n        'excel_path': '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data/test.xlsx',\n        'save_path': '/home/gulixin/workspace/llm/bisheng/src/bisheng-langchain/experimental/rag/data',\n        'question_column': '问题',\n        'gt_column': 'GT',\n        'answer_column': 'rag_answer',\n        'query_type_column': '问题类型',\n        # 'metrics': ['answer_correctness_bisheng'],\n        'metrics': ['answer_recall_bisheng'],\n        'batch_size': 10,\n        'whether_gtsplit': False,\n    }\n    rag_score = RagScore(**params)\n    rag_score.score()\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/test/filter_qa.py",
    "content": "import os\nimport pandas as pd\n\nexcel_folder = '/home/public/rag_benchmark_v1.0/rag_qa_gen_filter_origin'\nsave_folder = '/home/public/rag_benchmark_v1.0/rag_qa_gen_filter'\nexcel_files = os.listdir(excel_folder)\n\ntotal_correct = 0\ntotal_num = 0\nfor excel_file in excel_files:\n    # if excel_file != '96_MA_IFC300_cn_100909_4000069803_R04_qa_gen.xlsx':\n    #     continue\n    if not excel_file.endswith('.xlsx'):\n        continue\n    excel_path = os.path.join(excel_folder, excel_file)\n    df = pd.read_excel(excel_path)\n    qa_info = df.to_dict('records')\n    correct_qa = []\n    for qa in qa_info:\n        if 'Unnamed: 1' in qa:\n            qes_key = 'Unnamed: 1'\n        elif '问题类型' in qa:\n            qes_key = '问题类型'\n        else:\n            raise ValueError('key not found')\n        \n        if 'Unnamed: 4' in qa:\n            ans_key = 'Unnamed: 4'\n        elif '答案类型' in qa:\n            ans_key = '答案类型'\n        else:\n            raise ValueError('key not found')\n\n        valid_qa = dict()\n        for key in qa:\n            valid_qa[key.strip()] = qa[key]\n\n        total_num += 1\n        if isinstance(qa[qes_key], str) and qa[qes_key].strip() == '正确' and isinstance(qa[ans_key], str) and qa[ans_key].strip() == '正确':\n            total_correct += 1\n            correct_qa.append(valid_qa)\n        else:\n            print(qa[qes_key], qa[ans_key])\n            print(excel_file)\n\n    df = pd.DataFrame(correct_qa)\n    df.to_excel(os.path.join(save_folder, excel_file), index=False)\n\nprint('total_correct:', total_correct)\nprint('total_num:', total_num)\n\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/test/test_smaller_chunks.py",
    "content": "import os\nimport sys\nimport uuid\nfrom typing import Any, Dict, Iterable, List, Optional\n\nimport httpx\nfrom bisheng_langchain.vectorstores.milvus import Milvus\nfrom langchain_core.documents import Document\nfrom pydantic import Field\nfrom langchain_core.retrievers import BaseRetriever\nfrom langchain_core.vectorstores import VectorStore\nfrom loguru import logger\n\nfrom langchain.callbacks.manager import CallbackManagerForRetrieverRun\nfrom langchain.embeddings import OpenAIEmbeddings\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter, TextSplitter\nfrom langchain.vectorstores.milvus import Milvus\n\nsys.path.append('../')\n\nfrom retrieval.smaller_chunks import SmallerChunksRetriever\n\nopenai_proxy = os.environ.get('OPENAI_PROXY')\nhttpx_client = httpx.Client(proxies=openai_proxy)\n\nEMBEDDING = OpenAIEmbeddings(model='text-embedding-ada-002', http_client=httpx_client)\n\n\nif __name__ == '__main__':\n    milvus_connection_args = {'host': '192.168.106.116', 'port': '19530'}\n\n    elasticsearch_url = \"http://192.168.106.116:9200\"\n    ssl_verify = {'basic_auth': (\"elastic\", \"oSGL-zVvZ5P3Tm7qkDLC\")}\n\n    ori_text = Document(\n        page_content=\"\"\"马里兰法律评论\n2017\n研讨会论文集：网络法律现状：数字时代的安全与隐私\n由马里兰法律评论在马里兰大学弗朗西斯·金·凯里法学院主办\n2017年2月10日 伍德罗·哈茨格1\n版权所有 © 2017 伍德罗·哈茨格\n信息公平实践的不足与不可或缺\n目录 引言 952\nI. 信息公平实践的不可或缺性 956\n   A. 隐私的共同语言 958\n   B. 可塑性与可分割性 961\n   C. 负责任的数据处理者的更好试金石 962\nII. 信息公平实践的不足 964\n   A. 信息公平实践的盲点 966\n      1. 我们对彼此的脆弱性 966\n      2. 我们易受操纵的性质 968\n      3. 我们对自动化决策的无助 970\n   B. 信息公平实践的带宽问题 972\nIII. 转向设计：信息公平实践作为一个良好的开端 977\n   A. 隐私的未来在市场、心智和机器中 977\n   B. 隐私法应关注设计 979\nIV. 结论\n982\"\"\"\n    )\n\n    par_spliter = RecursiveCharacterTextSplitter(chunk_size=20, chunk_overlap=0)\n    child_spliter = RecursiveCharacterTextSplitter(chunk_size=5, chunk_overlap=0)\n\n    par_collection_name = 'par_chunk'\n    child_collection_name = 'child_chunk'\n\n    par_vectorstore = Milvus(\n        embedding_function=EMBEDDING,\n        collection_name=par_collection_name,\n        connection_args=milvus_connection_args,\n        drop_old=True,\n    )\n\n    child_vectorstore = Milvus(\n        embedding_function=EMBEDDING,\n        collection_name=child_collection_name,\n        connection_args=milvus_connection_args,\n        drop_old=True,\n    )\n\n    smaller_chunk_retriever = SmallerChunksRetriever(\n        par_vectorstore=par_vectorstore,\n        child_vectorstore=child_vectorstore,\n        parent_splitter=par_spliter,\n        child_splitter=child_spliter,\n    )\n\n    smaller_chunk_retriever.add_documents([ori_text])\n    res = smaller_chunk_retriever.get_relevant_documents('隐私')\n    logger.info(res)\n"
  },
  {
    "path": "src/backend/bisheng_langchain/rag/utils.py",
    "content": "# This module is used to import any langchain class by name.\n\nimport importlib\nfrom typing import Any, Type\n\nfrom langchain.agents import Agent\nfrom langchain.base_language import BaseLanguageModel\nfrom langchain.chains.base import Chain\nfrom langchain.chat_models.base import BaseChatModel\nfrom langchain.prompts import PromptTemplate\nfrom langchain.tools import BaseTool\n\n\ndef import_module(module_path: str) -> Any:\n    \"\"\"Import module from module path\"\"\"\n    if 'from' not in module_path:\n        # Import the module using the module path\n        return importlib.import_module(module_path)\n    # Split the module path into its components\n    _, module_path, _, object_name = module_path.split()\n\n    # Import the module using the module path\n    module = importlib.import_module(module_path)\n\n    return getattr(module, object_name)\n\n\ndef import_class(class_path: str) -> Any:\n    \"\"\"Import class from class path\"\"\"\n    module_path, class_name = class_path.rsplit('.', 1)\n    module = import_module(module_path)\n    return getattr(module, class_name)\n\n\ndef import_by_type(_type: str, name: str) -> Any:\n    from bisheng_langchain import chat_models\n    \"\"\"Import class by type and name\"\"\"\n    if _type is None:\n        raise ValueError(f'Type cannot be None. Check if {name} is in the config file.')\n    func_dict = {\n        'agents': import_agent,\n        'prompts': import_prompt,\n        'llms': {\n            'llm': import_llm,\n            'chat': import_chat_llm,\n            'contribute': import_chain_contribute_llm,\n            'chatopenai': import_chat_openai,\n        },\n        'tools': import_tool,\n        'chains': import_chain,\n        'toolkits': import_toolkit,\n        'memory': import_memory,\n        'embeddings': {\n            'openaiembeddings': import_openai_embeddings,\n            'embeddings': import_embedding,\n        },\n        'vectorstores': import_vectorstore,\n        'documentloaders': import_documentloader,\n        'textsplitters': import_textsplitter,\n        'utilities': import_utility,\n        'output_parsers': import_output_parser,\n        'retrievers': import_retriever,\n        'autogenRoles': import_autogenRoles,\n        'inputOutput': import_inputoutput,\n    }\n    if _type == 'llms':\n        if name.lower() == 'chatopenai':\n            key = 'chatopenai'\n        else:\n            key = 'contribute' if name in chat_models.__all__ else 'chat' if 'chat' in name.lower(\n            ) else 'llm'\n        loaded_func = func_dict[_type][key]  # type: ignore\n    elif _type == 'embeddings':\n        if name.lower() == 'openaiembeddings':\n            key = 'openaiembeddings'\n        else:\n            key = 'embeddings'\n        loaded_func = func_dict[_type][key]  # type: ignore\n    else:\n        loaded_func = func_dict[_type]\n\n    return loaded_func(name)\n\n\ndef import_inputoutput(input_output: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    return import_module(f'from bisheng_langchain.input_output import {input_output}')\n\n\ndef import_output_parser(output_parser: str) -> Any:\n    \"\"\"Import output parser from output parser name\"\"\"\n    return import_module(f'from langchain.output_parsers import {output_parser}')\n\n\ndef import_chat_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    return import_class(f'langchain.chat_models.{llm}')\n\n\ndef import_chain_contribute_llm(llm: str) -> BaseChatModel:\n    \"\"\"Import chat llm from llm name\"\"\"\n    return import_class(f'bisheng_langchain.chat_models.{llm}')\n\n\ndef import_retriever(retriever: str) -> Any:\n    \"\"\"Import retriever from retriever name\"\"\"\n    return import_module(f'from langchain.retrievers import {retriever}')\n\n\ndef import_autogenRoles(autogen: str) -> Any:\n    return import_module(f'from bisheng_langchain.autogen_role import {autogen}')\n\n\ndef import_memory(memory: str) -> Any:\n    \"\"\"Import memory from memory name\"\"\"\n    return import_module(f'from langchain.memory import {memory}')\n\n\ndef import_prompt(prompt: str) -> Type[PromptTemplate]:\n    \"\"\"Import prompt from prompt name\"\"\"\n    if prompt == 'ZeroShotPrompt':\n        return import_class('langchain.prompts.PromptTemplate')\n    return import_class(f'langchain.prompts.{prompt}')\n\n\ndef import_toolkit(toolkit: str) -> Any:\n    \"\"\"Import toolkit from toolkit name\"\"\"\n    return import_module(f'from langchain.agents.agent_toolkits import {toolkit}')\n\n\ndef import_agent(agent: str) -> Agent:\n    \"\"\"Import agent from agent name\"\"\"\n    # check for custom agent\n    from bisheng_langchain import agents\n    if agent in agents.__all__:\n        return import_class(f'bisheng_langchain.agents.{agent}')\n    return import_class(f'langchain.agents.{agent}')\n\n\ndef import_llm(llm: str) -> BaseLanguageModel:\n    \"\"\"Import llm from llm name\"\"\"\n    return import_class(f'langchain.llms.{llm}')\n\n\ndef import_chat_openai(llm: str) -> BaseLanguageModel:\n    \"\"\"Import llm from llm name\"\"\"\n    return import_class(f'langchain_openai.{llm}')\n\n\ndef import_tool(tool: str) -> BaseTool:\n    \"\"\"Import tool from tool name\"\"\"\n    return import_class(f'langchain.tools.{tool}')\n\n\ndef import_chain(chain: str) -> Type[Chain]:\n    \"\"\"Import chain from chain name\"\"\"\n    from bisheng_langchain import chains\n    if chain in chains.__all__:\n        return import_class(f'bisheng_langchain.chains.{chain}')\n    return import_class(f'langchain.chains.{chain}')\n\n\ndef import_embedding(embedding: str) -> Any:\n    \"\"\"Import embedding from embedding name\"\"\"\n    from bisheng_langchain import embeddings\n    if embedding in embeddings.__all__:\n        return import_class(f'bisheng_langchain.embeddings.{embedding}')\n    return import_class(f'langchain.embeddings.{embedding}')\n\n\ndef import_openai_embeddings(embedding: str) -> Any:\n    \"\"\"Import embedding from embedding name\"\"\"\n    return import_class(f'langchain_openai.{embedding}')\n\n\ndef import_vectorstore(vectorstore: str) -> Any:\n    \"\"\"Import vectorstore from vectorstore name\"\"\"\n    from bisheng_langchain import vectorstores\n    if vectorstore in vectorstores.__all__:\n        return import_class(f'bisheng_langchain.vectorstores.{vectorstore}')\n    return import_class(f'langchain.vectorstores.{vectorstore}')\n\n\ndef import_documentloader(documentloader: str) -> Any:\n    \"\"\"Import documentloader from documentloader name\"\"\"\n    from bisheng_langchain import document_loaders\n    if documentloader in document_loaders.__all__:\n        return import_class(f'bisheng_langchain.document_loaders.{documentloader}')\n    return import_class(f'langchain.document_loaders.{documentloader}')\n\n\ndef import_textsplitter(textsplitter: str) -> Any:\n    \"\"\"Import textsplitter from textsplitter name\"\"\"\n    from bisheng_langchain import text_splitter\n    if textsplitter in dir(text_splitter):\n        return import_class(f'bisheng_langchain.text_splitter.{textsplitter}')\n    return import_class(f'langchain.text_splitter.{textsplitter}')\n\n\ndef import_utility(utility: str) -> Any:\n    \"\"\"Import utility from utility name\"\"\"\n    if utility == 'SQLDatabase':\n        return import_class(f'langchain.sql_database.{utility}')\n    return import_class(f'langchain.utilities.{utility}')"
  },
  {
    "path": "src/backend/bisheng_langchain/retrievers/__init__.py",
    "content": "from bisheng_langchain.retrievers.mix_es_vector import MixEsVectorRetriever\nfrom bisheng_langchain.retrievers.ensemble import EnsembleRetriever\n\n__all__ = [\n    \"MixEsVectorRetriever\",\n    \"EnsembleRetriever\"\n]"
  },
  {
    "path": "src/backend/bisheng_langchain/retrievers/ensemble.py",
    "content": "\"\"\"\nEnsemble retriever that ensemble the results of \nmultiple retrievers by using weighted  Reciprocal Rank Fusion\n\"\"\"\n\nfrom typing import Any, Dict, List\n\nfrom langchain_core.documents import Document\nfrom langchain_core.retrievers import BaseRetriever\n\nfrom langchain.callbacks.manager import (\n    AsyncCallbackManagerForRetrieverRun,\n    CallbackManagerForRetrieverRun,\n)\nfrom pydantic import model_validator\n\n\nclass EnsembleRetriever(BaseRetriever):\n    \"\"\"Retriever that ensembles the multiple retrievers.\n\n    It uses a rank fusion.\n\n    Args:\n        retrievers: A list of retrievers to ensemble.\n        weights: A list of weights corresponding to the retrievers. Defaults to equal\n            weighting for all retrievers.\n        c: A constant added to the rank, controlling the balance between the importance\n            of high-ranked items and the consideration given to lower-ranked items.\n            Default is 60.\n    \"\"\"\n\n    retrievers: List[BaseRetriever]\n    weights: List[float]\n    c: int = 60\n\n    @model_validator(mode='before')\n    @classmethod\n    def set_weights(cls, values: Dict[str, Any]) -> Dict[str, Any]:\n        if not values.get(\"weights\"):\n            n_retrievers = len(values[\"retrievers\"])\n            values[\"weights\"] = [1 / n_retrievers] * n_retrievers\n        return values\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        *,\n        run_manager: CallbackManagerForRetrieverRun,\n        **kwagrs: Any,\n    ) -> List[Document]:\n        \"\"\"\n        Get the relevant documents for a given query.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of reranked documents.\n        \"\"\"\n\n        # Get fused result of the retrievers.\n        fused_documents = self.rank_fusion(query, run_manager, **kwagrs)\n\n        return fused_documents\n\n    async def _aget_relevant_documents(\n        self,\n        query: str,\n        *,\n        run_manager: AsyncCallbackManagerForRetrieverRun,\n        **kwagrs: Any,\n    ) -> List[Document]:\n        \"\"\"\n        Asynchronously get the relevant documents for a given query.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of reranked documents.\n        \"\"\"\n\n        # Get fused result of the retrievers.\n        fused_documents = await self.arank_fusion(query, run_manager, **kwagrs)\n\n        return fused_documents\n\n    def rank_fusion(\n        self,\n        query: str,\n        run_manager: CallbackManagerForRetrieverRun,\n        **kwagrs: Any,\n    ) -> List[Document]:\n        \"\"\"\n        Retrieve the results of the retrievers and use rank_fusion_func to get\n        the final result.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of reranked documents.\n        \"\"\"\n\n        # Get the results of all retrievers.\n        retriever_docs = [\n            retriever.get_relevant_documents(\n                query,\n                callbacks=run_manager.get_child(tag=f\"retriever_{i+1}\"),\n                **kwagrs,\n            )\n            for i, retriever in enumerate(self.retrievers)\n        ]\n\n        # apply rank fusion\n        fused_documents = self.weighted_reciprocal_rank(retriever_docs)\n\n        return fused_documents\n\n    async def arank_fusion(\n        self,\n        query: str,\n        run_manager: AsyncCallbackManagerForRetrieverRun,\n        **kwagrs: Any,\n    ) -> List[Document]:\n        \"\"\"\n        Asynchronously retrieve the results of the retrievers\n        and use rank_fusion_func to get the final result.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of reranked documents.\n        \"\"\"\n\n        # Get the results of all retrievers.\n        retriever_docs = [\n            await retriever.aget_relevant_documents(\n                query,\n                callbacks=run_manager.get_child(tag=f\"retriever_{i+1}\"),\n                **kwagrs,\n            )\n            for i, retriever in enumerate(self.retrievers)\n        ]\n\n        # apply rank fusion\n        fused_documents = self.weighted_reciprocal_rank(retriever_docs)\n\n        return fused_documents\n\n    def weighted_reciprocal_rank(self, doc_lists: List[List[Document]]) -> List[Document]:\n        \"\"\"\n        Perform weighted Reciprocal Rank Fusion on multiple rank lists.\n        You can find more details about RRF here:\n        https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf\n\n        Args:\n            doc_lists: A list of rank lists, where each rank list contains unique items.\n\n        Returns:\n            list: The final aggregated list of items sorted by their weighted RRF\n                    scores in descending order.\n        \"\"\"\n        if len(doc_lists) != len(self.weights):\n            raise ValueError(\"Number of rank lists must be equal to the number of weights.\")\n\n        # Create a union of all unique documents in the input doc_lists\n        all_documents = set()\n        for doc_list in doc_lists:\n            for doc in doc_list:\n                all_documents.add(doc.page_content)\n\n        # Initialize the RRF score dictionary for each document\n        rrf_score_dic = {doc: 0.0 for doc in all_documents}\n\n        # Calculate RRF scores for each document\n        for doc_list, weight in zip(doc_lists, self.weights):\n            for rank, doc in enumerate(doc_list, start=1):\n                rrf_score = weight * (1 / (rank + self.c))\n                rrf_score_dic[doc.page_content] += rrf_score\n\n        # Sort documents by their RRF scores in descending order\n        sorted_documents = sorted(rrf_score_dic.keys(), key=lambda x: rrf_score_dic[x], reverse=True)\n\n        # Map the sorted page_content back to the original document objects\n        page_content_to_doc_map = {doc.page_content: doc for doc_list in doc_lists for doc in doc_list}\n        sorted_docs = [page_content_to_doc_map[page_content] for page_content in sorted_documents]\n\n        return sorted_docs\n"
  },
  {
    "path": "src/backend/bisheng_langchain/retrievers/mix_es_vector.py",
    "content": "from typing import List\n\nfrom langchain.callbacks.manager import (AsyncCallbackManagerForRetrieverRun,\n                                         CallbackManagerForRetrieverRun)\nfrom langchain.schema import BaseRetriever, Document\n\n\nclass MixEsVectorRetriever(BaseRetriever):\n    \"\"\"\n    This class ensemble the results of es retriever and vector retriever.\n\n    Args:\n        retrievers: A list of retrievers to ensemble.\n        weights: A list of weights corresponding to the retrievers. Defaults to equal\n            weighting for all retrievers.\n        c: A constant added to the rank, controlling the balance between the importance\n            of high-ranked items and the consideration given to lower-ranked items.\n            Default is 60.\n    \"\"\"\n\n    vector_retriever: BaseRetriever\n    keyword_retriever: BaseRetriever\n    combine_strategy: str = 'keyword_front'  # \"keyword_front, vector_front, mix\"\n\n    def _get_relevant_documents(\n        self,\n        query: str,\n        *,\n        run_manager: CallbackManagerForRetrieverRun,\n    ) -> List[Document]:\n        \"\"\"\n        Get the relevant documents for a given query.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of documents.\n        \"\"\"\n\n        # Get fused result of the retrievers.\n        vector_docs = self.vector_retriever.get_relevant_documents(\n            query, callbacks=run_manager.get_child())\n        keyword_docs = self.keyword_retriever.get_relevant_documents(\n            query, callbacks=run_manager.get_child())\n\n        if self.combine_strategy == 'keyword_front':\n            return keyword_docs + vector_docs\n        elif self.combine_strategy == 'vector_front':\n            return vector_docs + keyword_docs\n        elif self.combine_strategy == 'mix':\n            combine_docs_dict = {}\n            min_len = min(len(keyword_docs), len(vector_docs))\n            for i in range(min_len):\n                combine_docs_dict[keyword_docs[i].page_content] = keyword_docs[i]\n                combine_docs_dict[vector_docs[i].page_content] = vector_docs[i]\n            for doc in keyword_docs[min_len:]:\n                combine_docs_dict[doc.page_content] = doc\n            for doc in vector_docs[min_len:]:\n                combine_docs_dict[doc.page_content] = doc\n\n            # 将字典的值转换为列表\n            combine_docs = list(combine_docs_dict.values())\n            return combine_docs\n        else:\n            raise ValueError(f'Expected combine_strategy to be one of '\n                             f'(keyword_front, vector_front, mix),'\n                             f'instead found {self.combine_strategy}')\n\n    async def _aget_relevant_documents(\n        self,\n        query: str,\n        *,\n        run_manager: AsyncCallbackManagerForRetrieverRun,\n    ) -> List[Document]:\n        \"\"\"\n        Asynchronously get the relevant documents for a given query.\n\n        Args:\n            query: The query to search for.\n\n        Returns:\n            A list of reranked documents.\n        \"\"\"\n\n        # Get fused result of the retrievers.\n        vector_docs = await self.vector_retriever.aget_relevant_documents(\n            query, callbacks=run_manager.get_child())\n        keyword_docs = await self.keyword_retriever.aget_relevant_documents(\n            query, callbacks=run_manager.get_child())\n        if self.combine_strategy == 'keyword_front':\n            return keyword_docs + vector_docs\n        elif self.combine_strategy == 'vector_front':\n            return vector_docs + keyword_docs\n        elif self.combine_strategy == 'mix':\n            combine_docs_dict = {}\n            min_len = min(len(keyword_docs), len(vector_docs))\n            for i in range(min_len):\n                combine_docs_dict[keyword_docs[i].page_content] = keyword_docs[i]\n                combine_docs_dict[vector_docs[i].page_content] = vector_docs[i]\n            for doc in keyword_docs[min_len:]:\n                combine_docs_dict[doc.page_content] = doc\n            for doc in vector_docs[min_len:]:\n                combine_docs_dict[doc.page_content] = doc\n\n            # 将字典的值转换为列表\n            combine_docs = list(combine_docs_dict.values())\n            return combine_docs\n        else:\n            raise ValueError(f'Expected combine_strategy to be one of '\n                             f'(keyword_front, vector_front, mix),'\n                             f'instead found {self.combine_strategy}')\n"
  },
  {
    "path": "src/backend/bisheng_langchain/sql/__init__.py",
    "content": "from bisheng_langchain.sql.base import SQLDatabaseChain\n\n__all__ = ['SQLDatabaseChain']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/sql/base.py",
    "content": "\"\"\"Chain for interacting with SQL Database.\"\"\"\nfrom __future__ import annotations\n\nfrom typing import Any, Dict, List, Optional\n\nfrom langchain.callbacks.manager import AsyncCallbackManagerForChainRun, CallbackManagerForChainRun\nfrom langchain.chains.llm import LLMChain\nfrom langchain.prompts.prompt import PromptTemplate\nfrom langchain_community.tools.sql_database.prompt import QUERY_CHECKER\nfrom langchain_experimental.sql import SQLDatabaseChain as SQLDatabaseChainExperimental\n\nINTERMEDIATE_STEPS_KEY = 'intermediate_steps'\n\n\nclass SQLDatabaseChain(SQLDatabaseChainExperimental):\n    \"\"\"Chain for interacting with SQL Database.\n\n    Example:\n        .. code-block:: python\n\n            from langchain_experimental.sql import SQLDatabaseChain\n            from langchain.llms import OpenAI, SQLDatabase\n            db = SQLDatabase(...)\n            db_chain = SQLDatabaseChain.from_llm(OpenAI(), db)\n\n    *Security note*: Make sure that the database connection uses credentials\n        that are narrowly-scoped to only include the permissions this chain needs.\n        Failure to do so may result in data corruption or loss, since this chain may\n        attempt commands like `DROP TABLE` or `INSERT` if appropriately prompted.\n        The best way to guard against such negative outcomes is to (as appropriate)\n        limit the permissions granted to the credentials used with this chain.\n        This issue shows an example negative outcome if these steps are not taken:\n        https://github.com/langchain-ai/langchain/issues/5923\n    \"\"\"\n\n    async def _acall(\n        self,\n        inputs: Dict[str, Any],\n        run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n    ) -> Dict[str, Any]:\n        _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager()\n        input_text = f'{inputs[self.input_key]}\\nSQLQuery:'\n        await _run_manager.on_text(input_text, verbose=self.verbose)\n        # If not present, then defaults to None which is all tables.\n        table_names_to_use = inputs.get('table_names_to_use')\n        table_info = self.database.get_table_info(table_names=table_names_to_use)\n        llm_inputs = {\n            'input': input_text,\n            'top_k': str(self.top_k),\n            'dialect': self.database.dialect,\n            'table_info': table_info,\n            'stop': ['\\nSQLResult:'],\n        }\n        if self.memory is not None:\n            for k in self.memory.memory_variables:\n                llm_inputs[k] = inputs[k]\n        intermediate_steps: List = []\n        try:\n            intermediate_steps.append(llm_inputs.copy())  # input: sql generation\n            sql_cmd = await self.llm_chain.apredict(\n                callbacks=_run_manager.get_child(),\n                **llm_inputs,\n            )\n            sql_cmd = sql_cmd.strip()\n            if self.return_sql:\n                return {self.output_key: sql_cmd}\n            if not self.use_query_checker:\n                await _run_manager.on_text(sql_cmd, color='green', verbose=self.verbose)\n                intermediate_steps.append(sql_cmd)  # output: sql generation (no checker)\n                intermediate_steps.append({'sql_cmd': sql_cmd})  # input: sql exec\n                result = self.database.run(sql_cmd)\n                intermediate_steps.append(str(result))  # output: sql exec\n            else:\n                query_checker_prompt = self.query_checker_prompt or PromptTemplate(\n                    template=QUERY_CHECKER, input_variables=['query', 'dialect'])\n                query_checker_chain = LLMChain(llm=self.llm_chain.llm, prompt=query_checker_prompt)\n                query_checker_inputs = {\n                    'query': sql_cmd,\n                    'dialect': self.database.dialect,\n                }\n                checked_sql_command: str = await query_checker_chain.apredict(\n                    callbacks=_run_manager.get_child(), **query_checker_inputs)\n                checked_sql_command = checked_sql_command.strip()\n                intermediate_steps.append(checked_sql_command)  # output: sql generation (checker)\n                await _run_manager.on_text(checked_sql_command,\n                                           color='green',\n                                           verbose=self.verbose)\n                intermediate_steps.append({'sql_cmd': checked_sql_command})  # input: sql exec\n                result = self.database.run(checked_sql_command)\n                intermediate_steps.append(str(result))  # output: sql exec\n                sql_cmd = checked_sql_command\n\n            await _run_manager.on_text('\\nSQLResult: ', verbose=self.verbose)\n            await _run_manager.on_text(result, color='yellow', verbose=self.verbose)\n            # If return direct, we just set the final result equal to\n            # the result of the sql query result, otherwise try to get a human readable\n            # final answer\n            if self.return_direct:\n                final_result = result\n            else:\n                await _run_manager.on_text('\\nAnswer:', verbose=self.verbose)\n                input_text += f'{sql_cmd}\\nSQLResult: {result}\\nAnswer:'\n                llm_inputs['input'] = input_text\n                intermediate_steps.append(llm_inputs.copy())  # input: final answer\n                final_result = await self.llm_chain.apredict(\n                    callbacks=_run_manager.get_child(),\n                    **llm_inputs,\n                )\n                final_result = final_result.strip()\n                intermediate_steps.append(final_result)  # output: final answer\n                await _run_manager.on_text(final_result, color='green', verbose=self.verbose)\n            chain_result: Dict[str, Any] = {self.output_key: final_result}\n            if self.return_intermediate_steps:\n                chain_result[INTERMEDIATE_STEPS_KEY] = intermediate_steps\n            return chain_result\n        except Exception as exc:\n            # Append intermediate steps to exception, to aid in logging and later\n            # improvement of few shot prompt seeds\n            exc.intermediate_steps = intermediate_steps  # type: ignore\n            raise exc\n"
  },
  {
    "path": "src/backend/bisheng_langchain/text_splitter.py",
    "content": "# flake8: noqa\n\nfrom __future__ import annotations\n\nimport bisect\nimport copy\nimport logging\nimport re\nfrom abc import ABC, abstractmethod\nfrom collections import Counter\nfrom dataclasses import dataclass\nfrom enum import Enum\nfrom typing import (AbstractSet, Any, Callable, Collection, Dict, Iterable, List, Literal, Optional,\n                    Sequence, Tuple, Type, TypedDict, TypeVar, Union, cast)\n\nfrom langchain.docstore.document import Document\nfrom langchain.schema import BaseDocumentTransformer\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\n\nlogger = logging.getLogger(__name__)\n\n\ndef _split_text_with_regex(\n        text: str, separator: str, keep_separator: bool, separator_rule: str\n) -> List[str]:\n    # Now that we have the separator, split the text\n    if separator:\n        if keep_separator:\n            # The parentheses in the pattern keep the delimiters in the result.\n            _splits = re.split(f'({separator})', text)\n\n            if separator_rule == \"before\":\n                splits = [_splits[i] + _splits[i + 1] for i in range(1, len(_splits), 2)]\n                if len(_splits) % 2 == 0:\n                    splits += _splits[-1:]\n                splits = [_splits[0]] + splits\n            else:\n                splits = [_splits[i-1] + _splits[i] for i in range(1, len(_splits), 2)]\n                splits = splits + [_splits[-1]]\n        else:\n            splits = re.split(separator, text)\n    else:\n        splits = list(text)\n    return [s for s in splits if s != '']\n\n\nclass IntervalSearch(object):\n    def __init__(self, inters):\n        arrs = []\n        for inter in inters:\n            arrs.extend(inter)\n\n        self.arrs = arrs\n        self.n = len(self.arrs)\n\n    def _norm_bound(self, ind, v):\n        # [1,3,5,7,9,12]\n        # ind=4,8 is empty interval\n        # ind=15 is exceed interval\n\n        new_ind = None\n        if ind >= self.n:\n            new_ind = self.n - 1\n        elif ind <= 0:\n            new_ind = 0\n        elif self.arrs[ind] == v:\n            new_ind = ind\n        elif ind % 2 == 0:\n            if v > self.arrs[ind - 1] and v < self.arrs[ind]:\n                new_ind = ind - 1\n            else:\n                new_ind = ind\n        else:\n            new_ind = ind\n\n        return new_ind\n\n    def find(self, inter) -> List[int, int]:\n        low_bound1 = bisect.bisect_left(self.arrs, inter[0])\n        low_bound2 = bisect.bisect_left(self.arrs, inter[1])\n        lb1 = self._norm_bound(low_bound1, inter[0])\n        lb2 = self._norm_bound(low_bound2, inter[1])\n        return [lb1 // 2, lb2 // 2]\n\n\nclass ElemCharacterTextSplitter(RecursiveCharacterTextSplitter):\n    \"\"\"\n    todo\n    \"\"\"\n\n    def __init__(\n            self,\n            separators: Optional[List[str]] = None,\n            separator_rule: Optional[List[str]] = None,\n            is_separator_regex: bool = False,\n            keep_separator: bool = True,\n            **kwargs: Any,\n    ) -> None:\n        \"\"\"Create a new TextSplitter.\"\"\"\n        super().__init__(\n            separators=separators,\n            keep_separator=keep_separator,\n            **kwargs\n        )\n        self._separators = separators or ['\\n\\n', '\\n', ' ', '']\n        self._separator_rule = separator_rule or ['after' for _ in range(4)]\n        self.separator_rule = {one: self._separator_rule[index] for index, one in enumerate(separators)}\n        self._is_separator_regex = is_separator_regex\n        self._chunk_overlap = kwargs.get('chunk_overlap', 0)\n\n    def split_documents(self, documents: Iterable[Document]) -> List[Document]:\n        texts, metadatas = [], []\n        for doc in documents:\n            texts.append(doc.page_content)\n            metadatas.append(doc.metadata)\n\n        return self.create_documents(texts, metadatas=metadatas)\n\n    def _split_text(self, text: str, separators: List[str]) -> List[str]:\n        \"\"\"Split incoming text and return chunks.\"\"\"\n        final_chunks = []\n        # Get appropriate separator to use\n        separator = separators[-1]\n        separator_rule = 'after'\n        new_separators = []\n        for i, _s in enumerate(separators):\n            _separator = _s if self._is_separator_regex else re.escape(_s)\n            separator_rule = self.separator_rule[_s]\n            if _s == '':\n                separator = _s\n                break\n            if re.search(_separator, text):\n                separator = _s\n                new_separators = separators[i + 1:]\n                break\n\n        _separator = separator if self._is_separator_regex else re.escape(separator)\n        splits = _split_text_with_regex(text, _separator, self._keep_separator, separator_rule)\n\n        # Now go merging things, recursively splitting longer texts.\n        _good_splits = []\n        _separator = '' if self._keep_separator else separator\n        for s in splits:\n            if self._length_function(s) < self._chunk_size:\n                _good_splits.append(s)\n            else:\n                if _good_splits:\n                    merged_text = self._merge_splits(_good_splits, _separator)\n                    final_chunks.extend(merged_text)\n                    _good_splits = []\n                if not new_separators:\n                    final_chunks.append(s)\n                else:\n                    other_info = self._split_text(s, new_separators)\n                    final_chunks.extend(other_info)\n        if _good_splits:\n            merged_text = self._merge_splits(_good_splits, _separator)\n            final_chunks.extend(merged_text)\n        return final_chunks\n\n    def split_text(self, text: str) -> List[str]:\n        return self._split_text(text, self._separators)\n\n    def create_documents(\n            self, texts: List[str], metadatas: Optional[List[dict]] = None\n    ) -> List[Document]:\n        \"\"\"Create documents from a list of texts.\"\"\"\n        documents = []\n        for i, text in enumerate(texts):\n            index = -1\n            indexes = metadatas[i].get('indexes', [])\n            pages = metadatas[i].get('pages', [])\n            types = metadatas[i].get('types', [])\n            bboxes = metadatas[i].get('bboxes', [])\n            searcher = IntervalSearch(indexes)\n            split_texts = self.split_text(text)\n            for chunk in split_texts:\n                new_metadata = copy.deepcopy(metadatas[i])\n                if indexes and bboxes:\n                    index = text.find(chunk, index + 1)\n                    inter0 = [index, index + len(chunk) - 1]\n                    norm_inter = searcher.find(inter0)\n                    new_metadata['chunk_bboxes'] = []\n                    for j in range(norm_inter[0], norm_inter[1] + 1):\n                        new_metadata['chunk_bboxes'].append(\n                            {'page': pages[j], 'bbox': bboxes[j]})\n\n                    c = Counter([types[j] for j in norm_inter])\n                    chunk_type = c.most_common(1)[0][0]\n                    new_metadata['chunk_type'] = chunk_type\n                    new_metadata['source'] = metadatas[i].get('source', '')\n\n                # for chunk in split_texts:\n                #     new_metadata = {}\n                #     new_metadata['chunk_type'] = metadata.get('chunk_type', 'paragraph')\n                #     new_metadata['bboxes'] = metadata.get('bboxes', [])\n                #     new_metadata['source'] = metadata.get('source', '')\n                #     # chunk's start index in text\n                #     index = text.find(chunk, index + 1)\n                #     new_metadata['start'] = metadata.get('start', 0) + index\n                #     new_metadata['end'] = metadata.get('start', 0) + index + len(chunk) - 1\n\n                #     if 'page' in metadata:\n                #         new_metadata['page'] = metadata['page'][new_metadata['start']:new_metadata['end']+1]\n                #     if 'token_to_bbox' in metadata:\n                #         new_metadata['token_to_bbox'] = metadata['token_to_bbox'][new_metadata['start']:new_metadata['end']+1]\n\n                #     if 'page' in new_metadata and 'token_to_bbox' in new_metadata:\n                #         box_no_duplicates = set()\n                #         for index in range(len(new_metadata['page'])):\n                #             box_no_duplicates.add(\n                #                 (new_metadata['page'][index], new_metadata['token_to_bbox'][index]))\n\n                #         new_metadata['chunk_bboxes'] = []\n                #         for elem in box_no_duplicates:\n                #             new_metadata['chunk_bboxes'].append(\n                #                 {'page': elem[0], 'bbox': new_metadata['bboxes'][elem[1]]})\n                new_doc = Document(page_content=chunk, metadata=new_metadata)\n                prev_document = new_doc\n                documents.append(new_doc)\n        return documents\n"
  },
  {
    "path": "src/backend/bisheng_langchain/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/bisheng_langchain/utils/azure_dalle_image_generator.py",
    "content": "from typing import Callable, Dict, Optional, Union\n\nimport openai\nfrom langchain_community.utilities.dalle_image_generator import DallEAPIWrapper\nfrom pydantic import Field, SecretStr, model_validator\n\n\nclass AzureDallEWrapper(DallEAPIWrapper):\n    \"\"\"`Azure OpenAI` Embeddings API.\n\n    To use, you should have the\n    environment variable ``AZURE_OPENAI_API_KEY`` set with your API key or pass it\n    as a named parameter to the constructor.\n\n    Example:\n        .. code-block:: python\n\n            from langchain_openai import AzureOpenAIEmbeddings\n\n            openai = AzureOpenAIEmbeddings(model=\"text-embedding-3-large\")\n    \"\"\"\n\n    azure_endpoint: Union[str, None] = None\n    \"\"\"Your Azure endpoint, including the resource.\n\n        Automatically inferred from env var `AZURE_OPENAI_ENDPOINT` if not provided.\n\n        Example: `https://example-resource.azure.openai.com/`\n    \"\"\"\n    deployment: Optional[str] = Field(default=None, alias='azure_deployment')\n    \"\"\"A model deployment.\n\n        If given sets the base client URL to include `/deployments/{azure_deployment}`.\n        Note: this means you won't be able to use non-deployment endpoints.\n    \"\"\"\n    openai_api_key: Optional[SecretStr] = Field(default=None, alias='api_key')\n    \"\"\"Automatically inferred from env var `AZURE_OPENAI_API_KEY` if not provided.\"\"\"\n    azure_ad_token: Optional[SecretStr] = None\n    \"\"\"Your Azure Active Directory token.\n\n        Automatically inferred from env var `AZURE_OPENAI_AD_TOKEN` if not provided.\n\n        For more:\n        https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id.\n    \"\"\"\n    azure_ad_token_provider: Union[Callable[[], str], None] = None\n    \"\"\"A function that returns an Azure Active Directory token.\n\n        Will be invoked on every request.\n    \"\"\"\n    openai_api_version: Optional[str] = Field(default=None, alias='api_version')\n    \"\"\"Automatically inferred from env var `OPENAI_API_VERSION` if not provided.\"\"\"\n    validate_base_url: bool = True\n    chunk_size: int = 2048\n    \"\"\"Maximum number of texts to embed in each batch\"\"\"\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_environment(cls, values: Dict) -> Dict:\n        \"\"\"Validate that api key and python package exists in environment.\"\"\"\n        client_params = values.copy()\n        if not values.get('client'):\n            values['client'] = openai.AzureOpenAI(**client_params).images\n        if not values.get('async_client'):\n            values['async_client'] = openai.AsyncAzureOpenAI(**client_params).images\n        return values\n\n    @property\n    def _llm_type(self) -> str:\n        return 'azure-openai-chat'\n"
  },
  {
    "path": "src/backend/bisheng_langchain/utils/openapi.py",
    "content": "import json\nfrom typing import Any\n\n\ndef convert_data_type_no_error(v: Any, data_type: Any) -> Any:\n    try:\n        return data_type(v)\n    except Exception as e:\n        return v\n\n\ndef convert_openapi_field_value(v: Any, field_type: str) -> Any:\n    \"\"\" Convert field value based on OpenAPI schema type.\"\"\"\n    v_type = type(v)\n    if field_type == 'number' and v_type != float:\n        return convert_data_type_no_error(v, float)\n    elif field_type == 'integer' and v_type != int:\n        return convert_data_type_no_error(v, int)\n    elif field_type == 'boolean' and v_type != bool:\n        return str(v).strip().lower() == 'true'\n    elif field_type == 'string' and v_type != str:\n        return convert_data_type_no_error(v, str)\n    elif field_type == 'array' and v_type != list:\n        return convert_data_type_no_error(v, json.loads)\n    elif field_type in ['object', 'dict'] and v_type != dict:\n        return convert_data_type_no_error(v, json.loads)\n    return v\n"
  },
  {
    "path": "src/backend/bisheng_langchain/utils/requests.py",
    "content": "\"\"\"Lightweight wrapper around requests library, with async support.\"\"\"\nfrom contextlib import asynccontextmanager\nfrom typing import Any, AsyncGenerator, Dict, Optional, Tuple, Union, List\n\nimport aiohttp\nimport requests\nfrom loguru import logger\nfrom pydantic import ConfigDict, BaseModel\n\n\nclass Requests(BaseModel):\n    \"\"\"Wrapper around requests to handle auth and async.\n\n    The main purpose of this wrapper is to handle authentication (by saving\n    headers) and enable easy async methods on the same base object.\n    \"\"\"\n\n    headers: Optional[Union[Dict[str, str], List[str]]] = None\n    proxy: Optional[str] = None\n    aiosession: Optional[aiohttp.ClientSession] = None\n    auth: Optional[Any] = None\n    request_timeout: Union[float, Tuple[float, float]] = 120\n    model_config = ConfigDict(extra=\"forbid\", arbitrary_types_allowed=True)\n\n    def get(self, url: str, **kwargs: Any) -> requests.Response:\n        \"\"\"GET the URL and return the text.\"\"\"\n        return requests.get(url,\n                            headers=self.headers,\n                            auth=self.auth,\n                            timeout=self.request_timeout,\n                            proxies=None if not self.proxy else {'http': self.proxy, 'https': self.proxy},\n                            **kwargs)\n\n    def post(self, url: str, json: Dict[str, Any], **kwargs: Any) -> requests.Response:\n        \"\"\"POST to the URL and return the text.\"\"\"\n        return requests.post(url,\n                             json=json,\n                             headers=self.headers,\n                             auth=self.auth,\n                             timeout=self.request_timeout,\n                             proxies=None if not self.proxy else {'http': self.proxy, 'https': self.proxy},\n                             **kwargs)\n\n    def patch(self, url: str, json: Dict[str, Any], **kwargs: Any) -> requests.Response:\n        \"\"\"PATCH the URL and return the text.\"\"\"\n        return requests.patch(url,\n                              json=json,\n                              headers=self.headers,\n                              auth=self.auth,\n                              timeout=self.request_timeout,\n                              proxies=None if not self.proxy else {'http': self.proxy, 'https': self.proxy},\n                              **kwargs)\n\n    def put(self, url: str, json: Dict[str, Any], **kwargs: Any) -> requests.Response:\n        \"\"\"PUT the URL and return the text.\"\"\"\n        return requests.put(url,\n                            json=json,\n                            headers=self.headers,\n                            auth=self.auth,\n                            timeout=self.request_timeout,\n                            proxies=None if not self.proxy else {'http': self.proxy, 'https': self.proxy},\n                            **kwargs)\n\n    def delete(self, url: str, **kwargs: Any) -> requests.Response:\n        \"\"\"DELETE the URL and return the text.\"\"\"\n        return requests.delete(url,\n                               headers=self.headers,\n                               auth=self.auth,\n                               timeout=self.request_timeout,\n                               proxies=None if not self.proxy else {'http': self.proxy, 'https': self.proxy},\n                               **kwargs)\n\n    @asynccontextmanager\n    async def _arequest(self, method: str, url: str,\n                        **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"Make an async request.\"\"\"\n\n        if not self.aiosession:\n            if not self.request_timeout:\n                self.request_timeout = 120\n            if isinstance(self.request_timeout, tuple):\n                timeout = aiohttp.ClientTimeout(connect=self.request_timeout[0],\n                                                total=self.request_timeout[1])\n            else:\n                timeout = aiohttp.ClientTimeout(total=self.request_timeout)\n            async with aiohttp.ClientSession(timeout=timeout) as session:\n                logger.info(f'aio_http url={url}')\n                async with session.request(method, url, headers=self.headers, proxy=self.proxy, **kwargs) as response:\n                    yield response\n        else:\n            async with self.aiosession:\n                async with self.aiosession.request(method,\n                                                   url,\n                                                   headers=self.headers,\n                                                   proxy=self.proxy,\n                                                   **kwargs) as response:\n                    yield response\n\n    @asynccontextmanager\n    async def aget(self, url: str, **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"GET the URL and return the text asynchronously.\"\"\"\n        async with self._arequest('GET', url, auth=self.auth, **kwargs) as response:\n            yield response\n\n    @asynccontextmanager\n    async def apost(self, url: str, json: Dict[str, Any],\n                    **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"POST to the URL and return the text asynchronously.\"\"\"\n        async with self._arequest('POST', url, json=json, auth=self.auth, **kwargs) as response:\n            yield response\n\n    @asynccontextmanager\n    async def apatch(self, url: str, json: Dict[str, Any],\n                     **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"PATCH the URL and return the text asynchronously.\"\"\"\n        async with self._arequest('PATCH', url, json=json, auth=self.auth, **kwargs) as response:\n            yield response\n\n    @asynccontextmanager\n    async def aput(self, url: str, json: Dict[str, Any],\n                   **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"PUT the URL and return the text asynchronously.\"\"\"\n        async with self._arequest('PUT', url, json=json, auth=self.auth, **kwargs) as response:\n            yield response\n\n    @asynccontextmanager\n    async def adelete(self, url: str,\n                      **kwargs: Any) -> AsyncGenerator[aiohttp.ClientResponse, None]:\n        \"\"\"DELETE the URL and return the text asynchronously.\"\"\"\n        async with self._arequest('DELETE', url, auth=self.auth, **kwargs) as response:\n            yield response\n\n\nclass TextRequestsWrapper(BaseModel):\n    \"\"\"Lightweight wrapper around requests library.\n\n    The main purpose of this wrapper is to always return a text output.\n    \"\"\"\n\n    headers: Optional[Dict[str, str]] = None\n    aiosession: Optional[aiohttp.ClientSession] = None\n    auth: Optional[Any] = None\n    proxy: Optional[str] = None\n    request_timeout: Union[float, Tuple[float, float]] = 120\n    model_config = ConfigDict(extra=\"forbid\", arbitrary_types_allowed=True)\n\n    @property\n    def requests(self) -> Requests:\n        return Requests(headers=self.headers,\n                        aiosession=self.aiosession,\n                        auth=self.auth,\n                        proxy=self.proxy,\n                        request_timeout=self.request_timeout)\n\n    def get(self, url: str, **kwargs: Any) -> str:\n        \"\"\"GET the URL and return the text.\"\"\"\n        return self.requests.get(url, **kwargs).text\n\n    def post(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"POST to the URL and return the text.\"\"\"\n        return self.requests.post(url, json, **kwargs).text\n\n    def patch(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"PATCH the URL and return the text.\"\"\"\n        return self.requests.patch(url, json, **kwargs).text\n\n    def put(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"PUT the URL and return the text.\"\"\"\n        return self.requests.put(url, json, **kwargs).text\n\n    def delete(self, url: str, **kwargs: Any) -> str:\n        \"\"\"DELETE the URL and return the text.\"\"\"\n        return self.requests.delete(url, **kwargs).text\n\n    async def aget(self, url: str, **kwargs: Any) -> str:\n        \"\"\"GET the URL and return the text asynchronously.\"\"\"\n        async with self.requests.aget(url, **kwargs) as response:\n            return await response.text()\n\n    async def apost(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"POST to the URL and return the text asynchronously.\"\"\"\n        async with self.requests.apost(url, json, **kwargs) as response:\n            return await response.text()\n\n    async def apatch(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"PATCH the URL and return the text asynchronously.\"\"\"\n        async with self.requests.apatch(url, json, **kwargs) as response:\n            return await response.text()\n\n    async def aput(self, url: str, json: Dict[str, Any], **kwargs: Any) -> str:\n        \"\"\"PUT the URL and return the text asynchronously.\"\"\"\n        async with self.requests.aput(url, json, **kwargs) as response:\n            return await response.text()\n\n    async def adelete(self, url: str, **kwargs: Any) -> str:\n        \"\"\"DELETE the URL and return the text asynchronously.\"\"\"\n        async with self.requests.adelete(url, **kwargs) as response:\n            return await response.text()\n\n\n# For backwards compatibility\nRequestsWrapper = TextRequestsWrapper\n"
  },
  {
    "path": "src/backend/bisheng_langchain/utils/wrap_function.py",
    "content": "# 重试装饰器 异步\nimport asyncio\nimport time\nfrom logging import getLogger\n\nlogger = getLogger(__name__)\n\n\ndef retry_async(num_retries=3, delay=0.5, return_exceptions=False):\n    def wrapper(func):\n        async def wrapped(*args, **kwargs):\n            for i in range(num_retries):\n                try:\n                    return await func(*args, **kwargs)\n                except Exception as e:\n                    logger.info(\n                        f\"Retrying {func.__name__} in {delay} seconds... Attempt {i + 1} of {num_retries}... error: {e}\")\n                    if i == num_retries - 1:\n                        if return_exceptions:\n                            # 返回异常的参数 将e.args拆分成元组\n                            return e.args if len(e.args) > 1 else e.args[0]\n                        logger.error(f\"Failed to execute {func.__name__} after {num_retries} retries\")\n                        raise e\n                    await asyncio.sleep(delay)\n            return None\n\n        return wrapped\n\n    return wrapper\n\n\n# 重试装饰器\ndef retry_sync(num_retries=3, delay=0.5, return_exceptions=False):\n    def wrapper(func):\n        def wrapped(*args, **kwargs):\n            for i in range(num_retries):\n                try:\n                    return func(*args, **kwargs)\n                except Exception as e:\n                    logger.info(\n                        f\"Retrying {func.__name__} in {delay} seconds... Attempt {i + 1} of {num_retries}... error: {e}\")\n                    if i == num_retries - 1:\n                        if return_exceptions:\n                            # 返回异常的参数 将e.args拆分成元组\n                            return e.args if len(e.args) > 1 else e.args[0]\n                        logger.error(f\"Failed to execute {func.__name__} after {num_retries} retries\")\n                        raise e\n                    time.sleep(delay)\n            return None\n\n        return wrapped\n\n    return wrapper\n"
  },
  {
    "path": "src/backend/bisheng_langchain/vectorstores/__init__.py",
    "content": "from .elastic_keywords_search import ElasticKeywordsSearch\nfrom .milvus import Milvus\nfrom .retriever import VectorStoreFilterRetriever\n\n__all__ = ['ElasticKeywordsSearch', 'VectorStoreFilterRetriever', 'Milvus']\n"
  },
  {
    "path": "src/backend/bisheng_langchain/vectorstores/elastic_keywords_search.py",
    "content": "\"\"\"Wrapper around Elasticsearch vector database.\"\"\"\nfrom __future__ import annotations\n\nimport ast\nimport uuid\nfrom abc import ABC\nfrom typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, List, Optional, Tuple\n\nimport jieba.analyse\nfrom langchain.chains.llm import LLMChain\nfrom langchain.docstore.document import Document\nfrom langchain.embeddings.base import Embeddings\nfrom langchain.llms.base import BaseLLM\nfrom langchain.prompts.prompt import PromptTemplate\nfrom langchain.utils import get_from_dict_or_env\nfrom langchain.vectorstores.base import VectorStore\nfrom loguru import logger\n\nif TYPE_CHECKING:\n    from elasticsearch import Elasticsearch  # noqa: F401\n\n\ndef _default_text_mapping() -> Dict:\n    return {'properties': {'text': {'type': 'text'}}}\n\n\nDEFAULT_PROMPT = PromptTemplate(\n    input_variables=['question'],\n    template=\"\"\"分析给定Question，提取Question中包含的KeyWords，输出列表形式\n\nExamples:\nQuestion: 达梦公司在过去三年中的流动比率如下：2021年：3.74倍；2020年：2.82倍；2019年：2.05倍。\nKeyWords: ['过去三年', '流动比率', '2021', '3.74', '2020', '2.82', '2019', '2.05']\n\n----------------\nQuestion: {question}\nKeyWords: \"\"\",\n)\n\n\n# ElasticKeywordsSearch is a concrete implementation of the abstract base class\n# VectorStore, which defines a common interface for all vector database\n# implementations. By inheriting from the ABC class, ElasticKeywordsSearch can be\n# defined as an abstract base class itself, allowing the creation of subclasses with\n# their own specific implementations. If you plan to subclass ElasticKeywordsSearch,\n# you can inherit from it and define your own implementation of the necessary methods\n# and attributes.\nclass ElasticKeywordsSearch(VectorStore, ABC):\n    \"\"\"Wrapper around Elasticsearch as a vector database.\n\n    To connect to an Elasticsearch instance that does not require\n    login credentials, pass the Elasticsearch URL and index name along with the\n\n    Example:\n        .. code-block:: python\n\n            from langchain import ElasticKeywordsSearch\n\n            elastic_vector_search = ElasticKeywordsSearch(\n                elasticsearch_url=\"http://localhost:9200\",\n                index_name=\"test_index\",\n            )\n\n\n    To connect to an Elasticsearch instance that requires login credentials,\n    including Elastic Cloud, use the Elasticsearch URL format\n    https://username:password@es_host:9243. For example, to connect to Elastic\n    Cloud, create the Elasticsearch URL with the required authentication details and\n    pass it to the ElasticKeywordsSearch constructor as the named parameter\n    elasticsearch_url.\n\n    You can obtain your Elastic Cloud URL and login credentials by logging in to the\n    Elastic Cloud console at https://cloud.elastic.co, selecting your deployment, and\n    navigating to the \"Deployments\" page.\n\n    To obtain your Elastic Cloud password for the default \"elastic\" user:\n\n    1. Log in to the Elastic Cloud console at https://cloud.elastic.co\n    2. Go to \"Security\" > \"Users\"\n    3. Locate the \"elastic\" user and click \"Edit\"\n    4. Click \"Reset password\"\n    5. Follow the prompts to reset the password\n\n    The format for Elastic Cloud URLs is\n    https://username:password@cluster_id.region_id.gcp.cloud.es.io:9243.\n\n    Example:\n        .. code-block:: python\n\n            from langchain import ElasticKeywordsSearch\n            elastic_host = \"cluster_id.region_id.gcp.cloud.es.io\"\n            elasticsearch_url = f\"https://username:password@{elastic_host}:9243\"\n            elastic_keywords_search = ElasticKeywordsSearch(\n                elasticsearch_url=elasticsearch_url,\n                index_name=\"test_index\"\n            )\n\n    Args:\n        elasticsearch_url (str): The URL for the Elasticsearch instance.\n        index_name (str): The name of the Elasticsearch index for the keywords.\n\n    Raises:\n        ValueError: If the elasticsearch python package is not installed.\n    \"\"\"\n\n    def __init__(\n        self,\n        elasticsearch_url: str,\n        index_name: str,\n        drop_old: Optional[bool] = False,\n        post_filter: Optional[Any] = None,\n        *,\n        ssl_verify: Optional[Dict[str, Any]] = None,\n        llm_chain: Optional[LLMChain] = None,\n    ):\n        \"\"\"Initialize with necessary components.\"\"\"\n        try:\n            import elasticsearch\n        except ImportError:\n            raise ImportError('Could not import elasticsearch python package. '\n                              'Please install it with `pip install elasticsearch`.')\n        self.index_name = index_name\n        self.llm_chain = llm_chain\n        self.drop_old = drop_old\n        self.post_filter = post_filter\n        _ssl_verify = ssl_verify or {}\n        self.elasticsearch_url = elasticsearch_url\n        self.ssl_verify = _ssl_verify\n        try:\n            self.client = elasticsearch.Elasticsearch(elasticsearch_url, **_ssl_verify)\n        except ValueError as e:\n            raise ValueError(f'Your elasticsearch client string is mis-formatted. Got error: {e} ')\n\n        if drop_old:\n            try:\n                self.client.indices.delete(index=index_name)\n            except elasticsearch.exceptions.NotFoundError:\n                pass\n\n    def add_texts(\n        self,\n        texts: Iterable[str],\n        metadatas: Optional[List[dict]] = None,\n        ids: Optional[List[str]] = None,\n        refresh_indices: bool = True,\n        **kwargs: Any,\n    ) -> List[str]:\n        \"\"\"Run more texts through the keywords and add to the vectorstore.\n\n        Args:\n            texts: Iterable of strings to add to the vectorstore.\n            metadatas: Optional list of metadatas associated with the texts.\n            ids: Optional list of unique IDs.\n            refresh_indices: bool to refresh ElasticSearch indices\n\n        Returns:\n            List of ids from adding the texts into the vectorstore.\n        \"\"\"\n        try:\n            from elasticsearch.exceptions import NotFoundError\n            from elasticsearch.helpers import bulk\n        except ImportError:\n            raise ImportError('Could not import elasticsearch python package. '\n                              'Please install it with `pip install elasticsearch`.')\n        requests = []\n        ids = ids or [str(uuid.uuid4()) for _ in texts]\n        mapping = _default_text_mapping()\n\n        # check to see if the index already exists\n        try:\n            self.client.indices.get(index=self.index_name)\n            if texts and self.drop_old:\n                self.client.indices.delete(index=self.index_name)\n                self.create_index(self.client, self.index_name, mapping)\n        except NotFoundError:\n            # TODO would be nice to create index before embedding,\n            # just to save expensive steps for last\n            self.create_index(self.client, self.index_name, mapping)\n\n        for i, text in enumerate(texts):\n            metadata = metadatas[i] if metadatas else {}\n            request = {\n                '_op_type': 'index',\n                '_index': self.index_name,\n                'text': text,\n                'metadata': metadata,\n                '_id': ids[i],\n            }\n            requests.append(request)\n        bulk(self.client, requests)\n\n        if refresh_indices:\n            self.client.indices.refresh(index=self.index_name)\n        return ids\n\n    def similarity_search(self,\n                          query: str,\n                          k: int = 4,\n                          query_strategy: str = 'match_phrase',\n                          must_or_should: str = 'should',\n                          **kwargs: Any) -> List[Document]:\n        if k == 0:\n            # pm need to control\n            return []\n        docs_and_scores = self.similarity_search_with_score(query,\n                                                            k=k,\n                                                            query_strategy=query_strategy,\n                                                            must_or_should=must_or_should,\n                                                            **kwargs)\n        documents = [d[0] for d in docs_and_scores]\n        return documents\n\n    @staticmethod\n    def _relevance_score_fn(distance: float) -> float:\n        \"\"\"Normalize the distance to a score on a scale [0, 1].\"\"\"\n        # Todo: normalize the es score on a scale [0, 1]\n        return distance\n\n    def _select_relevance_score_fn(self) -> Callable[[float], float]:\n        return self._relevance_score_fn\n\n    def similarity_search_with_score(self,\n                                     query: str,\n                                     k: int = 4,\n                                     query_strategy: str = 'match_phrase',\n                                     must_or_should: str = 'should',\n                                     **kwargs: Any) -> List[Tuple[Document, float]]:\n        if k == 0:\n            # pm need to control\n            return []\n        assert must_or_should in ['must', 'should'], 'only support must and should.'\n        # llm or jiaba extract keywords\n        if self.llm_chain:\n            keywords_str = self.llm_chain.run(query)\n            print('llm search keywords:', keywords_str)\n            try:\n                keywords = ast.literal_eval(keywords_str)\n                if not isinstance(keywords, list):\n                    raise ValueError('Keywords extracted by llm is not list.')\n            except Exception as e:\n                print(str(e))\n                keywords = jieba.analyse.extract_tags(query, topK=10, withWeight=False)\n        else:\n            keywords = jieba.analyse.extract_tags(query, topK=10, withWeight=False)\n            print('jieba search keywords:', keywords)\n        match_query = {'bool': {must_or_should: []}}\n        for key in keywords:\n            match_query['bool'][must_or_should].append({query_strategy: {'text': key}})\n        response = self.client_search(self.client, self.index_name, match_query, size=k)\n        hits = [hit for hit in response['hits']['hits']]\n        docs_and_scores = [(\n            Document(\n                page_content=hit['_source']['text'],\n                metadata=hit['_source']['metadata'],\n            ),\n            hit['_score'],\n        ) for hit in hits]\n\n        return docs_and_scores\n\n    @classmethod\n    def from_texts(\n        cls,\n        texts: List[str],\n        embedding: Embeddings,\n        metadatas: Optional[List[dict]] = None,\n        ids: Optional[List[str]] = None,\n        index_name: Optional[str] = None,\n        refresh_indices: bool = True,\n        llm: Optional[BaseLLM] = None,\n        prompt: Optional[PromptTemplate] = DEFAULT_PROMPT,\n        drop_old: Optional[bool] = False,\n        **kwargs: Any,\n    ) -> ElasticKeywordsSearch:\n        \"\"\"Construct ElasticKeywordsSearch wrapper from raw documents.\n\n        This is a user-friendly interface that:\n            1. Embeds documents.\n            2. Creates a new index for the embeddings in the Elasticsearch instance.\n            3. Adds the documents to the newly created Elasticsearch index.\n\n        This is intended to be a quick way to get started.\n\n        Example:\n            .. code-block:: python\n\n                from langchain import ElasticKeywordsSearch\n                from langchain.embeddings import OpenAIEmbeddings\n                embeddings = OpenAIEmbeddings()\n                elastic_vector_search = ElasticKeywordsSearch.from_texts(\n                    texts,\n                    embeddings,\n                    elasticsearch_url=\"http://localhost:9200\"\n                )\n        \"\"\"\n        elasticsearch_url = get_from_dict_or_env(kwargs, 'elasticsearch_url', 'ELASTICSEARCH_URL')\n        if 'elasticsearch_url' in kwargs:\n            del kwargs['elasticsearch_url']\n        index_name = index_name or uuid.uuid4().hex\n        if llm:\n            llm_chain = LLMChain(llm=llm, prompt=prompt)\n            vectorsearch = cls(elasticsearch_url,\n                               index_name,\n                               llm_chain=llm_chain,\n                               drop_old=drop_old,\n                               **kwargs)\n        else:\n            vectorsearch = cls(elasticsearch_url, index_name, drop_old=drop_old, **kwargs)\n        vectorsearch.add_texts(texts,\n                               metadatas=metadatas,\n                               ids=ids,\n                               refresh_indices=refresh_indices)\n\n        return vectorsearch\n\n    def create_index(self, client: Any, index_name: str, mapping: Dict) -> None:\n        version_num = client.info()['version']['number'][0]\n        version_num = int(version_num)\n        if version_num >= 8:\n            client.indices.create(index=index_name, mappings=mapping)\n        else:\n            client.indices.create(index=index_name, body={'mappings': mapping})\n\n    def client_search(self, client: Any, index_name: str, script_query: Dict, size: int) -> Any:\n        version_num = client.info()['version']['number'][0]\n        version_num = int(version_num)\n        if version_num >= 8:\n            params = {\n                \"index\": index_name,\n                \"query\": script_query,\n                \"size\": size\n            }\n            if self.post_filter:\n                params[\"post_filter\"] = self.post_filter\n            response = client.search(**params)\n        else:\n            body = {\n                'query': script_query,\n                'size': size\n            }\n            if self.post_filter:\n                body[\"post_filter\"] = self.post_filter\n            response = client.search(index=index_name, body=body)\n        return response\n\n    def delete_index(self, **kwargs: Any) -> None:\n        # TODO: Check if this can be done in bulk\n        self.client.indices.delete(index=self.index_name)\n\n    def delete(\n        self,\n        ids: Optional[List[str]] = None,\n        refresh_indices: Optional[bool] = True,\n        **kwargs: Any,\n    ) -> Optional[bool]:\n        \"\"\"Delete documents from the Elasticsearch index.\n\n        Args:\n            ids: List of ids of documents to delete.\n            refresh_indices: Whether to refresh the index\n                            after deleting documents. Defaults to True.\n        \"\"\"\n        try:\n            from elasticsearch.helpers import BulkIndexError, bulk\n        except ImportError:\n            raise ImportError('Could not import elasticsearch python package. '\n                              'Please install it with `pip install elasticsearch`.')\n\n        body = []\n\n        if ids is None:\n            raise ValueError('ids must be provided.')\n\n        for _id in ids:\n            body.append({'_op_type': 'delete', '_index': self.index_name, '_id': _id})\n\n        if len(body) > 0:\n            try:\n                bulk(self.client, body, refresh=refresh_indices, ignore_status=404)\n                logger.debug(f'Deleted {len(body)} texts from index')\n\n                return True\n            except BulkIndexError as e:\n                logger.error(f'Error deleting texts: {e}')\n                firstError = e.errors[0].get('index', {}).get('error', {})\n                logger.error(f\"First error reason: {firstError.get('reason')}\")\n                raise e\n\n        else:\n            logger.debug('No texts to delete from index')\n            return False\n"
  },
  {
    "path": "src/backend/bisheng_langchain/vectorstores/milvus.py",
    "content": "\"\"\"Wrapper around the Milvus vector database.\"\"\"\nfrom __future__ import annotations\n\nimport logging\nfrom typing import Any, Callable, Iterable, List, Optional, Tuple, Union\nfrom uuid import uuid4\n\nimport numpy as np\nfrom langchain.docstore.document import Document\nfrom langchain.embeddings.base import Embeddings\nfrom langchain_community.vectorstores.milvus import Milvus as MilvusLangchain\nfrom langchain_community.vectorstores.utils import maximal_marginal_relevance\nfrom pymilvus.exceptions import ConnectionNotExistException\n\nlogger = logging.getLogger(__name__)\n\nDEFAULT_MILVUS_CONNECTION = {\n    'host': 'localhost',\n    'port': '19530',\n    'user': '',\n    'password': '',\n    'secure': False,\n}\n\n\nclass Milvus(MilvusLangchain):\n    \"\"\"Initialize wrapper around the milvus vector database.\n\n    In order to use this you need to have `pymilvus` installed and a\n    running Milvus\n\n    See the following documentation for how to run a Milvus instance:\n    https://milvus.io/docs/install_standalone-docker.md\n\n    If looking for a hosted Milvus, take a look at this documentation:\n    https://zilliz.com/cloud and make use of the Zilliz vectorstore found in\n    this project,\n\n    IF USING L2/IP metric IT IS HIGHLY SUGGESTED TO NORMALIZE YOUR DATA.\n\n    Args:\n        embedding_function (Embeddings): Function used to embed the text.\n        collection_name (str): Which Milvus collection to use. Defaults to\n            \"LangChainCollection\".\n        connection_args (Optional[dict[str, any]]): The connection args used for\n            this class comes in the form of a dict.\n        consistency_level (str): The consistency level to use for a collection.\n            Defaults to \"Session\".\n        index_params (Optional[dict]): Which index params to use. Defaults to\n            HNSW/AUTOINDEX depending on service.\n        search_params (Optional[dict]): Which search params to use. Defaults to\n            default of index.\n        drop_old (Optional[bool]): Whether to drop the current collection. Defaults\n            to False.\n\n    The connection args used for this class comes in the form of a dict,\n    here are a few of the options:\n        address (str): The actual address of Milvus\n            instance. Example address: \"localhost:19530\"\n        uri (str): The uri of Milvus instance. Example uri:\n            \"http://randomwebsite:19530\",\n            \"tcp:foobarsite:19530\",\n            \"https://ok.s3.south.com:19530\".\n        host (str): The host of Milvus instance. Default at \"localhost\",\n            PyMilvus will fill in the default host if only port is provided.\n        port (str/int): The port of Milvus instance. Default at 19530, PyMilvus\n            will fill in the default port if only host is provided.\n        user (str): Use which user to connect to Milvus instance. If user and\n            password are provided, we will add related header in every RPC call.\n        password (str): Required when user is provided. The password\n            corresponding to the user.\n        secure (bool): Default is false. If set to true, tls will be enabled.\n        client_key_path (str): If use tls two-way authentication, need to\n            write the client.key path.\n        client_pem_path (str): If use tls two-way authentication, need to\n            write the client.pem path.\n        ca_pem_path (str): If use tls two-way authentication, need to write\n            the ca.pem path.\n        server_pem_path (str): If use tls one-way authentication, need to\n            write the server.pem path.\n        server_name (str): If use tls, need to write the common name.\n\n    Example:\n        .. code-block:: python\n\n        from langchain import Milvus\n        from langchain.embeddings import OpenAIEmbeddings\n\n        embedding = OpenAIEmbeddings()\n        # Connect to a milvus instance on localhost\n        milvus_store = Milvus(\n            embedding_function = Embeddings,\n            collection_name = \"LangChainCollection\",\n            drop_old = True,\n        )\n\n    Raises:\n        ValueError: If the pymilvus python package is not installed.\n    \"\"\"\n\n    def __init__(self,\n                 embedding_function: Embeddings,\n                 collection_name: str = 'LangChainCollection',\n                 connection_args: Optional[dict[str, Any]] = None,\n                 consistency_level: str = 'Session',\n                 index_params: Optional[dict] = None,\n                 search_params: Optional[dict] = None,\n                 drop_old: Optional[bool] = False,\n                 partition_key: Optional[str] = None,\n                 metadata_expr: Optional[str] = None,\n                 *,\n                 primary_field: str = 'pk',\n                 text_field: str = 'text',\n                 vector_field: str = 'vector',\n                 partition_field: str = 'knowledge_id'):\n        \"\"\"Initialize the Milvus vector store.\"\"\"\n        try:\n            from pymilvus import Collection, utility\n        except ImportError:\n            raise ValueError('Could not import pymilvus python package. '\n                             'Please install it with `pip install pymilvus`.')\n\n        # Default search params when one is not provided.\n        self.default_search_params = {\n            'IVF_FLAT': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'IVF_SQ8': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'IVF_PQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10\n                }\n            },\n            'HNSW': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 100\n                }\n            },\n            'RHNSW_FLAT': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'RHNSW_SQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'RHNSW_PQ': {\n                'metric_type': 'L2',\n                'params': {\n                    'ef': 10\n                }\n            },\n            'IVF_HNSW': {\n                'metric_type': 'L2',\n                'params': {\n                    'nprobe': 10,\n                    'ef': 10\n                }\n            },\n            'ANNOY': {\n                'metric_type': 'L2',\n                'params': {\n                    'search_k': 10\n                }\n            },\n            'AUTOINDEX': {\n                'metric_type': 'L2',\n                'params': {}\n            },\n        }\n\n        self.embedding_func = embedding_function\n        self.collection_name = collection_name\n        self.index_params = index_params\n        self.search_params = search_params\n        self.consistency_level = consistency_level\n        self.connection_args = connection_args\n\n        # In order for a collection to be compatible, pk needs to be auto'id and int\n        self._primary_field = primary_field\n        # In order for compatiblility, the text field will need to be called \"text\"\n        self._text_field = text_field\n        # In order for compatibility, the vector field needs to be called \"vector\"\n        self._vector_field = vector_field\n        #  partion key for multi-tenancy\n        self._partition_field = partition_field\n        self.partition_key = partition_key\n\n        self.metadata_expr = metadata_expr\n\n        self.fields: list[str] = []\n        # Create the connection to the server\n        if connection_args is None:\n            connection_args = DEFAULT_MILVUS_CONNECTION\n        # if 'timeout' not in connection_args:\n        # connection_args['timeout'] = 30\n\n        self.alias = self._create_connection_alias(connection_args)\n        self.col: Optional[Collection] = None\n\n        # Grab the existing collection if it exists\n        try:\n            if utility.has_collection(self.collection_name, using=self.alias):\n                self.col = Collection(\n                    self.collection_name,\n                    using=self.alias,\n                )\n        except Exception as e:\n            logger.error(f'milvus operating error={str(e)}')\n            self.close_connection(self.alias)\n            raise e\n        # If need to drop old, drop it\n        if drop_old and isinstance(self.col, Collection):\n            self.col.drop()\n            self.col = None\n\n        # Initialize the vector store\n        self._init()\n\n    def close_connection(self, using):\n        logger.warning(f'cancel milvus close_connection={using}, because alias can be reused by others')\n\n    def _create_connection_alias(self, connection_args: dict, personal_alias: str = None) -> str:\n        \"\"\"Create the connection to the Milvus server.\"\"\"\n        from pymilvus import MilvusException, connections\n\n        # Grab the connection arguments that are used for checking existing connection\n        host: str = connection_args.get('host', None)\n        port: Union[str, int] = connection_args.get('port', None)\n        address: str = connection_args.get('address', None)\n        uri: str = connection_args.get('uri', None)\n        user = connection_args.get('user', None)\n\n        # Order of use is host/port, uri, address\n        if host is not None and port is not None:\n            given_address = str(host) + ':' + str(port)\n        elif uri is not None:\n            given_address = uri.split('https://')[1]\n        elif address is not None:\n            given_address = address\n        else:\n            given_address = None\n            logger.debug('Missing standard address type for reuse atttempt')\n\n        # User defaults to empty string when getting connection info\n        if user is not None:\n            tmp_user = user\n        else:\n            tmp_user = ''\n\n        # If a valid address was given, then check if a connection exists\n        if given_address is not None:\n            for con in connections.list_connections():\n                addr = connections.get_connection_addr(con[0])\n                if (con[1] and ('address' in addr) and (addr['address'] == given_address)\n                        and ('user' in addr) and (addr['user'] == tmp_user)):\n                    logger.debug('Using previous connection: %s', con[0])\n                    return con[0]\n\n        # Generate a new connection if one doesn't exist\n        if personal_alias:\n            alias = personal_alias\n        else:\n            alias = uuid4().hex\n        try:\n            connections.connect(alias=alias, **connection_args)\n            logger.debug('Created new connection using: %s', alias)\n            return alias\n        except MilvusException as e:\n            logger.error('Failed to create new connection using: %s', alias)\n            raise e\n\n    def _init(self,\n              embeddings: Optional[list] = None,\n              metadatas: Optional[list[dict]] = None) -> None:\n        if embeddings is not None:\n            self._create_collection(embeddings, metadatas)\n        self._extract_fields()\n        self._create_index()\n        self._create_search_params()\n        self._load()\n\n    def _create_collection(self, embeddings: list, metadatas: Optional[list[dict]] = None) -> None:\n        from pymilvus import (\n            Collection,\n            CollectionSchema,\n            DataType,\n            FieldSchema,\n            MilvusException,\n        )\n        from pymilvus.orm.types import infer_dtype_bydata\n\n        # Determine embedding dim\n        dim = len(embeddings[0])\n        fields = []\n        # Determine metadata schema\n        if metadatas:\n            # Create FieldSchema for each entry in metadata.\n            for key, value in metadatas[0].items():\n                # Infer the corresponding datatype of the metadata\n                dtype = infer_dtype_bydata(value)\n                is_partition = False\n                if key == self._partition_field:\n                    is_partition = True\n                # Datatype isn't compatible\n                if dtype == DataType.UNKNOWN or dtype == DataType.NONE:\n                    logger.error(\n                        'Failure to create collection, unrecognized dtype for key: %s',\n                        key,\n                    )\n                    raise ValueError(f'Unrecognized datatype for {key}.')\n                # Dataype is a string/varchar equivalent\n                elif dtype == DataType.VARCHAR:\n                    fields.append(\n                        FieldSchema(key,\n                                    DataType.VARCHAR,\n                                    max_length=65_535,\n                                    is_partition_key=is_partition))\n                else:\n                    fields.append(FieldSchema(key, dtype, is_partition_key=is_partition))\n\n        # Create the text field\n        fields.append(FieldSchema(self._text_field, DataType.VARCHAR, max_length=65_535))\n        # Create the primary key field\n        fields.append(\n            FieldSchema(self._primary_field, DataType.INT64, is_primary=True, auto_id=True))\n        # Create the vector field, supports binary or float vectors\n        fields.append(FieldSchema(self._vector_field, infer_dtype_bydata(embeddings[0]), dim=dim))\n\n        if self._partition_field in [f.name for f in fields]:\n            # Create the schema for the collection\n            schema = CollectionSchema(fields, partition_key_field=self._partition_field)\n        else:\n            schema = CollectionSchema(fields)\n\n        # Create the collection\n        try:\n            self.col = Collection(\n                name=self.collection_name,\n                schema=schema,\n                consistency_level=self.consistency_level,\n                using=self.alias,\n            )\n        except MilvusException as e:\n            logger.error('Failed to create collection: %s error: %s', self.collection_name, e)\n            raise e\n\n    def _extract_fields(self) -> None:\n        \"\"\"Grab the existing fields from the Collection\"\"\"\n        from pymilvus import Collection\n\n        if isinstance(self.col, Collection):\n            schema = self.col.schema\n            for x in schema.fields:\n                self.fields.append(x.name)\n            # Since primary field is auto-id, no need to track it\n            self.fields.remove(self._primary_field)\n\n    def _get_index(self) -> Optional[dict[str, Any]]:\n        \"\"\"Return the vector index information if it exists\"\"\"\n        from pymilvus import Collection\n\n        if isinstance(self.col, Collection):\n            for x in self.col.indexes:\n                if x.field_name == self._vector_field:\n                    return x.to_dict()\n        return None\n\n    def _create_index(self) -> None:\n        \"\"\"Create a index on the collection\"\"\"\n        from pymilvus import Collection, MilvusException\n\n        if isinstance(self.col, Collection) and self._get_index() is None:\n            try:\n                # If no index params, use a default HNSW based one\n                if self.index_params is None:\n                    self.index_params = {\n                        'metric_type': 'L2',\n                        'index_type': 'HNSW',\n                        'params': {\n                            'M': 8,\n                            'efConstruction': 64\n                        },\n                    }\n\n                try:\n                    self.col.create_index(\n                        self._vector_field,\n                        index_params=self.index_params,\n                        using=self.alias,\n                    )\n\n                # If default did not work, most likely on Zilliz Cloud\n                except MilvusException:\n                    # Use AUTOINDEX based index\n                    self.index_params = {\n                        'metric_type': 'L2',\n                        'index_type': 'AUTOINDEX',\n                        'params': {},\n                    }\n                    self.col.create_index(\n                        self._vector_field,\n                        index_params=self.index_params,\n                        using=self.alias,\n                    )\n                logger.debug(\n                    'Successfully created an index on collection: %s',\n                    self.collection_name,\n                )\n\n            except MilvusException as e:\n                logger.error('Failed to create an index on collection: %s', self.collection_name)\n                raise e\n\n    def _create_search_params(self) -> None:\n        \"\"\"Generate search params based on the current index type\"\"\"\n        from pymilvus import Collection\n\n        if isinstance(self.col, Collection) and self.search_params is None:\n            index = self._get_index()\n            if index is not None:\n                index_type: str = index['index_param']['index_type']\n                metric_type: str = index['index_param']['metric_type']\n                self.search_params = self.default_search_params[index_type]\n                self.search_params['metric_type'] = metric_type\n\n    def _load(self) -> None:\n        \"\"\"Load the collection if available.\"\"\"\n        from pymilvus import Collection\n\n        if isinstance(self.col, Collection) and self._get_index() is not None:\n            self.col.load()\n\n    def add_texts(\n            self,\n            texts: Iterable[str],\n            metadatas: Optional[List[dict]] = None,\n            timeout: Optional[int] = None,\n            batch_size: int = 1000,\n            no_embedding: bool = False,\n            **kwargs: Any,\n    ) -> List[str]:\n        \"\"\"Insert text data into Milvus.\n\n        Inserting data when the collection has not be made yet will result\n        in creating a new Collection. The data of the first entity decides\n        the schema of the new collection, the dim is extracted from the first\n        embedding and the columns are decided by the first metadata dict.\n        Metada keys will need to be present for all inserted values. At\n        the moment there is no None equivalent in Milvus.\n\n        Args:\n            texts (Iterable[str]): The texts to embed, it is assumed\n                that they all fit in memory.\n            metadatas (Optional[List[dict]]): Metadata dicts attached to each of\n                the texts. Defaults to None.\n            timeout (Optional[int]): Timeout for each batch insert. Defaults\n                to None.\n            batch_size (int, optional): Batch size to use for insertion.\n                Defaults to 1000.\n\n        Raises:\n            MilvusException: Failure to add texts\n\n        Returns:\n            List[str]: The resulting keys for each inserted element.\n        \"\"\"\n        from pymilvus import Collection, MilvusException\n\n        texts = list(texts)\n        if not no_embedding:\n            try:\n                embeddings = self.embedding_func.embed_documents(texts)\n            except NotImplementedError:\n                embeddings = [self.embedding_func.embed_query(x) for x in texts]\n\n            if len(embeddings) == 0:\n                logger.debug('Nothing to insert, skipping.')\n                return []\n        else:\n            embeddings = [[0.0]] * len(texts)\n            if len(embeddings) == 0:\n                logger.debug('Nothing to insert, skipping.')\n                return []\n\n        # If the collection hasn't been initialized yet, perform all steps to do so\n        if not isinstance(self.col, Collection):\n            self._init(embeddings, metadatas)\n\n        # Dict to hold all insert columns\n        insert_dict: dict[str, list] = {\n            self._text_field: texts,\n            self._vector_field: embeddings,\n        }\n\n        # Collect the metadata into the insert dict.\n        if metadatas is not None:\n            for d in metadatas:\n                for key, value in d.items():\n                    if key in self.fields:\n                        insert_dict.setdefault(key, []).append(value)\n\n        # Total insert count\n        vectors: list = insert_dict[self._vector_field]\n        total_count = len(vectors)\n\n        pks: list[str] = []\n\n        assert isinstance(self.col, Collection)\n        for i in range(0, total_count, batch_size):\n            # Grab end index\n            end = min(i + batch_size, total_count)\n            # Convert dict to list of lists batch for insertion\n            insert_list = [insert_dict[x][i:end] for x in self.fields if x in insert_dict]\n            # Insert into the collection.\n            try:\n                res = self.col.insert(insert_list, timeout=timeout, **kwargs)\n                pks.extend(res.primary_keys)\n            except ConnectionNotExistException as e:\n                logger.warning(f'retrying connection to milvus {e}')\n                # reconnect to milvus\n                self._create_connection_alias(self.connection_args, self.alias)\n\n                # insert data\n                res = self.col.insert(insert_list, timeout=timeout, **kwargs)\n                pks.extend(res.primary_keys)\n            except MilvusException as e:\n                logger.error('Failed to insert batch starting at entity: %s/%s', i, total_count)\n                raise e\n        return pks\n\n    def similarity_search(\n            self,\n            query: str,\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a similarity search against the query string.\n\n        Args:\n            query (str): The text to search.\n            k (int, optional): How many results to return. Defaults to 4.\n            param (dict, optional): The search params for the index type.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n        res = self.similarity_search_with_score(query=query,\n                                                k=k,\n                                                param=param,\n                                                expr=expr,\n                                                timeout=timeout,\n                                                **kwargs)\n        return [doc for doc, _ in res]\n\n    def similarity_search_by_vector(\n            self,\n            embedding: List[float],\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a similarity search against the query string.\n\n        Args:\n            embedding (List[float]): The embedding vector to search.\n            k (int, optional): How many results to return. Defaults to 4.\n            param (dict, optional): The search params for the index type.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n        res = self.similarity_search_with_score_by_vector(embedding=embedding,\n                                                          k=k,\n                                                          param=param,\n                                                          expr=expr,\n                                                          timeout=timeout,\n                                                          **kwargs)\n        return [doc for doc, _ in res]\n\n    def similarity_search_with_score(\n            self,\n            query: str,\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Tuple[Document, float]]:\n        \"\"\"Perform a search on a query string and return results with score.\n\n        For more information about the search parameters, take a look at the pymilvus\n        documentation found here:\n        https://milvus.io/api-reference/pymilvus/v2.2.6/Collection/search().md\n\n        Args:\n            query (str): The text being searched.\n            k (int, optional): The amount of results to return. Defaults to 4.\n            param (dict): The search params for the specified index.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[float], List[Tuple[Document, any, any]]:\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n\n        # Embed the query text.\n        embedding = self.embedding_func.embed_query(query)\n\n        res = self.similarity_search_with_score_by_vector(embedding=embedding,\n                                                          k=k,\n                                                          param=param,\n                                                          expr=expr,\n                                                          timeout=timeout,\n                                                          **kwargs)\n        return res\n\n    def similarity_search_with_score_by_vector(\n            self,\n            embedding: List[float],\n            k: int = 4,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Tuple[Document, float]]:\n        \"\"\"Perform a search on a query string and return results with score.\n\n        For more information about the search parameters, take a look at the pymilvus\n        documentation found here:\n        https://milvus.io/api-reference/pymilvus/v2.2.6/Collection/search().md\n\n        Args:\n            embedding (List[float]): The embedding vector being searched.\n            k (int, optional): The amount of results to return. Defaults to 4.\n            param (dict): The search params for the specified index.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Tuple[Document, float]]: Result doc and score.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n\n        if param is None:\n            param = self.search_params\n\n        # Determine result metadata fields.\n        output_fields = self.fields[:]\n        output_fields.remove(self._vector_field)\n        # partition for multi-tenancy\n        if self.partition_key:\n            # add parttion\n            if expr:\n                expr = f\"{expr} and {self._partition_field}==\\\"{self.partition_key}\\\"\"\n            else:\n                expr = f\"{self._partition_field}==\\\"{self.partition_key}\\\"\"\n        if expr and self.metadata_expr:\n            expr = f'{expr} and {self.metadata_expr}'\n        elif self.metadata_expr and not expr:\n            expr = self.metadata_expr\n\n        # Perform the search.\n        res = self.col.search(\n            data=[embedding],\n            anns_field=self._vector_field,\n            param=param,\n            limit=k,\n            expr=expr,\n            output_fields=output_fields,\n            timeout=timeout,\n            **kwargs,\n        )\n        # Organize results.\n        ret = []\n        for result in res[0]:\n            meta = {x: result.entity.get(x) for x in output_fields}\n            doc = Document(page_content=meta.pop(self._text_field), metadata=meta)\n            pair = (doc, result.score)\n            ret.append(pair)\n\n        return ret\n\n    def max_marginal_relevance_search(\n            self,\n            query: str,\n            k: int = 4,\n            fetch_k: int = 20,\n            lambda_mult: float = 0.5,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a search and return results that are reordered by MMR.\n\n        Args:\n            query (str): The text being searched.\n            k (int, optional): How many results to give. Defaults to 4.\n            fetch_k (int, optional): Total results to select k from.\n                Defaults to 20.\n            lambda_mult: Number between 0 and 1 that determines the degree\n                        of diversity among the results with 0 corresponding\n                        to maximum diversity and 1 to minimum diversity.\n                        Defaults to 0.5\n            param (dict, optional): The search params for the specified index.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n\n        embedding = self.embedding_func.embed_query(query)\n\n        return self.max_marginal_relevance_search_by_vector(\n            embedding=embedding,\n            k=k,\n            fetch_k=fetch_k,\n            lambda_mult=lambda_mult,\n            param=param,\n            expr=expr,\n            timeout=timeout,\n            **kwargs,\n        )\n\n    def max_marginal_relevance_search_by_vector(\n            self,\n            embedding: list[float],\n            k: int = 4,\n            fetch_k: int = 20,\n            lambda_mult: float = 0.5,\n            param: Optional[dict] = None,\n            expr: Optional[str] = None,\n            timeout: Optional[int] = None,\n            **kwargs: Any,\n    ) -> List[Document]:\n        \"\"\"Perform a search and return results that are reordered by MMR.\n\n        Args:\n            embedding (str): The embedding vector being searched.\n            k (int, optional): How many results to give. Defaults to 4.\n            fetch_k (int, optional): Total results to select k from.\n                Defaults to 20.\n            lambda_mult: Number between 0 and 1 that determines the degree\n                        of diversity among the results with 0 corresponding\n                        to maximum diversity and 1 to minimum diversity.\n                        Defaults to 0.5\n            param (dict, optional): The search params for the specified index.\n                Defaults to None.\n            expr (str, optional): Filtering expression. Defaults to None.\n            timeout (int, optional): How long to wait before timeout error.\n                Defaults to None.\n            kwargs: Collection.search() keyword arguments.\n\n        Returns:\n            List[Document]: Document results for search.\n        \"\"\"\n        if k == 0:\n            # pm need to control\n            return []\n        if self.col is None:\n            logger.debug('No existing collection to search.')\n            return []\n\n        if param is None:\n            param = self.search_params\n\n        # Determine result metadata fields.\n        output_fields = self.fields[:]\n        output_fields.remove(self._vector_field)\n\n        # Perform the search.\n        res = self.col.search(\n            data=[embedding],\n            anns_field=self._vector_field,\n            param=param,\n            limit=fetch_k,\n            expr=expr,\n            output_fields=output_fields,\n            timeout=timeout,\n            **kwargs,\n        )\n        # Organize results.\n        ids = []\n        documents = []\n        scores = []\n        for result in res[0]:\n            meta = {x: result.entity.get(x) for x in output_fields}\n            doc = Document(page_content=meta.pop(self._text_field), metadata=meta)\n            documents.append(doc)\n            scores.append(result.score)\n            ids.append(result.id)\n\n        vectors = self.col.query(\n            expr=f'{self._primary_field} in {ids}',\n            output_fields=[self._primary_field, self._vector_field],\n            timeout=timeout,\n        )\n        # Reorganize the results from query to match search order.\n        vectors = {x[self._primary_field]: x[self._vector_field] for x in vectors}\n\n        ordered_result_embeddings = [vectors[x] for x in ids]\n\n        # Get the new order of results.\n        new_ordering = maximal_marginal_relevance(np.array(embedding),\n                                                  ordered_result_embeddings,\n                                                  k=k,\n                                                  lambda_mult=lambda_mult)\n\n        # Reorder the values and return.\n        ret = []\n        for x in new_ordering:\n            # Function can return -1 index\n            if x == -1:\n                break\n            else:\n                ret.append(documents[x])\n        return ret\n\n    @classmethod\n    def from_texts(\n            cls,\n            texts: List[str],\n            embedding: Embeddings,\n            metadatas: Optional[List[dict]] = None,\n            collection_name: str = 'LangChainCollection',\n            connection_args: dict[str, Any] = DEFAULT_MILVUS_CONNECTION,\n            consistency_level: str = 'Session',\n            index_params: Optional[dict] = None,\n            search_params: Optional[dict] = None,\n            drop_old: bool = False,\n            no_embedding: bool = False,\n            **kwargs: Any,\n    ) -> Milvus:\n        \"\"\"Create a Milvus collection, indexes it with HNSW, and insert data.\n\n        Args:\n            texts (List[str]): Text data.\n            embedding (Embeddings): Embedding function.\n            metadatas (Optional[List[dict]]): Metadata for each text if it exists.\n                Defaults to None.\n            collection_name (str, optional): Collection name to use. Defaults to\n                \"LangChainCollection\".\n            connection_args (dict[str, Any], optional): Connection args to use. Defaults\n                to DEFAULT_MILVUS_CONNECTION.\n            consistency_level (str, optional): Which consistency level to use. Defaults\n                to \"Session\".\n            index_params (Optional[dict], optional): Which index_params to use. Defaults\n                to None.\n            search_params (Optional[dict], optional): Which search params to use.\n                Defaults to None.\n            drop_old (Optional[bool], optional): Whether to drop the collection with\n                that name if it exists. Defaults to False.\n\n        Returns:\n            Milvus: Milvus Vector Store\n        \"\"\"\n        vector_db = cls(\n            embedding_function=embedding,\n            collection_name=collection_name,\n            connection_args=connection_args,\n            consistency_level=consistency_level,\n            index_params=index_params,\n            search_params=search_params,\n            drop_old=drop_old,\n            **kwargs,\n        )\n        vector_db.add_texts(texts=texts, metadatas=metadatas, no_embedding=no_embedding)\n        return vector_db\n\n    @staticmethod\n    def _relevance_score_fn(distance: float) -> float:\n        \"\"\"Normalize the distance to a score on a scale [0, 1].\"\"\"\n        # normalize l2 distance\n        return 1 - distance / 2\n\n    def _select_relevance_score_fn(self) -> Callable[[float], float]:\n        return self._relevance_score_fn\n\n    def query(self, expr: str, timeout: Optional[int] = None, **kwargs: Any) -> List[Document]:\n        output_fields = self.fields[:]\n        output_fields.remove(self._vector_field)\n        res = self.col.query(\n            expr=expr,\n            output_fields=output_fields,\n            timeout=timeout,\n            limit=1,\n            **kwargs,\n        )\n        # Organize results.\n        ret = []\n        for result in res:\n            meta = {x: result.get(x) for x in output_fields}\n            doc = Document(page_content=meta.pop(self._text_field), metadata=meta)\n            ret.append(doc)\n\n        return ret\n"
  },
  {
    "path": "src/backend/bisheng_langchain/vectorstores/retriever.py",
    "content": "from __future__ import annotations\n\nfrom typing import TYPE_CHECKING, ClassVar, Collection, Dict, List\nfrom venv import logger\n\nimport requests\nfrom langchain.schema.document import Document\nfrom langchain.vectorstores.base import VectorStore, VectorStoreRetriever\nfrom pydantic import ConfigDict, model_validator, Field\n\nif TYPE_CHECKING:\n    from langchain.callbacks.manager import (\n        AsyncCallbackManagerForRetrieverRun,\n        CallbackManagerForRetrieverRun,\n    )\n\n\nclass VectorStoreFilterRetriever(VectorStoreRetriever):\n    vectorstore: VectorStore\n    search_type: str = 'similarity'\n    search_kwargs: dict = Field(default_factory=dict)\n    allowed_search_types: ClassVar[Collection[str]] = (\n        'similarity',\n        'similarity_score_threshold',\n        'mmr',\n    )\n    access_url: str = None\n    model_config = ConfigDict(arbitrary_types_allowed=True)\n\n    @model_validator(mode='before')\n    @classmethod\n    def validate_search_type(cls, values: Dict) -> Dict:\n        \"\"\"Validate search type.\"\"\"\n        search_type = values['search_type']\n        if search_type not in cls.allowed_search_types:\n            raise ValueError(f'search_type of {search_type} not allowed. Valid values are: '\n                             f'{cls.allowed_search_types}')\n        if search_type == 'similarity_score_threshold':\n            score_threshold = values['search_kwargs'].get('score_threshold')\n            if (score_threshold is None) or (not isinstance(score_threshold, float)):\n                raise ValueError('`score_threshold` is not specified with a float value(0~1) '\n                                 'in `search_kwargs`.')\n        return values\n\n    def _get_relevant_documents(self, query: str, *,\n                                run_manager: CallbackManagerForRetrieverRun) -> List[Document]:\n        if self.search_type == 'similarity':\n            docs = self.vectorstore.similarity_search(query, **self.search_kwargs)\n        elif self.search_type == 'similarity_score_threshold':\n            docs_and_similarities = (self.vectorstore.similarity_search_with_relevance_scores(\n                query, **self.search_kwargs))\n            docs = [doc for doc, _ in docs_and_similarities]\n        elif self.search_type == 'mmr':\n            docs = self.vectorstore.max_marginal_relevance_search(query, **self.search_kwargs)\n        else:\n            raise ValueError(f'search_type of {self.search_type} not allowed.')\n\n        return self.get_file_access(docs)\n\n    async def _aget_relevant_documents(\n            self, query: str, *,\n            run_manager: AsyncCallbackManagerForRetrieverRun) -> List[Document]:\n        if self.search_type == 'similarity':\n            docs = await self.vectorstore.asimilarity_search(query, **self.search_kwargs)\n        elif self.search_type == 'similarity_score_threshold':\n            docs_and_similarities = (await\n                                     self.vectorstore.asimilarity_search_with_relevance_scores(\n                                         query, **self.search_kwargs))\n            docs = [doc for doc, _ in docs_and_similarities]\n        elif self.search_type == 'mmr':\n            docs = await self.vectorstore.amax_marginal_relevance_search(\n                query, **self.search_kwargs)\n        else:\n            raise ValueError(f'search_type of {self.search_type} not allowed.')\n        return self.get_file_access(docs)\n\n    def get_file_access(self, docs: List[Document]):\n        file_ids = [doc.metadata.get('file_id') for doc in docs if 'file_id' in doc.metadata]\n        if file_ids:\n            res = requests.get(self.access_url, json=file_ids)\n            if res.status_code == 200:\n                doc_res = res.json().get('data') or []\n                doc_right = {doc.get('docid') for doc in doc_res if doc.get('result') == 1}\n                for doc in docs:\n                    if doc.metadata.get('file_id') and doc.metadata.get(\n                            'file_id') not in doc_right:\n                        doc.page_content = ''\n                        doc.metadata['right'] = False\n                return docs\n            else:\n                logger.error(f'query_file_access_fail url={self.access_url} res={res.text}')\n                return [Document(page_content='', metadata={})]\n        else:\n            return docs\n"
  },
  {
    "path": "src/backend/entrypoint.sh",
    "content": "#!/bin/bash\nset -xe\n\nexport PYTHONPATH=\"./\"\n\nstart_mode=${1:-api}\n\nstart_knowledge(){\n  # 知识库解析的celery worker\n    celery -A bisheng.worker.main worker -l info -c 20 -P threads -Q knowledge_celery -n knowledge@%h\n}\n\nstart_workflow(){\n  # 工作流相关的celery worker。支持多节点运行，但是需要保证各节点的队列名称不冲突且都以workflow_celery开头\n    celery -A bisheng.worker.main worker -l info -c 100 -P threads -Q workflow_celery -n workflow@%h\n}\n\nstart_beat(){\n  # 定时任务调度\n    celery -A bisheng.worker.main beat -l info\n}\n\nstart_linsight(){\n  # 灵思后台任务worker\n    python bisheng/linsight/worker.py --worker_num 4 --max_concurrency 5\n}\nstart_default(){\n    # 默认其他任务的执行worker，目前是定时统计埋点数据\n    celery -A bisheng.worker.main worker -l info -c 100 -P threads -Q celery -n celery@%h\n}\n\nif [ \"$start_mode\" = \"api\" ]; then\n    echo \"Starting API server...\"\n    uvicorn bisheng.main:app --host 0.0.0.0 --port 7860 --no-access-log --workers 8\nelif [ \"$start_mode\" = \"knowledge\" ]; then\n    echo \"Starting Knowledge Celery worker...\"\n    start_knowledge\nelif [ \"$start_mode\" = \"workflow\" ]; then\n    echo \"Starting Workflow Celery worker...\"\n    start_workflow\nelif [ \"$start_mode\" = \"beat\" ]; then\n    echo \"Starting Celery beat...\"\n    start_beat\nelif [ \"$start_mode\" = \"default\" ]; then\n    echo \"Starting default celery worker...\"\n    start_default\nelif [ \"$start_mode\" = \"linsight\" ]; then\n    echo \"Starting LinSight worker...\"\n    start_linsight\nelif [ \"$start_mode\" = \"worker\" ]; then\n    echo \"Starting All worker...\"\n    # 处理知识库相关任务的worker\n    start_knowledge &\n    # 处理工作流相关任务的worker\n    start_workflow &\n    # 处理linsight相关任务的worker\n    start_linsight &\n    # 默认其他任务的执行worker，目前是定时统计埋点数据\n    start_default &\n    start_beat\n\n    echo \"All workers started successfully.\"\nelse\n    echo \"Invalid start mode. Use api、worker、knowledge、workflow、beat、default、linsight.\"\n    exit 1\nfi\n"
  },
  {
    "path": "src/backend/patch_code.sh",
    "content": "#!/bin/bash\n# 使用方式1： bash patch_code.sh conda环境名\n# 脚本将尝试进入conda环境\n\n# 使用方式2： bash patch_code.sh\n# 不使用conda环境，请确认执行脚本前，已经进入项目python环境中\n\n# 将 Windows 路径转换为 Git Bash 路径\nwin_to_gitbash_path() {\n    local path=\"$1\"\n\n    # 检查是否是 Windows 路径格式（包含反斜杠 '\\'）\n    if [[ \"$path\" == *\\\\* ]]; then\n        # 替换盘符 C:\\ -> /c/\n        path=$(echo \"$path\" | sed -E 's/^([A-Za-z]):\\\\/\\L\\/\\1\\//')\n\n        # 将反斜杠 \\ 替换为正斜杠 /\n        path=$(echo \"$path\" | sed 's/\\\\/\\//g')\n    fi\n\n    echo \"$path\"\n}\n\n# 检查命令是否存在\ncheck_command() {\n  if ! command -v $1  &> /dev/null; then\n    echo \"检测到命令缺失，请先安装：$1\"\n    exit 1\n  fi\n}\n\n\npatch_code_file() {\n  patch_file=\"$1\"\n  code_file=\"$2\"\n  search_pattern=\"$3\"\n  if [ -f \"$code_file\" ]; then\n      # 执行 grep 并捕获输出\n      if output=$(grep -n \"$search_pattern\" \"$code_file\" 2>&1); then\n          echo \"源代码可能已经存在该补丁，请勿重复应用，跳过：$code_file\"\n      else\n          echo \"准备打补丁\"\n          patch -p1 < \"$patch_file\" \"$code_file\"\n          echo \"补丁应用成功\"\n      fi\n  else\n      echo \"补丁文件没找到，可能你的环境未安装相应依赖： $code_file\"\n  fi\n}\n\n\n\ncheck_command patch\ncheck_command dirname\n\ncpath=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\nif [ \"$#\" -ge 1 ]; then\n  echo \"尝试进入conda环境\"\n  check_command conda\n  we_conda_path=$(conda info --base)\n  . \"$we_conda_path/etc/profile.d/conda.sh\"\n  conda activate $1\nelse\n    echo \"没有传递conda环境名称，将使用默认python环境\"\n    echo \"请确认执行脚本前，已经进入项目python环境中\"\nfi\n\ncheck_command python\n\n\n#python_path=$(python -c 'import os; print(os.environ[\"CONDA_PREFIX\"])')\npython_path=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())')\npython_path=$(win_to_gitbash_path \"$python_path\")\n\necho \"检测到python环境依赖目录：$python_path\"\n\npatch_code_file \"$cpath/bisheng/patches/langchain_openai.patch\" \"$python_path/langchain_openai/chat_models/base.py\" \"additional_kwargs\\['reasoning_content'\\]\"\n\n\n"
  },
  {
    "path": "src/backend/pyproject.toml",
    "content": "[project]\nname = \"backend\"\nversion = \"2.4.0-beta1\"\ndescription = \"BISHENG backend service\"\nreadme = \"README.md\"\nlicense = \"Apache 2.0\"\nrequires-python = \">=3.10\"\ndependencies = [\n    \"aiofiles>=25.1.0\",\n    \"aiomysql>=0.3.2\",\n    \"appdirs>=1.4.4\",\n    \"asyncpg>=0.30.0\",\n    \"bisheng_pyautogen==0.3.2\",\n    \"bisheng-ragas>=1.0.3\",\n    \"bs4>=0.0.2\",\n    \"captcha>=0.7.1\",\n    \"cchardet>=2.1.7\",\n    \"celery>=5.5.3\",\n    \"chardet>=5.2.0\",\n    \"chromadb>=1.3.4\",\n    \"cryptography>=46.0.3\",\n    \"dashscope>=1.24.9\",\n    \"datasets>=4.3.0\",\n    \"e2b-code-interpreter==1.5.2\",\n    \"emoji>=2.15.0\",\n    \"fastapi>=0.120.4\",\n    \"ibm-db>=3.2.7\",\n    \"ibm-db-sa>=0.4.2\",\n    \"jieba>=0.42.1\",\n    \"langchain>=0.3.23,<0.4.0\",\n    \"langchain-anthropic>=0.3.10,<0.4.0\",\n    \"langchain-community>=0.3.21,<0.4.0\",\n    \"langchain-deepseek>=0.1.3,<0.2.0\",\n    \"langchain-elasticsearch>=0.4.0,<0.5.0\",\n    \"langchain-experimental>=0.3.4\",\n    \"langchain-google-genai>=2.1.0,<2.2.0\",\n    \"langchain-milvus==0.2.1\",\n    \"langchain-ollama>=0.3.0,<0.4.0\",\n    \"langchain-openai>=0.3.16,<0.4.0\",\n    \"pymilvus>=2.5.10,<2.6.0\",\n    \"langgraph>=0.3.27,<0.4.0\",\n    \"llama-index>=0.12.52\",\n    \"loguru>=0.7.3\",\n    \"markdown>=3.9\",\n    \"markdownify>=1.2.0\",\n    \"matplotlib>=3.10.7\",\n    \"mcp>=1.20.0\",\n    \"minio==7.2.18\",\n    \"miniopy-async>=1.23.4\",\n    \"openai>=1.68.2,<2.0.0\",\n    \"opencv-python>=4.12.0.88\",\n    \"opengauss-sqlalchemy>=2.4.0\",\n    \"openpyxl>=3.1.5\",\n    \"oracledb>=3.4.0\",\n    \"pandas>=2.3.3\",\n    \"pillow>=12.0.0\",\n    \"playwright==1.57.0\",\n    \"psycopg2-binary>=2.9.11\",\n    \"pyjwt>=2.10.1\",\n    \"pymongo>=4.15.3\",\n    \"pymupdf>=1.26.5\",\n    \"pymysql>=1.1.2\",\n    \"pypandoc>=1.15\",\n    \"python-docx>=1.2.0\",\n    \"python-pptx>=1.0.2\",\n    \"qdrant-client>=1.15.1\",\n    \"rapidfuzz>=3.14.3\",\n    \"redis>=7.0.1\",\n    \"scipy>=1.15.3\",\n    \"shapely>=2.1.2\",\n    \"sqlmodel>=0.0.27\",\n    \"supabase>=2.23.3\",\n    \"sympy>=1.14.0\",\n    \"transformers==4.57.1\",\n    \"uvicorn>=0.38.0\",\n    \"weaviate-client>=4.17.0\",\n    \"websockets>=15.0.1\",\n    \"xlrd>=2.0.2\",\n    \"zhipuai>=1.0.7\",\n    \"tabulate==0.9.0\",\n    \"httpx==0.27.1\",\n    \"alembic>=1.17.1\",\n    \"sync>=1.0.0\",\n    \"json-repair>=0.55.0\",\n    \"arxiv>=2.4.0\"\n]\n"
  },
  {
    "path": "src/backend/test/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/test/clean_milvus_es.py",
    "content": "from pymilvus import MilvusClient\nimport requests\nfrom sqlmodel import Session, create_engine, text\n\n\ndef clean_es(host, user_name, auth, exist_knowledge, es_index):\n    url = f'http://{host}/_stats'\n    search_url = f'http://{host}/%s/_search'\n    delete_by_query = f\"http://{host}/%s/_delete_by_query\"\n    col = requests.get(url, auth=(user_name, auth)).json()\n    for c in col.get('indices').keys():\n        if c in es_index:\n            print(c)\n            pageNum = 0\n            pageSize = 20\n            delete_list = set()\n            while True:\n                print(pageNum)\n                inp = {\n                    \"query\": {\n                        \"bool\": {\n                            \"must\": [],\n                            \"must_not\": [],\n                            \"should\": []\n                        }\n                    },\n                    \"from\": pageNum * pageSize,\n                    \"size\": pageSize,\n                    \"sort\": {},\n                    \"aggs\": {},\n                    \"track_total_hits\": True\n                }\n                query = search_url % c\n                resp = requests.post(query, auth=(user_name, auth), json=inp).json()\n                hists = resp.get(\"hits\").get(\"hits\")\n                for hit in hists:\n                    file_id = hit.get(\"_source\").get(\"metadata\").get(\"file_id\")\n                    if file_id not in exist_knowledge:\n                        delete_list.add(hit.get(\"_id\"))\n                pageNum += 1\n                if len(hists) != pageSize:\n                    break\n            delete_by_query_url = delete_by_query % c\n            inp = {\"query\": {\"bool\": {\"must\": [{\"ids\": {\"values\": delete_list}}]}}}\n            print(requests.post(delete_by_query_url, auth=(user_name, auth), json=inp).json())\n\n\ndef clean_milvus(host, exist_knowledge, collection_list):\n    milvus_cli = MilvusClient(uri=host)\n    collection = milvus_cli.list_collections()\n    for col in collection:\n        if col in collection_list:\n            # 遍历条记录\n            pageNum = 0\n            delete_list = []\n            while (True):\n                records = milvus_cli.query(collection_name=col,\n                                           output_fields=[\"pk\", 'file_id'],\n                                           filter='',\n                                           offset=pageNum * 10,\n                                           limit=10)\n                pageNum += 1\n                for record in records:\n                    pk = record['pk']\n                    file_id = record['file_id']\n                    if file_id not in exist_knowledge:\n                        delete_list.append(pk)\n\n                if len(records != 10):\n                    break\n            milvus_cli.delete(collection_name=col, pks=delete_list)\n\n\ndef mysql_query(mysql_url):\n    engine = create_engine(mysql_url, connect_args={}, pool_pre_ping=True)\n    with Session(engine) as session:\n        db_knowledgefile = session.exec(\n            text('select id, collection_name, index_name from knowledgefile')).all()\n        db_knowledge = session.exec(\n            text('select collection_name, index_name from knowledge')).all()\n\n        return {x[0]\n                for x in db_knowledgefile}, {x[0]\n                                             for x in db_knowledge}, {x[1]\n                                                                      for x in db_knowledge}\n\n\nmysql_url = 'mysql+pymysql://root:E1SkG0PaDMEPTAxY@192.168.106.116:3306/langflow?charset=utf8mb4'\nexist_knowledge, collection_list, es_list = mysql_query(mysql_url)\n# clean_es(\"192.168.106.116:9200\",\n#          'elastic',\n#          auth=\"\",\n#          exist_knowledge=exist_knowledge,\n#          es_index=es_list)\nclean_milvus(\"http://192.168.106.109:19530\",\n             exist_knowledge=exist_knowledge,\n             collection_list=collection_list)\n"
  },
  {
    "path": "src/backend/test/milvus_trans.py",
    "content": "import json\n\nimport requests\nfrom bisheng_langchain.embeddings import HostEmbeddings\nfrom bisheng_langchain.vectorstores import Milvus\nfrom pymilvus import Collection, MilvusClient, MilvusException\nfrom sqlmodel import Session, create_engine, text\n\nparams = {}\nparams['connection_args'] = {\n    'host': '192.168.106.116',\n    'port': '19530',\n    'user': '',\n    'password': '',\n    'secure': False,\n    'timeout': 3\n}\nparams['documents'] = []\nembedding = HostEmbeddings(model='multilingual-e5-large',\n                           host_base_url='http://192.168.106.12:9001/v2.1/models')\n\ndatabase_url = 'mysql+pymysql://root:E1SkG0PaDMEPTAxY@192.168.106.116:3306/langflow?charset=utf8mb4'\nengine = create_engine(database_url, connect_args={}, pool_pre_ping=True)\n\n\ndef milvus_trans():\n    params['collection_name'] = 'partition_text_embedding_ada_002_knowledge_1'\n    openai_target = Milvus.from_documents(embedding=embedding, **params)\n    print(\"ls\")\n    params['collection_name'] = 'partition_multilinguale5large_knowledge_1'\n    host_targe = Milvus.from_documents(embedding=embedding, **params)\n    with Session(engine) as session:\n        db_knowledge = session.exec(\n            text('select id, collection_name, model, index_name from knowledge')).all()\n        for knowledge in db_knowledge:\n            # if not knowledge[1].startswith('col'):\n            #     if knowledge[3].startswith('col'):\n            #         # 迁移完\n            #         print(f\"drop id={knowledge}\")\n            #         params['collection_name'] = knowledge[3]\n            #         cli = Milvus.from_documents(embedding=embedding, **params)\n            #         if cli.col:\n            #             cli.col.drop()\n            #         time.sleep(1)\n            #         continue\n            if knowledge[1].startswith('col'):\n                print(f'deal id={knowledge[0]} model={knowledge[2]} col={knowledge[1]}')\n                params['collection_name'] = knowledge[1]\n                cli = Milvus.from_documents(embedding=embedding, **params)\n                if not cli.col:\n                    print(f'escape id={knowledge[0]} col={knowledge[1]}')\n                    index_name = knowledge[1]\n                    col_name = f'partition_{knowledge[2]}_knowledge_1'.replace('-', '')\n                    sql = 'update knowledge set collection_name=\"%s\", index_name=\"%s\" where id=%d' % (\n                        col_name, index_name, knowledge[0])\n                    session.exec(sql)\n                    session.commit()\n                    continue\n                fields = [s.name for s in cli.col.schema.fields if s.name != 'pk']\n                print(fields)\n                pks = cli.col.query(expr='file_id>1')\n                pk_len = len(pks)\n                if pk_len == 0:\n                    continue\n                li = []\n                batch_size = 500\n                for i in range(0, pk_len, batch_size):\n                    end = min(i + batch_size, pk_len)\n                    pk_ids = [str(pk.get('pk')) for pk in pks[i:end]]\n                    pk_with_fields = cli.col.query(f\"pk in [{','.join(pk_ids)}]\",\n                                                   output_fields=fields)\n                    li.extend(pk_with_fields)\n                if knowledge[2] == 'text-embedding-ada-002':\n                    target = openai_target\n                elif knowledge[2] == 'multilingual-e5-large':\n                    target = host_targe\n                else:\n                    continue\n\n                insert_fields = [s.name for s in target.col.schema.fields if s.name != 'pk']\n                insert_dict = {\n                    'text': [],\n                    'vector': [],\n                    'file_id': [],\n                    'knowledge_id': [],\n                    'page': [],\n                    'source': [],\n                    'bbox': [],\n                    'extra': []\n                }\n                for data in li:\n                    insert_dict.get('text').append(data.get('text'))\n                    insert_dict.get('vector').append(data.get('vector'))\n                    insert_dict.get('file_id').append(data.get('file_id'))\n                    insert_dict.get('knowledge_id').append(f'{knowledge[0]}')\n\n                    if 'bbox' in fields:\n                        if data.get('bbox'):\n                            insert_dict.get('bbox').append(\n                                '{\"chunk_bboxes\":%s}' %\n                                (json.loads(data.get('bbox')).get('chunk_bboxes')))\n                            if json.loads(data.get('bbox')).get('source'):\n                                insert_dict.get('source').append(\n                                    json.loads(data.get('bbox')).get('source'))\n                            if json.loads(data.get('bbox')).get('chunk_bboxes')[0].get('page'):\n                                insert_dict.get('page').append(\n                                    json.loads(\n                                        data.get('bbox')).get('chunk_bboxes')[0].get('page'))\n                        else:\n                            insert_dict.get('bbox').append('')\n                    else:\n                        insert_dict.get('bbox').append('')\n                    if 'source' in fields:\n                        insert_dict.get('source').append(data.get('source'))\n                    if len(insert_dict.get('source')) != len(insert_dict.get('bbox')):\n                        insert_dict.get('source').append('')\n                    if 'page' in fields:\n                        insert_dict.get('page').append(data.get('page') if data.get('page') else 1)\n\n                    insert_dict.get('extra').append('')\n\n                total_count = len(li)\n                batch_size = 1000\n                for i in range(0, total_count, batch_size):\n                    # Grab end index\n                    end = min(i + batch_size, total_count)\n                    # Convert dict to list of lists batch for insertion\n                    insert_list = [insert_dict[x][i:end] for x in insert_fields]\n                    # Insert into the collection.\n                try:\n                    res: Collection\n                    res = target.col.insert(insert_list, timeout=100)\n                    print(res)\n                except MilvusException as e:\n                    print('Failed to insert batch starting at entity: %s/%s', i, total_count)\n                    raise e\n\n                index_name = knowledge[1]\n                col_name = f'partition_{knowledge[2]}_knowledge_1'.replace('-', '')\n                sql = 'update knowledge set collection_name=\"%s\", index_name=\"%s\" where id=%d' % (\n                    col_name, index_name, knowledge[0])\n                session.exec(sql)\n                session.commit()\n                print(f'deal_done id={knowledge[0]} index={index_name}')\n                cli.col.drop()\n                pass\n\n\nfrom pymilvus import Collection, MilvusClient, MilvusException\n\nimport json\n\nimport requests\n\n\ndef milvus_clean():\n    milvus_cli = MilvusClient(uri='http://192.168.106.109:19530')\n\n    collection = milvus_cli.list_collections()\n    for col in collection:\n        if col.startswith('tmp'):\n            print(col)\n            # collection_col = Collection(col, using=milvus_cli._using)\n            milvus_cli.drop_collection(col)\n\n            # try:\n            #     collection_col.release(timeout=1)\n            # except Exception:\n            #     continue\n\n\ndef elastic_clean():\n    url = 'http://192.168.106.109:9200/_stats'\n    user_name = 'elastic'\n    auth = 'MBDsrs5O_zHCE+12na3f'\n    del_url = 'http://192.168.106.109:9200/%s'\n    col = requests.get(url, auth=(user_name, auth)).json()\n    for c in col.get('indices').keys():\n        if c.startswith('tmp'):\n            print(c)\n            x = requests.delete(del_url % c, auth=(user_name, auth))\n        elif col.get('indices').get(c).get('primaries').get('docs').get('count') == 0:\n            print(c)\n            x = requests.delete(del_url % c, auth=(user_name, auth))\n            print(x)\n\n\nmilvus_clean()\n# elastic_clean()\n# milvus_trans()\n"
  },
  {
    "path": "src/backend/test/test.py",
    "content": "import asyncio\nimport json\nimport os\nimport sys\nimport time\n\nfrom aiohttp import web\n\nparent_dir = os.path.dirname(os.path.abspath(__file__)).replace('test', '')\nsys.path.append(parent_dir)\nos.environ['config'] = os.path.join(parent_dir, 'bisheng/config.dev.yaml')\n\nfrom bisheng.database.base import session_getter\nfrom bisheng.database.models.user import User\nfrom sqlalchemy import select\n\n\nasync def handle(request):\n\n    await asyncio.sleep(2)\n    response = {\n        'id':\n        'chatcmpl-1016',\n        'created':\n        time.time(),\n        'model':\n        'Qwen-14B-Chat',\n        'choices': [{\n            'index': 0,\n            'message': {\n                'role': 'assistant',\n                'content': 'ok'\n            },\n            'finish_reason': 'stop'\n        }],\n        'usage': {\n            'prompt_tokens': 34,\n            'total_tokens': 59,\n            'completion_tokens': 25\n        }\n    }\n    return web.Response(text=json.dumps(response))\n\n\napp = web.Application()\napp.router.add_post('/', handle)\n\n\ndef mysql_session():\n    with session_getter() as session:\n        print(session.exec(select(User).where(User.user_id == 1)).first())\n\n    print(session.exec(select(User).where(User.user_id == 2)).first())\n\n\nmysql_session()\n\n# if __name__ == '__main__':\n#     web.run_app(app, host='127.0.0.1', port=8080)\n\nfrom bisheng import CustomComponent\nfrom langchain.chains.base import Chain\nfrom typing import List, Optional, Dict, Any\nfrom langchain.callbacks.manager import (\n    AsyncCallbackManagerForChainRun,\n    CallbackManagerForChainRun,\n)\n\n\nclass InputChain(CustomComponent):\n    documentation: str = 'http://docs.bisheng.org/components/custom'\n\n    class Input(Chain):\n        output_key: str = \"text\"  #: :meta private:\n\n        @property\n        def input_keys(self) -> List[str]:\n            \"\"\"需要接受的key\n            \"\"\"\n            return ['question', 'dept']\n\n        def _call(\n            self,\n            inputs: Dict[str, Any],\n            run_manager: Optional[CallbackManagerForChainRun] = None,\n        ) -> Dict[str, str]:\n            print(inputs)\n            return {\"text\": \"ok\"}\n\n        async def _acall(\n            self,\n            inputs: Dict[str, Any],\n            run_manager: Optional[AsyncCallbackManagerForChainRun] = None,\n        ) -> Dict[str, str]:\n            print(inputs)\n            return {\"text\": \"ok\"}\n\n    def build_config(self):\n        return {'noNeed': {'display_name': 'Parameter'}}\n\n    def build(self, noNeed: str) -> Input:\n        return InputChain().Input()\n"
  },
  {
    "path": "src/backend/test/test_api.py",
    "content": "import json\nimport os\nfrom typing import Optional\n\nimport requests\n\n\ndef _test_python_code():\n    from bisheng import load_flow_from_json\n\n    TWEAKS = {\n        'PyPDFLoader-RJlDA': {},\n        'InputFileNode-hikjJ': {\n            'file_path':\n            'https://bisheng.dataelem.com/bisheng/1673?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20231025%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231025T093224Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=b124b651adcfb0aa3c86d821072fa81d3f8e7b42a39ec517f1d146353ef6867b'  # noqa\n        },\n        'InputNode-keWk3': {},\n        'Milvus-VzZtx': {},\n        'RetrievalQA-Y4e1R': {},\n        'CombineDocsChain-qrRE4': {},\n        'RecursiveCharacterTextSplitter-C6YSc': {},\n        'ProxyChatLLM-oWqpn': {\n            'elemai_api_key':\n            'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJiaXNoZW5nX29wZW42IiwiZXhwIjoxNzEzNzU0MjUyfQ.ww1l-GTBYJiHV3-U1JcacvWOqYPd-QMpuJIeuO9_OM8'  # noqa\n        },\n        'HostEmbeddings-EJq6w': {}\n    }\n    flow = load_flow_from_json('/Users/huangly/Downloads/⭐️ PDF文档摘要-zxf.json', tweaks=TWEAKS)\n    # Now you can use it like any chain\n    inputs = {'query': '合同甲方是谁', 'id': 'RetrievalQA-Y4e1R'}\n    print(flow(inputs))\n\n\ndef _test_uns():\n\n    import base64\n    import requests\n\n    # 使用场景1： 文件到tokens\n    url = 'http://192.168.106.12:10001/v1/etl4llm/predict'\n\n    filename = '/Users/huangly/Downloads/合同(1).pdf'\n    b64_data = base64.b64encode(open(filename, 'rb').read()).decode()\n    filename_type = '合同(1).pdf'\n\n    inp = dict(filename=filename_type,\n               b64_data=[b64_data],\n               mode='partition',\n               parameters={\n                   'start': 0,\n                   'n': None\n               })\n\n    resp = requests.post(url, json=inp).json()\n    print(resp)\n\n\n# API URL for the flow\n# 定义流程的 API URL\nBASE_API_URL = 'https://bisheng.dataelem.com/api/v1/process'\n\n\ndef batch_api(FLOW_ID='30231781-2f58-4cea-bcfc-c20ec65c58b8'):\n    questions = {\n        'questions': [\n            '安装pageoffice时页面报错，提示“写入注册表键时出错”，如何处理？', '操作现金回收，系统提示“银行流水未完成指认”，怎么办？',\n            '处置方案变更中--拟处置资产和成本金额为0，如何修改？', '处置方案中“处置效果与收益测算”模块的“处置参考价格”、“预计处置净收益”字段是什么含义，是如何取值的？',\n            '处置尽调环节，将多笔债权的合同导入系统后，页面应该展示每笔合同对应的金额，但目前页面展示的是债权总额，为什么会这样？', '传统收购尽调的折现公式是什么？',\n            '传统收购尽调录入完成后还需要在系统进行哪些操作？', '对一笔临时的回款做回收资金操作，还款计划变更和资金回收确认应该先做哪个？',\n            '方案内容有错误需要修改，但此时方案已经提交到总部，如何操作？', '方案审批的时候，只能下载，不能预览', '合作备忘录出资比例应该如何填写？',\n            '合作立项审批协办机构为什么看不见审批流程？', '老系统的单据在新系统如何打印？', '批复逾期，项目需要重新发起方案，应该如何操作？', '如何参加股权决策小组成员？',\n            '如何查询债权资产的当前管理责人？', '如何申请结项项目的查询权限？', '如何通过债务人的名称查询项目信息？', '如何增加系统权限？', '是否可以更改项目名称？',\n            '收购成本变更对后续流程有什么影响？', '提前还本的线上操作流程', '提前还款如何操作？', '为什么不能下载附件？', '为什么没有可用的电子印章？',\n            '无法新增还款计划变更，怎么处理？', '误操作提交了合作备忘录，如何补救？', '项目立项时，项目类型字段选项是空的，应该怎么处理？',\n            '项目立项已经审批完成，如何修改项目名称？', '一笔资金流水如何才能关联多个项目？', 'SPV的优先、中间、劣后分层资产信息怎么录入？',\n            '处置简版审批方案是否还需要处长审批？', '当天的银行流水什么时候才能在核心系统查询到？', '导入excel报错，如何解决？', '合作备忘录的审批流程是怎么样的？',\n            '江苏分公司在进行处置方案审批表决时，如果已经有李明、张楠、方可、刘宇、芦苇进行了投票，而吴天文没有投票，请问可以进入下一步流程吗？',\n            '客户是国企并且属于能源类企业，请问在立项时归口管理部门应该选择哪个部门？', '客户为房地产行业的国企，请问在做“其他投放类”的立项时，归口管理部门应该选择哪个部门？',\n            '立项审批已完成，此时发现数据有误，是否可以在尽调的时候对立项数据进行修改？', '两个分公司合作的项目，应该由谁来上传方案的回复意见？',\n            '其他投放类收购尽调，要确认法院涉诉黑名单，应该在哪里操作？', '如何申请新核心系统的权限？', '使用核心系统对电脑的浏览器有什么要求？',\n            '提前还款时，资金的入账顺序是先入本金还是先入利息？', '未处置孳息数据的核算口径', '项目立项审批阶段，是否可以选择其他处室的负责人来审批？',\n            '需要修改合作备忘录中的出资规模比例，应该使用哪个功能？', '已经提交尽调审批，如何修改信息？',\n            '浙江分公司与江苏分公司合作的项目，由浙江分公司发起立项，请问需要到江苏分公司进行备案吗？', '资金申领审批之前是否必须对收款方做反洗钱排查？'\n        ]\n    }\n\n    # You can tweak the flow by adding a tweaks dictionary\n    # 通过添加一个 tweaks 字典来调整流程\n    # 例如：{\"OpenAI-XXXXX\": {\"model_name\": \"gpt-4\"}}\n\n    def run_flow(inputs: dict, flow_id: str, session_id: Optional[str] = None) -> dict:\n        \"\"\"\n        Run a flow with a given message and optional tweaks.\n        运行流程，使用给定的消息和可选的调整参数。\n        :param message: 要发送到流程的消息\n        :param flow_id: 要运行的流程的ID\n        :param tweaks: 可选的调整参数，用于自定义流程\n        :return: 流程的 JSON 响应\n        \"\"\"\n        api_url = f'{BASE_API_URL}/{flow_id}'\n        payload = {'inputs': inputs, 'session_id': session_id}\n        response = requests.post(api_url, json=payload, timeout=30)\n        print(f'response {response.status_code}')\n        return response.json()\n\n    # Iterate over each question\n    # 遍历每个问题\n    session_id = None\n    for ques in questions['questions']:\n        inputs = {'query': ques, 'id': 'SequentialChain-xgOSC'}\n        # Run the flow with the question as input\n        # 使用问题作为输入运行流程\n        res = run_flow(inputs, flow_id=FLOW_ID, session_id=session_id)\n        session_id = res['data']['session_id']\n\n        # Add the question to the response\n        # 将问题添加到响应中\n        res['question'] = ques\n        # Create the directory if it doesn't exist\n        # 如果目录不存在则创建目录\n        os.makedirs('./GPT4', exist_ok=True)\n        # Save the response as a JSON file\n        # 将响应保存为 JSON 文件\n        with open(f'./GPT4/GPT4_res_{ques}.json', 'w') as f:\n            json.dump(res, f, ensure_ascii=False, indent=2)\n        # Print the result\n        # 打印结果\n        print(f'Response {ques}')\n\n\n# _test_python_code()\n# _test_uns()\n# test_input()\nbatch_api()\n"
  },
  {
    "path": "src/backend/test/test_docx.py",
    "content": "from docx import Document\n\n\ndef show_sec(sec):\n    print('---sec info---')\n    print('page height', sec.page_height)\n    print('page width', sec.page_width)\n    print('page left margin', sec.left_margin)\n    print('page right margin', sec.right_margin)\n    print('page top margin', sec.top_margin)\n    print('page bottom margin', sec.bottom_margin)\n\n\ndef show_para(para, doc):\n    print('\\n\\n---para info---')\n    print('para style', para.style.name)\n    font = doc.styles[para.style.name].font\n    print('para font', font.name, font.size)\n\n    print('align', para.paragraph_format.alignment)\n    print('left indent', para.paragraph_format.left_indent)\n    print('right indent', para.paragraph_format.right_indent)\n    print('first line indent', para.paragraph_format.first_line_indent)\n    print('line space', para.paragraph_format.line_spacing)\n    print('space before', para.paragraph_format.space_before)\n    print('space after', para.paragraph_format.space_after)\n\n\ndef show_run_info(run, doc):\n    print('---run info---')\n    print('run style', [run.style.type, run.style.name, run.style.font.size])\n\n    print('run part', run.part)\n    print('run element', run.element)\n    print('run font name', run.font.name)\n    print('run font size', run.font.size)\n\n\ndef test(document):\n    print('-------------DEBUG---------')\n    secs = document.sections\n    for sec in secs:\n        show_sec(sec)\n\n    paras = document.paragraphs\n    for para in paras:\n        show_para(para, document)\n        for run in para.runs:\n            show_run_info(run, document)\n            print('run.text', [run.text])\n\n    styles = document.styles\n    for s in styles:\n        print('style', s)\n    print('---------------')\n\n    core_properties = document.core_properties\n    for idx, uu in enumerate(dir(core_properties)[27:]):\n        print(idx, uu)\n\n\ndocument = Document('bisheng.docx')\ntest(document)\n"
  },
  {
    "path": "src/backend/test/test_es.py",
    "content": "import os\nimport sys\nfrom langchain_elasticsearch import ElasticsearchStore\nfrom bisheng_langchain.vectorstores import Milvus\n\nparent_dir = os.path.dirname(os.path.abspath(__file__)).replace('test', '')\nsys.path.append(parent_dir)\nos.environ['config'] = os.path.join(parent_dir, 'bisheng/config.dev.yaml')\nfrom bisheng.interface.embeddings.custom import FakeEmbedding\n\nembedding = FakeEmbedding()\n\n\ndef data_migrate(host_milvus: str, target_es: str, col_name: str):\n    params = {}\n    params['connection_args'] = {\n        'host': host_milvus,\n        'port': '19530',\n        'secure': False,\n        'timeout': 3\n    }\n    params['documents'] = []\n    params['collection_name'] = col_name\n\n    from_milvus = Milvus.from_documents(embedding=embedding, **params)\n    vectorstore = ElasticsearchStore(embedding=embedding,\n                                     index_name=col_name,\n                                     es_url=target_es,\n                                     es_user=\"elastic\",\n                                     es_password=\"oSGL-zVvZ5P3Tm7qkDLC\")\n    fields = [s.name for s in from_milvus.col.schema.fields if s.name != 'pk']\n    pks = from_milvus.col.query(expr='file_id>1')\n    pk_len = len(pks)\n    print(f\"milvus_len={pk_len}\")\n    if pk_len == 0:\n        return\n    li = []\n    batch_size = 500\n    for i in range(0, pk_len, batch_size):\n        print(i)\n        end = min(i + batch_size, pk_len)\n        pk_ids = [str(pk.get('pk')) for pk in pks[i:end]]\n        pk_with_fields = from_milvus.col.query(f\"pk in [{','.join(pk_ids)}]\", output_fields=fields)\n\n        text_embedding = [(data.pop(\"text\"), data.pop(\"vector\")) for data in pk_with_fields]\n        print(vectorstore.add_embeddings(text_embeddings=text_embedding, metadatas=pk_with_fields))\n\n\ndef data_migrage_milvus(host_milvus: str, target_host: str, col_name):\n    params = {}\n    params['connection_args'] = {\n        'host': host_milvus,\n        'port': '19530',\n        'secure': False,\n        'timeout': 3\n    }\n    params['documents'] = []\n    params['collection_name'] = col_name\n    from_milvus = Milvus.from_documents(embedding=embedding, **params)\n    params['connection_args']['host'] = target_host\n\n    target_milvus = Milvus.from_documents(embedding=embedding, **params)\n    fields = [s.name for s in from_milvus.col.schema.fields if s.name != 'pk']\n    pks = from_milvus.col.query(expr='file_id>1')\n    pk_len = len(pks)\n    print(f\"milvus_len={pk_len}\")\n    if pk_len == 0:\n        return\n\n    batch_size = 500\n    target_fields = [s.name for s in target_milvus.col.schema.fields if s.name != 'pk']\n    for i in range(0, pk_len, batch_size):\n        print(i)\n        end = min(i + batch_size, pk_len)\n        pk_ids = [str(pk.get('pk')) for pk in pks[i:end]]\n        # [{text: vector...}]\n        pk_with_fields = from_milvus.col.query(f\"pk in [{','.join(pk_ids)}]\", output_fields=fields)\n        insert_list = []\n        for field in target_fields:\n            insert_list.append([x.get(field) for x in pk_with_fields])\n        res = target_milvus.col.insert(pk_with_fields, timeout=100)\n        print(f\"batch_insert_donw res={res}\")\n\n\ndata_migrate(\"192.168.106.109\", \"http://192.168.106.115:9200\",\n             'partition_text_embedding_ada_002_knowledge_1')\n\ndata_migrage_milvus(\"192.168.106.109\", \"192.168.106.120\",\n                    'partition_text_embedding_ada_002_knowledge_1')\n"
  },
  {
    "path": "src/backend/test/test_filelib.py",
    "content": "import os\nimport sys\n\nimport requests\n# from bisheng.database.models.knowledge import KnowledgeCreate\n\nparent_dir = os.path.dirname(os.path.abspath(__file__)).replace('test', '')\nsys.path.append(parent_dir)\nos.environ['config'] = os.path.join(parent_dir, 'bisheng/config.dev.yaml')\n\nurl_host = 'http://{ip}:{port}/api'.format(ip='127.0.0.1', port=7860)\n\n\ndef test_env():\n    requests.get(url_host / 'v1/env')\n\n\ndef test_upload():\n    file = {'file': open('../../Downloads/合同.pdf', 'rb')}\n    resp = requests.post('http://127.0.0.1:7860/api/v2/filelib/file/1',\n                         json={'callback_url': '123'},\n                         files=file)\n    resp\n\n\ndef test_file(knowledge_id: int):\n    url = url_host + '/v2/filelib/chunks'\n    data = {'knowledge_id': knowledge_id, 'metadata': \"{\\\"url\\\":\\\"https://baidu.com\\\"}\"}\n    file = {'file': open('/Users/huangly/Downloads/co2.pdf', 'rb')}\n\n    resp = requests.post(url=url, data=data, files=file)\n    print(resp.text)\n    resp\n\n\ndef string_knowledge(knowledge_id: int):\n    url = url_host + '/v2/filelib/chunks_string'\n    json_data = {\n        'knowledge_id':\n        knowledge_id,\n        'documents': [{\n            'page_content': '达梦有多少专利和知识产权？',\n            'metadata': {\n                'source': '达梦有多少专利和知识产权？.txt',\n                'url': 'http://baidu.com',\n                'answer': '达梦共有177个已获授权专利情况，293个软件著作权情况',\n                'page': 1\n            }\n        }]\n    }\n    resp = requests.post(url=url, json=json_data)\n    print(resp.text)\n    resp\n\n\ndef test_upload2():\n    url = 'http://192.168.106.116:7862/api/v2/filelib/file/252'\n    data = {'callback_url': 'https://baidu.com'}\n    file = {'file': open('/Users/huangly/Downloads/co2.pdf', 'rb')}\n\n    resp = requests.post(url=url, data=data, files=file)\n    resp\n\n\ndef test_create():\n    url = url_host + '/v2/filelib/'\n    inp = KnowledgeCreate(name='es_index',\n                          description='test',\n                          model='multilingual-e5-large',\n                          user_id=1,\n                          is_partition=False)\n    resp = requests.post(url=url, json=inp.model_dump())\n    print(resp.text)\n    return resp\n\n\n# # test_create()\n# test_file(479)\n# # string_knowledge(471)\ntest_upload()\n"
  },
  {
    "path": "src/backend/test/test_gpts.py",
    "content": "import asyncio\nimport os\nimport sys\nfrom uuid import UUID\n\nparent_dir = os.path.dirname(os.path.abspath(__file__)).replace('test', '')\nsys.path.append(parent_dir)\nos.environ['config'] = os.path.join(parent_dir, 'bisheng/config.dev.yaml')\nfrom bisheng.api.services.assistant_agent import AssistantAgent\nfrom bisheng.database.models.assistant import AssistantDao\n\n\nasync def test_init_tools():\n    assistant = AssistantDao.get_one_assistant(UUID(\"379988576e884c62b3c2c4015245ddb6\"))\n    gpts_agent = AssistantAgent(assistant, \"123\", 1)\n    await gpts_agent.init_assistant()\n    print(gpts_agent)\n\n\nasyncio.run(test_init_tools())\n"
  },
  {
    "path": "src/backend/test/test_llm.py",
    "content": "def test(func: callable):\n    func('123')\n\n\ndef auto_gen():\n    flow_id = '4e533fed-7bb1-4bee-a6f3-ae6dffdc7801'\n\n    print(flow_id)\n\n\ntest(str)\n"
  },
  {
    "path": "src/backend/test/test_node.py",
    "content": "import requests\n\nALL_NODE = {\n    'chains': {\n        'TransformChain', 'ConversationalRetrievalChain', 'LoaderOutputChain', 'MultiRuleChain',\n        'RetrievalQAWithSourcesChain', 'LLMMathChain', 'CombineDocsChain', 'RuleBasedRouter',\n        'SequentialChain', 'LLMRouterChain', 'SimpleSequentialChain', 'LLMCheckerChain',\n        'SQLDatabaseChain', 'LLMChain', 'APIChain', 'DalleGeneratorChain', 'MidJourneyPromptChain',\n        'AutoGenChain', 'RetrievalChain', 'SeriesCharacterChain', 'RetrievalQA',\n        'MultiPromptChain', 'ConversationChain', 'TimeTravelGuideChain'\n    },\n    'agents': {\n        'LLMFunctionsAgent', 'AgentInitializer', 'ZeroShotAgent', 'SQLAgent', 'JsonAgent',\n        'VectorStoreAgent', 'CSVAgent', 'ChatglmFunctionsAgent', 'VectorStoreRouterAgent'\n    },\n    'prompts': {\n        'SystemMessagePromptTemplate', 'ChatPromptTemplate', 'ChatMessagePromptTemplate',\n        'PromptTemplate', 'HumanMessagePromptTemplate', 'MessagesPlaceholder'\n    },\n    'llms': {\n        'ChatWenxin', 'ChatQWen', 'HostQwenChat', 'ChatMinimaxAI', 'CTransformers', 'HostYuanChat',\n        'HostChatGLM', 'SenseChat', 'AzureChatOpenAI', 'LlamaCpp', 'CustomLLMChat', 'ChatZhipuAI',\n        'ProxyChatLLM', 'Cohere', 'HostQwen1_5Chat', 'OpenAI', 'HostLlama2Chat', 'Anthropic',\n        'HostYiChat', 'VertexAI', 'HuggingFaceHub', 'ChatXunfeiAI', 'HostBaichuanChat',\n        'ChatAnthropic', 'ChatOpenAI'\n    },\n    'memories': {\n        'ConversationKGMemory', 'ConversationBufferWindowMemory', 'ConversationEntityMemory',\n        'PostgresChatMessageHistory', 'VectorStoreRetrieverMemory', 'ConversationSummaryMemory',\n        'MongoDBChatMessageHistory', 'ConversationBufferMemory'\n    },\n    'tools': {\n        'Calculator', 'GoogleSearchResults', 'JsonListKeysTool', 'WikipediaQueryRun',\n        'RequestsDeleteTool', 'QuerySQLDataBaseTool', 'PythonREPLTool', 'RequestsGetTool',\n        'PythonFunction', 'InfoSQLDatabaseTool', 'RequestsPostTool', 'RequestsPatchTool',\n        'ListSQLDatabaseTool', 'RequestsPutTool', 'GoogleSerperRun', 'BingSearchRun',\n        'PythonFunctionTool', 'GoogleSearchRun', 'Search', 'JsonGetValueTool', 'PythonAstREPLTool',\n        'JsonSpec', 'WolframAlphaQueryRun', 'Tool'\n    },\n    'toolkits': {\n        'VectorStoreRouterToolkit', 'VectorStoreInfo', 'OpenAPIToolkit', 'VectorStoreToolkit',\n        'JsonToolkit'\n    },\n    'wrappers': {'DallEAPIWrapper', 'SQLDatabase', 'TextRequestsWrapper'},\n    'embeddings': {\n        'WenxinEmbeddings', 'HuggingFaceEmbeddings', 'OpenAIEmbeddings', 'HostEmbeddings',\n        'OpenAIProxyEmbedding', 'CohereEmbeddings', 'CustomHostEmbedding'\n    },\n    'vectorstores': {\n        'ElasticKeywordsSearch', 'FAISS', 'MongoDBAtlasVectorSearch', 'Milvus', 'Weaviate',\n        'Pinecone', 'Qdrant', 'Chroma', 'SupabaseVectorStore'\n    },\n    'documentloaders': {\n        'EverNoteLoader', 'PyPDFLoader', 'UniversalKVLoader', 'SlackDirectoryLoader',\n        'WebBaseLoader', 'CustomKVLoader', 'GitbookLoader', 'TextLoader', 'HNLoader',\n        'IMSDbLoader', 'ElemUnstructuredLoaderV0', 'PyPDFDirectoryLoader', 'SRTLoader',\n        'ReadTheDocsLoader', 'CSVLoader', 'CollegeConfidentialLoader', 'BSHTMLLoader',\n        'DirectoryLoader', 'AZLyricsLoader', 'IFixitLoader', 'AirbyteJSONLoader',\n        'FacebookChatLoader', 'GitLoader', 'NotionDirectoryLoader', 'CoNLLULoader',\n        'GutenbergLoader', 'PDFWithSemanticLoader'\n    },\n    'textsplitters': {'CharacterTextSplitter', 'RecursiveCharacterTextSplitter'},\n    'utilities': {\n        'SearxSearchWrapper', 'WikipediaAPIWrapper', 'GoogleSearchAPIWrapper', 'SerpAPIWrapper',\n        'WolframAlphaAPIWrapper', 'GoogleSerperAPIWrapper', 'BingSearchAPIWrapper'\n    },\n    'output_parsers': {'StructuredOutputParser', 'ResponseSchema'},\n    'retrievers': {'MixEsVectorRetriever'},\n    'input_output': {'VariableNode', 'InputNode', 'Report', 'InputFileNode'},\n    'autogen_roles': {\n        'AutoGenCoder', 'AutoGenUser', 'AutoGenGroupChatManager', 'AutoGenCustomRole',\n        'AutoGenAssistant'\n    },\n    'custom_components': {'Data'}\n}\n\n\ndef test_build():\n    flow_id = '27abf101-050d-4cbc-9b3b-4e912fe14c87'\n    headers = {}\n    # headers = {\n    #     'Cookie':\n    #     'access_token_cookie=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJ1c2VyX25hbWVcIjogXCJhZG1pblwiLCBcInVzZXJfaWRcIjogMywgXCJyb2xlXCI6IFwiYWRtaW5cIn0iLCJpYXQiOjE3MDQ2OTU3NDQsIm5iZiI6MTcwNDY5NTc0NCwianRpIjoiMDBjNTFhMjUtNWIyNi00MGY4LWFiMTEtNzJhNTYxM2MzOTUyIiwiZXhwIjoxNzA0NzgyMTQ0LCJ0eXBlIjoiYWNjZXNzIiwiZnJlc2giOmZhbHNlfQ.zJxytrpW3J5zxLb9gzo7oImPaQlIqtZ9AE0g2Tx0RZY;'\n    # }  # noqa\n    # init\n    init_url = 'http://127.0.0.1:7860/api/v1/build/init/' + flow_id\n    inp = {'chat_id': '1232'}\n    requests.post(init_url, json=inp, headers=headers)\n    build_url = 'http://127.0.0.1:7860/api/v1/build/stream/' + flow_id\n\n    resp = requests.get(url=build_url, headers=headers)\n    resp\n\n\ndef verify_nodes():\n    test_api = \"http://127.0.0.1:3001/api/v1/all\"\n    res = requests.get(test_api).json()\n    for k, v in res.get(\"data\").items():\n        last_version = ALL_NODE.get(k)\n        if not last_version:\n            print(f\"add_new_cate {k}\")\n        else:\n            for node in v.keys():\n                if node not in last_version:\n                    print(f\"add_new_node {node}\")\n\n            for node in last_version:\n                if node not in set(v.keys()):\n                    print(f\"miss node {node}\")\n\n\n#test_build()\nverify_nodes()\n"
  },
  {
    "path": "src/backend/test/test_ws.py",
    "content": "import json\nimport time\nimport asyncio\n\nfrom multiprocessing import Process, Queue, Pool\nfrom websockets import connect\n\nhost = \"192.168.106.120\"\nport = 3003\n\n\nasync def test_websocket(assistant_id: str, token: str, chat_id: str):\n    ws_url = f'ws://{host}:{port}/api/v1/assistant/chat/{assistant_id}?t={token}&chat_id={chat_id}'\n    st = time.time()\n    async with connect(uri=ws_url) as websocket:\n        st2 = time.time()\n        await websocket.send(json.dumps({\n            \"inputs\": {\"input\": \"你好\"}\n        }))\n        st3 = time.time()\n        first_cost = 0\n        stream_cost = 0\n        over_cost = 0\n        while True:\n            msg = await websocket.recv()\n            if msg is None:\n                continue\n            msg = json.loads(msg)\n            if first_cost == 0:\n                first_cost = time.time() - st3\n            print(\"------------client receive msg ----------\", msg)\n            if msg['type'] == 'stream':\n                if stream_cost == 0:\n                    stream_cost = time.time() - st3\n            elif msg['type'] == 'close':\n                if over_cost == 0:\n                    over_cost = time.time() - st3\n                break\n    # 建立连接耗时，客户端发送消息耗时，从发送消息到收到首条回复的耗时，接受到模型流失输出的耗时，全部返回完毕的耗时\n    return st2 - st, st3 - st2, first_cost, stream_cost, over_cost\n\n\ndef test_one(queue: Queue, *args):\n    res = asyncio.run(test_websocket(*args))\n    queue.put(res)\n\n\ndef test_more_ws():\n    # 纯模型对话，无其他任何的技能和工具\n    assistant_id = \"aa7f588c-e8a3-41a7-9316-80b30bc0ec22\"\n    # 产品提供的业务股票场景问答\n    # assistant_id = \"0359764d-db4d-440b-ae16-7bbd80e0a005\"\n\n    token = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJ1c2VyX25hbWVcIjogXCJhZG1pblwiLCBcInVzZXJfaWRcIjogMywgXCJyb2xlXCI6IFwiYWRtaW5cIn0iLCJpYXQiOjE3MTI2NjA2ODMsIm5iZiI6MTcxMjY2MDY4MywianRpIjoiMWE0YzZlM2MtYTIwNi00MzQxLTg4ZmYtMWRlNjNkYjFkYjg0IiwiZXhwIjoxNzEyNzQ3MDgzLCJ0eXBlIjoiYWNjZXNzIiwiZnJlc2giOmZhbHNlfQ.A4-BOXZl7m4UPhRFCdNfo7TCHpoDY1B-YYDvkN5bqh4\"\n    chat_id = \"zgqtest_\"\n    max_num = 100\n    p_list = []\n    queue = Queue(maxsize=max_num)\n    st = time.time()\n    for i in range(max_num):\n        tmp_chat_id = chat_id + str(i)\n        p = Process(target=test_one,\n                    args=(queue, assistant_id, token, tmp_chat_id),\n                    name='test_ws_' + str(i))\n        p_list.append(p)\n        p.start()\n\n    for one in p_list:\n        one.join()\n\n    all_over_time = time.time() - st\n    total_connect_time = 0\n    total_client_send_time = 0\n    total_first_reply_time = 0\n    total_llm_stream_time = 0\n    total_over_time = 0\n    i = 0\n    while not queue.empty():\n        i += 1\n        res = queue.get()\n        total_connect_time += res[0]\n        total_client_send_time += res[1]\n        total_first_reply_time += res[2]\n        total_llm_stream_time += res[3]\n        total_over_time += res[4]\n        print(f'========== client res\\n'\n              f'connect_time: {res[0]}\\n'\n              f'send_time: {res[1]}\\n'\n              f'reply_time: {res[2]}\\n'\n              f'stream_time: {res[3]}\\n'\n              f'over_time: {res[4]}\\n')\n\n    print(f'****** suc_client: {i}\\n'\n          f'avg_connect_time: {total_connect_time / i}\\n'\n          f'avg_client_send_time: {total_client_send_time / i}\\n'\n          f'avg_first_reply_time: {total_first_reply_time / i}\\n'\n          f'avg_llm_stream_time: {total_llm_stream_time / i}\\n'\n          f'avg_over_time: {total_over_time / i}\\n'\n          f'all_over_time: {all_over_time}\\n'\n          )\n\n\nif __name__ == \"__main__\":\n    test_more_ws()\n"
  },
  {
    "path": "src/backend/test/workflow/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/test/workflow/nodes/__init__.py",
    "content": ""
  },
  {
    "path": "src/backend/test/workflow/nodes/test_docx_replace.py",
    "content": "import unittest\n\nfrom docx.enum.text import WD_ALIGN_PARAGRAPH\n\nfrom bisheng.workflow.nodes.report.docx_replace import DocxReplacer\n\n\nclass TestDocxReplacer(unittest.TestCase):\n    def setUp(self):\n        # need to prepare \"test.png\"、\"test_chart1.png\" in the same directory\n        self.replacer = DocxReplacer(\"template.docx\")\n\n    def test_case(self):\n        variables = {\n            \"var_1\": [\n                {\"type\": \"text\", \"content\": \"这是正文 \"},\n                {\"type\": \"text\", \"content\": \"这是粗体\", \"bold\": True},\n                {\"type\": \"text\", \"content\": \" 继续正文\"}\n            ],\n            \"middle_placeholder\": [\n                {\"type\": \"heading\", \"content\": \"数据表格\", \"level\": 2},\n                {\n                    \"type\": \"table\",\n                    \"content\": [\n                        [\n                            [\n                                {\"type\": \"text\", \"content\": \"列\", \"italic\": True, \"alignment\": WD_ALIGN_PARAGRAPH.LEFT},\n                                {\"type\": \"text\", \"content\": \"1\", \"bold\": True, \"alignment\": WD_ALIGN_PARAGRAPH.LEFT}\n                            ],\n                            {\"type\": \"text\", \"content\": \"列2\", \"bold\": True, \"alignment\": WD_ALIGN_PARAGRAPH.RIGHT}\n                        ],\n                        [\n                            {\"type\": \"text\", \"content\": \"数据1\"},\n                            {\"type\": \"text\", \"content\": \"数据2\"}\n                        ]\n                    ]\n                }\n            ],\n            \"report_date.123#1\": [\n                {\"type\": \"text\", \"content\": \"2024-06-01\"}\n            ],\n            \"project_name\": [\n                {\"type\": \"text\", \"content\": \"文档替换工具开发\"}\n            ],\n            \"executive_summary\": [\n                {\"type\": \"text\", \"content\": \"本报告总结了文档替换工具的开发过程和使用方法。\"},\n                {\"type\": \"image\", \"content\": \"test_chart1.png\", \"width\": 5},\n                {\"type\": \"text\", \"content\": \"图表如上所示，展示了关键数据指标。\"},\n                {\"type\": \"table\", \"content\": [\n                    [\n                        {\"type\": \"text\", \"content\": \"指标\", \"bold\": True},\n                        {\"type\": \"text\", \"content\": \"数值\", \"bold\": True},\n                    ],\n                    [\n                        {\"type\": \"text\", \"content\": \"指标A\"},\n                        {\"type\": \"text\", \"content\": \"100\"},\n                    ], [\n                        {\"type\": \"text\", \"content\": \"指标B\"},\n                        {\"type\": \"text\", \"content\": \"200\"},\n                    ],\n                ]}\n            ],\n            \"detailed_analysis\": [\n                {\"type\": \"text\", \"content\": \"详细分析部分内容丰富，涵盖多个方面的数据解读。\"},\n                {\"type\": \"heading\", \"content\": \"子标题：数据趋势\", \"level\": 3},\n                {\"type\": \"text\", \"content\": \"通过对比历史数据，我们发现以下趋势...\"}\n            ],\n            \"chart_section\": [\n                {\"type\": \"heading\", \"content\": \"红色图\", \"level\": 3},\n                {\"type\": \"image\", \"content\": \"test.png\"}\n            ],\n            \"example_placeholder\": [\n                {\"type\": \"text\", \"content\": \"这是一个示例占位符的替换内容。\"}\n            ],\n            \"table_title\": [\n                {\"type\": \"text\", \"content\": \"以下是示例数据表格：\"}\n            ],\n            \"table_date\": [\n                {\"type\": \"text\", \"content\": \"2024-06-01\"}\n            ],\n            \"table_status\": [\n                {\"type\": \"text\", \"content\": \"已完成\"}\n            ],\n            \"table_desc\": [\n                {\"type\": \"text\", \"content\": \"这是表格的描述信息。\"}\n            ],\n            \"table_value\": [\n                {\"type\": \"text\", \"content\": \"数值12345\"}\n            ],\n            \"table_summary\": [\n                {\"type\": \"text\", \"content\": \"表格总结信息。\"}\n            ],\n            \"table_end\": [\n                {\"type\": \"text\", \"content\": \"表格结束语。\"}\n            ],\n            \"only_placeholder\": [\n                {\"type\": \"text\", \"content\": \"仅包含占位符的替换内容。\"}\n            ],\n            \"with_spaces\": [\n                {\"type\": \"text\", \"content\": \"包含空格的    替换内容。\"}\n            ],\n            \"first\": [\n                {\"type\": \"text\", \"content\": \"ONE\"}\n            ],\n            \"second\": [\n                {\"type\": \"text\", \"content\": \"TWO\"}\n            ],\n            \"third\": [\n                {\"type\": \"text\", \"content\": \"THREE\"}\n            ]\n        }\n        all_variables = self.replacer.extract_variables()\n        print(all_variables)\n\n        # 使用替换器\n        self.replacer.replace_and_save(variables, \"output.docx\")\n        print(\"文档替换完成！\")\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "src/backend/test/workflow/nodes/test_docx_string.py",
    "content": "import re\nimport unittest\nfrom unittest import TestCase\n\nfrom bisheng.workflow.nodes.report.text_classification import Patterns\nfrom bisheng.workflow.nodes.report.text_classification import TextClassificationReport\n\nsample_text = \"\"\"\n# Sample Report\n\n## 二级标题\n\n### 三级标题\n\n#### 四级标题\n\n##### 五级标题\n\n###### 六级标题\n\n####### 七级标题\n\nThis is a sample report with an image and a table.\n![Sample Image](https://example.com/image.png)\nhttps://example.com/data.xlsx\nhttp://example.com/data.csv\nhttp://example.com/image.jpg\nhttp://example.com/image.png\nhttp://example.com/image.bmp\nhttp://example.com/image.gif\nhttp://example.com/image.webp\n\n/bisheng/tmp1.png?dadsaa=adas /bisheng/tmp2.png\n\n你好吗？这是**重点**\n你好？这也是__重点__\n| Header 1 | Header 2 |\n|----------|----------|\n| Data 1   | Data **2**   |\n\"\"\"\n\n\nclass TestDocxStringClassification(TestCase):\n    def setUp(self):\n        self.text_classification = TextClassificationReport(\"/tmp/bisheng\")\n\n    def test_patterns(self):\n        for one in Patterns:\n            print(f\"\\n\\nPattern Name: {one.name}, Type: {one.resource_type}\\n\\n\")\n            match_text = []\n            for match in re.finditer(one.pattern, sample_text, flags=one.flags):\n                raw_text = match.group(0)\n                match_text.append(raw_text)\n            if not match_text:\n                print(f\"No matches found for pattern: {one.name}\")\n            else:\n                print(f\"Matches found for pattern: {match_text}\")\n\n    def test_text_classification(self):\n        all_data = self.text_classification.get_all_classified_data(sample_text)\n        print(all_data)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": "src/backend/test1.py",
    "content": ""
  },
  {
    "path": "src/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\nyarn.lock\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "src/frontend/Dockerfile",
    "content": "FROM node:20-alpine as frontend_build\nARG BACKEND\nWORKDIR /app\nCOPY . /app\nRUN cd /app/platform && npm install --registry=https://registry.npmmirror.com && npm run build\nRUN cd /app/client && npm install --registry=https://registry.npmmirror.com && npm run build\n\nFROM nginx\nCOPY --from=frontend_build /app/platform/build/ /usr/share/nginx/html/platform\nCOPY --from=frontend_build /app/client/build/ /usr/share/nginx/html/client\nCOPY /nginx.conf /etc/nginx/conf.d/default.conf\n"
  },
  {
    "path": "src/frontend/client/babel.config.cjs",
    "content": "/*\n\nbabel is used for frontend unit testing\n\n*/\nmodule.exports = {\n  presets: [\n    ['@babel/preset-env', { 'targets': { 'node': 'current' } }], //compiling ES2015+ syntax\n    ['@babel/preset-react', { runtime: 'automatic' }],\n    '@babel/preset-typescript',\n  ],\n  /*\n      Babel's code transformations are enabled by applying plugins (or presets) to your configuration file.\n  */\n  plugins: [\n    '@babel/plugin-transform-runtime',\n    'babel-plugin-transform-import-meta',\n    'babel-plugin-transform-vite-meta-env',\n    'babel-plugin-replace-ts-export-assignment',\n    [\n      'babel-plugin-root-import',\n      {\n        'rootPathPrefix': '~/',\n        'rootPathSuffix': './src',\n      },\n    ],\n  ],\n};\n"
  },
  {
    "path": "src/frontend/client/check_updates.sh",
    "content": "#!/bin/bash\n\n# Set the directory containing the package.json file\ndir=${1:-.}\n\n# Today's date and the date 3 days ago in seconds since the Unix epoch\ntoday=$(date +%s)\nthree_days_ago=$(date -d \"3 days ago\" +%s)\n\n# Read dependencies and devDependencies from package.json\ndependencies=$(jq -r '.dependencies,.devDependencies|keys[]' \"$dir/package.json\")\npackages=($dependencies) # Convert JSON array to bash array\n\n# Array to hold update messages\ndeclare -a updates\n\n# Loop over each package\nfor pkg in \"${packages[@]}\"\ndo\n    echo \"Checking $pkg...\"\n    # Retrieve the version time information as JSON\n    times=$(npm view \"$pkg\" time --json)\n\n    # Loop through dates from the JSON object and check if any are within the last 3 days\n    echo $times | jq -r '. | to_entries[] | select(.key as $k | $k|test(\"^[0-9]\")) | [.key, .value] | @csv' | while IFS=\",\" read -r version date\n    do\n        # Format the date to remove quotes and trim it\n        date=$(echo $date | tr -d '\"' | xargs)\n        # Convert date to seconds since the Unix epoch\n        version_date=$(date -d \"$date\" +%s)\n\n        # Check if this date is within the last three days\n        if (( version_date > three_days_ago && version_date <= today ))\n        then\n            # Convert UTC to Eastern Time (ET), ensuring compatibility\n            et_date=$(date -u -d \"$date\" +\"%Y-%m-%d %H:%M:%S UTC\")\n            et_date=$(date -d \"$et_date -4 hours\" +\"%Y-%m-%d %H:%M:%S ET\")\n            update_message=\"Version $version of $pkg was released on $et_date\"\n            echo \"$update_message\"\n            updates+=(\"$update_message\")\n        fi\n    done\ndone\n\n# Display all collected updates\nif [ ${#updates[@]} -eq 0 ]; then\n    echo \"No recent updates found within the last three days.\"\nelse\n    echo \"Recent updates within the last three days:\"\n    printf \"%s\\n\" \"${updates[@]}\"\nfi\n"
  },
  {
    "path": "src/frontend/client/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en-US\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <meta name=\"theme-color\" content=\"#171717\" />\n  <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n  <meta name=\"description\" content=\"Deepseek - An open source chat application with support for multiple AI models\" />\n  <title>BISHENG</title>\n  <script src=\"PROTOCAL_IGNORE/assets/bisheng/config.js?v=<%= Date.now() %>\"></script>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, interactive-widget=resizes-content\" />\n  <style>\n    html,\n    body {\n      margin: 0;\n      padding: 0;\n      height: 100%;\n    }\n  </style>\n  <!-- <script src=\"http://192.168.2.224:9000/vditor.js\" defer></script> -->\n  <script>\n    document.title = window.BRAND_CONFIG.brandName.en\n\n    const theme = localStorage.getItem('color-theme');\n    const loadingContainerStyle = document.createElement('style');\n    let backgroundColor;\n\n    if (theme === 'dark') {\n      backgroundColor = '#0d0d0d';\n    } else if (theme === 'light') {\n      backgroundColor = '#ffffff';\n    } else if (theme === 'system') {\n      const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;\n      backgroundColor = prefersDarkScheme ? '#0d0d0d' : '#ffffff';\n    } else {\n      backgroundColor = '#ffffff';\n    }\n\n    loadingContainerStyle.innerHTML = `\n        #loading-container {\n          display: flex;\n          align-items: center;\n          justify-content: center;\n          height: 100vh;\n          background-color: ${backgroundColor};\n        }\n      `;\n    document.head.appendChild(loadingContainerStyle);\n  </script>\n  <script defer type=\"module\" src=\"/src/main.jsx\"></script>\n</head>\n\n<body>\n  <div id=\"root\">\n    <div id=\"loading-container\"></div>\n  </div>\n</body>\n\n</html>"
  },
  {
    "path": "src/frontend/client/jest.config.cjs",
    "content": "module.exports = {\n  roots: ['<rootDir>/src'],\n  testEnvironment: 'jsdom',\n  testEnvironmentOptions: {\n    url: 'http://localhost:3080',\n  },\n  collectCoverage: true,\n  collectCoverageFrom: [\n    'src/**/*.{js,jsx,ts,tsx}',\n    '!<rootDir>/node_modules/',\n    '!src/**/*.css.d.ts',\n    '!src/**/*.d.ts',\n  ],\n  coveragePathIgnorePatterns: ['<rootDir>/node_modules/', '<rootDir>/test/setupTests.js'],\n  //  Todo: Add coverageThreshold once we have enough coverage\n  //  Note: eventually we want to have these values set to 80%\n  // coverageThreshold: {\n  //   global: {\n  //     functions: 9,\n  //     lines: 40,\n  //     statements: 40,\n  //     branches: 12,\n  //   },\n  // },\n  moduleNameMapper: {\n    '\\\\.(css)$': 'identity-obj-proxy',\n    '\\\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':\n      'jest-file-loader',\n    '^test/(.*)$': '<rootDir>/test/$1',\n    '^~/(.*)$': '<rootDir>/src/$1',\n    '^~/data-provider/data-provider/src/react-query$': '<rootDir>/../node_modules/~/data-provider/data-provider/src/src/react-query',\n  },\n  restoreMocks: true,\n  testResultsProcessor: 'jest-junit',\n  coverageReporters: ['text', 'cobertura', 'lcov'],\n  transform: {\n    '\\\\.[jt]sx?$': 'babel-jest',\n    '\\\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':\n      'jest-file-loader',\n  },\n  transformIgnorePatterns: ['node_modules/?!@zattoo/use-double-click'],\n  preset: 'ts-jest',\n  setupFilesAfterEnv: ['@testing-library/jest-dom/extend-expect', '<rootDir>/test/setupTests.js'],\n  clearMocks: true,\n};\n"
  },
  {
    "path": "src/frontend/client/nginx.conf",
    "content": "# Secure default configuration generated by Mozilla SSL Configuration Generator\n# generated 2024-01-21, Mozilla Guideline v5.7, nginx 1.24.0, OpenSSL 3.1.4, intermediate configuration\n# https://ssl-config.mozilla.org/#server=nginx&version=1.24.0&config=intermediate&openssl=3.1.4&guideline=5.7\n\nserver {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n\n    # To Configure SSL, comment all lines within the Non-SSL section and uncomment all lines under the SSL section. \n    ########################################  Non-SSL  ########################################\n    server_name localhost;\n \n    # https://docs.nginx.com/nginx/admin-guide/web-server/compression/\n    # gzip on;\n    # gzip_vary on;\n    # gzip_proxied any;\n    # gzip_comp_level 6;\n    # gzip_buffers 16 8k;\n    # gzip_http_version 1.1;\n    # gzip_types text/css application/javascript application/json application/octet-stream;\n\n    # Increase the client_max_body_size to allow larger file uploads\n    # The default limits for image uploads as of 11/22/23 is 20MB/file, and 25MB/request\n    client_max_body_size 25M;\n\n    location /api/ {\n        proxy_pass http://api:3080$request_uri;\n    }\n\n    location / {\n        proxy_pass http://api:3080/;\n    }\n\n    ########################################  SSL  ########################################\n#    # Redirect all http traffic to https\n#    location / {\n#        return 301 https://$host$request_uri;\n#    }\n}\n\n#server {\n#    listen 443 ssl http2;\n#    listen [::]:443 ssl http2;\n\n#    https://docs.nginx.com/nginx/admin-guide/web-server/compression/\n#    gzip on;\n#    gzip_vary on;\n#    gzip_proxied any;\n#    gzip_comp_level 6;\n#    gzip_buffers 16 8k;\n#    gzip_http_version 1.1;\n#    gzip_types text/css application/javascript application/json application/octet-stream;\n\n#    ssl_certificate /etc/nginx/ssl/nginx.crt;\n#    ssl_certificate_key /etc/nginx/ssl/nginx.key;\n#    ssl_session_timeout 1d;\n#    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions\n#    ssl_session_tickets off;\n\n#    # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /etc/nginx/ssl/dhparam\n#    ssl_dhparam /etc/nginx/ssl/dhparam;\n\n#    # intermediate configuration\n#    ssl_protocols TLSv1.2 TLSv1.3;\n#    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;\n#    ssl_prefer_server_ciphers off;\n\n#    # HSTS (ngx_http_headers_module is required) (63072000 seconds)\n#    add_header Strict-Transport-Security \"max-age=63072000\" always;\n\n#    # OCSP stapling\n#    ssl_stapling on;\n#    ssl_stapling_verify on;\n\n#    # verify chain of trust of OCSP response using Root CA and Intermediate certs\n#    ssl_trusted_certificate /etc/nginx/ssl/ca.crt;\n\n#    # replace with the IP address of your resolver\n#    resolver 127.0.0.1;\n\n#    server_name localhost;\n \n#    # Increase the client_max_body_size to allow larger file uploads\n#    # The default limits for image uploads as of 11/22/23 is 20MB/file, and 25MB/request\n#    client_max_body_size 25M;\n\n#    location /api {\n#        proxy_pass http://api:3080/api;\n#    }\n\n#    location / {\n#        proxy_pass http://api:3080;\n#    }\n#}\n"
  },
  {
    "path": "src/frontend/client/package.json",
    "content": "{\n  \"name\": \"bishengchat\",\n  \"version\": \"2.2.0\",\n  \"description\": \"\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"start\": \"cross-env NODE_ENV=development vite\",\n    \"build\": \"cross-env NODE_ENV=production vite build\",\n    \"data-provider\": \"cd .. && npm run build:data-provider\",\n    \"build:file\": \"cross-env NODE_ENV=production vite build --debug > vite-output.log 2>&1\",\n    \"build:ci\": \"cross-env NODE_ENV=development vite build --mode ci\",\n    \"preview-prod\": \"cross-env NODE_ENV=development vite preview\",\n    \"test\": \"cross-env NODE_ENV=development jest --watch\",\n    \"test:ci\": \"cross-env NODE_ENV=development jest --ci\",\n    \"b:test\": \"NODE_ENV=test bunx jest --watch\",\n    \"b:build\": \"NODE_ENV=production bun --bun vite build\",\n    \"b:dev\": \"NODE_ENV=development bunx vite\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@ariakit/react\": \"^0.4.15\",\n    \"@ariakit/react-core\": \"^0.4.15\",\n    \"@codesandbox/sandpack-react\": \"^2.19.10\",\n    \"@dicebear/collection\": \"^7.0.4\",\n    \"@dicebear/core\": \"^7.0.4\",\n    \"@headlessui/react\": \"^2.1.2\",\n    \"@radix-ui/react-accordion\": \"^1.1.2\",\n    \"@radix-ui/react-alert-dialog\": \"^1.0.2\",\n    \"@radix-ui/react-checkbox\": \"^1.0.3\",\n    \"@radix-ui/react-collapsible\": \"^1.0.3\",\n    \"@radix-ui/react-dialog\": \"^1.0.2\",\n    \"@radix-ui/react-dropdown-menu\": \"^2.1.1\",\n    \"@radix-ui/react-hover-card\": \"^1.0.5\",\n    \"@radix-ui/react-icons\": \"^1.3.0\",\n    \"@radix-ui/react-label\": \"^2.0.0\",\n    \"@radix-ui/react-popover\": \"^1.0.7\",\n    \"@radix-ui/react-progress\": \"^1.1.2\",\n    \"@radix-ui/react-radio-group\": \"^1.1.3\",\n    \"@radix-ui/react-select\": \"^2.0.0\",\n    \"@radix-ui/react-separator\": \"^1.0.3\",\n    \"@radix-ui/react-slider\": \"^1.1.1\",\n    \"@radix-ui/react-switch\": \"^1.0.3\",\n    \"@radix-ui/react-tabs\": \"^1.0.3\",\n    \"@radix-ui/react-toast\": \"^1.1.5\",\n    \"@radix-ui/react-tooltip\": \"^1.2.7\",\n    \"@tanstack/react-query\": \"^4.28.0\",\n    \"@tanstack/react-table\": \"^8.11.7\",\n    \"axios\": \"^1.8.4\",\n    \"class-variance-authority\": \"^0.6.0\",\n    \"clsx\": \"^1.2.1\",\n    \"copy-to-clipboard\": \"^3.3.3\",\n    \"cross-env\": \"^7.0.3\",\n    \"date-fns\": \"^3.3.1\",\n    \"downloadjs\": \"^1.4.7\",\n    \"echarts\": \"^6.0.0\",\n    \"export-from-json\": \"^1.7.2\",\n    \"filenamify\": \"^6.0.0\",\n    \"framer-motion\": \"11.5.4\",\n    \"howler\": \"^2.2.4\",\n    \"html-to-image\": \"^1.11.11\",\n    \"i18next\": \"^24.2.2\",\n    \"i18next-browser-languagedetector\": \"^8.0.3\",\n    \"immer\": \"^10.1.1\",\n    \"input-otp\": \"^1.4.2\",\n    \"js-cookie\": \"^3.0.5\",\n    \"js-yaml\": \"^4.1.0\",\n    \"lodash\": \"^4.17.21\",\n    \"lucide-react\": \"^0.544.0\",\n    \"mammoth\": \"^1.10.0\",\n    \"match-sorter\": \"^6.3.4\",\n    \"msedge-tts\": \"^1.3.4\",\n    \"openapi-types\": \"^12.1.3\",\n    \"pdfjs-dist\": \"3.10.111\",\n    \"qrcode.react\": \"^4.2.0\",\n    \"rc-input-number\": \"^7.4.2\",\n    \"react\": \"^18.2.0\",\n    \"react-avatar-editor\": \"^13.0.2\",\n    \"react-beautiful-dnd\": \"^13.1.1\",\n    \"react-dnd\": \"^16.0.1\",\n    \"react-dnd-html5-backend\": \"^16.0.1\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-flip-toolkit\": \"^7.1.0\",\n    \"react-gtm-module\": \"^2.0.11\",\n    \"react-hook-form\": \"^7.43.9\",\n    \"react-i18next\": \"^15.4.0\",\n    \"react-lazy-load-image-component\": \"^1.6.0\",\n    \"react-markdown\": \"^9.0.1\",\n    \"react-resizable-panels\": \"^2.1.7\",\n    \"react-router-dom\": \"^6.11.2\",\n    \"react-speech-recognition\": \"^3.10.0\",\n    \"react-textarea-autosize\": \"^8.4.0\",\n    \"react-transition-group\": \"^4.4.5\",\n    \"react-virtualized\": \"^9.22.6\",\n    \"react-window\": \"^1.8.11\",\n    \"recoil\": \"^0.7.7\",\n    \"regenerator-runtime\": \"^0.14.1\",\n    \"rehype-highlight\": \"^6.0.0\",\n    \"rehype-katex\": \"^6.0.3\",\n    \"remark-directive\": \"^3.0.0\",\n    \"remark-gfm\": \"^4.0.0\",\n    \"remark-math\": \"^6.0.0\",\n    \"remark-supersub\": \"^1.0.0\",\n    \"sse.js\": \"^2.5.0\",\n    \"tailwind-merge\": \"^1.14.0\",\n    \"tailwindcss-animate\": \"^1.0.5\",\n    \"tailwindcss-radix\": \"^2.8.0\",\n    \"uuid\": \"^11.1.0\",\n    \"vditor\": \"file:local-packages/vditor-3.11.1.tgz\",\n    \"vite-plugin-compression2\": \"^2.3.0\",\n    \"vite-plugin-html\": \"^3.2.2\",\n    \"vite-plugin-static-copy\": \"^3.1.1\",\n    \"zod\": \"^3.22.4\"\n  },\n  \"devDependencies\": {\n    \"@babel/plugin-transform-runtime\": \"^7.22.15\",\n    \"@babel/preset-env\": \"^7.22.15\",\n    \"@babel/preset-react\": \"^7.22.15\",\n    \"@babel/preset-typescript\": \"^7.22.15\",\n    \"@tanstack/react-query-devtools\": \"^4.29.0\",\n    \"@testing-library/dom\": \"^9.3.0\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^14.0.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/jest\": \"^29.5.14\",\n    \"@types/js-cookie\": \"^3.0.6\",\n    \"@types/node\": \"^20.3.0\",\n    \"@types/react\": \"^18.2.11\",\n    \"@types/react-dom\": \"^18.2.4\",\n    \"@vitejs/plugin-react\": \"^4.2.1\",\n    \"autoprefixer\": \"^10.4.20\",\n    \"babel-plugin-replace-ts-export-assignment\": \"^0.0.2\",\n    \"babel-plugin-root-import\": \"^6.6.0\",\n    \"babel-plugin-transform-import-meta\": \"^2.3.2\",\n    \"babel-plugin-transform-vite-meta-env\": \"^1.0.3\",\n    \"eslint-plugin-jest\": \"^28.11.0\",\n    \"identity-obj-proxy\": \"^3.0.0\",\n    \"jest\": \"^29.7.0\",\n    \"jest-canvas-mock\": \"^2.5.2\",\n    \"jest-environment-jsdom\": \"^29.7.0\",\n    \"jest-file-loader\": \"^1.0.3\",\n    \"jest-junit\": \"^16.0.0\",\n    \"postcss\": \"^8.4.31\",\n    \"postcss-loader\": \"^7.1.0\",\n    \"postcss-preset-env\": \"^8.2.0\",\n    \"rollup-plugin-visualizer\": \"^6.0.5\",\n    \"tailwindcss\": \"^3.4.1\",\n    \"ts-jest\": \"^29.2.5\",\n    \"typescript\": \"^5.3.3\",\n    \"vite\": \"^6.3.6\",\n    \"vite-plugin-compression2\": \"^2.2.1\",\n    \"vite-plugin-node-polyfills\": \"^0.23.0\",\n    \"vite-plugin-pwa\": \"^0.21.2\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/postcss.config.cjs",
    "content": "module.exports = {\n  plugins: [\n    // require('postcss-import'),\n    // require('postcss-preset-env'),\n    require('tailwindcss'),\n    require('autoprefixer'),\n  ],\n};"
  },
  {
    "path": "src/frontend/client/public/assets/bisheng/config.js",
    "content": "window.BRAND_CONFIG = {\n    // 1. 系统品牌名称\n    brandName: {\n        zh: \"BISHENG\",\n        en: \"BISHENG\"\n    },\n\n    // 2. 灵思智能体\n    linsightAgentName: {\n        zh: \"灵思\",\n        en: \"Linsight\"\n    },\n\n    // 3. 灵思中英文结合展示名\n    linsightFullName: {\n        zh: \"灵思Linsight\",\n        en: \"Linsight\"\n    },\n\n    // 4. Loading 图标配置\n    // 支持相对路径 (如 /branding/loading.gif) 或 完整的 URL (如 https://cdn.com/icon.png)\n    loadingIcon: \"\",\n    loadingAnimation: \"\" // animate-spin | animate-ping | animate-pulse | animate-bounce\n};"
  },
  {
    "path": "src/frontend/client/public/robots.txt",
    "content": "User-agent: *\nDisallow: /api/\nAllow: /"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/css/content-theme/ant-design.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n\n.vditor-reset {\n    color: rgba(0, 0, 0, .85);\n    font-size: 14px;\n    line-height: 2;\n}\n\n.vditor-reset img {\n    max-width: calc(100% - 32px);\n}\n\n.vditor-reset p > img {\n    margin: 34px 0;\n    box-shadow: 0 8px 20px rgba(143, 168, 191, 0.35);\n}\n\n.vditor-reset h1 {\n    margin-bottom: 20px;\n    color: rgba(0, 0, 0, .85);\n    font-weight: 500;\n    font-size: 30px;\n    font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif;\n    line-height: 38px\n}\n\n.vditor-reset h2 {\n    font-size: 24px;\n    line-height: 32px;\n}\n\n.vditor-reset h2,\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n    clear: both;\n    margin: 1.6em 0 .6em;\n    color: rgba(0, 0, 0, .85);\n    font-weight: 500;\n    font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif\n}\n\n.vditor-reset h3 {\n    font-size: 18px;\n}\n\n.vditor-reset h4 {\n    font-size: 16px;\n}\n\n.vditor-reset h5 {\n    font-size: 14px;\n}\n\n.vditor-reset h6 {\n    font-size: 12px;\n}\n\n.vditor-reset hr {\n    clear: both;\n    height: 1px;\n    margin: 56px 0;\n    background: #f0f0f0;\n    border: 0;\n}\n\n.vditor-reset p,\n.vditor-reset pre {\n    margin: 1em 0;\n}\n\n.vditor-reset ul > li {\n    margin-left: 20px;\n    padding-left: 4px;\n    list-style-type: circle;\n}\n\n.vditor-reset ol > li {\n    margin-left: 20px;\n    padding-left: 4px;\n    list-style-type: decimal;\n}\n\n.vditor-reset ul > li > p,\n.vditor-reset ol > li > p {\n    margin: 0.2em 0;\n}\n\n.vditor-reset code {\n    margin: 0 1px;\n    padding: .2em .4em;\n    font-size: .9em;\n    border-radius: 3px;\n    border: 1px solid #f0f0f0;\n    font-family: sfmono-regular, Consolas, liberation mono, Menlo, Courier, monospace;\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background: #f2f4f5;\n    color: rgba(0, 0, 0, .65);\n}\n\n.vditor-reset pre {\n    font-family: sfmono-regular, Consolas, liberation mono, Menlo, Courier, monospace;\n    border-radius: 2px;\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: rgba(0, 0, 0, .85);\n}\n\n.vditor-reset .language-graphviz polygon {\n    fill: transparent;\n}\n\n.vditor-reset strong,\n.vditor-reset b {\n    font-weight: 500;\n}\n\n.vditor-reset > table {\n    width: 100%;\n    margin: 8px 0 16px;\n    direction: ltr;\n    empty-cells: show;\n    border: 1px solid #f0f0f0;\n    border-collapse: collapse;\n    border-spacing: 0\n}\n\n.vditor-reset > table th {\n    color: #5c6b77;\n    font-weight: 500;\n    white-space: nowrap;\n    background: rgba(0, 0, 0, .02)\n}\n\n.vditor-reset > table th, .vditor-reset > table td {\n    padding: 16px 24px;\n    text-align: left;\n    border: 1px solid #f0f0f0\n}\n\n.vditor-reset blockquote {\n    margin: 1em 0;\n    padding-left: .8em;\n    color: rgba(0, 0, 0, .45);\n    font-size: 90%;\n    border-left: 4px solid #f0f0f0\n}\n\n.vditor-reset blockquote p {\n    margin: 0;\n}\n\n.vditor-reset .vditor-anchor {\n    margin-left: 8px;\n    opacity: 0;\n    transition: opacity 0.3s;\n}\n\n.vditor-reset h1:hover .vditor-anchor,\n.vditor-reset h2:hover .vditor-anchor,\n.vditor-reset h3:hover .vditor-anchor,\n.vditor-reset h4:hover .vditor-anchor,\n.vditor-reset h5:hover .vditor-anchor,\n.vditor-reset h6:hover .vditor-anchor {\n    display: inline-block;\n    opacity: 1;\n}\n\n.vditor-reset > br,\n.vditor-reset > p > br {\n    clear: both;\n}\n\n.vditor-reset a, .vditor-ir__link {\n    color: #1890ff;\n    text-decoration: none;\n    outline: none;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/css/content-theme/dark.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset {\n    color: #d1d5da;\n}\n\n.vditor-reset a, .vditor-ir__link {\n    color: #4285f4;\n}\n\n.vditor-reset h1, .vditor-reset h2 {\n    padding-bottom: 0.3em;\n    border-bottom: 1px solid #d1d5da\n}\n\n.vditor-reset hr {\n    background-color: #d1d5da\n}\n\n.vditor-reset blockquote {\n    padding: 0 1em;\n    color: #b9b9b9;\n    border-left: .25em solid #d1d5da\n}\n\n.vditor-reset iframe {\n    border: 1px solid #141414\n}\n\n.vditor-reset table tr {\n    background-color: #2f363d\n}\n\n.vditor-reset table td, .vditor-reset table th {\n    border: 1px solid #dfe2e5\n}\n\n.vditor-reset table tbody tr:nth-child(2n) {\n    background-color: #24292e\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(66, 133, 244, .36);\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: #d1d5da;\n}\n\n.language-graphviz polygon {\n    fill: rgba(66, 133, 244, .36);\n}\n\n.vditor-reset kbd {\n    color: #d1d5da;\n    background-color: #2f363d;\n    border: 1px solid #141414;\n    box-shadow: inset 0 -1px 0 #141414\n}\n\n.vditor-copy svg {\n    color: #b9b9b9\n}\n\n.vditor-speech {\n    background-color: #1d2125;\n    border: 1px solid #141414;\n    color: #b9b9b9\n}\n\n.vditor-speech--current, .vditor-speech:hover {\n    color: #fff\n}\n\n.vditor-linkcard a {\n    background-color: #1d2125;\n}\n\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n    color: hsla(0, 0%, 72.5%, .36)\n}\n\n.vditor-linkcard__title {\n    color: #d1d5da\n}\n\n.vditor-linkcard__abstract {\n    color: #b9b9b9\n}\n\n.vditor-linkcard__site {\n    color: #fff\n}\n\n.vditor-linkcard__image {\n    background-color: hsla(0, 0%, 72.5%, .36)\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/css/content-theme/light.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset h1, .vditor-reset h2 {\n    padding-bottom: 0.3em;\n    border-bottom: 1px solid #eaecef;\n}\n\n.vditor-reset hr {\n    background-color: #eaecef;\n}\n\n.vditor-reset blockquote {\n    color: #6a737d;\n    border-left: .25em solid #eaecef\n}\n\n.vditor-reset iframe {\n    border: 1px solid #d1d5da\n}\n\n.vditor-reset table tr {\n    border-top: 1px solid #c6cbd1;\n    background-color: #fafbfc\n}\n\n.vditor-reset table td, .vditor-reset table th {\n    border: 1px solid #dfe2e5\n}\n\n.vditor-reset table tbody tr:nth-child(2n) {\n    background-color: #fff\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(27, 31, 35, .05);\n}\n\n.vditor-reset kbd {\n    color: #24292e;\n    background-color: #fafbfc;\n    border: solid 1px #d1d5da;\n    box-shadow: inset 0 -1px 0 #d1d5da;\n}\n\n.vditor-speech {\n    background-color: #f6f8fa;\n    border: 1px solid #d1d5da;\n    color: #586069;\n}\n\n.vditor-speech--current, .vditor-speech:hover {\n    color: #4285f4;\n}\n\n.vditor-linkcard a {\n    background-color: #f6f8fa;\n}\n\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n    color: rgba(88, 96, 105, 0.36);\n}\n\n.vditor-linkcard__title {\n    color: #24292e;\n}\n\n.vditor-linkcard__abstract {\n    color: #586069;\n}\n\n.vditor-linkcard__site {\n    color: #4285f4;\n}\n\n.vditor-linkcard__image {\n    background-color: rgba(88, 96, 105, 0.36);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/css/content-theme/wechat.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset {\n    font-family: \"mp-quote\", -apple-system-font, BlinkMacSystemFont, \"Helvetica Neue\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei UI\", \"Microsoft YaHei\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n    color: rgb(62, 62, 62);\n}\n\n.vditor-reset a,\n.vditor-ir__link {\n    color: #576b95;\n}\n\n.vditor-reset h1 {\n    font-weight: 400;\n    text-align: center;\n    color: rgb(26, 173, 25);\n    font-size: 24px;\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAAGElEQVQImWNkXs/wn4GKgImahjEwMDAAAA6aAbVUOzXRAAAAAElFTkSuQmCC);\n    background-repeat: no-repeat;\n    background-position: center bottom;\n}\n\n.vditor-reset h2 {\n    font-weight: 400;\n    text-align: center;\n    font-size: 20px;\n}\n\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n    font-weight: 400;\n}\n\n.vditor-reset hr {\n    border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n    transform-origin: 0 0;\n    transform: scale(1, 0.5);\n    height: 0;\n}\n\n.vditor-reset blockquote {\n    padding: 4px 0 0 10px;\n    border-left: 3px solid #dbdbdb;\n    color: #9a9a9a;\n    line-height: 1.6;\n    font-size: 15px;\n    margin: 1em 0;\n}\n\n.vditor-reset code {\n    font-size: 14px;\n    border: 1px solid #f0f0f0;\n    border-radius: 2px;\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(0, 0, 0, 0.03);\n    color: #333;\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: rgb(62, 62, 62);\n}\n\n.vditor-reset .language-graphviz polygon {\n    fill: transparent;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/index.css",
    "content": "/*!\n * Vditor v3.11.1 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n/*!\n * Vditor v3.11.1 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor {\n  --border-color: #d1d5da;\n  --second-color: rgba(88, 96, 105, 0.36);\n  --panel-background-color: #fff;\n  --panel-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n  --toolbar-background-color: #f6f8fa;\n  --toolbar-icon-color: #586069;\n  --toolbar-icon-hover-color: #4285f4;\n  --toolbar-height: 35px;\n  --toolbar-divider-margin-top: 8px;\n  --textarea-background-color: #fafbfc;\n  --textarea-text-color: #24292e;\n  --resize-icon-color: var(--toolbar-icon-color);\n  --resize-background-color: var(--toolbar-background-color);\n  --resize-hover-icon-color: var(--panel-background-color);\n  --resize-hover-background-color: var(--toolbar-icon-hover-color);\n  --count-background-color: rgba(27, 31, 35, 0.05);\n  --heading-border-color: #eaecef;\n  --blockquote-color: #6a737d;\n  --ir-heading-color: #660e7a;\n  --ir-title-color: #808080;\n  --ir-bi-color: #0033b3;\n  --ir-link-color: #008000;\n  --ir-bracket-color: #0000ff;\n  --ir-paren-color: #008000;\n}\n.vditor--dark {\n  --border-color: #141414;\n  --second-color: rgba(185, 185, 185, 0.36);\n  --panel-background-color: #24292e;\n  --panel-shadow: 0 1px 2px rgba(255, 255, 255, 0.2);\n  --toolbar-background-color: #1d2125;\n  --toolbar-icon-color: #b9b9b9;\n  --toolbar-icon-hover-color: #fff;\n  --textarea-background-color: #2f363d;\n  --textarea-text-color: #d1d5da;\n  --resize-icon-color: var(--border-color);\n  --resize-background-color: var(--second-color);\n  --resize-hover-icon-color: var(--toolbar-icon-hover-color);\n  --resize-hover-background-color: rgba(185, 185, 185, 0.86);\n  --count-background-color: rgba(66, 133, 244, 0.36);\n  --heading-border-color: var(--textarea-text-color);\n  --blockquote-color: var(--toolbar-icon-color);\n  --ir-heading-color: #9876aa;\n  --ir-title-color: #808080;\n  --ir-bi-color: #cc7832;\n  --ir-link-color: #ffc66d;\n  --ir-bracket-color: #287bde;\n  --ir-paren-color: #6a8759;\n}\n/**\n * tool tip.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 0.1.0.0, Jan 25, 2019\n */\n@keyframes tooltip-appear {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n.vditor-tooltipped {\n  position: relative;\n  cursor: pointer;\n}\n.vditor-tooltipped::after {\n  position: absolute;\n  z-index: 1000000;\n  display: none;\n  padding: 5px 8px;\n  font-size: 11px;\n  font-weight: normal;\n  -webkit-font-smoothing: subpixel-antialiased;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-wrap: break-word;\n  white-space: pre;\n  pointer-events: none;\n  content: attr(aria-label);\n  background: #3b3e43;\n  border-radius: 3px;\n  line-height: 16px;\n  opacity: 0;\n}\n.vditor-tooltipped::before {\n  position: absolute;\n  z-index: 1000001;\n  display: none;\n  width: 0;\n  height: 0;\n  color: #3b3e43;\n  pointer-events: none;\n  content: \"\";\n  border: 5px solid transparent;\n  opacity: 0;\n}\n.vditor-tooltipped--hover::before,\n.vditor-tooltipped--hover::after,\n.vditor-tooltipped:hover::before,\n.vditor-tooltipped:hover::after,\n.vditor-tooltipped:active::before,\n.vditor-tooltipped:active::after,\n.vditor-tooltipped:focus::before,\n.vditor-tooltipped:focus::after {\n  display: inline-block;\n  text-decoration: none;\n  animation-name: tooltip-appear;\n  animation-duration: 0.15s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease-in;\n}\n.vditor-tooltipped__s::after,\n.vditor-tooltipped__se::after,\n.vditor-tooltipped__sw::after {\n  top: 100%;\n  right: 50%;\n  margin-top: 5px;\n}\n.vditor-tooltipped__s::before,\n.vditor-tooltipped__se::before,\n.vditor-tooltipped__sw::before {\n  top: auto;\n  right: 50%;\n  bottom: -5px;\n  margin-right: -5px;\n  border-bottom-color: #3b3e43;\n}\n.vditor-tooltipped__se::after {\n  right: auto;\n  left: 50%;\n  margin-left: -15px;\n}\n.vditor-tooltipped__sw::after {\n  margin-right: -15px;\n}\n.vditor-tooltipped__n::after,\n.vditor-tooltipped__ne::after,\n.vditor-tooltipped__nw::after {\n  right: 50%;\n  bottom: 100%;\n  margin-bottom: 5px;\n}\n.vditor-tooltipped__n::before,\n.vditor-tooltipped__ne::before,\n.vditor-tooltipped__nw::before {\n  top: -5px;\n  right: 50%;\n  bottom: auto;\n  margin-right: -5px;\n  border-top-color: #3b3e43;\n}\n.vditor-tooltipped__ne::after {\n  right: auto;\n  left: 50%;\n  margin-left: -15px;\n}\n.vditor-tooltipped__nw::after {\n  margin-right: -15px;\n}\n.vditor-tooltipped__s::after,\n.vditor-tooltipped__n::after {\n  transform: translateX(50%);\n}\n.vditor-tooltipped__w::after {\n  right: 100%;\n  bottom: 50%;\n  margin-right: 5px;\n  transform: translateY(50%);\n}\n.vditor-tooltipped__w::before {\n  top: 50%;\n  bottom: 50%;\n  left: -5px;\n  margin-top: -5px;\n  border-left-color: #3b3e43;\n}\n.vditor-tooltipped__e::after {\n  bottom: 50%;\n  left: 100%;\n  margin-left: 5px;\n  transform: translateY(50%);\n}\n.vditor-tooltipped__e::before {\n  top: 50%;\n  right: -5px;\n  bottom: 50%;\n  margin-top: -5px;\n  border-right-color: #3b3e43;\n}\n@media screen and (max-width: 520px) {\n  .vditor-tooltipped:before,\n  .vditor-tooltipped:after {\n    content: none;\n  }\n}\n/**\n * panel.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 1.0.0.0, Jan 22, 2020\n */\n@keyframes scale-in {\n  0% {\n    opacity: 0;\n    transform: scale(0.5);\n  }\n  100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n.vditor-panel {\n  background-color: var(--panel-background-color);\n  position: absolute;\n  box-shadow: var(--panel-shadow);\n  border-radius: 3px;\n  padding: 5px;\n  z-index: 3;\n  font-size: 14px;\n  display: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  max-width: 320px;\n  min-width: 80px;\n  animation-duration: 0.15s;\n  animation-name: scale-in;\n  animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n  color: var(--toolbar-icon-color);\n}\n.vditor-panel--none {\n  padding: 0;\n  animation: none;\n  min-width: auto;\n  max-width: none;\n  white-space: nowrap;\n  opacity: 0.86;\n}\n.vditor-panel--arrow:before {\n  position: absolute;\n  width: 0;\n  height: 0;\n  pointer-events: none;\n  content: \" \";\n  border: 7px solid transparent;\n  top: -14px;\n  left: 5px;\n  border-bottom-color: var(--panel-background-color);\n}\n.vditor-panel--left {\n  right: 0;\n}\n.vditor-panel--left.vditor-panel--arrow:before {\n  right: 5px;\n  left: auto;\n}\n.vditor-input {\n  border: 0;\n  padding: 3px 5px;\n  background-color: var(--panel-background-color);\n  font-size: 12px;\n  color: var(--textarea-text-color);\n}\n.vditor-input:focus {\n  background-color: var(--toolbar-background-color);\n  outline: none;\n}\n.vditor-icon {\n  color: var(--toolbar-icon-color);\n  cursor: pointer;\n  float: left;\n  padding: 4px 5px;\n  height: 21px;\n  width: 23px;\n  background-color: transparent;\n  border: 0;\n  box-sizing: border-box;\n}\n.vditor-icon:hover,\n.vditor-icon--current {\n  color: var(--toolbar-icon-hover-color);\n  background-color: transparent;\n}\n.vditor-icon:focus {\n  outline: none;\n}\n.vditor-icon svg {\n  height: 13px !important;\n  width: 13px !important;\n  float: left;\n  fill: currentColor;\n  pointer-events: none;\n}\n.vditor-toolbar {\n  background-color: var(--toolbar-background-color);\n  border-bottom: 1px solid var(--border-color);\n  padding: 0 5px;\n  line-height: 1;\n}\n.vditor-toolbar--pin {\n  position: sticky;\n  top: 0;\n  z-index: 1;\n}\n.vditor-toolbar--hide {\n  transition: all 0.15s ease-in-out;\n  height: 5px;\n  overflow: hidden;\n}\n.vditor-toolbar--hide:hover {\n  background-color: var(--toolbar-background-color);\n  height: auto;\n  overflow: visible;\n}\n.vditor-toolbar__item {\n  float: left;\n  position: relative;\n}\n.vditor-toolbar__item .vditor-tooltipped {\n  color: var(--toolbar-icon-color);\n  border: 0;\n  padding: 10px 5px;\n  background-color: transparent;\n  height: var(--toolbar-height);\n  width: 25px;\n  box-sizing: border-box;\n  font-size: 0;\n}\n.vditor-toolbar__item .vditor-tooltipped:focus {\n  outline: none;\n}\n.vditor-toolbar__item .vditor-tooltipped:focus {\n  cursor: pointer;\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-toolbar__item svg {\n  fill: currentColor;\n  display: inline-block;\n  stroke-width: 0;\n  stroke: currentColor;\n  width: 15px;\n  height: 15px;\n}\n.vditor-toolbar__item input {\n  position: absolute;\n  width: 25px;\n  height: var(--toolbar-height);\n  top: 0;\n  left: 0;\n  cursor: pointer;\n  opacity: 0.001;\n  overflow: hidden;\n}\n.vditor-toolbar__divider {\n  float: left;\n  height: calc(var(--toolbar-height) - (var(--toolbar-divider-margin-top) * 2));\n  border-left: 1px solid var(--second-color);\n  margin: var(--toolbar-divider-margin-top) 8px;\n}\n.vditor-toolbar__br {\n  width: 100%;\n  padding: 0 !important;\n  height: 0 !important;\n}\n.vditor-menu--current {\n  color: var(--toolbar-icon-hover-color) !important;\n}\n.vditor-menu--disabled {\n  color: var(--second-color) !important;\n  cursor: not-allowed !important;\n}\n.vditor-emojis {\n  display: inline-block;\n  overflow: auto;\n}\n.vditor-emojis::-webkit-scrollbar {\n  display: none;\n}\n.vditor-emojis__tip {\n  flex: 1;\n  min-width: 1px;\n  width: 200px;\n  margin-right: 10px;\n  color: var(--toolbar-icon-color);\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.vditor-emojis__tail {\n  margin-top: 5px;\n  font-size: 12px;\n  color: var(--toolbar-icon-color);\n  display: flex;\n}\n.vditor-emojis__tail a {\n  text-decoration: none;\n  color: var(--toolbar-icon-color);\n}\n.vditor-emojis__tail a:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-emojis button {\n  cursor: pointer;\n  border-radius: 3px;\n  float: left;\n  height: 30px;\n  width: 30px;\n  text-align: center;\n  line-height: 26px;\n  padding: 3px;\n  box-sizing: border-box;\n  font-size: 16px;\n  transition: all 0.15s ease-in-out;\n  border: 0;\n  margin: 0;\n  background-color: transparent;\n  overflow: hidden;\n}\n.vditor-emojis button:focus {\n  outline: none;\n}\n.vditor-emojis button:hover .vditor-emojis__icon {\n  display: inline-block;\n  transform: scale(1.2);\n}\n.vditor-emojis img {\n  height: 20px;\n  width: 20px;\n  float: left;\n  margin: 3px 0 0 3px;\n}\n@media screen and (max-width: 520px) {\n  .vditor-toolbar__item {\n    padding: 0 12px;\n  }\n  .vditor-panel--left.vditor-panel--arrow:before {\n    right: 17px;\n  }\n}\n@media (hover: hover) and (pointer: fine) {\n  .vditor-toolbar__item .vditor-tooltipped:hover {\n    color: var(--toolbar-icon-hover-color);\n  }\n}\n@keyframes slideInDown {\n  from {\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n  to {\n    transform: translate3d(0, 0, 0);\n  }\n}\n.vditor {\n  display: flex;\n  flex-direction: column;\n  border: 1px solid var(--border-color);\n  border-radius: 3px;\n  box-sizing: border-box;\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n}\n.vditor--fullscreen {\n  position: fixed;\n  top: 0;\n  width: 100% !important;\n  left: 0;\n  height: 100vh !important;\n  z-index: 90;\n  border-radius: 0;\n}\n.vditor-content {\n  display: flex;\n  min-height: 60px;\n  flex: 1;\n  min-width: 1px;\n  position: relative;\n}\n.vditor-preview {\n  flex: 1;\n  min-width: 1px;\n  overflow: auto;\n  margin-left: -1px;\n  border-left: 1px solid var(--border-color);\n  box-sizing: border-box;\n  border-radius: 0 0 3px 0;\n  background-color: var(--textarea-background-color);\n}\n.vditor-preview::-webkit-scrollbar {\n  display: none;\n}\n.vditor-preview__action {\n  text-align: center;\n  padding: 10px;\n  background-color: var(--toolbar-background-color);\n}\n.vditor-preview__action button {\n  background-color: var(--toolbar-background-color);\n  color: var(--toolbar-icon-color);\n  line-height: 20px;\n  border: 0;\n  margin: 0 10px;\n  cursor: pointer;\n  padding: 0 7px;\n  font-size: 12px;\n}\n.vditor-preview__action button.vditor-preview__action--current,\n.vditor-preview__action button:hover {\n  color: var(--toolbar-icon-hover-color);\n  background-color: var(--toolbar-background-color);\n}\n.vditor-preview__action button:focus {\n  outline: none;\n}\n.vditor-preview__action button svg {\n  fill: currentColor;\n  height: 15px;\n  width: 15px;\n  vertical-align: middle;\n}\n.vditor-preview > .vditor-reset {\n  padding: 10px;\n  margin: 0 auto;\n}\n.vditor-preview img:not(.emoji) {\n  cursor: pointer;\n}\n.vditor-devtools {\n  display: none;\n  background-color: var(--textarea-background-color);\n  overflow: auto;\n  flex: 1;\n  min-width: 1px;\n  box-shadow: inset 1px 0 var(--border-color);\n  box-sizing: border-box;\n  border-radius: 0 0 3px 0;\n  padding: 10px;\n}\n.vditor-counter {\n  padding: 3px;\n  color: var(--toolbar-icon-color);\n  background-color: var(--count-background-color);\n  border-radius: 3px;\n  font-size: 12px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  float: right;\n  margin: 8px 3px 0 0;\n}\n.vditor-counter--error {\n  color: #d23f31;\n  background-color: rgba(210, 63, 49, 0.1);\n}\n.vditor-resize {\n  padding: 3px 0;\n  cursor: row-resize;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  position: absolute;\n  width: 100%;\n}\n.vditor-resize--top {\n  top: -3px;\n}\n.vditor-resize--bottom {\n  bottom: -3px;\n}\n.vditor-resize > div {\n  height: 3px;\n  background-color: var(--resize-background-color);\n  transition: all 0.15s ease-in-out;\n}\n.vditor-resize:hover > div,\n.vditor-resize--selected > div {\n  background-color: var(--resize-hover-background-color);\n}\n.vditor-resize:hover svg,\n.vditor-resize--selected svg {\n  color: var(--resize-hover-icon-color);\n}\n.vditor-resize svg {\n  fill: currentColor;\n  stroke-width: 0;\n  stroke: currentColor;\n  width: 13px;\n  height: 3px;\n  display: block;\n  margin: 0 auto;\n  color: var(--resize-icon-color);\n}\n.vditor-upload {\n  position: absolute;\n  height: 3px;\n  left: 0;\n  top: -2px;\n  transition: all 0.15s ease-in-out;\n  background-color: #4285f4;\n}\n.vditor-tip {\n  position: absolute;\n  font-size: 12px;\n  top: 10px;\n  animation-duration: 0.15s;\n  animation-fill-mode: both;\n  left: 50%;\n  z-index: 5;\n}\n.vditor-tip--show {\n  display: block;\n  animation-name: slideInDown;\n}\n.vditor-tip__content {\n  text-align: left;\n  display: inline-block;\n  line-height: 16px;\n  padding: 3px 10px;\n  border-radius: 3px;\n  background: var(--toolbar-background-color);\n  position: relative;\n  margin-left: -50%;\n  color: var(--toolbar-icon-color);\n  max-width: 100%;\n  box-shadow: var(--panel-shadow);\n}\n.vditor-tip__content ul {\n  margin: 2px 0;\n  padding: 0 0 0 18px;\n}\n.vditor-tip__content a {\n  color: #4285f4;\n}\n.vditor-tip__close {\n  position: absolute;\n  color: var(--toolbar-icon-color);\n  top: -7px;\n  right: -15px;\n  font-weight: bold;\n  cursor: pointer;\n}\n.vditor-tip__close:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-img {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  flex-direction: column;\n  z-index: 100;\n}\n.vditor-img__bar {\n  border-bottom: 1px solid var(--border-color);\n  background-color: var(--toolbar-background-color);\n  text-align: center;\n  height: 36px;\n  box-sizing: border-box;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.vditor-img__btn {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  margin-left: 24px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  color: var(--toolbar-icon-color);\n}\n.vditor-img__btn:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-img__btn svg {\n  height: 14px;\n  width: 14px;\n  margin-right: 8px;\n  fill: currentColor;\n}\n.vditor-img__img {\n  flex: 1;\n  background-color: var(--textarea-background-color);\n  overflow: auto;\n  cursor: zoom-out;\n}\n.vditor-img__img img {\n  max-width: none;\n}\n.vditor-hint {\n  background-color: var(--panel-background-color);\n  position: absolute;\n  box-shadow: var(--panel-shadow);\n  border-radius: 3px;\n  padding: 5px 0;\n  z-index: 4;\n  line-height: 20px;\n  list-style: none;\n  font-size: 12px;\n  margin: 0;\n  max-width: 250px;\n  min-width: 80px;\n  display: none;\n}\n.vditor-hint .vditor-hint {\n  margin-top: -31px;\n  left: 100%;\n  right: auto;\n}\n.vditor-hint .vditor-hint.vditor-panel--left {\n  right: 100%;\n  left: auto;\n}\n.vditor-hint button {\n  color: var(--toolbar-icon-color);\n  display: block;\n  padding: 3px 10px;\n  border: 0;\n  border-radius: 0;\n  line-height: 20px;\n  width: 100%;\n  box-sizing: border-box;\n  text-align: left;\n  margin: 0;\n  background-color: transparent;\n  cursor: pointer;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.vditor-hint button:focus {\n  outline: none;\n}\n.vditor-hint--current,\n.vditor-hint button:not(.vditor-menu--disabled):hover {\n  background-color: var(--toolbar-background-color) !important;\n  color: var(--toolbar-icon-hover-color) !important;\n}\n.vditor-hint__emoji {\n  font-size: 16px;\n  float: left;\n  margin-right: 3px;\n}\n.vditor-hint img {\n  height: 20px;\n  width: 20px;\n  float: left;\n  margin-right: 3px;\n}\n.vditor-reset {\n  color: #24292e;\n  font-variant-ligatures: no-common-ligatures;\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  word-wrap: break-word;\n  overflow: auto;\n  line-height: 1.5;\n  font-size: 16px;\n  word-break: break-word;\n}\n.vditor-reset--anchor {\n  padding-left: 20px;\n}\n.vditor-reset--error {\n  color: #d23f31;\n  font-size: 12px;\n  display: block;\n  line-height: 16px;\n}\n.vditor-reset ul ul ul {\n  list-style-type: square;\n}\n.vditor-reset ul ul {\n  list-style-type: circle;\n}\n.vditor-reset ul {\n  list-style-type: disc;\n}\n.vditor-reset ul,\n.vditor-reset ol {\n  padding-left: 2em;\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n.vditor-reset li + li {\n  margin-top: 0.25em;\n}\n.vditor-reset li p {\n  margin-top: 16px;\n}\n.vditor-reset audio {\n  max-width: 100%;\n}\n.vditor-reset audio:focus {\n  outline: none;\n}\n.vditor-reset video {\n  max-height: 90vh;\n  max-width: 100%;\n}\n.vditor-reset img {\n  max-width: 100%;\n}\n.vditor-reset img.emoji {\n  cursor: auto;\n  max-width: 20px;\n  vertical-align: sub;\n}\n.vditor-reset h1,\n.vditor-reset h2,\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n  margin-top: 24px;\n  margin-bottom: 16px;\n  font-weight: 600;\n  line-height: 1.25;\n}\n.vditor-reset h1:hover .vditor-anchor svg,\n.vditor-reset h2:hover .vditor-anchor svg,\n.vditor-reset h3:hover .vditor-anchor svg,\n.vditor-reset h4:hover .vditor-anchor svg,\n.vditor-reset h5:hover .vditor-anchor svg,\n.vditor-reset h6:hover .vditor-anchor svg {\n  visibility: visible;\n}\n.vditor-reset h1 {\n  font-size: 1.75em;\n}\n.vditor-reset h2 {\n  font-size: 1.55em;\n}\n.vditor-reset h3 {\n  font-size: 1.38em;\n}\n.vditor-reset h4 {\n  font-size: 1.25em;\n}\n.vditor-reset h5 {\n  font-size: 1.13em;\n}\n.vditor-reset h6 {\n  font-size: 1em;\n}\n.vditor-reset hr {\n  height: 2px;\n  padding: 0;\n  margin: 24px 0;\n  background-color: #eaecef;\n  border: 0;\n}\n.vditor-reset p {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n.vditor-reset blockquote {\n  padding: 0 1em;\n  color: #6a737d;\n  border-left: 0.25em solid #eaecef;\n  margin: 0 0 16px 0;\n}\n.vditor-reset blockquote > :first-child {\n  margin-top: 0;\n}\n.vditor-reset blockquote > :last-child {\n  margin-bottom: 0;\n}\n.vditor-reset ins > iframe {\n  border: 0;\n}\n.vditor-reset iframe {\n  border: 1px solid #d1d5da;\n  max-width: 100%;\n  box-sizing: border-box;\n}\n.vditor-reset iframe.iframe__video {\n  min-width: 80%;\n  min-height: 36vh;\n}\n.vditor-reset table {\n  border-collapse: collapse;\n  empty-cells: show;\n  margin-bottom: 16px;\n  overflow: auto;\n  border-spacing: 0;\n  display: block;\n  word-break: keep-all;\n  width: 100%;\n}\n.vditor-reset table tr {\n  background-color: #fafbfc;\n  border-top: 1px solid #c6cbd1;\n}\n.vditor-reset table td,\n.vditor-reset table th {\n  padding: 6px 13px;\n  border: 1px solid #dfe2e5;\n  word-break: normal;\n  white-space: nowrap;\n}\n.vditor-reset table td:first-child::after,\n.vditor-reset table th:first-child::after {\n  content: \"\";\n  display: inline-block;\n  vertical-align: top;\n  min-height: 24px;\n}\n.vditor-reset table th {\n  font-weight: 600;\n}\n.vditor-reset table tbody tr:nth-child(2n) {\n  background-color: #fff;\n}\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n  padding: 0.2em 0.4em;\n  margin: 0;\n  font-size: 85%;\n  border-radius: 3px;\n  font-family: mononoki, Consolas, \"Liberation Mono\", Menlo, Courier, monospace, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  word-break: break-word;\n  background-size: 20px 20px;\n  white-space: pre-wrap;\n}\n.vditor-reset pre {\n  margin: 1em 0;\n}\n.vditor-reset pre > code {\n  margin: 0;\n  font-size: 85%;\n  padding: 0.5em;\n  border-radius: 5px;\n  display: block;\n  overflow: auto;\n  white-space: pre;\n  font-family: mononoki, Consolas, \"Liberation Mono\", Menlo, Courier, monospace, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  background-size: 20px 20px;\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);\n  word-break: initial;\n  word-wrap: normal;\n}\n.vditor-reset pre:hover div.vditor-copy {\n  display: block;\n}\n.vditor-reset .language-math,\n.vditor-reset .language-echarts,\n.vditor-reset .language-mindmap,\n.vditor-reset .language-plantuml,\n.vditor-reset .language-mermaid,\n.vditor-reset .language-smiles,\n.vditor-reset .language-markmap,\n.vditor-reset .language-abc,\n.vditor-reset .language-flowchart,\n.vditor-reset .language-graphviz {\n  margin-bottom: 16px;\n}\n.vditor-reset .language-math mjx-container:focus {\n  outline: none;\n  cursor: context-menu;\n}\n.vditor-reset .language-math .katex-display > .katex > .katex-html > .tag {\n  display: inline-block;\n  font-size: 1.21rem;\n  right: 2px;\n}\n.vditor-reset .language-echarts,\n.vditor-reset .language-mindmap {\n  overflow: hidden;\n  height: 420px;\n}\n.vditor-reset .language-mermaid,\n.vditor-reset .language-markmap,\n.vditor-reset .language-flowchart,\n.vditor-reset .language-graphviz {\n  text-align: center;\n}\n.vditor-reset .language-graphviz parsererror {\n  overflow: auto;\n}\n.vditor-reset kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #24292e;\n  vertical-align: middle;\n  background-color: #fafbfc;\n  border: solid 1px #d1d5da;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #d1d5da;\n}\n.vditor-reset summary {\n  cursor: pointer;\n}\n.vditor-reset summary:focus {\n  outline: none;\n}\n.vditor-reset svg {\n  height: auto;\n  width: auto;\n  stroke-width: initial;\n}\n.vditor-reset p:last-child,\n.vditor-reset blockquote:last-child,\n.vditor-reset pre:last-child,\n.vditor-reset ul:last-child,\n.vditor-reset ol:last-child,\n.vditor-reset hr:last-child {\n  margin-bottom: 0;\n}\n.vditor-comment {\n  border-bottom: 2px solid #f8e6ab;\n}\n.vditor-comment--focus,\n.vditor-comment--hover {\n  background-color: #faf1d1;\n  border-bottom: 2px solid #ffc60a;\n}\n.vditor-comment--focus .vditor-comment,\n.vditor-comment--hover .vditor-comment {\n  border-bottom: 2px solid #ffc60a;\n}\n.vditor-task {\n  list-style: none !important;\n  word-break: break-all;\n}\n.vditor-task input {\n  margin: 0 0.2em 0.25em -1.6em;\n  font-size: 12px;\n  vertical-align: middle;\n}\n.vditor-copy {\n  position: relative;\n  display: none;\n  z-index: 1;\n}\n.vditor-copy textarea {\n  position: absolute;\n  left: -100000px;\n  height: 10px;\n}\n.vditor-copy span {\n  cursor: pointer;\n  position: absolute;\n  right: 15px;\n  top: 0.5em;\n}\n.vditor-copy svg {\n  color: #586069;\n  height: 14px;\n  width: 14px !important;\n  display: block;\n  fill: currentColor;\n}\n.vditor-linenumber {\n  padding-left: 4em !important;\n  position: relative;\n}\n.vditor-linenumber__rows {\n  position: absolute;\n  pointer-events: none;\n  top: 1em;\n  left: 0;\n  width: 3em;\n  /* works for line-numbers below 1000 lines */\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  counter-reset: linenumber;\n}\n.vditor-linenumber__rows > span {\n  pointer-events: none;\n  display: block;\n}\n.vditor-linenumber__rows > span::before {\n  counter-increment: linenumber;\n  content: counter(linenumber);\n  color: rgba(158, 150, 150, 0.38);\n  display: block;\n  padding-right: 1em;\n  text-align: right;\n}\n.vditor-speech {\n  position: absolute;\n  display: none;\n  background-color: #f6f8fa;\n  border: 1px solid #d1d5da;\n  border-radius: 3px;\n  padding: 3px;\n  cursor: pointer;\n  color: #586069;\n}\n.vditor-speech:hover,\n.vditor-speech--current {\n  color: #4285f4;\n}\n.vditor-speech svg {\n  height: 14px;\n  width: 14px;\n  fill: currentColor;\n  display: block;\n  stroke-width: 0;\n  stroke: currentColor;\n}\n.vditor-anchor {\n  margin-left: 5px;\n}\n.vditor-anchor--left {\n  float: left;\n  padding-right: 4px;\n  margin-left: -20px;\n}\n.vditor-anchor svg {\n  visibility: hidden;\n}\n.vditor-anchor:hover svg {\n  visibility: visible;\n}\n.vditor-anchor:focus {\n  outline: none;\n}\n.vditor-linkcard {\n  margin: 31px auto 16px;\n  transition: all 0.15s ease-in-out;\n  cursor: pointer;\n  max-width: 768px;\n  padding: 0 10px;\n}\n.vditor-linkcard a {\n  border-radius: 3px;\n  background-color: #f6f8fa;\n  overflow: hidden;\n  max-height: 250px;\n  display: flex;\n  text-decoration: none;\n  flex-wrap: wrap-reverse;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.vditor-linkcard a:hover {\n  box-shadow: 0 0 3px rgba(0, 0, 0, 0.13), 0 3px 6px rgba(0, 0, 0, 0.26);\n  text-decoration: none;\n}\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n  color: rgba(88, 96, 105, 0.36);\n}\n.vditor-linkcard__info {\n  padding: 10px;\n  min-width: 200px;\n  box-sizing: border-box;\n  flex: 1;\n}\n.vditor-linkcard__title {\n  font-size: 14px;\n  font-weight: 400;\n  color: #24292e;\n  display: flex;\n  align-items: center;\n}\n.vditor-linkcard__title img {\n  cursor: pointer;\n  height: 20px;\n  width: 20px;\n  border-radius: 3px;\n  flex-shrink: 0;\n  margin-right: 5px;\n}\n.vditor-linkcard__abstract {\n  word-wrap: break-word;\n  word-break: break-all;\n  -webkit-line-clamp: 2;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  -webkit-box-orient: vertical;\n  display: -webkit-box;\n  font-size: 13px;\n  color: #586069;\n  margin: 5px 0;\n}\n.vditor-linkcard__site {\n  font-size: 12px;\n  color: #4285f4;\n}\n.vditor-linkcard__image {\n  background-size: cover;\n  background-repeat: no-repeat;\n  background-position: center center;\n  max-width: 250px;\n  min-width: 126px;\n  cursor: pointer;\n  background-color: rgba(88, 96, 105, 0.36);\n}\n.vditor-footnotes__goto-ref {\n  text-decoration: none;\n}\n.vditor-toc {\n  margin-bottom: 16px;\n  -webkit-user-select: text;\n     -moz-user-select: text;\n          user-select: text;\n  color: #4285f4;\n}\n.vditor-toc .vditor-outline__action {\n  display: none;\n}\n.vditor-toc ul {\n  list-style: none !important;\n  padding-left: 1em;\n}\n.vditor-toc > ul {\n  padding-left: 0;\n}\n.vditor-toc span {\n  cursor: pointer;\n}\n.vditor-toc li > span > svg {\n  width: 0;\n  height: 0;\n}\n.vditor-outline {\n  width: 250px;\n  border-right: 1px solid var(--border-color);\n  background-color: var(--panel-background-color);\n  display: none;\n  overflow: auto;\n}\n.vditor-outline--right {\n  border-right: 0;\n  border-left: 1px solid var(--border-color);\n}\n.vditor-outline::-webkit-scrollbar {\n  display: none;\n}\n.vditor-outline ul {\n  list-style: none !important;\n  padding-left: 1em;\n  margin: 0;\n}\n.vditor-outline__content > ul {\n  padding-left: 0;\n}\n.vditor-outline li > span {\n  display: flex;\n  align-items: center;\n  padding: 5px 10px;\n  cursor: pointer;\n  color: var(--textarea-text-color);\n}\n.vditor-outline li > span > svg {\n  height: 10px;\n  width: 10px;\n  flex-shrink: 0;\n}\n.vditor-outline li > span:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-outline li > span > span {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.vditor-outline__title {\n  border-bottom: 1px dashed var(--border-color);\n  padding: 5px 10px;\n  color: var(--toolbar-icon-color);\n  font-size: 12px;\n}\n.vditor-outline__action {\n  transition: all 0.15s ease-in-out;\n  fill: currentColor;\n  margin-right: 5px;\n  flex-shrink: 0;\n}\n.vditor-outline__action--close {\n  transform: rotate(-90deg);\n}\n.vditor-wysiwyg {\n  box-sizing: border-box;\n  flex: 1;\n  position: relative;\n  width: 100%;\n  min-width: 1px;\n}\n.vditor-wysiwyg pre.vditor-reset {\n  background-color: var(--panel-background-color);\n  margin: 0;\n  white-space: pre-wrap;\n  height: 100%;\n  box-sizing: border-box;\n}\n.vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-wysiwyg pre.vditor-reset:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-wysiwyg pre.vditor-reset:focus {\n  outline: none;\n  background-color: var(--textarea-background-color);\n}\n.vditor-wysiwyg pre.vditor-reset:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-wysiwyg blockquote:empty::before,\n.vditor-wysiwyg pre > code:empty::before,\n.vditor-wysiwyg p:empty::before,\n.vditor-wysiwyg h1:empty::after,\n.vditor-wysiwyg h2:empty::after,\n.vditor-wysiwyg h3:empty::after,\n.vditor-wysiwyg h4:empty::after,\n.vditor-wysiwyg h5:empty::after,\n.vditor-wysiwyg h6:empty::after {\n  content: ' ';\n}\n.vditor-wysiwyg code[data-marker=\"`\"] {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n.vditor-wysiwyg__block pre:first-child {\n  margin-bottom: -1em;\n}\n.vditor-wysiwyg__block pre:first-child code {\n  color: var(--textarea-text-color);\n  height: auto;\n  text-align: left;\n}\n.vditor-wysiwyg__block pre:last-child {\n  margin-bottom: 1em;\n}\n.vditor-wysiwyg__preview {\n  cursor: pointer;\n  white-space: initial;\n  min-height: 27px;\n}\n.vditor-wysiwyg > .vditor-reset > h1:before,\n.vditor-wysiwyg > .vditor-reset > h2:before,\n.vditor-wysiwyg > .vditor-reset > h3:before,\n.vditor-wysiwyg > .vditor-reset > h4:before,\n.vditor-wysiwyg > .vditor-reset > h5:before,\n.vditor-wysiwyg > .vditor-reset > h6:before,\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n.vditor-wysiwyg .vditor-toc:before {\n  float: left;\n  padding-right: 4px;\n  margin-left: -29px;\n  content: 'H1';\n  font-size: 0.85rem;\n  font-weight: normal;\n  color: var(--second-color);\n}\n.vditor-wysiwyg > .vditor-reset > h2:before {\n  content: 'H2';\n}\n.vditor-wysiwyg > .vditor-reset > h3:before {\n  content: 'H3';\n}\n.vditor-wysiwyg > .vditor-reset > h4:before {\n  content: 'H4';\n}\n.vditor-wysiwyg > .vditor-reset > h5:before {\n  content: 'H5';\n}\n.vditor-wysiwyg > .vditor-reset > h6:before {\n  content: 'H6';\n}\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before {\n  content: '\"A\"';\n}\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before {\n  content: '^F';\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block:before {\n  content: \"</>\";\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=\"yaml-front-matter\"]:before {\n  content: \"F\";\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=\"math-block\"]:before {\n  content: \"$$\";\n}\n.vditor-wysiwyg .vditor-toc:before {\n  content: \"ToC\";\n}\n.vditor-wysiwyg hr {\n  display: inline-block;\n  margin: 12px 0;\n  width: 100%;\n}\n.vditor-wysiwyg details {\n  white-space: initial;\n}\n.vditor-wysiwyg a {\n  cursor: pointer;\n}\n.vditor-wysiwyg span[data-type=\"backslash\"] > span {\n  display: none;\n  color: var(--second-color);\n}\n.vditor-wysiwyg span[data-type=\"link-ref\"],\n.vditor-wysiwyg sup[data-type=\"footnotes-ref\"] {\n  color: #4285f4;\n}\n.vditor-wysiwyg span[data-type=\"toc-h\"] {\n  color: #4285f4;\n  text-decoration: underline;\n}\n.vditor-wysiwyg div[data-type=\"footnotes-block\"] {\n  border-top: 2px solid var(--heading-border-color);\n  padding-top: 24px;\n  margin-top: 24px;\n}\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"] {\n  color: var(--blockquote-color);\n}\n.placeholder-tooltip {\n  position: absolute;\n  z-index: 9999;\n  color: #bbb;\n  font-size: 12px;\n  pointer-events: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  padding: 0px 8px;\n}\n@media screen and (max-width: 520px) {\n  .vditor-wysiwyg h1:before,\n  .vditor-wysiwyg h2:before,\n  .vditor-wysiwyg h3:before,\n  .vditor-wysiwyg h4:before,\n  .vditor-wysiwyg h5:before,\n  .vditor-wysiwyg h6:before,\n  .vditor-wysiwyg div.vditor-wysiwyg__block:before,\n  .vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n  .vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n  .vditor-wysiwyg .vditor-toc:before {\n    content: none;\n  }\n}\n.vditor-ir {\n  box-sizing: border-box;\n  flex: 1;\n  min-width: 1px;\n  position: relative;\n  width: 100%;\n}\n.vditor-ir__node[data-type=\"code-block\"]:before,\n.vditor-ir__node[data-type=\"code-block\"]:after,\n.vditor-ir__node[data-type=\"yaml-front-matter\"]:before,\n.vditor-ir__node[data-type=\"yaml-front-matter\"]:after,\n.vditor-ir__node[data-type=\"math-block\"]:before,\n.vditor-ir__node[data-type=\"math-block\"]:after {\n  content: ' ';\n  color: var(--second-color);\n}\n.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker {\n  padding: 0 !important;\n}\n.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=\"a\"] {\n  cursor: pointer;\n}\n.vditor-ir__node[data-type=\"link-ref\"],\n.vditor-ir__node[data-type=\"footnotes-ref\"] {\n  color: #4285f4;\n}\n.vditor-ir__node[data-type=\"html-block\"] {\n  margin-bottom: 1em;\n}\n.vditor-ir__node .vditor-ir__marker {\n  width: 0;\n  overflow: hidden;\n  display: inline-block;\n  height: 0;\n  transition: all 0.15s ease-in-out;\n}\n.vditor-ir__node--hidden .vditor-ir__marker {\n  visibility: hidden;\n}\n.vditor-ir__node--expand .vditor-ir__marker {\n  color: var(--second-color);\n  display: inline;\n  height: auto;\n  width: auto;\n}\n.vditor-ir__node--expand .vditor-ir__marker--hide {\n  display: none;\n}\n.vditor-ir__node--expand .vditor-ir__marker--heading {\n  color: var(--ir-heading-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--bi {\n  color: var(--ir-bi-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--link {\n  color: var(--ir-link-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--title {\n  color: var(--ir-title-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--bracket {\n  color: var(--ir-bracket-color);\n  text-decoration: underline;\n}\n.vditor-ir__node--expand .vditor-ir__marker--paren {\n  color: var(--ir-paren-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--info {\n  color: var(--ir-heading-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--pre code {\n  color: var(--textarea-text-color);\n  height: auto;\n  text-align: left;\n}\n.vditor-ir__node--expand[data-type=\"code-block\"]:before,\n.vditor-ir__node--expand[data-type=\"code-block\"]:after {\n  content: '```';\n}\n.vditor-ir__node--expand[data-type=\"yaml-front-matter\"]:before,\n.vditor-ir__node--expand[data-type=\"yaml-front-matter\"]:after {\n  content: '---';\n}\n.vditor-ir__node--expand[data-type=\"math-block\"]:before,\n.vditor-ir__node--expand[data-type=\"math-block\"]:after {\n  content: '$$';\n}\n.vditor-ir__node span[data-type=\"code-block-open-marker\"],\n.vditor-ir__node span[data-type=\"code-block-close-marker\"],\n.vditor-ir__node span[data-type=\"yaml-front-matter-open-marker\"],\n.vditor-ir__node span[data-type=\"yaml-front-matter-close-marker\"],\n.vditor-ir__node span[data-type=\"math-block-open-marker\"],\n.vditor-ir__node span[data-type=\"math-block-close-marker\"] {\n  display: none;\n}\n.vditor-ir__preview {\n  cursor: pointer;\n  white-space: initial;\n  min-height: 27px;\n}\n.vditor-ir__link {\n  color: var(--ir-bracket-color);\n  text-decoration: underline;\n}\n.vditor-ir pre.vditor-reset {\n  background-color: var(--panel-background-color);\n  margin: 0;\n  white-space: pre-wrap;\n  height: 100%;\n  box-sizing: border-box;\n}\n.vditor-ir pre.vditor-reset[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-ir pre.vditor-reset:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-ir pre.vditor-reset:focus {\n  outline: none;\n  background-color: var(--textarea-background-color);\n}\n.vditor-ir pre.vditor-reset:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-ir pre.vditor-reset pre {\n  margin: 0;\n}\n.vditor-ir hr {\n  display: inline-block;\n  margin: 12px 0;\n  width: 100%;\n}\n.vditor-ir blockquote:empty::before,\n.vditor-ir pre > code:empty::before,\n.vditor-ir p:empty::before,\n.vditor-ir h1:empty::after,\n.vditor-ir h2:empty::after,\n.vditor-ir h3:empty::after,\n.vditor-ir h4:empty::after,\n.vditor-ir h5:empty::after,\n.vditor-ir h6:empty::after {\n  content: ' ';\n}\n.vditor-ir .vditor-reset > h1:before,\n.vditor-ir .vditor-reset > h2:before,\n.vditor-ir .vditor-reset > h3:before,\n.vditor-ir .vditor-reset > h4:before,\n.vditor-ir .vditor-reset > h5:before,\n.vditor-ir .vditor-reset > h6:before,\n.vditor-ir div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-ir div[data-type=\"footnotes-block\"]:before,\n.vditor-ir .vditor-toc:before {\n  float: left;\n  padding-right: 4px;\n  margin-left: -29px;\n  content: 'H1';\n  font-size: 0.85rem;\n  font-weight: normal;\n  color: var(--second-color);\n}\n.vditor-ir .vditor-reset > h2:before {\n  content: 'H2';\n}\n.vditor-ir .vditor-reset > h3:before {\n  content: 'H3';\n}\n.vditor-ir .vditor-reset > h4:before {\n  content: 'H4';\n}\n.vditor-ir .vditor-reset > h5:before {\n  content: 'H5';\n}\n.vditor-ir .vditor-reset > h6:before {\n  content: 'H6';\n}\n.vditor-ir div[data-type=\"link-ref-defs-block\"] {\n  color: var(--blockquote-color);\n}\n.vditor-ir div[data-type=\"link-ref-defs-block\"]:before {\n  content: '\"A\"';\n}\n.vditor-ir div[data-type=\"footnotes-block\"] {\n  border-top: 2px solid var(--heading-border-color);\n  padding-top: 24px;\n  margin-top: 24px;\n}\n.vditor-ir div[data-type=\"footnotes-block\"]:before {\n  content: '^F';\n}\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > ul,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > ol,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > p,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > blockquote,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > pre,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > table,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > hr {\n  margin-left: 8px;\n}\n.vditor-ir .vditor-toc:before {\n  content: \"ToC\";\n}\n.vditor-ir .vditor-toc span[data-type=\"toc-h\"] {\n  color: #4285f4;\n  text-decoration: underline;\n}\n@media screen and (max-width: 520px) {\n  .vditor-ir h1:before,\n  .vditor-ir h2:before,\n  .vditor-ir h3:before,\n  .vditor-ir h4:before,\n  .vditor-ir h5:before,\n  .vditor-ir h6:before,\n  .vditor-ir div[data-type=\"link-ref-defs-block\"]:before,\n  .vditor-ir div[data-type=\"footnotes-block\"]:before,\n  .vditor-ir .vditor-toc:before {\n    content: none;\n  }\n}\n.vditor-sv {\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  margin: 0 1px 0 0;\n  overflow: auto;\n  width: 100%;\n  flex: 1;\n  min-width: 1px;\n  border: 0;\n  resize: none;\n  padding: 10px 9px 10px 10px;\n  box-sizing: border-box;\n  background-color: var(--panel-background-color);\n  outline: 0 none;\n  font-size: 16px;\n  line-height: 22px;\n  color: var(--textarea-text-color);\n  border-radius: 0 0 3px 3px;\n  font-variant-ligatures: no-common-ligatures;\n  white-space: pre-wrap;\n  word-break: break-word;\n  word-wrap: break-word;\n}\n.vditor-sv[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-sv:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-sv:focus {\n  background-color: var(--textarea-background-color);\n}\n.vditor-sv:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-sv span[data-type=\"newline\"] + span[data-type=\"text\"]:empty {\n  display: inherit;\n}\n.vditor-sv .sup {\n  vertical-align: super;\n  font-size: smaller;\n}\n.vditor-sv .strong {\n  font-weight: bold;\n}\n.vditor-sv .em {\n  font-style: italic;\n}\n.vditor-sv .s {\n  text-decoration: line-through;\n}\n.vditor-sv .mark:not(.vditor-sv__marker) {\n  background-color: yellow;\n  color: black;\n}\n.vditor-sv .h1 {\n  font-size: 1.75em;\n  line-height: 44px;\n}\n.vditor-sv .h2 {\n  font-size: 1.55em;\n  line-height: 38px;\n}\n.vditor-sv .h3 {\n  font-size: 1.38em;\n  line-height: 27px;\n}\n.vditor-sv .h4 {\n  font-size: 1.25em;\n  line-height: 25px;\n}\n.vditor-sv .h5 {\n  font-size: 1.13em;\n}\n.vditor-sv .h6 {\n  font-size: 1em;\n}\n.vditor-sv__marker {\n  color: var(--second-color);\n}\n.vditor-sv__marker--heading {\n  color: var(--ir-heading-color);\n}\n.vditor-sv__marker--bi {\n  color: var(--ir-bi-color);\n}\n.vditor-sv__marker--link {\n  color: var(--ir-link-color);\n}\n.vditor-sv__marker--title {\n  color: var(--ir-title-color);\n}\n.vditor-sv__marker--bracket {\n  color: var(--ir-bracket-color);\n}\n.vditor-sv__marker--paren {\n  color: var(--ir-paren-color);\n}\n.vditor-sv__marker--info {\n  color: var(--ir-heading-color);\n}\n.vditor-sv__marker--strong {\n  font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport \"./assets/less/index.less\";\nimport VditorMethod from \"./method\";\ndeclare class Vditor extends VditorMethod {\n    readonly version: string;\n    vditor: IVditor;\n    private isDestroyed;\n    /**\n     * @param id 要挂载 Vditor 的元素或者元素 ID。\n     * @param options Vditor 参数\n     */\n    constructor(id: string | HTMLElement, options?: IOptions);\n    private showErrorTip;\n    updateToolbarConfig(options: IToolbarConfig): void;\n    /** 设置主题 */\n    setTheme(theme: \"dark\" | \"classic\", contentTheme?: string, codeTheme?: string, contentThemePath?: string): void;\n    /** 获取 Markdown 内容 */\n    getValue(): string;\n    /** 获取编辑器当前编辑模式 */\n    getCurrentMode(): \"sv\" | \"wysiwyg\" | \"ir\";\n    /** 聚焦到编辑器 */\n    focus(): void;\n    /** 让编辑器失焦 */\n    blur(): void;\n    /** 禁用编辑器 */\n    disabled(): void;\n    /** 解除编辑器禁用 */\n    enable(): void;\n    /** 返回选中的字符串 */\n    getSelection(): string;\n    /** 设置预览区域内容 */\n    renderPreview(value?: string): void;\n    /** 获取焦点位置 */\n    getCursorPosition(): {\n        left: number;\n        top: number;\n    };\n    /** 上传是否还在进行中 */\n    isUploading(): boolean;\n    /** 清除缓存 */\n    clearCache(): void;\n    /** 禁用缓存 */\n    disabledCache(): void;\n    /** 启用缓存 */\n    enableCache(): void;\n    /** HTML 转 md */\n    html2md(value: string): string;\n    /** markdown 转 JSON 输出 */\n    exportJSON(value: string): string;\n    /** 获取 HTML */\n    getHTML(): string;\n    /** 消息提示。time 为 0 将一直显示 */\n    tip(text: string, time?: number): void;\n    /** 设置预览模式 */\n    setPreviewMode(mode: \"both\" | \"editor\"): void;\n    /** 删除选中内容 */\n    deleteValue(): void;\n    /** 更新选中内容 */\n    updateValue(value: string): void;\n    /** 在焦点处插入内容，并默认进行 Markdown 渲染 */\n    insertValue(value: string, render?: boolean): void;\n    /** 在焦点处插入 Markdown */\n    insertMD(md: string): void;\n    /** 设置编辑器内容 */\n    setValue(markdown: string, clearStack?: boolean): void;\n    /** 空块 */\n    insertEmptyBlock(position: InsertPosition): void;\n    /** 清空 undo & redo 栈 */\n    clearStack(): void;\n    /** 销毁编辑器 */\n    destroy(): void;\n    /** 获取评论 ID */\n    getCommentIds(): ICommentsData[];\n    /** 高亮评论 */\n    hlCommentIds(ids: string[]): void;\n    /** 取消评论高亮 */\n    unHlCommentIds(ids: string[]): void;\n    /** 删除评论 */\n    removeCommentIds(removeIds: string[]): void;\n    private init;\n}\nexport default Vditor;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/index.js",
    "content": "/*!\n * Vditor v3.11.1 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vditor\"] = factory();\n\telse\n\t\troot[\"Vditor\"] = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 173:\n/***/ ((module) => {\n\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function () {\n  // Defaults.\n  // Redefine these in your program to override the defaults.\n\n  // Number of seconds to map a diff before giving up (0 for infinity).\n  this.Diff_Timeout = 1.0;\n  // Cost of an empty edit operation in terms of edit characters.\n  this.Diff_EditCost = 4;\n  // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n  this.Match_Threshold = 0.5;\n  // How far to search for a match (0 = exact location, 1000+ = broad match).\n  // A match this many characters away from the expected location will add\n  // 1.0 to the score (0.0 is a perfect match).\n  this.Match_Distance = 1000;\n  // When deleting a large block of text (over ~64 characters), how close do\n  // the contents have to be to match the expected contents. (0.0 = perfection,\n  // 1.0 = very loose).  Note that Match_Threshold controls how closely the\n  // end points of a delete need to match.\n  this.Patch_DeleteThreshold = 0.5;\n  // Chunk size for context length.\n  this.Patch_Margin = 4;\n\n  // The number of bits in an int.\n  this.Match_MaxBits = 32;\n};\n\n//  DIFF FUNCTIONS\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function (op, text) {\n  return [op, text];\n};\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n *     then don't run a line-level diff first to identify the changed areas.\n *     Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n *     by.  Used internally for recursive calls.  Users should set DiffTimeout\n *     instead.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function (text1, text2, opt_checklines, opt_deadline) {\n  // Set a deadline by which time the diff must be complete.\n  if (typeof opt_deadline == 'undefined') {\n    if (this.Diff_Timeout <= 0) {\n      opt_deadline = Number.MAX_VALUE;\n    } else {\n      opt_deadline = new Date().getTime() + this.Diff_Timeout * 1000;\n    }\n  }\n  var deadline = opt_deadline;\n\n  // Check for null inputs.\n  if (text1 == null || text2 == null) {\n    throw new Error('Null input. (diff_main)');\n  }\n\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n    }\n    return [];\n  }\n  if (typeof opt_checklines == 'undefined') {\n    opt_checklines = true;\n  }\n  var checklines = opt_checklines;\n\n  // Trim off common prefix (speedup).\n  var commonlength = this.diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = this.diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n  }\n  if (commonsuffix) {\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n  }\n  this.diff_cleanupMerge(diffs);\n  return diffs;\n};\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag.  If false, then don't run a\n *     line-level diff first to identify the changed areas.\n *     If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function (text1, text2, checklines, deadline) {\n  var diffs;\n  if (!text1) {\n    // Just add some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)), new diff_match_patch.Diff(DIFF_EQUAL, shorttext), new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(i + shorttext.length))];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = this.diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n    var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n    // Merge the results.\n    return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)], diffs_b);\n  }\n  if (checklines && text1.length > 100 && text2.length > 100) {\n    return this.diff_lineMode_(text1, text2, deadline);\n  }\n  return this.diff_bisect_(text1, text2, deadline);\n};\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function (text1, text2, deadline) {\n  // Scan the text on a line-by-line basis first.\n  var a = this.diff_linesToChars_(text1, text2);\n  text1 = a.chars1;\n  text2 = a.chars2;\n  var linearray = a.lineArray;\n  var diffs = this.diff_main(text1, text2, false, deadline);\n\n  // Convert the diff back to original text.\n  this.diff_charsToLines_(diffs, linearray);\n  // Eliminate freak matches (e.g. blank lines)\n  this.diff_cleanupSemantic(diffs);\n\n  // Rediff any replacement blocks, this time character-by-character.\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete >= 1 && count_insert >= 1) {\n          // Delete the offending records and add the merged ones.\n          diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert);\n          pointer = pointer - count_delete - count_insert;\n          var subDiff = this.diff_main(text_delete, text_insert, false, deadline);\n          for (var j = subDiff.length - 1; j >= 0; j--) {\n            diffs.splice(pointer, 0, subDiff[j]);\n          }\n          pointer = pointer + subDiff.length;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n    pointer++;\n  }\n  diffs.pop(); // Remove the dummy entry at the end.\n\n  return diffs;\n};\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function (text1, text2, deadline) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = delta % 2 != 0;\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Bail out if deadline is reached.\n    if (new Date().getTime() > deadline) {\n      break;\n    }\n\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function (text1, text2, x, y, deadline) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = this.diff_main(text1a, text2a, false, deadline);\n  var diffsb = this.diff_main(text1b, text2b, false, deadline);\n  return diffs.concat(diffsb);\n};\n\n/**\n * Split two texts into an array of strings.  Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}\n *     An object containing the encoded text1, the encoded text2 and\n *     the array of unique strings.\n *     The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function (text1, text2) {\n  var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n  var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n  // '\\x00' is a valid character, but various debuggers don't like it.\n  // So we'll insert a junk entry to avoid generating a null character.\n  lineArray[0] = '';\n\n  /**\n   * Split a text into an array of strings.  Reduce the texts to a string of\n   * hashes where each Unicode character represents one line.\n   * Modifies linearray and linehash through being a closure.\n   * @param {string} text String to encode.\n   * @return {string} Encoded string.\n   * @private\n   */\n  function diff_linesToCharsMunge_(text) {\n    var chars = '';\n    // Walk the text, pulling out a substring for each line.\n    // text.split('\\n') would would temporarily double our memory footprint.\n    // Modifying text would create many large strings to garbage collect.\n    var lineStart = 0;\n    var lineEnd = -1;\n    // Keeping our own length variable is faster than looking it up.\n    var lineArrayLength = lineArray.length;\n    while (lineEnd < text.length - 1) {\n      lineEnd = text.indexOf('\\n', lineStart);\n      if (lineEnd == -1) {\n        lineEnd = text.length - 1;\n      }\n      var line = text.substring(lineStart, lineEnd + 1);\n      if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) {\n        chars += String.fromCharCode(lineHash[line]);\n      } else {\n        if (lineArrayLength == maxLines) {\n          // Bail out at 65535 because\n          // String.fromCharCode(65536) == String.fromCharCode(0)\n          line = text.substring(lineStart);\n          lineEnd = text.length;\n        }\n        chars += String.fromCharCode(lineArrayLength);\n        lineHash[line] = lineArrayLength;\n        lineArray[lineArrayLength++] = line;\n      }\n      lineStart = lineEnd + 1;\n    }\n    return chars;\n  }\n  // Allocate 2/3rds of the space for text1, the rest for text2.\n  var maxLines = 40000;\n  var chars1 = diff_linesToCharsMunge_(text1);\n  maxLines = 65535;\n  var chars2 = diff_linesToCharsMunge_(text2);\n  return {\n    chars1: chars1,\n    chars2: chars2,\n    lineArray: lineArray\n  };\n};\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {!Array.<string>} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function (diffs, lineArray) {\n  for (var i = 0; i < diffs.length; i++) {\n    var chars = diffs[i][1];\n    var text = [];\n    for (var j = 0; j < chars.length; j++) {\n      text[j] = lineArray[chars.charCodeAt(j)];\n    }\n    diffs[i][1] = text.join('');\n  }\n};\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function (text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {\n      best = length;\n      length++;\n    }\n  }\n};\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function (text1, text2) {\n  if (this.Diff_Timeout <= 0) {\n    // Don't risk returning a non-optimal diff if we have unlimited time.\n    return null;\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null; // Pointless.\n  }\n  var dmp = this; // 'this' becomes 'window' in a closure.\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), shorttext.substring(j));\n      var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastEquality = diffs[pointer][1];\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0; // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastEquality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n  this.diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1)));\n          diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2)));\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n};\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function (diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch.whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch.whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(diff_match_patch.linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(diff_match_patch.linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(diff_match_patch.blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(diff_match_patch.blanklineStartRegex_);\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = this.diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Is there an insertion operation before the last equality.\n  var pre_ins = false;\n  // Is there a deletion operation before the last equality.\n  var pre_del = false;\n  // Is there an insertion operation after the last equality.\n  var post_ins = false;\n  // Is there a deletion operation after the last equality.\n  var post_del = false;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {\n        // Candidate found.\n        equalities[equalitiesLength++] = pointer;\n        pre_ins = post_ins;\n        pre_del = post_del;\n        lastEquality = diffs[pointer][1];\n      } else {\n        // Not a candidate, and can never become one.\n        equalitiesLength = 0;\n        lastEquality = null;\n      }\n      post_ins = post_del = false;\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_DELETE) {\n        post_del = true;\n      } else {\n        post_ins = true;\n      }\n      /*\n       * Five types to be split:\n       * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>\n       * <ins>A</ins>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<ins>C</ins>\n       * <ins>A</del>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<del>C</del>\n       */\n      if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        equalitiesLength--; // Throw away the equality we just deleted;\n        lastEquality = null;\n        if (pre_ins && pre_del) {\n          // No changes made which could affect previous entry, keep going.\n          post_ins = post_del = true;\n          equalitiesLength = 0;\n        } else {\n          equalitiesLength--; // Throw away the previous equality.\n          pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n          post_ins = post_del = false;\n        }\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function (diffs) {\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = this.diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL, text_insert.substring(0, commonlength)));\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = this.diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length - commonlength);\n              text_delete = text_delete.substring(0, text_delete.length - commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          pointer -= count_delete + count_insert;\n          diffs.splice(pointer, count_delete + count_insert);\n          if (text_delete.length) {\n            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n            pointer++;\n          }\n          if (text_insert.length) {\n            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n            pointer++;\n          }\n          pointer++;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop(); // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function (diffs, loc) {\n  var chars1 = 0;\n  var chars2 = 0;\n  var last_chars1 = 0;\n  var last_chars2 = 0;\n  var x;\n  for (x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      // Equality or deletion.\n      chars1 += diffs[x][1].length;\n    }\n    if (diffs[x][0] !== DIFF_DELETE) {\n      // Equality or insertion.\n      chars2 += diffs[x][1].length;\n    }\n    if (chars1 > loc) {\n      // Overshot the location.\n      break;\n    }\n    last_chars1 = chars1;\n    last_chars2 = chars2;\n  }\n  // Was the location was deleted?\n  if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n    return last_chars2;\n  }\n  // Add the remaining character length.\n  return last_chars2 + (loc - last_chars1);\n};\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function (diffs) {\n  var html = [];\n  var pattern_amp = /&/g;\n  var pattern_lt = /</g;\n  var pattern_gt = />/g;\n  var pattern_para = /\\n/g;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0]; // Operation (insert, delete, equal)\n    var data = diffs[x][1]; // Text of change.\n    var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;').replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n    switch (op) {\n      case DIFF_INSERT:\n        html[x] = '<ins style=\"background:#e6ffe6;\">' + text + '</ins>';\n        break;\n      case DIFF_DELETE:\n        html[x] = '<del style=\"background:#ffe6e6;\">' + text + '</del>';\n        break;\n      case DIFF_EQUAL:\n        html[x] = '<span>' + text + '</span>';\n        break;\n    }\n  }\n  return html.join('');\n};\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_DELETE) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function (diffs) {\n  var levenshtein = 0;\n  var insertions = 0;\n  var deletions = 0;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];\n    var data = diffs[x][1];\n    switch (op) {\n      case DIFF_INSERT:\n        insertions += data.length;\n        break;\n      case DIFF_DELETE:\n        deletions += data.length;\n        break;\n      case DIFF_EQUAL:\n        // A deletion and an insertion is one substitution.\n        levenshtein += Math.max(insertions, deletions);\n        insertions = 0;\n        deletions = 0;\n        break;\n    }\n  }\n  levenshtein += Math.max(insertions, deletions);\n  return levenshtein;\n};\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated.  Inserted text is escaped using %xx notation.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    switch (diffs[x][0]) {\n      case DIFF_INSERT:\n        text[x] = '+' + encodeURI(diffs[x][1]);\n        break;\n      case DIFF_DELETE:\n        text[x] = '-' + diffs[x][1].length;\n        break;\n      case DIFF_EQUAL:\n        text[x] = '=' + diffs[x][1].length;\n        break;\n    }\n  }\n  return text.join('\\t').replace(/%20/g, ' ');\n};\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function (text1, delta) {\n  var diffs = [];\n  var diffsLength = 0; // Keeping our own length var is faster in JS.\n  var pointer = 0; // Cursor in text1\n  var tokens = delta.split(/\\t/g);\n  for (var x = 0; x < tokens.length; x++) {\n    // Each token begins with a one character parameter which specifies the\n    // operation of this token (delete, insert, equality).\n    var param = tokens[x].substring(1);\n    switch (tokens[x].charAt(0)) {\n      case '+':\n        try {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n        } catch (ex) {\n          // Malformed URI sequence.\n          throw new Error('Illegal escape in diff_fromDelta: ' + param);\n        }\n        break;\n      case '-':\n      // Fall through.\n      case '=':\n        var n = parseInt(param, 10);\n        if (isNaN(n) || n < 0) {\n          throw new Error('Invalid number in diff_fromDelta: ' + param);\n        }\n        var text = text1.substring(pointer, pointer += n);\n        if (tokens[x].charAt(0) == '=') {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n        } else {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n        }\n        break;\n      default:\n        // Blank tokens are ok (from a trailing \\t).\n        // Anything else is an error.\n        if (tokens[x]) {\n          throw new Error('Invalid diff operation in diff_fromDelta: ' + tokens[x]);\n        }\n    }\n  }\n  if (pointer != text1.length) {\n    throw new Error('Delta length (' + pointer + ') does not equal source text length (' + text1.length + ').');\n  }\n  return diffs;\n};\n\n//  MATCH FUNCTIONS\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function (text, pattern, loc) {\n  // Check for null inputs.\n  if (text == null || pattern == null || loc == null) {\n    throw new Error('Null input. (match_main)');\n  }\n  loc = Math.max(0, Math.min(loc, text.length));\n  if (text == pattern) {\n    // Shortcut (potentially not guaranteed by the algorithm)\n    return 0;\n  } else if (!text.length) {\n    // Nothing to match.\n    return -1;\n  } else if (text.substring(loc, loc + pattern.length) == pattern) {\n    // Perfect match at the perfect spot!  (Includes case of null pattern)\n    return loc;\n  } else {\n    // Do a fuzzy compare.\n    return this.match_bitap_(text, pattern, loc);\n  }\n};\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function (text, pattern, loc) {\n  if (pattern.length > this.Match_MaxBits) {\n    throw new Error('Pattern too long for this browser.');\n  }\n\n  // Initialise the alphabet.\n  var s = this.match_alphabet_(pattern);\n  var dmp = this; // 'this' becomes 'window' in a closure.\n\n  /**\n   * Compute and return the score for a match with e errors and x location.\n   * Accesses loc and pattern through being a closure.\n   * @param {number} e Number of errors in match.\n   * @param {number} x Location of match.\n   * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n   * @private\n   */\n  function match_bitapScore_(e, x) {\n    var accuracy = e / pattern.length;\n    var proximity = Math.abs(loc - x);\n    if (!dmp.Match_Distance) {\n      // Dodge divide by zero error.\n      return proximity ? 1.0 : accuracy;\n    }\n    return accuracy + proximity / dmp.Match_Distance;\n  }\n\n  // Highest score beyond which we give up.\n  var score_threshold = this.Match_Threshold;\n  // Is there a nearby exact match? (speedup)\n  var best_loc = text.indexOf(pattern, loc);\n  if (best_loc != -1) {\n    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    // What about in the other direction? (speedup)\n    best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n    if (best_loc != -1) {\n      score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    }\n  }\n\n  // Initialise the bit arrays.\n  var matchmask = 1 << pattern.length - 1;\n  best_loc = -1;\n  var bin_min, bin_mid;\n  var bin_max = pattern.length + text.length;\n  var last_rd;\n  for (var d = 0; d < pattern.length; d++) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from 'loc' we can stray at this\n    // error level.\n    bin_min = 0;\n    bin_mid = bin_max;\n    while (bin_min < bin_mid) {\n      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n        bin_min = bin_mid;\n      } else {\n        bin_max = bin_mid;\n      }\n      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n    }\n    // Use the result from this iteration as the maximum for the next.\n    bin_max = bin_mid;\n    var start = Math.max(1, loc - bin_mid + 1);\n    var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n    var rd = Array(finish + 2);\n    rd[finish + 1] = (1 << d) - 1;\n    for (var j = finish; j >= start; j--) {\n      // The alphabet (s) is a sparse hash, so the following line generates\n      // warnings.\n      var charMatch = s[text.charAt(j - 1)];\n      if (d === 0) {\n        // First pass: exact match.\n        rd[j] = (rd[j + 1] << 1 | 1) & charMatch;\n      } else {\n        // Subsequent passes: fuzzy match.\n        rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];\n      }\n      if (rd[j] & matchmask) {\n        var score = match_bitapScore_(d, j - 1);\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (score <= score_threshold) {\n          // Told you so.\n          score_threshold = score;\n          best_loc = j - 1;\n          if (best_loc > loc) {\n            // When passing loc, don't exceed our current distance from loc.\n            start = Math.max(1, 2 * loc - best_loc);\n          } else {\n            // Already passed loc, downhill from here on in.\n            break;\n          }\n        }\n      }\n    }\n    // No hope for a (better) match at greater error levels.\n    if (match_bitapScore_(d + 1, loc) > score_threshold) {\n      break;\n    }\n    last_rd = rd;\n  }\n  return best_loc;\n};\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function (pattern) {\n  var s = {};\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] = 0;\n  }\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n  }\n  return s;\n};\n\n//  PATCH FUNCTIONS\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function (patch, text) {\n  if (text.length == 0) {\n    return;\n  }\n  if (patch.start2 === null) {\n    throw Error('patch not initialized');\n  }\n  var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n  var padding = 0;\n\n  // Look for the first and last matches of pattern in text.  If two different\n  // matches are found, increase the pattern length.\n  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {\n    padding += this.Patch_Margin;\n    pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n  }\n  // Add one chunk for good luck.\n  padding += this.Patch_Margin;\n\n  // Add the prefix.\n  var prefix = text.substring(patch.start2 - padding, patch.start2);\n  if (prefix) {\n    patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n  }\n  // Add the suffix.\n  var suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding);\n  if (suffix) {\n    patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n  }\n\n  // Roll back the start points.\n  patch.start1 -= prefix.length;\n  patch.start2 -= prefix.length;\n  // Extend the lengths.\n  patch.length1 += prefix.length + suffix.length;\n  patch.length2 += prefix.length + suffix.length;\n};\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function (a, opt_b, opt_c) {\n  var text1, diffs;\n  if (typeof a == 'string' && typeof opt_b == 'string' && typeof opt_c == 'undefined') {\n    // Method 1: text1, text2\n    // Compute diffs from text1 and text2.\n    text1 = /** @type {string} */a;\n    diffs = this.diff_main(text1, /** @type {string} */opt_b, true);\n    if (diffs.length > 2) {\n      this.diff_cleanupSemantic(diffs);\n      this.diff_cleanupEfficiency(diffs);\n    }\n  } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && typeof opt_c == 'undefined') {\n    // Method 2: diffs\n    // Compute text1 from diffs.\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */a;\n    text1 = this.diff_text1(diffs);\n  } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && typeof opt_c == 'undefined') {\n    // Method 3: text1, diffs\n    text1 = /** @type {string} */a;\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */opt_b;\n  } else if (typeof a == 'string' && typeof opt_b == 'string' && opt_c && typeof opt_c == 'object') {\n    // Method 4: text1, text2, diffs\n    // text2 is not used.\n    text1 = /** @type {string} */a;\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */opt_c;\n  } else {\n    throw new Error('Unknown call format to patch_make.');\n  }\n  if (diffs.length === 0) {\n    return []; // Get rid of the null case.\n  }\n  var patches = [];\n  var patch = new diff_match_patch.patch_obj();\n  var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n  var char_count1 = 0; // Number of characters into the text1 string.\n  var char_count2 = 0; // Number of characters into the text2 string.\n  // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n  // text2 (postpatch_text).  We recreate the patches one by one to determine\n  // context info.\n  var prepatch_text = text1;\n  var postpatch_text = text1;\n  for (var x = 0; x < diffs.length; x++) {\n    var diff_type = diffs[x][0];\n    var diff_text = diffs[x][1];\n    if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n      // A new patch starts here.\n      patch.start1 = char_count1;\n      patch.start2 = char_count2;\n    }\n    switch (diff_type) {\n      case DIFF_INSERT:\n        patch.diffs[patchDiffLength++] = diffs[x];\n        patch.length2 += diff_text.length;\n        postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);\n        break;\n      case DIFF_DELETE:\n        patch.length1 += diff_text.length;\n        patch.diffs[patchDiffLength++] = diffs[x];\n        postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);\n        break;\n      case DIFF_EQUAL:\n        if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {\n          // Small equality inside a patch.\n          patch.diffs[patchDiffLength++] = diffs[x];\n          patch.length1 += diff_text.length;\n          patch.length2 += diff_text.length;\n        } else if (diff_text.length >= 2 * this.Patch_Margin) {\n          // Time for a new patch.\n          if (patchDiffLength) {\n            this.patch_addContext_(patch, prepatch_text);\n            patches.push(patch);\n            patch = new diff_match_patch.patch_obj();\n            patchDiffLength = 0;\n            // Unlike Unidiff, our patch lists have a rolling context.\n            // https://github.com/google/diff-match-patch/wiki/Unidiff\n            // Update prepatch text & pos to reflect the application of the\n            // just completed patch.\n            prepatch_text = postpatch_text;\n            char_count1 = char_count2;\n          }\n        }\n        break;\n    }\n\n    // Update the current character count.\n    if (diff_type !== DIFF_INSERT) {\n      char_count1 += diff_text.length;\n    }\n    if (diff_type !== DIFF_DELETE) {\n      char_count2 += diff_text.length;\n    }\n  }\n  // Pick up the leftover patch if not empty.\n  if (patchDiffLength) {\n    this.patch_addContext_(patch, prepatch_text);\n    patches.push(patch);\n  }\n  return patches;\n};\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function (patches) {\n  // Making deep copies is hard in JavaScript.\n  var patchesCopy = [];\n  for (var x = 0; x < patches.length; x++) {\n    var patch = patches[x];\n    var patchCopy = new diff_match_patch.patch_obj();\n    patchCopy.diffs = [];\n    for (var y = 0; y < patch.diffs.length; y++) {\n      patchCopy.diffs[y] = new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n    }\n    patchCopy.start1 = patch.start1;\n    patchCopy.start2 = patch.start2;\n    patchCopy.length1 = patch.length1;\n    patchCopy.length2 = patch.length2;\n    patchesCopy[x] = patchCopy;\n  }\n  return patchesCopy;\n};\n\n/**\n * Merge a set of patches onto the text.  Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the\n *      new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function (patches, text) {\n  if (patches.length == 0) {\n    return [text, []];\n  }\n\n  // Deep copy the patches so that no changes are made to originals.\n  patches = this.patch_deepCopy(patches);\n  var nullPadding = this.patch_addPadding(patches);\n  text = nullPadding + text + nullPadding;\n  this.patch_splitMax(patches);\n  // delta keeps track of the offset between the expected and actual location\n  // of the previous patch.  If there are patches expected at positions 10 and\n  // 20, but the first patch was found at 12, delta is 2 and the second patch\n  // has an effective expected position of 22.\n  var delta = 0;\n  var results = [];\n  for (var x = 0; x < patches.length; x++) {\n    var expected_loc = patches[x].start2 + delta;\n    var text1 = this.diff_text1(patches[x].diffs);\n    var start_loc;\n    var end_loc = -1;\n    if (text1.length > this.Match_MaxBits) {\n      // patch_splitMax will only provide an oversized pattern in the case of\n      // a monster delete.\n      start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);\n      if (start_loc != -1) {\n        end_loc = this.match_main(text, text1.substring(text1.length - this.Match_MaxBits), expected_loc + text1.length - this.Match_MaxBits);\n        if (end_loc == -1 || start_loc >= end_loc) {\n          // Can't find valid trailing context.  Drop this patch.\n          start_loc = -1;\n        }\n      }\n    } else {\n      start_loc = this.match_main(text, text1, expected_loc);\n    }\n    if (start_loc == -1) {\n      // No match found.  :(\n      results[x] = false;\n      // Subtract the delta for this failed patch from subsequent patches.\n      delta -= patches[x].length2 - patches[x].length1;\n    } else {\n      // Found a match.  :)\n      results[x] = true;\n      delta = start_loc - expected_loc;\n      var text2;\n      if (end_loc == -1) {\n        text2 = text.substring(start_loc, start_loc + text1.length);\n      } else {\n        text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n      }\n      if (text1 == text2) {\n        // Perfect match, just shove the replacement text in.\n        text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);\n      } else {\n        // Imperfect match.  Run a diff to get a framework of equivalent\n        // indices.\n        var diffs = this.diff_main(text1, text2, false);\n        if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {\n          // The end points match, but the content is unacceptably bad.\n          results[x] = false;\n        } else {\n          this.diff_cleanupSemanticLossless(diffs);\n          var index1 = 0;\n          var index2;\n          for (var y = 0; y < patches[x].diffs.length; y++) {\n            var mod = patches[x].diffs[y];\n            if (mod[0] !== DIFF_EQUAL) {\n              index2 = this.diff_xIndex(diffs, index1);\n            }\n            if (mod[0] === DIFF_INSERT) {\n              // Insertion\n              text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);\n            } else if (mod[0] === DIFF_DELETE) {\n              // Deletion\n              text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(diffs, index1 + mod[1].length));\n            }\n            if (mod[0] !== DIFF_DELETE) {\n              index1 += mod[1].length;\n            }\n          }\n        }\n      }\n    }\n  }\n  // Strip the padding off.\n  text = text.substring(nullPadding.length, text.length - nullPadding.length);\n  return [text, results];\n};\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function (patches) {\n  var paddingLength = this.Patch_Margin;\n  var nullPadding = '';\n  for (var x = 1; x <= paddingLength; x++) {\n    nullPadding += String.fromCharCode(x);\n  }\n\n  // Bump all the patches forward.\n  for (var x = 0; x < patches.length; x++) {\n    patches[x].start1 += paddingLength;\n    patches[x].start2 += paddingLength;\n  }\n\n  // Add some padding on start of first diff.\n  var patch = patches[0];\n  var diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.start1 -= paddingLength; // Should be 0.\n    patch.start2 -= paddingLength; // Should be 0.\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[0][1].length) {\n    // Grow first equality.\n    var extraLength = paddingLength - diffs[0][1].length;\n    diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n    patch.start1 -= extraLength;\n    patch.start2 -= extraLength;\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  // Add some padding on end of last diff.\n  patch = patches[patches.length - 1];\n  diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n    // Grow last equality.\n    var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n    diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n  return nullPadding;\n};\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function (patches) {\n  var patch_size = this.Match_MaxBits;\n  for (var x = 0; x < patches.length; x++) {\n    if (patches[x].length1 <= patch_size) {\n      continue;\n    }\n    var bigpatch = patches[x];\n    // Remove the big old patch.\n    patches.splice(x--, 1);\n    var start1 = bigpatch.start1;\n    var start2 = bigpatch.start2;\n    var precontext = '';\n    while (bigpatch.diffs.length !== 0) {\n      // Create one of several smaller patches.\n      var patch = new diff_match_patch.patch_obj();\n      var empty = true;\n      patch.start1 = start1 - precontext.length;\n      patch.start2 = start2 - precontext.length;\n      if (precontext !== '') {\n        patch.length1 = patch.length2 = precontext.length;\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n      }\n      while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {\n        var diff_type = bigpatch.diffs[0][0];\n        var diff_text = bigpatch.diffs[0][1];\n        if (diff_type === DIFF_INSERT) {\n          // Insertions are harmless.\n          patch.length2 += diff_text.length;\n          start2 += diff_text.length;\n          patch.diffs.push(bigpatch.diffs.shift());\n          empty = false;\n        } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {\n          // This is a large deletion.  Let it pass in one chunk.\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          empty = false;\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          bigpatch.diffs.shift();\n        } else {\n          // Deletion or equality.  Only take as much as we can stomach.\n          diff_text = diff_text.substring(0, patch_size - patch.length1 - this.Patch_Margin);\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          if (diff_type === DIFF_EQUAL) {\n            patch.length2 += diff_text.length;\n            start2 += diff_text.length;\n          } else {\n            empty = false;\n          }\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          if (diff_text == bigpatch.diffs[0][1]) {\n            bigpatch.diffs.shift();\n          } else {\n            bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);\n          }\n        }\n      }\n      // Compute the head context for the next patch.\n      precontext = this.diff_text2(patch.diffs);\n      precontext = precontext.substring(precontext.length - this.Patch_Margin);\n      // Append the end context for this patch.\n      var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);\n      if (postcontext !== '') {\n        patch.length1 += postcontext.length;\n        patch.length2 += postcontext.length;\n        if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n          patch.diffs[patch.diffs.length - 1][1] += postcontext;\n        } else {\n          patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n        }\n      }\n      if (!empty) {\n        patches.splice(++x, 0, patch);\n      }\n    }\n  }\n};\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function (patches) {\n  var text = [];\n  for (var x = 0; x < patches.length; x++) {\n    text[x] = patches[x];\n  }\n  return text.join('');\n};\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function (textline) {\n  var patches = [];\n  if (!textline) {\n    return patches;\n  }\n  var text = textline.split('\\n');\n  var textPointer = 0;\n  var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n  while (textPointer < text.length) {\n    var m = text[textPointer].match(patchHeader);\n    if (!m) {\n      throw new Error('Invalid patch string: ' + text[textPointer]);\n    }\n    var patch = new diff_match_patch.patch_obj();\n    patches.push(patch);\n    patch.start1 = parseInt(m[1], 10);\n    if (m[2] === '') {\n      patch.start1--;\n      patch.length1 = 1;\n    } else if (m[2] == '0') {\n      patch.length1 = 0;\n    } else {\n      patch.start1--;\n      patch.length1 = parseInt(m[2], 10);\n    }\n    patch.start2 = parseInt(m[3], 10);\n    if (m[4] === '') {\n      patch.start2--;\n      patch.length2 = 1;\n    } else if (m[4] == '0') {\n      patch.length2 = 0;\n    } else {\n      patch.start2--;\n      patch.length2 = parseInt(m[4], 10);\n    }\n    textPointer++;\n    while (textPointer < text.length) {\n      var sign = text[textPointer].charAt(0);\n      try {\n        var line = decodeURI(text[textPointer].substring(1));\n      } catch (ex) {\n        // Malformed URI sequence.\n        throw new Error('Illegal escape in patch_fromText: ' + line);\n      }\n      if (sign == '-') {\n        // Deletion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n      } else if (sign == '+') {\n        // Insertion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n      } else if (sign == ' ') {\n        // Minor equality.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n      } else if (sign == '@') {\n        // Start of next patch.\n        break;\n      } else if (sign === '') {\n        // Blank line?  Whatever.\n      } else {\n        // WTF?\n        throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n      }\n      textPointer++;\n    }\n  }\n  return patches;\n};\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function () {\n  /** @type {!Array.<!diff_match_patch.Diff>} */\n  this.diffs = [];\n  /** @type {?number} */\n  this.start1 = null;\n  /** @type {?number} */\n  this.start2 = null;\n  /** @type {number} */\n  this.length1 = 0;\n  /** @type {number} */\n  this.length2 = 0;\n};\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function () {\n  var coords1, coords2;\n  if (this.length1 === 0) {\n    coords1 = this.start1 + ',0';\n  } else if (this.length1 == 1) {\n    coords1 = this.start1 + 1;\n  } else {\n    coords1 = this.start1 + 1 + ',' + this.length1;\n  }\n  if (this.length2 === 0) {\n    coords2 = this.start2 + ',0';\n  } else if (this.length2 == 1) {\n    coords2 = this.start2 + 1;\n  } else {\n    coords2 = this.start2 + 1 + ',' + this.length2;\n  }\n  var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n  var op;\n  // Escape the body of the patch with %xx notation.\n  for (var x = 0; x < this.diffs.length; x++) {\n    switch (this.diffs[x][0]) {\n      case DIFF_INSERT:\n        op = '+';\n        break;\n      case DIFF_DELETE:\n        op = '-';\n        break;\n      case DIFF_EQUAL:\n        op = ' ';\n        break;\n    }\n    text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n  }\n  return text.join('').replace(/%20/g, ' ');\n};\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports.diff_match_patch = diff_match_patch;\nmodule.exports.DIFF_DELETE = DIFF_DELETE;\nmodule.exports.DIFF_INSERT = DIFF_INSERT;\nmodule.exports.DIFF_EQUAL = DIFF_EQUAL;\n\n/***/ }),\n\n/***/ 408:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ method)\n});\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(135);\n// EXTERNAL MODULE: ./src/ts/markdown/adapterRender.ts\nvar adapterRender = __webpack_require__(840);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(775);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(428);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(325);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(483);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(999);\n;// CONCATENATED MODULE: ./src/ts/markdown/lazyLoadImageRender.ts\nvar lazyLoadImageRender = function (element) {\n    if (element === void 0) { element = document; }\n    var loadImg = function (it) {\n        var testImage = document.createElement(\"img\");\n        testImage.src = it.getAttribute(\"data-src\");\n        testImage.addEventListener(\"load\", function () {\n            if (!it.getAttribute(\"style\") && !it.getAttribute(\"class\") &&\n                !it.getAttribute(\"width\") && !it.getAttribute(\"height\")) {\n                if (testImage.naturalHeight > testImage.naturalWidth &&\n                    testImage.naturalWidth / testImage.naturalHeight <\n                        document.querySelector(\".vditor-reset\").clientWidth / (window.innerHeight - 40) &&\n                    testImage.naturalHeight > (window.innerHeight - 40)) {\n                    it.style.height = (window.innerHeight - 40) + \"px\";\n                }\n            }\n            it.src = testImage.src;\n        });\n        it.removeAttribute(\"data-src\");\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            if (imgElement.getAttribute(\"data-src\")) {\n                loadImg(imgElement);\n            }\n        });\n        return false;\n    }\n    if (window.vditorImageIntersectionObserver) {\n        window.vditorImageIntersectionObserver.disconnect();\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n    else {\n        window.vditorImageIntersectionObserver = new IntersectionObserver(function (entries) {\n            entries.forEach(function (entrie) {\n                if ((typeof entrie.isIntersecting === \"undefined\"\n                    ? entrie.intersectionRatio !== 0\n                    : entrie.isIntersecting)\n                    && entrie.target.getAttribute(\"data-src\")) {\n                    loadImg(entrie.target);\n                }\n            });\n        });\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(472);\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(280);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(637);\n// EXTERNAL MODULE: ./src/ts/markdown/SMILESRender.ts\nvar SMILESRender = __webpack_require__(825);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(11);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(194);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(436);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(229);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(145);\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(538);\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(413);\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(106);\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(673);\n;// CONCATENATED MODULE: ./src/ts/markdown/anchorRender.ts\nvar anchorRender = function (type) {\n    document.querySelectorAll(\".vditor-anchor\").forEach(function (anchor) {\n        if (type === 1) {\n            anchor.classList.add(\"vditor-anchor--left\");\n        }\n        anchor.onclick = function () {\n            var id = anchor.getAttribute(\"href\").substr(1);\n            var top = document.getElementById(\"vditorAnchor-\" + id).offsetTop;\n            document.querySelector(\"html\").scrollTop = top;\n        };\n    });\n    window.onhashchange = function () {\n        var element = document.getElementById(\"vditorAnchor-\" + decodeURIComponent(window.location.hash.substr(1)));\n        if (element) {\n            document.querySelector(\"html\").scrollTop = element.offsetTop;\n        }\n    };\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(214);\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar selection = __webpack_require__(810);\n;// CONCATENATED MODULE: ./src/ts/markdown/speechRender.ts\n\nvar speechRender = function (element, lang) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (typeof speechSynthesis === \"undefined\" || typeof SpeechSynthesisUtterance === \"undefined\") {\n        return;\n    }\n    var getVoice = function () {\n        var voices = speechSynthesis.getVoices();\n        var currentVoice;\n        var defaultVoice;\n        voices.forEach(function (item) {\n            if (item.lang === lang.replace(\"_\", \"-\")) {\n                currentVoice = item;\n            }\n            if (item.default) {\n                defaultVoice = item;\n            }\n        });\n        if (!currentVoice) {\n            currentVoice = defaultVoice;\n        }\n        return currentVoice;\n    };\n    var playSVG = '<svg><use xlink:href=\"#vditor-icon-play\"></use></svg>';\n    var pauseSVG = '<svg><use xlink:href=\"#vditor-icon-pause\"></use></svg>';\n    if (!document.getElementById(\"vditorIconScript\")) {\n        playSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path></svg>';\n        pauseSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path></svg>';\n    }\n    var speechDom = document.querySelector(\".vditor-speech\");\n    if (!speechDom) {\n        speechDom = document.createElement(\"button\");\n        speechDom.className = \"vditor-speech\";\n        element.insertAdjacentElement(\"beforeend\", speechDom);\n        if (speechSynthesis.onvoiceschanged !== undefined) {\n            speechSynthesis.onvoiceschanged = getVoice;\n        }\n    }\n    var voice = getVoice();\n    var utterThis = new SpeechSynthesisUtterance();\n    utterThis.voice = voice;\n    utterThis.onend = utterThis.onerror = function () {\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n    };\n    element.addEventListener(window.ontouchstart !== undefined ? \"touchend\" : \"click\", function (event) {\n        var target = event.target;\n        if (target.classList.contains(\"vditor-speech\") || target.parentElement.classList.contains(\"vditor-speech\")) {\n            if (!speechDom.classList.contains(\"vditor-speech--current\")) {\n                utterThis.text = speechDom.getAttribute(\"data-text\");\n                speechSynthesis.speak(utterThis);\n                speechDom.classList.add(\"vditor-speech--current\");\n                speechDom.innerHTML = pauseSVG;\n            }\n            else {\n                if (speechSynthesis.speaking) {\n                    if (speechSynthesis.paused) {\n                        speechSynthesis.resume();\n                        speechDom.innerHTML = pauseSVG;\n                    }\n                    else {\n                        speechSynthesis.pause();\n                        speechDom.innerHTML = playSVG;\n                    }\n                }\n            }\n            (0,selection/* setSelectionFocus */.Hc)(window.vditorSpeechRange);\n            element.focus();\n            return;\n        }\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        var range = getSelection().getRangeAt(0);\n        var text = range.toString().trim();\n        if (!text) {\n            return;\n        }\n        window.vditorSpeechRange = range.cloneRange();\n        var rect = range.getBoundingClientRect();\n        speechDom.innerHTML = playSVG;\n        speechDom.style.display = \"block\";\n        speechDom.style.top = (rect.top + rect.height + document.querySelector(\"html\").scrollTop - 20) + \"px\";\n        if (window.ontouchstart !== undefined) {\n            speechDom.style.left = (event.changedTouches[event.changedTouches.length - 1].pageX + 2) + \"px\";\n        }\n        else {\n            speechDom.style.left = (event.clientX + 2) + \"px\";\n        }\n        speechDom.setAttribute(\"data-text\", text);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/markdown/previewRender.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeOptions = function (options) {\n    var _a;\n    var defaultOption = {\n        anchor: 0,\n        cdn: constants/* Constants.CDN */.g.CDN,\n        customEmoji: {},\n        emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n        hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n        icon: \"ant\",\n        lang: \"zh_CN\",\n        markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n        math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n        mode: \"light\",\n        speech: {\n            enable: false,\n        },\n        render: {\n            media: {\n                enable: true,\n            }\n        },\n        theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n    };\n    if (options.cdn) {\n        if (!((_a = options.theme) === null || _a === void 0 ? void 0 : _a.path)) {\n            defaultOption.theme.path = \"\".concat(options.cdn, \"/dist/css/content-theme\");\n        }\n        if (!options.emojiPath) {\n            defaultOption.emojiPath = \"\".concat(options.cdn, \"/dist/images/emoji\");\n        }\n    }\n    return (0,merge/* merge */.T)(defaultOption, options);\n};\nvar md2html = function (mdText, options) {\n    var mergedOptions = mergeOptions(options);\n    return (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n        var lute = (0,setLute/* setLute */.X)({\n            autoSpace: mergedOptions.markdown.autoSpace,\n            gfmAutoLink: mergedOptions.markdown.gfmAutoLink,\n            codeBlockPreview: mergedOptions.markdown.codeBlockPreview,\n            emojiSite: mergedOptions.emojiPath,\n            emojis: mergedOptions.customEmoji,\n            fixTermTypo: mergedOptions.markdown.fixTermTypo,\n            footnotes: mergedOptions.markdown.footnotes,\n            headingAnchor: mergedOptions.anchor !== 0,\n            inlineMathDigit: mergedOptions.math.inlineDigit,\n            lazyLoadImage: mergedOptions.lazyLoadImage,\n            linkBase: mergedOptions.markdown.linkBase,\n            linkPrefix: mergedOptions.markdown.linkPrefix,\n            listStyle: mergedOptions.markdown.listStyle,\n            mark: mergedOptions.markdown.mark,\n            mathBlockPreview: mergedOptions.markdown.mathBlockPreview,\n            paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,\n            sanitize: mergedOptions.markdown.sanitize,\n            toc: mergedOptions.markdown.toc,\n        });\n        if (options === null || options === void 0 ? void 0 : options.renderers) {\n            lute.SetJSRenderers({\n                renderers: {\n                    Md2HTML: options.renderers,\n                },\n            });\n        }\n        lute.SetHeadingID(true);\n        return lute.Md2HTML(mdText);\n    });\n};\nvar previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {\n    var mergedOptions, html, i18nScriptPrefix, i18nScriptID_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                mergedOptions = mergeOptions(options);\n                return [4 /*yield*/, md2html(markdown, mergedOptions)];\n            case 1:\n                html = _a.sent();\n                if (mergedOptions.transform) {\n                    html = mergedOptions.transform(html);\n                }\n                previewElement.innerHTML = html;\n                previewElement.classList.add(\"vditor-reset\");\n                if (!!mergedOptions.i18n) return [3 /*break*/, 5];\n                if (!![\"de_DE\", \"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) return [3 /*break*/, 2];\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            case 2:\n                i18nScriptPrefix = \"vditorI18nScript\";\n                i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1)];\n            case 3:\n                _a.sent();\n                _a.label = 4;\n            case 4: return [3 /*break*/, 6];\n            case 5:\n                window.VditorI18n = mergedOptions.i18n;\n                _a.label = 6;\n            case 6:\n                if (!mergedOptions.icon) return [3 /*break*/, 8];\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\")];\n            case 7:\n                _a.sent();\n                _a.label = 8;\n            case 8:\n                (0,setContentTheme/* setContentTheme */.Z)(mergedOptions.theme.current, mergedOptions.theme.path);\n                if (mergedOptions.anchor === 1) {\n                    previewElement.classList.add(\"vditor-reset--anchor\");\n                }\n                (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);\n                (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);\n                (0,mathRender/* mathRender */.H)(previewElement, {\n                    cdn: mergedOptions.cdn,\n                    math: mergedOptions.math,\n                });\n                (0,mermaidRender/* mermaidRender */.i)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,SMILESRender/* SMILESRender */.J)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn);\n                (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);\n                (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);\n                (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);\n                (0,abcRender/* abcRender */.Q)(previewElement, mergedOptions.cdn);\n                if (mergedOptions.render.media.enable) {\n                    (0,mediaRender/* mediaRender */.Y)(previewElement);\n                }\n                if (mergedOptions.speech.enable) {\n                    speechRender(previewElement);\n                }\n                if (mergedOptions.anchor !== 0) {\n                    anchorRender(mergedOptions.anchor);\n                }\n                if (mergedOptions.after) {\n                    mergedOptions.after();\n                }\n                if (mergedOptions.lazyLoadImage) {\n                    lazyLoadImageRender(previewElement);\n                }\n                previewElement.addEventListener(\"click\", function (event) {\n                    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n                    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                        var headingElement = previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                        if (headingElement) {\n                            window.scrollTo(window.scrollX, headingElement.offsetTop);\n                        }\n                        return;\n                    }\n                });\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(190);\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(580);\n;// CONCATENATED MODULE: ./src/method.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function () {\n    function Vditor() {\n    }\n    /** 点击图片放大 */\n    Vditor.adapterRender = adapterRender;\n    /** 点击图片放大 */\n    Vditor.previewImage = preview_image/* previewImage */.E;\n    /** 为 element 中的代码块添加复制按钮 */\n    Vditor.codeRender = codeRender/* codeRender */.O;\n    /** 对 graphviz 进行渲染 */\n    Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;\n    /** 为 element 中的代码块进行高亮渲染 */\n    Vditor.highlightRender = highlightRender/* highlightRender */.s;\n    /** 对数学公式进行渲染 */\n    Vditor.mathRender = mathRender/* mathRender */.H;\n    /** 流程图/时序图/甘特图渲染 */\n    Vditor.mermaidRender = mermaidRender/* mermaidRender */.i;\n    /** 化学物质结构渲染 */\n    Vditor.SMILESRender = SMILESRender/* SMILESRender */.J;\n    /** 支持 markdown 的思维导图 */\n    Vditor.markmapRender = markmapRender/* markmapRender */.K;\n    /** flowchart.js 渲染 */\n    Vditor.flowchartRender = flowchartRender/* flowchartRender */.P;\n    /** 图表渲染 */\n    Vditor.chartRender = chartRender/* chartRender */.p;\n    /** 五线谱渲染 */\n    Vditor.abcRender = abcRender/* abcRender */.Q;\n    /** 脑图渲染 */\n    Vditor.mindmapRender = mindmapRender/* mindmapRender */.P;\n    /** plantuml渲染 */\n    Vditor.plantumlRender = plantumlRender/* plantumlRender */.B;\n    /** 大纲渲染 */\n    Vditor.outlineRender = outlineRender/* outlineRender */.k;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    Vditor.mediaRender = mediaRender/* mediaRender */.Y;\n    /** 对选中的文字进行阅读 */\n    Vditor.speechRender = speechRender;\n    /** 对图片进行懒加载 */\n    Vditor.lazyLoadImageRender = lazyLoadImageRender;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    Vditor.md2html = md2html;\n    /** 页面 Markdown 文章渲染 */\n    Vditor.preview = previewRender;\n    /** 设置代码主题 */\n    Vditor.setCodeTheme = setCodeTheme/* setCodeTheme */.Y;\n    /** 设置内容主题 */\n    Vditor.setContentTheme = setContentTheme/* setContentTheme */.Z;\n    return Vditor;\n}());\n/* harmony default export */ const method = (Vditor);\n\n\n/***/ }),\n\n/***/ 145:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ _VDITOR_VERSION),\n/* harmony export */   \"g\": () => (/* binding */ Constants)\n/* harmony export */ });\nvar _VDITOR_VERSION = \"3.11.1\";\n\nvar Constants = /** @class */ (function () {\n    function Constants() {\n    }\n    Constants.ZWSP = \"\\u200b\";\n    Constants.DROP_EDITOR = \"application/editor\";\n    Constants.MOBILE_WIDTH = 520;\n    Constants.CLASS_MENU_DISABLED = \"vditor-menu--disabled\";\n    Constants.EDIT_TOOLBARS = [\"emoji\", \"headings\", \"bold\", \"italic\", \"strike\", \"link\", \"list\",\n        \"ordered-list\", \"outdent\", \"indent\", \"check\", \"line\", \"quote\", \"code\", \"inline-code\", \"insert-after\",\n        \"insert-before\", \"upload\", \"record\", \"table\"];\n    Constants.CODE_THEME = [\"a11y-dark\", \"agate\", \"an-old-hope\", \"androidstudio\",\n        \"arta\", \"atom-one-dark\", \"atom-one-dark-reasonable\", \"base16/3024\", \"base16/apathy\", \"base16/apprentice\", \"base16/ashes\", \"base16/atelier-cave\", \"base16/atelier-dune\",\n        \"base16/atelier-estuary\", \"base16/atelier-forest\", \"base16/atelier-heath\", \"base16/atelier-lakeside\", \"base16/atelier-plateau\", \"base16/atelier-savanna\", \"base16/atelier-seaside\", \"base16/atelier-sulphurpool\",\n        \"base16/atlas\", \"base16/bespin\", \"base16/black-metal\", \"base16/black-metal-bathory\", \"base16/black-metal-burzum\", \"base16/black-metal-dark-funeral\", \"base16/black-metal-gorgoroth\", \"base16/black-metal-immortal\", \"base16/black-metal-khold\", \"base16/black-metal-marduk\", \"base16/black-metal-mayhem\", \"base16/black-metal-nile\", \"base16/black-metal-venom\", \"base16/brewer\", \"base16/bright\", \"base16/brogrammer\",\n        \"base16/brush-trees-dark\", \"base16/chalk\", \"base16/circus\", \"base16/classic-dark\", \"base16/codeschool\", \"base16/colors\", \"base16/danqing\", \"base16/darcula\", \"base16/dark-violet\",\n        \"base16/darkmoss\", \"base16/darktooth\", \"base16/decaf\", \"base16/default-dark\", \"base16/dracula\", \"base16/edge-dark\", \"base16/eighties\", \"base16/embers\", \"base16/equilibrium-dark\",\n        \"base16/equilibrium-gray-dark\", \"base16/espresso\", \"base16/eva\", \"base16/eva-dim\", \"base16/flat\", \"base16/framer\", \"base16/gigavolt\", \"base16/google-dark\", \"base16/grayscale-dark\", \"base16/green-screen\", \"base16/gruvbox-dark-hard\", \"base16/gruvbox-dark-medium\",\n        \"base16/gruvbox-dark-pale\", \"base16/gruvbox-dark-soft\", \"base16/hardcore\", \"base16/harmonic16-dark\", \"base16/heetch-dark\", \"base16/helios\", \"base16/hopscotch\", \"base16/horizon-dark\", \"base16/humanoid-dark\", \"base16/ia-dark\", \"base16/icy-dark\", \"base16/ir-black\", \"base16/isotope\",\n        \"base16/kimber\", \"base16/london-tube\", \"base16/macintosh\", \"base16/marrakesh\", \"base16/materia\", \"base16/material\", \"base16/material-darker\", \"base16/material-palenight\", \"base16/material-vivid\",\n        \"base16/mellow-purple\", \"base16/mocha\", \"base16/monokai\", \"base16/nebula\", \"base16/nord\", \"base16/nova\", \"base16/ocean\", \"base16/oceanicnext\", \"base16/onedark\", \"base16/outrun-dark\",\n        \"base16/papercolor-dark\", \"base16/paraiso\", \"base16/pasque\", \"base16/phd\", \"base16/pico\", \"base16/pop\", \"base16/porple\", \"base16/qualia\", \"base16/railscasts\", \"base16/rebecca\",\n        \"base16/ros-pine\", \"base16/ros-pine-moon\", \"base16/sandcastle\", \"base16/seti-ui\", \"base16/silk-dark\", \"base16/snazzy\", \"base16/solar-flare\", \"base16/solarized-dark\", \"base16/spacemacs\", \"base16/summercamp\", \"base16/summerfruit-dark\",\n        \"base16/synth-midnight-terminal-dark\", \"base16/tango\", \"base16/tender\", \"base16/tomorrow-night\", \"base16/twilight\", \"base16/unikitty-dark\", \"base16/vulcan\",\n        \"base16/windows-10\", \"base16/windows-95\", \"base16/windows-high-contrast\", \"base16/windows-nt\", \"base16/woodland\", \"base16/xcode-dusk\", \"base16/zenburn\", \"codepen-embed\", \"dark\",\n        \"devibeans\", \"far\", \"felipec\", \"github-dark\", \"github-dark-dimmed\", \"gml\", \"gradient-dark\", \"hybrid\", \"ir-black\", \"isbl-editor-dark\", \"kimbie-dark\", \"lioshi\",\n        \"monokai\", \"monokai-sublime\", \"night-owl\", \"nnfx-dark\", \"nord\", \"obsidian\", \"panda-syntax-dark\", \"paraiso-dark\", \"pojoaque\", \"qtcreator-dark\", \"rainbow\", \"shades-of-purple\", \"srcery\", \"stackoverflow-dark\",\n        \"sunburst\", \"tomorrow-night-blue\", \"tomorrow-night-bright\", \"tokyo-night-dark\", \"vs2015\", \"xt256\",\n        \"ant-design\",\n        \"a11y-light\", \"arduino-light\", \"ascetic\", \"atom-one-light\", \"base16/atelier-cave-light\",\n        \"base16/atelier-dune-light\", \"base16/atelier-estuary-light\", \"base16/atelier-forest-light\", \"base16/atelier-heath-light\",\n        \"base16/atelier-lakeside-light\", \"base16/atelier-plateau-light\", \"base16/atelier-savanna-light\", \"base16/atelier-seaside-light\", \"base16/atelier-sulphurpool-light\", \"base16/brush-trees\",\n        \"base16/classic-light\", \"base16/cupcake\", \"base16/cupertino\", \"base16/default-light\", \"base16/dirtysea\", \"base16/edge-light\", \"base16/equilibrium-gray-light\", \"base16/equilibrium-light\",\n        \"base16/fruit-soda\", \"base16/github\", \"base16/google-light\", \"base16/grayscale-light\", \"base16/gruvbox-light-hard\", \"base16/gruvbox-light-medium\", \"base16/gruvbox-light-soft\",\n        \"base16/harmonic16-light\", \"base16/heetch-light\", \"base16/humanoid-light\", \"base16/horizon-light\", \"base16/ia-light\", \"base16/material-lighter\", \"base16/mexico-light\",\n        \"base16/one-light\", \"base16/papercolor-light\", \"base16/ros-pine-dawn\", \"base16/sagelight\", \"base16/shapeshifter\",\n        \"base16/silk-light\", \"base16/solar-flare-light\", \"base16/solarized-light\", \"base16/summerfruit-light\", \"base16/synth-midnight-terminal-light\", \"base16/tomorrow\",\n        \"base16/unikitty-light\", \"base16/windows-10-light\", \"base16/windows-95-light\", \"base16/windows-high-contrast-light\", \"brown-paper\", \"base16/windows-nt-light\",\n        \"color-brewer\", \"docco\", \"foundation\", \"github\", \"googlecode\", \"gradient-light\", \"grayscale\", \"idea\", \"intellij-light\", \"isbl-editor-light\", \"kimbie-light\",\n        \"lightfair\", \"magula\", \"mono-blue\", \"nnfx-light\", \"panda-syntax-light\", \"paraiso-light\", \"purebasic\", \"qtcreator-light\", \"routeros\", \"school-book\",\n        \"stackoverflow-light\", \"tokyo-night-light\", \"vs\", \"xcode\", \"default\"];\n    Constants.ALIAS_CODE_LANGUAGES = [\n        // 自定义\n        \"abc\", \"plantuml\", \"mermaid\", \"flowchart\", \"echarts\", \"mindmap\", \"graphviz\", \"math\", \"markmap\", \"smiles\",\n        // 别名\n        \"js\", \"ts\", \"html\", \"toml\", \"c#\", \"bat\"\n    ];\n    Constants.CDN = \"https://unpkg.com/vditor@\".concat(\"3.11.1\");\n    Constants.MARKDOWN_OPTIONS = {\n        autoSpace: false,\n        gfmAutoLink: true,\n        codeBlockPreview: true,\n        fixTermTypo: false,\n        footnotes: true,\n        linkBase: \"\",\n        linkPrefix: \"\",\n        listStyle: false,\n        mark: false,\n        mathBlockPreview: true,\n        paragraphBeginningSpace: false,\n        sanitize: true,\n        toc: false,\n    };\n    Constants.HLJS_OPTIONS = {\n        enable: true,\n        lineNumber: false,\n        defaultLang: \"\",\n        style: \"github\",\n    };\n    Constants.MATH_OPTIONS = {\n        engine: \"KaTeX\",\n        inlineDigit: false,\n        macros: {},\n    };\n    Constants.THEME_OPTIONS = {\n        current: \"light\",\n        list: {\n            \"ant-design\": \"Ant Design\",\n            \"dark\": \"Dark\",\n            \"light\": \"Light\",\n            \"wechat\": \"WeChat\",\n        },\n        path: \"\".concat(Constants.CDN, \"/dist/css/content-theme\"),\n    };\n    return Constants;\n}());\n\n\n\n/***/ }),\n\n/***/ 825:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"J\": () => (/* binding */ SMILESRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\n\n\n\n\nvar SMILESRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var SMILESElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getElements(element);\n    if (SMILESElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/smiles-drawer/smiles-drawer.min.js?v=2.1.7\"), \"vditorAbcjsScript\").then(function () {\n            var sd = new SmiDrawer({}, {});\n            SMILESElements.forEach(function (item) {\n                var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getCode(item).trim();\n                if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                    return;\n                }\n                var id = \"smiles\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();\n                item.innerHTML = \"<svg id=\\\"\".concat(id, \"\\\"></svg>\");\n                sd.draw(code, '#' + id, theme === \"dark\" ? \"dark\" : undefined);\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 135:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Q\": () => (/* binding */ abcRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar abcRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element);\n    if (abcElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/abcjs/abcjs_basic.min.js\"), \"vditorAbcjsScript\").then(function () {\n            abcElements.forEach(function (item) {\n                if (item.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    item.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                if (item.getAttribute(\"data-processed\") === \"true\") {\n                    return;\n                }\n                ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim());\n                item.style.overflowX = \"auto\";\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 840:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mathRenderAdapter\": () => (/* binding */ mathRenderAdapter),\n/* harmony export */   \"SMILESRenderAdapter\": () => (/* binding */ SMILESRenderAdapter),\n/* harmony export */   \"mermaidRenderAdapter\": () => (/* binding */ mermaidRenderAdapter),\n/* harmony export */   \"markmapRenderAdapter\": () => (/* binding */ markmapRenderAdapter),\n/* harmony export */   \"mindmapRenderAdapter\": () => (/* binding */ mindmapRenderAdapter),\n/* harmony export */   \"chartRenderAdapter\": () => (/* binding */ chartRenderAdapter),\n/* harmony export */   \"abcRenderAdapter\": () => (/* binding */ abcRenderAdapter),\n/* harmony export */   \"graphvizRenderAdapter\": () => (/* binding */ graphvizRenderAdapter),\n/* harmony export */   \"flowchartRenderAdapter\": () => (/* binding */ flowchartRenderAdapter),\n/* harmony export */   \"plantumlRenderAdapter\": () => (/* binding */ plantumlRenderAdapter)\n/* harmony export */ });\nvar mathRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-math\"); },\n};\nvar SMILESRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-smiles\"); },\n};\nvar mermaidRenderAdapter = {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-mermaid\"); },\n};\nvar markmapRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-markmap\"); },\n};\nvar mindmapRenderAdapter = {\n    getCode: function (el) { return el.getAttribute(\"data-code\"); },\n    getElements: function (el) { return el.querySelectorAll(\".language-mindmap\"); },\n};\nvar chartRenderAdapter = {\n    getCode: function (el) { return el.innerText; },\n    getElements: function (el) { return el.querySelectorAll(\".language-echarts\"); },\n};\nvar abcRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-abc\"); },\n};\nvar graphvizRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-graphviz\"); },\n};\nvar flowchartRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-flowchart\"); },\n};\nvar plantumlRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-plantuml\"); },\n};\n\n\n/***/ }),\n\n/***/ 775:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"p\": () => (/* binding */ chartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar chartRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element);\n    if (echartsElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js?v=5.5.1\"), \"vditorEchartsScript\").then(function () {\n            echartsElements.forEach(function (e) { return __awaiter(void 0, void 0, void 0, function () {\n                var text, option, error_1;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                                return [2 /*return*/];\n                            }\n                            text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim();\n                            if (!text) {\n                                return [2 /*return*/];\n                            }\n                            _a.label = 1;\n                        case 1:\n                            _a.trys.push([1, 3, , 4]);\n                            if (e.getAttribute(\"data-processed\") === \"true\") {\n                                return [2 /*return*/];\n                            }\n                            return [4 /*yield*/, (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .looseJsonParse */ .Qf)(text)];\n                        case 2:\n                            option = _a.sent();\n                            echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption(option);\n                            e.setAttribute(\"data-processed\", \"true\");\n                            return [3 /*break*/, 4];\n                        case 3:\n                            error_1 = _a.sent();\n                            e.className = \"vditor-reset--error\";\n                            e.innerHTML = \"echarts render error: <br>\".concat(error_1);\n                            return [3 /*break*/, 4];\n                        case 4: return [2 /*return*/];\n                    }\n                });\n            }); });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 428:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"O\": () => (/* binding */ codeRender)\n/* harmony export */ });\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n\n\nvar codeRender = function (element, option) {\n    Array.from(element.querySelectorAll(\"pre > code\")).filter(function (e, index) {\n        if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n            e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n            return false;\n        }\n        if (e.classList.contains(\"language-mermaid\") || e.classList.contains(\"language-flowchart\") ||\n            e.classList.contains(\"language-echarts\") || e.classList.contains(\"language-mindmap\") ||\n            e.classList.contains(\"language-plantuml\") || e.classList.contains(\"language-markmap\") ||\n            e.classList.contains(\"language-abc\") || e.classList.contains(\"language-graphviz\") ||\n            e.classList.contains(\"language-math\") || e.classList.contains(\"language-smiles\")) {\n            return false;\n        }\n        if (e.style.maxHeight.indexOf(\"px\") > -1) {\n            return false;\n        }\n        // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67\n        if (element.classList.contains(\"vditor-preview\") && index > 5) {\n            return false;\n        }\n        return true;\n    }).forEach(function (e) {\n        var _a, _b, _c;\n        var codeText = e.innerText;\n        if (e.classList.contains(\"highlight-chroma\")) {\n            var codeElement = e.cloneNode(true);\n            codeElement.querySelectorAll(\".highlight-ln\").forEach(function (item) {\n                item.remove();\n            });\n            codeText = codeElement.innerText;\n        }\n        else if (codeText.endsWith(\"\\n\")) {\n            codeText = codeText.substr(0, codeText.length - 1);\n        }\n        var iconHTML = '<svg><use xlink:href=\"#vditor-icon-copy\"></use></svg>';\n        if (!document.getElementById(\"vditorIconScript\")) {\n            iconHTML = '<svg viewBox=\"0 0 32 32\"><path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path></svg>';\n        }\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-copy\";\n        divElement.innerHTML = \"<span aria-label=\\\"\".concat(((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copy) || \"复制\", \"\\\"\\nonmouseover=\\\"this.setAttribute('aria-label', '\").concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.copy) || \"复制\", \"')\\\"\\nclass=\\\"vditor-tooltipped vditor-tooltipped__w\\\"\\nonclick=\\\"event.stopPropagation();this.previousElementSibling.select();document.execCommand('copy');this.setAttribute('aria-label', '\").concat(((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copied) || \"已复制\", \"');this.previousElementSibling.blur()\\\">\").concat(iconHTML, \"</span>\");\n        var textarea = document.createElement(\"textarea\");\n        textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);\n        divElement.insertAdjacentElement(\"afterbegin\", textarea);\n        if (option && option.renderMenu) {\n            option.renderMenu(e, divElement);\n        }\n        e.before(divElement);\n        e.style.maxHeight = (window.outerHeight - 40) + \"px\";\n        // https://github.com/Vanessa219/vditor/issues/1356\n        e.insertAdjacentHTML(\"afterend\", \"<span style=\\\"position: absolute\\\">\".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, \"</span>\"));\n    });\n};\n\n\n/***/ }),\n\n/***/ 325:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ flowchartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar flowchartRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element);\n    if (flowchartElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/flowchart.js/flowchart.min.js\"), \"vditorFlowchartScript\").then(function () {\n        flowchartElements.forEach(function (item) {\n            if (item.getAttribute(\"data-processed\") === \"true\") {\n                return;\n            }\n            var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item));\n            item.innerHTML = \"\";\n            flowchartObj.drawSVG(item);\n            item.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 483:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"v\": () => (/* binding */ graphvizRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar graphvizRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element);\n    if (graphvizElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/graphviz/viz.js\"), \"vditorGraphVizScript\").then(function () {\n        graphvizElements.forEach(function (e) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e);\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            if (e.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            try {\n                var blob = new Blob([\"importScripts('\".concat(document.getElementById(\"vditorGraphVizScript\").src.replace(\"viz.js\", \"full.render.js\"), \"');\")], { type: \"application/javascript\" });\n                var url = window.URL || window.webkitURL;\n                var blobUrl = url.createObjectURL(blob);\n                var worker = new Worker(blobUrl);\n                new Viz({ worker: worker })\n                    .renderSVGElement(code).then(function (result) {\n                    e.innerHTML = result.outerHTML;\n                }).catch(function (error) {\n                    e.innerHTML = \"graphviz render error: <br>\".concat(error);\n                    e.className = \"vditor-reset--error\";\n                });\n            }\n            catch (e) {\n                console.error(\"graphviz error\", e);\n            }\n            e.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 999:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"s\": () => (/* binding */ highlightRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);\n\n\n\nvar highlightRender = function (hljsOption, element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var style = hljsOption.style;\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) {\n        style = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".min.css\");\n    if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n    }\n    (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(\"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".min.css\"), \"vditorHljsStyle\");\n    if (hljsOption.enable === false) {\n        return;\n    }\n    var codes = element.querySelectorAll(\"pre > code\");\n    if (codes.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/highlight.min.js?v=11.7.0\"), \"vditorHljsScript\").then(function () {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/third-languages.js?v=1.0.1\"), \"vditorHljsThirdScript\").then(function () {\n            element.querySelectorAll(\"pre > code\").forEach(function (block) {\n                // ir & wysiwyg 区域不渲染\n                if (block.parentElement.classList.contains(\"vditor-ir__marker--pre\") ||\n                    block.parentElement.classList.contains(\"vditor-wysiwyg__pre\")) {\n                    return;\n                }\n                if (block.classList.contains(\"language-mermaid\") || block.classList.contains(\"language-flowchart\") ||\n                    block.classList.contains(\"language-echarts\") || block.classList.contains(\"language-mindmap\") ||\n                    block.classList.contains(\"language-plantuml\") || block.classList.contains(\"language-smiles\") ||\n                    block.classList.contains(\"language-abc\") || block.classList.contains(\"language-graphviz\") ||\n                    block.classList.contains(\"language-math\")) {\n                    return;\n                }\n                if (hljsOption.defaultLang !== \"\" && block.className.indexOf(\"language-\") === -1) {\n                    block.classList.add(\"language-\" + hljsOption.defaultLang);\n                }\n                var language = block.className.replace(\"language-\", \"\");\n                if (!window.hljs.getLanguage(language)) {\n                    language = \"plaintext\";\n                }\n                block.innerHTML = window.hljs.highlight(block.textContent, {\n                    language: language,\n                    ignoreIllegals: true\n                }).value;\n                block.classList.add(\"hljs\");\n                if (!hljsOption.lineNumber) {\n                    return;\n                }\n                block.classList.add(\"vditor-linenumber\");\n                var linenNumberTemp = block.querySelector(\".vditor-linenumber__temp\");\n                if (!linenNumberTemp) {\n                    linenNumberTemp = document.createElement(\"div\");\n                    linenNumberTemp.className = \"vditor-linenumber__temp\";\n                    block.insertAdjacentElement(\"beforeend\", linenNumberTemp);\n                }\n                var whiteSpace = getComputedStyle(block).whiteSpace;\n                var isSoftWrap = false;\n                if (whiteSpace === \"pre-wrap\" || whiteSpace === \"pre-line\") {\n                    isSoftWrap = true;\n                }\n                var lineNumberHTML = \"\";\n                var lineList = block.textContent.split(/\\r\\n|\\r|\\n/g);\n                lineList.pop();\n                lineList.map(function (line) {\n                    var lineHeight = \"\";\n                    if (isSoftWrap) {\n                        linenNumberTemp.textContent = line || \"\\n\";\n                        lineHeight = \" style=\\\"height:\".concat(linenNumberTemp.getBoundingClientRect().height, \"px\\\"\");\n                    }\n                    lineNumberHTML += \"<span\".concat(lineHeight, \"></span>\");\n                });\n                linenNumberTemp.style.display = \"none\";\n                lineNumberHTML = \"<span class=\\\"vditor-linenumber__rows\\\">\".concat(lineNumberHTML, \"</span>\");\n                block.insertAdjacentHTML(\"beforeend\", lineNumberHTML);\n            });\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 11:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"K\": () => (/* binding */ markmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar enabled = {};\nvar transform = function (transformer, content) {\n    var result = transformer.transform(content);\n    var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; });\n    keys.forEach(function (key) {\n        enabled[key] = true;\n    });\n    var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts;\n    var markmap = window.markmap;\n    if (styles)\n        markmap.loadCSS(styles);\n    if (scripts)\n        markmap.loadJS(scripts);\n    return result;\n};\nvar init = function (el, code) {\n    var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS;\n    var transformer = new Transformer();\n    el.innerHTML = '<svg style=\"width:100%\"></svg>';\n    var svg = el.firstChild;\n    var mm = Markmap.create(svg, null);\n    var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter;\n    var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap;\n    var frontmatterOptions = deriveOptions(markmapOptions);\n    mm.setData(root, frontmatterOptions);\n    mm.fit();\n};\nvar markmapRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element);\n    if (markmapElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/markmap/markmap.min.js\"), \"vditorMarkerScript\").then(function () {\n        markmapElements.forEach(function (item) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item);\n            if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            var render = document.createElement(\"div\");\n            render.className = \"language-markmap\";\n            item.parentNode.appendChild(render);\n            init(render, code);\n            if (item.parentNode.childNodes[0].nodeName == \"CODE\") {\n                item.parentNode.removeChild(item.parentNode.childNodes[0]);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 472:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ mathRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(413);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(290);\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(105);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\n\n\nvar mathRender = function (element, options) {\n    if (element === void 0) { element = document; }\n    var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element);\n    if (mathElements.length === 0) {\n        return;\n    }\n    var defaultOptions = {\n        cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN,\n        math: {\n            engine: \"KaTeX\",\n            inlineDigit: false,\n            macros: {},\n        },\n    };\n    if (options && options.math) {\n        options.math =\n            Object.assign({}, defaultOptions.math, options.math);\n    }\n    options = Object.assign({}, defaultOptions, options);\n    if (options.math.engine === \"KaTeX\") {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_2__/* .addStyle */ .c)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.css?v=0.16.9\"), \"vditorKatexStyle\");\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.js?v=0.16.9\"), \"vditorKatexScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/mhchem.min.js?v=0.16.9\"), \"vditorKatexChemScript\").then(function () {\n                mathElements.forEach(function (mathElement) {\n                    if (mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                        mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                        return;\n                    }\n                    if (mathElement.getAttribute(\"data-math\")) {\n                        return;\n                    }\n                    var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement));\n                    mathElement.setAttribute(\"data-math\", math);\n                    try {\n                        mathElement.innerHTML = katex.renderToString(math, {\n                            displayMode: mathElement.tagName === \"DIV\",\n                            output: \"html\",\n                            macros: options.math.macros,\n                        });\n                    }\n                    catch (e) {\n                        mathElement.innerHTML = e.message;\n                        mathElement.className = \"language-math vditor-reset--error\";\n                    }\n                    mathElement.addEventListener(\"copy\", function (event) {\n                        event.stopPropagation();\n                        event.preventDefault();\n                        var vditorMathElement = event.currentTarget.closest(\".language-math\");\n                        event.clipboardData.setData(\"text/html\", vditorMathElement.innerHTML);\n                        event.clipboardData.setData(\"text/plain\", vditorMathElement.getAttribute(\"data-math\"));\n                    });\n                });\n            });\n        });\n    }\n    else if (options.math.engine === \"MathJax\") {\n        var chainAsync_1 = function (fns) {\n            if (fns.length === 0) {\n                return;\n            }\n            var curr = 0;\n            var last = fns[fns.length - 1];\n            var next = function () {\n                var fn = fns[curr++];\n                fn === last ? fn() : fn(next);\n            };\n            next();\n        };\n        if (!window.MathJax) {\n            window.MathJax = {\n                loader: {\n                    paths: { mathjax: \"\".concat(options.cdn, \"/dist/js/mathjax\") },\n                },\n                startup: {\n                    typeset: false,\n                },\n                tex: {\n                    macros: options.math.macros,\n                },\n            };\n            // https://github.com/Vanessa219/vditor/issues/1453\n            Object.assign(window.MathJax, options.math.mathJaxOptions);\n        }\n        // 循环加载会抛异常\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScriptSync */ .J)(\"\".concat(options.cdn, \"/dist/js/mathjax/tex-svg-full.js\"), \"protyleMathJaxScript\");\n        var renderMath_1 = function (mathElement, next) {\n            var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim();\n            var mathOptions = window.MathJax.getMetricsFor(mathElement);\n            mathOptions.display = mathElement.tagName === \"DIV\";\n            window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) {\n                mathElement.innerHTML = \"\";\n                mathElement.setAttribute(\"data-math\", math);\n                mathElement.append(node);\n                window.MathJax.startup.document.clear();\n                window.MathJax.startup.document.updateDocument();\n                var errorTextElement = node.querySelector('[data-mml-node=\"merror\"]');\n                if (errorTextElement && errorTextElement.textContent.trim() !== \"\") {\n                    mathElement.innerHTML = errorTextElement.textContent.trim();\n                    mathElement.className = \"vditor-reset--error\";\n                }\n                if (next) {\n                    next();\n                }\n            });\n        };\n        window.MathJax.startup.promise.then(function () {\n            var chains = [];\n            var _loop_1 = function (i) {\n                var mathElement = mathElements[i];\n                if (!mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") &&\n                    !mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\") &&\n                    !mathElement.getAttribute(\"data-math\") && (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim()) {\n                    chains.push(function (next) {\n                        if (i === mathElements.length - 1) {\n                            renderMath_1(mathElement);\n                        }\n                        else {\n                            renderMath_1(mathElement, next);\n                        }\n                    });\n                }\n            };\n            for (var i = 0; i < mathElements.length; i++) {\n                _loop_1(i);\n            }\n            chainAsync_1(chains);\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 280:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ mediaRender)\n/* harmony export */ });\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(494);\n\nvar videoRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<video controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></video>\"));\n    element.remove();\n};\nvar audioRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<audio controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></audio>\"));\n    element.remove();\n};\nvar iframeRender = function (element, url) {\n    var youtubeMatch = url.match(/\\/\\/(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?/);\n    var youkuMatch = url.match(/\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/);\n    var qqMatch = url.match(/\\/\\/v\\.qq\\.com\\/x\\/cover\\/.*\\/([^\\/]+)\\.html\\??.*/);\n    var coubMatch = url.match(/(?:www\\.|\\/\\/)coub\\.com\\/view\\/(\\w+)/);\n    var facebookMatch = url.match(/(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/);\n    var dailymotionMatch = url.match(/.+dailymotion.com\\/(video|hub)\\/(\\w+)\\?/);\n    var bilibiliMatch = url.match(/(?:www\\.|\\/\\/)bilibili\\.com\\/video\\/(\\w+)/);\n    var tedMatch = url.match(/(?:www\\.|\\/\\/)ted\\.com\\/talks\\/(\\w+)/);\n    if (youtubeMatch && youtubeMatch[1].length === 11) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//www.youtube.com/embed/\".concat(youtubeMatch[1] +\n            (youtubeMatch[2] ? \"?start=\" + youtubeMatch[2] : \"\"), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (youkuMatch && youkuMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//player.youku.com/embed/\".concat(youkuMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (qqMatch && qqMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"https://v.qq.com/txp/iframe/player.html?vid=\".concat(qqMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (coubMatch && coubMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"//coub.com/embed/\".concat(coubMatch[1], \"?muted=false&autostart=false&originalSize=true&startWithHD=true\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (facebookMatch && facebookMatch[0]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.facebook.com/plugins/video.php?href=\".concat(encodeURIComponent(facebookMatch[0]), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (dailymotionMatch && dailymotionMatch[2]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.dailymotion.com/embed/video/\".concat(dailymotionMatch[2], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (url.indexOf(\"bilibili.com\") > -1 && (url.indexOf(\"bvid=\") > -1 || (bilibiliMatch && bilibiliMatch[1]))) {\n        var params_1 = {\n            bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .on)(\"bvid\", url) || (bilibiliMatch && bilibiliMatch[1]),\n            page: \"1\",\n            high_quality: \"1\",\n            as_wide: \"1\",\n            allowfullscreen: \"true\",\n            autoplay: \"0\"\n        };\n        new URL(url.startsWith(\"http\") ? url : \"https:\" + url).search.split(\"&\").forEach(function (item, index) {\n            if (!item) {\n                return;\n            }\n            if (index === 0) {\n                item = item.substr(1);\n            }\n            var keyValue = item.split(\"=\");\n            params_1[keyValue[0]] = keyValue[1];\n        });\n        var src_1 = \"https://player.bilibili.com/player.html?\";\n        var keys_1 = Object.keys(params_1);\n        keys_1.forEach(function (key, index) {\n            src_1 += \"\".concat(key, \"=\").concat(params_1[key]);\n            if (index < keys_1.length - 1) {\n                src_1 += \"&\";\n            }\n        });\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"\".concat(src_1, \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (tedMatch && tedMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//embed.ted.com/talks/\".concat(tedMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n};\nvar mediaRender = function (element) {\n    if (!element) {\n        return;\n    }\n    element.querySelectorAll(\"a\").forEach(function (aElement) {\n        var url = aElement.getAttribute(\"href\");\n        if (!url) {\n            return;\n        }\n        if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) {\n            videoRender(aElement, url);\n        }\n        else if (url.match(/^.+.(mp3|wav|flac)$/)) {\n            audioRender(aElement, url);\n        }\n        else {\n            iframeRender(aElement, url);\n        }\n    });\n};\n\n\n/***/ }),\n\n/***/ 637:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"i\": () => (/* binding */ mermaidRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar mermaidRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mermaidElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getElements(element);\n    if (mermaidElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/mermaid/mermaid.min.js?v=11.6.0\"), \"vditorMermaidScript\").then(function () {\n        var config = {\n            securityLevel: \"loose\",\n            altFontFamily: \"sans-serif\",\n            fontFamily: \"sans-serif\",\n            startOnLoad: false,\n            flowchart: {\n                htmlLabels: true,\n                useMaxWidth: !0\n            },\n            sequence: {\n                useMaxWidth: true,\n                diagramMarginX: 8,\n                diagramMarginY: 8,\n                boxMargin: 8,\n                showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers\n            },\n            gantt: {\n                leftPadding: 75,\n                rightPadding: 20\n            }\n        };\n        if (theme === \"dark\") {\n            config.theme = \"dark\";\n        }\n        mermaid.initialize(config);\n        mermaidElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {\n            var code, id, mermaidData, e_1, errorElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getCode(item);\n                        if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                            return [2 /*return*/];\n                        }\n                        id = \"mermaid\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, mermaid.render(id, item.textContent)];\n                    case 2:\n                        mermaidData = _a.sent();\n                        item.innerHTML = mermaidData.svg;\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        errorElement = document.querySelector(\"#\" + id);\n                        item.innerHTML = \"\".concat(errorElement.outerHTML, \"<br>\\n<div style=\\\"text-align: left\\\"><small>\").concat(e_1.message.replace(/\\n/, \"<br>\"), \"</small></div>\");\n                        errorElement.parentElement.remove();\n                        return [3 /*break*/, 4];\n                    case 4:\n                        item.setAttribute(\"data-processed\", \"true\");\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n    });\n};\n\n\n/***/ }),\n\n/***/ 194:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ mindmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar mindmapRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mindmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getElements(element);\n    if (mindmapElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js?v=5.5.1\"), \"vditorEchartsScript\").then(function () {\n            mindmapElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getCode(e);\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption({\n                        series: [\n                            {\n                                data: [JSON.parse(decodeURIComponent(text))],\n                                initialTreeDepth: -1,\n                                itemStyle: {\n                                    borderWidth: 0,\n                                    color: \"#4285f4\",\n                                },\n                                label: {\n                                    backgroundColor: \"#f6f8fa\",\n                                    borderColor: \"#d1d5da\",\n                                    borderRadius: 5,\n                                    borderWidth: 0.5,\n                                    color: \"#586069\",\n                                    lineHeight: 20,\n                                    offset: [-5, 0],\n                                    padding: [0, 5],\n                                    position: \"insideRight\",\n                                },\n                                lineStyle: {\n                                    color: \"#d1d5da\",\n                                    width: 1,\n                                },\n                                roam: true,\n                                symbol: function (value, params) {\n                                    var _a;\n                                    if ((_a = params === null || params === void 0 ? void 0 : params.data) === null || _a === void 0 ? void 0 : _a.children) {\n                                        return \"circle\";\n                                    }\n                                    else {\n                                        return \"path://\";\n                                    }\n                                },\n                                type: \"tree\",\n                            },\n                        ],\n                        tooltip: {\n                            trigger: \"item\",\n                            triggerOn: \"mousemove\",\n                        },\n                    });\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"mindmap render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 436:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"k\": () => (/* binding */ outlineRender)\n/* harmony export */ });\n/* harmony import */ var _util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(771);\n/* harmony import */ var _mathRender__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(472);\n\n\nvar outlineRender = function (contentElement, targetElement, vditor) {\n    var tocHTML = \"\";\n    var ids = [];\n    Array.from(contentElement.children).forEach(function (item, index) {\n        if ((0,_util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByHeadings */ .W)(item)) {\n            if (vditor) {\n                var lastIndex = item.id.lastIndexOf(\"_\");\n                item.id = item.id.substring(0, lastIndex === -1 ? undefined : lastIndex) + \"_\" + index;\n            }\n            ids.push(item.id);\n            tocHTML += item.outerHTML.replace(\"<wbr>\", \"\");\n        }\n    });\n    if (tocHTML === \"\") {\n        targetElement.innerHTML = \"\";\n        return \"\";\n    }\n    var tempElement = document.createElement(\"div\");\n    if (vditor) {\n        vditor.lute.SetToC(true);\n        if (vditor.currentMode === \"wysiwyg\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else if (vditor.currentMode === \"ir\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else {\n            tempElement.innerHTML = vditor.lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        vditor.lute.SetToC(vditor.options.preview.markdown.toc);\n    }\n    else {\n        targetElement.classList.add(\"vditor-outline\");\n        var lute = Lute.New();\n        lute.SetToC(true);\n        tempElement.innerHTML = lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n    }\n    var headingsElement = tempElement.firstElementChild.querySelectorAll(\"li > span[data-target-id]\");\n    headingsElement.forEach(function (item, index) {\n        if (item.nextElementSibling && item.nextElementSibling.tagName === \"UL\") {\n            var iconHTML = \"<svg class='vditor-outline__action'><use xlink:href='#vditor-icon-down'></use></svg>\";\n            if (!document.getElementById(\"vditorIconScript\")) {\n                iconHTML = '<svg class=\"vditor-outline__action\" viewBox=\"0 0 32 32\"><path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path></svg>';\n            }\n            item.innerHTML = \"\".concat(iconHTML, \"<span>\").concat(item.innerHTML, \"</span>\");\n        }\n        else {\n            item.innerHTML = \"<svg></svg><span>\".concat(item.innerHTML, \"</span>\");\n        }\n        item.setAttribute(\"data-target-id\", ids[index]);\n    });\n    tocHTML = tempElement.firstElementChild.innerHTML;\n    if (headingsElement.length === 0) {\n        targetElement.innerHTML = \"\";\n        return tocHTML;\n    }\n    targetElement.innerHTML = tocHTML;\n    if (vditor) {\n        (0,_mathRender__WEBPACK_IMPORTED_MODULE_0__/* .mathRender */ .H)(targetElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    }\n    targetElement.firstElementChild.addEventListener(\"click\", function (event) {\n        var target = event.target;\n        while (target && !target.isEqualNode(targetElement)) {\n            if (target.classList.contains(\"vditor-outline__action\")) {\n                if (target.classList.contains(\"vditor-outline__action--close\")) {\n                    target.classList.remove(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:block\");\n                }\n                else {\n                    target.classList.add(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            }\n            else if (target.getAttribute(\"data-target-id\")) {\n                event.preventDefault();\n                event.stopPropagation();\n                var idElement = document.getElementById(target.getAttribute(\"data-target-id\"));\n                if (!idElement) {\n                    return;\n                }\n                if (vditor) {\n                    if (vditor.options.height === \"auto\") {\n                        var windowScrollY = idElement.offsetTop + vditor.element.offsetTop;\n                        if (!vditor.options.toolbarConfig.pin) {\n                            windowScrollY += vditor.toolbar.element.offsetHeight;\n                        }\n                        window.scrollTo(window.scrollX, windowScrollY);\n                    }\n                    else {\n                        if (vditor.element.offsetTop < window.scrollY) {\n                            window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                        }\n                        if (vditor.preview.element.contains(contentElement)) {\n                            contentElement.parentElement.scrollTop = idElement.offsetTop;\n                        }\n                        else {\n                            contentElement.scrollTop = idElement.offsetTop;\n                        }\n                    }\n                }\n                else {\n                    window.scrollTo(window.scrollX, idElement.offsetTop);\n                }\n                break;\n            }\n            target = target.parentElement;\n        }\n    });\n    return tocHTML;\n};\n\n\n/***/ }),\n\n/***/ 229:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"B\": () => (/* binding */ plantumlRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar plantumlRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var plantumlElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getElements(element);\n    if (plantumlElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/plantuml/plantuml-encoder.min.js\"), \"vditorPlantumlScript\").then(function () {\n        plantumlElements.forEach(function (e) {\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getCode(e).trim();\n            if (!text) {\n                return;\n            }\n            try {\n                e.innerHTML = \"<object type=\\\"image/svg+xml\\\" data=\\\"https://www.plantuml.com/plantuml/svg/~1\".concat(plantumlEncoder.encode(text), \"\\\"/>\");\n            }\n            catch (error) {\n                e.className = \"vditor-reset--error\";\n                e.innerHTML = \"plantuml render error: <br>\".concat(error);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 214:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ setLute)\n/* harmony export */ });\nvar setLute = function (options) {\n    var lute = Lute.New();\n    lute.PutEmojis(options.emojis);\n    lute.SetEmojiSite(options.emojiSite);\n    lute.SetHeadingAnchor(options.headingAnchor);\n    lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);\n    lute.SetAutoSpace(options.autoSpace);\n    lute.SetToC(options.toc);\n    lute.SetFootnotes(options.footnotes);\n    lute.SetFixTermTypo(options.fixTermTypo);\n    lute.SetVditorCodeBlockPreview(options.codeBlockPreview);\n    lute.SetVditorMathBlockPreview(options.mathBlockPreview);\n    lute.SetSanitize(options.sanitize);\n    lute.SetChineseParagraphBeginningSpace(options.paragraphBeginningSpace);\n    lute.SetRenderListStyle(options.listStyle);\n    lute.SetLinkBase(options.linkBase);\n    lute.SetLinkPrefix(options.linkPrefix);\n    lute.SetMark(options.mark);\n    lute.SetGFMAutoLink(options.gfmAutoLink);\n    if (options.lazyLoadImage) {\n        lute.SetImageLazyLoading(options.lazyLoadImage);\n    }\n    return lute;\n};\n\n\n/***/ }),\n\n/***/ 190:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"E\": () => (/* binding */ previewImage)\n/* harmony export */ });\nvar previewImage = function (oldImgElement, lang, theme) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (theme === void 0) { theme = \"classic\"; }\n    var oldImgRect = oldImgElement.getBoundingClientRect();\n    var height = 36;\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div class=\\\"vditor vditor-img\".concat(theme === \"dark\" ? \" vditor--dark\" : \"\", \"\\\">\\n    <div class=\\\"vditor-img__bar\\\">\\n      <span class=\\\"vditor-img__btn\\\" data-deg=\\\"0\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-redo\\\"></use></svg>\\n        \").concat(window.VditorI18n.spin, \"\\n      </span>\\n      <span class=\\\"vditor-img__btn\\\"  onclick=\\\"this.parentElement.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n        X &nbsp;\").concat(window.VditorI18n.close, \"\\n      </span>\\n    </div>\\n    <div class=\\\"vditor-img__img\\\" onclick=\\\"this.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n      <img style=\\\"width: \").concat(oldImgElement.width, \"px;height:\").concat(oldImgElement.height, \"px;transform: translate3d(\").concat(oldImgRect.left, \"px, \").concat(oldImgRect.top - height, \"px, 0)\\\" src=\\\"\").concat(oldImgElement.getAttribute(\"src\"), \"\\\">\\n    </div>\\n</div>\"));\n    document.body.style.overflow = \"hidden\";\n    // 图片从原始位置移动到预览正中间的动画效果\n    var imgElement = document.querySelector(\".vditor-img img\");\n    var translate3d = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2, \"px, 0)\");\n    setTimeout(function () {\n        imgElement.setAttribute(\"style\", \"transition: transform .3s ease-in-out;transform: \".concat(translate3d));\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n    // 旋转\n    var btnElement = document.querySelector(\".vditor-img__btn\");\n    btnElement.addEventListener(\"click\", function () {\n        var deg = parseInt(btnElement.getAttribute(\"data-deg\"), 10) + 90;\n        if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) {\n            imgElement.style.transform = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2, \"px, 0) rotateZ(\").concat(deg, \"deg)\");\n        }\n        else {\n            imgElement.style.transform = \"\".concat(translate3d, \" rotateZ(\").concat(deg, \"deg)\");\n        }\n        btnElement.setAttribute(\"data-deg\", deg.toString());\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n};\n\n\n/***/ }),\n\n/***/ 580:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ setCodeTheme)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);\n\n\nvar setCodeTheme = function (codeTheme, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(codeTheme)) {\n        codeTheme = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(codeTheme, \".min.css\");\n    if (!vditorHljsStyle) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n    else if (vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 538:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": () => (/* binding */ setContentTheme)\n/* harmony export */ });\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(290);\n\nvar setContentTheme = function (contentTheme, path) {\n    if (!contentTheme || !path) {\n        return;\n    }\n    var vditorContentTheme = document.getElementById(\"vditorContentTheme\");\n    var cssPath = \"\".concat(path, \"/\").concat(contentTheme, \".css\");\n    if (!vditorContentTheme) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n    else if (vditorContentTheme.getAttribute(\"href\") !== cssPath) {\n        vditorContentTheme.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 413:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"J\": () => (/* binding */ addScriptSync),\n/* harmony export */   \"G\": () => (/* binding */ addScript)\n/* harmony export */ });\nvar addScriptSync = function (path, id) {\n    if (document.getElementById(id)) {\n        return false;\n    }\n    var xhrObj = new XMLHttpRequest();\n    xhrObj.open(\"GET\", path, false);\n    xhrObj.setRequestHeader(\"Accept\", \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01\");\n    xhrObj.send(\"\");\n    var scriptElement = document.createElement(\"script\");\n    scriptElement.type = \"text/javascript\";\n    scriptElement.text = xhrObj.responseText;\n    scriptElement.id = id;\n    document.head.appendChild(scriptElement);\n};\nvar addScript = function (path, id) {\n    return new Promise(function (resolve, reject) {\n        if (document.getElementById(id)) {\n            // 脚本加载后再次调用直接返回\n            resolve(true);\n            return false;\n        }\n        var scriptElement = document.createElement(\"script\");\n        scriptElement.src = path;\n        scriptElement.async = true;\n        // 循环调用时 Chrome 不会重复请求 js\n        document.head.appendChild(scriptElement);\n        scriptElement.onerror = function (event) {\n            reject(event);\n        };\n        scriptElement.onload = function () {\n            if (document.getElementById(id)) {\n                // 循环调用需清除 DOM 中的 script 标签\n                scriptElement.remove();\n                resolve(true);\n                return false;\n            }\n            scriptElement.id = id;\n            resolve(true);\n        };\n    });\n};\n\n\n/***/ }),\n\n/***/ 290:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"c\": () => (/* binding */ addStyle)\n/* harmony export */ });\nvar addStyle = function (url, id) {\n    if (!document.getElementById(id)) {\n        var styleElement = document.createElement(\"link\");\n        styleElement.id = id;\n        styleElement.rel = \"stylesheet\";\n        styleElement.type = \"text/css\";\n        styleElement.href = url;\n        document.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n    }\n};\n\n\n/***/ }),\n\n/***/ 105:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ code160to32)\n/* harmony export */ });\nvar code160to32 = function (text) {\n    // 非打断空格转换为空格\n    return text.replace(/\\u00a0/g, \" \");\n};\n\n\n/***/ }),\n\n/***/ 410:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"G6\": () => (/* binding */ isSafari),\n/* harmony export */   \"vU\": () => (/* binding */ isFirefox),\n/* harmony export */   \"pK\": () => (/* binding */ accessLocalStorage),\n/* harmony export */   \"Le\": () => (/* binding */ getEventName),\n/* harmony export */   \"yl\": () => (/* binding */ isCtrl),\n/* harmony export */   \"ns\": () => (/* binding */ updateHotkeyTip),\n/* harmony export */   \"i7\": () => (/* binding */ isChrome)\n/* harmony export */ });\nvar isSafari = function () {\n    return navigator.userAgent.indexOf(\"Safari\") > -1 && navigator.userAgent.indexOf(\"Chrome\") === -1;\n};\nvar isFirefox = function () {\n    return navigator.userAgent.toLowerCase().indexOf(\"firefox\") > -1;\n};\nvar accessLocalStorage = function () {\n    try {\n        return typeof localStorage !== \"undefined\";\n    }\n    catch (e) {\n        return false;\n    }\n};\n// 用户 iPhone 点击延迟/需要双击的处理\nvar getEventName = function () {\n    if (navigator.userAgent.indexOf(\"iPhone\") > -1) {\n        return \"touchstart\";\n    }\n    else {\n        return \"click\";\n    }\n};\n// 区别 mac 上的 ctrl 和 meta\nvar isCtrl = function (event) {\n    if (navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0) {\n        // mac\n        if (event.metaKey && !event.ctrlKey) {\n            return true;\n        }\n        return false;\n    }\n    else {\n        if (!event.metaKey && event.ctrlKey) {\n            return true;\n        }\n        return false;\n    }\n};\n// Mac，Windows 快捷键展示\nvar updateHotkeyTip = function (hotkey) {\n    if (/Mac/.test(navigator.platform) || navigator.platform === \"iPhone\") {\n        if (hotkey.indexOf(\"⇧\") > -1 && isFirefox()) {\n            // Mac Firefox 按下 shift 后，key 同 windows 系统\n            hotkey = hotkey.replace(\";\", \":\").replace(\"=\", \"+\").replace(\"-\", \"_\");\n        }\n    }\n    else {\n        if (hotkey.startsWith(\"⌘\")) {\n            hotkey = hotkey.replace(\"⌘\", \"⌘+\");\n        }\n        else if (hotkey.startsWith(\"⌥\") && hotkey.substr(1, 1) !== \"⌘\") {\n            hotkey = hotkey.replace(\"⌥\", \"⌥+\");\n        }\n        else {\n            hotkey = hotkey.replace(\"⇧⌘\", \"⌘+⇧+\").replace(\"⌥⌘\", \"⌥+⌘+\");\n        }\n        hotkey = hotkey.replace(\"⌘\", \"Ctrl\").replace(\"⇧\", \"Shift\")\n            .replace(\"⌥\", \"Alt\");\n        if (hotkey.indexOf(\"Shift\") > -1) {\n            hotkey = hotkey.replace(\";\", \":\").replace(\"=\", \"+\").replace(\"-\", \"_\");\n        }\n    }\n    return hotkey;\n};\nvar isChrome = function () {\n    return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n};\n\n\n/***/ }),\n\n/***/ 494:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Wb\": () => (/* binding */ genUUID),\n/* harmony export */   \"on\": () => (/* binding */ getSearch),\n/* harmony export */   \"Qf\": () => (/* binding */ looseJsonParse)\n/* harmony export */ });\nvar genUUID = function () { return ([1e7].toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {\n    return (parseInt(c, 10) ^ (window.crypto.getRandomValues(new Uint32Array(1))[0] & (15 >> (parseInt(c, 10) / 4)))).toString(16);\n}); };\nvar getSearch = function (key, link) {\n    if (link === void 0) { link = window.location.search; }\n    var params = link.substring(link.indexOf(\"?\"));\n    var hashIndex = params.indexOf(\"#\");\n    // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams\n    var urlSearchParams = new URLSearchParams(params.substring(0, hashIndex >= 0 ? hashIndex : undefined));\n    return urlSearchParams.get(key);\n};\nvar looseJsonParse = function (text) {\n    return Function(\"\\\"use strict\\\";return (\".concat(text, \")\"))();\n};\n\n\n/***/ }),\n\n/***/ 106:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"JQ\": () => (/* binding */ hasTopClosestByClassName),\n/* harmony export */   \"E2\": () => (/* binding */ hasTopClosestByTag),\n/* harmony export */   \"O9\": () => (/* binding */ getTopList),\n/* harmony export */   \"a1\": () => (/* binding */ hasClosestByAttribute),\n/* harmony export */   \"F9\": () => (/* binding */ hasClosestBlock),\n/* harmony export */   \"lG\": () => (/* binding */ hasClosestByMatchTag),\n/* harmony export */   \"fb\": () => (/* binding */ hasClosestByClassName),\n/* harmony export */   \"DX\": () => (/* binding */ getLastNode)\n/* harmony export */ });\n/* unused harmony export hasTopClosestByAttribute */\n/* harmony import */ var _hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(771);\n\nvar hasTopClosestByClassName = function (element, className) {\n    var closest = hasClosestByClassName(element, className);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByClassName(closest.parentElement, className);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByAttribute = function (element, attr, value) {\n    var closest = hasClosestByAttribute(element, attr, value);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByAttribute(closest.parentElement, attr, value);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByTag = function (element, nodeName) {\n    var closest = (0,_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__/* .hasClosestByTag */ .S)(element, nodeName);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = (0,_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__/* .hasClosestByTag */ .S)(closest.parentElement, nodeName);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar getTopList = function (element) {\n    var topUlElement = hasTopClosestByTag(element, \"UL\");\n    var topOlElement = hasTopClosestByTag(element, \"OL\");\n    var topListElement = topUlElement;\n    if (topOlElement && (!topUlElement || (topUlElement && topOlElement.contains(topUlElement)))) {\n        topListElement = topOlElement;\n    }\n    return topListElement;\n};\nvar hasClosestByAttribute = function (element, attr, value) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.getAttribute(attr) === value) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestBlock = function (element) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    var blockElement = hasClosestByAttribute(element, \"data-block\", \"0\");\n    if (blockElement) {\n        return blockElement;\n    }\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.tagName === \"H1\" ||\n            e.tagName === \"H2\" ||\n            e.tagName === \"H3\" ||\n            e.tagName === \"H4\" ||\n            e.tagName === \"H5\" ||\n            e.tagName === \"H6\" ||\n            e.tagName === \"P\" ||\n            e.tagName === \"BLOCKQUOTE\" ||\n            e.tagName === \"OL\" ||\n            e.tagName === \"UL\") {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByMatchTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName === nodeName) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByClassName = function (element, className) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.classList.contains(className)) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar getLastNode = function (node) {\n    while (node && node.lastChild) {\n        node = node.lastChild;\n    }\n    return node;\n};\n\n\n/***/ }),\n\n/***/ 771:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"S\": () => (/* binding */ hasClosestByTag),\n/* harmony export */   \"W\": () => (/* binding */ hasClosestByHeadings)\n/* harmony export */ });\n// NOTE: 减少 method.ts 打包，故从 hasClosest.ts 中拆分\nvar hasClosestByTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName.indexOf(nodeName) === 0) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByHeadings = function (element) {\n    var headingElement = hasClosestByTag(element, \"H\");\n    if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== \"HR\") {\n        return headingElement;\n    }\n    return false;\n};\n\n\n/***/ }),\n\n/***/ 673:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"T\": () => (/* binding */ merge)\n/* harmony export */ });\nvar merge = function () {\n    var options = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        options[_i] = arguments[_i];\n    }\n    var target = {};\n    var merger = function (obj) {\n        for (var prop in obj) {\n            if (obj.hasOwnProperty(prop)) {\n                if (Object.prototype.toString.call(obj[prop]) === \"[object Object]\") {\n                    target[prop] = merge(target[prop], obj[prop]);\n                }\n                else {\n                    target[prop] = obj[prop];\n                }\n            }\n        }\n    };\n    for (var i = 0; i < options.length; i++) {\n        merger(options[i]);\n    }\n    return target;\n};\n\n\n/***/ }),\n\n/***/ 810:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"zh\": () => (/* binding */ getEditorRange),\n/* harmony export */   \"Ny\": () => (/* binding */ getCursorPosition),\n/* harmony export */   \"Gb\": () => (/* binding */ selectIsEditor),\n/* harmony export */   \"Hc\": () => (/* binding */ setSelectionFocus),\n/* harmony export */   \"im\": () => (/* binding */ getSelectPosition),\n/* harmony export */   \"$j\": () => (/* binding */ setSelectionByPosition),\n/* harmony export */   \"ib\": () => (/* binding */ setRangeByWbr),\n/* harmony export */   \"oC\": () => (/* binding */ insertHTML)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _compatibility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(410);\n/* harmony import */ var _hasClosest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(106);\n\n\n\nvar getEditorRange = function (vditor) {\n    var range;\n    var element = vditor[vditor.currentMode].element;\n    if (getSelection().rangeCount > 0) {\n        range = getSelection().getRangeAt(0);\n        if (element.isEqualNode(range.startContainer) || element.contains(range.startContainer)) {\n            return range;\n        }\n    }\n    if (vditor[vditor.currentMode].range) {\n        return vditor[vditor.currentMode].range;\n    }\n    element.focus();\n    range = element.ownerDocument.createRange();\n    range.setStart(element, 0);\n    range.collapse(true);\n    return range;\n};\nvar getCursorPosition = function (editor) {\n    var range = window.getSelection().getRangeAt(0);\n    if (!editor.contains(range.startContainer) && !(0,_hasClosest__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByClassName */ .fb)(range.startContainer, \"vditor-panel--none\")) {\n        return {\n            left: 0,\n            top: 0,\n        };\n    }\n    var parentRect = editor.parentElement.getBoundingClientRect();\n    var cursorRect;\n    if (range.getClientRects().length === 0) {\n        if (range.startContainer.nodeType === 3) {\n            // 空行时，会出现没有 br 的情况，需要根据父元素 <p> 获取位置信息\n            var parent_1 = range.startContainer.parentElement;\n            if (parent_1 && parent_1.getClientRects().length > 0) {\n                cursorRect = parent_1.getClientRects()[0];\n            }\n            else {\n                return {\n                    left: 0,\n                    top: 0,\n                };\n            }\n        }\n        else {\n            var children = range.startContainer.children;\n            if (children[range.startOffset] &&\n                children[range.startOffset].getClientRects().length > 0) {\n                // markdown 模式回车\n                cursorRect = children[range.startOffset].getClientRects()[0];\n            }\n            else if (range.startContainer.childNodes.length > 0) {\n                // in table or code block\n                var cloneRange = range.cloneRange();\n                range.selectNode(range.startContainer.childNodes[Math.max(0, range.startOffset - 1)]);\n                cursorRect = range.getClientRects()[0];\n                range.setEnd(cloneRange.endContainer, cloneRange.endOffset);\n                range.setStart(cloneRange.startContainer, cloneRange.startOffset);\n            }\n            else {\n                cursorRect = range.startContainer.getClientRects()[0];\n            }\n            if (!cursorRect) {\n                var parentElement = range.startContainer.childNodes[range.startOffset];\n                while (!parentElement.getClientRects ||\n                    (parentElement.getClientRects && parentElement.getClientRects().length === 0)) {\n                    parentElement = parentElement.parentElement;\n                }\n                cursorRect = parentElement.getClientRects()[0];\n            }\n        }\n    }\n    else {\n        cursorRect = range.getClientRects()[0];\n    }\n    return {\n        left: cursorRect.left - parentRect.left,\n        top: cursorRect.top - parentRect.top,\n    };\n};\nvar selectIsEditor = function (editor, range) {\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return false;\n        }\n        else {\n            range = getSelection().getRangeAt(0);\n        }\n    }\n    var container = range.commonAncestorContainer;\n    return editor.isEqualNode(container) || editor.contains(container);\n};\nvar setSelectionFocus = function (range) {\n    var selection = window.getSelection();\n    selection.removeAllRanges();\n    selection.addRange(range);\n};\nvar getSelectPosition = function (selectElement, editorElement, range) {\n    var position = {\n        end: 0,\n        start: 0,\n    };\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return position;\n        }\n        range = window.getSelection().getRangeAt(0);\n    }\n    if (selectIsEditor(editorElement, range)) {\n        var preSelectionRange = range.cloneRange();\n        if (selectElement.childNodes[0] && selectElement.childNodes[0].childNodes[0]) {\n            preSelectionRange.setStart(selectElement.childNodes[0].childNodes[0], 0);\n        }\n        else {\n            preSelectionRange.selectNodeContents(selectElement);\n        }\n        preSelectionRange.setEnd(range.startContainer, range.startOffset);\n        position.start = preSelectionRange.toString().length;\n        position.end = position.start + range.toString().length;\n    }\n    return position;\n};\nvar setSelectionByPosition = function (start, end, editor) {\n    var charIndex = 0;\n    var line = 0;\n    var pNode = editor.childNodes[line];\n    var foundStart = false;\n    var stop = false;\n    start = Math.max(0, start);\n    end = Math.max(0, end);\n    var range = editor.ownerDocument.createRange();\n    range.setStart(pNode || editor, 0);\n    range.collapse(true);\n    while (!stop && pNode) {\n        var nextCharIndex = charIndex + pNode.textContent.length;\n        if (!foundStart && start >= charIndex && start <= nextCharIndex) {\n            if (start === 0) {\n                range.setStart(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setStart(pNode.childNodes[0], start - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setStartBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setStartAfter(pNode);\n                }\n            }\n            foundStart = true;\n            if (start === end) {\n                stop = true;\n                break;\n            }\n        }\n        if (foundStart && end >= charIndex && end <= nextCharIndex) {\n            if (end === 0) {\n                range.setEnd(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setEnd(pNode.childNodes[0], end - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setEndBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setEndAfter(pNode);\n                }\n            }\n            stop = true;\n        }\n        charIndex = nextCharIndex;\n        pNode = editor.childNodes[++line];\n    }\n    if (!stop && editor.childNodes[line - 1]) {\n        range.setStartBefore(editor.childNodes[line - 1]);\n    }\n    setSelectionFocus(range);\n    return range;\n};\nvar setRangeByWbr = function (element, range) {\n    var wbrElement = element.querySelector(\"wbr\");\n    if (!wbrElement) {\n        return;\n    }\n    if (!wbrElement.previousElementSibling) {\n        if (wbrElement.previousSibling) {\n            // text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n        else if (wbrElement.nextSibling) {\n            if (wbrElement.nextSibling.nodeType === 3) {\n                // <wbr>text\n                range.setStart(wbrElement.nextSibling, 0);\n            }\n            else {\n                // <wbr><br> https://github.com/Vanessa219/vditor/issues/400\n                range.setStartBefore(wbrElement.nextSibling);\n            }\n        }\n        else {\n            // 内容为空\n            range.setStart(wbrElement.parentElement, 0);\n        }\n    }\n    else {\n        if (wbrElement.previousElementSibling.isSameNode(wbrElement.previousSibling)) {\n            if (wbrElement.previousElementSibling.lastChild) {\n                // <em>text</em><wbr>\n                range.setStartBefore(wbrElement);\n                range.collapse(true);\n                setSelectionFocus(range);\n                // fix Chrome set range bug: **c**\n                if ((0,_compatibility__WEBPACK_IMPORTED_MODULE_2__/* .isChrome */ .i7)() && (wbrElement.previousElementSibling.tagName === \"EM\" ||\n                    wbrElement.previousElementSibling.tagName === \"STRONG\" ||\n                    wbrElement.previousElementSibling.tagName === \"S\")) {\n                    range.insertNode(document.createTextNode(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP));\n                    range.collapse(false);\n                }\n                wbrElement.remove();\n                return;\n            }\n            else {\n                // <br><wbr>\n                range.setStartAfter(wbrElement.previousElementSibling);\n            }\n        }\n        else {\n            // <em>text</em>text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n    }\n    range.collapse(true);\n    wbrElement.remove();\n    setSelectionFocus(range);\n};\nvar insertHTML = function (html, vditor) {\n    // 使用 lute 方法会添加 p 元素，只有一个 p 元素的时候进行删除\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var tempBlockElement = tempElement.querySelectorAll(\"p\");\n    if (tempBlockElement.length === 1 && !tempBlockElement[0].previousSibling && !tempBlockElement[0].nextSibling &&\n        vditor[vditor.currentMode].element.children.length > 0 && tempElement.firstElementChild.tagName === \"P\") {\n        html = tempBlockElement[0].innerHTML.trim();\n    }\n    var pasteElement = document.createElement(\"div\");\n    pasteElement.innerHTML = html;\n    var range = getEditorRange(vditor);\n    if (range.toString() !== \"\") {\n        vditor[vditor.currentMode].preventInput = true;\n        document.execCommand(\"delete\", false, \"\");\n    }\n    if (pasteElement.firstElementChild &&\n        pasteElement.firstElementChild.getAttribute(\"data-block\") === \"0\") {\n        // 粘贴内容为块元素时，应在下一段落中插入\n        pasteElement.lastElementChild.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        var blockElement = (0,_hasClosest__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestBlock */ .F9)(range.startContainer);\n        if (!blockElement) {\n            vditor[vditor.currentMode].element.insertAdjacentHTML(\"beforeend\", pasteElement.innerHTML);\n        }\n        else {\n            blockElement.insertAdjacentHTML(\"afterend\", pasteElement.innerHTML);\n        }\n        setRangeByWbr(vditor[vditor.currentMode].element, range);\n    }\n    else {\n        var pasteTemplate = document.createElement(\"template\");\n        pasteTemplate.innerHTML = html;\n        range.insertNode(pasteTemplate.content.cloneNode(true));\n        range.collapse(false);\n        setSelectionFocus(range);\n    }\n};\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n(() => {\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ src)\n});\n\n// EXTERNAL MODULE: ./src/method.ts + 4 modules\nvar method = __webpack_require__(408);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(145);\n// EXTERNAL MODULE: ./src/ts/util/code160to32.ts\nvar code160to32 = __webpack_require__(105);\n;// CONCATENATED MODULE: ./src/ts/markdown/getMarkdown.ts\n\nvar getMarkdown = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return (0,code160to32/* code160to32 */.X)(\"\".concat(vditor.sv.element.textContent, \"\\n\").replace(/\\n\\n$/, \"\\n\"));\n    }\n    else if (vditor.currentMode === \"wysiwyg\") {\n        var html = vditor.wysiwyg.element.innerHTML.replace(/<span class=\"linsi-span\" contenteditable=\"false\">(.*?)<\\/span>/g, '{{$1}}');\n        return vditor.lute.VditorDOM2Md(html);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        return vditor.lute.VditorIRDOM2Md(vditor.ir.element.innerHTML);\n    }\n    return \"\";\n};\n\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(413);\n;// CONCATENATED MODULE: ./src/ts/devtools/index.ts\n\n\nvar DevTools = /** @class */ (function () {\n    function DevTools() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-devtools\";\n        this.element.innerHTML = '<div class=\"vditor-reset--error\"></div><div style=\"height: 100%;\"></div>';\n    }\n    DevTools.prototype.renderEchart = function (vditor) {\n        var _this = this;\n        if (vditor.devtools.element.style.display !== \"block\") {\n            return;\n        }\n        (0,addScript/* addScript */.G)(\"\".concat(vditor.options.cdn, \"/dist/js/echarts/echarts.min.js?v=5.5.1\"), \"vditorEchartsScript\").then(function () {\n            if (!_this.ASTChart) {\n                _this.ASTChart = echarts.init(vditor.devtools.element.lastElementChild);\n            }\n            try {\n                _this.element.lastElementChild.style.display = \"block\";\n                _this.element.firstElementChild.innerHTML = \"\";\n                _this.ASTChart.setOption({\n                    series: [\n                        {\n                            data: JSON.parse(vditor.lute.RenderEChartsJSON(getMarkdown(vditor))),\n                            initialTreeDepth: -1,\n                            label: {\n                                align: \"left\",\n                                backgroundColor: \"rgba(68, 77, 86, .68)\",\n                                borderRadius: 3,\n                                color: \"#d1d5da\",\n                                fontSize: 12,\n                                lineHeight: 12,\n                                offset: [9, 12],\n                                padding: [2, 4, 2, 4],\n                                position: \"top\",\n                                verticalAlign: \"middle\",\n                            },\n                            lineStyle: {\n                                color: \"#4285f4\",\n                                type: \"curve\",\n                                width: 1,\n                            },\n                            orient: \"vertical\",\n                            roam: true,\n                            type: \"tree\",\n                        },\n                    ],\n                    toolbox: {\n                        bottom: 25,\n                        emphasis: {\n                            iconStyle: {\n                                color: \"#4285f4\",\n                            },\n                        },\n                        feature: {\n                            restore: {\n                                show: true,\n                            },\n                            saveAsImage: {\n                                show: true,\n                            },\n                        },\n                        right: 15,\n                        show: true,\n                    },\n                });\n                _this.ASTChart.resize();\n            }\n            catch (e) {\n                _this.element.lastElementChild.style.display = \"none\";\n                _this.element.firstElementChild.innerHTML = e;\n            }\n        });\n    };\n    return DevTools;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/util/compatibility.ts\nvar compatibility = __webpack_require__(410);\n;// CONCATENATED MODULE: ./src/ts/toolbar/setToolbar.ts\n\n\nvar removeCurrentToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && itemElement.classList.contains(\"vditor-menu--current\")) {\n            itemElement.classList.remove(\"vditor-menu--current\");\n        }\n    });\n};\nvar setCurrentToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && !itemElement.classList.contains(\"vditor-menu--current\")) {\n            itemElement.classList.add(\"vditor-menu--current\");\n        }\n    });\n};\nvar enableToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && itemElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            itemElement.classList.remove(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED);\n        }\n    });\n};\nvar disableToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && !itemElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            itemElement.classList.add(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED);\n        }\n    });\n};\nvar hideToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        if (toolbar[name]) {\n            toolbar[name].style.display = \"none\";\n        }\n    });\n};\nvar showToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        if (toolbar[name]) {\n            toolbar[name].style.display = \"block\";\n        }\n    });\n};\n// \"subToolbar\", \"hint\", \"popover\"\nvar hidePanel = function (vditor, panels, exceptElement) {\n    if (panels.includes(\"subToolbar\")) {\n        vditor.toolbar.element.querySelectorAll(\".vditor-hint\").forEach(function (item) {\n            if (exceptElement && item.isEqualNode(exceptElement)) {\n                return;\n            }\n            item.style.display = \"none\";\n        });\n        if (vditor.toolbar.elements.emoji) {\n            vditor.toolbar.elements.emoji.lastElementChild.style.display = \"none\";\n        }\n    }\n    if (panels.includes(\"hint\")) {\n        vditor.hint.element.style.display = \"none\";\n    }\n    if (vditor.wysiwyg.popover && panels.includes(\"popover\")) {\n        vditor.wysiwyg.popover.style.display = \"none\";\n    }\n};\nvar toggleSubMenu = function (vditor, panelElement, actionBtn, level) {\n    actionBtn.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        if (actionBtn.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            return;\n        }\n        vditor.toolbar.element.querySelectorAll(\".vditor-hint--current\").forEach(function (item) {\n            item.classList.remove(\"vditor-hint--current\");\n        });\n        if (panelElement.style.display === \"block\") {\n            panelElement.style.display = \"none\";\n        }\n        else {\n            hidePanel(vditor, [\"subToolbar\", \"hint\", \"popover\"], actionBtn.parentElement.parentElement);\n            if (!actionBtn.classList.contains(\"vditor-tooltipped\")) {\n                actionBtn.classList.add(\"vditor-hint--current\");\n            }\n            panelElement.style.display = \"block\";\n            if (vditor.toolbar.element.getBoundingClientRect().right - actionBtn.getBoundingClientRect().right < 250) {\n                panelElement.classList.add(\"vditor-panel--left\");\n            }\n            else {\n                panelElement.classList.remove(\"vditor-panel--left\");\n            }\n        }\n    });\n};\n\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(106);\n// EXTERNAL MODULE: ./src/ts/util/hasClosestByHeadings.ts\nvar hasClosestByHeadings = __webpack_require__(771);\n;// CONCATENATED MODULE: ./src/ts/util/log.ts\nvar log = function (method, content, type, print) {\n    if (print) {\n        // @ts-ignore\n        console.log(\"\".concat(method, \" - \").concat(type, \": \").concat(content));\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(135);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(775);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(428);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(325);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(483);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(999);\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(472);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(637);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(11);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(194);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(229);\n// EXTERNAL MODULE: ./src/ts/markdown/SMILESRender.ts\nvar SMILESRender = __webpack_require__(825);\n;// CONCATENATED MODULE: ./src/ts/util/processCode.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar processPasteCode = function (html, text, type) {\n    if (type === void 0) { type = \"sv\"; }\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var isCode = false;\n    if (tempElement.childElementCount === 1 &&\n        tempElement.lastElementChild.style.fontFamily.indexOf(\"monospace\") > -1) {\n        // VS Code\n        isCode = true;\n    }\n    var pres = tempElement.querySelectorAll(\"pre\");\n    if (tempElement.childElementCount === 1 && pres.length === 1\n        && pres[0].className !== \"vditor-wysiwyg\"\n        && pres[0].className !== \"vditor-sv\") {\n        // IDE\n        isCode = true;\n    }\n    if (html.indexOf('\\n<p class=\"p1\">') === 0) {\n        // Xcode\n        isCode = true;\n    }\n    if (tempElement.childElementCount === 1 && tempElement.firstElementChild.tagName === \"TABLE\" &&\n        tempElement.querySelector(\".line-number\") && tempElement.querySelector(\".line-content\")) {\n        // 网页源码\n        isCode = true;\n    }\n    if (isCode) {\n        var code = text || html;\n        if (/\\n/.test(code) || pres.length === 1) {\n            if (type === \"wysiwyg\") {\n                return \"<div class=\\\"vditor-wysiwyg__block\\\" data-block=\\\"0\\\" data-type=\\\"code-block\\\"><pre><code>\".concat(code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"), \"<wbr></code></pre></div>\");\n            }\n            return \"\\n```\\n\" + code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\") + \"\\n```\";\n        }\n        else {\n            if (type === \"wysiwyg\") {\n                return \"<code>\".concat(code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"), \"</code><wbr>\");\n            }\n            return \"`\".concat(code, \"`\");\n        }\n    }\n    return false;\n};\nvar processCodeRender = function (previewPanel, vditor) {\n    if (!previewPanel) {\n        return;\n    }\n    if (previewPanel.parentElement.getAttribute(\"data-type\") === \"html-block\") {\n        previewPanel.setAttribute(\"data-render\", \"1\");\n        return;\n    }\n    var language = previewPanel.firstElementChild.className.replace(\"language-\", \"\");\n    if (language === \"abc\") {\n        (0,abcRender/* abcRender */.Q)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"mermaid\") {\n        (0,mermaidRender/* mermaidRender */.i)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"smiles\") {\n        (0,SMILESRender/* SMILESRender */.J)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"markmap\") {\n        (0,markmapRender/* markmapRender */.K)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"flowchart\") {\n        (0,flowchartRender/* flowchartRender */.P)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"echarts\") {\n        (0,chartRender/* chartRender */.p)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"mindmap\") {\n        (0,mindmapRender/* mindmapRender */.P)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"plantuml\") {\n        (0,plantumlRender/* plantumlRender */.B)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"graphviz\") {\n        (0,graphvizRender/* graphvizRender */.v)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"math\") {\n        (0,mathRender/* mathRender */.H)(previewPanel, { cdn: vditor.options.cdn, math: vditor.options.preview.math });\n    }\n    else {\n        var cRender = vditor.options.customRenders.find(function (item) {\n            if (item.language === language) {\n                item.render(previewPanel, vditor);\n                return true;\n            }\n        });\n        if (!cRender) {\n            (0,highlightRender/* highlightRender */.s)(Object.assign({}, vditor.options.preview.hljs), previewPanel, vditor.options.cdn);\n            (0,codeRender/* codeRender */.O)(previewPanel, vditor.options.preview.hljs);\n        }\n    }\n    previewPanel.setAttribute(\"data-render\", \"1\");\n};\n\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar util_selection = __webpack_require__(810);\n;// CONCATENATED MODULE: ./src/ts/util/toc.ts\n\n\n\n\nvar renderToc = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return;\n    }\n    var editorElement = vditor[vditor.currentMode].element;\n    var tocHTML = vditor.outline.render(vditor);\n    if (tocHTML === \"\") {\n        tocHTML = \"[ToC]\";\n    }\n    editorElement.querySelectorAll('[data-type=\"toc-block\"]').forEach(function (item) {\n        item.innerHTML = tocHTML;\n        (0,mathRender/* mathRender */.H)(item, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    });\n};\nvar clickToc = function (event, vditor) {\n    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n        var headingElement = vditor[vditor.currentMode].element.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n        if (headingElement) {\n            if (vditor.options.height === \"auto\") {\n                var windowScrollY = headingElement.offsetTop + vditor.element.offsetTop;\n                if (!vditor.options.toolbarConfig.pin) {\n                    windowScrollY += vditor.toolbar.element.offsetHeight;\n                }\n                window.scrollTo(window.scrollX, windowScrollY);\n            }\n            else {\n                if (vditor.element.offsetTop < window.scrollY) {\n                    window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                }\n                vditor[vditor.currentMode].element.scrollTop = headingElement.offsetTop;\n            }\n        }\n        return;\n    }\n};\nvar keydownToc = function (blockElement, vditor, event, range) {\n    // toc 前无元素，插入空块\n    if (blockElement.previousElementSibling &&\n        blockElement.previousElementSibling.classList.contains(\"vditor-toc\")) {\n        if (event.key === \"Backspace\" &&\n            (0,util_selection/* getSelectPosition */.im)(blockElement, vditor[vditor.currentMode].element, range).start === 0) {\n            blockElement.previousElementSibling.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n        if (insertBeforeBlock(vditor, event, range, blockElement, blockElement.previousElementSibling)) {\n            return true;\n        }\n    }\n    // toc 后无元素，插入空块\n    if (blockElement.nextElementSibling &&\n        blockElement.nextElementSibling.classList.contains(\"vditor-toc\")) {\n        if (event.key === \"Delete\" &&\n            (0,util_selection/* getSelectPosition */.im)(blockElement, vditor[vditor.currentMode].element, range).start\n                >= blockElement.textContent.trimRight().length) {\n            blockElement.nextElementSibling.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n        if (insertAfterBlock(vditor, event, range, blockElement, blockElement.nextElementSibling)) {\n            return true;\n        }\n    }\n    // toc 删除\n    if (event.key === \"Backspace\" || event.key === \"Delete\") {\n        var tocElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-toc\");\n        if (tocElement) {\n            tocElement.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/input.ts\n\n\n\n\n\n\n\n\n\n\nvar input = function (vditor, range, ignoreSpace, event) {\n    if (ignoreSpace === void 0) { ignoreSpace = false; }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    // 前后可以输入空格\n    if (blockElement && !ignoreSpace && blockElement.getAttribute(\"data-type\") !== \"code-block\") {\n        if ((isHrMD(blockElement.innerHTML) && blockElement.previousElementSibling) ||\n            isHeadingMD(blockElement.innerHTML)) {\n            return;\n        }\n        // 前后空格处理\n        var startOffset = (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.ir.element, range).start;\n        // 开始可以输入空格\n        var startSpace = true;\n        for (var i = startOffset - 1; \n        // 软换行后有空格\n        i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n            if (blockElement.textContent.charAt(i) !== \" \" &&\n                // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                blockElement.textContent.charAt(i) !== \"\\t\") {\n                startSpace = false;\n                break;\n            }\n        }\n        if (startOffset === 0) {\n            startSpace = false;\n        }\n        // 结尾可以输入空格\n        var endSpace = true;\n        for (var i = startOffset - 1; i < blockElement.textContent.length; i++) {\n            if (blockElement.textContent.charAt(i) !== \" \" && blockElement.textContent.charAt(i) !== \"\\n\") {\n                endSpace = false;\n                break;\n            }\n        }\n        if (startSpace) {\n            if (typeof vditor.options.input === \"function\") {\n                vditor.options.input(getMarkdown(vditor));\n            }\n            return;\n        }\n        // https://github.com/Vanessa219/vditor/issues/729\n        if (endSpace && /^#{1,6} $/.test(blockElement.textContent)) {\n            endSpace = false;\n        }\n        if (endSpace) {\n            var markerElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__marker\");\n            if (markerElement) {\n                // inline marker space https://github.com/Vanessa219/vditor/issues/239\n            }\n            else {\n                var previousNode = range.startContainer.previousSibling;\n                if (previousNode && previousNode.nodeType !== 3 && previousNode.classList.contains(\"vditor-ir__node--expand\")) {\n                    // FireFox https://github.com/Vanessa219/vditor/issues/239\n                    previousNode.classList.remove(\"vditor-ir__node--expand\");\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n                return;\n            }\n        }\n    }\n    vditor.ir.element.querySelectorAll(\".vditor-ir__node--expand\").forEach(function (item) {\n        item.classList.remove(\"vditor-ir__node--expand\");\n    });\n    if (!blockElement) {\n        // 使用顶级块元素，应使用 innerHTML\n        blockElement = vditor.ir.element;\n    }\n    // document.exeComment insertHTML 会插入 wbr\n    if (!blockElement.querySelector(\"wbr\")) {\n        var previewRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n        if (previewRenderElement) {\n            previewRenderElement.previousElementSibling.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        }\n        else {\n            range.insertNode(document.createElement(\"wbr\"));\n        }\n    }\n    // 清除浏览器自带的样式\n    blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n        item.removeAttribute(\"style\");\n    });\n    if (blockElement.getAttribute(\"data-type\") === \"link-ref-defs-block\") {\n        // 修改链接引用\n        blockElement = vditor.ir.element;\n    }\n    var isIRElement = blockElement.isEqualNode(vditor.ir.element);\n    var footnoteElement = (0,hasClosest/* hasClosestByAttribute */.a1)(blockElement, \"data-type\", \"footnotes-block\");\n    var html = \"\";\n    if (!isIRElement) {\n        var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"BLOCKQUOTE\");\n        // 列表需要到最顶层\n        var topListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (topListElement) {\n            blockElement = topListElement;\n        }\n        // 应到引用层，否则 > --- 会解析为 front-matter；列表中有 blockquote 则解析 blockquote；blockquote 中有列表则解析列表\n        if (blockquoteElement && (!topListElement || (topListElement && !blockquoteElement.contains(topListElement)))) {\n            blockElement = blockquoteElement;\n        }\n        // 修改脚注\n        if (footnoteElement) {\n            blockElement = footnoteElement;\n        }\n        html = blockElement.outerHTML;\n        if (blockElement.tagName === \"UL\" || blockElement.tagName === \"OL\") {\n            // 如果为列表的话，需要把上下的列表都重绘\n            var listPrevElement = blockElement.previousElementSibling;\n            var listNextElement = blockElement.nextElementSibling;\n            if (listPrevElement && (listPrevElement.tagName === \"UL\" || listPrevElement.tagName === \"OL\")) {\n                html = listPrevElement.outerHTML + html;\n                listPrevElement.remove();\n            }\n            if (listNextElement && (listNextElement.tagName === \"UL\" || listNextElement.tagName === \"OL\")) {\n                html = html + listNextElement.outerHTML;\n                listNextElement.remove();\n            }\n            // firefox 列表回车不会产生新的 list item https://github.com/Vanessa219/vditor/issues/194\n            html = html.replace(\"<div><wbr><br></div>\", \"<li><p><wbr><br></p></li>\");\n        }\n        else if (blockElement.previousElementSibling &&\n            blockElement.previousElementSibling.textContent.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") !== \"\" &&\n            event && event.inputType === \"insertParagraph\") {\n            // 换行时需要处理上一段落\n            html = blockElement.previousElementSibling.outerHTML + html;\n            blockElement.previousElementSibling.remove();\n        }\n        if (!blockElement.innerText.startsWith(\"```\")) {\n            // 添加链接引用\n            vditor.ir.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n                if (item && !blockElement.isEqualNode(item)) {\n                    html += item.outerHTML;\n                    item.remove();\n                }\n            });\n            // 添加脚注\n            vditor.ir.element.querySelectorAll(\"[data-type='footnotes-block']\").forEach(function (item) {\n                if (item && !blockElement.isEqualNode(item)) {\n                    html += item.outerHTML;\n                    item.remove();\n                }\n            });\n        }\n    }\n    else {\n        html = blockElement.innerHTML;\n    }\n    log(\"SpinVditorIRDOM\", html, \"argument\", vditor.options.debugger);\n    html = vditor.lute.SpinVditorIRDOM(html);\n    log(\"SpinVditorIRDOM\", html, \"result\", vditor.options.debugger);\n    if (isIRElement) {\n        blockElement.innerHTML = html;\n    }\n    else {\n        blockElement.outerHTML = html;\n        // 更新正文中的 tip\n        if (footnoteElement) {\n            var footnoteItemElement = (0,hasClosest/* hasClosestByAttribute */.a1)(vditor.ir.element.querySelector(\"wbr\"), \"data-type\", \"footnotes-def\");\n            if (footnoteItemElement) {\n                var footnoteItemText = footnoteItemElement.textContent;\n                var marker = footnoteItemText.substring(1, footnoteItemText.indexOf(\"]:\"));\n                var footnoteRefElement = vditor.ir.element.querySelector(\"sup[data-type=\\\"footnotes-ref\\\"][data-footnotes-label=\\\"\".concat(marker, \"\\\"]\"));\n                if (footnoteRefElement) {\n                    footnoteRefElement.setAttribute(\"aria-label\", footnoteItemText.substr(marker.length + 3).trim().substr(0, 24));\n                }\n            }\n        }\n    }\n    //  linkref 合并及添加\n    var firstLinkRefDefElement;\n    var allLinkRefDefsElement = vditor.ir.element.querySelectorAll(\"[data-type='link-ref-defs-block']\");\n    allLinkRefDefsElement.forEach(function (item, index) {\n        if (index === 0) {\n            firstLinkRefDefElement = item;\n        }\n        else {\n            firstLinkRefDefElement.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n            item.remove();\n        }\n    });\n    if (allLinkRefDefsElement.length > 0) {\n        vditor.ir.element.insertAdjacentElement(\"beforeend\", allLinkRefDefsElement[0]);\n    }\n    // 脚注合并后添加的末尾\n    var firstFootnoteElement;\n    var allFootnoteElement = vditor.ir.element.querySelectorAll(\"[data-type='footnotes-block']\");\n    allFootnoteElement.forEach(function (item, index) {\n        if (index === 0) {\n            firstFootnoteElement = item;\n        }\n        else {\n            firstFootnoteElement.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n            item.remove();\n        }\n    });\n    if (allFootnoteElement.length > 0) {\n        vditor.ir.element.insertAdjacentElement(\"beforeend\", allFootnoteElement[0]);\n    }\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    vditor.ir.element.querySelectorAll(\".vditor-ir__preview[data-render='2']\").forEach(function (item) {\n        processCodeRender(item, vditor);\n    });\n    renderToc(vditor);\n    process_processAfterRender(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/hotKey.ts\n\n// 是否匹配 ⇧⌘[] / ⌘[] / ⌥[] / ⌥⌘[] / ⇧Tab / []\nvar matchHotKey = function (hotKey, event) {\n    if (hotKey === \"\") {\n        return false;\n    }\n    // []\n    if (hotKey.indexOf(\"⇧\") === -1 && hotKey.indexOf(\"⌘\") === -1 && hotKey.indexOf(\"⌥\") === -1) {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && event.code === hotKey) {\n            return true;\n        }\n        return false;\n    }\n    // 是否匹配 ⇧Tab\n    if (hotKey === \"⇧Tab\") {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.shiftKey && event.code === \"Tab\") {\n            return true;\n        }\n        return false;\n    }\n    var hotKeys = hotKey.split(\"\");\n    if (hotKey.startsWith(\"⌥\")) {\n        // 是否匹配 ⌥[] / ⌥⌘[]\n        var keyCode = hotKeys.length === 3 ? hotKeys[2] : hotKeys[1];\n        if ((hotKeys.length === 3 ? (0,compatibility/* isCtrl */.yl)(event) : !(0,compatibility/* isCtrl */.yl)(event)) && event.altKey && !event.shiftKey &&\n            event.code === (/^[0-9]$/.test(keyCode) ? \"Digit\" : \"Key\") + keyCode) {\n            return true;\n        }\n        return false;\n    }\n    // 是否匹配 ⇧⌘[] / ⌘[]\n    if (hotKey === \"⌘Enter\") {\n        hotKeys = [\"⌘\", \"Enter\"];\n    }\n    var hasShift = hotKeys.length > 2 && (hotKeys[0] === \"⇧\");\n    var key = (hasShift ? hotKeys[2] : hotKeys[1]);\n    if (hasShift && ((0,compatibility/* isFirefox */.vU)() || !/Mac/.test(navigator.platform))) {\n        if (key === \"-\") {\n            key = \"_\";\n        }\n        else if (key === \"=\") {\n            key = \"+\";\n        }\n    }\n    if ((0,compatibility/* isCtrl */.yl)(event) && event.key.toLowerCase() === key.toLowerCase() && !event.altKey\n        && ((!hasShift && !event.shiftKey) || (hasShift && event.shiftKey))) {\n        return true;\n    }\n    return false;\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/expandMarker.ts\n\n\nvar nextIsNode = function (range) {\n    var startContainer = range.startContainer;\n    if (startContainer.nodeType === 3 && startContainer.nodeValue.length !== range.startOffset) {\n        return false;\n    }\n    var nextNode = startContainer.nextSibling;\n    while (nextNode && nextNode.textContent === \"\") {\n        nextNode = nextNode.nextSibling;\n    }\n    if (!nextNode) {\n        // *em*|**string**\n        var markerElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-ir__marker\");\n        if (markerElement && !markerElement.nextSibling) {\n            var parentNextNode = startContainer.parentElement.parentElement.nextSibling;\n            if (parentNextNode && parentNextNode.nodeType !== 3 &&\n                parentNextNode.classList.contains(\"vditor-ir__node\")) {\n                return parentNextNode;\n            }\n        }\n        return false;\n    }\n    else if (nextNode && nextNode.nodeType !== 3 && nextNode.classList.contains(\"vditor-ir__node\") &&\n        !nextNode.getAttribute(\"data-block\")) {\n        // test|*em*\n        return nextNode;\n    }\n    return false;\n};\nvar previousIsNode = function (range) {\n    var startContainer = range.startContainer;\n    var previousNode = startContainer.previousSibling;\n    if (startContainer.nodeType === 3 && range.startOffset === 0 && previousNode && previousNode.nodeType !== 3 &&\n        // *em*|text\n        previousNode.classList.contains(\"vditor-ir__node\") && !previousNode.getAttribute(\"data-block\")) {\n        return previousNode;\n    }\n    return false;\n};\nvar expandMarker = function (range, vditor) {\n    vditor.ir.element.querySelectorAll(\".vditor-ir__node--expand\").forEach(function (item) {\n        item.classList.remove(\"vditor-ir__node--expand\");\n    });\n    var nodeElement = (0,hasClosest/* hasTopClosestByClassName */.JQ)(range.startContainer, \"vditor-ir__node\");\n    var nodeElementEnd = !range.collapsed && (0,hasClosest/* hasTopClosestByClassName */.JQ)(range.endContainer, \"vditor-ir__node\");\n    // 选中文本为同一个 nodeElement 内时，需要展开\n    if (!range.collapsed && (!nodeElement || nodeElement !== nodeElementEnd)) {\n        return;\n    }\n    if (nodeElement) {\n        nodeElement.classList.add(\"vditor-ir__node--expand\");\n        nodeElement.classList.remove(\"vditor-ir__node--hidden\");\n        // https://github.com/Vanessa219/vditor/issues/615 safari中光标位置跳动\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n    }\n    var nextNode = nextIsNode(range);\n    if (nextNode) {\n        nextNode.classList.add(\"vditor-ir__node--expand\");\n        nextNode.classList.remove(\"vditor-ir__node--hidden\");\n        return;\n    }\n    var previousNode = previousIsNode(range);\n    if (previousNode) {\n        previousNode.classList.add(\"vditor-ir__node--expand\");\n        previousNode.classList.remove(\"vditor-ir__node--hidden\");\n        return;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/processKeydown.ts\n\n\n\n\n\n\n\n\n\n\n\nvar processKeydown = function (vditor, event) {\n    vditor.ir.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    // 添加第一次记录 undo 的光标\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (!fixGSKeyBackspace(event, vditor, startContainer)) {\n        return false;\n    }\n    fixCJKPosition(range, vditor, event);\n    fixHR(range);\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\" && event.key !== \"Delete\") {\n        return false;\n    }\n    // 斜体、粗体、内联代码块中换行\n    var newlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-newline\", \"1\");\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && event.key === \"Enter\" && newlineElement\n        && range.startOffset < newlineElement.textContent.length) {\n        var beforeMarkerElement = newlineElement.previousElementSibling;\n        if (beforeMarkerElement) {\n            range.insertNode(document.createTextNode(beforeMarkerElement.textContent));\n            range.collapse(false);\n        }\n        var afterMarkerElement = newlineElement.nextSibling;\n        if (afterMarkerElement) {\n            range.insertNode(document.createTextNode(afterMarkerElement.textContent));\n            range.collapse(true);\n        }\n    }\n    var pElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"P\");\n    // md 处理\n    if (fixMarkdown(event, vditor, pElement, range)) {\n        return true;\n    }\n    // li\n    if (fixList(range, vditor, pElement, event)) {\n        return true;\n    }\n    // blockquote\n    if (fixBlockquote(vditor, range, event, pElement)) {\n        return true;\n    }\n    // 代码块\n    var preRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-ir__marker--pre\");\n    if (preRenderElement && preRenderElement.tagName === \"PRE\") {\n        var codeRenderElement = preRenderElement.firstChild;\n        if (fixCodeBlock(vditor, event, preRenderElement, range)) {\n            return true;\n        }\n        // 数学公式上无元素，按上或左将添加新块\n        if ((codeRenderElement.getAttribute(\"data-type\") === \"math-block\"\n            || codeRenderElement.getAttribute(\"data-type\") === \"html-block\") &&\n            insertBeforeBlock(vditor, event, range, codeRenderElement, preRenderElement.parentElement)) {\n            return true;\n        }\n        // 代码块下无元素或者为代码块/table 元素，添加空块\n        if (insertAfterBlock(vditor, event, range, codeRenderElement, preRenderElement.parentElement)) {\n            return true;\n        }\n    }\n    // 代码块语言\n    var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-info\");\n    if (preBeforeElement) {\n        if (event.key === \"Enter\" || event.key === \"Tab\") {\n            range.selectNodeContents(preBeforeElement.nextElementSibling.firstChild);\n            range.collapse(true);\n            event.preventDefault();\n            hidePanel(vditor, [\"hint\"]);\n            return true;\n        }\n        if (event.key === \"Backspace\") {\n            var start = (0,util_selection/* getSelectPosition */.im)(preBeforeElement, vditor.ir.element).start;\n            if (start === 1) { // 删除零宽空格\n                range.setStart(startContainer, 0);\n            }\n            if (start === 2) { // 删除时清空自动补全语言\n                vditor.hint.recentLanguage = \"\";\n            }\n        }\n        if (insertBeforeBlock(vditor, event, range, preBeforeElement, preBeforeElement.parentElement)) {\n            // 上无元素，按上或左将添加新块\n            hidePanel(vditor, [\"hint\"]);\n            return true;\n        }\n    }\n    // table\n    var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n    if (event.key.indexOf(\"Arrow\") > -1 && cellElement) {\n        var tableElement = isFirstCell(cellElement);\n        if (tableElement && insertBeforeBlock(vditor, event, range, cellElement, tableElement)) {\n            return true;\n        }\n        var table2Element = isLastCell(cellElement);\n        if (table2Element && insertAfterBlock(vditor, event, range, cellElement, table2Element)) {\n            return true;\n        }\n    }\n    if (fixTable(vditor, event, range)) {\n        return true;\n    }\n    // task list\n    if (fixTask(vditor, range, event)) {\n        return true;\n    }\n    // tab\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(startContainer);\n    if (headingElement) {\n        // enter++: 标题变大\n        if (matchHotKey(\"⌘=\", event)) {\n            var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n            if (headingMarkerElement && headingMarkerElement.textContent.trim().length > 1) {\n                process_processHeading(vditor, headingMarkerElement.textContent.substr(1));\n            }\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变小\n        if (matchHotKey(\"⌘-\", event)) {\n            var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n            if (headingMarkerElement && headingMarkerElement.textContent.trim().length < 6) {\n                process_processHeading(vditor, headingMarkerElement.textContent.trim() + \"# \");\n            }\n            event.preventDefault();\n            return true;\n        }\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\") {\n        if (fixDelete(vditor, range, event, pElement)) {\n            return true;\n        }\n        if (blockElement && blockElement.previousElementSibling\n            && blockElement.tagName !== \"UL\" && blockElement.tagName !== \"OL\"\n            && (blockElement.previousElementSibling.getAttribute(\"data-type\") === \"code-block\" ||\n                blockElement.previousElementSibling.getAttribute(\"data-type\") === \"math-block\")) {\n            var rangeStart = (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.ir.element, range).start;\n            if (rangeStart === 0 || (rangeStart === 1 && blockElement.innerText.startsWith(constants/* Constants.ZWSP */.g.ZWSP))) {\n                // 当前块删除后光标落于代码渲染块上，当前块会被删除，因此需要阻止事件，不能和 keyup 中的代码块处理合并\n                range.selectNodeContents(blockElement.previousElementSibling.querySelector(\".vditor-ir__marker--pre code\"));\n                range.collapse(false);\n                expandMarker(range, vditor);\n                if (blockElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                    // 当前块为空且不是最后一个时，需要删除\n                    blockElement.remove();\n                    process_processAfterRender(vditor);\n                }\n                event.preventDefault();\n                return true;\n            }\n        }\n        // 光标位于标题前，marker 后\n        if (headingElement) {\n            var headingLength = headingElement.firstElementChild.textContent.length;\n            if ((0,util_selection/* getSelectPosition */.im)(headingElement, vditor.ir.element).start === headingLength && headingLength !== 0) {\n                range.setStart(headingElement.firstElementChild.firstChild, headingLength - 1);\n                range.collapse(true);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n    }\n    if ((event.key === \"ArrowUp\" || event.key === \"ArrowDown\") && blockElement) {\n        // https://github.com/Vanessa219/vditor/issues/358\n        blockElement.querySelectorAll(\".vditor-ir__node\").forEach(function (item) {\n            if (!item.contains(startContainer)) {\n                item.classList.add(\"vditor-ir__node--hidden\");\n            }\n        });\n        if (fixFirefoxArrowUpTable(event, blockElement, range)) {\n            return true;\n        }\n    }\n    fixCursorDownInlineMath(range, event.key);\n    if (blockElement && keydownToc(blockElement, vditor, event, range)) {\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(190);\n;// CONCATENATED MODULE: ./src/ts/sv/combineFootnote.ts\n/**\n * 合并脚注\n * @param elements vditor.sv.element\n * @param afterCombine 每个脚注块合并完成后的回调, param: root为合并后的脚注块\n */\nvar combineFootnote = function (elements, afterCombine) {\n    elements.querySelectorAll(\"[data-type=footnotes-link]\").forEach(function (el) {\n        var root = el.parentElement;\n        var footnote = root.nextSibling;\n        // 寻找所有该脚注的块\n        while (footnote) {\n            if (footnote.textContent.startsWith(\"    \")) {\n                // 解析到四个空格，加入到root并继续解析\n                var thisNode = footnote;\n                thisNode.childNodes.forEach(function (node) {\n                    root.append(node.cloneNode(true));\n                });\n                footnote = footnote.nextSibling;\n                thisNode.remove();\n            }\n            else {\n                // 非空格停止解析\n                break;\n            }\n        }\n        afterCombine && afterCombine(root);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/inputEvent.ts\n\n\n\n\n\nvar inputEvent = function (vditor, event) {\n    var _a;\n    var range = getSelection().getRangeAt(0).cloneRange();\n    var startContainer = range.startContainer;\n    if (range.startContainer.nodeType !== 3 && range.startContainer.tagName === \"DIV\") {\n        startContainer = range.startContainer.childNodes[range.startOffset - 1];\n    }\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-block\", \"0\");\n    // 不调用 lute 解析\n    if (blockElement && event && (event.inputType === \"deleteContentBackward\" || event.data === \" \")) {\n        // 开始可以输入空格\n        var startOffset = (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.sv.element, range).start;\n        var startSpace = true;\n        for (var i = startOffset - 1; \n        // 软换行后有空格\n        i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n            if (blockElement.textContent.charAt(i) !== \" \" &&\n                // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                blockElement.textContent.charAt(i) !== \"\\t\") {\n                startSpace = false;\n                break;\n            }\n        }\n        if (startOffset === 0) {\n            startSpace = false;\n        }\n        if (startSpace) {\n            processAfterRender(vditor);\n            return;\n        }\n        if (event.inputType === \"deleteContentBackward\") {\n            // https://github.com/Vanessa219/vditor/issues/584 代码块 marker 删除\n            var codeBlockMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-open-marker\") ||\n                (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-close-marker\");\n            if (codeBlockMarkerElement) {\n                if (codeBlockMarkerElement.getAttribute(\"data-type\") === \"code-block-close-marker\") {\n                    var openMarkerElement = getSideByType(startContainer, \"code-block-open-marker\");\n                    if (openMarkerElement) {\n                        openMarkerElement.textContent = codeBlockMarkerElement.textContent;\n                        processAfterRender(vditor);\n                        return;\n                    }\n                }\n                if (codeBlockMarkerElement.getAttribute(\"data-type\") === \"code-block-open-marker\") {\n                    var openMarkerElement = getSideByType(startContainer, \"code-block-close-marker\", false);\n                    if (openMarkerElement) {\n                        openMarkerElement.textContent = codeBlockMarkerElement.textContent;\n                        processAfterRender(vditor);\n                        return;\n                    }\n                }\n            }\n            // https://github.com/Vanessa219/vditor/issues/877 数学公式输入删除生成节点\n            var mathBlockMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"math-block-open-marker\");\n            if (mathBlockMarkerElement) {\n                var mathBlockCloseElement = mathBlockMarkerElement.nextElementSibling.nextElementSibling;\n                if (mathBlockCloseElement && mathBlockCloseElement.getAttribute(\"data-type\") === \"math-block-close-marker\") {\n                    mathBlockCloseElement.remove();\n                    processAfterRender(vditor);\n                }\n                return;\n            }\n            blockElement.querySelectorAll('[data-type=\"code-block-open-marker\"]').forEach(function (item) {\n                if (item.textContent.length === 1) {\n                    item.remove();\n                }\n            });\n            blockElement.querySelectorAll('[data-type=\"code-block-close-marker\"]').forEach(function (item) {\n                if (item.textContent.length === 1) {\n                    item.remove();\n                }\n            });\n            // 标题删除\n            var headingElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"heading-marker\");\n            if (headingElement && headingElement.textContent.indexOf(\"#\") === -1) {\n                processAfterRender(vditor);\n                return;\n            }\n        }\n        // 删除或空格不解析，否则会 format 回去\n        if ((event.data === \" \" || event.inputType === \"deleteContentBackward\") &&\n            ((0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"padding\") // 场景：b 前进行删除 [> 1. a\\n>   b]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"li-marker\") // 场景：删除最后一个字符 [* 1\\n* ]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"task-marker\") // 场景：删除最后一个字符 [* [ ] ]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"blockquote-marker\") // 场景：删除最后一个字符 [> ]\n            )) {\n            processAfterRender(vditor);\n            return;\n        }\n    }\n    if (blockElement && blockElement.textContent.trimRight() === \"$$\") {\n        // 内联数学公式\n        processAfterRender(vditor);\n        return;\n    }\n    if (!blockElement) {\n        blockElement = vditor.sv.element;\n    }\n    if (((_a = blockElement.firstElementChild) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-type\")) === \"link-ref-defs-block\") {\n        // 修改链接引用\n        blockElement = vditor.sv.element;\n    }\n    if ((0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"footnotes-link\")) {\n        // 修改脚注角标\n        blockElement = vditor.sv.element;\n    }\n    // 添加光标位置\n    if (blockElement.textContent.indexOf(Lute.Caret) === -1) {\n        // 点击工具栏会插入 Caret\n        range.insertNode(document.createTextNode(Lute.Caret));\n    }\n    // 清除浏览器自带的样式\n    blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n        item.removeAttribute(\"style\");\n    });\n    blockElement.querySelectorAll(\"font\").forEach(function (item) {\n        item.outerHTML = item.innerHTML;\n    });\n    var html = blockElement.textContent;\n    var isSVElement = blockElement.isEqualNode(vditor.sv.element);\n    if (isSVElement) {\n        html = blockElement.textContent;\n    }\n    else {\n        // 添加前一个块元素\n        if (blockElement.previousElementSibling) {\n            html = blockElement.previousElementSibling.textContent + html;\n            blockElement.previousElementSibling.remove();\n        }\n        if (blockElement.previousElementSibling && html.indexOf(\"---\\n\") === 0) {\n            // 确认 yaml-front 是否为首行\n            html = blockElement.previousElementSibling.textContent + html;\n            blockElement.previousElementSibling.remove();\n        }\n        // 添加链接引用\n        var footnotes_1 = \"\";\n        vditor.sv.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item, index) {\n            if (item && !blockElement.isEqualNode(item.parentElement)) {\n                footnotes_1 += item.parentElement.textContent + \"\\n\";\n                item.parentElement.remove();\n            }\n        });\n        // 添加脚注到文章头，便于lute处理\n        vditor.sv.element.querySelectorAll(\"[data-type='footnotes-link']\").forEach(function (item, index) {\n            if (item && !blockElement.isEqualNode(item.parentElement)) {\n                footnotes_1 += item.parentElement.textContent + \"\\n\";\n                item.parentElement.remove();\n            }\n        });\n        html = footnotes_1 + html;\n    }\n    html = processSpinVditorSVDOM(html, vditor);\n    if (isSVElement) {\n        blockElement.innerHTML = html;\n    }\n    else {\n        blockElement.outerHTML = html;\n    }\n    vditor.sv.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n        vditor.sv.element.insertAdjacentElement(\"beforeend\", item.parentElement);\n    });\n    // 合并脚注\n    combineFootnote(vditor.sv.element, function (root) {\n        vditor.sv.element.insertAdjacentElement(\"beforeend\", root);\n    });\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    scrollCenter(vditor);\n    processAfterRender(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/processKeydown.ts\n\n\n\n\n\n\n\nvar processKeydown_processKeydown = function (vditor, event) {\n    var _a, _b, _c, _d, _e;\n    vditor.sv.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\") {\n        return false;\n    }\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (range.startContainer.nodeType !== 3 && range.startContainer.tagName === \"DIV\") {\n        startContainer = range.startContainer.childNodes[range.startOffset - 1];\n    }\n    var textElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"text\");\n    // blockquote\n    var blockquoteMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"blockquote-marker\");\n    if (!blockquoteMarkerElement && range.startOffset === 0 && textElement && textElement.previousElementSibling &&\n        textElement.previousElementSibling.getAttribute(\"data-type\") === \"blockquote-marker\") {\n        blockquoteMarkerElement = textElement.previousElementSibling;\n    }\n    // 回车逐个删除 blockquote marker 标记\n    if (blockquoteMarkerElement) {\n        if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey &&\n            blockquoteMarkerElement.nextElementSibling.textContent.trim() === \"\" &&\n            (0,util_selection/* getSelectPosition */.im)(blockquoteMarkerElement, vditor.sv.element, range).start ===\n                blockquoteMarkerElement.textContent.length) {\n            if (((_a = blockquoteMarkerElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-type\")) === \"padding\") {\n                // 列表中存在多行 BQ 时，标记回车需跳出列表\n                blockquoteMarkerElement.previousElementSibling.setAttribute(\"data-action\", \"enter-remove\");\n            }\n            blockquoteMarkerElement.remove();\n            processAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // list item\n    var listMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"li-marker\");\n    var taskMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"task-marker\");\n    var listLastMarkerElement = listMarkerElement;\n    if (!listLastMarkerElement) {\n        if (taskMarkerElement && taskMarkerElement.nextElementSibling.getAttribute(\"data-type\") !== \"task-marker\") {\n            listLastMarkerElement = taskMarkerElement;\n        }\n    }\n    if (!listLastMarkerElement && range.startOffset === 0 && textElement && textElement.previousElementSibling &&\n        (textElement.previousElementSibling.getAttribute(\"data-type\") === \"li-marker\" ||\n            textElement.previousElementSibling.getAttribute(\"data-type\") === \"task-marker\")) {\n        listLastMarkerElement = textElement.previousElementSibling;\n    }\n    if (listLastMarkerElement) {\n        var startIndex = (0,util_selection/* getSelectPosition */.im)(listLastMarkerElement, vditor.sv.element, range).start;\n        var isTask = listLastMarkerElement.getAttribute(\"data-type\") === \"task-marker\";\n        var listFirstMarkerElement = listLastMarkerElement;\n        if (isTask) {\n            listFirstMarkerElement = listLastMarkerElement.previousElementSibling.previousElementSibling\n                .previousElementSibling;\n        }\n        if (startIndex === listLastMarkerElement.textContent.length) {\n            // 回车清空列表标记符\n            if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey &&\n                listLastMarkerElement.nextElementSibling.textContent.trim() === \"\") {\n                if (((_b = listFirstMarkerElement.previousElementSibling) === null || _b === void 0 ? void 0 : _b.getAttribute(\"data-type\")) === \"padding\") {\n                    listFirstMarkerElement.previousElementSibling.remove();\n                    inputEvent(vditor);\n                }\n                else {\n                    if (isTask) {\n                        listFirstMarkerElement.remove();\n                        listLastMarkerElement.previousElementSibling.previousElementSibling.remove();\n                        listLastMarkerElement.previousElementSibling.remove();\n                    }\n                    listLastMarkerElement.nextElementSibling.remove();\n                    listLastMarkerElement.remove();\n                    processAfterRender(vditor);\n                }\n                event.preventDefault();\n                return true;\n            }\n            // 第一个 marker 后 tab 进行缩进\n            if (event.key === \"Tab\") {\n                if (event.shiftKey) {\n                    if (listFirstMarkerElement.previousElementSibling.getAttribute(\"data-type\") === \"padding\") {\n                        listFirstMarkerElement.previousElementSibling.remove();\n                    }\n                }\n                else {\n                    listFirstMarkerElement.insertAdjacentHTML(\"beforebegin\", \"<span data-type=\\\"padding\\\">\".concat(listFirstMarkerElement.textContent.replace(/\\S/g, \" \"), \"</span>\"));\n                }\n                if (/^\\d/.test(listFirstMarkerElement.textContent)) {\n                    listFirstMarkerElement.textContent = listFirstMarkerElement.textContent.replace(/^\\d{1,}/, \"1\");\n                    range.selectNodeContents(listLastMarkerElement.firstChild);\n                    range.collapse(false);\n                }\n                inputEvent(vditor);\n                event.preventDefault();\n                return true;\n            }\n        }\n    }\n    // tab\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-block\", \"0\");\n    var spanElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(startContainer, \"SPAN\");\n    // 回车\n    if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && blockElement) {\n        var isFirst = false;\n        var newLineMatch = blockElement.textContent.match(/^\\n+/);\n        if ((0,util_selection/* getSelectPosition */.im)(blockElement, vditor.sv.element).start <= (newLineMatch ? newLineMatch[0].length : 0)) {\n            // 允许段落开始换行\n            isFirst = true;\n        }\n        var newLineText = \"\\n\";\n        if (spanElement) {\n            if (((_c = spanElement.previousElementSibling) === null || _c === void 0 ? void 0 : _c.getAttribute(\"data-action\")) === \"enter-remove\") {\n                // https://github.com/Vanessa219/vditor/issues/596\n                spanElement.previousElementSibling.remove();\n                processAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                newLineText += processPreviousMarkers(spanElement);\n            }\n        }\n        range.insertNode(document.createTextNode(newLineText));\n        range.collapse(false);\n        if (blockElement && blockElement.textContent.trim() !== \"\" && !isFirst) {\n            inputEvent(vditor);\n        }\n        else {\n            processAfterRender(vditor);\n        }\n        event.preventDefault();\n        return true;\n    }\n    // 删除后光标前有 newline 的处理\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey) {\n        if (spanElement && ((_d = spanElement.previousElementSibling) === null || _d === void 0 ? void 0 : _d.getAttribute(\"data-type\")) === \"newline\" &&\n            (0,util_selection/* getSelectPosition */.im)(spanElement, vditor.sv.element, range).start === 1 &&\n            // 飘号的处理需在 inputEvent 中，否则上下飘号对不齐\n            spanElement.getAttribute(\"data-type\").indexOf(\"code-block-\") === -1) {\n            // 光标在每一行的第一个字符后\n            range.setStart(spanElement, 0);\n            range.extractContents();\n            if (spanElement.textContent.trim() !== \"\") {\n                inputEvent(vditor);\n            }\n            else {\n                processAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // 每一段第一个字符前\n        if (blockElement && (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.sv.element, range).start === 0 &&\n            blockElement.previousElementSibling) {\n            range.extractContents();\n            var previousLastElement = blockElement.previousElementSibling.lastElementChild;\n            if (previousLastElement.getAttribute(\"data-type\") === \"newline\") {\n                previousLastElement.remove();\n                previousLastElement = blockElement.previousElementSibling.lastElementChild;\n            }\n            // 场景：末尾无法删除 [```\\ntext\\n```\\n\\n]\n            if (previousLastElement.getAttribute(\"data-type\") !== \"newline\") {\n                previousLastElement.insertAdjacentHTML(\"afterend\", blockElement.innerHTML);\n                blockElement.remove();\n            }\n            if (blockElement.textContent.trim() !== \"\" && !((_e = blockElement.previousElementSibling) === null || _e === void 0 ? void 0 : _e.querySelector('[data-type=\"code-block-open-marker\"]'))) {\n                inputEvent(vditor);\n            }\n            else {\n                if (previousLastElement.getAttribute(\"data-type\") !== \"newline\") {\n                    // https://github.com/Vanessa219/vditor/issues/597\n                    range.selectNodeContents(previousLastElement.lastChild);\n                    range.collapse(false);\n                }\n                processAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\n\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(538);\n;// CONCATENATED MODULE: ./src/ts/ui/setTheme.ts\nvar setTheme = function (vditor) {\n    if (vditor.options.theme === \"dark\") {\n        vditor.element.classList.add(\"vditor--dark\");\n    }\n    else {\n        vditor.element.classList.remove(\"vditor--dark\");\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ui/initUI.ts\n\n\n\n\n\n\nvar initUI = function (vditor) {\n    vditor.element.innerHTML = \"\";\n    vditor.element.classList.add(\"vditor\");\n    // 支持 RTL\n    if (vditor.options.rtl) {\n        vditor.element.setAttribute(\"dir\", \"rtl\");\n    }\n    setTheme(vditor);\n    (0,setContentTheme/* setContentTheme */.Z)(vditor.options.preview.theme.current, vditor.options.preview.theme.path);\n    if (typeof vditor.options.height === \"number\") {\n        vditor.element.style.height = vditor.options.height + \"px\";\n    }\n    else {\n        vditor.element.style.height = vditor.options.height;\n    }\n    if (typeof vditor.options.minHeight === \"number\") {\n        vditor.element.style.minHeight = vditor.options.minHeight + \"px\";\n    }\n    if (typeof vditor.options.width === \"number\") {\n        vditor.element.style.width = vditor.options.width + \"px\";\n    }\n    else {\n        vditor.element.style.width = vditor.options.width;\n    }\n    vditor.element.appendChild(vditor.toolbar.element);\n    var contentElement = document.createElement(\"div\");\n    contentElement.className = \"vditor-content\";\n    if (vditor.options.outline.position === \"left\") {\n        contentElement.appendChild(vditor.outline.element);\n    }\n    contentElement.appendChild(vditor.wysiwyg.element.parentElement);\n    contentElement.appendChild(vditor.sv.element);\n    contentElement.appendChild(vditor.ir.element.parentElement);\n    contentElement.appendChild(vditor.preview.element);\n    if (vditor.toolbar.elements.devtools) {\n        contentElement.appendChild(vditor.devtools.element);\n    }\n    if (vditor.options.outline.position === \"right\") {\n        vditor.outline.element.classList.add(\"vditor-outline--right\");\n        contentElement.appendChild(vditor.outline.element);\n    }\n    if (vditor.upload) {\n        contentElement.appendChild(vditor.upload.element);\n    }\n    if (vditor.options.resize.enable) {\n        contentElement.appendChild(vditor.resize.element);\n    }\n    contentElement.appendChild(vditor.hint.element);\n    contentElement.appendChild(vditor.tip.element);\n    vditor.element.appendChild(contentElement);\n    contentElement.addEventListener(\"click\", function () {\n        hidePanel(vditor, [\"subToolbar\"]);\n    });\n    if (vditor.toolbar.elements.export) {\n        // for export pdf\n        vditor.element.insertAdjacentHTML(\"beforeend\", '<iframe id=\"vditorExportIframe\" style=\"width: 100%;height: 0;border: 0\"></iframe>');\n    }\n    setEditMode(vditor, vditor.options.mode, afterRender(vditor));\n    document.execCommand(\"DefaultParagraphSeparator\", false, \"p\");\n    if (navigator.userAgent.indexOf(\"iPhone\") > -1 && typeof window.visualViewport !== \"undefined\") {\n        // https://github.com/Vanessa219/vditor/issues/379\n        var pendingUpdate_1 = false;\n        var viewportHandler = function (event) {\n            if (pendingUpdate_1) {\n                return;\n            }\n            pendingUpdate_1 = true;\n            requestAnimationFrame(function () {\n                pendingUpdate_1 = false;\n                var layoutViewport = vditor.toolbar.element;\n                layoutViewport.style.transform = \"none\";\n                if (layoutViewport.getBoundingClientRect().top < 0) {\n                    layoutViewport.style.transform = \"translate(0, \".concat(-layoutViewport.getBoundingClientRect().top, \"px)\");\n                }\n            });\n        };\n        window.visualViewport.addEventListener(\"scroll\", viewportHandler);\n        window.visualViewport.addEventListener(\"resize\", viewportHandler);\n    }\n};\nvar setPadding = function (vditor) {\n    var minPadding = window.innerWidth <= constants/* Constants.MOBILE_WIDTH */.g.MOBILE_WIDTH ? 10 : 35;\n    if (vditor.wysiwyg.element.parentElement.style.display !== \"none\") {\n        var padding = (vditor.wysiwyg.element.parentElement.clientWidth\n            - vditor.options.preview.maxWidth) / 2;\n        vditor.wysiwyg.element.style.padding = \"10px \".concat(Math.max(minPadding, padding), \"px\");\n    }\n    if (vditor.ir.element.parentElement.style.display !== \"none\") {\n        var padding = (vditor.ir.element.parentElement.clientWidth\n            - vditor.options.preview.maxWidth) / 2;\n        vditor.ir.element.style.padding = \"10px \".concat(Math.max(minPadding, padding), \"px\");\n    }\n    if (vditor.preview.element.style.display !== \"block\") {\n        vditor.toolbar.element.style.paddingLeft = Math.max(5, parseInt(vditor[vditor.currentMode].element.style.paddingLeft || \"0\", 10) +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0)) + \"px\";\n    }\n    else {\n        vditor.toolbar.element.style.paddingLeft = (5 +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0)) + \"px\";\n    }\n};\nvar setTypewriterPosition = function (vditor) {\n    if (!vditor.options.typewriterMode) {\n        return;\n    }\n    var height = window.innerHeight;\n    if (typeof vditor.options.height === \"number\") {\n        height = vditor.options.height;\n        if (typeof vditor.options.minHeight === \"number\") {\n            height = Math.max(height, vditor.options.minHeight);\n        }\n        height = Math.min(window.innerHeight, height);\n    }\n    else {\n        height = vditor.element.clientHeight;\n    }\n    if (vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        height = window.innerHeight;\n    }\n    // 由于 Firefox padding-bottom bug，只能使用 :after\n    vditor[vditor.currentMode].element.style.setProperty(\"--editor-bottom\", ((height - vditor.toolbar.element.offsetHeight) / 2) + \"px\");\n};\nvar resizeCb;\nfunction UIUnbindListener() {\n    window.removeEventListener(\"resize\", resizeCb);\n}\nvar afterRender = function (vditor) {\n    setTypewriterPosition(vditor);\n    UIUnbindListener();\n    window.addEventListener(\"resize\", resizeCb = function () {\n        setPadding(vditor);\n        setTypewriterPosition(vditor);\n    });\n    // set default value\n    var initValue = (0,compatibility/* accessLocalStorage */.pK)() && localStorage.getItem(vditor.options.cache.id);\n    if (!vditor.options.cache.enable || !initValue) {\n        if (vditor.options.value) {\n            initValue = vditor.options.value;\n        }\n        else if (vditor.originalInnerHTML) {\n            initValue = vditor.lute.HTML2Md(vditor.originalInnerHTML);\n        }\n        else if (!vditor.options.cache.enable) {\n            initValue = \"\";\n        }\n    }\n    return initValue || \"\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/highlightToolbarIR.ts\n\n\n\n\n\nvar highlightToolbarIR = function (vditor) {\n    clearTimeout(vditor[vditor.currentMode].hlToolbarTimeoutId);\n    vditor[vditor.currentMode].hlToolbarTimeoutId = window.setTimeout(function () {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (!(0,util_selection/* selectIsEditor */.Gb)(vditor[vditor.currentMode].element)) {\n            return;\n        }\n        removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n        var typeElement = range.startContainer;\n        if (range.startContainer.nodeType === 3) {\n            typeElement = range.startContainer.parentElement;\n        }\n        if (typeElement.classList.contains(\"vditor-reset\")) {\n            typeElement = typeElement.childNodes[range.startOffset];\n        }\n        var headingElement = vditor.currentMode === \"sv\" ?\n            (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"heading\") : (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(typeElement);\n        if (headingElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"headings\"]);\n        }\n        var quoteElement = vditor.currentMode === \"sv\" ? (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"blockquote\") :\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\");\n        if (quoteElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"quote\"]);\n        }\n        var strongElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"strong\");\n        if (strongElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"bold\"]);\n        }\n        var emElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"em\");\n        if (emElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"italic\"]);\n        }\n        var sElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"s\");\n        if (sElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"strike\"]);\n        }\n        var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"a\");\n        if (aElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"link\"]);\n        }\n        var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"LI\");\n        if (liElement) {\n            if (liElement.classList.contains(\"vditor-task\")) {\n                setCurrentToolbar(vditor.toolbar.elements, [\"check\"]);\n            }\n            else if (liElement.parentElement.tagName === \"OL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"ordered-list\"]);\n            }\n            else if (liElement.parentElement.tagName === \"UL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"list\"]);\n            }\n            enableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        var codeBlockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"code-block\");\n        if (codeBlockElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"bold\", \"italic\", \"strike\", \"line\", \"quote\",\n                \"list\", \"ordered-list\", \"check\", \"code\", \"inline-code\", \"upload\", \"link\", \"table\", \"record\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"code\"]);\n        }\n        var codeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"code\");\n        if (codeElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"bold\", \"italic\", \"strike\", \"line\", \"quote\",\n                \"list\", \"ordered-list\", \"check\", \"code\", \"upload\", \"link\", \"table\", \"record\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"inline-code\"]);\n        }\n        var tableElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"table\");\n        if (tableElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"list\", \"ordered-list\", \"check\", \"line\",\n                \"quote\", \"code\", \"table\"]);\n        }\n    }, 200);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/afterRenderEvent.ts\n\n\nvar afterRenderEvent = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        vditor.hint.render(vditor);\n    }\n    clearTimeout(vditor.wysiwyg.afterRenderTimeoutId);\n    vditor.wysiwyg.afterRenderTimeoutId = window.setTimeout(function () {\n        if (vditor.wysiwyg.composingLock) {\n            return;\n        }\n        var text = getMarkdown(vditor);\n        if (typeof vditor.options.input === \"function\" && options.enableInput) {\n            vditor.options.input(text);\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter.render(vditor, text);\n        }\n        if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n            localStorage.setItem(vditor.options.cache.id, text);\n            if (vditor.options.cache.after) {\n                vditor.options.cache.after(text);\n            }\n        }\n        if (vditor.devtools) {\n            vditor.devtools.renderEchart(vditor);\n        }\n        if (options.enableAddUndoStack) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/inlineTag.ts\n\n\nvar previoueIsEmptyA = function (node) {\n    var previousNode = node.previousSibling;\n    while (previousNode) {\n        if (previousNode.nodeType !== 3 && previousNode.tagName === \"A\" && !previousNode.previousSibling\n            && previousNode.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && previousNode.nextSibling) {\n            return previousNode;\n        }\n        previousNode = previousNode.previousSibling;\n    }\n    return false;\n};\nvar nextIsCode = function (range) {\n    var nextNode = range.startContainer.nextSibling;\n    while (nextNode && nextNode.textContent === \"\") {\n        nextNode = nextNode.nextSibling;\n    }\n    if (nextNode && nextNode.nodeType !== 3 && (nextNode.tagName === \"CODE\" ||\n        nextNode.getAttribute(\"data-type\") === \"math-inline\" ||\n        nextNode.getAttribute(\"data-type\") === \"html-entity\" ||\n        nextNode.getAttribute(\"data-type\") === \"html-inline\")) {\n        return true;\n    }\n    return false;\n};\nvar getNextHTML = function (node) {\n    var html = \"\";\n    var nextNode = node.nextSibling;\n    while (nextNode) {\n        if (nextNode.nodeType === 3) {\n            html += nextNode.textContent;\n        }\n        else {\n            html += nextNode.outerHTML;\n        }\n        nextNode = nextNode.nextSibling;\n    }\n    return html;\n};\nvar getPreviousHTML = function (node) {\n    var html = \"\";\n    var previousNode = node.previousSibling;\n    while (previousNode) {\n        if (previousNode.nodeType === 3) {\n            html = previousNode.textContent + html;\n        }\n        else {\n            html = previousNode.outerHTML + html;\n        }\n        previousNode = previousNode.previousSibling;\n    }\n    return html;\n};\nvar getRenderElementNextNode = function (blockCodeElement) {\n    var nextNode = blockCodeElement;\n    while (nextNode && !nextNode.nextSibling) {\n        nextNode = nextNode.parentElement;\n    }\n    return nextNode.nextSibling;\n};\nvar splitElement = function (range) {\n    var previousHTML = getPreviousHTML(range.startContainer);\n    var nextHTML = getNextHTML(range.startContainer);\n    var text = range.startContainer.textContent;\n    var offset = range.startOffset;\n    var beforeHTML = \"\";\n    var afterHTML = \"\";\n    if (text.substr(0, offset) !== \"\" && text.substr(0, offset) !== constants/* Constants.ZWSP */.g.ZWSP || previousHTML) {\n        beforeHTML = \"\".concat(previousHTML).concat(text.substr(0, offset));\n    }\n    if (text.substr(offset) !== \"\" && text.substr(offset) !== constants/* Constants.ZWSP */.g.ZWSP || nextHTML) {\n        afterHTML = \"\".concat(text.substr(offset)).concat(nextHTML);\n    }\n    return {\n        afterHTML: afterHTML,\n        beforeHTML: beforeHTML,\n    };\n};\nvar modifyPre = function (vditor, range) {\n    // 没有被块元素包裹\n    Array.from(vditor.wysiwyg.element.childNodes).find(function (node) {\n        if (node.nodeType === 3) {\n            var pElement = document.createElement(\"p\");\n            pElement.setAttribute(\"data-block\", \"0\");\n            pElement.textContent = node.textContent;\n            // 为空按下 tab 且 tab = '    ' 时，range.startContainer 不为 node\n            var cloneRangeOffset = range.startContainer.nodeType === 3 ? range.startOffset : node.textContent.length;\n            node.parentNode.insertBefore(pElement, node);\n            node.remove();\n            range.setStart(pElement.firstChild, Math.min(pElement.firstChild.textContent.length, cloneRangeOffset));\n            range.collapse(true);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        else if (!node.getAttribute(\"data-block\")) {\n            if (node.tagName === \"P\") {\n                node.remove();\n            }\n            else {\n                if (node.tagName === \"DIV\") {\n                    range.insertNode(document.createElement(\"wbr\"));\n                    // firefox 列表换行产生 div\n                    node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.innerHTML, \"</p>\");\n                }\n                else {\n                    if (node.tagName === \"BR\") {\n                        // firefox 空换行产生 BR\n                        node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.outerHTML, \"<wbr></p>\");\n                    }\n                    else {\n                        range.insertNode(document.createElement(\"wbr\"));\n                        node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.outerHTML, \"</p>\");\n                    }\n                }\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n                range = getSelection().getRangeAt(0);\n            }\n            return true;\n        }\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/setHeading.ts\n\n\n\nvar setHeading = function (vditor, tagName) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        blockElement = range.startContainer.childNodes[range.startOffset];\n    }\n    if (!blockElement && vditor.wysiwyg.element.children.length === 0) {\n        blockElement = vditor.wysiwyg.element;\n    }\n    if (blockElement && !blockElement.classList.contains(\"vditor-wysiwyg__block\")) {\n        range.insertNode(document.createElement(\"wbr\"));\n        // Firefox 需要 trim https://github.com/Vanessa219/vditor/issues/207\n        if (blockElement.innerHTML.trim() === \"<wbr>\") {\n            // Firefox 光标对不齐 https://github.com/Vanessa219/vditor/issues/199 1\n            blockElement.innerHTML = \"<wbr><br>\";\n        }\n        if (blockElement.tagName === \"BLOCKQUOTE\" || blockElement.classList.contains(\"vditor-reset\")) {\n            blockElement.innerHTML = \"<\".concat(tagName, \" data-block=\\\"0\\\">\").concat(blockElement.innerHTML.trim(), \"</\").concat(tagName, \">\");\n        }\n        else {\n            blockElement.outerHTML = \"<\".concat(tagName, \" data-block=\\\"0\\\">\").concat(blockElement.innerHTML.trim(), \"</\").concat(tagName, \">\");\n        }\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        renderToc(vditor);\n    }\n};\nvar removeHeading = function (vditor) {\n    var range = getSelection().getRangeAt(0);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        blockElement = range.startContainer.childNodes[range.startOffset];\n    }\n    if (blockElement) {\n        range.insertNode(document.createElement(\"wbr\"));\n        blockElement.outerHTML = \"<p data-block=\\\"0\\\">\".concat(blockElement.innerHTML, \"</p>\");\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n    }\n    vditor.wysiwyg.popover.style.display = \"none\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/showCode.ts\n\n\nvar showCode = function (previewElement, vditor, first) {\n    if (first === void 0) { first = true; }\n    var previousElement = previewElement.previousElementSibling;\n    var range = previousElement.ownerDocument.createRange();\n    if (previousElement.tagName === \"CODE\") {\n        previousElement.style.display = \"inline-block\";\n        if (first) {\n            range.setStart(previousElement.firstChild, 1);\n        }\n        else {\n            range.selectNodeContents(previousElement);\n        }\n    }\n    else {\n        previousElement.style.display = \"block\";\n        if (!previousElement.firstChild.firstChild) {\n            previousElement.firstChild.appendChild(document.createTextNode(\"\"));\n        }\n        range.selectNodeContents(previousElement.firstChild);\n    }\n    if (first) {\n        range.collapse(true);\n    }\n    else {\n        range.collapse(false);\n    }\n    (0,util_selection/* setSelectionFocus */.Hc)(range);\n    if (previewElement.firstElementChild.classList.contains(\"language-mindmap\")) {\n        return;\n    }\n    scrollCenter(vditor);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/processKeydown.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar wysiwyg_processKeydown_processKeydown = function (vditor, event) {\n    // Chrome firefox 触发 compositionend 机制不一致 https://github.com/Vanessa219/vditor/issues/188\n    vditor.wysiwyg.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    // 添加第一次记录 undo 的光标\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (!fixGSKeyBackspace(event, vditor, startContainer)) {\n        return false;\n    }\n    fixCJKPosition(range, vditor, event);\n    fixHR(range);\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\" && event.key !== \"Delete\") {\n        return false;\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n    var pElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"P\");\n    // md 处理\n    if (fixMarkdown(event, vditor, pElement, range)) {\n        return true;\n    }\n    // li\n    if (fixList(range, vditor, pElement, event)) {\n        return true;\n    }\n    // table\n    if (fixTable(vditor, event, range)) {\n        return true;\n    }\n    // code render\n    var codeRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-wysiwyg__block\");\n    if (codeRenderElement) {\n        // esc: 退出编辑，仅展示渲染\n        if (event.key === \"Escape\" && codeRenderElement.children.length === 2) {\n            vditor.wysiwyg.popover.style.display = \"none\";\n            codeRenderElement.firstElementChild.style.display = \"none\";\n            vditor.wysiwyg.element.blur();\n            event.preventDefault();\n            return true;\n        }\n        // alt+enter: 代码块切换到语言 https://github.com/Vanessa219/vditor/issues/54\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && event.altKey && event.key === \"Enter\" &&\n            codeRenderElement.getAttribute(\"data-type\") === \"code-block\") {\n            var inputElemment = vditor.wysiwyg.popover.querySelector(\".vditor-input\");\n            inputElemment.focus();\n            inputElemment.select();\n            event.preventDefault();\n            return true;\n        }\n        if (codeRenderElement.getAttribute(\"data-block\") === \"0\") {\n            if (fixCodeBlock(vditor, event, codeRenderElement.firstElementChild, range)) {\n                return true;\n            }\n            if (insertAfterBlock(vditor, event, range, codeRenderElement.firstElementChild, codeRenderElement)) {\n                return true;\n            }\n            if (codeRenderElement.getAttribute(\"data-type\") !== \"yaml-front-matter\" &&\n                insertBeforeBlock(vditor, event, range, codeRenderElement.firstElementChild, codeRenderElement)) {\n                return true;\n            }\n        }\n    }\n    // blockquote\n    if (fixBlockquote(vditor, range, event, pElement)) {\n        return true;\n    }\n    // 顶层 blockquote\n    var topBQElement = (0,hasClosest/* hasTopClosestByTag */.E2)(startContainer, \"BLOCKQUOTE\");\n    if (topBQElement) {\n        if (!event.shiftKey && event.altKey && event.key === \"Enter\") {\n            if (!(0,compatibility/* isCtrl */.yl)(event)) {\n                // alt+enter: 跳出多层 blockquote 嵌套之后 https://github.com/Vanessa219/vditor/issues/51\n                range.setStartAfter(topBQElement);\n            }\n            else {\n                // ctrl+alt+enter: 跳出多层 blockquote 嵌套之前\n                range.setStartBefore(topBQElement);\n            }\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            var node = document.createElement(\"p\");\n            node.setAttribute(\"data-block\", \"0\");\n            node.innerHTML = \"\\n\";\n            range.insertNode(node);\n            range.collapse(true);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            afterRenderEvent(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // h1-h6\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(startContainer);\n    if (headingElement) {\n        if (headingElement.tagName === \"H6\" && startContainer.textContent.length === range.startOffset &&\n            !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Enter\") {\n            // enter: H6 回车解析问题 https://github.com/Vanessa219/vditor/issues/48\n            var pTempElement = document.createElement(\"p\");\n            pTempElement.textContent = \"\\n\";\n            pTempElement.setAttribute(\"data-block\", \"0\");\n            startContainer.parentElement.insertAdjacentElement(\"afterend\", pTempElement);\n            range.setStart(pTempElement, 0);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            afterRenderEvent(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变大\n        if (matchHotKey(\"⌘=\", event)) {\n            var index = parseInt(headingElement.tagName.substr(1), 10) - 1;\n            if (index > 0) {\n                setHeading(vditor, \"h\".concat(index));\n                afterRenderEvent(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变小\n        if (matchHotKey(\"⌘-\", event)) {\n            var index = parseInt(headingElement.tagName.substr(1), 10) + 1;\n            if (index < 7) {\n                setHeading(vditor, \"h\".concat(index));\n                afterRenderEvent(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey\n            && headingElement.textContent.length === 1) {\n            // 删除后变为空\n            removeHeading(vditor);\n        }\n    }\n    // task list\n    if (fixTask(vditor, range, event)) {\n        return true;\n    }\n    // alt+enter\n    if (event.altKey && event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey) {\n        // 切换到链接、链接引用、脚注引用弹出的输入框中\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"A\");\n        var linRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"link-ref\");\n        var footnoteRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"footnotes-ref\");\n        if (aElement || linRefElement || footnoteRefElement ||\n            (headingElement && headingElement.tagName.length === 2)) {\n            var inputElement = vditor.wysiwyg.popover.querySelector(\"input\");\n            inputElement.focus();\n            inputElement.select();\n        }\n    }\n    // 删除有子工具栏的块\n    if (removeBlockElement(vditor, event)) {\n        return true;\n    }\n    // 对有子工具栏的块上移\n    if (matchHotKey(\"⇧⌘U\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"up\"]');\n        if (itemElement) {\n            itemElement.click();\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 对有子工具栏的块下移\n    if (matchHotKey(\"⇧⌘D\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"down\"]');\n        if (itemElement) {\n            itemElement.click();\n            event.preventDefault();\n            return true;\n        }\n    }\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    // shift+enter：软换行，但 table/hr/heading 处理、cell 内换行、block render 换行处理单独写在上面，li & p 使用浏览器默认\n    if (!(0,compatibility/* isCtrl */.yl)(event) && event.shiftKey && !event.altKey && event.key === \"Enter\" &&\n        startContainer.parentElement.tagName !== \"LI\" && startContainer.parentElement.tagName !== \"P\") {\n        if ([\"STRONG\", \"STRIKE\", \"S\", \"I\", \"EM\", \"B\"].includes(startContainer.parentElement.tagName)) {\n            // 行内元素软换行需继续 https://github.com/Vanessa219/vditor/issues/170\n            range.insertNode(document.createTextNode(\"\\n\" + constants/* Constants.ZWSP */.g.ZWSP));\n        }\n        else {\n            range.insertNode(document.createTextNode(\"\\n\"));\n        }\n        range.collapse(false);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        afterRenderEvent(vditor);\n        scrollCenter(vditor);\n        event.preventDefault();\n        return true;\n    }\n    // 删除\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\") {\n        if (fixDelete(vditor, range, event, pElement)) {\n            return true;\n        }\n        if (blockElement) {\n            if (blockElement.previousElementSibling\n                && blockElement.previousElementSibling.classList.contains(\"vditor-wysiwyg__block\")\n                && blockElement.previousElementSibling.getAttribute(\"data-block\") === \"0\"\n                // https://github.com/Vanessa219/vditor/issues/946\n                && blockElement.tagName !== \"UL\" && blockElement.tagName !== \"OL\") {\n                var rangeStart = (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.wysiwyg.element, range).start;\n                if ((rangeStart === 0 && range.startOffset === 0) || // https://github.com/Vanessa219/vditor/issues/894\n                    (rangeStart === 1 && blockElement.innerText.startsWith(constants/* Constants.ZWSP */.g.ZWSP))) {\n                    // 当前块删除后光标落于代码渲染块上，当前块会被删除，因此需要阻止事件，不能和 keyup 中的代码块处理合并\n                    showCode(blockElement.previousElementSibling.lastElementChild, vditor, false);\n                    if (blockElement.innerHTML.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        // 当前块为空且不是最后一个时，需要删除\n                        blockElement.remove();\n                        afterRenderEvent(vditor);\n                    }\n                    event.preventDefault();\n                    return true;\n                }\n            }\n            var rangeStartOffset = range.startOffset;\n            if (range.toString() === \"\" && startContainer.nodeType === 3 &&\n                startContainer.textContent.charAt(rangeStartOffset - 2) === \"\\n\" &&\n                startContainer.textContent.charAt(rangeStartOffset - 1) !== constants/* Constants.ZWSP */.g.ZWSP\n                && [\"STRONG\", \"STRIKE\", \"S\", \"I\", \"EM\", \"B\"].includes(startContainer.parentElement.tagName)) {\n                // 保持行内元素软换行需继续的一致性\n                startContainer.textContent = startContainer.textContent.substring(0, rangeStartOffset - 1) +\n                    constants/* Constants.ZWSP */.g.ZWSP;\n                range.setStart(startContainer, rangeStartOffset);\n                range.collapse(true);\n                afterRenderEvent(vditor);\n                event.preventDefault();\n                return true;\n            }\n            // inline code、math、html 行前零宽字符后进行删除\n            if (startContainer.textContent === constants/* Constants.ZWSP */.g.ZWSP && range.startOffset === 1\n                && !startContainer.previousSibling && nextIsCode(range)) {\n                startContainer.textContent = \"\";\n                // 不能返回，其前面为代码渲染块时需进行以下处理：修正光标位于 inline math/html 前，按下删除按钮 code 中内容会被删除\n            }\n            // 修正光标位于 inline math/html, html-entity 前，按下删除按钮 code 中内容会被删除, 不能返回，还需要进行后续处理\n            blockElement.querySelectorAll(\"span.vditor-wysiwyg__block[data-type='math-inline']\").forEach(function (item) {\n                item.firstElementChild.style.display = \"inline\";\n                item.lastElementChild.style.display = \"none\";\n            });\n            blockElement.querySelectorAll(\"span.vditor-wysiwyg__block[data-type='html-entity']\").forEach(function (item) {\n                item.firstElementChild.style.display = \"inline\";\n                item.lastElementChild.style.display = \"none\";\n            });\n        }\n    }\n    if ((0,compatibility/* isFirefox */.vU)() && range.startOffset === 1 && startContainer.textContent.indexOf(constants/* Constants.ZWSP */.g.ZWSP) > -1 &&\n        startContainer.previousSibling && startContainer.previousSibling.nodeType !== 3 &&\n        startContainer.previousSibling.tagName === \"CODE\" &&\n        (event.key === \"Backspace\" || event.key === \"ArrowLeft\")) {\n        // https://github.com/Vanessa219/vditor/issues/410\n        range.selectNodeContents(startContainer.previousSibling);\n        range.collapse(false);\n        event.preventDefault();\n        return true;\n    }\n    if (fixFirefoxArrowUpTable(event, blockElement, range)) {\n        event.preventDefault();\n        return true;\n    }\n    fixCursorDownInlineMath(range, event.key);\n    if (event.key === \"ArrowDown\") {\n        // 光标位于内联数学公式前，按下键无作用\n        var nextElement = startContainer.nextSibling;\n        if (nextElement && nextElement.nodeType !== 3 && nextElement.getAttribute(\"data-type\") === \"math-inline\") {\n            range.setStartAfter(nextElement);\n        }\n    }\n    if (blockElement && keydownToc(blockElement, vditor, event, range)) {\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar removeBlockElement = function (vditor, event) {\n    // 删除有子工具栏的块\n    if (matchHotKey(\"⇧⌘X\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"remove\"]');\n        if (itemElement) {\n            itemElement.click();\n        }\n        event.preventDefault();\n        return true;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/highlightToolbarWYSIWYG.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar highlightToolbarWYSIWYG = function (vditor) {\n    clearTimeout(vditor.wysiwyg.hlToolbarTimeoutId);\n    vditor.wysiwyg.hlToolbarTimeoutId = window.setTimeout(function () {\n        if (vditor.wysiwyg.element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (!(0,util_selection/* selectIsEditor */.Gb)(vditor.wysiwyg.element)) {\n            return;\n        }\n        removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        var range = getSelection().getRangeAt(0);\n        var typeElement = range.startContainer;\n        if (range.startContainer.nodeType === 3) {\n            typeElement = range.startContainer.parentElement;\n        }\n        else {\n            typeElement = typeElement.childNodes[range.startOffset >= typeElement.childNodes.length\n                ? typeElement.childNodes.length - 1\n                : range.startOffset];\n        }\n        var footnotesElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"footnotes-block\");\n        if (footnotesElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genClose(footnotesElement, vditor);\n            setPopoverPosition(vditor, footnotesElement);\n            return;\n        }\n        // 工具栏高亮和禁用\n        var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"LI\");\n        if (liElement) {\n            if (liElement.classList.contains(\"vditor-task\")) {\n                setCurrentToolbar(vditor.toolbar.elements, [\"check\"]);\n            }\n            else if (liElement.parentElement.tagName === \"OL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"ordered-list\"]);\n            }\n            else if (liElement.parentElement.tagName === \"UL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"list\"]);\n            }\n            enableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"quote\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"B\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"STRONG\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"bold\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"I\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"EM\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"italic\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"STRIKE\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"S\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"strike\"]);\n        }\n        // comments\n        vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment--focus\")\n            .forEach(function (item) {\n            item.classList.remove(\"vditor-comment--focus\");\n        });\n        var commentElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-comment\");\n        if (commentElement) {\n            var ids_1 = commentElement.getAttribute(\"data-cmtids\").split(\" \");\n            if (ids_1.length > 1 && commentElement.nextSibling.isSameNode(commentElement.nextElementSibling)) {\n                var nextIds_1 = commentElement.nextElementSibling\n                    .getAttribute(\"data-cmtids\")\n                    .split(\" \");\n                ids_1.find(function (id) {\n                    if (nextIds_1.includes(id)) {\n                        ids_1 = [id];\n                        return true;\n                    }\n                });\n            }\n            vditor.wysiwyg.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(ids_1[0]) > -1) {\n                    item.classList.add(\"vditor-comment--focus\");\n                }\n            });\n        }\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"A\");\n        if (aElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"link\"]);\n        }\n        var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TABLE\");\n        var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(typeElement);\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"CODE\")) {\n            if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"PRE\")) {\n                disableToolbar(vditor.toolbar.elements, [\n                    \"headings\",\n                    \"bold\",\n                    \"italic\",\n                    \"strike\",\n                    \"line\",\n                    \"quote\",\n                    \"list\",\n                    \"ordered-list\",\n                    \"check\",\n                    \"code\",\n                    \"inline-code\",\n                    \"upload\",\n                    \"link\",\n                    \"table\",\n                    \"record\",\n                ]);\n                setCurrentToolbar(vditor.toolbar.elements, [\"code\"]);\n            }\n            else {\n                disableToolbar(vditor.toolbar.elements, [\n                    \"headings\",\n                    \"bold\",\n                    \"italic\",\n                    \"strike\",\n                    \"line\",\n                    \"quote\",\n                    \"list\",\n                    \"ordered-list\",\n                    \"check\",\n                    \"code\",\n                    \"upload\",\n                    \"link\",\n                    \"table\",\n                    \"record\",\n                ]);\n                setCurrentToolbar(vditor.toolbar.elements, [\"inline-code\"]);\n            }\n        }\n        else if (headingElement) {\n            disableToolbar(vditor.toolbar.elements, [\"bold\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"headings\"]);\n        }\n        else if (tableElement) {\n            disableToolbar(vditor.toolbar.elements, [\"table\"]);\n        }\n        // toc popover\n        var tocElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-toc\");\n        if (tocElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genClose(tocElement, vditor);\n            setPopoverPosition(vditor, tocElement);\n            return;\n        }\n        // quote popover\n        var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(typeElement, \"BLOCKQUOTE\");\n        if (blockquoteElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, blockquoteElement, vditor);\n            genDown(range, blockquoteElement, vditor);\n            genClose(blockquoteElement, vditor);\n            setPopoverPosition(vditor, blockquoteElement);\n        }\n        // list item popover\n        if (liElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, liElement, vditor);\n            genDown(range, liElement, vditor);\n            genClose(liElement, vditor);\n            setPopoverPosition(vditor, liElement);\n        }\n        // table popover\n        if (tableElement) {\n            var lang = vditor.options.lang;\n            var options = vditor.options;\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var updateTable_1 = function () {\n                var oldRow = tableElement.rows.length;\n                var oldColumn = tableElement.rows[0].cells.length;\n                var row = parseInt(input_1.value, 10) || oldRow;\n                var column = parseInt(input2_1.value, 10) || oldColumn;\n                if (row === oldRow && oldColumn === column) {\n                    return;\n                }\n                if (oldColumn !== column) {\n                    var columnDiff = column - oldColumn;\n                    for (var i = 0; i < tableElement.rows.length; i++) {\n                        if (columnDiff > 0) {\n                            for (var j = 0; j < columnDiff; j++) {\n                                if (i === 0) {\n                                    tableElement.rows[i].lastElementChild.insertAdjacentHTML(\"afterend\", \"<th> </th>\");\n                                }\n                                else {\n                                    tableElement.rows[i].lastElementChild.insertAdjacentHTML(\"afterend\", \"<td> </td>\");\n                                }\n                            }\n                        }\n                        else {\n                            for (var k = oldColumn - 1; k >= column; k--) {\n                                tableElement.rows[i].cells[k].remove();\n                            }\n                        }\n                    }\n                }\n                if (oldRow !== row) {\n                    var rowDiff = row - oldRow;\n                    if (rowDiff > 0) {\n                        var rowHTML = \"<tr>\";\n                        for (var m = 0; m < column; m++) {\n                            rowHTML += \"<td> </td>\";\n                        }\n                        for (var l = 0; l < rowDiff; l++) {\n                            if (tableElement.querySelector(\"tbody\")) {\n                                tableElement\n                                    .querySelector(\"tbody\")\n                                    .insertAdjacentHTML(\"beforeend\", rowHTML);\n                            }\n                            else {\n                                tableElement\n                                    .querySelector(\"thead\")\n                                    .insertAdjacentHTML(\"afterend\", rowHTML + \"</tr>\");\n                            }\n                        }\n                    }\n                    else {\n                        for (var m = oldRow - 1; m >= row; m--) {\n                            tableElement.rows[m].remove();\n                            if (tableElement.rows.length === 1) {\n                                tableElement.querySelector(\"tbody\").remove();\n                            }\n                        }\n                    }\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            var setAlign_1 = function (type) {\n                setTableAlign(tableElement, type);\n                if (type === \"right\") {\n                    left_1.classList.remove(\"vditor-icon--current\");\n                    center_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.add(\"vditor-icon--current\");\n                }\n                else if (type === \"center\") {\n                    left_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.remove(\"vditor-icon--current\");\n                    center_1.classList.add(\"vditor-icon--current\");\n                }\n                else {\n                    center_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.remove(\"vditor-icon--current\");\n                    left_1.classList.add(\"vditor-icon--current\");\n                }\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n                afterRenderEvent(vditor);\n            };\n            var td = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TD\");\n            var th = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TH\");\n            var alignType = \"left\";\n            if (td) {\n                alignType = td.getAttribute(\"align\") || \"left\";\n            }\n            else if (th) {\n                alignType = th.getAttribute(\"align\") || \"center\";\n            }\n            var left_1 = document.createElement(\"button\");\n            left_1.setAttribute(\"type\", \"button\");\n            left_1.setAttribute(\"aria-label\", window.VditorI18n.alignLeft + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘L\") + \">\");\n            left_1.setAttribute(\"data-type\", \"left\");\n            left_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-left\"></use></svg>';\n            left_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"left\" ? \" vditor-icon--current\" : \"\");\n            left_1.onclick = function () {\n                setAlign_1(\"left\");\n            };\n            var center_1 = document.createElement(\"button\");\n            center_1.setAttribute(\"type\", \"button\");\n            center_1.setAttribute(\"aria-label\", window.VditorI18n.alignCenter + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘C\") + \">\");\n            center_1.setAttribute(\"data-type\", \"center\");\n            center_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-center\"></use></svg>';\n            center_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"center\" ? \" vditor-icon--current\" : \"\");\n            center_1.onclick = function () {\n                setAlign_1(\"center\");\n            };\n            var right_1 = document.createElement(\"button\");\n            right_1.setAttribute(\"type\", \"button\");\n            right_1.setAttribute(\"aria-label\", window.VditorI18n.alignRight + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘R\") + \">\");\n            right_1.setAttribute(\"data-type\", \"right\");\n            right_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-right\"></use></svg>';\n            right_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"right\" ? \" vditor-icon--current\" : \"\");\n            right_1.onclick = function () {\n                setAlign_1(\"right\");\n            };\n            var insertRowElement = document.createElement(\"button\");\n            insertRowElement.setAttribute(\"type\", \"button\");\n            insertRowElement.setAttribute(\"aria-label\", window.VditorI18n.insertRowBelow + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌘=\") + \">\");\n            insertRowElement.setAttribute(\"data-type\", \"insertRow\");\n            insertRowElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-row\"></use></svg>';\n            insertRowElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertRowElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertRow(vditor, range, cellElement);\n                }\n            };\n            var insertRowBElement = document.createElement(\"button\");\n            insertRowBElement.setAttribute(\"type\", \"button\");\n            insertRowBElement.setAttribute(\"aria-label\", window.VditorI18n.insertRowAbove + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘F\") + \">\");\n            insertRowBElement.setAttribute(\"data-type\", \"insertRow\");\n            insertRowBElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-rowb\"></use></svg>';\n            insertRowBElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertRowBElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertRowAbove(vditor, range, cellElement);\n                }\n            };\n            var insertColumnElement = document.createElement(\"button\");\n            insertColumnElement.setAttribute(\"type\", \"button\");\n            insertColumnElement.setAttribute(\"aria-label\", window.VditorI18n.insertColumnRight + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘=\") + \">\");\n            insertColumnElement.setAttribute(\"data-type\", \"insertColumn\");\n            insertColumnElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-column\"></use></svg>';\n            insertColumnElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertColumnElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertColumn(vditor, tableElement, cellElement);\n                }\n            };\n            var insertColumnBElement = document.createElement(\"button\");\n            insertColumnBElement.setAttribute(\"type\", \"button\");\n            insertColumnBElement.setAttribute(\"aria-label\", window.VditorI18n.insertColumnLeft + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘G\") + \">\");\n            insertColumnBElement.setAttribute(\"data-type\", \"insertColumn\");\n            insertColumnBElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-columnb\"></use></svg>';\n            insertColumnBElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertColumnBElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertColumn(vditor, tableElement, cellElement, \"beforebegin\");\n                }\n            };\n            var deleteRowElement = document.createElement(\"button\");\n            deleteRowElement.setAttribute(\"type\", \"button\");\n            deleteRowElement.setAttribute(\"aria-label\", window.VditorI18n[\"delete-row\"] + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌘-\") + \">\");\n            deleteRowElement.setAttribute(\"data-type\", \"deleteRow\");\n            deleteRowElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-delete-row\"></use></svg>';\n            deleteRowElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            deleteRowElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    deleteRow(vditor, range, cellElement);\n                }\n            };\n            var deleteColumnElement = document.createElement(\"button\");\n            deleteColumnElement.setAttribute(\"type\", \"button\");\n            deleteColumnElement.setAttribute(\"aria-label\", window.VditorI18n[\"delete-column\"] + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘-\") + \">\");\n            deleteColumnElement.setAttribute(\"data-type\", \"deleteColumn\");\n            deleteColumnElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-delete-column\"></use></svg>';\n            deleteColumnElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            deleteColumnElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    deleteColumn(vditor, range, tableElement, cellElement);\n                }\n            };\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", window.VditorI18n.row);\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_1 = document.createElement(\"input\");\n            inputWrap.appendChild(input_1);\n            input_1.type = \"number\";\n            input_1.min = \"1\";\n            input_1.className = \"vditor-input\";\n            input_1.style.width = \"42px\";\n            input_1.style.textAlign = \"center\";\n            input_1.setAttribute(\"placeholder\", window.VditorI18n.row);\n            input_1.value = tableElement.rows.length.toString();\n            input_1.oninput = function () {\n                updateTable_1();\n            };\n            input_1.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (event.key === \"Tab\") {\n                    input2_1.focus();\n                    input2_1.select();\n                    event.preventDefault();\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            var input2Wrap = document.createElement(\"span\");\n            input2Wrap.setAttribute(\"aria-label\", window.VditorI18n.column);\n            input2Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input2_1 = document.createElement(\"input\");\n            input2Wrap.appendChild(input2_1);\n            input2_1.type = \"number\";\n            input2_1.min = \"1\";\n            input2_1.className = \"vditor-input\";\n            input2_1.style.width = \"42px\";\n            input2_1.style.textAlign = \"center\";\n            input2_1.setAttribute(\"placeholder\", window.VditorI18n.column);\n            input2_1.value = tableElement.rows[0].cells.length.toString();\n            input2_1.oninput = function () {\n                updateTable_1();\n            };\n            input2_1.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (event.key === \"Tab\") {\n                    input_1.focus();\n                    input_1.select();\n                    event.preventDefault();\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genUp(range, tableElement, vditor);\n            genDown(range, tableElement, vditor);\n            genClose(tableElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", left_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", center_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", right_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertRowBElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertRowElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertColumnBElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertColumnElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", deleteRowElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", deleteColumnElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            vditor.wysiwyg.popover.insertAdjacentHTML(\"beforeend\", \" x \");\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input2Wrap);\n            setPopoverPosition(vditor, tableElement);\n        }\n        // link ref popover\n        var linkRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"link-ref\");\n        if (linkRefElement) {\n            genLinkRefPopover(vditor, linkRefElement, range);\n        }\n        // footnote popover\n        var footnotesRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"footnotes-ref\");\n        if (footnotesRefElement) {\n            var lang = vditor.options.lang;\n            var options = vditor.options;\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", window.VditorI18n.footnoteRef + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_2 = document.createElement(\"input\");\n            inputWrap.appendChild(input_2);\n            input_2.className = \"vditor-input\";\n            input_2.setAttribute(\"placeholder\", window.VditorI18n.footnoteRef + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            input_2.style.width = \"120px\";\n            input_2.value = footnotesRefElement.getAttribute(\"data-footnotes-label\");\n            input_2.oninput = function () {\n                if (input_2.value.trim() !== \"\") {\n                    footnotesRefElement.setAttribute(\"data-footnotes-label\", input_2.value);\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            input_2.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genClose(footnotesRefElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            setPopoverPosition(vditor, footnotesRefElement);\n        }\n        // block popover: math-inline, math-block, html-block, html-inline, code-block, html-entity\n        var blockRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-wysiwyg__block\");\n        var isBlock = blockRenderElement ? blockRenderElement.getAttribute(\"data-type\").indexOf(\"block\") > -1 : false;\n        vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-wysiwyg__preview\")\n            .forEach(function (itemElement) {\n            if (!blockRenderElement || (blockRenderElement && isBlock && !blockRenderElement.contains(itemElement))) {\n                var previousElement = itemElement.previousElementSibling;\n                previousElement.style.display = \"none\";\n            }\n        });\n        if (blockRenderElement && isBlock) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, blockRenderElement, vditor);\n            genDown(range, blockRenderElement, vditor);\n            genClose(blockRenderElement, vditor);\n            if (blockRenderElement.getAttribute(\"data-type\") === \"code-block\") {\n                var languageWrap = document.createElement(\"span\");\n                languageWrap.setAttribute(\"aria-label\", window.VditorI18n.language + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n                languageWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n                var language_1 = document.createElement(\"input\");\n                languageWrap.appendChild(language_1);\n                var codeElement_1 = blockRenderElement.firstElementChild.firstElementChild;\n                language_1.className = \"vditor-input\";\n                language_1.setAttribute(\"placeholder\", window.VditorI18n.language + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n                language_1.value =\n                    codeElement_1.className.indexOf(\"language-\") > -1\n                        ? codeElement_1.className.split(\"-\")[1].split(\" \")[0]\n                        : \"\";\n                language_1.oninput = function (e) {\n                    if (language_1.value.trim() !== \"\") {\n                        codeElement_1.className = \"language-\".concat(language_1.value);\n                    }\n                    else {\n                        codeElement_1.className = \"\";\n                        vditor.hint.recentLanguage = \"\";\n                    }\n                    if (blockRenderElement.lastElementChild.classList.contains(\"vditor-wysiwyg__preview\")) {\n                        blockRenderElement.lastElementChild.innerHTML =\n                            blockRenderElement.firstElementChild.innerHTML;\n                        processCodeRender(blockRenderElement.lastElementChild, vditor);\n                    }\n                    afterRenderEvent(vditor);\n                    // 当鼠标点选语言时，触发自定义input事件\n                    if (e.detail === 1) {\n                        // 选择语言后，输入焦点切换到代码输入框\n                        range.setStart(codeElement_1.firstChild, 0);\n                        range.collapse(true);\n                        (0,util_selection/* setSelectionFocus */.Hc)(range);\n                    }\n                };\n                language_1.onkeydown = function (event) {\n                    if (event.isComposing) {\n                        return;\n                    }\n                    if (removeBlockElement(vditor, event)) {\n                        return;\n                    }\n                    if (event.key === \"Escape\" &&\n                        vditor.hint.element.style.display === \"block\") {\n                        vditor.hint.element.style.display = \"none\";\n                        event.preventDefault();\n                        return;\n                    }\n                    vditor.hint.select(event, vditor);\n                    focusToElement(event, range);\n                };\n                language_1.onkeyup = function (event) {\n                    var _a, _b;\n                    if (event.isComposing ||\n                        event.key === \"Enter\" ||\n                        event.key === \"ArrowUp\" ||\n                        event.key === \"Escape\" ||\n                        event.key === \"ArrowDown\") {\n                        return;\n                    }\n                    var matchLangData = [];\n                    var key = language_1.value.substring(0, language_1.selectionStart);\n                    (vditor.options.preview.hljs.langs || constants/* Constants.ALIAS_CODE_LANGUAGES.concat */.g.ALIAS_CODE_LANGUAGES.concat(((_b = (_a = window.hljs) === null || _a === void 0 ? void 0 : _a.listLanguages()) !== null && _b !== void 0 ? _b : []).sort())).forEach(function (keyName) {\n                        if (keyName.indexOf(key.toLowerCase()) > -1) {\n                            matchLangData.push({\n                                html: keyName,\n                                value: keyName,\n                            });\n                        }\n                    });\n                    vditor.hint.genHTML(matchLangData, key, vditor);\n                    event.preventDefault();\n                };\n                vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", languageWrap);\n            }\n            setPopoverPosition(vditor, blockRenderElement);\n        }\n        else {\n            blockRenderElement = undefined;\n        }\n        if (headingElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", \"ID\" + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_3 = document.createElement(\"input\");\n            inputWrap.appendChild(input_3);\n            input_3.className = \"vditor-input\";\n            input_3.setAttribute(\"placeholder\", \"ID\" + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            input_3.style.width = \"120px\";\n            input_3.value = headingElement.getAttribute(\"data-id\") || \"\";\n            input_3.oninput = function () {\n                headingElement.setAttribute(\"data-id\", input_3.value);\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            input_3.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genUp(range, headingElement, vditor);\n            genDown(range, headingElement, vditor);\n            genClose(headingElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            setPopoverPosition(vditor, headingElement);\n        }\n        // a popover\n        if (aElement) {\n            genAPopover(vditor, aElement, range);\n        }\n        if (!blockquoteElement &&\n            !liElement &&\n            !tableElement &&\n            !blockRenderElement &&\n            !aElement &&\n            !linkRefElement &&\n            !footnotesRefElement &&\n            !headingElement &&\n            !tocElement) {\n            var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-block\", \"0\");\n            if (blockElement &&\n                blockElement.parentElement.isEqualNode(vditor.wysiwyg.element)) {\n                vditor.wysiwyg.popover.innerHTML = \"\";\n                genUp(range, blockElement, vditor);\n                genDown(range, blockElement, vditor);\n                genClose(blockElement, vditor);\n                setPopoverPosition(vditor, blockElement);\n            }\n            else {\n                vditor.wysiwyg.popover.style.display = \"none\";\n            }\n        }\n        // 反斜杠特殊处理\n        vditor.wysiwyg.element\n            .querySelectorAll('span[data-type=\"backslash\"] > span')\n            .forEach(function (item) {\n            item.style.display = \"none\";\n        });\n        var backslashElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"backslash\");\n        if (backslashElement) {\n            backslashElement.querySelector(\"span\").style.display = \"inline\";\n        }\n    }, 200);\n};\nvar setPopoverPosition = function (vditor, element) {\n    var targetElement = element;\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(element, \"TABLE\");\n    if (tableElement) {\n        targetElement = tableElement;\n    }\n    vditor.wysiwyg.popover.style.left = \"0\";\n    vditor.wysiwyg.popover.style.display = \"block\";\n    vditor.wysiwyg.popover.style.top =\n        Math.max(-8, targetElement.offsetTop - 21 - vditor.wysiwyg.element.scrollTop) + \"px\";\n    vditor.wysiwyg.popover.style.left =\n        Math.min(targetElement.offsetLeft, vditor.wysiwyg.element.clientWidth - vditor.wysiwyg.popover.clientWidth) + \"px\";\n    vditor.wysiwyg.popover.setAttribute(\"data-top\", (targetElement.offsetTop - 21).toString());\n};\nvar genLinkRefPopover = function (vditor, linkRefElement, range) {\n    if (range === void 0) { range = getSelection().getRangeAt(0); }\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateLinkRef = function () {\n        if (input.value.trim() !== \"\") {\n            if (linkRefElement.tagName === \"IMG\") {\n                linkRefElement.setAttribute(\"alt\", input.value);\n            }\n            else {\n                linkRefElement.textContent = input.value;\n            }\n        }\n        // data-link-label\n        if (input1.value.trim() !== \"\") {\n            linkRefElement.setAttribute(\"data-link-label\", input1.value);\n        }\n        if (typeof vditor.options.input === \"function\") {\n            vditor.options.input(getMarkdown(vditor));\n        }\n    };\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.textIsNotEmpty);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input = document.createElement(\"input\");\n    inputWrap.appendChild(input);\n    input.className = \"vditor-input\";\n    input.setAttribute(\"placeholder\", window.VditorI18n.textIsNotEmpty);\n    input.style.width = \"120px\";\n    input.value =\n        linkRefElement.getAttribute(\"alt\") || linkRefElement.textContent;\n    input.oninput = function () {\n        updateLinkRef();\n    };\n    input.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, linkRefElement, event, input1);\n    };\n    var input1Wrap = document.createElement(\"span\");\n    input1Wrap.setAttribute(\"aria-label\", window.VditorI18n.linkRef);\n    input1Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input1 = document.createElement(\"input\");\n    input1Wrap.appendChild(input1);\n    input1.className = \"vditor-input\";\n    input1.setAttribute(\"placeholder\", window.VditorI18n.linkRef);\n    input1.value = linkRefElement.getAttribute(\"data-link-label\");\n    input1.oninput = function () {\n        updateLinkRef();\n    };\n    input1.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, linkRefElement, event, input);\n    };\n    genClose(linkRefElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input1Wrap);\n    setPopoverPosition(vditor, linkRefElement);\n};\nvar genUp = function (range, element, vditor) {\n    var previousElement = element.previousElementSibling;\n    if (!previousElement ||\n        (!element.parentElement.isEqualNode(vditor.wysiwyg.element) &&\n            element.tagName !== \"LI\")) {\n        return;\n    }\n    var upElement = document.createElement(\"button\");\n    upElement.setAttribute(\"type\", \"button\");\n    upElement.setAttribute(\"data-type\", \"up\");\n    upElement.setAttribute(\"aria-label\", window.VditorI18n.up + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘U\") + \">\");\n    upElement.innerHTML = '<svg><use xlink:href=\"#vditor-icon-up\"></use></svg>';\n    upElement.className = \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    upElement.onclick = function () {\n        range.insertNode(document.createElement(\"wbr\"));\n        previousElement.insertAdjacentElement(\"beforebegin\", element);\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        scrollCenter(vditor);\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", upElement);\n};\nvar genDown = function (range, element, vditor) {\n    var nextElement = element.nextElementSibling;\n    if (!nextElement ||\n        (!element.parentElement.isEqualNode(vditor.wysiwyg.element) &&\n            element.tagName !== \"LI\")) {\n        return;\n    }\n    var downElement = document.createElement(\"button\");\n    downElement.setAttribute(\"type\", \"button\");\n    downElement.setAttribute(\"data-type\", \"down\");\n    downElement.setAttribute(\"aria-label\", window.VditorI18n.down + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘D\") + \">\");\n    downElement.innerHTML =\n        '<svg><use xlink:href=\"#vditor-icon-down\"></use></svg>';\n    downElement.className =\n        \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    downElement.onclick = function () {\n        range.insertNode(document.createElement(\"wbr\"));\n        nextElement.insertAdjacentElement(\"afterend\", element);\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        scrollCenter(vditor);\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", downElement);\n};\nvar genClose = function (element, vditor) {\n    var close = document.createElement(\"button\");\n    close.setAttribute(\"type\", \"button\");\n    close.setAttribute(\"data-type\", \"remove\");\n    close.setAttribute(\"aria-label\", window.VditorI18n.remove + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘X\") + \">\");\n    close.innerHTML =\n        '<svg><use xlink:href=\"#vditor-icon-trashcan\"></use></svg>';\n    close.className = \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    close.onclick = function () {\n        var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n        range.setStartAfter(element);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        element.remove();\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        if ([\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"].includes(element.tagName)) {\n            renderToc(vditor);\n        }\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", close);\n};\nvar linkHotkey = function (vditor, element, event, nextInputElement) {\n    if (event.isComposing) {\n        return;\n    }\n    if (event.key === \"Tab\") {\n        nextInputElement.focus();\n        nextInputElement.select();\n        event.preventDefault();\n        return;\n    }\n    if (!(0,compatibility/* isCtrl */.yl)(event) &&\n        !event.shiftKey &&\n        event.altKey &&\n        event.key === \"Enter\") {\n        var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n        // firefox 不会打断 link https://github.com/Vanessa219/vditor/issues/193\n        element.insertAdjacentHTML(\"afterend\", constants/* Constants.ZWSP */.g.ZWSP);\n        range.setStartAfter(element.nextSibling);\n        range.collapse(true);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        event.preventDefault();\n    }\n};\nvar genAPopover = function (vditor, aElement, range) {\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateA = function () {\n        if (input.value.trim() !== \"\") {\n            aElement.innerHTML = input.value;\n        }\n        aElement.setAttribute(\"href\", input1.value);\n        aElement.setAttribute(\"title\", input2.value);\n        afterRenderEvent(vditor);\n    };\n    aElement.querySelectorAll(\"[data-marker]\").forEach(function (item) {\n        item.removeAttribute(\"data-marker\");\n    });\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.textIsNotEmpty);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input = document.createElement(\"input\");\n    inputWrap.appendChild(input);\n    input.className = \"vditor-input\";\n    input.setAttribute(\"placeholder\", window.VditorI18n.textIsNotEmpty);\n    input.style.width = \"120px\";\n    input.value = aElement.innerHTML || \"\";\n    input.oninput = function () {\n        updateA();\n    };\n    input.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input1);\n    };\n    var input1Wrap = document.createElement(\"span\");\n    input1Wrap.setAttribute(\"aria-label\", window.VditorI18n.link);\n    input1Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input1 = document.createElement(\"input\");\n    input1Wrap.appendChild(input1);\n    input1.className = \"vditor-input\";\n    input1.setAttribute(\"placeholder\", window.VditorI18n.link);\n    input1.value = aElement.getAttribute(\"href\") || \"\";\n    input1.oninput = function () {\n        updateA();\n    };\n    input1.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input2);\n    };\n    var input2Wrap = document.createElement(\"span\");\n    input2Wrap.setAttribute(\"aria-label\", window.VditorI18n.tooltipText);\n    input2Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input2 = document.createElement(\"input\");\n    input2Wrap.appendChild(input2);\n    input2.className = \"vditor-input\";\n    input2.setAttribute(\"placeholder\", window.VditorI18n.tooltipText);\n    input2.style.width = \"60px\";\n    input2.value = aElement.getAttribute(\"title\") || \"\";\n    input2.oninput = function () {\n        updateA();\n    };\n    input2.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input);\n    };\n    genClose(aElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input1Wrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input2Wrap);\n    setPopoverPosition(vditor, aElement);\n};\nvar genImagePopover = function (event, vditor) {\n    var imgElement = event.target;\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateImg = function () {\n        imgElement.setAttribute(\"src\", inputElement.value);\n        imgElement.setAttribute(\"alt\", alt.value);\n        imgElement.setAttribute(\"title\", title.value);\n        if (typeof vditor.options.input === \"function\") {\n            vditor.options.input(getMarkdown(vditor));\n        }\n    };\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.imageURL);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var inputElement = document.createElement(\"input\");\n    inputWrap.appendChild(inputElement);\n    inputElement.className = \"vditor-input\";\n    inputElement.setAttribute(\"placeholder\", window.VditorI18n.imageURL);\n    inputElement.value = imgElement.getAttribute(\"src\") || \"\";\n    inputElement.oninput = function () {\n        updateImg();\n    };\n    inputElement.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    var altWrap = document.createElement(\"span\");\n    altWrap.setAttribute(\"aria-label\", window.VditorI18n.alternateText);\n    altWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var alt = document.createElement(\"input\");\n    altWrap.appendChild(alt);\n    alt.className = \"vditor-input\";\n    alt.setAttribute(\"placeholder\", window.VditorI18n.alternateText);\n    alt.style.width = \"52px\";\n    alt.value = imgElement.getAttribute(\"alt\") || \"\";\n    alt.oninput = function () {\n        updateImg();\n    };\n    alt.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    var titleWrap = document.createElement(\"span\");\n    titleWrap.setAttribute(\"aria-label\", window.VditorI18n.title);\n    titleWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var title = document.createElement(\"input\");\n    titleWrap.appendChild(title);\n    title.className = \"vditor-input\";\n    title.setAttribute(\"placeholder\", window.VditorI18n.title);\n    title.value = imgElement.getAttribute(\"title\") || \"\";\n    title.oninput = function () {\n        updateImg();\n    };\n    title.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    genClose(imgElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", altWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", titleWrap);\n    setPopoverPosition(vditor, imgElement);\n};\nvar focusToElement = function (event, range) {\n    if ((!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && event.key === \"Enter\") || event.key === \"Escape\") {\n        if (range) {\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        return true;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/highlightToolbar.ts\n\n\nvar highlightToolbar = function (vditor) {\n    if (vditor.currentMode === \"wysiwyg\") {\n        highlightToolbarWYSIWYG(vditor);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        highlightToolbarIR(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/renderDomByMd.ts\n\n\nvar renderDomByMd = function (vditor, md, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    var editorElement = vditor.wysiwyg.element;\n    var html = vditor.lute.Md2VditorDOM(md);\n    // 自定义更新渲染数据\n    editorElement.innerHTML = html.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"linsi-span\" contenteditable=\"false\">$1</span>');\n    editorElement.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\").forEach(function (item) {\n        processCodeRender(item, vditor);\n        item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n    });\n    afterRenderEvent(vditor, options);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/toolbarEvent.ts\n\n\n\n\n\n\n\n\n\nvar cancelBES = function (range, vditor, commandName) {\n    var element = range.startContainer.parentElement;\n    var jump = false;\n    var lastTagName = \"\";\n    var lastEndTagName = \"\";\n    var splitHTML = splitElement(range);\n    var lastBeforeHTML = splitHTML.beforeHTML;\n    var lastAfterHTML = splitHTML.afterHTML;\n    while (element && !jump) {\n        var tagName = element.tagName;\n        if (tagName === \"STRIKE\") {\n            tagName = \"S\";\n        }\n        if (tagName === \"I\") {\n            tagName = \"EM\";\n        }\n        if (tagName === \"B\") {\n            tagName = \"STRONG\";\n        }\n        if (tagName === \"S\" || tagName === \"STRONG\" || tagName === \"EM\") {\n            var insertHTML = \"\";\n            var previousHTML = \"\";\n            var nextHTML = \"\";\n            if (element.parentElement.getAttribute(\"data-block\") !== \"0\") {\n                previousHTML = getPreviousHTML(element);\n                nextHTML = getNextHTML(element);\n            }\n            if (lastBeforeHTML || previousHTML) {\n                insertHTML = \"\".concat(previousHTML, \"<\").concat(tagName, \">\").concat(lastBeforeHTML, \"</\").concat(tagName, \">\");\n                lastBeforeHTML = insertHTML;\n            }\n            if ((commandName === \"bold\" && tagName === \"STRONG\") ||\n                (commandName === \"italic\" && tagName === \"EM\") ||\n                (commandName === \"strikeThrough\" && tagName === \"S\")) {\n                // 取消\n                insertHTML += \"\".concat(lastTagName).concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\").concat(lastEndTagName);\n                jump = true;\n            }\n            if (lastAfterHTML || nextHTML) {\n                lastAfterHTML = \"<\".concat(tagName, \">\").concat(lastAfterHTML, \"</\").concat(tagName, \">\").concat(nextHTML);\n                insertHTML += lastAfterHTML;\n            }\n            if (element.parentElement.getAttribute(\"data-block\") !== \"0\") {\n                element = element.parentElement;\n                element.innerHTML = insertHTML;\n            }\n            else {\n                element.outerHTML = insertHTML;\n                element = element.parentElement;\n            }\n            lastTagName = \"<\".concat(tagName, \">\") + lastTagName;\n            lastEndTagName = \"</\".concat(tagName, \">\") + lastEndTagName;\n        }\n        else {\n            jump = true;\n        }\n    }\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n};\nvar toolbarEvent = function (vditor, actionBtn, event) {\n    if (vditor.wysiwyg.composingLock // Mac Chrome 中韩文结束会出发此事件，导致重复末尾字符 https://github.com/Vanessa219/vditor/issues/188\n        && event instanceof CustomEvent // 点击按钮应忽略输入法 https://github.com/Vanessa219/vditor/issues/473\n    ) {\n        return;\n    }\n    var useHighlight = true;\n    var useRender = true;\n    if (vditor.wysiwyg.element.querySelector(\"wbr\")) {\n        vditor.wysiwyg.element.querySelector(\"wbr\").remove();\n    }\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    // 移除\n    if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n        if (commandName === \"strike\") {\n            commandName = \"strikeThrough\";\n        }\n        if (commandName === \"quote\") {\n            var quoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"BLOCKQUOTE\");\n            if (!quoteElement) {\n                quoteElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (quoteElement) {\n                useHighlight = false;\n                actionBtn.classList.remove(\"vditor-menu--current\");\n                range.insertNode(document.createElement(\"wbr\"));\n                quoteElement.outerHTML = quoteElement.innerHTML.trim() === \"\" ?\n                    \"<p data-block=\\\"0\\\">\".concat(quoteElement.innerHTML, \"</p>\") : quoteElement.innerHTML;\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"inline-code\") {\n            var inlineCodeElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"CODE\");\n            if (!inlineCodeElement) {\n                inlineCodeElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (inlineCodeElement) {\n                inlineCodeElement.outerHTML = inlineCodeElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") + \"<wbr>\";\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"link\") {\n            if (!range.collapsed) {\n                document.execCommand(\"unlink\", false, \"\");\n            }\n            else {\n                range.selectNode(range.startContainer.parentElement);\n                document.execCommand(\"unlink\", false, \"\");\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName);\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n        }\n        else {\n            // bold, italic, strike\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n            if (range.toString() === \"\") {\n                cancelBES(range, vditor, commandName);\n            }\n            else {\n                document.execCommand(commandName, false, \"\");\n            }\n        }\n    }\n    else {\n        // 添加\n        if (vditor.wysiwyg.element.childNodes.length === 0) {\n            vditor.wysiwyg.element.innerHTML = '<p data-block=\"0\"><wbr></p>';\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n        if (commandName === \"quote\") {\n            if (!blockElement) {\n                blockElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (blockElement) {\n                useHighlight = false;\n                actionBtn.classList.add(\"vditor-menu--current\");\n                range.insertNode(document.createElement(\"wbr\"));\n                var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n                // li 中软换行\n                if (liElement && blockElement.contains(liElement)) {\n                    liElement.innerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(liElement.innerHTML, \"</blockquote>\");\n                }\n                else {\n                    blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n                }\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName, false);\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            useHighlight = false;\n            removeCurrentToolbar(vditor.toolbar.elements, [\"check\", \"list\", \"ordered-list\"]);\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"inline-code\") {\n            if (range.toString() === \"\") {\n                var node = document.createElement(\"code\");\n                node.textContent = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(node);\n                range.setStart(node.firstChild, 1);\n                range.collapse(true);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n            else if (range.startContainer.nodeType === 3) {\n                var node = document.createElement(\"code\");\n                range.surroundContents(node);\n                range.insertNode(node);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"code\") {\n            var node = document.createElement(\"div\");\n            node.className = \"vditor-wysiwyg__block\";\n            node.setAttribute(\"data-type\", \"code-block\");\n            node.setAttribute(\"data-block\", \"0\");\n            node.setAttribute(\"data-marker\", \"```\");\n            if (range.toString() === \"\") {\n                node.innerHTML = \"<pre><code><wbr>\\n</code></pre>\";\n            }\n            else {\n                node.innerHTML = \"<pre><code>\".concat(range.toString(), \"<wbr></code></pre>\");\n                range.deleteContents();\n            }\n            range.insertNode(node);\n            if (blockElement) {\n                blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            vditor.wysiwyg.element.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\").forEach(function (item) {\n                processCodeRender(item, vditor);\n            });\n            actionBtn.classList.add(\"vditor-menu--disabled\");\n        }\n        else if (commandName === \"link\") {\n            if (range.toString() === \"\") {\n                var aElement = document.createElement(\"a\");\n                aElement.innerText = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(aElement);\n                range.setStart(aElement.firstChild, 1);\n                range.collapse(true);\n                genAPopover(vditor, aElement, range);\n                var textInputElement = vditor.wysiwyg.popover.querySelector(\"input\");\n                textInputElement.value = \"\";\n                textInputElement.focus();\n                useRender = false;\n            }\n            else {\n                var node = document.createElement(\"a\");\n                node.setAttribute(\"href\", \"\");\n                node.innerHTML = range.toString();\n                range.surroundContents(node);\n                range.insertNode(node);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n                genAPopover(vditor, node, range);\n                var textInputElements = vditor.wysiwyg.popover.querySelectorAll(\"input\");\n                textInputElements[0].value = node.innerText;\n                textInputElements[1].focus();\n            }\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"table\") {\n            var tableHTML_1 = \"<table data-block=\\\"0\\\"><thead><tr><th>col1<wbr></th><th>col2</th><th>col3</th></tr></thead><tbody><tr><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td></tr></tbody></table>\";\n            if (range.toString().trim() === \"\") {\n                if (blockElement && blockElement.innerHTML.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                    blockElement.outerHTML = tableHTML_1;\n                }\n                else {\n                    document.execCommand(\"insertHTML\", false, tableHTML_1);\n                }\n                range.selectNode(vditor.wysiwyg.element.querySelector(\"wbr\").previousSibling);\n                vditor.wysiwyg.element.querySelector(\"wbr\").remove();\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n            else {\n                tableHTML_1 = \"<table data-block=\\\"0\\\"><thead><tr>\";\n                var tableText = range.toString().split(\"\\n\");\n                var delimiter_1 = tableText[0].split(\",\").length > tableText[0].split(\"\\t\").length ? \",\" : \"\\t\";\n                tableText.forEach(function (rows, index) {\n                    if (index === 0) {\n                        rows.split(delimiter_1).forEach(function (header, subIndex) {\n                            if (subIndex === 0) {\n                                tableHTML_1 += \"<th>\".concat(header, \"<wbr></th>\");\n                            }\n                            else {\n                                tableHTML_1 += \"<th>\".concat(header, \"</th>\");\n                            }\n                        });\n                        tableHTML_1 += \"</tr></thead>\";\n                    }\n                    else {\n                        if (index === 1) {\n                            tableHTML_1 += \"<tbody><tr>\";\n                        }\n                        else {\n                            tableHTML_1 += \"<tr>\";\n                        }\n                        rows.split(delimiter_1).forEach(function (cell) {\n                            tableHTML_1 += \"<td>\".concat(cell, \"</td>\");\n                        });\n                        tableHTML_1 += \"</tr>\";\n                    }\n                });\n                tableHTML_1 += \"</tbody></table>\";\n                document.execCommand(\"insertHTML\", false, tableHTML_1);\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--disabled\");\n        }\n        else if (commandName === \"line\") {\n            if (blockElement) {\n                var hrHTML = '<hr data-block=\"0\"><p data-block=\"0\"><wbr>\\n</p>';\n                if (blockElement.innerHTML.trim() === \"\") {\n                    blockElement.outerHTML = hrHTML;\n                }\n                else {\n                    blockElement.insertAdjacentHTML(\"afterend\", hrHTML);\n                }\n                (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else {\n            // bold, italic, strike\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n            if (commandName === \"strike\") {\n                commandName = \"strikeThrough\";\n            }\n            if (range.toString() === \"\" && (commandName === \"bold\" || commandName === \"italic\" || commandName === \"strikeThrough\")) {\n                var tagName = \"strong\";\n                if (commandName === \"italic\") {\n                    tagName = \"em\";\n                }\n                else if (commandName === \"strikeThrough\") {\n                    tagName = \"s\";\n                }\n                var node = document.createElement(tagName);\n                node.textContent = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(node);\n                if (node.previousSibling && node.previousSibling.textContent === constants/* Constants.ZWSP */.g.ZWSP) {\n                    // 移除多层嵌套中的 zwsp\n                    node.previousSibling.textContent = \"\";\n                }\n                range.setStart(node.firstChild, 1);\n                range.collapse(true);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n            else {\n                document.execCommand(commandName, false, \"\");\n            }\n        }\n    }\n    if (useHighlight) {\n        highlightToolbarWYSIWYG(vditor);\n    }\n    if (useRender) {\n        afterRenderEvent(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/MenuItem.ts\n\n\n\n\n\n\nvar MenuItem = /** @class */ (function () {\n    function MenuItem(vditor, menuItem) {\n        var _a;\n        var _this = this;\n        this.element = document.createElement(\"div\");\n        if (menuItem.className) {\n            (_a = this.element.classList).add.apply(_a, menuItem.className.split(\" \"));\n        }\n        var hotkey = menuItem.hotkey ? \" <\".concat((0,compatibility/* updateHotkeyTip */.ns)(menuItem.hotkey), \">\") : \"\";\n        if (menuItem.level === 2) {\n            hotkey = menuItem.hotkey ? \" &lt;\".concat((0,compatibility/* updateHotkeyTip */.ns)(menuItem.hotkey), \"&gt;\") : \"\";\n        }\n        var tip = menuItem.tip ? menuItem.tip + hotkey : \"\".concat(window.VditorI18n[menuItem.name]).concat(hotkey);\n        var tagName = menuItem.name === \"upload\" ? \"div\" : \"button\";\n        if (menuItem.level === 2) {\n            this.element.innerHTML = \"<\".concat(tagName, \" data-type=\\\"\").concat(menuItem.name, \"\\\">\").concat(tip, \"</\").concat(tagName, \">\");\n        }\n        else {\n            this.element.classList.add(\"vditor-toolbar__item\");\n            var iconElement = document.createElement(tagName);\n            iconElement.setAttribute(\"data-type\", menuItem.name);\n            iconElement.className = \"vditor-tooltipped vditor-tooltipped__\".concat(menuItem.tipPosition);\n            iconElement.setAttribute(\"aria-label\", tip);\n            iconElement.innerHTML = menuItem.icon;\n            this.element.appendChild(iconElement);\n        }\n        if (!menuItem.prefix) {\n            return;\n        }\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            if (vditor.currentMode === \"wysiwyg\") {\n                toolbarEvent(vditor, _this.element.children[0], event);\n            }\n            else if (vditor.currentMode === \"ir\") {\n                process_processToolbar(vditor, _this.element.children[0], menuItem.prefix || \"\", menuItem.suffix || \"\");\n            }\n            else {\n                processToolbar(vditor, _this.element.children[0], menuItem.prefix || \"\", menuItem.suffix || \"\");\n            }\n        });\n    }\n    return MenuItem;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/EditMode.ts\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar setEditMode = function (vditor, type, event) {\n    var markdownText;\n    if (typeof event !== \"string\") {\n        hidePanel(vditor, [\"subToolbar\", \"hint\"]);\n        event.preventDefault();\n        markdownText = getMarkdown(vditor);\n    }\n    else {\n        markdownText = event;\n    }\n    if (vditor.currentMode === type && typeof event !== \"string\") {\n        return;\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n    if (vditor.options.preview.mode === \"both\" && type === \"sv\") {\n        vditor.preview.element.style.display = \"block\";\n    }\n    else {\n        vditor.preview.element.style.display = \"none\";\n    }\n    enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n    removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n    disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n    if (type === \"ir\") {\n        hideToolbar(vditor.toolbar.elements, [\"both\"]);\n        showToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.sv.element.style.display = \"none\";\n        vditor.wysiwyg.element.parentElement.style.display = \"none\";\n        vditor.ir.element.parentElement.style.display = \"block\";\n        vditor.lute.SetVditorIR(true);\n        vditor.lute.SetVditorWYSIWYG(false);\n        vditor.lute.SetVditorSV(false);\n        vditor.currentMode = \"ir\";\n        vditor.ir.element.innerHTML = vditor.lute.Md2VditorIRDOM(markdownText);\n        process_processAfterRender(vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        setPadding(vditor);\n        vditor.ir.element.querySelectorAll(\".vditor-ir__preview[data-render='2']\").forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        vditor.ir.element.querySelectorAll(\".vditor-toc\").forEach(function (item) {\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n    }\n    else if (type === \"wysiwyg\") {\n        hideToolbar(vditor.toolbar.elements, [\"both\"]);\n        showToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.sv.element.style.display = \"none\";\n        vditor.wysiwyg.element.parentElement.style.display = \"block\";\n        vditor.ir.element.parentElement.style.display = \"none\";\n        vditor.lute.SetVditorIR(false);\n        vditor.lute.SetVditorWYSIWYG(true);\n        vditor.lute.SetVditorSV(false);\n        vditor.currentMode = \"wysiwyg\";\n        setPadding(vditor);\n        renderDomByMd(vditor, markdownText, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        vditor.wysiwyg.element.querySelectorAll(\".vditor-toc\").forEach(function (item) {\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n        vditor.wysiwyg.popover.style.display = \"none\";\n    }\n    else if (type === \"sv\") {\n        showToolbar(vditor.toolbar.elements, [\"both\"]);\n        hideToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.wysiwyg.element.parentElement.style.display = \"none\";\n        vditor.ir.element.parentElement.style.display = \"none\";\n        if (vditor.options.preview.mode === \"both\") {\n            vditor.sv.element.style.display = \"block\";\n        }\n        else if (vditor.options.preview.mode === \"editor\") {\n            vditor.sv.element.style.display = \"block\";\n        }\n        vditor.lute.SetVditorIR(false);\n        vditor.lute.SetVditorWYSIWYG(false);\n        vditor.lute.SetVditorSV(true);\n        vditor.currentMode = \"sv\";\n        var svHTML = processSpinVditorSVDOM(markdownText, vditor);\n        if (svHTML === \"<div data-block='0'></div>\") {\n            // https://github.com/Vanessa219/vditor/issues/654 SV 模式 Placeholder 显示问题\n            svHTML = \"\";\n        }\n        vditor.sv.element.innerHTML = svHTML;\n        combineFootnote(vditor.sv.element);\n        processAfterRender(vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        setPadding(vditor);\n    }\n    vditor.undo.resetIcon(vditor);\n    if (typeof event !== \"string\") {\n        // 初始化不 focus\n        vditor[vditor.currentMode].element.focus();\n        highlightToolbar(vditor);\n    }\n    renderToc(vditor);\n    setTypewriterPosition(vditor);\n    if (vditor.toolbar.elements[\"edit-mode\"]) {\n        vditor.toolbar.elements[\"edit-mode\"].querySelectorAll(\"button\").forEach(function (item) {\n            item.classList.remove(\"vditor-menu--current\");\n        });\n        vditor.toolbar.elements[\"edit-mode\"].querySelector(\"button[data-mode=\\\"\".concat(vditor.currentMode, \"\\\"]\")).classList.add(\"vditor-menu--current\");\n    }\n    vditor.outline.toggle(vditor, vditor.currentMode !== \"sv\" && vditor.options.outline.enable, typeof event !== \"string\");\n};\nvar EditMode = /** @class */ (function (_super) {\n    __extends(EditMode, _super);\n    function EditMode(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        panelElement.innerHTML = \"<button data-mode=\\\"wysiwyg\\\">\".concat(window.VditorI18n.wysiwyg, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘7\"), \"></button>\\n<button data-mode=\\\"ir\\\">\").concat(window.VditorI18n.instantRendering, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘8\"), \"></button>\\n<button data-mode=\\\"sv\\\">\").concat(window.VditorI18n.splitView, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘9\"), \"></button>\");\n        _this.element.appendChild(panelElement);\n        _this._bindEvent(vditor, panelElement, menuItem);\n        return _this;\n    }\n    EditMode.prototype._bindEvent = function (vditor, panelElement, menuItem) {\n        var actionBtn = this.element.children[0];\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        panelElement.children.item(0).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // wysiwyg\n            setEditMode(vditor, \"wysiwyg\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n        panelElement.children.item(1).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // ir\n            setEditMode(vditor, \"ir\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n        panelElement.children.item(2).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // markdown\n            setEditMode(vditor, \"sv\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n    };\n    return EditMode;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/util/getSelectText.ts\n\nvar getSelectText = function (editor, range) {\n    if ((0,util_selection/* selectIsEditor */.Gb)(editor, range)) {\n        return getSelection().toString();\n    }\n    return \"\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/editorCommonEvent.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar focusEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"focus\", function () {\n        if (vditor.options.focus) {\n            vditor.options.focus(getMarkdown(vditor));\n        }\n        hidePanel(vditor, [\"subToolbar\", \"hint\"]);\n    });\n};\nvar dblclickEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"dblclick\", function (event) {\n        if (event.target.tagName === \"IMG\") {\n            if (vditor.options.image.preview) {\n                vditor.options.image.preview(event.target);\n            }\n            else if (vditor.options.image.isPreview) {\n                (0,preview_image/* previewImage */.E)(event.target, vditor.options.lang, vditor.options.theme);\n            }\n        }\n    });\n};\nvar blurEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"blur\", function (event) {\n        if (vditor.currentMode === \"ir\") {\n            var expandElement = vditor.ir.element.querySelector(\".vditor-ir__node--expand\");\n            if (expandElement) {\n                expandElement.classList.remove(\"vditor-ir__node--expand\");\n            }\n        }\n        else if (vditor.currentMode === \"wysiwyg\" &&\n            !vditor.wysiwyg.selectPopover.contains(event.relatedTarget)) {\n            vditor.wysiwyg.hideComment();\n        }\n        vditor[vditor.currentMode].range = (0,util_selection/* getEditorRange */.zh)(vditor);\n        if (vditor.options.blur) {\n            vditor.options.blur(getMarkdown(vditor));\n        }\n    });\n};\nvar dropEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"dragstart\", function (event) {\n        // 选中编辑器中的文字进行拖拽\n        event.dataTransfer.setData(constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR, constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR);\n    });\n    editorElement.addEventListener(\"drop\", function (event) {\n        if (event.dataTransfer.getData(constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR)) {\n            // 编辑器内选中文字拖拽\n            execAfterRender(vditor);\n        }\n        else if (event.dataTransfer.types.includes(\"Files\") || event.dataTransfer.types.includes(\"text/html\")) {\n            // 外部文件拖入编辑器中或者编辑器内选中文字拖拽\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        }\n    });\n};\nvar copyEvent = function (vditor, editorElement, copy) {\n    editorElement.addEventListener(\"copy\", function (event) { return copy(event, vditor); });\n};\nvar cutEvent = function (vditor, editorElement, copy) {\n    editorElement.addEventListener(\"cut\", function (event) {\n        copy(event, vditor);\n        // 获取 comment\n        if (vditor.options.comment.enable && vditor.currentMode === \"wysiwyg\") {\n            vditor.wysiwyg.getComments(vditor);\n        }\n        document.execCommand(\"delete\");\n    });\n};\nvar scrollCenter = function (vditor) {\n    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n        vditor.options.comment.adjustTop(vditor.wysiwyg.getComments(vditor, true));\n    }\n    if (!vditor.options.typewriterMode) {\n        return;\n    }\n    var editorElement = vditor[vditor.currentMode].element;\n    var cursorTop = (0,util_selection/* getCursorPosition */.Ny)(editorElement).top;\n    if (vditor.options.height === \"auto\" && !vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        window.scrollTo(window.scrollX, cursorTop + vditor.element.offsetTop + vditor.toolbar.element.offsetHeight - window.innerHeight / 2 + 10);\n    }\n    if (vditor.options.height !== \"auto\" || vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        editorElement.scrollTop = cursorTop + editorElement.scrollTop - editorElement.clientHeight / 2 + 10;\n    }\n};\nvar hotkeyEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"keydown\", function (event) {\n        if (!event.isComposing && vditor.options.keydown) {\n            vditor.options.keydown(event);\n        }\n        // hint: 上下选择\n        if ((vditor.options.hint.extend.length > 1 || vditor.toolbar.elements.emoji) &&\n            vditor.hint.select(event, vditor)) {\n            return;\n        }\n        // 重置 comment\n        if (vditor.options.comment.enable && vditor.currentMode === \"wysiwyg\" &&\n            (event.key === \"Backspace\" || matchHotKey(\"⌘X\", event))) {\n            vditor.wysiwyg.getComments(vditor);\n        }\n        if (vditor.currentMode === \"sv\") {\n            if (processKeydown_processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        else if (vditor.currentMode === \"wysiwyg\") {\n            if (wysiwyg_processKeydown_processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        else if (vditor.currentMode === \"ir\") {\n            if (processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        if (vditor.options.ctrlEnter && matchHotKey(\"⌘Enter\", event)) {\n            vditor.options.ctrlEnter(getMarkdown(vditor));\n            event.preventDefault();\n            return;\n        }\n        // undo\n        if (matchHotKey(\"⌘Z\", event) && !vditor.toolbar.elements.undo) {\n            vditor.undo.undo(vditor);\n            event.preventDefault();\n            return;\n        }\n        // redo\n        if (matchHotKey(\"⌘Y\", event) && !vditor.toolbar.elements.redo) {\n            vditor.undo.redo(vditor);\n            event.preventDefault();\n            return;\n        }\n        // esc\n        if (event.key === \"Escape\") {\n            if (vditor.hint.element.style.display === \"block\") {\n                vditor.hint.element.style.display = \"none\";\n            }\n            else if (vditor.options.esc && !event.isComposing) {\n                vditor.options.esc(getMarkdown(vditor));\n            }\n            event.preventDefault();\n            return;\n        }\n        // h1 - h6 hotkey\n        if ((0,compatibility/* isCtrl */.yl)(event) && event.altKey && !event.shiftKey && /^Digit[1-6]$/.test(event.code)) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                var tagName = event.code.replace(\"Digit\", \"H\");\n                if ((0,hasClosest/* hasClosestByMatchTag */.lG)(getSelection().getRangeAt(0).startContainer, tagName)) {\n                    removeHeading(vditor);\n                }\n                else {\n                    setHeading(vditor, tagName);\n                }\n                afterRenderEvent(vditor);\n            }\n            else if (vditor.currentMode === \"sv\") {\n                processHeading(vditor, \"#\".repeat(parseInt(event.code.replace(\"Digit\", \"\"), 10)) + \" \");\n            }\n            else if (vditor.currentMode === \"ir\") {\n                process_processHeading(vditor, \"#\".repeat(parseInt(event.code.replace(\"Digit\", \"\"), 10)) + \" \");\n            }\n            event.preventDefault();\n            return true;\n        }\n        // toggle edit mode\n        if ((0,compatibility/* isCtrl */.yl)(event) && event.altKey && !event.shiftKey && /^Digit[7-9]$/.test(event.code)) {\n            if (event.code === \"Digit7\") {\n                setEditMode(vditor, \"wysiwyg\", event);\n            }\n            else if (event.code === \"Digit8\") {\n                setEditMode(vditor, \"ir\", event);\n            }\n            else if (event.code === \"Digit9\") {\n                setEditMode(vditor, \"sv\", event);\n            }\n            return true;\n        }\n        // toolbar action\n        vditor.options.toolbar.find(function (menuItem) {\n            if (!menuItem.hotkey || menuItem.toolbar) {\n                if (menuItem.toolbar) {\n                    var sub = menuItem.toolbar.find(function (subMenuItem) {\n                        if (!subMenuItem.hotkey) {\n                            return false;\n                        }\n                        if (matchHotKey(subMenuItem.hotkey, event)) {\n                            vditor.toolbar.elements[subMenuItem.name].children[0]\n                                .dispatchEvent(new CustomEvent((0,compatibility/* getEventName */.Le)()));\n                            event.preventDefault();\n                            return true;\n                        }\n                    });\n                    return sub ? true : false;\n                }\n                return false;\n            }\n            if (matchHotKey(menuItem.hotkey, event)) {\n                vditor.toolbar.elements[menuItem.name].children[0].dispatchEvent(new CustomEvent((0,compatibility/* getEventName */.Le)()));\n                event.preventDefault();\n                return true;\n            }\n        });\n    });\n};\nvar selectEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"selectstart\", function (event) {\n        editorElement.onmouseup = function () {\n            setTimeout(function () {\n                var selectText = getSelectText(vditor[vditor.currentMode].element);\n                if (selectText.trim()) {\n                    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n                        if (!(0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"footnotes-block\") &&\n                            !(0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"link-ref-defs-block\")) {\n                            vditor.wysiwyg.showComment();\n                        }\n                        else {\n                            vditor.wysiwyg.hideComment();\n                        }\n                    }\n                    if (vditor.options.select) {\n                        vditor.options.select(selectText);\n                    }\n                }\n                else {\n                    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n                        vditor.wysiwyg.hideComment();\n                    }\n                    if (typeof vditor.options.unSelect === 'function') {\n                        vditor.options.unSelect();\n                    }\n                }\n            });\n        };\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/process.ts\n\n\n\n\n\n\n\n\n\nvar processPaste = function (vditor, text) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    range.extractContents();\n    range.insertNode(document.createTextNode(Lute.Caret));\n    range.insertNode(document.createTextNode(text));\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n    if (!blockElement) {\n        blockElement = vditor.sv.element;\n    }\n    var spinHTML = vditor.lute.SpinVditorSVDOM(blockElement.textContent);\n    spinHTML = \"<div data-block='0'>\" +\n        spinHTML.replace(/<span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span><span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span></g, '<span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span></div><div data-block=\"0\"><') +\n        \"</div>\";\n    if (blockElement.isEqualNode(vditor.sv.element)) {\n        blockElement.innerHTML = spinHTML;\n    }\n    else {\n        blockElement.outerHTML = spinHTML;\n    }\n    combineFootnote(vditor.sv.element);\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    scrollCenter(vditor);\n};\nvar getSideByType = function (spanNode, type, isPrevious) {\n    if (isPrevious === void 0) { isPrevious = true; }\n    var sideElement = spanNode;\n    if (sideElement.nodeType === 3) {\n        sideElement = sideElement.parentElement;\n    }\n    while (sideElement) {\n        if (sideElement.getAttribute(\"data-type\") === type) {\n            return sideElement;\n        }\n        if (isPrevious) {\n            sideElement = sideElement.previousElementSibling;\n        }\n        else {\n            sideElement = sideElement.nextElementSibling;\n        }\n    }\n    return false;\n};\nvar processSpinVditorSVDOM = function (html, vditor) {\n    log(\"SpinVditorSVDOM\", html, \"argument\", vditor.options.debugger);\n    var spinHTML = vditor.lute.SpinVditorSVDOM(html);\n    html = \"<div data-block='0'>\" +\n        spinHTML.replace(/<span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span><span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span></g, '<span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span></div><div data-block=\"0\"><') +\n        \"</div>\";\n    log(\"SpinVditorSVDOM\", html, \"result\", vditor.options.debugger);\n    return html;\n};\nvar processPreviousMarkers = function (spanElement) {\n    var spanType = spanElement.getAttribute(\"data-type\");\n    var previousElement = spanElement.previousElementSibling;\n    // 有内容的子列表/标题，在其 marker 后换行\n    var markerText = (spanType && spanType !== \"text\" && spanType !== \"table\" && spanType !== \"heading-marker\" &&\n        spanType !== \"newline\" && spanType !== \"yaml-front-matter-open-marker\" && spanType !== \"yaml-front-matter-close-marker\"\n        && spanType !== \"code-block-info\" && spanType !== \"code-block-close-marker\" && spanType !== \"code-block-open-marker\") ?\n        spanElement.textContent : \"\";\n    var hasNL = false;\n    if (spanType === \"newline\") {\n        hasNL = true;\n    }\n    while (previousElement && !hasNL) {\n        var previousType = previousElement.getAttribute(\"data-type\");\n        if (previousType === \"li-marker\" || previousType === \"blockquote-marker\" || previousType === \"task-marker\" ||\n            previousType === \"padding\") {\n            var previousText = previousElement.textContent;\n            if (previousType === \"li-marker\" &&\n                (spanType === \"code-block-open-marker\" || spanType === \"code-block-info\")) {\n                // https://github.com/Vanessa219/vditor/issues/586\n                markerText = previousText.replace(/\\S/g, \" \") + markerText;\n            }\n            else if (spanType === \"code-block-close-marker\" &&\n                previousElement.nextElementSibling.isSameNode(spanElement)) {\n                // https://github.com/Vanessa219/vditor/issues/594\n                var openMarker = getSideByType(spanElement, \"code-block-open-marker\");\n                if (openMarker && openMarker.previousElementSibling) {\n                    previousElement = openMarker.previousElementSibling;\n                    markerText = previousText + markerText;\n                }\n            }\n            else {\n                markerText = previousText + markerText;\n            }\n        }\n        else if (previousType === \"newline\") {\n            hasNL = true;\n        }\n        previousElement = previousElement.previousElementSibling;\n    }\n    return markerText;\n};\nvar processAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        vditor.hint.render(vditor);\n    }\n    vditor.preview.render(vditor);\n    var text = getMarkdown(vditor);\n    if (typeof vditor.options.input === \"function\" && options.enableInput) {\n        vditor.options.input(text);\n    }\n    if (vditor.options.counter.enable) {\n        vditor.counter.render(vditor, text);\n    }\n    if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n        localStorage.setItem(vditor.options.cache.id, text);\n        if (vditor.options.cache.after) {\n            vditor.options.cache.after(text);\n        }\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n    clearTimeout(vditor.sv.processTimeoutId);\n    vditor.sv.processTimeoutId = window.setTimeout(function () {\n        if (options.enableAddUndoStack && !vditor.sv.composingLock) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\nvar processHeading = function (vditor, value) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"SPAN\");\n    if (headingElement && headingElement.textContent.trim() !== \"\") {\n        value = \"\\n\" + value;\n    }\n    range.collapse(true);\n    document.execCommand(\"insertHTML\", false, value);\n};\nvar processToolbar = function (vditor, actionBtn, prefix, suffix) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    // 添加\n    if (vditor.sv.element.childNodes.length === 0) {\n        vditor.sv.element.innerHTML = \"<span data-type=\\\"p\\\" data-block=\\\"0\\\"><span data-type=\\\"text\\\"><wbr></span></span><span data-type=\\\"newline\\\"><br><span style=\\\"display: none\\\">\\n</span></span>\";\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    var spanElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"SPAN\");\n    if (!blockElement) {\n        return;\n    }\n    if (commandName === \"link\") {\n        var html = void 0;\n        if (range.toString() === \"\") {\n            html = \"\".concat(prefix).concat(Lute.Caret).concat(suffix);\n        }\n        else {\n            html = \"\".concat(prefix).concat(range.toString()).concat(suffix.replace(\")\", Lute.Caret + \")\"));\n        }\n        document.execCommand(\"insertHTML\", false, html);\n        return;\n    }\n    else if (commandName === \"italic\" || commandName === \"bold\" || commandName === \"strike\" ||\n        commandName === \"inline-code\" || commandName === \"code\" || commandName === \"table\" || commandName === \"line\") {\n        var html = void 0;\n        // https://github.com/Vanessa219/vditor/issues/563 代码块不需要后面的 ```\n        if (range.toString() === \"\") {\n            html = \"\".concat(prefix).concat(Lute.Caret).concat(commandName === \"code\" ? \"\" : suffix);\n        }\n        else {\n            html = \"\".concat(prefix).concat(range.toString()).concat(Lute.Caret).concat(commandName === \"code\" ? \"\" : suffix);\n        }\n        if (commandName === \"table\" || (commandName === \"code\" && spanElement && spanElement.textContent !== \"\")) {\n            html = \"\\n\\n\" + html;\n        }\n        else if (commandName === \"line\") {\n            html = \"\\n\\n\".concat(prefix, \"\\n\").concat(Lute.Caret);\n        }\n        document.execCommand(\"insertHTML\", false, html);\n        return;\n    }\n    else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\" ||\n        commandName === \"quote\") {\n        if (spanElement) {\n            var marker = \"* \";\n            if (commandName === \"check\") {\n                marker = \"* [ ] \";\n            }\n            else if (commandName === \"ordered-list\") {\n                marker = \"1. \";\n            }\n            else if (commandName === \"quote\") {\n                marker = \"> \";\n            }\n            var newLine = getSideByType(spanElement, \"newline\");\n            if (newLine) {\n                newLine.insertAdjacentText(\"afterend\", marker);\n            }\n            else {\n                blockElement.insertAdjacentText(\"afterbegin\", marker);\n            }\n            inputEvent(vditor);\n            return;\n        }\n    }\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    processAfterRender(vditor);\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/getElement.ts\nvar getElement = function (vditor) {\n    switch (vditor.currentMode) {\n        case \"ir\":\n            return vditor.ir.element;\n        case \"wysiwyg\":\n            return vditor.wysiwyg.element;\n        case \"sv\":\n            return vditor.sv.element;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/setHeaders.ts\nvar setHeaders = function (vditor, xhr) {\n    if (vditor.options.upload.setHeaders) {\n        vditor.options.upload.headers = vditor.options.upload.setHeaders();\n    }\n    if (vditor.options.upload.headers) {\n        Object.keys(vditor.options.upload.headers).forEach(function (key) {\n            xhr.setRequestHeader(key, vditor.options.upload.headers[key]);\n        });\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/index.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\nvar Upload = /** @class */ (function () {\n    function Upload() {\n        this.isUploading = false;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-upload\";\n    }\n    return Upload;\n}());\nvar validateFile = function (vditor, files) {\n    vditor.tip.hide();\n    var uploadFileList = [];\n    var errorTip = \"\";\n    var uploadingStr = \"\";\n    var lang = vditor.options.lang;\n    var options = vditor.options;\n    var _loop_1 = function (iMax, i) {\n        var file = files[i];\n        var validate = true;\n        if (!file.name) {\n            errorTip += \"<li>\".concat(window.VditorI18n.nameEmpty, \"</li>\");\n            validate = false;\n        }\n        if (file.size > vditor.options.upload.max) {\n            errorTip += \"<li>\".concat(file.name, \" \").concat(window.VditorI18n.over, \" \").concat(vditor.options.upload.max / 1024 / 1024, \"M</li>\");\n            validate = false;\n        }\n        var lastIndex = file.name.lastIndexOf(\".\");\n        var fileExt = file.name.substr(lastIndex);\n        var filename = vditor.options.upload.filename(file.name.substr(0, lastIndex)) + fileExt;\n        if (vditor.options.upload.accept) {\n            var isAccept = vditor.options.upload.accept.split(\",\").some(function (item) {\n                var type = item.trim();\n                if (type.indexOf(\".\") === 0) {\n                    if (fileExt.toLowerCase() === type.toLowerCase()) {\n                        return true;\n                    }\n                }\n                else {\n                    if (file.type.split(\"/\")[0] === type.split(\"/\")[0]) {\n                        return true;\n                    }\n                }\n                return false;\n            });\n            if (!isAccept) {\n                errorTip += \"<li>\".concat(file.name, \" \").concat(window.VditorI18n.fileTypeError, \"</li>\");\n                validate = false;\n            }\n        }\n        if (validate) {\n            uploadFileList.push(file);\n            uploadingStr += \"<li>\".concat(filename, \" \").concat(window.VditorI18n.uploading, \" <a class=\\\"vditorCancelUpload\\\" href=\\\"javascript:void(0)\\\">\").concat(window.VditorI18n.cancelUpload, \"</a></li>\");\n        }\n    };\n    for (var iMax = files.length, i = 0; i < iMax; i++) {\n        _loop_1(iMax, i);\n    }\n    vditor.tip.show(\"<ul>\".concat(errorTip).concat(uploadingStr, \"</ul>\"));\n    if (vditor.options.upload.cancel) {\n        var vditorCancelUploadElement = vditor.tip.element.querySelector(\".vditorCancelUpload\");\n        if (vditorCancelUploadElement) {\n            vditorCancelUploadElement.addEventListener(\"click\", function () {\n                vditor.options.upload.cancel(uploadFileList);\n                vditor.tip.hide();\n                vditor.upload.isUploading = false;\n            });\n        }\n    }\n    return uploadFileList;\n};\nvar genUploadedLabel = function (responseText, vditor) {\n    var editorElement = getElement(vditor);\n    editorElement.focus();\n    var response = JSON.parse(responseText);\n    var errorTip = \"\";\n    if (response.code === 1) {\n        errorTip = \"\".concat(response.msg);\n    }\n    if (response.data.errFiles && response.data.errFiles.length > 0) {\n        errorTip = \"<ul><li>\".concat(errorTip, \"</li>\");\n        response.data.errFiles.forEach(function (data) {\n            var lastIndex = data.lastIndexOf(\".\");\n            var filename = vditor.options.upload.filename(data.substr(0, lastIndex)) + data.substr(lastIndex);\n            errorTip += \"<li>\".concat(filename, \" \").concat(window.VditorI18n.uploadError, \"</li>\");\n        });\n        errorTip += \"</ul>\";\n    }\n    if (errorTip) {\n        vditor.tip.show(errorTip);\n    }\n    else {\n        vditor.tip.hide();\n    }\n    var succFileText = \"\";\n    Object.keys(response.data.succMap).forEach(function (key) {\n        var path = response.data.succMap[key];\n        var lastIndex = key.lastIndexOf(\".\");\n        var type = key.substr(lastIndex);\n        var filename = vditor.options.upload.filename(key.substr(0, lastIndex)) + type;\n        type = type.toLowerCase();\n        if (type.indexOf(\".wav\") === 0 || type.indexOf(\".mp3\") === 0 || type.indexOf(\".ogg\") === 0) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<div class=\\\"vditor-wysiwyg__block\\\" data-type=\\\"html-block\\\"\\n data-block=\\\"0\\\"><pre><code>&lt;audio controls=\\\"controls\\\" src=\\\"\".concat(path, \"\\\"&gt;&lt;/audio&gt;</code></pre><pre class=\\\"vditor-wysiwyg__preview\\\" data-render=\\\"1\\\"><audio controls=\\\"controls\\\" src=\\\"\").concat(path, \"\\\"></audio></pre></div>\\n\");\n            }\n            else if (vditor.currentMode === \"ir\") {\n                succFileText += \"<audio controls=\\\"controls\\\" src=\\\"\".concat(path, \"\\\"></audio>\\n\");\n            }\n            else {\n                succFileText += \"[\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n        else if (type.indexOf(\".apng\") === 0\n            || type.indexOf(\".bmp\") === 0\n            || type.indexOf(\".gif\") === 0\n            || type.indexOf(\".ico\") === 0 || type.indexOf(\".cur\") === 0\n            || type.indexOf(\".jpg\") === 0 || type.indexOf(\".jpeg\") === 0 || type.indexOf(\".jfif\") === 0 || type.indexOf(\".pjp\") === 0 || type.indexOf(\".pjpeg\") === 0\n            || type.indexOf(\".png\") === 0\n            || type.indexOf(\".svg\") === 0\n            || type.indexOf(\".webp\") === 0) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<img alt=\\\"\".concat(filename, \"\\\" src=\\\"\").concat(path, \"\\\">\\n\");\n            }\n            else {\n                succFileText += \"![\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n        else {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<a href=\\\"\".concat(path, \"\\\">\").concat(filename, \"</a>\\n\");\n            }\n            else {\n                succFileText += \"[\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n    });\n    (0,util_selection/* setSelectionFocus */.Hc)(vditor.upload.range);\n    document.execCommand(\"insertHTML\", false, succFileText);\n    vditor.upload.range = getSelection().getRangeAt(0).cloneRange();\n};\nvar uploadFiles = function (vditor, files, element) { return __awaiter(void 0, void 0, void 0, function () {\n    var fileList, filesMax, i, fileItem, isValidate, isValidate, editorElement, validateResult, formData, extraData, _i, _a, key, i, iMax, xhr;\n    return __generator(this, function (_b) {\n        switch (_b.label) {\n            case 0:\n                fileList = [];\n                filesMax = vditor.options.upload.multiple === true ? files.length : 1;\n                for (i = 0; i < filesMax; i++) {\n                    fileItem = files[i];\n                    if (fileItem instanceof DataTransferItem) {\n                        fileItem = fileItem.getAsFile();\n                    }\n                    fileList.push(fileItem);\n                }\n                if (!vditor.options.upload.handler) return [3 /*break*/, 2];\n                return [4 /*yield*/, vditor.options.upload.handler(fileList)];\n            case 1:\n                isValidate = _b.sent();\n                if (element) {\n                    element.value = \"\";\n                }\n                if (typeof isValidate === \"string\") {\n                    vditor.tip.show(isValidate);\n                    return [2 /*return*/];\n                }\n                return [2 /*return*/];\n            case 2:\n                if (!vditor.options.upload.url || !vditor.upload) {\n                    if (element) {\n                        element.value = \"\";\n                    }\n                    vditor.tip.show(\"please config: options.upload.url\");\n                    return [2 /*return*/];\n                }\n                if (!vditor.options.upload.file) return [3 /*break*/, 4];\n                return [4 /*yield*/, vditor.options.upload.file(fileList)];\n            case 3:\n                fileList = _b.sent();\n                _b.label = 4;\n            case 4:\n                if (vditor.options.upload.validate) {\n                    isValidate = vditor.options.upload.validate(fileList);\n                    if (typeof isValidate === \"string\") {\n                        vditor.tip.show(isValidate);\n                        return [2 /*return*/];\n                    }\n                }\n                editorElement = getElement(vditor);\n                vditor.upload.range = (0,util_selection/* getEditorRange */.zh)(vditor);\n                validateResult = validateFile(vditor, fileList);\n                if (validateResult.length === 0) {\n                    if (element) {\n                        element.value = \"\";\n                    }\n                    return [2 /*return*/];\n                }\n                formData = new FormData();\n                extraData = vditor.options.upload.extraData;\n                for (_i = 0, _a = Object.keys(extraData); _i < _a.length; _i++) {\n                    key = _a[_i];\n                    formData.append(key, extraData[key]);\n                }\n                for (i = 0, iMax = validateResult.length; i < iMax; i++) {\n                    formData.append(vditor.options.upload.fieldName, validateResult[i]);\n                }\n                xhr = new XMLHttpRequest();\n                vditor.upload.xhr = xhr;\n                xhr.open(\"POST\", vditor.options.upload.url);\n                if (vditor.options.upload.token) {\n                    xhr.setRequestHeader(\"X-Upload-Token\", vditor.options.upload.token);\n                }\n                if (vditor.options.upload.withCredentials) {\n                    xhr.withCredentials = true;\n                }\n                setHeaders(vditor, xhr);\n                vditor.upload.isUploading = true;\n                editorElement.setAttribute(\"contenteditable\", \"false\");\n                xhr.onreadystatechange = function () {\n                    if (xhr.readyState === XMLHttpRequest.DONE) {\n                        vditor.upload.isUploading = false;\n                        editorElement.setAttribute(\"contenteditable\", \"true\");\n                        if (xhr.status >= 200 && xhr.status < 300) {\n                            if (vditor.options.upload.success) {\n                                vditor.options.upload.success(editorElement, xhr.responseText);\n                            }\n                            else {\n                                var responseText = xhr.responseText;\n                                if (vditor.options.upload.format) {\n                                    responseText = vditor.options.upload.format(files, xhr.responseText);\n                                }\n                                genUploadedLabel(responseText, vditor);\n                            }\n                        }\n                        else {\n                            if (vditor.options.upload.error) {\n                                vditor.options.upload.error(xhr.responseText);\n                            }\n                            else {\n                                vditor.tip.show(xhr.responseText);\n                            }\n                        }\n                        if (element) {\n                            element.value = \"\";\n                        }\n                        vditor.upload.element.style.display = \"none\";\n                        vditor.upload.xhr = undefined;\n                    }\n                };\n                xhr.upload.onprogress = function (event) {\n                    if (!event.lengthComputable) {\n                        return;\n                    }\n                    var progress = event.loaded / event.total * 100;\n                    vditor.upload.element.style.display = \"block\";\n                    var progressBar = vditor.upload.element;\n                    progressBar.style.width = progress + \"%\";\n                };\n                xhr.send(formData);\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/input.ts\n\n\n\n\n\n\n\n\nvar input_input = function (vditor, range, event) {\n    var _a;\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        // 使用顶级块元素，应使用 innerHTML\n        blockElement = vditor.wysiwyg.element;\n    }\n    if (event && event.inputType !== \"formatItalic\"\n        && event.inputType !== \"deleteByDrag\"\n        && event.inputType !== \"insertFromDrop\"\n        && event.inputType !== \"formatBold\"\n        && event.inputType !== \"formatRemove\"\n        && event.inputType !== \"formatStrikeThrough\"\n        && event.inputType !== \"insertUnorderedList\"\n        && event.inputType !== \"insertOrderedList\"\n        && event.inputType !== \"formatOutdent\"\n        && event.inputType !== \"formatIndent\"\n        && event.inputType !== \"\" // document.execCommand('unlink', false)\n        || !event) {\n        var previousAEmptyElement = previoueIsEmptyA(range.startContainer);\n        if (previousAEmptyElement) {\n            // 链接结尾回车不应该复制到下一行 https://github.com/Vanessa219/vditor/issues/163\n            previousAEmptyElement.remove();\n        }\n        // 保存光标\n        vditor.wysiwyg.element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        // 在行首进行删除，后面的元素会带有样式，需清除\n        blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n            item.removeAttribute(\"style\");\n        });\n        // 移除空评论\n        blockElement.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n            if (item.textContent.trim() === \"\") {\n                item.classList.remove(\"vditor-comment\", \"vditor-comment--focus\");\n                item.removeAttribute(\"data-cmtids\");\n            }\n        });\n        //  在有评论的行首换行后，该行的前一段会带有评论标识\n        (_a = blockElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n            if (item.textContent.trim() === \"\") {\n                item.classList.remove(\"vditor-comment\", \"vditor-comment--focus\");\n                item.removeAttribute(\"data-cmtids\");\n            }\n        });\n        var html_1 = \"\";\n        if (blockElement.getAttribute(\"data-type\") === \"link-ref-defs-block\") {\n            // 修改链接引用\n            blockElement = vditor.wysiwyg.element;\n        }\n        var isWYSIWYGElement = blockElement.isEqualNode(vditor.wysiwyg.element);\n        var footnoteElement = (0,hasClosest/* hasClosestByAttribute */.a1)(blockElement, \"data-type\", \"footnotes-block\");\n        if (!isWYSIWYGElement) {\n            // 列表需要到最顶层\n            var topListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n            if (topListElement && !footnoteElement) {\n                var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"BLOCKQUOTE\");\n                if (blockquoteElement) {\n                    // li 中有 blockquote 就只渲染 blockquote\n                    blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer) || blockElement;\n                }\n                else {\n                    blockElement = topListElement;\n                }\n            }\n            // 修改脚注\n            if (footnoteElement) {\n                blockElement = footnoteElement;\n            }\n            html_1 = blockElement.outerHTML;\n            if (blockElement.tagName === \"UL\" || blockElement.tagName === \"OL\") {\n                // 如果为列表的话，需要把上下的列表都重绘\n                var listPrevElement = blockElement.previousElementSibling;\n                var listNextElement = blockElement.nextElementSibling;\n                if (listPrevElement && (listPrevElement.tagName === \"UL\" || listPrevElement.tagName === \"OL\")) {\n                    html_1 = listPrevElement.outerHTML + html_1;\n                    listPrevElement.remove();\n                }\n                if (listNextElement && (listNextElement.tagName === \"UL\" || listNextElement.tagName === \"OL\")) {\n                    html_1 = html_1 + listNextElement.outerHTML;\n                    listNextElement.remove();\n                }\n                // firefox 列表回车不会产生新的 list item https://github.com/Vanessa219/vditor/issues/194\n                html_1 = html_1.replace(\"<div><wbr><br></div>\", \"<li><p><wbr><br></p></li>\");\n            }\n            if (!blockElement.innerText.startsWith(\"```\")) {\n                // 添加链接引用\n                vditor.wysiwyg.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n                    if (item && !blockElement.isEqualNode(item)) {\n                        html_1 += item.outerHTML;\n                        item.remove();\n                    }\n                });\n                // 添加脚注\n                vditor.wysiwyg.element.querySelectorAll(\"[data-type='footnotes-block']\").forEach(function (item) {\n                    if (item && !blockElement.isEqualNode(item)) {\n                        html_1 += item.outerHTML;\n                        item.remove();\n                    }\n                });\n            }\n        }\n        else {\n            html_1 = blockElement.innerHTML;\n        }\n        // 合并多个 em， strong，s。以防止多个相同元素在一起时不满足 commonmark 规范，出现标记符\n        html_1 = html_1.replace(/<\\/(strong|b)><strong data-marker=\"\\W{2}\">/g, \"\")\n            .replace(/<\\/(em|i)><em data-marker=\"\\W{1}\">/g, \"\")\n            .replace(/<\\/(s|strike)><s data-marker=\"~{1,2}\">/g, \"\");\n        if (html_1 === '<p data-block=\"0\">```<wbr></p>' && vditor.hint.recentLanguage) {\n            html_1 = '<p data-block=\"0\">```<wbr></p>'.replace(\"```\", \"```\" + vditor.hint.recentLanguage);\n        }\n        log(\"SpinVditorDOM\", html_1, \"argument\", vditor.options.debugger);\n        html_1 = html_1.replace(/<span class=\"linsi-span\" contenteditable=\"false\">(.*?)<\\/span>/g, '{{$1}}');\n        html_1 = vditor.lute.SpinVditorDOM(html_1);\n        html_1 = html_1.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"linsi-span\" contenteditable=\"false\">$1</span>');\n        log(\"SpinVditorDOM\", html_1, \"result\", vditor.options.debugger);\n        if (isWYSIWYGElement) {\n            blockElement.innerHTML = html_1;\n        }\n        else {\n            blockElement.outerHTML = html_1;\n            if (footnoteElement) {\n                // 更新正文中的 tip\n                var footnoteItemElement = (0,hasClosest/* hasTopClosestByTag */.E2)(vditor.wysiwyg.element.querySelector(\"wbr\"), \"LI\");\n                if (footnoteItemElement) {\n                    var footnoteRefElement = vditor.wysiwyg.element.querySelector(\"sup[data-type=\\\"footnotes-ref\\\"][data-footnotes-label=\\\"\".concat(footnoteItemElement.getAttribute(\"data-marker\"), \"\\\"]\"));\n                    if (footnoteRefElement) {\n                        footnoteRefElement.setAttribute(\"aria-label\", footnoteItemElement.textContent.trim().substr(0, 24));\n                    }\n                }\n            }\n        }\n        var firstLinkRefDefElement_1;\n        var allLinkRefDefsElement = vditor.wysiwyg.element.querySelectorAll(\"[data-type='link-ref-defs-block']\");\n        allLinkRefDefsElement.forEach(function (item, index) {\n            if (index === 0) {\n                firstLinkRefDefElement_1 = item;\n            }\n            else {\n                firstLinkRefDefElement_1.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n                item.remove();\n            }\n        });\n        if (allLinkRefDefsElement.length > 0) {\n            vditor.wysiwyg.element.insertAdjacentElement(\"beforeend\", allLinkRefDefsElement[0]);\n        }\n        // 脚注合并后添加的末尾\n        var firstFootnoteElement_1;\n        var allFootnoteElement = vditor.wysiwyg.element.querySelectorAll(\"[data-type='footnotes-block']\");\n        allFootnoteElement.forEach(function (item, index) {\n            if (index === 0) {\n                firstFootnoteElement_1 = item;\n            }\n            else {\n                firstFootnoteElement_1.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n                item.remove();\n            }\n        });\n        if (allFootnoteElement.length > 0) {\n            vditor.wysiwyg.element.insertAdjacentElement(\"beforeend\", allFootnoteElement[0]);\n        }\n        // 设置光标\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        vditor.wysiwyg.element.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\")\n            .forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        if (event && (event.inputType === \"deleteContentBackward\" || event.inputType === \"deleteContentForward\") &&\n            vditor.options.comment.enable) {\n            vditor.wysiwyg.triggerRemoveComment(vditor);\n            vditor.options.comment.adjustTop(vditor.wysiwyg.getComments(vditor, true));\n        }\n    }\n    renderToc(vditor);\n    afterRenderEvent(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/fixBrowserBehavior.ts\nvar __makeTemplateObject = (undefined && undefined.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar fixBrowserBehavior_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar fixBrowserBehavior_generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// https://github.com/Vanessa219/vditor/issues/508 软键盘无法删除空块\nvar fixGSKeyBackspace = function (event, vditor, startContainer) {\n    if (event.keyCode === 229 && event.code === \"\" && event.key === \"Unidentified\" && vditor.currentMode !== \"sv\") {\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n        // 移动端的标点符号都显示为 299，因此需限定为空删除的条件\n        if (blockElement && blockElement.textContent.trim() === \"\") {\n            vditor[vditor.currentMode].composingLock = true;\n            return false;\n        }\n    }\n    return true;\n};\n// https://github.com/Vanessa219/vditor/issues/361 代码块后输入中文\nvar fixCJKPosition = function (range, vditor, event) {\n    if (event.key === \"Enter\" || event.key === \"Tab\" || event.key === \"Backspace\" || event.key.indexOf(\"Arrow\") > -1\n        || (0,compatibility/* isCtrl */.yl)(event) || event.key === \"Escape\" || event.shiftKey || event.altKey) {\n        return;\n    }\n    var pLiElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"P\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n    if (pLiElement && (0,util_selection/* getSelectPosition */.im)(pLiElement, vditor[vditor.currentMode].element, range).start === 0) {\n        // https://github.com/Vanessa219/vditor/issues/1289 WKWebView切换输入法产生六分之一空格，造成光标错位\n        if (pLiElement.nodeValue) {\n            pLiElement.nodeValue = pLiElement.nodeValue.replace(/\\u2006/g, '');\n        }\n        var zwspNode = document.createTextNode(constants/* Constants.ZWSP */.g.ZWSP);\n        range.insertNode(zwspNode);\n        range.setStartAfter(zwspNode);\n    }\n};\n// https://github.com/Vanessa219/vditor/issues/381 光标在内联数学公式中无法向下移动\nvar fixCursorDownInlineMath = function (range, key) {\n    if (key === \"ArrowDown\" || key === \"ArrowUp\") {\n        var inlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"math-inline\") ||\n            (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"html-entity\") ||\n            (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"html-inline\");\n        if (inlineElement) {\n            if (key === \"ArrowDown\") {\n                range.setStartAfter(inlineElement.parentElement);\n            }\n            if (key === \"ArrowUp\") {\n                range.setStartBefore(inlineElement.parentElement);\n            }\n        }\n    }\n};\nvar insertEmptyBlock = function (vditor, position) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (blockElement) {\n        blockElement.insertAdjacentHTML(position, \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\\n</p>\"));\n        (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        highlightToolbar(vditor);\n        execAfterRender(vditor);\n    }\n};\nvar isFirstCell = function (cellElement) {\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(cellElement, \"TABLE\");\n    if (tableElement && tableElement.rows[0].cells[0].isSameNode(cellElement)) {\n        return tableElement;\n    }\n    return false;\n};\nvar isLastCell = function (cellElement) {\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(cellElement, \"TABLE\");\n    if (tableElement && tableElement.lastElementChild.lastElementChild.lastElementChild.isSameNode(cellElement)) {\n        return tableElement;\n    }\n    return false;\n};\n// 光标设置到前一个表格中\nvar goPreviousCell = function (cellElement, range, isSelected) {\n    if (isSelected === void 0) { isSelected = true; }\n    var previousElement = cellElement.previousElementSibling;\n    if (!previousElement) {\n        if (cellElement.parentElement.previousElementSibling) {\n            previousElement = cellElement.parentElement.previousElementSibling.lastElementChild;\n        }\n        else if (cellElement.parentElement.parentElement.tagName === \"TBODY\" &&\n            cellElement.parentElement.parentElement.previousElementSibling) {\n            previousElement = cellElement.parentElement\n                .parentElement.previousElementSibling.lastElementChild.lastElementChild;\n        }\n        else {\n            previousElement = null;\n        }\n    }\n    if (previousElement) {\n        range.selectNodeContents(previousElement);\n        if (!isSelected) {\n            range.collapse(false);\n        }\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n    }\n    return previousElement;\n};\nvar insertAfterBlock = function (vditor, event, range, element, blockElement) {\n    var position = (0,util_selection/* getSelectPosition */.im)(element, vditor[vditor.currentMode].element, range);\n    if ((event.key === \"ArrowDown\" && element.textContent.trimRight().substr(position.start).indexOf(\"\\n\") === -1) ||\n        (event.key === \"ArrowRight\" && position.start >= element.textContent.trimRight().length)) {\n        var nextElement = blockElement.nextElementSibling;\n        if (!nextElement ||\n            (nextElement && (nextElement.tagName === \"TABLE\" || nextElement.getAttribute(\"data-type\")))) {\n            blockElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        }\n        else {\n            range.selectNodeContents(nextElement);\n            range.collapse(true);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar insertBeforeBlock = function (vditor, event, range, element, blockElement) {\n    var position = (0,util_selection/* getSelectPosition */.im)(element, vditor[vditor.currentMode].element, range);\n    if ((event.key === \"ArrowUp\" && element.textContent.substr(0, position.start).indexOf(\"\\n\") === -1) ||\n        ((event.key === \"ArrowLeft\" || (event.key === \"Backspace\" && range.toString() === \"\")) &&\n            position.start === 0)) {\n        var previousElement = blockElement.previousElementSibling;\n        // table || code\n        if (!previousElement ||\n            (previousElement && (previousElement.tagName === \"TABLE\" || previousElement.getAttribute(\"data-type\")))) {\n            blockElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        }\n        else {\n            range.selectNodeContents(previousElement);\n            range.collapse(false);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar listToggle = function (vditor, range, type, cancel) {\n    if (cancel === void 0) { cancel = true; }\n    var itemElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n    vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n        wbr.remove();\n    });\n    range.insertNode(document.createElement(\"wbr\"));\n    if (cancel && itemElement) {\n        // 取消\n        var pHTML = \"\";\n        for (var i = 0; i < itemElement.parentElement.childElementCount; i++) {\n            var inputElement = itemElement.parentElement.children[i].querySelector(\"input\");\n            if (inputElement) {\n                inputElement.remove();\n            }\n            pHTML += \"<p data-block=\\\"0\\\">\".concat(itemElement.parentElement.children[i].innerHTML.trimLeft(), \"</p>\");\n        }\n        itemElement.parentElement.insertAdjacentHTML(\"beforebegin\", pHTML);\n        itemElement.parentElement.remove();\n    }\n    else {\n        if (!itemElement) {\n            // 添加\n            var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n            if (!blockElement) {\n                vditor[vditor.currentMode].element.querySelector(\"wbr\").remove();\n                blockElement = vditor[vditor.currentMode].element.querySelector(\"p\");\n                blockElement.innerHTML = \"<wbr>\";\n            }\n            if (type === \"check\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ul data-block=\\\"0\\\"><li class=\\\"vditor-task\\\"><input type=\\\"checkbox\\\" /> \".concat(blockElement.innerHTML, \"</li></ul>\"));\n                blockElement.remove();\n            }\n            else if (type === \"list\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ul data-block=\\\"0\\\"><li>\".concat(blockElement.innerHTML, \"</li></ul>\"));\n                blockElement.remove();\n            }\n            else if (type === \"ordered-list\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ol data-block=\\\"0\\\"><li>\".concat(blockElement.innerHTML, \"</li></ol>\"));\n                blockElement.remove();\n            }\n        }\n        else {\n            // 切换\n            if (type === \"check\") {\n                itemElement.parentElement.querySelectorAll(\"li\").forEach(function (item) {\n                    item.insertAdjacentHTML(\"afterbegin\", \"<input type=\\\"checkbox\\\" />\".concat(item.textContent.indexOf(\" \") === 0 ? \"\" : \" \"));\n                    item.classList.add(\"vditor-task\");\n                });\n            }\n            else {\n                if (itemElement.querySelector(\"input\")) {\n                    itemElement.parentElement.querySelectorAll(\"li\").forEach(function (item) {\n                        item.querySelector(\"input\").remove();\n                        item.classList.remove(\"vditor-task\");\n                    });\n                }\n                var element = void 0;\n                if (type === \"list\") {\n                    element = document.createElement(\"ul\");\n                    element.setAttribute(\"data-marker\", \"*\");\n                }\n                else {\n                    element = document.createElement(\"ol\");\n                    element.setAttribute(\"data-marker\", \"1.\");\n                }\n                element.setAttribute(\"data-block\", \"0\");\n                element.setAttribute(\"data-tight\", itemElement.parentElement.getAttribute(\"data-tight\"));\n                element.innerHTML = itemElement.parentElement.innerHTML;\n                itemElement.parentElement.parentNode.replaceChild(element, itemElement.parentElement);\n            }\n        }\n    }\n};\nvar listIndent = function (vditor, liElement, range) {\n    var previousElement = liElement.previousElementSibling;\n    if (liElement && previousElement) {\n        var liElements_1 = [liElement];\n        Array.from(range.cloneContents().children).forEach(function (item, index) {\n            if (item.nodeType !== 3 && liElement && item.textContent.trim() !== \"\"\n                && liElement.getAttribute(\"data-node-id\") === item.getAttribute(\"data-node-id\")) {\n                if (index !== 0) {\n                    liElements_1.push(liElement);\n                }\n                liElement = liElement.nextElementSibling;\n            }\n        });\n        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        var liParentElement = previousElement.parentElement;\n        var liHTML_1 = \"\";\n        liElements_1.forEach(function (item) {\n            var marker = item.getAttribute(\"data-marker\");\n            if (marker.length !== 1) {\n                marker = \"1\".concat(marker.slice(-1));\n            }\n            liHTML_1 += \"<li data-node-id=\\\"\".concat(item.getAttribute(\"data-node-id\"), \"\\\" data-marker=\\\"\").concat(marker, \"\\\">\").concat(item.innerHTML, \"</li>\");\n            item.remove();\n        });\n        previousElement.insertAdjacentHTML(\"beforeend\", \"<\".concat(liParentElement.tagName, \" data-block=\\\"0\\\">\").concat(liHTML_1, \"</\").concat(liParentElement.tagName, \">\"));\n        if (vditor.currentMode === \"wysiwyg\") {\n            liParentElement.outerHTML = vditor.lute.SpinVditorDOM(liParentElement.outerHTML);\n        }\n        else {\n            liParentElement.outerHTML = vditor.lute.SpinVditorIRDOM(liParentElement.outerHTML);\n        }\n        (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        var tempTopListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (tempTopListElement) {\n            tempTopListElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (item) {\n                processCodeRender(item, vditor);\n                if (vditor.currentMode === \"wysiwyg\") {\n                    item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n            });\n        }\n        execAfterRender(vditor);\n        highlightToolbar(vditor);\n    }\n    else {\n        vditor[vditor.currentMode].element.focus();\n    }\n};\nvar listOutdent = function (vditor, liElement, range, topListElement) {\n    var liParentLiElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(liElement.parentElement, \"LI\");\n    if (liParentLiElement) {\n        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        var liParentElement = liElement.parentElement;\n        var liParentAfterElement = liParentElement.cloneNode();\n        var liElements_2 = [liElement];\n        Array.from(range.cloneContents().children).forEach(function (item, index) {\n            if (item.nodeType !== 3 && liElement && item.textContent.trim() !== \"\" &&\n                liElement.getAttribute(\"data-node-id\") === item.getAttribute(\"data-node-id\")) {\n                if (index !== 0) {\n                    liElements_2.push(liElement);\n                }\n                liElement = liElement.nextElementSibling;\n            }\n        });\n        var isMatch_1 = false;\n        var afterHTML_1 = \"\";\n        liParentElement.querySelectorAll(\"li\").forEach(function (item) {\n            if (isMatch_1) {\n                afterHTML_1 += item.outerHTML;\n                if (!item.nextElementSibling && !item.previousElementSibling) {\n                    item.parentElement.remove();\n                }\n                else {\n                    item.remove();\n                }\n            }\n            if (item.isSameNode(liElements_2[liElements_2.length - 1])) {\n                isMatch_1 = true;\n            }\n        });\n        liElements_2.reverse().forEach(function (item) {\n            liParentLiElement.insertAdjacentElement(\"afterend\", item);\n        });\n        if (afterHTML_1) {\n            liParentAfterElement.innerHTML = afterHTML_1;\n            liElements_2[0].insertAdjacentElement(\"beforeend\", liParentAfterElement);\n        }\n        if (vditor.currentMode === \"wysiwyg\") {\n            topListElement.outerHTML = vditor.lute.SpinVditorDOM(topListElement.outerHTML);\n        }\n        else {\n            topListElement.outerHTML = vditor.lute.SpinVditorIRDOM(topListElement.outerHTML);\n        }\n        (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        var tempTopListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (tempTopListElement) {\n            tempTopListElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (item) {\n                processCodeRender(item, vditor);\n                if (vditor.currentMode === \"wysiwyg\") {\n                    item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n            });\n        }\n        execAfterRender(vditor);\n        highlightToolbar(vditor);\n    }\n    else {\n        vditor[vditor.currentMode].element.focus();\n    }\n};\nvar setTableAlign = function (tableElement, type) {\n    var cell = getSelection().getRangeAt(0).startContainer.parentElement;\n    var columnCnt = tableElement.rows[0].cells.length;\n    var rowCnt = tableElement.rows.length;\n    var currentColumn = 0;\n    for (var i = 0; i < rowCnt; i++) {\n        for (var j = 0; j < columnCnt; j++) {\n            if (tableElement.rows[i].cells[j].isSameNode(cell)) {\n                currentColumn = j;\n                break;\n            }\n        }\n    }\n    for (var k = 0; k < rowCnt; k++) {\n        tableElement.rows[k].cells[currentColumn].setAttribute(\"align\", type);\n    }\n};\nvar isHrMD = function (text) {\n    // - _ *\n    var marker = text.trimRight().split(\"\\n\").pop();\n    if (marker === \"\") {\n        return false;\n    }\n    if (marker.replace(/ |-/g, \"\") === \"\"\n        || marker.replace(/ |_/g, \"\") === \"\"\n        || marker.replace(/ |\\*/g, \"\") === \"\") {\n        if (marker.replace(/ /g, \"\").length > 2) {\n            if (marker.indexOf(\"-\") > -1 && marker.trimLeft().indexOf(\" \") === -1\n                && text.trimRight().split(\"\\n\").length > 1) {\n                // 满足 heading\n                return false;\n            }\n            if (marker.indexOf(\"    \") === 0 || marker.indexOf(\"\\t\") === 0) {\n                // 代码块\n                return false;\n            }\n            return true;\n        }\n        return false;\n    }\n    return false;\n};\nvar isHeadingMD = function (text) {\n    // - =\n    var textArray = text.trimRight().split(\"\\n\");\n    text = textArray.pop();\n    if (text.indexOf(\"    \") === 0 || text.indexOf(\"\\t\") === 0) {\n        return false;\n    }\n    text = text.trimLeft();\n    if (text === \"\" || textArray.length === 0) {\n        return false;\n    }\n    if (text.replace(/-/g, \"\") === \"\"\n        || text.replace(/=/g, \"\") === \"\") {\n        return true;\n    }\n    return false;\n};\nvar execAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (vditor.currentMode === \"wysiwyg\") {\n        afterRenderEvent(vditor, options);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        process_processAfterRender(vditor, options);\n    }\n    else if (vditor.currentMode === \"sv\") {\n        processAfterRender(vditor, options);\n    }\n};\nvar fixList = function (range, vditor, pElement, event) {\n    var _a;\n    var startContainer = range.startContainer;\n    var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"LI\");\n    if (liElement) {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\" &&\n            // fix li 中有多个 P 时，在第一个 P 中换行会在下方生成新的 li\n            (!event.shiftKey && pElement && liElement.contains(pElement) && pElement.nextElementSibling)) {\n            if (liElement && !liElement.textContent.endsWith(\"\\n\")) {\n                // li 结尾需 \\n\n                liElement.insertAdjacentText(\"beforeend\", \"\\n\");\n            }\n            range.insertNode(document.createTextNode(\"\\n\\n\"));\n            range.collapse(false);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\" &&\n            !liElement.previousElementSibling && range.toString() === \"\" &&\n            (0,util_selection/* getSelectPosition */.im)(liElement, vditor[vditor.currentMode].element, range).start === 0) {\n            // 光标位于点和第一个字符中间时，无法删除 li 元素\n            if (liElement.nextElementSibling) {\n                liElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\"><wbr>\".concat(liElement.innerHTML, \"</p>\"));\n                liElement.remove();\n            }\n            else {\n                liElement.parentElement.outerHTML = \"<p data-block=\\\"0\\\"><wbr>\".concat(liElement.innerHTML, \"</p>\");\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // 空列表删除后与上一级段落对齐\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\" &&\n            liElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" &&\n            range.toString() === \"\" && ((_a = liElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.tagName) === \"LI\") {\n            liElement.previousElementSibling.insertAdjacentText(\"beforeend\", \"\\n\\n\");\n            range.selectNodeContents(liElement.previousElementSibling);\n            range.collapse(false);\n            liElement.remove();\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Tab\") {\n            // 光标位于第一/零字符时，tab 用于列表的缩进\n            var isFirst = false;\n            if (range.startOffset === 0\n                && ((startContainer.nodeType === 3 && !startContainer.previousSibling)\n                    || (startContainer.nodeType !== 3 && startContainer.nodeName === \"LI\"))) {\n                // 有序/无序列表\n                isFirst = true;\n            }\n            else if (liElement.classList.contains(\"vditor-task\") && range.startOffset === 1\n                && startContainer.previousSibling.nodeType !== 3\n                && startContainer.previousSibling.tagName === \"INPUT\") {\n                // 任务列表\n                isFirst = true;\n            }\n            if (isFirst || range.toString() !== \"\") {\n                if (event.shiftKey) {\n                    listOutdent(vditor, liElement, range, liElement.parentElement);\n                }\n                else {\n                    listIndent(vditor, liElement, range);\n                }\n                event.preventDefault();\n                return true;\n            }\n        }\n    }\n    return false;\n};\n// tab 处理: block code render, table, 列表第一个字符中的 tab 处理单独写在上面\nvar fixTab = function (vditor, range, event) {\n    if (vditor.options.tab && event.key === \"Tab\") {\n        if (event.shiftKey) {\n            // TODO shift+tab\n        }\n        else {\n            if (range.toString() === \"\") {\n                range.insertNode(document.createTextNode(vditor.options.tab));\n                range.collapse(false);\n            }\n            else {\n                range.extractContents();\n                range.insertNode(document.createTextNode(vditor.options.tab));\n                range.collapse(false);\n            }\n        }\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        execAfterRender(vditor);\n        event.preventDefault();\n        return true;\n    }\n};\nvar fixMarkdown = function (event, vditor, pElement, range) {\n    if (!pElement) {\n        return;\n    }\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n        var pText = String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\", \"\"], [\"\", \"\"])), pElement.textContent).replace(/\\\\\\|/g, \"\").trim();\n        var pTextList = pText.split(\"|\");\n        if (pText.startsWith(\"|\") && pText.endsWith(\"|\") && pTextList.length > 3) {\n            // table 自动完成\n            var tableHeaderMD = pTextList.map(function () { return \"---\"; }).join(\"|\");\n            tableHeaderMD =\n                pElement.textContent + \"\\n\" + tableHeaderMD.substring(3, tableHeaderMD.length - 3) + \"\\n|<wbr>\";\n            pElement.outerHTML = vditor.lute.SpinVditorDOM(tableHeaderMD);\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // hr 渲染\n        if (isHrMD(pElement.innerHTML) && pElement.previousElementSibling) {\n            // 软换行后 hr 前有内容\n            var pInnerHTML = \"\";\n            var innerHTMLList = pElement.innerHTML.trimRight().split(\"\\n\");\n            if (innerHTMLList.length > 1) {\n                innerHTMLList.pop();\n                pInnerHTML = \"<p data-block=\\\"0\\\">\".concat(innerHTMLList.join(\"\\n\"), \"</p>\");\n            }\n            pElement.insertAdjacentHTML(\"afterend\", \"\".concat(pInnerHTML, \"<hr data-block=\\\"0\\\"><p data-block=\\\"0\\\"><wbr>\\n</p>\"));\n            pElement.remove();\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (isHeadingMD(pElement.innerHTML)) {\n            // heading 渲染\n            if (vditor.currentMode === \"wysiwyg\") {\n                pElement.outerHTML = vditor.lute.SpinVditorDOM(pElement.innerHTML + '<p data-block=\"0\"><wbr>\\n</p>');\n            }\n            else {\n                pElement.outerHTML = vditor.lute.SpinVditorIRDOM(pElement.innerHTML + '<p data-block=\"0\"><wbr>\\n</p>');\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 软换行会被切割 https://github.com/Vanessa219/vditor/issues/220\n    if (range.collapsed && pElement.previousElementSibling && event.key === \"Backspace\" &&\n        !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey &&\n        pElement.textContent.trimRight().split(\"\\n\").length > 1 &&\n        (0,util_selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start === 0) {\n        var lastElement = (0,hasClosest/* getLastNode */.DX)(pElement.previousElementSibling);\n        if (!lastElement.textContent.endsWith(\"\\n\")) {\n            lastElement.textContent = lastElement.textContent + \"\\n\";\n        }\n        lastElement.parentElement.insertAdjacentHTML(\"beforeend\", \"<wbr>\".concat(pElement.innerHTML));\n        pElement.remove();\n        (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        return false;\n    }\n    return false;\n};\nvar insertRow = function (vditor, range, cellElement) {\n    var rowHTML = \"\";\n    for (var m = 0; m < cellElement.parentElement.childElementCount; m++) {\n        rowHTML += \"<td align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </td>\");\n    }\n    if (cellElement.tagName === \"TH\") {\n        cellElement.parentElement.parentElement.insertAdjacentHTML(\"afterend\", \"<tbody><tr>\".concat(rowHTML, \"</tr></tbody>\"));\n    }\n    else {\n        cellElement.parentElement.insertAdjacentHTML(\"afterend\", \"<tr>\".concat(rowHTML, \"</tr>\"));\n    }\n    execAfterRender(vditor);\n};\nvar insertRowAbove = function (vditor, range, cellElement) {\n    var rowHTML = \"\";\n    for (var m = 0; m < cellElement.parentElement.childElementCount; m++) {\n        if (cellElement.tagName === \"TH\") {\n            rowHTML += \"<th align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </th>\");\n        }\n        else {\n            rowHTML += \"<td align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </td>\");\n        }\n    }\n    if (cellElement.tagName === \"TH\") {\n        cellElement.parentElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<thead><tr>\".concat(rowHTML, \"</tr></thead>\"));\n        range.insertNode(document.createElement(\"wbr\"));\n        var theadHTML = cellElement.parentElement.innerHTML.replace(/<th>/g, \"<td>\").replace(/<\\/th>/g, \"</td>\");\n        cellElement.parentElement.parentElement.nextElementSibling.insertAdjacentHTML(\"afterbegin\", theadHTML);\n        cellElement.parentElement.parentElement.remove();\n        (0,util_selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    }\n    else {\n        cellElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<tr>\".concat(rowHTML, \"</tr>\"));\n    }\n    execAfterRender(vditor);\n};\nvar insertColumn = function (vditor, tableElement, cellElement, type) {\n    if (type === void 0) { type = \"afterend\"; }\n    var index = 0;\n    var previousElement = cellElement.previousElementSibling;\n    while (previousElement) {\n        index++;\n        previousElement = previousElement.previousElementSibling;\n    }\n    for (var i = 0; i < tableElement.rows.length; i++) {\n        if (i === 0) {\n            tableElement.rows[i].cells[index].insertAdjacentHTML(type, \"<th> </th>\");\n        }\n        else {\n            tableElement.rows[i].cells[index].insertAdjacentHTML(type, \"<td> </td>\");\n        }\n    }\n    execAfterRender(vditor);\n};\nvar deleteRow = function (vditor, range, cellElement) {\n    if (cellElement.tagName === \"TD\") {\n        var tbodyElement = cellElement.parentElement.parentElement;\n        if (cellElement.parentElement.previousElementSibling) {\n            range.selectNodeContents(cellElement.parentElement.previousElementSibling.lastElementChild);\n        }\n        else {\n            range.selectNodeContents(tbodyElement.previousElementSibling.lastElementChild.lastElementChild);\n        }\n        if (tbodyElement.childElementCount === 1) {\n            tbodyElement.remove();\n        }\n        else {\n            cellElement.parentElement.remove();\n        }\n        range.collapse(false);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        execAfterRender(vditor);\n    }\n};\nvar deleteColumn = function (vditor, range, tableElement, cellElement) {\n    var index = 0;\n    var previousElement = cellElement.previousElementSibling;\n    while (previousElement) {\n        index++;\n        previousElement = previousElement.previousElementSibling;\n    }\n    if (cellElement.previousElementSibling || cellElement.nextElementSibling) {\n        range.selectNodeContents(cellElement.previousElementSibling || cellElement.nextElementSibling);\n        range.collapse(true);\n    }\n    for (var i = 0; i < tableElement.rows.length; i++) {\n        var cells = tableElement.rows[i].cells;\n        if (cells.length === 1) {\n            tableElement.remove();\n            highlightToolbar(vditor);\n            break;\n        }\n        cells[index].remove();\n    }\n    (0,util_selection/* setSelectionFocus */.Hc)(range);\n    execAfterRender(vditor);\n};\nvar fixTable = function (vditor, event, range) {\n    var startContainer = range.startContainer;\n    var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n    if (cellElement) {\n        // 换行或软换行：在 cell 中添加 br\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n            if (!cellElement.lastElementChild ||\n                (cellElement.lastElementChild && (!cellElement.lastElementChild.isSameNode(cellElement.lastChild) ||\n                    cellElement.lastElementChild.tagName !== \"BR\"))) {\n                cellElement.insertAdjacentHTML(\"beforeend\", \"<br>\");\n            }\n            var brElement = document.createElement(\"br\");\n            range.insertNode(brElement);\n            range.setStartAfter(brElement);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // tab：光标移向下一个 cell\n        if (event.key === \"Tab\") {\n            if (event.shiftKey) {\n                // shift + tab 光标移动到前一个 cell\n                goPreviousCell(cellElement, range);\n                event.preventDefault();\n                return true;\n            }\n            var nextElement = cellElement.nextElementSibling;\n            if (!nextElement) {\n                if (cellElement.parentElement.nextElementSibling) {\n                    nextElement = cellElement.parentElement.nextElementSibling.firstElementChild;\n                }\n                else if (cellElement.parentElement.parentElement.tagName === \"THEAD\" &&\n                    cellElement.parentElement.parentElement.nextElementSibling) {\n                    nextElement =\n                        cellElement.parentElement.parentElement.nextElementSibling.firstElementChild.firstElementChild;\n                }\n                else {\n                    nextElement = null;\n                }\n            }\n            if (nextElement) {\n                range.selectNodeContents(nextElement);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n            event.preventDefault();\n            return true;\n        }\n        var tableElement = cellElement.parentElement.parentElement.parentElement;\n        if (event.key === \"ArrowUp\") {\n            event.preventDefault();\n            if (cellElement.tagName === \"TH\") {\n                if (tableElement.previousElementSibling) {\n                    range.selectNodeContents(tableElement.previousElementSibling);\n                    range.collapse(false);\n                    (0,util_selection/* setSelectionFocus */.Hc)(range);\n                }\n                else {\n                    insertEmptyBlock(vditor, \"beforebegin\");\n                }\n                return true;\n            }\n            var m = 0;\n            var trElement = cellElement.parentElement;\n            for (; m < trElement.cells.length; m++) {\n                if (trElement.cells[m].isSameNode(cellElement)) {\n                    break;\n                }\n            }\n            var previousElement = trElement.previousElementSibling;\n            if (!previousElement) {\n                previousElement = trElement.parentElement.previousElementSibling.firstChild;\n            }\n            range.selectNodeContents(previousElement.cells[m]);\n            range.collapse(false);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        if (event.key === \"ArrowDown\") {\n            event.preventDefault();\n            var trElement = cellElement.parentElement;\n            if (!trElement.nextElementSibling && cellElement.tagName === \"TD\") {\n                if (tableElement.nextElementSibling) {\n                    range.selectNodeContents(tableElement.nextElementSibling);\n                    range.collapse(true);\n                    (0,util_selection/* setSelectionFocus */.Hc)(range);\n                }\n                else {\n                    insertEmptyBlock(vditor, \"afterend\");\n                }\n                return true;\n            }\n            var m = 0;\n            for (; m < trElement.cells.length; m++) {\n                if (trElement.cells[m].isSameNode(cellElement)) {\n                    break;\n                }\n            }\n            var nextElement = trElement.nextElementSibling;\n            if (!nextElement) {\n                nextElement = trElement.parentElement.nextElementSibling.firstChild;\n            }\n            range.selectNodeContents(nextElement.cells[m]);\n            range.collapse(true);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        // focus row input, only wysiwyg\n        if (vditor.currentMode === \"wysiwyg\" &&\n            !(0,compatibility/* isCtrl */.yl)(event) && event.key === \"Enter\" && !event.shiftKey && event.altKey) {\n            var inputElement = vditor.wysiwyg.popover.querySelector(\".vditor-input\");\n            inputElement.focus();\n            inputElement.select();\n            event.preventDefault();\n            return true;\n        }\n        // Backspace：光标移动到前一个 cell\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\"\n            && range.startOffset === 0 && range.toString() === \"\") {\n            var previousCellElement = goPreviousCell(cellElement, range, false);\n            if (!previousCellElement && tableElement) {\n                if (tableElement.textContent.trim() === \"\") {\n                    tableElement.outerHTML = \"<p data-block=\\\"0\\\"><wbr>\\n</p>\";\n                    (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                }\n                else {\n                    range.setStartBefore(tableElement);\n                    range.collapse(true);\n                }\n                execAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // 上方新添加一行\n        if (matchHotKey(\"⇧⌘F\", event)) {\n            insertRowAbove(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 下方新添加一行 https://github.com/Vanessa219/vditor/issues/46\n        if (matchHotKey(\"⌘=\", event)) {\n            insertRow(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 左方新添加一列\n        if (matchHotKey(\"⇧⌘G\", event)) {\n            insertColumn(vditor, tableElement, cellElement, \"beforebegin\");\n            event.preventDefault();\n            return true;\n        }\n        // 后方新添加一列\n        if (matchHotKey(\"⇧⌘=\", event)) {\n            insertColumn(vditor, tableElement, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 删除当前行\n        if (matchHotKey(\"⌘-\", event)) {\n            deleteRow(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 删除当前列\n        if (matchHotKey(\"⇧⌘-\", event)) {\n            deleteColumn(vditor, range, tableElement, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 剧左\n        if (matchHotKey(\"⇧⌘L\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"left\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"left\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n        // 剧中\n        if (matchHotKey(\"⇧⌘C\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"center\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"center\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n        // 剧右\n        if (matchHotKey(\"⇧⌘R\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"right\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"right\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n};\nvar fixCodeBlock = function (vditor, event, codeRenderElement, range) {\n    // 行级代码块中 command + a，近对当前代码块进行全选\n    if (codeRenderElement.tagName === \"PRE\" && matchHotKey(\"⌘A\", event)) {\n        range.selectNodeContents(codeRenderElement.firstElementChild);\n        event.preventDefault();\n        return true;\n    }\n    // tab\n    // TODO shift + tab, shift and 选中文字\n    if (vditor.options.tab && event.key === \"Tab\" && !event.shiftKey && range.toString() === \"\") {\n        range.insertNode(document.createTextNode(vditor.options.tab));\n        range.collapse(false);\n        execAfterRender(vditor);\n        event.preventDefault();\n        return true;\n    }\n    // Backspace: 光标位于第零个字符，仅删除代码块标签\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey) {\n        var codePosition = (0,util_selection/* getSelectPosition */.im)(codeRenderElement, vditor[vditor.currentMode].element, range);\n        if ((codePosition.start === 0 ||\n            (codePosition.start === 1 && codeRenderElement.innerText === \"\\n\")) // 空代码块，光标在 \\n 后\n            && range.toString() === \"\") {\n            codeRenderElement.parentElement.outerHTML =\n                \"<p data-block=\\\"0\\\"><wbr>\".concat(codeRenderElement.firstElementChild.innerHTML, \"</p>\");\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 换行\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n        if (!codeRenderElement.firstElementChild.textContent.endsWith(\"\\n\")) {\n            codeRenderElement.firstElementChild.insertAdjacentText(\"beforeend\", \"\\n\");\n        }\n        range.extractContents();\n        range.insertNode(document.createTextNode(\"\\n\"));\n        range.collapse(false);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        if (!(0,compatibility/* isFirefox */.vU)()) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                input_input(vditor, range);\n            }\n            else {\n                input(vditor, range);\n            }\n        }\n        scrollCenter(vditor);\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar fixBlockquote = function (vditor, range, event, pElement) {\n    var startContainer = range.startContainer;\n    var blockquoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"BLOCKQUOTE\");\n    if (blockquoteElement && range.toString() === \"\") {\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey &&\n            (0,util_selection/* getSelectPosition */.im)(blockquoteElement, vditor[vditor.currentMode].element, range).start === 0) {\n            // Backspace: 光标位于引用中的第零个字符，仅删除引用标签\n            range.insertNode(document.createElement(\"wbr\"));\n            blockquoteElement.outerHTML = blockquoteElement.innerHTML;\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (pElement && event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey\n            && pElement.parentElement.tagName === \"BLOCKQUOTE\") {\n            // Enter: 空行回车应逐层跳出\n            var isEmpty = false;\n            if (pElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\\n\" ||\n                pElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                // 空 P\n                isEmpty = true;\n                pElement.remove();\n            }\n            else if (pElement.innerHTML.endsWith(\"\\n\\n\") &&\n                (0,util_selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start ===\n                    pElement.textContent.length - 1) {\n                // 软换行\n                pElement.innerHTML = pElement.innerHTML.substr(0, pElement.innerHTML.length - 2);\n                isEmpty = true;\n            }\n            if (isEmpty) {\n                // 需添加零宽字符，否则的话无法记录 undo\n                blockquoteElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\\n</p>\"));\n                (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n        if (vditor.currentMode === \"wysiwyg\" && blockElement && matchHotKey(\"⇧⌘;\", event)) {\n            // 插入 blockquote\n            range.insertNode(document.createElement(\"wbr\"));\n            blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            afterRenderEvent(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (insertAfterBlock(vditor, event, range, blockquoteElement, blockquoteElement)) {\n            return true;\n        }\n        if (insertBeforeBlock(vditor, event, range, blockquoteElement, blockquoteElement)) {\n            return true;\n        }\n    }\n    return false;\n};\nvar fixTask = function (vditor, range, event) {\n    var startContainer = range.startContainer;\n    var taskItemElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"LI\");\n    if (taskItemElement && taskItemElement.classList.contains(\"vditor-task\")) {\n        if (matchHotKey(\"⇧⌘J\", event)) {\n            // ctrl + shift: toggle checked\n            var inputElement = taskItemElement.firstElementChild;\n            if (inputElement.checked) {\n                inputElement.removeAttribute(\"checked\");\n            }\n            else {\n                inputElement.setAttribute(\"checked\", \"checked\");\n            }\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // Backspace: 在选择框前进行删除\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\"\n            && range.startOffset === 1\n            && ((startContainer.nodeType === 3 && startContainer.previousSibling &&\n                startContainer.previousSibling.tagName === \"INPUT\")\n                || startContainer.nodeType !== 3)) {\n            var previousElement = taskItemElement.previousElementSibling;\n            taskItemElement.querySelector(\"input\").remove();\n            if (previousElement) {\n                var lastNode = (0,hasClosest/* getLastNode */.DX)(previousElement);\n                lastNode.parentElement.insertAdjacentHTML(\"beforeend\", \"<wbr>\" + taskItemElement.innerHTML.trim());\n                taskItemElement.remove();\n            }\n            else {\n                taskItemElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\"><wbr>\".concat(taskItemElement.innerHTML.trim() || \"\\n\", \"</p>\"));\n                if (taskItemElement.nextElementSibling) {\n                    taskItemElement.remove();\n                }\n                else {\n                    taskItemElement.parentElement.remove();\n                }\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey) {\n            if (taskItemElement.textContent.trim() === \"\") {\n                // 当前任务列表无文字\n                if ((0,hasClosest/* hasClosestByClassName */.fb)(taskItemElement.parentElement, \"vditor-task\")) {\n                    // 为子元素时，需进行反向缩进\n                    var topListElement = (0,hasClosest/* getTopList */.O9)(startContainer);\n                    if (topListElement) {\n                        listOutdent(vditor, taskItemElement, range, topListElement);\n                    }\n                }\n                else {\n                    // 仅有一级任务列表\n                    if (taskItemElement.nextElementSibling) {\n                        // 任务列表下方还有元素，需要使用用段落隔断\n                        var afterHTML_2 = \"\";\n                        var beforeHTML_1 = \"\";\n                        var isAfter_1 = false;\n                        Array.from(taskItemElement.parentElement.children).forEach(function (taskItem) {\n                            if (taskItemElement.isSameNode(taskItem)) {\n                                isAfter_1 = true;\n                            }\n                            else {\n                                if (isAfter_1) {\n                                    afterHTML_2 += taskItem.outerHTML;\n                                }\n                                else {\n                                    beforeHTML_1 += taskItem.outerHTML;\n                                }\n                            }\n                        });\n                        var parentTagName = taskItemElement.parentElement.tagName;\n                        var dataMarker = taskItemElement.parentElement.tagName === \"OL\" ? \"\" : \" data-marker=\\\"\".concat(taskItemElement.parentElement.getAttribute(\"data-marker\"), \"\\\"\");\n                        var startAttribute = \"\";\n                        if (beforeHTML_1) {\n                            startAttribute = taskItemElement.parentElement.tagName === \"UL\" ? \"\" : \" start=\\\"1\\\"\";\n                            beforeHTML_1 = \"<\".concat(parentTagName, \" data-tight=\\\"true\\\"\").concat(dataMarker, \" data-block=\\\"0\\\">\").concat(beforeHTML_1, \"</\").concat(parentTagName, \">\");\n                        }\n                        // <p data-block=\"0\">\\n<wbr></p> => <p data-block=\"0\"><wbr>\\n</p>\n                        // https://github.com/Vanessa219/vditor/issues/430\n                        taskItemElement.parentElement.outerHTML = \"\".concat(beforeHTML_1, \"<p data-block=\\\"0\\\"><wbr>\\n</p><\").concat(parentTagName, \"\\n data-tight=\\\"true\\\"\").concat(dataMarker, \" data-block=\\\"0\\\"\").concat(startAttribute, \">\").concat(afterHTML_2, \"</\").concat(parentTagName, \">\");\n                    }\n                    else {\n                        // 任务列表下方无任务列表元素\n                        taskItemElement.parentElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\"><wbr>\\n</p>\");\n                        if (taskItemElement.parentElement.querySelectorAll(\"li\").length === 1) {\n                            // 任务列表仅有一项时，使用 p 元素替换\n                            taskItemElement.parentElement.remove();\n                        }\n                        else {\n                            // 任务列表有多项时，当前任务列表位于最后一项，移除该任务列表\n                            taskItemElement.remove();\n                        }\n                    }\n                }\n            }\n            else if (startContainer.nodeType !== 3 && range.startOffset === 0 &&\n                startContainer.firstChild.tagName === \"INPUT\") {\n                // 光标位于 input 之前\n                range.setStart(startContainer.childNodes[1], 1);\n            }\n            else {\n                // 当前任务列表有文字，光标后的文字需添加到新任务列表中\n                range.setEndAfter(taskItemElement.lastChild);\n                taskItemElement.insertAdjacentHTML(\"afterend\", \"<li class=\\\"vditor-task\\\" data-marker=\\\"\".concat(taskItemElement.getAttribute(\"data-marker\"), \"\\\"><input type=\\\"checkbox\\\"> <wbr></li>\"));\n                document.querySelector(\"wbr\").after(range.extractContents());\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\nvar fixDelete = function (vditor, range, event, pElement) {\n    if (range.startContainer.nodeType !== 3) {\n        // 光标位于 hr 前，hr 前有内容\n        var rangeElement = range.startContainer.children[range.startOffset];\n        if (rangeElement && rangeElement.tagName === \"HR\") {\n            range.selectNodeContents(rangeElement.previousElementSibling);\n            range.collapse(false);\n            event.preventDefault();\n            return true;\n        }\n    }\n    if (pElement) {\n        var previousElement = pElement.previousElementSibling;\n        if (previousElement && (0,util_selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start === 0 &&\n            (((0,compatibility/* isFirefox */.vU)() && previousElement.tagName === \"HR\") || previousElement.tagName === \"TABLE\")) {\n            if (previousElement.tagName === \"TABLE\") {\n                // table 后删除 https://github.com/Vanessa219/vditor/issues/243\n                var lastCellElement = previousElement.lastElementChild.lastElementChild.lastElementChild;\n                lastCellElement.innerHTML =\n                    lastCellElement.innerHTML.trimLeft() + \"<wbr>\" + pElement.textContent.trim();\n                pElement.remove();\n            }\n            else {\n                // 光标位于 hr 后进行删除\n                previousElement.remove();\n            }\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\nvar fixHR = function (range) {\n    if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.nodeType !== 3 &&\n        range.startContainer.tagName === \"HR\") {\n        range.setStartBefore(range.startContainer);\n    }\n};\n// firefox https://github.com/Vanessa219/vditor/issues/407\nvar fixFirefoxArrowUpTable = function (event, blockElement, range) {\n    var _a, _b;\n    if (!(0,compatibility/* isFirefox */.vU)()) {\n        return false;\n    }\n    if (event.key === \"ArrowUp\" && blockElement && ((_a = blockElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.tagName) === \"TABLE\") {\n        var tableElement = blockElement.previousElementSibling;\n        range.selectNodeContents(tableElement.rows[tableElement.rows.length - 1].lastElementChild);\n        range.collapse(false);\n        event.preventDefault();\n        return true;\n    }\n    if (event.key === \"ArrowDown\" && blockElement && ((_b = blockElement.nextElementSibling) === null || _b === void 0 ? void 0 : _b.tagName) === \"TABLE\") {\n        range.selectNodeContents(blockElement.nextElementSibling.rows[0].cells[0]);\n        range.collapse(true);\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar paste = function (vditor, event, callback) { return fixBrowserBehavior_awaiter(void 0, void 0, void 0, function () {\n    var textHTML, textPlain, files, renderers, renderLinkDest, doc, height, code, codeElement, position, tempElement, fileReader_1, file_1, range, blockElement, range;\n    var _a;\n    return fixBrowserBehavior_generator(this, function (_b) {\n        switch (_b.label) {\n            case 0:\n                if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") !== \"true\") {\n                    return [2 /*return*/];\n                }\n                event.stopPropagation();\n                event.preventDefault();\n                if (\"clipboardData\" in event) {\n                    textHTML = event.clipboardData.getData(\"text/html\");\n                    textPlain = event.clipboardData.getData(\"text/plain\");\n                    files = event.clipboardData.files;\n                }\n                else {\n                    textHTML = event.dataTransfer.getData(\"text/html\");\n                    textPlain = event.dataTransfer.getData(\"text/plain\");\n                    if (event.dataTransfer.types.includes(\"Files\")) {\n                        files = event.dataTransfer.items;\n                    }\n                }\n                renderers = {};\n                renderLinkDest = function (node, entering) {\n                    if (!entering) {\n                        return [\"\", Lute.WalkContinue];\n                    }\n                    if (vditor.options.upload.renderLinkDest) {\n                        return vditor.options.upload.renderLinkDest(vditor, node, entering);\n                    }\n                    var src = node.TokensStr();\n                    if (node.__internal_object__.Parent.Type === 34 && src && src.indexOf(\"file://\") === -1 &&\n                        vditor.options.upload.linkToImgUrl) {\n                        var xhr_1 = new XMLHttpRequest();\n                        xhr_1.open(\"POST\", vditor.options.upload.linkToImgUrl);\n                        if (vditor.options.upload.token) {\n                            xhr_1.setRequestHeader(\"X-Upload-Token\", vditor.options.upload.token);\n                        }\n                        if (vditor.options.upload.withCredentials) {\n                            xhr_1.withCredentials = true;\n                        }\n                        setHeaders(vditor, xhr_1);\n                        xhr_1.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\");\n                        xhr_1.onreadystatechange = function () {\n                            if (xhr_1.readyState === XMLHttpRequest.DONE) {\n                                if (xhr_1.status === 200) {\n                                    var responseText = xhr_1.responseText;\n                                    if (vditor.options.upload.linkToImgFormat) {\n                                        responseText = vditor.options.upload.linkToImgFormat(xhr_1.responseText);\n                                    }\n                                    var responseJSON_1 = JSON.parse(responseText);\n                                    if (responseJSON_1.code !== 0) {\n                                        vditor.tip.show(responseJSON_1.msg);\n                                        return;\n                                    }\n                                    var original_1 = responseJSON_1.data.originalURL;\n                                    if (vditor.currentMode === \"sv\") {\n                                        vditor.sv.element.querySelectorAll(\".vditor-sv__marker--link\")\n                                            .forEach(function (item) {\n                                            if (item.textContent === original_1) {\n                                                item.textContent = responseJSON_1.data.url;\n                                            }\n                                        });\n                                    }\n                                    else {\n                                        var imgElement = vditor[vditor.currentMode].element.querySelector(\"img[src=\\\"\".concat(original_1, \"\\\"]\"));\n                                        imgElement.src = responseJSON_1.data.url;\n                                        if (vditor.currentMode === \"ir\") {\n                                            imgElement.previousElementSibling.previousElementSibling.innerHTML =\n                                                responseJSON_1.data.url;\n                                        }\n                                    }\n                                    execAfterRender(vditor);\n                                }\n                                else {\n                                    vditor.tip.show(xhr_1.responseText);\n                                }\n                                if (vditor.options.upload.linkToImgCallback) {\n                                    vditor.options.upload.linkToImgCallback(xhr_1.responseText);\n                                }\n                            }\n                        };\n                        xhr_1.send(JSON.stringify({ url: src }));\n                    }\n                    if (vditor.currentMode === \"ir\") {\n                        return [\"<span class=\\\"vditor-ir__marker vditor-ir__marker--link\\\">\".concat(Lute.EscapeHTMLStr(src), \"</span>\"), Lute.WalkContinue];\n                    }\n                    else if (vditor.currentMode === \"wysiwyg\") {\n                        return [\"\", Lute.WalkContinue];\n                    }\n                    else {\n                        return [\"<span class=\\\"vditor-sv__marker--link\\\">\".concat(Lute.EscapeHTMLStr(src), \"</span>\"), Lute.WalkContinue];\n                    }\n                };\n                // 浏览器地址栏拷贝处理\n                if (textHTML.replace(/&amp;/g, \"&\").replace(/<(|\\/)(html|body|meta)[^>]*?>/ig, \"\").trim() ===\n                    \"<a href=\\\"\".concat(textPlain, \"\\\">\").concat(textPlain, \"</a>\") ||\n                    textHTML.replace(/&amp;/g, \"&\").replace(/<(|\\/)(html|body|meta)[^>]*?>/ig, \"\").trim() ===\n                        \"<!--StartFragment--><a href=\\\"\".concat(textPlain, \"\\\">\").concat(textPlain, \"</a><!--EndFragment-->\")) {\n                    textHTML = \"\";\n                }\n                doc = new DOMParser().parseFromString(textHTML, \"text/html\");\n                if (doc.body) {\n                    textHTML = doc.body.innerHTML;\n                }\n                textHTML = Lute.Sanitize(textHTML);\n                vditor.wysiwyg.getComments(vditor);\n                height = vditor[vditor.currentMode].element.scrollHeight;\n                code = processPasteCode(textHTML, textPlain, vditor.currentMode);\n                codeElement = vditor.currentMode === \"sv\" ?\n                    (0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"code-block\") :\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"CODE\");\n                if (!codeElement) return [3 /*break*/, 1];\n                // 粘贴在代码位置\n                if (vditor.currentMode === \"sv\") {\n                    document.execCommand(\"insertHTML\", false, textPlain.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"));\n                }\n                else {\n                    position = (0,util_selection/* getSelectPosition */.im)(event.target, vditor[vditor.currentMode].element);\n                    if (codeElement.parentElement.tagName !== \"PRE\") {\n                        // https://github.com/Vanessa219/vditor/issues/463\n                        textPlain += constants/* Constants.ZWSP */.g.ZWSP;\n                    }\n                    codeElement.textContent = codeElement.textContent.substring(0, position.start)\n                        + textPlain + codeElement.textContent.substring(position.end);\n                    (0,util_selection/* setSelectionByPosition */.$j)(position.start + textPlain.length, position.start + textPlain.length, codeElement.parentElement);\n                    if ((_a = codeElement.parentElement) === null || _a === void 0 ? void 0 : _a.nextElementSibling.classList.contains(\"vditor-\".concat(vditor.currentMode, \"__preview\"))) {\n                        codeElement.parentElement.nextElementSibling.innerHTML = codeElement.outerHTML;\n                        processCodeRender(codeElement.parentElement.nextElementSibling, vditor);\n                    }\n                }\n                return [3 /*break*/, 8];\n            case 1:\n                if (!code) return [3 /*break*/, 2];\n                callback.pasteCode(code);\n                return [3 /*break*/, 8];\n            case 2:\n                if (!(textHTML.trim() !== \"\")) return [3 /*break*/, 3];\n                tempElement = document.createElement(\"div\");\n                tempElement.innerHTML = textHTML;\n                tempElement.querySelectorAll(\"[style]\").forEach(function (e) {\n                    e.removeAttribute(\"style\");\n                });\n                tempElement.querySelectorAll(\".vditor-copy\").forEach(function (e) {\n                    e.remove();\n                });\n                if (vditor.currentMode === \"ir\") {\n                    renderers.HTML2VditorIRDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    (0,util_selection/* insertHTML */.oC)(vditor.lute.HTML2VditorIRDOM(tempElement.innerHTML), vditor);\n                }\n                else if (vditor.currentMode === \"wysiwyg\") {\n                    renderers.HTML2VditorDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    (0,util_selection/* insertHTML */.oC)(vditor.lute.HTML2VditorDOM(tempElement.innerHTML), vditor);\n                }\n                else {\n                    renderers.Md2VditorSVDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    processPaste(vditor, vditor.lute.HTML2Md(tempElement.innerHTML).trimRight());\n                }\n                vditor.outline.render(vditor);\n                return [3 /*break*/, 8];\n            case 3:\n                if (!(files.length > 0)) return [3 /*break*/, 7];\n                if (!(vditor.options.upload.url || vditor.options.upload.handler)) return [3 /*break*/, 5];\n                return [4 /*yield*/, uploadFiles(vditor, files)];\n            case 4:\n                _b.sent();\n                return [3 /*break*/, 6];\n            case 5:\n                fileReader_1 = new FileReader();\n                if (\"clipboardData\" in event) {\n                    files = event.clipboardData.files;\n                    file_1 = files[0];\n                }\n                else if (event.dataTransfer.types.includes(\"Files\")) {\n                    files = event.dataTransfer.items;\n                    file_1 = files[0].getAsFile();\n                }\n                if (file_1 && file_1.type.startsWith(\"image\")) {\n                    fileReader_1.readAsDataURL(file_1);\n                    fileReader_1.onload = function () {\n                        var imgHTML = '';\n                        if (vditor.currentMode === \"wysiwyg\") {\n                            imgHTML += \"<img alt=\\\"\".concat(file_1.name, \"\\\" src=\\\"\").concat(fileReader_1.result.toString(), \"\\\">\\n\");\n                        }\n                        else {\n                            imgHTML += \"![\".concat(file_1.name, \"](\").concat(fileReader_1.result.toString(), \")\\n\");\n                        }\n                        document.execCommand(\"insertHTML\", false, imgHTML);\n                    };\n                }\n                _b.label = 6;\n            case 6: return [3 /*break*/, 8];\n            case 7:\n                if (textPlain.trim() !== \"\" && files.length === 0) {\n                    range = (0,util_selection/* getEditorRange */.zh)(vditor);\n                    if (range.toString() !== \"\" && vditor.lute.IsValidLinkDest(textPlain)) {\n                        textPlain = \"[\".concat(range.toString(), \"](\").concat(textPlain, \")\");\n                    }\n                    if (vditor.currentMode === \"ir\") {\n                        renderers.Md2VditorIRDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        (0,util_selection/* insertHTML */.oC)(vditor.lute.Md2VditorIRDOM(textPlain), vditor);\n                    }\n                    else if (vditor.currentMode === \"wysiwyg\") {\n                        renderers.Md2VditorDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        (0,util_selection/* insertHTML */.oC)(vditor.lute.Md2VditorDOM(textPlain), vditor);\n                    }\n                    else {\n                        renderers.Md2VditorSVDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        processPaste(vditor, textPlain);\n                    }\n                    vditor.outline.render(vditor);\n                }\n                _b.label = 8;\n            case 8:\n                if (vditor.currentMode !== \"sv\") {\n                    blockElement = (0,hasClosest/* hasClosestBlock */.F9)((0,util_selection/* getEditorRange */.zh)(vditor).startContainer);\n                    if (blockElement) {\n                        range = (0,util_selection/* getEditorRange */.zh)(vditor);\n                        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n                            wbr.remove();\n                        });\n                        range.insertNode(document.createElement(\"wbr\"));\n                        if (vditor.currentMode === \"wysiwyg\") {\n                            blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n                        }\n                        else {\n                            blockElement.outerHTML = vditor.lute.SpinVditorIRDOM(blockElement.outerHTML);\n                        }\n                        (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                    }\n                    vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                        .forEach(function (item) {\n                        processCodeRender(item, vditor);\n                    });\n                }\n                vditor.wysiwyg.triggerRemoveComment(vditor);\n                execAfterRender(vditor);\n                if (vditor[vditor.currentMode].element.scrollHeight - height >\n                    Math.min(vditor[vditor.currentMode].element.clientHeight, window.innerHeight) / 2) {\n                    scrollCenter(vditor);\n                }\n                return [2 /*return*/];\n        }\n    });\n}); };\nvar templateObject_1;\n\n;// CONCATENATED MODULE: ./src/ts/ir/process.ts\n\n\n\n\n\n\n\n\n\nvar processHint = function (vditor) {\n    var _a, _b;\n    vditor.hint.render(vditor);\n    var startContainer = (0,util_selection/* getEditorRange */.zh)(vditor).startContainer;\n    // 代码块语言提示\n    var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-info\");\n    if (preBeforeElement) {\n        if (preBeforeElement.textContent.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && vditor.hint.recentLanguage) {\n            preBeforeElement.textContent = constants/* Constants.ZWSP */.g.ZWSP + vditor.hint.recentLanguage;\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            range.selectNodeContents(preBeforeElement);\n        }\n        else {\n            var matchLangData_1 = [];\n            var key_1 = preBeforeElement.textContent.substring(0, (0,util_selection/* getSelectPosition */.im)(preBeforeElement, vditor.ir.element).start)\n                .replace(constants/* Constants.ZWSP */.g.ZWSP, \"\");\n            (vditor.options.preview.hljs.langs || constants/* Constants.ALIAS_CODE_LANGUAGES.concat */.g.ALIAS_CODE_LANGUAGES.concat(((_b = (_a = window.hljs) === null || _a === void 0 ? void 0 : _a.listLanguages()) !== null && _b !== void 0 ? _b : []).sort())).forEach(function (keyName) {\n                if (keyName.indexOf(key_1.toLowerCase()) > -1) {\n                    matchLangData_1.push({\n                        html: keyName,\n                        value: keyName,\n                    });\n                }\n            });\n            vditor.hint.genHTML(matchLangData_1, key_1, vditor);\n        }\n    }\n};\nvar process_processAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        processHint(vditor);\n    }\n    clearTimeout(vditor.ir.processTimeoutId);\n    vditor.ir.processTimeoutId = window.setTimeout(function () {\n        if (vditor.ir.composingLock) {\n            return;\n        }\n        var text = getMarkdown(vditor);\n        if (typeof vditor.options.input === \"function\" && options.enableInput) {\n            vditor.options.input(text);\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter.render(vditor, text);\n        }\n        if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n            localStorage.setItem(vditor.options.cache.id, text);\n            if (vditor.options.cache.after) {\n                vditor.options.cache.after(text);\n            }\n        }\n        if (vditor.devtools) {\n            vditor.devtools.renderEchart(vditor);\n        }\n        if (options.enableAddUndoStack) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\nvar process_processHeading = function (vditor, value) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var headingElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer) || range.startContainer;\n    if (headingElement) {\n        var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n        if (headingMarkerElement) {\n            headingMarkerElement.innerHTML = value;\n        }\n        else {\n            headingElement.insertAdjacentText(\"afterbegin\", value);\n            range.selectNodeContents(headingElement);\n            range.collapse(false);\n        }\n        input(vditor, range.cloneRange());\n        highlightToolbarIR(vditor);\n    }\n};\nvar removeInline = function (range, vditor, type) {\n    var inlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", type);\n    if (inlineElement) {\n        inlineElement.firstElementChild.remove();\n        inlineElement.lastElementChild.remove();\n        range.insertNode(document.createElement(\"wbr\"));\n        var tempElement = document.createElement(\"div\");\n        tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(inlineElement.outerHTML);\n        inlineElement.outerHTML = tempElement.firstElementChild.innerHTML.trim();\n    }\n};\nvar process_processToolbar = function (vditor, actionBtn, prefix, suffix) {\n    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    var typeElement = range.startContainer;\n    if (typeElement.nodeType === 3) {\n        typeElement = typeElement.parentElement;\n    }\n    var useHighlight = true;\n    // 移除\n    if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n        if (commandName === \"quote\") {\n            var quoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\");\n            if (quoteElement) {\n                range.insertNode(document.createElement(\"wbr\"));\n                quoteElement.outerHTML = quoteElement.innerHTML.trim() === \"\" ?\n                    \"<p data-block=\\\"0\\\">\".concat(quoteElement.innerHTML, \"</p>\") : quoteElement.innerHTML;\n            }\n        }\n        else if (commandName === \"link\") {\n            var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"a\");\n            if (aElement) {\n                var aTextElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__link\");\n                if (aTextElement) {\n                    range.insertNode(document.createElement(\"wbr\"));\n                    aElement.outerHTML = aTextElement.innerHTML;\n                }\n                else {\n                    aElement.outerHTML = aElement.querySelector(\".vditor-ir__link\").innerHTML + \"<wbr>\";\n                }\n            }\n        }\n        else if (commandName === \"italic\") {\n            removeInline(range, vditor, \"em\");\n        }\n        else if (commandName === \"bold\") {\n            removeInline(range, vditor, \"strong\");\n        }\n        else if (commandName === \"strike\") {\n            removeInline(range, vditor, \"s\");\n        }\n        else if (commandName === \"inline-code\") {\n            removeInline(range, vditor, \"code\");\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName);\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n        }\n    }\n    else {\n        // 添加\n        if (vditor.ir.element.childNodes.length === 0) {\n            vditor.ir.element.innerHTML = '<p data-block=\"0\"><wbr></p>';\n            (0,util_selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n        if (commandName === \"line\") {\n            if (blockElement) {\n                var hrHTML = '<hr data-block=\"0\"><p data-block=\"0\"><wbr>\\n</p>';\n                if (blockElement.innerHTML.trim() === \"\") {\n                    blockElement.outerHTML = hrHTML;\n                }\n                else {\n                    blockElement.insertAdjacentHTML(\"afterend\", hrHTML);\n                }\n            }\n        }\n        else if (commandName === \"quote\") {\n            if (blockElement) {\n                range.insertNode(document.createElement(\"wbr\"));\n                blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n                useHighlight = false;\n                actionBtn.classList.add(\"vditor-menu--current\");\n            }\n        }\n        else if (commandName === \"link\") {\n            var html = void 0;\n            if (range.toString() === \"\") {\n                html = \"\".concat(prefix, \"<wbr>\").concat(suffix);\n            }\n            else {\n                html = \"\".concat(prefix).concat(range.toString()).concat(suffix.replace(\")\", \"<wbr>)\"));\n            }\n            document.execCommand(\"insertHTML\", false, html);\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"italic\" || commandName === \"bold\" || commandName === \"strike\"\n            || commandName === \"inline-code\" || commandName === \"code\" || commandName === \"table\") {\n            var html = void 0;\n            if (range.toString() === \"\") {\n                html = \"\".concat(prefix, \"<wbr>\").concat(suffix);\n            }\n            else {\n                if (commandName === \"code\") {\n                    html = \"\".concat(prefix, \"\\n\").concat(range.toString(), \"<wbr>\").concat(suffix);\n                }\n                else if (commandName === \"table\") {\n                    html = \"\".concat(prefix).concat(range.toString(), \"<wbr>\").concat(suffix);\n                }\n                else {\n                    html = \"\".concat(prefix).concat(range.toString()).concat(suffix, \"<wbr>\");\n                }\n                range.deleteContents();\n            }\n            if (commandName === \"table\" || commandName === \"code\") {\n                html = \"\\n\" + html + \"\\n\\n\";\n            }\n            var spanElement = document.createElement(\"span\");\n            spanElement.innerHTML = html;\n            range.insertNode(spanElement);\n            input(vditor, range);\n            if (commandName === \"table\") {\n                range.selectNodeContents(getSelection().getRangeAt(0).startContainer.parentElement);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName, false);\n            useHighlight = false;\n            removeCurrentToolbar(vditor.toolbar.elements, [\"check\", \"list\", \"ordered-list\"]);\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n    }\n    (0,util_selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    process_processAfterRender(vditor);\n    if (useHighlight) {\n        highlightToolbarIR(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/hint/index.ts\nvar hint_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar hint_generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\nvar Hint = /** @class */ (function () {\n    function Hint(hintExtends) {\n        var _this = this;\n        this.splitChar = \"\";\n        this.lastIndex = -1;\n        this.fillEmoji = function (element, vditor) {\n            _this.element.style.display = \"none\";\n            var value = decodeURIComponent(element.getAttribute(\"data-value\"));\n            var range = window.getSelection().getRangeAt(0);\n            // 代码提示\n            if (vditor.currentMode === \"ir\") {\n                var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"code-block-info\");\n                if (preBeforeElement) {\n                    preBeforeElement.textContent = constants/* Constants.ZWSP */.g.ZWSP + value.trimRight();\n                    range.selectNodeContents(preBeforeElement);\n                    range.collapse(false);\n                    process_processAfterRender(vditor);\n                    preBeforeElement.parentElement.querySelectorAll(\"code\").forEach(function (item) {\n                        item.className = \"language-\" + value.trimRight();\n                    });\n                    processCodeRender(preBeforeElement.parentElement.querySelector(\".vditor-ir__preview\"), vditor);\n                    _this.recentLanguage = value.trimRight();\n                    return;\n                }\n            }\n            if (vditor.currentMode === \"wysiwyg\" && range.startContainer.nodeType !== 3) {\n                var startContainer = range.startContainer;\n                var inputElement = void 0;\n                if (startContainer.classList.contains(\"vditor-input\")) {\n                    inputElement = startContainer;\n                }\n                else {\n                    inputElement = startContainer.firstElementChild;\n                }\n                if (inputElement && inputElement.classList.contains(\"vditor-input\")) {\n                    inputElement.value = value.trimRight();\n                    range.selectNodeContents(inputElement);\n                    range.collapse(false);\n                    // {detail: 1}用于标识这个自定义事件是在编程语言选择后触发的\n                    // 用于在鼠标选择语言后，自动聚焦到代码输入框\n                    inputElement.dispatchEvent(new CustomEvent(\"input\", { detail: 1 }));\n                    _this.recentLanguage = value.trimRight();\n                    return;\n                }\n            }\n            range.setStart(range.startContainer, _this.lastIndex);\n            range.deleteContents();\n            if (vditor.options.hint.parse) {\n                if (vditor.currentMode === \"sv\") {\n                    (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorSVDOM(value), vditor);\n                }\n                else if (vditor.currentMode === \"wysiwyg\") {\n                    (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorDOM(value), vditor);\n                }\n                else {\n                    (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorIRDOM(value), vditor);\n                }\n            }\n            else {\n                (0,util_selection/* insertHTML */.oC)(value, vditor);\n            }\n            if (_this.splitChar === \":\" && value.indexOf(\":\") > -1 && vditor.currentMode !== \"sv\") {\n                range.insertNode(document.createTextNode(\" \"));\n            }\n            range.collapse(false);\n            (0,util_selection/* setSelectionFocus */.Hc)(range);\n            if (vditor.currentMode === \"wysiwyg\") {\n                var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-wysiwyg__block\");\n                if (preElement && preElement.lastElementChild.classList.contains(\"vditor-wysiwyg__preview\")) {\n                    preElement.lastElementChild.innerHTML = preElement.firstElementChild.innerHTML;\n                    processCodeRender(preElement.lastElementChild, vditor);\n                }\n            }\n            else if (vditor.currentMode === \"ir\") {\n                var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__marker--pre\");\n                if (preElement && preElement.nextElementSibling.classList.contains(\"vditor-ir__preview\")) {\n                    preElement.nextElementSibling.innerHTML = preElement.innerHTML;\n                    processCodeRender(preElement.nextElementSibling, vditor);\n                }\n            }\n            execAfterRender(vditor);\n        };\n        this.timeId = -1;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-hint\";\n        this.recentLanguage = \"\";\n        hintExtends.push({ key: \":\" });\n    }\n    Hint.prototype.render = function (vditor) {\n        var _this = this;\n        var _a;\n        if (!window.getSelection().focusNode) {\n            return;\n        }\n        var currentLineValue;\n        var range = getSelection().getRangeAt(0);\n        currentLineValue = range.startContainer.textContent.substring(0, range.startOffset) || \"\";\n        var key = this.getKey(currentLineValue, vditor.options.hint.extend);\n        console.log('1234 :>> ', key, 33, currentLineValue);\n        var isAt = currentLineValue.endsWith('@');\n        if (typeof key === \"undefined\" && !isAt) {\n            this.element.style.display = \"none\";\n            clearTimeout(this.timeId);\n            // 清除下拉框\n            var extend = vditor.options.hint.extend.find(function (el) { return el.key === '@'; });\n            (_a = extend === null || extend === void 0 ? void 0 : extend.callback) === null || _a === void 0 ? void 0 : _a.call(extend, false);\n        }\n        else {\n            if (this.splitChar === \":\") {\n                var emojiHint_1 = key === \"\" ? vditor.options.hint.emoji : vditor.lute.GetEmojis();\n                var matchEmojiData_1 = [];\n                Object.keys(emojiHint_1).forEach(function (keyName) {\n                    if (keyName.indexOf(key.toLowerCase()) === 0) {\n                        if (emojiHint_1[keyName].indexOf(\".\") > -1) {\n                            matchEmojiData_1.push({\n                                html: \"<img src=\\\"\".concat(emojiHint_1[keyName], \"\\\" title=\\\":\").concat(keyName, \":\\\"/> :\").concat(keyName, \":\"),\n                                value: \":\".concat(keyName, \":\"),\n                            });\n                        }\n                        else {\n                            matchEmojiData_1.push({\n                                html: \"<span class=\\\"vditor-hint__emoji\\\">\".concat(emojiHint_1[keyName], \"</span>\").concat(keyName),\n                                value: emojiHint_1[keyName],\n                            });\n                        }\n                    }\n                });\n                this.genHTML(matchEmojiData_1, key, vditor);\n            }\n            else {\n                vditor.options.hint.extend.forEach(function (item) {\n                    if (item.key === _this.splitChar) {\n                        clearTimeout(_this.timeId);\n                        _this.timeId = window.setTimeout(function () { return hint_awaiter(_this, void 0, void 0, function () {\n                            var _a, _b, selection, range_1;\n                            var _this = this;\n                            return hint_generator(this, function (_c) {\n                                switch (_c.label) {\n                                    case 0:\n                                        _a = item.hint;\n                                        if (!_a) return [3 /*break*/, 2];\n                                        _b = this.genHTML;\n                                        return [4 /*yield*/, item.hint(key)];\n                                    case 1:\n                                        _a = _b.apply(this, [_c.sent(), key, vditor]);\n                                        _c.label = 2;\n                                    case 2:\n                                        _a;\n                                        if (item.callback) {\n                                            selection = window.getSelection();\n                                            range_1 = selection.rangeCount > 0 ? selection.getRangeAt(0) : null;\n                                            // key === '' && \n                                            isAt && item.callback(true, function (value) { return _this.insert(value + ' ', range_1, vditor); });\n                                        }\n                                        return [2 /*return*/];\n                                }\n                            });\n                        }); }, vditor.options.hint.delay);\n                    }\n                });\n            }\n        }\n    };\n    Hint.prototype.genHTML = function (data, key, vditor) {\n        var _this = this;\n        if (data.length === 0) {\n            this.element.style.display = \"none\";\n            return;\n        }\n        var editorElement = vditor[vditor.currentMode].element;\n        var textareaPosition = (0,util_selection/* getCursorPosition */.Ny)(editorElement);\n        var x = textareaPosition.left +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0);\n        var y = textareaPosition.top;\n        var hintsHTML = \"\";\n        data.forEach(function (hintData, i) {\n            if (i > 7) {\n                return;\n            }\n            // process high light\n            var html = hintData.html;\n            if (key !== \"\") {\n                var lastIndex = html.lastIndexOf(\">\") + 1;\n                var replaceHtml = html.substr(lastIndex);\n                var replaceIndex = replaceHtml.toLowerCase().indexOf(key.toLowerCase());\n                if (replaceIndex > -1) {\n                    replaceHtml = replaceHtml.substring(0, replaceIndex) + \"<b>\" +\n                        replaceHtml.substring(replaceIndex, replaceIndex + key.length) + \"</b>\" +\n                        replaceHtml.substring(replaceIndex + key.length);\n                    html = html.substr(0, lastIndex) + replaceHtml;\n                }\n            }\n            hintsHTML += \"<button type=\\\"button\\\" data-value=\\\"\".concat(encodeURIComponent(hintData.value), \" \\\"\\n\").concat(i === 0 ? \"class='vditor-hint--current'\" : \"\", \"> \").concat(html, \"</button>\");\n        });\n        this.element.innerHTML = hintsHTML;\n        var lineHeight = parseInt(document.defaultView.getComputedStyle(editorElement, null)\n            .getPropertyValue(\"line-height\"), 10);\n        this.element.style.top = \"\".concat(y + (lineHeight || 22), \"px\");\n        this.element.style.left = \"\".concat(x, \"px\");\n        this.element.style.display = \"block\";\n        this.element.style.right = \"auto\";\n        this.element.querySelectorAll(\"button\").forEach(function (element) {\n            element.addEventListener(\"click\", function (event) {\n                _this.fillEmoji(element, vditor);\n                event.preventDefault();\n            });\n        });\n        // hint 展现在上部\n        if (this.element.getBoundingClientRect().bottom > window.innerHeight) {\n            this.element.style.top = \"\".concat(y - this.element.offsetHeight, \"px\");\n        }\n        if (this.element.getBoundingClientRect().right > window.innerWidth) {\n            this.element.style.left = \"auto\";\n            this.element.style.right = \"0\";\n        }\n    };\n    Hint.prototype.insert = function (value, range, vditor) {\n        range.setStart(range.startContainer, this.lastIndex);\n        range.deleteContents();\n        if (vditor.options.hint.parse) {\n            if (vditor.currentMode === \"sv\") {\n                (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorSVDOM(value), vditor);\n            }\n            else if (vditor.currentMode === \"wysiwyg\") {\n                (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorDOM(value), vditor);\n            }\n            else {\n                (0,util_selection/* insertHTML */.oC)(vditor.lute.SpinVditorIRDOM(value), vditor);\n            }\n        }\n        else {\n            var val = value.replace(/\\{\\{(.*?)\\}\\}/g, '<span class=\"linsi-span\" contenteditable=\"false\">$1</span>');\n            (0,util_selection/* insertHTML */.oC)(val, vditor);\n        }\n        if (this.splitChar === \":\" && value.indexOf(\":\") > -1 && vditor.currentMode !== \"sv\") {\n            range.insertNode(document.createTextNode(\" \"));\n        }\n        range.collapse(false);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        if (vditor.currentMode === \"wysiwyg\") {\n            var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-wysiwyg__block\");\n            if (preElement && preElement.lastElementChild.classList.contains(\"vditor-wysiwyg__preview\")) {\n                preElement.lastElementChild.innerHTML = preElement.firstElementChild.innerHTML;\n                processCodeRender(preElement.lastElementChild, vditor);\n            }\n        }\n        else if (vditor.currentMode === \"ir\") {\n            var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__marker--pre\");\n            if (preElement && preElement.nextElementSibling.classList.contains(\"vditor-ir__preview\")) {\n                preElement.nextElementSibling.innerHTML = preElement.innerHTML;\n                processCodeRender(preElement.nextElementSibling, vditor);\n            }\n        }\n        execAfterRender(vditor);\n    };\n    Hint.prototype.select = function (event, vditor) {\n        if (this.element.querySelectorAll(\"button\").length === 0 ||\n            this.element.style.display === \"none\") {\n            return false;\n        }\n        var currentHintElement = this.element.querySelector(\".vditor-hint--current\");\n        if (event.key === \"ArrowDown\") {\n            event.preventDefault();\n            event.stopPropagation();\n            currentHintElement.removeAttribute(\"class\");\n            if (!currentHintElement.nextElementSibling) {\n                this.element.children[0].className = \"vditor-hint--current\";\n            }\n            else {\n                currentHintElement.nextElementSibling.className = \"vditor-hint--current\";\n            }\n            return true;\n        }\n        else if (event.key === \"ArrowUp\") {\n            event.preventDefault();\n            event.stopPropagation();\n            currentHintElement.removeAttribute(\"class\");\n            if (!currentHintElement.previousElementSibling) {\n                var length_1 = this.element.children.length;\n                this.element.children[length_1 - 1].className = \"vditor-hint--current\";\n            }\n            else {\n                currentHintElement.previousElementSibling.className = \"vditor-hint--current\";\n            }\n            return true;\n        }\n        else if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Enter\" && !event.isComposing) {\n            event.preventDefault();\n            event.stopPropagation();\n            this.fillEmoji(currentHintElement, vditor);\n            return true;\n        }\n        return false;\n    };\n    Hint.prototype.getKey = function (currentLineValue, extend) {\n        var _this = this;\n        this.lastIndex = -1;\n        this.splitChar = \"\";\n        extend.forEach(function (item) {\n            var currentLastIndex = currentLineValue.lastIndexOf(item.key);\n            if (_this.lastIndex < currentLastIndex) {\n                _this.splitChar = item.key;\n                _this.lastIndex = currentLastIndex;\n            }\n        });\n        var key;\n        if (this.lastIndex === -1) {\n            return key;\n        }\n        var lineArray = currentLineValue.split(this.splitChar);\n        var lastItem = lineArray[lineArray.length - 1];\n        var maxLength = 32;\n        if (lineArray.length > 1 && lastItem.trim() === lastItem) {\n            if (lineArray.length === 2 && lineArray[0] === \"\" && lineArray[1].length < maxLength) {\n                key = lineArray[1];\n            }\n            else {\n                var preChar = lineArray[lineArray.length - 2].slice(-1);\n                if ((0,code160to32/* code160to32 */.X)(preChar) === \" \" && lastItem.length < maxLength) {\n                    key = lastItem;\n                }\n            }\n        }\n        return key;\n    };\n    return Hint;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/ir/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar IR = /** @class */ (function () {\n    function IR(vditor) {\n        this.composingLock = false;\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-ir\";\n        divElement.innerHTML = \"<pre class=\\\"vditor-reset\\\" placeholder=\\\"\".concat(vditor.options.placeholder, \"\\\"\\n contenteditable=\\\"true\\\" spellcheck=\\\"false\\\"></pre>\");\n        this.element = divElement.firstElementChild;\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        dblclickEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n    }\n    IR.prototype.copy = function (event, vditor) {\n        var range = getSelection().getRangeAt(0);\n        if (range.toString() === \"\") {\n            return;\n        }\n        event.stopPropagation();\n        event.preventDefault();\n        var tempElement = document.createElement(\"div\");\n        tempElement.appendChild(range.cloneContents());\n        event.clipboardData.setData(\"text/plain\", vditor.lute.VditorIRDOM2Md(tempElement.innerHTML).trim());\n        event.clipboardData.setData(\"text/html\", \"\");\n    };\n    IR.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            hidePanel(vditor, [\"hint\"]);\n        });\n        this.element.addEventListener(\"compositionstart\", function (event) {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                input(vditor, getSelection().getRangeAt(0).cloneRange());\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                process_processAfterRender(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: true,\n                    enableInput: true,\n                });\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                return;\n            }\n            input(vditor, getSelection().getRangeAt(0).cloneRange(), false, event);\n        });\n        this.element.addEventListener(\"click\", function (event) {\n            if (event.target.tagName === \"INPUT\") {\n                if (event.target.checked) {\n                    event.target.setAttribute(\"checked\", \"checked\");\n                }\n                else {\n                    event.target.removeAttribute(\"checked\");\n                }\n                _this.preventInput = true;\n                process_processAfterRender(vditor);\n                return;\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            // 点击后光标落于预览区\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(event.target, \"vditor-ir__preview\");\n            if (!previewElement) {\n                previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n            }\n            if (previewElement) {\n                if (previewElement.previousElementSibling.firstElementChild) {\n                    range.selectNodeContents(previewElement.previousElementSibling.firstElementChild);\n                }\n                else {\n                    // 行内数学公式\n                    range.selectNodeContents(previewElement.previousElementSibling);\n                }\n                range.collapse(true);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n                scrollCenter(vditor);\n            }\n            // 点击图片光标选中图片地址\n            if (event.target.tagName === \"IMG\") {\n                var linkElement = event.target.parentElement.querySelector(\".vditor-ir__marker--link\");\n                if (linkElement) {\n                    range.selectNode(linkElement);\n                    (0,util_selection/* setSelectionFocus */.Hc)(range);\n                }\n            }\n            // 打开链接\n            var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"a\");\n            if (aElement && (!aElement.classList.contains(\"vditor-ir__node--expand\"))) {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(aElement.querySelector(\":scope > .vditor-ir__marker--link\"));\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(aElement.querySelector(\":scope > .vditor-ir__marker--link\").textContent);\n                }\n                return;\n            }\n            if (event.target.isEqualNode(_this.element) && _this.element.lastElementChild && range.collapsed) {\n                var lastRect = _this.element.lastElementChild.getBoundingClientRect();\n                if (event.y > lastRect.top + lastRect.height) {\n                    if (_this.element.lastElementChild.tagName === \"P\" &&\n                        _this.element.lastElementChild.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        range.selectNodeContents(_this.element.lastElementChild);\n                        range.collapse(false);\n                    }\n                    else {\n                        _this.element.insertAdjacentHTML(\"beforeend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n                        (0,util_selection/* setRangeByWbr */.ib)(_this.element, range);\n                    }\n                }\n            }\n            if (range.toString() === \"\") {\n                expandMarker(range, vditor);\n            }\n            else {\n                // https://github.com/Vanessa219/vditor/pull/681 当点击选中区域时 eventTarget 与 range 不一致，需延迟等待 range 发生变化\n                setTimeout(function () {\n                    expandMarker((0,util_selection/* getEditorRange */.zh)(vditor), vditor);\n                });\n            }\n            clickToc(event, vditor);\n            highlightToolbarIR(vditor);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n            highlightToolbarIR(vditor);\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.ir.element.innerHTML !== \"\" && vditor.ir.element.childNodes.length === 1 &&\n                vditor.ir.element.firstElementChild && vditor.ir.element.firstElementChild.tagName === \"P\"\n                && vditor.ir.element.firstElementChild.childElementCount === 0\n                && (vditor.ir.element.textContent === \"\" || vditor.ir.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.ir.element.innerHTML = \"\";\n                return;\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            if (event.key === \"Backspace\") {\n                // firefox headings https://github.com/Vanessa219/vditor/issues/211\n                if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.textContent === \"\\n\" && range.startOffset === 1) {\n                    range.startContainer.textContent = \"\";\n                    expandMarker(range, vditor);\n                }\n                // 数学公式前是空块，空块前是 table，在空块前删除，数学公式会多一个 br\n                _this.element.querySelectorAll(\".language-math\").forEach(function (item) {\n                    var brElement = item.querySelector(\"br\");\n                    if (brElement) {\n                        brElement.remove();\n                    }\n                });\n            }\n            else if (event.key.indexOf(\"Arrow\") > -1) {\n                if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n                    processHint(vditor);\n                }\n                expandMarker(range, vditor);\n            }\n            else if (event.keyCode === 229 && event.code === \"\" && event.key === \"Unidentified\") {\n                // https://github.com/Vanessa219/vditor/issues/508 IR 删除到节点需展开\n                expandMarker(range, vditor);\n            }\n            var previewRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n            if (previewRenderElement) {\n                if (event.key === \"ArrowUp\" || event.key === \"ArrowLeft\") {\n                    if (previewRenderElement.previousElementSibling.firstElementChild) {\n                        range.selectNodeContents(previewRenderElement.previousElementSibling.firstElementChild);\n                    }\n                    else {\n                        // 行内数学公式/html entity\n                        range.selectNodeContents(previewRenderElement.previousElementSibling);\n                    }\n                    range.collapse(false);\n                    event.preventDefault();\n                    return true;\n                }\n                if (previewRenderElement.tagName === \"SPAN\" &&\n                    (event.key === \"ArrowDown\" || event.key === \"ArrowRight\")) {\n                    if (previewRenderElement.parentElement.getAttribute(\"data-type\") === \"html-entity\") {\n                        // html entity\n                        previewRenderElement.parentElement.insertAdjacentText(\"afterend\", constants/* Constants.ZWSP */.g.ZWSP);\n                        range.setStart(previewRenderElement.parentElement.nextSibling, 1);\n                    }\n                    else {\n                        range.selectNodeContents(previewRenderElement.parentElement.lastElementChild);\n                    }\n                    range.collapse(false);\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        });\n    };\n    return IR;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/markdown/getHTML.ts\n\nvar getHTML = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return vditor.lute.Md2HTML(getMarkdown(vditor));\n    }\n    else if (vditor.currentMode === \"wysiwyg\") {\n        return vditor.lute.VditorDOM2HTML(vditor.wysiwyg.element.innerHTML);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        return vditor.lute.VditorIRDOM2HTML(vditor.ir.element.innerHTML);\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(214);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(436);\n;// CONCATENATED MODULE: ./src/ts/outline/index.ts\n\n\n\n\nvar Outline = /** @class */ (function () {\n    function Outline(outlineLabel) {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-outline\";\n        this.element.innerHTML = \"<div class=\\\"vditor-outline__title\\\">\".concat(outlineLabel, \"</div>\\n<div class=\\\"vditor-outline__content\\\"></div>\");\n    }\n    Outline.prototype.render = function (vditor) {\n        var html = \"\";\n        if (vditor.preview.element.style.display === \"block\") {\n            html = (0,outlineRender/* outlineRender */.k)(vditor.preview.previewElement, this.element.lastElementChild, vditor);\n        }\n        else {\n            html = (0,outlineRender/* outlineRender */.k)(vditor[vditor.currentMode].element, this.element.lastElementChild, vditor);\n        }\n        return html;\n    };\n    Outline.prototype.toggle = function (vditor, show, focus) {\n        var _a;\n        if (show === void 0) { show = true; }\n        if (focus === void 0) { focus = true; }\n        var btnElement = (_a = vditor.toolbar.elements.outline) === null || _a === void 0 ? void 0 : _a.firstElementChild;\n        if (show && window.innerWidth >= constants/* Constants.MOBILE_WIDTH */.g.MOBILE_WIDTH) {\n            this.element.style.display = \"block\";\n            this.render(vditor);\n            btnElement === null || btnElement === void 0 ? void 0 : btnElement.classList.add(\"vditor-menu--current\");\n        }\n        else {\n            this.element.style.display = \"none\";\n            btnElement === null || btnElement === void 0 ? void 0 : btnElement.classList.remove(\"vditor-menu--current\");\n        }\n        if (focus && getSelection().rangeCount > 0) {\n            var range = getSelection().getRangeAt(0);\n            if (vditor[vditor.currentMode].element.contains(range.startContainer)) {\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n        setPadding(vditor);\n    };\n    return Outline;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(280);\n;// CONCATENATED MODULE: ./src/ts/preview/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Preview = /** @class */ (function () {\n    function Preview(vditor) {\n        var _this = this;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-preview\";\n        this.previewElement = document.createElement(\"div\");\n        this.previewElement.className = \"vditor-reset\";\n        if (vditor.options.classes.preview) {\n            this.previewElement.classList.add(vditor.options.classes.preview);\n        }\n        this.previewElement.style.maxWidth = vditor.options.preview.maxWidth + \"px\";\n        this.previewElement.addEventListener(\"copy\", function (event) {\n            if (event.target.tagName === \"TEXTAREA\") {\n                // https://github.com/Vanessa219/vditor/issues/901\n                return;\n            }\n            var tempElement = document.createElement(\"div\");\n            tempElement.className = \"vditor-reset\";\n            tempElement.appendChild(getSelection().getRangeAt(0).cloneContents());\n            _this.copyToX(vditor, tempElement, \"default\");\n            event.preventDefault();\n        });\n        this.previewElement.addEventListener(\"click\", function (event) {\n            var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n            if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                var headingElement = _this.previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                if (headingElement) {\n                    _this.element.scrollTop = headingElement.offsetTop;\n                }\n                return;\n            }\n            if (event.target.tagName === \"A\") {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(event.target);\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(event.target.getAttribute(\"href\"));\n                }\n                event.preventDefault();\n                return;\n            }\n            if (event.target.tagName === \"IMG\") {\n                if (vditor.options.image.preview) {\n                    vditor.options.image.preview(event.target);\n                }\n                else if (vditor.options.image.isPreview) {\n                    (0,preview_image/* previewImage */.E)(event.target, vditor.options.lang, vditor.options.theme);\n                }\n            }\n        });\n        this.element.appendChild(this.previewElement);\n        var actions = vditor.options.preview.actions;\n        if (actions.length === 0) {\n            return;\n        }\n        var actionElement = document.createElement(\"div\");\n        actionElement.className = \"vditor-preview__action\";\n        var actionHtml = [];\n        for (var i = 0; i < actions.length; i++) {\n            var action = actions[i];\n            if (typeof action === \"object\") {\n                actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"\".concat(action.key, \"\\\" class=\\\"\").concat(action.className, \"\\\"\").concat(action.tooltip ? \" aria-label=\\\"\".concat(action.tooltip, \"\\\"\") : \"\", \"\\\">\").concat(action.text, \"</button>\"));\n                continue;\n            }\n            switch (action) {\n                case \"desktop\":\n                    actionHtml.push(\"<button type=\\\"button\\\" class=\\\"vditor-preview__action--current\\\" data-type=\\\"desktop\\\">Desktop</button>\");\n                    break;\n                case \"tablet\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"tablet\\\">Tablet</button>\");\n                    break;\n                case \"mobile\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"mobile\\\">Mobile/Wechat</button>\");\n                    break;\n                case \"mp-wechat\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"mp-wechat\\\" class=\\\"vditor-tooltipped vditor-tooltipped__w\\\" aria-label=\\\"\\u590D\\u5236\\u5230\\u516C\\u4F17\\u53F7\\\"><svg><use xlink:href=\\\"#vditor-icon-mp-wechat\\\"></use></svg></button>\");\n                    break;\n                case \"zhihu\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"zhihu\\\" class=\\\"vditor-tooltipped vditor-tooltipped__w\\\" aria-label=\\\"\\u590D\\u5236\\u5230\\u77E5\\u4E4E\\\"><svg><use xlink:href=\\\"#vditor-icon-zhihu\\\"></use></svg></button>\");\n                    break;\n            }\n        }\n        actionElement.innerHTML = actionHtml.join(\"\");\n        actionElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btn = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (!btn) {\n                return;\n            }\n            var type = btn.getAttribute(\"data-type\");\n            var actionCustom = actions.find(function (w) { return (w === null || w === void 0 ? void 0 : w.key) === type; });\n            if (actionCustom) {\n                actionCustom.click(type);\n                return;\n            }\n            if (type === \"mp-wechat\" || type === \"zhihu\") {\n                _this.copyToX(vditor, _this.previewElement.cloneNode(true), type);\n                return;\n            }\n            if (type === \"desktop\") {\n                _this.previewElement.style.width = \"auto\";\n            }\n            else if (type === \"tablet\") {\n                _this.previewElement.style.width = \"780px\";\n            }\n            else {\n                _this.previewElement.style.width = \"360px\";\n            }\n            if (_this.previewElement.scrollWidth > _this.previewElement.parentElement.clientWidth) {\n                _this.previewElement.style.width = \"auto\";\n            }\n            _this.render(vditor);\n            actionElement.querySelectorAll(\"button\").forEach(function (item) {\n                item.classList.remove(\"vditor-preview__action--current\");\n            });\n            btn.classList.add(\"vditor-preview__action--current\");\n        });\n        this.element.insertBefore(actionElement, this.previewElement);\n    }\n    Preview.prototype.render = function (vditor, value) {\n        var _this = this;\n        clearTimeout(this.mdTimeoutId);\n        if (this.element.style.display === \"none\") {\n            if (this.element.getAttribute(\"data-type\") === \"renderPerformance\") {\n                vditor.tip.hide();\n            }\n            return;\n        }\n        if (value) {\n            this.previewElement.innerHTML = value;\n            return;\n        }\n        if (getMarkdown(vditor)\n            .replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\") === \"\") {\n            this.previewElement.innerHTML = \"\";\n            return;\n        }\n        var renderStartTime = new Date().getTime();\n        var markdownText = getMarkdown(vditor);\n        this.mdTimeoutId = window.setTimeout(function () {\n            if (vditor.options.preview.url) {\n                var xhr_1 = new XMLHttpRequest();\n                xhr_1.open(\"POST\", vditor.options.preview.url);\n                xhr_1.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n                xhr_1.onreadystatechange = function () {\n                    if (xhr_1.readyState === XMLHttpRequest.DONE) {\n                        if (xhr_1.status === 200) {\n                            var responseJSON = JSON.parse(xhr_1.responseText);\n                            if (responseJSON.code !== 0) {\n                                vditor.tip.show(responseJSON.msg);\n                                return;\n                            }\n                            if (vditor.options.preview.transform) {\n                                responseJSON.data = vditor.options.preview.transform(responseJSON.data);\n                            }\n                            _this.previewElement.innerHTML = responseJSON.data;\n                            _this.afterRender(vditor, renderStartTime);\n                        }\n                        else {\n                            var html = vditor.lute.Md2HTML(markdownText);\n                            if (vditor.options.preview.transform) {\n                                html = vditor.options.preview.transform(html);\n                            }\n                            _this.previewElement.innerHTML = html;\n                            _this.afterRender(vditor, renderStartTime);\n                        }\n                    }\n                };\n                xhr_1.send(JSON.stringify({ markdownText: markdownText }));\n            }\n            else {\n                var html = vditor.lute.Md2HTML(markdownText);\n                if (vditor.options.preview.transform) {\n                    html = vditor.options.preview.transform(html);\n                }\n                _this.previewElement.innerHTML = html;\n                _this.afterRender(vditor, renderStartTime);\n            }\n        }, vditor.options.preview.delay);\n    };\n    Preview.prototype.afterRender = function (vditor, startTime) {\n        if (vditor.options.preview.parse) {\n            vditor.options.preview.parse(this.element);\n        }\n        var time = (new Date().getTime() - startTime);\n        if ((new Date().getTime() - startTime) > 2600) {\n            // https://github.com/b3log/vditor/issues/67\n            vditor.tip.show(window.VditorI18n.performanceTip.replace(\"${x}\", time.toString()));\n            vditor.preview.element.setAttribute(\"data-type\", \"renderPerformance\");\n        }\n        else if (vditor.preview.element.getAttribute(\"data-type\") === \"renderPerformance\") {\n            vditor.tip.hide();\n            vditor.preview.element.removeAttribute(\"data-type\");\n        }\n        var cmtFocusElement = vditor.preview.element.querySelector(\".vditor-comment--focus\");\n        if (cmtFocusElement) {\n            cmtFocusElement.classList.remove(\"vditor-comment--focus\");\n        }\n        (0,codeRender/* codeRender */.O)(vditor.preview.previewElement, vditor.options.preview.hljs);\n        (0,highlightRender/* highlightRender */.s)(vditor.options.preview.hljs, vditor.preview.previewElement, vditor.options.cdn);\n        (0,mermaidRender/* mermaidRender */.i)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,markmapRender/* markmapRender */.K)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,SMILESRender/* SMILESRender */.J)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,flowchartRender/* flowchartRender */.P)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,graphvizRender/* graphvizRender */.v)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,chartRender/* chartRender */.p)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,mindmapRender/* mindmapRender */.P)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,plantumlRender/* plantumlRender */.B)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,abcRender/* abcRender */.Q)(vditor.preview.previewElement, vditor.options.cdn);\n        if (vditor.options.preview.render.media.enable) {\n            (0,mediaRender/* mediaRender */.Y)(vditor.preview.previewElement);\n        }\n        vditor.options.customRenders.forEach(function (item) {\n            item.render(vditor.preview.previewElement, vditor);\n        });\n        // toc render\n        var editorElement = vditor.preview.element;\n        var tocHTML = vditor.outline.render(vditor);\n        if (tocHTML === \"\") {\n            tocHTML = \"[ToC]\";\n        }\n        editorElement.querySelectorAll('[data-type=\"toc-block\"]').forEach(function (item) {\n            item.innerHTML = tocHTML;\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n        (0,mathRender/* mathRender */.H)(vditor.preview.previewElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    };\n    Preview.prototype.copyToX = function (vditor, copyElement, type) {\n        if (type === void 0) { type = \"mp-wechat\"; }\n        // fix math render\n        if (type !== \"zhihu\") {\n            copyElement.querySelectorAll(\".katex-html .base\").forEach(function (item) {\n                item.style.display = \"initial\";\n            });\n        }\n        else {\n            copyElement.querySelectorAll(\".language-math\").forEach(function (item) {\n                item.outerHTML = \"<img class=\\\"Formula-image\\\" data-eeimg=\\\"true\\\" src=\\\"//www.zhihu.com/equation?tex=\\\" alt=\\\"\".concat(item.getAttribute(\"data-math\"), \"\\\\\\\" style=\\\"display: block; margin: 0 auto; max-width: 100%;\\\">\");\n            });\n        }\n        // 防止背景色被粘贴到公众号中\n        copyElement.style.backgroundColor = \"#fff\";\n        // 代码背景\n        copyElement.querySelectorAll(\"code\").forEach(function (item) {\n            item.style.backgroundImage = \"none\";\n        });\n        this.element.append(copyElement);\n        var range = copyElement.ownerDocument.createRange();\n        range.selectNode(copyElement);\n        (0,util_selection/* setSelectionFocus */.Hc)(range);\n        document.execCommand(\"copy\");\n        copyElement.remove();\n        vditor.tip.show(['zhihu', 'mp-wechat'].includes(type) ? \"\\u5DF2\\u590D\\u5236\\uFF0C\\u53EF\\u5230\".concat(type === \"zhihu\" ? \"知乎\" : \"微信公众号平台\", \"\\u8FDB\\u884C\\u7C98\\u8D34\") : \"\\u5DF2\\u590D\\u5236\\u5230\\u526A\\u5207\\u677F\");\n    };\n    return Preview;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/resize/index.ts\nvar Resize = /** @class */ (function () {\n    function Resize(vditor) {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-resize vditor-resize--\".concat(vditor.options.resize.position);\n        this.element.innerHTML = \"<div><svg><use xlink:href=\\\"#vditor-icon-resize\\\"></use></svg></div>\";\n        this.bindEvent(vditor);\n    }\n    Resize.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"mousedown\", function (event) {\n            var documentSelf = document;\n            var y = event.clientY;\n            var height = vditor.element.offsetHeight;\n            var minHeight = 63 + vditor.element.querySelector(\".vditor-toolbar\").clientHeight;\n            documentSelf.ondragstart = function () { return false; };\n            if (window.captureEvents) {\n                window.captureEvents();\n            }\n            _this.element.classList.add(\"vditor-resize--selected\");\n            documentSelf.onmousemove = function (moveEvent) {\n                if (vditor.options.resize.position === \"top\") {\n                    vditor.element.style.height = Math.max(minHeight, height + (y - moveEvent.clientY)) + \"px\";\n                }\n                else {\n                    vditor.element.style.height = Math.max(minHeight, height + (moveEvent.clientY - y)) + \"px\";\n                }\n                if (vditor.options.typewriterMode) {\n                    vditor.sv.element.style.paddingBottom =\n                        vditor.sv.element.parentElement.offsetHeight / 2 + \"px\";\n                }\n            };\n            documentSelf.onmouseup = function () {\n                if (vditor.options.resize.after) {\n                    vditor.options.resize.after(vditor.element.offsetHeight - height);\n                }\n                if (window.captureEvents) {\n                    window.captureEvents();\n                }\n                documentSelf.onmousemove = null;\n                documentSelf.onmouseup = null;\n                documentSelf.ondragstart = null;\n                documentSelf.onselectstart = null;\n                documentSelf.onselect = null;\n                _this.element.classList.remove(\"vditor-resize--selected\");\n            };\n        });\n    };\n    return Resize;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/sv/index.ts\n\n\n\n\n\n\nvar Editor = /** @class */ (function () {\n    function Editor(vditor) {\n        this.composingLock = false;\n        this.element = document.createElement(\"pre\");\n        this.element.className = \"vditor-sv vditor-reset\";\n        this.element.setAttribute(\"placeholder\", vditor.options.placeholder);\n        this.element.setAttribute(\"contenteditable\", \"true\");\n        this.element.setAttribute(\"spellcheck\", \"false\");\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n    }\n    Editor.prototype.copy = function (event, vditor) {\n        event.stopPropagation();\n        event.preventDefault();\n        event.clipboardData.setData(\"text/plain\", getSelectText(vditor[vditor.currentMode].element));\n    };\n    Editor.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            if (vditor.preview.element.style.display !== \"block\") {\n                return;\n            }\n            var textScrollTop = _this.element.scrollTop;\n            var textHeight = _this.element.clientHeight;\n            var textScrollHeight = _this.element.scrollHeight - parseFloat(_this.element.style.paddingBottom || \"0\");\n            var preview = vditor.preview.element;\n            if ((textScrollTop / textHeight > 0.5)) {\n                preview.scrollTop = (textScrollTop + textHeight) *\n                    preview.scrollHeight / textScrollHeight - textHeight;\n            }\n            else {\n                preview.scrollTop = textScrollTop *\n                    preview.scrollHeight / textScrollHeight;\n            }\n        });\n        this.element.addEventListener(\"compositionstart\", function (event) {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                inputEvent(vditor, event);\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                processAfterRender(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: true,\n                    enableInput: true,\n                });\n                return;\n            }\n            inputEvent(vditor, event);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.sv.element.innerHTML !== \"\" && vditor.sv.element.childNodes.length === 1 &&\n                vditor.sv.element.firstElementChild && vditor.sv.element.firstElementChild.tagName === \"DIV\"\n                && vditor.sv.element.firstElementChild.childElementCount === 2\n                && (vditor.sv.element.firstElementChild.textContent === \"\" || vditor.sv.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.sv.element.innerHTML = \"\";\n                return;\n            }\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n        });\n    };\n    return Editor;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/tip/index.ts\nvar Tip = /** @class */ (function () {\n    function Tip() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-tip\";\n    }\n    Tip.prototype.show = function (text, time) {\n        var _this = this;\n        if (time === void 0) { time = 6000; }\n        this.element.className = \"vditor-tip vditor-tip--show\";\n        if (time === 0) {\n            this.element.innerHTML = \"<div class=\\\"vditor-tip__content\\\">\".concat(text, \"\\n<div class=\\\"vditor-tip__close\\\">X</div></div>\");\n            this.element.querySelector(\".vditor-tip__close\").addEventListener(\"click\", function () {\n                _this.hide();\n            });\n        }\n        else {\n            this.element.innerHTML = \"<div class=\\\"vditor-tip__content\\\">\".concat(text, \"</div>\");\n            setTimeout(function () {\n                _this.hide();\n            }, time);\n        }\n        // 需在动画结束后才能确定位置\n        this.element.removeAttribute(\"style\");\n        setTimeout(function () {\n            var rect = _this.element.getBoundingClientRect();\n            if (rect.top < 46) {\n                _this.element.style.position = \"fixed\";\n                _this.element.style.top = \"46px\";\n            }\n        }, 150);\n    };\n    Tip.prototype.hide = function () {\n        this.element.className = \"vditor-messageElementtip\";\n        this.element.innerHTML = \"\";\n    };\n    return Tip;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/ui/setPreviewMode.ts\n\n\nvar setPreviewMode = function (mode, vditor) {\n    if (vditor.options.preview.mode === mode) {\n        return;\n    }\n    vditor.options.preview.mode = mode;\n    switch (mode) {\n        case \"both\":\n            vditor.sv.element.style.display = \"block\";\n            vditor.preview.element.style.display = \"block\";\n            vditor.preview.render(vditor);\n            setCurrentToolbar(vditor.toolbar.elements, [\"both\"]);\n            break;\n        case \"editor\":\n            vditor.sv.element.style.display = \"block\";\n            vditor.preview.element.style.display = \"none\";\n            removeCurrentToolbar(vditor.toolbar.elements, [\"both\"]);\n            break;\n        default:\n            break;\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Both.ts\nvar Both_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Both = /** @class */ (function (_super) {\n    Both_extends(Both, _super);\n    function Both(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        if (vditor.options.preview.mode === \"both\") {\n            _this.element.children[0].classList.add(\"vditor-menu--current\");\n        }\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            event.preventDefault();\n            if (vditor.currentMode !== \"sv\") {\n                return;\n            }\n            if (vditor.options.preview.mode === \"both\") {\n                setPreviewMode(\"editor\", vditor);\n            }\n            else {\n                setPreviewMode(\"both\", vditor);\n            }\n        });\n        return _this;\n    }\n    return Both;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Br.ts\nvar Br = /** @class */ (function () {\n    function Br() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar__br\";\n    }\n    return Br;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(580);\n;// CONCATENATED MODULE: ./src/ts/toolbar/CodeTheme.ts\nvar CodeTheme_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar CodeTheme = /** @class */ (function (_super) {\n    CodeTheme_extends(CodeTheme, _super);\n    function CodeTheme(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        var innerHTML = \"\";\n        constants/* Constants.CODE_THEME.forEach */.g.CODE_THEME.forEach(function (theme) {\n            innerHTML += \"<button>\".concat(theme, \"</button>\");\n        });\n        panelElement.innerHTML =\n            \"<div style=\\\"overflow: auto;max-height:\".concat(window.innerHeight / 2, \"px\\\">\").concat(innerHTML, \"</div>\");\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (event.target.tagName === \"BUTTON\") {\n                hidePanel(vditor, [\"subToolbar\"]);\n                vditor.options.preview.hljs.style = event.target.textContent;\n                (0,setCodeTheme/* setCodeTheme */.Y)(event.target.textContent, vditor.options.cdn);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return CodeTheme;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/ContentTheme.ts\nvar ContentTheme_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar ContentTheme = /** @class */ (function (_super) {\n    ContentTheme_extends(ContentTheme, _super);\n    function ContentTheme(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        var innerHTML = \"\";\n        Object.keys(vditor.options.preview.theme.list).forEach(function (key) {\n            innerHTML += \"<button data-type=\\\"\".concat(key, \"\\\">\").concat(vditor.options.preview.theme.list[key], \"</button>\");\n        });\n        panelElement.innerHTML =\n            \"<div style=\\\"overflow: auto;max-height:\".concat(window.innerHeight / 2, \"px\\\">\").concat(innerHTML, \"</div>\");\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (event.target.tagName === \"BUTTON\") {\n                hidePanel(vditor, [\"subToolbar\"]);\n                vditor.options.preview.theme.current = event.target.getAttribute(\"data-type\");\n                (0,setContentTheme/* setContentTheme */.Z)(vditor.options.preview.theme.current, vditor.options.preview.theme.path);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return ContentTheme;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Counter.ts\nvar Counter = /** @class */ (function () {\n    function Counter(vditor) {\n        this.element = document.createElement(\"span\");\n        this.element.className = \"vditor-counter vditor-tooltipped vditor-tooltipped__nw\";\n        this.render(vditor, \"\");\n    }\n    Counter.prototype.render = function (vditor, mdText) {\n        var length = mdText.endsWith(\"\\n\") ? mdText.length - 1 : mdText.length;\n        if (vditor.options.counter.type === \"text\" && vditor[vditor.currentMode]) {\n            var tempElement = vditor[vditor.currentMode].element.cloneNode(true);\n            tempElement.querySelectorAll(\".vditor-wysiwyg__preview\").forEach(function (item) {\n                item.remove();\n            });\n            length = tempElement.textContent.length;\n        }\n        if (typeof vditor.options.counter.max === \"number\") {\n            if (length > vditor.options.counter.max) {\n                this.element.className = \"vditor-counter vditor-counter--error\";\n            }\n            else {\n                this.element.className = \"vditor-counter\";\n            }\n            this.element.innerHTML = \"\".concat(length, \"/\").concat(vditor.options.counter.max);\n        }\n        else {\n            this.element.innerHTML = \"\".concat(length);\n        }\n        this.element.setAttribute(\"aria-label\", vditor.options.counter.type);\n        if (vditor.options.counter.after) {\n            vditor.options.counter.after(length, {\n                enable: vditor.options.counter.enable,\n                max: vditor.options.counter.max,\n                type: vditor.options.counter.type,\n            });\n        }\n    };\n    return Counter;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Custom.ts\nvar Custom_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Custom = /** @class */ (function (_super) {\n    Custom_extends(Custom, _super);\n    function Custom(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].innerHTML = menuItem.icon;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (event.currentTarget.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            menuItem.click(event, vditor);\n        });\n        return _this;\n    }\n    return Custom;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Devtools.ts\nvar Devtools_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Devtools = /** @class */ (function (_super) {\n    Devtools_extends(Devtools, _super);\n    function Devtools(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.firstElementChild.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            event.preventDefault();\n            if (btnElement.classList.contains(\"vditor-menu--current\")) {\n                btnElement.classList.remove(\"vditor-menu--current\");\n                vditor.devtools.element.style.display = \"none\";\n                setPadding(vditor);\n            }\n            else {\n                btnElement.classList.add(\"vditor-menu--current\");\n                vditor.devtools.element.style.display = \"block\";\n                setPadding(vditor);\n                vditor.devtools.renderEchart(vditor);\n            }\n        });\n        return _this;\n    }\n    return Devtools;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Divider.ts\nvar Divider = /** @class */ (function () {\n    function Divider() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar__divider\";\n    }\n    return Divider;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Emoji.ts\nvar Emoji_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\nvar Emoji = /** @class */ (function (_super) {\n    Emoji_extends(Emoji, _super);\n    function Emoji(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-panel vditor-panel--arrow\";\n        var commonEmojiHTML = \"\";\n        Object.keys(vditor.options.hint.emoji).forEach(function (key) {\n            var emojiValue = vditor.options.hint.emoji[key];\n            if (emojiValue.indexOf(\".\") > -1) {\n                commonEmojiHTML += \"<button data-value=\\\":\".concat(key, \": \\\" data-key=\\\":\").concat(key, \":\\\"><img\\ndata-value=\\\":\").concat(key, \": \\\" data-key=\\\":\").concat(key, \":\\\" class=\\\"vditor-emojis__icon\\\" src=\\\"\").concat(emojiValue, \"\\\"/></button>\");\n            }\n            else {\n                commonEmojiHTML += \"<button data-value=\\\"\".concat(emojiValue, \" \\\"\\n data-key=\\\"\").concat(key, \"\\\"><span class=\\\"vditor-emojis__icon\\\">\").concat(emojiValue, \"</span></button>\");\n            }\n        });\n        panelElement.innerHTML = \"<div class=\\\"vditor-emojis\\\" style=\\\"max-height: \".concat(vditor.options.height === \"auto\" ? \"auto\" : vditor.options.height - 80, \"px\\\">\").concat(commonEmojiHTML, \"</div><div class=\\\"vditor-emojis__tail\\\">\\n    <span class=\\\"vditor-emojis__tip\\\"></span><span>\").concat(vditor.options.hint.emojiTail || \"\", \"</span>\\n</div>\");\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, _this.element.firstElementChild, menuItem.level);\n        _this.bindEvent(vditor);\n        return _this;\n    }\n    Emoji.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.lastElementChild.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (btnElement) {\n                event.preventDefault();\n                var value = btnElement.getAttribute(\"data-value\");\n                var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n                var html = value;\n                if (vditor.currentMode === \"wysiwyg\") {\n                    html = vditor.lute.SpinVditorDOM(value);\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    html = vditor.lute.SpinVditorIRDOM(value);\n                }\n                if (value.indexOf(\":\") > -1 && vditor.currentMode !== \"sv\") {\n                    var tempElement = document.createElement(\"div\");\n                    tempElement.innerHTML = html;\n                    html = tempElement.firstElementChild.firstElementChild.outerHTML + \" \";\n                    (0,util_selection/* insertHTML */.oC)(html, vditor);\n                }\n                else {\n                    range.extractContents();\n                    range.insertNode(document.createTextNode(value));\n                    if (!(0,hasClosest/* hasClosestBlock */.F9)(range.startContainer)) {\n                        modifyPre(vditor, range);\n                    }\n                }\n                range.collapse(false);\n                (0,util_selection/* setSelectionFocus */.Hc)(range);\n                _this.element.lastElementChild.style.display = \"none\";\n                execAfterRender(vditor);\n            }\n        });\n        this.element.lastElementChild.addEventListener(\"mouseover\", function (event) {\n            var btnElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (btnElement) {\n                _this.element.querySelector(\".vditor-emojis__tip\").innerHTML = btnElement.getAttribute(\"data-key\");\n            }\n        });\n    };\n    return Emoji;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/export/index.ts\n\n\nvar download = function (vditor, content, filename) {\n    var aElement = document.createElement(\"a\");\n    if (\"download\" in aElement) {\n        aElement.download = filename;\n        aElement.style.display = \"none\";\n        aElement.href = URL.createObjectURL(new Blob([content]));\n        document.body.appendChild(aElement);\n        aElement.click();\n        aElement.remove();\n    }\n    else {\n        vditor.tip.show(window.VditorI18n.downloadTip, 0);\n    }\n};\nvar exportMarkdown = function (vditor) {\n    var content = getMarkdown(vditor);\n    download(vditor, content, content.substr(0, 10) + \".md\");\n};\nvar exportPDF = function (vditor) {\n    vditor.tip.show(window.VditorI18n.generate, 3800);\n    var iframe = document.querySelector(\"#vditorExportIframe\");\n    iframe.contentDocument.open();\n    iframe.contentDocument.write(\"<link rel=\\\"stylesheet\\\" href=\\\"\".concat(vditor.options.cdn, \"/dist/index.css\\\"/>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/method.min.js\\\"></script>\\n<div id=\\\"preview\\\" style=\\\"width: 800px\\\"></div>\\n<script>\\nwindow.addEventListener(\\\"message\\\", (e) => {\\n  if(!e.data) {\\n    return;\\n  }\\n  Vditor.preview(document.getElementById('preview'), e.data, {\\n    cdn: \\\"\").concat(vditor.options.cdn, \"\\\",\\n    markdown: {\\n      theme: \").concat(JSON.stringify(vditor.options.preview.theme), \"\\n    },\\n    hljs: {\\n      style: \\\"\").concat(vditor.options.preview.hljs.style, \"\\\"\\n    }\\n  });\\n  setTimeout(() => {\\n        window.print();\\n    }, 3600);\\n}, false);\\n</script>\"));\n    iframe.contentDocument.close();\n    setTimeout(function () {\n        iframe.contentWindow.postMessage(getMarkdown(vditor), \"*\");\n    }, 200);\n};\nvar exportHTML = function (vditor) {\n    var content = getHTML(vditor);\n    var html = \"<html><head><link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\".concat(vditor.options.cdn, \"/dist/index.css\\\"/>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/js/i18n/\").concat(vditor.options.lang, \".js\\\"></script>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/method.min.js\\\"></script></head>\\n<body><div class=\\\"vditor-reset\\\" id=\\\"preview\\\">\").concat(content, \"</div>\\n<script>\\n    const previewElement = document.getElementById('preview')\\n    Vditor.setContentTheme('\").concat(vditor.options.preview.theme.current, \"', '\").concat(vditor.options.preview.theme.path, \"');\\n    Vditor.codeRender(previewElement);\\n    Vditor.highlightRender(\").concat(JSON.stringify(vditor.options.preview.hljs), \", previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.mathRender(previewElement, {\\n        cdn: '\").concat(vditor.options.cdn, \"',\\n        math: \").concat(JSON.stringify(vditor.options.preview.math), \",\\n    });\\n    Vditor.mermaidRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.SMILESRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.markmapRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.flowchartRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.graphvizRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.chartRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.mindmapRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.abcRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    \").concat(vditor.options.preview.render.media.enable ? 'Vditor.mediaRender(previewElement);' : \"\", \"\\n    Vditor.speechRender(previewElement);\\n</script>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/js/icons/\").concat(vditor.options.icon, \".js\\\"></script></body></html>\");\n    download(vditor, html, content.substr(0, 10) + \".html\");\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Export.ts\nvar Export_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Export = /** @class */ (function (_super) {\n    Export_extends(Export, _super);\n    function Export(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        panelElement.innerHTML = \"<button data-type=\\\"markdown\\\">Markdown</button>\\n<button data-type=\\\"pdf\\\">PDF</button>\\n<button data-type=\\\"html\\\">HTML</button>\";\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = event.target;\n            if (btnElement.tagName === \"BUTTON\") {\n                switch (btnElement.getAttribute(\"data-type\")) {\n                    case \"markdown\":\n                        exportMarkdown(vditor);\n                        break;\n                    case \"pdf\":\n                        exportPDF(vditor);\n                        break;\n                    case \"html\":\n                        exportHTML(vditor);\n                        break;\n                    default:\n                        break;\n                }\n                hidePanel(vditor, [\"subToolbar\"]);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return Export;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Fullscreen.ts\nvar Fullscreen_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Fullscreen = /** @class */ (function (_super) {\n    Fullscreen_extends(Fullscreen, _super);\n    function Fullscreen(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor, menuItem);\n        return _this;\n    }\n    Fullscreen.prototype._bindEvent = function (vditor, menuItem) {\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (vditor.element.className.includes(\"vditor--fullscreen\")) {\n                if (!menuItem.level) {\n                    this.innerHTML = menuItem.icon;\n                }\n                vditor.element.style.zIndex = \"\";\n                document.body.style.overflow = \"\";\n                vditor.element.classList.remove(\"vditor--fullscreen\");\n                Object.keys(vditor.toolbar.elements).forEach(function (key) {\n                    var svgElement = vditor.toolbar.elements[key].firstChild;\n                    if (svgElement) {\n                        svgElement.className = svgElement.className.replace(\"__s\", \"__n\");\n                        vditor.options.toolbar.forEach(function (item) {\n                            if (typeof item !== \"string\" && item.tipPosition && item.name === svgElement.dataset.type) {\n                                svgElement.className = \"vditor-tooltipped vditor-tooltipped__\".concat(item.tipPosition);\n                            }\n                        });\n                    }\n                });\n                if (vditor.counter) {\n                    vditor.counter.element.className = vditor.counter.element.className.replace(\"__s\", \"__n\");\n                }\n            }\n            else {\n                if (!menuItem.level) {\n                    this.innerHTML = '<svg><use xlink:href=\"#vditor-icon-contract\"></use></svg>';\n                }\n                vditor.element.style.zIndex = vditor.options.fullscreen.index.toString();\n                document.body.style.overflow = \"hidden\";\n                vditor.element.classList.add(\"vditor--fullscreen\");\n                Object.keys(vditor.toolbar.elements).forEach(function (key) {\n                    var svgElement = vditor.toolbar.elements[key].firstChild;\n                    if (svgElement) {\n                        svgElement.className = svgElement.className.replace(\"__n\", \"__s\");\n                    }\n                });\n                if (vditor.counter) {\n                    vditor.counter.element.className = vditor.counter.element.className.replace(\"__n\", \"__s\");\n                }\n            }\n            if (vditor.devtools) {\n                vditor.devtools.renderEchart(vditor);\n            }\n            if (menuItem.click) {\n                menuItem.click(event, vditor);\n            }\n            setPadding(vditor);\n            setTypewriterPosition(vditor);\n        });\n    };\n    return Fullscreen;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Headings.ts\nvar Headings_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\nvar Headings = /** @class */ (function (_super) {\n    Headings_extends(Headings, _super);\n    function Headings(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint vditor-panel--arrow\";\n        panelElement.innerHTML = \"<button data-tag=\\\"h1\\\" data-value=\\\"# \\\">\".concat(window.VditorI18n.heading1, \" \").concat((0,compatibility/* updateHotkeyTip */.ns)(\"&lt;⌥⌘1>\"), \"</button>\\n<button data-tag=\\\"h2\\\" data-value=\\\"## \\\">\").concat(window.VditorI18n.heading2, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘2\"), \"></button>\\n<button data-tag=\\\"h3\\\" data-value=\\\"### \\\">\").concat(window.VditorI18n.heading3, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘3\"), \"></button>\\n<button data-tag=\\\"h4\\\" data-value=\\\"#### \\\">\").concat(window.VditorI18n.heading4, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘4\"), \"></button>\\n<button data-tag=\\\"h5\\\" data-value=\\\"##### \\\">\").concat(window.VditorI18n.heading5, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘5\"), \"></button>\\n<button data-tag=\\\"h6\\\" data-value=\\\"###### \\\">\").concat(window.VditorI18n.heading6, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘6\"), \"></button>\");\n        _this.element.appendChild(panelElement);\n        _this._bindEvent(vditor, panelElement);\n        return _this;\n    }\n    Headings.prototype._bindEvent = function (vditor, panelElement) {\n        var actionBtn = this.element.children[0];\n        actionBtn.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            // https://github.com/Vanessa219/vditor/issues/1391\n            clearTimeout(vditor.wysiwyg.afterRenderTimeoutId);\n            clearTimeout(vditor.ir.processTimeoutId);\n            clearTimeout(vditor.sv.processTimeoutId);\n            if (actionBtn.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            actionBtn.blur();\n            if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n                if (vditor.currentMode === \"wysiwyg\") {\n                    removeHeading(vditor);\n                    afterRenderEvent(vditor);\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    process_processHeading(vditor, \"\");\n                }\n                actionBtn.classList.remove(\"vditor-menu--current\");\n            }\n            else {\n                hidePanel(vditor, [\"subToolbar\"]);\n                panelElement.style.display = \"block\";\n            }\n        });\n        for (var i = 0; i < 6; i++) {\n            panelElement.children.item(i).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n                event.preventDefault();\n                if (vditor.currentMode === \"wysiwyg\") {\n                    setHeading(vditor, event.target.getAttribute(\"data-tag\"));\n                    afterRenderEvent(vditor);\n                    actionBtn.classList.add(\"vditor-menu--current\");\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    process_processHeading(vditor, event.target.getAttribute(\"data-value\"));\n                    actionBtn.classList.add(\"vditor-menu--current\");\n                }\n                else {\n                    processHeading(vditor, event.target.getAttribute(\"data-value\"));\n                }\n                panelElement.style.display = \"none\";\n            });\n        }\n    };\n    return Headings;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Help.ts\nvar Help_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar Help = /** @class */ (function (_super) {\n    Help_extends(Help, _super);\n    function Help(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            vditor.tip.show(\"<div style=\\\"margin-bottom:14px;font-size: 14px;line-height: 22px;min-width:300px;max-width: 360px;display: flex;\\\">\\n<div style=\\\"margin-top: 14px;flex: 1\\\">\\n    <div>Markdown \\u4F7F\\u7528\\u6307\\u5357</div>\\n    <ul style=\\\"list-style: none\\\">\\n        <li><a href=\\\"https://ld246.com/article/1583308420519\\\" target=\\\"_blank\\\">\\u8BED\\u6CD5\\u901F\\u67E5\\u624B\\u518C</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1583129520165\\\" target=\\\"_blank\\\">\\u57FA\\u7840\\u8BED\\u6CD5</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1583305480675\\\" target=\\\"_blank\\\">\\u6269\\u5C55\\u8BED\\u6CD5</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1582778815353\\\" target=\\\"_blank\\\">\\u952E\\u76D8\\u5FEB\\u6377\\u952E</a></li>\\n    </ul>\\n</div>\\n<div style=\\\"margin-top: 14px;flex: 1\\\">\\n    <div>Vditor \\u652F\\u6301</div>\\n    <ul style=\\\"list-style: none\\\">\\n        <li><a href=\\\"https://github.com/Vanessa219/vditor/issues\\\" target=\\\"_blank\\\">Issues</a></li>\\n        <li><a href=\\\"https://ld246.com/tag/vditor\\\" target=\\\"_blank\\\">\\u5B98\\u65B9\\u8BA8\\u8BBA\\u533A</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1549638745630\\\" target=\\\"_blank\\\">\\u5F00\\u53D1\\u624B\\u518C</a></li>\\n        <li><a href=\\\"https://ld246.com/guide/markdown\\\" target=\\\"_blank\\\">\\u6F14\\u793A\\u5730\\u5740</a></li>\\n    </ul>\\n</div></div>\", 0);\n        });\n        return _this;\n    }\n    return Help;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Indent.ts\nvar Indent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar Indent = /** @class */ (function (_super) {\n    Indent_extends(Indent, _super);\n    function Indent(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n            if (liElement) {\n                listIndent(vditor, liElement, range);\n            }\n        });\n        return _this;\n    }\n    return Indent;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Info.ts\nvar Info_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Info = /** @class */ (function (_super) {\n    Info_extends(Info, _super);\n    function Info(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            vditor.tip.show(\"<div style=\\\"max-width: 520px; font-size: 14px;line-height: 22px;margin-bottom: 14px;\\\">\\n<p style=\\\"text-align: center;margin: 14px 0\\\">\\n    <em>\\u4E0B\\u4E00\\u4EE3\\u7684 Markdown \\u7F16\\u8F91\\u5668\\uFF0C\\u4E3A\\u672A\\u6765\\u800C\\u6784\\u5EFA</em>\\n</p>\\n<div style=\\\"display: flex;margin-bottom: 14px;flex-wrap: wrap;align-items: center\\\">\\n    <img src=\\\"https://unpkg.com/vditor/dist/images/logo.png\\\" style=\\\"margin: 0 auto;height: 68px\\\"/>\\n    <div>&nbsp;&nbsp;</div>\\n    <div style=\\\"flex: 1;min-width: 250px\\\">\\n        Vditor \\u662F\\u4E00\\u6B3E\\u6D4F\\u89C8\\u5668\\u7AEF\\u7684 Markdown \\u7F16\\u8F91\\u5668\\uFF0C\\u652F\\u6301\\u6240\\u89C1\\u5373\\u6240\\u5F97\\u3001\\u5373\\u65F6\\u6E32\\u67D3\\uFF08\\u7C7B\\u4F3C Typora\\uFF09\\u548C\\u5206\\u5C4F\\u9884\\u89C8\\u6A21\\u5F0F\\u3002\\n        \\u5B83\\u4F7F\\u7528 TypeScript \\u5B9E\\u73B0\\uFF0C\\u652F\\u6301\\u539F\\u751F JavaScript \\u4EE5\\u53CA Vue\\u3001React\\u3001Angular \\u548C Svelte \\u7B49\\u6846\\u67B6\\u3002\\n    </div>\\n</div>\\n<div style=\\\"display: flex;flex-wrap: wrap;\\\">\\n    <ul style=\\\"list-style: none;flex: 1;min-width:148px\\\">\\n        <li>\\n        \\u9879\\u76EE\\u5730\\u5740\\uFF1A<a href=\\\"https://b3log.org/vditor\\\" target=\\\"_blank\\\">b3log.org/vditor</a>\\n        </li>\\n        <li>\\n        \\u5F00\\u6E90\\u534F\\u8BAE\\uFF1AMIT\\n        </li>\\n    </ul>\\n    <ul style=\\\"list-style: none;margin-right: 18px\\\">\\n        <li>\\n        \\u7EC4\\u4EF6\\u7248\\u672C\\uFF1AVditor v\".concat(constants/* VDITOR_VERSION */.H, \" / Lute v\").concat(Lute.Version, \"\\n        </li>\\n        <li>\\n        \\u8D5E\\u52A9\\u6350\\u8D60\\uFF1A<a href=\\\"https://ld246.com/sponsor\\\" target=\\\"_blank\\\">https://ld246.com/sponsor</a>\\n        </li>\\n    </ul>\\n</div>\\n</div>\"), 0);\n        });\n        return _this;\n    }\n    return Info;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/InsertAfter.ts\nvar InsertAfter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar InsertAfter = /** @class */ (function (_super) {\n    InsertAfter_extends(InsertAfter, _super);\n    function InsertAfter(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            insertEmptyBlock(vditor, \"afterend\");\n        });\n        return _this;\n    }\n    return InsertAfter;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/InsertBefore.ts\nvar InsertBefore_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar InsertBefore = /** @class */ (function (_super) {\n    InsertBefore_extends(InsertBefore, _super);\n    function InsertBefore(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            insertEmptyBlock(vditor, \"beforebegin\");\n        });\n        return _this;\n    }\n    return InsertBefore;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Outdent.ts\nvar Outdent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar Outdent = /** @class */ (function (_super) {\n    Outdent_extends(Outdent, _super);\n    function Outdent(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n            if (liElement) {\n                listOutdent(vditor, liElement, range, liElement.parentElement);\n            }\n        });\n        return _this;\n    }\n    return Outdent;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Outline.ts\nvar Outline_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Outline_Outline = /** @class */ (function (_super) {\n    Outline_extends(Outline, _super);\n    function Outline(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        if (vditor.options.outline) {\n            _this.element.firstElementChild.classList.add(\"vditor-menu--current\");\n        }\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            var btnElement = vditor.toolbar.elements.outline.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.options.outline.enable = !_this.element.firstElementChild.classList.contains(\"vditor-menu--current\");\n            vditor.outline.toggle(vditor, vditor.options.outline.enable);\n        });\n        return _this;\n    }\n    return Outline;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Preview.ts\nvar Preview_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar Preview_Preview = /** @class */ (function (_super) {\n    Preview_extends(Preview, _super);\n    function Preview(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Preview.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            var toolbars = constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"both\", \"edit-mode\", \"devtools\"]);\n            if (btnElement.classList.contains(\"vditor-menu--current\")) {\n                btnElement.classList.remove(\"vditor-menu--current\");\n                if (vditor.currentMode === \"sv\") {\n                    vditor.sv.element.style.display = \"block\";\n                    if (vditor.options.preview.mode === \"both\") {\n                        vditor.preview.element.style.display = \"block\";\n                    }\n                    else {\n                        vditor.preview.element.style.display = \"none\";\n                    }\n                }\n                else {\n                    vditor[vditor.currentMode].element.parentElement.style.display = \"block\";\n                    vditor.preview.element.style.display = \"none\";\n                }\n                enableToolbar(vditor.toolbar.elements, toolbars);\n                vditor.outline.render(vditor);\n            }\n            else {\n                disableToolbar(vditor.toolbar.elements, toolbars);\n                vditor.preview.element.style.display = \"block\";\n                if (vditor.currentMode === \"sv\") {\n                    vditor.sv.element.style.display = \"none\";\n                }\n                else {\n                    vditor[vditor.currentMode].element.parentElement.style.display = \"none\";\n                }\n                vditor.preview.render(vditor);\n                btnElement.classList.add(\"vditor-menu--current\");\n                hidePanel(vditor, [\"subToolbar\", \"hint\", \"popover\"]);\n                setTimeout(function () {\n                    vditor.outline.render(vditor);\n                }, vditor.options.preview.delay + 10);\n            }\n            setPadding(vditor);\n        });\n    };\n    return Preview;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/util/RecordMedia.ts\nvar RecordMedia = /** @class */ (function () {\n    function RecordMedia(e) {\n        this.SAMPLE_RATE = 5000; // 44100 suggested by demos;\n        this.isRecording = false;\n        this.readyFlag = false;\n        this.leftChannel = [];\n        this.rightChannel = [];\n        this.recordingLength = 0;\n        var context;\n        // creates the audio context\n        if (typeof AudioContext !== \"undefined\") {\n            context = new AudioContext();\n        }\n        else if (webkitAudioContext) {\n            context = new webkitAudioContext();\n        }\n        else {\n            return;\n        }\n        this.DEFAULT_SAMPLE_RATE = context.sampleRate;\n        // creates a gain node\n        var volume = context.createGain();\n        // creates an audio node from the microphone incoming stream\n        var audioInput = context.createMediaStreamSource(e);\n        // connect the stream to the gain node\n        audioInput.connect(volume);\n        /* From the spec: The size of the buffer controls how frequently the audioprocess event is\n         dispatched and how many sample-frames need to be processed each call.\n         Lower values for buffer size will result in a lower (better) latency.\n         Higher values will be necessary to avoid audio breakup and glitches */\n        this.recorder = context.createScriptProcessor(2048, 2, 1);\n        // The onaudioprocess event needs to be defined externally, so make sure it is not set:\n        this.recorder.onaudioprocess = null;\n        // we connect the recorder\n        volume.connect(this.recorder);\n        this.recorder.connect(context.destination);\n        this.readyFlag = true;\n    }\n    // Publicly accessible methods:\n    RecordMedia.prototype.cloneChannelData = function (leftChannelData, rightChannelData) {\n        this.leftChannel.push(new Float32Array(leftChannelData));\n        this.rightChannel.push(new Float32Array(rightChannelData));\n        this.recordingLength += 2048;\n    };\n    RecordMedia.prototype.startRecordingNewWavFile = function () {\n        if (this.readyFlag) {\n            this.isRecording = true;\n            this.leftChannel.length = this.rightChannel.length = 0;\n            this.recordingLength = 0;\n        }\n    };\n    RecordMedia.prototype.stopRecording = function () {\n        this.isRecording = false;\n    };\n    RecordMedia.prototype.buildWavFileBlob = function () {\n        // we flat the left and right channels down\n        var leftBuffer = this.mergeBuffers(this.leftChannel);\n        var rightBuffer = this.mergeBuffers(this.rightChannel);\n        // Interleave the left and right channels together:\n        var interleaved = new Float32Array(leftBuffer.length);\n        for (var i = 0; i < leftBuffer.length; ++i) {\n            interleaved[i] = 0.5 * (leftBuffer[i] + rightBuffer[i]);\n        }\n        // Downsample the audio data if necessary:\n        if (this.DEFAULT_SAMPLE_RATE > this.SAMPLE_RATE) {\n            interleaved = this.downSampleBuffer(interleaved, this.SAMPLE_RATE);\n        }\n        var totalByteCount = (44 + interleaved.length * 2);\n        var buffer = new ArrayBuffer(totalByteCount);\n        var view = new DataView(buffer);\n        // Build the RIFF chunk descriptor:\n        this.writeUTFBytes(view, 0, \"RIFF\");\n        view.setUint32(4, totalByteCount, true);\n        this.writeUTFBytes(view, 8, \"WAVE\");\n        // Build the FMT sub-chunk:\n        this.writeUTFBytes(view, 12, \"fmt \"); // subchunk1 ID is format\n        view.setUint32(16, 16, true); // The sub-chunk size is 16.\n        view.setUint16(20, 1, true); // The audio format is 1.\n        view.setUint16(22, 1, true); // Number of interleaved channels.\n        view.setUint32(24, this.SAMPLE_RATE, true); // Sample rate.\n        view.setUint32(28, this.SAMPLE_RATE * 2, true); // Byte rate.\n        view.setUint16(32, 2, true); // Block align\n        view.setUint16(34, 16, true); // Bits per sample.\n        // Build the data sub-chunk:\n        var subChunk2ByteCount = interleaved.length * 2;\n        this.writeUTFBytes(view, 36, \"data\");\n        view.setUint32(40, subChunk2ByteCount, true);\n        // Write the PCM samples to the view:\n        var lng = interleaved.length;\n        var index = 44;\n        var volume = 1;\n        for (var j = 0; j < lng; j++) {\n            view.setInt16(index, interleaved[j] * (0x7FFF * volume), true);\n            index += 2;\n        }\n        return new Blob([view], { type: \"audio/wav\" });\n    };\n    RecordMedia.prototype.downSampleBuffer = function (buffer, rate) {\n        if (rate === this.DEFAULT_SAMPLE_RATE) {\n            return buffer;\n        }\n        if (rate > this.DEFAULT_SAMPLE_RATE) {\n            // throw \"downsampling rate show be smaller than original sample rate\";\n            return buffer;\n        }\n        var sampleRateRatio = this.DEFAULT_SAMPLE_RATE / rate;\n        var newLength = Math.round(buffer.length / sampleRateRatio);\n        var result = new Float32Array(newLength);\n        var offsetResult = 0;\n        var offsetBuffer = 0;\n        while (offsetResult < result.length) {\n            var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n            var accum = 0;\n            var count = 0;\n            for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n                accum += buffer[i];\n                count++;\n            }\n            result[offsetResult] = accum / count;\n            offsetResult++;\n            offsetBuffer = nextOffsetBuffer;\n        }\n        return result;\n    };\n    RecordMedia.prototype.mergeBuffers = function (desiredChannelBuffer) {\n        var result = new Float32Array(this.recordingLength);\n        var offset = 0;\n        var lng = desiredChannelBuffer.length;\n        for (var i = 0; i < lng; ++i) {\n            var buffer = desiredChannelBuffer[i];\n            result.set(buffer, offset);\n            offset += buffer.length;\n        }\n        return result;\n    };\n    RecordMedia.prototype.writeUTFBytes = function (view, offset, value) {\n        var lng = value.length;\n        for (var i = 0; i < lng; i++) {\n            view.setUint8(offset + i, value.charCodeAt(i));\n        }\n    };\n    return RecordMedia;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Record.ts\nvar Record_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar Record = /** @class */ (function (_super) {\n    Record_extends(Record, _super);\n    function Record(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Record.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        var mediaRecorder;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            var editorElement = vditor[vditor.currentMode].element;\n            if (!mediaRecorder) {\n                navigator.mediaDevices.getUserMedia({ audio: true }).then(function (mediaStream) {\n                    mediaRecorder = new RecordMedia(mediaStream);\n                    mediaRecorder.recorder.onaudioprocess = function (e) {\n                        // Do nothing if not recording:\n                        if (!mediaRecorder.isRecording) {\n                            return;\n                        }\n                        // Copy the data from the input buffers;\n                        var left = e.inputBuffer.getChannelData(0);\n                        var right = e.inputBuffer.getChannelData(1);\n                        mediaRecorder.cloneChannelData(left, right);\n                    };\n                    mediaRecorder.startRecordingNewWavFile();\n                    vditor.tip.show(window.VditorI18n.recording);\n                    editorElement.setAttribute(\"contenteditable\", \"false\");\n                    _this.element.children[0].classList.add(\"vditor-menu--current\");\n                }).catch(function () {\n                    vditor.tip.show(window.VditorI18n[\"record-tip\"]);\n                });\n                return;\n            }\n            if (mediaRecorder.isRecording) {\n                mediaRecorder.stopRecording();\n                vditor.tip.hide();\n                var file = new File([mediaRecorder.buildWavFileBlob()], \"record\".concat((new Date()).getTime(), \".wav\"), { type: \"video/webm\" });\n                uploadFiles(vditor, [file]);\n                _this.element.children[0].classList.remove(\"vditor-menu--current\");\n            }\n            else {\n                vditor.tip.show(window.VditorI18n.recording);\n                editorElement.setAttribute(\"contenteditable\", \"false\");\n                mediaRecorder.startRecordingNewWavFile();\n                _this.element.children[0].classList.add(\"vditor-menu--current\");\n            }\n        });\n    };\n    return Record;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Redo.ts\nvar Redo_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Redo = /** @class */ (function (_super) {\n    Redo_extends(Redo, _super);\n    function Redo(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        disableToolbar({ redo: _this.element }, [\"redo\"]);\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.undo.redo(vditor);\n        });\n        return _this;\n    }\n    return Redo;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Undo.ts\nvar Undo_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Undo = /** @class */ (function (_super) {\n    Undo_extends(Undo, _super);\n    function Undo(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        disableToolbar({ undo: _this.element }, [\"undo\"]);\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.undo.undo(vditor);\n        });\n        return _this;\n    }\n    return Undo;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Upload.ts\nvar Upload_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Upload_Upload = /** @class */ (function (_super) {\n    Upload_extends(Upload, _super);\n    function Upload(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var inputHTML = '<input type=\"file\"';\n        if (vditor.options.upload.multiple) {\n            inputHTML += ' multiple=\"multiple\"';\n        }\n        if (vditor.options.upload.accept) {\n            inputHTML += \" accept=\\\"\".concat(vditor.options.upload.accept, \"\\\"\");\n        }\n        _this.element.children[0].innerHTML = \"\".concat((menuItem.icon || '<svg><use xlink:href=\"#vditor-icon-upload\"></use></svg>')).concat(inputHTML, \">\");\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Upload.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                event.stopPropagation();\n                event.preventDefault();\n                return;\n            }\n        });\n        this.element.querySelector(\"input\").addEventListener(\"change\", function (event) {\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                event.stopPropagation();\n                event.preventDefault();\n                return;\n            }\n            if (event.target.files.length === 0) {\n                return;\n            }\n            uploadFiles(vditor, event.target.files, event.target);\n        });\n    };\n    return Upload;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Toolbar = /** @class */ (function () {\n    function Toolbar(vditor) {\n        var _this = this;\n        var options = vditor.options;\n        this.elements = {};\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar\";\n        options.toolbar.forEach(function (menuItem, i) {\n            var itemElement = _this.genItem(vditor, menuItem, i);\n            _this.element.appendChild(itemElement);\n            if (menuItem.toolbar) {\n                var panelElement_1 = document.createElement(\"div\");\n                panelElement_1.className = \"vditor-hint vditor-panel--arrow\";\n                panelElement_1.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n                    panelElement_1.style.display = \"none\";\n                });\n                menuItem.toolbar.forEach(function (subMenuItem, subI) {\n                    subMenuItem.level = 2;\n                    panelElement_1.appendChild(_this.genItem(vditor, subMenuItem, i + subI));\n                });\n                itemElement.appendChild(panelElement_1);\n                toggleSubMenu(vditor, panelElement_1, itemElement.children[0], 2);\n            }\n        });\n        if (vditor.options.toolbarConfig.hide) {\n            this.element.classList.add(\"vditor-toolbar--hide\");\n        }\n        if (vditor.options.toolbarConfig.pin) {\n            this.element.classList.add(\"vditor-toolbar--pin\");\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter = new Counter(vditor);\n            this.element.appendChild(vditor.counter.element);\n        }\n    }\n    Toolbar.prototype.updateConfig = function (vditor, options) {\n        vditor.options.toolbarConfig = Object.assign({\n            hide: false,\n            pin: false,\n        }, options);\n        if (vditor.options.toolbarConfig.hide) {\n            this.element.classList.add(\"vditor-toolbar--hide\");\n        }\n        else {\n            this.element.classList.remove(\"vditor-toolbar--hide\");\n        }\n        if (vditor.options.toolbarConfig.pin) {\n            this.element.classList.add(\"vditor-toolbar--pin\");\n        }\n        else {\n            this.element.classList.remove(\"vditor-toolbar--pin\");\n        }\n    };\n    Toolbar.prototype.genItem = function (vditor, menuItem, index) {\n        var menuItemObj;\n        switch (menuItem.name) {\n            case \"bold\":\n            case \"italic\":\n            case \"more\":\n            case \"strike\":\n            case \"line\":\n            case \"quote\":\n            case \"list\":\n            case \"ordered-list\":\n            case \"check\":\n            case \"code\":\n            case \"inline-code\":\n            case \"link\":\n            case \"table\":\n                menuItemObj = new MenuItem(vditor, menuItem);\n                break;\n            case \"emoji\":\n                menuItemObj = new Emoji(vditor, menuItem);\n                break;\n            case \"headings\":\n                menuItemObj = new Headings(vditor, menuItem);\n                break;\n            case \"|\":\n                menuItemObj = new Divider();\n                break;\n            case \"br\":\n                menuItemObj = new Br();\n                break;\n            case \"undo\":\n                menuItemObj = new Undo(vditor, menuItem);\n                break;\n            case \"redo\":\n                menuItemObj = new Redo(vditor, menuItem);\n                break;\n            case \"help\":\n                menuItemObj = new Help(vditor, menuItem);\n                break;\n            case \"both\":\n                menuItemObj = new Both(vditor, menuItem);\n                break;\n            case \"preview\":\n                menuItemObj = new Preview_Preview(vditor, menuItem);\n                break;\n            case \"fullscreen\":\n                menuItemObj = new Fullscreen(vditor, menuItem);\n                break;\n            case \"upload\":\n                menuItemObj = new Upload_Upload(vditor, menuItem);\n                break;\n            case \"record\":\n                menuItemObj = new Record(vditor, menuItem);\n                break;\n            case \"info\":\n                menuItemObj = new Info(vditor, menuItem);\n                break;\n            case \"edit-mode\":\n                menuItemObj = new EditMode(vditor, menuItem);\n                break;\n            case \"devtools\":\n                menuItemObj = new Devtools(vditor, menuItem);\n                break;\n            case \"outdent\":\n                menuItemObj = new Outdent(vditor, menuItem);\n                break;\n            case \"indent\":\n                menuItemObj = new Indent(vditor, menuItem);\n                break;\n            case \"outline\":\n                menuItemObj = new Outline_Outline(vditor, menuItem);\n                break;\n            case \"insert-after\":\n                menuItemObj = new InsertAfter(vditor, menuItem);\n                break;\n            case \"insert-before\":\n                menuItemObj = new InsertBefore(vditor, menuItem);\n                break;\n            case \"code-theme\":\n                menuItemObj = new CodeTheme(vditor, menuItem);\n                break;\n            case \"content-theme\":\n                menuItemObj = new ContentTheme(vditor, menuItem);\n                break;\n            case \"export\":\n                menuItemObj = new Export(vditor, menuItem);\n                break;\n            default:\n                menuItemObj = new Custom(vditor, menuItem);\n                break;\n        }\n        if (!menuItemObj) {\n            return;\n        }\n        var key = menuItem.name;\n        if (key === \"br\" || key === \"|\") {\n            key = key + index;\n        }\n        this.elements[key] = menuItemObj.element;\n        return menuItemObj.element;\n    };\n    return Toolbar;\n}());\n\n\n// EXTERNAL MODULE: ./node_modules/.pnpm/diff-match-patch@1.0.5/node_modules/diff-match-patch/index.js\nvar diff_match_patch = __webpack_require__(173);\n;// CONCATENATED MODULE: ./src/ts/undo/index.ts\n\n\n\n\n\n\n\n\n\nvar undo_Undo = /** @class */ (function () {\n    function Undo() {\n        this.stackSize = 50;\n        this.resetStack();\n        // @ts-ignore\n        this.dmp = new diff_match_patch();\n    }\n    Undo.prototype.clearStack = function (vditor) {\n        this.resetStack();\n        this.resetIcon(vditor);\n    };\n    Undo.prototype.resetIcon = function (vditor) {\n        if (!vditor.toolbar) {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        if (this[vditor.currentMode].redoStack.length !== 0) {\n            enableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n    };\n    Undo.prototype.undo = function (vditor) {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length < 2) {\n            return;\n        }\n        var state = this[vditor.currentMode].undoStack.pop();\n        if (!state) {\n            return;\n        }\n        this[vditor.currentMode].redoStack.push(state);\n        this.renderDiff(state, vditor);\n        this[vditor.currentMode].hasUndo = true;\n        // undo 操作后，需要关闭 hint\n        hidePanel(vditor, [\"hint\"]);\n    };\n    Undo.prototype.redo = function (vditor) {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        var state = this[vditor.currentMode].redoStack.pop();\n        if (!state) {\n            return;\n        }\n        this[vditor.currentMode].undoStack.push(state);\n        this.renderDiff(state, vditor, true);\n    };\n    Undo.prototype.recordFirstPosition = function (vditor, event) {\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length !== 1 || this[vditor.currentMode].undoStack[0].length === 0 ||\n            this[vditor.currentMode].redoStack.length > 0) {\n            return;\n        }\n        if ((0,compatibility/* isFirefox */.vU)() && event.key === \"Backspace\") {\n            // Firefox 第一次删除无效\n            return;\n        }\n        if ((0,compatibility/* isSafari */.G6)()) {\n            // Safari keydown 在 input 之后，不需要重复记录历史\n            return;\n        }\n        var text = this.addCaret(vditor);\n        if (text.replace(\"<wbr>\", \"\").replace(\" vditor-ir__node--expand\", \"\")\n            !== this[vditor.currentMode].undoStack[0][0].diffs[0][1].replace(\"<wbr>\", \"\")) {\n            // 当还不没有存入 undo 栈时，按下 ctrl 后会覆盖 lastText\n            return;\n        }\n        this[vditor.currentMode].undoStack[0][0].diffs[0][1] = text;\n        this[vditor.currentMode].lastText = text;\n        // 不能添加 setSelectionFocus(cloneRange); 否则 windows chrome 首次输入会烂\n    };\n    Undo.prototype.addToUndoStack = function (vditor) {\n        // afterRenderEvent.ts 已经 debounce\n        var text = this.addCaret(vditor, true);\n        var diff = this.dmp.diff_main(text, this[vditor.currentMode].lastText, true);\n        var patchList = this.dmp.patch_make(text, this[vditor.currentMode].lastText, diff);\n        if (patchList.length === 0 && this[vditor.currentMode].undoStack.length > 0) {\n            return;\n        }\n        this[vditor.currentMode].lastText = text;\n        this[vditor.currentMode].undoStack.push(patchList);\n        if (this[vditor.currentMode].undoStack.length > this.stackSize) {\n            this[vditor.currentMode].undoStack.shift();\n        }\n        if (this[vditor.currentMode].hasUndo) {\n            this[vditor.currentMode].redoStack = [];\n            this[vditor.currentMode].hasUndo = false;\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n    };\n    Undo.prototype.renderDiff = function (state, vditor, isRedo) {\n        if (isRedo === void 0) { isRedo = false; }\n        var text;\n        if (isRedo) {\n            var redoPatchList = this.dmp.patch_deepCopy(state).reverse();\n            redoPatchList.forEach(function (patch) {\n                patch.diffs.forEach(function (diff) {\n                    diff[0] = -diff[0];\n                });\n            });\n            text = this.dmp.patch_apply(redoPatchList, this[vditor.currentMode].lastText)[0];\n        }\n        else {\n            text = this.dmp.patch_apply(state, this[vditor.currentMode].lastText)[0];\n        }\n        this[vditor.currentMode].lastText = text;\n        vditor[vditor.currentMode].element.innerHTML = text;\n        if (vditor.currentMode !== \"sv\") {\n            vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview\"))\n                .forEach(function (blockElement) {\n                if (blockElement.parentElement.querySelector(\".language-echarts\")) {\n                    if (vditor.currentMode === \"ir\") {\n                        blockElement.parentElement.outerHTML = vditor.lute.SpinVditorIRDOM(blockElement.parentElement.outerHTML);\n                    }\n                    else {\n                        blockElement.parentElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.parentElement.outerHTML);\n                    }\n                }\n            });\n            vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (blockElement) {\n                processCodeRender(blockElement, vditor);\n            });\n        }\n        if (!vditor[vditor.currentMode].element.querySelector(\"wbr\")) {\n            // Safari 第一次输入没有光标，需手动定位到结尾\n            var range = getSelection().getRangeAt(0);\n            range.setEndBefore(vditor[vditor.currentMode].element);\n            range.collapse(false);\n        }\n        else {\n            (0,util_selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, vditor[vditor.currentMode].element.ownerDocument.createRange());\n            scrollCenter(vditor);\n        }\n        renderToc(vditor);\n        execAfterRender(vditor, {\n            enableAddUndoStack: false,\n            enableHint: false,\n            enableInput: true,\n        });\n        highlightToolbar(vditor);\n        vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n            .forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        if (this[vditor.currentMode].redoStack.length !== 0) {\n            enableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n    };\n    Undo.prototype.resetStack = function () {\n        this.ir = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n        this.sv = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n        this.wysiwyg = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n    };\n    Undo.prototype.addCaret = function (vditor, setFocus) {\n        if (setFocus === void 0) { setFocus = false; }\n        var cloneRange;\n        if (getSelection().rangeCount !== 0 && !vditor[vditor.currentMode].element.querySelector(\"wbr\")) {\n            var range = getSelection().getRangeAt(0);\n            if (vditor[vditor.currentMode].element.contains(range.startContainer)) {\n                cloneRange = range.cloneRange();\n                var wbrElement = document.createElement(\"span\");\n                wbrElement.className = \"vditor-wbr\";\n                range.insertNode(wbrElement);\n            }\n        }\n        // 移除数学公式、echart 渲染 https://github.com/Vanessa219/vditor/issues/1738\n        var cloneElement = vditor[vditor.currentMode].element.cloneNode(true);\n        cloneElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='1']\"))\n            .forEach(function (item) {\n            if (!item.firstElementChild) {\n                return;\n            }\n            if (item.firstElementChild.classList.contains(\"language-echarts\") ||\n                item.firstElementChild.classList.contains(\"language-plantuml\") ||\n                item.firstElementChild.classList.contains(\"language-mindmap\")) {\n                item.firstElementChild.removeAttribute(\"_echarts_instance_\");\n                item.firstElementChild.removeAttribute(\"data-processed\");\n                item.firstElementChild.innerHTML = item.previousElementSibling.firstElementChild.innerHTML;\n                item.setAttribute(\"data-render\", \"2\");\n            }\n            else if (item.firstElementChild.classList.contains(\"language-math\")) {\n                item.setAttribute(\"data-render\", \"2\");\n                item.firstElementChild.textContent = item.firstElementChild.getAttribute(\"data-math\");\n                item.firstElementChild.removeAttribute(\"data-math\");\n            }\n        });\n        var text = cloneElement.innerHTML;\n        vditor[vditor.currentMode].element.querySelectorAll(\".vditor-wbr\").forEach(function (item) {\n            item.remove();\n            // 使用 item.outerHTML = \"\" 会产生 https://github.com/Vanessa219/vditor/pull/686;\n        });\n        if (setFocus && cloneRange) {\n            (0,util_selection/* setSelectionFocus */.Hc)(cloneRange);\n        }\n        return text.replace('<span class=\"vditor-wbr\"></span>', \"<wbr>\");\n    };\n    return Undo;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(673);\n;// CONCATENATED MODULE: ./src/ts/util/Options.ts\n\n\nvar Options = /** @class */ (function () {\n    function Options(options) {\n        this.defaultOptions = {\n            rtl: false,\n            after: undefined,\n            cache: {\n                enable: true,\n            },\n            cdn: constants/* Constants.CDN */.g.CDN,\n            classes: {\n                preview: \"\",\n            },\n            comment: {\n                enable: false,\n            },\n            counter: {\n                enable: false,\n                type: \"markdown\",\n            },\n            customRenders: [],\n            debugger: false,\n            fullscreen: {\n                index: 90,\n            },\n            height: \"auto\",\n            hint: {\n                delay: 200,\n                emoji: {\n                    \"+1\": \"👍\",\n                    \"-1\": \"👎\",\n                    \"confused\": \"😕\",\n                    \"eyes\": \"👀️\",\n                    \"heart\": \"❤️\",\n                    \"rocket\": \"🚀️\",\n                    \"smile\": \"😄\",\n                    \"tada\": \"🎉️\",\n                },\n                emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n                extend: [],\n                parse: true,\n            },\n            icon: \"ant\",\n            lang: \"zh_CN\",\n            mode: \"ir\",\n            outline: {\n                enable: false,\n                position: \"left\",\n            },\n            placeholder: \"\",\n            preview: {\n                actions: [\"desktop\", \"tablet\", \"mobile\", \"mp-wechat\", \"zhihu\"],\n                delay: 1000,\n                hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n                markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n                math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n                maxWidth: 800,\n                mode: \"both\",\n                theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n                render: {\n                    media: {\n                        enable: true,\n                    }\n                }\n            },\n            link: {\n                isOpen: true,\n            },\n            image: {\n                isPreview: true,\n            },\n            resize: {\n                enable: false,\n                position: \"bottom\",\n            },\n            theme: \"classic\",\n            toolbar: [\n                \"emoji\",\n                \"headings\",\n                \"bold\",\n                \"italic\",\n                \"strike\",\n                \"link\",\n                \"|\",\n                \"list\",\n                \"ordered-list\",\n                \"check\",\n                \"outdent\",\n                \"indent\",\n                \"|\",\n                \"quote\",\n                \"line\",\n                \"code\",\n                \"inline-code\",\n                \"insert-before\",\n                \"insert-after\",\n                \"|\",\n                \"upload\",\n                \"record\",\n                \"table\",\n                \"|\",\n                \"undo\",\n                \"redo\",\n                \"|\",\n                \"fullscreen\",\n                \"edit-mode\",\n                {\n                    name: \"more\",\n                    toolbar: [\n                        \"both\",\n                        \"code-theme\",\n                        \"content-theme\",\n                        \"export\",\n                        \"outline\",\n                        \"preview\",\n                        \"devtools\",\n                        \"info\",\n                        \"help\",\n                    ],\n                },\n            ],\n            toolbarConfig: {\n                hide: false,\n                pin: false,\n            },\n            typewriterMode: false,\n            undoDelay: 800,\n            upload: {\n                extraData: {},\n                fieldName: \"file[]\",\n                filename: function (name) { return name.replace(/\\W/g, \"\"); },\n                linkToImgUrl: \"\",\n                max: 10 * 1024 * 1024,\n                multiple: true,\n                url: \"\",\n                withCredentials: false,\n            },\n            value: \"\",\n            width: \"auto\",\n        };\n        this.options = options;\n    }\n    Options.prototype.merge = function () {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n        if (this.options) {\n            if (this.options.toolbar) {\n                this.options.toolbar = this.mergeToolbar(this.options.toolbar);\n            }\n            else {\n                this.options.toolbar = this.mergeToolbar(this.defaultOptions.toolbar);\n            }\n            if ((_b = (_a = this.options.preview) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.list) {\n                this.defaultOptions.preview.theme.list = this.options.preview.theme.list;\n            }\n            if ((_e = (_d = (_c = this.options.preview) === null || _c === void 0 ? void 0 : _c.render) === null || _d === void 0 ? void 0 : _d.media) === null || _e === void 0 ? void 0 : _e.enable) {\n                this.defaultOptions.preview.render.media.enable = this.options.preview.render.media.enable;\n            }\n            if ((_f = this.options.hint) === null || _f === void 0 ? void 0 : _f.emoji) {\n                this.defaultOptions.hint.emoji = this.options.hint.emoji;\n            }\n            if (this.options.comment) {\n                this.defaultOptions.comment = this.options.comment;\n            }\n            if (this.options.cdn) {\n                if (!((_h = (_g = this.options.preview) === null || _g === void 0 ? void 0 : _g.theme) === null || _h === void 0 ? void 0 : _h.path)) {\n                    this.defaultOptions.preview.theme.path = \"\".concat(this.options.cdn, \"/dist/css/content-theme\");\n                }\n                if (!((_j = this.options.hint) === null || _j === void 0 ? void 0 : _j.emojiPath)) {\n                    this.defaultOptions.hint.emojiPath = \"\".concat(this.options.cdn, \"/dist/images/emoji\");\n                }\n            }\n        }\n        var mergedOptions = (0,merge/* merge */.T)(this.defaultOptions, this.options);\n        if (mergedOptions.cache.enable && !mergedOptions.cache.id) {\n            throw new Error(\"need options.cache.id, see https://ld246.com/article/1549638745630#options\");\n        }\n        return mergedOptions;\n    };\n    Options.prototype.mergeToolbar = function (toolbar) {\n        var _this = this;\n        var toolbarItem = [\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-export\"></use></svg>',\n                name: \"export\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘E\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-emoji\"></use></svg>',\n                name: \"emoji\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘H\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-headings\"></use></svg>',\n                name: \"headings\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘B\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-bold\"></use></svg>',\n                name: \"bold\",\n                prefix: \"**\",\n                suffix: \"**\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘I\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-italic\"></use></svg>',\n                name: \"italic\",\n                prefix: \"*\",\n                suffix: \"*\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘D\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-strike\"></use></svg>',\n                name: \"strike\",\n                prefix: \"~~\",\n                suffix: \"~~\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘K\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-link\"></use></svg>',\n                name: \"link\",\n                prefix: \"[\",\n                suffix: \"](https://)\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘L\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-list\"></use></svg>',\n                name: \"list\",\n                prefix: \"* \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘O\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-ordered-list\"></use></svg>',\n                name: \"ordered-list\",\n                prefix: \"1. \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘J\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-check\"></use></svg>',\n                name: \"check\",\n                prefix: \"* [ ] \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘I\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-outdent\"></use></svg>',\n                name: \"outdent\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘O\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-indent\"></use></svg>',\n                name: \"indent\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘;\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-quote\"></use></svg>',\n                name: \"quote\",\n                prefix: \"> \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘H\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-line\"></use></svg>',\n                name: \"line\",\n                prefix: \"---\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘U\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-code\"></use></svg>',\n                name: \"code\",\n                prefix: \"```\",\n                suffix: \"\\n```\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘G\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-inline-code\"></use></svg>',\n                name: \"inline-code\",\n                prefix: \"`\",\n                suffix: \"`\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘B\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-before\"></use></svg>',\n                name: \"insert-before\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘E\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-after\"></use></svg>',\n                name: \"insert-after\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-upload\"></use></svg>',\n                name: \"upload\",\n                tipPosition: \"n\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-record\"></use></svg>',\n                name: \"record\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘M\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-table\"></use></svg>',\n                name: \"table\",\n                prefix: \"| col1\",\n                suffix: \" | col2 | col3 |\\n| --- | --- | --- |\\n|  |  |  |\\n|  |  |  |\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘Z\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-undo\"></use></svg>',\n                name: \"undo\",\n                tipPosition: \"nw\",\n            },\n            {\n                hotkey: \"⌘Y\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-redo\"></use></svg>',\n                name: \"redo\",\n                tipPosition: \"nw\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-more\"></use></svg>',\n                name: \"more\",\n                tipPosition: \"e\",\n            },\n            {\n                hotkey: \"⌘'\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-fullscreen\"></use></svg>',\n                name: \"fullscreen\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-edit\"></use></svg>',\n                name: \"edit-mode\",\n                tipPosition: \"nw\",\n            },\n            {\n                hotkey: \"⌘P\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-both\"></use></svg>',\n                name: \"both\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-preview\"></use></svg>',\n                name: \"preview\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-align-center\"></use></svg>',\n                name: \"outline\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-theme\"></use></svg>',\n                name: \"content-theme\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-code-theme\"></use></svg>',\n                name: \"code-theme\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-bug\"></use></svg>',\n                name: \"devtools\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-info\"></use></svg>',\n                name: \"info\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-help\"></use></svg>',\n                name: \"help\",\n                tipPosition: \"nw\",\n            },\n            {\n                name: \"br\",\n            },\n        ];\n        var toolbarResult = [];\n        toolbar.forEach(function (menuItem) {\n            var currentMenuItem = menuItem;\n            toolbarItem.forEach(function (defaultMenuItem) {\n                if (typeof menuItem === \"string\" &&\n                    defaultMenuItem.name === menuItem) {\n                    currentMenuItem = defaultMenuItem;\n                }\n                if (typeof menuItem === \"object\" &&\n                    defaultMenuItem.name === menuItem.name) {\n                    currentMenuItem = Object.assign({}, defaultMenuItem, menuItem);\n                }\n            });\n            if (menuItem.toolbar) {\n                currentMenuItem.toolbar = _this.mergeToolbar(menuItem.toolbar);\n            }\n            toolbarResult.push(currentMenuItem);\n        });\n        return toolbarResult;\n    };\n    return Options;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/placeholder.ts\n\n// 模块作用域变量\nvar placeholderTimer = null;\nvar placeholderElement = null;\nvar placeholder = function (inputing, vditor) {\n    var config = vditor.options.hint.placeholder;\n    if (!config)\n        return;\n    var _a = config.delay, delay = _a === void 0 ? 2000 : _a, _b = config.text, text = _b === void 0 ? '请输入@' : _b;\n    // 清除之前的定时器\n    if (placeholderTimer) {\n        clearTimeout(placeholderTimer);\n        placeholderTimer = null;\n        if (placeholderElement) {\n            placeholderElement.style.display = 'none';\n        }\n    }\n    // 用户停止输入，设置2秒后显示提示\n    placeholderTimer = setTimeout(function () {\n        var editorElement = vditor[vditor.currentMode].element;\n        var _a = (0,util_selection/* getCursorPosition */.Ny)(editorElement), cursorTop = _a.top, cursorLeft = _a.left;\n        // 获取编辑器在页面中的位置\n        var editorRect = editorElement.getBoundingClientRect();\n        // 计算绝对位置（考虑编辑器位置和页面滚动）\n        var absoluteLeft = editorRect.left + cursorLeft + window.scrollX;\n        var absoluteTop = editorRect.top + cursorTop + window.scrollY;\n        var selection = window.getSelection();\n        if (!selection || selection.rangeCount === 0)\n            return;\n        // 获取当前光标位置\n        var range = selection.getRangeAt(0);\n        // 检查光标后是否有文本内容\n        var hasTextAfter = false;\n        // 方法1: 检查当前文本节点是否有后续文本\n        if (range.startContainer.nodeType === Node.TEXT_NODE) {\n            var text_1 = range.startContainer.textContent || '';\n            if (text_1.length > range.startOffset) {\n                hasTextAfter = true;\n            }\n        }\n        // 方法2: 检查后续兄弟节点\n        // if (!hasTextAfter) {\n        //     let nextNode = range.startContainer.nextSibling;\n        //     while (nextNode) {\n        //         if (nextNode.textContent && nextNode.textContent.trim().length > 0) {\n        //             hasTextAfter = true;\n        //             break;\n        //         }\n        //         nextNode = nextNode.nextSibling;\n        //     }\n        // }\n        // 方法3: 检查父节点的后续内容\n        // if (!hasTextAfter) {\n        //     let parent = range.startContainer.parentNode;\n        //     while (parent) {\n        //         if (parent.textContent && parent.textContent.length > range.startOffset) {\n        //             hasTextAfter = true;\n        //             break;\n        //         }\n        //         parent = parent.parentNode;\n        //     }\n        // }\n        // 如果光标后有文本内容，不显示提示\n        if (hasTextAfter) {\n            if (placeholderElement) {\n                placeholderElement.style.display = 'none';\n            }\n            return;\n        }\n        // 创建或显示占位提示\n        if (!placeholderElement) {\n            placeholderElement = document.createElement('div');\n            placeholderElement.className = 'placeholder-tooltip event-none';\n            placeholderElement.textContent = text;\n            document.body.appendChild(placeholderElement);\n        }\n        // 设置位置并显示\n        placeholderElement.style.left = \"\".concat(absoluteLeft + 10, \"px\"); // 添加10px水平偏移避免遮挡光标\n        placeholderElement.style.top = \"\".concat(absoluteTop, \"px\");\n        placeholderElement.style.display = 'block';\n    }, delay); // 2秒后显示\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WYSIWYG = /** @class */ (function () {\n    function WYSIWYG(vditor) {\n        var _this = this;\n        this.composingLock = false;\n        this.commentIds = [];\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-wysiwyg\";\n        divElement.innerHTML = \"<pre class=\\\"vditor-reset\\\" placeholder=\\\"\".concat(vditor.options.placeholder, \"\\\"\\n contenteditable=\\\"true\\\" spellcheck=\\\"false\\\"></pre>\\n<div class=\\\"vditor-panel vditor-panel--none\\\"></div>\\n<div class=\\\"vditor-panel vditor-panel--none\\\">\\n    <button type=\\\"button\\\" aria-label=\\\"\").concat(window.VditorI18n.comment, \"\\\" class=\\\"vditor-icon vditor-tooltipped vditor-tooltipped__n\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-comment\\\"></use></svg>\\n    </button>\\n</div>\");\n        this.element = divElement.firstElementChild;\n        this.popover = divElement.firstElementChild.nextElementSibling;\n        this.selectPopover = divElement.lastElementChild;\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        dblclickEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n        if (vditor.options.comment.enable) {\n            this.selectPopover.querySelector(\"button\").onclick = function () {\n                var id = Lute.NewNodeID();\n                var range = getSelection().getRangeAt(0);\n                var rangeClone = range.cloneRange();\n                var contents = range.extractContents();\n                var blockStartElement;\n                var blockEndElement;\n                var removeStart = false;\n                var removeEnd = false;\n                contents.childNodes.forEach(function (item, index) {\n                    var wrap = false;\n                    if (item.nodeType === 3) {\n                        wrap = true;\n                    }\n                    else if (!item.classList.contains(\"vditor-comment\")) {\n                        wrap = true;\n                    }\n                    else if (item.classList.contains(\"vditor-comment\")) {\n                        item.setAttribute(\"data-cmtids\", item.getAttribute(\"data-cmtids\") + \" \" + id);\n                    }\n                    if (wrap) {\n                        if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\"\n                            && index === 0 && rangeClone.startOffset > 0) {\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                            blockStartElement = item;\n                        }\n                        else if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\"\n                            && index === contents.childNodes.length - 1\n                            && rangeClone.endOffset < rangeClone.endContainer.textContent.length) {\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                            blockEndElement = item;\n                        }\n                        else if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\") {\n                            if (index === 0) {\n                                removeStart = true;\n                            }\n                            else if (index === contents.childNodes.length - 1) {\n                                removeEnd = true;\n                            }\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                        }\n                        else {\n                            var commentElement = document.createElement(\"span\");\n                            commentElement.classList.add(\"vditor-comment\");\n                            commentElement.setAttribute(\"data-cmtids\", id);\n                            item.parentNode.insertBefore(commentElement, item);\n                            commentElement.appendChild(item);\n                        }\n                    }\n                });\n                var startElement = (0,hasClosest/* hasClosestBlock */.F9)(rangeClone.startContainer);\n                if (startElement) {\n                    if (blockStartElement) {\n                        startElement.insertAdjacentHTML(\"beforeend\", blockStartElement.innerHTML);\n                        blockStartElement.remove();\n                    }\n                    else if (startElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && removeStart) {\n                        startElement.remove();\n                    }\n                }\n                var endElement = (0,hasClosest/* hasClosestBlock */.F9)(rangeClone.endContainer);\n                if (endElement) {\n                    if (blockEndElement) {\n                        endElement.insertAdjacentHTML(\"afterbegin\", blockEndElement.innerHTML);\n                        blockEndElement.remove();\n                    }\n                    else if (endElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && removeEnd) {\n                        endElement.remove();\n                    }\n                }\n                range.insertNode(contents);\n                vditor.options.comment.add(id, range.toString(), _this.getComments(vditor, true));\n                afterRenderEvent(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: false,\n                    enableInput: false,\n                });\n                _this.hideComment();\n            };\n        }\n    }\n    WYSIWYG.prototype.getComments = function (vditor, getData) {\n        var _this = this;\n        if (getData === void 0) { getData = false; }\n        if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n            this.commentIds = [];\n            this.element.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n                _this.commentIds =\n                    _this.commentIds.concat(item.getAttribute(\"data-cmtids\").split(\" \"));\n            });\n            this.commentIds = Array.from(new Set(this.commentIds));\n            var comments_1 = [];\n            if (getData) {\n                this.commentIds.forEach(function (id) {\n                    comments_1.push({\n                        id: id,\n                        top: _this.element.querySelector(\".vditor-comment[data-cmtids=\\\"\".concat(id, \"\\\"]\")).offsetTop,\n                    });\n                });\n                return comments_1;\n            }\n        }\n        else {\n            return [];\n        }\n    };\n    WYSIWYG.prototype.triggerRemoveComment = function (vditor) {\n        var difference = function (a, b) {\n            var s = new Set(b);\n            return a.filter(function (x) { return !s.has(x); });\n        };\n        if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable && vditor.wysiwyg.commentIds.length > 0) {\n            var oldIds = JSON.parse(JSON.stringify(this.commentIds));\n            this.getComments(vditor);\n            var removedIds = difference(oldIds, this.commentIds);\n            if (removedIds.length > 0) {\n                vditor.options.comment.remove(removedIds);\n            }\n        }\n    };\n    WYSIWYG.prototype.showComment = function () {\n        var position = (0,util_selection/* getCursorPosition */.Ny)(this.element);\n        this.selectPopover.setAttribute(\"style\", \"left:\".concat(position.left, \"px;display:block;top:\").concat(Math.max(-8, position.top - 21), \"px\"));\n    };\n    WYSIWYG.prototype.hideComment = function () {\n        this.selectPopover.setAttribute(\"style\", \"display:none\");\n    };\n    WYSIWYG.prototype.unbindListener = function () {\n        window.removeEventListener(\"scroll\", this.scrollListener);\n    };\n    WYSIWYG.prototype.copy = function (event, vditor) {\n        var range = getSelection().getRangeAt(0);\n        if (range.toString() === \"\") {\n            return;\n        }\n        event.stopPropagation();\n        event.preventDefault();\n        var codeElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"CODE\");\n        var codeEndElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.endContainer, \"CODE\");\n        if (codeElement && codeEndElement && codeEndElement.isSameNode(codeElement)) {\n            var codeText = \"\";\n            if (codeElement.parentElement.tagName === \"PRE\") {\n                codeText = range.toString();\n            }\n            else {\n                codeText = \"`\" + range.toString() + \"`\";\n            }\n            event.clipboardData.setData(\"text/plain\", codeText);\n            event.clipboardData.setData(\"text/html\", \"\");\n            return;\n        }\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"A\");\n        var aEndElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.endContainer, \"A\");\n        if (aElement && aEndElement && aEndElement.isSameNode(aElement)) {\n            var aTitle = aElement.getAttribute(\"title\") || \"\";\n            if (aTitle) {\n                aTitle = \" \\\"\".concat(aTitle, \"\\\"\");\n            }\n            event.clipboardData.setData(\"text/plain\", \"[\".concat(range.toString(), \"](\").concat(aElement.getAttribute(\"href\")).concat(aTitle, \")\"));\n            event.clipboardData.setData(\"text/html\", \"\");\n            return;\n        }\n        var tempElement = document.createElement(\"div\");\n        tempElement.appendChild(range.cloneContents());\n        event.clipboardData.setData(\"text/plain\", vditor.lute.VditorDOM2Md(tempElement.innerHTML).trim());\n        event.clipboardData.setData(\"text/html\", \"\");\n    };\n    WYSIWYG.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.unbindListener();\n        window.addEventListener(\"scroll\", this.scrollListener = function () {\n            hidePanel(vditor, [\"hint\"]);\n            if (_this.popover.style.display !== \"block\" || _this.selectPopover.style.display !== \"block\") {\n                return;\n            }\n            var top = parseInt(_this.popover.getAttribute(\"data-top\"), 10);\n            if (vditor.options.height !== \"auto\") {\n                if (vditor.options.toolbarConfig.pin && vditor.toolbar.element.getBoundingClientRect().top === 0) {\n                    var popoverTop = Math.max(window.scrollY - vditor.element.offsetTop - 8, Math.min(top - vditor.wysiwyg.element.scrollTop, _this.element.clientHeight - 21)) + \"px\";\n                    if (_this.popover.style.display === \"block\") {\n                        _this.popover.style.top = popoverTop;\n                    }\n                    if (_this.selectPopover.style.display === \"block\") {\n                        _this.selectPopover.style.top = popoverTop;\n                    }\n                }\n                return;\n            }\n            else if (!vditor.options.toolbarConfig.pin) {\n                return;\n            }\n            var popoverTop1 = Math.max(top, (window.scrollY - vditor.element.offsetTop - 8)) + \"px\";\n            if (_this.popover.style.display === \"block\") {\n                _this.popover.style.top = popoverTop1;\n            }\n            if (_this.selectPopover.style.display === \"block\") {\n                _this.selectPopover.style.top = popoverTop1;\n            }\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            hidePanel(vditor, [\"hint\"]);\n            if (vditor.options.comment && vditor.options.comment.enable && vditor.options.comment.scroll) {\n                vditor.options.comment.scroll(vditor.wysiwyg.element.scrollTop);\n            }\n            if (_this.popover.style.display !== \"block\") {\n                return;\n            }\n            var top = parseInt(_this.popover.getAttribute(\"data-top\"), 10) - vditor.wysiwyg.element.scrollTop;\n            var max = -8;\n            if (vditor.options.toolbarConfig.pin && vditor.toolbar.element.getBoundingClientRect().top === 0) {\n                max = window.scrollY - vditor.element.offsetTop + max;\n            }\n            var topPx = Math.max(max, Math.min(top, _this.element.clientHeight - 21)) + \"px\";\n            _this.popover.style.top = topPx;\n            _this.selectPopover.style.top = topPx;\n        });\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n                    var node = document.createElement(\"template\");\n                    node.innerHTML = code;\n                    range.insertNode(node.content.cloneNode(true));\n                    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n                    if (blockElement) {\n                        blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n                    }\n                    else {\n                        vditor.wysiwyg.element.innerHTML = vditor.lute.SpinVditorDOM(vditor.wysiwyg.element.innerHTML);\n                    }\n                    (0,util_selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n                },\n            });\n        });\n        // 中文处理\n        this.element.addEventListener(\"compositionstart\", function () {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(getSelection().getRangeAt(0).startContainer);\n            if (headingElement && headingElement.textContent === \"\") {\n                // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150\n                renderToc(vditor);\n                return;\n            }\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                input_input(vditor, getSelection().getRangeAt(0).cloneRange(), event);\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                afterRenderEvent(vditor);\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                afterRenderEvent(vditor);\n                return;\n            }\n            var range = getSelection().getRangeAt(0);\n            var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n            if (!blockElement) {\n                // 没有被块元素包裹\n                modifyPre(vditor, range);\n                blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n            }\n            if (!blockElement) {\n                return;\n            }\n            // 前后空格处理\n            var startOffset = (0,util_selection/* getSelectPosition */.im)(blockElement, vditor.wysiwyg.element, range).start;\n            // 开始可以输入空格\n            var startSpace = true;\n            for (var i = startOffset - 1; i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n                if (blockElement.textContent.charAt(i) !== \" \" &&\n                    // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                    blockElement.textContent.charAt(i) !== \"\\t\") {\n                    startSpace = false;\n                    break;\n                }\n            }\n            if (startOffset === 0) {\n                startSpace = false;\n            }\n            // 结尾可以输入空格\n            var endSpace = true;\n            for (var i = startOffset - 1; i < blockElement.textContent.length; i++) {\n                if (blockElement.textContent.charAt(i) !== \" \" && blockElement.textContent.charAt(i) !== \"\\n\") {\n                    endSpace = false;\n                    break;\n                }\n            }\n            // https://github.com/Vanessa219/vditor/issues/729\n            if (endSpace && /^#{1,6} $/.test(blockElement.textContent)) {\n                endSpace = false;\n            }\n            var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(getSelection().getRangeAt(0).startContainer);\n            if (headingElement && headingElement.textContent === \"\") {\n                // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150\n                renderToc(vditor);\n                headingElement.remove();\n            }\n            if ((startSpace && blockElement.getAttribute(\"data-type\") !== \"code-block\")\n                || endSpace || isHeadingMD(blockElement.innerHTML) ||\n                (isHrMD(blockElement.innerHTML) && blockElement.previousElementSibling)) {\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n                return;\n            }\n            // https://github.com/Vanessa219/vditor/issues/1565\n            if (event.inputType === \"insertParagraph\" && _this.element.innerHTML === '<p><br></p><p><br></p>') {\n                blockElement.previousElementSibling.remove();\n            }\n            input_input(vditor, range, event);\n        });\n        this.element.addEventListener(\"click\", function (event) {\n            if (event.target.tagName === \"INPUT\") {\n                var checkElement = event.target;\n                if (checkElement.checked) {\n                    checkElement.setAttribute(\"checked\", \"checked\");\n                }\n                else {\n                    checkElement.removeAttribute(\"checked\");\n                }\n                _this.preventInput = true;\n                if (getSelection().rangeCount > 0) {\n                    (0,util_selection/* setSelectionFocus */.Hc)(getSelection().getRangeAt(0));\n                }\n                afterRenderEvent(vditor);\n                return;\n            }\n            if (event.target.tagName === \"IMG\" &&\n                // plantuml 图片渲染不进行提示\n                !event.target.parentElement.classList.contains(\"vditor-wysiwyg__preview\")) {\n                if (event.target.getAttribute(\"data-type\") === \"link-ref\") {\n                    genLinkRefPopover(vditor, event.target);\n                }\n                else {\n                    genImagePopover(event, vditor);\n                }\n                return;\n            }\n            // 打开链接\n            var a = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"A\");\n            if (a) {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(a);\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(a.getAttribute(\"href\"));\n                }\n                event.preventDefault();\n                return;\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            if (event.target.isEqualNode(_this.element) && _this.element.lastElementChild && range.collapsed) {\n                var lastRect = _this.element.lastElementChild.getBoundingClientRect();\n                if (event.y > lastRect.top + lastRect.height) {\n                    if (_this.element.lastElementChild.tagName === \"P\" &&\n                        _this.element.lastElementChild.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        range.selectNodeContents(_this.element.lastElementChild);\n                        range.collapse(false);\n                    }\n                    else {\n                        _this.element.insertAdjacentHTML(\"beforeend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n                        (0,util_selection/* setRangeByWbr */.ib)(_this.element, range);\n                    }\n                }\n            }\n            // 点击后光标落于预览区，展示高亮工具\n            // highlightToolbarWYSIWYG(vditor);\n            placeholder(false, vditor);\n            // 点击后光标落于预览区，需展开代码块\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(event.target, \"vditor-wysiwyg__preview\");\n            if (!previewElement) {\n                previewElement =\n                    (0,hasClosest/* hasClosestByClassName */.fb)((0,util_selection/* getEditorRange */.zh)(vditor).startContainer, \"vditor-wysiwyg__preview\");\n            }\n            if (previewElement) {\n                showCode(previewElement, vditor);\n            }\n            clickToc(event, vditor);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            // 除 md 处理、cell 内换行、table 添加新行/列、代码块语言切换、block render 换行、跳出/逐层跳出 blockquote、h6 换行、\n            // 任务列表换行、软换行外需在换行时调整文档位置\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.wysiwyg.element.innerHTML !== \"\" && vditor.wysiwyg.element.childNodes.length === 1 &&\n                vditor.wysiwyg.element.firstElementChild && vditor.wysiwyg.element.firstElementChild.tagName === \"P\"\n                && vditor.wysiwyg.element.firstElementChild.childElementCount === 0\n                && (vditor.wysiwyg.element.textContent === \"\" || vditor.wysiwyg.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.wysiwyg.element.innerHTML = \"\";\n            }\n            var range = (0,util_selection/* getEditorRange */.zh)(vditor);\n            if (event.key === \"Backspace\") {\n                // firefox headings https://github.com/Vanessa219/vditor/issues/211\n                if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.textContent === \"\\n\" && range.startOffset === 1) {\n                    range.startContainer.textContent = \"\";\n                }\n            }\n            // 没有被块元素包裹\n            modifyPre(vditor, range);\n            // 输入内容时，展示高亮工具\n            // highlightToolbarWYSIWYG(vditor);\n            placeholder(true, vditor);\n            if (event.key !== \"ArrowDown\" && event.key !== \"ArrowRight\" && event.key !== \"Backspace\"\n                && event.key !== \"ArrowLeft\" && event.key !== \"ArrowUp\") {\n                return;\n            }\n            if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n                vditor.hint.render(vditor);\n            }\n            // 上下左右，删除遇到块预览的处理\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-wysiwyg__preview\");\n            if (!previewElement && range.startContainer.nodeType !== 3 && range.startOffset > 0) {\n                // table 前删除遇到代码块\n                var blockRenderElement = range.startContainer;\n                if (blockRenderElement.classList.contains(\"vditor-wysiwyg__block\")) {\n                    previewElement = blockRenderElement.lastElementChild;\n                }\n            }\n            if (!previewElement) {\n                return;\n            }\n            var previousElement = previewElement.previousElementSibling;\n            if (previousElement.style.display === \"none\") {\n                if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n                    showCode(previewElement, vditor);\n                }\n                else {\n                    showCode(previewElement, vditor, false);\n                }\n                return;\n            }\n            var codeElement = previewElement.previousElementSibling;\n            if (codeElement.tagName === \"PRE\") {\n                codeElement = codeElement.firstElementChild;\n            }\n            if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n                var blockRenderElement = previewElement.parentElement;\n                var nextNode = getRenderElementNextNode(blockRenderElement);\n                if (nextNode && nextNode.nodeType !== 3) {\n                    // 下一节点依旧为代码渲染块\n                    var nextRenderElement = nextNode.querySelector(\".vditor-wysiwyg__preview\");\n                    if (nextRenderElement) {\n                        showCode(nextRenderElement, vditor);\n                        return;\n                    }\n                }\n                // 跳过渲染块，光标移动到下一个节点\n                if (nextNode.nodeType === 3) {\n                    // inline\n                    while (nextNode.textContent.length === 0 && nextNode.nextSibling) {\n                        // https://github.com/Vanessa219/vditor/issues/100 2\n                        nextNode = nextNode.nextSibling;\n                    }\n                    range.setStart(nextNode, 1);\n                }\n                else {\n                    // block\n                    range.setStart(nextNode.firstChild, 0);\n                }\n            }\n            else {\n                range.selectNodeContents(codeElement);\n                range.collapse(false);\n            }\n        });\n    };\n    return WYSIWYG;\n}());\n\n\n;// CONCATENATED MODULE: ./src/index.ts\nvar src_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function (_super) {\n    src_extends(Vditor, _super);\n    /**\n     * @param id 要挂载 Vditor 的元素或者元素 ID。\n     * @param options Vditor 参数\n     */\n    function Vditor(id, options) {\n        var _this = _super.call(this) || this;\n        _this.isDestroyed = false;\n        _this.version = constants/* VDITOR_VERSION */.H;\n        if (typeof id === \"string\") {\n            if (!options) {\n                options = {\n                    cache: {\n                        id: \"vditor\".concat(id),\n                    },\n                };\n            }\n            else if (!options.cache) {\n                options.cache = { id: \"vditor\".concat(id) };\n            }\n            else if (!options.cache.id) {\n                options.cache.id = \"vditor\".concat(id);\n            }\n            if (!document.getElementById(id)) {\n                _this.showErrorTip(\"Failed to get element by id: \".concat(id));\n                return _this;\n            }\n            id = document.getElementById(id);\n        }\n        var getOptions = new Options(options);\n        var mergedOptions = getOptions.merge();\n        // 支持自定义国际化\n        if (!mergedOptions.i18n) {\n            if (![\"de_DE\", \"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) {\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            }\n            else {\n                var i18nScriptPrefix = \"vditorI18nScript\";\n                var i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1).then(function () {\n                    _this.init(id, mergedOptions);\n                }).catch(function (error) {\n                    _this.showErrorTip(\"GET \".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js net::ERR_ABORTED 404 (Not Found)\"));\n                });\n            }\n        }\n        else {\n            window.VditorI18n = mergedOptions.i18n;\n            _this.init(id, mergedOptions);\n        }\n        return _this;\n    }\n    Vditor.prototype.showErrorTip = function (error) {\n        var tip = new Tip();\n        document.body.appendChild(tip.element);\n        tip.show(error, 0);\n    };\n    Vditor.prototype.updateToolbarConfig = function (options) {\n        this.vditor.toolbar.updateConfig(this.vditor, options);\n    };\n    /** 设置主题 */\n    Vditor.prototype.setTheme = function (theme, contentTheme, codeTheme, contentThemePath) {\n        this.vditor.options.theme = theme;\n        setTheme(this.vditor);\n        if (contentTheme) {\n            this.vditor.options.preview.theme.current = contentTheme;\n            (0,setContentTheme/* setContentTheme */.Z)(contentTheme, contentThemePath || this.vditor.options.preview.theme.path);\n        }\n        if (codeTheme) {\n            this.vditor.options.preview.hljs.style = codeTheme;\n            (0,setCodeTheme/* setCodeTheme */.Y)(codeTheme, this.vditor.options.cdn);\n        }\n    };\n    /** 获取 Markdown 内容 */\n    Vditor.prototype.getValue = function () {\n        return getMarkdown(this.vditor);\n    };\n    /** 获取编辑器当前编辑模式 */\n    Vditor.prototype.getCurrentMode = function () {\n        return this.vditor.currentMode;\n    };\n    /** 聚焦到编辑器 */\n    Vditor.prototype.focus = function () {\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.focus();\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            this.vditor.wysiwyg.element.focus();\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.element.focus();\n        }\n    };\n    /** 让编辑器失焦 */\n    Vditor.prototype.blur = function () {\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.blur();\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            this.vditor.wysiwyg.element.blur();\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.element.blur();\n        }\n    };\n    /** 禁用编辑器 */\n    Vditor.prototype.disabled = function () {\n        hidePanel(this.vditor, [\"subToolbar\", \"hint\", \"popover\"]);\n        disableToolbar(this.vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"undo\", \"redo\", \"fullscreen\", \"edit-mode\"]));\n        this.vditor[this.vditor.currentMode].element.setAttribute(\"contenteditable\", \"false\");\n    };\n    /** 解除编辑器禁用 */\n    Vditor.prototype.enable = function () {\n        enableToolbar(this.vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"undo\", \"redo\", \"fullscreen\", \"edit-mode\"]));\n        this.vditor.undo.resetIcon(this.vditor);\n        this.vditor[this.vditor.currentMode].element.setAttribute(\"contenteditable\", \"true\");\n    };\n    /** 返回选中的字符串 */\n    Vditor.prototype.getSelection = function () {\n        if (this.vditor.currentMode === \"wysiwyg\") {\n            return getSelectText(this.vditor.wysiwyg.element);\n        }\n        else if (this.vditor.currentMode === \"sv\") {\n            return getSelectText(this.vditor.sv.element);\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            return getSelectText(this.vditor.ir.element);\n        }\n    };\n    /** 设置预览区域内容 */\n    Vditor.prototype.renderPreview = function (value) {\n        this.vditor.preview.render(this.vditor, value);\n    };\n    /** 获取焦点位置 */\n    Vditor.prototype.getCursorPosition = function () {\n        return (0,util_selection/* getCursorPosition */.Ny)(this.vditor[this.vditor.currentMode].element);\n    };\n    /** 上传是否还在进行中 */\n    Vditor.prototype.isUploading = function () {\n        return this.vditor.upload.isUploading;\n    };\n    /** 清除缓存 */\n    Vditor.prototype.clearCache = function () {\n        if (this.vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n            localStorage.removeItem(this.vditor.options.cache.id);\n        }\n    };\n    /** 禁用缓存 */\n    Vditor.prototype.disabledCache = function () {\n        this.vditor.options.cache.enable = false;\n    };\n    /** 启用缓存 */\n    Vditor.prototype.enableCache = function () {\n        if (!this.vditor.options.cache.id) {\n            throw new Error(\"need options.cache.id, see https://ld246.com/article/1549638745630#options\");\n        }\n        this.vditor.options.cache.enable = true;\n    };\n    /** HTML 转 md */\n    Vditor.prototype.html2md = function (value) {\n        return this.vditor.lute.HTML2Md(value);\n    };\n    /** markdown 转 JSON 输出 */\n    Vditor.prototype.exportJSON = function (value) {\n        return this.vditor.lute.RenderJSON(value);\n    };\n    /** 获取 HTML */\n    Vditor.prototype.getHTML = function () {\n        return getHTML(this.vditor);\n    };\n    /** 消息提示。time 为 0 将一直显示 */\n    Vditor.prototype.tip = function (text, time) {\n        this.vditor.tip.show(text, time);\n    };\n    /** 设置预览模式 */\n    Vditor.prototype.setPreviewMode = function (mode) {\n        setPreviewMode(mode, this.vditor);\n    };\n    /** 删除选中内容 */\n    Vditor.prototype.deleteValue = function () {\n        if (window.getSelection().isCollapsed) {\n            return;\n        }\n        document.execCommand(\"delete\", false);\n    };\n    /** 更新选中内容 */\n    Vditor.prototype.updateValue = function (value) {\n        document.execCommand(\"insertHTML\", false, value);\n    };\n    /** 在焦点处插入内容，并默认进行 Markdown 渲染 */\n    Vditor.prototype.insertValue = function (value, render) {\n        if (render === void 0) { render = true; }\n        var range = (0,util_selection/* getEditorRange */.zh)(this.vditor);\n        range.collapse(true);\n        // https://github.com/Vanessa219/vditor/issues/716\n        // https://github.com/Vanessa219/vditor/issues/917\n        var tmpElement = document.createElement(\"template\");\n        tmpElement.innerHTML = value;\n        range.insertNode(tmpElement.content.cloneNode(true));\n        range.collapse(false);\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.preventInput = true;\n            if (render) {\n                inputEvent(this.vditor);\n            }\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            // 由于 https://github.com/Vanessa219/vditor/issues/1566 不能使用 this.vditor.wysiwyg.preventInput = true;\n            if (render) {\n                input_input(this.vditor, getSelection().getRangeAt(0));\n            }\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.preventInput = true;\n            if (render) {\n                input(this.vditor, getSelection().getRangeAt(0), true);\n            }\n        }\n    };\n    /** 在焦点处插入 Markdown */\n    Vditor.prototype.insertMD = function (md) {\n        // https://github.com/Vanessa219/vditor/issues/1640\n        if (this.vditor.currentMode === \"ir\") {\n            (0,util_selection/* insertHTML */.oC)(this.vditor.lute.Md2VditorIRDOM(md), this.vditor);\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            (0,util_selection/* insertHTML */.oC)(this.vditor.lute.Md2VditorDOM(md), this.vditor);\n        }\n        else {\n            processPaste(this.vditor, md);\n        }\n        this.vditor.outline.render(this.vditor);\n        execAfterRender(this.vditor);\n    };\n    /** 设置编辑器内容 */\n    Vditor.prototype.setValue = function (markdown, clearStack) {\n        var _this = this;\n        if (clearStack === void 0) { clearStack = false; }\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.innerHTML = \"<div data-block='0'>\".concat(this.vditor.lute.SpinVditorSVDOM(markdown), \"</div>\");\n            processAfterRender(this.vditor, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            renderDomByMd(this.vditor, markdown, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        else {\n            this.vditor.ir.element.innerHTML = this.vditor.lute.Md2VditorIRDOM(markdown);\n            this.vditor.ir.element\n                .querySelectorAll(\".vditor-ir__preview[data-render='2']\")\n                .forEach(function (item) {\n                processCodeRender(item, _this.vditor);\n            });\n            process_processAfterRender(this.vditor, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        this.vditor.outline.render(this.vditor);\n        if (!markdown) {\n            hidePanel(this.vditor, [\"emoji\", \"headings\", \"submenu\", \"hint\"]);\n            if (this.vditor.wysiwyg.popover) {\n                this.vditor.wysiwyg.popover.style.display = \"none\";\n            }\n            this.clearCache();\n        }\n        if (clearStack) {\n            this.clearStack();\n        }\n    };\n    /** 空块 */\n    Vditor.prototype.insertEmptyBlock = function (position) {\n        insertEmptyBlock(this.vditor, position);\n    };\n    /** 清空 undo & redo 栈 */\n    Vditor.prototype.clearStack = function () {\n        this.vditor.undo.clearStack(this.vditor);\n        this.vditor.undo.addToUndoStack(this.vditor);\n    };\n    /** 销毁编辑器 */\n    Vditor.prototype.destroy = function () {\n        this.vditor.element.innerHTML = this.vditor.originalInnerHTML;\n        this.vditor.element.classList.remove(\"vditor\");\n        this.vditor.element.removeAttribute(\"style\");\n        var iconScript = document.getElementById(\"vditorIconScript\");\n        if (iconScript) {\n            iconScript.remove();\n        }\n        this.clearCache();\n        UIUnbindListener();\n        this.vditor.wysiwyg.unbindListener();\n        this.vditor.options.after = undefined;\n        this.isDestroyed = true;\n    };\n    /** 获取评论 ID */\n    Vditor.prototype.getCommentIds = function () {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return [];\n        }\n        return this.vditor.wysiwyg.getComments(this.vditor, true);\n    };\n    /** 高亮评论 */\n    Vditor.prototype.hlCommentIds = function (ids) {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var hlItem = function (item) {\n            item.classList.remove(\"vditor-comment--hover\");\n            ids.forEach(function (id) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(id) > -1) {\n                    item.classList.add(\"vditor-comment--hover\");\n                }\n            });\n        };\n        this.vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment\")\n            .forEach(function (item) {\n            hlItem(item);\n        });\n        if (this.vditor.preview.element.style.display !== \"none\") {\n            this.vditor.preview.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                hlItem(item);\n            });\n        }\n    };\n    /** 取消评论高亮 */\n    Vditor.prototype.unHlCommentIds = function (ids) {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var unHlItem = function (item) {\n            ids.forEach(function (id) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(id) > -1) {\n                    item.classList.remove(\"vditor-comment--hover\");\n                }\n            });\n        };\n        this.vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment\")\n            .forEach(function (item) {\n            unHlItem(item);\n        });\n        if (this.vditor.preview.element.style.display !== \"none\") {\n            this.vditor.preview.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                unHlItem(item);\n            });\n        }\n    };\n    /** 删除评论 */\n    Vditor.prototype.removeCommentIds = function (removeIds) {\n        var _this = this;\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var removeItem = function (item, removeId) {\n            var ids = item.getAttribute(\"data-cmtids\").split(\" \");\n            ids.find(function (id, index) {\n                if (id === removeId) {\n                    ids.splice(index, 1);\n                    return true;\n                }\n            });\n            if (ids.length === 0) {\n                item.outerHTML = item.innerHTML;\n                (0,util_selection/* getEditorRange */.zh)(_this.vditor).collapse(true);\n            }\n            else {\n                item.setAttribute(\"data-cmtids\", ids.join(\" \"));\n            }\n        };\n        removeIds.forEach(function (removeId) {\n            _this.vditor.wysiwyg.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                removeItem(item, removeId);\n            });\n            if (_this.vditor.preview.element.style.display !== \"none\") {\n                _this.vditor.preview.element\n                    .querySelectorAll(\".vditor-comment\")\n                    .forEach(function (item) {\n                    removeItem(item, removeId);\n                });\n            }\n        });\n        afterRenderEvent(this.vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n    };\n    Vditor.prototype.init = function (id, mergedOptions) {\n        var _this = this;\n        if (this.isDestroyed) {\n            return;\n        }\n        this.vditor = {\n            currentMode: mergedOptions.mode,\n            element: id,\n            hint: new Hint(mergedOptions.hint.extend),\n            lute: undefined,\n            options: mergedOptions,\n            originalInnerHTML: id.innerHTML,\n            outline: new Outline(window.VditorI18n.outline),\n            tip: new Tip(),\n        };\n        this.vditor.sv = new Editor(this.vditor);\n        this.vditor.undo = new undo_Undo();\n        this.vditor.wysiwyg = new WYSIWYG(this.vditor);\n        this.vditor.ir = new IR(this.vditor);\n        this.vditor.toolbar = new Toolbar(this.vditor);\n        if (mergedOptions.resize.enable) {\n            this.vditor.resize = new Resize(this.vditor);\n        }\n        if (this.vditor.toolbar.elements.devtools) {\n            this.vditor.devtools = new DevTools();\n        }\n        if (mergedOptions.upload.url || mergedOptions.upload.handler) {\n            this.vditor.upload = new Upload();\n        }\n        (0,addScript/* addScript */.G)(mergedOptions._lutePath ||\n            \"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n            _this.vditor.lute = (0,setLute/* setLute */.X)({\n                autoSpace: _this.vditor.options.preview.markdown.autoSpace,\n                gfmAutoLink: _this.vditor.options.preview.markdown.gfmAutoLink,\n                codeBlockPreview: _this.vditor.options.preview.markdown\n                    .codeBlockPreview,\n                emojiSite: _this.vditor.options.hint.emojiPath,\n                emojis: _this.vditor.options.hint.emoji,\n                fixTermTypo: _this.vditor.options.preview.markdown.fixTermTypo,\n                footnotes: _this.vditor.options.preview.markdown.footnotes,\n                headingAnchor: false,\n                inlineMathDigit: _this.vditor.options.preview.math.inlineDigit,\n                linkBase: _this.vditor.options.preview.markdown.linkBase,\n                linkPrefix: _this.vditor.options.preview.markdown.linkPrefix,\n                listStyle: _this.vditor.options.preview.markdown.listStyle,\n                mark: _this.vditor.options.preview.markdown.mark,\n                mathBlockPreview: _this.vditor.options.preview.markdown\n                    .mathBlockPreview,\n                paragraphBeginningSpace: _this.vditor.options.preview.markdown\n                    .paragraphBeginningSpace,\n                sanitize: _this.vditor.options.preview.markdown.sanitize,\n                toc: _this.vditor.options.preview.markdown.toc,\n            });\n            _this.vditor.preview = new Preview(_this.vditor);\n            initUI(_this.vditor);\n            if (mergedOptions.after) {\n                mergedOptions.after();\n            }\n            if (mergedOptions.icon) {\n                // 防止初始化 2 个编辑器时加载 2 次\n                (0,addScript/* addScriptSync */.J)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\");\n            }\n        });\n    };\n    return Vditor;\n}(method[\"default\"]));\n/* harmony default export */ const src = (Vditor);\n\n})();\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/graphviz/full.render.js",
    "content": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\n*/\n(function(global) {\n  var Module = function(Module) {\n    Module = Module || {};\n  var Module=typeof Module!==\"undefined\"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=(function(status,toThrow){throw toThrow});Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename)}return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process[\"on\"](\"unhandledRejection\",(function(reason,p){process[\"exit\"](1)}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){Module[\"read\"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module[\"readBinary\"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}Module[\"setWindowTitle\"]=(function(title){document.title=title})}Module[\"print\"]=typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null;Module[\"printErr\"]=typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||Module[\"print\"];Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}var JSfuncs={\"stackSave\":(function(){stackSave()}),\"stackRestore\":(function(){stackRestore()}),\"arrayToC\":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType===\"string\")ret=Pointer_stringify(ret);if(stack!==0){stackRestore(stack)}return ret}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module[\"buffer\"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath(\"/\",PATH.dirname(path));FS.writeFile(PATH.join(\"/\",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+194160;__ATINIT__.push();memoryInitializer=\"data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAoC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEEBANgAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAABw6AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEAkOwAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJA////////73/////////vf////////+//////////7/8AAAAAAAD4PzMzMzMzM9M/PAAAAAAAAACamZmZmZmpPwEAAAAAAAAAAQAAAAAAAAAAAAAAAADwPwEAAAAAAAAAAgAAAAAAAAAAAAAAAADwPwIAAAAAAAAAAwAAAAAAAAAAAAAAAADgPwMAAAAAAAAABAAAAAAAAAAAAAAAAADwPwQAAAAAAAAABQAAAAAAAAAzMzMzMzPzPwUAAAAAAAAABgAAAAAAAACamZmZmZnpPwYAAAAAAAAABwAAAAAAAAAAAAAAAADwPwcAAAAAAAAACAAAAAAAAAAAAAAAAADgPwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAMzMzMzMz078AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqQVQAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAgGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgGZAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAgGZAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAAAAQAAAAAAAAAAAAAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/JXUCmggb2j8AAAAAAADgPwAAAAAAAOA/LNSa5h2n6j9q3nGKjuToP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAOA/XdxGA3gL4j8AAAAAAADQP1ioNc07TtU/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRP13cRgN4C+I/XdxGA3gL4j9d3EYDeAviPw1xrIvbaNw/ZF3cRgN47T/Sb18HzhnnPxB6Nqs+V+U/EHo2qz5X5T/Sb18HzhnnP3gLJCh+jOM/tRX7y+7J4T/Sb18HzhnnP9JvXwfOGec/WKg1zTtO1T+IhVrTvOPYP9JvXwfOGec/eAskKH6M4z/EQq1p3nHsP9JvXwfOGec/0m9fB84Z5z+1FfvL7snhP9JvXwfOGec/EHo2qz5X5T+1FfvL7snhP3gLJCh+jOM/0m9fB84Z5z/Sb18HzhnnP4Y41sVtNO4/0m9fB84Z5z/Sb18HzhnnP3gLJCh+jOM/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/pgpGJXUC3j8AAAAAAADgP1ioNc07TtU/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/AAAAAAAA4D8NcayL22jcP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgP9O84xQdydE/07zjFB3J0T8AAAAAAADgP9O84xQdydE/at5xio7k6D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgP1ioNc07TtU/iIVa07zj2D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA4D8NcayL22jcP/RsVn2utt4/ETY8vVKWyT/0bFZ9rrbePzsBTYQNT+E/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9YqDXNO07VPwAAAAAAAOA/AAAAAAAA4D8+6Nms+lzFPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/gnNGlPYGxz8NcayL22jcPwAAAAAAAOA/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADQPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8H8BZIUPzcP6K0N/jCZNY/WKg1zTtO1T8NcayL22jcPw1xrIvbaNw/AAAAAAAA4D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA0D8NcayL22jcPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA8D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP8RCrWnecew/AAAAAAAA0D9/2T15WKjRPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/eAskKH6M4z/Sb18HzhnnP8RCrWnecew/E/JBz2bV0z8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/EHo2qz5X5T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP/RsVn2uttY/tRX7y+7J4T+1FfvL7snhP8RCrWnecew/EHo2qz5X5T/129eBc0bMP1ioNc07TtU/WKg1zTtO1T+IhVrTvOPYPwFNhA1Pr+I/07zjFB3J0T9YqDXNO07VP9O84xQdydE/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP9O84xQdydE/07zjFB3J0T8BTYQNT6/iPwFNhA1Pr+I/AU2EDU+v4j+1FfvL7snhP8xdS8gHPfA/EHo2qz5X5T8QejarPlflP9JvXwfOGec/0m9fB84Z5z8QejarPlflP3gLJCh+jOM/at5xio7k6D/Sb18HzhnnP9O84xQdydE/AAAAAAAA4D8QejarPlflP7UV+8vuyeE/LNSa5h2n6j/Sb18HzhnnP2recYqO5Og/EHo2qz5X5T9q3nGKjuToP9JvXwfOGec/EHo2qz5X5T94CyQofozjP9JvXwfOGec/EHo2qz5X5T+GONbFbTTuPxB6Nqs+V+U/EHo2qz5X5T94CyQofozjP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP6YKRiV1At4/tRX7y+7J4T9Iv30dOGfMP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADgP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP7UV+8vuyeE/tRX7y+7J4T9Iv30dOGfMP0i/fR04Z8w/AAAAAAAA4D9Iv30dOGfMPyzUmuYdp+o/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T9YqDXNO07VPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8Cmggbnl7VP+C+DpwzotA/ApoIG55e1T8BTYQNT6/iP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/WKg1zTtO1T+1FfvL7snhP7UV+8vuyeE/PujZrPpcxT+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhPx04Z0Rpb8g/WKg1zTtO1T+1FfvL7snhP1ioNc07TtU/WKg1zTtO1T8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP9O84xQdydE/5x2n6Egu4T+itDf4wmTWP0i/fR04Z8w/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/AAAAAAAA8D8AAAAAAADwP9O84xQdydE/eAskKH6M4z/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAPA/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T8AAAAAAADwP9O84xQdydE/6pWyDHGs1z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP7UV+8vuyeE/at5xio7k6D8AAAAAAADwP5jdk4eFWtc/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP8RCrWnecew/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/SL99HThnzD94CyQofozjP4Y41sVtNO4/eAskKH6M4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP1GgT+RJ0g5AtMh2vp86NcA6It+l1CXVv/OCPkeaLoo/n+V5cHfW+b9+/RAbLJzmP5bs2AjE68w/zc6idyrg0D+w479AECDtv62h1F5E29g/O6F85lGWdj/TbnD5eoR7P4HMzqJ3KuS/0a3X9KCgyD9q3zcZsD+EP77KkBle/4Q/HJYGflTDxL+lSSno9uIjQKnZA63AkME/CMSQQZNpiT/6RJ4kXTPQvwHwmTYtwl4/DZx9L8+Ulz+JtfgUAOOJP+WpWEY0y7G/jwDJz6Fnpr9ctcb7zLSIP02kj1Q6s5A/5scEoWHWoL/HaWccE/eCvyp/a+UtcFy/5FdiVAiadT/R8YdVcgS3P5XUCWgiPDPAZCMQr+t3EMCnIarwZ3jHP9r/AGvVrsE/TihEwCFU97+qSIWxhSD1P51oVyHlJ/Y/TS7GwDqOzT9Zayi1F9HcvwM/qmG/J8w/pkdTPZl/2j+2gTtQpzyuP1FM3gAz37m/9XaV/9oLpj/UpTW8D/aUPx+tILws3JA/KCzxgLLJI0AjWuFMAoq3P0ijZVGWKX8/u7SG98Gekz8XqHtTR32gvyErruBtlIs/M3PchNYetb+geISJ9fyPP2k1JO6x9JG/uM0zel6/aj+SPq2iPzTNv36w58ZPPpi/ByObUC3HpD8+GMJ7WLmRvy18fa1LjcY/AAAAQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNQAAAAAAAPC/VAQBAOgqAAADAAAAEC0AAAMAAADoLwAAAwAAALAwAAADAAAAADIAAAMAAAB4NQAAAwAAALQ4AAADAAAAxC4AAAMAAAB8OQAAAwAAAIQ6AAADAAAAED8AAAMAAAA0PQAAAAAAANQsAAAAAAAAwC8AAAAAAAAQMAAAAAAAANgxAAAAAAAAKDIAAAAAAACMOAAAAAAAAGAuAAAAAAAAVDkAAAAAAABcOgAAAAAAAOg+AAAAAAAADD0AAAQAAAA4PwAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAQAAAAEAAAADAAAAAAAAAAAAAAAAzQIAEM0CACDNAgAwzQIAQM0CAFDNAgBgzQIAcM0CABDNAgAQzQIAUM0CAFDNAgAfAAAAPwAAAH8AAAAAAAAA0HkBAAEAAACoKwAAaAAAAAQAAABtCAEAAQAAACAsAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAUBAAEAAAAAAAAA4AAAAAAAAAAQBQEAAQAAAAAAAADgAAAAAQAAABcFAQABAAAAAAAAAKgAAAACAAAAIQUBAAEAAAAAAAAA4AAAAAMAAAArBQEAAQAAAAAAAADgAAAABAAAADkFAQABAAAAAAAAAOAAAAAFAAAAQwUBAAEAAAAAAAAA4AAAAAYAAABQBQEAAQAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcggBAAEAAADELQAAGAEAAAEAAAB3CAEAAQAAAMQtAAAYAQAAAgAAAH0IAQABAAAAxC0AABgBAAADAAAAhggBAAEAAADELQAAGAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAIAQABAAAAAAAAAHABAAABAAAAmggBAAEAAAAAAAAAcAEAAAIAAAClCAEAAQAAAAAAAAA4AQAAAwAAALMIAQABAAAAAAAAADgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAwAAAANAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAYAAAACAAAAAgAAAAcAAAACAAAAAAAAAFgMAgBd9QEA7vYBAC79AQAlBAIAZAgCAOQLAgD1CwIAAAAAAPoIAQABAAAAKC8AAKgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+CAEAAQAAAAAAAADIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgkBAAEAAAA4MAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAD4KAQABAAAAAAAAACACAAACAAAASAoBAAEAAAAAAAAAWAIAAAAAAABRCgEAAQAAAAAAAABYAgAAAwAAAFoKAQABAAAAAAAAAFgCAAAAAAAAZAoBAAEAAAAAAAAAIAIAAAMAAABwCgEAAQAAAAAAAAAgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAASAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAVAAAAFgAAABcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAMAAAAJAAAAAwAAAAMAAAAKAAAABAAAAAAAAABYDAIAXfUBAC79AQDu9gEAZAgCACUEAgD1CwIA5AsCAAAAAAAAAAAALQwBAP////88MQAAkAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAMAQD/////AAAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWgQEAAQAAAFAyAADoAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGQAAABoAAAAAAAAABAAAAAAAAAAbAAAAHAAAAB0AAAAeAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAgAAAAIQAAACIAAAACAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAMAAAABQAAAAQAAAANAAAABQAAAAMAAAAtEAEAOxABAFEQAQDr7QIAXxABAG4QAQBzEAEAkRABAOvtAgCjEAEA0xABAOvtAgDxEAEAGREBACcRAQBWEQEAihEBAJsRAQDAEQEA4xEBAOkRAQAFEgEAIhIBAD0SAQBeEgEAeBIBAJoSAQC5EgEA3xIBAPcSAQAXEwEANBMBAFgTAQBkEwEA6+0CAG8TAQCVEwEAuRMBAN8TAQDr7QIAFRQBAC0UAQA6FAEAaRQBAGQTAQDr7QIAdhQBAH8UAQCgFAEA2xQBACYVAQB6FQEAnBUBALEVAQDIFQEA3hUBAPYVAQDr7QIADBYBACcWAQBLFgEAbxYBAJQWAQDr7QIAtRYBAM8WAQDhFgEA7hYBAPsWAQAPFwEAHhcBACYXAQA7FwEASRcBAIcXAQCSFwEAZBMBAOvtAgCYFwEApBcBALMXAQDjEQEA6+0CAMYXAQDvFwEADRgBAB0YAQAuGAEANRgBAEQYAQBUGAEAmBgBAJ8YAQDjEQEA6+0CAKkYAQDVGAEA4BgBAOkYAQDyGAEAAxkBABQZAQAoGQEAZBMBAOvtAgA0GQEARBkBAFIZAQBgGQEAbRkBAHoZAQCQGQEAmRkBAKgZAQC1GQEAxhkBAGQTAQDr7QIA0RkBAPAZAQDr7QIAAhoBABEaAQBBGgEASxoBAFgaAQBlGgEAchoBAH8aAQCCGgEA6+0CAIYaAQDr7QIAqRoBANoaAQAJGwEAIBsBADsbAQBWGwEAZBMBAOvtAgByGwEA6+0CAJobAQCmGwEAuRsBAMwbAQDhGwEA9hsBAPobAQDjEQEA6+0CAAYcAQDr7QIAFhwBACQcAQAwHAEAPRwBAF0cAQBzHAEA6+0CAIccAQDQHAEAFh0BAEYdAQB5HQEAgB0BAKcdAQDOHQEA6+0CANMdAQAAAAAAAAAAAJFHAQABAAAAAAAAAAgDAAABAAAARx4BAAEAAAAAAAAACAMAAAIAAACKRwEAAQAAAAAAAABAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAACQAAAAlAAAABgAAACYAAAAnAAAAKAAAACkAAAAqAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAEAAAALwAAAAAAAAAAAAAADgAAAAAAAAAPAAAABwAAAAUAAAAQAAAABgAAAAAAAAB19AEAf/QBABExAQDE9AEA//QBACH1AQAn9QEAWAwCAE71AQBd9QEAevUBAIX1AQCn9QEA3fUBABP2AQBO9gEAhPYBAKb2AQC19gEA5vYBAO72AQDXJAEA4CQBAAv3AQDpJAEAVfcBAPIkAQBf9wEA+yQBAGn3AQC49wEA8/cBAAclAQAu+AEAOfgBAH74AQCM+AEA1vgBAOT4AQDy+AEA/fgBAC75AQBu+QEAdvkBAH75AQC5+QEA7/kBAPv5AQAWMQEAB/oBABH6AQAc+gEAOfoBAG/6AQAu/QEAUP0BAFz9AQAbAAIATAACAHgAAgCuAAIAuwACAN0AAgD/AAIACAECAFIBAgBcAQIAoQECANcBAgDiAQIAZwICAHwCAgAPJQEAhgICAJACAgDGAgIABgMCABQDAgBoAwIAdwMCAIYDAgDVAwIAHjEBABUEAgAfBAIAJQQCAFEEAgB4BAIAiQQCAJQEAgDZBAIAHgUCAC0FAgA9BQIATwUCAF8FAgBvBQIAfAUCAIYFAgC8BQIAxQUCAAUGAgAYBgIAIzEBACAGAgBWBgIAfQYCALMGAgDaBgIA6AYCAB4HAgBoBwIAsgcCAL0HAgDzBwIA+AcCABUIAgAyCAIAPQgCAGQIAgB8CAIAsggCAOgIAgD0CAIAGwkCACYJAgBXCQIAiAkCABA8AQCvCQIA2wkCABEKAgBHCgIAUQoCAG4KAgCuCgIA5AoCACkxAQD8CgIAKAsCAE8LAgCFCwIAwgsCAOQLAgDqCwIA9QsCABwMAgAAAAAA2YEBAAEAAADINQAAeAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhIAQABAAAAAAAAAJgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAABIAAAAIAAAABgAAABMAAAAHAAAAAAAAAAAAAABFJgEAAQAAANw4AADQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCYBAAEAAAAAAAAA8AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAA1AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAADcAAAAAAAAAAAAAABQAAAAAAAAAFQAAAAkAAAAHAAAAFgAAAAgAAAAAAAAAETEBAFgMAgBd9QEAFjEBAG/6AQAu/QEAHjEBAFEEAgAFBgIAIzEBAD0IAgBkCAIAEDwBACkxAQDkCwIA9QsCAAAAAAAuMQEAAQAAAKQ5AAAoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjEBAAEAAAAAAAAASAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA5AAAAOgAAAAoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQQAAAEIAAABDAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAGAAAAAsAAAAIAAAAGQAAAAkAAAAAAAAAxPQBAKY6AQBYDAIAXfUBAHr1AQCxOgEAtzoBAMI6AQDJOgEAhfUBAN31AQDROgEA1zoBAOI6AQCE9gEApvYBAO72AQDpOgEAVfcBAGn3AQDz9wEA8zoBAH74AQCM+AEA1vgBAP46AQDk+AEABjsBAA87AQAdOwEAJzsBALn5AQAwOwEA+/kBABz6AQA5+gEANjsBAID6AQCr+gEA1PoBAPf6AQAg+wEAQ/sBAGz7AQCP+wEAuPsBANv7AQAE/AEAJ/wBAFD8AQBz/AEAnPwBAL/8AQDo/AEAC/0BAC79AQA9OwEAUP0BAEk7AQB4AAIA3QACAKEBAgBWOwEAhgMCAGM7AQAVBAIAJQQCAG07AQBRBAIAeAQCAIkEAgB8OwEAjjsBAJQEAgAeBQIALQUCAD0FAgBPBQIAXwUCAJ47AQCpOwEAtDsBAG8FAgAFBgIACgYCALk7AQDCOwEAyzsBANs7AQDiOwEAVgYCAH0GAgCzBgIA6AYCAPgHAgAVCAIA6jsBAGQIAgDxOwEA9AgCAPo7AQAmCQIAAjwBAIgJAgAQPAEArwkCANsJAgAXPAEAbgoCAK4KAgAhPAEA5AoCAPwKAgBPCwIAKzwBADk8AQCFCwIAjAsCAMILAgDkCwIA9QsCABwMAgAAAAAASzwBAAEAAACsOgAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE88AQABAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEUAAAAAAAAAAAAAAEYAAABHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAABsAAAAMAAAACQAAABwAAAAKAAAAAAAAAEFCAADelQEAQUkAALiVAQBBUgAAi5UBAEFYAADzlQEAQiAAAC+YAQBCSQAAQJgBAENCAAB4lgEAQ08AAGaWAQBDWAAAhZYBAEggAACplgEASEIAALOWAQBISQAAP5cBAEhYAADClgEASGIAAPOWAQBIaQAAJpcBAEhyAADYlgEASHgAAAmXAQBJIAAAUZgBAEtCAAAKlgEAS0kAAFKWAQBLUgAAPpYBAEtYAAArlgEATkIAAFGXAQBOSQAAmJcBAE5SAACwlwEATlgAAHyXAQBQQQAAEZgBAFBCAADNlwEAUEkAAAGYAQBQWAAA7ZcBAFIgAAAImgEAUyAAACCYAQBaRAAAjpgBAAAAAAAAAAAAAQAAAAAAAAD+RgEA/////1w9AADYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkcBAP////8AAAAA+AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAApHAQABAAAAIEMAAAAAAAAQAAAAEkcBAAEAAAAgQwAAAAAAABEAAAAaRwEAAQAAACBDAAAAAAAAEQAAACNHAQABAAAAIEMAAAAAAAARAAAAK0cBAAEAAAAgQwAAAAAAABMAAAAzRwEAAQAAACRDAAAAAAAAFAAAADtHAQABAAAAJEMAAAAAAAAVAAAAQ0cBAAEAAAAkQwAAAAAAABUAAABMRwEAAQAAACRDAAAAAAAAFQAAAFRHAQABAAAAJEMAAAAAAAAWAAAAXEcBAAEAAAAoQwAAAAAAABcAAABlRwEAAQAAAChDAAAAAAAAGAAAAG5HAQABAAAAKEMAAAAAAAAYAAAAeEcBAAEAAAAoQwAAAAAAABgAAACBRwEAAQAAAChDAAAAAAAAGQAAAIpHAQABAAAALEMAAAAAAAAZAAAAkUcBAAEAAAAsQwAAAAAAABoAAACXRwEAAQAAADBDAAAAAAAACgAAAKBHAQABAAAANEMAAAAAAAALAAAAqEcBAAEAAAA0QwAAAAAAAAwAAACwRwEAAQAAADRDAAAAAAAADAAAALlHAQABAAAANEMAAAAAAAAMAAAAwUcBAAEAAAA0QwAAAAAAAA4AAADJRwEAAQAAADRDAAAAAAAADgAAANBHAQABAAAANEMAAAAAAAANAAAA2EcBAAEAAAA0QwAAAAAAAAUAAADgRwEAAQAAADRDAAAAAAAABgAAAOhHAQABAAAANEMAAAAAAAAHAAAA8EcBAAEAAAA0QwAAAAAAAAcAAAD5RwEAAQAAADRDAAAAAAAABwAAAAFIAQABAAAANEMAAAAAAAAJAAAACUgBAAEAAAA0QwAAAAAAAAkAAAAQSAEAAQAAADRDAAAAAAAACAAAABhIAQABAAAANEMAAAAAAAAAAAAAIEgBAAEAAAA4QwAAAAAAAAEAAAApSAEAAQAAADhDAAAAAAAAAgAAADJIAQABAAAAOEMAAAAAAAACAAAAPEgBAAEAAAA4QwAAAAAAAAIAAABFSAEAAQAAADhDAAAAAAAABAAAAE5IAQABAAAAOEMAAAAAAAAEAAAAVkgBAAEAAAA4QwAAAAAAAAMAAABfSAEAAQAAADhDAAAAAAAAEgAAAGhIAQABAAAAIEMAAAAAAAAbAAAAcEgBAAEAAAA8QwAAAAAAABwAAAB4SAEAAQAAADxDAAAAAAAAHQAAAIBIAQABAAAAPEMAAAAAAAAdAAAAiUgBAAEAAAA8QwAAAAAAAB0AAACRSAEAAQAAADxDAAAAAAAAHgAAAJlIAQABAAAAQEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAAARMAQBMQwAAAQAAAGhDAAAAAAAAAAAAAEgAAABJAAAAAQAAAAAAAADQeQEAAAAAAFxDAABkQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAgAAAAQAAAAYAQAAMAEAALAAAAApVAEALlQBADJUAQA5VAEAPVQBAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAdAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAyWQEAKEQAAAEAAAB4RAAAAAAAAAAAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABLAAAAUwAAAEsAAABUAAAAVQAAAFYAAABXAAAAAAAAAD9ZAQAAAAAAOEQAACDPAgABAAAARVkBAAAAAABARAAAIM8CAAMAAABJWQEAAAAAAEhEAAAgzwIABAAAAE9ZAQAAAAAAUEQAACDPAgAFAAAAVVkBAAAAAABoRAAAIM8CAAYAAABfWQEAAAAAAHBEAAAgzwIABwAAAGVZAQAAAAAAWEQAACDPAgAHAAAAaVkBAAAAAABYRAAAIM8CAAcAAABuWQEAAAAAAGBEAAAgzwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAMAAAAAAAAAABAAAAIAAAAAEAAAAAAAAAAAAAAAAAAAADAAAABAAAAAAAAAAAAAAA6+0CAAAAAAATBgIAAQAAAHRkAQAHAAAAOGQBAAMAAAC8GQIABQAAAHxkAQAPAAAAvoEBAAgAAAC+gQEAEAAAAIRkAQAEAAAAhGQBABEAAACJZAEABQAAAIlkAQACAAAAj2QBAAYAAACWZAEABAAAAKJkAQAHAAAAqmQBAAcAAAC6ZAEABQAAAMBkAQAIAAAA12QBAAgAAADAZAEACQAAAOBkAQAHAAAA6GQBAAoAAAACZQEABwAAAAplAQALAAAAJGUBAAYAAAArZQEADAAAAEllAQAJAAAAK2UBAA0AAABTZQEACAAAAFxlAQAOAAAAfWUBAAgAAACGZQEAEgAAAKdlAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAADAAAAIQAAAAQAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAAIgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAQAAAACBHAAAwRwAABgAAAAQAAAA8RwAABgAAAAgAAAAGAAAABAAAAERHAAAABAAACAAAAP////8AAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAANQAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAACQAAAAAAAAAHAAAAAAAAAAkAAAALAAAACAAAAAoAAADISAAATEgAALBIAAABAAAAAQAAAAoAAAAWAAAACwAAAFgAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAANAAAAAAAAAAcAAAAAAAAABwAAAAIAAAAFAAAACAAAAAAAAAAAAAAABgAAAAMAAAAOAAAACwAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA8AAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAABAAAAAAAAAABwAAAAAAAAAIAAAACAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/////wAAAAAAAAAAJwAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAMAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAwAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAAAAAAABAAAAAQAAAAIAAAADAAAAAQAAAAQAAAABAAAABQAAAAEAAAAGAAAABwAAAAcAAAABAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAMAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAACAAAAAb6cBAFCnAQAWcAEAfKcBAHSnAQCCpwEAAAAAABx0AQAldAEALHQBADp0AQBBdAEAmKcBAEh0AQBPdAEAAQAAAAgAAAD/////AAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAO11AQAIAAAAAwAAAPZ1AQD6dQEACwAAAAYAAADWgQEABnYBAAIAAAABAAAACXYBAA12AQAEAAAAAgAAABJ2AQAWdgEABAAAAAQAAAAbdgEAIHYBAAUAAAAFAAAAJnYBACp2AQAEAAAABwAAAC92AQAzdgEABQAAAAkAAAA5dgEAPXYBAAQAAAAKAAAAQnYBAEd2AQAEAAAADAAAAEx2AQAQewEAAAAAAAEAAAAYewEAAQAAAAAAAACjpgEAAQAAAAEAAAATBgIAAAAAAAAAAAAAAAAAAAAAAAAAAAD5eQEAMQAAAAAAAAAAAAAA0aEBABAAAAA7EgIAgAAAAPJ5AQBAAAAAPJQBABAAAAD0eQEAQAAAAAAAAAAAAAAAwHkBAAEAAADHeQEAAgAAAMx5AQADAAAA+poBAAQAAABekQEABQAAANB5AQAGAAAAEwYCAAgAAADUeQEAIQAAANh5AQAiAAAA3HkBACIAAADgeQEAAQAAAOV5AQAHAAAA63kBACcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8AAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAArfwEAMn8BAAAAAADTgQEA1oEBANmBAQAAAAAAAAAAAAEAAAACAAAA/////5aBAQCcgQEAEwYCAAAAAABkAAAAZQAAAGYAAABkAAAACAAAAAgAAAAAAAAAAAAAACoAAAARAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACQAAACsAAAARAAAAAAAAAAAAAAAAAAAACAAAAP////8AAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAA+poBAPhUAACABgAAAAAAACeRAQD4VAAAsAYAAAAAAAAAmgEA+FQAAOAGAAAAAAAAL5EBAPhUAADgBgAAAAAAADSRAQD4VAAAEAcAAAAAAAA7kQEAEFUAABAHAAAAAAAAQZEBAPhUAABABwAAAAAAAEWRAQD4VAAAcAcAAAAAAAATBgIA+FQAAKAHAAAAAAAATpEBAPhUAACgBwAAAAAAAFiRAQD4VAAAUAYAAAAAAABekQEA+FQAANAHAAAAAAAAZpEBAPhUAAAACAAAAAAAAHCRAQD4VAAAMAgAAAAAAAB+kQEA+FQAAGAIAAAAAAAAhJEBAPhUAACQCAAAAAAAAI2RAQD4VAAAwAgAAAAAAACVkQEA+FQAAPAIAAAAAAAAnpEBAPhUAAAgCQAAAAAAAKaRAQD4VAAAUAkAAAAAAACrkQEA+FQAAIAJAAAAAAAAr5EBAPhUAACwCQAAAAAAALaRAQD4VAAA4AkAAAAAAAC8kQEA+FQAABAKAAAAAAAAxpEBAChVAABACgAAAAAAAM+RAQD4VAAAgAYAAAAAAADUkQEA+FQAAIAGAAAAAAAA3pEBAPhUAABwCgAAAAAAAOWRAQD4VAAAoAoAAAAAAADykQEA+FQAANAKAAAAAAAAAJIBAPhUAAAACwAAAAAAAA6SAQD4VAAAMAsAAAAAAAAakgEA+FQAAGALAAAAAAAAJ5IBAPhUAACQCwAAAAAAADCSAQD4VAAAwAsAAAAAAAA6kgEA+FQAAPALAAAAAAAAQ5IBAPhUAAAgDAAAAAAAAEuSAQD4VAAAUAwAAAAAAABTkgEA+FQAAIAMAAAAAAAAXJIBAPhUAACwDAAAAAAAAGCSAQD4VAAA4AwAAAAAAABrkgEA+FQAABANAAAAAAAAb5IBAPhUAABADQAAAAAAAHmSAQD4VAAAcA0AAAAAAACCkgEA+FQAAKANAAAAAAAAipIBAPhUAADQDQAAAAAAAJeSAQD4VAAAAA4AAAAAAACjkgEA+FQAADAOAAAAAAAArpIBAPhUAABgDgAAAAAAAL6SAQD4VAAAkA4AAAAAAADMkgEA+FQAAMAOAAAAAAAA25IBAPhUAADwDgAAAAAAAOWSAQD4VAAAIA8AAAAAAADukgEA+FQAAFAPAAAAAAAA+JIBAPhUAACADwAAAAAAAAKTAQD4VAAAsA8AAAAAAAAJkwEA+FQAAOAPAAAAAAAAEJMBAPhUAAAQEAAAAAAAABqTAQBAVQAAAAAAAAAAAAAhkwEAQFUAAAAAAAAAAAAAA5EBAFhVAAAAAAAAAAAAACmTAQBwVQAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAWwAAAFoAAAAXAAAABQAAAAAAAAANAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAXAAAAF0AAAAYAAAABgAAAAMAAAAOAAAAXgAAAF8AAAAXAAAABwAAAAAAAAAPAAAAWQAAAFoAAAAXAAAACAAAAAIAAAAMAAAAEAAAABEAAAASAAAAEwAAACuUAQAylAEAAAAAADqUAQA8lAEAdRICAD6UAQAMAAAABAAAAAYAAAACAAAAAwAAAAEAAAAJAAAACAAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAACLlQEAm5UBAKiVAQAAAAAAAAAAAAQAAACtlQEAAAAAAAAAAAC4lQEAm5UBAKiVAQAAAAAAz5UBAAUAAACtlQEAAAAAANeVAQDelQEAm5UBAO6VAQAAAAAAAAAAAAYAAACtlQEAGaYBAAAAAADzlQEAm5UBAO6VAQAAAAAAz5UBAAcAAACtlQEAGaYBANeVAQAKlgEAF5YBAO6VAQAAAAAAAAAAAAoAAAAllgEAGaYBAAAAAAArlgEAF5YBAO6VAQAAAAAA15UBAAsAAAAllgEAGaYBANeVAQA+lgEAF5YBAEyWAQAAAAAAAAAAAAgAAAAllgEAAAAAAAAAAABSlgEAF5YBAEyWAQAAAAAA15UBAAkAAAAllgEAAAAAANeVAQBmlgEAZpYBAAAAAAAAAAAAAAAAAAwAAABulgEAAAAAAAAAAAB4lgEAZpYBABmmAQAAAAAAAAAAAA4AAABulgEAGaYBAAAAAACFlgEAZpYBABmmAQAAAAAAz5UBAA8AAABulgEAGaYBANeVAQCZlgEAZpYBAAAAAAAAAAAAz5UBAA0AAABulgEAAAAAANeVAQCplgEAqZYBAAAAAAAAAAAAAAAAABAAAACtlQEAAAAAAAAAAACzlgEAqZYBABmmAQAAAAAAAAAAABIAAACtlQEAGaYBAAAAAADClgEAqZYBABmmAQAAAAAAz5UBABMAAACtlQEAGaYBANeVAQDYlgEAqZYBAAAAAADplgEAAAAAABQAAACtlQEAAAAAAAAAAADzlgEAqZYBABmmAQDplgEAAAAAABYAAACtlQEAGaYBAAAAAAAJlwEAqZYBABmmAQDplgEAz5UBABcAAACtlQEAGaYBANeVAQAmlwEAqZYBAAAAAADplgEAz5UBABUAAACtlQEAAAAAANeVAQA/lwEAqZYBAAAAAAAAAAAAz5UBABEAAACtlQEAAAAAANeVAQBRlwEAZ5cBABmmAQAAAAAAAAAAABoAAAAllgEAGaYBAAAAAAB8lwEAZ5cBABmmAQAAAAAA15UBABsAAAAllgEAGaYBANeVAQCYlwEAZ5cBAAAAAAAAAAAA15UBABkAAAAllgEAAAAAANeVAQCwlwEAZ5cBAMeXAQAAAAAAAAAAABgAAAAllgEAAAAAAAAAAADNlwEA25cBABmmAQAAAAAAAAAAAB4AAAAllgEAGaYBAAAAAADtlwEA25cBABmmAQAAAAAA15UBAB8AAAAllgEAGaYBANeVAQABmAEA25cBAAAAAAAAAAAA15UBAB0AAAAllgEAAAAAANeVAQARmAEA25cBAMeXAQAAAAAAAAAAABwAAAAllgEAAAAAAAAAAAAgmAEAIJgBAAAAAAAAAAAAAAAAACAAAAAnmAEAAAAAAAAAAAAvmAEAOpgBABmmAQAAAAAAAAAAAAIAAAAllgEAGaYBAAAAAABAmAEAOpgBABmmAQAAAAAA15UBAAMAAAAllgEAGaYBANeVAQBRmAEAOpgBAAAAAAAAAAAA15UBAAEAAAAllgEAAAAAANeVAQAImgEAOpgBAAAAAAAAAAAAAAAAAAAAAAAllgEAAAAAAAAAAABemAEAeJgBAIeYAQAAAAAA15UBACEAAAAllgEAAAAAANeVAQCOmAEAm5gBAAAAAAAAAAAAAAAAACIAAAAnmAEAAAAAAAAAAAAIAAAABAAAAAAAAAAKAAAALQAAABIAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAA3mwEAxgAAAD2bAQDBAAAARJsBAMIAAABKmwEAwAAAAFGbAQCRAwAAV5sBAMUAAABdmwEAwwAAAGSbAQDEAAAAaZsBAJIDAABumwEAxwAAAHWbAQCnAwAAeZsBACEgAACAmwEAlAMAAIabAQDQAAAAipsBAMkAAACRmwEAygAAAJebAQDIAAAAnpsBAJUDAACmmwEAlwMAAKqbAQDLAAAAr5sBAJMDAAC1mwEAzQAAALybAQDOAAAAwpsBAMwAAADJmwEAmQMAAM6bAQDPAAAA05sBAJoDAADZmwEAmwMAAOCbAQCcAwAA45sBANEAAADqmwEAnQMAAO2bAQBSAQAA85sBANMAAAD6mwEA1AAAAACcAQDSAAAAB5wBAKkDAAANnAEAnwMAABWcAQDYAAAAHJwBANUAAAAjnAEA1gAAACicAQCmAwAALJwBAKADAAAvnAEAMyAAADWcAQCoAwAAOZwBAKEDAAA9nAEAYAEAAEScAQCjAwAASpwBAN4AAABQnAEApAMAAFScAQCYAwAAWpwBANoAAABhnAEA2wAAAGecAQDZAAAAbpwBAKUDAAB2nAEA3AAAAHucAQCeAwAAfpwBAN0AAACFnAEAeAEAAIqcAQCWAwAAj5wBAOEAAACWnAEA4gAAAJycAQC0AAAAopwBAOYAAAConAEA4AAAAK+cAQA1IQAAt5wBALEDAAC9nAEAJgAAAMGcAQAnIgAAxZwBACAiAADJnAEA5QAAAM+cAQBIIgAA1ZwBAOMAAADcnAEA5AAAAOGcAQAeIAAA55wBALIDAADsnAEApgAAAPOcAQAiIAAA+JwBACkiAAD8nAEA5wAAAAOdAQC4AAAACZ0BAKIAAAAOnQEAxwMAABKdAQDGAgAAF50BAGMmAAAdnQEARSIAACKdAQCpAAAAJ50BALUhAAAtnQEAKiIAADGdAQCkAAAAOJ0BANMhAAA9nQEAICAAAESdAQCTIQAASZ0BALAAAABNnQEAtAMAAFOdAQBmJgAAWZ0BAPcAAABgnQEA6QAAAGedAQDqAAAAbZ0BAOgAAAB0nQEABSIAAHqdAQADIAAAf50BAAIgAACEnQEAtQMAAIydAQBhIgAAkp0BALcDAACWnQEA8AAAAJqdAQDrAAAAn50BAKwgAACknQEAAyIAAKqdAQCSAQAAr50BAAAiAAC2nQEAvQAAAL2dAQC8AAAAxJ0BAL4AAADLnQEARCAAANGdAQCzAwAA150BAGUiAADanQEAPgAAAN2dAQDUIQAA4p0BAJQhAADnnQEAZSYAAO6dAQAmIAAA9Z0BAO0AAAD8nQEA7gAAAAKeAQChAAAACJ4BAOwAAAAPngEAESEAABWeAQAeIgAAG54BACsiAAAfngEAuQMAACSeAQC/AAAAK54BAAgiAAAwngEA7wAAADWeAQC6AwAAO54BANAhAABAngEAuwMAAEeeAQApIwAATJ4BAKsAAABSngEAkCEAAFeeAQAIIwAAXZ4BABwgAABjngEAZCIAAGaeAQAKIwAAbZ4BABciAAB0ngEAyiUAAHieAQAOIAAAfJ4BADkgAACDngEAGCAAAImeAQA8AAAAjJ4BAK8AAACRngEAFCAAAJeeAQC1AAAAnZ4BALcAAAA8pwEAEiIAAKSeAQC8AwAAp54BAAciAACtngEAoAAAALKeAQATIAAAuJ4BAGAiAAC7ngEACyIAAL6eAQCsAAAAwp4BAAkiAADIngEAhCIAAM2eAQDxAAAA1J4BAL0DAADXngEA8wAAAN6eAQD0AAAA5J4BAFMBAADqngEA8gAAAPGeAQA+IAAA954BAMkDAAD9ngEAvwMAAAWfAQCVIgAAC58BACgiAAAOnwEAqgAAABOfAQC6AAAAGJ8BAPgAAAAfnwEA9QAAACafAQCXIgAALZ8BAPYAAAAynwEAtgAAADefAQACIgAAPJ8BADAgAABDnwEApSIAAEifAQDGAwAATJ8BAMADAABPnwEA1gMAAFOfAQCxAAAAWp8BAKMAAABgnwEAMiAAAGafAQAPIgAAa58BAB0iAABwnwEAyAMAAHSfAQAiAAAAeZ8BANIhAAB+nwEAGiIAAISfAQAqIwAAiZ8BALsAAACPnwEAkiEAAJSfAQAJIwAAmp8BAB0gAACgnwEAHCEAAKWfAQCuAAAAqZ8BAAsjAACwnwEAwQMAALSfAQAPIAAAuJ8BADogAAC/nwEAGSAAAMWfAQAaIAAAy58BAGEBAADSnwEAxSIAANefAQCnAAAA3J8BAK0AAADgnwEAwwMAAOafAQDCAwAA7Z8BADwiAADxnwEAYCYAAPifAQCCIgAA/J8BAIYiAAABoAEAESIAAAWgAQCDIgAACaABALkAAAAOoAEAsgAAABOgAQCzAAAAGKABAIciAAAdoAEA3wAAACOgAQDEAwAAJ6ABADQiAAAuoAEAuAMAADSgAQDRAwAAPaABAAkgAABEoAEA/gAAAEqgAQDcAgAAUKABANcAAABWoAEAIiEAAFygAQDRIQAAYaABAPoAAABooAEAkSEAAG2gAQD7AAAAc6ABAPkAAAB6oAEAqAAAAH6gAQDSAwAAhKABAMUDAACMoAEA/AAAAJGgAQAYIQAAmKABAL4DAACboAEA/QAAAKKgAQClAAAApqABAP8AAACroAEAtgMAALCgAQANIAAAtKABAAwgAAAHAAAACAAAAAEBAAAIAAAACAAAAAAAAAAAAAAALwAAABMAAAAAAAAAAAAAAAAAAAAIAAAAEAAAAAAAAAAAAAAAMAAAABQAAAAAAAAAAAAAAAAAAAD8pgEACQAAAP6mAQAKAAAAA6cBAAoAAAALpwEACwAAABGnAQALAAAAGqcBAAwAAAAdpwEADAAAACOnAQANAAAAKKcBAA0AAAAwpwEADgAAADWnAQAOAAAAPKcBAA8AAABCpwEADwAAAE6nAQAQAAAAYAAAADEAAAAyAAAAFAAAADMAAABhAAAANAAAABUAAAA1AAAACAAAAAQAAAD/////AAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAmagBAFVdyX/Jf/8ApKgBALst1L6u1P8Ar6gBABR3/f3Ahv8AuqgBAFVdyX/Jf/8AxagBALst1L6u1P8A0KgBABR3/f3Ahv8A26gBACpm////mf8A5qgBAFVdyX/Jf/8A8agBALst1L6u1P8A/KgBABR3/f3Ahv8AB6kBACpm////mf8AEqkBAJetsDhssP8AHakBAFVdyX/Jf/8AKKkBALst1L6u1P8AM6kBABR3/f3Ahv8APqkBACpm////mf8ASakBAJetsDhssP8AVKkBAOj88PACf/8AX6kBAFVdyX/Jf/8AaqkBALst1L6u1P8AdakBABR3/f3Ahv8AgKkBACpm////mf8Ai6kBAJetsDhssP8AlqkBAOj88PACf/8AoakBABHgv79bF/8ArKkBAFVdyX/Jf/8At6kBALst1L6u1P8AwqkBABR3/f3Ahv8AzakBACpm////mf8A2KkBAJetsDhssP8A46kBAOj88PACf/8A7qkBABHgv79bF/8A+akBAAAAZmZmZv8ABKoBAJMZ997r9/8ADqoBAI5L4Z7K4f8AGKoBAJG8vTGCvf8AIqoBAJ8Q/+/z//8ALKoBAI8u573X5/8ANqoBAI9/1muu1v8AQKoBAJPQtSFxtf8ASqoBAJ8Q/+/z//8AVKoBAI8u573X5/8AXqoBAI9/1muu1v8AaKoBAJG8vTGCvf8AcqoBAJXxnAhRnP8AfKoBAJ8Q/+/z//8AhqoBAJQr78bb7/8AkKoBAI5L4Z7K4f8AmqoBAI9/1muu1v8ApKoBAJG8vTGCvf8ArqoBAJXxnAhRnP8AuKoBAJ8Q/+/z//8AwqoBAJQr78bb7/8AzKoBAI5L4Z7K4f8A1qoBAI9/1muu1v8A4KoBAJCpxkKSxv8A6qoBAJPQtSFxtf8A9KoBAJfxlAhFlP8A/qoBAJQI//f7//8ACKsBAJMZ997r9/8AEqsBAJQr78bb7/8AHKsBAI5L4Z7K4f8AJqsBAI9/1muu1v8AMKsBAJCpxkKSxv8AOqsBAJPQtSFxtf8ARKsBAJfxlAhFlP8ATqsBAJQI//f7//8AWKsBAJMZ997r9/8AYqsBAJQr78bb7/8AbKsBAI5L4Z7K4f8AdqsBAI9/1muu1v8AgKsBAJCpxkKSxv8AiqsBAJPQtSFxtf8AlKsBAJXxnAhRnP8AnqsBAJjrawgwa/8AqKsBABfvVFQwBf8AsqsBAHf/PAA8MP8AvasBABfsjIxRCv8Ax6sBABjCv7+BLf8A0asBAB1w39/Cff8A26sBAB409vbow/8A5asBAHkm6sfq5f8A76sBAHhfzYDNwf8A+asBAHyllzWXj/8AA6wBAHz8ZgFmXv8ADawBABfvVFQwBf8AF6wBAHz8ZgFmXv8AIqwBAHf/PAA8MP8ALawBABfsjIxRCv8AN6wBABjCv7+BLf8AQawBAB1w39/Cff8AS6wBAB409vbow/8AVawBAAAA9fX19f8AX6wBAHkm6sfq5f8AaawBAHhfzYDNwf8Ac6wBAHyllzWXj/8AfawBAByH2NizZf8AhqwBAAAA9fX19f8Aj6wBAHt/tFq0rP8AmKwBABXXpqZhGv8AoawBAB1w39/Cff8AqqwBAHhfzYDNwf8As6wBAHn9hQGFcf8AvKwBABXXpqZhGv8AxawBAB1w39/Cff8AzqwBAAAA9fX19f8A16wBAHhfzYDNwf8A4KwBAHn9hQGFcf8A6awBABfsjIxRCv8A8qwBAByH2NizZf8A+6wBAB409vbow/8ABK0BAHkm6sfq5f8ADa0BAHt/tFq0rP8AFq0BAHz8ZgFmXv8AH60BABfsjIxRCv8AKK0BAByH2NizZf8AMa0BAB409vbow/8AOq0BAAAA9fX19f8AQ60BAHkm6sfq5f8ATK0BAHt/tFq0rP8AVa0BAHz8ZgFmXv8AXq0BABfsjIxRCv8AZ60BABjCv7+BLf8AcK0BAB1w39/Cff8Aea0BAB409vbow/8Agq0BAHkm6sfq5f8Ai60BAHhfzYDNwf8AlK0BAHyllzWXj/8Ana0BAHz8ZgFmXv8Apq0BABfsjIxRCv8Ar60BABjCv7+BLf8AuK0BAB1w39/Cff8Awa0BAB409vbow/8Ayq0BAAAA9fX19f8A060BAHkm6sfq5f8A3K0BAHhfzYDNwf8A5a0BAHyllzWXj/8A7q0BAHz8ZgFmXv8A960BAIcU+eX1+f8AAK4BAHVK2JnYyf8ACa4BAGe5oiyiX/8AEq4BAIgO++34+/8AG64BAH824rLi4v8AJK4BAHF4wmbCpP8ALa4BAGK+iyOLRf8ANq4BAIgO++34+/8AP64BAH824rLi4v8ASK4BAHF4wmbCpP8AUa4BAGe5oiyiX/8AWq4BAGb/bQBtLP8AY64BAIgO++34+/8AbK4BAHci7Mzs5v8Ada4BAHVK2JnYyf8Afq4BAHF4wmbCpP8Ah64BAGe5oiyiX/8AkK4BAGb/bQBtLP8Ama4BAIgO++34+/8Aoq4BAHci7Mzs5v8Aq64BAHVK2JnYyf8AtK4BAHF4wmbCpP8Ava4BAGmfrkGudv8Axq4BAGK+iyOLRf8Az64BAGb/WABYJP8A2K4BAIYG/ff8/f8A4a4BAIcU+eX1+f8A6q4BAHci7Mzs5v8A864BAHVK2JnYyf8A/K4BAHF4wmbCpP8ABa8BAGmfrkGudv8ADq8BAGK+iyOLRf8AF68BAGb/WABYJP8AIK8BAIYG/ff8/f8AKa8BAIcU+eX1+f8AMq8BAHci7Mzs5v8AO68BAHVK2JnYyf8ARK8BAHF4wmbCpP8ATa8BAGmfrkGudv8AVq8BAGK+iyOLRf8AX68BAGb/bQBtLP8AaK8BAGX/RABEG/8Aca8BAJAU9ODs9P8Aeq8BAJRG2p682v8Ag68BAMR7p4hWp/8AjK8BAIgO++34+/8Ala8BAJI147PN4/8Anq8BAKJKxoyWxv8Ap68BAMqVnYhBnf8AsK8BAIgO++34+/8Aua8BAJI147PN4/8Awq8BAKJKxoyWxv8Ay68BAMR7p4hWp/8A1K8BANbhgYEPfP8A3a8BAIgO++34+/8A5q8BAJQr5r/T5v8A768BAJRG2p682v8A+K8BAKJKxoyWxv8AAbABAMR7p4hWp/8ACrABANbhgYEPfP8AE7ABAIgO++34+/8AHLABAJQr5r/T5v8AJbABAJRG2p682v8ALrABAKJKxoyWxv8AN7ABAL5ksYxrsf8AQLABAMqVnYhBnf8ASbABANX8bm4Ba/8AUrABAIYG/ff8/f8AW7ABAJAU9ODs9P8AZLABAJQr5r/T5v8AbbABAJRG2p682v8AdrABAKJKxoyWxv8Af7ABAL5ksYxrsf8AiLABAMqVnYhBnf8AkbABANX8bm4Ba/8AmrABAIYG/ff8/f8Ao7ABAJAU9ODs9P8ArLABAJQr5r/T5v8AtbABAJRG2p682v8AvrABAKJKxoyWxv8Ax7ABAL5ksYxrsf8A0LABAMqVnYhBnf8A2bABANbhgYEPfP8A4rABANX/TU0AS/8A67ABAHLTnhued/8A9bABABL82dlfAv8A/7ABAK1fs3Vws/8ACbEBAHLTnhued/8AE7EBABL82dlfAv8AHbEBAK1fs3Vws/8AJ7EBAOnR5+cpiv8AMbEBAHLTnhued/8AO7EBABL82dlfAv8ARbEBAK1fs3Vws/8AT7EBAOnR5+cpiv8AWbEBAD7QpmamHv8AY7EBAHLTnhued/8AbbEBABL82dlfAv8Ad7EBAK1fs3Vws/8AgbEBAOnR5+cpiv8Ai7EBAD7QpmamHv8AlbEBAB/85uarAv8An7EBAHLTnhued/8AqbEBABL82dlfAv8As7EBAK1fs3Vws/8AvbEBAOnR5+cpiv8Ax7EBAD7QpmamHv8A0bEBAB/85uarAv8A27EBABvSpqZ2Hf8A5bEBAHLTnhued/8A77EBABL82dlfAv8A+bEBAK1fs3Vws/8AA7IBAOnR5+cpiv8ADbIBAD7QpmamHv8AF7IBAB/85uarAv8AIbIBABvSpqZ2Hf8AK7IBAAAAZmZmZv8ANbIBAEwZ8+Dz2/8APrIBAF893ajdtf8AR7IBAIyqykOiyv8AULIBAEER+fD56P8AWbIBAFcu5LrkvP8AYrIBAHtlzHvMxP8Aa7IBAI3FviuMvv8AdLIBAEER+fD56P8AfbIBAFcu5LrkvP8AhrIBAHtlzHvMxP8Aj7IBAIyqykOiyv8AmLIBAJHzrAhorP8AobIBAEER+fD56P8AqrIBAE0p68zrxf8As7IBAF893ajdtf8AvLIBAHtlzHvMxP8AxbIBAIyqykOiyv8AzrIBAJHzrAhorP8A17IBAEER+fD56P8A4LIBAE0p68zrxf8A6bIBAF893ajdtf8A8rIBAHtlzHvMxP8A+7IBAImg006z0/8ABLMBAI3FviuMvv8ADbMBAJPynghYnv8AFrMBADwM/Pf88P8AH7MBAEwZ8+Dz2/8AKLMBAE0p68zrxf8AMbMBAF893ajdtf8AOrMBAHtlzHvMxP8AQ7MBAImg006z0/8ATLMBAI3FviuMvv8AVbMBAJPynghYnv8AXrMBADwM/Pf88P8AZ7MBAEwZ8+Dz2/8AcLMBAE0p68zrxf8AebMBAF893ajdtf8AgrMBAHtlzHvMxP8Ai7MBAImg006z0/8AlLMBAI3FviuMvv8AnbMBAJHzrAhorP8AprMBAJbvgQhAgf8Ar7MBAEoV9eX14P8AurMBAFBI2aHZm/8AxbMBAGKyozGjVP8A0LMBAEkP+O346f8A27MBAE425Lrks/8A5rMBAFZoxHTEdv8A8bMBAGK+iyOLRf8A/LMBAEkP+O346f8AB7QBAE425Lrks/8AErQBAFZoxHTEdv8AHbQBAGKyozGjVP8AKLQBAGb/bQBtLP8AM7QBAEkP+O346f8APrQBAE0s6cfpwP8ASbQBAFBI2aHZm/8AVLQBAFZoxHTEdv8AX7QBAGKyozGjVP8AarQBAGb/bQBtLP8AdbQBAEkP+O346f8AgLQBAE0s6cfpwP8Ai7QBAFBI2aHZm/8AlrQBAFZoxHTEdv8AobQBAGCeq0GrXf8ArLQBAGK+iyOLRf8At7QBAGz/WgBaMv8AwrQBAEgH/Pf89f8AzbQBAEoV9eX14P8A2LQBAE0s6cfpwP8A47QBAFBI2aHZm/8A7rQBAFZoxHTEdv8A+bQBAGCeq0GrXf8ABLUBAGK+iyOLRf8AD7UBAGz/WgBaMv8AGrUBAEgH/Pf89f8AJbUBAEoV9eX14P8AMLUBAE0s6cfpwP8AO7UBAFBI2aHZm/8ARrUBAFZoxHTEdv8AUbUBAGCeq0GrXf8AXLUBAGK+iyOLRf8AZ7UBAGb/bQBtLP8AcrUBAGX/RABEG/8AfbUBAAAA8PDw8P8Ah7UBAAAAvb29vf8AkbUBAAAAY2NjY/8Am7UBAAAA9/f39/8ApbUBAAAAzMzMzP8Ar7UBAAAAlpaWlv8AubUBAAAAUlJSUv8Aw7UBAAAA9/f39/8AzbUBAAAAzMzMzP8A17UBAAAAlpaWlv8A4bUBAAAAY2NjY/8A67UBAAAAJSUlJf8A9bUBAAAA9/f39/8A/7UBAAAA2dnZ2f8ACbYBAAAAvb29vf8AE7YBAAAAlpaWlv8AHbYBAAAAY2NjY/8AJ7YBAAAAJSUlJf8AMbYBAAAA9/f39/8AO7YBAAAA2dnZ2f8ARbYBAAAAvb29vf8AT7YBAAAAlpaWlv8AWbYBAAAAc3Nzc/8AY7YBAAAAUlJSUv8AbbYBAAAAJSUlJf8Ad7YBAAAA//////8AgbYBAAAA8PDw8P8Ai7YBAAAA2dnZ2f8AlbYBAAAAvb29vf8An7YBAAAAlpaWlv8AqbYBAAAAc3Nzc/8As7YBAAAAUlJSUv8AvbYBAAAAJSUlJf8Ax7YBAAAA//////8A0bYBAAAA8PDw8P8A27YBAAAA2dnZ2f8A5bYBAAAAvb29vf8A77YBAAAAlpaWlv8A+bYBAAAAc3Nzc/8AA7cBAAAAUlJSUv8ADbcBAAAAJSUlJf8AF7cBAAAAAAAAAP8AIbcBABUw/v7mzv8ALbcBABOT/f2ua/8AObcBAA7w5uZVDf8ARbcBABMg/v7t3v8AUbcBABR4/f2+hf8AXbcBABHC/f2NPP8AabcBAA392dlHAf8AdbcBABMg/v7t3v8AgbcBABR4/f2+hf8AjbcBABHC/f2NPP8AmbcBAA7w5uZVDf8ApbcBAA36pqY2A/8AsbcBABMg/v7t3v8AvbcBABVb/f3Qov8AybcBABOT/f2ua/8A1bcBABHC/f2NPP8A4bcBAA7w5uZVDf8A7bcBAA36pqY2A/8A+bcBABMg/v7t3v8ABbgBABVb/f3Qov8AEbgBABOT/f2ua/8AHbgBABHC/f2NPP8AKbgBABDq8fFpE/8ANbgBAA392dlIAf8AQbgBAAz3jIwtBP8ATbgBABUU///16/8AWbgBABUw/v7mzv8AZbgBABVb/f3Qov8AcbgBABOT/f2ua/8AfbgBABHC/f2NPP8AibgBABDq8fFpE/8AlbgBAA392dlIAf8AobgBAAz3jIwtBP8ArbgBABUU///16/8AubgBABUw/v7mzv8AxbgBABVb/f3Qov8A0bgBABOT/f2ua/8A3bgBABHC/f2NPP8A6bgBABDq8fFpE/8A9bgBAA392dlIAf8AAbkBAA36pqY2A/8ADbkBAAz2f38nBP8AGbkBABk2/v7oyP8AIrkBABN5/f27hP8AK7kBAAXF4+NKM/8ANLkBABol/v7w2f8APbkBABhz/f3Miv8ARrkBAA2k/PyNWf8AT7kBAAPa19cwH/8AWLkBABol/v7w2f8AYbkBABhz/f3Miv8AarkBAA2k/PyNWf8Ac7kBAAXF4+NKM/8AfLkBAAD/s7MAAP8AhbkBABol/v7w2f8AjrkBABhf/f3Unv8Al7kBABN5/f27hP8AoLkBAA2k/PyNWf8AqbkBAAXF4+NKM/8AsrkBAAD/s7MAAP8Au7kBABol/v7w2f8AxLkBABhf/f3Unv8AzbkBABN5/f27hP8A1rkBAA2k/PyNWf8A37kBAAey7+9lSP8A6LkBAAPa19cwH/8A8bkBAAD/mZkAAP8A+rkBABgS///37P8AA7oBABk2/v7oyP8ADLoBABhf/f3Unv8AFboBABN5/f27hP8AHroBAA2k/PyNWf8AJ7oBAAey7+9lSP8AMLoBAAPa19cwH/8AOboBAAD/mZkAAP8AQroBABgS///37P8AS7oBABk2/v7oyP8AVLoBABhf/f3Unv8AXboBABN5/f27hP8AZroBAA2k/PyNWf8Ab7oBAAey7+9lSP8AeLoBAAPa19cwH/8AgboBAAD/s7MAAP8AiroBAAD/f38AAP8Ak7oBAI5E46bO4/8An7oBAL6Zmmo9mv8ArLoBAJDTtB94tP8AuLoBAEFh37Lfiv8AxLoBAFK4oDOgLP8A0LoBAABj+/uamf8A3LoBAP7h4+MaHP8A6LoBABeP/f2/b/8A9LoBABX///9/AP8AALsBAMYq1sqy1v8ADLsBAI5E46bO4/8AGLsBAL6Zmmo9mv8AJbsBACpm////mf8AMrsBAJDTtB94tP8APrsBAEFh37Lfiv8ASrsBAFK4oDOgLP8AVrsBAABj+/uamf8AYrsBAP7h4+MaHP8AbrsBABeP/f2/b/8AersBABX///9/AP8AhrsBAMYq1sqy1v8AkrsBAI5E46bO4/8AnrsBAL6Zmmo9mv8Aq7sBACpm////mf8AuLsBAA/FsbFZKP8AxbsBAJDTtB94tP8A0bsBAEFh37Lfiv8A3bsBAFK4oDOgLP8A6bsBAABj+/uamf8A9bsBAP7h4+MaHP8AAbwBABeP/f2/b/8ADbwBABX///9/AP8AGbwBAMYq1sqy1v8AJbwBAI5E46bO4/8AMLwBAJDTtB94tP8AO7wBAEFh37Lfiv8ARrwBAI5E46bO4/8AUbwBAJDTtB94tP8AXLwBAEFh37Lfiv8AZ7wBAFK4oDOgLP8AcrwBAI5E46bO4/8AfbwBAJDTtB94tP8AiLwBAEFh37Lfiv8Ak7wBAFK4oDOgLP8AnrwBAABj+/uamf8AqbwBAI5E46bO4/8AtLwBAJDTtB94tP8Av7wBAEFh37Lfiv8AyrwBAFK4oDOgLP8A1bwBAABj+/uamf8A4LwBAP7h4+MaHP8A67wBAI5E46bO4/8A9rwBAJDTtB94tP8AAb0BAEFh37Lfiv8ADL0BAFK4oDOgLP8AF70BAABj+/uamf8AIr0BAP7h4+MaHP8ALb0BABeP/f2/b/8AOL0BAI5E46bO4/8AQ70BAJDTtB94tP8ATr0BAEFh37Lfiv8AWb0BAFK4oDOgLP8AZL0BAABj+/uamf8Ab70BAP7h4+MaHP8Aer0BABeP/f2/b/8Ahb0BABX///9/AP8AkL0BAI5E46bO4/8Am70BAJDTtB94tP8Apr0BAEFh37Lfiv8Asb0BAFK4oDOgLP8AvL0BAABj+/uamf8Ax70BAP7h4+MaHP8A0r0BABeP/f2/b/8A3b0BABX///9/AP8A6L0BAMYq1sqy1v8A870BAANO+/u0rv8A/70BAJI147PN4/8AC74BAE0p68zrxf8AF74BAANO+/u0rv8AI74BAJI147PN4/8AL74BAE0p68zrxf8AO74BAMob5N7L5P8AR74BAANO+/u0rv8AU74BAJI147PN4/8AX74BAE0p68zrxf8Aa74BAMob5N7L5P8Ad74BABhY/v7Zpv8Ag74BAANO+/u0rv8Aj74BAJI147PN4/8Am74BAE0p68zrxf8Ap74BAMob5N7L5P8As74BABhY/v7Zpv8Av74BACoy////zP8Ay74BAANO+/u0rv8A174BAJI147PN4/8A474BAE0p68zrxf8A774BAMob5N7L5P8A+74BABhY/v7Zpv8AB78BACoy////zP8AE78BABws5eXYvf8AH78BAANO+/u0rv8AK78BAJI147PN4/8AN78BAE0p68zrxf8AQ78BAMob5N7L5P8AT78BABhY/v7Zpv8AW78BACoy////zP8AZ78BABws5eXYvf8Ac78BAOkj/f3a7P8Af78BAANO+/u0rv8Ai78BAJI147PN4/8Al78BAE0p68zrxf8Ao78BAMob5N7L5P8Ar78BABhY/v7Zpv8Au78BACoy////zP8Ax78BABws5eXYvf8A078BAOkj/f3a7P8A378BAAAA8vLy8v8A678BAGw14rPizf8A978BABFR/f3NrP8AA8ABAJsf6MvV6P8AD8ABAGw14rPizf8AG8ABABFR/f3NrP8AJ8ABAJsf6MvV6P8AM8ABAOQr9PTK5P8AP8ABAGw14rPizf8AS8ABABFR/f3NrP8AV8ABAJsf6MvV6P8AY8ABAOQr9PTK5P8Ab8ABADgt9eb1yf8Ae8ABAGw14rPizf8Ah8ABABFR/f3NrP8Ak8ABAJsf6MvV6P8An8ABAOQr9PTK5P8Aq8ABADgt9eb1yf8At8ABACNR///yrv8Aw8ABAGw14rPizf8Az8ABABFR/f3NrP8A28ABAJsf6MvV6P8A58ABAOQr9PTK5P8A88ABADgt9eb1yf8A/8ABACNR///yrv8AC8EBABkn8fHizP8AF8EBAGw14rPizf8AI8EBABFR/f3NrP8AL8EBAJsf6MvV6P8AO8EBAOQr9PTK5P8AR8EBADgt9eb1yf8AU8EBACNR///yrv8AX8EBABkn8fHizP8Aa8EBAAAAzMzMzP8Ad8EBAOb9jo4BUv8AgcEBAE2/ZCdkGf8AjMEBAObcxcUbff8AlsEBAOh23t53rv8AoMEBAOU+8fG22v8AqsEBAOkd/f3g7/8AtMEBADsm9eb10P8AvsEBAD1n4bjhhv8AyMEBAD+mvH+8Qf8A0sEBAETFkk2SIf8A3MEBAOb9jo4BUv8A5sEBAETFkk2SIf8A8cEBAE2/ZCdkGf8A/MEBAObcxcUbff8ABsIBAOh23t53rv8AEMIBAOU+8fG22v8AGsIBAOkd/f3g7/8AJMIBAAAA9/f39/8ALsIBADsm9eb10P8AOMIBAD1n4bjhhv8AQsIBAD+mvH+8Qf8ATMIBAOdM6emjyf8AVcIBAAAA9/f39/8AXsIBAD+B16HXav8AZ8IBAOTc0NAci/8AcMIBAOU+8fG22v8AecIBAD1n4bjhhv8AgsIBAEjGrE2sJv8Ai8IBAOTc0NAci/8AlMIBAOU+8fG22v8AncIBAAAA9/f39/8ApsIBAD1n4bjhhv8Ar8IBAEjGrE2sJv8AuMIBAObcxcUbff8AwcIBAOdM6emjyf8AysIBAOkd/f3g7/8A08IBADsm9eb10P8A3MIBAD+B16HXav8A5cIBAETFkk2SIf8A7sIBAObcxcUbff8A98IBAOdM6emjyf8AAMMBAOkd/f3g7/8ACcMBAAAA9/f39/8AEsMBADsm9eb10P8AG8MBAD+B16HXav8AJMMBAETFkk2SIf8ALcMBAObcxcUbff8ANsMBAOh23t53rv8AP8MBAOU+8fG22v8ASMMBAOkd/f3g7/8AUcMBADsm9eb10P8AWsMBAD1n4bjhhv8AY8MBAD+mvH+8Qf8AbMMBAETFkk2SIf8AdcMBAObcxcUbff8AfsMBAOh23t53rv8Ah8MBAOU+8fG22v8AkMMBAOkd/f3g7/8AmcMBAAAA9/f39/8AosMBADsm9eb10P8Aq8MBAD1n4bjhhv8AtMMBAD+mvH+8Qf8AvcMBAETFkk2SIf8AxsMBAM7/S0AAS/8A0MMBAGX/RABEG/8A28MBAM6tg3Yqg/8A5cMBAMdXq5lwq/8A78MBAMczz8Klz/8A+cMBANIV6OfU6P8AA8QBAEwe8Nnw0/8ADcQBAFBE26bboP8AF8QBAFh7rlquYf8AIcQBAGHFeBt4N/8AK8QBAM7/S0AAS/8ANcQBAGHFeBt4N/8AQMQBAGX/RABEG/8AS8QBAM6tg3Yqg/8AVcQBAMdXq5lwq/8AX8QBAMczz8Klz/8AacQBANIV6OfU6P8Ac8QBAAAA9/f39/8AfcQBAEwe8Nnw0/8Ah8QBAFBE26bboP8AkcQBAFh7rlquYf8Am8QBAMRGw6+Nw/8ApMQBAAAA9/f39/8ArcQBAFJav3+/e/8AtsQBAMmolHsylP8Av8QBAMczz8Klz/8AyMQBAFBE26bboP8A0cQBAGb/iACIN/8A2sQBAMmolHsylP8A48QBAMczz8Klz/8A7MQBAAAA9/f39/8A9cQBAFBE26bboP8A/sQBAGb/iACIN/8AB8UBAM6tg3Yqg/8AEMUBAMRGw6+Nw/8AGcUBANIV6OfU6P8AIsUBAEwe8Nnw0/8AK8UBAFJav3+/e/8ANMUBAGHFeBt4N/8APcUBAM6tg3Yqg/8ARsUBAMRGw6+Nw/8AT8UBANIV6OfU6P8AWMUBAAAA9/f39/8AYcUBAEwe8Nnw0/8AasUBAFJav3+/e/8Ac8UBAGHFeBt4N/8AfMUBAM6tg3Yqg/8AhcUBAMdXq5lwq/8AjsUBAMczz8Klz/8Al8UBANIV6OfU6P8AoMUBAEwe8Nnw0/8AqcUBAFBE26bboP8AssUBAFh7rlquYf8Au8UBAGHFeBt4N/8AxMUBAM6tg3Yqg/8AzcUBAMdXq5lwq/8A1sUBAMczz8Klz/8A38UBANIV6OfU6P8A6MUBAAAA9/f39/8A8cUBAEwe8Nnw0/8A+sUBAFBE26bboP8AA8YBAFh7rlquYf8ADMYBAGHFeBt4N/8AFcYBAL0L8uzn8v8AHsYBAJc926a92/8AJ8YBAI3FviuMvv8AMMYBALkI9vHu9v8AOcYBAJso4b3J4f8AQsYBAJFwz3Spz/8AS8YBAI/3sAVwsP8AVMYBALkI9vHu9v8AXcYBAJso4b3J4f8AZsYBAJFwz3Spz/8Ab8YBAI3FviuMvv8AeMYBAI/3jQRajf8AgcYBALkI9vHu9v8AisYBAKgY5tDR5v8Ak8YBAJc926a92/8AnMYBAJFwz3Spz/8ApcYBAI3FviuMvv8ArsYBAI/3jQRajf8At8YBALkI9vHu9v8AwMYBAKgY5tDR5v8AycYBAJc926a92/8A0sYBAJFwz3Spz/8A28YBAI63wDaQwP8A5MYBAI/3sAVwsP8A7cYBAI/4ewNOe/8A9sYBAOkI///3+/8A/8YBAL0L8uzn8v8ACMcBAKgY5tDR5v8AEccBAJc926a92/8AGscBAJFwz3Spz/8AI8cBAI63wDaQwP8ALMcBAI/3sAVwsP8ANccBAI/4ewNOe/8APscBAOkI///3+/8AR8cBAL0L8uzn8v8AUMcBAKgY5tDR5v8AWccBAJc926a92/8AYscBAJFwz3Spz/8Aa8cBAI63wDaQwP8AdMcBAI/3sAVwsP8AfccBAI/3jQRajf8AhscBAI/5WAI4WP8Aj8cBAMgO8Ozi8P8AmscBAJc926a92/8ApccBAILQmRyQmf8AsMcBAM8I9/bv9/8Au8cBAJso4b3J4f8AxscBAI+Az2epz/8A0ccBAIL7igKBiv8A3McBAM8I9/bv9/8A58cBAJso4b3J4f8A8scBAI+Az2epz/8A/ccBAILQmRyQmf8ACMgBAHf8bAFsWf8AE8gBAM8I9/bv9/8AHsgBAKgY5tDR5v8AKcgBAJc926a92/8ANMgBAI+Az2epz/8AP8gBAILQmRyQmf8ASsgBAHf8bAFsWf8AVcgBAM8I9/bv9/8AYMgBAKgY5tDR5v8Aa8gBAJc926a92/8AdsgBAI+Az2epz/8AgcgBAI63wDaQwP8AjMgBAIL7igKBiv8Al8gBAHb8ZAFkUP8AosgBAOkI///3+/8ArcgBAMgO8Ozi8P8AuMgBAKgY5tDR5v8Aw8gBAJc926a92/8AzsgBAI+Az2epz/8A2cgBAI63wDaQwP8A5MgBAIL7igKBiv8A78gBAHb8ZAFkUP8A+sgBAOkI///3+/8ABckBAMgO8Ozi8P8AEMkBAKgY5tDR5v8AG8kBAJc926a92/8AJskBAI+Az2epz/8AMckBAI63wDaQwP8APMkBAIL7igKBiv8AR8kBAHf8bAFsWf8AUskBAHX7RgFGNv8AXckBABLuf387CP8AZ8kBAMP/Sy0AS/8AcskBABT2s7NYBv8AfMkBABbo4OCCFP8AhskBABeb/f24Y/8AkMkBABhI/v7gtv8AmskBAKUU69ja6/8ApMkBALEv0rKr0v8ArskBALNUrIBzrP8AuMkBAL21iFQniP8AwskBABLuf387CP8AzMkBAL21iFQniP8A18kBAMP/Sy0AS/8A4skBABT2s7NYBv8A7MkBABbo4OCCFP8A9skBABeb/f24Y/8AAMoBABhI/v7gtv8ACsoBAAAA9/f39/8AFMoBAKUU69ja6/8AHsoBALEv0rKr0v8AKMoBALNUrIBzrP8AMsoBABe78fGjQP8AO8oBAAAA9/f39/8ARMoBALJFw5mOw/8ATcoBABH95uZhAf8AVsoBABeb/f24Y/8AX8oBALEv0rKr0v8AaMoBALmbmV48mf8AccoBABH95uZhAf8AesoBABeb/f24Y/8Ag8oBAAAA9/f39/8AjMoBALEv0rKr0v8AlcoBALmbmV48mf8AnsoBABT2s7NYBv8Ap8oBABe78fGjQP8AsMoBABhI/v7gtv8AucoBAKUU69ja6/8AwsoBALJFw5mOw/8Ay8oBAL21iFQniP8A1MoBABT2s7NYBv8A3coBABe78fGjQP8A5soBABhI/v7gtv8A78oBAAAA9/f39/8A+MoBAKUU69ja6/8AAcsBALJFw5mOw/8ACssBAL21iFQniP8AE8sBABT2s7NYBv8AHMsBABbo4OCCFP8AJcsBABeb/f24Y/8ALssBABhI/v7gtv8AN8sBAKUU69ja6/8AQMsBALEv0rKr0v8AScsBALNUrIBzrP8AUssBAL21iFQniP8AW8sBABT2s7NYBv8AZMsBABbo4OCCFP8AbcsBABeb/f24Y/8AdssBABhI/v7gtv8Af8sBAAAA9/f39/8AiMsBAKUU69ja6/8AkcsBALEv0rKr0v8AmssBALNUrIBzrP8Ao8sBAL21iFQniP8ArMsBALwO7+fh7/8AtcsBANZDycmUx/8AvssBAOre3d0cd/8Ax8sBALkI9vHu9v8A0MsBANMp2Ne12P8A2csBAOSL399lsP8A4ssBAO/ozs4SVv8A68sBALkI9vHu9v8A9MsBANMp2Ne12P8A/csBAOSL399lsP8ABswBAOre3d0cd/8AD8wBAOz/mJgAQ/8AGMwBALkI9vHu9v8AIcwBAMwm2tS52v8AKswBANZDycmUx/8AM8wBAOSL399lsP8APMwBAOre3d0cd/8ARcwBAOz/mJgAQ/8ATswBALkI9vHu9v8AV8wBAMwm2tS52v8AYMwBANZDycmUx/8AacwBAOSL399lsP8AcswBAOnR5+cpiv8Ae8wBAO/ozs4SVv8AhMwBAOz/kZEAP/8AjcwBAMMF+ff0+f8AlswBALwO7+fh7/8An8wBAMwm2tS52v8AqMwBANZDycmUx/8AscwBAOSL399lsP8AuswBAOnR5+cpiv8Aw8wBAO/ozs4SVv8AzMwBAOz/kZEAP/8A1cwBAMMF+ff0+f8A3swBALwO7+fh7/8A58wBAMwm2tS52v8A8MwBANZDycmUx/8A+cwBAOSL399lsP8AAs0BAOnR5+cpiv8AC80BAO/ozs4SVv8AFM0BAOz/mJgAQ/8AHc0BAPL/Z2cAH/8AJs0BALQI9e/t9f8AMs0BAKgl3Ly93P8APs0BALBksXVrsf8ASs0BALYH9/Lw9/8AVs0BAK0c4svJ4v8AYs0BAK06yJ6ayP8Abs0BALaAo2pRo/8Aes0BALYH9/Lw9/8Ahs0BAK0c4svJ4v8Aks0BAK06yJ6ayP8Ans0BALBksXVrsf8Aqs0BALy5j1Qnj/8Ats0BALYH9/Lw9/8Aws0BAKoS69ra6/8Azs0BAKgl3Ly93P8A2s0BAK06yJ6ayP8A5s0BALBksXVrsf8A8s0BALy5j1Qnj/8A/s0BALYH9/Lw9/8ACs4BAKoS69ra6/8AFs4BAKgl3Ly93P8AIs4BAK06yJ6ayP8ALs4BAKxTuoB9uv8AOs4BALaAo2pRo/8ARs4BAL7YhkoUhv8AUs4BAL8C/fz7/f8AXs4BALQI9e/t9f8Aas4BAKoS69ra6/8Ads4BAKgl3Ly93P8Ags4BAK06yJ6ayP8Ajs4BAKxTuoB9uv8Ams4BALaAo2pRo/8Aps4BAL7YhkoUhv8Ass4BAL8C/fz7/f8Avs4BALQI9e/t9f8Ays4BAKoS69ra6/8A1s4BAKgl3Ly93P8A4s4BAK06yJ6ayP8A7s4BAKxTuoB9uv8A+s4BALaAo2pRo/8ABs8BALy5j1Qnj/8AEs8BAL//fT8Aff8AHs8BAPL/Z2cAH/8AKM8BAJbxYQUwYf8AM88BAPncsrIYK/8APc8BAAWj1tZgTf8AR88BAA139PSlgv8AUc8BAA82/f3bx/8AW88BAI4g8NHl8P8AZc8BAI1X3pLF3v8Ab88BAI+nw0OTw/8Aec8BAJTOrCFmrP8Ag88BAPL/Z2cAH/8Ajc8BAJTOrCFmrP8AmM8BAJbxYQUwYf8Ao88BAPncsrIYK/8Arc8BAAWj1tZgTf8At88BAA139PSlgv8Awc8BAA82/f3bx/8Ay88BAAAA9/f39/8A1c8BAI4g8NHl8P8A388BAI1X3pLF3v8A6c8BAI+nw0OTw/8A888BAAyW7++KYv8A/M8BAAAA9/f39/8ABdABAI+Az2epz/8ADtABAPj/ysoAIP8AF9ABAA139PSlgv8AINABAI1X3pLF3v8AKdABAI/3sAVxsP8AMtABAPj/ysoAIP8AO9ABAA139PSlgv8ARNABAAAA9/f39/8ATdABAI1X3pLF3v8AVtABAI/3sAVxsP8AX9ABAPncsrIYK/8AaNABAAyW7++KYv8AcdABAA82/f3bx/8AetABAI4g8NHl8P8Ag9ABAI+Az2epz/8AjNABAJTOrCFmrP8AldABAPncsrIYK/8AntABAAyW7++KYv8Ap9ABAA82/f3bx/8AsNABAAAA9/f39/8AudABAI4g8NHl8P8AwtABAI+Az2epz/8Ay9ABAJTOrCFmrP8A1NABAPncsrIYK/8A3dABAAWj1tZgTf8A5tABAA139PSlgv8A79ABAA82/f3bx/8A+NABAI4g8NHl8P8AAdEBAI1X3pLF3v8ACtEBAI+nw0OTw/8AE9EBAJTOrCFmrP8AHNEBAPncsrIYK/8AJdEBAAWj1tZgTf8ALtEBAA139PSlgv8AN9EBAA82/f3bx/8AQNEBAAAA9/f39/8ASdEBAI4g8NHl8P8AUtEBAI1X3pLF3v8AW9EBAI+nw0OTw/8AZNEBAJTOrCFmrP8AbdEBAPL/Z2cAH/8Ad9EBAAAAGhoaGv8AgtEBAPncsrIYK/8AjNEBAAWj1tZgTf8AltEBAA139PSlgv8AoNEBAA82/f3bx/8AqtEBAAAA4ODg4P8AtNEBAAAAurq6uv8AvtEBAAAAh4eHh/8AyNEBAAAATU1NTf8A0tEBAPL/Z2cAH/8A3NEBAAAATU1NTf8A59EBAAAAGhoaGv8A8tEBAPncsrIYK/8A/NEBAAWj1tZgTf8ABtIBAA139PSlgv8AENIBAA82/f3bx/8AGtIBAAAA//////8AJNIBAAAA4ODg4P8ALtIBAAAAurq6uv8AONIBAAAAh4eHh/8AQtIBAAyW7++KYv8AS9IBAAAA//////8AVNIBAAAAmZmZmf8AXdIBAPj/ysoAIP8AZtIBAA139PSlgv8Ab9IBAAAAurq6uv8AeNIBAAAAQEBAQP8AgdIBAPj/ysoAIP8AitIBAA139PSlgv8Ak9IBAAAA//////8AnNIBAAAAurq6uv8ApdIBAAAAQEBAQP8ArtIBAPncsrIYK/8At9IBAAyW7++KYv8AwNIBAA82/f3bx/8AydIBAAAA4ODg4P8A0tIBAAAAmZmZmf8A29IBAAAATU1NTf8A5NIBAPncsrIYK/8A7dIBAAyW7++KYv8A9tIBAA82/f3bx/8A/9IBAAAA//////8ACNMBAAAA4ODg4P8AEdMBAAAAmZmZmf8AGtMBAAAATU1NTf8AI9MBAPncsrIYK/8ALNMBAAWj1tZgTf8ANdMBAA139PSlgv8APtMBAA82/f3bx/8AR9MBAAAA4ODg4P8AUNMBAAAAurq6uv8AWdMBAAAAh4eHh/8AYtMBAAAATU1NTf8Aa9MBAPncsrIYK/8AdNMBAAWj1tZgTf8AfdMBAA139PSlgv8AhtMBAA82/f3bx/8Aj9MBAAAA//////8AmNMBAAAA4ODg4P8AodMBAAAAurq6uv8AqtMBAAAAh4eHh/8As9MBAAAATU1NTf8AvNMBAAMg/f3g3f8AxdMBAPRc+vqftf8AztMBAOPcxcUbiv8A19MBAA0c/v7r4v8A4NMBAPxI+/u0uf8A6dMBAO6T9/doof8A8tMBAOD9rq4Bfv8A+9MBAA0c/v7r4v8ABNQBAPxI+/u0uf8ADdQBAO6T9/doof8AFtQBAOPcxcUbiv8AH9QBANX8enoBd/8AKNQBAA0c/v7r4v8AMdQBAAM8/PzFwP8AOtQBAPRc+vqftf8AQ9QBAO6T9/doof8ATNQBAOPcxcUbiv8AVdQBANX8enoBd/8AXtQBAA0c/v7r4v8AZ9QBAAM8/PzFwP8AcNQBAPRc+vqftf8AedQBAO6T9/doof8AgtQBAObD3d00l/8Ai9QBAOD9rq4Bfv8AlNQBANX8enoBd/8AndQBAA4M///38/8AptQBAAMg/f3g3f8Ar9QBAAM8/PzFwP8AuNQBAPRc+vqftf8AwdQBAO6T9/doof8AytQBAObD3d00l/8A09QBAOD9rq4Bfv8A3NQBANX8enoBd/8A5dQBAA4M///38/8A7tQBAAMg/f3g3f8A99QBAAM8/PzFwP8AANUBAPRc+vqftf8ACdUBAO6T9/doof8AEtUBAObD3d00l/8AG9UBAOD9rq4Bfv8AJNUBANX8enoBd/8ALdUBAMf/akkAav8ANtUBAPX/paUAJv8AQtUBAKerlTE2lf8AT9UBAALQ19cwJ/8AW9UBAAq49PRtQ/8AZ9UBABSd/f2uYf8Ac9UBAB5u/v7gkP8Af9UBAIgY+ODz+P8Ai9UBAIpD6avZ6f8Al9UBAI9x0XSt0f8Ao9UBAJedtEV1tP8Ar9UBAPX/paUAJv8Au9UBAJedtEV1tP8AyNUBAKerlTE2lf8A1dUBAALQ19cwJ/8A4dUBAAq49PRtQ/8A7dUBABSd/f2uYf8A+dUBAB5u/v7gkP8ABdYBACpA////v/8AEdYBAIgY+ODz+P8AHdYBAIpD6avZ6f8AKdYBAI9x0XSt0f8ANdYBAA2k/PyNWf8AQNYBACpA////v/8AS9YBAI9W25G/2/8AVtYBAP7h19cZHP8AYdYBABSd/f2uYf8AbNYBAIpD6avZ6f8Ad9YBAJHBtix7tv8AgtYBAP7h19cZHP8AjdYBABSd/f2uYf8AmNYBACpA////v/8Ao9YBAIpD6avZ6f8ArtYBAJHBtix7tv8AudYBAALQ19cwJ/8AxNYBAA2k/PyNWf8Az9YBAB5u/v7gkP8A2tYBAIgY+ODz+P8A5dYBAI9W25G/2/8A8NYBAJedtEV1tP8A+9YBAALQ19cwJ/8ABtcBAA2k/PyNWf8AEdcBAB5u/v7gkP8AHNcBACpA////v/8AJ9cBAIgY+ODz+P8AMtcBAI9W25G/2/8APdcBAJedtEV1tP8ASNcBAALQ19cwJ/8AU9cBAAq49PRtQ/8AXtcBABSd/f2uYf8AadcBAB5u/v7gkP8AdNcBAIgY+ODz+P8Af9cBAIpD6avZ6f8AitcBAI9x0XSt0f8AldcBAJedtEV1tP8AoNcBAALQ19cwJ/8Aq9cBAAq49PRtQ/8AttcBABSd/f2uYf8AwdcBAB5u/v7gkP8AzNcBACpA////v/8A19cBAIgY+ODz+P8A4tcBAIpD6avZ6f8A7dcBAI9x0XSt0f8A+NcBAJedtEV1tP8AA9gBAPX/paUAJv8AD9gBAGv/aABoN/8AHNgBAALQ19cwJ/8AKNgBAAq49PRtQ/8ANNgBABSd/f2uYf8AQNgBAB9z/v7gi/8ATNgBADNq79nvi/8AWNgBAD6C2abZav8AZNgBAFN5vWa9Y/8AcNgBAGfTmBqYUP8AfNgBAPX/paUAJv8AiNgBAGfTmBqYUP8AldgBAGv/aABoN/8AotgBAALQ19cwJ/8ArtgBAAq49PRtQ/8AutgBABSd/f2uYf8AxtgBAB9z/v7gi/8A0tgBACpA////v/8A3tgBADNq79nvi/8A6tgBAD6C2abZav8A9tgBAFN5vWa9Y/8AAtkBAA2k/PyNWf8ADdkBACpA////v/8AGNkBAEKIz5HPYP8AI9kBAP7h19cZHP8ALtkBABSd/f2uYf8AOdkBAD6C2abZav8ARNkBAGLSlhqWQf8AT9kBAP7h19cZHP8AWtkBABSd/f2uYf8AZdkBACpA////v/8AcNkBAD6C2abZav8Ae9kBAGLSlhqWQf8AhtkBAALQ19cwJ/8AkdkBAA2k/PyNWf8AnNkBAB9z/v7gi/8Ap9kBADNq79nvi/8AstkBAEKIz5HPYP8AvdkBAGfTmBqYUP8AyNkBAALQ19cwJ/8A09kBAA2k/PyNWf8A3tkBAB9z/v7gi/8A6dkBACpA////v/8A9NkBADNq79nvi/8A/9kBAEKIz5HPYP8ACtoBAGfTmBqYUP8AFdoBAALQ19cwJ/8AINoBAAq49PRtQ/8AK9oBABSd/f2uYf8ANtoBAB9z/v7gi/8AQdoBADNq79nvi/8ATNoBAD6C2abZav8AV9oBAFN5vWa9Y/8AYtoBAGfTmBqYUP8AbdoBAALQ19cwJ/8AeNoBAAq49PRtQ/8Ag9oBABSd/f2uYf8AjtoBAB9z/v7gi/8AmdoBACpA////v/8ApNoBADNq79nvi/8Ar9oBAD6C2abZav8AutoBAFN5vWa9Y/8AxdoBAGfTmBqYUP8A0NoBAA0s/v7g0v8A2doBAAmL/PyScv8A4toBAAHT3t4tJv8A69oBAA0l/v7l2f8A9NoBAAts/Pyukf8A/doBAAez+/tqSv8ABtsBAP3gy8sYHf8AD9sBAA0l/v7l2f8AGNsBAAts/Pyukf8AIdsBAAez+/tqSv8AKtsBAAHT3t4tJv8AM9sBAP3npaUPFf8APNsBAA0l/v7l2f8ARdsBAAxc/Py7of8ATtsBAAmL/PyScv8AV9sBAAez+/tqSv8AYNsBAAHT3t4tJv8AadsBAP3npaUPFf8ActsBAA0l/v7l2f8Ae9sBAAxc/Py7of8AhNsBAAmL/PyScv8AjdsBAAez+/tqSv8AltsBAAPQ7+87LP8An9sBAP3gy8sYHf8AqNsBAPv/mZkADf8AsdsBAA4P///18P8AutsBAA0s/v7g0v8Aw9sBAAxc/Py7of8AzNsBAAmL/PyScv8A1dsBAAez+/tqSv8A3tsBAAPQ7+87LP8A59sBAP3gy8sYHf8A8NsBAPv/mZkADf8A+dsBAA4P///18P8AAtwBAA0s/v7g0v8AC9wBAAxc/Py7of8AFNwBAAmL/PyScv8AHdwBAAez+/tqSv8AJtwBAAPQ7+87LP8AL9wBAP3gy8sYHf8AONwBAP3npaUPFf8AQdwBAPn/Z2cADf8AStwBAP7h5OQaHP8AU9wBAJKyuDd+uP8AXNwBAFOTr02vSv8AZdwBAP7h5OQaHP8AbtwBAJKyuDd+uP8Ad9wBAFOTr02vSv8AgNwBAM+Eo5hOo/8AidwBAP7h5OQaHP8AktwBAJKyuDd+uP8Am9wBAFOTr02vSv8ApNwBAM+Eo5hOo/8ArdwBABX///9/AP8AttwBAP7h5OQaHP8Av9wBAJKyuDd+uP8AyNwBAFOTr02vSv8A0dwBAM+Eo5hOo/8A2twBABX///9/AP8A49wBACrM////M/8A7NwBAP7h5OQaHP8A9dwBAJKyuDd+uP8A/twBAFOTr02vSv8AB90BAM+Eo5hOo/8AEN0BABX///9/AP8AGd0BACrM////M/8AIt0BAA/BpqZWKP8AK90BAP7h5OQaHP8ANN0BAJKyuDd+uP8APd0BAFOTr02vSv8ARt0BAM+Eo5hOo/8AT90BABX///9/AP8AWN0BACrM////M/8AYd0BAA/BpqZWKP8Aat0BAOh59/eBv/8Ac90BAP7h5OQaHP8AfN0BAJKyuDd+uP8Ahd0BAFOTr02vSv8Ajt0BAM+Eo5hOo/8Al90BABX///9/AP8AoN0BACrM////M/8Aqd0BAA/BpqZWKP8Ast0BAOh59/eBv/8Au90BAAAAmZmZmf8AxN0BAHJ4wmbCpf8Azd0BAAub/PyNYv8A1t0BAJxNy42gy/8A390BAHJ4wmbCpf8A6N0BAAub/PyNYv8A8d0BAJxNy42gy/8A+t0BAORm5+eKw/8AA94BAHJ4wmbCpf8ADN4BAAub/PyNYv8AFd4BAJxNy42gy/8AHt4BAORm5+eKw/8AJ94BADqb2KbYVP8AMN4BAHJ4wmbCpf8AOd4BAAub/PyNYv8AQt4BAJxNy42gy/8AS94BAORm5+eKw/8AVN4BADqb2KbYVP8AXd4BACLQ///ZL/8AZt4BAHJ4wmbCpf8Ab94BAAub/PyNYv8AeN4BAJxNy42gy/8Agd4BAORm5+eKw/8Ait4BADqb2KbYVP8Ak94BACLQ///ZL/8AnN4BABla5eXElP8Apd4BAHJ4wmbCpf8Art4BAAub/PyNYv8At94BAJxNy42gy/8AwN4BAORm5+eKw/8Ayd4BADqb2KbYVP8A0t4BACLQ///ZL/8A294BABla5eXElP8A5N4BAAAAs7Ozs/8A7d4BAHhU043Tx/8A994BANNSvbyAvf8AAt8BACpM////s/8ADN8BAK8l2r662v8AFt8BAASL+/uAcv8AIN8BAJBk04Cx0/8AKt8BABac/f20Yv8ANN8BADqG3rPeaf8APt8BAOkv/PzN5f8ASN8BAAAA2dnZ2f8AUt8BAHhU043Tx/8AXN8BANNSvbyAvf8AZ98BAE0p68zrxf8Act8BACpM////s/8AfN8BAK8l2r662v8Aht8BAASL+/uAcv8AkN8BAJBk04Cx0/8Amt8BABac/f20Yv8ApN8BADqG3rPeaf8Art8BAOkv/PzN5f8AuN8BAAAA2dnZ2f8Awt8BAHhU043Tx/8AzN8BANNSvbyAvf8A198BAE0p68zrxf8A4t8BACWQ///tb/8A7d8BACpM////s/8A998BAK8l2r662v8AAeABAASL+/uAcv8AC+ABAJBk04Cx0/8AFeABABac/f20Yv8AH+ABADqG3rPeaf8AKeABAOkv/PzN5f8AM+ABAAAA2dnZ2f8APeABAHhU043Tx/8ARuABACpM////s/8AT+ABAK8l2r662v8AWOABAHhU043Tx/8AYeABACpM////s/8AauABAK8l2r662v8Ac+ABAASL+/uAcv8AfOABAHhU043Tx/8AheABACpM////s/8AjuABAK8l2r662v8Al+ABAASL+/uAcv8AoOABAJBk04Cx0/8AqeABAHhU043Tx/8AsuABACpM////s/8Au+ABAK8l2r662v8AxOABAASL+/uAcv8AzeABAJBk04Cx0/8A1uABABac/f20Yv8A3+ABAHhU043Tx/8A6OABACpM////s/8A8eABAK8l2r662v8A+uABAASL+/uAcv8AA+EBAJBk04Cx0/8ADOEBABac/f20Yv8AFeEBADqG3rPeaf8AHuEBAHhU043Tx/8AJ+EBACpM////s/8AMOEBAK8l2r662v8AOeEBAASL+/uAcv8AQuEBAJBk04Cx0/8AS+EBABac/f20Yv8AVOEBADqG3rPeaf8AXeEBAOkv/PzN5f8AZuEBAHhU043Tx/8Ab+EBACpM////s/8AeOEBAK8l2r662v8AgeEBAASL+/uAcv8AiuEBAJBk04Cx0/8Ak+EBABac/f20Yv8AnOEBADqG3rPeaf8ApeEBAOkv/PzN5f8AruEBAAAA2dnZ2f8At+EBAO39np4BQv8AxeEBALGCol5Pov8A1OEBAPq01dU+T/8A4uEBAAq49PRtQ/8A8OEBABSd/f2uYf8A/uEBAB9z/v7gi/8ADOIBADFg9eb1mP8AGuIBAE9B3avdpP8AKOIBAHJ4wmbCpf8ANuIBAI+7vTKIvf8AROIBAO39np4BQv8AUuIBAI+7vTKIvf8AYeIBALGCol5Pov8AcOIBAPq01dU+T/8AfuIBAAq49PRtQ/8AjOIBABSd/f2uYf8AmuIBAB9z/v7gi/8AqOIBACpA////v/8AtuIBADFg9eb1mP8AxOIBAE9B3avdpP8A0uIBAHJ4wmbCpf8A4OIBAA2k/PyNWf8A7eIBACpA////v/8A+uIBAFFN1ZnVlP8AB+MBAP7h19cZHP8AFOMBABSd/f2uYf8AIeMBAE9B3avdpP8ALuMBAI/EuiuDuv8AO+MBAP7h19cZHP8ASOMBABSd/f2uYf8AVeMBACpA////v/8AYuMBAE9B3avdpP8Ab+MBAI/EuiuDuv8AfOMBAPq01dU+T/8AieMBAA2k/PyNWf8AluMBAB9z/v7gi/8Ao+MBADFg9eb1mP8AsOMBAFFN1ZnVlP8AveMBAI+7vTKIvf8AyuMBAPq01dU+T/8A1+MBAA2k/PyNWf8A5OMBAB9z/v7gi/8A8eMBACpA////v/8A/uMBADFg9eb1mP8AC+QBAFFN1ZnVlP8AGOQBAI+7vTKIvf8AJeQBAPq01dU+T/8AMuQBAAq49PRtQ/8AP+QBABSd/f2uYf8ATOQBAB9z/v7gi/8AWeQBADFg9eb1mP8AZuQBAE9B3avdpP8Ac+QBAHJ4wmbCpf8AgOQBAI+7vTKIvf8AjeQBAPq01dU+T/8AmuQBAAq49PRtQ/8Ap+QBABSd/f2uYf8AtOQBAB9z/v7gi/8AweQBACpA////v/8AzuQBADFg9eb1mP8A2+QBAE9B3avdpP8A6OQBAHJ4wmbCpf8A9eQBAI+7vTKIvf8AAuUBAJMP//D4//8AEeUBABgj+vrr1/8AI+UBAH///wD///8ALeUBAHGA/3//1P8APeUBAH8P//D///8ASOUBACoa9fX13P8AU+UBABc6///kxP8AX+UBAAAAAAAAAP8AauUBABkx///rzf8AfuUBAKr//wAA//8AiOUBAMDO4oor4v8AmOUBAAC+paUqKv8Ao+UBABdj3t64h/8AsuUBAIBnoF+eoP8AweUBAD///3//AP8A0eUBABHa0tJpHv8A4OUBAAuv//9/UP8A6+UBAJqT7WSV7f8A/+UBACEi///43P8ADeYBAPbn3NwUPP8AGuYBAH///wD///8AJOYBAKr/iwAAi/8AMuYBAH//iwCLi/8AQOYBAB7vuLiGC/8AU+YBAAAAqampqf8AYeYBAFX/ZABkAP8AcOYBAAAAqampqf8AfuYBACduvb23a/8AjeYBANT/i4sAi/8AnuYBADqOa1VrL/8AsuYBABf///+MAP8AwuYBAMbAzJkyzP8A0uYBAAD/i4sAAP8A3+YBAAp56emWev8A7+YBAFU9vI+8j/8AAecBAK+Pi0g9i/8AFOcBAH9nTy9PT/8AJ+cBAH9nTy9PT/8AOucBAID/0QDO0f8ATecBAMf/05QA0/8AXecBAOjr//8Uk/8Aa+cBAIr//wC///8AfOcBAAAAaWlpaf8AiecBAAAAaWlpaf8AlucBAJTh/x6Q//8ApucBAADOsrIiIv8AtecBABwP///68P8AxucBAFXAiyKLIv8A1+cBANT///8A//8A5OcBAAAA3Nzc3P8A8+cBAKoH//j4//8AA+gBACP////XAP8ADegBAB7Z2tqlIP8AHOgBAAAAgICAgP8AJugBAFX/gACAAP8AMegBADvQ/63/L/8AQugBAAAAgICAgP8ATOgBAFUP//D/8P8AWugBAOmW//9ptP8AZ+gBAACMzc1cXP8AdugBAML/gksAgv8AgugBACoP////8P8AjegBACZq8PDmjP8AmOgBAKoU+ubm+v8ApugBAPAP///w9f8AuegBAED//Hz8AP8AyOgBACYx///6zf8A2ugBAIk/5q3Y5v8A6egBAAB38PCAgP8A+egBAH8f/+D///8ACOkBACoo+vr60v8AIukBAAAA09PT0/8AMekBAFVk7pDukP8AQekBAAAA09PT0/8AUOkBAPhJ//+2wf8AX+kBAAyE//+gev8AcOkBAH3RsiCyqv8Ag+kBAI91+ofO+v8AlekBAJQ4mXeImf8AqekBAJQ4mXeImf8AvekBAJc03rDE3v8A0ekBACof////4P8A4ukBAFX//wD/AP8A7OkBAFXAzTLNMv8A++kBABUU+vrw5v8ABuoBANT///8A//8AE+oBAAD/gIAAAP8AH+oBAHGAzWbNqv8ANeoBAKr/zQAAzf8AReoBAMyY07pV0/8AV+oBALd825Nw2/8AaeoBAGepszyzcf8AfeoBALCP7nto7v8AkuoBAG//+gD6mv8AqeoBAH2n0UjRzP8AvuoBAOTkx8cVhf8A0+oBAKrGcBkZcP8A5eoBAGoJ//X/+v8A9OoBAAQe///k4f8AA+sBABpJ///ktf8AEesBABlR///erf8AIusBAKr/gAAAgP8ALOsBABsX/f315v8AOesBACr/gICAAP8AROsBADjAjmuOI/8AU+sBABv///+lAP8AX+sBAAv///9FAP8AbusBANZ72tpw1v8AeusBACZI7u7oqv8AjesBAFVk+5j7mP8AnOsBAH9D7q/u7v8Ar+sBAPF829twk/8AwusBABop///v1f8A0usBABRG///auf8A4esBABSwzc2FP/8A6+sBAPc////Ay/8A9esBANRG3d2g3f8A/+sBAIQ75rDg5v8AD+wBANT/gIAAgP8AG+wBAAD///8AAP8AJOwBAAA9vLyPj/8AM+wBAJ+14UFp4f8AQuwBABHci4tFE/8AU+wBAASK+vqAcv8AX+wBABOa9PSkYP8Ab+wBAGeqiy6LV/8AfewBABEQ///17v8Ai+wBAA23oKBSLf8Al+wBAAAAwMDAwP8Ao+wBAIts64fO6/8AsOwBAK+PzWpazf8Av+wBAJQ4kHCAkP8AzuwBAJQ4kHCAkP8A3ewBAAAF///6+v8A5+wBAGr//wD/f/8A+OwBAJKbtEaCtP8AB+0BABhU0tK0jP8AEO0BAH//gACAgP8AGu0BANQd2Ni/2P8AJ+0BAAa4//9jR/8AM+0BAHu24EDg0P8AQu0BANRz7u6C7v8ATu0BABtE9fXes/8AWe0BAAAA//////8AZO0BAAAA9fX19f8AdO0BACr/////AP8AgO0BADjAzZrNMv8Ake0BAC1D/Pf8uf8Amu0BAERb3a3djv8Ao+0BAGKyozGjVP8ArO0BACoy////zP8Ate0BAD5V5sLmmf8Avu0BAFVkxnjGef8Ax+0BAGO7hCOEQ/8A0O0BACoy////zP8A2e0BAD5V5sLmmf8A4u0BAFVkxnjGef8A6+0BAGKyozGjVP8A9O0BAGv/aABoN/8A/e0BACoy////zP8ABu4BADdR8Nnwo/8AD+4BAERb3a3djv8AGO4BAFVkxnjGef8AIe4BAGKyozGjVP8AKu4BAGv/aABoN/8AM+4BACoy////zP8APO4BADdR8Nnwo/8ARe4BAERb3a3djv8ATu4BAFVkxnjGef8AV+4BAGCeq0GrXf8AYO4BAGO7hCOEQ/8Aae4BAGz/WgBaMv8Acu4BACoZ////5f8Ae+4BAC1D/Pf8uf8AhO4BADdR8Nnwo/8Aje4BAERb3a3djv8Alu4BAFVkxnjGef8An+4BAGCeq0GrXf8AqO4BAGO7hCOEQ/8Ase4BAGz/WgBaMv8Auu4BACoZ////5f8Aw+4BAC1D/Pf8uf8AzO4BADdR8Nnwo/8A1e4BAERb3a3djv8A3u4BAFVkxnjGef8A5+4BAGCeq0GrXf8A8O4BAGO7hCOEQ/8A+e4BAGv/aABoN/8AAu8BAG7/RQBFKf8AC+8BADFJ+O34sf8AFu8BAHVhzX/Nu/8AIe8BAJDCuCx/uP8ALO8BACoy////zP8AN+8BAGNC2qHatP8AQu8BAISqxEG2xP8ATe8BAJbLqCJeqP8AWO8BACoy////zP8AY+8BAGNC2qHatP8Abu8BAISqxEG2xP8Aee8BAJDCuCx/uP8AhO8BAKS/lCU0lP8Aj+8BACoy////zP8Amu8BAEU66cfptP8Ape8BAHVhzX/Nu/8AsO8BAISqxEG2xP8Au+8BAJDCuCx/uP8Axu8BAKS/lCU0lP8A0e8BACoy////zP8A3O8BAEU66cfptP8A5+8BAHVhzX/Nu/8A8u8BAISqxEG2xP8A/e8BAIvYwB2RwP8ACPABAJbLqCJeqP8AE/ABAJ7nhAwshP8AHvABACom////2f8AKfABADFJ+O34sf8ANPABAEU66cfptP8AP/ABAHVhzX/Nu/8ASvABAISqxEG2xP8AVfABAIvYwB2RwP8AYPABAJbLqCJeqP8Aa/ABAJ7nhAwshP8AdvABACom////2f8AgfABADFJ+O34sf8AjPABAEU66cfptP8Al/ABAHVhzX/Nu/8AovABAISqxEG2xP8ArfABAIvYwB2RwP8AuPABAJbLqCJeqP8Aw/ABAKS/lCU0lP8AzvABAJ7nWAgdWP8A2fABACVC///3vP8A5PABAByv/v7ET/8A7/ABABDu2dlfDv8A+vABACoq////1P8ABfEBABxw/v7Zjv8AEPEBABbV/v6ZKf8AG/EBAA/8zMxMAv8AJvEBACoq////1P8AMfEBABxw/v7Zjv8APPEBABbV/v6ZKf8AR/EBABDu2dlfDv8AUvEBAA34mZk0BP8AXfEBACoq////1P8AaPEBAB9t/v7jkf8Ac/EBAByv/v7ET/8AfvEBABbV/v6ZKf8AifEBABDu2dlfDv8AlPEBAA34mZk0BP8An/EBACoq////1P8AqvEBAB9t/v7jkf8AtfEBAByv/v7ET/8AwPEBABbV/v6ZKf8Ay/EBABLp7OxwFP8A1vEBAA/8zMxMAv8A4fEBAAz3jIwtBP8A7PEBACoZ////5f8A9/EBACVC///3vP8AAvIBAB9t/v7jkf8ADfIBAByv/v7ET/8AGPIBABbV/v6ZKf8AI/IBABLp7OxwFP8ALvIBAA/8zMxMAv8AOfIBAAz3jIwtBP8ARPIBACoZ////5f8AT/IBACVC///3vP8AWvIBAB9t/v7jkf8AZfIBAByv/v7ET/8AcPIBABbV/v6ZKf8Ae/IBABLp7OxwFP8AhvIBAA/8zMxMAv8AkfIBAA34mZk0BP8AnPIBAA3wZmYlBv8Ap/IBACJf///toP8AsvIBABiy/v6yTP8AvfIBAAXd8PA7IP8AyPIBACpN////sv8A0/IBAB2i/v7MXP8A3vIBABHC/f2NPP8A6fIBAP7h4+MaHP8A9PIBACpN////sv8A//IBAB2i/v7MXP8ACvMBABHC/f2NPP8AFfMBAAXd8PA7IP8AIPMBAPb/vb0AJv8AK/MBACpN////sv8ANvMBAB6I/v7Zdv8AQfMBABiy/v6yTP8ATPMBABHC/f2NPP8AV/MBAAXd8PA7IP8AYvMBAPb/vb0AJv8AbfMBACpN////sv8AePMBAB6I/v7Zdv8Ag/MBABiy/v6yTP8AjvMBABHC/f2NPP8AmfMBAAfU/PxOKv8ApPMBAP7h4+MaHP8Ar/MBAPX/sbEAJv8AuvMBACoy////zP8AxfMBACJf///toP8A0PMBAB6I/v7Zdv8A2/MBABiy/v6yTP8A5vMBABHC/f2NPP8A8fMBAAfU/PxOKv8A/PMBAP7h4+MaHP8AB/QBAPX/sbEAJv8AEvQBACoy////zP8AHfQBACJf///toP8AKPQBAB6I/v7Zdv8AM/QBABiy/v6yTP8APvQBABHC/f2NPP8ASfQBAAfU/PxOKv8AVPQBAP7h4+MaHP8AX/QBAPb/vb0AJv8AavQBAPL/gIAAJv8AdfQBAJMP//D4//8Af/QBABgj+vrr1/8AjPQBABck///v2/8AmvQBABck7u7fzP8AqPQBABckzc3AsP8AtvQBABgii4uDeP8AxPQBAHGA/3//1P8Az/QBAHGA/3//1P8A2/QBAHGA7nbuxv8A5/QBAHGAzWbNqv8A8/QBAHGAi0WLdP8A//QBAH8P//D///8ABfUBAH8P//D///8ADPUBAH8P7uDu7v8AE/UBAH8OzcHNzf8AGvUBAH8Oi4OLi/8AIfUBACoa9fX13P8AJ/UBABc6///kxP8ALvUBABc6///kxP8ANvUBABc67u7Vt/8APvUBABY6zc23nv8ARvUBABc6i4t9a/8AWAwCAAAAAAAAAP8ATvUBABkx///rzf8AXfUBAKr//wAA//8AYvUBAKr//wAA//8AaPUBAKr/7gAA7v8AbvUBAKr/zQAAzf8AdPUBAKr/iwAAi/8AevUBAMDO4oor4v8AhfUBAAC+paUqKv8Ai/UBAAC///9AQP8AkvUBAAC/7u47O/8AmfUBAAC/zc0zM/8AoPUBAAC+i4sjI/8Ap/UBABdj3t64h/8AsfUBABdk///Tm/8AvPUBABdj7u7Fkf8Ax/UBABdjzc2qff8A0vUBABdji4tzVf8A3fUBAIBnoF+eoP8A5/UBAINn/5j1//8A8vUBAINm7o7l7v8A/fUBAINnzXrFzf8ACPYBAINmi1OGi/8AE/YBAD///3//AP8AHvYBAD///3//AP8AKvYBAD//7nbuAP8ANvYBAD//zWbNAP8AQvYBAD//i0WLAP8ATvYBABHa0tJpHv8AWPYBABHb//9/JP8AY/YBABHb7u52If8AbvYBABHazc1mHf8AefYBABHci4tFE/8AhPYBAAuv//9/UP8AivYBAAep//9yVv8AkfYBAAap7u5qUP8AmPYBAAapzc1bRf8An/YBAAaoi4s+L/8ApvYBAJqT7WSV7f8AtfYBACEi///43P8AvvYBACEi///43P8AyPYBACIj7u7ozf8A0vYBACIizc3Isf8A3PYBACMii4uIeP8A5vYBAPbn3NwUPP8A7vYBAH///wD///8A8/YBAH///wD///8A+fYBAH//7gDu7v8A//YBAH//zQDNzf8ABfcBAH//iwCLi/8AC/cBAB7vuLiGC/8AGfcBAB7w//+5D/8AKPcBAB7w7u6tDv8AN/cBAB7wzc2VDP8ARvcBAB7wi4tlCP8AVfcBAFX/ZABkAP8AX/cBACduvb23a/8AafcBADqOa1VrL/8AePcBADqP/8r/cP8AiPcBADqP7rzuaP8AmPcBADqPzaLNWv8AqPcBADqPi26LPf8AuPcBABf///+MAP8Aw/cBABX///9/AP8Az/cBABX/7u52AP8A2/cBABX/zc1mAP8A5/cBABX/i4tFAP8A8/cBAMbAzJkyzP8A/vcBAMbB/78+//8ACvgBAMbA7rI67v8AFvgBAMbAzZoyzf8AIvgBAMbAi2gii/8ALvgBAAp56emWev8AOfgBAFU9vI+8j/8ARvgBAFU+/8H/wf8AVPgBAFU+7rTutP8AYvgBAFU+zZvNm/8AcPgBAFU+i2mLaf8AfvgBAK+Pi0g9i/8AjPgBAH9nTy9PT/8AmvgBAH9o/5f///8AqfgBAH9n7o3u7v8AuPgBAH9ozXnNzf8Ax/gBAH9oi1KLi/8A1vgBAH9nTy9PT/8A5PgBAID/0QDO0f8A8vgBAMf/05QA0/8A/fgBAOjr//8Uk/8ABvkBAOjr//8Uk/8AEPkBAOjr7u4Sif8AGvkBAOjrzc0Qdv8AJPkBAOfsi4sKUP8ALvkBAIr//wC///8AOvkBAIr//wC///8AR/kBAIr/7gCy7v8AVPkBAIr/zQCazf8AYfkBAIr/iwBoi/8AbvkBAAAAaWlpaf8AdvkBAAAAaWlpaf8AfvkBAJTh/x6Q//8AifkBAJTh/x6Q//8AlfkBAJTh7hyG7v8AofkBAJThzRh0zf8ArfkBAJThixBOi/8AufkBAADOsrIiIv8Aw/kBAADP//8wMP8AzvkBAADP7u4sLP8A2fkBAADPzc0mJv8A5PkBAADPi4saGv8A7/kBABwP///68P8A+/kBAFXAiyKLIv8AB/oBAAAA3Nzc3P8AEfoBAKoH//j4//8AHPoBACP////XAP8AIfoBACP////XAP8AJ/oBACP/7u7JAP8ALfoBACP/zc2tAP8AM/oBACP/i4t1AP8AOfoBAB7Z2tqlIP8AQ/oBAB7a///BJf8ATvoBAB7a7u60Iv8AWfoBAB7azc2bHf8AZPoBAB7ai4tpFP8Ab/oBAAAAwMDAwP8AdPoBAAAAAAAAAP8AevoBAAAAAwMDA/8AgPoBAAAAGhoaGv8Ah/oBAAAA//////8Aj/oBAAAAHBwcHP8AlvoBAAAAHx8fH/8AnfoBAAAAISEhIf8ApPoBAAAAJCQkJP8Aq/oBAAAAJiYmJv8AsvoBAAAAKSkpKf8AufoBAAAAKysrK/8AwPoBAAAALi4uLv8Ax/oBAAAAMDAwMP8AzvoBAAAABQUFBf8A1PoBAAAAMzMzM/8A2/oBAAAANjY2Nv8A4voBAAAAODg4OP8A6foBAAAAOzs7O/8A8PoBAAAAPT09Pf8A9/oBAAAAQEBAQP8A/voBAAAAQkJCQv8ABfsBAAAARUVFRf8ADPsBAAAAR0dHR/8AE/sBAAAASkpKSv8AGvsBAAAACAgICP8AIPsBAAAATU1NTf8AJ/sBAAAAT09PT/8ALvsBAAAAUlJSUv8ANfsBAAAAVFRUVP8APPsBAAAAV1dXV/8AQ/sBAAAAWVlZWf8ASvsBAAAAXFxcXP8AUfsBAAAAXl5eXv8AWPsBAAAAYWFhYf8AX/sBAAAAY2NjY/8AZvsBAAAACgoKCv8AbPsBAAAAZmZmZv8Ac/sBAAAAaWlpaf8AevsBAAAAa2tra/8AgfsBAAAAbm5ubv8AiPsBAAAAcHBwcP8Aj/sBAAAAc3Nzc/8AlvsBAAAAdXV1df8AnfsBAAAAeHh4eP8ApPsBAAAAenp6ev8Aq/sBAAAAfX19ff8AsvsBAAAADQ0NDf8AuPsBAAAAf39/f/8Av/sBAAAAgoKCgv8AxvsBAAAAhYWFhf8AzfsBAAAAh4eHh/8A1PsBAAAAioqKiv8A2/sBAAAAjIyMjP8A4vsBAAAAj4+Pj/8A6fsBAAAAkZGRkf8A8PsBAAAAlJSUlP8A9/sBAAAAlpaWlv8A/vsBAAAADw8PD/8ABPwBAAAAmZmZmf8AC/wBAAAAnJycnP8AEvwBAAAAnp6env8AGfwBAAAAoaGhof8AIPwBAAAAo6Ojo/8AJ/wBAAAApqampv8ALvwBAAAAqKioqP8ANfwBAAAAq6urq/8APPwBAAAAra2trf8AQ/wBAAAAsLCwsP8ASvwBAAAAEhISEv8AUPwBAAAAs7Ozs/8AV/wBAAAAtbW1tf8AXvwBAAAAuLi4uP8AZfwBAAAAurq6uv8AbPwBAAAAvb29vf8Ac/wBAAAAv7+/v/8AevwBAAAAwsLCwv8AgfwBAAAAxMTExP8AiPwBAAAAx8fHx/8Aj/wBAAAAycnJyf8AlvwBAAAAFBQUFP8AnPwBAAAAzMzMzP8Ao/wBAAAAz8/Pz/8AqvwBAAAA0dHR0f8AsfwBAAAA1NTU1P8AuPwBAAAA1tbW1v8Av/wBAAAA2dnZ2f8AxvwBAAAA29vb2/8AzfwBAAAA3t7e3v8A1PwBAAAA4ODg4P8A2/wBAAAA4+Pj4/8A4vwBAAAAFxcXF/8A6PwBAAAA5eXl5f8A7/wBAAAA6Ojo6P8A9vwBAAAA6+vr6/8A/fwBAAAA7e3t7f8ABP0BAAAA8PDw8P8AC/0BAAAA8vLy8v8AEv0BAAAA9fX19f8AGf0BAAAA9/f39/8AIP0BAAAA+vr6+v8AJ/0BAAAA/Pz8/P8ALv0BAFX//wD/AP8ANP0BAFX//wD/AP8AO/0BAFX/7gDuAP8AQv0BAFX/zQDNAP8ASf0BAFX/iwCLAP8AUP0BADvQ/63/L/8AXP0BAAAAwMDAwP8AYf0BAAAAAAAAAP8AZ/0BAAAAAwMDA/8Abf0BAAAAGhoaGv8AdP0BAAAA//////8AfP0BAAAAHBwcHP8Ag/0BAAAAHx8fH/8Aiv0BAAAAISEhIf8Akf0BAAAAJCQkJP8AmP0BAAAAJiYmJv8An/0BAAAAKSkpKf8Apv0BAAAAKysrK/8Arf0BAAAALi4uLv8AtP0BAAAAMDAwMP8Au/0BAAAABQUFBf8Awf0BAAAAMzMzM/8AyP0BAAAANjY2Nv8Az/0BAAAAODg4OP8A1v0BAAAAOzs7O/8A3f0BAAAAPT09Pf8A5P0BAAAAQEBAQP8A6/0BAAAAQkJCQv8A8v0BAAAARUVFRf8A+f0BAAAAR0dHR/8AAP4BAAAASkpKSv8AB/4BAAAACAgICP8ADf4BAAAATU1NTf8AFP4BAAAAT09PT/8AG/4BAAAAUlJSUv8AIv4BAAAAVFRUVP8AKf4BAAAAV1dXV/8AMP4BAAAAWVlZWf8AN/4BAAAAXFxcXP8APv4BAAAAXl5eXv8ARf4BAAAAYWFhYf8ATP4BAAAAY2NjY/8AU/4BAAAACgoKCv8AWf4BAAAAZmZmZv8AYP4BAAAAaWlpaf8AZ/4BAAAAa2tra/8Abv4BAAAAbm5ubv8Adf4BAAAAcHBwcP8AfP4BAAAAc3Nzc/8Ag/4BAAAAdXV1df8Aiv4BAAAAeHh4eP8Akf4BAAAAenp6ev8AmP4BAAAAfX19ff8An/4BAAAADQ0NDf8Apf4BAAAAf39/f/8ArP4BAAAAgoKCgv8As/4BAAAAhYWFhf8Auv4BAAAAh4eHh/8Awf4BAAAAioqKiv8AyP4BAAAAjIyMjP8Az/4BAAAAj4+Pj/8A1v4BAAAAkZGRkf8A3f4BAAAAlJSUlP8A5P4BAAAAlpaWlv8A6/4BAAAADw8PD/8A8f4BAAAAmZmZmf8A+P4BAAAAnJycnP8A//4BAAAAnp6env8ABv8BAAAAoaGhof8ADf8BAAAAo6Ojo/8AFP8BAAAApqampv8AG/8BAAAAqKioqP8AIv8BAAAAq6urq/8AKf8BAAAAra2trf8AMP8BAAAAsLCwsP8AN/8BAAAAEhISEv8APf8BAAAAs7Ozs/8ARP8BAAAAtbW1tf8AS/8BAAAAuLi4uP8AUv8BAAAAurq6uv8AWf8BAAAAvb29vf8AYP8BAAAAv7+/v/8AZ/8BAAAAwsLCwv8Abv8BAAAAxMTExP8Adf8BAAAAx8fHx/8AfP8BAAAAycnJyf8Ag/8BAAAAFBQUFP8Aif8BAAAAzMzMzP8AkP8BAAAAz8/Pz/8Al/8BAAAA0dHR0f8Anv8BAAAA1NTU1P8Apf8BAAAA1tbW1v8ArP8BAAAA2dnZ2f8As/8BAAAA29vb2/8Auv8BAAAA3t7e3v8Awf8BAAAA4ODg4P8AyP8BAAAA4+Pj4/8Az/8BAAAAFxcXF/8A1f8BAAAA5eXl5f8A3P8BAAAA6Ojo6P8A4/8BAAAA6+vr6/8A6v8BAAAA7e3t7f8A8f8BAAAA8PDw8P8A+P8BAAAA8vLy8v8A//8BAAAA9fX19f8ABgACAAAA9/f39/8ADQACAAAA+vr6+v8AFAACAAAA/Pz8/P8AGwACAFUP//D/8P8AJAACAFUP//D/8P8ALgACAFUP7uDu4P8AOAACAFUOzcHNwf8AQgACAFUOi4OLg/8ATAACAOmW//9ptP8AVAACAOqR//9utP8AXQACAOuN7u5qp/8AZgACAOyHzc1gkP8AbwACAOqUi4s6Yv8AeAACAACMzc1cXP8AggACAACU//9qav8AjQACAACU7u5jY/8AmAACAACVzc1VVf8AowACAACUi4s6Ov8ArgACAML/gksAgv8AtQACACoA/////gAAuwACACoP////8P8AwQACACoP////8P8AyAACACoP7u7u4P8AzwACACoOzc3Nwf8A1gACACoOi4uLg/8A3QACACZq8PDmjP8A4wACACdw///2j/8A6gACACdw7u7mhf8A8QACACdvzc3Gc/8A+AACACdvi4uGTv8A/wACAKoU+ubm+v8ACAECAPAP///w9f8AFgECAPAP///w9f8AJQECAO8P7u7g5f8ANAECAPAOzc3Bxf8AQwECAO8Oi4uDhv8AUgECAED//Hz8AP8AXAECACYx///6zf8AaQECACYx///6zf8AdwECACUy7u7pv/8AhQECACYxzc3Jpf8AkwECACcxi4uJcP8AoQECAIk/5q3Y5v8AqwECAIpA/7/v//8AtgECAIpA7rLf7v8AwQECAIo/zZrAzf8AzAECAIlAi2iDi/8A1wECAAB38PCAgP8A4gECAH8f/+D///8A7AECAH8f/+D///8A9wECAH8f7tHu7v8AAgICAH8fzbTNzf8ADQICAH8fi3qLi/8AGAICACNz7u7dgv8AJwICACN0///si/8ANwICACNz7u7cgv8ARwICACNzzc2+cP8AVwICACNzi4uBTP8AZwICACoo+vr60v8AfAICAAAA09PT0/8AhgICAAAA09PT0/8AkAICAPhJ//+2wf8AmgICAPlR//+uuf8ApQICAPhR7u6irf8AsAICAPlQzc2Mlf8AuwICAPlQi4tfZf8AxgICAAyE//+gev8A0gICAAyE//+gev8A3wICAAuE7u6Vcv8A7AICAAyFzc2BYv8A+QICAAyFi4tXQv8ABgMCAH3RsiCyqv8AFAMCAI91+ofO+v8AIQMCAI9P/7Di//8ALwMCAI9P7qTT7v8APQMCAI5PzY22zf8ASwMCAI9Oi2B7i/8AWQMCAK+P/4Rw//8AaAMCAJQ4mXeImf8AdwMCAJQ4mXeImf8AhgMCAJc03rDE3v8AlQMCAJc1/8rh//8ApQMCAJc17rzS7v8AtQMCAJc1zaK1zf8AxQMCAJY1i257i/8A1QMCACof////4P8A4QMCACof////4P8A7gMCACof7u7u0f8A+wMCACofzc3NtP8ACAQCACofi4uLev8AFQQCAFXAzTLNMv8AHwQCABUU+vrw5v8AJQQCANT///8A//8ALQQCANT///8A//8ANgQCANT/7u4A7v8APwQCANT/zc0Azf8ASAQCANT/i4sAi/8AUQQCAO+5sLAwYP8AWAQCAOTL//80s/8AYAQCAOTL7u4wp/8AaAQCAOTMzc0pkP8AcAQCAOTLi4scYv8AeAQCAHGAzWbNqv8AiQQCAKr/zQAAzf8AlAQCAMyY07pV0/8AoQQCAMuZ/+Bm//8ArwQCAMuZ7tFf7v8AvQQCAMuZzbRSzf8AywQCAMuai3o3i/8A2QQCALd825Nw2/8A5gQCALd9/6uC//8A9AQCALd97p957v8AAgUCALd9zYlozf8AEAUCALd8i11Hi/8AHgUCAGepszyzcf8ALQUCALCP7nto7v8APQUCAG//+gD6mv8ATwUCAH2n0UjRzP8AXwUCAOTkx8cVhf8AbwUCAKrGcBkZcP8AfAUCAGoJ//X/+v8AhgUCAAQe///k4f8AkAUCAAQe///k4f8AmwUCAAQe7u7V0v8ApgUCAAMdzc23tf8AsQUCAAUdi4t9e/8AvAUCABpJ///ktf8AxQUCABlR///erf8A0QUCABlR///erf8A3gUCABlS7u7Pof8A6wUCABlSzc2zi/8A+AUCABlSi4t5Xv8ABQYCAKr/gAAAgP8ACgYCAKr/gAAAgP8AEwYCACoA/////gAAGAYCABsX/f315v8AIAYCADjAjmuOI/8AKgYCADjB/8D/Pv8ANQYCADjA7rPuOv8AQAYCADjAzZrNMv8ASwYCADjAi2mLIv8AVgYCABv///+lAP8AXQYCABv///+lAP8AZQYCABv/7u6aAP8AbQYCABv/zc2FAP8AdQYCABv/i4taAP8AfQYCAAv///9FAP8AhwYCAAv///9FAP8AkgYCAAv/7u5AAP8AnQYCAAv/zc03AP8AqAYCAAv/i4slAP8AswYCANZ72tpw1v8AugYCANZ8//+D+v8AwgYCANZ87u566f8AygYCANZ8zc1pyf8A0gYCANV8i4tHif8A2gYCACZI7u7oqv8A6AYCAFVk+5j7mP8A8gYCAFVl/5r/mv8A/QYCAFVk7pDukP8ACAcCAFVkzXzNfP8AEwcCAFVki1SLVP8AHgcCAH9D7q/u7v8ALAcCAH9E/7v///8AOwcCAH9E7q7u7v8ASgcCAH9EzZbNzf8AWQcCAH9Di2aLi/8AaAcCAPF829twk/8AdgcCAPF9//+Cq/8AhQcCAPF97u55n/8AlAcCAPF9zc1oif8AowcCAPF8i4tHXf8AsgcCABop///v1f8AvQcCABRG///auf8AxwcCABRG///auf8A0gcCABNF7u7Lrf8A3QcCABNFzc2vlf8A6AcCABRFi4t3Zf8A8wcCABSwzc2FP/8A+AcCAPc////Ay/8A/QcCAPVJ//+1xf8AAwgCAPVJ7u6puP8ACQgCAPVKzc2Rnv8ADwgCAPVJi4tjbP8AFQgCANRG3d2g3f8AGggCANRE//+7//8AIAgCANRE7u6u7v8AJggCANREzc2Wzf8ALAgCANRDi4tmi/8AMggCAIQ75rDg5v8APQgCAMTd8KAg8P8ARAgCAL/P/5sw//8ATAgCAMDP7pEs7v8AVAgCAMDPzX0mzf8AXAgCAMDPi1Uai/8AZAgCAAD///8AAP8AaAgCAAD///8AAP8AbQgCAAD/7u4AAP8AcggCAAD/zc0AAP8AdwgCAAD/i4sAAP8AfAgCAAA9vLyPj/8AhggCAAA+///Bwf8AkQgCAAA+7u60tP8AnAgCAAA+zc2bm/8ApwgCAAA+i4tpaf8AsggCAJ+14UFp4f8AvAgCAJ+3/0h2//8AxwgCAJ+37kNu7v8A0ggCAJ+2zTpfzf8A3QgCAJ+3iydAi/8A6AgCABHci4tFE/8A9AgCAASK+vqAcv8A+wgCAAmW//+Maf8AAwkCAAmW7u6CYv8ACwkCAAmWzc1wVP8AEwkCAAmWi4tMOf8AGwkCABOa9PSkYP8AJgkCAGeqiy6LV/8ALwkCAGer/1T/n/8AOQkCAGer7k7ulP8AQwkCAGerzUPNgP8ATQkCAGeqiy6LV/8AVwkCABEQ///17v8AYAkCABEQ///17v8AagkCABIR7u7l3v8AdAkCABIRzc3Fv/8AfgkCABIQi4uGgv8AiAkCAA23oKBSLf8AjwkCAA24//+CR/8AlwkCAA247u55Qv8AnwkCAA24zc1oOf8ApwkCAA25i4tHJv8ArwkCAIts64fO6/8AtwkCAJB4/4fO//8AwAkCAJB47n7A7v8AyQkCAJB4zWymzf8A0gkCAJF3i0pwi/8A2wkCAK+PzWpazf8A5QkCAK+Q/4Nv//8A8AkCAK+Q7npn7v8A+wkCAK+QzWlZzf8ABgoCAK+Qi0c8i/8AEQoCAJQ4kHCAkP8AGwoCAJU4/8bi//8AJgoCAJU47rnT7v8AMQoCAJQ5zZ+2zf8APAoCAJU4i2x7i/8ARwoCAJQ4kHCAkP8AUQoCAAAF///6+v8AVgoCAAAF///6+v8AXAoCAAAF7u7p6f8AYgoCAAAEzc3Jyf8AaAoCAAADi4uJif8AbgoCAGr//wD/f/8AegoCAGr//wD/f/8AhwoCAGr/7gDudv8AlAoCAGr/zQDNZv8AoQoCAGr/iwCLRf8ArgoCAJKbtEaCtP8AuAoCAJKc/2O4//8AwwoCAJKc7lys7v8AzgoCAJKczU+Uzf8A2QoCAJObizZki/8A5AoCABhU0tK0jP8A6AoCABSw//+lT/8A7QoCABSw7u6aSf8A8goCABSwzc2FP/8A9woCABSwi4taK/8A/AoCANQd2Ni/2P8ABAsCANQe///h//8ADQsCANQe7u7S7v8AFgsCANQdzc21zf8AHwsCANQdi4t7i/8AKAsCAAa4//9jR/8ALwsCAAa4//9jR/8ANwsCAAa47u5cQv8APwsCAAa4zc1POf8ARwsCAAa5i4s2Jv8AmQwCACoA/////gAATwsCAHu24EDg0P8AWQsCAIH//wD1//8AZAsCAIH/7gDl7v8AbwsCAIH/zQDFzf8AegsCAIH/iwCGi/8AhQsCANRz7u6C7v8AjAsCAOPX0NAgkP8AlgsCAOvB//8+lv8AoQsCAOvA7u46jP8ArAsCAOvAzc0yeP8AtwsCAOvAi4siUv8AwgsCABtE9fXes/8AyAsCABtF///nuv8AzwsCABtE7u7Yrv8A1gsCABtEzc26lv8A3QsCABtDi4t+Zv8A5AsCAAAA//////8A6gsCAAAA9fX19f8A9QsCACr/////AP8A/AsCACr/////AP8ABAwCACr/7u7uAP8ADAwCACr/zc3NAP8AFAwCACr/i4uLAP8AHAwCADjAzZrNMv8AkBACAHUgAgCsDAIArgwCALAMAgCyDAIAtAwCALYMAgC4DAIAugwCALwMAgC/DAIAwgwCAMUMAgDIDAIAywwCAM4MAgDRDAIA1AwCANcMAgDaDAIAAAAAAAQAAAAEAAAACwAAADYAAAAWAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAvBkCAAkAAADCGQIACgAAAMsZAgALAAAADRoCAAwAAAATGgIADQAAABgaAgAOAAAAyxkCAA8AAACgGgIAEAAAAKcaAgARAAAArxoCABIAAAC2GgIAEwAAAMIaAgAUAAAADRoCABUAAADOGgIAFgAAANYaAgAXAAAA4BoCABgAAADuGgIAGQAAAPUaAgAaAAAA+hoCABsAAAD9GgIAHAAAAAIbAgAdAAAAChsCAB4AAAAQGwIAHwAAABYbAgAgAAAAHRsCACEAAAAjGwIAIQAAACsbAgAiAAAAMhsCACMAAADLGQIAJAAAAKcaAgARAAAArxoCABIAAAApHQIAJQAAALYaAgATAAAAwhoCABQAAAANGgIAFQAAADQdAgAmAAAA1hoCABcAAADgGgIAGAAAAO4aAgAZAAAA9RoCABoAAAD6GgIAGwAAAP0aAgAcAAAAPB0CACcAAAAKGwIAHgAAABAbAgAfAAAAFhsCACAAAAAdGwIAIQAAACMbAgAhAAAAKxsCACIAAAAyGwIAIwAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAT+//+H/v//BwAAAAAAAAAA//9/////f//////////zf/79//////9///////////8P4P////8x/P///wAAAAAAAAD//////////////wEA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDX///7/////39/VP3/DwD+3////////////t//////AwD///////+fGf///88/AwAAAAAAAP7///9/Av7///9/AAAAAAAAAAAA////BwcAAAAAAP7//wf+BwAAAAD+//////////98/38vAGAAAADg////////IwAAAP8DAAAA4J/5///9xQMAAACwAwADAOCH+f///W0DAAAAXgAAHADgr/v///3tIwAAAAABAAAA4J/5///9zSMAAACwAwAAAODHPdYYx78DAAAAAAAAAADg3/3///3vAwAAAAADAAAA4N/9///97wMAAABAAwAAAODf/f///f8DAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA/v////9/DQA/AAAAAAAAAJYl8P6ubA0gHwAAAAAAAAAAAAAAAAAAAP/+////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////z8A/////38A7doHAAAAAFABUDGCq2IsAAAAAEAAyYD1BwAAAAAIAQL/////////////////////////D///////////////A///Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAEBMAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAACAAAAA/gMAAP7///////////8fAP7/////////////B+D/////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8/AAAAAAAAAAAAAAD//////////////////////////w8AAAAAAAAAAAAAAAAAAAAAYP8H/v//h/7//wcAAAAAAACAAP//f////3//////AAAAAAAAAP//////////////AQD4AwADAAAAAAD//////////z8AAAADAAAAwNf///v/////f39U/f8PAP7f///////////+3/////97AP///////58Z////zz8DAAAAAAAA/v///38C/v///38A/v/7//+7FgD///8HBwAAAAAA/v//B///BwD/A////////////3z/f+///z3/A+7////////z/z8e/8//AADun/n///3F0585gLDP/wMA5If5///9bdOHOQBewP8fAO6v+////e3zvzsAAMH/AADun/n///3N8485wLDD/wAA7Mc91hjHv8PHPYAAgP8AAO7f/f///e/D3z1gAMP/AADs3/3///3vw989YEDD/wAA7N/9///9/8PPPYAAw/8AAAAAAAAAAAAAAAAAAAAAAAD+/////3//B/9//wMAAAAAliXw/q5s/ztfP/8DAAAAAAAAAAP/A6DC//7///8D/v/fD7/+/z/+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HwIAAACgAAAA/v8+AP7///////////8fZv7/////////////dxkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAmNwAAPjlAABw5AAAZOcAAGTnAADQ6AAAcOQAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAMwAAADQAAAApAAAANQAAAA0AAAAaAAAAKgAAAAkAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADYAAAA3AAAAMgAAADgAAAAOAAAAGwAAADMAAAALAAAADAAAAAIAAAAAAQAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRYSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2BAQCoJwIAgYIBALEnAgC4JwIAwScCABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAADc6wAASO0AALTuAAAg8AAAIPAAAIzxAAC07gAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFxICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAADMAAAA0AAAAKQAAADUAAAANAAAAGgAAACoAAAAJAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAA2AAAANwAAADIAAAA4AAAADgAAABsAAAAzAAAACwAAAAwAAAACAAAAAAEAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTKAIAWSgCAFwoAgBiKAIA/CcCAGkoAgByKAIAeigCADTzAAAUAAAAQy5VVEYtOAAAAAAAAAAAAAAAAADeEgSVAAAAAP///////////////wIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM0xj0AAAJAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAEAAAAPTtAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmPQAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAQAAAA/PECAAAEAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAr/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY9AAAHPUAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABPYCAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A/CkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7/lwAPmAUAES/vAApaiwBtH20Az342AAnLJwBGT7cAnmY/AC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7/EYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj/ACdzTQAGBjEAylYVAMmocwB74mAAa4zAACAAAAAJAAAACgAAAA0AAAALAAAADAAAAIUAAAAAIAAAASAAAAIgAAADIAAABCAAAAUgAAAGIAAACCAAAAkgAAAKIAAAKCAAACkgAABfIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QVfcIkA/wkvD3QAAADzSwIAbgAAAPVLAgByAAAA90sCAGYAAAD5SwIAYQAAAPtLAgBlAAAA/UsCAHcAAAD/SwIAVwAAAAxMAgBzAAAAGkwCAFMAAAAmTAIAZAAAADNMAgBEAAAAP0wCAAAAAAAAAAAAAAAAAAAABAAEABsAGwAgACAAIwAhAAoAAgAWAAkAIQAhACEAFQAcAAEAFAAUABQAFAAUABQAFAAIAAQABQAbAAIAFwAbACAAHwAeAB0ACQATAAAAFQASABUAAwAHABUAFQAUABQAFAAUABQAFAAUABQACAAEAAUABQAGABsAGgAYABkAIAAHABUAFAAUABQAFAAUABQACwAUAA0AFAAMABQAFAAUAA4AFAAUABQAEAAUAA8AFAARAAAAAAAAAK4ALgAvADMANQAwADcAqgDbANsA2wDbAAAAPQCHADcANwDbANsAAAAoADUALgAyAC8AYgAAAAAARwAAAAAA2wBRAAAA2wDbANsAAADbAIQAVQDbAIIA2wAAAIEA2wAAAD4AQgBBAEgARABSAFsAAAAAAF4AXwDbAAAA2wDbANsAAAAAAHsASQBXAFIAWgBaAF0AAABfAAAAXwAAAGUAXQBfAAAAXQBuAGoAAABpAAAAbgAAANsAkwCaAKEAqACrAHAAsQC4AL8AxgDNANMAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAQABwADAAQABQAFAAYABgAIAAcABwARABYAEgARABIACAAIAA8ADwAXAA8AGAAPABkAGgAaAB4AFgA0AB4ABQAyAAYAIgAiADMAFwAYADUAGQAaABoAKgA2ACoANAA3ADIARQA7ADwAMwA7ADwARgA1AEcASABMADYAIgBJAEoANwBFAE4AUABiAFEAUgBUAEYARwBVAEgATABWAEkASgBYAFoATgBEAFAAUQBSAFQAOAAvACwAVQApAFYAGwAQAFgAWgBdAF0AXQBdAF0AXQBdAF4AXgBeAF4AXgBeAF4AXwBfAF8AXwBfAF8AXwBgAAkAYABgAGAAYABgAGEAYQBjAAIAYwBjAGMAYwBjAGQAAABkAAAAZABkAGQAZQAAAGUAZQBlAGUAZQBmAGYAAABmAGYAZgBmAGcAAABnAGcAZwBnAGgAAABoAGgAaABoAGgAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAFwAAQBdAF0AXgBeAF8AXwBcAFwAXABcAFwAYABcAFwAXABhAFwAXABiAGIAYgBiAGIAYgBiAGMAZABlAGYAZgBcAFwAZwBcAFwAXABgAFwAXABhAFwAYQBcAGgAYQBcAGIAYgBiAGIAYgBiAGIAYgBjAGQAZQBlAFwAZgBcAFwAXABnAGgAYQBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAAABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAAoACwAMAA0ADgAKAA8AEAARABIAEwAKABQAFQAVABUAFgAXABUAGAAVABUAGQAVABUAFQAaABUAFQAKABUAFQAVABYAFwAYABUAFQAZABUAFQAVABoAFQAVABUAFQAbAAwADAAkAB4AHgAgACEAIAAhACQAJQAmAC0AMgAvAC4AKgAlACYAKAApADMAKgA0ACsANQA2ADcAPAAyAEcAPQAiAEUAIgA/AEAARgAzADQASAA1ADYANwAvAEkAKgBHAEoARQBMAFwAPABGAFwAPQBNAEgATgBPAFIASQBBAFAAUQBKAEwAUwBUADEAVQBWAFcATQBOAFgATwBSAFkAUABRAFoAWwBTAEQAVABVAFYAVwBLAEQALABYACwAWQA4ACwAWgBbAB0AHQAdAB0AHQAdAB0AHwAfAB8AHwAfAB8AHwAjACMAIwAjACMAIwAjACcAXAAnACcAJwAnACcAMAAwADkAHAA5ADkAOQA5ADkAOgBcADoAXAA6ADoAOgA7AFwAOwA7ADsAOwA7AD4APgBcAD4APgA+AD4AQgBcAEIAQgBCAEIAQwBcAEMAQwBDAEMAQwAJAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAgArv/RAAoArv+u/wsArv+u/67/rv+u/67/rv+u/wUA0QCu/9EA0QDRANEA0QDRANEA0QCu//v/rv8OAOz/rv+u/67/rv/RANEA0QDRANEADQAlAAwAQgAQAFAAEwBtAHsAFACYAA8ApgDDAK7/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/xcArv93AK7/BwAuAK7/JgCu/xcAEQAjAK7/DQCu/67/rv+u/zoArv+u/zUArv+u/67/KACu/wcArv87AEUArv9IAK7/rv+u/67/rv+u/67//P/oAPb///8aAAAAJwABADIArv+u/wIAJAADAC8Arv+u/67/rv+u//7/lACu/wkAGwCu/7z/rv+u/6//rv+u/67/rv+u/67/rv8AAAAAAABt5uzeBQALAEkAMQFTAH8BMAFpAHgB/wCBAVMCggGDAYQBhQGGAVQChwGIAYkBVgKKAVcCiwGMAY4B3QGPAVkCkAFbApEBkgGTAWAClAFjApYBaQKXAWgCmAGZAZwBbwKdAXICnwF1AqYBgAKnAagBqQGDAqwBrQGuAYgCrwGwAbEBigKyAYsCtwGSArgBuQG8Ab0BxAHGAcQBxQHFAcYBxwHJAccByAHIAckBygHMAcoBywHLAcwB8QHzAfEB8gHyAfMB9AH1AfYBlQH3Ab8BIAKeAYYDrAOIA60DiQOuA4oDrwOMA8wDjgPNA48DzgOZA0UDmQO+H6MDwgP3A/gD+gP7A2Aemx6eHt8AWR9RH1sfUx9dH1UfXx9XH7wfsx/MH8Mf7B/lH/wf8x86AmUsOwI8Aj0CmgE+AmYsQQJCAkMCgAFEAokCRQKMAvQDuAP5A/ID/QN7A/4DfAP/A30DwATPBCYhyQMqIWsAKyHlADIhTiGDIYQhYCxhLGIsawJjLH0dZCx9Am0sUQJuLHECbyxQAnAsUgJyLHMsdSx2LH4sPwJ/LEAC8izzLH2neR2Lp4ynjadlAqqnZgLHECctzRAtLXYDdwOcA7UAkgPQA5gD0QOmA9UDoAPWA5oD8AOhA/EDlQP1A88D1wMAAAAAQQAgGsAAIB8AAQEvMgEBBTkBAQ9KAQEteQEBBXADAQORAyARowMgCQAEUBAQBCAgYAQBIYoEATXBBAEN0AQBPxQFARMxBTAmoAEBBbMBAQPNAQEP3gEBEfgBASciAgER2AMBFwAeAZWgHgFfCB/4CBgf+AYoH/gIOB/4CEgf+AZoH/gIiB/4CJgf+AioH/gIuB/4AroftgLIH6oE2B/4AtofnALoH/gC6h+QAvgfgAL6H4ICRgIBCRAFAQNgIRAQACwwL2csAQWALAFj6ywBA0CmAS2ApgEXIqcBDTKnAT15pwEDfqcBCZCnAQOgpwEJIf8gGgAAAAB7IHZhciBwYXRoID0gUG9pbnRlcl9zdHJpbmdpZnkoJDApOyB2YXIgZGF0YSA9IFBvaW50ZXJfc3RyaW5naWZ5KCQxKTsgRlMuY3JlYXRlUGF0aCgiLyIsIFBBVEguZGlybmFtZShwYXRoKSk7IEZTLndyaXRlRmlsZShQQVRILmpvaW4oIi8iLCBwYXRoKSwgZGF0YSk7IH0AY29yZQB4ZG90dmVyc2lvbgAxLjcAMS40ADEuMgBfbGRyYXdfAF9oZHJhd18AX3RkcmF3XwBfaGxkcmF3XwBfdGxkcmF3XwB4ZG90IHZlcnNpb24gIiVzIiB0b28gbG9uZwAgJWQgACUuMDJmACVzJWQgLQAjJTAyeCUwMnglMDJ4JTAyeABzZXRsaW5ld2lkdGgoACUuM2YAUyAAQyAAMiAARSAAZSAARiAAdCAldSAAVCAAZG90OmRvdABndjpkb3QAY2Fub246ZG90AHBsYWluOmRvdABwbGFpbi1leHQ6ZG90AHhkb3Q6eGRvdAB4ZG90MS4yOnhkb3QAeGRvdDEuNDp4ZG90AEkgACJfc3ViZ3JhcGhfY250IjogJWQAIl9ndmlkIjogJWQAImVkZ2VzIjogWwoAIl9ndmlkIjogJWQsCgAidGFpbCI6ICVkLAoAImhlYWQiOiAlZAAib2JqZWN0cyI6IFsKACJub2RlcyI6IFsKACJuYW1lIjogIiVzIgBcIgBcLwBcYgBcZgBcbgBccgBcdAAic3ViZ3JhcGhzIjogWwoAIiVzIjogACIlcyIAQ291bGQgbm90IHBhcnNlIHhkb3QgIiVzIgoAWwoAIm9wIjogIiVjIiwKACJyZWN0IjogWyUuMDNmLCUuMDNmLCUuMDNmLCUuMDNmXQoAIm9wIjogIkwiLAoAIm9wIjogIlQiLAoAInB0IjogWyUuMDNmLCUuMDNmXSwKACJhbGlnbiI6ICIlYyIsCgAid2lkdGgiOiAlLjAzZiwKACJ0ZXh0IjogIiVzIgoAImdyYWQiOiAibm9uZSIsCgAiY29sb3IiOiAiJXMiCgAiZ3JhZCI6ICJsaW5lYXIiLAoAImdyYWQiOiAicmFkaWFsIiwKACJvcCI6ICJGIiwKACJzaXplIjogJS4wM2YsCgAiZmFjZSI6ICIlcyIKACJvcCI6ICJTIiwKACJzdHlsZSI6ICIlcyIKACJvcCI6ICJ0IiwKACJmb250Y2hhciI6ICVkCgAicDAiOiBbJS4wM2YsJS4wM2YsJS4wM2ZdLAoAInAxIjogWyUuMDNmLCUuMDNmLCUuMDNmXSwKACJzdG9wcyI6IFsAeyJmcmFjIjogJS4wM2YsICJjb2xvciI6ICIlcyJ9AF0KACJwMCI6IFslLjAzZiwlLjAzZl0sCgAicDEiOiBbJS4wM2YsJS4wM2ZdLAoAInBvaW50cyI6IFsAWyUuMDNmLCUuMDNmXQBkcmF3XwBsZHJhd18AaGRyYXdfAHRkcmF3XwBobGRyYXdfAHRsZHJhd18AImRpcmVjdGVkIjogJXMsCgAic3RyaWN0IjogJXMARHVwbGljYXRlIGNsdXN0ZXIgbmFtZSAiJXMiCgB4ZG90AGpzb24AanNvbjAAZG90X2pzb24AeGRvdF9qc29uAGpzb246anNvbgBqc29uMDpqc29uAGRvdF9qc29uOmpzb24AeGRvdF9qc29uOmpzb24AbiA+PSA0AGd2cmVuZGVyX2NvcmVfZmlnLmMAZmlnX2JlemllcgBmaWdfcmVzb2x2ZV9jb2xvcgBmaWcAZmlnOmZpZwBtYXAAcmVjdCAlcyAlZCwlZCAlZCwlZAoAY2lyY2xlICVzICVkLCVkLCVkCgBwb2x5ICVzACAlZCwlZABndnJlbmRlcl9jb3JlX21hcC5jAG1hcF9vdXRwdXRfc2hhcGUAcmVjdGFuZ2xlICglZCwlZCkgKCVkLCVkKSAlcyAlcwoAPGFyZWEgc2hhcGU9ImNpcmNsZSIAPGFyZWEgc2hhcGU9InJlY3QiADxhcmVhIHNoYXBlPSJwb2x5IgAgaHJlZj0iACB0aXRsZT0iACBhbHQ9IiIAIGNvb3Jkcz0iACVkLCVkLCVkACVkLCVkLCVkLCVkACVkLCVkACwlZCwlZAAiPgoAPC9tYXA+CgBiYXNlIHJlZmVyZXIKAGRlZmF1bHQgADxtYXAgaWQ9IgAiIG5hbWU9IgBpc21hcDptYXAAY21hcDptYXAAaW1hcDptYXAAY21hcHg6bWFwAGltYXBfbnA6bWFwAGNtYXB4X25wOm1hcAAjICVzCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjNmICVkICUuNGYgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKACVkICVkICMlMDJ4JTAyeCUwMngKAGd2cmVuZGVyX2NvcmVfbXAuYwBtcF9yZXNvbHZlX2NvbG9yACVkICVkICVkICVkICVkICVkICUuMWYgJS40ZiAlZCAlLjFmICUuMWYgJWQgJWQgJXNcMDAxCgAjIGVuZCBvZiBGSUcgZmlsZQoAI0ZJRyAzLjIKACMgR2VuZXJhdGVkIGJ5ICVzIHZlcnNpb24gJXMgKCVzKQoAIyBUaXRsZTogJXMKACMgUGFnZXM6ICVkCgBQb3J0cmFpdAoAQ2VudGVyCgBJbmNoZXMKAExldHRlcgoAMTAwLjAwCgBTaW5nbGUKAC0yCgAxMjAwACAyCgBtcABtcDptcAAgXSAgJWQgdHJ1ZSAlcwoAIF0gICVkIGZhbHNlICVzCgAgc2V0bGluZXdpZHRoCgAlcyAAc2V0aHNiACUuNWcgJS41ZyAlLjVnICVzY29sb3IKACUgAG5ld3BhdGggACBtb3ZldG8KACBsaW5ldG8KAHN0cm9rZQoAIGN1cnZldG8KAGNsb3NlcGF0aCBmaWxsCgBjbG9zZXBhdGggc3Ryb2tlCgAgZWxsaXBzZV9wYXRoIGZpbGwKACBlbGxpcHNlX3BhdGggc3Ryb2tlCgAgLyVzIHNldF9mb250CgAgbW92ZXRvIAAgJXMgYWxpZ25lZHRleHQKAFsgL1JlY3QgWyAAIF0KACAgL0JvcmRlciBbIDAgMCAwIF0KICAvQWN0aW9uIDw8IC9TdWJ0eXBlIC9VUkkgL1VSSSAlcyA+PgogIC9TdWJ0eXBlIC9MaW5rCi9BTk4gcGRmbWFyawoAZ3NhdmUKACUlICVzCgAwIDAgMCBlZGdlY29sb3IKAGVuZHBhZ2UKc2hvd3BhZ2UKZ3Jlc3RvcmUKACUlUGFnZVRyYWlsZXIKACUlJSVFbmRQYWdlOiAlZAoAJSUlJVBhZ2U6ICVkICVkCgAlJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoATGFuZHNjYXBlAFBvcnRyYWl0ACUlJSVQYWdlT3JpZW50YXRpb246ICVzCgA8PCAvUGFnZVNpemUgWyVkICVkXSA+PiBzZXRwYWdlZGV2aWNlCgAlZCAlZCAlZCBiZWdpbnBhZ2UKAGdzYXZlCiVkICVkICVkICVkIGJveHByaW0gY2xpcCBuZXdwYXRoCgAlZyAlZyBzZXRfc2NhbGUgJWQgcm90YXRlICVnICVnIHRyYW5zbGF0ZQoAY2FudmFzIHNpemUgKCVkLCVkKSBleGNlZWRzIFBERiBsaW1pdCAoJWQpCgkoc3VnZ2VzdCBzZXR0aW5nIGEgYm91bmRpbmcgYm94IHNpemUsIHNlZSBkb3QoMSkpCgBbIC9Dcm9wQm94IFslZCAlZCAlZCAlZF0gL1BBR0VTIHBkZm1hcmsKACVkICVkIHNldGxheWVyCgAlJSUlVGl0bGU6ICVzCgAlJVBhZ2VzOiAoYXRlbmQpCgAlJVBhZ2VzOiAxCgAlJUJvdW5kaW5nQm94OiAoYXRlbmQpCgAlJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlJUVuZENvbW1lbnRzCnNhdmUKAHNldHVwTGF0aW4xCgBbIHtDYXRhbG9nfSA8PCAvVVJJIDw8IC9CYXNlICVzID4+ID4+Ci9QVVQgcGRmbWFyawoAJSVCZWdpblByb2xvZwAvRG90RGljdCAyMDAgZGljdCBkZWYARG90RGljdCBiZWdpbgAvc2V0dXBMYXRpbjEgewBtYXJrAC9FbmNvZGluZ1ZlY3RvciAyNTYgYXJyYXkgZGVmACBFbmNvZGluZ1ZlY3RvciAwAElTT0xhdGluMUVuY29kaW5nIDAgMjU1IGdldGludGVydmFsIHB1dGludGVydmFsAEVuY29kaW5nVmVjdG9yIDQ1IC9oeXBoZW4gcHV0ACUgU2V0IHVwIElTTyBMYXRpbiAxIGNoYXJhY3RlciBlbmNvZGluZwAvc3Rhcm5ldElTTyB7ACAgICAgICAgZHVwIGR1cCBmaW5kZm9udCBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4AICAgICAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9eyBwb3AgcG9wIH0gaWZlbHNlACAgICAgICAgfSBmb3JhbGwAICAgICAgICAvRW5jb2RpbmcgRW5jb2RpbmdWZWN0b3IgZGVmACAgICAgICAgY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnQAfSBkZWYAL1RpbWVzLVJvbWFuIHN0YXJuZXRJU08gZGVmAC9UaW1lcy1JdGFsaWMgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGQgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGRJdGFsaWMgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLU9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXIgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllci1Cb2xkIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGRPYmxpcXVlIHN0YXJuZXRJU08gZGVmAGNsZWFydG9tYXJrAH0gYmluZCBkZWYAJSVCZWdpblJlc291cmNlOiBwcm9jc2V0IGdyYXBodml6IDAgMAAvY29vcmQtZm9udC1mYW1pbHkgL1RpbWVzLVJvbWFuIGRlZgAvZGVmYXVsdC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9jb29yZGZvbnQgY29vcmQtZm9udC1mYW1pbHkgZmluZGZvbnQgOCBzY2FsZWZvbnQgZGVmAC9JbnZTY2FsZUZhY3RvciAxLjAgZGVmAC9zZXRfc2NhbGUgewAgICAgICAgZHVwIDEgZXhjaCBkaXYgL0ludlNjYWxlRmFjdG9yIGV4Y2ggZGVmACAgICAgICBzY2FsZQAlIHN0eWxlcwAvc29saWQgeyBbXSAwIHNldGRhc2ggfSBiaW5kIGRlZgAvZGFzaGVkIHsgWzkgSW52U2NhbGVGYWN0b3IgbXVsIGR1cCBdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kb3R0ZWQgeyBbMSBJbnZTY2FsZUZhY3RvciBtdWwgNiBJbnZTY2FsZUZhY3RvciBtdWxdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9pbnZpcyB7L2ZpbGwge25ld3BhdGh9IGRlZiAvc3Ryb2tlIHtuZXdwYXRofSBkZWYgL3Nob3cge3BvcCBuZXdwYXRofSBkZWZ9IGJpbmQgZGVmAC9ib2xkIHsgMiBzZXRsaW5ld2lkdGggfSBiaW5kIGRlZgAvZmlsbGVkIHsgfSBiaW5kIGRlZgAvdW5maWxsZWQgeyB9IGJpbmQgZGVmAC9yb3VuZGVkIHsgfSBiaW5kIGRlZgAvZGlhZ29uYWxzIHsgfSBiaW5kIGRlZgAvdGFwZXJlZCB7IH0gYmluZCBkZWYAJSBob29rcyBmb3Igc2V0dGluZyBjb2xvciAAL25vZGVjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2VkZ2Vjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2dyYXBoY29sb3IgeyBzZXRoc2Jjb2xvciB9IGJpbmQgZGVmAC9ub3Bjb2xvciB7cG9wIHBvcCBwb3B9IGJpbmQgZGVmAC9iZWdpbnBhZ2UgewklIGkgaiBucGFnZXMACS9ucGFnZXMgZXhjaCBkZWYACS9qIGV4Y2ggZGVmAAkvaSBleGNoIGRlZgAJL3N0ciAxMCBzdHJpbmcgZGVmAAlucGFnZXMgMSBndCB7AAkJZ3NhdmUACQkJY29vcmRmb250IHNldGZvbnQACQkJMCAwIG1vdmV0bwAJCQkoXCgpIHNob3cgaSBzdHIgY3ZzIHNob3cgKCwpIHNob3cgaiBzdHIgY3ZzIHNob3cgKFwpKSBzaG93AAkJZ3Jlc3RvcmUACX0gaWYAL3NldF9mb250IHsACWZpbmRmb250IGV4Y2gACXNjYWxlZm9udCBzZXRmb250ACUgZHJhdyB0ZXh0IGZpdHRlZCB0byBpdHMgZXhwZWN0ZWQgd2lkdGgAL2FsaWduZWR0ZXh0IHsJCQklIHdpZHRoIHRleHQACS90ZXh0IGV4Y2ggZGVmAAkvd2lkdGggZXhjaCBkZWYACWdzYXZlAAkJd2lkdGggMCBndCB7AAkJCVtdIDAgc2V0ZGFzaAAJCQl0ZXh0IHN0cmluZ3dpZHRoIHBvcCB3aWR0aCBleGNoIHN1YiB0ZXh0IGxlbmd0aCBkaXYgMCB0ZXh0IGFzaG93AAkJfSBpZgAJZ3Jlc3RvcmUAL2JveHByaW0gewkJCQklIHhjb3JuZXIgeWNvcm5lciB4c2l6ZSB5c2l6ZQAJCTQgMiByb2xsAAkJbW92ZXRvAAkJMiBjb3B5AAkJZXhjaCAwIHJsaW5ldG8ACQkwIGV4Y2ggcmxpbmV0bwAJCXBvcCBuZWcgMCBybGluZXRvAAkJY2xvc2VwYXRoAC9lbGxpcHNlX3BhdGggewAJL3J5IGV4Y2ggZGVmAAkvcnggZXhjaCBkZWYACS95IGV4Y2ggZGVmAAkveCBleGNoIGRlZgAJbWF0cml4IGN1cnJlbnRtYXRyaXgACW5ld3BhdGgACXggeSB0cmFuc2xhdGUACXJ4IHJ5IHNjYWxlAAkwIDAgMSAwIDM2MCBhcmMACXNldG1hdHJpeAAvZW5kcGFnZSB7IHNob3dwYWdlIH0gYmluZCBkZWYAL3Nob3dwYWdlIHsgfSBkZWYAL2xheWVyY29sb3JzZXEACVsJJSBsYXllciBjb2xvciBzZXF1ZW5jZSAtIGRhcmtlc3QgdG8gbGlnaHRlc3QACQlbMCAwIDBdAAkJWy4yIC44IC44XQAJCVsuNCAuOCAuOF0ACQlbLjYgLjggLjhdAAkJWy44IC44IC44XQAJXQBkZWYAL2xheWVybGVuIGxheWVyY29sb3JzZXEgbGVuZ3RoIGRlZgAvc2V0bGF5ZXIgey9tYXhsYXllciBleGNoIGRlZiAvY3VybGF5ZXIgZXhjaCBkZWYACWxheWVyY29sb3JzZXEgY3VybGF5ZXIgMSBzdWIgbGF5ZXJsZW4gbW9kIGdldAAJYWxvYWQgcG9wIHNldGhzYmNvbG9yAAkvbm9kZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZWRnZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZ3JhcGhjb2xvciB7bm9wY29sb3J9IGRlZgAvb25sYXllciB7IGN1cmxheWVyIG5lIHtpbnZpc30gaWYgfSBkZWYAL29ubGF5ZXJzIHsACS9teXVwcGVyIGV4Y2ggZGVmAAkvbXlsb3dlciBleGNoIGRlZgAJY3VybGF5ZXIgbXlsb3dlciBsdAAJY3VybGF5ZXIgbXl1cHBlciBndAAJb3IACXtpbnZpc30gaWYAL2N1cmxheWVyIDAgZGVmACUlRW5kUmVzb3VyY2UAJSVFbmRQcm9sb2cAJSVCZWdpblNldHVwADE0IGRlZmF1bHQtZm9udC1mYW1pbHkgc2V0X2ZvbnQAJSAvYXJyb3dsZW5ndGggMTAgZGVmACUgL2Fycm93d2lkdGggNSBkZWYAJSBtYWtlIHN1cmUgcGRmbWFyayBpcyBoYXJtbGVzcyBmb3IgUFMtaW50ZXJwcmV0ZXJzIG90aGVyIHRoYW4gRGlzdGlsbGVyAC9wZGZtYXJrIHdoZXJlIHtwb3B9IHt1c2VyZGljdCAvcGRmbWFyayAvY2xlYXJ0b21hcmsgbG9hZCBwdXR9IGlmZWxzZQAlIG1ha2UgJzw8JyBhbmQgJz4+JyBzYWZlIG9uIFBTIExldmVsIDEgZGV2aWNlcwAvbGFuZ3VhZ2VsZXZlbCB3aGVyZSB7cG9wIGxhbmd1YWdlbGV2ZWx9ezF9IGlmZWxzZQAyIGx0IHsAICAgIHVzZXJkaWN0ICg8PCkgY3ZuIChbKSBjdm4gbG9hZCBwdXQAICAgIHVzZXJkaWN0ICg+PikgY3ZuIChbKSBjdm4gbG9hZCBwdXQAfSBpZgAlJUVuZFNldHVwACUlVHJhaWxlcgoAJSUlJVBhZ2VzOiAlZAoAZW5kCnJlc3RvcmUKACUlRU9GCgAlIVBTLUFkb2JlLTMuMAAgRVBTRi0zLjAKACUlJSVDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKAHBzMjpwcwA8IS0tIAA8cG9seWxpbmUAIHBvaW50cz0iACIvPgoAIGZpbGw9IgB1cmwoI2xfJWQpAHVybCgjcl8lZCkAIiBmaWxsLW9wYWNpdHk9IiVmACIgc3Ryb2tlPSIAIiBzdHJva2Utd2lkdGg9IgAiIHN0cm9rZS1kYXNoYXJyYXk9IiVzADUsMgAxLDUAIiBzdHJva2Utb3BhY2l0eT0iJWYAZ3ZyZW5kZXJfY29yZV9zdmcuYwBzdmdfcHJpbnRfY29sb3IAPHBhdGgAIGlkPSIAX3AiIAAgZD0iACVjADxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InJfJWQiIGN4PSI1MCUlIiBjeT0iNTAlJSIgcj0iNzUlJSIgZng9IiVkJSUiIGZ5PSIlZCUlIj4KADxzdG9wIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6ADtzdG9wLW9wYWNpdHk6ADEuADsiLz4KADxzdG9wIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgoAPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0ibF8lZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIAB4MT0iACIgeTE9IgAiIHgyPSIAIiB5Mj0iACIgPgoAPHN0b3Agb2Zmc2V0PSIlLjAzZiIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgoAPHBvbHlnb24APGVsbGlwc2UAIGN4PSIAIiBjeT0iACIgcng9IgAiIHJ5PSIAPHRleHQAIHRleHQtYW5jaG9yPSJzdGFydCIAIHRleHQtYW5jaG9yPSJlbmQiACB0ZXh0LWFuY2hvcj0ibWlkZGxlIgAgeD0iACIgeT0iACBmb250LWZhbWlseT0iJXMALCVzACBmb250LXdlaWdodD0iJXMiACBmb250LXN0cmV0Y2g9IiVzIgAgZm9udC1zdHlsZT0iJXMiACBmb250LWZhbWlseT0iJXMiACBmb250LXdlaWdodD0iYm9sZCIAIGZvbnQtc3R5bGU9Iml0YWxpYyIAIHRleHQtZGVjb3JhdGlvbj0iACVzb3ZlcmxpbmUAJXNsaW5lLXRocm91Z2gAIGJhc2VsaW5lLXNoaWZ0PSJzdXBlciIAIGJhc2VsaW5lLXNoaWZ0PSJzdWIiACBmb250LXNpemU9IiUuMmYiACBmaWxsPSIlcyIAIGZpbGw9IiMlMDJ4JTAyeCUwMngiAHN2Z190ZXh0c3BhbgA+ADx0ZXh0UGF0aCB4bGluazpocmVmPSIjJXNfcCIgc3RhcnRPZmZzZXQ9IjUwJSUiPgA8dHNwYW4geD0iMCIgZHk9IgAiPgA8L3RzcGFuPjwvdGV4dFBhdGg+ADwvdGV4dD4KADwvZz4KADxnACBpZD0iYV8AIHhsaW5rOmhyZWY9IgAgeGxpbms6dGl0bGU9IgAgdGFyZ2V0PSIAPHRpdGxlPgA8L3RpdGxlPgoAPGcgaWQ9IgBfJXMAIiBjbGFzcz0iJXMAY2xhc3MAIHRyYW5zZm9ybT0ic2NhbGUoACkgcm90YXRlKCVkKSB0cmFuc2xhdGUoACkiPgoAPC9zdmc+CgA8IS0tACBQYWdlczogJWQgLS0+CgA8c3ZnIHdpZHRoPSIlZHB0IiBoZWlnaHQ9IiVkcHQiCgAgdmlld0JveD0iJS4yZiAlLjJmICUuMmYgJS4yZiIAIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIAIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KAHN0eWxlc2hlZXQAPD94bWwtc3R5bGVzaGVldCBocmVmPSIAIiB0eXBlPSJ0ZXh0L2NzcyI/PgoAPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIgoAICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgoAPCEtLSBHZW5lcmF0ZWQgYnkgAGRhcmtibHVlAGRhcmtjeWFuAGRhcmtncmF5AGRhcmtncmV5AGRhcmttYWdlbnRhAGRhcmtyZWQAbGlnaHRncmVlbgAjIAAgY3JlYXRlIGxpbmUgACAtZmlsbCAAIC1kYXNoIDUAIC1kYXNoIDIAZ3ZyZW5kZXJfY29yZV90ay5jAHRrZ2VuX3ByaW50X3RhZ3MAZ3JhcGggbGFiZWwAIC10YWdzIHslZCVzJXB9AHRrZ2VuX3ByaW50X2NvbG9yACRjACAtd2lkdGggACAtc21vb3RoIGJlemllciAAIGNyZWF0ZSBwb2x5Z29uIAAgLW91dGxpbmUgACBjcmVhdGUgb3ZhbCAAIGNyZWF0ZSB0ZXh0IAAgLXRleHQgewB9ACAtZm9udCB7ACAlZH0AIC1hbmNob3IgdwAgLWFuY2hvciBlACMAIFRpdGxlOiAAIFBhZ2VzOiAlZAoAIyBHZW5lcmF0ZWQgYnkgACkKAHRrAHRrOnRrACAgICAgIDwhLS0gACAtLT4KAEVycm9yIGR1cmluZyBjb252ZXJzaW9uIHRvICJVVEYtOCIuICBRdWl0aW5nLgoAIDx2OnNoYXBlIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACB3aWR0aDogJWQ7IGhlaWdodDogJWQiIGZpbGxlZD0iZmFsc2UiPgA8djpwYXRoIHY9IgAgbSAAJS4wZiwlLjBmIAAgbCAAIGUgACIvPgA8L3Y6c2hhcGU+CgA8djpzdHJva2UgY29sb3I9IgAiIHdlaWdodD0iJS4wZnB0ACIgZGFzaHN0eWxlPSJkYXNoACIgZGFzaHN0eWxlPSJkb3QAIiAvPgAjJTAyeCUwMnglMDJ4AGd2cmVuZGVyX2NvcmVfdm1sLmMAdm1sX3ByaW50X2NvbG9yACB3aWR0aDogJWQ7IGhlaWdodDogJWQiACA+ADx2OnBhdGggIHY9IgAvPjwvdjpzaGFwZT4KAG0gACVzJS4wZiwlLjBmIABjIAAgZmlsbGVkPSJ0cnVlIiBmaWxsY29sb3I9IgAiIAAgZmlsbGVkPSJmYWxzZSIgACUuMGYgJS4wZiAAbCAAeCBlICIvPgAgIDx2Om92YWwgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOwAgbGVmdDogJS4yZjsgdG9wOiAlLjJmOwAgd2lkdGg6ICUuMmY7IGhlaWdodDogJS4yZiIAPC92Om92YWw+CgA8djpyZWN0IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACBzdHJva2VkPSJmYWxzZSIgZmlsbGVkPSJmYWxzZSI+CgA8djp0ZXh0Ym94IGluc2V0PSIwLDAsMCwwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHYtdGV4dC13cmFwcGluZzonZmFsc2UnO3BhZGRpbmc6JzAnOwBmb250LWZhbWlseTogJyVzJzsAZm9udC13ZWlnaHQ6ICVzOwBmb250LXN0cmV0Y2g6ICVzOwBmb250LXN0eWxlOiAlczsAIGZvbnQtc2l6ZTogJS4yZnB0OwBjb2xvcjolczsAY29sb3I6IyUwMnglMDJ4JTAyeDsAdm1sX3RleHRzcGFuACI+PGNlbnRlcj4APC9jZW50ZXI+PC92OnRleHRib3g+CgA8L3Y6cmVjdD4KADwvYT4KADxhACBocmVmPSIlcyIAIHRpdGxlPSIlcyIAIHRhcmdldD0iJXMiAD4KADwvdjpncm91cD4KADwvRElWPgoAPERJViBpZD0nX1ZNTDJfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dmlzaWJpbGl0eTpoaWRkZW4iPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPERJViBpZD0nX25vdFZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KADwhLS0gdGhpcyBzaG91bGQgb25seSBkaXNwbGF5IG9uIE5PTi1JRSBicm93c2VycyAtLT4KADxIMj5Tb3JyeSwgdGhpcyBkaWFncmFtIHdpbGwgb25seSBkaXNwbGF5IGNvcnJlY3RseSBvbiBJbnRlcm5ldCBFeHBsb3JlciA1IChhbmQgdXApIGJyb3dzZXJzLjwvSDI+CgA8RElWIGlkPSdfbm90Vk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIE5PTi1JRSBodG1sIGNvbnRlbnQgaGVyZSAtLT4KADwvQk9EWT4KPC9IVE1MPgoAPEhFQUQ+ADxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KADxUSVRMRT4APC9USVRMRT4APCEtLSBQYWdlczogJWQgLS0+CgAgICA8U0NSSVBUIExBTkdVQUdFPSdKYXZhc2NyaXB0Jz4KACAgIGZ1bmN0aW9uIGJyb3dzZXJjaGVjaygpCgAgICB7CgAgICAgICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudAoAICAgICAgdmFyIG1zaWUgPSB1YS5pbmRleE9mICggJ01TSUUgJyApCgAgICAgICB2YXIgaWV2ZXJzOwoAICAgICAgdmFyIGl0ZW07CgAgICAgICB2YXIgVk1MeWVzPW5ldyBBcnJheSgnX1ZNTDFfJywnX1ZNTDJfJyk7CgAgICAgICB2YXIgVk1Mbm89bmV3IEFycmF5KCdfbm90Vk1MMV8nLCdfbm90Vk1MMl8nKTsKACAgICAgIGlmICggbXNpZSA+IDAgKXsgICAgICAvLyBJZiBJbnRlcm5ldCBFeHBsb3JlciwgcmV0dXJuIHZlcnNpb24gbnVtYmVyCgAgICAgICAgICBpZXZlcnM9IHBhcnNlSW50ICh1YS5zdWJzdHJpbmcgKG1zaWUrNSwgdWEuaW5kZXhPZiAoJy4nLCBtc2llICkpKQoAICAgICAgfQoAICAgICAgaWYgKGlldmVycz49NSl7CgAgICAgICAgZm9yICh4IGluIFZNTHllcyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1MeWVzW3hdKTsKACAgICAgICAgIGlmIChpdGVtKSB7CgAgICAgICAgICAgIGl0ZW0uc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7CgAgICAgICAgICB9CgAgICAgICAgfQoAICAgICAgIGZvciAoeCBpbiBWTUxubyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1Mbm9beF0pOwoAICAgICAgICAgICBpdGVtLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7CgAgICAgIH1lbHNlewoAICAgICB9CgAgICB9CgAgICA8L1NDUklQVD4KADwvSEVBRD4APEJPRFkgb25sb2FkPSdicm93c2VyY2hlY2soKTsnPgoAPERJViBpZD0nX1ZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lOyB2aXNpYmlsaXR5OmhpZGRlbgAgd2lkdGg6ICVkcHQ7IGhlaWdodDogJWRwdCI+CgA8U1RZTEU+CgB2XDoqIHsgYmVoYXZpb3I6IHVybCgjZGVmYXVsdCNWTUwpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQoAPC9TVFlMRT4KADx4bWw6bmFtZXNwYWNlIG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgcHJlZml4PSJ2IiAvPgoAIDx2Omdyb3VwIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgACB3aWR0aDogJWRwdDsgaGVpZ2h0OiAlZHB0IgAgY29vcmRvcmlnaW49IjAsMCIgY29vcmRzaXplPSIlZCwlZCIgPgA8SFRNTD4KAAo8IS0tIEdlbmVyYXRlZCBieSAAIHZlcnNpb24gACAoACkKLS0+CgBhcXVhAGZ1Y2hzaWEAbGltZQBvbGl2ZQB0ZWFsAHZtbAB2bWw6dm1sAC8vKioqIGNvbW1lbnQ6ICVzCgAvLyoqKiBwb2x5bGluZQoAc2NhbGUgICAgPCU5LjNmLCAlOS4zZiwgJTkuM2Y+CgByb3RhdGUgICA8JTkuM2YsICU5LjNmLCAlOS4zZj4KAHRyYW5zbGF0ZTwlOS4zZiwgJTkuM2YsICU5LjNmPgoAc3BoZXJlX3N3ZWVwIHsKICAgICVzCiAgICAlZCwKAGxpbmVhcl9zcGxpbmUAPCU5LjNmLCAlOS4zZiwgJTkuM2Y+LCAlLjNmCgAlcyAgICAlcwAgICAgdG9sZXJhbmNlIDAuMDEKICAgICVzICAgICVzICAgICVzICAgICVzfQoAJXMlcwAlcyB0cmFuc21pdCAlLjNmAFJlZABHcmVlbgBCbHVlAHJnYjwlOS4zZiwgJTkuM2YsICU5LjNmPiB0cmFuc21pdCAlLjNmAG9vcHMsIGludGVybmFsIGVycm9yOiB1bmhhbmRsZWQgY29sb3IgdHlwZT0lZCAlcwoAZ3ZyZW5kZXJfY29yZV9wb3YuYwBwb3ZfY29sb3JfYXNfc3RyAHBpZ21lbnQgeyBjb2xvciAlcyB9CgBwb3YgcmVuZGVyZXI6ZWwgLSAlcwoALy8qKiogYmV6aWVyCgBiX3NwbGluZQAgICAgICAgIHRvbGVyYW5jZSAwLjAxCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHBvbHlnb24KACAgICB0b2xlcmFuY2UgMC4xCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAHBvbHlnb24geyAlZCwKADwlOS4zZiwgJTkuM2YsICU5LjNmPgAlcwogICAgJXMACiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIGVsbGlwc2UKAHRvcnVzIHsgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgBzcGhlcmUgezwlOS4zZiwgJTkuM2YsICU5LjNmPiwgMS4wCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHRleHRzcGFuOiAlcywgZm9udHNpemUgPSAlLjNmLCBmb250bmFtZSA9ICVzCgBzY2FsZSAlLjNmCgB0ZXh0IHsKICAgIHR0ZiAiJXMiLAogICAgIiVzIiwgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgAgICAgbm9fc2hhZG93CgAvLyoqKiBlbmRfZWRnZQoALy8qKiogYmVnaW5fZWRnZQoALy8qKiogZW5kX25vZGUKAC8vKioqIGJlZ2luX25vZGU6ICVzCgAvLyoqKiBlbmRfY2x1c3RlcgoALy8qKiogYmVnaW5fY2x1c3RlcgoALy8qKiogZW5kX3BhZ2UKAC8vKioqIGJlZ2luX3BhZ2UKAC8vKioqIGVuZF9sYXllcgoALy8qKiogYmVnaW5fbGF5ZXI6ICVzLCAlZC8lZAoALy8qKiogZW5kX2dyYXBoCgAvLyoqKiBiZWdpbl9ncmFwaCAlcwoAY2FtZXJhIHsgbG9jYXRpb24gPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgbG9va19hdCAgPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgcmlnaHQgeCAqIGltYWdlX3dpZHRoIC8gaW1hZ2VfaGVpZ2h0CiAgICAgICAgIGFuZ2xlICUuM2YKfQoALy9za3kKcGxhbmUgeyA8MCwgMSwgMD4sIDEgaG9sbG93CiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50IHsgYm96byB0dXJidWxlbmNlIDAuOTUKICAgICAgICAgICAgY29sb3JfbWFwIHsKICAgICAgICAgICAgICAgIFswLjAwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC41MCByZ2IgPDAuMDUsIDAuMjAsIDAuNTA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwxLjAwLCAxLjAwLCAxLjAwPl0KICAgICAgICAgICAgICAgIFswLjc1IHJnYiA8MC4yNSwgMC4yNSwgMC4yNT5dCiAgICAgICAgICAgICAgICBbMS4wMCByZ2IgPDAuNTAsIDAuNTAsIDAuNTA+XQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjYWxlIDwxLjAwLCAxLjAwLCAxLjUwPiAqIDIuNTAKICAgICAgICAgICAgdHJhbnNsYXRlIDwwLjAwLCAwLjAwLCAwLjAwPgogICAgICAgIH0KICAgICAgICBmaW5pc2ggeyBhbWJpZW50IDEgZGlmZnVzZSAwIH0KICAgIH0KICAgIHNjYWxlIDEwMDAwCn0KLy9taXN0CmZvZyB7IGZvZ190eXBlIDIKICAgIGRpc3RhbmNlIDUwCiAgICBjb2xvciByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+ICogMC43NQogICAgZm9nX29mZnNldCAwLjEwCiAgICBmb2dfYWx0IDEuNTAKICAgIHR1cmJ1bGVuY2UgMS43NQp9Ci8vZ25kCnBsYW5lIHsgPDAuMDAsIDEuMDAsIDAuMDA+LCAwCiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50eyBjb2xvciByZ2IgPDAuMjUsIDAuNDUsIDAuMDA+IH0KICAgICAgICBub3JtYWwgeyBidW1wcyAwLjc1IHNjYWxlIDAuMDEgfQogICAgICAgIGZpbmlzaCB7IHBob25nIDAuMTAgfQogICAgfQp9CgBsaWdodF9zb3VyY2UgeyA8MTUwMCwzMDAwLC0yNTAwPiBjb2xvciBXaGl0ZSB9CgAjdmVyc2lvbiAzLjY7CgBnbG9iYWxfc2V0dGluZ3MgeyBhc3N1bWVkX2dhbW1hIDEuMCB9CgAjZGVmYXVsdCB7IGZpbmlzaCB7IGFtYmllbnQgMC4xIGRpZmZ1c2UgMC45IH0gfQoAI2luY2x1ZGUgImNvbG9ycy5pbmMiCiNpbmNsdWRlICJ0ZXh0dXJlcy5pbmMiCiNpbmNsdWRlICJzaGFwZXMuaW5jIgoAI2RlY2xhcmUgJXMgPSAlczsKAEJsYWNrAFdoaXRlAGJha2Vyc2Nob2MAYnJhc3MAYnJpZ2h0Z29sZABicm9uemUAYnJvbnplMgBjbGVhcgBjb29sY29wcGVyAGNvcHBlcgBkYXJrYnJvd24AZGFya3B1cnBsZQBkYXJrdGFuAGRhcmt3b29kAGRrZ3JlZW5jb3BwZXIAZHVzdHlyb3NlAGZlbGRzcGFyAGZsZXNoAGdyYXkwNQBncmVlbmNvcHBlcgBodW50ZXJzZ3JlZW4AbGlnaHRfcHVycGxlAGxpZ2h0d29vZABtYW5kYXJpbm9yYW5nZQBtZWRpdW1mb3Jlc3RncmVlbgBtZWRpdW1nb2xkZW5yb2QAbWVkaXVtd29vZABtZWRfcHVycGxlAG1pY2EAbmVvbmJsdWUAbmVvbnBpbmsAbmV3bWlkbmlnaHRibHVlAG5ld3RhbgBvbGRnb2xkAHF1YXJ0egByaWNoYmx1ZQBzY2FybGV0AHNlbWlTd2VldENob2MAc2lsdmVyAHNwaWN5cGluawBzdW1tZXJza3kAdmVyeWRhcmticm93bgB2ZXJ5X2xpZ2h0X3B1cnBsZQBwb3YAcG92OnBvdgAlcyAlcwoALlwiIAAgJWQgJWQAICVzCgAgJWQAZmlsbCAAZWxsaXBzZSBhdHRycyVkICVzd2lkICUuNWYgaHQgJS41ZiBhdCAoJS41ZiwlLjVmKTsKAC5mdCAlcwoALnBzICVkKlxuKFNGdS8lLjBmdQoAIiVzIiBhdCAoJS41ZiwlLjVmKTsKACUwM28AJXMlcyBpcyBub3QgYSB0cm9mZiBmb250CgBkb3QgcGljIHBsdWdpbjogAFIAXQouUEUKAC5QUyAlLjVmICUuNWYKACVzIHRvIGNoYW5nZSBkcmF3aW5nIHNpemUsIG11bHRpcGx5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9uIHRoZSAuUFMgbGluZSBhYm92ZSBhbmQgdGhlIG51bWJlciBvbiB0aGUgdHdvIGxpbmVzIGJlbG93IChyb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIpIGJ5IGEgc2NhbGUgZmFjdG9yCgAubnIgU0YgJS4wZgpzY2FsZXRoaWNrbmVzcyA9ICUuMGYKACVzIGRvbid0IGNoYW5nZSBhbnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgaW4gdGhpcyBkcmF3aW5nCgAlcyBub24tZmF0YWwgcnVuLXRpbWUgcGljIHZlcnNpb24gZGV0ZXJtaW5hdGlvbiwgdmVyc2lvbiAyCgBib3hyYWQ9Mi4wICVzIHdpbGwgYmUgcmVzZXQgdG8gMC4wIGJ5IGdwaWMgb25seQoAc2NhbGU9MS4wICVzIHJlcXVpcmVkIGZvciBjb21wYXJpc29ucwoAJXMgYm94cmFkIGlzIG5vdyAwLjAgaW4gZ3BpYywgZWxzZSBpdCByZW1haW5zIDIuMAoAJXMgZGFzaHdpZCBpcyAwLjEgaW4gMTB0aCBFZGl0aW9uLCAwLjA1IGluIERXQiAyIGFuZCBpbiBncGljCgAlcyBmaWxsdmFsIGlzIDAuMyBpbiAxMHRoIEVkaXRpb24gKGZpbGwgMCBtZWFucyBibGFjayksIDAuNSBpbiBncGljIChmaWxsIDAgbWVhbnMgd2hpdGUpLCB1bmRlZmluZWQgaW4gRFdCIDIKACVzIGZpbGwgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGdwaWMgY2FuIHVzZSBmaWxsIG9yIGZpbGxlZCwgMTB0aCBFZGl0aW9uIHVzZXMgZmlsbCBvbmx5CgAlcyBEV0IgMiBkb2Vzbid0IHVzZSBmaWxsIGFuZCBkb2Vzbid0IGRlZmluZSBmaWxsdmFsCgAlcyByZXNldCB3b3JrcyBpbiBncGljIGFuZCAxMHRoIGVkaXRpb24sIGJ1dCBpc24ndCBkZWZpbmVkIGluIERXQiAyCgAlcyBEV0IgMiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zCgBpZiBib3hyYWQgPiAxLjAgJiYgZGFzaHdpZCA8IDAuMDc1IHRoZW4gWAoJZmlsbHZhbCA9IDE7CglkZWZpbmUgZmlsbCBZIFk7CglkZWZpbmUgc29saWQgWSBZOwoJZGVmaW5lIHJlc2V0IFkgc2NhbGU9MS4wIFk7ClgKAHJlc2V0ICVzIHNldCB0byBrbm93biBzdGF0ZQoAJXMgR05VIHBpYyB2cy4gMTB0aCBFZGl0aW9uIGRcKGUndGVudGUKAGlmIGZpbGx2YWwgPiAwLjQgdGhlbiBYCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSAxIC0gWTsKCWRlZmluZSBib2xkIFkgdGhpY2tuZXNzIDIgWTsKAAklcyBpZiB5b3UgdXNlIGdwaWMgYW5kIGl0IGJhcmZzIG9uIGVuY291bnRlcmluZyAic29saWQiLAoACSVzCWluc3RhbGwgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIGdwaWMgb3Igc3dpdGNoIHRvIERXQiBvciAxMHRoIEVkaXRpb24gcGljOwoACSVzCXNvcnJ5LCB0aGUgZ3JvZmYgZm9sa3MgY2hhbmdlZCBncGljOyBzZW5kIGFueSBjb21wbGFpbnQgdG8gdGhlbTsKAFggZWxzZSBaCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSBZOwoJZGVmaW5lIGJvbGQgWSBZOwoJZGVmaW5lIGZpbGxlZCBZIGZpbGwgWTsKWgoAJXMgYXJyb3doZWFkIGhhcyBubyBtZWFuaW5nIGluIERXQiAyLCBhcnJvd2hlYWQgPSA3IG1ha2VzIGZpbGxlZCBhcnJvd2hlYWRzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgYXJyb3doZWFkIGlzIHVuZGVmaW5lZCBpbiBEV0IgMiwgaW5pdGlhbGx5IDEgaW4gZ3BpYywgMiBpbiAxMHRoIEVkaXRpb24KAGFycm93aGVhZCA9IDcgJXMgbm90IHVzZWQgYnkgZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBib3hyYWQgdmFyaWFibGUgdG8gZHJhdyBib3hlcyB3aXRoIHJvdW5kZWQgY29ybmVyczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGJveHJhZCA9IDAgJXMgbm8gcm91bmRlZCBjb3JuZXJzIGluIGdyYXBodml6CgAlcyBHTlUgcGljIHN1cHBvcnRzIGEgbGluZXRoaWNrIHZhcmlhYmxlIHRvIHNldCBsaW5lIHRoaWNrbmVzczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGxpbmV0aGljayA9IDA7IG9sZGxpbmV0aGljayA9IGxpbmV0aGljawoAJXMgLlBTIHcvbyBhcmdzIGNhdXNlcyBHTlUgcGljIHRvIHNjYWxlIGRyYXdpbmcgdG8gZml0IDguNXgxMSBwYXBlcjsgRFdCIGRvZXMgbm90CgAlcyBtYXhwc2h0IGFuZCBtYXhwc3dpZCBoYXZlIG5vIG1lYW5pbmcgaW4gRFdCIDIuMCwgc2V0IHBhZ2UgYm91bmRhcmllcyBpbiBncGljIGFuZCBpbiAxMHRoIEVkaXRpb24KACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGFyZSBwcmVkZWZpbmVkIHRvIDExLjAgYW5kIDguNSBpbiBncGljCgBtYXhwc2h0ID0gJWYKbWF4cHN3aWQgPSAlZgoARG90OiBbCgBkZWZpbmUgYXR0cnMwICUlICUlOyBkZWZpbmUgdW5maWxsZWQgJSUgJSU7IGRlZmluZSByb3VuZGVkICUlICUlOyBkZWZpbmUgZGlhZ29uYWxzICUlICUlCgAlcyVzIHVuc3VwcG9ydGVkCgByb3RhdGlvbgAlcyByZXN0b3JlIHBvaW50IHNpemUgYW5kIGZvbnQKLnBzIFxuKC5TCi5mdCBcbihERgoAJXMgQ3JlYXRvcjogJXMgdmVyc2lvbiAlcyAoJXMpCgAlcyBUaXRsZTogJXMKACVzIHNhdmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoubnIgLlMgXG4oLnMKLm5yIERGIFxuKC5mCgBwaWMAcGljOnBpYwBwbmc6c3ZnAGdpZjpzdmcAanBlZzpzdmcAanBlOnN2ZwBqcGc6c3ZnAHBuZzpmaWcAZ2lmOmZpZwBqcGVnOmZpZwBqcGU6ZmlnAGpwZzpmaWcAcG5nOnZybWwAZ2lmOnZybWwAanBlZzp2cm1sAGpwZTp2cm1sAGpwZzp2cm1sAGVwczpwcwBwczpwcwAobGliKTpwcwBwbmc6bWFwAGdpZjptYXAAanBlZzptYXAAanBlOm1hcABqcGc6bWFwAHBzOm1hcABlcHM6bWFwAHN2ZzptYXAAcG5nOmRvdABnaWY6ZG90AGpwZWc6ZG90AGpwZTpkb3QAanBnOmRvdABwczpkb3QAZXBzOmRvdABzdmc6ZG90AHBuZzp4ZG90AGdpZjp4ZG90AGpwZWc6eGRvdABqcGU6eGRvdABqcGc6eGRvdABwczp4ZG90AGVwczp4ZG90AHN2Zzp4ZG90AHN2ZzpzdmcAcG5nOnZtbABnaWY6dm1sAGpwZWc6dm1sAGpwZTp2bWwAanBnOnZtbABnaWY6dGsAaW1hZ2UgY3JlYXRlIHBob3RvICJwaG90b18lcyIgLWZpbGUgIiVzIgoAJGMgY3JlYXRlIGltYWdlICUuMmYgJS4yZiAtaW1hZ2UgInBob3RvXyVzIgoAPHY6aW1hZ2Ugc3JjPSIlcyIgc3R5bGU9IiBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6JS4yZjsgaGVpZ2h0OiUuMmY7IGxlZnQ6JS4yZiA7IHRvcDolLjJmIgAgLz4KAGd2bG9hZGltYWdlX2NvcmUuYwBjb3JlX2xvYWRpbWFnZV9wc2xpYgBbIAAlZyAlZyAAXSAgJWQgdHJ1ZSAlcwoAXSAgJWQgZmFsc2UgJXMKAGNvcmVfbG9hZGltYWdlX3BzAGdzYXZlICVnICVnIHRyYW5zbGF0ZSBuZXdwYXRoCgB1c2VyX3NoYXBlXyVkCgBncmVzdG9yZQoAY29yZV9sb2FkaW1hZ2VfdnJtbABTaGFwZSB7CgAgIGFwcGVhcmFuY2UgQXBwZWFyYW5jZSB7CgAgICAgbWF0ZXJpYWwgTWF0ZXJpYWwgewoAICAgICAgYW1iaWVudEludGVuc2l0eSAwLjMzCgAgICAgICAgIGRpZmZ1c2VDb2xvciAxIDEgMQoAICAgIH0KACAgICB0ZXh0dXJlIEltYWdlVGV4dHVyZSB7IHVybCAiJXMiIH0KACAgfQoAY29yZV9sb2FkaW1hZ2VfZmlnACVkICVkICVkICVkICVkICVkICVkICVkICVkICUuMWYgJWQgJWQgJWQgJWQgJWQgJWQKICVkICVzCgAgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKAGNvcmVfbG9hZGltYWdlX3N2ZwA8aW1hZ2UgeGxpbms6aHJlZj0iACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgeD0iJWciIHk9IiVnIgAgdHJhbnNmb3JtPSJyb3RhdGUoJWQgJWcgJWcpIgAiIHdpZHRoPSIlZ3B4IiBoZWlnaHQ9IiVncHgiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHg9IiVnIiB5PSIlZyIALz4KAGRvdF9sYXlvdXQAcGhhc2UAZG90IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFzcGVjdCBhdHRyaWJ1dGUgZm9yIGRpc2Nvbm5lY3RlZCBncmFwaHMgb3IgZ3JhcGhzIHdpdGggY2x1c3RlcnMKAGNvbXBvdW5kAHYgPT0gbgBkb3Rpbml0LmMAcmVtb3ZlX2Zyb21fcmFuawBvcmRlcgBlZGdlIGxhYmVscyB3aXRoIHNwbGluZXM9Y3VydmVkIG5vdCBzdXBwb3J0ZWQgaW4gZG90IC0gdXNlIHhsYWJlbHMKAEVEX2xhYmVsKGZlKQBkb3RzcGxpbmVzLmMAX2RvdF9zcGxpbmVzAGZsYXQgZWRnZSBiZXR3ZWVuIGFkamFjZW50IG5vZGVzIG9uZSBvZiB3aGljaCBoYXMgYSByZWNvcmQgc2hhcGUgLSByZXBsYWNlIHJlY29yZHMgd2l0aCBIVE1MLWxpa2UgbGFiZWxzCgAgIEVkZ2UgJXMgJXMgJXMKAHh4eAAxMDAwMAB7JXN9AGF1eGcAbGFiZWxfZmxvYXQAZml4ZWQAKGwgPSBFRF9sYWJlbChmZSkpAHNldEVkZ2VMYWJlbFBvcwBlICE9IE5VTEwAZmFzdGdyLmMAZGVsZXRlX2Zhc3RfZWRnZQBuICE9IE5EX25leHQobikAZmFzdF9ub2RlAHUgIT0gdgBmYXN0X25vZGVhcHAATkRfbmV4dCh2KSA9PSBOVUxMAGZpbmRfZmFzdF9ub2RlKGcsIG4pAGRlbGV0ZV9mYXN0X25vZGUAZGVsZXRlX2ZsYXRfZWRnZQBtZXJnZV9vbmV3YXkgZ2xpdGNoCgBtZXJnZV9vbmV3YXkAc2FmZV9kZWxldGVfZmFzdF9lZGdlAGxnAGNvbXAAY250ID09IHN6AG1pbmNyb3NzLmMAZml4TGFiZWxPcmRlcgByZW1pbmNyb3NzAG1pbmNyb3NzICVzOiAlZCBjcm9zc2luZ3MsICUuMmYgc2Vjcy4KAHYAbmVpZ2hib3IAKHJ2ID09IDApIHx8IChORF9vcmRlcihydiktTkRfb3JkZXIodikpKmRpciA+IDAAY29uc3RyYWluaW5nX2ZsYXRfZWRnZShnLHYsZSkgPT0gRkFMU0UAZmxhdF9yZW9yZGVyAE5EX3JhbmsodikgPT0gcgBwb3N0b3JkZXIAZmxhdGluZGV4KGFnaGVhZChlKSkgPCBNLT5ucm93cwBmbGF0X3NlYXJjaABmbGF0aW5kZXgoYWd0YWlsKGUpKSA8IE0tPm5jb2xzAG91dABvcmRlcmluZyAnJXMnIG5vdCByZWNvZ25pemVkLgoAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZCBmb3Igbm9kZSAnJXMnLgoAbWVyZ2UyOiBncmFwaCAlcywgcmFuayAlZCBoYXMgb25seSAlZCA8ICVkIG5vZGVzCgBtaW5jcm9zczogcGFzcyAlZCBpdGVyICVkIHRyeWluZyAlZCBjdXJfY3Jvc3MgJWQgYmVzdF9jcm9zcyAlZAoATkRfb3JkZXIodikgPCBORF9vcmRlcih3KQBiYWxhbmNlAHRyYW5zcG9zZV9zdGVwAHN1cnByaXNlCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6ICVzICVzIHJhbmsgJWQgaSA9ICVkIGFuID0gMAoAR0RfcmFuayhnKVtyXS5uIDw9IEdEX3JhbmsoZylbcl0uYW4AaW5zdGFsbF9pbl9yYW5rAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IHJhbmsgJWQgbm90IGluIHJhbmsgcmFuZ2UgWyVkLCVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiBHRF9yYW5rKGcpWyVkXS52ICsgTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKGcpWyVkXS5hdiArIEdEX3JhbmsoUm9vdClbJWRdLmFuIFslZF0KAF9uZXdfcmFuawBtY2xpbWl0AHJhbmsoZywgMiwgbnNpdGVyMihnKSkgPT0gMABwb3NpdGlvbi5jAGRvdF9wb3NpdGlvbgBBUj0lMC40bGYJIEFyZWE9ICUwLjRsZgkARHVtbXk9JWQKAEdvaW5nIHRvIGFwcGx5IGFub3RoZXIgZXhwYW5zaW9uLgoAbmV4dCNpdGVyPSVkCgBocABjb25uZWN0R3JhcGgARWRnZSBsZW5ndGggJWYgbGFyZ2VyIHRoYW4gbWF4aW11bSAldSBhbGxvd2VkLgpDaGVjayBmb3Igb3ZlcndpZGUgbm9kZShzKS4KAG5zbGltaXQAY29udGFpbl9ub2RlcyBjbHVzdCAlcyByYW5rICVkIG1pc3Npbmcgbm9kZQoAbnNsaW1pdDEAbmV3cmFuawBNYXhyYW5rID0gJWQsIG1pbnJhbmsgPSAlZAoAbGVhZGVyICE9IE5VTEwAcmFuay5jAGNsdXN0ZXJfbGVhZGVyAChORF9VRl9zaXplKG4pIDw9IDEpIHx8IChuID09IGxlYWRlcikAYWdoZWFkKGUpID09IFVGX2ZpbmQoYWdoZWFkKGUpKQBtaW5tYXhfZWRnZXMAYWd0YWlsKGUpID09IFVGX2ZpbmQoYWd0YWlsKGUpKQByYW5rAHNhbWUAbWluAHNvdXJjZQBtYXgAc2luawBsZXZlbCBhc3NpZ25tZW50IGNvbnN0cmFpbnRzAGxldmVsIGdyYXBoIHJlYwB/cm9vdAB/dG9wAH9ib3QAY29tcGFjdABfd2Vha18lZAByYW5raW5nOiBmYWlsdXJlIHRvIGNyZWF0ZSBzdHJvbmcgY29uc3RyYWludCBlZGdlIGJldHdlZW4gbm9kZXMgJXMgYW5kICVzCgAlcyBoYXMgdW5yZWNvZ25pemVkIHJhbms9JXMAbGV2ZWwgZWRnZSByZWMAbGV2ZWwgbm9kZSByZWMAc2FtZWhlYWQAc2FtZXRhaWwAdG9vIG1hbnkgKD4gJWQpIHNhbWV7aGVhZCx0YWlsfSBncm91cHMgZm9yIG5vZGUgJXMKAGNvbWJpQVIgPSAlbGYKACVsZiwlZAB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gaW1wbGVtZW50YXRpb24gZmxhd3MgLSBhdHRyaWJ1dGUgaWdub3JlZC4KAEVEX3RvX3ZpcnQoZSkgPT0gTlVMTABjbGFzczIuYwBtZXJnZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpID09IE5VTEwAbWFrZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpICE9IE5VTEwATkRfcmFuayhmcm9tKSA8IE5EX3JhbmsodG8pAGNsdXN0ZXIuYwBtYXBfcGF0aAAlcyB3YXMgYWxyZWFkeSBpbiBhIHJhbmtzZXQsIGRlbGV0ZWQgZnJvbSBjbHVzdGVyICVzCgBsaGVhZABsdGFpbAAlcyAtPiAlczogc3BsaW5lIHNpemUgPiAxIG5vdCBzdXBwb3J0ZWQKACVzIC0+ICVzOiBoZWFkIG5vdCBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgAlcyAtPiAlczogdGFpbCBpcyBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgBiZXotPnNmbGFnAGNvbXBvdW5kLmMAbWFrZUNvbXBvdW5kRWRnZQBiZXotPmVmbGFnACVzIC0+ICVzOiB0YWlsIG5vdCBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgAlcyAtPiAlczogaGVhZCBpcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgBzZWdtZW50IFslcywlc10gZG9lcyBub3QgaW50ZXJzZWN0IGJveCBsbD0lcyx1cj0lcwoAYm94SW50ZXJzZWN0ZgAoJS41ZywlLjVnKQBjbHVzdGVyIG5hbWVkICVzIG5vdCBmb3VuZAoAY29uY2VudHJhdGU9dHJ1ZSBtYXkgbm90IHdvcmsgY29ycmVjdGx5LgoAcmVidWlsdGRfdmxpc3RzOiByYW5rIGxlYWQgJXMgbm90IGluIG9yZGVyICVkIG9mIHJhbmsgJWQKAGRlZ2VuZXJhdGUgY29uY2VudHJhdGVkIHJhbmsgJXMsJWQKAE5EX2luKHJpZ2h0KS5zaXplICsgTkRfb3V0KHJpZ2h0KS5zaXplID09IDAAY29uYy5jAG1lcmdldmlydHVhbABkb3Q6IE91dCBvZiBtZW1vcnkKAE5EX291dCh2KS5zaXplID09IDIAZmxhdC5jAHNldGJvdW5kcwBHRF9taW5yYW5rKGcpID09IDAAYWJvbWluYXRpb24AbmVhdG9fbGF5b3V0AG5lYXRvAGZkcAB0d29waQBjaXJjbwBwYXRjaHdvcmsAb3NhZ2UAbm9wAG5vcDEAbm9wMgAlbGYsJWxmLCVsZiVjAG5vZGUgJXMsIHBvc2l0aW9uICVzLCBleHBlY3RlZCB0d28gZG91YmxlcwoAbm90cmFuc2xhdGUAbm9kZSAlcyBpbiBncmFwaCAlcyBoYXMgbm8gcG9zaXRpb24KAHMsJWxmLCVsZiVuACBlLCVsZiwlbGYlbgBwb3MgYXR0cmlidXRlIGZvciBlZGdlICglcywlcykgZG9lc24ndCBoYXZlIDNuKzEgcG9pbnRzCgAlbGYsJWxmJW4Ac3ludGF4IGVycm9yIGluIHBvcyBhdHRyaWJ1dGUgZm9yIGVkZ2UgKCVzLCVzKQoAJWxmLCVsZiwlbGYsJWxmAHN0YXJ0AHNlbGYAcmFuZG9tAG5vZGUgcG9zaXRpb25zIGFyZSBpZ25vcmVkIHVubGVzcyBzdGFydD1yYW5kb20KAGFzIHJlcXVpcmVkIGJ5IHRoZSAtbiBmbGFnCgBfbmVhdG9fY2MAZ3JhcGggJXMgaXMgZGlzY29ubmVjdGVkLiBIZW5jZSwgdGhlIGNpcmN1aXQgbW9kZWwKAEFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHJ1bm5pbmcgbmVhdG8gdXNpbmcgLUdwYWNrPXRydWUgb3IgZGVjb21wb3NpbmcKAHRoZSBncmFwaCBpbnRvIGNvbm5lY3RlZCBjb21wb25lbnRzLgoAU29sdmluZyBtb2RlbCAlZCBpdGVyYXRpb25zICVkIHRvbCAlZgoATkRfaWQobnApID09IGkAbmVhdG9pbml0LmMAbWFrZUdyYXBoRGF0YQBmIDwgZ3JhcGhbal0ubmVkZ2VzAGRmc0N5Y2xlAG1vZGVsICVkIHNtYXJ0X2luaXQgJWQgc3RyZXNzd3QgJWQgaXRlcmF0aW9ucyAlZCB0b2wgJWYKAGNvbnZlcnQgZ3JhcGg6IABtYWpvcml6YXRpb24KACVkIG5vZGVzICUuMmYgc2VjCgBsZXZlbHNnYXAAbGF5b3V0IGFib3J0ZWQKAHN0cmVzc3d0ACVzIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIDEgb3IgMiAtIGlnbm9yaW5nCgBtb2RlbABjaXJjdWl0AHN1YnNldABzaG9ydHBhdGgAbWRzAGVkZ2VzIGluIGdyYXBoICVzIGhhdmUgbm8gbGVuIGF0dHJpYnV0ZS4gSGVuY2UsIHRoZSBtZHMgbW9kZWwKAGlzIGluYXBwcm9wcmlhdGUuIFJldmVydGluZyB0byB0aGUgc2hvcnRlc3QgcGF0aCBtb2RlbC4KAFVua25vd24gdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZWwiIGluIGdyYXBoICVzIC0gaWdub3JlZAoAbW9kZQBLSwBtYWpvcgBoaWVyAElsbGVnYWwgdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZSIgaW4gZ3JhcGggJXMgLSBpZ25vcmVkCgBkaW1lbgBtYWtlU3BsaW5lOiBmYWlsZWQgdG8gbWFrZSBzcGxpbmUgZWRnZSAoJXMsJXMpCgBzcGxpbmUgJXMgJXMKAGIgPT0gbgBuZWF0b3NwbGluZXMuYwBtYWtlX2JhcnJpZXJzAHRoZSBib3VuZGluZyBib3hlcyBvZiBzb21lIG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHNvbWUgbm9kZXMgd2l0aCBtYXJnaW4gKCUuMDJmLCUuMDJmKSB0b3VjaCAtIGZhbGxpbmcgYmFjayB0byBzdHJhaWdodCBsaW5lIGVkZ2VzCgBwb2x5bGluZXMAbGluZSBzZWdtZW50cwBvcnRob2dvbmFsIGxpbmVzAENyZWF0aW5nIGVkZ2VzIHVzaW5nICVzCgBwb2x5bGluZSAlcyAlcwoAbWRzTW9kZWw6IGRlbHRhID0gJWYKAFNldHRpbmcgdXAgc3RyZXNzIGZ1bmN0aW9uAFNvbHZpbmcgbW9kZWw6IAAKZmluYWwgZSA9ICVmICVkIGl0ZXJhdGlvbnMgJS4yZiBzZWMKAERhbXBpbmcAZGVmYXVsdGRpc3QAIGluICVzIC0gc2V0dGluZyB0byAlLjAyZgoAYmFkIGVkZ2UgbGVuICIlcyIAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwoAc3RhcnQ9JXMgbm90IHN1cHBvcnRlZCB3aXRoIG1vZGU9c2VsZiAtIGlnbm9yZWQKAFNldHRpbmcgdXAgc3ByaW5nIG1vZGVsOiAAJS4yZiBzZWMKAApmaW5hbCBlID0gJWYAIQAgJWQlcyBpdGVyYXRpb25zICUuMmYgc2VjCgBNYXguIGl0ZXJhdGlvbnMgKCVkKSByZWFjaGVkIG9uIGdyYXBoICVzCgAlcyAlLjNmCgAlLjNmIABORF9oZWFwaW5kZXgodikgPCAwAHN0dWZmLmMAbmVhdG9fZW5xdWV1ZQBDYWxjdWxhdGluZyBzaG9ydGVzdCBwYXRoczogAHNwZWNpZmllZCByb290IG5vZGUgIiVzIiB3YXMgbm90IGZvdW5kLgBVc2luZyBkZWZhdWx0IGNhbGN1bGF0aW9uIGZvciByb290IG5vZGUKAHJlcG9zaXRpb24gJXMKACVzIDogJWYgJWYKACVzIDogJWYgJWYgJWYgJWYKACAgAEdyYXBoICVzIGhhcyBhcnJheSBwYWNraW5nIHdpdGggdXNlciB2YWx1ZXMgYnV0IG5vICJzb3J0diIgYXR0cmlidXRlcyBhcmUgZGVmaW5lZC4AbGVuAHBpbgBXYXJuaW5nOiBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGZsb2F0cwoAY29vcmRzAGRpbQBsYXlvdXQgJXMKAGVuZCAlcwoAaWR4ID09IHN6AGxheW91dC5jAGV4cGFuZENsdXN0ZXIAaSA9PSBkZWcAZ2V0RWRnZUxpc3QAX2RnXyVkAGRlcml2ZSBncmFwaCAlcyBvZiAlcwoAbm9kZSAiJXMiIGlzIGNvbnRhaW5lZCBpbiB0d28gbm9uLWNvbXBhcmFibGUgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAX3BvcnRfJXNfJXNfJXNfJWxkAF9wb3J0XyVzXyglZClfKCVkKV8lbGQAJWxmLCVsZiwlbGYsJWxmJWMAZ3JhcGggJXMsIGNvb3JkICVzLCBleHBlY3RlZCBmb3VyIGRvdWJsZXMKAHNwbGluZXMgYW5kIGNsdXN0ZXIgZWRnZXMgbm90IHN1cHBvcnRlZCAtIHVzaW5nIGxpbmUgc2VnbWVudHMKAG1heGl0ZXIASwBUMABmZHAgZG9lcyBub3Qgc3VwcG9ydCBzdGFydD1zZWxmIC0gaWdub3JpbmcKAHhMYXlvdXQgADk6cHJpc20AdHJpZXMgPSAlZCwgbW9kZSA9ICVzCgBkZXJpdmVkAGluZm8Abm9ybWFsaXplAG92ZXJsYXAAT3ZlcmxhcCB2YWx1ZSAiJXMiIHVuc3VwcG9ydGVkIC0gaWdub3JlZAoAVW5yZWNvZ25pemVkIG92ZXJsYXAgdmFsdWUgIiVzIiAtIHVzaW5nIGZhbHNlCgBWb3Jvbm9pAG92ZXJsYXA6ICVzIHZhbHVlICVkIHNjYWxpbmcgJS4wNGYKAG92ZXJsYXBfc2NhbGluZwB2b3Jvbm9pAHNjYWxpbmcAdnBzYwBpcHNlcABvc2NhbGUAb2xkIHNjYWxpbmcAc2NhbGV4eQB4IGFuZCB5IHNjYWxpbmcAb3J0aG8Ab3J0aG9nb25hbCBjb25zdHJhaW50cwBvcnRob195eABvcnRob3h5AHh5IG9ydGhvZ29uYWwgY29uc3RyYWludHMAb3J0aG95eAB5eCBvcnRob2dvbmFsIGNvbnN0cmFpbnRzAHBvcnRobwBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwb3J0aG9feXgAcG9ydGhveHkAeHkgcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcG9ydGhveXgAeXggcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcHJpc20AQWRqdXN0aW5nICVzIHVzaW5nICVzCgBVbmhhbmRsZWQgYWRqdXN0IG9wdGlvbiAlcwoATnVtYmVyIG9mIGl0ZXJhdGlvbnMgPSAlZAoATnVtYmVyIG9mIGluY3JlYXNlcyA9ICVkCgBvdmVybGFwIFslZF0gOiAlZAoAdm9yb19tYXJnaW4Ac2VwAGVzZXAATm9kZSBzZXBhcmF0aW9uOiBhZGQ9JWQgKCVmLCVmKQoAJWYsJWYAc2NhbGUgPSAoJS4wM2YsJS4wM2YpCgBFZGdlIHNlcGFyYXRpb246IGFkZD0lZCAoJWYsJWYpCgBDYWxjdWxhdGluZyBjaXJjdWl0IG1vZGVsAGNvbmp1Z2F0ZV9ncmFkaWVudDogdW5leHBlY3RlZCBsZW5ndGggMCB2ZWN0b3IKAENhbGN1bGF0aW5nIHN1YnNldCBtb2RlbABncmFwaCBpcyBkaXNjb25uZWN0ZWQuIEhlbmNlLCB0aGUgY2lyY3VpdCBtb2RlbAoAaXMgdW5kZWZpbmVkLiBSZXZlcnRpbmcgdG8gdGhlIHNob3J0ZXN0IHBhdGggbW9kZWwuCgBDYWxjdWxhdGluZyBNRFMgbW9kZWwAQ2FsY3VsYXRpbmcgc2hvcnRlc3QgcGF0aHMAOiAlLjJmIHNlYwoAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwA6ICUuMmYgc2VjAGNnAGRlbHRhIDw9IDB4RkZGRgBjb25zdHJhaW50LmMAbWtOQ29uc3RyYWludEcAdmcAY29tcHJlc3MgJWcgCgBzY2FsZSBieSAlZywlZyAKAGJlc3Rjb3N0IDwgSFVHRV9WQUwAY29tcHV0ZVNjYWxlWFkAdHJ5aW5nIHRvIGRlbGV0ZSBhIG5vbi1saW5lCgAKaW50ZXJzZWN0aW9uIGF0ICUuM2YgJS4zZgoAc2VnIyVkIDogKCUuM2YsICUuM2YpICglLjNmLCAlLjNmKQoAbWFrZUFkZFBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAbWFrZVBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAeCE9TlVMTABzbWFydF9pbmlfeC5jAElNRFNfZ2l2ZW5fZGltAGlsbC1jb25kaXRpb25lZAByb290ID0gJXMgbWF4IHN0ZXBzIHRvIHJvb3QgPSAlZAoAdHdvcGk6IHVzZSBvZiB3ZWlnaHQ9MCBjcmVhdGVzIGRpc2Nvbm5lY3RlZCBjb21wb25lbnQuCgBSYW5rIHNlcGFyYXRpb24gPSAAJS4wM2xmIABhcmVhAGluc2V0ACVzIGNvb3JkICUuNWcgJS41ZyBodCAlZiB3aWR0aCAlZgoAJS4wM2YAcmVjICVmICVmICVmICVmCgAlZiAtICVmICVmICVmICVmID0gJWYgKCVmICVmICVmICVmKQoAdHJ5aW5nIHRvIGFkZCB0byByZWN0IHslZiArLy0gJWYsICVmICsvLSAlZn0KAHRvdGFsIGFkZGVkIHNvIGZhciA9ICVkCgBhZGRpbmcgJWQgaXRlbXMsIHRvdGFsIGFyZWEgPSAlZiwgdyA9ICVmLCBhcmVhL3c9JWYKAGNvbXBvdW5kRWRnZXM6IGNvdWxkIG5vdCBjb25zdHJ1Y3Qgb2JzdGFjbGVzIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAGNvbXBvdW5kRWRnZXM6IG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHBhY2sgdmFsdWUgJWQgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAc2VwIHZhbHVlICglLjAzZiwlLjAzZikgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAY2Mlc18lZABjYyVzKyVkAGNfY250ID09IDAAY29tcC5jAGZpbmRDQ29tcABncmlkKCVkLCVkKTogJXMKAG9uZWJsb2NrAG1pbmRpc3QAYXJ0aWN1bGF0aW9uX3BvcwByb290AHJvb3QgPSAlcwoAX2Jsb2NrXyVkAHMtPnN6ID4gMABibG9ja3RyZWUuYwBwb3AAYWN0dWFsAG5vZGVsaXN0LmMAaW5zZXJ0Tm9kZWxpc3QAX3NwYW5fJWQAX2Nsb25lXyVkAGlwAGRlZ2xpc3QuYwByZW1vdmVEZWdsaXN0AEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLWVuZCBvZiBidWZmZXIgbWlzc2VkAGZhdGFsIGVycm9yIC0gc2Nhbm5lciBpbnB1dCBidWZmZXIgb3ZlcmZsb3cAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19nZXRfbmV4dF9idWZmZXIoKQBpbnB1dABzeW50YXggYW1iaWd1aXR5IC0gYmFkbHkgZGVsaW1pdGVkIG51bWJlciAnACcgaW4gbGluZSAlZCBvZiAAIHNwbGl0cyBpbnRvIHR3byB0b2tlbnMKACVzAGxpbmUAJWQgJTFbIl0lbgBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnX2NyZWF0ZV9idWZmZXIoKQBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnZW5zdXJlX2J1ZmZlcl9zdGFjaygpADogACBpbiBsaW5lICVkACBuZWFyICcAIHNjYW5uaW5nIGEgcXVvdGVkIHN0cmluZyAobWlzc2luZyBlbmRxdW90ZT8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOiIAIHNjYW5uaW5nIGEgSFRNTCBzdHJpbmcgKG1pc3NpbmcgJz4nPyBiYWQgbmVzdGluZz8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOjwAIHNjYW5uaW5nIGEgLyouLi4qLyBjb21tZW50IChtaXNzaW5nICcqLz8gbG9uZ2VyIHRoYW4gJWQ/KQBmbGV4IHNjYW5uZXIgcHVzaC1iYWNrIG92ZXJmbG93ACIiAHN0cmljdABsaW5lbGVuZ3RoADsKACBba2V5PQBdACBbACwKAD0AXyVsZF9TVVNQRUNUAGRpAHN0cmljdCAAewoAXTsKABLu7hQJA+7+7u7uAe7u7gHu7gr+7hMZFe4TAe7u7u4LEe7u7u7u7u7u7gHu7hYJAQEdDxfu7hoXG+7uHO7u7u4BGfvu7u4B7hDu7h7u7u7uAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcRAgICAgICAgICAgICAhIQAhMCAhYCAgICAgICAgICAgICAgICAgICAgICAgICAhQCFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICDgIPAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgECAwQFBgcICQoLDA0LAwQFDwcDDA0GDA0ODA0aFRYAAQADBw4GDwgMDRITKhARCRAvMBEyFxMNFBIuEhRBEzITLEAqQhksQkYiDA0OIw8JEBEKEBHJEBEtRUb8AQb2Dwf2JAIQES8wNk1OKCY7PCo2MTk9Py86QNhEMD4lN0M1Sys4SUwAAwkAAAABDgILDAgjJCU2Oz0ADRASGxYcEicyIhczHjwGBzUFDxEUGCkAEykAAAAAADcVKB0eACEmNB8wPhksABsAIBoqACs6Li8AMTg5LQACAgEAAwMBAAEAAQEBAAIBAQACAgMBAQAABQABAwEDBQMBAQEBAgABAAQCAAIBAQMCAQADAgEAAQEAAQEBAwAYGRkZGhscHB0dHh4fHyAgISEiIiMkJCYnJSUoKCkpKSoqKysrLCwtLS4vLzAxMTIzNDY1Nzc3ODg4OTk6Ou7u/+7u7u7u7h8g7gDv7u7uDO7u7ggN7u7u+O7u7u7u7vXu/wMIBCEFCxITJxQVFikyQRcYGRosMzRCR0gbShwdLh5PHyBrZXkAYXR0cmlidXRlIG1hY3JvcyBub3QgaW1wbGVtZW50ZWQAJXM6JXMAQ291bGQgbm90IG9wZW4gIiVzIiBmb3Igd3JpdGluZyA6ICVzCgBObyBsaWJ6IHN1cHBvcnQuCgAuJWQAbm9uYW1lLmd2AGd2d3JpdGVfbm9feiBwcm9ibGVtICVkCgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCgBObyBsaWJ6IHN1cHBvcnQKAGd2cHJpbnRmOiAlcwoALTk5OTk5OTk5OTk5OTk5OS45OQBncmFwaHZpegAyLjQwLjEAMjAxNjEyMjUuMDMwNAByZW5kZXIAbGF5b3V0AGRldmljZQBsb2FkaW1hZ2UAZHluYW1pYyBsb2FkaW5nIG5vdCBhdmFpbGFibGUKAFVzaW5nICVzOiAlczolcwoAZ3Z1c2Vyc2hhcGUuYwBndnVzZXJzaGFwZV9maW5kAGd2dXNlcnNoYXBlX2ZpbGVfYWNjZXNzAEZpbGVuYW1lICIlcyIgaXMgdW5zYWZlCgAlcyB3aGlsZSBvcGVuaW5nICVzCgB1cy0+ZgBndnVzZXJzaGFwZV9vcGVuACIlcyIgd2FzIG5vdCBmb3VuZCBhcyBhIGZpbGUgb3IgYXMgYSBzaGFwZSBsaWJyYXJ5IG1lbWJlcgoAL01lZGlhQm94AChbYS16XVthLXpBLVpdKik9IihbXiJdKikiAGNhbm5vdCBjb21waWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiAlcwAlbGYlMnMAcHQAdmlld0JveAAlbGYgJWxmICVsZiAlbGYAaW4AcHgAcGMAIgBjbQBtbQAlJUJvdW5kaW5nQm94OgAB0NHS09TV1tfY2QA8c3ZnAFdFQlAAd2VicAAobGliKQCJUE5HDQoaCgBwbmcAJSFQUy1BZG9iZS0AQk0AYm1wAEdJRjgAZ2lmAP/Y/+AAanBlZwAlUERGLQBwZGYAxdDTxgBlcHMAPD94bWwAeG1sAFJJRkYAcmlmZgAAAAEAAGljbwBMYXlvdXQgdHlwZTogIiVzIiBub3QgcmVjb2duaXplZC4gVXNlIG9uZSBvZjolcwoAJWQgJWQgJWQgJWQATGF5b3V0IHdhcyBub3QgZG9uZQoAZmFpbHVyZSBtYWxsb2MnaW5nIGZvciByZXN1bHQgc3RyaW5nAGdjOiBPdXQgb2YgbWVtb3J5CgBfY2NfAG9yaWcAb3AAY2NvbXBzLmMAbWFwQ2x1c3QAY2NncmFwaGluZm8AY2Nnbm9kZWluZm8AKCU0bGQpICU3bGQgbm9kZXMgJTdsZCBlZGdlcwoAICAgICAgICU3ZCBub2RlcyAlN2QgZWRnZXMgJTdsZCBjb21wb25lbnRzICVzCgBkZwBFcnJvcjogbm9kZSAiJXMiIGJlbG9uZ3MgdG8gdHdvIG5vbi1uZXN0ZWQgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAc29ydHYAcm93IG1ham9yAGNvbHVtbiBtYWpvcgBhcnJheSBwYWNraW5nOiAlcyAlZCByb3dzICVkIGNvbHVtbnMKAGJiWyVzXSAlLjVnICUuNWcgJS41ZyAlLjVnCgBzdGVwIHNpemUgPSAlZAoAcG9zWyVkXSAlZCAlZAoAY2MgKCVkIGNlbGxzKSBhdCAoJWQsJWQpICglZCwlZCkKAGNjICglZCBjZWxscykgYXQgKCVkLCVkKQoAJXMgbm8uIGNlbGxzICVkIFcgJWQgSCAlZAoAICAlZCAlZCBjZWxsCgBsaWJwYWNrOiBkaXNjID0gJWYgKCA8IDApCgBQYWNraW5nOiBjb21wdXRlIGdyaWQgc2l6ZQoAYSAlZiBiICVmIGMgJWYgZCAlZiByICVmCgByb290ICVkICglZikgJWQgKCVmKQoAIHIxICVmIHIyICVmCgBwaW5mbwBwYWNrLmMAZ2V0UGFja0luZm8AICBtYXJnaW4gJWQKAHBhY2ttb2RlAHBhcnNlUGFja01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABsbnJjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTABlZGdldGFyZ2V0AGxhYmVsdGFyZ2V0AHRhaWx0YXJnZXQAaGVhZHRhcmdldABlZGdldG9vbHRpcABsYWJlbHRvb2x0aXAAdGFpbHRvb2x0aXAAaGVhZHRvb2x0aXAAAW5lc3Rpbmcgbm90IGFsbG93ZWQgaW4gc3R5bGU6ICVzCgB1bm1hdGNoZWQgJyknIGluIHN0eWxlOiAlcwoAdHJ1bmNhdGluZyBzdHlsZSAnJXMnCgB1bm1hdGNoZWQgJygnIGluIHN0eWxlOiAlcwoAYWxsAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBmaWxsY29sb3IAZm9udHNpemUAZm9udG5hbWUAZm9udGNvbG9yAHhsYWJlbABwZW53aWR0aABwZXJpcGhlcmllcwBza2V3AGRpc3RvcnRpb24Abm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAVW5zdXBwb3J0ZWQgY2hhcnNldCB2YWx1ZSAlZAoAVVRGLTgAQklHLTUAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAcG9seWdvbgBvdmFsAGNpcmNsZQBwb2ludABlZ2cAdHJpYW5nbGUAcGxhaW50ZXh0AHBsYWluAGRpYW1vbmQAdHJhcGV6aXVtAHBhcmFsbGVsb2dyYW0AaG91c2UAcGVudGFnb24AaGV4YWdvbgBzZXB0YWdvbgBvY3RhZ29uAG5vdGUAdGFiAGZvbGRlcgBib3gzZABjb21wb25lbnQAY3lsaW5kZXIAcmVjdAByZWN0YW5nbGUAc3F1YXJlAGRvdWJsZWNpcmNsZQBkb3VibGVvY3RhZ29uAHRyaXBsZW9jdGFnb24AaW52dHJpYW5nbGUAaW52dHJhcGV6aXVtAGludmhvdXNlAHVuZGVybGluZQBNZGlhbW9uZABNc3F1YXJlAE1jaXJjbGUAcHJvbW90ZXIAY2RzAHRlcm1pbmF0b3IAdXRyAGluc3VsYXRvcgByaWJvc2l0ZQBybmFzdGFiAHByb3RlYXNlc2l0ZQBwcm90ZWluc3RhYgBwcmltZXJzaXRlAHJlc3RyaWN0aW9uc2l0ZQBmaXZlcG92ZXJoYW5nAHRocmVlcG92ZXJoYW5nAG5vdmVyaGFuZwBhc3NlbWJseQBzaWduYXR1cmUAcnByb21vdGVyAGxhcnJvdwByYXJyb3cAbHByb21vdGVyAHJlY29yZABNcmVjb3JkAHN0YXIAIzgwODA4MAAjZmNmY2ZjACMzMDMwMzAAI2U4ZThlOAAjZTBlMGUwACNmMGYwZjAAIzEwMTAxMAAjZjhmOGY4AGluIG5vZGUgJXMKAHJvdW5kZWQAZGlhZ29uYWxzAHJhZGlhbABzdHJpcGVkAHdlZGdlZABfAG5vZGUgJXMsIHBvcnQgJXMsIHVucmVjb2duaXplZCBjb21wYXNzIHBvaW50ICclcycgLSBpZ25vcmVkCgBub2RlICVzLCBwb3J0ICVzIHVucmVjb2duaXplZAoAJS41ZyAlLjVnIHRyYW5zbGF0ZSBuZXdwYXRoIHVzZXJfc2hhcGVfJWQKAGludmlzAABmaWxsZWQAAHMAZQB3AHNwbGluZXMuYwBiZWdpbnBhdGgAUC0+ZW5kLnRoZXRhIDwgMiAqIE1fUEkAZW5kcGF0aABtYWtlU2VsZkVkZ2UAZ2V0c3BsaW5lcG9pbnRzOiBubyBzcGxpbmUgcG9pbnRzIGF2YWlsYWJsZSBmb3IgZWRnZSAoJXMsJXMpCgBwb2x5bGluZU1pZHBvaW50AHNwYW4tPmZvbnQAdGV4dHNwYW4uYwB0ZXh0c3Bhbl9zaXplAGZvbnQtPm5hbWUAZm9udG5hbWU6ICIlcyIgcmVzb2x2ZWQgdG86ICVzCgBmb250bmFtZTogdW5hYmxlIHRvIHJlc29sdmUgIiVzIgoAY291cgBhcmlhbABoZWx2ZXRpY2EAW2ludGVybmFsIHRpbWVzXQBbaW50ZXJuYWwgY291cmllcl0AW2ludGVybmFsIGFyaWFsXQBBdmFudEdhcmRlLUJvb2sAVVJXIEdvdGhpYyBMAGJvb2sAc2Fucy1TZXJpZgBBdmFudEdhcmRlLUJvb2tPYmxpcXVlAG9ibGlxdWUAaXRhbGljAEF2YW50R2FyZGUtRGVtaQBkZW1pAEF2YW50R2FyZGUtRGVtaU9ibGlxdWUAQm9va21hbi1EZW1pAFVSVyBCb29rbWFuIEwAc2VyaWYAQm9va21hbi1EZW1pSXRhbGljAEJvb2ttYW4tTGlnaHQAbGlnaHQAQm9va21hbi1MaWdodEl0YWxpYwBDb3VyaWVyAG1vbm9zcGFjZQBDb3VyaWVyLUJvbGQAQ291cmllci1Cb2xkT2JsaXF1ZQBDb3VyaWVyLU9ibGlxdWUASGVsdmV0aWNhAEhlbHZldGljYS1Cb2xkAEhlbHZldGljYS1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93AGNvbmRlbnNlZABIZWx2ZXRpY2EtTmFycm93LUJvbGQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93LU9ibGlxdWUASGVsdmV0aWNhLU9ibGlxdWUATmV3Q2VudHVyeVNjaGxiay1Cb2xkAENlbnR1cnkgU2Nob29sYm9vayBMAE5ld0NlbnR1cnlTY2hsYmstQm9sZEl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLUl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLVJvbWFuAHJvbWFuAFBhbGF0aW5vLUJvbGQAUGFsYXRpbm8gTGlub3R5cGUAUGFsYXRpbm8tQm9sZEl0YWxpYwBQYWxhdGluby1JdGFsaWMAUGFsYXRpbm8tUm9tYW4AU3ltYm9sAGZhbnRhc3kAVGltZXMtQm9sZABUaW1lcwBUaW1lcy1Cb2xkSXRhbGljAFRpbWVzLUl0YWxpYwBaYXBmQ2hhbmNlcnktTWVkaXVtSXRhbGljAFVSVyBDaGFuY2VyeSBMAG1lZGl1bQBaYXBmRGluZ2JhdHMARGluZ2JhdHMAaW5wdXRzY2FsZQBubwB0cnVlAHllcwB1dGlscy5jAHUgPT0gVUZfZmluZCh1KQBVRl9zZXRuYW1lAAFmaWxlIGxvYWRpbmcgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgZW52aXJvbm1lbnQgY29udGFpbnMgU0VSVkVSX05BTUU9IiVzIgphbmQgdGhlIEdWX0ZJTEVfUEFUSCB2YXJpYWJsZSBpcyB1bnNldCBvciBlbXB0eS4KAFBhdGggcHJvdmlkZWQgdG8gZmlsZTogIiVzIiBoYXMgYmVlbiBpZ25vcmVkIGJlY2F1c2UgZmlsZXMgYXJlIG9ubHkgcGVybWl0dGVkIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBkaXJlY3RvcmllcyBpbiAiJXMiIHdoZW4gcnVubmluZyBpbiBhbiBodHRwIHNlcnZlci4KACVzJXMlcwAvADoAZWxsaXBzZQBUaW1lcy1Sb21hbgBjbHVzdGVyAF9fY2x1c3Rlcm5vZGVzAGNsdXN0ZXIgY3ljbGUgJXMgLS0gJXMgbm90IHN1cHBvcnRlZAoAdGFpbCBjbHVzdGVyICVzIGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKAGhlYWQgY2x1c3RlciAlcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgB0YWlsIG5vZGUgJXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAaGVhZCBub2RlICVzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAF9fAGxhYmVsAHNoYXBlAGJveABUd28gY2x1c3RlcnMgbmFtZWQgJXMgLSB0aGUgc2Vjb25kIHdpbGwgYmUgaWdub3JlZAoAbWFwTgBBRWxpZwBBYWN1dGUAQWNpcmMAQWdyYXZlAEFscGhhAEFyaW5nAEF0aWxkZQBBdW1sAEJldGEAQ2NlZGlsAENoaQBEYWdnZXIARGVsdGEARVRIAEVhY3V0ZQBFY2lyYwBFZ3JhdmUARXBzaWxvbgBFdGEARXVtbABHYW1tYQBJYWN1dGUASWNpcmMASWdyYXZlAElvdGEASXVtbABLYXBwYQBMYW1iZGEATXUATnRpbGRlAE51AE9FbGlnAE9hY3V0ZQBPY2lyYwBPZ3JhdmUAT21lZ2EAT21pY3JvbgBPc2xhc2gAT3RpbGRlAE91bWwAUGhpAFBpAFByaW1lAFBzaQBSaG8AU2Nhcm9uAFNpZ21hAFRIT1JOAFRhdQBUaGV0YQBVYWN1dGUAVWNpcmMAVWdyYXZlAFVwc2lsb24AVXVtbABYaQBZYWN1dGUAWXVtbABaZXRhAGFhY3V0ZQBhY2lyYwBhY3V0ZQBhZWxpZwBhZ3JhdmUAYWxlZnN5bQBhbHBoYQBhbXAAYW5kAGFuZwBhcmluZwBhc3ltcABhdGlsZGUAYXVtbABiZHF1bwBiZXRhAGJydmJhcgBidWxsAGNhcABjY2VkaWwAY2VkaWwAY2VudABjaGkAY2lyYwBjbHVicwBjb25nAGNvcHkAY3JhcnIAY3VwAGN1cnJlbgBkQXJyAGRhZ2dlcgBkYXJyAGRlZwBkZWx0YQBkaWFtcwBkaXZpZGUAZWFjdXRlAGVjaXJjAGVncmF2ZQBlbXB0eQBlbXNwAGVuc3AAZXBzaWxvbgBlcXVpdgBldGEAZXRoAGV1bWwAZXVybwBleGlzdABmbm9mAGZvcmFsbABmcmFjMTIAZnJhYzE0AGZyYWMzNABmcmFzbABnYW1tYQBnZQBndABoQXJyAGhhcnIAaGVhcnRzAGhlbGxpcABpYWN1dGUAaWNpcmMAaWV4Y2wAaWdyYXZlAGltYWdlAGluZmluAGludABpb3RhAGlxdWVzdABpc2luAGl1bWwAa2FwcGEAbEFycgBsYW1iZGEAbGFuZwBsYXF1bwBsYXJyAGxjZWlsAGxkcXVvAGxlAGxmbG9vcgBsb3dhc3QAbG96AGxybQBsc2FxdW8AbHNxdW8AbHQAbWFjcgBtZGFzaABtaWNybwBtaWRkb3QAbXUAbmFibGEAbmJzcABuZGFzaABuZQBuaQBub3QAbm90aW4AbnN1YgBudGlsZGUAbnUAb2FjdXRlAG9jaXJjAG9lbGlnAG9ncmF2ZQBvbGluZQBvbWVnYQBvbWljcm9uAG9wbHVzAG9yAG9yZGYAb3JkbQBvc2xhc2gAb3RpbGRlAG90aW1lcwBvdW1sAHBhcmEAcGFydABwZXJtaWwAcGVycABwaGkAcGkAcGl2AHBsdXNtbgBwb3VuZABwcmltZQBwcm9kAHByb3AAcHNpAHF1b3QAckFycgByYWRpYwByYW5nAHJhcXVvAHJhcnIAcmNlaWwAcmRxdW8AcmVhbAByZWcAcmZsb29yAHJobwBybG0AcnNhcXVvAHJzcXVvAHNicXVvAHNjYXJvbgBzZG90AHNlY3QAc2h5AHNpZ21hAHNpZ21hZgBzaW0Ac3BhZGVzAHN1YgBzdWJlAHN1bQBzdXAAc3VwMQBzdXAyAHN1cDMAc3VwZQBzemxpZwB0YXUAdGhlcmU0AHRoZXRhAHRoZXRhc3ltAHRoaW5zcAB0aG9ybgB0aWxkZQB0aW1lcwB0cmFkZQB1QXJyAHVhY3V0ZQB1YXJyAHVjaXJjAHVncmF2ZQB1bWwAdXBzaWgAdXBzaWxvbgB1dW1sAHdlaWVycAB4aQB5YWN1dGUAeWVuAHl1bWwAemV0YQB6d2oAenduagBVVEY4IGNvZGVzID4gNCBieXRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgKGdyYXBoICVzKSAtIHRyZWF0ZWQgYXMgTGF0aW4tMS4gUGVyaGFwcyAiLUdjaGFyc2V0PWxhdGluMSIgaXMgbmVlZGVkPwoASW52YWxpZCAlZC1ieXRlIFVURjggZm91bmQgaW4gaW5wdXQgb2YgZ3JhcGggJXMgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAGJ6LnNpemUAb3ZlcmxhcF9iZXppZXIAdXJ2ZWQAb21wb3VuZABhbHNlAGluZQBvbmUAbwBydGhvAG9seWxpbmUAcGxpbmUAcnVlAGVzAFVua25vd24gInNwbGluZXMiIHZhbHVlOiAiJXMiIC0gaWdub3JlZAoAc3BsaW5lcwBvZGIAT3J0aG9nb25hbCBlZGdlcyBkbyBub3QgY3VycmVudGx5IGhhbmRsZSBlZGdlIGxhYmVscy4gVHJ5IHVzaW5nIHhsYWJlbHMuCgBvcnRobyAlcyAlcwoAY2hhbmkAb3J0aG8uYwBjaGFuU2VhcmNoAGNwACUlIVBTLUFkb2JlLTIuMAolJSUlQm91bmRpbmdCb3g6IChhdGVuZCkKL3BvaW50IHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgbmV3cGF0aAogIFggWSAzIDAgMzYwIGFyYyBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgovbm9kZSB7CiAvdSBleGNoIGRlZgogL3IgZXhjaCBkZWYKIC9kIGV4Y2ggZGVmCiAvbCBleGNoIGRlZgogbmV3cGF0aCBsIGQgbW92ZXRvCiByIGQgbGluZXRvIHIgdSBsaW5ldG8gbCB1IGxpbmV0bwogY2xvc2VwYXRoIGZpbGwKfSBkZWYKCgAlZCAlZCB0cmFuc2xhdGUKADAuOCAwLjggMC44IHNldHJnYmNvbG9yCgBzaG93cGFnZQolJSUlVHJhaWxlcgolJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgBuZXdwYXRoICVkICVkIG1vdmV0bwoAJWQgJWQgbGluZXRvCgAlZCAlZCBsaW5ldG8gc3Ryb2tlCgBjaGFubmVsICVkICglZiwlZikKACAtPgoAICAgICAAKCglZiwlZiksKCVmLCVmKSkgJXMgJXMAQl9SSUdIVABCX0RPV04AQl9MRUZUAEJfVVAAQl9OT0RFAHNlZwBuZXh0X3NlZwBkZWNpZGVfcG9pbnQAaW5jb21wYXJhYmxlIHNlZ21lbnRzICEhIC0tIEFib3J0aW5nCgBzMS0+Y29tbV9jb29yZD09czItPmNvbW1fY29vcmQAaXNfcGFyYWxsZWwAZ3JhcGggRyB7CgAgbm9kZVtzaGFwZT1wb2ludF0KACAgJWQgW3Bvcz0iJWQsJWQiXQoAICAlZCAtLSAlZFtsZW49IiVmIl0KAH0KAGNvbG9yICVzACVzIGlzIG5vdCBhIGtub3duIGNvbG9yLgoAZXJyb3IgaW4gY29seGxhdGUoKQoAc29saWQAaW52aXNpYmxlAGJvbGQAc2V0bGluZXdpZHRoAGZpbGxlZAB1bmZpbGxlZAB0YXBlcmVkAGd2cmVuZGVyX3NldF9zdHlsZTogdW5zdXBwb3J0ZWQgc3R5bGUgJXMgLSBpZ25vcmluZwoAZ3ZyZW5kZXIuYwBndnJlbmRlcl91c2Vyc2hhcGUAbmFtZQBuYW1lWzBdAGJvdGgAam9iAGd2bG9hZGltYWdlLmMAZ3Zsb2FkaW1hZ2UAdXMAdXMtPm5hbWUAdXMtPm5hbWVbMF0ATm8gbG9hZGltYWdlIHBsdWdpbiBmb3IgIiVzIgoAUQBMZWZ0AEtQX0xlZnQAUmlnaHQAS1BfUmlnaHQAVXAAS1BfVXAARG93bgBLUF9Eb3duAHBsdXMAS1BfQWRkAG1pbnVzAEtQX1N1YnRyYWN0AEYAZWRnZQB0YWlscG9ydABoZWFkcG9ydABrZXkAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADIAMwA0ADUANgA3ADgAOQAxMAAxMQAxMgAxMwAxNAAxNQAxNgAxNwAxOAAxOQAyMABBZ25vZGVpbmZvX3QAQWdlZGdlaW5mb190AHJvd2cAY29sZwBBZ3JhcGhpbmZvX3QAZGVseCA+PSAwAHBvc19odG1sX3RibABkZWx5ID49IDAAdGFibGUgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIHRhYmxlIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAGNlbGwgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIGNlbGwgc2l6ZSB3aXRoIHVuc3BlY2lmaWVkIHdpZHRoIG9yIGhlaWdodAoATm8gb3IgaW1wcm9wZXIgaW1hZ2UgZmlsZT0iJXMiCgBwZW5jb2xvcgAtPgBmUFEuYwBQUWNoZWNrAEhlYXAgb3ZlcmZsb3cKACUhUFMtQWRvYmUtMi4wCi9ub2RlIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIGZpbGwKfSBkZWYKL2NlbGwgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICAveSBleGNoIGRlZgogIC94IGV4Y2ggZGVmCiAgbmV3cGF0aAogIHggeSBtb3ZldG8KICB4IFkgbGluZXRvCiAgWCBZIGxpbmV0bwogIFggeSBsaW5ldG8KICBjbG9zZXBhdGggc3Ryb2tlCn0gZGVmCgBzaG93cGFnZQoAZmFpbGVkIGF0IG5vZGUgJWRbMF0KAG5wLT5jZWxsc1swXQBtYXplLmMAY2hrU2dyYXBoAGZhaWxlZCBhdCBub2RlICVkWzFdCgBucC0+Y2VsbHNbMV0AZGl0ZW1zAGZpbmRTVmVydAAlJSUlUGFnZTogMSAxCiUlJSVQYWdlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlZiAlZiB0cmFuc2xhdGUKADAgMCAxIHNldHJnYmNvbG9yCgAlZiAlZiAlZiAlZiBub2RlCgAwIDAgMCBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgY2VsbAoAMSAwIDAgc2V0cmdiY29sb3IKAHVuZXhwZWN0ZWQgY2FzZSBpbiBsb2NhdGVfZW5kcG9pbnQKADAAdHJhcGV6b2lkLmMAbG9jYXRlX2VuZHBvaW50AGFkZF9zZWdtZW50OiBlcnJvcgoAbmV3bm9kZTogUXVlcnktdGFibGUgb3ZlcmZsb3cKAG5ld25vZGUAbmV3dHJhcDogVHJhcGV6b2lkLXRhYmxlIG92ZXJmbG93ICVkCgBuZXd0cmFwAGluZGV4LmMAUlRyZWVTZWFyY2gAbi0+bGV2ZWwgPj0gMABSVHJlZUluc2VydABsZXZlbCA+PSAwICYmIGxldmVsIDw9ICgqbiktPmxldmVsAHItPmJvdW5kYXJ5W2ldIDw9IHItPmJvdW5kYXJ5W05VTURJTVMgKyBpXQByICYmIG4gJiYgbmV3AFJUcmVlSW5zZXJ0MgBsZXZlbCA+PSAwICYmIGxldmVsIDw9IG4tPmxldmVsAEZBTFNFAG5vZGUuYwBOb2RlQ292ZXIAciAmJiBuAFBpY2tCcmFuY2gAQWRkQnJhbmNoAGkgPCBOT0RFQ0FSRABuZXcAbiAmJiBpID49IDAgJiYgaSA8IE5PREVDQVJEAERpc2NvbkJyYW5jaAByAHJlY3RhbmdsZS5jAFJlY3RBcmVhAHIgJiYgcnIAQ29tYmluZVJlY3QAciAmJiBzAE92ZXJsYXAAbgBzcGxpdC5xLmMAU3BsaXROb2RlAGIAbi0+Y291bnQgKyAoKm5uKS0+Y291bnQgPT0gTk9ERUNBUkQgKyAxAExvYWROb2RlcwBxAHAAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnBhcnRpdGlvbltpXSA9PSAwIHx8IHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMQBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMF0gKyBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPT0gTk9ERUNBUkQgKyAxAE1ldGhvZFplcm8AcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdID49IHJ0cC0+TWluRmlsbCAmJiBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPj0gcnRwLT5NaW5GaWxsACFydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0udGFrZW5baV0AQ2xhc3NpZnkAR2V0QnJhbmNoZXMAbi0+YnJhbmNoW2ldLmNoaWxkAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoAgICAgICEAxZAQAfUAgDBxITFFcWFwgLaQwfCgUMDikRKw8tEC8wIDIGNDUbHB0eCwwhIiMkJSYnKAwYGRcEChscGiAqCiEiIyQlJicoDAoOUwosWDFYWFhYWFgMGxwPLlgzISIjJCUmJygbHP9T//8hIiMkJSYnKAz//wX///8JFP//////DBsc/xAVFiEiIyQlJicoGxz/////ISIjJCUmJygM/xITFBEWF////////wwbHP///xIhIiMkJSYnKBsc/////yEiIyQlJicoDP///////xP///////8MGxz/////ISIjJCUmJygbHP////8hIiMkJSYnKBITFBUWFxgZ////////////IyQlJicbEhMUFhciNmgBHzhWISACGxsbXhsbNzlwNtLCTwQ8IkciPyJEIiJYImUiIgUGX2A5BAcICQoLDA0OBGZnXWptBQZvWDtxBwgJCgsMDQ4Ecjxbcz5hRhsSExQWFwQFBj9BYkkHCAkKCwwNDgUGAFwAAAcICQoLDA0OBAAATwAAAFNCAAAAAAAEBQYARFRVBwgJCgsMDQ4FBgAAAAAHCAkKCwwNDgQAKiwuRzEzAAAAAAAABAUGAAAASgcICQoLDA0OBQYAAAAABwgJCgsMDQ4EAAAAAAAATAAAAAAAAAQFBgAAAAAHCAkKCwwNDgUGAAAAAAcICQoLDA0OKSstLzAyNDUAAAAAAAAAAAApKy0wMgAELwAkIwASFBYaHB4gGAAFBy8vLwAvLwAACQgoAAABIgIGAAAAAAAIAAAAAAAAAAAAAAAAACUDJhMKKRULKhcOLRkRGwwrHQ0sHw8hEAAzADAAL0MAMQAvADUuJ0IyQQA6OAA8NEUANgBAAAA/AEQ3Ozk9AAIDAwEBAgEBAQMDAwMDAwMDAQEBAQEBAQEBAQEBAQEBAQIBAQIABgEDAwMDAwEAAQIDAAQBAgMABAAEAAQAAwIBAgECAVN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGJlZm9yZSA8VEFCTEU+AFN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGFmdGVyIDwvVEFCTEU+AAApKioqKywsLS0tLS0tLS0tLS4vMDEyMzQ1Njc4OTo7PD0+Pj8/QUBCQkJCQkJDQ0REREZFR0dHSUhKSEtITEhNTU5OT0//Aw8QESM6JD0lQBVDJkUnSBhLGU0aKBxOHR5QUVJZWmxrbmNkV2ltZW1vcnkgZXhoYXVzdGVkACVzIGluIGxpbmUgJWQgCgAuLi4gJXMgLi4uCgBUQUJMRQBUUgBUSABURABIVE1MAEZPTlQAQgBVAE8ASQBTVVAAU1VCAFMAQlIASFIAVlIASU1HAFVua25vd24gSFRNTCBlbGVtZW50IDwlcz4gb24gbGluZSAlZCAKADxJTUc+AElsbGVnYWwgYXR0cmlidXRlICVzIGluICVzIC0gaWdub3JlZAoAc2NhbGUAc3JjADxCUj4AYWxpZ24ASUdIVABFRlQARU5URVIASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gLSBpZ25vcmVkCgA8Rk9OVD4AY29sb3IAZmFjZQBwb2ludC1zaXplAFBPSU5ULVNJWkUASW1wcm9wZXIgJXMgdmFsdWUgJXMgLSBpZ25vcmVkACVzIHZhbHVlICVzID4gJWQgLSB0b28gbGFyZ2UgLSBpZ25vcmVkACVzIHZhbHVlICVzIDwgJWQgLSB0b28gc21hbGwgLSBpZ25vcmVkADxURD4AYmFsaWduAGJnY29sb3IAYm9yZGVyAGNlbGxwYWRkaW5nAGNlbGxzcGFjaW5nAGNvbHNwYW4AZml4ZWRzaXplAGdyYWRpZW50YW5nbGUAaGVpZ2h0AGhyZWYAaWQAcG9ydAByb3dzcGFuAHNpZGVzAHN0eWxlAHRhcmdldAB0aXRsZQB0b29sdGlwAHZhbGlnbgB3aWR0aABXSURUSABPVFRPTQBPUABJRERMRQBJbGxlZ2FsIHZhbHVlICVzIGZvciBWQUxJR04gLSBpZ25vcmVkCgAgLABPVU5ERUQAQURJQUwASWxsZWdhbCB2YWx1ZSAlcyBmb3IgU1RZTEUgLSBpZ25vcmVkCgBTT0xJRABJTlZJU0lCTEUASU5WSVMARE9UVEVEAERBU0hFRABVbnJlY29nbml6ZWQgY2hhcmFjdGVyICclYycgKCVkKSBpbiBzaWRlcyBhdHRyaWJ1dGUKAFJPV1NQQU4AUk9XU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAEhFSUdIVABHUkFESUVOVEFOR0xFAFJVRQBBTFNFAElsbGVnYWwgdmFsdWUgJXMgZm9yIEZJWEVEU0laRSAtIGlnbm9yZWQKAENPTFNQQU4AQ09MU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAENFTExTUEFDSU5HAENFTExQQURESU5HAEJPUkRFUgBJbGxlZ2FsIHZhbHVlICVzIGZvciBCQUxJR04gaW4gVEQgLSBpZ25vcmVkCgBFWFQASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gaW4gVEQgLSBpZ25vcmVkCgA8VEFCTEU+AGNlbGxib3JkZXIAY29sdW1ucwByb3dzAFVua25vd24gdmFsdWUgJXMgZm9yIFJPV1MgLSBpZ25vcmVkCgBVbmtub3duIHZhbHVlICVzIGZvciBDT0xVTU5TIC0gaWdub3JlZAoAQ0VMTFNCT1JERVIAPEhUTUw+ADwvSFRNTD4ALS0ATGFiZWwgY2xvc2VkIGJlZm9yZSBlbmQgb2YgSFRNTCBlbGVtZW50CgBVbmNsb3NlZCBjb21tZW50CgBqID09IDAAY3Z0LmMAUG9ic3BhdGgAcm91dGUuYwBsaWJwYXRoLyVzOiVkOiAlcwoAc2hvcnRlc3QuYwBzb3VyY2UgcG9pbnQgbm90IGluIGFueSB0cmlhbmdsZQBkZXN0aW5hdGlvbiBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGNhbm5vdCBmaW5kIHRyaWFuZ2xlIHBhdGgAY2Fubm90IG1hbGxvYyBvcHMAY2Fubm90IHJlYWxsb2Mgb3BzAHRyaWFuZ3VsYXRpb24gZmFpbGVkAGNhbm5vdCBtYWxsb2MgdHJpcwBjYW5ub3QgcmVhbGxvYyB0cmlzAGNhbm5vdCBtYWxsb2MgZHEucG5scwBjYW5ub3QgcmVhbGxvYyBkcS5wbmxzAGNhbm5vdCBtYWxsb2MgcG5scwBjYW5ub3QgbWFsbG9jIHBubHBzAGNhbm5vdCByZWFsbG9jIHBubHMAY2Fubm90IHJlYWxsb2MgcG5scHMAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUWQBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAE5PVEFUSU9OKAAoAHwAaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAGh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvAHhtbD1odHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UAL2Rldi91cmFuZG9tAGZhbGxiYWNrKDQpAGdldHRpbWVvZmRheV9yZXMgPT0gMAB4bWxwYXJzZS5jAGdhdGhlcl90aW1lX2VudHJvcHkARVhQQVRfRU5UUk9QWV9ERUJVRwAxAEVudHJvcHk6ICVzIC0tPiAweCUwKmx4ICglbHUgYnl0ZXMpCgBpbnZhbGlkIGFyZ3VtZW50AHByZWZpeCBtdXN0IG5vdCBiZSBib3VuZCB0byBvbmUgb2YgdGhlIHJlc2VydmVkIG5hbWVzcGFjZSBuYW1lcwByZXNlcnZlZCBwcmVmaXggKHhtbG5zKSBtdXN0IG5vdCBiZSBkZWNsYXJlZCBvciB1bmRlY2xhcmVkAHJlc2VydmVkIHByZWZpeCAoeG1sKSBtdXN0IG5vdCBiZSB1bmRlY2xhcmVkIG9yIGJvdW5kIHRvIGFub3RoZXIgbmFtZXNwYWNlIG5hbWUAY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eQBwYXJzaW5nIGZpbmlzaGVkAHBhcnNpbmcgYWJvcnRlZABwYXJzZXIgbm90IHN1c3BlbmRlZABwYXJzZXIgc3VzcGVuZGVkAGlsbGVnYWwgY2hhcmFjdGVyKHMpIGluIHB1YmxpYyBpZAB0ZXh0IGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZABYTUwgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkAGluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkAbXVzdCBub3QgdW5kZWNsYXJlIHByZWZpeAB1bmJvdW5kIHByZWZpeABjYW5ub3QgY2hhbmdlIHNldHRpbmcgb25jZSBwYXJzaW5nIGhhcyBiZWd1bgByZXF1ZXN0ZWQgZmVhdHVyZSByZXF1aXJlcyBYTUxfRFREIHN1cHBvcnQgaW4gRXhwYXQAZW50aXR5IGRlY2xhcmVkIGluIHBhcmFtZXRlciBlbnRpdHkAdW5leHBlY3RlZCBwYXJzZXIgc3RhdGUgLSBwbGVhc2Ugc2VuZCBhIGJ1ZyByZXBvcnQAZG9jdW1lbnQgaXMgbm90IHN0YW5kYWxvbmUAZXJyb3IgaW4gcHJvY2Vzc2luZyBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlAHVuY2xvc2VkIENEQVRBIHNlY3Rpb24AZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvcnJlY3QAdW5rbm93biBlbmNvZGluZwBYTUwgb3IgdGV4dCBkZWNsYXJhdGlvbiBub3QgYXQgc3RhcnQgb2YgZW50aXR5AHJlZmVyZW5jZSB0byBleHRlcm5hbCBlbnRpdHkgaW4gYXR0cmlidXRlAHJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5AHJlZmVyZW5jZSB0byBpbnZhbGlkIGNoYXJhY3RlciBudW1iZXIAYXN5bmNocm9ub3VzIGVudGl0eQByZWN1cnNpdmUgZW50aXR5IHJlZmVyZW5jZQB1bmRlZmluZWQgZW50aXR5AGlsbGVnYWwgcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2UAanVuayBhZnRlciBkb2N1bWVudCBlbGVtZW50AGR1cGxpY2F0ZSBhdHRyaWJ1dGUAbWlzbWF0Y2hlZCB0YWcAcGFydGlhbCBjaGFyYWN0ZXIAdW5jbG9zZWQgdG9rZW4Abm90IHdlbGwtZm9ybWVkIChpbnZhbGlkIHRva2VuKQBubyBlbGVtZW50IGZvdW5kAHN5bnRheCBlcnJvcgBvdXQgb2YgbWVtb3J5AAIDBAUGBwgAAAkKCwwNDg8QEQAAAAAAAAAAAAAAABITABQAAAAAAAAAAAAAAAAAABUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAxobHB0eAAAfICEiIyQlEBEAAAAAAAAAAAAAAAASEyYUAAAAAAAAAAAAAAAAAAAnFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0RBVEFbVVMtQVNDSUkAVVRGLTE2AFVURi0xNkJFAFVURi0xNkxFAHZlcnNpb24AZW5jb2RpbmcAc3RhbmRhbG9uZQBET0NUWVBFAFNZU1RFTQBQVUJMSUMARU5USVRZAEFUVExJU1QARUxFTUVOVABOT1RBVElPTgBJTkNMVURFAElHTk9SRQBFTVBUWQBBTlkAUENEQVRBAElNUExJRUQAUkVRVUlSRUQARklYRUQAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUSUVTAE5NVE9LRU4ATk1UT0tFTlMATkRBVEEAVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAAASEBMUFRYXGBkaGxwdHh8gIRAQIiMQJCUmJygpKisQLC0uES8wERExERERMjM0NTY3ODkREBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDoQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDsQPD0+P0BBEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEMQEEQQRUZHEEgQSRAQEBBKS0xNEBBOEE9QEBAQEFEQEBAQEBAQEBAQEBAQUhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFRVVlcQEFhZEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFoQW1xdXl9gYWIQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAA/v8A/AEAAPgBAAB4AAAAAP/73/sAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwA/P/gr//////////////f//////8gQLAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAA/AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAhv7///8AQEkAAAAAABgA3/8AyAAAAAAAAAABADwAAAAAAAAAAAAAAAAQ4AEeAGD/vwAAAAAAAP8HAAAAAAAAAAAAAAAAAAAAAAAAAPjPAwAAAAMAIP9/AAAATgAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAABAAIB4AMAABAAAAAAAAAAAQACAAAAAA/A8AAAAAAAAAEAAgAAAAAAAAAAAAAAAAABAAIAAAAAADAAAAAAAAAAAQACAAAAAA/QAAAAAAAAAAAAAgAAAAAP8HAAAAAAAAAAAAIAAAAAAA/wAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAgAAAAAD8CAAAAAAAAAAAABAAAAAAQAAAAAAAAgACAwN8ADAAAAAAAAAAAAAAAAAAfAAAAAAAA/v///wD8//8AAAAAAAAAAPwAAAAAAADA/9//BwAAAAAAAAAAAACABgD8AAAYPgAAgL8AzAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAYP///x8AAP8DAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAQAAGAAAAAAAAAAAADgAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAwAAD+fy8AAP8D/38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjEAAAAAAAAAAAAAAAAAAAAAAADE/////wAAAMAAAAAAAAAAAAEA4J8AAAAAfz8AAAAAAAAAAAAAAAAAAAAAEAAQAAD8////HwAAAAAADAAAAAAAAEAADPAAAAAAAADA+AAAAAAAAADAAAAAAAAAAAD/AP///yEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9/AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA+AA4ADgAGCA+P////z//////38f/PF//38AAP///wMAAP////8BAHsD0MGvQgAMH7z//wAAAAAAAv//////////////////////////////////////////////////////////DwD/////fwAAAP8HAAD/////////////PwAAAAAAAPz///7/////////////////////////////////////////////////////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IcD/gAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAA//////9//w8AAAAAAAAAAP////v/////////////DwD//////////////////////////////////z8AAAD/Dx7///8B/MHgAAAAAAAAAAAAAAAeAQAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA/////w8AAAD///9/////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAA////////fwAAAAAAAMAA4AAAAAAAAAAAAAAAgA9wAAAAAAAAAAAAAAAAAAD/AP//fwADAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAARAgAAAAP/wMAAAAAAADwAAAAAAAAAAAAEMAAAP//AwcAAAAAAPgAAAAACIAAAAAAAAAAAAAACAD/PwDAAAAAAAAAAAAAAAAAAAAA8AAAgAsAAAAAAAAAgAIAAMAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAPz/AwAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMP///wN/AP/////3/38PAAAAAAAAAAAAAAAAAAAAAACA/v8A/AEAAPgBAAD4PwAAAAAAAAAAAAAAAAAAAH9/ADCH//////+P/wAAAAAAAOD//wf/DwAAAAAAAP//////PwAAAAAPAAAAAAAAAAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCPAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/wD/AQAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD/8/z8AAAADAAAAAAAA/gMAAAAAAAAAAAAAAAAAGAAPAAAAAAAAAAAAAAAAAAAA4QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABwAAAAAAAAAAAAAAAAD///////////////////////////////////////8/AP////9//v///////////////////////////z8AAAAA//////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////fwD//wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAgAAAAIAAAgAAAAIAAAgAAAAIAAAAACAAAAAgAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP//////D////////////////w8A/3/+f/7//v8AAAAA/wf///9//////////w///////wcAAAAAAAAAAMD///8HAP//////B/8BAwAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAL///////////x///w8A/////98HAAD//wEA/////////3/9/////////////////////////////x7/////////Pw8A////AAAAAAAAAAAAAAAAAAAAAAAA+P//////////4f8AAAAAAAD//////////z8AAAAAAAAA//////////////////8PAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFABIRExQVFhcYGRobHB0eHyAhESIjJBElJicoKSorLBEtLi8QEDAQEBAQEBAQMTIzEDQ1EBARERERERERERERERERERERERERERERERERNhERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETcREREROBE5Ojs8PT4RERERERERERERERERERERERERERERERERERERERERERERERERERERERERPxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFAQRFCQ0RFRkdISRAQEEpLTE1OEBAQT1AQEBAQURAQEBAQEBAQEBEREVJTEBAQEBAQEBAQEBARERERVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBERVRAQEBBWEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFcQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFhZWlsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQXBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAA/v//B/7//wcAAAAAAAQgBP//f////3//////////////////////////////////w/8DAB9QAAAAAAAAAAAAACAAAAAAAN88QNf///v///////////+///////////////////////8D/P////////////////////////8A/v///38C/v////8AAAAAAP+/tgD///8HBwAAAP8H//////////7/w////////////////+8f/uH/nwAA////////AOD///////////////8DAP//////BzAE/////P8fAAD///8BAAAAAAAAAAD9HwAAAAAAAPAD/3//////////7//f4f/P//7+7p/5///9xeOfWYCwz/8DAO6H+f///W3DhxkCXsD/PwDuv/v///3t478bAQDP/wAA7p/5///97eOfGcCwz/8CAOzHPdYYx//Dxx2BAMD/AADu3/3///3v498dYAPP/wAA7N/9///97+PfHWBAz/8GAOzf/f/////n312AAM//APzs/3/8///7L3+AX/8AAAwA/v////9//wc/IP8DAAAAAJYl8P6u7P87XyD/8wAAAAABAAAA/wMAAP/+////H/7/A////v///x8AAAAAAAAAAP///////3/5/wP//+fB//9/QP8z/////78g///////3////////////PX89//////89/////z1/Pf9//////////z3//////////4cAAAAA//8AAP////////////8fAP7//////////////////////////////////////////////////////////5////7//wf////////////HAQD/3w8A//8PAP//DwD/3w0A////////z///AYAQ/wMAAAAA/wP//////////////wD//////wf//////////z8A////H/8P/wHA/////z8fAP//////D////wP/AwAAAAD///8P/////////3/+/x8A/wP/A4AAAAAAAAAAAAAAAP///////+//7w//AwAAAAD///////P///////+//wMA////////PwD/4///////PwAAAAAAAAAAAAAAAADebwD///////////////////////////////8AAAAAAAAAAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8+UL3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA////////AwAA//////9///////9//////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39//////wAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP4DPh/+////////////f+D+//////////////fg/////z/+/////////////38AAP///wcAAAAAAAD///////////////////////////////8/AAAAAAAAAAAA/////////////////////////////////x8AAAAAAAD//////////////////////x8AAAAAAAAAAP//////P/8f////DwAA//////9/8I////+A/////////////wAAAACA//z///////////////95DwD/BwAAAAAAAAAAAP+79////wAAAP///////w8A//////////8PAP8DAAD8CP//////B/////8HAP///x/////////3/wCA/wMAAAAA////////fwD/P/8D//9/BP////////9/BQAAOP//PAB+fn4Af38AAAAAAAAAAAAAAAAAAAAAAAD//////wf/A///////////////////////////DwD//3/4//////8P/////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj///////////////8/AAD///////////z///////8AAAAAAP8PAAAAAAAAAAAAAAAAAADf/////////////////////x8AAP8D/v//B/7//wfA/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP///38AAP///wcAAAAAAAD///8//////w//PgAAAAAA/////////////////////////z//AwAAAAAAAAAAAAA//f////+/kf//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAb/Dv/v//DwAAAAAA////HwAAAAAAAAAAAAAAAAAAAAD///////8/AP//PwD//wcAAAAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8/AAAAwP8AAPz///////8BAAD///8B/wP////////H/wAAAAAAAAAA//////////8eAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8/AP8DAAAAAAAA/////////////////38AAAAAAAAAAAAAAAAAAAAAAAD///////////////8HAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////x8A//////9/AAD4/wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98/////////v////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAExDX0FMTABMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwBMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AYWxudW0AYWxwaGEAYmxhbmsAY250cmwAZGlnaXQAZ3JhcGgAbG93ZXIAcHJpbnQAcHVuY3QAc3BhY2UAdXBwZXIAeGRpZ2l0AEMuVVRGLTgAAAAAAAAAAABDAC9wcm9jL3NlbGYvZmQvAHJ3YQBpbmZpbml0eQBuYW4ACQAKAA0ADAAHABsAW1s6YWxudW06XV9dAFteWzphbG51bTpdX10AW1s6c3BhY2U6XV0AW15bOnNwYWNlOl1dAFtbOmRpZ2l0Ol1dAFteWzpkaWdpdDpdXQAvdG1wL3RtcGZpbGVfWFhYWFhYAHcr\";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+Pointer_stringify(condition)+\", at: \"+[filename?Pointer_stringify(filename):\"unknown filename\",line,func?Pointer_stringify(func):\"unknown function\"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!==\"undefined\"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self[\"performance\"]&&self[\"performance\"][\"now\"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can   access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))}),join2:(function(l,r){return PATH.normalize(l+\"/\"+r)}),resolve:(function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p){return!!p})),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!=\"win32\";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync(\"/dev/stdin\",\"r\");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf(\"EOF\")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:\"remote\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}catch(e){return callback(e)}}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\"node type not supported\"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true})}else{return callback(new Error(\"node type not supported\"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process[\"binding\"](\"constants\");if(flags[\"fs\"]){flags=flags[\"fs\"]}NODEFS.flagsForNodeMap={\"1024\":flags[\"O_APPEND\"],\"64\":flags[\"O_CREAT\"],\"128\":flags[\"O_EXCL\"],\"0\":flags[\"O_RDONLY\"],\"2\":flags[\"O_RDWR\"],\"4096\":flags[\"O_SYNC\"],\"512\":flags[\"O_TRUNC\"],\"1\":flags[\"O_WRONLY\"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,\"/\",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,\"\",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split(\"/\");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join(\"/\");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split(\"/\");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts[\"files\"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts[\"blobs\"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj[\"name\"]),base(obj[\"name\"]),WORKERFS.FILE_MODE,0,obj[\"data\"])}));(mount.opts[\"packages\"]||[]).forEach((function(pack){pack[\"metadata\"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack[\"blob\"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),false);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags}),flagsToPermissionString:(function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,\"wx\")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev===\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,\"w\");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate[\"willMovePath\"]){FS.trackingDelegate[\"willMovePath\"](old_path,new_path)}}catch(e){console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate[\"onMovePath\"])FS.trackingDelegate[\"onMovePath\"](old_path,new_path)}catch(e){console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,\"w\");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===\"\"){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags===\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode===\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path===\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module[\"printErr\"](\"read file: \"+path)}}try{if(FS.trackingDelegate[\"onOpenFile\"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate[\"onOpenFile\"](path,trackingFlags)}}catch(e){console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \"+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate[\"onWriteToFile\"])FS.trackingDelegate[\"onWriteToFile\"](stream.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||\"r\";opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||\"w\";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data===\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,\"x\");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")}),createDefaultDevices:(function(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device;if(typeof crypto!==\"undefined\"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require(\"crypto\")[\"randomBytes\"](1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")}),createSpecialDirectories:(function(){FS.mkdir(\"/proc\");FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:(function(){var node=FS.createNode(\"/proc/self\",\"fd\",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},\"/proc/self/fd\")}),createStandardStreams:(function(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",\"r\");assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");var stdout=FS.open(\"/dev/stdout\",\"w\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");var stderr=FS.open(\"/dev/stderr\",\"w\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true})};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]==\"/\")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent===\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data===\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,\"w\");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!==\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(Module[\"read\"]){try{obj.contents=intArrayFromString(Module[\"read\"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module[\"preloadPlugins\"].forEach((function(plugin){if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return\"EM_FS_\"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!==\"/\"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module[\"exit\"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV[\"USER\"]=ENV[\"LOGNAME\"]=\"web_user\";ENV[\"PATH\"]=\"/\";ENV[\"PWD\"]=\"/\";ENV[\"HOME\"]=\"/home/web_user\";ENV[\"LANG\"]=\"C.UTF-8\";ENV[\"_\"]=Module[\"thisProgram\"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]===\"string\"){var line=key+\"=\"+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f32=Math_abs;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f32=Math_sqrt;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort(\"trap!\")}function _longjmp(env,value){Module[\"setThrew\"](env,value||1);throw\"longjmp\"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===\"\"||name.indexOf(\"=\")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var NODEJS_PATH=require(\"path\");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\")  at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:(function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output});function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE===\"boolean\"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,\"base64\")}catch(_){buf=new Buffer(s,\"base64\")}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error(\"Converting base64 string to bytes failed.\")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}function invoke_d(index){try{return Module[\"dynCall_d\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_dddd(index,a1,a2,a3){try{return Module[\"dynCall_dddd\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_di(index,a1){try{return Module[\"dynCall_di\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_i(index){try{return Module[\"dynCall_i\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iii(index,a1,a2){try{return Module[\"dynCall_iii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiidd(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiidd\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module[\"dynCall_iiiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{return Module[\"dynCall_iiiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module[\"dynCall_viii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiddi\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){try{Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_d\":invoke_d,\"invoke_dddd\":invoke_dddd,\"invoke_di\":invoke_di,\"invoke_i\":invoke_i,\"invoke_ii\":invoke_ii,\"invoke_iii\":invoke_iii,\"invoke_iiidd\":invoke_iiidd,\"invoke_iiii\":invoke_iiii,\"invoke_iiiii\":invoke_iiiii,\"invoke_iiiiii\":invoke_iiiiii,\"invoke_iiiiiii\":invoke_iiiiiii,\"invoke_iiiiiiiiiii\":invoke_iiiiiiiiiii,\"invoke_v\":invoke_v,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_viii\":invoke_viii,\"invoke_viiiddi\":invoke_viiiddi,\"invoke_viiii\":invoke_viiii,\"invoke_viiiii\":invoke_viiiii,\"invoke_viiiiii\":invoke_viiiiii,\"invoke_viiiiiiiii\":invoke_viiiiiiiii,\"___assert_fail\":___assert_fail,\"___buildEnvironment\":___buildEnvironment,\"___clock_gettime\":___clock_gettime,\"___lock\":___lock,\"___map_file\":___map_file,\"___setErrNo\":___setErrNo,\"___syscall10\":___syscall10,\"___syscall140\":___syscall140,\"___syscall145\":___syscall145,\"___syscall146\":___syscall146,\"___syscall192\":___syscall192,\"___syscall195\":___syscall195,\"___syscall197\":___syscall197,\"___syscall20\":___syscall20,\"___syscall221\":___syscall221,\"___syscall3\":___syscall3,\"___syscall33\":___syscall33,\"___syscall5\":___syscall5,\"___syscall54\":___syscall54,\"___syscall6\":___syscall6,\"___syscall91\":___syscall91,\"___unlock\":___unlock,\"__exit\":__exit,\"_clock_gettime\":_clock_gettime,\"_emscripten_asm_const_iii\":_emscripten_asm_const_iii,\"_emscripten_get_now\":_emscripten_get_now,\"_emscripten_get_now_is_monotonic\":_emscripten_get_now_is_monotonic,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"_exit\":_exit,\"_getenv\":_getenv,\"_gettimeofday\":_gettimeofday,\"_llvm_ceil_f64\":_llvm_ceil_f64,\"_llvm_fabs_f32\":_llvm_fabs_f32,\"_llvm_fabs_f64\":_llvm_fabs_f64,\"_llvm_floor_f64\":_llvm_floor_f64,\"_llvm_pow_f64\":_llvm_pow_f64,\"_llvm_sqrt_f32\":_llvm_sqrt_f32,\"_llvm_sqrt_f64\":_llvm_sqrt_f64,\"_llvm_trap\":_llvm_trap,\"_longjmp\":_longjmp,\"_setenv\":_setenv,\"_time\":_time,\"_times\":_times,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX,\"cttz_i8\":cttz_i8};// EMSCRIPTEN_START_ASM\n  var asm=(/** @suppress {uselessCode} */ function(global,env,buffer) {\n  \"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0;var z=0;var A=global.Math.floor;var B=global.Math.abs;var C=global.Math.sqrt;var D=global.Math.pow;var E=global.Math.cos;var F=global.Math.sin;var G=global.Math.tan;var H=global.Math.acos;var I=global.Math.asin;var J=global.Math.atan;var K=global.Math.atan2;var L=global.Math.exp;var M=global.Math.log;var N=global.Math.ceil;var O=global.Math.imul;var P=global.Math.min;var Q=global.Math.max;var R=global.Math.clz32;var S=env.abort;var T=env.assert;var U=env.enlargeMemory;var V=env.getTotalMemory;var W=env.abortOnCannotGrowMemory;var X=env.invoke_d;var Y=env.invoke_dddd;var Z=env.invoke_di;var _=env.invoke_i;var $=env.invoke_ii;var aa=env.invoke_iii;var ba=env.invoke_iiidd;var ca=env.invoke_iiii;var da=env.invoke_iiiii;var ea=env.invoke_iiiiii;var fa=env.invoke_iiiiiii;var ga=env.invoke_iiiiiiiiiii;var ha=env.invoke_v;var ia=env.invoke_vi;var ja=env.invoke_vii;var ka=env.invoke_viii;var la=env.invoke_viiiddi;var ma=env.invoke_viiii;var na=env.invoke_viiiii;var oa=env.invoke_viiiiii;var pa=env.invoke_viiiiiiiii;var qa=env.___assert_fail;var ra=env.___buildEnvironment;var sa=env.___clock_gettime;var ta=env.___lock;var ua=env.___map_file;var va=env.___setErrNo;var wa=env.___syscall10;var xa=env.___syscall140;var ya=env.___syscall145;var za=env.___syscall146;var Aa=env.___syscall192;var Ba=env.___syscall195;var Ca=env.___syscall197;var Da=env.___syscall20;var Ea=env.___syscall221;var Fa=env.___syscall3;var Ga=env.___syscall33;var Ha=env.___syscall5;var Ia=env.___syscall54;var Ja=env.___syscall6;var Ka=env.___syscall91;var La=env.___unlock;var Ma=env.__exit;var Na=env._clock_gettime;var Oa=env._emscripten_asm_const_iii;var Pa=env._emscripten_get_now;var Qa=env._emscripten_get_now_is_monotonic;var Ra=env._emscripten_memcpy_big;var Sa=env._exit;var Ta=env._getenv;var Ua=env._gettimeofday;var Va=env._llvm_ceil_f64;var Wa=env._llvm_fabs_f32;var Xa=env._llvm_fabs_f64;var Ya=env._llvm_floor_f64;var Za=env._llvm_pow_f64;var _a=env._llvm_sqrt_f32;var $a=env._llvm_sqrt_f64;var ab=env._llvm_trap;var bb=env._longjmp;var cb=env._setenv;var db=env._time;var eb=env._times;var fb=0.0;\n  // EMSCRIPTEN_START_FUNCS\n  function gP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+176|0;k=n+8|0;j=n;h=n+40|0;if(!b)qa(108200,108204,52,108218);if(!d)qa(108230,108204,53,108218);i=c[d+8>>2]|0;if(!i)qa(108233,108204,54,108218);if(!(a[i>>0]|0))qa(108242,108204,55,108218);b0(h,c[d+28>>2]|0)|0;i=h+(W_(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;p1(h,g)|0;if((hP(b,h)|0)==999){c[j>>2]=h;Pw(0,108254,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];xb[m&31](b,d,k,f)}l=n;return}function hP(a,b){a=a|0;b=b|0;b=wC(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function iP(a){a=a|0;return 1}function jP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function kP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function lP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function mP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function nP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function oP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function pP(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)<g/+(e|0);h[b+352>>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function qP(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;GP(b,d)}dF(b,d);a[b+540>>0]=1;return}function rP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);FP(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function sP(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function tP(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];zP(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function uP(a,b,c){a=a|0;b=b|0;c=c|0;return}function vP(a){a=a|0;return}function wP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=L1(d,135739)|0;if(d|0){i=TB(d,0)|0;s1(d)|0;f=5}}else{i=TB(c[15621]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){tb[h&127](d);d=c[g>>2]|0}gH(d);$x(c[g>>2]|0)|0}Fz(i,0,134401,280,1);Fz(i,1,134365,304,1);Fz(i,2,134378,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((_C(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function xP(a,b){a=a|0;b=b|0;a=c[a>>2]|0;_C(a,c[a+168>>2]|0,b)|0;return}function yP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}aD(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function zP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];AP(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=BP(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){CP(b);c[e>>2]=d;DP(b);a[b+537>>0]=1}l=f;return}function AP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function BP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=Sy(a)|0;a:while(1){if(!e){e=9;break}d=Ex(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((WM(d,f)|0)<<24>>24){e=6;break a}d=Gx(a,d)|0}e=Ty(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=Uy(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((TM(d,f)|0)<<24>>24){e=12;break}d=Vy(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=EP(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function CP(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function DP(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){D_(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=nx(d,0,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=nx(ez(d)|0,1,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=nx(ez(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}default:break a}while(0);return}function EP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=EP(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function FP(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){D_(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(pz(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;GP(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;HP(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;IP(b,d);break b}default:break b}while(0);return}function GP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((fz(b)|0)==(b|0))if(!(ey(b)|0)){rC(d,0,108412);break}else{rC(d,0,108404);break}else rC(d,0,108418);while(0);rC(d,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=sx(b,0,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e+1|0,yx(b,d)|0);rC(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=nx(b,0,137973,0)|0;if(!d){d=nx(b,0,108395,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function HP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;rC(f,0,108399);rC(f,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;g=fz(ez(b)|0)|0;e=2;d=0;while(1){d=sx(g,1,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e|1,yx(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=nx(ez(b)|0,1,137973,0)|0;if(!d){d=nx(ez(b)|0,1,108395,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function IP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;rC(h,0,108368);k=b+48|0;rC(h,1,ry(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(ey(ez(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;rC(h,3,k?134656:138665);k=b+-48|0;rC(h,4,ry(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=fz(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=sx(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(b$(f,108373)|0)){l=5;break}if(!(b$(f,108382)|0)){l=7;break}if(b$(f,108391)|0)break;rC(h,6,yx(b,d)|0)}if((l|0)==5){l=0;rC(h,2,yx(b,d)|0)}else if((l|0)==7){l=0;rC(h,5,yx(b,d)|0)}rC(i,g,c[e>>2]|0);rC(i,g+1|0,yx(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,137973,0)|0;if(!d){d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,108395,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function JP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=KP(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;uC(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function KP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=vH(12)|0;if(!b)b=0;else b=n1(b)|0;c[e+4>>2]=b;c[e+8>>2]=n1(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function LP(b,c){b=b|0;c=c|0;MP(b);a[b+44>>0]=0;NP(b)|0;AL(b)|0;return}function MP(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?P0(e,108427)|0:0)JP(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function NP(a){a=a|0;var b=0;b=wC(a,2,108440)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function OP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=lb[e&127](b,d)|0;else a=0;return a|0}function PP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function QP(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (RP(~~(d>b?d:b)>>>0)|0)+1|0}function RP(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function SP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=TP(b,d,e,f,g)|0;e=UP(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){VP(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}WP(p)}l=r;return e|0}function TP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=uH(28)|0;j=Cw(25808,c[4558]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=CS()|0;c[g+24>>2]=j;if(!j){E1(108658,14,1,c[15686]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{E1(108658,14,1,c[15686]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)yw(a)|0;a=c[g+24>>2]|0;if(a|0)ES(a)|0;D_(g);g=0}return g|0}function UP(a){a=a|0;var b=0;b=dQ(a)|0;if((b|0)>=0){eQ(a);fQ(a);b=yw(c[a+20>>2]|0)|0}return b|0}function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)qa(108451,108461,445,108471);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];XP(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];XP(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];XP(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];XP(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}XP(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;XP(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;XP(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;XP(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function WP(a){a=a|0;ES(c[a+24>>2]|0)|0;D_(a);return}function XP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)qa(108451,108461,382,108480);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((YP(e,k)|0)!=0&1)|0}while(0);m=m+1|0}ZP(e,q);m=c[d+24>>2]|0;m=GS(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){_P(j,s);n=+$P(q,s);if(n>0.0){g=g+1|0;i=+aQ(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(ZP(j,s),r=+$P(q,s),r>0.0):0){g=g+1|0;i=+bQ(e,j,q,r,f)+i}}k=c[k>>2]|0}BS(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function YP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}qa(108517,108461,219,108554);return 0}function ZP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function _P(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function $P(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function aQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function bQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function cQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))qa(108496,108461,276,108506);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(i<g){if(k<j){e=0;break}e=k>j?2:1;break}e=k<j;if(i>g){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function dQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=QP(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=uH(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;gQ(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=hQ(d,g)|0;n=c[j>>2]|0;if(!(nb[c[n>>2]&63](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function eQ(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;HS(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}return}function fQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Ew(c[e>>2]|0)|0;d=0;while(1){if(!(Ew(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}nb[c[g>>2]&63](g,a,4096)|0;D_(a);d=d+1|0}if((h|0)==8)qa(108567,108461,616,108570);if((f|0)==(d|0))return;else qa(108582,108461,623,108570)}function gQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)qa(108594,108461,264,108621);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)qa(108631,108461,266,108621);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function hQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function iQ(b){b=b|0;var d=0,e=0,f=0,g=0;d=W_(b)|0;if(d>>>0>=(c[46595]|0)>>>0){d=d+11|0;c[46595]=d;d=xH(c[46596]|0,d)|0;c[46596]=d;if(!d)d=0;else e=4}else{d=c[46596]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(Q$(f)|0)e=(P$(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function jQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((N1(r,108673,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;kQ(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=W_(r)|0;if(b>>>0>=(c[46597]|0)>>>0){b=b+11|0;c[46597]=b;b=xH(c[46598]|0,b)|0;c[46598]=b;if(!b){b=-1;break}}else b=c[46598]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((N1(b,108687,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{mQ(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{mQ(k,j,g,C,D,E);lQ(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{mQ(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{mQ(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=nQ(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[46599]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(b$(u,i)|0)==0:0)){b=e2(v,25844,2491,12,101)|0;c[46599]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function kQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=b<c?b:c;m=b>c?b:c;m=m<a?a:m;i=m-(i>a?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function lQ(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b<c?b:c;h[g>>3]=c;b=+h[f>>3];c=b<c?b:c;h[g>>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function mQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function nQ(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(z$(e,134184,4)|0)==0)):0)?!(d<<24>>24==108|(z$(e,134189,4)|0)==0):0)?(z$(e,134194,8)|0)!=0:0){do if(d<<24>>24==47){d=A$(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(V$(134203,e,4)|0)==0;b=e?d+1|0:b;break}d=c[46600]|0;if((d|0?a[d>>0]|0:0)?V$(134203,d,3)|0:0){b=pQ(d,b+2|0)|0;break}b=b+2|0}}else{d=c[46600]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(V$(134203,d,3)|0)!=0:0)b=pQ(d,b)|0}while(0);b=iQ(b)|0}return b|0}function oQ(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function pQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=W_(a)|0;g=(W_(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[46601]|0)>>>0)d=c[46602]|0;else{c[46601]=d;d=xH(c[46602]|0,d)|0;c[46602]=d}c[e>>2]=a;c[e+4>>2]=b;Y0(d,134208,e)|0;l=f;return c[46602]|0}function qQ(a){a=a|0;c[46600]=a;return}function rQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;sQ(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=tQ(g)|0;l=f;return a|0}function sQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;zQ(a);AQ(a);BQ(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function tQ(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=uH(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+uQ(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);vQ(q,c,n);wQ(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;xQ(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}yQ(q);return q|0}function uQ(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10392:10648;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function vQ(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[46603]=100;e=uH(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function wQ(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;xQ(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function xQ(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[46603]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[46603]=k<<1;j=F_(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function yQ(a){a=a|0;var b=0;b=c[a>>2]|0;wQ(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=F_(c[a>>2]|0,c[a+4>>2]<<4)|0;c[46603]=0;return}function zQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function AQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function BQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e<c?e:c}else c=+E(+e)*l*j+ +h[a>>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e<d?e:d}else d=+E(+b)*l*m+ +h[a+8>>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function CQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;DQ(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+EQ(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+EQ(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=xx(c[(c[j>>2]|0)+8>>2]|0,134215)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=134226;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;YO(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)UO(b,134232);else UO(b,f);GQ(b,e,m);if(a[j>>0]|0)D_(c[i>>2]|0)}else FQ(b,c[d>>2]|0,m);HQ(b);l=n;return}function DQ(a){a=a|0;var d=0,e=0,f=0;d=NE(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function EQ(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function FQ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];TQ(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function GQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)IQ(g,j,183464);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=JQ(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=KQ(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];$O(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];EJ(e,LQ(p,t,o)|0,4,4,j)}D_(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;MQ(e,j,g);i=i+4|0}i=c[r>>2]|0;fP(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}NQ(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];OQ(e,f,t)}}if(s|0)PQ(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],JQ(e,g,f,t,w)|0):0)PQ(e,w);if(c[u>>2]|0)QQ(g,183464);l=y;return}function HQ(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;OE(a);return}function IQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function JQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{Tw(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=n1(QE(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}Ww(t,h)|0;i=c[46604]|0;c[46604]=i+1;c[k>>2]=i;Y0(j,134309,k)|0;Ww(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){Uw(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=PE(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)Xw(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];XE(d,n);PO(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function KQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((uG(b,f,i)|0)<<24>>24)){WO(a,b);b=1}else{WO(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)XO(a,134232,d,h);else XO(a,b,d,h);b=e>>>1&1|2}UO(a,134297);l=j;return b|0}function LQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function MQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=JQ(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=KQ(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];$O(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];EJ(e,LQ(p,r,n)|0,4,4,i)}D_(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];OQ(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{GQ(e,c[i>>2]|0,g);break a}case 3:{SQ(e,c[i>>2]|0,g);break a}default:{FQ(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)PQ(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],JQ(e,g,f,r,s)|0):0)PQ(e,s);l=v;return}function NQ(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?134232:j;WO(f,q);UO(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function OQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;UO(e,(m|0)==0?134232:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))YO(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=134238;k=4}}else{i=134245;k=4}if((k|0)==4)c[j>>2]=i;YO(e,j)}k=f+33|0;fP(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];$O(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];LQ(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{bP(e,j,2);break a}case 3:{bP(e,n+32|0,2);break a}case 1:{bP(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);break a}case 11:{bP(e,j,3);break a}case 5:{bP(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,3);break a}case 13:{bP(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];bP(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,4);break a}case 9:{bP(e,j,2);bP(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);bP(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];EJ(e,LQ(n,o,m)|0,4,4,0)}while(0);l=p;return}function PQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{QO(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){D_(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function QQ(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function RQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];$O(a,g,1);l=f;return}function SQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)qa(134252,134260,623,134272);if(!(a[e>>0]|0))qa(134286,134260,624,134272);else{dP(b,e,g,4,1,f);l=i;return}}function TQ(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];RO(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;UO(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];TO(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}SO(d);l=R;return}function UQ(a){a=a|0;D_(c[a>>2]|0);D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(c[a+16>>2]|0);D_(c[a+12>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);return}function VQ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;D_(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)tb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)D_(d);D_(a)}return}function WQ(a){a=a|0;D_(c[a+32>>2]|0);D_(a);return}function XQ(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{YQ(c[b>>2]|0);break}case 3:{WQ(c[b>>2]|0);break}default:VQ(c[b>>2]|0)}if(d|0)D_(b);return}function YQ(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)yw(c[e>>2]|0)|0;else{b=c[e>>2]|0;D_(c[a+92>>2]|0);D_(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;ZQ(d);b=b+4|0}D_(c[e>>2]|0)}UQ(a);D_(a);return}function ZQ(a){a=a|0;XQ(a+88|0,0);UQ(a);D_(a);return}function _Q(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=$Q(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function $Q(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(O$(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=aR(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function aR(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(O$(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=$Q(c[b+88>>2]|0,d)|0;else b=0;return b|0}function bR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function cR(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=uH((c[d+100>>2]<<2)+4|0)|0;n=uH((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function dR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[55736+(a<<2)>>2]|0;else{c[b>>2]=a;Y0(191879,134313,b)|0;a=191879}l=d;return a|0}function eR(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=az(d,dR(f)|0,1)|0;Az(i,134365,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=uH((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=uH((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=az(b,dR(f)|0,1)|0;Az(i,134365,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=uH((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=uH((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=az(d,dR(e[o>>1]|0)|0,0)|0;o=az(d,dR((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=az(b,dR(e[o>>1]|0)|0,0)|0;o=az(b,dR((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(b,n,o,~~+h[g+72>>3]);f=f+4|0}gR(d);gR(b);return}function fR(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=Rx(a,d,f,0,0)|0;if(!h){i=Rx(a,d,f,0,1)|0;Az(i,134378,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=vH((c[a+184>>2]<<2)+8|0)|0;else a=xH(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=vH((c[a+176>>2]<<2)+8|0)|0;else a=xH(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function gR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(Rx(a,d,h,0,0)|0){d=h;continue}g=Rx(a,d,h,0,1)|0;Az(g,134378,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=vH((c[d+184>>2]<<2)+8|0)|0;else d=xH(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=vH((c[d+176>>2]<<2)+8|0)|0;else d=xH(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function hR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function iR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4621];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=uH((e<<2)+4|0)|0;c[b+96>>2]=uH((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=Xx(134391,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=Xx(134396,g,0)|0;Az(f,134401,280,1)|0;Az(g,134401,280,1)|0;eR(b,f,g);fI(f,2,2147483647)|0;fI(g,2,2147483647)|0;hR(b,f,g);jR(f,g)}else cR(b);l=h;return}function jR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}d=d+164|0}$x(a)|0;$x(b)|0;return}function kR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(pz(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=ez(b)|0;break}case 2:{e=ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=uT(c[d>>2]|0,o,k)|0;if(!f){Tw(n,128,g);a[d+82>>0]=0;e=n1(lR(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=RM(e)|0;else e=OM(e,c[i>>2]|0)|0;D_(c[d>>2]|0);c[d>>2]=e;iH(c[(c[m+16>>2]|0)+144>>2]|0,d);Xw(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?mR(b)|0:0){i=n1(mR(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=nR(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;oR(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];pR(m,n,15)}else{qR(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;oR(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){D_(c[d>>2]|0);c[d>>2]=n1(138529)|0}e=c[o>>2]|0}l=p;return e|0}function lR(b,d){b=b|0;d=d|0;var e=0;a:do switch(pz(b)|0){case 0:{Ww(d,ry(b)|0)|0;break}case 1:{Ww(d,ry(b)|0)|0;break}case 2:{Ww(d,ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;Ww(d,ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(ey(ez(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){Ww(d,138665)|0;break a}else{Ww(d,134656)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function mR(b){b=b|0;var c=0,d=0;c=xx(b,134647)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=xx(b,137741)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function nR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)IQ(j,k,183496);c[g+80>>2]=i;k=uR(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;iR(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}Pw(0,134447,t)|0;k=1;i=0;f=0;break}Pw(0,134481,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)QQ(j,183496);l=w;return k|0}function oR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function pR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=n1(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)qa(134414,134260,1761,134424);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)qa(134437,134260,1764,134424);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];rR(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function qR(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(b$(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=pH(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=nb[c[i>>2]&63](i,I,1)|0;wL(J,d,H);Q=+h[J>>3];o=+h[v>>3];D_(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function rR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=n1(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];pR(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];sR(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;tR(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function sR(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function tR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function uR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=vI()|0;v=yR()|0;i=0;h=0;k=Aw(t)|0;while(1){if(!k)break;j=Aw(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)CR(v,h);k=c[k>>2]|0}h=uH((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Aw(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Aw(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=vR(d,n,f,g)|0|k;l=wR(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(DR(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;yw(t)|0;yw(v)|0;yI(u);return k|0}function vR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=nR(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=xR(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{qR(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}Pw(0,134532,s)|0;n=1;m=0.0;k=0.0;break}Pw(0,134565,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function wR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(DI(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;BI(a,f,g);g=g+1|0}f=f+1|0}return c|0}function xR(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;CC(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];Pw(1,134615,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function yR(){return Cw(55820,c[4555]|0)|0}function zR(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(12)|0;c[d>>2]=c[b>>2];return d|0}function AR(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function BR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function CR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function DR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(nb[c[a>>2]&63](a,e,512)|0)!=0&1;l=d;return b|0}function ER(a){a=a|0;var b=0;if(!(c[46605]|0)){b=uH((a<<2)+4|0)|0;c[46605]=b;c[b>>2]=186424;c[46616]=a}c[46617]=0;return}function FR(){D_(c[46605]|0);c[46605]=0;c[46617]=0;return}function GR(){c[46617]=0;return}function HR(){var a=0,b=0,d=0;b=c[46617]|0;d=c[46605]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)qa(135312,134659,59,134665);else if((a|0)==5)return}function IR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[46605]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function JR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[46617]|0;if((b|0)==(c[46616]|0)){Pw(1,134673,d)|0;a=1}else{b=b+1|0;c[46617]=b;c[(c[46605]|0)+(b<<2)>>2]=a;IR(b);HR();a=0}l=d;return a|0}function KR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[46605]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[46617]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function LR(){var a=0,b=0,d=0,e=0;b=c[46617]|0;if(!b)a=0;else{e=c[46605]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[46617]=b;if(b|0)KR(1);HR()}return a|0}function MR(a,b){a=a|0;b=b|0;c[a>>2]=b;IR(c[a+4>>2]|0);HR();return}function NR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}OR(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){OR(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function OR(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function PR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=uH(28)|0;b=ay(a)|0;s=w+4|0;c[s>>2]=b;b=uH(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=Sy(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n<B?v:m)>>3];h[v>>3]=B;A=+h[(o<A?v:m)+8>>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=Ty(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=ZR(D,f,t,u)|0;if(c[46553]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];QR(r,C,u,f,D)}e=w+8|0;c[e>>2]=uH((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}D_(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=RR(w,u)|0;l=x;return w|0}function QR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[15686]|0;D1(134688,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);g1(i,135118,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;g1(i,135166,r)|0;D1(135183,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;g1(i,135202,j)|0;d=d+1|0}D1(135220,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;g1(i,135239,o)|0;d=d+1|0}D1(135257,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;g1(i,135239,p)|0;D1(135004,i)|0;l=q;return}function RR(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=nO(w<<2|2)|0;z=Cw(55856,c[4555]|0)|0;v=Cw(55892,c[4555]|0)|0;w=uH(w<<7)|0;f=uH(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=uH(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}f=g+(n*72|0)+64|0;d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]<e))break;b=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]<e))break;D=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;TR((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;mO(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;UR((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}yw(z)|0;yw(v)|0;D_(w);VR(y);kO(y);l=A;return y|0}function SR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=nb[c[d>>2]&63](d,e,512)|0;do if(!h){b=oO(b)|0;if(!f)qa(135101,135049,291,135108);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;nb[c[d>>2]&63](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function TR(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function UR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=pO(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=pO(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=pO(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=pO(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=pO(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=pO(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function VR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[15686]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,g1(g,135014,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,g1(g,135066,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)qa(135036,135049,311,135056);else if((b|0)==8)qa(135088,135049,313,135056);else if((b|0)==10){l=j;return}}function WR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e<f)){f=+h[b>>3];e=+h[c>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function XR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e<f)){f=+h[b+8>>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function YR(a){a=a|0;var b=0,d=0;d=a+8|0;D_(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;D_(c[(c[b>>2]|0)+36>>2]|0);D_(c[d>>2]|0);D_(c[b>>2]|0);rO(c[a+16>>2]|0);yw(c[a+20>>2]|0)|0;yw(c[a+24>>2]|0)|0;D_(a);return}function ZR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=vH(i*56|0)|0;i=uH(i<<2)|0;g=f*5|1;j=vH(g*72|0)|0;m=g<<5;k=uH(m)|0;m=uH(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,0);i2(173);$R(f,i);jS(f,o,i,g,j)|0;n=aS(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,1);$R(f,i);jS(f,o,i,g,j)|0;f=aS(f,o,j,1,m)|0;g=uH(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((bS(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=xH(g,a<<5)|0;D_(o);D_(i);D_(j);D_(k);D_(m);c[d>>2]=a;l=p;return q|0}function _R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];hS(h,f,1,i);d=iS(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];hS(h,f,0,i);d=iS(e,d,i)|0;g=g+1|0}l=j;return}function $R(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+k2()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function aS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=uH(j<<2)|0;c[46618]=uH(j<<4)|0;c[46619]=uH((a*56|0)+56|0)|0;j=uH(a<<2)|0;c[46620]=j;k=0;while(1){if((k|0)>(g|0))break;if(cS(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[46618]|0;i=c[46619]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[46621]=a;c[46622]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=dS(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=dS(l,f,0,b,d,0,k,g,e,1)|0;D_(l);D_(c[46618]|0);D_(c[46619]|0);D_(c[46620]|0);return g|0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function cS(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d<e+-1.0e-07)a=0;else a=+h[b+(f*56|0)+16>>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function dS(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=eS(g,n,J)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,J,n)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=eS(g,j,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,m,j)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function eS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[46622]|0)+1|0;c[46622]=e;m=c[46619]|0;fS(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[46621]|0;g=n+1|0;n=n+2|0;c[46621]=n;q=c[46618]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[46620]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[46619]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+gS(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+gS(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function gS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function hS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function iS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];G3(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function jS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[46623]=e<<1;c[46624]=e;k=uH(e*80|0)|0;c[46625]=1;c[46626]=1;H3(f|0,0,e*72|0)|0;g=kS(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=lS(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=mS(a,i+-1|0)|0;h=mS(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}nS(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;oS(e,b,f,k);e=e+1|0}i=i+1|0}e=mS(a,j)|0;while(1){if((e|0)>=(a|0))break;nS(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}D_(k);return c[46625]|0}function kS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=tS()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;xS(s,k,l);n=tS()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=tS()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;yS(r,k,l);c[e+(j*40|0)+28>>2]=f;l=tS()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=tS()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=tS()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=tS()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=sS(d)|0;i=sS(d)|0;m=sS(d)|0;o=sS(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];G3(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];G3(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function lS(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+g$(b);a=a+1|0}return a+-1|0}function mS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+g$(c);a=a+1|0}return ~~+N(+(d/c))|0}function nS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[U>>3]>+h[S>>3]:0){G=4;break}G=(rS(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=pS(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(rS(a,b,2)|0)){n=1;G=7}else{f=pS(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=pS(S,U,f,b,e)|0;f=sS(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=tS()|0;G=tS()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(rS(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(rS(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=pS(U,S,c[S+40>>2]|0,b,e)|0;n=sS(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=tS()|0;F=tS()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=pS(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(uS(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=tS()|0;p=tS()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=sS(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(vS(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}E1(135342,19,1,c[15686]|0)|0}else{g=0;f=0}while(0);wS(a,F,o,1,d,e);wS(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function oS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((pS(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((pS(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function pS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g<l)?+h[a>>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g<l)?+h[b>>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(qS(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(qS(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]<j){d=f+(d*40|0)+32|0;break b}else{d=f+(d*40|0)+36|0;break b}}default:{r=31;break a}}while(0);d=c[d>>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){E1(135276,35,1,c[15686]|0)|0;qa(135312,135314,349,135326)}return 0}function qS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g<e+-1.0e-07)?+h[f>>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function rS(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function sS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46625]|0;if((b|0)<(c[46624]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[46625]=b+1;l=e;return b|0}else{e=c[15686]|0;c[d>>2]=b;g1(e,135401,d)|0;qa(135312,135314,88,135439)}return 0}function tS(){var a=0;a=c[46626]|0;if((a|0)<(c[46623]|0)){c[46626]=a+1;return a|0}else{E1(135362,30,1,c[15686]|0)|0;qa(135312,135314,72,135393)}return 0}function uS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c<d+-1.0e-07)a=0;else a=+h[a>>3]>=+h[b>>3]&1;else a=1;return a|0}function vS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c<d+-1.0e-07))if(c>d+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function wS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(uS(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function xS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function yS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e<f+-1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function zS(a){a=a|0;var b=0;b=uH(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function AS(a,b){a=a|0;b=b|0;if(b){b=zS(b)|0;c[b>>2]=a;a=b}return a|0}function BS(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;D_(b)}while((a|0)!=0);return}function CS(){var a=0;a=uH(1992)|0;if(a|0)c[a>>2]=DS(a)|0;return a|0}function DS(a){a=a|0;var b=0;b=JS(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function ES(a){a=a|0;FS(a,c[a>>2]|0);D_(c[a>>2]|0);D_(a);return 0}function FS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(FS(a,f),D_(c[e>>2]|0),PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function GS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)qa(135797,135447,194,135455);e=c[b+4>>2]|0;if((e|0)<=-1)qa(135467,135447,195,135455);if(!d)qa(135739,135447,196,135455);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(US(d,b+8+(i*20|0)|0)|0)!=0:0){g=GS(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(US(d,f)|0)!=0:0)e=AS(e,f)|0;g=g+1|0}}while(0);return e|0}function HS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))qa(135653,135447,247,135481);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)qa(135528,135447,250,135481);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(IS(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=JS(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;MS(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];OS(a,m,g,0)|0;MS(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];OS(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}qa(135493,135447,248,135481);return 0}function IS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))qa(135571,135447,311,135585);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=NS(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(IS(a,b,d,c[h>>2]|0,n,g)|0)){TS(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{MS(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;MS(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}else qa(135630,135447,341,135585);while(0);l=q;return j|0}qa(135598,135447,312,135585);return 0}function JS(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=C_(1288)|0;KS(a);return a|0}function KS(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;LS(a+8+(b*20|0)|0);b=b+1|0}return}function LS(a){a=a|0;QS(a);c[a+16>>2]=0;return}function MS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)qa(135797,135636,99,135643);QS(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){TS(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function NS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))qa(135653,135636,125,135660);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=SS(n)|0;TS(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(SS(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function OS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)qa(135819,135636,167,135671);if(!d)qa(135797,135636,168,135671);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)qa(135681,135636,178,135671)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)qa(135694,135636,187,135671);else{VS(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function PS(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))qa(135698,135636,201,135726);if(!(c[a+8+(b*20|0)+16>>2]|0))qa(136220,135636,202,135726);else{LS(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function QS(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function SS(a){a=a|0;var b=0,d=0,e=0;if(!a)qa(135739,135741,128,135753);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function TS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))qa(135762,135741,195,135770);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function US(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else qa(135782,135741,216,135789);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function VS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)qa(135797,135799,40,135809);if(!d)qa(135819,135799,41,135809);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;WS(a,b,d);d=a+1324|0;XS(a);f=SS(a+1852|0)|0;f=(SS(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=JS(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;YS(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else qa(135821,135799,86,135809)}function WS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)qa(135797,135799,106,136208);if(!d)qa(135819,135799,107,136208);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)qa(136220,135799,111,136208);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;TS(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=SS(d)|0;KS(b);l=h;return}function XS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;ZS(a);_S(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;TS(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=SS(i)|0;d=c[o>>2]|0;TS(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=SS(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}$S(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))$S(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)qa(135964,135799,210,136050);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))qa(136061,135799,212,136050);else{l=u;return}}function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)qa(135797,135799,297,135861);if(!d)qa(135871,135799,298,135861);if(!e)qa(135873,135799,299,135861);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{OS(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{OS(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)qa(135875,135799,303,135861);else if((e|0)==14)return}function ZS(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;RS(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function _S(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=SS(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}TS(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=SS(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}$S(a,d,0);$S(a,b,1);l=o;return}function $S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)qa(136164,135799,257,136199);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{TS(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=SS(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function aT(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46627]=0;c[46628]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[65430+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[46628]|0;if((h|0)==-2){h=pU()|0;c[46628]=h}if((h|0)>=1)if(h>>>0<296)i=d[136239+h>>0]|0;else i=2;else{c[46628]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[136535+h>>0]|0):0){p=a[136807+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46628]=-2;g=g+4|0;c[g>>2]=c[46629];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[137079+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46628]|0;b:do switch(q|0){case 0:{c[46627]=(c[46627]|0)+1;vT(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[46628]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[65430+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=c[46629];e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[137195+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[46630]=bT(c[g+-4>>2]|0,2)|0;break}case 3:{c[46630]=bT(c[g+-4>>2]|0,1)|0;break}case 5:{e=dT()|0;break}case 8:{eT(c[46631]|0);break}case 9:{fT(c[g>>2]|0);break}case 18:{gT(c[g>>2]|0);break}case 19:{hT();break}case 20:{gT(c[g>>2]|0);break}case 21:{hT();break}case 22:{gT(c[g>>2]|0);break}case 23:{hT();break}case 24:{gT(c[g>>2]|0);break}case 25:{hT();break}case 26:{gT(c[g>>2]|0);break}case 27:{hT();break}case 28:{gT(c[g>>2]|0);break}case 29:{hT();break}case 30:{gT(c[g>>2]|0);break}case 31:{hT();break}case 32:{gT(c[g>>2]|0);break}case 33:{hT();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[46632];e=Cw(55928,c[4554]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[46632]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[46633]>>2];e=c[g>>2]|0;break}case 39:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=56;break a}e=c[46632]|0;c[46632]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{jT();break}case 52:{e=kT()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{lT(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{lT(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{lT(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{lT(c[g>>2]|0,dT()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[137367+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[65662+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[136535+h>>0]|0)==(p|0):0){e=a[136807+h>>0]|0;j=q;h=i;break}e=a[137437+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){cT();e=1;s=96}else if((s|0)==51){vT(137265);cT();e=1;s=96}else if((s|0)==56){vT(137316);cT();e=1;s=96}else if((s|0)==95){vT(137476);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))D_(f);l=t;return e|0}function bT(b,d){b=b|0;d=d|0;var e=0;e=uH(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function cT(){var a=0,b=0;a=c[46632]|0;b=c[46630]|0;if(b|0){XQ(b,1);c[46630]=0}c[13995]=67;while(1){if(!a)break;b=c[a+80>>2]|0;pT(a);a=b}c[13995]=56;c[14004]=68;b=c[46635]|0;nb[c[b>>2]&63](b,0,64)|0;c[14004]=56;c[14013]=69;b=c[46636]|0;nb[c[b>>2]&63](b,0,64)|0;c[14013]=56;sT();return}function dT(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[46636]|0;f=uH(40)|0;if(Ew(c[46635]|0)|0)fT(0);a=Ew(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=uH(a*24|0)|0;a=0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);nb[c[a>>2]&63](e,0,64)|0;return f|0}function eT(b){b=b|0;var d=0,e=0,f=0;e=uH(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=n1(b)|0;c[e+12>>2]=c[c[46633]>>2];f=c[46635]|0;nb[c[f>>2]&63](f,e,1)|0;return}function fT(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=uH(32)|0;j=c[46635]|0;e=Ew(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=uH(56)|0;b[i+12>>1]=1;h=n1(191979)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[46633]>>2]}else{b[i+12>>1]=e;c[k>>2]=uH(e*56|0)|0;d=0;e=Aw(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);nb[c[j>>2]&63](j,0,64)|0;k=c[46636]|0;nb[c[k>>2]&63](k,i,1)|0;return}function gT(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=uH(8)|0;f=c[c[46633]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[46634]|0)+144>>2]|0;c[i>>2]=nb[c[f>>2]&63](f,g,1)|0;c[i+4>>2]=c[46633];c[46633]=i;l=j;return}function hT(){var a=0,b=0;b=c[46633]|0;a=c[b+4>>2]|0;D_(b);c[46633]=a;return}function iT(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function jT(){var b=0,d=0,e=0;e=Cw(55964,c[4554]|0)|0;b=c[46632]|0;d=uH(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function kT(){var a=0;a=c[(c[46632]|0)+84>>2]|0;return nb[c[a>>2]&63](a,0,256)|0}function lT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=uH(16)|0;f=c[46632]|0;h=c[f+84>>2]|0;h=c[(nb[c[h>>2]&63](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;nb[c[h>>2]&63](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function mT(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function nT(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+8>>2]|0)|0;D_(b);return}function oT(a,b,d){a=a|0;b=b|0;d=d|0;tT(c[b+8>>2]|0);D_(b);return}function pT(a){a=a|0;yw(c[a+84>>2]|0)|0;UQ(a);D_(a);return}function qT(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function rT(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;D_(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}D_(c[h>>2]|0)}D_(d);return}function sT(){var a=0,b=0;a=c[46633]|0;while(1){b=c[a+4>>2]|0;if(!b)break;D_(a);a=b}return}function tT(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{pT(c[d>>2]|0);break}case 2:{VQ(c[d>>2]|0);break}default:{}}UQ(b);D_(b);return}function uT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[46633]=g;c[46632]=0;c[46630]=0;c[46634]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[46635]=Cw(56e3,c[4554]|0)|0;c[46636]=Cw(56036,c[4554]|0)|0;Tw(e,128,f+24|0);c[46631]=e;if(!(yT(a,e,d)|0)){aT()|0;c[b>>2]=oU()|0;a=c[46630]|0}else{c[b>>2]=2;a=0}yw(c[46635]|0)|0;yw(c[46636]|0)|0;c[46635]=0;c[46636]=0;c[46633]=0;Xw(e);l=f;return a|0}function vT(b){b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;if(!(a[186581]|0)){a[186581]=1;f=wT()|0;c[d>>2]=b;c[d+4>>2]=f;Pw(1,137493,d)|0;xT()}l=e;return}function wT(){return dX(c[46637]|0)|0}function xT(){var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[46640]|0;c[b+4>>2]=c[b>>2];d=c[46649]|0;if((d|0)>0){Vw(b,c[46647]|0,d)|0;b=c[46640]|0}Vw(b,c[46646]|0,c[46648]|0)|0;d=c[46640]|0;b=c[d+4>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[46640]|0;d=b;b=c[b+4>>2]|0}c[d+4>>2]=b+1;a[b>>0]=0;b=c[46640]|0;d=c[b>>2]|0;c[b+4>>2]=d;c[e>>2]=d;Pw(3,137509,e)|0;l=f;return}function yT(b,e,f){b=b|0;e=e|0;f=f|0;c[46640]=e;Tw(186564,128,0);c[46638]=b;a[186583]=0;a[186580]=0;a[186581]=0;c[46648]=0;c[46649]=0;a[186582]=1;f=f+52|0;e=DV(hH(d[(c[(c[f>>2]|0)+16>>2]|0)+115>>0]|0)|0)|0;c[46637]=e;SW(e,c[(c[(c[f>>2]|0)+16>>2]|0)+144>>2]|0);TW(c[46637]|0,70,27);UW(c[46637]|0,71);return 0}function zT(b,d,e){b=b|0;d=d|0;e=e|0;do if(!(O$(d,137521)|0)){c[46629]=DT(e)|0;a[186582]=0;c[46639]=286}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){a[186582]=1;c[46629]=ET(e)|0;c[46639]=287;break}if(!(O$(d,137541)|0)){c[46629]=FT(b,e,0)|0;c[46639]=288;break}if(!(O$(d,137546)|0)){c[46629]=FT(b,0,1)|0;c[46639]=290;break}if(!(O$(d,137562)|0)){c[46629]=FT(b,0,32)|0;c[46639]=295;break}if(!(O$(d,137548)|0)){c[46629]=FT(b,0,4)|0;c[46639]=291;break}if(!(O$(d,137550)|0)){c[46629]=FT(b,0,64)|0;c[46639]=292;break}if(!(O$(d,137552)|0)){c[46629]=FT(b,0,2)|0;c[46639]=289;break}if(!(O$(d,137554)|0)){c[46629]=FT(b,0,8)|0;c[46639]=293;break}if(!(O$(d,137558)|0)){c[46629]=FT(b,0,16)|0;c[46639]=294;break}if(!(O$(d,137564)|0)){GT(e);c[46639]=283;break}if(!(O$(d,137567)|0)){c[46639]=277;break}if(!(O$(d,137570)|0)){c[46639]=280;break}if(!(O$(d,137573)|0)){c[46629]=HT(e)|0;c[46639]=285;break}if(!(O$(d,137536)|0)){c[46639]=262;break}else{CT(d);break}}a[186582]=0;c[46639]=260}while(0);return}function AT(b,d){b=b|0;d=d|0;do if(!(O$(d,137521)|0)){c[46639]=264;a[186582]=1}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){c[46639]=265;a[186582]=0;break}if(!(O$(d,137536)|0)){c[46639]=263;break}if(!(O$(d,137541)|0)){c[46639]=266;break}if(!(O$(d,137546)|0)){c[46639]=270;break}if(!(O$(d,137548)|0)){c[46639]=271;break}if(!(O$(d,137550)|0)){c[46639]=272;break}if(!(O$(d,137552)|0)){c[46639]=269;break}if(!(O$(d,137554)|0)){c[46639]=273;break}if(!(O$(d,137558)|0)){c[46639]=274;break}if(!(O$(d,137562)|0)){c[46639]=275;break}if(!(O$(d,137564)|0)){c[46639]=(c[46639]|0)==283?282:258;break}if(!(O$(d,137567)|0)){c[46639]=(c[46639]|0)==277?276:278;break}if(!(O$(d,137570)|0)){c[46639]=(c[46639]|0)==280?279:281;break}if(!(O$(d,137573)|0)){c[46639]=(c[46639]|0)==285?284:259;break}else{CT(d);break}}c[46639]=261}while(0);return}function BT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(a[186582]|0){b=0;while(1){if(!e)break;h=d+1|0;g=a[d>>0]|0;if((g&255)>31){d=c[46640]|0;f=c[d+4>>2]|0;if(f>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;f=c[46640]|0;d=f;f=c[f+4>>2]|0}c[d+4>>2]=f+1;a[f>>0]=g;b=b+1|0}d=h;e=e+-1|0}if(b|0)c[46639]=267}return}function CT(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[46639]=268;a[186581]=1;f=wT()|0;c[e>>2]=b;c[e+4>>2]=f;Pw(1,137577,e)|0;l=d;return}function DT(b){b=b|0;var d=0;d=uH(120)|0;c[d+100>>2]=-1;a[d+88>>0]=-1;IT(d,56296,22,b,138529);return d|0}function ET(a){a=a|0;var c=0;c=uH(104)|0;b[c+80>>1]=1;b[c+82>>1]=1;IT(c,56120,22,a,137883);return c|0}function FT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+32|0;e=f;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[e+16>>3]=-1.0;c[e+24>>2]=d&127;if(b|0)IT(e,56096,3,b,137734);d=c[a+144>>2]|0;e=nb[c[d>>2]&63](d,e,1)|0;l=f;return e|0}function GT(a){a=a|0;c[46629]=0;IT(186516,56088,1,a,137670);return}function HT(a){a=a|0;var b=0;b=uH(40)|0;IT(b,56072,2,a,137616);return b|0}function IT(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;m=o+8|0;while(1){k=c[g>>2]|0;if(!k)break;i=c[g+4>>2]|0;c[m>>2]=k;j=e2(m,e,f,8,102)|0;if(!j){c[n>>2]=k;c[n+4>>2]=h;Pw(0,137622,n)|0;i=1}else{i=lb[c[j+4>>2]&127](b,i)|0;i=(i|(d[186580]|0))&255}a[186580]=i;g=g+8|0}l=o;return}function JT(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function KT(a,b){a=a|0;b=b|0;c[a+36>>2]=n1(b)|0;return 0}function LT(a,b){a=a|0;b=b|0;c[a+32>>2]=n1(b)|0;return 0}function MT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=(I0(a[d>>0]|0)|0)<<24>>24;switch(f|0){case 82:{e=d+1|0;if(!(O$(e,137681)|0)){c[b>>2]=114;e=0}else h=5;break}case 76:{h=6;break}default:{e=d+1|0;h=5}}do if((h|0)==5)if(!(O$(e,137686)|0))h=6;else{if((f|0)!=67?(O$(e,137690)|0)==0:0){c[g>>2]=d;Pw(0,137696,g)|0;e=1;break}c[b>>2]=110;e=0}while(0);if((h|0)==6){c[b>>2]=108;e=0}l=i;return e|0}function NT(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return 0}function OT(a,b){a=a|0;b=b|0;c[a>>2]=b;return 0}function PT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,137763,0,255,d)|0)){h[a+16>>3]=+(c[d>>2]|0);a=0}else a=1;l=e;return a|0}function QT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;h=k;m=k+36|0;g=i1(a,m,10)|0;do if((c[m>>2]|0)!=(a|0)){if((g|0)>(e|0)){c[i>>2]=b;c[i+4>>2]=a;c[i+8>>2]=e;Pw(0,137805,i)|0;a=1;break}if((g|0)<(d|0)){c[j>>2]=b;c[j+4>>2]=a;c[j+8>>2]=d;Pw(0,137844,j)|0;a=1;break}else{c[f>>2]=g;a=0;break}}else{c[h>>2]=b;c[h+4>>2]=a;Pw(0,137774,h)|0;a=1}while(0);l=k;return a|0}function RT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=9;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=9;break}case 84:{if(!(O$(e+1|0,138481)|0)){d=d+36|0;b[d>>1]=b[d>>1]|6;d=0}else g=9;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=9;break}default:g=9}if((g|0)==9){c[f>>2]=e;Pw(0,138485,f)|0;d=1}l=h;return d|0}function ST(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|512;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|256;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138436,f)|0;d=1}l=h;return d|0}function TT(a,b){a=a|0;b=b|0;c[a+20>>2]=n1(b)|0;return 0}function UT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138429,0,255,f)|0)){a[d+33>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|32;d=0}else d=1;l=g;return d|0}function VT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138417,0,255,f)|0)){a[d+34>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|64;d=0}else d=1;l=g;return d|0}function WT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138405,-128,127,f)|0)){a[d+32>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|128;d=0}else d=1;l=g;return d|0}function XT(a,b){a=a|0;b=b|0;c[a+24>>2]=n1(b)|0;return 0}function YT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138360,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138368,f)|0;d=1;break}else{b[a+80>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function ZT(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(d[e>>0]|0)|0)<<24>>24|0){case 84:{if(!(O$(e+1|0,138309)|0)){a=a+36|0;b[a>>1]=b[a>>1]|1;a=0}else g=5;break}case 70:{if(!(O$(e+1|0,138313)|0))a=0;else g=5;break}default:g=5}if((g|0)==5){c[f>>2]=e;Pw(0,138318,f)|0;a=1}l=h;return a|0}function _T(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,138295,0,360,d)|0)){c[a+28>>2]=c[d>>2]&65535;a=0}else a=1;l=e;return a|0}function $T(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138288,0,65535,e)|0)){b[a+40>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function aU(a,b){a=a|0;b=b|0;c[a>>2]=n1(b)|0;return 0}function bU(a,b){a=a|0;b=b|0;c[a+16>>2]=n1(b)|0;return 0}function cU(a,b){a=a|0;b=b|0;c[a+4>>2]=n1(b)|0;return 0}function dU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138243,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138251,f)|0;d=1;break}else{b[a+82>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function eU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=0;a:while(1){b:while(1){g=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a;e=e<<24>>24;f=(P$(e)|0)+-98|0;switch(f>>>1|f<<31|0){case 5:{j=5;break b}case 9:{f=2048;break b}case 8:{j=6;break b}case 0:{j=7;break b}default:{}}c[i>>2]=e;c[i+4>>2]=e;Pw(0,138190,i)|0;e=g}if((j|0)==5){j=0;f=1024}else if((j|0)==6){j=0;f=4096}else if((j|0)==7){j=0;f=8192}e=g;h=h|f}if(h<<16>>16!=15360){j=d+36|0;b[j>>1]=b[j>>1]|h}l=k;return 0}function fU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;h=n1(e)|0;g=d+42|0;f=0;e=h;while(1){d=k1(e,138100)|0;if(!d)break;if(((I0(a[d>>0]|0)|0)&255|0)==82){e=d+1|0;if(!(O$(e,138103)|0)){b[g>>1]=b[g>>1]|4;d=f;e=0;f=d;continue}if(!(O$(e,138110)|0)){b[g>>1]=b[g>>1]|2;d=f;e=0;f=d;continue}else{c[i>>2]=d;Pw(0,138116,i)|0;f=1;e=0;continue}}if(!(O$(d,138154)|0)){b[g>>1]=b[g>>1]&-385;d=f;e=0;f=d;continue}if(O$(d,138160)|0?O$(d,138170)|0:0){if(!(O$(d,138176)|0)){b[g>>1]=b[g>>1]|128;d=f;e=0;f=d;continue}if(!(O$(d,138183)|0)){b[g>>1]=b[g>>1]|256;d=f;e=0;f=d;continue}else{c[j>>2]=d;Pw(0,138116,j)|0;f=1;e=0;continue}}b[g>>1]=b[g>>1]|32;d=f;e=0;f=d}D_(h);l=k;return f|0}function gU(a,b){a=a|0;b=b|0;c[a+8>>2]=n1(b)|0;return 0}function hU(a,b){a=a|0;b=b|0;c[a+12>>2]=n1(b)|0;return 0}function iU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 66:{if(!(O$(e+1|0,138046)|0)){d=d+36|0;b[d>>1]=b[d>>1]|16;d=0}else g=7;break}case 84:{if(!(O$(e+1|0,138052)|0)){d=d+36|0;b[d>>1]=b[d>>1]|8;d=0}else g=7;break}case 77:{if(!(O$(e+1|0,138055)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138061,f)|0;d=1}l=h;return d|0}function jU(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138040,0,65535,e)|0)){b[a+38>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function kU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,137696,f)|0;d=1}l=h;return d|0}function lU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138638,0,127,e)|0)){a[b+88>>0]=c[e>>2];b=0}else b=1;l=f;return b|0}function mU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|1;b=0}else{c[e>>2]=d;Pw(0,138598,e)|0;b=1}l=f;return b|0}function nU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|2;b=0}else{c[e>>2]=d;Pw(0,138561,e)|0;b=1}l=f;return b|0}function oU(){var b=0;b=(a[186581]|a[186580])<<24>>24;JV(c[46637]|0);Xw(186564);return b|0}function pU(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;c[46639]=0;d=0;a:do{b:do switch(a[186583]|0){case 2:{b=-1;break a}case 0:{a[186583]=1;h=6;b=138650;d=0;break}default:{b=c[46638]|0;if(!(a[b>>0]|0)){a[186583]=2;h=7;b=138657;break b}else{d=qU(b)|0;h=d-b|0;break b}}}while(0);c[46647]=c[46646];c[46649]=c[46648];c[46646]=b;c[46648]=h;e=c[46642]|0;f=e-(c[46641]|0)|0;g=c[46637]|0;if(!f)b=VW(g,b,h,(h|0)==0&1)|0;else{if(e>>>0<(c[46643]|0)>>>0)b=e;else{Uw(186564,1)|0;b=c[46642]|0}a[b>>0]=0;b=c[46641]|0;c[46642]=b;b=VW(g,b,f,0)|0}if(!((b|0)!=0|(a[186581]|0)!=0)){g=eX(cX(c[46637]|0)|0)|0;h=wT()|0;c[i>>2]=g;c[i+4>>2]=h;Pw(1,137493,i)|0;xT();a[186581]=1;c[46639]=268}if(d|0)c[46638]=d;b=c[46639]|0}while((b|0)==0);l=j;return b|0}function qU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b+1|0;e=a[b>>0]|0;a:do if(e<<24>>24==60){e=a[d>>0]|0;if(e<<24>>24==33)if(!(z$(b+2|0,138665,2)|0)){e=rU(b+4|0)|0;d=e;e=a[e>>0]|0;g=8}else{e=d;g=5}else g=6;b:while(1)if((g|0)==5){d=e;e=a[e>>0]|0;g=6;continue}else if((g|0)==6){switch(e<<24>>24){case 62:case 0:{g=8;continue b}default:{}}e=d+1|0;g=5;continue}else if((g|0)==8)if(e<<24>>24==62){g=10;break}else{g=9;break}if((g|0)==9){Pw(0,138668,f)|0;a[186580]=1;break}else if((g|0)==10){d=d+1|0;break}}else{d=b;b=e;while(1){switch(b<<24>>24){case 60:case 0:break a;case 38:{e=d+1|0;if((a[e>>0]|0)==35)g=15;else e=MM(e,186564)|0;break}default:g=15}if((g|0)==15){g=0;e=c[46642]|0;if(e>>>0>=(c[46643]|0)>>>0){Uw(186564,1)|0;e=c[46642]|0}c[46642]=e+1;a[e>>0]=b;e=d+1|0}d=e;b=a[e>>0]|0}}while(0);l=h;return d|0}function rU(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;f=1;c=b;a:while(1){e=(f|0)==0;d=c;b:while(1){if(e)break a;g=d+1|0;switch(a[d>>0]|0){case 0:{c=g;break a}case 60:{h=5;break b}case 62:{c=-1;break b}default:d=g}}if((h|0)==5){h=0;c=1}f=f+c|0;c=g}d=c+-1|0;do if(a[d>>0]|0){c=c+-3|0;if(c>>>0>=b>>>0?(z$(c,138665,2)|0)==0:0)break;Pw(0,138709,i)|0;a[186580]=1}while(0);l=j;return d|0}function sU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=C_(28)|0;if(!d)d=0;else{e=0;f=0;while(1){if((e|0)>=(b|0))break;r=(c[(c[a+(e<<2)>>2]|0)+4>>2]|0)+f|0;e=e+1|0;f=r}o=d+8|0;c[o>>2]=tU(f<<4)|0;p=d+12|0;c[p>>2]=tU((b<<2)+4|0)|0;e=f<<2;q=d+16|0;c[q>>2]=tU(e)|0;e=tU(e)|0;r=d+20|0;c[r>>2]=e;c[d+4>>2]=f;c[d>>2]=b;f=0;h=0;while(1){c[(c[p>>2]|0)+(h<<2)>>2]=f;if((h|0)>=(b|0))break;j=a+(h<<2)|0;n=c[j>>2]|0;k=c[n+4>>2]|0;l=f+-1|0;g=0;i=f;m=k;while(1){if((g|0)>=(m|0))break;m=(c[o>>2]|0)+(i<<4)|0;e=(c[n>>2]|0)+(g<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=i+1|0;c[(c[q>>2]|0)+(i<<2)>>2]=m;e=c[r>>2]|0;c[e+(i<<2)>>2]=i+-1;s=c[j>>2]|0;g=g+1|0;i=m;m=c[s+4>>2]|0;n=s}s=l+k|0;c[(c[q>>2]|0)+(s<<2)>>2]=f;c[e+(f<<2)>>2]=s;f=i;h=h+1|0}tV(d)}return d|0}function tU(a){a=a|0;if(!a)a=0;else a=C_(a)|0;return a|0}function uU(a){a=a|0;var b=0,d=0;D_(c[a+8>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);d=a+24|0;b=c[d>>2]|0;if(b|0){D_(c[b>>2]|0);D_(c[d>>2]|0)}D_(a);return}function vU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+32|0;m=p+16|0;j=p;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];n=AV(a,d,m)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];o=AV(a,f,m)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=jV(j,d,n,m,f,o,a)|0;d=c[a+4>>2]|0;j=d+1|0;f=1;h=d;while(1){h=c[m+(h<<2)>>2]|0;k=f+1|0;if((h|0)==(j|0))break;else f=k}i=C_(k<<4)|0;h=i+(f<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];a=a+8|0;while(1){d=c[m+(d<<2)>>2]|0;f=f+-1|0;h=i+(f<<4)|0;if((d|0)==(j|0))break;e=(c[a>>2]|0)+(d<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2]}c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if(f|0)qa(138727,138734,148,138740);if(n|0)D_(n);if(o|0)D_(o);c[g+4>>2]=k;c[g>>2]=i;D_(m);l=p;return 1}function wU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l;l=l+48|0;h=j+32|0;g=j+16|0;f=j;i=c[a>>2]|0;d=c[a+4>>2]|0;e=d+-1|0;a=0;while(1){if((a|0)>=(d|0)){a=1;break}m=i+(((e+a|0)%(d|0)|0)<<4)|0;k=i+(a<<4)|0;c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if((pV(f,g,h)|0)==1){a=0;break}else a=a+1|0}l=j;return a|0}function xU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=C_(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=D3(186600,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ja(28,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ja(28,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[46689]=0;o=0;ia(112,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[46690]|0;d=c[46689]|0;c[46689]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=fa(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,s|0,j|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[46689];c[f>>2]=c[46690];d=0}D_(s|0);l=u;return d|0}function yU(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function zU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46693]|0)<(a|0)){b=c[46690]|0;if(!b){e=C_(a<<4)|0;c[46690]=e;if(!e){e=c[15686]|0;c[d>>2]=138749;c[d+4>>2]=531;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186600,1)}}else{d=F_(b,a<<4)|0;c[46690]=d;if(!d){d=c[15686]|0;c[e>>2]=138749;c[e+4>>2]=537;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186600,1)}}c[46693]=a}l=f;return}function AU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[46692]|0;do if((c[46691]|0)<(e|0)){if(!i){i=C_(e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}else{i=F_(i,e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}c[46691]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+BU(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+CU(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];DU(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+EU(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];DU(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];FU(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(GU(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];DU(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];HU(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];DU(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];IU(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[46692]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+JU(T);V=+CU(T);W=+EU(T);T=+KU(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+BU(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];IU(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];yU(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];IU(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];yU(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];HU(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];yU(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];AU(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];AU(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function BU(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function CU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function DU(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function EU(a){a=+a;return +(a*a*3.0*(1.0-a))}function FU(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+QU(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+QU(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+QU(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+RU(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];DU(s,B,I);I=+SU(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];DU(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];HU(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];IU(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+QU(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+QU(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+BU(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];DU(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];DU(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function GU(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+LU(B,4),D<+LU(i,j)+-.001):0){d=0;break}if(MU(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function HU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function IU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function JU(a){a=+a;a=1.0-a;return +(a*a*a)}function KU(a){a=+a;return +(a*a*a)}function LU(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function MU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=NU(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function NU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;OU(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=kV(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{OU(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=kV(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0;break}OU(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=kV(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;PU(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;PU(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])PU(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function OU(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function PU(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function QU(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function RU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function SU(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}function TU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=C_(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=D3(186776,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;ia(113,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[46733]=0;c[46734]=0;o=0;ia(114,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[46736]|0)/2|0;c[46737]=m;c[46738]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=ca(33,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[46740]|0;e=c[46741]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[46733]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[46733]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[46740]|0;e=c[46741]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[46733]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[46733]=g+1;g=f}}while(0);o=0;ja(29,e|0,c[46733]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[46734]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ja(30,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[46734]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=aa(103,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[15686]|0;o=0;c[C>>2]=138776;c[C+4>>2]=192;c[C+8>>2]=138787;ca(29,e|0,138757,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=aa(103,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[15686]|0;o=0;c[D>>2]=138776;c[D+4>>2]=200;c[D+8>>2]=138820;ca(29,e|0,138757,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=aa(104,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[15686]|0;o=0;c[E>>2]=138776;c[E+4>>2]=207;c[E+8>>2]=138858;ca(29,e|0,138757,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ja(31,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[46739]=c[46737];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[46743]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[46735]|0;k=c[e+(c[46738]<<2)>>2]|0;o=0;e=ca(33,u|0,c[c[e+(c[46737]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=ca(33,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[46735]|0;if((c[m+(c[46737]<<2)>>2]|0)!=(n|0)?(c[m+(c[46738]<<2)>>2]|0)!=(n|0):0){o=0;j=$(34,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[46739]|0)){e=0;break}c[46739]=j;e=0;break}o=0;k=$(34,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[46739]|0)){e=0;break}c[46739]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[46743]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;ia(115,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[46742]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}D_(G|0);l=H;return e|0}function UU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[46746]|0)<(a|0)){b=c[46740]|0;if(!b){g=C_(a<<3)|0;c[46740]=g;if(!g){g=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=523;c[d+8>>2]=139026;g1(g,138757,d)|0;bb(186776,1)}g=C_(a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[f>>2]=138776;c[f+4>>2]=527;c[f+8>>2]=139045;g1(g,138757,f)|0;bb(186776,1)}}else{f=F_(b,a<<3)|0;c[46740]=f;if(!f){f=c[15686]|0;c[g>>2]=138776;c[g+4>>2]=533;c[g+8>>2]=139065;g1(f,138757,g)|0;bb(186776,1)}g=F_(c[46741]|0,a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=539;c[e+8>>2]=139085;g1(g,138757,e)|0;bb(186776,1)}}c[46746]=a}l=h;return}function VU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46736]|0)<(a|0)){b=c[46735]|0;if(!b){e=C_(a<<2)|0;c[46735]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=573;c[d+8>>2]=138981;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<2)|0;c[46735]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=580;c[e+8>>2]=139003;g1(d,138757,e)|0;bb(186776,1)}}c[46736]=a}l=f;return}function WU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function XU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(dV(e,g,a,b)|0))e=f;else break}eV(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[15686]|0;c[h>>2]=138776;c[h+4>>2]=324;c[h+8>>2]=138921;g1(a,138757,h)|0}else if((b|0)==9)eV(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function YU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[46743]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function ZU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[46743]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((WU(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function _U(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46743]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(_U((e-d|0)/52|0,b)|0){d=1;break a}d=c[46743]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function $U(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46744]|0)<(a|0)){b=c[46742]|0;if(!b){e=C_(a<<4)|0;c[46742]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=593;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<4)|0;c[46742]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=599;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186776,1)}}c[46744]=a}l=f;return}function aV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46738]|0;e=c[46737]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[46735]|0)+(e<<2)>>2];a=186948;d=-1}else{a=186948;d=-1}else if(f){c[b+4>>2]=c[(c[46735]|0)+(d<<2)>>2];a=186952;d=1}else{a=186952;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[46735]|0)+(f<<2)>>2]=b;return}function bV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46739]|0;g=c[46735]|0;b=c[46737]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[46738]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function cV(a,b){a=a|0;b=b|0;c[((a|0)==1?186952:186948)>>2]=b;return}function dV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(WU(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((WU(i,j,f)|0)==1){f=WU(j,i,g)|0;g=1;h=5}else f=0;else{f=WU(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(gV(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function eV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[46734]|0;f=c[46745]|0;if((e|0)<(f|0))h=e;else{fV(f+20|0);h=c[46734]|0}g=c[46743]|0;c[46734]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function fV(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46745]|0)<(a|0)){b=c[46743]|0;if(!b){e=C_(a*52|0)|0;c[46743]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=552;c[d+8>>2]=138942;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a*52|0)|0;c[46743]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=558;c[e+8>>2]=138961;g1(d,138757,e)|0;bb(186776,1)}}c[46745]=a}l=f;return}function gV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=WU(a,b,c)|0;if((((f|0)!=3?(g=WU(a,b,d)|0,(g|0)!=3):0)?(h=WU(c,d,a)|0,(h|0)!=3):0)?(e=WU(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((hV(a,b,c)|0)==0?(hV(a,b,d)|0)==0:0)?(hV(c,d,a)|0)==0:0)return (hV(c,d,b)|0)!=0|0;return 1}function hV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((WU(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;m=C_(d<<2)|0;n=C_((d<<3)+8|0)|0;o=n+8|0;f=0;while(1){if((f|0)>=(d|0))break;c[m+(f<<2)>>2]=-1;h[o+(f<<3)>>3]=-2147483647.0;f=f+1|0}h[n>>3]=-2147483648.0;a:while(1){if((a|0)==(b|0))break;l=o+(a<<3)|0;j=+h[l>>3];h[l>>3]=j==-2147483647.0?0.0:-j;k=0;f=-1;while(1){if((k|0)>=(d|0)){a=f;continue a}i=o+(k<<3)|0;g=+h[i>>3];if(g<0.0){q=(a|0)<(k|0);p=+h[(c[e+((q?k:a)<<2)>>2]|0)+((q?a:k)<<3)>>3];j=-(p+ +h[l>>3]);if(p!=0.0&g<j){h[i>>3]=j;c[m+(k<<2)>>2]=a;g=j}f=g>+h[o+(f<<3)>>3]?k:f}k=k+1|0}}D_(n);return m|0}function jV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0;j=l;l=l+32|0;k=j+16|0;m=j;i=c[h+4>>2]|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];if(!(CV(m,b,k,f,h)|0)){a=c[h+24>>2]|0;c[a+(i<<2)>>2]=g;m=i+1|0;c[a+(m<<2)>>2]=d;a=iV(m,i,i+2|0,a)|0}else{a=C_((i<<2)+8|0)|0;m=i+1|0;c[a+(i<<2)>>2]=m;c[a+(m<<2)>>2]=-1}l=j;return a|0}function kV(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=lV(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+n$(i);d=+n$(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+n$(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function lV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=mV(a,b)|0;while(0);return a|0}function mV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function nV(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function oV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[46748]|0;if((i|0)>(c[46747]|0)){if(!d)d=C_(i<<4)|0;else d=F_(d,i<<4)|0;c[46748]=d;c[46747]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];G3(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];G3(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];G3(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function pV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>.0001?1:(d<-.0001)<<31>>31)|0}function qV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[a>>3];f=+h[b>>3];if(e!=f){d=+h[c>>3];if(!(e<d&d<f))if(f<d)a=d<e;else a=0;else a=1}else{f=+h[a+8>>3];e=+h[c+8>>3];d=+h[b+8>>3];if(!(f<e&e<d))if(d<e)a=e<f;else a=0;else a=1}return a&1|0}function rV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+32|0;h=m+16|0;g=m;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];j=pV(g,h,i)|0;if((j|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],(qV(g,h,i)|0)!=0):0)f=1;else k=3;do if((k|0)==3){c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];f=pV(g,h,i)|0;if((f|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[e>>2],c[i+4>>2]=c[e+4>>2],c[i+8>>2]=c[e+8>>2],c[i+12>>2]=c[e+12>>2],qV(g,h,i)|0):0){f=1;break};c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];a=pV(g,h,i)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];k=(O(f,j)|0)<0;f=(O(pV(g,h,i)|0,a)|0)>>>31;f=k?f:0}while(0);l=m;return f|0}function sV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function tV(a){a=a|0;c[a+24>>2]=uV(c[a+4>>2]|0)|0;vV(a);return}function uV(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+2|0;f=C_(e<<2)|0;b=E_(O(a,a)|0,8)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=b;b=b+(a<<3)|0;d=d+1|0}while(1){if((a|0)>=(e|0))break;c[f+(a<<2)>>2]=0;a=a+1|0}return f|0}function vV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;p=l;l=l+32|0;i=p+16|0;g=p;j=c[a+4>>2]|0;m=c[a+8>>2]|0;n=c[a+16>>2]|0;o=c[a+20>>2]|0;d=c[a+24>>2]|0;b=0;while(1){if((b|0)>=(j|0))break;q=c[o+(b<<2)>>2]|0;e=m+(b<<4)|0;f=m+(q<<4)|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];r=+wV(g,i);f=c[d+(b<<2)>>2]|0;h[f+(q<<3)>>3]=r;h[(c[d+(q<<2)>>2]|0)+(b<<3)>>3]=r;a=b+-1|0;a=(q|0)==(a|0)?b+-2|0:a;while(1){if((a|0)<=-1)break;if((xV(b,a,m,n,o)|0?xV(a,b,m,n,o)|0:0)?(k=m+(a<<4)|0,c[g>>2]=c[e>>2],c[g+4>>2]=c[e+4>>2],c[g+8>>2]=c[e+8>>2],c[g+12>>2]=c[e+12>>2],c[i>>2]=c[k>>2],c[i+4>>2]=c[k+4>>2],c[i+8>>2]=c[k+8>>2],c[i+12>>2]=c[k+12>>2],yV(g,i,j,j,j,m,n)|0):0){c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];r=+wV(g,i);h[f+(a<<3)>>3]=r;h[(c[d+(a<<2)>>2]|0)+(b<<3)>>3]=r}a=a+-1|0}b=b+1|0}l=p;return}function wV(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0;e=l;l=l+32|0;f=e+16|0;g=e;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];d=+C(+(+sV(g,f)));l=e;return +d}function xV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+64|0;h=g+48|0;i=g+32|0;j=g+16|0;k=g;n=d+(c[f+(a<<2)>>2]<<4)|0;m=d+(a<<4)|0;e=d+(c[e+(a<<2)>>2]<<4)|0;f=d+(b<<4)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=zV(k,j,i,h)|0;l=g;return f|0}function yV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+64|0;n=p+48|0;m=p+32|0;k=p+16|0;j=p;i=0;while(1){if((i|0)>=(d|0)){o=4;break}r=g+(i<<4)|0;q=g+(c[h+(i<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[r>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];if(!(rV(j,k,m,n)|0))i=i+1|0;else{e=0;break}}a:do if((o|0)==4)while(1){if((e|0)>=(f|0)){e=1;break a}q=g+(e<<4)|0;r=g+(c[h+(e<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];c[n+12>>2]=c[r+12>>2];if(!(rV(j,k,m,n)|0)){e=e+1|0;o=4}else{e=0;break}}while(0);l=p;return e|0}function zV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=l;l=l+48|0;h=g+32|0;i=g+16|0;j=g;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];f=pV(j,i,h)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];e=pV(j,i,h)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];d=(pV(j,i,h)|0)>0;l=g;return (d?e|f:e&f)>>>31^1|0}function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=l;l=l+80|0;j=s+64|0;i=s+48|0;g=s+32|0;k=s+16|0;o=s;p=c[a+4>>2]|0;q=c[a+8>>2]|0;r=c[a+16>>2]|0;m=c[a+20>>2]|0;n=C_((p<<3)+16|0)|0;if((b|0)==-2222){c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b=BV(a,j)|0}if((b|0)>-1){a=c[a+12>>2]|0;f=c[a+(b+1<<2)>>2]|0;a=c[a+(b<<2)>>2]|0}else{f=p;a=p}b=0;while(1){if((b|0)>=(a|0)){b=a;break}u=q+(b<<4)|0;c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];u=q+(c[m+(b<<2)>>2]<<4)|0;t=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}while(1){if((b|0)>=(f|0)){b=f;break}h[n+(b<<3)>>3]=0.0;b=b+1|0}while(1){if((b|0)>=(p|0))break;t=q+(b<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=q+(c[m+(b<<2)>>2]<<4)|0;u=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[t>>2];c[k+4>>2]=c[t+4>>2];c[k+8>>2]=c[t+8>>2];c[k+12>>2]=c[t+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}h[n+(p<<3)>>3]=0.0;h[n+(p+1<<3)>>3]=0.0;l=s;return n|0}function BV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;m=l;l=l+32|0;f=m+8|0;e=m;h=m+24|0;i=a+8|0;j=a+12|0;k=h+4|0;d=0;while(1){if((d|0)>=(c[a>>2]|0)){d=-1111;break}o=c[j>>2]|0;n=c[o+(d<<2)>>2]|0;c[h>>2]=(c[i>>2]|0)+(n<<4);g=d+1|0;c[k>>2]=(c[o+(g<<2)>>2]|0)-n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];if(!(wU(e,f)|0))d=g;else break}l=m;return d|0}function CV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+64|0;n=t+48|0;m=t+32|0;p=t+16|0;o=t;r=c[f+4>>2]|0;s=c[f+8>>2]|0;q=c[f+16>>2]|0;g=(e|0)<0;do if((b|0)<0)if(g){g=0;i=0;f=0;h=0}else{b=c[f+12>>2]|0;f=0;h=0;i=e;j=b;b=b+(e<<2)|0;k=9}else{if(g){k=c[f+12>>2]|0;f=0;h=0;i=b;j=k;b=k+(b<<2)|0;k=9;break}g=c[f+12>>2]|0;if((b|0)>(e|0)){f=c[g+(e+1<<2)>>2]|0;h=c[g+(e<<2)>>2]|0;i=b;j=g;b=g+(b<<2)|0;k=9;break}else{f=c[g+(b+1<<2)>>2]|0;h=c[g+(b<<2)>>2]|0;i=e;j=g;b=g+(e<<2)|0;k=9;break}}while(0);if((k|0)==9){g=c[j+(i+1<<2)>>2]|0;i=c[b>>2]|0}b=0;while(1){if((b|0)>=(h|0)){k=13;break}j=s+(b<<4)|0;e=s+(c[q+(b<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];if(!(rV(o,p,m,n)|0))b=b+1|0;else{g=0;break}}a:do if((k|0)==13){while(1){if((f|0)>=(i|0))break;e=s+(f<<4)|0;k=s+(c[q+(f<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0)){f=f+1|0;k=13}else{g=0;break a}}while(1){if((g|0)>=(r|0)){g=1;break a}e=s+(g<<4)|0;k=s+(c[q+(g<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0))g=g+1|0;else{g=0;break}}}while(0);l=t;return g|0}function DV(a){a=a|0;return EV(a,0,0)|0}function EV(a,b,c){a=a|0;b=b|0;c=c|0;return FV(a,b,c,0)|0}function FV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!d){g=C_(496)|0;if(!g)g=0;else{c[g+12>>2]=35;c[g+16>>2]=105;c[g+20>>2]=103;d=35;h=6}}else{g=kb[c[d>>2]&63](496)|0;if(!g)g=0;else{h=c[d>>2]|0;c[g+12>>2]=h;c[g+16>>2]=c[d+4>>2];c[g+20>>2]=c[d+8>>2];d=h;h=6}}do if((h|0)==6){c[g+8>>2]=0;c[g+32>>2]=0;c[g+376>>2]=16;j=g+12|0;i=kb[d&63](256)|0;d=g+388|0;c[d>>2]=i;if(!i){tb[c[g+20>>2]&127](g);g=0;break}h=kb[c[j>>2]&63](1024)|0;i=g+44|0;c[i>>2]=h;if(!h){e=g+20|0;tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}c[g+48>>2]=h+1024;if(!f){f=GV(j)|0;c[g+352>>2]=f;if(!f){e=g+20|0;tb[c[e>>2]&127](c[i>>2]|0);tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}}else c[g+352>>2]=f;c[g+372>>2]=0;c[g+364>>2]=0;c[g+300>>2]=0;c[g+464>>2]=0;c[g+460>>2]=0;c[g+124>>2]=0;c[g+244>>2]=0;d=g+468|0;a[d>>0]=33;h=g+232|0;a[h>>0]=0;a[g+233>>0]=0;c[g+392>>2]=0;c[g+396>>2]=0;a[g+400>>0]=0;f=g+228|0;c[f>>2]=0;HV(g+412|0,j);HV(g+436|0,j);IV(g,b);if(b|0?(c[f>>2]|0)==0:0){JV(g);g=0;break}if(!e){c[g+224>>2]=TX()|0;break}else{a[h>>0]=1;c[g+224>>2]=xZ()|0;a[d>>0]=a[e>>0]|0;break}}while(0);return g|0}function GV(b){b=b|0;var d=0;d=kb[c[b>>2]&63](188)|0;if(d|0){HV(d+80|0,b);HV(d+104|0,b);QW(d,b);QW(d+20|0,b);QW(d+40|0,b);QW(d+60|0,b);a[d+131>>0]=0;QW(d+132|0,b);c[d+152>>2]=0;c[d+156>>2]=0;a[d+160>>0]=0;b=d+164|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a[d+128>>0]=1;a[d+129>>0]=0;a[d+130>>0]=0}return d|0}function HV(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=b;return}function IV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[d+276>>2]=56;EZ(d+252|0);if(e|0)c[d+228>>2]=RV(e,d+12|0)|0;c[d+356>>2]=0;HY(d+148|0,d+144|0,0)|0;c[d>>2]=0;c[d+4>>2]=0;e=d+116|0;g=d+52|0;h=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[e>>2]=d;c[d+120>>2]=0;e=d+128|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;e=c[d+8>>2]|0;c[d+24>>2]=e;c[d+28>>2]=e;c[d+36>>2]=0;c[d+40>>2]=0;e=d+312|0;g=d+404|0;c[g>>2]=0;c[g+4>>2]=0;g=d+280|0;f=d+304|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;g=e;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[e+36>>1]=0;a[f>>0]=1;c[d+308>>2]=0;c[d+360>>2]=0;c[d+368>>2]=0;c[d+380>>2]=0;c[d+236>>2]=0;c[d+248>>2]=0;c[d+240>>2]=0;c[d+472>>2]=0;c[d+476>>2]=0;a[d+484>>0]=0;a[d+485>>0]=0;c[d+488>>2]=0;c[d+492>>2]=0;return}function JV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(b|0){e=b+364|0;g=b+20|0;d=c[b+360>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d>>2]|0;tb[c[g>>2]&127](c[d+36>>2]|0);KV(c[d+44>>2]|0,b);tb[c[g>>2]&127](d);d=h}e=b+300|0;d=c[b+296>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d+8>>2]|0;tb[c[g>>2]&127](d);d=h}KV(c[b+372>>2]|0,b);KV(c[b+368>>2]|0,b);LV(b+412|0);LV(b+436|0);d=b+12|0;tb[c[g>>2]&127](c[b+228>>2]|0);if((a[b+484>>0]|0)==0?(f=c[b+352>>2]|0,f|0):0)MV(f,(c[b+472>>2]|0)==0&1,d);tb[c[g>>2]&127](c[b+388>>2]|0);tb[c[g>>2]&127](c[b+460>>2]|0);tb[c[g>>2]&127](c[b+8>>2]|0);tb[c[g>>2]&127](c[b+44>>2]|0);tb[c[g>>2]&127](c[b+392>>2]|0);tb[c[g>>2]&127](c[b+236>>2]|0);d=c[b+248>>2]|0;if(d|0)tb[d&127](c[b+240>>2]|0);tb[c[g>>2]&127](b)}return}function KV(a,b){a=a|0;b=b|0;var d=0;b=b+20|0;while(1){if(!a)break;d=c[a+4>>2]|0;tb[c[b>>2]&127](c[a+16>>2]|0);tb[c[b>>2]&127](a);a=d}return}function LV(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;b=c[a>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}b=c[a+4>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}return}function MV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+20|0;NV(f,g);d=d+8|0;while(1){e=OV(f)|0;if(!e)break;if(!(c[e+16>>2]|0))continue;tb[c[d>>2]&127](c[e+20>>2]|0)}PV(a);PV(a+132|0);PV(g);PV(a+40|0);PV(a+60|0);LV(a+80|0);LV(a+104|0);if(b<<24>>24){tb[c[d>>2]&127](c[a+184>>2]|0);tb[c[d>>2]&127](c[a+164>>2]|0)}tb[c[d>>2]&127](a);l=h;return}function NV(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=d;c[a+4>>2]=d+(c[b+8>>2]<<2);return}function OV(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=c[a>>2]|0;do{if((e|0)==(d|0)){b=0;break}b=e;e=e+4|0;c[a>>2]=e;b=c[b>>2]|0}while(!(b|0));return b|0}function PV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=a+8|0;e=a+16|0;b=0;while(1){f=c[(c[e>>2]|0)+8>>2]|0;g=c[a>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0)break;tb[f&127](c[g+(b<<2)>>2]|0);b=b+1|0}tb[f&127](g);return}function QV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=SV(a)|0;if(!f){c[a+276>>2]=57;f=TV(a,b,d,e)|0}return f|0}function RV(b,d){b=b|0;d=d|0;var e=0,f=0;e=0;do{f=e;e=e+1|0}while((a[b+f>>0]|0)!=0);d=kb[c[d>>2]&63](e)|0;if(!d)d=0;else F3(d|0,b|0,e|0)|0;return d|0}function SV(b){b=b|0;var d=0;d=b+228|0;if(!(nb[(a[b+232>>0]<<24>>24?35:34)&63](b+148|0,b+144|0,c[d>>2]|0)|0))b=PW(b,c[d>>2]|0)|0;else b=0;return b|0}function TV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;c[h>>2]=d;j=b+144|0;i=c[j>>2]|0;i=ob[c[i>>2]&127](i,d,e,h)|0;f=UV(b,c[j>>2]|0,d,e,i,c[h>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;l=g;return f|0}function UV(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ga=l;l=l+16|0;Da=Ga;c[Da>>2]=i;r=c[b+352>>2]|0;s=b+144|0;if((c[s>>2]|0)==(e|0)){p=b+284|0;q=b+288|0;na=b+296|0}else{na=b+296|0;q=c[na>>2]|0;p=q;q=q+4|0}t=k<<24>>24!=0;pa=b+252|0;u=b+80|0;v=b+476|0;w=b+84|0;x=b+320|0;y=b+412|0;z=b+316|0;A=b+424|0;B=b+428|0;C=b+324|0;ra=b+4|0;D=b+485|0;E=r+132|0;F=b+312|0;ta=r+129|0;G=r+128|0;H=r+80|0;I=r+92|0;J=r+96|0;K=b+136|0;L=b+88|0;M=b+488|0;va=b+112|0;wa=r+131|0;xa=b+116|0;ya=r+130|0;za=b+108|0;Aa=b+356|0;N=b+340|0;O=b+132|0;P=b+344|0;Q=b+348|0;R=b+328|0;S=b+349|0;T=b+420|0;U=r+120|0;V=r+116|0;W=b+92|0;X=b+472|0;Y=b+336|0;Z=b+332|0;_=b+96|0;$=b+256|0;aa=b+464|0;ba=b+460|0;ca=r+160|0;da=r+184|0;ea=r+180|0;fa=r+164|0;ga=b+128|0;ha=b+12|0;ia=b+16|0;ja=b+268|0;ka=b+120|0;la=r+176|0;ma=r+168|0;o=e;n=f;e=h;a:while(1){c[p>>2]=n;f=c[Da>>2]|0;c[q>>2]=f;i=f;b:do if((e|0)<1){if(t&(e|0)!=0){m=7;break a}switch(e|0){case -1:{i=5;m=280;break a}case 0:{m=9;break a}case -2:{i=6;break a}case -4:{m=10;break a}case -15:{e=15;break b}default:{}}c[Da>>2]=g;e=0-e|0;i=g}while(0);h=pb[c[pa>>2]&127](pa,e,n,i,o)|0;c:do switch(h|0){case 2:{m=58;break a}case -1:{m=184;break a}case 1:{i=VV(b,0,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 4:{if(!(c[w>>2]|0))i=1;else{m=WV(y,o,n,c[Da>>2]|0)|0;c[z>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];c[C>>2]=0;i=0}c[x>>2]=0;m=274;break}case 7:{i=c[w>>2]|0;if(!i)m=275;else{yb[i&15](c[ra>>2]|0,c[z>>2]|0,c[x>>2]|0,c[C>>2]|0,1);c[z>>2]=0;XV(y);i=o}break}case 57:{i=VV(b,1,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 6:{a[D>>0]=0;m=YV(b,E,75291,36)|0;c[F>>2]=m;if(!m){i=1;m=280;break a}a[ta>>0]=1;if(!(c[w>>2]|0))m=33;else{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[B>>2]=c[A>>2];c[C>>2]=i;i=0;m=34}break}case 14:{m=33;break}case 8:{i=c[z>>2]|0;if(!i)i=1;else{yb[c[w>>2]&15](c[ra>>2]|0,i,c[x>>2]|0,c[C>>2]|0,0);XV(y);i=0}if(!((c[x>>2]|0)==0?!(a[D>>0]|0):0)){f=a[ta>>0]|0;a[ta>>0]=1;do if(c[M>>2]|0?c[va>>2]|0:0){h=YV(b,E,75291,36)|0;if(!h){i=1;m=280;break a}if(!(a[D>>0]|0))e=h+20|0;else{e=h+20|0;c[e>>2]=c[Aa>>2]}a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[e>>2]|0,c[h+16>>2]|0,c[h+24>>2]|0)|0)){i=21;m=280;break a}if(!(a[wa>>0]|0)){if(c[x>>2]|0)break;a[ta>>0]=f;break}if(((a[ya>>0]|0)==0?(oa=c[za>>2]|0,oa|0):0)?(kb[oa&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}}while(0);a[D>>0]=0}e=c[L>>2]|0;if(!e)m=274;else{tb[e&127](c[ra>>2]|0);i=o}break}case 34:{m=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=m;if(!m){i=1;m=280;break a}else m=80;break}case 22:{m=aW(b,o,n,c[Da>>2]|0)|0;c[P>>2]=m;if(!m){i=1;m=280;break a}a[Q>>0]=0;c[R>>2]=0;a[S>>0]=0;m=80;break}case 23:{a[Q>>0]=1;c[R>>2]=139106;m=80;break}case 24:{a[S>>0]=1;c[R>>2]=139112;m=80;break}case 25:{c[R>>2]=139115;m=80;break}case 26:{c[R>>2]=139121;m=80;break}case 27:{c[R>>2]=139128;m=80;break}case 28:{c[R>>2]=139135;m=80;break}case 29:{c[R>>2]=139144;m=80;break}case 30:{c[R>>2]=139152;m=80;break}case 32:case 31:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0){if(!(bW(y,(c[R>>2]|0)==0?((h|0)==32?139161:139171):139173)|0)){i=1;m=280;break a}if(!(cW(y,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}c[R>>2]=c[B>>2];i=o}else m=275;break}case 36:case 35:{if(a[G>>0]|0){if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,a[S>>0]|0,0,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(qa=c[R>>2]|0,(qa|0)!=0):0){switch(a[qa>>0]|0){case 40:{m=93;break}case 78:{if((a[qa+1>>0]|0)==79)m=93;break}default:{}}if((m|0)==93){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,0,(h|0)==36&1);XV(y);i=o}else m=275}else m=275;break}case 38:case 37:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=fW(b,o,a[Q>>0]|0,n+i|0,(c[Da>>2]|0)+(0-i)|0,H)|0;if(i|0){m=280;break a}e=c[J>>2]|0;c[J>>2]=c[I>>2];if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,0,e,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(sa=c[R>>2]|0,(sa|0)!=0):0){switch(a[sa>>0]|0){case 40:{m=108;break}case 78:{if((a[sa+1>>0]|0)==79)m=108;break}default:{}}if((m|0)==108){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,e,(h|0)==38&1);XV(y);i=o}else m=275}else m=275;break}case 12:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=gW(b,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;e=c[F>>2]|0;f=c[U>>2]|0;if(e){c[e+4>>2]=f;c[(c[F>>2]|0)+8>>2]=(c[V>>2]|0)-(c[U>>2]|0);c[U>>2]=c[V>>2];if(!(c[K>>2]|0))e=1;else{c[q>>2]=n;e=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[e>>2]|0,d[e+33>>0]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[Aa>>2]|0,0,0,0);e=0}}else{c[V>>2]=f;e=1}if(!i){i=e;m=274}else{m=280;break a}}else m=275;break}case 5:{a[D>>0]=0;a[ta>>0]=1;if(!(c[w>>2]|0)){c[x>>2]=75291;i=1}else{m=c[o+64>>2]|0;m=WV(y,o,n+m|0,(c[Da>>2]|0)+(0-m)|0)|0;c[x>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];i=0}if((((a[ya>>0]|0)==0?(c[M>>2]|0)==0:0)?(ua=c[za>>2]|0,ua|0):0)?(kb[ua&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}if(!(c[F>>2]|0)){e=YV(b,E,75291,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}c[e+24>>2]=0;m=133}else m=133;break}case 13:{i=1;m=133;break}case 15:{if(((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0)?(c[K>>2]|0)!=0:0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,d[i+33>>0]|0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,0);i=o}else m=275;break}case 16:{if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){h=WV(H,o,n,c[Da>>2]|0)|0;c[(c[F>>2]|0)+28>>2]=h;if(!(c[(c[F>>2]|0)+28>>2]|0)){i=1;m=280;break a}c[J>>2]=c[I>>2];if(c[W>>2]|0){c[q>>2]=n;i=c[F>>2]|0;zb[c[W>>2]&15](c[ra>>2]|0,c[i>>2]|0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o;break c}if(c[K>>2]|0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o}else m=275}else m=275;break}case 9:{if(nb[c[o+44>>2]&63](o,n,c[Da>>2]|0)|0){c[F>>2]=0;m=275;break c}if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,r,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=0;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 10:{if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,E,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=1;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 18:{c[Y>>2]=0;c[Z>>2]=0;if(!(c[_>>2]|0))m=275;else{n=WV(y,o,n,c[Da>>2]|0)|0;c[Z>>2]=n;if(!n){i=1;m=280;break a}c[B>>2]=c[A>>2];i=o}break}case 21:{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}if(!(c[Z>>2]|0))m=275;else{i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[Y>>2]=i;c[B>>2]=c[A>>2];i=o}break}case 19:{if((c[Z>>2]|0)!=0?(c[_>>2]|0)!=0:0){i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,i,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 20:{if((c[Y>>2]|0)!=0?(c[_>>2]|0)!=0:0){c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,0,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 58:{if(c[u>>2]|0)hW(b,o,n,c[Da>>2]|0);i=iW(b,o,Da,g,j,k)|0;if(i|0){m=280;break a}if(!(c[Da>>2]|0)){m=189;break a}else i=o;break}case 44:{i=c[aa>>2]|0;do if((c[$>>2]|0)>>>0>=i>>>0){if(!i){h=c[ha>>2]|0;c[aa>>2]=32;h=kb[h&63](32)|0;c[ba>>2]=h;if(!h){m=198;break a}else break}f=c[ia>>2]|0;h=c[ba>>2]|0;i=i<<1;c[aa>>2]=i;i=lb[f&127](h,i)|0;if(!i){m=193;break a}c[ba>>2]=i;i=c[da>>2]|0;if(i|0){i=lb[c[ia>>2]&127](i,c[aa>>2]<<2)|0;if(!i){i=1;m=280;break a}c[da>>2]=i}}while(0);a[(c[ba>>2]|0)+(c[$>>2]|0)>>0]=0;if(a[ca>>0]|0){i=kW(b)|0;if((i|0)<0){i=1;m=280;break a}c[(c[da>>2]|0)+(c[ea>>2]<<2)>>2]=i;c[ea>>2]=(c[ea>>2]|0)+1;c[(c[fa>>2]|0)+(i*28|0)>>2]=6;if(c[ga>>2]|0)i=o;else m=275}else m=275;break}case 50:{i=(c[ba>>2]|0)+(c[$>>2]|0)|0;if((a[i>>0]|0)==124){i=2;m=280;break a}a[i>>0]=44;if((a[ca>>0]|0)!=0?(c[ga>>2]|0)!=0:0)i=o;else m=275;break}case 49:{f=c[ba>>2]|0;e=c[$>>2]|0;i=a[f+e>>0]|0;if(i<<24>>24==44){i=2;m=280;break a}if(i<<24>>24==0&(a[ca>>0]|0)!=0?(Ba=(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)|0,(c[Ba>>2]|0)!=3):0){c[Ba>>2]=5;i=(c[ga>>2]|0)==0&1;f=c[ba>>2]|0;e=c[$>>2]|0}else i=1;a[f+e>>0]=124;m=274;break}case 59:case 60:{a[ta>>0]=1;if(c[M>>2]|0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break a}f=YV(b,E,e,0)|0;c[I>>2]=c[J>>2];do if(c[ja>>2]|0){if(!(a[ya>>0]|0)){if(a[ta>>0]|0){m=219;break}}else if(c[na>>2]|0){m=219;break}if(!f){i=11;m=280;break a}if(!(a[f+34>>0]|0)){i=24;m=280;break a}}else m=219;while(0);if((m|0)==219?(m=0,(f|0)==0):0){a[G>>0]=a[ya>>0]|0;if((h|0)!=60){m=275;break c}i=c[ka>>2]|0;if(!i){m=275;break c}vb[i&127](c[ra>>2]|0,e,1);i=o;break c}i=f+32|0;if(a[i>>0]|0){i=12;m=280;break a}if(c[f+4>>2]|0){i=lW(b,f,(h|0)==60&1)|0;e=(i|0)==0;if(e){i=(e^1)&1;m=274;break c}else{m=280;break a}}if(!(c[va>>2]|0)){a[G>>0]=a[ya>>0]|0;m=275;break c}a[wa>>0]=0;a[i>>0]=1;h=(pb[c[va>>2]&127](c[xa>>2]|0,0,c[f+20>>2]|0,c[f+16>>2]|0,c[f+24>>2]|0)|0)==0;a[i>>0]=0;if(h){i=21;m=280;break a}e=a[ya>>0]|0;if(!(a[wa>>0]|0)){a[G>>0]=e;i=o;break c}else i=0}else{e=a[ya>>0]|0;a[G>>0]=e;i=1}if((e<<24>>24==0?(Ca=c[za>>2]|0,(Ca|0)!=0):0)?(kb[Ca&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}else m=274;break}case 40:{if(!(c[ga>>2]|0))m=275;else{n=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=n;if(!n){i=1;m=280;break a}c[ea>>2]=0;c[la>>2]=0;a[ca>>0]=1;i=o}break}case 42:case 41:{if(!(a[ca>>0]|0))m=275;else{if(!(c[ga>>2]|0))i=1;else{i=kb[c[ha>>2]&63](20)|0;if(!i){i=1;m=280;break a}m=i+4|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[i>>2]=(h|0)==41?2:1;c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,i);i=0}a[ca>>0]=0;m=274}break}case 43:{if((a[ca>>0]|0)!=0?(c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)>>2]=3,(c[ga>>2]|0)!=0):0)i=o;else m=275;break}case 51:{e=0;m=247;break}case 53:{e=1;m=247;break}case 52:{e=2;m=247;break}case 54:{e=3;m=247;break}case 45:{f=0;m=258;break}case 47:{f=1;m=258;break}case 46:{f=2;m=258;break}case 48:{f=3;m=258;break}case 55:{if(!(nW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 56:{if(!(oW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 0:{if((e|0)==14)i=o;else m=275;break}case 3:{if(!(c[w>>2]|0))m=275;else i=o;break}case 11:{if((a[G>>0]|0)!=0?(c[K>>2]|0)!=0:0)i=o;else m=275;break}case 17:{if(!(c[_>>2]|0))m=275;else i=o;break}case 33:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275;break}case 39:{if(!(c[ga>>2]|0))m=275;else i=o;break}default:m=275}while(0);if((m|0)==33)if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break}else{i=1;m=34}else if((m|0)==80){m=0;if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275}else if((m|0)==133){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;c[(c[F>>2]|0)+16>>2]=e;e=c[F>>2]|0;if(!(c[e+16>>2]|0)){i=1;m=280;break}c[e+20>>2]=c[Aa>>2];c[J>>2]=c[I>>2];if((h|0)==13&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}else if((m|0)==247){m=0;if(a[ca>>0]|0){i=c[Da>>2]|0;if(e)i=i+(0-(c[o+64>>2]|0))|0;f=kW(b)|0;if((f|0)<0){i=1;m=280;break}c[(c[fa>>2]|0)+(f*28|0)>>2]=4;c[(c[fa>>2]|0)+(f*28|0)+4>>2]=e;i=$V(b,o,n,i)|0;if(!i){i=1;m=280;break}e=c[i>>2]|0;c[(c[fa>>2]|0)+(f*28|0)+8>>2]=e;i=0;do{h=i;i=i+1|0}while((a[e+h>>0]|0)!=0);c[ma>>2]=(c[ma>>2]|0)+i;if(c[ga>>2]|0)i=o;else m=275}else m=275}else if((m|0)==258)if(a[ca>>0]|0){e=(c[ga>>2]|0)==0;i=e&1;m=(c[ea>>2]|0)+-1|0;c[ea>>2]=m;c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+(m<<2)>>2]|0)*28|0)+4>>2]=f;if(!(c[ea>>2]|0)){if(!e){e=mW(b)|0;if(!e){i=1;m=280;break}c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,e)}a[ca>>0]=0;c[ma>>2]=0;m=274}else m=274}else m=275;if((m|0)==34){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break}ZV(e);c[(c[F>>2]|0)+24>>2]=e;c[J>>2]=c[I>>2];if((h|0)==14&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}if((m|0)==274){m=0;if(!(i<<24>>24))i=o;else m=275}if((m|0)==275){m=0;if(!(c[u>>2]|0))i=o;else{hW(b,o,n,c[Da>>2]|0);i=o}}switch(c[v>>2]|0){case 3:{m=278;break a}case 2:{i=35;m=280;break a}default:{}}e=c[Da>>2]|0;o=i;n=e;e=ob[c[i>>2]&127](i,e,g,Da)|0}d:switch(m|0){case 7:{c[j>>2]=n;i=0;break}case 9:{c[p>>2]=f;i=4;break}case 10:{i=(o|0)==(c[s>>2]|0);if(!i?(a[(c[na>>2]|0)+20>>0]|0)==0:0){c[j>>2]=n;i=0;break}if((a[b+484>>0]|0)!=0|i^1)if((pb[c[pa>>2]&127](pa,-4,g,g,o)|0)==-1)i=29;else{c[j>>2]=n;i=0}else i=3;break}case 58:{do if((a[D>>0]|0?(Ea=a[ta>>0]|0,a[ta>>0]=1,c[M>>2]|0):0)?c[va>>2]|0:0){i=YV(b,E,75291,36)|0;if(!i){i=1;break d}Da=i+20|0;c[Da>>2]=c[Aa>>2];a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[Da>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0)|0)){i=21;break d}if(!(a[wa>>0]|0)){a[ta>>0]=Ea;break}if(((a[ya>>0]|0)==0?(Fa=c[za>>2]|0,Fa|0):0)?(kb[Fa&63](c[ra>>2]|0)|0)==0:0){i=22;break d}}while(0);c[b+276>>2]=58;i=_V(b,n,g,j)|0;break}case 184:{i=(e|0)==28?10:(e|0)==12?17:2;break}case 189:{c[b+276>>2]=59;i=0;break}case 193:{c[aa>>2]=(c[aa>>2]|0)>>>1;i=1;break}case 198:{c[aa>>2]=0;i=1;break}case 278:{c[j>>2]=c[Da>>2];i=0;break}case 280:break}l=Ga;return i|0}function VV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q+16|0;m=q+12|0;i=q+8|0;j=q+4|0;k=q;c[p>>2]=0;c[m>>2]=0;c[i>>2]=0;c[k>>2]=-1;n=b+144|0;o=b+284|0;g=(d|0)!=0;a:do if(rb[(a[b+232>>0]<<24>>24?2:1)&3](d,c[n>>2]|0,e,f,o,i,j,p,m,k)|0){if((c[k>>2]|0)==1&(g^1)?(a[(c[b+352>>2]|0)+130>>0]=1,h=b+488|0,(c[h>>2]|0)==1):0)c[h>>2]=0;h=b+140|0;if(!(c[h>>2]|0))if(!(c[b+80>>2]|0)){e=0;d=0}else{hW(b,c[n>>2]|0,e,f);e=0;d=0}else{d=c[p>>2]|0;if(!d)d=0;else{f=c[n>>2]|0;d=WV(b+436|0,f,d,d+(lb[c[f+28>>2]&127](f,d)|0)|0)|0;if(!d){d=1;break}c[b+452>>2]=c[b+448>>2]}g=c[i>>2]|0;if(g){i=c[n>>2]|0;g=WV(b+436|0,i,g,(c[j>>2]|0)+(0-(c[i+64>>2]|0))|0)|0;if(!g){d=1;break}}else g=0;xb[c[h>>2]&31](c[b+4>>2]|0,g,d,c[k>>2]|0);e=g}do if(!(c[b+228>>2]|0)){g=c[m>>2]|0;h=g;if(g|0){k=c[g+64>>2]|0;m=c[n>>2]|0;if((k|0)==(c[m+64>>2]|0)?(k|0)!=2|(g|0)==(m|0):0){c[n>>2]=h;break}c[o>>2]=c[p>>2];d=19;break a}g=c[p>>2]|0;if(g|0){h=b+436|0;if(!d){d=c[n>>2]|0;d=WV(h,d,g,g+(lb[c[d+28>>2]&127](d,g)|0)|0)|0;if(!d){d=1;break a}}d=PW(b,d)|0;XV(h);if((d|0)!=18)break a;c[o>>2]=c[p>>2];d=18;break a}}while(0);if((d|0)!=0|(e|0)!=0){XV(b+436|0);d=0}else d=0}else d=g?31:30;while(0);l=q;return d|0}function WV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;do if(!(cW(b,d,e,f)|0))d=0;else{e=b+12|0;d=c[e>>2]|0;if((d|0)==(c[b+8>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=0;d=c[b+16>>2]|0}while(0);return d|0}function XV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+4|0;b=c[e>>2]|0;a:do if(!b){c[e>>2]=c[a>>2];b=a}else{d=c[a>>2]|0;while(1){if(!d){b=a;break a}g=c[d>>2]|0;c[d>>2]=b;c[e>>2]=d;f=d;d=g;b=f}}while(0);c[b>>2]=0;c[a+16>>2]=0;c[a+12>>2]=0;c[a+8>>2]=0;return}function YV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=e+8|0;a:do if(!(c[w>>2]|0))if(g){a[e+4>>0]=6;c[w>>2]=64;h=e+16|0;i=kb[c[c[h>>2]>>2]&63](256)|0;c[e>>2]=i;if(!i){c[w>>2]=0;h=0;break}else{H3(i|0,0,256)|0;j=NW(b,f)|0;j=(c[w>>2]|0)+-1&j;i=e;o=27;break}}else h=0;else{v=NW(b,f)|0;k=c[w>>2]|0;j=k+-1|0;l=c[e>>2]|0;m=v&0-k;u=e+4|0;n=j>>>2;i=0;j=j&v;while(1){h=c[l+(j<<2)>>2]|0;if(!h)break;if((OW(f,c[h>>2]|0)|0)<<24>>24)break a;if(!(i<<24>>24))h=(m>>>((d[u>>0]|0)+-1|0)&n|1)&255;else h=i;t=h&255;i=h;j=j-t+(j>>>0<t>>>0?k:0)|0}if(g){i=a[u>>0]|0;h=i&255;if(!((c[e+12>>2]|0)>>>(h+-1|0))){h=e+16|0;i=e;o=27;break}q=h+1&255;j=i+1&255;s=1<<j;r=s+-1|0;i=s<<2;h=e+16|0;t=kb[c[c[h>>2]>>2]&63](i)|0;if(t){H3(t|0,0,i|0)|0;p=0-s|0;n=j+-1|0;o=r>>>2;m=0;while(1){if(m>>>0>=(c[w>>2]|0)>>>0)break;i=c[(c[e>>2]|0)+(m<<2)>>2]|0;if(i|0){i=NW(b,c[i>>2]|0)|0;k=((i&p)>>>n&o|1)&255;i=i&r;j=0;while(1){l=t+(i<<2)|0;if(!(c[l>>2]|0))break;l=j<<24>>24==0?k:j;x=l&255;i=i+(i>>>0<x>>>0?s:0)-x|0;j=l}c[l>>2]=c[(c[e>>2]|0)+(m<<2)>>2]}m=m+1|0}tb[c[(c[h>>2]|0)+8>>2]&127](c[e>>2]|0);c[e>>2]=t;a[u>>0]=q;c[w>>2]=s;k=((v&p)>>>n&o|1)&255;i=r&v;j=0;while(1){if(!(c[t+(i<<2)>>2]|0)){j=i;i=e;o=27;break a}x=j<<24>>24==0?k:j;w=x&255;i=i+(i>>>0<w>>>0?s:0)-w|0;j=x}}else h=0}else h=0}while(0);if((o|0)==27){h=kb[c[c[h>>2]>>2]&63](g)|0;c[(c[i>>2]|0)+(j<<2)>>2]=h;h=c[(c[i>>2]|0)+(j<<2)>>2]|0;if(!h)h=0;else{H3(h|0,0,g|0)|0;c[c[(c[i>>2]|0)+(j<<2)>>2]>>2]=f;h=e+12|0;c[h>>2]=(c[h>>2]|0)+1;h=c[(c[i>>2]|0)+(j<<2)>>2]|0}}return h|0}function ZV(b){b=b|0;var c=0,d=0,e=0;e=b;c=b;while(1){d=a[e>>0]|0;if(!(d<<24>>24))break;switch(d<<24>>24|0){case 10:case 13:case 32:{if((c|0)!=(b|0)){if((a[c+-1>>0]|0)!=32){a[c>>0]=32;c=c+1|0}}else c=b;break}default:{a[c>>0]=d;c=c+1|0}}e=e+1|0}if((c|0)!=(b|0)){b=c+-1|0;b=(a[b>>0]|0)==32?b:c}a[b>>0]=0;return}function _V(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,0,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function $V(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+352>>2]|0;b=WV(g+80|0,b,d,e)|0;do if((b|0)!=0?(f=YV(a,g+20|0,b,24)|0,(f|0)!=0):0)if((c[f>>2]|0)==(b|0)){c[g+96>>2]=c[g+92>>2];if(!(CW(a,f)|0)){f=0;break}}else c[g+92>>2]=c[g+96>>2];else f=0;while(0);return f|0}function aW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+352>>2]|0;k=m+80|0;n=m+92|0;h=c[n>>2]|0;l=m+88|0;if((h|0)==(c[l>>2]|0))if(!((eW(k)|0)<<24>>24))g=0;else{h=c[n>>2]|0;i=4}else i=4;a:do if((i|0)==4){c[n>>2]=h+1;a[h>>0]=0;d=WV(k,d,e,f)|0;if((d|0)!=0?(j=d+1|0,g=YV(b,m+40|0,j,12)|0,(g|0)!=0):0){if((c[g>>2]|0)!=(j|0)){c[n>>2]=c[m+96>>2];break}h=c[n>>2]|0;i=m+96|0;c[i>>2]=h;if(a[b+232>>0]|0){e=a[j>>0]|0;b:do if(e<<24>>24==120)if((((a[d+2>>0]|0)==109?(a[d+3>>0]|0)==108:0)?(a[d+4>>0]|0)==110:0)?(a[d+5>>0]|0)==115:0){switch(a[d+6>>0]|0){case 0:{h=m+152|0;break}case 58:{h=YV(b,m+60|0,d+7|0,8)|0;break}default:{f=0;d=120;break b}}c[g+4>>2]=h;a[g+9>>0]=1;break a}else{f=0;d=120}else{f=0;d=e}while(0);c:while(1){switch(d<<24>>24){case 0:break a;case 58:{e=0;break c}default:{}}d=f+1|0;f=d;d=a[j+d>>0]|0}while(1){d=(h|0)==(c[l>>2]|0);if((e|0)>=(f|0))break;if(d){if(!((eW(k)|0)<<24>>24)){g=0;break a}h=c[n>>2]|0}d=a[j+e>>0]|0;c[n>>2]=h+1;a[h>>0]=d;e=e+1|0;h=c[n>>2]|0}if(d){if(!((eW(k)|0)<<24>>24)){g=0;break}h=c[n>>2]|0}c[n>>2]=h+1;a[h>>0]=0;h=YV(b,m+60|0,c[i>>2]|0,8)|0;c[g+4>>2]=h;if(h){d=c[i>>2]|0;if((c[h>>2]|0)==(d|0)){c[i>>2]=c[n>>2];break}else{c[n>>2]=d;break}}else g=0}}else g=0}while(0);return g|0}function bW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b+12|0;h=b+8|0;while(1){e=a[d>>0]|0;if(!(e<<24>>24)){i=7;break}f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}f=c[g>>2]|0;e=a[d>>0]|0}c[g>>2]=f+1;a[f>>0]=e;d=d+1|0}if((i|0)==7)d=c[b+16>>2]|0;return d|0}function cW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;c[h>>2]=d;g=a+12|0;if((c[g>>2]|0)==0?(eW(a)|0)<<24>>24==0:0)d=0;else f=3;a:do if((f|0)==3){d=b+56|0;f=a+8|0;while(1){if((pb[c[d>>2]&127](b,h,e,g,c[f>>2]|0)|0)>>>0<2)break;if(!((eW(a)|0)<<24>>24)){d=0;break a}}d=c[a+16>>2]|0}while(0);l=i;return d|0}function dW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;i=f<<24>>24==0;n=b+12|0;m=c[n>>2]|0;a:do if(!(i&(g|0)==0)){j=b+20|0;f=0;while(1){if((f|0)>=(m|0))break;if((c[(c[j>>2]|0)+(f*12|0)>>2]|0)==(d|0)){f=1;break a}else f=f+1|0}if((!i?(k=b+8|0,(c[k>>2]|0)==0):0)?(a[d+9>>0]|0)==0:0){c[k>>2]=d;l=9}else l=9}else l=9;while(0);b:do if((l|0)==9){j=b+16|0;do if((m|0)==(c[j>>2]|0))if(!m){c[j>>2]=8;f=kb[c[h+12>>2]&63](96)|0;c[b+20>>2]=f;if(f|0)break;c[j>>2]=0;f=0;break b}else{i=b+20|0;f=lb[c[h+16>>2]&127](c[i>>2]|0,m*24|0)|0;if(!f){f=0;break b}c[j>>2]=m<<1;c[i>>2]=f;break}else f=c[b+20>>2]|0;while(0);h=c[n>>2]|0;c[f+(h*12|0)>>2]=d;c[f+(h*12|0)+8>>2]=g;a[f+(h*12|0)+4>>0]=e;if(!(e<<24>>24))a[d+8>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=1}while(0);return f|0}function eW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+4|0;e=c[b>>2]|0;do if(e){f=a+16|0;g=c[f>>2]|0;if(!g){c[a>>2]=e;c[b>>2]=c[e>>2];c[e>>2]=0;l=c[a>>2]|0;b=l+8|0;c[f>>2]=b;c[a+8>>2]=(c[l+4>>2]|0)+(l+8);c[a+12>>2]=b;b=1;break}d=a+8|0;if(((c[d>>2]|0)-g|0)<(c[e+4>>2]|0)){k=c[e>>2]|0;c[e>>2]=c[a>>2];l=c[b>>2]|0;c[a>>2]=l;c[b>>2]=k;b=c[f>>2]|0;F3(l+8|0,b|0,(c[d>>2]|0)-b|0)|0;b=c[a>>2]|0;l=a+12|0;c[l>>2]=(c[l>>2]|0)-(c[f>>2]|0)+(b+8);c[f>>2]=b+8;c[d>>2]=(c[b+4>>2]|0)+(b+8);b=1}else h=6}else h=6;while(0);a:do if((h|0)==6){e=c[a>>2]|0;k=a+16|0;do if(!e){i=k;b=c[k>>2]|0}else{j=c[k>>2]|0;b=j;if((j|0)!=(e+8|0)){i=k;break}f=a+8|0;g=(c[f>>2]|0)-b<<1;h=a+12|0;d=(c[h>>2]|0)-b|0;if((g|0)<0){b=0;break a}b=MW(g)|0;if(!b){b=0;break a}b=lb[c[(c[a+20>>2]|0)+4>>2]&127](e,b)|0;if(!b){b=0;break a}c[a>>2]=b;c[b+4>>2]=g;b=c[a>>2]|0;c[h>>2]=b+8+d;c[k>>2]=b+8;c[f>>2]=b+8+g;b=1;break a}while(0);j=a+8|0;b=(c[j>>2]|0)-b|0;if((b|0)>=0){if((b|0)>=1024){b=b<<1;if((b|0)<0){b=0;break}}else b=1024;d=MW(b)|0;if((d|0)!=0?(l=kb[c[c[a+20>>2]>>2]&63](d)|0,(l|0)!=0):0){c[l+4>>2]=b;c[l>>2]=c[a>>2];c[a>>2]=l;h=a+12|0;a=c[h>>2]|0;e=c[k>>2]|0;d=a;f=e;if((a|0)==(e|0)){g=l+8|0;e=f}else{g=l+8|0;F3(g|0,e|0,d-f|0)|0;e=c[i>>2]|0;d=c[h>>2]|0}c[h>>2]=l+8+(d-e);c[k>>2]=g;c[j>>2]=l+8+b;b=1}else b=0}else b=0}while(0);return b|0}function fW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=LW(b,d,e,f,g,h)|0;do if(!b){d=h+12|0;b=c[d>>2]|0;if((e<<24>>24==0?(c[h+16>>2]|0)!=(b|0):0)?(i=b+-1|0,(a[i>>0]|0)==32):0){c[d>>2]=i;b=i}if((b|0)==(c[h+8>>2]|0)){if(!((eW(h)|0)<<24>>24)){b=1;break}b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=0;b=0}while(0);return b|0}function gW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+16|0;B=H;C=H+4|0;g=c[b+352>>2]|0;D=g+104|0;F=b+272|0;E=c[F>>2]|0;c[F>>2]=1;if((c[D>>2]|0)==0?(eW(D)|0)<<24>>24==0:0)g=1;else{n=d+20|0;o=b+484|0;p=b+144|0;q=b+412|0;r=d+64|0;s=g+132|0;t=b+428|0;u=b+424|0;v=b+224|0;w=b+112|0;m=g+130|0;x=g+128|0;y=g+131|0;z=b+116|0;A=g+112|0;j=g+116|0;k=d+40|0;a:while(1){b:do switch(ob[c[n>>2]&127](d,e,f,B)|0){case -4:{g=0;break a}case -1:{G=37;break a}case 0:{G=39;break a}case 28:{if((a[o>>0]|0)==0?(c[p>>2]|0)==(d|0):0){G=19;break a}g=c[r>>2]|0;g=WV(q,d,e+g|0,(c[B>>2]|0)+(0-g)|0)|0;if(!g){g=1;break a}h=YV(b,s,g,0)|0;c[u>>2]=c[t>>2];if(!h){G=9;break a}i=h+32|0;if(a[i>>0]|0){G=11;break a}g=h+16|0;if(!(c[g>>2]|0)){a[i>>0]=1;g=c[h+4>>2]|0;g=gW(b,c[v>>2]|0,g,g+(c[h+8>>2]|0)|0)|0;a[i>>0]=0;if(!g)break b;else break a}if(c[w>>2]|0){a[y>>0]=0;a[i>>0]=1;h=(pb[c[w>>2]&127](c[z>>2]|0,0,c[h+20>>2]|0,c[g>>2]|0,c[h+24>>2]|0)|0)==0;a[i>>0]=0;if(h){g=21;break a}if(a[y>>0]|0)break b}a[x>>0]=a[m>>0]|0;break}case 6:case 9:{if(!(cW(D,d,e,c[B>>2]|0)|0)){g=1;break a}break}case -3:{c[B>>2]=e+(c[r>>2]|0);G=22;break}case 7:{G=22;break}case 10:{g=lb[c[k>>2]&127](d,e)|0;if((g|0)<0){G=27;break a}h=gX(g,C)|0;e=0;while(1){if((e|0)>=(h|0))break;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;G=35;break a}g=c[j>>2]|0}i=a[C+e>>0]|0;c[j>>2]=g+1;a[g>>0]=i;e=e+1|0}break}default:{G=41;break a}}while(0);if((G|0)==22){G=0;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;break}g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=10}e=c[B>>2]|0}if((G|0)==9){a[x>>0]=a[m>>0]|0;g=0}else if((G|0)==11)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=12}else g=12;else if((G|0)==19){c[b+284>>2]=e;g=10}else if((G|0)==27)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=14;G=35}else{g=14;G=35}else if((G|0)==37)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=4}else g=4;else if((G|0)==39)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=c[B>>2];g=4}else g=4;else if((G|0)==41)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=23}else g=23;c[F>>2]=E}l=H;return g|0}function hW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;n=p;o=p+4|0;c[n>>2]=e;if(!(a[d+68>>0]|0)){if((c[b+144>>2]|0)==(d|0)){g=b+288|0;h=b+284|0}else{h=c[b+296>>2]|0;g=h+4|0}i=b+44|0;j=d+56|0;k=b+48|0;m=b+80|0;e=b+4|0;do{c[o>>2]=c[i>>2];b=pb[c[j>>2]&127](d,n,f,o,c[k>>2]|0)|0;c[g>>2]=c[n>>2];q=c[i>>2]|0;vb[c[m>>2]&127](c[e>>2]|0,q,(c[o>>2]|0)-q|0);c[h>>2]=c[n>>2]}while(b>>>0>1)}else vb[c[b+80>>2]&127](c[b+4>>2]|0,e,f-e|0);l=p;return}function iW(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;k=c[d>>2]|0;if((c[a+144>>2]|0)==(b|0)){i=a+284|0;c[i>>2]=k;h=a+288|0}else{i=c[a+296>>2]|0;h=i+4|0}c[i>>2]=k;c[d>>2]=0;n=ob[c[b+12>>2]&127](b,k,e,j)|0;e=c[j>>2]|0;c[h>>2]=e;switch(n|0){case 42:{if(c[a+80>>2]|0){hW(a,b,k,e);e=c[j>>2]|0}c[d>>2]=e;c[f>>2]=e;e=(c[a+476>>2]|0)==2?35:0;break}case 0:{c[i>>2]=e;e=4;break}case -2:{if(!(g<<24>>24))e=6;else{c[f>>2]=k;e=0}break}case -4:case -1:{if(!(g<<24>>24))e=2;else{c[f>>2]=k;e=0}break}default:{c[i>>2]=e;e=23}}l=m;return e|0}function jW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=iW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;if(!((d|0)!=0|(g|0)==0)){c[b+276>>2]=57;d=TV(b,g,e,f)|0}l=h;return d|0}function kW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=c[a+352>>2]|0;j=i+184|0;if(!(c[j>>2]|0)){b=kb[c[a+12>>2]&63](c[a+464>>2]<<2)|0;c[j>>2]=b;if(!b)b=-1;else{c[b>>2]=0;d=4}}else d=4;do if((d|0)==4){h=i+176|0;b=c[h>>2]|0;g=i+172|0;d=c[g>>2]|0;f=i+164|0;e=c[f>>2]|0;if(b>>>0<d>>>0)g=e;else{if(!e){b=kb[c[a+12>>2]&63](896)|0;if(!b){b=-1;break}else{d=b;b=32}}else{b=lb[c[a+16>>2]&127](e,d*56|0)|0;if(!b){b=-1;break}d=b;b=c[g>>2]<<1}c[g>>2]=b;c[f>>2]=d;b=c[h>>2]|0;g=d}c[h>>2]=b+1;d=c[i+180>>2]|0;if(d|0){a=c[(c[j>>2]|0)+(d+-1<<2)>>2]|0;f=g+(a*28|0)+16|0;d=c[f>>2]|0;if(d|0)c[g+(d*28|0)+24>>2]=b;d=g+(a*28|0)+20|0;e=c[d>>2]|0;if(!e)c[g+(a*28|0)+12>>2]=b;c[f>>2]=b;c[d>>2]=e+1}j=g+(b*28|0)+12|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}while(0);return b|0}function lW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;o=b+300|0;f=c[o>>2]|0;if(!f){f=kb[c[b+12>>2]&63](24)|0;if(!f)f=1;else{m=f;g=4}}else{c[o>>2]=c[f+8>>2];m=f;g=4}do if((g|0)==4){h=d+32|0;a[h>>0]=1;i=d+12|0;c[i>>2]=0;j=b+296|0;k=m+8|0;c[k>>2]=c[j>>2];c[j>>2]=m;c[m+12>>2]=d;f=b+308|0;c[m+16>>2]=c[f>>2];a[m+20>>0]=e;c[m>>2]=0;c[m+4>>2]=0;g=c[d+4>>2]|0;e=g+(c[d+8>>2]|0)|0;c[n>>2]=g;if(!(a[d+33>>0]|0))f=rW(b,c[f>>2]|0,c[b+224>>2]|0,g,e,n,0)|0;else{d=b+224|0;f=c[d>>2]|0;f=ob[c[f>>2]&127](f,g,e,n)|0;f=UV(b,c[d>>2]|0,g,e,f,c[n>>2]|0,n,0)|0}if(!f){f=c[n>>2]|0;if((e|0)!=(f|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=f-g;c[b+276>>2]=60;f=0;break}a[h>>0]=0;c[j>>2]=c[k>>2];c[k>>2]=c[o>>2];c[o>>2]=m;f=0}}while(0);l=p;return f|0}function mW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;b=c[a+352>>2]|0;f=b+176|0;b=kb[c[a+12>>2]&63](((c[f>>2]|0)*20|0)+(c[b+168>>2]|0)|0)|0;if(!b)b=0;else{c[e>>2]=b+((c[f>>2]|0)*20|0);c[d>>2]=b+20;qW(a,0,b,d,e)}l=g;return b|0}function nW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+64|0;if(!(c[j>>2]|0))if(!(c[a+80>>2]|0))d=1;else{hW(a,b,d,e);d=1}else{h=b+64|0;g=d+(c[h>>2]<<1)|0;d=g+(lb[c[b+28>>2]&127](b,g)|0)|0;f=a+412|0;g=WV(f,b,g,d)|0;if((g|0)!=0?(c[a+428>>2]=c[a+424>>2],i=lb[c[b+32>>2]&127](b,d)|0,i=WV(f,b,i,e+(0-(c[h>>2]<<1))|0)|0,(i|0)!=0):0){pW(i);vb[c[j>>2]&127](c[a+4>>2]|0,g,i);XV(f);d=1}else d=0}return d|0}function oW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=a+68|0;if(!(c[g>>2]|0))if(!(c[a+80>>2]|0))b=1;else{hW(a,b,d,e);b=1}else{f=a+412|0;h=c[b+64>>2]|0;b=WV(f,b,d+(h<<2)|0,e+(O(h,-3)|0)|0)|0;if(!b)b=0;else{pW(b);ub[c[g>>2]&63](c[a+4>>2]|0,b);XV(f);b=1}}return b|0}function pW(b){b=b|0;var c=0,d=0,e=0;a:while(1){switch(a[b>>0]|0){case 0:break a;case 13:{d=b;c=13;e=4;break a}default:{}}b=b+1|0}if((e|0)==4){while(1){if(c<<24>>24==13){a[d>>0]=10;e=b+1|0;b=(a[e>>0]|0)==10?b+2|0:e}else{a[d>>0]=c;b=b+1|0}d=d+1|0;c=a[b>>0]|0;if(!(c<<24>>24))break;else e=4}a[d>>0]=0}return}function qW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[b+352>>2]|0)+164|0;j=c[(c[k>>2]|0)+(d*28|0)>>2]|0;c[e>>2]=j;c[e+4>>2]=c[(c[k>>2]|0)+(d*28|0)+4>>2];if((j|0)==4){c[e+8>>2]=c[g>>2];d=c[(c[k>>2]|0)+(d*28|0)+8>>2]|0;while(1){j=a[d>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;if(!(a[d>>0]|0))break;else d=d+1|0}c[e+12>>2]=0;c[e+16>>2]=0}else{h=c[(c[k>>2]|0)+(d*28|0)+20>>2]|0;i=e+12|0;c[i>>2]=h;j=e+16|0;c[j>>2]=c[f>>2];c[f>>2]=(c[f>>2]|0)+(h*20|0);d=(c[k>>2]|0)+(d*28|0)+12|0;h=0;while(1){d=c[d>>2]|0;if(h>>>0>=(c[i>>2]|0)>>>0)break;qW(b,d,(c[j>>2]|0)+(h*20|0)|0,f,g);d=(c[k>>2]|0)+(d*28|0)+24|0;h=h+1|0}c[e+8>>2]=0}return}function rW(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;ma=l;l=l+48|0;ja=ma+28|0;ea=ma+32|0;ka=ma+24|0;Z=ma;c[ja>>2]=f;_=c[b+352>>2]|0;if((c[b+144>>2]|0)==(e|0)){fa=b+284|0;Y=b+288|0}else{Y=c[b+296>>2]|0;fa=Y;Y=Y+4|0}c[fa>>2]=f;t=e+4|0;ga=b+80|0;u=b+476|0;v=e+44|0;w=e+64|0;x=_+80|0;y=_+96|0;z=_+92|0;A=_+129|0;B=b+112|0;C=b+116|0;D=b+428|0;E=b+424|0;F=b+304|0;G=b+120|0;ha=b+4|0;H=_+130|0;$=b+60|0;I=b+364|0;J=b+12|0;K=b+360|0;L=e+28|0;ia=b+308|0;aa=e+56|0;M=b+16|0;N=b+52|0;O=b+412|0;P=b+388|0;Q=b+56|0;R=b+232|0;S=b+233|0;T=b+468|0;U=b+104|0;V=b+372|0;W=e+40|0;X=b+72|0;ba=e+68|0;ca=b+44|0;da=b+48|0;a:while(1){s=c[ja>>2]|0;c[ea>>2]=s;s=ob[c[t>>2]&127](e,s,g,ea)|0;f=c[ea>>2]|0;c[Y>>2]=f;k=f;b:do switch(s|0){case -3:{la=6;break a}case -4:{la=15;break a}case 0:{la=20;break a}case -1:{la=21;break a}case -2:{la=23;break a}case 12:{f=17;break a}case -5:{la=134;break a}case 9:{s=c[w>>2]|0;s=(nb[c[v>>2]&63](e,(c[ja>>2]|0)+s|0,k+(0-s)|0)|0)&255;a[ka>>0]=s;do if(s<<24>>24){f=c[$>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,ka,1);break}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[w>>2]|0;j=WV(x,e,(c[ja>>2]|0)+j|0,(c[ea>>2]|0)+(0-j)|0)|0;if(!j){f=1;la=56;break a}k=YV(b,_,j,0)|0;c[z>>2]=c[y>>2];if((a[A>>0]|0)!=0?(a[H>>0]|0)==0:0){if(!k){f=c[G>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,j,0);break}if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}}else{if(!k){f=11;la=56;break a}if(!(a[k+34>>0]|0)){f=24;la=56;break a}}f=k+32|0;if(a[f>>0]|0){f=12;la=56;break a}if(c[k+28>>2]|0){f=15;la=56;break a}if(!(c[k+4>>2]|0)){if(!(c[B>>2]|0)){if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}a[f>>0]=1;j=tW(b)|0;a[f>>0]=0;if(!j){f=1;la=56;break a}if(!(pb[c[B>>2]&127](c[C>>2]|0,j,c[k+20>>2]|0,c[k+16>>2]|0,c[k+24>>2]|0)|0)){f=21;la=56;break a}c[E>>2]=c[D>>2];break}if(a[F>>0]|0){f=lW(b,k,0)|0;if(!f)break;else{la=58;break a}}f=c[G>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[k>>2]|0,0);break b}while(0);break}case 1:case 2:{f=c[I>>2]|0;if(!f){f=kb[c[J>>2]&63](48)|0;if(!f){f=1;la=75;break a}j=kb[c[J>>2]&63](32)|0;c[f+36>>2]=j;if(!j){la=63;break a}c[f+40>>2]=j+32}else c[I>>2]=c[f>>2];o=f+44|0;c[o>>2]=0;c[f>>2]=c[K>>2];c[K>>2]=f;s=f+12|0;c[f+16>>2]=0;c[f+20>>2]=0;r=(c[ja>>2]|0)+(c[w>>2]|0)|0;q=f+4|0;c[q>>2]=r;p=f+8|0;c[p>>2]=lb[c[L>>2]&127](e,r)|0;c[ia>>2]=(c[ia>>2]|0)+1;q=c[q>>2]|0;p=q+(c[p>>2]|0)|0;c[Z>>2]=q;q=f+36|0;c[ka>>2]=c[q>>2];r=f+40|0;j=c[r>>2]|0;while(1){na=pb[c[aa>>2]&127](e,Z,p,ka,j+-1|0)|0;j=c[ka>>2]|0;m=c[q>>2]|0;k=m;n=j-k|0;if((na|0)==1?1:(c[Z>>2]|0)>>>0>=p>>>0)break;k=(c[r>>2]|0)-k<<1;j=lb[c[M>>2]&127](m,k)|0;if(!j){la=69;break a}c[q>>2]=j;na=j+k|0;c[r>>2]=na;c[ka>>2]=j+n;j=na}c[f+24>>2]=n;c[s>>2]=k;a[j>>0]=0;f=uW(b,e,c[ja>>2]|0,s,o)|0;if(f|0){la=75;break a}f=c[N>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[s>>2]|0,c[P>>2]|0);XV(O);break}case 3:case 4:{na=(c[ja>>2]|0)+(c[w>>2]|0)|0;c[ka>>2]=0;na=WV(O,e,na,na+(lb[c[L>>2]&127](e,na)|0)|0)|0;c[Z>>2]=na;if(!na){f=1;la=89;break a}c[D>>2]=c[E>>2];f=uW(b,e,c[ja>>2]|0,Z,ka)|0;if(f|0){la=79;break a}c[D>>2]=c[E>>2];f=c[N>>2]|0;if(!f)j=1;else{vb[f&127](c[ha>>2]|0,c[Z>>2]|0,c[P>>2]|0);j=0}f=c[Q>>2]|0;if(!f){if(j|0?c[ga>>2]|0:0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{if(c[N>>2]|0){c[fa>>2]=c[Y>>2];f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[Z>>2]|0)}XV(O);vW(b,c[ka>>2]|0);if((c[ia>>2]|0)==0?(c[u>>2]&-2|0)!=2:0){la=92;break a}break}case 5:{if((c[ia>>2]|0)==(d|0)){f=13;break a}n=c[K>>2]|0;c[K>>2]=c[n>>2];c[n>>2]=c[I>>2];c[I>>2]=n;f=(c[ja>>2]|0)+(c[w>>2]<<1)|0;j=lb[c[L>>2]&127](e,f)|0;if((j|0)!=(c[n+8>>2]|0)){la=96;break a}if(L0(c[n+4>>2]|0,f,j)|0){la=96;break a}c[ia>>2]=(c[ia>>2]|0)+-1;f=c[Q>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[n+16>>2]|0;m=n+12|0;if((j|0)!=0&(a[R>>0]|0)!=0){f=(c[m>>2]|0)+(c[n+28>>2]|0)|0;while(1){k=a[j>>0]|0;if(!(k<<24>>24))break;a[f>>0]=k;f=f+1|0;j=j+1|0}j=c[n+20>>2]|0;c:do if((j|0)!=0&(a[S>>0]|0)!=0){a[f>>0]=a[T>>0]|0;while(1){f=f+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break c;a[f>>0]=k;j=j+1|0}}while(0);a[f>>0]=0;f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[m>>2]|0)}k=n+44|0;while(1){m=c[k>>2]|0;if(!m)break;f=c[U>>2]|0;if(!f){f=m;j=m}else{ub[f&63](c[ha>>2]|0,c[c[m>>2]>>2]|0);f=m;j=c[k>>2]|0}c[k>>2]=c[j+4>>2];c[m+4>>2]=c[V>>2];c[V>>2]=m;c[(c[f>>2]|0)+4>>2]=c[m+8>>2]}if(!(c[ia>>2]|0)){la=117;break a}break}case 10:{f=lb[c[W>>2]&127](e,c[ja>>2]|0)|0;if((f|0)<0){f=14;break a}j=c[$>>2]|0;if(j|0){s=c[ha>>2]|0;na=gX(f,ka)|0;vb[j&127](s,ka,na);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}case 7:{f=c[$>>2]|0;if(f|0){a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k);break}case 8:{f=c[X>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}else tb[f&127](c[ha>>2]|0);f=xW(b,e,ea,g,h,i)|0;if(f|0)break a;if(!(c[ea>>2]|0)){la=133;break a}break}case 6:{j=c[$>>2]|0;if(!j){if(!(c[ga>>2]|0))break b;hW(b,e,c[ja>>2]|0,k);break b}if(!(a[ba>>0]|0))f=k;else{na=c[ja>>2]|0;vb[j&127](c[ha>>2]|0,na,f-na|0);break b}while(1){c[ka>>2]=c[ca>>2];na=pb[c[aa>>2]&127](e,ja,f,ka,c[da>>2]|0)|0;c[Y>>2]=c[ja>>2];s=c[ca>>2]|0;vb[j&127](c[ha>>2]|0,s,(c[ka>>2]|0)-s|0);if(na>>>0<2)break;c[fa>>2]=c[ja>>2];f=c[ea>>2]|0}break}case 11:{if(!(nW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}case 13:{if(!(oW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}default:if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}while(0);na=c[ea>>2]|0;c[ja>>2]=na;c[fa>>2]=na;switch(c[u>>2]|0){case 2:{f=35;break a}case 3:{la=160;break a}default:{}}}switch(la|0){case 6:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}c[Y>>2]=g;f=c[$>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else{a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1)}if(d)if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0}else f=13;else f=3;break}case 15:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}if((d|0)>0)if((c[ia>>2]|0)==(d|0)){c[h>>2]=c[ja>>2];f=0}else f=13;else f=3;break}case 20:{c[fa>>2]=f;f=4;break}case 21:{if(!(i<<24>>24))f=5;else{c[h>>2]=c[ja>>2];f=0}break}case 23:{if(!(i<<24>>24))f=6;else{c[h>>2]=c[ja>>2];f=0}break}case 56:break;case 58:break;case 63:{tb[c[b+20>>2]&127](f);f=1;la=75;break}case 69:{f=1;la=75;break}case 79:{vW(b,c[ka>>2]|0);la=89;break}case 92:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 96:{c[fa>>2]=f;f=7;break}case 117:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 133:{c[b+276>>2]=61;f=0;break}case 134:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}f=c[$>>2]|0;do if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else if(!(a[ba>>0]|0)){c[ka>>2]=c[ca>>2];pb[c[aa>>2]&127](e,ja,g,ka,c[da>>2]|0)|0;na=c[ca>>2]|0;vb[c[$>>2]&127](c[ha>>2]|0,na,(c[ka>>2]|0)-na|0);break}else{na=c[ja>>2]|0;vb[f&127](c[ha>>2]|0,na,g-na|0);break}while(0);if(!d){c[fa>>2]=g;f=3;break}if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0;break}else{c[fa>>2]=g;f=13;break}}case 160:{c[h>>2]=c[ea>>2];f=0;break}}l=ma;return f|0}function sW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+16|0;p=q;k=b+296|0;m=c[k>>2]|0;do if(m){n=c[m+12>>2]|0;h=n+4|0;j=c[h>>2]|0;i=n+12|0;g=j+(c[i>>2]|0)|0;j=j+(c[n+8>>2]|0)|0;c[p>>2]=g;o=n+33|0;if(!(a[o>>0]|0))g=rW(b,c[m+16>>2]|0,c[b+224>>2]|0,g,j,p,0)|0;else{s=b+224|0;r=c[s>>2]|0;r=ob[c[r>>2]&127](r,g,j,p)|0;g=UV(b,c[s>>2]|0,g,j,r,c[p>>2]|0,p,0)|0}if(!g){g=c[p>>2]|0;if((j|0)!=(g|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=g-(c[h>>2]|0);g=0;break}a[n+32>>0]=0;s=m+8|0;c[k>>2]=c[s>>2];g=b+300|0;c[s>>2]=c[g>>2];c[g>>2]=m;g=b+276|0;if(!(a[o>>0]|0)){c[g>>2]=58;g=rW(b,(c[b+472>>2]|0)!=0&1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;break}else{c[g>>2]=57;s=b+144|0;g=c[s>>2]|0;g=ob[c[g>>2]&127](g,d,e,p)|0;g=UV(b,c[s>>2]|0,d,e,g,c[p>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;break}}}else g=23;while(0);l=q;return g|0}function tW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;n=q;m=c[b+352>>2]|0;h=m+156|0;o=b+412|0;p=b+424|0;a:do if(!(c[h>>2]|0)){d=0;i=b+420|0;k=b+468|0;j=12}else{d=c[p>>2]|0;i=b+420|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;g=b+468|0;e=(c[(c[h>>2]|0)+20>>2]|0)+(((a[g>>0]|0)!=0)<<31>>31)|0;f=0;while(1){if((f|0)>=(e|0)){d=1;k=g;j=12;break a}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[p>>2]|0}k=a[(c[(c[h>>2]|0)+16>>2]|0)+f>>0]|0;c[p>>2]=d+1;a[d>>0]=k;f=f+1|0}}while(0);b:do if((j|0)==12){NV(n,m+60|0);c:while(1){do{e=OV(n)|0;if(!e)break c;h=e+4|0}while(!(c[h>>2]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}g=c[e>>2]|0;while(1){e=a[g>>0]|0;d=c[p>>2]|0;f=(d|0)==(c[i>>2]|0);if(!(e<<24>>24))break;if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[g>>0]|0}c[p>>2]=d+1;a[d>>0]=e;g=g+1|0}if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;f=(c[(c[h>>2]|0)+20>>2]|0)+(((a[k>>0]|0)!=0)<<31>>31)|0;e=0;while(1){if((e|0)>=(f|0)){d=1;continue c}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}j=a[(c[(c[h>>2]|0)+16>>2]|0)+e>>0]|0;c[p>>2]=d+1;a[d>>0]=j;e=e+1|0}}NV(n,m);d:while(1){do{e=OV(n)|0;if(!e)break d}while(!(a[e+32>>0]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}f=c[e>>2]|0;while(1){e=a[f>>0]|0;if(!(e<<24>>24)){d=1;continue d}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[f>>0]|0}c[p>>2]=d+1;a[d>>0]=e;f=f+1|0}}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=0;d=c[b+428>>2]|0}while(0);l=q;return d|0}function uW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=l;l=l+80|0;K=O+16|0;L=O;M=c[b+352>>2]|0;k=M+20|0;i=YV(b,k,c[g>>2]|0,0)|0;if(!i){i=BW(M+80|0,c[g>>2]|0)|0;if((i|0)!=0?(j=YV(b,k,i,24)|0,(j|0)!=0):0)if((a[b+232>>0]|0)!=0?(CW(b,j)|0)==0:0)i=1;else A=6;else i=1}else{j=i;A=6}a:do if((A|0)==6){x=c[j+12>>2]|0;k=e+36|0;m=b+376|0;t=b+388|0;u=ob[c[k>>2]&127](e,f,c[m>>2]|0,c[t>>2]|0)|0;i=u+x|0;n=c[m>>2]|0;if((i|0)>(n|0)){i=i+16|0;c[m>>2]=i;i=lb[c[b+16>>2]&127](c[t>>2]|0,i<<4)|0;if(!i){c[m>>2]=n;i=1;break}c[t>>2]=i;if((u|0)>(n|0))ob[c[k>>2]&127](e,f,u,i)|0}J=c[t>>2]|0;r=e+28|0;H=b+412|0;I=b+428|0;w=j+20|0;q=b+424|0;s=0;p=0;k=0;while(1){if((p|0)>=(u|0))break;o=c[(c[t>>2]|0)+(p<<4)>>2]|0;o=aW(b,e,o,o+(lb[c[r>>2]&127](e,o)|0)|0)|0;if(!o){i=1;break a}i=(c[o>>2]|0)+-1|0;if(a[i>>0]|0){A=15;break}a[i>>0]=1;f=s+1|0;c[J+(s<<2)>>2]=c[o>>2];n=c[t>>2]|0;if(a[n+(p<<4)+12>>0]|0){G=WV(H,e,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0)|0;c[J+(f<<2)>>2]=G;if(!G){i=1;break a}}else{b:do if(!(a[o+8>>0]|0))i=1;else{i=0;while(1){if((i|0)>=(x|0)){i=1;break b}m=c[w>>2]|0;if((o|0)==(c[m+(i*12|0)>>2]|0))break;i=i+1|0}i=a[m+(i*12|0)+4>>0]|0}while(0);i=fW(b,e,i,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0,H)|0;if(i|0)break a;c[J+(f<<2)>>2]=c[I>>2]}c[I>>2]=c[q>>2];i=c[o+4>>2]|0;do if(i)if(a[o+9>>0]|0){i=DW(b,i,o,c[J+(f<<2)>>2]|0,h)|0;if(!i){i=s;break}else break a}else{a[(c[o>>2]|0)+-1>>0]=2;k=k+1|0;i=s+2|0;break}else i=s+2|0;while(0);s=i;p=p+1|0}if((A|0)==15){if((c[b+144>>2]|0)!=(e|0)){i=8;break}c[b+284>>2]=c[(c[t>>2]|0)+(p<<4)>>2];i=8;break}c[b+380>>2]=s;i=c[j+8>>2]|0;c:do if((i|0)!=0?(v=c[i>>2]|0,(a[v+-1>>0]|0)!=0):0){i=0;while(1){if((i|0)>=(s|0)){f=0;p=k;G=s;break c}if((c[J+(i<<2)>>2]|0)==(v|0)){A=37;break c}i=i+2|0}}else{i=-1;A=37}while(0);if((A|0)==37){c[b+384>>2]=i;f=0;p=k;G=s}while(1){if((f|0)>=(x|0))break;i=c[w>>2]|0;n=i+(f*12|0)|0;k=c[n>>2]|0;m=(c[k>>2]|0)+-1|0;d:do if((a[m>>0]|0)==0?(y=i+(f*12|0)+8|0,z=c[y>>2]|0,(z|0)!=0):0){i=c[k+4>>2]|0;do if(i)if(a[k+9>>0]|0){i=DW(b,i,k,z,h)|0;if(!i){i=p;k=G;break d}else break a}else{a[m>>0]=2;i=p+1|0;break}else{a[m>>0]=1;i=p}while(0);c[J+(G<<2)>>2]=c[c[n>>2]>>2];c[J+(G+1<<2)>>2]=c[y>>2];k=G+2|0}else{i=p;k=G}while(0);f=f+1|0;p=i;G=k}c[J+(G<<2)>>2]=0;e:do if(!p)i=0;else{o=b+396|0;n=c[o>>2]|0;F=b+400|0;f=a[F>>0]|0;i=f&255;do if(!(p<<1>>i)){i=1<<i;m=b+392|0;if(!n){k=i;A=55}else{k=i;i=n}}else{i=f;do{E=i;i=i+1<<24>>24}while((p>>(E&255)|0)!=0);i=(i&255)>3?i:3;a[F>>0]=i;i=i&255;m=b+392|0;k=lb[c[b+16>>2]&127](c[m>>2]|0,12<<i)|0;if(!k){a[F>>0]=f;i=1;break a}else{c[m>>2]=k;k=1<<i;A=55;break}}while(0);f:do if((A|0)==55){i=k;while(1){if(!i){i=-1;break f}E=i+-1|0;c[(c[m>>2]|0)+(E*12|0)>>2]=-1;i=E}}while(0);E=i+-1|0;c[o>>2]=E;w=M+40|0;x=b+424|0;y=b+420|0;z=k+-1|0;A=0-k|0;B=z>>>2;C=b+233|0;D=b+468|0;i=0;v=p;g:while(1){while(1){if((i|0)>=(G|0))break e;e=J+(i<<2)|0;n=c[e>>2]|0;f=n+-1|0;if((a[f>>0]|0)==2)break;a[f>>0]=0;i=i+2|0}EW(b,L);FW(K,L);a[f>>0]=0;f=YV(b,w,n,0)|0;if(!f){i=1;break}f=c[f+4>>2]|0;if(!f){i=1;break}u=c[f+4>>2]|0;if(!u){i=27;break}q=u+20|0;r=u+16|0;p=0;while(1){f=c[q>>2]|0;o=c[r>>2]|0;if((p|0)>=(f|0))break;o=a[o+p>>0]|0;f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}c[x>>2]=f+1;a[f>>0]=o;p=p+1|0}GW(K,o,f);do{t=n;n=n+1|0}while((a[t>>0]|0)!=58);GW(K,n,HW(n)|0);while(1){f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}t=a[n>>0]|0;c[x>>2]=f+1;a[f>>0]=t;if(!(a[n>>0]|0))break;else n=n+1|0}t=IW(K)|0;q=c[m>>2]|0;r=t&A;n=0;s=z&t;while(1){if((c[q+(s*12|0)>>2]|0)!=(E|0))break;if((c[q+(s*12|0)+4>>2]|0)==(t|0)){f=c[q+(s*12|0)+8>>2]|0;o=c[I>>2]|0;while(1){P=a[o>>0]|0;p=P<<24>>24==0;if(p|P<<24>>24!=(a[f>>0]|0))break;f=f+1|0;o=o+1|0}if(p){i=8;break g}}if(!(n<<24>>24))n=(r>>>((d[F>>0]|0)+-1|0)&B|1)&255;P=n&255;s=s+((s|0)<(P|0)?k:0)-P|0}if(a[C>>0]|0){a[(c[x>>2]|0)+-1>>0]=a[D>>0]|0;f=c[c[u>>2]>>2]|0;while(1){n=c[x>>2]|0;if((n|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}n=c[x>>2]|0}P=a[f>>0]|0;c[x>>2]=n+1;a[n>>0]=P;if(!(a[f>>0]|0))break;else f=f+1|0}}P=c[I>>2]|0;c[I>>2]=c[x>>2];c[e>>2]=P;c[(c[m>>2]|0)+(s*12|0)>>2]=E;c[(c[m>>2]|0)+(s*12|0)+4>>2]=t;c[(c[m>>2]|0)+(s*12|0)+8>>2]=P;v=v+-1|0;i=i+2|0;if(!v)break e}break a}while(0);while(1){if((i|0)>=(G|0)){i=h;break}a[(c[J+(i<<2)>>2]|0)+-1>>0]=0;i=i+2|0}while(1){i=c[i>>2]|0;if(!i)break;a[(c[c[i+12>>2]>>2]|0)+-1>>0]=0;i=i+4|0}if(!(a[b+232>>0]|0))i=0;else{i=c[j+4>>2]|0;if(!i){i=c[M+156>>2]|0;if(!i){i=0;break}k=c[g>>2]|0}else{i=c[i+4>>2]|0;if(!i){i=27;break}j=c[g>>2]|0;while(1){k=j+1|0;if((a[j>>0]|0)==58)break;else j=k}}if((a[b+233>>0]|0)!=0?(N=c[c[i>>2]>>2]|0,(N|0)!=0):0){j=0;while(1){m=j+1|0;if(!(a[N+j>>0]|0))break;else j=m}}else m=0;c[g+4>>2]=k;p=i+20|0;c[g+16>>2]=c[p>>2];c[g+8>>2]=c[c[i>>2]>>2];c[g+20>>2]=m;q=0;while(1){r=q+1|0;if(!(a[k+q>>0]|0))break;else q=r}j=c[p>>2]|0;n=r+m+j|0;f=i+24|0;if((n|0)>(c[f>>2]|0)){j=n+24|0;o=kb[c[b+12>>2]&63](j)|0;if(!o){i=1;break}c[f>>2]=j;f=i+16|0;F3(o|0,c[f>>2]|0,c[p>>2]|0)|0;j=b+360|0;while(1){j=c[j>>2]|0;if(!j)break;n=j+12|0;if((c[n>>2]|0)==(c[f>>2]|0))c[n>>2]=o}tb[c[b+20>>2]&127](c[f>>2]|0);c[f>>2]=o;n=o;j=c[p>>2]|0}else{n=i+16|0;f=n;n=c[n>>2]|0}j=n+j|0;F3(j|0,k|0,r|0)|0;if(m|0){P=j+q|0;a[P>>0]=a[b+468>>0]|0;F3(P+1|0,c[c[i>>2]>>2]|0,m|0)|0}c[g>>2]=c[f>>2];i=0}}while(0);l=O;return i|0}function vW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+104|0;f=a+372|0;d=a+4|0;while(1){if(!b)break;a=c[e>>2]|0;if(!a)a=b;else{ub[a&63](c[d>>2]|0,c[c[b>>2]>>2]|0);a=b}h=b+4|0;g=c[h>>2]|0;c[h>>2]=c[f>>2];c[f>>2]=b;c[(c[a>>2]|0)+4>>2]=c[b+8>>2];b=g}return}function wW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;j=q;c[b+276>>2]=62;k=b+284|0;c[k>>2]=d;m=b+144|0;n=b+288|0;o=b+80|0;i=b+476|0;g=d;a:while(1){c[j>>2]=0;r=c[m>>2]|0;r=ob[c[r>>2]&127](r,g,e,j)|0;d=c[j>>2]|0;c[n>>2]=d;h=d;switch(r|0){case -15:{p=3;break a}case -4:{p=7;break a}case 0:{p=12;break a}case -1:{p=13;break a}case -2:{p=15;break a}case 15:{if(c[o>>2]|0)hW(b,c[m>>2]|0,g,h);break}case 11:{if(!(nW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}case 13:{if(!(oW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}default:{d=9;break a}}d=c[j>>2]|0;c[k>>2]=d;switch(c[i>>2]|0){case 2:{d=35;break a}case 3:{p=18;break a}default:{}}g=d}do if((p|0)==3){if(c[o>>2]|0){hW(b,c[m>>2]|0,g,h);if((c[i>>2]|0)==2){d=35;break}d=c[j>>2]|0}c[f>>2]=d;d=0}else if((p|0)==7){c[f>>2]=g;d=0}else if((p|0)==12){c[k>>2]=d;d=4}else if((p|0)==13)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=5;else if((p|0)==15)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=6;else if((p|0)==18){c[f>>2]=d;d=0}while(0);l=q;return d|0}function xW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+16|0;y=B+8|0;z=B+4|0;x=B;i=c[e>>2]|0;c[y>>2]=i;if((c[b+144>>2]|0)==(d|0)){s=b+284|0;c[s>>2]=i;t=b+288|0}else{t=c[b+296>>2]|0;s=t;t=t+4|0}c[s>>2]=i;c[e>>2]=0;k=d+8|0;m=b+60|0;u=b+80|0;v=b+4|0;w=b+476|0;n=d+68|0;o=b+44|0;p=d+56|0;q=b+48|0;a:while(1){j=ob[c[k>>2]&127](d,c[y>>2]|0,f,z)|0;i=c[z>>2]|0;c[t>>2]=i;r=i;b:do switch(j|0){case 40:{A=6;break a}case 0:{A=23;break a}case -2:{A=24;break a}case -4:case -1:{A=26;break a}case 7:{i=c[m>>2]|0;if(i|0){a[x>>0]=10;vb[i&127](c[v>>2]|0,x,1);break b}if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r);break}case 6:{j=c[m>>2]|0;if(!j){if(!(c[u>>2]|0))break b;hW(b,d,c[y>>2]|0,r);break b}if(!(a[n>>0]|0))i=r;else{r=c[y>>2]|0;vb[j&127](c[v>>2]|0,r,i-r|0);break b}while(1){c[x>>2]=c[o>>2];r=pb[c[p>>2]&127](d,y,i,x,c[q>>2]|0)|0;c[t>>2]=c[z>>2];i=c[o>>2]|0;vb[j&127](c[v>>2]|0,i,(c[x>>2]|0)-i|0);if(r>>>0<2)break;c[s>>2]=c[y>>2];i=c[z>>2]|0}break}default:{A=28;break a}}while(0);r=c[z>>2]|0;c[y>>2]=r;c[s>>2]=r;switch(c[w>>2]|0){case 3:{A=30;break a}case 2:{i=35;break a}default:{}}}if((A|0)==6){i=c[b+76>>2]|0;if(!i){if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r)}else tb[i&127](c[v>>2]|0);i=c[z>>2]|0;c[e>>2]=i;c[g>>2]=i;i=(c[w>>2]|0)==2?35:0}else if((A|0)==23){c[s>>2]=i;i=4}else if((A|0)==24)if(!(h<<24>>24))i=6;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==26)if(!(h<<24>>24))i=20;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==28){c[s>>2]=i;i=23}else if((A|0)==30){c[g>>2]=c[z>>2];i=0}l=B;return i|0}function yW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=xW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;do if(!((d|0)!=0|(g|0)==0)){d=b+276|0;if(!(c[b+472>>2]|0)){c[d>>2]=58;d=_V(b,g,e,f)|0;break}else{c[d>>2]=63;d=zW(b,g,e,f)|0;break}}while(0);l=h;return d|0}function zW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function AW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;a=a+360|0;while(1){a=c[a>>2]|0;if(!a){a=1;break}i=(c[a+24>>2]|0)+1|0;j=a+36|0;f=c[j>>2]|0;e=f+i|0;l=a+4|0;d=c[l>>2]|0;if((d|0)==(e|0)){a=1;break}k=a+8|0;b=c[k>>2]|0;g=b+i|0;h=a+40|0;if((g|0)>((c[h>>2]|0)-f|0)){e=lb[c[m>>2]&127](f,g)|0;if(!e){a=0;break}b=a+12|0;f=c[j>>2]|0;if((c[b>>2]|0)==(f|0))c[b>>2]=e;b=a+16|0;d=c[b>>2]|0;if(d|0)c[b>>2]=e+(d-f);c[j>>2]=e;c[h>>2]=e+g;e=e+i|0;d=c[l>>2]|0;b=c[k>>2]|0}F3(e|0,d|0,b|0)|0;c[l>>2]=e}return a|0}function BW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=b+12|0;g=b+8|0;while(1){e=c[f>>2]|0;if((e|0)==(c[g>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}e=c[f>>2]|0}i=a[d>>0]|0;c[f>>2]=e+1;a[e>>0]=i;if(!(a[d>>0]|0)){h=6;break}else d=d+1|0}if((h|0)==6){i=b+16|0;d=c[i>>2]|0;c[i>>2]=c[f>>2]}return d|0}function CW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+352>>2]|0;j=n+80|0;k=n+92|0;l=n+88|0;m=n+60|0;n=n+96|0;i=d+4|0;h=c[d>>2]|0;a:while(1){switch(a[h>>0]|0){case 0:{e=1;break a}case 58:{g=c[d>>2]|0;while(1){e=c[k>>2]|0;f=(e|0)==(c[l>>2]|0);if((g|0)==(h|0))break;if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}f=a[g>>0]|0;c[k>>2]=e+1;a[e>>0]=f;g=g+1|0}if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}c[k>>2]=e+1;a[e>>0]=0;e=YV(b,m,c[n>>2]|0,8)|0;if(!e){e=0;break a}f=c[n>>2]|0;if((c[e>>2]|0)==(f|0))c[n>>2]=c[k>>2];else c[k>>2]=f;c[i>>2]=e;break}default:{}}h=h+1|0}return e|0}function DW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=a[f>>0]|0;i=c[d>>2]|0;h=(i|0)==0;do if(!(k<<24>>24))if(h){m=0;j=11}else h=28;else if(((!h?(a[i>>0]|0)==120:0)?(a[i+1>>0]|0)==109:0)?(a[i+2>>0]|0)==108:0){h=a[i+3>>0]|0;if((h<<24>>24==110?(a[i+4>>0]|0)==115:0)?(a[i+5>>0]|0)==0:0){h=39;break}m=h<<24>>24==0&1;j=11}else{m=0;j=11}while(0);a:do if((j|0)==11){l=m<<24>>24!=0;h=1;i=1;n=0;while(1){j=i<<24>>24!=0;if(!(k<<24>>24))break;do if(j){if((n|0)<=36?k<<24>>24==(a[139175+n>>0]|0):0)break;i=0}else i=0;while(0);do if(!(l|h<<24>>24==0)){if((n|0)<=29?k<<24>>24==(a[139212+n>>0]|0):0)break;h=0}while(0);k=n+1|0;n=k;k=a[f+k>>0]|0}if((m&255|0)!=(j&(n|0)==36&1|0)){h=l?38:40;break}if(!(h<<24>>24!=0&(n|0)==29)){o=b+468|0;n=n+((a[o>>0]|0)!=0&1)|0;h=b+372|0;j=c[h>>2]|0;do if(!j){h=b+12|0;i=kb[c[h>>2]&63](28)|0;if(!i){h=1;break a}j=n+24|0;m=kb[c[h>>2]&63](j)|0;c[i+16>>2]=m;if(!m){tb[c[b+20>>2]&127](i);h=1;break a}else{c[i+24>>2]=j;j=i;break}}else{i=j+24|0;if((n|0)>(c[i>>2]|0)){k=j+16|0;l=n+24|0;m=lb[c[b+16>>2]&127](c[k>>2]|0,l)|0;if(!m){h=1;break a}c[k>>2]=m;c[i>>2]=l}c[h>>2]=c[j+4>>2]}while(0);c[j+20>>2]=n;i=j+16|0;F3(c[i>>2]|0,f|0,n|0)|0;h=a[o>>0]|0;if(h<<24>>24)a[(c[i>>2]|0)+(n+-1)>>0]=h;c[j>>2]=d;c[j+12>>2]=e;i=d+4|0;c[j+8>>2]=c[i>>2];if((a[f>>0]|0)==0?((c[b+352>>2]|0)+152|0)==(d|0):0)h=0;else h=j;c[i>>2]=h;c[j+4>>2]=c[g>>2];c[g>>2]=j;if((e|0)!=0?(p=c[b+100>>2]|0,(p|0)!=0):0){vb[p&127](c[b+4>>2]|0,c[d>>2]|0,c[i>>2]|0?f:0);h=0}else h=0}else h=40}while(0);return h|0}function EW(a,b){a=a|0;b=b|0;var d=0;d=b;c[d>>2]=0;c[d+4>>2]=0;b=b+8|0;c[b>>2]=KW(a)|0;c[b+4>>2]=0;return}function FW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=b;g=c[d+4>>2]^1936682341;e=a;c[e>>2]=c[d>>2]^1886610805;c[e+4>>2]=g;e=b+8|0;g=e;d=c[g+4>>2]^1685025377;f=a+8|0;c[f>>2]=c[g>>2]^1852075885;c[f+4>>2]=d;f=b;b=c[f+4>>2]^1819895653;d=a+16|0;c[d>>2]=c[f>>2]^1852142177;c[d+4>>2]=b;d=c[e+4>>2]^1952801890;b=a+24|0;c[b>>2]=c[e>>2]^2037671283;c[b+4>>2]=d;c[a+40>>2]=a+32;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;return}function GW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;n=e+f|0;o=b+40|0;p=b+40|0;q=b+32|0;r=b+33|0;s=b+34|0;t=b+35|0;h=b+36|0;i=b+37|0;j=b+38|0;k=b+39|0;l=b+24|0;m=b+48|0;f=e;do{while(1){g=c[o>>2]|0;if(f>>>0>=n>>>0){e=0;break}if(g>>>0>=p>>>0){e=1;break}e=a[f>>0]|0;c[o>>2]=g+1;a[g>>0]=e;f=f+1|0}if(g>>>0<p>>>0)break;A=d[q>>0]|0;B=A3(d[r>>0]|0|0,0,8)|0;g=z;y=A3(d[s>>0]|0|0,0,16)|0;g=g|z;w=A3(d[t>>0]|0|0,0,24)|0;g=g|z|(d[h>>0]|0);u=A3(d[i>>0]|0|0,0,40)|0;g=g|z;x=A3(d[j>>0]|0|0,0,48)|0;g=g|z;v=A3(d[k>>0]|0|0,0,56)|0;v=B|A|y|w|u|x|v;g=g|z;x=l;u=g^c[x+4>>2];w=l;c[w>>2]=v^c[x>>2];c[w+4>>2]=u;JW(b,2);w=b;g=c[w+4>>2]^g;u=b;c[u>>2]=c[w>>2]^v;c[u+4>>2]=g;c[o>>2]=q;u=m;u=s3(c[u>>2]|0,c[u+4>>2]|0,8,0)|0;g=m;c[g>>2]=u;c[g+4>>2]=z}while(e);return}function HW(b){b=b|0;var c=0;c=0;while(1){if(!(a[b>>0]|0))break;c=c+1|0;b=b+1|0}return c|0}function IW(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;f=a+32|0;h=(c[a+40>>2]|0)-f|0;e=a+48|0;e=s3(c[e>>2]|0,c[e+4>>2]|0,h|0,0)|0;e=A3(e|0,z|0,56)|0;b=z;switch(h<<24>>24|0){case 7:{e=A3(d[a+38>>0]|0|0,0,48)|0|e;b=z|b;g=3;break}case 6:{g=3;break}case 5:{g=4;break}case 4:{g=5;break}case 3:{g=6;break}case 2:{g=7;break}case 1:{g=8;break}default:{}}if((g|0)==3){h=A3(d[a+37>>0]|0|0,0,40)|0;e=h|e;b=z|b;g=4}if((g|0)==4){b=d[a+36>>0]|0|b;g=5}if((g|0)==5){h=A3(d[a+35>>0]|0|0,0,24)|0;e=h|e;b=z|b;g=6}if((g|0)==6){h=A3(d[a+34>>0]|0|0,0,16)|0;e=h|e;b=z|b;g=7}if((g|0)==7){h=A3(d[a+33>>0]|0|0,0,8)|0;b=z|b;e=h|e;g=8}if((g|0)==8)e=e|(d[f>>0]|0);h=a+24|0;i=h;g=c[i+4>>2]^b;f=h;c[f>>2]=c[i>>2]^e;c[f+4>>2]=g;JW(a,2);f=a;b=c[f+4>>2]^b;g=a;c[g>>2]=c[f>>2]^e;c[g+4>>2]=b;g=a+16|0;b=g;e=c[b+4>>2]|0;f=g;c[f>>2]=c[b>>2]^255;c[f+4>>2]=e;JW(a,4);f=a;a=a+8|0;z=c[a+4>>2]^c[f+4>>2]^c[g+4>>2]^c[h+4>>2];return c[a>>2]^c[f>>2]^c[g>>2]^c[h>>2]|0}function JW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+8|0;f=a+24|0;g=a+16|0;d=0;while(1){if((d|0)>=(b|0))break;h=e;n=c[h>>2]|0;h=c[h+4>>2]|0;o=a;o=s3(c[o>>2]|0,c[o+4>>2]|0,n|0,h|0)|0;k=z;m=A3(n|0,h|0,13)|0;l=z;h=z3(n|0,h|0,51)|0;h=(m|h)^o;l=(l|z)^k;m=f;n=c[m>>2]|0;m=c[m+4>>2]|0;j=g;j=s3(c[j>>2]|0,c[j+4>>2]|0,n|0,m|0)|0;i=z;q=A3(n|0,m|0,16)|0;p=z;m=z3(n|0,m|0,48)|0;m=(q|m)^j;p=(p|z)^i;o=s3(k|0,o|0,m|0,p|0)|0;k=z;q=a;c[q>>2]=o;c[q+4>>2]=k;q=A3(m|0,p|0,21)|0;n=z;p=z3(m|0,p|0,43)|0;m=f;c[m>>2]=(q|p)^o;c[m+4>>2]=(n|z)^k;i=s3(j|0,i|0,h|0,l|0)|0;j=z;m=A3(h|0,l|0,17)|0;k=z;l=z3(h|0,l|0,47)|0;h=e;c[h>>2]=(m|l)^i;c[h+4>>2]=(k|z)^j;h=g;c[h>>2]=j;c[h+4>>2]=i;d=d+1|0}return}function KW(a){a=a|0;var b=0;while(1){b=c[a+472>>2]|0;if(!b)break;else a=b}return c[a+492>>2]|0}function LW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=l;l=l+16|0;I=L;J=L+4|0;K=c[b+352>>2]|0;o=d+16|0;p=d+40|0;q=b+144|0;r=b+284|0;s=e<<24>>24==0;t=h+12|0;v=h+16|0;w=h+8|0;x=d+44|0;y=d+64|0;z=b+436|0;A=b+452|0;B=b+448|0;C=(K+80|0)==(h|0);D=b+268|0;E=K+130|0;F=K+129|0;G=b+296|0;H=b+224|0;i=0;a:while(1){b:while(1){switch(ob[c[o>>2]&127](d,f,g,I)|0){case -4:{i=0;n=61;break a}case 0:{n=4;break a}case -1:{n=6;break a}case 6:{n=21;break b}case -3:{n=22;break b}case 7:case 39:{n=23;break b}case 10:{j=lb[c[p>>2]&127](d,f)|0;c:do if((j|0)<0)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;j=1;i=14}else{j=1;i=14}else{if(s&(j|0)==32){k=c[t>>2]|0;if((c[v>>2]|0)==(k|0)){j=4;break}if((a[k+-1>>0]|0)==32){j=4;break}}m=gX(j,J)|0;k=0;while(1){if((k|0)>=(m|0)){j=0;break c}j=c[t>>2]|0;if((j|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){j=1;i=1;break c}j=c[t>>2]|0}M=a[J+k>>0]|0;c[t>>2]=j+1;a[j>>0]=M;k=k+1|0}}while(0);switch(j&7){case 4:case 0:break b;default:{}}break}case 9:{j=c[y>>2]|0;j=(nb[c[x>>2]&63](d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0)&255;if(j<<24>>24){n=31;break b}j=c[y>>2]|0;j=WV(z,d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0;if(!j){i=1;n=61;break a}m=YV(b,K,j,0)|0;c[B>>2]=c[A>>2];do if(C){if(!(c[D>>2]|0))if(!m)break b;else break;if(!(a[E>>0]|0)){j=(m|0)!=0;if(!(a[F>>0]|0)){n=45;break}else{u=j;n=47;break}}else{j=(m|0)!=0;if(!(c[G>>2]|0)){n=45;break}else{u=j;n=47;break}}}else if(!(a[F>>0]|0))if(!m){i=11;n=61;break a}else{n=46;break}else{j=(m|0)!=0;if(!(a[E>>0]|0)){u=j;n=47;break}else{n=45;break}}while(0);if((n|0)==45)if(j)n=46;else{i=11;n=61;break a}else if((n|0)==47?(n=0,!u):0)break b;if((n|0)==46?(n=0,(a[m+34>>0]|0)==0):0){i=24;n=61;break a}k=m+32|0;if(a[k>>0]|0){n=49;break a}if(c[m+28>>2]|0){n=52;break a}j=c[m+4>>2]|0;if(!j){n=55;break a}m=j+(c[m+8>>2]|0)|0;a[k>>0]=1;m=LW(b,c[H>>2]|0,e,j,m,h)|0;a[k>>0]=0;j=(m|0)==0;if(j)break b;else{j=(j^1)&1;i=m}break}default:{n=58;break a}}if(j)break a}if((n|0)==21){n=0;if(!(cW(h,d,f,c[I>>2]|0)|0)){i=1;n=61;break}}else if((n|0)==22){c[I>>2]=f+(c[y>>2]|0);n=23}else if((n|0)==31){n=0;f=c[t>>2]|0;if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=j}do if((n|0)==23){n=0;f=c[t>>2]|0;if(s){if((c[v>>2]|0)==(f|0))break;if((a[f+-1>>0]|0)==32)break}if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break a}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=32}while(0);f=c[I>>2]|0}if((n|0)==4)if((c[q>>2]|0)==(d|0)){c[r>>2]=c[I>>2];i=4;n=61}else{i=4;n=61}else if((n|0)==6)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=4;n=61}else{i=4;n=61}else if((n|0)==49)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=12;n=61}else{i=12;n=61}else if((n|0)==52)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=15;n=61}else{i=15;n=61}else if((n|0)==55)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=16;n=61}else{i=16;n=61}else if((n|0)==58)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=23;n=61}else{i=23;n=61}l=L;return i|0}function MW(a){a=a|0;var b=0;b=a+8|0;return ((a|0)<1?0:(b|0)>0?b:0)|0}function NW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=l;l=l+80|0;d=c+16|0;e=c;EW(a,e);FW(d,e);GW(d,b,HW(b)|0);b=IW(d)|0;l=c;return b|0}function OW(b,c){b=b|0;c=c|0;var d=0;while(1){d=a[b>>0]|0;if(d<<24>>24!=(a[c>>0]|0)){c=0;break}if(!(d<<24>>24)){c=1;break}c=c+1|0;b=b+1|0}return c|0}function PW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;i=k;f=c[b+124>>2]|0;a:do if(!f)e=18;else{e=0;while(1){if((e|0)==256)break;c[i+(e<<2)>>2]=-1;e=e+1|0}g=i+1028|0;c[g>>2]=0;j=i+1024|0;c[j>>2]=0;h=i+1032|0;c[h>>2]=0;do if(nb[f&63](c[b+244>>2]|0,d,i)|0){f=c[b+12>>2]|0;e=hX()|0;e=kb[f&63](e)|0;c[b+236>>2]=e;if(!e){e=c[h>>2]|0;if(!e)e=1;else{tb[e&127](c[j>>2]|0);e=1}}else{e=ob[(a[b+232>>0]<<24>>24?65:64)&127](e,i,c[g>>2]|0,c[j>>2]|0)|0;if(!e)break;c[b+240>>2]=c[j>>2];c[b+248>>2]=c[h>>2];c[b+144>>2]=e;e=0}break a}while(0);e=c[h>>2]|0;if(e|0)tb[e&127](c[j>>2]|0);e=18}while(0);l=k;return e|0}function QW(b,d){b=b|0;d=d|0;a[b+4>>0]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b>>2]=0;c[b+16>>2]=d;return}function RW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=c[b+352>>2]|0;m=b+424|0;n=b+420|0;o=b+412|0;p=b+428|0;q=l+152|0;r=b+368|0;j=l+60|0;k=l+80|0;a:while(1){h=d;b:while(1){if(!(a[d>>0]|0)){d=1;break a}f=a[h>>0]|0;switch(f<<24>>24){case 0:case 12:{s=5;break b}case 61:break b;default:{}}e=c[m>>2]|0;if((e|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}e=c[m>>2]|0;f=a[h>>0]|0}c[m>>2]=e+1;a[e>>0]=f;h=h+1|0}if((s|0)==5){s=0;d=c[m>>2]|0;if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;d=YV(b,l,c[p>>2]|0,0)|0;if(d|0)a[d+32>>0]=1;d=(a[h>>0]|0)==0?h:h+1|0;c[m>>2]=c[p>>2];continue}d=c[m>>2]|0;if((c[p>>2]|0)==(d|0))f=q;else{if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;f=YV(b,j,c[p>>2]|0,8)|0;if(!f){d=0;break}e=c[f>>2]|0;i=c[p>>2]|0;d=i;if((e|0)==(i|0)){i=BW(k,e)|0;c[f>>2]=i;if(!i){d=0;break}d=c[p>>2]|0}c[m>>2]=d}c:while(1){i=h+1|0;e=a[i>>0]|0;g=(d|0)==(c[n>>2]|0);switch(e<<24>>24){case 0:case 12:break c;default:{}}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[m>>2]|0;e=a[i>>0]|0}c[m>>2]=d+1;a[d>>0]=e;h=i;d=c[m>>2]|0}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;if(DW(b,f,0,c[p>>2]|0,r)|0){d=0;break}c[m>>2]=c[p>>2];d=(a[i>>0]|0)==0?i:h+2|0}return d|0}function SW(a,b){a=a|0;b=b|0;var d=0,e=0;if(a|0?(d=a+4|0,e=(c[d>>2]|0)==(c[a>>2]|0),c[a>>2]=b,e):0)c[d>>2]=b;return}function TW(a,b,d){a=a|0;b=b|0;d=d|0;if(a|0){c[a+52>>2]=b;c[a+56>>2]=d}return}function UW(a,b){a=a|0;b=b|0;if(a|0)c[a+60>>2]=b;return}function VW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=(b|0)==0;a:do if(!(g|(e|0)<0)?!((d|0)==0&(e|0)!=0):0){h=b+476|0;switch(c[h>>2]|0){case 3:{c[b+280>>2]=33;g=0;break a}case 2:{c[b+280>>2]=36;g=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;g=0;break a}break}default:{}}c[h>>2]=1;if(e|0){g=YW(b,e)|0;if(!g){g=0;break}F3(g|0,d|0,e|0)|0;g=ZW(b,e,f)|0;break}a[b+480>>0]=f;if(!f)g=1;else{g=b+24|0;j=c[g>>2]|0;d=b+292|0;c[d>>2]=j;f=c[b+28>>2]|0;c[b+40>>2]=f;e=b+276|0;f=ob[c[e>>2]&127](b,j,f,g)|0;c[b+280>>2]=f;if(f|0){c[b+288>>2]=c[b+284>>2];c[e>>2]=66;g=0;break}switch(c[h>>2]|0){case 3:{j=c[b+144>>2]|0;xb[c[j+48>>2]&31](j,c[d>>2]|0,c[g>>2]|0,b+404|0);c[d>>2]=c[g>>2];g=2;break a}case 1:case 0:{c[h>>2]=2;g=1;break a}default:{g=1;break a}}}}else i=3;while(0);if((i|0)==3)if(g)g=0;else{c[b+280>>2]=41;g=0}return g|0}function WW(b){b=b|0;var d=0;d=b+492|0;if(!(c[d>>2]|0))c[d>>2]=_W()|0;if(!(a[b+232>>0]|0))b=1;else b=RW(b,139242)|0;return b|0}function XW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return c[a+280>>2]|0}function YW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if(!a)d=0;else{if((b|0)<0){c[a+280>>2]=1;d=0;break}switch(c[a+476>>2]|0){case 3:{c[a+280>>2]=33;d=0;break a}case 2:{c[a+280>>2]=36;d=0;break a}default:{m=a+32|0;j=c[m>>2]|0;n=a+28|0;e=c[n>>2]|0;d=e;if((j-e|0)>=(b|0))break a;p=a+24|0;k=c[p>>2]|0;i=e-k|0;e=i+b|0;if((e|0)<0){c[a+280>>2]=1;d=0;break a}l=a+8|0;f=c[l>>2]|0;q=f;g=k-q|0;h=(g|0)>1024;b=h?1024:g;e=b+e|0;do if((e|0)>(j-q|0)){d=j-k|0;d=(d|0)==0?1024:d;do d=d<<1;while((d|0)<(e|0)&(d|0)>0);if((d|0)<1){c[a+280>>2]=1;d=0;break a}e=kb[c[a+12>>2]&63](d)|0;if(!e){c[a+280>>2]=1;d=0;break a}c[m>>2]=e+d;d=c[p>>2]|0;if(!d){d=e+(c[n>>2]|0)|0;c[n>>2]=d;c[l>>2]=e;o=22;break}else{q=d;o=q-(c[l>>2]|0)|0;o=(o|0)<1024?o:1024;F3(e|0,d+(0-o)|0,(c[n>>2]|0)-q+o|0)|0;tb[c[a+20>>2]&127](c[l>>2]|0);c[l>>2]=e;d=e+((c[n>>2]|0)-(c[p>>2]|0))+o|0;c[n>>2]=d;e=e+o|0;o=22;break}}else if(h){e=g-b|0;G3(f|0,f+e|0,b+i|0)|0;e=0-e|0;d=(c[n>>2]|0)+e|0;c[n>>2]=d;e=(c[p>>2]|0)+e|0;o=22}while(0);if((o|0)==22)c[p>>2]=e;c[a+288>>2]=0;c[a+284>>2]=0;c[a+292>>2]=0;break a}}}while(0);return d|0}function ZW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!b)d=0;else{f=b+476|0;switch(c[f>>2]|0){case 3:{c[b+280>>2]=33;d=0;break a}case 2:{c[b+280>>2]=36;d=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;d=0;break a}break}default:{}}c[f>>2]=1;g=b+24|0;j=c[g>>2]|0;h=b+292|0;c[h>>2]=j;k=b+28|0;i=(c[k>>2]|0)+d|0;c[k>>2]=i;c[b+40>>2]=i;k=b+36|0;c[k>>2]=(c[k>>2]|0)+d;a[b+480>>0]=e;d=b+276|0;i=ob[c[d>>2]&127](b,j,i,g)|0;c[b+280>>2]=i;if(i|0){c[b+288>>2]=c[b+284>>2];c[d>>2]=66;d=0;break}switch(c[f>>2]|0){case 3:{d=2;break}case 1:case 0:{if(!e)d=1;else{c[f>>2]=2;d=1;break a}break}default:d=1}k=c[b+144>>2]|0;xb[c[k+48>>2]&31](k,c[h>>2]|0,c[g>>2]|0,b+404|0);c[h>>2]=c[g>>2]}while(0);return d|0}function _W(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;if(!($W(a)|0)){d=bX()|0;d=(H1()|0)^d;c[a>>2]=d;a=aX(139296,O(d,2147483647)|0)|0}else a=aX(139283,c[a>>2]|0)|0;l=b;return a|0}function $W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=X_(139283,0,f)|0;if((e|0)<0)b=0;else{b=0;while(1){g=G1(e,a+b|0,4-b|0)|0;d=g+b|0;if((g|0)>0)if(d>>>0<4)b=d;else{b=1;break}if((c[(O_()|0)>>2]|0)!=4){b=0;break}}X0(e)|0}l=f;return b|0}function aX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=Ta(139361)|0;if(d|0?(b$(d,139381)|0)==0:0){d=c[15686]|0;c[e>>2]=a;c[e+4>>2]=8;c[e+8>>2]=b;c[e+12>>2]=4;g1(d,139383,e)|0}l=f;return b|0}function bX(){var a=0,b=0;b=l;l=l+16|0;a=b;if(!(Ua(a|0,0)|0)){l=b;return c[a+4>>2]|0}else qa(139308,139330,819,139341);return 0}function cX(a){a=a|0;if(!a)a=41;else a=c[a+280>>2]|0;return a|0}function dX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)a=0;else{b=a+284|0;d=c[b>>2]|0;if(d|0?(e=a+292|0,f=c[e>>2]|0,d>>>0>=f>>>0):0){g=c[a+144>>2]|0;xb[c[g+48>>2]&31](g,f,d,a+404|0);c[e>>2]=c[b>>2]}a=(c[a+404>>2]|0)+1|0}return a|0}function eX(a){a=a|0;do switch(a|0){case 41:{a=139420;break}case 1:{a=140692;break}case 2:{a=140679;break}case 3:{a=140662;break}case 4:{a=140630;break}case 5:{a=140615;break}case 6:{a=140597;break}case 7:{a=140582;break}case 8:{a=140562;break}case 9:{a=140534;break}case 10:{a=140499;break}case 11:{a=140482;break}case 12:{a=140455;break}case 13:{a=140435;break}case 14:{a=140397;break}case 15:{a=140370;break}case 16:{a=140328;break}case 17:{a=140281;break}case 18:{a=140264;break}case 19:{a=140213;break}case 20:{a=140190;break}case 21:{a=140144;break}case 22:{a=140117;break}case 23:{a=140066;break}case 24:{a=140030;break}case 25:{a=139978;break}case 26:{a=139933;break}case 27:{a=139918;break}case 28:{a=139892;break}case 29:{a=139854;break}case 30:{a=139822;break}case 31:{a=139789;break}case 32:{a=139755;break}case 33:{a=139738;break}case 34:{a=139717;break}case 35:{a=139701;break}case 36:{a=139684;break}case 37:{a=139640;break}case 38:{a=139560;break}case 39:{a=139501;break}case 40:{a=139437;break}default:a=0}while(0);return a|0}function fX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;f=0;a:while(1){if(e>>>0<=a>>>0)break;h=e+-1|0;g=d[h>>0]|0;do if((g&248|0)==240)if((f+1|0)>>>0>3){i=5;break a}else f=0;else{if((g&240|0)==224)if((f+1|0)>>>0>2){i=8;break a}else{f=0;break}if((g&224|0)==192)if((f+1|0)>>>0>1){i=11;break a}else{f=0;break}else if(!(g&128))break a;else break}while(0);e=h;f=f+1|0}if((i|0)==5)e=e+3|0;else if((i|0)==8)e=e+2|0;else if((i|0)==11)e=e+1|0;c[b>>2]=e;return}function gX(b,c){b=b|0;c=c|0;do if((b|0)>=0){if((b|0)<128){a[c>>0]=b;b=1;break}if((b|0)<2048){a[c>>0]=b>>>6|192;a[c+1>>0]=b&63|128;b=2;break}if((b|0)<65536){a[c>>0]=b>>>12|224;a[c+1>>0]=b>>>6&63|128;a[c+2>>0]=b&63|128;b=3;break}if((b|0)<1114112){a[c>>0]=b>>>18|240;a[c+1>>0]=b>>>12&63|128;a[c+2>>0]=b>>>6&63|128;a[c+3>>0]=b&63|128;b=4}else b=0}else b=0;while(0);return b|0}function hX(){return 1908}function iX(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;while(1){if((i|0)==364){i=0;break}a[e+i>>0]=a[56472+i>>0]|0;i=i+1|0}a:while(1){if((i|0)>=128){j=5;break}switch(a[56544+i>>0]|0){case 0:case 28:break;default:if((c[f+(i<<2)>>2]|0)!=(i|0)){e=0;break a}}i=i+1|0}b:do if((j|0)==5){q=e+72|0;m=e+372|0;n=e+884|0;o=(g|0)==0;l=0;while(1){if((l|0)>=256)break;p=c[f+(l<<2)>>2]|0;do if((p|0)==-1){a[q+l>>0]=1;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0}else{if((p|0)<0){if(o|(p|0)<-4){e=0;break b}a[q+l>>0]=3-p;a[n+(l<<2)>>0]=0;b[m+(l<<1)>>1]=0;break}if((p|0)<128){i=a[56544+p>>0]|0;switch(i<<24>>24){case 0:case 28:break;default:if((p|0)!=(l|0)){e=0;break b}}a[q+l>>0]=i;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=p;b[m+(l<<1)>>1]=(p|0)==0?-1:p&65535;break}if((jX(p)|0)<0){a[q+l>>0]=0;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0;break}if((p|0)>65535){e=0;break b}i=p>>>8;j=p>>>5&7;k=1<<(p&31);if(!(c[56836+((d[140706+i>>0]<<3|j)<<2)>>2]&k))a[q+l>>0]=c[56836+((d[140962+i>>0]<<3|j)<<2)>>2]&k|0?26:28;else a[q+l>>0]=22;a[n+(l<<2)>>0]=gX(p,n+(l<<2)+1|0)|0;b[m+(l<<1)>>1]=p}while(0);l=l+1|0}c[e+368>>2]=h;c[e+364>>2]=g;if(!o){c[e+328>>2]=106;c[e+332>>2]=106;c[e+336>>2]=106;c[e+340>>2]=107;c[e+344>>2]=107;c[e+348>>2]=107;c[e+352>>2]=108;c[e+356>>2]=108;c[e+360>>2]=108}c[e+56>>2]=13;c[e+60>>2]=14}while(0);return e|0}function jX(b){b=b|0;var c=0;switch(b>>8|0){case 223:case 222:case 221:case 220:case 219:case 218:case 217:case 216:{b=-1;break}case 0:{if(!(a[56544+b>>0]|0))b=-1;else c=4;break}case 255:{if((b|1|0)==65535)b=-1;else c=4;break}default:c=4}return b|0}function kX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140962+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function lX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140706+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function mX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=1;else a=(jX(a)|0)>>>31;return a|0}function nX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;m=q;n=b+364|0;o=b+884|0;p=b+368|0;k=b+72|0;while(1){i=c[e>>2]|0;if((i|0)==(f|0)){h=0;break}r=d[i>>0]|0;j=o+(r<<2)+1|0;r=a[o+(r<<2)>>0]|0;b=r<<24>>24;if(!(r<<24>>24)){b=gX(lb[c[n>>2]&127](c[p>>2]|0,i)|0,m)|0;if((b|0)>(h-(c[g>>2]|0)|0)){h=2;break}i=c[e>>2]|0;j=m;i=i+((d[k+(d[i>>0]|0)>>0]|0)+-3)|0}else{if((h-(c[g>>2]|0)|0)<(b|0)){h=2;break}i=i+1|0}c[e>>2]=i;F3(c[g>>2]|0,j|0,b|0)|0;c[g>>2]=(c[g>>2]|0)+b}l=q;return h|0}function oX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=a+372|0;n=a+364|0;o=a+368|0;l=a+72|0;while(1){k=c[e>>2]|0;a=k>>>0<f>>>0;i=c[g>>2]|0;if(!(a&i>>>0<h>>>0))break;a=b[m+((d[k>>0]|0)<<1)>>1]|0;if(!(a<<16>>16)){a=(lb[c[n>>2]&127](c[o>>2]|0,k)|0)&65535;i=c[e>>2]|0;j=(d[l+(d[i>>0]|0)>>0]|0)+-3|0}else{j=1;i=k}c[e>>2]=i+j;k=c[g>>2]|0;c[g>>2]=k+2;b[k>>1]=a}return ((i|0)!=(h|0)|a^1?0:2)|0}function pX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:do if(e>>>0<f>>>0){n=b+72|0;do switch(a[n+(d[e>>0]|0)>>0]|0){case 12:{h=QX(12,b,e+1|0,f,g)|0;break a}case 13:{h=QX(13,b,e+1|0,f,g)|0;break a}case 2:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 16:{h=RX(b,e+2|0,f,g)|0;break a}case 15:{h=MX(b,e+2|0,f,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;h=29;break a}default:{c[g>>2]=h;h=0;break a}}}case 9:{if((e+1|0)==(f|0)){c[g>>2]=f;h=-15;break a}else k=3;break}case 10:case 21:{k=3;break}case 30:{h=GX(b,e+1|0,f,g)|0;break a}case 35:{c[g>>2]=e+1;h=38;break a}case 20:{c[g>>2]=e+1;h=25;break a}case 4:{i=e+1|0;h=f-i|0;if((h|0)<=0){h=-26;break a}if((a[i>>0]|0)==93){if((h|0)<=1){h=-1;break a}if((a[e+2>>0]|0)==62){c[g>>2]=e+3;h=34;break a}}c[g>>2]=i;h=26;break a}case 31:{c[g>>2]=e+1;h=23;break a}case 32:{h=e+1|0;if((f-h|0)<=0){h=-24;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 33:{c[g>>2]=e+2;h=36;break a}case 15:{c[g>>2]=e+2;h=35;break a}case 34:{c[g>>2]=e+2;h=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;h=24;break a}default:{c[g>>2]=h;h=0;break a}}}case 36:{c[g>>2]=e+1;h=21;break a}case 11:{c[g>>2]=e+1;h=17;break a}case 19:{h=SX(b,e+1|0,f,g)|0;break a}case 5:{if((f-e|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0))if(!(lb[c[b+328>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=2}else{h=18;i=2}break}case 6:{if((f-e|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0))if(!(lb[c[b+332>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=3}else{h=18;i=3}break}case 7:{if((f-e|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0))if(!(lb[c[b+336>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=4}else{h=18;i=4}break}case 24:case 22:{h=18;i=1;break}case 23:case 27:case 26:case 25:{h=19;i=1;break}default:{c[g>>2]=e;h=0;break a}}while(0);if((k|0)==3){j=f;i=e;b:while(1){h=i;i=i+1|0;if((j-i|0)<=0){k=18;break}switch(a[n+(d[i>>0]|0)>>0]|0){case 10:case 21:continue b;case 9:break;default:{k=17;break b}}if((h+2|0)==(f|0)){k=17;break}}if((k|0)==17){c[g>>2]=i;h=15;break}else if((k|0)==18){c[g>>2]=i;h=15;break}}k=b+328|0;l=b+332|0;m=b+336|0;j=e+i|0;c:while(1){i=f-j|0;if((i|0)<=0){k=99;break}switch(a[n+(d[j>>0]|0)>>0]|0){case 29:{k=56;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{k=70;break c}case 34:{k=89;break c}case 33:{k=92;break c}case 15:{k=95;break c}case 27:case 26:case 25:case 24:case 22:{e=h;j=j+1|0;h=e;continue c}case 5:{if((i|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,j)|0)){k=60;break c}e=h;j=j+2|0;h=e;continue c}case 6:{if((i|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,j)|0)){k=64;break c}e=h;j=j+3|0;h=e;continue c}case 7:{if((i|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,j)|0)){k=68;break c}e=h;j=j+4|0;h=e;continue c}case 23:{i=j+1|0;switch(h&63){case 18:break;case 41:{h=19;j=i;continue c}default:{e=h;j=i;h=e;continue c}}h=f-i|0;if((h|0)<=0){h=-1;break a}switch(a[n+(d[i>>0]|0)>>0]|0){case 29:{k=74;break c}case 27:case 26:case 25:case 24:case 22:{h=41;j=j+2|0;continue c}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,i)|0)){k=78;break c}h=41;j=j+3|0;continue c}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,i)|0)){k=82;break c}h=41;j=j+4|0;continue c}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){k=86;break c}h=41;j=j+5|0;continue c}default:{h=19;j=i;continue c}}}default:{k=98;break c}}}switch(k|0){case 56:{c[g>>2]=j;h=0;break a}case 60:{c[g>>2]=j;h=0;break a}case 64:{c[g>>2]=j;h=0;break a}case 68:{c[g>>2]=j;h=0;break a}case 70:{c[g>>2]=j;break a}case 74:{c[g>>2]=i;h=0;break a}case 78:{c[g>>2]=i;h=0;break a}case 82:{c[g>>2]=i;h=0;break a}case 86:{c[g>>2]=i;h=0;break a}case 89:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=32;break a}case 92:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=31;break a}case 95:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=30;break a}case 98:{c[g>>2]=j;h=0;break a}case 99:{h=0-h|0;break a}}}else h=-4;while(0);return h|0}function qX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){m=b+72|0;b:do switch(a[m+(d[e>>0]|0)>>0]|0){case 2:{h=JX(b,e+1|0,f,g)|0;break a}case 3:{h=FX(b,e+1|0,f,g)|0;break a}case 9:{h=e+1|0;if((f-h|0)<=0){h=-3;break a}c[g>>2]=(a[m+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 4:{i=e+1|0;if((f-i|0)<=0){h=-5;break a}if((a[i>>0]|0)==93){h=e+2|0;if((f-h|0)<=0){h=-5;break a}if((a[h>>0]|0)==62){c[g>>2]=h;h=0;break a}else h=f}else h=f;break}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);j=b+352|0;k=b+356|0;l=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=49;break}switch(a[m+(d[i>>0]|0)>>0]|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=47;break c}case 5:{if((f|0)<2){f=32;break c}if(lb[c[j>>2]&127](b,i)|0){f=32;break c}i=i+2|0;continue c}case 6:{if((f|0)<3){f=36;break c}if(lb[c[k>>2]&127](b,i)|0){f=36;break c}i=i+3|0;continue c}case 7:{if((f|0)<4){f=40;break c}if(lb[c[l>>2]&127](b,i)|0){f=40;break c}i=i+4|0;continue c}case 4:{if((f|0)<=1){f=47;break c}e=i+1|0;if((a[e>>0]|0)!=93){i=e;continue c}if((f|0)<=2){f=47;break c}i=i+2|0;if((a[i>>0]|0)==62){f=46;break c}else{i=e;continue c}}default:{i=i+1|0;continue c}}}if((f|0)==32){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==40){c[g>>2]=i;h=6;break}else if((f|0)==46){c[g>>2]=i;h=0;break}else if((f|0)==47){c[g>>2]=i;h=6;break}else if((f|0)==49){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function rX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if(e>>>0<f>>>0){l=b+72|0;b:do switch(a[l+(d[e>>0]|0)>>0]|0){case 4:{i=e+1|0;h=f;if((h-i|0)<=0){h=-1;break a}if((a[i>>0]|0)==93){f=e+2|0;if((h-f|0)<=0){h=-1;break a}if((a[f>>0]|0)==62){c[g>>2]=e+3;h=40;break a}}break}case 9:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);e=b+352|0;j=b+356|0;k=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=39;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 4:case 10:case 9:case 8:case 1:case 0:{f=37;break c}case 5:{if((f|0)<2){f=30;break c}if(!(lb[c[e>>2]&127](b,i)|0))f=2;else{f=30;break c}break}case 6:{if((f|0)<3){f=33;break c}if(!(lb[c[j>>2]&127](b,i)|0))f=3;else{f=33;break c}break}case 7:{if((f|0)<4){f=36;break c}if(!(lb[c[k>>2]&127](b,i)|0))f=4;else{f=36;break c}break}default:f=1}i=i+f|0}if((f|0)==30){c[g>>2]=i;h=6;break}else if((f|0)==33){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==37){c[g>>2]=i;h=6;break}else if((f|0)==39){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function sX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=b+72|0;k=b+352|0;l=b+356|0;m=b+360|0;i=0;a:while(1){h=f-e|0;if((h|0)<=0){f=-1;break}switch(a[j+(d[e>>0]|0)>>0]|0){case 8:case 1:case 0:{n=16;break a}case 5:{if((h|0)<2){f=-2;break a}if(lb[c[k>>2]&127](b,e)|0){n=6;break a}h=i;e=e+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}if(lb[c[l>>2]&127](b,e)|0){n=10;break a}h=i;e=e+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}if(lb[c[m>>2]&127](b,e)|0){n=14;break a}h=i;e=e+4|0;i=h;continue a}case 2:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=33){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}o=(a[h>>0]|0)==91;i=i+(o&1)|0;e=o?e+3|0:h;continue a}case 4:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=93){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=62){o=i;e=h;i=o;continue a}e=e+3|0;if(!i){n=26;break a}i=i+-1|0;continue a}default:{o=i;e=e+1|0;i=o;continue a}}}if((n|0)==6){c[g>>2]=e;f=0}else if((n|0)==10){c[g>>2]=e;f=0}else if((n|0)==14){c[g>>2]=e;f=0}else if((n|0)==16){c[g>>2]=e;f=0}else if((n|0)==26){c[g>>2]=e;f=42}return f|0}function tX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=24;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 2:{j=11;break a}case 10:{j=12;break a}case 9:{j=15;break a}case 21:{j=19;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11){c[g>>2]=i;h=0;break}else if((j|0)==12)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==15){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==19)if((i|0)==(e|0)){c[g>>2]=e+1;h=39;break}else{c[g>>2]=i;h=6;break}else if((j|0)==24){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function uX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=23;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 30:{j=11;break a}case 10:{j=14;break a}case 9:{j=17;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11)if((i|0)==(e|0)){h=GX(b,e+1|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=i;h=6;break}else if((j|0)==14)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==17){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==23){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function vX(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=6;break}if((f-b|0)<1){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+1|0}if((g|0)==6)b=(b|0)==(d|0)&1;return b|0}function wX(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;b=c;a:while(1){switch(a[f+(d[b>>0]|0)>>0]|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=1;break}default:break a}b=b+e|0}return b-c|0}function xX(b,c){b=b|0;c=c|0;b=b+72|0;a:while(1){switch(a[b+(d[c>>0]|0)>>0]|0){case 21:case 9:case 10:break;default:break a}c=c+1|0}return c|0}function yX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+72|0;j=0;k=0;b=1;a:while(1){h=e+1|0;i=a[h>>0]|0;do switch(a[l+(i&255)>>0]|0){case 5:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+2|0;k=h;j=i;continue a}case 6:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+3|0;k=h;j=i;continue a}case 7:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+4|0;k=h;j=i;continue a}case 24:case 22:case 29:{if(b|0){o=b;n=k;i=j;e=h;b=o;k=n;j=i;continue a}if((k|0)>=(f|0)){n=k;o=j;b=1;e=h;k=n;j=o;continue a}c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;n=k;o=j;b=1;e=h;k=n;j=o;continue a}case 12:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=12;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=12;b=2;e=h;k=o;continue a}if((j|0)!=12){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=12;k=k+1|0;b=0;e=h;continue a}case 13:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=13;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=13;b=2;e=h;k=o;continue a}if((j|0)!=13){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=13;k=k+1|0;b=0;e=h;continue a}case 3:{if((k|0)>=(f|0)){i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}case 21:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}b=g+(k<<4)+12|0;if(!(a[b>>0]|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if(((i<<24>>24==32?(h|0)!=(c[g+(k<<4)+4>>2]|0):0)?(m=a[e+2>>0]|0,m<<24>>24!=32):0)?(j|0)!=(d[l+(m&255)>>0]|0):0){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[b>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 10:case 9:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 17:case 11:if((b|0)==2){n=k;o=j;b=2;e=h;k=n;j=o;continue a}else break a;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}while(0)}return k|0}function zX(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+2|0;d=a[b>>0]|0;a:do if(d<<24>>24==120){d=c+3|0;b=0;while(1){b:while(1){e=a[d>>0]|0;c=e<<24>>24;if(e<<24>>24==59){e=14;break a}switch(c|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=7;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=8;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=9;break b}default:{}}d=d+1|0}if((e|0)==7){e=0;b=c+-48|b<<4}else if((e|0)==8){e=0;b=(b<<4)+-55+c|0}else if((e|0)==9){e=0;b=(b<<4)+-87+c|0}if((b|0)<1114112)d=d+1|0;else{b=-1;break}}}else{c=b;b=0;while(1){if(d<<24>>24==59){e=14;break a}b=(d<<24>>24)+-48+(b*10|0)|0;if((b|0)>=1114112){b=-1;break a}d=c+1|0;c=d;d=a[d>>0]|0}}while(0);if((e|0)==14)b=jX(b)|0;return b|0}function AX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch(d-c|0){case 2:{if((a[c+1>>0]|0)==116){b=a[c>>0]|0;b=b<<24>>24==108?60:b<<24>>24==103?62:0}else e=14;break}case 3:{if(((a[c>>0]|0)==97?(a[c+1>>0]|0)==109:0)?(a[c+2>>0]|0)==112:0)b=38;else e=14;break}case 4:switch(a[c>>0]|0){case 113:{if((a[c+1>>0]|0)!=117){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==116){b=34;break a}else{e=14;break a}}case 97:{if((a[c+1>>0]|0)!=112){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==115){b=39;break a}else{e=14;break a}}default:{e=14;break a}}default:e=14}while(0);if((e|0)==14)b=0;return b|0}function BX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=b+72|0;i=g+4|0;while(1){if((f-e|0)<=0)break;switch(a[h+(d[e>>0]|0)>>0]|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[i>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+1|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;b=e+1|0;if((f-b|0)>0)e=(a[h+(d[b>>0]|0)>>0]|0)==10?e+2|0:b;else e=b;c[i>>2]=-1;break}default:e=e+1|0}c[i>>2]=(c[i>>2]|0)+1}return}function CX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=e+-1|0;b=b+72|0;a:while(1){d=d+1|0;if((g-d|0)<=0){d=1;break}e=a[d>>0]|0;switch(a[b+(e&255)>>0]|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:continue a;case 21:if(e<<24>>24==9){h=7;break a}else continue a;case 22:case 26:{if(e<<24>>24>=0)continue a;break}default:{}}switch(e<<24>>24|0){case 64:case 36:break;default:{h=7;break a}}}if((h|0)==7){c[f>>2]=d;d=0}return d|0}function DX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=h;while(1){j=c[e>>2]|0;if((j|0)==(f|0)){b=0;break}k=d[j>>0]|0;b=c[g>>2]|0;if(!(k&128)){if((b|0)==(h|0)){b=2;break}c[e>>2]=j+1;j=a[j>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;continue}else{if((i-b|0)<2){b=2;break}c[g>>2]=b+1;a[b>>0]=k>>>6|192;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=k&63|128;c[e>>2]=(c[e>>2]|0)+1;continue}}return b|0}function EX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;while(1){a=c[e>>2]|0;i=a>>>0<f>>>0;j=c[g>>2]|0;if(!(i&j>>>0<h>>>0))break;c[e>>2]=a+1;i=d[a>>0]|0;j=c[g>>2]|0;c[g>>2]=j+2;b[j>>1]=i}return ((j|0)!=(h|0)|i^1?0:2)|0}function FX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;h=k-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}case 19:{f=HX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;f=0;break a}}h=b+328|0;i=b+332|0;j=b+336|0;e=e+f|0;b:while(1){f=k-e|0;if((f|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[h>>2]&127](b,e)|0)){h=21;break b}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=24;break b}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=27;break b}else f=4;break}default:{h=30;break b}}e=e+f|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=9;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function GX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=21;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=24;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=27;break b}else h=4;break}default:{h=30;break b}}e=e+h|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=28;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function HX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;a:do if((i-e|0)>0){h=a[e>>0]|0;if(h<<24>>24==120){b=IX(b,e+1|0,f,g)|0;break}f=b+72|0;if((a[f+(h&255)>>0]|0)!=25){c[g>>2]=e;b=0;break}b:while(1){b=e+1|0;if((i-b|0)<=0){b=-1;break a}switch(a[f+(d[b>>0]|0)>>0]|0){case 25:{e=b;break}case 18:{f=8;break b}default:{f=9;break b}}}if((f|0)==8){c[g>>2]=e+2;b=10;break}else if((f|0)==9){c[g>>2]=b;b=0;break}}else b=-1;while(0);return b|0}function IX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;a:do if((f-e|0)>0){b=b+72|0;if((a[b+(d[e>>0]|0)>>0]&-2)<<24>>24!=24){c[g>>2]=e;f=0;break}b:while(1){h=e+1|0;if((f-h|0)<=0){f=-1;break a}switch(a[b+(d[h>>0]|0)>>0]|0){case 24:case 25:{e=h;break}case 18:{b=6;break b}default:{b=7;break b}}}if((b|0)==6){c[g>>2]=e+2;f=10;break}else if((b|0)==7){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function JX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f;h=q-e|0;a:do if((h|0)>0){p=b+72|0;switch(a[p+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;h=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=2;break}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=3;break}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=4;break}case 16:{h=e+1|0;if((q-h|0)<=0){h=-1;break a}switch(a[p+(d[h>>0]|0)>>0]|0){case 27:{h=KX(b,e+2|0,f,g)|0;break a}case 20:{h=LX(e+2|0,f,g)|0;break a}default:{c[g>>2]=h;h=0;break a}}}case 15:{h=MX(b,e+1|0,f,g)|0;break a}case 17:{h=NX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}j=b+328|0;k=b+332|0;l=b+336|0;m=b+340|0;n=b+344|0;o=b+348|0;i=0;h=e+h|0;b:while(1){e=q-h|0;if((e|0)<=0){h=-1;break a}c:do switch(a[p+(d[h>>0]|0)>>0]|0){case 29:{r=24;break b}case 10:case 9:case 21:{r=50;break b}case 11:{r=64;break b}case 17:break b;case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){r=27;break b}else e=2;break}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){r=30;break b}else e=3;break}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[l>>2]&127](b,h)|0)){r=33;break b}else e=4;break}case 23:{if(i|0){r=35;break b}i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 29:{r=38;break b}case 24:case 22:{i=1;e=2;break c}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){r=42;break b}else{i=1;e=3;break c}}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){r=45;break b}else{i=1;e=4;break c}}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){r=48;break b}else{i=1;e=5;break c}}default:{r=49;break b}}}default:{r=69;break b}}while(0);h=h+e|0}d:switch(r|0){case 24:{c[g>>2]=h;h=0;break a}case 27:{c[g>>2]=h;h=0;break a}case 30:{c[g>>2]=h;h=0;break a}case 33:{c[g>>2]=h;h=0;break a}case 35:{c[g>>2]=h;h=0;break a}case 38:{c[g>>2]=i;h=0;break a}case 42:{c[g>>2]=i;h=0;break a}case 45:{c[g>>2]=i;h=0;break a}case 48:{c[g>>2]=i;h=0;break a}case 49:{c[g>>2]=i;h=0;break a}case 50:{e:while(1){r=0;i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 11:{h=i;r=64;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;r=50;break}case 29:{r=52;break e}case 24:case 22:{i=2;break e}case 5:{r=53;break e}case 6:{r=56;break e}case 7:{r=59;break e}default:{r=62;break e}}}if((r|0)==52){c[g>>2]=i;h=0;break a}else if((r|0)==53){if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=3}else if((r|0)==56){if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=4}else if((r|0)==59){if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=5}else if((r|0)==62){c[g>>2]=i;h=0;break a}h=OX(b,h+i|0,f,g)|0;break a}case 69:{c[g>>2]=h;h=0;break a}}if((r|0)==64){c[g>>2]=h+1;h=2;break}i=h+1|0;if((q-i|0)>0)if((a[i>>0]|0)==62){c[g>>2]=h+2;h=4;break}else{c[g>>2]=i;h=0;break}else h=-1}else h=-1;while(0);return h|0}function KX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if((f-e|0)>0){if((a[e>>0]|0)!=45){c[g>>2]=e;f=0;break}h=b+72|0;i=b+352|0;j=b+356|0;k=b+360|0;l=e+1|0;b:while(1){e=f-l|0;if((e|0)<=0){f=-1;break a}switch(a[h+(d[l>>0]|0)>>0]|0){case 8:case 1:case 0:{e=19;break b}case 5:{if((e|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,l)|0){e=9;break b}l=l+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,l)|0){e=13;break b}l=l+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,l)|0){e=17;break b}l=l+4|0;continue b}case 27:{e=l+1|0;if((f-e|0)<=0){f=-1;break a}if((a[e>>0]|0)==45){e=22;break b}else{l=e;continue b}}default:{l=l+1|0;continue b}}}if((e|0)==9){c[g>>2]=l;f=0;break}else if((e|0)==13){c[g>>2]=l;f=0;break}else if((e|0)==17){c[g>>2]=l;f=0;break}else if((e|0)==19){c[g>>2]=l;f=0;break}else if((e|0)==22){e=l+2|0;if((f-e|0)<=0){f=-1;break}if((a[e>>0]|0)==62){c[g>>2]=l+3;f=13;break}else{c[g>>2]=e;f=0;break}}}else f=-1;while(0);return f|0}function LX(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>5){d=0;while(1){if((d|0)>=6){d=8;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+1|0}c[e>>2]=b}else d=-1;return d|0}function MX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;f=o-e|0;a:do if((f|0)>0){n=b+72|0;switch(a[n+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;f=e+f|0;b:while(1){h=o-f|0;if((h|0)<=0){f=-1;break a}switch(a[n+(d[f>>0]|0)>>0]|0){case 29:{m=17;break b}case 10:case 9:case 21:{m=28;break b}case 15:{m=50;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,f)|0)){m=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,f)|0)){m=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,f)|0)){m=26;break b}else h=4;break}default:break b}f=f+h|0}if((m|0)==17){c[g>>2]=f;f=0;break}else if((m|0)==20){c[g>>2]=f;f=0;break}else if((m|0)==23){c[g>>2]=f;f=0;break}else if((m|0)==26){c[g>>2]=f;f=0;break}else if((m|0)==28){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}i=b+352|0;j=b+356|0;k=b+360|0;h=f+1|0;c:while(1){f=o-h|0;if((f|0)<=0){f=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 8:case 1:case 0:{m=45;break c}case 5:{if((f|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,h)|0){m=35;break c}h=h+2|0;continue c}case 6:{if((f|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,h)|0){m=39;break c}h=h+3|0;continue c}case 7:{if((f|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,h)|0){m=43;break c}h=h+4|0;continue c}case 15:{f=h+1|0;if((o-f|0)<=0){f=-1;break a}if((a[f>>0]|0)==62){m=48;break c}else{h=f;continue c}}default:{h=h+1|0;continue c}}}if((m|0)==35){c[g>>2]=h;f=0;break}else if((m|0)==39){c[g>>2]=h;f=0;break}else if((m|0)==43){c[g>>2]=h;f=0;break}else if((m|0)==45){c[g>>2]=h;f=0;break}else if((m|0)==48){c[g>>2]=h+2;f=c[p>>2]|0;break}}else if((m|0)==50){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}h=f+1|0;if((o-h|0)<=0){f=-1;break}if((a[h>>0]|0)==62){c[g>>2]=f+2;f=c[p>>2]|0;break}else f=h}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function NX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;h=e+h|0;b:while(1){e=f-h|0;if((e|0)<=0){f=-1;break a}switch(a[l+(d[h>>0]|0)>>0]|0){case 29:{i=17;break b}case 10:case 9:case 21:{i=27;break b}case 11:{i=32;break b}case 23:case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,h)|0)){i=20;break b}else e=2;break}case 6:{if((e|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){i=23;break b}else e=3;break}case 7:{if((e|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){i=26;break b}else e=4;break}default:{i=33;break b}}h=h+e|0}if((i|0)==17){c[g>>2]=h;f=0;break}else if((i|0)==20){c[g>>2]=h;f=0;break}else if((i|0)==23){c[g>>2]=h;f=0;break}else if((i|0)==26){c[g>>2]=h;f=0;break}else if((i|0)==27){c:while(1){e=h+1|0;if((f-e|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 10:case 9:case 21:{h=e;i=27;break}case 11:{i=29;break c}default:{i=30;break c}}}if((i|0)==29){c[g>>2]=h+2;f=5;break}else if((i|0)==30){c[g>>2]=e;f=0;break}}else if((i|0)==32){c[g>>2]=h+1;f=5;break}else if((i|0)==33){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function OX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;v=y;c[v>>2]=e;w=f;r=b+72|0;s=b+328|0;t=b+332|0;u=b+336|0;k=b+340|0;m=b+344|0;n=b+348|0;o=b+352|0;p=b+356|0;q=b+360|0;i=0;a:while(1){h=w-e|0;if((h|0)<=0){e=-1;break}b:do switch(a[r+(d[e>>0]|0)>>0]|0){case 29:{x=4;break a}case 27:case 26:case 25:case 24:case 22:{h=e+1|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 5:{if((h|0)<2){e=-2;break a}if(!(lb[c[s>>2]&127](b,e)|0)){x=8;break a}h=e+2|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 6:{if((h|0)<3){e=-2;break a}if(!(lb[c[t>>2]&127](b,e)|0)){x=12;break a}h=e+3|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 7:{if((h|0)<4){e=-2;break a}if(!(lb[c[u>>2]&127](b,e)|0)){x=16;break a}h=e+4|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 23:{if(i|0){x=19;break a}h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=22;break a}case 24:case 22:{j=e+2|0;c[v>>2]=j;i=1;e=j;continue a}case 5:{if((i|0)<2){e=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){x=26;break a}j=e+3|0;c[v>>2]=j;i=1;e=j;continue a}case 6:{if((i|0)<3){e=-2;break a}if(!(lb[c[m>>2]&127](b,h)|0)){x=30;break a}j=e+4|0;c[v>>2]=j;i=1;e=j;continue a}case 7:{if((i|0)<4){e=-2;break a}if(!(lb[c[n>>2]&127](b,h)|0)){x=34;break a}j=e+5|0;c[v>>2]=j;i=1;e=j;continue a}default:{x=36;break a}}}case 10:case 9:case 21:while(1){e=e+1|0;c[v>>2]=e;if((w-e|0)<=0){e=-1;break a}switch(a[r+(d[e>>0]|0)>>0]|0){case 14:break b;case 9:case 10:case 21:break;default:{x=39;break a}}}case 14:break;default:{x=92;break a}}while(0);while(1){h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break a}j=a[r+(d[h>>0]|0)>>0]|0;if((j|1)<<24>>24==13)break;switch(j<<24>>24){case 9:case 10:case 21:{e=h;break}default:{x=43;break a}}}e=e+2|0;c[v>>2]=e;c:while(1){h=w-e|0;if((h|0)<=0){e=-1;break a}i=a[r+(d[e>>0]|0)>>0]|0;if(i<<24>>24==j<<24>>24)break;switch(i<<24>>24){case 8:case 1:case 0:{x=60;break a}case 2:{x=65;break a}case 5:{if((h|0)<2){e=-2;break a}if(lb[c[o>>2]&127](b,e)|0){x=50;break a}i=e+2|0;c[v>>2]=i;e=i;continue c}case 6:{if((h|0)<3){e=-2;break a}if(lb[c[p>>2]&127](b,e)|0){x=54;break a}i=e+3|0;c[v>>2]=i;e=i;continue c}case 7:{if((h|0)<4){e=-2;break a}if(lb[c[q>>2]&127](b,e)|0){x=58;break a}i=e+4|0;c[v>>2]=i;e=i;continue c}case 3:{e=FX(b,e+1|0,f,v)|0;if((e|0)<1){x=63;break a}e=c[v>>2]|0;continue c}default:{i=e+1|0;c[v>>2]=i;e=i;continue c}}}h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break}switch(a[r+(d[h>>0]|0)>>0]|0){case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}default:{x=69;break a}}d:while(1){h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=72;break a}case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}case 24:case 22:{x=73;break d}case 5:{x=74;break d}case 6:{x=78;break d}case 7:{x=82;break d}default:{x=91;break a}}}if((x|0)==73){x=0;e=e+2|0;c[v>>2]=e;i=0;continue}else if((x|0)==74){x=0;if((i|0)<2){e=-2;break}if(!(lb[c[k>>2]&127](b,h)|0)){x=76;break}e=e+3|0;c[v>>2]=e;i=0;continue}else if((x|0)==78){x=0;if((i|0)<3){e=-2;break}if(!(lb[c[m>>2]&127](b,h)|0)){x=80;break}e=e+4|0;c[v>>2]=e;i=0;continue}else if((x|0)==82){x=0;if((i|0)<4){e=-2;break}if(!(lb[c[n>>2]&127](b,h)|0)){x=84;break}e=e+5|0;c[v>>2]=e;i=0;continue}}switch(x|0){case 4:{c[g>>2]=e;e=0;break}case 8:{c[g>>2]=e;e=0;break}case 12:{c[g>>2]=e;e=0;break}case 16:{c[g>>2]=e;e=0;break}case 19:{c[g>>2]=e;e=0;break}case 22:{c[g>>2]=h;e=0;break}case 26:{c[g>>2]=h;e=0;break}case 30:{c[g>>2]=h;e=0;break}case 34:{c[g>>2]=h;e=0;break}case 36:{c[g>>2]=h;e=0;break}case 39:{c[g>>2]=e;e=0;break}case 43:{c[g>>2]=h;e=0;break}case 50:{c[g>>2]=e;e=0;break}case 54:{c[g>>2]=e;e=0;break}case 58:{c[g>>2]=e;e=0;break}case 60:{c[g>>2]=e;e=0;break}case 63:{if(!e){c[g>>2]=c[v>>2];e=0}break}case 65:{c[g>>2]=e;e=0;break}case 69:{c[g>>2]=h;e=0;break}case 72:{c[g>>2]=h;e=0;break}case 76:{c[g>>2]=h;e=0;break}case 80:{c[g>>2]=h;e=0;break}case 84:{c[g>>2]=h;e=0;break}case 86:{c[g>>2]=e+2;e=1;break}case 87:{e=h+1|0;c[v>>2]=e;if((w-e|0)>0)if((a[e>>0]|0)==62){c[g>>2]=h+2;e=3;break}else{c[g>>2]=e;e=0;break}else e=-1;break}case 91:{c[g>>2]=h;e=0;break}case 92:{c[g>>2]=e;e=0;break}}l=y;return e|0}function PX(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==3){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}switch(a[b+1>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}switch(a[b+2>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1;while(0);return d|0}function QX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=e+72|0;l=e+352|0;m=e+356|0;n=e+360|0;a:while(1){i=g-f|0;if((i|0)<=0){g=-1;break}j=a[k+(d[f>>0]|0)>>0]|0;switch(j<<24>>24){case 8:case 1:case 0:{o=16;break a}case 5:{if((i|0)<2){g=-2;break a}if(lb[c[l>>2]&127](e,f)|0){o=6;break a}f=f+2|0;continue a}case 6:{if((i|0)<3){g=-2;break a}if(lb[c[m>>2]&127](e,f)|0){o=10;break a}f=f+3|0;continue a}case 7:{if((i|0)<4){g=-2;break a}if(lb[c[n>>2]&127](e,f)|0){o=14;break a}f=f+4|0;continue a}case 13:case 12:{f=f+1|0;if((j&255|0)==(b|0)){o=18;break a}else continue a}default:{f=f+1|0;continue a}}}b:do if((o|0)==6){c[h>>2]=f;g=0}else if((o|0)==10){c[h>>2]=f;g=0}else if((o|0)==14){c[h>>2]=f;g=0}else if((o|0)==16){c[h>>2]=f;g=0}else if((o|0)==18)if((g-f|0)>0){c[h>>2]=f;switch(a[k+(d[f>>0]|0)>>0]|0){case 20:case 30:case 11:case 10:case 9:case 21:{g=27;break b}default:{}}g=0}else g=-27;while(0);return g|0}function RX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f;a:do if((h-e|0)>0){i=b+72|0;switch(a[i+(d[e>>0]|0)>>0]|0){case 27:{b=KX(b,e+1|0,f,g)|0;break a}case 20:{c[g>>2]=e+1;b=33;break a}case 24:case 22:{b:while(1){b=e+1|0;f=h-b|0;if((f|0)<=0){b=-1;break a}switch(a[i+(d[b>>0]|0)>>0]|0){case 24:case 22:{e=b;break}case 30:{j=8;break b}case 10:case 9:case 21:break b;default:{j=12;break b}}}if((j|0)==12){c[g>>2]=b;b=0;break a}c:do if((j|0)==8){if((f|0)<=1){b=-1;break a}switch(a[i+(d[e+2>>0]|0)>>0]|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=b;b=0;break a}while(0);c[g>>2]=b;b=16;break a}default:{c[g>>2]=e;b=0;break a}}}else b=-1;while(0);return b|0}\n  function Rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a;while(1){j=c[f>>2]|0;if(!j){k=6;break}if((c[j>>2]|0)==(b|0))break;f=j+4|0}if((k|0)==6)qa(93188,93195,217,93206);i=j+8|0;f=c[i>>2]|0;g=j+4|0;b=c[g>>2]|0;c[(f|0?f+4|0:a)>>2]=b;h=a+4|0;c[(b|0?b+8|0:h)>>2]=f;b=0;f=a;while(1){f=c[f>>2]|0;if(!f)break;if((c[f>>2]|0)==(d|0)){k=9;break}b=f;f=f+4|0}if((k|0)==9){do if(!e)if((f|0)==(c[a>>2]|0)){c[a>>2]=j;c[g>>2]=f;c[i>>2]=0;f=f+8|0;break}else{c[b+4>>2]=j;c[i>>2]=b;c[g>>2]=f;f=f+8|0;break}else if((f|0)==(c[h>>2]|0)){c[h>>2]=j;c[g>>2]=0;c[i>>2]=f;f=f+4|0;break}else{c[i>>2]=f;f=f+4|0;c[g>>2]=c[f>>2];c[(c[f>>2]|0)+8>>2]=j;break}while(0);c[f>>2]=j}return}function Sv(a){a=a|0;return c[a+8>>2]|0}function Tv(a,b){a=a|0;b=b|0;Uv(a,Ov(b)|0);D_(b);return}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if(d|0){e=a+4|0;f=c[e>>2]|0;c[f+4>>2]=d;c[d+8>>2]=f;c[e>>2]=c[b+4>>2];d=a+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+8>>2]|0)}return}function Vv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=c[b+8>>2]|0;Wv(a,b);l=Xv(m)|0;a=Zv(Yv(l)|0)|0;_v(m,a);m=$v(a,m)|0;a=Sv(m)|0;j=+aw(m);k=(a|0)==1;f=+(a|0);i=f*.15915494309189535*(j+d);g=k?0.0:i;a=m;while(1){a=c[a>>2]|0;if(!a)break;if(c[(c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&8|0){e=4;break}a=a+4|0}if((e|0)==4)Pv(m,a);d=1.0/f;e=0;a=m;while(1){a=c[a>>2]|0;if(!a)break;n=(c[a>>2]|0)+16|0;c[(c[(c[n>>2]|0)+112>>2]|0)+16>>2]=e;h[(c[(c[n>>2]|0)+112>>2]|0)+24>>3]=0.0;f=6.283185307179586*d*+(e|0);o=+E(+f)*g;n=c[(c[n>>2]|0)+132>>2]|0;h[n>>3]=o;h[n+8>>3]=+F(+f)*g;e=e+1|0;a=a+4|0}o=k?j*.5:i;h[b+16>>3]=o;h[b+24>>3]=o;h[b+48>>3]=-1.0;$x(l)|0;return m|0}function Wv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=Sy(f)|0;while(1){if(!d)break;e=Ex(a,d)|0;while(1){if(!e)break;if((c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+12>>2]|0)==(b|0))Vx(f,e,1)|0;e=Gx(a,e)|0}d=Ty(f,d)|0}return}function Xv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;f=gw(a,g)|0;g=c[g>>2]|0;i=ay(g)|0;h=hw(g)|0;i=i+-3|0;e=0;while(1){if((e|0)>=(i|0))break;j=qw(h)|0;d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;pw(h,a);d=Kx(g,d,j)|0}iw(g,j,f);d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;b=(c[a+16>>2]|0)+236|0;c[b>>2]=(c[b>>2]|0)+-1;ow(h,a);d=Kx(g,d,j)|0}dz(g,j)|0;e=e+1|0}$x(g)|0;nw(h);l=k;return f|0}function Yv(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;b=f;e=f+8|0;d=c[46162]|0;c[46162]=d+1;c[b>>2]=d;Y0(e,93221,b)|0;e=vA(a,e,1)|0;Az(e,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;Xy(e,b,1)|0;d=b+16|0;c[(c[(c[d>>2]|0)+112>>2]|0)+16+12>>2]=0;c[(c[(c[d>>2]|0)+112>>2]|0)+32>>2]=0;d=(c[(c[d>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-2;b=Ty(a,b)|0}b=Sy(a)|0;while(1){if(!b)break;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+4>>2]&1)){c[d+16>>2]=0;fw(a,b,e)}b=Ty(a,b)|0}l=f;return e|0}function Zv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((ay(a)|0)!=1){d=Sy(a)|0;while(1){if(!d)break;b=0;e=Jx(a,d)|0;while(1){if(!e)break;b=b+1|0;e=Kx(a,e,d)|0}if((b|0)==1)ew(d,d,0,0);d=Ty(a,d)|0}b=0;f=0;d=Sy(a)|0;while(1){if(!d)break;g=c[(c[d+16>>2]|0)+112>>2]|0;g=(c[g+32>>2]|0)+(c[g+16+12>>2]|0)|0;e=(g|0)>(b|0);b=e?g:b;f=e?d:f;d=Ty(a,d)|0}b=Kv()|0;e=f+16|0;d=(c[(c[e>>2]|0)+112>>2]|0)+16+4|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(b,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Mv(b,0,f);g=c[(c[e>>2]|0)+112>>2]|0;a=g+4|0;c[a>>2]=c[a>>2]|16;if(c[g+32>>2]|0){a=Kv()|0;d=(c[(c[e>>2]|0)+112>>2]|0)+24|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(a,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Tv(b,a)}}else{b=Kv()|0;g=Sy(a)|0;Mv(b,0,g);g=(c[(c[g+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|16}return b|0}function _v(a,b){a=a|0;b=b|0;var d=0;d=Sy(a)|0;while(1){if(!d)break;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&16))dw(a,d,b);d=Ty(a,d)|0}return}function $v(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=bw(a,b)|0;c[f>>2]=d;a:do if(d){e=0;while(1){if((e|0)>=10)break a;a=cw(a,b,f)|0;h=d;d=c[f>>2]|0;if((h|0)==(d|0)|(d|0)==0)break;else e=e+1|0}}while(0);l=g;return a|0}function aw(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0;b=0.0;while(1){a=c[a>>2]|0;if(!a)break;f=c[(c[c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]>>2]|0)+16>>2]|0;d=+h[f+32>>3];d=d>b?d:b;e=+h[f+40>>3];b=e>d?e:d;a=a+4|0}return +b}function bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=rw()|0;e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;c[c[(c[d+16>>2]|0)+120>>2]>>2]=0;d=Gx(b,d)|0}e=Ty(b,e)|0}j=1;d=0;while(1){h=c[a>>2]|0;if(!h)break;i=c[h>>2]|0;g=Jx(b,i)|0;while(1){if(!g)break;f=g+16|0;if((c[c[(c[f>>2]|0)+120>>2]>>2]|0)>0){a=nb[c[k>>2]&63](k,0,128)|0;while(1){if(!a)break;e=c[a+8>>2]|0;if((c[c[(c[e+16>>2]|0)+120>>2]>>2]|0)>(c[c[(c[f>>2]|0)+120>>2]>>2]|0)?(l=c[e>>2]&3,(c[((l|0)==2?e:e+-48|0)+40>>2]|0)!=(i|0)):0)d=d+((c[((l|0)==3?e:e+48|0)+40>>2]|0)!=(i|0)&1)|0;a=nb[c[k>>2]&63](k,a,8)|0}xw(k,g)}g=Kx(b,g,i)|0}e=Jx(b,i)|0;while(1){if(!e)break;a=c[(c[e+16>>2]|0)+120>>2]|0;if(!(c[a>>2]|0)){c[a>>2]=j;ww(k,e)}e=Kx(b,e,i)|0}a=h+4|0;j=j+1|0}vw(k);return d|0}function cw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[d>>2]|0;k=Sy(b)|0;a:while(1){if(!k)break;j=Jx(b,k)|0;while(1){if(!j)break;g=c[j>>2]&3;f=c[((g|0)==3?j:j+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?j:j+-48|0)+40>>2]|0;i=0;while(1){if((i|0)>=2)break;h=Qv(a)|0;Rv(a,k,f,i);g=bw(a,b)|0;if((g|0)<(e|0)){Lv(h);if(!g){e=0;break a}else e=g}else{Lv(a);a=h}i=i+1|0}j=Kx(b,j,k)|0}k=Ty(b,k)|0}c[d>>2]=e;return a|0}function dw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Kv()|0;e=Ex(a,b)|0;while(1){if(!e)break;f=e+-48|0;Mv(h,0,c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break;f=e+48|0;Mv(h,0,c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Ix(a,e)|0}a:do if((Sv(h)|0)>1){f=d+4|0;a=d;while(1){e=c[a>>2]|0;if(!e){g=13;break a}a=e+4|0;if(!(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32))continue;if(c[(c[(c[(c[c[((e|0)==(c[f>>2]|0)?d:a)>>2]>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break}Mv(d,e,b)}else g=13;while(0);b:do if((g|0)==13){c:do if((Sv(h)|0)>0){e=d;while(1){e=c[e>>2]|0;if(!e)break c;if(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break;e=e+4|0}Mv(d,e,b);break b}while(0);Mv(d,0,b)}while(0);e=h;while(1){e=c[e>>2]|0;if(!e)break;d=(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-33;e=e+4|0}Lv(h);return}function ew(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){g=c[(c[(c[b+16>>2]|0)+112>>2]|0)+16>>2]|0;if(!g)break;h=d+1|0;i=g+16|0;j=c[(c[i>>2]|0)+112>>2]|0;b=j+16|0;f=c[b+12>>2]|0;if(f){if((f|0)>(d|0)){k=11;break}b=c[b+4>>2]|0;f=b;if((b|0)==(e|0))b=j;else{d=j+24|0;if(!((c[j+32>>2]|0)!=0?(c[d>>2]|0)==(e|0):0))e=b;c[d>>2]=f;b=c[(c[i>>2]|0)+112>>2]|0;c[b+32>>2]=c[b+16+12>>2];b=c[(c[i>>2]|0)+112>>2]|0}b=b+16|0}c[b+4>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+16+12>>2]=h;b=g;d=h}if((k|0)==11?(c[j+32>>2]|0)<=(d|0):0){c[j+24>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+32>>2]=h}return}function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[(c[b+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|1;g=Jx(a,b)|0;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==3?g:g+48|0)+40>>2]|0;f=e+16|0;if(!(c[(c[(c[f>>2]|0)+112>>2]|0)+4>>2]&1)){Vx(d,g,1)|0;c[(c[(c[f>>2]|0)+112>>2]|0)+16>>2]=b;fw(a,e,d)}g=Kx(a,g,b)|0}return}function gw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+144|0;j=k+8|0;i=k;e=k+16|0;h=c[46163]|0;c[46163]=h+1;c[i>>2]=h;Y0(e,93230,i)|0;i=vA(b,e,1)|0;Az(i,134401,280,1)|0;h=c[46163]|0;c[46163]=h+1;c[j>>2]=h;Y0(e,93230,j)|0;h=b+24|0;a[j>>0]=a[h>>0]|0;a[j+1>>0]=a[h+1>>0]|0;a[j+2>>0]=a[h+2>>0]|0;a[j+3>>0]=a[h+3>>0]|0;j=Xx(e,j,0)|0;e=Sy(b)|0;while(1){if(!e)break;Xy(i,e,1)|0;h=az(j,ry(e)|0,1)|0;Az(h,134365,304,1)|0;c[(c[(c[e+16>>2]|0)+112>>2]|0)+16>>2]=h;e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;g=c[(c[(c[f+16>>2]|0)+112>>2]|0)+16>>2]|0;h=g+16|0;e=Ex(b,f)|0;while(1){if(!e)break;Vx(i,e,1)|0;m=c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+16>>2]|0;n=Rx(j,g,m,0,1)|0;Az(n,134378,176,1)|0;c[(c[n+16>>2]|0)+116>>2]=e;n=(c[h>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=Gx(b,e)|0}f=Ty(b,f)|0}c[d>>2]=j;l=k;return i|0}function hw(a){a=a|0;var b=0,c=0;c=jw()|0;b=Sy(a)|0;while(1){if(!b)break;ow(c,b);b=Ty(a,b)|0}return c|0}function iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[(c[b+16>>2]|0)+236>>2]|0;p=m<<2;o=vH(p)|0;p=vH(p)|0;i=0;l=Jx(a,b)|0;n=0;f=0;while(1){if(!l)break;e=c[l>>2]&3;g=c[((e|0)==2?l:l+-48|0)+40>>2]|0;if((g|0)==(b|0))g=c[((e|0)==3?l:l+48|0)+40>>2]|0;h=0;k=Jx(a,b)|0;j=i;while(1){if(!k)break;if((k|0)!=(l|0)){i=c[k>>2]&3;e=c[((i|0)==2?k:k+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((i|0)==3?k:k+48|0)+40>>2]|0;i=Rx(a,g,e,0,0)|0;if(i)if(g>>>0<e>>>0){e=j+1|0;h=i+16|0;i=c[(c[h>>2]|0)+116>>2]|0;if(!i)h=1;else{dz(d,i)|0;c[(c[h>>2]|0)+116>>2]=0;h=1}}else{h=1;e=j}else e=j}else e=j;k=Kx(a,k,b)|0;j=e}if(!h){c[p+(n<<2)>>2]=g;e=n+1|0}else{c[o+(f<<2)>>2]=g;e=n;f=f+1|0}i=j;l=Kx(a,l,b)|0;n=e}e=m+-1-i|0;a:do if((e|0)>0){if((e|0)<(n|0))g=0;else{if((e|0)!=(n|0))break;f=c[o>>2]|0;g=f+16|0;e=0;while(1){if((e|0)>=(n|0))break a;m=c[p+(e<<2)>>2]|0;Az(Rx(a,f,m,0,1)|0,134378,176,1)|0;d=(c[g>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=e+1|0}}while(1){if((g|0)>=(n|0)){f=2;break}f=g|1;if((f|0)>=(n|0)){f=2;break}d=c[p+(g<<2)>>2]|0;m=c[p+(f<<2)>>2]|0;Az(Rx(a,d,m,0,1)|0,134378,176,1)|0;d=(c[d+16>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;g=g+2|0;e=e+-1|0}while(1){if((e|0)<=0)break a;m=c[p>>2]|0;n=c[p+(f<<2)>>2]|0;Az(Rx(a,m,n,0,1)|0,134378,176,1)|0;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;n=(c[n+16>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;f=f+1|0;e=e+-1|0}}while(0);D_(p);D_(o);return}function jw(){return Cw(18136,c[4555]|0)|0}function kw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(16)|0;c[d+12>>2]=0;c[d+8>>2]=c[b+8>>2];return d|0}function lw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)<(e|0)?-1:(b|0)>(e|0)&1)|0}function nw(a){a=a|0;yw(a)|0;return}function ow(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d;e=b+16|0;c[f+8>>2]=c[(c[e>>2]|0)+236>>2];a=(nb[c[a>>2]&63](a,f,1)|0)+12|0;c[(c[e>>2]|0)+164>>2]=c[a>>2];c[a>>2]=b;l=d;return}function pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=b+16|0;c[g+8>>2]=c[(c[f>>2]|0)+236>>2];g=nb[c[a>>2]&63](a,g,4)|0;if(!g)qa(93240,93243,107,93253);e=g+12|0;d=c[e>>2]|0;if((d|0)==(b|0)){b=c[(c[f>>2]|0)+164>>2]|0;c[e>>2]=b;if(!b)nb[c[a>>2]&63](a,g,2)|0}else{do{a=(c[d+16>>2]|0)+164|0;d=c[a>>2]|0;e=(d|0)!=0}while(e&(d|0)!=(b|0));if(e)c[a>>2]=c[(c[d+16>>2]|0)+164>>2]}l=h;return}function qw(a){a=a|0;var b=0,d=0,e=0,f=0;d=nb[c[a>>2]&63](a,0,128)|0;if(d){f=d+12|0;b=c[f>>2]|0;e=c[(c[b+16>>2]|0)+164>>2]|0;c[f>>2]=e;if(!e)nb[c[a>>2]&63](a,d,2)|0}else b=0;return b|0}function rw(){return Cw(18172,c[4555]|0)|0}function sw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(12)|0;c[d+8>>2]=c[b+8>>2];return d|0}function tw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function vw(a){a=a|0;yw(a)|0;return}function ww(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function xw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,2)|0;l=d;return}function yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=ob[b&127](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Hw(a,0)|0;f=(b|0)==0;if(f){nb[c[c[a+16>>2]>>2]&63](a,0,64)|0;if((Ew(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;ob[c[e>>2]&127](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;ob[c[e>>2]&127](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)ob[c[a+12>>2]&127](a,a,0,h)|0}else D_(a);b=c[g>>2]|0;if(!b)b=0;else{ob[b&127](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function zw(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Aw(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Aw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Dw(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;vb[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}ob[c[j>>2]&127](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=nb[e&63](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=ob[c[a+12>>2]&127](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}vb[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=b$(b,f)|0;break}else{f=L0(b,f,n)|0;break}else f=ob[o&127](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,e,r);if((c[q>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,r)|0}return e|0}function Cw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=C_(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Kw(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=ob[d&127](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{D_(f);e=ob[c[d>>2]&127](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Kw(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=ob[c[d+12>>2]&127](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){D_(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)ob[e&127](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;nb[f&63](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Ew(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Dw(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Fw(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Fw(a){a=a|0;var b=0;if(!a)return 0;else{b=Fw(c[a+4>>2]|0)|0;return b+1+(Fw(c[a>>2]|0)|0)|0}return 0}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Dw(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;vb[f&127](a,g,E)}if((c[x>>2]|0)<0)ob[c[j>>2]&127](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=nb[c[a>>2]&63](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=b$(e,f)|0;break}else{f=L0(e,f,B)|0;break}else f=ob[C&127](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=nb[c[a>>2]&63](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)vb[e&127](a,g,E);if((c[x>>2]|0)<0){ob[c[a+12>>2]&127](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=nb[h&63](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=ob[c[a+12>>2]&127](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){vb[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=b$(f,h)|0;break}else{h=L0(f,h,B)|0;break}else h=ob[C&127](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,g,E);if((c[x>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Hw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Dw(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Dw(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=25;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=nb[c[c[n+16>>2]>>2]&63](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=b$(k,f)|0;break}else{g=L0(k,f,i)|0;break}else g=ob[j&127](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=nb[c[c[f+16>>2]>>2]&63](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(nb[c[c[g+16>>2]>>2]&63](g,e,4)|0)break;g=c[g+28>>2]|0}e=nb[c[c[h>>2]>>2]&63](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=nb[c[c[f+16>>2]>>2]&63](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=nb[c[c[a+16>>2]>>2]&63](a,b,d)|0;while(0);return e|0}function Jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+32|0;f=nb[c[a>>2]&63](a,0,128)|0;do{if(!f){e=0;break}h=c[g>>2]|0;e=f;f=nb[c[a>>2]&63](a,f,8)|0;e=nb[b&63]((h|0)==0?a:h,e,d)|0}while((e|0)>=0);return e|0}function Kw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Dw(a,0)|0;e=c[n+32>>2]|0;if(e|0?(ob[e&127](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?52:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=Aw(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Mw(0,e,g)|0;else e=nb[f&63](a,e,b)|0;c[h+4>>2]=e}nb[m&63](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?52:n}while(0);return b|0}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=C_(c)|0;else if(a){D_(b);a=0;break}else{a=F_(b,c)|0;break}while(0);return a|0}function Mw(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0<c>>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Nw(a){a=a|0;var b=0;b=c[46164]|0;c[46164]=a;return b|0}function Ow(a){a=a|0;var b=0;b=c[46165]|0;c[46165]=a;return b|0}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Qw(a,b,f)|0;l=e;return d|0}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[46167]|0:(a|0)==2?1:a;c[46167]=h;i=c[46168]|0;c[46168]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[46165]|0)>>>0){a=c[46166]|0;if(!a){a=l3()|0;c[46166]=a;if(!a){a=1;break}}if(!f){o3(a)|0;a=c[46166]|0}r0(a,b,d)|0;a=0}else{if(c[46164]|0){Rw(a,b,d);a=0;break}if(f)a=c[15686]|0;else{i=c[15686]|0;c[e>>2]=(a|0)==1?93267:93273;g1(i,93281,e)|0;a=i}r0(a,b,d)|0;a=0}while(0);l=g;return a|0}function Rw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[46169]|0)==0?(f=C_(c[4564]|0)|0,c[46169]=f,(f|0)==0):0)D1(93286,c[15686]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){kb[c[46164]&63]((a|0)==1?93267:93273)|0;kb[c[46164]&63](93945)|0}while(1){a=q0(c[46169]|0,c[4564]|0,b,d)|0;e=c[4564]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4564]=f;if(!(F_(c[46169]|0,f)|0)){e=9;break}}if((e|0)==7){kb[c[46164]&63](c[46169]|0)|0;break}else if((e|0)==9){D1(93286,c[15686]|0)|0;break}}while(0);return}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Qw(1,a,e)|0;l=d;return}function Tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=C_(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function Uw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=C_(e)|0;F3(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=F_(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function Vw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){Uw(a,d)|0;e=c[f>>2]|0}F3(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function Ww(a,b){a=a|0;b=b|0;return Vw(a,b,W_(b)|0)|0}function Xw(a){a=a|0;if(c[a+12>>2]|0)D_(c[a>>2]|0);return}function Yw(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function Zw(a,b,d){a=a|0;b=b|0;d=d|0;Qz(c[46171]|0,c[b+8>>2]|0)|0;Qz(c[46171]|0,c[b+12>>2]|0)|0;Ny(c[46171]|0,b);return}function _w(a,b){a=a|0;b=b|0;var c=0;c=yz(a,93334,0)|0;if((b|0)!=0&(c|0)==0){$w(a);c=yz(a,93334,0)|0}return c|0}function $w(a){a=a|0;var b=0,c=0,d=0;d=fz(a)|0;jB(d,d,104,0,1)|0;c=Sy(d)|0;while(1){if(!c)break;bx(a,c);b=Ex(d,c)|0;while(1){if(!b)break;cx(a,b);b=Gx(d,b)|0}c=Ty(d,c)|0}return}function ax(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;hx(b);c=yA(b)|0;ex((c|0)==0?b:c,b);return}function bx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function cx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function dx(a){a=a|0;return yz(a,93322,0)|0}function ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=Az(b,93322,16,0)|0;f=fx(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=fz(a)|0;c[e>>2]=fx(a,c[b>>2]&3)|0;a=gx(b)|0;d=d+12|0;c[d>>2]=My(ez(b)|0,((a|0)>4?a:4)<<2)|0;a=nb[c[f>>2]&63](f,0,128)|0;while(1){if(!a)break a;e=ez(b)|0;e=Oz(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=nb[c[f>>2]&63](f,a,8)|0}}while(0);return}function fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=_w(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;Pw(1,93347,d)|0;a=0;break a}}while(0);l=e;return a|0}function gx(a){a=a|0;var b=0;b=fz(ez(a)|0)|0;a=fx(b,c[a>>2]&3)|0;if(!a)a=0;else a=Ew(a)|0;return a|0}function hx(a){a=a|0;var b=0,d=0,e=0,f=0;d=Az(a,93334,20,0)|0;e=d+8|0;c[e>>2]=CA(a,18260,c[4563]|0)|0;f=d+12|0;c[f>>2]=CA(a,18260,c[4563]|0)|0;d=d+16|0;c[d>>2]=CA(a,18260,c[4563]|0)|0;b=yA(a)|0;if(!b){b=c[46170]|0;if(!((b|0)==0|(b|0)==(a|0))){b=_w(b,0)|0;ix(c[b+8>>2]|0,c[e>>2]|0,a,1);ix(c[b+12>>2]|0,c[f>>2]|0,a,2);ix(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=_w(b,0)|0;Hw(c[e>>2]|0,c[a+8>>2]|0)|0;Hw(c[f>>2]|0,c[a+12>>2]|0)|0;Hw(c[d>>2]|0,c[a+16>>2]|0)|0}return}function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=nb[c[b>>2]&63](b,0,128)|0;while(1){if(!g)break;h=jx(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;nb[c[d>>2]&63](d,h,1)|0;g=nb[c[b>>2]&63](b,g,8)|0}return}function jx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=My(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=Oz(b,d)|0;c[h+12>>2]=Oz(b,e)|0;c[h+16>>2]=f;return h|0}function kx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function lx(a,b){a=a|0;b=b|0;var c=0;c=Hw(a,0)|0;b=kx(a,b)|0;Hw(a,c)|0;return b|0}function mx(a,b){a=a|0;b=b|0;a=dx(a)|0;if(!a)a=0;else a=kx(c[a+8>>2]|0,b)|0;return a|0}function nx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[46170]|0;if(!b){a[g>>0]=a[18296]|0;a[g+1>>0]=a[18297]|0;a[g+2>>0]=a[18298]|0;a[g+3>>0]=a[18299]|0;b=Xx(0,g,0)|0;c[46170]=b}}if(!f)b=px(b,d,e)|0;else b=ox(b,d,e,f)|0;l=h;return b|0}function ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=fz(a)|0;_w(a,1)|0;g=fx(a,b)|0;f=lx(g,d)|0;a:do if(!f){f=kx(g,d)|0;if(f|0){f=jx(a,d,e,c[f+16>>2]|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;h=16;break}g=fx(i,b)|0;f=jx(a,d,e,Ew(g)|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;switch(b|0){case 0:{jB(i,i,57,f,1)|0;h=16;break a}case 1:{d=Sy(i)|0;while(1){if(!d){h=16;break a}qx(a,d,f);d=Ty(i,d)|0}}case 2:case 3:{g=Sy(i)|0;while(1){if(!g){h=16;break a}d=Ex(i,g)|0;while(1){if(!d)break;qx(a,d,f);d=Gx(i,d)|0}g=Ty(i,g)|0}}default:break a}}else{h=f+12|0;Qz(a,c[h>>2]|0)|0;c[h>>2]=Oz(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)rx(a,f,e)|0;iz(a,a,f);return f|0}function px(a,b,c){a=a|0;b=b|0;c=c|0;a=fx(a,b)|0;if(!a)a=0;else a=kx(a,c)|0;return a|0}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=dx(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=ob[c[(c[g>>2]|0)+8>>2]&127](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=Oz(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function rx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ez(a)|0;g=(dx(a)|0)+12|0;i=b+16|0;Qz(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=Oz(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(_w(h,0)|0)+16>>2]|0;f=b+8|0;g=lx(e,c[f>>2]|0)|0;if(!g){i=jx(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;nb[c[e>>2]&63](e,i,1)|0;break}else{i=g+12|0;Qz(h,c[i>>2]|0)|0;c[i>>2]=Oz(h,d)|0;break}}while(0);iz(h,a,b);return 0}function sx(a,b,d){a=a|0;b=b|0;d=d|0;a=fx(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=nb[b&63](a,0,128)|0;break}else{a=nb[b&63](a,d,8)|0;break}}else a=0;while(0);return a|0}function tx(a){a=a|0;var b=0;c[46171]=a;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,c[b>>2]|0)|0}b=_w(a,0)|0;if(b)if(((EA(a,c[b+8>>2]|0)|0)==0?(EA(a,c[b+12>>2]|0)|0)==0:0)?(EA(a,c[b+16>>2]|0)|0)==0:0){Cz(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function ux(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ez(a)|0;e=gx(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;Qz(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Ny(f,d);return}function vx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function wx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function xx(a,b){a=a|0;b=b|0;b=mx(a,b)|0;if(!b)b=0;else{a=c[(dx(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function yx(a,b){a=a|0;b=b|0;a=c[(dx(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function zx(a,b,c){a=a|0;b=b|0;c=c|0;b=mx(a,b)|0;if(!b)b=-1;else{rx(a,b,c)|0;b=0}return b|0}function Ax(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ez(a)|0;f=nx(f,c[a>>2]&3,b,0)|0;if(!f){f=ez(a)|0;f=nx(f,c[a>>2]&3,b,e)|0}rx(a,f,d)|0;return 0}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ez(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=sx(g,f&3,e)|0;if(!e)break a;d=mx(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=yx(a,e)|0;rx(b,d,f)|0;if(Rz(f)|0)Sz(yx(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Dx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0<f>>>0|(a|0)==(f|0)&g>>>0<e>>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0<i>>>0|(e|0)==(i|0)&a>>>0<h>>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Ex(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,d,4)|0}l=e;return a|0}function Gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Hx(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Jx(a,b){a=a|0;b=b|0;var c=0;c=Ex(a,b)|0;if(!c)c=Hx(a,b)|0;return c|0}function Kx(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Gx(a,b)|0;if(!b){b=0;do{if(!b)b=Hx(a,d)|0;else b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Lx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((gy(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(Px(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Mx(a,b){a=a|0;b=b|0;Ox(a,b);return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;Xy(b,d,1)|0;Xy(b,e,1)|0;h=My(b,96)|0;i=h+48|0;l=_x(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Ox(b,h);if(a[b+24>>0]&64){Az(h,93322,16,0)|0;cx(b,h)}gz(b,h);return h|0}function Ox(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(Px(a,e,f,d)|0)break;j=Fx(a,e)|0;m=a+44|0;Qx(c[m>>2]|0,j+32|0,g);k=a+48|0;Qx(c[k>>2]|0,j+24|0,g);j=Fx(a,f)|0;Qx(c[m>>2]|0,j+28|0,h);Qx(c[k>>2]|0,j+20|0,h);a=yA(a)|0}l=i;return}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Fx(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Dw(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,f,4)|0;c[g>>2]=zw(c[e>>2]|0)|0}else a=0;l=h;return a|0}function Qx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,1)|0;c[b>>2]=zw(a)|0;return}function Rx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(oy(a,2,e,k,0)|0))if(!e){if(f|0?(gy(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(a,b,d,i)|0;b:do if(!g){if(fy(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=Px(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,b,d,i)|0;if(!g){if(!(fy(a)|0))break;g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,d,b,i)|0;if(!g)break}Mx(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Lx(a,b,d)|0)!=0?(oy(a,2,e,k,1)|0)!=0:0){g=k;g=Nx(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;sy(a,2,g)}else g=0;l=n;return g|0}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Fx(a,c[d+40>>2]|0)|0;f=a+44|0;Tx(c[f>>2]|0,h+32|0,g);e=a+48|0;Tx(c[e>>2]|0,h+24|0,g);b=Fx(a,b)|0;Tx(c[f>>2]|0,b+28|0,d);Tx(c[e>>2]|0,b+20|0,d);return}function Tx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,2)|0;c[b>>2]=zw(a)|0;return}function Ux(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(Px(b,h,g,f)|0){if((fz(b)|0)==(b|0)){if(a[b+24>>0]&64)wx(d);kz(b,d);Iz(d);h=d+8|0;qy(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(jB(b,d,58,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=Xy(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=Xy(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=Px(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Ox(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function Wx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=t3(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=Yx(e)|0;f=lb[c[(c[j>>2]|0)+4>>2]&127](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=lb[c[c[j+4>>2]>>2]&127](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(oy(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=Zx(f)|0;sy(k,0,f);l=h;return k|0}function Yx(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?18632:e}else e=18632;g=kb[c[e>>2]&63](b)|0;f=lb[c[e+4>>2]&127](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?18508:g;b=c[b+8>>2]|0;b=(b|0)==0?18608:b}else{c[f+4>>2]=18508;b=18608}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function Zx(b){b=b|0;var d=0,e=0;c[b+36>>2]=CA(b,18688,c[4563]|0)|0;c[b+40>>2]=CA(b,18652,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+44>>2]=CA(b,d?18300:18336,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+48>>2]=CA(b,d?18372:18408,c[4563]|0)|0;c[b+52>>2]=CA(b,18444,c[4563]|0)|0;d=yA(b)|0;if(!((d|0)!=0?(e=_x(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,nb[c[e>>2]&63](e,b,1)|0,!(a[d+24>>0]&64)):0))ax(b);gz(b,b);return b|0}function _x(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function $x(b){b=b|0;var d=0,e=0,f=0,g=0;f=yA(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){kz(b,b);g=b+8|0;qy(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;tb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=wA(b)|0;while(1){if(!d)break;e=xA(d)|0;$x(d)|0;d=e}d=Sy(b)|0;while(1){if(!d)break;e=Ty(b,d)|0;cz(b,d)|0;d=e}By(b);kz(b,b);if(((((EA(b,c[b+40>>2]|0)|0)==0?(EA(b,c[b+36>>2]|0)|0)==0:0)?(EA(b,c[b+48>>2]|0)|0)==0:0)?(EA(b,c[b+44>>2]|0)|0)==0:0)?(EA(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?tx(b)|0:0){d=-1;break}Iz(b);e=b+8|0;qy(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){zA(f,b)|0;Ny(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;nz(b,c[f>>2]|0)|0}tb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Jz(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;ub[c[f>>2]&63](g,b);ub[c[f>>2]&63](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function ay(a){a=a|0;return Ew(c[a+40>>2]|0)|0}function by(a){a=a|0;var b=0,c=0,d=0;b=0;c=Sy(a)|0;while(1){if(!c)break;d=(cy(a,c,0,1)|0)+b|0;b=d;c=Ty(a,c)|0}return b|0}function cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Fx(a,b)|0;if(f){if(!e)b=0;else b=dy(c[a+44>>2]|0,f+32|0)|0;if(d)b=(dy(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function dy(a,b){a=a|0;b=b|0;var d=0;Dw(a,c[b>>2]|0)|0;d=Ew(a)|0;c[b>>2]=zw(a)|0;return d|0}function ey(b){b=b|0;return a[b+24>>0]&1|0}function fy(a){a=a|0;return (ey(a)|0)==0|0}function gy(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function hy(a,b){a=a|0;b=b|0;return a|0}function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1392;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=s3(d|0,f|0,2,0)|0;e=1392;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Lz(a,d)|0;else a=Oz(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)Qz(a,c)|0;return}function ly(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function my(a){a=a|0;return}function ny(a,b,c){a=a|0;b=b|0;c=c|0;return}function oy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=ty(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;uy(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return ob[c[(c[a+4>>2]|0)+8>>2]&127](c[a+16>>2]|0,b,d,e)|0}function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;zy(a,b,d,e)|0;a=c[a+64>>2]|0;xb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function ry(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ez(a)|0;f=a+8|0;b=f;b=xy(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=ob[d&127](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;Y0(191693,93374,g)|0;b=191693}}while(0);l=h;return b|0}function sy(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;vb[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Lz(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=nb[c[b>>2]&63](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=My(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=Oz(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=CA(a,18536,c[4563]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=CA(a,18572,c[4563]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}nb[c[f>>2]&63](f,h,1)|0;nb[c[b>>2]&63](b,h,1)|0;return}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0)<<31>>31)|0}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=yy(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function yy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=nb[c[a>>2]&63](a,f,4)|0}l=g;return a|0}function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=yy(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;nb[c[d>>2]&63](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;nb[c[e>>2]&63](e,b,2)|0;Qz(a,c[b+24>>2]|0)|0;Ny(a,b);b=1}return b|0}function Ay(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[46171]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=nb[c[e>>2]&63](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;zy(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function By(a){a=a|0;c[46171]=a;a=a+64|0;Cy((c[a>>2]|0)+56|0);Cy((c[a>>2]|0)+68|0);return}function Cy(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){yw(e)|0;c[d>>2]=0}b=b+1|0}return}function Dy(a,b,c){a=a|0;b=b|0;c=c|0;if(!(O0(b,c,a)|0))a=0;else a=W_(b)|0;return a|0}function Ey(a,b){a=a|0;b=b|0;return D1(b,a)|0}function Fy(a){a=a|0;return w1(a)|0}function Gy(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4656]=c[4653];c[4657]=c[4654];c[e>>2]=a;c[e+4>>2]=W_(a)|0;c[e+8>>2]=0;c[d>>2]=18632;c[d+4>>2]=18508;c[d+8>>2]=18620;a=TB(e,d)|0;Uz(0);l=b;return a|0}function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Iy(a){a=a|0;return 0}function Jy(a,b){a=a|0;b=b|0;a=C_(b)|0;H3(a|0,0,b|0)|0;return a|0}function Ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=F_(b,d)|0;if(d>>>0>c>>>0)H3(a+c|0,0,d-c|0)|0;return a|0}function Ly(a,b){a=a|0;b=b|0;D_(b);return}function My(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[(c[a>>2]|0)+4>>2]&127](c[a+12>>2]|0,b)|0;if(!a)Pw(1,93380,d)|0;l=d;return a|0}function Ny(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;ub[c[(c[a>>2]|0)+12>>2]&63](c[a+12>>2]|0,b)}return}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function Py(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Ny(c[a+24>>2]|0,b);return}function Qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0<e>>>0?-1:b>>>0>e>>>0&1)|0}function Ry(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=183176;c[e>>2]=b;c[e+4>>2]=d;c[46176]=183168;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,184688,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Sy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Ty(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Uy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Vy(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Wy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ry(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=fz(a)|0;if((e|0)!=(a|0)?(f=Ry(e,b,c)|0,f|0):0){Xy(a,f,1)|0;e=f;break}if(!(py(a,1,b,c)|0))e=0;else{e=_x(a,1)|0;e=Yy(a,b,c,e,z)|0;Zy(a,e);_y(a,e)}}while(0);return e|0}function Xy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=fz(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=yA(a)|0;if(!e)e=0;else{d=Xy(e,b,d)|0;$y(a,d);return d|0}}}else e=0;return e|0}function Yy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=My(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=fz(b)|0;if(a[(fz(b)|0)+24>>0]&64)Az(g,93322,16,0)|0;return g|0}function Zy(a,b){a=a|0;b=b|0;do{$y(a,b);a=yA(a)|0}while((a|0)!=0);return}function _y(b,c){b=b|0;c=c|0;if(a[(fz(b)|0)+24>>0]&64)bx(b,c);gz(b,c);return}function $y(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Ew(c[e>>2]|0)|0;if((fz(a)|0)==(a|0))d=b+28|0;else d=My(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;nb[c[e>>2]&63](e,d,1)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=fz(a)|0;if(oy(a,1,b,g,0)|0){e=g;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=Ry(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=Xy(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(oy(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=_x(a,1)|0;e=Yy(a,h,i,e,z)|0;Zy(a,e);_y(a,e);sy(a,1,e)}else e=0;l=j;return e|0}function bz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[46185]=b;d=Jx(a,b)|0;while(1){if(!d)break;e=Kx(a,d,b)|0;Sx(a,d,0);d=e}e=c[a+40>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;return}function cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(Ry(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((fz(b)|0)==(b|0)){e=Jx(b,d)|0;while(1){if(!e)break;g=Kx(b,e,d)|0;Ux(b,e)|0;e=g}if(a[b+24>>0]&64)vx(d);kz(b,d);Iz(d);g=f;qy(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(jB(b,d,59,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function dz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((yA(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{Pw(1,93406,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=cz(a,b)|0;break a}case 2:case 3:{f=Ux(a,b)|0;break a}case 0:{f=$x(b)|0;break a}default:{}}while(0);l=h;return f|0}function ez(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function fz(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function gz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,100,0);else hz(b,d,c[e+48>>2]|0);return}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){hz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function iz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))qz(b,d,101,e);else jz(b,d,e,c[f+48>>2]|0);return}function jz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){jz(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)xb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function kz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,102,0);else lz(b,d,c[e+48>>2]|0);return}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){lz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Ny(a,d);d=0}while(0);return d|0}function oz(a,b){a=a|0;b=b|0;var d=0;d=fz(a)|0;a:do if((d|0)==(fz(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=yA(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(Wy(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(Vx(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function pz(a){a=a|0;return c[a>>2]&3|0}function qz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=Az(a,93430,44,0)|0;switch(c|0){case 100:{e=rz(f,b,100)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}case 101:{if(((sz(rz(f,b,100)|0,b)|0)==0?(sz(rz(f,b,102)|0,b)|0)==0:0)?(e=rz(f,b,101)|0,(sz(e,b)|0)==0):0)tz(e,a,b,d)|0;break}case 102:{uz(rz(f,b,100)|0,b);uz(rz(f,b,101)|0,b);e=rz(f,b,102)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}default:Pw(1,93442,g)|0}l=h;return}function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){Pw(1,93476,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ez(b)|0;a=CA(a,18724,c[4563]|0)|0;c[d>>2]=a}l=g;return a|0}function sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=vz(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=My(ez(d)|0,32)|0;c[f+20>>2]=d;g=vz(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=My(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}nb[c[a>>2]&63](a,f,1)|0;return f|0}function uz(a,b){a=a|0;b=b|0;b=sz(a,b)|0;if(b|0)nb[c[a>>2]&63](a,b,2)|0;return}function vz(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function wz(a,b,d){a=a|0;b=b|0;d=d|0;xz(b);Ny(c[b+16>>2]|0,b);return}function xz(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Ny(c[b>>2]|0,a);a=d}return}function yz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(b$(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}zz(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else Pw(1,93501,i)|0}while(0);l=k;return f|0}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function Az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ez(a)|0;f=yz(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=My(h,d)|0;c[d>>2]=Oz(h,b)|0;switch(c[a>>2]&3){case 0:{Bz(a,d);g=d;break a}case 1:{Bz(a,d);g=d;break a}case 2:case 3:{Bz(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)yz(a,b,1)|0;return g|0}function Bz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))zz(a,b,0);return}function Cz(a,b){a=a|0;b=b|0;var d=0,e=0;e=ez(a)|0;d=yz(a,b,0)|0;if(!d)b=-1;else{Dz(a,d);if(!(c[a>>2]&3)){Ez(e,a,d);b=d}else{jB(fz(e)|0,a,60,d,0)|0;b=d}Qz(e,c[d>>2]|0)|0;Ny(e,b);b=0}return b|0}function Dz(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Ez(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;zz(b,(a|0)==(d|0)?0:a,0)}return}function Fz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{Az(a,c,g,e)|0;if(!f){b=wA(a)|0;while(1){if(!b)break a;Fz(b,0,c,d,e);b=xA(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break a;b:do if(d)Az(b,c,g,e)|0;else{f=Ex(a,b)|0;while(1){if(!f)break b;Az(f,c,g,e)|0;f=Gx(a,f)|0}}while(0);b=Ty(a,b)|0}}default:{}}while(0);return}function Gz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{jB(a,a,61,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=Sy(a)|0;while(1){if(!d)break a;b:do if(e)Cz(d,c)|0;else{b=Ex(a,d)|0;while(1){if(!b)break b;Cz(b,c)|0;b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}}default:{}}while(0);return}function Hz(a,b,c){a=a|0;b=b|0;c=c|0;Cz(b,c)|0;return}function Iz(a){a=a|0;var b=0,d=0,e=0;d=ez(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;Qz(d,c[e>>2]|0)|0;Ny(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Jz(a){a=a|0;return EA(a,Kz(a)|0)|0}function Kz(a){a=a|0;var b=0,d=0;if(!a)d=184760;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=CA(a,18760,c[4563]|0)|0;c[d>>2]=b;a=183232;c[a>>2]=-2147483648;c[a+4>>2]=0;a=183240;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Lz(a,b){a=a|0;b=b|0;return Mz(Kz(a)|0,b)|0}function Mz(a,b){a=a|0;b=b|0;a=Nz(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Nz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function Oz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{e=d+8|0;b=e;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Pz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;g=183232;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{g=d+8|0;f=g;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Kz(a)|0,e=Nz(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=s3(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=183240,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){DA(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function Rz(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=183232;a=c[b>>2]&c[a>>2]}return a|0}function Sz(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=183232;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function Tz(a){a=a|0;c[4699]=a;return}function Uz(a){a=a|0;c[46195]=a;c[4699]=1;return}function Vz(a,b){a=a|0;b=b|0;c[46196]=a;c[46197]=b;c[46198]=0;return}function Wz(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[46199]|0)){c[46199]=1;if(!(c[46200]|0))c[46200]=1;if(!(c[46191]|0))c[46191]=c[15621];if(!(c[46192]|0))c[46192]=c[15653];k=c[46201]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){Xz();k=Yz(c[46191]|0,16384)|0;c[c[46201]>>2]=k}Zz()}a:while(1){j=c[46202]|0;a[j>>0]=a[191725]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;f=j;b:while(1){h=f;while(1){f=c[18800+(d[h>>0]<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=h}c:while(1){g=f&255;do{f=g+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(f<<1)>>1]|0))break c;k=b[64684+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[19824+(g<<2)>>2]|0}e=b[64894+(f<<1)>>1]|0;f=h+1|0;if((b[63938+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[63752+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[63752+(c[46203]<<1)>>1]|0;f=c[46204]|0}else e=e<<16>>16;c[46193]=j;i=f;c[46194]=i-k;a[191725]=a[f>>0]|0;a[f>>0]=0;c[46202]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[46193]|0;a[f>>0]=a[191725]|0;e=c[46201]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[46206]=n;c[g>>2]=c[46191];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[46206]|0;if((c[46202]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(gA()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[46202]=c[46193];e=(((c[46200]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[191725]|0;f=c[46204]|0;e=c[46203]|0}if((m|0)==128){m=0;g=i-h|0;h=c[46193]|0;f=h+(g+-1)|0;c[46202]=f;e=eA()|0;i=fA(e)|0;j=c[46193]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[46201]>>2]|0)+4>>2]|0)+(c[46206]|0)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[46202]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[46193]|0)+(i-h+-1)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}switch(m|0){case 29:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 32:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=3;continue a}case 35:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;continue a}case 42:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;_z();continue a}case 47:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=5;aA();continue a}case 89:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(95669);continue a}case 92:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(93534);continue a}case 95:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 98:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 101:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=7;c[46205]=1;aA();continue a}case 104:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;n=(c[46205]|0)+-1|0;c[46205]=n;if(!n){m=108;break a}cA(c[46193]|0);continue a}case 109:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46205]=(c[46205]|0)+1;cA(e);continue a}case 112:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);c[4699]=(c[4699]|0)+1;continue a}case 115:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 121:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;E1(e,f,1,c[46192]|0)|0;continue a}}}switch(m|0){case 27:{e=c[46194]|0;if(!e)l=-1;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[46194]|0;if(!e)l=259;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[46194]|0;if(!e)l=260;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=258;l=258}else l=258;break}case 61:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=261;l=261}else l=261;break}case 65:{e=c[46194]|0;if(!e)l=263;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[46194]|0;if(!e)l=262;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==261?264:45;break}case 72:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==258?264:45;break}case 75:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46221]=Oz(c[46171]|0,e)|0;l=267;break}case 78:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if($z()|0){m=(c[46194]|0)+-1|0;a[f>>0]=a[191725]|0;n=j+m|0;c[46202]=n;c[46193]=j;c[46194]=m;a[191725]=a[n>>0]|0;a[n>>0]=0;c[46202]=n}c[46221]=Oz(c[46171]|0,c[46193]|0)|0;l=267;break}case 86:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;bA();l=268;break}case 108:{c[46200]=1;dA();l=268;break}case 118:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{hA(93537);break}}return l|0}function Xz(){var a=0,b=0,d=0;b=c[46201]|0;do if(!b){a=oA(4)|0;c[46201]=a;if(!a)hA(93895);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[46212]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=iA(b,a<<2)|0;c[46201]=b;if(!b)hA(93895);else{d=b+(c[46212]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[46212]=a;return}function Yz(a,b){a=a|0;b=b|0;var d=0;d=oA(48)|0;if(!d)hA(93850);c[d+12>>2]=b;b=oA(b+2|0)|0;c[d+4>>2]=b;if(!b)hA(93850);else{c[d+20>>2]=1;kA(d,a);return d|0}return 0}function Zz(){var b=0,d=0;d=c[46201]|0;b=c[d>>2]|0;c[46206]=c[b+16>>2];b=c[b+8>>2]|0;c[46202]=b;c[46193]=b;c[46191]=c[c[d>>2]>>2];a[191725]=a[b>>0]|0;return}function _z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[46193]|0;b=h+1|0;i=(z$(b,93834,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=N1(b,93839,f)|0;if((f|0)>0?(c[4699]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;nA(d,b-d|0)}}l=g;return}function $z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[46193]|0)+((c[46194]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(mA()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[46195]|0;Tw(h,1024,b);Ww(h,93745)|0;Ww(h,c[46193]|0)|0;c[f>>2]=c[4699];Y0(d,93789,f)|0;Ww(h,d)|0;Ww(h,(k|0)==0?93739:k)|0;Ww(h,93806)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;Pw(0,93831,i)|0;Xw(h);b=1}l=j;return b|0}function aA(){var b=0;b=c[46207]|0;if(!b){b=C_(1024)|0;c[46207]=b;c[46209]=b+1024}c[46208]=b;a[b>>0]=0;return}function bA(){c[46221]=Oz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function cA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[46208]|0;d=c[46207]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[46208]=e;f=c[46209]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0<f>>>0);c[46208]=e;f=d;i=g-f<<1;d=F_(d,i)|0;c[46207]=d;c[46209]=d+i;e=d+(e-f)|0;f=3}c[46208]=e;return}function dA(){c[46221]=Pz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function eA(){var d=0,e=0,f=0,g=0,h=0;h=c[46202]|0;g=c[46193]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[18800+((d&255)<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=g}a:while(1){f=d&255;do{d=f+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(d<<1)>>1]|0))break a;d=b[64684+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[19824+(f<<2)>>2]|0}g=g+1|0;e=b[64894+(d<<1)>>1]|0}return e|0}function fA(a){a=a|0;var d=0;if(b[63752+(a<<1)>>1]|0){d=c[46202]|0;c[46203]=a;c[46204]=d}while(1){d=(b[63938+(a<<1)>>1]|0)+1|0;if((a|0)==(b[64148+(d<<1)>>1]|0))break;a=b[64684+(a<<1)>>1]|0}d=b[64894+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function gA(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[46201]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[46193]|0;l=c[46202]|0;k=l;if(l>>>0>(i+((c[46206]|0)+1)|0)>>>0)hA(93592);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[46206]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=iA(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[46202]=j;f=c[c[46201]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=nb[c[c[(c[46196]|0)+8>>2]>>2]&63](c[46197]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[46201]>>2]|0;c[46206]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}hA(93648)}while(0);do if((m|0)==17)if(!l){jA(c[46191]|0);b=1;d=c[46206]|0;e=c[c[46201]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=iA(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[46201]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)hA(93692);else{n=c[46206]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[46206]=n;a[o+n>>0]=0;o=c[46201]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[46206]|0)+1)>>0]=0;c[46193]=c[(c[o>>2]|0)+4>>2]}return b|0}function hA(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[15686]|0;c[b>>2]=a;g1(d,93588,b)|0;Sa(2)}function iA(a,b){a=a|0;b=b|0;return F_(a,b)|0}function jA(a){a=a|0;var b=0,d=0,e=0;d=c[46201]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{Xz();b=Yz(c[46191]|0,16384)|0;d=c[46201]|0;c[d>>2]=b;if(!d)b=0;else e=4}kA(b,a);Zz();return}function kA(a,b){a=a|0;b=b|0;var d=0;d=c[(O_()|0)>>2]|0;lA(a);c[a>>2]=b;c[a+40>>2]=1;b=c[46201]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(O_()|0)>>2]=d;return}function lA(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[46201]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))Zz()}return}function mA(){var b=0,d=0;d=c[46193]|0;b=(c[46194]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function nA(a,b){a=a|0;b=b|0;var d=0;d=c[46210]|0;if((d|0)<(b|0)){if(!d)d=C_(b+1|0)|0;else d=F_(c[46211]|0,b+1|0)|0;c[46211]=d;c[46210]=b}else d=c[46211]|0;b0(d,a)|0;c[46195]=c[46211];return}function oA(a){a=a|0;return C_(a)|0}function pA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;Tw(j,1024,m+1080|0);e=c[46195]|0;if(e|0){Ww(j,e)|0;Ww(j,93945)|0}Ww(j,b)|0;c[f>>2]=c[4699];Y0(d,93948,f)|0;Ww(j,d)|0;a:do if(!(a[c[46193]>>0]|0))switch(((c[46200]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;Y0(d,93968,g)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94030)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 3:{c[h>>2]=16384;Y0(d,94049,h)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94117)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 1:{c[i>>2]=16384;Y0(d,94136,i)|0;Ww(j,d)|0;break a}default:break a}else{Ww(j,93960)|0;Ww(j,c[46193]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){Uw(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;Pw(1,93831,k)|0;Xw(j);l=m;return}function qA(){rA(c[46193]|0);return}function rA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[46202]|0;a[j>>0]=a[191725]|0;i=c[46201]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[46206]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[46206]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)hA(94195);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[46193]=l;a[191725]=a[b>>0]|0;c[46202]=b;return}function sA(){var a=0;a=c[46201]|0;if(!a)a=0;else a=c[a>>2]|0;lA(a);return}function tA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;FA(a,c[g>>2]|0,18444);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function uA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=tA(b,d,e)|0;if(!f){f=My(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;Zx(f)|0}return f|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(oy(a,0,b,f,0)|0)!=0:0)?(e=f,e=tA(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(oy(a,0,b,f,1)|0)!=0:0){e=f;e=uA(a,c[e>>2]|0,c[e+4>>2]|0)|0;sy(a,0,e)}else e=0;l=g;return e|0}function wA(a){a=a|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,0,128)|0}function xA(a){a=a|0;var b=0;b=yA(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=nb[c[b>>2]&63](b,a,8)|0}return a|0}function yA(a){a=a|0;return c[a+56>>2]|0}function zA(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,b,2)|0}function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[46213]|0;e=(b|0)!=0;do if(!a)if(e){D_(b);a=0;break}else{a=C_(d)|0;break}else if(e){Ny(a,b);a=0;break}else{a=My(a,d)|0;break}while(0);return a|0}function BA(a,b,d){a=a|0;b=b|0;d=d|0;a=c[46213]|0;if(!a)D_(b);else Ny(a,b);return}function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=7;c[46213]=a;d=Cw(b,d)|0;c[e>>2]=f;c[46213]=0;return d|0}function DA(a,b,d){a=a|0;b=b|0;d=d|0;c[46213]=a;return nb[c[b>>2]&63](b,d,2)|0}function EA(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Kw(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=7;c[46213]=a;if(!(yw(b)|0)){c[d>>2]=e;c[46213]=0;a=0}else a=1;return a|0}function FA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Kw(b,0,0)|0)!=(c|0):0)Kw(b,c,0)|0;return}function GA(a,b){a=a|0;b=b|0;if(!(Rz(a)|0))b=IA(a,b)|0;else HA(a,b)|0;return b|0}function HA(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function IA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(M$(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[5005]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(M$(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((M$(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=20024;while(1){f=c[e>>2]|0;if(!f)break a;if(!(O$(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=94227;while(0);return b|0}function JA(a){a=a|0;return GA(a,KA(a)|0)|0}function KA(a){a=a|0;var b=0;b=((W_(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[46215]|0;if(b>>>0>(c[46214]|0)>>>0){if(!a)a=C_(b)|0;else a=F_(a,b)|0;c[46215]=a;c[46214]=b}return a|0}function LA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if((MA(a)|0)==0?Xy(a,b,0)|0:0){a=1;break}a=xA(a)|0}return a|0}function MA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=ry(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=dx(b)|0;b:do if(d|0?(f=dx(yA(b)|0)|0,f|0):0){h=Ew(c[(dx(fz(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?b$(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=_w(b,0)|0;if(d)if((Ew(c[d+8>>2]|0)|0)>0)d=0;else return (Ew(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function NA(b,d){b=b|0;d=d|0;var e=0,f=0;c[46216]=0;e=xx(b,94237)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=i1(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[5005]=f;OA(b,1);if(((PA(b,d,1)|0)!=-1?(QA(b,d)|0)!=-1:0)?(RA(b,d)|0)!=-1:0){c[5005]=128;b=kb[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&63](d)|0}else b=-1;return b|0}function OA(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;OA(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function PA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(yA(b)|0)!=0:0){i=0;g=191979;k=106488}else{k=(a[b+24>>0]&1)==0?191979:94281;g=(gy(b)|0)==0;c[46217]=nx(b,2,108373,0)|0;c[46218]=nx(b,2,108382,0)|0;i=1;g=g?191979:94284}f=ry(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=99578}else{h=0;j=191979;f=191979}do if((SA(b,d)|0)!=-1?(TA(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((TA(b,d,k)|0)==-1){f=-1;break}if((TA(b,d,99571)|0)==-1){f=-1;break}}if(!g?(cB(b,d,f)|0)==-1:0){f=-1;break}if(((TA(b,d,j)|0)!=-1?(TA(b,d,94292)|0)!=-1:0)?(c[46216]=(c[46216]|0)+1,(hB(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function QA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((UA(a,b)|0)==-1)d=-1;else{k=_w(fz(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=Sy(a)|0;while(1){if(!h){d=0;break a}if(VA(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((WA(h,b,d)|0)==-1){d=-1;break a}}g=Ex(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(VA(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((WA(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(XA(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((YA(g,b,e)|0)==-1){d=-1;break a}}g=Gx(a,g)|0}h=Ty(a,h)|0}}while(0);return d|0}function RA(a,b){a=a|0;b=b|0;c[46216]=(c[46216]|0)+-1;if((SA(a,b)|0)==-1)a=-1;else a=((TA(a,b,107982)|0)==-1)<<31>>31;return a|0}function SA(a,b){a=a|0;b=b|0;var d=0;d=c[46216]|0;while(1){if((d|0)<=0){d=0;break}if((TA(a,b,150515)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function TA(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&127](b,d)|0}function UA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if(!(MA(a)|0)){if((PA(a,b,0)|0)==-1){a=-1;break}if((QA(a,b)|0)==-1){a=-1;break}if((RA(a,b)|0)==-1){a=-1;break}}else UA(a,b)|0;a=xA(a)|0}return a|0}function VA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((LA(a,b)|0)==0?(eB(a,b,c,d)|0)!=0:0)if((fB(a,b)|0)==0?(gB(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function WA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ez(a)|0;do if((SA(d,b)|0)!=-1?(ZA(a,b)|0)!=-1:0){if(($A(a)|0)==0?(aB(a,b,c)|0)==-1:0){a=-1;break}a=TA(d,b,94248)|0}else a=-1;while(0);return a|0}function XA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=1;break}if((MA(a)|0)==0?Vx(a,b,0)|0:0){a=0;break}a=xA(a)|0}return a|0}function YA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ez(g)|0;do if((((((SA(f,b)|0)!=-1?(ZA(g,b)|0)!=-1:0)?(_A(a,b,c[46217]|0)|0)!=-1:0)?(g=(ey(ez(g)|0)|0)!=0,(TA(f,b,g?97053:97058)|0)!=-1):0)?(ZA(e,b)|0)!=-1:0)?(_A(a,b,c[46218]|0)|0)!=-1:0){if(!($A(a)|0)){if((aB(a,b,d)|0)==-1){a=-1;break}}else if((bB(a,b,1)|0)==-1){a=-1;break}a=TA(f,b,94248)|0}else a=-1;while(0);return a|0}function ZA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=ry(a)|0;f=ez(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;Y0(d,94268,g)|0;if((TA(f,b,d)|0)==-1)a=-1;else h=4}else if((cB(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function _A(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ez(b)|0,f=yx(b,d)|0,(a[f>>0]|0)!=0):0)if((TA(e,c,104958)|0)==-1)b=-1;else{do if(Rz(f)|0){if((cB(e,c,f)|0)==-1){b=-1;break a}}else{b=A$(f,58)|0;if(!b)if((dB(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((dB(e,c,f,0)|0)==-1){b=-1;break a}if((TA(e,c,104958)|0)==-1){b=-1;break a}if((dB(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function $A(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function aB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(bB(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=dx(a)|0;j=ez(a)|0;c:do if(f){i=f+12|0;h=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[46217]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[46218]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((TA(j,b,94263)|0)==-1){e=-1;break b}if((SA(j,b)|0)==-1){e=-1;break b}}else{if((SA(j,b)|0)==-1){e=-1;break b}if((TA(j,b,94260)|0)==-1){e=-1;break b}c[46216]=(c[46216]|0)+1}if((cB(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((TA(j,b,94266)|0)==-1){e=-1;break b}if((cB(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=nb[c[d>>2]&63](d,h,8)|0}}while(0);if((e|0)>0){if((TA(j,b,94258)|0)==-1){e=-1;break}c[46216]=(c[46216]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function bB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ry(b)|0;b=ez(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((TA(b,c,94251)|0)!=-1?(cB(b,c,e)|0)!=-1:0)if((d|0)!=0?(TA(b,c,94258)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function cB(a,b,c){a=a|0;b=b|0;c=c|0;return dB(a,b,c,1)|0}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=IA(c,KA(c)|0)|0;else c=JA(c)|0;return TA(a,b,c)|0}function eB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0<d>>>0:0))b=0;else{b=Hx(a,b)|0;while(1){if(!b){b=1;break a}if(0<e>>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0<d>>>0:0)){b=0;break a}b=Ix(a,b)|0}}while(0);return b|0}function fB(a,b){a=a|0;b=b|0;if(!(Hx(a,b)|0))a=(Ex(a,b)|0)==0&1;else a=0;return a|0}function gB(a){a=a|0;var b=0,d=0,e=0;a=dx(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}}while(0);return a|0}function hB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=_w(a,0)|0;if(e)if(((iB(a,b,108412,c[e+16>>2]|0,d)|0)!=-1?(iB(a,b,108399,c[e+8>>2]|0,d)|0)!=-1:0)?(iB(a,b,108368,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Hw(f,0)|0;k=(l|0)==0;j=nb[c[f>>2]&63](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=nb[c[l>>2]&63](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((TA(b,d,94263)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}else{if((SA(b,d)|0)==-1){g=-1;break}if((TA(b,d,e)|0)==-1){g=-1;break}if((TA(b,d,94260)|0)==-1){g=-1;break}c[46216]=(c[46216]|0)+1}if((cB(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((TA(b,d,94266)|0)==-1){g=-1;break}if((cB(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=nb[c[f>>2]&63](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[46216]=(c[46216]|0)+-1;if((g|0)!=1){if((TA(b,d,150517)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}g=(TA(b,d,94295)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Hw(f,l)|0;g=0}while(0);return g|0}function jB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=80;break}case 1:{g=81;break}case 3:case 2:{g=82;break}default:{}}b=lb[g&127](a,b)|0;if(!b)b=-1;else{nB(a,b,d,e,g,f);b=0}return b|0}function kB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Vx(a,b,0)|0;return b|0}function lB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Xy(a,b,0)|0;return b|0}function mB(a,b){a=a|0;b=b|0;return a|0}function nB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)vb[c&127](a,b,d);g=wA(a)|0;while(1){if(!g)break;i=lb[e&127](g,b)|0;if(i|0)nB(g,i,c,d,e,f);g=xA(g)|0}if(!h)vb[c&127](a,b,d);return}function oB(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46219]=0;c[46220]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[94299+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[46220]|0;if((h|0)==-2){h=Wz()|0;c[46220]=h}if((h|0)>=1)if(h>>>0<269)i=d[94379+h>>0]|0;else i=2;else{c[46220]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[94648+h>>0]|0):0){p=a[94708+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46220]=-2;g=g+4|0;c[g>>2]=c[46221];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[94768+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46220]|0;b:do switch(q|0){case 0:{c[46219]=(c[46219]|0)+1;pA(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[46220]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[94299+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[46221];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[94848+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{pB();qB();break}case 3:{if(c[46222]|0){pB();qB();$x(c[46222]|0)|0;c[46171]=0;c[46222]=0}break}case 6:{rB(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){tB();break c}else{sB();break c}case 24:{uB();break}case 25:{uB();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{vB(c[g>>2]|0,0,0);break}case 31:{vB(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{vB(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{wB(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{wB(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{xB(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{xB(c[g>>2]|0,0);break}case 51:{yB(c[g>>2]|0);break}case 52:{zB();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=AB(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[94911+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[94974+e>>0]|0)|0;if(h>>>0<60?(d[94648+h>>0]|0)==(p|0):0){e=a[94708+h>>0]|0;j=q;h=i;break}e=a[95009+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){pA(137476);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))D_(f);l=t;return e|0}function pB(){var a=0,b=0;a=c[46223]|0;while(1){if(!a)break;IB(a+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);b=BB(c[46223]|0)|0;c[46223]=b;a=b}return}function qB(){qA();Ay(c[46222]|0);return}function rB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[46222]|0;if(!f){a[184896]=d&1|(e&255)<<1&2|a[184896]&-12|8;f=c[46225]|0;a[g>>0]=a[184896]|0;a[g+1>>0]=a[184897]|0;a[g+2>>0]=a[184898]|0;a[g+3>>0]=a[184899]|0;f=Xx(b,g,f)|0;c[46222]=f}c[46171]=f;c[46223]=CB(c[46223]|0,f)|0;Qz(0,b)|0;l=h;return}function sB(){var b=0,d=0,e=0,f=0,g=0,h=0;HB(2);e=c[46223]|0;f=a[95044]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(b$(g,95044)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=Sy(e)|0;while(1){if(!d)continue a;g=Xy(c[c[46223]>>2]|0,d,0)|0;PB(g,0,c[b>>2]|0,h);d=Ty(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;PB(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}IB((c[46223]|0)+8|0);IB((c[46223]|0)+16|0);IB((c[46223]|0)+24|0);c[(c[46223]|0)+4>>2]=0;return}function tB(){var a=0;HB(1);a=(c[46223]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;OB(c[a+4>>2]|0);a=a+12|0}IB((c[46223]|0)+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);c[(c[46223]|0)+4>>2]=0;return}function uB(){var a=0,b=0;a=c[46223]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=NB(b)|0;a=c[46223]|0}c[a+4>>2]=0}else{b=MB(b)|0;a=c[46223]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)EB(a+16|0,b);return}function vB(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=KB(b,d)|0;d=LB(az(c[c[46223]>>2]|0,a,1)|0,b)|0;EB((c[46223]|0)+8|0,d);Qz(c[46222]|0,a)|0;return}function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)GB();d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))GB();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;HB(g);b=c[46223]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[46222]|0))){d=nx(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[46223]|0;if((c[b>>2]|0)!=(c[46222]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}IB(b+24|0);return}function xB(a,b){a=a|0;b=b|0;b=DB(a,b)|0;EB((c[46223]|0)+24|0,b);return}function yB(a){a=a|0;var b=0;b=c[46223]|0;c[46223]=CB(b,vA(c[b>>2]|0,a,1)|0)|0;Qz(c[46222]|0,a)|0;return}function zB(){var a=0,b=0;a=c[46223]|0;b=c[a>>2]|0;a=BB(a)|0;c[46223]=a;c[a+4>>2]=b;return}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=W_(a)|0;d=d+1+(W_(b)|0)|0;if(d>>>0<1025)d=f;else d=C_(d)|0;b0(d,a)|0;p1(d,b)|0;e=Oz(c[46222]|0,d)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((d|0)!=(f|0))D_(d);l=g;return e|0}function BB(a){a=a|0;var b=0;b=c[(c[46223]|0)+32>>2]|0;Ny(c[46222]|0,a);return b|0}function CB(a,b){a=a|0;b=b|0;var d=0;d=My(c[46222]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function DB(a,b){a=a|0;b=b|0;return FB(267,a,b)|0}function EB(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function FB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(c[46222]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function GB(){var a=0;a=l;l=l+16|0;Pw(0,95048,a)|0;l=a;return}function HB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[95044]|0):0)?!(b$(f,95044)|0):0)){h=nx(c[c[46223]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=nx(c[c[46223]>>2]|0,b,f,191979)|0;c[d>>2]=266;Qz(c[46222]|0,f)|0}d=d+12|0}return}function IB(a){a=a|0;JB(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function JB(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{JB(c[a+4>>2]|0);break}case 266:case 267:{Qz(c[46222]|0,c[a+8>>2]|0)|0;break}default:{}}Ny(c[46222]|0,a);a=b}return}function KB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=W_(a)|0;d=d+2+(W_(b)|0)|0;if(d>>>0<1025)e=g;else e=C_(d)|0;c[f>>2]=a;c[f+4>>2]=b;Y0(e,95081,f)|0;d=Oz(c[46222]|0,e)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((e|0)!=(g|0))D_(e);l=h;return d|0}function LB(a,b){a=a|0;b=b|0;return FB(259,a,b)|0}function MB(a){a=a|0;return FB(265,a,0)|0}function NB(a){a=a|0;return FB(262,a,0)|0}function OB(a){a=a|0;var b=0,d=0;b=(c[46223]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)rx(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function PB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=Sy(d)|0;while(1){if(!f)break a;QB(a,b,Xy(c[c[46223]>>2]|0,f,0)|0,0,e);f=Ty(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=Xy(c[c[46223]>>2]|0,c[f+4>>2]|0,0)|0;QB(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function QB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=Rx(c[c[46223]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;RB(d,108373,a?e:b);RB(d,108382,a?b:e);OB(d)}return}function RB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=nx(c[c[46223]>>2]|0,2,b,0)|0;if(!e)e=nx(c[c[46223]>>2]|0,2,b,191979)|0;rx(a,e,d)|0}return}function SB(a,b,d){a=a|0;b=b|0;d=d|0;c[46191]=b;c[46222]=a;c[46171]=0;a=d|0?d:18496;c[46225]=a;Vz(a,b);oB()|0;a=c[46171]|0;if(!a){sA();a=c[46171]|0}return a|0}function TB(a,b){a=a|0;b=b|0;return SB(0,a,b)|0}function UB(a,b){a=a|0;b=b|0;b=wC(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function VB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;Az(b,134401,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((fz(b)|0)!=(b|0))c[(c[(fz(b)|0)+16>>2]|0)+144>>2]=a;e=xx(b,95297)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(UB(a,e)|0)==999):0){d=xC(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;Pw(1,95824,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{CG(1);bH(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(fz(b)|0)+16>>2]|0)+8>>2]=d;LK();d=c[e>>2]|0;if(d|0?(tb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;CG(0);d=0}}l=i;return d|0}function WB(a,b){a=a|0;b=b|0;var d=0,e=0;if(Az(b,134401,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){tb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)gH(b)}return 0}function XB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){tb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)YB(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[15653];g=12;break}f=L1(e,103486)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=c$(c[(O_()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;ub[j&63](95087,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{ub[c[(c[b+12>>2]|0)+16>>2]&63](95125,j);d=1}l=k;return d|0}function YB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;Y0(g,95143,e)|0}e=c[b+20>>2]|0;e=e|0?e:95147;d=W_(e)|0;i=W_(g)|0;f=b+52|0;i=d+1+i+(W_(c[f>>2]|0)|0)|0;d=i+11|0;if((c[46226]|0)>>>0<(i+1|0)>>>0){c[46226]=d;d=F_(c[46227]|0,d)|0;c[46227]=d}else d=c[46227]|0;b0(d,e)|0;p1(c[46227]|0,g)|0;d=c[46227]|0;d=d+(W_(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=n1(c[f>>2]|0)|0;f=c[46227]|0;while(1){e=o1(d,58)|0;if(!e)break;p1(f,e+1|0)|0;i=c[46227]|0;g=i+(W_(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}p1(f,d)|0;D_(d);c[b+32>>2]=c[46227];l=h;return}function ZB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95125,f);Sa(1)}if((_B(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;ub[f&63](95157,g);Sa(1)}}else e=0;l=h;return e|0}function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=E1(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0<e>>>0){g=e+4096+g&-4096;c[f>>2]=g;f=F_(h,g)|0;c[j>>2]=f;if(!f){ub[c[(c[b+12>>2]|0)+16>>2]&63](95182,n);Sa(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);F3(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=nb[f&63](b,d,e)|0;while(0);l=o;return e|0}function $B(a,b){a=a|0;b=b|0;var c=0;c=W_(b)|0;b=(ZB(a,b,c)|0)==(c|0);return (b?1:-1)|0}function aC(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(ZB(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function bC(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=w1(d)|0;else b=0;return b|0}function cC(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);bC(a)|0;return}function dC(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95209,e);Sa(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)tb[b&127](a);else{bC(a)|0;eC(a)}l=e;return}function eC(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[15653]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){s1(f)|0;c[e>>2]=0}c[d>>2]=0}return}function fC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=q0(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=vH(e+1|0)|0;c[g>>2]=d;f=e;e=Z0(e,b,g)|0}else f=h;ZB(a,f,e)|0;if((f|0)!=(h|0))D_(f)}else{c[f>>2]=c$(c[(O_()|0)>>2]|0)|0;Pw(1,95226,f)|0}l=i;return}function gC(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,b)|0;ZB(a,f,c[e>>2]|0)|0;l=d;return}function hC(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=135312;e=1}else{l=(f|0)<0;k=4;i=0;e=191746;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=191746-e|0}}else{f=95241;e=18}else{f=95240;e=19}c[b>>2]=e;return f|0}function iC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,+h[b>>3])|0;ZB(a,f,c[e>>2]|0)|0;ZB(a,99578,1)|0;b=hC(e,+h[b+8>>3])|0;ZB(a,b,c[e>>2]|0)|0;l=d;return}function jC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];iC(a,f);e=e+1|0;if((e|0)>=(d|0))break;ZB(a,99578,1)|0}l=g;return}function kC(a,b){a=a|0;b=b|0;var d=0;d=uH(392)|0;if(d|0){c[d>>2]=20052;c[d+16>>2]=23;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function lC(a){a=a|0;var b=0,d=0,e=0,f=0;b=uH(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function mC(a){a=a|0;tC(a);D_(a);return}function nC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46228]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46228]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46228]=d;c[d+32>>2]=b;c[d>>2]=a;return}function oC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46229]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46229]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46229]=d;c[d+52>>2]=b;c[d>>2]=a;return (wC(a,3,b)|0)!=0|0}function pC(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function qC(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function rC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function sC(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)D_(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function tC(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;sC(b+604|0);sC(b+592|0);D_(c[b+584>>2]|0);D_(c[b+588>>2]|0);D_(b);b=e}c[46229]=0;c[46228]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function uC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;U0(k,e,63)|0;i=A$(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}U0(m,c[d+4>>2]|0,63)|0;d=A$(m,58)|0;if(d|0)a[d>>0]=0;if((b$(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;U0(m,c[b+4>>2]|0,63)|0;b=A$(m,58)|0;if(b|0)a[b>>0]=0;if(b$(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=vH(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function vC(a,b){a=a|0;b=b|0;b=l;l=l+16|0;Pw(1,95321,b)|0;l=b;return 0}function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;U0(o,e,63)|0;e=A$(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=A$(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}U0(p,c[e+4>>2]|0,63)|0;e=A$(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(b$(p,o)|0)){g=(e|0)!=0;if(i&g?b$(e,f)|0:0)break;if(!j?b$(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(wC(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(vC(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[15686]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[20064+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;g1(q,95352,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[5021]|0){Tw(184920,0,0);c[5021]=0}h=n1(e)|0;e=A$(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(O$(h,d)|0)!=0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=58;Ww(184920,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}D_(d);g=c[g>>2]|0}D_(h);if(e<<24>>24){g=0;i=19}}else{D_(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(O$(g,d)|0)==0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=191979;break}}e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}a[e>>0]=0;e=c[46230]|0;c[46231]=e}while(0);return e|0}function yC(b){b=b|0;var d=0;if(!b)qa(108182,95369,573,95383);if(!(a[b>>0]|0))qa(108187,95369,574,95383);d=c[46234]|0;if(!d)b=0;else b=nb[c[d>>2]&63](d,b,512)|0;return b|0}function zC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)qa(108230,95369,589,95400);g=b+8|0;e=c[g>>2]|0;if(!e)qa(108233,95369,590,95400);if(!(a[e>>0]|0))qa(108242,95369,591,95400);h=b+20|0;f=c[h>>2]|0;do if(!f){d=ZL(e)|0;if(!d){c[i>>2]=c[g>>2];Pw(0,95424,i)|0;d=0;break}i=L1(d,135739)|0;c[h>>2]=i;if(!i){c[j>>2]=c$(c[(O_()|0)>>2]|0)|0;c[j+4>>2]=d;Pw(0,95449,j)|0;d=0;break}d=c[46235]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[46235]=d+1;d=1;break}}else{Z1(f,0,0)|0;if(!(c[h>>2]|0))qa(95470,95369,614,95400);else d=1}while(0);l=k;return d|0}function AC(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){s1(e)|0;c[d>>2]=0}return}function BC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[46362]|0,(c[46236]|0)!=(g|0)):0)?(c[46236]=g,i=c[46234]|0,i|0):0){yw(i)|0;c[46234]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=DC(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];BC(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function DC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)qa(108182,95369,638,95476);if(!(c[46234]|0))c[46234]=Cw(20088,c[4563]|0)|0;b=yC(a)|0;a:do if(!b){b=uH(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=Oz(0,a)|0;if(!((zC(b)|0)<<24>>24)){EC(b);b=0;break}if(!(c[b+20>>2]|0))qa(95470,95369,653,95476);do switch(FC(b)|0){case 0:{a=VJ(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];Pw(0,95493,e)|0;EC(b);b=0;break a}break}case 2:{GC(b);break}case 3:{HC(b);break}case 1:{IC(b);break}case 4:{JC(b);break}case 6:{KC(b);break}case 11:{LC(b);break}case 8:{MC(b);break}case 5:{NC(b);break}case 12:{OC(b);break}default:{}}while(0);AC(b);e=c[46234]|0;nb[c[e>>2]&63](e,b,1)|0}}else AC(b);while(0);l=f;return b|0}function EC(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)Qz(0,b)|0;D_(a);return}function FC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(g3(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(L0(f,c[20124+(d<<4)>>2]|0,c[20124+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[20124+(d<<4)+12>>2];b=c[20124+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(L0(f+8|0,95709,4)|0)break a;c[e>>2]=95714;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(O0(g,200,c[h>>2]|0)|0)){i=11;break}if(!(L0(g,95704,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=98777;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=95719;c[a+24>>2]=0;b=0}l=j;return b|0}function GC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function HC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,16,0)|0;if((PC(c[e>>2]|0,4,b)|0)<<24>>24?(PC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;Z1(c[g>>2]|0,16,0)|0;if((((XC(c[g>>2]|0,2,b)|0)<<24>>24?(XC(c[g>>2]|0,2,d)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,e)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function JC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((PC(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(A$(95692,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((PC(g,2,e)|0)<<24>>24))break;Z1(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((PC(c[j>>2]|0,3,i)|0)<<24>>24?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(PC(g,3,i)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function KC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;Z1(c[i>>2]|0,0,0)|0;while(1){if(!(O0(b,1024,c[i>>2]|0)|0))break;d=P0(b,95677)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((N1(d,101285,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function LC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,15,0)|0;h=(m3(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){Z1(f,24,0)|0;if((XC(c[e>>2]|0,4,b)|0)<<24>>24?(XC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{Z1(f,26,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function MC(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[46237]|0)){if(o2(184952,95562,1)|0){c[d>>2]=95562;Pw(1,95589,d)|0}c[46237]=184952}m=b+20|0;Z1(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(O0(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(a3(184952,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(b$(e,138034)|0))break;if(!(b$(e,137966)|0))break c;if(b$(e,95636)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((N1(f,95644,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((N1(f,95626,A)|0)!=2){c[D>>2]=s;if((N1(f,98183,D)|0)==1){e=1;f=WC(+h[s>>3],95633)|0}else{e=g;f=j}}else{e=1;f=WC(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((N1(f,95626,E)|0)!=2){c[B>>2]=s;if((N1(f,98183,B)|0)==1){d=1;e=WC(+h[s>>3],95633)|0}else e=k}else{d=1;e=WC(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function NC(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,0,0)|0;if(!(QC(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function OC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((PC(c[e>>2]|0,1,b)|0)<<24>>24?(PC(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function PC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function QC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(O0(e,1024,a)|0)){a=1;break}f=P0(e,95552)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=RC(d,b)|0}l=h;return a|0}function RC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;SC(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(TC(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,UC(b,f),(VC(f,d)|0)==0):0)?(UC(b,f),(VC(f,d+8|0)|0)==0):0)?(UC(b,f),(VC(f,d+16|0)|0)==0):0){UC(b,f);e=(VC(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function SC(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(TC(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(B$(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function TC(b){b=b|0;var d=0;d=b+4|0;if(!(O0(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function UC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;SC(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(TC(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function VC(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+c2(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function WC(a,b){a=+a;b=b|0;var c=0.0;do if(!(b$(b,95660)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(b$(b,95663)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(b$(b,95666)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(b$(b,95633)|0?b$(b,95669)|0:0)if(!(b$(b,95671)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(b$(b,95674)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function XC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function YC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)s1(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)tb[e&127](b);D_(b);return}function ZC(){var a=0;nx(0,1,105198,102467)|0;a=kC(0,1)|0;LP(a,0);return a|0}function _C(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((UB(b,e)|0)!=999)if((VB(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));Y0(g,95873,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));Y0(g,95873,i)|0}Ax(d,99645,g,191979)|0;b=0}else{b=xC(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;Pw(1,95824,f)|0;b=-1}l=k;return b|0}function $C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=DG(a,f)|0;wO(b);tC(a);b=h}l=i;return b|0}function aD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){nC(a,e);h=DG(a,f)|0;wO(b);dC(b);tC(a);b=h}l=i;return b|0}function bD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;oC(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=uO(j,c[j+52>>2]|0)|0;if((Az(b,134401,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){Sw(95885,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=C_(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=DG(a,b)|0;wO(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}tC(a);break}Pw(1,95906,h)|0;b=-1}while(0);l=m;return b|0}function cD(a,b){a=a|0;b=b|0;JP(a,0,b);return}function dD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+4288|0;E=H+8|0;D=H;F=4;G=C_(40)|0;c[G>>2]=0;A=H+4152|0;B=H+4148|0;C=H+4128|0;j=H+4112|0;k=H+16|0;o=0;i=$(24,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;a:do if((h|0)!=1){if(!i){c[d>>2]=0;g=0;break}o=0;n=ca(26,e|0,B|0,A|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;m=$(23,40)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;na(7,C|0,j|0,k|0,24,83);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){j=C+16|0;i=c[j>>2]|0;g=e;while(1){if(!g)break;o=0;aa(i|0,g|0,0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}o=0;g=aa(84,b|0,g|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}}G=D3(184984,1,G|0,F|0)|0;F=z;o=0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){y=m;x=j;w=m;v=n;g=z;m=15}else{y=m;x=j;w=m;v=n;g=0;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=0;g=z;m=15}while(0);do if((m|0)==15){b:while(1){c:do if(!g){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}u=v+(c[B>>2]|0)|0;k=0;m=0;j=0;while(1){if(!e)break;o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){i=E3(c[h>>2]|0,G|0,F|0)|0;if(!i)bb(h|0,p|0);z=p}else i=-1;if((i|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((g|0)==0?(a[(c[e+16>>2]|0)+119>>0]|0)==3:0){if(!m){o=0;c[D>>2]=j;ca(27,u|0,134313,D|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;i=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,i|0,134401,280,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}c[y+(j<<2)>>2]=i;k=1;j=j+1|0}else i=m;o=0;da(54,b|0,e|0,i|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}}else i=m;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}m=i}o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}i=10;n=y;q=w;r=w;t=w;while(1){if(!e){m=0;i=r;e=t;break c}o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){m=E3(c[h>>2]|0,G|0,F|0)|0;if(!m)bb(h|0,p|0);z=p}else m=-1;if((m|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if(!g){o=0;c[E>>2]=j;ca(27,u|0,134313,E|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;s=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,s|0,134401,280,1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){g=E3(c[h>>2]|0,G|0,F|0)|0;if(!g)bb(h|0,p|0);z=p}else g=-1;if((g|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(54,b|0,e|0,s|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((j|0)==(i|0)){i=j<<1;o=0;m=aa(85,q|0,j<<3|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=m;q=m;r=m;h=m}else{g=n;h=t}c[g+(j<<2)>>2]=s;n=g;j=j+1|0;m=h}else m=t;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}t=m}}else{m=1;k=0;n=y;j=0;i=w;e=w}while(0);o=0;ia(105,C|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}if((v|0)!=(A|0)){o=0;ia(103,v|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}}if(!m){o=0;g=aa(85,e|0,j<<2|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}else{m=58;break}}c[d>>2]=0;g=0;while(1){if((g|0)>=(j|0))break;o=0;$(26,c[n+(g<<2)>>2]|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=g+1|0}o=0;ia(103,i|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15}else{m=56;break}}if((m|0)==56){g=0;break}else if((m|0)==58){c[d>>2]=j;a[f>>0]=k;break}}while(0);D_(G|0);l=H;return g|0}function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(nD(a)|0)!=0:0))a=95962;e=W_(a)|0;if((e|0)>=104){d=vH(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){b0(d,a)|0;c[b>>2]=e}return d|0}function fD(a,b){a=a|0;b=b|0;Xy(b,a,1)|0;return}function gD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+157|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function hD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function iD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;lD(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=mD(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)ub[f&63](k,d);h=Jx(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(lb[c[j>>2]&127](f,-1)|0))lD(e,f);h=Kx(a,h,k)|0}}return b|0}function jD(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;kD(a);a=b}return}function kD(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function lD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=vH(16)|0;if(!e){Pw(1,95943,f)|0;bb(184984,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=vH(4e6)|0;c[e>>2]=d;if(!d){Pw(1,95943,j)|0;bb(184984,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}lb[c[a+16>>2]&127](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function mD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function nD(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(M$(c&255)|0)){b=0;break}}return b|0}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;B=l;l=l+4272|0;x=B;y=4;A=C_(40)|0;c[A>>2]=0;u=B+4144|0;v=B+4140|0;w=B+4120|0;h=B+4104|0;i=B+8|0;o=0;f=$(24,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){e=E3(c[g>>2]|0,A|0,y|0)|0;if(!e)bb(g|0,p|0);z=p}else e=-1;a:do if((e|0)!=1)if(f){o=0;k=ca(26,d|0,v|0,u|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;j=$(23,40)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;na(7,w|0,h|0,i|0,24,83);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){h=w+16|0;g=c[h>>2]|0;e=f;while(1){if(!e)break;o=0;aa(g|0,e|0,0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}o=0;e=aa(84,a|0,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}}A=D3(184984,1,A|0,y|0)|0;y=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){t=h;s=j;r=k;e=z;j=14}else{t=h;s=j;r=k;e=0;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=0;r=k;e=z;j=14}}else{d=0;e=0}else{t=0;s=0;r=0;e=z;j=14}while(0);b:do if((j|0)==14){c:while(1){if(e|0){o=0;ia(105,w|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;ia(103,s|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0)){d=0;e=0;break b}o=0;ia(103,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}else{j=19;break}}o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}q=r+(c[v>>2]|0)|0;h=10;k=s;e=0;j=s;n=s;while(1){if(!f)break;o=0;d=aa(c[t>>2]|0,f|0,-1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,A|0,y|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if(!d){o=0;c[x>>2]=e;ca(27,q|0,134313,x|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;m=ca(28,a|0,r|0,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(53,m|0,134401,280,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(54,a|0,f|0,m|0,w|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if((e|0)==(h|0)){h=e<<1;o=0;i=aa(85,j|0,e<<3|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}g=i;j=i;d=i}else{g=k;d=n}c[g+(e<<2)>>2]=m;e=e+1|0;k=g;i=d}else i=n;o=0;f=aa(84,a|0,f|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}n=i}o=0;ia(105,w|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;d=aa(85,n|0,e<<2|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0))break b;o=0;ia(103,r|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14}else{j=39;break}}if((j|0)==19){d=0;e=0;break}else if((j|0)==39)break}while(0);c[b>>2]=e;D_(A|0);l=B;return d|0}function pD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=Sy(a)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if(Xy(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){Vx(a,e,1)|0;d=d+1|0}e=Gx(b,e)|0}f=Ty(a,f)|0}return d|0}function qD(a){a=a|0;a=yz(a,95967,0)|0;if(!a)qa(95972,95975,529,95984);else return c[a+8>>2]|0;return 0}function rD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(ay(b)|0){Fz(b,0,95993,-12,0);Fz(b,1,96005,16,0);o=eD(e,f,t)|0;k=sD(b)|0;m=vH((ay(k)|0)<<2)|0;hD(p,u+4144|0,u+48|0,24,86);h=Sy(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[15686]|0;e=0;while(1){if(!h)break;if(!(lb[c[n>>2]&127](h,-1)|0)){c[q>>2]=e;Y0(i,96907,q)|0;v=vA(k,o,1)|0;w=vA(b,o,1)|0;Az(w,95993,12,0)|0;a[(yz(w,95993,0)|0)+8>>0]=1;f=iD(k,h,v,p)|0;uD(v,w);g=vD(w)|0;wD(b,w);c[m+(e<<2)>>2]=w;dz(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;g1(j,96017,r)|0}e=e+1|0}h=Ty(k,h)|0}if(0){r=ay(b)|0;v=by(b)|0;w=ry(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;g1(j,96047,s)|0}$x(k)|0;Gz(b,0,95993);Gz(b,1,96005);jD(p);f=xH(m,e<<2)|0;if((o|0)!=(t|0))D_(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function sD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[18492]|0;a[h+1>>0]=a[18493]|0;a[h+2>>0]=a[18494]|0;a[h+3>>0]=a[18495]|0;h=Xx(96094,h,0)|0;zD(h,b);d=Sy(b)|0;while(1){if(!d)break;if(!(c[(yz(d,96005,0)|0)+12>>2]|0)){g=az(h,ry(d)|0,1)|0;Az(g,96005,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(yz(d,96005,0)|0)+12>>2]=g}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;f=c[(yz(e,96005,0)|0)+12>>2]|0;d=Ex(b,e)|0;while(1){if(!d)break;g=c[(yz(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,96005,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){Rx(h,f,g,0,1)|0;break}else{Rx(h,g,f,0,1)|0;break}while(0);d=Gx(b,d)|0}e=Ty(b,e)|0}l=i;return h|0}function tD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function uD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sy(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)Xy(b,f,1)|0;else{d=Sy(f)|0;while(1){if(!d)break a;Xy(b,d,1)|0;d=Ty(f,d)|0}}while(0);e=Ty(a,e)|0}return}function vD(a){a=a|0;return pD(a,c[a+60>>2]|0)|0}function wD(a,b){a=a|0;b=b|0;xD(a,b,0);return}function xD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=wA(b)|0;while(1){if(!b)break;if((a[(yz(b,95993,0)|0)+8>>0]|0)==0?(f=yD(b,c,d)|0,f|0):0){if(g)e=(z$(ry(b)|0,104980,7)|0)==0;else e=1;xD(b,f,e&1)}b=xA(b)|0}return}function yD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=Sy(a)|0;while(1){if(!g)break;f=az(b,ry(g)|0,0)|0;if(f){if(!e)e=vA(b,ry(a)|0,1)|0;Xy(e,f,1)|0}g=Ty(a,g)|0}if((d|0)!=0&(e|0)==0)e=vA(b,ry(a)|0,1)|0;if(e|0?(pD(e,a)|0,Bx(a,e)|0,(z$(ry(e)|0,104980,7)|0)==0):0)c[(Az(e,95967,12,0)|0)+8>>2]=a;return e|0}function zD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=wA(b)|0;e=c[15686]|0;while(1){if(!d)break;a:do if(!(z$(ry(d)|0,104980,7)|0)){f=az(a,ry(d)|0,1)|0;Az(f,96005,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=Sy(d)|0;while(1){if(!b)break a;if(c[(yz(b,96005,0)|0)+12>>2]|0){k=ry(b)|0;j=ry(d)|0;i=ry(c[(yz(b,96005,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;g1(e,96097,g)|0}c[(yz(b,96005,0)|0)+12>>2]=f;b=Ty(d,b)|0}}else zD(a,d);while(0);d=xA(d)|0}l=h;return}function AD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){BI(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){BI(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=CD(a,b,d,e)|0;break}m=vH(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;mM(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=uH(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=xx(c[b+(d<<2)>>2]|0,96164)|0;if(g|0?(c[k>>2]=j,g=(N1(g,134313,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=DD(a,m,e)|0;if(c[h>>2]&2)D_(c[e+24>>2]|0)}else d=0;D_(m)}while(0);l=n;return d|0}function CD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[15686]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;mM(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=ry(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;g1(E,96231,u)|0}n=n+1|0}q=vH(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=GD(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;g1(E,96259,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=uH(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=ry(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];HD(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];ID(e,i,j,p,f,B)}g=g+1|0}j=uH(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}_0(j,b,4,87);k=vI()|0;g=uH(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];KD(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;LD(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;LD(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);D_(j);i=0;while(1){if((i|0)>=(b|0))break;D_(c[m+(i<<4)+4>>2]|0);i=i+1|0}D_(m);yI(k);D_(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;g1(E,96275,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function DD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=uH(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[15686]|0;c[g>>2]=k|0?96170:96180;c[g+4>>2]=w;c[g+8>>2]=f;g1(v,96193,g)|0}t=uH((f<<3)+8|0)|0;u=uH((w<<3)+8|0)|0;v=uH(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=uH(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))_0(s,a,4,89)}else{c[46285]=e;_0(s,a,4,88)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}D_(v);D_(s);D_(t);D_(u);l=z;return x|0}function ED(a,b){a=a|0;b=b|0;var d=0;d=c[46285]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function FD(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (e<d?1:(e>d)<<31>>31)|0}function GD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[15686]|0;E1(96418,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;g1(m,96446,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;g1(m,96472,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;g1(m,96494,q)|0}}else{h[m>>3]=j;Pw(1,96391,m)|0;d=-1}l=s;return d|0}function HD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=vI()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;BI(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=FI(r)|0;j=EI(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[15686]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;g1(f,96350,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;g1(f,96377,t)|0;a=a+1|0}}while(0);yI(r);l=u;return}function ID(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=vI()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=vH((ay(b)|0)<<2)|0;a=0;g=Sy(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=Ty(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}a=Sy(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=Ty(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=Sy(b)|0;while(1){if(!o)break;WL(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G)}a=Gx(C,a)|0}}while(0);o=Ty(b,o)|0}a=0;g=Sy(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=Ty(b,g)|0}D_(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=Sy(b)|0;while(1){if(!o)break a;WL(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}o=Ty(b,o)|0}}while(0);i=d+4|0;c[i>>2]=FI(L)|0;j=d+8|0;c[j>>2]=EI(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[15686]|0;d=ry(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;g1(f,96350,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;g1(f,96377,O)|0;a=a+1|0}}while(0);yI(L);l=P;return}function JD(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function KD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];zI(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[15686]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;g1(k,96324,i)|0}l=j;return}function LD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(MD((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(MD(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(MD(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(MD(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(MD(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(MD(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function MD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(CI(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];zI(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[15686]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;g1(j,96290,s)|0;j=1}else j=1}l=t;return j|0}function ND(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function OD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function PD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){WL(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}l=A;return}function QD(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((a|0)<1)a=0;else switch(c[d+16>>2]|0){case 4:{a=DD(a,b,d)|0;break a}case 3:{a=RD(a,b,d)|0;break a}default:{a=0;break a}}while(0);return a|0}function RD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+80|0;g=n+64|0;f=n+24|0;m=n+8|0;e=n;h=n+56|0;j=d+8|0;k=GD(a,b,c[j>>2]|0)|0;if(0){i=c[15686]|0;c[e>>2]=k;g1(i,96259,e)|0}a:do if((k|0)>=1){c[h+4>>2]=0;c[h>>2]=0;i=uH(a<<4)|0;d=0;while(1){if((d|0)>=(a|0))break;c[i+(d<<4)+12>>2]=d;o=b+(d<<5)|0;e=c[j>>2]|0;c[f>>2]=c[o>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[f+28>>2]=c[o+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];HD(f,i+(d<<4)|0,k,e,g,191979);d=d+1|0}f=uH(a<<2)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=i+(d<<4);d=d+1|0}_0(f,a,4,87);g=vI()|0;d=uH(a<<3)|0;e=0;while(1){if((e|0)>=(a|0))break;o=c[f+(e<<2)>>2]|0;LD(e,o,g,d+(c[o+12>>2]<<3)|0,k,c[j>>2]|0,b);e=e+1|0}D_(f);e=0;while(1){if((e|0)>=(a|0))break;D_(c[i+(e<<4)+4>>2]|0);e=e+1|0}D_(i);yI(g);if(0>1){f=c[15686]|0;e=0;while(1){if((e|0)>=(a|0))break a;b=c[d+(e<<3)>>2]|0;o=c[d+(e<<3)+4>>2]|0;c[m>>2]=e;c[m+4>>2]=b;c[m+8>>2]=o;g1(f,96275,m)|0;e=e+1|0}}}else d=0;while(0);l=n;return d|0}function SD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=Sy(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Ex(g,i)|0;while(1){if(!f)break b;TD(f,k,l);f=Gx(g,f)|0}}while(0);i=Ty(r,i)|0}UD(r,k,l);j=j+1|0}}while(0);return f|0}function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function UD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;UD(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function VD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=BD(a,b,d,e)|0;if(!f)a=1;else{a=SD(a,b,f,d,c[e+12>>2]|0)|0;D_(f)}return a|0}function WD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=VD(a,b,d,e)|0;if(!n){mM(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function XD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)qa(96508,96514,1400,96521);d=YD(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[15686]|0;c[f>>2]=d;g1(h,96533,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;ZD(a,b,e)|0;l=g;return c[e+16>>2]|0}function YD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=xx(b,96663)|0;a:do if(g){c[h>>2]=f;h=(N1(g,134313,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return _D(xx(a,96546)|0,b,c)|0}function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)qa(96508,96514,1292,96555);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(z$(b,96573,5)|0)){c[p>>2]=4;m=$D(b+5|0,e)|0;c[k>>2]=j;m=(N1(m,134313,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(z$(b,96579,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(N1(b+5|0,96586,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(b,104980)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(b$(b,108412)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(b$(b,108399)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[15686]|0;E1(96589,11,1,d)|0;c[s>>2]=aE(c[p>>2]|0)|0;g1(d,96601,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];g1(d,96614,t)|0}c[q>>2]=c[n>>2];g1(d,96627,q)|0;c[r>>2]=c[o>>2];g1(d,96640,r)|0}l=u;return c[p>>2]|0}function $D(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function aE(a){a=a|0;switch(a|0){case 1:{a=104980;break}case 2:{a=108399;break}case 3:{a=108412;break}case 4:{a=96573;break}case 5:{a=96579;break}default:a=96653}return a|0}function bE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=E_(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=E_(100,j)|0}else{h=d+100|0;i=F_(c[e+8>>2]|0,O(h,j)|0)|0;H3(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=cE(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=F_(i,O(f,j)|0)|0;H3(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){D_(i);D_(e);e=0;break}else{c[e+8>>2]=F_(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function cE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((B$(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=iE(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=fE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=jE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function dE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+c2(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+c2(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+c2(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+c2(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function eE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=kE(a,j)|0;do if(a){d=c[j>>2]|0;i=E_(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+c2(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+c2(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==7){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function fE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=kE(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=E_(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){D_(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function gE(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=lE(b+1|0,d)|0;break}case 40:{b=mE(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(M$(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+c2(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function iE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=kE(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function jE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=C$(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function kE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=i1(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=hE(a,n)|0;do if(((((i|0)!=0?(j=hE(i,b+16|0)|0,(j|0)!=0):0)?(e=hE(j,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=kE(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=E_(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=hE(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=fE(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){D_(f);a=0;break}else if((d|0)==12){D_(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function mE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=hE(a,b+8|0)|0;do if(((((((k|0)!=0?(m=hE(k,b+16|0)|0,(m|0)!=0):0)?(e=hE(m,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(i=hE(f,b+40|0)|0,(i|0)!=0):0)?(j=hE(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=kE(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=E_(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=hE(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=fE(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){D_(i);a=0;break}else if((d|0)==14){D_(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function nE(a,b,c){a=a|0;b=b|0;c=c|0;return bE(a,b,c,0)|0}function oE(a){a=a|0;return nE(a,0,0)|0}function pE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)tb[e&127](d);qE(d);b=b+1|0}D_(f);D_(a)}return}function qE(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{D_(c[a+8+4>>2]|0);break}case 5:case 4:{D_(c[a+8+4>>2]|0);break}case 6:{D_(c[a+8+4>>2]|0);break}case 7:{D_(c[a+40>>2]|0);break}case 9:case 8:{D_(c[a+8>>2]|0);break}case 14:case 13:{rE(a+8|0);break}case 10:{D_(c[a+16>>2]|0);break}case 11:{D_(c[a+8>>2]|0);break}case 12:{D_(c[a+40>>2]|0);break}default:{}}return}function rE(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[d+(a<<3)+4>>2]|0);a=a+1|0}D_(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[b+(a<<3)+4>>2]|0);a=a+1|0}D_(b);break}default:{}}return}function sE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(ey(ez(b)|0)|0)!=0&1;f=c[46414]|0;a:do if(f|0?(h=yx(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=20284;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(b$(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[46425]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=yx(b,f)|0,a[j>>0]|0):0)tE(j,e);f=c[46426]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=yx(b,f)|0,a[m>>0]|0):0)tE(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ez(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;sE(Rx(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function tE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=uE(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;Pw(0,96668,m)|0}l=o;return}function uE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=vE(a,20344,e)|0;if((d|0)==(a|0)){while(1){d=vE(a,20360,e)|0;if((a|0)==(d|0))break;else a=d}d=vE(a,20408,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=W_(e)|0;if(!(z$(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function wE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1400;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+LL(a,c[46418]|0,1.0,0.0))}function xE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){_O(a,o+16|0,3,g>>>4&1^1);break}else{_O(a,o+32|0,3,g>>>4&1^1);break}else _O(a,o,3,g>>>4&1^1);while(0);l=p;return}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q<f)|y?.45:f/q*.45;s=!(f>1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){_O(a,w,9,1);break}else{_O(a,w+48|0,6,1);break}else _O(a,w,6,1);while(0);l=x;return}function zE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}_O(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;bP(a,p,2);l=q;return}function AE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}_O(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;bP(a,n,2);l=o;return}function BE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){_O(a,i,4,d);break}else{_O(a,i,3,d);break}}else _O(a,d,3,g>>>4&1^1);while(0);l=j;return}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;ZO(a,i,2,f>>>4&1^1);l=g;return}function DE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;bP(a,r,2);if(!(g&64)){if(g&128|0)XL(s,q,3,.5,q,0)}else XL(s,q,3,.5,0,q);aP(a,q,4,0,0,0);l=t;return}function EE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;bP(a,i,2);l=g;return}function FE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+wE(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o<i):0)e=e+-3|0;s=k+48|0;r=b+(e<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;MK(j,90,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function HE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+wE(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p<j):0))i=d;e=b+(i+3<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;MK(k,90,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function IE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+wE(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k<n?-j:j)+n;j=p}else{m=k;j=(p<o?-j:j)+o}w=e+1|0;h[b+(w<<4)>>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+wE(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k<o?m:-m)+k;m=j}else{n=k;m=(j<p?m:-m)+j}w=d+1|0;v=b+(w<<4)|0;h[v>>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+wE(a,g);q=+wE(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s<k;p=(w?-n:n)+k;q=(w?m:-m)+s;o=t;m=t}else{w=t<j;p=s;q=s;o=(w?m:-m)+t;m=(w?-n:n)+j}w=e+1|0;v=b+(w<<4)|0;h[v>>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o<k?o:k;k=n<k?n:k;j=m<j?m:j;j=l<j?l:j;h[a>>3]=i<k?i:k;h[a+8>>3]=f<j?f:j;h[a+16>>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function KE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;YO(a,c[(c[a>>2]|0)+336>>2]|0);fP(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];LE(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function LE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1400;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];wb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function ME(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=xx(b,96770)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=xx(b,96782)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=nE(e,0,120)|0;if(!d){c[f>>2]=ry(b)|0;Pw(0,96789,f)|0;c[g>>2]=e;Pw(3,96842,g)|0}}l=i;return d|0}function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=uH(304)|0;if(!f)Pw(1,96850,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function OE(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)qa(96876,96880,117,96887);else{D_(c[b+212>>2]|0);D_(c[b+208>>2]|0);D_(c[b+216>>2]|0);D_(c[b+220>>2]|0);D_(c[b+224>>2]|0);D_(c[b+228>>2]|0);D_(c[b+232>>2]|0);D_(c[b+236>>2]|0);D_(c[b+240>>2]|0);D_(c[b+244>>2]|0);D_(c[b+248>>2]|0);D_(c[b+252>>2]|0);D_(c[b+256>>2]|0);D_(c[b+272>>2]|0);D_(c[b+284>>2]|0);D_(c[b+280>>2]|0);c[a>>2]=c[b>>2];D_(b);return}}function PE(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=pH(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=pH(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=pH(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=n1(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=pH(h,j)|0;d=1}return d|0}function QE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;RE(b,e);b=xx(d,137978)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){Ww(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){Ww(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(pz(d)|0){case 0:{f=(g|0)==(d|0)?108412:96901;b=(c[d>>2]|0)>>>4;break}case 1:{f=108399;b=(c[d>>2]|0)>>>4;break}case 2:{f=108368;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}Ww(e,f)|0;c[i>>2]=b;Y0(h,96907,i)|0;Ww(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function RE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){Ww(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;Y0(g,96911,h)|0;Ww(d,g)|0}l=i;return}function SE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=TE(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)fP(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{WO(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=rQ(p,k,m,i,e)|0;aP(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);nV(b)}i=e;f=f+12|0}if(n)fP(a,r);UE(j)}l=s;return o|0}function TE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=uH(12)|0;i=n1(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=uH((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=k1(f,104958)|0;if(!f){f=20;break}j=+VE(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[5130]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;Pw(0,96922,n)|0;c[5130]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[5130]|0))d=1;else{c[o>>2]=b;Pw(1,96957,o)|0;c[5130]=0;d=2}UE(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function UE(a){a=a|0;D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(a);return}function VE(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=A$(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+c2(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function WE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=TE(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)fP(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){WO(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;_O(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)fP(a,s);UE(i)}l=t;return q|0}function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;D_(c[g>>2]|0);d=uH(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function YE(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k<n)):0)?(d=+h[b+8>>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d<j)):0)?(k=+h[b+16>>3],!(k>m|k<n)):0)?(k=+h[b+24>>3],!(k>i|k<j)):0)?(k=+h[b+32>>3],!(k>m|k<n)):0)?(k=+h[b+40>>3],!(k>i|k<j)):0)?(k=+h[b+48>>3],!(k>m|k<n)):0)?(n=+h[b+56>>3],!(n>i|n<j)):0))p=11;a:do if((p|0)==11){if(!(ZE(b)|0)){XL(f,b,3,.5,c,e);YE(a,c);YE(a,e);break}f=a+24|0;g=a+8|0;e=0;while(1){if((e|0)==4)break a;d=+h[b+(e<<4)>>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function ZE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+$G(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+$G(f,e,d)<4.0&1;l=b;return a|0}function _E(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0;D=l;l=l+272|0;u=D+256|0;v=D+224|0;w=D+192|0;x=D+128|0;y=D+64|0;z=D;A=D+160|0;B=D+96|0;C=D+32|0;t=c[d+16>>2]|0;s=c[t+144>>2]|0;r=t+16|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];t=c[(c[t+8>>2]|0)+88>>2]|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;if(!t){c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}else{d=x+16|0;if(+h[x>>3]==+h[d>>3]?(e=x+8|0,f=x+24|0,+h[e>>3]==+h[f>>3]):0){h[e>>3]=1797693134862315708145274.0e284;h[x>>3]=1797693134862315708145274.0e284;h[f>>3]=-1797693134862315708145274.0e284;h[d>>3]=-1797693134862315708145274.0e284}j=v+8|0;k=v+16|0;m=v+24|0;n=y+16|0;o=y+24|0;p=s+144|0;q=w+16|0;r=t+12|0;d=0;f=c[t+8>>2]|0;e=0;g=0.0;i=0;while(1){if((i|0)>=(c[t>>2]|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];switch(c[f>>2]|0){case 1:case 0:{H=+h[f+8>>3];I=+h[f+24>>3];h[v>>3]=H-I;F=+h[f+16>>3];G=+h[f+32>>3];h[j>>3]=F-G;h[k>>3]=I+H;h[m>>3]=G+F;E=f+80|0;c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2];E=f+96|0;c[E>>2]=c[k>>2];c[E+4>>2]=c[k+4>>2];c[E+8>>2]=c[k+8>>2];c[E+12>>2]=c[k+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];$E(x,u);c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];$E(x,u);break}case 3:case 2:{E=f+80|0;J=f+8|0;aF(A,c[J+4>>2]|0,c[J>>2]|0,x);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2];c[E+16>>2]=c[A+16>>2];c[E+20>>2]=c[A+20>>2];c[E+24>>2]=c[A+24>>2];c[E+28>>2]=c[A+28>>2];break}case 5:case 4:{J=f+80|0;E=f+8|0;aF(B,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[B>>2];c[J+4>>2]=c[B+4>>2];c[J+8>>2]=c[B+8>>2];c[J+12>>2]=c[B+12>>2];c[J+16>>2]=c[B+16>>2];c[J+20>>2]=c[B+20>>2];c[J+24>>2]=c[B+24>>2];c[J+28>>2]=c[B+28>>2];break}case 6:{J=f+80|0;E=f+8|0;aF(C,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];c[J+16>>2]=c[C+16>>2];c[J+20>>2]=c[C+20>>2];c[J+24>>2]=c[C+24>>2];c[J+28>>2]=c[C+28>>2];break}case 7:{J=f+112|0;c[J>>2]=uH(56)|0;E=n1(c[f+40>>2]|0)|0;K=c[J>>2]|0;c[K>>2]=E;a[K+48>>0]=a[97003+(c[f+24>>2]|0)>>0]|0;c[y>>2]=e;h[n>>3]=g;c[o>>2]=c[o>>2]&-128|d&127;K=c[p>>2]|0;K=nb[c[K>>2]&63](K,y,1)|0;E=c[J>>2]|0;c[E+4>>2]=K;wL(u,s,E);bF(w,+h[f+8>>3],+h[f+16>>3],c[J>>2]|0);J=f+80|0;c[J>>2]=c[w>>2];c[J+4>>2]=c[w+4>>2];c[J+8>>2]=c[w+8>>2];c[J+12>>2]=c[w+12>>2];c[J+16>>2]=c[w+16>>2];c[J+20>>2]=c[w+20>>2];c[J+24>>2]=c[w+24>>2];c[J+28>>2]=c[w+28>>2];c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];$E(x,u);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];$E(x,u);if(!(c[r>>2]|0))c[r>>2]=106;break}case 10:{e=c[f+16>>2]|0;g=+h[f+8>>3];break}case 15:{d=c[f+8>>2]|0;break}default:{}}f=f+120|0;i=i+1|0}c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}l=D;return}function $E(a,b){a=a|0;b=b|0;var c=0.0,d=0;c=+h[b>>3];d=a+16|0;if(c>+h[d>>3])h[d>>3]=c;if(c<+h[a>>3])h[a>>3]=c;c=+h[b+8>>3];b=a+24|0;if(c>+h[b>>3])h[b>>3]=c;b=a+8|0;if(c<+h[b>>3])h[b>>3]=c;return}function aF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;k=r+32|0;n=r;f=+h[b>>3];o=n+16|0;h[o>>3]=f;h[n>>3]=f;f=+h[b+8>>3];p=n+24|0;h[p>>3]=f;m=n+8|0;h[m>>3]=f;j=1;while(1){if((j|0)>=(d|0))break;i=b+24|0;f=+h[i>>3];if(!(f<+h[n>>3])){if(f>+h[o>>3]){g=o;q=5}}else{g=n;q=5}if((q|0)==5){q=0;h[g>>3]=f}f=+h[b+32>>3];if(!(f<+h[m>>3])){if(f>+h[p>>3]){b=o;q=8}}else{b=n;q=8}if((q|0)==8){q=0;h[b+8>>3]=f}j=j+1|0;b=i}c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];$E(e,k);c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];$E(e,k);c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];l=r;return}function bF(b,c,d,e){b=b|0;c=+c;d=+d;e=e|0;var f=0.0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+16|0;i=n+8|0;j=n;f=+h[e+32>>3];k=+h[e+40>>3];switch(a[e+48>>0]|0){case 108:{h[i>>3]=c;f=f+c;g=j;m=5;break}case 110:{f=f*.5;h[i>>3]=c-f;f=f+c;g=j;m=5;break}case 114:{h[j>>3]=c;f=c-f;g=i;m=5;break}default:{c=0.0;f=0.0}}if((m|0)==5){h[g>>3]=f;c=+h[i>>3];f=+h[j>>3]}d=+h[e+16>>3]+d;h[b>>3]=c;h[b+8>>3]=d-k;h[b+16>>3]=f;h[b+24>>3]=d;l=n;return}function cF(a){a=a|0;if((c[a>>2]|0)==7)mH(c[a+112>>2]|0,1);return}function dF(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[46369]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;cP(b,NL(d,nx(d,0,98496,0)|0,191979)|0);c[b+160>>2]=0;eF(b,d);if(j&2|0)fF(b,d);e=Sy(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=Ty(d,e)|0}gF(b,k);while(1){if(!((hF(b)|0)<<24>>24))break;if((iF(b)|0)>1)DO(b);jF(b);while(1){if(!((kF(b)|0)<<24>>24))break;lF(b,d);mF(b)}if((iF(b)|0)>1)EO(b);nF(b,k)}oF(b);l=m;return}function eF(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);zO(a,b);return}function fF(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;WO(b,131718);d=xx(c,137895)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(c,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);zG(b,c);g=Sy(c)|0;while(1){if(!g)break;d=xx(g,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(g,134647)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(g,98392)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(g,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Ex(c,g)|0;while(1){if(!f)break;d=xx(f,137741)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(f,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Gx(c,f)|0}g=Ty(c,g)|0}return}function gF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];Pw(0,97541,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];Pw(0,97541,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function hF(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function iF(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function jF(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function kF(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function lF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{Tw(m,128,f);g=n+212|0;h=c[g>>2]|0;RE(d,m);Ww(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){Uw(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}qQ(xx(e,97006)|0);qF(d);BO(d);UO(d,134232);WO(d,131718);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=uH((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){WG(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))yO(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];XE(d,k);PO(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);rF(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)oH(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;QO(d)}while(0);sF(d,e,o);CO(d);if(h|0){Xw(m);c[n+212>>2]=h}l=p;return}function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];pF(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((kF(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];pF(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function nF(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function oF(a){a=a|0;AO(a);OE(a);return}function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function qF(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];yG(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];yG(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[46369])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[46369]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function rF(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=xx(d,137895)|0;if(!e){j=1;e=134116}else{i=(a[e>>0]|0)==0;j=i&1;e=i?134116:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(b$(e,134297)|0)==0;k=m?134116:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(b$(e,134297)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((uG(k,o,p)|0)<<24>>24)){WO(b,k);UO(b,134297);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];$O(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;WO(b,i);UO(b,134297);tG(d,r)|0;e=c[o+4>>2]|0;h=KL(d,c[46373]|0,0,0)|0;f=+g[p>>2];if(!e)XO(b,134232,h,f);else XO(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];$O(b,q,r);D_(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)wG(b,e);l=s;return}function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)tF(a,b,d);a:do if(!(d&1)){if(d&16|0){JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a);HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);break}if(!(d&8)){f=Sy(b)|0;while(1){if(!f)break a;uF(a,f);e=Ex(b,f)|0;while(1){if(!e)break;uF(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}}HO(a);e=Sy(b)|0;while(1){if(!e)break;if((wF(b,e)|0)<<24>>24)uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if((xF(b,e)|0)<<24>>24)vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}else{HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}while(0);if(g)tF(a,b,d);return}function tF(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((rG(e,u)|0)<<24>>24){if(L)tF(e,u,i);sG(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;qQ(xx(u,97006)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=tG(u,H)|0;if(!j)p=0;else{YO(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=OL(u,0,103230)|0;k=OL(u,0,103238)|0;O=29;break}if(j&8|0){j=OL(u,0,103246)|0;k=OL(u,0,103254)|0;O=29;break}if(j&4|0){j=OL(u,0,103262)|0;k=OL(u,0,103270)|0;O=29;break}j=xx(u,137741)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=xx(u,134647)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=xx(u,98392)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=xx(u,137895)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=OL(u,0,103214)|0;k=OL(u,0,103222)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;O=31}if((O|0)==31){O=0;if(!((uG(n,J,w)|0)<<24>>24)){WO(e,n);k=1}else{WO(e,c[J>>2]|0);k=c[G>>2]|0;m=KL(u,c[46373]|0,0,0)|0;o=+g[w>>2];if(!k)XO(e,134232,m,o);else XO(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[46372]|0;if((m|0?(z=yx(u,m)|0,z|0):0)?a[z>>0]|0:0)fP(e,+LL(u,c[46372]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=KL(u,c[46371]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)UO(e,134297);else UO(e,j);EJ(e,I,4,p,k)}}else{if(!(p&64)){if(KL(u,c[46371]|0,1,0)|0){UO(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}if(!k)break;UO(e,134297);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(KL(u,c[46371]|0,1,0)|0))UO(e,134297);else UO(e,j);if((WE(e,I,n,0)|0)>1){c[N>>2]=ry(u)|0;Pw(3,97374,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,0)}while(0);D_(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)oH(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}QO(e)}a:do if(!F){k=Sy(u)|0;while(1){if(!k)break a;uF(e,k);j=Ex(u,k)|0;while(1){if(!j)break;vF(e,j);j=Gx(u,j)|0}k=Ty(u,k)|0}}while(0);vG(e,f);if(!L)tF(e,u,i)}v=v+1|0}l=P;return}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(jG(b,ez(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(kG(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;cP(b,ry(d)|0);e=NL(d,c[46399]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46387]|0,191979)|0;b:do if(a[e>>0]|0){AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);lG(b,d);ub[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&63](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)oH(b,10,e);mG(b)}while(0);l=j;return}function vF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((yF(d,g)|0)<<24>>24?(f=d+-48|0,(zF(b,d)|0)<<24>>24):0){i=d+48|0;e=W_(ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=C_(e+3+(W_(ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;b0(e,ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(ey(ez(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(W_(e)|0)|0;if(i){a[g>>0]=a[138665]|0;a[g+1>>0]=a[138666]|0;a[g+2>>0]=a[138667]|0}else{a[g>>0]=a[134656]|0;a[g+1>>0]=a[134657]|0;a[g+2>>0]=a[134658]|0}p1(e,ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;cP(b,e);D_(e);e=NL(d,c[46421]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46415]|0,191979)|0;b:do if(!(a[e>>0]|0))e=0;else{AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=185144;break b}if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);BF(b,d,e);CF(b,d,e);DF(b)}while(0);l=h;return}function wF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function xF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function yF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(iG(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((VM(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(VM(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function zF(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,c[46420]|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=NL(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[46397]|0,191979)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((eG(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function AF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[97256]|0){Tw(185408,128,191746);a[97256]=0}Tw(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(cG(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;c[185144+(e<<2)>>2]=c[46353];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;Ww(185408,d)|0;d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;Pw(1,97257,k)|0;c[46286]=0;Xw(j)}else if((d|0)==9){c[m>>2]=b;Pw(1,97291,m)|0;c[46286]=0;Xw(j)}else if((d|0)==12){c[n>>2]=b;Pw(0,97319,n)|0;c[46349]=0;Xw(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;Pw(1,97342,o)|0;c[46286]=0;Xw(j);break}c[185144+(e<<2)>>2]=0;Xw(j);d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}a[d>>0]=0;c[46353]=c[46352]}while(0);l=p;return 185144}function BF(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=NE(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(RL(xx(f,97079)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)YO(d,g);g=c[46436]|0;if((g|0?(i=yx(f,g)|0,i|0):0)?a[i>>0]|0:0)fP(d,+LL(f,c[46436]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(ez(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{Tw(o,128,p);c[z+212>>2]=pH(QE(d,f,o)|0,f)|0;Xw(o);g=xx(f,137973)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=xx(f,108395)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=pH(g,f)|0;g=xx(f,97092)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=xx(f,97101)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=n1(i)|0;q=39}}while(0);if((q|0)==36){g=pH(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=xx(f,97109)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=xx(f,97119)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=n1(i)|0;q=47}}while(0);if((q|0)==44){g=pH(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=xx(f,97128)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=xx(f,97137)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=n1(i)|0}while(0);if((q|0)==52){c[z+220>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=xx(f,97145)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=xx(f,97154)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=n1(i)|0}while(0);if((q|0)==59){c[z+224>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=xx(f,138006)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=pH(g,f)|0;else i=0;g=xx(f,97162)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=pH(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=n1(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=xx(f,97173)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=pH(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=n1(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=xx(f,97185)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=pH(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=n1(i)|0;g=xx(f,97196)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=pH(g,f)|0;break}if(i)c[z+256>>2]=n1(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=xx(f,138019)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=xx(f,97207)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=n1(g)|0}while(0);if((q|0)==94){p=WF(g,f)|0;c[z+228>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=xx(f,97219)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=WF(g,f)|0;c[z+232>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=n1(r)|0;g=xx(f,97232)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=WF(g,f)|0;c[z+236>>2]=pH(r,f)|0;D_(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=n1(s)|0;g=xx(f,97244)|0;if(g|0?a[g>>0]|0:0){s=WF(g,f)|0;c[z+240>>2]=pH(s,f)|0;D_(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=n1(g)|0}while(0);D_(j);D_(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;XF(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;yO(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);NO(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))PO(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function CF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];qQ(xx(e,97006)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+LL(e,c[46418]|0,1.0,0.0);k=NL(e,c[46406]|0,191979)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(b$(i,108091)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(KF(b,e,f,k,q+1|0,N,M)|0))break;else m=134232;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=OL(e,c[46407]|0,m)|0}else{j=103270;g=103262;k=185632;i=185632;p=18}else{j=103254;g=103246;k=185632;i=185632;p=18}else{j=103238;g=103230;k=185632;i=185632;p=18}else{j=103222;g=103214;k=185632;i=185632;p=18}if((p|0)==18){i=c[i>>2]|0;i=OL(e,i,LF(m,g)|0)|0;g=OL(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{UO(b,i);j=g}}if((j|0)!=(m|0))WO(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?134232:i;g=(a[j>>0]|0)==0?134232:j;UO(b,134297);WO(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=kL(O,MF(e)|0,M,0,0)|0;_O(b,c[J+8>>2]|0,c[J>>2]|0,1);NF(J);UO(b,i);if((g|0)!=(i|0))WO(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];KE(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];KE(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){UO(b,i);WO(b,j);break}UO(b,134232);if(!(a[j>>0]|0)){WO(b,134232);break}else{WO(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){aP(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;YO(b,f)}}else aP(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=C_(A)|0;A=C_(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=C_(n)|0;c[z+(o*48|0)>>2]=m;n=C_(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];PF(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];OF(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=n1(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=k1(i,104958)|0;if(!i)break;e=(a[i>>0]|0)==0?134232:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,e);WO(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}aP(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,g);WO(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){UO(b,r);WO(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,3,K,L,N,M,g)}D_(s);g=0;while(1){if((g|0)>=(I|0))break;D_(c[z+(g*48|0)>>2]|0);D_(c[A+(g*48|0)>>2]|0);g=g+1|0}D_(z);D_(A)}while(0);l=P;return}function DF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(QO(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);PO(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);QO(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,j,11,k,i,h,e,g,d);FF(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);FF(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);OO(a);OE(a);l=x;return}function EF(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];JF(a,h)}l=j;return}function FF(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=uH((W_(j)|0)+11|0)|0;switch(e|0){case 11:{m=105198;break}case 7:{m=98557;break}case 6:{m=98567;break}default:qa(135312,96880,2730,97018)}c[o>>2]=j;c[o+4>>2]=m;Y0(n,97034,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){GF(b,d);PO(b,g,h,i,n)}oH(b,e,d);if(k|0)HF(b,d,k);if(j){if(!m){GF(b,d);PO(b,g,h,i,n)}QO(b)}D_(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function GF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;D_(c[i>>2]|0);d=uH(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function HF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(B$(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;IF(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;IF(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];bM(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];YO(b,c[(c[b>>2]|0)+336>>2]|0);UO(b,c[d+8>>2]|0);bP(b,i,3)}l=o;return}function IF(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function JF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;D_(c[j>>2]|0);d=uH(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function KF(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=TE(e,f,k)|0;if((e|0)>1){z=b+48|0;A=ez(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=ry(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(ey(A)|0)!=0;B=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?97053:97058;c[j+8>>2]=B;Pw(3,97063,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{UO(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){UF(F,n,H,E);k=c[H>>2]|0;aP(a,k,c[t>>2]|0,0,0,0);D_(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];UF(G,n/(m+n),H,E);D_(c[G>>2]|0);f=c[H>>2]|0;aP(a,f,c[t>>2]|0,0,0,0);D_(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;D_(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;aP(a,o,c[A>>2]|0,0,0,0);D_(o)}if(c[u>>2]|0){UO(a,c[c[s>>2]>>2]|0);WO(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,2,C,D,h,i,o)}if(c[v>>2]|0){UO(a,e);WO(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;YO(a,d)}while(0);p=p+1|0}UE(r);e=0}l=J;return e|0}function LF(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((W_(d)|0)+1|0,e)|0;b=f+10|0;if((c[46350]|0)<(f|0)){c[46350]=b;b=F_(c[46351]|0,b)|0;c[46351]=b}else b=c[46351]|0;b0(b,d)|0;while(1){e=e+-1|0;b=c[46351]|0;if(!e)break;f=b+(W_(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;p1(b,d)|0}return b|0}function MF(b){b=b|0;var d=0,e=0;d=c[46414]|0;a:do if(!d)e=7;else{d=yx(b,d)|0;switch(a[d>>0]|0){case 110:if(!(b$(d,132627)|0)){d=1;break a}else{e=7;break a}case 102:if(!(b$(d,97040)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(b$(d,97048)|0)){d=3;break a}if(!(b$(d,108195)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(ey(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function NF(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function OF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function PF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function QF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function RF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function SF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function TF(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function UF(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=uH(64)|0;c[e+4>>2]=4;n=uH(64)|0;c[e>>2]=n;XL(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=uH(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+VF(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=uH(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=uH(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];XL(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);D_(n)}l=p;return}function VF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function WF(b,d){b=b|0;d=d|0;d=fz(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=RM(b)|0;else d=OM(b,d)|0;return bG(d)|0}function XF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=vH(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=YF(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;ZF(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}_F(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;D_(g);h=s;g=s}l=q;return}function YF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(ZE(a)|0)){XL(f,a,3,.5,d,e);d=YF(e,YF(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=aG(f,b)|0}l=g;return d|0}function ZF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+$F(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function _F(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=xH(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=xH(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function $F(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function aG(a,b){a=a|0;b=b|0;var d=0;d=vH(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function bG(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function cG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(B$(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((dG(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function dG(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function eG(a,b){a=a|0;b=b|0;return fG(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function fG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;Tw(n,128,o+24|0);Ww(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){Uw(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=m1(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=m1(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=m1(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=gG(b,g,0)|0;f=gG(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(gG(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}Xw(n);l=o;return f|0}function gG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(b$(d,97370)|0)==0:0))f=3;a:do if((f|0)==3){if((hG(d)|0)<<24>>24){e=a2(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(b$(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function hG(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function iG(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function jG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=NL(e,c[46397]|0,191979)|0,(eG(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Jx(d,e)|0))f=1;else{f=Jx(d,e)|0;while(1){if(!f){f=0;break a}g=NL(f,c[46420]|0,191979)|0;if(!(a[g>>0]|0)){f=1;break a}if((eG(b,g)|0)<<24>>24){f=1;break a}f=Kx(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function kG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(iG(f,e)|0)&255;l=d;return b|0}function lG(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=NE(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(ez(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;nG(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=HJ(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=oG(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((pG(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=xx(d,99679)|0;if(!g)g=0;else g=a2(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=uH(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=qG(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=uH(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=uH(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))yO(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);qQ(xx(d,97006)|0);LO(a,d);return}function mG(a){a=a|0;MO(a);OE(a);return}function nG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=xx(e,137973)|0;i=xx(e,138019)|0;k=xx(e,138006)|0;Tw(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=xx(e,108395)|0;g=QE(b,e,j)|0;if(!i)d=0;else d=WF(i,e)|0;PE(b,h,f,d,k,g,e)|0;D_(d);Xw(j);l=m;return}function oG(b){b=b|0;var d=0,e=0;b=OL(b,c[46387]|0,191979)|0;a:do if(!(a[b>>0]|0))b=0;else{AF(b)|0;b=0;d=185144;while(1){e=c[d>>2]|0;if(!e)break a;e=(b$(e,108075)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function pG(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function qG(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=uH(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function rG(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,nx(d,0,98484,0)|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=Sy(d)|0;while(1){if(!e){e=0;break a}if((jG(b,d,e)|0)<<24>>24){e=1;break a}e=Ty(d,e)|0}}else e=0;else e=1;while(0);return e|0}function sG(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);FO(a,b);return}function tG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=xx(b,138e3)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){AF(b)|0;e=185144;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=185144;break a}if(!(b$(f,108075)|0)){g=10;break}if(!(b$(f,103308)|0)){f=e;g=12;break}if(!(b$(f,103315)|0)){f=e;g=14;break}if(!(b$(f,103290)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=(TE(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)Pw(0,97389,i)|0;m=vH((W_(b)|0)+1|0)|0;c[d>>2]=m;b0(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((W_(m)|0)+1)|0;c[d+4>>2]=m;b0(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);UE(j);b=1}else{c[d>>2]=0;UE(j);b=0}l=k;return b|0}function vG(a,b){a=a|0;b=b|0;GO(a,b);OE(a);return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=vH(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];ZO(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;_O(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;aP(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;bP(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];TO(a,p,d);d=j}break}case 8:{WO(a,c[r+8>>2]|0);d=1;break}case 9:{UO(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);WO(a,c[z+4>>2]|0);XO(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);WO(a,j);XO(a,n,d,o);d=3;break}case 14:{Pw(0,97455,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{Pw(0,97495,w)|0;e=0;d=j}break}case 11:{AF(c[r+8>>2]|0)|0;YO(a,185144);i=185144;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)YO(a,c[(c[a>>2]|0)+336>>2]|0);D_(f);l=x;return}function xG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=xH(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function yG(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function zG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;zG(b,e);d=xx(e,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,134647)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,137895)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,98392)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(e,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=f+1|0}return}function AG(a){a=a|0;var b=0,d=0,e=0;b=c[46356]|0;if(!b){b=Cw(20524,c[4555]|0)|0;c[46356]=b}if(!(nb[c[b>>2]&63](b,a,4)|0)){d=c[46356]|0;e=c[d>>2]|0;b=n1(a)|0;nb[e&63](d,b,1)|0;b=1}else b=0;return b|0}function BG(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CG(a){a=a|0;var b=0;b=c[46357]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[46357]=b,(b|0)==0):0){J0(1,c[46358]|0)|0;D_(c[46358]|0)}}else{c[46357]=b+1;if(!b){c[46358]=n1(J0(1,0)|0)|0;J0(1,150481)|0}}return}function DG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)EL();do if((Az(b,134401,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){EG(b);FG(a,b);GG(a,b);CG(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=pC(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=25660;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=uO(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=HG(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(b$(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[46359]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}wO(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[46359]=0;g=27}if((g|0)==27?(g=0,(vO(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=25772;IG(i);JG(i);KG(i,b);LG(i,b);MG(i,b);if(!(c[f>>2]&128))dF(i,b);c[46359]=i}i=qC(a)|0}if((g|0)==13){Pw(1,97653,s)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;s=ry(b)|0;v=+FL();c[t>>2]=s;h[t+8>>3]=v;g1(d,97624,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];Pw(1,97674,p)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[q>>2]=t;h[q+8>>3]=v;g1(d,97624,q)|0;d=-1;break}else if((g|0)==33){CG(0);if(!0){d=0;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[r>>2]=t;h[r+8>>3]=v;g1(d,97624,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){Pw(1,97576,d)|0;if(!0)d=-1;else{d=c[15686]|0;t=ry(b)|0;v=+FL();c[e>>2]=t;h[e+8>>3]=v;g1(d,97624,e)|0;d=-1}}l=u;return d|0}function EG(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;RG(a,b);b=Ty(a,b)|0}return}function FG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=xx(d,102470)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=N1(e,102477,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=xx(d,98076)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=N1(e,102477,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=98080;f=xx(d,98083)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[46371]=nx(d,0,98446,0)|0;c[46372]=nx(d,0,98437,0)|0;c[b+320>>2]=OL(0,c[46381]|0,104968)|0;h[b+328>>3]=+LL(0,c[46380]|0,14.0,1.0);c[b+336>>2]=20560;c[b+188>>2]=ry(d)|0;l=o;return}function GG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){D_(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){D_(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){D_(e);c[g>>2]=0}e=xx(d,97827)|0;if(e){c[b+312>>2]=PG(b,d,e)|0;e=xx(d,97834)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=QG(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function HG(b){b=b|0;b=xx(b,97795)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(b$(b+1|0,97807)|0))b=1;else{b=0;break a}break}case 101:{if(!(b$(b+1|0,97817)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function IG(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function JG(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function KG(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function LG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(i<e|k<f)?!(k>f&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e<k/f;i=(n?i:k)/(n?e:f);h[x>>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=xx(d,97726)|0;if(g){m=C_((W_(g)|0)+1|0)|0;n=C_((W_(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((N1(g,97735,s)|0)==4){g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((N1(g,97755,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;N1(g,97775,t)|0;break}g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);D_(m);D_(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function MG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]<i?I:E)>>3];h[I>>3]=o;e=p;f=I;m=+h[(g<k?I:E)+8>>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i<g){h[e>>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k<m){f=E;j=21}else{r=e;m=k}}if((j|0)==21){h[f+8>>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;OG(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;OG(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){OG(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;OG(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];Pw(0,97706,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];NG(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];NG(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];NG(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];yG(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];yG(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function NG(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function OG(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function PG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=xx(d,97947)|0;i=b+296|0;c[i>>2]=(f|0)==0?97956:f;d=xx(d,97960)|0;f=b+300|0;d=(d|0)==0?97973:d;c[f>>2]=d;d=q1(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];Pw(0,97975,g)|0;c[f>>2]=191979}d=n1(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=k1(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=vH(f<<2)|0;else d=xH(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=xH(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function QG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=vH((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((fG(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;Pw(0,97846,j)|0;D_(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function RG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Ex(a,b)|0;while(1){if(!b)break;SG(b);b=Gx(a,b)|0}return}function SG(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)TG(a);return}function TG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)qa(98114,96880,3994,98128);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function UG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)qa(98144,96880,3968,98156);if(((k>>>0)%3|0|0)!=1)qa(98166,96880,3969,98156);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]<r?j:i)>>3];h[j>>3]=o;s=+h[(+h[f>>3]<p?j:i)+8>>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o<q?j:i)>>3];o=+h[e>>3];h[f>>3]=+h[(s<o?j:i)+8>>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function VG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q<e;g=l?q:e;e=l?e:q;f=(r-q)*o+p;m=+h[c+8>>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p<j;g=l?p:j;f=l?j:p;e=(m-p)/o+q;if(e>=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function WG(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[46360]|0)!=(d|0)){w$(+(d|0)*.15915494309189535,183248,183256);c[46360]=d}g=+h[b>>3];e=+h[22907];f=+h[b+8>>3];i=+h[22906];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function YG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function _G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function $G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g+8|0;e=g;a=xx(a,b)|0;if(a|0?(c[f>>2]=e,(N1(a,98183,f)|0)>0):0)h[d>>3]=+h[e>>3];l=g;return}function bH(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=uH(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=xx(b,98187)|0;if(!e){e=Ta(98196)|0;if(e|0)k=3}else k=3;if((k|0)==3)cb(98208,e|0,1)|0;e=(cH(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=xx(b,98219)|0,c[46362]=e,(e|0)==0):0)c[46362]=c[46361];f=+LL(b,nx(b,0,98229,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=xx(b,98237)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(b$(e,98245)|0)){e=1;break a}break}case 66:{if(!(b$(e,98248)|0)){e=2;break a}break}case 82:{e=(b$(e,98251)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+LL(b,nx(b,0,98254,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=NL(b,nx(b,0,98262,0)|0,0)|0;if(e){c[g>>2]=i;if(N1(e,98183,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(P0(e,98270)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(KL(b,nx(b,0,98278,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=aM(NL(b,nx(b,0,98288,0)|0,0)|0,20572,20588)|0;c[(c[m>>2]|0)+244>>2]=i;dH(b);i=eH(b,98298,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;eH(b,98303,e+48|0)|0;e=QL(xx(b,98308)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=xx(b,98315)|0;do if(!e){e=xx(b,98322)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=xx(b,98334)|0;if(e|0){e=QL(e)|0;k=27}}else{e=(a2(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[46364]=aM(xx(b,98344)|0,20604,20620)|0;a[191874]=QL(xx(b,98356)|0)|0;c[46367]=0;c[46368]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=xx(b,98368)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=xx(b,98372)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+b2(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}fH(b);h[22910]=1.e+37;c[46370]=nx(b,0,98383,0)|0;c[46373]=nx(b,0,137952,0)|0;c[46374]=nx(b,0,102470,0)|0;c[46375]=nx(b,1,137966,0)|0;c[46376]=nx(b,1,138034,0)|0;c[46377]=nx(b,1,105204,0)|0;c[46378]=nx(b,1,137741,0)|0;c[46379]=nx(b,1,98392,0)|0;c[46387]=nx(b,1,138e3,0)|0;c[46380]=nx(b,1,98402,0)|0;c[46381]=nx(b,1,98411,0)|0;c[46382]=nx(b,1,98420,0)|0;k=nx(b,1,105198,0)|0;c[46384]=k;if(!k)c[46384]=nx(b,1,105198,102467)|0;c[46385]=nx(b,1,98430,0)|0;c[46388]=nx(b,1,98278,0)|0;c[46402]=nx(b,1,98437,0)|0;c[46391]=nx(b,1,98383,0)|0;c[46383]=nx(b,1,102470,0)|0;c[46389]=nx(b,1,137994,0)|0;c[46390]=nx(b,1,98446,0)|0;c[46393]=nx(b,1,98458,0)|0;c[46392]=nx(b,1,98322,0)|0;c[46394]=nx(b,1,98463,0)|0;c[46395]=nx(b,1,137942,0)|0;c[46396]=nx(b,1,134215,0)|0;c[46386]=nx(b,1,98474,0)|0;c[46397]=nx(b,1,98484,0)|0;c[46398]=nx(b,1,98490,0)|0;c[46399]=nx(b,1,98496,0)|0;c[46400]=nx(b,1,98504,0)|0;c[46401]=nx(b,1,98513,0)|0;c[46403]=nx(b,1,137952,0)|0;c[46404]=nx(b,2,98515,0)|0;c[46406]=nx(b,2,137741,0)|0;c[46407]=nx(b,2,98392,0)|0;c[46409]=nx(b,2,98402,0)|0;c[46410]=nx(b,2,98411,0)|0;c[46411]=nx(b,2,98420,0)|0;c[46412]=nx(b,2,105198,0)|0;c[46413]=nx(b,2,98430,0)|0;c[46422]=nx(b,2,98522,0)|0;c[46414]=nx(b,2,98533,0)|0;c[46425]=nx(b,2,98537,0)|0;c[46426]=nx(b,2,98547,0)|0;c[46427]=nx(b,2,98557,0)|0;c[46428]=nx(b,2,98567,0)|0;c[46429]=nx(b,2,98577,0)|0;c[46430]=nx(b,2,98591,0)|0;c[46431]=nx(b,2,98605,0)|0;c[46432]=nx(b,2,98620,0)|0;c[46433]=nx(b,2,98634,0)|0;c[46405]=nx(b,2,98645,0)|0;c[46417]=nx(b,2,98278,0)|0;c[46415]=nx(b,2,138e3,0)|0;c[46416]=nx(b,2,98652,0)|0;c[46418]=nx(b,2,98661,0)|0;c[46419]=nx(b,2,98671,0)|0;c[46420]=nx(b,2,98484,0)|0;c[46421]=nx(b,2,98496,0)|0;c[46434]=nx(b,2,98682,0)|0;c[46435]=nx(b,2,98691,0)|0;c[46436]=nx(b,2,98437,0)|0;e=ME(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=xx(b,137978)|0;if(e|0?a[e>>0]|0:0){b=pH(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function cH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=OL(a,nx(a,0,98781,0)|0,98789)|0;if(((((((O$(a,98795)|0)!=0?(O$(a,98803)|0)!=0:0)?(O$(a,98810)|0)!=0:0)?(O$(a,98813)|0)!=0:0)?(O$(a,98824)|0)!=0:0)?(O$(a,98835)|0)!=0:0)?(O$(a,98845)|0)!=0:0)if((O$(a,98856)|0)!=0?(O$(a,98862)|0)!=0:0)if((O$(a,98789)|0)!=0?(O$(a,98867)|0)!=0:0){c[b>>2]=a;Pw(0,98872,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function dH(b){b=b|0;var d=0.0,e=0,f=0;e=xx(b,98739)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(b$(e,98745)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(e,98750)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(b$(e,98759)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(b$(e,98766)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+b2(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function eH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=xx(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(N1(b,98723,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(N1(b,98733,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function fH(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=xx(b,105198)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(Rz(d)|0)!=0;g=+LL(b,nx(b,0,98402,0)|0,14.0,1.0);i=OL(b,nx(b,0,98411,0)|0,104968)|0;d=kH(b,d,e?2:0,g,i,OL(b,nx(b,0,98420,0)|0,134232)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=xx(b,102602)|0;e=(d|0)!=0;do if((fz(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=xx(b,98700)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((fz(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function gH(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){pE(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}D_(c[b+92>>2]|0);b=c[e>>2]|0}while(0);D_(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;nH(c[e+12>>2]|0);Gz(a,0,134401);return}function hH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;switch(a|0){case 0:{a=98945;break}case 1:{a=98813;break}case 2:{a=98951;break}default:{c[b>>2]=a;Pw(1,98915,b)|0;a=98945}}l=d;return a|0}function iH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=vH((W_(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;jH(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;jH(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;jH(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function jH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=uH((k*56|0)+112|0)|0;else n=wH(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[45824]=c[e+4>>2];h[22914]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=nb[c[g>>2]&63](g,183296,1)|0;wL(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function kH(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=uH(88)|0;switch(pz(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=fz(ez(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=fz(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=n1(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=n1(e)|0;a[t+82>>0]=1;if(!(kR(b,t)|0))break a;switch(pz(b)|0){case 0:{c[p>>2]=ry(n)|0;Pw(3,98957,p)|0;break a}case 1:{c[q>>2]=ry(o)|0;Pw(3,98979,q)|0;break a}case 2:{p=ry(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(ey(s)|0)!=0;s=ry(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?134656:138665;c[r+8>>2]=s;Pw(3,99e3,r)|0;break a}default:break a}}case 0:{i=lH(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=RM(i)|0;else i=OM(i,s)|0;D_(c[t>>2]|0);c[t>>2]=i;iH(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:qa(99027,99043,166,99052)}while(0);l=u;return t|0}function lH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(pz(d)|0){case 0:{i=ry(d)|0;g=W_(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 1:{i=ry(ez(d)|0)|0;g=W_(i)|0;j=ry(d)|0;h=W_(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 2:{h=d+48|0;i=ry(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=W_(i)|0;l=ry(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=W_(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=W_(q)|0;m=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=W_(o)|0;j=W_(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=W_(f)|0}else{n=2;f=99063}x=(ey(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=102467;w=f;x=x?138665:134656;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=99075;m=99072;j=102467;i=99066;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=vH(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)D_(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)tb[f&127](g);d=d+56|0;e=e+1|0}D_(a)}return}function nH(d){d=d|0;var e=0;if(d|0){D_(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)XQ(e,1)}else mH(c[e>>2]|0,b[d+76>>1]|0);D_(d)}return}function oH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){RO(d,0);UO(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];TO(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}SO(d);i=18}}else{CQ(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function pH(a,b){a=a|0;b=b|0;return lH(a,b,1)|0}function qH(a){a=a|0;return rH(a,0)|0}function rH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[46437]|0;if(!e){c[46438]=64;e=vH(64)|0;c[46437]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[46438]|0;if((i|0)>(b+-8|0)){e=b<<1;c[46438]=e;e=xH(c[46437]|0,e)|0;c[46437]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(sH(h)|0)!=0:0)k=18;else{f=5;d=99104}break}case 60:{f=4;d=99127;break}case 62:{f=4;d=99110;break}case 45:{f=5;d=99121;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=99097;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=99090;break a}case 39:{f=5;d=99115;break a}case 10:if(j){k=18;break a}else{f=5;d=99084;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:99078}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[46437]|0}function sH(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function tH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[46439]|0;if(!d){c[46440]=64;d=vH(64)|0;c[46439]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[46440]|0;if((i|0)>(f+-8|0)){d=f<<1;c[46440]=d;d=xH(c[46439]|0,d)|0;c[46439]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(sH(b)|0)){g=5;e=99104}else j=12;break}case 60:{g=4;e=99127;break}case 62:{g=4;e=99110;break}case 34:{g=6;e=99090;break}case 39:{g=5;e=99115;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[46439]|0}function uH(a){a=a|0;var b=0;if(!a)a=0;else{b=vH(a)|0;H3(b|0,0,a|0)|0;a=b}return a|0}function vH(a){a=a|0;if(a){a=C_(a)|0;if(!a){E1(108658,14,1,c[15686]|0)|0;a=0}}else a=0;return a|0}function wH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=F_(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)H3(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else E1(108658,14,1,c[15686]|0)|0;return a|0}function xH(a,b){a=a|0;b=b|0;a=F_(a,b)|0;if((b|0)!=0&(a|0)==0)E1(108658,14,1,c[15686]|0)|0;return a|0}\n  function ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=pl(xx(a,87703)|0,b)|0;q=pl(xx(a,87709)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=ry(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=ry(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;Pw(0,87715,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=vH(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(ql(H,h)|0)){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;Pw(0,87756,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(ql(H,h)|0){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;Pw(0,87799,n)|0;K=26;break}if(!(c[C>>2]|0))qa(87841,87852,369,87863);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];rl(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(FE(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(tl((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];rl(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else qa(87880,87852,387,87863);else{if(f)b=FE(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(ql(H,f)|0)){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;Pw(0,87891,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(ql(H,f)|0){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;Pw(0,87934,x)|0;K=52;break}if(!(c[v>>2]|0))qa(87880,87852,429,87863);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];rl(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(tl(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))qa(87841,87852,452,87863);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];rl(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=vH(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}D_(c[I>>2]|0);D_(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function pl(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=vM(d,b)|0;if(!d){c[e>>2]=b;Pw(0,88054,e)|0;d=0}}else d=0;l=f;return d|0}function ql(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function rl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s<k?(f=r+ +(~~((k-q)*(r-t)/(q-s))|0),f>=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t<f?(m=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(m>=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=yl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=yl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=yl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=yl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;Pw(1,87976,B)|0;qa(135312,87852,78,88028)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function tl(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+ul(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)XL(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+ul(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}f=+vl(a,0.0,d>1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}f=+vl(a,0.0,d>1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}l=m;return d<2.0|0}function ul(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(xl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+48>>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+ul(j,b,g,d,e,f);if(!(b>=0.0))b=+ul(k,g,c,d,e,f)}while(0);l=m;return +b}function vl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(wl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+vl(j,b,g,d,e,f);if(!(b>=0.0))b=+vl(k,g,c,d,e,f)}while(0);l=m;return +b}function wl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function xl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;Y0(b,88042,d)|0;l=c;return b|0}function zl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=C_(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(20,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(65,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(21,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(66,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=D3(183936,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;ca(20,3,88082,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;ia(99,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);D_(t|0);l=v;return}function Al(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function Bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((Al(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Cl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ph(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ph(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}sh(a,o);l=l+1|0}if((r|0)==23)qa(88218,88262,115,88269);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function Dl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((Dl(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Fl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}xj(d);j=Sy(d)|0;while(1){if(!j)break;Gl(d,j);i=Ex(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;Gl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Gx(d,i)|0}j=Ty(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(oz(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(oz(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(oz(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=ry(d)|0;c[p+4>>2]=i;Pw(0,88182,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=ry(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;Pw(1,88124,o)|0;bb(183936,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;Fl(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function Hl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function Il(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;Jl(j,k+512|0,k);e=(a[190690]|0)+1<<24>>24;a[190690]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=Sy(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(SL(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[190690]|0)):0){Kl(b);Ll(j,b,g);Ml(b)}d=Ty(b,d)|0}Nl(j);l=k;return}function Jl(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function Kl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[46023]=0;return}function Ll(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;Ol(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Pl(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[190690]|0))continue;Ql(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[190690]|0)?(e|0)==(SL(e)|0):0)Ol(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=vH(a<<2)|0;else a=xH(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function Nl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Ol(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=uH(16)|0;if(!f)Pw(1,95943,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=uH(4e6)|0;c[f>>2]=b;if(!b){Pw(1,88282,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[190690]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Pl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Ql(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[190690]|0;b=c[46023]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[46023]=d;c[g+164>>2]=0;return}function Rl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Sl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Sl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}Tl(b)}while(0);Ji(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Ul(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Ul(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){Ch(b);Qh(b)}return e|0}function Sl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(ig(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function Tl(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)qa(88339,88322,190,88358);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=vH(d<<6)|0;else a=xH(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=uH(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Ul(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=ig(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Vl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Wl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ph(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ph(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]<f)h[e>>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]<f)h[d>>3]=f;c[g+112>>2]=b}return}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Xl(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Yl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Yl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=vH((c[e>>2]<<2)+8|0)|0;else f=xH(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=uh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Yl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)qa(88302,88322,63,88329);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Xl(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Zl(a){a=a|0;c[46363]=1;rm(a);c[46363]=0;return}function _l(a){a=a|0;c[46363]=2;rm(a);c[46363]=0;return}function $l(a){a=a|0;var b=0;Az(a,134365,304,1)|0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function am(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+64|0;j=s+48|0;o=s+40|0;k=s+24|0;i=s+8|0;q=s+56|0;m=s;do if((b|0)!=0?(r=e+16|0,p=c[(c[r>>2]|0)+132>>2]|0,g=yx(e,b)|0,(a[g>>0]|0)!=0):0){a[q>>0]=0;b=p+8|0;if((c[46366]|0)>2?(c[i>>2]=p,c[i+4>>2]=b,c[i+8>>2]=p+16,c[i+12>>2]=q,(N1(g,88435,i)|0)>2):0){a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;a:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break a;o=p+(b<<3)|0;h[o>>3]=+h[o>>3]/+h[22908];b=b+1|0}}while(0);if((g|0)>3)Hn(e,f,3);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1;break}c[k>>2]=p;c[k+4>>2]=b;c[k+8>>2]=q;if((N1(g,98723,k)|0)<=1){c[j>>2]=ry(e)|0;c[j+4>>2]=g;Pw(1,88449,j)|0;b=0;break}a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break b;k=p+(b<<3)|0;h[k>>3]=+h[k>>3]/+h[22908];b=b+1|0}}while(0);do if((g|0)>2){b=c[46401]|0;if((b|0?(n=yx(e,b)|0,n|0):0)?(c[o>>2]=m,(N1(n,98183,o)|0)==1):0){u=+h[22908];t=+h[m>>3];h[p+16>>3]=u>0.0?t/u:t;Hn(e,f,3);break}In(e,f)}while(0);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1}else b=0;while(0);l=s;return b|0}function bm(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}cm(a);return}function cm(a){a=a|0;if((c[46363]|0)!=0|(c[46025]|0)<0)Fn(a);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function dm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;m=q+32|0;o=q;k=nx(b,0,99611,0)|0;e=nx(b,0,99645,0)|0;p=(RL(xx(b,88493)|0,0)|0)<<24>>24!=0;if(!e)e=nx(b,0,99645,191979)|0;En(b)|0;n=b+16|0;i=0;while(1){j=c[(c[(c[n>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!j){f=12;break}g=j+16|0;f=c[g>>2]|0;if(!(a[f+119>>0]|0)){if(z$(ry(j)|0,104980,7)|0){f=8;break}f=c[g>>2]|0}f=c[f+108>>2]|0;if(f|0)em(j,f,99607);i=i+1|0}a:do if((f|0)==8){p=ry(j)|0;e=ry(b)|0;c[m>>2]=p;c[m+4>>2]=e;Pw(1,88505,m)|0;e=-1}else if((f|0)==12){fm(b,k,e);j=gm(b)|0;e=c[(c[n>>2]|0)+8>>2]|0;if(!(c[e+88>>2]|0))e=0;else{c[e+84>>2]=0;e=1}g=(d|0)!=0;i=(e|0)!=0;if(!(i|g&(c[46363]|0)==1^1)?(tq(b)|0)!=0:0){f=c[(c[n>>2]|0)+12>>2]|0;if(!f)f=1;else{a[f+81>>0]=0;f=1}}else f=0;mM(b);if(i){d=(c[n>>2]|0)+16|0;_E(o,b);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];c[d+16>>2]=c[o+16>>2];c[d+20>>2]=c[o+20>>2];c[d+24>>2]=c[o+24>>2];c[d+28>>2]=c[o+28>>2]}if(!g){c[46367]=1;f=Sy(b)|0;while(1){if(!f)break a;p=c[f+16>>2]|0;o=c[p+132>>2]|0;h[p+16>>3]=+h[o>>3]*72.0;h[p+24>>3]=+h[o+8>>3]*72.0;f=Ty(b,f)|0}}do if(!(p|i)){p=c[n>>2]|0;if(!(+h[p+16>>3]!=0.0)?!(+h[p+24>>3]!=0.0):0)break;cn(b)}while(0);if(!((j|0)!=0&(f|(an(b)|0)<<24>>24!=0))){if((j|0)==2){c[46367]=1;break}}else hm(b);$m(b,0)}while(0);l=q;return e|0}function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;j=k+32|0;f=k+24|0;g=k+16|0;i=k;b=xx(b,e)|0;if(b|0?(c[j>>2]=f,c[j+4>>2]=g,(N1(b,102477,j)|0)==2):0){j=d+56|0;km(i,+h[f>>3],+h[g>>3]);c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];a[d+81>>0]=1}l=k;return}function fm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+32|0;f=m+24|0;g=m+16|0;i=m;j=b+16|0;if((d|0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0)?(n=yx(b,d)|0,c[k>>2]=f,c[k+4>>2]=g,(N1(n,102477,k)|0)==2):0){n=(c[(c[j>>2]|0)+12>>2]|0)+56|0;km(i,+h[f>>3],+h[g>>3]);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1}a:do if(e|0){f=wA(b)|0;while(1){if(!f)break a;lm(f,b,d,e);f=xA(f)|0}}while(0);l=m;return}function gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(by(a)|0){f=nx(a,2,99597,0)|0;if(!((f|0)==0|(c[46363]|0)<2)){b=0;e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=b+((im(f,d)|0)!=0&1)|0;d=Gx(a,d)|0;b=g}e=Ty(a,e)|0}if(b){b=(b|0)==(by(a)|0);b=b?2:1}else b=0}else b=0}else b=2;return b|0}function hm(a){a=a|0;var b=0,d=0,e=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;KM(b);e=b+16|0;nH(c[(c[e>>2]|0)+96>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);nH(c[(c[e>>2]|0)+100>>2]|0);nH(c[(c[e>>2]|0)+104>>2]|0);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function im(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=l;l=l+96|0;z=B+72|0;x=B+56|0;A=B+48|0;y=B+32|0;w=B+16|0;r=B+88|0;s=B+8|0;t=B;u=B+84|0;v=B+80|0;b=yx(d,b)|0;do if(a[b>>0]|0){sE(d,u,v);q=1;f=0;e=0;j=0.0;i=0.0;k=0.0;g=0.0;a:while(1){c[w>>2]=s;c[w+4>>2]=t;c[w+8>>2]=r;if((N1(b,88542,w)|0)==2){p=1;b=b+(c[r>>2]|0)|0;i=+h[s>>3];g=+h[t>>3]}else p=e;c[y>>2]=s;c[y+4>>2]=t;c[y+8>>2]=r;if((N1(b,88554,y)|0)==2){o=1;b=b+(c[r>>2]|0)|0;j=+h[s>>3];k=+h[t>>3]}else o=f;m=jm(b)|0;if(!((m|0)>3&((m|0)%3|0|0)==1)){e=8;break}n=vH(m<<4)|0;e=n;f=m;while(1){if(!f)break;c[x>>2]=s;c[x+4>>2]=t;c[x+8>>2]=r;if((N1(b,88624,x)|0)<2){e=13;break a}C=b+(c[r>>2]|0)|0;h[e>>3]=+h[s>>3];h[e+8>>3]=+h[t>>3];e=e+16|0;f=f+-1|0;b=C}while(1){e=a[b>>0]|0;f=b+1|0;if(!(B$(e<<24>>24)|0))break;else b=f}C=e<<24>>24==0;b=C?b:f;q=C?0:q;f=PK(d,m)|0;if(p|0){c[f+8>>2]=c[u>>2];h[f+16>>3]=i;h[f+24>>3]=g}if(o|0){c[f+12>>2]=c[v>>2];h[f+32>>3]=j;h[f+40>>3]=k}e=0;while(1){if((e|0)>=(m|0))break;C=(c[f>>2]|0)+(e<<4)|0;D=n+(e<<4)|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];e=e+1|0}D_(n);if(!q){e=26;break}else{f=o;e=p}}if((e|0)==8){KM(d);if(a[190691]|0){b=0;break}a[190691]=1;D=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;b=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[A>>2]=D;c[A+4>>2]=b;Pw(0,88567,A)|0;b=0;break}else if((e|0)==13){if(!(a[190691]|0)){a[190691]=1;C=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;D=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[z>>2]=C;c[z+4>>2]=D;Pw(0,88634,z)|0}D_(n);KM(d);b=0;break}else if((e|0)==26){f=d+16|0;b=c[f>>2]|0;e=c[b+96>>2]|0;if(e){em(d,e,99611);b=c[f>>2]|0}e=c[b+108>>2]|0;if(e){em(d,e,99607);b=c[f>>2]|0}e=c[b+100>>2]|0;if(e){em(d,e,99614);b=c[f>>2]|0}b=c[b+104>>2]|0;if(!b){b=1;break}em(d,b,99622);b=1;break}}else b=0;while(0);l=B;return b|0}function jm(b){b=b|0;var c=0,d=0;d=0;do{while(1){c=a[b>>0]|0;if(!(B$(c&255)|0))break;else b=b+1|0}a:do if(!(c<<24>>24))c=0;else{d=d+1|0;while(1){if(!(c<<24>>24)){c=0;break a}if(c<<24>>24==59|(B$(c&255)|0)!=0)break a;c=b+1|0;b=c;c=a[c>>0]|0}}while(0)}while((B$(c&255)|0)!=0);return d|0}function km(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;if((z$(ry(a)|0,104980,7)|0)==0?(mm(a,e,f)|0)!=0:0){Az(a,134401,280,1)|0;i=(c[a+16>>2]|0)+16|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];nm(b,a);fm(a,d,e)}else g=4;a:do if((g|0)==4){a=wA(a)|0;while(1){if(!a)break a;lm(a,b,d,e);a=xA(a)|0}}while(0);l=h;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;i=l;l=l+48|0;j=i+32|0;g=i;k=yx(a,b)|0;a=g+8|0;b=g+24|0;c[j>>2]=g;c[j+4>>2]=a;c[j+8>>2]=g+16;c[j+12>>2]=b;if((N1(k,88682,j)|0)==4){e=+h[a>>3];f=+h[b>>3];if(e>f){h[a>>3]=f;h[b>>3]=e};c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];a=1}else a=0;l=i;return a|0}function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function om(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;m=n+8|0;k=n;i=n+16|0;j=n+12|0;h=xx(b,88698)|0;do if((h|0)!=0?(g=a[h>>0]|0,g<<24>>24!=0):0){g=g&255;if(!(N$(g)|0))if((e|0)==2|(g+-48|0)>>>0<10)e=h;else break;else{if(!(z$(h,88704,4)|0)){e=0;break}if(!(z$(h,102485,7)|0)){e=1;break}if(z$(h,88709,6)|0)if((e|0)==2)e=h;else break;else e=h+6|0}if(!(((d[e>>0]|0)+-48|0)>>>0<10?(c[k>>2]=j,(N1(e,96907,k)|0)>=1):0)){k=H1()|0;k=(db(0)|0)^k;c[j>>2]=k;c[m>>2]=k;Y0(i,96907,m)|0;zx(b,88698,i)|0}c[f>>2]=c[j>>2];e=2}while(0);l=n;return e|0}function pm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f+4|0;c[e>>2]=1;d=om(a,d,e)|0;if((d|0)!=2&(c[46026]|0)!=0)Pw(0,88716,f)|0;if((d|0)==1)qm(a,b);i2(c[e>>2]|0);l=f;return d|0}function qm(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0.0;g=+(d|0);i=6.283185307179586/g;e=Sy(b)|0;f=0.0;while(1){if(!e)break;l=+E(+f)*g;j=c[e+16>>2]|0;k=c[j+132>>2]|0;h[k>>3]=l;h[k+8>>3]=+F(+f)*g;a[j+119>>0]=1;if((c[46366]|0)>2)In(e,d);e=Ty(b,e)|0;f=f+i}return}function rm(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0;r=l;l=l+80|0;d=r+24|0;n=r+32|0;k=r;p=r+28|0;m=r+64|0;q=+h[22908];do if(c[46363]|0){h[22908]=72.0;sm(b);tm(b);if((dm(b,1)|0)<0){Pw(3,88764,d)|0;break}else{PI(b,0);f=32;break}}else{o=RL(xx(b,88493)|0,0)|0;h[22908]=+ML(b);sm(b);g=um(b)|0;Sp(b,k,0)|0;i=vm(b)|0;j=ZD(b,0,n)|0;d=YD(b,-1,8)|0;c[46025]=d;e=(d|0)<0;do if(!j){if((g|0)!=0&e){c[46025]=8;c[n+16>>2]=2;f=11;break}c[n+16>>2]=2;if((d|0)<=-1){wm(b,g,i);Vp(b,k)|0;tm(b);if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else f=11}else if(e){c[46025]=8;f=11}else f=11;while(0);if((f|0)==11){j=dD(b,p,88792,m)|0;d=c[p>>2]|0;do if((d|0)<=1){wm(b,g,i);Vp(b,k)|0;if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else{f=o<<24>>24==0;e=0;while(1){if((e|0)>=(d|0))break;d=c[j+(e<<2)>>2]|0;vD(d)|0;wm(d,g,i);Vp(d,k)|0;$M(d,2);if(f)hn(d);else xm(d);e=e+1|0;d=c[p>>2]|0}if(!(a[m>>0]|0))e=0;else{e=uH(d)|0;a[e>>0]=1;d=c[p>>2]|0}c[n+8>>2]=c[46025];c[n+20>>2]=e;c[n+12>>2]=1;VD(d,j,b,n)|0;D_(e)}while(0);mM(b);tm(b);d=0;while(1){if((d|0)>=(c[p>>2]|0))break;n=c[j+(d<<2)>>2]|0;Fn(n);Cz(n,134401)|0;dz(b,n)|0;d=d+1|0}D_(j)}PI(b,o<<24>>24==0&1);f=32}while(0);if((f|0)==32)h[22908]=q;l=r;return}function sm(a){a=a|0;var d=0,e=0,f=0,g=0;$M(a,2);f=KL(a,nx(a,0,89557,0)|0,2,2)|0;d=(KL(a,nx(a,0,90633,0)|0,f,2)|0)&65535;b[(c[(fz(a)|0)+16>>2]|0)+176>>1]=d;d=c[(c[a+60>>2]|0)+16>>2]|0;g=d+176|0;e=b[g>>1]|0;e=(e&65535)<10?e:10;b[g>>1]=e;e=e&65535;c[46366]=e;b[d+178>>1]=(f|0)<(e|0)?f:e;Hm(a);return}function tm(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;a:do if((c[46366]|0)>2&(c[46401]|0)!=0){b=Sy(a)|0;while(1){if(!b)break a;h[e>>3]=+h[(c[(c[b+16>>2]|0)+132>>2]|0)+16>>3]*72.0;Y0(d,98183,e)|0;rx(b,c[46401]|0,d)|0;b=Ty(a,b)|0}}while(0);l=f;return}function um(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=xx(b,89477)|0;a:do if(!d)b=1;else{switch(a[d>>0]|0){case 0:{b=1;break a}case 75:{if(!(b$(d,89482)|0)){b=0;break a}break}case 109:{if(!(b$(d,89485)|0)){b=1;break a}break}case 104:{if(!(b$(d,89491)|0)){b=2;break a}break}default:{}}b=ry(b)|0;c[e>>2]=d;c[e+4>>2]=b;Pw(0,89496,e)|0;b=1}while(0);l=f;return b|0}function vm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;e=h;d=xx(b,89260)|0;a:do if(!d)b=0;else{switch(a[d>>0]|0){case 0:{b=0;break a}case 99:{if(!(b$(d,89266)|0)){b=1;break a}break}case 115:{if(!(b$(d,89274)|0)){b=2;break a}if(!(b$(d,89281)|0)){b=0;break a}break}case 109:{if(!(b$(d,89291)|0)){if(nx(b,2,90566,0)|0){b=3;break a}c[e>>2]=ry(b)|0;Pw(0,89295,e)|0;Pw(3,89358,f)|0;b=0;break a}break}default:{}}b=ry(b)|0;c[g>>2]=d;c[g+4>>2]=b;Pw(0,89415,g)|0;b=0}while(0);l=h;return b|0}function wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=xx(a,90975)|0;if(!e)if((b|0)==1)e=200;else e=(ay(a)|0)*100|0;else e=a2(e)|0;c[46365]=e;e=yn(a,b)|0;do if(!((e|0)<2|(c[46365]|0)<0))if(!b){zm(a,e,d);break}else{ym(a,e,b,d,c[46366]|0);break}while(0);return}function xm(a){a=a|0;mM(a);$m(a,1);return}function ym(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;r=u+40|0;o=u+24|0;n=u;p=u+48|0;t=u+44|0;q=(d|0)==2;i=pm(a,b,q?0:2)|0;j=Gm(a)|0;k=j|4;s=vH(f<<2)|0;c[s>>2]=vH(O(b<<3,f)|0)|0;g=c[46366]|0;f=1;while(1){if((f|0)>=(g|0))break;c[s+(f<<2)>>2]=(c[s>>2]|0)+((O(f,b)|0)<<3);f=f+1|0}g=(i|0)==0;f=g?k:j;if(0){k=c[15686]|0;j=c[46365]|0;m=+h[22909];c[n>>2]=e;c[n+4>>2]=g&1;c[n+8>>2]=f&3;c[n+12>>2]=j;h[n+16>>3]=m;g1(k,89073,n)|0;E1(89130,15,1,k)|0;EL();E1(89146,13,1,k)|0}n=Cm(a,b,p,d,e,t)|0;if(0){k=c[15686]|0;m=+FL();c[o>>2]=b;h[o+8>>3]=m;g1(k,89160,o)|0}if((d|0)!=1){m=+LL(a,nx(a,0,89179,0)|0,0.0,-1797693134862315708145274.0e284);if(q){f=Gq(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0,m)|0;g=12}else g=14}else{f=qn(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0)|0;g=12}if((g|0)==12)if((f|0)<0)Pw(3,89189,r)|0;else g=14;a:do if((g|0)==14){g=Sy(a)|0;while(1){if(!g)break a;k=c[g+16>>2]|0;i=c[k+120>>2]|0;j=c[46366]|0;k=k+132|0;f=0;while(1){if((f|0)>=(j|0))break;h[(c[k>>2]|0)+(f<<3)>>3]=+h[(c[s+(f<<2)>>2]|0)+(i<<3)>>3];f=f+1|0}g=Ty(a,g)|0}}while(0);br(n);D_(c[s>>2]|0);D_(s);D_(c[t>>2]|0);l=u;return}function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;g=l;l=l+48|0;f=g+32|0;e=g;switch(d|0){case 2:{Am(a,b);break}case 1:{if(!(Cq(a,b)|0)){c[e>>2]=ry(a)|0;Pw(0,88802,e)|0;Pw(3,91952,g+8|0)|0;Pw(3,88854,g+16|0)|0;Pw(3,88926,g+24|0)|0;Wn(a,b)}break}default:{Wn(a,b);if((d|0)==3)Bm(a)}}Kn(a,b);Ln(a,b);if(0){e=c[15686]|0;j=c[46365]|0;i=+h[22909];c[f>>2]=d;c[f+4>>2]=j;h[f+8>>3]=i;g1(e,88964,f)|0;EL()}Mn(a,b);l=g;return}function Am(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;g=Cm(a,b,j,0,2,0)|0;i=ds(g,b)|0;e=a+16|0;a=0;while(1){if((a|0)>=(b|0))break;f=i+(a<<2)|0;d=0;while(1){if((d|0)==(b|0))break;h[(c[(c[(c[e>>2]|0)+160>>2]|0)+(a<<2)>>2]|0)+(d<<3)>>3]=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a=a+1|0}D_(c[i>>2]|0);D_(i);br(g);l=j;return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0;f=a+16|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;g=c[b>>2]&3;e=(c[c[((g|0)==3?b:b+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?b:b+-48|0)+40>>2]>>2]|0)>>>4;if((e|0)!=(g|0)){j=+h[(c[b+16>>2]|0)+136>>3];i=c[(c[f>>2]|0)+160>>2]|0;h[(c[i+(g<<2)>>2]|0)+(e<<3)>>3]=j;h[(c[i+(e<<2)>>2]|0)+(g<<3)>>3]=j}b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Cm(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0;j=by(a)|0;G=GI()|0;if((f|0)==2){k=0;D=0}else{D=nx(a,2,90566,0)|0;k=(c[46404]|0)!=0&1;D=(D|0)!=0}A=(e|1|0)==3;E=vH(b*20|0)|0;F=vH(b<<2)|0;l=(j<<1)+b<<2;m=vH(l)|0;z=A|D;if(z)f=vH(l)|0;else f=0;C=(k|0)!=0;if(C)j=vH(l)|0;else j=0;if(A)k=vH(l)|0;else k=0;l=0;x=Sy(a)|0;y=0;while(1){if(!x)break;JI(G);if((c[(c[x+16>>2]|0)+120>>2]|0)!=(y|0)){B=12;break}c[F+(y<<2)>>2]=x;u=E+(y*20|0)+4|0;c[u>>2]=m;v=E+(y*20|0)+8|0;c[v>>2]=z?f:0;w=E+(y*20|0)+12|0;c[w>>2]=C?j:0;c[E+(y*20|0)+16>>2]=A?k:0;r=1;t=Jx(a,x)|0;s=1;q=l;m=m+4|0;f=z?f+4|0:f;j=C?j+4|0:j;k=A?k+4|0:k;while(1){if(!t)break;n=c[t>>2]&3;p=t+-48|0;l=t+48|0;do if((c[((n|0)==2?t:p)+40>>2]|0)==(c[((n|0)==3?t:l)+40>>2]|0)){n=r;p=s;l=q}else{n=Dm(G,t,r)|0;if((n|0)!=(r|0)){if(C){p=(c[w>>2]|0)+(n<<2)|0;g[p>>2]=+h[(c[t+16>>2]|0)+128>>3]+ +g[p>>2]}if(!D){n=r;p=s;l=q;break}n=(c[v>>2]|0)+(n<<2)|0;H=+h[(c[t+16>>2]|0)+136>>3];o=+(~~+g[n>>2]|0);g[n>>2]=H>o?H:o;n=r;p=s;l=q;break}I=c[t>>2]&3;l=(I|0)==3?t:l;q=q+1|0;n=r+1|0;r=m+4|0;c[m>>2]=c[(c[(c[((c[l+40>>2]|0)==(x|0)?((I|0)==2?t:p):l)+40>>2]|0)+16>>2]|0)+120>>2];if(C){g[j>>2]=+h[(c[t+16>>2]|0)+128>>3];j=j+4|0}if(D){l=f+4|0;g[f>>2]=+h[(c[t+16>>2]|0)+136>>3];if(A){f=l;B=27}else f=l}else if(A){g[f>>2]=1.0;f=f+4|0;B=27}if((B|0)==27){B=0;l=xx(t,98533)|0;if((l|0)!=0?(z$(l,132627,4)|0)==0:0)o=0.0;else o=(x|0)==(c[((c[t>>2]&3|0)==2?t:p)+40>>2]|0)?1.0:-1.0;g[k>>2]=o;k=k+4|0}p=s+1|0;l=q;m=r}while(0);r=n;t=Kx(a,t,x)|0;s=p;q=l}c[E+(y*20|0)>>2]=s;c[c[u>>2]>>2]=y;l=q;x=Ty(a,x)|0;y=y+1|0}if((B|0)==12)qa(89003,89018,819,89030);if(A)Em(E,b,e,F);n=(l|0)/2|0;a:do if((n|0)!=(by(a)|0)){l=(n<<1)+b<<2;k=xH(c[E+4>>2]|0,l)|0;if(D)f=xH(c[E+8>>2]|0,l)|0;if(C){m=0;j=xH(c[E+12>>2]|0,l)|0}else m=0;while(1){if((m|0)>=(b|0))break a;l=c[E+(m*20|0)>>2]|0;c[E+(m*20|0)+4>>2]=k;if(D){c[E+(m*20|0)+8>>2]=f;f=f+(l<<2)|0}if(C){c[E+(m*20|0)+12>>2]=j;j=j+(l<<2)|0}m=m+1|0;k=k+(l<<2)|0}}while(0);c[d>>2]=n;if(!i)D_(F);else c[i>>2]=F;KI(G);return E|0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b>>2]&3;e=c[(c[(c[((f|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;b=c[(c[(c[((f|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;f=(e|0)>(b|0);return LI(a,f?b:e,f?e:b,d)|0}function Em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((g|0)>=(d|0)){g=0;break}h=c[(c[f+(g<<2)>>2]|0)+16>>2]|0;a[h+157>>0]=0;a[h+158>>0]=0;g=g+1|0}while(1){if((g|0)>=(d|0))break;if(!(a[(c[(c[f+(g<<2)>>2]|0)+16>>2]|0)+157>>0]|0))Fm(b,g,e,f);g=g+1|0}return}function Fm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;q=(c[f+(d<<2)>>2]|0)+16|0;l=c[q>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=b+(d*20|0)|0;m=b+(d*20|0)+16|0;n=b+(d*20|0)+4|0;o=(e|0)==3?-1.0:1.0;k=1;a:while(1){if((k|0)>=(c[l>>2]|0)){h=14;break}h=(c[m>>2]|0)+(k<<2)|0;do if(!(+g[h>>2]==1.0)){p=c[(c[n>>2]|0)+(k<<2)>>2]|0;i=c[(c[f+(p<<2)>>2]|0)+16>>2]|0;if(!(a[i+158>>0]|0)){if(a[i+157>>0]|0)break;Fm(b,p,e,f);break}g[h>>2]=o;i=b+(p*20|0)+4|0;j=c[b+(p*20|0)>>2]|0;h=1;while(1){if((h|0)>=(j|0)){h=9;break a}if((c[(c[i>>2]|0)+(h<<2)>>2]|0)==(d|0))break;h=h+1|0}g[(c[b+(p*20|0)+16>>2]|0)+(h<<2)>>2]=-1.0}while(0);k=k+1|0}if((h|0)==9)qa(89044,89018,721,89064);else if((h|0)==14){a[(c[q>>2]|0)+158>>0]=0;return}}function Gm(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=KL(a,nx(a,0,89205,0)|0,2,0)|0;if((a|0)==0|(a|0)>2){c[b>>2]=89205;Pw(0,89214,b)|0;a=2}l=d;return a|0}function Hm(a){a=a|0;var b=0,d=0,e=0;d=ay(a)|0;c[46026]=nx(a,1,99597,0)|0;e=nx(a,1,90570,0)|0;b=Sy(a)|0;while(1){if(!b)break;$l(b);am(c[46026]|0,e,b,d)|0;b=Ty(a,b)|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Im(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Im(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,1.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;a=uH(64)|0;e=a+8|0;f=d+8|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));d=c[d+56>>2]|0;c[a+56>>2]=d;b[(c[d+16>>2]|0)+168>>1]=1;return a|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0<=e>>>0)if(a>>>0>=e>>>0){e=c[b+24>>2]|0;a=c[d+24>>2]|0;if(e>>>0<=a>>>0)if(e>>>0>=a>>>0){a=~~(+h[b+8>>3]-+h[d+8>>3]);if(!a){a=~~(+h[b+16>>3]-+h[d+16>>3]);if(!a){a=~~(+h[b+32>>3]-+h[d+32>>3]);if(!a)a=~~(+h[b+40>>3]-+h[d+40>>3])}}}else a=-1;else a=1}else a=-1;else a=1;return a|0}function Mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0.0;k=l;l=l+16|0;g=k;h=e+16|0;i=b[(c[h>>2]|0)+168>>1]|0;j=i<<16>>16;if(i<<16>>16!=1&(a[191874]|0)==0){i=vH(j<<2)|0;g=0;while(1){if((g|0)>=(j|0))break;c[i+(g<<2)>>2]=e;e=c[(c[e+16>>2]|0)+172>>2]|0;g=g+1|0}m=+(f|0);YK(d,i,0,j,m,m,17764);e=0;while(1){if((e|0)>=(j|0))break;g=c[i+(e<<2)>>2]|0;h=g+16|0;if(c[(c[h>>2]|0)+96>>2]|0){f=ez(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)|0;kM(f,c[(c[h>>2]|0)+96>>2]|0)}dL(g);e=e+1|0}D_(i)}else{c[g>>2]=e;m=+(f|0);YK(d,g,0,1,m,m,17764);if(c[(c[h>>2]|0)+96>>2]|0){j=ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;kM(j,c[(c[h>>2]|0)+96>>2]|0)}dL(e)}l=k;return}function Nm(a){a=a|0;return 0}function Om(a){a=a|0;return 0}function Pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+384|0;O=Q+368|0;P=Q+112|0;j=Q+32|0;r=Q+336|0;K=Q+320|0;L=Q+304|0;M=Q+288|0;N=Q+272|0;i=Q+256|0;H=Q+240|0;I=Q+224|0;J=Q+208|0;t=Q+192|0;u=Q+176|0;v=Q+160|0;z=Q+144|0;A=Q+128|0;B=Q+96|0;D=Q+16|0;G=Q;a:do switch(HJ(b)|0){case 3:case 1:{f=uH(8)|0;z=b+16|0;b=c[z>>2]|0;i=c[b+12>>2]|0;do if(!(e<<24>>24)){b=c[i+8>>2]|0;if((b|0)>2){y=0.0;j=c[i+44>>2]|0;e=0;p=+g[d>>2];q=+g[d+4>>2];break}else{y=+k2()*.01;b=8;j=0;e=1;p=0.0;q=0.0;break}}else if(!(c[i+40>>2]&2048)){q=+h[b+88>>3];p=-q;y=+h[b+80>>3];x=y*-.5;h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;y=y*.5;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}else{jM(r,i);p=+h[r>>3];x=+h[r+8>>3];q=+h[r+16>>3];y=+h[r+24>>3];h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}while(0);c[f+4>>2]=b;r=uH(b<<4)|0;c[f>>2]=r;s=1.0/+(b|0);t=d+8|0;u=d+4|0;v=(b|0)==4;w=-p;x=-q;i=0;while(1){if((b|0)<=(i|0))break a;do if(e){k=+(i|0)*6.283185307179586*s+y;m=+E(+k);k=+F(+k);if(!(a[t>>0]|0)){P=c[z>>2]|0;n=k*+g[u>>2]*+h[P+80>>3];k=m*+g[d>>2]*(+h[P+96>>3]+ +h[P+88>>3])}else{P=c[z>>2]|0;n=(+h[P+80>>3]+ +g[u>>2])*k;k=(+h[P+96>>3]+ +h[P+88>>3]+ +g[d>>2])*m}o=k*.5;k=n*.5}else{if(!(a[t>>0]|0)){o=+h[j+(i<<4)>>3]*p;k=+h[j+(i<<4)+8>>3]*q;break}if(!v){o=+h[j+(i<<4)>>3];k=+h[j+(i<<4)+8>>3];n=+C(+(k*k+o*o));o=(p/n+1.0)*o;k=(q/n+1.0)*k;break}switch(i|0){case 0:{m=q;k=p;break}case 1:{m=q;k=w;break}case 2:{m=x;k=w;break}case 3:{m=x;k=p;break}default:{m=0.0;k=0.0}}o=+h[j+(i<<4)>>3]+k;k=+h[j+(i<<4)+8>>3]+m}while(0);O=c[z>>2]|0;P=b-i+-1|0;h[r+(P<<4)>>3]=+h[O+16>>3]+o;h[r+(P<<4)+8>>3]=+h[O+24>>3]+k;i=i+1|0}}case 2:{G=b+16|0;f=c[(c[G>>2]|0)+12>>2]|0;k=+h[f+16>>3];o=+h[f+24>>3];m=+h[f+32>>3];n=+h[f+40>>3];f=uH(8)|0;c[f+4>>2]=4;b=uH(64)|0;c[f>>2]=b;G=(c[G>>2]|0)+16|0;c[P>>2]=c[G>>2];c[P+4>>2]=c[G+4>>2];c[P+8>>2]=c[G+8>>2];c[P+12>>2]=c[G+12>>2];if(!(a[d+8>>0]|0)){c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(i,k,o,O,d);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];N=(c[f>>2]|0)+16|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(H,k,n,O,d);c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2];N=(c[f>>2]|0)+32|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(I,m,n,O,d);c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];N=(c[f>>2]|0)+48|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(J,m,o,O,d);c[N>>2]=c[J>>2];c[N+4>>2]=c[J+4>>2];c[N+8>>2]=c[J+8>>2];c[N+12>>2]=c[J+12>>2];break a}else{y=k-+g[d>>2];J=d+4|0;x=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(K,y,x,O);c[b>>2]=c[K>>2];c[b+4>>2]=c[K+4>>2];c[b+8>>2]=c[K+8>>2];c[b+12>>2]=c[K+12>>2];K=(c[f>>2]|0)+16|0;x=k-+g[d>>2];y=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(L,x,y,O);c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];L=(c[f>>2]|0)+32|0;y=m+ +g[d>>2];x=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(M,y,x,O);c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];M=(c[f>>2]|0)+48|0;x=m+ +g[d>>2];y=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(N,x,y,O);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];break a}}case 4:{b=b+16|0;f=uH(8)|0;c[f+4>>2]=4;i=uH(64)|0;c[f>>2]=i;j=c[b>>2]|0;N=j+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=c[N+4>>2];c[P+8>>2]=c[N+8>>2];c[P+12>>2]=c[N+12>>2];k=-+h[j+88>>3];if(!(a[d+8>>0]|0)){x=-+h[j+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(A,k,x,O,d);c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];N=(c[f>>2]|0)+16|0;M=c[b>>2]|0;x=-+h[M+88>>3];y=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(B,x,y,O,d);c[N>>2]=c[B>>2];c[N+4>>2]=c[B+4>>2];c[N+8>>2]=c[B+8>>2];c[N+12>>2]=c[B+12>>2];N=(c[f>>2]|0)+32|0;M=c[b>>2]|0;y=+h[M+96>>3];x=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(D,y,x,O,d);c[N>>2]=c[D>>2];c[N+4>>2]=c[D+4>>2];c[N+8>>2]=c[D+8>>2];c[N+12>>2]=c[D+12>>2];N=(c[f>>2]|0)+48|0;M=c[b>>2]|0;x=+h[M+96>>3];y=-+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(G,x,y,O,d);c[N>>2]=c[G>>2];c[N+4>>2]=c[G+4>>2];c[N+8>>2]=c[G+8>>2];c[N+12>>2]=c[G+12>>2];break a}else{y=k-+g[d>>2];M=d+4|0;x=-+h[j+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(t,y,x,O);c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];N=(c[f>>2]|0)+16|0;L=c[b>>2]|0;x=-+h[L+88>>3]-+g[d>>2];y=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(u,x,y,O);c[N>>2]=c[u>>2];c[N+4>>2]=c[u+4>>2];c[N+8>>2]=c[u+8>>2];c[N+12>>2]=c[u+12>>2];N=(c[f>>2]|0)+32|0;L=c[b>>2]|0;y=+h[L+96>>3]+ +g[d>>2];x=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(v,y,x,O);c[N>>2]=c[v>>2];c[N+4>>2]=c[v+4>>2];c[N+8>>2]=c[v+8>>2];c[N+12>>2]=c[v+12>>2];N=(c[f>>2]|0)+48|0;L=c[b>>2]|0;x=+h[L+96>>3]+ +g[d>>2];y=-+h[L+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(z,x,y,O);c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];break a}}default:f=0}while(0);l=Q;return f|0}function Qm(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;c=+h[d+8>>3]+c;h[a>>3]=+h[d>>3]+b;h[a+8>>3]=c;return}function Rm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;c=+g[e+4>>2]*c+ +h[d+8>>3];h[a>>3]=+g[e>>2]*b+ +h[d>>3];h[a+8>>3]=c;return}function Sm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+112|0;j=o+88|0;i=o+72|0;k=o+32|0;m=o+16|0;n=o;f=o+56|0;g=o+40|0;h=b+48|0;r=(c[(c[((c[b>>2]&3|0)==3?b:h)+40>>2]|0)+16>>2]|0)+16|0;p=b+16|0;q=(c[p>>2]|0)+16|0;c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];Tm(f,i,j);c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];f=b+-48|0;q=(c[(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16>>2]|0)+16|0;p=(c[p>>2]|0)+56|0;c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[j>>2]=c[p>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[j+12>>2]=c[p+12>>2];Tm(g,i,j);c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];if(!e){g=-1111;f=-1111}else{r=c[b>>2]&3;g=c[(c[(c[((r|0)==2?b:f)+40>>2]|0)+16>>2]|0)+288>>2]|0;f=c[(c[(c[((r|0)==3?b:h)+40>>2]|0)+16>>2]|0)+288>>2]|0};c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];vU(d,i,f,j,g,k)|0;p=k;q=c[p+4>>2]|0;r=a;c[r>>2]=c[p>>2];c[r+4>>2]=q;l=o;return}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Um(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+144|0;p=u+104|0;q=u+88|0;o=u+80|0;n=u+72|0;j=u+64|0;s=u+128|0;k=u+32|0;m=u+124|0;t=u+16|0;r=u;i=u+120|0;h=(c[b+16>>2]|0)+144|0;g=c[h>>2]|0;h=c[h+4>>2]|0;v=j;c[v>>2]=g;c[v+4>>2]=h;v=g;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];h=g+(h+-1<<4)|0;c[r>>2]=c[h>>2];c[r+4>>2]=c[h+4>>2];c[r+8>>2]=c[h+8>>2];c[r+12>>2]=c[h+12>>2];a:do if(!(f<<24>>24)){g=-1111;f=-1111}else{g=-1111;f=-1111;h=0;while(1){if((h|0)>=(e|0))break a;if((f|0)==-1111){f=c[d+(h<<2)>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];f=(wU(q,p)|0)==0;f=f?-1111:h}if((g|0)==-1111){g=c[d+(h<<2)>>2]|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];g=(wU(q,p)|0)==0;g=g?-1111:h}h=h+1|0}}while(0);Vm(d,e,f,g,i,m);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;h=c[i>>2]|0;v=c[m>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];if((xU(h,v,p,k,s)|0)<0){t=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;v=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[n>>2]=t;c[n+4>>2]=v;Pw(1,89563,n)|0}else{if(0>1){g=c[15686]|0;n=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;f=b+-48|0;v=ry(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)|0;c[o>>2]=n;c[o+4>>2]=v;g1(g,89611,o)|0;g=b}else{f=b+-48|0;g=b}QK(b,c[((c[g>>2]&3|0)==2?b:f)+40>>2]|0,c[s>>2]|0,c[s+4>>2]|0,17764);D_(h);c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];jL(a,b,q,p)}l=u;return}function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;h=0;while(1){if((i|0)>=(b|0))break;if(!((i|0)==(d|0)|(i|0)==(e|0)))h=(c[(c[a+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}o=vH(h<<5)|0;i=0;n=0;while(1){if((n|0)>=(b|0))break;a:do if(!((n|0)==(d|0)|(n|0)==(e|0))){m=a+(n<<2)|0;l=0;while(1){j=c[m>>2]|0;k=c[j+4>>2]|0;if((l|0)>=(k|0))break a;p=l+1|0;q=o+(i<<5)|0;j=(c[j>>2]|0)+(l<<4)|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];j=o+(i<<5)+16|0;k=(c[c[m>>2]>>2]|0)+(((p|0)<(k|0)?p:0)<<4)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];l=p;i=i+1|0}}while(0);n=n+1|0}if((i|0)==(h|0)){c[f>>2]=o;c[g>>2]=h;return}else qa(89625,89632,77,89647)}function Wm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+32|0;k=n+12|0;f=n;uq(f,a);c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;KK(g);g=Gx(a,g)|0}f=Ty(a,f)|0}h=Cw(17728,c[4555]|0)|0;f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;if((c[46363]|0)>1?(i=c[g+16>>2]|0,(c[i+8>>2]|0)!=0):0){o=i+168|0;b[o>>1]=(b[o>>1]|0)+1<<16>>16}else m=14;if((m|0)==14?(m=0,j=Xm(h,g)|0,(j|0)!=(g|0)):0){o=c[j+16>>2]|0;p=o+168|0;b[p>>1]=(b[p>>1]|0)+1<<16>>16;o=o+172|0;c[(c[g+16>>2]|0)+172>>2]=c[o>>2];c[o>>2]=g}g=Gx(a,g)|0}f=Ty(a,f)|0}yw(h)|0;if(!(nb[d&63](a,k,e)|0)){c[46367]=1;f=0}else f=1;l=n;return f|0}function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+64|0;p=q;e=c[b>>2]&3;i=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;do if(i>>>0>=e>>>0){d=b+16|0;if(i>>>0>e>>>0){d=c[d>>2]|0;o=e;e=i;k=+h[d+16>>3];m=+h[d+24>>3];g=+h[d+56>>3];f=+h[d+64>>3];break}o=c[d>>2]|0;j=+h[o+56>>3];n=+h[o+64>>3];g=+h[o+16>>3];f=+h[o+24>>3];if(!(g<j))if(!(g>j)){d=f>n;if(f<n){o=i;e=i;k=j;m=n}else{o=i;e=i;k=g;m=f;g=d?j:g;f=d?n:f}}else{o=i;e=i;k=g;m=f;g=j;f=n}else{o=i;e=i;k=j;m=n}}else{d=c[b+16>>2]|0;o=i;k=+h[d+56>>3];m=+h[d+64>>3];g=+h[d+16>>3];f=+h[d+24>>3]}while(0);c[p+8>>2]=o;h[p+16>>3]=g;h[p+24>>3]=f;c[p+32>>2]=e;h[p+40>>3]=k;h[p+48>>3]=m;c[p+56>>2]=b;p=c[(nb[c[a>>2]&63](a,p,1)|0)+56>>2]|0;l=q;return p|0}function Ym(a,b){a=a|0;b=b|0;return Wm(a,21,b)|0}function Zm(d,e,f){d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0;F=l;l=l+112|0;B=F+88|0;A=F+72|0;t=F+40|0;q=F+8|0;p=F;u=F+64|0;C=F+48|0;D=F+24|0;i=(c[46363]|0)>1&1;do if((f|0)>5){s=uH((ay(d)|0)<<2)|0;o=(f|0)==8;n=o&1;m=Sy(d)|0;r=0;while(1){if(!m)break;j=Pm(m,e,n)|0;k=(c[m+16>>2]|0)+288|0;if(!j){c[k>>2]=-1111;j=r}else{c[k>>2]=r;c[s+(r<<2)>>2]=j;j=r+1|0}m=Ty(d,m)|0;r=j}if(s){j=ms(s,r)|0;if(j|0){if(o){y=0;z=s;x=s;w=1;break}y=sU(s,r)|0;z=s;x=s;w=1;break}if(o){Pw(0,89661,p)|0;j=0;y=0;z=s;x=s;w=1;break}else{G=+g[e+4>>2];h[q>>3]=+g[e>>2];h[q+8>>3]=G;Pw(0,89739,q)|0;j=0;y=0;z=s;x=s;w=1;break}}else{j=0;y=0;z=0;x=0;w=0}}else{j=0;y=0;z=0;r=0;x=0;w=0}while(0);if(0){k=c[15686]|0;if((f|0)==8&(j|0)!=0)m=89845;else m=(y|0)==0?89831:(f|0)==10?107030:89821;c[t>>2]=m;g1(k,89862,t)|0}v=(y|0)!=0;a:do if(!v){if((f|0)==8&(j|0)!=0){cN(d,0);i=1}}else{k=Sy(d)|0;while(1){if(!k)break a;j=Ex(d,k)|0;while(1){if(!j)break;t=(c[j+16>>2]|0)+144|0;Sm(u,j,y,1,0,0);q=u;s=c[q+4>>2]|0;c[t>>2]=c[q>>2];c[t+4>>2]=s;j=Gx(d,j)|0}k=Ty(d,k)|0}}while(0);p=(i|0)==0;q=d+60|0;s=(f|0)==10;i=0;o=Sy(d)|0;j=0;while(1){if(!o)break;t=o+16|0;e=Ex(d,o)|0;while(1){if(!e)break;n=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;k=e+16|0;m=c[k>>2]|0;if(!p?(c[m+8>>2]|0)!=0:0){H=(c[t>>2]|0)+16|0;u=m+16|0;c[A>>2]=c[H>>2];c[A+4>>2]=c[H+4>>2];c[A+8>>2]=c[H+8>>2];c[A+12>>2]=c[H+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(C,A,B);n=(c[n+16>>2]|0)+16|0;u=(c[k>>2]|0)+56|0;c[A>>2]=c[n>>2];c[A+4>>2]=c[n+4>>2];c[A+8>>2]=c[n+8>>2];c[A+12>>2]=c[n+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(D,A,B);c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];c[B>>2]=c[D>>2];c[B+4>>2]=c[D+4>>2];c[B+8>>2]=c[D+8>>2];c[B+12>>2]=c[D+12>>2];jL(d,e,A,B)}else E=35;b:do if((E|0)==35){E=0;H=b[m+168>>1]|0;k=H<<16>>16;if(H<<16>>16){if((o|0)==(n|0)){if(!i){j=uH(96)|0;c[j+84>>2]=uH(((ay(d)|0)<<5)+11520|0)|0;i=j}Mm(i,e,c[(c[(c[q>>2]|0)+16>>2]|0)+248>>2]|0);break}if(!v){zJ(d,e,f,17764);break}k=a[191874]|0?1:k;m=e;n=0;while(1){if((n|0)>=(k|0))break b;if(s)Um(d,m,z,r,1);else _m(d,m);m=c[(c[m+16>>2]|0)+172>>2]|0;n=n+1|0}}}while(0);e=Gx(d,e)|0}o=Ty(d,o)|0}if(v)uU(y);if(i|0){D_(c[i+84>>2]|0);D_(j)}if(w){i=0;while(1){if((i|0)>=(r|0))break;D_(c[z+(i<<2)>>2]|0);i=i+1|0}D_(x)}l=F;return 0}function _m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+96|0;g=k+64|0;f=k+48|0;d=k+40|0;h=k+80|0;e=k+32|0;i=k+16|0;j=k;m=(c[b+16>>2]|0)+144|0;n=c[m>>2]|0;m=c[m+4>>2]|0;o=e;c[o>>2]=n;c[o+4>>2]=m;o=n;c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];m=n+(m+-1<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];oV(g,h);if(0>1){o=c[15686]|0;m=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;e=b+-48|0;n=ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0;c[d>>2]=m;c[d+4>>2]=n;g1(o,89887,d)|0;d=e;e=b}else{d=b+-48|0;e=b}QK(b,c[((c[e>>2]&3|0)==2?b:d)+40>>2]|0,c[h>>2]|0,c[h+4>>2]|0,17764);c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];jL(a,b,f,g);l=k;return}function $m(a,d){a=a|0;d=d|0;var e=0;e=b[(c[a+16>>2]|0)+136>>1]&14;if(d<<24>>24)an(a)|0;if(e<<16>>16)Ym(a,e&65535)|0;return}function an(a){a=a|0;var b=0,d=0,e=0,f=0;d=bn(a)|0;b=Sy(a)|0;while(1){if(!b)break;e=c[b+16>>2]|0;f=c[e+132>>2]|0;h[e+16>>3]=+h[f>>3]*72.0;h[e+24>>3]=+h[f+8>>3]*72.0;b=Ty(a,b)|0}return d|0}function bn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0;a:do if((c[a+60>>2]|0)==(a|0)?(d=a+16|0,e=c[d>>2]|0,(c[(c[e+8>>2]|0)+84>>2]|0)!=0):0){if(!(+h[e+16>>3]!=0.0)?!(+h[e+24>>3]!=0.0):0)b=0;else{cn(a);b=1;e=c[d>>2]|0}j=(c[e+116>>2]&1|0)==0;if(!j){k=e+32|0;i=+h[k>>3];d=e+40|0;h[k>>3]=+h[d>>3];h[d>>3]=i}d=c[e+8>>2]|0;b:do switch(c[d+84>>2]|0){case 2:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(g<1.0|f<1.0)if(g<f){i=1.0;f=f/g;break b}else{i=g/f;f=1.0;break b}else i=g;break}case 5:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(!(g>1.0&f>1.0))break a;f=g<f?g:f;i=f;break}case 1:{g=+h[d+16>>3];f=+h[e+40>>3]/+h[e+32>>3];if(f<g){i=1.0;f=g/f;break b}else{i=f/g;f=1.0;break b}}default:break a}while(0);g=j?f:i;f=j?i:f;c:do if((c[46363]|0)>1){d=Sy(a)|0;while(1){if(!d)break c;b=Ex(a,d)|0;while(1){if(!b)break;if(c[(c[b+16>>2]|0)+8>>2]|0)dn(b,f,g);b=Gx(a,b)|0}d=Ty(a,d)|0}}while(0);b=Sy(a)|0;while(1){if(!b)break;k=c[(c[b+16>>2]|0)+132>>2]|0;h[k>>3]=+h[k>>3]*f;k=k+8|0;h[k>>3]=+h[k>>3]*g;b=Ty(a,b)|0}en(a,f,g);b=1}else b=0;while(0);return b|0}function cn(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;k=n+16|0;m=n;d=(c[b+16>>2]|0)+16|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];f=+h[m>>3];g=f*.013888888888888888;i=+h[m+8>>3];j=i*.013888888888888888;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;o=c[e+132>>2]|0;h[o>>3]=+h[o>>3]-g;o=o+8|0;h[o>>3]=+h[o>>3]-j;e=c[e+108>>2]|0;if(e|0?a[e+81>>0]|0:0){o=e+56|0;h[o>>3]=+h[o>>3]-f;o=e+64|0;h[o>>3]=+h[o>>3]-i}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;if(c[(c[d+16>>2]|0)+8>>2]|0){c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];fn(d,k)}d=Gx(b,d)|0}e=Ty(b,e)|0}c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];gn(b,k);l=n;return}function dn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;p=c[b>>2]&3;i=c[(c[(c[((p|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=(d+-1.0)*72.0;q=s*+h[i>>3];t=(e+-1.0)*72.0;r=t*+h[i+8>>3];p=c[(c[(c[((p|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=s*+h[p>>3];t=t*+h[p+8>>3];p=c[b+16>>2]|0;i=c[p+8>>2]|0;j=c[i+4>>2]|0;k=j+-1|0;b=0;i=c[i>>2]|0;while(1){if((b|0)>=(j|0))break;l=c[i+4>>2]|0;m=l+-1|0;n=(b|0)==(k|0);f=0;g=c[i>>2]|0;while(1){if((f|0)>=(l|0))break;do if(f|b){o=+h[g>>3];if((f|0)==(m|0)&n){h[g>>3]=o+q;u=g+8|0;h[u>>3]=+h[u>>3]+r;break}else{h[g>>3]=o*d;u=g+8|0;h[u>>3]=+h[u>>3]*e;break}}else{h[g>>3]=+h[g>>3]+s;u=g+8|0;h[u>>3]=+h[u>>3]+t}while(0);f=f+1|0;g=g+16|0}if(c[i+8>>2]|0){u=i+16|0;h[u>>3]=+h[u>>3]+s;u=i+24|0;h[u>>3]=+h[u>>3]+t}if(c[i+12>>2]|0){u=i+32|0;h[u>>3]=+h[u>>3]+q;u=i+40|0;h[u>>3]=+h[u>>3]+r}b=b+1|0;i=i+48|0}b=c[p+96>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]*d;u=b+64|0;h[u>>3]=+h[u>>3]*e}b=c[p+100>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+q;u=b+64|0;h[u>>3]=+h[u>>3]+r}b=c[p+104>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+s;u=b+64|0;h[u>>3]=+h[u>>3]+t}return}function en(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0;i=b+16|0;g=c[i>>2]|0;b=g+32|0;h[b>>3]=+h[b>>3]*d;b=g+40|0;h[b>>3]=+h[b>>3]*e;b=g+16|0;h[b>>3]=+h[b>>3]*d;b=g+24|0;h[b>>3]=+h[b>>3]*e;b=c[g+12>>2]|0;if((b|0)!=0?(a[b+81>>0]|0)!=0:0){f=b+56|0;h[f>>3]=+h[f>>3]*d;f=b+64|0;h[f>>3]=+h[f>>3]*e;f=1;b=g}else{f=1;b=g}while(1){if((f|0)>(c[b+180>>2]|0))break;en(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[i>>2]|0}return}function fn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;k=c[b+16>>2]|0;b=c[k+8>>2]|0;j=c[b+4>>2]|0;l=d+8|0;b=c[b>>2]|0;g=0;while(1){if((g|0)>=(j|0))break;i=c[b+4>>2]|0;e=c[b>>2]|0;f=0;while(1){if((f|0)>=(i|0))break;h[e>>3]=+h[e>>3]-+h[d>>3];m=e+8|0;h[m>>3]=+h[m>>3]-+h[l>>3];e=e+16|0;f=f+1|0}if(c[b+8>>2]|0){m=b+16|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+24|0;h[m>>3]=+h[m>>3]-+h[l>>3]}if(c[b+12>>2]|0){m=b+32|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+40|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=b+48|0;g=g+1|0}b=c[k+96>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+108>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+100>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+104>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}return}function gn(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;j=k;g=+h[d>>3];i=b+16|0;b=c[i>>2]|0;e=b+32|0;h[e>>3]=+h[e>>3]-g;f=+h[d+8>>3];e=b+40|0;h[e>>3]=+h[e>>3]-f;e=b+16|0;h[e>>3]=+h[e>>3]-g;e=b+24|0;h[e>>3]=+h[e>>3]-f;e=c[b+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){m=e+56|0;h[m>>3]=+h[m>>3]-g;e=e+64|0;h[e>>3]=+h[e>>3]-f;e=1}else e=1;while(1){if((e|0)>(c[b+180>>2]|0))break;m=c[(c[b+184>>2]|0)+(e<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];gn(m,j);e=e+1|0;b=c[i>>2]|0}l=k;return}function hn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0,j=0;i=l;l=l+16|0;d=i;mM(a);e=a+16|0;b=c[e>>2]|0;f=+h[b+16>>3]*.013888888888888888;g=+h[b+24>>3]*.013888888888888888;b=Sy(a)|0;while(1){if(!b)break;j=c[(c[b+16>>2]|0)+132>>2]|0;h[j>>3]=+h[j>>3]-f;j=j+8|0;h[j>>3]=+h[j>>3]-g;b=Ty(a,b)|0}j=(c[e>>2]|0)+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];jn(a,d);$m(a,1);l=i;return}function jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0;g=l;l=l+16|0;f=g;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];jn(e,f);a=a+1|0}j=+h[b>>3];f=e+32|0;h[f>>3]=+h[f>>3]-j;i=+h[b+8>>3];b=e+40|0;h[b>>3]=+h[b>>3]-i;b=e+16|0;h[b>>3]=+h[b>>3]-j;b=e+24|0;h[b>>3]=+h[b>>3]-i;l=g;return}function kn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=(e|0)>2;n=0;o=0;j=c[f+4>>2]|0;b=c[f>>2]|0;while(1){if((o|0)>=(d|0)){b=0;break}i=c[(c[g+(o<<2)>>2]|0)+16>>2]|0;l=a[i+119>>0]|0;a:do if(!(l<<24>>24)){k=b+8|0;h[b>>3]=+k2();i=j+8|0;h[j>>3]=+k2();if(p){b=2;while(1){if((b|0)==(e|0)){j=n;b=k;break a}q=+k2();h[(c[f+(b<<2)>>2]|0)+(o<<3)>>3]=q;b=b+1|0}}else{j=n;b=k}}else{k=c[i+132>>2]|0;m=b+8|0;h[b>>3]=+h[k>>3];i=j+8|0;h[j>>3]=+h[k+8>>3];b:do if(p){j=2;b=k+16|0;while(1){if((j|0)==(e|0))break b;h[(c[f+(j<<2)>>2]|0)+(o<<3)>>3]=+h[b>>3];j=j+1|0;b=b+8|0}}while(0);j=(l&255)>1?1:n;b=m}while(0);n=j;o=o+1|0;j=i}while(1){if((b|0)>=(e|0))break;Is(d,c[f+(b<<2)>>2]|0);b=b+1|0}return n|0}function ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;d=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;n=wn(b,b,0.0)|0;o=wn(b,b,0.0)|0;a:do if(!(c[a+8>>2]|0)){e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;m=c[(c[j>>2]|0)+(f<<2)>>2]|0;h[(c[n+(m<<2)>>2]|0)+(e<<3)>>3]=-1.0;h[(c[k>>2]|0)+(m<<3)>>3]=-1.0;f=f+1|0}e=e+1|0}}else{e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=a+(e*20|0)+8|0;m=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;p=c[(c[j>>2]|0)+(f<<2)>>2]|0;l=-1.0/+g[(c[k>>2]|0)+(f<<2)>>2];h[(c[n+(p<<2)>>2]|0)+(e<<3)>>3]=l;h[(c[m>>2]|0)+(p<<3)>>3]=l;f=f+1|0}e=e+1|0}}while(0);b:do if(!(Bq(b,n,o)|0)){D_(d);d=0}else{f=0;j=0;m=b;while(1){if((j|0)>=(b|0))break b;k=o+(j<<2)|0;e=j;i=f;while(1){if((e|0)==(b|0))break;if((j|0)==(e|0))l=0.0;else{p=c[k>>2]|0;l=+h[(c[o+(e<<2)>>2]|0)+(e<<3)>>3]+ +h[p+(j<<3)>>3]+ +h[p+(e<<3)>>3]*-2.0}g[d+(i<<2)>>2]=l;e=e+1|0;i=i+1|0}f=f+m|0;j=j+1|0;m=m+-1|0}}while(0);xn(n);xn(o);return d|0}function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;if(c[a+8>>2]|0){d=nn(a,b)|0;f=0.0;e=0;p=0;while(1){if((p|0)>=(b|0))break;e=e+p|0;o=c[a+(p*20|0)>>2]|0;k=a+(p*20|0)+4|0;m=(O(p,b)|0)-e|0;n=a+(p*20|0)+8|0;j=1;while(1){if((j|0)>=(o|0))break;i=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((i|0)>=(p|0)){i=d+(m+i<<2)|0;s=+g[(c[n>>2]|0)+(j<<2)>>2];f=f+ +B(+(+g[i>>2]-s));g[i>>2]=s}j=j+1|0}p=p+1|0}if(0){b=c[15686]|0;h[q>>3]=f;g1(b,89903,q)|0}}else d=0;l=r;return d|0}function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m;i=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;j=uH(b<<2)|0;zq(h,b);d=0;f=0;k=b;while(1){if((d|0)>=(b|0))break;ir(d,a,b,j);e=d;g=f;while(1){if((e|0)==(b|0))break;c[i+(g<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0;g=g+1|0}d=d+1|0;f=f+k|0;k=k+-1|0}D_(j);Aq(h);l=m;return i|0}function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;i=n;j=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;k=uH(b<<2)|0;zq(i,b);d=0;f=0;m=b;while(1){if((d|0)>=(b|0))break;vq(d,a,b,k,i);e=d;h=f;while(1){if((e|0)==(b|0))break;g[j+(h<<2)>>2]=+(c[k+(e<<2)>>2]|0);e=e+1|0;h=h+1|0}d=d+1|0;f=f+m|0;m=m+-1|0}D_(k);Aq(i);l=n;return j|0}function pn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=a+8|0;d=c[r>>2]|0;e=0;f=0;while(1){if((f|0)>=(b|0))break;e=(c[a+(f*20|0)>>2]|0)+e|0;f=f+1|0}f=uH(e<<2)|0;q=uH(b<<2)|0;e=0;while(1){if((e|0)>=(b|0))break;c[q+(e<<2)>>2]=0;e=e+1|0}if(!(c[r>>2]|0)){h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;_r(a,h,q);i=a+(h*20|0)|0;j=c[i>>2]|0;k=a+(h*20|0)+4|0;l=+(j+-1|0);e=1;while(1){if((e|0)>=(j|0))break;p=c[(c[k>>2]|0)+(e<<2)>>2]|0;s=+((c[a+(p*20|0)>>2]|0)+-1|0)+l;g[f+(e<<2)>>2]=s-+((Zr(a,h,p,q)|0)<<1|0);e=e+1|0}$r(a,h,q);f=f+(c[i>>2]<<2)|0;h=h+1|0}f=on(a,b)|0}else{j=0;while(1){if((j|0)>=(b|0))break;_r(a,j,q);k=a+(j*20|0)|0;m=c[k>>2]|0;n=a+(j*20|0)+4|0;o=m+-2|0;p=a+(j*20|0)+8|0;i=1;while(1){if((i|0)>=(m|0))break;e=c[(c[n>>2]|0)+(i<<2)>>2]|0;h=o+(c[a+(e*20|0)>>2]|0)|0;s=+(h-((Zr(a,j,e,q)|0)<<1)|0);l=+g[(c[p>>2]|0)+(i<<2)>>2];if(l<s)l=+(h-((Zr(a,j,e,q)|0)<<1)|0);g[f+(i<<2)>>2]=l;i=i+1|0}$r(a,j,q);c[p>>2]=f;f=f+(c[k>>2]<<2)|0;j=j+1|0}f=nn(a,b)|0}D_(q);D_(c[r>>2]|0);c[r>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;d=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0}}while(0);return f|0}function qn(a,b,e,f,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0;M=l;l=l+80|0;L=M+56|0;K=M+48|0;A=M+40|0;u=M+32|0;t=M+24|0;s=M+16|0;p=M+8|0;o=M;q=k&4;J=k&3;a:do if((n|0)<0)e=0;else{if(0)EL();k=(m|0)==2;b:do if(k){if(0)E1(91878,24,1,c[15686]|0)|0;e=pn(a,b)|0;w=14}else{switch(m|0){case 1:{e=ln(a,b)|0;if(e|0){I=e;break b}Pw(0,91903,o)|0;Pw(3,91952,p)|0;w=15;break b}case 3:break;default:{w=15;break b}}if(0)E1(92005,21,1,c[15686]|0)|0;e=mn(a,b)|0;w=14}while(0);if((w|0)==14)if(!e)w=15;else I=e;do if((w|0)==15){if(0)E1(92027,26,1,c[15686]|0)|0;if(!(c[a+8>>2]|0)){I=on(a,b)|0;break}else{I=nn(a,b)|0;break}}while(0);if(0){H=c[15686]|0;h[s>>3]=+FL();g1(H,92054,s)|0;E1(92066,25,1,H)|0;EL()}c:do if((b|0)>1&(q|0)!=0)if((rn(a,b,f,j,q,J,k&1)|0)<0){u=0;t=0;e=-1;a=0;s=0;q=0;p=0;o=0;m=0;k=0}else{k=0;while(1){if((k|0)>=(j|0)){y=0;w=35;break c}m=f+(k<<2)|0;r=1.0;e=0;while(1){if((e|0)==(b|0))break;x=+B(+(+h[(c[m>>2]|0)+(e<<3)>>3]));r=x>r?x:r;e=e+1|0}r=1.0/r;e=0;while(1){if((e|0)==(b|0)){e=0;break}H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]*r;e=e+1|0}while(1){if((e|0)==(b|0))break;x=(+k2()+-.5)*1.0e-06;H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]+x;e=e+1|0}Is(b,c[m>>2]|0);k=k+1|0}}else{y=kn(0,b,j,f,i)|0;w=35}while(0);d:do if((w|0)==35){if(0){H=c[15686]|0;h[t>>3]=+FL();g1(H,92092,t)|0}if((b|0)==1|(n|0)==0){e=0;break a}if(0){H=c[15686]|0;h[u>>3]=+FL();g1(H,92054,u)|0;E1(89925,26,1,H)|0;EL()}s=j<<2;H=uH(s)|0;t=b<<2;a=O(t,j)|0;G=uH(a)|0;e=0;while(1){if((e|0)>=(j|0))break;m=G+((O(e,b)|0)<<2)|0;c[H+(e<<2)>>2]=m;o=f+(e<<2)|0;k=0;while(1){if((k|0)>=(b|0))break;g[m+(k<<2)>>2]=+h[(c[o>>2]|0)+(k<<3)>>3];k=k+1|0}e=e+1|0}e:do if(!J){p=b+-1|0;e=0;r=0.0;o=0;while(1){if((o|0)>=(p|0))break e;q=b-o|0;m=e;k=1;while(1){e=m+1|0;if((k|0)>=(q|0))break;m=e;r=+g[I+(e<<2)>>2]+r;k=k+1|0}o=o+1|0}}else r=+(b|0)*.5*+(b+-1|0);while(0);C=(O(b+1|0,b)|0)/2|0;D=(J|0)==2;if(D)ct(C,I);dt(C,I);E=b<<3;m=uH(E)|0;H3(m|0,0,E|0)|0;F=b+-1|0;e=0;o=0;while(1){if((o|0)>=(F|0)){e=b;k=0;o=0;break}p=b-o|0;v=0.0;k=1;while(1){e=e+1|0;if((k|0)>=(p|0))break;x=+g[I+(e<<2)>>2];z=m+(k+o<<3)|0;h[z>>3]=+h[z>>3]-x;v=v+x;k=k+1|0}z=m+(o<<3)|0;h[z>>3]=+h[z>>3]-v;o=o+1|0}while(1){if((k|0)>=(b|0))break;g[I+(o<<2)>>2]=+h[m+(k<<3)>>3];z=e+o|0;e=e+-1|0;k=k+1|0;o=z}z=uH(s)|0;c[z>>2]=uH(a)|0;e=1;while(1){if((e|0)>=(j|0))break;c[z+(e<<2)>>2]=(c[z>>2]|0)+((O(e,b)|0)<<2);e=e+1|0}p=uH(t)|0;o=uH(t)|0;k=uH(C<<2)|0;if(0){w=c[15686]|0;h[A>>3]=+FL();g1(w,92054,A)|0;E1(89952,15,1,w)|0;EL()}w=(y|0)==0;y=c[15686]|0;e=0;q=0;x=1797693134862315708145274.0e284;while(1){if(!(q<<24>>24==0&(e|0)<(n|0)))break;H3(m|0,0,E|0)|0;if(D){et(C,I,k);u=0;a=0}else{u=0;a=0}while(1){if((u|0)>=(F|0)){q=b;s=0;a=0;break}t=b-u+-1|0;at(t,0.0,o);q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;at(t,+g[(c[A>>2]|0)+(u<<2)>>2],p);Xs(t,p,-1.0,(c[A>>2]|0)+(u<<2)+4|0);ct(t,p);Ws(t,p,o,o);q=q+1|0}ft(t,o);q=0;while(1){if((q|0)>=(t|0))break;s=o+(q<<2)|0;v=+g[s>>2];if(v>=3402823466385288598117041.0e14|v<0.0)g[s>>2]=0.0;q=q+1|0}q=a+1|0;a=u+1|0;f:do if(D){v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;A=k+(q<<2)|0;N=+g[A>>2]*+g[o+(s<<2)>>2];g[A>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}else{v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;N=+g[o+(s<<2)>>2];g[k+(q<<2)>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}while(0);A=m+(u<<3)|0;h[A>>3]=+h[A>>3]-v;u=a;a=q}while(1){if((s|0)>=(b|0)){q=0;break}g[k+(a<<2)>>2]=+h[m+(s<<3)>>3];A=q+a|0;q=q+-1|0;s=s+1|0;a=A}while(1){if((q|0)>=(j|0)){v=0.0;q=0;break}Us(k,b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0);q=q+1|0}while(1){if((q|0)>=(j|0))break;v=+_s(b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0)+v;q=q+1|0}v=v*2.0+r;q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;Us(I,b,c[A>>2]|0,p);v=v-+_s(b,c[A>>2]|0,p);q=q+1|0}P=x-v;N=+h[22909];q=(v<N?1:(P>=0.0?P:-P)/x<N)&1;a=0;while(1){if((a|0)>=(j|0))break;t=H+(a<<2)|0;s=c[t>>2]|0;g:do if(w){if((Fq(I,s,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}}else{Zs(b,s,p);if((Fq(I,p,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}else s=0;while(1){if((s|0)>=(b|0))break g;if((d[(c[(c[i+(s<<2)>>2]|0)+16>>2]|0)+119>>0]|0)<=1)c[(c[t>>2]|0)+(s<<2)>>2]=c[p+(s<<2)>>2];s=s+1|0}}while(0);a=a+1|0}if(((e|0)%5|0|0)==0&0!=0?(h[K>>3]=v,g1(y,90277,K)|0,((e+5|0)%50|0|0)==0):0)n3(10,y)|0;e=e+1|0;x=v}if(!0)q=0;else{N=+sn(H,I,j,b,J);P=+FL();h[L>>3]=N;c[L+8>>2]=e;h[L+16>>3]=P;g1(y,89968,L)|0;q=0}while(1){if((q|0)>=(j|0)){u=z;t=I;a=G;s=H;q=z;break d}a=H+(q<<2)|0;t=f+(q<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[t>>2]|0)+(s<<3)>>3]=+g[(c[a>>2]|0)+(s<<2)>>2];s=s+1|0}q=q+1|0}}while(0);D_(a);D_(s);D_(t);if(u|0){D_(c[u>>2]|0);D_(q)}D_(p);D_(o);D_(m);D_(k)}while(0);l=M;return e|0}function rn(b,d,e,f,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;R=l;l=l+32|0;o=R+24|0;Q=R+8|0;H=R+4|0;N=R;M=(d|0)<50?d:50;P=vH(M<<2)|0;G=d<<3;n=vH(O(G,M)|0)|0;m=0;while(1){if((m|0)>=(M|0))break;c[P+(m<<2)>>2]=n+((O(m,d)|0)<<3);m=m+1|0}E=M<<1;E=(E|0)>50?E:50;E=(E|0)>(d|0)?d:E;c[o>>2]=0;sr(b,d,E,o,k);tr(c[o>>2]|0,d,E);mt(c[o>>2]|0,E,d,P,M);D_(c[c[o>>2]>>2]|0);D_(c[o>>2]|0);E=d<<2;L=vH(E)|0;m=0;while(1){if((m|0)>=(d|0))break;c[L+(m<<2)>>2]=-1;m=m+1|0}zq(Q,d);J=c[b+8>>2]|0;I=(k|0)!=0;if(I)es(b,d);C=vH(E)|0;K=vH(160)|0;n=vH(d*160|0)|0;D=vH(160)|0;m=0;while(1){if((m|0)==40)break;c[D+(m<<2)>>2]=n+((O(m,d)|0)<<2);m=m+1|0}m=(g2()|0)%(d|0)|0;c[L+(m<<2)>>2]=0;c[K>>2]=m;n=c[D>>2]|0;if(I){cr(m,b,d,n);n=0;o=0}else{vq(m,b,d,n,Q);n=0;o=0}while(1){if((o|0)>=(d|0)){r=1;break}F=c[(c[D>>2]|0)+(o<<2)>>2]|0;c[C+(o<<2)>>2]=F;A=(F|0)>(n|0);m=A?o:m;n=A?F:n;o=o+1|0}while(1){if((r|0)==40){m=0;break}c[L+(m<<2)>>2]=r;c[K+(r<<2)>>2]=m;t=D+(r<<2)|0;n=c[t>>2]|0;if(I){cr(m,b,d,n);q=0;n=0}else{vq(m,b,d,n,Q);q=0;n=0}while(1){if((q|0)>=(d|0))break;o=C+(q<<2)|0;F=c[o>>2]|0;k=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=(F|0)<(k|0)?F:k;c[o>>2]=k;if((k|0)<=(n|0)){if((k|0)==(n|0)?((g2()|0)%(q+1|0)|0|0)==0:0){n=c[o>>2]|0;m=q}}else{n=k;m=q}q=q+1|0}r=r+1|0}while(1){if((m|0)>=(d|0))break;c[C+(m<<2)>>2]=-1;m=m+1|0}w=vH(E)|0;F=vH(d<<4)|0;x=d+-1|0;y=x<<2;A=0;o=0;k=0;n=0;z=0;while(1){if((z|0)>=(d|0))break;m=L+(z<<2)|0;a:do if((c[m>>2]|0)>-1){t=F+(z<<4)+4|0;c[t>>2]=vH(y)|0;v=vH(y)|0;c[F+(z<<4)+8>>2]=v;c[F+(z<<4)>>2]=x;a[F+(z<<4)+12>>0]=1;r=D+(c[m>>2]<<2)|0;m=0;while(1){if((m|0)==(z|0)){q=z;break}c[(c[t>>2]|0)+(m<<2)>>2]=m;c[v+(m<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];m=m+1|0}while(1){m=q+1|0;if((q|0)==(x|0)){m=x;break a}c[(c[t>>2]|0)+(q<<2)>>2]=m;c[v+(q<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];q=m}}else{if((n|0)<40){k=vH(E)|0;o=vH(E)|0;n=d;m=1}else m=0;a[F+(z<<4)+12>>0]=m;c[F+(z<<4)+4>>2]=k;c[F+(z<<4)+8>>2]=o;c[F+(z<<4)>>2]=40;m=0;while(1){if((m|0)==40)break;c[k+(m<<2)>>2]=c[K+(m<<2)>>2];c[o+(m<<2)>>2]=c[(c[D+(m<<2)>>2]|0)+(z<<2)>>2];m=m+1|0}o=o+160|0;k=k+160|0;n=n+-40|0;m=40}while(0);A=m+A|0;z=z+1|0}D_(C);D_(w);if(D|0){D_(c[D>>2]|0);D_(D)}D=vH(d*20|0)|0;q=A+d<<2;r=vH(q)|0;v=(j|0)==2;q=vH(q)|0;t=0;while(1){if((t|0)>=(d|0))break;c[D+(t*20|0)+4>>2]=r;c[D+(t*20|0)+8>>2]=q;m=(c[F+(t<<4)>>2]|0)+1|0;w=D+(t*20|0)|0;c[w>>2]=m;o=(c[F+(t<<4)+8>>2]|0)+-4|0;k=F+(t<<4)+4|0;b:do if(v){p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=+(c[o+(n<<2)>>2]|0);u=-1.0/(u*u);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}else{p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=-1.0/+(c[o+(n<<2)>>2]|0);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}while(0);c[r>>2]=t;g[q>>2]=p;E=c[w>>2]|0;q=q+(E<<2)|0;r=r+(E<<2)|0;t=t+1|0}C=vH(f<<2)|0;c[C>>2]=vH(O(f<<3,M)|0)|0;m=1;while(1){if((m|0)>=(f|0))break;c[C+(m<<2)>>2]=(c[C>>2]|0)+((O(m,M)|0)<<3);m=m+1|0}c:do if(i){m=0;while(1){if((m|0)>=(f|0))break;o=C+(m<<2)|0;n=0;while(1){if((n|0)>=(M|0))break;h[(c[o>>2]|0)+(n<<3)>>3]=0.0;n=n+1|0}m=m+1|0}if((f|0)!=2){m=0;while(1){if((m|0)>=(f|0)){m=0;break c}h[(c[C+(m<<2)>>2]|0)+(m<<3)>>3]=1.0;m=m+1|0}}h[c[C>>2]>>3]=1.0;m=C+4|0;if(!((nt(P,M,d,c[m>>2]|0)|0)<<24>>24)){n=c[m>>2]|0;m=0;while(1){if((m|0)>=(M|0))break;h[n+(m<<3)>>3]=0.0;m=m+1|0}h[n+8>>3]=1.0;m=0}else m=0}else{n=0;while(1){if((n|0)>=(f|0)){m=0;break c}o=C+(n<<2)|0;m=0;while(1){if((m|0)>=(M|0))break;u=+(g2()|0)*4.656612875245797e-10;h[(c[o>>2]|0)+(m<<3)>>3]=u;m=m+1|0}n=n+1|0}}while(0);while(1){if((m|0)>=(f|0))break;Ss(P,d,M,c[C+(m<<2)>>2]|0,c[e+(m<<2)>>2]|0);m=m+1|0}c[H>>2]=0;c[N>>2]=0;Hs(D,P,d,M,H);Fs(P,c[H>>2]|0,M,d,M,N);D_(c[c[H>>2]>>2]|0);D_(c[H>>2]|0);z=vH(G)|0;A=vH(M<<3)|0;m=0;n=0;p=+tn(e,F,f,d,j);d:while(1){if((n|0)<50&m<<24>>24==0)x=0;else break;while(1){if((x|0)>=(f|0))break;y=e+(x<<2)|0;o=0;while(1){if((o|0)>=(d|0))break;q=z+(o<<3)|0;h[q>>3]=0.0;r=(c[F+(o<<4)+8>>2]|0)+-4|0;t=c[D+(o*20|0)+4>>2]|0;v=c[D+(o*20|0)+8>>2]|0;w=D+(o*20|0)|0;s=0.0;k=1;while(1){if((k|0)>=(c[w>>2]|0))break;m=c[t+(k<<2)>>2]|0;u=+gs(e,f,o,m);if(u>1.0e-30){u=-(+g[v+(k<<2)>>2]*+(c[r+(k<<2)>>2]|0))/u;h[q>>3]=u*+h[(c[y>>2]|0)+(m<<3)>>3]+ +h[q>>3];s=s-u}k=k+1|0}h[q>>3]=+h[q>>3]+ +h[(c[y>>2]|0)+(o<<3)>>3]*s;o=o+1|0}Es(P,M,d,z,A);m=C+(x<<2)|0;if(Eq(c[N>>2]|0,c[m>>2]|0,A,M,.001,M,0)|0){n=-1;break d}Ss(P,d,M,c[m>>2]|0,c[y>>2]|0);x=x+1|0}if(!(n&1)){u=+tn(e,F,f,d,j);p=+B(+(u-p))/(u+1.0e-10);m=p<+h[22909]&1;p=u}else m=0;n=n+1|0}D_(A);D_(z);if(I){fs(b,d,J);m=0}else m=0;while(1){if((m|0)>=(d|0))break;if(a[F+(m<<4)+12>>0]|0){D_(c[F+(m<<4)+4>>2]|0);D_(c[F+(m<<4)+8>>2]|0)}m=m+1|0}D_(F);D_(c[D+4>>2]|0);D_(c[D+8>>2]|0);D_(D);D_(L);D_(K);D_(c[C>>2]|0);D_(C);m=c[N>>2]|0;if(m|0){D_(c[m>>2]|0);D_(c[N>>2]|0)}D_(c[P>>2]|0);D_(P);Aq(Q);l=R;return n|0}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;q=e+-1|0;o=(f|0)==2;h=0.0;f=0;m=0;while(1){if((m|0)>=(q|0))break;p=e-m|0;n=1;while(1){f=f+1|0;if((n|0)>=(p|0))break;k=n+m|0;i=0.0;j=0;while(1){if((j|0)>=(d|0))break;r=c[a+(j<<2)>>2]|0;l=+g[r+(m<<2)>>2]-+g[r+(k<<2)>>2];i=i+l*l;j=j+1|0}i=+C(+i);l=+g[b+(f<<2)>>2];if(o){i=1.0/+C(+l)-i;i=i*i}else{i=1.0/l-i;i=i*i}n=n+1|0;h=i*l+h}m=m+1|0}return +h}function tn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;a:do if((f|0)==2){g=0.0;l=0;while(1){if((l|0)>=(e|0))break a;n=c[b+(l<<4)>>2]|0;o=b+(l<<4)+4|0;m=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(n|0))break;j=c[(c[o>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[m>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/(p*p)+g}k=k+1|0}l=l+1|0}}else{l=0;g=0.0;while(1){if((l|0)>=(e|0))break a;m=c[b+(l<<4)>>2]|0;n=b+(l<<4)+4|0;o=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(m|0))break;j=c[(c[n>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[o>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/p+g}k=k+1|0}l=l+1|0}}while(0);return +g}function un(a){a=+a;return +(+C(+a)*a)}function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;i=+h[a+(f<<3)>>3]-+h[b+(f<<3)>>3];h[d+(f<<3)>>3]=i;e=i*i+e;f=f+1|0}return +(+C(+e))}function wn(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=uH(a<<2)|0;f=0;g=uH(O(a<<3,b)|0)|0;while(1){if((f|0)>=(a|0))break;c[i+(f<<2)>>2]=g;e=0;while(1){if((e|0)>=(b|0))break;h[g+(e<<3)>>3]=d;e=e+1|0}f=f+1|0;g=g+(b<<3)|0}return i|0}function xn(a){a=a|0;if(a|0){D_(c[a>>2]|0);D_(a)}return}function yn(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+16|0;n=ay(b)|0;m=by(b)|0;k=nx(b,2,90566,0)|0;a:do if(!d){h[22909]=+(n|0)*.0001;aH(b,105860,183272);g=xx(c[b+60>>2]|0,90006)|0;if(!g)e=.99;else e=+b2(g);h[22911]=e;g=uH((n<<2)+4|0)|0;j=b+16|0;c[(c[j>>2]|0)+152>>2]=g;g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[(c[j>>2]|0)+152>>2]|0)+(g<<2)>>2]=i;p=c[i+16>>2]|0;c[p+120>>2]=g;c[p+124>>2]=-1;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}else{h[22909]=.0001;aH(b,105860,183272);g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[i+16>>2]|0)+120>>2]=g;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}while(0);g=xx(b,90014)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){e=+h[22909];f=+b2(g);if(!(e>f))e=f}else e=e/+(((m|0)>1?m:1)|0)*+C(+(+(n|0)))+1.0;h[22910]=e;if(!(c[46363]|d)){d=wn(n,n,e)|0;p=b+16|0;c[(c[p>>2]|0)+160>>2]=d;d=wn(n,n,1.0)|0;c[(c[p>>2]|0)+164>>2]=d;d=wn(n,c[46366]|0,1.0)|0;c[(c[p>>2]|0)+168>>2]=d;d=Cn(n,n,c[46366]|0)|0;c[(c[p>>2]|0)+172>>2]=d}l=o;return n|0}function zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=0;e=0;j=Jx(a,b)|0;a:while(1){if(!j)break;h=c[j>>2]&3;g=c[((h|0)==2?j:j+-48|0)+40>>2]|0;h=c[((h|0)==3?j:j+48|0)+40>>2]|0;do if((g|0)!=(h|0)){i=(h|0)==(b|0);if((e|0)!=1){f=i?g:h;c[d>>2]=f;e=e+1|0;break}if(!((g|0)==(f|0)&i)?!((g|0)==(b|0)&(h|0)==(f|0)):0){e=2;break a}else e=1}while(0);j=Kx(a,j,b)|0}return e|0}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+60|0;a:while(1){b:while(1){if(!b)break a;switch(zn(a,b,f)|0){case 0:{e=5;break b}case 1:{e=8;break b}default:b=0}}if((e|0)==5){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=0;continue}else if((e|0)==8){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=c[f>>2]|0;continue}}l=h;return d|0}function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;k=l;l=l+32|0;i=k+8|0;g=k;b=Ex(a,b)|0;e=0.0;while(1){if(!b)break;switch(Dn(b,d,g)|0){case 0:{f=+h[g>>3];break}case 2:{c[i>>2]=ry(a)|0;h[i+8>>3]=1.0;Pw(3,90026,i)|0;j=6;break}default:j=6}if((j|0)==6){j=0;h[g>>3]=1.0;f=1.0}h[(c[b+16>>2]|0)+136>>3]=f;b=Gx(a,b)|0;e=f+e}l=k;return +e}function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0;j=uH((a<<2)+4|0)|0;k=(b<<2)+4|0;l=d<<3;g=0;while(1){if((g|0)>=(a|0))break;i=j+(g<<2)|0;c[i>>2]=uH(k)|0;f=0;while(1){if((f|0)>=(b|0))break;e=uH(l)|0;c[(c[i>>2]|0)+(f<<2)>>2]=e;e=0;while(1){if((e|0)>=(d|0))break;h[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+(e<<3)>>3]=0.0;e=e+1|0}f=f+1|0}c[(c[i>>2]|0)+(f<<2)>>2]=0;g=g+1|0}c[j+(g<<2)>>2]=0;return j|0}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;do if((d|0)!=0?(f=yx(b,d)|0,(a[f>>0]|0)!=0):0){c[i>>2]=e;if(((N1(f,98183,i)|0)>=1?(g=+h[e>>3],!(g<0.0)):0)?g!=0.0|(c[46363]|0)!=0:0){b=0;break}c[j>>2]=f;Pw(0,90053,j)|0;b=2}else b=1;while(0);l=k;return b|0}function En(a){a=a|0;return yn(a,0)|0}function Fn(a){a=a|0;a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);if(!(c[46363]|0)){xn(c[(c[a>>2]|0)+160>>2]|0);xn(c[(c[a>>2]|0)+164>>2]|0);xn(c[(c[a>>2]|0)+168>>2]|0);Gn(c[(c[a>>2]|0)+172>>2]|0);c[(c[a>>2]|0)+172>>2]=0}return}function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(a|0){f=0;while(1){g=a+(f<<2)|0;b=c[g>>2]|0;if(!b)break;else e=0;while(1){d=c[b+(e<<2)>>2]|0;if(!d)break;D_(d);e=e+1|0;b=c[g>>2]|0}D_(b);f=f+1|0}D_(a)}return}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+(b|0);b=a+16|0;while(1){if((d|0)>=(c[46366]|0))break;f=+k2()*e;h[(c[(c[b>>2]|0)+132>>2]|0)+(d<<3)>>3]=f;d=d+1|0}return}function In(a,b){a=a|0;b=b|0;Hn(a,b,2);return}function Jn(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;e=+(b|0);f=+k2()*e;d=a+16|0;h[c[(c[d>>2]|0)+132>>2]>>3]=f;e=+k2()*e;h[(c[(c[d>>2]|0)+132>>2]|0)+8>>3]=e;if((c[46366]|0)>2)In(a,b);return}function Kn(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(0)E1(90071,26,1,c[15686]|0)|0;d=pm(b,d,2)|0;a:do if((d|0)!=1){if(!(c[46027]|d)){Pw(0,90098,e)|0;c[46027]=1}e=b+16|0;d=0;while(1){b=c[(c[(c[e>>2]|0)+152>>2]|0)+(d<<2)>>2]|0;if(!b)break a;if(!(a[(c[b+16>>2]|0)+119>>0]|0))Jn(b,1);d=d+1|0}}while(0);l=f;return}function Ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;p=q+80|0;n=q;if(0){E1(90147,25,1,c[15686]|0)|0;EL()}o=a+16|0;f=c[o>>2]|0;k=c[f+164>>2]|0;f=c[f+160>>2]|0;m=0;while(1){if((m|0)>=(b|0))break;i=f+(m<<2)|0;j=k+(m<<2)|0;e=0;while(1){if((e|0)==(m|0))break;g=+h[(c[i>>2]|0)+(e<<3)>>3];g=1.0/(g*g);d=c[(c[o>>2]|0)+152>>2]|0;d=Rx(a,c[d+(m<<2)>>2]|0,c[d+(e<<2)>>2]|0,0,0)|0;if(d)g=+h[(c[d+16>>2]|0)+128>>3]*g;h[(c[k+(e<<2)>>2]|0)+(m<<3)>>3]=g;h[(c[j>>2]|0)+(e<<3)>>3]=g;e=e+1|0}m=m+1|0}a=c[46366]|0;e=0;while(1){if((e|0)<(b|0))d=0;else break;while(1){if((d|0)>=(a|0))break;h[(c[(c[(c[o>>2]|0)+168>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}e=e+1|0}i=0;while(1){d=c[(c[(c[o>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!d)break;a=d+16|0;d=0;while(1){if((d|0)>=(b|0))break;a:do if((i|0)!=(d|0)){g=+vn(c[(c[a>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[o>>2]|0)+152>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+132>>2]|0,n);f=c[46366]|0;g=1.0/g;e=0;while(1){if((e|0)>=(f|0))break a;m=c[o>>2]|0;r=+h[n+(e<<3)>>3];r=(r-+h[(c[(c[m+160>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3]*r*g)*+h[(c[(c[m+164>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3];h[(c[(c[(c[m+172>>2]|0)+(i<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)>>3]=r;m=(c[(c[m+168>>2]|0)+(i<<2)>>2]|0)+(e<<3)|0;h[m>>3]=+h[m>>3]+r;e=e+1|0}}while(0);d=d+1|0}i=i+1|0}if(0){o=c[15686]|0;h[p>>3]=+FL();g1(o,90173,p)|0}l=q;return}function Mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0;i=l;l=l+32|0;g=i+24|0;f=i+8|0;e=i;j=+h[22909];h[22831]=j*j;while(1){d=Nn(a,b)|0;if(!d)break;On(a,b,d)}if(!0)b=a+16|0;else{d=c[15686]|0;h[e>>3]=+Pn(a,b);g1(d,90183,e)|0;b=a+16|0;k=c[(c[b>>2]|0)+156>>2]|0;e=(k|0)==(c[46365]|0)?90197:191979;j=+FL();c[f>>2]=k;c[f+4>>2]=e;h[f+8>>3]=j;g1(d,90199,f)|0}b=c[(c[b>>2]|0)+156>>2]|0;if((b|0)==(c[46365]|0)){k=ry(a)|0;c[g>>2]=b;c[g+4>>2]=k;Pw(0,90226,g)|0}l=i;return}function Nn(a,b){a=a|0;b=b|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;o=(c[46029]|0)+1|0;c[46029]=o;a=c[a+16>>2]|0;if((c[a+156>>2]|0)<(c[46365]|0)){m=c[46366]|0;n=a+152|0;k=a+168|0;a=0;e=0.0;j=0;while(1){if((j|0)>=(b|0))break;g=c[(c[n>>2]|0)+(j<<2)>>2]|0;if((d[(c[g+16>>2]|0)+119>>0]|0)<=1){i=0.0;f=0;while(1){if((f|0)>=(m|0))break;s=+h[(c[(c[k>>2]|0)+(j<<2)>>2]|0)+(f<<3)>>3];i=s*s+i;f=f+1|0}if(i>e){a=g;e=i}}j=j+1|0}if(!(e<+h[22831])){if(0!=0&((o|0)%100|0|0)==0?(p=c[15686]|0,h[q>>3]=+C(+e),g1(p,90277,q)|0,((c[46029]|0)%1e3|0|0)==0):0)n3(10,p)|0}else a=0}else a=0;l=r;return a|0}function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;k=d+16|0;m=c[(c[k>>2]|0)+120>>2]|0;f=c[46028]|0;if(!f){g=c[46366]|0;g=vH(O(g<<3,g)|0)|0}else{g=c[46366]|0;g=xH(f,O(g<<3,g)|0)|0}c[46028]=g;Qn(a,b,m,g);i=c[46366]|0;j=a+16|0;f=0;while(1){if((f|0)>=(i|0))break;h[182656+(f<<3)>>3]=-+h[(c[(c[(c[j>>2]|0)+168>>2]|0)+(m<<2)>>2]|0)+(f<<3)>>3];f=f+1|0}Xt(g,182736,182656,i);f=0;while(1){if((f|0)>=(c[46366]|0))break;e=+h[22911];e=(1.0-e)*2.0*+k2()+e;i=182736+(f<<3)|0;e=e*+h[i>>3];h[i>>3]=e;i=(c[(c[k>>2]|0)+132>>2]|0)+(f<<3)|0;h[i>>3]=+h[i>>3]+e;f=f+1|0}k=(c[j>>2]|0)+156|0;c[k>>2]=(c[k>>2]|0)+1;Rn(a,b,m);if(cM()|0){g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;e=+B(+(+h[182736+(f<<3)>>3]))+e;f=f+1|0}e=+C(+e);m=c[15686]|0;c[n>>2]=ry(d)|0;h[n+8>>3]=e;g1(m,90268,n)|0}l=o;return}function Pn(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=b+-1|0;n=a+16|0;o=c[46366]|0;g=0;d=0.0;a:while(1){if((g|0)>=(q|0))break;m=c[n>>2]|0;p=c[m+152>>2]|0;j=g+1|0;k=(c[p+(g<<2)>>2]|0)+16|0;l=m+164|0;m=m+160|0;i=j;while(1){if((i|0)>=(b|0)){g=j;continue a}f=(c[p+(i<<2)>>2]|0)+16|0;a=0;e=0.0;while(1){if((a|0)>=(o|0))break;r=+h[(c[(c[k>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];a=a+1|0;e=r*r+e}r=+h[(c[(c[m>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3];r=((+C(+e)*-2.0+r)*r+e)*+h[(c[(c[l>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3]+d;i=i+1|0;d=r}}return +d}function Qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+80|0;w=x;v=c[a+16>>2]|0;k=c[v+164>>2]|0;m=c[v+160>>2]|0;v=c[v+152>>2]|0;j=c[v+(d<<2)>>2]|0;g=c[46366]|0;a=0;while(1){if((a|0)>=(g|0))break;i=O(g,a)|0;f=0;while(1){if((f|0)==(g|0))break;h[e+(i+f<<3)>>3]=0.0;f=f+1|0}a=a+1|0}u=c[46366]|0;t=j+16|0;s=k+(d<<2)|0;k=m+(d<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;a:do if((j|0)!=(d|0)){f=(c[v+(j<<2)>>2]|0)+16|0;r=0.0;a=0;while(1){if((a|0)>=(u|0))break;q=+h[(c[(c[t>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];h[w+(a<<3)>>3]=q;r=q*q+r;a=a+1|0}n=1.0/+un(r);i=0;while(1){if((i|0)>=(u|0))break a;f=(c[s>>2]|0)+(j<<3)|0;g=(c[k>>2]|0)+(j<<3)|0;o=+h[w+(i<<3)>>3];a=0;while(1){p=+h[f>>3];q=+h[g>>3];if((a|0)==(i|0))break;m=e+((O(u,a)|0)+i<<3)|0;h[m>>3]=+h[m>>3]+p*n*q*o*+h[w+(a<<3)>>3];a=a+1|0}m=e+((O(u,i)|0)+i<<3)|0;h[m>>3]=(1.0-q*n*(r-o*o))*p+ +h[m>>3];i=i+1|0}}while(0);j=j+1|0}f=c[46366]|0;i=1;while(1){if((i|0)>=(f|0))break;g=O(f,i)|0;a=0;while(1){if((a|0)==(i|0))break;h[e+(g+a<<3)>>3]=+h[e+((O(f,a)|0)+i<<3)>>3];a=a+1|0}i=i+1|0}l=x;return}function Rn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;m=l;l=l+80|0;k=m;j=a+16|0;f=c[j>>2]|0;g=c[(c[f+152>>2]|0)+(d<<2)>>2]|0;e=c[46366]|0;f=f+168|0;a=0;while(1){if((a|0)>=(e|0))break;h[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]=0.0;a=a+1|0}f=g+16|0;a=0;while(1){if((a|0)>=(b|0))break;a:do if((a|0)!=(d|0)){i=+vn(c[(c[f>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[j>>2]|0)+152>>2]|0)+(a<<2)>>2]|0)+16>>2]|0)+132>>2]|0,k);g=c[46366]|0;i=1.0/i;e=0;while(1){if((e|0)>=(g|0))break a;n=c[j>>2]|0;q=c[n+172>>2]|0;r=(c[(c[q+(d<<2)>>2]|0)+(a<<2)>>2]|0)+(e<<3)|0;o=+h[k+(e<<3)>>3];o=(o-+h[(c[(c[n+160>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]*o*i)*+h[(c[(c[n+164>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3];h[r>>3]=o;n=c[n+168>>2]|0;s=(c[n+(d<<2)>>2]|0)+(e<<3)|0;h[s>>3]=+h[s>>3]+o;q=(c[(c[q+(a<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)|0;o=+h[q>>3];p=-+h[r>>3];h[q>>3]=p;n=(c[n+(a<<2)>>2]|0)+(e<<3)|0;h[n>>3]=p-o+ +h[n>>3];e=e+1|0}}while(0);a=a+1|0}l=m;return}function Sn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;d=a+16|0;g=c[46030]|0;b=c[(c[d>>2]|0)+124>>2]|0;while(1){if((b|0)<=0)break;i=(b+-1|0)/2|0;j=g+(i<<2)|0;e=c[j>>2]|0;f=e+16|0;if(+h[(c[f>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[j>>2]=a;c[(c[d>>2]|0)+124>>2]=i;c[g+(b<<2)>>2]=e;c[(c[f>>2]|0)+124>>2]=b;b=i}return}function Tn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=a+16|0;j=c[46031]|0;k=c[46030]|0;g=c[(c[i>>2]|0)+124>>2]|0;while(1){e=g<<1|1;if((e|0)>=(j|0))break;d=e+1|0;if((d|0)<(j|0)){f=c[k+(d<<2)>>2]|0;b=c[k+(e<<2)>>2]|0;if(+h[(c[f+16>>2]|0)+136>>3]<+h[(c[b+16>>2]|0)+136>>3]){e=d;b=f}else l=6}else{b=c[k+(e<<2)>>2]|0;l=6}if((l|0)==6)l=0;d=b+16|0;if(+h[(c[i>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[k+(e<<2)>>2]=a;c[(c[i>>2]|0)+124>>2]=e;c[k+(g<<2)>>2]=b;c[(c[d>>2]|0)+124>>2]=g;g=e}return}function Un(a){a=a|0;var b=0,d=0;b=(c[a+16>>2]|0)+124|0;if((c[b>>2]|0)>=0)qa(90283,90303,643,90311);d=c[46031]|0;c[46031]=d+1;c[b>>2]=d;c[(c[46030]|0)+(d<<2)>>2]=a;if((d|0)>0)Sn(a);return}function Vn(){var a=0,b=0,d=0,e=0;b=c[46031]|0;if(!b)a=0;else{e=c[46030]|0;a=c[e>>2]|0;d=b+-1|0;c[46031]=d;d=c[e+(d<<2)>>2]|0;c[e>>2]=d;c[(c[d+16>>2]|0)+124>>2]=0;if((b|0)>2)Tn(d);c[(c[a+16>>2]|0)+124>>2]=-1}return a|0}function Wn(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;c[46030]=uH((b<<2)+4|0)|0;if(0){E1(90325,28,1,c[15686]|0)|0;EL()}b=Sy(a)|0;while(1){if(!b)break;Xn(a,b);b=Ty(a,b)|0}if(0){a=c[15686]|0;h[d>>3]=+FL();g1(a,90173,d)|0}D_(c[46030]|0);l=e;return}function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0;e=c[(c[a+16>>2]|0)+152>>2]|0;f=+h[22910];d=0;while(1){g=c[e+(d<<2)>>2]|0;if(!g)break;h[(c[g+16>>2]|0)+136>>3]=f;d=d+1|0}c[46032]=b;k=c[b+16>>2]|0;h[k+136>>3]=0.0;c[k+128>>2]=0;Un(b);a:while(1){k=Vn()|0;if(!k)break;d=c[46032]|0;j=k+16|0;if((k|0)!=(d|0))Yn(a,d,k,+h[(c[j>>2]|0)+136>>3]);i=Jx(a,k)|0;while(1){if(!i)continue a;d=c[i>>2]&3;b=c[((d|0)==3?i:i+48|0)+40>>2]|0;if((b|0)==(k|0))b=c[((d|0)==2?i:i+-48|0)+40>>2]|0;d=c[j>>2]|0;f=+h[(c[i+16>>2]|0)+136>>3]+ +h[d+136>>3];e=c[b+16>>2]|0;g=e+136|0;do if(+h[g>>3]>f){h[g>>3]=f;if((c[e+124>>2]|0)>-1){Sn(b);break}else{c[e+128>>2]=(c[d+128>>2]|0)+1;Un(b);break}}while(0);i=Kx(a,i,k)|0}}return}function Yn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;b=c[(c[b+16>>2]|0)+120>>2]|0;d=c[(c[d+16>>2]|0)+120>>2]|0;a=c[(c[a+16>>2]|0)+160>>2]|0;h[(c[a+(d<<2)>>2]|0)+(b<<3)>>3]=e;h[(c[a+(b<<2)>>2]|0)+(d<<3)>>3]=e;return}function Zn(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;_n(a);return}function _n(a){a=a|0;var b=0,d=0,e=0,f=0;b=ay(a)|0;e=uH(b*56|0)|0;b=uH((b<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d*56|0);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;$n(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function $n(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function ao(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;m=u+32|0;i=u+24|0;g=u+16|0;j=u;t=u+72|0;p=u+40|0;if(ay(b)|0){Zn(b);f=xx(b,93136)|0;if(f)if(a[f>>0]|0){d=az(b,f,0)|0;if(!d){c[g>>2]=f;Pw(0,90354,g)|0;Pw(3,90394,i)|0;d=0;s=1}else s=0}else{d=0;s=1}else{d=0;s=0}n=nx(b,1,93136,0)|0;o=(n|0)!=0;f=xx(b,137660)|0;if((f|0?a[f>>0]|0:0)?(k=j+8|0,c[m>>2]=j,c[m+4>>2]=k,(N1(f,102477,m)|0)==1):0)h[k>>3]=+h[j>>3];if(ay(b)|0){m=oD(b,t,0)|0;if((c[t>>2]|0)==1){g=(d|0)!=0;do if(g)e=d;else{if(o?(e=bo(b,n)|0,e|0):0)break;e=0}while(0);f=Zt(b,e)|0;if(!((e|0)!=0|o^1))rx(f,n,139381)|0;r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;tq(b)|0;hn(b);d=(s|0)==0|g?d:f}else{XD(b,2,8,p)|0;c[p+12>>2]=0;k=(s|0)==0;j=0;while(1){if((j|0)>=(c[t>>2]|0))break;g=c[m+(j<<2)>>2]|0;e=(d|0)!=0;if(e?(oz(g,d)|0)!=0:0)f=d;else r=23;do if((r|0)==23){r=0;if(o?(q=bo(g,n)|0,q|0):0){f=q;break}f=0}while(0);vD(g)|0;i=Zt(g,f)|0;d=k|e?d:i;if(o?(f|0)==0|(f|0)==(d|0):0)rx(i,n,139381)|0;tq(g)|0;j=j+1|0}r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;WD(c[t>>2]|0,m,b,p)|0;hn(b)}e=0;while(1){if((e|0)>=(c[t>>2]|0))break;dz(b,c[m+(e<<2)>>2]|0)|0;e=e+1|0}D_(m)}if(s|0)zx(b,93136,ry(d)|0)|0;eJ(b)}l=u;return}function bo(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c){c=0;break}if((QL(yx(c,b)|0)|0)<<24>>24)break;c=Ty(a,c)|0}return c|0}function co(a){a=a|0;var b=0,c=0;b=Sy(a)|0;if(b|0){while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;JM(c);c=Gx(a,c)|0}HM(b);b=Ty(a,b)|0}eo(a)}return}function eo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function fo(a){a=a|0;go(a);if(!((ay(a)|0)==0?!(c[(c[a+16>>2]|0)+180>>2]|0):0)){nu(a);eJ(a)}return}function go(a){a=a|0;c[46377]=nx(a,1,105204,105210)|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;ho(a,0);io(a);return}function ho(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){lo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;mo(b,d);ho(d,0)}else ho(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;g=a+16|0;c[(c[g>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;Az(b,134365,304,1)|0;c[(c[b+16>>2]|0)+112>>2]=f+(d<<2);c[(c[(c[g>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;jo(b);e=Ex(a,b)|0;while(1){if(!e)break;ko(e);e=Gx(a,e)|0}b=Ty(a,b)|0;d=d+1|0}return}function jo(a){a=a|0;zx(a,105204,105210)|0;return}function ko(a){a=a|0;Az(a,134378,304,1)|0;return}function lo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function no(a){a=a|0;var b=0,d=0;b=Sy(a)|0;if(b|0){D_(c[(c[b+16>>2]|0)+112>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}oo(a)}return}function oo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function po(a){a=a|0;var d=0,e=0,f=0;qo(a);ro(a,0);so(a,0);to(a,0);d=c[a+16>>2]|0;if(!(c[(c[d+8>>2]|0)+84>>2]|0)){d=b[d+136>>1]&14;if(d<<16>>16)Ym(a,d&65535)|0}else{d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+132>>2]|0;h[e>>3]=+h[f+16>>3]*.013888888888888888;h[e+8>>3]=+h[f+24>>3]*.013888888888888888;d=Ty(a,d)|0}$m(a,1)}eJ(a);return}function qo(a){a=a|0;var d=0,e=0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;d=Sy(a)|0;while(1){if(!d)break;$l(d);d=Ty(a,d)|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;Az(d,134378,176,1)|0;eM(d)|0;d=Gx(a,d)|0}e=Ty(a,e)|0}return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){yo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;fH(d);zo(b,d);ro(d,0)}else ro(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function so(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+448|0;G=Q+400|0;F=Q+384|0;P=Q+344|0;O=Q+304|0;N=Q+248|0;D=Q+192|0;x=Q+152|0;y=Q+96|0;o=Q+72|0;d=Q+64|0;I=Q+32|0;J=Q;B=Q+416|0;u=Q+328|0;w=Q+288|0;K=Q+232|0;L=Q+176|0;M=Q+136|0;H=Q+80|0;n=c[a+60>>2]|0;if(0>1){uo(b);E=c[15686]|0;c[d>>2]=ry(a)|0;g1(E,90637,d)|0}E=a+16|0;f=b+1|0;d=1;e=0;while(1){g=c[E>>2]|0;if((d|0)>(c[g+180>>2]|0))break;C=c[(c[g+184>>2]|0)+(d<<2)>>2]|0;so(C,f);d=d+1|0;e=(ay(C)|0)+e|0}p=(ay(a)|0)-e|0;d=c[E>>2]|0;C=(c[d+180>>2]|0)+p|0;v=(C|0)==0;if(v?(c[d+12>>2]|0)==0:0){P=d+16|0;c[P>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;h[d+40>>3]=18.0;h[d+32>>3]=18.0}else{d=B+16|0;do if((XD(a,4,4,B)|0)>>>0>=3)if((c[d>>2]|0)==4?(c[B+28>>2]&2|0)!=0:0){e=nx(n,0,96164,0)|0;d=nx(n,1,96164,0)|0;if((e|0)!=0|(d|0)!=0){c[B+24>>2]=uH(C<<2)|0;break}else{c[o>>2]=ry(a)|0;Pw(0,90483,o)|0;d=0;e=0;break}}else{d=0;e=0}else{c[d>>2]=3;d=0;e=0}while(0);z=uH(C<<5)|0;A=uH(C<<2)|0;s=B+24|0;n=(e|0)!=0;r=0;g=1;while(1){f=c[E>>2]|0;if((g|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(g<<2)>>2]|0;t=z+(r<<5)|0;q=(c[f+16>>2]|0)+16|0;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[t+16>>2]=c[q+16>>2];c[t+20>>2]=c[q+20>>2];c[t+24>>2]=c[q+24>>2];c[t+28>>2]=c[q+28>>2];if(n&(c[s>>2]|0)!=0){t=KL(f,e,0,0)|0;c[(c[s>>2]|0)+(r<<2)>>2]=t}c[A+(r<<2)>>2]=f;r=r+1|0;g=g+1|0}a:do if((p|0)>0){o=I+16|0;p=I+24|0;q=(d|0)!=0;n=Sy(a)|0;e=r;while(1){if(!n)break a;f=c[n+16>>2]|0;g=f+112|0;if(!(c[g>>2]|0)){c[g>>2]=a;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;h[o>>3]=+h[f+96>>3]+ +h[f+88>>3];h[p>>3]=+h[f+80>>3];t=z+(e<<5)|0;c[t>>2]=c[I>>2];c[t+4>>2]=c[I+4>>2];c[t+8>>2]=c[I+8>>2];c[t+12>>2]=c[I+12>>2];c[t+16>>2]=c[I+16>>2];c[t+20>>2]=c[I+20>>2];c[t+24>>2]=c[I+24>>2];c[t+28>>2]=c[I+28>>2];if(q&(c[s>>2]|0)!=0){t=KL(n,d,0,0)|0;c[(c[s>>2]|0)+(e<<2)>>2]=t}c[A+(e<<2)>>2]=n;e=e+1|0}n=Ty(a,n)|0}}while(0);t=QD(C,z,B)|0;d=c[s>>2]|0;if(d|0)D_(d);vo(J,2147483647.0,2147483647.0);s=J+16|0;vo(u,-2147483647.0,-2147483647.0);c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];g=I+16|0;n=I+8|0;o=I+24|0;p=J+8|0;q=J+24|0;r=c[15686]|0;d=0;while(1){if((d|0)>=(C|0))break;j=+(c[t+(d<<3)>>2]|0);m=+(c[t+(d<<3)+4>>2]|0);e=z+(d<<5)|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];c[I+16>>2]=c[e+16>>2];c[I+20>>2]=c[e+20>>2];c[I+24>>2]=c[e+24>>2];c[I+28>>2]=c[e+28>>2];i=+h[I>>3]+j;h[I>>3]=i;j=+h[g>>3]+j;h[g>>3]=j;k=+h[n>>3]+m;h[n>>3]=k;m=+h[o>>3]+m;h[o>>3]=m;h[J>>3]=+h[(+h[J>>3]<i?J:I)>>3];h[p>>3]=+h[(+h[p>>3]<k?J:I)+8>>3];h[s>>3]=+h[(+h[s>>3]>j?J:I)+16>>3];h[q>>3]=+h[(+h[q>>3]>m?J:I)+24>>3];e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){u=(c[f>>2]|0)+16|0;c[u>>2]=c[I>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[u+12>>2]=c[I+12>>2];c[u+16>>2]=c[I+16>>2];c[u+20>>2]=c[I+20>>2];c[u+24>>2]=c[I+24>>2];c[u+28>>2]=c[I+28>>2];if(0>1){uo(b);c[y>>2]=ry(e)|0;h[y+8>>3]=i;h[y+16>>3]=k;h[y+24>>3]=j;h[y+32>>3]=m;g1(r,90462,y)|0}}else{u=(c[f>>2]|0)+16|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[G>>2]=c[g>>2];c[G+4>>2]=c[g+4>>2];c[G+8>>2]=c[g+8>>2];c[G+12>>2]=c[g+12>>2];wo(w,F,G);c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];if(0>1){uo(b);u=ry(e)|0;f=c[f>>2]|0;k=+h[f+16>>3];m=+h[f+24>>3];c[x>>2]=u;h[x+8>>3]=k;h[x+16>>3]=m;g1(r,90450,x)|0}}d=d+1|0}e=c[E>>2]|0;d=c[e+12>>2]|0;if(d|0){i=+h[d+24>>3];if(v){j=+h[d+32>>3];c[J>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;c[J+12>>2]=0;h[s>>3]=i;h[q>>3]=j;j=0.0;k=i}else{j=+h[J>>3];k=+h[s>>3]}m=i-(k-j);i=m*.5;if(m>0.0){h[J>>3]=j-i;h[s>>3]=k+i}}if((b|0)>0)i=+((c[B+8>>2]|0)>>>0)*.5;else i=0.0;j=+h[J>>3]-i;h[J>>3]=j;k=+h[s>>3]+i;h[s>>3]=k;m=-i-+h[e+56>>3]+ +h[p>>3];h[p>>3]=m;i=+h[e+88>>3]+i+ +h[q>>3];h[q>>3]=i;if(0>1){uo(b);c[D>>2]=ry(a)|0;h[D+8>>3]=j;h[D+16>>3]=m;h[D+24>>3]=k;h[D+32>>3]=i;g1(r,90462,D)|0}d=0;while(1){if((d|0)>=(C|0))break;e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){D=(c[f>>2]|0)+16|0;c[I>>2]=c[D>>2];c[I+4>>2]=c[D+4>>2];c[I+8>>2]=c[D+8>>2];c[I+12>>2]=c[D+12>>2];c[I+16>>2]=c[D+16>>2];c[I+20>>2]=c[D+20>>2];c[I+24>>2]=c[D+24>>2];c[I+28>>2]=c[D+28>>2];c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(I,F,G);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(K,F,G);c[g>>2]=c[K>>2];c[g+4>>2]=c[K+4>>2];c[g+8>>2]=c[K+8>>2];c[g+12>>2]=c[K+12>>2];D=(c[f>>2]|0)+16|0;c[D>>2]=c[I>>2];c[D+4>>2]=c[I+4>>2];c[D+8>>2]=c[I+8>>2];c[D+12>>2]=c[I+12>>2];c[D+16>>2]=c[I+16>>2];c[D+20>>2]=c[I+20>>2];c[D+24>>2]=c[I+24>>2];c[D+28>>2]=c[I+28>>2];if(0>1){uo(b);D=ry(e)|0;i=+h[I>>3];j=+h[n>>3];k=+h[g>>3];m=+h[o>>3];c[N>>2]=D;h[N+8>>3]=i;h[N+16>>3]=j;h[N+24>>3]=k;h[N+32>>3]=m;g1(r,90462,N)|0}}else{D=(c[f>>2]|0)+16|0;c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(L,F,G);c[D>>2]=c[L>>2];c[D+4>>2]=c[L+4>>2];c[D+8>>2]=c[L+8>>2];c[D+12>>2]=c[L+12>>2];if(0>1){uo(b);D=ry(e)|0;B=c[f>>2]|0;k=+h[B+16>>3];m=+h[B+24>>3];c[O>>2]=D;h[O+8>>3]=k;h[O+16>>3]=m;g1(r,90450,O)|0}}d=d+1|0}c[F>>2]=c[s>>2];c[F+4>>2]=c[s+4>>2];c[F+8>>2]=c[s+8>>2];c[F+12>>2]=c[s+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(M,F,G);c[s>>2]=c[M>>2];c[s+4>>2]=c[M+4>>2];c[s+8>>2]=c[M+8>>2];c[s+12>>2]=c[M+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(H,F,G);c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];O=(c[E>>2]|0)+16|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[O+16>>2]=c[J+16>>2];c[O+20>>2]=c[J+20>>2];c[O+24>>2]=c[J+24>>2];c[O+28>>2]=c[J+28>>2];if(0>1){uo(b);O=ry(a)|0;i=+h[J>>3];j=+h[p>>3];k=+h[s>>3];m=+h[q>>3];c[P>>2]=O;h[P+8>>3]=i;h[P+16>>3]=j;h[P+24>>3]=k;h[P+32>>3]=m;g1(r,90462,P)|0}D_(z);D_(A);D_(t)}l=Q;return}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0;t=l;l=l+80|0;s=t+32|0;i=t+8|0;d=t;r=a+16|0;o=c[r>>2]|0;p=+h[o+16>>3];q=+h[o+24>>3];if(0>1){uo(b);o=c[15686]|0;c[d>>2]=ry(a)|0;g1(o,90435,d)|0}o=(b|0)!=0;a:do if(o){d=Sy(a)|0;e=c[15686]|0;while(1){if(!d)break a;f=d+16|0;g=c[f>>2]|0;if((c[g+112>>2]|0)==(a|0)?(u=g+16|0,h[u>>3]=+h[u>>3]+p,g=g+24|0,h[g>>3]=+h[g>>3]+q,0>1):0){uo(b);u=ry(d)|0;g=c[f>>2]|0;m=+h[g+16>>3];n=+h[g+24>>3];c[i>>2]=u;h[i+8>>3]=m;h[i+16>>3]=n;g1(e,90450,i)|0}d=Ty(a,d)|0}}else e=c[15686]|0;while(0);i=b+1|0;a=1;while(1){d=c[r>>2]|0;if((a|0)>(c[d+180>>2]|0))break;g=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(o){f=g+16|0;d=c[f>>2]|0;j=+h[d+16>>3]+p;k=+h[d+24>>3]+q;m=+h[d+32>>3]+p;n=+h[d+40>>3]+q;if(0>1){uo(b);c[s>>2]=ry(g)|0;h[s+8>>3]=j;h[s+16>>3]=k;h[s+24>>3]=m;h[s+32>>3]=n;g1(e,90462,s)|0;d=c[f>>2]|0}h[d+16>>3]=j;h[d+24>>3]=k;h[d+32>>3]=m;h[d+40>>3]=n}to(g,i);a=a+1|0}l=t;return}function uo(a){a=a|0;var b=0;b=c[15686]|0;while(1){if((a|0)<=0)break;D1(90480,b)|0;a=a+-1|0}return}function vo(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function yo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function zo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Ao(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;HM(b);b=Ty(a,b)|0}Bo(a);return}function Bo(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;a=1;while(1){e=c[b>>2]|0;d=c[e+184>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[d+(a<<2)>>2]|0;nH(c[(c[e+16>>2]|0)+12>>2]|0);Bo(e);a=a+1|0}D_(d);return}function Co(a){a=a|0;var b=0,d=0,e=0;Fz(a,1,134365,304,1);sM(a)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;e=a+16|0;c[(c[e>>2]|0)+152>>2]=b;b=0;d=Sy(a)|0;while(1){if(!d)break;Do(d);c[(c[(c[e>>2]|0)+152>>2]|0)+(b<<2)>>2]=d;c[(c[d+16>>2]|0)+120>>2]=b;b=b+1|0;d=Ty(a,d)|0}e=nx(a,2,90566,0)|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Eo(b,e);b=Gx(a,b)|0}d=Ty(a,d)|0}Fo(a);return}function Do(a){a=a|0;var b=0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function Eo(a,b){a=a|0;b=b|0;var d=0,e=0.0;Az(a,134378,176,1)|0;e=+LL(a,c[46404]|0,1.0,0.0);d=a+16|0;h[(c[d>>2]|0)+128>>3]=e;e=+LL(a,b,+h[1371],0.0);h[(c[d>>2]|0)+136>>3]=e;eM(a)|0;return}function Fo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+32|0;q=r+16|0;p=r;m=r+24|0;n=nx(b,1,99597,0)|0;a:do if(n|0){o=nx(b,1,90570,0)|0;i=b+16|0;j=(o|0)==0;k=c[15686]|0;g=0;while(1){e=c[(c[(c[i>>2]|0)+152>>2]|0)+(g<<2)>>2]|0;if(!e)break a;b=yx(e,n)|0;do if(a[b>>0]|0){f=e+16|0;d=c[(c[f>>2]|0)+132>>2]|0;a[m>>0]=0;c[p>>2]=d;c[p+4>>2]=d+8;c[p+8>>2]=m;if((N1(b,98723,p)|0)<=1){c[q>>2]=ry(e)|0;c[q+4>>2]=b;g1(k,90574,q)|0;break}b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)==2)break b;s=d+(b<<3)|0;h[s>>3]=+h[s>>3]/+h[22908];b=b+1|0}}while(0);b=c[f>>2]|0;a[b+119>>0]=1;if((a[m>>0]|0)!=33){if(j)break;if(!((QL(yx(e,o)|0)|0)<<24>>24))break;b=c[f>>2]|0}a[b+119>>0]=3}while(0);g=g+1|0}}while(0);l=r;return}function Go(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}Ho(a);return}function Ho(a){a=a|0;Io(a);a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);D_(c[(c[a>>2]|0)+140>>2]|0);return}function Io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+16|0;f=1;while(1){e=c[g>>2]|0;b=c[e+184>>2]|0;if((f|0)>(c[e+180>>2]|0))break;e=c[b+(f<<2)>>2]|0;b=e+16|0;nH(c[(c[b>>2]|0)+12>>2]|0);d=c[(c[b>>2]|0)+140>>2]|0;if(d|0){D_(c[d>>2]|0);D_(c[(c[b>>2]|0)+140>>2]|0)}Io(e);f=f+1|0}D_(b);if((fz(a)|0)!=(a|0))Cz(a,134401)|0;return}function Jo(a,b){a=a|0;b=b|0;c[b+4>>2]=nx(a,0,90626,0)|0;c[b+8>>2]=nx(a,0,138034,0)|0;c[b+12>>2]=nx(a,0,137966,0)|0;c[b>>2]=a;c[b+16>>2]=0;c[b+36>>2]=XD(a,2,4,b+20|0)|0;return}function Ko(a){a=a|0;var d=0,e=0;$M(a,2);d=uH(56)|0;e=a+16|0;c[(c[e>>2]|0)+140>>2]=d;d=(KL(a,nx(a,0,90633,0)|0,2,2)|0)&65535;d=(d&65535)<10?d:10;b[(c[e>>2]|0)+176>>1]=d;c[46366]=d&65535;Lo(a,0,a);hp(a);Co(a);return}function Lo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;m=l;l=l+16|0;j=m;k=(d|0)==0;if(k){Mo(j);d=j}g=e+16|0;f=wA(a)|0;while(1){if(!f)break;if(!(z$(ry(f)|0,104980,7)|0)){Az(f,134401,280,1)|0;n=uH(56)|0;p=c[f+16>>2]|0;c[p+140>>2]=n;o=c[g>>2]|0;b[p+176>>1]=b[o+176>>1]|0;c[n+44>>2]=(c[(c[o+140>>2]|0)+44>>2]|0)+1;c[n+48>>2]=e;No(d,f);Lo(f,0,f)}else Lo(f,d,e);f=xA(f)|0}if(k?(h=c[j+8>>2]|0,i=a+16|0,c[(c[i>>2]|0)+180>>2]=h,h|0):0){p=xH(c[j>>2]|0,(h<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=p}l=m;return}function Mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function No(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Oo(a){a=a|0;var b=0,c=0;b=l;l=l+64|0;c=b;Jo(a,c);Po(a,c);Qo(a);Ro(a,a);So(a);l=b;return}function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0;s=l;l=l+64|0;r=s+48|0;e=s+40|0;o=s+56|0;n=s+52|0;m=s;if(0){q=c[15686]|0;c[e>>2]=ry(b)|0;g1(q,90637,e)|0}e=Sy(b)|0;while(1){if(!e)break;c[(c[e+16>>2]|0)+164>>2]=0;e=Ty(b,e)|0}p=To(b,d)|0;q=Iu(p,o,n)|0;e=q;while(1){k=e+4|0;f=c[e>>2]|0;if(!f)break;ip(f,m);e=Sy(f)|0;while(1){if(!e)break;g=Ty(f,e)|0;i=e+16|0;j=c[i>>2]|0;if(c[j+212>>2]|0){v=Uo(e,f)|0;Po(v,d);v=c[(c[v+16>>2]|0)+140>>2]|0;u=+h[v+24>>3];j=c[i>>2]|0;h[j+32>>3]=u;t=+h[v+32>>3];h[j+40>>3]=t;u=u*36.0;h[j+88>>3]=u;h[j+96>>3]=u;h[j+80>>3]=t*72.0;e=g;continue}if(c[(c[j+112>>2]|0)+8>>2]|0){e=g;continue}dz(f,e)|0;e=g}if((ay(f)|0)<=1){e=k;continue}if((c[d>>2]|0)==(b|0))Qp(f)|0;vp(f,m);e=k}e=c[o>>2]|0;if((e|0)<=1)if((e|0)==1){mM(c[q>>2]|0);e=0}else e=0;else{if(!(c[n>>2]|0))f=0;else{f=uH(e)|0;a[f>>0]=1;e=c[o>>2]|0}c[d+40>>2]=f;e=BD(e,q,0,d+20|0)|0;D_(f)}Vo(p,c[o>>2]|0,q,e,b,d);D_(e);f=Sy(p)|0;while(1){if(!f)break;g=c[f+16>>2]|0;e=c[g+212>>2]|0;if(!e){e=c[(c[g+112>>2]|0)+8>>2]|0;if(e|0){o=c[g+132>>2]|0;v=c[(c[e+16>>2]|0)+132>>2]|0;h[v>>3]=+h[o>>3];h[v+8>>3]=+h[o+8>>3]}}else{o=c[g+132>>2]|0;x=+h[g+32>>3];w=+h[o>>3]-x*.5;v=c[(c[e+16>>2]|0)+140>>2]|0;h[v+8>>3]=w;t=+h[g+40>>3];u=+h[o+8>>3]-t*.5;h[v+16>>3]=u;h[v+24>>3]=x+w;h[v+32>>3]=t+u}f=Ty(p,f)|0}v=(c[(c[b+16>>2]|0)+140>>2]|0)+8|0;o=(c[(c[p+16>>2]|0)+140>>2]|0)+8|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];c[v+16>>2]=c[o+16>>2];c[v+20>>2]=c[o+20>>2];c[v+24>>2]=c[o+24>>2];c[v+28>>2]=c[o+28>>2];Wo(p,q);D_(q);if(0){v=c[15686]|0;c[r>>2]=ry(b)|0;g1(v,90648,r)|0}l=s;return}function Qo(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;if(a[e+118>>0]|0){k=c[(c[(c[e+212>>2]|0)+16>>2]|0)+140>>2]|0;j=+h[k+24>>3]-+h[k+8>>3];i=+h[k+32>>3]-+h[k+16>>3];g=j*36.0;f=i*36.0;k=c[e+132>>2]|0;h[k>>3]=j*.5;h[k+8>>3]=i*.5;h[e+32>>3]=j;h[e+40>>3]=i;h[e+96>>3]=g;h[e+88>>3]=g;h[e+80>>3]=i*72.0;e=c[(c[e+12>>2]|0)+44>>2]|0;h[e>>3]=g;h[e+8>>3]=f;i=-g;h[e+16>>3]=i;h[e+24>>3]=f;h[e+32>>3]=i;f=-f;h[e+40>>3]=f;h[e+48>>3]=g;h[e+56>>3]=f}d=Ty(b,d)|0}return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0;i=a+16|0;j=c[(c[i>>2]|0)+140>>2]|0;f=+h[j+8>>3];g=+h[j+16>>3];j=(a|0)!=(b|0);a:do if(j){d=Sy(a)|0;while(1){if(!d){a=1;break a}e=c[d+16>>2]|0;if((c[e+212>>2]|0)==(a|0)){e=c[e+132>>2]|0;h[e>>3]=+h[e>>3]+f;e=e+8|0;h[e>>3]=+h[e>>3]+g}d=Ty(a,d)|0}}else a=1;while(0);while(1){d=c[i>>2]|0;if((a|0)>(c[d+180>>2]|0))break;d=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(j){e=c[(c[d+16>>2]|0)+140>>2]|0;p=e+8|0;n=e+16|0;l=e+24|0;e=e+32|0;o=+h[n>>3]+g;m=+h[l>>3]+f;k=+h[e>>3]+g;h[p>>3]=+h[p>>3]+f;h[n>>3]=o;h[l>>3]=m;h[e>>3]=k}Ro(d,b);a=a+1|0}return}function So(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0;b=a+16|0;a=c[b>>2]|0;d=c[a+140>>2]|0;g=+h[d+16>>3]*72.0;f=+h[d+24>>3]*72.0;e=+h[d+32>>3]*72.0;h[a+16>>3]=+h[d+8>>3]*72.0;h[a+24>>3]=g;h[a+32>>3]=f;h[a+40>>3]=e;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;So(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function To(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+160|0;s=y+24|0;t=y+8|0;g=y;f=y+56|0;w=e+16|0;x=c[w>>2]|0;c[w>>2]=x+1;c[s>>2]=x;Y0(f,90710,s)|0;if(0>1){x=c[15686]|0;w=ry(d)|0;c[g>>2]=f;c[g+4>>2]=w;g1(x,90717,g)|0};a[s>>0]=a[18484]|0;a[s+1>>0]=a[18485]|0;a[s+2>>0]=a[18486]|0;a[s+3>>0]=a[18487]|0;x=Xx(91072,s,0)|0;Az(x,134401,280,1)|0;v=uH(56)|0;w=x+16|0;o=c[w>>2]|0;c[o+140>>2]=v;v=d+16|0;b[o+176>>1]=b[(c[v>>2]|0)+176>>1]|0;ap(d,x,91095);ap(d,x,91700);ap(d,x,90983);o=e+4|0;p=s+16|0;q=s+8|0;r=s+24|0;j=0;n=1;while(1){f=c[v>>2]|0;if((n|0)>(c[f+180>>2]|0))break;c[s>>2]=c[332];c[s+4>>2]=c[333];c[s+8>>2]=c[334];c[s+12>>2]=c[335];c[s+16>>2]=c[336];c[s+20>>2]=c[337];c[s+24>>2]=c[338];c[s+28>>2]=c[339];g=c[(c[f+184>>2]|0)+(n<<2)>>2]|0;fH(g);i=bp(x,ry(g)|0)|0;k=i+16|0;f=c[k>>2]|0;c[f+212>>2]=g;m=j+1|0;c[f+120>>2]=j;if(c[o>>2]|0)cp(g,i,e,s);f=Sy(g)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+164>>2]=i;f=Ty(g,f)|0}f=c[k>>2]|0;if(a[f+119>>0]|0){k=c[f+132>>2]|0;h[k>>3]=(+h[p>>3]+ +h[s>>3])*.5;h[k+8>>3]=(+h[r>>3]+ +h[q>>3])*.5}j=m;n=n+1|0}k=Sy(d)|0;while(1){if(!k)break;f=k+16|0;g=c[f>>2]|0;if(!(c[g+164>>2]|0)){i=g+212|0;s=c[i>>2]|0;if(s|0?(s|0)!=(c[(c[(c[v>>2]|0)+140>>2]|0)+48>>2]|0):0){u=18;break}c[i>>2]=d;if(!(a[g+118>>0]|0)){i=bp(x,ry(k)|0)|0;g=c[f>>2]|0;c[g+164>>2]=i;i=c[i+16>>2]|0;c[i+120>>2]=j;h[i+32>>3]=+h[g+32>>3];h[i+40>>3]=+h[g+40>>3];h[i+88>>3]=+h[g+88>>3];h[i+96>>3]=+h[g+96>>3];h[i+80>>3]=+h[g+80>>3];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];f=a[g+119>>0]|0;if(f<<24>>24){e=c[g+132>>2]|0;s=c[i+132>>2]|0;h[s>>3]=+h[e>>3];h[s+8>>3]=+h[e+8>>3];a[i+119>>0]=f}c[(c[i+112>>2]|0)+8>>2]=k;f=j+1|0}else f=j}else f=j;k=Ty(d,k)|0;j=f}if((u|0)==18){e=ry(k)|0;s=ry(d)|0;u=ry(c[(c[f>>2]|0)+212>>2]|0)|0;c[t>>2]=e;c[t+4>>2]=s;c[t+8>>2]=u;Pw(1,90740,t)|0;bb(184132,1)}m=Sy(d)|0;while(1){if(!m)break;n=c[(c[m+16>>2]|0)+164>>2]|0;o=n+16|0;i=Ex(d,m)|0;while(1){if(!i)break;f=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+164>>2]|0;if((f|0)!=(n|0)){if(f>>>0>n>>>0)k=Rx(x,n,f,0,1)|0;else k=Rx(x,f,n,0,1)|0;Az(k,134378,176,1)|0;g=c[i+16>>2]|0;u=c[k+16>>2]|0;h[u+136>>3]=+h[g+136>>3];h[u+128>>3]=+h[g+128>>3];f=c[(c[f+16>>2]|0)+112>>2]|0;g=f+4|0;c[g>>2]=(c[g>>2]|0)+1;g=c[(c[o>>2]|0)+112>>2]|0;t=g+4|0;c[t>>2]=(c[t>>2]|0)+1;if(!(c[u+172>>2]|0)){c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}dp(k,i)}i=Gx(d,i)|0}m=Ty(d,m)|0}f=c[(c[v>>2]|0)+140>>2]|0;g=c[f>>2]|0;if(g|0){i=uH((c[f+4>>2]<<4)+16|0)|0;c[c[(c[w>>2]|0)+140>>2]>>2]=i;f=0;while(1){if(!(c[g>>2]|0))break;m=c[(c[(c[g+4>>2]|0)+16>>2]|0)+164>>2]|0;if(m){ep(d,g);n=bp(x,190692)|0;o=n+16|0;c[(c[o>>2]|0)+120>>2]=j;if(n>>>0>m>>>0)k=Rx(x,m,n,0,1)|0;else k=Rx(x,n,m,0,1)|0;Az(k,134378,176,1)|0;u=c[g>>2]|0;t=c[u+16>>2]|0;v=c[k+16>>2]|0;h[v+136>>3]=+h[t+136>>3];h[v+128>>3]=+h[t+128>>3];dp(k,u);u=c[(c[o>>2]|0)+112>>2]|0;v=u+4|0;c[v>>2]=(c[v>>2]|0)+1;v=c[(c[m+16>>2]|0)+112>>2]|0;t=v+4|0;c[t>>2]=(c[t>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+1;c[i+4>>2]=n;h[i+8>>3]=+h[g+8>>3];c[i>>2]=k;f=f+1|0;i=i+16|0;j=j+1|0}g=g+16|0}c[(c[(c[w>>2]|0)+140>>2]|0)+4>>2]=f}l=y;return x|0}function Uo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;l=c[a+16>>2]|0;k=c[l+212>>2]|0;l=c[(c[l+112>>2]|0)+4>>2]|0;do if(l|0){j=uH((l<<4)+16|0)|0;f=Zo(a,b)|0;g=f+8|0;b=0;e=f;while(1){if(!(c[e>>2]|0))break;i=e+24|0;if(!(c[i>>2]|0))d=+h[g>>3]+6.283185307179586;else d=+h[e+32>>3];b=_o(a,e,j,b,d)|0;e=i}if((b|0)==(l|0)){a=c[(c[k+16>>2]|0)+140>>2]|0;c[a>>2]=j;c[a+4>>2]=l;D_(f);break}else qa(90656,90666,766,90675)}while(0);return k|0}function Vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;B=l;l=l+32|0;x=B+16|0;A=B;m=c[g+8>>2]|0;j=c[g+12>>2]|0;y=(c[g>>2]|0)==(f|0);z=(b|0)!=0;a:do if(z){p=c[(c[d>>2]|0)+16>>2]|0;k=+h[p+16>>3];m=~~(k+(k>=0.0?.5:-.5));c[A>>2]=m;k=+h[p+24>>3];g=~~(k+(k>=0.0?.5:-.5));u=A+4|0;c[u>>2]=g;k=+h[p+32>>3];n=~~(k+(k>=0.0?.5:-.5));v=A+8|0;c[v>>2]=n;k=+h[p+40>>3];p=~~(k+(k>=0.0?.5:-.5));w=A+12|0;c[w>>2]=p;if((b|0)>1){q=c[e>>2]|0;t=c[e+4>>2]|0;m=q+m|0;c[A>>2]=m;b=t+g|0;c[u>>2]=b;n=q+n|0;c[v>>2]=n;q=x+4|0;r=x+8|0;s=x+12|0;o=e;g=d;t=t+p|0;p=b;while(1){g=g+4|0;j=o+8|0;c[w>>2]=t;b=c[g>>2]|0;if(!b){j=0;r=p;s=t;break a}E=c[b+16>>2]|0;G=+h[E+16>>3];i=+h[E+24>>3];k=+h[E+32>>3];H=+h[E+40>>3];E=~~(H+(H>=0.0?.5:-.5));c[s>>2]=E;b=c[j>>2]|0;F=c[o+12>>2]|0;D=b+~~(G+(G>=0.0?.5:-.5))|0;c[x>>2]=D;C=F+~~(i+(i>=0.0?.5:-.5))|0;c[q>>2]=C;b=b+~~(k+(k>=0.0?.5:-.5))|0;c[r>>2]=b;E=F+E|0;c[s>>2]=E;D=c[((m|0)<(D|0)?A:x)>>2]|0;c[A>>2]=D;C=c[((p|0)<(C|0)?A:x)+4>>2]|0;c[u>>2]=C;b=c[((n|0)>(b|0)?A:x)+8>>2]|0;c[v>>2]=b;o=j;t=c[((t|0)>(E|0)?A:x)+12>>2]|0;m=D;p=C;n=b}}else{j=0;r=g;s=p}}else{c[A>>2]=0;c[A+4>>2]=0;n=KL(f,m,54,3)|0;c[A+8>>2]=n;s=KL(f,j,36,3)|0;c[A+12>>2]=s;j=1;m=0;r=0}while(0);b=f+16|0;o=c[b>>2]|0;g=c[o+12>>2]|0;if(g){H=+h[g+24>>3];g=m-n+~~(H+(H>=0.0?.5:-.5))|0;if((g|0)>0){g=g>>>1;m=m-g|0;c[A>>2]=m;n=n+g|0;c[A+8>>2]=n;g=0}else g=0}else g=j;if(y|(g|0)!=0){j=0;g=o}else{j=KL(a,c[46374]|0,8,0)|0;g=c[b>>2]|0}q=j-m|0;p=~~(+h[g+56>>3]+ +(j-r|0));c[A>>2]=0;c[A+4>>2]=0;o=q+j+n|0;c[A+8>>2]=o;b=~~(+h[g+88>>3]+ +(j+p|0)+ +(s|0));c[A+12>>2]=b;b:do if(z){g=e;c:while(1){n=d+4|0;j=c[d>>2]|0;if(!j)break b;if(!g){m=0;d=q;g=p}else{m=g+8|0;d=(c[g>>2]|0)+q|0;g=(c[g+4>>2]|0)+p|0}k=+(d|0)*.013888888888888888;i=+(g|0)*.013888888888888888;d=Sy(j)|0;while(1){if(!d){d=n;g=m;continue c}F=c[(c[d+16>>2]|0)+132>>2]|0;h[F>>3]=+h[F>>3]+k;F=F+8|0;h[F>>3]=+h[F>>3]+i;d=Ty(j,d)|0}}}while(0);F=c[(c[a+16>>2]|0)+140>>2]|0;E=F+8|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;h[F+24>>3]=+(o|0)*.013888888888888888;h[F+32>>3]=+(b|0)*.013888888888888888;l=B;return}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=c[b>>2]|0;if(!d)break;Xo(d);Cz(d,134401)|0;b=b+4|0}b=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;if(b|0)D_(b);Xo(a);Cz(a,134401)|0;d=Sy(a)|0;while(1){if(!d)break;e=Ty(a,d)|0;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+172>>2]|0);Cz(b,134378)|0;b=Gx(a,b)|0}Yo(d);d=e}$x(a)|0;return}function Xo(a){a=a|0;D_(c[(c[a+16>>2]|0)+140>>2]|0);return}function Yo(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);Cz(a,134365)|0;return}function Zo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;l=c[c[(c[k>>2]|0)+112>>2]>>2]|0;m=uH((l*24|0)+24|0)|0;i=0;j=Jx(b,a)|0;while(1){if(!j)break;f=c[j>>2]&3;e=c[((f|0)==2?j:j+-48|0)+40>>2]|0;if((e|0)==(a|0))e=c[((f|0)==3?j:j+48|0)+40>>2]|0;e=c[(c[e+16>>2]|0)+132>>2]|0;f=c[(c[k>>2]|0)+132>>2]|0;g=+h[e>>3]-+h[f>>3];d=+h[e+8>>3]-+h[f+8>>3];c[m+(i*24|0)>>2]=j;h[m+(i*24|0)+8>>3]=+K(+d,+g);h[m+(i*24|0)+16>>3]=d*d+g*g;i=i+1|0;j=Kx(b,j,a)|0}if((i|0)!=(l|0))qa(90689,90666,642,90698);_0(m,l,24,67);a:do if((l|0)>1){j=l+-1|0;e=0;b:while(1){if((e|0)>=(j|0))break a;g=+h[m+(e*24|0)+8>>3];f=e+1|0;i=f;while(1){if((i|0)>=(l|0))break;if(!(+h[m+(i*24|0)+8>>3]==g))break;i=i+1|0}if((i|0)==(f|0)){e=f;continue}if((i|0)==(l|0))d=3.141592653589793;else d=+h[m+(i*24|0)+8>>3];d=(d-g)/+(i-e|0);d=d>.03490658503988659?.03490658503988659:d;g=0.0;while(1){if((e|0)>=(i|0))continue b;k=m+(e*24|0)+8|0;h[k>>3]=+h[k>>3]+g;g=g+d;e=e+1|0}}}while(0);return m|0}function _o(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0;k=c[d>>2]|0;n=c[k+16>>2]|0;m=b[n+168>>1]|0;o=m<<16>>16;j=c[k>>2]&3;i=c[((j|0)==2?k:k+-48|0)+40>>2]|0;if((i|0)==(a|0))i=c[((j|0)==3?k:k+48|0)+40>>2]|0;p=+h[d+8>>3];g=(g-p)/+(m<<16>>16);g=g>.03490658503988659?.03490658503988659:g;m=i>>>0>a>>>0;l=m?g:-g;d=m?1:-1;k=0;i=c[n+172>>2]|0;j=m?f:f+-1+o|0;g=m?p:g*+(o+-1|0)+p;while(1){if((k|0)>=(o|0))break;n=c[i>>2]|0;c[e+(j<<4)>>2]=n;m=c[n>>2]&3;q=(m|0)==3?n:n+48|0;c[e+(j<<4)+4>>2]=c[((c[(c[(c[q+40>>2]|0)+16>>2]|0)+164>>2]|0)==(a|0)?q:(m|0)==2?n:n+-48|0)+40>>2];h[e+(j<<4)+8>>3]=g;k=k+1|0;i=i+4|0;j=j+d|0;g=g+l}return o+f|0}function $o(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d))if(!(c<d)){d=+h[a+16>>3];c=+h[b+16>>3];if(d>c)a=1;else a=(d<c)<<31>>31}else a=-1;else a=1;return a|0}function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=nx(a,0,c,0)|0;do if(d|0){a=yx(a,d)|0;d=nx(b,0,c,0)|0;if(!d){nx(b,0,c,a)|0;break}else{rx(b,d,a)|0;break}}while(0);return}function bp(a,b){a=a|0;b=b|0;var d=0,f=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;f=uH(32)|0;d=b+16|0;c[(c[d>>2]|0)+112>>2]=f;a=vH((e[(c[a+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[d>>2]|0)+132>>2]=a;return b|0}function cp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;n=q+56|0;m=q+32|0;p=q;o=q+64|0;i=c[e+4>>2]|0;k=yx(b,i)|0;do if(a[k>>0]|0){if((c[e>>2]|0)!=(b|0)){e=yx(yA(b)|0,i)|0;if((e|0)==(k|0))break;if(!(b$(k,e)|0))break}a[o>>0]=0;e=p+8|0;i=p+16|0;j=p+24|0;c[m>>2]=p;c[m+4>>2]=e;c[m+8>>2]=i;c[m+12>>2]=j;c[m+16>>2]=o;if((N1(k,90851,m)|0)<=3){c[n>>2]=ry(b)|0;c[n+4>>2]=k;Pw(0,90869,n)|0;break}g=+h[22908];if(g>0.0){h[p>>3]=+h[p>>3]/g;h[e>>3]=+h[e>>3]/g;h[i>>3]=+h[i>>3]/g;h[j>>3]=+h[j>>3]/g}e=a[o>>0]|0;if(e<<24>>24==33)a[(c[d+16>>2]|0)+119>>0]=3;else a[(c[d+16>>2]|0)+119>>0]=e<<24>>24==63?2:1;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2]}while(0);l=q;return}function dp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;f=c[g>>2]|0;a=b[f+168>>1]|0;f=c[f+172>>2]|0;if(!f){a=a<<16>>16;e=a;a=vH((a<<2)+4|0)|0}else{a=a<<16>>16;e=a;a=xH(f,(a<<2)+4|0)|0}c[a+(e<<2)>>2]=d;d=c[g>>2]|0;c[d+172>>2]=a;d=d+168|0;b[d>>1]=(b[d>>1]|0)+1<<16>>16;return}function ep(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+48|0;h=i+24|0;g=i;e=c[b>>2]|0;d=c[e>>2]&3;f=c[((d|0)==2?e:e+-48|0)+40>>2]|0;d=c[((d|0)==3?e:e+48|0)+40>>2]|0;b=W_(ry(a)|0)|0;j=W_(ry(f)|0)|0;j=(b+8+j+(W_(ry(d)|0)|0)|0)>999;b=ry(a)|0;if(j){d=ry(d)|0;j=ry(f)|0;h=(c[e>>2]|0)>>>4;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=j;j=g+16|0;c[j>>2]=h;c[j+4>>2]=0;Y0(190692,90809,g)|0}else{d=c[(c[d+16>>2]|0)+120>>2]|0;j=c[(c[f+16>>2]|0)+120>>2]|0;g=(c[e>>2]|0)>>>4;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=j;j=h+16|0;c[j>>2]=g;c[j+4>>2]=0;Y0(190692,90828,h)|0}l=i;return}function fp(a){a=a|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;j=4;i=C_(40)|0;c[i>>2]=0;g=+h[22908];o=0;f=+Z(1,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){h[22908]=f;o=0;ia(100,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){i=D3(184132,1,i|0,j|0)|0;j=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,i|0,j|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1)d=0;else d=z}else d=z}else d=z;while(1){if(d|0)break;o=0;ia(101,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}o=0;$(22,a|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}if(b[(c[a+16>>2]|0)+136>>1]&14){o=0;ia(102,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}}o=0;ja(22,a|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else{k=12;break}}if((k|0)==12)h[22908]=g;D_(i|0);return}function gp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;e=a+16|0;f=b[(c[e>>2]|0)+136>>1]&14;d=f&65535;if((f&65535)>8){if(f<<16>>16==12){if(Wm(a,22,10)|0){c[46363]=2;h=5}}else h=5;do if((h|0)==5)if(!(b[(c[e>>2]|0)+136>>1]&1)){Ym(a,d)|0;break}else{Pw(0,90912,g)|0;d=2;break}while(0);c[46363]=0}if((c[46367]|0)<1)Ym(a,d)|0;l=i;return}function hp(a){a=a|0;var b=0.0,d=0.0,e=0;e=l;l=l+16|0;c[45704]=1;c[45705]=1;c[45707]=-1;c[45709]=50;h[22860]=0.0;h[22855]=0.0;h[22856]=1.0;c[45708]=KL(a,nx(a,0,90975,0)|0,600,0)|0;d=+LL(a,nx(a,0,90983,0)|0,.3,0.0);h[22857]=d;h[1371]=d;if(-1.0==-1.0)b=+LL(a,nx(a,0,90985,0)|0,-1.0,0.0);else b=-1.0;h[22858]=b;c[45706]=1;a=om(a,2,182824)|0;c[45718]=a;if(!a){Pw(0,90988,e)|0;c[45706]=2}c[45734]=(O(c[45708]|0,c[45709]|0)|0)/100|0;d=+h[22857];h[22862]=d*d;if(c[45704]|0){b=+h[22860];if(b<=0.0){b=d*3.0;h[22860]=b}h[22861]=b*b}l=e;return}function ip(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=l;l=l+16|0;d=j;g=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;i=jp(a,b)|0;kp(d,a,g);e=+h[d>>3];f=+h[d+8>>3];a:do if(!(c[45704]|0)){b=0;while(1){if((b|0)>=(c[45735]|0))break a;np(a,+lp(b),g);b=b+1|0}}else{d=Ku(ay(a)|0)|0;Pu(d,ay(a)|0);b=0;while(1){if((b|0)>=(c[45735]|0))break;mp(a,+lp(b),g,d);b=b+1|0}Ru(d)}while(0);b:do if(e!=0.0|f!=0.0){b=Sy(a)|0;while(1){if(!b)break b;g=c[(c[b+16>>2]|0)+132>>2]|0;h[g>>3]=+h[g>>3]+e;g=g+8|0;h[g>>3]=+h[g>>3]+f;b=Ty(a,b)|0}}while(0);if(i|0)op();l=j;return}function jp(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0;if(+h[22858]==-1.0){i=ay(a)|0;d=+h[22857];h[22858]=+h[22856]*.2*d*+C(+(+(i|0)));i=1}else{i=0;d=+h[22857]}g=c[45734]|0;h[b+8>>3]=+lp(g);h[b+16>>3]=d;h[b+24>>3]=+h[22855];e=c[45708]|0;a=e-g|0;c[b>>2]=a;f=c[45707]|0;do if((f|0)>-1){if((f|0)<=(g|0)){c[45735]=f;a=0;j=10;break}if((f|0)<=(e|0)){c[45735]=g;a=f-g|0;j=10}}else{c[45735]=g;j=10}while(0);if((j|0)==10)c[b+32>>2]=a;return i|0}function kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0,y=0,z=0;v=ay(d)|0;x=c[(c[(c[d+16>>2]|0)+140>>2]|0)+4>>2]|0;u=Sy(d)|0;q=0;r=0;g=0;k=0;n=0;while(1){if(!u)break;f=c[u+16>>2]|0;if(!(a[f+119>>0]|0))f=r;else{f=c[f+132>>2]|0;i=+h[f>>3];if(!q){k=~~i;g=~~+h[f+8>>3];n=g;f=k}else{p=+(r|0);s=+h[f+8>>3];t=+(g|0);w=+(k|0);o=+(n|0);n=~~(s>o?s:o);f=~~(i<p?i:p);g=~~(s<t?s:t);k=~~(i>w?i:w)}q=q+1|0}u=Ty(d,u)|0;r=f}i=+h[22857]*(+C(+(+(v-x|0)))+1.0);s=i*.6;h[22864]=s;h[22863]=s;if((q|0)!=1)if((q|0)>1){t=+(k+r|0)*.5;w=+(n+g|0)*.5;o=+(k-r|0);p=o*1.2;l=+(n-g|0);m=l*1.2;i=i*2.4*s;j=m*p/i;do if(!(j>=1.0)){if(j>0.0){i=+C(+j)*2.0;j=p/i;h[22863]=j;i=m/i;z=20;break}if(p>0.0){j=o*.6;h[22863]=j;i=i/p*.5;z=20;break}if(m>0.0){j=i/m*.5;h[22863]=j;i=l*.6;z=20}else{i=s;j=s}}else{j=o*.6;h[22863]=j;i=l*.6;z=20}while(0);if((z|0)==20)h[22864]=i;s=+K(+i,+j);j=j/+E(+s);h[22863]=j;i=i/+F(+s);h[22864]=i}else{t=0.0;w=0.0;j=s;i=s}else{t=+(r|0);w=+(g|0);j=s;i=s}h[22865]=j*j;h[22866]=i*i;if((c[45718]|0)==2)f=c[45706]|0;else{f=H1()|0;f=(db(0)|0)^f}i2(f);a:do if(!e){e=Sy(d)|0;if(!q)while(1){if(!e)break a;s=+h[22863];s=(+k2()*2.0+-1.0)*s;z=e+16|0;h[c[(c[z>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[z>>2]|0)+132>>2]|0)+8>>3]=s;e=Ty(d,e)|0}while(1){if(!e)break a;f=e+16|0;g=c[f>>2]|0;if(!(a[g+119>>0]|0)){s=+h[22863];s=(+k2()*2.0+-1.0)*s;h[c[(c[f>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[f>>2]|0)+132>>2]|0)+8>>3]=s}else{z=c[g+132>>2]|0;h[z>>3]=+h[z>>3]-t;z=z+8|0;h[z>>3]=+h[z>>3]-w}e=Ty(d,e)|0}}else{while(1){if(!(c[e>>2]|0))break;u=e+8|0;s=+E(+(+h[u>>3]))*+h[22863]+t;x=c[(c[e+4>>2]|0)+16>>2]|0;v=c[x+132>>2]|0;h[v>>3]=s;h[v+8>>3]=+F(+(+h[u>>3]))*+h[22864]+w;a[x+119>>0]=1;e=e+16|0}l=t*.1;m=w*.1;r=Sy(d)|0;while(1){if(!r)break a;q=r+16|0;e=c[q>>2]|0;if(!((c[(c[e+112>>2]|0)+8>>2]|0)==0?!(c[e+212>>2]|0):0))z=32;do if((z|0)==32){z=0;if(a[e+119>>0]|0){x=c[e+132>>2]|0;h[x>>3]=+h[x>>3]-t;x=x+8|0;h[x>>3]=+h[x>>3]-w;break}n=Jx(d,r)|0;e=0;j=0.0;i=0.0;while(1){if(!n)break;k=c[n>>2]&3;f=(k|0)==2?n:n+-48|0;g=c[f+40>>2]|0;k=(k|0)==3?n:n+48|0;do if((g|0)!=(c[k+40>>2]|0)?(y=c[(c[((g|0)==(r|0)?k:f)+40>>2]|0)+16>>2]|0,(a[y+119>>0]|0)!=0):0)if(!e){x=c[y+132>>2]|0;e=1;j=+h[x>>3];i=+h[x+8>>3];break}else{p=+(e|0);x=c[y+132>>2]|0;e=e+1|0;s=+(e|0);j=(+h[x>>3]+j*p)/s;i=(+h[x+8>>3]+i*p)/s;break}while(0);n=Kx(d,n,r)|0}do if((e|0)<=1)if((e|0)==1){f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j*.98+l;i=i*.9+m;break}else{i=+k2()*6.283185307179586;s=+k2()*.9;p=s*+h[22863]*+E(+i);f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=p;i=+h[22864]*s*+F(+i);break}else{f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j}while(0);h[e+8>>3]=i;a[f+119>>0]=1}while(0);r=Ty(d,r)|0}}while(0);h[b>>3]=t;h[b+8>>3]=w;return}function lp(a){a=a|0;var b=0;b=c[45708]|0;return +(+h[22858]*+(b-a|0)/+(b|0))}function mp(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;if(!(b<=0.0)){Qu(e);f=Sy(a)|0;while(1){if(!f)break;i=c[f+16>>2]|0;g=(c[i+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;i=c[i+132>>2]|0;j=+h[22860];g=~~+A(+(+h[i>>3]/j));Tu(e,g,~~+A(+(+h[i+8>>3]/j)),f);f=Ty(a,f)|0}g=Sy(a)|0;while(1){if(!g)break;f=Ex(a,g)|0;while(1){if(!f)break;i=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((g|0)!=(i|0))qp(g,i,f);f=Gx(a,f)|0}g=Ty(a,g)|0}Vu(e,23);rp(a,b,d)}return}function np(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0;if(!(b<=0.0)){e=Sy(a)|0;while(1){if(!e)break;g=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;e=Ty(a,e)|0}g=Sy(a)|0;while(1){if(!g)break;else e=g;while(1){e=Ty(a,e)|0;if(!e)break;pp(g,e)}e=Ex(a,g)|0;while(1){if(!e)break;f=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;if((g|0)!=(f|0))qp(g,f,e);e=Gx(a,e)|0}g=Ty(a,g)|0}rp(a,b,d)}return}function op(){h[22858]=-1.0;return}function pp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];sp(a,b,d,e,e*e+d*d);return}function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0;j=b+16|0;k=c[(c[j>>2]|0)+132>>2]|0;a=a+16|0;b=c[(c[a>>2]|0)+132>>2]|0;e=+h[k>>3]-+h[b>>3];f=+h[k+8>>3]-+h[b+8>>3];g=e;i=f;e=e*e;f=f*f;while(1){e=e+f;if(!(e==0.0))break;e=+(5-((g2()|0)%10|0)|0);f=+(5-((g2()|0)%10|0)|0);g=e;i=f;e=e*e;f=f*f}f=+C(+e);b=c[d+16>>2]|0;e=+h[b+128>>3];if(!(c[45705]|0))e=e*f/+h[b+136>>3];else e=(f-+h[b+136>>3])*e/f;g=e*g;k=c[(c[j>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]-g;i=e*i;k=k+24|0;h[k>>3]=+h[k>>3]-i;k=c[(c[a>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]+g;k=k+24|0;h[k>>3]=+h[k>>3]+i;return}function rp(b,d,e){b=b|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;o=d*d;n=(e|0)==0;m=Sy(b)|0;while(1){if(!m)break;l=c[m+16>>2]|0;if(!(a[l+119>>0]&2)){k=c[l+112>>2]|0;f=+h[k+16>>3];i=+h[k+24>>3];g=i*i+f*f;if(g<o){e=c[l+132>>2]|0;j=+h[e>>3]+f;f=+h[e+8>>3]+i}else{g=d/+C(+g);e=c[l+132>>2]|0;j=+h[e>>3]+g*f;f=+h[e+8>>3]+g*i}do if(!n){g=+C(+(f*f/+h[22866]+j*j/+h[22865]));if((c[k+8>>2]|0)==0?(c[l+212>>2]|0)==0:0){h[e>>3]=j/g;f=f/g;break}if(!(g>=1.0)){h[e>>3]=j;break}else{h[e>>3]=j*.95/g;f=f*.95/g;break}}else h[e>>3]=j;while(0);h[e+8>>3]=f}m=Ty(b,m)|0}return}function sp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0;g=d;d=f;while(1){if(!(d==0.0))break;d=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);g=d;d=e*e+d*d}if(!(c[45705]|0))d=+h[22862]/d;else{f=+C(+d);d=+h[22862]/(f*d)}j=c[a+16>>2]|0;a=c[j+112>>2]|0;if(((c[a+8>>2]|0)==0?(c[j+212>>2]|0)==0:0)?(i=c[b+16>>2]|0,(c[(c[i+112>>2]|0)+8>>2]|0)==0):0)d=(c[i+212>>2]|0)==0?d*10.0:d;f=d*g;j=c[(c[b+16>>2]|0)+112>>2]|0;b=j+16|0;h[b>>3]=+h[b>>3]+f;g=d*e;j=j+24|0;h[j>>3]=+h[j>>3]+g;j=a+16|0;h[j>>3]=+h[j>>3]-f;j=a+24|0;h[j>>3]=+h[j>>3]-g;return}function tp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[b+8>>2]|0;g=c[b>>2]|0;e=c[b+4>>2]|0;b=f;while(1){if(!b)break;a=f;while(1){if(!a)break;if((b|0)!=(a|0))pp(c[b>>2]|0,c[a>>2]|0);a=c[a+4>>2]|0}b=c[b+4>>2]|0}h=g+-1|0;a=e+-1|0;up(d,h,a,f);up(d,h,e,f);b=e+1|0;up(d,h,b,f);up(d,g,a,f);up(d,g,b,f);g=g+1|0;up(d,g,a,f);up(d,g,e,f);up(d,g,b,f);return 0}function up(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0;a=Wu(a,b,d)|0;if((e|0)!=0&(a|0)!=0){k=a+8|0;do{d=c[e>>2]|0;j=d+16|0;a=k;while(1){a=c[a>>2]|0;if(!a)break;b=c[a>>2]|0;m=c[(c[b+16>>2]|0)+132>>2]|0;l=c[(c[j>>2]|0)+132>>2]|0;f=+h[m>>3]-+h[l>>3];g=+h[m+8>>3]-+h[l+8>>3];i=g*g+f*f;if(i<+h[22861])sp(d,b,f,g,i);a=a+4|0}e=c[e+4>>2]|0}while((e|0)!=0)}return}function vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;e=xx(b,91095)|0;if(0)E1(91032,8,1,c[15686]|0)|0;if(!((e|0)!=0?(a[e>>0]|0)!=0:0))e=91041;f=A$(e,58)|0;do if(!f)f=0;else{if((f|0)!=(e|0)?((a[e>>0]|0)+-48|0)>>>0>=10:0){f=0;break}i=a2(e)|0;e=f+1|0;f=(i|0)>0?i:0}while(0);if(0){i=c[15686]|0;c[g>>2]=f;c[g+4>>2]=e;g1(i,91049,g)|0}if(!((f|0)!=0?!(wp(b,d,f)|0):0))sq(b,e)|0;l=h;return}function wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;t=l;l=l+64|0;r=t;j=t+40|0;s=ay(b)|0;k=by(b)|0;qq(j,b);c[46072]=c[j>>2];c[46073]=c[j+4>>2];c[46074]=c[j+8>>2];if(a[184296]|0){g[46072]=+g[46072]*.013888888888888888;g[46073]=+g[46073]*.013888888888888888}f=xp(b)|0;a:do if(!f)f=0;else{j=r;i=j+40|0;do{c[j>>2]=c[d>>2];j=j+4|0;d=d+4|0}while((j|0)<(i|0));j=r+16|0;q=+h[j>>3];o=+(k|0)*2.0;p=1.0/+(O(s+-1|0,s)|0);i=0;n=q;while(1){if(!((f|0)!=0&(i|0)<(e|0)))break a;yp(s,r);m=+h[22868]*+h[170];h[22869]=m;h[22870]=o*m*p;d=0;while(1){if((d|0)>=(c[45742]|0))break;m=+zp(d);if(m<=0.0)break;f=Ap(b,m)|0;if(!f){f=0;break}else d=d+1|0}m=n+q;h[j>>3]=m;i=i+1|0;n=m}}while(0);l=t;return f|0}function xp(a){a=a|0;var b=0,c=0,d=0,e=0;b=0;e=Sy(a)|0;while(1){if(!e)break;else d=e;while(1){c=Ty(a,d)|0;if(!c)break;d=c;b=(Dp(e,c)|0)+b|0}e=Ty(a,e)|0}return b|0}function yp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0;e=+h[b+16>>3];h[171]=e;c[344]=c[b>>2];f=+h[b+8>>3];h[22872]=f;c[45742]=c[b+32>>2];d=+h[b+24>>3];if(d>0.0)h[170]=d;h[22868]=e*e;if(f==0.0)h[22872]=+C(+(+(a|0)))*.2*e;return}function zp(a){a=a|0;var b=0;b=c[344]|0;return +(+h[22872]*+(b-a|0)/+(b|0))}function Ap(b,d){b=b|0;d=+d;var e=0,f=0,g=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;e=Sy(b)|0;while(1){if(!e)break;j=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;e=Ty(b,e)|0}e=0;j=Sy(b)|0;while(1){if(!j)break;else g=j;while(1){f=Ty(b,g)|0;if(!f)break;g=f;e=(Bp(j,f)|0)+e|0}f=Ex(b,j)|0;while(1){if(!f)break;Cp(j,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0);f=Gx(b,f)|0}j=Ty(b,j)|0}a:do if(!e)e=0;else{m=d*d;g=Sy(b)|0;while(1){if(!g)break a;f=c[g+16>>2]|0;if((a[f+119>>0]|0)!=3){j=c[f+112>>2]|0;k=+h[j+16>>3];i=+h[j+24>>3];l=i*i+k*k;if(l<m){f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k}else{l=+C(+l);f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k*d/l;i=i*d/l}j=f+8|0;h[j>>3]=+h[j>>3]+i}g=Ty(b,g)|0}}while(0);return e|0}function Bp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];return Fp(a,b,d,e,e*e+d*d)|0}function Cp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0.0,k=0.0,l=0,m=0;if(!(Dp(a,b)|0)){i=c[b+16>>2]|0;m=c[i+132>>2]|0;f=c[a+16>>2]|0;l=c[f+132>>2]|0;e=+h[m>>3]-+h[l>>3];d=+h[m+8>>3]-+h[l+8>>3];g=+C(+(d*d+e*e));j=+Ep(a);j=+Ep(b)+j;k=g-j;g=k*k/((+h[171]+j)*g);e=g*e;b=c[i+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-e;d=g*d;b=b+24|0;h[b>>3]=+h[b>>3]-d;b=c[f+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]+e;b=b+24|0;h[b>>3]=+h[b>>3]+d}return}function Dp(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0,l=0;k=c[d+16>>2]|0;l=c[k+132>>2]|0;d=c[b+16>>2]|0;b=c[d+132>>2]|0;i=+h[l>>3]-+h[b>>3];j=+h[l+8>>3]-+h[b+8>>3];j=j<0.0?-j:j;b=(a[184296]|0)==0;e=+h[d+32>>3];if(b){f=+g[46072];e=e*.5*f;f=+h[k+32>>3]*.5*f}else{f=+g[46072];e=e*.5+f;f=+h[k+32>>3]*.5+f}if(!((i<0.0?-i:i)<=f+e))d=0;else{e=+h[d+40>>3];if(b){i=+g[46073];f=e*.5*i;e=+h[k+40>>3]*.5*i}else{i=+g[46073];f=e*.5+i;e=+h[k+40>>3]*.5+i}d=j<=e+f&1}return d|0}function Ep(b){b=b|0;var d=0.0,e=0.0;b=c[b+16>>2]|0;d=+h[b+32>>3];if(!(a[184296]|0)){e=d*.5*+g[46072];d=+h[b+40>>3]*.5*+g[46073]}else{e=d*.5+ +g[46072];d=+h[b+40>>3]*.5+ +g[46073]}return +(+C(+(d*d+e*e)))}function Fp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0,i=0;while(1){if(!(f==0.0))break;f=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);d=f;f=e*e+f*f}g=Dp(a,b)|0;f=((g|0)==0?+h[22870]:+h[22869])/f;d=f*d;b=c[(c[b+16>>2]|0)+112>>2]|0;i=b+16|0;h[i>>3]=+h[i>>3]+d;f=f*e;b=b+24|0;h[b>>3]=+h[b>>3]+f;b=c[(c[a+16>>2]|0)+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-d;b=b+24|0;h[b>>3]=+h[b>>3]-f;return g|0}function Gp(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Hp(a);return}function Hp(a){a=a|0;var b=0,d=0,e=0,f=0;e=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d<<2);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Ip(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Ip(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+4|0;k=n;a[m>>0]=a[18492]|0;a[m+1>>0]=a[18493]|0;a[m+2>>0]=a[18494]|0;a[m+3>>0]=a[18495]|0;m=Xx(91072,m,0)|0;Az(m,91080,280,1)|0;c[(c[b+16>>2]|0)+140>>2]=m;e=Sy(b)|0;while(1){if(!e)break;f=e+16|0;if(!(c[c[(c[f>>2]|0)+112>>2]>>2]|0)){j=Kp(m,ry(e)|0,e)|0;c[c[(c[f>>2]|0)+112>>2]>>2]=j}e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;h=c[e>>2]&3;g=c[c[(c[(c[((h|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;h=c[c[(c[(c[((h|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((g|0)!=(h|0))Az(Rx(m,g,h,0,1)|0,134378,176,1)|0;e=Gx(b,e)|0}f=Ty(b,f)|0}j=oD(m,k,0)|0;f=0;while(1){if((f|0)>=(c[k>>2]|0))break;h=c[j+(f<<2)>>2]|0;e=Sy(h)|0;while(1){if(!e)break;g=Ex(b,c[c[(c[e+16>>2]|0)+112>>2]>>2]|0)|0;while(1){if(!g)break;i=c[c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((e|0)!=(i|0)){i=Rx(m,e,i,0,1)|0;Az(i,134378,176,1)|0;Vx(h,i,1)|0}g=Gx(b,g)|0}e=Ty(h,e)|0}f=f+1|0}e=Sy(m)|0;while(1){if(!e)break;f=Ex(m,e)|0;while(1){if(!f)break;b=uH(8)|0;c[(c[f+16>>2]|0)+120>>2]=b;f=Gx(m,f)|0}e=Ty(m,e)|0}c[d>>2]=c[k>>2];l=n;return j|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;e=uH(40)|0;a=b+16|0;c[(c[a>>2]|0)+112>>2]=e;e=uH(c[46366]<<3)|0;a=c[a>>2]|0;c[a+132>>2]=e;e=c[d+16>>2]|0;h[a+88>>3]=+h[e+88>>3];h[a+96>>3]=+h[e+96>>3];h[a+80>>3]=+h[e+80>>3];c[c[a+112>>2]>>2]=d;return b|0}function Lp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;b=h+32|0;e=h;if(ay(a)|0){g=Jp(a,b)|0;f=c[b>>2]|0;b=c[g>>2]|0;if((f|0)==1){Xu(b,a);Mp(c[g>>2]|0);tq(a)|0}else{d=c[b+60>>2]|0;XD(a,2,8,e)|0;b=0;while(1){if((b|0)>=(f|0))break;i=c[g+(b<<2)>>2]|0;Xu(i,a);tq(i)|0;b=b+1|0}WD(f,g,d,e)|0;b=0;while(1){if((b|0)>=(f|0))break;Mp(c[g+(b<<2)>>2]|0);b=b+1|0}}D_(g)}l=h;return}function Mp(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;e=c[d+132>>2]|0;d=c[(c[(c[c[d+112>>2]>>2]|0)+16>>2]|0)+132>>2]|0;h[d>>3]=+h[e>>3];h[d+8>>3]=+h[e+8>>3];b=Ty(a,b)|0}return}function Np(a){a=a|0;if(ay(a)|0){Gp(a);Lp(a);D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);hn(a);eJ(a)}return}function Op(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;if(b|0){e=a+16|0;Pp(c[(c[e>>2]|0)+140>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}D_(c[(c[e>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401)}return}function Pp(a){a=a|0;var b=0,d=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+120>>2]|0);b=Gx(a,b)|0}b=d+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);d=Ty(a,d)|0}$x(a)|0;return}function Qp(a){a=a|0;var b=0,d=0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0.0,p=0.0;m=l;l=l+16|0;k=m;a:do if(Rp(a,k)|0){b=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;g=+h[b>>3];e=+h[b+8>>3];b=Sy(a)|0;while(1){if(!b)break;f=c[(c[b+16>>2]|0)+132>>2]|0;h[f>>3]=+h[f>>3]-g;f=f+8|0;h[f>>3]=+h[f>>3]-e;b=Ty(a,b)|0}b=(g!=0.0|e!=0.0)&1;d=Sy(a)|0;while(1){if(!d)break a;f=Ex(a,d)|0;if(f|0)break;d=Ty(a,d)|0}n=c[f>>2]&3;d=c[(c[(c[((n|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;f=c[(c[(c[((n|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;i=+h[f+8>>3];j=+h[f>>3];e=+K(+(+h[d+8>>3]-i),+(+h[d>>3]-j));e=+h[k>>3]-e;h[k>>3]=e;if(e!=0.0){g=+E(+e);e=+F(+e);b=Sy(a)|0;while(1){if(!b){b=1;break a}k=c[(c[b+16>>2]|0)+132>>2]|0;p=+h[k>>3]-j;n=k+8|0;o=+h[n>>3]-i;h[k>>3]=p*g+j-o*e;h[n>>3]=p*e+i+o*g;b=Ty(a,b)|0}}}else b=0;while(0);l=m;return b|0}function Rp(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=l;l=l+16|0;f=g;b=xx(b,91085)|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0){e=+c2(b,f);if((c[f>>2]|0)==(b|0))if(!((QL(b)|0)<<24>>24)){b=0;break}else e=0.0;while(1){if(!(e>180.0))break;e=e+-360.0}while(1){if(!(e<=-180.0))break;e=e+360.0}h[d>>3]=e*.017453292519943295;b=1}else b=0;while(0);l=g;return b|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,91095)|0;return Tp(a,(d|0)==0?(c|0?c:191979):d,b)|0}function Tp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+32|0;m=n+16|0;j=n+8|0;i=n;if((d|0)!=0?(a[d>>0]|0)!=0:0){f=17792;while(1){g=c[f+4>>2]|0;if(!g)break;if(!(V$(d,g,c[f+8>>2]|0)|0)){k=6;break}f=f+16|0}if((k|0)==6){if(!(c[f+12>>2]|0)){c[i>>2]=g;Pw(0,91103,i)|0;f=17792}i=c[f>>2]|0;c[e>>2]=i;c[e+4>>2]=c[f+12>>2];if((i|0)==18)Up(b,d+(c[f+8>>2]|0)|0,e)}if(!(c[f+4>>2]|0)){f=RL(d,63)|0;if(f<<24>>24==63){c[j>>2]=d;Pw(0,91145,j)|0;f=0}else f=f&255;f=(f|0)==0;c[e>>2]=f&1;f=f?91192:132627;k=15}}else{c[e>>2]=0;f=132627;k=15}if((k|0)==15)c[e+4>>2]=f;if(0){k=c[15686]|0;j=c[e+8>>2]|0;o=+h[e+16>>3];c[m>>2]=c[e+4>>2];c[m+4>>2]=j;h[m+8>>3]=o;g1(k,91200,m)|0}l=n;return e|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=g;f=(N1(b,134313,f)|0)>0;b=c[g>>2]|0;c[d+8>>2]=f&(b|0)>-1?b:1e3;h[d+16>>3]=+LL(a,nx(a,0,91236,0)|0,-4.0,-1.0e10);l=e;return}function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h+8|0;f=h;do if((ay(a)|0)>=2){d=Qp(a)|0;d=(Wp(a)|0)+d|0;e=c[b>>2]|0;if(e){if(0){e=c[15686]|0;j=ry(a)|0;i=c[b+4>>2]|0;c[f>>2]=j;c[f+4>>2]=i;g1(e,91565,f)|0;e=c[b>>2]|0}if(e>>>0>2){switch(e|0){case 3:{e=Xq(a,1)|0;break}case 4:{e=Xq(a,0)|0;break}case 6:case 5:{e=0;break}case 10:case 9:case 7:case 8:case 14:case 13:case 11:case 12:{Hq(a,e)|0;e=0;break}case 15:{e=Xq(a,-1)|0;break}default:{c[g>>2]=c[b+4>>2];Pw(0,91588,g)|0;e=0}}d=e+d|0;break}if(Xp(a)|0){Yp();D_(c[46075]|0);c[46075]=0;break}Zp(a);if((c[b>>2]|0)==2)e=_p()|0;else e=$p()|0;if(e|0)aq();Yp();D_(c[46075]|0);c[46075]=0;d=e+d|0}}else d=0;while(0);l=h;return d|0}function Wp(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+24|0;f=m+16|0;j=m;b=xx(a,137660)|0;a:do if(((b|0)!=0?(k=j+8|0,c[f>>2]=j,c[f+4>>2]=k,e=N1(b,102477,f)|0,(e|0)!=0):0)?(g=+h[j>>3],!(+B(+g)<1.0e-09)):0){if((e|0)!=1){d=+h[k>>3];if(+B(+d)<1.0e-09){b=0;break}}else{h[k>>3]=g;d=g}if(!(d==1.0&g==1.0)){if(0){f=c[15686]|0;h[i>>3]=g;h[i+8>>3]=d;g1(f,91748,i)|0}b=Sy(a)|0;while(1){if(!b){b=1;break a}i=c[(c[b+16>>2]|0)+132>>2]|0;h[i>>3]=+h[i>>3]*+h[j>>3];i=i+8|0;h[i>>3]=+h[i>>3]*+h[k>>3];b=Ty(a,b)|0}}else b=0}else b=0;while(0);l=m;return b|0}function Xp(b){b=b|0;var d=0,e=0,f=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+16|0;k=n;c[46084]=ay(b)|0;ur();c[46099]=vH((c[46084]|0)*96|0)|0;f=Sy(b)|0;d=c[46099]|0;qq(k,b);i=+g[k>>2];j=+g[k+4>>2];k=(a[k+8>>0]|0)==0;j=k?j:j*.013888888888888888;i=k?i:i*.013888888888888888;k=k?2:1;e=0;while(1){if((e|0)>=(c[46084]|0)){d=0;break}o=c[(c[f+16>>2]|0)+132>>2]|0;h[d+8>>3]=+h[o>>3];h[d+16>>3]=+h[o+8>>3];if(mb[k&3](d+40|0,f,i,j)|0){m=4;break}c[d+24>>2]=e;c[d+28>>2]=1;c[d>>2]=f;c[d+88>>2]=0;d=d+96|0;e=e+1|0;f=Ty(b,f)|0}if((m|0)==4){D_(c[46099]|0);c[46099]=0;d=1}l=n;return d|0}function Yp(){var a=0,b=0;a=c[46099]|0;b=0;while(1){if((b|0)>=(c[46084]|0))break;pt(a+40|0);a=a+96|0;b=b+1|0}ot();Wr();D_(c[46099]|0);return}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+32|0;m=o+16|0;n=o;p=c[46099]|0;i=+h[p+8>>3];k=+h[p+16>>3];f=c[46084]|0;d=p;e=1;g=+h[p+40>>3]+i;i=+h[p+56>>3]+i;j=+h[p+48>>3]+k;k=+h[p+64>>3]+k;while(1){if((e|0)>=(f|0))break;s=+h[d+104>>3];q=+h[d+112>>3];t=+h[d+136>>3]+s;r=+h[d+144>>3]+q;s=+h[d+152>>3]+s;q=+h[d+160>>3]+q;d=d+96|0;e=e+1|0;g=t<g?t:g;i=s>i?s:i;j=r<j?r:j;k=q>k?q:k}d=xx(b,91688)|0;if(d|0?a[d>>0]|0:0)h[173]=+b2(d);s=+h[173];t=s*(k-j);s=s*(i-g);h[m>>3]=g-s;h[m+8>>3]=j-t;h[n>>3]=s+i;h[n+8>>3]=t+k;iq(m,n);l=o;return}function _p(){var a=0,b=0,d=0,e=0;d=l;l=l+16|0;b=d;if(bq(0)|0){cq();a=0;do{pq();a=a+1|0}while((bq(a)|0)!=0);if(!0)a=1;else{e=c[15686]|0;c[b>>2]=a;g1(e,91616,b)|0;a=1}}else a=0;l=d;return a|0}function $p(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g=i;b=bq(0)|0;if(!b)a=0;else{cq();dq(0);Yt(0,1);a=0;e=0;d=0;while(1){fq();d=d+1|0;f=bq(d)|0;if(!f)break;b=(f|0)<(b|0)?0:e+1|0;c[46076]=1;if(b){gq();a=a+1|0}dq(1);Yt(0,1);e=b;b=f}if(0){f=c[15686]|0;c[g>>2]=d;g1(f,91616,g)|0;c[h>>2]=a;g1(f,91643,h)|0}hq();a=1}l=i;return a|0}function aq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=c[46099]|0;b=0;while(1){if((b|0)>=(d|0))break;e=c[(c[(c[a>>2]|0)+16>>2]|0)+132>>2]|0;h[e>>3]=+h[a+8>>3];h[e+8>>3]=+h[a+16>>3];a=a+96|0;b=b+1|0}return}function bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;o=q+24|0;n=q+8|0;p=q;d=c[46099]|0;e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0)){f=0;b=0;break}c[d+(b*96|0)+32>>2]=0;b=b+1|0}a:while(1){if((b|0)>=(e+-1|0))break;m=d+96|0;b=b+1|0;j=d+8|0;k=d+40|0;i=d+32|0;g=m;h=b;while(1){if((h|0)>=(e|0)){d=m;continue a}e=g+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];if(!(yt(n,k,o,g+40|0)|0))d=f;else{c[i>>2]=1;c[g+32>>2]=1;d=f+1|0}g=g+96|0;h=h+1|0;f=d;e=c[46084]|0}}if(0>1){o=c[15686]|0;c[p>>2]=a;c[p+4>>2]=f;g1(o,91669,p)|0}l=q;return f|0}function cq(){var a=0,b=0,d=0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;nq();k=c[46078]|0;l=c[46099]|0;a=c[46075]|0;a:while(1){i=a;if(a>>>0>=k>>>0)break;b=a+4|0;if(b>>>0>=k>>>0){a=b;continue}f=c[b>>2]|0;d=c[a>>2]|0;g=+h[d>>3];if(+h[f>>3]!=g){a=b;continue}e=+h[d+8>>3];if(+h[f+8>>3]!=e){a=b;continue}j=a+8|0;f=2;while(1){if(j>>>0>=k>>>0)break;d=c[j>>2]|0;if(!(+h[d>>3]==g)){m=11;break}if(!(+h[d+8>>3]==e)){m=11;break}j=j+4|0;f=f+1|0}if((m|0)==11){m=0;d=c[j>>2]|0;if(+h[d+8>>3]==e){e=(+h[d>>3]-g)/+(f|0);d=(((j>>>0>b>>>0?j:b)+-1+(0-i)|0)>>>2)+1|0;a=1;while(1){if((a|0)==(d|0)){a=j;continue a}i=c[b>>2]|0;h[i>>3]=+h[i>>3]+e*+(a|0);a=a+1|0;b=b+4|0}}}while(1){if(b>>>0>=j>>>0){a=j;continue a}f=c[a>>2]|0;n=c[f+16>>2]|0;i=c[b>>2]|0;d=c[i+16>>2]|0;h[i>>3]=(+h[l+(n*96|0)+56>>3]-+h[l+(n*96|0)+40>>3]+ +h[l+(d*96|0)+56>>3]-+h[l+(d*96|0)+40>>3])*.5+ +h[f>>3];b=b+4|0;a=a+4|0}}return}function dq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;if(a|0)nq();i=c[46075]|0;j=c[i>>2]|0;d=+h[j>>3];h[22887]=d;k=c[46084]|0;f=1;g=+h[j>>3];while(1){if((f|0)>=(k|0))break;a=c[i+(f<<2)>>2]|0;b=+h[a>>3];if(b<d){h[22887]=b;e=+h[a>>3]}else{e=b;b=d}f=f+1|0;d=b;g=e>g?e:g}e=+h[j+8>>3];h[22888]=e;h[22890]=+h[(c[i+(k+-1<<2)>>2]|0)+8>>3]-e;h[22889]=g-d;return}function eq(){var a=0;a=c[46077]|0;if(a>>>0<(c[46078]|0)>>>0){c[46077]=a+4;a=c[a>>2]|0}else a=0;return a|0}function fq(){var a=0,b=0,d=0;a=c[46099]|0;jq();d=(c[46076]|0)==0;b=0;while(1){if((b|0)>=(c[46084]|0))break;if(!(d?!(c[a+32>>2]|0):0))kq(a);a=a+96|0;b=b+1|0}return}function gq(){var a=0,b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;a=l;l=l+32|0;c=a+16|0;b=a;j=+h[22883];i=+h[22881];g=+h[22884];e=+h[22882];d=(i-e)*.05;f=(j-g)*.05;h[b>>3]=f+j;h[b+8>>3]=i+d;h[c>>3]=g-f;h[c+8>>3]=e-d;iq(c,b);l=a;return}function hq(){Hr();Jr();Kt();nr();return}function iq(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;f=+h[a>>3];h[22884]=f;e=+h[b>>3];h[22883]=e;c=+h[a+8>>3];h[22882]=c;d=+h[b+8>>3];h[22881]=d;h[22873]=f;h[22875]=f;h[22877]=e;h[22879]=e;h[22880]=d;h[22876]=d;h[22878]=c;h[22874]=c;return}function jq(){var a=0,b=0.0,d=0.0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0;m=c[46099]|0;g=m+8|0;f=+vr(g,182984);e=+vr(g,183e3);d=+vr(g,183016);a=1;b=+vr(g,183032);g=m;i=m;j=m;k=m;while(1){l=m+96|0;if((a|0)>=(c[46084]|0))break;q=m+104|0;r=+vr(q,182984);n=r<f;t=+vr(q,183016);p=t<d;s=+vr(q,183e3);o=s<e;u=+vr(q,183032);q=u<b;a=a+1|0;b=q?u:b;d=p?t:d;e=o?s:e;f=n?r:f;g=q?l:g;i=p?l:i;j=o?l:j;k=n?l:k;m=l}Xr(k+8|0,+h[22873],+h[22874]);Xr(i+8|0,+h[22877],+h[22878]);Xr(j+8|0,+h[22875],+h[22876]);Xr(g+8|0,+h[22879],+h[22880]);return}function kq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+64|0;j=p+48|0;i=p+32|0;g=p+16|0;m=p+8|0;n=p;k=c[a+88>>2]|0;o=k+8|0;b=0.0;d=0.0;e=0.0;k=c[k>>2]|0;while(1){f=c[k>>2]|0;if(!f)break;s=k+8|0;r=f+8|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];q=+lq(g,i,j);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];mq(g,i,j,m,n);b=+h[n>>3]*q+b;d=+h[m>>3]*q+d;e=q+e;k=f}h[a+8>>3]=d/e;h[a+16>>3]=b/e;l=p;return}function lq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+h[b+8>>3];f=+h[c+8>>3];e=+h[a+8>>3];return +(+B(+((f-e)*+h[b>>3]+(d-f)*+h[a>>3]+ +h[c>>3]*(e-d)))*.5)}function mq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;h[d>>3]=(+h[b>>3]+ +h[a>>3]+ +h[c>>3])*.3333333333333333;h[e>>3]=(+h[b+8>>3]+ +h[a+8>>3]+ +h[c+8>>3])*.3333333333333333;return}function nq(){var a=0,b=0,d=0,e=0;a=c[46075]|0;if(!a){a=vH(c[46084]<<2)|0;c[46075]=a;c[46078]=a+(c[46084]<<2)}d=c[46099]|0;Wr();e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0))break;c[a>>2]=d+8;c[d+88>>2]=0;c[d+28>>2]=1;d=d+96|0;a=a+4|0;b=b+1|0}_0(c[46075]|0,e,4,68);c[46077]=c[46075];return}function oq(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;d=+h[a+8>>3];e=+h[b+8>>3];if(!(d<e))if(!(d>e)){e=+h[a>>3];d=+h[b>>3];if(e<d)a=-1;else a=e>d&1}else a=1;else a=-1;return a|0}function pq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=0;b=c[46099]|0;while(1){if((a|0)>=(d|0))break;e=b+8|0;h[e>>3]=+h[e>>3]*1.05;e=b+16|0;h[e>>3]=+h[e>>3]*1.05;a=a+1|0;b=b+96|0}return}function qq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91700)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91704)|0;if(e|0?rq(e,j,.800000011920929,4.0)|0:0)break;g[j+4>>2]=4.0;g[j>>2]=4.0;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91709,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function rq(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;o=l;l=l+16|0;m=o;j=o+12|0;k=o+8|0;while(1){h=a[b>>0]|0;i=b+1|0;if(!(B$(h<<24>>24)|0))break;else b=i}p=h<<24>>24==43;h=d+8|0;a[h>>0]=p&1;c[m>>2]=j;c[m+4>>2]=k;switch(N1(p?i:b,91742,m)|0){case 0:{b=0;break}case 1:{c[k>>2]=c[j>>2];n=5;break}default:n=5}if((n|0)==5){do if(a[h>>0]|0){if(e>1.0){q=+g[j>>2]/e;g[d>>2]=q>f?f:q;e=+g[k>>2]/e;e=e>f?f:e;break}if(e<1.0){q=+g[j>>2]/e;g[d>>2]=q<f?f:q;e=+g[k>>2]/e;e=e<f?f:e;break}else{c[d>>2]=c[j>>2];e=+g[k>>2];break}}else{g[d>>2]=+g[j>>2]/e+1.0;e=+g[k>>2]/e+1.0}while(0);g[d+4>>2]=e;b=1}l=o;return b|0}function sq(a,b){a=a|0;b=b|0;var c=0,d=0;d=l;l=l+32|0;c=d;if((ay(a)|0)<2)a=0;else{Tp(a,b,c)|0;a=Vp(a,c)|0}l=d;return a|0}function tq(a){a=a|0;return sq(a,xx(a,91095)|0)|0}function uq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91704)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91700)|0;if(e|0?rq(e,j,1.25,3.200000047683716)|0:0)break;g[j+4>>2]=3.200000047683716;g[j>>2]=3.200000047683716;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91771,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;o=p;h=0;while(1){if((h|0)>=(d|0))break;c[e+(h<<2)>>2]=-1;h=h+1|0}c[e+(a<<2)>>2]=0;wq(f,a);a:do if(!(c[b+8>>2]|0)){h=2147483647;b:while(1){if(!((xq(f,o)|0)<<24>>24))break a;j=c[o>>2]|0;h=c[e+(j<<2)>>2]|0;i=b+(j*20|0)|0;j=b+(j*20|0)+4|0;k=h+1|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue b;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=k;yq(f,m)|0}a=a+1|0}}}else{h=2147483647;c:while(1){if(!((xq(f,o)|0)<<24>>24))break a;k=c[o>>2]|0;h=c[e+(k<<2)>>2]|0;i=b+(k*20|0)|0;j=b+(k*20|0)+4|0;k=b+(k*20|0)+8|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue c;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=h+~~+g[(c[k>>2]|0)+(a<<2)>>2];yq(f,m)|0}a=a+1|0}}}while(0);a=h+10|0;h=0;while(1){if((h|0)>=(d|0))break;i=e+(h<<2)|0;if((c[i>>2]|0)<0)c[i>>2]=a;h=h+1|0}l=p;return}function wq(a,b){a=a|0;b=b|0;c[c[a>>2]>>2]=b;c[a+12>>2]=0;c[a+8>>2]=1;return}function xq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<(c[a+8>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[b>>2]=c[a+(e<<2)>>2];a=1}else a=0;return a|0}function yq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<(c[a+4>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[a+(e<<2)>>2]=b;a=1}else a=0;return a|0}function zq(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<2)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;return}function Aq(a){a=a|0;D_(c[a>>2]|0);return}function Bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;if(!0)g=0;else{E1(91804,25,1,c[15686]|0)|0;g=0}while(1){if((g|0)>=(a|0))break;i=b+(g<<2)|0;f=0;e=0.0;while(1){if((f|0)==(a|0))break;if((g|0)!=(f|0))e=+h[(c[i>>2]|0)+(f<<3)>>3]+e;f=f+1|0}h[(c[i>>2]|0)+(g<<3)>>3]=-e;g=g+1|0}return xs(b,d,a+-1|0)|0}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0;j=wn(b,b,0.0)|0;k=wn(b,b,0.0)|0;e=Sy(a)|0;while(1){if(!e)break;d=Jx(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;f=(c[c[((g|0)==3?d:d+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?d:d+-48|0)+40>>2]>>2]|0)>>>4;if((f|0)!=(g|0)){l=-1.0/+h[(c[d+16>>2]|0)+136>>3];h[(c[j+(g<<2)>>2]|0)+(f<<3)>>3]=l;h[(c[j+(f<<2)>>2]|0)+(g<<3)>>3]=l}d=Kx(a,d,e)|0}e=Ty(a,e)|0}i=Bq(b,j,k)|0;a:do if(i|0){f=a+16|0;e=0;while(1){if((e|0)>=(b|0))break a;g=k+(e<<2)|0;d=0;while(1){if((d|0)==(b|0))break;a=c[g>>2]|0;h[(c[(c[(c[f>>2]|0)+160>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=+h[(c[k+(d<<2)>>2]|0)+(d<<3)>>3]+ +h[a+(e<<3)>>3]+ +h[a+(d<<3)>>3]*-2.0;d=d+1|0}e=e+1|0}}while(0);xn(j);xn(k);return i|0}function Dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;n=d<<3;o=vH(n)|0;p=vH(n)|0;q=vH(n)|0;k=vH(n)|0;m=vH(n)|0;n=vH(n)|0;Ps(d,c,n);Is(d,n);Is(d,b);Ks(a,d,b,k);Ms(d,n,k,o);Ps(d,o,p);i=f+-1|0;c=0;g=+Qs(d,o,o);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,o)>e)){c=0;break}Ks(a,d,p,q);h=+Qs(d,p,q);if(h==0.0){c=0;break}h=g/h;Os(d,p,h,m);Ns(d,b,m,b);if((c|0)<(i|0)){Os(d,q,h,q);Ms(d,o,q,o);h=+Qs(d,o,o);if(g==0.0){r=7;break}Os(d,p,h/g,p);Ns(d,o,p,p);g=h}c=c+1|0}if((r|0)==7){Pw(1,91830,j)|0;c=1}D_(o);D_(p);D_(q);D_(k);D_(m);D_(n);l=s;return c|0}function Eq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;var h=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;o=d<<3;p=vH(o)|0;q=vH(o)|0;k=vH(o)|0;m=vH(o)|0;n=vH(o)|0;o=vH(o)|0;Ps(d,c,o);if(g<<24>>24){Is(d,o);Is(d,b)}Ls(a,d,b,m);Ms(d,o,m,p);Ps(d,p,q);g=f+-1|0;c=0;h=+Qs(d,p,p);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,p)>e)){c=0;break}Ls(a,d,q,k);i=+Qs(d,q,k);if(i==0.0){c=0;break}i=h/i;Os(d,q,i,n);Ns(d,b,n,b);if((c|0)<(g|0)){Os(d,k,i,k);Ms(d,p,k,p);i=+Qs(d,p,p);if(h==0.0){r=9;break}Os(d,q,i/h,q);Ns(d,p,q,q);h=i}c=c+1|0}if((r|0)==9){Pw(1,91830,j)|0;c=1}D_(p);D_(q);D_(k);D_(m);D_(n);D_(o);l=s;return c|0}function Fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;j=q;k=d<<2;m=uH(k)|0;n=uH(k)|0;o=uH(k)|0;k=uH(k)|0;Ts(d,b);Ts(d,c);Us(a,d,b,k);Ts(d,k);Vs(d,c,k,m);Zs(d,m,n);i=f+-1|0;c=0;g=+_s(d,m,m);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+bt(d,m)>e)){c=0;break}Ts(d,n);Ts(d,b);Ts(d,m);Us(a,d,n,o);Ts(d,o);h=+_s(d,n,o);if(h==0.0){c=0;break}h=g/h;Xs(d,b,h,n);if((c|0)<(i|0)){Xs(d,m,-h,o);h=+_s(d,m,m);if(g==0.0){p=7;break}Ys(d,n,h/g,n);Ws(d,m,n,n);g=h}c=c+1|0}if((p|0)==7){Pw(1,91830,j)|0;c=1}D_(m);D_(n);D_(o);D_(k);l=q;return c|0}function Gq(a,b,d,e,f,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=+n;var o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=l;l=l+48|0;F=M+24|0;E=M+16|0;D=M+8|0;C=M;J=M+40|0;K=M+36|0;H=M+32|0;s=j&4;c[J>>2]=0;c[K>>2]=0;a:do if(c[a+16>>2]|0){p=0;o=0;while(1){if((p|0)>=(b|0))break;t=c[a+(p*20|0)>>2]|0;u=a+(p*20|0)+16|0;r=1;while(1){if((r|0)>=(t|0))break;if(!(o<<24>>24))o=+g[(c[u>>2]|0)+(r<<2)>>2]!=0.0;else o=1;r=r+1|0;o=o&1}p=p+1|0}if(o<<24>>24){z=(s|0)!=0;if(z){r=e+4|0;b:do if((i|0)>2){o=i+-1|0;if((qn(a,b,d,r,f,o,j,k,15)|0)<0){o=-1;break a}p=e+(o<<2)|0;o=0;while(1){if((o|0)>=(b|0))break b;h[(c[p>>2]|0)+(o<<3)>>3]=+h[(c[r>>2]|0)+(o<<3)>>3];o=o+1|0}}while(0);y=c[e>>2]|0;w=c[r>>2]|0;if((kt(a,b,w,b)|0)==0?(kv(a,b,.01,.1,w,J,K,H)|0)==0:0){x=c[H>>2]|0;if((x|0)<1){o=qn(a,b,d,e,f,i,j,k,m)|0;break}c:do if(n>0.0){s=c[J>>2]|0;t=c[K>>2]|0;u=x+-1|0;q=0.0;r=0;while(1){if((r|0)>=(x|0))break c;o=c[t+(r<<2)>>2]|0;A=n-q-+h[w+(c[s+(o<<2)>>2]<<3)>>3]+ +h[w+(c[s+(o+-1<<2)>>2]<<3)>>3];q=(A<0.0?0.0:A)+q;if((r|0)<(u|0))p=c[t+(r+1<<2)>>2]|0;else p=b;while(1){if((o|0)>=(p|0))break;I=w+(c[s+(o<<2)>>2]<<3)|0;h[I>>3]=+h[I>>3]+q;o=o+1|0}r=r+1|0}}while(0);if((i|0)==2?(Qt(a,b,w,y,+h[22909])|0)!=0:0){p=0;o=-1}else L=33}else{p=0;o=-1}}else{kn(a,b,i,e,f)|0;if(!(kv(a,b,.01,.1,0,J,K,H)|0))L=33;else{p=0;o=-1}}d:do if((L|0)==33){if((b|0)==1){o=0;break a}I=vH(c[H>>2]<<2)|0;if(!m){o=0;break a}if(0)EL();switch(k|0){case 2:{if(0)E1(91878,24,1,c[15686]|0)|0;o=pn(a,b)|0;L=46;break}case 1:{o=ln(a,b)|0;if(!o){Pw(0,91903,C)|0;Pw(3,91952,D)|0;L=47}else G=o;break}case 3:{if(0)E1(92005,21,1,c[15686]|0)|0;o=mn(a,b)|0;L=46;break}default:L=47}if((L|0)==46)if(!o)L=47;else G=o;if((L|0)==47){if(0)E1(92027,26,1,c[15686]|0)|0;G=on(a,b)|0}if(0){a=c[15686]|0;h[E>>3]=+FL();g1(a,92054,E)|0;E1(92066,25,1,a)|0;EL()}a=b+-1|0;y=(O(a,b)|0)/2|0;E=y+b|0;e:do if(!z){q=1.0;p=0;while(1){if((p|0)>=(i|0))break;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;A=+B(+(+h[(c[r>>2]|0)+(o<<3)>>3]));q=A>q?A:q;o=o+1|0}p=p+1|0}q=1.0/q;p=0;while(1){if((p|0)>=(i|0))break e;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;D=(c[r>>2]|0)+(o<<3)|0;h[D>>3]=+h[D>>3]*(10.0*q);o=o+1|0}p=p+1|0}}while(0);f:do if(n>0.0){v=+(y|0);o=0;q=0.0;s=0;g:while(1){if((s|0)>=(a|0))break;t=s+1|0;r=o;p=t;while(1){o=r+1|0;if((p|0)>=(b|0)){s=t;continue g}A=+gs(e,i,s,p);r=o;q=A/+g[G+(o<<2)>>2]+q;p=p+1|0}}q=q/v;o=0;while(1){if((o|0)>=(E|0)){o=0;break f}D=G+(o<<2)|0;g[D>>2]=+g[D>>2]*q;o=o+1|0}}else o=0;while(0);while(1){if((o|0)>=(i|0))break;Is(b,c[e+(o<<2)>>2]|0);o=o+1|0}p=c[e+4>>2]|0;q=+h[p>>3];o=0;while(1){if((o|0)>=(b|0))break;D=p+(o<<3)|0;h[D>>3]=+h[D>>3]-q;o=o+1|0}u=i<<2;D=vH(u)|0;x=b<<2;w=O(x,i)|0;r=vH(w)|0;o=0;while(1){if((o|0)>=(i|0))break;s=r+((O(o,b)|0)<<2)|0;c[D+(o<<2)>>2]=s;t=e+(o<<2)|0;p=0;while(1){if((p|0)>=(b|0))break;g[s+(p<<2)>>2]=+h[(c[t>>2]|0)+(p<<3)>>3];p=p+1|0}o=o+1|0}v=+(y|0);if(0){C=c[15686]|0;h[F>>3]=+FL();g1(C,92092,F)|0}ct(E,G);dt(E,G);C=vH(b<<3)|0;$s(b,0.0,C);o=0;r=0;while(1){if((r|0)>=(a|0)){o=b;p=0;r=0;break}s=b-r|0;q=0.0;p=1;while(1){o=o+1|0;if((p|0)>=(s|0))break;A=+g[G+(o<<2)>>2];F=C+(p+r<<3)|0;h[F>>3]=+h[F>>3]-A;q=q+A;p=p+1|0}F=C+(r<<3)|0;h[F>>3]=+h[F>>3]-q;r=r+1|0}while(1){if((p|0)>=(b|0))break;g[G+(r<<2)>>2]=+h[C+(p<<3)>>3];F=o+r|0;o=o+-1|0;p=p+1|0;r=F}k=vH(u)|0;c[k>>2]=vH(w)|0;o=1;while(1){if((o|0)>=(i|0))break;c[k+(o<<2)>>2]=(c[k>>2]|0)+((O(o,b)|0)<<2);o=o+1|0}z=vH(x)|0;f=vH(x)|0;j=vH(E<<2)|0;p=Et(G,b)|0;d=Jt(G,b,c[J>>2]|0,c[K>>2]|0,c[H>>2]|0)|0;y=k+4|0;r=0;A=1797693134862315708145274.0e284;o=0;while(1){if(!(r<<24>>24==0&(o|0)<(m|0)))break;$s(b,0.0,C);et(E,G,j);w=0;t=0;while(1){if((w|0)>=(a|0)){r=0;s=b;t=0;break}x=b-w+-1|0;at(b,0.0,f);r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;at(x,+g[(c[H>>2]|0)+(w<<2)>>2],z);Xs(x,z,-1.0,(c[H>>2]|0)+(w<<2)+4|0);ct(x,z);Ws(x,z,f,f);r=r+1|0}ft(x,f);r=0;while(1){if((r|0)>=(x|0))break;s=f+(r<<2)|0;q=+g[s>>2];if(q>=3402823466385288598117041.0e14|q<0.0)g[s>>2]=0.0;r=r+1|0}u=w+1|0;q=0.0;r=t;s=0;while(1){r=r+1|0;if((s|0)>=(x|0))break;H=j+(r<<2)|0;N=+g[H>>2]*+g[f+(s<<2)>>2];g[H>>2]=N;H=C+(u+s<<3)|0;h[H>>3]=+h[H>>3]-N;q=q+N;s=s+1|0}t=C+(w<<3)|0;h[t>>3]=+h[t>>3]-q;w=u;t=r}while(1){if((r|0)>=(b|0)){r=0;break}g[j+(t<<2)>>2]=+h[C+(r<<3)>>3];H=s+t|0;r=r+1|0;s=s+-1|0;t=H}while(1){if((r|0)>=(i|0)){q=0.0;r=0;break}Us(j,b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0);r=r+1|0}while(1){if((r|0)>=(i|0))break;q=+_s(b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0)+q;r=r+1|0}q=q*2.0+v;r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;Us(G,b,c[H>>2]|0,z);q=q-+_s(b,c[H>>2]|0,z);r=r+1|0}N=+B(+(q-A))/+B(+(A+1.0e-10));r=((o|0)>1&q>A|N<+h[22909])&1;s=0;while(1){if((s|0)>=(i|0))break;if((s|0)!=1){if(Fq(G,c[D+(s<<2)>>2]|0,c[k+(s<<2)>>2]|0,b,.001,b)|0){o=-1;break d}}else Ft(d,c[y>>2]|0,D,i,1,15,I,n)|0;s=s+1|0}A=q;o=o+1|0}D_(I);It(d);if(D|0){r=0;while(1){if((r|0)>=(i|0))break;t=D+(r<<2)|0;u=e+(r<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[u>>2]|0)+(s<<3)>>3]=+g[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}r=r+1|0}D_(c[D>>2]|0);D_(D)}if(k|0){D_(c[k>>2]|0);D_(k)}D_(z);D_(f);D_(C);D_(G);D_(j)}while(0);D_(c[J>>2]|0);D_(c[K>>2]|0);if(p){D_(c[p>>2]|0);D_(p)}}else L=10}else L=10;while(0);if((L|0)==10)o=qn(a,b,d,e,f,i,j,k,m)|0;l=M;return o|0}function Hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;f=m+24|0;g=m+12|0;d=m;i=ay(a)|0;k=vH(i*48|0)|0;qq(d,a);c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];d=Sy(a)|0;e=k;while(1){if(!d)break;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];Iq(d,e,f);d=Ty(a,d)|0;e=e+48|0}a:do if(!(Jq(k,i)|0))d=0;else{switch(b|0){case 9:{Lq(a,k,i,69,1);Nq(a,k,i,70,1);d=0;e=k;break}case 10:{Nq(a,k,i,70,1);Lq(a,k,i,69,1);d=0;e=k;break}case 7:{Lq(a,k,i,71,1);Nq(a,k,i,70,1);j=9;break}case 8:{j=9;break}case 13:{j=10;break}case 14:{Nq(a,k,i,70,0);Lq(a,k,i,69,0);d=0;e=k;break}case 12:{Nq(a,k,i,72,0);Lq(a,k,i,69,0);d=0;e=k;break}default:{Lq(a,k,i,71,0);Nq(a,k,i,70,0);d=0;e=k}}if((j|0)==9){Nq(a,k,i,72,1);Lq(a,k,i,69,1);j=10}if((j|0)==10){Lq(a,k,i,69,0);Nq(a,k,i,70,0);d=0;e=k}while(1){if((d|0)>=(i|0)){d=1;break a}g=c[e+16>>2]|0;j=c[(c[(c[e+20>>2]|0)+16>>2]|0)+132>>2]|0;h[j>>3]=+(c[e+12>>2]|0)*1.3888888888888887e-03;h[j+8>>3]=+(g|0)*1.3888888888888887e-03;d=d+1|0;e=e+48|0}}while(0);D_(k);l=m;return d|0}function Iq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,l=0.0,m=0.0;f=c[b+16>>2]|0;k=c[f+132>>2]|0;l=+h[k>>3]*720.0;j=~~(l+(l>=0.0?.5:-.5));l=+h[k+8>>3]*720.0;k=~~(l+(l>=0.0?.5:-.5));if(!(a[e+8>>0]|0)){m=+h[f+32>>3]*72.0*(+g[e>>2]*5.0);l=+h[f+40>>3]*72.0*(+g[e+4>>2]*5.0);i=~~(m+(m>=0.0?.5:-.5));f=~~(l+(l>=0.0?.5:-.5))}else{l=+h[f+32>>3]*36.0;m=+h[f+40>>3]*36.0;i=~~((+g[e>>2]+ +(~~(l+(l>=0.0?.5:-.5))|0))*10.0);f=~~((+g[e+4>>2]+ +(~~(m+(m>=0.0?.5:-.5))|0))*10.0)}c[d+12>>2]=j;c[d+16>>2]=k;c[d+20>>2]=b;c[d+32>>2]=j-i;c[d+36>>2]=k-f;c[d+40>>2]=i+j;c[d+44>>2]=f+k;return}function Jq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+-1|0;d=0;a:while(1){if((d|0)>=(k|0)){a=0;break}j=a+48|0;d=d+1|0;g=a+32|0;h=a+40|0;i=a+36|0;f=a+44|0;a=j;e=d;while(1){if((e|0)>=(b|0)){a=j;continue a}if((((c[g>>2]|0)<=(c[a+40>>2]|0)?(c[a+32>>2]|0)<=(c[h>>2]|0):0)?(c[i>>2]|0)<=(c[a+44>>2]|0):0)?(c[a+36>>2]|0)<=(c[f>>2]|0):0){a=1;break a}a=a+48|0;e=e+1|0}}return a|0}function Kq(a,b){a=a|0;b=b|0;if((c[a+36>>2]|0)>(c[b+44>>2]|0))a=0;else a=(c[b+36>>2]|0)<=(c[a+44>>2]|0)&1;return a|0}function Lq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+12>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,73)|0;else h=Sq(i,e,73)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+12|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+32|0;c[f>>2]=(c[f>>2]|0)+e;f=b+40|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Mq(a,b){a=a|0;b=b|0;if((c[a+32>>2]|0)>(c[b+40>>2]|0))a=0;else a=(c[b+32>>2]|0)<=(c[a+40>>2]|0)&1;return a|0}function Nq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+16>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,74)|0;else h=Sq(i,e,74)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+16|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+36|0;c[f>>2]=(c[f>>2]|0)+e;f=b+44|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[a+36>>2]|0)<=(c[b+44>>2]|0)?(c[b+36>>2]|0)<=(c[a+44>>2]|0):0)if((c[a+40>>2]|0)<(c[e>>2]|0))a=1;else{g=Rq(d,e)|0;g=g-(c[b+12>>2]|0)+(c[a+12>>2]|0)|0;b=c[b+16>>2]|0;a=c[a+16>>2]|0;f=(b|0)<(a|0);e=Qq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[d>>2]|0)<=(c[b+40>>2]|0)?(c[e>>2]|0)<=(c[a+40>>2]|0):0)if((c[a+44>>2]|0)<(c[b+36>>2]|0))a=1;else{g=Qq(d,e)|0;g=g-(c[b+16>>2]|0)+(c[a+16>>2]|0)|0;b=c[b+12>>2]|0;a=c[a+12>>2]|0;f=(b|0)<(a|0);e=Rq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Qq(a,b){a=a|0;b=b|0;return ((c[a+12>>2]|0)-(c[a+4>>2]|0)+(c[b+12>>2]|0)-(c[b+4>>2]|0)|0)/2|0|0}function Rq(a,b){a=a|0;b=b|0;return ((c[a+8>>2]|0)-(c[a>>2]|0)+(c[b+8>>2]|0)-(c[b>>2]|0)|0)/2|0|0}function Sq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;v=x;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;w=Xx(92103,v,0)|0;Az(w,134401,280,1)|0;g=Aw(d)|0;h=-2147483647;u=0;while(1){if(!g)break;s=c[g+8>>2]|0;t=u+((h|0)!=(s|0)&1)|0;g=c[g>>2]|0;h=s;u=t}s=w+16|0;t=(u<<3)+-4|0;n=0;j=0;g=0;h=0;m=0;r=Aw(d)|0;i=-2147483647;while(1){if(!r)break;q=c[r+8>>2]|0;if((i|0)!=(q|0)){p=az(w,ry(c[r+20>>2]|0)|0,1)|0;Az(p,134365,304,1)|0;o=p+16|0;g=c[o>>2]|0;c[g+112>>2]=r;if(!h){c[(c[s>>2]|0)+192>>2]=p;n=p}else{c[(c[n+16>>2]|0)+164>>2]=p;n=h}c[g+176>>2]=0;k=j+1|0;i=uH(k<<2)|0;c[(c[o>>2]|0)+172>>2]=i;if(!m){j=k;k=p;m=p;g=p;h=n;i=q}else{i=m+16|0;c[(c[i>>2]|0)+184>>2]=0;j=uH((m|0)==(n|0)?t:u-j<<2)|0;c[(c[i>>2]|0)+180>>2]=j;j=Rx(w,m,p,0,1)|0;Az(j,134378,176,1)|0;g=c[j+16>>2]|0;b[g+170>>1]=10;c[g+156>>2]=1;g=c[i>>2]|0;h=c[g+180>>2]|0;if(!h)g=vH((c[g+184>>2]<<2)+8|0)|0;else g=xH(h,(c[g+184>>2]<<2)+8|0)|0;m=c[i>>2]|0;c[m+180>>2]=g;m=m+184|0;h=c[m>>2]|0;c[m>>2]=h+1;c[g+(h<<2)>>2]=j;g=c[i>>2]|0;c[(c[g+180>>2]|0)+(c[g+184>>2]<<2)>>2]=0;g=c[o>>2]|0;h=c[g+172>>2]|0;if(!h)g=vH((c[g+176>>2]<<2)+8|0)|0;else g=xH(h,(c[g+176>>2]<<2)+8|0)|0;h=c[o>>2]|0;c[h+172>>2]=g;h=h+176|0;m=c[h>>2]|0;c[h>>2]=m+1;c[g+(m<<2)>>2]=j;j=c[o>>2]|0;c[(c[j+172>>2]|0)+(c[j+176>>2]<<2)>>2]=0;j=k;k=p;m=p;g=p;h=n;i=q}}else{k=g;g=n}c[r+24>>2]=k;n=g;g=k;r=c[r>>2]|0}m=m+16|0;c[(c[m>>2]|0)+184>>2]=0;g=uH(4)|0;c[(c[m>>2]|0)+180>>2]=g;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;m=Xx(92150,v,0)|0;g=Aw(d)|0;while(1){if(!g)break;v=az(m,ry(c[g+20>>2]|0)|0,1)|0;Az(v,134365,304,1)|0;c[g+28>>2]=v;c[(c[v+16>>2]|0)+112>>2]=g;g=c[g>>2]|0}g=0;k=Aw(d)|0;h=-2147483647;a:while(1){if(!k)break;j=c[k+8>>2]|0;b:do if((h|0)==(j|0))j=h;else{g=k;while(1){g=c[g>>2]|0;if(!g)break a;if((c[g+8>>2]|0)!=(j|0))break b}}while(0);i=k+28|0;h=g;while(1){if(!h)break;if(lb[e&127](k,h)|0)Rx(m,c[i>>2]|0,c[h+28>>2]|0,0,1)|0;h=c[h>>2]|0}k=c[k>>2]|0;h=j}Vq(m,w,f);$x(m)|0;l=x;return w|0}function Tq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;r=s;a[r>>0]=a[18484]|0;a[r+1>>0]=a[18485]|0;a[r+2>>0]=a[18486]|0;a[r+3>>0]=a[18487]|0;r=Xx(92103,r,0)|0;Az(r,134401,280,1)|0;k=r+16|0;h=Aw(e)|0;i=0;while(1){if(!h)break;j=az(r,ry(c[h+20>>2]|0)|0,1)|0;Az(j,134365,304,1)|0;p=j+16|0;n=c[p>>2]|0;c[n+112>>2]=h;c[h+24>>2]=j;c[n+176>>2]=0;n=uH(4)|0;o=c[p>>2]|0;c[o+172>>2]=n;c[o+184>>2]=0;o=uH(4)|0;c[(c[p>>2]|0)+180>>2]=o;if(!i)c[(c[k>>2]|0)+192>>2]=j;else c[(c[i+16>>2]|0)+164>>2]=j;h=c[h>>2]|0;i=j}m=Aw(e)|0;a:while(1){if(!m)break;n=m+32|0;o=m+24|0;p=m+20|0;h=m;while(1){h=c[h>>2]|0;if(!h)break;if(lb[f&127](m,h)|0){i=lb[g&127](n,h+32|0)|0;j=Rx(r,c[o>>2]|0,c[h+24>>2]|0,0,1)|0;Az(j,134378,176,1)|0;if((i|0)>=65536){q=13;break a}k=j+16|0;t=c[k>>2]|0;b[t+170>>1]=i;c[t+156>>2]=1;if(j|0?Rx(d,c[p>>2]|0,c[h+20>>2]|0,0,0)|0:0)c[(c[k>>2]|0)+156>>2]=100}}m=c[m>>2]|0}if((q|0)==13)qa(92106,92122,254,92135);m=Aw(e)|0;while(1){if(!m)break;k=c[m+24>>2]|0;n=k+16|0;k=Ex(r,k)|0;while(1){if(!k)break;h=c[n>>2]|0;i=c[h+180>>2]|0;if(!i)h=vH((c[h+184>>2]<<2)+8|0)|0;else h=xH(i,(c[h+184>>2]<<2)+8|0)|0;i=c[n>>2]|0;c[i+180>>2]=h;i=i+184|0;j=c[i>>2]|0;c[i>>2]=j+1;c[h+(j<<2)>>2]=k;j=c[n>>2]|0;c[(c[j+180>>2]|0)+(c[j+184>>2]<<2)>>2]=0;j=k+-48|0;h=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;i=c[h+172>>2]|0;if(!i)h=vH((c[h+176>>2]<<2)+8|0)|0;else h=xH(i,(c[h+176>>2]<<2)+8|0)|0;c[(c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0)+172>>2]=h;g=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;q=c[g+172>>2]|0;g=g+176|0;t=c[g>>2]|0;c[g>>2]=t+1;c[q+(t<<2)>>2]=k;t=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;c[(c[t+172>>2]|0)+(c[t+176>>2]<<2)>>2]=0;k=Gx(r,k)|0}m=c[m>>2]|0}l=s;return r|0}function Uq(a){a=a|0;var b=0,d=0,e=0,f=0;f=Sy(a)|0;while(1){if(!f)break;d=f+16|0;b=c[d>>2]|0;e=c[b+172>>2]|0;if(e){D_(e);b=c[d>>2]|0}b=c[b+180>>2]|0;if(b|0)D_(b);f=Ty(a,f)|0}$x(a)|0;return}function Vq(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=Sy(a)|0;while(1){if(!k)break;n=c[(c[k+16>>2]|0)+112>>2]|0;m=c[n+24>>2]|0;n=n+32|0;o=m+16|0;l=Ex(a,k)|0;while(1){if(!l)break;h=c[(c[(c[((c[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;p=lb[e&127](n,h+32|0)|0;h=c[h+24>>2]|0;i=Rx(d,m,h,0,1)|0;Az(i,134378,176,1)|0;j=i+16|0;f=c[j>>2]|0;c[f+156>>2]=1;g=b[f+170>>1]|0;if((p|0)>(g&65535|0)){if(!(g<<16>>16)){f=c[o>>2]|0;g=c[f+180>>2]|0;if(!g)f=vH((c[f+184>>2]<<2)+8|0)|0;else f=xH(g,(c[f+184>>2]<<2)+8|0)|0;q=c[o>>2]|0;c[q+180>>2]=f;q=q+184|0;g=c[q>>2]|0;c[q>>2]=g+1;c[f+(g<<2)>>2]=i;f=c[o>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;h=h+16|0;f=c[h>>2]|0;g=c[f+172>>2]|0;if(!g)f=vH((c[f+176>>2]<<2)+8|0)|0;else f=xH(g,(c[f+176>>2]<<2)+8|0)|0;g=c[h>>2]|0;c[g+172>>2]=f;g=g+176|0;q=c[g>>2]|0;c[g>>2]=q+1;c[f+(q<<2)>>2]=i;f=c[h>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;f=c[j>>2]|0}b[f+170>>1]=p}l=Gx(a,l)|0}k=Ty(a,k)|0}return}function Wq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function Xq(b,d){b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;u=y+24|0;s=y+16|0;r=y+52|0;q=y+40|0;t=y;w=ay(b)|0;x=vH(w*72|0)|0;qq(q,b);k=+g[q>>2];m=+g[q+4>>2];q=(a[q+8>>0]|0)!=0;k=q?k*.013888888888888888:k;m=q?m*.013888888888888888:m;n=k*.5;o=m*.5;e=x;f=Sy(b)|0;while(1){if(!f)break;p=c[f+16>>2]|0;i=+h[p+32>>3];if(q){j=+h[p+40>>3]*.5+m;i=i*.5+k}else{j=o*+h[p+40>>3];i=n*i}p=c[p+132>>2]|0;A=+h[p>>3];h[e>>3]=A;z=+h[p+8>>3];h[e+8>>3]=z;h[e+16>>3]=A-i;h[e+24>>3]=z-j;h[e+32>>3]=A+i;h[e+40>>3]=z+j;h[e+48>>3]=i;h[e+56>>3]=j;c[e+64>>2]=f;e=e+72|0;f=Ty(b,f)|0}do if((d|0)<0){i=+Yq(x,w);if(i==0.0){D_(x);e=0;break}if(!0){k=i;j=i;v=19}else{v=c[15686]|0;h[s>>3]=i;g1(v,92153,s)|0;k=i;j=i;v=19}}else{f=Zq(x,w,r)|0;e=c[r>>2]|0;if(!e){D_(f);D_(x);e=0;break}if(!d){$q(t,f,e);i=+h[t>>3];j=+h[t+8>>3]}else{j=+_q(f,e);i=j}D_(f);if(!0){k=i;v=19}else{v=c[15686]|0;h[u>>3]=i;h[u+8>>3]=j;g1(v,92167,u)|0;k=i;v=19}}while(0);if((v|0)==19){e=0;f=x;while(1){if((e|0)>=(w|0))break;v=c[(c[(c[f+64>>2]|0)+16>>2]|0)+132>>2]|0;h[v>>3]=+h[f>>3]*k;h[v+8>>3]=+h[f+8>>3]*j;e=e+1|0;f=f+72|0}D_(x);e=1}l=y;return e|0}function Yq(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=0.0;d=0;a:while(1){if((d|0)>=(b|0))break;r=a+72|0;d=d+1|0;m=a+16|0;n=a+8|0;o=a+56|0;p=a+48|0;q=a+32|0;k=a+24|0;l=a+40|0;i=d;j=r;while(1){if((i|0)>=(b|0)){a=r;continue a}if(((+h[m>>3]<=+h[j+32>>3]?+h[j+16>>3]<=+h[q>>3]:0)?+h[k>>3]<=+h[j+40>>3]:0)?+h[j+24>>3]<=+h[l>>3]:0){c=0.0;break a}e=+h[a>>3];f=+h[j>>3];if(e==f)g=t;else{g=+B(+(e-f));g=(+h[j+48>>3]+ +h[p>>3])/g}e=+h[n>>3];f=+h[j+8>>3];if(e==f)e=t;else{e=+B(+(e-f));e=(+h[j+56>>3]+ +h[o>>3])/e}g=e<g?e:g;i=i+1|0;j=j+72|0;c=g>c?g:c}}return +c}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=vH((b<<4)+16|0)|0;m=0;e=0;n=k;o=b;i=k;a:while(1){if((e|0)>=(b|0))break;z=a+72|0;e=e+1|0;y=a+16|0;r=a+32|0;s=a+24|0;u=a+40|0;v=a+8|0;w=a+56|0;x=a+48|0;p=e;q=z;l=i;while(1){if((p|0)==(b|0)){a=z;i=l;continue a}if(((+h[y>>3]<=+h[q+32>>3]?+h[q+16>>3]<=+h[r>>3]:0)?+h[s>>3]<=+h[q+40>>3]:0)?+h[q+24>>3]<=+h[u>>3]:0){i=o+b|0;if((m|0)==(o|0)){k=xH(k,(i<<4)+16|0)|0;n=k;l=k}else i=o;f=+h[a>>3];g=+h[q>>3];if(!(f==g)){f=(+h[q+48>>3]+ +h[x>>3])/+B(+(f-g));if(f<1.0){f=1.0;A=13}}else{f=t;A=13}if((A|0)==13)A=0;g=+h[v>>3];j=+h[q+8>>3];if(!(g==j)){g=(+h[q+56>>3]+ +h[w>>3])/+B(+(g-j));if(g<1.0){g=1.0;A=16}}else{g=t;A=16}if((A|0)==16)A=0;m=m+1|0;h[n+(m<<4)>>3]=f;h[n+(m<<4)+8>>3]=g}else i=o;p=p+1|0;q=q+72|0;o=i}}A=xH(i,(m<<4)+16|0)|0;c[d>>2]=m;return A|0}function _q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0;d=1;e=0.0;while(1){c=a+16|0;if((d|0)>(b|0))break;g=+h[c>>3];f=+h[a+24>>3];f=g<f?g:f;d=d+1|0;e=f>e?f:e;a=c}return +e}function $q(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,i=0.0;h[b>>3]=1.0;h[b+8>>3]=t;_0(b+16|0,c,16,75);g=vH((c<<4)+16|0)|0;h[g+(c<<4)>>3]=+h[b+(c<<4)>>3];f=c;d=1.0;while(1){h[g+(f<<4)+8>>3]=d;e=f+-1|0;if((f|0)<=0){d=t;e=0;f=0;break}h[g+(e<<4)>>3]=+h[b+(e<<4)>>3];i=+h[(+h[b+(f<<4)+8>>3]>d?b:g)+(f<<4)+8>>3];f=e;d=i}while(1){if((f|0)>(c|0))break;i=+h[g+(f<<4)+8>>3]*+h[g+(f<<4)>>3];b=i<d;d=b?i:d;e=b?f:e;f=f+1|0}if(d<t){i=+h[g+(e<<4)+8>>3];h[a>>3]=+h[g+(e<<4)>>3];h[a+8>>3]=i;return}else qa(92184,92122,832,92204)}function ar(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3];d=+h[b>>3];if(!(c<d))if(!(c>d)){d=+h[a+8>>3];c=+h[b+8>>3];if(d<c)a=-1;else a=d>c&1}else a=1;else a=-1;return a|0}function br(a){a=a|0;var b=0;if(a|0){b=c[a+4>>2]|0;if(b|0)D_(b);b=c[a+8>>2]|0;if(b|0)D_(b);b=c[a+16>>2]|0;if(b|0)D_(b);D_(a)}return}function cr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;k=F_(c[46079]|0,d<<2)|0;c[46079]=k;f=0;while(1){if((f|0)>=(d|0))break;c[e+(f<<2)>>2]=2147483647;f=f+1|0}c[e+(a<<2)>>2]=0;h=b+(a*20|0)|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(c[h>>2]|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=~~+g[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}dr(n,a,k,e,d);i=-2147483639;while(1){if(!((er(n,m,c[46079]|0,e)|0)<<24>>24)){f=0;break}f=c[m>>2]|0;a=c[e+(f<<2)>>2]|0;if((a|0)==2147483647){f=0;break}i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))break;fr(n,c[(c[j>>2]|0)+(f<<2)>>2]|0,a+~~+g[(c[h>>2]|0)+(f<<2)>>2]|0,c[46079]|0,e);f=f+1|0}i=a+10|0}while(1){if((f|0)>=(d|0))break;h=e+(f<<2)|0;if((c[h>>2]|0)==2147483647)c[h>>2]=i;f=f+1|0}gr(n);l=o;return}function dr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if((f|0)==1)i=0;else i=vH((f<<2)+-4|0)|0;c[a>>2]=i;j=f+-1|0;c[a+4>>2]=j;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[i+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(j|0)/2|0;while(1){if((g|0)<=-1)break;hr(a,g,d,e);g=g+-1|0}return}function er(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;hr(a,0,d,e);a=1}return a|0}function fr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+(b<<2)|0;if((c[g>>2]|0)>(d|0)){j=e+(b<<2)|0;i=c[j>>2]|0;c[g>>2]=d;g=c[a>>2]|0;a=i;while(1){if((a|0)<=0)break;h=a>>>1;i=c[g+(h<<2)>>2]|0;if((c[f+(i<<2)>>2]|0)<=(d|0))break;c[g+(a<<2)>>2]=i;c[e+(i<<2)>>2]=a;a=h}c[g+(a<<2)>>2]=b;c[j>>2]=a}return}function gr(a){a=a|0;a=c[a>>2]|0;if(a|0)D_(a);return}function hr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;while(1){f=b<<1;g=f|1;h=c[i>>2]|0;if(!((f|0)<(h|0)?(j=c[a>>2]|0,(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(b<<2)>>2]<<2)>>2]|0)):0))f=b;if((g|0)<(h|0)){j=c[a>>2]|0;f=(c[e+(c[j+(g<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)?g:f}if((f|0)==(b|0))break;j=c[a>>2]|0;h=j+(f<<2)|0;g=c[h>>2]|0;j=j+(b<<2)|0;c[h>>2]=c[j>>2];c[j>>2]=g;c[d+(c[h>>2]<<2)>>2]=f;c[d+(c[j>>2]<<2)>>2]=b;b=f}return}function ir(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+8|0;n=p;c[n>>2]=0;o=vH(d<<2)|0;f=0;while(1){if((f|0)>=(d|0))break;g[e+(f<<2)>>2]=3402823466385288598117041.0e14;f=f+1|0}g[e+(a<<2)>>2]=0.0;h=c[b+(a*20|0)>>2]|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(h|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=c[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}jr(m,a,o,e,d);a:while(1){if(!((kr(m,n,o,e)|0)<<24>>24))break;f=c[n>>2]|0;k=+g[e+(f<<2)>>2];if(k==3402823466385288598117041.0e14)break;i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))continue a;lr(m,c[(c[j>>2]|0)+(f<<2)>>2]|0,+g[(c[h>>2]|0)+(f<<2)>>2]+k,o,e);f=f+1|0}}gr(m);D_(o);l=p;return}function jr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+-1|0;j=vH(i<<2)|0;c[a>>2]=j;c[a+4>>2]=i;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[j+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(i|0)/2|0;while(1){if((g|0)<=-1)break;mr(a,g,d,e);g=g+-1|0}return}function kr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;mr(a,0,d,e);a=1}return a|0}function lr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;h=f+(b<<2)|0;if(!(+g[h>>2]<=d)){k=e+(b<<2)|0;j=c[k>>2]|0;g[h>>2]=d;h=c[a>>2]|0;a=j;while(1){if((a|0)<=0)break;i=a>>>1;j=c[h+(i<<2)>>2]|0;if(!(+g[f+(j<<2)>>2]>d))break;c[h+(a<<2)>>2]=j;c[e+(j<<2)>>2]=a;a=i}c[h+(a<<2)>>2]=b;c[k>>2]=a}return}function mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;j=a+4|0;while(1){f=b<<1;h=f|1;i=c[j>>2]|0;if(!((f|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(f<<2)>>2]<<2)>>2]<+g[e+(c[k+(b<<2)>>2]<<2)>>2]):0))f=b;if((h|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(h<<2)>>2]<<2)>>2]<+g[e+(c[k+(f<<2)>>2]<<2)>>2]):0)f=h;if((f|0)==(b|0))break;k=c[a>>2]|0;i=k+(f<<2)|0;h=c[i>>2]|0;k=k+(b<<2)|0;c[i>>2]=c[k>>2];c[k>>2]=h;c[d+(c[i>>2]<<2)>>2]=f;c[d+(c[k>>2]<<2)>>2]=b;b=f}return}function nr(){gt(184320,48);c[46083]=0;return}function or(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0;i=it(184320)|0;c[i+32>>2]=a;c[i+36>>2]=b;Pt(a);Pt(b);c[i+24>>2]=0;c[i+28>>2]=0;f=+h[a>>3];g=+h[b>>3]-f;e=+h[a+8>>3];d=+h[b+8>>3]-e;f=d*e+g*f+(d*d+g*g)*.5;b=i+16|0;h[b>>3]=f;if((g>0.0?g:-g)>(d>0.0?d:-d)){h[i>>3]=1.0;e=d/g;d=g;a=i+8|0}else{h[i+8>>3]=1.0;e=g/d;a=i}h[a>>3]=e;h[b>>3]=f/d;b=c[46083]|0;c[i+40>>2]=b;c[46083]=b+1;return i|0}function pr(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;l=+h[a>>3];a:do if(l==1.0){if(!(+h[a+8>>3]>=0.0)){b=c[a+28>>2]|0;d=c[a+24>>2]|0;if(!d)m=9;else m=5}else{b=c[a+24>>2]|0;d=c[a+28>>2]|0;if(!d)m=9;else m=5}do if((m|0)==5){e=+h[d+8>>3];if(e>+h[22881])break a;f=+h[22882];if(!(e>=f)){i=f;e=+h[a+16>>3]-+h[a+8>>3]*f;break}else{i=e;e=+h[d>>3];break}}else if((m|0)==9){f=+h[22882];i=f;e=+h[a+16>>3]-+h[a+8>>3]*f}while(0);do if(b){g=+h[b+8>>3];if(g<f)break a;f=+h[22881];if(!(g<=f)){g=f;f=+h[a+16>>3]-+h[a+8>>3]*f;break}else{f=+h[b>>3];break}}else{f=+h[22881];g=f;f=+h[a+16>>3]-+h[a+8>>3]*f}while(0);j=+h[22883];b=e>j;d=f>j;k=+h[22884];if(!(b&d|e<k&f<k)){if(b){i=(+h[a+16>>3]-j)/+h[a+8>>3];e=j}if(e<k){i=(+h[a+16>>3]-k)/+h[a+8>>3];e=k}if(d){g=(+h[a+16>>3]-j)/+h[a+8>>3];f=j}if(f<k){g=(+h[a+16>>3]-k)/+h[a+8>>3];f=k;m=46}else m=46}}else{d=c[a+28>>2]|0;b=c[a+24>>2]|0;do if(b){e=+h[b>>3];if(e>+h[22883])break a;g=+h[22884];if(!(e>=g)){i=+h[a+16>>3]-g*l;e=g;break}else{i=+h[b+8>>3];break}}else{g=+h[22884];i=+h[a+16>>3]-g*l;e=g}while(0);do if(d){f=+h[d>>3];if(f<g)break a;j=+h[22883];if(!(f<=j)){g=+h[a+16>>3]-l*j;f=j;break}else{g=+h[d+8>>3];break}}else{f=+h[22883];g=+h[a+16>>3]-l*f}while(0);j=+h[22881];b=i>j;d=g>j;k=+h[22882];if(!(b&d|i<k&g<k)){if(b){i=j;e=(+h[a+16>>3]-j)/l}if(i<k){i=k;e=(+h[a+16>>3]-k)/l}if(d){g=j;f=(+h[a+16>>3]-j)/l}if(g<k){g=k;f=(+h[a+16>>3]-k)/l;m=46}else m=46}}while(0);if((m|0)==46)qr(a,e,i,f,g);return}function qr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0;g=a+32|0;Xr(c[g>>2]|0,b,d);Xr(c[g>>2]|0,e,f);a=a+36|0;Xr(c[a>>2]|0,b,d);Xr(c[a>>2]|0,e,f);return}function rr(a,b,d){a=a|0;b=b|0;d=d|0;c[a+24+(b<<2)>>2]=d;Pt(d);if(c[a+24+(1-b<<2)>>2]|0){pr(a);Ot(c[a+32>>2]|0);Ot(c[a+36>>2]|0);jt(a,184320)}return}function sr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;o=p;m=b<<2;h=vH(O(m,d)|0)|0;g=c[e>>2]|0;m=vH(m)|0;n=c[a+8>>2]|0;if(g|0){D_(c[g>>2]|0);D_(g)}k=vH(d<<2)|0;c[e>>2]=k;g=0;while(1){if((g|0)>=(d|0))break;c[k+(g<<2)>>2]=h+((O(g,b)|0)<<2);g=g+1|0}j=(f|0)!=0;if(j)es(a,b);e=(g2()|0)%(b|0)|0;zq(o,b);g=c[k>>2]|0;if(j){cr(e,a,b,g);f=0;g=0}else{vq(e,a,b,g,o);f=0;g=0}while(1){if((g|0)>=(b|0)){i=1;break}h=c[(c[k>>2]|0)+(g<<2)>>2]|0;c[m+(g<<2)>>2]=h;i=(h|0)>(f|0);f=i?h:f;e=i?g:e;g=g+1|0}while(1){if((i|0)>=(d|0))break;h=k+(i<<2)|0;g=c[h>>2]|0;if(j){cr(e,a,b,g);g=0;f=0}else{vq(e,a,b,g,o);g=0;f=0}while(1){if((g|0)>=(b|0))break;s=m+(g<<2)|0;q=c[s>>2]|0;r=c[(c[h>>2]|0)+(g<<2)>>2]|0;r=(q|0)<(r|0)?q:r;c[s>>2]=r;s=(r|0)>(f|0);q=s?g:e;g=g+1|0;f=s?r:f;e=q}i=i+1|0}D_(m);if(j)fs(a,b,n);l=p;return}function tr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0,k=0;i=1.0/+(b|0);h=0;while(1){if((h|0)>=(d|0))break;j=a+(h<<2)|0;e=0.0;f=0;while(1){if((f|0)>=(b|0))break;e=e+ +(c[(c[j>>2]|0)+(f<<2)>>2]|0);f=f+1|0}g=~~(e*i);f=0;while(1){if((f|0)>=(b|0))break;k=(c[j>>2]|0)+(f<<2)|0;c[k>>2]=(c[k>>2]|0)-g;f=f+1|0}h=h+1|0}return}function ur(){c[46085]=~~+C(+(+((c[46084]|0)+4|0)));return}function vr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function wr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=+h[b+8>>3]-+h[c+8>>3];return}function xr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=+h[c+8>>3]+ +h[b+8>>3];return}function yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return +((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))}function zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=+yr(h,g,f)>0.0&1;l=e;return d|0}function Ar(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;o=+h[a>>3];p=+h[d+8>>3];q=+h[c+8>>3];m=(p-q)*o;n=+h[b>>3];l=+h[d>>3];k=+h[b+8>>3];i=+h[a+8>>3];j=k-i;f=+h[c>>3];g=m+n*(q-p)+j*l+f*(i-k);if(g==0.0)d=0;else{p=(f*(i-p)+m+(q-i)*l)/g;q=-(f*j+((q-k)*o+(i-q)*n))/g;h[e>>3]=p*(n-o)+o;h[e+8>>3]=j*p+i;d=q<=1.0&(q>=0.0&(p>=0.0&p<=1.0))&1}return d|0}function Br(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0.0,i=0;c[a+20>>2]=b;Pt(b);i=a+24|0;h[i>>3]=+h[b+8>>3]+d;e=c[46086]|0;e=e+((Cr(a)|0)*40|0)|0;while(1){f=e+32|0;e=c[f>>2]|0;if(!e)break;d=+h[i>>3];g=+h[e+24>>3];if(d>g)continue;if(!(d==g))break;if(!(+h[b>>3]>+h[c[e+20>>2]>>3]))break}c[a+32>>2]=e;c[f>>2]=a;c[46087]=(c[46087]|0)+1;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0.0;d=c[46088]|0;e=+(d|0);b=(+h[a+24>>3]-+h[22888])/+h[22890]*e;do if(!(b<0.0))if(!(b>=e)){a=~~b;break}else{a=d+-1|0;break}else a=0;while(0);if((a|0)<(c[46089]|0))c[46089]=a;return a|0}function Dr(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;if(c[d>>2]|0){b=c[46086]|0;b=b+((Cr(a)|0)*40|0)|0;do{e=b+32|0;b=c[e>>2]|0}while((b|0)!=(a|0));c[e>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;Ot(c[d>>2]|0);c[d>>2]=0}return}function Er(){return (c[46087]|0)==0|0}function Fr(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=c[46086]|0;d=c[46089]|0;while(1){e=c[b+(d*40|0)+32>>2]|0;if(e|0)break;e=d+1|0;c[46089]=e;d=e}f=+h[e+24>>3];h[a>>3]=+h[c[e+20>>2]>>3];h[a+8>>3]=f;return}function Gr(){var a=0,b=0;b=(c[46086]|0)+((c[46089]|0)*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;return a|0}function Hr(){D_(c[46086]|0);c[46086]=0;return}function Ir(){var a=0,b=0,d=0;c[46087]=0;c[46089]=0;a=c[46085]|0;b=a<<2;c[46088]=b;d=c[46086]|0;if(!d){d=vH(a*160|0)|0;c[46086]=d;b=c[46088]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a*40|0)+32>>2]=0;a=a+1|0}return}function Jr(){gt(184368,40);D_(c[46095]|0);c[46095]=0;return}function Kr(){var a=0,b=0,d=0;gt(184368,40);a=c[46085]|0;b=a<<1;c[46096]=b;d=c[46095]|0;if(!d){d=vH(a<<3)|0;c[46095]=d;b=c[46096]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a<<2)>>2]=0;a=a+1|0}c[46090]=Lr(0,0)|0;c[46091]=Lr(0,0)|0;c[c[46090]>>2]=0;d=c[46091]|0;b=c[46090]|0;c[b+4>>2]=d;c[d>>2]=b;c[(c[46091]|0)+4>>2]=0;d=c[46095]|0;c[d>>2]=c[46090];c[d+((c[46096]|0)+-1<<2)>>2]=c[46091];return}function Lr(b,d){b=b|0;d=d|0;var e=0;e=it(184368)|0;c[e+8>>2]=b;a[e+16>>0]=d;c[e+32>>2]=0;c[e+20>>2]=0;c[e+12>>2]=0;return e|0}function Mr(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0;i=c[b+8>>2]|0;k=c[d+8>>2]|0;do if((!((i|0)==0|(k|0)==0)?(o=c[i+36>>2]|0,e=c[k+36>>2]|0,(o|0)!=(e|0)):0)?(j=+h[i>>3],f=+h[k+8>>3],g=+h[i+8>>3],l=+h[k>>3],m=f*j-l*g,!(m>-1.0e-10&m<1.0e-10)):0){p=+h[i+16>>3];q=+h[k+16>>3];n=(p*f-q*g)/m;j=(q*j-p*l)/m;f=+h[o+8>>3];g=+h[e+8>>3];do if(f<g)e=o;else{if(f==g?+h[o>>3]<+h[e>>3]:0){e=o;break}b=d}while(0);b=a[b+16>>0]|0;if(!(n>=+h[e>>3])){if(b<<24>>24==1){b=0;break}}else if(!(b<<24>>24)){b=0;break}b=Lt()|0;c[b+20>>2]=0;h[b>>3]=n;h[b+8>>3]=j}else b=0;while(0);return b|0}function Nr(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0,o=0.0,p=0;n=c[b+8>>2]|0;k=c[n+36>>2]|0;l=+h[d>>3];o=+h[k>>3];m=l>o;p=a[b+16>>0]|0;if(m)if(!(p<<24>>24))b=1;else f=4;else if(p<<24>>24==1)b=0;else f=4;if((f|0)==4){e=+h[n>>3];a:do if(e==1.0){e=+h[d+8>>3];g=e-+h[k+8>>3];i=l-o;j=+h[n+8>>3];d=j<0.0;do if(m?j>=0.0:d){if(g>=j*i){b=1;break a}}else{b=j*e+l>+h[n+16>>3];if(d)if(b){b=0;break a}else break;else if(b)break;else{b=0;break a}}while(0);o=o-+h[c[n+32>>2]>>3];b=j*(i*i-g*g)<o*g*(i*2.0/o+1.0+j*j);if(d)b=b^1}else{i=+h[n+16>>3]-l*e;j=+h[d+8>>3]-i;o=l-o;l=i-+h[k+8>>3];b=j*j>l*l+o*o}while(0);b=(b^p<<24>>24!=0)&1}return b|0}function Or(a,b){a=a|0;b=b|0;c[b>>2]=a;a=a+4|0;c[b+4>>2]=c[a>>2];c[c[a>>2]>>2]=b;c[a>>2]=b;return}function Pr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46096]|0;b=~~((+h[a>>3]-+h[22887])/+h[22889]*+(f|0));b=(b|0)>0?b:0;f=(b|0)<(f|0)?b:f+-1|0;b=Qr(f)|0;if(!b){d=1;while(1){b=Qr(f-d|0)|0;if(b|0)break;b=Qr(d+f|0)|0;if(b|0)break;d=d+1|0}c[46097]=(c[46097]|0)+d}c[46098]=(c[46098]|0)+1;e=c[46090]|0;d=c[46091]|0;a:do if((b|0)==(e|0))g=9;else{if((b|0)!=(d|0)?(Nr(b,a)|0)!=0:0){g=9;break}while(1){b=c[b>>2]|0;if((b|0)==(e|0))break a;if(Nr(b,a)|0){e=b;break}}}while(0);if((g|0)==9){while(1){b=c[b+4>>2]|0;if((b|0)==(d|0))break;if(!(Nr(b,a)|0))break;else g=9}e=c[b>>2]|0}if((f|0)>0?(f|0)<((c[46096]|0)+-1|0):0){b=(c[46095]|0)+(f<<2)|0;d=c[b>>2]|0;if(d|0){g=d+12|0;c[g>>2]=(c[g>>2]|0)+-1}c[b>>2]=e;g=e+12|0;c[g>>2]=(c[g>>2]|0)+1}return e|0}function Qr(a){a=a|0;var b=0,d=0;if((a|0)>-1&(c[46096]|0)>(a|0)?(d=(c[46095]|0)+(a<<2)|0,b=c[d>>2]|0,(b|0)!=0):0){if((c[b+8>>2]|0)==(-2|0)){c[d>>2]=0;a=b+12|0;d=(c[a>>2]|0)+-1|0;c[a>>2]=d;if(!d){jt(b,184368);b=0}else b=0}}else b=0;return b|0}function Rr(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[a>>2]|0;c[d+4>>2]=c[b>>2];c[c[b>>2]>>2]=d;c[a+8>>2]=-2;return}function Sr(a){a=a|0;return c[a+4>>2]|0}function Tr(a){a=a|0;return c[a>>2]|0}function Ur(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+32|0:d+36|0;return c[b>>2]|0}function Vr(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+36|0:d+32|0;return c[b>>2]|0}function Wr(){gt(184400,24);return}function Xr(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j;g=(c[46099]|0)+((c[a+16>>2]|0)*96|0)+88|0;f=c[g>>2]|0;h[i+8>>3]=b;h[i+16>>3]=d;e=Yr(a,i,f)|0;do if(e|0){if((e|0)<0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[i>>2]=f;c[g>>2]=i;break}while(1){e=c[f>>2]|0;g=Yr(a,i,e)|0;if((g|0)>0)f=e;else break}if(g|0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[f>>2]=i;c[i>>2]=e}}while(0);l=j;return}function Yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;do if(c){e=+h[b+8>>3];i=+h[c+8>>3];d=+h[b+16>>3];f=+h[c+16>>3];if(!(e==i&d==f)){k=+h[a>>3];j=e-k;e=+h[a+8>>3];g=d-e;i=i-k;d=f-e;if(!(j>=0.0)){if(i>=0.0){b=1;break}e=d/i;d=g/j;if(d<e){b=-1;break}if(d>e){b=1;break}b=j>i?-1:1;break}if(!(i<0.0)){b=i>0.0;if(!(j>0.0)){if(b){b=!(g<=0.0)?1:-1;break}if(g<d){b=!(d<=0.0)?-1:1;break}else{b=!(g<=0.0)?1:-1;break}}else{if(!b){b=d>0.0?-1:1;break}e=d/i;d=g/j;if(d<e){b=-1;break}if(d>e){b=1;break}b=j<i?-1:1;break}}else b=-1}else b=0}else b=-1;while(0);return b|0}function Zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+(d*20|0)>>2]|0;d=a+(d*20|0)+4|0;b=1;a=0;while(1){if((b|0)>=(f|0))break;g=a+((c[e+(c[(c[d>>2]|0)+(b<<2)>>2]<<2)>>2]|0)>0&1)|0;b=b+1|0;a=g}return a|0}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=1;a=a+1|0}return}function $r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=0;a=a+1|0}return}function as(a,b){a=a|0;b=b|0;if(!(c[a+8>>2]|0))a=cs(a,b)|0;else a=bs(a,b)|0;return a|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=b<<2;e=vH(O(f,b)|0)|0;f=vH(f)|0;d=0;while(1){if((d|0)>=(b|0)){d=0;break}c[f+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}while(1){if((d|0)>=(b|0))break;cr(d,a,b,c[f+(d<<2)>>2]|0);d=d+1|0}return f|0}function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=b<<2;e=vH(O(g,b)|0)|0;g=vH(g)|0;d=0;while(1){if((d|0)>=(b|0))break;c[g+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}zq(f,b);d=0;while(1){if((d|0)>=(b|0))break;vq(d,a,b,c[g+(d<<2)>>2]|0,f);d=d+1|0}Aq(f);l=h;return g|0}function ds(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+8>>2]|0;es(a,b);d=bs(a,b)|0;fs(a,b,e);return d|0}function es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=vH(b<<2)|0;d=0;e=0;while(1){if((d|0)>=(b|0))break;k=(c[a+(d*20|0)>>2]|0)+e|0;d=d+1|0;e=k}e=vH(e<<2)|0;d=0;while(1){if((d|0)>=(b|0))break;c[l+(d<<2)>>2]=0;d=d+1|0}f=0;while(1){if((f|0)>=(b|0))break;c[a+(f*20|0)+8>>2]=e;_r(a,f,l);h=a+(f*20|0)|0;i=c[h>>2]|0;j=a+(f*20|0)+4|0;k=i+-2|0;d=1;while(1){if((d|0)>=(i|0))break;m=c[(c[j>>2]|0)+(d<<2)>>2]|0;n=c[a+(m*20|0)>>2]|0;g[e+(d<<2)>>2]=+(k+n-((Zr(a,0,m,l)|0)<<1)|0);d=d+1|0}$r(a,f,l);e=e+(c[h>>2]<<2)|0;f=f+1|0}D_(l);return}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;D_(c[e>>2]|0);c[e>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;f=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0;d=f}}while(0);return}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0;f=0;g=0.0;while(1){if((f|0)>=(b|0))break;j=c[a+(f<<2)>>2]|0;i=+h[j+(d<<3)>>3]-+h[j+(e<<3)>>3];f=f+1|0;g=i*i+g}return +(+C(+g))}function hs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((e|0)>(d|0)){c[46103]=a;_0(b+(d<<2)|0,1-d+e|0,4,76)}return}function is(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[46103]|0;e=+g[f+(c[a>>2]<<2)>>2];d=+g[f+(c[b>>2]<<2)>>2];return (e<d?-1:e>d&1)|0}function js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;if((d|0)<(e|0)){ks(a,b,d,e,f);g=c[f>>2]|0;f=g+-1|0;js(a,b,d,f);g=g+1|0;js(a,b,g,e);if(!(ls(a,b,d,f)|0))js(a,b,d,f);if(!(ls(a,b,g,e)|0))js(a,b,g,e)}l=h;return}function ks(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,n=0;g=g2()|0;g=b+(((((g2()|0)<<16|g)>>>0)%((1-d+e|0)>>>0)|0)+d<<2)|0;j=c[g>>2]|0;k=b+(d<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;l=+h[a+(j<<3)>>3];g=d+1|0;d=e;a:while(1){if((g|0)>=(d|0))break;while(1){if((g|0)>=(d|0))break;if(!(+h[a+(c[b+(g<<2)>>2]<<3)>>3]<=l))break;g=g+1|0}while(1){if((g|0)>=(d|0))continue a;e=b+(d<<2)|0;i=c[e>>2]|0;if(!(+h[a+(i<<3)>>3]>l))break;d=d+-1|0}n=b+(g<<2)|0;m=c[n>>2]|0;c[n>>2]=i;c[e>>2]=m;g=g+1|0;d=d+-1|0}n=g+((+h[a+(c[b+(g<<2)>>2]<<3)>>3]>l)<<31>>31)|0;c[f>>2]=n;n=b+(n<<2)|0;c[k>>2]=c[n>>2];c[n>>2]=j;return}function ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=1;while(1){f=d+1|0;if(!((d|0)<(e|0)&(g|0)!=0))break;g=+h[a+(c[b+(d<<2)>>2]<<3)>>3]>+h[a+(c[b+(f<<2)>>2]<<3)>>3]?0:g;d=f}return g|0}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,A=0.0;x=l;l=l+16|0;v=4;w=C_(40)|0;c[w>>2]=0;t=x;o=0;u=$(23,b*40|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;r=0;while(1){if((d|0)>=(b|0))break;s=(c[(c[a+(d<<2)>>2]|0)+4>>2]|0)+r|0;d=d+1|0;r=s}o=0;s=$(23,r*24|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;m=0;while(1){if((m|0)>=(b|0))break;n=u+(m*40|0)|0;c[n>>2]=s+(d*24|0);q=a+(m<<2)|0;f=0;g=1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;k=1797693134862315708145274.0e284;while(1){e=c[q>>2]|0;if((f|0)>=(c[e+4>>2]|0))break;e=c[e>>2]|0;A=+h[e+(f<<4)>>3];y=+h[e+(f<<4)+8>>3];h[s+(d*24|0)>>3]=A;h[s+(d*24|0)+8>>3]=y;c[s+(d*24|0)+16>>2]=n;c[s+(d*24|0)+20>>2]=0;f=f+1|0;d=d+1|0;g=g<A?g:A;i=i>A?i:A;j=j>y?j:y;k=k<y?k:y}c[u+(m*40|0)+4>>2]=s+((d+-1|0)*24|0);h[u+(m*40|0)+8>>3]=g;h[u+(m*40|0)+16>>3]=k;h[u+(m*40|0)+24>>3]=i;h[u+(m*40|0)+32>>3]=j;m=m+1|0}c[t>>2]=r;c[t+4>>2]=b;w=D3(184416,1,w|0,v|0)|0;v=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;q=s;m=s;n=u}else{d=0;q=s;m=s;n=u}}else{d=z;q=0;m=s;n=u}}else{d=z;q=0;m=0;n=0}while(1){if(d|0){o=0;ia(103,u|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}else{e=17;break}}o=0;d=aa(77,q|0,t|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}if(!d){o=0;d=ca(24,a|0,b|0,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}}o=0;ia(103,u|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s}else{e=24;break}}if((e|0)==17)d=0;else if((e|0)==24)d=(d|0)==0&1;D_(w|0);l=x;return d|0}function ns(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;q=v;o=v+8|0;p=v+4|0;c[b+8>>2]=0;u=vH(c[b>>2]<<2)|0;f=c[b>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=a+(e*24|0);e=e+1|0}_0(u,f,4,78);m=0;g=0;f=0;h=0;a:while(1){if((m|0)>=(c[b>>2]|0)){s=0;d=g;t=h;break}n=u+(m<<2)|0;e=c[n>>2]|0;c[o>>2]=e;a=c[e+16>>2]|0;if((c[a>>2]|0)==(e|0))e=c[a+4>>2]|0;else e=e+-24|0;c[p>>2]=e;k=0;a=g;j=h;while(1){if((k|0)>=2)break;switch(ps(o,p)|0){case -1:{g=0;h=a;while(1){if((g|0)>=(j|0))break;i=qs(c[h>>2]|0,e)|0;if(i|0){s=i;d=a;t=j;break a}g=g+1|0;h=c[h+4>>2]|0}g=vH(12)|0;if(!j){f=0;a=g}else c[f+4>>2]=g;c[g+8>>2]=f;c[g>>2]=e;c[g+4>>2]=0;c[e+20>>2]=g;h=j+1|0;break}case 1:{e=e+20|0;g=c[e>>2]|0;if(!g){r=19;break a}do if((j|0)!=1){if((g|0)==(a|0)){a=c[a+4>>2]|0;c[a+8>>2]=0;break}if((g|0)==(f|0)){f=c[f+8>>2]|0;c[f+4>>2]=0;break}else{i=g+4|0;h=c[g+8>>2]|0;c[h+4>>2]=c[i>>2];c[(c[i>>2]|0)+8>>2]=h;break}}else{a=0;f=0}while(0);D_(g);c[e>>2]=0;g=f;h=j+-1|0;break}default:{g=f;h=j}}e=c[n>>2]|0;f=c[e+16>>2]|0;if((e|0)==(c[f+4>>2]|0))f=c[f>>2]|0;else f=e+24|0;c[p>>2]=f;k=k+1|0;f=g;j=h}m=m+1|0;g=a;h=j}if((r|0)==19){Pw(1,92219,q)|0;bb(184416,1)}e=0;while(1){if((e|0)>=(t|0))break;r=c[d+4>>2]|0;D_(d);e=e+1|0;d=r}D_(u);l=v;return s|0}function os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=l;l=l+48|0;o=D+24|0;n=D+16|0;u=D;e=0;a:while(1){if((e|0)>=(b|0)){e=0;break}z=c[a+(e<<2)>>2]|0;A=c[z>>2]|0;c[u>>2]=c[A>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[u+12>>2]=c[A+12>>2];A=e+1|0;B=d+(e*40|0)+8|0;p=d+(e*40|0)+24|0;q=d+(e*40|0)+32|0;g=d+(e*40|0)+16|0;e=A;while(1){if((e|0)>=(b|0)){e=A;continue a}i=c[a+(e<<2)>>2]|0;j=+h[B>>3];k=+h[d+(e*40|0)+24>>3];m=!(j<=k);f=+h[d+(e*40|0)+8>>3];if((((!(m|!(j>=f))?(r=+h[g>>3],s=+h[d+(e*40|0)+32>>3],r<=s):0)?(t=+h[d+(e*40|0)+16>>3],r>=t):0)?(E=+h[p>>3],!(!(E<=k)|!(E>=f))):0)?(E=+h[q>>3],!(!(E<=s)|!(E>=t))):0){c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];if(wU(n,o)|0){e=1;break a}}else C=11;if((((((C|0)==11?(C=0,v=+h[p>>3],!(!(f<=v)|!(f>=j))):0)?(w=+h[d+(e*40|0)+16>>3],x=+h[q>>3],w<=x):0)?(y=+h[g>>3],!(!(w>=y)|(!(k<=v)|m))):0)?(E=+h[d+(e*40|0)+32>>3],!(!(E<=x)|!(E>=y))):0)?(m=c[i>>2]|0,c[n>>2]=c[z>>2],c[n+4>>2]=c[z+4>>2],c[o>>2]=c[m>>2],c[o+4>>2]=c[m+4>>2],c[o+8>>2]=c[m+8>>2],c[o+12>>2]=c[m+12>>2],wU(n,o)|0):0){e=1;break a}e=e+1|0}}l=D;return e|0}function ps(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[a>>2]|0;a=c[b>>2]|0;d=+h[e>>3]-+h[a>>3];if(!(d!=0.0)){d=+h[e+8>>3]-+h[a+8>>3];if(d==0.0)a=0;else a=d>0.0?1:-1}else a=d>0.0?1:-1;return a|0}function qs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;g=m+32|0;i=m+24|0;j=m+16|0;k=m;f=m+48|0;rs(a,b,f);d=f+8|0;e=c[d>>2]|0;do if((e|0)>0)d=0;else{if((e|0)<0){rs(b,a,f);d=c[d>>2]|0;if((d|0)>0){d=0;break}if((d|0)<0)d=3;else{d=c[f>>2]|0;d=ss(b,a,(d|0)>-1?d:0-d|0)|0}if(!(ts(a,b,i,j,d)|0)){d=0;break}}else{d=c[f>>2]|0;if((d|0)==(c[f+4>>2]|0)){d=ss(a,b,0)|0;d=(ss(a,b,(d|0)<=(ss(a,b,1)|0)&1)|0)<<1}else d=ss(a,b,(d|0)>-1?d:0-d|0)|0;if(!(ts(a,b,i,j,d)|0)){d=0;break}}h[k>>3]=+h[i>>3];h[k+8>>3]=+h[j>>3];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];d=us(a,b,g)|0}while(0);l=m;return d|0}function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;i=+h[a>>3];j=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0)){a=c[e>>2]|0;e=a}else{e=a+24|0;a=a+24|0}g=+h[e>>3]-i;f=+h[a+8>>3]-j;e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0)){a=c[e>>2]|0;e=a}else{e=b+24|0;a=b+24|0}k=+h[e>>3]-i;l=+h[a+8>>3]-j;j=(+h[b+8>>3]-j)*g-(+h[b>>3]-i)*f;b=j==0.0?0:j>0.0?1:-1;c[d>>2]=b;j=l*g-k*f;a=j==0.0?0:j>0.0?1:-1;c[d+4>>2]=a;c[d+8>>2]=O(a,b)|0;return}function ss(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;k=+h[a>>3];l=+h[a+8>>3];f=c[a+16>>2]|0;if((c[f+4>>2]|0)==(a|0))a=c[f>>2]|0;else a=a+24|0;j=+h[a>>3];i=+h[a+8>>3];do if(d){a=c[b+16>>2]|0;if((c[a+4>>2]|0)==(b|0)){b=c[a>>2]|0;break}else{b=b+24|0;break}}while(0);g=+h[b>>3];e=+h[b+8>>3];if(k==j)if(k==g)b=(ws(l,e,i)|0)!=-1&1;else b=0;else b=ws(k,g,j)|0;return b|0}function ts(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do if((f|0)<1)g=0;else{n=+h[a>>3];p=+h[a+8>>3];g=c[a+16>>2]|0;if((c[g+4>>2]|0)==(a|0))g=c[g>>2]|0;else g=a+24|0;l=+h[g>>3];j=+h[g+8>>3];m=+h[b>>3];o=+h[b+8>>3];g=c[b+16>>2]|0;if((c[g+4>>2]|0)==(b|0))g=c[g>>2]|0;else g=b+24|0;k=+h[g>>3];i=+h[g+8>>3];b:do switch(f|0){case 3:{if(n==l){h[d>>3]=n;i=(o-i)/(m-k)*(n-k)+i;break b}if(m==k){h[d>>3]=m;i=(p-j)/(n-l)*(m-l)+j;break b}else{k=(o-i)/(m-k);l=(p-j)/(n-l);o=o-k*m;p=p-l*n;i=k-l;h[d>>3]=(p-o)/i;i=(k*p-o*l)/i;break b}}case 2:{if((ss(a,b,0)|0)==-1)if((ss(b,a,1)|0)==-1){f=(ss(b,a,0)|0)==-1;l=f?l:n;k=m;j=f?j:p;i=o}else{l=k;k=m;j=i;i=o}else if((ss(a,b,1)|0)!=-1)if((ss(b,a,0)|0)==-1){k=n;i=p}else{g=0;break a}else{l=m;j=o}h[d>>3]=(k+l)*.5;i=(i+j)*.5;break}case 1:if((o-p)*(n-l)==(m-n)*(p-j)){h[d>>3]=m;i=o;break b}else{h[d>>3]=k;break b}default:{g=1;break a}}while(0);h[e>>3]=i;g=1}while(0);return g|0}function us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;o=+h[a>>3];p=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0))e=c[e>>2]|0;else e=a+24|0;m=+h[e>>3];j=+h[e+8>>3];k=+h[b>>3];n=+h[b+8>>3];e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0))e=c[e>>2]|0;else e=b+24|0;i=+h[e>>3];g=+h[e+8>>3];a:do if(!(o!=m&k!=i)){do if(o==m){f=+h[d>>3];if(o==f?p==+h[d+8>>3]:0)break;if(!(m==f)){r=18;break a}if(!(j==+h[d+8>>3])){r=18;break a}}while(0);if(k==i){f=+h[d>>3];if(k==f?n==+h[d+8>>3]:0){e=0;break}if(i==f?g==+h[d+8>>3]:0)e=0;else r=18}else e=0}else r=18;while(0);if((r|0)==18)if(0>1){e=c[15686]|0;p=+h[d+8>>3];h[q>>3]=+h[d>>3];h[q+8>>3]=p;g1(e,92248,q)|0;vs(1,a);vs(2,b);e=1}else e=1;l=s;return e|0}function vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0;k=l;l=l+48|0;j=k;f=c[15686]|0;g=+h[b>>3];i=+h[b+8>>3];d=c[b+16>>2]|0;if((c[d+4>>2]|0)==(b|0)){d=c[d>>2]|0;e=d}else{e=b+24|0;d=b+24|0}n=+h[e>>3];m=+h[d+8>>3];c[j>>2]=a;h[j+8>>3]=g;h[j+16>>3]=i;h[j+24>>3]=n;h[j+32>>3]=m;g1(f,92276,j)|0;l=k;return}function ws(a,b,c){a=+a;b=+b;c=+c;return (a==b|b==c?0:(a<b?b<c:c<b)?1:-1)|0}function xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;a:do if(!(lv(a,d)|0))a=0;else{f=uH(d<<3)|0;a=0;while(1){if((a|0)<(d|0))e=0;else break;while(1){if((e|0)==(d|0))break;h[f+(e<<3)>>3]=0.0;e=e+1|0}h[f+(a<<3)>>3]=1.0;mv(c[b+(a<<2)>>2]|0,f,d);a=a+1|0}D_(f);f=0;while(1){if((f|0)>=(d|0)){a=1;break a}e=b+(f<<2)|0;a=0;while(1){if((a|0)==(f|0))break;j=(c[e>>2]|0)+(a<<3)|0;i=+h[j>>3];g=(c[b+(a<<2)>>2]|0)+(f<<3)|0;h[j>>3]=+h[g>>3];h[g>>3]=i;a=a+1|0}f=f+1|0}}while(0);return a|0}function ys(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=b<<3;p=vH(q)|0;q=vH(q)|0;r=b*30|0;n=(d|0)<(b|0)?d:b;o=b+-1|0;m=(g|0)==0;d=0;i=0;a:while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;do{b:do if(m)d=0;else{d=0;while(1){if((d|0)==(b|0)){d=0;break b}h[k+(d<<3)>>3]=+((g2()|0)%100|0|0);d=d+1|0}}while(0);while(1){if((d|0)==(i|0))break;g=c[e+(d<<2)>>2]|0;As(k,0,o,-+zs(g,0,o,k),g);d=d+1|0}j=+Bs(k,0,o)}while(j<1.0e-10);Cs(k,0,o,1.0/j,k);d=0;do{Ds(q,0,o,k);Es(a,b,b,k,p);Ds(k,0,o,p);g=0;while(1){if((g|0)==(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}s=d;d=d+1|0;j=+Bs(k,0,o);if(!((s|0)<(r|0)&!(j<1.0e-10)))break a;Cs(k,0,o,1.0/j,k);l=+zs(k,0,o,q)}while(+B(+l)<.999);h[f+(i<<3)>>3]=l*j;i=i+1|0}while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;g=0;while(1){if((g|0)>=(b|0)){g=0;break}h[k+(g<<3)>>3]=+((g2()|0)%100|0|0);g=g+1|0}while(1){if((g|0)>=(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}Cs(k,0,o,1.0/+Bs(k,0,o),k);h[f+(i<<3)>>3]=0.0;i=i+1|0}m=n+-1|0;i=0;while(1){if((i|0)>=(m|0))break;a=f+(i<<3)|0;b=i+1|0;j=+h[a>>3];g=i;k=b;while(1){if((k|0)>=(n|0))break;l=+h[f+(k<<3)>>3];s=j<l;j=s?l:j;g=s?k:g;k=k+1|0}if((g|0)==(i|0)){i=b;continue}k=e+(i<<2)|0;Ds(p,0,o,c[k>>2]|0);s=e+(g<<2)|0;Ds(c[k>>2]|0,0,o,c[s>>2]|0);Ds(c[s>>2]|0,0,o,p);h[f+(g<<3)>>3]=+h[a>>3];h[a>>3]=j;i=b}D_(p);D_(q);return (d|0)<=(r|0)|0}function zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0;f=0.0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;f=+h[d>>3]*+h[c>>3]+f;e=e+-1|0;d=d+8|0;c=c+8|0}return +f}function As(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[c>>3]+ +h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Bs(a,b,c){a=a|0;b=b|0;c=c|0;return +(+C(+(+zs(a,b,c,a))))}function Cs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;h[c>>3]=+h[d>>3];e=e+-1|0;d=d+8|0;c=c+8|0}return}function Es(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;g=0.0;i=0;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[k>>2]|0)+(i<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Fs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0;k=c[i>>2]|0;if(!k){o=d<<2;j=C_(O(o,f)|0)|0;o=C_(o)|0}else{o=d<<2;j=F_(c[k>>2]|0,O(o,f)|0)|0;o=F_(k,o)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<2)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){j=0;l=0.0}else break;while(1){if((j|0)>=(e|0))break;p=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0;l=p}g[(c[n>>2]|0)+(k<<2)>>2]=l;k=k+1|0}i=i+1|0}return}function Gs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0;k=c[i>>2]|0;if(!k){j=C_(O(d<<3,f)|0)|0;o=C_(d<<2)|0}else{j=F_(c[k>>2]|0,O(d<<3,f)|0)|0;o=F_(k,d<<2)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<3)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){l=0.0;j=0}else break;while(1){if((j|0)>=(e|0))break;l=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0}h[(c[n>>2]|0)+(k<<3)>>3]=l;k=k+1|0}i=i+1|0}return}function Hs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0;j=c[f>>2]|0;if(!j){i=C_(O(d*20|0,e)|0)|0;q=C_(d<<2)|0}else{i=F_(c[j>>2]|0,O(d*20|0,e)|0)|0;q=F_(j,d<<2)|0}c[f>>2]=q;j=0;while(1){if((j|0)>=(d|0)){f=0;break}c[q+(j<<2)>>2]=i;j=j+1|0;i=i+(e<<2)|0}while(1){if((f|0)>=(d|0))break;l=c[a+(f*20|0)+4>>2]|0;m=c[a+(f*20|0)+8>>2]|0;n=c[a+(f*20|0)>>2]|0;o=q+(f<<2)|0;i=0;while(1){if((i|0)>=(e|0))break;p=b+(i<<2)|0;k=0.0;j=0;while(1){if((j|0)>=(n|0))break;k=+h[(c[p>>2]|0)+(c[l+(j<<2)>>2]<<3)>>3]*+g[m+(j<<2)>>2]+k;j=j+1|0}g[(c[o>>2]|0)+(i<<2)>>2]=k;i=i+1|0}f=f+1|0}return}function Is(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+h[d>>3]+c;d=d+8|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;h[b>>3]=+h[b>>3]-c;b=b+8|0;a=a+-1|0}return}function Js(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=(a|0))break;h[b+(c<<3)>>3]=+((g2()|0)%500|0|0);c=c+1|0}Is(a,b);return}function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;k=c[a+(j*20|0)>>2]|0;l=a+(j*20|0)+8|0;m=a+(j*20|0)+4|0;f=0.0;i=0;while(1){if((i|0)>=(k|0))break;f=+h[d+(c[(c[m>>2]|0)+(i<<2)>>2]<<3)>>3]*+g[(c[l>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;f=0.0;i=0;while(1){if((i|0)==(b|0))break;f=+h[d+(i<<3)>>3]*+g[(c[k>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]-+h[c+(e<<3)>>3];e=e+1|0}return}function Ns(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[c+(e<<3)>>3]+ +h[b+(e<<3)>>3];e=e+1|0}return}function Os(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]*c;e=e+1|0}return}function Ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=+h[b+(d<<3)>>3];d=d+1|0}return}function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=+h[c+(e<<3)>>3]*+h[b+(e<<3)>>3]+d;e=e+1|0}return +d}function Rs(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;d=-1.e+50;while(1){if((c|0)>=(a|0))break;e=+B(+(+h[b+(c<<3)>>3]));c=c+1|0;d=e>d?e:d}return +d}function Ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0;j=0;while(1){if((j|0)<(b|0)){g=0.0;i=0}else break;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[a+(i<<2)>>2]|0)+(j<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Ts(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+g[d>>2]+c;d=d+4|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;g[b>>2]=+g[b>>2]-c;b=b+4|0;a=a+-1|0}return}function Us(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0;e=0;while(1){if((e|0)>=(b|0)){h=0;j=0;m=b;break}g[d+(e<<2)>>2]=0.0;e=e+1|0}while(1){if((j|0)>=(b|0))break;l=+g[c+(j<<2)>>2];k=j+1|0;f=+g[a+(h<<2)>>2]*l;i=k;e=h;while(1){e=e+1|0;if((i|0)==(b|0))break;p=+g[a+(e<<2)>>2];n=+g[c+(i<<2)>>2]*p+f;o=d+(i<<2)|0;g[o>>2]=+g[o>>2]+p*l;f=n;i=i+1|0}o=d+(j<<2)|0;g[o>>2]=+g[o>>2]+f;h=h+m|0;j=k;m=m+-1|0}return}function Vs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]-+g[c+(e<<2)>>2];e=e+1|0}return}function Ws(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[c+(e<<2)>>2]+ +g[b+(e<<2)>>2];e=e+1|0}return}function Xs(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0;e=0;while(1){if((e|0)>=(a|0))break;f=b+(e<<2)|0;g[f>>2]=+g[d+(e<<2)>>2]*c+ +g[f>>2];e=e+1|0}return}function Ys(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]*c;e=e+1|0}return}function Zs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;c[d+(e<<2)>>2]=c[b+(e<<2)>>2];e=e+1|0}return}function _s(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=d+ +g[c+(e<<2)>>2]*+g[b+(e<<2)>>2];e=e+1|0}return +d}function $s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=b;d=d+1|0}return}function at(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;g[c+(d<<2)>>2]=b;d=d+1|0}return}function bt(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;c=-1000000015047466219876688.0e6;d=0;while(1){if((d|0)>=(a|0))break;e=+B(+(+g[b+(d<<2)>>2]));c=e>c?e:c;d=d+1|0}return +c}function ct(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];g[d>>2]=e*e;c=c+1|0}return}function dt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e!=0.0)g[d>>2]=1.0/e;c=c+1|0}return}function et(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0;d=0;while(1){if((d|0)>=(a|0))break;e=+g[b+(d<<2)>>2];if(e>=0.0)g[c+(d<<2)>>2]=+C(+e);d=d+1|0}return}function ft(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e>0.0)g[d>>2]=1.0/+C(+e);c=c+1|0}return}function gt(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=0;if(b&3)if(!(4%(b>>>0)|0))b=4;else b=O(4/((ht(b)|0)>>>0)|0,b)|0;c[a+8>>2]=b;a=a+4|0;b=c[a>>2]|0;a:do if(b|0)while(1){if(!b)break a;d=c[b>>2]|0;D_(c[b+4>>2]|0);D_(b);b=d}while(0);c[a>>2]=0;return}function ht(a){a=a|0;var b=0,c=0;c=4;a:while(1){b=c;while(1){if((b|0)==(a|0))break a;if((b|0)<=(a|0))break;b=b-a|0}c=b;a=a-b|0}return a|0}function it(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(!b){d=c[a+8>>2]|0;e=vH(8)|0;f=vH(O(c[46085]|0,d)|0)|0;c[e+4>>2]=f;b=0;while(1){if((b|0)>=(c[46085]|0))break;jt(f+(O(b,d)|0)|0,a);b=b+1|0}b=a+4|0;c[e>>2]=c[b>>2];c[b>>2]=e;b=c[a>>2]|0}c[a>>2]=c[b>>2];return b|0}function jt(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[b>>2]=a;return}function kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=uH(b<<3)|0;l=a+8|0;f=c[l>>2]|0;lt(a,b,m);Js(b,d);h=0;i=0;while(1){if((i|0)>=(b|0))break;h=(c[a+(i*20|0)>>2]|0)+h|0;i=i+1|0}h=vH(h<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;c[a+(j*20|0)+8>>2]=h;k=c[a+(j*20|0)>>2]|0;g[h>>2]=+(1-k|0);i=1;while(1){if((i|0)>=(k|0))break;g[h+(i<<2)>>2]=1.0;i=i+1|0}h=h+(k<<2)|0;j=j+1|0}i=Dq(a,d,m,b,.001,e)|0;D_(c[l>>2]|0);h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;f=f+(c[a+(h*20|0)>>2]<<2)|0;h=h+1|0}D_(m);return i>>>31|0}function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;i=0;while(1){if((i|0)>=(b|0))break;if(c[k>>2]|0){l=c[a+(i*20|0)>>2]|0;m=a+(i*20|0)+8|0;j=a+(i*20|0)+16|0;e=0.0;f=1;while(1){if((f|0)>=(l|0))break;e=e+ +g[(c[j>>2]|0)+(f<<2)>>2]*+g[(c[m>>2]|0)+(f<<2)>>2];f=f+1|0}h[d+(i<<3)>>3]=e}i=i+1|0}return}function mt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=vH(f<<2)|0;i=b<<3;g=0;while(1){if((g|0)>=(f|0))break;c[r+(g<<2)>>2]=vH(i)|0;g=g+1|0}p=vH(f<<3)|0;q=vH(b<<2)|0;g=vH(O(i,b)|0)|0;i=0;while(1){if((i|0)>=(b|0))break;c[q+(i<<2)>>2]=g;g=g+(b<<3)|0;i=i+1|0}k=0;o=1;while(1){if((k|0)>=(b|0))break;l=a+(k<<2)|0;m=q+(k<<2)|0;i=0;while(1){if((i|0)==(o|0))break;n=a+(i<<2)|0;g=0;j=0.0;while(1){if((g|0)>=(d|0))break;s=j+ +(O(c[(c[n>>2]|0)+(g<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0)|0);g=g+1|0;j=s}h[(c[q+(i<<2)>>2]|0)+(k<<3)>>3]=j;h[(c[m>>2]|0)+(i<<3)>>3]=j;i=i+1|0}k=k+1|0;o=o+1|0}ys(q,b,f,r,p,1)|0;i=0;while(1){if((i|0)>=(f|0)){g=0;break}l=r+(i<<2)|0;m=e+(i<<2)|0;k=0;while(1){if((k|0)<(d|0)){g=0;j=0.0}else break;while(1){if((g|0)>=(b|0))break;s=+h[(c[l>>2]|0)+(g<<3)>>3]*+(c[(c[a+(g<<2)>>2]|0)+(k<<2)>>2]|0)+j;g=g+1|0;j=s}h[(c[m>>2]|0)+(k<<3)>>3]=j;k=k+1|0}i=i+1|0}while(1){if((g|0)>=(f|0))break;D_(c[r+(g<<2)>>2]|0);g=g+1|0}D_(r);D_(p);D_(c[q>>2]|0);D_(q);return}function nt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;j=f+20|0;i=f+12|0;h=f+8|0;c[g>>2]=e;c[i>>2]=0;c[h>>2]=0;$u(c[a>>2]|0,d,d<<2,j);Hs(c[j>>2]|0,a,d,b,i);Gs(a,c[i>>2]|0,b,d,b,h);D_(c[c[i>>2]>>2]|0);D_(c[i>>2]|0);e=(ys(c[h>>2]|0,b,1,g,f,1)|0)&255;l=f;return e|0}function ot(){c[46143]=0;D_(c[46144]|0);D_(c[46145]|0);D_(c[46146]|0);c[46144]=0;c[46145]=0;c[46146]=0;return}function pt(a){a=a|0;D_(c[a+36>>2]|0);return}function qt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;o=r+64|0;q=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;n=d+16|0;g=c[n>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{g=c[n>>2]|0;j=c[g+12>>2]|0;k=c[j+8>>2]|0;c[q>>2]=k;g=c[c[g+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))p=11;else p=8;break}case 112:{if((b$(g,102695)|0)==0?(rt(c[j+44>>2]|0,k)|0)!=0:0)p=11;else p=8;break}default:p=8}do if((p|0)==8)if((k|0)<3){c[b+40>>2]=(c[j>>2]|0)==0?0:2;p=17;break}else{g=b+40|0;c[g>>2]=0;break}else if((p|0)==11){g=b+40|0;c[g>>2]=1;if((k|0)<=2)p=17}while(0);if((p|0)==17){i=st(d,q,e,f)|0;p=21;break a}i=vH(k<<4)|0;j=j+44|0;if((c[g>>2]|0)==1){p=c[j>>2]|0;s=e;h[i>>3]=+h[p>>3]*.013888888888888888+s;e=f;h[i+8>>3]=+h[p+8>>3]*.013888888888888888+e;h[i+16>>3]=+h[p+16>>3]*.013888888888888888-s;h[i+24>>3]=+h[p+24>>3]*.013888888888888888+e;h[i+32>>3]=+h[p+32>>3]*.013888888888888888-s;h[i+40>>3]=+h[p+40>>3]*.013888888888888888-e;h[i+48>>3]=+h[p+48>>3]*.013888888888888888+s;h[i+56>>3]=+h[p+56>>3]*.013888888888888888-e;p=21;break a}g=0;while(1){if((g|0)>=(k|0)){p=21;break a}p=c[j>>2]|0;u=+h[p+(g<<4)>>3];s=+h[p+(g<<4)+8>>3];t=+C(+(s*s+u*u));h[i+(g<<4)>>3]=(e/t+1.0)*u*.013888888888888888;h[i+(g<<4)+8>>3]=(f/t+1.0)*s*.013888888888888888;g=g+1|0}}case 2:{c[q>>2]=4;p=vH(64)|0;d=c[(c[n>>2]|0)+12>>2]|0;v=+h[d+32>>3];t=+h[d+40>>3];o=~~+h[d+16>>3];d=~~+h[d+24>>3];u=-e;s=-f;tt(i,o,d,u,s);c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];i=p+16|0;n=~~v;tt(j,n,d,e,s);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=p+32|0;d=~~t;tt(k,n,d,e,f);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=p+48|0;tt(m,o,d,u,f);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=p;p=21;break a}case 3:{c[b+40>>2]=2;i=st(d,q,e,f)|0;p=21;break a}default:{c[o>>2]=c[c[(c[n>>2]|0)+8>>2]>>2];Pw(1,92312,o)|0;g=1;break a}}else{c[q>>2]=4;u=+h[g+32>>3]*.5+e;v=+h[g+40>>3]*.5+f;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;p=21}while(0);if((p|0)==21){c[b+36>>2]=i;g=c[q>>2]|0;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function rt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;do if((b|0)==4){c=+h[a+8>>3];b=a+16|0;d=+h[a+24>>3];if(c==d){if(!(+h[a+40>>3]==+h[a+56>>3])){b=0;break}if(!(+h[a>>3]==+h[a+48>>3])){b=0;break}b=+h[b>>3]==+h[a+32>>3];break}if((+h[a>>3]==+h[b>>3]?+h[a+32>>3]==+h[a+48>>3]:0)?c==+h[a+56>>3]:0)b=d==+h[a+40>>3];else b=0}else b=0;while(0);return b&1|0}function st(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0.0,i=0,j=0,k=0.0,l=0;f=xx(a,99679)|0;if(!f)f=0;else f=a2(f)|0;i=(f|0)<3?20:f;j=vH(i<<4)|0;a=a+16|0;g=1.0/+(i|0);f=0;while(1){if((f|0)>=(i|0))break;l=c[a>>2]|0;k=g*+(f|0)*6.283185307179586;h[j+(f<<4)>>3]=(+h[l+32>>3]*.5+d)*+E(+k);h[j+(f<<4)+8>>3]=(+h[l+40>>3]*.5+e)*+F(+k);f=f+1|0}c[b>>2]=i;return j|0}function tt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;h[a>>3]=+(b|0)*.013888888888888888+d;h[a+8>>3]=+(c|0)*.013888888888888888+e;return}function ut(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0;j=+h[a>>3];i=+h[a+8>>3];e=1;f=i;g=j;while(1){if((e|0)>=(b|0))break;k=a+16|0;l=+h[k>>3];m=+h[a+24>>3];e=e+1|0;f=m>f?m:f;g=l>g?l:g;i=m<i?m:i;j=l<j?l:j;a=k}h[c>>3]=j;h[c+8>>3]=i;h[d>>3]=g;h[d+8>>3]=f;return}function vt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;n=r+64|0;p=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;o=d+16|0;g=c[o>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{m=c[(c[o>>2]|0)+12>>2]|0;n=m+8|0;k=c[n>>2]|0;c[p>>2]=k;b:do if((k|0)>2){i=vH(k<<4)|0;j=m+44|0;g=0;while(1){if((g|0)>=(k|0))break b;d=c[j>>2]|0;h[i+(g<<4)>>3]=+h[d+(g<<4)>>3]*.013888888888888888;h[i+(g<<4)+8>>3]=+h[d+(g<<4)+8>>3]*.013888888888888888;g=g+1|0}}else i=st(d,p,0.0,0.0)|0;while(0);g=c[c[(c[o>>2]|0)+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))g=1;else q=13;break}case 112:{if((b$(g,102695)|0)==0?(rt(i,c[p>>2]|0)|0)!=0:0)g=1;else q=13;break}default:q=13}do if((q|0)==13){if((c[n>>2]|0)<3?c[m>>2]|0:0){g=2;break}g=0}while(0);c[b+40>>2]=g;q=20;break a}case 2:{c[p>>2]=4;q=vH(64)|0;o=c[(c[o>>2]|0)+12>>2]|0;t=+h[o+16>>3];v=+h[o+24>>3];u=+h[o+32>>3];s=+h[o+40>>3];wt(i,t,v);c[q>>2]=c[i>>2];c[q+4>>2]=c[i+4>>2];c[q+8>>2]=c[i+8>>2];c[q+12>>2]=c[i+12>>2];i=q+16|0;wt(j,u,v);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=q+32|0;wt(k,u,s);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=q+48|0;wt(m,t,s);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=q;q=20;break a}case 3:{c[b+40>>2]=2;i=st(d,p,0.0,0.0)|0;q=20;break a}default:{c[n>>2]=c[c[(c[o>>2]|0)+8>>2]>>2];Pw(1,92348,n)|0;g=1;break a}}else{c[p>>2]=4;u=+h[g+32>>3]*.5;v=+h[g+40>>3]*.5;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;q=20}while(0);if((q|0)==20){g=c[p>>2]|0;if(e!=1.0|f!=1.0)xt(i,g,e,f);c[b+36>>2]=i;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function wt(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b*.013888888888888888;h[a+8>>3]=c*.013888888888888888;return}function xt(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0;e=0;while(1){if((e|0)>=(b|0))break;h[a>>3]=+h[a>>3]*c;f=a+8|0;h[f>>3]=+h[f>>3]*d;a=a+16|0;e=e+1|0}return}function yt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0;r=l;l=l+128|0;o=r+112|0;n=r+96|0;m=r+80|0;f=r+64|0;p=r+48|0;q=r+32|0;j=r+16|0;k=r;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];xr(p,n,o);g=b+16|0;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];xr(q,n,o);c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];xr(j,n,o);i=e+16|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];xr(k,n,o);c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];do if(zt(f,m,n,o)|0){f=c[b+40>>2]|0;if(f&1|0?c[e+40>>2]&1|0:0){f=1;break}if(f&2|0?c[e+40>>2]&2|0:0){s=+h[g>>3]-+h[b>>3]+ +h[i>>3]-+h[e>>3];t=+h[a>>3]-+h[d>>3];u=+h[a+8>>3]-+h[d+8>>3];f=!(u*u+t*t>s*s*.25);break}f=c[46144]|0;if(!f){c[46144]=vH(c[46143]<<4)|0;i=vH(c[46143]<<4)|0;c[46145]=i;f=c[46144]|0}else i=c[46145]|0;v=c[b+36>>2]|0;b=b+32|0;g=c[b>>2]|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];At(v,g,o,f);a=c[e+36>>2]|0;g=e+32|0;e=c[g>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];At(a,e,o,i);if(!(Bt(f,i,c[b>>2]|0,c[g>>2]|0)|0)){f=c[46144]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];if(Ct(m,n,o)|0?(k=c[46145]|0,v=c[g>>2]|0,c[o>>2]=c[f>>2],c[o+4>>2]=c[f+4>>2],c[o+8>>2]=c[f+8>>2],c[o+12>>2]=c[f+12>>2],Dt(k,v,o)|0):0){f=1;break}f=c[46145]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];if(!(Ct(m,n,o)|0))f=0;else{q=c[46144]|0;v=c[b>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];f=(Dt(q,v,o)|0)!=0}}else f=1}else f=0;while(0);l=r;return f&1|0}function zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((+h[a>>3]<=+h[d>>3]?+h[c>>3]<=+h[b>>3]:0)?+h[a+8>>3]<=+h[d+8>>3]:0)a=+h[c+8>>3]<=+h[b+8>>3]&1;else a=0;return a|0}function At(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=c+8|0;e=0;while(1){if((e|0)>=(b|0))break;h[d>>3]=+h[c>>3]+ +h[a>>3];h[d+8>>3]=+h[f>>3]+ +h[a+8>>3];e=e+1|0;a=a+16|0;d=d+16|0}return}function Bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+112|0;s=A+96|0;r=A+80|0;q=A+64|0;p=A+48|0;u=A+32|0;v=A+16|0;w=A;x=d+-1|0;y=e+-1|0;z=d<<1;t=e<<1;f=0;g=0;h=0;i=0;while(1){B=a+(f<<4)|0;C=a+(((x+f|0)%(d|0)|0)<<4)|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[C>>2];c[s+4>>2]=c[C+4>>2];c[s+8>>2]=c[C+8>>2];c[s+12>>2]=c[C+12>>2];wr(u,r,s);o=b+(g<<4)|0;n=b+(((y+g|0)%(e|0)|0)<<4)|0;c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];wr(v,r,s);c[q>>2]=c[45770];c[q+4>>2]=c[45771];c[q+8>>2]=c[45772];c[q+12>>2]=c[45773];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];j=+yr(q,r,s);c[q>>2]=c[C>>2];c[q+4>>2]=c[C+4>>2];c[q+8>>2]=c[C+8>>2];c[q+12>>2]=c[C+12>>2];c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];k=zr(q,r,s)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[B>>2];c[s+4>>2]=c[B+4>>2];c[s+8>>2]=c[B+8>>2];c[s+12>>2]=c[B+12>>2];m=zr(q,r,s)|0;c[p>>2]=c[C>>2];c[p+4>>2]=c[C+4>>2];c[p+8>>2]=c[C+8>>2];c[p+12>>2]=c[C+12>>2];c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];if(Ar(p,q,r,s,w)|0){f=1;break}n=(k|0)==0;o=(m|0)==0;do if(j!=0.0|(m|k|0)!=0)if(!(j>=0.0))if(o){f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{g=(g+1|0)%(e|0)|0;i=i+1|0;break}else if(n){g=(g+1|0)%(e|0)|0;i=i+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0}while(0);if(!((i|0)<(t|0)&((h|0)<(z|0)&((i|0)<(e|0)|(h|0)<(d|0))))){f=0;break}}l=A;return f|0}function Ct(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[a>>3];if((e<=+h[c>>3]?e>=+h[b>>3]:0)?(d=+h[a+8>>3],d<=+h[c+8>>3]):0)a=d>=+h[b+8>>3]&1;else a=0;return a|0}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,l=0;e=c[46146]|0;if(!e){e=vH(c[46143]<<4)|0;c[46146]=e}i=d+8|0;g=0;while(1){if((g|0)>=(b|0))break;h[e+(g<<4)>>3]=+h[a+(g<<4)>>3]-+h[d>>3];h[e+(g<<4)+8>>3]=+h[a+(g<<4)+8>>3]-+h[i>>3];g=g+1|0}d=b+-1|0;f=0.0;a=0;a:while(1){if((a|0)>=(b|0)){l=19;break}g=(d+a|0)%(b|0)|0;j=+h[e+(a<<4)+8>>3];i=j==0.0;if(i?+h[e+(g<<4)+8>>3]==0.0:0){if(+h[e+(g<<4)>>3]*+h[e+(a<<4)>>3]<0.0){e=1;break}}else l=11;do if((l|0)==11){l=0;k=+h[e+(g<<4)+8>>3];if(!(j>=0.0)|!(k<=0.0)?!(k>=0.0)|!(j<=0.0):0)break;j=(k*+h[e+(a<<4)>>3]-j*+h[e+(g<<4)>>3])/(k-j);if(j==0.0){e=1;break a}if(j>0.0)if(k==0.0|i){f=f+.5;break}else{f=f+1.0;break}}while(0);a=a+1|0}if((l|0)==19)e=((~~f|0)%2|0|0)==1&1;return e|0}function Et(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=vH(b<<2)|0;i=O(b,b)|0;d=vH(i<<2)|0;c[j>>2]=d;at(i,0.0,d);d=1;while(1){if((d|0)>=(b|0)){d=0;g=0;i=b;break}c[j+(d<<2)>>2]=(c[j>>2]|0)+((O(d,b)|0)<<2);d=d+1|0}while(1){if((g|0)>=(b|0))break;h=j+(g<<2)|0;e=g;f=d;while(1){if((e|0)==(b|0))break;k=c[a+(f<<2)>>2]|0;c[(c[h>>2]|0)+(e<<2)>>2]=k;c[(c[j+(e<<2)>>2]|0)+(g<<2)>>2]=k;e=e+1|0;f=f+1|0}d=d+i|0;g=g+1|0;i=i+-1|0}return j|0}function Ft(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;var k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=c[d+(f<<2)>>2]|0;C=c[a+4>>2]|0;D=c[a>>2]|0;E=c[a+48>>2]|0;F=c[a+52>>2]|0;G=c[a+56>>2]|0;a:do if((h|0)<1)d=0;else{Ht(M,C,E,F,G,j);H=c[a+28>>2]|0;I=c[a+32>>2]|0;J=c[a+36>>2]|0;K=c[a+12>>2]|0;L=c[a+16>>2]|0;f=0;e=0;d=-1;while(1){if((f|0)>=(C|0))break;if((f|0)>=(e|0)){d=d+1|0;if((d|0)==(G|0)){e=C;d=G}else e=c[F+(d<<2)>>2]|0}c[L+(c[E+(f<<2)>>2]<<2)>>2]=d;f=f+1|0}z=c[a+40>>2]|0;A=I+(C+-1<<2)|0;d=0;e=0;while(1){if(e<<24>>24==0&(d|0)<(h|0)){k=-1.0e9;f=0;e=1}else break a;b:while(1){x=f;while(1){if((x|0)>=(C|0))break b;f=c[E+(x<<2)>>2]|0;y=+g[M+(f<<2)>>2];l=y;w=x;m=0.0;while(1){g[z+(f<<2)>>2]=m;f=w+1|0;if((f|0)>=(C|0)){v=0;break}l=(c[L+(f<<2)>>2]|0)>(c[L+(w<<2)>>2]|0)?l+j:l;a=c[E+(f<<2)>>2]|0;m=+g[M+(a<<2)>>2];if(+B(+(m-l))>1.0e-09){v=1;break}w=f;m=m-y;f=a}n=x;while(1){if((n|0)>(w|0)){a=0;o=x;break}o=c[E+(n<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;a=0;l=-+g[b+(o<<2)>>2];while(1){if((a|0)>=(C|0))break;if((a|0)!=(o|0))l=+g[M+(a<<2)>>2]*+g[p+(a<<2)>>2]+l;a=a+1|0}g[H+(o<<2)>>2]=l/-+g[p+(o<<2)>>2]-+g[z+(o<<2)>>2];n=n+1|0}c:while(1){if((o|0)>(w|0)){m=0.0;q=0.0;r=0;break}n=c[L+(c[E+(o<<2)>>2]<<2)>>2]|0;if((n|0)==(G|0))r=f;else{r=c[F+(n<<2)>>2]|0;r=(f|0)<(r|0)?f:r}p=o;while(1){if((p|0)>=(r|0)){p=o;break}n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]<y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((p|0)>=(r|0))break;n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]==y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((o|0)>=(r|0)){o=r;continue c}n=c[E+(o<<2)>>2]|0;if(+g[H+(n<<2)>>2]>y){c[K+(a<<2)>>2]=n;a=a+1|0}o=o+1|0}}while(1){if((r|0)>=(a|0))break;o=c[K+(r<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;l=0.0;n=0;while(1){if((n|0)==(r|0))break;l=l-+g[p+(c[K+(n<<2)>>2]<<2)>>2];n=n+1|0}N=l*2.0;u=p+(o<<2)|0;s=+g[u>>2];l=N+m;s=(N*y+m*q-+g[H+(o<<2)>>2]*s)/(l-s);g[I+(r<<2)>>2]=s;m=l-+g[u>>2];q=s;r=r+1|0}p=(a|0)==(C|0);if(p)g[A>>2]=y;u=a+-1|0;m=0.0;q=0.0;o=u;while(1){if((o|0)<=-1)break;r=c[K+(o<<2)>>2]|0;t=c[D+(r<<2)>>2]|0;l=0.0;n=o;while(1){n=n+1|0;if((n|0)>=(a|0))break;l=l-+g[t+(c[K+(n<<2)>>2]<<2)>>2]}l=l*2.0;t=t+(r<<2)|0;N=+g[t>>2];s=l+m;N=(l*y+m*q-+g[H+(r<<2)>>2]*N)/(s-N);g[J+(o<<2)>>2]=N;m=s-+g[t>>2];q=N;o=o+-1|0}if(p){g[J>>2]=y;s=0.0;n=-1;p=0}else{s=0.0;n=-1;p=0}while(1){if((a|0)<=(p|0))break;q=+g[J+(p<<2)>>2];if((p|0)>0)l=+g[I+(p+-1<<2)>>2];else l=q;do if(q<l){o=l>y;if(q<y){l=o?y:l;m=l;break}if(o){m=q;l=q}else m=q}else m=q;while(0);N=+B(+(m-y))*+(a-p|0)+ +B(+(l-y))*+(p|0);t=N>s;s=t?N:s;n=t?p:n;p=p+1|0}if((n|0)>-1)break;if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0){k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;x=f;continue}k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];x=f}m=+g[J+(n<<2)>>2];if(!n)q=m;else q=+g[I+(n+-1<<2)>>2];if(v){t=c[E+(f<<2)>>2]|0;l=+g[M+(t<<2)>>2];l=((c[L+(t<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0)?l-j:l)-+g[z+(c[K+(u<<2)>>2]<<2)>>2]}else l=1.0e9;l=m<l?m:l;k=q>k?q:k;do if(l<k){o=k>y;if(l<y){l=o?y:k;m=l;break}if(o)m=l;else{m=l;l=k}}else{m=l;l=k}while(0);o=0;while(1){if((o|0)>=(n|0))break;t=c[K+(o<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+l;o=o+1|0}while(1){if((n|0)>=(a|0))break;t=c[K+(n<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+m;n=n+1|0}if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0)k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;else k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];a=x;while(1){if((a|0)>(w|0))break;c[E+(a<<2)>>2]=c[K+(a-x<<2)>>2];a=a+1|0}if(e<<24>>24!=0?+B(+(l-y))<.01:0)e=+B(+(m-y))<.01;else e=0;e=e&1}Ts(C,M);Gt(M,E,F,G,i);d=d+1|0}}while(0);return d|0}function Gt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=0;while(1){if((g|0)>=(e|0))break;c[f+(g<<2)>>2]=c[a+(c[b+((c[d+(g<<2)>>2]|0)+-1<<2)>>2]<<2)>>2];g=g+1|0}return}function Ht(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0.0,j=0,k=0,l=0,m=0;i=-1.0e9;k=0;j=-1;m=0;while(1){if((m|0)>=(b|0))break;if((m|0)<(k|0))l=k;else{j=j+1|0;if((j|0)==(f|0))k=b;else k=c[e+(j<<2)>>2]|0;if((m|0)>0)i=+g[a+(c[d+(m+-1<<2)>>2]<<2)>>2]+h;else i=-1.0e9;hs(a,d,m,k+-1|0);l=k}k=a+(c[d+(m<<2)>>2]<<2)|0;if(+g[k>>2]<i)g[k>>2]=i;k=l;m=m+1|0}return}function It(a){a=a|0;D_(c[c[a>>2]>>2]|0);D_(c[a>>2]|0);D_(c[a+8>>2]|0);D_(c[a+28>>2]|0);D_(c[a+32>>2]|0);D_(c[a+36>>2]|0);D_(c[a+40>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);D_(a);return}function Jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=vH(60)|0;c[k>>2]=0;l=k+4|0;c[l>>2]=b;c[k+48>>2]=d;c[k+52>>2]=e;c[k+56>>2]=f;c[k>>2]=Et(a,b)|0;i=b<<2;j=vH(i)|0;c[k+8>>2]=j;h=0;b=0;a=-1;while(1){if((h|0)>=(c[l>>2]|0))break;g=a+1|0;if((h|0)>=(b|0)){b=c[((g|0)==(f|0)?l:e+(g<<2)|0)>>2]|0;a=g}c[j+(c[d+(h<<2)>>2]<<2)>>2]=a;h=h+1|0}c[k+28>>2]=vH(i)|0;c[k+32>>2]=vH(i)|0;c[k+36>>2]=vH(i)|0;c[k+40>>2]=vH(i)|0;c[k+12>>2]=vH(i)|0;c[k+16>>2]=vH(i)|0;c[k+20>>2]=vH(i)|0;c[k+24>>2]=vH(i)|0;return k|0}function Kt(){gt(184592,24);c[46151]=0;return}function Lt(){return it(184592)|0}function Mt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function Nt(a){a=a|0;var b=0;b=c[46151]|0;c[a+16>>2]=b;c[46151]=b+1;return}function Ot(a){a=a|0;var b=0,d=0;d=a+20|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;if(!b)jt(a,184592);return}function Pt(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;return}function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+16|0;o=x;c[o>>2]=e;q=b<<2;v=vH(q)|0;m=b<<3;w=vH(m)|0;u=as(a,b)|0;a=0;while(1){if((a|0)>=(b|0))break;k=u+(a<<2)|0;j=0;while(1){if((j|0)==(b|0))break;s=(c[k>>2]|0)+(j<<2)|0;c[s>>2]=c[s>>2]<<8;j=j+1|0}a=a+1|0}if(!d)qa(92381,92389,283,92403);s=vH(m)|0;a=0;while(1){if((a|0)>=(b|0))break;h[s+(a<<3)>>3]=+h[d+(a<<3)>>3];a=a+1|0}Rt(s,b);i=0.0;n=0.0;m=1;while(1){if((m|0)>=(b|0))break;j=u+(m<<2)|0;k=d+(m<<3)|0;a=0;while(1){if((a|0)==(m|0))break;y=c[(c[j>>2]|0)+(a<<2)>>2]|0;r=+h[k>>3]-+h[d+(a<<3)>>3];i=r*r*(1.0/+(O(y,y)|0))+i;n=+B(+r)*(1.0/+(y|0))+n;a=a+1|0}m=m+1|0}r=n/i;a=0;while(1){if((a|0)>=(b|0))break;y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*r;a=a+1|0}St(b,o,f,d,u);k=vH(O(q,b)|0)|0;j=0;while(1){if((j|0)>=(b|0)){k=1;break}m=k+((O(j,b)|0)<<2)|0;c[v+(j<<2)>>2]=m;o=u+(j<<2)|0;i=0.0;a=0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+(c[(c[o>>2]|0)+(a<<2)>>2]|0);p=-1.0/(p*p);g[m+(a<<2)>>2]=p;i=i-p}a=a+1|0}g[m+(j<<2)>>2]=i;j=j+1|0}while(1){if((k|0)>=(b|0)){j=0;break}i=+h[d+(k<<3)>>3];j=u+(k<<2)|0;a=0;while(1){if((a|0)==(k|0))break;y=(c[j>>2]|0)+(a<<2)|0;n=+(c[y>>2]|0);p=i-+h[d+(a<<3)>>3];p=n*n-p*p;q=~~+C(+p);q=p>0.0?q:0;c[(c[u+(a<<2)>>2]|0)+(k<<2)>>2]=q;c[y>>2]=q;a=a+1|0}k=k+1|0}while(1){if((j|0)>=(b|0)){q=0;a=0;break}n=+h[e+(j<<3)>>3];m=w+(j<<3)|0;h[m>>3]=0.0;o=u+(j<<2)|0;k=v+(j<<2)|0;a=0;i=0.0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+g[(c[k>>2]|0)+(a<<2)>>2]*+(c[(c[o>>2]|0)+(a<<2)>>2]|0);i=i+(n>=+h[e+(a<<3)>>3]?-p:p);h[m>>3]=i}a=a+1|0}j=j+1|0}while(1){if(!(a<<24>>24==0&(q|0)<200)){t=42;break}if((Eq(v,e,w,b,f,b,1)|0)<0){a=1;break}else{a=1;o=0}while(1){if((o|0)>=(b|0))break;p=+h[e+(o<<3)>>3];k=u+(o<<2)|0;m=v+(o<<2)|0;i=0.0;j=0;while(1){if((j|0)==(b|0))break;do if((j|0)!=(o|0)){n=+g[(c[m>>2]|0)+(j<<2)>>2]*+(c[(c[k>>2]|0)+(j<<2)>>2]|0);if(!(p>=+h[e+(j<<3)>>3])){i=i+n;break}else{i=i+-n;break}}while(0);j=j+1|0}j=w+(o<<3)|0;p=+h[j>>3];if(i!=p?+B(+(1.0-i/p))>1.0e-05:0){h[j>>3]=i;a=0}o=o+1|0}q=q+1|0}a:do if((t|0)==42){i=1.0/r;a=0;while(1){if((a|0)>=(b|0)){a=0;break a}y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*i;y=e+(a<<3)|0;h[y>>3]=+h[y>>3]*i;a=a+1|0}}while(0);D_(c[u>>2]|0);D_(u);D_(c[v>>2]|0);D_(v);D_(s);D_(w);l=x;return a|0}function Rt(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0;c=0;d=0.0;while(1){if((c|0)>=(b|0))break;e=+h[a+(c<<3)>>3]+d;c=c+1|0;d=e}d=d/+(b|0);c=0;while(1){if((c|0)>=(b|0))break;f=a+(c<<3)|0;h[f>>3]=+h[f>>3]-d;c=c+1|0}f=b+-1|0;Cs(a,0,f,1.0/+Bs(a,0,f),a);return}function St(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;k=Tt(f,a)|0;l=vH(8)|0;if(!e){f=0;j=0}else{g=vH(a<<3)|0;f=0;while(1){if((f|0)>=(a|0))break;h[g+(f<<3)>>3]=+h[e+(f<<3)>>3];f=f+1|0}Rt(g,a);f=g;j=g}Ut(k,a,b,l,f,d);e=0;while(1){if((e|0)==1)break;g=l+(e<<3)|0;i=b+(e<<2)|0;f=0;while(1){if((f|0)>=(a|0))break;d=+C(+(+B(+(+h[g>>3]))));m=(c[i>>2]|0)+(f<<3)|0;h[m>>3]=+h[m>>3]*d;f=f+1|0}e=e+1|0}D_(c[k>>2]|0);D_(k);D_(l);D_(j);return}function Tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+16|0;f=o;n=b<<2;e=vH(O(n,b)|0)|0;n=vH(n)|0;d=0;while(1){if((d|0)>=(b|0))break;c[n+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}m=Wt(a,b,f)|0;h=+g[f>>2];e=0;k=1;while(1){if((e|0)>=(b|0))break;f=a+(e<<2)|0;i=m+(e<<2)|0;j=n+(e<<2)|0;d=0;while(1){if((d|0)==(k|0))break;p=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);p=+g[m+(d<<2)>>2]+ +g[i>>2]-p*p-h;g[(c[j>>2]|0)+(d<<2)>>2]=p;g[(c[n+(d<<2)>>2]|0)+(e<<2)>>2]=p;d=d+1|0}e=e+1|0;k=k+1|0}D_(m);l=o;return n|0}function Ut(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0;r=b<<3;q=vH(r)|0;r=vH(r)|0;n=1.0-g;o=(b|0)<1?b:1;p=b+-1|0;k=(f|0)==0;j=0;a:while(1){if((j|0)>=(o|0))break;l=c[d+(j<<2)>>2]|0;do{i=0;while(1){if((i|0)==(b|0))break;h[l+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}if(k)i=0;else{As(l,0,p,-+zs(f,0,p,l),f);i=0}while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p)}while(g<1.0e-10);Cs(l,0,p,1.0/g,l);do{Ds(r,0,p,l);Vt(a,b,b,l,q,f);Ds(l,0,p,q);i=0;while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p);if(g<1.0e-10)break a;Cs(l,0,p,1.0/g,l);m=+zs(l,0,p,r)}while(+B(+m)<n);h[e+(j<<3)>>3]=m*g;j=j+1|0}while(1){if((j|0)>=(o|0))break;k=c[d+(j<<2)>>2]|0;i=0;while(1){if((i|0)>=(b|0)){i=0;break}h[k+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}while(1){if((i|0)>=(j|0))break;s=d+(i<<2)|0;n=-+zs(c[s>>2]|0,0,p,k);As(k,0,p,n,c[s>>2]|0);i=i+1|0}Cs(k,0,p,1.0/+Bs(k,0,p),k);h[e+(j<<3)>>3]=0.0;j=j+1|0}l=o+-1|0;j=0;while(1){if((j|0)>=(l|0))break;a=e+(j<<3)|0;f=j+1|0;g=+h[a>>3];i=j;k=f;while(1){if((k|0)>=(o|0))break;n=+h[e+(k<<3)>>3];s=g<n;g=s?n:g;i=s?k:i;k=k+1|0}if((i|0)==(j|0)){j=f;continue}b=d+(j<<2)|0;Ds(q,0,p,c[b>>2]|0);s=d+(i<<2)|0;Ds(c[b>>2]|0,0,p,c[s>>2]|0);Ds(c[s>>2]|0,0,p,q);h[e+(i<<3)>>3]=+h[a>>3];h[a>>3]=g;j=f}D_(q);D_(r);return}function Vt(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0.0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;m=a+(j<<2)|0;k=0.0;l=0;while(1){if((l|0)>=(d|0))break;k=+h[e+(l<<3)>>3]*+g[(c[m>>2]|0)+(l<<2)>>2]+k;l=l+1|0}h[f+(j<<3)>>3]=k;j=j+1|0}j=b+-1|0;if(i|0)As(f,0,j,-+zs(f,0,j,i),i);return}function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;j=vH(b<<2)|0;k=1.0/+(b|0);e=0.0;i=0;while(1){if((i|0)>=(b|0))break;l=a+(i<<2)|0;f=0.0;h=0;while(1){if((h|0)==(b|0))break;m=+(c[(c[l>>2]|0)+(h<<2)>>2]|0);m=m*m;f=m+f;h=h+1|0;e=m+e}g[j+(i<<2)>>2]=k*f;i=i+1|0}g[d>>2]=e/+(O(b,b)|0);return j|0}function Xt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;q=O(d,d)|0;r=vH(q<<3)|0;s=vH(d<<3)|0;e=0;while(1){if((e|0)>=(d|0))break;h[s+(e<<3)>>3]=+h[c+(e<<3)>>3];e=e+1|0}e=0;while(1){if((e|0)>=(q|0))break;h[r+(e<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}p=d+-1|0;g=0;o=0;a:while(1){if((o|0)<(p|0)){f=0.0;e=o}else{l=21;break}while(1){if((e|0)>=(d|0))break;t=+B(+(+h[a+((O(e,d)|0)+o<<3)>>3]));m=t<f;n=m?g:e;f=m?f:t;e=e+1|0;g=n}if(f<1.0e-10){l=33;break}i=O(g,d)|0;n=O(o,d)|0;e=o;while(1){if((e|0)>=(d|0))break;l=a+(e+i<<3)|0;t=+h[l>>3];m=a+(e+n<<3)|0;h[l>>3]=+h[m>>3];h[m>>3]=t;e=e+1|0}m=c+(g<<3)|0;t=+h[m>>3];j=c+(o<<3)|0;h[m>>3]=+h[j>>3];h[j>>3]=t;m=o+1|0;k=a+(n+o<<3)|0;e=m;while(1){if((e|0)>=(d|0)){o=m;continue a}l=O(e,d)|0;f=+h[a+(l+o<<3)>>3]/+h[k>>3];i=c+(e<<3)|0;h[i>>3]=+h[i>>3]-+h[j>>3]*f;i=0;while(1){if((i|0)>=(d|0))break;u=a+(i+l<<3)|0;h[u>>3]=+h[u>>3]-+h[a+(i+n<<3)>>3]*f;i=i+1|0}e=e+1|0}}if((l|0)==21){f=+h[a+(q+-1<<3)>>3];if(+B(+f)<1.0e-10)l=33;else{h[b+(p<<3)>>3]=+h[c+(p<<3)>>3]/f;e=0;while(1){if((e|0)>=(p|0)){e=0;break}g=d-e|0;i=g+-2|0;f=+h[c+(i<<3)>>3];j=b+(i<<3)|0;h[j>>3]=f;k=O(i,d)|0;g=g+-1|0;while(1){if((g|0)>=(d|0))break;t=f-+h[b+(g<<3)>>3]*+h[a+(g+k<<3)>>3];h[j>>3]=t;g=g+1|0;f=t}h[j>>3]=f/+h[a+(k+i<<3)>>3];e=e+1|0}while(1){if((e|0)>=(d|0)){e=0;break}h[c+(e<<3)>>3]=+h[s+(e<<3)>>3];e=e+1|0}while(1){if((e|0)>=(q|0))break;h[a+(e<<3)>>3]=+h[r+(e<<3)>>3];e=e+1|0}D_(r);D_(s)}}if((l|0)==33){k3(92418)|0;D_(r);D_(s)}return}function Yt(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=l;l=l+16|0;r=s;nr();Kt();Ir();c[46147]=jb[d&3]()|0;Kr();q=r+8|0;p=jb[d&3]()|0;e=0.0;f=0.0;a:while(1){n=(p|0)==0;o=p+8|0;while(1){if(!(Er()|0)){Fr(r);e=+h[r>>3];f=+h[q>>3]}if(!n){if(Er()|0)break;g=+h[o>>3];if(g<f)break;if(g==f?+h[p>>3]<e:0)break}if(Er()|0)break a;t=Gr()|0;b=Tr(t)|0;v=Sr(t)|0;i=Sr(v)|0;m=Ur(t)|0;u=Vr(v)|0;j=c[t+20>>2]|0;Nt(j);rr(c[t+8>>2]|0,a[t+16>>0]|0,j);rr(c[v+8>>2]|0,a[v+16>>0]|0,j);Rr(t);Dr(v);Rr(v);v=+h[m+8>>3]>+h[u+8>>3];t=v&1;k=v?u:m;u=or(k,v?m:u)|0;m=Lr(u,t)|0;Or(b,m);rr(u,(t^1)&255,j);Ot(j);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,k))}b=Mr(m,i)|0;if(!b)continue;Br(m,b,+Mt(b,k))}b=Pr(p)|0;k=Sr(b)|0;i=or(Vr(b)|0,p)|0;m=Lr(i,0)|0;Or(b,m);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,p))}i=Lr(i,1)|0;Or(m,i);b=Mr(i,k)|0;if(b|0)Br(i,b,+Mt(b,p));p=jb[d&3]()|0}b=c[46090]|0;while(1){b=Sr(b)|0;if((b|0)==(c[46091]|0))break;pr(c[b+8>>2]|0)}l=s;return}function Zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g+8|0;e=g;do if((ay(a)|0)!=1){_t(a);if(!b)b=$t(a)|0;d=au(a,b)|0;if(0){h=c[15686]|0;c[e>>2]=ry(b)|0;c[e+4>>2]=d;g1(h,92434,e)|0}if((d|0)<0){Pw(1,92468,f)|0;break}else{bu(a);cu(a,b);du(a,b);eu(a,d);break}}else{h=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0}while(0);l=g;return b|0}function _t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=ay(a)|0;d=O(d,d)|0;b=Sy(a)|0;while(1){if(!b)break;e=b+16|0;f=c[(c[e>>2]|0)+112>>2]|0;g=f+24|0;c[g>>2]=d;c[g+4>>2]=0;h[f+48>>3]=10.0;f=(mu(a,b)|0)==0;e=c[(c[e>>2]|0)+112>>2]|0;c[e>>2]=f?d:0;c[e+4>>2]=f?0:0;b=Ty(a,b)|0}return}function $t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=(ay(a)|0)<3;b=Sy(a)|0;a:do if(!e){while(1){if(!b)break;e=c[(c[b+16>>2]|0)+112>>2]|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)lu(a,b,0);b=Ty(a,b)|0}d=0;b=0;e=Sy(a)|0;while(1){if(!e)break a;h=c[(c[e+16>>2]|0)+112>>2]|0;g=c[h>>2]|0;h=c[h+4>>2]|0;f=((d|0)<0)<<31>>31;f=h>>>0>f>>>0|(h|0)==(f|0)&g>>>0>d>>>0;d=f?g:d;b=f?e:b;e=Ty(a,e)|0}}while(0);return b|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[b+16>>2]|0)+112>>2]|0;f=d+24|0;e=c[f>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[d+32>>2]=0;iu(a,b);d=Sy(a)|0;e=y3(0,e|0,32)|0;f=z;b=0;while(1){if(!d)break;h=(c[(c[d+16>>2]|0)+112>>2]|0)+24|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if((g|0)==(e|0)&(h|0)==(f|0)){b=-1;break}i=((b|0)<0)<<31>>31;b=h>>>0>i>>>0|(h|0)==(i|0)&g>>>0>b>>>0?g:b;d=Ty(a,d)|0}return b|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0;d=Sy(a)|0;while(1){if(!d)break;b=c[(c[d+16>>2]|0)+112>>2]|0;e=b+16|0;a:do if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)while(1){e=b+8|0;f=e;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[e>>2]=f;c[e+4>>2]=z;b=c[b+32>>2]|0;if(!b)break a;b=c[(c[b+16>>2]|0)+112>>2]|0}while(0);d=Ty(a,d)|0}return}function cu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+40>>3]=6.283185307179586;hu(a,b);return}function du(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+48>>3]=0.0;gu(a,b);return}function eu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+16|0;f=i;g=fu(a,b)|0;if(0){e=c[15686]|0;D1(92524,e)|0;d=0;while(1){if((d|0)>(b|0))break;h[f>>3]=+h[g+(d<<3)>>3];g1(e,92543,f)|0;d=d+1|0}D1(150517,e)|0}d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+112>>2]|0;j=+h[g+(c[e+24>>2]<<3)>>3];e=e+48|0;k=+E(+(+h[e>>3]))*j;f=c[f+132>>2]|0;h[f>>3]=k;h[f+8>>3]=+F(+(+h[e>>3]))*j;d=Ty(a,d)|0}D_(g);l=i;return}function fu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;m=uH((d<<3)+8|0)|0;b=NL(b,nx(c[b+60>>2]|0,0,98262,0)|0,0)|0;a:do if(!b){f=1.0;e=0.0;b=1}else{i=0.0;e=0.0;g=1;b:while(1){if((g|0)>(d|0)){f=i;b=g;break a}f=+c2(b,k);if(!(f>0.0)){f=i;b=g;break a}i=f>.02?f:.02;e=i+e;j=g+1|0;h[m+(g<<3)>>3]=e;b=c[k>>2]|0;while(1){g=a[b>>0]|0;if(!(g<<24>>24)){g=j;continue b}if(!(g<<24>>24==58|(B$(g<<24>>24)|0)!=0)){g=j;continue b}b=b+1|0}}}while(0);while(1){if((b|0)>(d|0))break;i=e+f;h[m+(b<<3)>>3]=i;b=b+1|0;e=i}l=n;return m|0}function gu(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0.0;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+32>>2]|0))e=0.0;else e=+h[d+48>>3]-+h[d+40>>3]*.5;g=Jx(a,b)|0;while(1){if(!g)break;d=c[g>>2]&3;f=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((f|0)==(b|0))f=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[f+16>>2]|0)+112>>2]|0;if((c[d+32>>2]|0)==(b|0)?(i=d+48|0,!(+h[i>>3]!=10.0)):0){j=+h[d+40>>3];h[i>>3]=j*.5+e;e=j+e;d=d+16|0;if(!((c[d>>2]|0)==0&(c[d+4>>2]|0)==0))gu(a,f)}g=Kx(a,g,b)|0}return}function hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0;e=c[(c[b+16>>2]|0)+112>>2]|0;f=e+8|0;g=+h[e+40>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+((c[f+4>>2]|0)>>>0));f=Jx(a,b)|0;while(1){if(!f)break;e=c[f>>2]&3;d=c[((e|0)==3?f:f+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?f:f+-48|0)+40>>2]|0;e=c[(c[d+16>>2]|0)+112>>2]|0;if(((c[e+32>>2]|0)==(b|0)?(i=e+40|0,!(+h[i>>3]!=0.0)):0)?(j=e+8|0,h[i>>3]=g*(+((c[j>>2]|0)>>>0)+4294967296.0*+((c[j+4>>2]|0)>>>0)),e=e+16|0,!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)):0)hu(a,d);f=Kx(a,f,b)|0}return}function iu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+16|0;n=p;o=nx(b,2,98515,0)|0;c[n+4>>2]=0;c[n>>2]=0;ju(n,d);j=(o|0)==0;a:while(1){k=ku(n)|0;if(!k)break;m=k+16|0;h=c[(c[(c[m>>2]|0)+112>>2]|0)+24>>2]|0;g=Jx(b,k)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)continue a;if(!((!j?(a[(yx(g,o)|0)>>0]|0)==48:0)?!(b$(yx(g,o)|0,135312)|0):0)){d=c[g>>2]&3;e=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(k|0))e=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[e+16>>2]|0)+112>>2]|0;f=d+24|0;q=f;r=c[q+4>>2]|0;if(i>>>0<r>>>0|((i|0)==(r|0)?h>>>0<(c[q>>2]|0)>>>0:0)){r=f;c[r>>2]=h;c[r+4>>2]=i;c[d+32>>2]=k;r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;q=r;q=s3(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;c[r>>2]=q;c[r+4>>2]=z;ju(n,e)}}g=Kx(b,g,k)|0}}l=p;return}function ju(a,b){a=a|0;b=b|0;var d=0,e=0;d=uH(8)|0;c[d>>2]=b;b=a+4|0;e=c[b>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=d;c[b>>2]=d;return}function ku(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=c[d>>2]|0;c[a>>2]=c[d+4>>2];D_(d);if(!(c[a>>2]|0))c[a+4>>2]=0}else b=0;return b|0}function lu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c[c[(c[b+16>>2]|0)+112>>2]>>2]|0;g=Jx(a,b)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)!=(d|0)?(j=c[(c[e+16>>2]|0)+112>>2]|0,f=j,k=c[f+4>>2]|0,i>>>0<k>>>0|((i|0)==(k|0)?h>>>0<(c[f>>2]|0)>>>0:0)):0){k=j;c[k>>2]=h;c[k+4>>2]=i;lu(a,e,b)}g=Kx(a,g,b)|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=0;g=Jx(a,b)|0;while(1){if(!g){d=1;break}e=c[g>>2]&3;d=c[((e|0)==3?g:g+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?g:g+-48|0)+40>>2]|0;if((d|0)!=(b|0)){if(f)if((f|0)==(d|0))d=f;else{d=0;break}}else d=f;f=d;g=Kx(a,g,b)|0}return d|0}function nu(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=l;l=l+32|0;e=b;d=nx(a,1,92551,0)|0;g=nx(a,0,92551,0)|0;a=ou(a,g,d,nx(a,0,92556,0)|0)|0;d=a+16|0;f=+C(+(+h[a>>3]+.1));zu(e,0.0,0.0,f,f);c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[d+28>>2]=c[e+28>>2];pu(a);qu(a);ru(a);l=b;return}function ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=uH(72)|0;c[o+60>>2]=0;c[o+56>>2]=a;k=a+16|0;f=0.0;l=0;i=1;j=0;m=0;while(1){g=c[k>>2]|0;if((i|0)>(c[g+180>>2]|0))break;g=ou(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,b,d,e)|0;f=+h[g>>3]+f;if(j|0)c[j+52>>2]=g;l=l+1|0;i=i+1|0;j=g;m=(m|0)==0?g:m}n=Sy(a)|0;g=m;while(1){if(!n)break;i=n+16|0;if(!(c[c[(c[i>>2]|0)+112>>2]>>2]|0)){k=uu(n,d)|0;f=+h[k>>3]+f;if(j|0)c[j+52>>2]=k;c[c[(c[i>>2]|0)+112>>2]>>2]=a;i=l+1|0;j=k;g=(g|0)==0?k:g}else i=l;n=Ty(a,n)|0;l=i}c[o+64>>2]=l;if(!l)f=+wu(a,b);else{h[o+8>>3]=f;f=+vu(o,e)}h[o>>3]=f;c[o+48>>2]=g;return o|0}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;p=l;l=l+176|0;f=p+144|0;n=p+64|0;k=p+32|0;i=p;o=c[a+64>>2]|0;a:do if(o|0){m=uH(o<<2)|0;b=a+48|0;e=0;d=b;while(1){d=c[d>>2]|0;if((e|0)>=(o|0))break;c[m+(e<<2)>>2]=d;e=e+1|0;d=d+52|0}_0(m,o,4,79);j=uH(o<<3)|0;d=0;while(1){if((d|0)>=(o|0))break;h[j+(d<<3)>>3]=+h[c[m+(d<<2)>>2]>>3];d=d+1|0}g=+h[a+8>>3];if(+h[a>>3]==g){i=a+16|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}else{q=+h[a+40>>3];r=+h[a+32>>3];h[i>>3]=+h[a+16>>3];h[i+8>>3]=+h[a+24>>3];s=q-r;g=(r+q-+C(+(g*4.0+s*s)))*.5;h[i+16>>3]=r-g;h[i+24>>3]=q-g;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}if(0){f=c[15686]|0;q=+h[a+24>>3];r=+h[a+32>>3];s=+h[a+40>>3];h[k>>3]=+h[a+16>>3];h[k+8>>3]=q;h[k+16>>3]=r;h[k+24>>3]=s;g1(f,92603,k)|0}e=c[15686]|0;d=0;while(1){if((d|0)>=(o|0))break;k=(c[m+(d<<2)>>2]|0)+16|0;f=i+(d<<5)|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];c[k+28>>2]=c[f+28>>2];if(0){g=+h[f>>3];r=+h[i+(d<<5)+16>>3];u=r*.5;q=+h[i+(d<<5)+8>>3];s=+h[i+(d<<5)+24>>3];t=s*.5;h[n>>3]=+h[j+(d<<3)>>3];h[n+8>>3]=g-u;h[n+16>>3]=q-t;h[n+24>>3]=u+g;h[n+32>>3]=t+q;h[n+40>>3]=s*r;h[n+48>>3]=g;h[n+56>>3]=q;h[n+64>>3]=r;h[n+72>>3]=s;g1(e,92620,n)|0}d=d+1|0}D_(m);D_(j);D_(i);d=0;while(1){b=c[b>>2]|0;if((d|0)>=(o|0))break a;if(!(c[b+60>>2]|0))pu(b);b=b+52|0;d=d+1|0}}while(0);l=p;return}function qu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;f=l;l=l+48|0;e=f;if(c[a+60>>2]|0){k=+h[a+24>>3];i=+h[a+32>>3];g=+h[a+40>>3];b=c[a+56>>2]|0;d=b+16|0;j=c[d>>2]|0;h[j+16>>3]=+h[a+16>>3];h[j+24>>3]=k;a=c[d>>2]|0;h[a+32>>3]=i*.013888888888888888;h[a+40>>3]=g*.013888888888888888;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);su(b);if(0){j=c[15686]|0;a=ry(b)|0;d=c[d>>2]|0;m=+h[d+16>>3];g=+h[d+24>>3];i=+h[d+80>>3];k=+h[d+96>>3]+ +h[d+88>>3];c[e>>2]=a;h[e+8>>3]=m;h[e+16>>3]=g;h[e+24>>3]=i;h[e+32>>3]=k;g1(j,92562,e)|0}}else{b=a+48|0;while(1){b=c[b>>2]|0;if(!b)break;qu(b);b=b+52|0}i=+h[a+32>>3];m=+h[a+40>>3];g=+h[a+16>>3]-i*.5;k=+h[a+24>>3]-m*.5;j=c[(c[a+56>>2]|0)+16>>2]|0;h[j+16>>3]=g;h[j+24>>3]=k;h[j+32>>3]=g+i;h[j+40>>3]=k+m}l=f;return}function ru(a){a=a|0;var b=0,d=0,e=0;e=c[a+64>>2]|0;b=a+48|0;d=0;while(1){b=c[b>>2]|0;if((d|0)>=(e|0))break;ru(b);b=b+52|0;d=d+1|0}D_(a);return}function su(b){b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;d=g+8|0;e=c[46380]|0;if(e|0?(a[(yx(b,e)|0)>>0]|0)==0:0){h[f>>3]=+h[(c[b+16>>2]|0)+80>>3]*.7;Y0(d,92597,f)|0;rx(b,c[46380]|0,d)|0}dM(b);l=g;return}function tu(a,b){a=a|0;b=b|0;var d=0.0;d=+h[c[a>>2]>>3]-+h[c[b>>2]>>3];return (d<0.0?1:(d>0.0)<<31>>31)|0}function uu(a,b){a=a|0;b=b|0;var d=0;d=uH(72)|0;h[d>>3]=+wu(a,b);c[d+60>>2]=1;c[d+56>>2]=a;return d|0}function vu(a,b){a=a|0;b=b|0;var d=0.0;d=+LL(c[a+56>>2]|0,b,0.0,0.0);if(d==0.0)d=+h[a+8>>3];else{d=+C(+(+h[a+8>>3]))+d*2.0;d=d*d}return +d}function wu(a,b){a=a|0;b=b|0;var c=0.0;c=+LL(a,b,1.0,0.0);return +(c==0.0?1.0e3:c*1.0e3)}function xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i;e=0;f=0.0;while(1){if((e|0)>=(a|0))break;j=+h[b+(e<<3)>>3]+f;e=e+1|0;f=j}if(f>+h[d+24>>3]*+h[d+16>>3]+.001)e=0;else{e=uH(a<<5)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[g+16>>2]=c[d+16>>2];c[g+20>>2]=c[d+20>>2];c[g+24>>2]=c[d+24>>2];c[g+28>>2]=c[d+28>>2];yu(a,b,e,0,0.0,1.0,0.0,1.0,g)}l=i;return e|0}function yu(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=+i;j=+j;k=k|0;var m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0;z=l;l=l+112|0;y=z+72|0;u=z+40|0;p=z+32|0;m=z;w=k+16|0;q=+h[w>>3];x=k+24|0;r=+h[x>>3];v=+h[k+16+((!(q<r)&1)<<3)>>3];do if((a|0)>=1){if(0){A=c[15686]|0;B=+h[k+8>>3];h[m>>3]=+h[k>>3];h[m+8>>3]=q;h[m+16>>3]=B;h[m+24>>3]=r;g1(A,92657,m)|0;c[p>>2]=e;g1(A,92703,p)|0}if(!e){i=+h[b>>3];B=v*v;v=i/B;B=B/i;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,1,i,i,i,v>B?v:B,y);break}if((a|0)>(e|0)?(t=+h[b+(e<<3)>>3],n=t<f?f:t,s=t>g?g:t,t=t+i,o=t/v,o=o*o,B=o/s,o=n/o,o=B>o?B:o,o<=j):0){c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,e+1|0,n,s,t,o,y);break}q=i/v;if(0){A=c[15686]|0;c[u>>2]=e;h[u+8>>3]=i;h[u+16>>3]=v;h[u+24>>3]=q;g1(A,92728,u)|0}n=+h[w>>3];if(v==n){o=1.0/q;p=k+8|0;n=+h[k>>3]-n*.5;m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+24>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+16>>3]=B;h[d+(m<<5)+8>>3]=(+h[x>>3]-q)*.5+ +h[p>>3];h[d+(m<<5)>>3]=B*.5+n;n=B+n;m=m+1|0}h[p>>3]=+h[p>>3]-q*.5;m=1}else{o=1.0/q;n=+h[x>>3]*.5+ +h[k+8>>3];m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+16>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+24>>3]=B;h[d+(m<<5)>>3]=(q-+h[w>>3])*.5+ +h[k>>3];h[d+(m<<5)+8>>3]=n-B*.5;n=n-B;m=m+1|0}h[k>>3]=+h[k>>3]+q*.5;m=0}A=k+16+(m<<3)|0;h[A>>3]=+h[A>>3]-q;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a-e|0,b+(e<<3)|0,d+(e<<5)|0,0,0.0,0.0,0.0,1.0,y)}while(0);l=z;return}function zu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Au(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=l;l=l+96|0;C=D+48|0;B=D+24|0;A=D+16|0;z=D+8|0;u=D+80|0;v=D;w=a+16|0;x=d+4|0;y=u+4|0;s=Sy(a)|0;e=0;f=0;i=0;j=0;while(1){if(!s)break;t=Ex(a,s)|0;q=e;r=j;while(1){if(!t)break;e=(b[(c[t+16>>2]|0)+168>>1]|0)==0;do if((s|0)==(c[((c[t>>2]&3|0)==2?t:t+-48|0)+40>>2]|0))if(e){j=q;e=r}else{if(!f){e=uH(96)|0;c[e+84>>2]=uH(((ay(a)|0)<<5)+11520|0)|0;f=e}else e=r;Mm(f,t,c[(c[w>>2]|0)+248>>2]|0);j=q}else if(!e){i=Bu(t,d)|0;j=i+8|0;if(ms(c[j>>2]|0,c[i>>2]|0)|0){k=sU(c[j>>2]|0,c[i>>2]|0)|0;if(!k){Pw(0,92781,z)|0;j=1;e=r;break}else e=t;while(1){if(!e)break;E=e+16|0;F=(c[E>>2]|0)+144|0;Sm(v,e,k,0,c[j>>2]|0,c[i>>2]|0);H=v;G=c[H+4>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;Um(a,e,c[j>>2]|0,c[i>>2]|0,0);e=c[(c[E>>2]|0)+172>>2]|0}Cu(i);j=q;e=r;break}if(!q){qq(u,a);e=YD(a,8,8)|0;Pw(0,92865,A)|0;n=+(e|0);o=+g[d>>2];p=+g[x>>2];if(!(o>=n)&!(p>=n)){m=+g[u>>2];n=+g[y>>2];if(!(!(m<=o)&!(n<=p))){h[C>>3]=m;h[C+8>>3]=n;h[C+16>>3]=o;h[C+24>>3]=p;Pw(3,92981,C)|0}}else{c[B>>2]=e;h[B+8>>3]=o;h[B+16>>3]=p;Pw(3,92931,B)|0}j=1;e=r}else{j=q;e=r}}else{j=q;e=r}while(0);t=Gx(a,t)|0;q=j;r=e}s=Ty(a,s)|0;e=q;j=r}Du(i);if(f|0){D_(c[f+84>>2]|0);D_(j)}l=D;return e|0}function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;m=p+4|0;n=p;e=c[b>>2]&3;f=c[((e|0)==2?b:b+-48|0)+40>>2]|0;e=c[((e|0)==3?b:b+48|0)+40>>2]|0;q=f+16|0;h=c[(c[q>>2]|0)+212>>2]|0;c[m>>2]=h;i=e+16|0;g=c[(c[i>>2]|0)+212>>2]|0;c[n>>2]=g;k=uH(12)|0;b=h;j=g;if(a[(c[q>>2]|0)+118>>0]|0){b=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2]|0;c[m>>2]=b;f=h;h=b}if(!(a[(c[i>>2]|0)+118>>0]|0))i=j;else{i=c[(c[(c[j+16>>2]|0)+140>>2]|0)+48>>2]|0;c[n>>2]=i;e=g;g=i}h=c[(c[(c[h+16>>2]|0)+140>>2]|0)+44>>2]|0;g=c[(c[(c[g+16>>2]|0)+140>>2]|0)+44>>2]|0;if((h|0)<=(g|0))if((g|0)>(h|0)){Eu(k,g,e,h,n,d);b=c[n>>2]|0;g=b;e=n;o=11}else h=i;else{Eu(k,h,f,g,m,d);b=c[m>>2]|0;f=b;g=e;e=m;o=11}while(1){if((o|0)==11){c[e>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];e=g;b=c[m>>2]|0;h=c[n>>2]|0}if((b|0)==(h|0))break;Fu(k,b,0,f,d);Fu(k,h,e,0,d);c[m>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];f=b;g=h;e=n;b=h;o=11}Fu(k,h,e,f,d);l=p;return k|0}function Cu(a){a=a|0;c[a>>2]=0;return}function Du(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Eu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;while(1){h=c[i>>2]|0;if((b|0)<=(e|0))break;Fu(a,h,d,0,g);b=b+-1|0;i=(c[(c[h+16>>2]|0)+140>>2]|0)+48|0;d=h}c[f>>2]=d;return}function Fu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Sy(d)|0;while(1){if(!h)break;i=c[h+16>>2]|0;if(!((h|0)==(f|0)|((h|0)==(e|0)?1:(c[i+212>>2]|0)!=(d|0)))?(a[i+118>>0]|0)==0:0)Gu(b,Pm(h,g,0)|0);h=Ty(d,h)|0}i=d+16|0;d=1;while(1){h=c[i>>2]|0;if((d|0)>(c[h+180>>2]|0))break;h=c[(c[h+184>>2]|0)+(d<<2)>>2]|0;if(!((h|0)==(e|0)|(h|0)==(f|0)))Gu(b,Hu(h,g)|0);d=d+1|0}return}function Gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+4|0;f=c[e>>2]|0;g=a+8|0;d=c[g>>2]|0;do if((f|0)==(c[a>>2]|0))if(!d){d=vH(400)|0;c[g>>2]=d;c[e>>2]=100;break}else{c[e>>2]=f<<1;d=xH(d,f<<3)|0;c[g>>2]=d;break}while(0);g=c[a>>2]|0;c[a>>2]=g+1;c[d+(g<<2)>>2]=b;return}function Hu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0;m=uH(8)|0;b=c[b+16>>2]|0;e=+h[b+16>>3];l=+h[b+24>>3];f=+h[b+32>>3];k=+h[b+40>>3];c[m+4>>2]=4;b=uH(64)|0;c[m>>2]=b;if(!(a[d+8>>0]|0)){p=+g[d>>2];o=+g[d+4>>2];i=(f+e)*.5*(p+-1.0);n=(k+l)*.5*(o+-1.0);j=e*p-i;i=f*p-i;f=k*o-n;e=l*o-n}else{i=+g[d>>2];p=+g[d+4>>2];j=e-i;i=f+i;f=k+p;e=l-p}h[b>>3]=j;h[b+8>>3]=e;h[b+16>>3]=j;h[b+24>>3]=f;h[b+32>>3]=i;h[b+40>>3]=f;h[b+48>>3]=i;h[b+56>>3]=e;return m|0}function Iu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+160|0;n=o+16|0;j=o+8|0;g=o;k=o+24|0;m=uH(ay(b)|0)|0;h=b+16|0;f=c[c[(c[h>>2]|0)+140>>2]>>2]|0;a:do if(!f){g=0;f=0}else{p=ry(b)|0;i=c[46152]|0;c[g>>2]=p;c[g+4>>2]=i;Y0(k,93041,g)|0;i=vA(b,k,1)|0;Az(i,134401,280,1)|0;g=uH(56)|0;c[(c[i+16>>2]|0)+140>>2]=g;c[g>>2]=f;c[g+4>>2]=c[(c[(c[h>>2]|0)+140>>2]|0)+4>>2];while(1){g=c[f+4>>2]|0;if(!g){g=i;f=1;break a}if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,i,m);f=f+16|0}}while(0);h=0;i=Sy(b)|0;while(1){if(!i)break;p=c[i+16>>2]|0;if((a[m+(c[p+120>>2]|0)>>0]|0)==0?(a[p+119>>0]|0)==3:0){if(!g){p=ry(b)|0;g=(c[46152]|0)+f|0;c[j>>2]=p;c[j+4>>2]=g;Y0(k,93041,j)|0;g=vA(b,k,1)|0;Az(g,134401,280,1)|0;p=uH(56)|0;c[(c[g+16>>2]|0)+140>>2]=p;f=f+1|0}Ju(b,i,g,m);h=1}i=Ty(b,i)|0}if(g|0)vD(g)|0;g=Sy(b)|0;while(1){if(!g)break;if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0)){j=ry(b)|0;p=(c[46152]|0)+f|0;c[n>>2]=j;c[n+4>>2]=p;Y0(k,93049,n)|0;p=vA(b,k,1)|0;Az(p,134401,280,1)|0;j=uH(56)|0;c[(c[p+16>>2]|0)+140>>2]=j;Ju(b,g,p,m);vD(p)|0;f=f+1|0}g=Ty(b,g)|0}D_(m);c[46152]=(c[46152]|0)+f;if(d|0)c[d>>2]=f;if(e|0)c[e>>2]=h;i=uH((f<<2)+4|0)|0;h=i;g=wA(b)|0;while(1){if(!g)break;c[h>>2]=g;h=h+4|0;g=xA(g)|0;f=f+-1|0}if(!f){c[h>>2]=0;l=o;return i|0}else qa(93057,93068,134,93075);return 0}function Ju(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a[f+(c[(c[d+16>>2]|0)+120>>2]|0)>>0]=1;Xy(e,d,1)|0;i=Jx(b,d)|0;while(1){if(!i)break;h=c[i>>2]&3;g=c[((h|0)==3?i:i+48|0)+40>>2]|0;if((g|0)==(d|0))g=c[((h|0)==2?i:i+-48|0)+40>>2]|0;if(!(a[f+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,e,f);i=Kx(b,i,d)|0}return}function Ku(a){a=a|0;var b=0;b=vH(24)|0;c[46153]=b;c[b>>2]=Cw(18100,c[4555]|0)|0;c[b+16>>2]=0;c[b+12>>2]=0;c[b+4>>2]=Lu(a)|0;return b|0}function Lu(a){a=a|0;var b=0,d=0;b=vH(16)|0;c[b+12>>2]=0;d=vH(a*20|0)|0;c[b>>2]=d;c[b+8>>2]=d+(a*20|0);c[b+4>>2]=d;return b|0}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;d=Ou(c[46153]|0)|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=0;return d|0}function Nu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b>>2]|0)-(c[d>>2]|0)|0;if(!a)a=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;return a|0}function Ou(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+8|0;a=c[f>>2]|0;b=c[a+4>>2]|0;if((b|0)==(c[a+8>>2]|0)){d=a+12|0;e=c[d>>2]|0;if(!e){a=Lu(((b-(c[a>>2]|0)|0)/20|0)<<1)|0;c[d>>2]=a}else a=e;c[f>>2]=a;b=c[a>>2]|0;c[a+4>>2]=b}c[a+4>>2]=b+20;return b|0}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+12|0;d=c[f>>2]|0;if((d|0)<(b|0)){e=d<<1;e=(e|0)<(b|0)?b:e;b=a+16|0;d=c[b>>2]|0;if(d|0)D_(d);c[b>>2]=vH(e<<3)|0;c[f>>2]=e}return}function Qu(a){a=a|0;var b=0;b=c[a>>2]|0;nb[c[b>>2]&63](b,0,64)|0;c[a+20>>2]=c[a+16>>2];b=c[a+4>>2]|0;c[a+8>>2]=b;c[b+4>>2]=c[b>>2];return}function Ru(a){a=a|0;yw(c[a>>2]|0)|0;Su(c[a+4>>2]|0);D_(c[a+16>>2]|0);D_(a);return}function Su(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;h=g+12|0;c[h>>2]=b;c[h+4>>2]=d;i=c[a>>2]|0;h=(nb[c[i>>2]&63](i,h,1)|0)+8|0;c[h>>2]=Uu(a,e,c[h>>2]|0)|0;if(0>2){i=c[15686]|0;h=ry(e)|0;c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=h;g1(i,93085,f)|0}l=g;return}function Uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+20|0;a=c[e>>2]|0;c[e>>2]=a+8;c[a>>2]=b;c[a+4>>2]=d;return a|0}function Vu(a,b){a=a|0;b=b|0;Jw(c[a>>2]|0,b,a)|0;return}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;c[f>>2]=b;c[f+4>>2]=d;d=c[a>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function Xu(a,b){a=a|0;b=b|0;if((ay(a)|0)==1){a=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}else{Yu(a);if(!((QL(xx(b,93102)|0)|0)<<24>>24))b=tv(a,183128)|0;else b=Zu(a)|0;Cv(a,b,183128);_u(b)}return}function Yu(a){a=a|0;var b=0;b=ez(c[c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]>>2]|0)|0;a=c[46154]|0;if((b|0)!=(a|0)){c[45785]=0;c[46154]=b;c[46155]=nx(b,0,93111,0)|0;c[46156]=nx(c[46154]|0,1,93119,0)|0;c[46157]=nx(c[46154]|0,1,93136,0)|0;a=c[46154]|0}c[46158]=xx(a,93136)|0;nv(183128);c[45784]=1;h[22895]=+LL(c[46154]|0,c[46155]|0,1.0,0.0);c[45786]=c[46156];c[45787]=c[46157];c[45788]=c[46158];return}function Zu(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;e=f;d=f+8|0;b=c[45785]|0;c[45785]=b+1;c[e>>2]=b;Y0(d,93152,e)|0;d=ov(vA(a,d,1)|0)|0;e=d+8|0;b=Sy(a)|0;while(1){if(!b)break;Xy(c[e>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=d;b=Ty(a,b)|0}l=f;return d|0}function _u(a){a=a|0;Bv(a);return}function $u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;av(f,c);bv(a,b,c,f);cv(b,f,d);dv(f);l=e;return}function av(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<4)|0;c[a+4>>2]=b;c[a+8>>2]=0;return}function bv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+64|0;r=D+32|0;u=D+48|0;v=D+16|0;w=D;t=b<<2;A=vH(t)|0;C=vH(t)|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;s=vH(t)|0;t=vH(t)|0;f=0;while(1){if((f|0)>=(b|0))break;c[s+(f<<2)>>2]=f;f=f+1|0}q=b+-1|0;js(a,s,0,q);f=0;while(1){if((f|0)>=(b|0))break;c[t+(c[s+(f<<2)>>2]<<2)>>2]=f;f=f+1|0}fv(u,a,s,b);f=1;while(1){if((f|0)>=(b|0)){f=0;break}c[A+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(f+-1<<2)>>2];f=f+1|0}while(1){if((f|0)>=(q|0))break;p=f+1|0;c[C+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(p<<2)>>2];f=p}k=e+8|0;m=e+4|0;n=v+4|0;o=w+4|0;p=w+8|0;j=0;while(1){if((j|0)>=(d|0))break;if(!((gv(u,v)|0)<<24>>24))break;f=c[k>>2]|0;b=c[m>>2]|0;if((f|0)<(b|0))b=c[e>>2]|0;else{c[m>>2]=b<<1;b=F_(c[e>>2]|0,b<<5)|0;c[e>>2]=b;f=c[k>>2]|0}c[k>>2]=f+1;f=b+(f<<4)|0;c[f>>2]=c[v>>2];c[f+4>>2]=c[v+4>>2];c[f+8>>2]=c[v+8>>2];c[f+12>>2]=c[v+12>>2];f=c[v>>2]|0;b=c[t+(f<<2)>>2]|0;g=c[n>>2]|0;i=c[t+(g<<2)>>2]|0;if((b|0)>0?(x=c[s+(b+-1<<2)>>2]|0,y=C+(x<<2)|0,(c[t+(c[y>>2]<<2)>>2]|0)<(i|0)):0){c[w>>2]=x;c[o>>2]=g;h[p>>3]=+h[a+(g<<3)>>3]-+h[a+(x<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[y>>2]=g;c[A+(g<<2)>>2]=x}if((i|0)<(q|0)?(z=c[s+(i+1<<2)>>2]|0,B=A+(z<<2)|0,(c[t+(c[B>>2]<<2)>>2]|0)>(b|0)):0){c[w>>2]=f;c[o>>2]=z;h[p>>3]=+h[a+(z<<3)>>3]-+h[a+(f<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[B>>2]=f;c[C+(f<<2)>>2]=z}j=j+1|0}D_(A);D_(C);D_(s);D_(t);iv(u);l=D;return}function cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=vH(a<<2)|0;l=b+8|0;i=c[l>>2]|0;j=(i<<1)+a|0;h=j<<2;e=vH(h)|0;h=vH(h)|0;f=0;while(1){if((f|0)>=(a|0))break;c[k+(f<<2)>>2]=1;f=f+1|0}f=0;while(1){if((f|0)>=(i|0)){f=0;break}n=c[b>>2]|0;m=c[n+(f<<4)+4>>2]|0;n=k+(c[n+(f<<4)>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;m=k+(m<<2)|0;c[m>>2]=(c[m>>2]|0)+1;f=f+1|0}while(1){if((f|0)>=(j|0))break;g[h+(f<<2)>>2]=1.0;f=f+1|0}i=vH(a*20|0)|0;c[d>>2]=i;f=0;while(1){if((f|0)>=(a|0))break;c[i+(f*20|0)>>2]=1;c[i+(f*20|0)+8>>2]=h;c[i+(f*20|0)+4>>2]=e;c[e>>2]=f;g[h>>2]=0.0;n=c[k+(f<<2)>>2]|0;h=h+(n<<2)|0;e=e+(n<<2)|0;f=f+1|0}D_(k);while(1){e=c[l>>2]|0;if(!e)break;n=e+-1|0;c[l>>2]=n;m=c[b>>2]|0;ev(i,c[m+(n<<4)>>2]|0,c[m+(n<<4)+4>>2]|0)}return}function dv(a){a=a|0;D_(c[a>>2]|0);return}function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;f=a+(b*20|0)|0;h=c[f>>2]|0;i=c[a+(b*20|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0)){j=4;break}if((c[i+(e<<2)>>2]|0)==(d|0))break;else e=e+1|0}if((j|0)==4?(c[f>>2]=h+1,c[i+(h<<2)>>2]=d,i=c[a+(d*20|0)+4>>2]|0,h=a+(d*20|0)|0,j=c[h>>2]|0,c[h>>2]=j+1,c[i+(j<<2)>>2]=b,c[a+8>>2]|0):0){j=c[a+(b*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0;j=c[a+(d*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0}return}function fv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0,l=0;f=e+-1|0;c[a+4>>2]=f;c[a+8>>2]=f;c[a>>2]=vH(f<<4)|0;e=0;while(1){if((e|0)>=(f|0))break;l=c[d+(e<<2)>>2]|0;g=e+1|0;k=c[d+(g<<2)>>2]|0;j=+h[b+(k<<3)>>3]-+h[b+(l<<3)>>3];i=c[a>>2]|0;c[i+(e<<4)>>2]=l;c[i+(e<<4)+4>>2]=k;h[i+(e<<4)+8>>3]=j;e=g}e=(f|0)/2|0;while(1){if((e|0)<=-1)break;jv(a,e);e=e+-1|0}return}function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;if(!(c[d>>2]|0))a=0;else{e=c[a>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];b=c[a>>2]|0;e=b+((c[d>>2]|0)+-1<<4)|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[d>>2]=(c[d>>2]|0)+-1;jv(a,0);a=1}return a|0}function hv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;j=a+4|0;g=c[j>>2]|0;d=a+8|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=g<<1;d=F_(c[a>>2]|0,g<<5)|0;c[a>>2]=d;k=a;i=c[j>>2]|0}else{k=a;i=g;d=c[a>>2]|0}c[j>>2]=i+1;j=d+(g<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];while(1){if((g|0)<=0)break;d=c[k>>2]|0;e=+h[d+(g<<4)+8>>3];a=g>>>1;f=+h[d+(a<<4)+8>>3];if(!(e<f)){if(!(e==f))break;if(!((g2()|0)&1))break;d=c[k>>2]|0}j=d+(g<<4)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];b=d+(a<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];j=(c[k>>2]|0)+(a<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];g=a}l=n;return}function iv(a){a=a|0;D_(c[a>>2]|0);return}function jv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;i=m;j=a+4|0;while(1){d=b<<1;g=d|1;if((d|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(d<<4)+8>>3];f=+h[n+(b<<4)+8>>3];if(!(e<f))if(!(e==f?((g2()|0)&1|0)!=0:0))k=6}else k=6;if((k|0)==6){k=0;d=b}do if((g|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(g<<4)+8>>3];f=+h[n+(d<<4)+8>>3];if(!(e<f)){if(!(e==f))break;if(!((g2()|0)&1))break}d=g}while(0);if((d|0)==(b|0))break;g=c[a>>2]|0;n=g+(d<<4)|0;c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];g=g+(b<<4)|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];n=(c[a>>2]|0)+(b<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];b=d}l=m;return}function kv(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0;l=(f|0)!=0;if(!l){f=vH(b<<3)|0;if(!(kt(a,b,f,b)|0))m=3;else{a=1;m=17}}else m=3;if((m|0)==3){k=uH(b<<2)|0;c[g>>2]=k;a=0;while(1){if((a|0)>=(b|0))break;c[k+(a<<2)>>2]=a;a=a+1|0}a=b+-1|0;js(f,k,0,a);n=+h[f+(c[k>>2]<<3)>>3];e=(+h[f+(c[k+(a<<2)>>2]<<3)>>3]-n)*e/+(a|0);e=e<d?d:e;a=0;g=1;d=n;while(1){if((g|0)>=(b|0))break;n=+h[f+(c[k+(g<<2)>>2]<<3)>>3];a=a+(n-d>e&1)|0;g=g+1|0;d=n}c[j>>2]=a;a:do if(!a){k=vH(4)|0;c[i>>2]=k;c[k>>2]=b}else{j=vH(a<<2)|0;c[i>>2]=j;a=0;g=1;while(1){if((g|0)>=(b|0))break a;if(+h[f+(c[k+(g<<2)>>2]<<3)>>3]-+h[f+(c[k+(g+-1<<2)>>2]<<3)>>3]>e){c[j+(a<<2)>>2]=g;a=a+1|0}g=g+1|0}}while(0);if(l)a=0;else{a=0;m=17}}if((m|0)==17)D_(f);return a|0}function lv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c[46159]|0;if(d|0)xn(d);c[46159]=wn(b,b,0.0)|0;d=c[46160]|0;if(d|0)D_(d);c[46160]=uH(b<<2)|0;d=c[46161]|0;if(d|0)D_(d);n=uH(b<<3)|0;c[46161]=n;o=c[46159]|0;p=c[46160]|0;i=0;while(1){if((i|0)>=(b|0)){e=10;break}e=a+(i<<2)|0;g=o+(i<<2)|0;f=0.0;d=0;while(1){if((d|0)==(b|0))break;j=+h[(c[e>>2]|0)+(d<<3)>>3];h[(c[g>>2]|0)+(d<<3)>>3]=j;j=+B(+j);f=f<j?j:f;d=d+1|0}if(!(f!=0.0)){e=15;break}h[n+(i<<3)>>3]=1.0/f;c[p+(i<<2)>>2]=i;i=i+1|0}a:do if((e|0)==10){m=b+-1|0;d=0;l=0;b:while(1){if((l|0)<(m|0)){e=l;k=d;f=0.0}else break;while(1){if((e|0)>=(b|0))break;a=c[p+(e<<2)>>2]|0;j=+B(+(+h[(c[o+(a<<2)>>2]|0)+(l<<3)>>3]));j=+h[n+(a<<3)>>3]*j;a=f<j;i=a?e:k;e=e+1|0;k=i;f=a?j:f}if(f==0.0){d=0;break a}d=p+(l<<2)|0;if((k|0)!=(l|0)){i=c[d>>2]|0;a=p+(k<<2)|0;c[d>>2]=c[a>>2];c[a>>2]=i}g=c[o+(c[d>>2]<<2)>>2]|0;a=l+1|0;f=1.0/+h[g+(l<<3)>>3];e=a;while(1){if((e|0)>=(b|0)){d=k;l=a;continue b}i=c[o+(c[p+(e<<2)>>2]<<2)>>2]|0;d=i+(l<<3)|0;j=+h[d>>3]*f;h[d>>3]=j;c:do if(j!=0.0){d=a;while(1){if((d|0)>=(b|0))break c;q=i+(d<<3)|0;h[q>>3]=+h[q>>3]-+h[g+(d<<3)>>3]*j;d=d+1|0}}while(0);e=e+1|0}}d=+h[(c[o+(c[p+(m<<2)>>2]<<2)>>2]|0)+(m<<3)>>3]!=0.0&1}else if((e|0)==15){h[n+(i<<3)>>3]=0.0;d=0}while(0);return d|0}function mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0;k=c[46159]|0;l=c[46160]|0;j=0;while(1){if((j|0)>=(d|0)){e=d;break}g=c[l+(j<<2)>>2]|0;i=k+(g<<2)|0;f=0.0;e=0;while(1){if((e|0)==(j|0))break;f=+h[a+(e<<3)>>3]*+h[(c[i>>2]|0)+(e<<3)>>3]+f;e=e+1|0}h[a+(j<<3)>>3]=+h[b+(g<<3)>>3]-f;j=j+1|0}while(1){b=e+-1|0;if((e|0)<=0)break;g=l+(b<<2)|0;f=0.0;while(1){if((e|0)>=(d|0))break;f=+h[a+(e<<3)>>3]*+h[(c[k+(c[g>>2]<<2)>>2]|0)+(e<<3)>>3]+f;e=e+1|0}e=a+(b<<3)|0;h[e>>3]=(+h[e>>3]-f)/+h[(c[k+(c[g>>2]<<2)>>2]|0)+(b<<3)>>3];e=b}return}function nv(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function ov(a){a=a|0;var b=0;b=uH(64)|0;nv(b+36|0);c[b+8>>2]=a;return b|0}function pv(a){a=a|0;if(a|0){Lv(c[a+32>>2]|0);D_(a)}return}function qv(a){a=a|0;return ay(c[a+8>>2]|0)|0}function rv(a,b){a=a|0;b=b|0;var d=0,e=0;c[b+4>>2]=0;d=a+4|0;e=c[d>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=b;c[d>>2]=b;return}function sv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(!d){c[a>>2]=b;a=a+4|0}else c[b+4>>2]=d;c[a>>2]=b;return}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;uv(a,b);j=c[b>>2]|0;h=c[j+4>>2]|0;while(1){if(!h)break;k=c[h+8>>2]|0;i=Sy(k)|0;d=c[(c[i+16>>2]|0)+112>>2]|0;a=c[d+16+4>>2]|0;d=c[d+8>>2]|0;f=i;i=Ty(k,i)|0;while(1){if(!i)break;e=c[(c[i+16>>2]|0)+112>>2]|0;g=c[e+16+4>>2]|0;if((g|0)<(a|0)){f=i;d=c[e+8>>2]|0;a=g}i=Ty(k,i)|0}i=c[(c[d+16>>2]|0)+112>>2]|0;k=i+4|0;c[k>>2]=c[k>>2]|8;c[h>>2]=f;k=c[h+4>>2]|0;rv((c[i+12>>2]|0)+36|0,h);h=k}nv(b);return j|0}function uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;g=i+8|0;e=c[b+24>>2]|0;if(!((e|0)!=0?(d=az(a,e,0)|0,(d|0)!=0):0))f=3;a:do if((f|0)==3){e=b+20|0;b:do if(c[e>>2]|0){d=Sy(a)|0;while(1){if(!d)break b;if((PL(c[c[(c[d+16>>2]|0)+112>>2]>>2]|0,c[e>>2]|0,0)|0)<<24>>24)break a;d=Ty(a,d)|0}}while(0);d=Sy(a)|0}while(0);if(0){f=c[15686]|0;c[h>>2]=ry(d)|0;g1(f,93141,h)|0}c[g+4>>2]=0;c[g>>2]=0;vv(a,d,b,1,g);l=i;return}function vv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+8|0;k=c[l>>2]|0;c[l>>2]=k+1;l=b+16|0;c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]=k;c[(c[(c[l>>2]|0)+112>>2]|0)+24>>2]=k;k=(e|0)==0;j=Jx(a,b)|0;while(1){if(!j)break;e=c[j>>2]&3;g=c[((e|0)==2?j:j+-48|0)+40>>2]|0;if((g|0)==(b|0)){e=c[((e|0)==3?j:j+48|0)+40>>2]|0;g=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[g>>2]|0))c[g>>2]=-1}else{e=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[e>>2]|0)){c[e>>2]=1;e=g}else e=g}g=e+16|0;h=c[(c[g>>2]|0)+112>>2]|0;i=c[h+16+4>>2]|0;do if(!i){c[h+8>>2]=b;wv(f,j);vv(a,e,d,0,f);i=(c[(c[l>>2]|0)+112>>2]|0)+24|0;c[i>>2]=c[(c[(c[((c[i>>2]|0)<(c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)?b:e)+16>>2]|0)+112>>2]|0)+24>>2];if((c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)>=(c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]|0)){e=0;do{h=xv(f)|0;g=(c[c[(c[h+16>>2]|0)+120>>2]>>2]|0)==1;g=c[((c[h>>2]&3|0)==((g?2:3)|0)?h:h+((g?-1:1)*48|0)|0)+40>>2]|0;if(!(c[(c[(c[g+16>>2]|0)+112>>2]|0)+12>>2]|0)){if(!e)e=yv(a,d)|0;zv(e,g)}}while((h|0)!=(j|0));if(e|0){if((c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0?(qv(e)|0)>1:0)zv(e,b);if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==(e|0):0){sv(d,e);break}rv(d,e)}}}else{g=c[(c[l>>2]|0)+112>>2]|0;if((c[g+8>>2]|0)!=(e|0)){h=g+24|0;g=c[h>>2]|0;c[h>>2]=(g|0)<(i|0)?g:i}}while(0);j=Kx(a,j,b)|0}if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0:0){l=yv(a,d)|0;zv(l,b);sv(d,l)}return}function wv(a,b){a=a|0;b=b|0;c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2]=c[a>>2];c[a>>2]=b;b=a+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function xv(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)qa(135312,93172,65,93184);d=a+4|0;e=c[d>>2]|0;if((e|0)>0){c[a>>2]=c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2];c[d>>2]=e+-1;return b|0}else qa(93162,93172,61,93184);return 0}function yv(a,b){a=a|0;b=b|0;return ov(Av(a,b)|0)|0}function zv(a,b){a=a|0;b=b|0;Xy(c[a+8>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=a;return}function Av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+144|0;f=d;e=d+8|0;g=b+12|0;b=c[g>>2]|0;c[g>>2]=b+1;c[f>>2]=b;Y0(e,93152,f)|0;b=vA(a,e,1)|0;Az(b,134401,280,1)|0;l=d;return b|0}function Bv(a){a=a|0;var b=0,d=0;b=c[a+36>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;Bv(b);b=d}pv(a);return}function Cv(a,b,c){a=a|0;b=b|0;c=c|0;Dv(a,b,+h[c+32>>3]);return}function Dv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;e=b+36|0;f=0;while(1){e=c[e>>2]|0;if(!e)break;Dv(a,e,d);e=e+4|0;f=f+1|0}e=Vv(a,b,d)|0;c[b+32>>2]=e;a=Sv(e)|0;if((f|0)>0)d=+Ev(f,a,e,b,d);else d=3.141592653589793;if((((a|0)==1?(g=c[b>>2]|0,g|0):0)?c[(c[(c[g+16>>2]|0)+112>>2]|0)+8>>2]|0:0)?(i=b+48|0,h[i>>3]=d,d<0.0):0)h[i>>3]=d+6.283185307179586;return}function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+48|0;t=v;u=uH(a*56|0)|0;c[t+40>>2]=c[e+36>>2];p=e+16|0;j=+h[p>>3];q=t+8|0;h[q>>3]=j;h[t>>3]=j;c[t+44>>2]=c[e>>2];j=6.283185307179586/+(b|0);h[t+16>>3]=j;r=t+24|0;h[r>>3]=-1.0;s=t+32|0;h[s>>3]=-1.0;k=0;o=0;g=0.0;while(1){i=c[d>>2]|0;if(!i)break;d=c[i>>2]|0;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&8))d=o;else{n=u+(o*56|0)|0;c[n>>2]=d;h[u+(o*56|0)+8>>3]=j*+(k|0);d=o+1|0;g=+Fv(n,t,f)}k=k+1|0;o=d;d=i+4|0}a:do switch(o|0){case 1:{h[u+40>>3]=1.0;d=0;break}case 2:{j=+h[u+64>>3]-+h[u+8>>3];Gv(u,u+56|0,j>3.141592653589793?6.283185307179586-j:j);d=0;break}default:{n=u+8|0;m=u;d=0;while(1){if((d|0)>=(o|0)){d=0;break a}d=d+1|0;if((d|0)==(o|0)){i=u;j=+h[n>>3]+6.283185307179586-+h[m+8>>3];k=m+56|0}else{k=m+56|0;i=k;j=+h[m+64>>3]-+h[m+8>>3]}Gv(m,i,j);m=k}}}while(0);while(1){if((d|0)>=(o|0))break;Hv(u+(d*56|0)|0,t,b,f);d=d+1|0}D_(u);if((a|0)==1){f=g+f*.5;Iv(e,-f,0.0,0.0);h[p>>3]=+h[p>>3]+f;u=e+56|0;c[u>>2]=c[u>>2]|1}else h[p>>3]=+h[q>>3];l=v;return +((+h[s>>3]+ +h[r>>3])*.5+-3.141592653589793)}function Fv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0;i=0;f=0.0;g=0.0;e=b+40|0;while(1){j=c[e>>2]|0;if(!j)break;e=c[j>>2]|0;if(!e)e=0;else e=c[(c[(c[e+16>>2]|0)+112>>2]|0)+8>>2]|0;if((e|0)==(c[a>>2]|0)){k=+h[j+16>>3];e=i+1|0;f=f+d+k*2.0;g=g<k?k:g}else e=i;i=e;e=j+4|0}h[a+32>>3]=f;c[a+48>>2]=i;h[a+16>>3]=g+d+ +h[b>>3];h[a+24>>3]=g;return +g}function Gv(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=+h[b+16>>3];d=+h[a+16>>3];c=(d*+h[b+32>>3]+e*+h[a+32>>3])/(c*2.0*e*d);c=c<1.0?1.0:c;a=a+40|0;if(c>+h[a>>3])h[a>>3]=c;a=b+40|0;if(c>+h[a>>3])h[a>>3]=c;return}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,G=0.0;z=b+8|0;y=+h[z>>3];A=b+24|0;k=+h[A>>3];B=b+32|0;j=+h[B>>3];f=+h[a+16>>3]*+h[a+40>>3];x=(d|0)==1;if(x){v=+h[a+32>>3];g=v*.15915494309189535;g=f>g?f:g;f=g*6.283185307179586-v;if(f>0.0){e=f/+(c[a+48>>2]|0)+e;l=0.0;f=g}else{l=0.0;f=g}}else l=+h[a+8>>3]-+h[a+32>>3]/(f*2.0);q=+h[a+24>>3]+f;r=q>y;s=a+48|0;t=((c[s>>2]|0)+1|0)/2|0;u=1.0/f;v=e/f*.5;w=a+8|0;n=b+40|0;o=0;p=0.0;g=l;while(1){n=c[n>>2]|0;if(!n)break;i=c[n>>2]|0;if(!i)i=0;else i=c[(c[(c[i+16>>2]|0)+112>>2]|0)+8>>2]|0;if((i|0)==(c[a>>2]|0)?(Sv(c[n+32>>2]|0)|0)>=1:0){l=+h[n+16>>3];m=l*u;do if(!x)if((c[s>>2]|0)==1){g=+h[w>>3];break}else{g=g+v+m;break}else{if(g!=0.0)g=(c[s>>2]|0)==2?3.141592653589793:m+g;j=g;k=k<0.0?g:k}while(0);G=+E(+g)*f;D=+F(+g)*f;Iv(n,G,D,+Jv(n,G,D,g));g=(x?(l+e)*u:m+v)+g;o=o+1|0;i=o;l=(o|0)==(t|0)?g:p}else{i=o;l=p}n=n+4|0;o=i;p=l}f=r?q:y;if((d|0)>1?(C=c[a>>2]|0,(C|0)==(c[b+44>>2]|0)):0)h[(c[(c[C+16>>2]|0)+112>>2]|0)+24>>3]=p;h[z>>3]=f;h[A>>3]=k;h[B>>3]=j;return}function Iv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;m=c[a+8>>2]|0;n=e!=0.0;f=Sy(m)|0;while(1){if(!f)break;k=c[(c[f+16>>2]|0)+132>>2]|0;i=+h[k>>3];l=k+8|0;g=+h[l>>3];if(n){o=+E(+e);p=+F(+e);j=o*i-p*g;g=p*i+o*g}else j=i;h[k>>3]=j+b;h[l>>3]=g+d;f=Ty(m,f)|0}f=a+36|0;while(1){f=c[f>>2]|0;if(!f)break;Iv(f,b,d,e);f=f+4|0}return}function Jv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0.0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;m=c[a+8>>2]|0;f=+h[a+48>>3];do if(!(f>=0.0)){if((Sv(c[a+32>>2]|0)|0)==2){f=e+-1.5707963267948966;break}l=c[a>>2]|0;n=l+16|0;i=c[(c[n>>2]|0)+132>>2]|0;f=+h[i>>3]+b;k=+h[i+8>>3]+d;f=k*k+f*f;i=Sy(m)|0;g=l;while(1){if(!i)break;if((i|0)!=(l|0)?(o=c[(c[i+16>>2]|0)+132>>2]|0,j=+h[o>>3]+b,k=+h[o+8>>3]+d,j=k*k+j*j,j<f):0){f=j;g=i}i=Ty(m,i)|0}if((l|0)!=(g|0)){j=+h[a+24>>3];k=+h[a+16>>3]-j;g=c[n>>2]|0;i=c[g+132>>2]|0;f=+h[i>>3];if(f>-k?(c[a+56>>2]&1|0)!=0:0){d=+C(+(d*d+b*b));b=+K(+(+h[i+8>>3]),+(f+k));f=+E(+b);f=e+1.5707963267948966-b-+I(+((k-j/f)/d*f));break}else{f=+K(+(+h[i+8>>3]),+f);f=e+3.141592653589793-f-+h[(c[g+112>>2]|0)+24>>3];f=f>6.283185307179586?f+-6.283185307179586:f;break}}else f=0.0}else{f=3.141592653589793-f+e;f=f<0.0?f+6.283185307179586:f}while(0);return +f}function Kv(){return uH(12)|0}function Lv(a){a=a|0;var b=0,d=0;if(a|0){b=c[a>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;D_(b);b=d}D_(a)}return}function Mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Nv(d)|0;d=a+8|0;c[d>>2]=(c[d>>2]|0)+1;d=a+4|0;e=c[d>>2]|0;if((b|0)==0|(e|0)==(b|0)){c[(e|0?e+4|0:a)>>2]=f;c[f+8>>2]=e;e=0}else{e=b+4|0;d=c[e>>2]|0;c[e>>2]=f;c[f+8>>2]=b;e=d;d=d+8|0}c[d>>2]=f;c[f+4>>2]=e;return}function Nv(a){a=a|0;var b=0;b=uH(12)|0;c[b>>2]=a;return b|0}function Ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a>>2]|0;d=b;while(1){if(!b)break;g=b+4|0;e=c[g>>2]|0;f=b+8|0;c[g>>2]=c[f>>2];c[f>>2]=e;b=e}f=a+4|0;g=c[f>>2]|0;c[f>>2]=d;c[a>>2]=g;return a|0}function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;if((d|0)!=(b|0)){f=b+8|0;e=c[f>>2]|0;c[a>>2]=b;c[f>>2]=0;b=a+4|0;a=c[b>>2]|0;c[a+4>>2]=d;c[d+8>>2]=a;c[b>>2]=e;c[e+4>>2]=0}return}function Qv(a){a=a|0;var b=0,d=0,e=0;d=Kv()|0;e=d+4|0;b=0;while(1){a=c[a>>2]|0;if(!a)break;Mv(d,b,c[a>>2]|0);b=c[e>>2]|0;a=a+4|0}return d|0}\n  function Bb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function Cb(){return l|0}function Db(a){a=a|0;l=a}function Eb(a,b){a=a|0;b=b|0;l=a;m=b}function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Gb(a){a=a|0;z=a}function Hb(){return z|0}function Ib(a){a=a|0;c[45884]=a;return 0}function Jb(){return c[45884]|0}function Kb(a,b){a=a|0;b=b|0;Oa(0,a|0,b|0)|0;return}function Lb(a){a=a|0;c[46369]=a;return}function Mb(a){a=a|0;if(a|0)c[46363]=a;return}function Nb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=ZC()|0;cD(h,10976);cD(h,17220);cD(h,17440);Ow(1)|0;Nw(18)|0;Tz(1);while(1){a=Gy(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){_C(h,a,d)|0;bD(h,a,b,f,g)|0;WB(h,a)|0}$x(a)|0;a=191979}l=i;return e|0}function Ob(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{uI(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)FM(f);break}case 4:case 5:case 6:{rI(f,e,d);Rb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Pb(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[45885]|0)){c[45885]=c[4652];c[45886]=57;c[45887]=19}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=183540;switch(c[a+64>>2]|0){case 2:{hI(a,d,a,0);break}case 3:{hI(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}case 6:case 5:case 4:{Qb(d);if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Qb(b){b=b|0;var d=0,e=0;d=c[45889]|0;if((d|0)!=(c[45888]|0)){e=c[c[45920]>>2]|0;if(!e){e=LM(b,0,96782,191979)|0;c[c[45920]>>2]=e;d=c[45889]|0}if(d>>>0>=(c[45890]|0)>>>0){Uw(183552,1)|0;d=c[45889]|0}a[d>>0]=0;d=c[45888]|0;c[45889]=d;rx(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[45920]|0)+4>>2]|0;d=c[45905]|0;if(d>>>0>=(c[45906]|0)>>>0){Uw(183616,1)|0;d=c[45905]|0}a[d>>0]=0;d=c[45904]|0;c[45905]=d;rx(b,e,d)|0}Ax(b,66649,c[(c[45920]|0)+8236>>2]|0,191979)|0;d=0;while(1){if((d|0)==8)break;Xw(183552+(d<<4)|0);d=d+1|0}D_(c[45920]|0);h[1]=1.0;h[5]=1.0;c[45921]=0;c[45925]=0;return}function Rb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=C_(8240)|0;c[45920]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=66665;break}case 5:{b[i+8232>>1]=12;g=66669;break}default:{g=xx(d,66649)|0;if((g|0?a[g>>0]|0:0)?(h=Sb(g)|0,(h&65535)>10):0){i=c[45920]|0;b[i+8232>>1]=h;break a}g=Sb(66661)|0;i=c[45920]|0;b[i+8232>>1]=g;g=66661}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=LM(d,0,96782,191979)|0;i=c[45920]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=LM(d,0,66673,191979)|0;c[(c[45920]|0)+4>>2]=g;i=LM(d,1,96782,191979)|0;c[(c[45920]|0)+8>>2]=i;i=LM(d,1,66673,191979)|0;c[(c[45920]|0)+12>>2]=i;i=LM(d,2,96782,191979)|0;g=c[45920]|0;c[g+16>>2]=i;if(!f)h=0;else{h=LM(d,2,66681,191979)|0;g=c[45920]|0}c[g+20>>2]=h;if(!e)h=0;else{h=LM(d,2,66689,191979)|0;g=c[45920]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=LM(d,2,66673,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=LM(d,2,66697,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=LM(d,2,66706,191979)|0;g=c[45920]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;Tw(183552+(g<<4)|0,1024,(c[45920]|0)+40+(g<<10)|0);g=g+1|0}return}function Sb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;Pw(0,66715,h)|0}a[g+f>>0]=0;i=(a2(g)|0)&65535;l=j;return i|0}function Tb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[45920]>>2]|0;b=c[45893]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[45920]|0)+4>>2]|0;b=c[45909]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[45922]=0;c[45926]=0;return}function Ub(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+8>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+12>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[45929]=0;c[45931]=0;return}function Vb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+16>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45897]|0;if((c[45896]|0)!=(b|0)){d=c[(c[45920]|0)+24>>2]|0;if(b>>>0>=(c[45898]|0)>>>0){Uw(183584,1)|0;b=c[45897]|0}a[b>>0]=0;b=c[45896]|0;c[45897]=b;rx(e,d,b)|0}b=c[45901]|0;if((c[45900]|0)!=(b|0)){d=c[(c[45920]|0)+20>>2]|0;if(b>>>0>=(c[45902]|0)>>>0){Uw(183600,1)|0;b=c[45901]|0}a[b>>0]=0;b=c[45900]|0;c[45901]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+28>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}b=c[45913]|0;if((c[45912]|0)!=(b|0)){d=c[(c[45920]|0)+36>>2]|0;if(b>>>0>=(c[45914]|0)>>>0){Uw(183648,1)|0;b=c[45913]|0}a[b>>0]=0;b=c[45912]|0;c[45913]=b;rx(e,d,b)|0}b=c[45917]|0;if((c[45916]|0)!=(b|0)){d=c[(c[45920]|0)+32>>2]|0;if(b>>>0>=(c[45918]|0)>>>0){Uw(183664,1)|0;b=c[45917]|0}a[b>>0]=0;b=c[45916]|0;c[45917]=b;rx(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[45930]=0;c[45932]=0;c[45923]=0;c[45924]=0;c[45927]=0;c[45928]=0;return}function Wb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11416+(o<<2)>>2]|0;Ww(p,66812)|0;g=f+4|0;dc(k,+h[(c[g>>2]|0)+16>>3]);Ww(p,k)|0;gc(d,191979,c[c[g>>2]>>2]|0);ac(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[45920]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11464+((i&65535)+-15<<2)>>2]&g,n=183684+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;Y0(k,66815,r)|0;Ww(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];Ww(p,66821)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];cc(p,j);c[s>>2]=q;Y0(k,99194,s)|0;Ww(p,k)|0;dc(k,+h[f+32>>3]);Ww(p,k)|0;gc(d,191979,c[f>>2]|0);l=t;return}function Xb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;$b(a);ac(a);if(!d){a=c[11416+(e<<2)>>2]|0;Ww(a,66809)|0}else{if((d|1|0)==3)ic(a,d,b,2);else jc(a);a=c[11416+(e<<2)>>2]|0;Ww(a,66806)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];cc(a,f);dc(g,+h[b+16>>3]-+h[b>>3]);Ww(a,g)|0;dc(g,+h[b+24>>3]-+h[b+8>>3]);Ww(a,g)|0;l=i;return}function Yb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$b(a);ac(a);if(!d)bc(a,112,b,c);else{if((d|1|0)==3)ic(a,d,b,c);else jc(a);bc(a,80,b,c)}return}function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$b(a);ac(a);if(!f)bc(a,66,b,c);else{if((f|1|0)==3)ic(a,f,b,c);else jc(a);bc(a,98,b,c)}return}function _b(a,b,c){a=a|0;b=b|0;c=c|0;$b(a);ac(a);bc(a,76,b,c);return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;Tw(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;Ww(m,66778)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];Y0(f,66792,i)|0;ec(f,0);Ww(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;gc(b,66797,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(b$(d,108075)|0)){d=i;continue a}break}case 98:{if(!(b$(d,108057)|0)){d=i;continue a}break}case 115:{if(!(b$(d,108062)|0)){d=i;continue a}break}default:{}}Ww(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}Ww(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;gc(b,66797,d);d=i}Xw(m)}l=n;return}function ac(a){a=a|0;fc((c[a+16>>2]|0)+16|0);gc(a,75730,190678);return}function bc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11416+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;Y0(i,66742,j)|0;Ww(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];cc(h,j);b=b+1|0}l=k;return}function cc(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,+h[b>>3]);Ww(a,d)|0;dc(d,+gI(+h[b+8>>3]));Ww(a,d)|0;l=c;return}function dc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;Y0(a,66747,d)|0;ec(a,1);l=c;return}function ec(b,c){b=b|0;c=c|0;var d=0,e=0;d=A$(b,46)|0;if(!d){if(c|0){d=b+(W_(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function fc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;Y0(190678,75610,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;Y0(190678,66760,i)|0}l=j;return}function gc(a,b,d){a=a|0;b=b|0;d=d|0;hc(c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=W_(e)|0;c[h>>2]=d;c[h+4>>2]=i;Y0(g,66753,h)|0;Ww(b,g)|0;Ww(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function ic(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[45920]|0)+8232>>1]|0)<14)jc(b);else{Tw(w,1024,x+96|0);v=(d|0)==2;if(v){aN(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];cc(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t)}else{aN(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];cc(w,t);kc(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t);kc(w,q)}Ww(w,66803)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){lc(w,j,f);lc(w,+g[d>>2],u+96|0)}else{lc(w,0.0,f);lc(w,1.0,u+96|0)}Yw(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;gc(b,66800,v);Xw(w)}l=x;return}function jc(a){a=a|0;fc((c[a+16>>2]|0)+56|0);gc(a,66800,190678);return}function kc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,b);Ww(a,d)|0;l=c;return}function lc(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;Y0(e,92597,f)|0;ec(e,1);fc(c);hc(a,e,190678);l=d;return}function mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;Ww(g,66909)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];cc(g,i);dc(f,+h[d+16>>3]-+h[d>>3]);Ww(g,f)|0;dc(f,+h[d+24>>3]-+h[d+8>>3]);Ww(g,f)|0;gc(a,191979,c[b+8>>2]|0);l=e;return}function nc(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=lC(c[a>>2]|0)|0;$C(b,c[(c[a+16>>2]|0)+8>>2]|0,67693,0)|0;mC(b);break}case 1:{uI(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function oc(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[45933]|0)){c[45933]=c[4652];c[45934]=57;c[45935]=19}c[(c[e+64>>2]|0)+8>>2]=183732;pc(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;qc(e,b,1,d);l=f;return}function pc(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;pc(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Cw(11836,c[4555]|0)|0;Fz(a,1,137978,12,0);Fz(a,2,137978,12,0);Fz(a,0,137978,-12,0);f=rc(a,0,m)|0;j=Sy(a)|0;i=0;g=0;while(1){if(!j)break;if(!(z$(ry(j)|0,104980,7)|0)){k=g;g=sc(m,ry(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(yz(j,137978,0)|0)+8>>2]=g;h=Ex(a,j)|0;g=i;while(1){if(!h)break;c[(yz(h,137978,0)|0)+8>>2]=g;h=Gx(a,h)|0;g=g+1|0}j=Ty(a,j)|0;i=g;g=k}yw(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;tc(b,m);$B(b,94292)|0;uc(a,b,d,e);vc(a,b,e);$B(b,94263)|0;tc(b,c[e>>2]|0);if(n){c[o>>2]=f;fC(b,66912,o)}else{c[p>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66932,p)}xc(a,b,d,wc(a,b,d,e)|0,e);yc(a,b,d,e);$B(b,150517)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;tc(b,p);if(n)$B(b,107982)|0;else $B(b,75253)|0;l=q;return}function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((fz(a)|0)!=(a|0)){e=b+1|0;c[(yz(a,137978,0)|0)+8>>2]=b;if(!(z$(ry(a)|0,104980,7)|0)){b=ry(a)|0;Kc(d,b,c[(yz(a,137978,0)|0)+8>>2]|0);b=e}else b=e}e=wA(a)|0;while(1){if(!e)break;a=rc(e,b,d)|0;e=xA(e)|0;b=a}return b|0}function sc(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function tc(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;$B(a,90480)|0;b=b+-1|0}return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=ry(a)|0;tc(b,c[e>>2]|0);c[i>>2]=Bc(j,e)|0;fC(b,67020,i);if(d|0){$B(b,94263)|0;tc(b,c[e>>2]|0);j=(ey(a)|0)!=0;c[f>>2]=j?104626:134226;fC(b,67634,f);tc(b,c[e>>2]|0);j=(gy(a)|0)!=0;c[g>>2]=j?104626:134226;fC(b,67651,g)}l=h;return}function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=fz(b)|0;j=c[b>>2]&3;f=sx(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=yx(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(b$(g,105198)|0)break}$B(d,94263)|0;tc(d,c[e>>2]|0);c[m>>2]=Bc(c[h>>2]|0,e)|0;fC(d,67070,m);if(a[k>>0]|0?Dc(c[h>>2]|0)|0:0){Ec(yx(b,f)|0,d,e);break}c[n>>2]=Bc(yx(b,f)|0,e)|0;fC(d,67077,n)}while(0);f=sx(i,j,f)|0}}while(0);l=o;return}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=wA(a)|0;if(f){$B(b,94263)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(b,g);g=(d|0)!=0;if(g){$B(b,66994)|0;a=0;d=f}else{$B(b,67054)|0;tc(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else $B(b,94263)|0;if(g)Cc(d,b,e);else{c[h>>2]=c[(yz(d,137978,0)|0)+8>>2];fC(b,134313,h)}d=xA(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0;a=1}}else a=0;l=i;return a|0}function xc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Sy(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}}else{$B(b,94263)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,66994)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,67008)|0;tc(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(z$(ry(g)|0,104980,7)|0){do if(e)if(h){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else e=1;while(0);Ac(g,b,d,f)}g=Ty(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}return}function yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Sy(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Ex(a,f)|0)break;f=Ty(a,f)|0}$B(b,94263)|0;i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,66944)|0;i=(d|0)!=0;if(i)g=0;else{tc(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Ex(a,f)|0;while(1){if(!h)break;do if(g)if(i){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else g=1;while(0);zc(h,b,d,e);h=Gx(a,h)|0}f=Ty(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0}while(0);return}function zc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=c[(yz(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66970,g);tc(b,c[e>>2]|0);c[h>>2]=c[(yz(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66983,h);vc(a,b,e);$B(b,150517)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;tc(b,i);$B(b,75253)|0}l=j;return}function Ac(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;tc(b,h);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=Bc(ry(a)|0,e)|0;fC(b,67020,g);vc(a,b,e);$B(b,150517)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;tc(b,h);$B(b,75253)|0}l=i;return}function Bc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=RM(b)|0;if(!(c[45936]|0)){Tw(183744,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{Ww(183744,67033)|0;break}case 92:{Ww(183744,93534)|0;break}case 47:{Ww(183744,67036)|0;break}case 8:{Ww(183744,67039)|0;break}case 12:{Ww(183744,67042)|0;break}case 10:{Ww(183744,67045)|0;break}case 13:{Ww(183744,67048)|0;break}case 9:{Ww(183744,67051)|0;break}default:{d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}c[45937]=d+1;a[d>>0]=f}}e=e+1|0}d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}a[d>>0]=0;d=c[45936]|0;c[45937]=d;if(a[g>>0]|0)D_(b);return d|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;qc(a,b,0,c);a=wA(a)|0;while(1){if(!a)break;$B(b,94263)|0;Cc(a,b,c);a=xA(a)|0}return}function Dc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(b$(c,67591)|0)){b=1;break a}break}case 2:{if(!(b$(c,67597)|0)){b=1;break a}break}case 1:{if(!(b$(c,67604)|0)){b=1;break a}return (b$(c,67618)|0)==0|0}case 4:{if(!(b$(c,67611)|0)){b=1;break a}b=(b$(c,67626)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=oE(b)|0;if(!h){c[f>>2]=b;Pw(0,67082,f)|0;break}$B(d,150517)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(d,g);$B(d,67109)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else $B(d,94263)|0;Fc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;$B(d,150517)|0;tc(d,c[e>>2]|0);$B(d,94258)|0;pE(h)}while(0);l=i;return}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;tc(b,e);$B(b,94292)|0;tc(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;fC(b,67112,f);tc(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;fC(b,67125,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;fC(b,67112,z);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;fC(b,67112,i);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 6:{fC(b,67160,A+56|0);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 7:{fC(b,67172,A+64|0);tc(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;fC(b,67184,j);tc(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;fC(b,67206,k);tc(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];fC(b,67222,m);tc(b,c[d>>2]|0);c[n>>2]=Bc(c[a+40>>2]|0,d)|0;fC(b,67239,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;fC(b,67112,o);tc(b,c[d>>2]|0);fC(b,67253,A+120|0);tc(b,c[d>>2]|0);c[p>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67270,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;fC(b,67112,q);tc(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{fC(b,67253,A+144|0);tc(b,c[d>>2]|0);c[r>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67270,r);break a}case 1:{fC(b,67285,A+160|0);tc(b,c[d>>2]|0);Hc(b,a+16|0,d);break a}default:{fC(b,67304,A+168|0);tc(b,c[d>>2]|0);Ic(b,a+16|0,d);break a}}}case 10:{fC(b,67323,s);tc(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];fC(b,67335,t);tc(b,c[d>>2]|0);c[u>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67351,u);break}case 11:{fC(b,67365,v);tc(b,c[d>>2]|0);c[w>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67377,w);break}case 15:{fC(b,67392,x);tc(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];fC(b,67404,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;tc(b,z);$B(b,75253)|0;l=A;return}function Gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;fC(a,67565,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)fC(a,97973,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;fC(a,67577,g);b=b+1|0}fC(a,67518,i);l=j;return}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;fC(a,67521,i);tc(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;fC(a,67543,f);tc(a,c[d>>2]|0);Jc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;fC(a,67420,j);tc(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,67448,f);tc(a,c[d>>2]|0);Jc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function Jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;fC(a,67476,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)fC(a,97973,i);o=+g[d+(f<<3)>>2];n=Bc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;fC(a,67487,j);f=f+1|0}fC(a,67518,k);l=m;return}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=nb[c[a>>2]&63](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;Pw(0,67664,f)|0}}else{f=E_(1,16)|0;c[f+8>>2]=n1(b)|0;c[f+12>>2]=d;nb[c[a>>2]&63](a,f,1)|0}l=g;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function Mc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function Nc(a){a=a|0;$B(a,68500)|0;return}function Oc(a){a=a|0;c[45940]=2;return}function Pc(a){a=a|0;c[45940]=1;return}function Qc(a){a=a|0;c[45940]=2;return}function Rc(a){a=a|0;c[45940]=0;return}function Sc(a){a=a|0;c[45940]=2;return}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[45940]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((W_(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=bd(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;fC(b,68445,o);l=p;return}function Uc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(ad(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}default:qa(135312,67785,163,67816)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45940]|0;_c(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function Wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45940]|0;_c(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);$c(a,b,d,1);l=f;return}function Xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[45940]|0;if((d|0)<=3)qa(67778,67785,360,67805);t=C_((d*140|0)+140|0)|0;_c(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45940]|0;_c(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);$c(a,b,d,0);l=e;return}function Zc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function _c(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function $c(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function ad(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45941]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[187600+(g<<1)>>1]|0)-d|0;n=(b[188112+(g<<1)>>1]|0)-e|0;j=(b[188624+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45941]=k+1;if((k|0)==256)g=i;else{b[187600+(g<<1)>>1]=d;b[188112+(g<<1)>>1]=e;b[188624+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function bd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45942]|0;if(!d){c[45943]=64;d=C_(64)|0;c[45942]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45943]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45943]=d;d=F_(c[45942]|0,d)|0;c[45942]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45942]|0}function cd(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{$B(b,68116)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,150517)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,99578)|0;$B(b,qH(ry(c[e+8>>2]|0)|0)|0)|0;$B(b,150517)|0}break}case 3:{f=qH(ry(c[e+8>>2]|0)|0)|0;$B(b,68139)|0;$B(b,f)|0;$B(b,68149)|0;$B(b,f)|0;$B(b,68104)|0;break}default:{}}return}function dd(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);$B(a,68108)|0;break}default:{}}return}function ed(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;fd(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function fd(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[45944]|0)<(f|0)){c[45944]=m;o=F_(c[45945]|0,m<<3)|0;c[45945]=o}else o=c[45945]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;fC(b,67850,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;fC(b,67871,v);break a}case 2:{c[q>>2]=g;fC(b,67891,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[45945]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;fC(b,67899,w);m=m+1|0}$B(b,150517)|0;break a}default:qa(135312,67906,63,67926)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;fC(b,67943,r);break}else qa(135312,67906,75,67926)}if((m&-2|0)==2){switch(d|0){case 1:{$B(b,67976)|0;break}case 0:{$B(b,67997)|0;break}case 2:{$B(b,68016)|0;break}default:qa(135312,67906,91,67926)}if(k|0?a[k>>0]|0:0){$B(b,73496)|0;$B(b,tH(k)|0)|0;$B(b,95669)|0}if(e?a[g>>0]|0:0){$B(b,68035)|0;$B(b,tH(g)|0)|0;$B(b,95669)|0}if(j|0?a[j>>0]|0:0){$B(b,74455)|0;$B(b,qH(j)|0)|0;$B(b,95669)|0}if(i|0?a[i>>0]|0:0){$B(b,68043)|0;$B(b,qH(i)|0)|0;$B(b,95669)|0}$B(b,68052)|0;$B(b,68060)|0;b:do switch(d|0){case 1:{f=c[45945]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;fC(b,68070,s);break}case 0:{v=c[45945]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;fC(b,68079,t);break}case 2:{w=c[45945]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;fC(b,68091,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[45945]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;fC(b,68097,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){$B(b,73320)|0;break}else{$B(b,68104)|0;break}}}while(0);l=y;return}function gd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function hd(a){a=a|0;$B(a,68500)|0;return}function id(a){a=a|0;c[45946]=2;return}function jd(a){a=a|0;c[45946]=1;return}function kd(a){a=a|0;c[45946]=2;return}function ld(a){a=a|0;c[45946]=0;return}function md(a){a=a|0;c[45946]=2;return}function nd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[45946]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=xd(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;fC(b,68445,m);l=n;return}function od(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(wd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}case 0:{f=0;k=10;break}default:qa(135312,68409,168,68428)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45946]|0;ud(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45946]|0;ud(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);vd(a,b,d,1);l=f;return}function rd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[45946]|0;t=C_((d*140|0)+140|0)|0;ud(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45946]|0;ud(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);vd(a,b,d,0);l=e;return}function td(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function wd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45947]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[189136+(g<<1)>>1]|0)-d|0;n=(b[189648+(g<<1)>>1]|0)-e|0;j=(b[190160+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45947]=k+1;if((k|0)==256)g=i;else{b[189136+(g<<1)>>1]=d;b[189648+(g<<1)>>1]=e;b[190160+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function xd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45948]|0;if(!d){c[45949]=64;d=C_(64)|0;c[45948]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45949]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45949]=d;d=F_(c[45948]|0,d)|0;c[45948]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45948]|0}function yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;$B(a,73228)|0;if((c[a+64>>2]|0)==2)$B(a,73243)|0;else $B(a,150517)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;fC(a,73254,b);l=d;return}function zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;$B(a,73182)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];fC(a,73193,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;fC(a,69562,f)}$B(a,73208)|0;$B(a,73221)|0;l=g;return}function Ad(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[190688]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=ry(c[h>>2]|0)|0;fC(b,69493,i);d=b+64|0;if((c[d>>2]|0)==2)$B(b,69526)|0;else $B(b,69508)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;fC(b,69562,f);break}else{$B(b,69538)|0;break}while(0);$B(b,69592)|0;jJ(b,c[(c[e>>2]|0)+24>>2]|0,13e3);lJ(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;jJ(b,0,i)}}c[45950]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[190688]|0)){$B(b,69612)|0;a[190688]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=mJ(d,c[45950]|0)|0;fC(b,69625,j)}l=k;return}function Bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;fC(a,69477,f);l=b;return}function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;fC(a,69104,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;fC(a,69121,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?69155:69165;fC(a,69174,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;fC(a,69199,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;fC(a,69238,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;fC(a,69258,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;fC(a,69298,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;ub[t&63](69341,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;fC(a,69436,r)}l=s;return}function Dd(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){$B(a,69028)|0;jJ(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}$B(a,69045)|0;$B(a,69072)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];fC(a,69087,d);l=e;return}function Ed(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,69021,d);$B(a,69014)|0;l=b;return}function Fd(a){a=a|0;$B(a,84457)|0;return}function Gd(a){a=a|0;$B(a,69014)|0;return}function Hd(a){a=a|0;$B(a,84457)|0;return}function Id(a){a=a|0;$B(a,69014)|0;return}function Jd(a){a=a|0;$B(a,84457)|0;return}function Kd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){$B(a,68910)|0;jC(a,c[g>>2]|0,2);$B(a,68921)|0;c[d>>2]=mJ(b,c[45950]|0)|0;fC(a,68925,d)}l=e;return}function Ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Sd(b,f+16|0);i=e+4|0;gC(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];fC(b,68869,j);i=mJ(c[e>>2]|0,c[45950]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];iC(b,j);$B(b,68884)|0;gC(b,+h[f>>3]);c[k>>2]=i;fC(b,68893,k)}l=m;return}function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Sd(a,e+56|0);jC(a,f,2);$B(a,68827)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[b>>2]|0)+16|0);jC(a,f,2);$B(a,68847)|0}l=g;return}function Nd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Sd(a,f+56|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68793)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[g>>2]|0)+16|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68809)|0}l=j;return}function Od(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68793)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68775)|0}l=k;return}function Pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[e>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];iC(a,f);$B(a,68766)|0;e=e+1|0}$B(a,68775)|0}l=g;return}function Qd(a,b){a=a|0;b=b|0;$B(a,68745)|0;$B(a,b)|0;$B(a,150517)|0;return}function Rd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[k>>2]=e;c[k+4>>2]=b;fC(a,68662,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[m>>2]=e;c[m+4>>2]=b;fC(a,68678,m)}l=n;return}function Sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=108412;break}case 2:{d=108399;break}case 3:{d=108368;break}default:d=68714}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;fC(a,68721,e)}l=f;return}function Td(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;gC(b,+h[i+152>>3]);$B(b,68695)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(b$(f,108062)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;fC(b,68710,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(b$(f,131253)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;fC(b,93588,k);d=i}l=m;return}function Ud(b){b=b|0;var d=0;$B(b,74734)|0;d=xx(c[(c[b>>2]|0)+168>>2]|0,74790)|0;if(d|0?a[d>>0]|0:0){$B(b,74801)|0;$B(b,d)|0;$B(b,74825)|0}$B(b,74846)|0;$B(b,74894)|0;$B(b,74948)|0;d=b+12|0;$B(b,qH(c[c[c[d>>2]>>2]>>2]|0)|0)|0;$B(b,78077)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;$B(b,78087)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;$B(b,75330)|0;$B(b,75354)|0;return}function Vd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;$B(b,74569)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,74574,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;fC(b,74590,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;fC(b,74623,g);$B(b,74654)|0;$B(b,74690)|0;$B(b,76284)|0;l=i;return}function Wd(a){a=a|0;$B(a,74561)|0;return}function Xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;se(a,b,0,98484,c[(c[a+16>>2]|0)+8>>2]|0);$B(a,76284)|0;return}function Yd(a){a=a|0;$B(a,74409)|0;return}function Zd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;se(b,c[g+212>>2]|0,0,108412,c[d>>2]|0);$B(b,74513)|0;gC(b,+h[b+488>>3]);$B(b,99578)|0;gC(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);fC(b,74532,f);gC(b,+h[b+504>>3]);$B(b,99578)|0;gC(b,-+h[b+512>>3]);$B(b,74556)|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,74465)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0;$B(b,74473)|0}l=e;return}function _d(a){a=a|0;$B(a,74409)|0;return}function $d(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,104980,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[b>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ae(a){a=a|0;$B(a,74409)|0;return}function be(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;se(a,c[d+212>>2]|0,b,108399,c[e>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[e>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ce(a){a=a|0;$B(a,74409)|0;return}function de(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,108368,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;b=pH(99069,c[b>>2]|0)|0;$B(a,qH(b)|0)|0;D_(b);$B(a,74473)|0;return}function ee(a){a=a|0;$B(a,74409)|0;return}function fe(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$B(b,74415)|0;if(f|0){$B(b,74418)|0;$B(b,qH(f)|0)|0;$B(b,95669)|0}$B(b,74308)|0;$B(b,76245)|0;if(c|0?a[c>>0]|0:0){$B(b,74426)|0;$B(b,c)|0;$B(b,95669)|0}if(d|0?a[d>>0]|0:0){$B(b,74440)|0;$B(b,rH(d,1)|0)|0;$B(b,95669)|0}if(e|0?a[e>>0]|0:0){$B(b,74455)|0;$B(b,qH(e)|0)|0;$B(b,95669)|0}$B(b,76284)|0;return}function ge(a){a=a|0;$B(a,76239)|0;$B(a,74409)|0;return}function he(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;$B(e,73940)|0;switch(a[g+48>>0]|0){case 108:{$B(e,73946)|0;break}case 114:{$B(e,73967)|0;break}default:$B(e,73986)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){$B(e,74008)|0;gC(e,+h[f>>3]);$B(e,74013)|0;gC(e,-G);$B(e,95669)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];fC(e,74019,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;fC(e,74036,p)}$B(e,95669)|0;if(f|0){c[r>>2]=f;fC(e,74040,r)}if(k|0){c[s>>2]=k;fC(e,74058,s)}if(!j)j=0;else{c[q>>2]=j;fC(e,74077,q)}}else{c[i>>2]=c[f>>2];fC(e,74094,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))fC(e,74112,t);if(!((j|0)!=0|(z&2|0)==0))fC(e,74132,u);if(z&100|0){fC(e,74153,v);if(!(z&4))f=0;else{fC(e,102960,w);f=1}if(z&64){c[y>>2]=f|0?97973:191979;fC(e,74172,y);f=1}if(z&32|0){c[A>>2]=f|0?97973:191979;fC(e,74183,A)}fC(e,95669,B)}if(z&8|0)fC(e,74198,C);if(z&16|0)fC(e,74222,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];fC(e,74244,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(O$(f,134232)|0){c[J>>2]=f;fC(e,74262,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;fC(e,74273,F);break}default:qa(135312,73454,486,74295)}$B(e,74308)|0;if(b[H>>1]&512){c[K>>2]=qH(c[I+212>>2]|0)|0;fC(e,74310,K);$B(e,74359)|0;gC(e,-G);$B(e,74377)|0}$B(e,rH(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)fC(e,74380,L);$B(e,74400)|0;l=M;return}function ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=pe(a,b,2)|0;break}case 3:{d=qe(a)|0;break}default:d=0}$B(a,73904)|0;ne(a,c,d);$B(a,73913)|0;gC(a,+h[b>>3]);$B(a,73919)|0;c=b+8|0;gC(a,-+h[c>>3]);$B(a,73926)|0;gC(a,+h[b+16>>3]-+h[b>>3]);$B(a,73933)|0;gC(a,+h[b+24>>3]-+h[c>>3]);$B(a,73320)|0;return}function je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=pe(a,b,c)|0;break}case 3:{e=qe(a)|0;break}default:e=0}$B(a,73895)|0;ne(a,d,e);$B(a,73310)|0;e=0;while(1){if((e|0)>=(c|0))break;gC(a,+h[b+(e<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(e<<4)+8>>3]);$B(a,99578)|0;e=e+1|0}gC(a,+h[b>>3]);$B(a,97973)|0;gC(a,-+h[b+8>>3]);$B(a,73320)|0;return}function ke(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=pe(a,d,e)|0;break}case 3:{f=qe(a)|0;break}default:f=0}$B(a,73490)|0;if(b[g+260>>1]&512){$B(a,73496)|0;$B(a,qH(c[g+212>>2]|0)|0)|0;$B(a,73502)|0}ne(a,h,f);$B(a,73507)|0;re(a,d,e);$B(a,73320)|0;return}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;$B(a,73300)|0;ne(a,0,0);$B(a,73310)|0;d=0;while(1){if((d|0)>=(c|0))break;gC(a,+h[b+(d<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(d<<4)+8>>3]);$B(a,99578)|0;d=d+1|0}$B(a,73320)|0;return}function me(a,b){a=a|0;b=b|0;$B(a,73294)|0;$B(a,qH(b)|0)|0;$B(a,75354)|0;return}function ne(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;$B(b,73325)|0;a:do switch(d|0){case 2:{c[f>>2]=e;fC(b,73333,f);break}case 3:{c[g>>2]=e;fC(b,73344,g);break}case 0:{$B(b,132627)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,73355,j)}}}while(0);$B(b,73374)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);d=m+152|0;if(+h[d>>3]!=1.0){$B(b,73385)|0;gC(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=73425;fC(b,73402,o);break}case 2:{c[n>>2]=73429;fC(b,73402,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;fC(b,73433,p)}while(0);$B(b,95669)|0;l=q;return}function oe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,134297)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,73454,117,73474)}while(0);l=g;return}function pe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[45952]|0;c[45952]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;aN(d,k,e,f,0);c[o>>2]=q;fC(b,73727,o);$B(b,73792)|0;gC(b,+h[k>>3]);$B(b,73797)|0;gC(b,+h[k+8>>3]);$B(b,73804)|0;gC(b,+h[k+16>>3]);$B(b,73811)|0;gC(b,+h[k+24>>3]);$B(b,73818)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;fC(b,73823,i)}else $B(b,73599)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;fC(b,96586,m)}else s=7;while(0);if((s|0)==7)$B(b,73650)|0;$B(b,73653)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;fC(b,73823,n)}else $B(b,73659)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;fC(b,96586,r)}else s=14;while(0);if((s|0)==14)$B(b,73650)|0;$B(b,73863)|0;l=t;return q|0}function qe(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[45951]|0;c[45951]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;fC(b,73515,k);$B(b,73599)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,96586,j)}else p=6;while(0);if((p|0)==6)$B(b,73650)|0;$B(b,73653)|0;$B(b,73659)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;fC(b,96586,o)}else p=10;while(0);if((p|0)==10)$B(b,73650)|0;$B(b,73695)|0;l=q;return n|0}function re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;fC(a,73512,g);gC(a,+h[b+(f<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function se(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;$B(b,74483)|0;$B(b,qH(d)|0)|0;if(e|0){c[h>>2]=qH(e)|0;fC(b,74491,h)}c[i>>2]=f;fC(b,74495,i);d=xx(g,74507)|0;if(d|0?a[d>>0]|0:0){$B(b,99578)|0;$B(b,qH(d)|0)|0}$B(b,95669)|0;l=j;return}function te(a){a=a|0;var b=0;$B(a,75314)|0;b=a+12|0;$B(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,75330)|0;return}function ue(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;$B(b,75291)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,De(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,75302,e);c[45953]=0;l=f;return}function ve(a){a=a|0;c[45953]=1;return}function we(a){a=a|0;c[45953]=-1;return}function xe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){Ee(b);$B(b,75230)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];iC(b,i);$B(b,75244)|0;$B(b,c[e>>2]|0)|0;$B(b,75253)|0;$B(b,75051)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));Fe(b,i);$B(b,75255)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;$B(b,95669)|0;$B(b,k)|0;$B(b,95669)|0;c[m>>2]=j;fC(b,75264,m);switch(a[e+48>>0]|0){case 108:{$B(b,75269)|0;break}case 114:{$B(b,75280)|0;break}default:{}}Ge(b);$B(b,150517)|0}l=n;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;Ee(a);$B(a,75216)|0;jC(a,b,2);$B(a,75051)|0;do if(!d)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){Ee(a);$B(a,75188)|0;jC(a,b,d);$B(a,75051)|0;do if(!e)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Fe(a,i);$B(a,75162)|0;gC(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){$B(a,75059)|0;e=c[k>>2]|0}if((e|0)==2)$B(a,75068)|0;$B(a,75171)|0;Ge(a);$B(a,150517)|0}l=m;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));Fe(a,g);b=c[h>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[h>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=i;return}function Ce(a,b){a=a|0;b=b|0;$B(a,75034)|0;$B(a,De(b)|0)|0;$B(a,150517)|0;return}function De(a){a=a|0;return a|0}function Ee(b){b=b|0;if(!(a[b+144>>0]|0))$B(b,75159)|0;else $B(b,c[b+148>>2]|0)|0;return}function Fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,94227)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75077,49,75141)}while(0);l=g;return}function Ge(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=108399;e=f+8|0;break}case 10:{b=0;d=108399;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=108368;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=108368;e=f+8|0;break}case 0:{b=1;d=108412;e=f+8|0;break}case 4:{b=0;d=75113;e=f+8|0;break}case 1:{b=1;d=108412;e=f+8|0;break}case 5:{b=0;d=108412;e=f+8|0;break}default:qa(135312,75077,106,75096)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;fC(a,75125,g);l=h;return}function He(a){a=a|0;var b=0;$B(a,78049)|0;$B(a,78057)|0;b=a+12|0;$B(a,Se(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,78090)|0;return}function Ie(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[45957]=~~(+h[b+232>>3]-+h[b+216>>3]);c[45956]=~~(+h[b+224>>3]-+h[b+208>>3]);$B(b,76736)|0;$B(b,76743)|0;d=ry(c[d+8>>2]|0)|0;if(a[d>>0]|0){$B(b,76812)|0;$B(b,Se(d)|0)|0;$B(b,76820)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,76829,e);$B(b,76849)|0;$B(b,76884)|0;$B(b,76912)|0;$B(b,76918)|0;$B(b,76961)|0;$B(b,77002)|0;$B(b,77021)|0;$B(b,77038)|0;$B(b,77086)|0;$B(b,77139)|0;$B(b,77215)|0;$B(b,77291)|0;$B(b,77300)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77614)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77627)|0;$B(b,77635)|0;$B(b,77641)|0;$B(b,77655)|0;$B(b,77663)|0;$B(b,77696)|0;e=(c[45957]|0)+10|0;c[f>>2]=c[45956];c[f+4>>2]=e;fC(b,77773,f);$B(b,77803)|0;$B(b,77812)|0;$B(b,77870)|0;$B(b,77880)|0;$B(b,77945)|0;f=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=f;fC(b,77982,g);g=c[45957]|0;c[i>>2]=c[45956];c[i+4>>2]=g;fC(b,78010,i);l=j;return}function Je(a){a=a|0;$B(a,76287)|0;$B(a,76299)|0;$B(a,76307)|0;$B(a,76370)|0;$B(a,76299)|0;$B(a,76415)|0;$B(a,76464)|0;$B(a,76518)|0;$B(a,76299)|0;$B(a,76618)|0;$B(a,76667)|0;$B(a,76299)|0;$B(a,76719)|0;return}function Ke(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;$B(b,76245)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=Se(d)|0;fC(b,76248,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=Se(e)|0;fC(b,76259,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=Se(f)|0;fC(b,76271,i)}$B(b,76284)|0;l=j;return}function Le(a){a=a|0;$B(a,76239)|0;return}function Me(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i<k){i=k*1.1+1.0;h[g>>3]=i}B=j+-8.0;k=+((c[45957]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);fC(b,75901,n);h[o>>3]=B;h[o+8>>3]=k;fC(b,75838,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;fC(b,75862,p);$B(b,75936)|0;$B(b,75970)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];fC(b,76060,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;fC(b,76079,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;fC(b,76096,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;fC(b,76114,v)}}else{c[q>>2]=c[g>>2];fC(b,76060,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];fC(b,76130,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(O$(g,134232)|0){c[z>>2]=g;fC(b,76150,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;fC(b,76160,y);break}default:qa(135312,75624,438,76181)}$B(b,76194)|0;$B(b,Se(c[f>>2]|0)|0)|0;$B(b,76205)|0;$B(b,76228)|0;l=A;return}function Ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;$B(a,75802)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[45957]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;fC(a,75838,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;fC(a,75862,f);We(a,d);$B(a,75684)|0;Ue(a);$B(a,75890)|0;l=e;return}function Oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;$B(a,75407)|0;n=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=n;fC(a,75660,g);We(a,e);$B(a,75684)|0;Ue(a);$B(a,75687)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){$B(a,75714)|0;h[j>>3]=i;h[j+8>>3]=f;fC(a,75780,j);$B(a,75791)|0}else{h[k>>3]=i;h[k+8>>3]=f;fC(a,75780,k)}if((e|0)==(g|0))$B(a,75794)|0;e=e+1|0}$B(a,75523)|0;l=m;return}function Pe(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;$B(a,75407)|0;h=c[45957]|0;c[e>>2]=c[45956];c[e+4>>2]=h;fC(a,75660,e);We(a,g);$B(a,75684)|0;Ue(a);$B(a,75687)|0;Xe(a,b,d);$B(a,75700)|0;l=f;return}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;$B(a,75407)|0;g=c[45957]|0;c[f>>2]=c[45956];c[f+4>>2]=g;fC(a,75444,f);$B(a,75484)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){$B(a,75496)|0;m=+((c[45957]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;fC(a,75500,i);$B(a,75511)|0}else{m=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;fC(a,75500,j)}if((e|0)==(f|0))$B(a,75515)|0;e=e+1|0}$B(a,75519)|0;Ue(a);$B(a,75523)|0;l=k;return}function Re(a,b){a=a|0;b=b|0;$B(a,75342)|0;$B(a,Se(b)|0)|0;$B(a,75354)|0;return}function Se(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[45954]|0;if(!d){c[45955]=64;d=vH(64)|0;c[45954]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[45955]|0;if((q|0)>(b+-8|0)){d=b<<1;c[45955]=d;d=xH(c[45954]|0,d)|0;c[45954]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=99127;t=26;break b}case 62:{e=4;b=99110;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=99121;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=99090;t=26;break b}case 39:{e=5;b=99115;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=A3(j|0,f|0,6)|0;g=s3(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Te(p)|0)==0;e=b?5:1;b=b?99104:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?99097:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=x3(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=w3(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){E1(75360,46,1,c[15686]|0)|0;Sa(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[45954]|0}return 0}function Te(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Ue(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;$B(a,75535)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ve(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;fC(a,75553,j)}switch(c[i+144>>2]|0){case 1:{$B(a,75570)|0;break}case 2:{$B(a,75588)|0;break}default:{}}$B(a,75605)|0;l=k;return}function Ve(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,132627)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75624,94,75644)}while(0);l=g;return}function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)$B(a,75763)|0;else{d=c[a+16>>2]|0;$B(a,75733)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ve(a,f);$B(a,75760)|0}l=g;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=75714;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[45957]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;fC(a,75717,g);e=(f|0)==0?75730:191979;f=f+1|0}$B(a,95669)|0;l=i;return}function Ye(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;$B(a,80347)|0;$B(a,80362)|0;$B(a,80401)|0;$B(a,80450)|0;c[e>>2]=134232;c[e+4>>2]=80538;fC(a,80519,e);c[d>>2]=134116;c[d+4>>2]=80544;fC(a,80519,d);l=b;return}function Ze(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79300,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;fC(a,79322,d);$B(a,79469)|0;$B(a,80299)|0;l=b;return}function _e(a){a=a|0;$B(a,79283)|0;return}function $e(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;fC(a,79253,h);g[45958]=+(O(d,-10)|0);l=f;return}function af(a){a=a|0;$B(a,79236)|0;return}function bf(a){a=a|0;$B(a,79218)|0;return}function cf(a){a=a|0;$B(a,79202)|0;return}function df(a){a=a|0;$B(a,79181)|0;g[45958]=+g[45958]+-2.0;return}function ef(a){a=a|0;$B(a,79162)|0;return}function ff(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79140,d);l=b;return}function gf(a){a=a|0;$B(a,79124)|0;return}function hf(a){a=a|0;$B(a,79106)|0;g[45958]=+g[45958]+-5.0;return}function jf(a){a=a|0;$B(a,79090)|0;g[45958]=+g[45958]+5.0;return}function kf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;fC(b,78936,n);g[45959]=+g[45958]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=qf(b,78988,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=qf(b,78205,m)|0;f=+g[45959];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=qf(b,78237,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=rf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=79075;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=qf(b,79e3,q)|0;$B(b,q)|0;D_(q);D_(i);D_(o);D_(d);D_(n);l=r;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;$B(a,78813)|0;g[45959]=+g[45958]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=qf(a,78173,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=qf(a,78205,e)|0;A=+g[45959];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=qf(a,78237,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=rf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=qf(a,78828,n)|0;$B(a,w)|0;D_(b);D_(e);D_(f);D_(v);D_(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=qf(a,78173,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=qf(a,78205,r)|0;A=+g[45959];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=qf(a,78237,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=rf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=qf(a,78874,y)|0;$B(a,y)|0;D_(f);D_(e);D_(b);D_(x);D_(y)}l=z;return}function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;$B(a,78678)|0;g[45959]=+g[45958]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=qf(a,78173,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=qf(a,78205,m)|0;L=+g[45959]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=qf(a,78237,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,0.0)|0;c[f>>2]=78300;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=qf(a,78269,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=qf(a,78314,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=qf(a,78343,r)|0;D_(M);D_(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=qf(a,78314,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=qf(a,78343,t)|0;D_(x);D_(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=qf(a,78693,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=qf(a,78398,v)|0;D_(x);$B(a,M)|0;D_(k);D_(m);D_(n);D_(j);D_(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=qf(a,78173,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=qf(a,78205,z)|0;N=+g[45959]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=qf(a,78237,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,.25)|0;c[D>>2]=d;i=0;f=qf(a,78738,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=qf(a,78753,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=qf(a,78775,H)|0;D_(D);D_(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=qf(a,78785,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=qf(a,78398,J)|0;D_(I);$B(a,M)|0;D_(n);D_(m);D_(k);D_(j);D_(M)}l=K;return}function nf(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;$B(a,78605)|0;g[45959]=+g[45958]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=qf(a,78173,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=qf(a,78205,s)|0;C=+g[45959]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=qf(a,78237,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=rf(a,e,0.0)|0;c[k>>2]=78619;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=qf(a,78269,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=qf(a,78314,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=qf(a,78343,w)|0;D_(k);D_(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=qf(a,78314,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=qf(a,78343,y)|0;D_(k);D_(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=qf(a,78628,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=qf(a,78398,A)|0;D_(b);$B(a,d)|0;D_(r);D_(s);D_(t);D_(n);D_(d);l=B;return}function of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;$B(a,78157)|0;g[45959]=+g[45958]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=qf(a,78173,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=qf(a,78205,n)|0;w=+g[45959];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=qf(a,78237,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=rf(a,e,0.0)|0;c[m>>2]=78300;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=qf(a,78269,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=qf(a,78314,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=qf(a,78343,s)|0;D_(x);D_(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=qf(a,78352,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=qf(a,78398,u)|0;D_(t);$B(a,x)|0;D_(q);D_(n);D_(o);D_(i);D_(x);l=v;return}function pf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,78138,e);l=d;return}function qf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=q0(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=C_(g+1|0)|0;c[f>>2]=d;Z0(a,b,f)|0;break}else{a=n1(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=c$(c[(O_()|0)>>2]|0)|0;ub[a&63](78583,h);a=n1(191979)|0}while(0);l=i;return a|0}function rf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(b$(f,133220)|0)){c[k>>2]=78420;h[k+8>>3]=e;f=qf(a,78403,k)|0;break a}if(!(b$(f,130350)|0)){c[m>>2]=78424;h[m+8>>3]=e;f=qf(a,78403,m)|0;break a}if(!(b$(f,128349)|0)){c[p>>2]=78430;h[p+8>>3]=e;f=qf(a,78403,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=qf(a,78403,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=qf(a,78435,i)|0;break}default:{p=c[15686]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;g1(p,78474,j)|0;qa(135312,78524,436,78544)}}while(0);c[o>>2]=f;p=qf(a,78561,o)|0;D_(f);l=q;return p|0}function sf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=80990;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;fC(a,83609,g);f=ry(c[f+8>>2]|0)|0;c[e>>2]=80990;c[e+4>>2]=f;fC(a,83641,e);c[d>>2]=80990;fC(a,83655,d);l=b;return}function tf(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=80990;fC(a,83557,d);l=b;return}function uf(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4025]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}Gf();c[4025]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;fC(a,81177,m);c[n>>2]=80990;fC(a,81192,n);if(d>0.0){b=+j$(d);h[18829]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[18829]=b;h[B>>3]=b;h[B+8>>3]=b;fC(a,81361,B);c[S>>2]=80990;fC(a,81396,S);c[o>>2]=80990;fC(a,81454,o);c[p>>2]=80990;fC(a,81514,p);c[q>>2]=80990;fC(a,81563,q);c[r>>2]=80990;fC(a,81602,r);c[s>>2]=80990;fC(a,81653,s);c[t>>2]=80990;fC(a,81715,t);c[u>>2]=80990;fC(a,81825,u);c[v>>2]=80990;fC(a,81916,v);c[w>>2]=80990;fC(a,81970,w);c[x>>2]=80990;fC(a,82039,x);fC(a,82075,y);c[z>>2]=80990;fC(a,82200,z);c[A>>2]=80990;fC(a,82229,A);fC(a,82269,C);c[E>>2]=80990;fC(a,82362,E);c[F>>2]=80990;fC(a,82421,F);c[G>>2]=80990;fC(a,82502,G);fC(a,82572,H);c[I>>2]=80990;fC(a,82661,I);c[J>>2]=80990;fC(a,82766,J);c[K>>2]=80990;fC(a,82842,K);c[L>>2]=80990;fC(a,82881,L);c[M>>2]=80990;fC(a,82980,M);c[N>>2]=80990;fC(a,83026,N);fC(a,83115,O);c[P>>2]=80990;fC(a,83156,P);c[Q>>2]=80990;fC(a,83239,Q);c[R>>2]=80990;fC(a,83340,R);h[T>>3]=e;h[T+8>>3]=d;fC(a,83404,T);fC(a,83432,U);fC(a,83440,V);l=W;return}function vf(a){a=a|0;var b=0;b=l;l=l+16|0;fC(a,81170,b);l=b;return}function wf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[45960]|0;if(d|0?(b$(d,f)|0)==0:0)break;c[o>>2]=Ef(f)|0;fC(b,81069,o);o=c[m>>2]|0;c[45960]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[45961]|0)){j=+h[18829];c[p>>2]=f;h[p+8>>3]=j;fC(b,81077,p);c[45961]=f}c[q>>2]=Ff(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;fC(b,81098,q);l=r;return}function xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?81011:191979;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;fC(a,81017,f);l=e;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,1);l=e;return}function zf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=C_((d*140|0)+140|0)|0;Cf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(Y0(j,80995,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;fC(a,81002,q);D_(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,s);e=e+1|0}$B(a,150517)|0;l=t;return}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,0);l=e;return}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=80990;c[e+4>>2]=b;fC(a,80983,e);l=d;return}function Cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function Ef(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15828;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(b$(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=81151;c[f+4>>2]=b;Pw(1,81125,f)|0;d=o1(b,45)|0;if(!d){d=81168;break}a[d>>0]=0}l=h;return d|0}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45962]|0;if(!d){c[45963]=64;d=C_(64)|0;c[45962]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45963]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45963]=d;d=F_(c[45962]|0,d)|0;c[45962]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45962]|0}function Gf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=81151;c[b+4>>2]=83548;Pw(0,83530,b)|0;l=a;return}function Hf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;fC(a,84128,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,84170,f);l=e;return}function If(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;fC(a,84215,f);$B(a,84307)|0;l=e;return}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)qa(108200,84312,212,84331);if(!b)qa(108230,84312,213,84331);p=b+8|0;if(!(c[p>>2]|0))qa(108233,84312,214,84331);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){fC(a,84352,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;fC(a,84355,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;fC(a,84355,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;fC(a,84362,n)}fC(a,84352,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;fC(a,84355,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;fC(a,84355,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;fC(a,84377,s)}l=t;return}function Lf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)qa(108200,84312,153,84393);if(!d)qa(108230,84312,154,84393);if(!(c[d+8>>2]|0))qa(108233,84312,155,84393);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==98)g=18;else{tb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((zC(d)|0)<<24>>24))break;f=j3(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){J1(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=U_(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=98;AC(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;fC(b,84411,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];fC(b,84442,m)}else kJ(b,d);fC(b,84457,n)}l=o;return}function Mf(a){a=a|0;S_(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function Nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)qa(108200,84312,121,84467);e=c[a+16>>2]|0;if(!e)qa(96876,84312,123,84467);if(!b)qa(108230,84312,124,84467);d=b+8|0;if(!(c[d>>2]|0))qa(108233,84312,125,84467);if(!(c[e+8>>2]|0))qa(135797,84312,128,84467);else{fC(a,84487,g);fC(a,84496,g+8|0);fC(a,84523,g+16|0);fC(a,84548,g+24|0);fC(a,84577,g+32|0);fC(a,84605,g+40|0);c[f>>2]=c[d>>2];fC(a,84612,f);fC(a,84651,g+56|0);fC(a,107982,g+64|0);l=g;return}}function Of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)qa(108200,84312,97,84656);if(!b)qa(108230,84312,98,84656);e=c[b+8>>2]|0;if(!e)qa(108233,84312,99,84656);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;fC(a,84675,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;fC(a,84733,g);l=i;return}}function Pf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)qa(108200,84312,53,84765);if(!b)qa(108230,84312,54,84765);e=b+8|0;if(!(c[e>>2]|0))qa(108233,84312,55,84765);$B(a,84784)|0;$B(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;fC(a,84913,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;fC(a,84804,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;fC(a,84883,m)}$B(a,84992)|0;l=o;return}function Qf(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;Rf(b);b=Ty(a,b)|0}c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;Sf(b);b=Gx(a,b)|0}c=Ty(a,c)|0}return}function Rf(a){a=a|0;var b=0,d=0;Az(a,134365,304,1)|0;dM(a);bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=uH(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=uH(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=uH(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=uH(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=uH(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Sf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;Az(d,134378,176,1)|0;eM(d)|0;h=KL(d,c[46404]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=NL(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[46398]|0,191979)|0;i=NL(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[46398]|0,191979)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(Ok(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(KL(d,c[46417]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(KL(d,c[46405]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Tf(a){a=a|0;var b=0,d=0;Uf(c[(c[a+16>>2]|0)+192>>2]|0);d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}Vf(d);d=Ty(a,d)|0}Wf(a);return}function Uf(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;Xf(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}D_(d);D_(b);b=g}return}function Vf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){D_(d);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)tb[c[(c[b+4>>2]|0)+4>>2]&127](a);Cz(a,134365)|0;return}function Wf(a){a=a|0;var d=0,e=0,f=0;d=wA(a)|0;while(1){if(!d)break;Wf(d);d=xA(d)|0}if(Az(a,134401,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){D_(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;D_(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){D_(e+-64|0);break}else{D_(e);break}}while(0);if((fz(a)|0)!=(a|0)){nH(c[(c[f>>2]|0)+12>>2]|0);Cz(a,134401)|0}}return}function Xf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a}return}function Yf(a){a=a|0;if(ay(a)|0)Zf(a);eJ(a);return}function Zf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=YD(a,-1,8)|0;d=ZD(a,0,f)|0;XD(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)_f(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=rD(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){_f(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){_f(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;$f(b,a);_f(b);d=d+1|0;b=c[g>>2]|0}ag(a);WD(c[g>>2]|0,e,a,f)|0;bg(a);cg(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;D_(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Wf(c[f>>2]|0);dz(a,c[f>>2]|0)|0;b=b+1|0}D_(e)}l=h;return}function _f(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=KL(a,nx(a,0,85007,0)|0,-1,1)|0;$M(a,10);d=Nk(a,e)|0;eg(a,a);Qf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){zj(a,d);if(f){d=3;break}if(c[g>>2]|0){Pw(0,85013,k)|0;c[e>>2]=0;d=0}Jh(a,(d|0)!=0&1);if(h){d=7;break}Mi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)fg(a,1);else if((d|0)==7)fg(a,2);else if((d|0)==9)fg(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)gg(a);tk(a);kg(a);if((QL(xx(a,85104)|0)|0)<<24>>24)nl(a)}l=m;return}function $f(b,d){b=b|0;d=d|0;var e=0,f=0;Az(b,134401,280,1)|0;e=uH(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function ag(a){a=a|0;var b=0,d=0,e=0;b=uH((ay(a)|0)<<4)|0;d=Sy(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=Ty(a,d)|0}return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=Ty(a,d)|0}D_(e);return}function cg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=uH((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=qD(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;dg(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function dg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;Az(d,134401,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=uH((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=qD(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;dg(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function eg(a,b){a=a|0;b=b|0;if((fz(a)|0)!=(a|0))Az(a,134401,280,1)|0;if((a|0)==(b|0))c[(c[(fz(a)|0)+16>>2]|0)+188>>2]=a;a=wA(a)|0;while(1){if(!a)break;eg(a,b);a=xA(a)|0}return}function fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=nx(a,1,87076,191979)|0;g=nx(a,1,85147,191979)|0;h=(b|0)>0;d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],Y0(e,134313,j)|0,rx(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];Y0(e,134313,k)|0;rx(b,g,e)|0}b=Ty(a,b)|0}l=m;return}function gg(a){a=a|0;var b=0,c=0,d=0;c=vA(a,86580,0)|0;if(c|0){b=Sy(c)|0;while(1){if(!b)break;d=Ty(c,b)|0;sh(a,b);hg(a,b);Vf(b);cz(a,b)|0;b=d}zA(a,c)|0}return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)qa(85113,85120,248,85130);return}function ig(a){a=a|0;return c[(c[(fz(a)|0)+16>>2]|0)+188>>2]|0}function jg(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function kg(a){a=a|0;lg(a,1);return}function lg(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{Pw(0,85153,f)|0;A=9}}else if(X<<16>>16==8){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){cN(d,0);n=0;m=0;k=0;break}else{ng(d);cN(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){ll(d);if(qJ()|0)break;W=uH(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=uH(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_<y?y:_)}else g=I;B=f+-16|0;z=g+16|0;x=0;t=L;r=M;q=j;u=E;v=m;g=k;f=p;while(1){if((x|0)>=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?(kb[c[17300>>2]&63](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{og(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=xH(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;og(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=xH(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}og(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=xH(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)qa(85221,85234,313,85247);c[Y>>2]=H;c[F>>2]=I;_0(E,L,4,58);c[W+84>>2]=uH((D<<5)+11520|0)|0;c[Y+16>>2]=uH(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=rg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(rg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=uH(w<<2)|0;c[f>>2]=rg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}AJ(d,f,w,P,17296);if((w|0)>1)D_(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){sg(d,Y,W,M,x,w,P);x=u;continue}else{tg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);YK(W,M,x,w,y,+((f|0)/2|0|0),17296);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)kM(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);kM(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{ug(d);n=W;k=W}}f:do if((c[46427]|0)!=0|(c[46428]|0)!=0?(c[46433]|0)!=0|(c[46432]|0)!=0:0){j=Sy(d)|0;while(1){if(!j)break f;g:do if(c[46427]|0){f=Hx(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){eL(i,1)|0;kM(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Ix(d,f)|0}}while(0);h:do if(c[46428]|0){f=Ex(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?eL(f,0)|0:0)kM(d,c[(c[g>>2]|0)+104>>2]|0);f=Gx(d,f)|0}}while(0);j=Ty(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{D_(m);D_(c[n+84>>2]|0);D_(k);D_(c[Y+16>>2]|0);rJ()}}c[46367]=1;c[46368]=1}while(0);l=Z;return}function mg(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=Ty(a,b)|0}return}function ng(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;qg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}kM(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)qa(85421,85234,234,85440);else if((d|0)==12)return}function og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function pg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=rg(C)|0;r=rg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){F3(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{F3(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function qg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function rg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function sg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){F3(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Sg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Tg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Vg(b,d,e,o,q,y,1);Vg(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[18830]=G;h[18831]=E;k=k+1|0;C=+(k|0);D=v*C;h[18832]=F+D;C=E+m*C;h[18833]=C;h[18834]=G;h[18835]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[18836]=G;h[18837]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[18840]=G;h[18839]=F;h[18838]=E-D;h[18841]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=150640+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];SK(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);o=n}if(p)n=sJ(e,A)|0;else n=yJ(e,A)|0;o=c[A>>2]|0;if(!o)break a;QK(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17296);c[q>>2]=0}}Ug(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Rg(b,f,g,i,q,j);l=B;return}function tg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[45964]|0)){c[45964]=vH(32e3)|0;c[45965]=vH(32e3)|0;c[45966]=2e3;c[45967]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;F3(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{F3(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=rg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=xg(b,K,c[45964]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;yg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];TK(e,K,1,T,zg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if((kb[c[17300>>2]&63](p)|0)<<24>>24)break b;o=t|1;ca=150640+(t<<5)|0;Bg(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=Cg(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=150640+(o<<5)|0;yg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}yg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];WK(e,u,1,U,zg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;Dg(e,I,u,T,U,o);if(!G){k=yJ(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];G3(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=sJ(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[45966]|0)){c[45966]=p<<1;t=xH(c[45964]|0,p<<5)|0;c[45964]=t;o=c[X>>2]|0}else t=c[45964]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=Eg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;Fg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;yg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];TK(e,o,1,T,zg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=150640+(t<<5)|0;Bg(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];yg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;WK(e,r?Y:u,1,U,zg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}Dg(e,I,u,T,U,k);if(G)q=sJ(e,X)|0;else q=yJ(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];G3(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[45966]|0)){c[45966]=n<<1;p=xH(c[45964]|0,n<<5)|0;c[45964]=p;k=c[X>>2]|0}else p=c[45964]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;Fg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){QK(K,c[_>>2]|0,c[45964]|0,v,17296);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[45966]|0;if((k|0)>(c[45967]|0)){c[45967]=k;o=xH(c[45965]|0,k<<4)|0;c[45965]=o;n=c[45964]|0}else o=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}QK(K,c[_>>2]|0,o,v,17296);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;F3(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}QK(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17296);q=q+1|0}}while(0);l=ba;return}function ug(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;if((kb[c[4324]&63](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)vg(e);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function vg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=vH(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}wg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;D_(c[d+(b*48|0)>>2]|0);b=b+1|0}D_(d);c[a>>2]=g;return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=vH(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function xg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Qg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function yg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=Lg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=Mg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j<m?j:m;k=~~(o+(o>=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=Lg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=Mg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j<o)j=p}p=+h[q+24>>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function zg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function Ag(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{Kg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{Kg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function Bg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function Cg(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function Dg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=Hg(b,-1)|0;b=Hg(b,1)|0;if(!((h|0)!=0?!(fL(h)|0):0))i=3;do if((i|0)==3){if(b|0?(fL(b)|0)==0:0)break;h=Ig(d,-1)|0;b=Ig(d,1)|0;if(h|0?(fL(h)|0)==0:0)break;if(b|0?(fL(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];SK(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=150640+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];SK(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];SK(a,j);h=b}Jg(a,d,i)}while(0);l=k;return}function Eg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function Fg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if((kb[c[17300>>2]&63](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){Gg(j,i,~~((f+g)*.5),~~f);break}else{Gg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function Gg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Jg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0<e)){g=j;continue}h[f>>3]=e+16.0;g=j}return}function Kg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Lg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((Og(b,d,e,f)|0)<<24>>24!=0);return b|0}function Mg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(Ng(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(Ng(d,e)|0)==0;return (e?0:d)|0}}return d|0}function Ng(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function Og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Rg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((HJ(J)|0)!=2?(HJ(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Tg(J,B,d,e,f,i);break}else{Yg(J,B,d,e,f,i,g);break}y=uH(156)|0;z=Zg(b,y)|0;t=vA(z,85383,1)|0;Az(t,134401,280,1)|0;zx(t,87076,87090)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=_g(t,q)|0;u=_g(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=$g(z,t,u,o)|0;else k=$g(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=Rx(z,t,u,0,1)|0;else x=g;rx(x,c[46404]|0,85387)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;$M(z,i);Qf(z);zj(z,0);Jh(z,0);Mi(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}tk(z);lg(z,0);eJ(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=PK(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];YE((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;kM(b,T)}}r=r+1|0}bh(z,y)}else Q=3;while(0);if((Q|0)==3?(c[45968]|0)==0:0){c[45968]=1;Pw(0,85260,O)|0;Q=ry(J)|0;S=(ey(b)|0)!=0;T=ry(B)|0;c[P>>2]=Q;c[P+4>>2]=S?134656:138665;c[P+8>>2]=T;Pw(3,85366,P)|0}l=R;return}function Sg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Vg(b,d,e,p,f,t,1);Vg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[18830]=A;h[18831]=+h[t+56+(m<<5)+24>>3];h[18832]=E;h[18833]=B;h[18834]=A;h[18835]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[18836]=A;h[18837]=D;h[18838]=C;h[18841]=B;h[18839]=+h[v+56+(i<<5)+24>>3];h[18840]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];SK(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=150640+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];SK(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];SK(e,u);j=i}if((g|0)==10)j=sJ(e,w)|0;else j=yJ(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Pg(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Pg(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)QK(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17296);l=z;return}function Tg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Pg(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Pg(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Xg(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Xg(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Xg(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Xg(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Xg(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Xg(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Xg(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Xg(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;QK(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17296);i=i+z;b=b+1|0}l=N;return}function Ug(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Wg(a,d,e,q,j,w,1);Wg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[18830]=D;h[18833]=B;m=m+1|0;z=+(m|0);A=s*z;h[18832]=C+A;z=B-n*z;h[18831]=z;h[18834]=D;h[18837]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[18836]=D;h[18835]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[18840]=D;h[18841]=C;h[18838]=B-A;h[18839]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=150640+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];SK(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);p=o}if(a)o=yJ(e,v)|0;else o=sJ(e,v)|0;p=c[v>>2]|0;if(!p)break;QK(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17296);c[d>>2]=0}l=x;return}function Vg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Wg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Xg(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Yg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=uH(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}_0(U,g,4,59);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Pg(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Pg(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];QK(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17296);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0;p=t}D_(U)}while(0);l=Y;return}function Zg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(ey(b)|0)==0;j=j?18488:18480;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=Xx(85398,f,0)|0;Az(f,134401,280,1)|0;nx(f,0,87076,191979)|0;j=uH(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=sx(fz(b)|0,1,0)|0;while(1){if(!e)break;nx(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,1,e)|0}e=sx(fz(b)|0,2,0)|0;while(1){if(!e)break;nx(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,2,e)|0}if(!(nx(f,2,108382,0)|0))nx(f,2,108382,191979)|0;if(!(nx(f,2,108373,0)|0))nx(f,2,108373,191979)|0;ch(f,d);l=g;return f|0}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=az(a,ry(b)|0,1)|0;Az(a,134365,304,1)|0;Bx(b,a)|0;if((HJ(b)|0)==2){f=b+16|0;b=vH((W_(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];Y0(b,85393,d)|0;zx(a,105198,b)|0}l=e;return a|0}function $g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Rx(a,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(d,c)|0;return c|0}function ah(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Pg(a,f,g);l=i;return}function bh(a,b){a=a|0;b=b|0;c[46419]=c[b>>2];c[46423]=c[b+4>>2];c[46424]=c[b+8>>2];c[46404]=c[b+12>>2];c[46405]=c[b+16>>2];c[46411]=c[b+20>>2];c[46410]=c[b+24>>2];c[46409]=c[b+28>>2];c[46435]=c[b+32>>2];c[46427]=c[b+36>>2];c[46412]=c[b+40>>2];c[46422]=c[b+44>>2];c[46431]=c[b+48>>2];c[46430]=c[b+52>>2];c[46429]=c[b+56>>2];c[46434]=c[b+60>>2];c[46428]=c[b+64>>2];c[46413]=c[b+68>>2];c[46375]=c[b+72>>2];c[46376]=c[b+76>>2];c[46377]=c[b+80>>2];c[46387]=c[b+84>>2];c[46380]=c[b+88>>2];c[46381]=c[b+92>>2];c[46382]=c[b+96>>2];c[46384]=c[b+100>>2];c[46385]=c[b+104>>2];c[46388]=c[b+108>>2];c[46391]=c[b+112>>2];c[46389]=c[b+116>>2];c[46390]=c[b+120>>2];c[46393]=c[b+124>>2];c[46392]=c[b+128>>2];c[46394]=c[b+132>>2];c[46395]=c[b+136>>2];c[46386]=c[b+140>>2];c[46398]=c[b+144>>2];c[46370]=c[b+148>>2];c[46367]=c[b+152>>2];D_(b);Tf(a);$x(a)|0;return}function ch(a,b){a=a|0;b=b|0;c[b>>2]=c[46419];c[b+4>>2]=c[46423];c[b+8>>2]=c[46424];c[b+12>>2]=c[46404];c[b+16>>2]=c[46405];c[b+20>>2]=c[46411];c[b+24>>2]=c[46410];c[b+28>>2]=c[46409];c[b+32>>2]=c[46435];c[b+36>>2]=c[46427];c[b+40>>2]=c[46412];c[b+44>>2]=c[46422];c[b+48>>2]=c[46431];c[b+52>>2]=c[46430];c[b+56>>2]=c[46429];c[b+60>>2]=c[46434];c[b+64>>2]=c[46428];c[b+68>>2]=c[46413];c[b+72>>2]=c[46375];c[b+76>>2]=c[46376];c[b+80>>2]=c[46377];c[b+84>>2]=c[46387];c[b+88>>2]=c[46380];c[b+92>>2]=c[46381];c[b+96>>2]=c[46382];c[b+100>>2]=c[46384];c[b+104>>2]=c[46385];c[b+108>>2]=c[46388];c[b+112>>2]=c[46391];c[b+116>>2]=c[46389];c[b+120>>2]=c[46390];c[b+124>>2]=c[46393];c[b+128>>2]=c[46392];c[b+132>>2]=c[46394];c[b+136>>2]=c[46395];c[b+140>>2]=c[46386];c[b+144>>2]=c[46398];c[b+152>>2]=c[46367];c[b+148>>2]=c[46370];c[46419]=0;c[46423]=nx(a,2,87317,0)|0;c[46424]=nx(a,2,87326,0)|0;b=nx(a,2,98515,0)|0;c[46404]=b;if(!b)c[46404]=nx(a,2,98515,191979)|0;c[46405]=0;c[46411]=0;c[46410]=nx(a,2,98411,0)|0;c[46409]=nx(a,2,98402,0)|0;c[46435]=nx(a,2,98691,0)|0;c[46427]=0;c[46412]=nx(a,2,105198,0)|0;c[46422]=nx(a,2,85403,0)|0;c[46431]=0;c[46430]=nx(a,2,98591,0)|0;c[46429]=nx(a,2,98577,0)|0;c[46434]=nx(a,2,98682,0)|0;c[46428]=0;c[46413]=0;c[46375]=nx(a,1,137966,0)|0;c[46376]=nx(a,1,138034,0)|0;c[46377]=nx(a,1,105204,0)|0;c[46387]=0;c[46380]=nx(a,1,98402,0)|0;c[46381]=nx(a,1,98411,0)|0;c[46382]=0;c[46384]=nx(a,1,105198,0)|0;c[46385]=0;c[46388]=0;c[46391]=nx(a,1,98383,0)|0;c[46389]=nx(a,1,137994,0)|0;c[46390]=nx(a,1,98446,0)|0;c[46393]=nx(a,1,98458,0)|0;c[46392]=nx(a,1,98322,0)|0;c[46394]=nx(a,1,98463,0)|0;c[46395]=nx(a,1,85415,0)|0;c[46386]=0;c[46398]=0;c[46370]=nx(a,0,98383,0)|0;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(f<e))if(i>g)a=-1;else a=i<g&1;else a=1;else a=-1;else a=b&1;return a|0}function eh(a){a=a|0;var b=0,d=0,e=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function ih(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=vH((c[d+184>>2]<<2)+8|0)|0;else b=xH(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function kh(a){a=a|0;if(!a)qa(85456,85466,117,85475);else{jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function lh(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=vH((c[d+208>>2]<<2)+8|0)|0;else b=xH(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function mh(a){a=a|0;nh(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=vH((e<<2)+8|0)|0;else d=xH(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function oh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=uH(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=uH(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function ph(a,b,c){a=a|0;b=b|0;c=c|0;return ih(oh(a,b,c)|0)|0}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))qa(85492,85466,215,85508);else return}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))qa(85518,85466,220,85525);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)qa(85538,85466,221,85525);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(th(a,b)|0))qa(85557,85466,231,85578);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function th(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function uh(b){b=b|0;var d=0,e=0,f=0,g=0;d=uH(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=uH(304)|0;c[d+24>>2]=fz(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=uH(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=uH(20)|0;c[(c[e>>2]|0)+180>>2]=f;qh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function vh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=vH((c[e+192>>2]<<2)+8|0)|0;else e=xH(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=vH((c[e+200>>2]<<2)+8|0)|0;else e=xH(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(ig(b)|0)+16>>2]|0)+240>>0]=1;return}function wh(a){a=a|0;var b=0,d=0;if(!a)qa(85456,85466,269,85595);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;yh(a,b);break}else qa(87498,85466,340,85633);else Pw(0,85612,f)|0;while(0);l=f;return}function yh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function zh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;Ah(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))Bh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;Ah(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function Ah(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function Bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)qa(85456,85466,128,85646);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))jh(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){jh(d,a);b=c[a>>2]|0}f=f+1|0}return}function Ch(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[18484]|0;a[n+1>>0]=a[18485]|0;a[n+2>>0]=a[18486]|0;a[n+3>>0]=a[18487]|0;d=Xx(85668,n,0)|0}c[o>>2]=g;Y0(m,134313,o)|0;t=az(d,m,1)|0;Az(t,91080,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if((ay(d)|0)>1)Dh(d,h);$x(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=Sy(a)|0;a:while(1){if(!h)break;i=Ty(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))Rx(a,h,g,0,1)|0}else{Rx(a,g,h,0,1)|0;d=1}g=Ty(a,g)|0}}do if(d|0){h=vA(a,85671,1)|0;j=uH((ay(a)|0)<<2)|0;i=uH((ay(a)|0)<<2)|0;f=b+4|0;e=Sy(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?cy(a,e,1,1)|0:0){c:do if(Eh(a,e,h,i)|0){g=ay(h)|0;if((Fh(a,h,j)|0)!=(g|0)){d=17;break b}_0(i,g,4,60);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);Hh(h)}e=Ty(a,e)|0}if((d|0)==17)qa(85676,85686,265,85697);else if((d|0)==23){D_(j);break}}while(0);return}function Eh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((ay(d)|0)<<2)>>2]=h;Xy(d,b,1)|0;h=Ex(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Gx(a,h)|0}h=Hx(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Ix(a,h)|0}return f|0}function Fh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=Ih(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];cz(b,e)|0;e=Ex(a,e)|0;while(1){if(!e)break;g=Gx(a,e)|0;Ux(a,e)|0;e=g}f=f+1|0}return f|0}function Gh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function Hh(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;c=Ty(a,b)|0;cz(a,b)|0;b=c}return}function Ih(a,b){a=a|0;b=b|0;var c=0;c=Sy(b)|0;while(1){if(!c){c=0;break}if(!(cy(a,c,1,0)|0))break;c=Ty(b,c)|0}return c|0}function Jh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;Kh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;Lh(b,f);f=f+1|0;e=(Mh(b,0,d)|0)+e|0}Nh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(Oh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=xx(b,85711)|0;if(f|0?(QL(f)|0)<<24>>24==0:0)break;ll(b);a[190689]=1;e=Mh(b,2,d)|0}while(0);Ph(b,e);return}function Kh(d){d=d|0;var e=0;if(0)EL();a[190689]=0;c[45971]=d;e=((by(ig(d)|0)|0)<<2)+4|0;c[45970]=uH(e)|0;c[45969]=uH(e)|0;Fi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)Gi(d);Uk(d);Il(d,1);Hi(d);Wh(d);e=c[e>>2]|0;c[45972]=b[e+236>>1];c[45973]=b[e+238>>1];return}function Lh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function Mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=ki(0)|0;li(a)}else e=2147483647;m=c[15686]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[46365]|0;if((k|0)==2)if((e|0)>(b|0)){ni(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((ig(a)|0)==(a|0))mi(a,k);if(!k)Xh(a);Yh(a);g=ki(0)|0;if((g|0)>(b|0)){f=e;e=g}else{li(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;g1(m,86104,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[45974]|0))break;oi(a,j);e=ki(0)|0;if((e|0)>(b|0))g=i;else{li(a);g=+h[22830]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))ni(a);if((b|0)>0){pi(a,0);e=ki(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;qi(a);b=b+1|0}}while(0);l=o;return e|0}function Nh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;ji(a);k=a+16|0;d=c[k>>2]|0;m=c[15686]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=ry(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;g1(m,86054,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function Oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;fl(a);Wh(a);Xh(a);Yh(a);f=a+16|0;d=Mh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(Oh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Zh(a);return d|0}function Ph(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[45969]|0;if(f|0){D_(f);c[45969]=0}f=c[45970]|0;if(f|0){D_(f);c[45970]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Qh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){wh(i);D_(c[j>>2]|0);D_(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Rh(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[15686]|0;d=ry(d)|0;r=+FL();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;g1(o,85722,p)|0}l=q;return}function Qh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Qh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Sh(a,j,-1)|0;j=Sh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Rh(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Th(b,c)|0;if(!b)break;if(Uh(a,b)|0){d=b;continue}e=(Vh(a,b)|0)==0;d=e?d:b}return d|0}function Th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)qa(85761,85686,1023,85763);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else qa(85772,85686,1029,85763);else g=0}return g|0}function Uh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(oz(b,d)|0)!=0&1;else b=0;return b|0}function Vh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(oz(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Wh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[46370]|0;a:do if((d|0)!=0|(c[46391]|0)!=0){d=NL(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(b$(d,85974)|0)){ei(b,1);break a}break}case 105:{if(!(b$(d,95660)|0)){ei(b,0);break a}break}default:{}}c[e>>2]=d;Pw(1,85978,e)|0;break}d=wA(b)|0;while(1){if(!d)break;if(!(Rj(d)|0))Wh(d);d=xA(d)|0}if(c[46391]|0)fi(b)}while(0);l=f;return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=ci(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){di(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Yh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=vH(e)|0;else p=xH(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((_h(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((_h(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=($h(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(_h(d,g)|0){t=37;break a}wh(g);ai(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)qa(85820,85686,1561,85859);if(h|0)D_(q)}return}function Zh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function _h(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(bi(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(bi(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((_h(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=($h(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else qa(85872,85686,1490,85888);return 0}function ai(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}xh(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=vH((c[e+208>>2]<<2)+8|0)|0;else e=xH(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=oh(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];vh(b,m)}return}function bi(a,b){a=a|0;b=b|0;var c=0;c=Uh(a,b)|0;return Vh(a,b)|0|c|0}function ci(a,b){a=a|0;b=b|0;var d=0;d=uH(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=uH(O(b,a)|0)|0;return d|0}function di(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(ig(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((oz(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(oz(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;wh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;ai(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;di(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)qa(85898,85686,1251,85930);else if((q|0)==12)qa(85942,85686,1252,85930);else if((q|0)==16)qa(85898,85686,1260,85930);else if((q|0)==18)qa(85942,85686,1261,85930)}else p=e;while(0);a[p+158>>0]=0;return}function ei(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c)break;gi(a,c,b);c=Ty(a,c)|0}return}function fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=Sy(b)|0;while(1){if(!d)break;e=NL(d,c[46391]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(b$(e,85974)|0)){gi(b,d,1);break a}break}case 105:{if(!(b$(e,95660)|0)){gi(b,d,0);break a}break}default:{}}h=ry(d)|0;c[f>>2]=e;c[f+4>>2]=h;Pw(1,86009,f)|0}while(0);d=Ty(b,d)|0}l=g;return}function gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[45970]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;_0(j,d,4,61);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(hh(e,d)|0)break a;i=oh(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;vh(b,i);f=f+1|0}}}while(0);return}function hi(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function ii(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function ji(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[45972];b[f+238>>1]=c[45973]}return}function ki(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[45971]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=Di(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function li(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function mi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=GL(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;IL(o,g);while(1){f=JL(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){kl(d,f,e,o);continue}else{Bi(d,f);Ci(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(JL(o)|0)Pw(1,86217,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;vi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((ig(d)|0)==(d|0)?(ki(0)|0)>0:0)pi(d,0);HL(o);l=r;return}function ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;_0(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,62);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function oi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[45971]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[45971]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;yi(a,d,g,(xi(a,d,d-f|0)|0)&255);d=d+f|0}pi(a,g^1);return}function pi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(wi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function qi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ri(d,i,j)|0)continue;if(p){f=si(i,j)|0;h=si(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ti(i,j)|0)+f|0;h=(ti(j,i)|0)+h|0}if((h|0)<=(f|0))break}ui(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)qa(86168,85686,721,86194);else if((e|0)==16)return}function ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[190689]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function si(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ti(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ui(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}vi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))vi(e,f)}return}function vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[45971]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function wi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ri(d,j,k)|0)continue;if(r){f=si(j,k)|0;g=si(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ti(j,k)|0)+f|0;g=(ti(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}vi(j,k);i=f-g+i|0;g=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)qa(86168,85686,770,86202);else if((f|0)==17)return i|0;return 0}function xi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[45969]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{_0(p,a,4,60);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(zi(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function yi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(ri(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}vi(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function zi(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function Ai(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function Bi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))qa(86282,85686,1346,86318);g=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=ry(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;Pw(1,86334,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;Pw(1,86407,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=ry(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;Pw(1,86468,o)|0}}else{n=ry(a)|0;o=ry(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;Pw(1,86227,f)|0}while(0);l=p;return}function Ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function Di(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[45975]|0)>(d|0))q=c[45976]|0;else{d=d+1|0;c[45975]=d;f=c[45976]|0;if(!f)d=vH(d<<2)|0;else d=xH(f,d<<2)|0;c[45976]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(Ei(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(Ei(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function Fi(a){a=a|0;var b=0.0,d=0.0;c[45974]=8;c[46365]=24;h[22830]=.995;a=xx(a,86590)|0;if(a|0?(b=+b2(a),b>0.0):0){d=b*+(c[45974]|0);c[45974]=~~(d>1.0?d:1.0);b=b*+(c[46365]|0);c[46365]=~~(b>1.0?b:1.0)}return}function Gi(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=uH(e<<2)|0;Ii(a,d,e,0)|0;D_(d);return}function Hi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=uH((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=Sy(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Gx(a,f)|0}g=Ty(a,g)|0}f=uH((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=uH((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}D_(i);return}function Ii(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=Ii(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((ig(a)|0)!=(a|0)){H3(d|0,0,e<<2|0)|0;g=Sy(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Ex(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Gx(a,i)|0}g=Ty(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=vA(ig(a)|0,86580,1)|0;g=az(f,0,1)|0;Az(g,134365,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=uH(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=uH(20)|0;c[(c[l>>2]|0)+180>>2]=k;Xy(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function Ji(a){a=a|0;var b=0,d=0;Zh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ji(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function Ki(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=Li(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17308+(d*12|0)+((Li(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function Li(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function Mi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){ll(b);Ni(b);if(a[191874]|0)zl(b);Oi(b);if(Rl(b)|0)Ni(b);Pi(b);if(fI(b,2,Qi(b)|0)|0?(Ri(b),fI(b,2,Qi(b)|0)|0):0)qa(86598,86626,134,86637);Si(b);Ti(b,d);Ui(b)}return}function Ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]<j){h[q>>3]=j;h[p>>3]=j}if(+h[r>>3]<j){h[s>>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=KL(f,c[46374]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=tj(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){uj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function Oi(a){a=a|0;var b=0,d=0,e=0;pj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){qj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{qj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Pi(a){a=a|0;bj(a);cj(a);dj(a);ej(a);fj(a);return}function Qi(a){a=a|0;var b=0,c=0.0;b=xx(a,86826)|0;if(!b)a=2147483647;else{c=+b2(b);a=~~(c*+(ay(a)|0))}return a|0}function Ri(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=uh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;$i(o,f,0.0,0)|0;$i(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)qa(86734,86626,111,86737);else if((s|0)==19)return}function Si(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ti(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Vi(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Wi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i<l?i:l;if(i>1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f<i){l=1.0;f=i/f;break}else{l=f/i;f=1.0;break}}else{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i<f){l=1.0;f=f/i;break}else{l=i/f;f=1.0;break}else l=i}while(0);e=(c[k+116>>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Xi(a,f,i)}while(0);if(d|0)Yi(a,d);return}function Ui(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;D_(c[e+16>>2]|0);D_(e);d=d+1|0}if(f){D_(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){D_(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;D_(e);D_(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Vi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}_i(a,b);return}function Wi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Zi(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Zi(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o<q?o:q;o=o>.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Xi(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Xi(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Yi(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[15686]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;g1(n,86650,f)|0;c[g>>2]=zk(a)|0;g1(n,86675,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){E1(86685,34,1,c[15686]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[15686]|0;c[j>>2]=c[b+24>>2];g1(n,86720,j)|0}l=m;return}function Zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function _i(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(ig(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g<m;l=c[(c[s>>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g<x?g:x}}else{i=+(c[(c[(c[w+260>>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function $i(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=uH(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=uH(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){aj(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;ih(i)|0;return i|0}function aj(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;Pw(1,86750,d)|0;l=b;return}function bj(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=uH((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=uH(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function cj(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(XK(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];$i(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(nj(g,f)|0))$i(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(nj(d,f)|0)){$i(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=fh(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))$i(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i<A?A:i);if((f|0)>65535){aj(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function dj(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=uh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;$i(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;$i(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function ej(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){ij(a);jj(a);kj(a);lj(a)}return}function fj(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){gj(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;$i(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function gj(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=KL(a,c[46374]|0,8,0)|0;hj(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=ry(a)|0;c[m+4>>2]=e;Pw(1,86834,m)|0;break}else{$i(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;$i(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function hj(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=uh(ig(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=uh(ig(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(ig(b)|0)!=(b|0):0)?(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;$i(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function ij(a){a=a|0;var b=0,d=0;do if((ig(a)|0)!=(a|0)){gj(a);a=a+16|0;b=c[a>>2]|0;b=fh(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;$i(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;ij(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function jj(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=KL(d,c[46374]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(mj(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;$i(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(mj(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}$i(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;jj(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function kj(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=KL(a,c[46374]|0,8,0)|0;hj(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;hj(e);f=c[b>>2]|0;g=e+16|0;$i(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;$i(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;kj(e);a=a+1|0}return}function lj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=KL(a,c[46374]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;hj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);$i(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}lj(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function mj(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(oz(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(oz(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function nj(a,b){a=a|0;b=b|0;return oj(a,b)|0}function oj(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!(oj(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function pj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=vH((i<<2)+4|0)|0;else d=xH(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];rj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Hx(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=vH((c[e+176>>2]<<2)+8|0)|0;else e=xH(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Ix(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Ex(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=vH((c[e+184>>2]<<2)+8|0)|0;else e=xH(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Gx(a,i)|0}}}while(0);l=o;return}function rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ez(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function sj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=ig(b)|0;g=SL(d)|0;if((g|0)!=(d|0))rh(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];rj(a,d,h);l=i;return}function tj(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))j=8.0;else j=+(KL(a,c[46374]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=tj(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((ig(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(fz(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((ig(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function uj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))e=0;else e=KL(a,c[46374]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;uj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((ig(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)vj(a,~~p,d);if((ig(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function vj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(ig(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function wj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function xj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=Sy(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=Ty(a,h)|0}c[e+264>>2]=d;return}function yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=xx(a,86879)|0;if(!b)b=2147483647;else{g=+b2(b);b=~~(g*+(ay(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];fI(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function zj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(xx(a,86888)|0))Bj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;Aj(a,d)}if(0){g=c[15686]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;g1(g,86896,e)|0}l=f;return}function Aj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[45977]=0;a[h>>0]=a[18484]|0;a[h+1>>0]=a[18485]|0;a[h+2>>0]=a[18486]|0;a[h+3>>0]=a[18487]|0;h=Xx(87106,h,0)|0;Az(h,87135,280,1)|0;mz(h,17404,17344);Cj(b);e=xx(b,86879)|0;if(!e)f=2147483647;else{j=+b2(e);f=~~(j*+(ay(b)|0))}Sj(b,0);Tj(b,h);Uj(b,h);Vj(b,h,0,0);Wj(h);g=Xj(h)|0;Yj(h);if(d|0){Mk(h);Ak(h)}e=xx(b,99560)|0;if(!e)e=-1;else e=a2(e)|0;yH(h,1,f,e)|0;Zj(b,h,g);$x(h)|0;l=i;return}function Bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;Cj(a);do if(!b){Dj(a,a);Pk(a);Ej(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;Il(a,0);b=0}else{Mk(a);Ak(a);Dj(a,a);Pk(a);Ej(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;Il(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);xk(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(Fj(a,f)|0)Il(a,0);if(!b)yj(a);else Bk(a,b);Gj(a,b);Hj(a);l=g;return}function Cj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=Sy(d)|0;while(1){if(!g)break;f=Ex(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Gx(d,f)|0}g=Ty(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function Dj(a,b){a=a|0;b=b|0;var d=0;b=wA(b)|0;while(1){if(!b)break;d=Pj(b)|0;do if(d)if((d|0)==7&(c[46364]|0)==100){Lj(a,b);break}else{Qj(a,b,d);break}else Dj(a,b);while(0);b=xA(b)|0}return}function Ej(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=SL(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=SL(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(SL(h)|0)){g=9;break}wk(d);d=c[e>>2]|0}if((g|0)==9)qa(86999,86939,346,87031);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(SL(i)|0))break;wk(d);d=c[e>>2]|0}qa(87044,86939,353,87031)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function Fj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=Sy(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(SL(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ph(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ph(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=Ty(a,g)|0}}while(0);return (d|0)!=0|0}function Gj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=Sy(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=SL(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:UL(g)}g=Ty(d,g)|0}if((ig(d)|0)==(d|0)){if((c[46364]|0)==100)e=1;else{Kj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;Jj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function Hj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;Ij((c[i>>2]|0)+172|0);Ij((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=Sy(b)|0;while(1){if(!i)break;h=Ex(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=Sy(b)|0;while(1){if(!d)break;e=Ex(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Gx(b,e)|0}d=Ty(b,d)|0}D_(c[k>>2]|0);D_(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Gx(b,h)|0}i=Ty(b,i)|0}D_(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function Ij(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function Jj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;Jj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function Kj(b){b=b|0;var d=0;d=wA(ig(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)Lj(b,d);d=xA(d)|0}return}function Lj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,Mj(a,b),Sy(b)|0):0){Nj(a,b);if((c[46364]|0)==100){Bj(b,0);Oj(b);break}else{xj(b);break}}while(0);return}function Mj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=Sy(d)|0;while(1){if(!g)break;i=Ty(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{dz(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(oz(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))dz(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=Sy(d)|0;while(1){if(!e)break;b=Ex(ig(d)|0,e)|0;while(1){if(!b)break;if(oz(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)Vx(d,b,1)|0;b=Gx(ig(d)|0,b)|0}e=Ty(d,e)|0}return}function Nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function Oj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)qa(86924,86939,238,86946);c[g+264>>2]=h;d=Sy(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}TL(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=Ty(b,d)|0}if((d|0)==11)qa(86961,86939,242,86946);else if((d|0)==13)return}function Pj(b){b=b|0;var d=0;if(!(Rj(b)|0)){d=aM(xx(b,87076)|0,17356,17380)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Qj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=Sy(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=Ty(d,f)|0;if(!f)break;TL(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Rj(a){a=a|0;return (z$(ry(a)|0,104980,7)|0)==0|0}function Sj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(lk(b)|0)){do if(qM(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;mk(b,d);d=b;break}while(0);e=wA(b)|0;while(1){if(!e)break;Sj(e,d);e=xA(e)|0}a:do if(qM(b)|0){e=Sy(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=Ty(b,e)|0}}while(0);switch(nk(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{ok(b)|0;break}case 6:break;default:{e=ry(b)|0;f=xx(b,87076)|0;c[g>>2]=e;c[g+4>>2]=f;Pw(0,87259,g)|0}}if((k|0)==19){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((qM(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=ok(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Tj(a,b){a=a|0;b=b|0;var d=0,e=0;c[45977]=0;d=Sy(a)|0;while(1){if(!d)break;if((_j(d)|0)==(d|0)){e=bk(b,ry(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=Ty(a,d)|0}d=Sy(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(_j(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=Ty(a,d)|0}return}function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Sy(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Ex(a,h)|0;while(1){if(!i)break;do if((gk(i)|0)==0?(j=i+-48|0,k=c[(c[(_j(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(hk(i)|0)){if((fk(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(fk(f)|0)==0:0){ik(b,d,k,i);break}jk(b,d,k,i);break}else{f=_j(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=_j(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}ik(b,d,e,i);break}}while(0);i=Gx(a,i)|0}h=Ty(a,h)|0}return}function Vj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((qM(a)|0)!=0?(fk(a)|0)!=0:0){g=Sy(a)|0;while(1){if(!g)break;if(!(Hx(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=bk(b,87157)|0;Rx(b,d,f,0,1)|0}if(!(Ex(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=bk(b,87162)|0;Rx(b,f,e,0,1)|0}g=Ty(a,g)|0}if((e|0)!=0&(d|0)!=0){ek(Rx(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=wA(a)|0;while(1){if(!d)break;Vj(d,b,f,e);d=xA(d)|0}return}function Wj(b){b=b|0;var d=0,e=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=Ty(b,d)|0}d=Sy(b)|0;while(1){if(!d)break;ck(b,d);d=Ty(b,d)|0}return}function Xj(a){a=a|0;var b=0,d=0,e=0,f=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=Ty(a,b)|0}b=0;e=Sy(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){ak(a,e,d);b=d}e=Ty(a,e)|0}a:do if((b|0)>1){f=bk(a,87151)|0;d=1;e=Sy(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){Rx(a,f,e,0,1)|0;d=d+1|0}e=Ty(a,e)|0}}while(0);return b|0}function Yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Sy(a)|0;while(1){if(!g)break;h=g+16|0;f=Ex(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=vH((c[b+184>>2]<<2)+8|0)|0;else b=xH(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Gx(a,f)|0}g=Ty(a,g)|0}return}function Zj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=uH((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=Sy(a)|0;while(1){if(!h)break;j=c[(c[(c[(_j(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=Ty(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=Sy(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=Ty(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=Sy(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=Ty(a,f)|0}}while(0);$j(a,f);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){D_(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)D_(f);i=Ty(d,i)|0}D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);f=Sy(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=Ty(a,f)|0}if(j)D_(o);return}function _j(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=_j(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function $j(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;$j(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=Sy(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=Ty(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Ex(a,b)|0;while(1){if(!e)break;ak(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break a;ak(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Ix(a,e)|0}}while(0);return}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=az(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=uH(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=uH(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[45977]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[45977]=f;c[b+164>>2]=0;return f|0}function ck(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Ex(b,d)|0;while(1){if(!d)break;e=Gx(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){dk(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}ck(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function dk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;ek(d,e[g+170>>1]|0,c[g+156>>2]|0);dz(a,b)|0;return}function ek(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function fk(a){a=a|0;return (RL(xx(a,87167)|0,0)|0)&255|0}function gk(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function hk(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=kk(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function ik(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=Rx(a,b,d,0,0)|0;if(!g){g=Rx(a,d,b,0,0)|0;if(!g){g=Rx(a,b,d,0,1)|0;if(!g){b=ry(b)|0;f=ry(d)|0;c[h>>2]=b;c[h+4>>2]=f;Pw(1,87184,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;ek(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function jk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Hx(a,d)|0;while(1){if(!h){k=6;break}n=Ex(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Ix(a,h)|0}if((k|0)==6){n=c[45978]|0;c[45978]=n+1;c[j>>2]=n;Y0(i,87175,j)|0;i=bk(a,i)|0;n=Rx(a,i,d,0,1)|0;i=Rx(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function kk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function lk(a){a=a|0;return (Sy(a)|0)==0|0}function mk(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;Nj(b,a);Mj(b,a);return}function nk(b){b=b|0;var c=0;b=xx(b,87076)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(b$(b,87086)|0)if(b$(b,87090)|0)if(b$(b,87097)|0)if(b$(b,87101)|0)if(!(b$(b,87081)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function ok(a){a=a|0;var b=0,c=0;c=Sy(a)|0;a:do if(!c)b=0;else{b=_j(c)|0;while(1){c=Ty(a,c)|0;if(!c)break a;pk(b,c)|0}}while(0);return b|0}function pk(a,b){a=a|0;b=b|0;if(b){a=_j(a)|0;c[(c[(_j(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function qk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87135,c[d>>2]|0,1)|0;return}function rk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87302,c[d+4>>2]|0,1)|0;return}function sk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87287,c[d+8>>2]|0,1)|0;return}function tk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[46423]=nx(b,2,87317,0)|0;k=nx(b,2,87326,0)|0;c[46424]=k;a:do if((k|0)!=0|(c[46423]|0)!=0){k=Sy(b)|0;while(1){if(!k)break a;j=0;d=0;i=Jx(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[46423]|0;do if((f|0)==(k|0)&(g|0)!=0){f=yx(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=uk(m,d,k,i,f)|0;break b}}while(0);f=c[46424]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=yx(i,f)|0,(a[o>>0]|0)!=0):0)e=uk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Kx(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)vk(k,e);e=c[e>>2]|0;if(e|0)D_(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)vk(k,d);d=c[d>>2]|0;if(d|0)D_(d);e=e+1|0}k=Ty(b,k)|0}}while(0);l=p;return}function uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(b$(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=vH((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=xH(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=ry(e)|0;c[k>>2]=5;c[k+4>>2]=r;Pw(1,87335,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=uH(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){sE(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+wE(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function vk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+u$(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+u$(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;NK(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;sE(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function wk(a){a=a|0;var b=0,d=0,e=0;kh(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=fh(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ph(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else xh(a,b);return}function xk(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;yk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function yk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))yk(d)}else{wk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function zk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=Sy(a)|0;b=0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Gx(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=Ty(a,e)|0}return b|0}function Ak(b){b=b|0;var d=0,e=0,f=0,g=0;e=Sy(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=Ty(b,e)|0}return}function Bk(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;Ck(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[15686]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=Sy(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=Ty(a,d)|0}yj(a);e=+Dk(a);h[m>>3]=e;if(0){h[o>>3]=e;g1(n,87387,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}Ek(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}yj(a);Fk(a);Gk();h[m>>3]=+Dk(a);l=q;return}function Ck(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[45982]=vH((ay(a)|0)*24|0)|0;c[45981]=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=Ty(a,b)|0}i=Sy(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=uH(4)|0;g=c[45982]|0;k=c[45981]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[45981]=k+1}else{g=SL(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[45982]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l<m?m:l;c[k+120>>2]=d;break}d=uH(c[b+216>>2]<<2)|0;e=c[45982]|0;f=c[45981]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[45981]=f+1}while(0);i=Ty(a,i)|0}return}function Dk(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;Fk(a);g=c[45979]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[45980]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d<i?i:d}return +(d/b)}function Ek(a){a=a|0;var b=0;c[45983]=uH((ay(a)|0)<<2)|0;b=0;while(1){if((b|0)>=(ay(a)|0))break;c[(c[45983]|0)+(b<<2)>>2]=b;b=b+1|0}Fk(a);Hk(a);Ik(a);return}function Fk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[45979]=0;b=c[45980]|0;if(b|0){e=0;while(1){if((e|0)>=(c[45981]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){D_(d);b=c[45980]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){D_(d);b=c[45980]|0}e=e+1|0}D_(b)}c[45980]=uH((c[45981]|0)*40|0)|0;b=0;while(1){d=c[45981]|0;if((b|0)>=(d|0))break;k=uH(d<<2)|0;c[(c[45980]|0)+(b*40|0)+4>>2]=k;k=uH(c[45981]<<2)|0;l=c[45980]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[45980]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Gx(a,d)|0}e=Ty(a,e)|0}i=c[45981]|0;k=c[45982]|0;l=c[45980]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[45979]|0))c[45979]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]<j)h[g>>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function Gk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[45979]|0;l=c[45980]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function Hk(a){a=a|0;var b=0;b=c[45983]|0;_0(b,ay(a)|0,4,63);return}function Ik(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[45979]|0;k=c[45980]|0;g=c[45983]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){_0(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,64);g=c[45980]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(ph(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[45980]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function Jk(a,b){a=a|0;b=b|0;a=Kk(c[a>>2]|0)|0;b=Kk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function Kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ez(e)|0;e=Ex(g,e)|0;while(1){if(!e)break;e=Gx(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function Lk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[45980]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e<d&1)|0}function Mk(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+216>>2]=0;b=Ty(a,b)|0}return}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=xx(a,96579)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(N1(a,87402,e)|0)>=1):0)Pw(0,87409,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function Ok(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Pk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;il(a);b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(Ok(d)|0)==0:0)?(e=d+48|0,f=SL(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=SL(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=fh(f,h)|0;if(!i){ph(f,h,d)|0;break}else{xh(d,i);break}}i=c[d>>2]&3;Qk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function Qk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=uh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=SL(d)|0;d=SL(f)|0;f=$i(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[($i(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Rk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)qa(87498,87520,148,87529);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Sk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Sk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Tk(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(wj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Uk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;il(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;jl(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=Sy(b)|0;while(1){if(!h)break;g=Ex(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Gx(b,g)|0}h=Ty(b,h)|0}m=Sy(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(SL(m)|0):0){qh(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Ex(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Vk(l)|0){if(!(Tk(d,l)|0)){Wk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Rk(b,l,e,0);lh(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;xh(l,d);lh(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){xh(l,d);lh(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(wj(l,d)|0)!=0:0)if(!(a[191874]|0)){Rk(b,l,c[(c[o>>2]|0)+172>>2]|0,1);lh(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){lh(l);d=l;break}e=SL(e)|0;f=SL(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){vh(b,l);d=l;break}if((h|0)>(g|0)){Xk(b,e,f,l);d=l;break}e=Rx(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Xk(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(wj(l,e)|0))break;if(!(a[191874]|0)){lh(l);Rk(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Xk(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Gx(b,l)|0}m=Ty(b,m)|0}if((ig(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=vH(4)|0;else d=xH(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Vk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Wk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=_k(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=_k(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=fh(f,e)|0;if(h|0){Rk(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Xk(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)qa(87541,87520,89,87566);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Yk(a,e)|0;else f=Zk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;Ki(ph(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))qa(87577,87520,103,87566);else return}function Yk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=uh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(fz(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Zk(a){a=a|0;var b=0;b=uh(a)|0;Sk(a,b);return b|0}function _k(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=SL(b)|0;return b|0}function $k(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=ig(a)|0;h=Sy(a)|0;while(1){if(!h)break;b=Jx(j,h)|0;i=0;while(1){if(!b)break;l=Kx(j,b,h)|0;if(oz(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Tk(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Rk(a,k,b,0);mh(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){al(b,e,k);b=l;i=k;continue}else{al(e,b,k);b=l;i=k;continue}b=hh(b,e)|0;if(!b){vh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}mh(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}xh(k,b);m=i;b=l;i=m}h=Ty(a,h)|0}return}function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=bl(a)|0;e=bl(b)|0;cl(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function bl(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function cl(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))qa(87602,87630,81,87640);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=fh(d,e)|0,j|0):0)?wj(f,j)|0:0){xh(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=ig(d)|0;j=g+-48|0;i=dl(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ph(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=fh(d,e)|0;if(g|0?wj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=ph(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=ph(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;kh(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ph(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;kh(g)}}}while(0);return}function dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;el(a,e,c[b+236>>2]|0,2);b=uh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function el(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function fl(a){a=a|0;var b=0;Uk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];Hi(a);mi(a,0);gl(a);$k(a);hl(a);return}function gl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=ig(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;el(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=fz(k)|0;sh(d,e);qh(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function hl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;kh(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;kh(d);d=c[g>>2]|0}sh(ig(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function il(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=Sy(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){UL(f);d=c[e>>2]|0}c[d+212>>2]=0;f=Ty(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=Sy(h)|0;a:while(1){if(!d)break;j=Ty(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=ry(d)|0;g=ry(b)|0;c[n>>2]=f;c[n+4>>2]=g;Pw(0,87649,n)|0;dz(h,d)|0;d=j;continue}VL(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Ex(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(h,g)|0}}k=k+1|0}l=o;return}function jl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=uH((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=uh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ph(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=Sy(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Gx(e,f)|0}j=Ty(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function kl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;Bi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;Ci(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function ll(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Sy(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Ex(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(b,g)|0}h=Ty(b,h)|0}ml(b);return}function ml(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;ml(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=Sy(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Ex(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Gx(b,h)|0}i=Ty(b,i)|0}return}function nl(a){a=a|0;var b=0,c=0,d=0;d=tM(a)|0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;ol(b,d);b=Gx(a,b)|0}c=Ty(a,c)|0}yw(d)|0;return}\n  function yH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=C_(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ka(62,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[15686]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=99176;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;ca(29,j|0,99132,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ha(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=$(27,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ha(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[46441]=(e|0)>-1?e:30;t=D3(185768,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ha(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[15686]|0;m=0;while(1){o=0;j=_(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=$(28,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ja(25,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;aa(91,99176,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;ca(29,a|0,99194,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;ca(29,a|0,99194,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ha(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ha(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ha(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[46481]|0;g=c[46482]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=99176;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;ca(29,a|0,99198,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);D_(t|0);l=u;return f|0}function zH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function AH(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[46484]=b;c[46491]=0;c[46482]=0;c[46481]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[46481]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[46482]=k;b=b+1|0;f=k}b=g+164|0}b=c[46492]|0;if(!b)b=vH(h<<2)|0;else b=xH(b,h<<2)|0;c[46492]=b;c[46493]=0;b=c[46486]|0;if(!b)b=vH(c[46481]<<2)|0;else b=xH(b,c[46481]<<2)|0;c[46486]=b;c[46485]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=uH((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=uH(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function BH(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=GL(c[46481]|0)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){IL(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=JL(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){IL(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[46481]|0)){Pw(1,99530,k)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=ry(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;Pw(3,99552,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);HL(m);l=o;return}function CH(){var b=0,d=0,e=0;b=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function DH(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=uH(c[46481]<<2)|0;e=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=QH(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=RH(f,e)|0;while(1){if((SH(a)|0)<=1)break;WH(a,c[(VH(UH(TH(a)|0)|0)|0)+8>>2]|0)}D_(a);a=0;while(1){if((a|0)>=(e|0))break;D_(c[f+(a<<2)>>2]|0);a=a+1|0}D_(f);if((c[46485]|0)==((c[46481]|0)+-1|0)){XH();return}else qa(99275,99305,523,99310)}function EH(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[46491]|0;f=c[46485]|0;j=c[46486]|0;k=c[46441]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[46491]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[46491]=f}return a|0}function FH(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[46487]=0;c[46488]=2147483647;d=c[a+16>>2]|0;c[46489]=c[d+284>>2];c[46490]=c[d+288>>2];if(b)PH(a);else OH(a);return c[46487]|0}function GH(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){KH(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){KH(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){KH(h,g);break}else{KH(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=LH(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((LH(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;MH(a,b);n=c[g+16>>2]|0;NH(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{Pw(1,99236,n)|0;bb(185768,1)}}function HH(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;JH();m=uH((c[46483]<<2)+4|0)|0;d=c[46483]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[46484]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[46483]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){D_(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}D_(m);return}function IH(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[46485]|0))break;a=c[(c[46486]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=FH(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){KH(g,f>>>1);break}else{KH(a,(f|0)/-2|0);break}}while(0);b=b+1|0}CH();return}function JH(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[46483]=-2147483647;b=(c[(c[46484]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[46483]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[46483]=f-g;c[h>>2]=0}l=i;return}function KH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function LH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function MH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[46486]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function NH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function OH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))OH(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){OH(b);a=c[i>>2]|0}d=d+1|0}return}function PH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))PH(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){PH(b);a=c[i>>2]|0}d=d+1|0}return}function QH(a){a=a|0;var b=0;b=uH(16)|0;c[b>>2]=a;c[b+4>>2]=eI(a,b)|0;c[b+12>>2]=b;return b|0}function RH(a,b){a=a|0;b=b|0;var d=0,e=0;e=uH(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;WH(e,d);d=d+-1|0}return e|0}function SH(a){a=a|0;return c[a+4>>2]|0}function TH(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;WH(a,0);return b|0}function UH(a){a=a|0;return dI(c[a>>2]|0,0,0)|0}function VH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)qa(99324,99305,463,99338);g=a+48|0;d=$H(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=$H(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)aI(c[d>>2]|0,0,b);else aI(c[f>>2]|0,0,0-b|0);bI(a);return cI(d,f)|0}function WH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function XH(){NH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0,1)|0;YH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0);return}function YH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))YH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){YH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)ZH(b);return}function ZH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=(_H(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=(_H(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function _H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function $H(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function bI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){Pw(1,99427,h)|0;bb(185768,1)}g=c[46485]|0;c[d>>2]=g;d=c[46486]|0;c[46485]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){Pw(1,99461,h+8|0)|0;bb(185768,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){Pw(1,99496,h+16|0)|0;bb(185768,1)}else{l=h;return}}function cI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else qa(99350,99305,327,99397);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else qa(99408,99305,335,99397)}else i=a;return i|0}function dI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=$H(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=dI(h,a,d)|0}else if(($H(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=dI(i,a,d)|0}else if(($H(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function eI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){bI(g);a=(eI(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){bI(f);a=(eI(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function fI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,99560)|0;if(!d)d=30;else d=a2(d)|0;return yH(a,b,c,d)|0}function gI(a){a=+a;return +((c[46369]|0)==0?a:+h[22916]-a)}function hI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[46494]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];iI(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];jI(e,99571,+h[b+352>>3]);jI(e,99578,t*.013888888888888888);jI(e,99578,s*.013888888888888888);kI(e);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){lI(e,99580,JA(ry(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];mI(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ez(i)|0;b=nI(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=JA(yx(i,c[46384]|0)|0)|0;jI(e,99578,+h[(c[g>>2]|0)+32>>3]);jI(e,99578,+h[(c[g>>2]|0)+40>>3]);lI(e,99578,b);lI(e,99578,OL(i,c[46387]|0,108041)|0);lI(e,99578,c[c[(c[g>>2]|0)+8>>2]>>2]|0);lI(e,99578,OL(i,c[46378]|0,134232)|0);b=OL(i,c[46379]|0,191979)|0;if(!(a[b>>0]|0))b=OL(i,c[46378]|0,131718)|0;lI(e,99578,b);kI(e)}i=Ty(d,i)|0}o=f<<24>>24==0;n=Sy(d)|0;while(1){if(!n)break;m=Ex(d,n)|0;while(1){if(!m)break;if(o){f=191979;j=191979}else{j=xx(m,108373)|0;f=xx(m,108382)|0;f=f|0?f:191979;j=j|0?j:191979}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}lI(e,0,108368);oI(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);oI(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);pI(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=ez(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;lI(e,99578,nI(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q)}lI(e,99578,OL(m,c[46415]|0,108041)|0);lI(e,99578,OL(m,c[46406]|0,134232)|0);kI(e);m=Gx(d,m)|0}n=Ty(d,n)|0}qI(99586,e);l=r;return}function iI(a){a=a|0;var b=0.0;if(c[46369]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[22916]=b;h[22917]=b*.013888888888888888}return}function jI(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)qI(b,a);h[e>>3]=c;Y0(d,99592,e)|0;qI(d,a);l=f;return}function kI(b){b=b|0;a[191875]=10;lb[c[46494]&127](b,191875)|0;return}function lI(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)qI(b,a);qI(c,a);return}function mI(a,b){a=a|0;b=b|0;var d=0.0;jI(a,99578,+h[b>>3]*.013888888888888888);if(!(c[46369]|0))d=+h[b+8>>3];else d=+h[22916]-+h[b+8>>3];jI(a,99578,d*.013888888888888888);return}function nI(a,b){a=a|0;b=b|0;var c=0;c=Oz(a,b)|0;b=JA(c)|0;Qz(a,c)|0;return b|0}function oI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=JA(ry(d)|0)|0;else{f=ez(d)|0;d=nI(f,(A$(ry(d)|0,58)|0)+1|0)|0}lI(b,99578,d);if(e|0?a[e>>0]|0:0)lI(b,104958,JA(e)|0);return}function pI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;qI(99578,a);c[f>>2]=b;Y0(e,134313,f)|0;qI(e,a);l=d;return}function qI(a,b){a=a|0;b=b|0;lb[c[46494]&127](b,a)|0;return}function rI(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;CG(1);iI(d);Tw(H,1024,Y+240|0);LM(d,1,99597,191979)|0;LM(d,1,99601,191979)|0;c[46376]=LM(d,1,138034,191979)|0;c[46375]=LM(d,1,137966,191979)|0;LM(d,2,99597,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){LM(d,1,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){LM(d,2,99611,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){LM(d,2,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){LM(d,2,99614,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){LM(d,2,99622,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=LM(d,0,99611,191979)|0;w=LM(d,0,99630,191979)|0;v=LM(d,0,99637,191979)|0}z=LM(d,0,99645,191979)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=Sy(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[46369]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;Y0(G,99648,J)|0;Ww(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;Y0(G,99663,Q)|0;Ww(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;zx(y,99597,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;Y0(G,99669,X)|0;zx(y,99597,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;Y0(G,99592,K)|0;rx(s,c[46375]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;Y0(G,99592,L)|0;rx(s,c[46376]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;Y0(G,99669,M)|0;zx(s,99607,G)|0;j=c[t>>2]|0}if(b$(c[c[j+8>>2]>>2]|0,103194)|0){if(c[46400]|0?(UJ(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=xx(s,99679)|0;if(!j)j=8;else j=a2(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[46369]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[22917]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;Y0(G,99692,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[46369]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[22917]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;Y0(G,99692,O)|0}Ww(H,G)|0;n=n+1|0}k=c[46400]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;rx(s,k,t)|0}}else{sI(y,c[j+12>>2]|0,H);Yw(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;zx(s,99601,t)|0}a:do if((c[46367]|0)>0){t=Ex(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[22916]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;Y0(G,99702,P)|0;Ww(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[22916]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;Y0(G,99715,R)|0;Ww(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;Y0(G,99669,S)|0;Ww(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;zx(t,99597,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;Y0(G,99669,T)|0;zx(t,99611,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;Y0(G,99669,U)|0;zx(t,99607,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;Y0(G,99669,V)|0;zx(t,99614,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;Y0(G,99669,W)|0;zx(t,99622,G)|0}while(0);t=Gx(d,t)|0}}else j=u;while(0);u=j;y=Ty(d,y)|0}tI(d,z,x,w,v);Xw(H);if(b[(c[I>>2]|0)+136>>1]&1)FM(d);c[f>>2]=i;c[g>>2]=u;CG(0);l=Y;return}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[46369]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[22916]-+h[b+24>>3]-g;g=+h[22916]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;Y0(j,99753,k)|0;Ww(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;sI(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function tI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[46369]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[22916];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;Y0(n,99728,j)|0;rx(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[46369]|0)==0?t:+h[22916]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;Y0(n,99669,p)|0;rx(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;Y0(n,99748,q)|0;rx(b,f,n)|0;h[o>>3]=t*.013888888888888888;Y0(n,99748,o)|0;rx(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;tI(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function uI(a){a=a|0;var b=0;b=l;l=l+16|0;rI(a,b,b+4|0);l=b;return}function vI(){return Cw(20636,c[4555]|0)|0}function wI(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function xI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function yI(a){a=a|0;yw(a)|0;return}function zI(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=AI(e)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=d;return}function AI(a){a=a|0;var b=0,d=0,e=0;b=uH(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function BI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=AI(f)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=e;return}function CI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(nb[c[a>>2]&63](a,e,4)|0)!=0&1;l=d;return b|0}function DI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(nb[c[a>>2]&63](a,f,4)|0)!=0&1;l=e;return d|0}function EI(a){a=a|0;return Ew(a)|0}function FI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH((Ew(a)|0)<<3)|0;b=d;a=Aw(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function GI(){var a=0,b=0,d=0,e=0;a=vH(40)|0;b=a;d=20672;e=b+36|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[a+36>>2]=0;return Cw(a,c[4555]|0)|0}function HI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=d+36|0;a=c[d>>2]|0;if(!a)a=vH(20)|0;else c[d>>2]=c[a>>2];f=b+8|0;e=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=e;c[a+16>>2]=c[b+16>>2];return a|0}function II(a,b,d){a=a|0;b=b|0;d=d|0;d=d+36|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}function JI(a){a=a|0;nb[c[a>>2]&63](a,0,64)|0;return}function KI(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;yw(a)|0;a=c[b+36>>2]|0;while(1){if(!a)break;d=c[a>>2]|0;D_(a);a=d}D_(b);return}function LI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g+8>>2]=b;c[g+12>>2]=d;c[g+16>>2]=e;e=c[(nb[c[a>>2]&63](a,g,1)|0)+16>>2]|0;l=f;return e|0}function MI(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){NI(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];OI(d,q);p=d+16|0;NI(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];OI(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{NI(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];OI(d,q);n=d+16|0;NI(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];OI(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];OI(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;MI(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function NI(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function OI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[46495]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];ZG(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[22918];e=b+8|0;h[e>>3]=+h[e>>3]-+h[22919];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function PI(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[46495]=m&3;m=m&1;a[191877]=m;if(!(m<<24>>24))RI(b);else QI(b);SI(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[191877]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[46495]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[46495]|0){case 0:{q=m+16|0;c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}case 1:{NI(o,-+h[m+40>>3],+h[m+16>>3]);c[45836]=c[o>>2];c[45837]=c[o+4>>2];c[45838]=c[o+8>>2];c[45839]=c[o+12>>2];break}case 2:{NI(p,+h[m+16>>3],-+h[m+40>>3]);c[45836]=c[p>>2];c[45837]=c[p+4>>2];c[45838]=c[p+8>>2];c[45839]=c[p+12>>2];break}case 3:{NI(q,+h[m+24>>3],+h[m+16>>3]);c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}default:{}}TI(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];UI(b,s)}if(!0){l=w;return}if(!(a[191877]|0)){n=+h[22919];k=+h[22918];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;Y0(s,99989,v)|0}else{k=+h[22918];n=+h[22919];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;Y0(s,99774,u)|0}n1(s)|0;ab()}function QI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((fz(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;QI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function RI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((fz(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;RI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function SI(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[46368]|0)!=0:0)){u=g<<16>>16==0;n=Sy(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Ex(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=WI(e)|0;t=j+i|0;if(t|0){q=h+j+o+(ay(e)|0)|0;r=uH(q*40|0)|0;s=uH(t*40|0)|0;NI(M,2147483647.0,2147483647.0);g=M+16|0;NI(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=Sy(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];ZI(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Ex(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];Pw(0,100801,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){_I(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];Pw(0,100836,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$I(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];Pw(0,100876,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];Pw(0,100916,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));aJ(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=PL(e,nx(e,0,100952,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];SP(r,q,s,t,O)|0;if(0)bJ(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;cJ(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];kM(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;Pw(0,100997,R)|0}}else{R=c[15686]|0;c[Q>>2]=f;c[Q+4>>2]=t;g1(R,100964,Q)|0}D_(r);D_(s)}}l=S;return}function TI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[22918]!=0.0|+h[22919]!=0.0|(c[46495]|0)!=0){d=Sy(a)|0;while(1){if(!d)break;if(c[46495]|0)bN(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[46367]|0)==1){b=Ex(a,d)|0;while(1){if(!b)break a;VI(b);b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}MI(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function UI(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function VI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[191874]|0)==0?(a[d+112>>0]|0)!=6:0){q=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;Pw(1,100784,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function WI(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((fz(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(WI(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function XI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function YI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function ZI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[191877]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function _I(a,b){a=a|0;b=b|0;b=fL(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function $I(a,b){a=a|0;b=b|0;var d=0;b=fL(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function aJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));aJ(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((fz(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];YI(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function bJ(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[15686]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;g1(q,101039,o)|0;a:do if(0>=2){E1(101099,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=191979;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;g1(q,101108,p)|0;o=o+1|0;a=a+40|0}E1(101151,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;g1(q,101160,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function cJ(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function dJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]<j?d:b)>>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]<i?d:b)+8>>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function eJ(a){a=a|0;PI(a,1);return}function fJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=ZL(xx(a,102500)|0)|0;if(b){b=gJ(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=uH(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=ry(a)|0;Pw(0,101208,d)|0}l=e;return}function gJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[46496]|0;if(!d){d=Cw(20708,c[4555]|0)|0;c[46496]=d}d=nb[c[d>>2]&63](d,b,512)|0;do if(!d){g=L1(b,135739)|0;if(!g){c[e>>2]=b;Pw(0,101257,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(O0(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(N1(f,101285,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(P0(f,101314)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;Pw(0,101319,i)|0;d=0}else f=12;if((f|0)==12){q=vH(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[46497]|0;c[46497]=o+1;c[q+12>>2]=o;J1(j3(g)|0,j)|0;o=c[j+36>>2]|0;n=vH(o+1|0)|0;c[q+52>>2]=n;Z1(g,0,0)|0;g3(n,o,1,g)|0;a[n+o>>0]=0;o=c[46496]|0;nb[c[o>>2]&63](o,q,1)|0;a[q+16>>0]=d;d=q}s1(g)|0}while(0);l=p;return d|0}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+52>>2]|0);return}function iJ(a){a=a|0;D_(c[(c[a+16>>2]|0)+12>>2]|0);return}function jJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;$B(b,f)|0;$B(b,150517)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=ZL(f)|0;if(!e){c[k>>2]=f;Pw(0,101358,k)|0;break}g=L1(e,135739)|0;if(!g){c[m>>2]=e;Pw(0,101386,m)|0;break}while(1){f=YL(g)|0;if(!f)break;$B(b,f)|0}$B(b,150517)|0;s1(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function kJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((V$(e,101414,3)|0)!=0?(V$(e,101418,5)|0)!=0:0)?(V$(e,101424,3)|0)!=0:0)?(V$(e,101428,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}aC(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;aC(b,10)|0}return}function lJ(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[46496]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];fC(b,101436,e);$B(b,101454)|0;kJ(b,d);$B(b,101472)|0;$B(b,101487)|0}g=c[46496]|0;d=nb[c[g>>2]&63](g,d,8)|0}}while(0);l=f;return}function mJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=SM(b)|0;break}default:{switch(nJ(b)|0){case 2:break;case 1:{f=SM(b)|0;break a}default:{f=b;break a}}if(!(c[46498]|0)){Pw(0,101499,e)|0;c[46498]=1;f=b}else f=b}}while(0);if(!(c[46499]|0))Tw(185996,0,0);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=92;break}default:{}}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}h=a[e>>0]|0;c[46500]=d+1;a[d>>0]=h;e=e+1|0}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=41;if((f|0)!=(b|0))D_(f);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}a[d>>0]=0;h=c[46499]|0;c[46500]=h;l=g;return h|0}function nJ(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function oJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((TU(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[46504]|0;if((a|0)>(c[46503]|0)){if(!f)a=vH(a<<5)|0;else a=xH(f,a<<5)|0;c[46504]=a;g=c[b>>2]|0;c[46503]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((xU(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];oV(i,m)}a=m+4|0;if(!(pJ(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[46505]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function pJ(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46506]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=xH(c[46505]|0,a<<4)|0;c[46505]=b;if(!b){Pw(1,101589,d)|0;a=1;break}else{c[46506]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function qJ(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+1;do if((d|0)<=0){d=vH(4800)|0;c[46505]=d;if(!d){Pw(1,101612,a)|0;a=1;break}c[46506]=300;c[46508]=0;c[46509]=0;if(0){EL();a=0}else a=0}else a=0;while(0);l=b;return a|0}function rJ(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+-1;if((d|0)<=1?(D_(c[46505]|0),0):0){d=c[15686]|0;g=c[46508]|0;f=c[46509]|0;e=+FL();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;g1(d,101650,a)|0}l=b;return}function sJ(a,b){a=a|0;b=b|0;return tJ(a,b,0)|0}function tJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[46508]=(c[46508]|0)+1;H=c[b+80>>2]|0;c[46509]=(c[46509]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){Pw(1,101693,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(uJ(H,B,b)|0)){g=H<<3;if((g|0)>(c[46510]|0)){f=c[46511]|0;if(!f)f=vH(H<<7)|0;else f=xH(f,H<<7)|0;c[46511]=f;c[46510]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=ry(f)|0;Pw(1,101800,i)|0;f=0;break}o=H+-1|0;q=c[46511]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;Pw(1,101735,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;Pw(1,101735,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((TU(t,u,I)|0)<0){Pw(1,101839,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[46504]|0;if((g|0)>(c[46503]|0)){if(!f)f=vH(g<<5)|0;else f=xH(f,g<<5)|0;c[46504]=f;g=c[i>>2]|0;c[46503]=g}j=c[46511]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((xU(f,g,G,w,y)|0)<0){Pw(1,101878,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,y)}n=y+4|0;if(!(pJ(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[46505]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;vJ(B,H,c[46505]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=ry(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=ry(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;Pw(0,101916,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,J);vJ(B,H,c[J>>2]|0,c[J+4>>2]|0,10);D_(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[46505]|0}else f=0}else f=0}while(0);l=L;return f|0}function uJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[15686]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]<f;e=v&1;C=b+(w<<5)|0;u=+h[C>>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]<m;j=t&1;y=b+(w<<5)+8|0;k=+h[y>>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;g1(M,102116,I)|0;wJ(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=xJ(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=xJ(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q<s;h[(B?(w?G:C):w?E:F)>>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m<f;h[(B?(w?G:C):w?E:F)+8>>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;Pw(1,102070,H)|0;wJ(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f<g)?!(f>+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){E1(102159,42,1,M)|0;wJ(d);g=+h[b>>3];f=+h[d>>3]}if(f<g)h[d>>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g<f){h[e>>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f<g)?!(f>+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){E1(102202,39,1,M)|0;wJ(d);g=+h[e>>3];f=+h[i>>3]}if(f<g){h[i>>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f<g)h[e>>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){Pw(1,102025,k)|0;wJ(d);e=1}l=R;return e|0}function vJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]<m)h[e>>3]=m}f=f+1|0}g=g+1|0}}return}function wJ(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[15686]|0;f=b+80|0;c[g>>2]=c[f>>2];g1(e,102242,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;g1(e,102253,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?102284:102296;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;g1(e,102312,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?102284:102296;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;g1(e,102363,j)|0;l=m;return}function xJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function yJ(a,b){a=a|0;b=b|0;return tJ(a,b,1)|0}function zJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;g=j;i=1;f=b;while(1){h=f;f=c[(c[f+16>>2]|0)+172>>2]|0;if(!((f|0)!=0&(h|0)!=(f|0)))break;else i=i+1|0}if((i|0)>=21)g=uH(i<<2)|0;h=0;f=b;while(1){if((h|0)>=(i|0))break;c[g+(h<<2)>>2]=f;h=h+1|0;f=c[(c[f+16>>2]|0)+172>>2]|0}AJ(a,g,i,d,e);if((i|0)>20)D_(g);l=j;return}function AJ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];BJ(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];BJ(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[191874]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];oV(A,B);QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){CJ(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];DJ(G,A)}QK(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,j,z,A)}while(0);l=K;return}function BJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function CJ(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[22920]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[22921]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[45840];c[a+4>>2]=c[45841];c[a+8>>2]=c[45842];c[a+12>>2]=c[45843];return}function DJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function EJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)FJ(a,b,d,f);else{D=uH((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o<m?o:m}k=(g|16777216|0)==83886080;n=(A|0)==4;j=(g|0)==16777216;e=0;i=0;while(1){if((i|0)>=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=uH(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];_O(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];bP(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];bP(a,B,4);D_(G);break}else qa(102412,102423,737,102432)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=uH(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=uH(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=uH(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;_O(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=vH((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];aP(a,G,j,0,0,f&255);D_(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}_O(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];bP(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=uH(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];_O(a,i,g,f);D_(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];bP(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];bP(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];bP(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=uH(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];_O(a,G,6,f);D_(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];bP(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];bP(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];bP(a,B,2);break}else qa(102412,102423,714,102432)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=uH(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;_O(a,w,d,f);D_(w);G=uH(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=uH(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);y=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;_O(a,y,d,f);D_(y);y=uH(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);G=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;_O(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;bP(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 268435456:break;default:break a}G=uH(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];_O(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;bP(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;bP(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;bP(a,B,2);D_(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=uH(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;_O(a,y,d,f);D_(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];bP(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;bP(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;bP(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=uH(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;_O(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=uH(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;_O(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];_O(a,G,d,f);D_(G);break}}while(0);D_(D)}l=E;return}function FJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];aP(a,b,d,0,0,e&255);aP(a,g,7,0,0,0);l=f;return}function GJ(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function HJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=89)if((a|0)==92)a=2;else return ((a|0)==91?3:(a|0)==94?4:0)|0;else a=1}else a=0;return a|0}function IJ(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=uH(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1616;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(QL(xx(b,102485)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+SJ(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f<k?f:k)*72.0;k=+(~~(k+(k>=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=KL(b,c[46390]|0,d,0)|0;V=+LL(b,c[46392]|0,0.0,-360.0)+m;if(!e){U=+LL(b,c[46393]|0,0.0,-100.0);I=KL(b,c[46389]|0,4,0)|0;T=+LL(b,c[46394]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=xx(b,102470)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=N1(d,102477,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(ez(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+TJ(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+TJ(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=xx(b,105999)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){CC(A,ez(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[G>>2]=e;c[G+4>>2]=d;Pw(0,102561,G)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(b$(d,102493)|0)==0:0){e=xx(b,102500)|0;CC(D,ez(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[H>>2]=e|0?e:102510;c[H+4>>2]=d;Pw(0,102516,H)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=xx(b,102602)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];ub[p&63](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=NL(b,c[46395]|0,134226)|0;if((a[g>>0]|0)==115?(b$(g,105204)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((QL(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=ry(b)|0;M=ry(ez(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;Pw(0,102611,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((QL(NL(b,c[46386]|0,134226)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P<f){f=+h[_>>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P<r?r-P+x:x)+P}j=(W|0)>1;g=j?W:1;a:do if((e|0)<3){g=uH(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=uH(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+u$(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;w$((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;w$(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;w$(+K(+o,+x)+v,R,S);x=+u$(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{ub[c[i+4>>2]&63](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);w$(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function JJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[46512]=f;f=W_(f)|0;f=uH(((f|0)>1?f:1)+1|0)|0;b=LJ(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];Pw(1,102446,e)|0;c[46512]=102467;b=LJ(a,d,1,f)|0}D_(f);MJ(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((QL(NL(a,c[46395]|0,134226)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(QL(NL(a,c[46386]|0,134226)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];NJ(b,j,a);OJ(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];PJ(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function KJ(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=uH(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+LL(a,c[46376]|0,1797693134862315708145274.0e284,0.0);b=+LL(a,c[46375]|0,1797693134862315708145274.0e284,0.0);f=f<b?f:b;f=b==1797693134862315708145274.0e284&f==1797693134862315708145274.0e284?.05:f>0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=KL(a,c[46390]|0,g,0)|0;i=uH((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function LJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=uH(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[46512]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=uH(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[46512]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[46512]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[46512]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=LJ(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=n1(f)|0;c[46512]=(c[46512]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[46512]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=uH(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=n1(f)|0;c[k+52>>2]=kH(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[46512]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[46512]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[46512]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[46512]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[46512]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[46512]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){QJ(g,r);g=0}else if((E|0)==27){QJ(g,r);g=0}else if((E|0)==34){QJ(g,r);g=0}else if((E|0)==36){QJ(g,r);g=0}else if((E|0)==38){QJ(g,r);g=0}else if((E|0)==51){c[46512]=i+1;c[g+48>>2]=m}else if((E|0)==59){QJ(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function MJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;MJ(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=xx(d,102470)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=N1(j,102477,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function NJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))OJ(p,q,+h[b+8>>3]+ +(d|0));else OJ(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];NJ(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function OJ(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function PJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];OJ(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;OJ(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];PJ(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function QJ(a,b){a=a|0;b=b|0;RJ(a);D_(b);return}function RJ(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;RJ(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}D_(c[a+60>>2]|0);nH(c[a+52>>2]|0);D_(c[e>>2]|0);D_(a);return}function SJ(a){a=a|0;var b=0.0,d=0.0;d=+LL(a,c[46376]|0,0.0,.01);b=+LL(a,c[46375]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function TJ(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05<a&1)+c|0)*b)}function UJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==89&1;return a|0}function VJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[46513]|0;a:do if(!f)d=0;else{g=c[46514]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(b$(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function WJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(ZL(xx(d,102500)|0)|0)if((a[b>>0]|0)==101?(b$(b,102659)|0)==0:0){d=101;g=6}else{b=102493;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(b$(b,102493)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=20744;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(b$(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=XJ(b)|0;return b|0}function XJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=VJ(b)|0;if(!d){f=c[46514]|0;d=f+1|0;c[46514]=d;e=c[46513]|0;if(!e)d=vH(d<<2)|0;else d=xH(e,d<<2)|0;c[46513]=d;d=uH(16)|0;c[(c[46513]|0)+(f<<2)>>2]=d;c[d>>2]=c[5186];c[d+4>>2]=c[5187];c[d+8>>2]=c[5188];c[d+12>>2]=c[5189];e=n1(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(b$(b,102493)|0)==0:0){e=1;break}c[g>>2]=c[5186];c[g+4>>2]=e;Pw(0,102664,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function YJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function ZJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function _J(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){D_(c[a+44>>2]|0);D_(a)}return}function $J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4208;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?103330:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=_Q(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(nK(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=ry(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;Pw(0,103332,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1664)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(nK(d,0,g,e,c[n>>2]|0,h)|0)oK(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function aK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[46517]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];ZG(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[46517]|0)){f=c[46518]|0;g=c[46520]|0;i=c[46519]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[46521]=g;i=c[g+44>>2]|0;c[46519]=i;f=c[g+8>>2]|0;c[46518]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[46520]=g;c[46517]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[45844];c[p+4>>2]=c[45845];c[p+8>>2]=c[45846];c[p+12>>2]=c[45847];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((mK(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function bK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=bR(b,d,0,f,g)|0;else b=0;return b|0}function cK(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){PO(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[46515]|0)<(K|0)){i=K+5|0;c[46515]=i;j=c[46516]|0;if(!j)i=vH(i<<4)|0;else i=xH(j,i<<4)|0;c[46516]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=dK(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=OL(f,0,103230)|0;UO(e,s);WO(e,OL(f,0,103238)|0);j=0;i=1;break}if(i&8|0){s=OL(f,0,103246)|0;UO(e,s);WO(e,OL(f,0,103254)|0);j=0;i=1;break}if(i&4|0){s=OL(f,0,103262)|0;UO(e,s);WO(e,OL(f,0,103270)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=eK(f)|0;i=1}else{j=eK(f)|0;if(!((uG(j,L,n)|0)<<24>>24)){WO(e,j);i=1}else{WO(e,c[L>>2]|0);i=c[L+4>>2]|0;m=KL(f,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(e,134232,m,k);else XO(e,i,m,k);i=(D&2)>>>1|2}}s=fK(e,f)|0}else{s=OL(f,0,103214)|0;UO(e,s);WO(e,OL(f,0,103222)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(b$(m,102493)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{UO(e,134297);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,o,j)|0)>1){c[z>>2]=ry(f)|0;Pw(3,103278,z)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(!y)gK(e,f)}else{if(!x){if((t|0)==0?(WE(e,o,j,1)|0)>1:0){c[A>>2]=ry(f)|0;Pw(3,103278,A)|0}_O(e,c[46516]|0,K,0);break}if(!p){UO(e,134297);_O(e,c[46516]|0,K,i&255);UO(e,s);bP(e,(c[46516]|0)+32|0,2);break}i=i&255;if(q){_O(e,o,K,i);break}else{EJ(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=xx(f,105999)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(b$(m,102493)|0)==0:0){m=xx(f,102500)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,n,j)|0)>1){c[G>>2]=ry(f)|0;Pw(3,103278,G)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(y)break;gK(e,f);break}if(x)if(!(D&12)){_O(e,n,K,m);break}else{EJ(e,n,K,D,m);break}else{if((WE(e,n,j,1)|0)>1){c[H>>2]=ry(f)|0;Pw(3,103278,H)|0}_O(e,c[46516]|0,K,0);break}}while(0);R=c[46516]|0;dP(e,o,R,K,i,NL(f,c[46396]|0,134226)|0)}D_(c[L>>2]|0);oH(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)PO(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);QO(e)}l=P;return}function dK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=jK(d,f)|0;if(e|0)YO(b,e);e=c[46402]|0;if((e|0?(g=yx(d,e)|0,g|0):0)?a[g>>0]|0:0)fP(b,+LL(d,c[46402]|0,1.0,0.0));l=h;return c[f>>2]|0}function eK(a){a=a|0;return iK(a,131718)|0}function fK(b,d){b=b|0;d=d|0;d=OL(d,c[46378]|0,191979)|0;d=a[d>>0]|0?d:134232;UO(b,d);return d|0}function gK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];hK(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;bP(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;bP(a,e,2);l=d;return}function hK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function iK(b,d){b=b|0;d=d|0;var e=0;e=OL(b,c[46379]|0,191979)|0;if(!(a[e>>0]|0)){e=OL(b,c[46378]|0,191979)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function jK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=OL(b,c[46387]|0,191979)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=AF(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(b$(f,108075)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(b$(f,103290)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(b$(f,103308)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(b$(f,103298)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(b$(f,131253)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((b$(f,103315)|0)==0?kK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((b$(f,103323)|0)==0?lK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function kK(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function lK(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function mK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function nK(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];OJ(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{pK(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;pK(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{pK(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{pK(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];YG(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=qK(g,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+rK(j,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function oK(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=ry(a)|0;c[e+4>>2]=b;Pw(0,103393,e)|0;l=d;return}function pK(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];YG(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];MK(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];ZG(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function qK(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function rK(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function sK(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];ZG(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function tK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){PO(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;g1(g,103424,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];oH(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)PO(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);QO(a)}}l=n;return}function uK(a){a=a|0;RJ(c[(c[a+16>>2]|0)+12>>2]|0);return}function vK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4208;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?103330:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=BK(i,f)|0;if(!j){if(nK(e,i+16|0,h,f,15,0)|0)oK(e,f)}else if(nK(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=ry(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;Pw(0,103332,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function wK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];ZG(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function xK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];_G(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function yK(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)PO(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=dK(d,e)|0;fK(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=eK(e)|0;if(!((uG(i,s,n)|0)<<24>>24)){WO(d,i);i=1}else{WO(d,c[s>>2]|0);i=c[s+4>>2]|0;j=KL(e,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(d,134232,j,k);else XO(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(b$(j,103201)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];$O(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];EJ(d,r,4,f,i)}zK(d,e,o);D_(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)PO(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);QO(d)}l=w;return}function zK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];AK(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];hK(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];oH(b,10,c[j>>2]|0);fK(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];bP(b,q,2)}zK(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function AK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function BK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(b$(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=BK(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function CK(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function DK(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function EK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];ZG(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[46522]|0)){d=+h[22924];e=+h[22925];i=+h[22926]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[46523]=b;c[46524]=c[b+44>>2];c[46525]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?183416:183424)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?183424:183416)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{jM(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?183416:183424)>>3]=i;h[(o?183424:183416)>>3]=f}d=+h[22927];if(d==0.0){h[22927]=1.0;d=1.0}e=+h[22928];if(e==0.0){h[22928]=1.0;e=1.0}d=i/d;h[22924]=d;e=f/e;h[22925]=e;i=i*.5;h[22926]=i;h[22929]=f*.5;o=O((c[(c[46523]|0)+4>>2]|0)+-1|0,c[46525]|0)|0;c[46526]=(o|0)>0?o:0;c[46522]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[22929],!(e>p)):0){o=c[46525]|0;if((o|0)<3){a=+u$(f/i,d/p)<1.0;break}b=(c[46527]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[46524]|0;m=c[46526]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(mK(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[45860];c[u+4>>2]=c[45861];c[u+8>>2]=c[45862];c[u+12>>2]=c[45863];n=(mK(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[45860],c[t+4>>2]=c[45861],c[t+8>>2]=c[45862],c[t+12>>2]=c[45863],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(mK(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(mK(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[46527]=g;a=0;break}else if((b|0)==31){c[46527]=j;a=1;break}}else a=0}else a=0}else{c[46522]=0;a=0}while(0);l=x;return a&1|0}function FK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[46530]|0))d=+h[22932];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[22932]=d;c[46530]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+u$(g,e)<=d&1}else{c[46530]=0;a=0}l=j;return a|0}function GK(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){PO(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[46528]|0)<(p|0)){g=p+2|0;c[46528]=g;i=c[46529]|0;if(!i)g=vH(g<<4)|0;else g=xH(i,g<<4)|0;c[46529]=g}jK(f,j)|0;if(!(c[j>>2]&32))YO(e,21916);else YO(e,21912);g=c[46402]|0;if(g|0)fP(e,+LL(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){UO(e,OL(f,0,103230)|0);g=OL(f,0,103238)|0;WO(e,g);break}if(g&8|0){UO(e,OL(f,0,103246)|0);g=OL(f,0,103254)|0;WO(e,g);break}if(!(g&4)){g=iK(f,134232)|0;WO(e,g);fK(e,f)|0;break}else{UO(e,OL(f,0,103262)|0);g=OL(f,0,103270)|0;WO(e,g);break}}else{UO(e,OL(f,0,103214)|0);g=OL(f,0,103222)|0;WO(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{UO(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[46529]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}ZO(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);QO(e)}l=t;return}function HK(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=IK(b,e,f)|0;c[h+36>>2]=c[f+36>>2];nK(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function IK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(ez(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<<k&y){switch(k|0){case 0:{e=u;b=t;break}case 1:{e=r;b=q;break}case 2:{e=u;b=p;break}case 3:{e=o;b=q;break}default:{}}e=x+e|0;b=v+b|0;f=e-w|0;C=b-s|0;f=(O(C,C)|0)+(O(f,f)|0)|0;if((d|0)==0|(f|0)<(g|0))d=c[21924+(k<<2)>>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function JK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function KK(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;f=i+40|0;h=i;g=b+16|0;e=c[g>>2]|0;d=e+16|0;if(a[e+47>>0]|0){e=c[b>>2]&3;HK(f,c[((e|0)==3?b:b+48|0)+40>>2]|0,c[((e|0)==2?b:b+-48|0)+40>>2]|0,d);e=f;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));e=c[g>>2]|0}d=e+56|0;if(a[e+87>>0]|0){e=c[b>>2]&3;HK(h,c[((e|0)==2?b:b+-48|0)+40>>2]|0,c[((e|0)==3?b:b+48|0)+40>>2]|0,d);e=h;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0))}l=i;return}function LK(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];EK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];FK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];aK(0,b)|0;l=a;return}function MK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;XL(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((lb[b&127](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function NK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=lb[k&127](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;OK(f,a,b,k)}l=m;return}function OK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}MK(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function PK(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=uH(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=vH(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=xH(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=uH(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function QK(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ez(m)|0;B=PK(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[q&127](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;OK(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[g&127](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;OK(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;RK(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];YE((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function RK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=(kb[c[i>>2]&63](o)|0)&255;else j=0;sE(o,m,n);k=i+4|0;if((kb[c[k>>2]&63](d)|0)<<24>>24)c[n>>2]=0;if((kb[c[k>>2]&63](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=HE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=FE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)IE(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function SK(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function TK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){HK(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];UK(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+VK(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=pb[n&127](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,569,103498);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function UK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function VK(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function WK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){HK(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];UK(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+VK(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else qa(103508,103488,606,103532)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=pb[o&127](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,765,103532);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function XK(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function YK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){_K(d,e,f,g,h,i);break}if(!(k&1))qa(135312,103488,1231,103540);else{aL(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){$K(d,e,f,g,h,i);break}_K(d,e,f,g,h,i)}while(0);if((l|0)==6)ZK(d,e,f,g,h,i);return}function ZK(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function _K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s<p?s:p;n=s<o?s:o;while(1){if((t|0)>=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;cL(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;cL(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];cL(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;cL(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];cL(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function $K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function aL(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o<m?o:m;n=o<n?o:n;q=0;while(1){if((q|0)>=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;cL(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;cL(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];cL(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;cL(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];cL(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;QK(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function bL(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21940+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21940+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21972+(d<<5)+(b<<2)>>2]|0;return d|0}function cL(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function dL(b){b=b|0;var d=0,e=0;if((c[46433]|0)!=0|(c[46432]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,1)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,0)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function eL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[46433]|0;if(!((e|0)!=0?(a[(yx(b,e)|0)>>0]|0)!=0:0)){e=c[46432]|0;if(!e){e=0;break}if(!(a[(yx(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=fL(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}XL(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}XL(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+LL(b,c[46433]|0,-25.0,-180.0)*.017453292519943295+r;j=+LL(b,c[46432]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function fL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;Pw(1,103553,f)|0;d=0}l=h;return d|0}function gL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;hL(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];bM(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{iL(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function hL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function iL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)qa(135630,103488,1316,103615)}function jL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dL(b);return}function kL(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=lL(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+mL(+(n+-1|0),C);A=n+1|0;L=~~+mL(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+nL(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+nL(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+hb[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+mL(q+-1.5707963267948966,6.283185307179586);b=1;p=+mL(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=uH(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];oL(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)pL(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)qL(o,m,l,j,i,k);else{oL(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;oL(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)pL(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)qL(o,k,l,j,i,i+3.141592653589793);rL(J);return o|0}function lL(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=sL()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];tL(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}XL(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+uL(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];tL(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}vL(o);l=q;return o|0}function mL(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function nL(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function oL(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=xH(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function pL(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){qL(h,a,b,c,e+i,i);break}else{oL(h,+E(+i)*c+a,+F(+i)*c+a);break}}else oL(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function qL(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;oL(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);oL(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function rL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function sL(){var a=0;a=uH(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=uH(128e3)|0;return a|0}function tL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=xH(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function uL(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function vL(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=xH(c[a>>2]|0,b<<6)|0;return}function wL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)qa(103632,103643,203,103654);e=c[h>>2]|0;if(!e)qa(103668,103643,206,103654);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=xL(e)|0;if(!0)e=0;else{e=(AG(c[h>>2]|0)|0)==0;e=e?0:g}if(!((OP(b,d,e)|0)<<24>>24))yL(d,e);do if(e|0){f=c[g>>2]|0;b=c[15686]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;g1(b,103711,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;g1(b,103679,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function xL(a){a=a|0;var b=0;b=c[46531]|0;if((b|0)!=0?(O$(b,a)|0)==0:0)a=c[46540]|0;else{D_(b);c[46531]=n1(a)|0;a=e2(186124,22228,35,36,93)|0;c[46540]=a}return a|0}function yL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(V$(e,103745,4)|0)if((V$(e,103750,5)|0)!=0?(V$(e,103756,9)|0)!=0:0){g=4248;e=103766}else{g=8344;e=103802}else{g=6296;e=103783}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function zL(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function AL(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=30;c[a+124>>2]=63;c[a+128>>2]=55;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Cw(b,c[4555]|0)|0;c[a+144>>2]=b;return b|0}function BL(a,b,d){a=a|0;b=b|0;d=d|0;d=E_(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=n1(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=n1(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function CL(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b>>2]|0);D_(c[b+4>>2]|0);D_(b);return}function DL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=b$(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=b$(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(g<f)a=-1;else a=g>f&1}}while(0);return a|0}function EL(){eb(186164)|0;return}function FL(){var a=0,b=0;b=l;l=l+16|0;a=b;eb(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[46541]|0)-(c[46542]|0)|0)*.016666666666666666)}function GL(a){a=a|0;var b=0,d=0;b=uH(16)|0;a=(a|0)>2?a:2;d=uH(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function HL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function IL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function JL(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function KL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=i1(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function LL(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+c2(h,g);e=(h|0)==(c[g>>2]|0)?e:j<f?f:j}l=i;return +e}function ML(a){a=a|0;var b=0.0;b=+h[22908];if(!(b>0.0)){b=+LL(a,nx(a,0,104612,0)|0,-1.0,0.0);b=b==0.0?72.0:b}return +b}function NL(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=yx(a,b)|0;return c|0}function OL(b,c,d){b=b|0;c=c|0;d=d|0;b=NL(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function PL(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=QL(yx(a,b)|0)|0;return a|0}function QL(a){a=a|0;return RL(a,0)|0}function RL(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((O$(b,134226)|0)!=0?(O$(b,104623)|0)!=0:0)if((O$(b,104626)|0)!=0?(O$(b,104631)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(a2(b)|0)&255}else c=1;else c=0;return c|0}function SL(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function TL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=SL(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=SL(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function UL(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function VL(a,b){a=a|0;b=b|0;if((SL(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else qa(104643,104635,194,104659)}function WL(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function XL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function YL(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[46545]|0;f=d+1024|0;if((d-e|0)<1024){c[46545]=f;f=xH(c[46546]|0,f)|0;c[46546]=f;d=c[46545]|0}else f=c[46546]|0;d=O0(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(W_(d)|0)+e|0;d=c[46546]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[46546]|0;return ((e|0)>0?d:0)|0}function ZL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[46362]|0;e=c[46548]|0;if((c[46547]|0)==(d|0))d=e;else{if(e){D_(c[e>>2]|0);D_(c[46548]|0);c[46548]=0;d=c[46362]|0}c[46547]=d;if(!d)break;if(!(a[d>>0]|0))break;d=_L(d)|0;c[46548]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=$L(d,c[46549]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function _L(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=n1(a)|0;d=0;while(1){b=k1(b,104958)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=vH(a)|0;else a=xH(d,a)|0;c[a+(g<<2)>>2]=b;f=W_(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[46549]=e;return f|0}function $L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[46550]|0;c[46550]=F_(h,b+2+(W_(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[46550]|0;c[e>>2]=b;c[e+4>>2]=104956;c[e+8>>2]=d;Y0(h,104949,e)|0;if(!(K1(c[46550]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[46550]|0;l=g;return a|0}function aM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(b$(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function bM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q<g;C=A?r:e;r=r+1|0;b=A?f:b;e=C;g=A?q:g}f=f+1|0}f=c[v+(b*48|0)>>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;XL(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k<j;m=m-q;n=n-o;n=n*n+m*m;g=C?p:g;i=C?i:p;j=C?n:j;k=C?k:n}h[a>>3]=m;h[a+8>>3]=n;l=z;return}function cM(){return 0}function dM(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+LL(b,c[46376]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+LL(b,c[46375]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=WJ(OL(b,c[46377]|0,104960)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=yx(b,c[46384]|0)|0;d=+LL(b,c[46380]|0,14.0,1.0);e=OL(b,c[46381]|0,104968)|0;f=OL(b,c[46382]|0,134232)|0;i=(Rz(l)|0)!=0;k=(HJ(b)|0)==2;i=kH(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[46385]|0;if((i|0?(j=yx(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(Rz(j)|0)!=0;l=kH(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ez(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(KL(b,c[46388]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;tb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function eM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ez(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[46412]|0;if(((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){fM(b,m);t=(Rz(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=kH(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=QL(NL(b,c[46422]|0,134226)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[46413]|0;if((f|0?(j=yx(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){fM(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(Rz(j)|0)!=0;j=kH(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[46427]|0;if(((d|0)!=0?(k=yx(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){gM(b,m,n);j=(Rz(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=kH(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[46428]|0;if((f|0?(q=yx(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){gM(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(Rz(q)|0)!=0;q=kH(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=xx(b,108373)|0;d=d|0?d:191979;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;hM(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46434]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=xx(b,108382)|0;d=d|0?d:191979;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;hM(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46435]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function fM(a,b){a=a|0;b=b|0;h[b>>3]=+LL(a,c[46409]|0,14.0,1.0);c[b+8>>2]=OL(a,c[46410]|0,104968)|0;c[b+12>>2]=OL(a,c[46411]|0,134232)|0;return}function gM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))fM(a,b);h[d>>3]=+LL(a,c[46429]|0,+h[b>>3],1.0);c[d+8>>2]=OL(a,c[46430]|0,c[e>>2]|0)|0;c[d+12>>2]=OL(a,c[46431]|0,c[b+12>>2]|0)|0;return}function hM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=A$(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;xb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{xb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function iM(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=yx(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(QL(d)|0)<<24>>24==0&1;else b=0;return b|0}function jM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]<o?i:m)>>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]<n?i:m)+8>>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function kM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];lM(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function lM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function mM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if((ay(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){nM(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;nM(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{nM(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;nM(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=Sy(b)|0;while(1){if(!n)break;WL(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];oM(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];pM(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Ex(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]<N?K:B)>>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]<M?K:B)+8>>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Gx(b,m)|0}n=Ty(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]<P?K:G)>>3];h[D>>3]=+h[(+h[D>>3]<O?K:G)+8>>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function nM(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function oM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function pM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function qM(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(V$(ry(a)|0,104980,7)|0)==0&1;return a|0}function rM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:do if(!e)switch(pz(b)|0){case 0:{e=nx(a,0,c,191979)|0;break a}case 1:{e=nx(a,1,c,191979)|0;break a}case 2:{e=nx(a,2,c,191979)|0;break a}default:{e=0;break a}}while(0);rx(b,e,d)|0;return e|0}function sM(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+144|0;g=k;i=tM(d)|0;h=Cw(23488,c[4555]|0)|0;j=vA(d,104988,1)|0;Az(j,134401,280,1)|0;Tw(g,128,k+16|0);e=Sy(d)|0;while(1){if(!e)break;a:do if(!(a[(c[e+16>>2]|0)+118>>0]|0)){f=Ex(d,e)|0;while(1){if(!f)break a;uM(f,j,g,h,i);f=Gx(d,f)|0}}while(0);e=Ty(d,e)|0}Xw(g);yw(h)|0;f=ay(j)|0;e=Sy(j)|0;while(1){if(!e)break;h=Ty(j,e)|0;dz(d,e)|0;e=h}$x(j)|0;if(f|0){j=(c[d+16>>2]|0)+136|0;b[j>>1]=b[j>>1]|1}yw(i)|0;l=k;return f|0}function tM(a){a=a|0;var b=0;b=Cw(23524,c[4555]|0)|0;DM(a,b);return b|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;p=t+24|0;s=t+16|0;r=t+8|0;k=t;n=c[b>>2]&3;m=c[((n|0)==3?b:b+48|0)+40>>2]|0;n=c[((n|0)==2?b:b+-48|0)+40>>2]|0;do if(!(a[(c[n+16>>2]|0)+118>>0]|0)){if(!(z$(ry(m)|0,104980,7)|0))o=vM(g,ry(m)|0)|0;else o=0;if(!(z$(ry(n)|0,104980,7)|0))i=vM(g,ry(n)|0)|0;else i=0;h=(o|0)!=0;j=(i|0)!=0;if(h|j){if((o|0)==(i|0)){r=ry(m)|0;s=ry(m)|0;c[k>>2]=r;c[k+4>>2]=s;Pw(0,105003,k)|0;break}g=wM(f,b)|0;if(g|0){xM(b,c[g+16>>2]|0,c[g+20>>2]|0)|0;break}if(!j)if(!(oz(o,n)|0)){zM(f,m,n,xM(b,yM(m,o,e,d)|0,n)|0);break}else{r=ry(n)|0;s=ry(o)|0;c[q>>2]=r;c[q+4>>2]=s;Pw(0,105158,q)|0;break}if(!h)if(!(oz(i,m)|0)){zM(f,m,n,xM(b,m,yM(n,i,e,d)|0)|0);break}else{r=ry(m)|0;s=ry(i)|0;c[p>>2]=r;c[p+4>>2]=s;Pw(0,105121,p)|0;break}if(oz(i,o)|0){q=ry(o)|0;s=ry(i)|0;c[r>>2]=q;c[r+4>>2]=s;Pw(0,105041,r)|0;break}if(!(oz(o,i)|0)){s=yM(m,o,e,d)|0;zM(f,m,n,xM(b,s,yM(n,i,e,d)|0)|0);break}else{q=ry(i)|0;r=ry(o)|0;c[s>>2]=q;c[s+4>>2]=r;Pw(0,105081,s)|0;break}}}while(0);l=t;return}function vM(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function wM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=c[b>>2]&3;c[e>>2]=c[((f|0)==3?b:b+48|0)+40>>2];c[e+4>>2]=c[((f|0)==2?b:b+-48|0)+40>>2];b=nb[c[a>>2]&63](a,e,512)|0;l=d;return b|0}function xM(a,b,c){a=a|0;b=b|0;c=c|0;c=Rx(ez(b)|0,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(a,c)|0;return c|0}function yM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+112|0;g=k;j=k+4|0;Ww(e,105195)|0;i=c[46551]|0;c[46551]=i+1;c[g>>2]=i;Y0(j,134313,g)|0;Ww(e,j)|0;j=e+4|0;g=c[j>>2]|0;i=e+8|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=58;Ww(e,ry(d)|0)|0;h=fz(d)|0;g=c[j>>2]|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}a[g>>0]=0;e=c[e>>2]|0;c[j>>2]=e;j=az(h,e,1)|0;Az(j,134365,304,1)|0;a[(c[j+16>>2]|0)+118>>0]=1;Xy(d,j,1)|0;Xy(f,b,1)|0;f=ez(j)|0;c[46384]=rM(f,j,105198,191979,c[46384]|0)|0;f=ez(j)|0;c[46387]=rM(f,j,138e3,131253,c[46387]|0)|0;f=ez(j)|0;c[46377]=rM(f,j,105204,105210,c[46377]|0)|0;l=k;return j|0}function zM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f;n=g+8|0;c[n>>2]=b;m=g+12|0;c[m>>2]=d;o=c[e>>2]&3;i=e+48|0;j=g+16|0;c[j>>2]=c[((o|0)==3?e:i)+40>>2];k=e+-48|0;h=g+20|0;c[h>>2]=c[((o|0)==2?e:k)+40>>2];nb[c[a>>2]&63](a,g,1)|0;c[n>>2]=d;c[m>>2]=b;d=c[e>>2]&3;c[j>>2]=c[((d|0)==2?e:k)+40>>2];c[h>>2]=c[((d|0)==3?e:i)+40>>2];nb[c[a>>2]&63](a,g,1)|0;l=f;return}function AM(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(24)|0;c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];return d|0}function BM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0>=e>>>0)if(a>>>0>e>>>0)a=1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return (b>>>0<d>>>0?-1:b>>>0>d>>>0&1)|0}else a=-1;return a|0}function DM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=ry(a)|0;if(!(nb[c[b>>2]&63](b,d,512)|0)){i=uH(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;nb[c[b>>2]&63](b,i,1)|0}else{c[g>>2]=d;Pw(0,105214,g)|0}DM(a,b);e=e+1|0}l=h;return}function EM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function FM(a){a=a|0;var b=0,c=0,d=0;d=vA(a,104988,1)|0;Az(d,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;GM(c,d);c=Gx(a,c)|0}b=Ty(a,b)|0}b=Sy(d)|0;while(1){if(!b)break;c=Ty(d,b)|0;HM(b);dz(a,b)|0;b=c}$x(d)|0;return}function GM(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=IM(f,d)|0;e=xM(b,f,IM(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;JM(b)}return}function HM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){tb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);Cz(a,134365)|0;return}function IM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ez(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){Xy(d,b,1)|0;b=A$(ry(b)|0,58)|0;if(!b)qa(108182,104635,1225,105266);d=b+1|0;b=az(f,d,0)|0;if(!b){b=az(f,d,1)|0;Az(b,134365,304,1)|0;d=sx(f,1,0)|0;while(1){if(!d)break a;g=yx(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))rx(b,d,e)|0;d=sx(f,1,d)|0}}}while(0);return b|0}function JM(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+144>>2]|0);KM(a);nH(c[(c[b>>2]|0)+96>>2]|0);nH(c[(c[b>>2]|0)+108>>2]|0);nH(c[(c[b>>2]|0)+100>>2]|0);nH(c[(c[b>>2]|0)+104>>2]|0);Cz(a,134378)|0;return}function KM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;D_(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}D_(a);D_(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function LM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=nx(a,b,c,0)|0;if(!e)e=nx(a,b,c,d)|0;return e|0}function MM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;i=o;h=o+8|0;j=o+16|0;m=A$(b,59)|0;n=d+4|0;e=c[n>>2]|0;k=d+8|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;e=c[n>>2]|0}c[n>>2]=e+1;a[e>>0]=38;if(((m|0)!=0?(f=m-b|0,(f+-2|0)>>>0<=6):0)?(U0(j,b,f)|0,a[j+f>>0]=0,c[h>>2]=j,g=e2(h,23560,252,8,94)|0,(g|0)!=0):0){c[i>>2]=c[g+4>>2];Y0(j,134313,i)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=35;Ww(d,j)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=59;b=m+1|0}l=o;return b|0}function NM(a,b){a=a|0;b=b|0;return b$(c[a>>2]|0,c[b>>2]|0)|0}function OM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[46552]|0)!=(d|0)){c[46552]=d;a[191878]=0}Tw(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=QM(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[191878]|0)){c[j>>2]=ry(d)|0;Pw(0,106681,j)|0;a[191878]=1}h=-1;e=PM(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[191878]|0)){g=ry(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;Pw(0,106802,k)|0;a[191878]=1}e=PM(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=n1(n)|0;Xw(o);l=q;return p|0}function PM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=RM(g)|0;h=d+4|0;i=d+8|0;e=W_(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;D_(g);l=j;return k|0}function QM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=e2(h,23560,252,8,94)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function RM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;Tw(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=QM(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=n1(h)|0;Xw(i);l=k;return j|0}function SM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;Tw(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=n1(f)|0;Xw(g);l=i;return h|0}function TM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];UM(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];oM(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=lb[d&127](f,e)|0}else d=0;l=n;return d|0}function UM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function VM(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];oM(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];pM(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function WM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(XM(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((YM(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(VM(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}function XM(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function YM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)qa(106911,104635,1637,106919);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((VG(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function ZM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];JE(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function _M(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(O$(e,106934)|0)){d=4;break a}if(!(O$(e,106940)|0)){d=12;break a}break}case 70:case 102:{if(!(O$(b+1|0,106948)|0)){d=2;break a}break}case 76:case 108:{if(!(O$(b+1|0,106953)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(O$(e,106957)|0)){d=0;break a}if(!(O$(e,106961)|0)){d=2;break a}break}case 79:case 111:{if(!(O$(b+1|0,106963)|0)){d=8;break a}break}case 80:case 112:{if(!(O$(b+1|0,106968)|0)){d=6;break a}break}case 83:case 115:{if(!(O$(b+1|0,106976)|0)){d=10;break a}break}case 84:case 116:{if(!(O$(b+1|0,106982)|0)){d=10;break a}break}case 89:case 121:{if(!(O$(b+1|0,106986)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;Pw(0,106989,f)|0}while(0);l=g;return d|0}function $M(d,f){d=d|0;f=f|0;var g=0;g=xx(d,107030)|0;if(g)if(!(a[g>>0]|0))f=0;else f=_M(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function aN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q<f?w:p)>>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s<i?w:p)+8>>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function bN(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function cN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=C_(40)|0;c[w>>2]=0;s=y;o=0;e=$(29,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=$(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=E3(c[f>>2]|0,w|0,x|0)|0;if(!e)bb(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[191874]|0))t=0;else{o=0;e=_(3)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=aa(95,b|0,107038)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[46553]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[46553]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;ca(20,0,107042,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=aa(96,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[46553]&2|0){o=0;ja(26,c[15686]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=$(25,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=aa(97,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!((c[46363]|0)==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[191874]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=ca(31,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=ca(31,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;d=$(30,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=d;i=i+1|0}while(0);o=0;e=aa(98,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=aa(84,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=$(31,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ma(28,v|0,n|0,8,99);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;ia(107,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[15686]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[46553]&16|0:0){o=0;ja(26,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ma(29,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ka(65,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ka(65,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=ca(32,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ma(30,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;ia(108,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ha(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=$(32,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=$(33,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ka(66,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=D3(186216,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;ia(109,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[46553]&4|0){o=0;na(8,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;oa(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[191874]|0))e=0;else{o=0;ia(110,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;ia(103,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;ia(103,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(111,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(103,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}D_(w|0);l=y;return}function dN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;D1(107909,a)|0;D1(107920,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){YN(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{_N(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;g1(a,107940,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;g1(a,107960,p)|0;d=d+1|0}D1(107982,a)|0;l=q;return}function eN(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function fN(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function gN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;YN(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){WN(j,h,c[h+24>>2]|0);pO(b,f,h,0.0)|0;break}else{WN(j,h,i);pO(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function hN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;YN(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;WN(h,g,e);pO(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function iN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=uH((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;WN(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=XN(j,i)|0;NR(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){WN(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{YN(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}ZN(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){WN(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];ZN(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=F_(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function jN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];RN(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function kN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];RN(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function lN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;QN(uN(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function mN(a){a=a|0;var b=0,d=0;d=a+20|0;wN(c[d>>2]|0);b=a+24|0;wN(c[b>>2]|0);xN(c[d>>2]|0);xN(c[b>>2]|0);yN(c[d>>2]|0,a);yN(c[b>>2]|0,a);zN(c[d>>2]|0);zN(c[b>>2]|0);return}function nN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;D1(107157,a)|0;c[n>>2]=10;c[n+4>>2]=10;g1(a,107563,n)|0;D1(135183,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;g1(a,135202,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];vN(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}D1(107580,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;g1(a,135239,y)|0;h[u>>3]=+h[(+h[u>>3]<E?u:t)>>3];h[v>>3]=+h[(+h[v>>3]<A?u:t)+8>>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;g1(a,107605,x)|0;l=z;return}function oN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[15686]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];pN(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];pN(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)D_(i);p=vH(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(rN(u,d)|0);j=+h[I>>3]}else{j=+qN(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(rN(q,d)|0);else j=+qN(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(rN(q,d)|0);j=+h[J>>3]}else{j=+qN(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=ry(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=ry(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;g1(G,107116,M)|0}QK(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,25576);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];jL(b,z,E,F)}v=v+1|0}D_(o);l=N;return}function pN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function qN(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=uN(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function rN(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=uN(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function sN(a){a=a|0;return 0}function tN(a){a=a|0;return 0}function uN(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b+8|0,512)|0;if(!a)qa(107129,107135,423,107143);a=c[a+16>>2]|0;a=nb[c[a>>2]&63](a,b+16|0,512)|0;if(!a)qa(107154,107135,425,107143);else return a|0;return 0}function vN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=rN(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+qN(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p<r?p:r;h[i>>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q<s?q:s;h[v>>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;g1(d,107656,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=rN(m,g)|0;else f=~~+qN(m,g);B=+(f|0);D=p<B?p:B;h[i>>3]=D;k=+(j|0);C=q<k?q:k;h[v>>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;g1(d,107678,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=rN(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+qN(m,g)}A=~~k;C=+(A|0);h[i>>3]=p<C?p:C;D=+(j|0);h[v>>3]=q<D?q:D;h[w>>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;g1(d,107692,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function wN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=$N(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function xN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)PN(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function yN(a,b){a=a|0;b=b|0;var d=0;d=Aw(a)|0;while(1){if(!d)break;a=Aw(c[d+16>>2]|0)|0;while(1){if(!a)break;DN(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function zN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Aw(a)|0;while(1){if(!e)break;i=e+8|0;f=Aw(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[46553]&8|0)AN(f,~~+h[i>>3]);g=f+32|0;eO(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function AN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[15686]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;g1(i,107713,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Ew(e)|0){BN(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);D1(107733,i)|0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d)break b;D1(107738,i)|0;BN(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);D1(150517,i)|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function BN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=CN(c[d+32>>2]|0)|0;e=CN(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;g1(b,107744,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=CN(c[d+32>>2]|0)|0;i=CN(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;g1(b,107744,e)|0}l=g;return}function CN(a){a=a|0;switch(a|0){case 0:{a=107795;break}case 1:{a=107790;break}case 2:{a=107783;break}case 3:{a=107776;break}case 4:{a=107768;break}default:a=0}return a|0}function DN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((dO(u,j,k)|0)==0?(dO(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,EN(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;FN(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;FN(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function EN(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))qa(107866,107135,843,107897);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function FN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=IN(b,e)|0;if(!b){h=0;break}d=IN(d,f)|0;if(!d){i=6;break}if(!(EN(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)qa(135312,107135,871,107815);else if((i|0)==7)h=KN(b,JN(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function GN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=uN(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;bO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=IN(b,e)|0;m=IN(d,f)|0;do if(!(a[b>>0]|0)){j=uN(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=uN(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function HN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(EN(b,d)|0))break;g=IN(b,1)|0;d=IN(d,e)|0;b=g}g=c[(uN(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;cO(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function IN(a,b){a=a|0;b=b|0;if(!a)qa(107802,107135,798,107806);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function JN(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=LN(b,c,3,1)|0;else b=LN(b,c,4,2)|0;l=f;return b|0}Pw(1,107828,e)|0;bb(186216,1);return 0}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=IN(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function LN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j<k)?(g=+h[a+16>>3],i=+h[b+24>>3],!(g>i)):0){if(k<j&g<k){b=MN(a,b,d,e)|0;break}if(k<g&g<i){b=0-(MN(b,a,d,e)|0)|0;break}if(!(g==k))if(j==k){d=c[a+36>>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j<i){o=(c[a+36>>2]|0)==(d|0);d=ON(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=ON(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=NN(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(NN(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=NN(f,o,d)|0;break}else{b=0-(NN(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function MN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i<j){a=c[a+36>>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=ON(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(ON(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function NN(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function ON(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function PN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(JN(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{bO(d,a,b);break}case -1:{bO(d,b,a);break}default:{}}b=b+1|0}}return}function QN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=vH(d<<2)|0;else a=xH(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function RN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=nb[c[a>>2]&63](a,f,512)|0;if(!e){e=uH(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Cw(25624,c[4555]|0)|0;nb[c[a>>2]&63](a,e,1)|0}f=c[e+16>>2]|0;nb[c[f>>2]&63](f,b,1)|0;l=g;return}function SN(a,b,d){a=a|0;b=b|0;d=d|0;aO(c[b+32>>2]|0);D_(c[b+28>>2]|0);D_(b);return}function TN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e<f)a=!(+h[b+8>>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function UN(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+16>>2]|0)|0;D_(b);return}function VN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f<e)<<31>>31)|0}function WN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function XN(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function YN(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function ZN(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f<g){k=0;l=i;d=j;e=f;f=g}else{k=1;l=j;d=i;e=g}h[b+24>>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function _N(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function $N(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=uH(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=yR()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function aO(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;yw(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}D_(e);D_(a);return}function bO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,1)|0;l=e;return}function cO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;nb[c[g>>2]&63](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,2)|0;l=e;return}function dO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(nb[c[d>>2]&63](d,f,512)|0)!=0&1;l=e;return d|0}function eO(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=fO(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=gO(a,d,b,e)|0;d=d+1|0}while(1){d=hO(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}iO(e)}}return}function fO(a){a=a|0;var b=0;b=uH(8)|0;c[b+4>>2]=uH(a<<2)|0;c[b>>2]=-1;return b|0}function gO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Aw(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=gO(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;jO(e,b);return d+1|0}function hO(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function iO(a){a=a|0;D_(c[a+4>>2]|0);D_(a);return}function jO(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function kO(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function lO(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function mO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=uH(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=uH((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function nO(a){a=a|0;var b=0;b=uH(24)|0;c[b>>2]=0;c[b+16>>2]=uH(a*40|0)|0;return b|0}function oO(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function pO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;qO(b,f);qO(d,f);return a|0}function qO(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function rO(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+28>>2]|0);D_(c[b>>2]|0);D_(c[a+20>>2]|0);D_(a);return}function sO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}GR();a:do if(!(JR(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=LR()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=tO(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(JR(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;MR(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function tO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function uO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;wC(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function vO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(XB(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){tb[d&127](a);a=0}else a=0;else a=1;return a|0}function wO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;dC(a);return}function xO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function yO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function zO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)tb[d&127](a);return}function AO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)tb[d&127](a);cC(a);return}function BO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)tb[d&127](a);return}function CO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)tb[d&127](a);return}function DO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;xb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function EO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)tb[d&127](a);return}function FO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)tb[d&127](a);return}function GO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)tb[d&127](a);return}function HO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)tb[d&127](a);return}function IO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)tb[d&127](a);return}function JO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)tb[d&127](a);return}function KO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)tb[d&127](a);return}function LO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)tb[d&127](a);return}function MO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)tb[d&127](a);return}function NO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)tb[d&127](a);return}function OO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)tb[d&127](a);return}function PO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)yb[h&15](a,b,d,e,f);return}function QO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)tb[d&127](a);return}function RO(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)ub[e&63](a,b);return}function SO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)tb[d&127](a);return}function TO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];xO(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vb[g&127](b,f,e)}}while(0);l=k;return}function UO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function VO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=iQ(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(e2(e,f,c[a+20>>2]|0,4,100)|0)!=0:0))h=3;a:do if((h|0)==3){switch(jQ(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{Pw(1,108020,g)|0;break a}}a=vH((W_(b)|0)+16|0)|0;c[i>>2]=b;Y0(a,107985,i)|0;if(AG(a)|0){c[j>>2]=b;Pw(0,107994,j)|0}D_(a)}while(0);l=k;return}function WO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(VO(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)ub[f&63](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function YO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(b$(b,108041)|0)){c[j>>2]=3;b=f;continue b}if(!(b$(b,108062)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+b2(d);b=f;continue b}break}case 100:{if(!(b$(b,134245)|0)){c[j>>2]=1;b=f;continue b}if(!(b$(b,134238)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(b$(b,131253)|0?b$(b,108047)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(b$(b,108057)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(b$(b,108075)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(b$(b,108082)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(b$(b,108091)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;Pw(0,108099,k)|0;b=f}}while(0);l=m;return}function ZO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){yO(a,g,g,2)|0;f=c[i>>2]|0}vb[f&127](a,g,e)}l=j;return}function _O(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;xb[c[n>>2]&31](a,e,d,f)}else xb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function $O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];_O(a,f,4,d);l=e;return}function aP(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){zb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=h;h=xH(c[46594]|0,h<<4)|0;c[46594]=h}else h=c[46594]|0;yO(a,b,h,d)|0;zb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function bP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){vb[f&127](a,b,d);break}e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;vb[c[g>>2]&127](a,e,d)}while(0);return}function cP(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)ub[f&63](b,d);return}function dP(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)qa(108200,108152,691,108163);if(!d)qa(108182,108152,692,108163);if(!(a[d>>0]|0))qa(108187,108152,693,108163);D=yC(d)|0;if(!D){if((C|0)!=0&(VJ(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)yb[m&15](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];BC(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]<v?E:G)>>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]<w?E:G)+8>>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(eP(i)|0){case 1:if(q<r){p=q*p;o=q*o;break a}else{p=r*p;o=r*o;break a}case 2:{p=q*p;break}case 3:{o=r*o;break}case 4:{p=q*p;o=r*o;break}default:{}}while(0);if(p<t){t=(t-p)*.5;j=j+t;h[E>>3]=j;k=k-t;h[n>>3]=k}if(o<w){w=(w-o)*.5;h[z>>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];xO(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];xO(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];gP(b,D,B,g,G)}}}l=F;return}function eP(b){b=b|0;if(a[b>>0]|0)if(O$(b,138034)|0)if(O$(b,137966)|0)if(!(O$(b,108195)|0))b=4;else b=(QL(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function fP(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return}\n  function SX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-20;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=17;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=28;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=26;break b}else h=4;break}default:{h=29;break b}}e=e+h|0}if((h|0)==17){c[g>>2]=e;f=0;break}else if((h|0)==20){c[g>>2]=e;f=0;break}else if((h|0)==23){c[g>>2]=e;f=0;break}else if((h|0)==26){c[g>>2]=e;f=0;break}else if((h|0)==28){c[g>>2]=e;f=20;break}else if((h|0)==29){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function TX(){return 58116}function UX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;c[g>>2]=d;h=c[b>>2]|0;a=f-(c[e>>2]|0)|0;if((d-h|0)>(a|0)){a=h+a|0;c[g>>2]=a;f=1}else{f=0;a=d}fX(h,g);h=c[g>>2]|0;d=c[b>>2]|0;g=h-d|0;F3(c[e>>2]|0,d|0,g|0)|0;c[b>>2]=(c[b>>2]|0)+g;c[e>>2]=(c[e>>2]|0)+g;l=i;return (f?2:h>>>0<a>>>0&1)|0}function VX(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=d+72|0;k=f;l=h;m=c[e>>2]|0;n=c[g>>2]|0;a:while(1){d=m>>>0<f>>>0;if(!(n>>>0<h>>>0&d)){o=12;break}d=a[m>>0]|0;i=d&255;switch(a[j+i>>0]|0){case 5:{if((k-m|0)<2){d=1;break a}b[n>>1]=(d&31)<<6|a[m+1>>0]&63;m=m+2|0;n=n+2|0;continue a}case 6:{if((k-m|0)<3){d=1;break a}b[n>>1]=(a[m+1>>0]&63)<<6|i<<12|a[m+2>>0]&63;m=m+3|0;n=n+2|0;continue a}case 7:{if((l-n|0)<4){d=2;break a}if((k-m|0)<4){d=1;break a}i=((a[m+1>>0]&63)<<12|(d&7)<<18|(a[m+2>>0]&63)<<6|a[m+3>>0]&63)+-65536|0;b[n>>1]=i>>>10|55296;b[n+2>>1]=i&1023|56320;m=m+4|0;n=n+4|0;continue a}default:{b[n>>1]=d<<24>>24;m=m+1|0;n=n+2|0;continue a}}}if((o|0)==12)d=d?2:0;c[e>>2]=m;c[g>>2]=n;return d|0}function WX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function XX(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function YX(a,b){a=a|0;b=b|0;return 0}function ZX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function _X(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function $X(a,b){a=a|0;b=b|0;if((d[b>>0]|0)<194)return 1;else{b=d[b+1>>0]|0;return b>>>7^1|(b&192|0)==192|0}return 0}function aY(b,c){b=b|0;c=c|0;var d=0;b=a[c+2>>0]|0;do if(b<<24>>24>-1)b=1;else{d=a[c>>0]|0;if(d<<24>>24==-17?(a[c+1>>0]|0)==-65:0)if((b&255)>189){b=1;break}else{b=191;c=-65}else{if((b&255)>191){b=1;break}c=a[c+1>>0]|0;b=c&255;if(d<<24>>24==-32){b=(c&255)<160|(b&192|0)==192;break}}b=(b&128|0)==0?1:d<<24>>24==-19?(c&255)>159:(b&192|0)==192}while(0);return b&1|0}function bY(b,c){b=b|0;c=c|0;var e=0;e=d[c+3>>0]|0;do if(!((e&128|0)==0|(e&192|0)==192)?(e=d[c+2>>0]|0,!((e&128|0)==0|(e&192|0)==192)):0){e=a[c>>0]|0;b=a[c+1>>0]|0;c=b&255;if(e<<24>>24==-16){b=(b&255)<144|(c&192|0)==192;break}else{b=(c&128|0)==0?1:e<<24>>24==-12?(b&255)>143:(c&192|0)==192;break}}else b=1;while(0);return b&1|0}function cY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e+1>>0]|0;if(!(f<<24>>24)){h=a[e>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=EY(12,b,e+2|0,m,g)|0;break a}case 13:{f=EY(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 16:{f=FY(b,e+4|0,m,g)|0;break a}case 15:{f=AY(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=uY(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+5>>0]|0)==0?(a[e+4>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=GY(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[i+3>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h+1>>0]|0;j=a[h>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[h+3>>0]|0;i=a[k>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function dY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;do switch(f|0){case 2:{f=xY(b,e+2|0,i,g)|0;break a}case 3:{f=tY(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b+1>>0]|0;i=a[b>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[b+3>>0]|0){b=h;continue b}if((a[h>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[b+5>>0]|0){b=h;continue b}if((a[i>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function eY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b+1>>0]|0;h=a[b>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function fY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}h=(a[b>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function gY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function hY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=uY(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function iY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b+1>>0]|0){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function jY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function kY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c+1>>0]|0;e=a[c>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function lY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;i=e+3|0;h=a[i>>0]|0;j=h<<24>>24==0;k=a[l>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+5>>0]|0;b=a[e+4>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function mY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if((a[c+5>>0]|0)==0?(a[b>>0]|0)==120:0){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c+1>>0]|0)){d=a[c>>0]|0;if(d<<24>>24==59){e=17;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8){e=0;b=d+-48|b<<4}else if((e|0)==9){e=0;b=(b<<4)+-55+d|0}else if((e|0)==10){e=0;b=(b<<4)+-87+d|0}if((b|0)<1114112)c=c+2|0;else{b=-1;break}}}else{d=b;b=0;e=13}while(0);c:do if((e|0)==13)while(1){e=0;if(!(a[d+1>>0]|0)){c=a[d>>0]|0;if(c<<24>>24==59){e=17;break c}c=c<<24>>24}else c=-1;b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;break}else{d=d+2|0;e=13}}while(0);if((e|0)==17)b=jX(b)|0;return b|0}function nY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+3>>0]|0)==0?(a[c+2>>0]|0)==116:0){if(!(a[c+1>>0]|0))b=a[c>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c+1>>0]|0)==0?(a[c>>0]|0)==97:0)?(a[c+3>>0]|0)==0:0)?(a[c+2>>0]|0)==109:0)?(a[c+5>>0]|0)==0:0)?(a[c+4>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c+1>>0]|0))switch(a[c>>0]|0){case 113:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=117){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=112){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function oY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e+1>>0]|0;h=a[e>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[e+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function pY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f+-2|0;i=b+72|0;f=e;a:while(1){h=f+2|0;if((j-h|0)<=1){f=1;break}f=a[f+3>>0]|0;b=f<<24>>24==0;e=a[h>>0]|0;if(b)f=d[i+(e&255)>>0]|0;else f=sY(f,e)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{f=h;continue a}case 21:if(b&e<<24>>24==9){k=12;break a}else{f=h;continue a}case 22:case 26:{if(!b){k=12;break a}if(e<<24>>24>=0){f=h;continue a}break}default:if(!b){k=12;break a}}switch(e<<24>>24|0){case 64:case 36:{f=h;break}default:{k=12;break a}}}if((k|0)==12){c[g>>2]=h;f=0}return f|0}function qY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j>>0]|0;b=a[j+1>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[b>>0]|0;f=(o<<4&48|i>>>6|a[j+3>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function rY(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k+1>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0<e>>>0;k=c[h>>2]|0;if(!(j&k>>>0<i>>>0))break;j=((d[g+1>>0]|0)<<8|(d[g>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function sY(a,b){a=a|0;b=b|0;var c=0;switch(a<<24>>24){case -37:case -38:case -39:case -40:{a=7;break}case -33:case -34:case -35:case -36:{a=8;break}case -1:{if((b&255)>253)a=0;else c=4;break}default:c=4}if((c|0)==4)a=29;return a|0}function tY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=vY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[j+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))f=d[k+(h&255)>>0]|0;else f=sY(b,h)|0;switch(f|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else j=i}if((h|0)==22){c[g>>2]=i;b=0;break}else if((h|0)==23){c[g>>2]=i;b=0;break}else if((h|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==28){c[g>>2]=j+4;b=9;break}else if((h|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function uY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function vY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e+1>>0]|0;h=a[e>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=wY(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[b+3>>0]|0;f=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function wY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function xY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[e+3>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[i>>0]|0)>>0]|0;else h=sY(h,a[i>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+4|0,f,g)|0;break a}case 20:{h=zY(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=AY(b,e+2|0,f,g)|0;break a}case 17:{h=BY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h+1>>0]|0;k=a[h>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}k=h+2|0;e=o-k|0;if((e|0)<=1){h=-1;break a}l=a[h+3>>0]|0;i=a[k>>0]|0;if(!(l<<24>>24))j=d[m+(i&255)>>0]|0;else j=sY(l,i)|0;switch(j|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140706+(l&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=k;h=0;break a}case 49:{c[g>>2]=k;h=0;break a}case 50:{if((e|0)<3){h=-2;break a}c[g>>2]=k;h=0;break a}case 52:{if((e|0)<4){h=-2;break a}c[g>>2]=k;h=0;break a}case 54:{c[g>>2]=k;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[h+3>>0]|0;e=a[i>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=CY(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[h+3>>0]|0)==0?(a[i>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function yY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e+1>>0]|0)==0?(a[e>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h+1>>0]|0;b=a[h>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[h+3>>0]|0){h=f;continue b}if((a[f>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[h+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function zY(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b+1>>0]|0){d=0;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function AY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;j=o-e|0;a:do if((j|0)>1){f=a[e+1>>0]|0;if(!(f<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(f,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(f&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[k+3>>0]|0;j=a[f>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j+1>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[j+3>>0]|0){j=f;continue c}if((a[f>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[k+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function BY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[j+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function CY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e+1>>0]|0;j=a[e>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[h>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}e=a[e+3>>0]|0;h=a[i>>0]|0;if(!(e<<24>>24))e=d[o+(h&255)>>0]|0;else e=sY(e,h)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e+1>>0]|0;i=a[e>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=tY(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;j=a[i>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[i>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[i+3>>0]|0)==0?(a[h>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function DY(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b+1>>0]|0)==0:0){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+3>>0]|0)){switch(a[b+2>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+5>>0]|0)){switch(a[b+4>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function EY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f+1>>0]|0;i=a[f>>0]|0;if(!(e<<24>>24))e=d[k+(i&255)>>0]|0;else e=sY(e,i)|0;switch(e|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{i=f+2|0;if((e|0)==(b|0)){l=12;break a}else{f=i;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-i|0)>1){c[h>>2]=i;g=a[f+3>>0]|0;f=a[i>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function FY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+5>>0]|0;h=a[e+4>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function GY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}h=a[h+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[b+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function HY(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=67;c[b+4>>2]=68;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function IY(a){a=a|0;var b=0;a:do if(!a)b=6;else{b=0;while(1){if((b|0)>=6){b=-1;break a}if(qZ(a,c[59964+(b<<2)>>2]|0)|0)break a;b=b+1|0}}while(0);return b|0}function JY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,0,b,c,d)|0}function KY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,1,b,c,d)|0}function LY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;BX(58480,b,c,d);return}function MY(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;a:do if(f>>>0<g>>>0){l=c[d+72>>2]|0;i=f+1|0;b:do if((i|0)==(g|0)){i=a[d+69>>0]|0;if(((i<<24>>24)+-3|0)>>>0<3){i=-1;break a}switch(a[f>>0]|0){case 60:case 0:{i=-1;break a}case -17:case -1:case -2:break;default:break b}if(!((e|0)==1&i<<24>>24==0)){i=-1;break a}}else{k=a[f>>0]|0;i=a[i>>0]|0;j=((k&255)<<8|i&255)&65535;c:do if(j<<16>>16<-2){if(j<<16>>16>=-257){switch(j<<16>>16){case -257:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+16>>2];i=14;break a}switch(j<<16>>16){case -4165:break;default:break c}if((e|0)==1)switch(a[d+69>>0]|0){case 0:case 3:case 4:case 5:break b;default:{}}i=f+2|0;if((i|0)==(g|0)){i=-1;break a}if((a[i>>0]|0)!=-65)break b;c[h>>2]=f+3;c[l>>2]=c[b+8>>2];i=14;break a}else{if(j<<16>>16<15360){switch(j<<16>>16){case -2:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+20>>2];i=14;break a}switch(j<<16>>16){case 15360:break;default:break c}i=a[d+69>>0]|0;if(i<<24>>24==4){if((e|0)==1)break b}else if((e|0)==1&i<<24>>24==3)break b;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);if(k<<24>>24){if((e|0)==1|i<<24>>24!=0)break;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}if((e|0)==1?(a[d+69>>0]|0)==5:0)break;i=c[b+16>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);i=c[b+(a[d+69>>0]<<2)>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0}else i=-4;while(0);return i|0}function NY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e>>0]|0;if(!(f<<24>>24)){h=a[e+1>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=mZ(12,b,e+2|0,m,g)|0;break a}case 13:{f=mZ(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 16:{f=nZ(b,e+4|0,m,g)|0;break a}case 15:{f=iZ(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=cZ(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+4>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=oZ(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[j>>0]|0;h=a[i+3>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h>>0]|0;j=a[h+1>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[k>>0]|0;i=a[h+3>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function OY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;do switch(f|0){case 2:{f=fZ(b,e+2|0,i,g)|0;break a}case 3:{f=bZ(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b>>0]|0;i=a[b+1>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[h>>0]|0){b=h;continue b}if((a[b+3>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[i>>0]|0){b=h;continue b}if((a[b+5>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function PY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b>>0]|0;h=a[b+1>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function QY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}h=(a[f+5>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+5>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function RY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function SY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=cZ(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function TY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b>>0]|0){b=0;break}if((a[b+1>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function UY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function VY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c>>0]|0;e=a[c+1>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function WY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;h=a[l>>0]|0;j=h<<24>>24==0;i=e+3|0;k=a[i>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+4>>0]|0;b=a[e+5>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function XY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if(!(a[b>>0]|0))if((a[c+5>>0]|0)==120){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c>>0]|0)){d=a[c+1>>0]|0;if(d<<24>>24==59){e=18;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8)b=d+-48|b<<4;else if((e|0)==9)b=(b<<4)+-55+d|0;else if((e|0)==10)b=(b<<4)+-87+d|0;if((b|0)<1114112)c=c+2|0;else{b=-1;e=19;break}}}else{c=b;b=0;e=13}else{d=b;b=0;c=-1;e=16}while(0);while(1)if((e|0)==13){if(a[c>>0]|0){d=c;c=-1;e=16;continue}if((a[c+1>>0]|0)==59){e=18;continue}d=c;c=a[c+1>>0]|0;e=16;continue}else if((e|0)==16){b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;e=19;continue}c=d+2|0;e=13;continue}else if((e|0)==18){b=jX(b)|0;e=19;continue}else if((e|0)==19)return b|0;return 0}function YY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+2>>0]|0)==0?(a[c+3>>0]|0)==116:0){if(!(a[c>>0]|0))b=a[c+1>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c>>0]|0)==0?(a[c+1>>0]|0)==97:0)?(a[c+2>>0]|0)==0:0)?(a[c+3>>0]|0)==109:0)?(a[c+4>>0]|0)==0:0)?(a[c+5>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c>>0]|0))switch(a[c+1>>0]|0){case 113:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=117){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=112){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function ZY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e>>0]|0;h=a[e+1>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[i>>0]|0;h=a[e+3>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function _Y(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f+-2|0;j=b+72|0;a:while(1){h=e+2|0;if((k-h|0)<=1){f=1;break}f=a[h>>0]|0;i=f<<24>>24==0;b=a[e+3>>0]|0;if(i)f=d[j+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{e=h;continue a}case 21:if(i&b<<24>>24==9){l=12;break a}else{e=h;continue a}case 22:case 26:{if(!i){l=12;break a}if(b<<24>>24>=0){e=h;continue a}break}default:if(!i){l=12;break a}}switch(b<<24>>24|0){case 64:case 36:{e=h;break}default:{l=12;break a}}}if((l|0)==12){c[g>>2]=h;f=0}return f|0}function $Y(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j+1>>0]|0;b=a[j>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[j+3>>0]|0;f=(o<<4&48|i>>>6|a[b>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function aZ(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0<e>>>0;k=c[h>>2]|0;if(!(j&k>>>0<i>>>0))break;j=((d[g>>0]|0)<<8|(d[g+1>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function bZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=dZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[i>>0]|0;f=a[j+3>>0]|0;if(!(b<<24>>24))h=d[k+(f&255)>>0]|0;else h=sY(b,f)|0;switch(h|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{f=23;break b}case 6:{f=24;break b}case 7:{f=26;break b}case 18:{f=28;break b}case 29:break;default:{f=29;break b}}e=f&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else j=i}if((f|0)==22){c[g>>2]=i;b=0;break}else if((f|0)==23){c[g>>2]=i;b=0;break}else if((f|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==28){c[g>>2]=j+4;b=9;break}else if((f|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function cZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function dZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e>>0]|0;h=a[e+1>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=eZ(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[i>>0]|0;f=a[b+3>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function eZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function fZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[i>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+3>>0]|0)>>0]|0;else h=sY(h,a[e+3>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+4|0,f,g)|0;break a}case 20:{h=hZ(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=iZ(b,e+2|0,f,g)|0;break a}case 17:{h=jZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h>>0]|0;k=a[h+1>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}e=h+2|0;l=o-e|0;if((l|0)<=1){h=-1;break a}i=a[e>>0]|0;j=a[h+3>>0]|0;if(!(i<<24>>24))k=d[m+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{l=j&255;if(!(1<<(l&31)&c[56836+((l>>>5|d[140706+(i&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=e;h=0;break a}case 49:{c[g>>2]=e;h=0;break a}case 50:{if((l|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 52:{if((l|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 54:{c[g>>2]=e;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[i>>0]|0;e=a[h+3>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=kZ(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[i>>0]|0)==0?(a[h+3>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function gZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e>>0]|0)==0?(a[e+1>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h>>0]|0;b=a[h+1>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[f>>0]|0){h=f;continue b}if((a[h+3>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[h+5>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function hZ(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b>>0]|0){d=0;break}if((a[b+1>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function iZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;i=o-e|0;a:do if((i|0)>1){j=a[e>>0]|0;if(!(j<<24>>24)){h=a[e+1>>0]|0;f=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;f=sY(j,h)|0}switch(f|0){case 29:{m=h&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(j&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[f>>0]|0;j=a[k+3>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j>>0]|0;h=a[j+1>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[f>>0]|0){j=f;continue c}if((a[j+3>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[k+5>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function jZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[j>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[j+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function kZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e>>0]|0;j=a[e+1>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[h>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}h=a[i>>0]|0;e=a[e+3>>0]|0;if(!(h<<24>>24))e=d[o+(e&255)>>0]|0;else e=sY(h,e)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e>>0]|0;i=a[e+1>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=bZ(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[i>>0]|0;j=a[e+3>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[i>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[h>>0]|0)==0?(a[i+3>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function lZ(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b>>0]|0)==0:0){switch(a[b+1>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+2>>0]|0)){switch(a[b+3>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+4>>0]|0)){switch(a[b+5>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function mZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f>>0]|0;i=a[f+1>>0]|0;if(!(e<<24>>24))i=d[k+(i&255)>>0]|0;else i=sY(e,i)|0;switch(i|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{e=f+2|0;if((i|0)==(b|0)){l=12;break a}else{f=e;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-e|0)>1){c[h>>2]=e;g=a[e>>0]|0;f=a[f+3>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function nZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+4>>0]|0;h=a[e+5>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function oZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}j=a[k>>0]|0;h=a[h+3>>0]|0;if(!(j<<24>>24))i=d[b+(h&255)>>0]|0;else i=sY(j,h)|0;switch(i|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(j&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function pZ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;while(1){b=c[d>>2]|0;h=b>>>0<e>>>0;i=c[f>>2]|0;if(!(h&i>>>0<g>>>0))break;c[d>>2]=b+1;h=a[b>>0]|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i>>0]=h}return ((i|0)!=(g|0)|h^1?0:2)|0}function qZ(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:while(1){f=a[b>>0]|0;g=a[c>>0]|0;f=(f+-97&255)<26?(f&255)+224&255:f;switch((f<<24>>24==((g+-97&255)<26?(g&255)+224&255:g)<<24>>24?(f<<24>>24==0?2:0):1)&3){case 0:{c=c+1|0;b=b+1|0;break}case 1:{e=3;break a}case 2:{d=1;break a}default:{e=5;break a}}}if((e|0)==3)d=0;return d|0}function rZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(36,a,b,c,d,e,f,g,h,i,j)|0}function sZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[58844+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function tZ(a,b,d,e,f,g,h,i,j,k,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;t=v+8|0;q=v+12|0;o=v+4|0;p=v;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;u=d+64|0;s=c[u>>2]|0;r=e+(s*5|0)|0;c[t>>2]=r;s=f+(0-(s<<1))|0;r=(uZ(d,r,s,o,p,q,t)|0)!=0;n=c[o>>2]|0;e=n;a:do if(r&(n|0)!=0){r=d+24|0;f=c[p>>2]|0;do if(!(ob[c[r>>2]&127](d,n,f,141258)|0)){if(!b){c[g>>2]=e;e=0;break a}}else{if(h|0)c[h>>2]=c[q>>2];if(!i)e=c[t>>2]|0;else{e=c[t>>2]|0;c[i>>2]=e}if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break a}f=c[o>>2]|0;if(f|0){e=f;n=f;f=c[p>>2]|0;break}if(!b){e=1;break a}c[g>>2]=c[t>>2];e=0;break a}while(0);if(ob[c[r>>2]&127](d,n,f,141266)|0){f=c[q>>2]|0;e=f;if((((vZ(d,f,s)|0)&-33)+-65|0)>>>0>=26){c[g>>2]=e;e=0;break}if(j|0)c[j>>2]=e;e=c[t>>2]|0;if(k|0)c[k>>2]=nb[a&63](d,f,e+(0-(c[u>>2]|0))|0)|0;if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break}e=c[o>>2]|0;if(!e){e=1;break}n=e;f=c[p>>2]|0}if((b|0)!=0|(ob[c[r>>2]&127](d,n,f,141275)|0)==0){c[g>>2]=e;e=0;break}f=c[q>>2]|0;e=c[t>>2]|0;n=f;if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104631)|0)){if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104623)|0)){c[g>>2]=n;e=0;break}if(m)c[m>>2]=0}else if(m)c[m>>2]=1;while(1){if(!(wZ(vZ(d,e,s)|0)|0))break;e=e+(c[u>>2]|0)|0}c[t>>2]=e;if((e|0)==(s|0))e=1;else{c[g>>2]=e;e=0}}else{c[g>>2]=c[t>>2];e=0}while(0);l=v;return e|0}function uZ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a:do if((b|0)!=(d|0)){if(!(wZ(vZ(a,b,d)|0)|0)){c[h>>2]=b;b=0;break}j=a+64|0;do b=b+(c[j>>2]|0)|0;while((wZ(vZ(a,b,d)|0)|0)!=0);if((b|0)==(d|0)){c[e>>2]=0;b=1;break}c[e>>2]=b;b:while(1){i=vZ(a,b,d)|0;switch(i|0){case -1:{i=11;break b}case 61:{i=12;break b}default:{}}if(wZ(i)|0){i=14;break}b=b+(c[j>>2]|0)|0}if((i|0)==11){c[h>>2]=b;b=0;break}else if((i|0)==12)c[f>>2]=b;else if((i|0)==14){c[f>>2]=b;do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);if((i|0)!=61){c[h>>2]=b;b=0;break}}if((b|0)==(c[e>>2]|0)){c[h>>2]=b;b=0;break}do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);switch(i|0){case 34:case 39:break;default:{c[h>>2]=b;b=0;break a}}f=b+(c[j>>2]|0)|0;c[g>>2]=f;b=i<<24>>24;c:while(1){i=vZ(a,f,d)|0;if((i|0)==(b|0)){i=30;break}if((i+-48|0)>>>0>9&((i&-33)+-65|0)>>>0>25)switch(i|0){case 45:case 46:case 95:break;default:{i=28;break c}}f=f+(c[j>>2]|0)|0}if((i|0)==28){c[h>>2]=f;b=0;break}else if((i|0)==30){c[h>>2]=f+(c[j>>2]|0);b=1;break}}else{c[e>>2]=0;b=1}while(0);return b|0}function vZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+1|0)|0;l=h;return ((c[g>>2]|0)==(f|0)?-1:a[f>>0]|0)|0}function wZ(a){a=a|0;switch(a|0){case 9:case 10:case 13:case 32:{a=1;break}default:a=0}return a|0}function xZ(){return 59988}function yZ(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=69;c[b+4>>2]=70;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function zZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,0,b,c,d)|0}function AZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,1,b,c,d)|0}function BZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(37,a,b,c,d,e,f,g,h,i,j)|0}function CZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[60352+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function DZ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=iX(b,c,d,e)|0;if(b|0)a[b+72+58>>0]=23;return b|0}function EZ(a){a=a|0;c[a>>2]=15;c[a+16>>2]=1;c[a+12>>2]=0;c[a+20>>2]=0;return}function FZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{c[a>>2]=16;a=0;break}case 12:{c[a>>2]=16;a=1;break}case 11:{c[a>>2]=16;a=55;break}case 13:{c[a>>2]=16;a=56;break}case 14:{a=0;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=9;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function GZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 14:case 15:{a=0;break}case 11:{a=55;break}case 13:{a=56;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=7;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=7}if((g|0)==7)a=JZ(a,b)|0;return a|0}function HZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 41:case 18:{c[a>>2]=19;a=4;break}default:a=JZ(a,b)|0}return a|0}function IZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function JZ(a,b){a=a|0;b=b|0;if((b|0)==28&(c[a+16>>2]|0)==0)a=59;else{c[a>>2]=18;a=-1}return a|0}function KZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=22;a=3;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=8;else{c[a>>2]=23;a=3}break}default:h=8}while(0);if((h|0)==8)a=JZ(a,b)|0;return a|0}function LZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case -4:case 15:{a=0;break}case 16:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141308)|0){c[a>>2]=24;a=11;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141315)|0){c[a>>2]=25;a=33;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141323)|0){c[a>>2]=26;a=39;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141331)|0))i=14;else{c[a>>2]=27;a=17}break}case 11:{a=55;break}case 13:{a=56;break}case 28:{a=60;break}case 26:{c[a>>2]=28;a=3;break}default:i=14}while(0);if((i|0)==14)a=JZ(a,b)|0;return a|0}function MZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+-11|0;switch(f>>>1|f<<31|0){case 2:{a=0;break}case 0:{a=55;break}case 1:{a=56;break}case 9:{c[a>>2]=18;a=2;break}default:a=JZ(a,b)|0}return a|0}function NZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=29;a=5;break}default:a=JZ(a,b)|0}return a|0}function OZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=22;a=6;break}default:a=JZ(a,b)|0}return a|0}function PZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function QZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 22:{c[a>>2]=30;a=11;break}case 18:{c[a>>2]=31;a=9;break}default:a=JZ(a,b)|0}return a|0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:{c[a>>2]=32;a=34;break}default:a=JZ(a,b)|0}return a|0}function SZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=33;a=40;break}default:a=JZ(a,b)|0}return a|0}function TZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 18:{c[a>>2]=34;a=18;break}default:a=JZ(a,b)|0}return a|0}function UZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function VZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=17;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=35;a=17;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=6;else{c[a>>2]=36;a=17}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function WZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}default:a=JZ(a,b)|0}return a|0}function XZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=38;a=21;break}default:a=JZ(a,b)|0}return a|0}function YZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=20;break}default:a=JZ(a,b)|0}return a|0}function ZZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=c[a+8>>2]|0;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=c[a+8>>2]|0;break}default:a=JZ(a,b)|0}return a|0}function _Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 33:{c[a>>2]=40;d=0;break}case 34:{d=a+12|0;e=c[d>>2]|0;if(!e)g=7;else{c[d>>2]=e+-1;d=0}break}case 15:{d=0;break}case 26:{g=7;break}case -4:{if(!(c[a+12>>2]|0))d=0;else g=7;break}default:d=LZ(a,b,d,e,f)|0}if((g|0)==7)d=JZ(a,b)|0;return d|0}function $Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=0;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141340)|0){c[a>>2]=41;a=0;break a}if(!(ob[c[g>>2]&127](f,d,e,141348)|0))h=6;else{c[a>>2]=42;a=0}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function a_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=a+12|0;c[a>>2]=(c[a>>2]|0)+1;a=0;break}default:a=JZ(a,b)|0}return a|0}function b_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=58;break}default:a=JZ(a,b)|0}return a|0}function c_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=39;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141355)|0){c[a>>2]=37;c[a+8>>2]=39;a=42;break a}if(!(ob[c[g>>2]&127](f,d,e,141361)|0))h=7;else{c[a>>2]=37;c[a+8>>2]=39;a=41}break}case 23:{c[a>>2]=43;c[a+4>>2]=1;a=44;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function d_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=39;break}case 20:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]|0)|0,e,141365)|0))g=9;else{c[a>>2]=44;a=43}break}case 23:{c[a+4>>2]=2;c[a>>2]=45;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function e_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{c[a>>2]=37;c[a+8>>2]=39;a=45;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function f_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 23:{a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:a=JZ(a,b)|0}return a|0}function g_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=45}else a=45;break}case 36:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=46}else a=46;break}case 35:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=47}else a=47;break}case 37:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=48}else a=48;break}case 38:{c[a>>2]=45;a=50;break}case 21:{c[a>>2]=45;a=49;break}default:a=JZ(a,b)|0}return a|0}function h_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=48;a=51;break}default:a=JZ(a,b)|0}return a|0}function i_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function j_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=33;break}case 41:case 18:{c[a>>2]=49;a=22;break}default:a=JZ(a,b)|0}return a|0}function k_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do switch(b|0){case 15:{g=33;break}case 18:{h=f+24|0;g=0;while(1){i=c[h>>2]|0;if((g|0)>=8)break;if(ob[i&127](f,d,e,c[62200+(g<<2)>>2]|0)|0){j=6;break}g=g+1|0}if((j|0)==6){c[a>>2]=50;g=g+23|0;break a}if(!(ob[i&127](f,d,e,141331)|0))j=10;else{c[a>>2]=51;g=33}break}case 23:{c[a>>2]=52;g=33;break}default:j=10}while(0);if((j|0)==10)g=JZ(a,b)|0;return g|0}function l_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case 15:{a=33;break}case 20:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141372)|0){c[a>>2]=32;a=35;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141380)|0){c[a>>2]=32;a=36;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141389)|0))i=9;else{c[a>>2]=53;a=33}break}case 27:{c[a>>2]=32;a=37;break}default:i=9}while(0);if((i|0)==9)a=JZ(a,b)|0;return a|0}function m_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 23:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function n_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:case 19:{c[a>>2]=55;a=31;break}default:a=JZ(a,b)|0}return a|0}function o_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=52;a=33;break}default:a=JZ(a,b)|0}return a|0}function p_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 18:{c[a>>2]=56;a=32;break}default:a=JZ(a,b)|0}return a|0}function q_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function r_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 27:{c[a>>2]=32;a=38;break}default:a=JZ(a,b)|0}return a|0}function s_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=57;a=10;break}default:a=JZ(a,b)|0}return a|0}function t_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=58;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=59;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=60;a=13;break}default:a=JZ(a,b)|0}return a|0}function v_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=58;a=14;break}default:a=JZ(a,b)|0}return a|0}function w_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}case 18:{if(!(ob[c[f+24>>2]&127](f,d,e,141443)|0))g=5;else{c[a>>2]=61;a=11}break}default:g=5}if((g|0)==5)a=JZ(a,b)|0;return a|0}function x_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=37;c[a+8>>2]=11;a=16;break}default:a=JZ(a,b)|0}return a|0}function y_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=62;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=63;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function z_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=64;a=13;break}default:a=JZ(a,b)|0}return a|0}function A_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=62;a=14;break}default:a=JZ(a,b)|0}return a|0}function B_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}default:a=JZ(a,b)|0}return a|0}function C_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[46749]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=187036+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[46749]=o&~(1<<b);else{c[g+12>>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[46751]|0;if(m>>>0>n>>>0){if(d|0){b=2<<a;b=d<<a&(b|0-b);b=(b&0-b)+-1|0;i=b>>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=187036+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<<e);c[46749]=a}else{c[d+12>>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=f;w=i;l=x;return w|0}j=c[46750]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[187300+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0<d>>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=187300+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[46750]=j&~(1<<b);break}}else{c[f+16+(((c[f+16>>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<<b;if(!(o&b)){c[46749]=o|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[46750]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<<o;n=(v+520192|0)>>>16&4;v=v<<n;j=(v+245760|0)>>>16&2;j=14-(n|o|j)+(v<<j>>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[187300+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0<e>>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<<j;a=k&(a|0-a);if(!a){n=m;break}o=(a&0-a)+-1|0;i=o>>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[187300+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0<e>>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[46751]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=187300+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<<a);c[46750]=e;break}}else{c[f+16+(((c[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=187300+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(e&a)){c[46750]=e|a;c[d>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[46751]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[46754]|0;if(b>>>0>15){w=a+n|0;c[46754]=w;c[46751]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[46751]=0;c[46754]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[46752]|0;if(i>>>0>n>>>0){u=i-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[46867]|0)){c[46869]=4096;c[46868]=4096;c[46870]=-1;c[46871]=-1;c[46872]=0;c[46860]=0;c[46867]=p&-16^1431655768;a=4096}else a=c[46869]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[46859]|0;if(a|0?(o=c[46857]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[46860]&4)){d=c[46755]|0;c:do if(d){e=187444;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=I3(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=I3(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[46868]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[46857]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[46859]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=I3(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[46869]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((I3(a|0)|0)==(-1|0)){I3(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[46860]=c[46860]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=I3(m|0)|0,s=I3(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0<s>>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[46857]|0)+h|0;c[46857]=b;if(b>>>0>(c[46858]|0)>>>0)c[46858]=b;j=c[46755]|0;do if(j){b=187444;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[46752]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[46756]=c[46871];break}if(g>>>0<(c[46753]|0)>>>0)c[46753]=g;a=g+h|0;b=187444;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=187444;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[46754]|0)==(b|0)){w=(c[46751]|0)+i|0;c[46751]=w;c[46754]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=187300+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[46750]=c[46750]&~(1<<d);break d}while(0);c[a+24>>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=187300+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[46750]|0;d=1<<b;if(!(a&d)){c[46750]=a|d;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[46752]|0)+i|0;c[46752]=w;c[46755]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=187444;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0<f>>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[46756]=c[46871];d=a+4|0;c[d>>2]=27;c[b>>2]=c[46861];c[b+4>>2]=c[46862];c[b+8>>2]=c[46863];c[b+12>>2]=c[46864];c[46861]=g;c[46862]=h;c[46864]=0;c[46863]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0<w>>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;d=(w+245760|0)>>>16&2;d=14-(u|v|d)+(w<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=187300+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[46750]|0;a=1<<d;if(!(b&a)){c[46750]=b|a;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[46753]|0;if((w|0)==0|g>>>0<w>>>0)c[46753]=g;c[46861]=g;c[46862]=h;c[46864]=0;c[46758]=c[46867];c[46757]=-1;c[46762]=187036;c[46761]=187036;c[46764]=187044;c[46763]=187044;c[46766]=187052;c[46765]=187052;c[46768]=187060;c[46767]=187060;c[46770]=187068;c[46769]=187068;c[46772]=187076;c[46771]=187076;c[46774]=187084;c[46773]=187084;c[46776]=187092;c[46775]=187092;c[46778]=187100;c[46777]=187100;c[46780]=187108;c[46779]=187108;c[46782]=187116;c[46781]=187116;c[46784]=187124;c[46783]=187124;c[46786]=187132;c[46785]=187132;c[46788]=187140;c[46787]=187140;c[46790]=187148;c[46789]=187148;c[46792]=187156;c[46791]=187156;c[46794]=187164;c[46793]=187164;c[46796]=187172;c[46795]=187172;c[46798]=187180;c[46797]=187180;c[46800]=187188;c[46799]=187188;c[46802]=187196;c[46801]=187196;c[46804]=187204;c[46803]=187204;c[46806]=187212;c[46805]=187212;c[46808]=187220;c[46807]=187220;c[46810]=187228;c[46809]=187228;c[46812]=187236;c[46811]=187236;c[46814]=187244;c[46813]=187244;c[46816]=187252;c[46815]=187252;c[46818]=187260;c[46817]=187260;c[46820]=187268;c[46819]=187268;c[46822]=187276;c[46821]=187276;c[46824]=187284;c[46823]=187284;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[46756]=c[46871]}while(0);b=c[46752]|0;if(b>>>0>n>>>0){u=b-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(O_()|0)>>2]=12;w=0;l=x;return w|0}function D_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[46753]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0<f>>>0)return;if((c[46754]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[46751]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<<d);i=h;b=g;break}else{c[a+12>>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=187300+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[46750]=c[46750]&~(1<<b);i=h;b=g;break}}else{c[f+16+(((c[f+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[46755]|0)==(j|0)){j=(c[46752]|0)+b|0;c[46752]=j;c[46755]=i;c[i+4>>2]=j|1;if((i|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(j|0)){j=(c[46751]|0)+b|0;c[46751]=j;c[46754]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[46749]=c[46749]&~(1<<d);break}else{c[b+12>>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=187300+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[46750]=c[46750]&~(1<<a);break}}else{c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=187036+(a<<1<<2)|0;b=c[46749]|0;a=1<<a;if(!(b&a)){c[46749]=b|a;a=d;b=d+8|0}else{b=d+8|0;a=c[b>>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=187300+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[46750]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[46750]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[46757]|0)+-1|0;c[46757]=j;if(!j)a=187452;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[46757]=-1;return}function E_(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=C_(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;H3(a|0,0,d|0)|0;return a|0}function F_(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=C_(b)|0;return b|0}if(b>>>0>4294967231){c[(O_()|0)>>2]=12;b=0;return b|0}d=G_(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=C_(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;F3(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;D_(a);b=d;return b|0}function G_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[46869]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;H_(k,d);return a|0}if((c[46755]|0)==(i|0)){k=(c[46752]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[46755]=e;c[46752]=d;return a|0}if((c[46754]|0)==(i|0)){e=(c[46751]|0)+d|0;if(e>>>0<b>>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[46751]=d;c[46754]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0<b>>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[46749]=c[46749]&~(1<<f);break}else{c[e+12>>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[46750]=c[46750]&~(1<<d);break}}else{c[h+16+(((c[h+16>>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;H_(i,k);return a|0}return 0}function H_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[46754]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[46751]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[46750]=c[46750]&~(1<<d);break}}else{c[g+16+(((c[g+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[46755]|0)==(i|0)){i=(c[46752]|0)+b|0;c[46752]=i;c[46755]=h;c[h+4>>2]=i|1;if((h|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(i|0)){i=(c[46751]|0)+b|0;c[46751]=i;c[46754]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<<d);break}else{c[a+12>>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=187300+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[46750]=c[46750]&~(1<<b);break}}else{c[g+16+(((c[g+16>>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<<g;e=(i+520192|0)>>>16&4;i=i<<e;b=(i+245760|0)>>>16&2;b=14-(e|g|b)+(i<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=187300+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[46750]|0;d=1<<b;if(!(a&d)){c[46750]=a|d;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function I_(a,b){a=a|0;b=b|0;if(a>>>0<9){b=C_(b)|0;return b|0}else{b=J_(a,b)|0;return b|0}return 0}function J_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0<a>>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(O_()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=C_(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;H_(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;H_(f,i)}i=b+8|0;return i|0}function K_(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(c[a+60>>2]|0)|0;a=N_(Ja(6,d|0)|0)|0;l=b;return a|0}function L_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=N_(ya(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function M_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((N_(xa(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function N_(a){a=a|0;if(a>>>0>4294963200){c[(O_()|0)>>2]=0-a;a=-1}return a|0}function O_(){return 187492}function P_(a){a=a|0;return a|0}function Q_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=18;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ia(54,f|0)|0):0)a[b+75>>0]=-1;f=R_(b,d,e)|0;l=g;return f|0}function R_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=N_(za(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=N_(za(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function S_(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ka(91,e|0)|0)|0;l=d;return b|0}function T_(){return}function U_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(O_()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=N_(Aa(192,h|0)|0)|0}else{c[(O_()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function V_(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(W_(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function W_(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function X_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;g=h+16|0;f=h;e=h+32|0;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=Ha(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}i=N_(e)|0;l=h;return i|0}function Y_(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[141449+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=141537;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=141537;else{f=141537;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return Z_(f,c[e+20>>2]|0)|0}function Z_(a,b){a=a|0;b=b|0;return __(a,b)|0}function __(a,b){a=a|0;b=b|0;if(!b)b=0;else b=$_(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function $_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=a$(c[b+8>>2]|0,o)|0;f=a$(c[b+12>>2]|0,o)|0;g=a$(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=a$(c[b+(g<<2)>>2]|0,o)|0;g=a$(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=b$(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=a$(c[b+(f<<2)>>2]|0,o)|0;f=a$(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function a$(a,b){a=a|0;b=b|0;var c=0;c=C3(a|0)|0;return ((b|0)==0?a:c)|0}function b$(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function c$(a){a=a|0;return Y_(a,c[(d$()|0)+188>>2]|0)|0}function d$(){return e$()|0}function e$(){return 62872}function f$(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function g$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function h$(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=z3(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+h$(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function i$(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function j$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function k$(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=z3(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=l$(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function l$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[63116+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[63132+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+m$(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<<u)|0;c[s>>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+m$(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[63132+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+m$(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+m$(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10904+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function m$(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=A3(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function n$(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=s3(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function o$(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function p$(a,b){a=+a;b=+b;return +(+o$(a,b))}function q$(a,b){a=+a;b=b|0;return +(+m$(a,b))}function r$(a,b){a=+a;b=+b;return +(+s$(a,b))}function s$(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=z3(i|0,l|0,52)|0;e=e&2047;m=z3(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=A3(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=t$(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=A3(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=A3(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=A3(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=A3(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=A3(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=A3(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=A3(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=A3(f|0,d|0,1)|0;g=z;e=e+-1|0;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=A3(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=s3(f|0,d|0,0,-1048576)|0;d=z;e=A3(e|0,0,52)|0;d=d|z;e=o|e}else{e=z3(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function t$(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function u$(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0<f>>>0|(g|0)==(f|0)&t>>>0<e>>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=z3(s|0,r|0,52)|0;i=z3(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}v$(m,n,b);v$(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function v$(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function w$(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+f$(a,0.0,0);h[d>>3]=+i$(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=k$(a,g)|0;m=g+8|0;e=+f$(+h[g>>3],+h[m>>3],1);a=+i$(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function x$(a,b){a=+a;b=b|0;return +(+h$(a,b))}function y$(a){a=a|0;if(a>>>0<131072)a=(d[143341+((d[143341+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function z$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function A$(b,c){b=b|0;c=c|0;b=V_(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function B$(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function C$(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-1,0)|0;return c|0}function D$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function E$(a){a=a|0;return (a+-48|0)>>>0<10|0}function F$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;G$(h,0);d=H$(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function G$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function H$(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(O_()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while((B$(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=I$(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((d[146510+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){G$(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[146510+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;G$(b,0);c[(O_()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=r3(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=s3(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=I$(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[146766+((e*23|0)>>>5&7)>>0]|0;f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<<n;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=z3(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0<k>>>0|(m|0)==(k|0)&l>>>0<i>>>0)){f=k;n=72;break}else j=k;while(1){i=A3(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=w3(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=r3(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=s3(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[146510+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while(e>>>0>(d[146510+i>>0]|0)>>>0);c[(O_()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0<h>>>0|(e|0)==(h|0)&i>>>0<g>>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(O_()|0)>>2]=34;g=s3(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(O_()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=t3(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function I$(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=J$(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function J$(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((K$(a)|0)==0?(nb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function K$(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)nb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function L$(a){a=a|0;return (a+-48|0)>>>0<10|0}function M$(a){a=a|0;if(!(N$(a)|0))a=(E$(a)|0)!=0&1;else a=1;return a|0}function N$(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function O$(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=P$(f)|0,(f|0)!=(P$(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=P$(b&255)|0;return g-(P$(d[c>>0]|0)|0)|0}function P$(a){a=a|0;var b=0;b=(Q$(a)|0)==0;return (b?a:a|32)|0}function Q$(a){a=a|0;return (a+-65|0)>>>0<26|0}function R$(a){a=a|0;return S$(a,0)|0}function S$(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(T$(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[66242+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[66242+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[66242+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[65754+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[65754+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[65754+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function T$(a){a=a|0;if(a>>>0<131072)a=(d[146775+((d[146775+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function U$(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function V$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=P$(f)|0,(g|0)!=(P$(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=P$(b&255)|0;b=b-(P$(d[c>>0]|0)|0)|0}return b|0}function W$(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function X$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?187560:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[($$()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[62280+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(O_()|0)>>2]=84;f=-1}l=k;return f|0}function Y$(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Z$(a,b,0)|0;return a|0}function Z$(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(_$()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(O_()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(O_()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function _$(){return e$()|0}function $$(){return e$()|0}function a0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Ta(149751)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149758+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149830)|0;if(d|0?a[d>>0]|0:0)break;d=149835}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=149835;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((b$(k,149835)|0)!=0?(b$(k,149843)|0)!=0:0){d=c[46891]|0;if(d|0)do{if(!(b$(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);ta(187568);d=c[46891]|0;c:do if(d|0){while(1){if(!(b$(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}La(187568);break b}while(0);d:do if(((c[46876]|0)==0?(g=Ta(149849)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=V_(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0<i>>>0){F3(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;F3(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=ua(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=C_(28)|0;if(!d){S_(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d;break}}else m=41;while(0);if((m|0)==41){d=C_(28)|0;if(d){c[d>>2]=c[15558];c[d+4>>2]=c[15559];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d}}La(187568);d=(b|0)==0&(d|0)==0?62232:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=62232;break}d=0}while(0);l=p;return d|0}function b0(a,b){a=a|0;b=b|0;c0(a,b)|0;return a|0}function c0(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function d0(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function e0(a){a=a|0;if(!a)a=0;else a=(f0(63396,a)|0)!=0&1;return a|0}function f0(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((U$(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function g0(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=h0(a)|0;break}case 2:{a=T$(a)|0;break}case 3:{a=i0(a)|0;break}case 4:{a=j0(a)|0;break}case 5:{a=L$(a)|0;break}case 6:{a=k0(a)|0;break}case 7:{a=l0(a)|0;break}case 8:{a=W$(a)|0;break}case 9:{a=y$(a)|0;break}case 10:{a=e0(a)|0;break}case 11:{a=m0(a)|0;break}case 12:{a=n0(a)|0;break}default:a=0}while(0);return a|0}function h0(a){a=a|0;if(!(L$(a)|0))a=(T$(a)|0)!=0&1;else a=1;return a|0}function i0(a){a=a|0;return d0(a)|0}function j0(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function k0(a){a=a|0;if(!(e0(a)|0))a=(W$(a)|0)!=0&1;else a=0;return a|0}function l0(a){a=a|0;return (R$(a)|0)!=(a|0)|0}function m0(a){a=a|0;return (o0(a)|0)!=(a|0)|0}function n0(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function o0(a){a=a|0;return S$(a,1)|0}function p0(a){a=a|0;return (a+-97|0)>>>0<26|0}function q0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=63484;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(O_()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=r0(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function r0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((s0(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=t0(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=s0(b,d,n,q,p)|0;if(h){nb[c[b+36>>2]&63](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=s0(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)u0(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function s0(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(O_()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)v0(d,r,j);if(j|0)continue;u=(E$(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<<u&75913|0)==0)m=0;else{m=0;do{m=1<<(k<<24>>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<<u&75913|0)==0))}if(k<<24>>24==42){if((E$(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=w0(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=w0(D)|0;j=c[D>>2]|0;break}if(E$(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(149862+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}x0(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=z0(j,k,x)|0;m=y-o|0;q=0;n=150326;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=t3(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=150326;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?150326:150328):150327;v=67;break d}}case 117:{k=E;m=0;n=150326;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=150326;o=x;k=1;break}case 109:{k=c$(c[(O_()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:150336;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){B0(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=C0(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=150326;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=y0(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?150326:150326+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=A0(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=D$(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=150326;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=Y$(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}B0(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=Y$(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}v0(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;B0(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;B0(d,32,m,s,j);v0(d,n,q);B0(d,48,m,s,j^65536);B0(d,48,o,p,0);v0(d,r,p);B0(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;x0(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function t0(a){a=a|0;return 0}function u0(a){a=a|0;return}function v0(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))E0(b,d,a)|0;return}function w0(b){b=b|0;var d=0,e=0;if(!(E$(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((E$(a[e>>0]|0)|0)!=0)}return d|0}function x0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function y0(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[150374+(b&15)>>0]|0|f;b=z3(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function z0(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=z3(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function A0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=x3(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=w3(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function B0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;H3(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{v0(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}v0(a,f,e)}l=g;return}function C0(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;D0(e)|0;if((z|0)<0){e=-e;C=1;B=150343}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?150344:150349):150346}D0(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;B0(b,32,f,j,h&-65537);v0(b,B,C);v0(b,e!=e|0.0!=0.0?(G?150511:150370):G?150362:150366,3);B0(b,32,f,j,h^8192)}else{r=+x$(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=A0(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[150374+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;B0(b,32,f,F,h);v0(b,s,q);B0(b,48,f,F,h^65536);v0(b,G,k);B0(b,48,j-k|0,0,0);v0(b,o,E);B0(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=A3(c[j>>2]|0,0,o|0)|0;x=s3(x|0,z|0,m|0,0)|0;y=z;v=x3(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=w3(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=A0(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;B0(b,32,f,j,h);v0(b,B,C);B0(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=A0(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)v0(b,150390,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=A0(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}B0(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=A0(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;v0(b,m,1);if(s&(k|0)<1){m=n;break}v0(b,150390,1);m=n}else{if(m>>>0<=G>>>0)break;H3(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;v0(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}B0(b,48,k+18|0,18,0);v0(b,v,E-v|0)}B0(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function D0(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function E0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(F0(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=nb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=nb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);F3(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function F0(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function G0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;F3(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function H0(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=150392;f=97;while(1){if(e<<24>>24==f<<24>>24?(b$(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function I0(a){a=a|0;var b=0;b=(p0(a)|0)==0;return (b?a:a&95)|0}function J0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{ta(187576);if((b|0)!=6){d=K0(b,d)|0;La(187576);break}if(!d){d=194052;b=0}else{b=g;e=150465;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=V_(d,59)|0;e=b-d|0;if((e|0)<16){F3(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}K0(f,g)|0;f=f+1|0}while((f|0)!=6);d=194052;b=0}while(1){f=c[187536+(b<<2)>>2]|0;f=f|0?f+8|0:150481;e=W_(f)|0;F3(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;La(187576);d=194052}while(0);l=h;return d|0}function K0(a,b){a=a|0;b=b|0;if(!b)a=c[187536+(a<<2)>>2]|0;else{b=a0(a,b)|0;c[187536+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:150481)|0}function L0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function M0(a){a=a|0;return N0(a)|0}function N0(a){a=a|0;return B3(a|0)|0}function O0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=t0(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)u0(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=D$(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0<g>>>0?i:g;F3(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=J$(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)u0(f)}return b|0}function P0(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=A$(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=Q0(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=R0(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=S0(b,c)|0;break}else{b=T0(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function Q0(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function R0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function S0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function T0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(L0(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0<s>>>0){i=D$(g,0,k)|0;if(i)if((i-h|0)>>>0<s>>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0<f>>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function U0(a,b,c){a=a|0;b=b|0;c=c|0;V0(a,b,c)|0;return a|0}function V0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);H3(b|0,0,e|0)|0;return b|0}function W0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function X0(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(a)|0;a=Ja(6,d|0)|0;a=N_((a|0)==-4?0:a)|0;l=b;return a|0}function Y0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Z0(a,b,f)|0;l=e;return d|0}function Z0(a,b,c){a=a|0;b=b|0;c=c|0;return q0(a,2147483647,b,c)|0}function _0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0<h>>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)$0(a,d,e,f,j);else b1(a,d,e,k,f,0,j);if((f|0)==1){c1(k,1);f=0;break}else{c1(k,b);f=1;break}}else{$0(a,d,e,f,j);a1(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0<g>>>0)}else{f=1;b=1}b1(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){c1(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;a1(k,1);b1(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);c1(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;b1(h,d,e,k,n,1,j);a=h;f=n;continue}b=d1(k)|0;a1(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function $0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((lb[d&127](a,g)|0)>-1?(lb[d&127](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((lb[d&127](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);f1(b,m,e);l=n;return}function a1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function b1(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(lb[d&127](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((lb[d&127](g,j)|0)>-1){i=10;break a}if((lb[d&127](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=d1(n)|0;a1(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((lb[d&127](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){f1(b,o,e);$0(a,b,d,f,h)}l=p;return}function c1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<<b;c[a>>2]=d<<b;return}function d1(a){a=a|0;var b=0;b=e1((c[a>>2]|0)+-1|0)|0;if(!b){b=e1(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function e1(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function f1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;F3(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;F3(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function g1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=r0(a,b,f)|0;l=e;return d|0}function h1(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;sa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function i1(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-2147483648,0)|0;return c|0}function j1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){H3(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=V_(b,e<<24>>24)|0;l=h;return e-b|0}function k1(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[46896]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[46896]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[46896]=d;if(!(a[d>>0]|0)){c[46896]=0;break}else{c[46896]=d+1;a[d>>0]=0;break}}while(0);return b|0}function l1(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function m1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function n1(a){a=a|0;var b=0,c=0;b=(W_(a)|0)+1|0;c=C_(b)|0;if(!c)a=0;else a=F3(c|0,a|0,b|0)|0;return a|0}function o1(a,b){a=a|0;b=b|0;return l1(a,b,(W_(a)|0)+1|0)|0}function p1(a,b){a=a|0;b=b|0;b0(a+(W_(a)|0)|0,b)|0;return a|0}function q1(b,c){b=b|0;c=c|0;c=b+(j1(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function r1(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function s1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=t0(a)|0;else f=0;t1(a);g=(c[a>>2]&1|0)!=0;if(!g){e=u1()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;v1()}b=w1(a)|0;b=kb[c[a+12>>2]&63](a)|0|b;d=c[a+92>>2]|0;if(d|0)D_(d);if(g){if(f|0)u0(a)}else D_(a);return b|0}function t1(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(y1()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function u1(){ta(187588);return 187596}function v1(){La(187588);return}function w1(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=x1(a)|0;break}d=(t0(a)|0)==0;b=x1(a)|0;if(!d)u0(a)}else{if(!(c[15685]|0))b=0;else b=w1(c[15685]|0)|0;a=c[(u1()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=t0(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=x1(a)|0|b;if(d|0)u0(a);a=c[a+56>>2]|0}while((a|0)!=0);v1()}while(0);return b|0}function x1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)nb[c[a+40>>2]&63](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function y1(){return e$()|0}function z1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(A$(150498,a[d>>0]|0)|0){e=C_(1156)|0;if(!e)e=0;else{H3(e|0,0,124)|0;if(!(A$(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(A$(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;Ea(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=Ea(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;Ea(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ia(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=15;c[e+36>>2]=18;c[e+40>>2]=16;c[e+12>>2]=17;if(!(c[46875]|0))c[e+76>>2]=-1;A1(e)|0}}else{c[(O_()|0)>>2]=22;e=0}l=k;return e|0}function A1(a){a=a|0;var b=0,d=0;b=u1()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;v1();return a|0}function B1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(C1()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[62280+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(O_()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function C1(){return e$()|0}function D1(a,b){a=a|0;b=b|0;var c=0;c=W_(a)|0;return ((E1(a,1,c,b)|0)!=(c|0))<<31>>31|0}function E1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(t0(e)|0)==0;a=E0(a,f,e)|0;if(!g)u0(e)}else a=E0(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function F1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(F0(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((nb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function G1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=N_(Fa(3,f|0)|0)|0;l=e;return d|0}function H1(){var a=0,b=0;b=l;l=l+16|0;a=Da(20,b|0)|0;l=b;return a|0}function I1(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=150483;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function J1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=Ca(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(Ea(221,e|0)|0)>=0):0){I1(e,a);c[f>>2]=e;c[f+4>>2]=b;b=N_(Ba(195,f|0)|0)|0}else b=N_(d)|0;l=g;return b|0}function K1(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ga(33,e|0)|0)|0;l=d;return b|0}function L1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(A$(150498,a[d>>0]|0)|0){f=M1(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=N_(Ha(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}b=z1(e,d)|0;if(!b){c[h>>2]=e;Ja(6,h|0)|0;b=0}}else b=0}else{c[(O_()|0)>>2]=22;b=0}l=i;return b|0}function M1(b){b=b|0;var c=0,d=0,e=0;d=(A$(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(A$(b,120)|0)==0;d=e?d:d|128;b=(A$(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function N1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=O1(a,b,f)|0;l=e;return d|0}function O1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=38;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=Q1(e,b,d)|0;l=g;return h|0}function P1(a,b,c){a=a|0;b=b|0;c=c|0;return Y1(a,b,c)|0}function Q1(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=t0(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(B$(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(E$(n&255)|0?(a[p+2>>0]|0)==36:0){w=R1(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(E$(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((E$(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{S1(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{G$(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0}while((B$(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}G$(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0<n>>>0)c[y>>2]=p+1;else{if((I$(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){H3(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;H3(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=C_(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(X$(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=F_(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(T1(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=C_(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=F_(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+U1(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=H$(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{S1(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;G$(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(B$(d[k>>0]|0)|0))break;else m=k}G$(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0}while((B$(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){D_(j);D_(i)}}else e=0;while(0);if(K|0)u0(b);l=L;return e|0}function R1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function S1(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function T1(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function U1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0}while((B$(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=I$(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[150502+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[150511+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=I$(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|32|0)==120){g=+V1(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+W1(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function V1(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=I$(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=I$(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=I$(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=I$(a)|0;l=s3(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=s3(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=I$(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else G$(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=s3(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=X1(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){G$(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=A3(q|0,p|0,2)|0;l=s3(l|0,z|0,-32,-1)|0;l=s3(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(O_()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0<y>>>0){c[(O_()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=s3(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=t3(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=s3(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0<b>>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+p$(+m$(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(O_()|0)>>2]=34;h=+q$(h,l)}while(0);return +h}function W1(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=I$(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48){k=0;b=0;while(1){k=s3(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=s3(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=X1(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){G$(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=s3(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(O_()|0)>>2]=22;G$(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(O_()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0<a>>>0){c[(O_()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[63608+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[63608+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[63608+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=A3(c[p>>2]|0,0,29)|0;k=s3(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=w3(k|0,m|0,1e9,0)|0;k=x3(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[63640+(p<<2)>>2]|0;if(n>>>0<o>>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<<v)+-1|0;u=1e9>>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+p$(+m$(1.0,105-n|0),j);r=+r$(j,+m$(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+r$(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(O_()|0)>>2]=34}while(0);i=+q$(i,b)}while(0);l=J;return +i}function X1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=r3(g|0,b|0,10,0)|0;g=z;e=s3(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=s3(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=t3(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function Y1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=D$(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0<d>>>0?f:d;F3(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Z1(a,b,c){a=a|0;b=b|0;c=c|0;return _1(a,b,c)|0}function _1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(t0(a)|0)==0;b=$1(a,b,d)|0;if(!e)u0(a)}else b=$1(a,b,d)|0;return b|0}function $1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((nb[c[a+40>>2]&63](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function a2(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(B$(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(E$(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((E$(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function b2(a){a=a|0;return +(+c2(a,0))}function c2(a,b){a=a|0;b=b|0;return +(+d2(a,b,1))}function d2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;G$(h,0);e=+U1(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function e2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=lb[e&127](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function f2(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=r3((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=s3(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=z3(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function g2(){var a=0,b=0,d=0;b=183528;b=r3(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=s3(b|0,z|0,1,0)|0;a=z;d=183528;c[d>>2]=b;c[d+4>>2]=a;a=z3(b|0,a|0,33)|0;return a|0}function h2(a){a=a|0;F3(190672,65740,6)|0;F3(65740,a|0,6)|0;return 190672}function i2(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;h2(d)|0;l=c;return}function j2(a){a=a|0;var b=0;b=f2(a,65746)|0;b=A3(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function k2(){return +(+j2(65740))}function l2(a,b){a=a|0;b=b|0;if(!a)b=E_(1,24)|0;else H3(b|0,0,24)|0;return b|0}function m2(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{D_(c[b>>2]|0);d=b;b=c[b+4>>2]|0;D_(d)}while((b|0)!=0);D_(a);return}function n2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0<f>>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=C_(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=C_(g)|0;c[j>>2]=b;d=b;if(!b){D_(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)H3(b|0,0,d|0)|0}else b=0;while(0);return b|0}function o2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=p2()|0;a:do if(!t)b=12;else{u=l2(0,0)|0;if(!u){q2(t);b=12;break}H3(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=r2(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=E_(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=s2(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=C_((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;H3(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=E_(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=E_(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=s2(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=t2(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=u2(u,0,0,b)|0;if((b|0)!=0?(s=v2(u,i,b)|0,(s|0)!=0):0){b=w2(u,t,s)|0;if(!b){o=C_(c[p>>2]<<2)|0;if(o){q=C_(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)H3(o|0,0,b<<2|0)|0;x2(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=E_(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=x2(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=E_(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=C_(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}F3(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;m2(u);q2(t);D_(o);D_(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);m2(u);q2(t);if(h|0)D_(f);if(i|0)D_(e);c[a+4>>2]=g;y2(a)}while(0);l=v;return b|0}function p2(){var a=0,b=0;a=C_(20)|0;do if(a){b=C_(2048)|0;c[a+16>>2]=b;if(!b){D_(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function q2(a){a=a|0;D_(c[a+16>>2]|0);D_(a);return}function r2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=C2(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=u2(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=R2(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=S2(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=u2(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=M2(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=v2(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=N2(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=N2(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=T2(b,d,D2(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=E2(t)|0;h=h+-1|0;i=E2(t)|0}if((j|0)==40){f=1;d=N2(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=B2(t,f)|0;if(d|0)break a;d=B2(t,g)|0;if(d|0)break a;d=C2(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function s2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=A2(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=C_((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=C_((c[g>>2]<<2)+4|0)|0;if(!A){D_(z);g=12;break}c[A>>2]=-1;B=C_((c[g>>2]<<3)+8|0)|0;if(!B){D_(z);D_(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);B2(d,e)|0;g=C2(d,0)|0;a:do if((g|0)!=0|(A2(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(D2(d)|0){case 6:{i=D2(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=E2(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=C_((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=C2(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=C2(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=B2(d,q)|0;if(!g){g=C2(d,5)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(!g){i=k+20|0;g=C2(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=C2(d,g)|0;if(!g){g=C2(d,4)|0;if(!g){g=B2(d,k)|0;if(!g){p=i;g=C2(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=C2(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=C2(d,m)|0;if(g|0){p=t;o=s;break c}g=C2(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=B2(d,q)|0;if(!g){g=C2(d,1)|0;if(!g){g=B2(d,c[i>>2]|0)|0;if(!g){g=C2(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=C2(d,i?p:t)|0;if(!g){g=C2(d,i?t:m)|0;if(!g){g=B2(d,e)|0;if(!g){g=C2(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=B2(d,q)|0;if(!g){g=B2(d,j)|0;if(!g){g=B2(d,k)|0;if(!g){g=C2(d,3)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(g|0){p=t;o=s;break c}g=C2(d,2)|0;if(g|0){p=t;o=s;break c}g=B2(d,k)|0;if(g|0){p=t;o=s;break c}g=C2(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=E2(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(D2(d)|0)+i;i=0;l=-1}else{q=D2(d)|0;r=D2(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=D2(d)|0;j=D2(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=E2(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=E2(d)|0;o=E2(d)|0;g=E2(d)|0;e=D2(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=E2(d)|0;i=D2(d)|0;k=D2(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=Q2(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=Q2(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(A2(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(P2(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;D_(z);D_(A);D_(B)}while(0);return g|0}function t2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=A2(b)|0;c[t>>2]=0;c[x>>2]=0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d){b:do if((A2(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=D2(b)|0;r=E2(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=C2(b,j)|0;if(d|0)break b;d=B2(b,r)|0;if(d|0)break b;d=C2(b,1)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=C2(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=D2(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=L2(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=v2(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=L2(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=M2(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=v2(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=u2(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=N2(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=v2(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((A2(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function u2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=n2(a,0,0,1,20)|0;a=K2(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function v2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function w2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=A2(b)|0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d)if((A2(b)|0)>(m|0)){b:while(1){h=D2(b)|0;i=E2(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=F2(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=G2(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=G2(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=F2(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,1)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 1:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,2)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 2:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,3)|0;if(d|0)break a;d=B2(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=H2(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=H2(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=H2(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=H2(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((A2(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)D_(e);else if((n|0)==52)D_(e)}else d=0}while(0);l=o;return d|0}function x2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=z2(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=x2(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=z2(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=x2(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function y2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){D_(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){D_(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)D_(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)D_(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}D_(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){D_(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0<b>>>0)}D_(a)}a=c[h+32>>2]|0;if(a|0)D_(a);a=c[h+20>>2]|0;if(a|0)D_(a);a=c[h+36>>2]|0;if(a|0)D_(a);D_(h)}return}function z2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=C_(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)D_(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=C_((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function A2(a){a=a|0;return c[a+12>>2]|0}function B2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function C2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function D2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function E2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function F2(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=n2(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function G2(a){a=a|0;a=n2(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function H2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=n2(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=n2(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=n2(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function I2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=A2(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=B2(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((A2(a)|0)>(o|0))while(1){b=E2(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=B2(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=B2(a,k)|0,g|0):0)break a;if((A2(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function J2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=F_(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];J2(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function K2(a,b,d){a=a|0;b=b|0;d=d|0;a=n2(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function L2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=A2(d)|0;B2(d,e)|0;e=C2(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(D2(d)|0){case 1:{i=7;break c}case 0:{e=E2(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((A2(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=E2(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=M2(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=u2(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=N2(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,m+4|0)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=C2(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=v2(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,k)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=C2(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function M2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=n2(b,0,0,1,16)|0;b=K2(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function N2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function O2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function P2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function Q2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function R2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=V2(b,d+1|0)|0;break}case 92:{e=d+1|0;f=W2(e)|0;if(f|0){e=R2(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=u2(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=u2(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=u2(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=u2(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=X2(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=u2(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=u2(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=u2(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=u2(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=N2(c[b>>2]|0,f,e)|0;else e=0}else e=u2(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=u2(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=u2(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=B1(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((m0(c[j>>2]|0)|0)==0?(l0(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=R$(c[j>>2]|0)|0;g=R$(c[j>>2]|0)|0;f=b+24|0;g=u2(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=o0(c[j>>2]|0)|0;d=o0(c[j>>2]|0)|0;d=u2(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=N2(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=u2(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function S2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=U2(b,i)|0;if((a[b>>0]|0)==44){b=U2(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function T2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=u2(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=v2(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function U2(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(E$(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(E$(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function V2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=C_(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=Y2(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){_0(c[r>>2]|0,c[h>>2]|0,4,109);d=_2(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=n2(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}F3(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=K2(c[b>>2]|0,0,j)|0;e=N2(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);D_(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function W2(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[63648+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[63648+(b<<3)+4>>2]|0}function X2(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function Y2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=B1(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}F3(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=H0(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=B1(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=_2(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?($2(e,m,g)|0)!=0:0){g=12;break a}}j=B1(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function Z2(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function _2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=F_(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=n2(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function $2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(l0(b)|0)){if(!(m0(b)|0)){b=b+1|0;break}f=o0(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((o0(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=R$(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((R$(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=_2(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function a3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=C_(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=c3(i,b,g,f,k)|0;else a=b3(i,b,g,f,k)|0;if(!a)d3(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)D_(d)}l=n;return a|0}function b3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=l2(0,0)|0;a:do if(U){p=n2(U,0,0,0,32)|0;if(!p){m2(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=C_(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=C_(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=C_(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)H3(g|0,0,n<<2|0)|0;G=e+q|0;e=B1(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(h0(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(h0(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(h0(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(h0(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(h0(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(h0(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(h0(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(h0(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=n2(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=n2(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(f3(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;d3(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(z$(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0<q>>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(h0(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(h0(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(h0(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(h0(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(h0(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(h0(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(h0(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(h0(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(g0(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=o0(q)|0;e=w+24|0;if(g0(x,c[e>>2]|0)|0)break;x=R$(q)|0;if(!(g0(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(e3(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=n2(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=n2(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==60){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==145){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==152){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);m2(U);if(j|0)D_(i);if(m|0)D_(h);if(k)D_(g)}else e=12;while(0);l=V;return e|0}function c3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=C_(e)|0;if(!U)e=12;else{H3(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=B1(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(h0(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(h0(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(h0(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(h0(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(h0(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(h0(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(h0(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)H3(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=B1(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(h0(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(h0(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(h0(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(h0(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(h0(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(h0(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(h0(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(g0(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=o0(h)|0;a=k+24|0;if(g0(A,c[a>>2]|0)|0)break;A=R$(h)|0;if(!(g0(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(e3(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(f3(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);D_(U)}l=W;return e|0}function d3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0<a>>>0&j>>>0<n>>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0<a>>>0&d>>>0<n>>>0)}else d=0}else d=0;if(d>>>0<a>>>0)H3(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function e3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(g0(b,d)|0){d=1;break a}}else{e=R$(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}e=o0(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function f3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function g3(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=t0(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0<k>>>0?i:k;F3(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(K$(f)|0)break;h=nb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)u0(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)u0(f);return e|0}function h3(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=i3(a)|0}else a=i3(a)|0;return a|0}function i3(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=nb[c[a+40>>2]&63](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function j3(a){a=a|0;(c[a+76>>2]|0)>-1?t0(a)|0:0;return c[a+60>>2]|0}function k3(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[15653]|0;if((c[f+76>>2]|0)>-1)g=t0(f)|0;else g=0;do if((D1(b,f)|0)<0)b=-1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;b=0;break}b=(F1(f,10)|0)>>31}while(0);if(g|0)u0(f);return b|0}function l3(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=150604;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){h1(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=N_(Ha(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;wa(10,h|0)|0;b=z1(f,150624)|0;if(!b){c[i>>2]=f;Ja(6,i|0)|0;b=0}}l=k;return b|0}function m3(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(t0(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=J$(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=J$(a)|0;break}}while(0);return b|0}function n3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(t0(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=F1(d,b)|0;u0(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=F1(d,b)|0}while(0);return e|0}function o3(a){a=a|0;return h3(a)|0}function p3(){}function q3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function r3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=q3(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function s3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function t3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function u3(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}\n  function v3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=u3(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((u3(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (z=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=s3(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;t3(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=t3(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function w3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return v3(a,b,c,d,0)|0}function x3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;v3(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function y3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=(b|0)<0?-1:0;return b>>c-32|0}function z3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=0;return b>>>c-32|0}function A3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}z=a<<c-32;return 0}function B3(a){a=a|0;return (a&255)<<8|a>>8&255|0}function C3(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function D3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=F_(d|0,8*(e+1|0)|0)|0;d=D3(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function E3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function F3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return Ra(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function G3(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else F3(b,c,d)|0;return b|0}function H3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function I3(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;va(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;va(12);return -1}return d|0}function J3(a){a=a|0;return +gb[a&1]()}function K3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +hb[a&7](+b,+c,+d)}function L3(a,b){a=a|0;b=b|0;return +ib[a&1](b|0)}function M3(a){a=a|0;return jb[a&3]()|0}function N3(a,b){a=a|0;b=b|0;return kb[a&63](b|0)|0}function O3(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&127](b|0,c|0)|0}function P3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return mb[a&3](b|0,c|0,+d,+e)|0}function Q3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nb[a&63](b|0,c|0,d|0)|0}function R3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ob[a&127](b|0,c|0,d|0,e|0)|0}function S3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return pb[a&127](b|0,c|0,d|0,e|0,f|0)|0}function T3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return qb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function U3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return rb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function V3(a){a=a|0;sb[a&15]()}function W3(a,b){a=a|0;b=b|0;tb[a&127](b|0)}function X3(a,b,c){a=a|0;b=b|0;c=c|0;ub[a&63](b|0,c|0)}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&127](b|0,c|0,d|0)}function Z3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;wb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function _3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xb[a&31](b|0,c|0,d|0,e|0)}function $3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;yb[a&15](b|0,c|0,d|0,e|0,f|0)}function a4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;zb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function b4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Ab[a&0](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function c4(){S(0);return 0.0}function d4(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function e4(a){a=a|0;S(2);return 0.0}function f4(){S(3);return 0}function g4(a){a=a|0;S(4);return 0}function h4(a,b){a=a|0;b=b|0;S(5);return 0}function i4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;S(6);return 0}function j4(a,b,c){a=a|0;b=b|0;c=c|0;S(7);return 0}function k4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(8);return 0}function l4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(9);return 0}function m4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(10);return 0}function n4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;S(11);return 0}function o4(){S(12)}function p4(a){a=a|0;S(13)}function q4(a,b){a=a|0;b=b|0;S(14)}function r4(a,b,c){a=a|0;b=b|0;c=c|0;S(15)}function s4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(16)}function t4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(17)}function u4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(18)}function v4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(19)}function w4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;S(20)}\n  \n  // EMSCRIPTEN_END_FUNCS\n  var gb=[c4,FL];var hb=[d4,RF,QF,SF,TF,d4,d4,d4];var ib=[e4,ML];var jb=[f4,eq,EH,vI];var kb=[g4,eh,zg,Nm,Om,Fy,Iy,sN,tN,iP,jP,kP,lP,mP,nP,oP,pP,K_,Ib,bC,Al,Dl,an,vH,ay,Sy,$x,AH,FH,by,eN,uH,jN,kN,bV,C_,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4];var lb=[h4,hy,Ey,Jy,EK,FK,wK,sK,aK,KT,LT,MT,NT,OT,PT,RT,ST,TT,UT,VT,WT,XT,YT,ZT,_T,$T,aU,bU,cU,dU,eU,fU,gU,hU,iU,jU,kU,lU,mU,nU,wX,xX,zX,WX,XX,YX,ZX,_X,$X,aY,bY,UY,VY,XY,jY,kY,mY,$B,pg,dh,Gh,ii,Ai,Lk,Jk,Bl,El,$o,oq,Kq,Mq,Oq,Pq,Rq,Qq,ar,is,ns,ps,tu,mB,lB,kB,gD,Ty,xH,tD,JD,ED,FD,GE,D1,n3,zL,NM,xx,PR,Ex,Gx,fN,b$,oQ,JT,ZU,_U,F_,kX,lX,mX,Z2,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4];var mb=[i4,qt,vt,i4];var nb=[j4,Jm,Mu,kw,sw,Bw,Gw,Dy,Hy,HI,AM,zR,AX,YY,nY,L_,M_,Q_,R_,G0,Pw,Zm,Au,tp,os,Iw,eD,Y0,vA,g1,BL,DI,sO,WU,HY,yZ,sZ,CZ,P1,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4];var ob=[k4,Lm,Wq,Nu,mw,uw,Cx,AA,Dx,Wx,jy,ly,wy,vy,Ky,Oy,Qy,xI,CM,VN,TN,PP,BR,XR,WR,pX,qX,rX,sX,tX,uX,vX,yX,CX,NY,OY,PY,QY,RY,SY,TY,WY,_Y,cY,dY,eY,fY,gY,hY,iY,lY,pY,Lw,Az,iD,DL,QV,TV,_V,jW,sW,yW,wW,zW,iX,DZ,XW,JY,KY,zZ,AZ,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4];var pb=[l4,iy,bK,xK,DX,EX,UX,VX,pZ,$Y,aZ,qY,rY,nX,oX,FZ,GZ,HZ,IZ,KZ,LZ,MZ,NZ,OZ,QZ,RZ,SZ,TZ,UZ,PZ,s_,t_,j_,c_,VZ,WZ,XZ,ZZ,YZ,_Z,$Z,a_,b_,d_,e_,f_,g_,h_,i_,k_,l_,m_,n_,r_,p_,o_,q_,y_,u_,v_,w_,x_,z_,A_,B_,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4];var qb=[m4,AU];var rb=[n4,rZ,BZ,n4];var sb=[o4,EL,BH,CH,DH,HH,IH,JH,FR,o4,o4,o4,o4,o4,o4,o4];var tb=[p4,Ob,Pb,Tb,Ub,Vb,nc,oc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,cd,dd,gd,hd,id,jd,kd,ld,md,yd,zd,Ad,Cd,Dd,Ed,Fd,Gd,Hd,Id,Jd,Ud,Vd,Wd,Yd,Zd,_d,$d,ae,be,ce,de,ee,ge,te,ue,ve,we,He,Ie,Je,Le,Ye,Ze,_e,af,bf,cf,df,ef,ff,gf,hf,jf,sf,tf,uf,vf,Yf,Tf,rm,bm,fp,Go,ao,co,Np,Op,Zl,_l,fo,no,po,Ao,my,IJ,_J,KJ,JJ,uK,fJ,iJ,qP,vP,Mf,Fl,Ko,Oo,gp,D_,ax,jD,cF,ER,lO,mN,yI,YR,zU,UU,VU,$U,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4];var ub=[q4,Uc,Zc,od,td,Qd,me,Ce,Re,pf,Bf,Ly,cK,GK,yK,tK,YJ,ZJ,CK,DK,tP,xP,PI,Sw,fD,GH,dN,AT,yU,XU,YU,aV,cV,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4];var vb=[r4,Wb,Xb,_b,Lc,Tc,Vc,Yc,nd,pd,sd,Ld,Md,Pd,he,ie,le,xe,ye,Be,Me,Ne,Qe,kf,lf,of,wf,xf,Af,qk,rk,sk,Km,lw,tw,Zw,ny,Py,wz,BA,YC,BG,wI,II,hJ,BM,EM,UN,SN,rP,sP,uP,wP,yP,AR,nT,mT,qx,Sx,bz,Ez,Hz,zH,CL,BI,hN,lN,oT,qT,rT,zT,BT,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4];var wb=[s4,xE,yE,zE,AE,BE,CE,DE,EE,s4,s4,s4,s4,s4,s4,s4];var xb=[t4,Yb,Wc,qd,Bd,Nd,Xd,je,ze,Oe,$e,mf,yf,Pf,Of,Nf,Lf,Kf,Jf,mc,If,Hf,ky,$J,vK,BX,ZY,oY,_0,gN,iN,LY];var yb=[u4,ed,Kd,Rd,fe,Ke,Cl,hD,nN,u4,u4,u4,u4,u4,u4,u4];var zb=[v4,Zb,Xc,rd,Od,ke,Ae,Pe,nf,zf,oN,v4,v4,v4,v4,v4];var Ab=[w4];return{___errno_location:O_,___muldi3:r3,___udivdi3:w3,___uremdi3:x3,_bitshift64Ashr:y3,_bitshift64Lshr:z3,_bitshift64Shl:A3,_dtextract:zw,_free:D_,_htons:M0,_i64Add:s3,_i64Subtract:t3,_llvm_bswap_i16:B3,_llvm_bswap_i32:C3,_malloc:C_,_memalign:I_,_memcpy:F3,_memmove:G3,_memset:H3,_realloc:F_,_saveSetjmp:D3,_sbrk:I3,_testSetjmp:E3,_vizCreateFile:Kb,_vizLastErrorMessage:Jb,_vizRenderFromString:Nb,_vizSetNop:Mb,_vizSetY_invert:Lb,dynCall_d:J3,dynCall_dddd:K3,dynCall_di:L3,dynCall_i:M3,dynCall_ii:N3,dynCall_iii:O3,dynCall_iiidd:P3,dynCall_iiii:Q3,dynCall_iiiii:R3,dynCall_iiiiii:S3,dynCall_iiiiiii:T3,dynCall_iiiiiiiiiii:U3,dynCall_v:V3,dynCall_vi:W3,dynCall_vii:X3,dynCall_viii:Y3,dynCall_viiiddi:Z3,dynCall_viiii:_3,dynCall_viiiii:$3,dynCall_viiiiii:a4,dynCall_viiiiiiiii:b4,establishStackSpace:Eb,getTempRet0:Hb,runPostSets:p3,setTempRet0:Gb,setThrew:Fb,stackAlloc:Bb,stackRestore:Db,stackSave:Cb}})\n  \n  \n  // EMSCRIPTEN_END_ASM\n  (Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Ashr=Module[\"_bitshift64Ashr\"]=asm[\"_bitshift64Ashr\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _dtextract=Module[\"_dtextract\"]=asm[\"_dtextract\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _htons=Module[\"_htons\"]=asm[\"_htons\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _llvm_bswap_i16=Module[\"_llvm_bswap_i16\"]=asm[\"_llvm_bswap_i16\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _memalign=Module[\"_memalign\"]=asm[\"_memalign\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memmove=Module[\"_memmove\"]=asm[\"_memmove\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _realloc=Module[\"_realloc\"]=asm[\"_realloc\"];var _saveSetjmp=Module[\"_saveSetjmp\"]=asm[\"_saveSetjmp\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _testSetjmp=Module[\"_testSetjmp\"]=asm[\"_testSetjmp\"];var _vizCreateFile=Module[\"_vizCreateFile\"]=asm[\"_vizCreateFile\"];var _vizLastErrorMessage=Module[\"_vizLastErrorMessage\"]=asm[\"_vizLastErrorMessage\"];var _vizRenderFromString=Module[\"_vizRenderFromString\"]=asm[\"_vizRenderFromString\"];var _vizSetNop=Module[\"_vizSetNop\"]=asm[\"_vizSetNop\"];var _vizSetY_invert=Module[\"_vizSetY_invert\"]=asm[\"_vizSetY_invert\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var dynCall_d=Module[\"dynCall_d\"]=asm[\"dynCall_d\"];var dynCall_dddd=Module[\"dynCall_dddd\"]=asm[\"dynCall_dddd\"];var dynCall_di=Module[\"dynCall_di\"]=asm[\"dynCall_di\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiidd=Module[\"dynCall_iiidd\"]=asm[\"dynCall_iiidd\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=asm[\"dynCall_iiiiiiiiiii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_viiiddi=Module[\"dynCall_viiiddi\"]=asm[\"dynCall_viiiddi\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=asm[\"dynCall_viiiiiiiii\"];Module[\"asm\"]=asm;Module[\"ccall\"]=ccall;Module[\"Pointer_stringify\"]=Pointer_stringify;Module[\"UTF8ToString\"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module[\"locateFile\"]===\"function\"){memoryInitializer=Module[\"locateFile\"](memoryInitializer)}else if(Module[\"memoryInitializerPrefixURL\"]){memoryInitializer=Module[\"memoryInitializerPrefixURL\"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module[\"readBinary\"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")});function doBrowserLoad(){Module[\"readAsync\"](memoryInitializer,applyMemoryInitializer,(function(){throw\"could not load memory initializer \"+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){function useRequest(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=exit;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run()\n  \n  \n  \n  \n    return Module;\n  };\n  \n  function render(instance, src, options) {\n    var i;\n    for (i = 0; i < options.files.length; i++) {\n      instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]);\n    }\n  \n    instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);\n    instance['ccall']('vizSetNop', 'number', ['number'], [options.nop ? options.nop : 0]);\n    \n    var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);\n    var resultString = instance['Pointer_stringify'](resultPointer);\n    instance['ccall']('free', 'number', ['number'], [resultPointer]);\n  \n    var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []);\n    var errorMessageString = instance['Pointer_stringify'](errorMessagePointer);\n    instance['ccall']('free', 'number', ['number'], [errorMessagePointer]);\n  \n    if (errorMessageString != '') {\n      throw new Error(errorMessageString);\n    }\n    \n    return resultString;\n  }\n  \n  if (typeof importScripts === \"function\") {\n    var instance = Module();\n    \n    onmessage = function(event) {\n      var id = event.data.id;\n      var src = event.data.src;\n      var options = event.data.options;\n    \n      try {\n        var result = render(instance, src, options);\n        postMessage({ id: id, result: result });\n      } catch (e) {\n        var error;\n        if (e instanceof Error) {\n          error = { message: e.message, fileName: e.fileName, lineNumber: e.lineNumber };\n        } else {\n          error = { message: e.toString() };\n        }\n        postMessage({ id: id, error: error });\n      }\n    }\n  }\n  \n  if (typeof exports === 'object' && typeof module !== 'undefined') {\n    module.exports = { render: render, Module: Module };\n  } else if (typeof define === 'function' && define.amd) {\n    define(function() { return { render: render, Module: Module }; });\n  }\n  \n  if (typeof global.Viz !== 'undefined') {\n    global.Viz.render = render;\n    global.Viz.Module = Module;\n  }\n  \n  })(typeof self !== 'undefined' ? self : this);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/graphviz/viz.js",
    "content": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\nCopyright (c) 2014-2018 Michael Daines\nLicensed under MIT license\n\nThis distribution contains other software in object code form:\n\nGraphviz\nLicensed under Eclipse Public License - v 1.0\nhttp://www.graphviz.org\n\nExpat\nCopyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper\nCopyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.\nLicensed under MIT license\nhttp://www.libexpat.org\n\nzlib\nCopyright (C) 1995-2013 Jean-loup Gailly and Mark Adler\nhttp://www.zlib.net/zlib_license.html\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.Viz = factory());\n}(this, (function () { 'use strict';\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  var classCallCheck = function (instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n\n  var createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n  var _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  var WorkerWrapper = function () {\n    function WorkerWrapper(worker) {\n      var _this = this;\n\n      classCallCheck(this, WorkerWrapper);\n\n      this.worker = worker;\n      this.listeners = [];\n      this.nextId = 0;\n\n      this.worker.addEventListener('message', function (event) {\n        var id = event.data.id;\n        var error = event.data.error;\n        var result = event.data.result;\n\n        _this.listeners[id](error, result);\n        delete _this.listeners[id];\n      });\n    }\n\n    createClass(WorkerWrapper, [{\n      key: 'render',\n      value: function render(src, options) {\n        var _this2 = this;\n\n        return new Promise(function (resolve, reject) {\n          var id = _this2.nextId++;\n\n          _this2.listeners[id] = function (error, result) {\n            if (error) {\n              reject(new Error(error.message, error.fileName, error.lineNumber));\n              return;\n            }\n            resolve(result);\n          };\n\n          _this2.worker.postMessage({ id: id, src: src, options: options });\n        });\n      }\n    }]);\n    return WorkerWrapper;\n  }();\n\n  var ModuleWrapper = function ModuleWrapper(module, render) {\n    classCallCheck(this, ModuleWrapper);\n\n    var instance = module();\n    this.render = function (src, options) {\n      return new Promise(function (resolve, reject) {\n        try {\n          resolve(render(instance, src, options));\n        } catch (error) {\n          reject(error);\n        }\n      });\n    };\n  };\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n\n\n  function b64EncodeUnicode(str) {\n    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n      return String.fromCharCode('0x' + p1);\n    }));\n  }\n\n  function defaultScale() {\n    if ('devicePixelRatio' in window && window.devicePixelRatio > 1) {\n      return window.devicePixelRatio;\n    } else {\n      return 1;\n    }\n  }\n\n  function svgXmlToImageElement(svgXml) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref$scale = _ref.scale,\n        scale = _ref$scale === undefined ? defaultScale() : _ref$scale,\n        _ref$mimeType = _ref.mimeType,\n        mimeType = _ref$mimeType === undefined ? \"image/png\" : _ref$mimeType,\n        _ref$quality = _ref.quality,\n        quality = _ref$quality === undefined ? 1 : _ref$quality;\n\n    return new Promise(function (resolve, reject) {\n      var svgImage = new Image();\n\n      svgImage.onload = function () {\n        var canvas = document.createElement('canvas');\n        canvas.width = svgImage.width * scale;\n        canvas.height = svgImage.height * scale;\n\n        var context = canvas.getContext(\"2d\");\n        context.drawImage(svgImage, 0, 0, canvas.width, canvas.height);\n\n        canvas.toBlob(function (blob) {\n          var image = new Image();\n          image.src = URL.createObjectURL(blob);\n          image.width = svgImage.width;\n          image.height = svgImage.height;\n\n          resolve(image);\n        }, mimeType, quality);\n      };\n\n      svgImage.onerror = function (e) {\n        var error;\n\n        if ('error' in e) {\n          error = e.error;\n        } else {\n          error = new Error('Error loading SVG');\n        }\n\n        reject(error);\n      };\n\n      svgImage.src = 'data:image/svg+xml;base64,' + b64EncodeUnicode(svgXml);\n    });\n  }\n\n  function svgXmlToImageElementFabric(svgXml) {\n    var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref2$scale = _ref2.scale,\n        scale = _ref2$scale === undefined ? defaultScale() : _ref2$scale,\n        _ref2$mimeType = _ref2.mimeType,\n        mimeType = _ref2$mimeType === undefined ? 'image/png' : _ref2$mimeType,\n        _ref2$quality = _ref2.quality,\n        quality = _ref2$quality === undefined ? 1 : _ref2$quality;\n\n    var multiplier = scale;\n\n    var format = void 0;\n    if (mimeType == 'image/jpeg') {\n      format = 'jpeg';\n    } else if (mimeType == 'image/png') {\n      format = 'png';\n    }\n\n    return new Promise(function (resolve, reject) {\n      fabric.loadSVGFromString(svgXml, function (objects, options) {\n        // If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one <g> element back even given an empty graph, so we will assume an error in this case.\n        if (objects.length == 0) {\n          reject(new Error('Error loading SVG with Fabric'));\n        }\n\n        var element = document.createElement(\"canvas\");\n        element.width = options.width;\n        element.height = options.height;\n\n        var canvas = new fabric.Canvas(element, { enableRetinaScaling: false });\n        var obj = fabric.util.groupSVGElements(objects, options);\n        canvas.add(obj).renderAll();\n\n        var image = new Image();\n        image.src = canvas.toDataURL({ format: format, multiplier: multiplier, quality: quality });\n        image.width = options.width;\n        image.height = options.height;\n\n        resolve(image);\n      });\n    });\n  }\n\n  var Viz = function () {\n    function Viz() {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          workerURL = _ref3.workerURL,\n          worker = _ref3.worker,\n          Module = _ref3.Module,\n          render = _ref3.render;\n\n      classCallCheck(this, Viz);\n\n      if (typeof workerURL !== 'undefined') {\n        this.wrapper = new WorkerWrapper(new Worker(workerURL));\n      } else if (typeof worker !== 'undefined') {\n        this.wrapper = new WorkerWrapper(worker);\n      } else if (typeof Module !== 'undefined' && typeof render !== 'undefined') {\n        this.wrapper = new ModuleWrapper(Module, render);\n      } else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') {\n        this.wrapper = new ModuleWrapper(Viz.Module, Viz.render);\n      } else {\n        throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.');\n      }\n    }\n\n    createClass(Viz, [{\n      key: 'renderString',\n      value: function renderString(src) {\n        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            _ref4$format = _ref4.format,\n            format = _ref4$format === undefined ? 'svg' : _ref4$format,\n            _ref4$engine = _ref4.engine,\n            engine = _ref4$engine === undefined ? 'dot' : _ref4$engine,\n            _ref4$files = _ref4.files,\n            files = _ref4$files === undefined ? [] : _ref4$files,\n            _ref4$images = _ref4.images,\n            images = _ref4$images === undefined ? [] : _ref4$images,\n            _ref4$yInvert = _ref4.yInvert,\n            yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert,\n            _ref4$nop = _ref4.nop,\n            nop = _ref4$nop === undefined ? 0 : _ref4$nop;\n\n        for (var i = 0; i < images.length; i++) {\n          files.push({\n            path: images[i].path,\n            data: '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n<svg width=\"' + images[i].width + '\" height=\"' + images[i].height + '\"></svg>'\n          });\n        }\n\n        return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert, nop: nop });\n      }\n    }, {\n      key: 'renderSVGElement',\n      value: function renderSVGElement(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n          var parser = new DOMParser();\n          return parser.parseFromString(str, 'image/svg+xml').documentElement;\n        });\n      }\n    }, {\n      key: 'renderImageElement',\n      value: function renderImageElement(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var scale = options.scale,\n            mimeType = options.mimeType,\n            quality = options.quality;\n\n\n        return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n          if ((typeof fabric === 'undefined' ? 'undefined' : _typeof(fabric)) === \"object\" && fabric.loadSVGFromString) {\n            return svgXmlToImageElementFabric(str, { scale: scale, mimeType: mimeType, quality: quality });\n          } else {\n            return svgXmlToImageElement(str, { scale: scale, mimeType: mimeType, quality: quality });\n          }\n        });\n      }\n    }, {\n      key: 'renderJSONObject',\n      value: function renderJSONObject(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var format = options.format;\n\n\n        if (format !== 'json' || format !== 'json0') {\n          format = 'json';\n        }\n\n        return this.renderString(src, _extends({}, options, { format: format })).then(function (str) {\n          return JSON.parse(str);\n        });\n      }\n    }]);\n    return Viz;\n  }();\n\n  return Viz;\n\n})));\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/highlight.js/LICENSE",
    "content": "BSD 3-Clause License\n\nCopyright (c) 2006, Ivan Sagalaev.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/highlight.js/third-languages.js",
    "content": "// https://cdn.jsdelivr.net/npm/highlightjs-solidity@2.0.5/dist/yul.min.js\nhljs.registerLanguage(\"yul\",(()=>{\"use strict\";function e(){try{return!0\n}catch(e){return!1}}\n  var a=/-?(\\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\\b[1-9](_?\\d)*(\\.((\\d_?)*\\d)?)?|\\.\\d(_?\\d)*)([eE][-+]?\\d(_?\\d)*)?|\\b0)(?!\\w|\\$)/\n  ;e()&&(a=a.source.replace(/\\\\b/g,\"(?<!\\\\$)\\\\b\"));var s={className:\"number\",\n    begin:a,relevance:0},t={\n    keyword:\"assembly let function if switch case default for leave break continue u256 jump jumpi stop return revert selfdestruct invalid\",\n    built_in:\"add sub mul div sdiv mod smod exp not lt gt slt sgt eq iszero and or xor byte shl shr sar addmod mulmod signextend keccak256 pc pop dup1 dup2 dup3 dup4 dup5 dup6 dup7 dup8 dup9 dup10 dup11 dup12 dup13 dup14 dup15 dup16 swap1 swap2 swap3 swap4 swap5 swap6 swap7 swap8 swap9 swap10 swap11 swap12 swap13 swap14 swap15 swap16 mload mstore mstore8 sload sstore msize gas address balance selfbalance caller callvalue calldataload calldatasize calldatacopy codesize codecopy extcodesize extcodecopy returndatasize returndatacopy extcodehash create create2 call callcode delegatecall staticcall log0 log1 log2 log3 log4 chainid origin gasprice basefee blockhash coinbase timestamp number difficulty gaslimit\",\n    literal:\"true false\"},i={className:\"string\",\n    begin:/\\bhex'(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?'/},l={className:\"string\",\n    begin:/\\bhex\"(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?\"/};function d(e){\n    return e.inherit(e.APOS_STRING_MODE,{begin:/(\\bunicode)?'/})}function r(e){\n    return e.inherit(e.QUOTE_STRING_MODE,{begin:/(\\bunicode)?\"/})}var n={\n    SOL_ASSEMBLY_KEYWORDS:t,baseAssembly:e=>{\n      var a=d(e),n=r(e),o=/[A-Za-z_$][A-Za-z_$0-9.]*/,c=e.inherit(e.TITLE_MODE,{\n        begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:o,keywords:t}),u={className:\"params\",\n        begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,lexemes:o,keywords:t,\n        contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,n,s]},b={\n        className:\"operator\",begin:/:=|->/};return{keywords:t,lexemes:o,\n        contains:[a,n,i,l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,b,{\n          className:\"function\",lexemes:o,beginKeywords:\"function\",end:\"{\",excludeEnd:!0,\n          contains:[c,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b]}]}},\n    solAposStringMode:d,solQuoteStringMode:r,HEX_APOS_STRING_MODE:i,\n    HEX_QUOTE_STRING_MODE:l,SOL_NUMBER:s,isNegativeLookbehindAvailable:e}\n  ;const{SOL_ASSEMBLY_KEYWORDS:o,baseAssembly:c,isNegativeLookbehindAvailable:u}=n\n  ;return e=>{var a={keyword:o.keyword+\" object code data\",\n    built_in:o.built_in+\" datasize dataoffset datacopy setimmutable loadimmutable linkersymbol memoryguard\",\n    literal:o.literal},s=/\\bverbatim_[1-9]?[0-9]i_[1-9]?[0-9]o\\b(?!\\$)/\n  ;u()&&(s=s.source.replace(/\\\\b/,\"(?<!\\\\$)\\\\b\"));var t={className:\"built_in\",\n    begin:s},i=c(e);return e.inherit(i,{keywords:a,contains:i.contains.concat([t])})\n  }})());\n\n// https://cdn.jsdelivr.net/npm/highlightjs-solidity@2.0.5/dist/solidity.min.js\nhljs.registerLanguage(\"solidity\",(()=>{\"use strict\";function e(){try{return!0\n}catch(e){return!1}}\n  var a=/-?(\\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\\b[1-9](_?\\d)*(\\.((\\d_?)*\\d)?)?|\\.\\d(_?\\d)*)([eE][-+]?\\d(_?\\d)*)?|\\b0)(?!\\w|\\$)/\n  ;e()&&(a=a.source.replace(/\\\\b/g,\"(?<!\\\\$)\\\\b\"));var s={className:\"number\",\n    begin:a,relevance:0},n={\n    keyword:\"assembly let function if switch case default for leave break continue u256 jump jumpi stop return revert selfdestruct invalid\",\n    built_in:\"add sub mul div sdiv mod smod exp not lt gt slt sgt eq iszero and or xor byte shl shr sar addmod mulmod signextend keccak256 pc pop dup1 dup2 dup3 dup4 dup5 dup6 dup7 dup8 dup9 dup10 dup11 dup12 dup13 dup14 dup15 dup16 swap1 swap2 swap3 swap4 swap5 swap6 swap7 swap8 swap9 swap10 swap11 swap12 swap13 swap14 swap15 swap16 mload mstore mstore8 sload sstore msize gas address balance selfbalance caller callvalue calldataload calldatasize calldatacopy codesize codecopy extcodesize extcodecopy returndatasize returndatacopy extcodehash create create2 call callcode delegatecall staticcall log0 log1 log2 log3 log4 chainid origin gasprice basefee blockhash coinbase timestamp number difficulty gaslimit\",\n    literal:\"true false\"},i={className:\"string\",\n    begin:/\\bhex'(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?'/},t={className:\"string\",\n    begin:/\\bhex\"(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?\"/};function r(e){\n    return e.inherit(e.APOS_STRING_MODE,{begin:/(\\bunicode)?'/})}function l(e){\n    return e.inherit(e.QUOTE_STRING_MODE,{begin:/(\\bunicode)?\"/})}var o={\n    SOL_ASSEMBLY_KEYWORDS:n,baseAssembly:e=>{\n      var a=r(e),o=l(e),c=/[A-Za-z_$][A-Za-z_$0-9.]*/,d=e.inherit(e.TITLE_MODE,{\n        begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:c,keywords:n}),u={className:\"params\",\n        begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,lexemes:c,keywords:n,\n        contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,o,s]},_={\n        className:\"operator\",begin:/:=|->/};return{keywords:n,lexemes:c,\n        contains:[a,o,i,t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,_,{\n          className:\"function\",lexemes:c,beginKeywords:\"function\",end:\"{\",excludeEnd:!0,\n          contains:[d,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,_]}]}},\n    solAposStringMode:r,solQuoteStringMode:l,HEX_APOS_STRING_MODE:i,\n    HEX_QUOTE_STRING_MODE:t,SOL_NUMBER:s,isNegativeLookbehindAvailable:e}\n  ;const{baseAssembly:c,solAposStringMode:d,solQuoteStringMode:u,HEX_APOS_STRING_MODE:_,HEX_QUOTE_STRING_MODE:m,SOL_NUMBER:b,isNegativeLookbehindAvailable:g}=o\n  ;return e=>{for(var a=d(e),s=u(e),n=[],i=0;i<32;i++)n[i]=i+1\n  ;var t=n.map((e=>8*e)),r=[];for(i=0;i<=80;i++)r[i]=i\n  ;var l=n.map((e=>\"bytes\"+e)).join(\" \")+\" \",o=t.map((e=>\"uint\"+e)).join(\" \")+\" \",E=t.map((e=>\"int\"+e)).join(\" \")+\" \",M=[].concat.apply([],t.map((e=>r.map((a=>e+\"x\"+a))))),p={\n    keyword:\"var bool string int uint \"+E+o+\"byte bytes \"+l+\"fixed ufixed \"+M.map((e=>\"fixed\"+e)).join(\" \")+\" \"+M.map((e=>\"ufixed\"+e)).join(\" \")+\" enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using global pragma contract interface library is abstract type assembly\",\n    literal:\"true false wei gwei szabo finney ether seconds minutes hours days weeks years\",\n    built_in:\"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4\"\n  },O={className:\"operator\",begin:/[+\\-!~*\\/%<>&^|=]/\n  },C=/[A-Za-z_$][A-Za-z_$0-9]*/,N={className:\"params\",begin:/\\(/,end:/\\)/,\n    excludeBegin:!0,excludeEnd:!0,lexemes:C,keywords:p,\n    contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,b,\"self\"]},f={\n    begin:/\\.\\s*/,end:/[^A-Za-z0-9$_\\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{\n      built_in:\"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max\"\n    },relevance:2},y=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/,\n    lexemes:C,keywords:p}),w={className:\"built_in\",\n    begin:(g()?\"(?<!\\\\$)\\\\b\":\"\\\\b\")+\"(gas|value|salt)(?=:)\"};function x(e,a){return{\n    begin:(g()?\"(?<!\\\\$)\\\\b\":\"\\\\b\")+e+\"\\\\.\\\\s*\",end:/[^A-Za-z0-9$_\\.]/,\n    excludeBegin:!1,excludeEnd:!0,lexemes:C,keywords:{built_in:e+\" \"+a},\n    contains:[f],relevance:10}}var h=c(e),v=e.inherit(h,{\n    contains:h.contains.concat([{begin:/\\./,end:/[^A-Za-z0-9$.]/,excludeBegin:!0,\n      excludeEnd:!0,keywords:{built_in:\"slot offset length address selector\"},\n      relevance:2},{begin:/_/,end:/[^A-Za-z0-9$.]/,excludeBegin:!0,excludeEnd:!0,\n      keywords:{built_in:\"slot offset\"},relevance:2}])});return{aliases:[\"sol\"],\n    keywords:p,lexemes:C,\n    contains:[a,s,_,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,w,O,{\n      className:\"function\",lexemes:C,\n      beginKeywords:\"function modifier event constructor fallback receive error\",\n      end:/[{;]/,excludeEnd:!0,\n      contains:[y,N,w,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/%/\n    },x(\"msg\",\"gas value data sender sig\"),x(\"block\",\"blockhash coinbase difficulty gaslimit basefee number timestamp chainid\"),x(\"tx\",\"gasprice origin\"),x(\"abi\",\"decode encode encodePacked encodeWithSelector encodeWithSignature encodeCall\"),x(\"bytes\",\"concat\"),x(\"string\",\"concat\"),f,{\n      className:\"class\",lexemes:C,beginKeywords:\"contract interface library\",end:\"{\",\n      excludeEnd:!0,illegal:/[:\"\\[\\]]/,contains:[{beginKeywords:\"is\",lexemes:C\n      },y,N,w,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{lexemes:C,\n      beginKeywords:\"struct enum\",end:\"{\",excludeEnd:!0,illegal:/[:\"\\[\\]]/,\n      contains:[y,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{\n      beginKeywords:\"import\",end:\";\",lexemes:C,keywords:\"import from as\",\n      contains:[y,a,s,_,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,O]},{\n      beginKeywords:\"using\",end:\";\",lexemes:C,keywords:\"using for global\",\n      contains:[y,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,O]},{className:\"meta\",\n      beginKeywords:\"pragma\",end:\";\",lexemes:C,keywords:{\n        keyword:\"pragma solidity experimental abicoder\",\n        built_in:\"ABIEncoderV2 SMTChecker v1 v2\"},\n      contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(a,{\n        className:\"meta-string\"}),e.inherit(s,{className:\"meta-string\"})]},{\n      beginKeywords:\"assembly\",end:/\\b\\B/,\n      contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(a,{\n        className:\"meta-string\"}),e.inherit(s,{className:\"meta-string\"}),e.inherit(v,{\n        begin:\"{\",end:\"}\",endsParent:!0,contains:v.contains.concat([e.inherit(v,{\n          begin:\"{\",end:\"}\",contains:v.contains.concat([\"self\"])})])})]}],illegal:/#/}}\n})());\n\n// https://cdn.jsdelivr.net/npm/highlightjs-sap-abap@0.2.0/dist/abap.min.js\nhljs.registerLanguage(\"abap\",(()=>{\"use strict\";return E=>({case_insensitive:!0,\n  aliases:[\"sap-abap\",\"abap\"],keywords:{\n    keyword:\"ABBREVIATED ABS ABSTRACT ABSTRACTFINAL ACCEPT ACCEPTING ACCORDING ACOS ACTUAL ADD|0 ADD-CORRESPONDING ADDITIONS ADJACENT AFTER|0 ALIASES ALL|0 ALLOCATE ANALYZER AND|0 APPEND APPENDING AS|0 ASCENDING DESCENDING ASIN ASSIGN ASSIGNING ATAN ATTRIBUTE AUTHORITY-CHECK AVG|0 BACK|0 BACKGOUND BEFORE BETWEEN BINARY BIT BLANK|0 BLOCK BREAK-POINT BUFFER BY|0 BYPASSING BYTE|0 BYTECHARACTER CALL|0 CASTING CEIL|0 CENTERED CHANGE CHANGING CHARACTER CHECK CHECKBOX CLASS-DATA CLASS-EVENTS CLASS-METHODS CLEANUP CLEAR|0 CLASS ENDCLASS CLIENT CLOCK|0 CLOSE|0 COL_BACKGROUND COL_HEADING COL_NORMAL COL_TOTAL COLLECT|0 COLOR|0 COLUMN COMMENT COMMIT COMMON COMMUNICATION COMPARING COMPONENT COMPONENTS COMPUTE CONCATENATE CONDENSE CONSTANTS CONTEXT CONTEXTS CONTINUE|0 CONTROL CONTROLS CONVERSION CONVERT COS COSH COUNT|0 COUNTRY COUNTY CREATE CURRENCY CURRENT CURSOR CUSTOMER-FUNCTION DATA DATABASE DATASET DATE DEALLOCATE DECIMALS DEFAULT DEFERRED DEFINE DEFINING DEFINITION DELETE DELETING DEMAND DESCENDING DESCRIBE DESTINATION DIALOG DIRECTORY DISTANCE DISTINCT DIVIDE DIVIDE-CORRESPONDING DUPLICATE DUPLICATES DURING DYNAMIC EDIT EDITOR-CALL ELSE ELSEIF ENCODING ENDING ENDON ENTRIES ERRORS EVENT EVENTS EXCEPTION EXCEPTIONS EXCEPTION-TABLE EXCLUDE EXCLUDING EXIT EXIT-COMMAND EXPORT EXPORTING EXTENDED EXTENSION EXTRACT FETCH FIELD FIELD-GROUPS FIELDSNO FIELD-SYMBOLS FILTER FINAL FIND|0 FIRST FLOOR FOR|0 FORMAT FORWARDBACKWARD FOUND FRAC FRAME FREE|0 FRIENDS FROM FUNCTION-POOL GET|0 GIVING GROUP HANDLER HASHED HAVING HEADER HEADING HELP-ID HIDE|0 HIGHLOW HOLD|0 HOTSPOT ICON IGNORING IMMEDIATELY IMPLEMENTATION IMPORT IMPORTING IN INCLUDE|0 INCREMENT INDEX|0 INDEX-LINE INHERITING INIT INITIAL INITIALIZATION INNER INNERLEFT INSERT INSTANCES INTENSIFIED INTERFACES INTERVALS INTO INVERTED-DATE IS|0 ITAB JOIN KEEPING KEY|0 KEYS KIND LANGUAGE LAST|0 LEADING LEAVE LEFT LEFT-JUSTIFIED LEFTRIGHT LEFTRIGHTCIRCULAR LEGACY LENGTH LIKE LINE LINE-COUNT LINES LINE-SELECTION LINE-SIZE LIST LIST-PROCESSING LOAD LOAD-OF-PROGRAM LOCAL LOCALE LOG LOG10 LOWER MARGIN MARK MASK MATCH MAX MAXIMUM MEMORY|0 MESSAGE MESSAGE-ID MESSAGES METHODS MIN MOD MODE MODEIN MODIF MODIFIER MODIFY MOVE MOVE-CORRESPONDING MULTIPLY MULTIPLY-CORRESPONDING NEW|0 NEW-LINE NEW-PAGE NEXT|0 NODES NODETABLE NO-DISPLAY NO-GAP NO-GAPS NO-HEADINGWITH-HEADING NO-SCROLLING NO-SCROLLINGSCROLLING NOT|0 NO-TITLE WITH-TITLE NO-ZERO NP NS NUMBER OBJECT|0 OBLIGATORY OCCURENCE OCCURENCES OCCURS OF|0 OFF|0 OFFSET ON|0 ONLY|0 OPEN OPTION OPTIONAL OR|0 ORDER OTHERS|0 OUTER OUTPUT-LENGTH OVERLAY PACK PACKAGE PAGE PAGELAST PAGEOF PAGEPAGE PAGES PARAMETER PARAMETERS PARAMETER-TABLE PART PERFORM PERFORMING PFN PF-STATUS PLACES POS_HIGH POS_LOW POSITION POSITIONS PRIMARY PRINT PRINT-CONTROL PRIVATE PROCESS PROGRAM PROPERTY PROTECTED PUBLIC PUSHBUTTON PUT QUICKINFO RADIOBUTTON RAISE|0 RAISING RANGE RANGES READ RECEIVE RECEIVING REDEFINITION REF REFERENCE REFRESH REJECT RENAMING REPLACE REPLACEMENT REPORT RESERVE RESET RESOLUTION RESULTS RETURN|0 RETURNING RIGHT RIGHT-JUSTIFIED ROLLBACK ROWS RUN SCAN SCREEN SCREEN-GROUP1 SCREEN-GROUP2 SCREEN-GROUP3 SCREEN-GROUP4 SCREEN-GROUP5 SCREEN-INPUT SCREEN-INTENSIFIED SCROLL SCROLL-BOUNDARY SEARCH SECTION SELECT SELECTION SELECTIONS SELECTION-SCREEN SELECTION-SET SELECTION-TABLE SELECT-OPTIONS SEND|0 SEPARATED SET|0 SHARED SHIFT SIGN SIN SINGLE SINGLEDISTINCT SINH SIZE|0 SKIP SORT|0 SORTABLE SPECIFIED SPLIT SQL|0 SQRT STABLE STAMP STANDARD|0 START|0 STARTING STATICS STEP-LOOP STOP STRLEN STRUCTURE|0 SUBMIT SUBTRACT SUBTRACT-CORRESPONDING SUFFIX SUM SUPPLY SUPPRESS SYMBOLS SYSTEM-EXCEPTIONS TABLE|0 TABLENAME TABLES TABLEVIEW TAN TANH TASK TEXT THEN|0 TIME|0 TIMES TITLE TITLEBAR TO TOPIC TOP-OF-PAGE TRAILING TRANSACTION TRANSFER TRANSLATE TRUNC TYPE TYPELIKE TYPE-POOL TYPE-POOLS TYPES ULINE UNION UNIQUE UNIT UNTIL|0 UP|0 UPDATE|0 UPPER UPPERLOWER USER-COMMAND USING VALUE|0 VALUES VARY VARYING VERSION VIA WAIT WHEN WHERE WINDOW WITH|0 WORK|0 WRITE|0 XSTRLEN ZONECA CN CO CP CS EQ GE GT LE LT NA NESTART-OF-SELECTION START-OF-PAGE END-OF-PAGE END-OF-SELECTION AT ENDAT\",\n    literal:\"abap_true abap_false\",\n    built_in:\"DO FORM IF LOOP MODULE START-OF_FILE DEFINE WHILE BEGIN ENDDO ENDFORM|10 ENDIF ENDLOOP ENDMODULE END-OF_FILE END-OF-DEFINITION ENDWHILE END METHOD ENDMETHOD|10 CHAIN ENDCHAIN CASE ENDCASE FUNCTION ENDFUNCTION ELSEIF ELSE TRY ENDTRY|10 CATCH \"\n  },contains:[E.APOS_STRING_MODE,E.NUMBER_MODE,{className:\"comment\",begin:\"^[*]\",\n    relevance:0,end:\"\\n\"},{className:\"comment\",begin:'\\b*\"',relevance:0,end:\"\\n\"}]})\n})());\n\n// https://github.com/highlightjs/highlightjs-hlsl/blob/master/dist/hlsl.min.js\nhljs.registerLanguage(\"hlsl\",(()=>{\"use strict\";const e={className:\"number\",\n  begin:\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?([hHfFlL]?)|\\\\.\\\\d+)([eE][-+]?\\\\d+)?([hHfFlL]?))\",\n  relevance:0};return r=>{\n  let t=[\"\",\"1\",\"2\",\"3\",\"4\",\"1x1\",\"1x2\",\"1x3\",\"1x4\",\"2x1\",\"2x2\",\"2x3\",\"2x4\",\"3x1\",\"3x2\",\"3x3\",\"3x4\",\"4x1\",\"4x2\",\"4x3\",\"4x4\"],a=[]\n  ;for(let e of\"bool double float half int uint min16float min10float min16int min12int min16uint\".split(\" \"))for(let r of t)a.push(e+r)\n  ;let s=\"SV_Coverage SV_Depth SV_DispatchThreadID SV_DomainLocation SV_GroupID SV_GroupIndex SV_GroupThreadID SV_GSInstanceID SV_InnerCoverage SV_InsideTessFactor SV_InstanceID SV_IsFrontFace SV_OutputControlPointID SV_Position SV_PrimitiveID SV_RenderTargetArrayIndex SV_SampleIndex SV_StencilRef SV_TessFactor SV_VertexID SV_ViewportArrayIndex, SV_ShadingRate\",o=\"BINORMAL BLENDINDICES BLENDWEIGHT COLOR NORMAL POSITION PSIZE TANGENT TEXCOORD TESSFACTOR DEPTH SV_ClipDistance SV_CullDistance SV_DepthGreaterEqual SV_DepthLessEqual SV_Target SV_CLIPDISTANCE SV_CULLDISTANCE SV_DEPTHGREATEREQUAL SV_DEPTHLESSEQUAL SV_TARGET\",n=o.split(\" \")\n  ;for(let e of o.split(\" \"))for(let r of Array(16).keys())n.push(e+r.toString())\n  ;return{name:\"HLSL\",keywords:{\n      keyword:\"AppendStructuredBuffer asm asm_fragment BlendState break Buffer ByteAddressBuffer case cbuffer centroid class column_major compile compile_fragment CompileShader const continue ComputeShader ConsumeStructuredBuffer default DepthStencilState DepthStencilView discard do DomainShader dword else export extern false for fxgroup GeometryShader groupshared Hullshader if in inline inout InputPatch interface line lineadj linear LineStream matrix namespace nointerpolation noperspective NULL out OutputPatch packoffset pass pixelfragment PixelShader point PointStream precise RasterizerState RenderTargetView return register row_major RWBuffer RWByteAddressBuffer RWStructuredBuffer RWTexture1D RWTexture1DArray RWTexture2D RWTexture2DArray RWTexture3D sample sampler SamplerState SamplerComparisonState shared snorm stateblock stateblock_state static string struct switch StructuredBuffer tbuffer technique technique10 technique11 texture Texture1D Texture1DArray Texture2D Texture2DArray Texture2DMS Texture2DMSArray Texture3D TextureCube TextureCubeArray true typedef triangle triangleadj TriangleStream uint uniform unorm unsigned vector vertexfragment VertexShader void volatile while\",\n      type:a.join(\" \")+\" Buffer vector matrix sampler SamplerState PixelShader VertexShader texture Texture1D Texture1DArray Texture2D Texture2DArray Texture2DMS Texture2DMSArray Texture3D TextureCube TextureCubeArray struct typedef\",\n      built_in:\"POSITIONT FOG PSIZE VFACE VPOS \"+n.join(\" \")+\" \"+s+\" \"+s.toUpperCase()+\" abort abs acos all AllMemoryBarrier AllMemoryBarrierWithGroupSync any asdouble asfloat asin asint asuint atan atan2 ceil CheckAccessFullyMapped clamp clip cos cosh countbits cross D3DCOLORtoUBYTE4 ddx ddx_coarse ddx_fine ddy ddy_coarse ddy_fine degrees determinant DeviceMemoryBarrier DeviceMemoryBarrierWithGroupSync distance dot dst errorf EvaluateAttributeAtCentroid EvaluateAttributeAtSample EvaluateAttributeSnapped exp exp2 f16tof32 f32tof16 faceforward firstbithigh firstbitlow floor fma fmod frac frexp fwidth GetRenderTargetSampleCount GetRenderTargetSamplePosition GroupMemoryBarrier GroupMemoryBarrierWithGroupSync InterlockedAdd InterlockedAnd InterlockedCompareExchange InterlockedCompareStore InterlockedExchange InterlockedMax InterlockedMin InterlockedOr InterlockedXor isfinite isinf isnan ldexp length lerp lit log log10 log2 mad max min modf msad4 mul noise normalize pow printf Process2DQuadTessFactorsAvg Process2DQuadTessFactorsMax Process2DQuadTessFactorsMin ProcessIsolineTessFactors ProcessQuadTessFactorsAvg ProcessQuadTessFactorsMax ProcessQuadTessFactorsMin ProcessTriTessFactorsAvg ProcessTriTessFactorsMax ProcessTriTessFactorsMin radians rcp reflect refract reversebits round rsqrt saturate sign sin sincos sinh smoothstep sqrt step tan tanh tex1D tex1Dbias tex1Dgrad tex1Dlod tex1Dproj tex2D tex2Dbias tex2Dgrad tex2Dlod tex2Dproj tex3D tex3Dbias tex3Dgrad tex3Dlod tex3Dproj texCUBE texCUBEbias texCUBEgrad texCUBElod texCUBEproj transpose trunc\",\n      literal:\"true false\"},illegal:'\"',\n    contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,e,{className:\"meta\",\n      begin:\"#\",end:\"$\"}]}}})());\n\n// https://github.com/highlightjs/highlightjs-gdscript\nhljs.registerLanguage(\"gdscript\",function(){\"use strict\";var e=e||{};function r(e){return{aliases:[\"godot\",\"gdscript\"],keywords:{keyword:\"and in not or self void as assert breakpoint class class_name extends is func setget signal tool yield const enum export onready static var break continue if elif else for pass return match while remote sync master puppet remotesync mastersync puppetsync\",built_in:\"Color8 ColorN abs acos asin atan atan2 bytes2var cartesian2polar ceil char clamp convert cos cosh db2linear decimals dectime deg2rad dict2inst ease exp floor fmod fposmod funcref get_stack hash inst2dict instance_from_id inverse_lerp is_equal_approx is_inf is_instance_valid is_nan is_zero_approx len lerp lerp_angle linear2db load log max min move_toward nearest_po2 ord parse_json polar2cartesian posmod pow preload print_stack push_error push_warning rad2deg rand_range rand_seed randf randi randomize range_lerp round seed sign sin sinh smoothstep sqrt step_decimals stepify str str2var tan tanh to_json type_exists typeof validate_json var2bytes var2str weakref wrapf wrapi bool int float String NodePath Vector2 Rect2 Transform2D Vector3 Rect3 Plane Quat Basis Transform Color RID Object NodePath Dictionary Array PoolByteArray PoolIntArray PoolRealArray PoolStringArray PoolVector2Array PoolVector3Array PoolColorArray\",literal:\"true false null\"},contains:[e.NUMBER_MODE,e.HASH_COMMENT_MODE,{className:\"comment\",begin:/\"\"\"/,end:/\"\"\"/},e.QUOTE_STRING_MODE,{variants:[{className:\"function\",beginKeywords:\"func\"},{className:\"class\",beginKeywords:\"class\"}],end:/:/,contains:[e.UNDERSCORE_TITLE_MODE]}]}}return e.exports=function(e){e.registerLanguage(\"gdscript\",r)},e.exports.definer=r,e.exports.definer||e.exports}());\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/de_DE.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Zentriert',\n  'alignLeft': 'Linksbündig',\n  'alignRight': 'Rechtsbündig',\n  'alternateText': 'Alternativtext',\n  'bold': 'Fett',\n  'both': 'Editor & Vorschau',\n  'cancelUpload': 'Upload abbrechen',\n  'check': 'Aufgabenliste',\n  'close': 'Schließen',\n  'code': 'Codeblock',\n  'code-theme': 'Codeblock-Thema',\n  'column': 'Spalte',\n  'comment': 'Kommentar',\n  'confirm': 'Bestätigen',\n  'content-theme': 'Inhalts-Thema',\n  'copied': 'Kopiert',\n  'copy': 'Kopieren',\n  'delete-column': 'Spalte löschen',\n  'delete-row': 'Zeile löschen',\n  'devtools': 'Entwicklertools',\n  'down': 'Nach unten',\n  'downloadTip': 'Der Browser unterstützt die Download-Funktion nicht',\n  'edit': 'Bearbeiten',\n  'edit-mode': 'Bearbeitungsmodus umschalten',\n  'emoji': 'Emoji',\n  'export': 'Exportieren',\n  'fileTypeError': 'Dateityp-Fehler',\n  'footnoteRef': 'Fußnotenverweis',\n  'fullscreen': 'Vollbild umschalten',\n  'generate': 'Wird generiert',\n  'headings': 'Überschriften',\n  'heading1': 'Überschrift 1',\n  'heading2': 'Überschrift 2',\n  'heading3': 'Überschrift 3',\n  'heading4': 'Überschrift 4',\n  'heading5': 'Überschrift 5',\n  'heading6': 'Überschrift 6',\n  'help': 'Hilfe',\n  'imageURL': 'Bild-URL',\n  'indent': 'Einrücken',\n  'info': 'Info',\n  'inline-code': 'Inline-Code',\n  'insert-after': 'Zeile danach einfügen',\n  'insert-before': 'Zeile davor einfügen',\n  'insertColumnLeft': 'Spalte links einfügen',\n  'insertColumnRight': 'Spalte rechts einfügen',\n  'insertRowAbove': 'Zeile oberhalb einfügen',\n  'insertRowBelow': 'Zeile unterhalb einfügen',\n  'instantRendering': 'Sofort-Darstellung',\n  'italic': 'Kursiv',\n  'language': 'Sprache',\n  'line': 'Zeile',\n  'link': 'Link',\n  'linkRef': 'Link-Verweis',\n  'list': 'Liste',\n  'more': 'Mehr',\n  'nameEmpty': 'Name ist leer',\n  'ordered-list': 'Nummerierte Liste',\n  'outdent': 'Ausrücken',\n  'outline': 'Gliederung',\n  'over': 'über',\n  'performanceTip': 'Echtzeit-Vorschau benötigt ${x}ms, Sie können diese deaktivieren',\n  'preview': 'Vorschau',\n  'quote': 'Zitat',\n  'record': 'Aufnahme starten/beenden',\n  'record-tip': 'Das Gerät unterstützt keine Aufzeichnung',\n  'recording': 'Aufzeichnung läuft...',\n  'redo': 'Wiederholen',\n  'remove': 'Entfernen',\n  'row': 'Zeile',\n  'spin': 'Rotation',\n  'splitView': 'Geteilte Ansicht',\n  'strike': 'Durchgestrichen',\n  'table': 'Tabelle',\n  'textIsNotEmpty': 'Text (nicht leer)',\n  'title': 'Titel',\n  'tooltipText': 'Tooltip-Text',\n  'undo': 'Rückgängig',\n  'up': 'Nach oben',\n  'update': 'Aktualisieren',\n  'upload': 'Bild oder Datei hochladen',\n  'uploadError': 'Upload-Fehler',\n  'uploading': 'Upload läuft...',\n  'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/en_US.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Center',\n  'alignLeft': 'Left',\n  'alignRight': 'Right',\n  'alternateText': 'Alternate text',\n  'bold': 'Bold',\n  'both': 'editor & preview',\n  'cancelUpload': 'Cancel upload',\n  'check': 'Task List',\n  'close': 'Close',\n  'code': 'Code Block',\n  'code-theme': 'Code Block Theme Preview',\n  'column': 'Column',\n  'comment': 'Comment',\n  'confirm': 'Confirm',\n  'content-theme': 'Content Theme Preview',\n  'copied': 'Copied',\n  'copy': 'Copy',\n  'delete-column': 'Delete Column',\n  'delete-row': 'Delete Row',\n  'devtools': 'DevTools',\n  'down': 'Down',\n  'downloadTip': 'The browser does not support the download function',\n  'edit': 'Edit',\n  'edit-mode': 'Toggle Edit Mode',\n  'emoji': 'Emoji',\n  'export': 'Export',\n  'fileTypeError': 'file type is error',\n  'footnoteRef': 'Footnote Ref',\n  'fullscreen': 'Toggle Fullscreen',\n  'generate': 'Generating',\n  'headings': 'Headings',\n  'heading1': 'Heading 1',\n  'heading2': 'Heading 2',\n  'heading3': 'Heading 3',\n  'heading4': 'Heading 4',\n  'heading5': 'Heading 5',\n  'heading6': 'Heading 6',\n  'help': 'Help',\n  'imageURL': 'image URL',\n  'indent': 'Indent',\n  'info': 'Info',\n  'inline-code': 'Inline Code',\n  'insert-after': 'Insert line after',\n  'insert-before': 'Insert line before',\n  'insertColumnLeft': 'Insert 1 left',\n  'insertColumnRight': 'Insert 1 right',\n  'insertRowAbove': 'Insert 1 above',\n  'insertRowBelow': 'Insert 1 below',\n  'instantRendering': 'Instant Rendering',\n  'italic': 'Italic',\n  'language': 'Language',\n  'line': 'Line',\n  'link': 'Link',\n  'linkRef': 'Link Ref',\n  'list': 'List',\n  'more': 'More',\n  'nameEmpty': 'Name is empty',\n  'ordered-list': 'Order List',\n  'outdent': 'Outdent',\n  'outline': 'Outline',\n  'over': 'over',\n  'performanceTip': 'Real-time preview requires ${x}ms, you can close it',\n  'preview': 'Preview',\n  'quote': 'Quote',\n  'record': 'Start Record/End Record',\n  'record-tip': 'The device does not support recording',\n  'recording': 'recording...',\n  'redo': 'Redo',\n  'remove': 'Remove',\n  'row': 'Row',\n  'spin': 'Spin',\n  'splitView': 'Split View',\n  'strike': 'Strike',\n  'table': 'Table',\n  'textIsNotEmpty': 'text(no empty)',\n  'title': 'Title',\n  'tooltipText': 'Tooltip text',\n  'undo': 'Undo',\n  'up': 'Up',\n  'update': 'Update',\n  'upload': 'Upload image or file',\n  'uploadError': 'upload error',\n  'uploading': 'uploading...',\n  'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/fr_FR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Centré',\n  'alignLeft': 'Gauche',\n  'alignRight': 'Droite',\n  'alternateText': 'Texte de remplacement',\n  'bold': 'Gras',\n  'both': 'éditeur & prévisualisation',\n  'cancelUpload': 'Annuler le téléchargement',\n  'check': 'Liste de tâches',\n  'close': 'Fermer',\n  'code': 'Bloc de code',\n  'code-theme': 'Thème pour le bloc de code',\n  'column': 'Colonne',\n  'comment': 'Commentaire',\n  'confirm': 'Confirmez',\n  'content-theme': 'Thème pour le contenu',\n  'copied': 'Copié',\n  'copy': 'Copier',\n  'delete-column': 'Enlever ligne',\n  'delete-row': 'Enlever colonne',\n  'devtools': 'Outils de dev',\n  'down': 'Bas',\n  'downloadTip': 'Le navigateur ne permet pas le téléversement',\n  'edit': 'Editer',\n  'edit-mode': 'Changer le mode d\\'édition',\n  'emoji': 'Emoji',\n  'export': 'Export',\n  'fileTypeError': 'erreur de type de fichier',\n  'footnoteRef': 'Ref. notes de pied de page',\n  'fullscreen': 'Bascule en plein écran',\n  'generate': 'Création',\n  'headings': 'Titres',\n  'heading1': 'Titre 1',\n  'heading2': 'Titre 2',\n  'heading3': 'Titre 3',\n  'heading4': 'Titre 4',\n  'heading5': 'Titre 5',\n  'heading6': 'Titre 6',\n  'help': 'Aide',\n  'imageURL': 'URL de l\\'image',\n  'indent': 'Augmenter le retrait',\n  'info': 'Info',\n  'inline-code': 'Code en ligne',\n  'insert-after': 'Insérer une ligne après',\n  'insert-before': 'Insérer une ligne avant',\n  'insertColumnLeft': 'Insérer col. à gauche',\n  'insertColumnRight': 'Insérer col. à droite',\n  'insertRowAbove': 'Insérer 1 au dessus',\n  'insertRowBelow': 'Insérer 1 en dessous',\n  'instantRendering': 'Aperçu instantané',\n  'italic': 'Italique',\n  'language': 'Langage',\n  'line': 'Ligne',\n  'link': 'Lien',\n  'linkRef': 'Réf. Lien',\n  'list': 'Liste',\n  'more': 'Plus',\n  'nameEmpty': 'Nom est vide',\n  'ordered-list': 'Liste ordonnée',\n  'outdent': 'Réduire le retrait',\n  'outline': 'Table des matières',\n  'over': 'survol',\n  'performanceTip': 'La prévisualisation temps réel prend ${x}ms, vous pouvez fermer',\n  'preview': 'Prévisualisation',\n  'quote': 'Citation',\n  'record': 'Démarrer/Stopper l\\'enregistrement',\n  'record-tip': 'L\\'appareil ne supporte pas l\\'enregistrement',\n  'recording': 'Enregistrement en cours...',\n  'redo': 'Rétablir',\n  'remove': 'Enlever',\n  'row': 'Ligne',\n  'spin': 'Rotation',\n  'splitView': 'Vue scindée',\n  'strike': 'Barré',\n  'table': 'Table',\n  'textIsNotEmpty': 'texte(pas vide)',\n  'title': 'Titre',\n  'tooltipText': 'Texte au survol',\n  'undo': 'Annuler',\n  'up': 'Haut',\n  'update': 'Mettre à jour',\n  'upload': 'Téléverser image ou fichier',\n  'uploadError': 'erreur de téléversement',\n  'uploading': 'Téléversement en cours...',\n  'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/ja_JP.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '中央',\n  'alignLeft': '左側',\n  'alignRight': '右側',\n  'alternateText': 'イメージタグ',\n  'bold': '太く',\n  'both': 'エディター & プレビュー',\n  'cancelUpload': 'アップロードをキャンセル',\n  'check': 'チェックリスト',\n  'close': '閉じる',\n  'code': 'コードブロック挿入',\n  'code-theme': 'コードブロックテーマ',\n  'column': '行列',\n  'comment': 'コメント',\n  'confirm': '確認',\n  'content-theme': 'コンテンツテーマ',\n  'copied': 'コピー完了',\n  'copy': 'コピー',\n  'delete-column': '列 消去',\n  'delete-row': '行 消去',\n  'devtools': '開発ツール',\n  'down': '下げる',\n  'downloadTip': 'ブラウザがダウンロード機能をサポートしていません。',\n  'edit': '修正',\n  'edit-mode': '編集モード',\n  'emoji': '絵文字',\n  'export': 'エクスポート',\n  'fileTypeError': 'サポートしていません。',\n  'footnoteRef': '脚注参照',\n  'fullscreen': 'フルスクリーン',\n  'generate': '作成する',\n  'headings': '見出しの大きさ',\n  'heading1': '見出し1',\n  'heading2': '見出し2',\n  'heading3': '見出し3',\n  'heading4': '見出し4',\n  'heading5': '見出し5',\n  'heading6': '見出し6',\n  'help': 'ヘルプ',\n  'imageURL': 'イメージ URL',\n  'indent': '字下げ',\n  'info': '情報',\n  'inline-code': 'インラインコード',\n  'insert-after': 'ブロックの後ろに入力',\n  'insert-before': 'ブロックの前に入力',\n  'insertColumnLeft': '左側に列を挿入',\n  'insertColumnRight': '右側に列を挿入',\n  'insertRowAbove': '上に行を挿入',\n  'insertRowBelow': '下に行を挿入',\n  'instantRendering': 'インスタントレンダリング',\n  'italic': '斜体',\n  'language': '言語',\n  'line': '段落分割',\n  'link': 'リンク',\n  'linkRef': 'リンク参照',\n  'list': 'リスト',\n  'more': '詳しく見る',\n  'nameEmpty': '名前が入力されていません。',\n  'ordered-list': '順序のあるリスト',\n  'outdent': 'ぶら下げインデント',\n  'outline': '概要',\n  'over': 'オーバー',\n  'performanceTip': 'リアルタイムプレビューには、${x}msが必要でエディター/プレビューボタンをクリックして閉じる事が出来ます。',\n  'preview': 'プレビュー',\n  'quote': '引用段落',\n  'record': '録音開始/録音終了',\n  'record-tip': '録音がサポートされていません。',\n  'recording': '録音中...',\n  'redo': '戻る',\n  'remove': '消去',\n  'row': '列',\n  'spin': 'スピン',\n  'splitView': 'マークダウン',\n  'strike': '取り消し線',\n  'table': '表 挿入',\n  'textIsNotEmpty': 'テキスト(空白は不可)',\n  'title': '題名',\n  'tooltipText': 'ツールチップ',\n  'undo': '取り消す',\n  'up': '上げる',\n  'update': 'アップデート',\n  'upload': 'イメージをアップロードする',\n  'uploadError': 'アップロード失敗',\n  'uploading': 'アップロード中',\n  'wysiwyg': 'ウィジウィグ',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/ko_KR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '가운데',\n  'alignLeft': '왼쪽',\n  'alignRight': '오른쪽',\n  'alternateText': '이미지 태그',\n  'bold': '굵게',\n  'both': '에디터 & 미리보기',\n  'cancelUpload': '업로드 취소',\n  'check': '체크박스',\n  'close': '닫기',\n  'code': '코드블럭삽입',\n  'code-theme': '코드블럭테마',\n  'column': '행',\n  'comment': '코멘트',\n  'confirm': '확인',\n  'content-theme': '컨텐츠테마',\n  'copied': '복사완료',\n  'copy': '복사',\n  'delete-column': '열 삭제',\n  'delete-row': '행 삭제',\n  'devtools': '개발툴',\n  'down': '다운',\n  'downloadTip': '브라우저가 다운로드 기능을 지원하지 않습니다',\n  'edit': '수정',\n  'edit-mode': '편집모드',\n  'emoji': '이모지',\n  'export': '내보내기',\n  'fileTypeError': '지원하지않습니다.',\n  'footnoteRef': '각주참조',\n  'fullscreen': '전체화면',\n  'generate': '생성',\n  'headings': '제목크기',\n  'heading1': '첫 번째 수준 제목',\n  'heading2': '두 번째 수준 제목',\n  'heading3': '3 단계 제목',\n  'heading4': '제목 4',\n  'heading5': '5 단계 제목',\n  'heading6': '6 단계 제목',\n  'help': '도움말',\n  'imageURL': '이미지 URL',\n  'indent': '들여쓰기',\n  'info': '정보',\n  'inline-code': '인라인코드',\n  'insert-after': '블락 뒤로 입력',\n  'insert-before': '블락 앞으로 입력',\n  'insertColumnLeft': '왼쪽에 열 삽입',\n  'insertColumnRight': '오른쪽에 열 삽입',\n  'insertRowAbove': '위에 행 삽입',\n  'insertRowBelow': '아래에 행 삽입',\n  'instantRendering': '타이포라',\n  'italic': '기울임꼴',\n  'language': '언어',\n  'line': '문단나눔',\n  'link': '링크',\n  'linkRef': '링크 참조',\n  'list': '순서없는 목록',\n  'more': '더보기',\n  'nameEmpty': '이름이 비어있습니다.',\n  'ordered-list': '순서있는 목록',\n  'outdent': '내어쓰기',\n  'outline': '개요',\n  'over': '오버',\n  'performanceTip': '실시간 미리보기에는 ${x}ms가 필요하며 에디터/미리보기 버튼을 클릭하여 닫을 수 있습니다.',\n  'preview': '미리보기',\n  'quote': '인용단락',\n  'record': '녹음시작/녹음종료',\n  'record-tip': '녹음을 지원하지 않습니다.',\n  'recording': '녹음중...',\n  'redo': '되돌리기',\n  'remove': '삭제',\n  'row': '열',\n  'spin': '회전',\n  'splitView': '마크다운',\n  'strike': '취소선',\n  'table': '표삽입',\n  'textIsNotEmpty': '텍스트(no empty)',\n  'title': '표제',\n  'tooltipText': '툴팁',\n  'undo': '취소하기',\n  'up': '위로',\n  'update': '업데이트',\n  'upload': '이미지 업로드하기',\n  'uploadError': '업로드 실패',\n  'uploading': '업로드중...',\n  'wysiwyg': '위지위그',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/pt_BR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Centralizar',\n  'alignLeft': 'Alinhar à esquerda',\n  'alignRight': 'Alinhar à direita',\n  'alternateText': 'Texto alternativo',\n  'bold': 'Negrito',\n  'both': 'Editor e visualização',\n  'cancelUpload': 'Cancelar envio',\n  'check': 'Lista de tarefas',\n  'close': 'Fechar',\n  'code': 'Bloco de código',\n  'code-theme': 'Tema de bloco de código',\n  'column': 'Coluna',\n  'comment': 'Comentário',\n  'confirm': 'Confirmar',\n  'content-theme': 'Tema de conteúdo',\n  'copied': 'Copiado',\n  'copy': 'Copiar',\n  'delete-column': 'Excluir coluna',\n  'delete-row': 'Excluir linha',\n  'devtools': 'Ferramentas de desenvolvimento',\n  'down': 'Para baixo',\n  'downloadTip': 'O navegador não suporta a função de download',\n  'edit': 'Editar',\n  'edit-mode': 'Alternar modo de edição',\n  'emoji': 'Emoji',\n  'export': 'Exportar',\n  'fileTypeError': 'Tipo de arquivo incorreto',\n  'footnoteRef': 'Referência de rodapé',\n  'fullscreen': 'Alternar tela cheia',\n  'generate': 'Gerando',\n  'headings': 'Cabeçalhos',\n  'heading1': 'Cabeçalho 1',\n  'heading2': 'Cabeçalho 2',\n  'heading3': 'Cabeçalho 3',\n  'heading4': 'Cabeçalho 4',\n  'heading5': 'Cabeçalho 5',\n  'heading6': 'Cabeçalho 6',\n  'help': 'Ajuda',\n  'imageURL': 'URL da imagem',\n  'indent': 'Recuar',\n  'info': 'Informação',\n  'inline-code': 'Código em linha',\n  'insert-after': 'Inserir linha depois',\n  'insert-before': 'Inserir linha antes',\n  'insertColumnLeft': 'Inserir 1 à esquerda',\n  'insertColumnRight': 'Inserir 1 à direita',\n  'insertRowAbove': 'Inserir 1 acima',\n  'insertRowBelow': 'Inserir 1 abaixo',\n  'instantRendering': 'Renderização instantânea',\n  'italic': 'Itálico',\n  'language': 'Idioma',\n  'line': 'Linha',\n  'link': 'Link',\n  'linkRef': 'Referência de link',\n  'list': 'Lista',\n  'more': 'Mais',\n  'nameEmpty': 'Nome está vazio',\n  'ordered-list': 'Lista ordenada',\n  'outdent': 'Recuar para fora',\n  'outline': 'Esboço',\n  'over': 'sobre',\n  'performanceTip': 'A visualização em tempo real requer ${x}ms, você pode fechá-la',\n  'preview': 'Visualização',\n  'quote': 'Citação',\n  'record': 'Iniciar gravação/Encerrar gravação',\n  'record-tip': 'O dispositivo não suporta gravação',\n  'recording': 'gravando...',\n  'redo': 'Refazer',\n'remove': 'Remover',\n'row': 'Linha',\n'spin': 'Girar',\n'splitView': 'Visão dividida',\n'strike': 'Riscado',\n'table': 'Tabela',\n'textIsNotEmpty': 'Texto (não vazio)',\n'title': 'Título',\n'tooltipText': 'Texto da dica de ferramenta',\n'undo': 'Desfazer',\n'up': 'Para cima',\n'update': 'Atualizar',\n'upload': 'Enviar imagem ou arquivo',\n'uploadError': 'Erro no envio',\n'uploading': 'Enviando...',\n'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/ru_RU.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Выровнять по центру',\n  'alignLeft': 'Выровнять по левому краю',\n  'alignRight': 'Выровнять по правому краю',\n  'alternateText': 'Альтернативный текст',\n  'bold': 'Полужирный текст',\n  'both': 'Редактор с предпросмотром',\n  'cancelUpload': 'Отменить загрузку',\n  'check': 'Список задач',\n  'close': 'Закрыть',\n  'code': 'Блок кода',\n  'code-theme': 'Тема отображения блока кода',\n  'column': 'Количество столбцов',\n  'comment': 'Комментарий',\n  'confirm': 'Подтвердить',\n  'content-theme': 'Тема отображения контента',\n  'copied': 'Скопировано',\n  'copy': 'Копировать',\n  'delete-column': 'Удалить столбец',\n  'delete-row': 'Удалить строку',\n  'devtools': 'Граф документа',\n  'down': 'Переместить вниз',\n  'downloadTip': 'Браузер не поддерживает функции загрузки',\n  'edit': 'Редактирование',\n  'edit-mode': 'Переключить режим редактирования',\n  'emoji': 'Смайлы',\n  'export': 'Экспорт',\n  'fileTypeError': 'Ошибка типа файла',\n  'footnoteRef': 'Сноска',\n  'fullscreen': 'Переключиться на полный экран',\n  'generate': 'Генерация',\n  'headings': 'Заголовки',\n  'heading1': 'Заголовок 1 уровня',\n  'heading2': 'Заголовок 2 уровня',\n  'heading3': 'Заголовок 3 уровня',\n  'heading4': 'Заголовок 4 уровня',\n  'heading5': 'Заголовок 5 уровня',\n  'heading6': 'Заголовок 6 уровня',\n  'help': 'Помощь',\n  'imageURL': 'Ссылка на картинку',\n  'indent': 'Отступ',\n  'info': 'Информация о редакторе',\n  'inline-code': 'Встроенный код ',\n  'insert-after': 'Вставить линию после этой строки',\n  'insert-before': 'Вставить линию перед этой строкой',\n  'insertColumnLeft': 'Вставить столбец слева',\n  'insertColumnRight': 'Вставить столбец справа',\n  'insertRowAbove': 'Вставить строку сверху',\n  'insertRowBelow': 'Вставить строку снизу',\n  'instantRendering': 'Мгновенный рендеринг',\n  'italic': 'Курсив',\n  'language': 'Синтаксис',\n  'line': 'Линия',\n  'link': 'Ссылка',\n  'linkRef': 'Вставить ссылку',\n  'list': 'Список',\n  'more': 'Дополнительно',\n  'nameEmpty': 'Имя пустое',\n  'ordered-list': 'Упорядоченный список',\n  'outdent': 'Выступ',\n  'outline': 'Содержание',\n  'over': 'Над',\n  'performanceTip': 'Предварительный просмотр в реальном времени требует ${x}мс, вы можете закрыть его',\n  'preview': 'Предпросмотр',\n  'quote': 'Цитата',\n  'record': 'Начать запись/Завершить запись',\n  'record-tip': 'Устройство не поддерживает запись',\n  'recording': 'Запись...',\n  'redo': 'Вернуть',\n  'remove': 'Удалить',\n  'row': 'Количество строк',\n  'spin': 'Прокрутка',\n  'splitView': 'Разделенный просмотр',\n  'strike': 'Зачеркнутый текст',\n  'table': 'Таблица',\n  'textIsNotEmpty': 'Текст (непустой)',\n  'title': 'Заголовок',\n  'tooltipText': 'Текст всплывающей подсказки',\n  'undo': 'Отменить',\n  'up': 'Переместить вверх',\n  'update': 'Обновить',\n  'upload': 'Загрузить изображение или файл',\n  'uploadError': 'Ошибка загрузки',\n  'uploading': 'Загрузка...',\n  'wysiwyg': 'Редактор WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/sv_SE.js",
    "content": "﻿window.VditorI18n = {\r\n  'alignCenter': 'Centrera',\r\n  'alignLeft': 'Vänsterställ',\r\n  'alignRight': 'Högerställ',\r\n  'alternateText': 'Alternativ text',\r\n  'bold': 'Fet',\r\n  'both': 'editera & granska',\r\n  'cancelUpload': 'Avbryt uppladdning',\r\n  'check': 'Att göra lista',\r\n  'close': 'Stäng',\r\n  'code': 'Kodblock',\r\n  'code-theme': 'Granska tema för kodblock',\r\n  'column': 'Kolumn',\r\n  'comment': 'Kommentera',\r\n  'confirm': 'Bekräfta',\r\n  'content-theme': 'Granska tema för innehåll',\r\n  'copied': 'Kopierad',\r\n  'copy': 'Kopiera',\r\n  'delete-column': 'Radera Kolumn',\r\n  'delete-row': 'Radera Rad',\r\n  'devtools': 'Utveckingsverktyg',\r\n  'down': 'Ner',\r\n  'downloadTip': 'Webläsaren kan ej hantera funktionen nedladdning',\r\n  'edit': 'Redigera',\r\n  'edit-mode': 'Skfta Redigeringsläge',\r\n  'emoji': 'Emoji',\r\n  'export': 'Exportera',\r\n  'fileTypeError': 'Fel filtyp',\r\n  'footnoteRef': 'Fotnotreferens',\r\n  'fullscreen': 'Skifta fullskärmsläge',\r\n  'generate': 'Genererar',\r\n  'headings': 'Rubriker',\r\n  'heading1': 'Rubriknivå 1',\r\n  'heading2': 'Rubriknivå 2',\r\n  'heading3': 'Rubriknivå 3',\r\n  'heading4': 'Rubriknivå 4',\r\n  'heading5': 'Rubriknivå 5',\r\n  'heading6': 'Rubriknivå 6',\r\n  'help': 'Hjälp',\r\n  'imageURL': 'Bildlänk (URL)',\r\n  'indent': 'Dra in',\r\n  'info': 'Info',\r\n  'inline-code': 'Dra in kod',\r\n  'insert-after': 'Infoga rad efter',\r\n  'insert-before': 'Infoga rad innan',\r\n  'insertColumnLeft': 'Infoga kolumn till vänster',\r\n  'insertColumnRight': 'Infoga kolumn till höger',\r\n  'insertRowAbove': 'Infoga rad ovan',\r\n  'insertRowBelow': 'Infoga rad under',\r\n  'instantRendering': 'Omedelbar Rendering',\r\n  'italic': 'Kursiv',\r\n  'language': 'Språk',\r\n  'line': 'Linje',\r\n  'link': 'Länk',\r\n  'linkRef': 'Länk Ref',\r\n  'list': 'Lista',\r\n  'more': 'Mer',\r\n  'nameEmpty': 'Namn saknas',\r\n  'ordered-list': 'Ordnad Lista',\r\n  'outdent': 'Dra ut',\r\n  'outline': 'Disponera',\r\n  'over': 'över',\r\n  'performanceTip': 'Granskning i realtid kräver ${x}ms, du kan stänga det',\r\n  'preview': 'Granska',\r\n  'quote': 'Citera',\r\n  'record': 'Börja inspelning/Avsluta inspelning',\r\n  'record-tip': 'Enheten stödjer inte inspelning',\r\n  'recording': 'spelar in...',\r\n  'redo': 'Gör om',\r\n  'remove': 'Ta bort',\r\n  'row': 'Rad',\r\n  'spin': 'Snurra',\r\n  'splitView': 'Splittad Vy',\r\n  'strike': 'Genomstruket',\r\n  'table': 'Tabell',\r\n  'textIsNotEmpty': 'text(ej tom)',\r\n  'title': 'Titel',\r\n  'tooltipText': 'Tooltip text',\r\n  'undo': 'Ångra',\r\n  'up': 'Upp',\r\n  'update': 'Uppdatera',\r\n  'upload': 'Ladda upp bild eller fil',\r\n  'uploadError': 'uppladdningsfel',\r\n  'uploading': 'laddar upp...',\r\n  'wysiwyg': 'WYSIWYG',\r\n}\r\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/zh_CN.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '居中',\n  'alignLeft': '居左',\n  'alignRight': '居右',\n  'alternateText': '替代文本',\n  'bold': '粗体',\n  'both': '编辑 & 预览',\n  'cancelUpload': '取消上传',\n  'check': '任务列表',\n  'close': '关闭',\n  'code': '代码块',\n  'code-theme': '代码块主题预览',\n  'column': '列',\n  'comment': '评论',\n  'confirm': '确定',\n  'content-theme': '内容主题预览',\n  'copied': '已复制',\n  'copy': '复制',\n  'delete-column': '删除列',\n  'delete-row': '删除行',\n  'devtools': '开发者工具',\n  'down': '下',\n  'downloadTip': '该浏览器不支持下载功能',\n  'edit': '编辑',\n  'edit-mode': '切换编辑模式',\n  'emoji': '表情',\n  'export': '导出',\n  'fileTypeError': '文件类型不允许上传，请压缩后再试',\n  'footnoteRef': '脚注标识',\n  'fullscreen': '全屏切换',\n  'generate': '生成中',\n  'headings': '标题',\n  'heading1': '一级标题',\n  'heading2': '二级标题',\n  'heading3': '三级标题',\n  'heading4': '四级标题',\n  'heading5': '五级标题',\n  'heading6': '六级标题',\n  'help': '帮助',\n  'imageURL': '图片地址',\n  'indent': '列表缩进',\n  'info': '关于',\n  'inline-code': '行内代码',\n  'insert-after': '末尾插入行',\n  'insert-before': '起始插入行',\n  'insertColumnLeft': '在左边插入一列',\n  'insertColumnRight': '在右边插入一列',\n  'insertRowAbove': '在上方插入一行',\n  'insertRowBelow': '在下方插入一行',\n  'instantRendering': '即时渲染',\n  'italic': '斜体',\n  'language': '语言',\n  'line': '分隔线',\n  'link': '链接',\n  'linkRef': '引用标识',\n  'list': '无序列表',\n  'more': '更多',\n  'nameEmpty': '文件名不能为空',\n  'ordered-list': '有序列表',\n  'outdent': '列表反向缩进',\n  'outline': '大纲',\n  'over': '超过',\n  'performanceTip': '实时预览需 ${x}ms，可点击编辑 & 预览按钮进行关闭',\n  'preview': '预览',\n  'quote': '引用',\n  'record': '开始录音/结束录音',\n  'record-tip': '该设备不支持录音功能',\n  'recording': '录音中...',\n  'redo': '重做',\n  'remove': '删除',\n  'row': '行',\n  'spin': '旋转',\n  'splitView': '分屏预览',\n  'strike': '删除线',\n  'table': '表格',\n  'textIsNotEmpty': '文本（不能为空）',\n  'title': '标题',\n  'tooltipText': '提示文本',\n  'undo': '撤销',\n  'up': '上',\n  'update': '更新',\n  'upload': '上传图片或文件',\n  'uploadError': '上传错误',\n  'uploading': '上传中...',\n  'wysiwyg': '所见即所得',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/i18n/zh_TW.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '置中',\n  'alignLeft': '置左',\n  'alignRight': '置右',\n  'alternateText': '替代文字',\n  'bold': '粗體',\n  'both': '編輯 & 預覽',\n  'cancelUpload': '取消上傳',\n  'check': '任務列表',\n  'close': '關閉',\n  'code': '代碼塊',\n  'code-theme': '代碼塊主題預覽',\n  'column': '欄',\n  'comment': '評論',\n  'confirm': '確定',\n  'content-theme': '內容主題預覽',\n  'copied': '已複製',\n  'copy': '複製',\n  'delete-column': '刪除欄',\n  'delete-row': '刪除列',\n  'devtools': '開發者工具',\n  'down': '下',\n  'downloadTip': '該瀏覽器不支持下載功能',\n  'edit': '編輯',\n  'edit-mode': '切換編輯模式',\n  'emoji': '表情',\n  'export': '匯出',\n  'fileTypeError': '檔案類型不允許上傳',\n  'footnoteRef': '腳註參考',\n  'fullscreen': '全螢幕切換',\n  'generate': '生成中',\n  'headings': '標題',\n  'heading1': '一級標題',\n  'heading2': '二級標題',\n  'heading3': '三級標題',\n  'heading4': '四級標題',\n  'heading5': '五級標題',\n  'heading6': '六級標題',\n  'help': '幫助',\n  'imageURL': '圖片位址',\n  'indent': '列表縮排',\n  'info': '關於',\n  'inline-code': '行內代碼',\n  'insert-after': '末尾插入列',\n  'insert-before': '起始插入列',\n  'insertColumnLeft': '在左邊插入一欄',\n  'insertColumnRight': '在右邊插入一欄',\n  'insertRowAbove': '在上方插入一行',\n  'insertRowBelow': '在下方插入一行',\n  'instantRendering': '即時渲染',\n  'italic': '斜體',\n  'language': '語言',\n  'line': '分隔線',\n  'link': '連結',\n  'linkRef': '連結參考',\n  'list': '無序列表',\n  'more': '更多',\n  'nameEmpty': '文件名不能為空',\n  'ordered-list': '有序列表',\n  'outdent': '列表反向縮排',\n  'outline': '大綱',\n  'over': '超過',\n  'performanceTip': '即時預覽需 ${x}ms，可點擊編輯 & 預覽按鈕進行關閉',\n  'preview': '預覽',\n  'quote': '引用',\n  'record': '開始錄音/結束錄音',\n  'record-tip': '該設備不支持錄音功能',\n  'recording': '錄音中...',\n  'redo': '重做',\n  'remove': '刪除',\n  'row': '列',\n  'spin': '旋轉',\n  'splitView': '分割預覽',\n  'strike': '刪除線',\n  'table': '表格',\n  'textIsNotEmpty': '文字（不能為空）',\n  'title': '標題',\n  'tooltipText': '提示文字',\n  'undo': '撤銷',\n  'up': '上',\n  'update': '更新',\n  'upload': '上傳圖片或文件',\n  'uploadError': '上傳錯誤',\n  'uploading': '上傳中...',\n  'wysiwyg': '所見即所得',\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/icons/ant.js",
    "content": "document.body.insertAdjacentHTML('afterBegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <defs>\n    <symbol id=\"vditor-icon-comment\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.177 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428zM8.178 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428z\"></path>\n      <path d=\"M29.641 10.251c-1.637-2.234-3.964-3.878-6.663-4.622l-0.086-0.020v0.004c-0.611-0.679-1.3-1.303-2.071-1.861-5.846-4.25-14.053-2.953-18.32 2.893-3.439 4.75-3.293 11.139 0.214 15.678l0.029 4.735c0 0.114 0.018 0.229 0.054 0.336 0.15 0.467 0.581 0.799 1.089 0.799 0.123 0 0.241-0.019 0.351-0.055l-0.008 0.002 4.521-1.425c1.196 0.425 2.432 0.668 3.66 0.736l-0.018 0.014c3.182 2.318 7.353 3.014 11.178 1.75l4.539 1.478c0.114 0.036 0.232 0.057 0.354 0.057 0.632 0 1.143-0.511 1.143-1.143v-4.785c3.146-4.271 3.228-10.174 0.036-14.571zM9.249 24.179l-0.429-0.179-3.535 1.107-0.036-3.714-0.286-0.321c-3.021-3.686-3.221-8.996-0.393-12.892 3.443-4.721 10.042-5.764 14.749-2.357 4.721 3.432 5.767 10.021 2.357 14.713-2.861 3.925-7.982 5.375-12.428 3.643zM27.284 23.572l-0.286 0.357 0.036 3.714-3.5-1.178-0.429 0.179c-2 0.743-4.132 0.803-6.107 0.25l-0.007-0.004c2.782-0.871 5.098-2.559 6.731-4.781l0.026-0.036c2.728-3.761 3.171-8.485 1.586-12.514l0.021 0.014c0.821 0.589 1.575 1.325 2.214 2.214 2.593 3.557 2.446 8.399-0.286 11.785z\"></path>\n      <path d=\"M13.177 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-mp-wechat\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.927 17.719s-3.040-3.431-2.915-6.942c0.16-4.453 4.738-10.257 11.359-10.257 1.884 0 5.653 0 10.328 5.52 0.249 0.302-15.075-3.84-18.772 11.679z\"></path>\n      <path d=\"M17.477 9.301s3.946-1.298 7.271-0.178c4.222 1.422 8.693 6.826 6.809 13.182-0.533 1.804-1.609 5.413-8.231 8.32-0.356 0.16 10.613-13.351-5.849-21.323z\"></path>\n      <path d=\"M10.944 24.332c-1.938 2.035-3.751 1.742-3.751 1.742l0.578-3.191c-5.235-3.44-6.373-10.328-6.453-10.106-2.444 6.817-0.916 11.377 0.027 13.004 3.315 5.733 11.982 7.351 17.484 3.893 2.969-1.867 4.533-7.057 4.533-7.057-5.298 2.338-9.342 2.569-12.417 1.715z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.785 24.935c1.681 0 3.054-1.392 3.054-3.096 0-2.058-3.054-5.416-3.054-5.416s-3.054 3.358-3.054 5.416c0 1.704 1.373 3.096 3.054 3.096zM11.28 23.239c0.273 0.273 0.715 0.273 0.985 0l9.851-9.847c0.273-0.273 0.273-0.715 0-0.985l-9.847-9.847c-0.023-0.023-0.050-0.046-0.077-0.065l-3.008-3.008c-0.063-0.062-0.15-0.101-0.246-0.101s-0.183 0.039-0.246 0.101l-1.846 1.846c-0.062 0.063-0.101 0.15-0.101 0.246s0.039 0.183 0.101 0.246l2.585 2.585-7.993 7.997c-0.273 0.273-0.273 0.715 0 0.985l9.843 9.847zM11.777 5.984l6.881 6.881h-13.759l6.878-6.881zM31.078 27.693h-30.157c-0.169 0-0.308 0.138-0.308 0.308v3.077c0 0.169 0.138 0.308 0.308 0.308h30.157c0.169 0 0.308-0.138 0.308-0.308v-3.077c0-0.169-0.138-0.308-0.308-0.308z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-quote\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.452 15.517l-30.82-15.452c-0.125-0.063-0.269-0.077-0.405-0.044-0.313 0.077-0.508 0.394-0.431 0.711l3.176 12.976c0.048 0.195 0.192 0.354 0.383 0.416l5.442 1.868-5.438 1.868c-0.192 0.066-0.335 0.221-0.38 0.416l-3.183 12.995c-0.033 0.136-0.018 0.28 0.044 0.402 0.144 0.291 0.497 0.409 0.792 0.265l30.82-15.364c0.114-0.055 0.206-0.151 0.265-0.262 0.144-0.295 0.026-0.648-0.265-0.796zM3.429 27.58l1.853-7.575 10.876-3.732c0.085-0.029 0.155-0.096 0.184-0.184 0.052-0.155-0.029-0.321-0.184-0.376l-10.876-3.729-1.846-7.546 23.138 11.602-23.145 11.54z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-after\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.636 28.045h-31.272c-0.202 0-0.364 0.162-0.364 0.36v2.697c0 0.198 0.162 0.36 0.364 0.36h31.272c0.202 0 0.364-0.162 0.364-0.36v-2.697c0-0.198-0.162-0.36-0.364-0.36zM15.717 23.056c0.066 0.084 0.169 0.138 0.283 0.138s0.217-0.054 0.283-0.137l0.001-0.001 5.034-6.369c0.184-0.234 0.018-0.58-0.283-0.58h-3.33v-15.209c0-0.198-0.162-0.36-0.36-0.36h-2.697c-0.198 0-0.36 0.162-0.36 0.36v15.204h-3.321c-0.301 0-0.467 0.346-0.283 0.58l5.034 6.373z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-before\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.636 0.539h-31.272c-0.202 0-0.364 0.162-0.364 0.36v2.697c0 0.198 0.162 0.36 0.364 0.36h31.272c0.202 0 0.364-0.162 0.364-0.36v-2.697c0-0.198-0.162-0.36-0.364-0.36zM16.283 8.944c-0.066-0.084-0.169-0.138-0.283-0.138s-0.217 0.054-0.283 0.137l-0.001 0.001-5.034 6.369c-0.048 0.060-0.076 0.137-0.076 0.221 0 0.198 0.161 0.359 0.359 0.359 0 0 0.001 0 0.001 0h3.321v15.209c0 0.198 0.162 0.36 0.36 0.36h2.697c0.198 0 0.36-0.162 0.36-0.36v-15.204h3.33c0.301 0 0.467-0.346 0.283-0.58l-5.034-6.373z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-headings\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.889 14.222h14.222v-12.444c0-0.982 0.796-1.778 1.778-1.778s1.778 0.796 1.778 1.778v0 28.444c0 0.982-0.796 1.778-1.778 1.778s-1.778-0.796-1.778-1.778v0-12.444h-14.222v12.444c0 0.982-0.796 1.778-1.778 1.778s-1.778-0.796-1.778-1.778v0-28.444c0-0.982 0.796-1.778 1.778-1.778s1.778 0.796 1.778 1.778v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-line\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 14.56h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.862 16.604c0.27-0.583 0.144-1.297-0.358-1.749l-6.422-5.782c-0.617-0.555-1.567-0.506-2.122 0.111s-0.506 1.567 0.111 2.122l5.206 4.688-5.237 4.716c-0.617 0.555-0.667 1.506-0.111 2.122s1.506 0.667 2.122 0.111l6.422-5.782c0.177-0.159 0.307-0.351 0.39-0.557zM3.725 15.981l5.206-4.688c0.617-0.555 0.667-1.506 0.111-2.122s-1.506-0.667-2.122-0.111l-6.422 5.782c-0.502 0.452-0.629 1.166-0.358 1.749 0.083 0.207 0.213 0.398 0.39 0.557l6.422 5.782c0.617 0.555 1.567 0.506 2.122-0.111s0.506-1.567-0.111-2.122l-5.237-4.716zM20.305 4.173c0.78 0.284 1.182 1.146 0.898 1.926l-7.581 20.83c-0.284 0.78-1.146 1.182-1.926 0.898s-1.182-1.146-0.898-1.926l7.581-20.83c0.284-0.78 1.146-1.182 1.926-0.898z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-inline-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.862 16.604c0.27-0.583 0.144-1.297-0.358-1.749l-6.422-5.782c-0.617-0.555-1.567-0.506-2.122 0.111v0 0c-0.555 0.617-0.506 1.567 0.111 2.122l5.206 4.688-5.237 4.716c-0.617 0.555-0.667 1.506-0.111 2.122s1.506 0.667 2.122 0.111l6.422-5.782c0.177-0.159 0.307-0.351 0.39-0.557zM3.725 15.981l5.206-4.688c0.617-0.555 0.667-1.506 0.111-2.122v0 0c-0.555-0.617-1.506-0.667-2.122-0.111v0l-6.422 5.782c-0.502 0.452-0.629 1.166-0.358 1.749 0.083 0.207 0.213 0.398 0.39 0.557l6.422 5.782c0.617 0.555 1.567 0.506 2.122-0.111s0.506-1.567-0.111-2.122l-5.237-4.716z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-both\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.858 22.232l-0.007-0.007c-1.575-3.332-4.014-5.047-7.261-5.047s-5.686 1.718-7.265 5.047v0.004c-0.193 0.411-0.193 0.889 0 1.3 1.579 3.329 4.018 5.043 7.265 5.043s5.686-1.718 7.265-5.047c0.193-0.411 0.193-0.886 0.004-1.293zM24.59 26.286c-2.218 0-3.836-1.071-5.040-3.411 1.2-2.339 2.822-3.411 5.040-3.411s3.836 1.071 5.040 3.411c-1.2 2.339-2.822 3.411-5.040 3.411z\"></path>\n      <path d=\"M22.607 22.893c0 1.105 0.895 2 2 2s2-0.895 2-2v0c0-1.105-0.895-2-2-2s-2 0.895-2 2v0z\"></path>\n      <path d=\"M2.571 6h25.144v9.036h2.572v-10.465c0-0.632-0.511-1.143-1.143-1.143h-28.001c-0.632 0-1.143 0.511-1.143 1.143v18.572c0 0.632 0.511 1.143 1.143 1.143h12.572v-2.572h-11.143v-15.715z\"></path>\n      <path d=\"M23.604 9.789l-1.314-1.314c-0.111-0.111-0.293-0.111-0.404 0l-6.565 6.572-3.075-3.079c-0.111-0.111-0.293-0.111-0.404 0l-5.154 5.154c-0.111 0.111-0.111 0.293 0 0.404l1.314 1.314c0.111 0.111 0.293 0.111 0.404 0l3.636-3.636 3.075 3.079c0.111 0.111 0.293 0.111 0.404 0l8.082-8.090c0.114-0.111 0.114-0.293 0-0.404z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.249 0.637h-8.207c-0.693 0-1.309 0.474-1.473 1.166-0.497 2.102-2.38 3.61-4.569 3.61s-4.072-1.508-4.569-3.61c-0.161-0.673-0.758-1.166-1.47-1.166-0.001 0-0.002 0-0.003 0h-8.207c-0.967 0-1.751 0.784-1.751 1.751v0 10.030c0 0.967 0.784 1.751 1.751 1.751v0h2.985v15.443c0 0.967 0.784 1.751 1.751 1.751v0h19.025c0.967 0 1.751-0.784 1.751-1.751v0-15.443h2.985c0.967 0 1.751-0.784 1.751-1.751v0-10.030c0-0.967-0.784-1.751-1.751-1.751v0zM29.134 11.303h-4.736v17.194h-16.796v-17.194h-4.736v-7.801h6.101c1.122 2.834 3.881 4.776 7.033 4.776s5.91-1.942 7.033-4.776h6.102v7.801z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-resize\" viewBox=\"0 0 128 32\">\n      <path d=\"M1.28 0c-0.704 0-1.28 0.163-1.28 0.365 0 0.291 0 2.618 0 2.909 0 0.198 0.576 0.362 1.28 0.362 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.362 0-0.291 0-2.618 0-2.909 0-0.202-0.576-0.365-1.28-0.365-25.088 0-112.896 0-125.44 0zM1.28 28.365c-0.704 0-1.28 0.163-1.28 0.362 0 0.291 0 2.618 0 2.909 0 0.202 0.576 0.365 1.28 0.365 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.365 0-0.291 0-2.618 0-2.909 0-0.198-0.576-0.362-1.28-0.362-25.088 0-112.896 0-125.44 0zM1.28 14.182c-0.704 0-1.28 0.163-1.28 0.362 0 0.291 0 2.621 0 2.912 0 0.198 0.576 0.362 1.28 0.362 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.362 0-0.291 0-2.621 0-2.912 0-0.198-0.576-0.362-1.28-0.362-25.088 0-112.896 0-125.44 0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-export\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.399 26.042h-2.202c-0.172 0-0.315 0.143-0.315 0.315v2.529h-25.769v-25.773h25.773v2.529c0 0.172 0.143 0.315 0.315 0.315h2.202c0.172 0 0.315-0.139 0.315-0.315v-4.1c0-0.696-0.561-1.256-1.256-1.256h-28.92c-0.696 0-1.256 0.561-1.256 1.256v28.916c0 0.696 0.561 1.256 1.256 1.256h28.916c0.696 0 1.256-0.561 1.256-1.256v-4.1c0-0.176-0.143-0.315-0.315-0.315zM32.16 15.742l-5.807-4.583c-0.217-0.172-0.532-0.016-0.532 0.258v3.11h-12.85c-0.18 0-0.327 0.147-0.327 0.327v2.292c0 0.18 0.147 0.327 0.327 0.327h12.85v3.11c0 0.274 0.319 0.43 0.532 0.258l5.807-4.583c0.077-0.060 0.126-0.153 0.126-0.258s-0.049-0.197-0.125-0.257l-0.001-0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-copy\" viewBox=\"0 0 32 32\">\n      <path d=\"M27.429 0h-19.143c-0.157 0-0.286 0.129-0.286 0.286v2c0 0.157 0.129 0.286 0.286 0.286h17.714v24.571c0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286v-26c0-0.632-0.511-1.143-1.143-1.143zM22.857 4.571h-18.286c-0.632 0-1.143 0.511-1.143 1.143v18.954c0 0.304 0.121 0.593 0.336 0.807l6.189 6.189c0.079 0.079 0.168 0.143 0.264 0.196v0.068h0.15c0.125 0.046 0.257 0.071 0.393 0.071h12.096c0.632 0 1.143-0.511 1.143-1.143v-25.143c0-0.632-0.511-1.143-1.143-1.143zM10.214 28.293l-3.075-3.079h3.075v3.079zM21.429 29.429h-8.929v-5.071c0-0.789-0.639-1.429-1.429-1.429h-5.071v-15.786h15.429v22.286z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-pause\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.095 0h3.81v32h-3.81zM25.524 0h-3.048c-0.21 0-0.381 0.171-0.381 0.381v31.238c0 0.21 0.171 0.381 0.381 0.381h3.048c0.21 0 0.381-0.171 0.381-0.381v-31.238c0-0.21-0.171-0.381-0.381-0.381z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-preview\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.788 15.053c-3.479-7.329-8.738-11.017-15.788-11.017-7.054 0-12.309 3.688-15.788 11.021-0.134 0.277-0.212 0.602-0.212 0.945s0.078 0.668 0.218 0.958l-0.006-0.013c3.479 7.329 8.738 11.017 15.788 11.017 7.054 0 12.309-3.688 15.788-11.021 0.283-0.595 0.283-1.284 0-1.89zM16 25.322c-5.92 0-10.254-3.002-13.311-9.322 3.057-6.32 7.391-9.322 13.311-9.322s10.254 3.002 13.311 9.322c-3.053 6.32-7.388 9.322-13.311 9.322zM15.853 9.541c-3.567 0-6.459 2.892-6.459 6.459s2.892 6.459 6.459 6.459 6.459-2.892 6.459-6.459-2.892-6.459-6.459-6.459zM15.853 20.11c-2.272 0-4.11-1.839-4.11-4.11s1.839-4.11 4.11-4.11 4.11 1.839 4.11 4.11-1.839 4.11-4.11 4.11z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-edit\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 16h-2.24c-0.176 0-0.32 0.144-0.32 0.32v12.8h-26.239v-26.239h12.8c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-14.4c-0.708 0-1.28 0.572-1.28 1.28v29.439c0 0.708 0.572 1.28 1.28 1.28h29.439c0.708 0 1.28-0.572 1.28-1.28v-14.4c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n      <path d=\"M9.756 16.916l-0.076 4.756c-0.004 0.356 0.284 0.648 0.64 0.648h0.016l4.72-0.116c0.080-0.004 0.16-0.036 0.216-0.092l16.635-16.599c0.124-0.124 0.124-0.328 0-0.452l-4.972-4.968c-0.064-0.064-0.144-0.092-0.228-0.092s-0.164 0.032-0.228 0.092l-16.631 16.599c-0.056 0.058-0.091 0.137-0.092 0.224v0zM12.296 17.86l14.412-14.38 1.808 1.804-14.42 14.388-1.828 0.044 0.028-1.856z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-info\" viewBox=\"0 0 32 32\">\n      <path d=\"M13.124 3.056c0 1.589 1.288 2.876 2.876 2.876s2.876-1.288 2.876-2.876v0c0-1.589-1.288-2.876-2.876-2.876s-2.876 1.288-2.876 2.876v0zM17.438 10.607h-2.876c-0.198 0-0.36 0.162-0.36 0.36v20.854c0 0.198 0.162 0.36 0.36 0.36h2.876c0.198 0 0.36-0.162 0.36-0.36v-20.854c0-0.198-0.162-0.36-0.36-0.36z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-help\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.419 6.445c-0.579-1.265-1.402-2.402-2.452-3.374-2.133-1.98-4.965-3.072-7.967-3.072s-5.834 1.091-7.967 3.068c-1.050 0.976-1.873 2.109-2.452 3.378-0.604 1.323-0.91 2.725-0.91 4.172v1.116c0 0.256 0.207 0.463 0.463 0.463h2.233c0.256 0 0.463-0.207 0.463-0.463v-1.116c0-4.114 3.663-7.458 8.169-7.458s8.169 3.345 8.169 7.458c0 1.687-0.599 3.274-1.736 4.597-1.125 1.311-2.712 2.249-4.469 2.646-1.005 0.227-1.91 0.794-2.551 1.604-0.615 0.772-0.987 1.76-0.988 2.836v1.299c0 0.256 0.207 0.463 0.463 0.463h2.233c0.256 0 0.463-0.207 0.463-0.463v-1.298c0-0.649 0.451-1.22 1.075-1.36 2.414-0.546 4.606-1.848 6.173-3.667 0.79-0.922 1.406-1.947 1.832-3.059 0.442-1.153 0.666-2.365 0.666-3.597 0-1.447-0.306-2.853-0.91-4.172zM16 27.369c-1.278 0-2.315 1.038-2.315 2.315s1.038 2.315 2.315 2.315 2.315-1.038 2.315-2.315-1.038-2.315-2.315-2.315z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-strike\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.714 14.643h-13.646c-0.357-0.071-0.732-0.143-1.129-0.214-0.568-0.104-0.793-0.146-1.1-0.207-1.832-0.357-2.936-0.714-3.814-1.221-1.254-0.732-1.864-1.725-1.864-3.039 0-1.321 0.543-2.418 1.571-3.179 1.014-0.75 2.457-1.146 4.171-1.146 1.957 0 3.468 0.514 4.493 1.529 0.521 0.514 0.904 1.146 1.136 1.879 0.046 0.146 0.1 0.357 0.154 0.636 0.032 0.171 0.186 0.293 0.354 0.293h2.6c0.2 0 0.361-0.164 0.361-0.361v-0.036c-0.025-0.243-0.046-0.432-0.071-0.571-0.261-1.554-1-2.918-2.132-3.939-1.586-1.446-3.918-2.207-6.739-2.207-2.582 0-4.907 0.646-6.546 1.818-0.914 0.657-1.621 1.471-2.093 2.418-0.482 0.968-0.725 2.086-0.725 3.318 0 1.054 0.204 1.946 0.618 2.732 0.296 0.561 0.7 1.054 1.218 1.5h-8.243c-0.157 0-0.286 0.129-0.286 0.286v2.143c0 0.157 0.129 0.286 0.286 0.286h15.471c0.075 0.014 0.139 0.029 0.211 0.043 1.104 0.221 1.768 0.371 2.379 0.543 0.821 0.232 1.45 0.475 1.971 0.768 1.279 0.721 1.904 1.757 1.904 3.179 0 1.261-0.554 2.386-1.557 3.171-1.089 0.854-2.7 1.3-4.661 1.3-1.561 0-2.882-0.304-3.936-0.893-1.039-0.582-1.754-1.421-2.132-2.482-0.029-0.079-0.061-0.186-0.096-0.321-0.043-0.157-0.189-0.268-0.346-0.268h-2.846c-0.2 0-0.361 0.164-0.361 0.361v0.036c0.007 0.082 0.014 0.15 0.021 0.204 0.232 1.743 1.082 3.171 2.525 4.243 1.682 1.243 4.050 1.9 6.85 1.9 3.007 0 5.529-0.707 7.293-2.046 0.893-0.675 1.579-1.507 2.039-2.464 0.464-0.968 0.704-2.068 0.704-3.268 0-1.136-0.207-2.086-0.636-2.907-0.207-0.4-0.468-0.768-0.779-1.1h7.411c0.157 0 0.286-0.129 0.286-0.286v-2.143c-0.002-0.156-0.129-0.282-0.286-0.282 0 0 0 0-0 0v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-contract\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.9 2.040l-1.94-1.94c-0.062-0.062-0.148-0.1-0.243-0.1s-0.181 0.038-0.243 0.1l-6.774 6.778-2.352-2.353c-0.062-0.062-0.147-0.1-0.241-0.1-0.175 0-0.319 0.131-0.339 0.3l-0 0.002-1.011 8.133c-0.026 0.224 0.159 0.409 0.383 0.383l8.137-1.011c0.284-0.034 0.4-0.378 0.202-0.581l-2.352-2.352 6.778-6.778c0.129-0.129 0.129-0.348-0.004-0.482zM12.86 18.757l-8.137 1.011c-0.284 0.034-0.4 0.383-0.202 0.581l2.353 2.352-6.774 6.774c-0.062 0.062-0.1 0.148-0.1 0.243s0.038 0.181 0.1 0.243l1.94 1.94c0.133 0.133 0.353 0.133 0.486 0l6.778-6.778 2.352 2.352c0.062 0.062 0.147 0.1 0.241 0.1 0.175 0 0.319-0.131 0.339-0.3l0-0.002 1.006-8.133c0.002-0.014 0.003-0.030 0.003-0.046 0-0.188-0.152-0.34-0.34-0.34-0.016 0-0.032 0.001-0.048 0.003l0.002-0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-record\" viewBox=\"0 0 32 32\">\n      <path d=\"M27.786 13.929c0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 5.011-4.061 9.071-9.071 9.071s-9.071-4.061-9.071-9.071c0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 6.025 4.521 10.996 10.357 11.7v3.657h-5.189c-0.489 0-0.882 0.511-0.882 1.143v1.286c0 0.157 0.1 0.286 0.221 0.286h14.557c0.121 0 0.221-0.129 0.221-0.286v-1.286c0-0.632-0.393-1.143-0.882-1.143h-5.332v-3.639c5.904-0.643 10.5-5.643 10.5-11.718zM16 20c3.354 0 6.071-2.686 6.071-6v-8c0-3.314-2.718-6-6.071-6s-6.071 2.686-6.071 6v8c0 3.314 2.718 6 6.071 6zM12.643 6c0-1.807 1.496-3.286 3.357-3.286s3.357 1.479 3.357 3.286v8c0 1.807-1.496 3.286-3.357 3.286s-3.357-1.479-3.357-3.286v-8z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bold\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.078 14.67c1.461-1.522 2.357-3.578 2.357-5.839v-0.443c0-4.678-3.83-8.474-8.552-8.474h-12.865c-0.657 0-1.191 0.535-1.191 1.191v29.526c0 0.709 0.574 1.283 1.283 1.283h13.857c5.087 0 9.209-4.096 9.209-9.152v-0.478c0-3.174-1.626-5.97-4.096-7.613zM8 4.087h9.77c2.483 0 4.491 1.93 4.491 4.317v0.413c0 2.383-2.013 4.317-4.491 4.317h-9.77v-9.048zM23.939 22.757c0 2.735-2.248 4.952-5.022 4.952h-10.917v-10.374h10.917c2.774 0 5.022 2.217 5.022 4.952v0.47z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bug\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.571 7.714h2c0.157 0 0.286-0.129 0.286-0.286 0-1.011 0.211-1.9 0.611-2.625 0.379-0.693 0.929-1.243 1.621-1.621 0.729-0.396 1.614-0.611 2.625-0.611h0.571c1.011 0 1.9 0.211 2.625 0.611 0.693 0.379 1.243 0.929 1.621 1.621 0.396 0.729 0.611 1.614 0.611 2.625 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-1.429-0.314-2.739-0.925-3.861-0.614-1.125-1.518-2.029-2.643-2.643-1.121-0.611-2.432-0.925-3.861-0.925h-0.571c-1.429 0-2.739 0.314-3.861 0.925-1.125 0.614-2.029 1.518-2.643 2.643-0.611 1.121-0.925 2.432-0.925 3.861 0 0.157 0.129 0.286 0.286 0.286z\"></path>\n      <path d=\"M31.286 16h-5.286v-3.571c2.743 0 4.964-2.221 4.964-4.964 0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 1.243-1.007 2.25-2.25 2.25h-20c-1.243 0-2.25-1.007-2.25-2.25 0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 2.743 2.221 4.964 4.964 4.964v3.571h-5.286c-0.157 0-0.286 0.129-0.286 0.286v2c0 0.157 0.129 0.286 0.286 0.286h5.286v3.429c0 0.232 0.007 0.464 0.025 0.689-2.45 1.046-4.168 3.479-4.168 6.311 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-1.579 0.854-2.961 2.129-3.704 0.214 0.614 0.486 1.2 0.811 1.75 0.868 1.482 2.107 2.721 3.589 3.589s3.204 1.364 5.043 1.364 3.564-0.496 5.046-1.364c1.482-0.868 2.721-2.107 3.589-3.589 0.325-0.554 0.596-1.139 0.811-1.75 1.271 0.743 2.125 2.125 2.125 3.704 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-2.832-1.718-5.264-4.168-6.311 0.014-0.229 0.025-0.457 0.025-0.689v-3.429h5.286c0.157 0 0.286-0.129 0.286-0.286v-2c0-0.157-0.129-0.286-0.286-0.286zM23.286 22c0 1.314-0.346 2.571-0.993 3.675-0.632 1.082-1.536 1.986-2.618 2.618-1.104 0.646-2.361 0.993-3.675 0.993s-2.571-0.346-3.675-0.993c-1.082-0.632-1.986-1.536-2.618-2.618-0.646-1.104-0.993-2.361-0.993-3.675v-9.571h14.571v9.571z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-play\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.263 15.159l-17.308-14.927c-0.645-0.555-1.591-0.055-1.591 0.841v29.853c0 0.895 0.945 1.395 1.591 0.841l17.308-14.927c0.495-0.427 0.495-1.255 0-1.682z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-check\" viewBox=\"0 0 32 32\">\n      <path d=\"M12.844 21.828c0.234 0.323 0.61 0.531 1.034 0.531s0.8-0.208 1.031-0.527l0.003-0.004 8.424-11.68c0.152-0.212 0-0.508-0.26-0.508h-1.876c-0.408 0-0.796 0.196-1.036 0.532l-6.284 8.72-2.848-3.952c-0.24-0.332-0.624-0.532-1.036-0.532h-1.876c-0.26 0-0.412 0.296-0.26 0.508l4.984 6.912z\"></path>\n      <path d=\"M30.72 0h-29.44c-0.708 0-1.28 0.572-1.28 1.28v29.44c0 0.708 0.572 1.28 1.28 1.28h29.44c0.708 0 1.28-0.572 1.28-1.28v-29.44c0-0.708-0.572-1.28-1.28-1.28zM29.12 29.12h-26.24v-26.24h26.24v26.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-upload\" viewBox=\"0 0 32 32\">\n      <path d=\"M16.225 14.107c-0.053-0.067-0.134-0.11-0.225-0.11s-0.172 0.043-0.225 0.109l-0 0.001-4 5.061c-0.038 0.048-0.061 0.109-0.061 0.176 0 0.157 0.128 0.285 0.285 0.285 0 0 0 0 0.001 0h2.639v8.657c0 0.157 0.129 0.286 0.286 0.286h2.143c0.157 0 0.286-0.129 0.286-0.286v-8.654h2.646c0.239 0 0.371-0.275 0.225-0.461l-4-5.064z\"></path>\n      <path d=\"M26.693 10.811c-1.636-4.314-5.804-7.382-10.686-7.382s-9.050 3.064-10.686 7.379c-3.061 0.804-5.321 3.593-5.321 6.907 0 3.946 3.196 7.143 7.139 7.143h1.432c0.157 0 0.286-0.129 0.286-0.286v-2.143c0-0.157-0.129-0.286-0.286-0.286h-1.432c-1.204 0-2.336-0.479-3.179-1.346-0.839-0.864-1.286-2.029-1.246-3.236 0.032-0.943 0.354-1.829 0.936-2.575 0.596-0.761 1.432-1.314 2.361-1.561l1.354-0.354 0.496-1.307c0.307-0.814 0.736-1.575 1.275-2.264 0.537-0.685 1.154-1.273 1.844-1.764l0.027-0.018c1.468-1.032 3.196-1.579 5-1.579s3.532 0.546 5 1.579c0.711 0.5 1.339 1.1 1.871 1.782 0.539 0.689 0.968 1.454 1.275 2.264l0.493 1.304 1.35 0.357c1.936 0.521 3.289 2.282 3.289 4.289 0 1.182-0.461 2.296-1.296 3.132-0.796 0.801-1.899 1.296-3.117 1.296-0.004 0-0.008 0-0.012 0h-1.431c-0.157 0-0.286 0.129-0.286 0.286v2.143c0 0.157 0.129 0.286 0.286 0.286h1.432c3.943 0 7.139-3.196 7.139-7.143 0-3.311-2.254-6.096-5.307-6.904z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-trashcan\" viewBox=\"0 0 32 32\">\n      <path d=\"M9.92 2.88h-0.32c0.176 0 0.32-0.144 0.32-0.32v0.32h12.16v-0.32c0 0.176 0.144 0.32 0.32 0.32h-0.32v2.88h2.88v-3.2c0-1.412-1.148-2.56-2.56-2.56h-12.8c-1.412 0-2.56 1.148-2.56 2.56v3.2h2.88v-2.88zM30.080 5.76h-28.16c-0.708 0-1.28 0.572-1.28 1.28v1.28c0 0.176 0.144 0.32 0.32 0.32h2.416l0.988 20.92c0.064 1.364 1.192 2.44 2.556 2.44h18.16c1.368 0 2.492-1.072 2.556-2.44l0.988-20.92h2.416c0.176 0 0.32-0.144 0.32-0.32v-1.28c0-0.708-0.572-1.28-1.28-1.28zM24.772 29.12h-17.544l-0.968-20.48h19.48l-0.968 20.48z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-more\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0zM13.333 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0zM26.667 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-fullscreen\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.592 0.003l-8.601 1.068c-0.3 0.036-0.423 0.4-0.214 0.614l2.487 2.487-6.978 6.978c-0.065 0.066-0.106 0.157-0.106 0.257s0.040 0.191 0.106 0.257l2.050 2.050c0.141 0.141 0.373 0.141 0.514 0l6.983-6.983 2.487 2.487c0.065 0.065 0.155 0.106 0.255 0.106 0.185 0 0.337-0.139 0.358-0.318l0-0.002 1.064-8.596c0.002-0.015 0.003-0.032 0.003-0.049 0-0.198-0.161-0.359-0.359-0.359-0.017 0-0.034 0.001-0.051 0.004l0.002-0zM11.663 18.287c-0.066-0.065-0.157-0.106-0.257-0.106s-0.191 0.040-0.257 0.106l-6.978 6.982-2.487-2.487c-0.065-0.065-0.155-0.106-0.255-0.106-0.185 0-0.337 0.139-0.358 0.318l-0 0.002-1.068 8.596c-0.027 0.236 0.168 0.432 0.405 0.405l8.601-1.068c0.3-0.036 0.423-0.4 0.214-0.614l-2.487-2.487 6.983-6.983c0.141-0.141 0.141-0.373 0-0.514l-2.055-2.046z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-emoji\" viewBox=\"0 0 32 32\">\n      <path d=\"M8 12.75c0 0.947 0.768 1.714 1.714 1.714s1.714-0.768 1.714-1.714v0c0-0.947-0.768-1.714-1.714-1.714s-1.714 0.768-1.714 1.714v0zM20.571 12.75c0 0.947 0.767 1.714 1.714 1.714s1.714-0.768 1.714-1.714v0c0-0.947-0.767-1.714-1.714-1.714s-1.714 0.768-1.714 1.714v0zM16 0c-8.836 0-16 7.164-16 16s7.164 16 16 16 16-7.164 16-16-7.164-16-16-16zM25.393 25.393c-1.221 1.221-2.643 2.179-4.225 2.85-1.632 0.693-3.371 1.043-5.168 1.043s-3.536-0.35-5.171-1.043c-1.643-0.704-3.045-1.666-4.225-2.85l-0-0c-1.221-1.221-2.179-2.643-2.85-4.225-0.689-1.632-1.039-3.371-1.039-5.168s0.35-3.536 1.043-5.171c0.704-1.643 1.666-3.045 2.85-4.225l0-0c1.221-1.221 2.643-2.179 4.225-2.85 1.632-0.689 3.371-1.039 5.168-1.039s3.536 0.35 5.171 1.043c1.643 0.704 3.045 1.666 4.225 2.85l0 0c1.221 1.221 2.179 2.643 2.85 4.225 0.689 1.632 1.039 3.371 1.039 5.168s-0.35 3.536-1.043 5.171c-0.703 1.642-1.665 3.043-2.849 4.221l-0.001 0.001zM21.429 16.75h-1.718c-0.15 0-0.279 0.114-0.289 0.264-0.136 1.768-1.618 3.164-3.421 3.164s-3.289-1.396-3.421-3.164c-0.011-0.15-0.139-0.264-0.289-0.264h-1.718c-0 0-0 0-0 0-0.158 0-0.286 0.128-0.286 0.286 0 0.005 0 0.010 0 0.015l-0-0.001c0.157 3.011 2.661 5.414 5.714 5.414s5.557-2.404 5.714-5.414c0-0.004 0-0.009 0-0.014 0-0.158-0.128-0.286-0.286-0.286-0 0-0 0-0 0h0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-center\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.080 4.72h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM25.92 21.68c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-left\" viewBox=\"0 0 32 32\">\n      <path d=\"M0.32 4.72h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM0.32 21.68h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-right\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 1.84h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 18.8h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M21.563 21.195c-0.056-0.048-0.128-0.076-0.204-0.076h-2.188c-0.096 0-0.184 0.044-0.244 0.116l-2.928 3.512-2.924-3.512c-0.060-0.072-0.152-0.116-0.244-0.116h-2.192c-0.076 0-0.148 0.028-0.204 0.076-0.136 0.112-0.156 0.316-0.040 0.452l4.091 4.911-4.096 4.915c-0.112 0.136-0.096 0.336 0.040 0.452 0.056 0.048 0.128 0.076 0.204 0.076h2.188c0.096 0 0.184-0.044 0.244-0.116l2.924-3.512 2.924 3.512c0.060 0.072 0.152 0.116 0.244 0.116h2.2c0.076 0 0.148-0.028 0.204-0.076 0.136-0.112 0.156-0.316 0.040-0.452l-4.091-4.915 4.096-4.915c0.112-0.136 0.092-0.336-0.044-0.448zM14.4 17.28h3.2c0.176 0 0.32-0.144 0.32-0.32v-16.638c0-0.176-0.144-0.32-0.32-0.32h-3.2c-0.176 0-0.32 0.144-0.32 0.32v16.638c0 0.176 0.144 0.32 0.32 0.32zM9.521 10.961h-6.639v-9.999c0-0.132-0.108-0.24-0.24-0.24h-2.4c-0.132 0-0.24 0.108-0.24 0.24v11.679c0 0.664 0.536 1.2 1.2 1.2h8.319c0.132 0 0.24-0.108 0.24-0.24v-2.4c0-0.132-0.108-0.24-0.24-0.24zM31.758 0.722h-2.4c-0.132 0-0.24 0.108-0.24 0.24v9.999h-6.639c-0.132 0-0.24 0.108-0.24 0.24v2.4c0 0.132 0.108 0.24 0.24 0.24h8.319c0.664 0 1.2-0.536 1.2-1.2v-11.679c0-0.132-0.108-0.24-0.24-0.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.129 16l4.035-4.843c0.11-0.134 0.095-0.331-0.039-0.445-0.055-0.047-0.126-0.075-0.201-0.075h-2.156c-0.095 0-0.181 0.043-0.24 0.114l-2.888 3.464-2.881-3.46c-0.059-0.071-0.15-0.114-0.24-0.114h-2.159c-0.075 0-0.146 0.028-0.201 0.075-0.134 0.11-0.154 0.311-0.039 0.445l4.031 4.839-4.035 4.843c-0.11 0.134-0.095 0.331 0.039 0.445 0.055 0.047 0.126 0.075 0.201 0.075h2.156c0.095 0 0.181-0.043 0.24-0.114l2.881-3.46 2.881 3.46c0.059 0.071 0.15 0.114 0.24 0.114h2.167c0.075 0 0.146-0.028 0.201-0.075 0.134-0.11 0.154-0.311 0.039-0.445l-4.031-4.843zM16.946 14.108h-16.393c-0.173 0-0.315 0.142-0.315 0.315v3.153c0 0.173 0.142 0.315 0.315 0.315h16.393c0.173 0 0.315-0.142 0.315-0.315v-3.152c0-0.173-0.142-0.315-0.315-0.315zM13.636 22.147h-2.364c-0.13 0-0.236 0.106-0.236 0.236v6.541h-9.852c-0.13 0-0.236 0.106-0.236 0.236v2.364c0 0.13 0.106 0.236 0.236 0.236h11.507c0.654 0 1.182-0.528 1.182-1.182v-8.197c0-0.13-0.106-0.236-0.236-0.236zM1.183 3.075h9.852v6.541c0 0.13 0.106 0.236 0.236 0.236h2.364c0.13 0 0.236-0.106 0.236-0.236v-8.197c0-0.654-0.528-1.182-1.182-1.182h-11.507c-0.13 0-0.236 0.106-0.236 0.236v2.364c0 0.13 0.106 0.236 0.236 0.236z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-down\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.663 5.221h-3.158c-0.215 0-0.417 0.105-0.543 0.278l-11.962 16.489-11.962-16.489c-0.126-0.173-0.328-0.278-0.543-0.278h-3.158c-0.274 0-0.434 0.312-0.274 0.535l14.847 20.468c0.539 0.741 1.642 0.741 2.177 0l14.847-20.468c0.164-0.223 0.004-0.535-0.269-0.535z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.668 23.040h-29.336c-0.736 0-1.332-0.572-1.332-1.28v-18.56c0-0.708 0.596-1.28 1.332-1.28h29.332c0.736 0 1.332 0.572 1.332 1.28v18.56c0.004 0.708-0.592 1.28-1.328 1.28zM9.92 4.8h-7.040v6.4h7.040v-6.4zM9.92 13.76h-7.040v6.4h7.040v-6.4zM19.52 4.8h-7.040v6.4h7.040v-6.4zM19.52 13.76h-7.040v6.4h7.040v-6.4zM29.12 4.8h-7.040v6.4h7.040v-6.4zM29.12 13.76h-7.040v6.4h7.040v-6.4zM31.68 30.080h-31.36c-0.176 0-0.32-0.144-0.32-0.32v-3.2c0-0.176 0.144-0.32 0.32-0.32h31.36c0.176 0 0.32 0.144 0.32 0.32v3.2c0 0.176-0.144 0.32-0.32 0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-rowb\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.668 8.96h-29.336c-0.736 0-1.332 0.572-1.332 1.28v18.56c0 0.708 0.596 1.28 1.332 1.28h29.332c0.736 0 1.332-0.572 1.332-1.28v-18.56c0.004-0.708-0.592-1.28-1.328-1.28zM9.92 27.2h-7.040v-6.4h7.040v6.4zM9.92 18.24h-7.040v-6.4h7.040v6.4zM19.52 27.2h-7.040v-6.4h7.040v6.4zM19.52 18.24h-7.040v-6.4h7.040v6.4zM29.12 27.2h-7.040v-6.4h7.040v6.4zM29.12 18.24h-7.040v-6.4h7.040v6.4zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v3.2c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-3.2c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M29.76 0h-3.2c-0.176 0-0.32 0.144-0.32 0.32v31.36c0 0.176 0.144 0.32 0.32 0.32h3.2c0.176 0 0.32-0.144 0.32-0.32v-31.36c0-0.176-0.144-0.32-0.32-0.32zM21.76 0h-18.56c-0.708 0-1.28 0.596-1.28 1.332v29.332c0 0.736 0.572 1.332 1.28 1.332h18.56c0.708 0 1.28-0.596 1.28-1.332v-29.332c0-0.736-0.572-1.332-1.28-1.332zM11.2 29.12h-6.4v-7.040h6.4v7.040zM11.2 19.52h-6.4v-7.040h6.4v7.040zM11.2 9.92h-6.4v-7.040h6.4v7.040zM20.16 29.12h-6.4v-7.040h6.4v7.040zM20.16 19.52h-6.4v-7.040h6.4v7.040zM20.16 9.92h-6.4v-7.040h6.4v7.040z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-columnb\" viewBox=\"0 0 32 32\">\n      <path d=\"M2.24 32h3.2c0.176 0 0.32-0.144 0.32-0.32v-31.36c0-0.176-0.144-0.32-0.32-0.32h-3.2c-0.176 0-0.32 0.144-0.32 0.32v31.36c0 0.176 0.144 0.32 0.32 0.32zM10.24 32h18.56c0.708 0 1.28-0.596 1.28-1.332v-29.332c0-0.736-0.572-1.332-1.28-1.332h-18.56c-0.708 0-1.28 0.596-1.28 1.332v29.332c0 0.736 0.572 1.332 1.28 1.332zM20.8 2.88h6.4v7.040h-6.4v-7.040zM20.8 12.48h6.4v7.040h-6.4v-7.040zM20.8 22.080h6.4v7.040h-6.4v-7.040zM11.84 2.88h6.4v7.040h-6.4v-7.040zM11.84 12.48h6.4v7.040h-6.4v-7.040zM11.84 22.080h6.4v7.040h-6.4v-7.040z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-italic\" viewBox=\"0 0 32 32\">\n      <path d=\"M29 0h-19.636c-0.2 0-0.364 0.164-0.364 0.364v2.909c0 0.2 0.164 0.364 0.364 0.364h8.236l-7.091 24.727h-7.373c-0.2 0-0.364 0.164-0.364 0.364v2.909c0 0.2 0.164 0.364 0.364 0.364h19.636c0.2 0 0.364-0.164 0.364-0.364v-2.909c0-0.2-0.164-0.364-0.364-0.364h-8.482l7.091-24.727h7.618c0.2 0 0.364-0.164 0.364-0.364v-2.909c0-0.2-0.164-0.364-0.364-0.364z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-link\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.583 22.391c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-4.841 4.841c-2.242 2.242-6.025 2.479-8.5 0-2.479-2.479-2.242-6.258 0-8.5l4.841-4.841c0.129-0.129 0.129-0.342 0-0.471l-1.658-1.658c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-4.841 4.841c-3.525 3.525-3.525 9.229 0 12.75s9.229 3.525 12.75 0l4.841-4.841c0.129-0.129 0.129-0.342 0-0.471l-1.65-1.65zM29.358 2.642c-3.525-3.525-9.229-3.525-12.75 0l-4.846 4.841c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.654 1.654c0.129 0.129 0.342 0.129 0.471 0l4.842-4.841c2.242-2.242 6.025-2.479 8.5 0 2.479 2.479 2.242 6.258 0 8.5l-4.841 4.841c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.658 1.658c0.129 0.129 0.342 0.129 0.471 0l4.841-4.841c3.521-3.525 3.521-9.229 0-12.754zM20.087 10.179c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-9.437 9.433c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.65 1.65c0.129 0.129 0.342 0.129 0.471 0l9.433-9.433c0.129-0.129 0.129-0.342 0-0.471l-1.646-1.65z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-outdent\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 13.2h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM11.52 21.36c0 0.176 0.144 0.32 0.32 0.32h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.2h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM0.136 16.276l6.252 4.924c0.232 0.184 0.576 0.020 0.576-0.276v-9.848c0-0.296-0.34-0.46-0.576-0.276l-6.252 4.924c-0.082 0.065-0.135 0.164-0.135 0.276s0.053 0.211 0.134 0.275l0.001 0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-indent\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 13.2h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM11.52 21.36c0 0.176 0.144 0.32 0.32 0.32h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.2h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM1.216 21.204l6.252-4.924c0.083-0.065 0.135-0.166 0.135-0.278s-0.053-0.213-0.134-0.277l-0.001-0.001-6.252-4.928c-0.232-0.184-0.576-0.020-0.576 0.276v9.852c0 0 0 0 0 0 0 0.197 0.159 0.356 0.356 0.356 0.083 0 0.16-0.029 0.221-0.077l-0.001 0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-ordered-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.692 25.538h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM31.692 3.692h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM31.692 14.615h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM4.615 23.692h-4.462c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h2.785v0.788h-1.373c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h1.373v0.827h-2.785c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h4.462c0.085 0 0.154-0.069 0.154-0.154v-6.154c0-0.085-0.069-0.154-0.154-0.154zM0.154 3.538h1.462v4.615c0 0.085 0.069 0.154 0.154 0.154h1.538c0.085 0 0.154-0.069 0.154-0.154v-6c0-0.169-0.138-0.308-0.308-0.308h-3c-0.085 0-0.154 0.069-0.154 0.154v1.385c0 0.085 0.069 0.154 0.154 0.154zM4.615 12.769h-4.462c-0.085 0-0.154 0.069-0.154 0.154v1.385c0 0.085 0.069 0.154 0.154 0.154h2.631l-2.704 2.988c-0.049 0.055-0.080 0.128-0.081 0.207v1.419c0 0.085 0.069 0.154 0.154 0.154h4.462c0.085 0 0.154-0.069 0.154-0.154v-1.385c0-0.085-0.069-0.154-0.154-0.154h-2.631l2.704-2.988c0.049-0.055 0.080-0.128 0.081-0.207v-1.419c0-0.085-0.069-0.154-0.154-0.154z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-redo\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.848 29.084c3.744-2.928 6.152-7.488 6.152-12.608 0-8.836-7.14-15.984-15.976-15.996-8.848-0.012-16.024 7.152-16.024 15.996 0 5.008 2.3 9.476 5.904 12.408 0.14 0.112 0.344 0.088 0.456-0.052l1.576-2.020c0.108-0.136 0.084-0.332-0.048-0.444-0.324-0.264-0.636-0.548-0.936-0.848-1.14-1.136-2.066-2.486-2.712-3.985l-0.032-0.083c-0.672-1.572-1.008-3.248-1.008-4.976s0.336-3.404 1.004-4.98c0.644-1.524 1.568-2.892 2.744-4.068s2.544-2.1 4.068-2.744c1.58-0.668 3.256-1.004 4.984-1.004s3.404 0.336 4.98 1.004c1.524 0.644 2.892 1.568 4.068 2.744s2.1 2.544 2.744 4.068c0.668 1.576 1.004 3.252 1.004 4.98s-0.336 3.404-1.004 4.98c-0.678 1.582-1.604 2.932-2.744 4.068l-0 0c-0.372 0.372-0.764 0.72-1.172 1.040l-1.628-2.084c-0.059-0.076-0.15-0.124-0.253-0.124-0.15 0-0.276 0.103-0.31 0.242l-0 0.002-1.584 6.488c-0.048 0.2 0.104 0.396 0.308 0.396l6.68 0.032c0.268 0 0.42-0.308 0.252-0.516l-1.492-1.916z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-table\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.857 3.429h-29.714c-0.632 0-1.143 0.511-1.143 1.143v22.857c0 0.632 0.511 1.143 1.143 1.143h29.714c0.632 0 1.143-0.511 1.143-1.143v-22.857c0-0.632-0.511-1.143-1.143-1.143zM29.429 10.857h-7.571v-4.857h7.571v4.857zM29.429 18.857h-7.571v-5.714h7.571v5.714zM12.429 13.143h7.143v5.714h-7.143v-5.714zM19.571 10.857h-7.143v-4.857h7.143v4.857zM2.571 13.143h7.571v5.714h-7.571v-5.714zM2.571 6h7.571v4.857h-7.571v-4.857zM2.571 21.143h7.571v4.857h-7.571v-4.857zM12.429 21.143h7.143v4.857h-7.143v-4.857zM29.429 26h-7.571v-4.857h7.571v4.857z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-undo\" viewBox=\"0 0 32 32\">\n      <path d=\"M15.976 0.48c-8.836 0.012-15.976 7.16-15.976 15.996 0 5.12 2.408 9.68 6.152 12.608l-1.5 1.92c-0.164 0.212-0.012 0.52 0.252 0.516l6.68-0.032c0.208 0 0.36-0.196 0.308-0.396l-1.58-6.492c-0.035-0.141-0.161-0.244-0.311-0.244-0.103 0-0.194 0.048-0.253 0.123l-0.001 0.001-1.628 2.084c-0.408-0.32-0.8-0.668-1.172-1.040-1.14-1.136-2.066-2.486-2.712-3.985l-0.032-0.083c-0.668-1.576-1.004-3.252-1.004-4.98s0.336-3.404 1.004-4.98c0.644-1.524 1.568-2.892 2.744-4.068s2.544-2.1 4.068-2.744c1.58-0.668 3.256-1.004 4.984-1.004s3.404 0.336 4.98 1.004c1.524 0.644 2.892 1.568 4.068 2.744s2.1 2.544 2.744 4.068c0.668 1.576 1.004 3.252 1.004 4.98s-0.336 3.404-1.004 4.98c-0.678 1.582-1.604 2.932-2.744 4.068l-0 0c-0.3 0.3-0.612 0.58-0.936 0.848-0.072 0.059-0.117 0.147-0.117 0.246 0 0.075 0.026 0.144 0.070 0.198l-0-0.001 1.576 2.020c0.112 0.14 0.316 0.164 0.456 0.052 3.604-2.936 5.904-7.404 5.904-12.412 0-8.844-7.176-16.008-16.024-15.996z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.686 3.451h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM31.686 14.588h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM31.686 25.726h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM0 4.863c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0zM0 16c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0zM0 27.137c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-up\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.936 26.244l-14.846-20.466c-0.539-0.741-1.642-0.741-2.177 0l-14.85 20.466c-0.040 0.055-0.064 0.124-0.064 0.198 0 0.186 0.151 0.337 0.337 0.337 0 0 0.001 0 0.001 0h3.158c0.215 0 0.417-0.105 0.543-0.278l11.961-16.488 11.961 16.488c0.126 0.173 0.328 0.278 0.543 0.278h3.158c0.274 0 0.434-0.312 0.274-0.535z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-zhihu\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.245 3.993v24.401h2.555l1.073 3.041 4.532-3.041h5.601v-24.401h-13.761zM28.795 25.162h-2.551l-3.199 2.147-0.758-2.147h-0.767v-17.837h7.27v17.837zM16.601 14.931h-5.656c0.089-1.912 0.183-4.442 0.281-7.364h5.575l-0.004-0.345c0-0.026-0.009-0.626-0.098-1.239-0.089-0.639-0.281-1.486-0.894-1.486h-9.353c0.187-0.877 0.669-2.969 1.252-3.995l0.273-0.477-0.549-0.030c-0.034 0-0.835-0.038-1.763 0.451-1.521 0.809-2.202 2.402-2.5 3.595-0.784 3.113-1.9 5.277-2.372 6.201-0.141 0.273-0.226 0.434-0.264 0.545-0.077 0.209-0.034 0.417 0.119 0.554 0.447 0.405 1.627-0.124 1.64-0.128 0.026-0.013 0.055-0.026 0.094-0.043 0.592-0.268 2.347-1.065 2.973-3.599h2.415c0.030 1.371 0.132 5.895 0.124 7.364h-6.005l-0.089 0.064c-0.984 0.72-1.299 2.692-1.312 2.777l-0.060 0.392h7.113c-0.524 3.335-1.129 4.83-1.448 5.426-0.158 0.298-0.311 0.596-0.456 0.886-0.907 1.797-1.849 3.654-5.379 6.542-0.153 0.119-0.298 0.341-0.204 0.584 0.102 0.268 0.396 0.388 1.048 0.388 0.23 0 0.503-0.013 0.826-0.043 2.125-0.187 4.293-0.767 5.754-3.731 0.724-1.495 1.35-3.054 1.87-4.638l5.814 6.815 0.213-0.511c0.034-0.081 0.809-1.972 0.217-4.085l-0.021-0.077-4.604-5.239-0.937 0.707c0.273-1.112 0.451-2.125 0.532-3.028h6.759v-0.341c0-1.708-0.788-2.722-0.818-2.764l-0.102-0.128z\"></path>\n    </symbol>\n  </defs>\n</svg>`)\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/icons/material.js",
    "content": "document.body.insertAdjacentHTML('afterBegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <defs>\n    <symbol id=\"vditor-icon-comment\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.8 24.272l-1.872-1.872h-23.728v-19.2h25.6v21.072zM28.8 0h-25.6c-1.76 0-3.2 1.44-3.2 3.2v19.2c0 1.76 1.44 3.2 3.2 3.2h22.4l6.4 6.4v-28.8c0-1.76-1.44-3.2-3.2-3.2z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-headings\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.050 0.007h6.279v31.993h-6.279v-31.993z\"></path>\n      <path d=\"M24.671 0h6.279v31.993h-6.279v-31.993z\"></path>\n      <path d=\"M5.159 12.845h21.683v6.317h-21.683v-6.317z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-before\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 26.507h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M1.462 9.928h16.48v-3.276h-16.48v3.276z\"></path>\n      <path d=\"M1.462 18.217h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M24.366 8.29l6.171-5.952-2.43-2.338-8.619 8.29 8.619 8.29 2.43-2.337-6.171-5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-after\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 5.493h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M1.462 22.072h16.48v3.276h-16.48v-3.276z\"></path>\n      <path d=\"M1.462 13.783h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M24.366 23.71l6.171 5.952-2.43 2.338-8.619-8.29 8.619-8.29 2.43 2.337-6.171 5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M5.279 0v23.265h3.538v-23.265h-3.538z\"></path>\n      <path d=\"M23.183 0v23.265h3.538v-23.265h-3.538z\"></path>\n      <path d=\"M14.231 0v17.797h3.538v-17.797h-3.538z\"></path>\n      <path d=\"M16 28.387l3.613 3.613 2.023-2.023-3.613-3.613 3.613-3.613-2.023-2.023-3.613 3.613-3.613-3.613-2.023 2.023 3.613 3.613-3.613 3.613 2.023 2.023 3.613-3.613z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 5.279h23.265v3.538h-23.265v-3.538z\"></path>\n      <path d=\"M0 23.183h23.265v3.538h-23.265v-3.538z\"></path>\n      <path d=\"M0 14.231h17.797v3.538h-17.797v-3.538z\"></path>\n      <path d=\"M28.387 16l3.613 3.613-2.023 2.023-3.613-3.613-3.613 3.613-2.023-2.023 3.613-3.613-3.613-3.613 2.023-2.023 3.613 3.613 3.613-3.613 2.023 2.023-3.613 3.613z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 5.493h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M1.462 22.072h16.48v3.276h-16.48v-3.276z\"></path>\n      <path d=\"M1.462 13.783h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M24.366 23.71l6.171 5.952-2.43 2.338-8.619-8.29 8.619-8.29 2.43 2.337-6.171 5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-rowb\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 26.507h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M1.462 9.928h16.48v-3.276h-16.48v3.276z\"></path>\n      <path d=\"M1.462 18.217h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M24.366 8.29l6.171-5.952-2.43-2.338-8.619 8.29 8.619 8.29 2.43-2.337-6.171-5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M5.493 1.462v21.543h3.276v-21.543h-3.276z\"></path>\n      <path d=\"M22.072 1.462v16.48h3.276v-16.48h-3.276z\"></path>\n      <path d=\"M13.783 1.462v21.543h3.276v-21.543h-3.276z\"></path>\n      <path d=\"M23.71 24.366l5.952 6.171 2.338-2.43-8.29-8.619-8.29 8.619 2.337 2.43 5.953-6.171z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-columnb\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.507 1.462v21.543h-3.276v-21.543h3.276z\"></path>\n      <path d=\"M9.928 1.462v16.48h-3.276v-16.48h3.276z\"></path>\n      <path d=\"M18.217 1.462v21.543h-3.276v-21.543h3.276z\"></path>\n      <path d=\"M8.29 24.366l-5.952 6.171-2.338-2.43 8.29-8.619 8.29 8.619-2.337 2.43-5.953-6.171z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code-theme\" viewBox=\"0 0 32 32\">\n        <path d=\"M28.444 12.444v16h-24.924v-24.889h16v-3.556h-15.964c-1.956 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.6 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-16h-3.556zM23.218 8.782l1.671 3.662 1.671-3.662 3.662-1.671-3.662-1.671-1.671-3.662-1.671 3.662-3.662 1.671zM16 8.889l-2.222 4.889-4.889 2.222 4.889 2.222 2.222 4.889 2.222-4.889 4.889-2.222-4.889-2.222z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code\" viewBox=\"0 0 32 32\">\n        <path d=\"M9.946 8.501l-2.204-1.832-7.742 9.331 7.742 9.331 2.204-1.832-6.225-7.499 6.225-7.499zM8.844 17.431h2.862v-2.862h-2.862v2.862zM23.156 14.569h-2.862v2.862h2.862v-2.862zM14.569 17.431h2.862v-2.862h-2.862v2.862zM24.258 6.669l-2.204 1.832 6.225 7.499-6.225 7.499 2.204 1.832 7.742-9.331-7.742-9.331z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-table\" viewBox=\"0 0 32 32\">\n        <path d=\"M22.801 2.286h-22.801v27.429h32v-27.429h-9.199zM19.372 5.714v4.571h-6.801v-4.571h6.801zM19.372 13.714v4.571h-6.801v-4.571h6.801zM3.429 5.714h5.714v4.571h-5.714v-4.571zM3.429 13.714h5.714v4.571h-5.714v-4.571zM3.429 26.286v-4.571h5.714v4.571h-5.714zM12.571 26.286v-4.571h6.801v4.571h-6.801zM28.571 26.286h-5.77v-4.571h5.77v4.571zM28.571 18.286h-5.77v-4.571h5.77v4.571zM22.801 10.286v-4.571h5.77v4.571h-5.77z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-export\" viewBox=\"0 0 32 32\">\n        <path d=\"M28.444 28.444h-24.889v-24.889h12.444v-3.556h-12.444c-1.973 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.582 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-12.444h-3.556v12.444zM19.556 0v3.556h6.382l-17.476 17.476 2.507 2.507 17.476-17.476v6.382h3.556v-12.444h-12.444z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-resize\" viewBox=\"0 0 128 32\">\n        <path d=\"M128 32v-5.334h-128v5.334h128zM128 18.666v-5.331h-128v5.331h128zM0 5.334h128v-5.334h-128v5.334z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-edit\" viewBox=\"0 0 32 32\">\n        <path d=\"M19.66 10.703l1.635 1.635-16.104 16.104h-1.635v-1.635l16.104-16.104zM26.059 0.002c-0.444 0-0.907 0.178-1.244 0.515l-3.253 3.253 6.666 6.666 3.253-3.253c0.693-0.693 0.693-1.813 0-2.506l-4.159-4.159c-0.355-0.355-0.8-0.515-1.262-0.515zM19.66 5.673l-19.66 19.66v6.666h6.666l19.66-19.66-6.666-6.666z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-quote\" viewBox=\"0 0 32 32\">\n        <path d=\"M27.769 26.667h-9.316l3.556-7.111h-4.231v-14.222h14.222v12.871l-4.231 8.462zM24.213 23.111h1.351l2.88-5.76v-8.462h-7.111v7.111h6.436l-3.556 7.111zM9.991 26.667h-9.316l3.556-7.111h-4.231v-14.222h14.222v12.871l-4.231 8.462zM6.436 23.111h1.351l2.88-5.76v-8.462h-7.111v7.111h6.436l-3.556 7.111z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-strike\" viewBox=\"0 0 32 32\">\n        <path d=\"M12.444 29.333h7.111v-5.333h-7.111v5.333zM3.556 2.667v5.333h8.889v5.333h7.111v-5.333h8.889v-5.333h-24.889zM0 20.444h32v-3.556h-32v3.556z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-line\" viewBox=\"0 0 32 32\">\n        <path d=\"M0 14h32v4h-32v-4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-both\" viewBox=\"0 0 32 32\">\n        <path d=\"M2.909 3.636h26.182c1.6 0 2.909 1.309 2.909 2.909v18.909c0 1.6-1.309 2.909-2.909 2.909h-26.182c-1.6 0-2.909-1.309-2.909-2.909v-18.909c0-1.6 1.309-2.909 2.909-2.909zM29.091 25.455v-18.909h-11.636v18.909h11.636zM2.909 25.455h11.636v-18.909h-11.636v18.909zM13.091 11.636h-8.727v2.182h8.727zM13.091 15.273h-8.727v2.182h8.727zM13.091 18.909h-8.727v2.182h8.727z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-copy\" viewBox=\"0 0 32 32\">\n      <path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-trashcan\" viewBox=\"0 0 32 32\">\n      <path d=\"M23.111 10.667v17.778h-14.222v-17.778h14.222zM20.444 0h-8.889l-1.778 1.778h-6.222v3.556h24.889v-3.556h-6.222l-1.778-1.778zM26.667 7.111h-21.333v21.333c0 1.956 1.6 3.556 3.556 3.556h14.222c1.956 0 3.556-1.6 3.556-3.556v-21.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-more\" viewBox=\"0 0 32 32\">\n      <path d=\"M4 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM28 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM16 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-upload\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.8 13.387c-0.907-4.6-4.947-8.053-9.8-8.053-3.853 0-7.2 2.187-8.867 5.387-4.013 0.427-7.133 3.827-7.133 7.947 0 4.413 3.587 8 8 8h17.333c3.68 0 6.667-2.987 6.667-6.667 0-3.52-2.733-6.373-6.2-6.613zM25.333 24h-17.333c-2.947 0-5.333-2.387-5.333-5.333 0-2.733 2.040-5.013 4.747-5.293l1.427-0.147 0.667-1.267c1.267-2.44 3.747-3.96 6.493-3.96 3.493 0 6.507 2.48 7.187 5.907l0.4 2 2.040 0.147c2.080 0.133 3.707 1.88 3.707 3.947 0 2.2-1.8 4-4 4zM10.667 17.333h3.4v4h3.867v-4h3.4l-5.333-5.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bug\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.222 8.889h-4.996c-0.8-1.387-1.902-2.578-3.236-3.484l2.898-2.898-2.507-2.507-3.858 3.858c-0.818-0.196-1.653-0.302-2.524-0.302s-1.707 0.107-2.507 0.302l-3.876-3.858-2.507 2.507 2.88 2.898c-1.316 0.907-2.418 2.098-3.218 3.484h-4.996v3.556h3.716c-0.089 0.587-0.16 1.173-0.16 1.778v1.778h-3.556v3.556h3.556v1.778c0 0.604 0.071 1.191 0.16 1.778h-3.716v3.556h4.996c1.849 3.182 5.28 5.333 9.227 5.333s7.378-2.151 9.227-5.333h4.996v-3.556h-3.716c0.089-0.587 0.16-1.173 0.16-1.778v-1.778h3.556v-3.556h-3.556v-1.778c0-0.604-0.071-1.191-0.16-1.778h3.716v-3.556zM23.111 16v5.333c0 0.391-0.053 0.836-0.124 1.244l-0.178 1.156-0.658 1.156c-1.28 2.204-3.627 3.556-6.151 3.556s-4.871-1.369-6.151-3.556l-0.658-1.138-0.178-1.156c-0.071-0.409-0.124-0.853-0.124-1.262v-7.111c0-0.409 0.053-0.853 0.124-1.244l0.178-1.156 0.658-1.156c0.533-0.924 1.28-1.724 2.151-2.329l1.013-0.693 1.316-0.32c0.551-0.142 1.12-0.213 1.671-0.213 0.569 0 1.12 0.071 1.689 0.213l1.209 0.284 1.084 0.747c0.889 0.604 1.618 1.387 2.151 2.329l0.676 1.156 0.178 1.156c0.071 0.391 0.124 0.836 0.124 1.227v1.778zM12.444 19.556h7.111v3.556h-7.111zM12.444 12.445h7.111v3.556h-7.111z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-contract\" viewBox=\"0 0 32 32\">\n      <path d=\"M32 2.256l-8.464 8.464 5.264 5.28h-12.8v-12.8l5.264 5.264 8.48-8.464 2.256 2.256zM2.256 32l8.464-8.464 5.28 5.264v-12.8h-12.8l5.264 5.264-8.464 8.48 2.256 2.256z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-inline-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 23.36l-7.36-7.36 7.36-7.36-2.24-2.24-9.6 9.6 9.6 9.6 2.24-2.24zM20.16 23.36l7.36-7.36-7.36-7.36 2.24-2.24 9.6 9.6-9.6 9.6-2.24-2.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-down\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-up\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.76 25.88l12.24-12.213 12.24 12.213 3.76-3.76-16-16-16 16 3.76 3.76z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-check\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.444 0h-24.889c-1.956 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.6 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-24.889c0-1.956-1.6-3.556-3.556-3.556zM28.444 28.445h-24.889v-24.889h24.889v24.889zM26.649 10.667l-2.507-2.524-11.716 11.716-4.587-4.569-2.524 2.507 7.111 7.093z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 32c-8.816 0-16-7.184-16-16s7.184-16 16-16 16 6.464 16 14.4c0 5.296-4.304 9.6-9.6 9.6h-2.832c-0.448 0-0.8 0.352-0.8 0.8 0 0.192 0.080 0.368 0.208 0.528 0.656 0.752 1.024 1.696 1.024 2.672 0 2.208-1.792 4-4 4zM16 3.2c-7.056 0-12.8 5.744-12.8 12.8s5.744 12.8 12.8 12.8c0.448 0 0.8-0.352 0.8-0.8 0-0.256-0.128-0.448-0.224-0.56-0.656-0.736-1.008-1.68-1.008-2.64 0-2.208 1.792-4 4-4h2.832c3.536 0 6.4-2.864 6.4-6.4 0-6.176-5.744-11.2-12.8-11.2z\"></path>\n      <path d=\"M9.6 15.2c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M14.4 8.8c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M22.4 8.8c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M27.2 15.2c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-help\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.4 25.6h3.2v-3.2h-3.2v3.2zM16 0c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM16 28.8c-7.056 0-12.8-5.744-12.8-12.8s5.744-12.8 12.8-12.8 12.8 5.744 12.8 12.8-5.744 12.8-12.8 12.8zM16 6.4c-3.536 0-6.4 2.864-6.4 6.4h3.2c0-1.76 1.44-3.2 3.2-3.2s3.2 1.44 3.2 3.2c0 3.2-4.8 2.8-4.8 8h3.2c0-3.6 4.8-4 4.8-8 0-3.536-2.864-6.4-6.4-6.4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-info\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.4 8h3.2v3.2h-3.2zM14.4 14.4h3.2v9.6h-3.2zM16 0c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM16 28.8c-7.056 0-12.8-5.744-12.8-12.8s5.744-12.8 12.8-12.8 12.8 5.744 12.8 12.8-5.744 12.8-12.8 12.8z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-fullscreen\" viewBox=\"0 0 32 32\">\n      <path d=\"M32 14.222v-14.222h-14.222l5.849 5.849-17.778 17.778-5.849-5.849v14.222h14.222l-5.849-5.849 17.778-17.778z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-preview\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 8c5.513 0 10.429 3.098 12.829 8-2.4 4.902-7.302 8-12.829 8s-10.429-3.098-12.829-8c2.4-4.902 7.316-8 12.829-8zM16 5.091c-7.273 0-13.484 4.524-16 10.909 2.516 6.385 8.727 10.909 16 10.909s13.484-4.524 16-10.909c-2.516-6.385-8.727-10.909-16-10.909zM16 12.364c2.007 0 3.636 1.629 3.636 3.636s-1.629 3.636-3.636 3.636-3.636-1.629-3.636-3.636 1.629-3.636 3.636-3.636zM16 9.455c-3.607 0-6.545 2.938-6.545 6.545s2.938 6.545 6.545 6.545 6.545-2.938 6.545-6.545-2.938-6.545-6.545-6.545z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-record\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.928 15.17h2.844q0 4.267-2.963 7.467t-7.151 3.832v5.531h-3.319v-5.531q-4.188-0.632-7.151-3.832t-2.963-7.467h2.844q0 3.714 2.647 6.123t6.281 2.41 6.281-2.41 2.647-6.123zM13.946 4.899v10.43q0 0.79 0.593 1.383t1.462 0.593q0.79 0 1.383-0.553t0.593-1.422l0.079-10.43q0-0.869-0.632-1.462t-1.422-0.593-1.422 0.593-0.632 1.462zM16 20.227q-2.054 0-3.556-1.501t-1.501-3.556v-10.114q0-2.054 1.501-3.556t3.556-1.501 3.556 1.501 1.501 3.556v10.114q0 2.054-1.501 3.556t-3.556 1.501z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-pause\" viewBox=\"0 0 32 32\">\n      <path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-play\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-emoji\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 24.789q-2.779 0-4.995-1.54t-3.192-4.019h2.629q1.878 3.155 5.559 3.155t5.559-3.155h2.629q-0.977 2.479-3.192 4.019t-4.995 1.54zM16 28.845q5.258 0 9.052-3.793t3.793-9.052-3.793-9.052-9.052-3.793-9.052 3.793-3.793 9.052 3.793 9.052 9.052 3.793zM16 0q6.61 0 11.305 4.695t4.695 11.305-4.695 11.305-11.305 4.695-11.305-4.695-4.695-11.305 4.695-11.305 11.305-4.695zM10.366 14.423q-0.977 0-1.69-0.714t-0.714-1.69 0.714-1.69 1.69-0.714 1.69 0.714 0.714 1.69-0.714 1.69-1.69 0.714zM21.634 14.423q-0.977 0-1.69-0.714t-0.714-1.69 0.714-1.69 1.69-0.714 1.69 0.714 0.714 1.69-0.714 1.69-1.69 0.714z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-link\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.038 7.962q3.305 0 5.634 2.366t2.329 5.671-2.329 5.671-5.634 2.366h-6.46v-3.080h6.46q2.028 0 3.493-1.465t1.465-3.493-1.465-3.493-3.493-1.465h-6.46v-3.080h6.46zM9.615 17.577v-3.155h12.77v3.155h-12.77zM3.005 16q0 2.028 1.465 3.493t3.493 1.465h6.46v3.080h-6.46q-3.305 0-5.634-2.366t-2.329-5.671 2.329-5.671 5.634-2.366h6.46v3.080h-6.46q-2.028 0-3.493 1.465t-1.465 3.493z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-redo\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.422 14.605l5.578-5.651v14.092h-14.092l5.725-5.651q-3.523-2.936-8.073-2.936-3.743 0-7.229 2.495t-4.661 6.092l-3.67-1.174q1.615-4.991 5.908-8.147t9.651-3.156q6.239 0 10.862 4.037z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-undo\" viewBox=\"0 0 32 32\">\n      <path d=\"M16.44 10.569q5.358 0 9.615 3.156t5.945 8.147l-3.67 1.174q-1.248-3.817-4.514-6.202t-7.376-2.385q-4.55 0-8.073 2.936l5.725 5.651h-14.092v-14.092l5.578 5.651q4.624-4.037 10.862-4.037z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-center\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM7.083 7.083h17.833v3.583h-17.833v-3.583zM0 17.75v-3.5h32v3.5h-32zM0 32v-3.583h32v3.583h-32zM7.083 21.333h17.833v3.583h-17.833v-3.583z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-left\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM0 32v-3.583h32v3.583h-32zM0 17.75v-3.5h32v3.5h-32zM21.333 7.083v3.583h-21.333v-3.583h21.333zM21.333 21.333v3.583h-21.333v-3.583h21.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-right\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM10.667 10.667v-3.583h21.333v3.583h-21.333zM0 17.75v-3.5h32v3.5h-32zM10.667 24.917v-3.583h21.333v3.583h-21.333zM0 32v-3.583h32v3.583h-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bold\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.569 26.328q1.498 0 2.462-1.017t0.963-2.408-0.963-2.408-2.462-1.017h-8.027v6.849h8.027zM10.542 5.779v6.85h6.85q1.391 0 2.408-1.017t1.017-2.408-1.017-2.408-2.408-1.017h-6.849zM23.385 15.518q4.923 2.248 4.923 7.813 0 3.639-2.408 6.154t-6.047 2.515h-16.161v-32h14.341q3.853 0 6.475 2.676t2.622 6.528-3.746 6.314z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-indent\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.25 17.75v-3.5h17.75v3.5h-17.75zM14.25 10.667v-3.583h17.75v3.583h-17.75zM0 0h32v3.583h-32v-3.583zM14.25 24.917v-3.583h17.75v3.583h-17.75zM0 8.917l7.083 7.083-7.083 7.083v-14.167zM0 32v-3.583h32v3.583h-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-outdent\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.25 17.75v-3.5h17.75v3.5h-17.75zM14.25 10.667v-3.583h17.75v3.583h-17.75zM0 0h32v3.583h-32v-3.583zM0 32v-3.583h32v3.583h-32zM0 16l7.083-7.083v14.167zM14.25 24.917v-3.583h17.75v3.583h-17.75z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-italic\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.398 0h18.301v6.849h-6.421l-7.706 18.301h5.030v6.849h-18.301v-6.849h6.421l7.706-18.301h-5.030v-6.849z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M7.777 3.929h24.223v3.403h-24.223v-3.403zM7.777 17.701v-3.403h24.223v3.403h-24.223zM7.777 28.071v-3.403h24.223v3.403h-24.223zM2.592 23.777q1.053 0 1.823 0.77t0.77 1.823-0.77 1.823-1.823 0.77-1.823-0.77-0.77-1.823 0.77-1.823 1.823-0.77zM2.592 3.038q1.053 0 1.823 0.729t0.77 1.863-0.77 1.863-1.823 0.729-1.823-0.729-0.77-1.863 0.77-1.863 1.823-0.729zM2.592 13.408q1.053 0 1.823 0.729t0.77 1.863-0.77 1.863-1.823 0.729-1.823-0.729-0.77-1.863 0.77-1.863 1.823-0.729z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-ordered-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.375 17.659v-3.319h23.625v3.319h-23.625zM8.375 27.773v-3.319h23.625v3.319h-23.625zM8.375 4.227h23.625v3.319h-23.625v-3.319zM0 14.341v-1.738h5.057v1.58l-3.081 3.477h3.081v1.738h-5.057v-1.58l3.002-3.477h-3.002zM1.659 9.284v-5.057h-1.659v-1.738h3.319v6.795h-1.659zM0 24.454v-1.738h5.057v6.795h-5.057v-1.738h3.319v-0.79h-1.659v-1.738h1.659v-0.79h-3.319z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-mp-wechat\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.927 17.719s-3.040-3.431-2.915-6.942c0.16-4.453 4.738-10.257 11.359-10.257 1.884 0 5.653 0 10.328 5.52 0.249 0.302-15.075-3.84-18.772 11.679z\"></path>\n      <path d=\"M17.477 9.301s3.946-1.298 7.271-0.178c4.222 1.422 8.693 6.826 6.809 13.182-0.533 1.804-1.609 5.413-8.231 8.32-0.356 0.16 10.613-13.351-5.849-21.323z\"></path>\n      <path d=\"M10.944 24.332c-1.938 2.035-3.751 1.742-3.751 1.742l0.578-3.191c-5.235-3.44-6.373-10.328-6.453-10.106-2.444 6.817-0.916 11.377 0.027 13.004 3.315 5.733 11.982 7.351 17.484 3.893 2.969-1.867 4.533-7.057 4.533-7.057-5.298 2.338-9.342 2.569-12.417 1.715z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-zhihu\" viewBox=\"0 0 32 32\">\n      <path d=\"M17.167 17.769s0-2.583-1.25-2.667c-1.25-0.167-5.167 0-5.167 0v-8h5.833s-0.083-2.667-1.167-2.667h-9.5l1.583-4.25s-2.333 0.167-3.25 1.667c-0.833 1.5-3.5 9.167-3.5 9.167s0.917 0.417 2.417-0.75c1.5-1.083 2-3.083 2-3.083l2.75-0.167 0.083 8.083s-4.917-0.083-5.833 0c-1 0.083-1.5 2.667-1.5 2.667h7.417s-0.667 4.583-2.5 7.75c-1.917 3.333-5.583 5.917-5.583 5.917s2.583 1.083 5.167-0.417 4.417-8.083 4.417-8.083l5.917 7.417s0.5-3.5-0.083-4.583c-0.667-1-4.167-5-4.167-5l-1.5 1.333 1.083-4.417 6.333 0.083zM18.667 4.269l-0.083 23.999h2.417l0.833 2.917 4.25-2.917h5.917v-23.999h-13.333zM29.333 25.602h-2.75l-3.5 2.667-0.75-2.667h-0.75v-18.582h7.75v18.582z\"></path>\n    </symbol>\n  </defs>\n</svg>`)\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/markmap/prism.css",
    "content": "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: black;\n\tbackground: none;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*=\"language-\"],\n\tpre[class*=\"language-\"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.token.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #9a6e3a;\n\t/* This background color was intended by the author of this theme. */\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function,\n.token.class-name {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/a11y/assistive-mml.js",
    "content": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=5)}([function(t,e,i){\"use strict\";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,o,r=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(o)throw o.error}}return s},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t},l=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AssistiveMmlHandler=e.AssistiveMmlMathDocumentMixin=e.AssistiveMmlMathItemMixin=e.LimitedMmlVisitor=void 0;var u=i(2),c=i(3),p=i(4),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.getAttributes=function(e){return t.prototype.getAttributes.call(this,e).replace(/ ?id=\".*?\"/,\"\")},e}(c.SerializedMmlVisitor);function m(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.assistiveMml=function(t,e){if(void 0===e&&(e=!1),!(this.state()>=u.STATE.ASSISTIVEMML)){if(!this.isEscaped&&(t.options.enableAssistiveMml||e)){var i=t.adaptor,n=t.toMML(this.root).replace(/\\n */g,\"\").replace(/<!--.*?-->/g,\"\"),o=i.firstChild(i.body(i.parse(n,\"text/html\"))),r=i.node(\"mjx-assistive-mml\",{role:\"presentation\",unselectable:\"on\",display:this.display?\"block\":\"inline\"},[o]);i.setAttribute(this.typesetRoot,\"role\",\"presentation\"),i.setAttribute(i.firstChild(this.typesetRoot),\"aria-hidden\",\"true\"),i.setStyle(this.typesetRoot,\"position\",\"relative\"),i.append(this.typesetRoot,r)}this.state(u.STATE.ASSISTIVEMML)}},e}(t)}function f(t){var e;return(e=function(t){function e(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var n=t.apply(this,a(e))||this,o=n.constructor,r=o.ProcessBits;return r.has(\"assistive-mml\")||r.allocate(\"assistive-mml\"),n.visitor=new h(n.mmlFactory),n.options.MathItem=m(n.options.MathItem),\"addStyles\"in n&&n.addStyles(o.assistiveStyles),n}return o(e,t),e.prototype.toMML=function(t){return this.visitor.visitTree(t)},e.prototype.assistiveMml=function(){var t,e;if(!this.processed.isSet(\"assistive-mml\")){try{for(var i=l(this.math),n=i.next();!n.done;n=i.next()){n.value.assistiveMml(this)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}this.processed.set(\"assistive-mml\")}return this},e.prototype.state=function(e,i){return void 0===i&&(i=!1),t.prototype.state.call(this,e,i),e<u.STATE.ASSISTIVEMML&&this.processed.clear(\"assistive-mml\"),this},e}(t)).OPTIONS=r(r({},t.OPTIONS),{enableAssistiveMml:!0,renderActions:p.expandable(r(r({},t.OPTIONS.renderActions),{assistiveMml:[u.STATE.ASSISTIVEMML]}))}),e.assistiveStyles={\"mjx-assistive-mml\":{position:\"absolute !important\",top:\"0px\",left:\"0px\",clip:\"rect(1px, 1px, 1px, 1px)\",padding:\"1px 0px 0px 0px !important\",border:\"0px !important\",display:\"block !important\",width:\"auto !important\",overflow:\"hidden !important\",\"-webkit-touch-callout\":\"none\",\"-webkit-user-select\":\"none\",\"-khtml-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},'mjx-assistive-mml[display=\"block\"]':{width:\"100% !important\"}},e}e.LimitedMmlVisitor=h,u.newState(\"ASSISTIVEMML\",153),e.AssistiveMmlMathItemMixin=m,e.AssistiveMmlMathDocumentMixin=f,e.AssistiveMmlHandler=function(t){return t.documentClass=f(t.documentClass),t}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";i.r(e);var n=i(1),o=i(0);Object(n.combineWithMathJax)({_:{a11y:{\"assistive-mml\":o}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(o.AssistiveMmlHandler)(t)}))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/a11y/complexity.js",
    "content": "!function(t){var e={};function i(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=t,i.c=e,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)i.d(o,r,function(e){return t[e]}.bind(null,r));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=9)}([function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var o,r,n=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=n.next()).done;)s.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(i=n.return)&&i.call(n)}finally{if(r)throw r.error}}return s},l=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ComplexityHandler=e.ComplexityMathDocumentMixin=e.ComplexityMathItemMixin=void 0;var c=i(7),p=i(2),u=i(3),h=i(5);function y(t,e){return function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.complexity=function(t,i){void 0===i&&(i=!1),this.state()>=c.STATE.COMPLEXITY||(this.isEscaped||!t.options.enableComplexity&&!i||(this.enrich(t,!0),e(this.root)),this.state(c.STATE.COMPLEXITY))},i}(t)}function d(t){var e;return(e=function(t){function e(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var o=t.apply(this,l(e))||this,r=o.constructor.ProcessBits;r.has(\"complexity\")||r.allocate(\"complexity\");var n=h.selectOptionsFromKeys(o.options,o.options.ComplexityVisitor.OPTIONS);o.complexityVisitor=new o.options.ComplexityVisitor(o.mmlFactory,n);var s=function(t){return o.complexityVisitor.visitTree(t)};return o.options.MathItem=y(o.options.MathItem,s),o}return r(e,t),e.prototype.complexity=function(){var t,e;if(!this.processed.isSet(\"complexity\")){if(this.options.enableComplexity)try{for(var i=a(this.math),o=i.next();!o.done;o=i.next()){o.value.complexity(this)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}this.processed.set(\"complexity\")}return this},e.prototype.state=function(e,i){return void 0===i&&(i=!1),t.prototype.state.call(this,e,i),e<c.STATE.COMPLEXITY&&this.processed.clear(\"complexity\"),this},e}(t)).OPTIONS=n(n(n({},t.OPTIONS),u.ComplexityVisitor.OPTIONS),{enableComplexity:!0,ComplexityVisitor:u.ComplexityVisitor,renderActions:h.expandable(n(n({},t.OPTIONS.renderActions),{complexity:[c.STATE.COMPLEXITY]}))}),e}c.newState(\"COMPLEXITY\",40),e.ComplexityMathItemMixin=y,e.ComplexityMathDocumentMixin=d,e.ComplexityHandler=function(t,e){return void 0===e&&(e=null),!t.documentClass.prototype.enrich&&e&&(t=p.EnrichHandler(t,e)),t.documentClass=d(t.documentClass),t}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichedMathItemMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathItemMixin,e.EnrichedMathDocumentMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathDocumentMixin,e.EnrichHandler=MathJax._.a11y[\"semantic-enrich\"].EnrichHandler},function(t,e,i){\"use strict\";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ComplexityVisitor=void 0;var s=i(8),l=i(4),a=i(5),c=function(t){function e(e,i){var o=t.call(this,e)||this;o.complexity={text:.5,token:.5,child:1,script:.8,sqrt:2,subsup:2,underover:2,fraction:2,enclose:2,action:2,phantom:0,xml:2,glyph:2};var r=o.constructor;return o.options=a.userOptions(a.defaultOptions({},r.OPTIONS),i),o.collapse=new o.options.Collapse(o),o.factory=e,o}return r(e,t),e.prototype.visitTree=function(e){t.prototype.visitTree.call(this,e,!0),this.options.makeCollapsible&&this.collapse.makeCollapse(e)},e.prototype.visitNode=function(e,i){if(!e.attributes.get(\"data-semantic-complexity\"))return t.prototype.visitNode.call(this,e,i)},e.prototype.visitDefault=function(t,e){var i;if(t.isToken){var o=t.getText();i=this.complexity.text*o.length+this.complexity.token}else i=this.childrenComplexity(t);return this.setComplexity(t,i,e)},e.prototype.visitMfracNode=function(t,e){var i=this.childrenComplexity(t)*this.complexity.script+this.complexity.fraction;return this.setComplexity(t,i,e)},e.prototype.visitMsqrtNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.sqrt;return this.setComplexity(t,i,e)},e.prototype.visitMrootNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.sqrt-(1-this.complexity.script)*this.getComplexity(t.childNodes[1]);return this.setComplexity(t,i,e)},e.prototype.visitMphantomNode=function(t,e){return this.setComplexity(t,this.complexity.phantom,e)},e.prototype.visitMsNode=function(t,e){var i=(t.attributes.get(\"lquote\")+t.getText()+t.attributes.get(\"rquote\")).length*this.complexity.text;return this.setComplexity(t,i,e)},e.prototype.visitMsubsupNode=function(e,i){t.prototype.visitDefault.call(this,e,!0);var o=e.childNodes[e.sub],r=e.childNodes[e.sup],n=e.childNodes[e.base],s=Math.max(o?this.getComplexity(o):0,r?this.getComplexity(r):0)*this.complexity.script;return s+=this.complexity.child*((o?1:0)+(r?1:0)),s+=n?this.getComplexity(n)+this.complexity.child:0,s+=this.complexity.subsup,this.setComplexity(e,s,i)},e.prototype.visitMsubNode=function(t,e){return this.visitMsubsupNode(t,e)},e.prototype.visitMsupNode=function(t,e){return this.visitMsubsupNode(t,e)},e.prototype.visitMunderoverNode=function(e,i){t.prototype.visitDefault.call(this,e,!0);var o=e.childNodes[e.under],r=e.childNodes[e.over],n=e.childNodes[e.base],s=Math.max(o?this.getComplexity(o):0,r?this.getComplexity(r):0)*this.complexity.script;return n&&(s=Math.max(this.getComplexity(n),s)),s+=this.complexity.child*((o?1:0)+(r?1:0)+(n?1:0)),s+=this.complexity.underover,this.setComplexity(e,s,i)},e.prototype.visitMunderNode=function(t,e){return this.visitMunderoverNode(t,e)},e.prototype.visitMoverNode=function(t,e){return this.visitMunderoverNode(t,e)},e.prototype.visitMencloseNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.enclose;return this.setComplexity(t,i,e)},e.prototype.visitMactionNode=function(t,e){this.childrenComplexity(t);var i=this.getComplexity(t.selected);return this.setComplexity(t,i,e)},e.prototype.visitMsemanticsNode=function(t,e){var i=t.childNodes[0],o=0;return i&&(this.visitNode(i,!0),o=this.getComplexity(i)),this.setComplexity(t,o,e)},e.prototype.visitAnnotationNode=function(t,e){return this.setComplexity(t,this.complexity.xml,e)},e.prototype.visitAnnotation_xmlNode=function(t,e){return this.setComplexity(t,this.complexity.xml,e)},e.prototype.visitMglyphNode=function(t,e){return this.setComplexity(t,this.complexity.glyph,e)},e.prototype.getComplexity=function(t){var e=t.getProperty(\"collapsedComplexity\");return null!=e?e:t.attributes.get(\"data-semantic-complexity\")},e.prototype.setComplexity=function(t,e,i){return i&&(this.options.identifyCollapsible&&(e=this.collapse.check(t,e)),t.attributes.set(\"data-semantic-complexity\",e)),e},e.prototype.childrenComplexity=function(e){var i,o;t.prototype.visitDefault.call(this,e,!0);var r=0;try{for(var s=n(e.childNodes),l=s.next();!l.done;l=s.next()){var a=l.value;r+=this.getComplexity(a)}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return e.childNodes.length>1&&(r+=e.childNodes.length*this.complexity.child),r},e.OPTIONS={identifyCollapsible:!0,makeCollapsible:!0,Collapse:l.Collapse},e}(s.MmlVisitor);e.ComplexityVisitor=c},function(t,e,i){\"use strict\";var o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Collapse=void 0;var r=function(){function t(e){var i=this;this.cutoff={identifier:3,number:3,text:10,infixop:15,relseq:15,multirel:15,fenced:18,bigop:20,integral:20,fraction:12,sqrt:9,root:12,vector:15,matrix:15,cases:15,superscript:9,subscript:9,subsup:9,punctuated:{endpunct:t.NOCOLLAPSE,startpunct:t.NOCOLLAPSE,value:12}},this.marker={identifier:\"x\",number:\"#\",text:\"...\",appl:{\"limit function\":\"lim\",value:\"f()\"},fraction:\"/\",sqrt:\"\\u221a\",root:\"\\u221a\",superscript:\"\\u25fd\\u02d9\",subscript:\"\\u25fd.\",subsup:\"\\u25fd:\",vector:{binomial:\"(:)\",determinant:\"|:|\",value:\"\\u27e8:\\u27e9\"},matrix:{squarematrix:\"[::]\",rowvector:\"\\u27e8\\u22ef\\u27e9\",columnvector:\"\\u27e8\\u22ee\\u27e9\",determinant:\"|::|\",value:\"(::)\"},cases:\"{:\",infixop:{addition:\"+\",subtraction:\"\\u2212\",multiplication:\"\\u22c5\",implicit:\"\\u22c5\",value:\"+\"},punctuated:{text:\"...\",value:\",\"}},this.collapse=new Map([[\"fenced\",function(t,e){return(e=i.uncollapseChild(e,t,1))>i.cutoff.fenced&&\"leftright\"===t.attributes.get(\"data-semantic-role\")&&(e=i.recordCollapse(t,e,i.getText(t.childNodes[0])+i.getText(t.childNodes[t.childNodes.length-1]))),e}],[\"appl\",function(t,e){if(i.canUncollapse(t,2,2)){e=i.complexity.visitNode(t,!1);var o=i.marker.appl,r=o[t.attributes.get(\"data-semantic-role\")]||o.value;e=i.recordCollapse(t,e,r)}return e}],[\"sqrt\",function(t,e){return(e=i.uncollapseChild(e,t,0))>i.cutoff.sqrt&&(e=i.recordCollapse(t,e,i.marker.sqrt)),e}],[\"root\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.sqrt&&(e=i.recordCollapse(t,e,i.marker.sqrt)),e}],[\"enclose\",function(t,e){if(1===i.splitAttribute(t,\"children\").length){var o=i.canUncollapse(t,1);if(o){var r=o.getProperty(\"collapse-marker\");i.unrecordCollapse(o),e=i.recordCollapse(t,i.complexity.visitNode(t,!1),r)}}return e}],[\"bigop\",function(t,e){if(e>i.cutoff.bigop||!t.isKind(\"mo\")){var o=i.splitAttribute(t,\"content\").pop(),r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"integral\",function(t,e){if(e>i.cutoff.integral||!t.isKind(\"mo\")){var o=i.splitAttribute(t,\"content\").pop(),r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"relseq\",function(t,e){if(e>i.cutoff.relseq){var o=i.splitAttribute(t,\"content\")[0],r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"multirel\",function(t,e){if(e>i.cutoff.relseq){var o=i.splitAttribute(t,\"content\")[0],r=i.findChildText(t,o)+\"\\u22ef\";e=i.recordCollapse(t,e,r)}return e}],[\"superscript\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.superscript&&(e=i.recordCollapse(t,e,i.marker.superscript)),e}],[\"subscript\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.subscript&&(e=i.recordCollapse(t,e,i.marker.subscript)),e}],[\"subsup\",function(t,e){return(e=i.uncollapseChild(e,t,0,3))>i.cutoff.subsup&&(e=i.recordCollapse(t,e,i.marker.subsup)),e}]]),this.idCount=0,this.complexity=e}return t.prototype.check=function(t,e){var i=t.attributes.get(\"data-semantic-type\");return this.collapse.has(i)?this.collapse.get(i).call(this,t,e):this.cutoff.hasOwnProperty(i)?this.defaultCheck(t,e,i):e},t.prototype.defaultCheck=function(t,e,i){var o=t.attributes.get(\"data-semantic-role\"),r=this.cutoff[i];if(e>(\"number\"==typeof r?r:r[o]||r.value)){var n=this.marker[i]||\"??\",s=\"string\"==typeof n?n:n[o]||n.value;e=this.recordCollapse(t,e,s)}return e},t.prototype.recordCollapse=function(t,e,i){return i=\"\\u25c2\"+i+\"\\u25b8\",t.setProperty(\"collapse-marker\",i),t.setProperty(\"collapse-complexity\",e),i.length*this.complexity.complexity.text},t.prototype.unrecordCollapse=function(t){var e=t.getProperty(\"collapse-complexity\");null!=e&&(t.attributes.set(\"data-semantic-complexity\",e),t.removeProperty(\"collapse-complexity\"),t.removeProperty(\"collapse-marker\"))},t.prototype.canUncollapse=function(t,e,i){if(void 0===i&&(i=1),this.splitAttribute(t,\"children\").length===i){var o=1===t.childNodes.length&&t.childNodes[0].isInferred?t.childNodes[0]:t;if(o&&o.childNodes[e]){var r=o.childNodes[e];if(r.getProperty(\"collapse-marker\"))return r}}return null},t.prototype.uncollapseChild=function(t,e,i,o){void 0===o&&(o=1);var r=this.canUncollapse(e,i,o);return r&&(this.unrecordCollapse(r),r.parent!==e&&r.parent.attributes.set(\"data-semantic-complexity\",void 0),t=this.complexity.visitNode(e,!1)),t},t.prototype.splitAttribute=function(t,e){return(t.attributes.get(\"data-semantic-\"+e)||\"\").split(/,/)},t.prototype.getText=function(t){var e=this;return t.isToken?t.getText():t.childNodes.map((function(t){return e.getText(t)})).join(\"\")},t.prototype.findChildText=function(t,e){var i=this.findChild(t,e);return this.getText(i.coreMO()||i)},t.prototype.findChild=function(t,e){var i,r;if(!t||t.attributes.get(\"data-semantic-id\")===e)return t;if(!t.isToken)try{for(var n=o(t.childNodes),s=n.next();!s.done;s=n.next()){var l=s.value,a=this.findChild(l,e);if(a)return a}}catch(t){i={error:t}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return null},t.prototype.makeCollapse=function(t){var e=[];t.walkTree((function(t){t.getProperty(\"collapse-marker\")&&e.push(t)})),this.makeActions(e)},t.prototype.makeActions=function(t){var e,i;try{for(var r=o(t),n=r.next();!n.done;n=r.next()){var s=n.value;this.makeAction(s)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(e)throw e.error}}},t.prototype.makeId=function(){return\"mjx-collapse-\"+this.idCount++},t.prototype.makeAction=function(t){t.isKind(\"math\")&&(t=this.addMrow(t));var e=this.complexity.factory,i=t.getProperty(\"collapse-marker\"),o=t.parent,r=e.create(\"maction\",{actiontype:\"toggle\",selection:2,\"data-collapsible\":!0,id:this.makeId(),\"data-semantic-complexity\":t.attributes.get(\"data-semantic-complexity\")},[e.create(\"mtext\",{mathcolor:\"blue\"},[e.create(\"text\").setText(i)])]);r.inheritAttributesFrom(t),t.attributes.set(\"data-semantic-complexity\",t.getProperty(\"collapse-complexity\")),t.removeProperty(\"collapse-marker\"),t.removeProperty(\"collapse-complexity\"),o.replaceChild(r,t),r.appendChild(t)},t.prototype.addMrow=function(t){var e,i,r=this.complexity.factory.create(\"mrow\",null,t.childNodes[0].childNodes);t.childNodes[0].setChildren([r]);var n=t.attributes.getAllAttributes();try{for(var s=o(Object.keys(n)),l=s.next();!l.done;l=s.next()){var a=l.value;\"data-semantic-\"===a.substr(0,14)&&(r.attributes.set(a,n[a]),delete n[a])}}catch(t){e={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(e)throw e.error}}return r.setProperty(\"collapse-marker\",t.getProperty(\"collapse-marker\")),r.setProperty(\"collapse-complexity\",t.getProperty(\"collapse-complexity\")),t.removeProperty(\"collapse-marker\"),t.removeProperty(\"collapse-complexity\"),r},t.NOCOLLAPSE=1e7,t}();e.Collapse=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=MathJax._.a11y.sre.sreReady},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=MathJax._.core.MmlTree.MmlVisitor.MmlVisitor},function(t,e,i){\"use strict\";i.r(e);var o=i(0),r=i(1),n=i(4),s=i(3),l=i(2),a=i(6);Object(o.combineWithMathJax)({_:{a11y:{complexity_ts:r,complexity:{collapse:n,visitor:s},\"semantic-enrich\":l,sre:a}}}),MathJax.startup&&(MathJax.startup.extendHandler((function(t){return Object(r.ComplexityHandler)(t)})),Object(o.combineDefaults)(MathJax.config,\"options\",MathJax.config[\"a11y/complexity\"]||{}))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/a11y/explorer.js",
    "content": "!function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=14)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=MathJax._.a11y.sre.sreReady},function(t,e,o){\"use strict\";var r=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],r=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractExplorer=void 0,o(0);var a=function(){function t(t,e,o){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];this.document=t,this.region=e,this.node=o,this.stoppable=!0,this.events=[],this.highlighter=this.getHighlighter(),this._active=!1}return t.stopEvent=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopImmediatePropagation?t.stopImmediatePropagation():t.stopPropagation&&t.stopPropagation(),t.cancelBubble=!0},t.create=function(t,e,o){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var a=new(this.bind.apply(this,n([void 0,t,e,o],r)));return a},t.prototype.Events=function(){return this.events},Object.defineProperty(t.prototype,\"active\",{get:function(){return this._active},set:function(t){this._active=t},enumerable:!1,configurable:!0}),t.prototype.Attach=function(){this.AddEvents()},t.prototype.Detach=function(){this.RemoveEvents()},t.prototype.Start=function(){this.highlighter=this.getHighlighter(),this.active=!0},t.prototype.Stop=function(){this.active&&(this.region.Clear(),this.region.Hide(),this.active=!1)},t.prototype.AddEvents=function(){var t,e;try{for(var o=i(this.events),n=o.next();!n.done;n=o.next()){var a=r(n.value,2),s=a[0],l=a[1];this.node.addEventListener(s,l)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}},t.prototype.RemoveEvents=function(){var t,e;try{for(var o=i(this.events),n=o.next();!n.done;n=o.next()){var a=r(n.value,2),s=a[0],l=a[1];this.node.removeEventListener(s,l)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}},t.prototype.Update=function(t){void 0===t&&(t=!1)},t.prototype.getHighlighter=function(){var t=this.document.options.a11y,e={color:t.foregroundColor.toLowerCase(),alpha:t.foregroundOpacity/100},o={color:t.backgroundColor.toLowerCase(),alpha:t.backgroundOpacity/100};return sre.HighlighterFactory.highlighter(o,e,{renderer:this.document.outputJax.name,browser:\"v3\"})},t.prototype.stopEvent=function(e){this.stoppable&&t.stopEvent(e)},t}();e.AbstractExplorer=a},function(t,e,o){\"use strict\";var r,n,i,a,s=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HoverRegion=e.LiveRegion=e.ToolTip=e.StringRegion=e.DummyRegion=e.AbstractRegion=void 0;var l=o(13);o(0);var c=function(){function t(t){this.document=t,this.CLASS=this.constructor,this.AddStyles(),this.AddElement()}return t.prototype.AddStyles=function(){if(!this.CLASS.styleAdded){var t=this.document.adaptor.node(\"style\");t.innerHTML=this.CLASS.style.cssText,this.document.adaptor.head(this.document.adaptor.document).appendChild(t),this.CLASS.styleAdded=!0}},t.prototype.AddElement=function(){var t=this.document.adaptor.node(\"div\");t.classList.add(this.CLASS.className),t.style.backgroundColor=\"white\",this.div=t,this.inner=this.document.adaptor.node(\"div\"),this.div.appendChild(this.inner),this.document.adaptor.body(this.document.adaptor.document).appendChild(this.div)},t.prototype.Show=function(t,e){this.position(t),this.highlight(e),this.div.classList.add(this.CLASS.className+\"_Show\")},t.prototype.Hide=function(){this.div.classList.remove(this.CLASS.className+\"_Show\")},t.prototype.stackRegions=function(t){for(var e=t.getBoundingClientRect(),o=0,r=Number.POSITIVE_INFINITY,n=this.document.adaptor.document.getElementsByClassName(this.CLASS.className+\"_Show\"),i=0,a=void 0;a=n[i];i++)a!==this.div&&(o=Math.max(a.getBoundingClientRect().bottom,o),r=Math.min(a.getBoundingClientRect().left,r));var s=(o||e.bottom+10)+window.pageYOffset,l=(r<Number.POSITIVE_INFINITY?r:e.left)+window.pageXOffset;this.div.style.top=s+\"px\",this.div.style.left=l+\"px\"},t.styleAdded=!1,t}();e.AbstractRegion=c;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.Clear=function(){},e.prototype.Update=function(){},e.prototype.Hide=function(){},e.prototype.Show=function(){},e.prototype.AddElement=function(){},e.prototype.AddStyles=function(){},e.prototype.position=function(){},e.prototype.highlight=function(t){},e}(c);e.DummyRegion=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.Clear=function(){this.Update(\"\"),this.inner.style.top=\"\",this.inner.style.backgroundColor=\"\"},e.prototype.Update=function(t){this.inner.textContent=\"\",this.inner.textContent=t},e.prototype.position=function(t){this.stackRegions(t)},e.prototype.highlight=function(t){var e=t.colorString();this.inner.style.backgroundColor=e.background,this.inner.style.color=e.foreground},e}(c);e.StringRegion=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.className=\"MJX_ToolTip\",e.style=new l.CssStyles(((n={})[\".\"+e.className]={position:\"absolute\",display:\"inline-block\",height:\"1px\",width:\"1px\"},n[\".\"+e.className+\"_Show\"]={width:\"auto\",height:\"auto\",opacity:1,\"text-align\":\"center\",\"border-radius\":\"6px\",padding:\"0px 0px\",\"border-bottom\":\"1px dotted black\",position:\"absolute\",\"z-index\":202},n)),e}(u);e.ToolTip=p;var d=function(t){function e(e){var o=t.call(this,e)||this;return o.document=e,o.div.setAttribute(\"aria-live\",\"assertive\"),o}return s(e,t),e.className=\"MJX_LiveRegion\",e.style=new l.CssStyles(((i={})[\".\"+e.className]={position:\"absolute\",top:\"0\",height:\"1px\",width:\"1px\",padding:\"1px\",overflow:\"hidden\"},i[\".\"+e.className+\"_Show\"]={top:\"0\",position:\"absolute\",width:\"auto\",height:\"auto\",padding:\"0px 0px\",opacity:1,\"z-index\":\"202\",left:0,right:0,margin:\"0 auto\",\"background-color\":\"rgba(0, 0, 255, 0.2)\",\"box-shadow\":\"0px 10px 20px #888\",border:\"2px solid #CCCCCC\"},i)),e}(u);e.LiveRegion=d;var f=function(t){function e(e){var o=t.call(this,e)||this;return o.document=e,o.inner.style.lineHeight=\"0\",o}return s(e,t),e.prototype.position=function(t){var e,o=t.getBoundingClientRect(),r=this.div.getBoundingClientRect(),n=o.left+o.width/2-r.width/2;switch(n=n<0?0:n,n+=window.pageXOffset,this.document.options.a11y.align){case\"top\":e=o.top-r.height-10;break;case\"bottom\":e=o.bottom+10;break;case\"center\":default:e=o.top+o.height/2-r.height/2}e=(e+=window.pageYOffset)<0?0:e,this.div.style.top=e+\"px\",this.div.style.left=n+\"px\"},e.prototype.highlight=function(t){if(!this.inner.firstChild||this.inner.firstChild.hasAttribute(\"sre-highlight\")){var e=t.colorString();this.inner.style.backgroundColor=e.background,this.inner.style.color=e.foreground}},e.prototype.Show=function(e,o){this.div.style.fontSize=this.document.options.a11y.magnify,this.Update(e),t.prototype.Show.call(this,e,o)},e.prototype.Clear=function(){this.inner.textContent=\"\",this.inner.style.top=\"\",this.inner.style.backgroundColor=\"\"},e.prototype.Update=function(t){this.Clear();var e=this.cloneNode(t);this.inner.appendChild(e)},e.prototype.cloneNode=function(t){var e=t.cloneNode(!0);if(\"MJX-CONTAINER\"!==e.nodeName){\"g\"!==e.nodeName&&(e.style.marginLeft=e.style.marginRight=\"0\");for(var o=t;o&&\"MJX-CONTAINER\"!==o.nodeName;)o=o.parentNode;if(\"MJX-MATH\"!==e.nodeName&&\"svg\"!==e.nodeName)if(\"svg\"===(e=o.firstChild.cloneNode(!1).appendChild(e).parentNode).nodeName){e.firstChild.setAttribute(\"transform\",\"matrix(1 0 0 -1 0 0)\");var r=parseFloat(e.getAttribute(\"viewBox\").split(/ /)[2]),n=parseFloat(e.getAttribute(\"width\")),i=t.getBBox(),a=i.x,s=i.y,l=i.width,c=i.height;e.setAttribute(\"viewBox\",[a,-(s+c),l,c].join(\" \")),e.removeAttribute(\"style\"),e.setAttribute(\"width\",n/r*l+\"ex\"),e.setAttribute(\"height\",n/r*c+\"ex\"),o.setAttribute(\"sre-highlight\",\"false\")}(e=o.cloneNode(!1).appendChild(e).parentNode).style.margin=\"0\"}return e},e.className=\"MJX_HoverRegion\",e.style=new l.CssStyles(((a={})[\".\"+e.className]={position:\"absolute\",height:\"1px\",width:\"1px\",padding:\"1px\",overflow:\"hidden\"},a[\".\"+e.className+\"_Show\"]={position:\"absolute\",width:\"max-content\",height:\"auto\",padding:\"0px 0px\",opacity:1,\"z-index\":\"202\",margin:\"0 auto\",\"background-color\":\"rgba(0, 0, 255, 0.2)\",\"box-shadow\":\"0px 10px 20px #888\",border:\"2px solid #CCCCCC\"},a)),e}(c);e.HoverRegion=f},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,o=1,r=arguments.length;o<r;o++)for(var n in e=arguments[o])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],r=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a},l=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.setA11yOption=e.setA11yOptions=e.ExplorerHandler=e.ExplorerMathDocumentMixin=e.ExplorerMathItemMixin=void 0;var c=o(8),h=o(9),u=o(10),p=o(11),d=o(12),f=o(5),y=o(6),v=o(7),g=o(2);function m(t,e){return function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.explorers={},e.attached=[],e.restart=!1,e.refocus=!1,e.savedId=null,e}return n(o,t),o.prototype.explorable=function(t,o){if(void 0===o&&(o=!1),!(this.state()>=c.STATE.EXPLORER)){if(!this.isEscaped&&(t.options.enableExplorer||o)){var r=this.typesetRoot,n=e(this.root);this.savedId&&(this.typesetRoot.setAttribute(\"sre-explorer-id\",this.savedId),this.savedId=null),this.explorers=function(t,e,o){var r,n,i={};try{for(var s=a(Object.keys(_)),l=s.next();!l.done;l=s.next()){var c=l.value;i[c]=_[c](t,e,o)}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return i}(t,r,n),this.attachExplorers(t)}this.state(c.STATE.EXPLORER)}},o.prototype.attachExplorers=function(t){var e,o;this.attached=[];try{for(var r=a(Object.keys(this.explorers)),n=r.next();!n.done;n=r.next()){var i=n.value,s=this.explorers[i];t.options.a11y[i]?(s.Attach(),this.attached.push(s)):s.Detach()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(o=r.return)&&o.call(r)}finally{if(e)throw e.error}}this.addExplorers(this.attached)},o.prototype.rerender=function(e,o){var r,n;void 0===o&&(o=c.STATE.RERENDER),this.savedId=this.typesetRoot.getAttribute(\"sre-explorer-id\"),this.refocus=window.document.activeElement===this.typesetRoot;try{for(var i=a(this.attached),s=i.next();!s.done;s=i.next()){var l=s.value;l.active&&(this.restart=!0,l.Stop())}}catch(t){r={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}t.prototype.rerender.call(this,e,o)},o.prototype.updateDocument=function(e){t.prototype.updateDocument.call(this,e),this.refocus&&this.typesetRoot.focus(),this.restart&&this.attached.forEach((function(t){return t.Start()})),this.refocus=this.restart=!1},o.prototype.addExplorers=function(t){var e,o;if(!(t.length<=1)){var r=null;try{for(var n=a(this.attached),i=n.next();!i.done;i=n.next()){var s=i.value;s instanceof f.AbstractKeyExplorer&&(s.stoppable=!1,r=s)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(e)throw e.error}}r&&(r.stoppable=!0)}},o}(t)}function b(t){var e;return(e=function(t){function e(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];var r=t.apply(this,l(e))||this,n=r.constructor.ProcessBits;n.has(\"explorer\")||n.allocate(\"explorer\");var i=new p.SerializedMmlVisitor(r.mmlFactory),a=function(t){return i.visitTree(t)};return r.options.MathItem=m(r.options.MathItem,a),r.explorerRegions=x(r),r}return n(e,t),e.prototype.explorable=function(){var t,e;if(!this.processed.isSet(\"explorer\")){if(this.options.enableExplorer)try{for(var o=a(this.math),r=o.next();!r.done;r=o.next()){r.value.explorable(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}this.processed.set(\"explorer\")}return this},e.prototype.state=function(e,o){return void 0===o&&(o=!1),t.prototype.state.call(this,e,o),e<c.STATE.EXPLORER&&this.processed.clear(\"explorer\"),this},e}(t)).OPTIONS=i(i({},t.OPTIONS),{enrichSpeech:\"shallow\",enableExplorer:!0,renderActions:u.expandable(i(i({},t.OPTIONS.renderActions),{explorable:[c.STATE.EXPLORER]})),a11y:{align:\"top\",backgroundColor:\"Blue\",backgroundOpacity:20,braille:!1,flame:!1,foregroundColor:\"Black\",foregroundOpacity:100,highlight:\"None\",hover:!1,infoPrefix:!1,infoRole:!1,infoType:!1,keyMagnifier:!1,locale:\"en\",magnification:\"None\",magnify:\"400%\",mouseMagnifier:!1,speech:!0,speechRules:\"mathspeak-default\",subtitles:!0,treeColoring:!1,viewBraille:!1}}),e}function x(t){return{speechRegion:new g.LiveRegion(t),brailleRegion:new g.LiveRegion(t),magnifier:new g.HoverRegion(t),tooltip1:new g.ToolTip(t),tooltip2:new g.ToolTip(t),tooltip3:new g.ToolTip(t)}}c.newState(\"EXPLORER\",160),e.ExplorerMathItemMixin=m,e.ExplorerMathDocumentMixin=b,e.ExplorerHandler=function(t,e){return void 0===e&&(e=null),!t.documentClass.prototype.enrich&&e&&(t=h.EnrichHandler(t,e)),t.documentClass=b(t.documentClass),t};var _={speech:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=(o=f.SpeechExplorer).create.apply(o,l([t,t.explorerRegions.speechRegion,e],r)),a=s(t.options.a11y.speechRules.split(\"-\"),2),c=a[0],h=a[1];return i.speechGenerator.setOptions({locale:t.options.a11y.locale,domain:c,style:h,modality:\"speech\",cache:!1}),i.showRegion=\"subtitles\",i},braille:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=(o=f.SpeechExplorer).create.apply(o,l([t,t.explorerRegions.brailleRegion,e],r));return i.speechGenerator.setOptions({locale:\"nemeth\",domain:\"default\",style:\"default\",modality:\"braille\"}),i.showRegion=\"viewBraille\",i},keyMagnifier:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return(o=f.Magnifier).create.apply(o,l([t,t.explorerRegions.magnifier,e],r))},mouseMagnifier:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ContentHoverer.create(t,t.explorerRegions.magnifier,e,(function(t){return t.hasAttribute(\"data-semantic-type\")}),(function(t){return t}))},hover:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.FlameHoverer.create(t,null,e)},infoType:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip1,e,(function(t){return t.hasAttribute(\"data-semantic-type\")}),(function(t){return t.getAttribute(\"data-semantic-type\")}))},infoRole:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip2,e,(function(t){return t.hasAttribute(\"data-semantic-role\")}),(function(t){return t.getAttribute(\"data-semantic-role\")}))},infoPrefix:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip3,e,(function(t){return t.hasAttribute(\"data-semantic-prefix\")}),(function(t){return t.getAttribute(\"data-semantic-prefix\")}))},flame:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return v.FlameColorer.create(t,null,e)},treeColoring:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return v.TreeColorer.create.apply(v.TreeColorer,l([t,null,e],o))}};function M(t,e,o){switch(e){case\"magnification\":switch(o){case\"None\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!1,t.options.a11y.mouseMagnifier=!1;break;case\"Keyboard\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!0,t.options.a11y.mouseMagnifier=!1;break;case\"Mouse\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!1,t.options.a11y.mouseMagnifier=!0}break;case\"highlight\":switch(o){case\"None\":t.options.a11y.highlight=o,t.options.a11y.hover=!1,t.options.a11y.flame=!1;break;case\"Hover\":t.options.a11y.highlight=o,t.options.a11y.hover=!0,t.options.a11y.flame=!1;break;case\"Flame\":t.options.a11y.highlight=o,t.options.a11y.hover=!1,t.options.a11y.flame=!0}break;default:t.options.a11y[e]=o}}e.setA11yOptions=function(t,e){var o,r;for(var n in e)void 0!==t.options.a11y[n]&&M(t,n,e[n]);try{for(var i=a(t.math),s=i.next();!s.done;s=i.next()){s.value.attachExplorers(t)}}catch(t){o={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}},e.setA11yOption=M;var S={},O=function(t,e){var o,r,n=sre.ClearspeakPreferences.getLocalePreferences()[e];if(!n){var i=t.findID(\"Accessibility\",\"Speech\",\"Clearspeak\");return i&&i.disable(),null}!function(t,e){var o,r,n=t.pool.lookup(\"speechRules\"),i=function(e){if(S[e])return\"continue\";t.factory.get(\"variable\")(t.factory,{name:\"csprf_\"+e,setter:function(t){S[e]=t,n.setValue(\"clearspeak-\"+sre.ClearspeakPreferences.addPreference(sre.Engine.DOMAIN_TO_STYLES.clearspeak,e,t))},getter:function(){return S[e]||\"Auto\"}},t.pool)};try{for(var s=a(e),l=s.next();!l.done;l=s.next())i(l.value)}catch(t){o={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(o)throw o.error}}}(t,Object.keys(n));var s=[],l=function(t){s.push({title:t,values:n[t].map((function(e){return e.replace(RegExp(\"^\"+t+\"_\"),\"\")})),variable:\"csprf_\"+t})};try{for(var c=a(Object.getOwnPropertyNames(n)),h=c.next();!h.done;h=c.next()){l(h.value)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(r=c.return)&&r.call(c)}finally{if(o)throw o.error}}var u=t.factory.get(\"selectionBox\")(t.factory,{title:\"Clearspeak Preferences\",signature:\"\",order:\"alphabetic\",grid:\"square\",selections:s},t);return{type:\"command\",id:\"ClearspeakPreferences\",content:\"Select Preferences\",action:function(){return u.post(0,0)}}};d.MJContextMenu.DynamicSubmenus.set(\"Clearspeak\",(function(t,e){var o=t.pool.lookup(\"locale\").getValue(),r=O(t,o),n=sre.ClearspeakPreferences.smartPreferences(t.mathItem,o);return r&&n.splice(2,0,r),t.factory.get(\"subMenu\")(t.factory,{items:n,id:\"Clearspeak\"},e)}));var w={de:\"German\",en:\"English\",es:\"Spanish\",fr:\"French\"};d.MJContextMenu.DynamicSubmenus.set(\"A11yLanguage\",(function(t,e){var o,r,n=[];try{for(var i=a(sre.Variables.LOCALES),s=i.next();!s.done;s=i.next()){var l=s.value;\"nemeth\"!==l&&n.push({type:\"radio\",id:l,content:w[l]||l,variable:\"locale\"})}}catch(t){o={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return n.sort((function(t,e){return t.content.localeCompare(e.content,\"en\")})),t.factory.get(\"subMenu\")(t.factory,{items:n,id:\"Language\"},e)}))},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Magnifier=e.SpeechExplorer=e.AbstractKeyExplorer=void 0;var a=o(1),s=o(0),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.events=t.prototype.Events.call(e).concat([[\"keydown\",e.KeyDown.bind(e)],[\"focusin\",e.FocusIn.bind(e)],[\"focusout\",e.FocusOut.bind(e)]]),e.oldIndex=null,e}return n(e,t),e.prototype.FocusIn=function(t){},e.prototype.FocusOut=function(t){this.Stop()},e.prototype.Update=function(t){void 0===t&&(t=!1),(this.active||t)&&(this.highlighter.unhighlight(),this.highlighter.highlight(this.walker.getFocus(!0).getNodes()))},e.prototype.Attach=function(){t.prototype.Attach.call(this),this.oldIndex=this.node.tabIndex,this.node.tabIndex=1,this.node.setAttribute(\"role\",\"application\")},e.prototype.Detach=function(){this.node.tabIndex=this.oldIndex,this.oldIndex=null,this.node.removeAttribute(\"role\"),t.prototype.Detach.call(this)},e.prototype.Stop=function(){this.active&&(this.highlighter.unhighlight(),this.walker.deactivate()),t.prototype.Stop.call(this)},e}(a.AbstractExplorer);e.AbstractKeyExplorer=l;var c=function(t){function e(e,o,r,n){var i=t.call(this,e,o,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.showRegion=\"subtitles\",i.init=!1,i.restarted=!1,i.initWalker(),i}return n(e,t),e.prototype.Start=function(){var e=this,o=this.getOptions();if(!this.init)return this.init=!0,void s.sreReady().then((function(){SRE.engineSetup().locale!==o.locale&&SRE.setupEngine({locale:o.locale}),s.sreReady().then((function(){e.Speech(e.walker),e.Start()}))})).catch((function(t){return console.log(t.message)}));t.prototype.Start.call(this),this.speechGenerator=sre.SpeechGeneratorFactory.generator(\"Direct\"),this.speechGenerator.setOptions(o),this.walker=sre.WalkerFactory.walker(\"table\",this.node,this.speechGenerator,this.highlighter,this.mml),this.walker.activate(),this.Update(),this.document.options.a11y[this.showRegion]&&this.region.Show(this.node,this.highlighter),this.restarted=!0},e.prototype.Update=function(e){void 0===e&&(e=!1),t.prototype.Update.call(this,e),this.region.Update(this.walker.speech());var o=this.speechGenerator.getOptions();\"speech\"===o.modality&&(this.document.options.a11y.speechRules=o.domain+\"-\"+o.style)},e.prototype.Speech=function(t){t.speech(),this.node.setAttribute(\"hasspeech\",\"true\"),this.Update(),this.restarted&&this.document.options.a11y[this.showRegion]&&this.region.Show(this.node,this.highlighter)},e.prototype.KeyDown=function(t){var e=t.keyCode;return 27===e?(this.Stop(),void this.stopEvent(t)):this.active?(this.Move(e),void this.stopEvent(t)):void((32===e&&t.shiftKey||13===e)&&(this.Start(),this.stopEvent(t)))},e.prototype.Move=function(t){this.walker.move(t),this.Update()},e.prototype.initWalker=function(){this.speechGenerator=sre.SpeechGeneratorFactory.generator(\"Tree\");var t=sre.WalkerFactory.walker(\"dummy\",this.node,this.speechGenerator,this.highlighter,this.mml);this.walker=t},e.prototype.getOptions=function(){var t=this.speechGenerator.getOptions(),e=i(this.document.options.a11y.speechRules.split(\"-\"),2),o=e[0],r=e[1];return\"speech\"!==t.modality||t.locale===this.document.options.a11y.locale&&t.domain===o&&t.style===r||(t.domain=o,t.style=r,t.locale=this.document.options.a11y.locale,this.walker.update(t)),t},e}(l);e.SpeechExplorer=c;var h=function(t){function e(e,o,r,n){var i=t.call(this,e,o,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.walker=sre.WalkerFactory.walker(\"table\",i.node,sre.SpeechGeneratorFactory.generator(\"Dummy\"),i.highlighter,i.mml),i}return n(e,t),e.prototype.Update=function(e){void 0===e&&(e=!1),t.prototype.Update.call(this,e),this.showFocus()},e.prototype.Start=function(){t.prototype.Start.call(this),this.region.Show(this.node,this.highlighter),this.walker.activate(),this.Update()},e.prototype.showFocus=function(){var t=this.walker.getFocus().getNodes()[0];this.region.Show(t,this.highlighter)},e.prototype.Move=function(t){this.walker.move(t)&&this.Update()},e.prototype.KeyDown=function(t){var e=t.keyCode;return 27===e?(this.Stop(),void this.stopEvent(t)):this.active&&13!==e?(this.Move(e),void this.stopEvent(t)):void((32===e&&t.shiftKey||13===e)&&(this.Start(),this.stopEvent(t)))},e}(l);e.Magnifier=h},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FlameHoverer=e.ContentHoverer=e.ValueHoverer=e.Hoverer=e.AbstractMouseExplorer=void 0;var a=o(2),s=o(1);o(0);var l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.events=t.prototype.Events.call(e).concat([[\"mouseover\",e.MouseOver.bind(e)],[\"mouseout\",e.MouseOut.bind(e)]]),e}return n(e,t),e.prototype.MouseOver=function(t){this.Start()},e.prototype.MouseOut=function(t){this.Stop()},e}(s.AbstractExplorer);e.AbstractMouseExplorer=l;var c=function(t){function e(e,o,r,n,i){var a=t.call(this,e,o,r)||this;return a.document=e,a.region=o,a.node=r,a.nodeQuery=n,a.nodeAccess=i,a}return n(e,t),e.prototype.MouseOut=function(e){e.clientX===this.coord[0]&&e.clientY===this.coord[1]||(this.highlighter.unhighlight(),this.region.Hide(),t.prototype.MouseOut.call(this,e))},e.prototype.MouseOver=function(e){t.prototype.MouseOver.call(this,e);var o=e.target;this.coord=[e.clientX,e.clientY];var r=i(this.getNode(o),2),n=r[0],a=r[1];n&&(this.highlighter.unhighlight(),this.highlighter.highlight([n]),this.region.Update(a),this.region.Show(n,this.highlighter))},e.prototype.getNode=function(t){for(var e=t;t&&t!==this.node;){if(this.nodeQuery(t))return[t,this.nodeAccess(t)];t=t.parentNode}for(t=e;t;){if(this.nodeQuery(t))return[t,this.nodeAccess(t)];var o=t.childNodes[0];t=o&&\"defs\"===o.tagName?t.childNodes[1]:o}return[null,null]},e}(l);e.Hoverer=c;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(c);e.ValueHoverer=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(c);e.ContentHoverer=u;var p=function(t){function e(e,o,r){var n=t.call(this,e,new a.DummyRegion(e),r,(function(t){return n.highlighter.isMactionNode(t)}),(function(){}))||this;return n.document=e,n.node=r,n}return n(e,t),e}(c);e.FlameHoverer=p},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TreeColorer=e.FlameColorer=e.AbstractTreeExplorer=void 0;var i=o(1);o(0);var a=function(t){function e(e,o,r,n){var i=t.call(this,e,null,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.stoppable=!1,i}return n(e,t),e.prototype.Attach=function(){t.prototype.Attach.call(this),this.Start()},e.prototype.Detach=function(){this.Stop(),t.prototype.Detach.call(this)},e}(i.AbstractExplorer);e.AbstractTreeExplorer=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.Start=function(){this.active||(this.active=!0,this.highlighter.highlightAll(this.node))},e.prototype.Stop=function(){this.active&&this.highlighter.unhighlightAll(this.node),this.active=!1},e}(a);e.FlameColorer=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.Start=function(){if(!this.active){this.active=!0;var t=sre.SpeechGeneratorFactory.generator(\"Color\");this.node.hasAttribute(\"hasforegroundcolor\")||(t.generateSpeech(this.node,this.mml),this.node.setAttribute(\"hasforegroundcolor\",\"true\")),this.highlighter.colorizeAll(this.node)}},e.prototype.Stop=function(){this.active&&this.highlighter.uncolorizeAll(this.node),this.active=!1},e}(a);e.TreeColorer=l},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichedMathItemMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathItemMixin,e.EnrichedMathDocumentMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathDocumentMixin,e.EnrichHandler=MathJax._.a11y[\"semantic-enrich\"].EnrichHandler},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MJContextMenu=MathJax._.ui.menu.MJContextMenu.MJContextMenu},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=MathJax._.util.StyleList.CssStyles},function(t,e,o){\"use strict\";o.r(e);var r=o(4),n=o(3),i=o(1),a=o(5),s=o(6),l=o(2),c=o(7),h=o(0);Object(r.combineWithMathJax)({_:{a11y:{explorer_ts:n,explorer:{Explorer:i,KeyExplorer:a,MouseExplorer:s,Region:l,TreeExplorer:c},sre:h}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(n.ExplorerHandler)(t)}))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/a11y/semantic-enrich.js",
    "content": "!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=void 0;var r=n(8),i=\"undefined\"==typeof window?\"./a11y/sre-node.js\":\"../../../speech-rule-engine/lib/sre_browser.js\",a=\"undefined\"==typeof sre?r.asyncLoad(i):Promise.resolve();e.sreReady=function(){return new Promise((function(t,e){a.then((function(){var n=(new Date).getTime(),r=function(){sre.Engine.isReady()?t():(new Date).getTime()-n<2e4?setTimeout(r,100):e(\"Timed out waiting for Speech-Rule-Engine\")};r()})).catch((function(t){return e(t.message||t)}))}))}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,n){\"use strict\";var r,i=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),a=this&&this.__assign||function(){return(a=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,a=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o},c=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichHandler=e.EnrichedMathDocumentMixin=e.EnrichedMathItemMixin=void 0;var l=n(4),u=n(5),h=n(6),p=n(7),f=n(0),d=\"none\";function y(t,e,n){return function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r.prototype.serializeMml=function(t){if(\"outerHTML\"in t)return t.outerHTML;if(\"undefined\"!=typeof Element&&\"undefined\"!=typeof window&&t instanceof Element){var e=window.document.createElement(\"div\");return e.appendChild(t),e.innerHTML}return t.toString()},r.prototype.enrich=function(t,r){if(void 0===r&&(r=!1),!(this.state()>=u.STATE.ENRICHED)){if(!this.isEscaped&&(t.options.enableEnrichment||r)){\"undefined\"!=typeof sre&&sre.Engine.isReady()||l.mathjax.retryAfter(f.sreReady()),t.options.enrichSpeech!==d&&(SRE.setupEngine({speech:t.options.enrichSpeech}),d=t.options.enrichSpeech);var i=new t.options.MathItem(\"\",e);i.math=this.serializeMml(SRE.toEnriched(n(this.root))),i.display=this.display,i.compile(t),this.root=i.root,this.inputData.originalMml=i.math}this.state(u.STATE.ENRICHED)}},r.prototype.attachSpeech=function(t){var e,n;if(!(this.state()>=u.STATE.ATTACHSPEECH)){var r=this.root.attributes.get(\"aria-label\")||this.getSpeech(this.root);if(r){var i=t.adaptor,a=this.typesetRoot;i.setAttribute(a,\"aria-label\",r);try{for(var s=o(i.childNodes(a)),c=s.next();!c.done;c=s.next()){var l=c.value;i.setAttribute(l,\"aria-hidden\",\"true\")}}catch(t){e={error:t}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}}this.state(u.STATE.ATTACHSPEECH)}},r.prototype.getSpeech=function(t){var e,n,r=t.attributes;if(!r)return\"\";var i=r.getExplicit(\"data-semantic-speech\");if(!r.getExplicit(\"data-semantic-parent\")&&i)return i;try{for(var a=o(t.childNodes),s=a.next();!s.done;s=a.next()){var c=s.value,l=this.getSpeech(c);if(null!=l)return l}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}return\"\"},r}(t)}function M(t,e){var n;return(n=function(t){function n(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,c(n))||this;e.setMmlFactory(i.mmlFactory);var a=i.constructor.ProcessBits;a.has(\"enriched\")||(a.allocate(\"enriched\"),a.allocate(\"attach-speech\"));var o=new h.SerializedMmlVisitor(i.mmlFactory),s=function(t){return o.visitTree(t)};return i.options.MathItem=y(i.options.MathItem,e,s),i}return i(n,t),n.prototype.attachSpeech=function(){var t,e;if(!this.processed.isSet(\"attach-speech\")){try{for(var n=o(this.math),r=n.next();!r.done;r=n.next()){r.value.attachSpeech(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.processed.set(\"attach-speech\")}return this},n.prototype.enrich=function(){var t,e;if(!this.processed.isSet(\"enriched\")){if(this.options.enableEnrichment)try{for(var n=o(this.math),r=n.next();!r.done;r=n.next()){r.value.enrich(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.processed.set(\"enriched\")}return this},n.prototype.state=function(e,n){return void 0===n&&(n=!1),t.prototype.state.call(this,e,n),e<u.STATE.ENRICHED&&this.processed.clear(\"enriched\"),this},n}(t)).OPTIONS=a(a({},t.OPTIONS),{enableEnrichment:!0,enrichSpeech:\"none\",renderActions:p.expandable(a(a({},t.OPTIONS.renderActions),{enrich:[u.STATE.ENRICHED],attachSpeech:[u.STATE.ATTACHSPEECH]}))}),n}u.newState(\"ENRICHED\",30),u.newState(\"ATTACHSPEECH\",155),e.EnrichedMathItemMixin=y,e.EnrichedMathDocumentMixin=M,e.EnrichHandler=function(t,e){return e.setAdaptor(t.adaptor),t.documentClass=M(t.documentClass,e),t}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathML=MathJax._.input.mathml_ts.MathML},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.asyncLoad=MathJax._.util.AsyncLoad.asyncLoad},function(t,e,n){\"use strict\";n.r(e);var r=n(1),i=n(2),a=n(0);Object(r.combineWithMathJax)({_:{a11y:{\"semantic-enrich\":i,sre:a}}});var o=n(3);MathJax.loader&&Object(r.combineDefaults)(MathJax.config.loader,\"a11y/semantic-enrich\",{checkReady:function(){return Object(a.sreReady)()}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(i.EnrichHandler)(t,new o.MathML)}))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/asciimath.js",
    "content": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,i),a.l=!0,a.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)i.d(n,a,function(e){return t[e]}.bind(null,a));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=16)}([function(t,e,i){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var a in e=arguments[i])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},r=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,s=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(n=s.next()).done;)r.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}return r};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AsciiMath=void 0;var o=i(3),l=i(4),u=i(12),h=i(1),p=function(t){function e(i){var n=this,a=r(u.separateOptions(i,h.FindAsciiMath.OPTIONS,e.OPTIONS),3),s=a[1],o=a[2];return(n=t.call(this,o)||this).findAsciiMath=n.options.FindAsciiMath||new h.FindAsciiMath(s),n}return a(e,t),e.prototype.compile=function(t,e){return l.LegacyAsciiMath.Compile(t.math,t.display)},e.prototype.findMath=function(t){return this.findAsciiMath.findMath(t)},e.NAME=\"AsciiMath\",e.OPTIONS=s(s({},o.AbstractInputJax.OPTIONS),{FindAsciiMath:null}),e}(o.AbstractInputJax);e.AsciiMath=p},function(t,e,i){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,s=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(n=s.next()).done;)r.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}return r};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindAsciiMath=void 0;var r=i(13),o=i(14),l=i(15),u=function(t){function e(e){var i=t.call(this,e)||this;return i.getPatterns(),i}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,i=[];this.end={},e.delimiters.forEach((function(e){return t.addPattern(i,e,!1)})),this.start=new RegExp(i.join(\"|\"),\"g\"),this.hasPatterns=i.length>0},e.prototype.addPattern=function(t,e,i){var n=s(e,2),a=n[0],r=n[1];t.push(o.quotePattern(a)),this.end[a]=[r,i,new RegExp(o.quotePattern(r),\"g\")]},e.prototype.findEnd=function(t,e,i,n){var a=s(n,3),r=a[1],o=a[2],u=o.lastIndex=i.index+i[0].length,h=o.exec(t);return h?l.protoItem(i[0],t.substr(u,h.index-u),h[0],e,i.index,h.index+h[0].length,r):null},e.prototype.findMathInString=function(t,e,i){var n,a;for(this.start.lastIndex=0;n=this.start.exec(i);)(a=this.findEnd(i,e,n,this.end[n[0]]))&&(t.push(a),this.start.lastIndex=a.end.n)},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var i=0,n=t.length;i<n;i++)this.findMathInString(e,i,t[i]);return e},e.OPTIONS={delimiters:[[\"`\",\"`\"]]},e}(r.AbstractFindMath);e.FindAsciiMath=u},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,i){(function(t){MathJax=Object.assign(t.MathJax||{},i(6).MathJax),MathJax.config&&MathJax.config.asciimath&&MathJax.Hub.Config({AsciiMath:MathJax.config.asciimath}),MathJax.Ajax.Preloading(\"[MathJax]/jax/input/AsciiMath/config.js\",\"[MathJax]/jax/input/AsciiMath/jax.js\",\"[MathJax]/jax/element/mml/jax.js\"),i(7),i(8),i(9),i(10);var n=new(0,i(11).MmlFactory);e.LegacyAsciiMath={Compile:function(t,e){var i={type:\"math/asciimath\",innerText:t,MathJax:{}},a=MathJax.InputJax.AsciiMath.Translate(i).root.toMmlNode(n);return a.setInheritedAttributes({},e,0,!1),a},Translate:function(t,e){return this.Compile(t,e)}}}).call(this,i(5))},function(t,e){var i;i=function(){return this}();try{i=i||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(i=window)}t.exports=i},function(t,e){var i,n,a,s,r,o,l={debug:!0},u={MathJax:l},h={},p=null;e.MathJax=l,function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=[],n=function(t){var e=t.constructor;for(var i in e||(e=function(){}),t)\"constructor\"!==i&&t.hasOwnProperty(i)&&(e[i]=t[i]);return e};e.Object=n({constructor:function(){return arguments.callee.Init.call(this,arguments)},Subclass:function(t,e){var n=function(){return arguments.callee.Init.call(this,arguments)};return n.SUPER=this,n.Init=this.Init,n.Subclass=this.Subclass,n.Augment=this.Augment,n.protoFunction=this.protoFunction,n.can=this.can,n.has=this.has,n.isa=this.isa,n.prototype=new this(i),n.prototype.constructor=n,n.Augment(t,e),n},Init:function(t){var e=this;return 1===t.length&&t[0]===i?e:(e instanceof t.callee||(e=new t.callee(i)),e.Init.apply(e,t)||e)},Augment:function(t,e){var i;if(null!=t){for(i in t)t.hasOwnProperty(i)&&this.protoFunction(i,t[i]);t.toString!==this.prototype.toString&&t.toString!=={}.toString&&this.protoFunction(\"toString\",t.toString)}if(null!=e)for(i in e)e.hasOwnProperty(i)&&(this[i]=e[i]);return this},protoFunction:function(t,e){this.prototype[t]=e,\"function\"==typeof e&&(e.SUPER=this.SUPER.prototype)},prototype:{Init:function(){},SUPER:function(t){return t.callee.SUPER},can:function(t){return\"function\"==typeof this[t]},has:function(t){return void 0!==this[t]},isa:function(t){return t instanceof Object&&this instanceof t}},can:function(t){return this.prototype.can.call(this,t)},has:function(t){return this.prototype.has.call(this,t)},isa:function(t){for(var e=this;e;){if(e===t)return!0;e=e.SUPER}return!1},SimpleSUPER:n({constructor:function(t){return this.SimpleSUPER.define(t)},define:function(t){var e={};if(null!=t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=this.wrap(i,t[i]));t.toString!==this.prototype.toString&&t.toString!=={}.toString&&(e.toString=this.wrap(\"toString\",t.toString))}return e},wrap:function(t,e){if(\"function\"!=typeof e||!e.toString().match(/\\.\\s*SUPER\\s*\\(/))return e;var i=function(){this.SUPER=i.SUPER[t];try{var n=e.apply(this,arguments)}catch(t){throw delete this.SUPER,t}return delete this.SUPER,n};return i.toString=function(){return e.toString.apply(e,arguments)},i}})}),e.Object.isArray=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},e.Object.Array=Array}(),function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=function(t){var e=function(){return arguments.callee.execute.apply(arguments.callee,arguments)};for(var n in i.prototype)i.prototype.hasOwnProperty(n)&&(e[n]=void 0!==t[n]?t[n]:i.prototype[n]);return e.toString=i.prototype.toString,e};i.prototype={isCallback:!0,hook:function(){},data:[],object:u,execute:function(){if(!this.called||this.autoReset)return this.called=!this.autoReset,this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var n=function(t){return\"function\"==typeof t&&t.isCallback},a=function(t){return eval.call(u,t)},s=function(){if(a(\"var __TeSt_VaR__ = 1\"),u.__TeSt_VaR__)try{delete u.__TeSt_VaR__}catch(t){u.__TeSt_VaR__=null}else a=u.execScript?function(t){e.__code=t,t=\"try {MathJax.__result = eval(MathJax.__code)} catch(err) {MathJax.__result = err}\",u.execScript(t);var i=e.__result;if(delete e.__result,delete e.__code,i instanceof Error)throw i;return i}:function(t){e.__code=t,t=\"try {MathJax.__result = eval(MathJax.__code)} catch(err) {MathJax.__result = err}\";var i=p.getElementsByTagName(\"head\")[0];i||(i=p.body);var n=p.createElement(\"script\");n.appendChild(p.createTextNode(t)),i.appendChild(n),i.removeChild(n);var a=e.__result;if(delete e.__result,delete e.__code,a instanceof Error)throw a;return a};s=null},r=function(t,e){if(arguments.length>1&&(t=2===arguments.length&&\"function\"!=typeof arguments[0]&&arguments[0]instanceof Object&&\"number\"==typeof arguments[1]?[].slice.call(t,e):[].slice.call(arguments,0)),t instanceof Array&&1===t.length&&(t=t[0]),\"function\"==typeof t)return t.execute===i.prototype.execute?t:i({hook:t});if(t instanceof Array){if(\"string\"==typeof t[0]&&t[1]instanceof Object&&\"function\"==typeof t[1][t[0]])return i({hook:t[1][t[0]],object:t[1],data:t.slice(2)});if(\"function\"==typeof t[0])return i({hook:t[0],data:t.slice(1)});if(\"function\"==typeof t[1])return i({hook:t[1],object:t[0],data:t.slice(2)})}else{if(\"string\"==typeof t)return s&&s(),i({hook:a,data:[t]});if(t instanceof Object)return i(t);if(void 0===t)return i({})}throw Error(\"Can't make callback from given data\")},o=function(t,e){(t=r(t)).called||(c(t,e),e.pending++)},h=function(){var t=this.signal;delete this.signal,this.execute=this.oldExecute,delete this.oldExecute;var e=this.execute.apply(this,arguments);if(n(e)&&!e.called)c(e,t);else for(var i=0,a=t.length;i<a;i++)t[i].pending--,t[i].pending<=0&&t[i].call()},c=function(t,e){e instanceof Array||(e=[e]),t.signal?1===e.length?t.signal.push(e[0]):t.signal=t.signal.concat(e):(t.oldExecute=t.execute,t.execute=h,t.signal=e)},d=function(t){(t=r(t)).pending=0;for(var e=1,i=arguments.length;e<i;e++)arguments[e]&&o(arguments[e],t);if(0===t.pending){var a=t();n(a)&&(t=a)}return t},m=l.Object.Subclass({Init:function(t){this.hooks=[],this.remove=[],this.reset=t,this.running=!1},Add:function(t,e){null==e&&(e=10),n(t)||(t=r(t)),t.priority=e;for(var i=this.hooks.length;i>0&&e<this.hooks[i-1].priority;)i--;return this.hooks.splice(i,0,t),t},Remove:function(t){for(var e=0,i=this.hooks.length;e<i;e++)if(this.hooks[e]===t)return void(this.running?this.remove.push(e):this.hooks.splice(e,1))},Execute:function(){var t=[{}];this.running=!0;for(var e=0,i=this.hooks.length;e<i;e++){this.reset&&this.hooks[e].reset();var a=this.hooks[e].apply(u,arguments);n(a)&&!a.called&&t.push(a)}return this.running=!1,this.remove.length&&this.RemovePending(),1===t.length?null:2===t.length?t[1]:d.apply({},t)},RemovePending:function(){this.remove=this.remove.sort();for(var t=this.remove.length-1;t>=0;t--)this.hooks.splice(t,1);this.remove=[]}}),f=e.Object.Subclass({Init:function(){this.pending=this.running=0,this.queue=[],this.Push.apply(this,arguments)},Push:function(){for(var t,e=0,i=arguments.length;e<i;e++)(t=r(arguments[e]))!==arguments[e]||t.called||(t=r([\"wait\",this,t])),this.queue.push(t);return this.running||this.pending||this.Process(),t},Process:function(t){for(;!this.running&&!this.pending&&this.queue.length;){var e=this.queue[0];t=this.queue.slice(1),this.queue=[],this.Suspend();var i=e();this.Resume(),t.length&&(this.queue=t.concat(this.queue)),n(i)&&!i.called&&o(i,this)}},Suspend:function(){this.running++},Resume:function(){this.running&&this.running--},call:function(){this.Process.apply(this,arguments)},wait:function(t){return t}}),g=f.Subclass({Init:function(t){f.prototype.Init.call(this),this.name=t,this.posted=[],this.listeners=m(!0),this.posting=!1,this.callback=null},Post:function(t,e,i){if(e=r(e),this.posting||this.pending)this.Push([\"Post\",this,t,e,i]);else{this.callback=e,e.reset(),i||this.posted.push(t),this.Suspend(),this.posting=!0;var a=this.listeners.Execute(t);n(a)&&!a.called&&o(a,this),this.Resume(),this.posting=!1,this.pending||this.call()}return e},Clear:function(t){return t=r(t),this.posting||this.pending?t=this.Push([\"Clear\",this,t]):(this.posted=[],t()),t},call:function(){this.callback(this),this.Process()},Interest:function(t,e,i){if(t=r(t),this.listeners.Add(t,i),!e)for(var a=0,s=this.posted.length;a<s;a++){t.reset();var l=t(this.posted[a]);n(l)&&a===this.posted.length-1&&o(l,this)}return t},NoInterest:function(t){this.listeners.Remove(t)},MessageHook:function(t,e,i){e=r(e),this.hooks||(this.hooks={},this.Interest([\"ExecuteHooks\",this])),this.hooks[t]||(this.hooks[t]=m(!0)),this.hooks[t].Add(e,i);for(var n=0,a=this.posted.length;n<a;n++)this.posted[n]==t&&(e.reset(),e(this.posted[n]));return e.msg=t,e},ExecuteHooks:function(t){var e=t instanceof Array?t[0]:t;return this.hooks[e]?this.hooks[e].Execute(t):null},RemoveHook:function(t){this.hooks[t.msg].Remove(t)}},{signals:{},find:function(t){return g.signals[t]||(g.signals[t]=new g(t)),g.signals[t]}});e.Callback=e.CallBack=r,e.Callback.Delay=function(t,e){return(e=r(e)).timeout=setTimeout(e,t),e},e.Callback.After=d,e.Callback.Queue=f,e.Callback.Signal=g.find,e.Callback.Hooks=m,e.Callback.ExecuteHooks=function(t,e,i){if(!t)return null;t instanceof Array||(t=[t]),e instanceof Array||(e=null==e?[]:[e]);for(var n=m(i),a=0,s=t.length;a<s;a++)n.Add(t[a]);return n.Execute.apply(n,e)}}(),function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=\"Apple Computer, Inc.\"===h.vendor&&void 0===h.vendorSub,n=0,a=[],s=function(){for(var t=0,i=a.length;t<i;t++)e.Ajax.head.removeChild(a[t]);a=[]},r={MathJax:\"\"};e.Ajax={loaded:{},loading:{},loadHooks:{},timeout:15e3,styleDelay:1,config:{root:\"\",path:r},STATUS:{OK:1,ERROR:-1},fileURL:function(t){var e=t.match(/^\\[([-._a-z0-9]+)\\]/i);return e&&e[1]in r&&(t=(r[e[1]]||this.config.root)+t.substr(e[1].length+2)),t},fileName:function(t){var e=this.config.root;if(t.substr(0,e.length)===e)t=\"[MathJax]\"+t.substr(e.length);else for(var i in r)if(r.hasOwnProperty(i)&&r[i]&&t.substr(0,r[i].length)===r[i]){t=\"[\"+i+\"]\"+t.substr(r[i].length);break}return t},fileRev:function(t){var i=e.cdnFileVersions[name]||e.cdnVersion;return i&&(i=\"?rev=\"+i),i},urlRev:function(t){return this.fileURL(t)+this.fileRev(t)},Require:function(t,i){var n;if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(n=a.toUpperCase(),t=t[a]);else n=t.split(/\\./).pop().toUpperCase();if(t=this.fileURL(t),this.loaded[t])i(this.loaded[t]);else{var s={};s[n]=t,this.Load(s,i)}return i},Load:function(t,i){var n;if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(n=a.toUpperCase(),t=t[a]);else n=t.split(/\\./).pop().toUpperCase();if(t=this.fileURL(t),this.loading[t])this.addHook(t,i);else{if(this.head=(this.head,null),!this.loader[n])throw Error(\"Can't load files of type \"+n);this.loader[n].call(this,t,i)}return i},LoadHook:function(t,i,n){if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(t=t[a]);return t=this.fileURL(t),this.loaded[t]?i(this.loaded[t]):this.addHook(t,i,n),i},addHook:function(t,e,i){this.loadHooks[t]||(this.loadHooks[t]=l.Callback.Hooks()),this.loadHooks[t].Add(e,i),e.file=t},removeHook:function(t){this.loadHooks[t.file]&&(this.loadHooks[t.file].Remove(t),this.loadHooks[t.file].hooks.length||delete this.loadHooks[t.file])},Preloading:function(){for(var t=0,e=arguments.length;t<e;t++){var i=this.fileURL(arguments[t]);this.loading[i]||this.loaded[i]||(this.loading[i]={preloaded:!0})}},loader:{JS:function(t,i){var n=this.fileName(t),a=e.Callback([\"loadTimeout\",this,t]);this.loading[t]={callback:i,timeout:setTimeout(a,this.timeout),status:this.STATUS.OK,script:null},this.loading[t].message=e.Message.File(n),u.System?u.System.import(t).catch(a):a()},CSS:function(t,i){var n=this.fileName(t),a=p.createElement(\"link\");a.rel=\"stylesheet\",a.type=\"text/css\",a.href=t+this.fileRev(n),this.loading[t]={callback:i,message:e.Message.File(n),status:this.STATUS.OK},this.head.appendChild(a),this.timer.create.call(this,[this.timer.file,t],a)}},timer:{create:function(t,a){return t=e.Callback(t),\"STYLE\"===a.nodeName&&a.styleSheet&&void 0!==a.styleSheet.cssText||u.chrome&&\"LINK\"===a.nodeName?t(this.STATUS.OK):i?this.timer.start(this,[this.timer.checkSafari2,n++,t],this.styleDelay):this.timer.start(this,[this.timer.checkLength,a,t],this.styleDelay),t},start:function(t,i,n,a){(i=e.Callback(i)).execute=this.execute,i.time=this.time,i.STATUS=t.STATUS,i.timeout=a||t.timeout,i.delay=i.total=n||0,n?setTimeout(i,n):i()},time:function(t){return this.total+=this.delay,this.delay=Math.floor(1.05*this.delay+5),this.total>=this.timeout?(t(this.STATUS.ERROR),1):0},file:function(t,i){i<0?e.Ajax.loadTimeout(t):e.Ajax.loadComplete(t)},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(t,e,i){t.time(i)||(p.styleSheets.length>e&&p.styleSheets[e].cssRules&&p.styleSheets[e].cssRules.length?i(t.STATUS.OK):setTimeout(t,t.delay))},checkLength:function(t,i,n){if(!t.time(n)){var a=0,s=i.sheet||i.styleSheet;try{(s.cssRules||s.rules||[]).length>0&&(a=1)}catch(t){(t.message.match(/protected variable|restricted URI/)||t.message.match(/Security error/))&&(a=1)}a?setTimeout(e.Callback([n,t.STATUS.OK]),0):setTimeout(t,t.delay)}}},loadComplete:function(t){t=this.fileURL(t);var i=this.loading[t];return i&&!i.preloaded?(e.Message.Clear(i.message),i.timeout&&clearTimeout(i.timeout),i.script&&(0===a.length&&setTimeout(s,0),a.push(i.script)),this.loaded[t]=i.status,delete this.loading[t],this.addHook(t,i.callback)):(i&&delete this.loading[t],this.loaded[t]=this.STATUS.OK,i={status:this.STATUS.OK}),this.loadHooks[t]?this.loadHooks[t].Execute(i.status):null},loadTimeout:function(t){this.loading[t].timeout&&clearTimeout(this.loading[t].timeout),this.loading[t].status=this.STATUS.ERROR,this.loadError(t),this.loadComplete(t)},loadError:function(t){e.Message.Set([\"LoadFailed\",\"File failed to load: %1\",t],null,2e3),e.Hub.signal.Post([\"file load error\",t])},Styles:function(t,i){var n=this.StyleString(t);if(\"\"===n)(i=e.Callback(i))();else{var a=p.createElement(\"style\");a.type=\"text/css\",this.head=(this.head,null),this.head.appendChild(a),a.styleSheet&&void 0!==a.styleSheet.cssText?a.styleSheet.cssText=n:a.appendChild(p.createTextNode(n)),i=this.timer.create.call(this,i,a)}return i},StyleString:function(t){if(\"string\"==typeof t)return t;var e,i,n=\"\";for(e in t)if(t.hasOwnProperty(e))if(\"string\"==typeof t[e])n+=e+\" {\"+t[e]+\"}\\n\";else if(t[e]instanceof Array)for(var a=0;a<t[e].length;a++)(i={})[e]=t[e][a],n+=this.StyleString(i);else if(\"@media\"===e.substr(0,6))n+=e+\" {\"+this.StyleString(t[e])+\"}\\n\";else if(null!=t[e]){for(var s in i=[],t[e])t[e].hasOwnProperty(s)&&null!=t[e][s]&&(i[i.length]=s+\": \"+t[e][s]);n+=e+\" {\"+i.join(\"; \")+\"}\\n\"}return n}}}(),l.HTML={setDocument:function(t){p=this.document=t},Element:function(t,e,i){var n,a=p.createElement(t);if(e){if(e.hasOwnProperty(\"style\")){var s=e.style;for(n in e.style={},s)s.hasOwnProperty(n)&&(e.style[n.replace(/-([a-z])/g,this.ucMatch)]=s[n])}for(n in l.Hub.Insert(a,e),e)\"role\"!==n&&\"aria-\"!==n.substr(0,5)||a.setAttribute(n,e[n])}if(i){l.Object.isArray(i)||(i=[i]);for(var r=0,o=i.length;r<o;r++)l.Object.isArray(i[r])?a.appendChild(this.Element(i[r][0],i[r][1],i[r][2])):\"script\"===t?this.setScript(a,i[r]):a.appendChild(p.createTextNode(i[r]))}return a},ucMatch:function(t,e){return e.toUpperCase()},addElement:function(t,e,i,n){return t.appendChild(this.Element(e,i,n))},TextNode:function(t){return p.createTextNode(t)},addText:function(t,e){return t.appendChild(this.TextNode(e))},setScript:function(t,e){if(this.setScriptBug)t.text=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);this.addText(t,e)}},getScript:function(t){return t.innerText}},l.Localization={locale:\"en\",directory:\"[MathJax]/localization\",strings:{ast:{menuTitle:\"asturianu\"},bg:{menuTitle:\"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\"},bcc:{menuTitle:\"\\u0628\\u0644\\u0648\\u0686\\u06cc\"},br:{menuTitle:\"brezhoneg\"},ca:{menuTitle:\"catal\\xe0\"},cdo:{menuTitle:\"M\\xecng-d\\u0115\\u0324ng-ng\\u1e73\\u0304\"},cs:{menuTitle:\"\\u010de\\u0161tina\"},da:{menuTitle:\"dansk\"},de:{menuTitle:\"Deutsch\"},en:{menuTitle:\"English\",isLoaded:!0},eo:{menuTitle:\"Esperanto\"},es:{menuTitle:\"espa\\xf1ol\"},fa:{menuTitle:\"\\u0641\\u0627\\u0631\\u0633\\u06cc\"},fi:{menuTitle:\"suomi\"},fr:{menuTitle:\"fran\\xe7ais\"},gl:{menuTitle:\"galego\"},he:{menuTitle:\"\\u05e2\\u05d1\\u05e8\\u05d9\\u05ea\"},ia:{menuTitle:\"interlingua\"},it:{menuTitle:\"italiano\"},ja:{menuTitle:\"\\u65e5\\u672c\\u8a9e\"},kn:{menuTitle:\"\\u0c95\\u0ca8\\u0ccd\\u0ca8\\u0ca1\"},ko:{menuTitle:\"\\ud55c\\uad6d\\uc5b4\"},lb:{menuTitle:\"L\\xebtzebuergesch\"},lt:{menuTitle:\"lietuvi\\u0173\"},mk:{menuTitle:\"\\u043c\\u0430\\u043a\\u0435\\u0434\\u043e\\u043d\\u0441\\u043a\\u0438\"},nl:{menuTitle:\"Nederlands\"},oc:{menuTitle:\"occitan\"},pl:{menuTitle:\"polski\"},pt:{menuTitle:\"portugus\\xea\"},\"pt-br\":{menuTitle:\"portugu\\xeas do Brasil\"},ru:{menuTitle:\"\\u0440\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\"},sco:{menuTitle:\"Scots\"},scn:{menuTitle:\"sicilianu\"},sl:{menuTitle:\"sloven\\u0161\\u010dina\"},sv:{menuTitle:\"svenska\"},tr:{menuTitle:\"T\\xfcrk\\xe7e\"},uk:{menuTitle:\"\\u0443\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\"},vi:{menuTitle:\"Ti\\u1ebfng Vi\\u1ec7t\"},\"zh-hans\":{menuTitle:\"\\u4e2d\\u6587\\uff08\\u7b80\\u4f53\\uff09\"}},pattern:/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,SPLIT:3===\"axb\".split(/(x)/).length?function(t,e){return t.split(e)}:function(t,e){var i,n=[],a=0;for(e.lastIndex=0;i=e.exec(t);)n.push(t.substr(a,i.index-a)),n.push.apply(n,i.slice(1)),a=i.index+i[0].length;return n.push(t.substr(a)),n},_:function(t,e){return e instanceof Array?this.processSnippet(t,e):this.processString(this.lookupPhrase(t,e),[].slice.call(arguments,2))},processString:function(t,e,i){var n,a;for(n=0,a=e.length;n<a;n++)i&&e[n]instanceof Array&&(e[n]=this.processSnippet(i,e[n]));var s=this.SPLIT(t,this.pattern);for(n=1,a=s.length;n<a;n+=2){var r=s[n].charAt(0);if(r>=\"0\"&&r<=\"9\")s[n]=e[s[n]-1],\"number\"==typeof s[n]&&(s[n]=this.number(s[n]));else if(\"{\"===r)if((r=s[n].substr(1))>=\"0\"&&r<=\"9\")s[n]=e[s[n].substr(1,s[n].length-2)-1],\"number\"==typeof s[n]&&(s[n]=this.number(s[n]));else{var o=s[n].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/);if(o)if(\"plural\"===o[1]){var l=e[o[2]-1];if(void 0===l)s[n]=\"???\";else{l=this.plural(l)-1;var u=o[3].replace(/(^|[^%])(%%)*%\\|/g,\"$1$2%\\uefef\").split(/\\|/);l>=0&&l<u.length?s[n]=this.processString(u[l].replace(/\\uEFEF/g,\"|\"),e,i):s[n]=\"???\"}}else s[n]=\"%\"+s[n]}null==s[n]&&(s[n]=\"???\")}if(!i)return s.join(\"\");var h=[],p=\"\";for(n=0;n<a;n++)p+=s[n],++n<a&&(s[n]instanceof Array?(h.push(p),h=h.concat(s[n]),p=\"\"):p+=s[n]);return\"\"!==p&&h.push(p),h},processSnippet:function(t,e){for(var i=[],n=0,a=e.length;n<a;n++)if(e[n]instanceof Array){var s=e[n];if(\"string\"==typeof s[1]){var r=s[0];r instanceof Array||(r=[t,r]);var o=this.lookupPhrase(r,s[1]);i=i.concat(this.processMarkdown(o,s.slice(2),t))}else s[1]instanceof Array?i=i.concat(this.processSnippet.apply(this,s)):s.length>=3?i.push([s[0],s[1],this.processSnippet(t,s[2])]):i.push(e[n])}else i.push(e[n]);return i},markdownPattern:/(%.)|(\\*{1,3})((?:%.|.)+?)\\2|(`+)((?:%.|.)+?)\\4|\\[((?:%.|.)+?)\\]\\(([^\\s\\)]+)\\)/,processMarkdown:function(t,e,i){for(var n,a=[],s=t.split(this.markdownPattern),r=s[0],o=1,l=s.length;o<l;o+=8)s[o+1]?((n=this.processString(s[o+2],e,i))instanceof Array||(n=[n]),n=[[\"b\",\"i\",\"i\"][s[o+1].length-1],{},n],3===s[o+1].length&&(n=[\"b\",{},n])):s[o+3]?((n=this.processString(s[o+4].replace(/^\\s/,\"\").replace(/\\s$/,\"\"),e,i))instanceof Array||(n=[n]),n=[\"code\",{},n]):s[o+5]?((n=this.processString(s[o+5],e,i))instanceof Array||(n=[n]),n=[\"a\",{href:this.processString(s[o+6],e),target:\"_blank\"},n]):(r+=s[o],n=null),n&&((a=this.concatString(a,r,e,i)).push(n),r=\"\"),\"\"!==s[o+7]&&(r+=s[o+7]);return a=this.concatString(a,r,e,i)},concatString:function(t,e,i,n){return\"\"!=e&&((e=this.processString(e,i,n))instanceof Array||(e=[e]),t=t.concat(e)),t},lookupPhrase:function(t,e,i){i||(i=\"_\"),t instanceof Array&&(i=t[0]||\"_\",t=t[1]||\"\");var n=this.loadDomain(i);n&&l.Hub.RestartAfter(n);var a=this.strings[this.locale];if(a&&a.domains&&i in a.domains){var s=a.domains[i];s.strings&&t in s.strings&&(e=s.strings[t])}return e},loadFile:function(t,e,i){(i=l.Callback(i),(t=e.file||t).match(/\\.js$/)||(t+=\".js\"),t.match(/^([a-z]+:|\\[MathJax\\])/))||(t=(this.strings[this.locale].directory||this.directory+\"/\"+this.locale||\"[MathJax]/localization/\"+this.locale)+\"/\"+t);var n=l.Ajax.Require(t,(function(){return e.isLoaded=!0,i()}));return n.called?null:n},loadDomain:function(t,e){var i,n=this.strings[this.locale];if(n){if(!n.isLoaded&&(i=this.loadFile(this.locale,n)))return l.Callback.Queue(i,[\"loadDomain\",this,t]).Push(e||{});if(n.domains&&t in n.domains){var a=n.domains[t];if(!a.isLoaded&&(i=this.loadFile(t,a)))return l.Callback.Queue(i).Push(e)}}return l.Callback(e)()},Try:function(t){(t=l.Callback(t)).autoReset=!0;try{t()}catch(e){if(!e.restart)throw e;l.Callback.After([\"Try\",this,t],e.restart)}},resetLocale:function(t){if(t){for(t=t.toLowerCase();!this.strings[t];){var e=t.lastIndexOf(\"-\");if(-1===e)return;t=t.substring(0,e)}var i=this.strings[t].remap;this.locale=i||t}},setLocale:function(t){this.resetLocale(t),l.Menu&&this.loadDomain(\"MathMenu\")},addTranslation:function(t,e,i){var n=this.strings[t],a=!1;n||(n=this.strings[t]={},a=!0),n.domains||(n.domains={}),e&&(n.domains[e]||(n.domains[e]={}),n=n.domains[e]),l.Hub.Insert(n,i),a&&l.Menu.menu&&l.Menu.CreateLocaleMenu()},setCSS:function(t){var e=this.strings[this.locale];return e&&(e.fontFamily&&(t.style.fontFamily=e.fontFamily),e.fontDirection&&(t.style.direction=e.fontDirection,\"rtl\"===e.fontDirection&&(t.style.textAlign=\"right\"))),t},fontFamily:function(){var t=this.strings[this.locale];return t?t.fontFamily:null},fontDirection:function(){var t=this.strings[this.locale];return t?t.fontDirection:null},plural:function(t){var e=this.strings[this.locale];return e&&e.plural?e.plural(t):1==t?1:2},number:function(t){var e=this.strings[this.locale];return e&&e.number?e.number(t):t}},l.Message={localize:function(t){return l.Localization._(t,t)},filterText:function(t,e,i){return\"simple\"===l.Hub.config.messageStyle&&(\"LoadFile\"===i?(this.loading||(this.loading=this.localize(\"Loading\")+\" \"),t=this.loading,this.loading+=\".\"):\"ProcessMath\"===i?(this.processing||(this.processing=this.localize(\"Processing\")+\" \"),t=this.processing,this.processing+=\".\"):\"TypesetMath\"===i&&(this.typesetting||(this.typesetting=this.localize(\"Typesetting\")+\" \"),t=this.typesetting,this.typesetting+=\".\")),t},Set:function(t,e,i){l.debug&&(Array.isArray(t)&&(t=l.Localization._.apply(l.Localization,t)),console.log(\"Message: \"+t))},Clear:function(t,e){},Remove:function(){},File:function(t){return this.Set([\"LoadFile\",\"Loading %1\",t],null,null)},Log:function(){}},l.Hub={config:{root:\"./mathjax2/legacy\",config:[],jax:[],extensions:[],preJax:null,postJax:null,displayAlign:\"center\",displayIndent:\"0\",preRemoveClass:\"MathJax_Preview\",showProcessingMessages:!0,messageStyle:\"normal\",delayStartupUntil:\"none\",skipStartupTypeset:!1,elements:[],positionToHash:!0,showMathMenu:!0,showMathMenuMSIE:!0,menuSettings:{zoom:\"None\",CTRL:!1,ALT:!1,CMD:!1,Shift:!1,discoverable:!1,zscale:\"200%\",renderer:null,font:\"Auto\",context:\"MathJax\",locale:null,mpContext:!1,mpMouse:!1,texHints:!0,FastPreview:null,assistiveMML:null,inTabOrder:!0,semantics:!1},errorSettings:{message:[\"[\",[\"MathProcessingError\",\"Math Processing Error\"],\"]\"],style:{color:\"#CC0000\",\"font-style\":\"italic\"}},ignoreMMLattributes:{}},preProcessors:l.Callback.Hooks(!0),inputJax:{},outputJax:{order:{}},processSectionDelay:50,processUpdateTime:250,processUpdateDelay:10,signal:l.Callback.Signal(\"Hub\"),Config:function(t){this.Insert(this.config,t),this.config.Augment&&this.Augment(this.config.Augment)},CombineConfig:function(t,e){for(var i,n,a=this.config,s=0,r=(t=t.split(/\\./)).length;s<r;s++)a[i=t[s]]||(a[i]={}),n=a,a=a[i];return n[i]=a=this.Insert(e,a),a},Register:{PreProcessor:function(){return l.Hub.preProcessors.Add.apply(l.Hub.preProcessors,arguments)},MessageHook:function(){return l.Hub.signal.MessageHook.apply(l.Hub.signal,arguments)},StartupHook:function(){return l.Hub.Startup.signal.MessageHook.apply(l.Hub.Startup.signal,arguments)},LoadHook:function(){return l.Ajax.LoadHook.apply(l.Ajax,arguments)}},UnRegister:{PreProcessor:function(t){l.Hub.preProcessors.Remove(t)},MessageHook:function(t){l.Hub.signal.RemoveHook(t)},StartupHook:function(t){l.Hub.Startup.signal.RemoveHook(t)},LoadHook:function(t){l.Ajax.removeHook(t)}},setRenderer:function(t,e){if(t){if(l.OutputJax[t]){this.config.menuSettings.renderer=t,null==e&&(e=\"jax/mml\");var i=this.outputJax;return i[e]&&i[e].length&&t!==i[e][0].id?(i[e].unshift(l.OutputJax[t]),this.signal.Post([\"Renderer Selected\",t])):null}this.config.menuSettings.renderer=\"\";var n=\"[MathJax]/jax/output/\"+t+\"/config.js\";return l.Ajax.Require(n,[\"setRenderer\",this,t,e])}},Queue:function(){return this.queue.Push.apply(this.queue,arguments)},RestartAfter:function(t){throw this.Insert(Error(\"restart\"),{restart:l.Callback(t)})},Insert:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(\"object\"!=typeof e[i]||e[i]instanceof Array||\"object\"!=typeof t[i]&&\"function\"!=typeof t[i]?t[i]=e[i]:this.Insert(t[i],e[i]));return t},SplitList:\"trim\"in String.prototype?function(t){return t.trim().split(/\\s+/)}:function(t){return t.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\").split(/\\s+/)}},l.Extension={},l.Hub.Startup={queue:l.Callback.Queue(),signal:l.Callback.Signal(\"Startup\")},l.Ajax.config.root=l.Hub.config.root,i=u.MathJax,n=\"[MathJax]\",a=i.Hub,s=i.Ajax,r=i.Callback,o=l.Object.Subclass({JAXFILE:\"jax.js\",require:null,config:{},Init:function(t,e){return 0===arguments.length?this:this.constructor.Subclass(t,e)()},Augment:function(t,e){var i=this.constructor,n={};if(null!=t){for(var s in t)t.hasOwnProperty(s)&&(\"function\"==typeof t[s]?i.protoFunction(s,t[s]):n[s]=t[s]);t.toString!==i.prototype.toString&&t.toString!=={}.toString&&i.protoFunction(\"toString\",t.toString)}return a.Insert(i.prototype,n),i.Augment(null,e),this},Translate:function(t,e){throw Error(this.directory+\"/\"+this.JAXFILE+\" failed to define the Translate() method\")},Register:function(t){},Config:function(){this.config=a.CombineConfig(this.id,this.config),this.config.Augment&&this.Augment(this.config.Augment)},Startup:function(){},loadComplete:function(t){if(\"config.js\"===t)return s.loadComplete(this.directory+\"/\"+t);var e=r.Queue();return e.Push([\"Post\",a.Startup.signal,this.id+\" Jax Config\"],[\"Config\",this],[\"Post\",a.Startup.signal,this.id+\" Jax Startup\"],[\"Startup\",this],[\"Post\",a.Startup.signal,this.id+\" Jax Ready\"]),this.copyTranslate&&e.Push([function(t){t.preProcess=t.preTranslate,t.Process=t.Translate,t.postProcess=t.postTranslate},this.constructor.prototype]),e.Push([\"loadComplete\",s,this.directory+\"/\"+t])}},{id:\"Jax\",version:\"2.6.0\",directory:n+\"/jax\",extensionDir:n+\"/extensions\"}),i.InputJax=o.Subclass({elementJax:\"mml\",sourceMenuTitle:[\"Original\",\"Original Form\"],copyTranslate:!0,Process:function(t,e){throw Error(\"Input jax failed to load properly\")},needsUpdate:function(t){var e=t.SourceElement();return t.originalText!==i.HTML.getScript(e)},Register:function(t){a.inputJax||(a.inputJax={}),a.inputJax[t]=this}},{id:\"InputJax\",version:\"2.6.0\",directory:o.directory+\"/input\",extensionDir:o.extensionDir}),i.OutputJax=o.Subclass({copyTranslate:!0,preProcess:function(t){throw Error(\"Output jax failed to load properly\")},Register:function(t){var e=a.outputJax;e[t]||(e[t]=[]),e[t].length&&(this.id===a.config.menuSettings.renderer||(e.order[this.id]||0)<(e.order[e[t][0].id]||0))?e[t].unshift(this):e[t].push(this)},Remove:function(t){}},{id:\"OutputJax\",version:\"2.6.0\",directory:o.directory+\"/output\",extensionDir:o.extensionDir,fontDir:n+(i.isPacked?\"\":\"/..\")+\"/fonts\",imageDir:n+(i.isPacked?\"\":\"/..\")+\"/images\"}),i.ElementJax=o.Subclass({Init:function(t,e){return this.constructor.Subclass(t,e)},inputJax:null,outputJax:null,inputID:null,originalText:\"\",mimeType:\"\",sourceMenuTitle:[\"MathMLcode\",\"MathML Code\"],Text:function(t,e){var n=this.SourceElement();return i.HTML.setScript(n,t),n.MathJax.state=this.STATE.UPDATE,a.Update(n,e)},Reprocess:function(t){var e=this.SourceElement();return e.MathJax.state=this.STATE.UPDATE,a.Reprocess(e,t)},Update:function(t){return this.Rerender(t)},Rerender:function(t){var e=this.SourceElement();return e.MathJax.state=this.STATE.OUTPUT,a.Process(e,t)},Remove:function(t){this.hover&&this.hover.clear(this),i.OutputJax[this.outputJax].Remove(this),t||(a.signal.Post([\"Remove Math\",this.inputID]),this.Detach())},needsUpdate:function(){return i.InputJax[this.inputJax].needsUpdate(this)},SourceElement:function(){return p.getElementById(this.inputID)},Attach:function(t,e){var n=t.MathJax.elementJax;return t.MathJax.state===this.STATE.UPDATE?n.Clone(this):(n=t.MathJax.elementJax=this,t.id?this.inputID=t.id:(t.id=this.inputID=i.ElementJax.GetID(),this.newID=1)),n.originalText=i.HTML.getScript(t),n.inputJax=e,n.root&&(n.root.inputID=n.inputID),n},Detach:function(){var t=this.SourceElement();if(t){try{delete t.MathJax}catch(e){t.MathJax=null}this.newID&&(t.id=\"\")}},Clone:function(t){var e;for(e in this)this.hasOwnProperty(e)&&void 0===t[e]&&\"newID\"!==e&&delete this[e];for(e in t)t.hasOwnProperty(e)&&(void 0===this[e]||this[e]!==t[e]&&\"inputID\"!==e)&&(this[e]=t[e])}},{id:\"ElementJax\",version:\"2.6.0\",directory:o.directory+\"/element\",extensionDir:o.extensionDir,ID:0,STATE:{PENDING:1,PROCESSED:2,UPDATE:3,OUTPUT:4},GetID:function(){return this.ID++,\"MathJax-Element-\"+this.ID},Subclass:function(){var t=o.Subclass.apply(this,arguments);return t.loadComplete=this.prototype.loadComplete,t}}),i.ElementJax.prototype.STATE=i.ElementJax.STATE,l.Hub.Browser={Select:function(){}}},function(t,e){MathJax.ElementJax.mml=MathJax.ElementJax({mimeType:\"jax/mml\"},{id:\"mml\",version:\"2.7.2\",directory:MathJax.ElementJax.directory+\"/mml\",extensionDir:MathJax.ElementJax.extensionDir+\"/mml\",optableDir:MathJax.ElementJax.directory+\"/mml/optable\"}),MathJax.ElementJax.mml.Augment({Init:function(){if(1===arguments.length&&\"math\"===arguments[0].type?this.root=arguments[0]:this.root=MathJax.ElementJax.mml.math.apply(this,arguments),this.root.attr&&this.root.attr.mode){this.root.display||\"display\"!==this.root.attr.mode||(this.root.display=\"block\",this.root.attrNames.push(\"display\")),delete this.root.attr.mode;for(var t=0,e=this.root.attrNames.length;t<e;t++)if(\"mode\"===this.root.attrNames[t]){this.root.attrNames.splice(t,1);break}}}},{INHERIT:\"_inherit_\",AUTO:\"_auto_\",SIZE:{INFINITY:\"infinity\",SMALL:\"small\",NORMAL:\"normal\",BIG:\"big\"},COLOR:{TRANSPARENT:\"transparent\"},VARIANT:{NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALIGRAPHIC:\"-tex-caligraphic\",OLDSTYLE:\"-tex-oldstyle\"},FORM:{PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},LINEBREAK:{AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},LINEBREAKSTYLE:{BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},INDENTALIGN:{LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},INDENTSHIFT:{INDENTSHIFT:\"indentshift\"},LINETHICKNESS:{THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},NOTATION:{LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",UPDIAGONALARROW:\"updiagonalarrow\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",PHASORANGLE:\"phasorangle\",MADRUWB:\"madruwb\"},ALIGN:{TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},LINES:{NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},SIDE:{LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},WIDTH:{AUTO:\"auto\",FIT:\"fit\"},ACTIONTYPE:{TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},LENGTH:{VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},OVERFLOW:{LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},UNIT:{EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"},TEXCLASS:{ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},TEXCLASSNAMES:[\"ORD\",\"OP\",\"BIN\",\"REL\",\"OPEN\",\"CLOSE\",\"PUNCT\",\"INNER\",\"VCENTER\"],skipAttributes:{texClass:!0,useHeight:!0,texprimestyle:!0},copyAttributes:{displaystyle:1,scriptlevel:1,open:1,close:1,form:1,actiontype:1,fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,id:!0,class:1,href:!0,style:!0},copyAttributeNames:[\"displaystyle\",\"scriptlevel\",\"open\",\"close\",\"form\",\"actiontype\",\"fontfamily\",\"fontsize\",\"fontweight\",\"fontstyle\",\"color\",\"background\",\"id\",\"class\",\"href\",\"style\"],nocopyAttributes:{fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,id:!0,class:!0,href:!0,style:!0,xmlns:!0},Error:function(t,e){var i=this.merror(t),n=MathJax.Localization.fontDirection(),a=MathJax.Localization.fontFamily();return e&&(i=i.With(e)),(n||a)&&(i=this.mstyle(i),n&&(i.dir=n),a&&(i.style.fontFamily=\"font-family: \"+a)),i}}),function(t){t.mbase=MathJax.Object.Subclass({type:\"base\",isToken:!1,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT},noInherit:{},noInheritAttribute:{texClass:!0},getRemoved:{},linebreakContainer:!1,Init:function(){this.data=[],!this.inferRow||1===arguments.length&&arguments[0].inferred||this.Append(t.mrow().With({inferred:!0,notParent:!0})),this.Append.apply(this,arguments)},With:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);return this},Append:function(){if(this.inferRow&&this.data.length)this.data[0].Append.apply(this.data[0],arguments);else for(var t=0,e=arguments.length;t<e;t++)this.SetData(this.data.length,arguments[t])},SetData:function(e,i){null!=i&&(i instanceof t.mbase||(i=this.isToken||this.isChars?t.chars(i):t.mtext(i)),i.parent=this,i.setInherit(this.inheritFromMe?this:this.inherit)),this.data[e]=i},Parent:function(){for(var t=this.parent;t&&t.notParent;)t=t.parent;return t},Get:function(e,i,n){if(!n){if(null!=this[e])return this[e];if(this.attr&&null!=this.attr[e])return this.attr[e]}var a=this.Parent();if(a&&null!=a[\"adjustChild_\"+e])return a[\"adjustChild_\"+e](this.childPosition(),i);for(var s=this.inherit,r=s;s;){var o=s[e];if(null==o&&s.attr&&(o=s.attr[e]),s.removedStyles&&s.getRemoved[e]&&null==o&&(o=s.removedStyles[s.getRemoved[e]]),null!=o&&s.noInheritAttribute&&!s.noInheritAttribute[e]){var l=s.noInherit[this.type];if(!l||!l[e])return o}r=s,s=s.inherit}if(!i){if(this.defaults[e]===t.AUTO)return this.autoDefault(e);if(this.defaults[e]!==t.INHERIT&&null!=this.defaults[e])return this.defaults[e];if(r)return r.defaults[e]}return null},hasValue:function(t){return null!=this.Get(t,!0)},getValues:function(){for(var t={},e=0,i=arguments.length;e<i;e++)t[arguments[e]]=this.Get(arguments[e]);return t},adjustChild_scriptlevel:function(t,e){return this.Get(\"scriptlevel\",e)},adjustChild_displaystyle:function(t,e){return this.Get(\"displaystyle\",e)},adjustChild_texprimestyle:function(t,e){return this.Get(\"texprimestyle\",e)},childPosition:function(){for(var t=this,e=t.parent;e.notParent;)e=(t=e).parent;for(var i=0,n=e.data.length;i<n;i++)if(e.data[i]===t)return i;return null},setInherit:function(t){if(t!==this.inherit&&null==this.inherit){this.inherit=t;for(var e=0,i=this.data.length;e<i;e++)this.data[e]&&this.data[e].setInherit&&this.data[e].setInherit(t)}},setTeXclass:function(t){return this.getPrevClass(t),void 0!==this.texClass?this:t},getPrevClass:function(t){t&&(this.prevClass=t.Get(\"texClass\"),this.prevLevel=t.Get(\"scriptlevel\"))},updateTeXclass:function(t){t&&(this.prevClass=t.prevClass,delete t.prevClass,this.prevLevel=t.prevLevel,delete t.prevLevel,this.texClass=t.Get(\"texClass\"))},texSpacing:function(){var e=null!=this.prevClass?this.prevClass:t.TEXCLASS.NONE,i=this.Get(\"texClass\")||t.TEXCLASS.ORD;if(e===t.TEXCLASS.NONE||i===t.TEXCLASS.NONE)return\"\";e===t.TEXCLASS.VCENTER&&(e=t.TEXCLASS.ORD),i===t.TEXCLASS.VCENTER&&(i=t.TEXCLASS.ORD);var n=this.TEXSPACE[e][i];return(this.prevLevel>0||this.Get(\"scriptlevel\")>0)&&n>=0?\"\":this.TEXSPACELENGTH[Math.abs(n)]},TEXSPACELENGTH:[\"\",t.LENGTH.THINMATHSPACE,t.LENGTH.MEDIUMMATHSPACE,t.LENGTH.THICKMATHSPACE],TEXSPACE:[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]],autoDefault:function(t){return\"\"},isSpacelike:function(){return!1},isEmbellished:function(){return!1},Core:function(){return this},CoreMO:function(){return this},childIndex:function(t){if(null!=t)for(var e=0,i=this.data.length;e<i;e++)if(t===this.data[e])return e},CoreIndex:function(){return(this.inferRow&&this.data[0]||this).childIndex(this.Core())},hasNewline:function(){if(this.isEmbellished())return this.CoreMO().hasNewline();if(this.isToken||this.linebreakContainer)return!1;for(var t=0,e=this.data.length;t<e;t++)if(this.data[t]&&this.data[t].hasNewline())return!0;return!1},array:function(){return this.inferred?this.data:[this]},toString:function(){return this.type+\"(\"+this.data.join(\",\")+\")\"},getAnnotation:function(){return null}},{childrenSpacelike:function(){for(var t=0,e=this.data.length;t<e;t++)if(!this.data[t].isSpacelike())return!1;return!0},childEmbellished:function(){return this.data[0]&&this.data[0].isEmbellished()},childCore:function(){return this.inferRow&&this.data[0]?this.data[0].Core():this.data[0]},childCoreMO:function(){return this.data[0]?this.data[0].CoreMO():null},setChildTeXclass:function(t){return this.data[0]&&(t=this.data[0].setTeXclass(t),this.updateTeXclass(this.data[0])),t},setBaseTeXclasses:function(e){this.getPrevClass(e),this.texClass=null,this.data[0]?this.isEmbellished()||this.data[0].isa(t.mi)?(e=this.data[0].setTeXclass(e),this.updateTeXclass(this.Core())):(this.data[0].setTeXclass(),e=this):e=this;for(var i=1,n=this.data.length;i<n;i++)this.data[i]&&this.data[i].setTeXclass();return e},setSeparateTeXclasses:function(t){this.getPrevClass(t);for(var e=0,i=this.data.length;e<i;e++)this.data[e]&&this.data[e].setTeXclass();return this.isEmbellished()&&this.updateTeXclass(this.Core()),this}}),t.mi=t.mbase.Subclass({type:\"mi\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.AUTO,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT},autoDefault:function(e){if(\"mathvariant\"===e){var i=(this.data[0]||\"\").toString();return 1===i.length||2===i.length&&i.charCodeAt(0)>=55296&&i.charCodeAt(0)<56320?t.VARIANT.ITALIC:t.VARIANT.NORMAL}return\"\"},setTeXclass:function(e){this.getPrevClass(e);var i=this.data.join(\"\");return i.length>1&&i.match(/^[a-z][a-z0-9]*$/i)&&this.texClass===t.TEXCLASS.ORD&&(this.texClass=t.TEXCLASS.OP,this.autoOP=!0),this}}),t.mn=t.mbase.Subclass({type:\"mn\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT}}),t.mo=t.mbase.Subclass({type:\"mo\",isToken:!0,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,form:t.AUTO,fence:t.AUTO,separator:t.AUTO,lspace:t.AUTO,rspace:t.AUTO,stretchy:t.AUTO,symmetric:t.AUTO,maxsize:t.AUTO,minsize:t.AUTO,largeop:t.AUTO,movablelimits:t.AUTO,accent:t.AUTO,linebreak:t.LINEBREAK.AUTO,lineleading:t.INHERIT,linebreakstyle:t.AUTO,linebreakmultchar:t.INHERIT,indentalign:t.INHERIT,indentshift:t.INHERIT,indenttarget:t.INHERIT,indentalignfirst:t.INHERIT,indentshiftfirst:t.INHERIT,indentalignlast:t.INHERIT,indentshiftlast:t.INHERIT,texClass:t.AUTO},defaultDef:{form:t.FORM.INFIX,fence:!1,separator:!1,lspace:t.LENGTH.THICKMATHSPACE,rspace:t.LENGTH.THICKMATHSPACE,stretchy:!1,symmetric:!1,maxsize:t.SIZE.INFINITY,minsize:\"0em\",largeop:!1,movablelimits:!1,accent:!1,linebreak:t.LINEBREAK.AUTO,lineleading:\"1ex\",linebreakstyle:\"before\",indentalign:t.INDENTALIGN.AUTO,indentshift:\"0\",indenttarget:\"\",indentalignfirst:t.INDENTALIGN.INDENTALIGN,indentshiftfirst:t.INDENTSHIFT.INDENTSHIFT,indentalignlast:t.INDENTALIGN.INDENTALIGN,indentshiftlast:t.INDENTSHIFT.INDENTSHIFT,texClass:t.TEXCLASS.REL},SPACE_ATTR:{lspace:1,rspace:2,form:4},useMMLspacing:7,autoDefault:function(e,i){var n=this.def;if(!n){if(\"form\"===e)return this.useMMLspacing&=~this.SPACE_ATTR.form,this.getForm();for(var a=this.data.join(\"\"),s=[this.Get(\"form\"),t.FORM.INFIX,t.FORM.POSTFIX,t.FORM.PREFIX],r=0,o=s.length;r<o;r++){var l=this.OPTABLE[s[r]][a];if(l){n=this.makeDef(l);break}}n||(n=this.CheckRange(a)),!n&&i?n={}:(n||(n=MathJax.Hub.Insert({},this.defaultDef)),this.parent?this.def=n:n=MathJax.Hub.Insert({},n),n.form=s[0])}return this.useMMLspacing&=~(this.SPACE_ATTR[e]||0),null!=n[e]?n[e]:i?\"\":this.defaultDef[e]},CheckRange:function(e){var i=e.charCodeAt(0);i>=55296&&i<56320&&(i=(i-55296<<10)+(e.charCodeAt(1)-56320)+65536);for(var n=0,a=this.RANGES.length;n<a&&this.RANGES[n][0]<=i;n++)if(i<=this.RANGES[n][1]){if(this.RANGES[n][3]){var s=t.optableDir+\"/\"+this.RANGES[n][3]+\".js\";this.RANGES[n][3]=null,MathJax.Hub.RestartAfter(MathJax.Ajax.Require(s))}var r=t.TEXCLASSNAMES[this.RANGES[n][2]];return r=this.OPTABLE.infix[e]=t.mo.OPTYPES[\"BIN\"===r?\"BIN3\":r],this.makeDef(r)}return null},makeDef:function(e){null==e[2]&&(e[2]=this.defaultDef.texClass),e[3]||(e[3]={});var i=MathJax.Hub.Insert({},e[3]);return i.lspace=this.SPACE[e[0]],i.rspace=this.SPACE[e[1]],i.texClass=e[2],i.texClass===t.TEXCLASS.REL&&(this.movablelimits||this.data.join(\"\").match(/^[a-z]+$/i))&&(i.texClass=t.TEXCLASS.OP),i},getForm:function(){for(var e=this,i=this.parent,n=this.Parent();n&&n.isEmbellished();)e=i,i=n.parent,n=n.Parent();if(i&&\"mrow\"===i.type&&1!==i.NonSpaceLength()){if(i.FirstNonSpace()===e)return t.FORM.PREFIX;if(i.LastNonSpace()===e)return t.FORM.POSTFIX}return t.FORM.INFIX},isEmbellished:function(){return!0},hasNewline:function(){return this.Get(\"linebreak\")===t.LINEBREAK.NEWLINE},CoreParent:function(){for(var e=this;e&&e.isEmbellished()&&e.CoreMO()===this&&!e.isa(t.math);)e=e.Parent();return e},CoreText:function(e){if(!e)return\"\";if(e.isEmbellished())return e.CoreMO().data.join(\"\");for(;((e.isa(t.mrow)||e.isa(t.TeXAtom)||e.isa(t.mstyle)||e.isa(t.mphantom))&&1===e.data.length||e.isa(t.munderover))&&e.data[0];)e=e.data[0];return e.isToken?e.data.join(\"\"):\"\"},remapChars:{\"*\":\"\\u2217\",'\"':\"\\u2033\",\"\\xb0\":\"\\u2218\",\"\\xb2\":\"2\",\"\\xb3\":\"3\",\"\\xb4\":\"\\u2032\",\"\\xb9\":\"1\"},remap:function(t,e){return t=t.replace(/-/g,\"\\u2212\"),e&&1===(t=t.replace(/'/g,\"\\u2032\").replace(/`/g,\"\\u2035\")).length&&(t=e[t]||t),t},setTeXclass:function(e){var i=this.getValues(\"form\",\"lspace\",\"rspace\",\"fence\");return this.useMMLspacing?(this.texClass=t.TEXCLASS.NONE,this):(i.fence&&!this.texClass&&(i.form===t.FORM.PREFIX&&(this.texClass=t.TEXCLASS.OPEN),i.form===t.FORM.POSTFIX&&(this.texClass=t.TEXCLASS.CLOSE)),this.texClass=this.Get(\"texClass\"),\"\\u2061\"===this.data.join(\"\")?(e&&(e.texClass=t.TEXCLASS.OP,e.fnOP=!0),this.texClass=this.prevClass=t.TEXCLASS.NONE,e):this.adjustTeXclass(e))},adjustTeXclass:function(e){if(this.texClass===t.TEXCLASS.NONE)return e;if(e?(!e.autoOP||this.texClass!==t.TEXCLASS.BIN&&this.texClass!==t.TEXCLASS.REL||(e.texClass=t.TEXCLASS.ORD),this.prevClass=e.texClass||t.TEXCLASS.ORD,this.prevLevel=e.Get(\"scriptlevel\")):this.prevClass=t.TEXCLASS.NONE,this.texClass!==t.TEXCLASS.BIN||this.prevClass!==t.TEXCLASS.NONE&&this.prevClass!==t.TEXCLASS.BIN&&this.prevClass!==t.TEXCLASS.OP&&this.prevClass!==t.TEXCLASS.REL&&this.prevClass!==t.TEXCLASS.OPEN&&this.prevClass!==t.TEXCLASS.PUNCT)if(this.prevClass!==t.TEXCLASS.BIN||this.texClass!==t.TEXCLASS.REL&&this.texClass!==t.TEXCLASS.CLOSE&&this.texClass!==t.TEXCLASS.PUNCT){if(this.texClass===t.TEXCLASS.BIN){for(var i=this,n=this.parent;n&&n.parent&&n.isEmbellished()&&(1===n.data.length||\"mrow\"!==n.type&&n.Core()===i);)i=n,n=n.parent;n.data[n.data.length-1]===i&&(this.texClass=t.TEXCLASS.ORD)}}else e.texClass=this.prevClass=t.TEXCLASS.ORD;else this.texClass=t.TEXCLASS.ORD;return this}}),t.mtext=t.mbase.Subclass({type:\"mtext\",isToken:!0,isSpacelike:function(){return!0},texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT}}),t.mspace=t.mbase.Subclass({type:\"mspace\",isToken:!0,isSpacelike:function(){return!0},defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,width:\"0em\",height:\"0ex\",depth:\"0ex\",linebreak:t.LINEBREAK.AUTO},hasDimAttr:function(){return this.hasValue(\"width\")||this.hasValue(\"height\")||this.hasValue(\"depth\")},hasNewline:function(){return!this.hasDimAttr()&&this.Get(\"linebreak\")===t.LINEBREAK.NEWLINE}}),t.ms=t.mbase.Subclass({type:\"ms\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,lquote:'\"',rquote:'\"'}}),t.mglyph=t.mbase.Subclass({type:\"mglyph\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,alt:\"\",src:\"\",width:t.AUTO,height:t.AUTO,valign:\"0em\"}}),t.mrow=t.mbase.Subclass({type:\"mrow\",isSpacelike:t.mbase.childrenSpacelike,inferred:!1,notParent:!1,isEmbellished:function(){for(var t=!1,e=0,i=this.data.length;e<i;e++)if(null!=this.data[e])if(this.data[e].isEmbellished()){if(t)return!1;t=!0,this.core=e}else if(!this.data[e].isSpacelike())return!1;return t},NonSpaceLength:function(){for(var t=0,e=0,i=this.data.length;e<i;e++)this.data[e]&&!this.data[e].isSpacelike()&&t++;return t},FirstNonSpace:function(){for(var t=0,e=this.data.length;t<e;t++)if(this.data[t]&&!this.data[t].isSpacelike())return this.data[t];return null},LastNonSpace:function(){for(var t=this.data.length-1;t>=0;t--)if(this.data[0]&&!this.data[t].isSpacelike())return this.data[t];return null},Core:function(){return this.isEmbellished()&&void 0!==this.core?this.data[this.core]:this},CoreMO:function(){return this.isEmbellished()&&void 0!==this.core?this.data[this.core].CoreMO():this},toString:function(){return this.inferred?\"[\"+this.data.join(\",\")+\"]\":this.SUPER(arguments).toString.call(this)},setTeXclass:function(e){var i,n=this.data.length;if(!this.open&&!this.close||e&&e.fnOP){for(i=0;i<n;i++)this.data[i]&&(e=this.data[i].setTeXclass(e));return this.data[0]&&this.updateTeXclass(this.data[0]),e}for(this.getPrevClass(e),e=null,i=0;i<n;i++)this.data[i]&&(e=this.data[i].setTeXclass(e));return this.hasOwnProperty(\"texClass\")||(this.texClass=t.TEXCLASS.INNER),this},getAnnotation:function(t){return 1!=this.data.length?null:this.data[0].getAnnotation(t)}}),t.mfrac=t.mbase.Subclass({type:\"mfrac\",num:0,den:1,linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,linethickness:t.LINETHICKNESS.MEDIUM,numalign:t.ALIGN.CENTER,denomalign:t.ALIGN.CENTER,bevelled:!1},adjustChild_displaystyle:function(t){return!1},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return(!this.Get(\"displaystyle\")||e>0)&&e++,e},adjustChild_texprimestyle:function(t){return t==this.den||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setSeparateTeXclasses}),t.msqrt=t.mbase.Subclass({type:\"msqrt\",inferRow:!0,linebreakContainer:!0,texClass:t.TEXCLASS.ORD,setTeXclass:t.mbase.setSeparateTeXclasses,adjustChild_texprimestyle:function(t){return!0}}),t.mroot=t.mbase.Subclass({type:\"mroot\",linebreakContainer:!0,texClass:t.TEXCLASS.ORD,adjustChild_displaystyle:function(t){return 1!==t&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return 1===t&&(e+=2),e},adjustChild_texprimestyle:function(t){return 0===t||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mstyle=t.mbase.Subclass({type:\"mstyle\",isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,inferRow:!0,defaults:{scriptlevel:t.INHERIT,displaystyle:t.INHERIT,scriptsizemultiplier:Math.sqrt(.5),scriptminsize:\"8pt\",mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,infixlinebreakstyle:t.LINEBREAKSTYLE.BEFORE,decimalseparator:\".\"},adjustChild_scriptlevel:function(t){var e=this.scriptlevel;if(null==e)e=this.Get(\"scriptlevel\");else if(String(e).match(/^ *[-+]/)){e=this.Get(\"scriptlevel\",null,!0)+parseInt(e)}return e},inheritFromMe:!0,noInherit:{mpadded:{width:!0,height:!0,depth:!0,lspace:!0,voffset:!0},mtable:{width:!0,height:!0,depth:!0,align:!0}},getRemoved:{fontfamily:\"fontFamily\",fontweight:\"fontWeight\",fontstyle:\"fontStyle\",fontsize:\"fontSize\"},setTeXclass:t.mbase.setChildTeXclass}),t.merror=t.mbase.Subclass({type:\"merror\",inferRow:!0,linebreakContainer:!0,texClass:t.TEXCLASS.ORD}),t.mpadded=t.mbase.Subclass({type:\"mpadded\",inferRow:!0,isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,width:\"\",height:\"\",depth:\"\",lspace:0,voffset:0},setTeXclass:t.mbase.setChildTeXclass}),t.mphantom=t.mbase.Subclass({type:\"mphantom\",texClass:t.TEXCLASS.ORD,inferRow:!0,isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,setTeXclass:t.mbase.setChildTeXclass}),t.mfenced=t.mbase.Subclass({type:\"mfenced\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,open:\"(\",close:\")\",separators:\",\"},addFakeNodes:function(){var e=this.getValues(\"open\",\"close\",\"separators\");if(e.open=e.open.replace(/[ \\t\\n\\r]/g,\"\"),e.close=e.close.replace(/[ \\t\\n\\r]/g,\"\"),e.separators=e.separators.replace(/[ \\t\\n\\r]/g,\"\"),\"\"!==e.open&&(this.SetData(\"open\",t.mo(e.open).With({fence:!0,form:t.FORM.PREFIX,texClass:t.TEXCLASS.OPEN})),this.data.open.useMMLspacing=0),\"\"!==e.separators){for(;e.separators.length<this.data.length;)e.separators+=e.separators.charAt(e.separators.length-1);for(var i=1,n=this.data.length;i<n;i++)this.data[i]&&(this.SetData(\"sep\"+i,t.mo(e.separators.charAt(i-1)).With({separator:!0})),this.data[\"sep\"+i].useMMLspacing=0)}\"\"!==e.close&&(this.SetData(\"close\",t.mo(e.close).With({fence:!0,form:t.FORM.POSTFIX,texClass:t.TEXCLASS.CLOSE})),this.data.close.useMMLspacing=0)},texClass:t.TEXCLASS.OPEN,setTeXclass:function(e){this.addFakeNodes(),this.getPrevClass(e),this.data.open&&(e=this.data.open.setTeXclass(e)),this.data[0]&&(e=this.data[0].setTeXclass(e));for(var i=1,n=this.data.length;i<n;i++)this.data[\"sep\"+i]&&(e=this.data[\"sep\"+i].setTeXclass(e)),this.data[i]&&(e=this.data[i].setTeXclass(e));return this.data.close&&(e=this.data.close.setTeXclass(e)),this.updateTeXclass(this.data.open),this.texClass=t.TEXCLASS.INNER,e}}),t.menclose=t.mbase.Subclass({type:\"menclose\",inferRow:!0,linebreakContainer:!0,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,notation:t.NOTATION.LONGDIV,texClass:t.TEXCLASS.ORD},setTeXclass:t.mbase.setSeparateTeXclasses}),t.msubsup=t.mbase.Subclass({type:\"msubsup\",base:0,sub:1,sup:2,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,subscriptshift:\"\",superscriptshift:\"\",texClass:t.AUTO},autoDefault:function(e){return\"texClass\"===e?this.isEmbellished()?this.CoreMO().Get(e):t.TEXCLASS.ORD:0},adjustChild_displaystyle:function(t){return!(t>0)&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return t>0&&e++,e},adjustChild_texprimestyle:function(t){return t===this.sub||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setBaseTeXclasses}),t.msub=t.msubsup.Subclass({type:\"msub\"}),t.msup=t.msubsup.Subclass({type:\"msup\",sub:2,sup:1}),t.mmultiscripts=t.msubsup.Subclass({type:\"mmultiscripts\",adjustChild_texprimestyle:function(t){return t%2==1||this.Get(\"texprimestyle\")}}),t.mprescripts=t.mbase.Subclass({type:\"mprescripts\"}),t.none=t.mbase.Subclass({type:\"none\"}),t.munderover=t.mbase.Subclass({type:\"munderover\",base:0,under:1,over:2,sub:1,sup:2,ACCENTS:[\"\",\"accentunder\",\"accent\"],linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,accent:t.AUTO,accentunder:t.AUTO,align:t.ALIGN.CENTER,texClass:t.AUTO,subscriptshift:\"\",superscriptshift:\"\"},autoDefault:function(e){return\"texClass\"===e?this.isEmbellished()?this.CoreMO().Get(e):t.TEXCLASS.ORD:\"accent\"===e&&this.data[this.over]?this.data[this.over].CoreMO().Get(\"accent\"):!(\"accentunder\"!==e||!this.data[this.under])&&this.data[this.under].CoreMO().Get(\"accent\")},adjustChild_displaystyle:function(t){return!(t>0)&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\"),i=this.data[this.base]&&!this.Get(\"displaystyle\")&&this.data[this.base].CoreMO().Get(\"movablelimits\");return t!=this.under||!i&&this.Get(\"accentunder\")||e++,t!=this.over||!i&&this.Get(\"accent\")||e++,e},adjustChild_texprimestyle:function(t){return!(t!==this.base||!this.data[this.over])||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setBaseTeXclasses}),t.munder=t.munderover.Subclass({type:\"munder\"}),t.mover=t.munderover.Subclass({type:\"mover\",over:1,under:2,sup:1,sub:2,ACCENTS:[\"\",\"accent\",\"accentunder\"]}),t.mtable=t.mbase.Subclass({type:\"mtable\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,align:t.ALIGN.AXIS,rowalign:t.ALIGN.BASELINE,columnalign:t.ALIGN.CENTER,groupalign:\"{left}\",alignmentscope:!0,columnwidth:t.WIDTH.AUTO,width:t.WIDTH.AUTO,rowspacing:\"1ex\",columnspacing:\".8em\",rowlines:t.LINES.NONE,columnlines:t.LINES.NONE,frame:t.LINES.NONE,framespacing:\"0.4em 0.5ex\",equalrows:!1,equalcolumns:!1,displaystyle:!1,side:t.SIDE.RIGHT,minlabelspacing:\"0.8em\",texClass:t.TEXCLASS.ORD,useHeight:1},adjustChild_displaystyle:function(){return null!=this.displaystyle?this.displaystyle:this.defaults.displaystyle},inheritFromMe:!0,noInherit:{mover:{align:!0},munder:{align:!0},munderover:{align:!0},mtable:{align:!0,rowalign:!0,columnalign:!0,groupalign:!0,alignmentscope:!0,columnwidth:!0,width:!0,rowspacing:!0,columnspacing:!0,rowlines:!0,columnlines:!0,frame:!0,framespacing:!0,equalrows:!0,equalcolumns:!0,displaystyle:!0,side:!0,minlabelspacing:!0,texClass:!0,useHeight:1}},linebreakContainer:!0,Append:function(){for(var e=0,i=arguments.length;e<i;e++)arguments[e]instanceof t.mtr||arguments[e]instanceof t.mlabeledtr||(arguments[e]=t.mtr(arguments[e]));this.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mtr=t.mbase.Subclass({type:\"mtr\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,rowalign:t.INHERIT,columnalign:t.INHERIT,groupalign:t.INHERIT},inheritFromMe:!0,noInherit:{mrow:{rowalign:!0,columnalign:!0,groupalign:!0},mtable:{rowalign:!0,columnalign:!0,groupalign:!0}},linebreakContainer:!0,Append:function(){for(var e=0,i=arguments.length;e<i;e++)arguments[e]instanceof t.mtd||(arguments[e]=t.mtd(arguments[e]));this.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mtd=t.mbase.Subclass({type:\"mtd\",inferRow:!0,linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,rowspan:1,columnspan:1,rowalign:t.INHERIT,columnalign:t.INHERIT,groupalign:t.INHERIT},setTeXclass:t.mbase.setSeparateTeXclasses}),t.maligngroup=t.mbase.Subclass({type:\"maligngroup\",isSpacelike:function(){return!0},defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,groupalign:t.INHERIT},inheritFromMe:!0,noInherit:{mrow:{groupalign:!0},mtable:{groupalign:!0}}}),t.malignmark=t.mbase.Subclass({type:\"malignmark\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,edge:t.SIDE.LEFT},isSpacelike:function(){return!0}}),t.mlabeledtr=t.mtr.Subclass({type:\"mlabeledtr\"}),t.maction=t.mbase.Subclass({type:\"maction\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,actiontype:t.ACTIONTYPE.TOGGLE,selection:1},selected:function(){return this.data[this.Get(\"selection\")-1]||t.NULL},isEmbellished:function(){return this.selected().isEmbellished()},isSpacelike:function(){return this.selected().isSpacelike()},Core:function(){return this.selected().Core()},CoreMO:function(){return this.selected().CoreMO()},setTeXclass:function(e){this.Get(\"actiontype\")===t.ACTIONTYPE.TOOLTIP&&this.data[1]&&this.data[1].setTeXclass();var i=this.selected();return e=i.setTeXclass(e),this.updateTeXclass(i),e}}),t.semantics=t.mbase.Subclass({type:\"semantics\",notParent:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{definitionURL:null,encoding:null},setTeXclass:t.mbase.setChildTeXclass,getAnnotation:function(t){var e=MathJax.Hub.config.MathMenu.semanticsAnnotations[t];if(e)for(var i=0,n=this.data.length;i<n;i++){var a=this.data[i].Get(\"encoding\");if(a)for(var s=0,r=e.length;s<r;s++)if(e[s]===a)return this.data[i]}return null}}),t.annotation=t.mbase.Subclass({type:\"annotation\",isChars:!0,linebreakContainer:!0,defaults:{definitionURL:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}}),t[\"annotation-xml\"]=t.mbase.Subclass({type:\"annotation-xml\",linebreakContainer:!0,defaults:{definitionURL:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}}),t.math=t.mstyle.Subclass({type:\"math\",defaults:{mathvariant:t.VARIANT.NORMAL,mathsize:t.SIZE.NORMAL,mathcolor:\"\",mathbackground:t.COLOR.TRANSPARENT,dir:\"ltr\",scriptlevel:0,displaystyle:t.AUTO,display:\"inline\",maxwidth:\"\",overflow:t.OVERFLOW.LINEBREAK,altimg:\"\",\"altimg-width\":\"\",\"altimg-height\":\"\",\"altimg-valign\":\"\",alttext:\"\",cdgroup:\"\",scriptsizemultiplier:Math.sqrt(.5),scriptminsize:\"8px\",infixlinebreakstyle:t.LINEBREAKSTYLE.BEFORE,lineleading:\"1ex\",indentshift:\"auto\",indentalign:t.INDENTALIGN.AUTO,indentalignfirst:t.INDENTALIGN.INDENTALIGN,indentshiftfirst:t.INDENTSHIFT.INDENTSHIFT,indentalignlast:t.INDENTALIGN.INDENTALIGN,indentshiftlast:t.INDENTSHIFT.INDENTSHIFT,decimalseparator:\".\",texprimestyle:!1},autoDefault:function(t){return\"displaystyle\"===t?\"block\"===this.Get(\"display\"):\"\"},linebreakContainer:!0,setTeXclass:t.mbase.setChildTeXclass,getAnnotation:function(t){return 1!=this.data.length?null:this.data[0].getAnnotation(t)}}),t.chars=t.mbase.Subclass({type:\"chars\",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){return this.data.join(\"\")},toString:function(){return this.data.join(\"\")}}),t.entity=t.mbase.Subclass({type:\"entity\",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){return\"#x\"===this.data[0].substr(0,2)?parseInt(this.data[0].substr(2),16):\"#\"===this.data[0].substr(0,1)?parseInt(this.data[0].substr(1)):0},toString:function(){var t=this.value();return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}}),t.xml=t.mbase.Subclass({type:\"xml\",Init:function(){return this.div=document.createElement(\"div\"),this.SUPER(arguments).Init.apply(this,arguments)},Append:function(){for(var t=0,e=arguments.length;t<e;t++){var i=this.Import(arguments[t]);this.data.push(i),this.div.appendChild(i)}},Import:function(t){if(document.importNode)return document.importNode(t,!0);var e,i,n;if(1===t.nodeType){for(e=document.createElement(t.nodeName),i=0,n=t.attributes.length;i<n;i++){var a=t.attributes[i];a.specified&&null!=a.nodeValue&&\"\"!=a.nodeValue&&e.setAttribute(a.nodeName,a.nodeValue),\"style\"===a.nodeName&&(e.style.cssText=a.nodeValue)}t.className&&(e.className=t.className)}else if(3===t.nodeType||4===t.nodeType)e=document.createTextNode(t.nodeValue);else{if(8!==t.nodeType)return document.createTextNode(\"\");e=document.createComment(t.nodeValue)}for(i=0,n=t.childNodes.length;i<n;i++)e.appendChild(this.Import(t.childNodes[i]));return e},value:function(){return this.div},toString:function(){return this.div.innerHTML}}),t.TeXAtom=t.mbase.Subclass({type:\"texatom\",linebreakContainer:!0,inferRow:!0,notParent:!0,texClass:t.TEXCLASS.ORD,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,isEmbellished:t.mbase.childEmbellished,setTeXclass:function(t){return this.data[0].setTeXclass(),this.adjustTeXclass(t)},adjustTeXclass:t.mo.prototype.adjustTeXclass}),t.NULL=t.mbase().With({type:\"null\"});var e=t.TEXCLASS,i={ORD:[0,0,e.ORD],ORD11:[1,1,e.ORD],ORD21:[2,1,e.ORD],ORD02:[0,2,e.ORD],ORD55:[5,5,e.ORD],OP:[1,2,e.OP,{largeop:!0,movablelimits:!0,symmetric:!0}],OPFIXED:[1,2,e.OP,{largeop:!0,movablelimits:!0}],INTEGRAL:[0,1,e.OP,{largeop:!0,symmetric:!0}],INTEGRAL2:[1,2,e.OP,{largeop:!0,symmetric:!0}],BIN3:[3,3,e.BIN],BIN4:[4,4,e.BIN],BIN01:[0,1,e.BIN],BIN5:[5,5,e.BIN],TALLBIN:[4,4,e.BIN,{stretchy:!0}],BINOP:[4,4,e.BIN,{largeop:!0,movablelimits:!0}],REL:[5,5,e.REL],REL1:[1,1,e.REL,{stretchy:!0}],REL4:[4,4,e.REL],RELSTRETCH:[5,5,e.REL,{stretchy:!0}],RELACCENT:[5,5,e.REL,{accent:!0}],WIDEREL:[5,5,e.REL,{accent:!0,stretchy:!0}],OPEN:[0,0,e.OPEN,{fence:!0,stretchy:!0,symmetric:!0}],CLOSE:[0,0,e.CLOSE,{fence:!0,stretchy:!0,symmetric:!0}],INNER:[0,0,e.INNER],PUNCT:[0,3,e.PUNCT],ACCENT:[0,0,e.ORD,{accent:!0}],WIDEACCENT:[0,0,e.ORD,{accent:!0,stretchy:!0}]};t.mo.Augment({SPACE:[\"0em\",\"0.1111em\",\"0.1667em\",\"0.2222em\",\"0.2667em\",\"0.3333em\"],RANGES:[[32,127,e.REL,\"BasicLatin\"],[160,255,e.ORD,\"Latin1Supplement\"],[256,383,e.ORD],[384,591,e.ORD],[688,767,e.ORD,\"SpacingModLetters\"],[768,879,e.ORD,\"CombDiacritMarks\"],[880,1023,e.ORD,\"GreekAndCoptic\"],[7680,7935,e.ORD],[8192,8303,e.PUNCT,\"GeneralPunctuation\"],[8304,8351,e.ORD],[8352,8399,e.ORD],[8400,8447,e.ORD,\"CombDiactForSymbols\"],[8448,8527,e.ORD,\"LetterlikeSymbols\"],[8528,8591,e.ORD],[8592,8703,e.REL,\"Arrows\"],[8704,8959,e.BIN,\"MathOperators\"],[8960,9215,e.ORD,\"MiscTechnical\"],[9312,9471,e.ORD],[9472,9631,e.ORD],[9632,9727,e.ORD,\"GeometricShapes\"],[9984,10175,e.ORD,\"Dingbats\"],[10176,10223,e.ORD,\"MiscMathSymbolsA\"],[10224,10239,e.REL,\"SupplementalArrowsA\"],[10496,10623,e.REL,\"SupplementalArrowsB\"],[10624,10751,e.ORD,\"MiscMathSymbolsB\"],[10752,11007,e.BIN,\"SuppMathOperators\"],[11008,11263,e.ORD,\"MiscSymbolsAndArrows\"],[119808,120831,e.ORD]],OPTABLE:{prefix:{\"\\u2200\":i.ORD21,\"\\u2202\":i.ORD21,\"\\u2203\":i.ORD21,\"\\u2207\":i.ORD21,\"\\u220f\":i.OP,\"\\u2210\":i.OP,\"\\u2211\":i.OP,\"\\u2212\":i.BIN01,\"\\u2213\":i.BIN01,\"\\u221a\":[1,1,e.ORD,{stretchy:!0}],\"\\u2220\":i.ORD,\"\\u222b\":i.INTEGRAL,\"\\u222e\":i.INTEGRAL,\"\\u22c0\":i.OP,\"\\u22c1\":i.OP,\"\\u22c2\":i.OP,\"\\u22c3\":i.OP,\"\\u2308\":i.OPEN,\"\\u230a\":i.OPEN,\"\\u27e8\":i.OPEN,\"\\u27ee\":i.OPEN,\"\\u2a00\":i.OP,\"\\u2a01\":i.OP,\"\\u2a02\":i.OP,\"\\u2a04\":i.OP,\"\\u2a06\":i.OP,\"\\xac\":i.ORD21,\"\\xb1\":i.BIN01,\"(\":i.OPEN,\"+\":i.BIN01,\"-\":i.BIN01,\"[\":i.OPEN,\"{\":i.OPEN,\"|\":i.OPEN},postfix:{\"!\":[1,0,e.CLOSE],\"&\":i.ORD,\"\\u2032\":i.ORD02,\"\\u203e\":i.WIDEACCENT,\"\\u2309\":i.CLOSE,\"\\u230b\":i.CLOSE,\"\\u23de\":i.WIDEACCENT,\"\\u23df\":i.WIDEACCENT,\"\\u266d\":i.ORD02,\"\\u266e\":i.ORD02,\"\\u266f\":i.ORD02,\"\\u27e9\":i.CLOSE,\"\\u27ef\":i.CLOSE,\"\\u02c6\":i.WIDEACCENT,\"\\u02c7\":i.WIDEACCENT,\"\\u02c9\":i.WIDEACCENT,\"\\u02ca\":i.ACCENT,\"\\u02cb\":i.ACCENT,\"\\u02d8\":i.ACCENT,\"\\u02d9\":i.ACCENT,\"\\u02dc\":i.WIDEACCENT,\"\\u0302\":i.WIDEACCENT,\"\\xa8\":i.ACCENT,\"\\xaf\":i.WIDEACCENT,\")\":i.CLOSE,\"]\":i.CLOSE,\"^\":i.WIDEACCENT,_:i.WIDEACCENT,\"`\":i.ACCENT,\"|\":i.CLOSE,\"}\":i.CLOSE,\"~\":i.WIDEACCENT},infix:{\"\":i.ORD,\"%\":[3,3,e.ORD],\"\\u2022\":i.BIN4,\"\\u2026\":i.INNER,\"\\u2044\":i.TALLBIN,\"\\u2061\":i.ORD,\"\\u2062\":i.ORD,\"\\u2063\":[0,0,e.ORD,{linebreakstyle:\"after\",separator:!0}],\"\\u2064\":i.ORD,\"\\u2190\":i.WIDEREL,\"\\u2191\":i.RELSTRETCH,\"\\u2192\":i.WIDEREL,\"\\u2193\":i.RELSTRETCH,\"\\u2194\":i.WIDEREL,\"\\u2195\":i.RELSTRETCH,\"\\u2196\":i.RELSTRETCH,\"\\u2197\":i.RELSTRETCH,\"\\u2198\":i.RELSTRETCH,\"\\u2199\":i.RELSTRETCH,\"\\u21a6\":i.WIDEREL,\"\\u21a9\":i.WIDEREL,\"\\u21aa\":i.WIDEREL,\"\\u21bc\":i.WIDEREL,\"\\u21bd\":i.WIDEREL,\"\\u21c0\":i.WIDEREL,\"\\u21c1\":i.WIDEREL,\"\\u21cc\":i.WIDEREL,\"\\u21d0\":i.WIDEREL,\"\\u21d1\":i.RELSTRETCH,\"\\u21d2\":i.WIDEREL,\"\\u21d3\":i.RELSTRETCH,\"\\u21d4\":i.WIDEREL,\"\\u21d5\":i.RELSTRETCH,\"\\u2208\":i.REL,\"\\u2209\":i.REL,\"\\u220b\":i.REL,\"\\u2212\":i.BIN4,\"\\u2213\":i.BIN4,\"\\u2215\":i.TALLBIN,\"\\u2216\":i.BIN4,\"\\u2217\":i.BIN4,\"\\u2218\":i.BIN4,\"\\u2219\":i.BIN4,\"\\u221d\":i.REL,\"\\u2223\":i.REL,\"\\u2225\":i.REL,\"\\u2227\":i.BIN4,\"\\u2228\":i.BIN4,\"\\u2229\":i.BIN4,\"\\u222a\":i.BIN4,\"\\u223c\":i.REL,\"\\u2240\":i.BIN4,\"\\u2243\":i.REL,\"\\u2245\":i.REL,\"\\u2248\":i.REL,\"\\u224d\":i.REL,\"\\u2250\":i.REL,\"\\u2260\":i.REL,\"\\u2261\":i.REL,\"\\u2264\":i.REL,\"\\u2265\":i.REL,\"\\u226a\":i.REL,\"\\u226b\":i.REL,\"\\u227a\":i.REL,\"\\u227b\":i.REL,\"\\u2282\":i.REL,\"\\u2283\":i.REL,\"\\u2286\":i.REL,\"\\u2287\":i.REL,\"\\u228e\":i.BIN4,\"\\u2291\":i.REL,\"\\u2292\":i.REL,\"\\u2293\":i.BIN4,\"\\u2294\":i.BIN4,\"\\u2295\":i.BIN4,\"\\u2296\":i.BIN4,\"\\u2297\":i.BIN4,\"\\u2298\":i.BIN4,\"\\u2299\":i.BIN4,\"\\u22a2\":i.REL,\"\\u22a3\":i.REL,\"\\u22a4\":i.ORD55,\"\\u22a5\":i.REL,\"\\u22a8\":i.REL,\"\\u22c4\":i.BIN4,\"\\u22c5\":i.BIN4,\"\\u22c6\":i.BIN4,\"\\u22c8\":i.REL,\"\\u22ee\":i.ORD55,\"\\u22ef\":i.INNER,\"\\u22f1\":[5,5,e.INNER],\"\\u25b3\":i.BIN4,\"\\u25b5\":i.BIN4,\"\\u25b9\":i.BIN4,\"\\u25bd\":i.BIN4,\"\\u25bf\":i.BIN4,\"\\u25c3\":i.BIN4,\"\\u2758\":i.REL,\"\\u27f5\":i.WIDEREL,\"\\u27f6\":i.WIDEREL,\"\\u27f7\":i.WIDEREL,\"\\u27f8\":i.WIDEREL,\"\\u27f9\":i.WIDEREL,\"\\u27fa\":i.WIDEREL,\"\\u27fc\":i.WIDEREL,\"\\u2a2f\":i.BIN4,\"\\u2a3f\":i.BIN4,\"\\u2aaf\":i.REL,\"\\u2ab0\":i.REL,\"\\xb1\":i.BIN4,\"\\xb7\":i.BIN4,\"\\xd7\":i.BIN4,\"\\xf7\":i.BIN4,\"*\":i.BIN3,\"+\":i.BIN4,\",\":[0,3,e.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"-\":i.BIN4,\".\":[3,3,e.ORD],\"/\":i.ORD11,\":\":[1,2,e.REL],\";\":[0,3,e.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"<\":i.REL,\"=\":i.REL,\">\":i.REL,\"?\":[1,1,e.CLOSE],\"\\\\\":i.ORD,\"^\":i.ORD11,_:i.ORD11,\"|\":[2,2,e.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"#\":i.ORD,$:i.ORD,\".\":[0,3,e.PUNCT,{separator:!0}],\"\\u02b9\":i.ORD,\"\\u0300\":i.ACCENT,\"\\u0301\":i.ACCENT,\"\\u0303\":i.WIDEACCENT,\"\\u0304\":i.ACCENT,\"\\u0306\":i.ACCENT,\"\\u0307\":i.ACCENT,\"\\u0308\":i.ACCENT,\"\\u030c\":i.ACCENT,\"\\u0332\":i.WIDEACCENT,\"\\u0338\":i.REL4,\"\\u2015\":[0,0,e.ORD,{stretchy:!0}],\"\\u2017\":[0,0,e.ORD,{stretchy:!0}],\"\\u2020\":i.BIN3,\"\\u2021\":i.BIN3,\"\\u20d7\":i.ACCENT,\"\\u2111\":i.ORD,\"\\u2113\":i.ORD,\"\\u2118\":i.ORD,\"\\u211c\":i.ORD,\"\\u2205\":i.ORD,\"\\u221e\":i.ORD,\"\\u2305\":i.BIN3,\"\\u2306\":i.BIN3,\"\\u2322\":i.REL4,\"\\u2323\":i.REL4,\"\\u2329\":i.OPEN,\"\\u232a\":i.CLOSE,\"\\u23aa\":i.ORD,\"\\u23af\":[0,0,e.ORD,{stretchy:!0}],\"\\u23b0\":i.OPEN,\"\\u23b1\":i.CLOSE,\"\\u2500\":i.ORD,\"\\u25ef\":i.BIN3,\"\\u2660\":i.ORD,\"\\u2661\":i.ORD,\"\\u2662\":i.ORD,\"\\u2663\":i.ORD,\"\\u3008\":i.OPEN,\"\\u3009\":i.CLOSE,\"\\ufe37\":i.WIDEACCENT,\"\\ufe38\":i.WIDEACCENT}}},{OPTYPES:i});var n=t.mo.prototype.OPTABLE;n.infix[\"^\"]=i.WIDEREL,n.infix._=i.WIDEREL,n.prefix[\"\\u2223\"]=i.OPEN,n.prefix[\"\\u2225\"]=i.OPEN,n.postfix[\"\\u2223\"]=i.CLOSE,n.postfix[\"\\u2225\"]=i.CLOSE}(MathJax.ElementJax.mml),MathJax.ElementJax.mml.loadComplete(\"jax.js\")},function(t,e){MathJax.InputJax.AsciiMath=MathJax.InputJax({id:\"AsciiMath\",version:\"2.7.2\",directory:MathJax.InputJax.directory+\"/AsciiMath\",extensionDir:MathJax.InputJax.extensionDir+\"/AsciiMath\",config:{fixphi:!0,useMathMLspacing:!0,displaystyle:!0,decimalsign:\".\"}}),MathJax.InputJax.AsciiMath.Register(\"math/asciimath\"),MathJax.InputJax.AsciiMath.loadComplete(\"config.js\")},function(t,e){var i,n;!function(t){var e,i=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(t){return t.parent&&t.parent.removeChild(t),this.lastChild&&(this.lastChild.nextSibling=t),this.firstChild||(this.firstChild=t),this.childNodes.push(t),t.parent=this,this.lastChild=t,t},removeChild:function(t){for(var e=0,i=this.childNodes.length;e<i&&this.childNodes[e]!==t;e++);if(e!==i)return this.childNodes.splice(e,1),t===this.firstChild&&(this.firstChild=t.nextSibling),t===this.lastChild&&(this.childNodes.length?this.lastChild=this.childNodes[this.childNodes.length-1]:this.lastChild=null),e&&(this.childNodes[e-1].nextSibling=t.nextSibling),t.nextSibling=t.parent=null,t},replaceChild:function(t,e){for(var i=0,n=this.childNodes.length;i<n&&this.childNodes[i]!==e;i++);return i?this.childNodes[i-1].nextSibling=t:this.firstChild=t,i>=n-1&&(this.lastChild=t),this.childNodes[i]=t,t.nextSibling=e.nextSibling,e.nextSibling=e.parent=null,e},hasChildNodes:function(t){return this.childNodes.length>0},toString:function(){return\"{\"+this.childNodes.join(\"\")+\"}\"}}),n={getElementById:!0,createElementNS:function(i,n){var a=e[n]();return\"mo\"===n&&t.config.useMathMLspacing&&(a.useMMLspacing=128),a},createTextNode:function(t){return e.chars(t).With({nodeValue:t})},createDocumentFragment:function(){return i()}},a={appName:\"MathJax\"},s=\"blue\",r=\"serif\",o=!0,l=!0,u=\".\",h=\"Microsoft\"==a.appName.slice(0,9);function p(t){return h?n.createElement(t):n.createElementNS(\"http://www.w3.org/1999/xhtml\",t)}var c=\"http://www.w3.org/1998/Math/MathML\";function d(t){return h?n.createElement(\"m:\"+t):n.createElementNS(c,t)}function m(t,e){var i;return i=h?n.createElement(\"m:\"+t):n.createElementNS(c,t),e&&i.appendChild(e),i}var f=[\"\\ud835\\udc9c\",\"\\u212c\",\"\\ud835\\udc9e\",\"\\ud835\\udc9f\",\"\\u2130\",\"\\u2131\",\"\\ud835\\udca2\",\"\\u210b\",\"\\u2110\",\"\\ud835\\udca5\",\"\\ud835\\udca6\",\"\\u2112\",\"\\u2133\",\"\\ud835\\udca9\",\"\\ud835\\udcaa\",\"\\ud835\\udcab\",\"\\ud835\\udcac\",\"\\u211b\",\"\\ud835\\udcae\",\"\\ud835\\udcaf\",\"\\ud835\\udcb0\",\"\\ud835\\udcb1\",\"\\ud835\\udcb2\",\"\\ud835\\udcb3\",\"\\ud835\\udcb4\",\"\\ud835\\udcb5\",\"\\ud835\\udcb6\",\"\\ud835\\udcb7\",\"\\ud835\\udcb8\",\"\\ud835\\udcb9\",\"\\u212f\",\"\\ud835\\udcbb\",\"\\u210a\",\"\\ud835\\udcbd\",\"\\ud835\\udcbe\",\"\\ud835\\udcbf\",\"\\ud835\\udcc0\",\"\\ud835\\udcc1\",\"\\ud835\\udcc2\",\"\\ud835\\udcc3\",\"\\u2134\",\"\\ud835\\udcc5\",\"\\ud835\\udcc6\",\"\\ud835\\udcc7\",\"\\ud835\\udcc8\",\"\\ud835\\udcc9\",\"\\ud835\\udcca\",\"\\ud835\\udccb\",\"\\ud835\\udccc\",\"\\ud835\\udccd\",\"\\ud835\\udcce\",\"\\ud835\\udccf\"],g=[\"\\ud835\\udd04\",\"\\ud835\\udd05\",\"\\u212d\",\"\\ud835\\udd07\",\"\\ud835\\udd08\",\"\\ud835\\udd09\",\"\\ud835\\udd0a\",\"\\u210c\",\"\\u2111\",\"\\ud835\\udd0d\",\"\\ud835\\udd0e\",\"\\ud835\\udd0f\",\"\\ud835\\udd10\",\"\\ud835\\udd11\",\"\\ud835\\udd12\",\"\\ud835\\udd13\",\"\\ud835\\udd14\",\"\\u211c\",\"\\ud835\\udd16\",\"\\ud835\\udd17\",\"\\ud835\\udd18\",\"\\ud835\\udd19\",\"\\ud835\\udd1a\",\"\\ud835\\udd1b\",\"\\ud835\\udd1c\",\"\\u2128\",\"\\ud835\\udd1e\",\"\\ud835\\udd1f\",\"\\ud835\\udd20\",\"\\ud835\\udd21\",\"\\ud835\\udd22\",\"\\ud835\\udd23\",\"\\ud835\\udd24\",\"\\ud835\\udd25\",\"\\ud835\\udd26\",\"\\ud835\\udd27\",\"\\ud835\\udd28\",\"\\ud835\\udd29\",\"\\ud835\\udd2a\",\"\\ud835\\udd2b\",\"\\ud835\\udd2c\",\"\\ud835\\udd2d\",\"\\ud835\\udd2e\",\"\\ud835\\udd2f\",\"\\ud835\\udd30\",\"\\ud835\\udd31\",\"\\ud835\\udd32\",\"\\ud835\\udd33\",\"\\ud835\\udd34\",\"\\ud835\\udd35\",\"\\ud835\\udd36\",\"\\ud835\\udd37\"],E=[\"\\ud835\\udd38\",\"\\ud835\\udd39\",\"\\u2102\",\"\\ud835\\udd3b\",\"\\ud835\\udd3c\",\"\\ud835\\udd3d\",\"\\ud835\\udd3e\",\"\\u210d\",\"\\ud835\\udd40\",\"\\ud835\\udd41\",\"\\ud835\\udd42\",\"\\ud835\\udd43\",\"\\ud835\\udd44\",\"\\u2115\",\"\\ud835\\udd46\",\"\\u2119\",\"\\u211a\",\"\\u211d\",\"\\ud835\\udd4a\",\"\\ud835\\udd4b\",\"\\ud835\\udd4c\",\"\\ud835\\udd4d\",\"\\ud835\\udd4e\",\"\\ud835\\udd4f\",\"\\ud835\\udd50\",\"\\u2124\",\"\\ud835\\udd52\",\"\\ud835\\udd53\",\"\\ud835\\udd54\",\"\\ud835\\udd55\",\"\\ud835\\udd56\",\"\\ud835\\udd57\",\"\\ud835\\udd58\",\"\\ud835\\udd59\",\"\\ud835\\udd5a\",\"\\ud835\\udd5b\",\"\\ud835\\udd5c\",\"\\ud835\\udd5d\",\"\\ud835\\udd5e\",\"\\ud835\\udd5f\",\"\\ud835\\udd60\",\"\\ud835\\udd61\",\"\\ud835\\udd62\",\"\\ud835\\udd63\",\"\\ud835\\udd64\",\"\\ud835\\udd65\",\"\\ud835\\udd66\",\"\\ud835\\udd67\",\"\\ud835\\udd68\",\"\\ud835\\udd69\",\"\\ud835\\udd6a\",\"\\ud835\\udd6b\"],y=8,x={input:'\"',tag:\"mtext\",output:\"mbox\",tex:null,ttype:10},T=[{input:\"alpha\",tag:\"mi\",output:\"\\u03b1\",tex:null,ttype:0},{input:\"beta\",tag:\"mi\",output:\"\\u03b2\",tex:null,ttype:0},{input:\"chi\",tag:\"mi\",output:\"\\u03c7\",tex:null,ttype:0},{input:\"delta\",tag:\"mi\",output:\"\\u03b4\",tex:null,ttype:0},{input:\"Delta\",tag:\"mo\",output:\"\\u0394\",tex:null,ttype:0},{input:\"epsi\",tag:\"mi\",output:\"\\u03b5\",tex:\"epsilon\",ttype:0},{input:\"varepsilon\",tag:\"mi\",output:\"\\u025b\",tex:null,ttype:0},{input:\"eta\",tag:\"mi\",output:\"\\u03b7\",tex:null,ttype:0},{input:\"gamma\",tag:\"mi\",output:\"\\u03b3\",tex:null,ttype:0},{input:\"Gamma\",tag:\"mo\",output:\"\\u0393\",tex:null,ttype:0},{input:\"iota\",tag:\"mi\",output:\"\\u03b9\",tex:null,ttype:0},{input:\"kappa\",tag:\"mi\",output:\"\\u03ba\",tex:null,ttype:0},{input:\"lambda\",tag:\"mi\",output:\"\\u03bb\",tex:null,ttype:0},{input:\"Lambda\",tag:\"mo\",output:\"\\u039b\",tex:null,ttype:0},{input:\"lamda\",tag:\"mi\",output:\"\\u03bb\",tex:null,ttype:0},{input:\"Lamda\",tag:\"mo\",output:\"\\u039b\",tex:null,ttype:0},{input:\"mu\",tag:\"mi\",output:\"\\u03bc\",tex:null,ttype:0},{input:\"nu\",tag:\"mi\",output:\"\\u03bd\",tex:null,ttype:0},{input:\"omega\",tag:\"mi\",output:\"\\u03c9\",tex:null,ttype:0},{input:\"Omega\",tag:\"mo\",output:\"\\u03a9\",tex:null,ttype:0},{input:\"phi\",tag:\"mi\",output:\"\\u03d5\",tex:null,ttype:0},{input:\"varphi\",tag:\"mi\",output:\"\\u03c6\",tex:null,ttype:0},{input:\"Phi\",tag:\"mo\",output:\"\\u03a6\",tex:null,ttype:0},{input:\"pi\",tag:\"mi\",output:\"\\u03c0\",tex:null,ttype:0},{input:\"Pi\",tag:\"mo\",output:\"\\u03a0\",tex:null,ttype:0},{input:\"psi\",tag:\"mi\",output:\"\\u03c8\",tex:null,ttype:0},{input:\"Psi\",tag:\"mi\",output:\"\\u03a8\",tex:null,ttype:0},{input:\"rho\",tag:\"mi\",output:\"\\u03c1\",tex:null,ttype:0},{input:\"sigma\",tag:\"mi\",output:\"\\u03c3\",tex:null,ttype:0},{input:\"Sigma\",tag:\"mo\",output:\"\\u03a3\",tex:null,ttype:0},{input:\"tau\",tag:\"mi\",output:\"\\u03c4\",tex:null,ttype:0},{input:\"theta\",tag:\"mi\",output:\"\\u03b8\",tex:null,ttype:0},{input:\"vartheta\",tag:\"mi\",output:\"\\u03d1\",tex:null,ttype:0},{input:\"Theta\",tag:\"mo\",output:\"\\u0398\",tex:null,ttype:0},{input:\"upsilon\",tag:\"mi\",output:\"\\u03c5\",tex:null,ttype:0},{input:\"xi\",tag:\"mi\",output:\"\\u03be\",tex:null,ttype:0},{input:\"Xi\",tag:\"mo\",output:\"\\u039e\",tex:null,ttype:0},{input:\"zeta\",tag:\"mi\",output:\"\\u03b6\",tex:null,ttype:0},{input:\"*\",tag:\"mo\",output:\"\\u22c5\",tex:\"cdot\",ttype:0},{input:\"**\",tag:\"mo\",output:\"\\u2217\",tex:\"ast\",ttype:0},{input:\"***\",tag:\"mo\",output:\"\\u22c6\",tex:\"star\",ttype:0},{input:\"//\",tag:\"mo\",output:\"/\",tex:null,ttype:0},{input:\"\\\\\\\\\",tag:\"mo\",output:\"\\\\\",tex:\"backslash\",ttype:0},{input:\"setminus\",tag:\"mo\",output:\"\\\\\",tex:null,ttype:0},{input:\"xx\",tag:\"mo\",output:\"\\xd7\",tex:\"times\",ttype:0},{input:\"|><\",tag:\"mo\",output:\"\\u22c9\",tex:\"ltimes\",ttype:0},{input:\"><|\",tag:\"mo\",output:\"\\u22ca\",tex:\"rtimes\",ttype:0},{input:\"|><|\",tag:\"mo\",output:\"\\u22c8\",tex:\"bowtie\",ttype:0},{input:\"-:\",tag:\"mo\",output:\"\\xf7\",tex:\"div\",ttype:0},{input:\"divide\",tag:\"mo\",output:\"-:\",tex:null,ttype:y},{input:\"@\",tag:\"mo\",output:\"\\u2218\",tex:\"circ\",ttype:0},{input:\"o+\",tag:\"mo\",output:\"\\u2295\",tex:\"oplus\",ttype:0},{input:\"ox\",tag:\"mo\",output:\"\\u2297\",tex:\"otimes\",ttype:0},{input:\"o.\",tag:\"mo\",output:\"\\u2299\",tex:\"odot\",ttype:0},{input:\"sum\",tag:\"mo\",output:\"\\u2211\",tex:null,ttype:7},{input:\"prod\",tag:\"mo\",output:\"\\u220f\",tex:null,ttype:7},{input:\"^^\",tag:\"mo\",output:\"\\u2227\",tex:\"wedge\",ttype:0},{input:\"^^^\",tag:\"mo\",output:\"\\u22c0\",tex:\"bigwedge\",ttype:7},{input:\"vv\",tag:\"mo\",output:\"\\u2228\",tex:\"vee\",ttype:0},{input:\"vvv\",tag:\"mo\",output:\"\\u22c1\",tex:\"bigvee\",ttype:7},{input:\"nn\",tag:\"mo\",output:\"\\u2229\",tex:\"cap\",ttype:0},{input:\"nnn\",tag:\"mo\",output:\"\\u22c2\",tex:\"bigcap\",ttype:7},{input:\"uu\",tag:\"mo\",output:\"\\u222a\",tex:\"cup\",ttype:0},{input:\"uuu\",tag:\"mo\",output:\"\\u22c3\",tex:\"bigcup\",ttype:7},{input:\"!=\",tag:\"mo\",output:\"\\u2260\",tex:\"ne\",ttype:0},{input:\":=\",tag:\"mo\",output:\":=\",tex:null,ttype:0},{input:\"lt\",tag:\"mo\",output:\"<\",tex:null,ttype:0},{input:\"<=\",tag:\"mo\",output:\"\\u2264\",tex:\"le\",ttype:0},{input:\"lt=\",tag:\"mo\",output:\"\\u2264\",tex:\"leq\",ttype:0},{input:\"gt\",tag:\"mo\",output:\">\",tex:null,ttype:0},{input:\">=\",tag:\"mo\",output:\"\\u2265\",tex:\"ge\",ttype:0},{input:\"gt=\",tag:\"mo\",output:\"\\u2265\",tex:\"geq\",ttype:0},{input:\"-<\",tag:\"mo\",output:\"\\u227a\",tex:\"prec\",ttype:0},{input:\"-lt\",tag:\"mo\",output:\"\\u227a\",tex:null,ttype:0},{input:\">-\",tag:\"mo\",output:\"\\u227b\",tex:\"succ\",ttype:0},{input:\"-<=\",tag:\"mo\",output:\"\\u2aaf\",tex:\"preceq\",ttype:0},{input:\">-=\",tag:\"mo\",output:\"\\u2ab0\",tex:\"succeq\",ttype:0},{input:\"in\",tag:\"mo\",output:\"\\u2208\",tex:null,ttype:0},{input:\"!in\",tag:\"mo\",output:\"\\u2209\",tex:\"notin\",ttype:0},{input:\"sub\",tag:\"mo\",output:\"\\u2282\",tex:\"subset\",ttype:0},{input:\"sup\",tag:\"mo\",output:\"\\u2283\",tex:\"supset\",ttype:0},{input:\"sube\",tag:\"mo\",output:\"\\u2286\",tex:\"subseteq\",ttype:0},{input:\"supe\",tag:\"mo\",output:\"\\u2287\",tex:\"supseteq\",ttype:0},{input:\"-=\",tag:\"mo\",output:\"\\u2261\",tex:\"equiv\",ttype:0},{input:\"~=\",tag:\"mo\",output:\"\\u2245\",tex:\"cong\",ttype:0},{input:\"~~\",tag:\"mo\",output:\"\\u2248\",tex:\"approx\",ttype:0},{input:\"prop\",tag:\"mo\",output:\"\\u221d\",tex:\"propto\",ttype:0},{input:\"and\",tag:\"mtext\",output:\"and\",tex:null,ttype:6},{input:\"or\",tag:\"mtext\",output:\"or\",tex:null,ttype:6},{input:\"not\",tag:\"mo\",output:\"\\xac\",tex:\"neg\",ttype:0},{input:\"=>\",tag:\"mo\",output:\"\\u21d2\",tex:\"implies\",ttype:0},{input:\"if\",tag:\"mo\",output:\"if\",tex:null,ttype:6},{input:\"<=>\",tag:\"mo\",output:\"\\u21d4\",tex:\"iff\",ttype:0},{input:\"AA\",tag:\"mo\",output:\"\\u2200\",tex:\"forall\",ttype:0},{input:\"EE\",tag:\"mo\",output:\"\\u2203\",tex:\"exists\",ttype:0},{input:\"_|_\",tag:\"mo\",output:\"\\u22a5\",tex:\"bot\",ttype:0},{input:\"TT\",tag:\"mo\",output:\"\\u22a4\",tex:\"top\",ttype:0},{input:\"|--\",tag:\"mo\",output:\"\\u22a2\",tex:\"vdash\",ttype:0},{input:\"|==\",tag:\"mo\",output:\"\\u22a8\",tex:\"models\",ttype:0},{input:\"(\",tag:\"mo\",output:\"(\",tex:null,ttype:4},{input:\")\",tag:\"mo\",output:\")\",tex:null,ttype:5},{input:\"[\",tag:\"mo\",output:\"[\",tex:null,ttype:4},{input:\"]\",tag:\"mo\",output:\"]\",tex:null,ttype:5},{input:\"{\",tag:\"mo\",output:\"{\",tex:null,ttype:4},{input:\"}\",tag:\"mo\",output:\"}\",tex:null,ttype:5},{input:\"|\",tag:\"mo\",output:\"|\",tex:null,ttype:9},{input:\"(:\",tag:\"mo\",output:\"\\u2329\",tex:\"langle\",ttype:4},{input:\":)\",tag:\"mo\",output:\"\\u232a\",tex:\"rangle\",ttype:5},{input:\"<<\",tag:\"mo\",output:\"\\u2329\",tex:null,ttype:4},{input:\">>\",tag:\"mo\",output:\"\\u232a\",tex:null,ttype:5},{input:\"{:\",tag:\"mo\",output:\"{:\",tex:null,ttype:4,invisible:!0},{input:\":}\",tag:\"mo\",output:\":}\",tex:null,ttype:5,invisible:!0},{input:\"int\",tag:\"mo\",output:\"\\u222b\",tex:null,ttype:0},{input:\"dx\",tag:\"mi\",output:\"{:d x:}\",tex:null,ttype:y},{input:\"dy\",tag:\"mi\",output:\"{:d y:}\",tex:null,ttype:y},{input:\"dz\",tag:\"mi\",output:\"{:d z:}\",tex:null,ttype:y},{input:\"dt\",tag:\"mi\",output:\"{:d t:}\",tex:null,ttype:y},{input:\"oint\",tag:\"mo\",output:\"\\u222e\",tex:null,ttype:0},{input:\"del\",tag:\"mo\",output:\"\\u2202\",tex:\"partial\",ttype:0},{input:\"grad\",tag:\"mo\",output:\"\\u2207\",tex:\"nabla\",ttype:0},{input:\"+-\",tag:\"mo\",output:\"\\xb1\",tex:\"pm\",ttype:0},{input:\"O/\",tag:\"mo\",output:\"\\u2205\",tex:\"emptyset\",ttype:0},{input:\"oo\",tag:\"mo\",output:\"\\u221e\",tex:\"infty\",ttype:0},{input:\"aleph\",tag:\"mo\",output:\"\\u2135\",tex:null,ttype:0},{input:\"...\",tag:\"mo\",output:\"...\",tex:\"ldots\",ttype:0},{input:\":.\",tag:\"mo\",output:\"\\u2234\",tex:\"therefore\",ttype:0},{input:\":'\",tag:\"mo\",output:\"\\u2235\",tex:\"because\",ttype:0},{input:\"/_\",tag:\"mo\",output:\"\\u2220\",tex:\"angle\",ttype:0},{input:\"/_\\\\\",tag:\"mo\",output:\"\\u25b3\",tex:\"triangle\",ttype:0},{input:\"'\",tag:\"mo\",output:\"\\u2032\",tex:\"prime\",ttype:0},{input:\"tilde\",tag:\"mover\",output:\"~\",tex:null,ttype:1,acc:!0},{input:\"\\\\ \",tag:\"mo\",output:\"\\xa0\",tex:null,ttype:0},{input:\"frown\",tag:\"mo\",output:\"\\u2322\",tex:null,ttype:0},{input:\"quad\",tag:\"mo\",output:\"\\xa0\\xa0\",tex:null,ttype:0},{input:\"qquad\",tag:\"mo\",output:\"\\xa0\\xa0\\xa0\\xa0\",tex:null,ttype:0},{input:\"cdots\",tag:\"mo\",output:\"\\u22ef\",tex:null,ttype:0},{input:\"vdots\",tag:\"mo\",output:\"\\u22ee\",tex:null,ttype:0},{input:\"ddots\",tag:\"mo\",output:\"\\u22f1\",tex:null,ttype:0},{input:\"diamond\",tag:\"mo\",output:\"\\u22c4\",tex:null,ttype:0},{input:\"square\",tag:\"mo\",output:\"\\u25a1\",tex:null,ttype:0},{input:\"|__\",tag:\"mo\",output:\"\\u230a\",tex:\"lfloor\",ttype:0},{input:\"__|\",tag:\"mo\",output:\"\\u230b\",tex:\"rfloor\",ttype:0},{input:\"|~\",tag:\"mo\",output:\"\\u2308\",tex:\"lceiling\",ttype:0},{input:\"~|\",tag:\"mo\",output:\"\\u2309\",tex:\"rceiling\",ttype:0},{input:\"CC\",tag:\"mo\",output:\"\\u2102\",tex:null,ttype:0},{input:\"NN\",tag:\"mo\",output:\"\\u2115\",tex:null,ttype:0},{input:\"QQ\",tag:\"mo\",output:\"\\u211a\",tex:null,ttype:0},{input:\"RR\",tag:\"mo\",output:\"\\u211d\",tex:null,ttype:0},{input:\"ZZ\",tag:\"mo\",output:\"\\u2124\",tex:null,ttype:0},{input:\"f\",tag:\"mi\",output:\"f\",tex:null,ttype:1,func:!0},{input:\"g\",tag:\"mi\",output:\"g\",tex:null,ttype:1,func:!0},{input:\"lim\",tag:\"mo\",output:\"lim\",tex:null,ttype:7},{input:\"Lim\",tag:\"mo\",output:\"Lim\",tex:null,ttype:7},{input:\"sin\",tag:\"mo\",output:\"sin\",tex:null,ttype:1,func:!0},{input:\"cos\",tag:\"mo\",output:\"cos\",tex:null,ttype:1,func:!0},{input:\"tan\",tag:\"mo\",output:\"tan\",tex:null,ttype:1,func:!0},{input:\"sinh\",tag:\"mo\",output:\"sinh\",tex:null,ttype:1,func:!0},{input:\"cosh\",tag:\"mo\",output:\"cosh\",tex:null,ttype:1,func:!0},{input:\"tanh\",tag:\"mo\",output:\"tanh\",tex:null,ttype:1,func:!0},{input:\"cot\",tag:\"mo\",output:\"cot\",tex:null,ttype:1,func:!0},{input:\"sec\",tag:\"mo\",output:\"sec\",tex:null,ttype:1,func:!0},{input:\"csc\",tag:\"mo\",output:\"csc\",tex:null,ttype:1,func:!0},{input:\"arcsin\",tag:\"mo\",output:\"arcsin\",tex:null,ttype:1,func:!0},{input:\"arccos\",tag:\"mo\",output:\"arccos\",tex:null,ttype:1,func:!0},{input:\"arctan\",tag:\"mo\",output:\"arctan\",tex:null,ttype:1,func:!0},{input:\"coth\",tag:\"mo\",output:\"coth\",tex:null,ttype:1,func:!0},{input:\"sech\",tag:\"mo\",output:\"sech\",tex:null,ttype:1,func:!0},{input:\"csch\",tag:\"mo\",output:\"csch\",tex:null,ttype:1,func:!0},{input:\"exp\",tag:\"mo\",output:\"exp\",tex:null,ttype:1,func:!0},{input:\"abs\",tag:\"mo\",output:\"abs\",tex:null,ttype:1,rewriteleftright:[\"|\",\"|\"]},{input:\"norm\",tag:\"mo\",output:\"norm\",tex:null,ttype:1,rewriteleftright:[\"\\u2225\",\"\\u2225\"]},{input:\"floor\",tag:\"mo\",output:\"floor\",tex:null,ttype:1,rewriteleftright:[\"\\u230a\",\"\\u230b\"]},{input:\"ceil\",tag:\"mo\",output:\"ceil\",tex:null,ttype:1,rewriteleftright:[\"\\u2308\",\"\\u2309\"]},{input:\"log\",tag:\"mo\",output:\"log\",tex:null,ttype:1,func:!0},{input:\"ln\",tag:\"mo\",output:\"ln\",tex:null,ttype:1,func:!0},{input:\"det\",tag:\"mo\",output:\"det\",tex:null,ttype:1,func:!0},{input:\"dim\",tag:\"mo\",output:\"dim\",tex:null,ttype:0},{input:\"mod\",tag:\"mo\",output:\"mod\",tex:null,ttype:0},{input:\"gcd\",tag:\"mo\",output:\"gcd\",tex:null,ttype:1,func:!0},{input:\"lcm\",tag:\"mo\",output:\"lcm\",tex:null,ttype:1,func:!0},{input:\"lub\",tag:\"mo\",output:\"lub\",tex:null,ttype:0},{input:\"glb\",tag:\"mo\",output:\"glb\",tex:null,ttype:0},{input:\"min\",tag:\"mo\",output:\"min\",tex:null,ttype:7},{input:\"max\",tag:\"mo\",output:\"max\",tex:null,ttype:7},{input:\"uarr\",tag:\"mo\",output:\"\\u2191\",tex:\"uparrow\",ttype:0},{input:\"darr\",tag:\"mo\",output:\"\\u2193\",tex:\"downarrow\",ttype:0},{input:\"rarr\",tag:\"mo\",output:\"\\u2192\",tex:\"rightarrow\",ttype:0},{input:\"->\",tag:\"mo\",output:\"\\u2192\",tex:\"to\",ttype:0},{input:\">->\",tag:\"mo\",output:\"\\u21a3\",tex:\"rightarrowtail\",ttype:0},{input:\"->>\",tag:\"mo\",output:\"\\u21a0\",tex:\"twoheadrightarrow\",ttype:0},{input:\">->>\",tag:\"mo\",output:\"\\u2916\",tex:\"twoheadrightarrowtail\",ttype:0},{input:\"|->\",tag:\"mo\",output:\"\\u21a6\",tex:\"mapsto\",ttype:0},{input:\"larr\",tag:\"mo\",output:\"\\u2190\",tex:\"leftarrow\",ttype:0},{input:\"harr\",tag:\"mo\",output:\"\\u2194\",tex:\"leftrightarrow\",ttype:0},{input:\"rArr\",tag:\"mo\",output:\"\\u21d2\",tex:\"Rightarrow\",ttype:0},{input:\"lArr\",tag:\"mo\",output:\"\\u21d0\",tex:\"Leftarrow\",ttype:0},{input:\"hArr\",tag:\"mo\",output:\"\\u21d4\",tex:\"Leftrightarrow\",ttype:0},{input:\"sqrt\",tag:\"msqrt\",output:\"sqrt\",tex:null,ttype:1},{input:\"root\",tag:\"mroot\",output:\"root\",tex:null,ttype:2},{input:\"frac\",tag:\"mfrac\",output:\"/\",tex:null,ttype:2},{input:\"/\",tag:\"mfrac\",output:\"/\",tex:null,ttype:3},{input:\"stackrel\",tag:\"mover\",output:\"stackrel\",tex:null,ttype:2},{input:\"overset\",tag:\"mover\",output:\"stackrel\",tex:null,ttype:2},{input:\"underset\",tag:\"munder\",output:\"stackrel\",tex:null,ttype:2},{input:\"_\",tag:\"msub\",output:\"_\",tex:null,ttype:3},{input:\"^\",tag:\"msup\",output:\"^\",tex:null,ttype:3},{input:\"hat\",tag:\"mover\",output:\"^\",tex:null,ttype:1,acc:!0},{input:\"bar\",tag:\"mover\",output:\"\\xaf\",tex:\"overline\",ttype:1,acc:!0},{input:\"vec\",tag:\"mover\",output:\"\\u2192\",tex:null,ttype:1,acc:!0},{input:\"dot\",tag:\"mover\",output:\".\",tex:null,ttype:1,acc:!0},{input:\"ddot\",tag:\"mover\",output:\"..\",tex:null,ttype:1,acc:!0},{input:\"ul\",tag:\"munder\",output:\"\\u0332\",tex:\"underline\",ttype:1,acc:!0},{input:\"ubrace\",tag:\"munder\",output:\"\\u23df\",tex:\"underbrace\",ttype:15,acc:!0},{input:\"obrace\",tag:\"mover\",output:\"\\u23de\",tex:\"overbrace\",ttype:15,acc:!0},{input:\"text\",tag:\"mtext\",output:\"text\",tex:null,ttype:10},{input:\"mbox\",tag:\"mtext\",output:\"mbox\",tex:null,ttype:10},{input:\"color\",tag:\"mstyle\",ttype:2},{input:\"cancel\",tag:\"menclose\",output:\"cancel\",tex:null,ttype:1},x,{input:\"bb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"bold\",output:\"bb\",tex:null,ttype:1},{input:\"mathbf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"bold\",output:\"mathbf\",tex:null,ttype:1},{input:\"sf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"sans-serif\",output:\"sf\",tex:null,ttype:1},{input:\"mathsf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"sans-serif\",output:\"mathsf\",tex:null,ttype:1},{input:\"bbb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"double-struck\",output:\"bbb\",tex:null,ttype:1,codes:E},{input:\"mathbb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"double-struck\",output:\"mathbb\",tex:null,ttype:1,codes:E},{input:\"cc\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"script\",output:\"cc\",tex:null,ttype:1,codes:f},{input:\"mathcal\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"script\",output:\"mathcal\",tex:null,ttype:1,codes:f},{input:\"tt\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"monospace\",output:\"tt\",tex:null,ttype:1},{input:\"mathtt\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"monospace\",output:\"mathtt\",tex:null,ttype:1},{input:\"fr\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"fraktur\",output:\"fr\",tex:null,ttype:1,codes:g},{input:\"mathfrak\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"fraktur\",output:\"mathfrak\",tex:null,ttype:1,codes:g}];function C(t,e){return t.input>e.input?1:-1}var b,S,I,N=[];function A(){var t,e=T.length;for(t=0;t<e;t++)T[t].tex&&T.push({input:T[t].tex,tag:T[t].tag,output:T[t].output,ttype:T[t].ttype,acc:T[t].acc||!1});v()}function v(){var t;for(T.sort(C),t=0;t<T.length;t++)N[t]=T[t].input}function R(t,e){var i;i=\"\\\\\"==t.charAt(e)&&\"\\\\\"!=t.charAt(e+1)&&\" \"!=t.charAt(e+1)?t.slice(e+1):t.slice(e);for(var n=0;n<i.length&&i.charCodeAt(n)<=32;n+=1);return i.slice(n)}function O(t,e,i){if(0==i){var n,a;for(i=-1,n=t.length;i+1<n;)t[a=i+n>>1]<e?i=a:n=a;return n}for(var s=i;s<t.length&&t[s]<e;s++);return s}function L(t){for(var e,i,n,a=0,s=\"\",r=!0,o=1;o<=t.length&&r;o++)i=t.slice(0,o),(a=O(N,i,a))<N.length&&t.slice(0,N[a].length)==N[a]&&(e=a,o=(s=N[a]).length),r=a<N.length&&t.slice(0,N[a].length)>=N[a];if(S=I,\"\"!=s)return I=T[e].ttype,T[e];I=0,a=1,i=t.slice(0,1);for(var l=!0;\"0\"<=i&&i<=\"9\"&&a<=t.length;)i=t.slice(a,a+1),a++;if(i==u&&\"0\"<=(i=t.slice(a,a+1))&&i<=\"9\")for(l=!1,a++;\"0\"<=i&&i<=\"9\"&&a<=t.length;)i=t.slice(a,a+1),a++;return l&&a>1||a>2?(i=t.slice(0,a-1),n=\"mn\"):(a=2,n=(\"A\">(i=t.slice(0,1))||i>\"Z\")&&(\"a\">i||i>\"z\")?\"mo\":\"mi\"),\"-\"==i&&3==S?(I=3,{input:i,tag:n,output:i,ttype:1,func:!0}):{input:i,tag:n,output:i,ttype:0}}function M(t){var e;t.hasChildNodes()&&(!t.firstChild.hasChildNodes()||\"mrow\"!=t.nodeName&&\"M:MROW\"!=t.nodeName||\"(\"!=(e=t.firstChild.firstChild.nodeValue)&&\"[\"!=e&&\"{\"!=e||t.removeChild(t.firstChild),!t.lastChild.hasChildNodes()||\"mrow\"!=t.nodeName&&\"M:MROW\"!=t.nodeName||\")\"!=(e=t.lastChild.firstChild.nodeValue)&&\"]\"!=e&&\"}\"!=e||t.removeChild(t.lastChild))}function D(t){var e,i,a,s,r,o=n.createDocumentFragment();if(null==(e=L(t=R(t,0)))||5==e.ttype&&b>0)return[null,t];switch(e.ttype==y&&(e=L(t=e.output+R(t,e.input.length))),e.ttype){case 7:case 0:return t=R(t,e.input.length),[m(e.tag,n.createTextNode(e.output)),t];case 4:return b++,a=k(t=R(t,e.input.length),!0),b--,\"boolean\"==typeof e.invisible&&e.invisible?i=m(\"mrow\",a[0]):(i=m(\"mo\",n.createTextNode(e.output)),(i=m(\"mrow\",i)).appendChild(a[0])),[i,a[1]];case 10:return e!=x&&(t=R(t,e.input.length)),-1==(s=\"{\"==t.charAt(0)?t.indexOf(\"}\"):\"(\"==t.charAt(0)?t.indexOf(\")\"):\"[\"==t.charAt(0)?t.indexOf(\"]\"):e==x?t.slice(1).indexOf('\"')+1:0)&&(s=t.length),\" \"==(r=t.slice(1,s)).charAt(0)&&((i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i)),o.appendChild(m(e.tag,n.createTextNode(r))),\" \"==r.charAt(r.length-1)&&((i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i)),t=R(t,s+1),[m(\"mrow\",o),t];case 15:case 1:if(null==(a=D(t=R(t,e.input.length)))[0])return[m(e.tag,n.createTextNode(e.output)),t];if(\"boolean\"==typeof e.func&&e.func)return\"^\"==(r=t.charAt(0))||\"_\"==r||\"/\"==r||\"|\"==r||\",\"==r||1==e.input.length&&e.input.match(/\\w/)&&\"(\"!=r?[m(e.tag,n.createTextNode(e.output)),t]:((i=m(\"mrow\",m(e.tag,n.createTextNode(e.output)))).appendChild(a[0]),[i,a[1]]);if(M(a[0]),\"sqrt\"==e.input)return[m(e.tag,a[0]),a[1]];if(void 0!==e.rewriteleftright)return(i=m(\"mrow\",m(\"mo\",n.createTextNode(e.rewriteleftright[0])))).appendChild(a[0]),i.appendChild(m(\"mo\",n.createTextNode(e.rewriteleftright[1]))),[i,a[1]];if(\"cancel\"==e.input)return(i=m(e.tag,a[0])).setAttribute(\"notation\",\"updiagonalstrike\"),[i,a[1]];if(\"boolean\"==typeof e.acc&&e.acc)return(i=m(e.tag,a[0])).appendChild(m(\"mo\",n.createTextNode(e.output))),[i,a[1]];if(!h&&void 0!==e.codes)for(s=0;s<a[0].childNodes.length;s++)if(\"mi\"==a[0].childNodes[s].nodeName||\"mi\"==a[0].nodeName){r=\"mi\"==a[0].nodeName?a[0].firstChild.nodeValue:a[0].childNodes[s].firstChild.nodeValue;for(var l=[],u=0;u<r.length;u++)r.charCodeAt(u)>64&&r.charCodeAt(u)<91?l+=e.codes[r.charCodeAt(u)-65]:r.charCodeAt(u)>96&&r.charCodeAt(u)<123?l+=e.codes[r.charCodeAt(u)-71]:l+=r.charAt(u);\"mi\"==a[0].nodeName?a[0]=m(\"mo\").appendChild(n.createTextNode(l)):a[0].replaceChild(m(\"mo\").appendChild(n.createTextNode(l)),a[0].childNodes[s])}return(i=m(e.tag,a[0])).setAttribute(e.atname,e.atval),[i,a[1]];case 2:if(null==(a=D(t=R(t,e.input.length)))[0])return[m(\"mo\",n.createTextNode(e.input)),t];M(a[0]);var p=D(a[1]);return null==p[0]?[m(\"mo\",n.createTextNode(e.input)),t]:(M(p[0]),\"color\"==e.input?(\"{\"==t.charAt(0)?s=t.indexOf(\"}\"):\"(\"==t.charAt(0)?s=t.indexOf(\")\"):\"[\"==t.charAt(0)&&(s=t.indexOf(\"]\")),r=t.slice(1,s),(i=m(e.tag,p[0])).setAttribute(\"mathcolor\",r),[i,p[1]]):(\"root\"!=e.input&&\"stackrel\"!=e.output||o.appendChild(p[0]),o.appendChild(a[0]),\"frac\"==e.input&&o.appendChild(p[0]),[m(e.tag,o),p[1]]));case 3:return t=R(t,e.input.length),[m(\"mo\",n.createTextNode(e.output)),t];case 6:return t=R(t,e.input.length),(i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i),o.appendChild(m(e.tag,n.createTextNode(e.output))),(i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i),[m(\"mrow\",o),t];case 9:return b++,a=k(t=R(t,e.input.length),!1),b--,r=\"\",null!=a[0].lastChild&&(r=a[0].lastChild.firstChild.nodeValue),\"|\"==r?(i=m(\"mo\",n.createTextNode(e.output)),(i=m(\"mrow\",i)).appendChild(a[0]),[i,a[1]]):(i=m(\"mo\",n.createTextNode(\"\\u2223\")),[i=m(\"mrow\",i),t]);default:return t=R(t,e.input.length),[m(e.tag,n.createTextNode(e.output)),t]}}function P(t){var e,i,a,s,r,o;if(i=L(t=R(t,0)),s=(r=D(t))[0],3==(e=L(t=r[1])).ttype&&\"/\"!=e.input){if(null==(r=D(t=R(t,e.input.length)))[0]?r[0]=m(\"mo\",n.createTextNode(\"\\u25a1\")):M(r[0]),t=r[1],o=7==i.ttype||15==i.ttype,\"_\"==e.input)if(\"^\"==(a=L(t)).input){var l=D(t=R(t,a.input.length));M(l[0]),t=l[1],(s=m(o?\"munderover\":\"msubsup\",s)).appendChild(r[0]),s.appendChild(l[0]),s=m(\"mrow\",s)}else(s=m(o?\"munder\":\"msub\",s)).appendChild(r[0]);else\"^\"==e.input&&o?(s=m(\"mover\",s)).appendChild(r[0]):(s=m(e.tag,s)).appendChild(r[0]);void 0!==i.func&&i.func&&3!=(a=L(t)).ttype&&5!=a.ttype&&(r=P(t),(s=m(\"mrow\",s)).appendChild(r[0]),t=r[1])}return[s,t]}function k(t,e){var i,a,s,r,o=n.createDocumentFragment();do{a=(s=P(t=R(t,0)))[0],3==(i=L(t=s[1])).ttype&&\"/\"==i.input?(null==(s=P(t=R(t,i.input.length)))[0]?s[0]=m(\"mo\",n.createTextNode(\"\\u25a1\")):M(s[0]),t=s[1],M(a),(a=m(i.tag,a)).appendChild(s[0]),o.appendChild(a),i=L(t)):null!=a&&o.appendChild(a)}while((5!=i.ttype&&(9!=i.ttype||e)||0==b)&&null!=i&&\"\"!=i.output);if(5==i.ttype||9==i.ttype){var l=o.childNodes.length;if(l>0&&\"mrow\"==o.childNodes[l-1].nodeName&&o.childNodes[l-1].lastChild&&o.childNodes[l-1].lastChild.firstChild){var u=o.childNodes[l-1].lastChild.firstChild.nodeValue;if(\")\"==u||\"]\"==u){var h=o.childNodes[l-1].firstChild.firstChild.nodeValue;if(\"(\"==h&&\")\"==u&&\"}\"!=i.output||\"[\"==h&&\"]\"==u){var p=[],c=!0,d=o.childNodes.length;for(r=0;c&&r<d;r+=2){if(p[r]=[],a=o.childNodes[r],c&&(c=\"mrow\"==a.nodeName&&(r==d-1||\"mo\"==a.nextSibling.nodeName&&\",\"==a.nextSibling.firstChild.nodeValue)&&a.firstChild.firstChild.nodeValue==h&&a.lastChild.firstChild.nodeValue==u),c)for(var f=0;f<a.childNodes.length;f++)\",\"==a.childNodes[f].firstChild.nodeValue&&(p[r][p[r].length]=f);c&&r>1&&(c=p[r].length==p[r-2].length)}if(c=c&&(p.length>1||p[0].length>0)){var g,E,y,x,T=n.createDocumentFragment();for(r=0;r<d;r+=2){for(g=n.createDocumentFragment(),E=n.createDocumentFragment(),y=(a=o.firstChild).childNodes.length,x=0,a.removeChild(a.firstChild),f=1;f<y-1;f++)void 0!==p[r][x]&&f==p[r][x]?(a.removeChild(a.firstChild),g.appendChild(m(\"mtd\",E)),x++):E.appendChild(a.firstChild);g.appendChild(m(\"mtd\",E)),o.childNodes.length>2&&(o.removeChild(o.firstChild),o.removeChild(o.firstChild)),T.appendChild(m(\"mtr\",g))}a=m(\"mtable\",T),\"boolean\"==typeof i.invisible&&i.invisible&&a.setAttribute(\"columnalign\",\"left\"),o.replaceChild(a,o.firstChild)}}}}t=R(t,i.input.length),\"boolean\"==typeof i.invisible&&i.invisible||(a=m(\"mo\",n.createTextNode(i.output)),o.appendChild(a))}return[o,t]}function H(t,e){var i;return b=0,i=m(\"mstyle\",k((t=(t=(t=(t=t.replace(/&nbsp;/g,\"\")).replace(/&gt;/g,\">\")).replace(/&lt;/g,\"<\")).replace(/(Sin|Cos|Tan|Arcsin|Arccos|Arctan|Sinh|Cosh|Tanh|Cot|Sec|Csc|Log|Ln|Abs)/g,(function(t){return t.toLowerCase()}))).replace(/^\\s+/g,\"\"),!1)[0]),\"\"!=s&&i.setAttribute(\"mathcolor\",s),\"\"!=r&&i.setAttribute(\"fontfamily\",r),o&&i.setAttribute(\"displaystyle\",\"true\"),i=m(\"math\",i),l&&i.setAttribute(\"title\",t.replace(/\\s+/g,\" \")),i}l=!1,r=\"\",s=\"\",function(){for(var t=0,e=T.length;t<e;t++)T[t].codes&&delete T[t].codes,T[t].func&&(T[t].tag=\"mi\")}(),t.Augment({AM:{Init:function(){if(o=t.config.displaystyle,u=t.config.decimal||t.config.decimalsign,!t.config.fixphi)for(var n=0,a=T.length;n<a;n++)\"phi\"===T[n].input&&(T[n].output=\"\\u03c6\"),\"varphi\"===T[n].input&&(T[n].output=\"\\u03d5\",n=a);var s;s=(e=MathJax.ElementJax.mml).mbase.prototype.Init,e.mbase.Augment({firstChild:null,lastChild:null,nodeValue:null,nextSibling:null,Init:function(){var t=s.apply(this,arguments)||this;return t.childNodes=t.data,t.nodeName=t.type,t},appendChild:function(t){t.parent&&t.parent.removeChild(t);var e=arguments;t.isa(i)&&(e=t.childNodes,t.data=t.childNodes=[],t.firstChild=t.lastChild=null);for(var n=0,a=e.length;n<a;n++)t=e[n],this.lastChild&&(this.lastChild.nextSibling=t),this.firstChild||(this.firstChild=t),this.Append(t),this.lastChild=t;return t},removeChild:function(t){for(var e=0,i=this.childNodes.length;e<i&&this.childNodes[e]!==t;e++);if(e!==i)return this.childNodes.splice(e,1),t===this.firstChild&&(this.firstChild=t.nextSibling),t===this.lastChild&&(this.childNodes.length?this.lastChild=this.childNodes[this.childNodes.length-1]:this.lastChild=null),e&&(this.childNodes[e-1].nextSibling=t.nextSibling),t.nextSibling=t.parent=null,t},replaceChild:function(t,e){for(var i=0,n=this.childNodes.length;i<n&&this.childNodes[i]!==e;i++);return i?this.childNodes[i-1].nextSibling=t:this.firstChild=t,i>=n-1&&(this.lastChild=t),this.SetData(i,t),t.nextSibling=e.nextSibling,e.nextSibling=e.parent=null,e},hasChildNodes:function(t){return this.childNodes.length>0},setAttribute:function(t,e){this[t]=e}}),A()},Augment:function(t){for(var e in t)if(t.hasOwnProperty(e)){switch(e){case\"displaystyle\":o=t[e];break;case\"decimal\":decimal=t[e];break;case\"parseMath\":H=t[e];break;case\"parseExpr\":k=t[e];break;case\"parseIexpr\":P=t[e];break;case\"parseSexpr\":D=t[e];break;case\"removeBrackets\":M=t[e];break;case\"getSymbol\":L=t[e];break;case\"position\":O=t[e];break;case\"removeCharsAndBlanks\":R=t[e];break;case\"createMmlNode\":m=t[e];break;case\"createElementMathML\":d=t[e];break;case\"createElementXHTML\":p=t[e];break;case\"initSymbols\":A=t[e];break;case\"refreshSymbols\":v=t[e];break;case\"compareNames\":C=t[e]}this[e]=t[e]}},parseMath:H,parseExpr:k,parseIexpr:P,parseSexr:D,removeBrackets:M,getSymbol:L,position:O,removeCharsAndBlanks:R,createMmlNode:m,createElementMathML:d,createElementXHTML:p,initSymbols:A,refreshSymbols:v,compareNames:C,createDocumentFragment:i,document:n,define:function(t,e){T.push({input:t,tag:\"mo\",output:e,tex:null,ttype:y}),v()},newcommand:function(t,e){T.push({input:t,tag:\"mo\",output:e,tex:null,ttype:y}),v()},newsymbol:function(t){T.push(t),v()},symbols:T,names:N,TOKEN:{CONST:0,UNARY:1,BINARY:2,INFIX:3,LEFTBRACKET:4,RIGHTBRACKET:5,SPACE:6,UNDEROVER:7,DEFINITION:y,LEFTRIGHT:9,TEXT:10,UNARYUNDEROVER:15}}})}(MathJax.InputJax.AsciiMath),(i=MathJax.InputJax.AsciiMath).Augment({sourceMenuTitle:[\"AsciiMathInput\",\"AsciiMath Input\"],annotationEncoding:\"text/x-asciimath\",prefilterHooks:MathJax.Callback.Hooks(!0),postfilterHooks:MathJax.Callback.Hooks(!0),Translate:function(t){var e,i=MathJax.HTML.getScript(t),a={math:i,script:t},s=this.prefilterHooks.Execute(a);if(s)return s;i=a.math;try{e=this.AM.parseMath(i)}catch(t){if(!t.asciimathError)throw t;e=this.formatError(t,i)}return a.math=n(e),this.postfilterHooks.Execute(a),this.postfilterHooks.Execute(a)||a.math},formatError:function(t,e,i){var a=t.message.replace(/\\n.*/,\"\");return MathJax.Hub.signal.Post([\"AsciiMath Jax - parse error\",a,e,i]),n.Error(a)},Error:function(t){throw MathJax.Hub.Insert(Error(t),{asciimathError:!0})},Startup:function(){n=MathJax.ElementJax.mml,this.AM.Init()}}),i.loadComplete(\"jax.js\")},function(t,e){var i,n,a;i=MathJax.ElementJax.mml,n=[\"texWithDelims\",\"movesupsub\",\"subsupOK\",\"primes\",\"movablelimits\",\"scriptlevel\",\"open\",\"close\",\"isError\",\"multiline\",\"variantForm\",\"autoOP\",\"fnOP\"],a={texWithDelims:\"withDelims\"},i.mbase.Augment({toMmlNode:function(t){var e=this.type;\"texatom\"===e&&(e=\"TeXAtom\");var i=this.nodeMake(t,e);return\"texClass\"in this&&(i.texClass=this.texClass),i},nodeMake:function(t,e){for(var i=t.MML[\"TeXmathchoice\"===e?\"mathchoice\":e](),n=this.data[0]&&this.data[0].inferred&&this.inferRow?this.data[0].data:this.data,a=0,s=n.length;a<s;a++){var r=n[a];r&&i.appendChild(r.toMmlNode(t))}return this.nodeAddAttributes(i),this.nodeAddProperties(i),i},nodeAddAttributes:function(t){var e=\"mstyle\"===this.type?i.math.prototype.defaults:this.defaults,n=this.attrNames||i.copyAttributeNames,a=i.skipAttributes,s=i.copyAttributes;if(!this.attrNames){for(var r in e)a[r]||s[r]||!e.hasOwnProperty(r)||null!=this[r]&&this[r]!==e[r]&&this.Get(r,null,1)!==this[r]&&t.attributes.set(r,this[r]);this.class&&t.attributes.set(\"class\",this.class)}for(var o=0,l=n.length;o<l;o++)(1!==s[n[o]]||e.hasOwnProperty(n[o]))&&(value=(this.attr||{})[n[o]],null==value&&(value=this[n[o]]),\"true\"!==value&&\"false\"!==value||(value=\"true\"===value),null!=value&&t.attributes.set(n[o],value))},nodeAddProperties:function(t){for(var e=0,s=n.length;e<s;e++){var r=n[e];null==this[r]||null!=this.defaults[r]&&this.defaults[r]!==i.AUTO||t.setProperty(a[r]||r,this[r])}}}),i.chars.Augment({toMmlNode:function(t){return t.MML.text().setText(this.data.join(\"\"))}}),i.entity.Augment({toMmlNode:function(t){return t.MML.text().setText(this.toString())}}),i.msubsup.Augment({toMmlNode:function(t){var e=null==this.data[this.sub]?\"msup\":null==this.data[this.sup]?\"msub\":\"msubsup\";return this.nodeMake(t,e)}}),i.munderover.Augment({toMmlNode:function(t){var e=null==this.data[this.under]?\"mover\":null==this.data[this.over]?\"munder\":\"munderover\";return this.nodeMake(t,e)}}),i.xml.Augment({toMmlNode:function(t){return t.MML.xml(this.data)}})},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlFactory=MathJax._.core.MmlTree.MmlFactory.MmlFactory},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";i.r(e);var n=i(2),a=i(0),s=i(1);Object(n.combineWithMathJax)({_:{input:{asciimath_ts:a,asciimath:{FindAsciiMath:s}}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"asciimath\",a.AsciiMath),MathJax.startup.useInput(\"asciimath\"))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/mml/entities.js",
    "content": "!function(r){var e={};function t(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return r[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=r,t.c=e,t.d=function(r,e,o){t.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:o})},t.r=function(r){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(r,\"__esModule\",{value:!0})},t.t=function(r,e){if(1&e&&(r=t(r)),8&e)return r;if(4&e&&\"object\"==typeof r&&r&&r.__esModule)return r;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:r}),2&e&&\"string\"!=typeof r)for(var a in r)t.d(o,a,function(e){return r[e]}.bind(null,a));return o},t.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(e,\"a\",e),e},t.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},t.p=\"\",t(t.s=1)}([function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(r,e,t){\"use strict\";t.r(e);t(2)},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(3),t(4),t(5),t(6),t(7),t(8),t(9),t(10),t(11),t(12),t(13),t(14),t(15),t(16),t(17),t(18),t(19),t(20),t(21),t(22),t(23),t(24),t(25),t(26),t(27),t(28),t(29),t(30),t(31)},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({AElig:\"\\xc6\",AMP:\"&\",Aacute:\"\\xc1\",Abreve:\"\\u0102\",Acirc:\"\\xc2\",Acy:\"\\u0410\",Agrave:\"\\xc0\",Alpha:\"\\u0391\",Amacr:\"\\u0100\",And:\"\\u2a53\",Aogon:\"\\u0104\",Aring:\"\\xc5\",Assign:\"\\u2254\",Atilde:\"\\xc3\",Auml:\"\\xc4\",aacute:\"\\xe1\",abreve:\"\\u0103\",ac:\"\\u223e\",acE:\"\\u223e\\u0333\",acd:\"\\u223f\",acirc:\"\\xe2\",acy:\"\\u0430\",aelig:\"\\xe6\",af:\"\\u2061\",agrave:\"\\xe0\",alefsym:\"\\u2135\",amacr:\"\\u0101\",andand:\"\\u2a55\",andd:\"\\u2a5c\",andslope:\"\\u2a58\",andv:\"\\u2a5a\",ange:\"\\u29a4\",angle:\"\\u2220\",angmsdaa:\"\\u29a8\",angmsdab:\"\\u29a9\",angmsdac:\"\\u29aa\",angmsdad:\"\\u29ab\",angmsdae:\"\\u29ac\",angmsdaf:\"\\u29ad\",angmsdag:\"\\u29ae\",angmsdah:\"\\u29af\",angrt:\"\\u221f\",angrtvb:\"\\u22be\",angrtvbd:\"\\u299d\",angst:\"\\xc5\",angzarr:\"\\u237c\",aogon:\"\\u0105\",ap:\"\\u2248\",apE:\"\\u2a70\",apacir:\"\\u2a6f\",apid:\"\\u224b\",apos:\"'\",approx:\"\\u2248\",approxeq:\"\\u224a\",aring:\"\\xe5\",ast:\"*\",asymp:\"\\u2248\",asympeq:\"\\u224d\",atilde:\"\\xe3\",auml:\"\\xe4\",awconint:\"\\u2233\",awint:\"\\u2a11\"},\"a\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Barv:\"\\u2ae7\",Barwed:\"\\u2306\",Bcy:\"\\u0411\",Bernoullis:\"\\u212c\",Beta:\"\\u0392\",Bumpeq:\"\\u224e\",bNot:\"\\u2aed\",backcong:\"\\u224c\",backepsilon:\"\\u03f6\",barvee:\"\\u22bd\",barwed:\"\\u2305\",barwedge:\"\\u2305\",bbrk:\"\\u23b5\",bbrktbrk:\"\\u23b6\",bcong:\"\\u224c\",bcy:\"\\u0431\",bdquo:\"\\u201e\",becaus:\"\\u2235\",because:\"\\u2235\",bemptyv:\"\\u29b0\",bepsi:\"\\u03f6\",bernou:\"\\u212c\",bigcap:\"\\u22c2\",bigcup:\"\\u22c3\",bigvee:\"\\u22c1\",bigwedge:\"\\u22c0\",bkarow:\"\\u290d\",blacksquare:\"\\u25aa\",blacktriangleright:\"\\u25b8\",blank:\"\\u2423\",blk12:\"\\u2592\",blk14:\"\\u2591\",blk34:\"\\u2593\",block:\"\\u2588\",bne:\"=\\u20e5\",bnequiv:\"\\u2261\\u20e5\",bnot:\"\\u2310\",bot:\"\\u22a5\",bottom:\"\\u22a5\",boxDL:\"\\u2557\",boxDR:\"\\u2554\",boxDl:\"\\u2556\",boxDr:\"\\u2553\",boxH:\"\\u2550\",boxHD:\"\\u2566\",boxHU:\"\\u2569\",boxHd:\"\\u2564\",boxHu:\"\\u2567\",boxUL:\"\\u255d\",boxUR:\"\\u255a\",boxUl:\"\\u255c\",boxUr:\"\\u2559\",boxV:\"\\u2551\",boxVH:\"\\u256c\",boxVL:\"\\u2563\",boxVR:\"\\u2560\",boxVh:\"\\u256b\",boxVl:\"\\u2562\",boxVr:\"\\u255f\",boxbox:\"\\u29c9\",boxdL:\"\\u2555\",boxdR:\"\\u2552\",boxh:\"\\u2500\",boxhD:\"\\u2565\",boxhU:\"\\u2568\",boxhd:\"\\u252c\",boxhu:\"\\u2534\",boxuL:\"\\u255b\",boxuR:\"\\u2558\",boxv:\"\\u2502\",boxvH:\"\\u256a\",boxvL:\"\\u2561\",boxvR:\"\\u255e\",boxvh:\"\\u253c\",boxvl:\"\\u2524\",boxvr:\"\\u251c\",bprime:\"\\u2035\",breve:\"\\u02d8\",brvbar:\"\\xa6\",bsemi:\"\\u204f\",bsim:\"\\u223d\",bsime:\"\\u22cd\",bsolb:\"\\u29c5\",bsolhsub:\"\\u27c8\",bullet:\"\\u2022\",bump:\"\\u224e\",bumpE:\"\\u2aae\",bumpe:\"\\u224f\",bumpeq:\"\\u224f\"},\"b\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({CHcy:\"\\u0427\",COPY:\"\\xa9\",Cacute:\"\\u0106\",CapitalDifferentialD:\"\\u2145\",Cayleys:\"\\u212d\",Ccaron:\"\\u010c\",Ccedil:\"\\xc7\",Ccirc:\"\\u0108\",Cconint:\"\\u2230\",Cdot:\"\\u010a\",Cedilla:\"\\xb8\",Chi:\"\\u03a7\",ClockwiseContourIntegral:\"\\u2232\",CloseCurlyDoubleQuote:\"\\u201d\",CloseCurlyQuote:\"\\u2019\",Colon:\"\\u2237\",Colone:\"\\u2a74\",Conint:\"\\u222f\",CounterClockwiseContourIntegral:\"\\u2233\",cacute:\"\\u0107\",capand:\"\\u2a44\",capbrcup:\"\\u2a49\",capcap:\"\\u2a4b\",capcup:\"\\u2a47\",capdot:\"\\u2a40\",caps:\"\\u2229\\ufe00\",caret:\"\\u2041\",caron:\"\\u02c7\",ccaps:\"\\u2a4d\",ccaron:\"\\u010d\",ccedil:\"\\xe7\",ccirc:\"\\u0109\",ccups:\"\\u2a4c\",ccupssm:\"\\u2a50\",cdot:\"\\u010b\",cedil:\"\\xb8\",cemptyv:\"\\u29b2\",cent:\"\\xa2\",centerdot:\"\\xb7\",chcy:\"\\u0447\",checkmark:\"\\u2713\",cir:\"\\u25cb\",cirE:\"\\u29c3\",cire:\"\\u2257\",cirfnint:\"\\u2a10\",cirmid:\"\\u2aef\",cirscir:\"\\u29c2\",clubsuit:\"\\u2663\",colone:\"\\u2254\",coloneq:\"\\u2254\",comma:\",\",commat:\"@\",compfn:\"\\u2218\",complement:\"\\u2201\",complexes:\"\\u2102\",cong:\"\\u2245\",congdot:\"\\u2a6d\",conint:\"\\u222e\",coprod:\"\\u2210\",copy:\"\\xa9\",copysr:\"\\u2117\",crarr:\"\\u21b5\",cross:\"\\u2717\",csub:\"\\u2acf\",csube:\"\\u2ad1\",csup:\"\\u2ad0\",csupe:\"\\u2ad2\",cudarrl:\"\\u2938\",cudarrr:\"\\u2935\",cularrp:\"\\u293d\",cupbrcap:\"\\u2a48\",cupcap:\"\\u2a46\",cupcup:\"\\u2a4a\",cupdot:\"\\u228d\",cupor:\"\\u2a45\",cups:\"\\u222a\\ufe00\",curarrm:\"\\u293c\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",curren:\"\\xa4\",curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",cuvee:\"\\u22ce\",cuwed:\"\\u22cf\",cwconint:\"\\u2232\",cwint:\"\\u2231\",cylcty:\"\\u232d\"},\"c\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({DD:\"\\u2145\",DDotrahd:\"\\u2911\",DJcy:\"\\u0402\",DScy:\"\\u0405\",DZcy:\"\\u040f\",Darr:\"\\u21a1\",Dashv:\"\\u2ae4\",Dcaron:\"\\u010e\",Dcy:\"\\u0414\",DiacriticalAcute:\"\\xb4\",DiacriticalDot:\"\\u02d9\",DiacriticalDoubleAcute:\"\\u02dd\",DiacriticalGrave:\"`\",DiacriticalTilde:\"\\u02dc\",Dot:\"\\xa8\",DotDot:\"\\u20dc\",DoubleContourIntegral:\"\\u222f\",DoubleDownArrow:\"\\u21d3\",DoubleLeftArrow:\"\\u21d0\",DoubleLeftRightArrow:\"\\u21d4\",DoubleLeftTee:\"\\u2ae4\",DoubleLongLeftArrow:\"\\u27f8\",DoubleLongLeftRightArrow:\"\\u27fa\",DoubleLongRightArrow:\"\\u27f9\",DoubleRightArrow:\"\\u21d2\",DoubleUpArrow:\"\\u21d1\",DoubleUpDownArrow:\"\\u21d5\",DownArrowBar:\"\\u2913\",DownArrowUpArrow:\"\\u21f5\",DownBreve:\"\\u0311\",DownLeftRightVector:\"\\u2950\",DownLeftTeeVector:\"\\u295e\",DownLeftVectorBar:\"\\u2956\",DownRightTeeVector:\"\\u295f\",DownRightVectorBar:\"\\u2957\",DownTeeArrow:\"\\u21a7\",Dstrok:\"\\u0110\",dArr:\"\\u21d3\",dHar:\"\\u2965\",darr:\"\\u2193\",dash:\"\\u2010\",dashv:\"\\u22a3\",dbkarow:\"\\u290f\",dblac:\"\\u02dd\",dcaron:\"\\u010f\",dcy:\"\\u0434\",dd:\"\\u2146\",ddagger:\"\\u2021\",ddotseq:\"\\u2a77\",demptyv:\"\\u29b1\",dfisht:\"\\u297f\",dharl:\"\\u21c3\",dharr:\"\\u21c2\",diam:\"\\u22c4\",diamond:\"\\u22c4\",diamondsuit:\"\\u2666\",diams:\"\\u2666\",die:\"\\xa8\",disin:\"\\u22f2\",divide:\"\\xf7\",divonx:\"\\u22c7\",djcy:\"\\u0452\",dlcorn:\"\\u231e\",dlcrop:\"\\u230d\",dollar:\"$\",doteq:\"\\u2250\",dotminus:\"\\u2238\",doublebarwedge:\"\\u2306\",downarrow:\"\\u2193\",downdownarrows:\"\\u21ca\",downharpoonleft:\"\\u21c3\",downharpoonright:\"\\u21c2\",drbkarow:\"\\u2910\",drcorn:\"\\u231f\",drcrop:\"\\u230c\",dscy:\"\\u0455\",dsol:\"\\u29f6\",dstrok:\"\\u0111\",dtri:\"\\u25bf\",dtrif:\"\\u25be\",duarr:\"\\u21f5\",duhar:\"\\u296f\",dwangle:\"\\u29a6\",dzcy:\"\\u045f\",dzigrarr:\"\\u27ff\"},\"d\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({ENG:\"\\u014a\",ETH:\"\\xd0\",Eacute:\"\\xc9\",Ecaron:\"\\u011a\",Ecirc:\"\\xca\",Ecy:\"\\u042d\",Edot:\"\\u0116\",Egrave:\"\\xc8\",Emacr:\"\\u0112\",EmptySmallSquare:\"\\u25fb\",EmptyVerySmallSquare:\"\\u25ab\",Eogon:\"\\u0118\",Epsilon:\"\\u0395\",Equal:\"\\u2a75\",Esim:\"\\u2a73\",Eta:\"\\u0397\",Euml:\"\\xcb\",eDDot:\"\\u2a77\",eDot:\"\\u2251\",eacute:\"\\xe9\",easter:\"\\u2a6e\",ecaron:\"\\u011b\",ecirc:\"\\xea\",ecolon:\"\\u2255\",ecy:\"\\u044d\",edot:\"\\u0117\",ee:\"\\u2147\",eg:\"\\u2a9a\",egrave:\"\\xe8\",egsdot:\"\\u2a98\",el:\"\\u2a99\",elinters:\"\\u23e7\",elsdot:\"\\u2a97\",emacr:\"\\u0113\",emptyset:\"\\u2205\",emptyv:\"\\u2205\",emsp:\"\\u2003\",emsp13:\"\\u2004\",emsp14:\"\\u2005\",eng:\"\\u014b\",ensp:\"\\u2002\",eogon:\"\\u0119\",epar:\"\\u22d5\",eparsl:\"\\u29e3\",eplus:\"\\u2a71\",epsilon:\"\\u03b5\",eqcirc:\"\\u2256\",eqcolon:\"\\u2255\",eqsim:\"\\u2242\",eqslantgtr:\"\\u2a96\",eqslantless:\"\\u2a95\",equals:\"=\",equest:\"\\u225f\",equiv:\"\\u2261\",equivDD:\"\\u2a78\",eqvparsl:\"\\u29e5\",erarr:\"\\u2971\",esdot:\"\\u2250\",esim:\"\\u2242\",euml:\"\\xeb\",euro:\"\\u20ac\",excl:\"!\",exist:\"\\u2203\",expectation:\"\\u2130\",exponentiale:\"\\u2147\"},\"e\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Fcy:\"\\u0424\",FilledSmallSquare:\"\\u25fc\",Fouriertrf:\"\\u2131\",fallingdotseq:\"\\u2252\",fcy:\"\\u0444\",female:\"\\u2640\",ffilig:\"\\ufb03\",fflig:\"\\ufb00\",ffllig:\"\\ufb04\",filig:\"\\ufb01\",fjlig:\"fj\",fllig:\"\\ufb02\",fltns:\"\\u25b1\",fnof:\"\\u0192\",forall:\"\\u2200\",forkv:\"\\u2ad9\",fpartint:\"\\u2a0d\",frac12:\"\\xbd\",frac13:\"\\u2153\",frac14:\"\\xbc\",frac15:\"\\u2155\",frac16:\"\\u2159\",frac18:\"\\u215b\",frac23:\"\\u2154\",frac25:\"\\u2156\",frac34:\"\\xbe\",frac35:\"\\u2157\",frac38:\"\\u215c\",frac45:\"\\u2158\",frac56:\"\\u215a\",frac58:\"\\u215d\",frac78:\"\\u215e\",frasl:\"\\u2044\"},\"f\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({GJcy:\"\\u0403\",GT:\">\",Gammad:\"\\u03dc\",Gbreve:\"\\u011e\",Gcedil:\"\\u0122\",Gcirc:\"\\u011c\",Gcy:\"\\u0413\",Gdot:\"\\u0120\",GreaterGreater:\"\\u2aa2\",Gt:\"\\u226b\",gE:\"\\u2267\",gacute:\"\\u01f5\",gammad:\"\\u03dd\",gbreve:\"\\u011f\",gcirc:\"\\u011d\",gcy:\"\\u0433\",gdot:\"\\u0121\",ge:\"\\u2265\",gel:\"\\u22db\",geq:\"\\u2265\",geqq:\"\\u2267\",geqslant:\"\\u2a7e\",ges:\"\\u2a7e\",gescc:\"\\u2aa9\",gesdot:\"\\u2a80\",gesdoto:\"\\u2a82\",gesdotol:\"\\u2a84\",gesl:\"\\u22db\\ufe00\",gesles:\"\\u2a94\",gg:\"\\u226b\",ggg:\"\\u22d9\",gjcy:\"\\u0453\",gl:\"\\u2277\",glE:\"\\u2a92\",gla:\"\\u2aa5\",glj:\"\\u2aa4\",gnapprox:\"\\u2a8a\",gneq:\"\\u2a88\",gneqq:\"\\u2269\",grave:\"`\",gsim:\"\\u2273\",gsime:\"\\u2a8e\",gsiml:\"\\u2a90\",gtcc:\"\\u2aa7\",gtcir:\"\\u2a7a\",gtlPar:\"\\u2995\",gtquest:\"\\u2a7c\",gtrapprox:\"\\u2a86\",gtrarr:\"\\u2978\",gtrdot:\"\\u22d7\",gtreqless:\"\\u22db\",gtreqqless:\"\\u2a8c\",gtrless:\"\\u2277\",gtrsim:\"\\u2273\",gvertneqq:\"\\u2269\\ufe00\",gvnE:\"\\u2269\\ufe00\"},\"g\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({HARDcy:\"\\u042a\",Hcirc:\"\\u0124\",HilbertSpace:\"\\u210b\",HorizontalLine:\"\\u2500\",Hstrok:\"\\u0126\",hArr:\"\\u21d4\",hairsp:\"\\u200a\",half:\"\\xbd\",hamilt:\"\\u210b\",hardcy:\"\\u044a\",harr:\"\\u2194\",harrcir:\"\\u2948\",hcirc:\"\\u0125\",hearts:\"\\u2665\",heartsuit:\"\\u2665\",hercon:\"\\u22b9\",hksearow:\"\\u2925\",hkswarow:\"\\u2926\",hoarr:\"\\u21ff\",homtht:\"\\u223b\",horbar:\"\\u2015\",hslash:\"\\u210f\",hstrok:\"\\u0127\",hybull:\"\\u2043\",hyphen:\"\\u2010\"},\"h\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({IEcy:\"\\u0415\",IJlig:\"\\u0132\",IOcy:\"\\u0401\",Iacute:\"\\xcd\",Icirc:\"\\xce\",Icy:\"\\u0418\",Idot:\"\\u0130\",Igrave:\"\\xcc\",Imacr:\"\\u012a\",Implies:\"\\u21d2\",Int:\"\\u222c\",Iogon:\"\\u012e\",Iota:\"\\u0399\",Itilde:\"\\u0128\",Iukcy:\"\\u0406\",Iuml:\"\\xcf\",iacute:\"\\xed\",ic:\"\\u2063\",icirc:\"\\xee\",icy:\"\\u0438\",iecy:\"\\u0435\",iexcl:\"\\xa1\",iff:\"\\u21d4\",igrave:\"\\xec\",ii:\"\\u2148\",iiiint:\"\\u2a0c\",iiint:\"\\u222d\",iinfin:\"\\u29dc\",iiota:\"\\u2129\",ijlig:\"\\u0133\",imacr:\"\\u012b\",image:\"\\u2111\",imagline:\"\\u2110\",imagpart:\"\\u2111\",imof:\"\\u22b7\",imped:\"\\u01b5\",in:\"\\u2208\",incare:\"\\u2105\",infintie:\"\\u29dd\",inodot:\"\\u0131\",int:\"\\u222b\",integers:\"\\u2124\",intercal:\"\\u22ba\",intlarhk:\"\\u2a17\",intprod:\"\\u2a3c\",iocy:\"\\u0451\",iogon:\"\\u012f\",iprod:\"\\u2a3c\",iquest:\"\\xbf\",isin:\"\\u2208\",isinE:\"\\u22f9\",isindot:\"\\u22f5\",isins:\"\\u22f4\",isinsv:\"\\u22f3\",isinv:\"\\u2208\",it:\"\\u2062\",itilde:\"\\u0129\",iukcy:\"\\u0456\",iuml:\"\\xef\"},\"i\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Jcirc:\"\\u0134\",Jcy:\"\\u0419\",Jsercy:\"\\u0408\",Jukcy:\"\\u0404\",jcirc:\"\\u0135\",jcy:\"\\u0439\",jsercy:\"\\u0458\",jukcy:\"\\u0454\"},\"j\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({KHcy:\"\\u0425\",KJcy:\"\\u040c\",Kappa:\"\\u039a\",Kcedil:\"\\u0136\",Kcy:\"\\u041a\",kcedil:\"\\u0137\",kcy:\"\\u043a\",kgreen:\"\\u0138\",khcy:\"\\u0445\",kjcy:\"\\u045c\"},\"k\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({LJcy:\"\\u0409\",LT:\"<\",Lacute:\"\\u0139\",Lang:\"\\u27ea\",Laplacetrf:\"\\u2112\",Lcaron:\"\\u013d\",Lcedil:\"\\u013b\",Lcy:\"\\u041b\",LeftArrowBar:\"\\u21e4\",LeftDoubleBracket:\"\\u27e6\",LeftDownTeeVector:\"\\u2961\",LeftDownVectorBar:\"\\u2959\",LeftRightVector:\"\\u294e\",LeftTeeArrow:\"\\u21a4\",LeftTeeVector:\"\\u295a\",LeftTriangleBar:\"\\u29cf\",LeftUpDownVector:\"\\u2951\",LeftUpTeeVector:\"\\u2960\",LeftUpVectorBar:\"\\u2958\",LeftVectorBar:\"\\u2952\",LessLess:\"\\u2aa1\",Lmidot:\"\\u013f\",LowerLeftArrow:\"\\u2199\",LowerRightArrow:\"\\u2198\",Lstrok:\"\\u0141\",Lt:\"\\u226a\",lAarr:\"\\u21da\",lArr:\"\\u21d0\",lAtail:\"\\u291b\",lBarr:\"\\u290e\",lE:\"\\u2266\",lHar:\"\\u2962\",lacute:\"\\u013a\",laemptyv:\"\\u29b4\",lagran:\"\\u2112\",lang:\"\\u27e8\",langd:\"\\u2991\",langle:\"\\u27e8\",laquo:\"\\xab\",larr:\"\\u2190\",larrb:\"\\u21e4\",larrbfs:\"\\u291f\",larrfs:\"\\u291d\",larrhk:\"\\u21a9\",larrpl:\"\\u2939\",larrsim:\"\\u2973\",lat:\"\\u2aab\",latail:\"\\u2919\",late:\"\\u2aad\",lates:\"\\u2aad\\ufe00\",lbarr:\"\\u290c\",lbbrk:\"\\u2772\",lbrke:\"\\u298b\",lbrksld:\"\\u298f\",lbrkslu:\"\\u298d\",lcaron:\"\\u013e\",lcedil:\"\\u013c\",lceil:\"\\u2308\",lcub:\"{\",lcy:\"\\u043b\",ldca:\"\\u2936\",ldquo:\"\\u201c\",ldquor:\"\\u201e\",ldrdhar:\"\\u2967\",ldrushar:\"\\u294b\",ldsh:\"\\u21b2\",leftarrow:\"\\u2190\",leftarrowtail:\"\\u21a2\",leftharpoondown:\"\\u21bd\",leftharpoonup:\"\\u21bc\",leftrightarrow:\"\\u2194\",leftrightarrows:\"\\u21c6\",leftrightharpoons:\"\\u21cb\",leftrightsquigarrow:\"\\u21ad\",leg:\"\\u22da\",leq:\"\\u2264\",leqq:\"\\u2266\",leqslant:\"\\u2a7d\",les:\"\\u2a7d\",lescc:\"\\u2aa8\",lesdot:\"\\u2a7f\",lesdoto:\"\\u2a81\",lesdotor:\"\\u2a83\",lesg:\"\\u22da\\ufe00\",lesges:\"\\u2a93\",lessapprox:\"\\u2a85\",lesseqgtr:\"\\u22da\",lesseqqgtr:\"\\u2a8b\",lessgtr:\"\\u2276\",lesssim:\"\\u2272\",lfisht:\"\\u297c\",lfloor:\"\\u230a\",lg:\"\\u2276\",lgE:\"\\u2a91\",lhard:\"\\u21bd\",lharu:\"\\u21bc\",lharul:\"\\u296a\",lhblk:\"\\u2584\",ljcy:\"\\u0459\",ll:\"\\u226a\",llarr:\"\\u21c7\",llcorner:\"\\u231e\",llhard:\"\\u296b\",lltri:\"\\u25fa\",lmidot:\"\\u0140\",lmoustache:\"\\u23b0\",lnapprox:\"\\u2a89\",lneq:\"\\u2a87\",lneqq:\"\\u2268\",loang:\"\\u27ec\",loarr:\"\\u21fd\",lobrk:\"\\u27e6\",longleftarrow:\"\\u27f5\",longleftrightarrow:\"\\u27f7\",longrightarrow:\"\\u27f6\",looparrowleft:\"\\u21ab\",lopar:\"\\u2985\",loplus:\"\\u2a2d\",lotimes:\"\\u2a34\",lowbar:\"_\",lozenge:\"\\u25ca\",lozf:\"\\u29eb\",lpar:\"(\",lparlt:\"\\u2993\",lrarr:\"\\u21c6\",lrcorner:\"\\u231f\",lrhar:\"\\u21cb\",lrhard:\"\\u296d\",lrm:\"\\u200e\",lrtri:\"\\u22bf\",lsaquo:\"\\u2039\",lsh:\"\\u21b0\",lsim:\"\\u2272\",lsime:\"\\u2a8d\",lsimg:\"\\u2a8f\",lsqb:\"[\",lsquo:\"\\u2018\",lsquor:\"\\u201a\",lstrok:\"\\u0142\",ltcc:\"\\u2aa6\",ltcir:\"\\u2a79\",ltdot:\"\\u22d6\",lthree:\"\\u22cb\",ltlarr:\"\\u2976\",ltquest:\"\\u2a7b\",ltrPar:\"\\u2996\",ltrie:\"\\u22b4\",ltrif:\"\\u25c2\",lurdshar:\"\\u294a\",luruhar:\"\\u2966\",lvertneqq:\"\\u2268\\ufe00\",lvnE:\"\\u2268\\ufe00\"},\"l\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Map:\"\\u2905\",Mcy:\"\\u041c\",MediumSpace:\"\\u205f\",Mellintrf:\"\\u2133\",Mu:\"\\u039c\",mDDot:\"\\u223a\",male:\"\\u2642\",maltese:\"\\u2720\",map:\"\\u21a6\",mapsto:\"\\u21a6\",mapstodown:\"\\u21a7\",mapstoleft:\"\\u21a4\",mapstoup:\"\\u21a5\",marker:\"\\u25ae\",mcomma:\"\\u2a29\",mcy:\"\\u043c\",mdash:\"\\u2014\",measuredangle:\"\\u2221\",micro:\"\\xb5\",mid:\"\\u2223\",midast:\"*\",midcir:\"\\u2af0\",middot:\"\\xb7\",minus:\"\\u2212\",minusb:\"\\u229f\",minusd:\"\\u2238\",minusdu:\"\\u2a2a\",mlcp:\"\\u2adb\",mldr:\"\\u2026\",mnplus:\"\\u2213\",models:\"\\u22a7\",mp:\"\\u2213\",mstpos:\"\\u223e\",mumap:\"\\u22b8\"},\"m\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({OElig:\"\\u0152\",Oacute:\"\\xd3\",Ocirc:\"\\xd4\",Ocy:\"\\u041e\",Odblac:\"\\u0150\",Ograve:\"\\xd2\",Omacr:\"\\u014c\",Omicron:\"\\u039f\",OpenCurlyDoubleQuote:\"\\u201c\",OpenCurlyQuote:\"\\u2018\",Or:\"\\u2a54\",Oslash:\"\\xd8\",Otilde:\"\\xd5\",Otimes:\"\\u2a37\",Ouml:\"\\xd6\",OverBracket:\"\\u23b4\",OverParenthesis:\"\\u23dc\",oS:\"\\u24c8\",oacute:\"\\xf3\",oast:\"\\u229b\",ocir:\"\\u229a\",ocirc:\"\\xf4\",ocy:\"\\u043e\",odash:\"\\u229d\",odblac:\"\\u0151\",odiv:\"\\u2a38\",odot:\"\\u2299\",odsold:\"\\u29bc\",oelig:\"\\u0153\",ofcir:\"\\u29bf\",ogon:\"\\u02db\",ograve:\"\\xf2\",ogt:\"\\u29c1\",ohbar:\"\\u29b5\",ohm:\"\\u03a9\",oint:\"\\u222e\",olarr:\"\\u21ba\",olcir:\"\\u29be\",olcross:\"\\u29bb\",oline:\"\\u203e\",olt:\"\\u29c0\",omacr:\"\\u014d\",omid:\"\\u29b6\",ominus:\"\\u2296\",opar:\"\\u29b7\",operp:\"\\u29b9\",oplus:\"\\u2295\",orarr:\"\\u21bb\",ord:\"\\u2a5d\",order:\"\\u2134\",orderof:\"\\u2134\",ordf:\"\\xaa\",ordm:\"\\xba\",origof:\"\\u22b6\",oror:\"\\u2a56\",orslope:\"\\u2a57\",orv:\"\\u2a5b\",oslash:\"\\xf8\",otilde:\"\\xf5\",otimes:\"\\u2297\",otimesas:\"\\u2a36\",ouml:\"\\xf6\",ovbar:\"\\u233d\"},\"o\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({QUOT:'\"',qint:\"\\u2a0c\",qprime:\"\\u2057\",quaternions:\"\\u210d\",quatint:\"\\u2a16\",quest:\"?\",questeq:\"\\u225f\"},\"q\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({SHCHcy:\"\\u0429\",SHcy:\"\\u0428\",SOFTcy:\"\\u042c\",Sacute:\"\\u015a\",Sc:\"\\u2abc\",Scaron:\"\\u0160\",Scedil:\"\\u015e\",Scirc:\"\\u015c\",Scy:\"\\u0421\",ShortDownArrow:\"\\u2193\",ShortLeftArrow:\"\\u2190\",ShortRightArrow:\"\\u2192\",ShortUpArrow:\"\\u2191\",Sub:\"\\u22d0\",Sup:\"\\u22d1\",sacute:\"\\u015b\",sbquo:\"\\u201a\",sc:\"\\u227b\",scE:\"\\u2ab4\",scaron:\"\\u0161\",sccue:\"\\u227d\",sce:\"\\u2ab0\",scedil:\"\\u015f\",scirc:\"\\u015d\",scpolint:\"\\u2a13\",scsim:\"\\u227f\",scy:\"\\u0441\",sdotb:\"\\u22a1\",sdote:\"\\u2a66\",seArr:\"\\u21d8\",searhk:\"\\u2925\",searrow:\"\\u2198\",semi:\";\",seswar:\"\\u2929\",setminus:\"\\u2216\",setmn:\"\\u2216\",sext:\"\\u2736\",sfrown:\"\\u2322\",shchcy:\"\\u0449\",shcy:\"\\u0448\",shortmid:\"\\u2223\",shortparallel:\"\\u2225\",shy:\"\\xad\",sigmaf:\"\\u03c2\",sim:\"\\u223c\",simdot:\"\\u2a6a\",sime:\"\\u2243\",simeq:\"\\u2243\",simg:\"\\u2a9e\",simgE:\"\\u2aa0\",siml:\"\\u2a9d\",simlE:\"\\u2a9f\",simplus:\"\\u2a24\",simrarr:\"\\u2972\",slarr:\"\\u2190\",smallsetminus:\"\\u2216\",smashp:\"\\u2a33\",smeparsl:\"\\u29e4\",smid:\"\\u2223\",smt:\"\\u2aaa\",smte:\"\\u2aac\",smtes:\"\\u2aac\\ufe00\",softcy:\"\\u044c\",sol:\"/\",solb:\"\\u29c4\",solbar:\"\\u233f\",spadesuit:\"\\u2660\",spar:\"\\u2225\",sqcap:\"\\u2293\",sqcaps:\"\\u2293\\ufe00\",sqcup:\"\\u2294\",sqcups:\"\\u2294\\ufe00\",sqsub:\"\\u228f\",sqsube:\"\\u2291\",sqsubset:\"\\u228f\",sqsubseteq:\"\\u2291\",sqsup:\"\\u2290\",sqsupe:\"\\u2292\",sqsupset:\"\\u2290\",sqsupseteq:\"\\u2292\",squ:\"\\u25a1\",square:\"\\u25a1\",squarf:\"\\u25aa\",squf:\"\\u25aa\",srarr:\"\\u2192\",ssetmn:\"\\u2216\",ssmile:\"\\u2323\",sstarf:\"\\u22c6\",star:\"\\u2606\",starf:\"\\u2605\",straightepsilon:\"\\u03f5\",straightphi:\"\\u03d5\",strns:\"\\xaf\",subdot:\"\\u2abd\",sube:\"\\u2286\",subedot:\"\\u2ac3\",submult:\"\\u2ac1\",subplus:\"\\u2abf\",subrarr:\"\\u2979\",subset:\"\\u2282\",subseteq:\"\\u2286\",subseteqq:\"\\u2ac5\",subsetneq:\"\\u228a\",subsetneqq:\"\\u2acb\",subsim:\"\\u2ac7\",subsub:\"\\u2ad5\",subsup:\"\\u2ad3\",succ:\"\\u227b\",succapprox:\"\\u2ab8\",succcurlyeq:\"\\u227d\",succeq:\"\\u2ab0\",succnapprox:\"\\u2aba\",succneqq:\"\\u2ab6\",succnsim:\"\\u22e9\",succsim:\"\\u227f\",sum:\"\\u2211\",sung:\"\\u266a\",sup:\"\\u2283\",sup1:\"\\xb9\",sup2:\"\\xb2\",sup3:\"\\xb3\",supdot:\"\\u2abe\",supdsub:\"\\u2ad8\",supe:\"\\u2287\",supedot:\"\\u2ac4\",suphsol:\"\\u27c9\",suphsub:\"\\u2ad7\",suplarr:\"\\u297b\",supmult:\"\\u2ac2\",supplus:\"\\u2ac0\",supset:\"\\u2283\",supseteq:\"\\u2287\",supseteqq:\"\\u2ac6\",supsetneq:\"\\u228b\",supsetneqq:\"\\u2acc\",supsim:\"\\u2ac8\",supsub:\"\\u2ad4\",supsup:\"\\u2ad6\",swArr:\"\\u21d9\",swarhk:\"\\u2926\",swarrow:\"\\u2199\",swnwar:\"\\u292a\",szlig:\"\\xdf\"},\"s\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({THORN:\"\\xde\",TRADE:\"\\u2122\",TSHcy:\"\\u040b\",TScy:\"\\u0426\",Tab:\"\\t\",Tau:\"\\u03a4\",Tcaron:\"\\u0164\",Tcedil:\"\\u0162\",Tcy:\"\\u0422\",ThickSpace:\"\\u205f\\u200a\",ThinSpace:\"\\u2009\",TripleDot:\"\\u20db\",Tstrok:\"\\u0166\",target:\"\\u2316\",tbrk:\"\\u23b4\",tcaron:\"\\u0165\",tcedil:\"\\u0163\",tcy:\"\\u0442\",tdot:\"\\u20db\",telrec:\"\\u2315\",there4:\"\\u2234\",therefore:\"\\u2234\",thetasym:\"\\u03d1\",thickapprox:\"\\u2248\",thicksim:\"\\u223c\",thinsp:\"\\u2009\",thkap:\"\\u2248\",thksim:\"\\u223c\",thorn:\"\\xfe\",timesb:\"\\u22a0\",timesbar:\"\\u2a31\",timesd:\"\\u2a30\",tint:\"\\u222d\",toea:\"\\u2928\",top:\"\\u22a4\",topbot:\"\\u2336\",topcir:\"\\u2af1\",topfork:\"\\u2ada\",tosa:\"\\u2929\",tprime:\"\\u2034\",trade:\"\\u2122\",triangledown:\"\\u25bf\",triangleleft:\"\\u25c3\",trianglelefteq:\"\\u22b4\",triangleright:\"\\u25b9\",trianglerighteq:\"\\u22b5\",tridot:\"\\u25ec\",trie:\"\\u225c\",triminus:\"\\u2a3a\",triplus:\"\\u2a39\",trisb:\"\\u29cd\",tritime:\"\\u2a3b\",trpezium:\"\\u23e2\",tscy:\"\\u0446\",tshcy:\"\\u045b\",tstrok:\"\\u0167\",twixt:\"\\u226c\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\"},\"t\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Uacute:\"\\xda\",Uarr:\"\\u219f\",Uarrocir:\"\\u2949\",Ubrcy:\"\\u040e\",Ubreve:\"\\u016c\",Ucirc:\"\\xdb\",Ucy:\"\\u0423\",Udblac:\"\\u0170\",Ugrave:\"\\xd9\",Umacr:\"\\u016a\",UnderBracket:\"\\u23b5\",UnderParenthesis:\"\\u23dd\",Uogon:\"\\u0172\",UpArrowBar:\"\\u2912\",UpArrowDownArrow:\"\\u21c5\",UpEquilibrium:\"\\u296e\",UpTeeArrow:\"\\u21a5\",UpperLeftArrow:\"\\u2196\",UpperRightArrow:\"\\u2197\",Upsi:\"\\u03d2\",Uring:\"\\u016e\",Utilde:\"\\u0168\",Uuml:\"\\xdc\",uArr:\"\\u21d1\",uHar:\"\\u2963\",uacute:\"\\xfa\",uarr:\"\\u2191\",ubrcy:\"\\u045e\",ubreve:\"\\u016d\",ucirc:\"\\xfb\",ucy:\"\\u0443\",udarr:\"\\u21c5\",udblac:\"\\u0171\",udhar:\"\\u296e\",ufisht:\"\\u297e\",ugrave:\"\\xf9\",uharl:\"\\u21bf\",uharr:\"\\u21be\",uhblk:\"\\u2580\",ulcorn:\"\\u231c\",ulcorner:\"\\u231c\",ulcrop:\"\\u230f\",ultri:\"\\u25f8\",umacr:\"\\u016b\",uml:\"\\xa8\",uogon:\"\\u0173\",uparrow:\"\\u2191\",updownarrow:\"\\u2195\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",uplus:\"\\u228e\",upsih:\"\\u03d2\",upsilon:\"\\u03c5\",urcorn:\"\\u231d\",urcorner:\"\\u231d\",urcrop:\"\\u230e\",uring:\"\\u016f\",urtri:\"\\u25f9\",utdot:\"\\u22f0\",utilde:\"\\u0169\",utri:\"\\u25b5\",utrif:\"\\u25b4\",uuarr:\"\\u21c8\",uuml:\"\\xfc\",uwangle:\"\\u29a7\"},\"u\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({VDash:\"\\u22ab\",Vbar:\"\\u2aeb\",Vcy:\"\\u0412\",Vdashl:\"\\u2ae6\",Verbar:\"\\u2016\",Vert:\"\\u2016\",VerticalLine:\"|\",VerticalSeparator:\"\\u2758\",VeryThinSpace:\"\\u200a\",vArr:\"\\u21d5\",vBar:\"\\u2ae8\",vBarv:\"\\u2ae9\",vDash:\"\\u22a8\",vangrt:\"\\u299c\",varepsilon:\"\\u03f5\",varkappa:\"\\u03f0\",varnothing:\"\\u2205\",varphi:\"\\u03d5\",varpi:\"\\u03d6\",varpropto:\"\\u221d\",varr:\"\\u2195\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varsubsetneq:\"\\u228a\\ufe00\",varsubsetneqq:\"\\u2acb\\ufe00\",varsupsetneq:\"\\u228b\\ufe00\",varsupsetneqq:\"\\u2acc\\ufe00\",vartheta:\"\\u03d1\",vartriangleleft:\"\\u22b2\",vartriangleright:\"\\u22b3\",vcy:\"\\u0432\",vdash:\"\\u22a2\",vee:\"\\u2228\",veeeq:\"\\u225a\",verbar:\"|\",vert:\"|\",vltri:\"\\u22b2\",vnsub:\"\\u2282\\u20d2\",vnsup:\"\\u2283\\u20d2\",vprop:\"\\u221d\",vrtri:\"\\u22b3\",vsubnE:\"\\u2acb\\ufe00\",vsubne:\"\\u228a\\ufe00\",vsupnE:\"\\u2acc\\ufe00\",vsupne:\"\\u228b\\ufe00\",vzigzag:\"\\u299a\"},\"v\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Wcirc:\"\\u0174\",wcirc:\"\\u0175\",wedbar:\"\\u2a5f\",wedge:\"\\u2227\",wedgeq:\"\\u2259\",wp:\"\\u2118\",wr:\"\\u2240\",wreath:\"\\u2240\"},\"w\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({xcap:\"\\u22c2\",xcirc:\"\\u25ef\",xcup:\"\\u22c3\",xdtri:\"\\u25bd\",xhArr:\"\\u27fa\",xharr:\"\\u27f7\",xlArr:\"\\u27f8\",xlarr:\"\\u27f5\",xmap:\"\\u27fc\",xnis:\"\\u22fb\",xodot:\"\\u2a00\",xoplus:\"\\u2a01\",xotime:\"\\u2a02\",xrArr:\"\\u27f9\",xrarr:\"\\u27f6\",xsqcup:\"\\u2a06\",xuplus:\"\\u2a04\",xutri:\"\\u25b3\",xvee:\"\\u22c1\",xwedge:\"\\u22c0\"},\"x\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({YAcy:\"\\u042f\",YIcy:\"\\u0407\",YUcy:\"\\u042e\",Yacute:\"\\xdd\",Ycirc:\"\\u0176\",Ycy:\"\\u042b\",Yuml:\"\\u0178\",yacute:\"\\xfd\",yacy:\"\\u044f\",ycirc:\"\\u0177\",ycy:\"\\u044b\",yicy:\"\\u0457\",yucy:\"\\u044e\",yuml:\"\\xff\"},\"y\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({ZHcy:\"\\u0416\",Zacute:\"\\u0179\",Zcaron:\"\\u017d\",Zcy:\"\\u0417\",Zdot:\"\\u017b\",ZeroWidthSpace:\"\\u200b\",Zeta:\"\\u0396\",zacute:\"\\u017a\",zcaron:\"\\u017e\",zcy:\"\\u0437\",zdot:\"\\u017c\",zeetrf:\"\\u2128\",zhcy:\"\\u0436\",zwj:\"\\u200d\",zwnj:\"\\u200c\"},\"z\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Afr:\"\\ud835\\udd04\",Bfr:\"\\ud835\\udd05\",Cfr:\"\\u212d\",Dfr:\"\\ud835\\udd07\",Efr:\"\\ud835\\udd08\",Ffr:\"\\ud835\\udd09\",Gfr:\"\\ud835\\udd0a\",Hfr:\"\\u210c\",Ifr:\"\\u2111\",Jfr:\"\\ud835\\udd0d\",Kfr:\"\\ud835\\udd0e\",Lfr:\"\\ud835\\udd0f\",Mfr:\"\\ud835\\udd10\",Nfr:\"\\ud835\\udd11\",Ofr:\"\\ud835\\udd12\",Pfr:\"\\ud835\\udd13\",Qfr:\"\\ud835\\udd14\",Rfr:\"\\u211c\",Sfr:\"\\ud835\\udd16\",Tfr:\"\\ud835\\udd17\",Ufr:\"\\ud835\\udd18\",Vfr:\"\\ud835\\udd19\",Wfr:\"\\ud835\\udd1a\",Xfr:\"\\ud835\\udd1b\",Yfr:\"\\ud835\\udd1c\",Zfr:\"\\u2128\",afr:\"\\ud835\\udd1e\",bfr:\"\\ud835\\udd1f\",cfr:\"\\ud835\\udd20\",dfr:\"\\ud835\\udd21\",efr:\"\\ud835\\udd22\",ffr:\"\\ud835\\udd23\",gfr:\"\\ud835\\udd24\",hfr:\"\\ud835\\udd25\",ifr:\"\\ud835\\udd26\",jfr:\"\\ud835\\udd27\",kfr:\"\\ud835\\udd28\",lfr:\"\\ud835\\udd29\",mfr:\"\\ud835\\udd2a\",nfr:\"\\ud835\\udd2b\",ofr:\"\\ud835\\udd2c\",pfr:\"\\ud835\\udd2d\",qfr:\"\\ud835\\udd2e\",rfr:\"\\ud835\\udd2f\",sfr:\"\\ud835\\udd30\",tfr:\"\\ud835\\udd31\",ufr:\"\\ud835\\udd32\",vfr:\"\\ud835\\udd33\",wfr:\"\\ud835\\udd34\",xfr:\"\\ud835\\udd35\",yfr:\"\\ud835\\udd36\",zfr:\"\\ud835\\udd37\"},\"fr\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Aopf:\"\\ud835\\udd38\",Bopf:\"\\ud835\\udd39\",Copf:\"\\u2102\",Dopf:\"\\ud835\\udd3b\",Eopf:\"\\ud835\\udd3c\",Fopf:\"\\ud835\\udd3d\",Gopf:\"\\ud835\\udd3e\",Hopf:\"\\u210d\",Iopf:\"\\ud835\\udd40\",Jopf:\"\\ud835\\udd41\",Kopf:\"\\ud835\\udd42\",Lopf:\"\\ud835\\udd43\",Mopf:\"\\ud835\\udd44\",Nopf:\"\\u2115\",Oopf:\"\\ud835\\udd46\",Popf:\"\\u2119\",Qopf:\"\\u211a\",Ropf:\"\\u211d\",Sopf:\"\\ud835\\udd4a\",Topf:\"\\ud835\\udd4b\",Uopf:\"\\ud835\\udd4c\",Vopf:\"\\ud835\\udd4d\",Wopf:\"\\ud835\\udd4e\",Xopf:\"\\ud835\\udd4f\",Yopf:\"\\ud835\\udd50\",Zopf:\"\\u2124\",aopf:\"\\ud835\\udd52\",bopf:\"\\ud835\\udd53\",copf:\"\\ud835\\udd54\",dopf:\"\\ud835\\udd55\",eopf:\"\\ud835\\udd56\",fopf:\"\\ud835\\udd57\",gopf:\"\\ud835\\udd58\",hopf:\"\\ud835\\udd59\",iopf:\"\\ud835\\udd5a\",jopf:\"\\ud835\\udd5b\",kopf:\"\\ud835\\udd5c\",lopf:\"\\ud835\\udd5d\",mopf:\"\\ud835\\udd5e\",nopf:\"\\ud835\\udd5f\",oopf:\"\\ud835\\udd60\",popf:\"\\ud835\\udd61\",qopf:\"\\ud835\\udd62\",ropf:\"\\ud835\\udd63\",sopf:\"\\ud835\\udd64\",topf:\"\\ud835\\udd65\",uopf:\"\\ud835\\udd66\",vopf:\"\\ud835\\udd67\",wopf:\"\\ud835\\udd68\",xopf:\"\\ud835\\udd69\",yopf:\"\\ud835\\udd6a\",zopf:\"\\ud835\\udd6b\"},\"opf\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Ascr:\"\\ud835\\udc9c\",Bscr:\"\\u212c\",Cscr:\"\\ud835\\udc9e\",Dscr:\"\\ud835\\udc9f\",Escr:\"\\u2130\",Fscr:\"\\u2131\",Gscr:\"\\ud835\\udca2\",Hscr:\"\\u210b\",Iscr:\"\\u2110\",Jscr:\"\\ud835\\udca5\",Kscr:\"\\ud835\\udca6\",Lscr:\"\\u2112\",Mscr:\"\\u2133\",Nscr:\"\\ud835\\udca9\",Oscr:\"\\ud835\\udcaa\",Pscr:\"\\ud835\\udcab\",Qscr:\"\\ud835\\udcac\",Rscr:\"\\u211b\",Sscr:\"\\ud835\\udcae\",Tscr:\"\\ud835\\udcaf\",Uscr:\"\\ud835\\udcb0\",Vscr:\"\\ud835\\udcb1\",Wscr:\"\\ud835\\udcb2\",Xscr:\"\\ud835\\udcb3\",Yscr:\"\\ud835\\udcb4\",Zscr:\"\\ud835\\udcb5\",ascr:\"\\ud835\\udcb6\",bscr:\"\\ud835\\udcb7\",cscr:\"\\ud835\\udcb8\",dscr:\"\\ud835\\udcb9\",escr:\"\\u212f\",fscr:\"\\ud835\\udcbb\",gscr:\"\\u210a\",hscr:\"\\ud835\\udcbd\",iscr:\"\\ud835\\udcbe\",jscr:\"\\ud835\\udcbf\",kscr:\"\\ud835\\udcc0\",lscr:\"\\ud835\\udcc1\",mscr:\"\\ud835\\udcc2\",nscr:\"\\ud835\\udcc3\",oscr:\"\\u2134\",pscr:\"\\ud835\\udcc5\",qscr:\"\\ud835\\udcc6\",rscr:\"\\ud835\\udcc7\",sscr:\"\\ud835\\udcc8\",tscr:\"\\ud835\\udcc9\",uscr:\"\\ud835\\udcca\",vscr:\"\\ud835\\udccb\",wscr:\"\\ud835\\udccc\",xscr:\"\\ud835\\udccd\",yscr:\"\\ud835\\udcce\",zscr:\"\\ud835\\udccf\"},\"scr\")}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/mml.js",
    "content": "!function(t){var e={};function r(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,o){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(o,a,function(e){return t[e]}.bind(null,a));return o},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=10)}([function(t,e,r){\"use strict\";var o,a=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var o,a,i=r.call(t),n=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)n.push(o.value)}catch(t){a={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return n};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathML=void 0;var n=r(5),s=r(3),l=r(6),c=r(1),u=r(2),h=function(t){function e(e){void 0===e&&(e={});var r=this,o=i(s.separateOptions(e,c.FindMathML.OPTIONS,u.MathMLCompile.OPTIONS),3),a=o[0],n=o[1],h=o[2];return(r=t.call(this,a)||this).findMathML=r.options.FindMathML||new c.FindMathML(n),r.mathml=r.options.MathMLCompile||new u.MathMLCompile(h),r.mmlFilters=new l.FunctionList,r}return a(e,t),e.prototype.setAdaptor=function(e){t.prototype.setAdaptor.call(this,e),this.findMathML.adaptor=e,this.mathml.adaptor=e},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this.mathml.setMmlFactory(e)},Object.defineProperty(e.prototype,\"processStrings\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){var r=t.start.node;if(!r||!t.end.node||this.options.forceReparse||\"#text\"===this.adaptor.kind(r)){var o=this.executeFilters(this.preFilters,t,e,t.math||\"<math></math>\"),a=this.checkForErrors(this.adaptor.parse(o,\"text/\"+this.options.parseAs)),i=this.adaptor.body(a);1!==this.adaptor.childNodes(i).length&&this.error(\"MathML must consist of a single element\"),r=this.adaptor.remove(this.adaptor.firstChild(i)),\"math\"!==this.adaptor.kind(r).replace(/^[a-z]+:/,\"\")&&this.error(\"MathML must be formed by a <math> element, not <\"+this.adaptor.kind(r)+\">\")}return r=this.executeFilters(this.mmlFilters,t,e,r),this.executeFilters(this.postFilters,t,e,this.mathml.compile(r))},e.prototype.checkForErrors=function(t){var e=this.adaptor.tags(this.adaptor.body(t),\"parsererror\")[0];return e&&(\"\"===this.adaptor.textContent(e)&&this.error(\"Error processing MathML\"),this.options.parseError.call(this,e)),t},e.prototype.error=function(t){throw new Error(t)},e.prototype.findMath=function(t){return this.findMathML.findMath(t)},e.NAME=\"MathML\",e.OPTIONS=s.defaultOptions({parseAs:\"html\",forceReparse:!1,FindMathML:null,MathMLCompile:null,parseError:function(t){this.error(this.adaptor.textContent(t).replace(/\\n.*/g,\"\"))}},n.AbstractInputJax.OPTIONS),e}(n.AbstractInputJax);e.MathML=h},function(t,e,r){\"use strict\";var o,a=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],o=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindMathML=void 0;var n=r(7),s=\"http://www.w3.org/1998/Math/MathML\",l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.findMath=function(t){var e=new Set;this.findMathNodes(t,e),this.findMathPrefixed(t,e);var r=this.adaptor.root(this.adaptor.document);return\"html\"===this.adaptor.kind(r)&&0===e.size&&this.findMathNS(t,e),this.processMath(e)},e.prototype.findMathNodes=function(t,e){var r,o;try{for(var a=i(this.adaptor.tags(t,\"math\")),n=a.next();!n.done;n=a.next()){var s=n.value;e.add(s)}}catch(t){r={error:t}}finally{try{n&&!n.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}},e.prototype.findMathPrefixed=function(t,e){var r,o,a,n,l=this.adaptor.root(this.adaptor.document);try{for(var c=i(this.adaptor.allAttributes(l)),u=c.next();!u.done;u=c.next()){var h=u.value;if(\"xmlns:\"===h.name.substr(0,6)&&h.value===s){var p=h.name.substr(6);try{for(var d=(a=void 0,i(this.adaptor.tags(t,p+\":math\"))),f=d.next();!f.done;f=d.next()){var M=f.value;e.add(M)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(n=d.return)&&n.call(d)}finally{if(a)throw a.error}}}}}catch(t){r={error:t}}finally{try{u&&!u.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}},e.prototype.findMathNS=function(t,e){var r,o;try{for(var a=i(this.adaptor.tags(t,\"math\",s)),n=a.next();!n.done;n=a.next()){var l=n.value;e.add(l)}}catch(t){r={error:t}}finally{try{n&&!n.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}},e.prototype.processMath=function(t){var e,r,o=[];try{for(var a=i(Array.from(t)),n=a.next();!n.done;n=a.next()){var s=n.value,l=\"block\"===this.adaptor.getAttribute(s,\"display\")||\"display\"===this.adaptor.getAttribute(s,\"mode\"),c={node:s,n:0,delim:\"\"},u={node:s,n:0,delim:\"\"};o.push({math:this.adaptor.outerHTML(s),start:c,end:u,display:l})}}catch(t){e={error:t}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return o},e.OPTIONS={},e}(n.AbstractFindMath);e.FindMathML=l},function(t,e,r){\"use strict\";var o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;r<o;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],o=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathMLCompile=void 0;var i=r(8),n=r(3),s=r(9),l=function(){function t(t){void 0===t&&(t={});var e=this.constructor;this.options=n.userOptions(n.defaultOptions({},e.OPTIONS),t)}return t.prototype.setMmlFactory=function(t){this.factory=t},t.prototype.compile=function(t){var e=this.makeNode(t);return e.verifyTree(this.options.verify),e.setInheritedAttributes({},!1,0,!1),e.walkTree(this.markMrows),e},t.prototype.makeNode=function(t){var e,r,o=this.adaptor,n=!1,s=o.kind(t).replace(/^.*:/,\"\"),l=o.getAttribute(t,\"data-mjx-texclass\")||\"\";l&&(l=this.filterAttribute(\"data-mjx-texclass\",l)||\"\");var c=l&&\"mrow\"===s?\"TeXAtom\":s;try{for(var u=a(this.filterClassList(o.allClasses(t))),h=u.next();!h.done;h=u.next()){var p=h.value;p.match(/^MJX-TeXAtom-/)?(l=p.substr(12),c=\"TeXAtom\"):\"MJX-fixedlimits\"===p&&(n=!0)}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=u.return)&&r.call(u)}finally{if(e)throw e.error}}this.factory.getNodeClass(c)||this.error('Unknown node type \"'+c+'\"');var d=this.factory.create(c);return\"TeXAtom\"===c?this.texAtom(d,l,n):l&&(d.texClass=i.TEXCLASS[l],d.setProperty(\"texClass\",d.texClass)),this.addAttributes(d,t),this.checkClass(d,t),this.addChildren(d,t),d},t.prototype.addAttributes=function(t,e){var r,o,i=!1;try{for(var n=a(this.adaptor.allAttributes(e)),s=n.next();!s.done;s=n.next()){var l=s.value,c=l.name,u=this.filterAttribute(c,l.value);if(null===u)return;if(\"data-mjx-\"===c.substr(0,9))\"data-mjx-alternate\"===c?t.setProperty(\"variantForm\",!0):\"data-mjx-variant\"===c&&(t.attributes.set(\"mathvariant\",u),i=!0);else if(\"class\"!==c){var h=u.toLowerCase();\"true\"===h||\"false\"===h?t.attributes.set(c,\"true\"===h):i&&\"mathvariant\"===c||t.attributes.set(c,u)}}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}},t.prototype.filterAttribute=function(t,e){return e},t.prototype.filterClassList=function(t){return t},t.prototype.addChildren=function(t,e){var r,o;if(0!==t.arity){var i=this.adaptor;try{for(var n=a(i.childNodes(e)),s=n.next();!s.done;s=n.next()){var l=s.value,c=i.kind(l);if(\"#comment\"!==c)if(\"#text\"===c)this.addText(t,l);else if(t.isKind(\"annotation-xml\"))t.appendChild(this.factory.create(\"XML\").setXML(l,i));else{var u=t.appendChild(this.makeNode(l));0===u.arity&&i.childNodes(l).length&&(this.options.fixMisplacedChildren?this.addChildren(t,l):u.mError(\"There should not be children for \"+u.kind+\" nodes\",this.options.verify,!0))}}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}}},t.prototype.addText=function(t,e){var r=this.adaptor.value(e);(t.isToken||t.getProperty(\"isChars\"))&&t.arity?(t.isToken&&(r=s.translate(r),r=this.trimSpace(r)),t.appendChild(this.factory.create(\"text\").setText(r))):r.match(/\\S/)&&this.error('Unexpected text node \"'+r+'\"')},t.prototype.checkClass=function(t,e){var r,o,i=[];try{for(var n=a(this.filterClassList(this.adaptor.allClasses(e))),s=n.next();!s.done;s=n.next()){var l=s.value;\"MJX-\"===l.substr(0,4)?\"MJX-variant\"===l?t.setProperty(\"variantForm\",!0):\"MJX-TeXAtom\"!==l.substr(0,11)&&t.attributes.set(\"mathvariant\",this.fixCalligraphic(l.substr(3))):i.push(l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}i.length&&t.attributes.set(\"class\",i.join(\" \"))},t.prototype.fixCalligraphic=function(t){return t.replace(/caligraphic/,\"calligraphic\")},t.prototype.texAtom=function(t,e,r){t.texClass=i.TEXCLASS[e],t.setProperty(\"texClass\",t.texClass),\"OP\"!==e||r||(t.setProperty(\"movesupsub\",!0),t.attributes.setInherited(\"movablelimits\",!0))},t.prototype.markMrows=function(t){if(t.isKind(\"mrow\")&&!t.isInferred&&t.childNodes.length>=2){var e=t.childNodes[0],r=t.childNodes[t.childNodes.length-1];e.isKind(\"mo\")&&e.attributes.get(\"fence\")&&r.isKind(\"mo\")&&r.attributes.get(\"fence\")&&(e.childNodes.length&&t.setProperty(\"open\",e.getText()),r.childNodes.length&&t.setProperty(\"close\",r.getText()))}},t.prototype.trimSpace=function(t){return t.replace(/[\\t\\n\\r]/g,\" \").replace(/^ +/,\"\").replace(/ +$/,\"\").replace(/  +/g,\" \")},t.prototype.error=function(t){throw new Error(t)},t.OPTIONS={MmlFactory:null,fixMisplacedChildren:!0,verify:o({},i.AbstractMmlNode.verifyDefaults),translateEntities:!0},t}();e.MathMLCompile=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";r.r(e);var o=r(4),a=r(0),i=r(1),n=r(2);Object(o.combineWithMathJax)({_:{input:{mathml_ts:a,mathml:{FindMathML:i,MathMLCompile:n}}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"mml\",a.MathML),MathJax.startup.useInput(\"mml\"))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/action.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=6)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var o=a(2),n=a(3),i=a(4),r=a(5);e.ActionMethods={},e.ActionMethods.Macro=r.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var a,o=[];\"\\\\endtoggle\"!==(a=t.GetArgument(e));)o.push(new n.default(a,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",o,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var a=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[a,o],{actiontype:\"tooltip\"}))},new i.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=o.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{action:{ActionConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/all-packages.js",
    "content": "!function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=78)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var a=r(3),n=r(4),o=r(6),i=r(5),s=r(2),c=r(12),l=r(8),u=r(7);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,n,o,i,s){var c=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=l.default.EqnArray(t,e,r,n,o,i,s);return a.default.setArrayAlign(u,c)},e.AmsMethods.AlignAt=function(t,r,n,o){var i,c,l=r.getName(),u=\"\",d=[];if(o||(c=t.GetBrackets(\"\\\\begin{\"+l+\"}\")),(i=t.GetArgument(\"\\\\begin{\"+l+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+l+\"}\");for(var p=parseInt(i,10);p>0;)u+=\"rl\",d.push(\"0em 0em\"),p--;var f=d.join(\" \");if(o)return e.AmsMethods.EqnArray(t,r,n,o,u,f);var m=e.AmsMethods.EqnArray(t,r,n,o,u,f);return a.default.setArrayAlign(m,c)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),a.default.checkEqnEnv(t);var n=t.itemFactory.create(\"multline\",r,t.stack);return n.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},n},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var n=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",o=a.default.trimSpaces(t.GetArgument(r));\"\\\\\"===o.charAt(0)&&(o=o.substr(1));var i=t.GetArgument(r);i.match(/\\\\text/)||(i=i.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(o,new c.Macro(o,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+i+\"}\"+n]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=a.default.trimSpaces(t.GetArgument(e));n.match(/\\\\text/)||(n=n.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+n+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),a=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=a)},e.AmsMethods.MultiIntegral=function(t,e,r){var a=t.GetNext();if(\"\\\\\"===a){var n=t.i;a=t.GetArgument(e),t.i=n,\"\\\\limits\"===a&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,o,s){var c={width:\"+\"+a.default.Em((o+s)/18),lspace:a.default.Em(o/18)},l=t.GetBrackets(e),d=t.ParseArg(e),p=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(r)),f=t.create(\"node\",\"munderover\",[p]),m=t.create(\"node\",\"mpadded\",[d],c);if(n.default.setAttribute(m,\"voffset\",\".15em\"),n.default.setChild(f,f.over,m),l){var h=new i.default(l,t.stack.env,t.configuration).mml();m=t.create(\"node\",\"mpadded\",[h],c),n.default.setAttribute(m,\"voffset\",\"-.24em\"),n.default.setChild(f,f.under,m)}n.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},e.AmsMethods.HandleShove=function(t,e,r){var a=t.stack.Top();if(\"multline\"!==a.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(a.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);a.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=a.default.trimSpaces(t.GetBrackets(e,\"\")),c=t.GetArgument(e),l=t.GetArgument(e),u={l:o.TexConstant.Align.LEFT,r:o.TexConstant.Align.RIGHT,\"\":\"\"},d=new i.default(\"\\\\strut\\\\textstyle{\"+c+\"}\",t.stack.env,t.configuration).mml(),p=new i.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),f=t.create(\"node\",\"mfrac\",[d,p]);if(null==(r=u[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&n.default.setProperties(f,{numalign:r,denomalign:r}),t.Push(f)},e.AmsMethods.Genfrac=function(t,e,r,o,i,c){null==r&&(r=t.GetDelimiterArg(e)),null==o&&(o=t.GetDelimiterArg(e)),null==i&&(i=t.GetArgument(e)),null==c&&(c=a.default.trimSpaces(t.GetArgument(e)));var l=t.ParseArg(e),u=t.ParseArg(e),d=t.create(\"node\",\"mfrac\",[l,u]);if(\"\"!==i&&n.default.setAttribute(d,\"linethickness\",i),(r||o)&&(n.default.setProperty(d,\"withDelims\",!0),d=a.default.fixedFence(t.configuration,r,d,o)),\"\"!==c){var p=parseInt(c,10),f=[\"D\",\"T\",\"S\",\"SS\"][p];if(null==f)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);d=t.create(\"node\",\"mstyle\",[d]),\"D\"===f?n.default.setProperties(d,{displaystyle:!0,scriptlevel:0}):n.default.setProperties(d,{displaystyle:!1,scriptlevel:p-1})}t.Push(d)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),n=a.default.trimSpaces(t.GetArgument(e));t.tags.tag(n,r)},e.AmsMethods.HandleNoTag=l.default.HandleNoTag,e.AmsMethods.HandleRef=l.default.HandleRef,e.AmsMethods.Macro=l.default.Macro,e.AmsMethods.Accent=l.default.Accent,e.AmsMethods.Tilde=l.default.Tilde,e.AmsMethods.Array=l.default.Array,e.AmsMethods.Spacer=l.default.Spacer,e.AmsMethods.NamedOp=l.default.NamedOp,e.AmsMethods.EqnArray=l.default.EqnArray},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlStack=MathJax._.input.tex.StackItem.MmlStack,e.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var i=r(0),s=r(1),c=r(2),l=r(20),u=r(28),d=r(76),p=r(77),f=r(10),m=l.MathJax.config;function h(t,e){var r,n=t.parseOptions.options.require,o=t.parseOptions.packageData.get(\"require\").required,s=e.substr(n.prefix.length);if(o.indexOf(s)<0){o.push(s),function(t,e){var r,n;void 0===e&&(e=[]);var o=t.parseOptions.options.require.prefix;try{for(var i=a(e),s=i.next();!s.done;s=i.next()){var c=s.value;c.substr(0,o.length)===o&&h(t,c)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}(t,d.CONFIG.dependencies[e]);var c=i.ConfigurationHandler.get(s);if(c){var l=m[e]||{};c.options&&1===Object.keys(c.options).length&&c.options[s]&&((r={})[s]=l,l=r),t.configuration.add(c,t,l);var u=t.parseOptions.packageData.get(\"require\").configured;c.preprocessors.length&&!u.has(s)&&(u.set(s,!0),p.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,a=r.allow,n=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(a.hasOwnProperty(n)?a[n]:a.hasOwnProperty(e)?a[e]:r.defaultAllow))throw new c.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',n);u.Package.packages.has(n)?h(t.configuration.packageData.get(\"require\").jax,n):p.mathjax.retryAfter(d.Loader.load(n))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new c.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:f.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:o(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,a=r.prefix;if(a.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");d.CONFIG.paths[a]||(d.CONFIG.paths[a]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+a+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,r(22),r(29),r(30),r(33),r(36),r(37),r(38),r(42),r(47),r(48),r(52),r(53),r(24),r(54),r(57),r(59),r(26),r(61),r(62),r(63),r(67),r(68),r(73),r(75),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,r){\"use strict\";var a,n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var i=r(4),s=r(3),c=null,l=null,u=function(t){return l.root=t,c.outputJax.getBBox(l,c).w},d=function(t){for(var e=0;t&&!i.default.isType(t,\"mtable\");){if(i.default.isType(t,\"text\"))return null;i.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},p=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},f=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},m=function(t){return f(t,0)},h=function(t){return f(t,t.childNodes.length-1)},g=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(t){for(;t&&!i.default.isType(t,\"mtd\");)t=t.parent;return t},y=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},x=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},b=function(t,e,r){void 0===r&&(r=!1);var a=0;if(t===e)return a;if(t!==e.parent){var n=t.childNodes,o=r?n.length-1:0;i.default.isType(n[o],\"mspace\")&&(a+=u(n[o])),t=e.parent}if(t===e)return a;var s=t.childNodes,c=r?s.length-1:0;return s[c]!==e&&(a+=u(s[c])),a},_=function(t,r){void 0===r&&(r=!1);var a=d(t),n=g(a,e.getProperty(a,\"inferenceRule\"));return b(t,a,r)+(u(a)-u(n))/2},M=function(t,r,a,n){if(void 0===n&&(n=!1),e.getProperty(r,\"inferenceRule\")||e.getProperty(r,\"labelledRule\")){var o=t.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(o,r),o.setChildren([r]),A(r,o),r=o}var c=n?r.childNodes.length-1:0,l=r.childNodes[c];i.default.isType(l,\"mspace\")?i.default.setAttribute(l,\"width\",s.default.Em(s.default.dimen2em(i.default.getAttribute(l,\"width\"))+a)):(l=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(a)}),n?r.appendChild(l):(l.parent=r,r.childNodes.unshift(l)))},A=function(t,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(a){var n=e.getProperty(t,a);null!=n&&(e.setProperty(r,a,n),e.removeProperty(t,a))}))},w=function(t,r,a,n,o){var i=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(o)});if(\"left\"===n){var c=r.childNodes[a].childNodes[0];i.parent=c,c.childNodes.unshift(i)}else r.childNodes[a].appendChild(i);e.setProperty(r.parent,\"sequentAdjust_\"+n,o)},C=function(t,r){for(var a=r.pop();r.length;){var o=r.pop(),i=n(S(a,o),2),s=i[0],c=i[1];e.getProperty(a.parent,\"axiom\")&&(w(t,s<0?a:o,0,\"left\",Math.abs(s)),w(t,c<0?a:o,2,\"right\",Math.abs(c))),a=o}},S=function(t,e){var r=u(t.childNodes[2]),a=u(e.childNodes[2]);return[u(t.childNodes[0])-u(e.childNodes[0]),r-a]};e.balanceRules=function(t){var r,a;l=new t.document.options.MathItem(\"\",null,t.math.display);var n=t.data;!function(t){var r=t.nodeLists.sequent;if(r)for(var a=r.length-1,n=void 0;n=r[a];a--)if(e.getProperty(n,\"sequentProcessed\"))e.removeProperty(n,\"sequentProcessed\");else{var o=[],i=x(n);if(1===e.getProperty(i,\"inference\")){for(o.push(n);1===e.getProperty(i,\"inference\");){i=d(i);var s=m(p(i,e.getProperty(i,\"inferenceRule\"))),c=e.getProperty(s,\"inferenceRule\")?g(s,e.getProperty(s,\"inferenceRule\")):s;e.getProperty(c,\"sequent\")&&(n=c.childNodes[0],o.push(n),e.setProperty(n,\"sequentProcessed\",!0)),i=s}C(t,o)}}}(n);var i=n.nodeLists.inference||[];try{for(var s=o(i),c=s.next();!c.done;c=s.next()){var u=c.value,f=e.getProperty(u,\"proof\"),A=d(u),w=p(A,e.getProperty(A,\"inferenceRule\")),S=m(w);if(e.getProperty(S,\"inference\")){var P=_(S);if(P){M(n,S,-P);var k=b(u,A,!1);M(n,u,P-k)}}var O=h(w);if(null!=e.getProperty(O,\"inference\")){var T=_(O,!0);M(n,O,-T,!0);var q=b(u,A,!0),E=e.getProperty(u,\"maxAdjust\");null!=E&&(T=Math.max(T,E));var I=void 0;if(!f&&(I=v(u))){var N=y(I);if(N){var B=n.nodeFactory.create(\"node\",\"mspace\",[],{width:T-q+\"em\"});N.appendChild(B),u.removeProperty(\"maxAdjust\")}else{var G=x(I);G&&(T=e.getProperty(G,\"maxAdjust\")?Math.max(e.getProperty(G,\"maxAdjust\"),T):T,e.setProperty(G,\"maxAdjust\",T))}}else M(n,e.getProperty(u,\"proof\")?u:u.parent,T-q,!0)}}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}};var P=((a={}).bspr_maxAdjust=!0,a);e.setProperty=function(t,e,r){i.default.setProperty(t,\"bspr_\"+e,r)},e.getProperty=function(t,e){return i.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var r=[];t.getPropertyNames().forEach((function(e){!P[e]&&e.match(RegExp(\"^bspr_\"))&&r.push(e+\":\"+t.getProperty(e))})),r.length&&i.default.setAttribute(t,\"semantics\",r.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(c=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){c=null}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a,n=r(3),o=r(2),i=r(12);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var a in e.attributes)r.push(a),r.push(e.attributes[a]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],a={},n=2;n<t.length;n+=2)a[t[n]]=t[n+1];return new i.Symbol(e,r,a)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new o.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return n.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var a=t.GetNext(),n=[],i=0,s=t.i;t.i<t.string.length;){if(\"#\"===(a=t.GetNext())){if(s!==t.i&&(n[i]=t.string.substr(s,t.i-s)),!(a=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new o.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(a)!==++i)throw new o.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===a)return s!==t.i&&(n[i]=t.string.substr(s,t.i-s)),n.length>0?[i.toString()].concat(n):i;t.i++}throw new o.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,a){if(null==a)return t.GetArgument(r);for(var n=t.i,i=0,s=0;t.i<t.string.length;){var c=t.string.charAt(t.i);if(\"{\"===c)t.i===n&&(s=1),t.GetArgument(r),i=t.i-n;else{if(e(t,a))return s&&(n++,i-=2),t.string.substr(n,i);if(\"\\\\\"===c){t.i++,i++,s=0;var l=t.string.substr(t.i).match(/[a-z]+|./i);l&&(t.i+=l[0].length,i=t.i-n)}else t.i++,i++,s=0}}throw new o.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,a,n){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new i.Symbol(r,a,n))},t.addMacro=function(e,r,a,n,o){void 0===o&&(o=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new i.Macro(o||r,a,n))},t.addEnvironment=function(e,r,a,n){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new i.Macro(r,a,n))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var o=r(0),i=r(1),s=r(12),c=r(14),l=r(28),u=r(10);function d(t,e,r,o){var i,s,u,d;if(l.Package.packages.has(t.options.require.prefix+r)){var m=t.options.autoload[r],h=a(2===m.length&&Array.isArray(m[0])?m:[m,[]],2),g=h[0],v=h[1];try{for(var y=n(g),x=y.next();!x.done;x=y.next()){var b=x.value;p.remove(b)}}catch(t){i={error:t}}finally{try{x&&!x.done&&(s=y.return)&&s.call(y)}finally{if(i)throw i.error}}try{for(var _=n(v),M=_.next();!M.done;M=_.next()){var A=M.value;f.remove(A)}}catch(t){u={error:t}}finally{try{M&&!M.done&&(d=_.return)&&d.call(_)}finally{if(u)throw u.error}}t.string=(o?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}c.RequireLoad(t,r)}var p=new i.CommandMap(\"autoload-macros\",{},{}),f=new i.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=o.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:u.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,o,i,l,u,m,h=e.parseOptions,g=h.handlers.get(\"macro\"),v=h.handlers.get(\"environment\"),y=h.options.autoload;h.packageData.set(\"autoload\",{Autoload:d});try{for(var x=n(Object.keys(y)),b=x.next();!b.done;b=x.next()){var _=b.value,M=y[_],A=a(2===M.length&&Array.isArray(M[0])?M:[M,[]],2),w=A[0],C=A[1];try{for(var S=(i=void 0,n(w)),P=S.next();!P.done;P=S.next()){var k=P.value;g.lookup(k)&&\"color\"!==k||p.add(k,new s.Macro(k,d,[_,!0]))}}catch(t){i={error:t}}finally{try{P&&!P.done&&(l=S.return)&&l.call(S)}finally{if(i)throw i.error}}try{for(var O=(u=void 0,n(C)),T=O.next();!T.done;T=O.next()){var q=T.value;v.lookup(q)||f.add(q,new s.Macro(q,d,[_,!1]))}}catch(t){u={error:t}}finally{try{T&&!T.done&&(m=O.return)&&m.call(O)}finally{if(u)throw u.error}}}}catch(t){r={error:t}}finally{try{b&&!b.done&&(o=x.return)&&o.call(x)}finally{if(r)throw r.error}}h.packageData.get(\"require\")||c.RequireConfiguration.config(t,e)},init:function(t){t.options.require||u.defaultOptions(t.options,c.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Other=MathJax._.input.tex.base.BaseConfiguration.Other,e.BaseTags=MathJax._.input.tex.base.BaseConfiguration.BaseTags,e.BaseConfiguration=MathJax._.input.tex.base.BaseConfiguration.BaseConfiguration},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var a=r(0),n=r(1),o=r(3);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,r){var a=t.GetArgument(r).replace(/,/g,\" \"),n=t.GetBrackets(r,\"\"),i=t.ParseArg(r),s=o.default.keyvalOptions(n,e.ENCLOSE_OPTIONS);s.notation=a,t.Push(t.create(\"node\",\"menclose\",[i],s))},new n.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=a.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(2),n=r(1),o=r(8),i=r(3),s=r(19),c={NewCommand:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),n=t.GetBrackets(e),o=t.GetBrackets(e),l=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new a.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(n&&!(n=i.default.trimSpaces(n)).match(/^[0-9]+$/))throw new a.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,c.Macro,[l,n,o])},NewEnvironment:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),n=t.GetBrackets(e),o=t.GetBrackets(e),l=t.GetArgument(e),u=t.GetArgument(e);if(n&&!(n=i.default.trimSpaces(n)).match(/^[0-9]+$/))throw new a.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,c.BeginEnv,[!0,l,u,n,o])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),a=s.default.GetTemplate(t,e,\"\\\\\"+r),n=t.GetArgument(e);a instanceof Array?s.default.addMacro(t,r,c.MacroWithTemplate,[n].concat(a)):s.default.addMacro(t,r,c.Macro,[n,a])},Let:function(t,e){var r=s.default.GetCSname(t,e),a=t.GetNext();\"=\"===a&&(t.i++,a=t.GetNext());var o=t.configuration.handlers;if(\"\\\\\"!==a){t.i++;var i=o.get(\"delimiter\").lookup(a);i?s.default.addDelimiter(t,\"\\\\\"+r,i.char,i.attributes):s.default.addMacro(t,r,c.Macro,[a])}else{e=s.default.GetCSname(t,e);var l=o.get(\"delimiter\").lookup(\"\\\\\"+e);if(l)return void s.default.addDelimiter(t,\"\\\\\"+r,l.char,l.attributes);var u=o.get(\"macro\").applicable(e);if(!u)return;if(u instanceof n.MacroMap){var d=u.lookup(e);return void s.default.addMacro(t,r,d.func,d.args,d.symbol)}l=u.lookup(e);var p=s.default.disassembleSymbol(r,l);s.default.addMacro(t,r,(function(t,e){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];var n=s.default.assembleSymbol(r);return u.parser(t,n)}),p)}},MacroWithTemplate:function(t,e,r,n){for(var o=[],c=4;c<arguments.length;c++)o[c-4]=arguments[c];var l=parseInt(n,10);if(l){var u=[];if(t.GetNext(),o[0]&&!s.default.MatchParam(t,o[0]))throw new a.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var d=0;d<l;d++)u.push(s.default.GetParameter(t,e,o[d+1]));r=i.default.substituteArgs(t,u,r)}if(t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,a,n,o){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=a,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(n){var c=[];if(null!=o){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");c.push(null==l?o:l)}for(var u=c.length;u<n;u++)c.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=i.default.substituteArgs(t,c,r),a=i.default.substituteArgs(t,[],a)}return t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};c.Macro=o.default.Macro,e.default=c},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var n=r(0),o=r(55),i=r(19);r(56);var s=r(9),c=r(1);e.NewcommandConfiguration=n.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(a={},a[o.BeginEnvItem.prototype.kind]=o.BeginEnvItem,a),options:{maxMacros:1e3},init:function(t){new c.DelimiterMap(i.default.NEW_DELIMITER,s.default.delimiter,{}),new c.CommandMap(i.default.NEW_COMMAND,{},{}),new c.EnvironmentMap(i.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(n.Configuration.local({handler:{character:[],delimiter:[i.default.NEW_DELIMITER],macro:[i.default.NEW_DELIMITER,i.default.NEW_COMMAND],environment:[i.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var a=r(5),n=r(71),o=r(8);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var r,n,o=t.i,i=0;n=t.GetNext();)switch(r=t.i++,n){case\"\\\\\":\")\"===t.GetCS()&&(n=\"\\\\(\");case\"$\":if(0===i&&e===n){var s=t.texParser.configuration,c=new a.default(t.string.substr(o,r-o),t.stack.env,s).mml();return void t.PushMath(c)}break;case\"{\":i++;break;case\"}\":0===i&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),i--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var r=t.stack.env;t.envStack.push(r),t.stack.env=Object.assign({},r)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,r){t.text+=r},Accent:function(t,e,r){var a=t.ParseArg(name),n=t.create(\"token\",\"mo\",{},r);t.addAttributes(n),t.Push(t.create(\"node\",\"mover\",[a,n]))},Emph:function(t,e){var r=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:r}))},SetFont:function(t,e,r){t.saveText(),t.stack.env.mathvariant=r},SetSize:function(t,e,r){t.saveText(),t.stack.env.mathsize=r},CheckAutoload:function(t,e){var r=t.configuration.packageData.get(\"autoload\"),a=t.texParser;e=e.slice(1);var o=a.lookup(\"macro\",e);if(!o||r&&o._func===r.Autoload){if(a.parse(\"macro\",[a,e]),!o)return;n.retryAfter(Promise.resolve())}a.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var a=r(0),n=r(5),o=r(1),i=r(8);e.ActionMethods={},e.ActionMethods.Macro=i.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var r,a=[];\"\\\\endtoggle\"!==(r=t.GetArgument(e));)a.push(new n.default(r,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",a,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var r=t.ParseArg(e),a=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[r,a],{actiontype:\"tooltip\"}))},new o.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=a.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,r){\"use strict\";var a,n,o=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var i=r(0),s=r(31),c=r(17),l=r(11);r(32);var u=r(1),d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(c.AbstractTags);e.AmsTags=d;e.AmsConfiguration=i.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(n={},n[s.MultlineItem.prototype.kind]=s.MultlineItem,n),tags:{ams:d},init:function(t){new u.CommandMap(l.NEW_OPS,{},{}),t.append(i.Configuration.local({handler:{macro:[l.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var o=r(16),i=r(3),s=r(4),c=r(2),l=r(6),u=function(t){function e(e){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];var n=t.call(this,e)||this;return n.factory.configuration.tags.start(\"multline\",!0,r[0]),n}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&i.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new c.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",l.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",l.TexConstant.Align.RIGHT);var a=this.factory.configuration.tags.getTag();if(a){r=this.arraydef.side===l.TexConstant.Align.LEFT?0:this.table.length-1;var n=this.table[r],o=this.create(\"node\",\"mlabeledtr\",[a].concat(s.default.getChildren(n)));s.default.copyAttributes(n,o),this.table[r]=o}}this.factory.configuration.tags.end()},e}(o.ArrayItem);e.MultlineItem=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(11),n=r(1),o=r(6),i=r(9),s=r(3),c=r(7),l=function(t){for(var e=[],r=0,a=t.length;r<a;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new n.CharacterMap(\"AMSmath-mathchar0mo\",i.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:c.TEXCLASS.OP}]}),new n.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",o.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",o.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",o.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",o.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},a.AmsMethods),new n.EnvironmentMap(\"AMSmath-environment\",i.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+o.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",l([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,l([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",l([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},a.AmsMethods),new n.DelimiterMap(\"AMSmath-delimiter\",i.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:c.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:c.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:c.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:c.TEXCLASS.CLOSE}]}),new n.CharacterMap(\"AMSsymbols-mathchar0mi\",i.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:o.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:o.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:o.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:o.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:o.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:o.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:o.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:o.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:o.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:o.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:o.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new n.CharacterMap(\"AMSsymbols-mathchar0m0\",i.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new n.DelimiterMap(\"AMSsymbols-delimiter\",i.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new n.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},a.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var a=r(0);r(34),e.AmsCdConfiguration=a.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(9),o=r(35);new a.EnvironmentMap(\"amscd_environment\",n.default.environment,{CD:\"CD\"},o.default),new a.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new a.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(5),n=r(22),o=r(7),i=r(4),s={CD:function(t,e){t.Push(e);var r=t.itemFactory.create(\"array\"),a=t.configuration.options.amscd;return r.setProperties({minw:t.stack.env.CD_minw||a.harrowsize,minh:t.stack.env.CD_minh||a.varrowsize}),r.arraydef={columnalign:\"center\",columnspacing:a.colspace,rowspacing:a.rowspace,displaystyle:!0},r},arrow:function(t,e){var r=t.string.charAt(t.i);if(!r.match(/[><VA.|=]/))return n.Other(t,e);t.i++;var c=t.stack.Top();c.isKind(\"array\")&&!c.Size()||(s.cell(t,e),c=t.stack.Top());for(var l,u=c,d=u.table.length%2==1,p=(u.row.length+(d?0:1))%2;p;)s.cell(t,e),p--;var f={minsize:u.getProperty(\"minw\"),stretchy:!0},m={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===r);else if(\"|\"===r)l=t.create(\"token\",\"mo\",m,\"\\u2225\");else if(\"=\"===r)l=t.create(\"token\",\"mo\",f,\"=\");else{var h={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[r],g=t.GetUpTo(e+r,r),v=t.GetUpTo(e+r,r);if(\">\"===r||\"<\"===r){if(l=t.create(\"token\",\"mo\",f,h),g||(g=\"\\\\kern \"+u.getProperty(\"minw\")),g||v){var y={width:\".67em\",lspace:\".33em\"};if(l=t.create(\"node\",\"munderover\",[l]),g){var x=new a.default(g,t.stack.env,t.configuration).mml(),b=t.create(\"node\",\"mpadded\",[x],y);i.default.setAttribute(b,\"voffset\",\".1em\"),i.default.setChild(l,l.over,b)}if(v){var _=new a.default(v,t.stack.env,t.configuration).mml();i.default.setChild(l,l.under,t.create(\"node\",\"mpadded\",[_],y))}t.configuration.options.amscd.hideHorizontalLabels&&(l=t.create(\"node\",\"mpadded\",l,{depth:0,height:\".67em\"}))}}else{var M=t.create(\"token\",\"mo\",m,h);l=M,(g||v)&&(l=t.create(\"node\",\"mrow\"),g&&i.default.appendChildren(l,[new a.default(\"\\\\scriptstyle\\\\llap{\"+g+\"}\",t.stack.env,t.configuration).mml()]),M.texClass=o.TEXCLASS.ORD,i.default.appendChildren(l,[M]),v&&i.default.appendChildren(l,[new a.default(\"\\\\scriptstyle\\\\rlap{\"+v+\"}\",t.stack.env,t.configuration).mml()]))}}l&&t.Push(l),s.cell(t,e)},cell:function(t,e){var r=t.stack.Top();(r.table||[]).length%2==0&&0===(r.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=s},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var a=r(0),n=r(1),o=r(2);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var r,a,n,c=t.GetBrackets(e,\"\"),l=t.ParseArg(e),u=c.split(/,/),d=0,p=u.length;d<p;d++){var f=u[d].trim(),m=f.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(m){if(r)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var h=s(m[1]+m[3]);h&&(r={height:\"+\"+h,depth:\"+\"+h,lspace:h,width:\"+\"+2*parseInt(m[1],10)+m[3]})}else if(f.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(a)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);a=f}else if(f.match(/^[-a-z]+:/i)){if(n)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);n=i(f)}else if(\"\"!==f)throw new o.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',f)}r&&(l=t.create(\"node\",\"mpadded\",[l],r)),(a||n)&&(r={},a&&Object.assign(r,{mathbackground:a}),n&&Object.assign(r,{style:n}),l=t.create(\"node\",\"mstyle\",[l],r)),t.Push(l)};var i=function(t){return t},s=function(t){return t};new n.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=a.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var n=r(0),o=r(4),i=r(6),s=r(1),c=r(23),l={};function u(t,e,r,a){var n=c.NodeFactory.createToken(t,e,r,a);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(o.default.setProperty(n,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",n)),n}function d(t){var e,r;try{for(var n=a(t.data.getList(\"fixBold\")),s=n.next();!s.done;s=n.next()){var c=s.value;if(o.default.getProperty(c,\"fixBold\")){var u=o.default.getAttribute(c,\"mathvariant\");null==u?o.default.setAttribute(c,\"mathvariant\",i.TexConstant.Variant.BOLD):o.default.setAttribute(c,\"mathvariant\",l[u]||u),o.default.removeProperties(c,\"fixBold\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}}l[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,l[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,l[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,l[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,l[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,l[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",l[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var r=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var a=t.ParseArg(e);t.stack.env.boldsymbol=r,t.Push(a)},new s.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=u,e.rewriteBoldTokens=d,e.BoldsymbolConfiguration=n.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:u},postprocessors:[d]})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var n=r(0),o=r(39);r(40),e.BraketConfiguration=n.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(a={},a[o.BraketItem.prototype.kind]=o.BraketItem,a)})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var o=r(13),i=r(7),s=r(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:o.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.getProperty(\"open\"),a=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return s.default.fenced(this.factory.configuration,r,e,a);var n={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},o=this.create(\"token\",\"mo\",n,r);n.texClass=i.TEXCLASS.CLOSE;var c=this.create(\"token\",\"mo\",n,a);return this.create(\"node\",\"mrow\",[o,e,c],{open:r,close:a,texClass:i.TEXCLASS.INNER})},e}(o.BaseItem);e.BraketItem=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(41);new a.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},n.default),new a.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(8),n=r(7),o=r(2),i={};i.Macro=a.default.Macro,i.Braket=function(t,e,r,a,n,i){var s=t.GetNext();if(\"\"===s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var c=!0;\"{\"===s&&(t.i++,c=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:a,stretchy:n,single:c}))},i.Bar=function(t,e){var r=\"|\"===e?\"|\":\"\\u2225\",a=t.stack.Top();if(\"braket\"!==a.kind||a.getProperty(\"barcount\")>=a.getProperty(\"barmax\")){var o=t.create(\"token\",\"mo\",{texClass:n.TEXCLASS.ORD,stretchy:!1},r);t.Push(o)}else{if(\"|\"===r&&\"|\"===t.GetNext()&&(t.i++,r=\"\\u2225\"),a.getProperty(\"stretchy\")){var i=t.create(\"node\",\"TeXAtom\",[],{texClass:n.TEXCLASS.CLOSE});t.Push(i),a.setProperty(\"barcount\",a.getProperty(\"barcount\")+1),i=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),t.Push(i),i=t.create(\"node\",\"TeXAtom\",[],{texClass:n.TEXCLASS.OPEN}),t.Push(i)}else{var s=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);t.Push(s)}}},e.default=i},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var n=r(0),o=r(43),i=r(18);r(45),e.BussproofsConfiguration=n.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(a={},a[o.ProofTreeItem.prototype.kind]=o.ProofTreeItem,a),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var o=r(2),i=r(13),s=r(44),c=r(18),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new s.default(e.factory,{},!0),e}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return c.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),i.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var a=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[a,e],{})},e}(i.BaseItem);e.ProofTreeItem=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.Stack.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(46),n=r(9),o=r(1);new o.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},a.default),new o.EnvironmentMap(\"Bussproofs-environments\",n.default.environment,{prooftree:[\"Prooftree\",null,!1]},a.default)},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(2),i=r(5),s=r(3),c=r(18),l={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=u(t,t.GetArgument(e));c.setProperty(a,\"axiom\",!0),r.Push(a)}},u=function(t,e){var r=s.default.internalMath(t,s.default.trimSpaces(e),0);if(!r[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var a=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),o=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",n([a],r,[o]))};function d(t,e,r,a,n,o,i){var s,l,u,d,p=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),f=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",r,{})],{}),m=t.create(\"node\",\"mtable\",i?[f,p]:[p,f],{align:\"top 2\",rowlines:o,framespacing:\"0 0\"});if(c.setProperty(m,\"inferenceRule\",i?\"up\":\"down\"),a&&(s=t.create(\"node\",\"mpadded\",[a],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),c.setProperty(s,\"prooflabel\",\"left\")),n&&(l=t.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),c.setProperty(l,\"prooflabel\",\"right\")),a&&n)u=[s,m,l],d=\"both\";else if(a)u=[s,m],d=\"left\";else{if(!n)return m;u=[m,l],d=\"right\"}return m=t.create(\"node\",\"mrow\",u),c.setProperty(m,\"labelledRule\",d),m}function p(t,e){if(\"$\"!==t.GetNext())throw new o.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var r=t.GetUpTo(e,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new o.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var n=a(r.split(\"\\\\fCenter\"),2),s=n[0],l=n[1],u=new i.default(s,t.stack.env,t.configuration).mml(),d=new i.default(l,t.stack.env,t.configuration).mml(),p=new i.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),f=t.create(\"node\",\"mtd\",[u],{}),m=t.create(\"node\",\"mtd\",[p],{}),h=t.create(\"node\",\"mtd\",[d],{}),g=t.create(\"node\",\"mtr\",[f,m,h],{}),v=t.create(\"node\",\"mtable\",[g],{columnspacing:\".5ex\",columnalign:\"center 2\"});return c.setProperty(v,\"sequent\",!0),t.configuration.addNode(\"sequent\",g),v}l.Inference=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(a.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=a.getProperty(\"rootAtTop\"),i=1!==r||a.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[a.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var l=t.create(\"node\",\"mtr\",s,{}),p=t.create(\"node\",\"mtable\",[l],{framespacing:\"0 0\"}),f=u(t,t.GetArgument(e)),m=a.getProperty(\"currentLine\");m!==a.getProperty(\"line\")&&a.setProperty(\"currentLine\",a.getProperty(\"line\"));var h=d(t,p,[f],a.getProperty(\"left\"),a.getProperty(\"right\"),m,n);a.setProperty(\"left\",null),a.setProperty(\"right\",null),c.setProperty(h,\"inference\",i),t.configuration.addNode(\"inference\",h),a.Push(h)},l.Label=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=s.default.internalMath(t,t.GetArgument(e),0),i=n.length>1?t.create(\"node\",\"mrow\",n,{}):n[0];a.setProperty(r,i)},l.SetLine=function(t,e,r,a){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"currentLine\",r),a&&n.setProperty(\"line\",r)},l.RootAtTop=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");a.setProperty(\"rootAtTop\",r)},l.AxiomF=function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=p(t,e);c.setProperty(a,\"axiom\",!0),r.Push(a)},l.FCenter=function(t,e){},l.InferenceF=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(a.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=a.getProperty(\"rootAtTop\"),i=1!==r||a.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[a.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var l=t.create(\"node\",\"mtr\",s,{}),u=t.create(\"node\",\"mtable\",[l],{framespacing:\"0 0\"}),f=p(t,e),m=a.getProperty(\"currentLine\");m!==a.getProperty(\"line\")&&a.setProperty(\"currentLine\",a.getProperty(\"line\"));var h=d(t,u,[f],a.getProperty(\"left\"),a.getProperty(\"right\"),m,n);a.setProperty(\"left\",null),a.setProperty(\"right\",null),c.setProperty(h,\"inference\",i),t.configuration.addNode(\"inference\",h),a.Push(h)},e.default=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var a=r(0),n=r(6),o=r(1),i=r(3),s=r(24);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,r){var a=t.GetBrackets(e,\"\"),n=t.ParseArg(e),o=i.default.keyvalOptions(a,s.ENCLOSE_OPTIONS);o.notation=r,t.Push(t.create(\"node\",\"menclose\",[n],o))},e.CancelMethods.CancelTo=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.ParseArg(e),o=t.ParseArg(e),c=i.default.keyvalOptions(r,s.ENCLOSE_OPTIONS);c.notation=[n.TexConstant.Notation.UPDIAGONALSTRIKE,n.TexConstant.Notation.UPDIAGONALARROW,n.TexConstant.Notation.NORTHEASTARROW].join(\" \"),a=t.create(\"node\",\"mpadded\",[a],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[o],c),a]))},new o.CommandMap(\"cancel\",{cancel:[\"Cancel\",n.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",n.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",n.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+n.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=a.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var a=r(1),n=r(0),o=r(49),i=r(50);new a.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},o.ColorMethods);e.ColorConfiguration=n.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new i.ColorModel})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var a=r(4),n=r(3);function o(t){var e=\"+\"+t,r=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+r,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.GetArgument(e),n=t.configuration.packageData.get(\"color\").model.getColor(r,a),o=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:n}});t.stack.env.color=n,t.Push(o)},e.ColorMethods.TextColor=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.GetArgument(e),n=t.configuration.packageData.get(\"color\").model.getColor(r,a),o=t.stack.env.color;t.stack.env.color=n;var i=t.ParseArg(e);o?t.stack.env.color=o:delete t.stack.env.color;var s=t.create(\"node\",\"mstyle\",[i],{mathcolor:n});t.Push(s)},e.ColorMethods.DefineColor=function(t,e){var r=t.GetArgument(e),a=t.GetArgument(e),n=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(a,r,n)},e.ColorMethods.ColorBox=function(t,e){var r=t.GetArgument(e),i=n.default.internalMath(t,t.GetArgument(e)),s=t.configuration.packageData.get(\"color\").model,c=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",r)});a.default.setProperties(c,o(t.options.color.padding)),t.Push(c)},e.ColorMethods.FColorBox=function(t,e){var r=t.GetArgument(e),i=t.GetArgument(e),s=n.default.internalMath(t,t.GetArgument(e)),c=t.options.color,l=t.configuration.packageData.get(\"color\").model,u=t.create(\"node\",\"mpadded\",s,{mathbackground:l.getColor(\"named\",i),style:\"border: \"+c.borderWidth+\" solid \"+l.getColor(\"named\",r)});a.default.setProperties(u,o(c.padding)),t.Push(u)}},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var n=r(2),o=r(51),i=new Map,s=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(i.has(t))return i.get(t)(e);throw new n.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):o.COLORS.has(t)?o.COLORS.get(t):t},t.prototype.defineColor=function(t,e,r){var a=this.normalizeColor(t,r);this.userColors.set(e,a)},t}();e.ColorModel=s,i.set(\"rgb\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var s=a(o),c=s.next();!c.done;c=s.next()){var l=c.value;if(!l.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var u=parseFloat(l);if(u<0||u>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var d=Math.floor(255*u).toString(16);d.length<2&&(d=\"0\"+d),i+=d}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"RGB\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var s=a(o),c=s.next();!c.done;c=s.next()){var l=c.value;if(!l.match(/^\\d+$/))throw new n.default(\"InvalidNumber\",\"Invalid number\");var u=parseInt(l);if(u>255)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var d=u.toString(16);d.length<2&&(d=\"0\"+d),i+=d}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var r=Math.floor(255*e).toString(16);return r.length<2&&(r=\"0\"+r),\"#\"+r+r+r}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var a=r(1),n=r(0);e.ColorV2Methods={Color:function(t,e){var r=t.GetArgument(e),a=t.stack.env.color;t.stack.env.color=r;var n=t.ParseArg(e);a?t.stack.env.color=a:delete t.stack.env.color;var o=t.create(\"node\",\"mstyle\",[n],{mathcolor:r});t.Push(o)}},new a.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var n=r(0),o=r(10),i=r(1),s=r(12),c=r(25);e.ConfigMacrosConfiguration=n.Configuration.create(\"configmacros\",{init:function(t){new i.CommandMap(\"configmacros-map\",{},{}),t.append(n.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,n,o=e.parseOptions.handlers.retrieve(\"configmacros-map\"),i=e.parseOptions.options.macros;try{for(var l=a(Object.keys(i)),u=l.next();!u.done;u=l.next()){var d=u.value,p=\"string\"==typeof i[d]?[i[d]]:i[d],f=Array.isArray(p[2])?new s.Macro(d,c.default.MacroWithTemplate,p.slice(0,2).concat(p[2])):new s.Macro(d,c.default.Macro,p);o.add(d,f)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}},options:{macros:o.expandable({})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var a=r(0),n=r(1),o=r(11),i=r(19),s=r(26),c=r(2);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=o.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,r){var a=t.GetArgument(r),n=t.GetArgument(r),o=t.GetArgument(r);if(!a.match(/^\\\\([a-z]+|.)$/i))throw new c.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",r);if(!n.match(/^(\\d+),(\\d+)$/))throw new c.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",r);if(!o.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new c.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",r);a=a.substr(1);var s=n.split(\",\");i.default.addMacro(t,a,e.ExtpfeilMethods.xArrow,[parseInt(o),parseInt(s[0]),parseInt(s[1])])},new n.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=a.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){s.NewcommandConfiguration.init(t)}})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var o=r(2),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new o.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(13).BaseItem);e.BeginEnvItem=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(25);new(r(1).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var a=r(0),n=r(1),o=r(58);new n.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=a.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(4),n={Href:function(t,e){var r=t.GetArgument(e),n=o(t,e);a.default.setAttribute(n,\"href\",r),t.Push(n)},Class:function(t,e){var r=t.GetArgument(e),n=o(t,e),i=a.default.getAttribute(n,\"class\");i&&(r=i+\" \"+r),a.default.setAttribute(n,\"class\",r),t.Push(n)},Style:function(t,e){var r=t.GetArgument(e),n=o(t,e),i=a.default.getAttribute(n,\"style\");i&&(\";\"!==r.charAt(r.length-1)&&(r+=\";\"),r=i+\" \"+r),a.default.setAttribute(n,\"style\",r),t.Push(n)},Id:function(t,e){var r=t.GetArgument(e),n=o(t,e);a.default.setAttribute(n,\"id\",r),t.Push(n)}},o=function(t,e){var r=t.ParseArg(e);if(!a.default.isInferred(r))return r;var n=a.default.getChildren(r);if(1===n.length)return n[0];var o=t.create(\"node\",\"mrow\");return a.default.copyChildren(r,o),a.default.copyAttributes(r,o),o};e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var a=r(0),n=r(1),o=r(2),i=r(8),s=r(11),c=r(60),l={};l.Macro=i.default.Macro,l.xArrow=s.AmsMethods.xArrow,l.Machine=function(t,e,r){try{var a=t.GetArgument(e),n=c.mhchemParser.go(a,r),i=c.texify.go(n);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new o.default(t[0],t[1],t.slice(2))}},new n.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},l),e.MhchemConfiguration=a.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var r,n=\"0\",o={};o.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,s=[];;){r!==t?(i=10,r=t):i--;var c=a.stateMachines[e],l=c.transitions[n]||c.transitions[\"*\"];t:for(var u=0;u<l.length;u++){var d=a.patterns.match_(l[u].pattern,t);if(d){for(var p=l[u].task,f=0;f<p.action_.length;f++){var m;if(c.actions[p.action_[f].type_])m=c.actions[p.action_[f].type_](o,d.match_,p.action_[f].option);else{if(!a.actions[p.action_[f].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+p.action_[f].type_+\")\"];m=a.actions[p.action_[f].type_](o,d.match_,p.action_[f].option)}a.concatArray(s,m)}if(n=p.nextState||n,!(t.length>0))return s;if(p.revisit||(t=d.remainder),!p.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var r=0;r<e.length;r++)t.push(e[r]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=a.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var r=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return r?{match_:r[0],remainder:t.substr(r[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return a.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return a.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return a.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return a.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return a.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return a.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return a.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var r=a.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return r&&(e=r.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,r,a,n,o,i,s,c,l){var u=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var r=t.match(e);return r?r[0]:null},d=u(t,e);if(null===d)return null;if(t=t.substr(d.length),null===(d=u(t,r)))return null;var p=function(t,e,r){for(var a=0;e<t.length;){var n=t.charAt(e),o=u(t.substr(e),r);if(null!==o&&0===a)return{endMatchBegin:e,endMatchEnd:e+o.length};if(\"{\"===n)a++;else if(\"}\"===n){if(0===a)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];a--}e++}return null}(t,d.length,a||n);if(null===p)return null;var f=t.substring(0,a?p.endMatchEnd:p.endMatchBegin);if(o||i){var m=this.findObserveGroups(t.substr(p.endMatchEnd),o,i,s,c);if(null===m)return null;var h=[f,m.match_];return{match_:l?h.join(\"\"):h,remainder:m.remainder}}return{match_:f,remainder:t.substr(p.endMatchEnd)}},match_:function(t,e){var r=a.patterns.patterns[t];if(void 0===r)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof r)return a.patterns.patterns[t](e);var n=e.match(r);return n?{match_:n[2]?[n[1],n[2]]:n[1]?n[1]:n[0],remainder:e.substr(n[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,r){return{type_:r}},\"insert+p1\":function(t,e,r){return{type_:r,p1:e}},\"insert+p1+p2\":function(t,e,r){return{type_:r,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return a.go(e,\"text\")},\"{text}\":function(t,e){var r=[\"{\"];return a.concatArray(r,a.go(e,\"text\")),r.push(\"}\"),r},\"tex-math\":function(t,e){return a.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return a.go(e,\"tex-math tight\")},bond:function(t,e,r){return{type_:\"bond\",kind_:r||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return a.go(e)},\"1/2\":function(t,e){var r=[];e.match(/^[+\\-]/)&&(r.push(e.substr(0,1)),e=e.substr(1));var a=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return a[1]=a[1].replace(/\\$/g,\"\"),r.push({type_:\"frac\",p1:a[1],p2:a[2]}),a[3]&&(a[3]=a[3].replace(/\\$/g,\"\"),r.push({type_:\"tex-math\",p1:a[3]})),r},\"9,9\":function(t,e){return a.go(e,\"9,9\")}},createTransitions:function(t){var e,r,a,n,o={};for(e in t)for(r in t[e])for(a=r.split(\"|\"),t[e][r].stateArray=a,n=0;n<a.length;n++)o[a[n]]=[];for(e in t)for(r in t[e])for(a=t[e][r].stateArray||[],n=0;n<a.length;n++){var i=t[e][r];if(i.action_){i.action_=[].concat(i.action_);for(var s=0;s<i.action_.length;s++)\"string\"==typeof i.action_[s]&&(i.action_[s]={type_:i.action_[s]})}else i.action_=[];for(var c=e.split(\"|\"),l=0;l<c.length;l++)if(\"*\"===a[n])for(var u in o)o[u].push({pattern:c[l],task:i});else o[a[n]].push({pattern:c[l],task:i})}return o},stateMachines:{}};a.stateMachines={ce:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var r;if((t.d||\"\").match(/^[0-9]+$/)){var n=t.d;t.d=void 0,r=this.output(t),t.b=n}else r=this.output(t);return a.actions[\"o=\"](t,e),r},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var r=[];return a.concatArray(r,this.output(t)),a.concatArray(r,a.actions.bond(t,e,\"-\")),r}t.d=e},\"- after o/d\":function(t,e,r){var n=a.patterns.match_(\"orbital\",t.o||\"\"),o=a.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=a.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),s=a.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),c=\"-\"===e&&(n&&\"\"===n.remainder||o||i||s);!c||t.a||t.b||t.p||t.d||t.q||n||!i||(t.o=\"$\"+t.o+\"$\");var l=[];return c?(a.concatArray(l,this.output(t)),l.push({type_:\"hyphen\"})):(n=a.patterns.match_(\"digits\",t.d||\"\"),r&&n&&\"\"===n.remainder?(a.concatArray(l,a.actions[\"d=\"](t,e)),a.concatArray(l,this.output(t))):(a.concatArray(l,this.output(t)),a.concatArray(l,a.actions.bond(t,e,\"-\")))),l},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:a.go(e,\"o\")}},comma:function(t,e){var r=e.replace(/\\s*$/,\"\");return r!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:r}:{type_:\"comma enumeration M\",p1:r}},output:function(t,e,r){var n,o,i;t.r?(o=\"M\"===t.rdt?a.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:a.go(t.rd),i=\"M\"===t.rqt?a.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:a.go(t.rq),n={type_:\"arrow\",r:t.r,rd:o,rq:i}):(n=[],(t.a||t.b||t.p||t.o||t.q||t.d||r)&&(t.sb&&n.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===r?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&a.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),n.push({type_:\"chemfive\",a:a.go(t.a,\"a\"),b:a.go(t.b,\"bd\"),p:a.go(t.p,\"pq\"),o:a.go(t.o,\"o\"),q:a.go(t.q,\"pq\"),d:a.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var s in t)\"parenthesisLevel\"!==s&&\"beginsWithBond\"!==s&&delete t[s];return n},\"oxidation-output\":function(t,e){var r=[\"{\"];return a.concatArray(r,a.go(e,\"oxidation\")),r.push(\"}\"),r},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:a.go(e[0]),p2:a.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:a.go(e[0]),p2:a.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:a.go(e[0]),p2:a.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:a.go(e[0]),p2:a.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}}}},a:{transitions:a.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:a.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var r in t)delete t[r];return e}}}},pq:{transitions:a.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:a.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1],\"pq\")}}}},bd:{transitions:a.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1],\"bd\")}}}},oxidation:{transitions:a.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"tex-math tight\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"9,9\":{transitions:a.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),e[1]&&(a.concatArray(r,a.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?a.concatArray(r,a.go(e[2],\"pu-9,9\")):r.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?r.push({type_:\"cdot\"}):r.push({type_:\"times\"}))),e[3]&&r.push(\"10^{\"+e[5]+\"}\"),r},\"number^\":function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),a.concatArray(r,a.go(e[1],\"pu-9,9\")),r.push(\"^{\"+e[2]+\"}\"),r},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,r=a.patterns.match_(\"{(...)}\",t.d||\"\");r&&\"\"===r.remainder&&(t.d=r.match_);var n=a.patterns.match_(\"{(...)}\",t.q||\"\");if(n&&\"\"===n.remainder&&(t.q=n.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var o={d:a.go(t.d,\"pu\"),q:a.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:o.d,p2:o.q}:(e=o.d,o.d.length>1||o.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),a.concatArray(e,o.q))}else e=a.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var r=a.patterns.match_(\"{(...)}\",t.rm||\"\");e=r&&\"\"===r.remainder?a.go(r.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var n in t)delete t[n];return e}}},\"pu-9,9\":{transitions:a.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var r=t.text_.length%3;0===r&&(r=3);for(var a=t.text_.length-3;a>0;a-=3)e.push(t.text_.substr(a,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,r)),e.reverse()}else e.push(t.text_);for(var n in t)delete t[n];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var r=t.text_.length-3,a=0;a<r;a+=3)e.push(t.text_.substr(a,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(a))}else e.push(t.text_);for(var n in t)delete t[n];return e}}}};var n={go:function(t,e){if(!t)return\"\";for(var r=\"\",a=!1,o=0;o<t.length;o++){var i=t[o];\"string\"==typeof i?r+=i:(r+=n._go2(i),\"1st-level escape\"===i.type_&&(a=!0))}return e||a||!r||(r=\"{\"+r+\"}\"),r},_goInner:function(t){return t?n.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var r={a:n._goInner(t.a),b:n._goInner(t.b),p:n._goInner(t.p),o:n._goInner(t.o),q:n._goInner(t.q),d:n._goInner(t.d)};r.a&&(r.a.match(/^[+\\-]/)&&(r.a=\"{\"+r.a+\"}\"),e+=r.a+\"\\\\,\"),(r.b||r.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(r.b||\"\")+\"}}_{\\\\hphantom{\"+(r.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(r.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(r.p||\"\")+\"}}}\"),r.o&&(r.o.match(/^[+\\-]/)&&(r.o=\"{\"+r.o+\"}\"),e+=r.o),\"kv\"===t.dType?((r.d||r.q)&&(e+=\"{\\\\vphantom{X}}\"),r.d&&(e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):\"oxidation\"===t.dType?(r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):(r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\"),r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+n._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+n._goInner(t.p1);break;case\"bond\":if(!(e=n._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var a=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+a+\"}{\"+a+\"}{\"+a+\"}{\"+a+\"}\";break;case\"pu-frac\":var o=\"\\\\frac{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+o+\"}{\"+o+\"}{\"+o+\"}{\"+o+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+n._goInner(t.p1)+\"}_{\"+n._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+n._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:n._goInner(t.rd),rq:n._goInner(t.rq)},s=n._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(s=\"\\\\long\"+s,i.rd&&(s=\"\\\\overset{\"+i.rd+\"}{\"+s+\"}\"),i.rq&&(s=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+s+\"}\"),s=\" {}\\\\mathrel{\"+s+\"}{} \"):(i.rq&&(s+=\"[{\"+i.rq+\"}]\"),s=\" {}\\\\mathrel{\\\\x\"+(s+=\"{\"+i.rd+\"}\")+\"}{} \"):s=\" {}\\\\mathrel{\\\\long\"+s+\"}{} \",e=s;break;case\"operator\":e=n._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function o(t){}function i(t){}e.mhchemParser=a,e.texify=n,e.assertNever=o,e.assertString=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var a=r(0);e.NoErrorsConfiguration=a.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,r,a){var n=t.create(\"token\",\"mtext\",{},a.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e,title:e})}}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var n=r(0);e.NoUndefinedConfiguration=n.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,n,o=t.create(\"text\",\"\\\\\"+e),i=t.options.noundefined||{},s={};try{for(var c=a([\"color\",\"background\",\"size\"]),l=c.next();!l.done;l=c.next()){var u=l.value;i[u]&&(s[\"math\"+u]=i[u])}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,o))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var n=r(0),o=r(64);r(65),e.PhysicsConfiguration=n.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(a={},a[o.AutoOpen.prototype.kind]=o.AutoOpen,a)})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var o=r(13),i=r(3),s=r(5),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,r=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var a=t.prototype.toMml.call(this),n=e.create(\"node\",\"mpadded\",[a],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[n]))}r&&this.Push(new s.default(r,e.stack.env,e.configuration).mml());var o=t.prototype.toMml.call(this);return i.default.fenced(this.factory.configuration,this.getProperty(\"open\"),o,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var r=e.getProperty(\"autoclose\");return r&&r===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(o.BaseItem);e.AutoOpen=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(66),o=r(6),i=r(9),s=r(7);new a.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",o.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},n.default),new a.CharacterMap(\"Physics-vector-chars\",i.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:o.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:o.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:o.TexConstant.Variant.NORMAL}]}),new a.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},n.default),new a.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},n.default),new a.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},n.default),new a.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},n.default),new a.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},n.default),new a.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},n.default),new a.EnvironmentMap(\"Physics-aux-envs\",i.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},n.default),new a.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},n.default)},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(8),o=r(5),i=r(2),s=r(7),c=r(3),l=r(4),u=r(23),d={},p={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},f=/^(b|B)i(g{1,2})$/;d.Quantity=function(t,e,r,a,n,u,d){void 0===r&&(r=\"(\"),void 0===a&&(a=\")\"),void 0===n&&(n=!1),void 0===u&&(u=\"\"),void 0===d&&(d=\"\");var m=!!n&&t.GetStar(),h=t.GetNext(),g=t.i,v=null;if(\"\\\\\"===h){if(t.i++,!(v=t.GetCS()).match(f)){var y=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,r,y,a)),void(t.i=g)}h=t.GetNext()}var x=p[h];if(n&&\"{\"!==h)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!x){y=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,r,y,a)),void(t.i=g)}if(u){var b=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);d&&l.default.setAttribute(b,\"mathvariant\",d),t.Push(t.itemFactory.create(\"fn\",b))}if(\"{\"===h){var _=t.GetArgument(e);return h=n?r:\"\\\\{\",x=n?a:\"\\\\}\",_=m?h+\" \"+_+\" \"+x:v?\"\\\\\"+v+\"l\"+h+\" \"+_+\" \\\\\"+v+\"r\"+x:\"\\\\left\"+h+\" \"+_+\" \\\\right\"+x,void t.Push(new o.default(_,t.stack.env,t.configuration).mml())}n&&(h=r,x=a),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:h,close:x,big:v}))},d.Eval=function(t,e){var r=t.GetStar(),a=t.GetNext();if(\"{\"!==a){if(\"(\"===a||\"[\"===a)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:a,close:\"|\",smash:r,right:\"\\\\vphantom{\\\\int}\"}));throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var n=t.GetArgument(e),o=\"\\\\left. \"+(r?\"\\\\smash{\"+n+\"}\":n)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+o+t.string.slice(t.i)},d.Commutator=function(t,e,r,a){void 0===r&&(r=\"[\"),void 0===a&&(a=\"]\");var n=t.GetStar(),s=t.GetNext(),c=null;if(\"\\\\\"===s){if(t.i++,!(c=t.GetCS()).match(f))throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=t.GetArgument(e)+\",\"+t.GetArgument(e);l=n?r+\" \"+l+\" \"+a:c?\"\\\\\"+c+\"l\"+r+\" \"+l+\" \\\\\"+c+\"r\"+a:\"\\\\left\"+r+\" \"+l+\" \\\\right\"+a,t.Push(new o.default(l,t.stack.env,t.configuration).mml())};var m=[65,90],h=[97,122],g=[913,937],v=[945,969],y=[48,57];function x(t,e){return t>=e[0]&&t<=e[1]}function b(t,e,r,a){var n=t.configuration.parser,o=u.NodeFactory.createToken(t,e,r,a),i=a.codePointAt(0);return 1===a.length&&!n.stack.env.font&&n.stack.env.vectorFont&&(x(i,m)||x(i,h)||x(i,g)||x(i,y)||x(i,v)&&n.stack.env.vectorStar||l.default.getAttribute(o,\"accent\"))&&l.default.setAttribute(o,\"mathvariant\",n.stack.env.vectorFont),o}d.VectorBold=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=t.configuration.nodeFactory.get(\"token\"),i=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",b),t.stack.env.vectorFont=r?\"bold-italic\":\"bold\",t.stack.env.vectorStar=r;var s=new o.default(a,t.stack.env,t.configuration).mml();i&&(t.stack.env.font=i),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",n),t.Push(s)},d.StarMacro=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];var o=t.GetStar(),s=[];if(r)for(var l=s.length;l<r;l++)s.push(t.GetArgument(e));var u=a.join(o?\"*\":\"\");if(u=c.default.substituteArgs(t,s,u),t.string=c.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var _=function(t,e,r,a,n){var i=new o.default(a,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,i));var s=t.GetNext(),c=p[s];if(c){var l=-1!==n.indexOf(s);if(\"{\"===s){var u=(l?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(r)+\" \"+(l?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}l&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:c})))}};function M(t,e,r){var n=a(t,3),o=n[0],i=n[1],s=n[2];return e&&r?\"\\\\left\\\\langle{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+o+\"}\\\\vert{\"+i+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+o+\"}\\\\right\\\\vert{\"+i+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}d.OperatorApplication=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];_(t,\"fn\",e,r,a)},d.VectorOperator=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];_(t,\"mml\",e,r,a)},d.Expression=function(t,e,r,a){void 0===r&&(r=!0),void 0===a&&(a=\"\"),a=a||e.slice(1);var n=r?t.GetBrackets(e):null,i=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},a);if(n){var c=new o.default(n,t.stack.env,t.configuration).mml();i=t.create(\"node\",\"msup\",[i,c])}t.Push(t.itemFactory.create(\"fn\",i)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},d.Qqtext=function(t,e,r){var a=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(r||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+a+t.string.slice(t.i)},d.Differential=function(t,e,r){var a=t.GetBrackets(e),n=null!=a?\"^{\"+a+\"}\":\" \",i=\"(\"===t.GetNext(),c=\"{\"===t.GetNext(),l=r+n;if(i||c)if(c){l+=t.GetArgument(e);u=new o.default(l,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new o.default(l,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{l+=t.GetArgument(e,!0)||\"\";var u=new o.default(l,t.stack.env,t.configuration).mml();t.Push(u)}},d.Derivative=function(t,e,r,a){var n=t.GetStar(),i=t.GetBrackets(e),s=1,c=[];for(c.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<r;)c.push(t.GetArgument(e)),s++;var l=!1,u=\" \",d=\" \";r>2&&c.length>2?(u=\"^{\"+(c.length-1)+\"}\",l=!0):null!=i&&(r>2&&c.length>1&&(l=!0),d=u=\"^{\"+i+\"}\");for(var p=n?\"\\\\flatfrac\":\"\\\\frac\",f=c.length>1?c[0]:\"\",m=c.length>1?c[1]:c[0],h=\"\",g=2,v=void 0;v=c[g];g++)h+=a+\" \"+v;var y=p+\"{\"+a+u+f+\"}{\"+a+\" \"+m+d+\" \"+h+\"}\";t.Push(new o.default(y,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:l})))},d.Bra=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=\"\",i=!1,s=!1;if(\"\\\\\"===t.GetNext()){var c=t.i;t.i++;var l=t.GetCS(),u=t.lookup(\"macro\",l);u&&\"ket\"===u.symbol?(i=!0,c=t.i,s=t.GetStar(),\"{\"===t.GetNext()?n=t.GetArgument(l,!0):(t.i=c,s=!1)):t.i=c}var d=\"\";d=i?r||s?\"\\\\langle{\"+a+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":r||s?\"\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\langle{\"+a+\"}\\\\right\\\\vert{\"+n+\"}\",t.Push(new o.default(d,t.stack.env,t.configuration).mml())},d.Ket=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=r?\"\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+a+\"}\\\\right\\\\rangle\";t.Push(new o.default(n,t.stack.env,t.configuration).mml())},d.BraKet=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var i=\"\";i=null==n?r?\"\\\\langle{\"+a+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\":r?\"\\\\langle{\"+a+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},d.KetBra=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var i=\"\";i=null==n?r?\"\\\\vert{\"+a+\"}\\\\rangle\\\\!\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\vert{\"+a+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+a+\"}\\\\right\\\\vert\":r?\"\\\\vert{\"+a+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+a+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},d.Expectation=function(t,e){var r=t.GetStar(),a=r&&t.GetStar(),n=t.GetArgument(e),i=null;\"{\"===t.GetNext()&&(i=t.GetArgument(e,!0));var s=n&&i?M([i,n,i],r,a):r?\"\\\\langle {\"+n+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+n+\"} \\\\right\\\\rangle\";t.Push(new o.default(s,t.stack.env,t.configuration).mml())},d.MatrixElement=function(t,e){var r=t.GetStar(),a=r&&t.GetStar(),n=M([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],r,a);t.Push(new o.default(n,t.stack.env,t.configuration).mml())},d.MatrixQuantity=function(t,e,r){var a=t.GetStar(),n=r?\"smallmatrix\":\"array\",i=\"\",s=\"\",c=\"\";switch(t.GetNext()){case\"{\":i=t.GetArgument(e);break;case\"(\":t.i++,s=a?\"\\\\lgroup\":\"(\",c=a?\"\\\\rgroup\":\")\",i=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",c=\"]\",i=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",c=\"|\",i=t.GetUpTo(e,\"|\");break;default:s=\"(\",c=\")\"}var l=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+n+\"}{} \"+i+\"\\\\end{\"+n+\"}\"+(s?\"\\\\right\":\"\")+c;t.Push(new o.default(l,t.stack.env,t.configuration).mml())},d.IdentityMatrix=function(t,e){var r=t.GetArgument(e),a=parseInt(r,10);if(isNaN(a))throw new i.default(\"InvalidNumber\",\"Invalid number\");if(a<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var n=Array(a).fill(\"0\"),o=[],s=0;s<a;s++){var c=n.slice();c[s]=\"1\",o.push(c.join(\" & \"))}t.string=o.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},d.XMatrix=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=t.GetArgument(e),o=t.GetArgument(e),s=parseInt(n,10),c=parseInt(o,10);if(isNaN(s)||isNaN(c)||c.toString()!==o||s.toString()!==n)throw new i.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,c=c<1?1:c,!r){var l=Array(c).fill(a).join(\" & \"),u=Array(s).fill(l).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var d=\"\";if(1===s&&1===c)d=a;else if(1===s){l=[];for(var p=1;p<=c;p++)l.push(a+\"_{\"+p+\"}\");d=l.join(\" & \")}else if(1===c){for(l=[],p=1;p<=s;p++)l.push(a+\"_{\"+p+\"}\");d=l.join(\"\\\\\\\\ \")}else{var f=[];for(p=1;p<=s;p++){l=[];for(var m=1;m<=c;m++)l.push(a+\"_{{\"+p+\"}{\"+m+\"}}\");f.push(l.join(\" & \"))}d=f.join(\"\\\\\\\\ \")}t.string=d+t.string.slice(t.i),t.i=0},d.PauliMatrix=function(t,e){var r=t.GetArgument(e),a=r.slice(1);switch(r[0]){case\"0\":a+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":a+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":a+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":a+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=a+t.string.slice(t.i),t.i=0},d.DiagonalMatrix=function(t,e,r){if(\"{\"===t.GetNext()){var a=t.i;t.GetArgument(e);var n=t.i;t.i=a+1;for(var o=[],i=\"\",s=t.i;s<n;){try{i=t.GetUpTo(e,\",\")}catch(e){t.i=n,o.push(t.string.slice(s,n-1));break}if(t.i>=n){o.push(t.string.slice(s,n));break}s=t.i,o.push(i)}t.string=function(t,e){for(var r=t.length,a=[],n=0;n<r;n++)a.push(Array(e?r-n:n+1).join(\"&\")+\"\\\\mqty{\"+t[n]+\"}\");return a.join(\"\\\\\\\\ \")}(o,r)+t.string.slice(n),t.i=0}},d.AutoClose=function(t,e,r){var a=t.create(\"token\",\"mo\",{stretchy:!1},e),n=t.itemFactory.create(\"mml\",a).setProperties({autoclose:e});t.Push(n)},d.Macro=n.default.Macro,d.NamedFn=n.default.NamedFn,d.Array=n.default.Array,e.default=d},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var o=r(0),i=r(17),s=0;function c(t,e){var r=e.parseOptions.options.tags;\"base\"!==r&&t.tags.hasOwnProperty(r)&&i.TagsFactory.add(r,t.tags[r]);var a=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return n(r,t),r.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},r.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},r.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},r.prototype.formatUrl=function(t,r){return e.parseOptions.options.tagformat.url(t,r)},r}(i.TagsFactory.create(e.parseOptions.options.tags).constructor),o=\"configTags-\"+ ++s;i.TagsFactory.add(o,a),e.parseOptions.options.tags=o}e.tagformatConfig=c,e.TagFormatConfiguration=o.Configuration.create(\"tagformat\",{config:[c,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var n=r(0),o=r(69),i=r(17),s=r(16),c=r(70),l=r(27);function u(t,e,r,a){var n=t.configuration.packageData.get(\"textmacros\");return t instanceof c.TextParser||(n.texParser=t),[new c.TextParser(e,a?{mathvariant:a}:{},n.parseOptions,r).mml()]}r(72),e.textBase=n.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var r=t.texParser,a=r.lookup(\"macro\",e);a&&a._func!==l.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),r.parse(\"macro\",[a?t:r,e])}},items:(a={},a[s.StartItem.prototype.kind]=s.StartItem,a[s.StopItem.prototype.kind]=s.StopItem,a[s.MmlItem.prototype.kind]=s.MmlItem,a[s.StyleItem.prototype.kind]=s.StyleItem,a)}),n.Configuration.create(\"textmacros\",{config:function(t,r){var a=new n.ParserConfiguration([]);a.append(e.textBase),a.init();var s=new o.default(a,[]);s.options=r.parseOptions.options,a.config(r),i.TagsFactory.addTags(a.tags),s.tags=i.TagsFactory.getDefault(),s.tags.configuration=s,s.packageData=r.parseOptions.packageData,s.packageData.set(\"textmacros\",{parseOptions:s,jax:r,texParser:null}),s.options.internalMath=u},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseOptions.default},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var c=r(5),l=r(2),u=r(3),d=r(7),p=r(4),f=r(16),m=function(t){function e(e,r,a,n){var o=t.call(this,e,r,a)||this;return o.level=n,o}return n(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=u.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof f.StopItem)return t.prototype.Push.call(this,e);e instanceof f.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof d.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,r,a=this.stack.env;try{for(var n=o([\"mathsize\",\"mathcolor\"]),i=n.next();!i.done;i=n.next()){var s=i.value;a[s]&&!t.attributes.getExplicit(s)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),p.default.setAttribute(t,s,a[s]))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,r,a=this.stack.env;if(t.isToken)try{for(var n=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),i=n.next();!i.done;i=n.next()){var s=i.value;a[s]&&!t.attributes.getExplicit(s)&&p.default.setAttribute(t,s,a[s])}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,r){return new e(this.GetArgument(t),r=Object.assign(Object.assign({},this.stack.env),r),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];throw new(l.default.bind.apply(l.default,s([void 0,t,e],r)))},e}(c.default);e.TextParser=m},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(6),o=r(27);new a.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new a.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",n.TexConstant.Variant.NORMAL],mit:[\"SetFont\",n.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",n.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",n.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",n.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",n.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",n.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",n.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",n.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",n.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",n.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",n.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",n.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",n.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",n.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",n.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",n.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var a=r(0),n=r(2),o=r(1),i=r(3),s=r(4),c=r(74);e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(t,e){var r=t.GetBrackets(e),a=null,o=null;r&&(r.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(a=r.replace(/ /g,\"\").split(/,/),o=t.GetBrackets(e)):o=r);var u=i.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!u.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new n.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var d=parseInt(u.match(/^x/)?\"0\"+u:u);l[d]?o||(o=l[d][2]):l[d]=[800,200,o,d],a&&(l[d][0]=Math.floor(1e3*parseFloat(a[0])),l[d][1]=Math.floor(1e3*parseFloat(a[1])));var p=t.stack.env.font,f={};o?(l[d][2]=f.fontfamily=o.replace(/'/g,\"'\"),p&&(p.match(/bold/)&&(f.fontweight=\"bold\"),p.match(/italic|-mathit/)&&(f.fontstyle=\"italic\"))):p&&(f.mathvariant=p);var m=t.create(\"token\",\"mtext\",f,c.numeric(u));s.default.setProperty(m,\"unicode\",!0),t.Push(m)},new o.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=a.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var a=r(0),n=r(6),o=r(1),i=r(2);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var r=t.GetNext(),a=++t.i;if(\"\"===r)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==r;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(a,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:n.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=a.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";r.r(e);var a=r(20),n=r(15),o=r(21),i=r(14);Object(a.combineWithMathJax)({_:{input:{tex:{AllPackages:n,autoload:{AutoloadConfiguration:o},require:{RequireConfiguration:i}}}}});var s,c=r(10);function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,a=new Array(e);r<e;r++)a[r]=t[r];return a}if(MathJax.loader&&MathJax.loader.preLoad(\"[tex]/autoload\",\"[tex]/require\"),MathJax.startup){MathJax.config.tex||(MathJax.config.tex={});var u=MathJax.config.tex.packages;MathJax.config.tex.packages=[\"autoload\",\"require\"].concat(function(t){if(Array.isArray(t))return l(t)}(s=n.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(s)||function(t,e){if(t){if(\"string\"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}(s)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),u&&Object(c.insert)(MathJax.config.tex,{packages:u})}}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/ams.js",
    "content": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=18)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var r=a(1),n=a(4),i=a(2),o=a(13),l=a(5),s=a(14),m=a(15),u=a(6);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,a,n,i,o,l){var s=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=m.default.EqnArray(t,e,a,n,i,o,l);return r.default.setArrayAlign(u,s)},e.AmsMethods.AlignAt=function(t,a,n,i){var o,s,m=a.getName(),u=\"\",c=[];if(i||(s=t.GetBrackets(\"\\\\begin{\"+m+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+m+\"}\")).match(/[^0-9]/))throw new l.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+m+\"}\");for(var d=parseInt(o,10);d>0;)u+=\"rl\",c.push(\"0em 0em\"),d--;var h=c.join(\" \");if(i)return e.AmsMethods.EqnArray(t,a,n,i,u,h);var p=e.AmsMethods.EqnArray(t,a,n,i,u,h);return r.default.setArrayAlign(p,s)},e.AmsMethods.Multline=function(t,e,a){t.Push(e),r.default.checkEqnEnv(t);var n=t.itemFactory.create(\"multline\",a,t.stack);return n.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},n},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,a){var n=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",i=r.default.trimSpaces(t.GetArgument(a));\"\\\\\"===i.charAt(0)&&(i=i.substr(1));var o=t.GetArgument(a);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(i,new s.Macro(i,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+n]))},e.AmsMethods.HandleOperatorName=function(t,e){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=r.default.trimSpaces(t.GetArgument(e));n.match(/\\\\text/)||(n=n.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+n+\"}\"+a+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var a=t.GetNext(),r=t.i;\"\\\\\"===a&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=r)},e.AmsMethods.MultiIntegral=function(t,e,a){var r=t.GetNext();if(\"\\\\\"===r){var n=t.i;r=t.GetArgument(e),t.i=n,\"\\\\limits\"===r&&(a=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+a+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+a+\"}\")}t.string=a+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,a,i,l){var s={width:\"+\"+r.default.Em((i+l)/18),lspace:r.default.Em(i/18)},m=t.GetBrackets(e),c=t.ParseArg(e),d=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(a)),h=t.create(\"node\",\"munderover\",[d]),p=t.create(\"node\",\"mpadded\",[c],s);if(n.default.setAttribute(p,\"voffset\",\".15em\"),n.default.setChild(h,h.over,p),m){var f=new o.default(m,t.stack.env,t.configuration).mml();p=t.create(\"node\",\"mpadded\",[f],s),n.default.setAttribute(p,\"voffset\",\"-.24em\"),n.default.setChild(h,h.under,p)}n.default.setProperty(h,\"subsupOK\",!0),t.Push(h)},e.AmsMethods.HandleShove=function(t,e,a){var r=t.stack.Top();if(\"multline\"!==r.kind)throw new l.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(r.Size())throw new l.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);r.setProperty(\"shove\",a)},e.AmsMethods.CFrac=function(t,e){var a=r.default.trimSpaces(t.GetBrackets(e,\"\")),s=t.GetArgument(e),m=t.GetArgument(e),u={l:i.TexConstant.Align.LEFT,r:i.TexConstant.Align.RIGHT,\"\":\"\"},c=new o.default(\"\\\\strut\\\\textstyle{\"+s+\"}\",t.stack.env,t.configuration).mml(),d=new o.default(\"\\\\strut\\\\textstyle{\"+m+\"}\",t.stack.env,t.configuration).mml(),h=t.create(\"node\",\"mfrac\",[c,d]);if(null==(a=u[a]))throw new l.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);a&&n.default.setProperties(h,{numalign:a,denomalign:a}),t.Push(h)},e.AmsMethods.Genfrac=function(t,e,a,i,o,s){null==a&&(a=t.GetDelimiterArg(e)),null==i&&(i=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==s&&(s=r.default.trimSpaces(t.GetArgument(e)));var m=t.ParseArg(e),u=t.ParseArg(e),c=t.create(\"node\",\"mfrac\",[m,u]);if(\"\"!==o&&n.default.setAttribute(c,\"linethickness\",o),(a||i)&&(n.default.setProperty(c,\"withDelims\",!0),c=r.default.fixedFence(t.configuration,a,c,i)),\"\"!==s){var d=parseInt(s,10),h=[\"D\",\"T\",\"S\",\"SS\"][d];if(null==h)throw new l.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);c=t.create(\"node\",\"mstyle\",[c]),\"D\"===h?n.default.setProperties(c,{displaystyle:!0,scriptlevel:0}):n.default.setProperties(c,{displaystyle:!1,scriptlevel:d-1})}t.Push(c)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new l.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new l.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var a=t.GetStar(),n=r.default.trimSpaces(t.GetArgument(e));t.tags.tag(n,a)},e.AmsMethods.HandleNoTag=m.default.HandleNoTag,e.AmsMethods.HandleRef=m.default.HandleRef,e.AmsMethods.Macro=m.default.Macro,e.AmsMethods.Accent=m.default.Accent,e.AmsMethods.Tilde=m.default.Tilde,e.AmsMethods.Array=m.default.Array,e.AmsMethods.Spacer=m.default.Spacer,e.AmsMethods.NamedOp=m.default.NamedOp,e.AmsMethods.EqnArray=m.default.EqnArray},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var i=a(11),o=a(1),l=a(4),s=a(5),m=a(2),u=function(t){function e(e){for(var a=[],r=1;r<arguments.length;r++)a[r-1]=arguments[r];var n=t.call(this,e)||this;return n.factory.configuration.tags.start(\"multline\",!0,a[0]),n}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new s.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,a=-1;l.default.getAttribute(l.default.getChildren(this.table[0])[0],\"columnalign\")||l.default.setAttribute(l.default.getChildren(this.table[0])[0],\"columnalign\",m.TexConstant.Align.LEFT),l.default.getAttribute(l.default.getChildren(this.table[e])[0],\"columnalign\")||l.default.setAttribute(l.default.getChildren(this.table[e])[0],\"columnalign\",m.TexConstant.Align.RIGHT);var r=this.factory.configuration.tags.getTag();if(r){a=this.arraydef.side===m.TexConstant.Align.LEFT?0:this.table.length-1;var n=this.table[a],i=this.create(\"node\",\"mlabeledtr\",[r].concat(l.default.getChildren(n)));l.default.copyAttributes(n,i),this.table[a]=i}}this.factory.configuration.tags.end()},e}(i.ArrayItem);e.MultlineItem=u},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var r,n,i=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=a(10),l=a(3),s=a(12),m=a(0);a(16);var u=a(7),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(s.AbstractTags);e.AmsTags=c;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(n={},n[l.MultlineItem.prototype.kind]=l.MultlineItem,n),tags:{ams:c},init:function(t){new u.CommandMap(m.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[m.NEW_OPS]},priority:-1}))}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=a(0),n=a(7),i=a(2),o=a(17),l=a(1),s=a(6),m=function(t){for(var e=[],a=0,r=t.length;a<r;a++)e[a]=l.default.Em(t[a]);return e.join(\" \")};new n.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:s.TEXCLASS.OP}]}),new n.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",i.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",i.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",i.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},r.AmsMethods),new n.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",m([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,m([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",m([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},r.AmsMethods),new n.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:s.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:s.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:s.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:s.TEXCLASS.CLOSE}]}),new n.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:i.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:i.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:i.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:i.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:i.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:i.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:i.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:i.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:i.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:i.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:i.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new n.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new n.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new n.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},r.AmsMethods)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,a){\"use strict\";a.r(e);var r=a(8),n=a(9),i=a(3),o=a(0);Object(r.combineWithMathJax)({_:{input:{tex:{ams:{AmsConfiguration:n,AmsItems:i,AmsMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/amscd.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=11)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(7),r=a(8),o=a(9),i=a(10),c={CD:function(e,t){e.Push(t);var a=e.itemFactory.create(\"array\"),n=e.configuration.options.amscd;return a.setProperties({minw:e.stack.env.CD_minw||n.harrowsize,minh:e.stack.env.CD_minh||n.varrowsize}),a.arraydef={columnalign:\"center\",columnspacing:n.colspace,rowspacing:n.rowspace,displaystyle:!0},a},arrow:function(e,t){var a=e.string.charAt(e.i);if(!a.match(/[><VA.|=]/))return r.Other(e,t);e.i++;var l=e.stack.Top();l.isKind(\"array\")&&!l.Size()||(c.cell(e,t),l=e.stack.Top());for(var s,u=l,d=u.table.length%2==1,m=(u.row.length+(d?0:1))%2;m;)c.cell(e,t),m--;var p={minsize:u.getProperty(\"minw\"),stretchy:!0},f={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===a);else if(\"|\"===a)s=e.create(\"token\",\"mo\",f,\"\\u2225\");else if(\"=\"===a)s=e.create(\"token\",\"mo\",p,\"=\");else{var M={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[a],h=e.GetUpTo(t+a,a),b=e.GetUpTo(t+a,a);if(\">\"===a||\"<\"===a){if(s=e.create(\"token\",\"mo\",p,M),h||(h=\"\\\\kern \"+u.getProperty(\"minw\")),h||b){var _={width:\".67em\",lspace:\".33em\"};if(s=e.create(\"node\",\"munderover\",[s]),h){var x=new n.default(h,e.stack.env,e.configuration).mml(),g=e.create(\"node\",\"mpadded\",[x],_);i.default.setAttribute(g,\"voffset\",\".1em\"),i.default.setChild(s,s.over,g)}if(b){var v=new n.default(b,e.stack.env,e.configuration).mml();i.default.setChild(s,s.under,e.create(\"node\",\"mpadded\",[v],_))}e.configuration.options.amscd.hideHorizontalLabels&&(s=e.create(\"node\",\"mpadded\",s,{depth:0,height:\".67em\"}))}}else{var C=e.create(\"token\",\"mo\",f,M);s=C,(h||b)&&(s=e.create(\"node\",\"mrow\"),h&&i.default.appendChildren(s,[new n.default(\"\\\\scriptstyle\\\\llap{\"+h+\"}\",e.stack.env,e.configuration).mml()]),C.texClass=o.TEXCLASS.ORD,i.default.appendChildren(s,[C]),b&&i.default.appendChildren(s,[new n.default(\"\\\\scriptstyle\\\\rlap{\"+b+\"}\",e.stack.env,e.configuration).mml()]))}}s&&e.Push(s),c.cell(e,t)},cell:function(e,t){var a=e.stack.Top();(a.table||[]).length%2==0&&0===(a.row||[]).length&&e.Push(e.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),e.Push(e.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:t}))},minCDarrowwidth:function(e,t){e.stack.env.CD_minw=e.GetDimen(t)},minCDarrowheight:function(e,t){e.stack.env.CD_minh=e.GetDimen(t)}};t.default=c},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AmsCdConfiguration=void 0;var n=a(3);a(4),t.AmsCdConfiguration=n.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(5),r=a(6),o=a(1);new n.EnvironmentMap(\"amscd_environment\",r.default.environment,{CD:\"CD\"},o.default),new n.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new n.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Other=MathJax._.input.tex.base.BaseConfiguration.Other,t.BaseTags=MathJax._.input.tex.base.BaseConfiguration.BaseTags,t.BaseConfiguration=MathJax._.input.tex.base.BaseConfiguration.BaseConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},function(e,t,a){\"use strict\";a.r(t);var n=a(0),r=a(2),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{amscd:{AmsCdConfiguration:r,AmsCdMethods:o}}}}}),function(e,t,a){var r,o,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,s=l.indexOf(e);s>=0&&(l[s]=t),a&&c[e]&&(Object(n.combineConfig)(c,(r={},o=t,i=c[e],o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i,r)),delete c[e])}}(\"amsCd\",\"amscd\",!0)}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/autoload.js",
    "content": "!function(e){var t={};function o(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)o.d(a,r,function(t){return e[t]}.bind(null,r));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p=\"\",o(o.s=8)}([function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,o){\"use strict\";var a=this&&this.__read||function(e,t){var o=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var a,r,n=o.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(a=n.next()).done;)i.push(a.value)}catch(e){r={error:e}}finally{try{a&&!a.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}return i},r=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,o=t&&e[t],a=0;if(o)return o.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&a>=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(t,\"__esModule\",{value:!0}),t.AutoloadConfiguration=void 0;var n=o(2),i=o(3),l=o(4),u=o(5),c=o(6),s=o(7);function p(e,t,o,n){var i,l,s,p;if(c.Package.packages.has(e.options.require.prefix+o)){var x=e.options.autoload[o],M=a(2===x.length&&Array.isArray(x[0])?x:[x,[]],2),b=M[0],h=M[1];try{for(var y=r(b),m=y.next();!m.done;m=y.next()){var _=m.value;f.remove(_)}}catch(e){i={error:e}}finally{try{m&&!m.done&&(l=y.return)&&l.call(y)}finally{if(i)throw i.error}}try{for(var g=r(h),v=g.next();!v.done;v=g.next()){var O=v.value;d.remove(O)}}catch(e){s={error:e}}finally{try{v&&!v.done&&(p=g.return)&&p.call(g)}finally{if(s)throw s.error}}e.string=(n?t:\"\\\\begin{\"+t.slice(1)+\"}\")+e.string.slice(e.i),e.i=0}u.RequireLoad(e,o)}var f=new i.CommandMap(\"autoload-macros\",{},{}),d=new i.CommandMap(\"autoload-environments\",{},{});t.AutoloadConfiguration=n.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:s.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(e,t){var o,n,i,c,s,x,M=t.parseOptions,b=M.handlers.get(\"macro\"),h=M.handlers.get(\"environment\"),y=M.options.autoload;M.packageData.set(\"autoload\",{Autoload:p});try{for(var m=r(Object.keys(y)),_=m.next();!_.done;_=m.next()){var g=_.value,v=y[g],O=a(2===v.length&&Array.isArray(v[0])?v:[v,[]],2),J=O[0],C=O[1];try{for(var P=(i=void 0,r(J)),S=P.next();!S.done;S=P.next()){var w=S.value;b.lookup(w)&&\"color\"!==w||f.add(w,new l.Macro(w,p,[g,!0]))}}catch(e){i={error:e}}finally{try{S&&!S.done&&(c=P.return)&&c.call(P)}finally{if(i)throw i.error}}try{for(var k=(s=void 0,r(C)),q=k.next();!q.done;q=k.next()){var j=q.value;h.lookup(j)||d.add(j,new l.Macro(j,p,[g,!1]))}}catch(e){s={error:e}}finally{try{q&&!q.done&&(x=k.return)&&x.call(k)}finally{if(s)throw s.error}}}}catch(e){o={error:e}}finally{try{_&&!_.done&&(n=m.return)&&n.call(m)}finally{if(o)throw o.error}}M.packageData.get(\"require\")||u.RequireConfiguration.config(e,t)},init:function(e){e.options.require||s.defaultOptions(e.options,u.RequireConfiguration.options)},priority:10})},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Symbol=MathJax._.input.tex.Symbol.Symbol,t.Macro=MathJax._.input.tex.Symbol.Macro},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.RequireLoad=MathJax._.input.tex.require.RequireConfiguration.RequireLoad,t.RequireMethods=MathJax._.input.tex.require.RequireConfiguration.RequireMethods,t.options=MathJax._.input.tex.require.RequireConfiguration.options,t.RequireConfiguration=MathJax._.input.tex.require.RequireConfiguration.RequireConfiguration},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.PackageError=MathJax._.components.package.PackageError,t.Package=MathJax._.components.package.Package},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.APPEND=MathJax._.util.Options.APPEND,t.REMOVE=MathJax._.util.Options.REMOVE,t.Expandable=MathJax._.util.Options.Expandable,t.expandable=MathJax._.util.Options.expandable,t.makeArray=MathJax._.util.Options.makeArray,t.keys=MathJax._.util.Options.keys,t.copy=MathJax._.util.Options.copy,t.insert=MathJax._.util.Options.insert,t.defaultOptions=MathJax._.util.Options.defaultOptions,t.userOptions=MathJax._.util.Options.userOptions,t.selectOptions=MathJax._.util.Options.selectOptions,t.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,t.separateOptions=MathJax._.util.Options.separateOptions},function(e,t,o){\"use strict\";o.r(t);var a=o(0),r=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{autoload:{AutoloadConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/bbox.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=5)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var o=a(2),n=a(3),i=a(4);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var a,o,n,l=t.GetBrackets(e,\"\"),c=t.ParseArg(e),p=l.split(/,/),f=0,s=p.length;f<s;f++){var b=p[f].trim(),d=b.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(d){if(a)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var M=u(d[1]+d[3]);M&&(a={height:\"+\"+M,depth:\"+\"+M,lspace:M,width:\"+\"+2*parseInt(d[1],10)+d[3]})}else if(b.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(o)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);o=b}else if(b.match(/^[-a-z]+:/i)){if(n)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);n=r(b)}else if(\"\"!==b)throw new i.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',b)}a&&(c=t.create(\"node\",\"mpadded\",[c],a)),(o||n)&&(a={},o&&Object.assign(a,{mathbackground:o}),n&&Object.assign(a,{style:n}),c=t.create(\"node\",\"mstyle\",[c],a)),t.Push(c)};var r=function(t){return t},u=function(t){return t};new n.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=o.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{bbox:{BboxConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/boldsymbol.js",
    "content": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,a){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(a,n,function(e){return t[e]}.bind(null,n));return a},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=7)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],a=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var n=o(2),r=o(3),i=o(4),l=o(5),u=o(6),s={};function c(t,e,o,a){var n=u.NodeFactory.createToken(t,e,o,a);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(r.default.setProperty(n,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",n)),n}function d(t){var e,o;try{for(var n=a(t.data.getList(\"fixBold\")),l=n.next();!l.done;l=n.next()){var u=l.value;if(r.default.getProperty(u,\"fixBold\")){var c=r.default.getAttribute(u,\"mathvariant\");null==c?r.default.setAttribute(u,\"mathvariant\",i.TexConstant.Variant.BOLD):r.default.setAttribute(u,\"mathvariant\",s[c]||c),r.default.removeProperties(u,\"fixBold\")}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(o=n.return)&&o.call(n)}finally{if(e)throw e.error}}}s[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,s[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,s[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,s[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,s[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,s[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",s[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var o=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var a=t.ParseArg(e);t.stack.env.boldsymbol=o,t.Push(a)},new l.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=c,e.rewriteBoldTokens=d,e.BoldsymbolConfiguration=n.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:c},postprocessors:[d]})},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,o){\"use strict\";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{boldsymbol:{BoldsymbolConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/braket.js",
    "content": "!function(e){var t={};function r(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(a,o,function(t){return e[t]}.bind(null,o));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=12)}([function(e,t,r){\"use strict\";var a,o=this&&this.__extends||(a=function(e,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.BraketItem=void 0;var n=r(6),i=r(2),c=r(7),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:t.isKind(\"mml\")?(this.Push(t.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:n.BaseItem.fail):e.prototype.checkItem.call(this,t)},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),r=this.getProperty(\"open\"),a=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return c.default.fenced(this.factory.configuration,r,t,a);var o={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},n=this.create(\"token\",\"mo\",o,r);o.texClass=i.TEXCLASS.CLOSE;var u=this.create(\"token\",\"mo\",o,a);return this.create(\"node\",\"mrow\",[n,t,u],{open:r,close:a,texClass:i.TEXCLASS.INNER})},t}(n.BaseItem);t.BraketItem=u},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(10),o=r(2),n=r(11),i={};i.Macro=a.default.Macro,i.Braket=function(e,t,r,a,o,i){var c=e.GetNext();if(\"\"===c)throw new n.default(\"MissingArgFor\",\"Missing argument for %1\",e.currentCS);var u=!0;\"{\"===c&&(e.i++,u=!1),e.Push(e.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:a,stretchy:o,single:u}))},i.Bar=function(e,t){var r=\"|\"===t?\"|\":\"\\u2225\",a=e.stack.Top();if(\"braket\"!==a.kind||a.getProperty(\"barcount\")>=a.getProperty(\"barmax\")){var n=e.create(\"token\",\"mo\",{texClass:o.TEXCLASS.ORD,stretchy:!1},r);e.Push(n)}else{if(\"|\"===r&&\"|\"===e.GetNext()&&(e.i++,r=\"\\u2225\"),a.getProperty(\"stretchy\")){var i=e.create(\"node\",\"TeXAtom\",[],{texClass:o.TEXCLASS.CLOSE});e.Push(i),a.setProperty(\"barcount\",a.getProperty(\"barcount\")+1),i=e.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),e.Push(i),i=e.create(\"node\",\"TeXAtom\",[],{texClass:o.TEXCLASS.OPEN}),e.Push(i)}else{var c=e.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);e.Push(c)}}},t.default=i},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,r){\"use strict\";var a;Object.defineProperty(t,\"__esModule\",{value:!0}),t.BraketConfiguration=void 0;var o=r(5),n=r(0);r(8),t.BraketConfiguration=o.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(a={},a[n.BraketItem.prototype.kind]=n.BraketItem,a)})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(9),o=r(1);new a.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},o.default),new a.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},o.default)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,r){\"use strict\";r.r(t);var a=r(3),o=r(4),n=r(0),i=r(1);Object(a.combineWithMathJax)({_:{input:{tex:{braket:{BraketConfiguration:o,BraketItems:n,BraketMethods:i}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/bussproofs.js",
    "content": "!function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=15)}([function(e,t,r){\"use strict\";var o,n=this&&this.__read||function(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},a=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(t,\"__esModule\",{value:!0}),t.clearDocument=t.saveDocument=t.makeBsprAttributes=t.removeProperty=t.getProperty=t.setProperty=t.balanceRules=void 0;var i=r(10),l=r(4),u=null,f=null,s=function(e){return f.root=e,u.outputJax.getBBox(f,u).w},c=function(e){for(var t=0;e&&!i.default.isType(e,\"mtable\");){if(i.default.isType(e,\"text\"))return null;i.default.isType(e,\"mrow\")?(e=e.childNodes[0],t=0):(e=e.parent.childNodes[t],t++)}return e},d=function(e,t){return e.childNodes[\"up\"===t?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},p=function(e,t){return e.childNodes[t].childNodes[0].childNodes[0]},m=function(e){return p(e,0)},h=function(e){return p(e,e.childNodes.length-1)},y=function(e,t){return e.childNodes[\"up\"===t?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(e){for(;e&&!i.default.isType(e,\"mtd\");)e=e.parent;return e},P=function(e){return e.parent.childNodes[e.parent.childNodes.indexOf(e)+1]},g=function(e){for(;e&&null==t.getProperty(e,\"inference\");)e=e.parent;return e},b=function(e,t,r){void 0===r&&(r=!1);var o=0;if(e===t)return o;if(e!==t.parent){var n=e.childNodes,a=r?n.length-1:0;i.default.isType(n[a],\"mspace\")&&(o+=s(n[a])),e=t.parent}if(e===t)return o;var l=e.childNodes,u=r?l.length-1:0;return l[u]!==t&&(o+=s(l[u])),o},x=function(e,r){void 0===r&&(r=!1);var o=c(e),n=y(o,t.getProperty(o,\"inferenceRule\"));return b(e,o,r)+(s(o)-s(n))/2},M=function(e,r,o,n){if(void 0===n&&(n=!1),t.getProperty(r,\"inferenceRule\")||t.getProperty(r,\"labelledRule\")){var a=e.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(a,r),a.setChildren([r]),_(r,a),r=a}var u=n?r.childNodes.length-1:0,f=r.childNodes[u];i.default.isType(f,\"mspace\")?i.default.setAttribute(f,\"width\",l.default.Em(l.default.dimen2em(i.default.getAttribute(f,\"width\"))+o)):(f=e.nodeFactory.create(\"node\",\"mspace\",[],{width:l.default.Em(o)}),n?r.appendChild(f):(f.parent=r,r.childNodes.unshift(f)))},_=function(e,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(o){var n=t.getProperty(e,o);null!=n&&(t.setProperty(r,o,n),t.removeProperty(e,o))}))},w=function(e,r,o,n,a){var i=e.nodeFactory.create(\"node\",\"mspace\",[],{width:l.default.Em(a)});if(\"left\"===n){var u=r.childNodes[o].childNodes[0];i.parent=u,u.childNodes.unshift(i)}else r.childNodes[o].appendChild(i);t.setProperty(r.parent,\"sequentAdjust_\"+n,a)},T=function(e,r){for(var o=r.pop();r.length;){var a=r.pop(),i=n(C(o,a),2),l=i[0],u=i[1];t.getProperty(o.parent,\"axiom\")&&(w(e,l<0?o:a,0,\"left\",Math.abs(l)),w(e,u<0?o:a,2,\"right\",Math.abs(u))),o=a}},C=function(e,t){var r=s(e.childNodes[2]),o=s(t.childNodes[2]);return[s(e.childNodes[0])-s(t.childNodes[0]),r-o]};t.balanceRules=function(e){var r,o;f=new e.document.options.MathItem(\"\",null,e.math.display);var n=e.data;!function(e){var r=e.nodeLists.sequent;if(r)for(var o=r.length-1,n=void 0;n=r[o];o--)if(t.getProperty(n,\"sequentProcessed\"))t.removeProperty(n,\"sequentProcessed\");else{var a=[],i=g(n);if(1===t.getProperty(i,\"inference\")){for(a.push(n);1===t.getProperty(i,\"inference\");){i=c(i);var l=m(d(i,t.getProperty(i,\"inferenceRule\"))),u=t.getProperty(l,\"inferenceRule\")?y(l,t.getProperty(l,\"inferenceRule\")):l;t.getProperty(u,\"sequent\")&&(n=u.childNodes[0],a.push(n),t.setProperty(n,\"sequentProcessed\",!0)),i=l}T(e,a)}}}(n);var i=n.nodeLists.inference||[];try{for(var l=a(i),u=l.next();!u.done;u=l.next()){var s=u.value,p=t.getProperty(s,\"proof\"),_=c(s),w=d(_,t.getProperty(_,\"inferenceRule\")),C=m(w);if(t.getProperty(C,\"inference\")){var I=x(C);if(I){M(n,C,-I);var S=b(s,_,!1);M(n,s,I-S)}}var N=h(w);if(null!=t.getProperty(N,\"inference\")){var A=x(N,!0);M(n,N,-A,!0);var j=b(s,_,!0),L=t.getProperty(s,\"maxAdjust\");null!=L&&(A=Math.max(A,L));var k=void 0;if(!p&&(k=v(s))){var O=P(k);if(O){var J=n.nodeFactory.create(\"node\",\"mspace\",[],{width:A-j+\"em\"});O.appendChild(J),s.removeProperty(\"maxAdjust\")}else{var B=g(k);B&&(A=t.getProperty(B,\"maxAdjust\")?Math.max(t.getProperty(B,\"maxAdjust\"),A):A,t.setProperty(B,\"maxAdjust\",A))}}else M(n,t.getProperty(s,\"proof\")?s:s.parent,A-j,!0)}}}catch(e){r={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}};var I=((o={}).bspr_maxAdjust=!0,o);t.setProperty=function(e,t,r){i.default.setProperty(e,\"bspr_\"+t,r)},t.getProperty=function(e,t){return i.default.getProperty(e,\"bspr_\"+t)},t.removeProperty=function(e,t){e.removeProperty(\"bspr_\"+t)},t.makeBsprAttributes=function(e){e.data.root.walkTree((function(e,t){var r=[];e.getPropertyNames().forEach((function(t){!I[t]&&t.match(RegExp(\"^bspr_\"))&&r.push(t+\":\"+e.getProperty(t))})),r.length&&i.default.setAttribute(e,\"semantics\",r.join(\";\"))}))},t.saveDocument=function(e){if(!(\"getBBox\"in(u=e.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},t.clearDocument=function(e){u=null}},function(e,t,r){\"use strict\";var o,n=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.ProofTreeItem=void 0;var a=r(3),i=r(8),l=r(9),u=r(0),f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.leftLabel=null,t.rigthLabel=null,t.innerStack=new l.default(t.factory,{},!0),t}return n(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){if(e.isKind(\"end\")&&\"prooftree\"===e.getName()){var t=this.toMml();return u.setProperty(t,\"proof\",!0),[[this.factory.create(\"mml\",t),e],!0]}if(e.isKind(\"stop\"))throw new a.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(e),i.BaseItem.fail},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return t;this.innerStack.Push(this.factory.create(\"stop\"));var o=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[o,t],{})},t}(i.BaseItem);t.ProofTreeItem=f},function(e,t,r){\"use strict\";var o=this&&this.__read||function(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},n=this&&this.__spread||function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e};Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(3),i=r(12),l=r(4),u=r(0),f={Prooftree:function(e,t){return e.Push(t),e.itemFactory.create(\"proofTree\").setProperties({name:t.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(e,t){var r=e.stack.Top();if(\"proofTree\"!==r.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var o=s(e,e.GetArgument(t));u.setProperty(o,\"axiom\",!0),r.Push(o)}},s=function(e,t){var r=l.default.internalMath(e,l.default.trimSpaces(t),0);if(!r[0].childNodes[0].childNodes.length)return e.create(\"node\",\"mrow\",[]);var o=e.create(\"node\",\"mspace\",[],{width:\".5ex\"}),a=e.create(\"node\",\"mspace\",[],{width:\".5ex\"});return e.create(\"node\",\"mrow\",n([o],r,[a]))};function c(e,t,r,o,n,a,i){var l,f,s,c,d=e.create(\"node\",\"mtr\",[e.create(\"node\",\"mtd\",[t],{})],{}),p=e.create(\"node\",\"mtr\",[e.create(\"node\",\"mtd\",r,{})],{}),m=e.create(\"node\",\"mtable\",i?[p,d]:[d,p],{align:\"top 2\",rowlines:a,framespacing:\"0 0\"});if(u.setProperty(m,\"inferenceRule\",i?\"up\":\"down\"),o&&(l=e.create(\"node\",\"mpadded\",[o],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),u.setProperty(l,\"prooflabel\",\"left\")),n&&(f=e.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),u.setProperty(f,\"prooflabel\",\"right\")),o&&n)s=[l,m,f],c=\"both\";else if(o)s=[l,m],c=\"left\";else{if(!n)return m;s=[m,f],c=\"right\"}return m=e.create(\"node\",\"mrow\",s),u.setProperty(m,\"labelledRule\",c),m}function d(e,t){if(\"$\"!==e.GetNext())throw new a.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",t);e.i++;var r=e.GetUpTo(t,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new a.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",t);var n=o(r.split(\"\\\\fCenter\"),2),l=n[0],f=n[1],s=new i.default(l,e.stack.env,e.configuration).mml(),c=new i.default(f,e.stack.env,e.configuration).mml(),d=new i.default(\"\\\\fCenter\",e.stack.env,e.configuration).mml(),p=e.create(\"node\",\"mtd\",[s],{}),m=e.create(\"node\",\"mtd\",[d],{}),h=e.create(\"node\",\"mtd\",[c],{}),y=e.create(\"node\",\"mtr\",[p,m,h],{}),v=e.create(\"node\",\"mtable\",[y],{columnspacing:\".5ex\",columnalign:\"center 2\"});return u.setProperty(v,\"sequent\",!0),e.configuration.addNode(\"sequent\",y),v}f.Inference=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(o.Size()<r)throw new a.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=o.getProperty(\"rootAtTop\"),i=1!==r||o.Peek()[0].childNodes.length?r:0,l=[];do{l.length&&l.unshift(e.create(\"node\",\"mtd\",[],{})),l.unshift(e.create(\"node\",\"mtd\",[o.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var f=e.create(\"node\",\"mtr\",l,{}),d=e.create(\"node\",\"mtable\",[f],{framespacing:\"0 0\"}),p=s(e,e.GetArgument(t)),m=o.getProperty(\"currentLine\");m!==o.getProperty(\"line\")&&o.setProperty(\"currentLine\",o.getProperty(\"line\"));var h=c(e,d,[p],o.getProperty(\"left\"),o.getProperty(\"right\"),m,n);o.setProperty(\"left\",null),o.setProperty(\"right\",null),u.setProperty(h,\"inference\",i),e.configuration.addNode(\"inference\",h),o.Push(h)},f.Label=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=l.default.internalMath(e,e.GetArgument(t),0),i=n.length>1?e.create(\"node\",\"mrow\",n,{}):n[0];o.setProperty(r,i)},f.SetLine=function(e,t,r,o){var n=e.stack.Top();if(\"proofTree\"!==n.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"currentLine\",r),o&&n.setProperty(\"line\",r)},f.RootAtTop=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");o.setProperty(\"rootAtTop\",r)},f.AxiomF=function(e,t){var r=e.stack.Top();if(\"proofTree\"!==r.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var o=d(e,t);u.setProperty(o,\"axiom\",!0),r.Push(o)},f.FCenter=function(e,t){},f.InferenceF=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(o.Size()<r)throw new a.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=o.getProperty(\"rootAtTop\"),i=1!==r||o.Peek()[0].childNodes.length?r:0,l=[];do{l.length&&l.unshift(e.create(\"node\",\"mtd\",[],{})),l.unshift(e.create(\"node\",\"mtd\",[o.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var f=e.create(\"node\",\"mtr\",l,{}),s=e.create(\"node\",\"mtable\",[f],{framespacing:\"0 0\"}),p=d(e,t),m=o.getProperty(\"currentLine\");m!==o.getProperty(\"line\")&&o.setProperty(\"currentLine\",o.getProperty(\"line\"));var h=c(e,s,[p],o.getProperty(\"left\"),o.getProperty(\"right\"),m,n);o.setProperty(\"left\",null),o.setProperty(\"right\",null),u.setProperty(h,\"inference\",i),e.configuration.addNode(\"inference\",h),o.Push(h)},t.default=f},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,r){\"use strict\";var o;Object.defineProperty(t,\"__esModule\",{value:!0}),t.BussproofsConfiguration=void 0;var n=r(7),a=r(1),i=r(0);r(11),t.BussproofsConfiguration=n.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(o={},o[a.ProofTreeItem.prototype.kind]=a.ProofTreeItem,o),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.Stack.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var o=r(2),n=r(13),a=r(14);new a.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},o.default),new a.EnvironmentMap(\"Bussproofs-environments\",n.default.environment,{prooftree:[\"Prooftree\",null,!1]},o.default)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,r){\"use strict\";r.r(t);var o=r(5),n=r(6),a=r(1),i=r(2),l=r(0);Object(o.combineWithMathJax)({_:{input:{tex:{bussproofs:{BussproofsConfiguration:n,BussproofsItems:a,BussproofsMethods:i,BussproofsUtil:l}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/cancel.js",
    "content": "!function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=7)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.CancelConfiguration=t.CancelMethods=void 0;var a=n(2),o=n(3),i=n(4),r=n(5),c=n(6);t.CancelMethods={},t.CancelMethods.Cancel=function(e,t,n){var a=e.GetBrackets(t,\"\"),o=e.ParseArg(t),i=r.default.keyvalOptions(a,c.ENCLOSE_OPTIONS);i.notation=n,e.Push(e.create(\"node\",\"menclose\",[o],i))},t.CancelMethods.CancelTo=function(e,t){var n=e.GetBrackets(t,\"\"),a=e.ParseArg(t),i=e.ParseArg(t),u=r.default.keyvalOptions(n,c.ENCLOSE_OPTIONS);u.notation=[o.TexConstant.Notation.UPDIAGONALSTRIKE,o.TexConstant.Notation.UPDIAGONALARROW,o.TexConstant.Notation.NORTHEASTARROW].join(\" \"),a=e.create(\"node\",\"mpadded\",[a],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),e.Push(e.create(\"node\",\"msup\",[e.create(\"node\",\"menclose\",[i],u),a]))},new i.CommandMap(\"cancel\",{cancel:[\"Cancel\",o.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",o.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",o.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+o.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},t.CancelMethods),t.CancelConfiguration=a.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.ENCLOSE_OPTIONS=MathJax._.input.tex.enclose.EncloseConfiguration.ENCLOSE_OPTIONS,t.EncloseMethods=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseMethods,t.EncloseConfiguration=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseConfiguration},function(e,t,n){\"use strict\";n.r(t);var a=n(0),o=n(1);Object(a.combineWithMathJax)({_:{input:{tex:{cancel:{CancelConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/color.js",
    "content": "!function(e){var o={};function t(r){if(o[r])return o[r].exports;var n=o[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:r})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,o){if(1&o&&(e=t(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var n in e)t.d(r,n,function(o){return e[o]}.bind(null,n));return r},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},t.p=\"\",t(t.s=10)}([function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorMethods=void 0;var r=t(7),n=t(8);function a(e){var o=\"+\"+e,t=e.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(o)+t,height:o,depth:o,lspace:e}}o.ColorMethods={},o.ColorMethods.Color=function(e,o){var t=e.GetBrackets(o,\"\"),r=e.GetArgument(o),n=e.configuration.packageData.get(\"color\").model.getColor(t,r),a=e.itemFactory.create(\"style\").setProperties({styles:{mathcolor:n}});e.stack.env.color=n,e.Push(a)},o.ColorMethods.TextColor=function(e,o){var t=e.GetBrackets(o,\"\"),r=e.GetArgument(o),n=e.configuration.packageData.get(\"color\").model.getColor(t,r),a=e.stack.env.color;e.stack.env.color=n;var l=e.ParseArg(o);a?e.stack.env.color=a:delete e.stack.env.color;var i=e.create(\"node\",\"mstyle\",[l],{mathcolor:n});e.Push(i)},o.ColorMethods.DefineColor=function(e,o){var t=e.GetArgument(o),r=e.GetArgument(o),n=e.GetArgument(o);e.configuration.packageData.get(\"color\").model.defineColor(r,t,n)},o.ColorMethods.ColorBox=function(e,o){var t=e.GetArgument(o),l=n.default.internalMath(e,e.GetArgument(o)),i=e.configuration.packageData.get(\"color\").model,u=e.create(\"node\",\"mpadded\",l,{mathbackground:i.getColor(\"named\",t)});r.default.setProperties(u,a(e.options.color.padding)),e.Push(u)},o.ColorMethods.FColorBox=function(e,o){var t=e.GetArgument(o),l=e.GetArgument(o),i=n.default.internalMath(e,e.GetArgument(o)),u=e.options.color,d=e.configuration.packageData.get(\"color\").model,c=e.create(\"node\",\"mpadded\",i,{mathbackground:d.getColor(\"named\",l),style:\"border: \"+u.borderWidth+\" solid \"+d.getColor(\"named\",t)});r.default.setProperties(c,a(u.padding)),e.Push(c)}},function(e,o,t){\"use strict\";var r=this&&this.__values||function(e){var o=\"function\"==typeof Symbol&&Symbol.iterator,t=o&&e[o],r=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(o?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorModel=void 0;var n=t(9),a=t(2),l=new Map,i=function(){function e(){this.userColors=new Map}return e.prototype.normalizeColor=function(e,o){if(!e||\"named\"===e)return o;if(l.has(e))return l.get(e)(o);throw new n.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",e)},e.prototype.getColor=function(e,o){return e&&\"named\"!==e?this.normalizeColor(e,o):this.getColorByName(o)},e.prototype.getColorByName=function(e){return this.userColors.has(e)?this.userColors.get(e):a.COLORS.has(e)?a.COLORS.get(e):e},e.prototype.defineColor=function(e,o,t){var r=this.normalizeColor(e,t);this.userColors.set(o,r)},e}();o.ColorModel=i,l.set(\"rgb\",(function(e){var o,t,a=e.trim().split(/\\s*,\\s*/),l=\"#\";if(3!==a.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var i=r(a),u=i.next();!u.done;u=i.next()){var d=u.value;if(!d.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var c=parseFloat(d);if(c<0||c>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var s=Math.floor(255*c).toString(16);s.length<2&&(s=\"0\"+s),l+=s}}catch(e){o={error:e}}finally{try{u&&!u.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return l})),l.set(\"RGB\",(function(e){var o,t,a=e.trim().split(/\\s*,\\s*/),l=\"#\";if(3!==a.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var i=r(a),u=i.next();!u.done;u=i.next()){var d=u.value;if(!d.match(/^\\d+$/))throw new n.default(\"InvalidNumber\",\"Invalid number\");var c=parseInt(d);if(c>255)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var s=c.toString(16);s.length<2&&(s=\"0\"+s),l+=s}}catch(e){o={error:e}}finally{try{u&&!u.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return l})),l.set(\"gray\",(function(e){if(!e.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var o=parseFloat(e);if(o<0||o>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var t=Math.floor(255*o).toString(16);return t.length<2&&(t=\"0\"+t),\"#\"+t+t+t}))},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.COLORS=void 0,o.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.isObject=MathJax._.components.global.isObject,o.combineConfig=MathJax._.components.global.combineConfig,o.combineDefaults=MathJax._.components.global.combineDefaults,o.combineWithMathJax=MathJax._.components.global.combineWithMathJax,o.MathJax=MathJax._.components.global.MathJax},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorConfiguration=void 0;var r=t(5),n=t(6),a=t(0),l=t(1);new r.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},a.ColorMethods);o.ColorConfiguration=n.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(e,o){o.parseOptions.packageData.set(\"color\",{model:new l.ColorModel})}})},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,o.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,o.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,o.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,o.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,o.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,o.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,o.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.Configuration=MathJax._.input.tex.Configuration.Configuration,o.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,o.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.NodeUtil.default},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.ParseUtil.default},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.TexError.default},function(e,o,t){\"use strict\";t.r(o);var r=t(3),n=t(4),a=t(2),l=t(0),i=t(1);Object(r.combineWithMathJax)({_:{input:{tex:{color:{ColorConfiguration:n,ColorConstants:a,ColorMethods:l,ColorUtil:i}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/colorV2.js",
    "content": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,a){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(a,n,function(e){return t[e]}.bind(null,n));return a},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=4)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var a=o(2),n=o(3);e.ColorV2Methods={Color:function(t,e){var o=t.GetArgument(e),a=t.stack.env.color;t.stack.env.color=o;var n=t.ParseArg(e);a?t.stack.env.color=a:delete t.stack.env.color;var r=t.create(\"node\",\"mstyle\",[n],{mathcolor:o});t.Push(r)}},new a.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){\"use strict\";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{colorv2:{ColorV2Configuration:n}}}}}),function(t,e,o){var n,r,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,u=l.indexOf(t);u>=0&&(l[u]=e),o&&c[t]&&(Object(a.combineConfig)(c,(n={},r=e,i=c[t],r in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,n)),delete c[t])}}(\"colorV2\",\"colorv2\",!1)}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/configMacros.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=7)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,a=e&&t[e],n=0;if(a)return a.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var o=a(2),i=a(3),r=a(4),u=a(5),c=a(6);e.ConfigMacrosConfiguration=o.Configuration.create(\"configmacros\",{init:function(t){new r.CommandMap(\"configmacros-map\",{},{}),t.append(o.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var a,o,i=e.parseOptions.handlers.retrieve(\"configmacros-map\"),r=e.parseOptions.options.macros;try{for(var l=n(Object.keys(r)),p=l.next();!p.done;p=l.next()){var s=p.value,f=\"string\"==typeof r[s]?[r[s]]:r[s],M=Array.isArray(f[2])?new u.Macro(s,c.default.MacroWithTemplate,f.slice(0,2).concat(f[2])):new u.Macro(s,c.default.Macro,f);i.add(s,M)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}},options:{macros:i.expandable({})}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandMethods.default},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{configmacros:{ConfigMacrosConfiguration:o}}}}}),function(t,e,a){var o,i,r,u=MathJax.config.tex;if(u&&u.packages){var c=u.packages,l=c.indexOf(t);l>=0&&(c[l]=e),a&&u[t]&&(Object(n.combineConfig)(u,(o={},i=e,r=u[t],i in o?Object.defineProperty(o,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):o[i]=r,o)),delete u[t])}}(\"configMacros\",\"configmacros\",!1)}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/enclose.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=5)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.EncloseConfiguration=t.EncloseMethods=t.ENCLOSE_OPTIONS=void 0;var n=a(2),o=a(3),r=a(4);t.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},t.EncloseMethods={},t.EncloseMethods.Enclose=function(e,a){var n=e.GetArgument(a).replace(/,/g,\" \"),o=e.GetBrackets(a,\"\"),i=e.ParseArg(a),u=r.default.keyvalOptions(o,t.ENCLOSE_OPTIONS);u.notation=n,e.Push(e.create(\"node\",\"menclose\",[i],u))},new o.CommandMap(\"enclose\",{enclose:\"Enclose\"},t.EncloseMethods),t.EncloseConfiguration=n.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,a){\"use strict\";a.r(t);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{enclose:{EncloseConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/extpfeil.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var o=a(2),n=a(3),r=a(4),i=a(5),u=a(6),l=a(7);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=r.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,a){var o=t.GetArgument(a),n=t.GetArgument(a),r=t.GetArgument(a);if(!o.match(/^\\\\([a-z]+|.)$/i))throw new l.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",a);if(!n.match(/^(\\d+),(\\d+)$/))throw new l.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",a);if(!r.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new l.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",a);o=o.substr(1);var u=n.split(\",\");i.default.addMacro(t,o,e.ExtpfeilMethods.xArrow,[parseInt(r),parseInt(u[0]),parseInt(u[1])])},new n.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=o.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){u.NewcommandConfiguration.init(t)}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=MathJax._.input.tex.newcommand.NewcommandConfiguration.NewcommandConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{extpfeil:{ExtpfeilConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/html.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=6)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(5),r={Href:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,\"href\",a),t.Push(r)},Class:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,\"class\");u&&(a=u+\" \"+a),n.default.setAttribute(r,\"class\",a),t.Push(r)},Style:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,\"style\");u&&(\";\"!==a.charAt(a.length-1)&&(a+=\";\"),a=u+\" \"+a),n.default.setAttribute(r,\"style\",a),t.Push(r)},Id:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,\"id\",a),t.Push(r)}},o=function(t,e){var a=t.ParseArg(e);if(!n.default.isInferred(a))return a;var r=n.default.getChildren(a);if(1===r.length)return r[0];var o=t.create(\"node\",\"mrow\");return n.default.copyChildren(a,o),n.default.copyAttributes(a,o),o};e.default=r},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var n=a(3),r=a(4),o=a(0);new r.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=n.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";a.r(e);var n=a(1),r=a(2),o=a(0);Object(n.combineWithMathJax)({_:{input:{tex:{html:{HtmlConfiguration:r,HtmlMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/mhchem.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var n=a(2),o=a(3),r=a(4),i=a(5),c=a(6),u=a(7),p={};p.Macro=i.default.Macro,p.xArrow=c.AmsMethods.xArrow,p.Machine=function(t,e,a){try{var n=t.GetArgument(e),o=u.mhchemParser.go(n,a),i=u.texify.go(o);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new r.default(t[0],t[1],t.slice(2))}},new o.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},p),e.MhchemConfiguration=n.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var a,o=\"0\",r={};r.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,c=[];;){a!==t?(i=10,a=t):i--;var u=n.stateMachines[e],p=u.transitions[o]||u.transitions[\"*\"];t:for(var s=0;s<p.length;s++){var _=n.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,l=0;l<d.action_.length;l++){var m;if(u.actions[d.action_[l].type_])m=u.actions[d.action_[l].type_](r,_.match_,d.action_[l].option);else{if(!n.actions[d.action_[l].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+d.action_[l].type_+\")\"];m=n.actions[d.action_[l].type_](r,_.match_,d.action_[l].option)}n.concatArray(c,m)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var a=0;a<e.length;a++)t.push(e[a]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=n.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var a=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return a?{match_:a[0],remainder:t.substr(a[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return n.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return n.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return n.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return n.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return n.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return n.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var a=n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return a&&(e=a.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,a,n,o,r,i,c,u,p){var s=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var a=t.match(e);return a?a[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,a)))return null;var d=function(t,e,a){for(var n=0;e<t.length;){var o=t.charAt(e),r=s(t.substr(e),a);if(null!==r&&0===n)return{endMatchBegin:e,endMatchEnd:e+r.length};if(\"{\"===o)n++;else if(\"}\"===o){if(0===n)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];n--}e++}return null}(t,_.length,n||o);if(null===d)return null;var l=t.substring(0,n?d.endMatchEnd:d.endMatchBegin);if(r||i){var m=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===m)return null;var h=[l,m.match_];return{match_:p?h.join(\"\"):h,remainder:m.remainder}}return{match_:l,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var a=n.patterns.patterns[t];if(void 0===a)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof a)return n.patterns.patterns[t](e);var o=e.match(a);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,a){return{type_:a}},\"insert+p1\":function(t,e,a){return{type_:a,p1:e}},\"insert+p1+p2\":function(t,e,a){return{type_:a,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return n.go(e,\"text\")},\"{text}\":function(t,e){var a=[\"{\"];return n.concatArray(a,n.go(e,\"text\")),a.push(\"}\"),a},\"tex-math\":function(t,e){return n.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return n.go(e,\"tex-math tight\")},bond:function(t,e,a){return{type_:\"bond\",kind_:a||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return n.go(e)},\"1/2\":function(t,e){var a=[];e.match(/^[+\\-]/)&&(a.push(e.substr(0,1)),e=e.substr(1));var n=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return n[1]=n[1].replace(/\\$/g,\"\"),a.push({type_:\"frac\",p1:n[1],p2:n[2]}),n[3]&&(n[3]=n[3].replace(/\\$/g,\"\"),a.push({type_:\"tex-math\",p1:n[3]})),a},\"9,9\":function(t,e){return n.go(e,\"9,9\")}},createTransitions:function(t){var e,a,n,o,r={};for(e in t)for(a in t[e])for(n=a.split(\"|\"),t[e][a].stateArray=n,o=0;o<n.length;o++)r[n[o]]=[];for(e in t)for(a in t[e])for(n=t[e][a].stateArray||[],o=0;o<n.length;o++){var i=t[e][a];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)\"string\"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split(\"|\"),p=0;p<u.length;p++)if(\"*\"===n[o])for(var s in r)r[s].push({pattern:u[p],task:i});else r[n[o]].push({pattern:u[p],task:i})}return r},stateMachines:{}};n.stateMachines={ce:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var a;if((t.d||\"\").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,a=this.output(t),t.b=o}else a=this.output(t);return n.actions[\"o=\"](t,e),a},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var a=[];return n.concatArray(a,this.output(t)),n.concatArray(a,n.actions.bond(t,e,\"-\")),a}t.d=e},\"- after o/d\":function(t,e,a){var o=n.patterns.match_(\"orbital\",t.o||\"\"),r=n.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=n.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),c=n.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),u=\"-\"===e&&(o&&\"\"===o.remainder||r||i||c);!u||t.a||t.b||t.p||t.d||t.q||o||!i||(t.o=\"$\"+t.o+\"$\");var p=[];return u?(n.concatArray(p,this.output(t)),p.push({type_:\"hyphen\"})):(o=n.patterns.match_(\"digits\",t.d||\"\"),a&&o&&\"\"===o.remainder?(n.concatArray(p,n.actions[\"d=\"](t,e)),n.concatArray(p,this.output(t))):(n.concatArray(p,this.output(t)),n.concatArray(p,n.actions.bond(t,e,\"-\")))),p},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:n.go(e,\"o\")}},comma:function(t,e){var a=e.replace(/\\s*$/,\"\");return a!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:a}:{type_:\"comma enumeration M\",p1:a}},output:function(t,e,a){var o,r,i;t.r?(r=\"M\"===t.rdt?n.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:n.go(t.rd),i=\"M\"===t.rqt?n.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:n.go(t.rq),o={type_:\"arrow\",r:t.r,rd:r,rq:i}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||a)&&(t.sb&&o.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===a?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&n.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:\"chemfive\",a:n.go(t.a,\"a\"),b:n.go(t.b,\"bd\"),p:n.go(t.p,\"pq\"),o:n.go(t.o,\"o\"),q:n.go(t.q,\"pq\"),d:n.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var c in t)\"parenthesisLevel\"!==c&&\"beginsWithBond\"!==c&&delete t[c];return o},\"oxidation-output\":function(t,e){var a=[\"{\"];return n.concatArray(a,n.go(e,\"oxidation\")),a.push(\"}\"),a},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:n.go(e[0]),p2:n.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:n.go(e[0]),p2:n.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,a){return{type_:\"operator\",kind_:a||e}}}},a:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var a in t)delete t[a];return e}}}},pq:{transitions:n.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:n.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"pq\")}}}},bd:{transitions:n.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"bd\")}}}},oxidation:{transitions:n.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var a in t)delete t[a];return e}}}},\"tex-math tight\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var a in t)delete t[a];return e}}}},\"9,9\":{transitions:n.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var a=[];return\"+-\"===e[0]||\"+/-\"===e[0]?a.push(\"\\\\pm \"):e[0]&&a.push(e[0]),e[1]&&(n.concatArray(a,n.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?n.concatArray(a,n.go(e[2],\"pu-9,9\")):a.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?a.push({type_:\"cdot\"}):a.push({type_:\"times\"}))),e[3]&&a.push(\"10^{\"+e[5]+\"}\"),a},\"number^\":function(t,e){var a=[];return\"+-\"===e[0]||\"+/-\"===e[0]?a.push(\"\\\\pm \"):e[0]&&a.push(e[0]),n.concatArray(a,n.go(e[1],\"pu-9,9\")),a.push(\"^{\"+e[2]+\"}\"),a},operator:function(t,e,a){return{type_:\"operator\",kind_:a||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,a=n.patterns.match_(\"{(...)}\",t.d||\"\");a&&\"\"===a.remainder&&(t.d=a.match_);var o=n.patterns.match_(\"{(...)}\",t.q||\"\");if(o&&\"\"===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var r={d:n.go(t.d,\"pu\"),q:n.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:r.d,p2:r.q}:(e=r.d,r.d.length>1||r.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),n.concatArray(e,r.q))}else e=n.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var a=n.patterns.match_(\"{(...)}\",t.rm||\"\");e=a&&\"\"===a.remainder?n.go(a.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var o in t)delete t[o];return e}}},\"pu-9,9\":{transitions:n.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var a=t.text_.length%3;0===a&&(a=3);for(var n=t.text_.length-3;n>0;n-=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,a)),e.reverse()}else e.push(t.text_);for(var o in t)delete t[o];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var a=t.text_.length-3,n=0;n<a;n+=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(n))}else e.push(t.text_);for(var o in t)delete t[o];return e}}}};var o={go:function(t,e){if(!t)return\"\";for(var a=\"\",n=!1,r=0;r<t.length;r++){var i=t[r];\"string\"==typeof i?a+=i:(a+=o._go2(i),\"1st-level escape\"===i.type_&&(n=!0))}return e||n||!a||(a=\"{\"+a+\"}\"),a},_goInner:function(t){return t?o.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var a={a:o._goInner(t.a),b:o._goInner(t.b),p:o._goInner(t.p),o:o._goInner(t.o),q:o._goInner(t.q),d:o._goInner(t.d)};a.a&&(a.a.match(/^[+\\-]/)&&(a.a=\"{\"+a.a+\"}\"),e+=a.a+\"\\\\,\"),(a.b||a.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(a.b||\"\")+\"}}_{\\\\hphantom{\"+(a.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(a.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(a.p||\"\")+\"}}}\"),a.o&&(a.o.match(/^[+\\-]/)&&(a.o=\"{\"+a.o+\"}\"),e+=a.o),\"kv\"===t.dType?((a.d||a.q)&&(e+=\"{\\\\vphantom{X}}\"),a.d&&(e+=\"^{\"+a.d+\"}\"),a.q&&(e+=\"_{\\\\smash[t]{\"+a.q+\"}}\")):\"oxidation\"===t.dType?(a.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+a.d+\"}\"),a.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+a.q+\"}}\")):(a.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+a.q+\"}}\"),a.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+a.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+o._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+o._goInner(t.p1);break;case\"bond\":if(!(e=o._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var n=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"pu-frac\":var r=\"\\\\frac{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+r+\"}{\"+r+\"}{\"+r+\"}{\"+r+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+o._goInner(t.p1)+\"}_{\"+o._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+o._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:o._goInner(t.rd),rq:o._goInner(t.rq)},c=o._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(c=\"\\\\long\"+c,i.rd&&(c=\"\\\\overset{\"+i.rd+\"}{\"+c+\"}\"),i.rq&&(c=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+c+\"}\"),c=\" {}\\\\mathrel{\"+c+\"}{} \"):(i.rq&&(c+=\"[{\"+i.rq+\"}]\"),c=\" {}\\\\mathrel{\\\\x\"+(c+=\"{\"+i.rd+\"}\")+\"}{} \"):c=\" {}\\\\mathrel{\\\\long\"+c+\"}{} \",e=c;break;case\"operator\":e=o._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function r(t){}function i(t){}e.mhchemParser=n,e.texify=o,e.assertNever=r,e.assertString=i},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{mhchem:{MhchemConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/newcommand.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=14)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=a(5),i=a(1),o=a(10);!function(e){function t(e,t){return e.string.substr(e.i,t.length)!==t||t.match(/\\\\[a-z]+$/i)&&e.string.charAt(e.i+t.length).match(/[a-z]/i)?0:(e.i+=t.length,1)}e.disassembleSymbol=function(e,t){var a=[e,t.char];if(t.attributes)for(var n in t.attributes)a.push(n),a.push(t.attributes[n]);return a},e.assembleSymbol=function(e){for(var t=e[0],a=e[1],n={},r=2;r<e.length;r+=2)n[e[r]]=e[r+1];return new o.Symbol(t,a,n)},e.GetCSname=function(e,t){if(\"\\\\\"!==e.GetNext())throw new i.default(\"MissingCS\",\"%1 must be followed by a control sequence\",t);return r.default.trimSpaces(e.GetArgument(t)).substr(1)},e.GetTemplate=function(e,t,a){for(var n=e.GetNext(),r=[],o=0,u=e.i;e.i<e.string.length;){if(\"#\"===(n=e.GetNext())){if(u!==e.i&&(r[o]=e.string.substr(u,e.i-u)),!(n=e.string.charAt(++e.i)).match(/^[1-9]$/))throw new i.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",a);if(parseInt(n)!==++o)throw new i.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",a);u=e.i+1}else if(\"{\"===n)return u!==e.i&&(r[o]=e.string.substr(u,e.i-u)),r.length>0?[o.toString()].concat(r):o;e.i++}throw new i.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",t)},e.GetParameter=function(e,a,n){if(null==n)return e.GetArgument(a);for(var r=e.i,o=0,u=0;e.i<e.string.length;){var l=e.string.charAt(e.i);if(\"{\"===l)e.i===r&&(u=1),e.GetArgument(a),o=e.i-r;else{if(t(e,n))return u&&(r++,o-=2),e.string.substr(r,o);if(\"\\\\\"===l){e.i++,o++,u=0;var c=e.string.substr(e.i).match(/[a-z]+|./i);c&&(e.i+=c[0].length,o=e.i-r)}else e.i++,o++,u=0}}throw new i.default(\"RunawayArgument\",\"Runaway argument for %1?\",a)},e.MatchParam=t,e.addDelimiter=function(t,a,n,r){t.configuration.handlers.retrieve(e.NEW_DELIMITER).add(a,new o.Symbol(a,n,r))},e.addMacro=function(t,a,n,r,i){void 0===i&&(i=\"\"),t.configuration.handlers.retrieve(e.NEW_COMMAND).add(a,new o.Macro(i||a,n,r))},e.addEnvironment=function(t,a,n,r){t.configuration.handlers.retrieve(e.NEW_ENVIRONMENT).add(a,new o.Macro(a,n,r))},e.NEW_DELIMITER=\"new-Delimiter\",e.NEW_COMMAND=\"new-Command\",e.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),t.default=n},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.BeginEnvItem=void 0;var i=a(1),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind(\"end\")){if(t.getName()!==this.getName())throw new i.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),t.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(t.isKind(\"stop\"))throw new i.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return e.prototype.checkItem.call(this,t)},t}(a(9).BaseItem);t.BeginEnvItem=o},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(1),r=a(2),i=a(12),o=a(5),u=a(0),l={NewCommand:function(e,t){var a=o.default.trimSpaces(e.GetArgument(t)),r=e.GetBrackets(t),i=e.GetBrackets(t),c=e.GetArgument(t);if(\"\\\\\"===a.charAt(0)&&(a=a.substr(1)),!a.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",t);if(r&&!(r=o.default.trimSpaces(r)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",t);u.default.addMacro(e,a,l.Macro,[c,r,i])},NewEnvironment:function(e,t){var a=o.default.trimSpaces(e.GetArgument(t)),r=e.GetBrackets(t),i=e.GetBrackets(t),c=e.GetArgument(t),s=e.GetArgument(t);if(r&&!(r=o.default.trimSpaces(r)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",t);u.default.addEnvironment(e,a,l.BeginEnv,[!0,c,s,r,i])},MacroDef:function(e,t){var a=u.default.GetCSname(e,t),n=u.default.GetTemplate(e,t,\"\\\\\"+a),r=e.GetArgument(t);n instanceof Array?u.default.addMacro(e,a,l.MacroWithTemplate,[r].concat(n)):u.default.addMacro(e,a,l.Macro,[r,n])},Let:function(e,t){var a=u.default.GetCSname(e,t),n=e.GetNext();\"=\"===n&&(e.i++,n=e.GetNext());var i=e.configuration.handlers;if(\"\\\\\"!==n){e.i++;var o=i.get(\"delimiter\").lookup(n);o?u.default.addDelimiter(e,\"\\\\\"+a,o.char,o.attributes):u.default.addMacro(e,a,l.Macro,[n])}else{t=u.default.GetCSname(e,t);var c=i.get(\"delimiter\").lookup(\"\\\\\"+t);if(c)return void u.default.addDelimiter(e,\"\\\\\"+a,c.char,c.attributes);var s=i.get(\"macro\").applicable(t);if(!s)return;if(s instanceof r.MacroMap){var f=s.lookup(t);return void u.default.addMacro(e,a,f.func,f.args,f.symbol)}c=s.lookup(t);var m=u.default.disassembleSymbol(a,c);u.default.addMacro(e,a,(function(e,t){for(var a=[],n=2;n<arguments.length;n++)a[n-2]=arguments[n];var r=u.default.assembleSymbol(a);return s.parser(e,r)}),m)}},MacroWithTemplate:function(e,t,a,r){for(var i=[],l=4;l<arguments.length;l++)i[l-4]=arguments[l];var c=parseInt(r,10);if(c){var s=[];if(e.GetNext(),i[0]&&!u.default.MatchParam(e,i[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",t);for(var f=0;f<c;f++)s.push(u.default.GetParameter(e,t,i[f+1]));a=o.default.substituteArgs(e,s,a)}if(e.string=o.default.addArgs(e,a,e.string.slice(e.i)),e.i=0,++e.macroCount>e.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(e,t,a,n,r,i){if(t.getProperty(\"end\")&&e.stack.env.closing===t.getName()){delete e.stack.env.closing;var u=e.string.slice(e.i);return e.string=n,e.i=0,e.Parse(),e.string=u,e.i=0,e.itemFactory.create(\"end\").setProperty(\"name\",t.getName())}if(r){var l=[];if(null!=i){var c=e.GetBrackets(\"\\\\begin{\"+t.getName()+\"}\");l.push(null==c?i:c)}for(var s=l.length;s<r;s++)l.push(e.GetArgument(\"\\\\begin{\"+t.getName()+\"}\"));a=o.default.substituteArgs(e,l,a),n=o.default.substituteArgs(e,[],n)}return e.string=o.default.addArgs(e,a,e.string.slice(e.i)),e.i=0,e.itemFactory.create(\"beginEnv\").setProperty(\"name\",t.getName())}};l.Macro=i.default.Macro,t.default=l},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";var n;Object.defineProperty(t,\"__esModule\",{value:!0}),t.NewcommandConfiguration=void 0;var r=a(8),i=a(3),o=a(0);a(11);var u=a(13),l=a(2);t.NewcommandConfiguration=r.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[i.BeginEnvItem.prototype.kind]=i.BeginEnvItem,n),options:{maxMacros:1e3},init:function(e){new l.DelimiterMap(o.default.NEW_DELIMITER,u.default.delimiter,{}),new l.CommandMap(o.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(o.default.NEW_ENVIRONMENT,u.default.environment,{},{}),e.append(r.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Symbol=MathJax._.input.tex.Symbol.Symbol,t.Macro=MathJax._.input.tex.Symbol.Macro},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(4);new(a(2).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,a){\"use strict\";a.r(t);var n=a(6),r=a(7),i=a(3),o=a(4),u=a(0);Object(n.combineWithMathJax)({_:{input:{tex:{newcommand:{NewcommandConfiguration:r,NewcommandItems:i,NewcommandMethods:o,NewcommandUtil:u}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/noerrors.js",
    "content": "!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=3)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.NoErrorsConfiguration=void 0;var o=n(2);t.NoErrorsConfiguration=o.Configuration.create(\"noerrors\",{nodes:{error:function(e,t,n,o){var r=e.create(\"token\",\"mtext\",{},o.replace(/\\n/g,\" \"));return e.create(\"node\",\"merror\",[r],{\"data-mjx-error\":t,title:t})}}})},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){\"use strict\";n.r(t);var o=n(0),r=n(1);Object(o.combineWithMathJax)({_:{input:{tex:{noerrors:{NoErrorsConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/noundefined.js",
    "content": "!function(e){var n={};function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&n&&\"string\"!=typeof e)for(var r in e)t.d(o,r,function(n){return e[n]}.bind(null,r));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p=\"\",t(t.s=3)}([function(e,n,t){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isObject=MathJax._.components.global.isObject,n.combineConfig=MathJax._.components.global.combineConfig,n.combineDefaults=MathJax._.components.global.combineDefaults,n.combineWithMathJax=MathJax._.components.global.combineWithMathJax,n.MathJax=MathJax._.components.global.MathJax},function(e,n,t){\"use strict\";var o=this&&this.__values||function(e){var n=\"function\"==typeof Symbol&&Symbol.iterator,t=n&&e[n],o=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(n,\"__esModule\",{value:!0}),n.NoUndefinedConfiguration=void 0;var r=t(2);n.NoUndefinedConfiguration=r.Configuration.create(\"noundefined\",{fallback:{macro:function(e,n){var t,r,i=e.create(\"text\",\"\\\\\"+n),a=e.options.noundefined||{},u={};try{for(var f=o([\"color\",\"background\",\"size\"]),c=f.next();!c.done;c=f.next()){var l=c.value;a[l]&&(u[\"math\"+l]=a[l])}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=f.return)&&r.call(f)}finally{if(t)throw t.error}}e.Push(e.create(\"node\",\"mtext\",[],u,i))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(e,n,t){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,n,t){\"use strict\";t.r(n);var o=t(0),r=t(1);Object(o.combineWithMathJax)({_:{input:{tex:{noundefined:{NoUndefinedConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/physics.js",
    "content": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=17)}([function(t,e,a){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var i=a(8),o=a(2),s=a(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,a=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var r=t.prototype.toMml.call(this),n=e.create(\"node\",\"mpadded\",[r],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[n]))}a&&this.Push(new s.default(a,e.stack.env,e.configuration).mml());var i=t.prototype.toMml.call(this);return o.default.fenced(this.factory.configuration,this.getProperty(\"open\"),i,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var a=e.getProperty(\"autoclose\");return a&&a===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(i.BaseItem);e.AutoOpen=c},function(t,e,a){\"use strict\";var r=this&&this.__read||function(t,e){var a=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!a)return t;var r,n,i=a.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(11),i=a(3),o=a(12),s=a(4),c=a(2),l=a(13),u=a(14),m={},d={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},f=/^(b|B)i(g{1,2})$/;m.Quantity=function(t,e,a,r,n,u,m){void 0===a&&(a=\"(\"),void 0===r&&(r=\")\"),void 0===n&&(n=!1),void 0===u&&(u=\"\"),void 0===m&&(m=\"\");var p=!!n&&t.GetStar(),v=t.GetNext(),g=t.i,h=null;if(\"\\\\\"===v){if(t.i++,!(h=t.GetCS()).match(f)){var x=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,a,x,r)),void(t.i=g)}v=t.GetNext()}var M=d[v];if(n&&\"{\"!==v)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!M){x=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,a,x,r)),void(t.i=g)}if(u){var y=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);m&&l.default.setAttribute(y,\"mathvariant\",m),t.Push(t.itemFactory.create(\"fn\",y))}if(\"{\"===v){var b=t.GetArgument(e);return v=n?a:\"\\\\{\",M=n?r:\"\\\\}\",b=p?v+\" \"+b+\" \"+M:h?\"\\\\\"+h+\"l\"+v+\" \"+b+\" \\\\\"+h+\"r\"+M:\"\\\\left\"+v+\" \"+b+\" \\\\right\"+M,void t.Push(new i.default(b,t.stack.env,t.configuration).mml())}n&&(v=a,M=r),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:v,close:M,big:h}))},m.Eval=function(t,e){var a=t.GetStar(),r=t.GetNext();if(\"{\"!==r){if(\"(\"===r||\"[\"===r)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:r,close:\"|\",smash:a,right:\"\\\\vphantom{\\\\int}\"}));throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var n=t.GetArgument(e),i=\"\\\\left. \"+(a?\"\\\\smash{\"+n+\"}\":n)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+i+t.string.slice(t.i)},m.Commutator=function(t,e,a,r){void 0===a&&(a=\"[\"),void 0===r&&(r=\"]\");var n=t.GetStar(),s=t.GetNext(),c=null;if(\"\\\\\"===s){if(t.i++,!(c=t.GetCS()).match(f))throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=t.GetArgument(e)+\",\"+t.GetArgument(e);l=n?a+\" \"+l+\" \"+r:c?\"\\\\\"+c+\"l\"+a+\" \"+l+\" \\\\\"+c+\"r\"+r:\"\\\\left\"+a+\" \"+l+\" \\\\right\"+r,t.Push(new i.default(l,t.stack.env,t.configuration).mml())};var p=[65,90],v=[97,122],g=[913,937],h=[945,969],x=[48,57];function M(t,e){return t>=e[0]&&t<=e[1]}function y(t,e,a,r){var n=t.configuration.parser,i=u.NodeFactory.createToken(t,e,a,r),o=r.codePointAt(0);return 1===r.length&&!n.stack.env.font&&n.stack.env.vectorFont&&(M(o,p)||M(o,v)||M(o,g)||M(o,x)||M(o,h)&&n.stack.env.vectorStar||l.default.getAttribute(i,\"accent\"))&&l.default.setAttribute(i,\"mathvariant\",n.stack.env.vectorFont),i}m.VectorBold=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=t.configuration.nodeFactory.get(\"token\"),o=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",y),t.stack.env.vectorFont=a?\"bold-italic\":\"bold\",t.stack.env.vectorStar=a;var s=new i.default(r,t.stack.env,t.configuration).mml();o&&(t.stack.env.font=o),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",n),t.Push(s)},m.StarMacro=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];var i=t.GetStar(),s=[];if(a)for(var l=s.length;l<a;l++)s.push(t.GetArgument(e));var u=r.join(i?\"*\":\"\");if(u=c.default.substituteArgs(t,s,u),t.string=c.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var b=function(t,e,a,r,n){var o=new i.default(r,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,o));var s=t.GetNext(),c=d[s];if(c){var l=-1!==n.indexOf(s);if(\"{\"===s){var u=(l?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(a)+\" \"+(l?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}l&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:c})))}};function P(t,e,a){var n=r(t,3),i=n[0],o=n[1],s=n[2];return e&&a?\"\\\\left\\\\langle{\"+i+\"}\\\\middle\\\\vert{\"+o+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+i+\"}\\\\vert{\"+o+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+i+\"}\\\\right\\\\vert{\"+o+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}m.OperatorApplication=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];b(t,\"fn\",e,a,r)},m.VectorOperator=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];b(t,\"mml\",e,a,r)},m.Expression=function(t,e,a,r){void 0===a&&(a=!0),void 0===r&&(r=\"\"),r=r||e.slice(1);var n=a?t.GetBrackets(e):null,o=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},r);if(n){var c=new i.default(n,t.stack.env,t.configuration).mml();o=t.create(\"node\",\"msup\",[o,c])}t.Push(t.itemFactory.create(\"fn\",o)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},m.Qqtext=function(t,e,a){var r=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(a||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+r+t.string.slice(t.i)},m.Differential=function(t,e,a){var r=t.GetBrackets(e),n=null!=r?\"^{\"+r+\"}\":\" \",o=\"(\"===t.GetNext(),c=\"{\"===t.GetNext(),l=a+n;if(o||c)if(c){l+=t.GetArgument(e);u=new i.default(l,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new i.default(l,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{l+=t.GetArgument(e,!0)||\"\";var u=new i.default(l,t.stack.env,t.configuration).mml();t.Push(u)}},m.Derivative=function(t,e,a,r){var n=t.GetStar(),o=t.GetBrackets(e),s=1,c=[];for(c.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<a;)c.push(t.GetArgument(e)),s++;var l=!1,u=\" \",m=\" \";a>2&&c.length>2?(u=\"^{\"+(c.length-1)+\"}\",l=!0):null!=o&&(a>2&&c.length>1&&(l=!0),m=u=\"^{\"+o+\"}\");for(var d=n?\"\\\\flatfrac\":\"\\\\frac\",f=c.length>1?c[0]:\"\",p=c.length>1?c[1]:c[0],v=\"\",g=2,h=void 0;h=c[g];g++)v+=r+\" \"+h;var x=d+\"{\"+r+u+f+\"}{\"+r+\" \"+p+m+\" \"+v+\"}\";t.Push(new i.default(x,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:l})))},m.Bra=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=\"\",o=!1,s=!1;if(\"\\\\\"===t.GetNext()){var c=t.i;t.i++;var l=t.GetCS(),u=t.lookup(\"macro\",l);u&&\"ket\"===u.symbol?(o=!0,c=t.i,s=t.GetStar(),\"{\"===t.GetNext()?n=t.GetArgument(l,!0):(t.i=c,s=!1)):t.i=c}var m=\"\";m=o?a||s?\"\\\\langle{\"+r+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":a||s?\"\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\langle{\"+r+\"}\\\\right\\\\vert{\"+n+\"}\",t.Push(new i.default(m,t.stack.env,t.configuration).mml())},m.Ket=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=a?\"\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+r+\"}\\\\right\\\\rangle\";t.Push(new i.default(n,t.stack.env,t.configuration).mml())},m.BraKet=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var o=\"\";o=null==n?a?\"\\\\langle{\"+r+\"}\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+r+\"}\\\\right\\\\rangle\":a?\"\\\\langle{\"+r+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\",t.Push(new i.default(o,t.stack.env,t.configuration).mml())},m.KetBra=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var o=\"\";o=null==n?a?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+r+\"}\\\\right\\\\vert\":a?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\",t.Push(new i.default(o,t.stack.env,t.configuration).mml())},m.Expectation=function(t,e){var a=t.GetStar(),r=a&&t.GetStar(),n=t.GetArgument(e),o=null;\"{\"===t.GetNext()&&(o=t.GetArgument(e,!0));var s=n&&o?P([o,n,o],a,r):a?\"\\\\langle {\"+n+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+n+\"} \\\\right\\\\rangle\";t.Push(new i.default(s,t.stack.env,t.configuration).mml())},m.MatrixElement=function(t,e){var a=t.GetStar(),r=a&&t.GetStar(),n=P([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],a,r);t.Push(new i.default(n,t.stack.env,t.configuration).mml())},m.MatrixQuantity=function(t,e,a){var r=t.GetStar(),n=a?\"smallmatrix\":\"array\",o=\"\",s=\"\",c=\"\";switch(t.GetNext()){case\"{\":o=t.GetArgument(e);break;case\"(\":t.i++,s=r?\"\\\\lgroup\":\"(\",c=r?\"\\\\rgroup\":\")\",o=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",c=\"]\",o=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",c=\"|\",o=t.GetUpTo(e,\"|\");break;default:s=\"(\",c=\")\"}var l=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+n+\"}{} \"+o+\"\\\\end{\"+n+\"}\"+(s?\"\\\\right\":\"\")+c;t.Push(new i.default(l,t.stack.env,t.configuration).mml())},m.IdentityMatrix=function(t,e){var a=t.GetArgument(e),r=parseInt(a,10);if(isNaN(r))throw new o.default(\"InvalidNumber\",\"Invalid number\");if(r<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var n=Array(r).fill(\"0\"),i=[],s=0;s<r;s++){var c=n.slice();c[s]=\"1\",i.push(c.join(\" & \"))}t.string=i.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},m.XMatrix=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=t.GetArgument(e),i=t.GetArgument(e),s=parseInt(n,10),c=parseInt(i,10);if(isNaN(s)||isNaN(c)||c.toString()!==i||s.toString()!==n)throw new o.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,c=c<1?1:c,!a){var l=Array(c).fill(r).join(\" & \"),u=Array(s).fill(l).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var m=\"\";if(1===s&&1===c)m=r;else if(1===s){l=[];for(var d=1;d<=c;d++)l.push(r+\"_{\"+d+\"}\");m=l.join(\" & \")}else if(1===c){for(l=[],d=1;d<=s;d++)l.push(r+\"_{\"+d+\"}\");m=l.join(\"\\\\\\\\ \")}else{var f=[];for(d=1;d<=s;d++){l=[];for(var p=1;p<=c;p++)l.push(r+\"_{{\"+d+\"}{\"+p+\"}}\");f.push(l.join(\" & \"))}m=f.join(\"\\\\\\\\ \")}t.string=m+t.string.slice(t.i),t.i=0},m.PauliMatrix=function(t,e){var a=t.GetArgument(e),r=a.slice(1);switch(a[0]){case\"0\":r+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":r+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":r+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":r+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=r+t.string.slice(t.i),t.i=0},m.DiagonalMatrix=function(t,e,a){if(\"{\"===t.GetNext()){var r=t.i;t.GetArgument(e);var n=t.i;t.i=r+1;for(var i=[],o=\"\",s=t.i;s<n;){try{o=t.GetUpTo(e,\",\")}catch(e){t.i=n,i.push(t.string.slice(s,n-1));break}if(t.i>=n){i.push(t.string.slice(s,n));break}s=t.i,i.push(o)}t.string=function(t,e){for(var a=t.length,r=[],n=0;n<a;n++)r.push(Array(e?a-n:n+1).join(\"&\")+\"\\\\mqty{\"+t[n]+\"}\");return r.join(\"\\\\\\\\ \")}(i,a)+t.string.slice(n),t.i=0}},m.AutoClose=function(t,e,a){var r=t.create(\"token\",\"mo\",{stretchy:!1},e),n=t.itemFactory.create(\"mml\",r).setProperties({autoclose:e});t.Push(n)},m.Macro=n.default.Macro,m.NamedFn=n.default.NamedFn,m.Array=n.default.Array,e.default=m},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var n=a(7),i=a(0);a(9),e.PhysicsConfiguration=n.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(r={},r[i.AutoOpen.prototype.kind]=i.AutoOpen,r)})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlStack=MathJax._.input.tex.StackItem.MmlStack,e.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=a(10),n=a(1),i=a(15),o=a(16),s=a(4);new r.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",i.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},n.default),new r.CharacterMap(\"Physics-vector-chars\",o.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:i.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:i.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:i.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:i.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:i.TexConstant.Variant.NORMAL}]}),new r.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},n.default),new r.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},n.default),new r.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},n.default),new r.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},n.default),new r.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},n.default),new r.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},n.default),new r.EnvironmentMap(\"Physics-aux-envs\",o.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},n.default),new r.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},n.default)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,a){\"use strict\";a.r(e);var r=a(5),n=a(6),i=a(0),o=a(1);Object(r.combineWithMathJax)({_:{input:{tex:{physics:{PhysicsConfiguration:n,PhysicsItems:i,PhysicsMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/require.js",
    "content": "!function(e){var t={};function a(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)a.d(r,o,function(t){return e[t]}.bind(null,o));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=9)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";var r=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,a=t&&e[t],r=0;if(a)return a.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(e,t){var a=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var r,o,n=a.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=n.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(a=n.return)&&a.call(n)}finally{if(o)throw o.error}}return i},n=this&&this.__spread||function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e};Object.defineProperty(t,\"__esModule\",{value:!0}),t.RequireConfiguration=t.options=t.RequireMethods=t.RequireLoad=void 0;var i=a(2),u=a(3),s=a(4),p=a(0),l=a(5),c=a(6),f=a(7),d=a(8),x=p.MathJax.config;function h(e,t){var a,o=e.parseOptions.options.require,n=e.parseOptions.packageData.get(\"require\").required,u=t.substr(o.prefix.length);if(n.indexOf(u)<0){n.push(u),function(e,t){var a,o;void 0===t&&(t=[]);var n=e.parseOptions.options.require.prefix;try{for(var i=r(t),u=i.next();!u.done;u=i.next()){var s=u.value;s.substr(0,n.length)===n&&h(e,s)}}catch(e){a={error:e}}finally{try{u&&!u.done&&(o=i.return)&&o.call(i)}finally{if(a)throw a.error}}}(e,c.CONFIG.dependencies[t]);var s=i.ConfigurationHandler.get(u);if(s){var p=x[t]||{};s.options&&1===Object.keys(s.options).length&&s.options[u]&&((a={})[u]=p,p=a),e.configuration.add(s,e,p);var l=e.parseOptions.packageData.get(\"require\").configured;s.preprocessors.length&&!l.has(u)&&(l.set(u,!0),f.mathjax.retryAfter(Promise.resolve()))}}}function M(e,t){var a=e.options.require,r=a.allow,o=(\"[\"===t.substr(0,1)?\"\":a.prefix)+t;if(!(r.hasOwnProperty(o)?r[o]:r.hasOwnProperty(t)?r[t]:a.defaultAllow))throw new s.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',o);l.Package.packages.has(o)?h(e.configuration.packageData.get(\"require\").jax,o):f.mathjax.retryAfter(c.Loader.load(o))}t.RequireLoad=M,t.RequireMethods={Require:function(e,t){var a=e.GetArgument(t);if(a.match(/[^_a-zA-Z0-9]/)||\"\"===a)throw new s.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",t);M(e,a)}},t.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new u.CommandMap(\"require\",{require:\"Require\"},t.RequireMethods),t.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(e,t){t.parseOptions.packageData.set(\"require\",{jax:t,required:n(t.options.packages),configured:new Map});var a=t.parseOptions.options.require,r=a.prefix;if(r.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");c.CONFIG.paths[r]||(c.CONFIG.paths[r]=\"[mathjax]/input/tex/extensions\"),a.prefix=\"[\"+r+\"]/\"},options:t.options})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.PackageError=MathJax._.components.package.PackageError,t.Package=MathJax._.components.package.Package},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Loader=MathJax._.components.loader.Loader,t.MathJax=MathJax._.components.loader.MathJax,t.CONFIG=MathJax._.components.loader.CONFIG},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.mathjax=MathJax._.mathjax.mathjax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.APPEND=MathJax._.util.Options.APPEND,t.REMOVE=MathJax._.util.Options.REMOVE,t.Expandable=MathJax._.util.Options.Expandable,t.expandable=MathJax._.util.Options.expandable,t.makeArray=MathJax._.util.Options.makeArray,t.keys=MathJax._.util.Options.keys,t.copy=MathJax._.util.Options.copy,t.insert=MathJax._.util.Options.insert,t.defaultOptions=MathJax._.util.Options.defaultOptions,t.userOptions=MathJax._.util.Options.userOptions,t.selectOptions=MathJax._.util.Options.selectOptions,t.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,t.separateOptions=MathJax._.util.Options.separateOptions},function(e,t,a){\"use strict\";a.r(t);var r=a(0),o=a(1);Object(r.combineWithMathJax)({_:{input:{tex:{require:{RequireConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/tagFormat.js",
    "content": "!function(t){var n={};function o(e){if(n[e])return n[e].exports;var a=n[e]={i:e,l:!1,exports:{}};return t[e].call(a.exports,a,a.exports,o),a.l=!0,a.exports}o.m=t,o.c=n,o.d=function(t,n,e){o.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,n){if(1&n&&(t=o(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(o.r(e),Object.defineProperty(e,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var a in t)o.d(e,a,function(n){return t[n]}.bind(null,a));return e},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,\"a\",n),n},o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.p=\"\",o(o.s=4)}([function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isObject=MathJax._.components.global.isObject,n.combineConfig=MathJax._.components.global.combineConfig,n.combineDefaults=MathJax._.components.global.combineDefaults,n.combineWithMathJax=MathJax._.components.global.combineWithMathJax,n.MathJax=MathJax._.components.global.MathJax},function(t,n,o){\"use strict\";var e,a=this&&this.__extends||(e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var o in n)n.hasOwnProperty(o)&&(t[o]=n[o])})(t,n)},function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)});Object.defineProperty(n,\"__esModule\",{value:!0}),n.TagFormatConfiguration=n.tagformatConfig=void 0;var r=o(2),i=o(3),u=0;function s(t,n){var o=n.parseOptions.options.tags;\"base\"!==o&&t.tags.hasOwnProperty(o)&&i.TagsFactory.add(o,t.tags[o]);var e=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return a(o,t),o.prototype.formatNumber=function(t){return n.parseOptions.options.tagformat.number(t)},o.prototype.formatTag=function(t){return n.parseOptions.options.tagformat.tag(t)},o.prototype.formatId=function(t){return n.parseOptions.options.tagformat.id(t)},o.prototype.formatUrl=function(t,o){return n.parseOptions.options.tagformat.url(t,o)},o}(i.TagsFactory.create(n.parseOptions.options.tags).constructor),r=\"configTags-\"+ ++u;i.TagsFactory.add(r,e),n.parseOptions.options.tags=r}n.tagformatConfig=s,n.TagFormatConfiguration=r.Configuration.create(\"tagformat\",{config:[s,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,n){return n+\"#\"+encodeURIComponent(t)}}}})},function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Label=MathJax._.input.tex.Tags.Label,n.TagInfo=MathJax._.input.tex.Tags.TagInfo,n.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,n.NoTags=MathJax._.input.tex.Tags.NoTags,n.AllTags=MathJax._.input.tex.Tags.AllTags,n.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,n,o){\"use strict\";o.r(n);var e=o(0),a=o(1);Object(e.combineWithMathJax)({_:{input:{tex:{tagformat:{TagFormatConfiguration:a}}}}}),function(t,n,o){var a,r,i,u=MathJax.config.tex;if(u&&u.packages){var s=u.packages,f=s.indexOf(t);f>=0&&(s[f]=n),o&&u[t]&&(Object(e.combineConfig)(u,(a={},r=n,i=u[t],r in a?Object.defineProperty(a,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[r]=i,a)),delete u[t])}}(\"tagFormat\",\"tagformat\",!0)}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/textmacros.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=18)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var n=a(3),r=a(13),o=a(14);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var a,r,o=t.i,s=0;r=t.GetNext();)switch(a=t.i++,r){case\"\\\\\":\")\"===t.GetCS()&&(r=\"\\\\(\");case\"$\":if(0===s&&e===r){var i=t.texParser.configuration,c=new n.default(t.string.substr(o,a-o),t.stack.env,i).mml();return void t.PushMath(c)}break;case\"{\":s++;break;case\"}\":0===s&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),s--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var a=t.stack.env;t.envStack.push(a),t.stack.env=Object.assign({},a)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,a){t.text+=a},Accent:function(t,e,a){var n=t.ParseArg(name),r=t.create(\"token\",\"mo\",{},a);t.addAttributes(r),t.Push(t.create(\"node\",\"mover\",[n,r]))},Emph:function(t,e){var a=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:a}))},SetFont:function(t,e,a){t.saveText(),t.stack.env.mathvariant=a},SetSize:function(t,e,a){t.saveText(),t.stack.env.mathsize=a},CheckAutoload:function(t,e){var a=t.configuration.packageData.get(\"autoload\"),n=t.texParser;e=e.slice(1);var o=n.lookup(\"macro\",e);if(!o||a&&o._func===a.Autoload){if(n.parse(\"macro\",[n,e]),!o)return;r.retryAfter(Promise.resolve())}n.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,a){\"use strict\";var n,r=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,a=e&&t[e],n=0;if(a)return a.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var a=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!a)return t;var n,r,o=a.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}return s},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var c=a(3),u=a(9),l=a(10),p=a(11),m=a(12),h=a(2),f=function(t){function e(e,a,n,r){var o=t.call(this,e,a,n)||this;return o.level=r,o}return r(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=l.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof h.StopItem)return t.prototype.Push.call(this,e);e instanceof h.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof p.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,a,n=this.stack.env;try{for(var r=o([\"mathsize\",\"mathcolor\"]),s=r.next();!s.done;s=r.next()){var i=s.value;n[i]&&!t.attributes.getExplicit(i)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),m.default.setAttribute(t,i,n[i]))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,a,n=this.stack.env;if(t.isToken)try{for(var r=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),s=r.next();!s.done;s=r.next()){var i=s.value;n[i]&&!t.attributes.getExplicit(i)&&m.default.setAttribute(t,i,n[i])}}catch(t){e={error:t}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,a){return new e(this.GetArgument(t),a=Object.assign(Object.assign({},this.stack.env),a),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var a=[],n=2;n<arguments.length;n++)a[n-2]=arguments[n];throw new(u.default.bind.apply(u.default,i([void 0,t,e],a)))},e}(c.default);e.TextParser=f},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var r=a(6),o=a(7),s=a(8),i=a(2),c=a(1),u=a(0);function l(t,e,a,n){var r=t.configuration.packageData.get(\"textmacros\");return t instanceof c.TextParser||(r.texParser=t),[new c.TextParser(e,n?{mathvariant:n}:{},r.parseOptions,a).mml()]}a(15),e.textBase=r.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var a=t.texParser,n=a.lookup(\"macro\",e);n&&n._func!==u.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),a.parse(\"macro\",[n?t:a,e])}},items:(n={},n[i.StartItem.prototype.kind]=i.StartItem,n[i.StopItem.prototype.kind]=i.StopItem,n[i.MmlItem.prototype.kind]=i.MmlItem,n[i.StyleItem.prototype.kind]=i.StyleItem,n)}),r.Configuration.create(\"textmacros\",{config:function(t,a){var n=new r.ParserConfiguration([]);n.append(e.textBase),n.init();var i=new o.default(n,[]);i.options=a.parseOptions.options,n.config(a),s.TagsFactory.addTags(n.tags),i.tags=s.TagsFactory.getDefault(),i.tags.configuration=i,i.packageData=a.parseOptions.packageData,i.packageData.set(\"textmacros\",{parseOptions:i,jax:a,texParser:null}),i.options.internalMath=l},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseOptions.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(16),r=a(17),o=a(0);new n.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new n.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",r.TexConstant.Variant.NORMAL],mit:[\"SetFont\",r.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",r.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",r.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",r.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",r.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",r.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",r.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",r.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",r.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",r.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",r.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",r.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",r.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",r.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",r.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",r.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";a.r(e);var n=a(4),r=a(5),o=a(0),s=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{textmacros:{TextMacrosConfiguration:r,TextMacrosMethods:o,TextParser:s}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/unicode.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=a(2),o=a(3),i=a(4),r=a(5),u=a(6),c=a(7);e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(t,e){var a=t.GetBrackets(e),n=null,i=null;a&&(a.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(n=a.replace(/ /g,\"\").split(/,/),i=t.GetBrackets(e)):i=a);var d=r.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!d.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new o.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var p=parseInt(d.match(/^x/)?\"0\"+d:d);l[p]?i||(i=l[p][2]):l[p]=[800,200,i,p],n&&(l[p][0]=Math.floor(1e3*parseFloat(n[0])),l[p][1]=Math.floor(1e3*parseFloat(n[1])));var s=t.stack.env.font,f={};i?(l[p][2]=f.fontfamily=i.replace(/'/g,\"'\"),s&&(s.match(/bold/)&&(f.fontweight=\"bold\"),s.match(/italic|-mathit/)&&(f.fontstyle=\"italic\"))):s&&(f.mathvariant=s);var M=t.create(\"token\",\"mtext\",f,c.numeric(d));u.default.setProperty(M,\"unicode\",!0),t.Push(M)},new i.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{unicode:{UnicodeConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex/extensions/verb.js",
    "content": "!function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(a,r,function(e){return t[e]}.bind(null,r));return a},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=6)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var a=n(2),r=n(3),o=n(4),i=n(5);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var n=t.GetNext(),a=++t.i;if(\"\"===n)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==n;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(a,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:r.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=a.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,n){\"use strict\";n.r(e);var a=n(0),r=n(1);Object(a.combineWithMathJax)({_:{input:{tex:{verb:{VerbConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex-base.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=38)}([function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a,s=r(2),l=r(33);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var i,o;try{for(var a=n(Object.keys(r)),s=a.next();!s.done;s=a.next()){var l=s.value,u=r[l];\"texClass\"===l?(t.texClass=u,t.setProperty(l,u)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",u),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",u)):\"inferred\"===l||(e.has(l)?t.setProperty(l,u):t.attributes.set(l,u))}}catch(t){i={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(i)throw i.error}}}function i(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function a(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,i;try{for(var o=n(e),a=o.next();!a.done;a=o.next()){var s=a.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,o(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=i,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)i(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=a,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!a(t,\"mo\"))return null;var i=t,o=i.getForms();try{for(var s=n(o),u=s.next();!u.done;u=s.next()){var c=u.value,p=l.MmlMo.OPTABLE[c][i.getText()];if(p)return p}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),i=1,o=n.length;i<o;i+=2){var a=n[i].charAt(0);if(a>=\"0\"&&a<=\"9\")n[i]=r[parseInt(n[i],10)-1],\"number\"==typeof n[i]&&(n[i]=n[i].toString());else if(\"{\"===a){if((a=n[i].substr(1))>=\"0\"&&a<=\"9\")n[i]=r[parseInt(n[i].substr(1,n[i].length-2),10)-1],\"number\"==typeof n[i]&&(n[i]=n[i].toString());else n[i].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[i]=\"%\"+n[i])}null==n[i]&&(n[i]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(5),s=r(17),l=r(1),u=r(2),c=function(){function t(t,e,r){var i,o;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var a,l=e.hasOwnProperty(\"isInner\"),u=e.isInner;if(delete e.isInner,e){a={};try{for(var c=n(Object.keys(e)),p=c.next();!p.done;p=c.next()){var f=p.value;a[f]=e[f]}}catch(t){i={error:t}}finally{try{p&&!p.done&&(o=c.return)&&o.call(c)}finally{if(i)throw i.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,a,!l||u),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var i=n(Array.from(this.configuration.handlers.keys())),o=i.next();!o.done;o=i.next()){var a=o.value;r+=a+\": \"+this.configuration.handlers.get(a)+\"\\n\"}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof u.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var i=n(t),o=i.next();!o.done;o=i.next()){var a=o.value;this.stack.Push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var i=this.getCodePoint();return this.i+=i.length,i},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=i(a.default.matchDimen(e),2),n=r[0],o=r[1];if(n)return n+o}else{e=this.string.slice(this.i);var s=i(a.default.matchDimen(e,!0),3),u=(n=s[0],o=s[1],s[2]);if(n)return this.i+=u,n+o}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var i=this.i,o=this.GetNext();switch(this.i+=o.length,o){case\"\\\\\":o+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&o===e)return this.string.slice(r,i)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=a.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.default=c},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o,a=r(2),s=r(0),l=r(4),u=r(1),c=r(3);r(25),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",o=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\"\\\\s*$\"),f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\" ?\");function h(t,r){void 0===r&&(r=!1);var i=t.match(r?f:p);return i?function(t){var r=n(t,3),i=r[0],o=r[1],a=r[2];if(\"mu\"!==o)return[i,o,a];return[d(e[o](parseFloat(i||\"1\"))).slice(0,-2),\"em\",a]}([i[1].replace(/,/,\".\"),i[4],i[0].length]):[null,null,0]}function d(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",i=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+i+i+i,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,c.entities.nbsp).replace(/\\s+$/,c.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function y(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new u.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function v(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,i=\"\",o=0,a=0,s=!0,l=!1;o<r;){var c=t[o++];switch(c){case\" \":break;case\"{\":s?a++:(l=!1,a>n&&(a=n)),n++;break;case\"}\":n&&n--,(s||l)&&(a--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(c))return[l?\"true\":v(i,a),c,t.slice(o)];s=!1,l=!1}i+=c}if(n)throw new u.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":v(i,a),\"\",t.slice(o)]}t.matchDimen=h,t.dimen2em=function(t){var r=n(h(t),2),i=r[0],o=r[1],a=parseFloat(i||\"1\"),s=e[o];return s?s(a):0},t.Em=d,t.fenced=function(t,e,r,n,i){void 0===i&&(i=\"\");var o,u=t.nodeFactory,c=u.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:a.TEXCLASS.INNER});if(i)o=new l.default(\"\\\\\"+i+\"l\"+e,t.parser.stack.env,t).mml();else{var p=u.create(\"text\",e);o=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:a.TEXCLASS.OPEN},p)}if(s.default.appendChildren(c,[o]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(c,s.default.getChildren(r)):s.default.appendChildren(c,[r]),i)o=new l.default(\"\\\\\"+i+\"r\"+n,t.parser.stack.env,t).mml();else{var f=u.create(\"text\",n);o=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:a.TEXCLASS.CLOSE},f)}return s.default.appendChildren(c,[o]),c},t.fixedFence=function(t,e,r,n){var i=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:a.TEXCLASS.ORD});return e&&s.default.appendChildren(i,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(i,s.default.getChildren(r)):s.default.appendChildren(i,[r]),n&&s.default.appendChildren(i,[m(t,n,\"r\")]),i},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var i=e[r];if(i&&!s.default.isType(i,\"mspace\")&&(!s.default.isType(i,\"TeXAtom\")||s.default.getChildren(i)[0]&&s.default.getChildren(s.default.getChildren(i)[0]).length)){if(s.default.isEmbellished(i)||s.default.isType(i,\"TeXAtom\")&&s.default.getTexClass(i)===a.TEXCLASS.REL){var o=t.nodeFactory.create(\"node\",\"mi\");e.unshift(o)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var i,o,a=n||t.stack.env.font,s=a?{mathvariant:a}:{},c=[],p=0,f=0,h=\"\",d=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;p<e.length;)if(\"$\"===(i=e.charAt(p++)))\"$\"===h&&0===d?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-1),{},t.configuration).mml()]),c.push(o),h=\"\",f=p):\"\"===h&&(f<p-1&&c.push(g(t,e.slice(f,p-1),s)),h=\"$\",f=p);else if(\"{\"===i&&\"\"!==h)d++;else if(\"}\"===i)if(\"}\"===h&&0===d){var m=new l.default(e.slice(f,p),{},t.configuration).mml();o=t.create(\"node\",\"TeXAtom\",[m],s),c.push(o),h=\"\",f=p}else\"\"!==h&&d&&d--;else if(\"\\\\\"===i)if(\"\"===h&&e.substr(p).match(/^(eq)?ref\\s*\\{/)){var y=RegExp[\"$&\"].length;f<p-1&&c.push(g(t,e.slice(f,p-1),s)),h=\"}\",f=p-1,p+=y}else\"(\"===(i=e.charAt(p++))&&\"\"===h?(f<p-2&&c.push(g(t,e.slice(f,p-2),s)),h=\")\",f=p):\")\"===i&&\")\"===h&&0===d?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-2),{},t.configuration).mml()]),c.push(o),h=\"\",f=p):i.match(/[${}\\\\]/)&&\"\"===h&&(p--,e=e.substr(0,p-1)+e.substr(p));if(\"\"!==h)throw new u.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return f<e.length&&c.push(g(t,e.slice(f),s)),null!=r?c=[t.create(\"node\",\"mstyle\",c,{displaystyle:!1,scriptlevel:r})]:c.length>1&&(c=[t.create(\"node\",\"mrow\",c)]),c},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",i=\"\",o=0;o<r.length;){var a=r.charAt(o++);if(\"\\\\\"===a)n+=a+r.charAt(o++);else if(\"#\"===a)if(\"#\"===(a=r.charAt(o++)))n+=a;else{if(!a.match(/[1-9]/)||parseInt(a,10)>e.length)throw new u.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");i=y(t,y(t,i,n),e[parseInt(a,10)-1]),n=\"\"}else n+=a}return y(t,i,n)},t.addArgs=y,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new u.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var o,a;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,i,o,a,s={},l=t;for(;l;)o=(e=n(b(l,[\"=\",\",\"]),3))[0],i=e[1],l=e[2],\"=\"===i?(a=(r=n(b(l,[\",\"]),3))[0],i=r[1],l=r[2],a=\"false\"===a||\"true\"===a?JSON.parse(a):a,s[o]=a):o&&(s[o]=!0);return s}(t);if(e)try{for(var l=i(Object.keys(s)),c=l.next();!c.done;c=l.next()){var p=c.value;if(!e.hasOwnProperty(p)){if(r)throw new u.default(\"InvalidOption\",\"Invalid optional argument: %1\",p);delete s[p]}}}catch(t){o={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}return s}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var a=r(4),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,i,o,a,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===i&&(i=\"\"),void 0===o&&(o=\"\"),void 0===a&&(a=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=i,this.tagFormat=o,this.noTag=a,this.labelId=s};e.TagInfo=l;var u=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),i=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[i],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new a.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(u);e.NoTags=c;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(u);e.AllTags=p,function(t){var e=new Map([[\"none\",c],[\"all\",p]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var i=o(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var o,a=r(26),s=r(27);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(o=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new a.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var i,s;void 0===r&&(r=a.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),u=l.next();!u.done;u=l.next()){var c=u.value,p=o.getMap(c);if(!p)return void this.warn(\"Configuration \"+c+\" not found! Omitted.\");this._configuration.add(p,r)}}catch(t){i={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var o=n(this._configuration),a=o.next();!a.done;a=o.next()){var s=a.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}var l=i(t,2),u=l[0],c=l[1];this._fallback.toArray()[0].item(u,c)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;r.push(a.name)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.contains(t))return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.name===t)return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var u=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var i,o;void 0===r&&(r=a.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),u=s.next();!u.done;u=s.next()){var c=u.value,p=this.get(c);p||(p=new l,this.set(c,p)),p.add(t[c],e[c],r)}}catch(t){i={error:t}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var i=n(this.map.values()),o=i.next();!o.done;o=i.next()){var a=o.value.retrieve(t);if(a)return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(1),u=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,a(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,a([t],r))},t}();e.MmlStack=u;var c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,r)||this;return i.factory=e,i.global={},i._properties={},i.isOpen&&(i._env={}),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=o(this.getErrors(t.kind),2),n=r[0],i=r[1];throw new l.default(n,i,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var i=n.value;delete this.env[i]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(u);e.BaseItem=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var o,a=r(8),s=r(7),l=r(27),u=r(26),c=r(6),p=function(){function t(t,e,r,n,i,o,a,s,l,u,c,p){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===i&&(i={}),void 0===o&&(o={}),void 0===a&&(a={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===u&&(u=null),void 0===c&&(c=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=i,this.options=o,this.nodes=a,this.preprocessors=s,this.postprocessors=l,this.initMethod=u,this.configMethod=c,this.priority=p,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var i=r.priority||u.PrioritizedList.DEFAULTPRIORITY,o=r.init?this.makeProcessor(r.init,i):null,a=r.config?this.makeProcessor(r.config,i):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,i)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,i)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,o,a,i)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return o.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=p,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(o=e.ConfigurationHandler||(e.ConfigurationHandler={}));var f=function(){function t(t){var e,r,i,o;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new u.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var a=n(t.slice().reverse()),c=a.next();!c.done;c=a.next()){var p=c.value;this.addPackage(p)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}try{for(var f=n(this.configurations),h=f.next();!h.done;h=f.next()){var d=h.value,m=d.item,g=d.priority;this.append(m,g)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var i=n(this.configurations),o=i.next();!o.done;o=i.next()){var a=o.value;this.addFilters(t,a.item)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=o.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var i,o;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),u=l.next();!u.done;u=l.next()){var p=u.value;s.itemFactory.setNodeClass(p,t.items[p])}}catch(t){i={error:t}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}c.TagsFactory.addTags(t.tags),a.defaultOptions(s.options,t.options),a.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),a.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,o,a,s;try{for(var l=n(e.preprocessors),u=l.next();!u.done;u=l.next()){var c=i(u.value,2),p=c[0],f=c[1];t.preFilters.add(p,f)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}try{for(var h=n(e.postprocessors),d=h.next();!d.done;d=h.next()){var m=i(d.value,2),g=m[0];f=m[1];t.postFilters.add(g,f)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(s=h.return)&&s.call(h)}finally{if(a)throw a.error}}},t}();e.ParserConfiguration=f},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(22),u=r(7),c=function(){function t(t,e){this._name=t,this._parser=e,u.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.parserFor(n),a=this.lookup(n);return i&&a?i(r,a)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=c;var p=function(t){function e(e,r,n){var i=t.call(this,e,r)||this;return i._regExp=n,i}return i(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(c);e.RegExpMap=p;var f=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return i(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(c);e.AbstractParseMap=f;var h=function(t){function e(e,r,n){var i,s,u=t.call(this,e,r)||this;try{for(var c=a(Object.keys(n)),p=c.next();!p.done;p=c.next()){var f=p.value,h=n[f],d=o(\"string\"==typeof h?[h,null]:h,2),m=d[0],g=d[1],y=new l.Symbol(f,m,g);u.add(f,y)}}catch(t){i={error:t}}finally{try{p&&!p.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}return u}return i(e,t),e}(f);e.CharacterMap=h;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.parse=function(e){var r=o(e,2),n=r[0],i=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+i])},e}(h);e.DelimiterMap=d;var m=function(t){function e(e,r,n){var i,s,u=t.call(this,e,null)||this;try{for(var c=a(Object.keys(r)),p=c.next();!p.done;p=c.next()){var f=p.value,h=r[f],d=o(\"string\"==typeof h?[h]:h),m=d[0],g=d.slice(1),y=new l.Macro(f,n[m],g);u.add(f,y)}}catch(t){i={error:t}}finally{try{p&&!p.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}return u}return i(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);return i&&a?a.apply(void 0,s([r,i.symbol],i.args))||!0:null},e}(f);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);if(!i||!a)return null;if(!a)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var u=a.apply(void 0,s([r,\"\\\\\"+i.symbol],i.args));return r.currentCS=l,u||!0},e}(m);e.CommandMap=g;var y=function(t){function e(e,r,n,i){var o=t.call(this,e,n,i)||this;return o.parser=r,o}return i(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);return i&&a?(this.parser(r,i.symbol,a,i.args),!0):null},e}(m);e.EnvironmentMap=y},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(7),l=r(3),u=r(2),c=r(1),p=r(5),f=r(0),h=r(10),d=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.StartItem=d;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(h.BaseItem);e.OpenItem=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.CloseItem=y;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=o(this.Peek(2),2),r=e[0],n=e[1];return!f.default.isType(r,\"msubsup\")||f.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(f.default.setChild(r,r.sup,n),[[r,t],!0])},e}(h.BaseItem);e.PrimeItem=v;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return h.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)f.default.setChild(r,2,this.getProperty(\"primes\"));else{f.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var i=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=i}return f.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&f.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var o=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(c.default.bind.apply(c.default,a([void 0,o[0],o[1]],o.splice(2))))}return null},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(h.BaseItem);e.SubsupItem=b;var T=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new c.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&f.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(f.default.setProperty(r,\"withDelims\",!0),r=p.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(h.BaseItem);e.OverItem=T;var P=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",p.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(h.BaseItem);e.LeftItem=P;var S=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.RightItem=S;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new c.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?h.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.BeginItem=x;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.EndItem=A;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(h.BaseItem);e.StyleItem=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new c.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.PositionItem=O;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.CellItem=C;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.MmlItem=E;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return h.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(f.default.isType(n,\"mstyle\")&&n.childNodes.length&&f.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||f.default.isType(n,\"mspace\"))return[[r,e],!0];f.default.isEmbellished(n)&&(n=f.default.getCoreMO(n));var i=f.default.getForm(n);if(null!=i&&[0,0,1,1,0,1,1,0,0,0][i[2]])return[[r,e],!0]}var o=this.create(\"token\",\"mo\",{texClass:u.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,o,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(h.BaseItem);e.FnItem=w;var k=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return h.BaseItem.success;if(t.isKind(\"mml\")&&(f.default.isType(t.First,\"mo\")||f.default.isType(t.First,\"mi\")||f.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=f.default.getText(e)).length&&!f.default.getProperty(e,\"movesupsub\")&&1===f.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),f.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),f.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var i=this.create(\"node\",\"mtext\",[],{},n),o=this.create(\"node\",\"mpadded\",[i],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[o],{texClass:u.TEXCLASS.REL}),t],!0]},e}(h.BaseItem);e.NotItem=k;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return h.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&f.default.isEmbellished(r)){var n=f.default.getTexClass(f.default.getCoreMO(r));n!==u.TEXCLASS.BIN&&n!==u.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(h.BaseItem);e.DotsItem=I;var _=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),h.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),h.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?f.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||f.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=p.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var i=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[i],!0];throw new c.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[i,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&f.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&f.default.setAttribute(t,\"columnalign\",f.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(h.BaseItem);e.ArrayItem=_;var L=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,e)||this;return i.factory.configuration.tags.start(r[0],r[2],r[1]),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&p.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(_);e.EqnArrayItem=L;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,e)||this;return i.factory.configuration.tags.start(\"equation\",!0,r[0]),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.EquationItem=N},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(29),l=r(8),u=r(15),c=r(16),p=r(0),f=r(4),h=r(1),d=r(18),m=r(6),g=r(11);r(21);var y=function(t){function e(r){void 0===r&&(r={});var n=this,i=a(l.separateOptions(r,e.OPTIONS,u.FindTeX.OPTIONS),3),o=i[0],s=i[1],p=i[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new u.FindTeX(p);var f=n.options.packages,h=n.configuration=e.configure(f),g=n._parseOptions=new d.default(h,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,o),h.config(n),e.tags(g,h),n.postFilters.add(c.default.cleanSubSup,-6),n.postFilters.add(c.default.setInherited,-5),n.postFilters.add(c.default.moveLimits,-4),n.postFilters.add(c.default.cleanStretchy,-3),n.postFilters.add(c.default.cleanAttributes,-2),n.postFilters.add(c.default.combineRelations,-1),n}return i(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new f.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof h.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&p.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=o(o({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=y},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var a=r(30),s=r(31),l=r(32),u=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return i(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],i=[];this.end={},this.env=this.sub=0;var o=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=o,o++),e.processEscapes&&i.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&i.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),i.length&&(n.push(\"(\"+i.join(\"|\")+\")\"),this.sub=o),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=o(e,2),i=n[0],a=n[1];t.push(s.quotePattern(i)),this.end[i]=[a,r,this.endPattern(a)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var i,a=o(n,3),s=a[0],u=a[1],c=a[2],p=c.lastIndex=r.index+r[0].length,f=0;i=c.exec(t);){if((i[1]||i[0])===s&&0===f)return l.protoItem(r[0],t.substr(p,i.index-p),i[0],e,r.index,i.index+i[0].length,u);\"{\"===i[0]?f++:\"}\"===i[0]&&f&&f--}return null},e.prototype.findMathInString=function(t,e,r){var n,i;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var o=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(i=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,o)]))&&(i.math=i.open+i.math+i.close,i.open=i.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var a=n[this.sub];o=n.index+n[this.sub].length;i=2===a.length?l.protoItem(\"\",a.substr(1),\"\",e,n.index,o):l.protoItem(\"\",a,\"\",e,n.index,o,!1)}else i=this.findEnd(r,e,n,this.end[n[0]]);i&&(t.push(i),this.start.lastIndex=i.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(a.AbstractFindMath);e.FindTeX=u},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(2),a=r(0);!function(t){t.cleanStretchy=function(t){var e,r,i=t.data;try{for(var o=n(i.getList(\"fixStretchy\")),s=o.next();!s.done;s=o.next()){var l=s.value;if(a.default.getProperty(l,\"fixStretchy\")){var u=a.default.getForm(l);u&&u[3]&&u[3].stretchy&&a.default.setAttribute(l,\"stretchy\",!1);var c=l.parent;if(!(a.default.getTexClass(l)||u&&u[2])){var p=i.nodeFactory.create(\"node\",\"TeXAtom\",[l]);c.replaceChild(p,l),p.inheritAttributesFrom(l)}a.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,i,o=t.attributes;if(o)try{for(var a=n(o.getExplicitNames()),s=a.next();!s.done;s=a.next()){var l=s.value;o.attributes[l]===t.attributes.getInherited(l)&&delete o.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var i,s;try{for(var l=n(t.data.getList(\"mo\")),u=l.next();!u.done;u=l.next()){var c=u.value;if(!c.getProperty(\"relationsCombined\")&&c.parent&&(!c.parent||a.default.isType(c.parent,\"mrow\"))&&a.default.getTexClass(c)===o.TEXCLASS.REL){for(var p=c.parent,f=void 0,h=p.childNodes,d=h.indexOf(c)+1,m=a.default.getProperty(c,\"variantForm\");d<h.length&&(f=h[d])&&a.default.isType(f,\"mo\")&&a.default.getTexClass(f)===o.TEXCLASS.REL;){if(m!==a.default.getProperty(f,\"variantForm\")||!r(c,f)){null==c.attributes.getExplicit(\"rspace\")&&a.default.setAttribute(c,\"rspace\",\"0pt\"),null==f.attributes.getExplicit(\"lspace\")&&a.default.setAttribute(f,\"lspace\",\"0pt\");break}a.default.appendChildren(c,a.default.getChildren(f)),e([\"stretchy\",\"rspace\"],c,f),a.default.setProperties(c,f.getAllProperties()),h.splice(d,1),f.parent=null,f.setProperty(\"relationsCombined\",!0)}c.attributes.setInherited(\"form\",c.getForms()[0])}}}catch(t){i={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}};var e=function(t,e,r){var n=e.attributes,i=r.attributes;t.forEach((function(t){var e=i.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,i,o=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},a=t.attributes,s=e.attributes,l=o(a,\"lspace\"),u=o(s,\"rspace\");if(l.length!==u.length)return!1;try{for(var c=n(l),p=c.next();!p.done;p=c.next()){var f=p.value;if(a.getExplicit(f)!==s.getExplicit(f))return!1}}catch(t){r={error:t}}finally{try{p&&!p.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}return!0},i=function(t,e,r){var i,o;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var u=l.value,c=u.childNodes;if(!c[u[e]]||!c[u[r]]){var p=u.parent,f=c[u[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[c[u.base],c[u[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[c[u.base],c[u[r]]]);a.default.copyAttributes(u,f),p?p.replaceChild(f,u):t.root=f}}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(i(e,\"sub\",\"sup\"),i(e,\"under\",\"over\"))};var s=function(t,e,r){var i,o;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var u=l.value;if(!u.attributes.get(\"displaystyle\")){var c=u.childNodes[u.base],p=c.coreMO();if(c.getProperty(\"movablelimits\")&&!p.attributes.getExplicit(\"movablelimits\")){var f=t.nodeFactory.create(\"node\",r,u.childNodes);a.default.copyAttributes(u,f),u.parent?u.parent.replaceChild(f,u):t.root=f}}}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(0),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),u=l.next();!u.done;u=l.next()){var c=u.value;if(c){var p=a.default.isNode(c)?this._factory.create(\"mml\",c):c;p.global=this.global;var f=i(this.stack.length?this.Top().checkItem(p):[null,!0],2),h=f[0],d=f[1];d&&(h?(this.Pop(),this.Push.apply(this,o(h))):(this.stack.push(p),p.env?(p.copyEnv&&Object.assign(p.env,this.env),this.env=p.env):p.env=this.env))}}}catch(e){t={error:e}}finally{try{u&&!u.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(19),s=r(20),l=r(8),u=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new a.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,i([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],i=[];try{for(var a=o(n),s=a.next();!s.done;s=a.next()){var l=s.value;this.inTree(l)&&i.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return this.nodeLists[t]=i,i},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=u},function(t,e,r){\"use strict\";var n,i,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(10),s=r(34),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(a.BaseItem),u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return o(e,t),e.DefaultStackItems=((i={})[l.prototype.kind]=l,i),e}(s.AbstractFactory);e.default=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var o=r(0),a=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,i){void 0===r&&(r=[]),void 0===n&&(n={});var a=t.mmlFactory.create(e),s=a.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?a.setChildren(o.default.getChildren(r[0])):a.setChildren(r);else{for(var l=[],u=0,c=void 0;c=r[u];u++)if(c.isInferred){var p=t.mmlFactory.create(\"mrow\",{},o.default.getChildren(c));o.default.copyAttributes(c,p),l.push(p)}else l.push(c);a.setChildren(l)}return i&&a.appendChild(i),o.default.setProperties(a,n),a},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var i=t.create(\"text\",n);return t.create(\"node\",e,[],r,i)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,o=n.apply(void 0,i([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],o),o},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=a},function(t,e,r){\"use strict\";var n,i,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var a=r(11),s=r(7),l=r(1),u=r(0),c=r(12),p=r(13),f=r(6);function h(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),i=t.create(\"token\",\"mo\",r,n?n.char:e);u.default.setProperty(i,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",i),t.Push(i)}r(35),new c.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=h;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(f.AbstractTags);e.BaseTags=d,e.BaseConfiguration=a.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:h,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(i={},i[p.StartItem.prototype.kind]=p.StartItem,i[p.StopItem.prototype.kind]=p.StopItem,i[p.OpenItem.prototype.kind]=p.OpenItem,i[p.CloseItem.prototype.kind]=p.CloseItem,i[p.PrimeItem.prototype.kind]=p.PrimeItem,i[p.SubsupItem.prototype.kind]=p.SubsupItem,i[p.OverItem.prototype.kind]=p.OverItem,i[p.LeftItem.prototype.kind]=p.LeftItem,i[p.RightItem.prototype.kind]=p.RightItem,i[p.BeginItem.prototype.kind]=p.BeginItem,i[p.EndItem.prototype.kind]=p.EndItem,i[p.StyleItem.prototype.kind]=p.StyleItem,i[p.PositionItem.prototype.kind]=p.PositionItem,i[p.CellItem.prototype.kind]=p.CellItem,i[p.MmlItem.prototype.kind]=p.MmlItem,i[p.FnItem.prototype.kind]=p.FnItem,i[p.NotItem.prototype.kind]=p.NotItem,i[p.DotsItem.prototype.kind]=p.DotsItem,i[p.ArrayItem.prototype.kind]=p.ArrayItem,i[p.EqnArrayItem.prototype.kind]=p.EqnArrayItem,i[p.EquationItem.prototype.kind]=p.EquationItem,i),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:d}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var i=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=i},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(13),o=r(0),a=r(1),s=r(4),l=r(9),u=r(5),c=r(2),p=r(6),f=r(3);r(25),r(36),r(37);var h={},d={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var i=new s.default(e,r,t.configuration),o=i.mml(),a=i.stack.global;if(a.leftRoot||a.upRoot){var l={};a.leftRoot&&(l.width=a.leftRoot),a.upRoot&&(l.voffset=a.upRoot,l.height=a.upRoot),o=t.create(\"node\",\"mpadded\",[o],l)}return r.inRoot=n,o}h.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},h.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},h.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},f.entities.nbsp))},h.Space=function(t,e){},h.Superscript=function(t,e){var r,i,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],i=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=o.default.getProperty(s,\"movesupsub\"),c=o.default.isType(s,\"msubsup\")?s.sup:s.over;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sup)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.over)&&!o.default.getProperty(s,\"subsupOK\"))throw new a.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(u?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.over):c=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:i,movesupsub:u}))},h.Subscript=function(t,e){var r,i,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],i=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=o.default.getProperty(s,\"movesupsub\"),c=o.default.isType(s,\"msubsup\")?s.sub:s.under;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sub)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.under)&&!o.default.getProperty(s,\"subsupOK\"))throw new a.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(u?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.under):c=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:i,movesupsub:u}))},h.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),o.default.isType(r,\"msubsup\")&&!o.default.isType(r,\"msup\")&&o.default.getChildAt(r,r.sup))throw new a.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=f.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===f.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var i=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,i))},h.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},h.Hash=function(t,e){throw new a.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},h.SetFont=function(t,e,r){t.stack.env.font=r},h.SetStyle=function(t,e,r,n,i){t.stack.env.style=r,t.stack.env.level=i,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:i}))},h.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},h.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),i=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(i)},h.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},h.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new a.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.OPEN}),t.Push(n)},h.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:c.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},h.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:c.TEXCLASS.OP},r);t.Push(n)},h.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||o.default.getTexClass(o.default.getCoreMO(n))!==c.TEXCLASS.OP&&null==o.default.getProperty(n,\"movesupsub\"))throw new a.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var i,s=t.stack.Top();o.default.isType(n,\"munderover\")&&!r?(i=t.create(\"node\",\"msubsup\"),o.default.copyChildren(n,i),n=s.Last=i):o.default.isType(n,\"msubsup\")&&r&&(i=t.create(\"node\",\"munderover\"),o.default.copyChildren(n,i),n=s.Last=i),o.default.setProperty(n,\"movesupsub\",!!r),o.default.setProperties(o.default.getCoreMO(n),{movablelimits:!1}),(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1})},h.Over=function(t,e,r,n){var i=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(i.setProperty(\"open\",r),i.setProperty(\"close\",n)):e.match(/withdelims$/)&&(i.setProperty(\"open\",t.GetDelimiter(e)),i.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?i.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&i.setProperty(\"thickness\",0),t.Push(i)},h.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),i=t.create(\"node\",\"mfrac\",[r,n]);t.Push(i)},h.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var i=new s.default(n,t.stack.env,t.configuration).mml();i=r?t.create(\"node\",\"mroot\",[i,m(t,r)]):t.create(\"node\",\"msqrt\",[i]),t.Push(i)},h.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),i=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(i)},h.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new a.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new a.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new a.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},h.Accent=function(t,e,r,n){var i=t.ParseArg(e),a=u.default.getFontDef(t);a.accent=!0;var s=o.default.createEntity(r),l=t.create(\"token\",\"mo\",a,s);o.default.setAttribute(l,\"stretchy\",!!n);var c=o.default.isEmbellished(i)?o.default.getCoreMO(i):i;o.default.isType(c,\"mo\")&&o.default.setProperties(c,{movablelimits:!1});var p=t.create(\"node\",\"munderover\");o.default.setChild(p,0,i),o.default.setChild(p,1,null),o.default.setChild(p,2,l);var f=t.create(\"node\",\"TeXAtom\",[p]);t.Push(f)},h.UnderOver=function(t,e,r,n,i){var a,s=t.ParseArg(e),l=o.default.getForm(s);(l&&l[3]&&l[3].movablelimits||o.default.getProperty(s,\"movablelimits\"))&&o.default.setProperties(s,{movablelimits:!1}),o.default.isType(s,\"munderover\")&&o.default.isEmbellished(s)&&(o.default.setProperties(o.default.getCoreMO(s),{lspace:0,rspace:0}),a=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[a,s]));var u=t.create(\"node\",\"munderover\",[s]),p=o.default.createEntity(r);a=t.create(\"token\",\"mo\",{stretchy:!0,accent:!i},p),o.default.setChild(u,\"o\"===e.charAt(1)?u.over:u.under,a);var f=u;n&&(f=t.create(\"node\",\"TeXAtom\",[u],{texClass:c.TEXCLASS.OP,movesupsub:!0})),o.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},h.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var i=t.create(\"node\",\"mover\",[n,r]);t.Push(i)},h.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.isType(n,\"mo\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var i=t.create(\"node\",\"munder\",[n,r]);t.Push(i)},h.TeXAtom=function(t,e,r){var n,i,o,a={texClass:r};if(r===c.TEXCLASS.OP){a.movesupsub=a.movablelimits=!0;var u=t.GetArgument(e),p=u.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);p?(a.mathvariant=l.TexConstant.Variant.NORMAL,i=t.create(\"token\",\"mi\",a,p[1])):(o=new s.default(u,t.stack.env,t.configuration).mml(),i=t.create(\"node\",\"TeXAtom\",[o],a)),n=t.itemFactory.create(\"fn\",i)}else o=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[o],a);t.Push(n)},h.MmlToken=function(t,e){var r,n=t.GetArgument(e),i=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new a.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==i;){var c=i.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!c)throw new a.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",i);if(!r.attributes.hasDefault(c[1])&&!d[c[1]])throw new a.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",c[1],n);var p=u.default.MmlFilterAttribute(t,c[1],c[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));p&&(\"true\"===p.toLowerCase()?p=!0:\"false\"===p.toLowerCase()&&(p=!1),l[c[1]]=p),i=i.substr(c[0].length)}var f=t.create(\"text\",s);r.appendChild(f),o.default.setProperties(r,l),t.Push(r)},h.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},h.Phantom=function(t,e,r,n){var i=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(i=t.create(\"node\",\"mpadded\",[i]),n&&(o.default.setAttribute(i,\"height\",0),o.default.setAttribute(i,\"depth\",0)),r&&o.default.setAttribute(i,\"width\",0));var a=t.create(\"node\",\"TeXAtom\",[i]);t.Push(a)},h.Smash=function(t,e){var r=u.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":o.default.setAttribute(n,\"depth\",0);break;case\"t\":o.default.setAttribute(n,\"height\",0);break;default:o.default.setAttribute(n,\"height\",0),o.default.setAttribute(n,\"depth\",0)}var i=t.create(\"node\",\"TeXAtom\",[n]);t.Push(i)},h.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&o.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},h.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},h.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var i=r;r=n,n=i}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},h.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},h.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var i=t.create(\"node\",\"mspace\",[],n);t.Push(i)},h.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),i=t.GetDimen(e),a=t.create(\"node\",\"mspace\",[],{width:n,height:i,mathbackground:t.stack.env.color||\"black\"});r&&(a=t.create(\"node\",\"mpadded\",[a],{voffset:r}),r.match(/^\\-/)?(o.default.setAttribute(a,\"height\",r),o.default.setAttribute(a,\"depth\",\"+\"+r.substr(1))):o.default.setAttribute(a,\"height\",\"+\"+r)),t.Push(a)},h.MakeBig=function(t,e,r,n){var i=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",o=t.GetDelimiter(e,!0),a=t.create(\"token\",\"mo\",{minsize:i,maxsize:i,fence:!0,stretchy:!0,symmetric:!0},o),s=t.create(\"node\",\"TeXAtom\",[a],{texClass:r});t.Push(s)},h.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),i=t.create(\"node\",\"munderover\");o.default.setChild(i,0,n),o.default.setChild(i,1,null),o.default.setChild(i,2,r);var a=t.create(\"node\",\"TeXAtom\",[i],{texClass:c.TEXCLASS.REL});t.Push(a)},h.HBox=function(t,e,r,n){t.PushAll(u.default.internalMath(t,t.GetArgument(e),r,n))},h.FBox=function(t,e){var r=u.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},h.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},h.Dots=function(t,e){var r=o.default.createEntity(\"2026\"),n=o.default.createEntity(\"22EF\"),i=t.create(\"token\",\"mo\",{stretchy:!1},r),a=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:i,cdots:a}))},h.Matrix=function(t,e,r,n,i,o,s,l,u,c){var p=t.GetNext();if(\"\"===p)throw new a.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===p?t.i++:(t.string=p+\"}\"+t.string.slice(t.i+1),t.i=0);var f=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);f.arraydef={rowspacing:s||\"4pt\",columnspacing:o||\"1em\"},u&&f.setProperty(\"isCases\",!0),c&&(f.setProperty(\"isNumbered\",!0),f.arraydef.side=c),(r||n)&&(f.setProperty(\"open\",r),f.setProperty(\"close\",n)),\"D\"===l&&(f.arraydef.displaystyle=!0),null!=i&&(f.arraydef.columnalign=i),t.Push(f)},h.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,i=-1,o=t.i,s=r.length;o<s;){var l=r.charAt(o);if(\"{\"===l)n++,o++;else if(\"}\"===l)0===n?s=0:(0===--n&&i<0&&(i=o-t.i),o++);else{if(\"&\"===l&&0===n)throw new a.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(o).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:o+=2:o++}}var c=r.substr(t.i,o-t.i);if(!c.match(/^\\s*\\\\text[^a-zA-Z]/)||i!==c.replace(/\\s+$/,\"\").length-1){var p=u.default.internalMath(t,c,0);t.PushAll(p),t.i=o}}},h.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},h.CrLaTeX=function(t,e,r){var o;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),c=n(u.default.matchDimen(s),2),p=c[0],f=c[1];if(s&&!p)throw new a.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);o=p+f}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var h,d=t.stack.Top();if(d instanceof i.ArrayItem){if(o&&d.arraydef.rowspacing){var m=d.arraydef.rowspacing.split(/ /);if(!d.getProperty(\"rowspacing\")){var g=u.default.dimen2em(m[0]);d.setProperty(\"rowspacing\",g)}for(var y=d.getProperty(\"rowspacing\");m.length<d.table.length;)m.push(u.default.Em(y));m[d.table.length-1]=u.default.Em(Math.max(0,y+u.default.dimen2em(o))),d.arraydef.rowspacing=m.join(\" \")}}else o&&(h=t.create(\"node\",\"mspace\",[],{depth:o}),t.Push(h)),h=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(h)},h.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof i.ArrayItem)||n.Size())throw new a.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var o=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];o.length<n.table.length;)o.push(\"none\");o[n.table.length-1]=r,n.arraydef.rowlines=o.join(\" \")}else n.frame.push(\"top\")},h.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof i.ArrayItem))throw new a.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},h.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new a.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var i=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(i)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},h.Array=function(t,e,r,n,i,o,a,s,l){i||(i=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var u=(\"c\"+i).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");i=(i=i.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var c=t.itemFactory.create(\"array\");return c.arraydef={columnalign:i,columnspacing:o||\"1em\",rowspacing:a||\"4pt\"},u.match(/[|:]/)&&(u.charAt(0).match(/[|:]/)&&(c.frame.push(\"left\"),c.dashed=\":\"===u.charAt(0)),u.charAt(u.length-1).match(/[|:]/)&&c.frame.push(\"right\"),u=u.substr(1,u.length-2),c.arraydef.columnlines=u.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&c.setProperty(\"open\",t.convertDelimiter(r)),n&&c.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?c.arraydef.displaystyle=!0:s&&(c.arraydef.displaystyle=!1),\"S\"===s&&(c.arraydef.scriptlevel=1),l&&(c.arraydef.useHeight=!1),t.Push(e),c},h.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=h.Array(t,e);return u.default.setArrayAlign(n,r)},h.Equation=function(t,e,r){return t.Push(e),u.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},h.EqnArray=function(t,e,r,n,i,o){t.Push(e),n&&u.default.checkEqnEnv(t),i=(i=i.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var a=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return a.arraydef={displaystyle:!0,columnalign:i,columnspacing:o||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},h.HandleNoTag=function(t,e){t.tags.notag()},h.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new a.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new a.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new p.Label}},h.HandleRef=function(t,e,r){var n=t.GetArgument(e),i=t.tags.allLabels[n]||t.tags.labels[n];i||(t.tags.refUpdate||(t.tags.redo=!0),i=new p.Label);var o=i.tag;r&&(o=t.tags.formatTag(o));var a=t.create(\"node\",\"mrow\",u.default.internalMath(t,o),{href:t.tags.formatUrl(i.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(a)},h.Macro=function(t,e,r,n,i){if(n){var o=[];if(null!=i){var s=t.GetBrackets(e);o.push(null==s?i:s)}for(var l=o.length;l<n;l++)o.push(t.GetArgument(e));r=u.default.substituteArgs(t,o,r)}if(t.string=u.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},h.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),i=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,i,o]))},e.default=h},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,a=r(0),s=r(9),l=r(5);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,i=t.string.slice(t.i-1).match(n),o=l.default.getFontDef(t);i?(r=t.create(\"token\",\"mn\",o,i[0].replace(/[{}]/g,\"\")),t.i+=i[0].length-1):r=t.create(\"token\",\"mo\",o,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);a.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var o=n[0],a=t.itemFactory.create(\"begin\").setProperties({name:e,end:o});a=r.apply(void 0,i([t,a],n.slice(1))),t.Push(a)}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(12),i=r(9),o=r(23),a=r(24),s=r(2);new n.RegExpMap(\"letter\",a.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",a.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",a.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},o.default),new n.CharacterMap(\"mathchar0mi\",a.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:i.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:i.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:i.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:i.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:i.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:i.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:i.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:i.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:i.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:i.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:i.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:i.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:i.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:i.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:i.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:i.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:i.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:i.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:i.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:i.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:i.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:i.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:i.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:i.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:i.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:i.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",a.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",a.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",a.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",i.TexConstant.Variant.NORMAL],mit:[\"SetFont\",i.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",i.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",i.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",i.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",i.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",i.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",i.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",i.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",i.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",i.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",i.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",i.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",i.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",i.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",i.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,i.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,i.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,i.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,i.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,i.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},o.default),new n.EnvironmentMap(\"environment\",a.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"]},o.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";r.r(e);var n=r(28),i=r(14),o=r(11),a=r(16),s=r(15),l=r(7),u=r(20),c=r(0),p=r(24),f=r(18),h=r(5),d=r(17),m=r(10),g=r(19),y=r(22),v=r(12),b=r(6),T=r(9),P=r(1),S=r(4),x=r(21),A=r(13),M=r(23);Object(n.combineWithMathJax)({_:{input:{tex_ts:i,tex:{Configuration:o,FilterUtil:a,FindTeX:s,MapHandler:l,NodeFactory:u,NodeUtil:c,ParseMethods:p,ParseOptions:f,ParseUtil:h,Stack:d,StackItem:m,StackItemFactory:g,Symbol:y,SymbolMap:v,Tags:b,TexConstants:T,TexError:P,TexParser:S,base:{BaseConfiguration:x,BaseItems:A,BaseMethods:M}}}}});var O=r(8);!function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",i.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(O.insert)(MathJax.config.tex,{packages:e})}}([\"base\"])}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex-full.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(n,a,function(e){return t[e]}.bind(null,a));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=95)}([function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var o,i=r(10),s=r(16),l=r(73),c=r(72),u=r(9),p=function(){function t(t,e,r,n,a,o,i,s,l,c,u,p){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===a&&(a={}),void 0===o&&(o={}),void 0===i&&(i={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===c&&(c=null),void 0===u&&(u=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=a,this.options=o,this.nodes=i,this.preprocessors=s,this.postprocessors=l,this.initMethod=c,this.configMethod=u,this.priority=p,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var a=r.priority||c.PrioritizedList.DEFAULTPRIORITY,o=r.init?this.makeProcessor(r.init,a):null,i=r.config?this.makeProcessor(r.config,a):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,a)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,a)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,o,i,a)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return o.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=p,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(o=e.ConfigurationHandler||(e.ConfigurationHandler={}));var f=function(){function t(t){var e,r,a,o;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new c.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var i=n(t.slice().reverse()),u=i.next();!u.done;u=i.next()){var p=u.value;this.addPackage(p)}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}try{for(var f=n(this.configurations),d=f.next();!d.done;d=f.next()){var h=d.value,m=h.item,g=h.priority;this.append(m,g)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(o=f.return)&&o.call(f)}finally{if(a)throw a.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var a=n(this.configurations),o=a.next();!o.done;o=a.next()){var i=o.value;this.addFilters(t,i.item)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=o.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var a,o;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),c=l.next();!c.done;c=l.next()){var p=c.value;s.itemFactory.setNodeClass(p,t.items[p])}}catch(t){a={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}u.TagsFactory.addTags(t.tags),i.defaultOptions(s.options,t.options),i.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),i.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,o,i,s;try{for(var l=n(e.preprocessors),c=l.next();!c.done;c=l.next()){var u=a(c.value,2),p=u[0],f=u[1];t.preFilters.add(p,f)}}catch(t){r={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}try{for(var d=n(e.postprocessors),h=d.next();!h.done;h=d.next()){var m=a(h.value,2),g=m[0];f=m[1];t.postFilters.add(g,f)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(s=d.return)&&s.call(d)}finally{if(i)throw i.error}}},t}();e.ParserConfiguration=f},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(14),c=r(16),u=function(){function t(t,e){this._name=t,this._parser=e,c.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.parserFor(n),i=this.lookup(n);return a&&i?a(r,i)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=u;var p=function(t){function e(e,r,n){var a=t.call(this,e,r)||this;return a._regExp=n,a}return a(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(u);e.RegExpMap=p;var f=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return a(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(u);e.AbstractParseMap=f;var d=function(t){function e(e,r,n){var a,s,c=t.call(this,e,r)||this;try{for(var u=i(Object.keys(n)),p=u.next();!p.done;p=u.next()){var f=p.value,d=n[f],h=o(\"string\"==typeof d?[d,null]:d,2),m=h[0],g=h[1],v=new l.Symbol(f,m,g);c.add(f,v)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}return c}return a(e,t),e}(f);e.CharacterMap=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(e){var r=o(e,2),n=r[0],a=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+a])},e}(d);e.DelimiterMap=h;var m=function(t){function e(e,r,n){var a,s,c=t.call(this,e,null)||this;try{for(var u=i(Object.keys(r)),p=u.next();!p.done;p=u.next()){var f=p.value,d=r[f],h=o(\"string\"==typeof d?[d]:d),m=h[0],g=h.slice(1),v=new l.Macro(f,n[m],g);c.add(f,v)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}return c}return a(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);return a&&i?i.apply(void 0,s([r,a.symbol],a.args))||!0:null},e}(f);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);if(!a||!i)return null;if(!i)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var c=i.apply(void 0,s([r,\"\\\\\"+a.symbol],a.args));return r.currentCS=l,c||!0},e}(m);e.CommandMap=g;var v=function(t){function e(e,r,n,a){var o=t.call(this,e,n,a)||this;return o.parser=r,o}return a(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);return a&&i?(this.parser(r,a.symbol,i,a.args),!0):null},e}(m);e.EnvironmentMap=v},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),a=1,o=n.length;a<o;a+=2){var i=n[a].charAt(0);if(i>=\"0\"&&i<=\"9\")n[a]=r[parseInt(n[a],10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else if(\"{\"===i){if((i=n[a].substr(1))>=\"0\"&&i<=\"9\")n[a]=r[parseInt(n[a].substr(1,n[a].length-2),10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else n[a].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[a]=\"%\"+n[a])}null==n[a]&&(n[a]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i,s=r(5),l=r(80);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var a,o;try{for(var i=n(Object.keys(r)),s=i.next();!s.done;s=i.next()){var l=s.value,c=r[l];\"texClass\"===l?(t.texClass=c,t.setProperty(l,c)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",c),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",c)):\"inferred\"===l||(e.has(l)?t.setProperty(l,c):t.attributes.set(l,c))}}catch(t){a={error:t}}finally{try{s&&!s.done&&(o=i.return)&&o.call(i)}finally{if(a)throw a.error}}}function a(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function i(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,a;try{for(var o=n(e),i=o.next();!i.done;i=o.next()){var s=i.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{i&&!i.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,o(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=a,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)a(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=i,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!i(t,\"mo\"))return null;var a=t,o=a.getForms();try{for(var s=n(o),c=s.next();!c.done;c=s.next()){var u=c.value,p=l.MmlMo.OPTABLE[u][a.getText()];if(p)return p}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=r(5),s=r(3),l=r(6),c=r(2),u=r(13);r(71),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",o=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\"\\\\s*$\"),f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\" ?\");function d(t,r){void 0===r&&(r=!1);var a=t.match(r?f:p);return a?function(t){var r=n(t,3),a=r[0],o=r[1],i=r[2];if(\"mu\"!==o)return[a,o,i];return[h(e[o](parseFloat(a||\"1\"))).slice(0,-2),\"em\",i]}([a[1].replace(/,/,\".\"),a[4],a[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",a=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+a+a+a,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,u.entities.nbsp).replace(/\\s+$/,u.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function v(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new c.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function y(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,a=\"\",o=0,i=0,s=!0,l=!1;o<r;){var u=t[o++];switch(u){case\" \":break;case\"{\":s?i++:(l=!1,i>n&&(i=n)),n++;break;case\"}\":n&&n--,(s||l)&&(i--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(u))return[l?\"true\":y(a,i),u,t.slice(o)];s=!1,l=!1}a+=u}if(n)throw new c.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":y(a,i),\"\",t.slice(o)]}t.matchDimen=d,t.dimen2em=function(t){var r=n(d(t),2),a=r[0],o=r[1],i=parseFloat(a||\"1\"),s=e[o];return s?s(i):0},t.Em=h,t.fenced=function(t,e,r,n,a){void 0===a&&(a=\"\");var o,c=t.nodeFactory,u=c.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:i.TEXCLASS.INNER});if(a)o=new l.default(\"\\\\\"+a+\"l\"+e,t.parser.stack.env,t).mml();else{var p=c.create(\"text\",e);o=c.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.OPEN},p)}if(s.default.appendChildren(u,[o]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(u,s.default.getChildren(r)):s.default.appendChildren(u,[r]),a)o=new l.default(\"\\\\\"+a+\"r\"+n,t.parser.stack.env,t).mml();else{var f=c.create(\"text\",n);o=c.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.CLOSE},f)}return s.default.appendChildren(u,[o]),u},t.fixedFence=function(t,e,r,n){var a=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:i.TEXCLASS.ORD});return e&&s.default.appendChildren(a,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(a,s.default.getChildren(r)):s.default.appendChildren(a,[r]),n&&s.default.appendChildren(a,[m(t,n,\"r\")]),a},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var a=e[r];if(a&&!s.default.isType(a,\"mspace\")&&(!s.default.isType(a,\"TeXAtom\")||s.default.getChildren(a)[0]&&s.default.getChildren(s.default.getChildren(a)[0]).length)){if(s.default.isEmbellished(a)||s.default.isType(a,\"TeXAtom\")&&s.default.getTexClass(a)===i.TEXCLASS.REL){var o=t.nodeFactory.create(\"node\",\"mi\");e.unshift(o)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var a,o,i=n||t.stack.env.font,s=i?{mathvariant:i}:{},u=[],p=0,f=0,d=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;p<e.length;)if(\"$\"===(a=e.charAt(p++)))\"$\"===d&&0===h?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-1),{},t.configuration).mml()]),u.push(o),d=\"\",f=p):\"\"===d&&(f<p-1&&u.push(g(t,e.slice(f,p-1),s)),d=\"$\",f=p);else if(\"{\"===a&&\"\"!==d)h++;else if(\"}\"===a)if(\"}\"===d&&0===h){var m=new l.default(e.slice(f,p),{},t.configuration).mml();o=t.create(\"node\",\"TeXAtom\",[m],s),u.push(o),d=\"\",f=p}else\"\"!==d&&h&&h--;else if(\"\\\\\"===a)if(\"\"===d&&e.substr(p).match(/^(eq)?ref\\s*\\{/)){var v=RegExp[\"$&\"].length;f<p-1&&u.push(g(t,e.slice(f,p-1),s)),d=\"}\",f=p-1,p+=v}else\"(\"===(a=e.charAt(p++))&&\"\"===d?(f<p-2&&u.push(g(t,e.slice(f,p-2),s)),d=\")\",f=p):\")\"===a&&\")\"===d&&0===h?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-2),{},t.configuration).mml()]),u.push(o),d=\"\",f=p):a.match(/[${}\\\\]/)&&\"\"===d&&(p--,e=e.substr(0,p-1)+e.substr(p));if(\"\"!==d)throw new c.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return f<e.length&&u.push(g(t,e.slice(f),s)),null!=r?u=[t.create(\"node\",\"mstyle\",u,{displaystyle:!1,scriptlevel:r})]:u.length>1&&(u=[t.create(\"node\",\"mrow\",u)]),u},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",a=\"\",o=0;o<r.length;){var i=r.charAt(o++);if(\"\\\\\"===i)n+=i+r.charAt(o++);else if(\"#\"===i)if(\"#\"===(i=r.charAt(o++)))n+=i;else{if(!i.match(/[1-9]/)||parseInt(i,10)>e.length)throw new c.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");a=v(t,v(t,a,n),e[parseInt(i,10)-1]),n=\"\"}else n+=i}return v(t,a,n)},t.addArgs=v,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new c.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var o,i;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,a,o,i,s={},l=t;for(;l;)o=(e=n(b(l,[\"=\",\",\"]),3))[0],a=e[1],l=e[2],\"=\"===a?(i=(r=n(b(l,[\",\"]),3))[0],a=r[1],l=r[2],i=\"false\"===i||\"true\"===i?JSON.parse(i):i,s[o]=i):o&&(s[o]=!0);return s}(t);if(e)try{for(var l=a(Object.keys(s)),u=l.next();!u.done;u=l.next()){var p=u.value;if(!e.hasOwnProperty(p)){if(r)throw new c.default(\"InvalidOption\",\"Invalid optional argument: %1\",p);delete s[p]}}}catch(t){o={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(o)throw o.error}}return s}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(4),s=r(23),l=r(2),c=r(5),u=function(){function t(t,e,r){var a,o;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var i,l=e.hasOwnProperty(\"isInner\"),c=e.isInner;if(delete e.isInner,e){i={};try{for(var u=n(Object.keys(e)),p=u.next();!p.done;p=u.next()){var f=p.value;i[f]=e[f]}}catch(t){a={error:t}}finally{try{p&&!p.done&&(o=u.return)&&o.call(u)}finally{if(a)throw a.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,i,!l||c),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var a=n(Array.from(this.configuration.handlers.keys())),o=a.next();!o.done;o=a.next()){var i=o.value;r+=i+\": \"+this.configuration.handlers.get(i)+\"\\n\"}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof c.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var a=n(t),o=a.next();!o.done;o=a.next()){var i=o.value;this.stack.Push(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var a=this.getCodePoint();return this.i+=a.length,a},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=a(i.default.matchDimen(e),2),n=r[0],o=r[1];if(n)return n+o}else{e=this.string.slice(this.i);var s=a(i.default.matchDimen(e,!0),3),c=(n=s[0],o=s[1],s[2]);if(n)return this.i+=c,n+o}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var a=this.i,o=this.GetNext();switch(this.i+=o.length,o){case\"\\\\\":o+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&o===e)return this.string.slice(r,a)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=i.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.default=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(15),o=r(3),i=r(2),s=r(6),l=r(7),c=r(4),u=r(5),p=r(9),f=r(13);r(71),r(83),r(84);var d={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var a=new s.default(e,r,t.configuration),o=a.mml(),i=a.stack.global;if(i.leftRoot||i.upRoot){var l={};i.leftRoot&&(l.width=i.leftRoot),i.upRoot&&(l.voffset=i.upRoot,l.height=i.upRoot),o=t.create(\"node\",\"mpadded\",[o],l)}return r.inRoot=n,o}d.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},d.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},d.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},f.entities.nbsp))},d.Space=function(t,e){},d.Superscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var c=o.default.getProperty(s,\"movesupsub\"),u=o.default.isType(s,\"msubsup\")?s.sup:s.over;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sup)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.over)&&!o.default.getProperty(s,\"subsupOK\"))throw new i.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(c?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),u=s.over):u=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:u,primes:a,movesupsub:c}))},d.Subscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var c=o.default.getProperty(s,\"movesupsub\"),u=o.default.isType(s,\"msubsup\")?s.sub:s.under;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sub)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.under)&&!o.default.getProperty(s,\"subsupOK\"))throw new i.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(c?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),u=s.under):u=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:u,primes:a,movesupsub:c}))},d.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),o.default.isType(r,\"msubsup\")&&!o.default.isType(r,\"msup\")&&o.default.getChildAt(r,r.sup))throw new i.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=f.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===f.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var a=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,a))},d.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},d.Hash=function(t,e){throw new i.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},d.SetFont=function(t,e,r){t.stack.env.font=r},d.SetStyle=function(t,e,r,n,a){t.stack.env.style=r,t.stack.env.level=a,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:a}))},d.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},d.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),a=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(a)},d.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},d.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:u.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new i.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:u.TEXCLASS.OPEN}),t.Push(n)},d.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:u.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},d.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:u.TEXCLASS.OP},r);t.Push(n)},d.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||o.default.getTexClass(o.default.getCoreMO(n))!==u.TEXCLASS.OP&&null==o.default.getProperty(n,\"movesupsub\"))throw new i.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var a,s=t.stack.Top();o.default.isType(n,\"munderover\")&&!r?(a=t.create(\"node\",\"msubsup\"),o.default.copyChildren(n,a),n=s.Last=a):o.default.isType(n,\"msubsup\")&&r&&(a=t.create(\"node\",\"munderover\"),o.default.copyChildren(n,a),n=s.Last=a),o.default.setProperty(n,\"movesupsub\",!!r),o.default.setProperties(o.default.getCoreMO(n),{movablelimits:!1}),(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1})},d.Over=function(t,e,r,n){var a=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(a.setProperty(\"open\",r),a.setProperty(\"close\",n)):e.match(/withdelims$/)&&(a.setProperty(\"open\",t.GetDelimiter(e)),a.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?a.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&a.setProperty(\"thickness\",0),t.Push(a)},d.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.create(\"node\",\"mfrac\",[r,n]);t.Push(a)},d.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var a=new s.default(n,t.stack.env,t.configuration).mml();a=r?t.create(\"node\",\"mroot\",[a,m(t,r)]):t.create(\"node\",\"msqrt\",[a]),t.Push(a)},d.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),a=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(a)},d.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new i.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new i.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new i.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},d.Accent=function(t,e,r,n){var a=t.ParseArg(e),i=c.default.getFontDef(t);i.accent=!0;var s=o.default.createEntity(r),l=t.create(\"token\",\"mo\",i,s);o.default.setAttribute(l,\"stretchy\",!!n);var u=o.default.isEmbellished(a)?o.default.getCoreMO(a):a;o.default.isType(u,\"mo\")&&o.default.setProperties(u,{movablelimits:!1});var p=t.create(\"node\",\"munderover\");o.default.setChild(p,0,a),o.default.setChild(p,1,null),o.default.setChild(p,2,l);var f=t.create(\"node\",\"TeXAtom\",[p]);t.Push(f)},d.UnderOver=function(t,e,r,n,a){var i,s=t.ParseArg(e),l=o.default.getForm(s);(l&&l[3]&&l[3].movablelimits||o.default.getProperty(s,\"movablelimits\"))&&o.default.setProperties(s,{movablelimits:!1}),o.default.isType(s,\"munderover\")&&o.default.isEmbellished(s)&&(o.default.setProperties(o.default.getCoreMO(s),{lspace:0,rspace:0}),i=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[i,s]));var c=t.create(\"node\",\"munderover\",[s]),p=o.default.createEntity(r);i=t.create(\"token\",\"mo\",{stretchy:!0,accent:!a},p),o.default.setChild(c,\"o\"===e.charAt(1)?c.over:c.under,i);var f=c;n&&(f=t.create(\"node\",\"TeXAtom\",[c],{texClass:u.TEXCLASS.OP,movesupsub:!0})),o.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},d.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"mover\",[n,r]);t.Push(a)},d.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.isType(n,\"mo\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"munder\",[n,r]);t.Push(a)},d.TeXAtom=function(t,e,r){var n,a,o,i={texClass:r};if(r===u.TEXCLASS.OP){i.movesupsub=i.movablelimits=!0;var c=t.GetArgument(e),p=c.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);p?(i.mathvariant=l.TexConstant.Variant.NORMAL,a=t.create(\"token\",\"mi\",i,p[1])):(o=new s.default(c,t.stack.env,t.configuration).mml(),a=t.create(\"node\",\"TeXAtom\",[o],i)),n=t.itemFactory.create(\"fn\",a)}else o=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[o],i);t.Push(n)},d.MmlToken=function(t,e){var r,n=t.GetArgument(e),a=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new i.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==a;){var u=a.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!u)throw new i.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",a);if(!r.attributes.hasDefault(u[1])&&!h[u[1]])throw new i.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",u[1],n);var p=c.default.MmlFilterAttribute(t,u[1],u[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));p&&(\"true\"===p.toLowerCase()?p=!0:\"false\"===p.toLowerCase()&&(p=!1),l[u[1]]=p),a=a.substr(u[0].length)}var f=t.create(\"text\",s);r.appendChild(f),o.default.setProperties(r,l),t.Push(r)},d.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},d.Phantom=function(t,e,r,n){var a=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(a=t.create(\"node\",\"mpadded\",[a]),n&&(o.default.setAttribute(a,\"height\",0),o.default.setAttribute(a,\"depth\",0)),r&&o.default.setAttribute(a,\"width\",0));var i=t.create(\"node\",\"TeXAtom\",[a]);t.Push(i)},d.Smash=function(t,e){var r=c.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":o.default.setAttribute(n,\"depth\",0);break;case\"t\":o.default.setAttribute(n,\"height\",0);break;default:o.default.setAttribute(n,\"height\",0),o.default.setAttribute(n,\"depth\",0)}var a=t.create(\"node\",\"TeXAtom\",[n]);t.Push(a)},d.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&o.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},d.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},d.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var a=r;r=n,n=a}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},d.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},d.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var a=t.create(\"node\",\"mspace\",[],n);t.Push(a)},d.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),a=t.GetDimen(e),i=t.create(\"node\",\"mspace\",[],{width:n,height:a,mathbackground:t.stack.env.color||\"black\"});r&&(i=t.create(\"node\",\"mpadded\",[i],{voffset:r}),r.match(/^\\-/)?(o.default.setAttribute(i,\"height\",r),o.default.setAttribute(i,\"depth\",\"+\"+r.substr(1))):o.default.setAttribute(i,\"height\",\"+\"+r)),t.Push(i)},d.MakeBig=function(t,e,r,n){var a=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",o=t.GetDelimiter(e,!0),i=t.create(\"token\",\"mo\",{minsize:a,maxsize:a,fence:!0,stretchy:!0,symmetric:!0},o),s=t.create(\"node\",\"TeXAtom\",[i],{texClass:r});t.Push(s)},d.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),a=t.create(\"node\",\"munderover\");o.default.setChild(a,0,n),o.default.setChild(a,1,null),o.default.setChild(a,2,r);var i=t.create(\"node\",\"TeXAtom\",[a],{texClass:u.TEXCLASS.REL});t.Push(i)},d.HBox=function(t,e,r,n){t.PushAll(c.default.internalMath(t,t.GetArgument(e),r,n))},d.FBox=function(t,e){var r=c.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},d.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},d.Dots=function(t,e){var r=o.default.createEntity(\"2026\"),n=o.default.createEntity(\"22EF\"),a=t.create(\"token\",\"mo\",{stretchy:!1},r),i=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:a,cdots:i}))},d.Matrix=function(t,e,r,n,a,o,s,l,c,u){var p=t.GetNext();if(\"\"===p)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===p?t.i++:(t.string=p+\"}\"+t.string.slice(t.i+1),t.i=0);var f=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);f.arraydef={rowspacing:s||\"4pt\",columnspacing:o||\"1em\"},c&&f.setProperty(\"isCases\",!0),u&&(f.setProperty(\"isNumbered\",!0),f.arraydef.side=u),(r||n)&&(f.setProperty(\"open\",r),f.setProperty(\"close\",n)),\"D\"===l&&(f.arraydef.displaystyle=!0),null!=a&&(f.arraydef.columnalign=a),t.Push(f)},d.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,a=-1,o=t.i,s=r.length;o<s;){var l=r.charAt(o);if(\"{\"===l)n++,o++;else if(\"}\"===l)0===n?s=0:(0===--n&&a<0&&(a=o-t.i),o++);else{if(\"&\"===l&&0===n)throw new i.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(o).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:o+=2:o++}}var u=r.substr(t.i,o-t.i);if(!u.match(/^\\s*\\\\text[^a-zA-Z]/)||a!==u.replace(/\\s+$/,\"\").length-1){var p=c.default.internalMath(t,u,0);t.PushAll(p),t.i=o}}},d.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},d.CrLaTeX=function(t,e,r){var o;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),u=n(c.default.matchDimen(s),2),p=u[0],f=u[1];if(s&&!p)throw new i.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);o=p+f}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var d,h=t.stack.Top();if(h instanceof a.ArrayItem){if(o&&h.arraydef.rowspacing){var m=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var g=c.default.dimen2em(m[0]);h.setProperty(\"rowspacing\",g)}for(var v=h.getProperty(\"rowspacing\");m.length<h.table.length;)m.push(c.default.Em(v));m[h.table.length-1]=c.default.Em(Math.max(0,v+c.default.dimen2em(o))),h.arraydef.rowspacing=m.join(\" \")}}else o&&(d=t.create(\"node\",\"mspace\",[],{depth:o}),t.Push(d)),d=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(d)},d.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof a.ArrayItem)||n.Size())throw new i.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var o=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];o.length<n.table.length;)o.push(\"none\");o[n.table.length-1]=r,n.arraydef.rowlines=o.join(\" \")}else n.frame.push(\"top\")},d.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof a.ArrayItem))throw new i.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},d.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new i.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var a=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(a)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},d.Array=function(t,e,r,n,a,o,i,s,l){a||(a=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var c=(\"c\"+a).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var u=t.itemFactory.create(\"array\");return u.arraydef={columnalign:a,columnspacing:o||\"1em\",rowspacing:i||\"4pt\"},c.match(/[|:]/)&&(c.charAt(0).match(/[|:]/)&&(u.frame.push(\"left\"),u.dashed=\":\"===c.charAt(0)),c.charAt(c.length-1).match(/[|:]/)&&u.frame.push(\"right\"),c=c.substr(1,c.length-2),u.arraydef.columnlines=c.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&u.setProperty(\"open\",t.convertDelimiter(r)),n&&u.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?u.arraydef.displaystyle=!0:s&&(u.arraydef.displaystyle=!1),\"S\"===s&&(u.arraydef.scriptlevel=1),l&&(u.arraydef.useHeight=!1),t.Push(e),u},d.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=d.Array(t,e);return c.default.setArrayAlign(n,r)},d.Equation=function(t,e,r){return t.Push(e),c.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},d.EqnArray=function(t,e,r,n,a,o){t.Push(e),n&&c.default.checkEqnEnv(t),a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var i=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return i.arraydef={displaystyle:!0,columnalign:a,columnspacing:o||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},i},d.HandleNoTag=function(t,e){t.tags.notag()},d.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new i.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new i.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new p.Label}},d.HandleRef=function(t,e,r){var n=t.GetArgument(e),a=t.tags.allLabels[n]||t.tags.labels[n];a||(t.tags.refUpdate||(t.tags.redo=!0),a=new p.Label);var o=a.tag;r&&(o=t.tags.formatTag(o));var i=t.create(\"node\",\"mrow\",c.default.internalMath(t,o),{href:t.tags.formatUrl(a.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(i)},d.Macro=function(t,e,r,n,a){if(n){var o=[];if(null!=a){var s=t.GetBrackets(e);o.push(null==s?a:s)}for(var l=o.length;l<n;l++)o.push(t.GetArgument(e));r=c.default.substituteArgs(t,o,r)}if(t.string=c.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},d.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,a,o]))},e.default=d},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var i=r(6),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,a,o,i,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===a&&(a=\"\"),void 0===o&&(o=\"\"),void 0===i&&(i=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=a,this.tagFormat=o,this.noTag=i,this.labelId=s};e.TagInfo=l;var c=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),a=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[a],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new i.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(c);e.NoTags=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(c);e.AllTags=p,function(t){var e=new Map([[\"none\",u],[\"all\",p]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var a=o(Object.keys(e)),i=a.next();!i.done;i=a.next()){var s=i.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(2),c=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,i(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,i([t],r))},t}();e.MmlStack=c;var u=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,r)||this;return a.factory=e,a.global={},a._properties={},a.isOpen&&(a._env={}),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=o(this.getErrors(t.kind),2),n=r[0],a=r[1];throw new l.default(n,a,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var a=n.value;delete this.env[a]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(c);e.BaseItem=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=r(3),s=r(7),l=r(4);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,a=t.string.slice(t.i-1).match(n),o=l.default.getFontDef(t);a?(r=t.create(\"token\",\"mn\",o,a[0].replace(/[{}]/g,\"\")),t.i+=a[0].length-1):r=t.create(\"token\",\"mo\",o,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);i.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var o=n[0],i=t.itemFactory.create(\"begin\").setProperties({name:e,end:o});i=r.apply(void 0,a([t,i],n.slice(1))),t.Push(i)}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var a=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=a},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(16),l=r(13),c=r(5),u=r(2),p=r(4),f=r(3),d=r(11),h=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.StartItem=h;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(d.BaseItem);e.OpenItem=g;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CloseItem=v;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=o(this.Peek(2),2),r=e[0],n=e[1];return!f.default.isType(r,\"msubsup\")||f.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(f.default.setChild(r,r.sup,n),[[r,t],!0])},e}(d.BaseItem);e.PrimeItem=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return d.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)f.default.setChild(r,2,this.getProperty(\"primes\"));else{f.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var a=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=a}return f.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&f.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var o=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(u.default.bind.apply(u.default,i([void 0,o[0],o[1]],o.splice(2))))}return null},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(d.BaseItem);e.SubsupItem=b;var x=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new u.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&f.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(f.default.setProperty(r,\"withDelims\",!0),r=p.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(d.BaseItem);e.OverItem=x;var A=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",p.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(d.BaseItem);e.LeftItem=A;var M=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.RightItem=M;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new u.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?d.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new u.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.BeginItem=_;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.EndItem=C;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(d.BaseItem);e.StyleItem=P;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new u.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.PositionItem=w;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CellItem=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.MmlItem=T;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return d.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(f.default.isType(n,\"mstyle\")&&n.childNodes.length&&f.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||f.default.isType(n,\"mspace\"))return[[r,e],!0];f.default.isEmbellished(n)&&(n=f.default.getCoreMO(n));var a=f.default.getForm(n);if(null!=a&&[0,0,1,1,0,1,1,0,0,0][a[2]])return[[r,e],!0]}var o=this.create(\"token\",\"mo\",{texClass:c.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,o,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(d.BaseItem);e.FnItem=k;var O=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;if(t.isKind(\"mml\")&&(f.default.isType(t.First,\"mo\")||f.default.isType(t.First,\"mi\")||f.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=f.default.getText(e)).length&&!f.default.getProperty(e,\"movesupsub\")&&1===f.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),f.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),f.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var a=this.create(\"node\",\"mtext\",[],{},n),o=this.create(\"node\",\"mpadded\",[a],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[o],{texClass:c.TEXCLASS.REL}),t],!0]},e}(d.BaseItem);e.NotItem=O;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&f.default.isEmbellished(r)){var n=f.default.getTexClass(f.default.getCoreMO(r));n!==c.TEXCLASS.BIN&&n!==c.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(d.BaseItem);e.DotsItem=E;var I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),d.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),d.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?f.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||f.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=p.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var a=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[a],!0];throw new u.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[a,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&f.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&f.default.setAttribute(t,\"columnalign\",f.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(d.BaseItem);e.ArrayItem=I;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(r[0],r[2],r[1]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&p.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(I);e.EqnArrayItem=N;var q=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"equation\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new u.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.EquationItem=q},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var o,i=r(72),s=r(73);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(o=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new i.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var a,s;void 0===r&&(r=i.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),c=l.next();!c.done;c=l.next()){var u=c.value,p=o.getMap(u);if(!p)return void this.warn(\"Configuration \"+u+\" not found! Omitted.\");this._configuration.add(p,r)}}catch(t){a={error:t}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var o=n(this._configuration),i=o.next();!i.done;i=o.next()){var s=i.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}var l=a(t,2),c=l[0],u=l[1];this._fallback.toArray()[0].item(c,u)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;r.push(i.name)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;if(i.contains(t))return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;if(i.name===t)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var c=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var a,o;void 0===r&&(r=i.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),c=s.next();!c.done;c=s.next()){var u=c.value,p=this.get(u);p||(p=new l,this.set(u,p)),p.add(t[u],e[u],r)}}catch(t){a={error:t}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this.map.values()),o=a.next();!o.done;o=a.next()){var i=o.value.retrieve(t);if(i)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var n=r(4),a=r(3),o=r(7),i=r(6),s=r(2),l=r(14),c=r(8),u=r(5);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,a,o,i,s){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=c.default.EqnArray(t,e,r,a,o,i,s);return n.default.setArrayAlign(u,l)},e.AmsMethods.AlignAt=function(t,r,a,o){var i,l,c=r.getName(),u=\"\",p=[];if(o||(l=t.GetBrackets(\"\\\\begin{\"+c+\"}\")),(i=t.GetArgument(\"\\\\begin{\"+c+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+c+\"}\");for(var f=parseInt(i,10);f>0;)u+=\"rl\",p.push(\"0em 0em\"),f--;var d=p.join(\" \");if(o)return e.AmsMethods.EqnArray(t,r,a,o,u,d);var h=e.AmsMethods.EqnArray(t,r,a,o,u,d);return n.default.setArrayAlign(h,l)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),n.default.checkEqnEnv(t);var a=t.itemFactory.create(\"multline\",r,t.stack);return a.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",o=n.default.trimSpaces(t.GetArgument(r));\"\\\\\"===o.charAt(0)&&(o=o.substr(1));var i=t.GetArgument(r);i.match(/\\\\text/)||(i=i.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(o,new l.Macro(o,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+i+\"}\"+a]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",a=n.default.trimSpaces(t.GetArgument(e));a.match(/\\\\text/)||(a=a.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+a+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),n=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=n)},e.AmsMethods.MultiIntegral=function(t,e,r){var n=t.GetNext();if(\"\\\\\"===n){var a=t.i;n=t.GetArgument(e),t.i=a,\"\\\\limits\"===n&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,o,s){var l={width:\"+\"+n.default.Em((o+s)/18),lspace:n.default.Em(o/18)},c=t.GetBrackets(e),p=t.ParseArg(e),f=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(r)),d=t.create(\"node\",\"munderover\",[f]),h=t.create(\"node\",\"mpadded\",[p],l);if(a.default.setAttribute(h,\"voffset\",\".15em\"),a.default.setChild(d,d.over,h),c){var m=new i.default(c,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[m],l),a.default.setAttribute(h,\"voffset\",\"-.24em\"),a.default.setChild(d,d.under,h)}a.default.setProperty(d,\"subsupOK\",!0),t.Push(d)},e.AmsMethods.HandleShove=function(t,e,r){var n=t.stack.Top();if(\"multline\"!==n.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(n.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);n.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=n.default.trimSpaces(t.GetBrackets(e,\"\")),l=t.GetArgument(e),c=t.GetArgument(e),u={l:o.TexConstant.Align.LEFT,r:o.TexConstant.Align.RIGHT,\"\":\"\"},p=new i.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),f=new i.default(\"\\\\strut\\\\textstyle{\"+c+\"}\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mfrac\",[p,f]);if(null==(r=u[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&a.default.setProperties(d,{numalign:r,denomalign:r}),t.Push(d)},e.AmsMethods.Genfrac=function(t,e,r,o,i,l){null==r&&(r=t.GetDelimiterArg(e)),null==o&&(o=t.GetDelimiterArg(e)),null==i&&(i=t.GetArgument(e)),null==l&&(l=n.default.trimSpaces(t.GetArgument(e)));var c=t.ParseArg(e),u=t.ParseArg(e),p=t.create(\"node\",\"mfrac\",[c,u]);if(\"\"!==i&&a.default.setAttribute(p,\"linethickness\",i),(r||o)&&(a.default.setProperty(p,\"withDelims\",!0),p=n.default.fixedFence(t.configuration,r,p,o)),\"\"!==l){var f=parseInt(l,10),d=[\"D\",\"T\",\"S\",\"SS\"][f];if(null==d)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);p=t.create(\"node\",\"mstyle\",[p]),\"D\"===d?a.default.setProperties(p,{displaystyle:!0,scriptlevel:0}):a.default.setProperties(p,{displaystyle:!1,scriptlevel:f-1})}t.Push(p)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),a=n.default.trimSpaces(t.GetArgument(e));t.tags.tag(a,r)},e.AmsMethods.HandleNoTag=c.default.HandleNoTag,e.AmsMethods.HandleRef=c.default.HandleRef,e.AmsMethods.Macro=c.default.Macro,e.AmsMethods.Accent=c.default.Accent,e.AmsMethods.Tilde=c.default.Tilde,e.AmsMethods.Array=c.default.Array,e.AmsMethods.Spacer=c.default.Spacer,e.AmsMethods.NamedOp=c.default.NamedOp,e.AmsMethods.EqnArray=c.default.EqnArray},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var o=r(3),i=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,a){void 0===r&&(r=[]),void 0===n&&(n={});var i=t.mmlFactory.create(e),s=i.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?i.setChildren(o.default.getChildren(r[0])):i.setChildren(r);else{for(var l=[],c=0,u=void 0;u=r[c];c++)if(u.isInferred){var p=t.mmlFactory.create(\"mrow\",{},o.default.getChildren(u));o.default.copyAttributes(u,p),l.push(p)}else l.push(u);i.setChildren(l)}return a&&i.appendChild(a),o.default.setProperties(i,n),i},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var a=t.create(\"text\",n);return t.create(\"node\",e,[],r,a)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,o=n.apply(void 0,a([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],o),o},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=i},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var i=r(0),s=r(16),l=r(2),c=r(3),u=r(1),p=r(15),f=r(9);function d(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),a=t.create(\"token\",\"mo\",r,n?n.char:e);c.default.setProperty(a,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",a),t.Push(a)}r(82),new u.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(f.AbstractTags);e.BaseTags=h,e.BaseConfiguration=i.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:d,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(a={},a[p.StartItem.prototype.kind]=p.StartItem,a[p.StopItem.prototype.kind]=p.StopItem,a[p.OpenItem.prototype.kind]=p.OpenItem,a[p.CloseItem.prototype.kind]=p.CloseItem,a[p.PrimeItem.prototype.kind]=p.PrimeItem,a[p.SubsupItem.prototype.kind]=p.SubsupItem,a[p.OverItem.prototype.kind]=p.OverItem,a[p.LeftItem.prototype.kind]=p.LeftItem,a[p.RightItem.prototype.kind]=p.RightItem,a[p.BeginItem.prototype.kind]=p.BeginItem,a[p.EndItem.prototype.kind]=p.EndItem,a[p.StyleItem.prototype.kind]=p.StyleItem,a[p.PositionItem.prototype.kind]=p.PositionItem,a[p.CellItem.prototype.kind]=p.CellItem,a[p.MmlItem.prototype.kind]=p.MmlItem,a[p.FnItem.prototype.kind]=p.FnItem,a[p.NotItem.prototype.kind]=p.NotItem,a[p.DotsItem.prototype.kind]=p.DotsItem,a[p.ArrayItem.prototype.kind]=p.ArrayItem,a[p.EqnArrayItem.prototype.kind]=p.EqnArrayItem,a[p.EquationItem.prototype.kind]=p.EquationItem,a),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,r){\"use strict\";var n,a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var i=r(3),s=r(4),l=null,c=null,u=function(t){return c.root=t,l.outputJax.getBBox(c,l).w},p=function(t){for(var e=0;t&&!i.default.isType(t,\"mtable\");){if(i.default.isType(t,\"text\"))return null;i.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},f=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},d=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},h=function(t){return d(t,0)},m=function(t){return d(t,t.childNodes.length-1)},g=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(t){for(;t&&!i.default.isType(t,\"mtd\");)t=t.parent;return t},y=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},b=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},x=function(t,e,r){void 0===r&&(r=!1);var n=0;if(t===e)return n;if(t!==e.parent){var a=t.childNodes,o=r?a.length-1:0;i.default.isType(a[o],\"mspace\")&&(n+=u(a[o])),t=e.parent}if(t===e)return n;var s=t.childNodes,l=r?s.length-1:0;return s[l]!==e&&(n+=u(s[l])),n},A=function(t,r){void 0===r&&(r=!1);var n=p(t),a=g(n,e.getProperty(n,\"inferenceRule\"));return x(t,n,r)+(u(n)-u(a))/2},M=function(t,r,n,a){if(void 0===a&&(a=!1),e.getProperty(r,\"inferenceRule\")||e.getProperty(r,\"labelledRule\")){var o=t.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(o,r),o.setChildren([r]),_(r,o),r=o}var l=a?r.childNodes.length-1:0,c=r.childNodes[l];i.default.isType(c,\"mspace\")?i.default.setAttribute(c,\"width\",s.default.Em(s.default.dimen2em(i.default.getAttribute(c,\"width\"))+n)):(c=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(n)}),a?r.appendChild(c):(c.parent=r,r.childNodes.unshift(c)))},_=function(t,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(n){var a=e.getProperty(t,n);null!=a&&(e.setProperty(r,n,a),e.removeProperty(t,n))}))},C=function(t,r,n,a,o){var i=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(o)});if(\"left\"===a){var l=r.childNodes[n].childNodes[0];i.parent=l,l.childNodes.unshift(i)}else r.childNodes[n].appendChild(i);e.setProperty(r.parent,\"sequentAdjust_\"+a,o)},P=function(t,r){for(var n=r.pop();r.length;){var o=r.pop(),i=a(w(n,o),2),s=i[0],l=i[1];e.getProperty(n.parent,\"axiom\")&&(C(t,s<0?n:o,0,\"left\",Math.abs(s)),C(t,l<0?n:o,2,\"right\",Math.abs(l))),n=o}},w=function(t,e){var r=u(t.childNodes[2]),n=u(e.childNodes[2]);return[u(t.childNodes[0])-u(e.childNodes[0]),r-n]};e.balanceRules=function(t){var r,n;c=new t.document.options.MathItem(\"\",null,t.math.display);var a=t.data;!function(t){var r=t.nodeLists.sequent;if(r)for(var n=r.length-1,a=void 0;a=r[n];n--)if(e.getProperty(a,\"sequentProcessed\"))e.removeProperty(a,\"sequentProcessed\");else{var o=[],i=b(a);if(1===e.getProperty(i,\"inference\")){for(o.push(a);1===e.getProperty(i,\"inference\");){i=p(i);var s=h(f(i,e.getProperty(i,\"inferenceRule\"))),l=e.getProperty(s,\"inferenceRule\")?g(s,e.getProperty(s,\"inferenceRule\")):s;e.getProperty(l,\"sequent\")&&(a=l.childNodes[0],o.push(a),e.setProperty(a,\"sequentProcessed\",!0)),i=s}P(t,o)}}}(a);var i=a.nodeLists.inference||[];try{for(var s=o(i),l=s.next();!l.done;l=s.next()){var u=l.value,d=e.getProperty(u,\"proof\"),_=p(u),C=f(_,e.getProperty(_,\"inferenceRule\")),w=h(C);if(e.getProperty(w,\"inference\")){var S=A(w);if(S){M(a,w,-S);var T=x(u,_,!1);M(a,u,S-T)}}var k=m(C);if(null!=e.getProperty(k,\"inference\")){var O=A(k,!0);M(a,k,-O,!0);var E=x(u,_,!0),I=e.getProperty(u,\"maxAdjust\");null!=I&&(O=Math.max(O,I));var N=void 0;if(!d&&(N=v(u))){var q=y(N);if(q){var L=a.nodeFactory.create(\"node\",\"mspace\",[],{width:O-E+\"em\"});q.appendChild(L),u.removeProperty(\"maxAdjust\")}else{var F=b(N);F&&(O=e.getProperty(F,\"maxAdjust\")?Math.max(e.getProperty(F,\"maxAdjust\"),O):O,e.setProperty(F,\"maxAdjust\",O))}}else M(a,e.getProperty(u,\"proof\")?u:u.parent,O-E,!0)}}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}};var S=((n={}).bspr_maxAdjust=!0,n);e.setProperty=function(t,e,r){i.default.setProperty(t,\"bspr_\"+e,r)},e.getProperty=function(t,e){return i.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var r=[];t.getPropertyNames().forEach((function(e){!S[e]&&e.match(RegExp(\"^bspr_\"))&&r.push(e+\":\"+t.getProperty(e))})),r.length&&i.default.setAttribute(t,\"semantics\",r.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(l=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){l=null}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,a=r(4),o=r(2),i=r(14);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var n in e.attributes)r.push(n),r.push(e.attributes[n]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],n={},a=2;a<t.length;a+=2)n[t[a]]=t[a+1];return new i.Symbol(e,r,n)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new o.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return a.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var n=t.GetNext(),a=[],i=0,s=t.i;t.i<t.string.length;){if(\"#\"===(n=t.GetNext())){if(s!==t.i&&(a[i]=t.string.substr(s,t.i-s)),!(n=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new o.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(n)!==++i)throw new o.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===n)return s!==t.i&&(a[i]=t.string.substr(s,t.i-s)),a.length>0?[i.toString()].concat(a):i;t.i++}throw new o.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,n){if(null==n)return t.GetArgument(r);for(var a=t.i,i=0,s=0;t.i<t.string.length;){var l=t.string.charAt(t.i);if(\"{\"===l)t.i===a&&(s=1),t.GetArgument(r),i=t.i-a;else{if(e(t,n))return s&&(a++,i-=2),t.string.substr(a,i);if(\"\\\\\"===l){t.i++,i++,s=0;var c=t.string.substr(t.i).match(/[a-z]+|./i);c&&(t.i+=c[0].length,i=t.i-a)}else t.i++,i++,s=0}}throw new o.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new i.Symbol(r,n,a))},t.addMacro=function(e,r,n,a,o){void 0===o&&(o=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new i.Macro(o||r,n,a))},t.addEnvironment=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new i.Macro(r,n,a))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(3),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),c=l.next();!c.done;c=l.next()){var u=c.value;if(u){var p=i.default.isNode(u)?this._factory.create(\"mml\",u):u;p.global=this.global;var f=a(this.stack.length?this.Top().checkItem(p):[null,!0],2),d=f[0],h=f[1];h&&(d?(this.Pop(),this.Push.apply(this,o(d))):(this.stack.push(p),p.env?(p.copyEnv&&Object.assign(p.env,this.env),this.env=p.env):p.env=this.env))}}}catch(e){t={error:e}}finally{try{c&&!c.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(34),s=r(18),l=r(10),c=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new i.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,a([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],a=[];try{for(var i=o(n),s=i.next();!s.done;s=i.next()){var l=s.value;this.inTree(l)&&a.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return this.nodeLists[t]=a,a},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var n=r(0),a=r(1),o=r(4);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,r){var n=t.GetArgument(r).replace(/,/g,\" \"),a=t.GetBrackets(r,\"\"),i=t.ParseArg(r),s=o.default.keyvalOptions(a,e.ENCLOSE_OPTIONS);s.notation=n,t.Push(t.create(\"node\",\"menclose\",[i],s))},new a.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=n.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(2),a=r(1),o=r(8),i=r(4),s=r(21),l={NewCommand:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),o=t.GetBrackets(e),c=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(a&&!(a=i.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,l.Macro,[c,a,o])},NewEnvironment:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),o=t.GetBrackets(e),c=t.GetArgument(e),u=t.GetArgument(e);if(a&&!(a=i.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,l.BeginEnv,[!0,c,u,a,o])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),n=s.default.GetTemplate(t,e,\"\\\\\"+r),a=t.GetArgument(e);n instanceof Array?s.default.addMacro(t,r,l.MacroWithTemplate,[a].concat(n)):s.default.addMacro(t,r,l.Macro,[a,n])},Let:function(t,e){var r=s.default.GetCSname(t,e),n=t.GetNext();\"=\"===n&&(t.i++,n=t.GetNext());var o=t.configuration.handlers;if(\"\\\\\"!==n){t.i++;var i=o.get(\"delimiter\").lookup(n);i?s.default.addDelimiter(t,\"\\\\\"+r,i.char,i.attributes):s.default.addMacro(t,r,l.Macro,[n])}else{e=s.default.GetCSname(t,e);var c=o.get(\"delimiter\").lookup(\"\\\\\"+e);if(c)return void s.default.addDelimiter(t,\"\\\\\"+r,c.char,c.attributes);var u=o.get(\"macro\").applicable(e);if(!u)return;if(u instanceof a.MacroMap){var p=u.lookup(e);return void s.default.addMacro(t,r,p.func,p.args,p.symbol)}c=u.lookup(e);var f=s.default.disassembleSymbol(r,c);s.default.addMacro(t,r,(function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var a=s.default.assembleSymbol(r);return u.parser(t,a)}),f)}},MacroWithTemplate:function(t,e,r,a){for(var o=[],l=4;l<arguments.length;l++)o[l-4]=arguments[l];var c=parseInt(a,10);if(c){var u=[];if(t.GetNext(),o[0]&&!s.default.MatchParam(t,o[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var p=0;p<c;p++)u.push(s.default.GetParameter(t,e,o[p+1]));r=i.default.substituteArgs(t,u,r)}if(t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,n,a,o){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=n,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(a){var l=[];if(null!=o){var c=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");l.push(null==c?o:c)}for(var u=l.length;u<a;u++)l.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=i.default.substituteArgs(t,l,r),n=i.default.substituteArgs(t,[],n)}return t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};l.Macro=o.default.Macro,e.default=l},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var a=r(0),o=r(56),i=r(21);r(89);var s=r(12),l=r(1);e.NewcommandConfiguration=a.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[o.BeginEnvItem.prototype.kind]=o.BeginEnvItem,n),options:{maxMacros:1e3},init:function(t){new l.DelimiterMap(i.default.NEW_DELIMITER,s.default.delimiter,{}),new l.CommandMap(i.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(i.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(a.Configuration.local({handler:{character:[],delimiter:[i.default.NEW_DELIMITER],macro:[i.default.NEW_DELIMITER,i.default.NEW_COMMAND],environment:[i.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var n=r(6),a=r(92),o=r(8);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var r,a,o=t.i,i=0;a=t.GetNext();)switch(r=t.i++,a){case\"\\\\\":\")\"===t.GetCS()&&(a=\"\\\\(\");case\"$\":if(0===i&&e===a){var s=t.texParser.configuration,l=new n.default(t.string.substr(o,r-o),t.stack.env,s).mml();return void t.PushMath(l)}break;case\"{\":i++;break;case\"}\":0===i&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),i--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var r=t.stack.env;t.envStack.push(r),t.stack.env=Object.assign({},r)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,r){t.text+=r},Accent:function(t,e,r){var n=t.ParseArg(name),a=t.create(\"token\",\"mo\",{},r);t.addAttributes(a),t.Push(t.create(\"node\",\"mover\",[n,a]))},Emph:function(t,e){var r=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:r}))},SetFont:function(t,e,r){t.saveText(),t.stack.env.mathvariant=r},SetSize:function(t,e,r){t.saveText(),t.stack.env.mathsize=r},CheckAutoload:function(t,e){var r=t.configuration.packageData.get(\"autoload\"),n=t.texParser;e=e.slice(1);var o=n.lookup(\"macro\",e);if(!o||r&&o._func===r.Autoload){if(n.parse(\"macro\",[n,e]),!o)return;a.retryAfter(Promise.resolve())}n.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var i=r(0),s=r(1),l=r(2),c=r(22),u=r(74),p=r(70),f=r(94),d=r(10),h=c.MathJax.config;function m(t,e){var r,a=t.parseOptions.options.require,o=t.parseOptions.packageData.get(\"require\").required,s=e.substr(a.prefix.length);if(o.indexOf(s)<0){o.push(s),function(t,e){var r,a;void 0===e&&(e=[]);var o=t.parseOptions.options.require.prefix;try{for(var i=n(e),s=i.next();!s.done;s=i.next()){var l=s.value;l.substr(0,o.length)===o&&m(t,l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}}(t,p.CONFIG.dependencies[e]);var l=i.ConfigurationHandler.get(s);if(l){var c=h[e]||{};l.options&&1===Object.keys(l.options).length&&l.options[s]&&((r={})[s]=c,c=r),t.configuration.add(l,t,c);var u=t.parseOptions.packageData.get(\"require\").configured;l.preprocessors.length&&!u.has(s)&&(u.set(s,!0),f.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,n=r.allow,a=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(n.hasOwnProperty(a)?n[a]:n.hasOwnProperty(e)?n[e]:r.defaultAllow))throw new l.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',a);u.Package.packages.has(a)?m(t.configuration.packageData.get(\"require\").jax,a):f.mathjax.retryAfter(p.Loader.load(a))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new l.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:o(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,n=r.prefix;if(n.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");p.CONFIG.paths[n]||(p.CONFIG.paths[n]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+n+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(76),l=r(10),c=r(32),u=r(33),p=r(3),f=r(6),d=r(2),h=r(24),m=r(9),g=r(0);r(19);var v=function(t){function e(r){void 0===r&&(r={});var n=this,a=i(l.separateOptions(r,e.OPTIONS,c.FindTeX.OPTIONS),3),o=a[0],s=a[1],p=a[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new c.FindTeX(p);var f=n.options.packages,d=n.configuration=e.configure(f),g=n._parseOptions=new h.default(d,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,o),d.config(n),e.tags(g,d),n.postFilters.add(u.default.cleanSubSup,-6),n.postFilters.add(u.default.setInherited,-5),n.postFilters.add(u.default.moveLimits,-4),n.postFilters.add(u.default.cleanStretchy,-3),n.postFilters.add(u.default.cleanAttributes,-2),n.postFilters.add(u.default.combineRelations,-1),n}return a(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new f.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof d.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&p.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=o(o({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=v},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,r(19),r(35),r(36),r(38),r(40),r(41),r(42),r(45),r(48),r(49),r(53),r(54),r(25),r(55),r(57),r(59),r(27),r(60),r(61),r(62),r(65),r(66),r(68),r(69),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var i=r(77),s=r(78),l=r(79),c=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],a=[];this.end={},this.env=this.sub=0;var o=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=o,o++),e.processEscapes&&a.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&a.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),a.length&&(n.push(\"(\"+a.join(\"|\")+\")\"),this.sub=o),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=o(e,2),a=n[0],i=n[1];t.push(s.quotePattern(a)),this.end[a]=[i,r,this.endPattern(i)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var a,i=o(n,3),s=i[0],c=i[1],u=i[2],p=u.lastIndex=r.index+r[0].length,f=0;a=u.exec(t);){if((a[1]||a[0])===s&&0===f)return l.protoItem(r[0],t.substr(p,a.index-p),a[0],e,r.index,a.index+a[0].length,c);\"{\"===a[0]?f++:\"}\"===a[0]&&f&&f--}return null},e.prototype.findMathInString=function(t,e,r){var n,a;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var o=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(a=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,o)]))&&(a.math=a.open+a.math+a.close,a.open=a.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var i=n[this.sub];o=n.index+n[this.sub].length;a=2===i.length?l.protoItem(\"\",i.substr(1),\"\",e,n.index,o):l.protoItem(\"\",i,\"\",e,n.index,o,!1)}else a=this.findEnd(r,e,n,this.end[n[0]]);a&&(t.push(a),this.start.lastIndex=a.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(i.AbstractFindMath);e.FindTeX=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a,o=r(5),i=r(3);!function(t){t.cleanStretchy=function(t){var e,r,a=t.data;try{for(var o=n(a.getList(\"fixStretchy\")),s=o.next();!s.done;s=o.next()){var l=s.value;if(i.default.getProperty(l,\"fixStretchy\")){var c=i.default.getForm(l);c&&c[3]&&c[3].stretchy&&i.default.setAttribute(l,\"stretchy\",!1);var u=l.parent;if(!(i.default.getTexClass(l)||c&&c[2])){var p=a.nodeFactory.create(\"node\",\"TeXAtom\",[l]);u.replaceChild(p,l),p.inheritAttributesFrom(l)}i.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,a,o=t.attributes;if(o)try{for(var i=n(o.getExplicitNames()),s=i.next();!s.done;s=i.next()){var l=s.value;o.attributes[l]===t.attributes.getInherited(l)&&delete o.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var a,s;try{for(var l=n(t.data.getList(\"mo\")),c=l.next();!c.done;c=l.next()){var u=c.value;if(!u.getProperty(\"relationsCombined\")&&u.parent&&(!u.parent||i.default.isType(u.parent,\"mrow\"))&&i.default.getTexClass(u)===o.TEXCLASS.REL){for(var p=u.parent,f=void 0,d=p.childNodes,h=d.indexOf(u)+1,m=i.default.getProperty(u,\"variantForm\");h<d.length&&(f=d[h])&&i.default.isType(f,\"mo\")&&i.default.getTexClass(f)===o.TEXCLASS.REL;){if(m!==i.default.getProperty(f,\"variantForm\")||!r(u,f)){null==u.attributes.getExplicit(\"rspace\")&&i.default.setAttribute(u,\"rspace\",\"0pt\"),null==f.attributes.getExplicit(\"lspace\")&&i.default.setAttribute(f,\"lspace\",\"0pt\");break}i.default.appendChildren(u,i.default.getChildren(f)),e([\"stretchy\",\"rspace\"],u,f),i.default.setProperties(u,f.getAllProperties()),d.splice(h,1),f.parent=null,f.setProperty(\"relationsCombined\",!0)}u.attributes.setInherited(\"form\",u.getForms()[0])}}}catch(t){a={error:t}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}};var e=function(t,e,r){var n=e.attributes,a=r.attributes;t.forEach((function(t){var e=a.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,a,o=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},i=t.attributes,s=e.attributes,l=o(i,\"lspace\"),c=o(s,\"rspace\");if(l.length!==c.length)return!1;try{for(var u=n(l),p=u.next();!p.done;p=u.next()){var f=p.value;if(i.getExplicit(f)!==s.getExplicit(f))return!1}}catch(t){r={error:t}}finally{try{p&&!p.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}return!0},a=function(t,e,r){var a,o;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var c=l.value,u=c.childNodes;if(!u[c[e]]||!u[c[r]]){var p=c.parent,f=u[c[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[u[c.base],u[c[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[u[c.base],u[c[r]]]);i.default.copyAttributes(c,f),p?p.replaceChild(f,c):t.root=f}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(a(e,\"sub\",\"sup\"),a(e,\"under\",\"over\"))};var s=function(t,e,r){var a,o;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.attributes.get(\"displaystyle\")){var u=c.childNodes[c.base],p=u.coreMO();if(u.getProperty(\"movablelimits\")&&!p.attributes.getExplicit(\"movablelimits\")){var f=t.nodeFactory.create(\"node\",r,c.childNodes);i.default.copyAttributes(c,f),c.parent?c.parent.replaceChild(f,c):t.root=f}}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(11),s=r(81),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i.BaseItem),c=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return o(e,t),e.DefaultStackItems=((a={})[l.prototype.kind]=l,a),e}(s.AbstractFactory);e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var n=r(0),a=r(6),o=r(1),i=r(8);e.ActionMethods={},e.ActionMethods.Macro=i.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var r,n=[];\"\\\\endtoggle\"!==(r=t.GetArgument(e));)n.push(new a.default(r,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",n,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[r,n],{actiontype:\"tooltip\"}))},new o.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=n.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var i=r(0),s=r(37),l=r(9),c=r(17);r(85);var u=r(1),p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(l.AbstractTags);e.AmsTags=p;e.AmsConfiguration=i.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(a={},a[s.MultlineItem.prototype.kind]=s.MultlineItem,a),tags:{ams:p},init:function(t){new u.CommandMap(c.NEW_OPS,{},{}),t.append(i.Configuration.local({handler:{macro:[c.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var o=r(15),i=r(4),s=r(3),l=r(2),c=r(7),u=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"multline\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&i.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new l.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",c.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",c.TexConstant.Align.RIGHT);var n=this.factory.configuration.tags.getTag();if(n){r=this.arraydef.side===c.TexConstant.Align.LEFT?0:this.table.length-1;var a=this.table[r],o=this.create(\"node\",\"mlabeledtr\",[n].concat(s.default.getChildren(a)));s.default.copyAttributes(a,o),this.table[r]=o}}this.factory.configuration.tags.end()},e}(o.ArrayItem);e.MultlineItem=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var n=r(0);r(86),e.AmsCdConfiguration=n.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(6),a=r(19),o=r(5),i=r(3),s={CD:function(t,e){t.Push(e);var r=t.itemFactory.create(\"array\"),n=t.configuration.options.amscd;return r.setProperties({minw:t.stack.env.CD_minw||n.harrowsize,minh:t.stack.env.CD_minh||n.varrowsize}),r.arraydef={columnalign:\"center\",columnspacing:n.colspace,rowspacing:n.rowspace,displaystyle:!0},r},arrow:function(t,e){var r=t.string.charAt(t.i);if(!r.match(/[><VA.|=]/))return a.Other(t,e);t.i++;var l=t.stack.Top();l.isKind(\"array\")&&!l.Size()||(s.cell(t,e),l=t.stack.Top());for(var c,u=l,p=u.table.length%2==1,f=(u.row.length+(p?0:1))%2;f;)s.cell(t,e),f--;var d={minsize:u.getProperty(\"minw\"),stretchy:!0},h={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===r);else if(\"|\"===r)c=t.create(\"token\",\"mo\",h,\"\\u2225\");else if(\"=\"===r)c=t.create(\"token\",\"mo\",d,\"=\");else{var m={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[r],g=t.GetUpTo(e+r,r),v=t.GetUpTo(e+r,r);if(\">\"===r||\"<\"===r){if(c=t.create(\"token\",\"mo\",d,m),g||(g=\"\\\\kern \"+u.getProperty(\"minw\")),g||v){var y={width:\".67em\",lspace:\".33em\"};if(c=t.create(\"node\",\"munderover\",[c]),g){var b=new n.default(g,t.stack.env,t.configuration).mml(),x=t.create(\"node\",\"mpadded\",[b],y);i.default.setAttribute(x,\"voffset\",\".1em\"),i.default.setChild(c,c.over,x)}if(v){var A=new n.default(v,t.stack.env,t.configuration).mml();i.default.setChild(c,c.under,t.create(\"node\",\"mpadded\",[A],y))}t.configuration.options.amscd.hideHorizontalLabels&&(c=t.create(\"node\",\"mpadded\",c,{depth:0,height:\".67em\"}))}}else{var M=t.create(\"token\",\"mo\",h,m);c=M,(g||v)&&(c=t.create(\"node\",\"mrow\"),g&&i.default.appendChildren(c,[new n.default(\"\\\\scriptstyle\\\\llap{\"+g+\"}\",t.stack.env,t.configuration).mml()]),M.texClass=o.TEXCLASS.ORD,i.default.appendChildren(c,[M]),v&&i.default.appendChildren(c,[new n.default(\"\\\\scriptstyle\\\\rlap{\"+v+\"}\",t.stack.env,t.configuration).mml()]))}}c&&t.Push(c),s.cell(t,e)},cell:function(t,e){var r=t.stack.Top();(r.table||[]).length%2==0&&0===(r.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=s},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var n=r(0),a=r(1),o=r(2);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var r,n,a,l=t.GetBrackets(e,\"\"),c=t.ParseArg(e),u=l.split(/,/),p=0,f=u.length;p<f;p++){var d=u[p].trim(),h=d.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(h){if(r)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var m=s(h[1]+h[3]);m&&(r={height:\"+\"+m,depth:\"+\"+m,lspace:m,width:\"+\"+2*parseInt(h[1],10)+h[3]})}else if(d.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(n)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);n=d}else if(d.match(/^[-a-z]+:/i)){if(a)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);a=i(d)}else if(\"\"!==d)throw new o.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',d)}r&&(c=t.create(\"node\",\"mpadded\",[c],r)),(n||a)&&(r={},n&&Object.assign(r,{mathbackground:n}),a&&Object.assign(r,{style:a}),c=t.create(\"node\",\"mstyle\",[c],r)),t.Push(c)};var i=function(t){return t},s=function(t){return t};new a.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=n.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var a=r(0),o=r(3),i=r(7),s=r(1),l=r(18),c={};function u(t,e,r,n){var a=l.NodeFactory.createToken(t,e,r,n);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(o.default.setProperty(a,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",a)),a}function p(t){var e,r;try{for(var a=n(t.data.getList(\"fixBold\")),s=a.next();!s.done;s=a.next()){var l=s.value;if(o.default.getProperty(l,\"fixBold\")){var u=o.default.getAttribute(l,\"mathvariant\");null==u?o.default.setAttribute(l,\"mathvariant\",i.TexConstant.Variant.BOLD):o.default.setAttribute(l,\"mathvariant\",c[u]||u),o.default.removeProperties(l,\"fixBold\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}}c[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,c[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,c[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,c[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,c[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,c[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",c[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var r=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var n=t.ParseArg(e);t.stack.env.boldsymbol=r,t.Push(n)},new s.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=u,e.rewriteBoldTokens=p,e.BoldsymbolConfiguration=a.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:u},postprocessors:[p]})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var a=r(0),o=r(43);r(87),e.BraketConfiguration=a.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(n={},n[o.BraketItem.prototype.kind]=o.BraketItem,n)})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var o=r(11),i=r(5),s=r(4),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:o.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.getProperty(\"open\"),n=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return s.default.fenced(this.factory.configuration,r,e,n);var a={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},o=this.create(\"token\",\"mo\",a,r);a.texClass=i.TEXCLASS.CLOSE;var l=this.create(\"token\",\"mo\",a,n);return this.create(\"node\",\"mrow\",[o,e,l],{open:r,close:n,texClass:i.TEXCLASS.INNER})},e}(o.BaseItem);e.BraketItem=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(8),a=r(5),o=r(2),i={};i.Macro=n.default.Macro,i.Braket=function(t,e,r,n,a,i){var s=t.GetNext();if(\"\"===s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=!0;\"{\"===s&&(t.i++,l=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:n,stretchy:a,single:l}))},i.Bar=function(t,e){var r=\"|\"===e?\"|\":\"\\u2225\",n=t.stack.Top();if(\"braket\"!==n.kind||n.getProperty(\"barcount\")>=n.getProperty(\"barmax\")){var o=t.create(\"token\",\"mo\",{texClass:a.TEXCLASS.ORD,stretchy:!1},r);t.Push(o)}else{if(\"|\"===r&&\"|\"===t.GetNext()&&(t.i++,r=\"\\u2225\"),n.getProperty(\"stretchy\")){var i=t.create(\"node\",\"TeXAtom\",[],{texClass:a.TEXCLASS.CLOSE});t.Push(i),n.setProperty(\"barcount\",n.getProperty(\"barcount\")+1),i=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),t.Push(i),i=t.create(\"node\",\"TeXAtom\",[],{texClass:a.TEXCLASS.OPEN}),t.Push(i)}else{var s=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);t.Push(s)}}},e.default=i},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var a=r(0),o=r(46),i=r(20);r(88),e.BussproofsConfiguration=a.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(n={},n[o.ProofTreeItem.prototype.kind]=o.ProofTreeItem,n),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var o=r(2),i=r(11),s=r(23),l=r(20),c=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new s.default(e.factory,{},!0),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return l.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),i.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var n=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[n,e],{})},e}(i.BaseItem);e.ProofTreeItem=c},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(2),i=r(6),s=r(4),l=r(20),c={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=u(t,t.GetArgument(e));l.setProperty(n,\"axiom\",!0),r.Push(n)}},u=function(t,e){var r=s.default.internalMath(t,s.default.trimSpaces(e),0);if(!r[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var n=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),o=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",a([n],r,[o]))};function p(t,e,r,n,a,o,i){var s,c,u,p,f=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),d=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",r,{})],{}),h=t.create(\"node\",\"mtable\",i?[d,f]:[f,d],{align:\"top 2\",rowlines:o,framespacing:\"0 0\"});if(l.setProperty(h,\"inferenceRule\",i?\"up\":\"down\"),n&&(s=t.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),l.setProperty(s,\"prooflabel\",\"left\")),a&&(c=t.create(\"node\",\"mpadded\",[a],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),l.setProperty(c,\"prooflabel\",\"right\")),n&&a)u=[s,h,c],p=\"both\";else if(n)u=[s,h],p=\"left\";else{if(!a)return h;u=[h,c],p=\"right\"}return h=t.create(\"node\",\"mrow\",u),l.setProperty(h,\"labelledRule\",p),h}function f(t,e){if(\"$\"!==t.GetNext())throw new o.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var r=t.GetUpTo(e,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new o.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var a=n(r.split(\"\\\\fCenter\"),2),s=a[0],c=a[1],u=new i.default(s,t.stack.env,t.configuration).mml(),p=new i.default(c,t.stack.env,t.configuration).mml(),f=new i.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mtd\",[u],{}),h=t.create(\"node\",\"mtd\",[f],{}),m=t.create(\"node\",\"mtd\",[p],{}),g=t.create(\"node\",\"mtr\",[d,h,m],{}),v=t.create(\"node\",\"mtable\",[g],{columnspacing:\".5ex\",columnalign:\"center 2\"});return l.setProperty(v,\"sequent\",!0),t.configuration.addNode(\"sequent\",g),v}c.Inference=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(n.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var a=n.getProperty(\"rootAtTop\"),i=1!==r||n.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[n.Pop()],{rowalign:a?\"top\":\"bottom\"})),r--}while(r>0);var c=t.create(\"node\",\"mtr\",s,{}),f=t.create(\"node\",\"mtable\",[c],{framespacing:\"0 0\"}),d=u(t,t.GetArgument(e)),h=n.getProperty(\"currentLine\");h!==n.getProperty(\"line\")&&n.setProperty(\"currentLine\",n.getProperty(\"line\"));var m=p(t,f,[d],n.getProperty(\"left\"),n.getProperty(\"right\"),h,a);n.setProperty(\"left\",null),n.setProperty(\"right\",null),l.setProperty(m,\"inference\",i),t.configuration.addNode(\"inference\",m),n.Push(m)},c.Label=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=s.default.internalMath(t,t.GetArgument(e),0),i=a.length>1?t.create(\"node\",\"mrow\",a,{}):a[0];n.setProperty(r,i)},c.SetLine=function(t,e,r,n){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");a.setProperty(\"currentLine\",r),n&&a.setProperty(\"line\",r)},c.RootAtTop=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"rootAtTop\",r)},c.AxiomF=function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=f(t,e);l.setProperty(n,\"axiom\",!0),r.Push(n)},c.FCenter=function(t,e){},c.InferenceF=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(n.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var a=n.getProperty(\"rootAtTop\"),i=1!==r||n.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[n.Pop()],{rowalign:a?\"top\":\"bottom\"})),r--}while(r>0);var c=t.create(\"node\",\"mtr\",s,{}),u=t.create(\"node\",\"mtable\",[c],{framespacing:\"0 0\"}),d=f(t,e),h=n.getProperty(\"currentLine\");h!==n.getProperty(\"line\")&&n.setProperty(\"currentLine\",n.getProperty(\"line\"));var m=p(t,u,[d],n.getProperty(\"left\"),n.getProperty(\"right\"),h,a);n.setProperty(\"left\",null),n.setProperty(\"right\",null),l.setProperty(m,\"inference\",i),t.configuration.addNode(\"inference\",m),n.Push(m)},e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var n=r(0),a=r(7),o=r(1),i=r(4),s=r(25);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,r){var n=t.GetBrackets(e,\"\"),a=t.ParseArg(e),o=i.default.keyvalOptions(n,s.ENCLOSE_OPTIONS);o.notation=r,t.Push(t.create(\"node\",\"menclose\",[a],o))},e.CancelMethods.CancelTo=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.ParseArg(e),o=t.ParseArg(e),l=i.default.keyvalOptions(r,s.ENCLOSE_OPTIONS);l.notation=[a.TexConstant.Notation.UPDIAGONALSTRIKE,a.TexConstant.Notation.UPDIAGONALARROW,a.TexConstant.Notation.NORTHEASTARROW].join(\" \"),n=t.create(\"node\",\"mpadded\",[n],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[o],l),n]))},new o.CommandMap(\"cancel\",{cancel:[\"Cancel\",a.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",a.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",a.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+a.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=n.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var n=r(1),a=r(0),o=r(50),i=r(51);new n.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},o.ColorMethods);e.ColorConfiguration=a.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new i.ColorModel})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var n=r(3),a=r(4);function o(t){var e=\"+\"+t,r=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+r,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.GetArgument(e),a=t.configuration.packageData.get(\"color\").model.getColor(r,n),o=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:a}});t.stack.env.color=a,t.Push(o)},e.ColorMethods.TextColor=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.GetArgument(e),a=t.configuration.packageData.get(\"color\").model.getColor(r,n),o=t.stack.env.color;t.stack.env.color=a;var i=t.ParseArg(e);o?t.stack.env.color=o:delete t.stack.env.color;var s=t.create(\"node\",\"mstyle\",[i],{mathcolor:a});t.Push(s)},e.ColorMethods.DefineColor=function(t,e){var r=t.GetArgument(e),n=t.GetArgument(e),a=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(n,r,a)},e.ColorMethods.ColorBox=function(t,e){var r=t.GetArgument(e),i=a.default.internalMath(t,t.GetArgument(e)),s=t.configuration.packageData.get(\"color\").model,l=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",r)});n.default.setProperties(l,o(t.options.color.padding)),t.Push(l)},e.ColorMethods.FColorBox=function(t,e){var r=t.GetArgument(e),i=t.GetArgument(e),s=a.default.internalMath(t,t.GetArgument(e)),l=t.options.color,c=t.configuration.packageData.get(\"color\").model,u=t.create(\"node\",\"mpadded\",s,{mathbackground:c.getColor(\"named\",i),style:\"border: \"+l.borderWidth+\" solid \"+c.getColor(\"named\",r)});n.default.setProperties(u,o(l.padding)),t.Push(u)}},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var a=r(2),o=r(52),i=new Map,s=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(i.has(t))return i.get(t)(e);throw new a.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):o.COLORS.has(t)?o.COLORS.get(t):t},t.prototype.defineColor=function(t,e,r){var n=this.normalizeColor(t,r);this.userColors.set(e,n)},t}();e.ColorModel=s,i.set(\"rgb\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new a.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var s=n(o),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new a.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var u=parseFloat(c);if(u<0||u>1)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var p=Math.floor(255*u).toString(16);p.length<2&&(p=\"0\"+p),i+=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"RGB\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new a.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var s=n(o),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.match(/^\\d+$/))throw new a.default(\"InvalidNumber\",\"Invalid number\");var u=parseInt(c);if(u>255)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var p=u.toString(16);p.length<2&&(p=\"0\"+p),i+=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new a.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var r=Math.floor(255*e).toString(16);return r.length<2&&(r=\"0\"+r),\"#\"+r+r+r}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var n=r(1),a=r(0);e.ColorV2Methods={Color:function(t,e){var r=t.GetArgument(e),n=t.stack.env.color;t.stack.env.color=r;var a=t.ParseArg(e);n?t.stack.env.color=n:delete t.stack.env.color;var o=t.create(\"node\",\"mstyle\",[a],{mathcolor:r});t.Push(o)}},new n.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=a.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var a=r(0),o=r(10),i=r(1),s=r(14),l=r(26);e.ConfigMacrosConfiguration=a.Configuration.create(\"configmacros\",{init:function(t){new i.CommandMap(\"configmacros-map\",{},{}),t.append(a.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,a,o=e.parseOptions.handlers.retrieve(\"configmacros-map\"),i=e.parseOptions.options.macros;try{for(var c=n(Object.keys(i)),u=c.next();!u.done;u=c.next()){var p=u.value,f=\"string\"==typeof i[p]?[i[p]]:i[p],d=Array.isArray(f[2])?new s.Macro(p,l.default.MacroWithTemplate,f.slice(0,2).concat(f[2])):new s.Macro(p,l.default.Macro,f);o.add(p,d)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(a=c.return)&&a.call(c)}finally{if(r)throw r.error}}},options:{macros:o.expandable({})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var n=r(0),a=r(1),o=r(17),i=r(21),s=r(27),l=r(2);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=o.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,r){var n=t.GetArgument(r),a=t.GetArgument(r),o=t.GetArgument(r);if(!n.match(/^\\\\([a-z]+|.)$/i))throw new l.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",r);if(!a.match(/^(\\d+),(\\d+)$/))throw new l.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",r);if(!o.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new l.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",r);n=n.substr(1);var s=a.split(\",\");i.default.addMacro(t,n,e.ExtpfeilMethods.xArrow,[parseInt(o),parseInt(s[0]),parseInt(s[1])])},new a.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=n.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){s.NewcommandConfiguration.init(t)}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var o=r(2),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new o.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(11).BaseItem);e.BeginEnvItem=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var n=r(0),a=r(1),o=r(58);new a.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=n.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(3),a={Href:function(t,e){var r=t.GetArgument(e),a=o(t,e);n.default.setAttribute(a,\"href\",r),t.Push(a)},Class:function(t,e){var r=t.GetArgument(e),a=o(t,e),i=n.default.getAttribute(a,\"class\");i&&(r=i+\" \"+r),n.default.setAttribute(a,\"class\",r),t.Push(a)},Style:function(t,e){var r=t.GetArgument(e),a=o(t,e),i=n.default.getAttribute(a,\"style\");i&&(\";\"!==r.charAt(r.length-1)&&(r+=\";\"),r=i+\" \"+r),n.default.setAttribute(a,\"style\",r),t.Push(a)},Id:function(t,e){var r=t.GetArgument(e),a=o(t,e);n.default.setAttribute(a,\"id\",r),t.Push(a)}},o=function(t,e){var r=t.ParseArg(e);if(!n.default.isInferred(r))return r;var a=n.default.getChildren(r);if(1===a.length)return a[0];var o=t.create(\"node\",\"mrow\");return n.default.copyChildren(r,o),n.default.copyAttributes(r,o),o};e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var n=r(0),a=r(1),o=r(2),i=r(8),s=r(17),l=r(90),c={};c.Macro=i.default.Macro,c.xArrow=s.AmsMethods.xArrow,c.Machine=function(t,e,r){try{var n=t.GetArgument(e),a=l.mhchemParser.go(n,r),i=l.texify.go(a);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new o.default(t[0],t[1],t.slice(2))}},new a.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},c),e.MhchemConfiguration=n.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var n=r(0);e.NoErrorsConfiguration=n.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,r,n){var a=t.create(\"token\",\"mtext\",{},n.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[a],{\"data-mjx-error\":e,title:e})}}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var a=r(0);e.NoUndefinedConfiguration=a.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,a,o=t.create(\"text\",\"\\\\\"+e),i=t.options.noundefined||{},s={};try{for(var l=n([\"color\",\"background\",\"size\"]),c=l.next();!c.done;c=l.next()){var u=c.value;i[u]&&(s[\"math\"+u]=i[u])}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,o))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var a=r(0),o=r(63);r(91),e.PhysicsConfiguration=a.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(n={},n[o.AutoOpen.prototype.kind]=o.AutoOpen,n)})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var o=r(11),i=r(4),s=r(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,r=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var n=t.prototype.toMml.call(this),a=e.create(\"node\",\"mpadded\",[n],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[a]))}r&&this.Push(new s.default(r,e.stack.env,e.configuration).mml());var o=t.prototype.toMml.call(this);return i.default.fenced(this.factory.configuration,this.getProperty(\"open\"),o,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var r=e.getProperty(\"autoclose\");return r&&r===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(o.BaseItem);e.AutoOpen=l},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(8),o=r(6),i=r(2),s=r(5),l=r(4),c=r(3),u=r(18),p={},f={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},d=/^(b|B)i(g{1,2})$/;p.Quantity=function(t,e,r,n,a,u,p){void 0===r&&(r=\"(\"),void 0===n&&(n=\")\"),void 0===a&&(a=!1),void 0===u&&(u=\"\"),void 0===p&&(p=\"\");var h=!!a&&t.GetStar(),m=t.GetNext(),g=t.i,v=null;if(\"\\\\\"===m){if(t.i++,!(v=t.GetCS()).match(d)){var y=t.create(\"node\",\"mrow\");return t.Push(l.default.fenced(t.configuration,r,y,n)),void(t.i=g)}m=t.GetNext()}var b=f[m];if(a&&\"{\"!==m)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!b){y=t.create(\"node\",\"mrow\");return t.Push(l.default.fenced(t.configuration,r,y,n)),void(t.i=g)}if(u){var x=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);p&&c.default.setAttribute(x,\"mathvariant\",p),t.Push(t.itemFactory.create(\"fn\",x))}if(\"{\"===m){var A=t.GetArgument(e);return m=a?r:\"\\\\{\",b=a?n:\"\\\\}\",A=h?m+\" \"+A+\" \"+b:v?\"\\\\\"+v+\"l\"+m+\" \"+A+\" \\\\\"+v+\"r\"+b:\"\\\\left\"+m+\" \"+A+\" \\\\right\"+b,void t.Push(new o.default(A,t.stack.env,t.configuration).mml())}a&&(m=r,b=n),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:m,close:b,big:v}))},p.Eval=function(t,e){var r=t.GetStar(),n=t.GetNext();if(\"{\"!==n){if(\"(\"===n||\"[\"===n)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:n,close:\"|\",smash:r,right:\"\\\\vphantom{\\\\int}\"}));throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var a=t.GetArgument(e),o=\"\\\\left. \"+(r?\"\\\\smash{\"+a+\"}\":a)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+o+t.string.slice(t.i)},p.Commutator=function(t,e,r,n){void 0===r&&(r=\"[\"),void 0===n&&(n=\"]\");var a=t.GetStar(),s=t.GetNext(),l=null;if(\"\\\\\"===s){if(t.i++,!(l=t.GetCS()).match(d))throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var c=t.GetArgument(e)+\",\"+t.GetArgument(e);c=a?r+\" \"+c+\" \"+n:l?\"\\\\\"+l+\"l\"+r+\" \"+c+\" \\\\\"+l+\"r\"+n:\"\\\\left\"+r+\" \"+c+\" \\\\right\"+n,t.Push(new o.default(c,t.stack.env,t.configuration).mml())};var h=[65,90],m=[97,122],g=[913,937],v=[945,969],y=[48,57];function b(t,e){return t>=e[0]&&t<=e[1]}function x(t,e,r,n){var a=t.configuration.parser,o=u.NodeFactory.createToken(t,e,r,n),i=n.codePointAt(0);return 1===n.length&&!a.stack.env.font&&a.stack.env.vectorFont&&(b(i,h)||b(i,m)||b(i,g)||b(i,y)||b(i,v)&&a.stack.env.vectorStar||c.default.getAttribute(o,\"accent\"))&&c.default.setAttribute(o,\"mathvariant\",a.stack.env.vectorFont),o}p.VectorBold=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=t.configuration.nodeFactory.get(\"token\"),i=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",x),t.stack.env.vectorFont=r?\"bold-italic\":\"bold\",t.stack.env.vectorStar=r;var s=new o.default(n,t.stack.env,t.configuration).mml();i&&(t.stack.env.font=i),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",a),t.Push(s)},p.StarMacro=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];var o=t.GetStar(),s=[];if(r)for(var c=s.length;c<r;c++)s.push(t.GetArgument(e));var u=n.join(o?\"*\":\"\");if(u=l.default.substituteArgs(t,s,u),t.string=l.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var A=function(t,e,r,n,a){var i=new o.default(n,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,i));var s=t.GetNext(),l=f[s];if(l){var c=-1!==a.indexOf(s);if(\"{\"===s){var u=(c?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(r)+\" \"+(c?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}c&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:l})))}};function M(t,e,r){var a=n(t,3),o=a[0],i=a[1],s=a[2];return e&&r?\"\\\\left\\\\langle{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+o+\"}\\\\vert{\"+i+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+o+\"}\\\\right\\\\vert{\"+i+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}p.OperatorApplication=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];A(t,\"fn\",e,r,n)},p.VectorOperator=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];A(t,\"mml\",e,r,n)},p.Expression=function(t,e,r,n){void 0===r&&(r=!0),void 0===n&&(n=\"\"),n=n||e.slice(1);var a=r?t.GetBrackets(e):null,i=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},n);if(a){var l=new o.default(a,t.stack.env,t.configuration).mml();i=t.create(\"node\",\"msup\",[i,l])}t.Push(t.itemFactory.create(\"fn\",i)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},p.Qqtext=function(t,e,r){var n=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(r||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+n+t.string.slice(t.i)},p.Differential=function(t,e,r){var n=t.GetBrackets(e),a=null!=n?\"^{\"+n+\"}\":\" \",i=\"(\"===t.GetNext(),l=\"{\"===t.GetNext(),c=r+a;if(i||l)if(l){c+=t.GetArgument(e);u=new o.default(c,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new o.default(c,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{c+=t.GetArgument(e,!0)||\"\";var u=new o.default(c,t.stack.env,t.configuration).mml();t.Push(u)}},p.Derivative=function(t,e,r,n){var a=t.GetStar(),i=t.GetBrackets(e),s=1,l=[];for(l.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<r;)l.push(t.GetArgument(e)),s++;var c=!1,u=\" \",p=\" \";r>2&&l.length>2?(u=\"^{\"+(l.length-1)+\"}\",c=!0):null!=i&&(r>2&&l.length>1&&(c=!0),p=u=\"^{\"+i+\"}\");for(var f=a?\"\\\\flatfrac\":\"\\\\frac\",d=l.length>1?l[0]:\"\",h=l.length>1?l[1]:l[0],m=\"\",g=2,v=void 0;v=l[g];g++)m+=n+\" \"+v;var y=f+\"{\"+n+u+d+\"}{\"+n+\" \"+h+p+\" \"+m+\"}\";t.Push(new o.default(y,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:c})))},p.Bra=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=\"\",i=!1,s=!1;if(\"\\\\\"===t.GetNext()){var l=t.i;t.i++;var c=t.GetCS(),u=t.lookup(\"macro\",c);u&&\"ket\"===u.symbol?(i=!0,l=t.i,s=t.GetStar(),\"{\"===t.GetNext()?a=t.GetArgument(c,!0):(t.i=l,s=!1)):t.i=l}var p=\"\";p=i?r||s?\"\\\\langle{\"+n+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\":r||s?\"\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\langle{\"+n+\"}\\\\right\\\\vert{\"+a+\"}\",t.Push(new o.default(p,t.stack.env,t.configuration).mml())},p.Ket=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=r?\"\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+n+\"}\\\\right\\\\rangle\";t.Push(new o.default(a,t.stack.env,t.configuration).mml())},p.BraKet=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=null;\"{\"===t.GetNext()&&(a=t.GetArgument(e,!0));var i=\"\";i=null==a?r?\"\\\\langle{\"+n+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":r?\"\\\\langle{\"+n+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},p.KetBra=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=null;\"{\"===t.GetNext()&&(a=t.GetArgument(e,!0));var i=\"\";i=null==a?r?\"\\\\vert{\"+n+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+n+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\":r?\"\\\\vert{\"+n+\"}\\\\rangle\\\\!\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\vert{\"+n+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+a+\"}\\\\right\\\\vert\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},p.Expectation=function(t,e){var r=t.GetStar(),n=r&&t.GetStar(),a=t.GetArgument(e),i=null;\"{\"===t.GetNext()&&(i=t.GetArgument(e,!0));var s=a&&i?M([i,a,i],r,n):r?\"\\\\langle {\"+a+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+a+\"} \\\\right\\\\rangle\";t.Push(new o.default(s,t.stack.env,t.configuration).mml())},p.MatrixElement=function(t,e){var r=t.GetStar(),n=r&&t.GetStar(),a=M([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],r,n);t.Push(new o.default(a,t.stack.env,t.configuration).mml())},p.MatrixQuantity=function(t,e,r){var n=t.GetStar(),a=r?\"smallmatrix\":\"array\",i=\"\",s=\"\",l=\"\";switch(t.GetNext()){case\"{\":i=t.GetArgument(e);break;case\"(\":t.i++,s=n?\"\\\\lgroup\":\"(\",l=n?\"\\\\rgroup\":\")\",i=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",l=\"]\",i=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",l=\"|\",i=t.GetUpTo(e,\"|\");break;default:s=\"(\",l=\")\"}var c=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+a+\"}{} \"+i+\"\\\\end{\"+a+\"}\"+(s?\"\\\\right\":\"\")+l;t.Push(new o.default(c,t.stack.env,t.configuration).mml())},p.IdentityMatrix=function(t,e){var r=t.GetArgument(e),n=parseInt(r,10);if(isNaN(n))throw new i.default(\"InvalidNumber\",\"Invalid number\");if(n<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var a=Array(n).fill(\"0\"),o=[],s=0;s<n;s++){var l=a.slice();l[s]=\"1\",o.push(l.join(\" & \"))}t.string=o.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},p.XMatrix=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=t.GetArgument(e),o=t.GetArgument(e),s=parseInt(a,10),l=parseInt(o,10);if(isNaN(s)||isNaN(l)||l.toString()!==o||s.toString()!==a)throw new i.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,l=l<1?1:l,!r){var c=Array(l).fill(n).join(\" & \"),u=Array(s).fill(c).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var p=\"\";if(1===s&&1===l)p=n;else if(1===s){c=[];for(var f=1;f<=l;f++)c.push(n+\"_{\"+f+\"}\");p=c.join(\" & \")}else if(1===l){for(c=[],f=1;f<=s;f++)c.push(n+\"_{\"+f+\"}\");p=c.join(\"\\\\\\\\ \")}else{var d=[];for(f=1;f<=s;f++){c=[];for(var h=1;h<=l;h++)c.push(n+\"_{{\"+f+\"}{\"+h+\"}}\");d.push(c.join(\" & \"))}p=d.join(\"\\\\\\\\ \")}t.string=p+t.string.slice(t.i),t.i=0},p.PauliMatrix=function(t,e){var r=t.GetArgument(e),n=r.slice(1);switch(r[0]){case\"0\":n+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":n+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":n+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":n+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=n+t.string.slice(t.i),t.i=0},p.DiagonalMatrix=function(t,e,r){if(\"{\"===t.GetNext()){var n=t.i;t.GetArgument(e);var a=t.i;t.i=n+1;for(var o=[],i=\"\",s=t.i;s<a;){try{i=t.GetUpTo(e,\",\")}catch(e){t.i=a,o.push(t.string.slice(s,a-1));break}if(t.i>=a){o.push(t.string.slice(s,a));break}s=t.i,o.push(i)}t.string=function(t,e){for(var r=t.length,n=[],a=0;a<r;a++)n.push(Array(e?r-a:a+1).join(\"&\")+\"\\\\mqty{\"+t[a]+\"}\");return n.join(\"\\\\\\\\ \")}(o,r)+t.string.slice(a),t.i=0}},p.AutoClose=function(t,e,r){var n=t.create(\"token\",\"mo\",{stretchy:!1},e),a=t.itemFactory.create(\"mml\",n).setProperties({autoclose:e});t.Push(a)},p.Macro=a.default.Macro,p.NamedFn=a.default.NamedFn,p.Array=a.default.Array,e.default=p},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var o=r(0),i=r(9),s=0;function l(t,e){var r=e.parseOptions.options.tags;\"base\"!==r&&t.tags.hasOwnProperty(r)&&i.TagsFactory.add(r,t.tags[r]);var n=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return a(r,t),r.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},r.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},r.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},r.prototype.formatUrl=function(t,r){return e.parseOptions.options.tagformat.url(t,r)},r}(i.TagsFactory.create(e.parseOptions.options.tags).constructor),o=\"configTags-\"+ ++s;i.TagsFactory.add(o,n),e.parseOptions.options.tags=o}e.tagformatConfig=l,e.TagFormatConfiguration=o.Configuration.create(\"tagformat\",{config:[l,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var a=r(0),o=r(24),i=r(9),s=r(15),l=r(67),c=r(28);function u(t,e,r,n){var a=t.configuration.packageData.get(\"textmacros\");return t instanceof l.TextParser||(a.texParser=t),[new l.TextParser(e,n?{mathvariant:n}:{},a.parseOptions,r).mml()]}r(93),e.textBase=a.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var r=t.texParser,n=r.lookup(\"macro\",e);n&&n._func!==c.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),r.parse(\"macro\",[n?t:r,e])}},items:(n={},n[s.StartItem.prototype.kind]=s.StartItem,n[s.StopItem.prototype.kind]=s.StopItem,n[s.MmlItem.prototype.kind]=s.MmlItem,n[s.StyleItem.prototype.kind]=s.StyleItem,n)}),a.Configuration.create(\"textmacros\",{config:function(t,r){var n=new a.ParserConfiguration([]);n.append(e.textBase),n.init();var s=new o.default(n,[]);s.options=r.parseOptions.options,n.config(r),i.TagsFactory.addTags(n.tags),s.tags=i.TagsFactory.getDefault(),s.tags.configuration=s,s.packageData=r.parseOptions.packageData,s.packageData.set(\"textmacros\",{parseOptions:s,jax:r,texParser:null}),s.options.internalMath=u},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var l=r(6),c=r(2),u=r(4),p=r(5),f=r(3),d=r(15),h=function(t){function e(e,r,n,a){var o=t.call(this,e,r,n)||this;return o.level=a,o}return a(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=u.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof d.StopItem)return t.prototype.Push.call(this,e);e instanceof d.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof p.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,r,n=this.stack.env;try{for(var a=o([\"mathsize\",\"mathcolor\"]),i=a.next();!i.done;i=a.next()){var s=i.value;n[s]&&!t.attributes.getExplicit(s)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),f.default.setAttribute(t,s,n[s]))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,r,n=this.stack.env;if(t.isToken)try{for(var a=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),i=a.next();!i.done;i=a.next()){var s=i.value;n[s]&&!t.attributes.getExplicit(s)&&f.default.setAttribute(t,s,n[s])}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,r){return new e(this.GetArgument(t),r=Object.assign(Object.assign({},this.stack.env),r),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];throw new(c.default.bind.apply(c.default,s([void 0,t,e],r)))},e}(l.default);e.TextParser=h},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=r(0),a=r(2),o=r(1),i=r(4),s=r(3),l=r(13);e.UnicodeMethods={};var c={};e.UnicodeMethods.Unicode=function(t,e){var r=t.GetBrackets(e),n=null,o=null;r&&(r.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(n=r.replace(/ /g,\"\").split(/,/),o=t.GetBrackets(e)):o=r);var u=i.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!u.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new a.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var p=parseInt(u.match(/^x/)?\"0\"+u:u);c[p]?o||(o=c[p][2]):c[p]=[800,200,o,p],n&&(c[p][0]=Math.floor(1e3*parseFloat(n[0])),c[p][1]=Math.floor(1e3*parseFloat(n[1])));var f=t.stack.env.font,d={};o?(c[p][2]=d.fontfamily=o.replace(/'/g,\"'\"),f&&(f.match(/bold/)&&(d.fontweight=\"bold\"),f.match(/italic|-mathit/)&&(d.fontstyle=\"italic\"))):f&&(d.mathvariant=f);var h=t.create(\"token\",\"mtext\",d,l.numeric(u));s.default.setProperty(h,\"unicode\",!0),t.Push(h)},new o.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var n=r(0),a=r(7),o=r(1),i=r(2);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var r=t.GetNext(),n=++t.i;if(\"\"===r)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==r;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(n,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:a.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=n.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var o=r(0),i=r(1),s=r(14),l=r(29),c=r(74),u=r(10);function p(t,e,r,o){var i,s,u,p;if(c.Package.packages.has(t.options.require.prefix+r)){var h=t.options.autoload[r],m=n(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),g=m[0],v=m[1];try{for(var y=a(g),b=y.next();!b.done;b=y.next()){var x=b.value;f.remove(x)}}catch(t){i={error:t}}finally{try{b&&!b.done&&(s=y.return)&&s.call(y)}finally{if(i)throw i.error}}try{for(var A=a(v),M=A.next();!M.done;M=A.next()){var _=M.value;d.remove(_)}}catch(t){u={error:t}}finally{try{M&&!M.done&&(p=A.return)&&p.call(A)}finally{if(u)throw u.error}}t.string=(o?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}l.RequireLoad(t,r)}var f=new i.CommandMap(\"autoload-macros\",{},{}),d=new i.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=o.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:u.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,o,i,c,u,h,m=e.parseOptions,g=m.handlers.get(\"macro\"),v=m.handlers.get(\"environment\"),y=m.options.autoload;m.packageData.set(\"autoload\",{Autoload:p});try{for(var b=a(Object.keys(y)),x=b.next();!x.done;x=b.next()){var A=x.value,M=y[A],_=n(2===M.length&&Array.isArray(M[0])?M:[M,[]],2),C=_[0],P=_[1];try{for(var w=(i=void 0,a(C)),S=w.next();!S.done;S=w.next()){var T=S.value;g.lookup(T)&&\"color\"!==T||f.add(T,new s.Macro(T,p,[A,!0]))}}catch(t){i={error:t}}finally{try{S&&!S.done&&(c=w.return)&&c.call(w)}finally{if(i)throw i.error}}try{for(var k=(u=void 0,a(P)),O=k.next();!O.done;O=k.next()){var E=O.value;v.lookup(E)||d.add(E,new s.Macro(E,p,[A,!1]))}}catch(t){u={error:t}}finally{try{O&&!O.done&&(h=k.return)&&h.call(k)}finally{if(u)throw u.error}}}}catch(t){r={error:t}}finally{try{x&&!x.done&&(o=b.return)&&o.call(b)}finally{if(r)throw r.error}}m.packageData.get(\"require\")||l.RequireConfiguration.config(t,e)},init:function(t){t.options.require||u.defaultOptions(t.options,l.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(7),o=r(8),i=r(12),s=r(5);new n.RegExpMap(\"letter\",i.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",i.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",i.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},o.default),new n.CharacterMap(\"mathchar0mi\",i.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:a.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:a.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:a.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:a.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:a.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:a.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:a.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:a.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:a.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:a.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:a.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:a.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:a.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:a.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:a.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:a.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:a.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:a.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:a.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:a.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:a.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:a.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",i.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",i.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",i.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,a.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,a.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,a.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,a.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,a.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},o.default),new n.EnvironmentMap(\"environment\",i.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+a.TexConstant.Length.THICKMATHSPACE,\".5em\"]},o.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(17),a=r(1),o=r(7),i=r(12),s=r(4),l=r(5),c=function(t){for(var e=[],r=0,n=t.length;r<n;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new a.CharacterMap(\"AMSmath-mathchar0mo\",i.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:l.TEXCLASS.OP}]}),new a.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",o.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",o.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",o.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",o.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},n.AmsMethods),new a.EnvironmentMap(\"AMSmath-environment\",i.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+o.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",c([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,c([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",c([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},n.AmsMethods),new a.DelimiterMap(\"AMSmath-delimiter\",i.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:l.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:l.TEXCLASS.CLOSE}]}),new a.CharacterMap(\"AMSsymbols-mathchar0mi\",i.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:o.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:o.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:o.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:o.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:o.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:o.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:o.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:o.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:o.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:o.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:o.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new a.CharacterMap(\"AMSsymbols-mathchar0m0\",i.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new a.DelimiterMap(\"AMSsymbols-delimiter\",i.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new a.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},n.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(12),o=r(39);new n.EnvironmentMap(\"amscd_environment\",a.default.environment,{CD:\"CD\"},o.default),new n.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new n.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(44);new n.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},a.default),new n.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(47),a=r(12),o=r(1);new o.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},n.default),new o.EnvironmentMap(\"Bussproofs-environments\",a.default.environment,{prooftree:[\"Prooftree\",null,!1]},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(26);new(r(1).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var r,a=\"0\",o={};o.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,s=[];;){r!==t?(i=10,r=t):i--;var l=n.stateMachines[e],c=l.transitions[a]||l.transitions[\"*\"];t:for(var u=0;u<c.length;u++){var p=n.patterns.match_(c[u].pattern,t);if(p){for(var f=c[u].task,d=0;d<f.action_.length;d++){var h;if(l.actions[f.action_[d].type_])h=l.actions[f.action_[d].type_](o,p.match_,f.action_[d].option);else{if(!n.actions[f.action_[d].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+f.action_[d].type_+\")\"];h=n.actions[f.action_[d].type_](o,p.match_,f.action_[d].option)}n.concatArray(s,h)}if(a=f.nextState||a,!(t.length>0))return s;if(f.revisit||(t=p.remainder),!f.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var r=0;r<e.length;r++)t.push(e[r]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=n.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var r=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return r?{match_:r[0],remainder:t.substr(r[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return n.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return n.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return n.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return n.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return n.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return n.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var r=n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return r&&(e=r.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,r,n,a,o,i,s,l,c){var u=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var r=t.match(e);return r?r[0]:null},p=u(t,e);if(null===p)return null;if(t=t.substr(p.length),null===(p=u(t,r)))return null;var f=function(t,e,r){for(var n=0;e<t.length;){var a=t.charAt(e),o=u(t.substr(e),r);if(null!==o&&0===n)return{endMatchBegin:e,endMatchEnd:e+o.length};if(\"{\"===a)n++;else if(\"}\"===a){if(0===n)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];n--}e++}return null}(t,p.length,n||a);if(null===f)return null;var d=t.substring(0,n?f.endMatchEnd:f.endMatchBegin);if(o||i){var h=this.findObserveGroups(t.substr(f.endMatchEnd),o,i,s,l);if(null===h)return null;var m=[d,h.match_];return{match_:c?m.join(\"\"):m,remainder:h.remainder}}return{match_:d,remainder:t.substr(f.endMatchEnd)}},match_:function(t,e){var r=n.patterns.patterns[t];if(void 0===r)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof r)return n.patterns.patterns[t](e);var a=e.match(r);return a?{match_:a[2]?[a[1],a[2]]:a[1]?a[1]:a[0],remainder:e.substr(a[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,r){return{type_:r}},\"insert+p1\":function(t,e,r){return{type_:r,p1:e}},\"insert+p1+p2\":function(t,e,r){return{type_:r,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return n.go(e,\"text\")},\"{text}\":function(t,e){var r=[\"{\"];return n.concatArray(r,n.go(e,\"text\")),r.push(\"}\"),r},\"tex-math\":function(t,e){return n.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return n.go(e,\"tex-math tight\")},bond:function(t,e,r){return{type_:\"bond\",kind_:r||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return n.go(e)},\"1/2\":function(t,e){var r=[];e.match(/^[+\\-]/)&&(r.push(e.substr(0,1)),e=e.substr(1));var n=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return n[1]=n[1].replace(/\\$/g,\"\"),r.push({type_:\"frac\",p1:n[1],p2:n[2]}),n[3]&&(n[3]=n[3].replace(/\\$/g,\"\"),r.push({type_:\"tex-math\",p1:n[3]})),r},\"9,9\":function(t,e){return n.go(e,\"9,9\")}},createTransitions:function(t){var e,r,n,a,o={};for(e in t)for(r in t[e])for(n=r.split(\"|\"),t[e][r].stateArray=n,a=0;a<n.length;a++)o[n[a]]=[];for(e in t)for(r in t[e])for(n=t[e][r].stateArray||[],a=0;a<n.length;a++){var i=t[e][r];if(i.action_){i.action_=[].concat(i.action_);for(var s=0;s<i.action_.length;s++)\"string\"==typeof i.action_[s]&&(i.action_[s]={type_:i.action_[s]})}else i.action_=[];for(var l=e.split(\"|\"),c=0;c<l.length;c++)if(\"*\"===n[a])for(var u in o)o[u].push({pattern:l[c],task:i});else o[n[a]].push({pattern:l[c],task:i})}return o},stateMachines:{}};n.stateMachines={ce:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var r;if((t.d||\"\").match(/^[0-9]+$/)){var a=t.d;t.d=void 0,r=this.output(t),t.b=a}else r=this.output(t);return n.actions[\"o=\"](t,e),r},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var r=[];return n.concatArray(r,this.output(t)),n.concatArray(r,n.actions.bond(t,e,\"-\")),r}t.d=e},\"- after o/d\":function(t,e,r){var a=n.patterns.match_(\"orbital\",t.o||\"\"),o=n.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=n.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),s=n.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),l=\"-\"===e&&(a&&\"\"===a.remainder||o||i||s);!l||t.a||t.b||t.p||t.d||t.q||a||!i||(t.o=\"$\"+t.o+\"$\");var c=[];return l?(n.concatArray(c,this.output(t)),c.push({type_:\"hyphen\"})):(a=n.patterns.match_(\"digits\",t.d||\"\"),r&&a&&\"\"===a.remainder?(n.concatArray(c,n.actions[\"d=\"](t,e)),n.concatArray(c,this.output(t))):(n.concatArray(c,this.output(t)),n.concatArray(c,n.actions.bond(t,e,\"-\")))),c},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:n.go(e,\"o\")}},comma:function(t,e){var r=e.replace(/\\s*$/,\"\");return r!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:r}:{type_:\"comma enumeration M\",p1:r}},output:function(t,e,r){var a,o,i;t.r?(o=\"M\"===t.rdt?n.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:n.go(t.rd),i=\"M\"===t.rqt?n.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:n.go(t.rq),a={type_:\"arrow\",r:t.r,rd:o,rq:i}):(a=[],(t.a||t.b||t.p||t.o||t.q||t.d||r)&&(t.sb&&a.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===r?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&n.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),a.push({type_:\"chemfive\",a:n.go(t.a,\"a\"),b:n.go(t.b,\"bd\"),p:n.go(t.p,\"pq\"),o:n.go(t.o,\"o\"),q:n.go(t.q,\"pq\"),d:n.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var s in t)\"parenthesisLevel\"!==s&&\"beginsWithBond\"!==s&&delete t[s];return a},\"oxidation-output\":function(t,e){var r=[\"{\"];return n.concatArray(r,n.go(e,\"oxidation\")),r.push(\"}\"),r},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:n.go(e[0]),p2:n.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:n.go(e[0]),p2:n.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}}}},a:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var r in t)delete t[r];return e}}}},pq:{transitions:n.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:n.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"pq\")}}}},bd:{transitions:n.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"bd\")}}}},oxidation:{transitions:n.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"tex-math tight\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"9,9\":{transitions:n.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),e[1]&&(n.concatArray(r,n.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?n.concatArray(r,n.go(e[2],\"pu-9,9\")):r.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?r.push({type_:\"cdot\"}):r.push({type_:\"times\"}))),e[3]&&r.push(\"10^{\"+e[5]+\"}\"),r},\"number^\":function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),n.concatArray(r,n.go(e[1],\"pu-9,9\")),r.push(\"^{\"+e[2]+\"}\"),r},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,r=n.patterns.match_(\"{(...)}\",t.d||\"\");r&&\"\"===r.remainder&&(t.d=r.match_);var a=n.patterns.match_(\"{(...)}\",t.q||\"\");if(a&&\"\"===a.remainder&&(t.q=a.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var o={d:n.go(t.d,\"pu\"),q:n.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:o.d,p2:o.q}:(e=o.d,o.d.length>1||o.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),n.concatArray(e,o.q))}else e=n.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var r=n.patterns.match_(\"{(...)}\",t.rm||\"\");e=r&&\"\"===r.remainder?n.go(r.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var a in t)delete t[a];return e}}},\"pu-9,9\":{transitions:n.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var r=t.text_.length%3;0===r&&(r=3);for(var n=t.text_.length-3;n>0;n-=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,r)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var r=t.text_.length-3,n=0;n<r;n+=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(n))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var a={go:function(t,e){if(!t)return\"\";for(var r=\"\",n=!1,o=0;o<t.length;o++){var i=t[o];\"string\"==typeof i?r+=i:(r+=a._go2(i),\"1st-level escape\"===i.type_&&(n=!0))}return e||n||!r||(r=\"{\"+r+\"}\"),r},_goInner:function(t){return t?a.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var r={a:a._goInner(t.a),b:a._goInner(t.b),p:a._goInner(t.p),o:a._goInner(t.o),q:a._goInner(t.q),d:a._goInner(t.d)};r.a&&(r.a.match(/^[+\\-]/)&&(r.a=\"{\"+r.a+\"}\"),e+=r.a+\"\\\\,\"),(r.b||r.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(r.b||\"\")+\"}}_{\\\\hphantom{\"+(r.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(r.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(r.p||\"\")+\"}}}\"),r.o&&(r.o.match(/^[+\\-]/)&&(r.o=\"{\"+r.o+\"}\"),e+=r.o),\"kv\"===t.dType?((r.d||r.q)&&(e+=\"{\\\\vphantom{X}}\"),r.d&&(e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):\"oxidation\"===t.dType?(r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):(r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\"),r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+a._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+a._goInner(t.p1);break;case\"bond\":if(!(e=a._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var n=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"pu-frac\":var o=\"\\\\frac{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+o+\"}{\"+o+\"}{\"+o+\"}{\"+o+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+a._goInner(t.p1)+\"}_{\"+a._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+a._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:a._goInner(t.rd),rq:a._goInner(t.rq)},s=a._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(s=\"\\\\long\"+s,i.rd&&(s=\"\\\\overset{\"+i.rd+\"}{\"+s+\"}\"),i.rq&&(s=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+s+\"}\"),s=\" {}\\\\mathrel{\"+s+\"}{} \"):(i.rq&&(s+=\"[{\"+i.rq+\"}]\"),s=\" {}\\\\mathrel{\\\\x\"+(s+=\"{\"+i.rd+\"}\")+\"}{} \"):s=\" {}\\\\mathrel{\\\\long\"+s+\"}{} \",e=s;break;case\"operator\":e=a._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function o(t){}function i(t){}e.mhchemParser=n,e.texify=a,e.assertNever=o,e.assertString=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(64),o=r(7),i=r(12),s=r(5);new n.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",o.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},a.default),new n.CharacterMap(\"Physics-vector-chars\",i.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:o.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:o.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:o.TexConstant.Variant.NORMAL}]}),new n.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},a.default),new n.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},a.default),new n.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},a.default),new n.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},a.default),new n.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},a.default),new n.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},a.default),new n.EnvironmentMap(\"Physics-aux-envs\",i.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},a.default),new n.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(7),o=r(28);new n.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new n.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";r.r(e);var n=r(22),a=r(30),o=r(31),i=r(0),s=r(33),l=r(32),c=r(16),u=r(18),p=r(3),f=r(12),d=r(24),h=r(4),m=r(23),g=r(11),v=r(34),y=r(14),b=r(1),x=r(9),A=r(7),M=r(2),_=r(6),C=r(35),P=r(38),w=r(39),S=r(36),T=r(37),k=r(17),O=r(75),E=r(19),I=r(15),N=r(8),q=r(40),L=r(41),F=r(42),B=r(43),R=r(44),G=r(45),j=r(46),D=r(47),$=r(20),H=r(48),V=r(53),X=r(49),z=r(52),U=r(50),K=r(51),J=r(54),Q=r(25),W=r(55),Z=r(57),Y=r(58),tt=r(59),et=r(27),rt=r(56),nt=r(26),at=r(21),ot=r(60),it=r(61),st=r(62),lt=r(63),ct=r(64),ut=r(29),pt=r(65),ft=r(66),dt=r(28),ht=r(67),mt=r(68),gt=r(69);Object(n.combineWithMathJax)({_:{input:{tex_ts:a,tex:{AllPackages:o,Configuration:i,FilterUtil:s,FindTeX:l,MapHandler:c,NodeFactory:u,NodeUtil:p,ParseMethods:f,ParseOptions:d,ParseUtil:h,Stack:m,StackItem:g,StackItemFactory:v,Symbol:y,SymbolMap:b,Tags:x,TexConstants:A,TexError:M,TexParser:_,action:{ActionConfiguration:C},amscd:{AmsCdConfiguration:P,AmsCdMethods:w},ams:{AmsConfiguration:S,AmsItems:T,AmsMethods:k},autoload:{AutoloadConfiguration:O},base:{BaseConfiguration:E,BaseItems:I,BaseMethods:N},bbox:{BboxConfiguration:q},boldsymbol:{BoldsymbolConfiguration:L},braket:{BraketConfiguration:F,BraketItems:B,BraketMethods:R},bussproofs:{BussproofsConfiguration:G,BussproofsItems:j,BussproofsMethods:D,BussproofsUtil:$},cancel:{CancelConfiguration:H},colorv2:{ColorV2Configuration:V},color:{ColorConfiguration:X,ColorConstants:z,ColorMethods:U,ColorUtil:K},configmacros:{ConfigMacrosConfiguration:J},enclose:{EncloseConfiguration:Q},extpfeil:{ExtpfeilConfiguration:W},html:{HtmlConfiguration:Z,HtmlMethods:Y},mhchem:{MhchemConfiguration:tt},newcommand:{NewcommandConfiguration:et,NewcommandItems:rt,NewcommandMethods:nt,NewcommandUtil:at},noerrors:{NoErrorsConfiguration:ot},noundefined:{NoUndefinedConfiguration:it},physics:{PhysicsConfiguration:st,PhysicsItems:lt,PhysicsMethods:ct},require:{RequireConfiguration:ut},tagformat:{TagFormatConfiguration:pt},textmacros:{TextMacrosConfiguration:ft,TextMacrosMethods:dt,TextParser:ht},unicode:{UnicodeConfiguration:mt},verb:{VerbConfiguration:gt}}}}});var vt,yt=r(10);function bt(t,e,r){var a,o,i,s=MathJax.config.tex;if(s&&s.packages){var l=s.packages,c=l.indexOf(t);c>=0&&(l[c]=e),r&&s[t]&&(Object(n.combineConfig)(s,(a={},o=e,i=s[t],o in a?Object.defineProperty(a,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[o]=i,a)),delete s[t])}}function xt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}r(70).Loader.preLoad(\"input/tex-base\",\"[tex]/all-packages\",\"[tex]/require\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",a.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(yt.insert)(MathJax.config.tex,{packages:e})}}([\"require\"].concat(function(t){if(Array.isArray(t))return xt(t)}(vt=o.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(vt)||function(t,e){if(t){if(\"string\"==typeof t)return xt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?xt(t,e):void 0}}(vt)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),bt(\"amsCd\",\"amscd\",!0),bt(\"colorV2\",\"colorv2\",!1),bt(\"configMacros\",\"configmacros\",!1),bt(\"tagFormat\",\"tagformat\",!0)}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/input/tex.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(n,a,function(e){return t[e]}.bind(null,a));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=54)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),a=1,i=n.length;a<i;a+=2){var o=n[a].charAt(0);if(o>=\"0\"&&o<=\"9\")n[a]=r[parseInt(n[a],10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else if(\"{\"===o){if((o=n[a].substr(1))>=\"0\"&&o<=\"9\")n[a]=r[parseInt(n[a].substr(1,n[a].length-2),10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else n[a].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[a]=\"%\"+n[a])}null==n[a]&&(n[a]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,s=r(5),l=r(46);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var a,i;try{for(var o=n(Object.keys(r)),s=o.next();!s.done;s=o.next()){var l=s.value,u=r[l];\"texClass\"===l?(t.texClass=u,t.setProperty(l,u)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",u),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",u)):\"inferred\"===l||(e.has(l)?t.setProperty(l,u):t.attributes.set(l,u))}}catch(t){a={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(a)throw a.error}}}function a(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function o(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,a;try{for(var i=n(e),o=i.next();!o.done;o=i.next()){var s=o.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,i(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=a,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)a(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=o,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!o(t,\"mo\"))return null;var a=t,i=a.getForms();try{for(var s=n(i),u=s.next();!u.done;u=s.next()){var c=u.value,f=l.MmlMo.OPTABLE[c][a.getText()];if(f)return f}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(10),u=r(12),c=function(){function t(t,e){this._name=t,this._parser=e,u.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.parserFor(n),o=this.lookup(n);return a&&o?a(r,o)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=c;var f=function(t){function e(e,r,n){var a=t.call(this,e,r)||this;return a._regExp=n,a}return a(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(c);e.RegExpMap=f;var p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return a(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(c);e.AbstractParseMap=p;var d=function(t){function e(e,r,n){var a,s,u=t.call(this,e,r)||this;try{for(var c=o(Object.keys(n)),f=c.next();!f.done;f=c.next()){var p=f.value,d=n[p],h=i(\"string\"==typeof d?[d,null]:d,2),m=h[0],g=h[1],y=new l.Symbol(p,m,g);u.add(p,y)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}return u}return a(e,t),e}(p);e.CharacterMap=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(e){var r=i(e,2),n=r[0],a=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+a])},e}(d);e.DelimiterMap=h;var m=function(t){function e(e,r,n){var a,s,u=t.call(this,e,null)||this;try{for(var c=o(Object.keys(r)),f=c.next();!f.done;f=c.next()){var p=f.value,d=r[p],h=i(\"string\"==typeof d?[d]:d),m=h[0],g=h.slice(1),y=new l.Macro(p,n[m],g);u.add(p,y)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}return u}return a(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);return a&&o?o.apply(void 0,s([r,a.symbol],a.args))||!0:null},e}(p);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);if(!a||!o)return null;if(!o)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var u=o.apply(void 0,s([r,\"\\\\\"+a.symbol],a.args));return r.currentCS=l,u||!0},e}(m);e.CommandMap=g;var y=function(t){function e(e,r,n,a){var i=t.call(this,e,n,a)||this;return i.parser=r,i}return a(e,t),e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);return a&&o?(this.parser(r,a.symbol,o,a.args),!0):null},e}(m);e.EnvironmentMap=y},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(5),s=r(1),l=r(8),u=r(0),c=r(11);r(33),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",i=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+i+\"\\\\s*$\"),p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+i+\" ?\");function d(t,r){void 0===r&&(r=!1);var a=t.match(r?p:f);return a?function(t){var r=n(t,3),a=r[0],i=r[1],o=r[2];if(\"mu\"!==i)return[a,i,o];return[h(e[i](parseFloat(a||\"1\"))).slice(0,-2),\"em\",o]}([a[1].replace(/,/,\".\"),a[4],a[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",a=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+a+a+a,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,c.entities.nbsp).replace(/\\s+$/,c.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function y(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new u.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function v(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,a=\"\",i=0,o=0,s=!0,l=!1;i<r;){var c=t[i++];switch(c){case\" \":break;case\"{\":s?o++:(l=!1,o>n&&(o=n)),n++;break;case\"}\":n&&n--,(s||l)&&(o--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(c))return[l?\"true\":v(a,o),c,t.slice(i)];s=!1,l=!1}a+=c}if(n)throw new u.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":v(a,o),\"\",t.slice(i)]}t.matchDimen=d,t.dimen2em=function(t){var r=n(d(t),2),a=r[0],i=r[1],o=parseFloat(a||\"1\"),s=e[i];return s?s(o):0},t.Em=h,t.fenced=function(t,e,r,n,a){void 0===a&&(a=\"\");var i,u=t.nodeFactory,c=u.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:o.TEXCLASS.INNER});if(a)i=new l.default(\"\\\\\"+a+\"l\"+e,t.parser.stack.env,t).mml();else{var f=u.create(\"text\",e);i=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.OPEN},f)}if(s.default.appendChildren(c,[i]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(c,s.default.getChildren(r)):s.default.appendChildren(c,[r]),a)i=new l.default(\"\\\\\"+a+\"r\"+n,t.parser.stack.env,t).mml();else{var p=u.create(\"text\",n);i=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.CLOSE},p)}return s.default.appendChildren(c,[i]),c},t.fixedFence=function(t,e,r,n){var a=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:o.TEXCLASS.ORD});return e&&s.default.appendChildren(a,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(a,s.default.getChildren(r)):s.default.appendChildren(a,[r]),n&&s.default.appendChildren(a,[m(t,n,\"r\")]),a},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var a=e[r];if(a&&!s.default.isType(a,\"mspace\")&&(!s.default.isType(a,\"TeXAtom\")||s.default.getChildren(a)[0]&&s.default.getChildren(s.default.getChildren(a)[0]).length)){if(s.default.isEmbellished(a)||s.default.isType(a,\"TeXAtom\")&&s.default.getTexClass(a)===o.TEXCLASS.REL){var i=t.nodeFactory.create(\"node\",\"mi\");e.unshift(i)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var a,i,o=n||t.stack.env.font,s=o?{mathvariant:o}:{},c=[],f=0,p=0,d=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;f<e.length;)if(\"$\"===(a=e.charAt(f++)))\"$\"===d&&0===h?(i=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(p,f-1),{},t.configuration).mml()]),c.push(i),d=\"\",p=f):\"\"===d&&(p<f-1&&c.push(g(t,e.slice(p,f-1),s)),d=\"$\",p=f);else if(\"{\"===a&&\"\"!==d)h++;else if(\"}\"===a)if(\"}\"===d&&0===h){var m=new l.default(e.slice(p,f),{},t.configuration).mml();i=t.create(\"node\",\"TeXAtom\",[m],s),c.push(i),d=\"\",p=f}else\"\"!==d&&h&&h--;else if(\"\\\\\"===a)if(\"\"===d&&e.substr(f).match(/^(eq)?ref\\s*\\{/)){var y=RegExp[\"$&\"].length;p<f-1&&c.push(g(t,e.slice(p,f-1),s)),d=\"}\",p=f-1,f+=y}else\"(\"===(a=e.charAt(f++))&&\"\"===d?(p<f-2&&c.push(g(t,e.slice(p,f-2),s)),d=\")\",p=f):\")\"===a&&\")\"===d&&0===h?(i=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(p,f-2),{},t.configuration).mml()]),c.push(i),d=\"\",p=f):a.match(/[${}\\\\]/)&&\"\"===d&&(f--,e=e.substr(0,f-1)+e.substr(f));if(\"\"!==d)throw new u.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return p<e.length&&c.push(g(t,e.slice(p),s)),null!=r?c=[t.create(\"node\",\"mstyle\",c,{displaystyle:!1,scriptlevel:r})]:c.length>1&&(c=[t.create(\"node\",\"mrow\",c)]),c},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",a=\"\",i=0;i<r.length;){var o=r.charAt(i++);if(\"\\\\\"===o)n+=o+r.charAt(i++);else if(\"#\"===o)if(\"#\"===(o=r.charAt(i++)))n+=o;else{if(!o.match(/[1-9]/)||parseInt(o,10)>e.length)throw new u.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");a=y(t,y(t,a,n),e[parseInt(o,10)-1]),n=\"\"}else n+=o}return y(t,a,n)},t.addArgs=y,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new u.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var i,o;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,a,i,o,s={},l=t;for(;l;)i=(e=n(b(l,[\"=\",\",\"]),3))[0],a=e[1],l=e[2],\"=\"===a?(o=(r=n(b(l,[\",\"]),3))[0],a=r[1],l=r[2],o=\"false\"===o||\"true\"===o?JSON.parse(o):o,s[i]=o):i&&(s[i]=!0);return s}(t);if(e)try{for(var l=a(Object.keys(s)),c=l.next();!c.done;c=l.next()){var f=c.value;if(!e.hasOwnProperty(f)){if(r)throw new u.default(\"InvalidOption\",\"Invalid optional argument: %1\",f);delete s[f]}}}catch(t){i={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}return s}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var i,o=r(6),s=r(12),l=r(35),u=r(34),c=r(9),f=function(){function t(t,e,r,n,a,i,o,s,l,u,c,f){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===a&&(a={}),void 0===i&&(i={}),void 0===o&&(o={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===u&&(u=null),void 0===c&&(c=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=a,this.options=i,this.nodes=o,this.preprocessors=s,this.postprocessors=l,this.initMethod=u,this.configMethod=c,this.priority=f,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var a=r.priority||u.PrioritizedList.DEFAULTPRIORITY,i=r.init?this.makeProcessor(r.init,a):null,o=r.config?this.makeProcessor(r.config,a):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,a)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,a)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,i,o,a)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return i.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=f,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(i=e.ConfigurationHandler||(e.ConfigurationHandler={}));var p=function(){function t(t){var e,r,a,i;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new u.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var o=n(t.slice().reverse()),c=o.next();!c.done;c=o.next()){var f=c.value;this.addPackage(f)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}try{for(var p=n(this.configurations),d=p.next();!d.done;d=p.next()){var h=d.value,m=h.item,g=h.priority;this.append(m,g)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(i=p.return)&&i.call(p)}finally{if(a)throw a.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var a=n(this.configurations),i=a.next();!i.done;i=a.next()){var o=i.value;this.addFilters(t,o.item)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=i.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var a,i;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),u=l.next();!u.done;u=l.next()){var f=u.value;s.itemFactory.setNodeClass(f,t.items[f])}}catch(t){a={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(a)throw a.error}}c.TagsFactory.addTags(t.tags),o.defaultOptions(s.options,t.options),o.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),o.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,i,o,s;try{for(var l=n(e.preprocessors),u=l.next();!u.done;u=l.next()){var c=a(u.value,2),f=c[0],p=c[1];t.preFilters.add(f,p)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(r)throw r.error}}try{for(var d=n(e.postprocessors),h=d.next();!h.done;h=d.next()){var m=a(h.value,2),g=m[0];p=m[1];t.postFilters.add(g,p)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(s=d.return)&&s.call(d)}finally{if(o)throw o.error}}},t}();e.ParserConfiguration=p},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(3),s=r(24),l=r(0),u=r(5),c=function(){function t(t,e,r){var a,i;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var o,l=e.hasOwnProperty(\"isInner\"),u=e.isInner;if(delete e.isInner,e){o={};try{for(var c=n(Object.keys(e)),f=c.next();!f.done;f=c.next()){var p=f.value;o[p]=e[p]}}catch(t){a={error:t}}finally{try{f&&!f.done&&(i=c.return)&&i.call(c)}finally{if(a)throw a.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,o,!l||u),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var a=n(Array.from(this.configuration.handlers.keys())),i=a.next();!i.done;i=a.next()){var o=i.value;r+=o+\": \"+this.configuration.handlers.get(o)+\"\\n\"}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof u.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var a=n(t),i=a.next();!i.done;i=a.next()){var o=i.value;this.stack.Push(o)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var a=this.getCodePoint();return this.i+=a.length,a},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=a(o.default.matchDimen(e),2),n=r[0],i=r[1];if(n)return n+i}else{e=this.string.slice(this.i);var s=a(o.default.matchDimen(e,!0),3),u=(n=s[0],i=s[1],s[2]);if(n)return this.i+=u,n+i}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var a=this.i,i=this.GetNext();switch(this.i+=i.length,i){case\"\\\\\":i+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&i===e)return this.string.slice(r,a)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=o.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,i([t],r))},t}();e.default=c},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var o=r(8),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,a,i,o,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===a&&(a=\"\"),void 0===i&&(i=\"\"),void 0===o&&(o=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=a,this.tagFormat=i,this.noTag=o,this.labelId=s};e.TagInfo=l;var u=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),a=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[a],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new o.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(u);e.NoTags=c;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(u);e.AllTags=f,function(t){var e=new Map([[\"none\",c],[\"all\",f]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var a=i(Object.keys(e)),o=a.next();!o.done;o=a.next()){var s=o.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var a=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var i,o=r(34),s=r(35);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(i=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new o.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var a,s;void 0===r&&(r=o.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),u=l.next();!u.done;u=l.next()){var c=u.value,f=i.getMap(c);if(!f)return void this.warn(\"Configuration \"+c+\" not found! Omitted.\");this._configuration.add(f,r)}}catch(t){a={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var s=o.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}var l=a(t,2),u=l[0],c=l[1];this._fallback.toArray()[0].item(u,c)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;r.push(o.name)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;if(o.contains(t))return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;if(o.name===t)return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var u=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var a,i;void 0===r&&(r=o.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),u=s.next();!u.done;u=s.next()){var c=u.value,f=this.get(c);f||(f=new l,this.set(c,f)),f.add(t[c],e[c],r)}}catch(t){a={error:t}}finally{try{u&&!u.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this.map.values()),i=a.next();!i.done;i=a.next()){var o=i.value.retrieve(t);if(o)return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=u},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(0),u=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,o(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.MmlStack=u;var c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,r)||this;return a.factory=e,a.global={},a._properties={},a.isOpen&&(a._env={}),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=i(this.getErrors(t.kind),2),n=r[0],a=r[1];throw new l.default(n,a,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var a=n.value;delete this.env[a]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(u);e.BaseItem=c},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(12),l=r(11),u=r(5),c=r(0),f=r(3),p=r(1),d=r(13),h=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.StartItem=h;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(d.BaseItem);e.OpenItem=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CloseItem=y;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=i(this.Peek(2),2),r=e[0],n=e[1];return!p.default.isType(r,\"msubsup\")||p.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(p.default.setChild(r,r.sup,n),[[r,t],!0])},e}(d.BaseItem);e.PrimeItem=v;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return d.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)p.default.setChild(r,2,this.getProperty(\"primes\"));else{p.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var a=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=a}return p.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&p.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var i=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(c.default.bind.apply(c.default,o([void 0,i[0],i[1]],i.splice(2))))}return null},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(d.BaseItem);e.SubsupItem=b;var A=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new c.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&p.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(p.default.setProperty(r,\"withDelims\",!0),r=f.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(d.BaseItem);e.OverItem=A;var M=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",f.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(d.BaseItem);e.LeftItem=M;var x=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.RightItem=x;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new c.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?d.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.BeginItem=T;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.EndItem=w;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(d.BaseItem);e.StyleItem=S;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new c.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.PositionItem=P;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CellItem=C;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.MmlItem=O;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return d.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(p.default.isType(n,\"mstyle\")&&n.childNodes.length&&p.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||p.default.isType(n,\"mspace\"))return[[r,e],!0];p.default.isEmbellished(n)&&(n=p.default.getCoreMO(n));var a=p.default.getForm(n);if(null!=a&&[0,0,1,1,0,1,1,0,0,0][a[2]])return[[r,e],!0]}var i=this.create(\"token\",\"mo\",{texClass:u.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,i,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(d.BaseItem);e.FnItem=E;var k=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;if(t.isKind(\"mml\")&&(p.default.isType(t.First,\"mo\")||p.default.isType(t.First,\"mi\")||p.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=p.default.getText(e)).length&&!p.default.getProperty(e,\"movesupsub\")&&1===p.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),p.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),p.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var a=this.create(\"node\",\"mtext\",[],{},n),i=this.create(\"node\",\"mpadded\",[a],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[i],{texClass:u.TEXCLASS.REL}),t],!0]},e}(d.BaseItem);e.NotItem=k;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&p.default.isEmbellished(r)){var n=p.default.getTexClass(p.default.getCoreMO(r));n!==u.TEXCLASS.BIN&&n!==u.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(d.BaseItem);e.DotsItem=_;var I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),d.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),d.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?p.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||p.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=f.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var a=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[a],!0];throw new c.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[a,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&p.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&p.default.setAttribute(t,\"columnalign\",p.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(d.BaseItem);e.ArrayItem=I;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(r[0],r[2],r[1]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&f.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(I);e.EqnArrayItem=N;var L=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"equation\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.EquationItem=L},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(14),i=r(1),o=r(0),s=r(8),l=r(7),u=r(3),c=r(5),f=r(9),p=r(11);r(33),r(49),r(50);var d={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var a=new s.default(e,r,t.configuration),i=a.mml(),o=a.stack.global;if(o.leftRoot||o.upRoot){var l={};o.leftRoot&&(l.width=o.leftRoot),o.upRoot&&(l.voffset=o.upRoot,l.height=o.upRoot),i=t.create(\"node\",\"mpadded\",[i],l)}return r.inRoot=n,i}d.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},d.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},d.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},p.entities.nbsp))},d.Space=function(t,e){},d.Superscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=i.default.getProperty(s,\"movesupsub\"),c=i.default.isType(s,\"msubsup\")?s.sup:s.over;if(i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")&&i.default.getChildAt(s,s.sup)||i.default.isType(s,\"munderover\")&&!i.default.isType(s,\"mover\")&&i.default.getChildAt(s,s.over)&&!i.default.getProperty(s,\"subsupOK\"))throw new o.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")||(u?((!i.default.isType(s,\"munderover\")||i.default.isType(s,\"mover\")||i.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.over):c=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:a,movesupsub:u}))},d.Subscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=i.default.getProperty(s,\"movesupsub\"),c=i.default.isType(s,\"msubsup\")?s.sub:s.under;if(i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")&&i.default.getChildAt(s,s.sub)||i.default.isType(s,\"munderover\")&&!i.default.isType(s,\"mover\")&&i.default.getChildAt(s,s.under)&&!i.default.getProperty(s,\"subsupOK\"))throw new o.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")||(u?((!i.default.isType(s,\"munderover\")||i.default.isType(s,\"mover\")||i.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.under):c=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:a,movesupsub:u}))},d.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),i.default.isType(r,\"msubsup\")&&!i.default.isType(r,\"msup\")&&i.default.getChildAt(r,r.sup))throw new o.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=p.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===p.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var a=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,a))},d.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},d.Hash=function(t,e){throw new o.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},d.SetFont=function(t,e,r){t.stack.env.font=r},d.SetStyle=function(t,e,r,n,a){t.stack.env.style=r,t.stack.env.level=a,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:a}))},d.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},d.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),a=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(a)},d.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},d.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new o.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.OPEN}),t.Push(n)},d.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:c.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},d.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:c.TEXCLASS.OP},r);t.Push(n)},d.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||i.default.getTexClass(i.default.getCoreMO(n))!==c.TEXCLASS.OP&&null==i.default.getProperty(n,\"movesupsub\"))throw new o.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var a,s=t.stack.Top();i.default.isType(n,\"munderover\")&&!r?(a=t.create(\"node\",\"msubsup\"),i.default.copyChildren(n,a),n=s.Last=a):i.default.isType(n,\"msubsup\")&&r&&(a=t.create(\"node\",\"munderover\"),i.default.copyChildren(n,a),n=s.Last=a),i.default.setProperty(n,\"movesupsub\",!!r),i.default.setProperties(i.default.getCoreMO(n),{movablelimits:!1}),(i.default.getAttribute(n,\"movablelimits\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1})},d.Over=function(t,e,r,n){var a=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(a.setProperty(\"open\",r),a.setProperty(\"close\",n)):e.match(/withdelims$/)&&(a.setProperty(\"open\",t.GetDelimiter(e)),a.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?a.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&a.setProperty(\"thickness\",0),t.Push(a)},d.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.create(\"node\",\"mfrac\",[r,n]);t.Push(a)},d.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var a=new s.default(n,t.stack.env,t.configuration).mml();a=r?t.create(\"node\",\"mroot\",[a,m(t,r)]):t.create(\"node\",\"msqrt\",[a]),t.Push(a)},d.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),a=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(a)},d.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new o.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new o.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new o.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},d.Accent=function(t,e,r,n){var a=t.ParseArg(e),o=u.default.getFontDef(t);o.accent=!0;var s=i.default.createEntity(r),l=t.create(\"token\",\"mo\",o,s);i.default.setAttribute(l,\"stretchy\",!!n);var c=i.default.isEmbellished(a)?i.default.getCoreMO(a):a;i.default.isType(c,\"mo\")&&i.default.setProperties(c,{movablelimits:!1});var f=t.create(\"node\",\"munderover\");i.default.setChild(f,0,a),i.default.setChild(f,1,null),i.default.setChild(f,2,l);var p=t.create(\"node\",\"TeXAtom\",[f]);t.Push(p)},d.UnderOver=function(t,e,r,n,a){var o,s=t.ParseArg(e),l=i.default.getForm(s);(l&&l[3]&&l[3].movablelimits||i.default.getProperty(s,\"movablelimits\"))&&i.default.setProperties(s,{movablelimits:!1}),i.default.isType(s,\"munderover\")&&i.default.isEmbellished(s)&&(i.default.setProperties(i.default.getCoreMO(s),{lspace:0,rspace:0}),o=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[o,s]));var u=t.create(\"node\",\"munderover\",[s]),f=i.default.createEntity(r);o=t.create(\"token\",\"mo\",{stretchy:!0,accent:!a},f),i.default.setChild(u,\"o\"===e.charAt(1)?u.over:u.under,o);var p=u;n&&(p=t.create(\"node\",\"TeXAtom\",[u],{texClass:c.TEXCLASS.OP,movesupsub:!0})),i.default.setProperty(p,\"subsupOK\",!0),t.Push(p)},d.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(i.default.getAttribute(n,\"movablelimits\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"mover\",[n,r]);t.Push(a)},d.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(i.default.isType(n,\"mo\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"munder\",[n,r]);t.Push(a)},d.TeXAtom=function(t,e,r){var n,a,i,o={texClass:r};if(r===c.TEXCLASS.OP){o.movesupsub=o.movablelimits=!0;var u=t.GetArgument(e),f=u.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);f?(o.mathvariant=l.TexConstant.Variant.NORMAL,a=t.create(\"token\",\"mi\",o,f[1])):(i=new s.default(u,t.stack.env,t.configuration).mml(),a=t.create(\"node\",\"TeXAtom\",[i],o)),n=t.itemFactory.create(\"fn\",a)}else i=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[i],o);t.Push(n)},d.MmlToken=function(t,e){var r,n=t.GetArgument(e),a=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new o.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==a;){var c=a.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!c)throw new o.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",a);if(!r.attributes.hasDefault(c[1])&&!h[c[1]])throw new o.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",c[1],n);var f=u.default.MmlFilterAttribute(t,c[1],c[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));f&&(\"true\"===f.toLowerCase()?f=!0:\"false\"===f.toLowerCase()&&(f=!1),l[c[1]]=f),a=a.substr(c[0].length)}var p=t.create(\"text\",s);r.appendChild(p),i.default.setProperties(r,l),t.Push(r)},d.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},d.Phantom=function(t,e,r,n){var a=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(a=t.create(\"node\",\"mpadded\",[a]),n&&(i.default.setAttribute(a,\"height\",0),i.default.setAttribute(a,\"depth\",0)),r&&i.default.setAttribute(a,\"width\",0));var o=t.create(\"node\",\"TeXAtom\",[a]);t.Push(o)},d.Smash=function(t,e){var r=u.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":i.default.setAttribute(n,\"depth\",0);break;case\"t\":i.default.setAttribute(n,\"height\",0);break;default:i.default.setAttribute(n,\"height\",0),i.default.setAttribute(n,\"depth\",0)}var a=t.create(\"node\",\"TeXAtom\",[n]);t.Push(a)},d.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&i.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},d.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},d.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var a=r;r=n,n=a}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},d.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},d.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var a=t.create(\"node\",\"mspace\",[],n);t.Push(a)},d.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),a=t.GetDimen(e),o=t.create(\"node\",\"mspace\",[],{width:n,height:a,mathbackground:t.stack.env.color||\"black\"});r&&(o=t.create(\"node\",\"mpadded\",[o],{voffset:r}),r.match(/^\\-/)?(i.default.setAttribute(o,\"height\",r),i.default.setAttribute(o,\"depth\",\"+\"+r.substr(1))):i.default.setAttribute(o,\"height\",\"+\"+r)),t.Push(o)},d.MakeBig=function(t,e,r,n){var a=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",i=t.GetDelimiter(e,!0),o=t.create(\"token\",\"mo\",{minsize:a,maxsize:a,fence:!0,stretchy:!0,symmetric:!0},i),s=t.create(\"node\",\"TeXAtom\",[o],{texClass:r});t.Push(s)},d.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),a=t.create(\"node\",\"munderover\");i.default.setChild(a,0,n),i.default.setChild(a,1,null),i.default.setChild(a,2,r);var o=t.create(\"node\",\"TeXAtom\",[a],{texClass:c.TEXCLASS.REL});t.Push(o)},d.HBox=function(t,e,r,n){t.PushAll(u.default.internalMath(t,t.GetArgument(e),r,n))},d.FBox=function(t,e){var r=u.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},d.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},d.Dots=function(t,e){var r=i.default.createEntity(\"2026\"),n=i.default.createEntity(\"22EF\"),a=t.create(\"token\",\"mo\",{stretchy:!1},r),o=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:a,cdots:o}))},d.Matrix=function(t,e,r,n,a,i,s,l,u,c){var f=t.GetNext();if(\"\"===f)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===f?t.i++:(t.string=f+\"}\"+t.string.slice(t.i+1),t.i=0);var p=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);p.arraydef={rowspacing:s||\"4pt\",columnspacing:i||\"1em\"},u&&p.setProperty(\"isCases\",!0),c&&(p.setProperty(\"isNumbered\",!0),p.arraydef.side=c),(r||n)&&(p.setProperty(\"open\",r),p.setProperty(\"close\",n)),\"D\"===l&&(p.arraydef.displaystyle=!0),null!=a&&(p.arraydef.columnalign=a),t.Push(p)},d.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,a=-1,i=t.i,s=r.length;i<s;){var l=r.charAt(i);if(\"{\"===l)n++,i++;else if(\"}\"===l)0===n?s=0:(0===--n&&a<0&&(a=i-t.i),i++);else{if(\"&\"===l&&0===n)throw new o.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(i).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:i+=2:i++}}var c=r.substr(t.i,i-t.i);if(!c.match(/^\\s*\\\\text[^a-zA-Z]/)||a!==c.replace(/\\s+$/,\"\").length-1){var f=u.default.internalMath(t,c,0);t.PushAll(f),t.i=i}}},d.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},d.CrLaTeX=function(t,e,r){var i;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),c=n(u.default.matchDimen(s),2),f=c[0],p=c[1];if(s&&!f)throw new o.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);i=f+p}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var d,h=t.stack.Top();if(h instanceof a.ArrayItem){if(i&&h.arraydef.rowspacing){var m=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var g=u.default.dimen2em(m[0]);h.setProperty(\"rowspacing\",g)}for(var y=h.getProperty(\"rowspacing\");m.length<h.table.length;)m.push(u.default.Em(y));m[h.table.length-1]=u.default.Em(Math.max(0,y+u.default.dimen2em(i))),h.arraydef.rowspacing=m.join(\" \")}}else i&&(d=t.create(\"node\",\"mspace\",[],{depth:i}),t.Push(d)),d=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(d)},d.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof a.ArrayItem)||n.Size())throw new o.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var i=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];i.length<n.table.length;)i.push(\"none\");i[n.table.length-1]=r,n.arraydef.rowlines=i.join(\" \")}else n.frame.push(\"top\")},d.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof a.ArrayItem))throw new o.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},d.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new o.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var a=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(a)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},d.Array=function(t,e,r,n,a,i,o,s,l){a||(a=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var u=(\"c\"+a).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var c=t.itemFactory.create(\"array\");return c.arraydef={columnalign:a,columnspacing:i||\"1em\",rowspacing:o||\"4pt\"},u.match(/[|:]/)&&(u.charAt(0).match(/[|:]/)&&(c.frame.push(\"left\"),c.dashed=\":\"===u.charAt(0)),u.charAt(u.length-1).match(/[|:]/)&&c.frame.push(\"right\"),u=u.substr(1,u.length-2),c.arraydef.columnlines=u.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&c.setProperty(\"open\",t.convertDelimiter(r)),n&&c.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?c.arraydef.displaystyle=!0:s&&(c.arraydef.displaystyle=!1),\"S\"===s&&(c.arraydef.scriptlevel=1),l&&(c.arraydef.useHeight=!1),t.Push(e),c},d.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=d.Array(t,e);return u.default.setArrayAlign(n,r)},d.Equation=function(t,e,r){return t.Push(e),u.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},d.EqnArray=function(t,e,r,n,a,i){t.Push(e),n&&u.default.checkEqnEnv(t),a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var o=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return o.arraydef={displaystyle:!0,columnalign:a,columnspacing:i||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},o},d.HandleNoTag=function(t,e){t.tags.notag()},d.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new o.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new o.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new f.Label}},d.HandleRef=function(t,e,r){var n=t.GetArgument(e),a=t.tags.allLabels[n]||t.tags.labels[n];a||(t.tags.refUpdate||(t.tags.redo=!0),a=new f.Label);var i=a.tag;r&&(i=t.tags.formatTag(i));var o=t.create(\"node\",\"mrow\",u.default.internalMath(t,i),{href:t.tags.formatUrl(a.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(o)},d.Macro=function(t,e,r,n,a){if(n){var i=[];if(null!=a){var s=t.GetBrackets(e);i.push(null==s?a:s)}for(var l=i.length;l<n;l++)i.push(t.GetArgument(e));r=u.default.substituteArgs(t,i,r)}if(t.string=u.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},d.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.ParseArg(e),i=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,a,i]))},e.default=d},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(1),s=r(7),l=r(3);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,a=t.string.slice(t.i-1).match(n),i=l.default.getFontDef(t);a?(r=t.create(\"token\",\"mn\",i,a[0].replace(/[{}]/g,\"\")),t.i+=a[0].length-1):r=t.create(\"token\",\"mo\",i,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);o.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var i=n[0],o=t.itemFactory.create(\"begin\").setProperties({name:e,end:i});o=r.apply(void 0,a([t,o],n.slice(1))),t.Push(o)}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var n=r(3),a=r(1),i=r(7),o=r(8),s=r(0),l=r(10),u=r(15),c=r(5);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,a,i,o,s){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),c=u.default.EqnArray(t,e,r,a,i,o,s);return n.default.setArrayAlign(c,l)},e.AmsMethods.AlignAt=function(t,r,a,i){var o,l,u=r.getName(),c=\"\",f=[];if(i||(l=t.GetBrackets(\"\\\\begin{\"+u+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+u+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+u+\"}\");for(var p=parseInt(o,10);p>0;)c+=\"rl\",f.push(\"0em 0em\"),p--;var d=f.join(\" \");if(i)return e.AmsMethods.EqnArray(t,r,a,i,c,d);var h=e.AmsMethods.EqnArray(t,r,a,i,c,d);return n.default.setArrayAlign(h,l)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),n.default.checkEqnEnv(t);var a=t.itemFactory.create(\"multline\",r,t.stack);return a.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",i=n.default.trimSpaces(t.GetArgument(r));\"\\\\\"===i.charAt(0)&&(i=i.substr(1));var o=t.GetArgument(r);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(i,new l.Macro(i,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+a]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",a=n.default.trimSpaces(t.GetArgument(e));a.match(/\\\\text/)||(a=a.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+a+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),n=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=n)},e.AmsMethods.MultiIntegral=function(t,e,r){var n=t.GetNext();if(\"\\\\\"===n){var a=t.i;n=t.GetArgument(e),t.i=a,\"\\\\limits\"===n&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,i,s){var l={width:\"+\"+n.default.Em((i+s)/18),lspace:n.default.Em(i/18)},u=t.GetBrackets(e),f=t.ParseArg(e),p=t.create(\"token\",\"mo\",{stretchy:!0,texClass:c.TEXCLASS.REL},String.fromCodePoint(r)),d=t.create(\"node\",\"munderover\",[p]),h=t.create(\"node\",\"mpadded\",[f],l);if(a.default.setAttribute(h,\"voffset\",\".15em\"),a.default.setChild(d,d.over,h),u){var m=new o.default(u,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[m],l),a.default.setAttribute(h,\"voffset\",\"-.24em\"),a.default.setChild(d,d.under,h)}a.default.setProperty(d,\"subsupOK\",!0),t.Push(d)},e.AmsMethods.HandleShove=function(t,e,r){var n=t.stack.Top();if(\"multline\"!==n.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(n.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);n.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=n.default.trimSpaces(t.GetBrackets(e,\"\")),l=t.GetArgument(e),u=t.GetArgument(e),c={l:i.TexConstant.Align.LEFT,r:i.TexConstant.Align.RIGHT,\"\":\"\"},f=new o.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),p=new o.default(\"\\\\strut\\\\textstyle{\"+u+\"}\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mfrac\",[f,p]);if(null==(r=c[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&a.default.setProperties(d,{numalign:r,denomalign:r}),t.Push(d)},e.AmsMethods.Genfrac=function(t,e,r,i,o,l){null==r&&(r=t.GetDelimiterArg(e)),null==i&&(i=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==l&&(l=n.default.trimSpaces(t.GetArgument(e)));var u=t.ParseArg(e),c=t.ParseArg(e),f=t.create(\"node\",\"mfrac\",[u,c]);if(\"\"!==o&&a.default.setAttribute(f,\"linethickness\",o),(r||i)&&(a.default.setProperty(f,\"withDelims\",!0),f=n.default.fixedFence(t.configuration,r,f,i)),\"\"!==l){var p=parseInt(l,10),d=[\"D\",\"T\",\"S\",\"SS\"][p];if(null==d)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);f=t.create(\"node\",\"mstyle\",[f]),\"D\"===d?a.default.setProperties(f,{displaystyle:!0,scriptlevel:0}):a.default.setProperties(f,{displaystyle:!1,scriptlevel:p-1})}t.Push(f)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),a=n.default.trimSpaces(t.GetArgument(e));t.tags.tag(a,r)},e.AmsMethods.HandleNoTag=u.default.HandleNoTag,e.AmsMethods.HandleRef=u.default.HandleRef,e.AmsMethods.Macro=u.default.Macro,e.AmsMethods.Accent=u.default.Accent,e.AmsMethods.Tilde=u.default.Tilde,e.AmsMethods.Array=u.default.Array,e.AmsMethods.Spacer=u.default.Spacer,e.AmsMethods.NamedOp=u.default.NamedOp,e.AmsMethods.EqnArray=u.default.EqnArray},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(0),a=r(2),i=r(15),o=r(3),s=r(19),l={NewCommand:function(t,e){var r=o.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),i=t.GetBrackets(e),u=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(a&&!(a=o.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,l.Macro,[u,a,i])},NewEnvironment:function(t,e){var r=o.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),i=t.GetBrackets(e),u=t.GetArgument(e),c=t.GetArgument(e);if(a&&!(a=o.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,l.BeginEnv,[!0,u,c,a,i])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),n=s.default.GetTemplate(t,e,\"\\\\\"+r),a=t.GetArgument(e);n instanceof Array?s.default.addMacro(t,r,l.MacroWithTemplate,[a].concat(n)):s.default.addMacro(t,r,l.Macro,[a,n])},Let:function(t,e){var r=s.default.GetCSname(t,e),n=t.GetNext();\"=\"===n&&(t.i++,n=t.GetNext());var i=t.configuration.handlers;if(\"\\\\\"!==n){t.i++;var o=i.get(\"delimiter\").lookup(n);o?s.default.addDelimiter(t,\"\\\\\"+r,o.char,o.attributes):s.default.addMacro(t,r,l.Macro,[n])}else{e=s.default.GetCSname(t,e);var u=i.get(\"delimiter\").lookup(\"\\\\\"+e);if(u)return void s.default.addDelimiter(t,\"\\\\\"+r,u.char,u.attributes);var c=i.get(\"macro\").applicable(e);if(!c)return;if(c instanceof a.MacroMap){var f=c.lookup(e);return void s.default.addMacro(t,r,f.func,f.args,f.symbol)}u=c.lookup(e);var p=s.default.disassembleSymbol(r,u);s.default.addMacro(t,r,(function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var a=s.default.assembleSymbol(r);return c.parser(t,a)}),p)}},MacroWithTemplate:function(t,e,r,a){for(var i=[],l=4;l<arguments.length;l++)i[l-4]=arguments[l];var u=parseInt(a,10);if(u){var c=[];if(t.GetNext(),i[0]&&!s.default.MatchParam(t,i[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var f=0;f<u;f++)c.push(s.default.GetParameter(t,e,i[f+1]));r=o.default.substituteArgs(t,c,r)}if(t.string=o.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,n,a,i){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=n,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(a){var l=[];if(null!=i){var u=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");l.push(null==u?i:u)}for(var c=l.length;c<a;c++)l.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=o.default.substituteArgs(t,l,r),n=o.default.substituteArgs(t,[],n)}return t.string=o.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};l.Macro=i.default.Macro,e.default=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,a=r(3),i=r(0),o=r(10);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var n in e.attributes)r.push(n),r.push(e.attributes[n]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],n={},a=2;a<t.length;a+=2)n[t[a]]=t[a+1];return new o.Symbol(e,r,n)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new i.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return a.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var n=t.GetNext(),a=[],o=0,s=t.i;t.i<t.string.length;){if(\"#\"===(n=t.GetNext())){if(s!==t.i&&(a[o]=t.string.substr(s,t.i-s)),!(n=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new i.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(n)!==++o)throw new i.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===n)return s!==t.i&&(a[o]=t.string.substr(s,t.i-s)),a.length>0?[o.toString()].concat(a):o;t.i++}throw new i.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,n){if(null==n)return t.GetArgument(r);for(var a=t.i,o=0,s=0;t.i<t.string.length;){var l=t.string.charAt(t.i);if(\"{\"===l)t.i===a&&(s=1),t.GetArgument(r),o=t.i-a;else{if(e(t,n))return s&&(a++,o-=2),t.string.substr(a,o);if(\"\\\\\"===l){t.i++,o++,s=0;var u=t.string.substr(t.i).match(/[a-z]+|./i);u&&(t.i+=u[0].length,o=t.i-a)}else t.i++,o++,s=0}}throw new i.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new o.Symbol(r,n,a))},t.addMacro=function(e,r,n,a,i){void 0===i&&(i=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new o.Macro(i||r,n,a))},t.addEnvironment=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new o.Macro(r,n,a))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),e.default=n},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(42),l=r(6),u=r(22),c=r(23),f=r(1),p=r(8),d=r(0),h=r(25),m=r(9),g=r(4);r(28);var y=function(t){function e(r){void 0===r&&(r={});var n=this,a=o(l.separateOptions(r,e.OPTIONS,u.FindTeX.OPTIONS),3),i=a[0],s=a[1],f=a[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new u.FindTeX(f);var p=n.options.packages,d=n.configuration=e.configure(p),g=n._parseOptions=new h.default(d,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,i),d.config(n),e.tags(g,d),n.postFilters.add(c.default.cleanSubSup,-6),n.postFilters.add(c.default.setInherited,-5),n.postFilters.add(c.default.moveLimits,-4),n.postFilters.add(c.default.cleanStretchy,-3),n.postFilters.add(c.default.cleanAttributes,-2),n.postFilters.add(c.default.combineRelations,-1),n}return a(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new p.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof d.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&f.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=i(i({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=y},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var o=r(43),s=r(44),l=r(45),u=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],a=[];this.end={},this.env=this.sub=0;var i=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=i,i++),e.processEscapes&&a.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&a.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),a.length&&(n.push(\"(\"+a.join(\"|\")+\")\"),this.sub=i),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=i(e,2),a=n[0],o=n[1];t.push(s.quotePattern(a)),this.end[a]=[o,r,this.endPattern(o)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var a,o=i(n,3),s=o[0],u=o[1],c=o[2],f=c.lastIndex=r.index+r[0].length,p=0;a=c.exec(t);){if((a[1]||a[0])===s&&0===p)return l.protoItem(r[0],t.substr(f,a.index-f),a[0],e,r.index,a.index+a[0].length,u);\"{\"===a[0]?p++:\"}\"===a[0]&&p&&p--}return null},e.prototype.findMathInString=function(t,e,r){var n,a;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var i=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(a=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,i)]))&&(a.math=a.open+a.math+a.close,a.open=a.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var o=n[this.sub];i=n.index+n[this.sub].length;a=2===o.length?l.protoItem(\"\",o.substr(1),\"\",e,n.index,i):l.protoItem(\"\",o,\"\",e,n.index,i,!1)}else a=this.findEnd(r,e,n,this.end[n[0]]);a&&(t.push(a),this.start.lastIndex=a.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(o.AbstractFindMath);e.FindTeX=u},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a,i=r(5),o=r(1);!function(t){t.cleanStretchy=function(t){var e,r,a=t.data;try{for(var i=n(a.getList(\"fixStretchy\")),s=i.next();!s.done;s=i.next()){var l=s.value;if(o.default.getProperty(l,\"fixStretchy\")){var u=o.default.getForm(l);u&&u[3]&&u[3].stretchy&&o.default.setAttribute(l,\"stretchy\",!1);var c=l.parent;if(!(o.default.getTexClass(l)||u&&u[2])){var f=a.nodeFactory.create(\"node\",\"TeXAtom\",[l]);c.replaceChild(f,l),f.inheritAttributesFrom(l)}o.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,a,i=t.attributes;if(i)try{for(var o=n(i.getExplicitNames()),s=o.next();!s.done;s=o.next()){var l=s.value;i.attributes[l]===t.attributes.getInherited(l)&&delete i.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var a,s;try{for(var l=n(t.data.getList(\"mo\")),u=l.next();!u.done;u=l.next()){var c=u.value;if(!c.getProperty(\"relationsCombined\")&&c.parent&&(!c.parent||o.default.isType(c.parent,\"mrow\"))&&o.default.getTexClass(c)===i.TEXCLASS.REL){for(var f=c.parent,p=void 0,d=f.childNodes,h=d.indexOf(c)+1,m=o.default.getProperty(c,\"variantForm\");h<d.length&&(p=d[h])&&o.default.isType(p,\"mo\")&&o.default.getTexClass(p)===i.TEXCLASS.REL;){if(m!==o.default.getProperty(p,\"variantForm\")||!r(c,p)){null==c.attributes.getExplicit(\"rspace\")&&o.default.setAttribute(c,\"rspace\",\"0pt\"),null==p.attributes.getExplicit(\"lspace\")&&o.default.setAttribute(p,\"lspace\",\"0pt\");break}o.default.appendChildren(c,o.default.getChildren(p)),e([\"stretchy\",\"rspace\"],c,p),o.default.setProperties(c,p.getAllProperties()),d.splice(h,1),p.parent=null,p.setProperty(\"relationsCombined\",!0)}c.attributes.setInherited(\"form\",c.getForms()[0])}}}catch(t){a={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}};var e=function(t,e,r){var n=e.attributes,a=r.attributes;t.forEach((function(t){var e=a.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,a,i=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},o=t.attributes,s=e.attributes,l=i(o,\"lspace\"),u=i(s,\"rspace\");if(l.length!==u.length)return!1;try{for(var c=n(l),f=c.next();!f.done;f=c.next()){var p=f.value;if(o.getExplicit(p)!==s.getExplicit(p))return!1}}catch(t){r={error:t}}finally{try{f&&!f.done&&(a=c.return)&&a.call(c)}finally{if(r)throw r.error}}return!0},a=function(t,e,r){var a,i;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var u=l.value,c=u.childNodes;if(!c[u[e]]||!c[u[r]]){var f=u.parent,p=c[u[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[c[u.base],c[u[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[c[u.base],c[u[r]]]);o.default.copyAttributes(u,p),f?f.replaceChild(p,u):t.root=p}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(a(e,\"sub\",\"sup\"),a(e,\"under\",\"over\"))};var s=function(t,e,r){var a,i;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var u=l.value;if(!u.attributes.get(\"displaystyle\")){var c=u.childNodes[u.base],f=c.coreMO();if(c.getProperty(\"movablelimits\")&&!f.attributes.getExplicit(\"movablelimits\")){var p=t.nodeFactory.create(\"node\",r,u.childNodes);o.default.copyAttributes(u,p),u.parent?u.parent.replaceChild(p,u):t.root=p}}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(1),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),u=l.next();!u.done;u=l.next()){var c=u.value;if(c){var f=o.default.isNode(c)?this._factory.create(\"mml\",c):c;f.global=this.global;var p=a(this.stack.length?this.Top().checkItem(f):[null,!0],2),d=p[0],h=p[1];h&&(d?(this.Pop(),this.Push.apply(this,i(d))):(this.stack.push(f),f.env?(f.copyEnv&&Object.assign(f.env,this.env),this.env=f.env):f.env=this.env))}}}catch(e){t={error:e}}finally{try{u&&!u.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(26),s=r(27),l=r(6),u=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new o.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,a([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],a=[];try{for(var o=i(n),s=o.next();!s.done;s=o.next()){var l=s.value;this.inTree(l)&&a.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}return this.nodeLists[t]=a,a},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=u},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(13),s=r(47),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(o.BaseItem),u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return i(e,t),e.DefaultStackItems=((a={})[l.prototype.kind]=l,a),e}(s.AbstractFactory);e.default=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var i=r(1),o=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,a){void 0===r&&(r=[]),void 0===n&&(n={});var o=t.mmlFactory.create(e),s=o.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?o.setChildren(i.default.getChildren(r[0])):o.setChildren(r);else{for(var l=[],u=0,c=void 0;c=r[u];u++)if(c.isInferred){var f=t.mmlFactory.create(\"mrow\",{},i.default.getChildren(c));i.default.copyAttributes(c,f),l.push(f)}else l.push(c);o.setChildren(l)}return a&&o.appendChild(a),i.default.setProperties(o,n),o},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var a=t.create(\"text\",n);return t.create(\"node\",e,[],r,a)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,i=n.apply(void 0,a([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],i),i},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=o},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var o=r(4),s=r(12),l=r(0),u=r(1),c=r(2),f=r(14),p=r(9);function d(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),a=t.create(\"token\",\"mo\",r,n?n.char:e);u.default.setProperty(a,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",a),t.Push(a)}r(48),new c.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p.AbstractTags);e.BaseTags=h,e.BaseConfiguration=o.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:d,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(a={},a[f.StartItem.prototype.kind]=f.StartItem,a[f.StopItem.prototype.kind]=f.StopItem,a[f.OpenItem.prototype.kind]=f.OpenItem,a[f.CloseItem.prototype.kind]=f.CloseItem,a[f.PrimeItem.prototype.kind]=f.PrimeItem,a[f.SubsupItem.prototype.kind]=f.SubsupItem,a[f.OverItem.prototype.kind]=f.OverItem,a[f.LeftItem.prototype.kind]=f.LeftItem,a[f.RightItem.prototype.kind]=f.RightItem,a[f.BeginItem.prototype.kind]=f.BeginItem,a[f.EndItem.prototype.kind]=f.EndItem,a[f.StyleItem.prototype.kind]=f.StyleItem,a[f.PositionItem.prototype.kind]=f.PositionItem,a[f.CellItem.prototype.kind]=f.CellItem,a[f.MmlItem.prototype.kind]=f.MmlItem,a[f.FnItem.prototype.kind]=f.FnItem,a[f.NotItem.prototype.kind]=f.NotItem,a[f.DotsItem.prototype.kind]=f.DotsItem,a[f.ArrayItem.prototype.kind]=f.ArrayItem,a[f.EqnArrayItem.prototype.kind]=f.EqnArrayItem,a[f.EquationItem.prototype.kind]=f.EquationItem,a),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var i=r(14),o=r(3),s=r(1),l=r(0),u=r(7),c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"multline\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new l.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",u.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",u.TexConstant.Align.RIGHT);var n=this.factory.configuration.tags.getTag();if(n){r=this.arraydef.side===u.TexConstant.Align.LEFT?0:this.table.length-1;var a=this.table[r],i=this.create(\"node\",\"mlabeledtr\",[n].concat(s.default.getChildren(a)));s.default.copyAttributes(a,i),this.table[r]=i}}this.factory.configuration.tags.end()},e}(i.ArrayItem);e.MultlineItem=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var o=r(4),s=r(2),l=r(0),u=r(21),c=r(36),f=r(31),p=r(52),d=r(6),h=u.MathJax.config;function m(t,e){var r,a=t.parseOptions.options.require,i=t.parseOptions.packageData.get(\"require\").required,s=e.substr(a.prefix.length);if(i.indexOf(s)<0){i.push(s),function(t,e){var r,a;void 0===e&&(e=[]);var i=t.parseOptions.options.require.prefix;try{for(var o=n(e),s=o.next();!s.done;s=o.next()){var l=s.value;l.substr(0,i.length)===i&&m(t,l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}}(t,f.CONFIG.dependencies[e]);var l=o.ConfigurationHandler.get(s);if(l){var u=h[e]||{};l.options&&1===Object.keys(l.options).length&&l.options[s]&&((r={})[s]=u,u=r),t.configuration.add(l,t,u);var c=t.parseOptions.packageData.get(\"require\").configured;l.preprocessors.length&&!c.has(s)&&(c.set(s,!0),p.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,n=r.allow,a=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(n.hasOwnProperty(a)?n[a]:n.hasOwnProperty(e)?n[e]:r.defaultAllow))throw new l.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',a);c.Package.packages.has(a)?m(t.configuration.packageData.get(\"require\").jax,a):p.mathjax.retryAfter(f.Loader.load(a))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new l.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=o.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:i(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,n=r.prefix;if(n.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");f.CONFIG.paths[n]||(f.CONFIG.paths[n]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+n+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var i=r(0),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new i.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new i.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(13).BaseItem);e.BeginEnvItem=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=r(4),s=r(29),l=r(9),u=r(17);r(51);var c=r(2),f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(l.AbstractTags);e.AmsTags=f;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(a={},a[s.MultlineItem.prototype.kind]=s.MultlineItem,a),tags:{ams:f},init:function(t){new c.CommandMap(u.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[u.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var i=r(4),o=r(2),s=r(10),l=r(30),u=r(36),c=r(6);function f(t,e,r,i){var o,s,c,f;if(u.Package.packages.has(t.options.require.prefix+r)){var h=t.options.autoload[r],m=n(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),g=m[0],y=m[1];try{for(var v=a(g),b=v.next();!b.done;b=v.next()){var A=b.value;p.remove(A)}}catch(t){o={error:t}}finally{try{b&&!b.done&&(s=v.return)&&s.call(v)}finally{if(o)throw o.error}}try{for(var M=a(y),x=M.next();!x.done;x=M.next()){var T=x.value;d.remove(T)}}catch(t){c={error:t}}finally{try{x&&!x.done&&(f=M.return)&&f.call(M)}finally{if(c)throw c.error}}t.string=(i?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}l.RequireLoad(t,r)}var p=new o.CommandMap(\"autoload-macros\",{},{}),d=new o.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=i.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:c.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,i,o,u,c,h,m=e.parseOptions,g=m.handlers.get(\"macro\"),y=m.handlers.get(\"environment\"),v=m.options.autoload;m.packageData.set(\"autoload\",{Autoload:f});try{for(var b=a(Object.keys(v)),A=b.next();!A.done;A=b.next()){var M=A.value,x=v[M],T=n(2===x.length&&Array.isArray(x[0])?x:[x,[]],2),w=T[0],S=T[1];try{for(var P=(o=void 0,a(w)),C=P.next();!C.done;C=P.next()){var O=C.value;g.lookup(O)&&\"color\"!==O||p.add(O,new s.Macro(O,f,[M,!0]))}}catch(t){o={error:t}}finally{try{C&&!C.done&&(u=P.return)&&u.call(P)}finally{if(o)throw o.error}}try{for(var E=(c=void 0,a(S)),k=E.next();!k.done;k=E.next()){var _=k.value;y.lookup(_)||d.add(_,new s.Macro(_,f,[M,!1]))}}catch(t){c={error:t}}finally{try{k&&!k.done&&(h=E.return)&&h.call(E)}finally{if(c)throw c.error}}}}catch(t){r={error:t}}finally{try{A&&!A.done&&(i=b.return)&&i.call(b)}finally{if(r)throw r.error}}m.packageData.get(\"require\")||l.RequireConfiguration.config(t,e)},init:function(t){t.options.require||c.defaultOptions(t.options,l.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var a=r(4),i=r(6),o=r(2),s=r(10),l=r(18);e.ConfigMacrosConfiguration=a.Configuration.create(\"configmacros\",{init:function(t){new o.CommandMap(\"configmacros-map\",{},{}),t.append(a.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,a,i=e.parseOptions.handlers.retrieve(\"configmacros-map\"),o=e.parseOptions.options.macros;try{for(var u=n(Object.keys(o)),c=u.next();!c.done;c=u.next()){var f=c.value,p=\"string\"==typeof o[f]?[o[f]]:o[f],d=Array.isArray(p[2])?new s.Macro(f,l.default.MacroWithTemplate,p.slice(0,2).concat(p[2])):new s.Macro(f,l.default.Macro,p);i.add(f,d)}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}},options:{macros:i.expandable({})}})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var a=r(4),i=r(32),o=r(19);r(53);var s=r(16),l=r(2);e.NewcommandConfiguration=a.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[i.BeginEnvItem.prototype.kind]=i.BeginEnvItem,n),options:{maxMacros:1e3},init:function(t){new l.DelimiterMap(o.default.NEW_DELIMITER,s.default.delimiter,{}),new l.CommandMap(o.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(o.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(a.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var a=r(4);e.NoUndefinedConfiguration=a.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,a,i=t.create(\"text\",\"\\\\\"+e),o=t.options.noundefined||{},s={};try{for(var l=n([\"color\",\"background\",\"size\"]),u=l.next();!u.done;u=l.next()){var c=u.value;o[c]&&(s[\"math\"+c]=o[c])}}catch(t){r={error:t}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,i))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(2),a=r(7),i=r(15),o=r(16),s=r(5);new n.RegExpMap(\"letter\",o.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",o.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",o.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},i.default),new n.CharacterMap(\"mathchar0mi\",o.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:a.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:a.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:a.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:a.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:a.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:a.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:a.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:a.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:a.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:a.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:a.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:a.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:a.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:a.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:a.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:a.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:a.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:a.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:a.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:a.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:a.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:a.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",o.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",o.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",o.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,a.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,a.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,a.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,a.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,a.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},i.default),new n.EnvironmentMap(\"environment\",o.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+a.TexConstant.Length.THICKMATHSPACE,\".5em\"]},i.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(17),a=r(2),i=r(7),o=r(16),s=r(3),l=r(5),u=function(t){for(var e=[],r=0,n=t.length;r<n;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new a.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:l.TEXCLASS.OP}]}),new a.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",i.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",i.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",i.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},n.AmsMethods),new a.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",u([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,u([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",u([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},n.AmsMethods),new a.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:l.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:l.TEXCLASS.CLOSE}]}),new a.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:i.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:i.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:i.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:i.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:i.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:i.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:i.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:i.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:i.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:i.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:i.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new a.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new a.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new a.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},n.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(18);new(r(2).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(t,e,r){\"use strict\";r.r(e);var n=r(21),a=r(20),i=r(4),o=r(23),s=r(22),l=r(12),u=r(27),c=r(1),f=r(16),p=r(25),d=r(3),h=r(24),m=r(13),g=r(26),y=r(10),v=r(2),b=r(9),A=r(7),M=r(0),x=r(8),T=r(37),w=r(29),S=r(17),P=r(38),C=r(28),O=r(14),E=r(15),k=r(39),_=r(40),I=r(32),N=r(18),L=r(19),F=r(41),q=r(30);Object(n.combineWithMathJax)({_:{input:{tex_ts:a,tex:{Configuration:i,FilterUtil:o,FindTeX:s,MapHandler:l,NodeFactory:u,NodeUtil:c,ParseMethods:f,ParseOptions:p,ParseUtil:d,Stack:h,StackItem:m,StackItemFactory:g,Symbol:y,SymbolMap:v,Tags:b,TexConstants:A,TexError:M,TexParser:x,ams:{AmsConfiguration:T,AmsItems:w,AmsMethods:S},autoload:{AutoloadConfiguration:P},base:{BaseConfiguration:C,BaseItems:O,BaseMethods:E},configmacros:{ConfigMacrosConfiguration:k},newcommand:{NewcommandConfiguration:_,NewcommandItems:I,NewcommandMethods:N,NewcommandUtil:L},noundefined:{NoUndefinedConfiguration:F},require:{RequireConfiguration:q}}}}});var R=r(6);r(31).Loader.preLoad(\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\",\"[tex]/noundefined\",\"[tex]/require\",\"[tex]/autoload\",\"[tex]/configmacros\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",a.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(R.insert)(MathJax.config.tex,{packages:e})}}([\"base\",\"ams\",\"newcommand\",\"noundefined\",\"require\",\"autoload\",\"configmacros\"])}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/de.js",
    "content": "{\n\"de/functions/algebra.js\": \n[{\"locale\":\"de\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"key\":\"det\",\"mappings\":{\"default\":{\"default\":\"Determinante\"}},\"category\":\"Algebra\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Homomorphismus\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Kern\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Spur\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"de/functions/elementary.js\": \n[{\"locale\":\"de\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"natürlicher Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"Logarithmus zur Basis 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"Exponent\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"größter gemeinsamer Teiler\"},\"mathspeak\":{\"default\":\"ggt\"},\"clearspeak\":{\"default\":\"ggt\"}},\"key\":\"gcd\",\"names\":[\"gcd\",\"ggt\",\"ggT\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"kleinstes gemeinsames Vielfaches\"},\"mathspeak\":{\"default\":\"kgv\"},\"clearspeak\":{\"default\":\"kgv\"}},\"key\":\"lcm\",\"names\":[\"lcm\",\"kgv\",\"kgV\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"Argument\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"key\":\"im\",\"mappings\":{\"default\":{\"default\":\"der Imaginärteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"im\"]},{\"key\":\"re\",\"mappings\":{\"default\":{\"default\":\"der Realteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"re\"]},{\"key\":\"mod\",\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\",\"names\":[\"mod\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Infimum\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes inferior\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes superior\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Maximum\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Minimum\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Supremum\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Colimes\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projektiver Limes\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"Wahrscheinlichkeit\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"de/functions/hyperbolic.js\": \n[{\"locale\":\"de\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"Kosinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"Kotangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"Kosekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"Sekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"Sinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"Tangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"key\":\"arcosh\",\"mappings\":{\"default\":{\"default\":\"Areakosinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcosh\",\"arccosh\"]},{\"key\":\"arcoth\",\"mappings\":{\"default\":{\"default\":\"Areakotangens hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcoth\",\"arccoth\"]},{\"key\":\"arcsch\",\"mappings\":{\"default\":{\"default\":\"Areakosekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcsch\",\"arccsch\"]},{\"key\":\"arsech\",\"mappings\":{\"default\":{\"default\":\"Areasekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsech\",\"arcsech\"]},{\"key\":\"arsinh\",\"mappings\":{\"default\":{\"default\":\"Areasinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"key\":\"artanh\",\"mappings\":{\"default\":{\"default\":\"Areatangens hyperbolicus \"}},\"category\":\"Area\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"de/functions/trigonometry.js\": \n[{\"locale\":\"de\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"Kosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"Kotangens\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"Kosekans\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"Sekans\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"Sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"Tangens\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"key\":\"arccos\",\"mappings\":{\"default\":{\"default\":\"Arkuskosinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arccos\"]},{\"key\":\"arccot\",\"mappings\":{\"default\":{\"default\":\"Arkuskotangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kotangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arccot\"]},{\"key\":\"arccsc\",\"mappings\":{\"default\":{\"default\":\"Arkuskosekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arccsc\"]},{\"key\":\"arcsec\",\"mappings\":{\"default\":{\"default\":\"Arkussekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsec\"]},{\"key\":\"arcsin\",\"mappings\":{\"default\":{\"default\":\"Arkussinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsin\"]},{\"key\":\"arctan\",\"mappings\":{\"default\":{\"default\":\"Arkustangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Tangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arctan\"]}]\n,\n\"de/symbols/digits_rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"Quadrat\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 2\",\"Exponent_OrdinalPower\":\"zur zweiten Potenz\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"Kubik\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 3\",\"Exponent_OrdinalPower\":\"zur dritten Potenz\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"ein Viertel\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"ein Halb\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"drei Viertel\"}},\"category\":\"No\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"ein siebtel\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"ein neuntel\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"ein zehntel\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"ein drittel\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"zwei drittel\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"ein fünftel\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"zwei fünftel\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"drei fünftel\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"vier fünftel\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"ein sechstel\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"fünf sechstel\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"ein achtel\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"drei achtel\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"fünf achtel\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sieben achtel\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Bruchzähler eins\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"null drittel\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zehn auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zwanzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Dreißig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Vierzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Fünfzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Sechzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Siebzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Achtzig auf schwarzem Quadrat\"}}}]\n,\n\"de/symbols/greek-rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"Dreieck\",\"TriangleSymbol_Delta\":\"großes Delta\"}},\"category\":\"Lu\"}]\n,\n\"de/symbols/greek-scripts.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes chi\"}}}]\n,\n\"de/symbols/greek-symbols.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"beta\"}}},{\"category\":\"Ll\",\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"kai\"}}},{\"category\":\"Sm\",\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes epsilon\"}}},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"fettes großes Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"fettes digamma\"}}}]\n,\n\"de/symbols/hebrew_letters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lo\",\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"Alef-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"Bet-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"Gimel-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"Dalet-Symbol\"}}}]\n,\n\"de/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Grab\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a mit Dot Above und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a mit Ring oben und akut\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Makron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c mit Cedilla und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla und Breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s mit Akute und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s mit Caron und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt unten und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Dot Below\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o mit Strich und Akut\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich und Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"liegendes O mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"lang mit diagonalem Anschlag\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"lang S mit hohem Hub\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"wurde Delta gedreht\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"lang mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"lang S\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b mit Oberleiste\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"ton sechs\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d mit Oberleiste\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f mit Haken\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k mit Haken\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n mit langem rechtem Bein\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"ton zwei\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"umgedrehte esh Schleife\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t mit palatal Haken\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes ezh\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"ton fünf\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"gedreht E\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q mit Hakenschwanz\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"gedreht A\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"gedrehtes Alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open O\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"umgedreht E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa mit Haken\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"offenes e\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes offenes e mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes geschlossenes epsilon\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"mini gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l mit Gurt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"gedreht M\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"gedrehtes M mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n mit linkem Haken\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o mit balken\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"geschlossenes omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein und Haken\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r mit Endstück\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes R mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat umgekehrt\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"gedreht T\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u Bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"gedrehtes v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"gedrehtes w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"pharyngales stimmhaft Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertierter Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"gestrecktes C\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"bilabialer Klick\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"geschlossenes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"bilabiales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"bidentales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"gedrehtes ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"gedrehtes e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"gedrehtes i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"liegendes O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"liegendes geöffnet O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"gedreht Oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"obere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"untere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"liegendes U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"liegendes u Umlaut\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"liegendes m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"stimmhaft laryngaler Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"Ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken und mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"gedreht G\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular G\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th mit Durchgestrichen\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d mit Haken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"offenes o mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh mit Retroflexhaken\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n mit Apostroph davor\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"de/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y mit Diärese\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a mit Ogonek\"}}},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e mit Breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e mit Caron\"}}},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g mit Zirkumflex\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g mit Breve\"}}},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g mit Cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i mit Ogonek\"}}},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i ohne punkt\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l mit Caron\"}}},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt in der Mitte\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o mit Breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r mit Caron\"}}},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s mit Caron\"}}},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t mit Caron\"}}},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u mit Breve\"}}},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u mit Ogonek\"}}},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j mit Caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g mit Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless J\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a mit Ring unten\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h mit Breve unten\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehender Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z mit Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a mit rechtem Halbring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y mit Tilde\"}}}]\n,\n\"de/symbols/latin-rest.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"kombinierendes a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"kombinierendes e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"kombinierendes i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"kombinierendes o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"kombinierendes u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"kombinierendes d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"kombinierendes h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"kombinierendes m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"kombinierendes t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"kombinierendes v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"kombinierendes x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes oberes w\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c mit Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"kombinierendes insulares d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"kombinierendes eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"kombinierendes g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen g\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"kombinierendes k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"kombinierendes l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"kombinierendes n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"kombinierendes lateinisches Kapitälchen R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes langes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"groß S in stumpfen Klammern\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"durchgestrichenes P auf schwarzen Quadrat\"}}}]\n,\n\"de/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Grab\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Dot Above und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring oben und akut\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Makron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedilla und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla und Breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"groß L mit Dot Below und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt unten und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"groß S mit Akute und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt und oben stehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Circumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Hook oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Dot Below\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Circumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"groß A mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"groß A mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"groß E mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"groß E mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"groß E mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"groß I mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"groß I mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"groß I mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"großes n mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"großes o mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"groß O mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"groß A mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ogonek\"}}},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"groß C mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"groß C mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"groß C mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"groß C mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"groß E mit Breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"groß E mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"groß E mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"groß E mit Caron\"}}},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"groß G mit Zirkumflex\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"groß G mit Breve\"}}},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"groß G mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"groß G mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"groß H mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"groß I mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"groß I mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"groß I mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Ogonek\"}}},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"groß I mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"groß J mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"groß K mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"groß L mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"groß L mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"groß L mit Caron\"}}},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt in der Mitte\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"groß N mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"groß N mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"groß N mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"groß O mit doppeltem Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"groß R mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"groß R mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"groß R mit Caron\"}}},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"groß S mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"groß S mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"groß S mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron\"}}},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"groß T mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"groß T mit Caron\"}}},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"groß U mit Breve\"}}},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"groß U mit dopppeltem Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ogonek\"}}},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"groß W mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"groß A mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"groß O mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"groß U mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"groß G mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"groß K mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"groß G mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"groß N mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"groß A mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"groß A mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"groß E mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"groß E mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"groß I mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"groß I mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"groß O mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"groß R mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"groß R mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"groß U mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"groß U mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"groß H mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring unten\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"groß B mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"groß B mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"groß B mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"groß D mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"groß D mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"groß D mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"groß D mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"groß F mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"groß G mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"groß H mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"groß H mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"groß H mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"groß H mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"groß H mit Breve unten\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"groß I mit unten stehender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"groß K mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"groß K mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"groß K mit Zeile\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"groß L mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"groß L mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"groß M mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"groß M mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"groß M mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"groß N mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"groß N mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"groß N mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"groß N mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"groß P mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"groß P mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"groß R mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"groß R mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"groß S mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"groß T mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"groß T mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"groß T mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehender Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"groß V mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"groß V mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"groß W mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"groß W mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"groß W mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"groß X mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"groß X mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"groß Z mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"groß E mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"groß E mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"groß I mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"groß I mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"groß O mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"groß U mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"groß Y mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Tilde\"}}}]\n,\n\"de/symbols/math_angles.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Bogen\"}}},{\"category\":\"Sm\",\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit nach unten gerichtetem Zickzackpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionaler Winkel\"}}},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Gemessene Winkelöffnung links\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Variante mit Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Punkt gemessen\"}}},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Winkel mit S nach innen\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Spitzer Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Öffnungswinkel nach links\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Gedrehter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"Winkel mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich nach unten öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach oben und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach oben und links\"}}},{\"category\":\"Sm\",\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach rechts und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach links und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach rechts und unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach links und unten\"}}}]\n,\n\"de/symbols/math_arrows.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil\"}}},{\"category\":\"So\",\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Spitzen\"}}},{\"category\":\"So\",\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zwei Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit zwei Köpfen\"}}},{\"category\":\"So\",\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"Abwärts zwei Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz\"}}},{\"category\":\"So\",\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach unten\"}}},{\"category\":\"So\",\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Basis\"}}},{\"category\":\"So\",\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Wellenpfeil\"}}},{\"category\":\"Sm\",\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit Strich\"}}},{\"category\":\"So\",\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"Zickzack-Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Ecke nach unten\"}}},{\"category\":\"So\",\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Ecke nach links\"}}},{\"category\":\"So\",\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"Gegen den Uhrzeigersinn oberer halbkreisförmiger Pfeil\"}}},{\"category\":\"So\",\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"Halbkreis im Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur langen Bar\"}}},{\"category\":\"So\",\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zum Überfahren Pfeil nach rechts zum Überfahren\"}}},{\"category\":\"So\",\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"Offener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn öffnen\"}}},{\"category\":\"So\",\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil nach links von Abwärtspfeil\"}}},{\"category\":\"So\",\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"Links gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"Aufwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"Rechts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"Abwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"Links Rechts Doppelpfeil mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"Nordwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"Nordost-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"Südost Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"Südwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"Linker Squiggle-Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gekrümmter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"So\",\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben gestrichen\"}}},{\"category\":\"So\",\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"Rechts gestrichener Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"Abwärts gestrichelter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"Abwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil von der Stange\"}}},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit horizontaler Stange\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit vertikaler Stange\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer doppelter Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil von der Wand\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil nach links von Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"Drei nach rechts gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit offenem Kopf\"}}},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"Elektrischer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"Pfeilspitze zwischen zwei horizontalen Balken\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"Gebrochener Kreis mit Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gerichteter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"Schwerer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"Schwerer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"Schwerer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"Zeichnungspunkt Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"Schwerer runder Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"Schwerer Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"Schwerer, gestrichelter Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, nach oben beleuchtete Pfeilspitze\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, von unten beleuchtete Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"Schwarze Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach unten und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach oben und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts gerichteter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"Schwerer konkaver Spitze-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"Rechts geschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"Links schattierter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"Zurückgekippter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"Vorne geneigter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"Schwerer unterer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"Schwerer oberer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"Gekerbter Pfeil nach rechts unten rechts\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach rechts oben gekerbt\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"Eingekreister schwerer weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit weißer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"Schwarz-gefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit schwarzer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Barbed-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"Keil-Schwanz nach rechts Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gekeilter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"Offener Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"Vierfacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Doppelpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"Langer Rechtspfeil von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"Langer nach rechts gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit horizontalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit horizontalem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"Dreifachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Strichpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Bindestrich nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"Dreipoliger Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach links\"}}},{\"category\":\"Sm\",\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"Nordwest- und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"Nordost- und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil und Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil und Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil Kreuzung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil Kreuzung Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"Fallende Diagonale, die Nordostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"Steigende Diagonale, die Südostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeilüberquerung Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeilüberquerung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach rechts zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach oben gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach unten gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach links gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach rechts gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"Rechtsseitiger Bogen im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"Bogen der linken Seite gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"Pfeil unten gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben im Uhrzeigersinn mit Minus\"}}},{\"category\":\"Sm\",\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"Rechts unten halbkreisförmig im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"Linker halbkreisförmiger Pfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Kurzer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Kurzer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"Kurzer Pfeil nach rechts Über Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch X\"}}},{\"category\":\"Sm\",\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil durch kleinen Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zweiköpfiger Pfeil vom kleinen Kreis\"}}},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"Größer als über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"Untersatz über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"Superset über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Pfeil rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit linkem Pfeil oben\"}}},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben durch Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"Integral mit Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"North East White Arrow\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"Südostweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"Südwestweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"Linker rechter weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"Aufwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"Abwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"Südwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"Linker rechter schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach oben\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"Drei nach links gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"Langer nach links gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Köpfen\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach links zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator Über Linkspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über der Rückseite fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch mehr als\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach unten\"}}}]\n,\n\"de/symbols/math_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"Skript klein L\"}}},{\"category\":\"Sm\",\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"Skript groß P\"}}},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"groß Gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"groß Pi mit Doppelstrich\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"Summenzeichen mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"groß D kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"d kursiv mit Doppelstrich\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"e kursiv mit Doppelstrich\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"i kursiv mit Doppelstrich\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"punktloses i kursiv\"}}},{\"category\":\"Ll\",\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"punktloses j kursiv\"}}}]\n,\n\"de/symbols/math_delimiters.js\": \n[{\"locale\":\"de\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer zu\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Stachel\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Stachel\"}}},{\"category\":\"Sm\",\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"linke Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"rechte Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"linke Abrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"rechter Abrundungsklammer\"}}},{\"category\":\"So\",\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"unterer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"Unterer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"Oberer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"Oberer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"Obere rechte Ecke\"}}},{\"category\":\"So\",\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"Untere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"Rechte untere Ecke\"}}},{\"category\":\"Sm\",\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"Obere Hälfte eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"Untere Hälfte eines Integrals\"}}},{\"category\":\"Ps\",\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"Linke spitze Klammer\"}}},{\"category\":\"Pe\",\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"Rechte spitze Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"Linke Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"Zwischenteil einer geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"Mittelteil eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"Erweiterung einer Querlinie\"}}},{\"category\":\"Sm\",\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben links oder rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben rechts oder unten links\"}}},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil einer Summe\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil einer Summe\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer auf oberer eckiger Klammer\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil des Radikalsymbols\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"Linke vertikale Boxlinie\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"Rechte vertikale Boxlinie\"}}},{\"category\":\"Sm\",\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"Obere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"Untere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"Obere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"Untere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"Mittlere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"Mittlere, rechtwinklige Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Anführungszeichen-Verzierung\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"Schwere nach rechts zeigenden Winkel-Anführungszeichen-Verzierung\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"Schwere, nach rechts weisende Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"Leichte linke Schildpatt Bracket Ornament\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"Leichte rechte Schildpatt-Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke geschweifte Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte geschweifte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"Linker S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Pe\",\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"rechter S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Ps\",\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke doppelte Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Schildkrötenpanzerhalterung\"}}},{\"category\":\"Pe\",\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke abgeflachte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte abgeflachte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"Linke weiße geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Bildklammer\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"Z-Notation rechte Bildklammer\"}}},{\"category\":\"Ps\",\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"Z Notation Right Binding Bracket\"}}},{\"category\":\"Ps\",\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Unterlenker\"}}},{\"category\":\"Pe\",\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Unterlenker\"}}},{\"category\":\"Ps\",\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Häkchen in der oberen Ecke\"}}},{\"category\":\"Pe\",\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Ps\",\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Pe\",\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der oberen Ecke\"}}},{\"category\":\"Ps\",\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer mit Punkt\"}}},{\"category\":\"Pe\",\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit Punkt\"}}},{\"category\":\"Ps\",\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"Linker Bogen weniger als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"rechter Bogen größer als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"Doppelter linker Bogen größer als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"Doppelter rechter Bogen weniger als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze Schildkrötenhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"Linker wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"rechter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"Linker doppelter wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"rechter doppelter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigender gebogener Winkelhalter\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigender gebogener Winkelhalter\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"Obere linke halbe Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"Obere rechte halbe Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"Linke halbe halterung unten\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"Untere rechte halbe Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"U-Halterung links seitlich\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"U-Halterung rechts seitlich\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"Linke doppelte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"Rechte doppelte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"Linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"Rechte Doppelwinkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"Linke Eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"Rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"Linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"Rechte Schildpattlasche\"}}},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"Linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"Linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen in umgekehrter Reihenfolge\"}}},{\"category\":\"Pe\",\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen\"}}},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"Niedriges doppeltes Prime-Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"Verzierte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"Verzierte rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale, recht geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Schildpattklammer\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige, rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"Kleine linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"Linke Klammer in voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"Linke geschweifte Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"Rechte breite weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"Halbe breite linke eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"Halbe breite rechte eckklammer\"}}}]\n,\n\"de/symbols/math_geometry.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Horizontal\"}}},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Horizontale\"}}},{\"category\":\"So\",\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical\"}}},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Vertikale\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Licht Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Right\"}}},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Right\"}}},{\"category\":\"So\",\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Links\"}}},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Left\"}}},{\"category\":\"So\",\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf und richtig\"}}},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Right\"}}},{\"category\":\"So\",\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und links\"}}},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Links\"}}},{\"category\":\"So\",\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leicht und horizontal\"}}},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen nach unten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen schwer und horizontal\"}}},{\"category\":\"So\",\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen links schweres und rechtes vertikales Licht\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Vertical Light\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Down Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Up Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen Vertikales schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Up Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Down Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt horizontal\"}}},{\"category\":\"So\",\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical\"}}},{\"category\":\"So\",\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Right\"}}},{\"category\":\"So\",\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Links\"}}},{\"category\":\"So\",\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und rechts\"}}},{\"category\":\"So\",\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und links\"}}},{\"category\":\"So\",\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Horizontal\"}}},{\"category\":\"So\",\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und horizontal\"}}},{\"category\":\"So\",\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Right\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Links\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und links\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und rechts\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal Oben Rechts Nach Unten Links\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal von oben links nach rechts unten\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"Box Zeichnungen Light Diagonal Cross\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Left\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Right\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Left und Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Up und Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left und Light Right\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Light Down\"}}},{\"category\":\"So\",\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"Block der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"Unterer achter Block\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"Unterer Viertelblock\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"Drei Achtel-Block senken\"}}},{\"category\":\"So\",\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"Block der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"Fünf Achtel Block\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"Unterer Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"Unterer Sieben Achtel-Block\"}}},{\"category\":\"So\",\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"Voller Block\"}}},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"Linker Sieben Achtel Block\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"Linker Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"Linker Block mit fünf Achteln\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"Linke halbe Block\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"Block drei Achtel\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"Linke einen Viertelblock\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"Linker achter Block\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"Rechte halbe Block\"}}},{\"category\":\"So\",\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"Lichtschatten\"}}},{\"category\":\"So\",\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"Mittlere Schatten\"}}},{\"category\":\"So\",\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"Dunkler Schatten\"}}},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"Oberer achter Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"rechter achter Block\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"Quadrant unten links\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"Quadrant rechts unten\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und unten links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten rechts\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links und unten rechts\"}}},{\"category\":\"So\",\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit abgerundeten Ecken\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat, das schwarzes kleines Quadrat enthält\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit horizontaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit orthogonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Oben links nach rechts unten füllen\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter bis unterer linker Füllung\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit diagonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"Schwarzes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"Weißes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"Weißes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"Weißes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"Weißes rechtwinkliges Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"Weißer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Abwärtsdreieck\"}}},{\"category\":\"So\",\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"Weißes nach unten zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes, nach unten zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"Weißer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit schwarzem kleinem Diamant\"}}},{\"category\":\"So\",\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"Fischauge\"}}},{\"category\":\"So\",\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"Raute\"}}},{\"category\":\"So\",\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Kreis\"}}},{\"category\":\"So\",\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"Kreis mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"Bullseye\"}}},{\"category\":\"So\",\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"Kreis mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"Kreis mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit unterer Hälfte Schwarz\"}}},{\"category\":\"So\",\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberem rechten Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit ganzem oberen linken Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"Linker halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"rechter halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"Inverse Kugel\"}}},{\"category\":\"So\",\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"Inverse weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter weißer Kreis der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"Inverser weißer Kreis der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des oberen linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen im oberen rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des rechten unteren Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des unteren linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"Oberer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"Unterer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"Schwarzes unteres linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes oberes linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"Weiße Kugel\"}}},{\"category\":\"So\",\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit der oberen linken Diagonalenhälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit senkrechter Linie\"}}},{\"category\":\"So\",\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck mit Punkt\"}}},{\"category\":\"So\",\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"Großer Kreis\"}}},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit oberem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit rechtem oberen Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit oberem linkem Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit rechtem oberen Quadranten\"}}},{\"category\":\"Sm\",\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"Oberes linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"Oberes rechtes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"Unteres linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"Unteres rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer linker diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"Diamant mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"Diamant mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"Diamant mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"Diamant mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"Schwarzes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"Weißes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"Schwarzes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"Weißes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"Weißes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"Weißes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"Horizontales schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"Schwarzer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"Schwarzer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"Schwarze mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"Weiße mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Diamant\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"Schwarze kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"Weiße kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"Schwarze horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"Weiße horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"Schwarze vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Stern\"}}},{\"category\":\"So\",\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"Weißer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"Schwerer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"Schweres Oval mit innenliegendem Oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis mit Kreis nach innen\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"Schwerer eingekreister Saltire\"}}}]\n,\n\"de/symbols/math_harpoons.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links über Harpune nach rechts\"}}},{\"category\":\"So\",\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts über Harpune nach links\"}}},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"Nach oben Barb Rechts Nach links Barb Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Right Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"Barb nach rechts Barb nach rechts Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Left Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up To Bar\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb bis zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Widerhaken rechts\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb Right to Bar\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"Rechts Harpoon mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach oben Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpoon nach rechts mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach unten Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Oben Rechts Harpoon mit Barb Up\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten Rechts Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpune nach links mit Barb nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Above Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down Under Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up Long Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach unten mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"linker Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"rechter Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}}]\n,\n\"de/symbols/math_non_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante über zwei Pi\"}}},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B Balkensymbol\"}}},{\"category\":\"So\",\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"Numero-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"Tonaufnahme Copyright\"}}},{\"category\":\"So\",\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"Rezept nehmen\"}}},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"Antwort\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"Dienstleistungsmarke\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"Telefon Zeichen\"}}},{\"category\":\"So\",\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"Markenzeichen\"}}},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"Versicle\"}}},{\"category\":\"So\",\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"Unze-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"Ohm-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ohm-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"Kelvin-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"Angstrom-Zeichen\"}}},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Geschätztes Symbol\"}}},{\"category\":\"Lu\",\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"Umgeschlagenes Kapital F\"}}},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"Informationsquelle\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Gedrehtes Kapital Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"Faksimile-Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"Aufgehobenes Sans-Serif-Kapital L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital Y\"}}}]\n,\n\"de/symbols/math_symbols.js\": \n[{\"locale\":\"de\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"Fakultät\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"Anführungszeichen\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"Nummernzeichen\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"Dollar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"Prozent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"Hochkomma\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"times\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"Komma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Pd\"},{\"category\":\"Po\",\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"Punkt\"}}},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"Strichpunkt\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"ist gleich\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"größer als\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"Klammeraffe\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circumflex\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"Unterstrich\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"Gravis Akzent\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"senkrechter Strich\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ausrufezeichen\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"Cent\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"währungszeichen\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"gebrochene Linie\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"Abschnitt\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diaeresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"Copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"weibliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pi\",\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"nicht\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registered sign\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"Überstrich\",\"alternative\":\"Makron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus minus\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acute accent\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"Paragraf\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Punkt mittig\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"Cedille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"Männliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pf\",\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Fragezeichen\"}},\"category\":\"Po\"},{\"category\":\"Sm\",\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"mal\"}}},{\"category\":\"Sm\",\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"geteilt durch\"}}},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"Breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"Überpunkt\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"Überring\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"Ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"Tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"Doppleakutakzent\"}},\"category\":\"Sk\"},{\"category\":\"Pd\",\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"Nicht brechender Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"Abbildung Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"En Dash\"}}},{\"category\":\"Pd\",\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"EM Dash\"}}},{\"category\":\"Pd\",\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"Horizontale Linie\"}}},{\"category\":\"Po\",\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"Doppelte vertikale Linie\"}}},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"Doppelter Unterstrich\"}}},{\"category\":\"Pi\",\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"Linkes einfaches Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"Rechtes einfaches Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"Einzelnes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"Einzelnes linkes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"Linkes doppeltes Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"Rechtes doppeltes Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"Doppeltes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"Doppeltes linkes Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"Dolch\"}}},{\"category\":\"Po\",\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"Doppelter Dolch\"}}},{\"category\":\"Po\",\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"Kugel\"}}},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"Dreieckige Kugel\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"Einzelpunkt\"}}},{\"category\":\"Po\",\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"zwei Punkte\"}}},{\"category\":\"Po\",\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"horizontale Ellipsis\"}}},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"Trennungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"promille\"}}},{\"category\":\"Po\",\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"pro Zehntausend\"}}},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"Strich\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"zwei Strich\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"drei Strich\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"zwei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"drei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"Caret\"}}},{\"category\":\"Pi\",\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"Einfacher nach links zeigender Winkel Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"Einzelne Nach-rechts-Winkel-Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"Referenzmarke\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"Doppelausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"Interrobang\"}}},{\"category\":\"Po\",\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"Überschrift\"}}},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"Undertie\"}}},{\"category\":\"Pc\",\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"Zeichen Krawatte\"}}},{\"category\":\"Po\",\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"Caret-Einfügungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"Asterism\"}}},{\"category\":\"Po\",\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"Bindestrich Kugel\"}}},{\"category\":\"Sm\",\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"Fraktions-Schrägstrich\"}}},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"Doppel-Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen für Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Pilcrow-Zeichen\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach links\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach rechts\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"Niedriges Sternchen\"}}},{\"category\":\"Po\",\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Semikolon\"}}},{\"category\":\"Po\",\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"Nahansicht\"}}},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"Zwei Sternchen vertikal ausgerichtet\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"Kommerzielles Minuszeichen\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"Swing Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"Inverted Undertie\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"Blume Interpunktionszeichen\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"Drei Punkt-Interpunktion\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"Vierpunkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"Fünf Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"Zwei Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"Vier-Punkt-Markierung\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Kreuz\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"Tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"Vertikale vier Punkte\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte rechte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"Index Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte rechte Klammer\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"Grundstücksgrenze\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"Ampersand gedreht\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"Pro Zeichen\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"Aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"Gedreht klein F\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"für alle\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"Komplement\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"es gibt\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"es gibt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"leere Menge\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"Differenz\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"nicht Element von\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"hat nicht als Element\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"Ende Beweis\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"Produkt\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"Koprodukt\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"Summe\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"minus plus\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"Plus mit Punkt\"}}},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"Division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"Mengendifferenz\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"verknüpft mit\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"Kreisoperator\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"Quadratwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"Kubikwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"vierte Wurzel\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportional zu\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"unendlich\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"Winkel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"gerichteter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"Raumwinkel\"}}},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"teilt\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"teilt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"nicht parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"oder\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"Durchschnitt\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"Vereinigung\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"Integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"Doppelintegral\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"Dreifachintegral\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"Randintegral\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"Oberflächenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"Volumenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"Integral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Gegenuhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"folglich\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"weil\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"Verhältnis\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"Minus mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"Überschuss\"}}},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"geometrische Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothetisch\"}}},{\"category\":\"Sm\",\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"Tildeoperator\"}}},{\"category\":\"Sm\",\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"Umgekehrte Tilde\"}}},{\"category\":\"Sm\",\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes stummes S\"}}},{\"category\":\"Sm\",\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"Sinuswelle\"}}},{\"category\":\"Sm\",\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"Kranzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"durchgestrichene Tilde\"}}},{\"category\":\"Sm\",\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"Minus über Tilde\"}}},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"nicht asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"ungefähr, aber nicht ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"weder ungefähr noch ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"nicht beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich oder gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"dreifache Tilde\"}}},{\"category\":\"Sm\",\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"alles gleich\"}}},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geometrisch äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"Differenz zwischen\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"nähert sich der Grenze\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geometrisch gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder das Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"Bild von oder ungefähr gleich\"}}},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"definiert als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"definiert als von rechts\"}}},{\"category\":\"Sm\",\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"category\":\"Sm\",\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}}},{\"category\":\"Sm\",\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"gleichwinklig zu\"}}},{\"category\":\"Sm\",\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"gleich mit Stern\"}}},{\"category\":\"Sm\",\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"gleich mit Delta\"}}},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"definitionsgemäß gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"gemessen mit\"}}},{\"category\":\"Sm\",\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"vielleicht gleich\"}}},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"ungleich\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"nicht kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"genau äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"kleiner oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"größer oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"kleiner als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"größer als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"viel kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"viel größer als\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"zwischen\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"nicht äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"nicht kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"nicht größer als\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"größer als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"kleiner oder größer als\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"größer oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"weder kleiner noch größer als\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"weder größer noch kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"nicht vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"nicht nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"keine echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"kein echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"Obermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"weder Teilmenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"weder Obermenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"Teilmenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"Obermenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"Multimenge\"}}},{\"category\":\"Sm\",\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"Multimengenmultiplikation\"}}},{\"category\":\"Sm\",\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"Multimengenvereinigung\"}}},{\"category\":\"Sm\",\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original von\"}}},{\"category\":\"Sm\",\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"quadratische Schnittmenge\"}}},{\"category\":\"Sm\",\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"quadratische VereinigungTasse\"}}},{\"category\":\"Sm\",\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Plus\"}}},{\"category\":\"Sm\",\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Minus\"}}},{\"category\":\"Sm\",\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Division\"}}},{\"category\":\"Sm\",\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"eingekreister Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"eingekreister Ringoperator\"}}},{\"category\":\"Sm\",\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"eingekreister Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Gleich\"}}},{\"category\":\"Sm\",\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"eingekreister Gedankenstrich\"}}},{\"category\":\"Sm\",\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Plus\"}}},{\"category\":\"Sm\",\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Minus\"}}},{\"category\":\"Sm\",\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"eingerahmte Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"eingerahmter Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"ergibt\"}}},{\"category\":\"Sm\",\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"ergibt nicht\"}}},{\"category\":\"Sm\",\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"senkrecht von\"}}},{\"category\":\"Sm\",\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"senkrecht auf\"}}},{\"category\":\"Sm\",\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"Behauptung\"}}},{\"category\":\"Sm\",\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"Model\"}}},{\"category\":\"Sm\",\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"wahr\"}}},{\"category\":\"Sm\",\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"dreifache vertikale Leiste mit rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doppelte vertikale Leiste mit doppeltem rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"beweist nicht\"}}},{\"category\":\"Sm\",\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"nicht wahr\"}}},{\"category\":\"Sm\",\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"nicht erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"negierte doppelte vertikale Leiste mit doppeltem rechten Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"vorangehend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"nachfolgend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"Original von\"}}},{\"category\":\"Sm\",\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"Bild von\"}}},{\"category\":\"Sm\",\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"Mehrfachzuordnung\"}}},{\"category\":\"Sm\",\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"hermitesch konjugierte Matrix\"}}},{\"category\":\"Sm\",\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"einschalten\"}}},{\"category\":\"Sm\",\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"Ausschließendes Oder\"}}},{\"category\":\"Sm\",\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"Nand verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"Nor verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"N-stufiger Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"N-stufige Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"Rautenoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Multiplikationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"Divisionsanzahl\"}}},{\"category\":\"Sm\",\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"Schleife\"}}},{\"category\":\"Sm\",\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"umgekehrte Tilde gleich\"}}},{\"category\":\"Sm\",\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doppelte Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doppelte Obermenge\"}}},{\"category\":\"Sm\",\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doppelter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doppelte Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"echter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"gleich und parallel\"}}},{\"category\":\"Sm\",\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"kleiner als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"größer als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"sehr viel kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"sehr viel größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"kleiner als, gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"größer als, gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"gleich oder vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"gleich oder nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"weder vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"weder nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"vorangehend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"nachfolgend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"nicht normale Untergruppe von\"}}},{\"category\":\"Sm\",\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"enthält keine normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"keine normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"enthält nicht als normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"Vertikale Ellipsis\"}}},{\"category\":\"Sm\",\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"Zentrierte horizontale Ellipse\"}}},{\"category\":\"Sm\",\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse unten links nach oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse, oben links nach unten rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"Element mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"Element mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"Element mit Überstrich\"}}},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"Element mit Unterstrich\"}}},{\"category\":\"Sm\",\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"Element mit 2 horizontalen Strichen\"}}},{\"category\":\"Sm\",\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit Überstrich\"}}},{\"category\":\"Sm\",\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"Z-Notation-Bag-Mitgliedschaft\"}}},{\"category\":\"So\",\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"Durchmesser-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"Haus\"}}},{\"category\":\"So\",\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"Projektiv\"}}},{\"category\":\"So\",\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"Perspektive\"}}},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"Schlangenlinie\"}}},{\"category\":\"So\",\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Nichtzeichen\"}}},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"Quadratische Raute\"}}},{\"category\":\"So\",\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"Bogen\"}}},{\"category\":\"So\",\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"Segment\"}}},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"Sektor\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"Schweres Pluszeichen\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"Schweres Minuszeichen\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"Heavy Division Sign\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"Curly Loop\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"Doppelte geschweifte Schleife\"}}},{\"category\":\"Sm\",\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"Weißes Dreieck, das kleines weißes Dreieck enthält\"}}},{\"category\":\"Sm\",\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"Aufrecht\"}}},{\"category\":\"Sm\",\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"Subset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"Superset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"Oder mit innerem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Vorhergehender Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"Superset Vorgänger Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"Mathematische aufsteigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"Lange Abteilung\"}}},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"Mathematische fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"quadratisches und\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"quadratisches oder\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit zentriertem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"Und mit Dot\"}}},{\"category\":\"Sm\",\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"Untere rechte Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"Linke äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"rechter äußerer Join\"}}},{\"category\":\"Sm\",\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"Volle äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"Große Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"Großes Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"Linkes und rechtes doppeltes Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"Linker und rechter Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"Linke Multimap\"}}},{\"category\":\"Sm\",\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"Long Right Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"Langer linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"Up Tack mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"Raute durch horizontale Regel geteilt\"}}},{\"category\":\"Sm\",\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant\"}}},{\"category\":\"Sm\",\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Tick nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"Steigende diagonale Kreuzung fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"Fallende diagonale Kreuzung steigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Balkenbegrenzer\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"Z Notationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"Z Notationstyp Doppelpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Zaun\"}}},{\"category\":\"Sm\",\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"Vertikale Zickzacklinie\"}}},{\"category\":\"Sm\",\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter leerer Satz\"}}},{\"category\":\"Sm\",\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit horizontaler Leiste\"}}},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"eingekreister umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Senkrecht\"}}},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"Kreis geteilt durch horizontale Leiste und obere Hälfte geteilt durch vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"Kreis mit überlagertem X\"}}},{\"category\":\"Sm\",\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"eingekreistes, gegen den Uhrzeigersinn gedrehtes Divisionszeichen\"}}},{\"category\":\"Sm\",\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"eingekreiste weiße Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"eingekreist weniger als\"}}},{\"category\":\"Sm\",\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"eingekreist größer als\"}}},{\"category\":\"Sm\",\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit kleinem Kreis nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit zwei horizontalen Strichen nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links unten nach rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links oben nach rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"Quadrat Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"Quadratischer kleiner Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"Doppelquadrat\"}}},{\"category\":\"Sm\",\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"Zwei verbundene Quadrate\"}}},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"S im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Serifen unten\"}}},{\"category\":\"Sm\",\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"Rechtes Dreieck über linkem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"Linkes Dreieck neben vertikaler Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken neben dem rechten Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"Fliege mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"Fliege mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"Schwarze Fliege\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"Zeiten mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"Mal mit rechter Hälfte Schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"Weiße Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"Schwarze Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"Unvollständige Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"Krawatte über Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"Unendlichkeit mit vertikaler Leiste negiert\"}}},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"Doppelter Multimap\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit konturierter Kontur\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"Erhöht als\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"Produkt mischen\"}}},{\"category\":\"Sm\",\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und geneigte Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und schräge Parallele zu Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"Identisch und schräg parallel\"}}},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"Gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"Thermodynamisch\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"Abwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"Abwärtsdreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"Schwarze Raute\"}}},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrtes weißes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"Fehlerfreies schwarzes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Diamant\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"Error-Barred Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter schwarzer Kreis\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Operator\"}}},{\"category\":\"Sm\",\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"Großer Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"Großer umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"Doppel plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"Triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"Winzig\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"Miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Punkt-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled Plus Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square-Kreuzungsoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square Union-Betreiber\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"Zwei logische und Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"Zwei logisch oder Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"N-Ary Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"Modulo Zwei Summe\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"Summation mit Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"Vierfach-Integral-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"Finite Part Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"Integral mit Doppelhub\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"Integraler Durchschnitt mit Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"Zirkulationsfunktion\"}}},{\"category\":\"Sm\",\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"Integration gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit rechteckigem Pfad um die Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit halbkreisförmigem Pfad um den Pol\"}}},{\"category\":\"Sm\",\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"Leitungsintegration ohne Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"Integral um einen Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"Quaternion Integral Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"Integriert mit Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"Integral mit der Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"Integral mit Union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"Integral mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"Integral mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"Beitreten\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"Großes linkes Dreieckbediener\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Zusammensetzung\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Piping\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Projektion\"}}},{\"category\":\"Sm\",\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Zirkumflex-Akzent oben\"}}},{\"category\":\"Sm\",\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde unter\"}}},{\"category\":\"Sm\",\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Index Zwei\"}}},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit schwarzem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Komma oben\"}}},{\"category\":\"Sm\",\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit fallenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"Vektor- oder Kreuzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"Semidirektprodukt mit geschlossenem Boden\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Multiplikationszeichen mit Circumflex-Akzent\"}}},{\"category\":\"Sm\",\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im doppelten Kreis\"}}},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"circled division sign\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"Innenprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"Produkt für den rechten Innenraum\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"Z-Notation relationaler Aufbau\"}}},{\"category\":\"Sm\",\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"Verschmelzung oder Koprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"Union mit Minuszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"Union mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"Kreuzung mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"Überschneidung mit logischem und\"}}},{\"category\":\"Sm\",\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"Vereinigung mit logischem Or\"}}},{\"category\":\"Sm\",\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über dem Schnittpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt über Union\"}}},{\"category\":\"Sm\",\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über Stab über Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt oberhalb der Stange oberhalb der Union\"}}},{\"category\":\"Sm\",\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"Union daneben und mit Union verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"Kreuzung neben und mit Kreuzung verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Vereinigung mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Schnittpunkt mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"Doppelter Quadratschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"Double Square Union\"}}},{\"category\":\"Sm\",\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"Closed Union mit Serifen und Smash-Produkten\"}}},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Punkt oben\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double logical or\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"Zwei durchschneiden logisch und\"}}},{\"category\":\"Sm\",\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"Zwei sich überschneidende logische Oder\"}}},{\"category\":\"Sm\",\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß oder\"}}},{\"category\":\"Sm\",\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß und\"}}},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"Logisch oder Überlappend Logisch Und\"}}},{\"category\":\"Sm\",\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"kleines Vee mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit doppelter Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Domain Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"Z Notationsbereich Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"Identisch mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit doppeltem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit dreifachem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"Ähnlich Minus Ähnlich\"}}},{\"category\":\"Sm\",\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"Kongruent mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Entspricht Asterisk\"}}},{\"category\":\"Sm\",\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"Fast gleichwertig mit dem Circumflex Accent\"}}},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen über Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt gleich\"}}},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"double equal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"Drei aufeinander folgende Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit zwei Punkten oben und zwei Punkten unten\"}}},{\"category\":\"Sm\",\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"Gleichwertig mit vier Punkten oben\"}}},{\"category\":\"Sm\",\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Circle Inside\"}}},{\"category\":\"Sm\",\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Kreis nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben links\"}}},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"Größer als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht gleich\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"Weniger als aber größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"Größer als aber weniger als unten und größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"Größer als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oben größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"Größer als oben Ähnlich oben\"}}},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"less than greater than or equal to\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"greater than less than or equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben schräg gleich oben Größer als oben schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"Größer als oben schräg gleich oben kleiner als oben schräg gleich groß\"}}},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als mit innenliegendem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als mit Punkt nach innen\"}}},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"Gleich oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"Gleich oder größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder größer als\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"Äquivalent oder kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben Weniger als Gleiches Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben größer als oben Gleichheitszeichen\"}}},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"Doppelt verschachtelt, weniger als mit Unterleiste\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"less than greater than overlay\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"Größer als weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"Weniger als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"Größer als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"Weniger als dann geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"Größer als geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"Größer als\"}}},{\"category\":\"Sm\",\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"Größer als oder gleich\"}}},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"difference between (variant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"Stellt über dem einzeiligen Gleichheitszeichen ein\"}}},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"Erfolg über dem einzeiligen Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"Vorangehende Single-Line ist nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"Erfolg über Single-Line nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"Erfolgreich über Gleichheitszeichen\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precedes but not equal to\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes fast gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"Erreicht über fast gleich viel\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"Vorangegangene nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"Erreicht oben nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"Doppelter Vorgänger\"}}},{\"category\":\"Sm\",\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"Doppelter Erfolg\"}}},{\"category\":\"Sm\",\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"Superset mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"Superset mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"Superset mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"Superset von oder gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"Teilmenge des obigen Gleichheitszeichens\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"Superset des obigen Gleichheitszeichens\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"approximate subset of\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"approximate superset of\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"Superset von oben fast gleichwertig\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"Superset von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"Platz links Feldbetreiber geöffnet\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Box mit offener Box\"}}},{\"category\":\"Sm\",\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Untermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen oder gleich\"}}},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"subset over superset\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"superset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"subset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"superset over superset\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"Superset neben dem Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"Superset Neben und Joined von Dash mit Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"Heugabel mit T-Stück\"}}},{\"category\":\"Sm\",\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"Transversalschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"Gabelung\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"Nicht Gabeln\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"Kurzer Linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"Kurzer Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklig zu S\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"Vertikales Dreifach-Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken linkes Drehkreuz\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken Doppelter linker Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"Long Dash von Left Member von Double Vertical\"}}},{\"category\":\"Sm\",\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"Short Down Tack mit Overbar\"}}},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"perpendicular over bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack Über Short Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"Double Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"Verdoppeln Sie Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"Doppelstrich nicht unterschreiben\"}}},{\"category\":\"Sm\",\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Doppelstrich nicht unterschrieben\"}}},{\"category\":\"Sm\",\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"Teilt sich nicht mit umgekehrten Negationsschrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"Down Tack mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"Parallel zum horizontalen Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"Parallel zu Tilde Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"Dreifache vertikale Balken-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Strich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"Triple Colon Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachtelt weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachteltes Größeres als\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"Doppellinie schräg, weniger als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg größer als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"Dreifache Schrägstrich-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"Großer dreifacher vertikaler Barbediener\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"Doppelter Schrägstrich-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"N-Ary White Vertical Bar\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"Wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Komma\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale horizontale Ellipsen\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Zwei-Punkt-Leader\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Wavy Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"Sesampunkt\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"Weißer Sesam Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"Centreline Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Wellenlinie\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"Mittellinie Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"kleines Komma\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"kleiner Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"kleines Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"kleiner Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"kleines Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"kleines Ausrufezeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"kleiner Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"kleines Nummernzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"kleines kaufmännisches\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"kleines Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"kleines Pluszeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"kleiner Bindestrich-Minus\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"kleines weniger als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"kleines Größeres als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"kleines Gleichheitszeichen\"}}},{\"category\":\"Po\",\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"kleiner umgekehrter Schrägstrich\"}}},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"kleines Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"kleines Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"kleine kommerzielle bei\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"vollbreites Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"vollbreites Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"vollbreites Nummernzeichen\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"vollbreites Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"vollbreites Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"vollbreites kaufmännisches und\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"vollbreites Apostroph\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Stern\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Komma\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Minus\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Punkt\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit voller Breite\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Semikolon\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"Weniger als das gesamte Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Gleichspannungszeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Mehr als Zeichen\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Commercial at\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit voller Breite\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"Circumflex-Akzent mit voller Breite\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Low Line\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Gravis Akzent\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Vertikale Linie\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"vollbreite Tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"vollbreites Cent-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"vollbreites Pfundzeichen\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"vollbreite nicht Symbol\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Überstrich\",\"alternative\":\"vollbreites Makron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"vollbreite gestrichelte Linie\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"vollbreites Yen-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"vollbreites Won-Zeichen\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"Halbbreite bildet leicht vertikal\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat mit halber Breite\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit halber Breite\"}}}]\n,\n\"de/symbols/math_whitespace.js\": \n[{\"locale\":\"de\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"Leerzeichen\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"weicher Trennstrich\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"En Quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"Em Quad\"}}},{\"category\":\"Zs\",\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"En Space\"}}},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"Raum für drei Per-Em\"}}},{\"category\":\"Zs\",\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"Raum für vier pro Em\"}}},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"Six-Per-Em Space\"}}},{\"category\":\"Zs\",\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"Raum darstellen\"}}},{\"category\":\"Zs\",\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"Interpunktionsraum\"}}},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"Nullbreite ohne Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"Zero Width Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"Markierung von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"Markierung von rechts nach links\"}}},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"Trennzeichen\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"Absatztrennzeichen\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"Einbetten von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"Einbetten von rechts nach links\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"Pop Richtungsformatierung\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"Von links nach rechts überschreiben\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"Von rechts nach links überschreiben\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"Schmaler No-Break-Bereich\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Cf\",\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"Word Joiner\"}}},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"von\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"Unsichtbares Plus\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"Symmetrisches Austauschen verhindern\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"Aktivieren Sie das symmetrische Austauschen\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"Nationale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"Nominale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"Nullbreite Leerzeichen\"}}},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"Interlinearer Anmerkungsanker\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"Separator für interlineare Anmerkungen\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"Interlinear Annotation Terminator\"}}}]\n,\n\"de/symbols/other_stars.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"Dezimalexponentensymbol\"}}},{\"category\":\"So\",\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"weißer Stern\"}}},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"Mittlerer weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"Mittlerer schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"Weißes schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"Häkchen\"}}},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"Schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"Schwere Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"Center Cross öffnen\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"Schweres offenes Mittelkreuz\"}}},{\"category\":\"So\",\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"Malteserkreuz\"}}},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Davidstern\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"Vier Teardrop-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"Vier Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"Schwere Vier-Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"Vier Club-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Schwarzer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Weißer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"Funkelt\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Stress umrissener weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Eingekreister weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"Open Center Black Star\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Center White Star\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern umrissen\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Schwerer umrissener schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Sternrad Stern\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Stern\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stern\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"Öffnen Sie Center Asterisk\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"Acht Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger Sternradstern\"}}},{\"category\":\"So\",\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"Sechszackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Zwölf schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"Sechzehn Spitzen Sternchen\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"Open Center Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"Sechs Petalled Schwarzweiss-Florette\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"Schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"Weiße Florette\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"Acht Petalled umrissene schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Eingekreistes offenes Zentrum Achtstern\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"Schweres, tropfenbesetztes Nadelrad-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"Feste Trifoliate-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"Schwere Chevron-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Funkeln\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"Schweres Funkeln\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"Schwere Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"Cross Mark\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Kreis\"}}}]\n,\n\"de/units/energy.js\": \n[{\"locale\":\"de\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"Watt\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowattstunde\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"Joule\",\"plural\":\"Joules\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"Volt\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Mikroohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"Ohm\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kiloohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"de/units/length.js\": \n[{\"locale\":\"de\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"Millimeter\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"Zentimeter\"}},\"category\":\"length\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"Meter\"}},\"category\":\"length\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"Kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"Fuß\"}},\"category\":\"length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"Zoll\"}},\"category\":\"length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"plural\":\"Meilen\",\"default\":\"Meile\"}},\"category\":\"length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"plural\":\"Yards\",\"default\":\"Yard\"}},\"category\":\"length\",\"names\":[\"yd\",\"yd.\"]},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"nautische Meile\"}},\"category\":\"length\"}]\n,\n\"de/units/memory.js\": \n[{\"locale\":\"de\"},{\"key\":\"b\",\"mappings\":{\"default\":{\"plural\":\"Bits\",\"default\":\"Bit\"}},\"category\":\"memory\",\"names\":[\"b\"]},{\"key\":\"B\",\"mappings\":{\"default\":{\"plural\":\"Bytes\",\"default\":\"Byte\"}},\"category\":\"memory\",\"names\":[\"B\"]},{\"key\":\"KB\",\"mappings\":{\"default\":{\"plural\":\"Kilobytes\",\"default\":\"Kilobyte\"}},\"category\":\"memory\",\"names\":[\"KB\"]},{\"key\":\"MB\",\"mappings\":{\"default\":{\"plural\":\"Megabytes\",\"default\":\"Megabyte\"}},\"category\":\"memory\",\"names\":[\"MB\"]},{\"key\":\"GB\",\"mappings\":{\"default\":{\"plural\":\"Gigabytes\",\"default\":\"Gigabyte\"}},\"category\":\"memory\",\"names\":[\"GB\"]},{\"key\":\"TB\",\"mappings\":{\"default\":{\"plural\":\"Terabytes\",\"default\":\"Terabyte\"}},\"category\":\"memory\",\"names\":[\"TB\"]}]\n,\n\"de/units/other.js\": \n[{\"locale\":\"de\"},{\"key\":\"ha\",\"mappings\":{\"default\":{\"default\":\"Hektar\"}},\"category\":\"other\",\"names\":[\"ha\"]},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"Dutzend\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"de/units/speed.js\": \n[{\"locale\":\"de\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"Knoten\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"Meilen pro Stunde\",\"singular\":\"Meile pro Stunde\"}},\"category\":\"speed\",\"names\":[\"mph\"]},{\"key\":\"kmh\",\"mappings\":{\"default\":{\"default\":\"Kilometer pro Stunde\"}},\"category\":\"speed\",\"names\":[\"kmh\"]},{\"key\":\"rpm\",\"mappings\":{\"default\":{\"default\":\"Umdrehungen pro Minute\",\"singular\":\"Umdrehung pro Minute\"}},\"category\":\"speed\",\"names\":[\"rpm\"]}]\n,\n\"de/units/temperature.js\": \n[{\"locale\":\"de\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"Farad\"}},\"category\":\"temperature\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"Celsius\"}},\"category\":\"temperature\",\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\",\"names\":[\"K\",\"°K\"]}]\n,\n\"de/units/time.js\": \n[{\"locale\":\"de\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Nanosekunde\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Microsekunde\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Millisekunde\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Sekunde\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Stunde\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"de/units/volume.js\": \n[{\"locale\":\"de\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubik\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikinch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikfuß\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikyard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"Fass\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"plural\":\"Gallonen\",\"default\":\"Gallone\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"Pint\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"plural\":\"Quarts\",\"default\":\"Quart\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"Esslöffel\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"Teelöffel\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikzentimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"de/units/weight.js\": \n[{\"locale\":\"de\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"weight\",\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"plural\":\"Unzen\",\"default\":\"Unze\"}},\"category\":\"weight\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"Gramm\"}},\"category\":\"weight\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Kilogramm\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Mikrogramm\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Milligramm\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"plural\":\"Tonnen\",\"default\":\"Tonne\"}},\"category\":\"weight\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/en.js",
    "content": "{\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"determinant\"},\"mathspeak\":{\"default\":\"det\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphism\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"en/functions/elementary.js\": \n[{\"locale\":\"en\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"natural log\"},\"mathspeak\":{\"default\":\"ln\"},\"clearspeak\":{\"default\":\"l n\",\"Log_LnAsNaturalLog\":\"natural log\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log base 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"exponential\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"greatest common divisor\"},\"mathspeak\":{\"default\":\"gcd\"},\"clearspeak\":{\"default\":\"gcd\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"least common multiple\"},\"mathspeak\":{\"default\":\"lcm\"},\"clearspeak\":{\"default\":\"lcm\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"argument\"},\"mathspeak\":{\"default\":\"arg\"},\"clearspeak\":{\"default\":\"arg\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"imaginary part\"},\"mathspeak\":{\"default\":\"im\"},\"clearspeak\":{\"default\":\"imaginary\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"real part\"},\"mathspeak\":{\"default\":\"re\"},\"clearspeak\":{\"default\":\"real\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"infimum\"},\"mathspeak\":{\"default\":\"inf\"},\"clearspeak\":{\"default\":\"inf\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit\"},\"mathspeak\":{\"default\":\"limit\"},\"clearspeak\":{\"default\":\"lim\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit inferior\"},\"mathspeak\":{\"default\":\"liminf\"},\"clearspeak\":{\"default\":\"liminf\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit superior\"},\"mathspeak\":{\"default\":\"limsup\"},\"clearspeak\":{\"default\":\"limsup\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"maximum\"},\"mathspeak\":{\"default\":\"max\"},\"clearspeak\":{\"default\":\"max\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"minimum\"},\"mathspeak\":{\"default\":\"min\"},\"clearspeak\":{\"default\":\"min\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"supremum\"},\"mathspeak\":{\"default\":\"sup\"},\"clearspeak\":{\"default\":\"sup\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"colimit\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projective limit\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"modulo\"},\"mathspeak\":{\"default\":\"mod\"},\"clearspeak\":{\"default\":\"mod\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"probability\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"en/functions/hyperbolic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosine\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cotangent\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosecant\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic secant\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic sine\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic tangent\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosine\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cotangent\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosecant\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic secant\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic sine\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic tangent\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"en/functions/trigonometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosine\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cotangent\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosecant\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"secant\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"sine\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"tangent\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosine inverse\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cotangent inverse\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosecant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosecant inverse\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc secant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"secant inverse\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"sine inverse\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"tangent inverse\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"en/symbols/digits_rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"squared\"},\"mathspeak\":{\"default\":\"squared\"},\"clearspeak\":{\"default\":\"squared\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"cubed\"},\"mathspeak\":{\"default\":\"cubed\"},\"clearspeak\":{\"default\":\"cubed\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one quarter\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one half\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three quarters\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one seventh\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one ninth\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one tenth\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one third\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two thirds\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one fifth\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two fifths\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three fifths\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"four fifths\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one sixth\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five sixths\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one eighth\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three eighths\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five eighths\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"seven eighths\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"numerator one\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"zero thirds\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled ten on black square\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled twenty on black square\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled thirty on black square\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled forty on black square\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled fifty on black square\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled sixty on black square\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled seventy on black square\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled eighty on black square\"}},\"key\":\"324F\"}]\n,\n\"en/symbols/greek-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"en/symbols/greek-scripts.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"small cap Gamma\"},\"mathspeak\":{\"default\":\"small upper Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"small cap Lamda\"},\"mathspeak\":{\"default\":\"small upper Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"small cap Pi\"},\"mathspeak\":{\"default\":\"small upper Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"small cap Rho\"},\"mathspeak\":{\"default\":\"small upper Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"small cap Psi\"},\"mathspeak\":{\"default\":\"small upper Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"superscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"superscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscript beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subscript rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscript chi\"}}}]\n,\n\"en/symbols/greek-symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"beta\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"kai\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed epsilon\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold cap Digamma\"},\"mathspeak\":{\"default\":\"bold upper Digamma\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"bold digamma\"}},\"key\":\"1D7CB\"}]\n,\n\"en/symbols/hebrew_letters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"first transfinite cardinal\",\"alternative\":\"alef\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"second transfinite cardinal\",\"alternative\":\"bet\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"third transfinite cardinal\",\"alternative\":\"gimel\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"fourth transfinite cardinal\",\"alternative\":\"dalet\"}},\"key\":\"2138\"}]\n,\n\"en/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u double overdot caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u double overdot grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek overbar\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a ring above acute\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde overbar\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cedilla acute\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cedilla breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s acute overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s underdot overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u overbar double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a breve acute\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a breve grave\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a breve hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a breve tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a breve underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o underdot prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u underdot prime\"}}}]\n,\n\"en/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b with stroke\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o with stroke and acute\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y with stroke\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke and hook\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"latin letter glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"sideways o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"long s with diagonal stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"long s with high stroke\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"turned delta\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"long s with dot above\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"long s\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tone six\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c with hook\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f with hook\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k with hook\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l with bar\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n with long right leg\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o with horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p with hook\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"tone two\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed esh loop\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u with horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh reversed\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh with tail\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tone five\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"latin letter wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz with caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae with macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"turned e\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae with acute\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d with curl\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z with hook\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l with curl\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n with curl\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t with curl\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q with hook tail\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"turned a\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"turned alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b with hook\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c with curl\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d with tail\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d with hook\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"reversed e\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa with hook\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"open e\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"reversed open e with hook\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"closed reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g with hook\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"script g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"rams horn\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"turned h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h with hook\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"heng with hook\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l with belt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"turned m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"turned m with long leg\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m with hook\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n with left hook\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"barred o\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"closed omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"turned r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"turned r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"turned r with hook\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r with tail\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"reversed r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s with hook\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat reversed esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh with curl\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"turned t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v with hook\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"turned v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"turned w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"turned y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z with curl\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"latin letter pharyngeal voiced fricative\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"latin letter stretched c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"closed open e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"turned k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q with hook\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"latin letter bidental percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"turned ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"turned open e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"turned i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"sideways o\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"sideways open o\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"turned oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"top half o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"bottom half o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"sideways u\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"sideways diaeresized u\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"sideways turned m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"latin letter voiced laryngeal spirant\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"latin letter ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r with fishhook and middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"turned g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th with strikethrough\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d with hook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"reversed open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"open o with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n preceded by apostrophe\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}}}]\n,\n\"en/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"},\"mathspeak\":{\"default\":\"modifying above a with grave\",\"brief\":\"mod above a with grave\",\"sbrief\":\"mod above a with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a acute\"},\"mathspeak\":{\"default\":\"modifying above a with acute\",\"brief\":\"mod above a with acute\",\"sbrief\":\"mod above a with acute\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a hat\"},\"mathspeak\":{\"default\":\"modifying above a with caret\",\"brief\":\"mod above a with caret\",\"sbrief\":\"mod above a with caret\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"},\"mathspeak\":{\"default\":\"a overtilde\",\"brief\":\"a overtilde\",\"sbrief\":\"a overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a double overdot\"},\"mathspeak\":{\"default\":\"modifying above a with double dot\",\"brief\":\"mod above a with double dot\",\"sbrief\":\"mod above a with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a ring\"},\"mathspeak\":{\"default\":\"modifying above a with ring\",\"brief\":\"mod above a with ring\",\"sbrief\":\"mod above a with ring\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"},\"mathspeak\":{\"default\":\"modifying above c with cedilla\",\"brief\":\"mod above c with cedilla\",\"sbrief\":\"mod above c with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"},\"mathspeak\":{\"default\":\"modifying above e with grave\",\"brief\":\"mod above e with grave\",\"sbrief\":\"mod above e with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e acute\"},\"mathspeak\":{\"default\":\"modifying above e with acute\",\"brief\":\"mod above e with acute\",\"sbrief\":\"mod above e with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e hat\"},\"mathspeak\":{\"default\":\"modifying above e with caret\",\"brief\":\"mod above e with caret\",\"sbrief\":\"mod above e with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e double overdot\"},\"mathspeak\":{\"default\":\"modifying above e with double dot\",\"brief\":\"mod above e with double dot\",\"sbrief\":\"mod above e with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"},\"mathspeak\":{\"default\":\"modifying above i with grave\",\"brief\":\"mod above i with grave\",\"sbrief\":\"mod above i with grave\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i acute\"},\"mathspeak\":{\"default\":\"modifying above i with acute\",\"brief\":\"mod above i with acute\",\"sbrief\":\"mod above i with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i hat\"},\"mathspeak\":{\"default\":\"modifying above i with caret\",\"brief\":\"mod above i with caret\",\"sbrief\":\"mod above i with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i double overdot\"},\"mathspeak\":{\"default\":\"modifying above i with double dot\",\"brief\":\"mod above i with double dot\",\"sbrief\":\"mod above i with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"},\"mathspeak\":{\"default\":\"n overtilde\",\"brief\":\"n overtilde\",\"sbrief\":\"n overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"},\"mathspeak\":{\"default\":\"modifying above o with grave\",\"brief\":\"mod above o with grave\",\"sbrief\":\"mod above o with grave\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o acute\"},\"mathspeak\":{\"default\":\"modifying above o with acute\",\"brief\":\"mod above o with acute\",\"sbrief\":\"mod above o with acute\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o hat\"},\"mathspeak\":{\"default\":\"modifying above o with caret\",\"brief\":\"mod above o with caret\",\"sbrief\":\"mod above o with caret\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"},\"mathspeak\":{\"default\":\"o overtilde\",\"brief\":\"o overtilde\",\"sbrief\":\"o overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o double overdot\"},\"mathspeak\":{\"default\":\"modifying above o with double dot\",\"brief\":\"mod above o with double dot\",\"sbrief\":\"mod above o with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"},\"mathspeak\":{\"default\":\"modifying above u with grave\",\"brief\":\"mod above u with grave\",\"sbrief\":\"mod above u with grave\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u acute\"},\"mathspeak\":{\"default\":\"modifying above u with acute\",\"brief\":\"mod above u with acute\",\"sbrief\":\"mod above u with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u hat\"},\"mathspeak\":{\"default\":\"modifying above u with caret\",\"brief\":\"mod above u with caret\",\"sbrief\":\"mod above u with caret\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u double overdot\"},\"mathspeak\":{\"default\":\"modifying above u with double dot\",\"brief\":\"mod above u with double dot\",\"sbrief\":\"mod above u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y acute\"},\"mathspeak\":{\"default\":\"modifying above y with acute\",\"brief\":\"mod above y with acute\",\"sbrief\":\"mod above y with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y double overdot\"},\"mathspeak\":{\"default\":\"modifying above y with double dot\",\"brief\":\"mod above y with double dot\",\"sbrief\":\"mod above y with double dot\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a overbar\"},\"mathspeak\":{\"default\":\"a overbar\",\"brief\":\"a overbar\",\"sbrief\":\"a overbar\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a breve\"},\"mathspeak\":{\"default\":\"modifying above a with breve\",\"brief\":\"mod above a with breve\",\"sbrief\":\"mod above a with breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"},\"mathspeak\":{\"default\":\"modifying above a with ogonek\",\"brief\":\"mod above a with ogonek\",\"sbrief\":\"mod above a with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c acute\"},\"mathspeak\":{\"default\":\"modifying above c with acute\",\"brief\":\"mod above c with acute\",\"sbrief\":\"mod above c with acute\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c hat\"},\"mathspeak\":{\"default\":\"modifying above c with caret\",\"brief\":\"mod above c with caret\",\"sbrief\":\"mod above c with caret\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c overdot\"},\"mathspeak\":{\"default\":\"modifying above c with dot\",\"brief\":\"mod above c with dot\",\"sbrief\":\"mod above c with dot\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"},\"mathspeak\":{\"default\":\"modifying above c with caron\",\"brief\":\"mod above c with caron\",\"sbrief\":\"mod above c with caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"},\"mathspeak\":{\"default\":\"modifying above d with caron\",\"brief\":\"mod above d with caron\",\"sbrief\":\"mod above d with caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e overbar\"},\"mathspeak\":{\"default\":\"e overbar\",\"brief\":\"e overbar\",\"sbrief\":\"e overbar\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e breve\"},\"mathspeak\":{\"default\":\"modifying above e with breve\",\"brief\":\"mod above e with breve\",\"sbrief\":\"mod above e with breve\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e overdot\"},\"mathspeak\":{\"default\":\"modifying above e with dot\",\"brief\":\"mod above e with dot\",\"sbrief\":\"mod above e with dot\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"},\"mathspeak\":{\"default\":\"modifying above e with ogonek\",\"brief\":\"mod above e with ogonek\",\"sbrief\":\"mod above e with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"},\"mathspeak\":{\"default\":\"modifying above e with caron\",\"brief\":\"mod above e with caron\",\"sbrief\":\"mod above e with caron\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g hat\"},\"mathspeak\":{\"default\":\"modifying above g with caret\",\"brief\":\"mod above g with caret\",\"sbrief\":\"mod above g with caret\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g breve\"},\"mathspeak\":{\"default\":\"modifying above g with breve\",\"brief\":\"mod above g with breve\",\"sbrief\":\"mod above g with breve\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g overdot\"},\"mathspeak\":{\"default\":\"modifying above g with dot\",\"brief\":\"mod above g with dot\",\"sbrief\":\"mod above g with dot\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cedilla\"},\"mathspeak\":{\"default\":\"modifying above g with cedilla\",\"brief\":\"mod above g with cedilla\",\"sbrief\":\"mod above g with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h hat\"},\"mathspeak\":{\"default\":\"modifying above h with caret\",\"brief\":\"mod above h with caret\",\"sbrief\":\"mod above h with caret\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"},\"mathspeak\":{\"default\":\"i overtilde\",\"brief\":\"i overtilde\",\"sbrief\":\"i overtilde\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i overbar\"},\"mathspeak\":{\"default\":\"i overbar\",\"brief\":\"i overbar\",\"sbrief\":\"i overbar\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i breve\"},\"mathspeak\":{\"default\":\"modifying above i with breve\",\"brief\":\"mod above i with breve\",\"sbrief\":\"mod above i with breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"},\"mathspeak\":{\"default\":\"modifying above i with ogonek\",\"brief\":\"mod above i with ogonek\",\"sbrief\":\"mod above i with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"dotless i\"},\"mathspeak\":{\"default\":\"modifying above dotless i\",\"brief\":\"mod above dotless i\",\"sbrief\":\"mod above dotless i\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j hat\"},\"mathspeak\":{\"default\":\"modifying above j with caret\",\"brief\":\"mod above j with caret\",\"sbrief\":\"mod above j with caret\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cedilla\"},\"mathspeak\":{\"default\":\"modifying above k with cedilla\",\"brief\":\"mod above k with cedilla\",\"sbrief\":\"mod above k with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l acute\"},\"mathspeak\":{\"default\":\"modifying above l with acute\",\"brief\":\"mod above l with acute\",\"sbrief\":\"mod above l with acute\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cedilla\"},\"mathspeak\":{\"default\":\"modifying above l with cedilla\",\"brief\":\"mod above l with cedilla\",\"sbrief\":\"mod above l with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"},\"mathspeak\":{\"default\":\"modifying above l with caron\",\"brief\":\"mod above l with caron\",\"sbrief\":\"mod above l with caron\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l middle dot\"},\"mathspeak\":{\"default\":\"modifying above l with middle dot\",\"brief\":\"mod above l with middle dot\",\"sbrief\":\"mod above l with middle dot\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n acute\"},\"mathspeak\":{\"default\":\"modifying above n with acute\",\"brief\":\"mod above n with acute\",\"sbrief\":\"mod above n with acute\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cedilla\"},\"mathspeak\":{\"default\":\"modifying above n with cedilla\",\"brief\":\"mod above n with cedilla\",\"sbrief\":\"mod above n with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"},\"mathspeak\":{\"default\":\"modifying above n with caron\",\"brief\":\"mod above n with caron\",\"sbrief\":\"mod above n with caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o overbar\"},\"mathspeak\":{\"default\":\"o overbar\",\"brief\":\"o overbar\",\"sbrief\":\"o overbar\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o breve\"},\"mathspeak\":{\"default\":\"modifying above o with breve\",\"brief\":\"mod above o with breve\",\"sbrief\":\"mod above o with breve\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o double acute\"},\"mathspeak\":{\"default\":\"modifying above o with double acute\",\"brief\":\"mod above o with double acute\",\"sbrief\":\"mod above o with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r acute\"},\"mathspeak\":{\"default\":\"modifying above r with acute\",\"brief\":\"mod above r with acute\",\"sbrief\":\"mod above r with acute\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cedilla\"},\"mathspeak\":{\"default\":\"modifying above r with cedilla\",\"brief\":\"mod above r with cedilla\",\"sbrief\":\"mod above r with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"},\"mathspeak\":{\"default\":\"modifying above r with caron\",\"brief\":\"mod above r with caron\",\"sbrief\":\"mod above r with caron\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s acute\"},\"mathspeak\":{\"default\":\"modifying above s with acute\",\"brief\":\"mod above s with acute\",\"sbrief\":\"mod above s with acute\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s hat\"},\"mathspeak\":{\"default\":\"modifying above s with caret\",\"brief\":\"mod above s with caret\",\"sbrief\":\"mod above s with caret\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cedilla\"},\"mathspeak\":{\"default\":\"modifying above s with cedilla\",\"brief\":\"mod above s with cedilla\",\"sbrief\":\"mod above s with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"},\"mathspeak\":{\"default\":\"modifying above s with caron\",\"brief\":\"mod above s with caron\",\"sbrief\":\"mod above s with caron\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cedilla\"},\"mathspeak\":{\"default\":\"modifying above t with cedilla\",\"brief\":\"mod above t with cedilla\",\"sbrief\":\"mod above t with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"},\"mathspeak\":{\"default\":\"modifying above t with caron\",\"brief\":\"mod above t with caron\",\"sbrief\":\"mod above t with caron\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"},\"mathspeak\":{\"default\":\"u overtilde\",\"brief\":\"u overtilde\",\"sbrief\":\"u overtilde\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u overbar\"},\"mathspeak\":{\"default\":\"u overbar\",\"brief\":\"u overbar\",\"sbrief\":\"u overbar\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u breve\"},\"mathspeak\":{\"default\":\"modifying above u with breve\",\"brief\":\"mod above u with breve\",\"sbrief\":\"mod above u with breve\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u ring\"},\"mathspeak\":{\"default\":\"modifying above u with ring\",\"brief\":\"mod above u with ring\",\"sbrief\":\"mod above u with ring\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u double acute\"},\"mathspeak\":{\"default\":\"modifying above u with double acute\",\"brief\":\"mod above u with double acute\",\"sbrief\":\"mod above u with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"},\"mathspeak\":{\"default\":\"modifying above u with ogonek\",\"brief\":\"mod above u with ogonek\",\"sbrief\":\"mod above u with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w hat\"},\"mathspeak\":{\"default\":\"modifying above w with caret\",\"brief\":\"mod above w with caret\",\"sbrief\":\"mod above w with caret\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y hat\"},\"mathspeak\":{\"default\":\"modifying above y with caret\",\"brief\":\"mod above y with caret\",\"sbrief\":\"mod above y with caret\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z acute\"},\"mathspeak\":{\"default\":\"modifying above z with acute\",\"brief\":\"mod above z with acute\",\"sbrief\":\"mod above z with acute\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z overdot\"},\"mathspeak\":{\"default\":\"modifying above z with dot\",\"brief\":\"mod above z with dot\",\"sbrief\":\"mod above z with dot\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"},\"mathspeak\":{\"default\":\"modifying above z with caron\",\"brief\":\"mod above z with caron\",\"sbrief\":\"mod above z with caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"},\"mathspeak\":{\"default\":\"modifying above a with caron\",\"brief\":\"mod above a with caron\",\"sbrief\":\"mod above a with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"},\"mathspeak\":{\"default\":\"modifying above i with caron\",\"brief\":\"mod above i with caron\",\"sbrief\":\"mod above i with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"},\"mathspeak\":{\"default\":\"modifying above o with caron\",\"brief\":\"mod above o with caron\",\"sbrief\":\"mod above o with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"},\"mathspeak\":{\"default\":\"modifying above u with caron\",\"brief\":\"mod above u with caron\",\"sbrief\":\"mod above u with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"},\"mathspeak\":{\"default\":\"modifying above g with caron\",\"brief\":\"mod above g with caron\",\"sbrief\":\"mod above g with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"},\"mathspeak\":{\"default\":\"modifying above k with caron\",\"brief\":\"mod above k with caron\",\"sbrief\":\"mod above k with caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"},\"mathspeak\":{\"default\":\"modifying above o with ogonek\",\"brief\":\"mod above o with ogonek\",\"sbrief\":\"mod above o with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"},\"mathspeak\":{\"default\":\"modifying above j with caron\",\"brief\":\"mod above j with caron\",\"sbrief\":\"mod above j with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g acute\"},\"mathspeak\":{\"default\":\"modifying above g with acute\",\"brief\":\"mod above g with acute\",\"sbrief\":\"mod above g with acute\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"},\"mathspeak\":{\"default\":\"modifying above n with grave\",\"brief\":\"mod above n with grave\",\"sbrief\":\"mod above n with grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double grave\"},\"mathspeak\":{\"default\":\"modifying above a with double grave\",\"brief\":\"mod above a with double grave\",\"sbrief\":\"mod above a with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a inverted breve\"},\"mathspeak\":{\"default\":\"modifying above a with inverted breve\",\"brief\":\"mod above a with inverted breve\",\"sbrief\":\"mod above a with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double grave\"},\"mathspeak\":{\"default\":\"modifying above e with double grave\",\"brief\":\"mod above e with double grave\",\"sbrief\":\"mod above e with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e inverted breve\"},\"mathspeak\":{\"default\":\"modifying above e with inverted breve\",\"brief\":\"mod above e with inverted breve\",\"sbrief\":\"mod above e with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double grave\"},\"mathspeak\":{\"default\":\"modifying above i with double grave\",\"brief\":\"mod above i with double grave\",\"sbrief\":\"mod above i with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i inverted breve\"},\"mathspeak\":{\"default\":\"modifying above i with inverted breve\",\"brief\":\"mod above i with inverted breve\",\"sbrief\":\"mod above i with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double grave\"},\"mathspeak\":{\"default\":\"modifying above o with double grave\",\"brief\":\"mod above o with double grave\",\"sbrief\":\"mod above o with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o inverted breve\"},\"mathspeak\":{\"default\":\"modifying above o with inverted breve\",\"brief\":\"mod above o with inverted breve\",\"sbrief\":\"mod above o with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double grave\"},\"mathspeak\":{\"default\":\"modifying above r with double grave\",\"brief\":\"mod above r with double grave\",\"sbrief\":\"mod above r with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r inverted breve\"},\"mathspeak\":{\"default\":\"modifying above r with inverted breve\",\"brief\":\"mod above r with inverted breve\",\"sbrief\":\"mod above r with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double grave\"},\"mathspeak\":{\"default\":\"modifying above u with double grave\",\"brief\":\"mod above u with double grave\",\"sbrief\":\"mod above u with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u inverted breve\"},\"mathspeak\":{\"default\":\"modifying above u with inverted breve\",\"brief\":\"mod above u with inverted breve\",\"sbrief\":\"mod above u with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s comma below\"},\"mathspeak\":{\"default\":\"modifying below s with comma below\",\"brief\":\"mod below s with comma below\",\"sbrief\":\"mod below s with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t comma below\"},\"mathspeak\":{\"default\":\"modifying below t with comma below\",\"brief\":\"mod below t with comma below\",\"sbrief\":\"mod below t with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"},\"mathspeak\":{\"default\":\"modifying above h with caron\",\"brief\":\"mod above h with caron\",\"sbrief\":\"mod above h with caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a overdot\"},\"mathspeak\":{\"default\":\"modifying above a with dot\",\"brief\":\"mod above a with dot\",\"sbrief\":\"mod above a with dot\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cedilla\"},\"mathspeak\":{\"default\":\"modifying above e with cedilla\",\"brief\":\"mod above e with cedilla\",\"sbrief\":\"mod above e with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o overdot\"},\"mathspeak\":{\"default\":\"modifying above o with dot\",\"brief\":\"mod above o with dot\",\"sbrief\":\"mod above o with dot\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y overbar\"},\"mathspeak\":{\"default\":\"y overbar\",\"brief\":\"y overbar\",\"sbrief\":\"y overbar\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless j\"},\"mathspeak\":{\"default\":\"modifying above dotless j\",\"brief\":\"mod above dotless j\",\"sbrief\":\"mod above dotless j\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a ring below\"},\"mathspeak\":{\"default\":\"modifying below a with ring below\",\"brief\":\"mod below a with ring below\",\"sbrief\":\"mod below a with ring below\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b overdot\"},\"mathspeak\":{\"default\":\"modifying above b with dot\",\"brief\":\"mod above b with dot\",\"sbrief\":\"mod above b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b underdot\"},\"mathspeak\":{\"default\":\"modifying below b with dot\",\"brief\":\"mod below b with dot\",\"sbrief\":\"mod below b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b underbar\"},\"mathspeak\":{\"default\":\"b underbar\",\"brief\":\"b underbar\",\"sbrief\":\"b underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d overdot\"},\"mathspeak\":{\"default\":\"modifying above d with dot\",\"brief\":\"mod above d with dot\",\"sbrief\":\"mod above d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d underdot\"},\"mathspeak\":{\"default\":\"modifying below d with dot\",\"brief\":\"mod below d with dot\",\"sbrief\":\"mod below d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d underbar\"},\"mathspeak\":{\"default\":\"d underbar\",\"brief\":\"d underbar\",\"sbrief\":\"d underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cedilla\"},\"mathspeak\":{\"default\":\"modifying above d with cedilla\",\"brief\":\"mod above d with cedilla\",\"sbrief\":\"mod above d with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d underhat\"},\"mathspeak\":{\"default\":\"modifying below d with caret\",\"brief\":\"mod below d with caret\",\"sbrief\":\"mod below d with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e underhat\"},\"mathspeak\":{\"default\":\"modifying below e with caret\",\"brief\":\"mod below e with caret\",\"sbrief\":\"mod below e with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde below\"},\"mathspeak\":{\"default\":\"e undertilde\",\"brief\":\"e undertilde\",\"sbrief\":\"e undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f overdot\"},\"mathspeak\":{\"default\":\"modifying above f with dot\",\"brief\":\"mod above f with dot\",\"sbrief\":\"mod above f with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g overbar\"},\"mathspeak\":{\"default\":\"g overbar\",\"brief\":\"g overbar\",\"sbrief\":\"g overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h overdot\"},\"mathspeak\":{\"default\":\"modifying above h with dot\",\"brief\":\"mod above h with dot\",\"sbrief\":\"mod above h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h underdot\"},\"mathspeak\":{\"default\":\"modifying below h with dot\",\"brief\":\"mod below h with dot\",\"sbrief\":\"mod below h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h double overdot\"},\"mathspeak\":{\"default\":\"modifying above h with double dot\",\"brief\":\"mod above h with double dot\",\"sbrief\":\"mod above h with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cedilla\"},\"mathspeak\":{\"default\":\"modifying above h with cedilla\",\"brief\":\"mod above h with cedilla\",\"sbrief\":\"mod above h with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h breve below\"},\"mathspeak\":{\"default\":\"modifying below h with breve below\",\"brief\":\"mod below h with breve below\",\"sbrief\":\"mod below h with breve below\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde below\"},\"mathspeak\":{\"default\":\"i undertilde\",\"brief\":\"i undertilde\",\"sbrief\":\"i undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k acute\"},\"mathspeak\":{\"default\":\"modifying above k with acute\",\"brief\":\"mod above k with acute\",\"sbrief\":\"mod above k with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k underdot\"},\"mathspeak\":{\"default\":\"modifying below k with dot\",\"brief\":\"mod below k with dot\",\"sbrief\":\"mod below k with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k underbar\"},\"mathspeak\":{\"default\":\"k underbar\",\"brief\":\"k underbar\",\"sbrief\":\"k underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l underdot\"},\"mathspeak\":{\"default\":\"modifying below l with dot\",\"brief\":\"mod below l with dot\",\"sbrief\":\"mod below l with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l underbar\"},\"mathspeak\":{\"default\":\"l underbar\",\"brief\":\"l underbar\",\"sbrief\":\"l underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l underhat\"},\"mathspeak\":{\"default\":\"modifying below l with caret\",\"brief\":\"mod below l with caret\",\"sbrief\":\"mod below l with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m acute\"},\"mathspeak\":{\"default\":\"modifying above m with acute\",\"brief\":\"mod above m with acute\",\"sbrief\":\"mod above m with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m overdot\"},\"mathspeak\":{\"default\":\"modifying above m with dot\",\"brief\":\"mod above m with dot\",\"sbrief\":\"mod above m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m underdot\"},\"mathspeak\":{\"default\":\"modifying below m with dot\",\"brief\":\"mod below m with dot\",\"sbrief\":\"mod below m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n overdot\"},\"mathspeak\":{\"default\":\"modifying above n with dot\",\"brief\":\"mod above n with dot\",\"sbrief\":\"mod above n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n underdot\"},\"mathspeak\":{\"default\":\"modifying below n with dot\",\"brief\":\"mod below n with dot\",\"sbrief\":\"mod below n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n underbar\"},\"mathspeak\":{\"default\":\"n underbar\",\"brief\":\"n underbar\",\"sbrief\":\"n underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n underhat\"},\"mathspeak\":{\"default\":\"modifying below n with caret\",\"brief\":\"mod below n with caret\",\"sbrief\":\"mod below n with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p acute\"},\"mathspeak\":{\"default\":\"modifying above p with acute\",\"brief\":\"mod above p with acute\",\"sbrief\":\"mod above p with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p overdot\"},\"mathspeak\":{\"default\":\"modifying above p with dot\",\"brief\":\"mod above p with dot\",\"sbrief\":\"mod above p with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r overdot\"},\"mathspeak\":{\"default\":\"modifying above r with dot\",\"brief\":\"mod above r with dot\",\"sbrief\":\"mod above r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r underdot\"},\"mathspeak\":{\"default\":\"modifying below r with dot\",\"brief\":\"mod below r with dot\",\"sbrief\":\"mod below r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r underbar\"},\"mathspeak\":{\"default\":\"r underbar\",\"brief\":\"r underbar\",\"sbrief\":\"r underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s overdot\"},\"mathspeak\":{\"default\":\"modifying above s with dot\",\"brief\":\"mod above s with dot\",\"sbrief\":\"mod above s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s underdot\"},\"mathspeak\":{\"default\":\"modifying below s with dot\",\"brief\":\"mod below s with dot\",\"sbrief\":\"mod below s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t overdot\"},\"mathspeak\":{\"default\":\"modifying above t with dot\",\"brief\":\"mod above t with dot\",\"sbrief\":\"mod above t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t underdot\"},\"mathspeak\":{\"default\":\"modifying below t with dot\",\"brief\":\"mod below t with dot\",\"sbrief\":\"mod below t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t underbar\"},\"mathspeak\":{\"default\":\"t underbar\",\"brief\":\"t underbar\",\"sbrief\":\"t underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t underhat\"},\"mathspeak\":{\"default\":\"modifying below t with caret\",\"brief\":\"mod below t with caret\",\"sbrief\":\"mod below t with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u double underdot\"},\"mathspeak\":{\"default\":\"modifying below u with double dot\",\"brief\":\"mod below u with double dot\",\"sbrief\":\"mod below u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde below\"},\"mathspeak\":{\"default\":\"u undertilde\",\"brief\":\"u undertilde\",\"sbrief\":\"u undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u underhat\"},\"mathspeak\":{\"default\":\"modifying below u with caret\",\"brief\":\"mod below u with caret\",\"sbrief\":\"mod below u with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"},\"mathspeak\":{\"default\":\"v overtilde\",\"brief\":\"v overtilde\",\"sbrief\":\"v overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v underdot\"},\"mathspeak\":{\"default\":\"modifying below v with dot\",\"brief\":\"mod below v with dot\",\"sbrief\":\"mod below v with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w grave\"},\"mathspeak\":{\"default\":\"modifying above w with grave\",\"brief\":\"mod above w with grave\",\"sbrief\":\"mod above w with grave\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w acute\"},\"mathspeak\":{\"default\":\"modifying above w with acute\",\"brief\":\"mod above w with acute\",\"sbrief\":\"mod above w with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w double overdot\"},\"mathspeak\":{\"default\":\"modifying above w with double dot\",\"brief\":\"mod above w with double dot\",\"sbrief\":\"mod above w with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w overdot\"},\"mathspeak\":{\"default\":\"modifying above w with dot\",\"brief\":\"mod above w with dot\",\"sbrief\":\"mod above w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w underdot\"},\"mathspeak\":{\"default\":\"modifying below w with dot\",\"brief\":\"mod below w with dot\",\"sbrief\":\"mod below w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x overdot\"},\"mathspeak\":{\"default\":\"modifying above x with dot\",\"brief\":\"mod above x with dot\",\"sbrief\":\"mod above x with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x double overdot\"},\"mathspeak\":{\"default\":\"modifying above x with double dot\",\"brief\":\"mod above x with double dot\",\"sbrief\":\"mod above x with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y overdot\"},\"mathspeak\":{\"default\":\"modifying above y with dot\",\"brief\":\"mod above y with dot\",\"sbrief\":\"mod above y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z hat\"},\"mathspeak\":{\"default\":\"modifying above z with caret\",\"brief\":\"mod above z with caret\",\"sbrief\":\"mod above z with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z underdot\"},\"mathspeak\":{\"default\":\"modifying below z with dot\",\"brief\":\"mod below z with dot\",\"sbrief\":\"mod below z with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z underbar\"},\"mathspeak\":{\"default\":\"z underbar\",\"brief\":\"z underbar\",\"sbrief\":\"z underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h underbar\"},\"mathspeak\":{\"default\":\"h underbar\",\"brief\":\"h underbar\",\"sbrief\":\"h underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t double overdot\"},\"mathspeak\":{\"default\":\"modifying above t with double dot\",\"brief\":\"mod above t with double dot\",\"sbrief\":\"mod above t with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w ring\"},\"mathspeak\":{\"default\":\"modifying above w with ring\",\"brief\":\"mod above w with ring\",\"sbrief\":\"mod above w with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y ring\"},\"mathspeak\":{\"default\":\"modifying above y with ring\",\"brief\":\"mod above y with ring\",\"sbrief\":\"mod above y with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a right half ring\"},\"mathspeak\":{\"default\":\"modifying above a with right half ring\",\"brief\":\"mod above a with right half ring\",\"sbrief\":\"mod above a with right half ring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a underdot\"},\"mathspeak\":{\"default\":\"modifying below a with dot\",\"brief\":\"mod below a with dot\",\"sbrief\":\"mod below a with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a hook\"},\"mathspeak\":{\"default\":\"modifying above a with hook\",\"brief\":\"mod above a with hook\",\"sbrief\":\"mod above a with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e underdot\"},\"mathspeak\":{\"default\":\"modifying below e with dot\",\"brief\":\"mod below e with dot\",\"sbrief\":\"mod below e with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e hook\"},\"mathspeak\":{\"default\":\"modifying above e with hook\",\"brief\":\"mod above e with hook\",\"sbrief\":\"mod above e with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"},\"mathspeak\":{\"default\":\"e overtilde\",\"brief\":\"e overtilde\",\"sbrief\":\"e overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i hook\"},\"mathspeak\":{\"default\":\"modifying above i with hook\",\"brief\":\"mod above i with hook\",\"sbrief\":\"mod above i with hook\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i underdot\"},\"mathspeak\":{\"default\":\"modifying below i with dot\",\"brief\":\"mod below i with dot\",\"sbrief\":\"mod below i with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o underdot\"},\"mathspeak\":{\"default\":\"modifying below o with dot\",\"brief\":\"mod below o with dot\",\"sbrief\":\"mod below o with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o hook\"},\"mathspeak\":{\"default\":\"modifying above o with hook\",\"brief\":\"mod above o with hook\",\"sbrief\":\"mod above o with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u underdot\"},\"mathspeak\":{\"default\":\"modifying below u with dot\",\"brief\":\"mod below u with dot\",\"sbrief\":\"mod below u with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u hook\"},\"mathspeak\":{\"default\":\"modifying above u with hook\",\"brief\":\"mod above u with hook\",\"sbrief\":\"mod above u with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y grave\"},\"mathspeak\":{\"default\":\"modifying above y with grave\",\"brief\":\"mod above y with grave\",\"sbrief\":\"mod above y with grave\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y underdot\"},\"mathspeak\":{\"default\":\"modifying below y with dot\",\"brief\":\"mod below y with dot\",\"sbrief\":\"mod below y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y hook\"},\"mathspeak\":{\"default\":\"modifying above y with hook\",\"brief\":\"mod above y with hook\",\"sbrief\":\"mod above y with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"},\"mathspeak\":{\"default\":\"y overtilde\",\"brief\":\"y overtilde\",\"sbrief\":\"y overtilde\"}}}]\n,\n\"en/symbols/latin-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h\",\"physics\":\"planck constant\"}},\"key\":\"210E\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combining a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combining e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combining i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combining o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combining u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combining c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combining d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combining h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combining m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combining r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combining t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combining v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combining x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subscript i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subscript r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subscript u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subscript v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combining r below\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combining flattened open a above\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combining ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combining ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combining av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combining c cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combining insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combining eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combining g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combining small cap G\"},\"mathspeak\":{\"default\":\"combining small upper G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combining k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combining l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combining small cap L\"},\"mathspeak\":{\"default\":\"combining small upper L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combining small cap M\"},\"mathspeak\":{\"default\":\"combining small upper M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combining n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combining small cap N\"},\"mathspeak\":{\"default\":\"combining small upper N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combining small cap R\"},\"mathspeak\":{\"default\":\"combining small upper R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combining r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combining s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combining long s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combining z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superscript i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superscript n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subscript a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subscript e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subscript o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subscript x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subscript schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subscript h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subscript k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subscript l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subscript m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subscript n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subscript p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subscript s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subscript t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subscript j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"tortoise shell bracketed cap S\"},\"mathspeak\":{\"default\":\"tortoise shell bracketed upper S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"circled italic cap C\"},\"mathspeak\":{\"default\":\"circled italic upper C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"circled italic cap R\"},\"mathspeak\":{\"default\":\"circled italic upper R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"crossed negative squared cap P\"},\"mathspeak\":{\"default\":\"crossed negative squared upper P\"}}}]\n,\n\"en/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot overbar\"},\"mathspeak\":{\"default\":\"upper U double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot acute\"},\"mathspeak\":{\"default\":\"upper U double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot caron\"},\"mathspeak\":{\"default\":\"upper U double overdot caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot grave\"},\"mathspeak\":{\"default\":\"upper U double overdot grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot overbar\"},\"mathspeak\":{\"default\":\"upper A double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"cap A overdot overbar\"},\"mathspeak\":{\"default\":\"upper A overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek overbar\"},\"mathspeak\":{\"default\":\"upper O ogonek overbar\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"cap A ring acute\"},\"mathspeak\":{\"default\":\"upper A ring acute\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot overbar\"},\"mathspeak\":{\"default\":\"upper O double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde overbar\"},\"mathspeak\":{\"default\":\"upper O tilde overbar\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"cap O overdot overbar\"},\"mathspeak\":{\"default\":\"upper O overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla acute\"},\"mathspeak\":{\"default\":\"upper C cedilla acute\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"cap E overbar grave\"},\"mathspeak\":{\"default\":\"upper E overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"cap E overbar acute\"},\"mathspeak\":{\"default\":\"upper E overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla breve\"},\"mathspeak\":{\"default\":\"upper E cedilla breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot acute\"},\"mathspeak\":{\"default\":\"upper I double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"cap L underdot overbar\"},\"mathspeak\":{\"default\":\"upper L underdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde acute\"},\"mathspeak\":{\"default\":\"upper O tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"cap O tilde double overdot\"},\"mathspeak\":{\"default\":\"upper O tilde double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"cap O overbar grave\"},\"mathspeak\":{\"default\":\"upper O overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"cap O overbar acute\"},\"mathspeak\":{\"default\":\"upper O overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"cap R overbar underdot\"},\"mathspeak\":{\"default\":\"upper R overbar underdot\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"cap S acute overdot\"},\"mathspeak\":{\"default\":\"upper S acute overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"cap S caron overdot\"},\"mathspeak\":{\"default\":\"upper S caron overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"cap S underdot overdot\"},\"mathspeak\":{\"default\":\"upper S underdot overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"cap U tilde acute\"},\"mathspeak\":{\"default\":\"upper U tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar double overdot\"},\"mathspeak\":{\"default\":\"upper U overbar double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"cap A hat acute\"},\"mathspeak\":{\"default\":\"upper A hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"cap A hat grave\"},\"mathspeak\":{\"default\":\"upper A hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"cap A hat hook\"},\"mathspeak\":{\"default\":\"upper A hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"cap A hat tilde\"},\"mathspeak\":{\"default\":\"upper A hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"cap A hat underdot\"},\"mathspeak\":{\"default\":\"upper A hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"cap A breve acute\"},\"mathspeak\":{\"default\":\"upper A breve acute\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"cap A breve grave\"},\"mathspeak\":{\"default\":\"upper A breve grave\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"cap A breve hook\"},\"mathspeak\":{\"default\":\"upper A breve hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"cap A breve tilde\"},\"mathspeak\":{\"default\":\"upper A breve tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"cap A breve underdot\"},\"mathspeak\":{\"default\":\"upper A breve underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"cap E hat acute\"},\"mathspeak\":{\"default\":\"upper E hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"cap E hat grave\"},\"mathspeak\":{\"default\":\"upper E hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"cap E hat hook\"},\"mathspeak\":{\"default\":\"upper E hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"cap E hat tilde\"},\"mathspeak\":{\"default\":\"upper E hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"cap E hat underdot\"},\"mathspeak\":{\"default\":\"upper E hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"cap O hat acute\"},\"mathspeak\":{\"default\":\"upper O hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"cap O hat grave\"},\"mathspeak\":{\"default\":\"upper O hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"cap O hat hook\"},\"mathspeak\":{\"default\":\"upper O hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"cap O hat tilde\"},\"mathspeak\":{\"default\":\"upper O hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"cap O hat underdot\"},\"mathspeak\":{\"default\":\"upper O hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"cap O acute prime\"},\"mathspeak\":{\"default\":\"upper O acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"cap O grave prime\"},\"mathspeak\":{\"default\":\"upper O grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"cap O hook prime\"},\"mathspeak\":{\"default\":\"upper O hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"cap O tilde prime\"},\"mathspeak\":{\"default\":\"upper O tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"cap O underdot prime\"},\"mathspeak\":{\"default\":\"upper O underdot prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"cap U acute prime\"},\"mathspeak\":{\"default\":\"upper U acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"cap U grave prime\"},\"mathspeak\":{\"default\":\"upper U grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"cap U hook prime\"},\"mathspeak\":{\"default\":\"upper U hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"cap U tilde prime\"},\"mathspeak\":{\"default\":\"upper U tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"cap U underdot prime\"},\"mathspeak\":{\"default\":\"upper U underdot prime\"}}}]\n,\n\"en/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"cap A grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with grave\",\"brief\":\"mod above upper A with grave\",\"sbrief\":\"mod above upper A with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"cap A acute\"},\"mathspeak\":{\"default\":\"modifying above upper A with acute\",\"brief\":\"mod above upper A with acute\",\"sbrief\":\"mod above upper A with acute\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"cap A hat\"},\"mathspeak\":{\"default\":\"modifying above upper A with caret\",\"brief\":\"mod above upper A with caret\",\"sbrief\":\"mod above upper A with caret\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"cap A tilde\"},\"mathspeak\":{\"default\":\"upper A overtilde\",\"brief\":\"upper A overtilde\",\"sbrief\":\"upper A overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with double dot\",\"brief\":\"mod above upper A with double dot\",\"sbrief\":\"mod above upper A with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"cap A ring\"},\"mathspeak\":{\"default\":\"modifying above upper A with ring\",\"brief\":\"mod above upper A with ring\",\"sbrief\":\"mod above upper A with ring\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper C with cedilla\",\"brief\":\"mod above upper C with cedilla\",\"sbrief\":\"mod above upper C with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"cap E grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with grave\",\"brief\":\"mod above upper E with grave\",\"sbrief\":\"mod above upper E with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"cap E acute\"},\"mathspeak\":{\"default\":\"modifying above upper E with acute\",\"brief\":\"mod above upper E with acute\",\"sbrief\":\"mod above upper E with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"cap E hat\"},\"mathspeak\":{\"default\":\"modifying above upper E with caret\",\"brief\":\"mod above upper E with caret\",\"sbrief\":\"mod above upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"cap E double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with double dot\",\"brief\":\"mod above upper E with double dot\",\"sbrief\":\"mod above upper E with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"cap I grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with grave\",\"brief\":\"mod above upper I with grave\",\"sbrief\":\"mod above upper I with grave\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"cap I acute\"},\"mathspeak\":{\"default\":\"modifying above upper I with acute\",\"brief\":\"mod above upper I with acute\",\"sbrief\":\"mod above upper I with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"cap I hat\"},\"mathspeak\":{\"default\":\"modifying above upper I with caret\",\"brief\":\"mod above upper I with caret\",\"sbrief\":\"mod above upper I with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with double dot\",\"brief\":\"mod above upper I with double dot\",\"sbrief\":\"mod above upper I with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"cap N tilde\"},\"mathspeak\":{\"default\":\"upper N overtilde\",\"brief\":\"upper N overtilde\",\"sbrief\":\"upper N overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"cap O grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with grave\",\"brief\":\"mod above upper O with grave\",\"sbrief\":\"mod above upper O with grave\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"cap O acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with acute\",\"brief\":\"mod above upper O with acute\",\"sbrief\":\"mod above upper O with acute\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"cap O hat\"},\"mathspeak\":{\"default\":\"modifying above upper O with caret\",\"brief\":\"mod above upper O with caret\",\"sbrief\":\"mod above upper O with caret\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"cap O tilde\"},\"mathspeak\":{\"default\":\"upper O overtilde\",\"brief\":\"upper O overtilde\",\"sbrief\":\"upper O overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with double dot\",\"brief\":\"mod above upper O with double dot\",\"sbrief\":\"mod above upper O with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"cap U grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with grave\",\"brief\":\"mod above upper U with grave\",\"sbrief\":\"mod above upper U with grave\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"cap U acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with acute\",\"brief\":\"mod above upper U with acute\",\"sbrief\":\"mod above upper U with acute\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"cap U hat\"},\"mathspeak\":{\"default\":\"modifying above upper U with caret\",\"brief\":\"mod above upper U with caret\",\"sbrief\":\"mod above upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper U with double dot\",\"brief\":\"mod above upper U with double dot\",\"sbrief\":\"mod above upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"cap Y acute\"},\"mathspeak\":{\"default\":\"modifying above upper Y with acute\",\"brief\":\"mod above upper Y with acute\",\"sbrief\":\"mod above upper Y with acute\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"cap A overbar\"},\"mathspeak\":{\"default\":\"upper A overbar\",\"brief\":\"upper A overbar\",\"sbrief\":\"upper A overbar\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"cap A breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with breve\",\"brief\":\"mod above upper A with breve\",\"sbrief\":\"mod above upper A with breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"cap A ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper A with ogonek\",\"brief\":\"mod above upper A with ogonek\",\"sbrief\":\"mod above upper A with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"cap C acute\"},\"mathspeak\":{\"default\":\"modifying above upper C with acute\",\"brief\":\"mod above upper C with acute\",\"sbrief\":\"mod above upper C with acute\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"cap C hat\"},\"mathspeak\":{\"default\":\"modifying above upper C with caret\",\"brief\":\"mod above upper C with caret\",\"sbrief\":\"mod above upper C with caret\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"cap C overdot\"},\"mathspeak\":{\"default\":\"modifying above upper C with dot\",\"brief\":\"mod above upper C with dot\",\"sbrief\":\"mod above upper C with dot\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"cap C caron\"},\"mathspeak\":{\"default\":\"modifying above upper C with caron\",\"brief\":\"mod above upper C with caron\",\"sbrief\":\"mod above upper C with caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"cap D caron\"},\"mathspeak\":{\"default\":\"modifying above upper D with caron\",\"brief\":\"mod above upper D with caron\",\"sbrief\":\"mod above upper D with caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"cap E overbar\"},\"mathspeak\":{\"default\":\"upper E overbar\",\"brief\":\"upper E overbar\",\"sbrief\":\"upper E overbar\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"cap E breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with breve\",\"brief\":\"mod above upper E with breve\",\"sbrief\":\"mod above upper E with breve\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"cap E overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with dot\",\"brief\":\"mod above upper E with dot\",\"sbrief\":\"mod above upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"cap E ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper E with ogonek\",\"brief\":\"mod above upper E with ogonek\",\"sbrief\":\"mod above upper E with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"cap E caron\"},\"mathspeak\":{\"default\":\"modifying above upper E with caron\",\"brief\":\"mod above upper E with caron\",\"sbrief\":\"mod above upper E with caron\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"cap G hat\"},\"mathspeak\":{\"default\":\"modifying above upper G with caret\",\"brief\":\"mod above upper G with caret\",\"sbrief\":\"mod above upper G with caret\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"cap G breve\"},\"mathspeak\":{\"default\":\"modifying above upper G with breve\",\"brief\":\"mod above upper G with breve\",\"sbrief\":\"mod above upper G with breve\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"cap G overdot\"},\"mathspeak\":{\"default\":\"modifying above upper G with dot\",\"brief\":\"mod above upper G with dot\",\"sbrief\":\"mod above upper G with dot\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"cap G cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper G with cedilla\",\"brief\":\"mod above upper G with cedilla\",\"sbrief\":\"mod above upper G with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"cap H hat\"},\"mathspeak\":{\"default\":\"modifying above upper H with caret\",\"brief\":\"mod above upper H with caret\",\"sbrief\":\"mod above upper H with caret\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"cap I tilde\"},\"mathspeak\":{\"default\":\"upper I overtilde\",\"brief\":\"upper I overtilde\",\"sbrief\":\"upper I overtilde\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"cap I overbar\"},\"mathspeak\":{\"default\":\"upper I overbar\",\"brief\":\"upper I overbar\",\"sbrief\":\"upper I overbar\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"cap I breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with breve\",\"brief\":\"mod above upper I with breve\",\"sbrief\":\"mod above upper I with breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"cap I ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper I with ogonek\",\"brief\":\"mod above upper I with ogonek\",\"sbrief\":\"mod above upper I with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"cap I overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with dot\",\"brief\":\"mod above upper I with dot\",\"sbrief\":\"mod above upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"cap J hat\"},\"mathspeak\":{\"default\":\"modifying above upper J with caret\",\"brief\":\"mod above upper J with caret\",\"sbrief\":\"mod above upper J with caret\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"cap K cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper K with cedilla\",\"brief\":\"mod above upper K with cedilla\",\"sbrief\":\"mod above upper K with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"cap L acute\"},\"mathspeak\":{\"default\":\"modifying above upper L with acute\",\"brief\":\"mod above upper L with acute\",\"sbrief\":\"mod above upper L with acute\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"cap L cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper L with cedilla\",\"brief\":\"mod above upper L with cedilla\",\"sbrief\":\"mod above upper L with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"cap L caron\"},\"mathspeak\":{\"default\":\"modifying above upper L with caron\",\"brief\":\"mod above upper L with caron\",\"sbrief\":\"mod above upper L with caron\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"cap L middle dot\"},\"mathspeak\":{\"default\":\"modifying above upper L with middle dot\",\"brief\":\"mod above upper L with middle dot\",\"sbrief\":\"mod above upper L with middle dot\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"cap N acute\"},\"mathspeak\":{\"default\":\"modifying above upper N with acute\",\"brief\":\"mod above upper N with acute\",\"sbrief\":\"mod above upper N with acute\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"cap N cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper N with cedilla\",\"brief\":\"mod above upper N with cedilla\",\"sbrief\":\"mod above upper N with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"cap N caron\"},\"mathspeak\":{\"default\":\"modifying above upper N with caron\",\"brief\":\"mod above upper N with caron\",\"sbrief\":\"mod above upper N with caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"cap O overbar\"},\"mathspeak\":{\"default\":\"upper O overbar\",\"brief\":\"upper O overbar\",\"sbrief\":\"upper O overbar\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"cap O breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with breve\",\"brief\":\"mod above upper O with breve\",\"sbrief\":\"mod above upper O with breve\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"cap O double acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with double acute\",\"brief\":\"mod above upper O with double acute\",\"sbrief\":\"mod above upper O with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"cap R acute\"},\"mathspeak\":{\"default\":\"modifying above upper R with acute\",\"brief\":\"mod above upper R with acute\",\"sbrief\":\"mod above upper R with acute\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"cap R cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper R with cedilla\",\"brief\":\"mod above upper R with cedilla\",\"sbrief\":\"mod above upper R with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"cap R caron\"},\"mathspeak\":{\"default\":\"modifying above upper R with caron\",\"brief\":\"mod above upper R with caron\",\"sbrief\":\"mod above upper R with caron\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"cap S acute\"},\"mathspeak\":{\"default\":\"modifying above upper S with acute\",\"brief\":\"mod above upper S with acute\",\"sbrief\":\"mod above upper S with acute\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"cap S hat\"},\"mathspeak\":{\"default\":\"modifying above upper S with caret\",\"brief\":\"mod above upper S with caret\",\"sbrief\":\"mod above upper S with caret\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"cap S cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper S with cedilla\",\"brief\":\"mod above upper S with cedilla\",\"sbrief\":\"mod above upper S with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"cap S caron\"},\"mathspeak\":{\"default\":\"modifying above upper S with caron\",\"brief\":\"mod above upper S with caron\",\"sbrief\":\"mod above upper S with caron\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"cap T cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper T with cedilla\",\"brief\":\"mod above upper T with cedilla\",\"sbrief\":\"mod above upper T with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"cap T caron\"},\"mathspeak\":{\"default\":\"modifying above upper T with caron\",\"brief\":\"mod above upper T with caron\",\"sbrief\":\"mod above upper T with caron\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"cap U tilde\"},\"mathspeak\":{\"default\":\"upper U overtilde\",\"brief\":\"upper U overtilde\",\"sbrief\":\"upper U overtilde\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar\"},\"mathspeak\":{\"default\":\"upper U overbar\",\"brief\":\"upper U overbar\",\"sbrief\":\"upper U overbar\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"cap U breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with breve\",\"brief\":\"mod above upper U with breve\",\"sbrief\":\"mod above upper U with breve\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"cap U ring\"},\"mathspeak\":{\"default\":\"modifying above upper U with ring\",\"brief\":\"mod above upper U with ring\",\"sbrief\":\"mod above upper U with ring\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"cap U double acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with double acute\",\"brief\":\"mod above upper U with double acute\",\"sbrief\":\"mod above upper U with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"cap U ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper U with ogonek\",\"brief\":\"mod above upper U with ogonek\",\"sbrief\":\"mod above upper U with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"cap W hat\"},\"mathspeak\":{\"default\":\"modifying above upper W with caret\",\"brief\":\"mod above upper W with caret\",\"sbrief\":\"mod above upper W with caret\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"cap Y hat\"},\"mathspeak\":{\"default\":\"modifying above upper Y with caret\",\"brief\":\"mod above upper Y with caret\",\"sbrief\":\"mod above upper Y with caret\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"cap Y double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with double dot\",\"brief\":\"mod above upper Y with double dot\",\"sbrief\":\"mod above upper Y with double dot\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"cap Z acute\"},\"mathspeak\":{\"default\":\"modifying above upper Z with acute\",\"brief\":\"mod above upper Z with acute\",\"sbrief\":\"mod above upper Z with acute\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"cap Z overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Z with dot\",\"brief\":\"mod above upper Z with dot\",\"sbrief\":\"mod above upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"cap Z caron\"},\"mathspeak\":{\"default\":\"modifying above upper Z with caron\",\"brief\":\"mod above upper Z with caron\",\"sbrief\":\"mod above upper Z with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"cap A caron\"},\"mathspeak\":{\"default\":\"modifying above upper A with caron\",\"brief\":\"mod above upper A with caron\",\"sbrief\":\"mod above upper A with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"cap I caron\"},\"mathspeak\":{\"default\":\"modifying above upper I with caron\",\"brief\":\"mod above upper I with caron\",\"sbrief\":\"mod above upper I with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"cap O caron\"},\"mathspeak\":{\"default\":\"modifying above upper O with caron\",\"brief\":\"mod above upper O with caron\",\"sbrief\":\"mod above upper O with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"cap U caron\"},\"mathspeak\":{\"default\":\"modifying above upper U with caron\",\"brief\":\"mod above upper U with caron\",\"sbrief\":\"mod above upper U with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"cap G caron\"},\"mathspeak\":{\"default\":\"modifying above upper G with caron\",\"brief\":\"mod above upper G with caron\",\"sbrief\":\"mod above upper G with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"cap K caron\"},\"mathspeak\":{\"default\":\"modifying above upper K with caron\",\"brief\":\"mod above upper K with caron\",\"sbrief\":\"mod above upper K with caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper O with ogonek\",\"brief\":\"mod above upper O with ogonek\",\"sbrief\":\"mod above upper O with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"cap G acute\"},\"mathspeak\":{\"default\":\"modifying above upper G with acute\",\"brief\":\"mod above upper G with acute\",\"sbrief\":\"mod above upper G with acute\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"cap N grave\"},\"mathspeak\":{\"default\":\"modifying above upper N with grave\",\"brief\":\"mod above upper N with grave\",\"sbrief\":\"mod above upper N with grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"cap A double grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with double grave\",\"brief\":\"mod above upper A with double grave\",\"sbrief\":\"mod above upper A with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"cap A inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with inverted breve\",\"brief\":\"mod above upper A with inverted breve\",\"sbrief\":\"mod above upper A with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"cap E double grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with double grave\",\"brief\":\"mod above upper E with double grave\",\"sbrief\":\"mod above upper E with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"cap E inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with inverted breve\",\"brief\":\"mod above upper E with inverted breve\",\"sbrief\":\"mod above upper E with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"cap I double grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with double grave\",\"brief\":\"mod above upper I with double grave\",\"sbrief\":\"mod above upper I with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"cap I inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with inverted breve\",\"brief\":\"mod above upper I with inverted breve\",\"sbrief\":\"mod above upper I with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"cap O double grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with double grave\",\"brief\":\"mod above upper O with double grave\",\"sbrief\":\"mod above upper O with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"cap O inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with inverted breve\",\"brief\":\"mod above upper O with inverted breve\",\"sbrief\":\"mod above upper O with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"cap R double grave\"},\"mathspeak\":{\"default\":\"modifying above upper R with double grave\",\"brief\":\"mod above upper R with double grave\",\"sbrief\":\"mod above upper R with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"cap R inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper R with inverted breve\",\"brief\":\"mod above upper R with inverted breve\",\"sbrief\":\"mod above upper R with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"cap U double grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with double grave\",\"brief\":\"mod above upper U with double grave\",\"sbrief\":\"mod above upper U with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"cap U inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with inverted breve\",\"brief\":\"mod above upper U with inverted breve\",\"sbrief\":\"mod above upper U with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"cap S comma below\"},\"mathspeak\":{\"default\":\"modifying below upper S with comma below\",\"brief\":\"mod below upper S with comma below\",\"sbrief\":\"mod below upper S with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"cap T comma below\"},\"mathspeak\":{\"default\":\"modifying below upper T with comma below\",\"brief\":\"mod below upper T with comma below\",\"sbrief\":\"mod below upper T with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"cap H caron\"},\"mathspeak\":{\"default\":\"modifying above upper H with caron\",\"brief\":\"mod above upper H with caron\",\"sbrief\":\"mod above upper H with caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"cap A overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with dot\",\"brief\":\"mod above upper A with dot\",\"sbrief\":\"mod above upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper E with cedilla\",\"brief\":\"mod above upper E with cedilla\",\"sbrief\":\"mod above upper E with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"cap O overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with dot\",\"brief\":\"mod above upper O with dot\",\"sbrief\":\"mod above upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"cap Y overbar\"},\"mathspeak\":{\"default\":\"upper Y overbar\",\"brief\":\"upper Y overbar\",\"sbrief\":\"upper Y overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"cap A ring below\"},\"mathspeak\":{\"default\":\"modifying below upper A with ring below\",\"brief\":\"mod below upper A with ring below\",\"sbrief\":\"mod below upper A with ring below\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"cap B overdot\"},\"mathspeak\":{\"default\":\"modifying above upper B with dot\",\"brief\":\"mod above upper B with dot\",\"sbrief\":\"mod above upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"cap B underdot\"},\"mathspeak\":{\"default\":\"modifying below upper B with dot\",\"brief\":\"mod below upper B with dot\",\"sbrief\":\"mod below upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"cap B underbar\"},\"mathspeak\":{\"default\":\"upper B underbar\",\"brief\":\"upper B underbar\",\"sbrief\":\"upper B underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"cap D overdot\"},\"mathspeak\":{\"default\":\"modifying above upper D with dot\",\"brief\":\"mod above upper D with dot\",\"sbrief\":\"mod above upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"cap D underdot\"},\"mathspeak\":{\"default\":\"modifying below upper D with dot\",\"brief\":\"mod below upper D with dot\",\"sbrief\":\"mod below upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"cap D underbar\"},\"mathspeak\":{\"default\":\"upper D underbar\",\"brief\":\"upper D underbar\",\"sbrief\":\"upper D underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"cap D cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper D with cedilla\",\"brief\":\"mod above upper D with cedilla\",\"sbrief\":\"mod above upper D with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"cap D underhat\"},\"mathspeak\":{\"default\":\"modifying below upper D with caret\",\"brief\":\"mod below upper D with caret\",\"sbrief\":\"mod below upper D with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"cap E underhat\"},\"mathspeak\":{\"default\":\"modifying below upper E with caret\",\"brief\":\"mod below upper E with caret\",\"sbrief\":\"mod below upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"cap E tilde below\"},\"mathspeak\":{\"default\":\"upper E undertilde\",\"brief\":\"upper E undertilde\",\"sbrief\":\"upper E undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"cap F overdot\"},\"mathspeak\":{\"default\":\"modifying above upper F with dot\",\"brief\":\"mod above upper F with dot\",\"sbrief\":\"mod above upper F with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"cap G overbar\"},\"mathspeak\":{\"default\":\"upper G overbar\",\"brief\":\"upper G overbar\",\"sbrief\":\"upper G overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"cap H overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with dot\",\"brief\":\"mod above upper H with dot\",\"sbrief\":\"mod above upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"cap H underdot\"},\"mathspeak\":{\"default\":\"modifying below upper H with dot\",\"brief\":\"mod below upper H with dot\",\"sbrief\":\"mod below upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"cap H double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with double dot\",\"brief\":\"mod above upper H with double dot\",\"sbrief\":\"mod above upper H with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"cap H cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper H with cedilla\",\"brief\":\"mod above upper H with cedilla\",\"sbrief\":\"mod above upper H with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"cap H breve below\"},\"mathspeak\":{\"default\":\"modifying below upper H with breve below\",\"brief\":\"mod below upper H with breve below\",\"sbrief\":\"mod below upper H with breve below\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"cap I tilde below\"},\"mathspeak\":{\"default\":\"upper I undertilde\",\"brief\":\"upper I undertilde\",\"sbrief\":\"upper I undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"cap K acute\"},\"mathspeak\":{\"default\":\"modifying above upper K with acute\",\"brief\":\"mod above upper K with acute\",\"sbrief\":\"mod above upper K with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"cap K underdot\"},\"mathspeak\":{\"default\":\"modifying below upper K with dot\",\"brief\":\"mod below upper K with dot\",\"sbrief\":\"mod below upper K with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"cap K underbar\"},\"mathspeak\":{\"default\":\"upper K underbar\",\"brief\":\"upper K underbar\",\"sbrief\":\"upper K underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"cap L underdot\"},\"mathspeak\":{\"default\":\"modifying below upper L with dot\",\"brief\":\"mod below upper L with dot\",\"sbrief\":\"mod below upper L with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"cap L underbar\"},\"mathspeak\":{\"default\":\"upper L underbar\",\"brief\":\"upper L underbar\",\"sbrief\":\"upper L underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"cap L underhat\"},\"mathspeak\":{\"default\":\"modifying below upper L with caret\",\"brief\":\"mod below upper L with caret\",\"sbrief\":\"mod below upper L with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"cap M acute\"},\"mathspeak\":{\"default\":\"modifying above upper M with acute\",\"brief\":\"mod above upper M with acute\",\"sbrief\":\"mod above upper M with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"cap M overdot\"},\"mathspeak\":{\"default\":\"modifying above upper M with dot\",\"brief\":\"mod above upper M with dot\",\"sbrief\":\"mod above upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"cap M underdot\"},\"mathspeak\":{\"default\":\"modifying below upper M with dot\",\"brief\":\"mod below upper M with dot\",\"sbrief\":\"mod below upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"cap N overdot\"},\"mathspeak\":{\"default\":\"modifying above upper N with dot\",\"brief\":\"mod above upper N with dot\",\"sbrief\":\"mod above upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"cap N underdot\"},\"mathspeak\":{\"default\":\"modifying below upper N with dot\",\"brief\":\"mod below upper N with dot\",\"sbrief\":\"mod below upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"cap N underbar\"},\"mathspeak\":{\"default\":\"upper N underbar\",\"brief\":\"upper N underbar\",\"sbrief\":\"upper N underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"cap N underhat\"},\"mathspeak\":{\"default\":\"modifying below upper N with caret\",\"brief\":\"mod below upper N with caret\",\"sbrief\":\"mod below upper N with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"cap P acute\"},\"mathspeak\":{\"default\":\"modifying above upper P with acute\",\"brief\":\"mod above upper P with acute\",\"sbrief\":\"mod above upper P with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"cap P overdot\"},\"mathspeak\":{\"default\":\"modifying above upper P with dot\",\"brief\":\"mod above upper P with dot\",\"sbrief\":\"mod above upper P with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"cap R overdot\"},\"mathspeak\":{\"default\":\"modifying above upper R with dot\",\"brief\":\"mod above upper R with dot\",\"sbrief\":\"mod above upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"cap R underdot\"},\"mathspeak\":{\"default\":\"modifying below upper R with dot\",\"brief\":\"mod below upper R with dot\",\"sbrief\":\"mod below upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"cap R underbar\"},\"mathspeak\":{\"default\":\"upper R underbar\",\"brief\":\"upper R underbar\",\"sbrief\":\"upper R underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"cap S overdot\"},\"mathspeak\":{\"default\":\"modifying above upper S with dot\",\"brief\":\"mod above upper S with dot\",\"sbrief\":\"mod above upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"cap S underdot\"},\"mathspeak\":{\"default\":\"modifying below upper S with dot\",\"brief\":\"mod below upper S with dot\",\"sbrief\":\"mod below upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"cap T overdot\"},\"mathspeak\":{\"default\":\"modifying above upper T with dot\",\"brief\":\"mod above upper T with dot\",\"sbrief\":\"mod above upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"cap T underdot\"},\"mathspeak\":{\"default\":\"modifying below upper T with dot\",\"brief\":\"mod below upper T with dot\",\"sbrief\":\"mod below upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"cap T underbar\"},\"mathspeak\":{\"default\":\"upper T underbar\",\"brief\":\"upper T underbar\",\"sbrief\":\"upper T underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"cap T underhat\"},\"mathspeak\":{\"default\":\"modifying below upper T with caret\",\"brief\":\"mod below upper T with caret\",\"sbrief\":\"mod below upper T with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"cap U double underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with double dot\",\"brief\":\"mod below upper U with double dot\",\"sbrief\":\"mod below upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"cap U tilde below\"},\"mathspeak\":{\"default\":\"upper U undertilde\",\"brief\":\"upper U undertilde\",\"sbrief\":\"upper U undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"cap U underhat\"},\"mathspeak\":{\"default\":\"modifying below upper U with caret\",\"brief\":\"mod below upper U with caret\",\"sbrief\":\"mod below upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"cap V tilde\"},\"mathspeak\":{\"default\":\"upper V overtilde\",\"brief\":\"upper V overtilde\",\"sbrief\":\"upper V overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"cap V underdot\"},\"mathspeak\":{\"default\":\"modifying below upper V with dot\",\"brief\":\"mod below upper V with dot\",\"sbrief\":\"mod below upper V with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"cap W grave\"},\"mathspeak\":{\"default\":\"modifying above upper W with grave\",\"brief\":\"mod above upper W with grave\",\"sbrief\":\"mod above upper W with grave\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"cap W acute\"},\"mathspeak\":{\"default\":\"modifying above upper W with acute\",\"brief\":\"mod above upper W with acute\",\"sbrief\":\"mod above upper W with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"cap W double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with double dot\",\"brief\":\"mod above upper W with double dot\",\"sbrief\":\"mod above upper W with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"cap W overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with dot\",\"brief\":\"mod above upper W with dot\",\"sbrief\":\"mod above upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"cap W underdot\"},\"mathspeak\":{\"default\":\"modifying below upper W with dot\",\"brief\":\"mod below upper W with dot\",\"sbrief\":\"mod below upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"cap X overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with dot\",\"brief\":\"mod above upper X with dot\",\"sbrief\":\"mod above upper X with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"cap X double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with double dot\",\"brief\":\"mod above upper X with double dot\",\"sbrief\":\"mod above upper X with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"cap Y overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with dot\",\"brief\":\"mod above upper Y with dot\",\"sbrief\":\"mod above upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"cap Z circumflex\"},\"mathspeak\":{\"default\":\"modifying above upper Z with circumflex\",\"brief\":\"mod above upper Z with circumflex\",\"sbrief\":\"mod above upper Z with circumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"cap Z underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Z with dot\",\"brief\":\"mod below upper Z with dot\",\"sbrief\":\"mod below upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"cap Z underbar\"},\"mathspeak\":{\"default\":\"upper Z underbar\",\"brief\":\"upper Z underbar\",\"sbrief\":\"upper Z underbar\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"cap A underdot\"},\"mathspeak\":{\"default\":\"modifying below upper A with dot\",\"brief\":\"mod below upper A with dot\",\"sbrief\":\"mod below upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"cap A hook\"},\"mathspeak\":{\"default\":\"modifying above upper A with hook\",\"brief\":\"mod above upper A with hook\",\"sbrief\":\"mod above upper A with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"cap E underdot\"},\"mathspeak\":{\"default\":\"modifying below upper E with dot\",\"brief\":\"mod below upper E with dot\",\"sbrief\":\"mod below upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"cap E hook\"},\"mathspeak\":{\"default\":\"modifying above upper E with hook\",\"brief\":\"mod above upper E with hook\",\"sbrief\":\"mod above upper E with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"cap E tilde\"},\"mathspeak\":{\"default\":\"upper E overtilde\",\"brief\":\"upper E overtilde\",\"sbrief\":\"upper E overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"cap I hook\"},\"mathspeak\":{\"default\":\"modifying above upper I with hook\",\"brief\":\"mod above upper I with hook\",\"sbrief\":\"mod above upper I with hook\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"cap I underdot\"},\"mathspeak\":{\"default\":\"modifying below upper I with dot\",\"brief\":\"mod below upper I with dot\",\"sbrief\":\"mod below upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"cap O underdot\"},\"mathspeak\":{\"default\":\"modifying below upper O with dot\",\"brief\":\"mod below upper O with dot\",\"sbrief\":\"mod below upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"cap O hook\"},\"mathspeak\":{\"default\":\"modifying above upper O with hook\",\"brief\":\"mod above upper O with hook\",\"sbrief\":\"mod above upper O with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"cap U underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with dot\",\"brief\":\"mod below upper U with dot\",\"sbrief\":\"mod below upper U with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"cap U hook\"},\"mathspeak\":{\"default\":\"modifying above upper U with hook\",\"brief\":\"mod above upper U with hook\",\"sbrief\":\"mod above upper U with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"cap Y grave\"},\"mathspeak\":{\"default\":\"modifying above upper Y with grave\",\"brief\":\"mod above upper Y with grave\",\"sbrief\":\"mod above upper Y with grave\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"cap Y underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Y with dot\",\"brief\":\"mod below upper Y with dot\",\"sbrief\":\"mod below upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"cap Y hook\"},\"mathspeak\":{\"default\":\"modifying above upper Y with hook\",\"brief\":\"mod above upper Y with hook\",\"sbrief\":\"mod above upper Y with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"cap Y tilde\"},\"mathspeak\":{\"default\":\"upper Y overtilde\",\"brief\":\"upper Y overtilde\",\"sbrief\":\"upper Y overtilde\"}}}]\n,\n\"en/symbols/math_angles.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with arc\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with downwards zigzag arrow\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three dimensional angle\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle opening left\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle variant with square\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured right angle with dot\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with s inside\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"acute angle\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening left\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening up\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned angle\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with underbar\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle with underbar\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening up\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening down\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and right\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and left\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and right\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and left\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"key\":\"29AF\"}]\n,\n\"en/symbols/math_arrows.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow\"},\"mathspeak\":{\"sbrief\":\"L R arrow\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow\"},\"mathspeak\":{\"sbrief\":\"U D arrow\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow\"},\"mathspeak\":{\"sbrief\":\"U L arrow\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right arrow\"},\"mathspeak\":{\"sbrief\":\"U R arrow\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right arrow\"},\"mathspeak\":{\"sbrief\":\"D R arrow\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left arrow\"},\"mathspeak\":{\"sbrief\":\"D L arrow\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with stroke\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with stroke\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left wave arrow\"},\"mathspeak\":{\"sbrief\":\"L wave arrow\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right wave arrow\"},\"mathspeak\":{\"sbrief\":\"R wave arrow\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed left arrow\"},\"mathspeak\":{\"sbrief\":\"two headed L arrow\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed up arrow\"},\"mathspeak\":{\"sbrief\":\"two headed U arrow\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed down arrow\"},\"mathspeak\":{\"sbrief\":\"two headed D arrow\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"U arrow from bar\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow from bar\"},\"mathspeak\":{\"sbrief\":\"D arrow from bar\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow with base\"},\"mathspeak\":{\"sbrief\":\"U D arrow with base\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"L arrow with hook\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with hook\"},\"mathspeak\":{\"sbrief\":\"R arrow with hook\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with loop\"},\"mathspeak\":{\"sbrief\":\"L arrow with loop\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with loop\"},\"mathspeak\":{\"sbrief\":\"R arrow with loop\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right wave arrow\"},\"mathspeak\":{\"sbrief\":\"L R wave arrow\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with stroke\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down zigzag arrow\"},\"mathspeak\":{\"sbrief\":\"d zigzag arrow\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip left\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip right\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip left\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip right\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with corner down\"},\"mathspeak\":{\"sbrief\":\"R arrow with corner down\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with corner left\"},\"mathspeak\":{\"sbrief\":\"D arrow with corner left\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise top semicircle arrow\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise top semicircle arrow\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow to long bar\"},\"mathspeak\":{\"sbrief\":\"U L arrow to long bar\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar over right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar over R arrow to bar\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise open circle arrow\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise open circle arrow\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow over left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow over L arrow\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow left of down arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow L of D arrow\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow over right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow over R arrow\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left paired arrows\"},\"mathspeak\":{\"sbrief\":\"L paired arrows\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up paired arrows\"},\"mathspeak\":{\"sbrief\":\"U paired arrows\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right paired arrows\"},\"mathspeak\":{\"sbrief\":\"R paired arrows\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down paired arrows\"},\"mathspeak\":{\"sbrief\":\"D paired arrows\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L double arrow with stroke\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R double arrow with stroke\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R double arrow with stroke\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow\"},\"mathspeak\":{\"sbrief\":\"L double arrow\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up double arrow\"},\"mathspeak\":{\"sbrief\":\"U double arrow\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow\"},\"mathspeak\":{\"sbrief\":\"R double arrow\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down double arrow\"},\"mathspeak\":{\"sbrief\":\"d double arrow\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow\"},\"mathspeak\":{\"sbrief\":\"L R double arrow\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down double arrow\"},\"mathspeak\":{\"sbrief\":\"U d double arrow\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left double arrow\"},\"mathspeak\":{\"sbrief\":\"U L double arrow\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right double arrow\"},\"mathspeak\":{\"sbrief\":\"U R double arrow\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right double arrow\"},\"mathspeak\":{\"sbrief\":\"d R double arrow\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left double arrow\"},\"mathspeak\":{\"sbrief\":\"d L double arrow\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left triple arrow\"},\"mathspeak\":{\"sbrief\":\"L triple arrow\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right triple arrow\"},\"mathspeak\":{\"sbrief\":\"r triple arrow\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"L squiggle arrow\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"r squiggle arrow\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with double stroke\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"D arrow with double stroke\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"L dasheD arrow\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"U dasheD arrow\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"r dasheD arrow\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"d dasheD arrow\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"R arrow to bar\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left arrow\"},\"mathspeak\":{\"sbrief\":\"white L arrow\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow\"},\"mathspeak\":{\"sbrief\":\"white U arrow\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow\"},\"mathspeak\":{\"sbrief\":\"white R arrow\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down arrow\"},\"mathspeak\":{\"sbrief\":\"white D arrow\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow from bar\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with horizontal bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with horizontal bar\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with vertical bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with vertical bar\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow\"},\"mathspeak\":{\"sbrief\":\"white double U arrow\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white double U arrow on pedestal\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow from wall\"},\"mathspeak\":{\"sbrief\":\"white R arrow from wall\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west arrow to corner\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east arrow to corner\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down white arrow\"},\"mathspeak\":{\"sbrief\":\"U d white arrow\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"R arrow with small circle\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow left of up arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow l of U arrow\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three right arrows\"},\"mathspeak\":{\"sbrief\":\"three R arrows\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with vertical stroke\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with vertical stroke\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with vertical stroke\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with double vertical stroke\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with double vertical stroke\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with double vertical stroke\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left open headed arrow\"},\"mathspeak\":{\"sbrief\":\"l open headed arrow\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"r open headed arrow\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"L R open headed arrow\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"electric arrow\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead\"},\"mathspeak\":{\"sbrief\":\"U arrowhead\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrowhead\"},\"mathspeak\":{\"sbrief\":\"D arrowhead\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead between two horizontal bars\",\"alternative\":\"enter key\"},\"mathspeak\":{\"sbrief\":\"U arrowhead between two horizontal bars\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken circle with northwest arrow\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wide headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wide headed R arrow\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy d R arrow\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy R arrow\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy U R arrow\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"drafting point right arrow\"},\"mathspeak\":{\"sbrief\":\"drafting point R arrow\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy round tipped right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy round tipped R arrow\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"triangle headed R arrow\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy triangle headed R arrow\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"dashed triangle headed R arrow\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy dashed triangle headed R arrow\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrow\"},\"mathspeak\":{\"sbrief\":\"black R arrow\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d top lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d top lighted R arrowhead\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d bottom lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d bottom lighted R arrowhead\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrowhead\"},\"mathspeak\":{\"sbrief\":\"black R arrowhead\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved down and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved d and R arrow\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved up and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved U and R arrow\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"squat black right arrow\"},\"mathspeak\":{\"sbrief\":\"squat black R arrow\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy concave pointed black right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy concave pointed black R arrow\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"right shaded white R arrow\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"left shaded white R arrow\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"back tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"back tilted shadowed white R arrow\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"front tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"front tilted shadowed white R arrow\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy lower right shadowed white R arrow\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy upper right shadowed white R arrow\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched lower right shadowed white R arrow\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched upper right shadowed white R arrow\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled heavy white right arrow\"},\"mathspeak\":{\"sbrief\":\"circled heavy white R arrow\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"white feathered R arrow\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered d R arrow\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered R arrow\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered U R arrow\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered d R arrow\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered R arrow\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered U R arrow\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop barbed right arrow\"},\"mathspeak\":{\"sbrief\":\"teardrop barbed R arrow\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop shanked right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy teardrop shanked R arrow\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"wedge tailed R arrow\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wedge tailed R arrow\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open outlined right arrow\"},\"mathspeak\":{\"sbrief\":\"open outlined R arrow\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"U quadruple arrow\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"d quadrule arrow\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise gapped circle arrow\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise gapped circle arrow\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"R arrow with circled plus\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow\"},\"mathspeak\":{\"sbrief\":\"long L arrow\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow\"},\"mathspeak\":{\"sbrief\":\"long R arrow\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right arrow\"},\"mathspeak\":{\"sbrief\":\"long L R arrow\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow\"},\"mathspeak\":{\"sbrief\":\"long l double arrow\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow\"},\"mathspeak\":{\"sbrief\":\"long R double arrow\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right double arrow\"},\"mathspeak\":{\"sbrief\":\"long L R double arrow\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long L arrow from bar\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R arrow from bar\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long l double arrow from bar\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R double arrow from bar\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long r squiggle arrow\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with vertical stroke\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with double vertical stroke\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L arrow with vertical stroke\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double R arrow with vertical stroke\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L R arrow with vertical stroke\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow from bar\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double L arrow from bar\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double R arrow from bar\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow down with horizontal stroke\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow with horizontal stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with horizontal stroke\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up triple arrow\"},\"mathspeak\":{\"sbrief\":\"U triple arrow\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down triple arrow\"},\"mathspeak\":{\"sbrief\":\"d triple arrow\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double dash arrow\"},\"mathspeak\":{\"sbrief\":\"l double dash arrow\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double dash arrow\"},\"mathspeak\":{\"sbrief\":\"R double dash arrow\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l triple dash arrow\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r triple dash arrow\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r two headed triple dash arrow\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"R arrow with dotted stem\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow to bar\"},\"mathspeak\":{\"sbrief\":\"U arrow to bar\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow to bar\"},\"mathspeak\":{\"sbrief\":\"D arrow to bar\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with vertical stroke\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with double vertical stroke\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with vertical stroke\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with double vertical stroke\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow tail\"},\"mathspeak\":{\"sbrief\":\"L arrow tail\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow tail\"},\"mathspeak\":{\"sbrief\":\"R arrow tail\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double arrow tail\"},\"mathspeak\":{\"sbrief\":\"l double arrow tail\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow tail\"},\"mathspeak\":{\"sbrief\":\"R double arrow tail\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow to black diamond\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow to black diamond\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar to black diamond\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar to black diamond\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west and south east arrow\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east and south west arrow\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow with hook\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow with hook\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow with hook\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow with hook\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow and north east arrow\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow and south east arrow\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow and south west arrow\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow and north west arrow\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow crossing north east arrow\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing south east arrow\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing north east arrow\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing south east arrow\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing north west arrow\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow crossing north east arrow\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly right\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving up\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving down\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving left\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving right\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right side arc clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"r side arc clockwise arrow\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left side arc anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"l side arc anticlockwise arrow\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom arc anticlockwise arrow\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc clockwise arrow with minus\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow with plus\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right semicircular clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d r semicircular clockwise arrow\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down left semicircular anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d l semicircular anticlockwise arrow\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise closed circle arrow\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise closed circle arrow\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above short left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow above short L arrow\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above short right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow above short R arrow\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short right arrow above left arrow\"},\"mathspeak\":{\"sbrief\":\"short R arrow above L arrow\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"R arrow with plus below\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"L arrow with plus below\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through x\"},\"mathspeak\":{\"sbrief\":\"R arrow through x\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow through small circle\"},\"mathspeak\":{\"sbrief\":\"L R arrow through small circle\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up two headed arrow from small circle\"},\"mathspeak\":{\"sbrief\":\"U two headed arrow from small circle\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with rounded head\"},\"mathspeak\":{\"sbrief\":\"R double arrow with rounded head\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above right arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above R arrow\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above R arrow\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above tilde operator\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above tilde operator\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above almost equals\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above left arrow\"},\"mathspeak\":{\"sbrief\":\"less than above L arrow\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through less than\"},\"mathspeak\":{\"sbrief\":\"L arrow through less than\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above right arrow\"},\"mathspeak\":{\"sbrief\":\"greater than above R arrow\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above right arrow\"},\"mathspeak\":{\"sbrief\":\"subset above R arrow\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through subset\"},\"mathspeak\":{\"sbrief\":\"L arrow through subset\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above left arrow\"},\"mathspeak\":{\"sbrief\":\"suerset above L arrow\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with right arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with R arrow above\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with left arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with L arrow above\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow through circle\"},\"mathspeak\":{\"sbrief\":\"U arrow through circle\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black diamond with down arrow\"},\"mathspeak\":{\"sbrief\":\"black diamond with D arrow\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"white circle with D arrow\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"black circle with D arrow\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"integral with L arrow with hook\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east white arrow\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west white arrow\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east white arrow\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west white arrow\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right white arrow\"},\"mathspeak\":{\"sbrief\":\"L R white arrow\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left black arrow\"},\"mathspeak\":{\"sbrief\":\"L black arrow\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up black arrow\"},\"mathspeak\":{\"sbrief\":\"U black arrow\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down black arrow\"},\"mathspeak\":{\"sbrief\":\"D black arrow\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east black arrow\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west black arrow\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east black arrow\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west black arrow\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right black arrow\"},\"mathspeak\":{\"sbrief\":\"L R black arrow\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down black arrow\"},\"mathspeak\":{\"sbrief\":\"U D black arrow\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip down\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip up\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip down\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip up\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"L arrow with small circle\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three left arrows\"},\"mathspeak\":{\"sbrief\":\"three L arrows\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"L arrow with circled plus\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long l squiggle arrow\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with vertical stroke\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with double vertical stroke\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow from bar\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow from bar\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l two headed triple dash arrow\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"L arrow with dotted stem\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with vertical stroke\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with double vertical stroke\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with vertical stroke\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with double vertical stroke\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through x\"},\"mathspeak\":{\"sbrief\":\"L arrow through x\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly left\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above left arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above L arrow\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above L arrow\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse almost equals\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through greater than\"},\"mathspeak\":{\"sbrief\":\"R arrow through greater than\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through superset\"},\"mathspeak\":{\"sbrief\":\"R arrow through superset\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"l quadrule arrow\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"r quadrule arrow\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above R arrow\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse almost equals\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above L arrow\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above almost equals\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse tilde operator\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse tilde operator\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth left arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth L arrow\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth up arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth U arrow\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth right arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth R arrow\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth down arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth D arrow\"}},\"key\":\"FFEC\"}]\n,\n\"en/symbols/math_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"script cap P\"},\"mathspeak\":{\"default\":\"script upper P\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck pi\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck gamma\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Gamma\"},\"mathspeak\":{\"default\":\"double struck upper Gamma\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Pi\"},\"mathspeak\":{\"default\":\"double struck upper Pi\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double struck sum\"},\"mathspeak\":{\"default\":\"double struck sigma summation\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck italic cap D\"},\"mathspeak\":{\"default\":\"double struck italic upper D\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic d\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic e\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic i\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic j\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless j\"}},\"key\":\"1D6A5\"}]\n,\n\"en/symbols/math_delimiters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left parenthesis\"},\"mathspeak\":{\"brief\":\"left p'ren\",\"sbrief\":\"L p'ren\"},\"clearspeak\":{\"default\":\"open paren\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right parenthesis\"},\"mathspeak\":{\"brief\":\"right p'ren\",\"sbrief\":\"R p'ren\"},\"clearspeak\":{\"default\":\"close paren\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket\"},\"mathspeak\":{\"brief\":\"left brack\",\"sbrief\":\"L brack\"},\"clearspeak\":{\"default\":\"open bracket\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket\"},\"mathspeak\":{\"brief\":\"right brack\",\"sbrief\":\"R brack\"},\"clearspeak\":{\"default\":\"close bracket\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left brace\"},\"mathspeak\":{\"sbrief\":\"L brace\"},\"clearspeak\":{\"default\":\"open brace\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right brace\"},\"mathspeak\":{\"sbrief\":\"R brace\"},\"clearspeak\":{\"default\":\"close brace\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with quill\"},\"mathspeak\":{\"brief\":\"left brack with quill\",\"sbrief\":\"L brack with quill\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with quill\"},\"mathspeak\":{\"brief\":\"right brack with quill\",\"sbrief\":\"R brack with quill\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left ceiling\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right ceiling\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left floor\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right floor\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right crop\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left crop\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right crop\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left crop\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left corner\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right corner\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left corner\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right corner\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top half integral\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom half integral\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing angle bracket\",\"physics\":\"bra\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing angle bracket\",\"physics\":\"ket\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"left p'ren upper hook\",\"sbrief\":\"L p'ren upper hook\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis extension\"},\"mathspeak\":{\"brief\":\"left p'ren extension\",\"sbrief\":\"L p'ren extension\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"left p'ren lower hook\",\"sbrief\":\"L p'ren lower hook\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"right p'ren upper hook\",\"sbrief\":\"R p'ren upper hook\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis extension\"},\"mathspeak\":{\"brief\":\"right p'ren extension\",\"sbrief\":\"R p'ren extension\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"right p'ren lower hook\",\"sbrief\":\"R p'ren lower hook\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket upper corner\"},\"mathspeak\":{\"brief\":\"left brack upper corner\",\"sbrief\":\"L brack upper corner\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket extension\"},\"mathspeak\":{\"brief\":\"left brack extension\",\"sbrief\":\"L brack extension\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket lower corner\"},\"mathspeak\":{\"brief\":\"left brack lower corner\",\"sbrief\":\"L brack lower corner\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket upper corner\"},\"mathspeak\":{\"brief\":\"right brack upper corner\",\"sbrief\":\"R brack upper corner\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket extension\"},\"mathspeak\":{\"brief\":\"right brack extension\",\"sbrief\":\"R brack extension\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket lower corner\"},\"mathspeak\":{\"brief\":\"right brack lower corner\",\"sbrief\":\"R brack lower corner\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace upper hook\"},\"mathspeak\":{\"sbrief\":\"L brace upper hook\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace middle piece\"},\"mathspeak\":{\"sbrief\":\"L brace middle piece\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace lower hook\"},\"mathspeak\":{\"sbrief\":\"L brace lower hook\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"brace extension\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace upper hook\"},\"mathspeak\":{\"sbrief\":\"R brace upper hook\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace middle piece\"},\"mathspeak\":{\"sbrief\":\"R brace middle piece\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace lower hook\"},\"mathspeak\":{\"sbrief\":\"R brace lower hook\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral extension\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"horizontal line extension\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left or lower right brace section\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right or lower left brace section\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation top\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation bottom\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top bracket\"},\"mathspeak\":{\"brief\":\"top brack\",\"sbrief\":\"T brack\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket\"},\"mathspeak\":{\"brief\":\"bottom brack\",\"sbrief\":\"B brack\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket over top bracket\"},\"mathspeak\":{\"brief\":\"bottom brack over top brack\",\"sbrief\":\"B brack over T brack\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"radical symbol bottom\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left vertical box line\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right vertical box line\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top parenthesis\"},\"mathspeak\":{\"brief\":\"top p'ren\",\"sbrief\":\"t p'ren\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom parenthesis\"},\"mathspeak\":{\"brief\":\"bottom p'ren\",\"sbrief\":\"b p'ren\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top brace\"},\"mathspeak\":{\"sbrief\":\"T brace\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom brace\"},\"mathspeak\":{\"sbrief\":\"B brace\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top tortoise shell bracket\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom tortoise shell bracket\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium left p'ren ornament\",\"sbrief\":\"medium L p'ren ornament\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium right p'ren ornament\",\"sbrief\":\"medium R p'ren ornament\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium flattened left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened left p'ren ornament\",\"sbrief\":\"medium flattened L p'ren ornament\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium flattened right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened right p'ren ornament\",\"sbrief\":\"medium flattened R p'ren ornament\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left pointing angle bracket ornament\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right pointing angle bracket ornament\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle quotation mark ornament\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle quotation mark ornament\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle bracket ornament\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle bracket ornament\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"light left tortoise shell bracket ornament\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"light right tortoise shell bracket ornament\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium L brace ornament\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium R brace ornament\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left s shaped bag delimiter\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right s shaped bag delimiter\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"flattened left parenthesis\"},\"mathspeak\":{\"brief\":\"flattened left p'ren\",\"sbrief\":\"flattened L p'ren\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"flattened right parenthesis\"},\"mathspeak\":{\"brief\":\"flattened right p'ren\",\"sbrief\":\"flattened R p'ren\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white brace\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white brace\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"white left parenthesis\"},\"mathspeak\":{\"brief\":\"white left p'ren\",\"sbrief\":\"white L p'ren\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"white right parenthesis\"},\"mathspeak\":{\"brief\":\"white right p'ren\",\"sbrief\":\"white R p'ren\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left image bracket\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right image bracket\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"},\"mathspeak\":{\"brief\":\"left brack with underbar\",\"sbrief\":\"L brack with underbar\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"},\"mathspeak\":{\"brief\":\"right brack with underbar\",\"sbrief\":\"R brack with underbar\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in top corner\",\"sbrief\":\"L brack with tick in top corner\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in bottom corner\",\"sbrief\":\"R brack with tick in bottom corner\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in bottom corner\",\"sbrief\":\"L brack with tick in bottom corner\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in top corner\",\"sbrief\":\"R brack with tick in top corner\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"l angle bracket with dot\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"r angle bracket with dot\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black tortoise shell bracket\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black tortoise shell bracket\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left wiggly fence\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right wiggly fence\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing curved angle bracket\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing curved angle bracket\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"top half left bracket\"},\"mathspeak\":{\"brief\":\"top half left brack\",\"sbrief\":\"top half L brack\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"top half right bracket\"},\"mathspeak\":{\"brief\":\"top half right brack\",\"sbrief\":\"top half R brack\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"bottom half left bracket\"},\"mathspeak\":{\"brief\":\"bottom half left brack\",\"sbrief\":\"bottom half L brack\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"bottom half right bracket\"},\"mathspeak\":{\"brief\":\"bottom half right brack\",\"sbrief\":\"bottom half R brack\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left sideways U bracket\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right sideways U bracket\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left parenthesis\"},\"mathspeak\":{\"brief\":\"double left p'ren\",\"sbrief\":\"double L p'ren\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right parenthesis\"},\"mathspeak\":{\"brief\":\"double right p'ren\",\"sbrief\":\"double R p'ren\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left corner bracket\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right corner bracket\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white corner bracket\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white corner bracket\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black lenticular bracket\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black lenticular bracket\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white lenticular bracket\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white lenticular bracket\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"reversed double prime quotation mark\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double prime quotation mark\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"low double prime quotation mark\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"ornate left parenthesis\"},\"mathspeak\":{\"brief\":\"ornate left p'ren\",\"sbrief\":\"ornate L p'ren\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"ornate right parenthesis\"},\"mathspeak\":{\"brief\":\"ornate right p'ren\",\"sbrief\":\"ornate R p'ren\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white lenticular bracket\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white lenticular brakcet\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left p'ren\",\"sbrief\":\"presentation form for vertical L p'ren\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right p'ren\",\"sbrief\":\"presentation form for vertical R p'ren\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical L brace\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r brace\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left tortoise shell bracket\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right tortoise shell bracket\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left black lenticular bracket\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right black lenticular bracket\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left double angle bracket\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right double angle bracket\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical l angle bracket\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r angle bracket\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left corner bracket\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right corner bracket\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white corner bracket\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white corner bracket\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left brack\",\"sbrief\":\"presentation form for vertical L brack\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right brack\",\"sbrief\":\"presentation form for vertical r brack\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left parenthesis\"},\"mathspeak\":{\"brief\":\"small left p'ren\",\"sbrief\":\"small L p'ren\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right parenthesis\"},\"mathspeak\":{\"brief\":\"small right p'ren\",\"sbrief\":\"small R p'ren\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left brace\"},\"mathspeak\":{\"sbrief\":\"small L brace\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right brace\"},\"mathspeak\":{\"sbrief\":\"small r brace\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left tortoise shell bracket\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right tortoise shell bracket\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth left p'ren\",\"sbrief\":\"fullwidth L p'ren\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth right p'ren\",\"sbrief\":\"fullwidth R p'ren\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left bracket\"},\"mathspeak\":{\"brief\":\"fullwidth left brack\",\"sbrief\":\"fullwidth L brack\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right bracket\"},\"mathspeak\":{\"brief\":\"fullwidth right brack\",\"sbrief\":\"fullwidth r brack\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth L brace\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth r brace\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth white left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white left p'ren\",\"sbrief\":\"fullwidth white L p'ren\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth white right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white right p'ren\",\"sbrief\":\"fullwidth white R p'ren\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"halfwidth left corner bracket\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"halfwidth right corner bracket\"}},\"key\":\"FF63\"}]\n,\n\"en/symbols/math_geometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light horizontal\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy horizontal\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash horizontal\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash horizontal\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash vertical\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash vertical\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash horizontal\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash horizontal\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash vertical\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash vertical\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and right\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right heavy\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right light\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and right\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and left\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left heavy\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left light\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and left\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and right\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right heavy\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right light\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and right\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and left\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left heavy\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left light\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and left\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and right\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and right heavy\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right down light\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right up light\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and right light\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right up heavy\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right down heavy\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and right\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and left\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and left heavy\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left down light\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left up light\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and left light\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left up heavy\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left down heavy\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and left\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and horizontal\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right down light\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left down light\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and horizontal heavy\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and horizontal light\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left down heavy\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right down heavy\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and horizontal\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and horizontal\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right up light\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left up light\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and horizontal heavy\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and horizontal light\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left up heavy\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right up heavy\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and horizontal\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and horizontal\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right vertical light\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left vertical light\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and horizontal heavy\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and down horizontal light\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and up horizontal light\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and horizontal light\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left up heavy and right down light\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right up heavy and left down light\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left down heavy and right up light\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right down heavy and left up light\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and up horizontal heavy\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and down horizontal heavy\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left vertical heavy\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right vertical heavy\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and horizontal\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash horizontal\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash horizontal\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash vertical\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash vertical\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double horizontal\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and right double\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and right single\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and right\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and left double\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and left single\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and left\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and right double\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and right single\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and right\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and left double\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and left single\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and left\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and right double\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and right single\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and right\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and left double\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and left single\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and left\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and horizontal double\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and horizontal single\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and horizontal\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and horizontal double\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and horizontal single\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and horizontal\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and horizontal double\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and horizontal single\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and horizontal\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and right\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and left\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and left\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and right\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper right to lower left\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper left to lower right\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal cross\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light right\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy right\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left and heavy right\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and heavy down\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left and light right\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and light down\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half block\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one eighth block\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one quarter block\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three eighths block\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half block\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower five eighths block\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three quarters block\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower seven eighths block\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"full block\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left seven eighths block\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three quarters block\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left five eighths block\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half block\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three eighths block\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one quarter block\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one eighth block\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half block\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"light shade\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"medium shade\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dark shade\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper one eighth block\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right one eighth block\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower left\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower right\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower left and lower right\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower right\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower left\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower right\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left and lower right\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black square\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with rounded corners\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square containing black small square\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with horizontal fill\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with vertical fill\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with orthogonal crosshatch fill\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left to lower right fill\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right to lower left fill\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with diagonal crosshatch fill\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small square\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small square\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black rectangle\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white rectangle\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical rectangle\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black parallelogram\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white parallelogram\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing triangle\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing small triangle\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing small triangle\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing triangle\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white right pointing triangle\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing small triangle\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing small triangle\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pointer\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pointer\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing triangle\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing triangle\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing small triangle\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing small triangle\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing triangle\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white left pointing triangle\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing small triangle\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing small triangle\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing pointer\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing pointer\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black diamond\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond containing black small diamond\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"fisheye\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lozenge\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted circle\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with vertical fill\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bullseye\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with left half black\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with right half black\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with lower half black\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper half black\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper right quadrant black\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with all but upper left quadrant black\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half black circle\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half black circle\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse bullet\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse white circle\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half inverse white circle\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half inverse white circle\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper left quadrant circular arc\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper right quadrant circular arc\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower right quadrant circular arc\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower left quadrant circular arc\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half circle\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half circle\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower right triangle\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower left triangle\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper left triangle\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper right triangle\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white bullet\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with left half black\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with right half black\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left diagonal half black\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower right diagonal half black\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with vertical bisecting line\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle with dot\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with left half black\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with right half black\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"large circle\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper left quadrant\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower left quadrant\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower right quadrant\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper right quadrant\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper left quadrant\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower left quadrant\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower right quadrant\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper right quadrant\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left triangle\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right triangle\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower left triangle\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium square\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium square\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium small square\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium small square\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right triangle\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with top half black\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with bottom half black\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right diagonal half black\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower left diagonal half black\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with left half black\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with right half black\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with top half black\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with bottom half black\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted square\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large square\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white large square\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black very small square\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white very small square\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black pentagon\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white pentagon\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white hexagon\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black hexagon\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"horizontal black hexagon\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large circle\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium diamond\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium diamond\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium lozenge\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium lozenge\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small diamond\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small lozenge\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small lozenge\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black horizontal ellipse\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white horizontal ellipse\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical ellipse\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical ellipse\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium star\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small star\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small star\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pentagon\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pentagon\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy large circle\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy oval with oval inside\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle with circle inside\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circled saltire\"}},\"key\":\"2B59\"}]\n,\n\"en/symbols/math_harpoons.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon over right harpoon\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon over left harpoon\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb down harpoon\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb up harpoon\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb right harpoon\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb up harpoon\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb right harpoon\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb down harpoon\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb left harpoon\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up to bar\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up to bar\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right to bar\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right to bar\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down to bar\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down to bar\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left to bar\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left to bar\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up from bar\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up from bar\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right from bar\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right from bar\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down from bar\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down from bar\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left from bar\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left from bar\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above left harpoon with barb down\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above right harpoon with barb down\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above right harpoon with barb up\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down above right harpoon with barb down\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above left harpoon with barb up\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down above left harpoon with barb down\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above long dash\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down below long dash\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above long dash\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down below long dash\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left fish tail\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right fish tail\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up fish tail\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down fish tail\"}},\"key\":\"297F\"}]\n,\n\"en/symbols/math_non_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h over two pi\",\"physics\":\"planck constant over two pi\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"l b bar\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"numero\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sound recording copyright\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"prescription take\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"response\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"service mark\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"telephone sign\",\"alternative\":\"t e l symbol\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"trade mark\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"versicle\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverted ohm\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"kelvin\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"estimated\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"turned cap F\"},\"mathspeak\":{\"default\":\"turned upper F\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"information source\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"rotated cap Q\"},\"mathspeak\":{\"default\":\"rotated upper Q\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"facsimile sign\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap G\"},\"mathspeak\":{\"default\":\"turned sans serif upper G\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap L\"},\"mathspeak\":{\"default\":\"turned sans serif upper L\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed sans serif cap L\"},\"mathspeak\":{\"default\":\"reversed sans serif upper L\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap Y\"},\"mathspeak\":{\"default\":\"turned sans serif upper Y\"}},\"key\":\"2144\"}]\n,\n\"en/symbols/math_symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\",\"alternative\":\"hash\"},\"mathspeak\":{\"brief\":\"num sign\",\"sbrief\":\"num sign\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"minus\"},\"mathspeak\":{\"default\":\"hyphen\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"},\"emacspeak\":{\"default\":\"slash\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"},\"clearspeak\":{\"default\":\"is less than\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"},\"clearspeak\":{\"default\":\"is greater than\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"at\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"hat\"},\"mathspeak\":{\"default\":\"caret\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"},\"mathspeak\":{\"default\":\"grave\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted exclamation mark\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"currency sign\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"section sign\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"two dots\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"copyright sign\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"feminine ordinal indicator\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing guillemet\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"registered sign\"},\"mathspeak\":{\"default\":\"registered trade mark sign\"},\"clearspeak\":{\"default\":\"trade mark sign\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"bar\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"degree\"},\"clearspeak\":{\"default\":\"degrees\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus or minus\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"acute\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"paragraph sign\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"masculine ordinal indicator\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing guillemet\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted question mark\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times\"},\"clearspeak\":{\"MultsymbolX_By\":\"by\",\"MultsymbolX_Cross\":\"cross\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division sign\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"dot above\"},\"mathspeak\":{\"default\":\"dot\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ring above\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"double acute\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"non breaking hyphen\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"figure dash\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"en dash\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"em dash\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"horizontal bar\"},\"mathspeak\":{\"default\":\"quotation dash\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double vertical bar\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double underline\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left single quotation mark\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right single quotation mark\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right single quotation mark\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed single quotation mark\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left double quotation mark\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right double quotation mark\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right double quotation mark\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed double quotation mark\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dagger\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double dagger\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triangular bullet\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"one dot leader\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot leader\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphenation point\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per mille\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per ten thousand\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed prime\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed double prime\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed triple prime\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing single guillemet\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing single guillemet\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reference mark\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double exclamation mark\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"overline\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"undertie\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"character tie\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret insertion point\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterism\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphen bullet\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fraction slash\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double question mark\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question exclamation mark\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation question mark\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed pilcrow\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black leftwards bullet\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black rightwards bullet\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"low asterisk\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed semicolon\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"close up\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two asterisks aligned vertically\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"commercial minus\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"swung dash\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"inverted undertie\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"flower punctuation mark\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"three dot punctuation\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot punctuation\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"five dot punctuation\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot punctuation\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot mark\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dotted cross\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"vertical four dots\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript plus\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript minus\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript equals\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"superscript left parenthesis\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"superscript right parenthesis\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript plus\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript minus\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript equals\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"subscript left parenthesis\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"subscript right parenthesis\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"property line\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned ampersand\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"per\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"turned small f\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"for all\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"complement\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there exists\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there does not exist\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increment\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not an element of\"},\"clearspeak\":{\"default\":\"is not a member of\",\"SetMemberSymbol_Member\":\"is not a member of\",\"SetMemberSymbol_Element\":\"is not an element of\",\"SetMemberSymbol_In\":\"is not in\",\"SetMemberSymbol_Belongs\":\"does not belong to\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as member\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as member\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains as member\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"end of proof\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"product\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"coproduct\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sum\"},\"mathspeak\":{\"default\":\"sigma summation\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus or plus\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot plus\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division slash\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"set minus\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring\"},\"clearspeak\":{\"default\":\"composed with\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square root\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"cube root\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fourth root\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportional to\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\",\"alternative\":\"divides\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel to\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not parallel to\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double integral\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple integral\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contour integral\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"surface integral\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"volume integral\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise integral\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise contour integral\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise contour integral\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"therefore\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"because\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ratio\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot minus\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"excess\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometric proportion\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"homothetic\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"inverted lazy s\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sine wave\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wreath product\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not tilde\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus tilde\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asymptotically equals\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not asymptotically equals\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately but not actually equals\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither approximately nor actually equals\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equals\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not almost equals\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal or equals\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"all equals\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent to\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equivalent to\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"difference between\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approaches the limit\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equals\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals or the image of\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of or approximately equals\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"colon equals\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals colon\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring in equals\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring equals\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"corresponds to\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"estimates\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equiangular to\"},\"clearspeak\":{\"default\":\"is equiangular to\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star equals\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"delta equals\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals by definition\"},\"clearspeak\":{\"default\":\"is defined to be\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured by\"},\"clearspeak\":{\"default\":\"is measured by\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"questioned equals\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equals\"},\"clearspeak\":{\"default\":\"is not equal to\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to\"},\"clearspeak\":{\"default\":\"is identical to\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not identical to\"},\"clearspeak\":{\"default\":\"is not identical to\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"strictly equivalent to\"},\"clearspeak\":{\"default\":\"is strictly equivalent to\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equals\"},\"clearspeak\":{\"default\":\"is less than or equal to\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equals\"},\"clearspeak\":{\"default\":\"is greater than or equal to\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than over equals\"},\"clearspeak\":{\"default\":\"is less than over equals\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than over equals\"},\"clearspeak\":{\"default\":\"is greater than over equals\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equals\"},\"clearspeak\":{\"default\":\"is less than but not equal to\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equals\"},\"clearspeak\":{\"default\":\"is greater than but not equal to\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much less than\"},\"clearspeak\":{\"default\":\"is much less than\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much greater than\"},\"clearspeak\":{\"default\":\"is much greater than\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"between\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equivalent to\"},\"clearspeak\":{\"default\":\"is not equivalent to\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not less than\"},\"clearspeak\":{\"default\":\"is not less than\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not greater than\"},\"clearspeak\":{\"default\":\"is not greater than\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equals\"},\"clearspeak\":{\"default\":\"is neither less than nor equal to\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equals\"},\"clearspeak\":{\"default\":\"is neither greater than nor equal to\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equivalent to\"},\"clearspeak\":{\"default\":\"is less than or equivalent to\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equivalent to\"},\"clearspeak\":{\"default\":\"is greater than or equivalent to\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither less than nor equivalent to\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither greater than nor equivalent to\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or greater than\"},\"clearspeak\":{\"default\":\"is less than or greater than\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or less than\"},\"clearspeak\":{\"default\":\"is greater than or less than\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor greater than\"},\"clearspeak\":{\"default\":\"is neither less than nor greater than\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor less than\"},\"clearspeak\":{\"default\":\"is neither greater than nor less than\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equal to\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equal to\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equivalent to\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equivalent to\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a subset of\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a superset of\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equal to\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equal to\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a subset of nor equal to\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a superset of nor equal to\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or not equals\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or not equals\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset multiplication\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset union\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or equal to\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or equal to\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cap\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cup\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled plus\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled minus\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled times\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division slash\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dot\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled ring\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled asterisk\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled equals\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dash\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared plus\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared minus\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared times\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared dot\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right tack\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left tack\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"models\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"true\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forces\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar right turnstile\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double right turnstile\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not prove\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not true\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not force\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"negated double vertical bar double right turnstile\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes under relation\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds under relation\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of or equal to\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup or equal to\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"original of\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multimap\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"hermitian conjugate matrix\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intercalate\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"xor\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nand\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nor\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary and\"},\"mathspeak\":{\"default\":\"and\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary or\"},\"mathspeak\":{\"default\":\"or\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary intersection\"},\"mathspeak\":{\"default\":\"intersection\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union\"},\"mathspeak\":{\"default\":\"union\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"diamond\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\",\"MultsymbolDot_Dot\":\"dot\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division times\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left normal factor semidirect product\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right normal factor semidirect product\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left semidirect product\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right semidirect product\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde equals\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly or\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly and\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double subset\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double superset\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double intersection\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double union\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equal and parallel to\"},\"clearspeak\":{\"default\":\"is equal and parallel to\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than dot\"},\"clearspeak\":{\"default\":\"is less than dot\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than dot\"},\"clearspeak\":{\"default\":\"is greater than dot\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much less than\"},\"clearspeak\":{\"default\":\"is very much less than\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much greater than\"},\"clearspeak\":{\"default\":\"is very much greater than\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than equals or greater than\"},\"clearspeak\":{\"default\":\"is less than equal to or greater than\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than equals or less than\"},\"clearspeak\":{\"default\":\"is greater than equal to or less than\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or less than\"},\"clearspeak\":{\"default\":\"is equal to or less than\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or greater than\"},\"clearspeak\":{\"default\":\"is equal to or greater than\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or precedes\"},\"clearspeak\":{\"default\":\"is equal to or precedes\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or succeeds\"},\"clearspeak\":{\"default\":\"is equal to or succeeds\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede or equal\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed or equal\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square image of or equals\"},\"clearspeak\":{\"default\":\"is not square image of or equal to\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square original of or equals\"},\"clearspeak\":{\"default\":\"is not square original of or equal to\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or not equals\"},\"clearspeak\":{\"default\":\"is square image of or not equal to\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or not equals\"},\"clearspeak\":{\"default\":\"is square original of or not equal to\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equivalent to\"},\"clearspeak\":{\"default\":\"is less than but not equivalent to\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equivalent to\"},\"clearspeak\":{\"default\":\"is greater than but not equivalent to\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes but not equivalent to\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equivalent to\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of\"},\"clearspeak\":{\"default\":\"is not normal subgroup of\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of or equals\"},\"clearspeak\":{\"default\":\"is not normal subgroup of or equal to\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup or equal\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical ellipsis\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"midline horizontal ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up right diagonal ellipsis\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right diagonal ellipsis\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with long horizontal stroke\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with dot above\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with overbar\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with overbar\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with underbar\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with two horizontal strokes\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with long horizontal stroke\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with overbar\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with overbar\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation bag membership\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diameter sign\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"house\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wavy line\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"reversed not\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square lozenge\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sector\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold plus\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold minus\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold division\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"curly loop\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"double curly loop\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white triangle containing small white triangle\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open subset\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open superset\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot inside\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash preceding subset\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset preceding solidus\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar with horizontal stroke\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long division\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared and\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared or\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white diamond with centered dot\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening upwards\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right corner with dot\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left corner with dot\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left outer join\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right outer join\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"full outer join\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large up tack\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large down tack\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right double turnstile\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right tack\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left multimap\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right tack\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left tack\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack with circle above\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lozenge divided by horizontal rule\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with leftwards tick\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with rightwards tick\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with leftwards tick\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with rightwards tick\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing falling diagonal\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing rising diagonal\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar delimiter\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation spot\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation type colon\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dotted fence\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical zigzag line\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed empty set\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with overbar\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with small circle above\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with horizontal bar\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled parallel\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled backslash\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled perpendicular\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle divided by horizontal bar and top half divided by vertical bar\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with superimposed x\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled white bullet\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled bullet\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled less than\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled greater than\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with small circle to the right\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared rising diagonal slash\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared falling diagonal slash\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared asterisk\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared small circle\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared square\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two joined squares\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with dot above\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with underbar\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"s in triangle\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle above left triangle\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triangle beside vertical bar\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar beside right triangle\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with left half black\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with right half black\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black bowtie\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with left half black\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with right half black\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white hourglass\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black hourglass\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"incomplete infinity\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tie over infinity\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity negated with vertical bar\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double ended multimap\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square with contoured outline\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increases as\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"shuffle product\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel with tilde above\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to and slanted parallel\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"thermodynamic\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with left half black\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with right half black\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black lozenge\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white square\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black square\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white diamond\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black diamond\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white circle\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black circle\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash with horizontal stroke\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big solidus\"},\"mathspeak\":{\"default\":\"solidus\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big backslash\"},\"mathspeak\":{\"default\":\"backslash\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double plus\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tiny\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"miny\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled dot\"},\"mathspeak\":{\"default\":\"circled dot\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled plus\"},\"mathspeak\":{\"default\":\"circled plus\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled times\"},\"mathspeak\":{\"default\":\"circled times\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union with dot\"},\"mathspeak\":{\"default\":\"union with dot\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union operator with plus\"},\"mathspeak\":{\"default\":\"union with plus\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square intersection\"},\"mathspeak\":{\"default\":\"square intersection\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square union\"},\"mathspeak\":{\"default\":\"square union\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two and\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two or\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary times\"},\"mathspeak\":{\"default\":\"times\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"modulo two sum\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation with integral\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quadruple integral\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with double stroke\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral average with slash\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise integration\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with rectangular path around pole\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with semicircular path around pole\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration not including the pole\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral around a point\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quaternion integral\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with times\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with intersection\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with union\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with overbar\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with underbar\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"join\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large left triangle\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema composition\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema piping\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema projection\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus with circle above\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus hat\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus tilde\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus underdot\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with tilde below\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with subscript two\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with black triangle\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with comma above\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with dot below\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with falling dots\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with rising dots\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in left half circle\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in right half circle\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vector or cross product\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with dot above\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with underbar\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"semidirect product with bottom closed\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in left half circle\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in right half circle\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled multiplication sign with circumflex accent\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in double circle\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in triangle\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign in triangle\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in triangle\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"interior product\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"righthand interior product\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation relational composition\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"amalgamation or coproduct\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with dot\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with minus\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with overbar\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with overbar\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with and\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with or\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above intersection\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above union\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above bar above intersection\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above bar above union\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union beside and joined with union\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection beside and joined with intersection\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed intersection with serifs\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square intersection\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square union\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs and smash product\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot above\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot above\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double and\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double or\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting and\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting or\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or overlapping and\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with middle stem\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with middle stem\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with horizontal dash\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with horizontal dash\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double overbar\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with underbar\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double underbar\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small vee with underbar\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double overbar\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double underbar\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation domain antirestriction\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation range antirestriction\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with dot below\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical with dot above\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with double vertical stroke\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with triple vertical stroke\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with dot above\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with rising dots\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar minus similar\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"congruent with dot above\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with asterisk\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal hat\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equal or equal to\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above plus\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus above equals\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above tilde\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double colon equal\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two consecutive equals\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three consecutive equals\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with two dots above and two dots below\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent with four dots above\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with circle inside\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with circle inside\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with question mark above\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with question mark above\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot inside\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot inside\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above right\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above left\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or approximate\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or approximate\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and single line not equals\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and single line not equals\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and not approximate\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and not approximate\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above double line equal above greater than\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above double line equal above less than\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar or equal\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar or equal\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar above greater than\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar above less than\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above greater than above double line equal\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above less than above double line equal\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above slanted equal above greater than above slanted equal\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above slanted equal above less than above slanted equal\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than with dot inside\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than with dot inside\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or less than\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or greater than\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or less than\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or greater than\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or less than\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or greater than\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above less than above equals sign\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above greater than above equals sign\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested greater than\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than with underbar\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than overlapping less than\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than beside less than\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve above slanted equal\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve above slanted equal\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than\"},\"clearspeak\":{\"default\":\"is smaller than\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than\"},\"clearspeak\":{\"default\":\"is larger than\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than or equals\"},\"clearspeak\":{\"default\":\"is smaller than or equal to\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than or equal\"},\"clearspeak\":{\"default\":\"is larger than or equal to\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with bumpy above\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line equals sign\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line equals sign\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line not equals\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line not equals\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above equals\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above equals\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not equals\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not equals\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above almost equals\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above almost equals\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not almost equals\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not almost equals\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double precedes\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double succeeds\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with dot\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with dot\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with plus sign below\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with plus sign below\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with multiplication sign below\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with multiplication sign below\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equals with dot above\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equals with dot above\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above equals sign\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above equals sign\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above tilde\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above tilde\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above almost equals\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above almost equals\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above not equals\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above not equals\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square left open box\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square right open box\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset or equals\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset or equals\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above superset\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above subset\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above subset\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above superset\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside subset\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside and joined by dash with subset\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening downwards\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forking\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short left tack\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular with s\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar triple right turnstile\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar left turnstile\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar double left turnstile\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double left turnstile\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack with underbar\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double down tack\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle above\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle below\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with horizontal stroke\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with tilde\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar binary relation\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar with horizontal stroke\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple colon\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested less than\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested greater than\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted less than or equals\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted greater than or equals\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple solidus binary relation\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large triple vertical bar\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double solidus\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary white vertical bar\"},\"mathspeak\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"wave dash\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical comma\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical colon\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical semicolon\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical exclamation mark\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical question mark\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical horizontal ellipsis\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical two dot leader\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical em dash\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical en dash\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical underline\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical wavy underline\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"sesame dot\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"white sesame dot\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dashed overline\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dash dot overline\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"wavy overline\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double wavy overline\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dashed underline\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dash dot underline\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"wavy underline\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small comma\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small period\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small semicolon\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small colon\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small question mark\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small exclamation mark\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small em dash\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small number sign\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small ampersand\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small asterisk\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small plus sign\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small hyphen minus\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small less than sign\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small greater than sign\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small equals\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small backslash\",\"alternative\":\"small reverse solidus\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"small dollar sign\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small percent sign\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small commercial at\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen minus\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"commercial at\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\",\"alternative\":\"reverse solidus\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"caret\",\"alternative\":\"circumflex\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"macron\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"won sign\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth forms light vertical\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth black square\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth white circle\"}},\"key\":\"FFEE\"}]\n,\n\"en/symbols/math_whitespace.js\": \n[{\"locale\":\"en\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"space\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"no break space\",\"alternative\":\"non breaking space\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"soft hyphen\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en quad\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em quad\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en space\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em space\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"three per em space\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"four per em space\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"six per em space\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"figure space\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"punctuation space\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"thin space\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"hair space\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width space\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width non joiner\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width joiner\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right mark\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left mark\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"line separator\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"paragraph separator\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right embedding\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left embedding\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"pop directional formatting\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right override\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left override\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"narrow no break space\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"medium mathematical space\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"word joiner\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"of\",\"alternative\":\"function application\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"times\",\"alternative\":\"invisible times\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"separator\",\"alternative\":\"invisible separator\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"plus\",\"alternative\":\"invisible plus\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"inhibit symmetric swapping\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"activate symmetric swapping\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"national digit shapes\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"nominal digit shapes\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width no break space\",\"alternative\":\"byte order mark\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation anchor\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation separator\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation terminator\"}},\"key\":\"FFFB\"}]\n,\n\"en/symbols/other_stars.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"decimal exponent symbol\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black star\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white star\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\",\"alternative\":\"medium white circle\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\",\"alternative\":\"medium black circle\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white check mark\",\"alternative\":\"white heavy check mark\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy check mark\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"multiplication x\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy multiplication x\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy ballot x\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center cross\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy open center cross\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"maltese cross\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"star of david\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four teardrop spoked asterisk\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four balloon spoked asterisk\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy four balloon spoked asterisk\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four club spoked asterisk\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black four pointed star\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white four pointed star\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkles\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"stress outlined white star\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled white star\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center black star\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black center white star\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"outlined black star\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy outlined black star\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"pinwheel star\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white star\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy asterisk\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center asterisk\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight spoked asterisk\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed black star\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed pinwheel star\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six pointed black star\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"twelve pointed black star\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sixteen pointed asterisk\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop spoked asterisk\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center teardrop spoked asterisk\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six petalled black and white florette\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black florette\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white florette\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight petalled outlined black florette\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled open center eight pointed star\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked pinwheel asterisk\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"snowflake\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"tight trifoliate snowflake\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy chevron snowflake\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkle\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy sparkle\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"balloon spoked asterisk\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight teardrop spoked propeller asterisk\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy eight teardrop spoked propeller asterisk\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"cross mark\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white circle\"}},\"key\":\"274D\"}]\n,\n\"en/units/area.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"square\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square inch\"}},\"key\":\"sq inch\",\"names\":[\"sq inch\",\"sq. inch.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square rod\"}},\"key\":\"sq rd\",\"names\":[\"sq rd\",\"sq. rd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square foot\",\"plural\":\"square feet\"}},\"key\":\"sq ft\",\"names\":[\"sq ft\",\"sq. ft.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square yard\"}},\"key\":\"sq yd\",\"names\":[\"sq yd\",\"sq. yd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square mile\"}},\"key\":\"sq mi\",\"names\":[\"sq mi\",\"sq. mi.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"acre\"}},\"key\":\"acr\",\"names\":[\"ac\",\"ac.\",\"acr\",\"acr.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"hectare\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"en/units/currency.js\": \n[{\"locale\":\"en\"},{\"category\":\"currency\",\"key\":\"$\",\"mappings\":{\"default\":{\"default\":\"dollar\"}},\"names\":[\"$\",\"💲\",\"＄\",\"﹩\",\"USD\"]},{\"category\":\"currency\",\"key\":\"£\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"names\":[\"£\",\"￡\",\"GBP\"]},{\"category\":\"currency\",\"key\":\"¥\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"names\":[\"¥\",\"￥\",\"JPY\"]},{\"category\":\"currency\",\"key\":\"€\",\"mappings\":{\"default\":{\"default\":\"euro\"}},\"names\":[\"€\",\"EUR\"]},{\"category\":\"currency\",\"key\":\"₡\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"names\":[\"₡\",\"CRC\"]},{\"category\":\"currency\",\"key\":\"₢\",\"mappings\":{\"default\":{\"default\":\"cruzeiro\"}},\"names\":[\"₢\"]},{\"category\":\"currency\",\"key\":\"₣\",\"mappings\":{\"default\":{\"default\":\"franc\"}},\"names\":[\"₣\"]},{\"category\":\"currency\",\"key\":\"₤\",\"mappings\":{\"default\":{\"default\":\"lira\"}},\"names\":[\"₤\"]},{\"category\":\"currency\",\"key\":\"₥\",\"mappings\":{\"default\":{\"default\":\"mill\"}},\"names\":[\"₥\"]},{\"category\":\"currency\",\"key\":\"₦\",\"mappings\":{\"default\":{\"default\":\"naira\"}},\"names\":[\"₦\",\"NGN\"]},{\"category\":\"currency\",\"key\":\"₧\",\"mappings\":{\"default\":{\"default\":\"peseta\"}},\"names\":[\"₧\"]},{\"category\":\"currency\",\"key\":\"₨\",\"mappings\":{\"default\":{\"default\":\"rupee\"}},\"names\":[\"₨\",\"₹\",\"INR\",\"NPR\",\"PKR\",\"LKR\"]},{\"category\":\"currency\",\"key\":\"₩\",\"mappings\":{\"default\":{\"default\":\"won\"}},\"names\":[\"₩\",\"￦\",\"KRW\"]},{\"category\":\"currency\",\"key\":\"₪\",\"mappings\":{\"default\":{\"default\":\"sheqel\"}},\"names\":[\"₪\"]},{\"category\":\"currency\",\"key\":\"₫\",\"mappings\":{\"default\":{\"default\":\"dong\"}},\"names\":[\"₫\"]},{\"category\":\"currency\",\"key\":\"₭\",\"mappings\":{\"default\":{\"default\":\"kip\"}},\"names\":[\"₭\"]},{\"category\":\"currency\",\"key\":\"₮\",\"mappings\":{\"default\":{\"default\":\"tugrik\"}},\"names\":[\"₮\"]},{\"category\":\"currency\",\"key\":\"₯\",\"mappings\":{\"default\":{\"default\":\"drachma\"}},\"names\":[\"₯\"]},{\"category\":\"currency\",\"key\":\"₰\",\"mappings\":{\"default\":{\"default\":\"Pfennig\"}},\"names\":[\"₰\"]},{\"category\":\"currency\",\"key\":\"₱\",\"mappings\":{\"default\":{\"default\":\"peso\"}},\"names\":[\"₱\"]},{\"category\":\"currency\",\"key\":\"₲\",\"mappings\":{\"default\":{\"default\":\"guaranis\"}},\"names\":[\"₲\"]},{\"category\":\"currency\",\"key\":\"₳\",\"mappings\":{\"default\":{\"default\":\"austral\"}},\"names\":[\"₳\"]},{\"category\":\"currency\",\"key\":\"₴\",\"mappings\":{\"default\":{\"default\":\"hryvnia\"}},\"names\":[\"₴\",\"UAH\"]},{\"category\":\"currency\",\"key\":\"₵\",\"mappings\":{\"default\":{\"default\":\"cedis\"}},\"names\":[\"₵\",\"GHS\"]},{\"category\":\"currency\",\"key\":\"₶\",\"mappings\":{\"default\":{\"default\":\"livre tournois\"}},\"names\":[\"₶\"]},{\"category\":\"currency\",\"key\":\"₷\",\"mappings\":{\"default\":{\"default\":\"spesmilo\"}},\"names\":[\"₷\"]},{\"category\":\"currency\",\"key\":\"₸\",\"mappings\":{\"default\":{\"default\":\"tenge\"}},\"names\":[\"₸\",\"KZT\"]},{\"category\":\"currency\",\"key\":\"₺\",\"mappings\":{\"default\":{\"default\":\"turkish lira\"}},\"names\":[\"₺\",\"TRY\"]},{\"category\":\"currency\",\"key\":\"元\",\"mappings\":{\"default\":{\"default\":\"yuan\"}},\"names\":[\"元\"]},{\"category\":\"currency\",\"key\":\"¢\",\"mappings\":{\"default\":{\"default\":\"cent\"}},\"names\":[\"￠\",\"¢\"]}]\n,\n\"en/units/energy.js\": \n[{\"locale\":\"en\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"watt\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt hour\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"joule\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ampere\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"volt\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"microohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"en/units/length.js\": \n[{\"locale\":\"en\"},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"foot\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"inch\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"mile\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"yard\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"link\"}},\"key\":\"link\",\"names\":[\"li\",\"li.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"rod\"}},\"key\":\"rod\",\"names\":[\"rd\",\"rd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"chain\"}},\"key\":\"chain\",\"names\":[\"ch\",\"ch.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"furlong\"}},\"key\":\"furlong\",\"names\":[\"fur\",\"fur.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"nautical mile\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"millimeter\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"centimeter\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"meter\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]}]\n,\n\"en/units/memory.js\": \n[{\"locale\":\"en\"},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"bit\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"byte\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"en/units/other.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"dozen\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"en/units/speed.js\": \n[{\"locale\":\"en\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"knot\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"miles per hour\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"revolutions per minute\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"kilometers per hour\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"en/units/temperature.js\": \n[{\"locale\":\"en\"},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Celsius\",\"alternative\":\"Centigrade\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"en/units/time.js\": \n[{\"locale\":\"en\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"nanosecond\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"microsecond\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"millisecond\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"second\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"hour\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"en/units/volume.js\": \n[{\"locale\":\"en\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic inch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic foot\",\"plural\":\"cubic feet\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic yard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"barrel\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"gallon\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"pint\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"quart\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid dram\"}},\"key\":\"fluid dram\",\"names\":[\"fl dr\",\"fl. dr.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"tablespoon\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"teaspoon\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cup\"}},\"key\":\"cup\",\"names\":[\"cp\",\"cp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic centimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"en/units/weight.js\": \n[{\"locale\":\"en\"},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"dram\"}},\"key\":\"dram\",\"names\":[\"dr\",\"dr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"stone\"}},\"key\":\"st\",\"names\":[\"st\",\"st.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"quarter\"}},\"key\":\"qtr\",\"names\":[\"qtr\",\"qtr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"hundredweight\"}},\"key\":\"cwt\",\"names\":[\"cwt\",\"cwt.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"gram\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"kilogram\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"microgram\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"milligram\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ton\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/es.js",
    "content": "{\n\"es/functions/algebra.js\": \n[{\"locale\":\"es\"},{\"key\":\"deg\",\"names\":[\"deg\"],\"mappings\":{\"default\":{\"default\":\"grados\"}},\"category\":\"Algebra\"},{\"key\":\"det\",\"names\":[\"det\"],\"mappings\":{\"default\":{\"default\":\"determinante\"}},\"category\":\"Algebra\"},{\"key\":\"dim\",\"names\":[\"dim\"],\"mappings\":{\"default\":{\"default\":\"dimensión\"}},\"category\":\"Algebra\"},{\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"],\"mappings\":{\"default\":{\"default\":\"homomorfismo\"}},\"category\":\"Algebra\"},{\"key\":\"ker\",\"names\":[\"ker\"],\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"category\":\"Algebra\"},{\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"],\"mappings\":{\"default\":{\"default\":\"traza\"}},\"category\":\"Algebra\"}]\n,\n\"es/functions/elementary.js\": \n[{\"locale\":\"es\"},{\"key\":\"log\",\"names\":[\"log\"],\"mappings\":{\"default\":{\"default\":\"logaritmo\"}},\"category\":\"Logarithm\"},{\"key\":\"ln\",\"names\":[\"ln\"],\"mappings\":{\"default\":{\"default\":\"logaritmo neperiano\"}},\"category\":\"Logarithm\"},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logaritmo base 10\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponente\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"mcd\",\"MCD\"],\"mappings\":{\"default\":{\"default\":\"MCD\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"mcm\",\"MCM\"],\"mappings\":{\"default\":{\"default\":\"mcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argumento\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"parte imaginaria\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"residuo\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"extremo inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"names\":[\"lim\"],\"mappings\":{\"default\":{\"default\":\"límite\"}},\"category\":\"Limits\"},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"máximo\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"mínimo\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"superior\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"límite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"límite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"límite directo\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"límite inverso\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"módulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilidad\"}},\"category\":\"Probability\"}]\n,\n\"es/functions/hyperbolic.js\": \n[{\"locale\":\"es\"},{\"key\":\"cosh\",\"names\":[\"cosh\"],\"mappings\":{\"default\":{\"default\":\"coseno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"coth\",\"names\":[\"coth\"],\"mappings\":{\"default\":{\"default\":\"cotangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"csch\",\"names\":[\"csch\"],\"mappings\":{\"default\":{\"default\":\"cosecante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sech\",\"names\":[\"sech\"],\"mappings\":{\"default\":{\"default\":\"secante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sinh\",\"names\":[\"sinh\"],\"mappings\":{\"default\":{\"default\":\"seno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"tanh\",\"names\":[\"tanh\"],\"mappings\":{\"default\":{\"default\":\"tangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"],\"mappings\":{\"default\":{\"default\":\"area coseno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"],\"mappings\":{\"default\":{\"default\":\"area cotangente hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"],\"mappings\":{\"default\":{\"default\":\"area cosecante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"],\"mappings\":{\"default\":{\"default\":\"area secante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"],\"mappings\":{\"default\":{\"default\":\"area seno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"],\"mappings\":{\"default\":{\"default\":\"area tangente hiperbólica\"}},\"category\":\"Area\"}]\n,\n\"es/functions/trigonometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"],\"mappings\":{\"default\":{\"default\":\"coseno\"}},\"category\":\"Trigonometric\"},{\"key\":\"cot\",\"names\":[\"cot\"],\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"csc\",\"names\":[\"csc\"],\"mappings\":{\"default\":{\"default\":\"cosecante\"}},\"category\":\"Trigonometric\"},{\"key\":\"sec\",\"names\":[\"sec\"],\"mappings\":{\"default\":{\"default\":\"secant\"}},\"category\":\"Trigonometric\"},{\"key\":\"sin\",\"names\":[\"sin\",\"sine\",\"sen\"],\"mappings\":{\"default\":{\"default\":\"seno\"}},\"category\":\"Trigonometric\"},{\"key\":\"tan\",\"names\":[\"tan\"],\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"arccos\",\"names\":[\"arccos\"],\"mappings\":{\"default\":{\"default\":\"arco coseno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccot\",\"names\":[\"arccot\"],\"mappings\":{\"default\":{\"default\":\"arco cotangente\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccsc\",\"names\":[\"arccsc\"],\"mappings\":{\"default\":{\"default\":\"arco cosecante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsec\",\"names\":[\"arcsec\"],\"mappings\":{\"default\":{\"default\":\"arco secante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsin\",\"names\":[\"arcsin\"],\"mappings\":{\"default\":{\"default\":\"arco seno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arctan\",\"names\":[\"arctan\"],\"mappings\":{\"default\":{\"default\":\"arco tangente\"}},\"category\":\"Cyclometric\"}]\n,\n\"es/symbols/digits_rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cuadrado\"},\"mathspeak\":{\"default\":\"al cuadrado\"},\"clearspeak\":{\"default\":\"al cuadrado\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cubo\"},\"mathspeak\":{\"default\":\"al cubo\"},\"clearspeak\":{\"default\":\"al cubo\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un cuarto\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un medio\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"tres cuartos\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Séptimo\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Noveno\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Décimo\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Tercero\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos tercios\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction One Fifth\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos quintos\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres quintos\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cuatro quintos\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Sexto\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"Vulgar fracción cinco sextos\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Octavo\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres octavos\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cinco octavos\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar siete octavos\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Numerador de fracciones uno\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction Zero Thirds\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"Número diez en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"Número veinte en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"Número circundado treinta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"Número circundado Cuarenta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"Círculo número cincuenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"Círculo número sesenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"Número setenta en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"Círculo número ochenta en cuadrado negro\"}}}]\n,\n\"es/symbols/greek-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"es/symbols/greek-scripts.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"pequeño mayúscula gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscripción pequeña beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subíndice pequeña gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subíndice rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subíndice phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscripción chi\"}}}]\n,\n\"es/symbols/greek-symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"símbolo beta\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"símbolo kai griego\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"épsilon invertido\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Matemática Bold Capital Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"Matemática negrita pequeño digamma\"}}}]\n,\n\"es/symbols/hebrew_letters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bet\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guímel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dálet\"}},\"category\":\"Lo\"}]\n,\n\"es/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a con punto arriba y macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo y macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a con ring above y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o con Dot Above y Macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c con cedilla y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e con cedilla y breve\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i con diéresis y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y acute\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o con tilde y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s con agudo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s con carón y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u con tilde y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u con macrón y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a con breve y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a con breve y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a con breve y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a con breve y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a con breve y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o with horn and acute\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o with horn and grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o with horn and hook above\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o with horn and tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o con cuerno y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y punto debajo\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"es\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barrada\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d con barra\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h con guión\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l con guión\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t con guión\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b con línea\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda tachada\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z con línea\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"parada glotal invertida con línea\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g con línea\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o con línea y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"pequeña e con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y con trazo\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo y gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"parada glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"parada invertida glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"de lado O con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"larga s con trazo diagonal\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"pequeña s larga con trazo alto\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta convertido\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s larga con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta pequeña latina\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s larga\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b con barra encima\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tono seis\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c con gancho\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d con barra encima\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f con gancho\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k con gancho\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l con barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n con pierna derecha larga\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o con cuerno\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"dos tonos\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter invertido Esh bucle\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t con palatal gancho\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u con horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh invertido\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh con cola\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tono cinco\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz con acento\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae con macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh con acento\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e convertido\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae con acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s con cola cruzada\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z con cola swash\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q con cola de gancho\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"convertida en una\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alfa minúscula latina\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"convertida en alfa\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"abierta o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d con cola\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"invertida E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e abierta\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina invertida E abierta con gancho\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"cerrada invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"escritura latina de letras pequeñas G\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"cuerno de carnero de letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"girada h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"pequeña letra latina Heng con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"latín letra minúscula Iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l con cinturón\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"letra L latina pequeña con gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"girada m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"vuelta M con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n con gancho izquierdo\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"letra minúscula omega\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"latin Small Letter Closed Omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"vuelta r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"vuelta R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"vuelta R con gancho\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"R con cola\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"invertida R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"S con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña en cuclillas invertida Esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"Esh minúscula latina con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"vuelta t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"T con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"Letra de letra pequeña latina U\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"Upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"V con gancho\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"convertida V\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"girada w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"vuelta y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"Z con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"faríngea con voz fricativa\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertida parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"estirada c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"Carta Bilabial Click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"cerrada abierta e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"vuelta k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q con gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Dz Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Tc Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percusion bilabial\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"de percusión bidental\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"vuelta ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"convertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"convertida i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"de lado O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"de lado abierto O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"vuelta oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"mitad superior O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"Letra latina, letra inferior, mitad inferior O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"hacia los lados U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"de lado diaeresizada U\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"girada hacia los lados M\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"Carta latina expresada espirante laríngeo\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"B con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"D con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"F con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"M con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"N con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"P con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"R con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo y tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"S con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"T con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z con tilde media\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"girada g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th con tachado\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"B con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"D con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"F con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"G con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"K con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"L con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"M con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"N con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"P con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"R con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"S con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina Esh con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"V con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"X con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"Z con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"Alfa latina pequeña letra con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"D con gancho y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"pequeña E con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"E Pequeña Open con Gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"E abierta invertido con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"I con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"pequeña latina Open O con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"Esh de letra pequeña latina con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"U con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con gancho retroflex\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n precedida por apóstrofe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a aguda\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a con anillo\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"eñe\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o aguda\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"Y aguda\",\"defaultMP\":\"ye aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y diéresis\",\"defaultMP\":\"ye diéresis\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a barra\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a con breve\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c con carón\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d con carón\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e con breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e con carón\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g con breve\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g con cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i con tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i con breve\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sin punto\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l con agudo\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l con carón\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l con punto mediano\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n con carón\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o con breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r con carón\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s con agudo\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s con carón\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t con carón\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u con tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u barra\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u con breve\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z con agudo\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z con punto\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z con carón\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k con acento\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j con acento\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g con agudo\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n con grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i con Breve invertida\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r con doble sepulcro\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h con caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"con un punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e con cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o con punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y con Macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"s in punto j\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a con anillo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g con macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h con breve debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u con diéresis debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w con grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a con medio derecho de anillo\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y con grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y con tilde\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combinando a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combinando e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combinando i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combinando o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combinando u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combinando c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combinando d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combinando h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combinando m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combinando r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combinando t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combinando v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combinando x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subíndice i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subíndice r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subíndice u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subíndice latino letra pequeña V\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combinando r abajo\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combinando letra minúscula en latín, aplanado, abierto arriba\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combinando ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combinando ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combinando av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combinando Letra Pequeña Latina C Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combinando insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combinando la eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combinando g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combinando k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combinando l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combinando n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combinando s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combinando larga s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combinando z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superíndice i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superíndice n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subíndice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subíndice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subíndice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subíndice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subíndice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subíndice h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subíndice k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subíndice l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subíndice m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subíndice n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subíndice p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subíndice s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subíndice t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subíndice j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"concha de tortuga con corchetes mayúscula S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"cruzada negativa cuadrada Mayúscula P\"}}}]\n,\n\"es/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto arriba y macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo y macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ring above y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con diaéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con dot above y macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con cedilla y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"mayúscula E with cedilla and breve\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con diéresis y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y acute\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con macrón y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and acute\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and grave\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and hook above\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con cuerno y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y punto debajo\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A grave\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"mayúscula A aguda\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"mayúscula C cedilla\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E grave\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"mayúscula E aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"mayúscula E diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"mayúscula I grave\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula I aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"mayúscula I acento circumflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula Ñ\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O grave\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula O aguda\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U grave\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U aguda\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y aguda\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"mayúscula A barra\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con carón\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con carón\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"mayúscula E barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con carón\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con breve\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con breve\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"mayúscula J con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con agudo\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con carón\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto mediano\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"mayúscula n con carón\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble acento agudo \"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con carón\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con carón\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U barra\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con anillo arriba\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble acento agudo\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con agudo\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con carón\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con acento\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"mayúscula con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"mayúscula a con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"mayúscula con un punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Mayúscula Y con Macron\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"mayúscula F con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con breve debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con grave\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z with line below\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con grave\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con tilde\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/math_angles.js\": \n[{\"locale\":\"es\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con arco\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con flecha zigzag hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"ángulo sólido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Ángulo medido de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Variante de ángulo recto con cuadrado\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"ángulo recto medido con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Ángulo con S dentro\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Ángulo agudo\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Ángulo esférico de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Apertura de ángulo esférico\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Ángulo de giro\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Ángulo invertido\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"ángulo con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"ángulo inverso con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"category\":\"Sm\"}]\n,\n\"es/symbols/math_arrows.js\": \n[{\"locale\":\"es\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flecha derecha\",\"defaultMP\":\"flecha\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flecha abajo\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda tachada\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con doble punta\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flecha derechaa con doble punta\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con cola\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con cola\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda de barra\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"barra con flecha\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flecha derecha de barra\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flecha con barra\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo con base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con gancho\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flecha con gancho\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con lazo\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flecha con lazo\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda y derecha\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flecha zigzag abajo\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha desde esquina inferior\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo desde esquina izquierda\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flecha noroeste a barra larga\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra arriba de flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha arriba de flecha izquierda\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a la izquierda de flecha abajo\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda arriba de flecha derecha\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"dos flechas\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda tachada\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"flecha doble tachada\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"flecha doble\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda-derecha\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"flecha doble vertical\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia noroeste\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia nordeste\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudeste\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudoeste\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"flecha triple izquierda\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"flecha triple\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flecha vacía\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba desde barra\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba en el pedestal\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra vertical\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca en pedestal\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia la derecha de la pared\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flecha del noroeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flecha del sudeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha blanca\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con círculo pequeño\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to the right of downwards arrow\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con doble trazo vertical\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con punta vacía\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flecha electrica\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"flecha arriba entre dos barras horizontales\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"círculo roto con la flecha del noroeste\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cabeza ancha\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste pesada\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flecha pesada del noreste\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"punto de dibujo Flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con punta redonda redonda\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo pesado\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"triángulo punteado hacia la flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo de trazo pesado\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha negra\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"punta de flecha tridimensional hacia la derecha hacia arriba\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"punta de flecha hacia la derecha con iluminación inferior en tres dimensiones\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"punta de flecha negra hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia abajo y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia arriba y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"squat Black Arrow hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de color negro cóncava puntiaguda pesada\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"sombra derecha flecha blanca hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"sombra hacia la izquierda blanca a la izquierda\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"back-Tilted Shadowed White Right Arrow\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca sombreada inclinada hacia delante\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada inferior, sombreada a la derecha, blanca\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca superior derecha sombreada pesada\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"con muesca, flecha derecha hacia abajo, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"con muescas, flecha derecha hacia arriba, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"círculo pesado blanco flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas blancas\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental de plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flecha derecha pesada con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"lágrima-flecha de flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de lágrima pesada\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña pesada\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"open-Outlined Outward Arrow\"}}},{\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flecha con más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda, desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"flecha larga en zigzag\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"izquierda Derecha Doble Flecha con Trazo Vertical\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow from bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la derecha de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"flecha triple hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flecha hacia abajo\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"leftwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"rightwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"leftwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"rightwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"rightwards arrow with dotted stem\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to bar\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"downwards arrow to bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la cola con doble trazo vertical\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow with tail\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con doble movimiento vertical\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"cola de flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante relleno a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flechas del noroeste y sureste\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flecha noreste y sudoeste\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flechas a noroeste y nordeste\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flechas a nordeste y sudeste\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flechas a suddeste y sudoeste\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flechas a sudoeste y noroeste\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste Cruzando Flecha Noreste\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing South East Arrow\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"caída en diagonal que cruza la flecha noreste\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"creciente Cruce de la Cruz del Sureste de la Flecha\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing North West Arrow\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"north West Arrow Crossing North East Arrow\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flecha que apunta hacia la derecha y luego curva hacia arriba\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha que gira hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la derecha en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la izquierda en sentido antihorario\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arco superior flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arco inferior flecha hacia la izquierda\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"giro negativo\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"giro positivo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha semicircular inferior derecha\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"flecha inferior izquierda semicircular en sentido antihorario\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en sentido contrario a las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en el sentido de las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre la flecha corta hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre la flecha corta hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"flecha corta hacia la derecha arriba flecha hacia la izquierda\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flecha con más suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con más abajo\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de X\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de círculo\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"dos cabezas de flecha hacia arriba desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flecha con igual\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flecha con tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"flecha con casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de menos de\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flecha con mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con incluido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través del subconjunto\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con contiene\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha inversa\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a través del círculo\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"diamante negro con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"círculo negro con flecha hacia abajo\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"integral con flecha hacia la izquierda con garfio\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noreste\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del sureste\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noreste\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flecha negra sur este\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con círculo pequeño\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con un círculo más\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"flecha de flecha larga hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flecha triple de dos cabezas hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con tallo punteado\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"ola flecha apuntando directamente a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"signo de igual flecha arriba a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de mayor-que\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"operador de tilde sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flecha ascendente de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flecha de medio ancho hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo de medio ancho\"}}}]\n,\n\"es/symbols/math_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"p de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra pi\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra gamma\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Gamma\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Pi\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra suma de n-ary\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"mayúscula D\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra cursiva j\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto j\"}},\"key\":\"1D6A5\"}]\n,\n\"es/symbols/math_delimiters.js\": \n[{\"locale\":\"es\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo\",\"defaultMP\":\"paréntesis\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho\",\"defaultMP\":\"cierra paréntesis\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"corchete izquierdo\",\"defaultMP\":\"abre corchetes\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho\",\"defaultMP\":\"cierra corchetes\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"llave izquierda\",\"defaultMP\":\"abre llaves\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"llaves derecha\",\"defaultMP\":\"cierra llaves\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo con pluma\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho con pluma\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"corte inferior derecho\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"corte inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"corte superior derecho \"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"corte superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"ángulo superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"ángulo superior derecho\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"mitad superior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"mitad inferior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular derecho\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"extensión del soporte cuadrado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte cuadrado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"pedazo medio rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"soporte izquierdo rizado gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"pedazo medio de soporte rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior derecha rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"extensión integral\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"extensión de línea horizontal\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"izquierda arriba o derecho debajo sección llave\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"derecha arriba o izquierdo debajo sección llave\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"suma superior\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"parte inferior de la suma\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"corchete superior\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"corchete inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado inferior sobre soporte cuadrado superior\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"parte inferior del símbolo radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical derecha\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"corchete rizado superior\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"corchete rizado inferior\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"corchete superior en tortuga\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"corchete inferior en tortuga\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"ornamento de paréntesis izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"adorno de paréntesis medio derecho\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis izquierdo aplanado medio\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis derecho medio aplanado\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en el ángulo que apunta hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en ángulo recto que apunta hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte de concha de tortuga izquierda ligera\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"ornamento de corchete derecho tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado derecho medio\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador izquierdo de bolsa de s-formó\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador derecho de bolsa de s-formó\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"corchete vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío derecho \"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano derecho\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"soporte rizado blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"derecha rizado blanco soporte\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"left white paren\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"right white paren\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"notación Z izquierda soporte de imagen\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"corchete de imagen derecha de notación Z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga negra izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"abrazadera de concha de tortuga negra derecha\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"valla izquierda ondulada\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"valla derecha ondulada\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo orientada hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"soporte superior izquierdo superior\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"medio soporte superior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"medio soporte inferior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"soporte U lateral izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"lado derecho U soporte\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"doble paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"paréntesis doble derecho\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo recto\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble derecho\",\"defaultMP\":\"cierra paréntesis angular doble\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"soporte de la esquina izquierda\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Izquierdo Negro\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Negro Derecho\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"soporte de caparazón de tortuga blanca izquierda\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga blanca derecha\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"corchete vacío\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\",\"defaultMP\":\"cierra corchete vacío\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"comilla doble invertida\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"comillas bajas dobles\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo adornado\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho adornado\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco vertical derecho\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"llave superior\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"llave inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro derecho vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte vertical doble ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte de ángulo recto doble vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular superior\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina blanco vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha blanca\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical derecho\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"pequeño paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"corchete Rizado Izquierdo Pequeño\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"corchete derecho rizado pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"soporte de concha pequeña tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"pequeño corchete derecho de concha de tortuga\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"corchete rizado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"corchete de esquina izquierda de medio ancho\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha de medio ancho\"}}}]\n,\n\"es/symbols/math_geometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas horizontales\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Vertical\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Ligero Cuadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Luz Cuadruple Tablero Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Vertical\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Abajo Ligero y Derecho Pesado\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos ligeros\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​abajo y derecha\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia abajo y hacia la izquierda\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta Pesadas y Ligeras\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y derechos\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta livianos y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesado y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia arriba y hacia la izquierda\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesados ​​y rectos hacia abajo\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos arriba ligeros\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y rectas ligeras\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y rectos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba livianos y rectos para abajo pesados\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y derechas\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y izquierdo pesado\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Pesado y Izquierda Abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros e izquierdos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y Izquierda Abajo Pesado\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales e izquierdas\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesados ​​y derecha abajo luz\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, derecha, pesada y izquierda abajo, luz\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja de luz derecha y izquierda abajo pesado\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja izquierda ligera y derecha abajo pesada\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesada y derecha arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, livianos y a la izquierda, pesados\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Arriba Pesada\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores sencillos\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Pesada y Derecha Vertical Luz\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Vertical Ligera y Horizontal Pesada\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba pesados ​​y abajo luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hacia abajo pesados ​​y hacia arriba luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y horizontales ligeras\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Arriba Pesada y Derecha abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha arriba pesada y izquierda abajo luz\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, izquierda abajo, pesada y derecha arriba, ligera\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja derecha abajo pesada y izquierda arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y ascendentes horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y para abajo horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, ligeros y a la izquierda, verticales, pesados\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Vertical Pesada\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y horizontales\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Vertical\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha doble\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha doble\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo con separador doble\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho con separador doble\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"delimitador superior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"delimitador superior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical sencillo y horizontal doble\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical doble y horizontal sencillo\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores dobles\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco abajo y derecha\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco hacia abajo y hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco arriba y a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos de luz arco arriba y derecha\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior derecha a inferior izquierda\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior izquierda a inferior derecha\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz diagonal cruz\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas se iluminan\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos pesado derecho\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Ligero Izquierda y Pesada Derecha\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas iluminados y pesados\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Izquierda y Luz Derecha\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y ligeros\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"bloque mitad superior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"bajar un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto inferior\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos más bajo\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"bloque mitad inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"bloque inferior de cinco octavos\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos más bajo\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"lower Seven Eighths Block\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"bloque\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"bloque de siete octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"bloque de cinco octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"media cuadra izquierda\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"izquierda un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"media cuadra derecha\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"sombra ligera\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"sombra media\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"sombra intensa\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"upper One Eighth Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"a la derecha un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo e inferior derecho\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con esquinas redondeadas\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco que contiene cuadrado pequeño negro\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno horizontal\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno vertical\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado ortogonal\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la esquina superior izquierda a la derecha inferior\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la parte superior derecha hacia abajo izquierda Relleno\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado diagonal\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectángulo negro\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectángulo\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectángulo relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"rectángulo vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"paralelogramo negro\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"paralelogramo\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"indicador de apuntar hacia la derecha negro\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"puntero de apuntar hacia la derecha blanco\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"puntero relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"puntero señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"diamante\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"diamante vacío contiene diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"ojo de pez\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"rombo\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"círculo vacío\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"círculo punteado\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"círculo con relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"blanco\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"círculo relleno\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad inferior rellena\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad superior rellena\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"semicírculo izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"semicírculo derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"bullet inversa\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"círculo vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arco superior izquierda\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arco superior derecha\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arco inferior derecha\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arco inferior izquierda\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"semicírculo inferior\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"cuadrado con bisectriz\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triángulo vacío con punto\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"círculo grande\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior derecho\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha superior diagonal negra\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad diagonal izquierda inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"diamante con Mitad Izquierda Negro\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad derecha negra\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"cuadrado punteado\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"cuadrado grande negro\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"gran Plaza Blanca\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentágono negro\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexágono negro\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagonal negro horizontal\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"circulo grande negro\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"diamante Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"diamante blanco medio\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"lozenge Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"pastilla blanca mediana\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"pequeño diamante negro\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal negro\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal blanco\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Negro\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Blanco\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"estrella media vacía\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña rellena\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentágono negro que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"círculo grande pesado\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"óvalo pesado con interior oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"círculo pesado con círculo dentro\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"círculo pesado\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"saltire en círculo pesado\"}}}]\n,\n\"es/symbols/math_harpoons.js\": \n[{\"locale\":\"es\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"arpón izquierdo arriba de arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"arpón derecho arriba de arpón izquierdo\"}},\"category\":\"So\"},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha abajo arpón\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha arriba arpón\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"arriba barb izquierda abajo barb derecha arpón\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha arriba arpón\"}}},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha abajo arpón\"}}},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda a barra\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con la barra izquierda a la barra\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba de la barra\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa arriba del bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con barra izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas arriba arriba arpón a la izquierda con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón ascendente con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la derecha con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia abajo con lengüeta a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba arriba arpón a la derecha con púa arriba\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo arriba arpón a la derecha con púa abajo\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la izquierda con púas arriba\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo arriba arpón a la izquierda con púa abajo\"}}},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la izquierda con barra\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la derecha con barra\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón hacia abajo con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia arriba con pica a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"cola de pescado izquierda\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"cola de pescado derecha\"}}},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"barra con doble gancho\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"cola de pez abajo\"}}}]\n,\n\"es/symbols/math_non_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"h barra\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B símbolo de barra\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"signo de número\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"derechos de autor de sonido\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"receta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"respuesta\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"marca de servicio\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"señal de telefono\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versículo\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohmio invertido\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"grados kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Símbolo estimado\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"mayúscula F invertida\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"fuente de información\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"capital rotado Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"signo de fax\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"invertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"convertido en sans serif mayúscula Y\"}}}]\n,\n\"es/symbols/math_symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorial\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"comillas\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"almuhadilla\",\"defaultMP\":\"signo de número\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dólar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"porciento\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prima\",\"defaultMP\":\"apóstrofo\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barra oblicua\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"dos puntos\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"punto y coma\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"menor que\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"igual\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"mayor que\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"interrogación derecho\",\"defaultMP\":\"cierra interrogación\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arroba\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barra inversa\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circunflejo\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"subrayado\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"admiración izquierdo\",\"defaultMP\":\"abre admiración\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centavo\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"libra esterlina\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"moneda\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barra vertical partida\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"sección\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diéresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"ordinal femenino\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares izquierda\",\"defaultMP\":\"abre comillas angulares\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"negación\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"barra\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"grado\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"más menos\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"párrafo\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"punto medio\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"ordinal masculino\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares derecha\",\"defaultMP\":\"cierra comillas angulares\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"interrogación izquierdo\",\"defaultMP\":\"abre interrogación\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"dividido\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"punto en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"anillo en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"doble acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"guión no rompible\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"figura Dash\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"en raya\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"em raya\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barra horizontal\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"línea baja doble\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"comilla izquierda\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"marca de comillas simple con inversión alta-9\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"doble comilla\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"doble comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"doble comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"doble alto-invertido-9 comillas\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"daga\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"doble daga\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"bala triangular\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"líder de un punto\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"dos puntos líder\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"punto de separación\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"tanto por millar\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"tanto por diez mil\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prima\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"tercera\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"doble acento grave\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"prime Prime invertido\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"signo de intercalación\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"comillas izquierda\",\"defaultMP\":\"abre comillas\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"comillas derecha\",\"defaultMP\":\"cierra comillas\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marca de referencia\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"doble signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"barra superior\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"undertie\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"ligadura\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"punto de inserción\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"asterismo\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"guión bala\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barra de fracción\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"doble signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"pregunta Signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de exclamación\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"signo de Pilcrow invertido\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la izquierda\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la derecha\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"bajo asterisco\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"punto y coma invertido\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"cierre superior\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"dos asteriscos alineados verticalmente\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"signo de menos comercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"swung Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"ropa interior invertida\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"signo de puntuación de la flor\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"puntuación de tres puntos\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"cuarta\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"puntuación de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"puntuación de cinco puntos\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"puntuación de dos puntos\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"marca de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"cruz punteada\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"cuatro puntos verticales\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"superscript Plus Sign\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"superíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"superscript Equals Sign\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo superíndice\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho superíndice\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice más\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"subíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice es igual\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"subíndice paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"subíndice de paréntesis derecho\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"línea de propiedad\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"ampersand convertido\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"por signo\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"torneado pequeño f\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"para todo\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complementario\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"no existe\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incremento\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"no perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"no comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"fin de demostración\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"producto\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sumatorio\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"menos más\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"punto más\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"barra de división\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"asterisco\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"raíz\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"raíz cúbica\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"raíz cuarta\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proporcional a\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infinito\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"ángulo recto\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"ángulo medido\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"ángulo esférico\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"divide a\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"no divide a\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"no paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"integral doble\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"integral triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"integral de contorno\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"integral de superficie\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"integral de volumen\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"por lo tanto\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"porque\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"razón\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proporción\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"punto menos\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"exceso\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proporción geométrica\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homotecia\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"tilde invertido\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s horizontal invertida\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoide\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"producto de guirnalda\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"no tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"menos tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"no asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"aproximado pero no igual a\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"aproximado\",\"defaultMP\":\"casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"no es casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"igual o casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"todo igual a\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geométricamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"se acerca al límite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geométricamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a o imagen de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"imagen de o aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"dos puntos igual\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"igual dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"igual incluyendo anillo\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"igual anillo a\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"corresponde a\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estima a\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"equiangular con\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"igual con estrella\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"igual con delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"igual por definición a\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"medido por\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"igual con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"no es igual a\",\"defaultMP\":\"distinto de\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"no es idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"estrictamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"no menor que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"no mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"no menor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"no mayor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"menor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"mayor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"no menor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"no mayor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"no menor ni mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"no mayor ni menor que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"precede a\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"sigue a\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"precede o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"sigue o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"no precede a\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"no sigue a\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"no incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"no contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"incluido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"no incluido ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"no contiene ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"incluido estrictamente en\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"contiene estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"producto de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"unión de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"por en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"anillo en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"asterisco en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"igual en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"más en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"menos en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"veces en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"punto en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"perpendicular invertida\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"afirmación\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modela\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"verdadero\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"triple barra vertical torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"no prueba\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"falso\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"no obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho negada\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"precede respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"sigue respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"imagen de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multifunción\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matriz hermitiana conjugada\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"interpola\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"o excluyente\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"no y\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"no o\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triángulo rectángulo\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"operador diamante\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"estrella\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"dividido por\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"moño\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"factor normal izquierdo producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"factor normal derecho producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto derecho\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"tilde invertida igual a\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"o rizada\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"y rizada\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doble incluido\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doble contiene\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doble intersección\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doble unión\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"bieldo\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"paralela o igual a\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"menor igual o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"mayor igual o menor que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"no precede ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"no sigue ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"no es imagen cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"no es original cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"menor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"mayor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"precede no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"sigue no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"no subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"no es subgrupo normal ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos verticales\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos altos\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales subiendo\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales bajando\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"pertenece con trazo horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra vertical al fin de raya horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"pertenece en pequeño con trazo vertical\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"pertenece con punto arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"pertenece con dos trazos horizontales\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contiene con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"perteneciente con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"z anotación asociación de bolsa\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diámetro\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"casa\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"en proyectividad con\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"en perspectividad con\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"línea ondulada\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"no invertido\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastillas cuadradas\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arco\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segmento\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"sector\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"signo más pesado\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"signo menos pesado\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"signo de la división pesada\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"bucle rizado\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"doble bucle rizado\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"triángulo encerrando triángulo\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"atrás tajo antes de subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sobreconjunto antes de tajo\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barra vertical con golpe horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonal matemático de levantamiento\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"división larga\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente matemática\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico Y\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico O\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"diamante blanco con punto centrado\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"y con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"elemento de apertura hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"izquierdo exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"derecho exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"lleno exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"izquierdo y derecho doble torniquete\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"doble T horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multifunción por la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"t horizontal derecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"t horizontal izquierda larga\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa con círculo arriba\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"pastilla dividida por regla horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo vacío\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"cruce en diagonal Cruce en diagonal Caída en diagonal\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente Cruce diagonal ascendente\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"delimitador de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"punto de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"tipo de notación Z Colon\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"valla punteada\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"zigzag en vertical\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío invertido\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"círculo con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"paralelas en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"círculo inverso solidus\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendicular en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"círculo dividido por barra horizontal y mitad superior dividido por barra vertical\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"x superimpresa en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"bullet vacía en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"bullet en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"menor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"mayor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"círculo con círculo a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal ascendente\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal descendente\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"asterisco cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"pequeño círculo cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"cuadrado cuadrado\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"dos cuadrados unidos\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triángulo con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triángulo con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s en triangulo\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triángulo hacia la derecha sobre triángulo hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o igual a\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Derecha Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"pajarita Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"tiempos con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"tiempos con la mitad derecha negra\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"reloj de arena blanco\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"reloj de arena negro\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infinito incompleto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"empate sobre el infinito\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"no infinito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multimapa de doble extremo\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"cuadrado con contorno contorneado\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"aumenta como\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"shuffle Product\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"igual tachado doble \"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"igual con tilde, con doble tachado\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"idéntico a con doble tachado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"termodinamica\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad izquierda negra\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad derecha negra\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"rombo relleno\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"plaza blanca con error\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"error en la Plaza Negra\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"error White Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"error Black Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con error\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"círculo negro con barras de error\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"operador de Solidus Inverso\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"solidus inverso con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"sólido grande\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"sólido inverso grande\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"doble Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"minúsculo\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"operador de puntos circulares N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"operador N-Ary Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"operador de los tiempos en círculo de N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"operador de la unión N-Ary con punto\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"n-Ary Union Operator con Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"operador de intersecciones cuadradas N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"n-Ary Square Union Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"dos lógico y operador\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"dos lógico u operador\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"operador de N-Ary Times\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"modulo dos sumas\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"suma con Integral\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"operador integral cuádruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"integral con Doble Trazo\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"promedio Integral con Slash\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"integral en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"integral lineal para rectángulo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"integral lineal para semicírculo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"integral lineal excluyendo el polo\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"integral en torno de un punto operador\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"operador integral para cuaterniones\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"integral con Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"integral con Intersección\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"integral con union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"integral con Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"integral con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"unirse\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"operador de triángulo izquierdo grande\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composición de esquemas de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"esquema de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"proyección del esquema de notación Z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"más con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"más con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"tilde con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"más con punto inferior\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"tilde con más\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"más con 2 suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"signo más con triángulo negro\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"menos con coma\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"menos con punto inferior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos que caen\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos crecientes\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"producto vectorial\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"por con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"por con subrayado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto con fondo cerrado\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"por en círculo con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"por en anillo\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"división en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"más en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"menos en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"por en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"producto interior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"producto interior derecho\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"notación Z Composición Relacional\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersección con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"unión con signo de menos\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"unión con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersección con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersección con and\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"unión con or\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"unión sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersección sobre unión\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"unión sobre barra, sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersección sobre barra, sobre unión \"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"unión y unión\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"intersección e intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"unión cerrada\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersección cerrada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada doble\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada doble\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"unión cerrada con por\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"lógico y con punto arriba.\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"lógico o con punto arriba\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical or\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"lógica o superpuesta, lógica y\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"logical and with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"logical or with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"logical and with horizontal dash\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"logical or with horizontal dash\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble Overbar\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"logical and with underbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble barra inferior.\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"pequeño Vee con Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra.\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"notación Z Dominio Antirestricción\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"rango de notación Z Antirestricción\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"igual con punto suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"idéntico con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con triple movimiento vertical\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"tilde con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"operador de tilde con puntos crecientes\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similares menos similares\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruente con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"igual a Asterisco\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"casi igual con ángulo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual o igual a\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"igual con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"igual con más\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"igual con operador tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"igual con dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"igual doble\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"tres signos de igualdad consecutivos\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"igual entre cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"equivalente con cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"menor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"mayor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"menor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"mayor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"menor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"mayor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"menor que una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"mayores y una sola línea no son iguales a\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"menor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"mayor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"menos que arriba de la doble línea igual por encima de mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"más que arriba de la línea doble igual sobre menos que\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"menor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"menor, similar o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"menor, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"mayor, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor o menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o mayor que\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"mayor o igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o mayor que\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"equivalente o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"mayor o similar a\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similar, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similar, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"doble anidada menor que con barra inferior\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"menor que, mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"más reducido que\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"más amplio que\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"más reducido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"más amplio o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"sucede por encima de la línea de igual signo\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"precede por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"precede arriba del signo igual\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"sucede por encima del signo igual\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precede estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"sigue estrictamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"precede por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"precede arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de no casi igual a\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"precede mucho antes\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"sigue mucho después\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"subrelación de\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"contiene como subrelación a\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"incluido con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"contiene con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"incluido con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"contiene con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"incluido con punto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"contiene con punto o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"subconjunto de signo igual arriba\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"superconjunto de signo igual arriba\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"incluido aproximadamente en\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"contiene aproximadamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"subconjunto de Arriba Casi Igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"subconjunto de lo anterior no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la izquierda cuadrada\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la derecha cuadrada\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"incluido con cierre en\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"incluido el cierre o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"está incluido o contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"incluido doblemente en\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"contiene doblemente a\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"perteneciente dirigido hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcación\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"tachuela Izquierda Corta\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"tachuela corta hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendicular con s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"barra vertical Torniquete a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"barra vertical doble Torniquete izquierdo\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete izquierdo\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"barra con perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"tachuela doble\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"barra vertical con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"barra con círculo inferior\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"paralela con marca\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"paralela con tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relación binaria de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"barra vertical triple con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"operador Triple Colon\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"triple anidada menos que\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"triple anidado mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada menor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada mayor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relación Binaria Triple Sólida\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"operador de barra vertical triple grande\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"operador Doble Sólido\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca N-Ary\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para colon vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para punto y coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de exclamación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de interrogación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para elipsis horizontal vertical\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para líder vertical de dos puntos\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea vertical baja\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea baja ondulada vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo blanco\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"línea discontinua\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"centinela Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"ondulado Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"doble Ondulado Ondulado\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"línea baja discontinua\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"línea baja de línea central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"línea baja ondulada\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"comas pequeñas\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"parada completa pequeña\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"pequeño punto y coma\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"pequeño colon\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de exclamación\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"pequeño Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"signo de número pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"ampersand pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"pequeño asterisco\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"signo más pequeño\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"pequeño guión-menos\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"signo menor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"signo mayor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"signo pequeño igual\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"división entera\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de dólar\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"pequeño comercial en\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"signo de exclamación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"comillas de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"número de signo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"signo de dólar de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"ampersand de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apóstrofe de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"asterisco de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"coma de ancho completo\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"ancho de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"fullwidth Full Stop\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"sólido de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"ancho completo de colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"punto y coma de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"ancho completo menos de la señal\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"signo de igual ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"ancho completo mayor que el signo\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"comercial de ancho completo en\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"sólido inverso de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"acento circunflejo de ancho completo\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"línea baja de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"acento grave de ancho completo\"}}},{\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"signo de centavo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"signo de libra de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"fullwidth no firmar\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"ancho completo macron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"barra rota de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"signo de yen de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo ganado\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"formas de ancho medio luz vertical\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"medio ancho cuadrado negro\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"círculo blanco de medio ancho\"}}}]\n,\n\"es/symbols/math_whitespace.js\": \n[{\"locale\":\"es\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espacio\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"guión corto\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"en quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"em Quad\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"espacio Six-Per-Em\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"ancho de cero no ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"ancho de cero ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marca de izquierda a derecha\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marca de derecha a izquierda\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"separador de linea\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"separador de párrafo\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"incrustación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"incrustación de derecha a izquierda\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"formato direccional pop\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"anulación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"anulación de derecha a izquierda\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espacio estrecho sin descanso\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Cf\"},{\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibir el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activar el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nacionales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nominales\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancla de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"separador de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminador de anotación interlinear\"}}}]\n,\n\"es/symbols/other_stars.js\": \n[{\"locale\":\"es\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"símbolo exponente decimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"estrella rellena\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"estrella vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"círculo blanco medio\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"círculo negro medio\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada blanca\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"multiplicación x\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"multiplicación pesada X\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"boleta pesada X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"centro abierto de la cruz\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"pesado centro abierto cruz\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"cruz de Malta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"estrella de David\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de lágrima\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"pesado Cuatro asterisco impulsado por globo\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de club-spoked\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"estrella de cuatro puntas negra\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"estrella blanca de cuatro puntas\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"destellos\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"estrés subrayado estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"estrella blanca circulada\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"centro Abierto Estrella Negra\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"centro negro estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"contorneado negro estrella\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"estrella negra contorneada pesada\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"pinwheel Star\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"estrella blanca sombreada\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"centro abierto de asterisco\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco hablado\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas de molinete en punta\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"estrella rellena de seis puntas\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"doce estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"dieciséis asteriscos en punta\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"asterisco con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"centro abierto con asterisco con forma de lágrima\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"seis pétalos de florette en blanco y negro\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"florette negro\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"florette blanco\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"ocho Petalled Outlined Black Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"círculo abierto centro ocho estrellas señaladas\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado del molinillo de viento\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"copo de nieve\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"copo de nieve trifolio apretado\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"copo de nieve pesado de Chevron\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"brillar\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"chispa pesada\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco de hélice con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"heavy eight asterisk de hélice en forma de lágrima\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"marca de la cruz\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"círculo blanco sombreado\"}}}]\n,\n\"es/units/energy.js\": \n[{\"locale\":\"es\"},{\"key\":\"W\",\"names\":[\"W\",\"w\"],\"mappings\":{\"default\":{\"default\":\"watt\"}},\"category\":\"energy\"},{\"key\":\"kW\",\"names\":[\"kw\",\"kW\"],\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"category\":\"energy\"},{\"key\":\"mW\",\"names\":[\"mw\",\"mW\"],\"mappings\":{\"default\":{\"default\":\"miliwatt\"}},\"category\":\"energy\"},{\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"],\"mappings\":{\"default\":{\"default\":\"kilowatt hora\"}},\"category\":\"energy\"},{\"key\":\"J\",\"names\":[\"J\"],\"mappings\":{\"default\":{\"default\":\"Joule\"}},\"category\":\"energy\"},{\"key\":\"N\",\"names\":[\"N\"],\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\"},{\"key\":\"A\",\"names\":[\"A\"],\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\"},{\"key\":\"V\",\"names\":[\"V\"],\"mappings\":{\"default\":{\"default\":\"Voltio\"}},\"category\":\"energy\"},{\"key\":\"µΩ\",\"names\":[\"µΩ\"],\"mappings\":{\"default\":{\"default\":\"microohmio\"}},\"category\":\"energy\"},{\"key\":\"mΩ\",\"names\":[\"mΩ\"],\"mappings\":{\"default\":{\"default\":\"miliohmio\"}},\"category\":\"energy\"},{\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"],\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"energy\"},{\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"],\"mappings\":{\"default\":{\"default\":\"kiloohmio\"}},\"category\":\"energy\"},{\"key\":\"MΩ\",\"names\":[\"MΩ\"],\"mappings\":{\"default\":{\"default\":\"megaohmio\"}},\"category\":\"energy\"},{\"key\":\"GΩ\",\"names\":[\"GΩ\"],\"mappings\":{\"default\":{\"default\":\"gigaohmio\"}},\"category\":\"energy\"}]\n,\n\"es/units/length.js\": \n[{\"locale\":\"es\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"milímetro\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"centímetro\"}},\"category\":\"length\"},{\"key\":\"m\",\"names\":[\"m\"],\"mappings\":{\"default\":{\"default\":\"metro\"}},\"category\":\"length\"},{\"key\":\"km\",\"names\":[\"km\"],\"mappings\":{\"default\":{\"default\":\"kilómetro\"}},\"category\":\"length\"},{\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"],\"mappings\":{\"default\":{\"default\":\"pies\"}},\"category\":\"length\"},{\"key\":\"in\",\"names\":[\"in\",\"in.\"],\"mappings\":{\"default\":{\"default\":\"pulgada\"}},\"category\":\"length\"},{\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"],\"mappings\":{\"default\":{\"default\":\"milla\"}},\"category\":\"length\"},{\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"],\"mappings\":{\"default\":{\"default\":\"yarda\"}},\"category\":\"length\"},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"millas náuticas\"}},\"category\":\"length\"}]\n,\n\"es/units/memory.js\": \n[{\"locale\":\"es\"},{\"key\":\"b\",\"names\":[\"b\"],\"mappings\":{\"default\":{\"default\":\"bit\"}},\"category\":\"memory\"},{\"key\":\"B\",\"names\":[\"B\"],\"mappings\":{\"default\":{\"default\":\"byte\"}},\"category\":\"memory\"},{\"key\":\"KB\",\"names\":[\"KB\"],\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"category\":\"memory\"},{\"key\":\"MB\",\"names\":[\"MB\"],\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"category\":\"memory\"},{\"key\":\"GB\",\"names\":[\"GB\"],\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"category\":\"memory\"},{\"key\":\"TB\",\"names\":[\"TB\"],\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"category\":\"memory\"}]\n,\n\"es/units/other.js\": \n[{\"locale\":\"es\"},{\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"],\"mappings\":{\"default\":{\"default\":\"docena\"}},\"category\":\"other\"},{\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"],\"mappings\":{\"default\":{\"default\":\"al cuadrado\"}},\"category\":\"other\"},{\"key\":\"ha\",\"names\":[\"ha\"],\"mappings\":{\"default\":{\"default\":\"hectarea\"}},\"category\":\"other\"}]\n,\n\"es/units/speed.js\": \n[{\"locale\":\"es\"},{\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"],\"mappings\":{\"default\":{\"default\":\"nudo\"}},\"category\":\"speed\"},{\"key\":\"mph\",\"names\":[\"mph\"],\"mappings\":{\"default\":{\"default\":\"millas por hora\"}},\"category\":\"speed\"},{\"key\":\"rpm\",\"names\":[\"rpm\"],\"mappings\":{\"default\":{\"default\":\"revoluciones por minuto\"}},\"category\":\"speed\"},{\"key\":\"kmh\",\"names\":[\"kmh\"],\"mappings\":{\"default\":{\"default\":\"kilómetros por hora\"}},\"category\":\"speed\"}]\n,\n\"es/units/temperature.js\": \n[{\"locale\":\"es\"},{\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"],\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"category\":\"temperature\"},{\"key\":\"C\",\"names\":[\"C\",\"°C\"],\"mappings\":{\"default\":{\"default\":\"centígrados\"}},\"category\":\"temperature\"},{\"key\":\"K\",\"names\":[\"K\",\"°K\"],\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\"}]\n,\n\"es/units/time.js\": \n[{\"locale\":\"es\"},{\"key\":\"ns\",\"names\":[\"ns\"],\"mappings\":{\"default\":{\"default\":\"nanosegundos\"}},\"category\":\"time\"},{\"key\":\"µs\",\"names\":[\"µs\"],\"mappings\":{\"default\":{\"default\":\"microsegundos\"}},\"category\":\"time\"},{\"key\":\"ms\",\"names\":[\"ms\"],\"mappings\":{\"default\":{\"default\":\"milisegundos\"}},\"category\":\"time\"},{\"key\":\"s\",\"names\":[\"s\"],\"mappings\":{\"default\":{\"default\":\"segundos\"}},\"category\":\"time\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minutos\"}},\"category\":\"time\"},{\"key\":\"h\",\"names\":[\"h\",\"hr\"],\"mappings\":{\"default\":{\"default\":\"hora\"}},\"category\":\"time\"}]\n,\n\"es/units/volume.js\": \n[{\"locale\":\"es\"},{\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"],\"mappings\":{\"default\":{\"default\":\"barrile\"}},\"category\":\"volume\"},{\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"],\"mappings\":{\"default\":{\"default\":\"cúbico\"}},\"category\":\"volume\"},{\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"],\"mappings\":{\"default\":{\"default\":\"onzas líquidas\"}},\"category\":\"volume\"},{\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"],\"mappings\":{\"default\":{\"default\":\"galone\"}},\"category\":\"volume\"},{\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"],\"mappings\":{\"default\":{\"default\":\"pinta\"}},\"category\":\"volume\"},{\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"],\"mappings\":{\"default\":{\"default\":\"quart\"}},\"category\":\"volume\"},{\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"],\"mappings\":{\"default\":{\"default\":\"cuchara\"}},\"category\":\"volume\"},{\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"],\"mappings\":{\"default\":{\"default\":\"cucharilla\"}},\"category\":\"volume\"},{\"key\":\"cc\",\"names\":[\"cc\"],\"mappings\":{\"default\":{\"default\":\"centímetros cúbicos\"}},\"category\":\"volume\"},{\"key\":\"kl\",\"names\":[\"kl\"],\"mappings\":{\"default\":{\"default\":\"kilolitro\"}},\"category\":\"volume\"},{\"key\":\"l\",\"names\":[\"l\"],\"mappings\":{\"default\":{\"default\":\"litro\"}},\"category\":\"volume\"},{\"key\":\"ml\",\"names\":[\"ml\"],\"mappings\":{\"default\":{\"default\":\"mililitro\"}},\"category\":\"volume\"}]\n,\n\"es/units/weight.js\": \n[{\"locale\":\"es\"},{\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"],\"mappings\":{\"default\":{\"default\":\"libra\"}},\"category\":\"weight\"},{\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"],\"mappings\":{\"default\":{\"default\":\"libras imperiales\"}},\"category\":\"weight\"},{\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"],\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"weight\"},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"microgramo\"}},\"category\":\"weight\"},{\"key\":\"gr\",\"names\":[\"g\",\"gr\"],\"mappings\":{\"default\":{\"default\":\"gramo\"}},\"category\":\"weight\"},{\"key\":\"kg\",\"names\":[\"kg\"],\"mappings\":{\"default\":{\"default\":\"kilogramo\"}},\"category\":\"weight\"},{\"key\":\"mg\",\"names\":[\"mg\"],\"mappings\":{\"default\":{\"default\":\"miligramo\"}},\"category\":\"weight\"},{\"key\":\"t\",\"names\":[\"t\",\"T\"],\"mappings\":{\"default\":{\"default\":\"tonelada\"}},\"category\":\"weight\"}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/fr.js",
    "content": "{\n\"fr/functions/algebra.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degré\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"déterminant\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphisme\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"noyau\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"fr/functions/elementary.js\": \n[{\"locale\":\"fr\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"logarithme népérien\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logarithme décimal\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponentielle\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"PGCD\",\"pgcd\"],\"mappings\":{\"default\":{\"default\":\"plus grand commun diviseur\"},\"mathspeak\":{\"default\":\"pgcd\"},\"clearspeak\":{\"default\":\"pgcd\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"ppcm\",\"PPCM\",\"PPMC\",\"ppmc\"],\"mappings\":{\"default\":{\"default\":\"plus petit commun multiple\"},\"mathspeak\":{\"default\":\"ppcm\"},\"clearspeak\":{\"default\":\"ppcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argument\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"partie imaginaire\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"partie réelle\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"borne inférieure\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"mappings\":{\"default\":{\"default\":\"limite\"}},\"category\":\"Limits\",\"names\":[\"lim\"]},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"maximum\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minimum\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"borne supérieure\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"limite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"limite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"limite inductive\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"limite projective\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilité\"}},\"category\":\"Probability\"}]\n,\n\"fr/functions/hyperbolic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"cosinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"cotangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"cosécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"sécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"sinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"tangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosinus hyperbolique\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\",\"argch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cotangente hyperbolique\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\",\"argcoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosécante hyperbolique\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\",\"argcsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sécante hyperbolique\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\",\"argsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sinus hyperbolique\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\",\"argsh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument tangente hyperbolique\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\",\"argth\"]}]\n,\n\"fr/functions/trigonometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"cosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"cosécante\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"sécante\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosinus\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangente\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosécante\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sécante\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sinus\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangente\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"fr/symbols/digits_rest.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"au carré\"},\"mathspeak\":{\"default\":\"au carré\"},\"clearspeak\":{\"default\":\"au carré\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"cubique\"},\"mathspeak\":{\"default\":\"cubique\"},\"clearspeak\":{\"default\":\"cubique\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"un quart\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"un demi\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"trois quarts\"}},\"category\":\"No\"},{\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"un septième\"}},\"category\":\"No\"},{\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"un neuvième\"}},\"category\":\"No\"},{\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"un dixième\"}},\"category\":\"No\"},{\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"un tiers\"}},\"category\":\"No\"},{\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"deux tiers\"}},\"category\":\"No\"},{\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"un cinquième\"}},\"category\":\"No\"},{\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"deux cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"trois cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"quatre cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"un sixième\"}},\"category\":\"No\"},{\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"cinq sixièmes\"}},\"category\":\"No\"},{\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"un huitième\"}},\"category\":\"No\"},{\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes\"}},\"category\":\"No\"},{\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes\"}},\"category\":\"No\"},{\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes\"}},\"category\":\"No\"},{\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"numérateur un\"}},\"category\":\"No\"},{\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"zero tiers\"}},\"category\":\"No\"},{\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"vingt cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"trente cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"quarante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"cinquante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"soixante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"soixante dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"quatre vingts cerclé sur carré noir\"}},\"category\":\"No\"}]\n,\n\"fr/symbols/greek-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"Delta majuscule\"}}}]\n,\n\"fr/symbols/greek-scripts.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"petite gamma majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"petite lambda majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"petite pi majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"petite rhô majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"petite psi majuscule\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"gamma suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"phi suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"bêta souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"gamma souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"rhô souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"phi souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"khi souscrit\"}}}]\n,\n\"fr/symbols/greek-symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"bêta grec\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"ligature kai\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"epsilon lunaire réfléchi\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Digamma en gras\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"digamma en gras\"}}}]\n,\n\"fr/symbols/hebrew_letters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bèt\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guimel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dalèt\"}},\"category\":\"Lo\"}]\n,\n\"fr/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u trémaa et caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a point en chef et macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek et macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a rond en chef et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o tréma et macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde et macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o point en chef et macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cédille et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cédille et brève\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i tréma et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s accent aigu et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s point souscrit et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u macron et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a brève et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a brève et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a brève et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a brève et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a brève et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o cornu point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u cornu point souscrit\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barré\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d barré\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h barré\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l barré\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b barré\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z barré\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g barré\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o barré accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c barré\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e barré\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j barré\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r barré\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y barré\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"j sans point barré\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i barré\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"j sans point barré crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"o couché barré obliquement\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon barré\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"s long à barre diagonale\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"s long à barre haute\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta culbutée\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s long point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s long\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b potence\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"sixiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c crosse\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d potence\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f cursif\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv (Hwair)\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k crosse\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l rayé\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n à long jambage de droite\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o cornu\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"gha\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p crosse\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"deuxiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"ech réfléchi bouclé\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u cornu\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ej réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ej hameçon\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"cinquiéme tun\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ej caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lej\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ej\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ej bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"digramme Dej\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae accent aigu (ash)\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z crochet\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Qp\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"coup de glotte\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q avec hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"a culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"alpha culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b crosse\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"o ouvert\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d crosse\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"e réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa crochet\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e ouvert\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi crochet\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi fermé\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g crosse\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g cursif\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"petit gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"h culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h crosse\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"eng crosse\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l sanglé\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"m culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"m hampé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n hameçon à gauche\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o barré\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"oméga fermé\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"r culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"r prolongé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"r crosse culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r prolongé\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r sans obit\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"ech\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"ech bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"t culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u barré\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v de ronde\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"v culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"w culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"y culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"coup de glotte réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"coup de glotte culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"C étiré\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"clic bilabial\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"epsilon fermé\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"k culbuté\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"digramme Dz\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"digramme Dz bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"digramme Ts\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"digramme Tech\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"digramme Tc bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"digramme Feng\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"digramme Ls\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"digramme Lz\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percussion bilabiale\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"percussion bidentale\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"ae culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"epsilon culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"i culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"o couché\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"o ouvert couché\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"oe culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"u couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"u tréma couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"m couché\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"fricative pharyngale voisée\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"aïn\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r sans obit tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"g culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"g insulaire\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th barré diagonalement\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"ech hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d crosse et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"epsilon hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"o ouvert hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"ech hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ej hameçon rétroflexe\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n précédée d'une apostrophe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a tréma\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cédille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e tréma\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u tréma\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y tréma\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a macron\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a brève\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c point en chef\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e brève\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e point en chef\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g brève\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cédille\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i brève\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sans point\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cédille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cédille\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l point médian\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cédille\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o brève\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cédille\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cédille\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cédille\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u macron\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u brève\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z point en chef\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g accent aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cédille\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"j sans point\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a à rond souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g macron\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h brève souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u tréma souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a demi rond à droite\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"diacritique a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"diacritique e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"diacritique i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"diacritique o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"diacritique u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"diacritique c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"diacritique d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"diacritique h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"diacritique m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"diacritique r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"diacritique t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"diacritique v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"diacritique x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"i souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"r souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"u souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"v souscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"diacritique r souscrite\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"diacritique a ouvert aplati suscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"diacritique ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"diacritique ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"diacritique av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"diacritique c cédille\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"diacritique d insulaire\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"diacritique eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"diacritique g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"diacritique petite g majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"diacritique k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"diacritique l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"diacritique petite l majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"diacritique petite m majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"diacritique n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"diacritique petite n majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"diacritique petite r majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"diacritique r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"diacritique s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"diacritique s long\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"diacritique z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"exposant i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"exposant n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"indice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"indice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"indice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"indice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"indice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"souscrite h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"souscrite k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"souscrite l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"souscrite m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"souscrite n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"souscrite p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"souscrite s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"souscrite t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"j souscrite\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"s majuscule en écaille crochetée\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"c majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"r majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"P majuscule encadrée et en inversion avec croix\"}}}]\n,\n\"fr/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"A majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"A majuscule point en chef et macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"O majuscule ogonek et macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"A majuscule rond en chef et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"O majuscule tréma et macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"O majuscule tilde et macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"O majuscule point en chef et macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"C cédille et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"E macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"E macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"E cédille et brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"I tréma et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"L point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"O tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"O tilde et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"O macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"O macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"R point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"S accent aigu et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"S caron et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"S point souscrit et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"U tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"U macron et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"A brève et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"A brève et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"A brève et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"A brève et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"A brève et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"O cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"O cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"O cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"O cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"O cornu point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"U cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"U cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"U cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"U cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"U cornu point souscrit majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"A accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"A accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"A tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"A tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"C cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"E accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"E accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"E tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"I accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"I accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"I accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"I tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"N tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"O accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"O accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"O tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"O tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"U accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"U accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"U tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"Y accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"A macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"A brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"A ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"C accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"C accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"C point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"C caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"D caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"E macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"E brève majuscule\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"E point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"E ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"E caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"G accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"G brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"G point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"G cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"H accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"I tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"I macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"I brève majuscule\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"I ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"I point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"J accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"K cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"L accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"L cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"L caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"L point médian majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"N accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"N cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"N caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"O macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"O brève majuscule\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"O avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"R accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"R cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"R caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"S accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"S accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"S cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"S caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"T cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"T caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"U tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"U macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"U brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"U rond en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"U avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"U ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"W accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"Y accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"Y tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"Z accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"Z point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"Z caron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"A caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"I caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"O caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"U caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"G caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"K caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"O ogonek majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"G accent aigu majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"N grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"A double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"A brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"E double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"E brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"I double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"I brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"O double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"O brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"R double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"R brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"U double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"U brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"S virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"T virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"H caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"A point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"E cédille majuscule\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"O point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Y macron majuscule\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"A à rond souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"B point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"B point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"B ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"D point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"D point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"D ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"D cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"D accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"E tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"F point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"G macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"H point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"H point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"H tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"H cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"H brève souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"I tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"K accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"K point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"K ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"L point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"L ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"L accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"M accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"M point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"M point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"N point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"N point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"N ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"N accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"P accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"P point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"R point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"R point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"R ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"S point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"S point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"T point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"T point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"T ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"T accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"U tréma souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"U tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"V tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"V point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"W accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"W accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"W tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"W point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"W point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"X point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"X tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"Y point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"Z accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"Z point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"Z ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"A point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"A crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"E point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"E crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"E tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"I crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"I point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"O point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"O crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"U point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"U crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"Y accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"Y point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"Y crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"Y tilde majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/math_angles.js\": \n[{\"locale\":\"fr\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"angle droit avec arc\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"angle droit avec flèche en zigzag vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"angle tridimensionnel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"angle mesuré s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"variante d'angle avec carré\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"angle droit mesuré pointé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"angle avec s inscrit\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"angle aigu\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"angle culbuté\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"angle réfléchi\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_arrows.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flèche haut et bas\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flèche nord est\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flèche sud est\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flèche barrée gauche\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée gauche\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée droite\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes gauche\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes droite\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gauche\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée droite\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet gauche\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flèche haut bas sur base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet gauche\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet droite\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle gauche\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle droite\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée bilatérale\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas en zigzag\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin droit\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin gauche\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens positif\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens négatif\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest vers une barre horizontale longue\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet sur flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flèche en sens positif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flèche en sens négatif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut par dessus flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut à gauche d'une flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flèche gauche par dessus flèche droite\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"paire de flèches gauche\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le haut\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"paire de flèches droite\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le bas\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée gauche\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"double flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"double flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"double flèche haut bas\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"double flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"double flèche nord est\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"double flèche sud est\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"double flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"triple flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"triple flèche droite\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon gauche\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon droite\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec double barre\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec double barre\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée gauche\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée droite\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le bas\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flèche blanche gauche\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flèche blanche droite\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut à partir d'un taquet\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et trait horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et barre verticale\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite appuyée sur mur\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flèche sud est en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut et le bas\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à petit cercle\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"flèche descendante à gauche d'une flèche montante\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite et la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale barrée deux fois verticalement\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse gauche\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse droite\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flèche électrique\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le bas\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut entre deux traits horizontaux\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"cercle brisé à flèche nord ouest (échappement)\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à pointe large\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flèche grasse sud est\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite grasse\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flèche grasse nord est\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"flèche de traçage vers la droite\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe arrondie vers la droite\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flèche à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"flèche avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flèche grasse avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le haut\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le bas\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse courbée vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"flèche noire courbée vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"flèche noire trapue vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse à pointe concave vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'avant\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'arrière\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'arrière et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'avant et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre inférieure droite\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre supérieure droite\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessous\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessus\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à contour circulaire\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée blanche vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir sud est\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir nord est\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire sud est\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire nord est\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe larmée\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à hampe larmée\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à contour ouvert\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flèche sens antihoraire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flèche sens horaire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à signe plus cerclé\"}}},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"longue flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"longue flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"longue flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"longue double flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"longue double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"longue double flèche bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet vers la gauche\"}}},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la droite\"}}},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"longue flèche en tire bouchon droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale double barrée verticalement\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le bas\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits droite\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits droite\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes droite\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"flèche à fût pointillé droite\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"empenne gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"empenne vers la droite\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"double empenne gauche\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"double empenne droite\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest et sud est\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flèche nord est et sud ouest\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flèche nord est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flèche sud est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flèches nord ouest et nord est\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flèches nord est et sud est\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flèches sud est et sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flèches sud ouest et nord ouest\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flèche sud est sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche nord ouest\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest sur flèche nord est\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flèche bossue droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le haut\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le bas\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la gauche\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la droite\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"côté droit d'arc fléché sens horaire\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"côté gauche d'arc fléché sens antihoraire\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arc supérieur fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arc inférieur fléché sens antihoraire\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens horaire et signe moins souscrit\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens antihoraire et signe plus souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur droit sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur gauche sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontant fléchette vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant fléchette vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"fléchette vers la droite surmontant flèche vers la gauche\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontant signe moins\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers un x\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"petit cercle traversé d'une flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"petit cercle surmonté d'une flèche montante à deux têtes\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"flèche en épingle à cheveu droite\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un égal\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"presque égal à surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"inférieur à surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à travers un inférieur à\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un sous ensemble de\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers d'un sous ensemble de\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flèche gauche surmontée d'un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche droite en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche gauche en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"cercle traversé d'une flèche montante\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"losange noir à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"cercle noir à flèche vers le bas\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"intégrale à crosse fléchée gauche\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord est\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud est\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"flèche blanche bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord est\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud est\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"flèche noire bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"flèche noire haut et bas\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à petit cercle\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à signe plus cerclé\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"longue flèche vers la gauche en tire bouchon\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à fût pointillé\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers un x\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche bossue\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un égal\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à travers un inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers d'un sous ensemble de\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontée d'un opérateur tilde réfléchi\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée de l'opérateur tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"tilde réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"ilde surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas demi chasse\"}}}]\n,\n\"fr/symbols/math_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"l minuscule en script\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"fonction elliptique de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi ajouré\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"Gamma majuscule ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"Pi majuscule ajouré\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"sommation de la famille ajouré\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"D majuscule\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i ajouré en italique\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j ajouré en italique\"}}},{\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"dotless i\"}},\"category\":\"Ll\"},{\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"dotless j\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/math_delimiters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche\",\"alternative\":\"parenthèse ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite\",\"alternative\":\"parenthèse fermante\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche\",\"alternative\":\"crochet ouvrant\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"crochet droit\",\"alternative\":\"crochet fermant\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche\",\"alternative\":\"accolade ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"accolade droite\",\"alternative\":\"accolade fermante\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec pique\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec pique\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"plafond à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"plafond à droite\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"plancher à gauche\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"plancher à droite\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"repère sud est\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"repère sud ouest\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"repère nord est\"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"repère nord ouest\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"coin nord ouest\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"coin nord est\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"coin sud ouest\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"coin sud est\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"chevron droite\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"rallonge d'accolade\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"rallonge d'intégrale\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"rallonge de ligne horizontale\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure gauche ou inférieure droite d'accolade\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure droite ou inférieure gauche d'accolade\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"haut du signe de somme\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"bas du signe de somme\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"crochet vertical supérieur\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"crochet vertical inférieur\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"crochet verticaux en défilé\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"bas du radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"filet vertical gauche\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"filet vertical droit\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"parenthèse supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"parenthèse inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"accolade supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"accolade inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille supérieur\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille inférieur\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse aplatie\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse aplatie\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la gauche demi gras\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la droite demi gras\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie gauche maigre en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie droit maigre en écaille\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie gauche moyenne\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie droite moyenne\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s gauche\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s droite\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"chevron mathématique gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille blanche\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille blanche\"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche aplatie\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite aplatie\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"accolade gauche ajourée\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"accolade droite ajourée\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de gauche en notation z\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de droite en notation z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec barre souscrite\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec barre souscrite\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin supérieur\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin inférieur\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin inférieur\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin supérieur\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"chevron gauche pointé\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"chevron droit pointé\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc gauche et inférieur à\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc droite et supérieur à\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc droite et supérieur à\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc gauche et inférieur à\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"crochet noir gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"crochet noir droite en écaille\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée gauche\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée droite\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"double clôture dentelée gauche\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"chevron vers la gauche courbé\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"chevron vers la droite courbé\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"crampillon couché gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"crampillon couché droit\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"double parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"double parenthèse droite\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"anglet gauche\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"anglet droit\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré gauche\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré droit\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire droit\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire droit\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit en écaille\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime réfléchi\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime inférieur\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ornée\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ornée\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire droit vertical\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse droite verticale\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade droite verticale\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical en écaille\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical en écaille\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche lenticulaire noir vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit lenticulaire noir vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double droit vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"over angle bracket\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"under angle bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"accolade droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"crochet droit pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"accolade droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée pleine chasse *\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée pleine chasse *\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en coin demi chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"crochet droit en coin demi chasse\"}}}]\n,\n\"fr/symbols/math_geometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"filet horizontal fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"filet horizontal gras\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical fin\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical gras\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical fin\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical gras\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la droite\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la gauche\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la droite\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la gauche\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la droite\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la gauche\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et horizontal\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et horizontal\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras et horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"filet vertical et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal fin\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical fin\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical gras\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"filet double horizontal\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"filet double vertical\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"filet simple le bas et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le bas et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la droite\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et droit double\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et droit simple\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et gauche double\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et gauche simple\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et horizontal\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et horizontal\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et horizontall\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur droit au coin inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur gauche vers le coin inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin en croix\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"huitième inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"quart inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes inférieurs de pavé\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"trois quarts inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes inférieurs de pavé\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"pavé plein\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"trois quarts gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"moitié gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"un quart gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"un huitième gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"moitié droite de pavé\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"ombre légère\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"ombre moyenne\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"ombre foncée\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"huitième supérieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"huitième droit de pavé\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche inférieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit inférieur gauche et inférieur droit\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"carré blanc aux coins arrondis\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"petit carré noir inscrit dans un carré blanc\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"carré hachuré horizontalement\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"carré hachuré verticalement\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à gauche vers le bas à droite\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à droite vers le bas à gauche\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé en diagonale\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"petit carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectangle noir\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectangle blanc\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectangle vertical noir\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"parallélogramme noir\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"parallélogramme blanc\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers la droite\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la droite\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"losange noir\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"losange blanc\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"losange blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"cercle blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"losange\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"cercle en pointillés\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"cercle hachuré verticalement\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"deux cercles concentriques\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"cercle noir\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié inférieure\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié supérieure\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"cercle avec quadrant supérieur droit noir\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"disque avec quadrant supérieur gauche blanc\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"demi disque gauche noir\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"demi disque droite noir\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"point noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"cercle noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur gauchearc de cercle dans le quadrant supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"carré à moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"carré à moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure droite noire\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"carré blanc à ligne bissectrice verticale\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut pointé\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"grand cercle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur droit\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur droit\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur droit\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur droit\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale supérieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale inférieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"losange à moitié gauche noire\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"losange à moitié droite noire\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"losange à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"losange à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"carré en pointillés\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"grand carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"grand carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"très petit carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"très petit carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentagone noir\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexagone noir\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagone noir posé sur un côté\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"grand cercle noir\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"losange moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"losange moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"petit losange noir\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"petit rhombe noir\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"petit rhombe blanc\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale noire\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale blanche\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale noire\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale blanche\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"étoile blanche moyenne\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"petite étoile noire\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"petite étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentagone noir pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"grand cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"ovale gras avec ovale inscrit\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"cercle gras avec cercle inscrit\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"sautoir cerclé gras\"}}}]\n,\n\"fr/symbols/math_harpoons.js\": \n[{\"locale\":\"fr\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"harpon gauche par dessus harpon droit\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"harpon droit par dessus harpon gauche\"}},\"category\":\"So\"},{\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche dressée et droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche baissée et droite dressée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure droite et inférieure gauche\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure gauche et inférieure droite\"}}},{\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche dressées\"}},\"category\":\"Sm\"},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure droites\"}},\"category\":\"Sm\"},{\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche baissées\"}},\"category\":\"Sm\"},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure gauches\"}},\"category\":\"Sm\"},{\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée sur harpon gauche à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée par dessus harpon droit à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus harpon à dent droite dressée\"}},\"category\":\"Sm\"},{\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche baissée par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus harpon à dent gauche dressée\"}},\"category\":\"Sm\"},{\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite baissée par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"ancre gauche\"}},\"category\":\"Sm\"},{\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"ancre droite\"}},\"category\":\"Sm\"},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"ancre vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"ancre vers le bas\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_non_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"constante de planck sur deux pi\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"symbole l b barré\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"symbole numéro\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"copyright de programme sonore\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"ordonnances\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"répons\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de service\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"signe de téléphone\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de commerce\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versicule\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"symbole once\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohm culbuté\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"degré kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstroms\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"symbole estimé\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"f culbuté majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"bureau d'information\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Q majuscule couché\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"symbole télécopie\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"G culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"L culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"L réfléchi majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Y culbuté majuscule sans empattement\"}}}]\n,\n\"fr/symbols/math_symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorielle\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"petit guillemet\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"dièse\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dollars\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"pourcent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"esperluette\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prime\",\"alternative\":\"apostrophe\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"point\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"deux points\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"égale\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arobase\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circonflexe\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation renversé\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centimes\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"livres\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"symbole monétaire\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barre déjointe\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"tréma\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal féminin\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant gauche\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"négation\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"symbole marque déposée\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"macron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"degrés\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus ou moins\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"symbole micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"fin de paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cédille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal masculin\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant droite\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation renversé\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"multiplié par\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"divisé par\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"brève\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"point en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"rond en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"double accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"trait d'union\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barre horizontalle\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"double ligne verticale\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"double trait souscrit\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe culbuté\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule inférieur\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule supérieur culbuté\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double culbuté\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule double supérieur culbuté\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"obèle\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"double obèle\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"puce\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"puce triangulaire\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"point de conduite simple\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"point de conduite double\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"points de suspension\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"point de coupure de mot\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"symbole pour mille\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"symbole pour dix mille\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"prime réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"double prime réfléchi\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"triple prime réfléchi\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"chevron d'insertion\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"guillemet simple gauche\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"guillemet simple droite\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marque de référence\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"double point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"point exclarrogatif\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"tiret en chef\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"tirant souscrit\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"tirant en chef\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"lambda d'insertion\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"astérisme\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"puce trait d'union\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barre de fraction\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"double point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation exclamation\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation interrogation\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"pied de mouche réfléchi\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à droite\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à gauche\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"astérisque baissé\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"point virgule réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"resserrer\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"deux astérisques alignés verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"moins commercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"tiret ondé\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"dos d'âne souscrit\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"point fleur\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"trois points\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"quatre points en losange\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"cinq points en quinconce\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"deux points en capitale\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"quatre points en croix\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"croix pointée\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"trois points vertical\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"quatre points vertical\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"exposant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"exposant signe moins\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"exposant signe égal\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"indice signe plus\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"indice signe moins\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"indice signe égal\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse droite\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"limite de propriété\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"perluète culbutée\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"symbole per\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"minuscule f culbuté\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"pour tous\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complément\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"il existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"il n'existe pas\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"ensemble vide\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incrément\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"n'appartient pas à\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"ce qu'il fallait démontrer\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"produit\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sommation\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"moins ou plus\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"plus pointé\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"différence d'ensembles\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"racine carrée\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"racine cubique\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"racine quatrième\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportionnel à\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infini\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"angle droit\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"angle mesuré\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"angle sphérique\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"est un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"non parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"et logique\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"intégrale\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"intégrale double\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"intégrale triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"intégrale de surface\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"intégrale de volume\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"par conséquent\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"parce que\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"rapport\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"moins pointé\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"excès\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proportion géométrique\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothétique\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s couché renversé\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoïde\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"produit couronne\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"non tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"moins tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"non asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"approximativement mais non strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"ni approximativement ni strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"non presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"presque égal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"entièrement égal à\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"géométriquement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"différence entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"tend vers la limite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"géométriquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou image de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"image de ou approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"deux points égal\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"égal deux points\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"rond dans égal\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"égal avec rond en chef\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"correspond à\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estime\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"équiangulaire à\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"égal avec étoile en chef\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"égal delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"égal par définition à\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"mesuré par\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"égalité en doute\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"identique à\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"non identique à\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"strictement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"plus petit que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"plus grand que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"plus petit mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"plus grand mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"pas plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"pas plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"plus petit ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"plus grand ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"plus petit ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"plus grand ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"précède\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"suit\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"précède ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"suit ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"précède ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"suit ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"ne précède pas\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"ne suit pas\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"pas un sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"pas un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"ni un sous ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"ni un sur ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"sous ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"sur ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"multiplication de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"union de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"image carrée de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original carré de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"image carrée ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original carré ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"chapeau carré\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"coupe carrée\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"plus cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"moins cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"multiplié par cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barre oblique de division cerclée\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"opérateur rond cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"égal cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"tiret cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"plus encadré\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"moins encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"multiplié par encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"opérateur point encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modélise\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"vrai\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"oblige\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"barre verticale triple avec tourniquet à droite\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"ne prouve pas\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"pas vrai\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"n'oblige pas\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"non barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"précède sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"suit sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"image de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multijection\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matrice hermitienne conjuguée\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"intercale\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"ou exclusif\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"non et\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"non ou\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"et logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"ou logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersection de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"réunion de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"opérateur losange\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"opérateur étoile\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"divisé multiplié\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"nœud papillon\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"moins tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"ou logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"et logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"sous ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"sur ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"intersection double\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"union double\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"fourche\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"égal et parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"plus petit que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"plus grand que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"considérablement plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"considérablement plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"égal ou précède\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"égal ou suit\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"ni précédant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"ni suivant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"ni image carrée ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"ni original carré ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"image carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"plus petit mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"plus grand mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"précédant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"suivant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"pas un sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"ni sous groupe normal ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"ni égal ni contenant comme sous  groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"trois points suspendus\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"trois points médians\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin haut à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin bas à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"appartient à avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"appartient à avec point en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait souscrit\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"appartient à avec deux traits horizontaux\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contient avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"petit contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"petit contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"appartient à un sac en notation z\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diamètre\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"maison\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"ligne ondulée\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"négation réfléchi\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastille carrée\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"secteur\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"plus gras\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"moins gras\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"division gras\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"boucle recourbée\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"double boucle recourbée\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc inscrit dans triangle blanc\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"ou avec point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"sous ensemble précédé d'une barre oblique inversée\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sur ensemble suivi d'une barre oblique\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barre verticale À une traverse\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique ascendante\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"grande division\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique descendante\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"et logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"ou logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"losange blanc à point centré\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"et pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"appartient À ouvert vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur droit pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur gauche pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"jointure externe gauche\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"jointure externe droite\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"jointure externe complète\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"double tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multijection gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"long taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"long taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut surmonté d'un cercle\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"losange coupé\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur diagonale descendante\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur diagonale montante\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"délimiteur triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"boulet\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"deux points de la notation z\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"clôture pointillée\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"ligne verticale en zigzag\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"ensemble vide réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"ensemble vide barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"ensemble vide petit cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"cercle à barre horizontale\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barre verticale cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"parallèles cerclées\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée cerclée\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire cerclé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"cercle divisé par une barre horizontale et une barre verticale dans la moitié supérieure\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"cercle superposé d'un x\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"division pivoté en sens antihoraire cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"puce blanche cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"puce cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"inférieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"supérieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"cercle avec petit cercle à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"cercle avec deux petits traits horizontaux à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"oblique encadrée\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"oblique inversée encadrée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"astérisque encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"petite cercle encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"carré encadré\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"carrés se chevauchant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triangle pointé en chef\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triangle à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s inscrit dans triangle\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle à empattements inférieurs\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triangle droit par dessus triangle gauche\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"triangle gauche à gauche d'une barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"triangle droit à droite d'une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile droite noire\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"nœud papillon noir\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié gauche noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié droite noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"sablier blanc\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"sablier noir\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infini incomplet\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"lorgnon\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"infini nié par une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multijection à deux têtes\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"carré ombré\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"augmente avec\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"produit de permutation\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné surmontés d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"identique à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"thermodynamique\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié droite noire\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"losange fuselé noir\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré blanc\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré noir\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange noir\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle noir\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"règle différée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"opérateur barre oblique inversée\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"barre oblique avec barre en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée à traverse horizontale\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique inversée\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"double plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"tiny\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"opérateur plus cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire pointé\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire avec plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"opérateur intersection carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"opérateur union carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"opérateur deux et logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"opérateur deux ou logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"sommation modulo deux\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"sommation avec intégrale\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"intégrale quadruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"intégrale à partie finie\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"intégrale à deux barres horizontales\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"moyenne d'intégrale à barre oblique inversée\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"fonction de circulation\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin rectangulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin semi circulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne évitant le pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"intégrale autour d'un opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"intégrale quaternion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"intégrale au signe multiplié par\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe intersection\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"jointure\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"gros opérateur triangle gauche\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composition de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"tubage de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"projection de schémas en notation z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un petit cercle\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"plus à point souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"plus à tilde souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"plus à chiffre deux souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"plus à triangle noir\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"moins surmonté d'une virgule\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"moins à point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"moins à points descendants\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"moins à points ascendants\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"produit vectoriel\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"multiplication à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"multiplication à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"produit semi direct fermé en bas\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"produit fusionné\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"multiplication cerclé circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"multiplication doublement cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"division cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"plus dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"moins dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"multiplication dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"produit interieur\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"produit intérieur à droite\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"composition relationnelle en notation z\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"amalgamation ou coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersection pointée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"union à signe moins\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"union à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersection à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersection avec et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"union avec ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"union par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"union par dessus bar par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus trait par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"deux unions soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"deux intersections soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersection fermée à empattements\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"deux intersections carrées emboîtées\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"deux unions carrées emboîtées\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements et produit fusionné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"et logique à point en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"ou logique à point en chef\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"deux et logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"deux ou logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"grand ou pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"grand et pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"et et ou logiques entrecroisés\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"et logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"ou logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"et logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"ou logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres en chef\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"et logique à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"petit v à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"antirestriction de domaine en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"antirestriction de codomaine en notation z\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"égal point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"identique à surmonté d'un point\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"deux barres verticales à trois traverses\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"trois barres verticales à trois traverses\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde à points ascendants\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similaire à moins similaire à\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruent point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Égal astérisque en chef\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"presque égal à circonflexe\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou égal à\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"plus signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"égal à signe plus en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"tilde signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"double deux points égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"deux signes égal à consécutifs\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"trois signes égal à consécutifs\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"égal à deux points en chef deux points souscrits\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"équivalent quatre points en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"inférieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"supérieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"inférieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"supérieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef droit\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"inférieur à et pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"supérieur à et pas égal à une ligne\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"inférieur à et non approximatif\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"supérieur à et non approximatif\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à deux lignes par dessus supérieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à deux lignes par dessus inférieur à\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à par dessus supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à par dessus inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus supérieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus inférieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à pentu par dessus supérieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à pentu par dessus inférieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou supérieur à\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou inférieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou supérieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à à deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à à deux lignes inclinées\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"similaire à ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"similaire à ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus inférieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus supérieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à emboîtés\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés avec barre souscrite\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"supérieur à à côté de inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"plus petit que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"plus grand que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"égal et dos d'âne\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal à une ligne\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"précède par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"suit par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"précède par dessus non presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"suit par dessus non presque égal à\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"double précède\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"double suit\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"sous ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"sur ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus signe égal\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte gauche\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte droite\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à côté de sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble chaîné à sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"appartient à ouvert vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"fourche surmontée d'un t\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"intersection transversale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcation (non indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"non bifurcation (indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"taquet gauche court\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"triple tourniquet droit à barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"double barre verticale gauche à traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas avec barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut avec barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut par dessus taquet court vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le bas\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de à barre de négation réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas surmontant un cercle\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"parallèlle à vertical à une traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"parallèle à avec opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"triple barre verticale à une traverse\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"opérateur trois points\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"trois inférieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"trois supérieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"grand opérateur à trois barres verticales\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"opérateur double oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche n aire\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"trait d'union en esse\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de virgule verticale\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de deux points vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point virgule vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'exclamation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'interrogation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de points de suspension verticaux\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point de conduite double vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret cadratin vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret demi cadratin vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas ondulé vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"point sésame\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"point sésame ajouré\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"tiret haut en pointillés\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"tiret haut à point central\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"tiret haut ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"tiret haut double ondulé\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"tiret bas avec pointillés\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"tiret bas à point central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"tiret bas ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"point minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"point virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"deux points minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"trait d'union cadratin minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"croisillon minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"perluète minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"astérisque minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"plus minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"tiret minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"inférieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"supérieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"égal à minuscule\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"integer divide\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"symbole dollar minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"arrobe minuscule\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"guillemet\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"croisillon\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"symbole dollar\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"perluète\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"tiret\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"point\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"deux points colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"égal à\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"arrobe\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"accent circonflexe\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"symbole centime\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"symbole livre\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"négation\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"macron *\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"ligne brisée\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"symbole yen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"symbole won\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"ligne verticale mince\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"carré noir\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}}}]\n,\n\"fr/symbols/math_whitespace.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espace\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"trait d'union conditionnel\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"demi cadratin\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"cadratin\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"sixième de cadratin\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"antiliant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"liant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marque gauche à droite\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marque droite à gauche\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"séparateur de lignes\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"séparateur de paragraphes\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"enchâssement gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"enchâssement droite à gauche\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"dépilement de formatage directionnel\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"forçage gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"forçage droite à gauche\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espace insécable étroite\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"espace moyenne mathématique\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"plus invisible\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibiteur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activateur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales nationales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales de référence\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"espace ultrafine\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancre d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"séparateur d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminateur d'annotation interlinéaire\"}}}]\n,\n\"fr/symbols/other_stars.js\": \n[{\"locale\":\"fr\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"symbole exposant décimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"étoile noire\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"cercle moyen blanc\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"cercle moyen noir\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"signe de vérification blanc gras\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"signe de vérification\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"gros signe de vérification\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"x de multiplication\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"gros x de multiplication\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"x de bulletin de vote\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"gros x de bulletin de vote\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"croix percée d'un carré\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"grosse croix percée d'un carré\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"croix de malte\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Étoile de david\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"croix larmée\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"grosse croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"croix tréflée\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"scintillements\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à contour accentué\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche cerclée\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"molette noire\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"molette blanche\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec contour\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec gros contour\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche ombrée\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"gros astérisque\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"astérisque percé\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"astérisque à huit branches\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à huit branches\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante à huit branches\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"étoile noire à six branches\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à douze branches\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"astérisque à seize branches\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé percé\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"gros astérisque larmé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"sixtefeuille blanche et noire\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"quintefeuille noire\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"quintefeuille blanche\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"double quartefeuille noire avec contour\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Étoile cerclée percée à huit branches\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"gros astérisque rayonnant larmé\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"flocon de neige\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"flocon de neige à trois folioles transpercé\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"gros flocon de neige à chevrons\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Étincellement\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"gros étincellement\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"astérisque pommeté\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"gros astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"croix grasse\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"cercle blanc ombré\"}}}]\n,\n\"fr/units/energy.js\": \n[{\"locale\":\"fr\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"watts\",\"singular\":\"watt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"joules\",\"singular\":\"joule\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"newtons\",\"singular\":\"newton\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"ampères\",\"singular\":\"ampère\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"volts\",\"singular\":\"volt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"ohms\",\"singular\":\"ohm\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]}]\n,\n\"fr/units/length.js\": \n[{\"locale\":\"fr\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"mètres\",\"singular\":\"mètre\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"m\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"pieds\",\"singular\":\"pied\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"pouces\",\"singular\":\"pouce\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"default\":\"miles\",\"singular\":\"mile\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"default\":\"yards\",\"singular\":\"yard\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"yd\",\"yd.\"]}]\n,\n\"fr/units/memory.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/other.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/speed.js\": \n[{\"locale\":\"fr\"},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"miles par heure\",\"singular\":\"mile par heure\",\"dual\":\"\"}},\"names\":[\"mph\"]}]\n,\n\"fr/units/temperature.js\": \n[{\"locale\":\"fr\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"farads\",\"singular\":\"farad\",\"dual\":\"\"}},\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"coulombs\",\"singular\":\"coulomb\",\"dual\":\"\"}},\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"kelvins\",\"singular\":\"kelvin\",\"dual\":\"\"}},\"names\":[\"K\",\"°K\"]}]\n,\n\"fr/units/time.js\": \n[{\"locale\":\"fr\"},{\"key\":\"s\",\"mappings\":{\"default\":{\"default\":\"secondes\",\"singular\":\"seconde\",\"dual\":\"\"}},\"category\":\"time\",\"names\":[\"s\"]}]\n,\n\"fr/units/volume.js\": \n[{\"locale\":\"fr\"},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"barils\",\"singular\":\"baril\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"default\":\"gallons\",\"singular\":\"gallon\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"pintes\",\"singular\":\"pinte\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"default\":\"quarts\",\"singular\":\"quart\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"cuillères de table\",\"singular\":\"cuillèe de table\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"cuillèes à thé\",\"singular\":\"cuillère à thé\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"key\":\"l\",\"mappings\":{\"default\":{\"default\":\"litres\",\"singular\":\"litre\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"l\"]}]\n,\n\"fr/units/weight.js\": \n[{\"locale\":\"fr\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"livres\",\"singular\":\"livre\",\"dual\":\"\"}},\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"default\":\"onces\",\"singular\":\"oce\",\"dual\":\"\"}},\"names\":[\"oz\",\"oz.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"grains\",\"singular\":\"grain\",\"dual\":\"\"}},\"names\":[\"g\",\"gr\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"default\":\"tonnes\",\"singular\":\"tonne\",\"dual\":\"\"}},\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js",
    "content": "sre.BrowserUtil.mapsForIE = {\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"determinant\"},\"mathspeak\":{\"default\":\"det\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphism\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"en/functions/elementary.js\": \n[{\"locale\":\"en\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"natural log\"},\"mathspeak\":{\"default\":\"ln\"},\"clearspeak\":{\"default\":\"l n\",\"Log_LnAsNaturalLog\":\"natural log\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log base 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"exponential\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"greatest common divisor\"},\"mathspeak\":{\"default\":\"gcd\"},\"clearspeak\":{\"default\":\"gcd\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"least common multiple\"},\"mathspeak\":{\"default\":\"lcm\"},\"clearspeak\":{\"default\":\"lcm\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"argument\"},\"mathspeak\":{\"default\":\"arg\"},\"clearspeak\":{\"default\":\"arg\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"imaginary part\"},\"mathspeak\":{\"default\":\"im\"},\"clearspeak\":{\"default\":\"imaginary\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"real part\"},\"mathspeak\":{\"default\":\"re\"},\"clearspeak\":{\"default\":\"real\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"infimum\"},\"mathspeak\":{\"default\":\"inf\"},\"clearspeak\":{\"default\":\"inf\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit\"},\"mathspeak\":{\"default\":\"limit\"},\"clearspeak\":{\"default\":\"lim\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit inferior\"},\"mathspeak\":{\"default\":\"liminf\"},\"clearspeak\":{\"default\":\"liminf\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit superior\"},\"mathspeak\":{\"default\":\"limsup\"},\"clearspeak\":{\"default\":\"limsup\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"maximum\"},\"mathspeak\":{\"default\":\"max\"},\"clearspeak\":{\"default\":\"max\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"minimum\"},\"mathspeak\":{\"default\":\"min\"},\"clearspeak\":{\"default\":\"min\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"supremum\"},\"mathspeak\":{\"default\":\"sup\"},\"clearspeak\":{\"default\":\"sup\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"colimit\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projective limit\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"modulo\"},\"mathspeak\":{\"default\":\"mod\"},\"clearspeak\":{\"default\":\"mod\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"probability\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"en/functions/hyperbolic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosine\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cotangent\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosecant\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic secant\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic sine\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic tangent\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosine\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cotangent\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosecant\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic secant\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic sine\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic tangent\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"en/functions/trigonometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosine\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cotangent\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosecant\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"secant\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"sine\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"tangent\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosine inverse\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cotangent inverse\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosecant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosecant inverse\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc secant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"secant inverse\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"sine inverse\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"tangent inverse\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"en/symbols/digits_rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"squared\"},\"mathspeak\":{\"default\":\"squared\"},\"clearspeak\":{\"default\":\"squared\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"cubed\"},\"mathspeak\":{\"default\":\"cubed\"},\"clearspeak\":{\"default\":\"cubed\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one quarter\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one half\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three quarters\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one seventh\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one ninth\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one tenth\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one third\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two thirds\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one fifth\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two fifths\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three fifths\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"four fifths\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one sixth\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five sixths\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one eighth\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three eighths\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five eighths\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"seven eighths\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"numerator one\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"zero thirds\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled ten on black square\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled twenty on black square\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled thirty on black square\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled forty on black square\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled fifty on black square\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled sixty on black square\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled seventy on black square\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled eighty on black square\"}},\"key\":\"324F\"}]\n,\n\"en/symbols/greek-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"en/symbols/greek-scripts.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"small cap Gamma\"},\"mathspeak\":{\"default\":\"small upper Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"small cap Lamda\"},\"mathspeak\":{\"default\":\"small upper Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"small cap Pi\"},\"mathspeak\":{\"default\":\"small upper Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"small cap Rho\"},\"mathspeak\":{\"default\":\"small upper Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"small cap Psi\"},\"mathspeak\":{\"default\":\"small upper Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"superscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"superscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscript beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subscript rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscript chi\"}}}]\n,\n\"en/symbols/greek-symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"beta\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"kai\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed epsilon\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold cap Digamma\"},\"mathspeak\":{\"default\":\"bold upper Digamma\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"bold digamma\"}},\"key\":\"1D7CB\"}]\n,\n\"en/symbols/hebrew_letters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"first transfinite cardinal\",\"alternative\":\"alef\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"second transfinite cardinal\",\"alternative\":\"bet\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"third transfinite cardinal\",\"alternative\":\"gimel\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"fourth transfinite cardinal\",\"alternative\":\"dalet\"}},\"key\":\"2138\"}]\n,\n\"en/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u double overdot caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u double overdot grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek overbar\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a ring above acute\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde overbar\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cedilla acute\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cedilla breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s acute overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s underdot overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u overbar double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a breve acute\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a breve grave\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a breve hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a breve tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a breve underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o underdot prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u underdot prime\"}}}]\n,\n\"en/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b with stroke\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o with stroke and acute\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y with stroke\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke and hook\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"latin letter glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"sideways o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"long s with diagonal stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"long s with high stroke\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"turned delta\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"long s with dot above\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"long s\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tone six\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c with hook\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f with hook\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k with hook\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l with bar\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n with long right leg\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o with horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p with hook\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"tone two\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed esh loop\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u with horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh reversed\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh with tail\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tone five\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"latin letter wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz with caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae with macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"turned e\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae with acute\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d with curl\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z with hook\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l with curl\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n with curl\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t with curl\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q with hook tail\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"turned a\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"turned alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b with hook\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c with curl\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d with tail\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d with hook\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"reversed e\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa with hook\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"open e\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"reversed open e with hook\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"closed reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g with hook\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"script g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"rams horn\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"turned h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h with hook\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"heng with hook\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l with belt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"turned m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"turned m with long leg\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m with hook\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n with left hook\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"barred o\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"closed omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"turned r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"turned r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"turned r with hook\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r with tail\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"reversed r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s with hook\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat reversed esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh with curl\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"turned t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v with hook\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"turned v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"turned w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"turned y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z with curl\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"latin letter pharyngeal voiced fricative\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"latin letter stretched c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"closed open e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"turned k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q with hook\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"latin letter bidental percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"turned ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"turned open e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"turned i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"sideways o\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"sideways open o\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"turned oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"top half o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"bottom half o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"sideways u\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"sideways diaeresized u\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"sideways turned m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"latin letter voiced laryngeal spirant\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"latin letter ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r with fishhook and middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"turned g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th with strikethrough\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d with hook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"reversed open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"open o with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n preceded by apostrophe\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}}}]\n,\n\"en/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"},\"mathspeak\":{\"default\":\"modifying above a with grave\",\"brief\":\"mod above a with grave\",\"sbrief\":\"mod above a with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a acute\"},\"mathspeak\":{\"default\":\"modifying above a with acute\",\"brief\":\"mod above a with acute\",\"sbrief\":\"mod above a with acute\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a hat\"},\"mathspeak\":{\"default\":\"modifying above a with caret\",\"brief\":\"mod above a with caret\",\"sbrief\":\"mod above a with caret\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"},\"mathspeak\":{\"default\":\"a overtilde\",\"brief\":\"a overtilde\",\"sbrief\":\"a overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a double overdot\"},\"mathspeak\":{\"default\":\"modifying above a with double dot\",\"brief\":\"mod above a with double dot\",\"sbrief\":\"mod above a with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a ring\"},\"mathspeak\":{\"default\":\"modifying above a with ring\",\"brief\":\"mod above a with ring\",\"sbrief\":\"mod above a with ring\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"},\"mathspeak\":{\"default\":\"modifying above c with cedilla\",\"brief\":\"mod above c with cedilla\",\"sbrief\":\"mod above c with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"},\"mathspeak\":{\"default\":\"modifying above e with grave\",\"brief\":\"mod above e with grave\",\"sbrief\":\"mod above e with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e acute\"},\"mathspeak\":{\"default\":\"modifying above e with acute\",\"brief\":\"mod above e with acute\",\"sbrief\":\"mod above e with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e hat\"},\"mathspeak\":{\"default\":\"modifying above e with caret\",\"brief\":\"mod above e with caret\",\"sbrief\":\"mod above e with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e double overdot\"},\"mathspeak\":{\"default\":\"modifying above e with double dot\",\"brief\":\"mod above e with double dot\",\"sbrief\":\"mod above e with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"},\"mathspeak\":{\"default\":\"modifying above i with grave\",\"brief\":\"mod above i with grave\",\"sbrief\":\"mod above i with grave\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i acute\"},\"mathspeak\":{\"default\":\"modifying above i with acute\",\"brief\":\"mod above i with acute\",\"sbrief\":\"mod above i with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i hat\"},\"mathspeak\":{\"default\":\"modifying above i with caret\",\"brief\":\"mod above i with caret\",\"sbrief\":\"mod above i with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i double overdot\"},\"mathspeak\":{\"default\":\"modifying above i with double dot\",\"brief\":\"mod above i with double dot\",\"sbrief\":\"mod above i with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"},\"mathspeak\":{\"default\":\"n overtilde\",\"brief\":\"n overtilde\",\"sbrief\":\"n overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"},\"mathspeak\":{\"default\":\"modifying above o with grave\",\"brief\":\"mod above o with grave\",\"sbrief\":\"mod above o with grave\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o acute\"},\"mathspeak\":{\"default\":\"modifying above o with acute\",\"brief\":\"mod above o with acute\",\"sbrief\":\"mod above o with acute\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o hat\"},\"mathspeak\":{\"default\":\"modifying above o with caret\",\"brief\":\"mod above o with caret\",\"sbrief\":\"mod above o with caret\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"},\"mathspeak\":{\"default\":\"o overtilde\",\"brief\":\"o overtilde\",\"sbrief\":\"o overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o double overdot\"},\"mathspeak\":{\"default\":\"modifying above o with double dot\",\"brief\":\"mod above o with double dot\",\"sbrief\":\"mod above o with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"},\"mathspeak\":{\"default\":\"modifying above u with grave\",\"brief\":\"mod above u with grave\",\"sbrief\":\"mod above u with grave\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u acute\"},\"mathspeak\":{\"default\":\"modifying above u with acute\",\"brief\":\"mod above u with acute\",\"sbrief\":\"mod above u with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u hat\"},\"mathspeak\":{\"default\":\"modifying above u with caret\",\"brief\":\"mod above u with caret\",\"sbrief\":\"mod above u with caret\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u double overdot\"},\"mathspeak\":{\"default\":\"modifying above u with double dot\",\"brief\":\"mod above u with double dot\",\"sbrief\":\"mod above u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y acute\"},\"mathspeak\":{\"default\":\"modifying above y with acute\",\"brief\":\"mod above y with acute\",\"sbrief\":\"mod above y with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y double overdot\"},\"mathspeak\":{\"default\":\"modifying above y with double dot\",\"brief\":\"mod above y with double dot\",\"sbrief\":\"mod above y with double dot\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a overbar\"},\"mathspeak\":{\"default\":\"a overbar\",\"brief\":\"a overbar\",\"sbrief\":\"a overbar\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a breve\"},\"mathspeak\":{\"default\":\"modifying above a with breve\",\"brief\":\"mod above a with breve\",\"sbrief\":\"mod above a with breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"},\"mathspeak\":{\"default\":\"modifying above a with ogonek\",\"brief\":\"mod above a with ogonek\",\"sbrief\":\"mod above a with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c acute\"},\"mathspeak\":{\"default\":\"modifying above c with acute\",\"brief\":\"mod above c with acute\",\"sbrief\":\"mod above c with acute\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c hat\"},\"mathspeak\":{\"default\":\"modifying above c with caret\",\"brief\":\"mod above c with caret\",\"sbrief\":\"mod above c with caret\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c overdot\"},\"mathspeak\":{\"default\":\"modifying above c with dot\",\"brief\":\"mod above c with dot\",\"sbrief\":\"mod above c with dot\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"},\"mathspeak\":{\"default\":\"modifying above c with caron\",\"brief\":\"mod above c with caron\",\"sbrief\":\"mod above c with caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"},\"mathspeak\":{\"default\":\"modifying above d with caron\",\"brief\":\"mod above d with caron\",\"sbrief\":\"mod above d with caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e overbar\"},\"mathspeak\":{\"default\":\"e overbar\",\"brief\":\"e overbar\",\"sbrief\":\"e overbar\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e breve\"},\"mathspeak\":{\"default\":\"modifying above e with breve\",\"brief\":\"mod above e with breve\",\"sbrief\":\"mod above e with breve\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e overdot\"},\"mathspeak\":{\"default\":\"modifying above e with dot\",\"brief\":\"mod above e with dot\",\"sbrief\":\"mod above e with dot\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"},\"mathspeak\":{\"default\":\"modifying above e with ogonek\",\"brief\":\"mod above e with ogonek\",\"sbrief\":\"mod above e with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"},\"mathspeak\":{\"default\":\"modifying above e with caron\",\"brief\":\"mod above e with caron\",\"sbrief\":\"mod above e with caron\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g hat\"},\"mathspeak\":{\"default\":\"modifying above g with caret\",\"brief\":\"mod above g with caret\",\"sbrief\":\"mod above g with caret\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g breve\"},\"mathspeak\":{\"default\":\"modifying above g with breve\",\"brief\":\"mod above g with breve\",\"sbrief\":\"mod above g with breve\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g overdot\"},\"mathspeak\":{\"default\":\"modifying above g with dot\",\"brief\":\"mod above g with dot\",\"sbrief\":\"mod above g with dot\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cedilla\"},\"mathspeak\":{\"default\":\"modifying above g with cedilla\",\"brief\":\"mod above g with cedilla\",\"sbrief\":\"mod above g with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h hat\"},\"mathspeak\":{\"default\":\"modifying above h with caret\",\"brief\":\"mod above h with caret\",\"sbrief\":\"mod above h with caret\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"},\"mathspeak\":{\"default\":\"i overtilde\",\"brief\":\"i overtilde\",\"sbrief\":\"i overtilde\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i overbar\"},\"mathspeak\":{\"default\":\"i overbar\",\"brief\":\"i overbar\",\"sbrief\":\"i overbar\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i breve\"},\"mathspeak\":{\"default\":\"modifying above i with breve\",\"brief\":\"mod above i with breve\",\"sbrief\":\"mod above i with breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"},\"mathspeak\":{\"default\":\"modifying above i with ogonek\",\"brief\":\"mod above i with ogonek\",\"sbrief\":\"mod above i with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"dotless i\"},\"mathspeak\":{\"default\":\"modifying above dotless i\",\"brief\":\"mod above dotless i\",\"sbrief\":\"mod above dotless i\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j hat\"},\"mathspeak\":{\"default\":\"modifying above j with caret\",\"brief\":\"mod above j with caret\",\"sbrief\":\"mod above j with caret\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cedilla\"},\"mathspeak\":{\"default\":\"modifying above k with cedilla\",\"brief\":\"mod above k with cedilla\",\"sbrief\":\"mod above k with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l acute\"},\"mathspeak\":{\"default\":\"modifying above l with acute\",\"brief\":\"mod above l with acute\",\"sbrief\":\"mod above l with acute\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cedilla\"},\"mathspeak\":{\"default\":\"modifying above l with cedilla\",\"brief\":\"mod above l with cedilla\",\"sbrief\":\"mod above l with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"},\"mathspeak\":{\"default\":\"modifying above l with caron\",\"brief\":\"mod above l with caron\",\"sbrief\":\"mod above l with caron\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l middle dot\"},\"mathspeak\":{\"default\":\"modifying above l with middle dot\",\"brief\":\"mod above l with middle dot\",\"sbrief\":\"mod above l with middle dot\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n acute\"},\"mathspeak\":{\"default\":\"modifying above n with acute\",\"brief\":\"mod above n with acute\",\"sbrief\":\"mod above n with acute\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cedilla\"},\"mathspeak\":{\"default\":\"modifying above n with cedilla\",\"brief\":\"mod above n with cedilla\",\"sbrief\":\"mod above n with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"},\"mathspeak\":{\"default\":\"modifying above n with caron\",\"brief\":\"mod above n with caron\",\"sbrief\":\"mod above n with caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o overbar\"},\"mathspeak\":{\"default\":\"o overbar\",\"brief\":\"o overbar\",\"sbrief\":\"o overbar\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o breve\"},\"mathspeak\":{\"default\":\"modifying above o with breve\",\"brief\":\"mod above o with breve\",\"sbrief\":\"mod above o with breve\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o double acute\"},\"mathspeak\":{\"default\":\"modifying above o with double acute\",\"brief\":\"mod above o with double acute\",\"sbrief\":\"mod above o with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r acute\"},\"mathspeak\":{\"default\":\"modifying above r with acute\",\"brief\":\"mod above r with acute\",\"sbrief\":\"mod above r with acute\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cedilla\"},\"mathspeak\":{\"default\":\"modifying above r with cedilla\",\"brief\":\"mod above r with cedilla\",\"sbrief\":\"mod above r with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"},\"mathspeak\":{\"default\":\"modifying above r with caron\",\"brief\":\"mod above r with caron\",\"sbrief\":\"mod above r with caron\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s acute\"},\"mathspeak\":{\"default\":\"modifying above s with acute\",\"brief\":\"mod above s with acute\",\"sbrief\":\"mod above s with acute\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s hat\"},\"mathspeak\":{\"default\":\"modifying above s with caret\",\"brief\":\"mod above s with caret\",\"sbrief\":\"mod above s with caret\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cedilla\"},\"mathspeak\":{\"default\":\"modifying above s with cedilla\",\"brief\":\"mod above s with cedilla\",\"sbrief\":\"mod above s with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"},\"mathspeak\":{\"default\":\"modifying above s with caron\",\"brief\":\"mod above s with caron\",\"sbrief\":\"mod above s with caron\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cedilla\"},\"mathspeak\":{\"default\":\"modifying above t with cedilla\",\"brief\":\"mod above t with cedilla\",\"sbrief\":\"mod above t with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"},\"mathspeak\":{\"default\":\"modifying above t with caron\",\"brief\":\"mod above t with caron\",\"sbrief\":\"mod above t with caron\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"},\"mathspeak\":{\"default\":\"u overtilde\",\"brief\":\"u overtilde\",\"sbrief\":\"u overtilde\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u overbar\"},\"mathspeak\":{\"default\":\"u overbar\",\"brief\":\"u overbar\",\"sbrief\":\"u overbar\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u breve\"},\"mathspeak\":{\"default\":\"modifying above u with breve\",\"brief\":\"mod above u with breve\",\"sbrief\":\"mod above u with breve\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u ring\"},\"mathspeak\":{\"default\":\"modifying above u with ring\",\"brief\":\"mod above u with ring\",\"sbrief\":\"mod above u with ring\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u double acute\"},\"mathspeak\":{\"default\":\"modifying above u with double acute\",\"brief\":\"mod above u with double acute\",\"sbrief\":\"mod above u with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"},\"mathspeak\":{\"default\":\"modifying above u with ogonek\",\"brief\":\"mod above u with ogonek\",\"sbrief\":\"mod above u with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w hat\"},\"mathspeak\":{\"default\":\"modifying above w with caret\",\"brief\":\"mod above w with caret\",\"sbrief\":\"mod above w with caret\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y hat\"},\"mathspeak\":{\"default\":\"modifying above y with caret\",\"brief\":\"mod above y with caret\",\"sbrief\":\"mod above y with caret\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z acute\"},\"mathspeak\":{\"default\":\"modifying above z with acute\",\"brief\":\"mod above z with acute\",\"sbrief\":\"mod above z with acute\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z overdot\"},\"mathspeak\":{\"default\":\"modifying above z with dot\",\"brief\":\"mod above z with dot\",\"sbrief\":\"mod above z with dot\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"},\"mathspeak\":{\"default\":\"modifying above z with caron\",\"brief\":\"mod above z with caron\",\"sbrief\":\"mod above z with caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"},\"mathspeak\":{\"default\":\"modifying above a with caron\",\"brief\":\"mod above a with caron\",\"sbrief\":\"mod above a with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"},\"mathspeak\":{\"default\":\"modifying above i with caron\",\"brief\":\"mod above i with caron\",\"sbrief\":\"mod above i with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"},\"mathspeak\":{\"default\":\"modifying above o with caron\",\"brief\":\"mod above o with caron\",\"sbrief\":\"mod above o with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"},\"mathspeak\":{\"default\":\"modifying above u with caron\",\"brief\":\"mod above u with caron\",\"sbrief\":\"mod above u with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"},\"mathspeak\":{\"default\":\"modifying above g with caron\",\"brief\":\"mod above g with caron\",\"sbrief\":\"mod above g with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"},\"mathspeak\":{\"default\":\"modifying above k with caron\",\"brief\":\"mod above k with caron\",\"sbrief\":\"mod above k with caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"},\"mathspeak\":{\"default\":\"modifying above o with ogonek\",\"brief\":\"mod above o with ogonek\",\"sbrief\":\"mod above o with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"},\"mathspeak\":{\"default\":\"modifying above j with caron\",\"brief\":\"mod above j with caron\",\"sbrief\":\"mod above j with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g acute\"},\"mathspeak\":{\"default\":\"modifying above g with acute\",\"brief\":\"mod above g with acute\",\"sbrief\":\"mod above g with acute\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"},\"mathspeak\":{\"default\":\"modifying above n with grave\",\"brief\":\"mod above n with grave\",\"sbrief\":\"mod above n with grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double grave\"},\"mathspeak\":{\"default\":\"modifying above a with double grave\",\"brief\":\"mod above a with double grave\",\"sbrief\":\"mod above a with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a inverted breve\"},\"mathspeak\":{\"default\":\"modifying above a with inverted breve\",\"brief\":\"mod above a with inverted breve\",\"sbrief\":\"mod above a with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double grave\"},\"mathspeak\":{\"default\":\"modifying above e with double grave\",\"brief\":\"mod above e with double grave\",\"sbrief\":\"mod above e with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e inverted breve\"},\"mathspeak\":{\"default\":\"modifying above e with inverted breve\",\"brief\":\"mod above e with inverted breve\",\"sbrief\":\"mod above e with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double grave\"},\"mathspeak\":{\"default\":\"modifying above i with double grave\",\"brief\":\"mod above i with double grave\",\"sbrief\":\"mod above i with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i inverted breve\"},\"mathspeak\":{\"default\":\"modifying above i with inverted breve\",\"brief\":\"mod above i with inverted breve\",\"sbrief\":\"mod above i with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double grave\"},\"mathspeak\":{\"default\":\"modifying above o with double grave\",\"brief\":\"mod above o with double grave\",\"sbrief\":\"mod above o with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o inverted breve\"},\"mathspeak\":{\"default\":\"modifying above o with inverted breve\",\"brief\":\"mod above o with inverted breve\",\"sbrief\":\"mod above o with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double grave\"},\"mathspeak\":{\"default\":\"modifying above r with double grave\",\"brief\":\"mod above r with double grave\",\"sbrief\":\"mod above r with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r inverted breve\"},\"mathspeak\":{\"default\":\"modifying above r with inverted breve\",\"brief\":\"mod above r with inverted breve\",\"sbrief\":\"mod above r with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double grave\"},\"mathspeak\":{\"default\":\"modifying above u with double grave\",\"brief\":\"mod above u with double grave\",\"sbrief\":\"mod above u with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u inverted breve\"},\"mathspeak\":{\"default\":\"modifying above u with inverted breve\",\"brief\":\"mod above u with inverted breve\",\"sbrief\":\"mod above u with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s comma below\"},\"mathspeak\":{\"default\":\"modifying below s with comma below\",\"brief\":\"mod below s with comma below\",\"sbrief\":\"mod below s with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t comma below\"},\"mathspeak\":{\"default\":\"modifying below t with comma below\",\"brief\":\"mod below t with comma below\",\"sbrief\":\"mod below t with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"},\"mathspeak\":{\"default\":\"modifying above h with caron\",\"brief\":\"mod above h with caron\",\"sbrief\":\"mod above h with caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a overdot\"},\"mathspeak\":{\"default\":\"modifying above a with dot\",\"brief\":\"mod above a with dot\",\"sbrief\":\"mod above a with dot\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cedilla\"},\"mathspeak\":{\"default\":\"modifying above e with cedilla\",\"brief\":\"mod above e with cedilla\",\"sbrief\":\"mod above e with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o overdot\"},\"mathspeak\":{\"default\":\"modifying above o with dot\",\"brief\":\"mod above o with dot\",\"sbrief\":\"mod above o with dot\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y overbar\"},\"mathspeak\":{\"default\":\"y overbar\",\"brief\":\"y overbar\",\"sbrief\":\"y overbar\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless j\"},\"mathspeak\":{\"default\":\"modifying above dotless j\",\"brief\":\"mod above dotless j\",\"sbrief\":\"mod above dotless j\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a ring below\"},\"mathspeak\":{\"default\":\"modifying below a with ring below\",\"brief\":\"mod below a with ring below\",\"sbrief\":\"mod below a with ring below\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b overdot\"},\"mathspeak\":{\"default\":\"modifying above b with dot\",\"brief\":\"mod above b with dot\",\"sbrief\":\"mod above b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b underdot\"},\"mathspeak\":{\"default\":\"modifying below b with dot\",\"brief\":\"mod below b with dot\",\"sbrief\":\"mod below b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b underbar\"},\"mathspeak\":{\"default\":\"b underbar\",\"brief\":\"b underbar\",\"sbrief\":\"b underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d overdot\"},\"mathspeak\":{\"default\":\"modifying above d with dot\",\"brief\":\"mod above d with dot\",\"sbrief\":\"mod above d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d underdot\"},\"mathspeak\":{\"default\":\"modifying below d with dot\",\"brief\":\"mod below d with dot\",\"sbrief\":\"mod below d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d underbar\"},\"mathspeak\":{\"default\":\"d underbar\",\"brief\":\"d underbar\",\"sbrief\":\"d underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cedilla\"},\"mathspeak\":{\"default\":\"modifying above d with cedilla\",\"brief\":\"mod above d with cedilla\",\"sbrief\":\"mod above d with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d underhat\"},\"mathspeak\":{\"default\":\"modifying below d with caret\",\"brief\":\"mod below d with caret\",\"sbrief\":\"mod below d with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e underhat\"},\"mathspeak\":{\"default\":\"modifying below e with caret\",\"brief\":\"mod below e with caret\",\"sbrief\":\"mod below e with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde below\"},\"mathspeak\":{\"default\":\"e undertilde\",\"brief\":\"e undertilde\",\"sbrief\":\"e undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f overdot\"},\"mathspeak\":{\"default\":\"modifying above f with dot\",\"brief\":\"mod above f with dot\",\"sbrief\":\"mod above f with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g overbar\"},\"mathspeak\":{\"default\":\"g overbar\",\"brief\":\"g overbar\",\"sbrief\":\"g overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h overdot\"},\"mathspeak\":{\"default\":\"modifying above h with dot\",\"brief\":\"mod above h with dot\",\"sbrief\":\"mod above h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h underdot\"},\"mathspeak\":{\"default\":\"modifying below h with dot\",\"brief\":\"mod below h with dot\",\"sbrief\":\"mod below h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h double overdot\"},\"mathspeak\":{\"default\":\"modifying above h with double dot\",\"brief\":\"mod above h with double dot\",\"sbrief\":\"mod above h with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cedilla\"},\"mathspeak\":{\"default\":\"modifying above h with cedilla\",\"brief\":\"mod above h with cedilla\",\"sbrief\":\"mod above h with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h breve below\"},\"mathspeak\":{\"default\":\"modifying below h with breve below\",\"brief\":\"mod below h with breve below\",\"sbrief\":\"mod below h with breve below\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde below\"},\"mathspeak\":{\"default\":\"i undertilde\",\"brief\":\"i undertilde\",\"sbrief\":\"i undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k acute\"},\"mathspeak\":{\"default\":\"modifying above k with acute\",\"brief\":\"mod above k with acute\",\"sbrief\":\"mod above k with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k underdot\"},\"mathspeak\":{\"default\":\"modifying below k with dot\",\"brief\":\"mod below k with dot\",\"sbrief\":\"mod below k with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k underbar\"},\"mathspeak\":{\"default\":\"k underbar\",\"brief\":\"k underbar\",\"sbrief\":\"k underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l underdot\"},\"mathspeak\":{\"default\":\"modifying below l with dot\",\"brief\":\"mod below l with dot\",\"sbrief\":\"mod below l with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l underbar\"},\"mathspeak\":{\"default\":\"l underbar\",\"brief\":\"l underbar\",\"sbrief\":\"l underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l underhat\"},\"mathspeak\":{\"default\":\"modifying below l with caret\",\"brief\":\"mod below l with caret\",\"sbrief\":\"mod below l with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m acute\"},\"mathspeak\":{\"default\":\"modifying above m with acute\",\"brief\":\"mod above m with acute\",\"sbrief\":\"mod above m with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m overdot\"},\"mathspeak\":{\"default\":\"modifying above m with dot\",\"brief\":\"mod above m with dot\",\"sbrief\":\"mod above m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m underdot\"},\"mathspeak\":{\"default\":\"modifying below m with dot\",\"brief\":\"mod below m with dot\",\"sbrief\":\"mod below m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n overdot\"},\"mathspeak\":{\"default\":\"modifying above n with dot\",\"brief\":\"mod above n with dot\",\"sbrief\":\"mod above n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n underdot\"},\"mathspeak\":{\"default\":\"modifying below n with dot\",\"brief\":\"mod below n with dot\",\"sbrief\":\"mod below n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n underbar\"},\"mathspeak\":{\"default\":\"n underbar\",\"brief\":\"n underbar\",\"sbrief\":\"n underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n underhat\"},\"mathspeak\":{\"default\":\"modifying below n with caret\",\"brief\":\"mod below n with caret\",\"sbrief\":\"mod below n with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p acute\"},\"mathspeak\":{\"default\":\"modifying above p with acute\",\"brief\":\"mod above p with acute\",\"sbrief\":\"mod above p with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p overdot\"},\"mathspeak\":{\"default\":\"modifying above p with dot\",\"brief\":\"mod above p with dot\",\"sbrief\":\"mod above p with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r overdot\"},\"mathspeak\":{\"default\":\"modifying above r with dot\",\"brief\":\"mod above r with dot\",\"sbrief\":\"mod above r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r underdot\"},\"mathspeak\":{\"default\":\"modifying below r with dot\",\"brief\":\"mod below r with dot\",\"sbrief\":\"mod below r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r underbar\"},\"mathspeak\":{\"default\":\"r underbar\",\"brief\":\"r underbar\",\"sbrief\":\"r underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s overdot\"},\"mathspeak\":{\"default\":\"modifying above s with dot\",\"brief\":\"mod above s with dot\",\"sbrief\":\"mod above s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s underdot\"},\"mathspeak\":{\"default\":\"modifying below s with dot\",\"brief\":\"mod below s with dot\",\"sbrief\":\"mod below s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t overdot\"},\"mathspeak\":{\"default\":\"modifying above t with dot\",\"brief\":\"mod above t with dot\",\"sbrief\":\"mod above t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t underdot\"},\"mathspeak\":{\"default\":\"modifying below t with dot\",\"brief\":\"mod below t with dot\",\"sbrief\":\"mod below t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t underbar\"},\"mathspeak\":{\"default\":\"t underbar\",\"brief\":\"t underbar\",\"sbrief\":\"t underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t underhat\"},\"mathspeak\":{\"default\":\"modifying below t with caret\",\"brief\":\"mod below t with caret\",\"sbrief\":\"mod below t with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u double underdot\"},\"mathspeak\":{\"default\":\"modifying below u with double dot\",\"brief\":\"mod below u with double dot\",\"sbrief\":\"mod below u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde below\"},\"mathspeak\":{\"default\":\"u undertilde\",\"brief\":\"u undertilde\",\"sbrief\":\"u undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u underhat\"},\"mathspeak\":{\"default\":\"modifying below u with caret\",\"brief\":\"mod below u with caret\",\"sbrief\":\"mod below u with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"},\"mathspeak\":{\"default\":\"v overtilde\",\"brief\":\"v overtilde\",\"sbrief\":\"v overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v underdot\"},\"mathspeak\":{\"default\":\"modifying below v with dot\",\"brief\":\"mod below v with dot\",\"sbrief\":\"mod below v with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w grave\"},\"mathspeak\":{\"default\":\"modifying above w with grave\",\"brief\":\"mod above w with grave\",\"sbrief\":\"mod above w with grave\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w acute\"},\"mathspeak\":{\"default\":\"modifying above w with acute\",\"brief\":\"mod above w with acute\",\"sbrief\":\"mod above w with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w double overdot\"},\"mathspeak\":{\"default\":\"modifying above w with double dot\",\"brief\":\"mod above w with double dot\",\"sbrief\":\"mod above w with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w overdot\"},\"mathspeak\":{\"default\":\"modifying above w with dot\",\"brief\":\"mod above w with dot\",\"sbrief\":\"mod above w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w underdot\"},\"mathspeak\":{\"default\":\"modifying below w with dot\",\"brief\":\"mod below w with dot\",\"sbrief\":\"mod below w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x overdot\"},\"mathspeak\":{\"default\":\"modifying above x with dot\",\"brief\":\"mod above x with dot\",\"sbrief\":\"mod above x with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x double overdot\"},\"mathspeak\":{\"default\":\"modifying above x with double dot\",\"brief\":\"mod above x with double dot\",\"sbrief\":\"mod above x with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y overdot\"},\"mathspeak\":{\"default\":\"modifying above y with dot\",\"brief\":\"mod above y with dot\",\"sbrief\":\"mod above y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z hat\"},\"mathspeak\":{\"default\":\"modifying above z with caret\",\"brief\":\"mod above z with caret\",\"sbrief\":\"mod above z with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z underdot\"},\"mathspeak\":{\"default\":\"modifying below z with dot\",\"brief\":\"mod below z with dot\",\"sbrief\":\"mod below z with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z underbar\"},\"mathspeak\":{\"default\":\"z underbar\",\"brief\":\"z underbar\",\"sbrief\":\"z underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h underbar\"},\"mathspeak\":{\"default\":\"h underbar\",\"brief\":\"h underbar\",\"sbrief\":\"h underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t double overdot\"},\"mathspeak\":{\"default\":\"modifying above t with double dot\",\"brief\":\"mod above t with double dot\",\"sbrief\":\"mod above t with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w ring\"},\"mathspeak\":{\"default\":\"modifying above w with ring\",\"brief\":\"mod above w with ring\",\"sbrief\":\"mod above w with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y ring\"},\"mathspeak\":{\"default\":\"modifying above y with ring\",\"brief\":\"mod above y with ring\",\"sbrief\":\"mod above y with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a right half ring\"},\"mathspeak\":{\"default\":\"modifying above a with right half ring\",\"brief\":\"mod above a with right half ring\",\"sbrief\":\"mod above a with right half ring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a underdot\"},\"mathspeak\":{\"default\":\"modifying below a with dot\",\"brief\":\"mod below a with dot\",\"sbrief\":\"mod below a with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a hook\"},\"mathspeak\":{\"default\":\"modifying above a with hook\",\"brief\":\"mod above a with hook\",\"sbrief\":\"mod above a with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e underdot\"},\"mathspeak\":{\"default\":\"modifying below e with dot\",\"brief\":\"mod below e with dot\",\"sbrief\":\"mod below e with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e hook\"},\"mathspeak\":{\"default\":\"modifying above e with hook\",\"brief\":\"mod above e with hook\",\"sbrief\":\"mod above e with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"},\"mathspeak\":{\"default\":\"e overtilde\",\"brief\":\"e overtilde\",\"sbrief\":\"e overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i hook\"},\"mathspeak\":{\"default\":\"modifying above i with hook\",\"brief\":\"mod above i with hook\",\"sbrief\":\"mod above i with hook\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i underdot\"},\"mathspeak\":{\"default\":\"modifying below i with dot\",\"brief\":\"mod below i with dot\",\"sbrief\":\"mod below i with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o underdot\"},\"mathspeak\":{\"default\":\"modifying below o with dot\",\"brief\":\"mod below o with dot\",\"sbrief\":\"mod below o with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o hook\"},\"mathspeak\":{\"default\":\"modifying above o with hook\",\"brief\":\"mod above o with hook\",\"sbrief\":\"mod above o with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u underdot\"},\"mathspeak\":{\"default\":\"modifying below u with dot\",\"brief\":\"mod below u with dot\",\"sbrief\":\"mod below u with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u hook\"},\"mathspeak\":{\"default\":\"modifying above u with hook\",\"brief\":\"mod above u with hook\",\"sbrief\":\"mod above u with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y grave\"},\"mathspeak\":{\"default\":\"modifying above y with grave\",\"brief\":\"mod above y with grave\",\"sbrief\":\"mod above y with grave\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y underdot\"},\"mathspeak\":{\"default\":\"modifying below y with dot\",\"brief\":\"mod below y with dot\",\"sbrief\":\"mod below y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y hook\"},\"mathspeak\":{\"default\":\"modifying above y with hook\",\"brief\":\"mod above y with hook\",\"sbrief\":\"mod above y with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"},\"mathspeak\":{\"default\":\"y overtilde\",\"brief\":\"y overtilde\",\"sbrief\":\"y overtilde\"}}}]\n,\n\"en/symbols/latin-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h\",\"physics\":\"planck constant\"}},\"key\":\"210E\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combining a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combining e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combining i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combining o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combining u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combining c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combining d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combining h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combining m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combining r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combining t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combining v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combining x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subscript i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subscript r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subscript u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subscript v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combining r below\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combining flattened open a above\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combining ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combining ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combining av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combining c cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combining insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combining eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combining g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combining small cap G\"},\"mathspeak\":{\"default\":\"combining small upper G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combining k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combining l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combining small cap L\"},\"mathspeak\":{\"default\":\"combining small upper L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combining small cap M\"},\"mathspeak\":{\"default\":\"combining small upper M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combining n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combining small cap N\"},\"mathspeak\":{\"default\":\"combining small upper N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combining small cap R\"},\"mathspeak\":{\"default\":\"combining small upper R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combining r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combining s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combining long s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combining z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superscript i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superscript n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subscript a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subscript e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subscript o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subscript x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subscript schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subscript h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subscript k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subscript l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subscript m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subscript n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subscript p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subscript s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subscript t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subscript j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"tortoise shell bracketed cap S\"},\"mathspeak\":{\"default\":\"tortoise shell bracketed upper S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"circled italic cap C\"},\"mathspeak\":{\"default\":\"circled italic upper C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"circled italic cap R\"},\"mathspeak\":{\"default\":\"circled italic upper R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"crossed negative squared cap P\"},\"mathspeak\":{\"default\":\"crossed negative squared upper P\"}}}]\n,\n\"en/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot overbar\"},\"mathspeak\":{\"default\":\"upper U double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot acute\"},\"mathspeak\":{\"default\":\"upper U double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot caron\"},\"mathspeak\":{\"default\":\"upper U double overdot caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot grave\"},\"mathspeak\":{\"default\":\"upper U double overdot grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot overbar\"},\"mathspeak\":{\"default\":\"upper A double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"cap A overdot overbar\"},\"mathspeak\":{\"default\":\"upper A overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek overbar\"},\"mathspeak\":{\"default\":\"upper O ogonek overbar\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"cap A ring acute\"},\"mathspeak\":{\"default\":\"upper A ring acute\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot overbar\"},\"mathspeak\":{\"default\":\"upper O double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde overbar\"},\"mathspeak\":{\"default\":\"upper O tilde overbar\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"cap O overdot overbar\"},\"mathspeak\":{\"default\":\"upper O overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla acute\"},\"mathspeak\":{\"default\":\"upper C cedilla acute\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"cap E overbar grave\"},\"mathspeak\":{\"default\":\"upper E overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"cap E overbar acute\"},\"mathspeak\":{\"default\":\"upper E overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla breve\"},\"mathspeak\":{\"default\":\"upper E cedilla breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot acute\"},\"mathspeak\":{\"default\":\"upper I double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"cap L underdot overbar\"},\"mathspeak\":{\"default\":\"upper L underdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde acute\"},\"mathspeak\":{\"default\":\"upper O tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"cap O tilde double overdot\"},\"mathspeak\":{\"default\":\"upper O tilde double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"cap O overbar grave\"},\"mathspeak\":{\"default\":\"upper O overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"cap O overbar acute\"},\"mathspeak\":{\"default\":\"upper O overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"cap R overbar underdot\"},\"mathspeak\":{\"default\":\"upper R overbar underdot\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"cap S acute overdot\"},\"mathspeak\":{\"default\":\"upper S acute overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"cap S caron overdot\"},\"mathspeak\":{\"default\":\"upper S caron overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"cap S underdot overdot\"},\"mathspeak\":{\"default\":\"upper S underdot overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"cap U tilde acute\"},\"mathspeak\":{\"default\":\"upper U tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar double overdot\"},\"mathspeak\":{\"default\":\"upper U overbar double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"cap A hat acute\"},\"mathspeak\":{\"default\":\"upper A hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"cap A hat grave\"},\"mathspeak\":{\"default\":\"upper A hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"cap A hat hook\"},\"mathspeak\":{\"default\":\"upper A hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"cap A hat tilde\"},\"mathspeak\":{\"default\":\"upper A hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"cap A hat underdot\"},\"mathspeak\":{\"default\":\"upper A hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"cap A breve acute\"},\"mathspeak\":{\"default\":\"upper A breve acute\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"cap A breve grave\"},\"mathspeak\":{\"default\":\"upper A breve grave\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"cap A breve hook\"},\"mathspeak\":{\"default\":\"upper A breve hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"cap A breve tilde\"},\"mathspeak\":{\"default\":\"upper A breve tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"cap A breve underdot\"},\"mathspeak\":{\"default\":\"upper A breve underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"cap E hat acute\"},\"mathspeak\":{\"default\":\"upper E hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"cap E hat grave\"},\"mathspeak\":{\"default\":\"upper E hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"cap E hat hook\"},\"mathspeak\":{\"default\":\"upper E hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"cap E hat tilde\"},\"mathspeak\":{\"default\":\"upper E hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"cap E hat underdot\"},\"mathspeak\":{\"default\":\"upper E hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"cap O hat acute\"},\"mathspeak\":{\"default\":\"upper O hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"cap O hat grave\"},\"mathspeak\":{\"default\":\"upper O hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"cap O hat hook\"},\"mathspeak\":{\"default\":\"upper O hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"cap O hat tilde\"},\"mathspeak\":{\"default\":\"upper O hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"cap O hat underdot\"},\"mathspeak\":{\"default\":\"upper O hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"cap O acute prime\"},\"mathspeak\":{\"default\":\"upper O acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"cap O grave prime\"},\"mathspeak\":{\"default\":\"upper O grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"cap O hook prime\"},\"mathspeak\":{\"default\":\"upper O hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"cap O tilde prime\"},\"mathspeak\":{\"default\":\"upper O tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"cap O underdot prime\"},\"mathspeak\":{\"default\":\"upper O underdot prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"cap U acute prime\"},\"mathspeak\":{\"default\":\"upper U acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"cap U grave prime\"},\"mathspeak\":{\"default\":\"upper U grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"cap U hook prime\"},\"mathspeak\":{\"default\":\"upper U hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"cap U tilde prime\"},\"mathspeak\":{\"default\":\"upper U tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"cap U underdot prime\"},\"mathspeak\":{\"default\":\"upper U underdot prime\"}}}]\n,\n\"en/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"cap A grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with grave\",\"brief\":\"mod above upper A with grave\",\"sbrief\":\"mod above upper A with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"cap A acute\"},\"mathspeak\":{\"default\":\"modifying above upper A with acute\",\"brief\":\"mod above upper A with acute\",\"sbrief\":\"mod above upper A with acute\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"cap A hat\"},\"mathspeak\":{\"default\":\"modifying above upper A with caret\",\"brief\":\"mod above upper A with caret\",\"sbrief\":\"mod above upper A with caret\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"cap A tilde\"},\"mathspeak\":{\"default\":\"upper A overtilde\",\"brief\":\"upper A overtilde\",\"sbrief\":\"upper A overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with double dot\",\"brief\":\"mod above upper A with double dot\",\"sbrief\":\"mod above upper A with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"cap A ring\"},\"mathspeak\":{\"default\":\"modifying above upper A with ring\",\"brief\":\"mod above upper A with ring\",\"sbrief\":\"mod above upper A with ring\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper C with cedilla\",\"brief\":\"mod above upper C with cedilla\",\"sbrief\":\"mod above upper C with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"cap E grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with grave\",\"brief\":\"mod above upper E with grave\",\"sbrief\":\"mod above upper E with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"cap E acute\"},\"mathspeak\":{\"default\":\"modifying above upper E with acute\",\"brief\":\"mod above upper E with acute\",\"sbrief\":\"mod above upper E with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"cap E hat\"},\"mathspeak\":{\"default\":\"modifying above upper E with caret\",\"brief\":\"mod above upper E with caret\",\"sbrief\":\"mod above upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"cap E double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with double dot\",\"brief\":\"mod above upper E with double dot\",\"sbrief\":\"mod above upper E with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"cap I grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with grave\",\"brief\":\"mod above upper I with grave\",\"sbrief\":\"mod above upper I with grave\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"cap I acute\"},\"mathspeak\":{\"default\":\"modifying above upper I with acute\",\"brief\":\"mod above upper I with acute\",\"sbrief\":\"mod above upper I with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"cap I hat\"},\"mathspeak\":{\"default\":\"modifying above upper I with caret\",\"brief\":\"mod above upper I with caret\",\"sbrief\":\"mod above upper I with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with double dot\",\"brief\":\"mod above upper I with double dot\",\"sbrief\":\"mod above upper I with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"cap N tilde\"},\"mathspeak\":{\"default\":\"upper N overtilde\",\"brief\":\"upper N overtilde\",\"sbrief\":\"upper N overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"cap O grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with grave\",\"brief\":\"mod above upper O with grave\",\"sbrief\":\"mod above upper O with grave\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"cap O acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with acute\",\"brief\":\"mod above upper O with acute\",\"sbrief\":\"mod above upper O with acute\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"cap O hat\"},\"mathspeak\":{\"default\":\"modifying above upper O with caret\",\"brief\":\"mod above upper O with caret\",\"sbrief\":\"mod above upper O with caret\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"cap O tilde\"},\"mathspeak\":{\"default\":\"upper O overtilde\",\"brief\":\"upper O overtilde\",\"sbrief\":\"upper O overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with double dot\",\"brief\":\"mod above upper O with double dot\",\"sbrief\":\"mod above upper O with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"cap U grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with grave\",\"brief\":\"mod above upper U with grave\",\"sbrief\":\"mod above upper U with grave\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"cap U acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with acute\",\"brief\":\"mod above upper U with acute\",\"sbrief\":\"mod above upper U with acute\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"cap U hat\"},\"mathspeak\":{\"default\":\"modifying above upper U with caret\",\"brief\":\"mod above upper U with caret\",\"sbrief\":\"mod above upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper U with double dot\",\"brief\":\"mod above upper U with double dot\",\"sbrief\":\"mod above upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"cap Y acute\"},\"mathspeak\":{\"default\":\"modifying above upper Y with acute\",\"brief\":\"mod above upper Y with acute\",\"sbrief\":\"mod above upper Y with acute\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"cap A overbar\"},\"mathspeak\":{\"default\":\"upper A overbar\",\"brief\":\"upper A overbar\",\"sbrief\":\"upper A overbar\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"cap A breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with breve\",\"brief\":\"mod above upper A with breve\",\"sbrief\":\"mod above upper A with breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"cap A ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper A with ogonek\",\"brief\":\"mod above upper A with ogonek\",\"sbrief\":\"mod above upper A with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"cap C acute\"},\"mathspeak\":{\"default\":\"modifying above upper C with acute\",\"brief\":\"mod above upper C with acute\",\"sbrief\":\"mod above upper C with acute\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"cap C hat\"},\"mathspeak\":{\"default\":\"modifying above upper C with caret\",\"brief\":\"mod above upper C with caret\",\"sbrief\":\"mod above upper C with caret\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"cap C overdot\"},\"mathspeak\":{\"default\":\"modifying above upper C with dot\",\"brief\":\"mod above upper C with dot\",\"sbrief\":\"mod above upper C with dot\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"cap C caron\"},\"mathspeak\":{\"default\":\"modifying above upper C with caron\",\"brief\":\"mod above upper C with caron\",\"sbrief\":\"mod above upper C with caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"cap D caron\"},\"mathspeak\":{\"default\":\"modifying above upper D with caron\",\"brief\":\"mod above upper D with caron\",\"sbrief\":\"mod above upper D with caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"cap E overbar\"},\"mathspeak\":{\"default\":\"upper E overbar\",\"brief\":\"upper E overbar\",\"sbrief\":\"upper E overbar\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"cap E breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with breve\",\"brief\":\"mod above upper E with breve\",\"sbrief\":\"mod above upper E with breve\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"cap E overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with dot\",\"brief\":\"mod above upper E with dot\",\"sbrief\":\"mod above upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"cap E ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper E with ogonek\",\"brief\":\"mod above upper E with ogonek\",\"sbrief\":\"mod above upper E with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"cap E caron\"},\"mathspeak\":{\"default\":\"modifying above upper E with caron\",\"brief\":\"mod above upper E with caron\",\"sbrief\":\"mod above upper E with caron\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"cap G hat\"},\"mathspeak\":{\"default\":\"modifying above upper G with caret\",\"brief\":\"mod above upper G with caret\",\"sbrief\":\"mod above upper G with caret\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"cap G breve\"},\"mathspeak\":{\"default\":\"modifying above upper G with breve\",\"brief\":\"mod above upper G with breve\",\"sbrief\":\"mod above upper G with breve\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"cap G overdot\"},\"mathspeak\":{\"default\":\"modifying above upper G with dot\",\"brief\":\"mod above upper G with dot\",\"sbrief\":\"mod above upper G with dot\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"cap G cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper G with cedilla\",\"brief\":\"mod above upper G with cedilla\",\"sbrief\":\"mod above upper G with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"cap H hat\"},\"mathspeak\":{\"default\":\"modifying above upper H with caret\",\"brief\":\"mod above upper H with caret\",\"sbrief\":\"mod above upper H with caret\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"cap I tilde\"},\"mathspeak\":{\"default\":\"upper I overtilde\",\"brief\":\"upper I overtilde\",\"sbrief\":\"upper I overtilde\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"cap I overbar\"},\"mathspeak\":{\"default\":\"upper I overbar\",\"brief\":\"upper I overbar\",\"sbrief\":\"upper I overbar\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"cap I breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with breve\",\"brief\":\"mod above upper I with breve\",\"sbrief\":\"mod above upper I with breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"cap I ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper I with ogonek\",\"brief\":\"mod above upper I with ogonek\",\"sbrief\":\"mod above upper I with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"cap I overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with dot\",\"brief\":\"mod above upper I with dot\",\"sbrief\":\"mod above upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"cap J hat\"},\"mathspeak\":{\"default\":\"modifying above upper J with caret\",\"brief\":\"mod above upper J with caret\",\"sbrief\":\"mod above upper J with caret\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"cap K cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper K with cedilla\",\"brief\":\"mod above upper K with cedilla\",\"sbrief\":\"mod above upper K with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"cap L acute\"},\"mathspeak\":{\"default\":\"modifying above upper L with acute\",\"brief\":\"mod above upper L with acute\",\"sbrief\":\"mod above upper L with acute\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"cap L cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper L with cedilla\",\"brief\":\"mod above upper L with cedilla\",\"sbrief\":\"mod above upper L with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"cap L caron\"},\"mathspeak\":{\"default\":\"modifying above upper L with caron\",\"brief\":\"mod above upper L with caron\",\"sbrief\":\"mod above upper L with caron\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"cap L middle dot\"},\"mathspeak\":{\"default\":\"modifying above upper L with middle dot\",\"brief\":\"mod above upper L with middle dot\",\"sbrief\":\"mod above upper L with middle dot\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"cap N acute\"},\"mathspeak\":{\"default\":\"modifying above upper N with acute\",\"brief\":\"mod above upper N with acute\",\"sbrief\":\"mod above upper N with acute\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"cap N cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper N with cedilla\",\"brief\":\"mod above upper N with cedilla\",\"sbrief\":\"mod above upper N with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"cap N caron\"},\"mathspeak\":{\"default\":\"modifying above upper N with caron\",\"brief\":\"mod above upper N with caron\",\"sbrief\":\"mod above upper N with caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"cap O overbar\"},\"mathspeak\":{\"default\":\"upper O overbar\",\"brief\":\"upper O overbar\",\"sbrief\":\"upper O overbar\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"cap O breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with breve\",\"brief\":\"mod above upper O with breve\",\"sbrief\":\"mod above upper O with breve\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"cap O double acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with double acute\",\"brief\":\"mod above upper O with double acute\",\"sbrief\":\"mod above upper O with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"cap R acute\"},\"mathspeak\":{\"default\":\"modifying above upper R with acute\",\"brief\":\"mod above upper R with acute\",\"sbrief\":\"mod above upper R with acute\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"cap R cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper R with cedilla\",\"brief\":\"mod above upper R with cedilla\",\"sbrief\":\"mod above upper R with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"cap R caron\"},\"mathspeak\":{\"default\":\"modifying above upper R with caron\",\"brief\":\"mod above upper R with caron\",\"sbrief\":\"mod above upper R with caron\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"cap S acute\"},\"mathspeak\":{\"default\":\"modifying above upper S with acute\",\"brief\":\"mod above upper S with acute\",\"sbrief\":\"mod above upper S with acute\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"cap S hat\"},\"mathspeak\":{\"default\":\"modifying above upper S with caret\",\"brief\":\"mod above upper S with caret\",\"sbrief\":\"mod above upper S with caret\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"cap S cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper S with cedilla\",\"brief\":\"mod above upper S with cedilla\",\"sbrief\":\"mod above upper S with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"cap S caron\"},\"mathspeak\":{\"default\":\"modifying above upper S with caron\",\"brief\":\"mod above upper S with caron\",\"sbrief\":\"mod above upper S with caron\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"cap T cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper T with cedilla\",\"brief\":\"mod above upper T with cedilla\",\"sbrief\":\"mod above upper T with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"cap T caron\"},\"mathspeak\":{\"default\":\"modifying above upper T with caron\",\"brief\":\"mod above upper T with caron\",\"sbrief\":\"mod above upper T with caron\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"cap U tilde\"},\"mathspeak\":{\"default\":\"upper U overtilde\",\"brief\":\"upper U overtilde\",\"sbrief\":\"upper U overtilde\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar\"},\"mathspeak\":{\"default\":\"upper U overbar\",\"brief\":\"upper U overbar\",\"sbrief\":\"upper U overbar\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"cap U breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with breve\",\"brief\":\"mod above upper U with breve\",\"sbrief\":\"mod above upper U with breve\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"cap U ring\"},\"mathspeak\":{\"default\":\"modifying above upper U with ring\",\"brief\":\"mod above upper U with ring\",\"sbrief\":\"mod above upper U with ring\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"cap U double acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with double acute\",\"brief\":\"mod above upper U with double acute\",\"sbrief\":\"mod above upper U with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"cap U ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper U with ogonek\",\"brief\":\"mod above upper U with ogonek\",\"sbrief\":\"mod above upper U with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"cap W hat\"},\"mathspeak\":{\"default\":\"modifying above upper W with caret\",\"brief\":\"mod above upper W with caret\",\"sbrief\":\"mod above upper W with caret\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"cap Y hat\"},\"mathspeak\":{\"default\":\"modifying above upper Y with caret\",\"brief\":\"mod above upper Y with caret\",\"sbrief\":\"mod above upper Y with caret\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"cap Y double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with double dot\",\"brief\":\"mod above upper Y with double dot\",\"sbrief\":\"mod above upper Y with double dot\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"cap Z acute\"},\"mathspeak\":{\"default\":\"modifying above upper Z with acute\",\"brief\":\"mod above upper Z with acute\",\"sbrief\":\"mod above upper Z with acute\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"cap Z overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Z with dot\",\"brief\":\"mod above upper Z with dot\",\"sbrief\":\"mod above upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"cap Z caron\"},\"mathspeak\":{\"default\":\"modifying above upper Z with caron\",\"brief\":\"mod above upper Z with caron\",\"sbrief\":\"mod above upper Z with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"cap A caron\"},\"mathspeak\":{\"default\":\"modifying above upper A with caron\",\"brief\":\"mod above upper A with caron\",\"sbrief\":\"mod above upper A with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"cap I caron\"},\"mathspeak\":{\"default\":\"modifying above upper I with caron\",\"brief\":\"mod above upper I with caron\",\"sbrief\":\"mod above upper I with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"cap O caron\"},\"mathspeak\":{\"default\":\"modifying above upper O with caron\",\"brief\":\"mod above upper O with caron\",\"sbrief\":\"mod above upper O with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"cap U caron\"},\"mathspeak\":{\"default\":\"modifying above upper U with caron\",\"brief\":\"mod above upper U with caron\",\"sbrief\":\"mod above upper U with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"cap G caron\"},\"mathspeak\":{\"default\":\"modifying above upper G with caron\",\"brief\":\"mod above upper G with caron\",\"sbrief\":\"mod above upper G with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"cap K caron\"},\"mathspeak\":{\"default\":\"modifying above upper K with caron\",\"brief\":\"mod above upper K with caron\",\"sbrief\":\"mod above upper K with caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper O with ogonek\",\"brief\":\"mod above upper O with ogonek\",\"sbrief\":\"mod above upper O with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"cap G acute\"},\"mathspeak\":{\"default\":\"modifying above upper G with acute\",\"brief\":\"mod above upper G with acute\",\"sbrief\":\"mod above upper G with acute\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"cap N grave\"},\"mathspeak\":{\"default\":\"modifying above upper N with grave\",\"brief\":\"mod above upper N with grave\",\"sbrief\":\"mod above upper N with grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"cap A double grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with double grave\",\"brief\":\"mod above upper A with double grave\",\"sbrief\":\"mod above upper A with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"cap A inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with inverted breve\",\"brief\":\"mod above upper A with inverted breve\",\"sbrief\":\"mod above upper A with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"cap E double grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with double grave\",\"brief\":\"mod above upper E with double grave\",\"sbrief\":\"mod above upper E with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"cap E inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with inverted breve\",\"brief\":\"mod above upper E with inverted breve\",\"sbrief\":\"mod above upper E with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"cap I double grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with double grave\",\"brief\":\"mod above upper I with double grave\",\"sbrief\":\"mod above upper I with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"cap I inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with inverted breve\",\"brief\":\"mod above upper I with inverted breve\",\"sbrief\":\"mod above upper I with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"cap O double grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with double grave\",\"brief\":\"mod above upper O with double grave\",\"sbrief\":\"mod above upper O with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"cap O inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with inverted breve\",\"brief\":\"mod above upper O with inverted breve\",\"sbrief\":\"mod above upper O with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"cap R double grave\"},\"mathspeak\":{\"default\":\"modifying above upper R with double grave\",\"brief\":\"mod above upper R with double grave\",\"sbrief\":\"mod above upper R with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"cap R inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper R with inverted breve\",\"brief\":\"mod above upper R with inverted breve\",\"sbrief\":\"mod above upper R with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"cap U double grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with double grave\",\"brief\":\"mod above upper U with double grave\",\"sbrief\":\"mod above upper U with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"cap U inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with inverted breve\",\"brief\":\"mod above upper U with inverted breve\",\"sbrief\":\"mod above upper U with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"cap S comma below\"},\"mathspeak\":{\"default\":\"modifying below upper S with comma below\",\"brief\":\"mod below upper S with comma below\",\"sbrief\":\"mod below upper S with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"cap T comma below\"},\"mathspeak\":{\"default\":\"modifying below upper T with comma below\",\"brief\":\"mod below upper T with comma below\",\"sbrief\":\"mod below upper T with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"cap H caron\"},\"mathspeak\":{\"default\":\"modifying above upper H with caron\",\"brief\":\"mod above upper H with caron\",\"sbrief\":\"mod above upper H with caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"cap A overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with dot\",\"brief\":\"mod above upper A with dot\",\"sbrief\":\"mod above upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper E with cedilla\",\"brief\":\"mod above upper E with cedilla\",\"sbrief\":\"mod above upper E with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"cap O overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with dot\",\"brief\":\"mod above upper O with dot\",\"sbrief\":\"mod above upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"cap Y overbar\"},\"mathspeak\":{\"default\":\"upper Y overbar\",\"brief\":\"upper Y overbar\",\"sbrief\":\"upper Y overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"cap A ring below\"},\"mathspeak\":{\"default\":\"modifying below upper A with ring below\",\"brief\":\"mod below upper A with ring below\",\"sbrief\":\"mod below upper A with ring below\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"cap B overdot\"},\"mathspeak\":{\"default\":\"modifying above upper B with dot\",\"brief\":\"mod above upper B with dot\",\"sbrief\":\"mod above upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"cap B underdot\"},\"mathspeak\":{\"default\":\"modifying below upper B with dot\",\"brief\":\"mod below upper B with dot\",\"sbrief\":\"mod below upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"cap B underbar\"},\"mathspeak\":{\"default\":\"upper B underbar\",\"brief\":\"upper B underbar\",\"sbrief\":\"upper B underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"cap D overdot\"},\"mathspeak\":{\"default\":\"modifying above upper D with dot\",\"brief\":\"mod above upper D with dot\",\"sbrief\":\"mod above upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"cap D underdot\"},\"mathspeak\":{\"default\":\"modifying below upper D with dot\",\"brief\":\"mod below upper D with dot\",\"sbrief\":\"mod below upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"cap D underbar\"},\"mathspeak\":{\"default\":\"upper D underbar\",\"brief\":\"upper D underbar\",\"sbrief\":\"upper D underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"cap D cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper D with cedilla\",\"brief\":\"mod above upper D with cedilla\",\"sbrief\":\"mod above upper D with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"cap D underhat\"},\"mathspeak\":{\"default\":\"modifying below upper D with caret\",\"brief\":\"mod below upper D with caret\",\"sbrief\":\"mod below upper D with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"cap E underhat\"},\"mathspeak\":{\"default\":\"modifying below upper E with caret\",\"brief\":\"mod below upper E with caret\",\"sbrief\":\"mod below upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"cap E tilde below\"},\"mathspeak\":{\"default\":\"upper E undertilde\",\"brief\":\"upper E undertilde\",\"sbrief\":\"upper E undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"cap F overdot\"},\"mathspeak\":{\"default\":\"modifying above upper F with dot\",\"brief\":\"mod above upper F with dot\",\"sbrief\":\"mod above upper F with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"cap G overbar\"},\"mathspeak\":{\"default\":\"upper G overbar\",\"brief\":\"upper G overbar\",\"sbrief\":\"upper G overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"cap H overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with dot\",\"brief\":\"mod above upper H with dot\",\"sbrief\":\"mod above upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"cap H underdot\"},\"mathspeak\":{\"default\":\"modifying below upper H with dot\",\"brief\":\"mod below upper H with dot\",\"sbrief\":\"mod below upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"cap H double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with double dot\",\"brief\":\"mod above upper H with double dot\",\"sbrief\":\"mod above upper H with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"cap H cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper H with cedilla\",\"brief\":\"mod above upper H with cedilla\",\"sbrief\":\"mod above upper H with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"cap H breve below\"},\"mathspeak\":{\"default\":\"modifying below upper H with breve below\",\"brief\":\"mod below upper H with breve below\",\"sbrief\":\"mod below upper H with breve below\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"cap I tilde below\"},\"mathspeak\":{\"default\":\"upper I undertilde\",\"brief\":\"upper I undertilde\",\"sbrief\":\"upper I undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"cap K acute\"},\"mathspeak\":{\"default\":\"modifying above upper K with acute\",\"brief\":\"mod above upper K with acute\",\"sbrief\":\"mod above upper K with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"cap K underdot\"},\"mathspeak\":{\"default\":\"modifying below upper K with dot\",\"brief\":\"mod below upper K with dot\",\"sbrief\":\"mod below upper K with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"cap K underbar\"},\"mathspeak\":{\"default\":\"upper K underbar\",\"brief\":\"upper K underbar\",\"sbrief\":\"upper K underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"cap L underdot\"},\"mathspeak\":{\"default\":\"modifying below upper L with dot\",\"brief\":\"mod below upper L with dot\",\"sbrief\":\"mod below upper L with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"cap L underbar\"},\"mathspeak\":{\"default\":\"upper L underbar\",\"brief\":\"upper L underbar\",\"sbrief\":\"upper L underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"cap L underhat\"},\"mathspeak\":{\"default\":\"modifying below upper L with caret\",\"brief\":\"mod below upper L with caret\",\"sbrief\":\"mod below upper L with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"cap M acute\"},\"mathspeak\":{\"default\":\"modifying above upper M with acute\",\"brief\":\"mod above upper M with acute\",\"sbrief\":\"mod above upper M with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"cap M overdot\"},\"mathspeak\":{\"default\":\"modifying above upper M with dot\",\"brief\":\"mod above upper M with dot\",\"sbrief\":\"mod above upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"cap M underdot\"},\"mathspeak\":{\"default\":\"modifying below upper M with dot\",\"brief\":\"mod below upper M with dot\",\"sbrief\":\"mod below upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"cap N overdot\"},\"mathspeak\":{\"default\":\"modifying above upper N with dot\",\"brief\":\"mod above upper N with dot\",\"sbrief\":\"mod above upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"cap N underdot\"},\"mathspeak\":{\"default\":\"modifying below upper N with dot\",\"brief\":\"mod below upper N with dot\",\"sbrief\":\"mod below upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"cap N underbar\"},\"mathspeak\":{\"default\":\"upper N underbar\",\"brief\":\"upper N underbar\",\"sbrief\":\"upper N underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"cap N underhat\"},\"mathspeak\":{\"default\":\"modifying below upper N with caret\",\"brief\":\"mod below upper N with caret\",\"sbrief\":\"mod below upper N with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"cap P acute\"},\"mathspeak\":{\"default\":\"modifying above upper P with acute\",\"brief\":\"mod above upper P with acute\",\"sbrief\":\"mod above upper P with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"cap P overdot\"},\"mathspeak\":{\"default\":\"modifying above upper P with dot\",\"brief\":\"mod above upper P with dot\",\"sbrief\":\"mod above upper P with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"cap R overdot\"},\"mathspeak\":{\"default\":\"modifying above upper R with dot\",\"brief\":\"mod above upper R with dot\",\"sbrief\":\"mod above upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"cap R underdot\"},\"mathspeak\":{\"default\":\"modifying below upper R with dot\",\"brief\":\"mod below upper R with dot\",\"sbrief\":\"mod below upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"cap R underbar\"},\"mathspeak\":{\"default\":\"upper R underbar\",\"brief\":\"upper R underbar\",\"sbrief\":\"upper R underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"cap S overdot\"},\"mathspeak\":{\"default\":\"modifying above upper S with dot\",\"brief\":\"mod above upper S with dot\",\"sbrief\":\"mod above upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"cap S underdot\"},\"mathspeak\":{\"default\":\"modifying below upper S with dot\",\"brief\":\"mod below upper S with dot\",\"sbrief\":\"mod below upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"cap T overdot\"},\"mathspeak\":{\"default\":\"modifying above upper T with dot\",\"brief\":\"mod above upper T with dot\",\"sbrief\":\"mod above upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"cap T underdot\"},\"mathspeak\":{\"default\":\"modifying below upper T with dot\",\"brief\":\"mod below upper T with dot\",\"sbrief\":\"mod below upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"cap T underbar\"},\"mathspeak\":{\"default\":\"upper T underbar\",\"brief\":\"upper T underbar\",\"sbrief\":\"upper T underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"cap T underhat\"},\"mathspeak\":{\"default\":\"modifying below upper T with caret\",\"brief\":\"mod below upper T with caret\",\"sbrief\":\"mod below upper T with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"cap U double underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with double dot\",\"brief\":\"mod below upper U with double dot\",\"sbrief\":\"mod below upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"cap U tilde below\"},\"mathspeak\":{\"default\":\"upper U undertilde\",\"brief\":\"upper U undertilde\",\"sbrief\":\"upper U undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"cap U underhat\"},\"mathspeak\":{\"default\":\"modifying below upper U with caret\",\"brief\":\"mod below upper U with caret\",\"sbrief\":\"mod below upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"cap V tilde\"},\"mathspeak\":{\"default\":\"upper V overtilde\",\"brief\":\"upper V overtilde\",\"sbrief\":\"upper V overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"cap V underdot\"},\"mathspeak\":{\"default\":\"modifying below upper V with dot\",\"brief\":\"mod below upper V with dot\",\"sbrief\":\"mod below upper V with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"cap W grave\"},\"mathspeak\":{\"default\":\"modifying above upper W with grave\",\"brief\":\"mod above upper W with grave\",\"sbrief\":\"mod above upper W with grave\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"cap W acute\"},\"mathspeak\":{\"default\":\"modifying above upper W with acute\",\"brief\":\"mod above upper W with acute\",\"sbrief\":\"mod above upper W with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"cap W double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with double dot\",\"brief\":\"mod above upper W with double dot\",\"sbrief\":\"mod above upper W with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"cap W overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with dot\",\"brief\":\"mod above upper W with dot\",\"sbrief\":\"mod above upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"cap W underdot\"},\"mathspeak\":{\"default\":\"modifying below upper W with dot\",\"brief\":\"mod below upper W with dot\",\"sbrief\":\"mod below upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"cap X overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with dot\",\"brief\":\"mod above upper X with dot\",\"sbrief\":\"mod above upper X with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"cap X double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with double dot\",\"brief\":\"mod above upper X with double dot\",\"sbrief\":\"mod above upper X with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"cap Y overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with dot\",\"brief\":\"mod above upper Y with dot\",\"sbrief\":\"mod above upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"cap Z circumflex\"},\"mathspeak\":{\"default\":\"modifying above upper Z with circumflex\",\"brief\":\"mod above upper Z with circumflex\",\"sbrief\":\"mod above upper Z with circumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"cap Z underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Z with dot\",\"brief\":\"mod below upper Z with dot\",\"sbrief\":\"mod below upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"cap Z underbar\"},\"mathspeak\":{\"default\":\"upper Z underbar\",\"brief\":\"upper Z underbar\",\"sbrief\":\"upper Z underbar\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"cap A underdot\"},\"mathspeak\":{\"default\":\"modifying below upper A with dot\",\"brief\":\"mod below upper A with dot\",\"sbrief\":\"mod below upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"cap A hook\"},\"mathspeak\":{\"default\":\"modifying above upper A with hook\",\"brief\":\"mod above upper A with hook\",\"sbrief\":\"mod above upper A with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"cap E underdot\"},\"mathspeak\":{\"default\":\"modifying below upper E with dot\",\"brief\":\"mod below upper E with dot\",\"sbrief\":\"mod below upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"cap E hook\"},\"mathspeak\":{\"default\":\"modifying above upper E with hook\",\"brief\":\"mod above upper E with hook\",\"sbrief\":\"mod above upper E with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"cap E tilde\"},\"mathspeak\":{\"default\":\"upper E overtilde\",\"brief\":\"upper E overtilde\",\"sbrief\":\"upper E overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"cap I hook\"},\"mathspeak\":{\"default\":\"modifying above upper I with hook\",\"brief\":\"mod above upper I with hook\",\"sbrief\":\"mod above upper I with hook\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"cap I underdot\"},\"mathspeak\":{\"default\":\"modifying below upper I with dot\",\"brief\":\"mod below upper I with dot\",\"sbrief\":\"mod below upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"cap O underdot\"},\"mathspeak\":{\"default\":\"modifying below upper O with dot\",\"brief\":\"mod below upper O with dot\",\"sbrief\":\"mod below upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"cap O hook\"},\"mathspeak\":{\"default\":\"modifying above upper O with hook\",\"brief\":\"mod above upper O with hook\",\"sbrief\":\"mod above upper O with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"cap U underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with dot\",\"brief\":\"mod below upper U with dot\",\"sbrief\":\"mod below upper U with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"cap U hook\"},\"mathspeak\":{\"default\":\"modifying above upper U with hook\",\"brief\":\"mod above upper U with hook\",\"sbrief\":\"mod above upper U with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"cap Y grave\"},\"mathspeak\":{\"default\":\"modifying above upper Y with grave\",\"brief\":\"mod above upper Y with grave\",\"sbrief\":\"mod above upper Y with grave\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"cap Y underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Y with dot\",\"brief\":\"mod below upper Y with dot\",\"sbrief\":\"mod below upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"cap Y hook\"},\"mathspeak\":{\"default\":\"modifying above upper Y with hook\",\"brief\":\"mod above upper Y with hook\",\"sbrief\":\"mod above upper Y with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"cap Y tilde\"},\"mathspeak\":{\"default\":\"upper Y overtilde\",\"brief\":\"upper Y overtilde\",\"sbrief\":\"upper Y overtilde\"}}}]\n,\n\"en/symbols/math_angles.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with arc\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with downwards zigzag arrow\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three dimensional angle\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle opening left\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle variant with square\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured right angle with dot\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with s inside\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"acute angle\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening left\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening up\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned angle\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with underbar\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle with underbar\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening up\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening down\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and right\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and left\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and right\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and left\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"key\":\"29AF\"}]\n,\n\"en/symbols/math_arrows.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow\"},\"mathspeak\":{\"sbrief\":\"L R arrow\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow\"},\"mathspeak\":{\"sbrief\":\"U D arrow\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow\"},\"mathspeak\":{\"sbrief\":\"U L arrow\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right arrow\"},\"mathspeak\":{\"sbrief\":\"U R arrow\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right arrow\"},\"mathspeak\":{\"sbrief\":\"D R arrow\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left arrow\"},\"mathspeak\":{\"sbrief\":\"D L arrow\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with stroke\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with stroke\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left wave arrow\"},\"mathspeak\":{\"sbrief\":\"L wave arrow\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right wave arrow\"},\"mathspeak\":{\"sbrief\":\"R wave arrow\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed left arrow\"},\"mathspeak\":{\"sbrief\":\"two headed L arrow\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed up arrow\"},\"mathspeak\":{\"sbrief\":\"two headed U arrow\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed down arrow\"},\"mathspeak\":{\"sbrief\":\"two headed D arrow\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"U arrow from bar\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow from bar\"},\"mathspeak\":{\"sbrief\":\"D arrow from bar\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow with base\"},\"mathspeak\":{\"sbrief\":\"U D arrow with base\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"L arrow with hook\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with hook\"},\"mathspeak\":{\"sbrief\":\"R arrow with hook\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with loop\"},\"mathspeak\":{\"sbrief\":\"L arrow with loop\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with loop\"},\"mathspeak\":{\"sbrief\":\"R arrow with loop\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right wave arrow\"},\"mathspeak\":{\"sbrief\":\"L R wave arrow\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with stroke\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down zigzag arrow\"},\"mathspeak\":{\"sbrief\":\"d zigzag arrow\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip left\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip right\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip left\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip right\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with corner down\"},\"mathspeak\":{\"sbrief\":\"R arrow with corner down\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with corner left\"},\"mathspeak\":{\"sbrief\":\"D arrow with corner left\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise top semicircle arrow\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise top semicircle arrow\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow to long bar\"},\"mathspeak\":{\"sbrief\":\"U L arrow to long bar\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar over right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar over R arrow to bar\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise open circle arrow\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise open circle arrow\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow over left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow over L arrow\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow left of down arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow L of D arrow\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow over right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow over R arrow\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left paired arrows\"},\"mathspeak\":{\"sbrief\":\"L paired arrows\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up paired arrows\"},\"mathspeak\":{\"sbrief\":\"U paired arrows\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right paired arrows\"},\"mathspeak\":{\"sbrief\":\"R paired arrows\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down paired arrows\"},\"mathspeak\":{\"sbrief\":\"D paired arrows\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L double arrow with stroke\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R double arrow with stroke\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R double arrow with stroke\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow\"},\"mathspeak\":{\"sbrief\":\"L double arrow\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up double arrow\"},\"mathspeak\":{\"sbrief\":\"U double arrow\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow\"},\"mathspeak\":{\"sbrief\":\"R double arrow\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down double arrow\"},\"mathspeak\":{\"sbrief\":\"d double arrow\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow\"},\"mathspeak\":{\"sbrief\":\"L R double arrow\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down double arrow\"},\"mathspeak\":{\"sbrief\":\"U d double arrow\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left double arrow\"},\"mathspeak\":{\"sbrief\":\"U L double arrow\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right double arrow\"},\"mathspeak\":{\"sbrief\":\"U R double arrow\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right double arrow\"},\"mathspeak\":{\"sbrief\":\"d R double arrow\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left double arrow\"},\"mathspeak\":{\"sbrief\":\"d L double arrow\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left triple arrow\"},\"mathspeak\":{\"sbrief\":\"L triple arrow\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right triple arrow\"},\"mathspeak\":{\"sbrief\":\"r triple arrow\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"L squiggle arrow\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"r squiggle arrow\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with double stroke\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"D arrow with double stroke\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"L dasheD arrow\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"U dasheD arrow\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"r dasheD arrow\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"d dasheD arrow\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"R arrow to bar\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left arrow\"},\"mathspeak\":{\"sbrief\":\"white L arrow\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow\"},\"mathspeak\":{\"sbrief\":\"white U arrow\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow\"},\"mathspeak\":{\"sbrief\":\"white R arrow\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down arrow\"},\"mathspeak\":{\"sbrief\":\"white D arrow\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow from bar\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with horizontal bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with horizontal bar\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with vertical bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with vertical bar\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow\"},\"mathspeak\":{\"sbrief\":\"white double U arrow\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white double U arrow on pedestal\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow from wall\"},\"mathspeak\":{\"sbrief\":\"white R arrow from wall\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west arrow to corner\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east arrow to corner\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down white arrow\"},\"mathspeak\":{\"sbrief\":\"U d white arrow\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"R arrow with small circle\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow left of up arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow l of U arrow\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three right arrows\"},\"mathspeak\":{\"sbrief\":\"three R arrows\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with vertical stroke\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with vertical stroke\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with vertical stroke\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with double vertical stroke\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with double vertical stroke\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with double vertical stroke\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left open headed arrow\"},\"mathspeak\":{\"sbrief\":\"l open headed arrow\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"r open headed arrow\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"L R open headed arrow\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"electric arrow\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead\"},\"mathspeak\":{\"sbrief\":\"U arrowhead\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrowhead\"},\"mathspeak\":{\"sbrief\":\"D arrowhead\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead between two horizontal bars\",\"alternative\":\"enter key\"},\"mathspeak\":{\"sbrief\":\"U arrowhead between two horizontal bars\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken circle with northwest arrow\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wide headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wide headed R arrow\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy d R arrow\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy R arrow\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy U R arrow\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"drafting point right arrow\"},\"mathspeak\":{\"sbrief\":\"drafting point R arrow\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy round tipped right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy round tipped R arrow\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"triangle headed R arrow\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy triangle headed R arrow\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"dashed triangle headed R arrow\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy dashed triangle headed R arrow\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrow\"},\"mathspeak\":{\"sbrief\":\"black R arrow\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d top lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d top lighted R arrowhead\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d bottom lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d bottom lighted R arrowhead\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrowhead\"},\"mathspeak\":{\"sbrief\":\"black R arrowhead\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved down and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved d and R arrow\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved up and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved U and R arrow\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"squat black right arrow\"},\"mathspeak\":{\"sbrief\":\"squat black R arrow\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy concave pointed black right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy concave pointed black R arrow\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"right shaded white R arrow\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"left shaded white R arrow\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"back tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"back tilted shadowed white R arrow\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"front tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"front tilted shadowed white R arrow\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy lower right shadowed white R arrow\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy upper right shadowed white R arrow\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched lower right shadowed white R arrow\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched upper right shadowed white R arrow\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled heavy white right arrow\"},\"mathspeak\":{\"sbrief\":\"circled heavy white R arrow\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"white feathered R arrow\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered d R arrow\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered R arrow\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered U R arrow\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered d R arrow\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered R arrow\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered U R arrow\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop barbed right arrow\"},\"mathspeak\":{\"sbrief\":\"teardrop barbed R arrow\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop shanked right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy teardrop shanked R arrow\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"wedge tailed R arrow\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wedge tailed R arrow\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open outlined right arrow\"},\"mathspeak\":{\"sbrief\":\"open outlined R arrow\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"U quadruple arrow\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"d quadrule arrow\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise gapped circle arrow\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise gapped circle arrow\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"R arrow with circled plus\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow\"},\"mathspeak\":{\"sbrief\":\"long L arrow\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow\"},\"mathspeak\":{\"sbrief\":\"long R arrow\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right arrow\"},\"mathspeak\":{\"sbrief\":\"long L R arrow\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow\"},\"mathspeak\":{\"sbrief\":\"long l double arrow\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow\"},\"mathspeak\":{\"sbrief\":\"long R double arrow\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right double arrow\"},\"mathspeak\":{\"sbrief\":\"long L R double arrow\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long L arrow from bar\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R arrow from bar\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long l double arrow from bar\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R double arrow from bar\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long r squiggle arrow\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with vertical stroke\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with double vertical stroke\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L arrow with vertical stroke\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double R arrow with vertical stroke\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L R arrow with vertical stroke\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow from bar\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double L arrow from bar\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double R arrow from bar\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow down with horizontal stroke\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow with horizontal stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with horizontal stroke\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up triple arrow\"},\"mathspeak\":{\"sbrief\":\"U triple arrow\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down triple arrow\"},\"mathspeak\":{\"sbrief\":\"d triple arrow\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double dash arrow\"},\"mathspeak\":{\"sbrief\":\"l double dash arrow\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double dash arrow\"},\"mathspeak\":{\"sbrief\":\"R double dash arrow\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l triple dash arrow\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r triple dash arrow\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r two headed triple dash arrow\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"R arrow with dotted stem\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow to bar\"},\"mathspeak\":{\"sbrief\":\"U arrow to bar\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow to bar\"},\"mathspeak\":{\"sbrief\":\"D arrow to bar\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with vertical stroke\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with double vertical stroke\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with vertical stroke\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with double vertical stroke\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow tail\"},\"mathspeak\":{\"sbrief\":\"L arrow tail\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow tail\"},\"mathspeak\":{\"sbrief\":\"R arrow tail\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double arrow tail\"},\"mathspeak\":{\"sbrief\":\"l double arrow tail\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow tail\"},\"mathspeak\":{\"sbrief\":\"R double arrow tail\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow to black diamond\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow to black diamond\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar to black diamond\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar to black diamond\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west and south east arrow\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east and south west arrow\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow with hook\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow with hook\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow with hook\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow with hook\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow and north east arrow\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow and south east arrow\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow and south west arrow\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow and north west arrow\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow crossing north east arrow\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing south east arrow\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing north east arrow\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing south east arrow\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing north west arrow\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow crossing north east arrow\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly right\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving up\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving down\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving left\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving right\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right side arc clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"r side arc clockwise arrow\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left side arc anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"l side arc anticlockwise arrow\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom arc anticlockwise arrow\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc clockwise arrow with minus\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow with plus\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right semicircular clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d r semicircular clockwise arrow\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down left semicircular anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d l semicircular anticlockwise arrow\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise closed circle arrow\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise closed circle arrow\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above short left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow above short L arrow\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above short right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow above short R arrow\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short right arrow above left arrow\"},\"mathspeak\":{\"sbrief\":\"short R arrow above L arrow\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"R arrow with plus below\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"L arrow with plus below\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through x\"},\"mathspeak\":{\"sbrief\":\"R arrow through x\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow through small circle\"},\"mathspeak\":{\"sbrief\":\"L R arrow through small circle\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up two headed arrow from small circle\"},\"mathspeak\":{\"sbrief\":\"U two headed arrow from small circle\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with rounded head\"},\"mathspeak\":{\"sbrief\":\"R double arrow with rounded head\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above right arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above R arrow\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above R arrow\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above tilde operator\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above tilde operator\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above almost equals\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above left arrow\"},\"mathspeak\":{\"sbrief\":\"less than above L arrow\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through less than\"},\"mathspeak\":{\"sbrief\":\"L arrow through less than\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above right arrow\"},\"mathspeak\":{\"sbrief\":\"greater than above R arrow\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above right arrow\"},\"mathspeak\":{\"sbrief\":\"subset above R arrow\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through subset\"},\"mathspeak\":{\"sbrief\":\"L arrow through subset\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above left arrow\"},\"mathspeak\":{\"sbrief\":\"suerset above L arrow\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with right arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with R arrow above\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with left arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with L arrow above\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow through circle\"},\"mathspeak\":{\"sbrief\":\"U arrow through circle\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black diamond with down arrow\"},\"mathspeak\":{\"sbrief\":\"black diamond with D arrow\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"white circle with D arrow\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"black circle with D arrow\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"integral with L arrow with hook\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east white arrow\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west white arrow\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east white arrow\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west white arrow\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right white arrow\"},\"mathspeak\":{\"sbrief\":\"L R white arrow\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left black arrow\"},\"mathspeak\":{\"sbrief\":\"L black arrow\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up black arrow\"},\"mathspeak\":{\"sbrief\":\"U black arrow\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down black arrow\"},\"mathspeak\":{\"sbrief\":\"D black arrow\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east black arrow\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west black arrow\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east black arrow\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west black arrow\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right black arrow\"},\"mathspeak\":{\"sbrief\":\"L R black arrow\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down black arrow\"},\"mathspeak\":{\"sbrief\":\"U D black arrow\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip down\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip up\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip down\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip up\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"L arrow with small circle\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three left arrows\"},\"mathspeak\":{\"sbrief\":\"three L arrows\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"L arrow with circled plus\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long l squiggle arrow\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with vertical stroke\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with double vertical stroke\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow from bar\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow from bar\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l two headed triple dash arrow\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"L arrow with dotted stem\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with vertical stroke\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with double vertical stroke\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with vertical stroke\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with double vertical stroke\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through x\"},\"mathspeak\":{\"sbrief\":\"L arrow through x\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly left\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above left arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above L arrow\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above L arrow\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse almost equals\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through greater than\"},\"mathspeak\":{\"sbrief\":\"R arrow through greater than\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through superset\"},\"mathspeak\":{\"sbrief\":\"R arrow through superset\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"l quadrule arrow\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"r quadrule arrow\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above R arrow\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse almost equals\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above L arrow\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above almost equals\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse tilde operator\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse tilde operator\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth left arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth L arrow\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth up arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth U arrow\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth right arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth R arrow\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth down arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth D arrow\"}},\"key\":\"FFEC\"}]\n,\n\"en/symbols/math_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"script cap P\"},\"mathspeak\":{\"default\":\"script upper P\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck pi\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck gamma\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Gamma\"},\"mathspeak\":{\"default\":\"double struck upper Gamma\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Pi\"},\"mathspeak\":{\"default\":\"double struck upper Pi\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double struck sum\"},\"mathspeak\":{\"default\":\"double struck sigma summation\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck italic cap D\"},\"mathspeak\":{\"default\":\"double struck italic upper D\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic d\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic e\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic i\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic j\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless j\"}},\"key\":\"1D6A5\"}]\n,\n\"en/symbols/math_delimiters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left parenthesis\"},\"mathspeak\":{\"brief\":\"left p'ren\",\"sbrief\":\"L p'ren\"},\"clearspeak\":{\"default\":\"open paren\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right parenthesis\"},\"mathspeak\":{\"brief\":\"right p'ren\",\"sbrief\":\"R p'ren\"},\"clearspeak\":{\"default\":\"close paren\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket\"},\"mathspeak\":{\"brief\":\"left brack\",\"sbrief\":\"L brack\"},\"clearspeak\":{\"default\":\"open bracket\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket\"},\"mathspeak\":{\"brief\":\"right brack\",\"sbrief\":\"R brack\"},\"clearspeak\":{\"default\":\"close bracket\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left brace\"},\"mathspeak\":{\"sbrief\":\"L brace\"},\"clearspeak\":{\"default\":\"open brace\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right brace\"},\"mathspeak\":{\"sbrief\":\"R brace\"},\"clearspeak\":{\"default\":\"close brace\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with quill\"},\"mathspeak\":{\"brief\":\"left brack with quill\",\"sbrief\":\"L brack with quill\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with quill\"},\"mathspeak\":{\"brief\":\"right brack with quill\",\"sbrief\":\"R brack with quill\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left ceiling\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right ceiling\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left floor\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right floor\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right crop\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left crop\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right crop\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left crop\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left corner\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right corner\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left corner\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right corner\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top half integral\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom half integral\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing angle bracket\",\"physics\":\"bra\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing angle bracket\",\"physics\":\"ket\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"left p'ren upper hook\",\"sbrief\":\"L p'ren upper hook\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis extension\"},\"mathspeak\":{\"brief\":\"left p'ren extension\",\"sbrief\":\"L p'ren extension\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"left p'ren lower hook\",\"sbrief\":\"L p'ren lower hook\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"right p'ren upper hook\",\"sbrief\":\"R p'ren upper hook\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis extension\"},\"mathspeak\":{\"brief\":\"right p'ren extension\",\"sbrief\":\"R p'ren extension\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"right p'ren lower hook\",\"sbrief\":\"R p'ren lower hook\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket upper corner\"},\"mathspeak\":{\"brief\":\"left brack upper corner\",\"sbrief\":\"L brack upper corner\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket extension\"},\"mathspeak\":{\"brief\":\"left brack extension\",\"sbrief\":\"L brack extension\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket lower corner\"},\"mathspeak\":{\"brief\":\"left brack lower corner\",\"sbrief\":\"L brack lower corner\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket upper corner\"},\"mathspeak\":{\"brief\":\"right brack upper corner\",\"sbrief\":\"R brack upper corner\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket extension\"},\"mathspeak\":{\"brief\":\"right brack extension\",\"sbrief\":\"R brack extension\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket lower corner\"},\"mathspeak\":{\"brief\":\"right brack lower corner\",\"sbrief\":\"R brack lower corner\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace upper hook\"},\"mathspeak\":{\"sbrief\":\"L brace upper hook\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace middle piece\"},\"mathspeak\":{\"sbrief\":\"L brace middle piece\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace lower hook\"},\"mathspeak\":{\"sbrief\":\"L brace lower hook\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"brace extension\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace upper hook\"},\"mathspeak\":{\"sbrief\":\"R brace upper hook\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace middle piece\"},\"mathspeak\":{\"sbrief\":\"R brace middle piece\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace lower hook\"},\"mathspeak\":{\"sbrief\":\"R brace lower hook\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral extension\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"horizontal line extension\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left or lower right brace section\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right or lower left brace section\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation top\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation bottom\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top bracket\"},\"mathspeak\":{\"brief\":\"top brack\",\"sbrief\":\"T brack\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket\"},\"mathspeak\":{\"brief\":\"bottom brack\",\"sbrief\":\"B brack\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket over top bracket\"},\"mathspeak\":{\"brief\":\"bottom brack over top brack\",\"sbrief\":\"B brack over T brack\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"radical symbol bottom\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left vertical box line\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right vertical box line\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top parenthesis\"},\"mathspeak\":{\"brief\":\"top p'ren\",\"sbrief\":\"t p'ren\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom parenthesis\"},\"mathspeak\":{\"brief\":\"bottom p'ren\",\"sbrief\":\"b p'ren\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top brace\"},\"mathspeak\":{\"sbrief\":\"T brace\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom brace\"},\"mathspeak\":{\"sbrief\":\"B brace\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top tortoise shell bracket\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom tortoise shell bracket\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium left p'ren ornament\",\"sbrief\":\"medium L p'ren ornament\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium right p'ren ornament\",\"sbrief\":\"medium R p'ren ornament\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium flattened left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened left p'ren ornament\",\"sbrief\":\"medium flattened L p'ren ornament\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium flattened right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened right p'ren ornament\",\"sbrief\":\"medium flattened R p'ren ornament\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left pointing angle bracket ornament\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right pointing angle bracket ornament\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle quotation mark ornament\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle quotation mark ornament\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle bracket ornament\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle bracket ornament\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"light left tortoise shell bracket ornament\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"light right tortoise shell bracket ornament\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium L brace ornament\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium R brace ornament\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left s shaped bag delimiter\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right s shaped bag delimiter\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"flattened left parenthesis\"},\"mathspeak\":{\"brief\":\"flattened left p'ren\",\"sbrief\":\"flattened L p'ren\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"flattened right parenthesis\"},\"mathspeak\":{\"brief\":\"flattened right p'ren\",\"sbrief\":\"flattened R p'ren\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white brace\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white brace\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"white left parenthesis\"},\"mathspeak\":{\"brief\":\"white left p'ren\",\"sbrief\":\"white L p'ren\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"white right parenthesis\"},\"mathspeak\":{\"brief\":\"white right p'ren\",\"sbrief\":\"white R p'ren\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left image bracket\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right image bracket\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"},\"mathspeak\":{\"brief\":\"left brack with underbar\",\"sbrief\":\"L brack with underbar\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"},\"mathspeak\":{\"brief\":\"right brack with underbar\",\"sbrief\":\"R brack with underbar\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in top corner\",\"sbrief\":\"L brack with tick in top corner\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in bottom corner\",\"sbrief\":\"R brack with tick in bottom corner\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in bottom corner\",\"sbrief\":\"L brack with tick in bottom corner\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in top corner\",\"sbrief\":\"R brack with tick in top corner\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"l angle bracket with dot\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"r angle bracket with dot\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black tortoise shell bracket\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black tortoise shell bracket\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left wiggly fence\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right wiggly fence\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing curved angle bracket\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing curved angle bracket\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"top half left bracket\"},\"mathspeak\":{\"brief\":\"top half left brack\",\"sbrief\":\"top half L brack\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"top half right bracket\"},\"mathspeak\":{\"brief\":\"top half right brack\",\"sbrief\":\"top half R brack\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"bottom half left bracket\"},\"mathspeak\":{\"brief\":\"bottom half left brack\",\"sbrief\":\"bottom half L brack\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"bottom half right bracket\"},\"mathspeak\":{\"brief\":\"bottom half right brack\",\"sbrief\":\"bottom half R brack\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left sideways U bracket\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right sideways U bracket\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left parenthesis\"},\"mathspeak\":{\"brief\":\"double left p'ren\",\"sbrief\":\"double L p'ren\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right parenthesis\"},\"mathspeak\":{\"brief\":\"double right p'ren\",\"sbrief\":\"double R p'ren\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left corner bracket\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right corner bracket\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white corner bracket\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white corner bracket\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black lenticular bracket\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black lenticular bracket\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white lenticular bracket\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white lenticular bracket\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"reversed double prime quotation mark\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double prime quotation mark\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"low double prime quotation mark\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"ornate left parenthesis\"},\"mathspeak\":{\"brief\":\"ornate left p'ren\",\"sbrief\":\"ornate L p'ren\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"ornate right parenthesis\"},\"mathspeak\":{\"brief\":\"ornate right p'ren\",\"sbrief\":\"ornate R p'ren\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white lenticular bracket\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white lenticular brakcet\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left p'ren\",\"sbrief\":\"presentation form for vertical L p'ren\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right p'ren\",\"sbrief\":\"presentation form for vertical R p'ren\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical L brace\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r brace\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left tortoise shell bracket\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right tortoise shell bracket\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left black lenticular bracket\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right black lenticular bracket\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left double angle bracket\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right double angle bracket\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical l angle bracket\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r angle bracket\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left corner bracket\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right corner bracket\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white corner bracket\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white corner bracket\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left brack\",\"sbrief\":\"presentation form for vertical L brack\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right brack\",\"sbrief\":\"presentation form for vertical r brack\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left parenthesis\"},\"mathspeak\":{\"brief\":\"small left p'ren\",\"sbrief\":\"small L p'ren\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right parenthesis\"},\"mathspeak\":{\"brief\":\"small right p'ren\",\"sbrief\":\"small R p'ren\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left brace\"},\"mathspeak\":{\"sbrief\":\"small L brace\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right brace\"},\"mathspeak\":{\"sbrief\":\"small r brace\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left tortoise shell bracket\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right tortoise shell bracket\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth left p'ren\",\"sbrief\":\"fullwidth L p'ren\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth right p'ren\",\"sbrief\":\"fullwidth R p'ren\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left bracket\"},\"mathspeak\":{\"brief\":\"fullwidth left brack\",\"sbrief\":\"fullwidth L brack\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right bracket\"},\"mathspeak\":{\"brief\":\"fullwidth right brack\",\"sbrief\":\"fullwidth r brack\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth L brace\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth r brace\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth white left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white left p'ren\",\"sbrief\":\"fullwidth white L p'ren\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth white right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white right p'ren\",\"sbrief\":\"fullwidth white R p'ren\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"halfwidth left corner bracket\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"halfwidth right corner bracket\"}},\"key\":\"FF63\"}]\n,\n\"en/symbols/math_geometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light horizontal\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy horizontal\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash horizontal\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash horizontal\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash vertical\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash vertical\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash horizontal\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash horizontal\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash vertical\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash vertical\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and right\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right heavy\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right light\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and right\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and left\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left heavy\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left light\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and left\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and right\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right heavy\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right light\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and right\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and left\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left heavy\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left light\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and left\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and right\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and right heavy\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right down light\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right up light\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and right light\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right up heavy\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right down heavy\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and right\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and left\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and left heavy\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left down light\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left up light\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and left light\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left up heavy\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left down heavy\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and left\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and horizontal\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right down light\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left down light\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and horizontal heavy\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and horizontal light\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left down heavy\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right down heavy\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and horizontal\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and horizontal\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right up light\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left up light\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and horizontal heavy\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and horizontal light\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left up heavy\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right up heavy\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and horizontal\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and horizontal\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right vertical light\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left vertical light\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and horizontal heavy\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and down horizontal light\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and up horizontal light\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and horizontal light\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left up heavy and right down light\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right up heavy and left down light\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left down heavy and right up light\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right down heavy and left up light\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and up horizontal heavy\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and down horizontal heavy\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left vertical heavy\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right vertical heavy\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and horizontal\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash horizontal\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash horizontal\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash vertical\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash vertical\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double horizontal\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and right double\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and right single\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and right\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and left double\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and left single\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and left\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and right double\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and right single\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and right\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and left double\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and left single\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and left\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and right double\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and right single\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and right\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and left double\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and left single\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and left\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and horizontal double\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and horizontal single\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and horizontal\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and horizontal double\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and horizontal single\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and horizontal\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and horizontal double\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and horizontal single\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and horizontal\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and right\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and left\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and left\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and right\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper right to lower left\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper left to lower right\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal cross\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light right\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy right\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left and heavy right\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and heavy down\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left and light right\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and light down\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half block\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one eighth block\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one quarter block\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three eighths block\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half block\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower five eighths block\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three quarters block\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower seven eighths block\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"full block\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left seven eighths block\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three quarters block\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left five eighths block\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half block\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three eighths block\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one quarter block\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one eighth block\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half block\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"light shade\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"medium shade\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dark shade\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper one eighth block\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right one eighth block\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower left\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower right\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower left and lower right\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower right\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower left\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower right\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left and lower right\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black square\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with rounded corners\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square containing black small square\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with horizontal fill\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with vertical fill\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with orthogonal crosshatch fill\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left to lower right fill\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right to lower left fill\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with diagonal crosshatch fill\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small square\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small square\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black rectangle\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white rectangle\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical rectangle\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black parallelogram\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white parallelogram\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing triangle\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing small triangle\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing small triangle\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing triangle\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white right pointing triangle\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing small triangle\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing small triangle\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pointer\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pointer\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing triangle\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing triangle\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing small triangle\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing small triangle\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing triangle\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white left pointing triangle\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing small triangle\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing small triangle\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing pointer\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing pointer\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black diamond\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond containing black small diamond\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"fisheye\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lozenge\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted circle\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with vertical fill\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bullseye\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with left half black\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with right half black\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with lower half black\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper half black\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper right quadrant black\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with all but upper left quadrant black\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half black circle\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half black circle\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse bullet\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse white circle\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half inverse white circle\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half inverse white circle\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper left quadrant circular arc\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper right quadrant circular arc\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower right quadrant circular arc\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower left quadrant circular arc\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half circle\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half circle\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower right triangle\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower left triangle\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper left triangle\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper right triangle\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white bullet\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with left half black\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with right half black\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left diagonal half black\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower right diagonal half black\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with vertical bisecting line\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle with dot\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with left half black\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with right half black\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"large circle\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper left quadrant\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower left quadrant\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower right quadrant\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper right quadrant\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper left quadrant\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower left quadrant\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower right quadrant\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper right quadrant\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left triangle\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right triangle\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower left triangle\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium square\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium square\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium small square\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium small square\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right triangle\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with top half black\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with bottom half black\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right diagonal half black\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower left diagonal half black\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with left half black\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with right half black\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with top half black\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with bottom half black\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted square\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large square\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white large square\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black very small square\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white very small square\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black pentagon\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white pentagon\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white hexagon\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black hexagon\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"horizontal black hexagon\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large circle\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium diamond\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium diamond\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium lozenge\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium lozenge\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small diamond\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small lozenge\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small lozenge\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black horizontal ellipse\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white horizontal ellipse\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical ellipse\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical ellipse\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium star\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small star\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small star\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pentagon\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pentagon\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy large circle\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy oval with oval inside\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle with circle inside\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circled saltire\"}},\"key\":\"2B59\"}]\n,\n\"en/symbols/math_harpoons.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon over right harpoon\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon over left harpoon\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb down harpoon\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb up harpoon\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb right harpoon\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb up harpoon\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb right harpoon\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb down harpoon\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb left harpoon\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up to bar\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up to bar\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right to bar\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right to bar\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down to bar\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down to bar\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left to bar\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left to bar\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up from bar\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up from bar\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right from bar\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right from bar\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down from bar\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down from bar\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left from bar\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left from bar\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above left harpoon with barb down\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above right harpoon with barb down\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above right harpoon with barb up\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down above right harpoon with barb down\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above left harpoon with barb up\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down above left harpoon with barb down\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above long dash\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down below long dash\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above long dash\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down below long dash\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left fish tail\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right fish tail\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up fish tail\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down fish tail\"}},\"key\":\"297F\"}]\n,\n\"en/symbols/math_non_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h over two pi\",\"physics\":\"planck constant over two pi\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"l b bar\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"numero\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sound recording copyright\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"prescription take\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"response\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"service mark\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"telephone sign\",\"alternative\":\"t e l symbol\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"trade mark\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"versicle\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverted ohm\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"kelvin\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"estimated\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"turned cap F\"},\"mathspeak\":{\"default\":\"turned upper F\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"information source\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"rotated cap Q\"},\"mathspeak\":{\"default\":\"rotated upper Q\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"facsimile sign\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap G\"},\"mathspeak\":{\"default\":\"turned sans serif upper G\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap L\"},\"mathspeak\":{\"default\":\"turned sans serif upper L\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed sans serif cap L\"},\"mathspeak\":{\"default\":\"reversed sans serif upper L\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap Y\"},\"mathspeak\":{\"default\":\"turned sans serif upper Y\"}},\"key\":\"2144\"}]\n,\n\"en/symbols/math_symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\",\"alternative\":\"hash\"},\"mathspeak\":{\"brief\":\"num sign\",\"sbrief\":\"num sign\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"minus\"},\"mathspeak\":{\"default\":\"hyphen\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"},\"emacspeak\":{\"default\":\"slash\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"},\"clearspeak\":{\"default\":\"is less than\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"},\"clearspeak\":{\"default\":\"is greater than\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"at\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"hat\"},\"mathspeak\":{\"default\":\"caret\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"},\"mathspeak\":{\"default\":\"grave\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted exclamation mark\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"currency sign\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"section sign\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"two dots\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"copyright sign\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"feminine ordinal indicator\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing guillemet\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"registered sign\"},\"mathspeak\":{\"default\":\"registered trade mark sign\"},\"clearspeak\":{\"default\":\"trade mark sign\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"bar\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"degree\"},\"clearspeak\":{\"default\":\"degrees\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus or minus\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"acute\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"paragraph sign\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"masculine ordinal indicator\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing guillemet\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted question mark\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times\"},\"clearspeak\":{\"MultsymbolX_By\":\"by\",\"MultsymbolX_Cross\":\"cross\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division sign\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"dot above\"},\"mathspeak\":{\"default\":\"dot\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ring above\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"double acute\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"non breaking hyphen\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"figure dash\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"en dash\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"em dash\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"horizontal bar\"},\"mathspeak\":{\"default\":\"quotation dash\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double vertical bar\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double underline\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left single quotation mark\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right single quotation mark\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right single quotation mark\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed single quotation mark\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left double quotation mark\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right double quotation mark\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right double quotation mark\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed double quotation mark\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dagger\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double dagger\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triangular bullet\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"one dot leader\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot leader\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphenation point\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per mille\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per ten thousand\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed prime\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed double prime\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed triple prime\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing single guillemet\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing single guillemet\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reference mark\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double exclamation mark\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"overline\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"undertie\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"character tie\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret insertion point\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterism\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphen bullet\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fraction slash\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double question mark\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question exclamation mark\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation question mark\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed pilcrow\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black leftwards bullet\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black rightwards bullet\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"low asterisk\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed semicolon\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"close up\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two asterisks aligned vertically\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"commercial minus\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"swung dash\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"inverted undertie\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"flower punctuation mark\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"three dot punctuation\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot punctuation\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"five dot punctuation\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot punctuation\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot mark\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dotted cross\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"vertical four dots\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript plus\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript minus\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript equals\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"superscript left parenthesis\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"superscript right parenthesis\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript plus\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript minus\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript equals\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"subscript left parenthesis\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"subscript right parenthesis\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"property line\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned ampersand\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"per\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"turned small f\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"for all\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"complement\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there exists\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there does not exist\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increment\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not an element of\"},\"clearspeak\":{\"default\":\"is not a member of\",\"SetMemberSymbol_Member\":\"is not a member of\",\"SetMemberSymbol_Element\":\"is not an element of\",\"SetMemberSymbol_In\":\"is not in\",\"SetMemberSymbol_Belongs\":\"does not belong to\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as member\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as member\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains as member\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"end of proof\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"product\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"coproduct\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sum\"},\"mathspeak\":{\"default\":\"sigma summation\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus or plus\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot plus\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division slash\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"set minus\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring\"},\"clearspeak\":{\"default\":\"composed with\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square root\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"cube root\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fourth root\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportional to\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\",\"alternative\":\"divides\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel to\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not parallel to\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double integral\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple integral\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contour integral\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"surface integral\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"volume integral\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise integral\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise contour integral\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise contour integral\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"therefore\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"because\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ratio\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot minus\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"excess\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometric proportion\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"homothetic\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"inverted lazy s\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sine wave\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wreath product\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not tilde\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus tilde\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asymptotically equals\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not asymptotically equals\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately but not actually equals\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither approximately nor actually equals\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equals\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not almost equals\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal or equals\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"all equals\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent to\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equivalent to\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"difference between\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approaches the limit\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equals\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals or the image of\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of or approximately equals\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"colon equals\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals colon\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring in equals\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring equals\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"corresponds to\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"estimates\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equiangular to\"},\"clearspeak\":{\"default\":\"is equiangular to\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star equals\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"delta equals\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals by definition\"},\"clearspeak\":{\"default\":\"is defined to be\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured by\"},\"clearspeak\":{\"default\":\"is measured by\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"questioned equals\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equals\"},\"clearspeak\":{\"default\":\"is not equal to\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to\"},\"clearspeak\":{\"default\":\"is identical to\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not identical to\"},\"clearspeak\":{\"default\":\"is not identical to\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"strictly equivalent to\"},\"clearspeak\":{\"default\":\"is strictly equivalent to\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equals\"},\"clearspeak\":{\"default\":\"is less than or equal to\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equals\"},\"clearspeak\":{\"default\":\"is greater than or equal to\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than over equals\"},\"clearspeak\":{\"default\":\"is less than over equals\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than over equals\"},\"clearspeak\":{\"default\":\"is greater than over equals\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equals\"},\"clearspeak\":{\"default\":\"is less than but not equal to\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equals\"},\"clearspeak\":{\"default\":\"is greater than but not equal to\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much less than\"},\"clearspeak\":{\"default\":\"is much less than\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much greater than\"},\"clearspeak\":{\"default\":\"is much greater than\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"between\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equivalent to\"},\"clearspeak\":{\"default\":\"is not equivalent to\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not less than\"},\"clearspeak\":{\"default\":\"is not less than\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not greater than\"},\"clearspeak\":{\"default\":\"is not greater than\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equals\"},\"clearspeak\":{\"default\":\"is neither less than nor equal to\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equals\"},\"clearspeak\":{\"default\":\"is neither greater than nor equal to\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equivalent to\"},\"clearspeak\":{\"default\":\"is less than or equivalent to\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equivalent to\"},\"clearspeak\":{\"default\":\"is greater than or equivalent to\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither less than nor equivalent to\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither greater than nor equivalent to\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or greater than\"},\"clearspeak\":{\"default\":\"is less than or greater than\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or less than\"},\"clearspeak\":{\"default\":\"is greater than or less than\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor greater than\"},\"clearspeak\":{\"default\":\"is neither less than nor greater than\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor less than\"},\"clearspeak\":{\"default\":\"is neither greater than nor less than\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equal to\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equal to\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equivalent to\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equivalent to\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a subset of\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a superset of\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equal to\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equal to\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a subset of nor equal to\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a superset of nor equal to\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or not equals\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or not equals\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset multiplication\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset union\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or equal to\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or equal to\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cap\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cup\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled plus\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled minus\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled times\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division slash\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dot\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled ring\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled asterisk\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled equals\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dash\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared plus\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared minus\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared times\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared dot\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right tack\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left tack\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"models\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"true\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forces\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar right turnstile\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double right turnstile\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not prove\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not true\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not force\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"negated double vertical bar double right turnstile\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes under relation\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds under relation\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of or equal to\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup or equal to\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"original of\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multimap\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"hermitian conjugate matrix\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intercalate\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"xor\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nand\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nor\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary and\"},\"mathspeak\":{\"default\":\"and\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary or\"},\"mathspeak\":{\"default\":\"or\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary intersection\"},\"mathspeak\":{\"default\":\"intersection\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union\"},\"mathspeak\":{\"default\":\"union\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"diamond\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\",\"MultsymbolDot_Dot\":\"dot\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division times\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left normal factor semidirect product\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right normal factor semidirect product\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left semidirect product\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right semidirect product\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde equals\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly or\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly and\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double subset\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double superset\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double intersection\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double union\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equal and parallel to\"},\"clearspeak\":{\"default\":\"is equal and parallel to\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than dot\"},\"clearspeak\":{\"default\":\"is less than dot\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than dot\"},\"clearspeak\":{\"default\":\"is greater than dot\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much less than\"},\"clearspeak\":{\"default\":\"is very much less than\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much greater than\"},\"clearspeak\":{\"default\":\"is very much greater than\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than equals or greater than\"},\"clearspeak\":{\"default\":\"is less than equal to or greater than\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than equals or less than\"},\"clearspeak\":{\"default\":\"is greater than equal to or less than\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or less than\"},\"clearspeak\":{\"default\":\"is equal to or less than\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or greater than\"},\"clearspeak\":{\"default\":\"is equal to or greater than\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or precedes\"},\"clearspeak\":{\"default\":\"is equal to or precedes\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or succeeds\"},\"clearspeak\":{\"default\":\"is equal to or succeeds\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede or equal\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed or equal\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square image of or equals\"},\"clearspeak\":{\"default\":\"is not square image of or equal to\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square original of or equals\"},\"clearspeak\":{\"default\":\"is not square original of or equal to\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or not equals\"},\"clearspeak\":{\"default\":\"is square image of or not equal to\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or not equals\"},\"clearspeak\":{\"default\":\"is square original of or not equal to\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equivalent to\"},\"clearspeak\":{\"default\":\"is less than but not equivalent to\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equivalent to\"},\"clearspeak\":{\"default\":\"is greater than but not equivalent to\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes but not equivalent to\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equivalent to\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of\"},\"clearspeak\":{\"default\":\"is not normal subgroup of\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of or equals\"},\"clearspeak\":{\"default\":\"is not normal subgroup of or equal to\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup or equal\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical ellipsis\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"midline horizontal ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up right diagonal ellipsis\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right diagonal ellipsis\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with long horizontal stroke\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with dot above\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with overbar\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with overbar\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with underbar\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with two horizontal strokes\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with long horizontal stroke\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with overbar\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with overbar\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation bag membership\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diameter sign\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"house\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wavy line\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"reversed not\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square lozenge\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sector\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold plus\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold minus\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold division\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"curly loop\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"double curly loop\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white triangle containing small white triangle\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open subset\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open superset\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot inside\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash preceding subset\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset preceding solidus\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar with horizontal stroke\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long division\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared and\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared or\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white diamond with centered dot\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening upwards\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right corner with dot\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left corner with dot\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left outer join\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right outer join\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"full outer join\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large up tack\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large down tack\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right double turnstile\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right tack\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left multimap\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right tack\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left tack\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack with circle above\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lozenge divided by horizontal rule\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with leftwards tick\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with rightwards tick\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with leftwards tick\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with rightwards tick\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing falling diagonal\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing rising diagonal\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar delimiter\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation spot\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation type colon\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dotted fence\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical zigzag line\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed empty set\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with overbar\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with small circle above\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with horizontal bar\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled parallel\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled backslash\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled perpendicular\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle divided by horizontal bar and top half divided by vertical bar\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with superimposed x\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled white bullet\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled bullet\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled less than\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled greater than\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with small circle to the right\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared rising diagonal slash\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared falling diagonal slash\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared asterisk\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared small circle\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared square\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two joined squares\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with dot above\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with underbar\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"s in triangle\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle above left triangle\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triangle beside vertical bar\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar beside right triangle\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with left half black\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with right half black\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black bowtie\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with left half black\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with right half black\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white hourglass\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black hourglass\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"incomplete infinity\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tie over infinity\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity negated with vertical bar\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double ended multimap\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square with contoured outline\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increases as\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"shuffle product\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel with tilde above\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to and slanted parallel\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"thermodynamic\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with left half black\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with right half black\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black lozenge\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white square\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black square\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white diamond\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black diamond\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white circle\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black circle\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash with horizontal stroke\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big solidus\"},\"mathspeak\":{\"default\":\"solidus\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big backslash\"},\"mathspeak\":{\"default\":\"backslash\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double plus\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tiny\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"miny\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled dot\"},\"mathspeak\":{\"default\":\"circled dot\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled plus\"},\"mathspeak\":{\"default\":\"circled plus\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled times\"},\"mathspeak\":{\"default\":\"circled times\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union with dot\"},\"mathspeak\":{\"default\":\"union with dot\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union operator with plus\"},\"mathspeak\":{\"default\":\"union with plus\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square intersection\"},\"mathspeak\":{\"default\":\"square intersection\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square union\"},\"mathspeak\":{\"default\":\"square union\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two and\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two or\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary times\"},\"mathspeak\":{\"default\":\"times\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"modulo two sum\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation with integral\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quadruple integral\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with double stroke\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral average with slash\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise integration\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with rectangular path around pole\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with semicircular path around pole\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration not including the pole\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral around a point\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quaternion integral\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with times\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with intersection\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with union\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with overbar\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with underbar\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"join\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large left triangle\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema composition\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema piping\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema projection\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus with circle above\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus hat\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus tilde\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus underdot\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with tilde below\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with subscript two\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with black triangle\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with comma above\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with dot below\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with falling dots\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with rising dots\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in left half circle\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in right half circle\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vector or cross product\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with dot above\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with underbar\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"semidirect product with bottom closed\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in left half circle\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in right half circle\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled multiplication sign with circumflex accent\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in double circle\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in triangle\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign in triangle\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in triangle\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"interior product\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"righthand interior product\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation relational composition\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"amalgamation or coproduct\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with dot\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with minus\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with overbar\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with overbar\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with and\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with or\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above intersection\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above union\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above bar above intersection\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above bar above union\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union beside and joined with union\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection beside and joined with intersection\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed intersection with serifs\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square intersection\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square union\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs and smash product\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot above\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot above\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double and\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double or\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting and\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting or\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or overlapping and\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with middle stem\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with middle stem\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with horizontal dash\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with horizontal dash\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double overbar\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with underbar\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double underbar\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small vee with underbar\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double overbar\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double underbar\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation domain antirestriction\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation range antirestriction\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with dot below\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical with dot above\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with double vertical stroke\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with triple vertical stroke\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with dot above\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with rising dots\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar minus similar\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"congruent with dot above\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with asterisk\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal hat\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equal or equal to\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above plus\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus above equals\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above tilde\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double colon equal\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two consecutive equals\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three consecutive equals\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with two dots above and two dots below\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent with four dots above\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with circle inside\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with circle inside\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with question mark above\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with question mark above\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot inside\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot inside\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above right\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above left\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or approximate\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or approximate\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and single line not equals\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and single line not equals\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and not approximate\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and not approximate\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above double line equal above greater than\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above double line equal above less than\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar or equal\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar or equal\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar above greater than\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar above less than\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above greater than above double line equal\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above less than above double line equal\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above slanted equal above greater than above slanted equal\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above slanted equal above less than above slanted equal\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than with dot inside\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than with dot inside\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or less than\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or greater than\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or less than\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or greater than\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or less than\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or greater than\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above less than above equals sign\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above greater than above equals sign\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested greater than\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than with underbar\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than overlapping less than\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than beside less than\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve above slanted equal\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve above slanted equal\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than\"},\"clearspeak\":{\"default\":\"is smaller than\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than\"},\"clearspeak\":{\"default\":\"is larger than\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than or equals\"},\"clearspeak\":{\"default\":\"is smaller than or equal to\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than or equal\"},\"clearspeak\":{\"default\":\"is larger than or equal to\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with bumpy above\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line equals sign\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line equals sign\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line not equals\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line not equals\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above equals\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above equals\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not equals\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not equals\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above almost equals\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above almost equals\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not almost equals\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not almost equals\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double precedes\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double succeeds\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with dot\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with dot\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with plus sign below\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with plus sign below\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with multiplication sign below\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with multiplication sign below\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equals with dot above\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equals with dot above\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above equals sign\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above equals sign\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above tilde\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above tilde\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above almost equals\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above almost equals\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above not equals\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above not equals\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square left open box\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square right open box\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset or equals\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset or equals\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above superset\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above subset\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above subset\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above superset\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside subset\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside and joined by dash with subset\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening downwards\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forking\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short left tack\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular with s\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar triple right turnstile\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar left turnstile\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar double left turnstile\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double left turnstile\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack with underbar\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double down tack\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle above\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle below\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with horizontal stroke\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with tilde\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar binary relation\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar with horizontal stroke\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple colon\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested less than\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested greater than\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted less than or equals\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted greater than or equals\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple solidus binary relation\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large triple vertical bar\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double solidus\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary white vertical bar\"},\"mathspeak\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"wave dash\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical comma\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical colon\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical semicolon\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical exclamation mark\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical question mark\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical horizontal ellipsis\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical two dot leader\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical em dash\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical en dash\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical underline\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical wavy underline\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"sesame dot\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"white sesame dot\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dashed overline\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dash dot overline\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"wavy overline\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double wavy overline\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dashed underline\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dash dot underline\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"wavy underline\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small comma\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small period\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small semicolon\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small colon\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small question mark\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small exclamation mark\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small em dash\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small number sign\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small ampersand\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small asterisk\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small plus sign\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small hyphen minus\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small less than sign\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small greater than sign\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small equals\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small backslash\",\"alternative\":\"small reverse solidus\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"small dollar sign\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small percent sign\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small commercial at\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen minus\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"commercial at\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\",\"alternative\":\"reverse solidus\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"caret\",\"alternative\":\"circumflex\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"macron\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"won sign\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth forms light vertical\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth black square\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth white circle\"}},\"key\":\"FFEE\"}]\n,\n\"en/symbols/math_whitespace.js\": \n[{\"locale\":\"en\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"space\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"no break space\",\"alternative\":\"non breaking space\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"soft hyphen\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en quad\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em quad\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en space\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em space\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"three per em space\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"four per em space\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"six per em space\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"figure space\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"punctuation space\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"thin space\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"hair space\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width space\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width non joiner\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width joiner\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right mark\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left mark\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"line separator\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"paragraph separator\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right embedding\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left embedding\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"pop directional formatting\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right override\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left override\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"narrow no break space\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"medium mathematical space\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"word joiner\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"of\",\"alternative\":\"function application\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"times\",\"alternative\":\"invisible times\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"separator\",\"alternative\":\"invisible separator\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"plus\",\"alternative\":\"invisible plus\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"inhibit symmetric swapping\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"activate symmetric swapping\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"national digit shapes\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"nominal digit shapes\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width no break space\",\"alternative\":\"byte order mark\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation anchor\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation separator\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation terminator\"}},\"key\":\"FFFB\"}]\n,\n\"en/symbols/other_stars.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"decimal exponent symbol\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black star\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white star\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\",\"alternative\":\"medium white circle\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\",\"alternative\":\"medium black circle\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white check mark\",\"alternative\":\"white heavy check mark\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy check mark\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"multiplication x\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy multiplication x\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy ballot x\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center cross\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy open center cross\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"maltese cross\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"star of david\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four teardrop spoked asterisk\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four balloon spoked asterisk\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy four balloon spoked asterisk\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four club spoked asterisk\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black four pointed star\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white four pointed star\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkles\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"stress outlined white star\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled white star\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center black star\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black center white star\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"outlined black star\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy outlined black star\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"pinwheel star\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white star\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy asterisk\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center asterisk\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight spoked asterisk\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed black star\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed pinwheel star\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six pointed black star\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"twelve pointed black star\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sixteen pointed asterisk\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop spoked asterisk\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center teardrop spoked asterisk\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six petalled black and white florette\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black florette\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white florette\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight petalled outlined black florette\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled open center eight pointed star\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked pinwheel asterisk\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"snowflake\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"tight trifoliate snowflake\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy chevron snowflake\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkle\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy sparkle\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"balloon spoked asterisk\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight teardrop spoked propeller asterisk\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy eight teardrop spoked propeller asterisk\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"cross mark\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white circle\"}},\"key\":\"274D\"}]\n,\n\"en/units/area.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"square\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square inch\"}},\"key\":\"sq inch\",\"names\":[\"sq inch\",\"sq. inch.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square rod\"}},\"key\":\"sq rd\",\"names\":[\"sq rd\",\"sq. rd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square foot\",\"plural\":\"square feet\"}},\"key\":\"sq ft\",\"names\":[\"sq ft\",\"sq. ft.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square yard\"}},\"key\":\"sq yd\",\"names\":[\"sq yd\",\"sq. yd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square mile\"}},\"key\":\"sq mi\",\"names\":[\"sq mi\",\"sq. mi.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"acre\"}},\"key\":\"acr\",\"names\":[\"ac\",\"ac.\",\"acr\",\"acr.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"hectare\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"en/units/currency.js\": \n[{\"locale\":\"en\"},{\"category\":\"currency\",\"key\":\"$\",\"mappings\":{\"default\":{\"default\":\"dollar\"}},\"names\":[\"$\",\"💲\",\"＄\",\"﹩\",\"USD\"]},{\"category\":\"currency\",\"key\":\"£\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"names\":[\"£\",\"￡\",\"GBP\"]},{\"category\":\"currency\",\"key\":\"¥\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"names\":[\"¥\",\"￥\",\"JPY\"]},{\"category\":\"currency\",\"key\":\"€\",\"mappings\":{\"default\":{\"default\":\"euro\"}},\"names\":[\"€\",\"EUR\"]},{\"category\":\"currency\",\"key\":\"₡\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"names\":[\"₡\",\"CRC\"]},{\"category\":\"currency\",\"key\":\"₢\",\"mappings\":{\"default\":{\"default\":\"cruzeiro\"}},\"names\":[\"₢\"]},{\"category\":\"currency\",\"key\":\"₣\",\"mappings\":{\"default\":{\"default\":\"franc\"}},\"names\":[\"₣\"]},{\"category\":\"currency\",\"key\":\"₤\",\"mappings\":{\"default\":{\"default\":\"lira\"}},\"names\":[\"₤\"]},{\"category\":\"currency\",\"key\":\"₥\",\"mappings\":{\"default\":{\"default\":\"mill\"}},\"names\":[\"₥\"]},{\"category\":\"currency\",\"key\":\"₦\",\"mappings\":{\"default\":{\"default\":\"naira\"}},\"names\":[\"₦\",\"NGN\"]},{\"category\":\"currency\",\"key\":\"₧\",\"mappings\":{\"default\":{\"default\":\"peseta\"}},\"names\":[\"₧\"]},{\"category\":\"currency\",\"key\":\"₨\",\"mappings\":{\"default\":{\"default\":\"rupee\"}},\"names\":[\"₨\",\"₹\",\"INR\",\"NPR\",\"PKR\",\"LKR\"]},{\"category\":\"currency\",\"key\":\"₩\",\"mappings\":{\"default\":{\"default\":\"won\"}},\"names\":[\"₩\",\"￦\",\"KRW\"]},{\"category\":\"currency\",\"key\":\"₪\",\"mappings\":{\"default\":{\"default\":\"sheqel\"}},\"names\":[\"₪\"]},{\"category\":\"currency\",\"key\":\"₫\",\"mappings\":{\"default\":{\"default\":\"dong\"}},\"names\":[\"₫\"]},{\"category\":\"currency\",\"key\":\"₭\",\"mappings\":{\"default\":{\"default\":\"kip\"}},\"names\":[\"₭\"]},{\"category\":\"currency\",\"key\":\"₮\",\"mappings\":{\"default\":{\"default\":\"tugrik\"}},\"names\":[\"₮\"]},{\"category\":\"currency\",\"key\":\"₯\",\"mappings\":{\"default\":{\"default\":\"drachma\"}},\"names\":[\"₯\"]},{\"category\":\"currency\",\"key\":\"₰\",\"mappings\":{\"default\":{\"default\":\"Pfennig\"}},\"names\":[\"₰\"]},{\"category\":\"currency\",\"key\":\"₱\",\"mappings\":{\"default\":{\"default\":\"peso\"}},\"names\":[\"₱\"]},{\"category\":\"currency\",\"key\":\"₲\",\"mappings\":{\"default\":{\"default\":\"guaranis\"}},\"names\":[\"₲\"]},{\"category\":\"currency\",\"key\":\"₳\",\"mappings\":{\"default\":{\"default\":\"austral\"}},\"names\":[\"₳\"]},{\"category\":\"currency\",\"key\":\"₴\",\"mappings\":{\"default\":{\"default\":\"hryvnia\"}},\"names\":[\"₴\",\"UAH\"]},{\"category\":\"currency\",\"key\":\"₵\",\"mappings\":{\"default\":{\"default\":\"cedis\"}},\"names\":[\"₵\",\"GHS\"]},{\"category\":\"currency\",\"key\":\"₶\",\"mappings\":{\"default\":{\"default\":\"livre tournois\"}},\"names\":[\"₶\"]},{\"category\":\"currency\",\"key\":\"₷\",\"mappings\":{\"default\":{\"default\":\"spesmilo\"}},\"names\":[\"₷\"]},{\"category\":\"currency\",\"key\":\"₸\",\"mappings\":{\"default\":{\"default\":\"tenge\"}},\"names\":[\"₸\",\"KZT\"]},{\"category\":\"currency\",\"key\":\"₺\",\"mappings\":{\"default\":{\"default\":\"turkish lira\"}},\"names\":[\"₺\",\"TRY\"]},{\"category\":\"currency\",\"key\":\"元\",\"mappings\":{\"default\":{\"default\":\"yuan\"}},\"names\":[\"元\"]},{\"category\":\"currency\",\"key\":\"¢\",\"mappings\":{\"default\":{\"default\":\"cent\"}},\"names\":[\"￠\",\"¢\"]}]\n,\n\"en/units/energy.js\": \n[{\"locale\":\"en\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"watt\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt hour\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"joule\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ampere\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"volt\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"microohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"en/units/length.js\": \n[{\"locale\":\"en\"},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"foot\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"inch\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"mile\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"yard\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"link\"}},\"key\":\"link\",\"names\":[\"li\",\"li.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"rod\"}},\"key\":\"rod\",\"names\":[\"rd\",\"rd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"chain\"}},\"key\":\"chain\",\"names\":[\"ch\",\"ch.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"furlong\"}},\"key\":\"furlong\",\"names\":[\"fur\",\"fur.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"nautical mile\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"millimeter\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"centimeter\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"meter\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]}]\n,\n\"en/units/memory.js\": \n[{\"locale\":\"en\"},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"bit\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"byte\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"en/units/other.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"dozen\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"en/units/speed.js\": \n[{\"locale\":\"en\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"knot\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"miles per hour\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"revolutions per minute\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"kilometers per hour\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"en/units/temperature.js\": \n[{\"locale\":\"en\"},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Celsius\",\"alternative\":\"Centigrade\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"en/units/time.js\": \n[{\"locale\":\"en\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"nanosecond\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"microsecond\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"millisecond\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"second\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"hour\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"en/units/volume.js\": \n[{\"locale\":\"en\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic inch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic foot\",\"plural\":\"cubic feet\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic yard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"barrel\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"gallon\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"pint\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"quart\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid dram\"}},\"key\":\"fluid dram\",\"names\":[\"fl dr\",\"fl. dr.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"tablespoon\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"teaspoon\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cup\"}},\"key\":\"cup\",\"names\":[\"cp\",\"cp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic centimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"en/units/weight.js\": \n[{\"locale\":\"en\"},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"dram\"}},\"key\":\"dram\",\"names\":[\"dr\",\"dr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"stone\"}},\"key\":\"st\",\"names\":[\"st\",\"st.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"quarter\"}},\"key\":\"qtr\",\"names\":[\"qtr\",\"qtr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"hundredweight\"}},\"key\":\"cwt\",\"names\":[\"cwt\",\"cwt.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"gram\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"kilogram\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"microgram\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"milligram\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ton\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n,\n\"de/functions/algebra.js\": \n[{\"locale\":\"de\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"key\":\"det\",\"mappings\":{\"default\":{\"default\":\"Determinante\"}},\"category\":\"Algebra\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Homomorphismus\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Kern\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Spur\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"de/functions/elementary.js\": \n[{\"locale\":\"de\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"natürlicher Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"Logarithmus zur Basis 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"Exponent\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"größter gemeinsamer Teiler\"},\"mathspeak\":{\"default\":\"ggt\"},\"clearspeak\":{\"default\":\"ggt\"}},\"key\":\"gcd\",\"names\":[\"gcd\",\"ggt\",\"ggT\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"kleinstes gemeinsames Vielfaches\"},\"mathspeak\":{\"default\":\"kgv\"},\"clearspeak\":{\"default\":\"kgv\"}},\"key\":\"lcm\",\"names\":[\"lcm\",\"kgv\",\"kgV\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"Argument\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"key\":\"im\",\"mappings\":{\"default\":{\"default\":\"der Imaginärteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"im\"]},{\"key\":\"re\",\"mappings\":{\"default\":{\"default\":\"der Realteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"re\"]},{\"key\":\"mod\",\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\",\"names\":[\"mod\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Infimum\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes inferior\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes superior\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Maximum\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Minimum\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Supremum\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Colimes\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projektiver Limes\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"Wahrscheinlichkeit\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"de/functions/hyperbolic.js\": \n[{\"locale\":\"de\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"Kosinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"Kotangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"Kosekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"Sekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"Sinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"Tangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"key\":\"arcosh\",\"mappings\":{\"default\":{\"default\":\"Areakosinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcosh\",\"arccosh\"]},{\"key\":\"arcoth\",\"mappings\":{\"default\":{\"default\":\"Areakotangens hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcoth\",\"arccoth\"]},{\"key\":\"arcsch\",\"mappings\":{\"default\":{\"default\":\"Areakosekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcsch\",\"arccsch\"]},{\"key\":\"arsech\",\"mappings\":{\"default\":{\"default\":\"Areasekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsech\",\"arcsech\"]},{\"key\":\"arsinh\",\"mappings\":{\"default\":{\"default\":\"Areasinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"key\":\"artanh\",\"mappings\":{\"default\":{\"default\":\"Areatangens hyperbolicus \"}},\"category\":\"Area\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"de/functions/trigonometry.js\": \n[{\"locale\":\"de\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"Kosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"Kotangens\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"Kosekans\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"Sekans\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"Sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"Tangens\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"key\":\"arccos\",\"mappings\":{\"default\":{\"default\":\"Arkuskosinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arccos\"]},{\"key\":\"arccot\",\"mappings\":{\"default\":{\"default\":\"Arkuskotangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kotangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arccot\"]},{\"key\":\"arccsc\",\"mappings\":{\"default\":{\"default\":\"Arkuskosekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arccsc\"]},{\"key\":\"arcsec\",\"mappings\":{\"default\":{\"default\":\"Arkussekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsec\"]},{\"key\":\"arcsin\",\"mappings\":{\"default\":{\"default\":\"Arkussinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsin\"]},{\"key\":\"arctan\",\"mappings\":{\"default\":{\"default\":\"Arkustangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Tangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arctan\"]}]\n,\n\"de/symbols/digits_rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"Quadrat\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 2\",\"Exponent_OrdinalPower\":\"zur zweiten Potenz\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"Kubik\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 3\",\"Exponent_OrdinalPower\":\"zur dritten Potenz\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"ein Viertel\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"ein Halb\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"drei Viertel\"}},\"category\":\"No\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"ein siebtel\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"ein neuntel\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"ein zehntel\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"ein drittel\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"zwei drittel\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"ein fünftel\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"zwei fünftel\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"drei fünftel\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"vier fünftel\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"ein sechstel\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"fünf sechstel\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"ein achtel\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"drei achtel\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"fünf achtel\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sieben achtel\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Bruchzähler eins\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"null drittel\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zehn auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zwanzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Dreißig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Vierzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Fünfzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Sechzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Siebzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Achtzig auf schwarzem Quadrat\"}}}]\n,\n\"de/symbols/greek-rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"Dreieck\",\"TriangleSymbol_Delta\":\"großes Delta\"}},\"category\":\"Lu\"}]\n,\n\"de/symbols/greek-scripts.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes chi\"}}}]\n,\n\"de/symbols/greek-symbols.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"beta\"}}},{\"category\":\"Ll\",\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"kai\"}}},{\"category\":\"Sm\",\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes epsilon\"}}},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"fettes großes Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"fettes digamma\"}}}]\n,\n\"de/symbols/hebrew_letters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lo\",\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"Alef-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"Bet-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"Gimel-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"Dalet-Symbol\"}}}]\n,\n\"de/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Grab\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a mit Dot Above und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a mit Ring oben und akut\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Makron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c mit Cedilla und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla und Breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s mit Akute und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s mit Caron und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt unten und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Dot Below\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o mit Strich und Akut\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich und Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"liegendes O mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"lang mit diagonalem Anschlag\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"lang S mit hohem Hub\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"wurde Delta gedreht\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"lang mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"lang S\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b mit Oberleiste\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"ton sechs\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d mit Oberleiste\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f mit Haken\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k mit Haken\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n mit langem rechtem Bein\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"ton zwei\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"umgedrehte esh Schleife\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t mit palatal Haken\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes ezh\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"ton fünf\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"gedreht E\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q mit Hakenschwanz\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"gedreht A\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"gedrehtes Alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open O\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"umgedreht E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa mit Haken\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"offenes e\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes offenes e mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes geschlossenes epsilon\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"mini gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l mit Gurt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"gedreht M\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"gedrehtes M mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n mit linkem Haken\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o mit balken\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"geschlossenes omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein und Haken\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r mit Endstück\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes R mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat umgekehrt\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"gedreht T\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u Bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"gedrehtes v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"gedrehtes w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"pharyngales stimmhaft Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertierter Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"gestrecktes C\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"bilabialer Klick\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"geschlossenes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"bilabiales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"bidentales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"gedrehtes ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"gedrehtes e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"gedrehtes i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"liegendes O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"liegendes geöffnet O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"gedreht Oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"obere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"untere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"liegendes U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"liegendes u Umlaut\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"liegendes m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"stimmhaft laryngaler Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"Ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken und mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"gedreht G\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular G\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th mit Durchgestrichen\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d mit Haken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"offenes o mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh mit Retroflexhaken\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n mit Apostroph davor\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"de/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y mit Diärese\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a mit Ogonek\"}}},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e mit Breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e mit Caron\"}}},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g mit Zirkumflex\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g mit Breve\"}}},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g mit Cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i mit Ogonek\"}}},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i ohne punkt\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l mit Caron\"}}},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt in der Mitte\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o mit Breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r mit Caron\"}}},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s mit Caron\"}}},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t mit Caron\"}}},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u mit Breve\"}}},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u mit Ogonek\"}}},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j mit Caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g mit Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless J\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a mit Ring unten\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h mit Breve unten\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehender Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z mit Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a mit rechtem Halbring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y mit Tilde\"}}}]\n,\n\"de/symbols/latin-rest.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"kombinierendes a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"kombinierendes e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"kombinierendes i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"kombinierendes o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"kombinierendes u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"kombinierendes d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"kombinierendes h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"kombinierendes m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"kombinierendes t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"kombinierendes v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"kombinierendes x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes oberes w\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c mit Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"kombinierendes insulares d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"kombinierendes eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"kombinierendes g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen g\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"kombinierendes k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"kombinierendes l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"kombinierendes n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"kombinierendes lateinisches Kapitälchen R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes langes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"groß S in stumpfen Klammern\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"durchgestrichenes P auf schwarzen Quadrat\"}}}]\n,\n\"de/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Grab\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Dot Above und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring oben und akut\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Makron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedilla und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla und Breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"groß L mit Dot Below und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt unten und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"groß S mit Akute und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt und oben stehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Circumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Hook oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Dot Below\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Circumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"groß A mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"groß A mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"groß E mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"groß E mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"groß E mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"groß I mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"groß I mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"groß I mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"großes n mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"großes o mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"groß O mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"groß A mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ogonek\"}}},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"groß C mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"groß C mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"groß C mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"groß C mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"groß E mit Breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"groß E mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"groß E mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"groß E mit Caron\"}}},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"groß G mit Zirkumflex\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"groß G mit Breve\"}}},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"groß G mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"groß G mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"groß H mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"groß I mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"groß I mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"groß I mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Ogonek\"}}},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"groß I mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"groß J mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"groß K mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"groß L mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"groß L mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"groß L mit Caron\"}}},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt in der Mitte\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"groß N mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"groß N mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"groß N mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"groß O mit doppeltem Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"groß R mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"groß R mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"groß R mit Caron\"}}},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"groß S mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"groß S mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"groß S mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron\"}}},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"groß T mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"groß T mit Caron\"}}},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"groß U mit Breve\"}}},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"groß U mit dopppeltem Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ogonek\"}}},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"groß W mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"groß A mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"groß O mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"groß U mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"groß G mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"groß K mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"groß G mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"groß N mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"groß A mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"groß A mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"groß E mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"groß E mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"groß I mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"groß I mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"groß O mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"groß R mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"groß R mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"groß U mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"groß U mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"groß H mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring unten\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"groß B mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"groß B mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"groß B mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"groß D mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"groß D mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"groß D mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"groß D mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"groß F mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"groß G mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"groß H mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"groß H mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"groß H mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"groß H mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"groß H mit Breve unten\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"groß I mit unten stehender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"groß K mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"groß K mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"groß K mit Zeile\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"groß L mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"groß L mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"groß M mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"groß M mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"groß M mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"groß N mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"groß N mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"groß N mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"groß N mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"groß P mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"groß P mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"groß R mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"groß R mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"groß S mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"groß T mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"groß T mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"groß T mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehender Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"groß V mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"groß V mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"groß W mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"groß W mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"groß W mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"groß X mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"groß X mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"groß Z mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"groß E mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"groß E mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"groß I mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"groß I mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"groß O mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"groß U mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"groß Y mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Tilde\"}}}]\n,\n\"de/symbols/math_angles.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Bogen\"}}},{\"category\":\"Sm\",\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit nach unten gerichtetem Zickzackpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionaler Winkel\"}}},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Gemessene Winkelöffnung links\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Variante mit Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Punkt gemessen\"}}},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Winkel mit S nach innen\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Spitzer Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Öffnungswinkel nach links\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Gedrehter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"Winkel mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich nach unten öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach oben und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach oben und links\"}}},{\"category\":\"Sm\",\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach rechts und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach links und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach rechts und unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach links und unten\"}}}]\n,\n\"de/symbols/math_arrows.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil\"}}},{\"category\":\"So\",\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Spitzen\"}}},{\"category\":\"So\",\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zwei Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit zwei Köpfen\"}}},{\"category\":\"So\",\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"Abwärts zwei Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz\"}}},{\"category\":\"So\",\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach unten\"}}},{\"category\":\"So\",\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Basis\"}}},{\"category\":\"So\",\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Wellenpfeil\"}}},{\"category\":\"Sm\",\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit Strich\"}}},{\"category\":\"So\",\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"Zickzack-Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Ecke nach unten\"}}},{\"category\":\"So\",\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Ecke nach links\"}}},{\"category\":\"So\",\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"Gegen den Uhrzeigersinn oberer halbkreisförmiger Pfeil\"}}},{\"category\":\"So\",\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"Halbkreis im Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur langen Bar\"}}},{\"category\":\"So\",\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zum Überfahren Pfeil nach rechts zum Überfahren\"}}},{\"category\":\"So\",\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"Offener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn öffnen\"}}},{\"category\":\"So\",\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil nach links von Abwärtspfeil\"}}},{\"category\":\"So\",\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"Links gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"Aufwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"Rechts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"Abwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"Links Rechts Doppelpfeil mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"Nordwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"Nordost-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"Südost Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"Südwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"Linker Squiggle-Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gekrümmter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"So\",\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben gestrichen\"}}},{\"category\":\"So\",\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"Rechts gestrichener Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"Abwärts gestrichelter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"Abwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil von der Stange\"}}},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit horizontaler Stange\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit vertikaler Stange\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer doppelter Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil von der Wand\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil nach links von Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"Drei nach rechts gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit offenem Kopf\"}}},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"Elektrischer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"Pfeilspitze zwischen zwei horizontalen Balken\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"Gebrochener Kreis mit Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gerichteter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"Schwerer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"Schwerer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"Schwerer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"Zeichnungspunkt Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"Schwerer runder Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"Schwerer Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"Schwerer, gestrichelter Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, nach oben beleuchtete Pfeilspitze\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, von unten beleuchtete Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"Schwarze Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach unten und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach oben und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts gerichteter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"Schwerer konkaver Spitze-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"Rechts geschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"Links schattierter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"Zurückgekippter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"Vorne geneigter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"Schwerer unterer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"Schwerer oberer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"Gekerbter Pfeil nach rechts unten rechts\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach rechts oben gekerbt\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"Eingekreister schwerer weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit weißer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"Schwarz-gefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit schwarzer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Barbed-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"Keil-Schwanz nach rechts Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gekeilter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"Offener Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"Vierfacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Doppelpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"Langer Rechtspfeil von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"Langer nach rechts gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit horizontalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit horizontalem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"Dreifachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Strichpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Bindestrich nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"Dreipoliger Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach links\"}}},{\"category\":\"Sm\",\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"Nordwest- und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"Nordost- und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil und Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil und Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil Kreuzung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil Kreuzung Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"Fallende Diagonale, die Nordostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"Steigende Diagonale, die Südostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeilüberquerung Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeilüberquerung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach rechts zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach oben gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach unten gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach links gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach rechts gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"Rechtsseitiger Bogen im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"Bogen der linken Seite gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"Pfeil unten gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben im Uhrzeigersinn mit Minus\"}}},{\"category\":\"Sm\",\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"Rechts unten halbkreisförmig im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"Linker halbkreisförmiger Pfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Kurzer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Kurzer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"Kurzer Pfeil nach rechts Über Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch X\"}}},{\"category\":\"Sm\",\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil durch kleinen Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zweiköpfiger Pfeil vom kleinen Kreis\"}}},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"Größer als über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"Untersatz über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"Superset über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Pfeil rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit linkem Pfeil oben\"}}},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben durch Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"Integral mit Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"North East White Arrow\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"Südostweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"Südwestweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"Linker rechter weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"Aufwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"Abwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"Südwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"Linker rechter schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach oben\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"Drei nach links gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"Langer nach links gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Köpfen\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach links zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator Über Linkspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über der Rückseite fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch mehr als\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach unten\"}}}]\n,\n\"de/symbols/math_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"Skript klein L\"}}},{\"category\":\"Sm\",\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"Skript groß P\"}}},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"groß Gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"groß Pi mit Doppelstrich\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"Summenzeichen mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"groß D kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"d kursiv mit Doppelstrich\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"e kursiv mit Doppelstrich\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"i kursiv mit Doppelstrich\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"punktloses i kursiv\"}}},{\"category\":\"Ll\",\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"punktloses j kursiv\"}}}]\n,\n\"de/symbols/math_delimiters.js\": \n[{\"locale\":\"de\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer zu\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Stachel\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Stachel\"}}},{\"category\":\"Sm\",\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"linke Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"rechte Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"linke Abrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"rechter Abrundungsklammer\"}}},{\"category\":\"So\",\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"unterer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"Unterer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"Oberer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"Oberer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"Obere rechte Ecke\"}}},{\"category\":\"So\",\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"Untere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"Rechte untere Ecke\"}}},{\"category\":\"Sm\",\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"Obere Hälfte eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"Untere Hälfte eines Integrals\"}}},{\"category\":\"Ps\",\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"Linke spitze Klammer\"}}},{\"category\":\"Pe\",\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"Rechte spitze Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"Linke Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"Zwischenteil einer geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"Mittelteil eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"Erweiterung einer Querlinie\"}}},{\"category\":\"Sm\",\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben links oder rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben rechts oder unten links\"}}},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil einer Summe\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil einer Summe\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer auf oberer eckiger Klammer\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil des Radikalsymbols\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"Linke vertikale Boxlinie\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"Rechte vertikale Boxlinie\"}}},{\"category\":\"Sm\",\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"Obere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"Untere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"Obere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"Untere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"Mittlere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"Mittlere, rechtwinklige Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Anführungszeichen-Verzierung\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"Schwere nach rechts zeigenden Winkel-Anführungszeichen-Verzierung\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"Schwere, nach rechts weisende Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"Leichte linke Schildpatt Bracket Ornament\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"Leichte rechte Schildpatt-Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke geschweifte Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte geschweifte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"Linker S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Pe\",\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"rechter S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Ps\",\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke doppelte Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Schildkrötenpanzerhalterung\"}}},{\"category\":\"Pe\",\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke abgeflachte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte abgeflachte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"Linke weiße geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Bildklammer\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"Z-Notation rechte Bildklammer\"}}},{\"category\":\"Ps\",\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"Z Notation Right Binding Bracket\"}}},{\"category\":\"Ps\",\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Unterlenker\"}}},{\"category\":\"Pe\",\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Unterlenker\"}}},{\"category\":\"Ps\",\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Häkchen in der oberen Ecke\"}}},{\"category\":\"Pe\",\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Ps\",\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Pe\",\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der oberen Ecke\"}}},{\"category\":\"Ps\",\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer mit Punkt\"}}},{\"category\":\"Pe\",\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit Punkt\"}}},{\"category\":\"Ps\",\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"Linker Bogen weniger als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"rechter Bogen größer als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"Doppelter linker Bogen größer als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"Doppelter rechter Bogen weniger als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze Schildkrötenhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"Linker wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"rechter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"Linker doppelter wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"rechter doppelter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigender gebogener Winkelhalter\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigender gebogener Winkelhalter\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"Obere linke halbe Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"Obere rechte halbe Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"Linke halbe halterung unten\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"Untere rechte halbe Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"U-Halterung links seitlich\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"U-Halterung rechts seitlich\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"Linke doppelte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"Rechte doppelte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"Linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"Rechte Doppelwinkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"Linke Eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"Rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"Linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"Rechte Schildpattlasche\"}}},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"Linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"Linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen in umgekehrter Reihenfolge\"}}},{\"category\":\"Pe\",\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen\"}}},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"Niedriges doppeltes Prime-Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"Verzierte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"Verzierte rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale, recht geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Schildpattklammer\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige, rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"Kleine linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"Linke Klammer in voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"Linke geschweifte Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"Rechte breite weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"Halbe breite linke eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"Halbe breite rechte eckklammer\"}}}]\n,\n\"de/symbols/math_geometry.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Horizontal\"}}},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Horizontale\"}}},{\"category\":\"So\",\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical\"}}},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Vertikale\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Licht Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Right\"}}},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Right\"}}},{\"category\":\"So\",\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Links\"}}},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Left\"}}},{\"category\":\"So\",\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf und richtig\"}}},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Right\"}}},{\"category\":\"So\",\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und links\"}}},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Links\"}}},{\"category\":\"So\",\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leicht und horizontal\"}}},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen nach unten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen schwer und horizontal\"}}},{\"category\":\"So\",\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen links schweres und rechtes vertikales Licht\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Vertical Light\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Down Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Up Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen Vertikales schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Up Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Down Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt horizontal\"}}},{\"category\":\"So\",\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical\"}}},{\"category\":\"So\",\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Right\"}}},{\"category\":\"So\",\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Links\"}}},{\"category\":\"So\",\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und rechts\"}}},{\"category\":\"So\",\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und links\"}}},{\"category\":\"So\",\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Horizontal\"}}},{\"category\":\"So\",\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und horizontal\"}}},{\"category\":\"So\",\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Right\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Links\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und links\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und rechts\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal Oben Rechts Nach Unten Links\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal von oben links nach rechts unten\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"Box Zeichnungen Light Diagonal Cross\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Left\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Right\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Left und Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Up und Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left und Light Right\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Light Down\"}}},{\"category\":\"So\",\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"Block der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"Unterer achter Block\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"Unterer Viertelblock\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"Drei Achtel-Block senken\"}}},{\"category\":\"So\",\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"Block der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"Fünf Achtel Block\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"Unterer Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"Unterer Sieben Achtel-Block\"}}},{\"category\":\"So\",\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"Voller Block\"}}},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"Linker Sieben Achtel Block\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"Linker Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"Linker Block mit fünf Achteln\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"Linke halbe Block\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"Block drei Achtel\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"Linke einen Viertelblock\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"Linker achter Block\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"Rechte halbe Block\"}}},{\"category\":\"So\",\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"Lichtschatten\"}}},{\"category\":\"So\",\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"Mittlere Schatten\"}}},{\"category\":\"So\",\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"Dunkler Schatten\"}}},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"Oberer achter Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"rechter achter Block\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"Quadrant unten links\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"Quadrant rechts unten\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und unten links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten rechts\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links und unten rechts\"}}},{\"category\":\"So\",\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit abgerundeten Ecken\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat, das schwarzes kleines Quadrat enthält\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit horizontaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit orthogonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Oben links nach rechts unten füllen\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter bis unterer linker Füllung\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit diagonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"Schwarzes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"Weißes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"Weißes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"Weißes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"Weißes rechtwinkliges Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"Weißer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Abwärtsdreieck\"}}},{\"category\":\"So\",\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"Weißes nach unten zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes, nach unten zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"Weißer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit schwarzem kleinem Diamant\"}}},{\"category\":\"So\",\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"Fischauge\"}}},{\"category\":\"So\",\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"Raute\"}}},{\"category\":\"So\",\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Kreis\"}}},{\"category\":\"So\",\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"Kreis mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"Bullseye\"}}},{\"category\":\"So\",\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"Kreis mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"Kreis mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit unterer Hälfte Schwarz\"}}},{\"category\":\"So\",\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberem rechten Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit ganzem oberen linken Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"Linker halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"rechter halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"Inverse Kugel\"}}},{\"category\":\"So\",\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"Inverse weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter weißer Kreis der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"Inverser weißer Kreis der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des oberen linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen im oberen rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des rechten unteren Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des unteren linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"Oberer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"Unterer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"Schwarzes unteres linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes oberes linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"Weiße Kugel\"}}},{\"category\":\"So\",\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit der oberen linken Diagonalenhälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit senkrechter Linie\"}}},{\"category\":\"So\",\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck mit Punkt\"}}},{\"category\":\"So\",\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"Großer Kreis\"}}},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit oberem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit rechtem oberen Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit oberem linkem Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit rechtem oberen Quadranten\"}}},{\"category\":\"Sm\",\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"Oberes linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"Oberes rechtes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"Unteres linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"Unteres rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer linker diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"Diamant mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"Diamant mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"Diamant mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"Diamant mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"Schwarzes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"Weißes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"Schwarzes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"Weißes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"Weißes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"Weißes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"Horizontales schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"Schwarzer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"Schwarzer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"Schwarze mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"Weiße mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Diamant\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"Schwarze kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"Weiße kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"Schwarze horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"Weiße horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"Schwarze vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Stern\"}}},{\"category\":\"So\",\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"Weißer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"Schwerer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"Schweres Oval mit innenliegendem Oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis mit Kreis nach innen\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"Schwerer eingekreister Saltire\"}}}]\n,\n\"de/symbols/math_harpoons.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links über Harpune nach rechts\"}}},{\"category\":\"So\",\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts über Harpune nach links\"}}},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"Nach oben Barb Rechts Nach links Barb Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Right Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"Barb nach rechts Barb nach rechts Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Left Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up To Bar\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb bis zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Widerhaken rechts\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb Right to Bar\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"Rechts Harpoon mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach oben Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpoon nach rechts mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach unten Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Oben Rechts Harpoon mit Barb Up\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten Rechts Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpune nach links mit Barb nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Above Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down Under Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up Long Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach unten mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"linker Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"rechter Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}}]\n,\n\"de/symbols/math_non_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante über zwei Pi\"}}},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B Balkensymbol\"}}},{\"category\":\"So\",\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"Numero-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"Tonaufnahme Copyright\"}}},{\"category\":\"So\",\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"Rezept nehmen\"}}},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"Antwort\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"Dienstleistungsmarke\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"Telefon Zeichen\"}}},{\"category\":\"So\",\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"Markenzeichen\"}}},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"Versicle\"}}},{\"category\":\"So\",\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"Unze-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"Ohm-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ohm-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"Kelvin-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"Angstrom-Zeichen\"}}},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Geschätztes Symbol\"}}},{\"category\":\"Lu\",\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"Umgeschlagenes Kapital F\"}}},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"Informationsquelle\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Gedrehtes Kapital Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"Faksimile-Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"Aufgehobenes Sans-Serif-Kapital L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital Y\"}}}]\n,\n\"de/symbols/math_symbols.js\": \n[{\"locale\":\"de\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"Fakultät\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"Anführungszeichen\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"Nummernzeichen\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"Dollar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"Prozent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"Hochkomma\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"times\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"Komma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Pd\"},{\"category\":\"Po\",\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"Punkt\"}}},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"Strichpunkt\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"ist gleich\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"größer als\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"Klammeraffe\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circumflex\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"Unterstrich\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"Gravis Akzent\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"senkrechter Strich\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ausrufezeichen\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"Cent\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"währungszeichen\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"gebrochene Linie\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"Abschnitt\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diaeresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"Copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"weibliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pi\",\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"nicht\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registered sign\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"Überstrich\",\"alternative\":\"Makron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus minus\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acute accent\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"Paragraf\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Punkt mittig\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"Cedille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"Männliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pf\",\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Fragezeichen\"}},\"category\":\"Po\"},{\"category\":\"Sm\",\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"mal\"}}},{\"category\":\"Sm\",\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"geteilt durch\"}}},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"Breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"Überpunkt\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"Überring\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"Ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"Tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"Doppleakutakzent\"}},\"category\":\"Sk\"},{\"category\":\"Pd\",\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"Nicht brechender Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"Abbildung Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"En Dash\"}}},{\"category\":\"Pd\",\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"EM Dash\"}}},{\"category\":\"Pd\",\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"Horizontale Linie\"}}},{\"category\":\"Po\",\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"Doppelte vertikale Linie\"}}},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"Doppelter Unterstrich\"}}},{\"category\":\"Pi\",\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"Linkes einfaches Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"Rechtes einfaches Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"Einzelnes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"Einzelnes linkes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"Linkes doppeltes Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"Rechtes doppeltes Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"Doppeltes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"Doppeltes linkes Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"Dolch\"}}},{\"category\":\"Po\",\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"Doppelter Dolch\"}}},{\"category\":\"Po\",\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"Kugel\"}}},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"Dreieckige Kugel\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"Einzelpunkt\"}}},{\"category\":\"Po\",\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"zwei Punkte\"}}},{\"category\":\"Po\",\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"horizontale Ellipsis\"}}},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"Trennungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"promille\"}}},{\"category\":\"Po\",\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"pro Zehntausend\"}}},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"Strich\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"zwei Strich\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"drei Strich\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"zwei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"drei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"Caret\"}}},{\"category\":\"Pi\",\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"Einfacher nach links zeigender Winkel Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"Einzelne Nach-rechts-Winkel-Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"Referenzmarke\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"Doppelausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"Interrobang\"}}},{\"category\":\"Po\",\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"Überschrift\"}}},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"Undertie\"}}},{\"category\":\"Pc\",\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"Zeichen Krawatte\"}}},{\"category\":\"Po\",\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"Caret-Einfügungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"Asterism\"}}},{\"category\":\"Po\",\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"Bindestrich Kugel\"}}},{\"category\":\"Sm\",\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"Fraktions-Schrägstrich\"}}},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"Doppel-Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen für Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Pilcrow-Zeichen\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach links\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach rechts\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"Niedriges Sternchen\"}}},{\"category\":\"Po\",\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Semikolon\"}}},{\"category\":\"Po\",\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"Nahansicht\"}}},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"Zwei Sternchen vertikal ausgerichtet\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"Kommerzielles Minuszeichen\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"Swing Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"Inverted Undertie\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"Blume Interpunktionszeichen\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"Drei Punkt-Interpunktion\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"Vierpunkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"Fünf Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"Zwei Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"Vier-Punkt-Markierung\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Kreuz\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"Tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"Vertikale vier Punkte\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte rechte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"Index Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte rechte Klammer\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"Grundstücksgrenze\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"Ampersand gedreht\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"Pro Zeichen\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"Aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"Gedreht klein F\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"für alle\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"Komplement\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"es gibt\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"es gibt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"leere Menge\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"Differenz\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"nicht Element von\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"hat nicht als Element\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"Ende Beweis\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"Produkt\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"Koprodukt\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"Summe\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"minus plus\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"Plus mit Punkt\"}}},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"Division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"Mengendifferenz\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"verknüpft mit\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"Kreisoperator\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"Quadratwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"Kubikwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"vierte Wurzel\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportional zu\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"unendlich\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"Winkel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"gerichteter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"Raumwinkel\"}}},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"teilt\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"teilt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"nicht parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"oder\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"Durchschnitt\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"Vereinigung\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"Integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"Doppelintegral\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"Dreifachintegral\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"Randintegral\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"Oberflächenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"Volumenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"Integral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Gegenuhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"folglich\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"weil\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"Verhältnis\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"Minus mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"Überschuss\"}}},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"geometrische Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothetisch\"}}},{\"category\":\"Sm\",\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"Tildeoperator\"}}},{\"category\":\"Sm\",\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"Umgekehrte Tilde\"}}},{\"category\":\"Sm\",\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes stummes S\"}}},{\"category\":\"Sm\",\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"Sinuswelle\"}}},{\"category\":\"Sm\",\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"Kranzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"durchgestrichene Tilde\"}}},{\"category\":\"Sm\",\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"Minus über Tilde\"}}},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"nicht asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"ungefähr, aber nicht ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"weder ungefähr noch ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"nicht beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich oder gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"dreifache Tilde\"}}},{\"category\":\"Sm\",\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"alles gleich\"}}},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geometrisch äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"Differenz zwischen\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"nähert sich der Grenze\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geometrisch gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder das Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"Bild von oder ungefähr gleich\"}}},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"definiert als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"definiert als von rechts\"}}},{\"category\":\"Sm\",\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"category\":\"Sm\",\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}}},{\"category\":\"Sm\",\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"gleichwinklig zu\"}}},{\"category\":\"Sm\",\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"gleich mit Stern\"}}},{\"category\":\"Sm\",\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"gleich mit Delta\"}}},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"definitionsgemäß gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"gemessen mit\"}}},{\"category\":\"Sm\",\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"vielleicht gleich\"}}},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"ungleich\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"nicht kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"genau äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"kleiner oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"größer oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"kleiner als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"größer als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"viel kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"viel größer als\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"zwischen\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"nicht äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"nicht kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"nicht größer als\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"größer als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"kleiner oder größer als\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"größer oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"weder kleiner noch größer als\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"weder größer noch kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"nicht vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"nicht nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"keine echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"kein echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"Obermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"weder Teilmenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"weder Obermenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"Teilmenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"Obermenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"Multimenge\"}}},{\"category\":\"Sm\",\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"Multimengenmultiplikation\"}}},{\"category\":\"Sm\",\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"Multimengenvereinigung\"}}},{\"category\":\"Sm\",\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original von\"}}},{\"category\":\"Sm\",\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"quadratische Schnittmenge\"}}},{\"category\":\"Sm\",\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"quadratische VereinigungTasse\"}}},{\"category\":\"Sm\",\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Plus\"}}},{\"category\":\"Sm\",\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Minus\"}}},{\"category\":\"Sm\",\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Division\"}}},{\"category\":\"Sm\",\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"eingekreister Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"eingekreister Ringoperator\"}}},{\"category\":\"Sm\",\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"eingekreister Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Gleich\"}}},{\"category\":\"Sm\",\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"eingekreister Gedankenstrich\"}}},{\"category\":\"Sm\",\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Plus\"}}},{\"category\":\"Sm\",\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Minus\"}}},{\"category\":\"Sm\",\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"eingerahmte Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"eingerahmter Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"ergibt\"}}},{\"category\":\"Sm\",\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"ergibt nicht\"}}},{\"category\":\"Sm\",\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"senkrecht von\"}}},{\"category\":\"Sm\",\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"senkrecht auf\"}}},{\"category\":\"Sm\",\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"Behauptung\"}}},{\"category\":\"Sm\",\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"Model\"}}},{\"category\":\"Sm\",\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"wahr\"}}},{\"category\":\"Sm\",\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"dreifache vertikale Leiste mit rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doppelte vertikale Leiste mit doppeltem rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"beweist nicht\"}}},{\"category\":\"Sm\",\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"nicht wahr\"}}},{\"category\":\"Sm\",\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"nicht erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"negierte doppelte vertikale Leiste mit doppeltem rechten Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"vorangehend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"nachfolgend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"Original von\"}}},{\"category\":\"Sm\",\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"Bild von\"}}},{\"category\":\"Sm\",\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"Mehrfachzuordnung\"}}},{\"category\":\"Sm\",\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"hermitesch konjugierte Matrix\"}}},{\"category\":\"Sm\",\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"einschalten\"}}},{\"category\":\"Sm\",\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"Ausschließendes Oder\"}}},{\"category\":\"Sm\",\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"Nand verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"Nor verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"N-stufiger Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"N-stufige Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"Rautenoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Multiplikationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"Divisionsanzahl\"}}},{\"category\":\"Sm\",\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"Schleife\"}}},{\"category\":\"Sm\",\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"umgekehrte Tilde gleich\"}}},{\"category\":\"Sm\",\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doppelte Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doppelte Obermenge\"}}},{\"category\":\"Sm\",\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doppelter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doppelte Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"echter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"gleich und parallel\"}}},{\"category\":\"Sm\",\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"kleiner als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"größer als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"sehr viel kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"sehr viel größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"kleiner als, gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"größer als, gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"gleich oder vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"gleich oder nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"weder vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"weder nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"vorangehend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"nachfolgend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"nicht normale Untergruppe von\"}}},{\"category\":\"Sm\",\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"enthält keine normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"keine normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"enthält nicht als normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"Vertikale Ellipsis\"}}},{\"category\":\"Sm\",\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"Zentrierte horizontale Ellipse\"}}},{\"category\":\"Sm\",\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse unten links nach oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse, oben links nach unten rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"Element mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"Element mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"Element mit Überstrich\"}}},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"Element mit Unterstrich\"}}},{\"category\":\"Sm\",\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"Element mit 2 horizontalen Strichen\"}}},{\"category\":\"Sm\",\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit Überstrich\"}}},{\"category\":\"Sm\",\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"Z-Notation-Bag-Mitgliedschaft\"}}},{\"category\":\"So\",\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"Durchmesser-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"Haus\"}}},{\"category\":\"So\",\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"Projektiv\"}}},{\"category\":\"So\",\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"Perspektive\"}}},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"Schlangenlinie\"}}},{\"category\":\"So\",\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Nichtzeichen\"}}},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"Quadratische Raute\"}}},{\"category\":\"So\",\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"Bogen\"}}},{\"category\":\"So\",\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"Segment\"}}},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"Sektor\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"Schweres Pluszeichen\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"Schweres Minuszeichen\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"Heavy Division Sign\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"Curly Loop\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"Doppelte geschweifte Schleife\"}}},{\"category\":\"Sm\",\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"Weißes Dreieck, das kleines weißes Dreieck enthält\"}}},{\"category\":\"Sm\",\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"Aufrecht\"}}},{\"category\":\"Sm\",\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"Subset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"Superset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"Oder mit innerem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Vorhergehender Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"Superset Vorgänger Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"Mathematische aufsteigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"Lange Abteilung\"}}},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"Mathematische fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"quadratisches und\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"quadratisches oder\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit zentriertem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"Und mit Dot\"}}},{\"category\":\"Sm\",\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"Untere rechte Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"Linke äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"rechter äußerer Join\"}}},{\"category\":\"Sm\",\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"Volle äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"Große Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"Großes Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"Linkes und rechtes doppeltes Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"Linker und rechter Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"Linke Multimap\"}}},{\"category\":\"Sm\",\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"Long Right Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"Langer linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"Up Tack mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"Raute durch horizontale Regel geteilt\"}}},{\"category\":\"Sm\",\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant\"}}},{\"category\":\"Sm\",\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Tick nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"Steigende diagonale Kreuzung fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"Fallende diagonale Kreuzung steigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Balkenbegrenzer\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"Z Notationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"Z Notationstyp Doppelpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Zaun\"}}},{\"category\":\"Sm\",\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"Vertikale Zickzacklinie\"}}},{\"category\":\"Sm\",\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter leerer Satz\"}}},{\"category\":\"Sm\",\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit horizontaler Leiste\"}}},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"eingekreister umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Senkrecht\"}}},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"Kreis geteilt durch horizontale Leiste und obere Hälfte geteilt durch vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"Kreis mit überlagertem X\"}}},{\"category\":\"Sm\",\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"eingekreistes, gegen den Uhrzeigersinn gedrehtes Divisionszeichen\"}}},{\"category\":\"Sm\",\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"eingekreiste weiße Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"eingekreist weniger als\"}}},{\"category\":\"Sm\",\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"eingekreist größer als\"}}},{\"category\":\"Sm\",\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit kleinem Kreis nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit zwei horizontalen Strichen nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links unten nach rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links oben nach rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"Quadrat Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"Quadratischer kleiner Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"Doppelquadrat\"}}},{\"category\":\"Sm\",\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"Zwei verbundene Quadrate\"}}},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"S im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Serifen unten\"}}},{\"category\":\"Sm\",\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"Rechtes Dreieck über linkem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"Linkes Dreieck neben vertikaler Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken neben dem rechten Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"Fliege mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"Fliege mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"Schwarze Fliege\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"Zeiten mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"Mal mit rechter Hälfte Schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"Weiße Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"Schwarze Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"Unvollständige Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"Krawatte über Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"Unendlichkeit mit vertikaler Leiste negiert\"}}},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"Doppelter Multimap\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit konturierter Kontur\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"Erhöht als\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"Produkt mischen\"}}},{\"category\":\"Sm\",\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und geneigte Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und schräge Parallele zu Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"Identisch und schräg parallel\"}}},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"Gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"Thermodynamisch\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"Abwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"Abwärtsdreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"Schwarze Raute\"}}},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrtes weißes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"Fehlerfreies schwarzes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Diamant\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"Error-Barred Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter schwarzer Kreis\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Operator\"}}},{\"category\":\"Sm\",\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"Großer Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"Großer umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"Doppel plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"Triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"Winzig\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"Miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Punkt-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled Plus Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square-Kreuzungsoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square Union-Betreiber\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"Zwei logische und Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"Zwei logisch oder Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"N-Ary Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"Modulo Zwei Summe\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"Summation mit Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"Vierfach-Integral-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"Finite Part Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"Integral mit Doppelhub\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"Integraler Durchschnitt mit Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"Zirkulationsfunktion\"}}},{\"category\":\"Sm\",\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"Integration gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit rechteckigem Pfad um die Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit halbkreisförmigem Pfad um den Pol\"}}},{\"category\":\"Sm\",\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"Leitungsintegration ohne Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"Integral um einen Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"Quaternion Integral Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"Integriert mit Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"Integral mit der Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"Integral mit Union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"Integral mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"Integral mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"Beitreten\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"Großes linkes Dreieckbediener\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Zusammensetzung\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Piping\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Projektion\"}}},{\"category\":\"Sm\",\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Zirkumflex-Akzent oben\"}}},{\"category\":\"Sm\",\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde unter\"}}},{\"category\":\"Sm\",\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Index Zwei\"}}},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit schwarzem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Komma oben\"}}},{\"category\":\"Sm\",\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit fallenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"Vektor- oder Kreuzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"Semidirektprodukt mit geschlossenem Boden\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Multiplikationszeichen mit Circumflex-Akzent\"}}},{\"category\":\"Sm\",\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im doppelten Kreis\"}}},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"circled division sign\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"Innenprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"Produkt für den rechten Innenraum\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"Z-Notation relationaler Aufbau\"}}},{\"category\":\"Sm\",\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"Verschmelzung oder Koprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"Union mit Minuszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"Union mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"Kreuzung mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"Überschneidung mit logischem und\"}}},{\"category\":\"Sm\",\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"Vereinigung mit logischem Or\"}}},{\"category\":\"Sm\",\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über dem Schnittpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt über Union\"}}},{\"category\":\"Sm\",\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über Stab über Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt oberhalb der Stange oberhalb der Union\"}}},{\"category\":\"Sm\",\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"Union daneben und mit Union verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"Kreuzung neben und mit Kreuzung verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Vereinigung mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Schnittpunkt mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"Doppelter Quadratschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"Double Square Union\"}}},{\"category\":\"Sm\",\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"Closed Union mit Serifen und Smash-Produkten\"}}},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Punkt oben\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double logical or\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"Zwei durchschneiden logisch und\"}}},{\"category\":\"Sm\",\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"Zwei sich überschneidende logische Oder\"}}},{\"category\":\"Sm\",\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß oder\"}}},{\"category\":\"Sm\",\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß und\"}}},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"Logisch oder Überlappend Logisch Und\"}}},{\"category\":\"Sm\",\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"kleines Vee mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit doppelter Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Domain Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"Z Notationsbereich Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"Identisch mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit doppeltem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit dreifachem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"Ähnlich Minus Ähnlich\"}}},{\"category\":\"Sm\",\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"Kongruent mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Entspricht Asterisk\"}}},{\"category\":\"Sm\",\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"Fast gleichwertig mit dem Circumflex Accent\"}}},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen über Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt gleich\"}}},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"double equal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"Drei aufeinander folgende Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit zwei Punkten oben und zwei Punkten unten\"}}},{\"category\":\"Sm\",\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"Gleichwertig mit vier Punkten oben\"}}},{\"category\":\"Sm\",\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Circle Inside\"}}},{\"category\":\"Sm\",\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Kreis nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben links\"}}},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"Größer als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht gleich\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"Weniger als aber größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"Größer als aber weniger als unten und größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"Größer als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oben größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"Größer als oben Ähnlich oben\"}}},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"less than greater than or equal to\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"greater than less than or equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben schräg gleich oben Größer als oben schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"Größer als oben schräg gleich oben kleiner als oben schräg gleich groß\"}}},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als mit innenliegendem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als mit Punkt nach innen\"}}},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"Gleich oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"Gleich oder größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder größer als\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"Äquivalent oder kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben Weniger als Gleiches Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben größer als oben Gleichheitszeichen\"}}},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"Doppelt verschachtelt, weniger als mit Unterleiste\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"less than greater than overlay\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"Größer als weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"Weniger als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"Größer als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"Weniger als dann geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"Größer als geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"Größer als\"}}},{\"category\":\"Sm\",\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"Größer als oder gleich\"}}},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"difference between (variant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"Stellt über dem einzeiligen Gleichheitszeichen ein\"}}},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"Erfolg über dem einzeiligen Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"Vorangehende Single-Line ist nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"Erfolg über Single-Line nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"Erfolgreich über Gleichheitszeichen\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precedes but not equal to\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes fast gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"Erreicht über fast gleich viel\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"Vorangegangene nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"Erreicht oben nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"Doppelter Vorgänger\"}}},{\"category\":\"Sm\",\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"Doppelter Erfolg\"}}},{\"category\":\"Sm\",\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"Superset mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"Superset mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"Superset mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"Superset von oder gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"Teilmenge des obigen Gleichheitszeichens\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"Superset des obigen Gleichheitszeichens\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"approximate subset of\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"approximate superset of\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"Superset von oben fast gleichwertig\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"Superset von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"Platz links Feldbetreiber geöffnet\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Box mit offener Box\"}}},{\"category\":\"Sm\",\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Untermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen oder gleich\"}}},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"subset over superset\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"superset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"subset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"superset over superset\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"Superset neben dem Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"Superset Neben und Joined von Dash mit Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"Heugabel mit T-Stück\"}}},{\"category\":\"Sm\",\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"Transversalschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"Gabelung\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"Nicht Gabeln\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"Kurzer Linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"Kurzer Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklig zu S\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"Vertikales Dreifach-Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken linkes Drehkreuz\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken Doppelter linker Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"Long Dash von Left Member von Double Vertical\"}}},{\"category\":\"Sm\",\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"Short Down Tack mit Overbar\"}}},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"perpendicular over bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack Über Short Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"Double Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"Verdoppeln Sie Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"Doppelstrich nicht unterschreiben\"}}},{\"category\":\"Sm\",\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Doppelstrich nicht unterschrieben\"}}},{\"category\":\"Sm\",\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"Teilt sich nicht mit umgekehrten Negationsschrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"Down Tack mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"Parallel zum horizontalen Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"Parallel zu Tilde Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"Dreifache vertikale Balken-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Strich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"Triple Colon Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachtelt weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachteltes Größeres als\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"Doppellinie schräg, weniger als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg größer als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"Dreifache Schrägstrich-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"Großer dreifacher vertikaler Barbediener\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"Doppelter Schrägstrich-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"N-Ary White Vertical Bar\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"Wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Komma\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale horizontale Ellipsen\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Zwei-Punkt-Leader\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Wavy Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"Sesampunkt\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"Weißer Sesam Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"Centreline Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Wellenlinie\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"Mittellinie Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"kleines Komma\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"kleiner Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"kleines Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"kleiner Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"kleines Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"kleines Ausrufezeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"kleiner Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"kleines Nummernzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"kleines kaufmännisches\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"kleines Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"kleines Pluszeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"kleiner Bindestrich-Minus\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"kleines weniger als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"kleines Größeres als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"kleines Gleichheitszeichen\"}}},{\"category\":\"Po\",\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"kleiner umgekehrter Schrägstrich\"}}},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"kleines Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"kleines Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"kleine kommerzielle bei\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"vollbreites Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"vollbreites Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"vollbreites Nummernzeichen\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"vollbreites Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"vollbreites Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"vollbreites kaufmännisches und\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"vollbreites Apostroph\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Stern\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Komma\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Minus\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Punkt\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit voller Breite\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Semikolon\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"Weniger als das gesamte Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Gleichspannungszeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Mehr als Zeichen\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Commercial at\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit voller Breite\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"Circumflex-Akzent mit voller Breite\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Low Line\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Gravis Akzent\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Vertikale Linie\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"vollbreite Tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"vollbreites Cent-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"vollbreites Pfundzeichen\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"vollbreite nicht Symbol\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Überstrich\",\"alternative\":\"vollbreites Makron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"vollbreite gestrichelte Linie\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"vollbreites Yen-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"vollbreites Won-Zeichen\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"Halbbreite bildet leicht vertikal\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat mit halber Breite\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit halber Breite\"}}}]\n,\n\"de/symbols/math_whitespace.js\": \n[{\"locale\":\"de\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"Leerzeichen\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"weicher Trennstrich\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"En Quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"Em Quad\"}}},{\"category\":\"Zs\",\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"En Space\"}}},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"Raum für drei Per-Em\"}}},{\"category\":\"Zs\",\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"Raum für vier pro Em\"}}},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"Six-Per-Em Space\"}}},{\"category\":\"Zs\",\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"Raum darstellen\"}}},{\"category\":\"Zs\",\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"Interpunktionsraum\"}}},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"Nullbreite ohne Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"Zero Width Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"Markierung von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"Markierung von rechts nach links\"}}},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"Trennzeichen\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"Absatztrennzeichen\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"Einbetten von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"Einbetten von rechts nach links\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"Pop Richtungsformatierung\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"Von links nach rechts überschreiben\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"Von rechts nach links überschreiben\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"Schmaler No-Break-Bereich\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Cf\",\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"Word Joiner\"}}},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"von\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"Unsichtbares Plus\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"Symmetrisches Austauschen verhindern\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"Aktivieren Sie das symmetrische Austauschen\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"Nationale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"Nominale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"Nullbreite Leerzeichen\"}}},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"Interlinearer Anmerkungsanker\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"Separator für interlineare Anmerkungen\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"Interlinear Annotation Terminator\"}}}]\n,\n\"de/symbols/other_stars.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"Dezimalexponentensymbol\"}}},{\"category\":\"So\",\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"weißer Stern\"}}},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"Mittlerer weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"Mittlerer schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"Weißes schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"Häkchen\"}}},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"Schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"Schwere Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"Center Cross öffnen\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"Schweres offenes Mittelkreuz\"}}},{\"category\":\"So\",\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"Malteserkreuz\"}}},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Davidstern\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"Vier Teardrop-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"Vier Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"Schwere Vier-Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"Vier Club-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Schwarzer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Weißer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"Funkelt\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Stress umrissener weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Eingekreister weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"Open Center Black Star\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Center White Star\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern umrissen\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Schwerer umrissener schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Sternrad Stern\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Stern\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stern\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"Öffnen Sie Center Asterisk\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"Acht Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger Sternradstern\"}}},{\"category\":\"So\",\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"Sechszackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Zwölf schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"Sechzehn Spitzen Sternchen\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"Open Center Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"Sechs Petalled Schwarzweiss-Florette\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"Schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"Weiße Florette\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"Acht Petalled umrissene schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Eingekreistes offenes Zentrum Achtstern\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"Schweres, tropfenbesetztes Nadelrad-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"Feste Trifoliate-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"Schwere Chevron-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Funkeln\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"Schweres Funkeln\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"Schwere Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"Cross Mark\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Kreis\"}}}]\n,\n\"de/units/energy.js\": \n[{\"locale\":\"de\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"Watt\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowattstunde\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"Joule\",\"plural\":\"Joules\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"Volt\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Mikroohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"Ohm\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kiloohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"de/units/length.js\": \n[{\"locale\":\"de\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"Millimeter\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"Zentimeter\"}},\"category\":\"length\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"Meter\"}},\"category\":\"length\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"Kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"Fuß\"}},\"category\":\"length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"Zoll\"}},\"category\":\"length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"plural\":\"Meilen\",\"default\":\"Meile\"}},\"category\":\"length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"plural\":\"Yards\",\"default\":\"Yard\"}},\"category\":\"length\",\"names\":[\"yd\",\"yd.\"]},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"nautische Meile\"}},\"category\":\"length\"}]\n,\n\"de/units/memory.js\": \n[{\"locale\":\"de\"},{\"key\":\"b\",\"mappings\":{\"default\":{\"plural\":\"Bits\",\"default\":\"Bit\"}},\"category\":\"memory\",\"names\":[\"b\"]},{\"key\":\"B\",\"mappings\":{\"default\":{\"plural\":\"Bytes\",\"default\":\"Byte\"}},\"category\":\"memory\",\"names\":[\"B\"]},{\"key\":\"KB\",\"mappings\":{\"default\":{\"plural\":\"Kilobytes\",\"default\":\"Kilobyte\"}},\"category\":\"memory\",\"names\":[\"KB\"]},{\"key\":\"MB\",\"mappings\":{\"default\":{\"plural\":\"Megabytes\",\"default\":\"Megabyte\"}},\"category\":\"memory\",\"names\":[\"MB\"]},{\"key\":\"GB\",\"mappings\":{\"default\":{\"plural\":\"Gigabytes\",\"default\":\"Gigabyte\"}},\"category\":\"memory\",\"names\":[\"GB\"]},{\"key\":\"TB\",\"mappings\":{\"default\":{\"plural\":\"Terabytes\",\"default\":\"Terabyte\"}},\"category\":\"memory\",\"names\":[\"TB\"]}]\n,\n\"de/units/other.js\": \n[{\"locale\":\"de\"},{\"key\":\"ha\",\"mappings\":{\"default\":{\"default\":\"Hektar\"}},\"category\":\"other\",\"names\":[\"ha\"]},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"Dutzend\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"de/units/speed.js\": \n[{\"locale\":\"de\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"Knoten\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"Meilen pro Stunde\",\"singular\":\"Meile pro Stunde\"}},\"category\":\"speed\",\"names\":[\"mph\"]},{\"key\":\"kmh\",\"mappings\":{\"default\":{\"default\":\"Kilometer pro Stunde\"}},\"category\":\"speed\",\"names\":[\"kmh\"]},{\"key\":\"rpm\",\"mappings\":{\"default\":{\"default\":\"Umdrehungen pro Minute\",\"singular\":\"Umdrehung pro Minute\"}},\"category\":\"speed\",\"names\":[\"rpm\"]}]\n,\n\"de/units/temperature.js\": \n[{\"locale\":\"de\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"Farad\"}},\"category\":\"temperature\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"Celsius\"}},\"category\":\"temperature\",\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\",\"names\":[\"K\",\"°K\"]}]\n,\n\"de/units/time.js\": \n[{\"locale\":\"de\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Nanosekunde\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Microsekunde\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Millisekunde\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Sekunde\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Stunde\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"de/units/volume.js\": \n[{\"locale\":\"de\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubik\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikinch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikfuß\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikyard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"Fass\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"plural\":\"Gallonen\",\"default\":\"Gallone\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"Pint\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"plural\":\"Quarts\",\"default\":\"Quart\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"Esslöffel\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"Teelöffel\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikzentimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"de/units/weight.js\": \n[{\"locale\":\"de\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"weight\",\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"plural\":\"Unzen\",\"default\":\"Unze\"}},\"category\":\"weight\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"Gramm\"}},\"category\":\"weight\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Kilogramm\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Mikrogramm\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Milligramm\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"plural\":\"Tonnen\",\"default\":\"Tonne\"}},\"category\":\"weight\",\"names\":[\"t\",\"T\"]}]\n,\n\"es/functions/algebra.js\": \n[{\"locale\":\"es\"},{\"key\":\"deg\",\"names\":[\"deg\"],\"mappings\":{\"default\":{\"default\":\"grados\"}},\"category\":\"Algebra\"},{\"key\":\"det\",\"names\":[\"det\"],\"mappings\":{\"default\":{\"default\":\"determinante\"}},\"category\":\"Algebra\"},{\"key\":\"dim\",\"names\":[\"dim\"],\"mappings\":{\"default\":{\"default\":\"dimensión\"}},\"category\":\"Algebra\"},{\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"],\"mappings\":{\"default\":{\"default\":\"homomorfismo\"}},\"category\":\"Algebra\"},{\"key\":\"ker\",\"names\":[\"ker\"],\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"category\":\"Algebra\"},{\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"],\"mappings\":{\"default\":{\"default\":\"traza\"}},\"category\":\"Algebra\"}]\n,\n\"es/functions/elementary.js\": \n[{\"locale\":\"es\"},{\"key\":\"log\",\"names\":[\"log\"],\"mappings\":{\"default\":{\"default\":\"logaritmo\"}},\"category\":\"Logarithm\"},{\"key\":\"ln\",\"names\":[\"ln\"],\"mappings\":{\"default\":{\"default\":\"logaritmo neperiano\"}},\"category\":\"Logarithm\"},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logaritmo base 10\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponente\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"mcd\",\"MCD\"],\"mappings\":{\"default\":{\"default\":\"MCD\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"mcm\",\"MCM\"],\"mappings\":{\"default\":{\"default\":\"mcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argumento\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"parte imaginaria\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"residuo\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"extremo inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"names\":[\"lim\"],\"mappings\":{\"default\":{\"default\":\"límite\"}},\"category\":\"Limits\"},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"máximo\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"mínimo\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"superior\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"límite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"límite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"límite directo\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"límite inverso\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"módulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilidad\"}},\"category\":\"Probability\"}]\n,\n\"es/functions/hyperbolic.js\": \n[{\"locale\":\"es\"},{\"key\":\"cosh\",\"names\":[\"cosh\"],\"mappings\":{\"default\":{\"default\":\"coseno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"coth\",\"names\":[\"coth\"],\"mappings\":{\"default\":{\"default\":\"cotangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"csch\",\"names\":[\"csch\"],\"mappings\":{\"default\":{\"default\":\"cosecante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sech\",\"names\":[\"sech\"],\"mappings\":{\"default\":{\"default\":\"secante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sinh\",\"names\":[\"sinh\"],\"mappings\":{\"default\":{\"default\":\"seno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"tanh\",\"names\":[\"tanh\"],\"mappings\":{\"default\":{\"default\":\"tangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"],\"mappings\":{\"default\":{\"default\":\"area coseno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"],\"mappings\":{\"default\":{\"default\":\"area cotangente hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"],\"mappings\":{\"default\":{\"default\":\"area cosecante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"],\"mappings\":{\"default\":{\"default\":\"area secante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"],\"mappings\":{\"default\":{\"default\":\"area seno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"],\"mappings\":{\"default\":{\"default\":\"area tangente hiperbólica\"}},\"category\":\"Area\"}]\n,\n\"es/functions/trigonometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"],\"mappings\":{\"default\":{\"default\":\"coseno\"}},\"category\":\"Trigonometric\"},{\"key\":\"cot\",\"names\":[\"cot\"],\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"csc\",\"names\":[\"csc\"],\"mappings\":{\"default\":{\"default\":\"cosecante\"}},\"category\":\"Trigonometric\"},{\"key\":\"sec\",\"names\":[\"sec\"],\"mappings\":{\"default\":{\"default\":\"secant\"}},\"category\":\"Trigonometric\"},{\"key\":\"sin\",\"names\":[\"sin\",\"sine\",\"sen\"],\"mappings\":{\"default\":{\"default\":\"seno\"}},\"category\":\"Trigonometric\"},{\"key\":\"tan\",\"names\":[\"tan\"],\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"arccos\",\"names\":[\"arccos\"],\"mappings\":{\"default\":{\"default\":\"arco coseno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccot\",\"names\":[\"arccot\"],\"mappings\":{\"default\":{\"default\":\"arco cotangente\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccsc\",\"names\":[\"arccsc\"],\"mappings\":{\"default\":{\"default\":\"arco cosecante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsec\",\"names\":[\"arcsec\"],\"mappings\":{\"default\":{\"default\":\"arco secante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsin\",\"names\":[\"arcsin\"],\"mappings\":{\"default\":{\"default\":\"arco seno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arctan\",\"names\":[\"arctan\"],\"mappings\":{\"default\":{\"default\":\"arco tangente\"}},\"category\":\"Cyclometric\"}]\n,\n\"es/symbols/digits_rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cuadrado\"},\"mathspeak\":{\"default\":\"al cuadrado\"},\"clearspeak\":{\"default\":\"al cuadrado\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cubo\"},\"mathspeak\":{\"default\":\"al cubo\"},\"clearspeak\":{\"default\":\"al cubo\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un cuarto\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un medio\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"tres cuartos\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Séptimo\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Noveno\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Décimo\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Tercero\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos tercios\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction One Fifth\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos quintos\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres quintos\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cuatro quintos\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Sexto\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"Vulgar fracción cinco sextos\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Octavo\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres octavos\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cinco octavos\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar siete octavos\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Numerador de fracciones uno\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction Zero Thirds\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"Número diez en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"Número veinte en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"Número circundado treinta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"Número circundado Cuarenta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"Círculo número cincuenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"Círculo número sesenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"Número setenta en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"Círculo número ochenta en cuadrado negro\"}}}]\n,\n\"es/symbols/greek-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"es/symbols/greek-scripts.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"pequeño mayúscula gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscripción pequeña beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subíndice pequeña gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subíndice rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subíndice phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscripción chi\"}}}]\n,\n\"es/symbols/greek-symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"símbolo beta\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"símbolo kai griego\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"épsilon invertido\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Matemática Bold Capital Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"Matemática negrita pequeño digamma\"}}}]\n,\n\"es/symbols/hebrew_letters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bet\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guímel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dálet\"}},\"category\":\"Lo\"}]\n,\n\"es/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a con punto arriba y macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo y macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a con ring above y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o con Dot Above y Macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c con cedilla y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e con cedilla y breve\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i con diéresis y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y acute\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o con tilde y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s con agudo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s con carón y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u con tilde y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u con macrón y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a con breve y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a con breve y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a con breve y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a con breve y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a con breve y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o with horn and acute\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o with horn and grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o with horn and hook above\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o with horn and tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o con cuerno y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y punto debajo\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"es\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barrada\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d con barra\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h con guión\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l con guión\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t con guión\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b con línea\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda tachada\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z con línea\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"parada glotal invertida con línea\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g con línea\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o con línea y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"pequeña e con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y con trazo\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo y gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"parada glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"parada invertida glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"de lado O con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"larga s con trazo diagonal\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"pequeña s larga con trazo alto\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta convertido\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s larga con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta pequeña latina\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s larga\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b con barra encima\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tono seis\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c con gancho\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d con barra encima\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f con gancho\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k con gancho\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l con barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n con pierna derecha larga\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o con cuerno\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"dos tonos\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter invertido Esh bucle\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t con palatal gancho\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u con horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh invertido\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh con cola\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tono cinco\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz con acento\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae con macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh con acento\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e convertido\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae con acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s con cola cruzada\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z con cola swash\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q con cola de gancho\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"convertida en una\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alfa minúscula latina\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"convertida en alfa\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"abierta o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d con cola\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"invertida E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e abierta\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina invertida E abierta con gancho\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"cerrada invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"escritura latina de letras pequeñas G\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"cuerno de carnero de letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"girada h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"pequeña letra latina Heng con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"latín letra minúscula Iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l con cinturón\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"letra L latina pequeña con gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"girada m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"vuelta M con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n con gancho izquierdo\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"letra minúscula omega\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"latin Small Letter Closed Omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"vuelta r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"vuelta R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"vuelta R con gancho\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"R con cola\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"invertida R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"S con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña en cuclillas invertida Esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"Esh minúscula latina con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"vuelta t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"T con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"Letra de letra pequeña latina U\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"Upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"V con gancho\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"convertida V\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"girada w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"vuelta y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"Z con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"faríngea con voz fricativa\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertida parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"estirada c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"Carta Bilabial Click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"cerrada abierta e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"vuelta k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q con gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Dz Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Tc Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percusion bilabial\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"de percusión bidental\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"vuelta ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"convertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"convertida i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"de lado O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"de lado abierto O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"vuelta oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"mitad superior O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"Letra latina, letra inferior, mitad inferior O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"hacia los lados U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"de lado diaeresizada U\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"girada hacia los lados M\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"Carta latina expresada espirante laríngeo\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"B con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"D con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"F con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"M con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"N con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"P con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"R con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo y tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"S con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"T con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z con tilde media\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"girada g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th con tachado\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"B con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"D con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"F con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"G con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"K con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"L con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"M con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"N con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"P con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"R con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"S con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina Esh con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"V con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"X con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"Z con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"Alfa latina pequeña letra con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"D con gancho y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"pequeña E con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"E Pequeña Open con Gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"E abierta invertido con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"I con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"pequeña latina Open O con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"Esh de letra pequeña latina con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"U con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con gancho retroflex\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n precedida por apóstrofe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a aguda\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a con anillo\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"eñe\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o aguda\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"Y aguda\",\"defaultMP\":\"ye aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y diéresis\",\"defaultMP\":\"ye diéresis\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a barra\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a con breve\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c con carón\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d con carón\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e con breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e con carón\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g con breve\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g con cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i con tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i con breve\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sin punto\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l con agudo\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l con carón\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l con punto mediano\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n con carón\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o con breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r con carón\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s con agudo\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s con carón\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t con carón\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u con tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u barra\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u con breve\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z con agudo\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z con punto\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z con carón\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k con acento\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j con acento\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g con agudo\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n con grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i con Breve invertida\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r con doble sepulcro\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h con caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"con un punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e con cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o con punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y con Macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"s in punto j\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a con anillo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g con macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h con breve debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u con diéresis debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w con grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a con medio derecho de anillo\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y con grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y con tilde\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combinando a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combinando e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combinando i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combinando o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combinando u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combinando c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combinando d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combinando h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combinando m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combinando r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combinando t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combinando v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combinando x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subíndice i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subíndice r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subíndice u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subíndice latino letra pequeña V\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combinando r abajo\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combinando letra minúscula en latín, aplanado, abierto arriba\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combinando ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combinando ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combinando av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combinando Letra Pequeña Latina C Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combinando insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combinando la eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combinando g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combinando k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combinando l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combinando n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combinando s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combinando larga s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combinando z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superíndice i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superíndice n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subíndice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subíndice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subíndice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subíndice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subíndice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subíndice h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subíndice k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subíndice l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subíndice m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subíndice n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subíndice p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subíndice s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subíndice t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subíndice j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"concha de tortuga con corchetes mayúscula S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"cruzada negativa cuadrada Mayúscula P\"}}}]\n,\n\"es/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto arriba y macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo y macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ring above y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con diaéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con dot above y macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con cedilla y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"mayúscula E with cedilla and breve\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con diéresis y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y acute\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con macrón y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and acute\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and grave\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and hook above\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con cuerno y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y punto debajo\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A grave\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"mayúscula A aguda\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"mayúscula C cedilla\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E grave\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"mayúscula E aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"mayúscula E diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"mayúscula I grave\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula I aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"mayúscula I acento circumflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula Ñ\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O grave\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula O aguda\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U grave\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U aguda\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y aguda\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"mayúscula A barra\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con carón\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con carón\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"mayúscula E barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con carón\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con breve\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con breve\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"mayúscula J con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con agudo\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con carón\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto mediano\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"mayúscula n con carón\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble acento agudo \"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con carón\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con carón\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U barra\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con anillo arriba\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble acento agudo\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con agudo\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con carón\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con acento\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"mayúscula con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"mayúscula a con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"mayúscula con un punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Mayúscula Y con Macron\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"mayúscula F con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con breve debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con grave\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z with line below\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con grave\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con tilde\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/math_angles.js\": \n[{\"locale\":\"es\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con arco\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con flecha zigzag hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"ángulo sólido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Ángulo medido de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Variante de ángulo recto con cuadrado\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"ángulo recto medido con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Ángulo con S dentro\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Ángulo agudo\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Ángulo esférico de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Apertura de ángulo esférico\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Ángulo de giro\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Ángulo invertido\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"ángulo con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"ángulo inverso con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"category\":\"Sm\"}]\n,\n\"es/symbols/math_arrows.js\": \n[{\"locale\":\"es\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flecha derecha\",\"defaultMP\":\"flecha\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flecha abajo\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda tachada\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con doble punta\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flecha derechaa con doble punta\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con cola\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con cola\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda de barra\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"barra con flecha\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flecha derecha de barra\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flecha con barra\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo con base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con gancho\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flecha con gancho\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con lazo\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flecha con lazo\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda y derecha\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flecha zigzag abajo\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha desde esquina inferior\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo desde esquina izquierda\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flecha noroeste a barra larga\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra arriba de flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha arriba de flecha izquierda\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a la izquierda de flecha abajo\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda arriba de flecha derecha\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"dos flechas\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda tachada\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"flecha doble tachada\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"flecha doble\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda-derecha\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"flecha doble vertical\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia noroeste\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia nordeste\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudeste\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudoeste\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"flecha triple izquierda\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"flecha triple\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flecha vacía\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba desde barra\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba en el pedestal\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra vertical\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca en pedestal\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia la derecha de la pared\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flecha del noroeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flecha del sudeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha blanca\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con círculo pequeño\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to the right of downwards arrow\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con doble trazo vertical\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con punta vacía\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flecha electrica\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"flecha arriba entre dos barras horizontales\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"círculo roto con la flecha del noroeste\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cabeza ancha\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste pesada\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flecha pesada del noreste\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"punto de dibujo Flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con punta redonda redonda\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo pesado\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"triángulo punteado hacia la flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo de trazo pesado\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha negra\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"punta de flecha tridimensional hacia la derecha hacia arriba\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"punta de flecha hacia la derecha con iluminación inferior en tres dimensiones\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"punta de flecha negra hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia abajo y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia arriba y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"squat Black Arrow hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de color negro cóncava puntiaguda pesada\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"sombra derecha flecha blanca hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"sombra hacia la izquierda blanca a la izquierda\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"back-Tilted Shadowed White Right Arrow\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca sombreada inclinada hacia delante\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada inferior, sombreada a la derecha, blanca\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca superior derecha sombreada pesada\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"con muesca, flecha derecha hacia abajo, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"con muescas, flecha derecha hacia arriba, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"círculo pesado blanco flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas blancas\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental de plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flecha derecha pesada con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"lágrima-flecha de flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de lágrima pesada\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña pesada\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"open-Outlined Outward Arrow\"}}},{\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flecha con más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda, desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"flecha larga en zigzag\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"izquierda Derecha Doble Flecha con Trazo Vertical\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow from bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la derecha de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"flecha triple hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flecha hacia abajo\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"leftwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"rightwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"leftwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"rightwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"rightwards arrow with dotted stem\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to bar\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"downwards arrow to bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la cola con doble trazo vertical\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow with tail\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con doble movimiento vertical\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"cola de flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante relleno a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flechas del noroeste y sureste\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flecha noreste y sudoeste\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flechas a noroeste y nordeste\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flechas a nordeste y sudeste\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flechas a suddeste y sudoeste\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flechas a sudoeste y noroeste\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste Cruzando Flecha Noreste\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing South East Arrow\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"caída en diagonal que cruza la flecha noreste\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"creciente Cruce de la Cruz del Sureste de la Flecha\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing North West Arrow\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"north West Arrow Crossing North East Arrow\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flecha que apunta hacia la derecha y luego curva hacia arriba\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha que gira hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la derecha en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la izquierda en sentido antihorario\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arco superior flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arco inferior flecha hacia la izquierda\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"giro negativo\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"giro positivo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha semicircular inferior derecha\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"flecha inferior izquierda semicircular en sentido antihorario\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en sentido contrario a las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en el sentido de las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre la flecha corta hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre la flecha corta hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"flecha corta hacia la derecha arriba flecha hacia la izquierda\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flecha con más suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con más abajo\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de X\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de círculo\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"dos cabezas de flecha hacia arriba desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flecha con igual\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flecha con tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"flecha con casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de menos de\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flecha con mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con incluido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través del subconjunto\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con contiene\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha inversa\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a través del círculo\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"diamante negro con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"círculo negro con flecha hacia abajo\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"integral con flecha hacia la izquierda con garfio\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noreste\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del sureste\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noreste\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flecha negra sur este\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con círculo pequeño\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con un círculo más\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"flecha de flecha larga hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flecha triple de dos cabezas hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con tallo punteado\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"ola flecha apuntando directamente a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"signo de igual flecha arriba a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de mayor-que\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"operador de tilde sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flecha ascendente de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flecha de medio ancho hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo de medio ancho\"}}}]\n,\n\"es/symbols/math_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"p de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra pi\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra gamma\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Gamma\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Pi\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra suma de n-ary\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"mayúscula D\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra cursiva j\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto j\"}},\"key\":\"1D6A5\"}]\n,\n\"es/symbols/math_delimiters.js\": \n[{\"locale\":\"es\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo\",\"defaultMP\":\"paréntesis\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho\",\"defaultMP\":\"cierra paréntesis\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"corchete izquierdo\",\"defaultMP\":\"abre corchetes\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho\",\"defaultMP\":\"cierra corchetes\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"llave izquierda\",\"defaultMP\":\"abre llaves\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"llaves derecha\",\"defaultMP\":\"cierra llaves\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo con pluma\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho con pluma\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"corte inferior derecho\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"corte inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"corte superior derecho \"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"corte superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"ángulo superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"ángulo superior derecho\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"mitad superior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"mitad inferior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular derecho\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"extensión del soporte cuadrado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte cuadrado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"pedazo medio rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"soporte izquierdo rizado gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"pedazo medio de soporte rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior derecha rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"extensión integral\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"extensión de línea horizontal\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"izquierda arriba o derecho debajo sección llave\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"derecha arriba o izquierdo debajo sección llave\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"suma superior\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"parte inferior de la suma\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"corchete superior\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"corchete inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado inferior sobre soporte cuadrado superior\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"parte inferior del símbolo radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical derecha\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"corchete rizado superior\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"corchete rizado inferior\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"corchete superior en tortuga\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"corchete inferior en tortuga\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"ornamento de paréntesis izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"adorno de paréntesis medio derecho\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis izquierdo aplanado medio\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis derecho medio aplanado\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en el ángulo que apunta hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en ángulo recto que apunta hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte de concha de tortuga izquierda ligera\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"ornamento de corchete derecho tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado derecho medio\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador izquierdo de bolsa de s-formó\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador derecho de bolsa de s-formó\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"corchete vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío derecho \"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano derecho\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"soporte rizado blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"derecha rizado blanco soporte\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"left white paren\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"right white paren\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"notación Z izquierda soporte de imagen\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"corchete de imagen derecha de notación Z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga negra izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"abrazadera de concha de tortuga negra derecha\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"valla izquierda ondulada\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"valla derecha ondulada\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo orientada hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"soporte superior izquierdo superior\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"medio soporte superior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"medio soporte inferior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"soporte U lateral izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"lado derecho U soporte\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"doble paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"paréntesis doble derecho\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo recto\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble derecho\",\"defaultMP\":\"cierra paréntesis angular doble\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"soporte de la esquina izquierda\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Izquierdo Negro\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Negro Derecho\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"soporte de caparazón de tortuga blanca izquierda\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga blanca derecha\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"corchete vacío\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\",\"defaultMP\":\"cierra corchete vacío\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"comilla doble invertida\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"comillas bajas dobles\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo adornado\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho adornado\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco vertical derecho\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"llave superior\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"llave inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro derecho vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte vertical doble ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte de ángulo recto doble vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular superior\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina blanco vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha blanca\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical derecho\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"pequeño paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"corchete Rizado Izquierdo Pequeño\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"corchete derecho rizado pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"soporte de concha pequeña tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"pequeño corchete derecho de concha de tortuga\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"corchete rizado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"corchete de esquina izquierda de medio ancho\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha de medio ancho\"}}}]\n,\n\"es/symbols/math_geometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas horizontales\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Vertical\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Ligero Cuadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Luz Cuadruple Tablero Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Vertical\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Abajo Ligero y Derecho Pesado\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos ligeros\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​abajo y derecha\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia abajo y hacia la izquierda\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta Pesadas y Ligeras\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y derechos\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta livianos y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesado y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia arriba y hacia la izquierda\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesados ​​y rectos hacia abajo\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos arriba ligeros\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y rectas ligeras\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y rectos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba livianos y rectos para abajo pesados\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y derechas\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y izquierdo pesado\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Pesado y Izquierda Abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros e izquierdos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y Izquierda Abajo Pesado\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales e izquierdas\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesados ​​y derecha abajo luz\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, derecha, pesada y izquierda abajo, luz\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja de luz derecha y izquierda abajo pesado\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja izquierda ligera y derecha abajo pesada\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesada y derecha arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, livianos y a la izquierda, pesados\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Arriba Pesada\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores sencillos\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Pesada y Derecha Vertical Luz\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Vertical Ligera y Horizontal Pesada\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba pesados ​​y abajo luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hacia abajo pesados ​​y hacia arriba luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y horizontales ligeras\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Arriba Pesada y Derecha abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha arriba pesada y izquierda abajo luz\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, izquierda abajo, pesada y derecha arriba, ligera\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja derecha abajo pesada y izquierda arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y ascendentes horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y para abajo horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, ligeros y a la izquierda, verticales, pesados\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Vertical Pesada\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y horizontales\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Vertical\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha doble\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha doble\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo con separador doble\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho con separador doble\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"delimitador superior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"delimitador superior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical sencillo y horizontal doble\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical doble y horizontal sencillo\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores dobles\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco abajo y derecha\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco hacia abajo y hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco arriba y a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos de luz arco arriba y derecha\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior derecha a inferior izquierda\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior izquierda a inferior derecha\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz diagonal cruz\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas se iluminan\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos pesado derecho\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Ligero Izquierda y Pesada Derecha\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas iluminados y pesados\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Izquierda y Luz Derecha\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y ligeros\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"bloque mitad superior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"bajar un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto inferior\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos más bajo\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"bloque mitad inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"bloque inferior de cinco octavos\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos más bajo\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"lower Seven Eighths Block\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"bloque\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"bloque de siete octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"bloque de cinco octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"media cuadra izquierda\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"izquierda un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"media cuadra derecha\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"sombra ligera\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"sombra media\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"sombra intensa\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"upper One Eighth Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"a la derecha un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo e inferior derecho\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con esquinas redondeadas\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco que contiene cuadrado pequeño negro\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno horizontal\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno vertical\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado ortogonal\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la esquina superior izquierda a la derecha inferior\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la parte superior derecha hacia abajo izquierda Relleno\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado diagonal\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectángulo negro\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectángulo\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectángulo relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"rectángulo vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"paralelogramo negro\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"paralelogramo\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"indicador de apuntar hacia la derecha negro\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"puntero de apuntar hacia la derecha blanco\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"puntero relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"puntero señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"diamante\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"diamante vacío contiene diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"ojo de pez\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"rombo\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"círculo vacío\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"círculo punteado\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"círculo con relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"blanco\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"círculo relleno\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad inferior rellena\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad superior rellena\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"semicírculo izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"semicírculo derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"bullet inversa\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"círculo vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arco superior izquierda\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arco superior derecha\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arco inferior derecha\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arco inferior izquierda\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"semicírculo inferior\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"cuadrado con bisectriz\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triángulo vacío con punto\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"círculo grande\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior derecho\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha superior diagonal negra\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad diagonal izquierda inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"diamante con Mitad Izquierda Negro\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad derecha negra\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"cuadrado punteado\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"cuadrado grande negro\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"gran Plaza Blanca\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentágono negro\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexágono negro\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagonal negro horizontal\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"circulo grande negro\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"diamante Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"diamante blanco medio\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"lozenge Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"pastilla blanca mediana\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"pequeño diamante negro\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal negro\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal blanco\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Negro\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Blanco\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"estrella media vacía\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña rellena\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentágono negro que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"círculo grande pesado\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"óvalo pesado con interior oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"círculo pesado con círculo dentro\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"círculo pesado\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"saltire en círculo pesado\"}}}]\n,\n\"es/symbols/math_harpoons.js\": \n[{\"locale\":\"es\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"arpón izquierdo arriba de arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"arpón derecho arriba de arpón izquierdo\"}},\"category\":\"So\"},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha abajo arpón\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha arriba arpón\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"arriba barb izquierda abajo barb derecha arpón\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha arriba arpón\"}}},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha abajo arpón\"}}},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda a barra\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con la barra izquierda a la barra\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba de la barra\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa arriba del bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con barra izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas arriba arriba arpón a la izquierda con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón ascendente con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la derecha con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia abajo con lengüeta a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba arriba arpón a la derecha con púa arriba\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo arriba arpón a la derecha con púa abajo\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la izquierda con púas arriba\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo arriba arpón a la izquierda con púa abajo\"}}},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la izquierda con barra\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la derecha con barra\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón hacia abajo con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia arriba con pica a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"cola de pescado izquierda\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"cola de pescado derecha\"}}},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"barra con doble gancho\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"cola de pez abajo\"}}}]\n,\n\"es/symbols/math_non_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"h barra\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B símbolo de barra\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"signo de número\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"derechos de autor de sonido\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"receta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"respuesta\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"marca de servicio\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"señal de telefono\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versículo\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohmio invertido\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"grados kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Símbolo estimado\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"mayúscula F invertida\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"fuente de información\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"capital rotado Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"signo de fax\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"invertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"convertido en sans serif mayúscula Y\"}}}]\n,\n\"es/symbols/math_symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorial\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"comillas\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"almuhadilla\",\"defaultMP\":\"signo de número\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dólar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"porciento\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prima\",\"defaultMP\":\"apóstrofo\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barra oblicua\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"dos puntos\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"punto y coma\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"menor que\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"igual\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"mayor que\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"interrogación derecho\",\"defaultMP\":\"cierra interrogación\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arroba\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barra inversa\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circunflejo\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"subrayado\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"admiración izquierdo\",\"defaultMP\":\"abre admiración\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centavo\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"libra esterlina\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"moneda\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barra vertical partida\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"sección\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diéresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"ordinal femenino\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares izquierda\",\"defaultMP\":\"abre comillas angulares\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"negación\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"barra\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"grado\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"más menos\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"párrafo\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"punto medio\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"ordinal masculino\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares derecha\",\"defaultMP\":\"cierra comillas angulares\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"interrogación izquierdo\",\"defaultMP\":\"abre interrogación\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"dividido\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"punto en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"anillo en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"doble acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"guión no rompible\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"figura Dash\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"en raya\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"em raya\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barra horizontal\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"línea baja doble\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"comilla izquierda\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"marca de comillas simple con inversión alta-9\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"doble comilla\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"doble comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"doble comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"doble alto-invertido-9 comillas\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"daga\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"doble daga\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"bala triangular\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"líder de un punto\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"dos puntos líder\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"punto de separación\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"tanto por millar\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"tanto por diez mil\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prima\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"tercera\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"doble acento grave\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"prime Prime invertido\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"signo de intercalación\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"comillas izquierda\",\"defaultMP\":\"abre comillas\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"comillas derecha\",\"defaultMP\":\"cierra comillas\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marca de referencia\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"doble signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"barra superior\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"undertie\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"ligadura\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"punto de inserción\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"asterismo\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"guión bala\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barra de fracción\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"doble signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"pregunta Signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de exclamación\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"signo de Pilcrow invertido\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la izquierda\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la derecha\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"bajo asterisco\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"punto y coma invertido\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"cierre superior\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"dos asteriscos alineados verticalmente\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"signo de menos comercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"swung Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"ropa interior invertida\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"signo de puntuación de la flor\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"puntuación de tres puntos\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"cuarta\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"puntuación de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"puntuación de cinco puntos\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"puntuación de dos puntos\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"marca de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"cruz punteada\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"cuatro puntos verticales\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"superscript Plus Sign\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"superíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"superscript Equals Sign\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo superíndice\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho superíndice\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice más\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"subíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice es igual\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"subíndice paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"subíndice de paréntesis derecho\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"línea de propiedad\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"ampersand convertido\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"por signo\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"torneado pequeño f\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"para todo\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complementario\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"no existe\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incremento\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"no perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"no comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"fin de demostración\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"producto\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sumatorio\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"menos más\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"punto más\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"barra de división\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"asterisco\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"raíz\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"raíz cúbica\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"raíz cuarta\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proporcional a\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infinito\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"ángulo recto\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"ángulo medido\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"ángulo esférico\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"divide a\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"no divide a\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"no paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"integral doble\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"integral triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"integral de contorno\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"integral de superficie\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"integral de volumen\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"por lo tanto\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"porque\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"razón\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proporción\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"punto menos\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"exceso\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proporción geométrica\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homotecia\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"tilde invertido\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s horizontal invertida\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoide\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"producto de guirnalda\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"no tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"menos tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"no asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"aproximado pero no igual a\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"aproximado\",\"defaultMP\":\"casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"no es casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"igual o casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"todo igual a\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geométricamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"se acerca al límite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geométricamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a o imagen de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"imagen de o aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"dos puntos igual\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"igual dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"igual incluyendo anillo\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"igual anillo a\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"corresponde a\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estima a\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"equiangular con\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"igual con estrella\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"igual con delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"igual por definición a\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"medido por\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"igual con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"no es igual a\",\"defaultMP\":\"distinto de\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"no es idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"estrictamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"no menor que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"no mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"no menor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"no mayor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"menor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"mayor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"no menor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"no mayor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"no menor ni mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"no mayor ni menor que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"precede a\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"sigue a\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"precede o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"sigue o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"no precede a\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"no sigue a\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"no incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"no contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"incluido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"no incluido ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"no contiene ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"incluido estrictamente en\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"contiene estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"producto de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"unión de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"por en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"anillo en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"asterisco en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"igual en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"más en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"menos en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"veces en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"punto en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"perpendicular invertida\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"afirmación\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modela\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"verdadero\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"triple barra vertical torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"no prueba\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"falso\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"no obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho negada\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"precede respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"sigue respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"imagen de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multifunción\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matriz hermitiana conjugada\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"interpola\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"o excluyente\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"no y\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"no o\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triángulo rectángulo\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"operador diamante\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"estrella\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"dividido por\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"moño\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"factor normal izquierdo producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"factor normal derecho producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto derecho\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"tilde invertida igual a\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"o rizada\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"y rizada\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doble incluido\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doble contiene\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doble intersección\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doble unión\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"bieldo\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"paralela o igual a\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"menor igual o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"mayor igual o menor que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"no precede ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"no sigue ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"no es imagen cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"no es original cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"menor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"mayor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"precede no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"sigue no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"no subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"no es subgrupo normal ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos verticales\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos altos\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales subiendo\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales bajando\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"pertenece con trazo horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra vertical al fin de raya horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"pertenece en pequeño con trazo vertical\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"pertenece con punto arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"pertenece con dos trazos horizontales\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contiene con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"perteneciente con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"z anotación asociación de bolsa\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diámetro\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"casa\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"en proyectividad con\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"en perspectividad con\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"línea ondulada\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"no invertido\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastillas cuadradas\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arco\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segmento\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"sector\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"signo más pesado\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"signo menos pesado\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"signo de la división pesada\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"bucle rizado\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"doble bucle rizado\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"triángulo encerrando triángulo\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"atrás tajo antes de subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sobreconjunto antes de tajo\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barra vertical con golpe horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonal matemático de levantamiento\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"división larga\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente matemática\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico Y\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico O\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"diamante blanco con punto centrado\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"y con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"elemento de apertura hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"izquierdo exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"derecho exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"lleno exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"izquierdo y derecho doble torniquete\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"doble T horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multifunción por la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"t horizontal derecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"t horizontal izquierda larga\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa con círculo arriba\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"pastilla dividida por regla horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo vacío\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"cruce en diagonal Cruce en diagonal Caída en diagonal\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente Cruce diagonal ascendente\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"delimitador de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"punto de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"tipo de notación Z Colon\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"valla punteada\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"zigzag en vertical\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío invertido\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"círculo con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"paralelas en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"círculo inverso solidus\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendicular en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"círculo dividido por barra horizontal y mitad superior dividido por barra vertical\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"x superimpresa en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"bullet vacía en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"bullet en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"menor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"mayor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"círculo con círculo a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal ascendente\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal descendente\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"asterisco cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"pequeño círculo cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"cuadrado cuadrado\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"dos cuadrados unidos\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triángulo con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triángulo con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s en triangulo\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triángulo hacia la derecha sobre triángulo hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o igual a\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Derecha Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"pajarita Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"tiempos con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"tiempos con la mitad derecha negra\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"reloj de arena blanco\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"reloj de arena negro\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infinito incompleto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"empate sobre el infinito\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"no infinito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multimapa de doble extremo\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"cuadrado con contorno contorneado\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"aumenta como\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"shuffle Product\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"igual tachado doble \"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"igual con tilde, con doble tachado\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"idéntico a con doble tachado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"termodinamica\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad izquierda negra\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad derecha negra\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"rombo relleno\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"plaza blanca con error\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"error en la Plaza Negra\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"error White Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"error Black Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con error\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"círculo negro con barras de error\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"operador de Solidus Inverso\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"solidus inverso con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"sólido grande\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"sólido inverso grande\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"doble Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"minúsculo\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"operador de puntos circulares N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"operador N-Ary Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"operador de los tiempos en círculo de N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"operador de la unión N-Ary con punto\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"n-Ary Union Operator con Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"operador de intersecciones cuadradas N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"n-Ary Square Union Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"dos lógico y operador\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"dos lógico u operador\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"operador de N-Ary Times\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"modulo dos sumas\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"suma con Integral\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"operador integral cuádruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"integral con Doble Trazo\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"promedio Integral con Slash\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"integral en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"integral lineal para rectángulo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"integral lineal para semicírculo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"integral lineal excluyendo el polo\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"integral en torno de un punto operador\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"operador integral para cuaterniones\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"integral con Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"integral con Intersección\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"integral con union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"integral con Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"integral con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"unirse\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"operador de triángulo izquierdo grande\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composición de esquemas de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"esquema de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"proyección del esquema de notación Z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"más con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"más con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"tilde con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"más con punto inferior\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"tilde con más\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"más con 2 suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"signo más con triángulo negro\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"menos con coma\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"menos con punto inferior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos que caen\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos crecientes\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"producto vectorial\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"por con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"por con subrayado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto con fondo cerrado\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"por en círculo con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"por en anillo\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"división en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"más en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"menos en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"por en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"producto interior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"producto interior derecho\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"notación Z Composición Relacional\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersección con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"unión con signo de menos\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"unión con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersección con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersección con and\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"unión con or\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"unión sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersección sobre unión\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"unión sobre barra, sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersección sobre barra, sobre unión \"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"unión y unión\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"intersección e intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"unión cerrada\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersección cerrada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada doble\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada doble\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"unión cerrada con por\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"lógico y con punto arriba.\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"lógico o con punto arriba\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical or\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"lógica o superpuesta, lógica y\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"logical and with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"logical or with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"logical and with horizontal dash\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"logical or with horizontal dash\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble Overbar\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"logical and with underbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble barra inferior.\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"pequeño Vee con Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra.\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"notación Z Dominio Antirestricción\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"rango de notación Z Antirestricción\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"igual con punto suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"idéntico con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con triple movimiento vertical\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"tilde con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"operador de tilde con puntos crecientes\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similares menos similares\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruente con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"igual a Asterisco\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"casi igual con ángulo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual o igual a\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"igual con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"igual con más\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"igual con operador tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"igual con dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"igual doble\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"tres signos de igualdad consecutivos\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"igual entre cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"equivalente con cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"menor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"mayor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"menor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"mayor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"menor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"mayor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"menor que una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"mayores y una sola línea no son iguales a\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"menor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"mayor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"menos que arriba de la doble línea igual por encima de mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"más que arriba de la línea doble igual sobre menos que\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"menor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"menor, similar o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"menor, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"mayor, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor o menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o mayor que\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"mayor o igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o mayor que\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"equivalente o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"mayor o similar a\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similar, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similar, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"doble anidada menor que con barra inferior\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"menor que, mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"más reducido que\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"más amplio que\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"más reducido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"más amplio o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"sucede por encima de la línea de igual signo\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"precede por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"precede arriba del signo igual\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"sucede por encima del signo igual\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precede estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"sigue estrictamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"precede por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"precede arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de no casi igual a\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"precede mucho antes\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"sigue mucho después\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"subrelación de\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"contiene como subrelación a\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"incluido con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"contiene con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"incluido con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"contiene con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"incluido con punto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"contiene con punto o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"subconjunto de signo igual arriba\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"superconjunto de signo igual arriba\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"incluido aproximadamente en\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"contiene aproximadamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"subconjunto de Arriba Casi Igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"subconjunto de lo anterior no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la izquierda cuadrada\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la derecha cuadrada\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"incluido con cierre en\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"incluido el cierre o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"está incluido o contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"incluido doblemente en\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"contiene doblemente a\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"perteneciente dirigido hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcación\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"tachuela Izquierda Corta\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"tachuela corta hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendicular con s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"barra vertical Torniquete a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"barra vertical doble Torniquete izquierdo\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete izquierdo\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"barra con perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"tachuela doble\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"barra vertical con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"barra con círculo inferior\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"paralela con marca\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"paralela con tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relación binaria de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"barra vertical triple con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"operador Triple Colon\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"triple anidada menos que\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"triple anidado mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada menor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada mayor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relación Binaria Triple Sólida\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"operador de barra vertical triple grande\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"operador Doble Sólido\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca N-Ary\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para colon vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para punto y coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de exclamación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de interrogación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para elipsis horizontal vertical\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para líder vertical de dos puntos\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea vertical baja\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea baja ondulada vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo blanco\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"línea discontinua\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"centinela Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"ondulado Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"doble Ondulado Ondulado\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"línea baja discontinua\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"línea baja de línea central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"línea baja ondulada\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"comas pequeñas\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"parada completa pequeña\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"pequeño punto y coma\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"pequeño colon\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de exclamación\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"pequeño Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"signo de número pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"ampersand pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"pequeño asterisco\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"signo más pequeño\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"pequeño guión-menos\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"signo menor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"signo mayor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"signo pequeño igual\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"división entera\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de dólar\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"pequeño comercial en\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"signo de exclamación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"comillas de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"número de signo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"signo de dólar de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"ampersand de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apóstrofe de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"asterisco de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"coma de ancho completo\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"ancho de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"fullwidth Full Stop\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"sólido de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"ancho completo de colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"punto y coma de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"ancho completo menos de la señal\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"signo de igual ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"ancho completo mayor que el signo\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"comercial de ancho completo en\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"sólido inverso de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"acento circunflejo de ancho completo\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"línea baja de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"acento grave de ancho completo\"}}},{\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"signo de centavo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"signo de libra de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"fullwidth no firmar\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"ancho completo macron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"barra rota de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"signo de yen de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo ganado\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"formas de ancho medio luz vertical\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"medio ancho cuadrado negro\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"círculo blanco de medio ancho\"}}}]\n,\n\"es/symbols/math_whitespace.js\": \n[{\"locale\":\"es\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espacio\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"guión corto\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"en quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"em Quad\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"espacio Six-Per-Em\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"ancho de cero no ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"ancho de cero ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marca de izquierda a derecha\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marca de derecha a izquierda\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"separador de linea\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"separador de párrafo\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"incrustación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"incrustación de derecha a izquierda\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"formato direccional pop\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"anulación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"anulación de derecha a izquierda\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espacio estrecho sin descanso\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Cf\"},{\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibir el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activar el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nacionales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nominales\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancla de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"separador de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminador de anotación interlinear\"}}}]\n,\n\"es/symbols/other_stars.js\": \n[{\"locale\":\"es\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"símbolo exponente decimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"estrella rellena\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"estrella vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"círculo blanco medio\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"círculo negro medio\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada blanca\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"multiplicación x\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"multiplicación pesada X\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"boleta pesada X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"centro abierto de la cruz\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"pesado centro abierto cruz\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"cruz de Malta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"estrella de David\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de lágrima\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"pesado Cuatro asterisco impulsado por globo\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de club-spoked\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"estrella de cuatro puntas negra\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"estrella blanca de cuatro puntas\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"destellos\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"estrés subrayado estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"estrella blanca circulada\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"centro Abierto Estrella Negra\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"centro negro estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"contorneado negro estrella\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"estrella negra contorneada pesada\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"pinwheel Star\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"estrella blanca sombreada\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"centro abierto de asterisco\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco hablado\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas de molinete en punta\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"estrella rellena de seis puntas\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"doce estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"dieciséis asteriscos en punta\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"asterisco con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"centro abierto con asterisco con forma de lágrima\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"seis pétalos de florette en blanco y negro\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"florette negro\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"florette blanco\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"ocho Petalled Outlined Black Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"círculo abierto centro ocho estrellas señaladas\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado del molinillo de viento\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"copo de nieve\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"copo de nieve trifolio apretado\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"copo de nieve pesado de Chevron\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"brillar\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"chispa pesada\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco de hélice con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"heavy eight asterisk de hélice en forma de lágrima\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"marca de la cruz\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"círculo blanco sombreado\"}}}]\n,\n\"es/units/energy.js\": \n[{\"locale\":\"es\"},{\"key\":\"W\",\"names\":[\"W\",\"w\"],\"mappings\":{\"default\":{\"default\":\"watt\"}},\"category\":\"energy\"},{\"key\":\"kW\",\"names\":[\"kw\",\"kW\"],\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"category\":\"energy\"},{\"key\":\"mW\",\"names\":[\"mw\",\"mW\"],\"mappings\":{\"default\":{\"default\":\"miliwatt\"}},\"category\":\"energy\"},{\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"],\"mappings\":{\"default\":{\"default\":\"kilowatt hora\"}},\"category\":\"energy\"},{\"key\":\"J\",\"names\":[\"J\"],\"mappings\":{\"default\":{\"default\":\"Joule\"}},\"category\":\"energy\"},{\"key\":\"N\",\"names\":[\"N\"],\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\"},{\"key\":\"A\",\"names\":[\"A\"],\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\"},{\"key\":\"V\",\"names\":[\"V\"],\"mappings\":{\"default\":{\"default\":\"Voltio\"}},\"category\":\"energy\"},{\"key\":\"µΩ\",\"names\":[\"µΩ\"],\"mappings\":{\"default\":{\"default\":\"microohmio\"}},\"category\":\"energy\"},{\"key\":\"mΩ\",\"names\":[\"mΩ\"],\"mappings\":{\"default\":{\"default\":\"miliohmio\"}},\"category\":\"energy\"},{\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"],\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"energy\"},{\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"],\"mappings\":{\"default\":{\"default\":\"kiloohmio\"}},\"category\":\"energy\"},{\"key\":\"MΩ\",\"names\":[\"MΩ\"],\"mappings\":{\"default\":{\"default\":\"megaohmio\"}},\"category\":\"energy\"},{\"key\":\"GΩ\",\"names\":[\"GΩ\"],\"mappings\":{\"default\":{\"default\":\"gigaohmio\"}},\"category\":\"energy\"}]\n,\n\"es/units/length.js\": \n[{\"locale\":\"es\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"milímetro\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"centímetro\"}},\"category\":\"length\"},{\"key\":\"m\",\"names\":[\"m\"],\"mappings\":{\"default\":{\"default\":\"metro\"}},\"category\":\"length\"},{\"key\":\"km\",\"names\":[\"km\"],\"mappings\":{\"default\":{\"default\":\"kilómetro\"}},\"category\":\"length\"},{\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"],\"mappings\":{\"default\":{\"default\":\"pies\"}},\"category\":\"length\"},{\"key\":\"in\",\"names\":[\"in\",\"in.\"],\"mappings\":{\"default\":{\"default\":\"pulgada\"}},\"category\":\"length\"},{\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"],\"mappings\":{\"default\":{\"default\":\"milla\"}},\"category\":\"length\"},{\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"],\"mappings\":{\"default\":{\"default\":\"yarda\"}},\"category\":\"length\"},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"millas náuticas\"}},\"category\":\"length\"}]\n,\n\"es/units/memory.js\": \n[{\"locale\":\"es\"},{\"key\":\"b\",\"names\":[\"b\"],\"mappings\":{\"default\":{\"default\":\"bit\"}},\"category\":\"memory\"},{\"key\":\"B\",\"names\":[\"B\"],\"mappings\":{\"default\":{\"default\":\"byte\"}},\"category\":\"memory\"},{\"key\":\"KB\",\"names\":[\"KB\"],\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"category\":\"memory\"},{\"key\":\"MB\",\"names\":[\"MB\"],\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"category\":\"memory\"},{\"key\":\"GB\",\"names\":[\"GB\"],\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"category\":\"memory\"},{\"key\":\"TB\",\"names\":[\"TB\"],\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"category\":\"memory\"}]\n,\n\"es/units/other.js\": \n[{\"locale\":\"es\"},{\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"],\"mappings\":{\"default\":{\"default\":\"docena\"}},\"category\":\"other\"},{\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"],\"mappings\":{\"default\":{\"default\":\"al cuadrado\"}},\"category\":\"other\"},{\"key\":\"ha\",\"names\":[\"ha\"],\"mappings\":{\"default\":{\"default\":\"hectarea\"}},\"category\":\"other\"}]\n,\n\"es/units/speed.js\": \n[{\"locale\":\"es\"},{\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"],\"mappings\":{\"default\":{\"default\":\"nudo\"}},\"category\":\"speed\"},{\"key\":\"mph\",\"names\":[\"mph\"],\"mappings\":{\"default\":{\"default\":\"millas por hora\"}},\"category\":\"speed\"},{\"key\":\"rpm\",\"names\":[\"rpm\"],\"mappings\":{\"default\":{\"default\":\"revoluciones por minuto\"}},\"category\":\"speed\"},{\"key\":\"kmh\",\"names\":[\"kmh\"],\"mappings\":{\"default\":{\"default\":\"kilómetros por hora\"}},\"category\":\"speed\"}]\n,\n\"es/units/temperature.js\": \n[{\"locale\":\"es\"},{\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"],\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"category\":\"temperature\"},{\"key\":\"C\",\"names\":[\"C\",\"°C\"],\"mappings\":{\"default\":{\"default\":\"centígrados\"}},\"category\":\"temperature\"},{\"key\":\"K\",\"names\":[\"K\",\"°K\"],\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\"}]\n,\n\"es/units/time.js\": \n[{\"locale\":\"es\"},{\"key\":\"ns\",\"names\":[\"ns\"],\"mappings\":{\"default\":{\"default\":\"nanosegundos\"}},\"category\":\"time\"},{\"key\":\"µs\",\"names\":[\"µs\"],\"mappings\":{\"default\":{\"default\":\"microsegundos\"}},\"category\":\"time\"},{\"key\":\"ms\",\"names\":[\"ms\"],\"mappings\":{\"default\":{\"default\":\"milisegundos\"}},\"category\":\"time\"},{\"key\":\"s\",\"names\":[\"s\"],\"mappings\":{\"default\":{\"default\":\"segundos\"}},\"category\":\"time\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minutos\"}},\"category\":\"time\"},{\"key\":\"h\",\"names\":[\"h\",\"hr\"],\"mappings\":{\"default\":{\"default\":\"hora\"}},\"category\":\"time\"}]\n,\n\"es/units/volume.js\": \n[{\"locale\":\"es\"},{\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"],\"mappings\":{\"default\":{\"default\":\"barrile\"}},\"category\":\"volume\"},{\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"],\"mappings\":{\"default\":{\"default\":\"cúbico\"}},\"category\":\"volume\"},{\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"],\"mappings\":{\"default\":{\"default\":\"onzas líquidas\"}},\"category\":\"volume\"},{\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"],\"mappings\":{\"default\":{\"default\":\"galone\"}},\"category\":\"volume\"},{\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"],\"mappings\":{\"default\":{\"default\":\"pinta\"}},\"category\":\"volume\"},{\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"],\"mappings\":{\"default\":{\"default\":\"quart\"}},\"category\":\"volume\"},{\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"],\"mappings\":{\"default\":{\"default\":\"cuchara\"}},\"category\":\"volume\"},{\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"],\"mappings\":{\"default\":{\"default\":\"cucharilla\"}},\"category\":\"volume\"},{\"key\":\"cc\",\"names\":[\"cc\"],\"mappings\":{\"default\":{\"default\":\"centímetros cúbicos\"}},\"category\":\"volume\"},{\"key\":\"kl\",\"names\":[\"kl\"],\"mappings\":{\"default\":{\"default\":\"kilolitro\"}},\"category\":\"volume\"},{\"key\":\"l\",\"names\":[\"l\"],\"mappings\":{\"default\":{\"default\":\"litro\"}},\"category\":\"volume\"},{\"key\":\"ml\",\"names\":[\"ml\"],\"mappings\":{\"default\":{\"default\":\"mililitro\"}},\"category\":\"volume\"}]\n,\n\"es/units/weight.js\": \n[{\"locale\":\"es\"},{\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"],\"mappings\":{\"default\":{\"default\":\"libra\"}},\"category\":\"weight\"},{\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"],\"mappings\":{\"default\":{\"default\":\"libras imperiales\"}},\"category\":\"weight\"},{\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"],\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"weight\"},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"microgramo\"}},\"category\":\"weight\"},{\"key\":\"gr\",\"names\":[\"g\",\"gr\"],\"mappings\":{\"default\":{\"default\":\"gramo\"}},\"category\":\"weight\"},{\"key\":\"kg\",\"names\":[\"kg\"],\"mappings\":{\"default\":{\"default\":\"kilogramo\"}},\"category\":\"weight\"},{\"key\":\"mg\",\"names\":[\"mg\"],\"mappings\":{\"default\":{\"default\":\"miligramo\"}},\"category\":\"weight\"},{\"key\":\"t\",\"names\":[\"t\",\"T\"],\"mappings\":{\"default\":{\"default\":\"tonelada\"}},\"category\":\"weight\"}]\n,\n\"nemeth/functions/algebra.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠛\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠞\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠊⠍\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠓⠕⠍\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠅⠑⠗\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠠⠞⠗\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"nemeth/functions/elementary.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠕⠏⠀\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠝⠀\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠛\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠑⠭⠏\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠛⠉⠙\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠇⠉⠍\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠛⠀\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠊⠍\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠗⠑\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠋⠀\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠊⠝⠀⠋\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠎⠥⠏\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠁⠭⠀\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠎⠥⠏\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠚⠇⠊⠍\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠏⠗⠕⠚⠇⠊⠍\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠍⠕⠙\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"⠠⠏⠗\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"nemeth/functions/hyperbolic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠓⠀\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠓⠀\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠓⠀\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠓⠀\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠓⠀\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠕⠓⠀\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠎⠓\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠞⠓\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠉⠓\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠑⠉⠓⠀\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠊⠝⠓⠀\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠞⠁⠕⠓⠀\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"nemeth/functions/trigonometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠀\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠀\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠀\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠀\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠀\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠝⠀\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠉⠕⠎⠀\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠕⠞⠀\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠎⠉⠀\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠑⠉⠀\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠊⠝⠀\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠞⠁⠝⠀\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"nemeth/symbols/digits_rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠲⠼\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠆⠼\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠲⠼\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠶⠼\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠔⠼\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠂⠴⠼\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠒⠼\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠒⠼\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠢⠼\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠢⠼\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠢⠼\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠲⠌⠢⠼\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠖⠼\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠖⠼\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠦⠼\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠦⠼\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠦⠼\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠶⠌⠦⠼\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠼\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠴⠌⠒⠼\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠂⠴⠻⠻\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠆⠴⠻⠻\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠒⠴⠻⠻\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠲⠴⠻⠻\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠢⠴⠻⠻\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠖⠴⠻⠻\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠶⠴⠻⠻\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠦⠴⠻⠻\"}},\"key\":\"324F\"}]\n,\n\"nemeth/symbols/greek-rest.js\": \n[{\"locale\":\"nemeth\"}]\n,\n\"nemeth/symbols/greek-scripts.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠢⠑⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠁⠄\"}}}]\n,\n\"nemeth/symbols/greek-symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠴⠄\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠶⠄\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠋⠖⠄\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠁⠄\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠃⠄\"}},\"key\":\"1D7CB\"}]\n,\n\"nemeth/symbols/hebrew_letters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠢⠄\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠖⠄\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠶⠄\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠦⠄\"}},\"key\":\"2138\"}]\n,\n\"nemeth/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠂⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠃⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"⠈⠝\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠔⠄\"}}}]\n,\n\"nemeth/symbols/latin-rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠉⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠋⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠴⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠂⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠆⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠢⠄\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠃⠄\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠉⠄\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠉⠶⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠁⠄\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠃⠄\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠦⠁⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠴⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠉\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠝\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠽\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠂⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠦⠄\"}}}]\n,\n\"nemeth/symbols/math_angles.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠑⠄\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠶⠉⠄\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠴⠄\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠃⠄\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠉⠄\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠙⠄\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠑⠄\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠋⠄\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠴⠄\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠂⠄\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠆⠄\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠒⠄\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠲⠄\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠢⠄\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠖⠄\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠶⠄\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠦⠄\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠔⠄\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠁⠄\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠃⠄\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠉⠄\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠙⠄\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠑⠄\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠋⠄\"}},\"key\":\"29AF\"}]\n,\n\"nemeth/symbols/math_arrows.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠀\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠀\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠕⠀\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠀\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠕⠀\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠩⠪⠒⠒⠕⠀\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠒⠒⠀\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠀\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠀\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠒⠒⠀\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠀\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠔⠒⠢⠕⠀\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠕⠀\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠽⠀\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠯⠒⠒⠕⠀\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠳⠀\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠳⠒⠒⠕⠀\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠕⠀\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠳⠒⠒⠕⠀\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠳⠒⠕⠀\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠕⠀\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠕⠀\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠨⠡⠀\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠨⠡⠒⠒⠕⠀\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠕⠀\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠔⠢⠔⠀\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠴⠄\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠂⠄\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠆⠄\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠒⠄\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠀⠕⠀\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠀⠔⠀\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠦⠄\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠔⠄\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠕⠀\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠔⠀\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠪⠒⠒⠀\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠫⠒⠒⠕⠀\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠚⠒⠒⠫⠚⠒⠒⠀\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠪⠒⠒⠀\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠕⠀\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠕⠀\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠪⠒⠒⠀\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠪⠒⠒⠀\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠕⠀\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠤⠔⠒⠢⠀\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠤⠔⠒⠢⠕⠀\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠣⠒⠒⠕⠻⠀\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠩⠒⠒⠕⠻⠀\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠀⠒⠀\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠀⠒⠕⠀\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠀⠒⠕⠀\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠀⠒⠕⠀\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠪⠒⠒⠀\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠳⠀\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠪⠒⠒⠀\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠒⠒⠕⠀\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠒⠒⠕⠀\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠸⠒⠒⠕⠀\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠁⠄\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠃⠄\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠉⠄\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠙⠄\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠑⠄\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠋⠄\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠴⠄\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠂⠄\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠆⠄\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠪⠒⠒⠕⠀\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠨⠡⠀\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠀\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠳⠀\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠳⠀\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠂⠄\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠒⠄\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠲⠄\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠲⠄\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠦⠃⠄\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠲⠄\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠦⠄\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠔⠄\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠁⠄\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠃⠄\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠉⠄\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠙⠄\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠑⠄\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠋⠄\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠴⠄\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠂⠄\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠆⠄\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠒⠄\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠲⠄\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠢⠄\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠖⠄\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠶⠄\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠦⠄\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠔⠄\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠁⠄\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠃⠄\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠉⠄\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠙⠄\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠑⠄\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠋⠄\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠂⠄\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠆⠄\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠒⠄\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠲⠄\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠢⠄\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠖⠄\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠶⠄\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠦⠄\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠔⠄\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠁⠄\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠃⠄\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠉⠄\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠙⠄\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠑⠄\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠴⠄\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠂⠄\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠆⠄\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠒⠄\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠲⠄\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠢⠄\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠖⠄\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠶⠄\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠦⠄\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠔⠄\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠁⠄\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠃⠄\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠉⠄\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠙⠄\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠑⠄\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠋⠄\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠴⠄\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠂⠄\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠆⠄\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠒⠄\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠲⠄\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠢⠄\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠖⠄\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠶⠄\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠦⠄\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠔⠄\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠁⠄\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠃⠄\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠉⠄\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠙⠄\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠑⠄\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠋⠄\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠴⠄\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠂⠄\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠆⠄\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠒⠄\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠲⠄\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠢⠄\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠖⠄\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠶⠄\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠦⠄\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠔⠄\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠁⠄\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠃⠄\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠉⠄\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠙⠄\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠑⠄\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠋⠄\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠴⠄\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠂⠄\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠆⠄\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠒⠄\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠲⠄\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠢⠄\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠖⠄\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠶⠄\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠦⠄\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠔⠄\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠁⠄\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠙⠄\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠑⠄\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠋⠄\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠴⠄\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠂⠄\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠆⠄\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠒⠄\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠲⠄\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠢⠄\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠖⠄\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠶⠄\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠦⠄\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠔⠄\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠁⠄\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠃⠄\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠉⠄\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠙⠄\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠑⠄\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠋⠄\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠴⠄\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠂⠄\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠆⠄\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠒⠄\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠲⠄\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠢⠄\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠖⠄\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠶⠄\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠦⠄\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠔⠄\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠴⠄\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠂⠄\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠆⠄\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠒⠄\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠲⠄\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠢⠄\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠖⠄\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠶⠄\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠦⠄\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠔⠄\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠁⠄\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠃⠄\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠒⠄\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠲⠄\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠙⠄\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠁⠄\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠉⠄\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠙⠄\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠶⠄\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠴⠄\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠂⠄\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠆⠄\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠒⠄\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠲⠄\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠢⠄\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠖⠄\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠶⠄\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠦⠄\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠔⠄\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠁⠄\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠃⠄\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠉⠄\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠙⠄\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠑⠄\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠋⠄\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠴⠄\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠂⠄\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠴⠄\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠂⠄\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠆⠄\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠒⠄\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠲⠄\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠢⠄\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠖⠄\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠶⠄\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠦⠄\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠔⠄\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠁⠄\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠃⠄\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠉⠄\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠙⠄\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠑⠄\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠋⠄\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠴⠄\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠂⠄\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠆⠄\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠒⠄\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠲⠄\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠢⠄\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠖⠄\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠶⠄\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠦⠄\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠔⠄\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠁⠄\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠃⠄\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠉⠄\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠔⠄\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠁⠄\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠃⠄\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠉⠄\"}},\"key\":\"FFEC\"}]\n,\n\"nemeth/symbols/math_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠈⠇\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠦⠄\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠉⠄\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠙⠄\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠑⠄\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠋⠄\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠴⠄\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠢⠄\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠙\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠑\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠦⠄\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠔⠄\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠲⠄\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠢⠄\"}},\"key\":\"1D6A5\"}]\n,\n\"nemeth/symbols/math_delimiters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠷\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠾\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠷\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠾\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠷\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠾\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠢⠄\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠖⠄\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠉⠄\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠙⠄\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠑⠄\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠋⠄\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠴⠄\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠂⠄\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠃⠄\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠉⠄\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠙⠄\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠑⠄\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠋⠄\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠴⠄\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠂⠄\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠆⠄\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠒⠄\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠲⠄\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠢⠄\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠖⠄\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠶⠄\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠦⠄\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠔⠄\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠁⠄\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠃⠄\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠉⠄\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠙⠄\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠑⠄\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠋⠄\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠴⠄\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠂⠄\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠆⠄\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠒⠄\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠲⠄\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠢⠄\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠖⠄\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠶⠄\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠦⠄\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠔⠄\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠉⠄\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠙⠄\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠷\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠾\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠴⠄\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠂⠄\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠦⠄\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠔⠄\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠁⠄\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠃⠄\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠉⠄\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠙⠄\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠑⠄\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠋⠄\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠴⠄\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠂⠄\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠆⠄\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠒⠄\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠲⠄\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠢⠄\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠢⠄\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠖⠄\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠷\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠾\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠉⠄\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠙⠄\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠑⠄\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠋⠄\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠷\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠾\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠢⠄\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠖⠄\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠶⠄\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠦⠄\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠔⠄\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠁⠄\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠃⠄\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠉⠄\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠙⠄\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠑⠄\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠋⠄\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠴⠄\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠂⠄\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠆⠄\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠒⠄\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠲⠄\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠢⠄\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠖⠄\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠶⠄\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠦⠄\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠦⠄\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠔⠄\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠁⠄\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠃⠄\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠉⠄\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠙⠄\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠆⠄\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠒⠄\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠲⠄\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠢⠄\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠖⠄\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠶⠄\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠦⠄\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠔⠄\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠑⠄\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠋⠄\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠴⠄\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠂⠄\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠲⠄\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠢⠄\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠖⠄\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠶⠄\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠦⠄\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠔⠄\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠁⠄\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠃⠄\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠙⠄\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠑⠄\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠋⠄\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠑⠄\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠋⠄\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠶⠄\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠦⠄\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠢⠄\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠖⠄\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠶⠄\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠦⠄\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠔⠄\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠁⠄\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠃⠄\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠉⠄\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠙⠄\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠑⠄\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠋⠄\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠴⠄\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠂⠄\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠆⠄\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠒⠄\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠲⠄\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠶⠄\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠦⠄\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠔⠄\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠁⠄\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠃⠄\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠉⠄\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠙⠄\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠑⠄\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠦⠄\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠔⠄\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠃⠄\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠙⠄\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠃⠄\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠙⠄\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠋⠄\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠴⠄\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠆⠄\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠒⠄\"}},\"key\":\"FF63\"}]\n,\n\"nemeth/symbols/math_geometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠴⠄\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠂⠄\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠆⠄\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠒⠄\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠲⠄\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠢⠄\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠖⠄\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠶⠄\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠦⠄\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠔⠄\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠁⠄\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠃⠄\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠉⠄\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠙⠄\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠑⠄\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠋⠄\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠴⠄\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠂⠄\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠆⠄\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠒⠄\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠲⠄\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠢⠄\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠖⠄\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠶⠄\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠦⠄\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠔⠄\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠁⠄\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠃⠄\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠉⠄\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠙⠄\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠑⠄\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠋⠄\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠴⠄\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠂⠄\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠆⠄\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠒⠄\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠲⠄\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠢⠄\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠖⠄\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠶⠄\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠦⠄\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠔⠄\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠁⠄\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠃⠄\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠉⠄\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠙⠄\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠑⠄\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠋⠄\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠴⠄\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠂⠄\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠆⠄\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠒⠄\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠲⠄\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠢⠄\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠖⠄\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠶⠄\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠦⠄\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠔⠄\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠁⠄\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠃⠄\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠉⠄\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠙⠄\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠑⠄\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠋⠄\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠴⠄\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠂⠄\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠆⠄\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠒⠄\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠲⠄\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠢⠄\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠖⠄\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠶⠄\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠦⠄\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠔⠄\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠁⠄\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠃⠄\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠉⠄\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠙⠄\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠑⠄\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠋⠄\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠴⠄\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠂⠄\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠆⠄\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠒⠄\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠲⠄\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠢⠄\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠖⠄\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠶⠄\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠦⠄\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠔⠄\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠁⠄\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠃⠄\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠉⠄\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠙⠄\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠑⠄\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠋⠄\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠴⠄\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠂⠄\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠆⠄\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠒⠄\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠲⠄\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠢⠄\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠖⠄\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠶⠄\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠦⠄\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠔⠄\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠁⠄\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠃⠄\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠉⠄\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠙⠄\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠑⠄\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠋⠄\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠴⠄\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠂⠄\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠆⠄\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠒⠄\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠲⠄\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠢⠄\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠖⠄\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠶⠄\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠦⠄\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠔⠄\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠁⠄\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠃⠄\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠉⠄\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠙⠄\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠑⠄\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠋⠄\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠴⠄\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠂⠄\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠆⠄\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠒⠄\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠲⠄\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠢⠄\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠖⠄\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠶⠄\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠦⠄\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠔⠄\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠁⠄\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠃⠄\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠉⠄\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠙⠄\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠑⠄\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠋⠄\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠴⠄\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠂⠄\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠆⠄\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠒⠄\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠲⠄\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠢⠄\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠖⠄\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠶⠄\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠦⠄\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠔⠄\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠁⠄\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠃⠄\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠉⠄\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠙⠄\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠑⠄\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠋⠄\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠲\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠆⠄\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠒⠄\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠲⠄\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠢⠄\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠖⠄\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠶⠄\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠦⠄\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠔⠄\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠁⠄\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠗\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠗\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠙⠄\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠑⠄\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠋⠄\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠛\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠛\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠞\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠞\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠲⠄\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠢⠄\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠖⠄\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠶⠄\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠦⠄\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠔⠄\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠁⠄\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠃⠄\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠨⠫\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠨⠫\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠑⠄\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠋⠄\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠴⠄\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠂⠄\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠆⠄\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠒⠄\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠲⠄\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠢⠄\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠖⠄\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠶⠄\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠦⠄\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠔⠄\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠉\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠉\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠉⠄\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠙⠄\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠑⠄\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠋⠄\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠴⠄\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠂⠄\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠆⠄\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠒⠄\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠲⠄\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠢⠄\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠖⠄\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠶⠄\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠦⠄\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠔⠄\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠁⠄\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠃⠄\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠉⠄\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠙⠄\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠑⠄\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠋⠄\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠴⠄\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠂⠄\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠆⠄\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠒⠄\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠲⠄\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠢⠄\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠖⠄\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠶⠄\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠦⠄\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠔⠄\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠁⠄\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠃⠄\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠉⠄\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠙⠄\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠑⠄\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠋⠄\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠴⠄\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠂⠄\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠆⠄\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠒⠄\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠲⠄\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠢⠄\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠖⠄\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠶⠄\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠦⠄\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠔⠄\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠁⠄\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠃⠄\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠉⠄\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠙⠄\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠑⠄\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠋⠄\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠆⠄\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠒⠄\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠲⠄\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠢⠄\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠖⠄\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠶⠄\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠦⠄\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠔⠄\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠁⠄\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠃⠄\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠉⠄\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠙⠄\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠑⠄\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠋⠄\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠴⠄\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠂⠄\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠆⠄\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠒⠄\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠲⠄\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠢⠄\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠖⠄\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠶⠄\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠦⠄\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠔⠄\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠁⠄\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠃⠄\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠉⠄\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠙⠄\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠑⠄\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠋⠄\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠴⠄\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠂⠄\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠆⠄\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠒⠄\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠲⠄\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠢⠄\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠖⠄\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠶⠄\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠦⠄\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠔⠄\"}},\"key\":\"2B59\"}]\n,\n\"nemeth/symbols/math_harpoons.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠀\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠠⠕⠀\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠈⠕⠀\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠠⠕⠀\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠈⠕⠀\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠠⠕⠀\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠁⠄\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠃⠄\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠉⠄\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠙⠄\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠑⠄\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠋⠄\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠴⠄\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠂⠄\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠆⠄\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠒⠄\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠲⠄\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠢⠄\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠖⠄\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠶⠄\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠦⠄\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠔⠄\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠁⠄\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠃⠄\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠉⠄\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠙⠄\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠑⠄\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠋⠄\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠴⠄\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠂⠄\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠆⠄\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠒⠄\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠲⠄\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠢⠄\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠖⠄\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠶⠄\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠦⠄\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠔⠄\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠁⠄\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠃⠄\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠉⠄\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠙⠄\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠑⠄\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠋⠄\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠉⠄\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠙⠄\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠑⠄\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠋⠄\"}},\"key\":\"297F\"}]\n,\n\"nemeth/symbols/math_non_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠴⠋⠄\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠖⠄\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠶⠄\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠑⠄\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠋⠄\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠴⠄\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠂⠄\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠞\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠒⠄\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠢⠄\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠖⠄\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠶⠄\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠁⠄\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠠⠁\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠑⠄\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠆⠄\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠔⠄\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠁⠄\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠃⠄\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠂⠄\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠆⠄\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠒⠄\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠲⠄\"}},\"key\":\"2144\"}]\n,\n\"nemeth/symbols/math_symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨⠼\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠎\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠴\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠯\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠠\",\"defaultLibLouis\":\"⠠⠀\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨\",\"other\":\"⠲\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠒\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠆\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠀\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠅⠀\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠀\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠦\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⡘\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠸\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠼\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠫\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠢⠄\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠳\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠠⠎\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠦⠄\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠉\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠁⠄\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠃⠄\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠉⠄\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠗\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬⠤\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠨⠍\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠖⠄\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠦⠄\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠁⠄\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠃⠄\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠌\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠦⠄\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠔⠄\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠁⠄\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠃⠄\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠙⠄\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠳⠳\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠶⠄\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠠⠦\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠁⠄\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠃⠄\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠴\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠑⠄\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠋⠄\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠻\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠸⠻\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠔⠔\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠒⠄\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠶⠄\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠴⠄\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠂⠄\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠢⠄\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠖⠄\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠶⠄\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠦⠄\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠔⠄\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠁⠄\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠃⠄\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠖\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠙⠄\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠋⠄\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠴⠄\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠂⠄\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠆⠄\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠒⠄\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠲⠄\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠹\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠖\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠹\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠃⠄\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠉⠄\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠙⠄\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠑⠄\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠋⠄\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠴⠄\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠂⠄\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠆⠄\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠒⠄\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠲⠄\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠢⠄\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠖⠄\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠶⠄\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠦⠄\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠔⠄\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠁⠄\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠃⠄\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠉⠄\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠙⠄\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠑⠄\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠁⠄\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠃⠄\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠉⠄\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠙⠄\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠑⠄\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠁⠄\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠃⠄\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠉⠄\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠙⠄\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠑⠄\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠁⠄\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠃⠄\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠉⠄\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠙⠄\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠑⠄\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠯\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠂⠄\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠿\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠈⠿\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠴\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠖⠄\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠑⠀\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠁⠀\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠁⠀\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠢⠀\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠳⠀\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠋⠄\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠴⠄\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠎\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤⠬\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠲⠄\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠔⠄\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠁⠄\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠃⠄\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠉⠄\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠰⠆⠀\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠠⠿\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠨⠗⠻\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠳\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠇⠀\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠫⠇⠀\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮⠮\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠉⠻\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠆⠋⠄\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠴⠄\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠂⠄\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠪⠢⠔⠻\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠢⠔⠕⠻\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠠⠡⠀\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠌⠀\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠂⠀\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠶⠄\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠦⠄\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠔⠄\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠁⠄\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠃⠄\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠙⠄\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠑⠄\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠋⠄\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠴⠄\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠂⠄\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠆⠄\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠒⠄\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠲⠄\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠱⠈⠱⠀\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠖⠄\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠶⠄\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠦⠄\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠔⠄\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠁⠄\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠃⠄\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠉⠄\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠣⠠⠣⠀\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠑⠄\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠋⠄\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠴⠄\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠂⠄\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠆⠄\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠒⠄\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠲⠄\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠢⠄\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠖⠄\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠶⠄\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠦⠄\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠔⠄\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠁⠄\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠃⠄\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠉⠄\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠙⠄\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠑⠄\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠋⠄\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠅⠀\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠇⠀\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠇⠀\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠒⠄\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠱⠀\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠅⠀\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠨⠅⠀\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠌⠨⠅⠀\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠐⠅⠻⠀\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠨⠂⠻⠀\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠉⠄\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠣⠠⠣⠀\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠀\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠀\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠱⠀\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠱⠀\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠱⠀\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠈⠱⠀\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠈⠱⠀\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠂⠀\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠐⠅⠀\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠨⠂⠀\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠐⠅⠀\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠀\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠀\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠀\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠀\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠀\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠀\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠐⠅⠀\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠂⠀\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠀⠅⠱\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠀⠅⠱⠀\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠌⠨⠅⠀\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠌⠨⠅⠀\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠉⠄\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠙⠄\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠑⠄\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠋⠄\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠴⠄\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠂⠄\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠆⠄\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠒⠄\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠲⠄\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠻\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠌⠻\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠘⠨⠡⠻\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠼⠻\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠅⠻\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠤⠻\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠬⠻\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠤⠻\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠈⠡⠻\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠡⠻\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠆⠄\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠒⠄\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠲⠄\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠏⠀\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠖⠄\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠶⠄\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠦⠄\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠔⠄\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠁⠄\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠃⠄\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠉⠄\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠙⠄\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠑⠄\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠋⠄\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠴⠄\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠂⠄\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠆⠄\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠒⠄\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠲⠄\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠢⠄\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠖⠄\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠶⠄\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠦⠄\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠔⠄\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠁⠄\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠃⠄\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠉⠄\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠙⠄\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠋⠄\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠲⠄\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠖⠄\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠶⠄\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠦⠄\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠔⠄\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠁⠄\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠃⠄\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠉⠄\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠙⠄\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠑⠄\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠋⠄\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠴⠄\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠂⠄\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠆⠄\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠒⠄\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠲⠄\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠢⠄\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠖⠄\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠶⠄\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠦⠄\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠔⠄\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠁⠄\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠃⠄\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠐⠅⠀\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠨⠂⠀\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠑⠄\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠋⠄\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠴⠄\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠂⠄\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠆⠄\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠒⠄\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠲⠄\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠢⠄\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠖⠄\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠶⠄\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠦⠄\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠔⠄\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠁⠄\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠃⠄\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠉⠄\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠙⠄\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠄⠄⠄\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠄⠄⠄\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠰⠄⠄⠄\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠆⠄\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠒⠄\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠲⠄\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠢⠄\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠖⠄\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠶⠄\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠦⠄\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠔⠄\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠁⠄\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠃⠄\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠉⠄\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠙⠄\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠑⠄\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠋⠄\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠴⠄\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠆⠄\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠢⠄\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠖⠄\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠶⠄\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠴⠄\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠂⠄\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠆⠄\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠒⠄\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠲⠄\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠢⠄\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠖⠄\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠶⠄\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠴⠄\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠋⠄\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠂⠄\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠏\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠒⠄\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠲⠄\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠶⠄\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠦⠄\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠔⠄\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠁⠄\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠃⠄\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠉⠄\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠙⠄\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠑⠄\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠋⠄\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠴⠄\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠂⠄\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠆⠄\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠒⠄\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠲⠄\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠢⠄\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠖⠄\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠶⠄\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠦⠄\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠔⠄\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠁⠄\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠃⠄\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠉⠄\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠙⠄\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠑⠄\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠋⠄\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠴⠄\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠂⠄\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠆⠄\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠒⠄\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠲⠄\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠢⠄\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠃⠄\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠉⠄\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳⠳⠳\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠂⠄\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠆⠄\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠔⠄\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠁⠄\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠴⠄\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠂⠄\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠆⠄\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠢⠄\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠳⠻\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠇⠻\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠡⠻\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠏⠻\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠁⠄\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠃⠄\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠉⠄\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠑⠄\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠔⠔⠻\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠐⠅⠻\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠂⠻\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠆⠄\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠒⠄\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠲⠄\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠢⠄\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠖⠄\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠶⠄\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠦⠄\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠔⠄\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠁⠄\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠃⠄\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠉⠄\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠙⠄\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠑⠄\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠋⠄\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠴⠄\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠂⠄\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠆⠄\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠒⠄\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠲⠄\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠢⠄\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠖⠄\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠶⠄\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠉⠄\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠙⠄\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠑⠄\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠋⠄\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠴⠄\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠂⠄\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠆⠄\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠒⠄\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠲⠄\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠢⠄\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠖⠄\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠶⠄\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠦⠄\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠔⠄\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠃⠄\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠑⠄\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠋⠄\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠴⠄\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠂⠄\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠆⠄\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠒⠄\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠲⠄\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠢⠄\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠖⠄\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠶⠄\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠦⠄\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠔⠄\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠁⠄\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠃⠄\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠑⠄\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠋⠄\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠒⠄\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠲⠄\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠢⠄\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠖⠄\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠶⠄\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠦⠄\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠔⠄\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠁⠄\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠃⠄\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠉⠄\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠙⠄\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠑⠄\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠋⠄\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠴⠄\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠂⠄\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠆⠄\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠒⠄\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠲⠄\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠢⠄\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠖⠄\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠦⠄\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠔⠄\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠁⠄\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠃⠄\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠉⠄\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠙⠄\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠑⠄\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠋⠄\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠴⠄\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠂⠄\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠆⠄\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠒⠄\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠲⠄\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠢⠄\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠖⠄\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠶⠄\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠦⠄\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠔⠄\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠁⠄\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠃⠄\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠉⠄\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠙⠄\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠑⠄\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠋⠄\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠴⠄\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠂⠄\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠆⠄\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠒⠄\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠲⠄\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠢⠄\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠖⠄\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠶⠄\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠌⠻\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠔⠄\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠁⠄\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠃⠄\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠉⠄\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠙⠄\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠑⠄\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠋⠄\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠴⠄\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠂⠄\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠆⠄\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠒⠄\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠲⠄\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠢⠄\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠖⠄\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠶⠄\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠦⠄\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠔⠄\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠁⠄\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠃⠄\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠉⠄\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠙⠄\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠑⠄\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠋⠄\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠴⠄\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠂⠄\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠆⠄\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠒⠄\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠲⠄\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠢⠄\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠖⠄\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠶⠄\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠦⠄\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠔⠄\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠁⠄\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠃⠄\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠉⠄\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠙⠄\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠑⠄\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠋⠄\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠴⠄\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠂⠄\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠆⠄\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠒⠄\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠲⠄\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠢⠄\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠖⠄\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠶⠄\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠦⠄\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠔⠄\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠁⠄\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠃⠄\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠉⠄\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠙⠄\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠑⠄\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠋⠄\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠴⠄\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠂⠄\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠆⠄\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠒⠄\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠲⠄\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠢⠄\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠖⠄\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠶⠄\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠦⠄\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠔⠄\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠁⠄\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠃⠄\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠉⠄\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠙⠄\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠑⠄\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠋⠄\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠴⠄\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠂⠄\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠆⠄\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠒⠄\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠲⠄\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠢⠄\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠖⠄\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠶⠄\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠦⠄\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠔⠄\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠁⠄\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠃⠄\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠉⠄\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠙⠄\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠑⠄\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠋⠄\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠴⠄\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠂⠄\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠆⠄\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠒⠄\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠲⠄\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠢⠄\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠖⠄\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠶⠄\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠦⠄\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠔⠄\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠁⠄\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠃⠄\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠉⠄\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠙⠄\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠑⠄\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠋⠄\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠴⠄\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠂⠄\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠆⠄\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠒⠄\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠲⠄\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠢⠄\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠖⠄\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠶⠄\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠦⠄\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠔⠄\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠁⠄\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠃⠄\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠉⠄\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠙⠄\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠑⠄\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠱⠀\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠱⠀\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠨⠅⠀\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠨⠅⠀\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠨⠅⠀\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠈⠱⠀\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠈⠱⠀\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠨⠐⠅⠻⠀\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠨⠨⠐⠻⠀\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠙⠄\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠑⠄\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠋⠄\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠴⠄\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠂⠄\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠆⠄\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠒⠄\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠲⠄\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠢⠄\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠖⠄\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠶⠄\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠦⠄\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠔⠄\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠁⠄\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠃⠄\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠉⠄\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠙⠄\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠑⠄\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠋⠄\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠴⠄\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠂⠄\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠆⠄\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠒⠄\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠲⠄\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠢⠄\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠖⠄\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠶⠄\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠦⠄\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠔⠄\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠁⠄\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠃⠄\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠉⠄\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠙⠄\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠑⠄\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠋⠄\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠴⠄\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠂⠄\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠆⠄\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠒⠄\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠲⠄\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠢⠄\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠖⠄\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠶⠄\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠦⠄\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠔⠄\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠁⠄\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠃⠄\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠉⠄\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠙⠄\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠑⠄\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠋⠄\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠴⠄\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠂⠄\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠆⠄\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠒⠄\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠲⠄\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠢⠄\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠖⠄\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠶⠄\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠦⠄\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠔⠄\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠁⠄\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠃⠄\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠉⠄\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠙⠄\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠑⠄\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠋⠄\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠉⠄\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠴⠄\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠒⠄\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠲⠄\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠢⠄\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠖⠄\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠔⠄\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠴⠄\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠂⠄\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠆⠄\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠒⠄\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠲⠄\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠢⠄\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠖⠄\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠔⠄\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠁⠄\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠃⠄\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠉⠄\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠙⠄\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠑⠄\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠋⠄\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠴⠄\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠆⠄\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠲⠄\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠢⠄\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠖⠄\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠶⠄\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠦⠄\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠋⠄\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠴⠄\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠂⠄\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠆⠄\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠒⠄\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠲⠄\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠢⠄\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠖⠄\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠦⠄\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠔⠄\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠁⠄\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠃⠄\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠂⠄\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠆⠄\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠒⠄\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠲⠄\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠢⠄\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠖⠄\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠶⠄\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠁⠄\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠃⠄\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠉⠄\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠙⠄\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠑⠄\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠋⠄\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠁⠄\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠃⠄\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠉⠄\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠙⠄\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠑⠄\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠋⠄\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠆⠴⠄\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠉⠄\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠑⠄\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠲⠴⠄\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠉⠄\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠴⠄\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠂⠄\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠆⠄\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠲⠄\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠢⠄\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠖⠄\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠦⠄\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠙⠄\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠑⠄\"}},\"key\":\"FFEE\"}]\n,\n\"nemeth/symbols/math_whitespace.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠑⠄\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠋⠄\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠦⠄\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠔⠄\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠁⠄\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠃⠄\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠉⠄\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠙⠄\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠑⠄\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠠\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠁⠄\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠃⠄\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠑⠄\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠋⠄\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠋⠋⠄\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠔⠄\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠁⠄\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠃⠄\"}},\"key\":\"FFFB\"}]\n,\n\"nemeth/symbols/other_stars.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠦⠄\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠴⠢⠄\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠎\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠁⠄\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠃⠄\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠴⠢⠄\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠒⠄\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠲⠄\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠖⠄\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠶⠄\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠦⠄\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠃⠄\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠉⠄\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠴⠄\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠂⠄\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠆⠄\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠒⠄\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠲⠄\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠢⠄\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠖⠄\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠶⠄\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠦⠄\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠔⠄\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠁⠄\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠃⠄\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠉⠄\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠙⠄\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠑⠄\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠋⠄\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠴⠄\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠂⠄\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠆⠄\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠒⠄\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠲⠄\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠢⠄\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠖⠄\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠔⠄\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠁⠄\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠃⠄\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠉⠄\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠙⠄\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠑⠄\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠋⠄\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠴⠄\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠂⠄\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠆⠄\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠒⠄\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠲⠄\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠢⠄\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠖⠄\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠶⠄\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠦⠄\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠔⠄\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠁⠄\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠃⠄\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠉⠄\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠙⠄\"}},\"key\":\"274D\"}]\n,\n\"nemeth/units/energy.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠺\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠠⠺\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠠⠺\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠺⠓\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠚\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠝\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠁\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠧\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠨⠠⠺\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠨⠠⠺\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠛⠨⠠⠺\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"nemeth/units/length.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠍\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠉⠍\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠅⠍\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠋⠞\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠊⠝\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠊\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠽⠙\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠝⠲⠍⠸⠲\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]}]\n,\n\"nemeth/units/memory.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠃\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠃\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠃\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠃\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠃\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞⠃\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"nemeth/units/other.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠙⠕⠵\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠎⠟\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠓⠁\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"nemeth/units/speed.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠞\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠏⠓\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠗⠏⠍\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠍⠓\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"nemeth/units/temperature.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠋\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠉\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠅\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"nemeth/units/time.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠝⠎\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠎\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠎\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠎\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠓\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"nemeth/units/volume.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠃⠃⠇\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠥\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠋⠇⠸⠲⠀⠕⠵⠸⠲\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠛⠁⠇\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠏⠞\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠟⠞\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠃⠎⠏\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠎⠏\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠉\"}},\"key\":\"cc\",\"names\":[\"cc\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠅⠇\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠇\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠍⠇\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"nemeth/units/weight.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠃\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠞\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠕⠵\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"⠨⠍⠛\"}}},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠗\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠛\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠉⠛\"}},\"key\":\"mcg\",\"names\":[\"mg\",\"µg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠛\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n,\n\"fr/functions/algebra.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degré\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"déterminant\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphisme\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"noyau\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"fr/functions/elementary.js\": \n[{\"locale\":\"fr\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"logarithme népérien\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logarithme décimal\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponentielle\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"PGCD\",\"pgcd\"],\"mappings\":{\"default\":{\"default\":\"plus grand commun diviseur\"},\"mathspeak\":{\"default\":\"pgcd\"},\"clearspeak\":{\"default\":\"pgcd\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"ppcm\",\"PPCM\",\"PPMC\",\"ppmc\"],\"mappings\":{\"default\":{\"default\":\"plus petit commun multiple\"},\"mathspeak\":{\"default\":\"ppcm\"},\"clearspeak\":{\"default\":\"ppcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argument\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"partie imaginaire\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"partie réelle\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"borne inférieure\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"mappings\":{\"default\":{\"default\":\"limite\"}},\"category\":\"Limits\",\"names\":[\"lim\"]},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"maximum\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minimum\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"borne supérieure\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"limite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"limite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"limite inductive\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"limite projective\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilité\"}},\"category\":\"Probability\"}]\n,\n\"fr/functions/hyperbolic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"cosinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"cotangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"cosécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"sécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"sinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"tangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosinus hyperbolique\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\",\"argch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cotangente hyperbolique\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\",\"argcoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosécante hyperbolique\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\",\"argcsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sécante hyperbolique\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\",\"argsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sinus hyperbolique\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\",\"argsh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument tangente hyperbolique\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\",\"argth\"]}]\n,\n\"fr/functions/trigonometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"cosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"cosécante\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"sécante\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosinus\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangente\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosécante\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sécante\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sinus\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangente\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"fr/symbols/digits_rest.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"au carré\"},\"mathspeak\":{\"default\":\"au carré\"},\"clearspeak\":{\"default\":\"au carré\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"cubique\"},\"mathspeak\":{\"default\":\"cubique\"},\"clearspeak\":{\"default\":\"cubique\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"un quart\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"un demi\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"trois quarts\"}},\"category\":\"No\"},{\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"un septième\"}},\"category\":\"No\"},{\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"un neuvième\"}},\"category\":\"No\"},{\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"un dixième\"}},\"category\":\"No\"},{\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"un tiers\"}},\"category\":\"No\"},{\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"deux tiers\"}},\"category\":\"No\"},{\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"un cinquième\"}},\"category\":\"No\"},{\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"deux cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"trois cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"quatre cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"un sixième\"}},\"category\":\"No\"},{\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"cinq sixièmes\"}},\"category\":\"No\"},{\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"un huitième\"}},\"category\":\"No\"},{\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes\"}},\"category\":\"No\"},{\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes\"}},\"category\":\"No\"},{\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes\"}},\"category\":\"No\"},{\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"numérateur un\"}},\"category\":\"No\"},{\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"zero tiers\"}},\"category\":\"No\"},{\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"vingt cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"trente cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"quarante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"cinquante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"soixante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"soixante dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"quatre vingts cerclé sur carré noir\"}},\"category\":\"No\"}]\n,\n\"fr/symbols/greek-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"Delta majuscule\"}}}]\n,\n\"fr/symbols/greek-scripts.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"petite gamma majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"petite lambda majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"petite pi majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"petite rhô majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"petite psi majuscule\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"gamma suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"phi suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"bêta souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"gamma souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"rhô souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"phi souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"khi souscrit\"}}}]\n,\n\"fr/symbols/greek-symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"bêta grec\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"ligature kai\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"epsilon lunaire réfléchi\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Digamma en gras\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"digamma en gras\"}}}]\n,\n\"fr/symbols/hebrew_letters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bèt\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guimel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dalèt\"}},\"category\":\"Lo\"}]\n,\n\"fr/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u trémaa et caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a point en chef et macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek et macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a rond en chef et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o tréma et macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde et macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o point en chef et macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cédille et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cédille et brève\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i tréma et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s accent aigu et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s point souscrit et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u macron et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a brève et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a brève et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a brève et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a brève et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a brève et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o cornu point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u cornu point souscrit\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barré\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d barré\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h barré\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l barré\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b barré\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z barré\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g barré\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o barré accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c barré\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e barré\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j barré\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r barré\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y barré\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"j sans point barré\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i barré\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"j sans point barré crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"o couché barré obliquement\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon barré\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"s long à barre diagonale\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"s long à barre haute\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta culbutée\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s long point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s long\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b potence\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"sixiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c crosse\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d potence\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f cursif\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv (Hwair)\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k crosse\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l rayé\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n à long jambage de droite\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o cornu\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"gha\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p crosse\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"deuxiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"ech réfléchi bouclé\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u cornu\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ej réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ej hameçon\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"cinquiéme tun\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ej caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lej\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ej\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ej bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"digramme Dej\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae accent aigu (ash)\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z crochet\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Qp\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"coup de glotte\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q avec hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"a culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"alpha culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b crosse\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"o ouvert\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d crosse\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"e réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa crochet\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e ouvert\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi crochet\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi fermé\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g crosse\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g cursif\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"petit gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"h culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h crosse\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"eng crosse\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l sanglé\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"m culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"m hampé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n hameçon à gauche\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o barré\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"oméga fermé\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"r culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"r prolongé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"r crosse culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r prolongé\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r sans obit\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"ech\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"ech bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"t culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u barré\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v de ronde\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"v culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"w culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"y culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"coup de glotte réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"coup de glotte culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"C étiré\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"clic bilabial\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"epsilon fermé\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"k culbuté\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"digramme Dz\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"digramme Dz bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"digramme Ts\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"digramme Tech\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"digramme Tc bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"digramme Feng\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"digramme Ls\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"digramme Lz\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percussion bilabiale\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"percussion bidentale\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"ae culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"epsilon culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"i culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"o couché\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"o ouvert couché\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"oe culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"u couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"u tréma couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"m couché\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"fricative pharyngale voisée\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"aïn\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r sans obit tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"g culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"g insulaire\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th barré diagonalement\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"ech hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d crosse et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"epsilon hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"o ouvert hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"ech hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ej hameçon rétroflexe\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n précédée d'une apostrophe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a tréma\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cédille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e tréma\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u tréma\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y tréma\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a macron\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a brève\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c point en chef\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e brève\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e point en chef\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g brève\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cédille\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i brève\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sans point\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cédille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cédille\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l point médian\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cédille\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o brève\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cédille\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cédille\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cédille\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u macron\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u brève\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z point en chef\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g accent aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cédille\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"j sans point\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a à rond souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g macron\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h brève souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u tréma souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a demi rond à droite\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"diacritique a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"diacritique e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"diacritique i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"diacritique o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"diacritique u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"diacritique c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"diacritique d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"diacritique h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"diacritique m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"diacritique r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"diacritique t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"diacritique v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"diacritique x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"i souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"r souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"u souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"v souscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"diacritique r souscrite\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"diacritique a ouvert aplati suscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"diacritique ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"diacritique ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"diacritique av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"diacritique c cédille\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"diacritique d insulaire\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"diacritique eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"diacritique g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"diacritique petite g majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"diacritique k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"diacritique l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"diacritique petite l majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"diacritique petite m majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"diacritique n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"diacritique petite n majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"diacritique petite r majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"diacritique r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"diacritique s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"diacritique s long\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"diacritique z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"exposant i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"exposant n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"indice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"indice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"indice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"indice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"indice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"souscrite h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"souscrite k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"souscrite l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"souscrite m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"souscrite n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"souscrite p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"souscrite s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"souscrite t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"j souscrite\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"s majuscule en écaille crochetée\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"c majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"r majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"P majuscule encadrée et en inversion avec croix\"}}}]\n,\n\"fr/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"A majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"A majuscule point en chef et macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"O majuscule ogonek et macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"A majuscule rond en chef et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"O majuscule tréma et macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"O majuscule tilde et macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"O majuscule point en chef et macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"C cédille et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"E macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"E macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"E cédille et brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"I tréma et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"L point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"O tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"O tilde et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"O macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"O macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"R point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"S accent aigu et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"S caron et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"S point souscrit et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"U tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"U macron et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"A brève et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"A brève et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"A brève et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"A brève et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"A brève et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"O cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"O cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"O cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"O cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"O cornu point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"U cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"U cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"U cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"U cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"U cornu point souscrit majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"A accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"A accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"A tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"A tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"C cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"E accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"E accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"E tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"I accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"I accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"I accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"I tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"N tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"O accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"O accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"O tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"O tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"U accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"U accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"U tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"Y accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"A macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"A brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"A ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"C accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"C accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"C point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"C caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"D caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"E macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"E brève majuscule\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"E point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"E ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"E caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"G accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"G brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"G point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"G cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"H accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"I tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"I macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"I brève majuscule\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"I ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"I point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"J accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"K cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"L accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"L cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"L caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"L point médian majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"N accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"N cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"N caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"O macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"O brève majuscule\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"O avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"R accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"R cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"R caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"S accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"S accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"S cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"S caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"T cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"T caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"U tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"U macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"U brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"U rond en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"U avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"U ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"W accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"Y accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"Y tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"Z accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"Z point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"Z caron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"A caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"I caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"O caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"U caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"G caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"K caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"O ogonek majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"G accent aigu majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"N grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"A double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"A brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"E double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"E brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"I double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"I brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"O double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"O brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"R double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"R brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"U double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"U brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"S virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"T virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"H caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"A point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"E cédille majuscule\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"O point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Y macron majuscule\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"A à rond souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"B point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"B point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"B ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"D point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"D point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"D ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"D cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"D accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"E tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"F point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"G macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"H point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"H point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"H tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"H cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"H brève souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"I tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"K accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"K point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"K ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"L point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"L ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"L accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"M accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"M point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"M point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"N point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"N point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"N ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"N accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"P accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"P point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"R point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"R point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"R ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"S point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"S point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"T point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"T point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"T ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"T accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"U tréma souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"U tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"V tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"V point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"W accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"W accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"W tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"W point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"W point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"X point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"X tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"Y point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"Z accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"Z point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"Z ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"A point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"A crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"E point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"E crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"E tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"I crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"I point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"O point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"O crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"U point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"U crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"Y accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"Y point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"Y crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"Y tilde majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/math_angles.js\": \n[{\"locale\":\"fr\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"angle droit avec arc\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"angle droit avec flèche en zigzag vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"angle tridimensionnel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"angle mesuré s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"variante d'angle avec carré\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"angle droit mesuré pointé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"angle avec s inscrit\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"angle aigu\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"angle culbuté\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"angle réfléchi\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_arrows.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flèche haut et bas\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flèche nord est\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flèche sud est\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flèche barrée gauche\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée gauche\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée droite\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes gauche\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes droite\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gauche\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée droite\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet gauche\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flèche haut bas sur base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet gauche\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet droite\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle gauche\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle droite\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée bilatérale\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas en zigzag\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin droit\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin gauche\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens positif\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens négatif\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest vers une barre horizontale longue\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet sur flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flèche en sens positif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flèche en sens négatif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut par dessus flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut à gauche d'une flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flèche gauche par dessus flèche droite\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"paire de flèches gauche\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le haut\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"paire de flèches droite\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le bas\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée gauche\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"double flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"double flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"double flèche haut bas\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"double flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"double flèche nord est\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"double flèche sud est\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"double flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"triple flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"triple flèche droite\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon gauche\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon droite\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec double barre\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec double barre\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée gauche\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée droite\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le bas\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flèche blanche gauche\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flèche blanche droite\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut à partir d'un taquet\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et trait horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et barre verticale\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite appuyée sur mur\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flèche sud est en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut et le bas\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à petit cercle\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"flèche descendante à gauche d'une flèche montante\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite et la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale barrée deux fois verticalement\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse gauche\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse droite\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flèche électrique\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le bas\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut entre deux traits horizontaux\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"cercle brisé à flèche nord ouest (échappement)\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à pointe large\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flèche grasse sud est\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite grasse\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flèche grasse nord est\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"flèche de traçage vers la droite\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe arrondie vers la droite\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flèche à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"flèche avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flèche grasse avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le haut\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le bas\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse courbée vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"flèche noire courbée vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"flèche noire trapue vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse à pointe concave vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'avant\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'arrière\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'arrière et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'avant et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre inférieure droite\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre supérieure droite\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessous\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessus\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à contour circulaire\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée blanche vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir sud est\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir nord est\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire sud est\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire nord est\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe larmée\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à hampe larmée\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à contour ouvert\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flèche sens antihoraire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flèche sens horaire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à signe plus cerclé\"}}},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"longue flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"longue flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"longue flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"longue double flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"longue double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"longue double flèche bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet vers la gauche\"}}},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la droite\"}}},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"longue flèche en tire bouchon droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale double barrée verticalement\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le bas\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits droite\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits droite\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes droite\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"flèche à fût pointillé droite\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"empenne gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"empenne vers la droite\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"double empenne gauche\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"double empenne droite\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest et sud est\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flèche nord est et sud ouest\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flèche nord est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flèche sud est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flèches nord ouest et nord est\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flèches nord est et sud est\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flèches sud est et sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flèches sud ouest et nord ouest\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flèche sud est sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche nord ouest\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest sur flèche nord est\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flèche bossue droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le haut\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le bas\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la gauche\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la droite\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"côté droit d'arc fléché sens horaire\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"côté gauche d'arc fléché sens antihoraire\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arc supérieur fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arc inférieur fléché sens antihoraire\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens horaire et signe moins souscrit\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens antihoraire et signe plus souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur droit sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur gauche sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontant fléchette vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant fléchette vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"fléchette vers la droite surmontant flèche vers la gauche\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontant signe moins\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers un x\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"petit cercle traversé d'une flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"petit cercle surmonté d'une flèche montante à deux têtes\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"flèche en épingle à cheveu droite\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un égal\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"presque égal à surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"inférieur à surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à travers un inférieur à\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un sous ensemble de\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers d'un sous ensemble de\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flèche gauche surmontée d'un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche droite en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche gauche en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"cercle traversé d'une flèche montante\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"losange noir à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"cercle noir à flèche vers le bas\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"intégrale à crosse fléchée gauche\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord est\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud est\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"flèche blanche bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord est\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud est\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"flèche noire bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"flèche noire haut et bas\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à petit cercle\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à signe plus cerclé\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"longue flèche vers la gauche en tire bouchon\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à fût pointillé\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers un x\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche bossue\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un égal\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à travers un inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers d'un sous ensemble de\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontée d'un opérateur tilde réfléchi\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée de l'opérateur tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"tilde réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"ilde surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas demi chasse\"}}}]\n,\n\"fr/symbols/math_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"l minuscule en script\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"fonction elliptique de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi ajouré\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"Gamma majuscule ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"Pi majuscule ajouré\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"sommation de la famille ajouré\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"D majuscule\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i ajouré en italique\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j ajouré en italique\"}}},{\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"dotless i\"}},\"category\":\"Ll\"},{\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"dotless j\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/math_delimiters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche\",\"alternative\":\"parenthèse ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite\",\"alternative\":\"parenthèse fermante\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche\",\"alternative\":\"crochet ouvrant\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"crochet droit\",\"alternative\":\"crochet fermant\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche\",\"alternative\":\"accolade ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"accolade droite\",\"alternative\":\"accolade fermante\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec pique\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec pique\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"plafond à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"plafond à droite\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"plancher à gauche\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"plancher à droite\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"repère sud est\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"repère sud ouest\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"repère nord est\"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"repère nord ouest\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"coin nord ouest\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"coin nord est\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"coin sud ouest\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"coin sud est\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"chevron droite\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"rallonge d'accolade\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"rallonge d'intégrale\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"rallonge de ligne horizontale\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure gauche ou inférieure droite d'accolade\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure droite ou inférieure gauche d'accolade\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"haut du signe de somme\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"bas du signe de somme\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"crochet vertical supérieur\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"crochet vertical inférieur\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"crochet verticaux en défilé\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"bas du radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"filet vertical gauche\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"filet vertical droit\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"parenthèse supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"parenthèse inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"accolade supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"accolade inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille supérieur\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille inférieur\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse aplatie\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse aplatie\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la gauche demi gras\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la droite demi gras\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie gauche maigre en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie droit maigre en écaille\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie gauche moyenne\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie droite moyenne\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s gauche\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s droite\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"chevron mathématique gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille blanche\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille blanche\"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche aplatie\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite aplatie\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"accolade gauche ajourée\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"accolade droite ajourée\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de gauche en notation z\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de droite en notation z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec barre souscrite\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec barre souscrite\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin supérieur\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin inférieur\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin inférieur\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin supérieur\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"chevron gauche pointé\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"chevron droit pointé\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc gauche et inférieur à\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc droite et supérieur à\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc droite et supérieur à\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc gauche et inférieur à\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"crochet noir gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"crochet noir droite en écaille\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée gauche\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée droite\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"double clôture dentelée gauche\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"chevron vers la gauche courbé\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"chevron vers la droite courbé\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"crampillon couché gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"crampillon couché droit\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"double parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"double parenthèse droite\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"anglet gauche\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"anglet droit\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré gauche\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré droit\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire droit\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire droit\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit en écaille\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime réfléchi\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime inférieur\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ornée\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ornée\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire droit vertical\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse droite verticale\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade droite verticale\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical en écaille\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical en écaille\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche lenticulaire noir vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit lenticulaire noir vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double droit vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"over angle bracket\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"under angle bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"accolade droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"crochet droit pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"accolade droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée pleine chasse *\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée pleine chasse *\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en coin demi chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"crochet droit en coin demi chasse\"}}}]\n,\n\"fr/symbols/math_geometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"filet horizontal fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"filet horizontal gras\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical fin\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical gras\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical fin\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical gras\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la droite\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la gauche\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la droite\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la gauche\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la droite\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la gauche\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et horizontal\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et horizontal\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras et horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"filet vertical et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal fin\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical fin\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical gras\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"filet double horizontal\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"filet double vertical\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"filet simple le bas et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le bas et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la droite\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et droit double\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et droit simple\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et gauche double\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et gauche simple\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et horizontal\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et horizontal\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et horizontall\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur droit au coin inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur gauche vers le coin inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin en croix\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"huitième inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"quart inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes inférieurs de pavé\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"trois quarts inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes inférieurs de pavé\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"pavé plein\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"trois quarts gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"moitié gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"un quart gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"un huitième gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"moitié droite de pavé\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"ombre légère\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"ombre moyenne\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"ombre foncée\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"huitième supérieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"huitième droit de pavé\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche inférieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit inférieur gauche et inférieur droit\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"carré blanc aux coins arrondis\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"petit carré noir inscrit dans un carré blanc\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"carré hachuré horizontalement\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"carré hachuré verticalement\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à gauche vers le bas à droite\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à droite vers le bas à gauche\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé en diagonale\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"petit carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectangle noir\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectangle blanc\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectangle vertical noir\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"parallélogramme noir\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"parallélogramme blanc\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers la droite\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la droite\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"losange noir\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"losange blanc\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"losange blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"cercle blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"losange\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"cercle en pointillés\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"cercle hachuré verticalement\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"deux cercles concentriques\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"cercle noir\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié inférieure\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié supérieure\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"cercle avec quadrant supérieur droit noir\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"disque avec quadrant supérieur gauche blanc\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"demi disque gauche noir\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"demi disque droite noir\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"point noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"cercle noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur gauchearc de cercle dans le quadrant supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"carré à moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"carré à moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure droite noire\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"carré blanc à ligne bissectrice verticale\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut pointé\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"grand cercle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur droit\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur droit\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur droit\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur droit\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale supérieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale inférieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"losange à moitié gauche noire\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"losange à moitié droite noire\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"losange à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"losange à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"carré en pointillés\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"grand carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"grand carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"très petit carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"très petit carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentagone noir\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexagone noir\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagone noir posé sur un côté\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"grand cercle noir\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"losange moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"losange moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"petit losange noir\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"petit rhombe noir\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"petit rhombe blanc\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale noire\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale blanche\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale noire\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale blanche\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"étoile blanche moyenne\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"petite étoile noire\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"petite étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentagone noir pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"grand cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"ovale gras avec ovale inscrit\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"cercle gras avec cercle inscrit\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"sautoir cerclé gras\"}}}]\n,\n\"fr/symbols/math_harpoons.js\": \n[{\"locale\":\"fr\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"harpon gauche par dessus harpon droit\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"harpon droit par dessus harpon gauche\"}},\"category\":\"So\"},{\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche dressée et droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche baissée et droite dressée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure droite et inférieure gauche\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure gauche et inférieure droite\"}}},{\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche dressées\"}},\"category\":\"Sm\"},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure droites\"}},\"category\":\"Sm\"},{\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche baissées\"}},\"category\":\"Sm\"},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure gauches\"}},\"category\":\"Sm\"},{\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée sur harpon gauche à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée par dessus harpon droit à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus harpon à dent droite dressée\"}},\"category\":\"Sm\"},{\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche baissée par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus harpon à dent gauche dressée\"}},\"category\":\"Sm\"},{\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite baissée par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"ancre gauche\"}},\"category\":\"Sm\"},{\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"ancre droite\"}},\"category\":\"Sm\"},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"ancre vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"ancre vers le bas\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_non_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"constante de planck sur deux pi\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"symbole l b barré\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"symbole numéro\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"copyright de programme sonore\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"ordonnances\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"répons\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de service\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"signe de téléphone\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de commerce\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versicule\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"symbole once\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohm culbuté\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"degré kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstroms\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"symbole estimé\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"f culbuté majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"bureau d'information\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Q majuscule couché\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"symbole télécopie\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"G culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"L culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"L réfléchi majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Y culbuté majuscule sans empattement\"}}}]\n,\n\"fr/symbols/math_symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorielle\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"petit guillemet\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"dièse\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dollars\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"pourcent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"esperluette\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prime\",\"alternative\":\"apostrophe\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"point\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"deux points\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"égale\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arobase\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circonflexe\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation renversé\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centimes\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"livres\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"symbole monétaire\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barre déjointe\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"tréma\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal féminin\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant gauche\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"négation\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"symbole marque déposée\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"macron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"degrés\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus ou moins\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"symbole micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"fin de paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cédille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal masculin\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant droite\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation renversé\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"multiplié par\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"divisé par\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"brève\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"point en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"rond en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"double accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"trait d'union\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barre horizontalle\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"double ligne verticale\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"double trait souscrit\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe culbuté\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule inférieur\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule supérieur culbuté\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double culbuté\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule double supérieur culbuté\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"obèle\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"double obèle\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"puce\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"puce triangulaire\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"point de conduite simple\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"point de conduite double\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"points de suspension\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"point de coupure de mot\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"symbole pour mille\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"symbole pour dix mille\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"prime réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"double prime réfléchi\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"triple prime réfléchi\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"chevron d'insertion\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"guillemet simple gauche\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"guillemet simple droite\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marque de référence\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"double point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"point exclarrogatif\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"tiret en chef\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"tirant souscrit\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"tirant en chef\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"lambda d'insertion\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"astérisme\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"puce trait d'union\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barre de fraction\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"double point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation exclamation\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation interrogation\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"pied de mouche réfléchi\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à droite\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à gauche\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"astérisque baissé\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"point virgule réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"resserrer\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"deux astérisques alignés verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"moins commercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"tiret ondé\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"dos d'âne souscrit\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"point fleur\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"trois points\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"quatre points en losange\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"cinq points en quinconce\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"deux points en capitale\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"quatre points en croix\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"croix pointée\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"trois points vertical\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"quatre points vertical\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"exposant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"exposant signe moins\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"exposant signe égal\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"indice signe plus\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"indice signe moins\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"indice signe égal\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse droite\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"limite de propriété\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"perluète culbutée\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"symbole per\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"minuscule f culbuté\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"pour tous\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complément\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"il existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"il n'existe pas\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"ensemble vide\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incrément\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"n'appartient pas à\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"ce qu'il fallait démontrer\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"produit\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sommation\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"moins ou plus\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"plus pointé\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"différence d'ensembles\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"racine carrée\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"racine cubique\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"racine quatrième\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportionnel à\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infini\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"angle droit\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"angle mesuré\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"angle sphérique\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"est un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"non parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"et logique\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"intégrale\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"intégrale double\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"intégrale triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"intégrale de surface\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"intégrale de volume\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"par conséquent\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"parce que\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"rapport\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"moins pointé\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"excès\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proportion géométrique\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothétique\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s couché renversé\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoïde\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"produit couronne\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"non tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"moins tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"non asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"approximativement mais non strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"ni approximativement ni strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"non presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"presque égal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"entièrement égal à\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"géométriquement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"différence entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"tend vers la limite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"géométriquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou image de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"image de ou approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"deux points égal\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"égal deux points\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"rond dans égal\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"égal avec rond en chef\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"correspond à\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estime\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"équiangulaire à\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"égal avec étoile en chef\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"égal delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"égal par définition à\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"mesuré par\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"égalité en doute\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"identique à\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"non identique à\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"strictement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"plus petit que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"plus grand que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"plus petit mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"plus grand mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"pas plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"pas plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"plus petit ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"plus grand ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"plus petit ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"plus grand ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"précède\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"suit\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"précède ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"suit ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"précède ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"suit ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"ne précède pas\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"ne suit pas\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"pas un sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"pas un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"ni un sous ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"ni un sur ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"sous ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"sur ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"multiplication de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"union de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"image carrée de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original carré de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"image carrée ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original carré ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"chapeau carré\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"coupe carrée\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"plus cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"moins cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"multiplié par cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barre oblique de division cerclée\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"opérateur rond cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"égal cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"tiret cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"plus encadré\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"moins encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"multiplié par encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"opérateur point encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modélise\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"vrai\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"oblige\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"barre verticale triple avec tourniquet à droite\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"ne prouve pas\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"pas vrai\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"n'oblige pas\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"non barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"précède sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"suit sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"image de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multijection\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matrice hermitienne conjuguée\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"intercale\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"ou exclusif\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"non et\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"non ou\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"et logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"ou logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersection de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"réunion de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"opérateur losange\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"opérateur étoile\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"divisé multiplié\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"nœud papillon\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"moins tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"ou logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"et logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"sous ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"sur ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"intersection double\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"union double\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"fourche\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"égal et parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"plus petit que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"plus grand que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"considérablement plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"considérablement plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"égal ou précède\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"égal ou suit\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"ni précédant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"ni suivant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"ni image carrée ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"ni original carré ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"image carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"plus petit mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"plus grand mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"précédant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"suivant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"pas un sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"ni sous groupe normal ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"ni égal ni contenant comme sous  groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"trois points suspendus\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"trois points médians\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin haut à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin bas à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"appartient à avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"appartient à avec point en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait souscrit\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"appartient à avec deux traits horizontaux\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contient avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"petit contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"petit contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"appartient à un sac en notation z\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diamètre\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"maison\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"ligne ondulée\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"négation réfléchi\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastille carrée\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"secteur\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"plus gras\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"moins gras\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"division gras\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"boucle recourbée\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"double boucle recourbée\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc inscrit dans triangle blanc\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"ou avec point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"sous ensemble précédé d'une barre oblique inversée\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sur ensemble suivi d'une barre oblique\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barre verticale À une traverse\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique ascendante\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"grande division\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique descendante\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"et logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"ou logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"losange blanc à point centré\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"et pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"appartient À ouvert vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur droit pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur gauche pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"jointure externe gauche\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"jointure externe droite\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"jointure externe complète\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"double tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multijection gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"long taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"long taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut surmonté d'un cercle\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"losange coupé\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur diagonale descendante\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur diagonale montante\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"délimiteur triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"boulet\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"deux points de la notation z\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"clôture pointillée\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"ligne verticale en zigzag\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"ensemble vide réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"ensemble vide barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"ensemble vide petit cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"cercle à barre horizontale\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barre verticale cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"parallèles cerclées\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée cerclée\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire cerclé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"cercle divisé par une barre horizontale et une barre verticale dans la moitié supérieure\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"cercle superposé d'un x\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"division pivoté en sens antihoraire cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"puce blanche cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"puce cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"inférieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"supérieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"cercle avec petit cercle à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"cercle avec deux petits traits horizontaux à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"oblique encadrée\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"oblique inversée encadrée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"astérisque encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"petite cercle encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"carré encadré\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"carrés se chevauchant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triangle pointé en chef\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triangle à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s inscrit dans triangle\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle à empattements inférieurs\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triangle droit par dessus triangle gauche\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"triangle gauche à gauche d'une barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"triangle droit à droite d'une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile droite noire\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"nœud papillon noir\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié gauche noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié droite noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"sablier blanc\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"sablier noir\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infini incomplet\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"lorgnon\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"infini nié par une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multijection à deux têtes\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"carré ombré\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"augmente avec\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"produit de permutation\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné surmontés d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"identique à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"thermodynamique\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié droite noire\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"losange fuselé noir\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré blanc\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré noir\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange noir\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle noir\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"règle différée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"opérateur barre oblique inversée\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"barre oblique avec barre en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée à traverse horizontale\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique inversée\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"double plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"tiny\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"opérateur plus cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire pointé\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire avec plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"opérateur intersection carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"opérateur union carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"opérateur deux et logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"opérateur deux ou logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"sommation modulo deux\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"sommation avec intégrale\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"intégrale quadruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"intégrale à partie finie\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"intégrale à deux barres horizontales\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"moyenne d'intégrale à barre oblique inversée\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"fonction de circulation\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin rectangulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin semi circulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne évitant le pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"intégrale autour d'un opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"intégrale quaternion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"intégrale au signe multiplié par\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe intersection\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"jointure\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"gros opérateur triangle gauche\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composition de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"tubage de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"projection de schémas en notation z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un petit cercle\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"plus à point souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"plus à tilde souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"plus à chiffre deux souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"plus à triangle noir\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"moins surmonté d'une virgule\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"moins à point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"moins à points descendants\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"moins à points ascendants\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"produit vectoriel\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"multiplication à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"multiplication à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"produit semi direct fermé en bas\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"produit fusionné\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"multiplication cerclé circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"multiplication doublement cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"division cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"plus dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"moins dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"multiplication dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"produit interieur\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"produit intérieur à droite\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"composition relationnelle en notation z\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"amalgamation ou coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersection pointée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"union à signe moins\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"union à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersection à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersection avec et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"union avec ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"union par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"union par dessus bar par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus trait par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"deux unions soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"deux intersections soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersection fermée à empattements\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"deux intersections carrées emboîtées\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"deux unions carrées emboîtées\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements et produit fusionné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"et logique à point en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"ou logique à point en chef\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"deux et logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"deux ou logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"grand ou pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"grand et pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"et et ou logiques entrecroisés\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"et logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"ou logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"et logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"ou logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres en chef\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"et logique à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"petit v à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"antirestriction de domaine en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"antirestriction de codomaine en notation z\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"égal point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"identique à surmonté d'un point\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"deux barres verticales à trois traverses\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"trois barres verticales à trois traverses\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde à points ascendants\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similaire à moins similaire à\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruent point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Égal astérisque en chef\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"presque égal à circonflexe\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou égal à\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"plus signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"égal à signe plus en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"tilde signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"double deux points égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"deux signes égal à consécutifs\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"trois signes égal à consécutifs\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"égal à deux points en chef deux points souscrits\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"équivalent quatre points en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"inférieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"supérieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"inférieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"supérieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef droit\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"inférieur à et pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"supérieur à et pas égal à une ligne\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"inférieur à et non approximatif\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"supérieur à et non approximatif\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à deux lignes par dessus supérieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à deux lignes par dessus inférieur à\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à par dessus supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à par dessus inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus supérieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus inférieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à pentu par dessus supérieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à pentu par dessus inférieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou supérieur à\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou inférieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou supérieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à à deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à à deux lignes inclinées\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"similaire à ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"similaire à ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus inférieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus supérieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à emboîtés\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés avec barre souscrite\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"supérieur à à côté de inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"plus petit que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"plus grand que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"égal et dos d'âne\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal à une ligne\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"précède par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"suit par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"précède par dessus non presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"suit par dessus non presque égal à\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"double précède\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"double suit\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"sous ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"sur ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus signe égal\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte gauche\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte droite\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à côté de sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble chaîné à sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"appartient à ouvert vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"fourche surmontée d'un t\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"intersection transversale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcation (non indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"non bifurcation (indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"taquet gauche court\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"triple tourniquet droit à barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"double barre verticale gauche à traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas avec barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut avec barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut par dessus taquet court vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le bas\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de à barre de négation réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas surmontant un cercle\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"parallèlle à vertical à une traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"parallèle à avec opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"triple barre verticale à une traverse\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"opérateur trois points\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"trois inférieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"trois supérieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"grand opérateur à trois barres verticales\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"opérateur double oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche n aire\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"trait d'union en esse\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de virgule verticale\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de deux points vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point virgule vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'exclamation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'interrogation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de points de suspension verticaux\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point de conduite double vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret cadratin vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret demi cadratin vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas ondulé vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"point sésame\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"point sésame ajouré\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"tiret haut en pointillés\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"tiret haut à point central\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"tiret haut ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"tiret haut double ondulé\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"tiret bas avec pointillés\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"tiret bas à point central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"tiret bas ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"point minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"point virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"deux points minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"trait d'union cadratin minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"croisillon minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"perluète minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"astérisque minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"plus minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"tiret minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"inférieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"supérieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"égal à minuscule\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"integer divide\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"symbole dollar minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"arrobe minuscule\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"guillemet\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"croisillon\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"symbole dollar\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"perluète\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"tiret\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"point\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"deux points colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"égal à\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"arrobe\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"accent circonflexe\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"symbole centime\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"symbole livre\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"négation\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"macron *\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"ligne brisée\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"symbole yen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"symbole won\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"ligne verticale mince\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"carré noir\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}}}]\n,\n\"fr/symbols/math_whitespace.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espace\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"trait d'union conditionnel\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"demi cadratin\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"cadratin\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"sixième de cadratin\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"antiliant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"liant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marque gauche à droite\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marque droite à gauche\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"séparateur de lignes\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"séparateur de paragraphes\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"enchâssement gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"enchâssement droite à gauche\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"dépilement de formatage directionnel\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"forçage gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"forçage droite à gauche\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espace insécable étroite\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"espace moyenne mathématique\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"plus invisible\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibiteur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activateur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales nationales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales de référence\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"espace ultrafine\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancre d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"séparateur d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminateur d'annotation interlinéaire\"}}}]\n,\n\"fr/symbols/other_stars.js\": \n[{\"locale\":\"fr\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"symbole exposant décimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"étoile noire\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"cercle moyen blanc\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"cercle moyen noir\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"signe de vérification blanc gras\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"signe de vérification\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"gros signe de vérification\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"x de multiplication\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"gros x de multiplication\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"x de bulletin de vote\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"gros x de bulletin de vote\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"croix percée d'un carré\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"grosse croix percée d'un carré\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"croix de malte\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Étoile de david\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"croix larmée\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"grosse croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"croix tréflée\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"scintillements\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à contour accentué\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche cerclée\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"molette noire\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"molette blanche\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec contour\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec gros contour\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche ombrée\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"gros astérisque\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"astérisque percé\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"astérisque à huit branches\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à huit branches\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante à huit branches\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"étoile noire à six branches\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à douze branches\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"astérisque à seize branches\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé percé\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"gros astérisque larmé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"sixtefeuille blanche et noire\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"quintefeuille noire\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"quintefeuille blanche\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"double quartefeuille noire avec contour\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Étoile cerclée percée à huit branches\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"gros astérisque rayonnant larmé\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"flocon de neige\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"flocon de neige à trois folioles transpercé\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"gros flocon de neige à chevrons\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Étincellement\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"gros étincellement\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"astérisque pommeté\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"gros astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"croix grasse\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"cercle blanc ombré\"}}}]\n,\n\"fr/units/energy.js\": \n[{\"locale\":\"fr\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"watts\",\"singular\":\"watt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"joules\",\"singular\":\"joule\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"newtons\",\"singular\":\"newton\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"ampères\",\"singular\":\"ampère\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"volts\",\"singular\":\"volt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"ohms\",\"singular\":\"ohm\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]}]\n,\n\"fr/units/length.js\": \n[{\"locale\":\"fr\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"mètres\",\"singular\":\"mètre\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"m\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"pieds\",\"singular\":\"pied\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"pouces\",\"singular\":\"pouce\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"default\":\"miles\",\"singular\":\"mile\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"default\":\"yards\",\"singular\":\"yard\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"yd\",\"yd.\"]}]\n,\n\"fr/units/memory.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/other.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/speed.js\": \n[{\"locale\":\"fr\"},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"miles par heure\",\"singular\":\"mile par heure\",\"dual\":\"\"}},\"names\":[\"mph\"]}]\n,\n\"fr/units/temperature.js\": \n[{\"locale\":\"fr\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"farads\",\"singular\":\"farad\",\"dual\":\"\"}},\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"coulombs\",\"singular\":\"coulomb\",\"dual\":\"\"}},\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"kelvins\",\"singular\":\"kelvin\",\"dual\":\"\"}},\"names\":[\"K\",\"°K\"]}]\n,\n\"fr/units/time.js\": \n[{\"locale\":\"fr\"},{\"key\":\"s\",\"mappings\":{\"default\":{\"default\":\"secondes\",\"singular\":\"seconde\",\"dual\":\"\"}},\"category\":\"time\",\"names\":[\"s\"]}]\n,\n\"fr/units/volume.js\": \n[{\"locale\":\"fr\"},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"barils\",\"singular\":\"baril\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"default\":\"gallons\",\"singular\":\"gallon\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"pintes\",\"singular\":\"pinte\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"default\":\"quarts\",\"singular\":\"quart\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"cuillères de table\",\"singular\":\"cuillèe de table\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"cuillèes à thé\",\"singular\":\"cuillère à thé\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"key\":\"l\",\"mappings\":{\"default\":{\"default\":\"litres\",\"singular\":\"litre\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"l\"]}]\n,\n\"fr/units/weight.js\": \n[{\"locale\":\"fr\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"livres\",\"singular\":\"livre\",\"dual\":\"\"}},\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"default\":\"onces\",\"singular\":\"oce\",\"dual\":\"\"}},\"names\":[\"oz\",\"oz.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"grains\",\"singular\":\"grain\",\"dual\":\"\"}},\"names\":[\"g\",\"gr\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"default\":\"tonnes\",\"singular\":\"tonne\",\"dual\":\"\"}},\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/mathmaps/nemeth.js",
    "content": "{\n\"nemeth/functions/algebra.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠛\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠞\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠊⠍\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠓⠕⠍\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠅⠑⠗\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠠⠞⠗\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"nemeth/functions/elementary.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠕⠏⠀\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠝⠀\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠛\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠑⠭⠏\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠛⠉⠙\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠇⠉⠍\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠛⠀\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠊⠍\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠗⠑\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠋⠀\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠊⠝⠀⠋\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠎⠥⠏\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠁⠭⠀\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠎⠥⠏\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠚⠇⠊⠍\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠏⠗⠕⠚⠇⠊⠍\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠍⠕⠙\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"⠠⠏⠗\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"nemeth/functions/hyperbolic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠓⠀\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠓⠀\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠓⠀\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠓⠀\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠓⠀\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠕⠓⠀\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠎⠓\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠞⠓\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠉⠓\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠑⠉⠓⠀\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠊⠝⠓⠀\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠞⠁⠕⠓⠀\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"nemeth/functions/trigonometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠀\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠀\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠀\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠀\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠀\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠝⠀\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠉⠕⠎⠀\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠕⠞⠀\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠎⠉⠀\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠑⠉⠀\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠊⠝⠀\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠞⠁⠝⠀\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"nemeth/symbols/digits_rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠲⠼\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠆⠼\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠲⠼\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠶⠼\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠔⠼\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠂⠴⠼\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠒⠼\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠒⠼\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠢⠼\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠢⠼\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠢⠼\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠲⠌⠢⠼\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠖⠼\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠖⠼\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠦⠼\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠦⠼\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠦⠼\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠶⠌⠦⠼\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠼\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠴⠌⠒⠼\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠂⠴⠻⠻\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠆⠴⠻⠻\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠒⠴⠻⠻\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠲⠴⠻⠻\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠢⠴⠻⠻\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠖⠴⠻⠻\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠶⠴⠻⠻\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠦⠴⠻⠻\"}},\"key\":\"324F\"}]\n,\n\"nemeth/symbols/greek-rest.js\": \n[{\"locale\":\"nemeth\"}]\n,\n\"nemeth/symbols/greek-scripts.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠢⠑⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠁⠄\"}}}]\n,\n\"nemeth/symbols/greek-symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠴⠄\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠶⠄\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠋⠖⠄\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠁⠄\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠃⠄\"}},\"key\":\"1D7CB\"}]\n,\n\"nemeth/symbols/hebrew_letters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠢⠄\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠖⠄\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠶⠄\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠦⠄\"}},\"key\":\"2138\"}]\n,\n\"nemeth/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠂⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠃⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"⠈⠝\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠔⠄\"}}}]\n,\n\"nemeth/symbols/latin-rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠉⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠋⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠴⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠂⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠆⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠢⠄\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠃⠄\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠉⠄\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠉⠶⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠁⠄\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠃⠄\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠦⠁⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠴⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠉\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠝\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠽\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠂⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠦⠄\"}}}]\n,\n\"nemeth/symbols/math_angles.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠑⠄\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠶⠉⠄\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠴⠄\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠃⠄\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠉⠄\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠙⠄\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠑⠄\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠋⠄\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠴⠄\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠂⠄\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠆⠄\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠒⠄\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠲⠄\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠢⠄\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠖⠄\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠶⠄\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠦⠄\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠔⠄\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠁⠄\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠃⠄\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠉⠄\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠙⠄\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠑⠄\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠋⠄\"}},\"key\":\"29AF\"}]\n,\n\"nemeth/symbols/math_arrows.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠀\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠀\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠕⠀\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠀\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠕⠀\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠩⠪⠒⠒⠕⠀\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠒⠒⠀\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠀\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠀\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠒⠒⠀\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠀\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠔⠒⠢⠕⠀\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠕⠀\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠽⠀\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠯⠒⠒⠕⠀\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠳⠀\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠳⠒⠒⠕⠀\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠕⠀\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠳⠒⠒⠕⠀\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠳⠒⠕⠀\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠕⠀\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠕⠀\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠨⠡⠀\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠨⠡⠒⠒⠕⠀\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠕⠀\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠔⠢⠔⠀\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠴⠄\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠂⠄\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠆⠄\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠒⠄\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠀⠕⠀\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠀⠔⠀\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠦⠄\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠔⠄\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠕⠀\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠔⠀\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠪⠒⠒⠀\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠫⠒⠒⠕⠀\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠚⠒⠒⠫⠚⠒⠒⠀\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠪⠒⠒⠀\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠕⠀\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠕⠀\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠪⠒⠒⠀\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠪⠒⠒⠀\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠕⠀\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠤⠔⠒⠢⠀\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠤⠔⠒⠢⠕⠀\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠣⠒⠒⠕⠻⠀\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠩⠒⠒⠕⠻⠀\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠀⠒⠀\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠀⠒⠕⠀\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠀⠒⠕⠀\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠀⠒⠕⠀\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠪⠒⠒⠀\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠳⠀\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠪⠒⠒⠀\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠒⠒⠕⠀\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠒⠒⠕⠀\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠸⠒⠒⠕⠀\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠁⠄\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠃⠄\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠉⠄\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠙⠄\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠑⠄\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠋⠄\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠴⠄\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠂⠄\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠆⠄\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠪⠒⠒⠕⠀\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠨⠡⠀\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠀\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠳⠀\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠳⠀\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠂⠄\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠒⠄\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠲⠄\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠲⠄\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠦⠃⠄\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠲⠄\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠦⠄\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠔⠄\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠁⠄\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠃⠄\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠉⠄\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠙⠄\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠑⠄\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠋⠄\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠴⠄\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠂⠄\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠆⠄\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠒⠄\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠲⠄\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠢⠄\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠖⠄\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠶⠄\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠦⠄\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠔⠄\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠁⠄\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠃⠄\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠉⠄\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠙⠄\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠑⠄\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠋⠄\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠂⠄\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠆⠄\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠒⠄\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠲⠄\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠢⠄\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠖⠄\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠶⠄\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠦⠄\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠔⠄\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠁⠄\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠃⠄\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠉⠄\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠙⠄\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠑⠄\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠴⠄\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠂⠄\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠆⠄\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠒⠄\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠲⠄\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠢⠄\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠖⠄\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠶⠄\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠦⠄\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠔⠄\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠁⠄\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠃⠄\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠉⠄\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠙⠄\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠑⠄\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠋⠄\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠴⠄\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠂⠄\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠆⠄\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠒⠄\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠲⠄\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠢⠄\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠖⠄\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠶⠄\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠦⠄\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠔⠄\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠁⠄\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠃⠄\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠉⠄\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠙⠄\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠑⠄\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠋⠄\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠴⠄\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠂⠄\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠆⠄\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠒⠄\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠲⠄\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠢⠄\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠖⠄\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠶⠄\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠦⠄\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠔⠄\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠁⠄\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠃⠄\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠉⠄\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠙⠄\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠑⠄\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠋⠄\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠴⠄\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠂⠄\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠆⠄\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠒⠄\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠲⠄\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠢⠄\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠖⠄\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠶⠄\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠦⠄\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠔⠄\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠁⠄\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠙⠄\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠑⠄\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠋⠄\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠴⠄\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠂⠄\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠆⠄\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠒⠄\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠲⠄\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠢⠄\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠖⠄\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠶⠄\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠦⠄\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠔⠄\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠁⠄\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠃⠄\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠉⠄\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠙⠄\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠑⠄\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠋⠄\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠴⠄\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠂⠄\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠆⠄\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠒⠄\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠲⠄\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠢⠄\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠖⠄\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠶⠄\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠦⠄\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠔⠄\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠴⠄\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠂⠄\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠆⠄\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠒⠄\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠲⠄\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠢⠄\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠖⠄\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠶⠄\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠦⠄\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠔⠄\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠁⠄\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠃⠄\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠒⠄\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠲⠄\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠙⠄\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠁⠄\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠉⠄\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠙⠄\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠶⠄\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠴⠄\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠂⠄\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠆⠄\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠒⠄\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠲⠄\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠢⠄\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠖⠄\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠶⠄\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠦⠄\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠔⠄\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠁⠄\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠃⠄\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠉⠄\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠙⠄\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠑⠄\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠋⠄\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠴⠄\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠂⠄\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠴⠄\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠂⠄\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠆⠄\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠒⠄\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠲⠄\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠢⠄\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠖⠄\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠶⠄\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠦⠄\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠔⠄\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠁⠄\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠃⠄\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠉⠄\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠙⠄\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠑⠄\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠋⠄\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠴⠄\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠂⠄\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠆⠄\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠒⠄\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠲⠄\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠢⠄\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠖⠄\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠶⠄\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠦⠄\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠔⠄\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠁⠄\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠃⠄\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠉⠄\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠔⠄\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠁⠄\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠃⠄\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠉⠄\"}},\"key\":\"FFEC\"}]\n,\n\"nemeth/symbols/math_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠈⠇\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠦⠄\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠉⠄\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠙⠄\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠑⠄\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠋⠄\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠴⠄\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠢⠄\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠙\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠑\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠦⠄\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠔⠄\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠲⠄\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠢⠄\"}},\"key\":\"1D6A5\"}]\n,\n\"nemeth/symbols/math_delimiters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠷\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠾\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠷\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠾\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠷\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠾\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠢⠄\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠖⠄\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠉⠄\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠙⠄\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠑⠄\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠋⠄\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠴⠄\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠂⠄\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠃⠄\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠉⠄\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠙⠄\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠑⠄\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠋⠄\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠴⠄\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠂⠄\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠆⠄\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠒⠄\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠲⠄\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠢⠄\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠖⠄\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠶⠄\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠦⠄\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠔⠄\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠁⠄\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠃⠄\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠉⠄\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠙⠄\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠑⠄\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠋⠄\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠴⠄\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠂⠄\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠆⠄\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠒⠄\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠲⠄\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠢⠄\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠖⠄\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠶⠄\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠦⠄\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠔⠄\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠉⠄\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠙⠄\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠷\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠾\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠴⠄\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠂⠄\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠦⠄\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠔⠄\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠁⠄\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠃⠄\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠉⠄\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠙⠄\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠑⠄\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠋⠄\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠴⠄\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠂⠄\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠆⠄\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠒⠄\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠲⠄\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠢⠄\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠢⠄\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠖⠄\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠷\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠾\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠉⠄\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠙⠄\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠑⠄\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠋⠄\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠷\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠾\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠢⠄\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠖⠄\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠶⠄\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠦⠄\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠔⠄\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠁⠄\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠃⠄\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠉⠄\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠙⠄\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠑⠄\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠋⠄\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠴⠄\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠂⠄\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠆⠄\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠒⠄\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠲⠄\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠢⠄\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠖⠄\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠶⠄\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠦⠄\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠦⠄\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠔⠄\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠁⠄\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠃⠄\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠉⠄\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠙⠄\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠆⠄\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠒⠄\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠲⠄\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠢⠄\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠖⠄\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠶⠄\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠦⠄\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠔⠄\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠑⠄\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠋⠄\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠴⠄\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠂⠄\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠲⠄\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠢⠄\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠖⠄\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠶⠄\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠦⠄\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠔⠄\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠁⠄\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠃⠄\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠙⠄\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠑⠄\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠋⠄\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠑⠄\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠋⠄\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠶⠄\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠦⠄\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠢⠄\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠖⠄\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠶⠄\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠦⠄\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠔⠄\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠁⠄\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠃⠄\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠉⠄\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠙⠄\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠑⠄\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠋⠄\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠴⠄\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠂⠄\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠆⠄\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠒⠄\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠲⠄\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠶⠄\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠦⠄\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠔⠄\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠁⠄\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠃⠄\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠉⠄\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠙⠄\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠑⠄\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠦⠄\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠔⠄\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠃⠄\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠙⠄\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠃⠄\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠙⠄\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠋⠄\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠴⠄\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠆⠄\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠒⠄\"}},\"key\":\"FF63\"}]\n,\n\"nemeth/symbols/math_geometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠴⠄\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠂⠄\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠆⠄\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠒⠄\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠲⠄\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠢⠄\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠖⠄\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠶⠄\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠦⠄\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠔⠄\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠁⠄\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠃⠄\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠉⠄\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠙⠄\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠑⠄\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠋⠄\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠴⠄\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠂⠄\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠆⠄\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠒⠄\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠲⠄\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠢⠄\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠖⠄\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠶⠄\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠦⠄\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠔⠄\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠁⠄\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠃⠄\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠉⠄\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠙⠄\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠑⠄\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠋⠄\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠴⠄\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠂⠄\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠆⠄\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠒⠄\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠲⠄\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠢⠄\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠖⠄\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠶⠄\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠦⠄\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠔⠄\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠁⠄\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠃⠄\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠉⠄\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠙⠄\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠑⠄\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠋⠄\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠴⠄\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠂⠄\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠆⠄\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠒⠄\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠲⠄\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠢⠄\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠖⠄\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠶⠄\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠦⠄\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠔⠄\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠁⠄\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠃⠄\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠉⠄\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠙⠄\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠑⠄\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠋⠄\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠴⠄\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠂⠄\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠆⠄\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠒⠄\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠲⠄\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠢⠄\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠖⠄\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠶⠄\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠦⠄\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠔⠄\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠁⠄\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠃⠄\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠉⠄\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠙⠄\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠑⠄\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠋⠄\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠴⠄\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠂⠄\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠆⠄\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠒⠄\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠲⠄\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠢⠄\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠖⠄\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠶⠄\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠦⠄\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠔⠄\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠁⠄\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠃⠄\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠉⠄\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠙⠄\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠑⠄\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠋⠄\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠴⠄\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠂⠄\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠆⠄\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠒⠄\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠲⠄\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠢⠄\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠖⠄\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠶⠄\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠦⠄\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠔⠄\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠁⠄\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠃⠄\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠉⠄\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠙⠄\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠑⠄\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠋⠄\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠴⠄\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠂⠄\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠆⠄\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠒⠄\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠲⠄\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠢⠄\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠖⠄\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠶⠄\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠦⠄\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠔⠄\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠁⠄\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠃⠄\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠉⠄\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠙⠄\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠑⠄\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠋⠄\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠴⠄\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠂⠄\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠆⠄\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠒⠄\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠲⠄\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠢⠄\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠖⠄\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠶⠄\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠦⠄\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠔⠄\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠁⠄\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠃⠄\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠉⠄\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠙⠄\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠑⠄\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠋⠄\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠴⠄\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠂⠄\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠆⠄\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠒⠄\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠲⠄\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠢⠄\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠖⠄\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠶⠄\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠦⠄\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠔⠄\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠁⠄\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠃⠄\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠉⠄\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠙⠄\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠑⠄\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠋⠄\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠲\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠆⠄\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠒⠄\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠲⠄\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠢⠄\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠖⠄\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠶⠄\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠦⠄\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠔⠄\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠁⠄\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠗\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠗\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠙⠄\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠑⠄\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠋⠄\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠛\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠛\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠞\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠞\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠲⠄\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠢⠄\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠖⠄\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠶⠄\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠦⠄\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠔⠄\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠁⠄\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠃⠄\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠨⠫\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠨⠫\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠑⠄\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠋⠄\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠴⠄\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠂⠄\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠆⠄\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠒⠄\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠲⠄\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠢⠄\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠖⠄\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠶⠄\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠦⠄\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠔⠄\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠉\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠉\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠉⠄\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠙⠄\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠑⠄\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠋⠄\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠴⠄\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠂⠄\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠆⠄\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠒⠄\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠲⠄\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠢⠄\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠖⠄\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠶⠄\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠦⠄\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠔⠄\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠁⠄\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠃⠄\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠉⠄\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠙⠄\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠑⠄\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠋⠄\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠴⠄\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠂⠄\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠆⠄\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠒⠄\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠲⠄\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠢⠄\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠖⠄\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠶⠄\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠦⠄\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠔⠄\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠁⠄\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠃⠄\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠉⠄\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠙⠄\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠑⠄\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠋⠄\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠴⠄\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠂⠄\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠆⠄\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠒⠄\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠲⠄\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠢⠄\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠖⠄\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠶⠄\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠦⠄\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠔⠄\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠁⠄\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠃⠄\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠉⠄\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠙⠄\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠑⠄\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠋⠄\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠆⠄\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠒⠄\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠲⠄\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠢⠄\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠖⠄\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠶⠄\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠦⠄\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠔⠄\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠁⠄\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠃⠄\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠉⠄\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠙⠄\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠑⠄\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠋⠄\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠴⠄\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠂⠄\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠆⠄\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠒⠄\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠲⠄\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠢⠄\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠖⠄\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠶⠄\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠦⠄\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠔⠄\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠁⠄\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠃⠄\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠉⠄\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠙⠄\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠑⠄\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠋⠄\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠴⠄\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠂⠄\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠆⠄\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠒⠄\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠲⠄\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠢⠄\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠖⠄\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠶⠄\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠦⠄\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠔⠄\"}},\"key\":\"2B59\"}]\n,\n\"nemeth/symbols/math_harpoons.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠀\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠠⠕⠀\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠈⠕⠀\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠠⠕⠀\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠈⠕⠀\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠠⠕⠀\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠁⠄\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠃⠄\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠉⠄\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠙⠄\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠑⠄\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠋⠄\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠴⠄\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠂⠄\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠆⠄\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠒⠄\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠲⠄\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠢⠄\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠖⠄\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠶⠄\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠦⠄\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠔⠄\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠁⠄\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠃⠄\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠉⠄\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠙⠄\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠑⠄\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠋⠄\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠴⠄\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠂⠄\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠆⠄\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠒⠄\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠲⠄\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠢⠄\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠖⠄\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠶⠄\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠦⠄\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠔⠄\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠁⠄\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠃⠄\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠉⠄\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠙⠄\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠑⠄\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠋⠄\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠉⠄\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠙⠄\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠑⠄\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠋⠄\"}},\"key\":\"297F\"}]\n,\n\"nemeth/symbols/math_non_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠴⠋⠄\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠖⠄\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠶⠄\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠑⠄\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠋⠄\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠴⠄\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠂⠄\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠞\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠒⠄\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠢⠄\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠖⠄\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠶⠄\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠁⠄\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠠⠁\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠑⠄\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠆⠄\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠔⠄\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠁⠄\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠃⠄\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠂⠄\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠆⠄\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠒⠄\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠲⠄\"}},\"key\":\"2144\"}]\n,\n\"nemeth/symbols/math_symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨⠼\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠎\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠴\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠯\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠠\",\"defaultLibLouis\":\"⠠⠀\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨\",\"other\":\"⠲\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠒\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠆\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠀\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠅⠀\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠀\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠦\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⡘\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠸\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠼\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠫\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠢⠄\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠳\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠠⠎\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠦⠄\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠉\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠁⠄\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠃⠄\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠉⠄\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠗\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬⠤\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠨⠍\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠖⠄\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠦⠄\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠁⠄\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠃⠄\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠌\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠦⠄\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠔⠄\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠁⠄\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠃⠄\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠙⠄\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠳⠳\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠶⠄\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠠⠦\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠁⠄\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠃⠄\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠴\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠑⠄\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠋⠄\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠻\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠸⠻\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠔⠔\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠒⠄\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠶⠄\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠴⠄\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠂⠄\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠢⠄\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠖⠄\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠶⠄\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠦⠄\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠔⠄\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠁⠄\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠃⠄\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠖\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠙⠄\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠋⠄\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠴⠄\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠂⠄\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠆⠄\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠒⠄\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠲⠄\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠹\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠖\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠹\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠃⠄\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠉⠄\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠙⠄\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠑⠄\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠋⠄\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠴⠄\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠂⠄\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠆⠄\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠒⠄\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠲⠄\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠢⠄\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠖⠄\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠶⠄\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠦⠄\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠔⠄\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠁⠄\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠃⠄\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠉⠄\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠙⠄\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠑⠄\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠁⠄\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠃⠄\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠉⠄\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠙⠄\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠑⠄\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠁⠄\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠃⠄\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠉⠄\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠙⠄\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠑⠄\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠁⠄\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠃⠄\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠉⠄\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠙⠄\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠑⠄\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠯\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠂⠄\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠿\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠈⠿\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠴\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠖⠄\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠑⠀\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠁⠀\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠁⠀\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠢⠀\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠳⠀\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠋⠄\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠴⠄\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠎\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤⠬\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠲⠄\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠔⠄\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠁⠄\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠃⠄\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠉⠄\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠰⠆⠀\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠠⠿\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠨⠗⠻\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠳\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠇⠀\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠫⠇⠀\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮⠮\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠉⠻\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠆⠋⠄\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠴⠄\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠂⠄\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠪⠢⠔⠻\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠢⠔⠕⠻\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠠⠡⠀\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠌⠀\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠂⠀\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠶⠄\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠦⠄\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠔⠄\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠁⠄\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠃⠄\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠙⠄\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠑⠄\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠋⠄\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠴⠄\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠂⠄\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠆⠄\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠒⠄\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠲⠄\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠱⠈⠱⠀\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠖⠄\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠶⠄\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠦⠄\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠔⠄\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠁⠄\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠃⠄\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠉⠄\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠣⠠⠣⠀\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠑⠄\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠋⠄\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠴⠄\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠂⠄\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠆⠄\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠒⠄\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠲⠄\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠢⠄\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠖⠄\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠶⠄\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠦⠄\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠔⠄\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠁⠄\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠃⠄\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠉⠄\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠙⠄\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠑⠄\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠋⠄\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠅⠀\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠇⠀\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠇⠀\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠒⠄\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠱⠀\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠅⠀\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠨⠅⠀\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠌⠨⠅⠀\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠐⠅⠻⠀\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠨⠂⠻⠀\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠉⠄\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠣⠠⠣⠀\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠀\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠀\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠱⠀\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠱⠀\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠱⠀\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠈⠱⠀\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠈⠱⠀\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠂⠀\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠐⠅⠀\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠨⠂⠀\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠐⠅⠀\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠀\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠀\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠀\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠀\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠀\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠀\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠐⠅⠀\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠂⠀\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠀⠅⠱\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠀⠅⠱⠀\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠌⠨⠅⠀\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠌⠨⠅⠀\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠉⠄\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠙⠄\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠑⠄\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠋⠄\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠴⠄\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠂⠄\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠆⠄\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠒⠄\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠲⠄\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠻\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠌⠻\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠘⠨⠡⠻\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠼⠻\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠅⠻\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠤⠻\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠬⠻\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠤⠻\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠈⠡⠻\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠡⠻\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠆⠄\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠒⠄\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠲⠄\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠏⠀\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠖⠄\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠶⠄\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠦⠄\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠔⠄\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠁⠄\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠃⠄\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠉⠄\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠙⠄\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠑⠄\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠋⠄\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠴⠄\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠂⠄\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠆⠄\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠒⠄\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠲⠄\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠢⠄\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠖⠄\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠶⠄\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠦⠄\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠔⠄\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠁⠄\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠃⠄\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠉⠄\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠙⠄\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠋⠄\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠲⠄\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠖⠄\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠶⠄\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠦⠄\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠔⠄\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠁⠄\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠃⠄\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠉⠄\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠙⠄\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠑⠄\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠋⠄\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠴⠄\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠂⠄\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠆⠄\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠒⠄\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠲⠄\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠢⠄\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠖⠄\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠶⠄\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠦⠄\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠔⠄\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠁⠄\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠃⠄\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠐⠅⠀\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠨⠂⠀\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠑⠄\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠋⠄\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠴⠄\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠂⠄\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠆⠄\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠒⠄\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠲⠄\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠢⠄\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠖⠄\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠶⠄\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠦⠄\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠔⠄\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠁⠄\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠃⠄\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠉⠄\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠙⠄\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠄⠄⠄\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠄⠄⠄\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠰⠄⠄⠄\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠆⠄\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠒⠄\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠲⠄\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠢⠄\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠖⠄\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠶⠄\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠦⠄\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠔⠄\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠁⠄\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠃⠄\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠉⠄\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠙⠄\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠑⠄\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠋⠄\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠴⠄\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠆⠄\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠢⠄\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠖⠄\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠶⠄\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠴⠄\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠂⠄\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠆⠄\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠒⠄\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠲⠄\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠢⠄\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠖⠄\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠶⠄\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠴⠄\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠋⠄\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠂⠄\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠏\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠒⠄\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠲⠄\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠶⠄\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠦⠄\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠔⠄\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠁⠄\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠃⠄\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠉⠄\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠙⠄\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠑⠄\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠋⠄\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠴⠄\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠂⠄\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠆⠄\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠒⠄\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠲⠄\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠢⠄\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠖⠄\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠶⠄\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠦⠄\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠔⠄\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠁⠄\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠃⠄\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠉⠄\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠙⠄\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠑⠄\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠋⠄\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠴⠄\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠂⠄\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠆⠄\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠒⠄\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠲⠄\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠢⠄\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠃⠄\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠉⠄\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳⠳⠳\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠂⠄\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠆⠄\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠔⠄\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠁⠄\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠴⠄\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠂⠄\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠆⠄\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠢⠄\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠳⠻\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠇⠻\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠡⠻\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠏⠻\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠁⠄\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠃⠄\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠉⠄\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠑⠄\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠔⠔⠻\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠐⠅⠻\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠂⠻\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠆⠄\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠒⠄\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠲⠄\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠢⠄\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠖⠄\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠶⠄\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠦⠄\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠔⠄\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠁⠄\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠃⠄\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠉⠄\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠙⠄\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠑⠄\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠋⠄\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠴⠄\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠂⠄\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠆⠄\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠒⠄\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠲⠄\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠢⠄\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠖⠄\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠶⠄\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠉⠄\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠙⠄\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠑⠄\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠋⠄\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠴⠄\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠂⠄\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠆⠄\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠒⠄\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠲⠄\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠢⠄\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠖⠄\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠶⠄\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠦⠄\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠔⠄\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠃⠄\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠑⠄\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠋⠄\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠴⠄\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠂⠄\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠆⠄\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠒⠄\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠲⠄\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠢⠄\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠖⠄\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠶⠄\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠦⠄\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠔⠄\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠁⠄\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠃⠄\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠑⠄\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠋⠄\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠒⠄\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠲⠄\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠢⠄\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠖⠄\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠶⠄\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠦⠄\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠔⠄\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠁⠄\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠃⠄\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠉⠄\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠙⠄\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠑⠄\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠋⠄\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠴⠄\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠂⠄\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠆⠄\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠒⠄\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠲⠄\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠢⠄\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠖⠄\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠦⠄\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠔⠄\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠁⠄\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠃⠄\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠉⠄\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠙⠄\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠑⠄\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠋⠄\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠴⠄\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠂⠄\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠆⠄\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠒⠄\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠲⠄\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠢⠄\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠖⠄\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠶⠄\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠦⠄\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠔⠄\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠁⠄\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠃⠄\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠉⠄\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠙⠄\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠑⠄\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠋⠄\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠴⠄\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠂⠄\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠆⠄\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠒⠄\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠲⠄\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠢⠄\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠖⠄\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠶⠄\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠌⠻\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠔⠄\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠁⠄\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠃⠄\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠉⠄\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠙⠄\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠑⠄\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠋⠄\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠴⠄\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠂⠄\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠆⠄\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠒⠄\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠲⠄\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠢⠄\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠖⠄\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠶⠄\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠦⠄\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠔⠄\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠁⠄\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠃⠄\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠉⠄\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠙⠄\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠑⠄\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠋⠄\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠴⠄\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠂⠄\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠆⠄\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠒⠄\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠲⠄\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠢⠄\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠖⠄\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠶⠄\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠦⠄\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠔⠄\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠁⠄\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠃⠄\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠉⠄\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠙⠄\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠑⠄\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠋⠄\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠴⠄\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠂⠄\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠆⠄\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠒⠄\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠲⠄\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠢⠄\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠖⠄\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠶⠄\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠦⠄\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠔⠄\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠁⠄\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠃⠄\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠉⠄\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠙⠄\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠑⠄\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠋⠄\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠴⠄\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠂⠄\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠆⠄\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠒⠄\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠲⠄\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠢⠄\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠖⠄\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠶⠄\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠦⠄\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠔⠄\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠁⠄\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠃⠄\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠉⠄\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠙⠄\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠑⠄\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠋⠄\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠴⠄\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠂⠄\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠆⠄\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠒⠄\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠲⠄\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠢⠄\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠖⠄\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠶⠄\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠦⠄\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠔⠄\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠁⠄\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠃⠄\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠉⠄\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠙⠄\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠑⠄\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠋⠄\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠴⠄\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠂⠄\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠆⠄\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠒⠄\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠲⠄\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠢⠄\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠖⠄\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠶⠄\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠦⠄\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠔⠄\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠁⠄\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠃⠄\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠉⠄\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠙⠄\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠑⠄\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠋⠄\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠴⠄\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠂⠄\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠆⠄\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠒⠄\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠲⠄\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠢⠄\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠖⠄\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠶⠄\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠦⠄\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠔⠄\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠁⠄\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠃⠄\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠉⠄\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠙⠄\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠑⠄\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠱⠀\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠱⠀\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠨⠅⠀\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠨⠅⠀\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠨⠅⠀\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠈⠱⠀\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠈⠱⠀\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠨⠐⠅⠻⠀\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠨⠨⠐⠻⠀\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠙⠄\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠑⠄\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠋⠄\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠴⠄\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠂⠄\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠆⠄\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠒⠄\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠲⠄\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠢⠄\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠖⠄\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠶⠄\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠦⠄\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠔⠄\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠁⠄\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠃⠄\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠉⠄\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠙⠄\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠑⠄\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠋⠄\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠴⠄\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠂⠄\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠆⠄\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠒⠄\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠲⠄\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠢⠄\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠖⠄\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠶⠄\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠦⠄\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠔⠄\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠁⠄\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠃⠄\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠉⠄\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠙⠄\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠑⠄\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠋⠄\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠴⠄\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠂⠄\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠆⠄\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠒⠄\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠲⠄\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠢⠄\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠖⠄\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠶⠄\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠦⠄\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠔⠄\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠁⠄\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠃⠄\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠉⠄\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠙⠄\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠑⠄\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠋⠄\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠴⠄\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠂⠄\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠆⠄\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠒⠄\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠲⠄\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠢⠄\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠖⠄\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠶⠄\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠦⠄\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠔⠄\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠁⠄\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠃⠄\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠉⠄\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠙⠄\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠑⠄\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠋⠄\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠉⠄\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠴⠄\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠒⠄\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠲⠄\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠢⠄\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠖⠄\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠔⠄\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠴⠄\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠂⠄\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠆⠄\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠒⠄\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠲⠄\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠢⠄\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠖⠄\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠔⠄\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠁⠄\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠃⠄\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠉⠄\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠙⠄\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠑⠄\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠋⠄\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠴⠄\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠆⠄\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠲⠄\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠢⠄\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠖⠄\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠶⠄\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠦⠄\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠋⠄\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠴⠄\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠂⠄\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠆⠄\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠒⠄\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠲⠄\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠢⠄\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠖⠄\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠦⠄\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠔⠄\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠁⠄\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠃⠄\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠂⠄\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠆⠄\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠒⠄\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠲⠄\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠢⠄\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠖⠄\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠶⠄\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠁⠄\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠃⠄\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠉⠄\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠙⠄\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠑⠄\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠋⠄\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠁⠄\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠃⠄\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠉⠄\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠙⠄\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠑⠄\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠋⠄\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠆⠴⠄\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠉⠄\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠑⠄\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠲⠴⠄\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠉⠄\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠴⠄\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠂⠄\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠆⠄\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠲⠄\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠢⠄\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠖⠄\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠦⠄\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠙⠄\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠑⠄\"}},\"key\":\"FFEE\"}]\n,\n\"nemeth/symbols/math_whitespace.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠑⠄\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠋⠄\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠦⠄\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠔⠄\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠁⠄\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠃⠄\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠉⠄\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠙⠄\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠑⠄\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠠\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠁⠄\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠃⠄\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠑⠄\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠋⠄\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠋⠋⠄\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠔⠄\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠁⠄\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠃⠄\"}},\"key\":\"FFFB\"}]\n,\n\"nemeth/symbols/other_stars.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠦⠄\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠴⠢⠄\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠎\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠁⠄\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠃⠄\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠴⠢⠄\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠒⠄\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠲⠄\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠖⠄\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠶⠄\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠦⠄\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠃⠄\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠉⠄\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠴⠄\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠂⠄\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠆⠄\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠒⠄\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠲⠄\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠢⠄\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠖⠄\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠶⠄\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠦⠄\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠔⠄\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠁⠄\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠃⠄\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠉⠄\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠙⠄\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠑⠄\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠋⠄\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠴⠄\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠂⠄\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠆⠄\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠒⠄\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠲⠄\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠢⠄\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠖⠄\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠔⠄\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠁⠄\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠃⠄\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠉⠄\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠙⠄\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠑⠄\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠋⠄\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠴⠄\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠂⠄\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠆⠄\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠒⠄\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠲⠄\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠢⠄\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠖⠄\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠶⠄\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠦⠄\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠔⠄\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠁⠄\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠃⠄\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠉⠄\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠙⠄\"}},\"key\":\"274D\"}]\n,\n\"nemeth/units/energy.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠺\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠠⠺\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠠⠺\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠺⠓\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠚\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠝\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠁\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠧\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠨⠠⠺\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠨⠠⠺\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠛⠨⠠⠺\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"nemeth/units/length.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠍\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠉⠍\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠅⠍\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠋⠞\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠊⠝\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠊\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠽⠙\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠝⠲⠍⠸⠲\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]}]\n,\n\"nemeth/units/memory.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠃\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠃\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠃\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠃\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠃\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞⠃\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"nemeth/units/other.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠙⠕⠵\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠎⠟\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠓⠁\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"nemeth/units/speed.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠞\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠏⠓\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠗⠏⠍\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠍⠓\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"nemeth/units/temperature.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠋\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠉\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠅\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"nemeth/units/time.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠝⠎\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠎\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠎\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠎\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠓\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"nemeth/units/volume.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠃⠃⠇\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠥\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠋⠇⠸⠲⠀⠕⠵⠸⠲\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠛⠁⠇\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠏⠞\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠟⠞\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠃⠎⠏\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠎⠏\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠉\"}},\"key\":\"cc\",\"names\":[\"cc\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠅⠇\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠇\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠍⠇\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"nemeth/units/weight.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠃\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠞\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠕⠵\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"⠨⠍⠛\"}}},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠗\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠛\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠉⠛\"}},\"key\":\"mcg\",\"names\":[\"mg\",\"µg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠛\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/sre-node.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SRE = require(\"speech-rule-engine\");\nglobal.SRE = SRE;\nglobal.sre = Object.create(SRE);\nglobal.sre.Engine = {\n    isReady: function () {\n        return SRE.engineReady();\n    }\n};\n//# sourceMappingURL=sre-node.js.map"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/sre/sre_browser.js",
    "content": "// Copyright 2014-2019 Volker Sorge\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.makeIterator=function(a){var b=\"undefined\"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)};$jscomp.arrayFromIterator=function(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c};\n$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};\n$jscomp.getGlobal=function(a){a=[\"object\"==typeof globalThis&&globalThis,a,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error(\"Cannot find global object\");};$jscomp.global=$jscomp.getGlobal(this);$jscomp.IS_SYMBOL_NATIVE=\"function\"===typeof Symbol&&\"symbol\"===typeof Symbol(\"x\");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};\n$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX=\"$jscp$\";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};$jscomp.polyfill=function(a,b,c,d){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,d):$jscomp.polyfillUnisolated(a,b,c,d))};\n$jscomp.polyfillUnisolated=function(a,b,c,d){c=$jscomp.global;a=a.split(\".\");for(d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))return;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};\n$jscomp.polyfillIsolated=function(a,b,c,d){var e=a.split(\".\");a=1===e.length;d=e[0];d=!a&&d in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<e.length-1;f++){var g=e[f];if(!(g in d))return;d=d[g]}e=e[e.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&\"es6\"===c?d[e]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,e,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[e]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(e):$jscomp.POLYFILL_PREFIX+e,e=\n$jscomp.propertyToPolyfillSymbol[e],$jscomp.defineProperty(d,e,{configurable:!0,writable:!0,value:b})))};$jscomp.initSymbol=function(){};\n$jscomp.polyfill(\"Symbol\",function(a){if(a)return a;var b=function(e,f){this.$jscomp$symbol$id_=e;$jscomp.defineProperty(this,\"description\",{configurable:!0,writable:!0,value:f})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c=0,d=function(e){if(this instanceof d)throw new TypeError(\"Symbol is not a constructor\");return new b(\"jscomp_symbol_\"+(e||\"\")+\"_\"+c++,e)};return d},\"es6\",\"es3\");$jscomp.initSymbolIterator=function(){};\n$jscomp.polyfill(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;c<b.length;c++){var d=$jscomp.global[b[c]];\"function\"===typeof d&&\"function\"!=typeof d.prototype[a]&&$jscomp.defineProperty(d.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}})}return a},\"es6\",\n\"es3\");$jscomp.initSymbolAsyncIterator=function(){};$jscomp.iteratorPrototype=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,b){a instanceof String&&(a+=\"\");var c=0,d={next:function(){if(c<a.length){var e=c++;return{value:b(e,a[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d};\n$jscomp.polyfill(\"Array.prototype.keys\",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},\"es6\",\"es3\");$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.polyfill(\"Array.prototype.find\",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},\"es6\",\"es3\");\n$jscomp.checkStringArgs=function(a,b,c){if(null==a)throw new TypeError(\"The 'this' value for String.prototype.\"+c+\" must not be null or undefined\");if(b instanceof RegExp)throw new TypeError(\"First argument to String.prototype.\"+c+\" must not be a regular expression\");return a+\"\"};\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(b){var c=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>b||1342177279<b)throw new RangeError(\"Invalid count value\");b|=0;for(var d=\"\";b;)if(b&1&&(d+=c),b>>>=1)c+=c;return d}},\"es6\",\"es3\");var COMPILED=!0,goog=goog||{};goog.global=this||self;\ngoog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.provide cannot be used within a module.\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector(\"script[nonce]\"))&&(a=a.nonce||a.getAttribute(\"nonce\"))&&goog.NONCE_PATTERN_.test(a)?a:\"\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(\"string\"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInGoogModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\");\nif(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\"es6\",GOOG:\"goog\"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};\ngoog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\"function\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\"goog.declareModuleId may only be called from within an ES6 module\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\"goog.declareModuleId may only be called once per module.\");if(a in goog.loadedModules_)throw Error('Module with namespace \"'+a+'\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\"function\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \"'+\na+'\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={\"goog.module\":!0});\ngoog.getObjectByName=function(a,b){a=a.split(\".\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.globalize=function(a,b){b=b||goog.global;for(var c in a)b[c]=a[c]};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\"\";goog.nullFunction=function(){};\ngoog.abstractMethod=function(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\"detect\";\ngoog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRANSPILE_TO_LANGUAGE=\"\";goog.TRANSPILER=\"transpile.js\";goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval('\"use strict\";let x = 1; function f() { return typeof x; };f() == \"number\";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return\"(function(){\"+a+\"\\n;})();\\n\"};\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\"\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};if(goog.isFunction(a))var c=a.call(void 0,{});else if(\"string\"===typeof a)goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error(\"Invalid module definition\");var d=goog.moduleLoaderState_.moduleName;if(\"string\"===typeof d&&d)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,\nc):goog.SEAL_MODULE_EXPORTS&&Object.seal&&\"object\"==typeof c&&null!=c&&Object.seal(c),goog.loadedModules_[d]={exports:c,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \"'+d+'\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split(\"/\");for(var b=0;b<a.length;)\".\"==a[b]?a.splice(b,1):b&&\"..\"==a[b]&&a[b-1]&&\"..\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\"/\")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\"get\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};\ngoog.transpile_=function(a,b,c){var d=goog.global.$jscomp;d||(goog.global.$jscomp=d={});var e=d.transpile;if(!e){var f=goog.basePath+goog.TRANSPILER,g=goog.loadFileSync_(f);if(g){(function(){(0,eval)(g+\"\\n//# sourceURL=\"+f)}).call(goog.global);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the \"transpile\" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=\ngoog.global.$gwtExport.$jscomp.transpile;d=goog.global.$jscomp;e=d.transpile}}e||(e=d.transpile=function(h,k){goog.logToConsole_(k+\" requires transpilation but no transpiler was found.\");return h});return e(a,b,c)};\ngoog.typeOf=function(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return\"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return\"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return\"function\"}else return\"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return\"object\";return b};goog.isArray=function(a){return Array.isArray(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&\"function\"==typeof a.getFullYear};goog.isFunction=function(a){return\"function\"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return\"object\"==b&&null!=a||\"function\"==b};\ngoog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\"removeAttribute\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_=\"closure_uid_\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;\ngoog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};\ngoog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.eval){if(null==goog.evalWorks_)try{goog.global.eval(\"\"),goog.evalWorks_=!0}catch(d){goog.evalWorks_=!1}if(goog.evalWorks_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"script\");c.type=\"text/javascript\";c.defer=!1;c.appendChild(b.createTextNode(a));b.head.appendChild(c);b.head.removeChild(c)}}else throw Error(\"goog.globalEval not available\");};goog.evalWorks_=null;\ngoog.getCssName=function(a,b){if(\".\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \".\". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split(\"-\");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join(\"-\")};d=goog.cssNameMapping_?\"BY_WHOLE\"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+\"-\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\"&lt;\"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};\ngoog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.scope is not supported within a module.\");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\"cannot instantiate an interface (no constructor defined).\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\"write\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\"complete\"!=a.readyState:\"loading\"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&\"string\"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;\na=b?[b]:a.getElementsByTagName(\"SCRIPT\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\"?\");d=-1==d?c.length:d;if(\"base.js\"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null;this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(g,h){e?d[g]=!0:h()?(c=g,d[g]=!1):e=d[g]=!0}function b(g){try{return!!eval(g)}catch(h){return!1}}\nvar c=\"es3\",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\"\";a(\"es5\",function(){return b(\"[1,].length==1\")});a(\"es6\",function(){return f.match(/Edge\\/(\\d+)(\\.\\d)*/i)?!1:b('(()=>{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\"Unregonized namespace: \"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=\n0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\"deps.js\"),\"deps.js\",[],[],{},!1));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=\nfunction(a){this.factory_=a},goog.DebugLoader_.prototype.load_=function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error(\"Bad dependency path or symbol: \"+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else throw a=\"goog.require could not find: \"+\na,goog.logToConsole_(a),Error(a);},goog.DebugLoader_.prototype.loadDeps_=function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\"Cannot call pause after the call to load.\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\"Double call to loaded.\");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);\nreturn g},setModuleState:function(g){goog.moduleLoaderState_={type:g,moduleName:\"\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||\"\"})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error(\"Cannot register with defer after the call to load.\");a.defer_(d,\ng)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);\nbreak}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=\nfunction(a){return a in this.idToPath_?this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,\nb,c){},goog.LoadController.prototype.setModuleState=function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\"://\");0<=b&&(a=a.substring(b+3),b=\na.indexOf(\"/\"),0<=b&&(a=a.substring(b+1)));return a},goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=\nfunction(a){delete goog.Dependency.callbackMap_[a]},goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\"Callback key \"+a+\" does not exist (was base.js loaded more than once?).\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=\ngoog.global.document;if(\"complete\"==b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \"'+this.path+'\" after document load');}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var c=goog.Dependency.registerCallback_(function(f){goog.DebugLoader_.IS_OLD_IE_&&\"complete\"!=f.readyState||(goog.Dependency.unregisterCallback_(c),a.loaded())}),d=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\n' nonce=\"'+goog.getScriptNonce()+'\"':\"\";d='<script src=\"'+this.path+'\" '+(goog.DebugLoader_.IS_OLD_IE_?\"onreadystatechange\":\"onload\")+\"=\\\"goog.Dependency.callback_('\"+c+'\\', this)\" type=\"text/javascript\" '+(goog.Dependency.defer_?\"defer\":\"\")+d+\">\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement(\"script\");e.defer=goog.Dependency.defer_;e.async=!1;e.type=\"text/javascript\";(d=goog.getScriptNonce())&&e.setAttribute(\"nonce\",d);goog.DebugLoader_.IS_OLD_IE_?\n(a.pause(),e.onreadystatechange=function(){if(\"loaded\"==e.readyState||\"complete\"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){l=m?'<script type=\"module\" crossorigin>'+m+\"\\x3c/script>\":'<script type=\"module\" crossorigin src=\"'+l+'\">\\x3c/script>';d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement(\"script\");n.defer=!0;n.async=!1;n.type=\n\"module\";n.setAttribute(\"crossorigin\",!0);var p=goog.getScriptNonce();p&&n.setAttribute(\"nonce\",p);m?n.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=\n!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\"'+g+'\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \"'+this.path+'\"; goog.Dependency.callback_(\"'+h+'\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);\na.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\"'+k+'\")')}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\"noModule\"in goog.global.document.createElement(\"script\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=\ngoog.loadFileSync_(e.path);e.contents_&&(e.contents_=e.transform(e.contents_),e.contents_&&(e.contents_+=\"\\n//# sourceURL=\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var m=e.contents_;e.contents_=null;goog.globalEval(m);if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),\nn)});a.loaded()}}function d(){var m=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),p='<script type=\"text/javascript\">'+goog.protectScriptTag_('goog.Dependency.callback_(\"'+n+'\");')+\"\\x3c/script>\";m.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(p):p)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\"\",this.contents_)?(this.contents_=null,a.loaded()):a.pause();\nelse{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length,h=g&&goog.DebugLoader_.IS_OLD_IE_;g=goog.Dependency.defer_&&(g||goog.isDocumentLoading_());if(h||g)a.defer(function(){c()});else{var k=goog.global.document;h=goog.inHtmlDocument_()&&\"ActiveXObject\"in goog.global;if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!h){goog.Dependency.defer_=!0;a.pause();var l=k.onreadystatechange;k.onreadystatechange=function(){\"interactive\"==k.readyState&&(k.onreadystatechange=\nl,c(),a.resume());goog.isFunction(l)&&l.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.TranspiledDependency=function(a,b,c,d,e,f){goog.TransformedDependency.call(this,a,b,c,d,e);this.transpiler=f},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(a){return this.transpiler.transpile(a,this.getPathName())},\ngoog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,c,d,e,f,g){goog.TransformedDependency.call(this,a,b,c,d,e);this.needsTranspile_=f;this.transpiler_=g},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=\nfunction(a){this.needsTranspile_&&(a=this.transpiler_.transpile(a,this.getPathName()));return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?\"goog.loadModule(\"+goog.global.JSON.stringify(a+\"\\n//# sourceURL=\"+this.path+\"\\n\")+\");\":'goog.loadModule(function(exports) {\"use strict\";'+a+\"\\n;return exports});\\n//# sourceURL=\"+this.path+\"\\n\"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(a,b,c,\nd){b=b||[];a=a.replace(/\\\\/g,\"/\");var e=goog.normalizePath_(goog.basePath+a);d&&\"boolean\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d,goog.transpiler_.needsTranspile(d.lang||\"es3\",d.module));this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(a){this.transpiler=a},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e,f){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,\nb,c,d,e,f,this.transpiler):f?new goog.TranspiledDependency(a,b,c,d,e,this.transpiler):e.module==goog.ModuleType.ES6?\"never\"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=\ngoog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#base\"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});goog.TRUSTED_TYPES_POLICY_NAME=\"\";goog.identity_=function(a){return a};goog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};var sre={Variables:function(){}};sre.Variables.VERSION=\"3.1.1\";sre.Variables.LOCALES=[\"de\",\"en\",\"es\",\"fr\",\"nemeth\"];sre.Variables.mathjaxVersion=\"3.0.0\";sre.Variables.url=\"https://cdn.jsdelivr.net/npm/speech-rule-engine@\"+sre.Variables.VERSION+\"/lib/mathmaps\";sre.Variables.WGXpath=\"https://cdn.jsdelivr.net/npm/wicked-good-xpath@1.3.0/dist/wgxpath.install.js\";sre.SystemExternal=function(){};sre.SystemExternal.require=function(a){return\"undefined\"!==typeof process&&\"undefined\"!==typeof require?require(a):null};sre.SystemExternal.documentSupported=function(){return\"undefined\"!=typeof document};sre.SystemExternal.process=sre.SystemExternal.require(\"process\");sre.SystemExternal.xmldom=sre.SystemExternal.documentSupported()?window:sre.SystemExternal.require(\"xmldom-sre\");\nsre.SystemExternal.document=sre.SystemExternal.documentSupported()?document:(new sre.SystemExternal.xmldom.DOMImplementation).createDocument(\"\",\"\",0);sre.SystemExternal.xpath=sre.SystemExternal.documentSupported()?document:function(){var a={document:{},XPathResult:{}};sre.SystemExternal.require(\"wicked-good-xpath\").install(a);a.document.XPathResult=a.XPathResult;return a.document}();sre.SystemExternal.commander=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require(\"commander\");\nsre.SystemExternal.fs=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require(\"fs\");sre.SystemExternal.url=sre.Variables.url;sre.SystemExternal.jsonPath=function(){return(sre.SystemExternal.process&&\"undefined\"!==typeof global?sre.SystemExternal.process.env.SRE_JSON_PATH||global.SRE_JSON_PATH||sre.SystemExternal.process.cwd():sre.SystemExternal.url)+\"/\"}();sre.SystemExternal.WGXpath=sre.Variables.WGXpath;sre.SystemExternal.wgxpath=null;sre.BrowserUtil={};sre.BrowserUtil.detectIE=function(){if(!(\"undefined\"!==typeof window&&\"ActiveXObject\"in window&&\"clipboardData\"in window))return!1;sre.BrowserUtil.loadMapsForIE_();sre.BrowserUtil.loadWGXpath_();return!0};sre.BrowserUtil.detectEdge=function(){if(!(\"undefined\"!==typeof window&&\"MSGestureEvent\"in window&&\"chrome\"in window&&null==window.chrome.loadTimes))return!1;document.evaluate=null;sre.BrowserUtil.loadWGXpath_(!0);return!0};sre.BrowserUtil.mapsForIE=null;\nsre.BrowserUtil.loadWGXpath_=function(a){sre.BrowserUtil.loadScript(sre.SystemExternal.WGXpath);sre.BrowserUtil.installWGXpath_(a)};\nsre.BrowserUtil.installWGXpath_=function(a,b){var c=b||1;\"undefined\"===typeof wgxpath&&10>c?setTimeout(function(){sre.BrowserUtil.installWGXpath_(a,c++)},200):10<=c||(sre.SystemExternal.wgxpath=wgxpath,a?sre.SystemExternal.wgxpath.install({document:document}):sre.SystemExternal.wgxpath.install(),sre.XpathUtil.xpathEvaluate=document.evaluate,sre.XpathUtil.xpathResult=XPathResult,sre.XpathUtil.createNSResolver=document.createNSResolver)};\nsre.BrowserUtil.loadMapsForIE_=function(){sre.BrowserUtil.loadScript(sre.SystemExternal.jsonPath+\"mathmaps_ie.js\")};sre.BrowserUtil.loadScript=function(a){var b=sre.SystemExternal.document.createElement(\"script\");b.type=\"text/javascript\";b.src=a;sre.SystemExternal.document.head?sre.SystemExternal.document.head.appendChild(b):sre.SystemExternal.document.body.appendChild(b)};sre.DynamicProperties=function(a,b){this.properties_=a;this.order_=b||Object.keys(a)};sre.DynamicProperties.prototype.getProperties=function(){return this.properties_};sre.DynamicProperties.prototype.getOrder=function(){return this.order_};sre.DynamicProperties.prototype.getAxes=function(){return this.order_};sre.DynamicProperties.prototype.getProperty=function(a){return this.properties_[a]};sre.DynamicProperties.prototype.updateProperties=function(a){this.properties_=a};\nsre.DynamicProperties.prototype.allProperties=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getProperty(b).slice())},this));return a};sre.DynamicProperties.prototype.toString=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(b+\": \"+this.getProperty(b).toString())},this));return a.join(\"\\n\")};\nsre.DynamicCstr=function(a,b){this.components_=a;var c={},d;for(d in a){var e=a[d];c[d]=[e];sre.DynamicCstr.Values_.getInstance().add(d,e)}sre.DynamicProperties.call(this,c,b)};goog.inherits(sre.DynamicCstr,sre.DynamicProperties);sre.DynamicCstr.prototype.getComponents=function(){return this.components_};sre.DynamicCstr.prototype.getValue=function(a){return this.components_[a]};\nsre.DynamicCstr.prototype.getValues=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getValue(b))},this));return a};sre.DynamicCstr.prototype.allProperties=function(){for(var a=sre.DynamicCstr.superClass_.allProperties.call(this),b=0,c,d;c=a[b],d=this.order_[b];b++)d=this.getValue(d),-1===c.indexOf(d)&&c.unshift(d);return a};sre.DynamicCstr.prototype.toString=function(){return this.getValues().join(\".\")};\nsre.DynamicCstr.prototype.equal=function(a){var b=a.getAxes();if(this.order_.length!==b.length)return!1;for(var c=0,d;d=b[c];c++){var e=this.getValue(d);if(!e||a.getValue(d)!==e)return!1}return!0};sre.DynamicCstr.Axis={DOMAIN:\"domain\",STYLE:\"style\",LOCALE:\"locale\",TOPIC:\"topic\",MODALITY:\"modality\"};sre.DynamicCstr.Values_=function(){this.axisToValues=sre.DynamicCstr.Values_.makeAxisValueObject_()};goog.addSingletonGetter(sre.DynamicCstr.Values_);\nsre.DynamicCstr.Values_.prototype.add=function(a,b){this.axisToValues[a][b]=!0};sre.DynamicCstr.Values_.prototype.get=function(){var a={},b=sre.DynamicCstr.Values_.getInstance().axisToValues,c;for(c in b)a[c]=Object.keys(b[c]);return a};sre.DynamicCstr.Values_.makeAxisValueObject_=function(){var a={},b;for(b in sre.DynamicCstr.Axis)a[sre.DynamicCstr.Axis[b]]={};return a};sre.DynamicCstr.getAxisValues=function(){return sre.DynamicCstr.Values_.getInstance().get()};\nsre.DynamicCstr.DEFAULT_ORDER=[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE,sre.DynamicCstr.Axis.TOPIC];sre.DynamicCstr.DEFAULT_VALUE=\"default\";sre.DynamicCstr.DEFAULT_VALUES={};sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]=\"en\";sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]=sre.DynamicCstr.DEFAULT_VALUE;\nsre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.TOPIC]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]=\"speech\";sre.DynamicCstr.Parser=function(a){this.order_=a};sre.DynamicCstr.Parser.prototype.parse=function(a){a=a.split(\".\");var b={};if(a.length>this.order_.length)throw Error(\"Invalid dynamic constraint: \"+b);for(var c=0,d;d=this.order_[c],a.length;c++){var e=a.shift();b[d]=e}return new sre.DynamicCstr(b,this.order_.slice(0,c))};\nsre.DynamicCstr.Comparator=function(){};sre.DynamicCstr.Comparator.prototype.getReference=function(){};sre.DynamicCstr.Comparator.prototype.setReference=function(a,b){};sre.DynamicCstr.Comparator.prototype.match=function(a){};sre.DynamicCstr.Comparator.prototype.compare=function(a,b){};sre.DynamicCstr.DefaultComparator=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};\nsre.DynamicCstr.DefaultComparator.prototype.getReference=function(){return this.reference_};sre.DynamicCstr.DefaultComparator.prototype.setReference=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};\nsre.DynamicCstr.DefaultComparator.prototype.match=function(a){var b=a.getAxes();return b.length===this.reference_.getAxes().length&&b.every(goog.bind(function(c){var d=a.getValue(c);return d===this.reference_.getValue(c)||-1!==this.fallback_.getProperty(c).indexOf(d)},this))};\nsre.DynamicCstr.DefaultComparator.prototype.compare=function(a,b){for(var c=!1,d=0,e;e=this.order_[d];d++){var f=a.getValue(e),g=b.getValue(e);if(!c){var h=this.reference_.getValue(e);if(h===f&&h!==g)return-1;if(h===g&&h!==f)return 1;if(h===f&&h===g)continue;h!==f&&h!==g&&(c=!0)}e=this.fallback_.getProperty(e);f=e.indexOf(f);g=e.indexOf(g);if(f<g)return-1;if(g<f)return 1}return 0};sre.DynamicCstr.DefaultComparator.prototype.toString=function(){return this.reference_.toString()+\"\\n\"+this.fallback_.toString()};\nsre.DynamicProperties.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicProperties(c)};sre.DynamicCstr.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicCstr(c)};\nsre.DynamicCstr.defaultCstr=function(){return sre.DynamicCstr.create.apply(null,sre.DynamicCstr.DEFAULT_ORDER.map(function(a){return sre.DynamicCstr.DEFAULT_VALUES[a]}))};sre.DynamicCstr.validOrder=function(a){var b=sre.DynamicCstr.DEFAULT_ORDER.slice();return a.every(function(c){c=b.indexOf(c);return-1!==c&&b.splice(c,1)})};sre.Engine=function(){this.evaluator=sre.Engine.defaultEvaluator;this.parser=this.defaultParser=new sre.DynamicCstr.Parser(sre.DynamicCstr.DEFAULT_ORDER);this.parsers={};this.dynamicCstr=sre.DynamicCstr.defaultCstr();this.comparator=null;this.comparators={};this.domain=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN];this.style=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE];this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];\nthis.walker=\"Table\";this.mode=sre.Engine.Mode.SYNC;this.speech=sre.Engine.Speech.NONE;this.structure=!1;this.ruleSets=[];this.cache=!0;this.markup=sre.Engine.Markup.NONE;this.isEdge=this.isIE=this.strict=!1;this.rate=\"100\";this.pprint=!1;this.setupTests_=[];this.config=!1};goog.addSingletonGetter(sre.Engine);sre.Engine.personalityProps={PITCH:\"pitch\",RATE:\"rate\",VOLUME:\"volume\",PAUSE:\"pause\",JOIN:\"join\"};sre.Engine.Mode={SYNC:\"sync\",ASYNC:\"async\",HTTP:\"http\"};\nsre.Engine.Speech={NONE:\"none\",SHALLOW:\"shallow\",DEEP:\"deep\"};sre.Engine.Markup={NONE:\"none\",PUNCTUATION:\"punctuation\",SSML:\"ssml\",SSML_STEP:\"ssml_step\",ACSS:\"acss\",SABLE:\"sable\",VOICEXML:\"voicexml\"};sre.Engine.registerTest=function(a){sre.Engine.getInstance().setupTests_.push(a)};sre.Engine.isReady=function(){return sre.Engine.getInstance().setupTests_.every(function(a){return a()})};sre.Engine.prototype.setupBrowsers=function(){this.isIE=sre.BrowserUtil.detectIE();this.isEdge=sre.BrowserUtil.detectEdge()};\nsre.Engine.prototype.getAxisValues=function(){return sre.DynamicCstr.getAxisValues()};sre.Engine.defaultEvaluator=function(a,b){return a};sre.Engine.prototype.getRate=function(){var a=parseInt(this.rate,10);return isNaN(a)?100:a};sre.Engine.Error=function(a){Error.call(this);this.message=a||\"\";this.name=\"SRE Error\"};goog.inherits(sre.Engine.Error,Error);sre.Engine.BINARY_FEATURES=[\"strict\",\"cache\",\"structure\",\"pprint\"];sre.Engine.STRING_FEATURES=\"markup style domain speech walker locale modality rate\".split(\" \");\nsre.Engine.prototype.setDynamicCstr=function(a){if(a)for(var b=Object.keys(a),c=0;c<b.length;c++){var d=b[c];-1!==sre.DynamicCstr.DEFAULT_ORDER.indexOf(d)&&(this[d]=a[d])}sre.Engine.DOMAIN_TO_STYLES[this.domain]=this.style;a=[this.locale,this.modality,this.domain,this.style].join(\".\");b=sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],\n[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]);c=this.comparators[this.domain];this.parser=(d=this.parsers[this.domain])?d:this.defaultParser;this.dynamicCstr=this.parser.parse(a);this.dynamicCstr.updateProperties(b.getProperties());this.comparator=c?c():new sre.DynamicCstr.DefaultComparator(this.dynamicCstr)};sre.Engine.DOMAIN_TO_STYLES={mathspeak:\"default\",clearspeak:\"default\"};sre.BaseUtil={};sre.BaseUtil.removeEmpty=function(a){return a.filter(function(b){return b})};sre.BaseUtil.interleaveLists=function(a,b){for(var c=[];a.length||b.length;)a.length&&c.push(a.shift()),b.length&&c.push(b.shift());return c};sre.BaseUtil.setdifference=function(a,b){return a?b?a.filter(function(c){return 0>b.indexOf(c)}):a:[]};sre.BaseUtil.union=function(a,b){return a&&b?a.concat(sre.BaseUtil.setdifference(b,a)):a||b||[]};sre.BaseUtil.makePath=function(a){return a.match(\"/$\")?a:a+\"/\"};sre.Debugger=function(){this.isActive_=!1;this.outputFunction_=console.info;this.stream_=null};goog.addSingletonGetter(sre.Debugger);sre.Debugger.prototype.init=function(a){a&&this.startDebugFile_(a);this.isActive_=!0};\nsre.Debugger.prototype.startDebugFile_=function(a){this.stream_=sre.SystemExternal.fs.createWriteStream(a);this.outputFunction_=goog.bind(function(b){var c=Array.prototype.slice.call(arguments,0);this.stream_.write(c.join(\" \"));this.stream_.write(\"\\n\")},this);this.stream_.on(\"error\",goog.bind(function(b){console.info(\"Invalid log file. Debug information sent to console.\");this.outputFunction_=console.info},this));this.stream_.on(\"finish\",function(){console.info(\"Finalizing debug file.\")})};\nsre.Debugger.prototype.output_=function(a){this.outputFunction_.apply(console.info===this.outputFunction_?console:this.outputFunction_,[\"Speech Rule Engine Debugger:\"].concat(a))};sre.Debugger.prototype.output=function(a){this.isActive_&&this.output_(Array.prototype.slice.call(arguments,0))};sre.Debugger.prototype.generateOutput=function(a){this.isActive_&&this.output_(a.apply(a,[]))};sre.Debugger.prototype.exit=function(a){this.isActive_&&this.stream_&&this.stream_.end(\"\",\"\",a||function(){})};sre.Grammar=function(){this.parameters_={};this.corrections_={};this.preprocessors_={};this.stateStack_=[];this.currentFlags={}};goog.addSingletonGetter(sre.Grammar);sre.Grammar.ATTRIBUTE=\"grammar\";sre.Grammar.prototype.clear=function(){this.parameters_={};this.stateStack_=[]};sre.Grammar.prototype.setParameter=function(a,b){var c=this.parameters_[a];b?this.parameters_[a]=b:delete this.parameters_[a];return c};sre.Grammar.prototype.getParameter=function(a){return this.parameters_[a]};\nsre.Grammar.prototype.setCorrection=function(a,b){this.corrections_[a]=b};sre.Grammar.prototype.setPreprocessor=function(a,b){this.preprocessors_[a]=b};sre.Grammar.prototype.getCorrection=function(a){return this.corrections_[a]};sre.Grammar.prototype.getState=function(){var a=[],b;for(b in this.parameters_){var c=this.parameters_[b];a.push(\"string\"===typeof c?b+\":\"+c:b)}return a.join(\" \")};sre.Grammar.prototype.pushState=function(a){for(var b in a)a[b]=this.setParameter(b,a[b]);this.stateStack_.push(a)};\nsre.Grammar.prototype.popState=function(){var a=this.stateStack_.pop(),b;for(b in a)this.setParameter(b,a[b])};sre.Grammar.prototype.setAttribute=function(a){if(a&&a.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE){var b=this.getState();b&&a.setAttribute(sre.Grammar.ATTRIBUTE,b)}};sre.Grammar.prototype.preprocess=function(a){return this.runProcessors_(a,this.preprocessors_)};sre.Grammar.prototype.correct=function(a){return this.runProcessors_(a,this.corrections_)};\nsre.Grammar.prototype.runProcessors_=function(a,b){for(var c in this.parameters_){var d=b[c];if(d){var e=this.parameters_[c];a=!0===e?d(a):d(a,e)}}return a};sre.Grammar.translateString_=function(a){a=sre.Grammar.prepareUnit_(a);var b=sre.Engine.getInstance();a=b.evaluator(a,b.dynamicCstr)||a;return sre.Grammar.cleanUnit_(a)};sre.Grammar.prepareUnit_=function(a){var b=a.match(/:unit$/);return b?a.slice(0,b.index).replace(/\\s+/g,\" \")+a.slice(b.index):a};\nsre.Grammar.cleanUnit_=function(a){return a.match(/:unit$/)?(sre.Grammar.getInstance().setParameter(\"plural\",!1),a.replace(/:unit$/,\"\")):a};\nsre.Grammar.prototype.apply=function(a,b){this.currentFlags=b||{};a=this.currentFlags.adjust||this.currentFlags.preprocess?sre.Grammar.getInstance().preprocess(a):a;if(this.parameters_.translate||this.currentFlags.translate)a=sre.Grammar.translateString_(a);a=this.currentFlags.adjust||this.currentFlags.correct?sre.Grammar.getInstance().correct(a):a;this.currentFlags={};return a};\nsre.Grammar.parseState=function(a){var b={};a=a.split(\" \");for(var c=0,d=a.length;c<d;c++){var e=a[c].split(\":\"),f=e[1];b[e[0]]=f?f:!0}return b};sre.Grammar.parseInput=function(a){var b={};a=a.split(\":\");for(var c=0,d=a.length;c<d;c++){var e=a[c].split(\"=\"),f=e[0].trim();e[1]?b[f]=e[1].trim():f.match(/^!/)?b[f.slice(1)]=!1:b[f]=!0}return b};sre.Grammar.correctFont_=function(a,b){if(!b||!a)return a;b=sre.Messages.MS_FUNC.FONT_REGEXP(sre.Locale.localFont(b));return a.replace(b,\"\")};\nsre.Grammar.addAnnotation_=function(a,b){return a+\":\"+b};sre.Grammar.noTranslateText_=function(a){a.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+$\"))&&(sre.Grammar.getInstance().currentFlags.translate=!1);return a};sre.Grammar.getInstance().setCorrection(\"ignoreFont\",sre.Grammar.correctFont_);sre.Grammar.getInstance().setPreprocessor(\"annotation\",sre.Grammar.addAnnotation_);sre.Grammar.getInstance().setPreprocessor(\"noTranslateText\",sre.Grammar.noTranslateText_);\nsre.Grammar.getInstance().setCorrection(\"ignoreCaps\",sre.Grammar.correctFont_);sre.XpathUtil={};sre.XpathUtil.xpathSupported=function(){return\"undefined\"==typeof XPathResult?!1:!0};sre.XpathUtil.currentDocument=null;sre.XpathUtil.xpathEvaluate=sre.XpathUtil.xpathSupported()?document.evaluate:sre.SystemExternal.xpath.evaluate;sre.XpathUtil.xpathResult=sre.XpathUtil.xpathSupported()?XPathResult:sre.SystemExternal.xpath.XPathResult;sre.XpathUtil.createNSResolver=sre.XpathUtil.xpathSupported()?document.createNSResolver:sre.SystemExternal.xpath.createNSResolver;\nsre.XpathUtil.nameSpaces_={xhtml:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",mml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};sre.XpathUtil.resolveNameSpace=function(a){return sre.XpathUtil.nameSpaces_[a]||null};sre.XpathUtil.resolver_=function(){this.lookupNamespaceURI=sre.XpathUtil.resolveNameSpace};\nsre.XpathUtil.evaluateXpath_=function(a,b,c){var d=sre.Engine.getInstance();return d.mode!==sre.Engine.Mode.HTTP||d.isIE||d.isEdge?sre.XpathUtil.xpathEvaluate(a,b,new sre.XpathUtil.resolver_,c,null):sre.XpathUtil.currentDocument.evaluate(a,b,sre.XpathUtil.resolveNameSpace,c,null)};sre.XpathUtil.evalXPath=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.ORDERED_NODE_ITERATOR_TYPE)}catch(d){return[]}a=[];for(b=c.iterateNext();b;b=c.iterateNext())a.push(b);return a};\nsre.XpathUtil.getLeafNodes=function(a){return sre.XpathUtil.evalXPath(\".//*[count(*)=0]\",a)};sre.XpathUtil.evaluateBoolean=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.BOOLEAN_TYPE)}catch(d){return!1}return c.booleanValue};sre.XpathUtil.evaluateString=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.STRING_TYPE)}catch(d){return\"\"}return c.stringValue};sre.DomUtil={};sre.DomUtil.toArray=function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b};sre.DomUtil.trimInput_=function(a){a=a.replace(/&nbsp;/g,\"\\u00a0\");return a.replace(/>[ \\f\\n\\r\\t\\v\\u200b]+</g,\"><\").trim()};sre.DomUtil.XML_ENTITIES={\"&lt;\":!0,\"&gt;\":!0,\"&amp;\":!0,\"&quot;\":!0,\"&apos;\":!0};\nsre.DomUtil.parseInput=function(a,b){b=b||sre.Engine.Error;var c=new sre.SystemExternal.xmldom.DOMParser;a=sre.DomUtil.trimInput_(a);var d=!!a.match(/&(?!lt|gt|amp|quot|apos)\\w+;/g);if(!a)throw new b(\"Empty input!\");try{var e=c.parseFromString(a,d?\"text/html\":\"text/xml\");return sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?(sre.XpathUtil.currentDocument=e,d?e.body.childNodes[0]:e.documentElement):e.documentElement}catch(f){throw new b(\"Illegal input: \"+f.message);}};\nsre.DomUtil.NodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};sre.DomUtil.replaceNode=function(a,b){a.parentNode&&(a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a))};sre.DomUtil.createElement=function(a){return sre.SystemExternal.document.createElement(a)};\nsre.DomUtil.createElementNS=function(a,b){return sre.SystemExternal.document.createElementNS(a,b)};sre.DomUtil.createTextNode=function(a){return sre.SystemExternal.document.createTextNode(a)};\nsre.DomUtil.formatXml=function(a){var b=\"\",c=/(>)(<)(\\/*)/g;a=a.replace(c,\"$1\\r\\n$2$3\");var d=0;a=a.split(\"\\r\\n\");c=/(\\.)*(<)(\\/*)/g;for(a=a.map(function(h){return h.replace(c,\"$1\\r\\n$2$3\").split(\"\\r\\n\")}).reduce(function(h,k){return h.concat(k)},[]);a.length;){var e=a.shift();if(e){var f=0;if(e.match(/^<\\w[^>\\/]*>[^>]+$/)){var g=sre.DomUtil.matchingStartEnd_(e,a[0]);g[0]?g[1]?(e+=a.shift().slice(0,-g[1].length),g[1].trim()&&a.unshift(g[1])):e+=a.shift():f=1}else e.match(/^<\\/\\w/)?0!=d&&--d:e.match(/^<\\w[^>]*[^\\/]>.*$/)?\nf=1:e.match(/^<\\w[^>]*\\/>.+$/)?(g=e.indexOf(\">\")+1,e.slice(g).trim()&&a.unshift(),e=e.slice(0,g)):f=0;b+=Array(d+1).join(\"  \")+e+\"\\r\\n\";d+=f}}return b};sre.DomUtil.matchingStartEnd_=function(a,b){if(!b)return[!1,\"\"];a=a.match(/^<([^> ]+).*>/);b=b.match(/^<\\/([^>]+)>(.*)/);return a&&b&&a[1]===b[1]?[!0,b[2]]:[!1,\"\"]};sre.DomUtil.dataAttribute=function(a){a.match(/^data-/)&&(a=a.substr(5));return a.replace(/-([a-z])/g,function(b,c){return c.toUpperCase()})};\nsre.DomUtil.getDataAttribute=function(a,b){return a.dataset?a.dataset[sre.DomUtil.dataAttribute(b)]:a.getAttribute(b)};sre.DomUtil.querySelectorAllByAttr=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(\"[\"+b+\"]\")):sre.XpathUtil.evalXPath(\".//*[@\"+b+\"]\",a)};sre.DomUtil.querySelectorAllByAttrValue=function(a,b,c){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(\"[\"+b+'=\"'+c+'\"]')):sre.XpathUtil.evalXPath(\".//*[@\"+b+'=\"'+c+'\"]',a)};\nsre.DomUtil.querySelectorAll=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(b)):sre.XpathUtil.evalXPath(\".//\"+b,a)};sre.DomUtil.tagName=function(a){return a.tagName.toUpperCase()};sre.Numbers={};sre.Numbers.identityTransformer_=function(a){return a.toString()};sre.Numbers.pluralTransformer_=function(a,b){return a.toString()};sre.Numbers.NUMBERS={wordOrdinal:sre.Numbers.identityTransformer_,simpleOrdinal:sre.Numbers.identityTransformer_,numberToWords:sre.Numbers.identityTransformer_,numberToOrdinal:sre.Numbers.pluralTransformer_,vulgarSep:\" \",numSep:\" \"};sre.Messages={};sre.Messages.MS={START:\"\",FRAC_V:\"\",FRAC_B:\"\",FRAC_S:\"\",END:\"\",FRAC_OVER:\"\",TWICE:\"\",NEST_FRAC:\"\",ENDFRAC:\"\",SUPER:\"\",SUB:\"\",SUP:\"\",SUPERSCRIPT:\"\",SUBSCRIPT:\"\",BASELINE:\"\",BASE:\"\",NESTED:\"\",NEST_ROOT:\"\",STARTROOT:\"\",ENDROOT:\"\",ROOTINDEX:\"\",ROOT:\"\",INDEX:\"\",UNDER:\"\",UNDERSCRIPT:\"\",OVER:\"\",OVERSCRIPT:\"\"};sre.Messages.MS_FUNC={FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:function(a,b){return a}};sre.Messages.MS_ROOT_INDEX={};\nsre.Messages.FONT={bold:\"\",\"bold-fraktur\":\"\",\"bold-italic\":\"\",\"bold-script\":\"\",caligraphic:\"\",\"caligraphic-bold\":\"\",\"double-struck\":\"\",\"double-struck-italic\":\"\",fraktur:\"\",italic:\"\",monospace:\"\",normal:\"\",oldstyle:\"\",\"oldstyle-bold\":\"\",script:\"\",\"sans-serif\":\"\",\"sans-serif-italic\":\"\",\"sans-serif-bold\":\"\",\"sans-serif-bold-italic\":\"\",unknown:\"\"};\nsre.Messages.EMBELLISH={\"super\":\"\",sub:\"\",circled:\"\",parenthesized:\"\",period:\"\",\"negative-circled\":\"\",\"double-circled\":\"\",\"circled-sans-serif\":\"\",\"negative-circled-sans-serif\":\"\",blackboard:\"\",comma:\"\",squared:\"\",\"negative-squared\":\"\"};\nsre.Messages.ROLE={addition:\"\",multiplication:\"\",subtraction:\"\",division:\"\",equality:\"\",inequality:\"\",element:\"\",arrow:\"\",determinant:\"\",rowvector:\"\",binomial:\"\",squarematrix:\"\",\"set empty\":\"\",\"set extended\":\"\",\"set singleton\":\"\",\"set collection\":\"\",label:\"\",multiline:\"\",matrix:\"\",vector:\"\",cases:\"\",table:\"\",unknown:\"\"};\nsre.Messages.ENCLOSE={longdiv:\"\",actuarial:\"\",radical:\"\",box:\"\",roundedbox:\"\",circle:\"\",left:\"\",right:\"\",top:\"\",bottom:\"\",updiagonalstrike:\"\",downdiagonalstrike:\"\",verticalstrike:\"\",horizontalstrike:\"\",madruwb:\"\",updiagonalarrow:\"\",phasorangle:\"\",unknown:\"\"};sre.Messages.NAVIGATE={COLLAPSIBLE:\"\",EXPANDABLE:\"\",LEVEL:\"\"};sre.Messages.REGEXP={TEXT:\"a-zA-Z\",NUMBER:\"\",DECIMAL_MARK:\"\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\" \"};sre.Messages.PLURAL_UNIT={};\nsre.Messages.PLURAL=function(a){return/.*s$/.test(a)?a:a+\"s\"};sre.Messages.UNIT_TIMES=\"\";sre.Messages.NUMBERS=sre.Numbers.NUMBERS;sre.Messages.ALPHABETS={latinSmall:[],latinCap:[],greekSmall:[],greekCap:[]};sre.Messages.ALPHABET_PREFIXES={capPrefix:{default:\"\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}};sre.Messages.identityTransformer_=function(a){return a.toString()};sre.Messages.ALPHABET_TRANSFORMERS={digit:{default:sre.Messages.identityTransformer_},letter:{default:sre.Messages.identityTransformer_}};\nsre.Messages.ALPHABET_COMBINER=function(a,b,c){return a};sre.NumbersUtil={};sre.NumbersUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.simpleOrdinal(++c)+\" \"+b}};\nsre.NumbersUtil.convertVulgarFraction_=function(a){if(!a.childNodes||!a.childNodes[0]||!a.childNodes[0].childNodes||2>a.childNodes[0].childNodes.length||a.childNodes[0].childNodes[0].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[0].getAttribute(\"role\")!==sre.SemanticAttr.Role.INTEGER||a.childNodes[0].childNodes[1].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[1].getAttribute(\"role\")!==sre.SemanticAttr.Role.INTEGER)return{convertible:!1,content:a.textContent};\nvar b=a.childNodes[0].childNodes[1].textContent;a=a.childNodes[0].childNodes[0].textContent;var c=Number(b),d=Number(a);return isNaN(c)||isNaN(d)?{convertible:!1,content:a+\" \"+sre.Messages.MS.FRAC_OVER+\" \"+b}:{convertible:!0,enumerator:d,denominator:c}};\nsre.NumbersUtil.vulgarFraction=function(a){a=sre.NumbersUtil.convertVulgarFraction_(a);return a.convertible&&a.enumerator&&a.denominator?sre.Messages.NUMBERS.numberToWords(a.enumerator)+sre.Messages.NUMBERS.vulgarSep+sre.Messages.NUMBERS.numberToOrdinal(a.denominator,1!==a.enumerator):a.content||\"\"};sre.NumbersUtil.vulgarFractionSmall=function(a,b,c){var d=sre.NumbersUtil.convertVulgarFraction_(a);return d.convertible?(a=d.enumerator,d=d.denominator,0<a&&a<b&&0<d&&d<c):!1};\nsre.NumbersUtil.ordinalPosition=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes);return sre.Messages.NUMBERS.simpleOrdinal(b.indexOf(a)+1).toString()};sre.SemanticUtil=function(){};sre.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};sre.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];a.forEach(function(c){for(var d in c)b.push(c[d])});return b};\nsre.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};sre.SemanticUtil.numberToUnicode=function(a){return 65536>a?String.fromCharCode(a):String.fromCharCode((a-65536)/1024+55296,(a-65536)%1024+56320)};\nsre.SemanticUtil.splitUnicode=function(a){a=a.split(\"\");for(var b=[],c=0,d;d=a[c];c++)\"\\ud800\"<=d&&\"\\udbff\">=d&&a[c+1]?b.push(d+a[++c]):b.push(d);return b};sre.SemanticUtil.LEAFTAGS=[\"MO\",\"MI\",\"MN\",\"MTEXT\",\"MS\"];sre.SemanticUtil.IGNORETAGS=\"MERROR MPHANTOM MSPACE MALIGNGROUP MALIGNMARK MPRESCRIPTS ANNOTATION ANNOTATION-XML\".split(\" \");sre.SemanticUtil.EMPTYTAGS=\"MATH MROW MPADDED MACTION NONE MSTYLE SEMANTICS\".split(\" \");sre.SemanticUtil.hasMathTag=function(a){return!!a&&\"MATH\"===sre.DomUtil.tagName(a)};\nsre.SemanticUtil.hasIgnoreTag=function(a){return!!a&&-1!==sre.SemanticUtil.IGNORETAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.hasEmptyTag=function(a){return!!a&&-1!==sre.SemanticUtil.EMPTYTAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=sre.DomUtil.tagName(d);-1!=sre.SemanticUtil.IGNORETAGS.indexOf(e)||-1!=sre.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d)}return b};\nsre.SemanticUtil.isZeroLength=function(a){return a?-1!==\"negativeveryverythinmathspace negativeverythinmathspace negativethinmathspace negativemediummathspace negativethickmathspace negativeverythickmathspace negativeveryverythickmathspace\".split(\" \").indexOf(a)?!0:(a=a.match(/[0-9\\.]+/))?0===parseFloat(a)?!0:!1:!1:!1};sre.SemanticUtil.directSpeechKeys=[\"aria-label\",\"exact-speech\",\"alt\"];\nsre.SemanticUtil.addAttributes=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;d.match(/^ext/)&&(a.attributes[d]=b[c].value);-1!==sre.SemanticUtil.directSpeechKeys.indexOf(d)&&(a.attributes[\"ext-speech\"]=b[c].value)}}};sre.SemanticAttr=function(){this.generalPunctuations='!\"#%&:;?@\\\\\\u00a1\\u00a7\\u00b6\\u00bf\\u2017\\u2020\\u2021\\u2022\\u2023\\u2024\\u2025\\u2027\\u2030\\u2031\\u2038\\u203b\\u203c\\u203d\\u203e\\u2041\\u2042\\u2043\\u2047\\u2048\\u2049\\u204b\\u204c\\u204d\\u204e\\u204f\\u2050\\u2051\\u2053\\u2055\\u2056\\u2058\\u2059\\u205a\\u205b\\u205c\\u205d\\u205e\\ufe10\\ufe13\\ufe14\\ufe15\\ufe16\\ufe30\\ufe45\\ufe46\\ufe49\\ufe4a\\ufe4b\\ufe4c\\ufe50\\ufe54\\ufe55\\ufe56\\ufe57\\ufe5f\\ufe60\\ufe61\\ufe68\\ufe6a\\ufe6b\\uff01\\uff02\\uff03\\uff05\\uff06\\uff07\\uff0a\\uff0c\\uff0f\\uff1a\\uff1b\\uff1f\\uff20\\uff3c'.split(\"\");\nthis.colons=[\":\",\"\\uff1a\",\"\\ufe55\"];this.invisibleComma_=sre.SemanticUtil.numberToUnicode(8291);this.commas=[\",\",this.invisibleComma_];this.ellipses=\"\\u2026\\u22ee\\u22ef\\u22f0\\u22f1\\ufe19\".split(\"\");this.fullStops=[\".\",\"\\ufe52\",\"\\uff0e\"];this.dashes=\"\\u2012\\u2013\\u2014\\u2015\\u301c\\ufe31\\ufe32\\ufe58\".split(\"\");this.primes=\"'\\u2032\\u2033\\u2034\\u2035\\u2036\\u2037\\u2057\".split(\"\");this.degrees=[\"\\u00b0\"];this.openClosePairs={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"\\u2045\":\"\\u2046\",\"\\u2329\":\"\\u232a\",\"\\u2768\":\"\\u2769\",\n\"\\u276a\":\"\\u276b\",\"\\u276c\":\"\\u276d\",\"\\u276e\":\"\\u276f\",\"\\u2770\":\"\\u2771\",\"\\u2772\":\"\\u2773\",\"\\u2774\":\"\\u2775\",\"\\u27c5\":\"\\u27c6\",\"\\u27e6\":\"\\u27e7\",\"\\u27e8\":\"\\u27e9\",\"\\u27ea\":\"\\u27eb\",\"\\u27ec\":\"\\u27ed\",\"\\u27ee\":\"\\u27ef\",\"\\u2983\":\"\\u2984\",\"\\u2985\":\"\\u2986\",\"\\u2987\":\"\\u2988\",\"\\u2989\":\"\\u298a\",\"\\u298b\":\"\\u298c\",\"\\u298d\":\"\\u298e\",\"\\u298f\":\"\\u2990\",\"\\u2991\":\"\\u2992\",\"\\u2993\":\"\\u2994\",\"\\u2995\":\"\\u2996\",\"\\u2997\":\"\\u2998\",\"\\u29d8\":\"\\u29d9\",\"\\u29da\":\"\\u29db\",\"\\u29fc\":\"\\u29fd\",\"\\u2e22\":\"\\u2e23\",\"\\u2e24\":\"\\u2e25\",\n\"\\u2e26\":\"\\u2e27\",\"\\u2e28\":\"\\u2e29\",\"\\u3008\":\"\\u3009\",\"\\u300a\":\"\\u300b\",\"\\u300c\":\"\\u300d\",\"\\u300e\":\"\\u300f\",\"\\u3010\":\"\\u3011\",\"\\u3014\":\"\\u3015\",\"\\u3016\":\"\\u3017\",\"\\u3018\":\"\\u3019\",\"\\u301a\":\"\\u301b\",\"\\u301d\":\"\\u301e\",\"\\ufd3e\":\"\\ufd3f\",\"\\ufe17\":\"\\ufe18\",\"\\ufe59\":\"\\ufe5a\",\"\\ufe5b\":\"\\ufe5c\",\"\\ufe5d\":\"\\ufe5e\",\"\\uff08\":\"\\uff09\",\"\\uff3b\":\"\\uff3d\",\"\\uff5b\":\"\\uff5d\",\"\\uff5f\":\"\\uff60\",\"\\uff62\":\"\\uff63\",\"\\u2308\":\"\\u2309\",\"\\u230a\":\"\\u230b\",\"\\u230c\":\"\\u230d\",\"\\u230e\":\"\\u230f\",\"\\u231c\":\"\\u231d\",\"\\u231e\":\"\\u231f\",\n\"\\u239b\":\"\\u239e\",\"\\u239c\":\"\\u239f\",\"\\u239d\":\"\\u23a0\",\"\\u23a1\":\"\\u23a4\",\"\\u23a2\":\"\\u23a5\",\"\\u23a3\":\"\\u23a6\",\"\\u23a7\":\"\\u23ab\",\"\\u23a8\":\"\\u23ac\",\"\\u23a9\":\"\\u23ad\",\"\\u23b0\":\"\\u23b1\",\"\\u23b8\":\"\\u23b9\"};this.topBottomPairs={\"\\u23b4\":\"\\u23b5\",\"\\u23dc\":\"\\u23dd\",\"\\u23de\":\"\\u23df\",\"\\u23e0\":\"\\u23e1\",\"\\ufe35\":\"\\ufe36\",\"\\ufe37\":\"\\ufe38\",\"\\ufe39\":\"\\ufe3a\",\"\\ufe3b\":\"\\ufe3c\",\"\\ufe3d\":\"\\ufe3e\",\"\\ufe3f\":\"\\ufe40\",\"\\ufe41\":\"\\ufe42\",\"\\ufe43\":\"\\ufe44\",\"\\ufe47\":\"\\ufe48\"};this.leftFences=sre.SemanticUtil.objectsToKeys(this.openClosePairs);\nthis.rightFences=sre.SemanticUtil.objectsToValues(this.openClosePairs);this.rightFences.push(\"\\u301f\");this.topFences=sre.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=sre.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences=\"|\\u00a6\\u2016\\u2758\\u2980\\u2af4\\uffe4\\uff5c\\u2223\".split(\"\");this.allFences=this.neutralFences.concat(this.leftFences,this.rightFences,this.topFences,this.bottomFences);this.capitalLatin=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");this.smallLatin=\n\"abcdefghijklmnopqrstuvwxyz\\u0131\\u0237\".split(\"\");this.capitalLatinFullWidth=\"\\uff21\\uff22\\uff23\\uff24\\uff25\\uff26\\uff27\\uff28\\uff29\\uff2a\\uff2b\\uff2c\\uff2d\\uff2e\\uff2f\\uff30\\uff31\\uff32\\uff33\\uff34\\uff35\\uff36\\uff37\\uff38\\uff39\\uff3a\".split(\"\");this.smallLatinFullWidth=\"\\uff41\\uff42\\uff43\\uff44\\uff45\\uff46\\uff47\\uff48\\uff49\\uff4a\\uff4b\\uff4c\\uff4d\\uff4e\\uff4f\\uff50\\uff51\\uff52\\uff53\\uff54\\uff55\\uff56\\uff57\\uff58\\uff59\\uff5a\".split(\"\");this.capitalLatinBold=\"\\ud835\\udc00 \\ud835\\udc01 \\ud835\\udc02 \\ud835\\udc03 \\ud835\\udc04 \\ud835\\udc05 \\ud835\\udc06 \\ud835\\udc07 \\ud835\\udc08 \\ud835\\udc09 \\ud835\\udc0a \\ud835\\udc0b \\ud835\\udc0c \\ud835\\udc0d \\ud835\\udc0e \\ud835\\udc0f \\ud835\\udc10 \\ud835\\udc11 \\ud835\\udc12 \\ud835\\udc13 \\ud835\\udc14 \\ud835\\udc15 \\ud835\\udc16 \\ud835\\udc17 \\ud835\\udc18 \\ud835\\udc19\".split(\" \");\nthis.smallLatinBold=\"\\ud835\\udc1a \\ud835\\udc1b \\ud835\\udc1c \\ud835\\udc1d \\ud835\\udc1e \\ud835\\udc1f \\ud835\\udc20 \\ud835\\udc21 \\ud835\\udc22 \\ud835\\udc23 \\ud835\\udc24 \\ud835\\udc25 \\ud835\\udc26 \\ud835\\udc27 \\ud835\\udc28 \\ud835\\udc29 \\ud835\\udc2a \\ud835\\udc2b \\ud835\\udc2c \\ud835\\udc2d \\ud835\\udc2e \\ud835\\udc2f \\ud835\\udc30 \\ud835\\udc31 \\ud835\\udc32 \\ud835\\udc33\".split(\" \");this.capitalLatinItalic=\"\\ud835\\udc34 \\ud835\\udc35 \\ud835\\udc36 \\ud835\\udc37 \\ud835\\udc38 \\ud835\\udc39 \\ud835\\udc3a \\ud835\\udc3b \\ud835\\udc3c \\ud835\\udc3d \\ud835\\udc3e \\ud835\\udc3f \\ud835\\udc40 \\ud835\\udc41 \\ud835\\udc42 \\ud835\\udc43 \\ud835\\udc44 \\ud835\\udc45 \\ud835\\udc46 \\ud835\\udc47 \\ud835\\udc48 \\ud835\\udc49 \\ud835\\udc4a \\ud835\\udc4b \\ud835\\udc4c \\ud835\\udc4d\".split(\" \");\nthis.smallLatinItalic=\"\\ud835\\udc4e \\ud835\\udc4f \\ud835\\udc50 \\ud835\\udc51 \\ud835\\udc52 \\ud835\\udc53 \\ud835\\udc54 \\u210e \\ud835\\udc56 \\ud835\\udc57 \\ud835\\udc58 \\ud835\\udc59 \\ud835\\udc5a \\ud835\\udc5b \\ud835\\udc5c \\ud835\\udc5d \\ud835\\udc5e \\ud835\\udc5f \\ud835\\udc60 \\ud835\\udc61 \\ud835\\udc62 \\ud835\\udc63 \\ud835\\udc64 \\ud835\\udc65 \\ud835\\udc66 \\ud835\\udc67 \\ud835\\udea4 \\ud835\\udea5\".split(\" \");this.capitalLatinBoldItalic=\"\\ud835\\udc68 \\ud835\\udc69 \\ud835\\udc6a \\ud835\\udc6b \\ud835\\udc6c \\ud835\\udc6d \\ud835\\udc6e \\ud835\\udc6f \\ud835\\udc70 \\ud835\\udc71 \\ud835\\udc72 \\ud835\\udc73 \\ud835\\udc74 \\ud835\\udc75 \\ud835\\udc76 \\ud835\\udc77 \\ud835\\udc78 \\ud835\\udc79 \\ud835\\udc7a \\ud835\\udc7b \\ud835\\udc7c \\ud835\\udc7d \\ud835\\udc7e \\ud835\\udc7f \\ud835\\udc80 \\ud835\\udc81\".split(\" \");\nthis.smallLatinBoldItalic=\"\\ud835\\udc82 \\ud835\\udc83 \\ud835\\udc84 \\ud835\\udc85 \\ud835\\udc86 \\ud835\\udc87 \\ud835\\udc88 \\ud835\\udc89 \\ud835\\udc8a \\ud835\\udc8b \\ud835\\udc8c \\ud835\\udc8d \\ud835\\udc8e \\ud835\\udc8f \\ud835\\udc90 \\ud835\\udc91 \\ud835\\udc92 \\ud835\\udc93 \\ud835\\udc94 \\ud835\\udc95 \\ud835\\udc96 \\ud835\\udc97 \\ud835\\udc98 \\ud835\\udc99 \\ud835\\udc9a \\ud835\\udc9b\".split(\" \");this.capitalLatinScript=\"\\ud835\\udc9c \\u212c \\ud835\\udc9e \\ud835\\udc9f \\u2130 \\u2131 \\ud835\\udca2 \\u210b \\u2110 \\ud835\\udca5 \\ud835\\udca6 \\u2112 \\u2133 \\ud835\\udca9 \\ud835\\udcaa \\ud835\\udcab \\ud835\\udcac \\u211b \\ud835\\udcae \\ud835\\udcaf \\ud835\\udcb0 \\ud835\\udcb1 \\ud835\\udcb2 \\ud835\\udcb3 \\ud835\\udcb4 \\ud835\\udcb5 \\u2118\".split(\" \");\nthis.smallLatinScript=\"\\ud835\\udcb6 \\ud835\\udcb7 \\ud835\\udcb8 \\ud835\\udcb9 \\u212f \\ud835\\udcbb \\u210a \\ud835\\udcbd \\ud835\\udcbe \\ud835\\udcbf \\ud835\\udcc0 \\ud835\\udcc1 \\ud835\\udcc2 \\ud835\\udcc3 \\u2134 \\ud835\\udcc5 \\ud835\\udcc6 \\ud835\\udcc7 \\ud835\\udcc8 \\ud835\\udcc9 \\ud835\\udcca \\ud835\\udccb \\ud835\\udccc \\ud835\\udccd \\ud835\\udcce \\ud835\\udccf \\u2113\".split(\" \");this.capitalLatinBoldScript=\"\\ud835\\udcd0 \\ud835\\udcd1 \\ud835\\udcd2 \\ud835\\udcd3 \\ud835\\udcd4 \\ud835\\udcd5 \\ud835\\udcd6 \\ud835\\udcd7 \\ud835\\udcd8 \\ud835\\udcd9 \\ud835\\udcda \\ud835\\udcdb \\ud835\\udcdc \\ud835\\udcdd \\ud835\\udcde \\ud835\\udcdf \\ud835\\udce0 \\ud835\\udce1 \\ud835\\udce2 \\ud835\\udce3 \\ud835\\udce4 \\ud835\\udce5 \\ud835\\udce6 \\ud835\\udce7 \\ud835\\udce8 \\ud835\\udce9\".split(\" \");\nthis.smallLatinBoldScript=\"\\ud835\\udcea \\ud835\\udceb \\ud835\\udcec \\ud835\\udced \\ud835\\udcee \\ud835\\udcef \\ud835\\udcf0 \\ud835\\udcf1 \\ud835\\udcf2 \\ud835\\udcf3 \\ud835\\udcf4 \\ud835\\udcf5 \\ud835\\udcf6 \\ud835\\udcf7 \\ud835\\udcf8 \\ud835\\udcf9 \\ud835\\udcfa \\ud835\\udcfb \\ud835\\udcfc \\ud835\\udcfd \\ud835\\udcfe \\ud835\\udcff \\ud835\\udd00 \\ud835\\udd01 \\ud835\\udd02 \\ud835\\udd03\".split(\" \");this.capitalLatinFraktur=\"\\ud835\\udd04 \\ud835\\udd05 \\u212d \\ud835\\udd07 \\ud835\\udd08 \\ud835\\udd09 \\ud835\\udd0a \\u210c \\u2111 \\ud835\\udd0d \\ud835\\udd0e \\ud835\\udd0f \\ud835\\udd10 \\ud835\\udd11 \\ud835\\udd12 \\ud835\\udd13 \\ud835\\udd14 \\u211c \\ud835\\udd16 \\ud835\\udd17 \\ud835\\udd18 \\ud835\\udd19 \\ud835\\udd1a \\ud835\\udd1b \\ud835\\udd1c \\u2128\".split(\" \");\nthis.smallLatinFraktur=\"\\ud835\\udd1e \\ud835\\udd1f \\ud835\\udd20 \\ud835\\udd21 \\ud835\\udd22 \\ud835\\udd23 \\ud835\\udd24 \\ud835\\udd25 \\ud835\\udd26 \\ud835\\udd27 \\ud835\\udd28 \\ud835\\udd29 \\ud835\\udd2a \\ud835\\udd2b \\ud835\\udd2c \\ud835\\udd2d \\ud835\\udd2e \\ud835\\udd2f \\ud835\\udd30 \\ud835\\udd31 \\ud835\\udd32 \\ud835\\udd33 \\ud835\\udd34 \\ud835\\udd35 \\ud835\\udd36 \\ud835\\udd37\".split(\" \");this.capitalLatinDoubleStruck=\"\\ud835\\udd38 \\ud835\\udd39 \\u2102 \\ud835\\udd3b \\ud835\\udd3c \\ud835\\udd3d \\ud835\\udd3e \\u210d \\ud835\\udd40 \\ud835\\udd41 \\ud835\\udd42 \\ud835\\udd43 \\ud835\\udd44 \\u2115 \\ud835\\udd46 \\u2119 \\u211a \\u211d \\ud835\\udd4a \\ud835\\udd4b \\ud835\\udd4c \\ud835\\udd4d \\ud835\\udd4e \\ud835\\udd4f \\ud835\\udd50 \\u2124\".split(\" \");\nthis.smallLatinDoubleStruck=\"\\ud835\\udd52 \\ud835\\udd53 \\ud835\\udd54 \\ud835\\udd55 \\ud835\\udd56 \\ud835\\udd57 \\ud835\\udd58 \\ud835\\udd59 \\ud835\\udd5a \\ud835\\udd5b \\ud835\\udd5c \\ud835\\udd5d \\ud835\\udd5e \\ud835\\udd5f \\ud835\\udd60 \\ud835\\udd61 \\ud835\\udd62 \\ud835\\udd63 \\ud835\\udd64 \\ud835\\udd65 \\ud835\\udd66 \\ud835\\udd67 \\ud835\\udd68 \\ud835\\udd69 \\ud835\\udd6a \\ud835\\udd6b\".split(\" \");this.capitalLatinBoldFraktur=\"\\ud835\\udd6c \\ud835\\udd6d \\ud835\\udd6e \\ud835\\udd6f \\ud835\\udd70 \\ud835\\udd71 \\ud835\\udd72 \\ud835\\udd73 \\ud835\\udd74 \\ud835\\udd75 \\ud835\\udd76 \\ud835\\udd77 \\ud835\\udd78 \\ud835\\udd79 \\ud835\\udd7a \\ud835\\udd7b \\ud835\\udd7c \\ud835\\udd7d \\ud835\\udd7e \\ud835\\udd7f \\ud835\\udd80 \\ud835\\udd81 \\ud835\\udd82 \\ud835\\udd83 \\ud835\\udd84 \\ud835\\udd85\".split(\" \");\nthis.smallLatinBoldFraktur=\"\\ud835\\udd86 \\ud835\\udd87 \\ud835\\udd88 \\ud835\\udd89 \\ud835\\udd8a \\ud835\\udd8b \\ud835\\udd8c \\ud835\\udd8d \\ud835\\udd8e \\ud835\\udd8f \\ud835\\udd90 \\ud835\\udd91 \\ud835\\udd92 \\ud835\\udd93 \\ud835\\udd94 \\ud835\\udd95 \\ud835\\udd96 \\ud835\\udd97 \\ud835\\udd98 \\ud835\\udd99 \\ud835\\udd9a \\ud835\\udd9b \\ud835\\udd9c \\ud835\\udd9d \\ud835\\udd9e \\ud835\\udd9f\".split(\" \");this.capitalLatinSansSerif=\"\\ud835\\udda0 \\ud835\\udda1 \\ud835\\udda2 \\ud835\\udda3 \\ud835\\udda4 \\ud835\\udda5 \\ud835\\udda6 \\ud835\\udda7 \\ud835\\udda8 \\ud835\\udda9 \\ud835\\uddaa \\ud835\\uddab \\ud835\\uddac \\ud835\\uddad \\ud835\\uddae \\ud835\\uddaf \\ud835\\uddb0 \\ud835\\uddb1 \\ud835\\uddb2 \\ud835\\uddb3 \\ud835\\uddb4 \\ud835\\uddb5 \\ud835\\uddb6 \\ud835\\uddb7 \\ud835\\uddb8 \\ud835\\uddb9\".split(\" \");\nthis.smallLatinSansSerif=\"\\ud835\\uddba \\ud835\\uddbb \\ud835\\uddbc \\ud835\\uddbd \\ud835\\uddbe \\ud835\\uddbf \\ud835\\uddc0 \\ud835\\uddc1 \\ud835\\uddc2 \\ud835\\uddc3 \\ud835\\uddc4 \\ud835\\uddc5 \\ud835\\uddc6 \\ud835\\uddc7 \\ud835\\uddc8 \\ud835\\uddc9 \\ud835\\uddca \\ud835\\uddcb \\ud835\\uddcc \\ud835\\uddcd \\ud835\\uddce \\ud835\\uddcf \\ud835\\uddd0 \\ud835\\uddd1 \\ud835\\uddd2 \\ud835\\uddd3\".split(\" \");this.capitalLatinSansSerifBold=\"\\ud835\\uddd4 \\ud835\\uddd5 \\ud835\\uddd6 \\ud835\\uddd7 \\ud835\\uddd8 \\ud835\\uddd9 \\ud835\\uddda \\ud835\\udddb \\ud835\\udddc \\ud835\\udddd \\ud835\\uddde \\ud835\\udddf \\ud835\\udde0 \\ud835\\udde1 \\ud835\\udde2 \\ud835\\udde3 \\ud835\\udde4 \\ud835\\udde5 \\ud835\\udde6 \\ud835\\udde7 \\ud835\\udde8 \\ud835\\udde9 \\ud835\\uddea \\ud835\\uddeb \\ud835\\uddec \\ud835\\udded\".split(\" \");\nthis.smallLatinSansSerifBold=\"\\ud835\\uddee \\ud835\\uddef \\ud835\\uddf0 \\ud835\\uddf1 \\ud835\\uddf2 \\ud835\\uddf3 \\ud835\\uddf4 \\ud835\\uddf5 \\ud835\\uddf6 \\ud835\\uddf7 \\ud835\\uddf8 \\ud835\\uddf9 \\ud835\\uddfa \\ud835\\uddfb \\ud835\\uddfc \\ud835\\uddfd \\ud835\\uddfe \\ud835\\uddff \\ud835\\ude00 \\ud835\\ude01 \\ud835\\ude02 \\ud835\\ude03 \\ud835\\ude04 \\ud835\\ude05 \\ud835\\ude06 \\ud835\\ude07\".split(\" \");this.capitalLatinSansSerifItalic=\"\\ud835\\ude08 \\ud835\\ude09 \\ud835\\ude0a \\ud835\\ude0b \\ud835\\ude0c \\ud835\\ude0d \\ud835\\ude0e \\ud835\\ude0f \\ud835\\ude10 \\ud835\\ude11 \\ud835\\ude12 \\ud835\\ude13 \\ud835\\ude14 \\ud835\\ude15 \\ud835\\ude16 \\ud835\\ude17 \\ud835\\ude18 \\ud835\\ude19 \\ud835\\ude1a \\ud835\\ude1b \\ud835\\ude1c \\ud835\\ude1d \\ud835\\ude1e \\ud835\\ude1f \\ud835\\ude20 \\ud835\\ude21\".split(\" \");\nthis.smallLatinSansSerifItalic=\"\\ud835\\ude22 \\ud835\\ude23 \\ud835\\ude24 \\ud835\\ude25 \\ud835\\ude26 \\ud835\\ude27 \\ud835\\ude28 \\ud835\\ude29 \\ud835\\ude2a \\ud835\\ude2b \\ud835\\ude2c \\ud835\\ude2d \\ud835\\ude2e \\ud835\\ude2f \\ud835\\ude30 \\ud835\\ude31 \\ud835\\ude32 \\ud835\\ude33 \\ud835\\ude34 \\ud835\\ude35 \\ud835\\ude36 \\ud835\\ude37 \\ud835\\ude38 \\ud835\\ude39 \\ud835\\ude3a \\ud835\\ude3b\".split(\" \");this.capitalLatinSansSerifBoldItalic=\"\\ud835\\ude3c \\ud835\\ude3d \\ud835\\ude3e \\ud835\\ude3f \\ud835\\ude40 \\ud835\\ude41 \\ud835\\ude42 \\ud835\\ude43 \\ud835\\ude44 \\ud835\\ude45 \\ud835\\ude46 \\ud835\\ude47 \\ud835\\ude48 \\ud835\\ude49 \\ud835\\ude4a \\ud835\\ude4b \\ud835\\ude4c \\ud835\\ude4d \\ud835\\ude4e \\ud835\\ude4f \\ud835\\ude50 \\ud835\\ude51 \\ud835\\ude52 \\ud835\\ude53 \\ud835\\ude54 \\ud835\\ude55\".split(\" \");\nthis.smallLatinSansSerifBoldItalic=\"\\ud835\\ude56 \\ud835\\ude57 \\ud835\\ude58 \\ud835\\ude59 \\ud835\\ude5a \\ud835\\ude5b \\ud835\\ude5c \\ud835\\ude5d \\ud835\\ude5e \\ud835\\ude5f \\ud835\\ude60 \\ud835\\ude61 \\ud835\\ude62 \\ud835\\ude63 \\ud835\\ude64 \\ud835\\ude65 \\ud835\\ude66 \\ud835\\ude67 \\ud835\\ude68 \\ud835\\ude69 \\ud835\\ude6a \\ud835\\ude6b \\ud835\\ude6c \\ud835\\ude6d \\ud835\\ude6e \\ud835\\ude6f\".split(\" \");this.capitalLatinMonospace=\"\\ud835\\ude70 \\ud835\\ude71 \\ud835\\ude72 \\ud835\\ude73 \\ud835\\ude74 \\ud835\\ude75 \\ud835\\ude76 \\ud835\\ude77 \\ud835\\ude78 \\ud835\\ude79 \\ud835\\ude7a \\ud835\\ude7b \\ud835\\ude7c \\ud835\\ude7d \\ud835\\ude7e \\ud835\\ude7f \\ud835\\ude80 \\ud835\\ude81 \\ud835\\ude82 \\ud835\\ude83 \\ud835\\ude84 \\ud835\\ude85 \\ud835\\ude86 \\ud835\\ude87 \\ud835\\ude88 \\ud835\\ude89\".split(\" \");\nthis.smallLatinMonospace=\"\\ud835\\ude8a \\ud835\\ude8b \\ud835\\ude8c \\ud835\\ude8d \\ud835\\ude8e \\ud835\\ude8f \\ud835\\ude90 \\ud835\\ude91 \\ud835\\ude92 \\ud835\\ude93 \\ud835\\ude94 \\ud835\\ude95 \\ud835\\ude96 \\ud835\\ude97 \\ud835\\ude98 \\ud835\\ude99 \\ud835\\ude9a \\ud835\\ude9b \\ud835\\ude9c \\ud835\\ude9d \\ud835\\ude9e \\ud835\\ude9f \\ud835\\udea0 \\ud835\\udea1 \\ud835\\udea2 \\ud835\\udea3\".split(\" \");this.latinDoubleStruckItalic=[\"\\u2145\",\"\\u2146\",\"\\u2147\",\"\\u2148\",\"\\u2149\"];this.capitalGreek=\"\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\".split(\"\");\nthis.smallGreek=\"\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\".split(\"\");this.capitalGreekBold=\"\\ud835\\udea8 \\ud835\\udea9 \\ud835\\udeaa \\ud835\\udeab \\ud835\\udeac \\ud835\\udead \\ud835\\udeae \\ud835\\udeaf \\ud835\\udeb0 \\ud835\\udeb1 \\ud835\\udeb2 \\ud835\\udeb3 \\ud835\\udeb4 \\ud835\\udeb5 \\ud835\\udeb6 \\ud835\\udeb7 \\ud835\\udeb8 \\ud835\\udeba \\ud835\\udebb \\ud835\\udebc \\ud835\\udebd \\ud835\\udebe \\ud835\\udebf \\ud835\\udec0\".split(\" \");\nthis.smallGreekBold=\"\\ud835\\udec2 \\ud835\\udec3 \\ud835\\udec4 \\ud835\\udec5 \\ud835\\udec6 \\ud835\\udec7 \\ud835\\udec8 \\ud835\\udec9 \\ud835\\udeca \\ud835\\udecb \\ud835\\udecc \\ud835\\udecd \\ud835\\udece \\ud835\\udecf \\ud835\\uded0 \\ud835\\uded1 \\ud835\\uded2 \\ud835\\uded3 \\ud835\\uded4 \\ud835\\uded5 \\ud835\\uded6 \\ud835\\uded7 \\ud835\\uded8 \\ud835\\uded9 \\ud835\\udeda\".split(\" \");this.capitalGreekItalic=\"\\ud835\\udee2 \\ud835\\udee3 \\ud835\\udee4 \\ud835\\udee5 \\ud835\\udee6 \\ud835\\udee7 \\ud835\\udee8 \\ud835\\udee9 \\ud835\\udeea \\ud835\\udeeb \\ud835\\udeec \\ud835\\udeed \\ud835\\udeee \\ud835\\udeef \\ud835\\udef0 \\ud835\\udef1 \\ud835\\udef2 \\ud835\\udef4 \\ud835\\udef5 \\ud835\\udef6 \\ud835\\udef7 \\ud835\\udef8 \\ud835\\udef9 \\ud835\\udefa\".split(\" \");\nthis.smallGreekItalic=\"\\ud835\\udefc \\ud835\\udefd \\ud835\\udefe \\ud835\\udeff \\ud835\\udf00 \\ud835\\udf01 \\ud835\\udf02 \\ud835\\udf03 \\ud835\\udf04 \\ud835\\udf05 \\ud835\\udf06 \\ud835\\udf07 \\ud835\\udf08 \\ud835\\udf09 \\ud835\\udf0a \\ud835\\udf0b \\ud835\\udf0c \\ud835\\udf0d \\ud835\\udf0e \\ud835\\udf0f \\ud835\\udf10 \\ud835\\udf11 \\ud835\\udf12 \\ud835\\udf13 \\ud835\\udf14\".split(\" \");this.capitalGreekBoldItalic=\"\\ud835\\udf1c \\ud835\\udf1d \\ud835\\udf1e \\ud835\\udf1f \\ud835\\udf20 \\ud835\\udf21 \\ud835\\udf22 \\ud835\\udf23 \\ud835\\udf24 \\ud835\\udf25 \\ud835\\udf26 \\ud835\\udf27 \\ud835\\udf28 \\ud835\\udf29 \\ud835\\udf2a \\ud835\\udf2b \\ud835\\udf2c \\ud835\\udf2e \\ud835\\udf2f \\ud835\\udf30 \\ud835\\udf31 \\ud835\\udf32 \\ud835\\udf33 \\ud835\\udf34\".split(\" \");\nthis.smallGreekBoldItalic=\"\\ud835\\udf36 \\ud835\\udf37 \\ud835\\udf38 \\ud835\\udf39 \\ud835\\udf3a \\ud835\\udf3b \\ud835\\udf3c \\ud835\\udf3d \\ud835\\udf3e \\ud835\\udf3f \\ud835\\udf40 \\ud835\\udf41 \\ud835\\udf42 \\ud835\\udf43 \\ud835\\udf44 \\ud835\\udf45 \\ud835\\udf46 \\ud835\\udf47 \\ud835\\udf48 \\ud835\\udf49 \\ud835\\udf4a \\ud835\\udf4b \\ud835\\udf4c \\ud835\\udf4d \\ud835\\udf4e\".split(\" \");this.capitalGreekSansSerifBold=\"\\ud835\\udf56 \\ud835\\udf57 \\ud835\\udf58 \\ud835\\udf59 \\ud835\\udf5a \\ud835\\udf5b \\ud835\\udf5c \\ud835\\udf5d \\ud835\\udf5e \\ud835\\udf5f \\ud835\\udf60 \\ud835\\udf61 \\ud835\\udf62 \\ud835\\udf63 \\ud835\\udf64 \\ud835\\udf65 \\ud835\\udf66 \\ud835\\udf68 \\ud835\\udf69 \\ud835\\udf6a \\ud835\\udf6b \\ud835\\udf6c \\ud835\\udf6d \\ud835\\udf6e\".split(\" \");\nthis.smallGreekSansSerifBold=\"\\ud835\\udf70 \\ud835\\udf71 \\ud835\\udf72 \\ud835\\udf73 \\ud835\\udf74 \\ud835\\udf75 \\ud835\\udf76 \\ud835\\udf77 \\ud835\\udf78 \\ud835\\udf79 \\ud835\\udf7a \\ud835\\udf7b \\ud835\\udf7c \\ud835\\udf7d \\ud835\\udf7e \\ud835\\udf7f \\ud835\\udf80 \\ud835\\udf81 \\ud835\\udf82 \\ud835\\udf83 \\ud835\\udf84 \\ud835\\udf85 \\ud835\\udf86 \\ud835\\udf87 \\ud835\\udf88\".split(\" \");this.capitalGreekSansSerifBoldItalic=\"\\ud835\\udf90 \\ud835\\udf91 \\ud835\\udf92 \\ud835\\udf93 \\ud835\\udf94 \\ud835\\udf95 \\ud835\\udf96 \\ud835\\udf97 \\ud835\\udf98 \\ud835\\udf99 \\ud835\\udf9a \\ud835\\udf9b \\ud835\\udf9c \\ud835\\udf9d \\ud835\\udf9e \\ud835\\udf9f \\ud835\\udfa0 \\ud835\\udfa2 \\ud835\\udfa3 \\ud835\\udfa4 \\ud835\\udfa5 \\ud835\\udfa6 \\ud835\\udfa7 \\ud835\\udfa8\".split(\" \");\nthis.smallGreekSansSerifBoldItalic=\"\\ud835\\udfaa \\ud835\\udfab \\ud835\\udfac \\ud835\\udfad \\ud835\\udfae \\ud835\\udfaf \\ud835\\udfb0 \\ud835\\udfb1 \\ud835\\udfb2 \\ud835\\udfb3 \\ud835\\udfb4 \\ud835\\udfb5 \\ud835\\udfb6 \\ud835\\udfb7 \\ud835\\udfb8 \\ud835\\udfb9 \\ud835\\udfba \\ud835\\udfbb \\ud835\\udfbc \\ud835\\udfbd \\ud835\\udfbe \\ud835\\udfbf \\ud835\\udfc0 \\ud835\\udfc1 \\ud835\\udfc2\".split(\" \");this.greekDoubleStruck=[\"\\u213c\",\"\\u213d\",\"\\u213e\",\"\\u213f\"];this.greekSpecial=\"\\u03d0\\u03d1\\u03d5\\u03d6\\u03d7\\u03f0\\u03f1\\u03f5\\u03f6\\u03f4\".split(\"\");\nthis.greekSpecialBold=\"\\ud835\\udedc \\ud835\\udedd \\ud835\\udede \\ud835\\udedf \\ud835\\udee0 \\ud835\\udee1\".split(\" \");this.greekSpecialItalic=\"\\ud835\\udf16 \\ud835\\udf17 \\ud835\\udf18 \\ud835\\udf19 \\ud835\\udf1a \\ud835\\udf1b\".split(\" \");this.greekSpecialSansSerifBold=\"\\ud835\\udf8a \\ud835\\udf8b \\ud835\\udf8c \\ud835\\udf8d \\ud835\\udf8e \\ud835\\udf8f\".split(\" \");this.hebrewLetters=[\"\\u2135\",\"\\u2136\",\"\\u2137\",\"\\u2138\"];this.allLetters=this.capitalLatin.concat(this.smallLatin,this.capitalLatinFullWidth,this.smallLatinFullWidth,\nthis.capitalLatinBold,this.smallLatinBold,this.capitalLatinItalic,this.capitalLatinBoldItalic,this.smallLatinBoldItalic,this.smallLatinItalic,this.capitalLatinScript,this.smallLatinScript,this.capitalLatinBoldScript,this.smallLatinBoldScript,this.capitalLatinFraktur,this.smallLatinFraktur,this.capitalLatinDoubleStruck,this.smallLatinDoubleStruck,this.capitalLatinBoldFraktur,this.smallLatinBoldFraktur,this.capitalLatinSansSerif,this.smallLatinSansSerif,this.capitalLatinSansSerifBold,this.smallLatinSansSerifBold,\nthis.capitalLatinSansSerifItalic,this.smallLatinSansSerifItalic,this.capitalLatinSansSerifBoldItalic,this.smallLatinSansSerifBoldItalic,this.capitalLatinMonospace,this.smallLatinMonospace,this.latinDoubleStruckItalic,this.capitalGreek,this.smallGreek,this.capitalGreekBold,this.smallGreekBold,this.capitalGreekItalic,this.smallGreekItalic,this.capitalGreekBoldItalic,this.smallGreekBoldItalic,this.capitalGreekSansSerifBold,this.smallGreekSansSerifBold,this.greekDoubleStruck,this.greekSpecial,this.capitalGreekSansSerifBoldItalic,\nthis.smallGreekSansSerifBoldItalic,this.greekSpecialBold,this.greekSpecialItalic,this.greekSpecialSansSerifBold,this.hebrewLetters);this.additions=\"+\\u00b1\\u2213\\u2214\\u2227\\u2228\\u2229\\u222a\\u228c\\u2293\\u2294\\u229d\\u229e\\u22a4\\u22a5\\u22ba\\u22bb\\u22bc\\u22c4\\u22ce\\u22cf\\u22d2\\u22d3\\u25b3\\u25b7\\u25bd\\u25c1\\u2a5e\\u2295\".split(\"\");this.invisiblePlus_=sre.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications=\"\\u2020\\u2021\\u2210\\u2217\\u2218\\u2219\\u2240\\u229a\\u229b\\u22a0\\u22a1\\u22c5\\u22c6\\u22c7\\u22c9\\u22ca\\u22cb\\u22cc\\u25cb\\u00b7*\".split(\"\");\nthis.invisibleTimes_=sre.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions=\"-\\u2052\\u207b\\u208b\\u2212\\u2216\\u2238\\u2242\\u2296\\u229f\\u2796\\u2a29\\u2a2a\\u2a2b\\u2a2c\\u2a3a\\u2a41\\u2a6c\\ufe63\\uff0d\\u2010\\u2011\".split(\"\");this.divisions=\"/\\u00f7\\u2044\\u2215\\u2298\\u27cc\\u29bc\\u2a38\".split(\"\");this.functionApplication_=sre.SemanticUtil.numberToUnicode(8289);this.equalities=\"=~\\u207c\\u208c\\u223c\\u223d\\u2243\\u2245\\u2248\\u224a\\u224b\\u224c\\u224d\\u224e\\u2251\\u2252\\u2253\\u2254\\u2255\\u2256\\u2257\\u2258\\u2259\\u225a\\u225b\\u225c\\u225d\\u225e\\u225f\\u2261\\u2263\\u29e4\\u2a66\\u2a6e\\u2a6f\\u2a70\\u2a71\\u2a72\\u2a73\\u2a74\\u2a75\\u2a76\\u2a77\\u2a78\\u22d5\\u2a6d\\u2a6a\\u2a6b\\u2a6c\\ufe66\\uff1d\".split(\"\");\nthis.inequalities=\"<>\\u2241\\u2242\\u2244\\u2246\\u2247\\u2249\\u224f\\u2250\\u2260\\u2262\\u2264\\u2265\\u2266\\u2267\\u2268\\u2269\\u226a\\u226b\\u226c\\u226d\\u226e\\u226f\\u2270\\u2271\\u2272\\u2273\\u2274\\u2275\\u2276\\u2277\\u2278\\u2279\\u227a\\u227b\\u227c\\u227d\\u227e\\u227f\\u2280\\u2281\\u22d6\\u22d7\\u22d8\\u22d9\\u22da\\u22db\\u22dc\\u22dd\\u22de\\u22df\\u22e0\\u22e1\\u22e2\\u22e3\\u22e4\\u22e5\\u22e6\\u22e7\\u22e8\\u22e9\\u2a79\\u2a7a\\u2a7b\\u2a7c\\u2a7d\\u2a7e\\u2a7f\\u2a80\\u2a81\\u2a82\\u2a83\\u2a84\\u2a85\\u2a86\\u2a87\\u2a88\\u2a89\\u2a8a\\u2a8b\\u2a8c\\u2a8d\\u2a8e\\u2a8f\\u2a90\\u2a91\\u2a92\\u2a93\\u2a94\\u2a95\\u2a96\\u2a97\\u2a98\\u2a99\\u2a9a\\u2a9b\\u2a9c\\u2a9d\\u2a9e\\u2a9f\\u2aa0\\u2aa1\\u2aa2\\u2aa3\\u2aa4\\u2aa5\\u2aa6\\u2aa7\\u2aa8\\u2aa9\\u2aaa\\u2aab\\u2aac\\u2aad\\u2aae\\u2aaf\\u2ab0\\u2ab1\\u2ab2\\u2ab3\\u2ab4\\u2ab5\\u2ab6\\u2ab7\\u2ab8\\u2ab9\\u2aba\\u2abb\\u2abc\\u2af7\\u2af8\\u2af9\\u2afa\\u29c0\\u29c1\\ufe64\\ufe65\\uff1c\\uff1e\".split(\"\");\nthis.relations=[];this.arrows=\"\\u2190\\u2191\\u2192\\u2193\\u2194\\u2195\\u2196\\u2197\\u2198\\u2199\\u219a\\u219b\\u219c\\u219d\\u219e\\u219f\\u21a0\\u21a1\\u21a2\\u21a3\\u21a4\\u21a5\\u21a6\\u21a7\\u21a8\\u21a9\\u21aa\\u21ab\\u21ac\\u21ad\\u21ae\\u21af\\u21b0\\u21b1\\u21b2\\u21b3\\u21b4\\u21b5\\u21b6\\u21b7\\u21b8\\u21b9\\u21ba\\u21bb\\u21c4\\u21c5\\u21c6\\u21c7\\u21c8\\u21c9\\u21ca\\u21cd\\u21ce\\u21cf\\u21d0\\u21d1\\u21d2\\u21d3\\u21d4\\u21d5\\u21d6\\u21d7\\u21d8\\u21d9\\u21da\\u21db\\u21dc\\u21dd\\u21de\\u21df\\u21e0\\u21e1\\u21e2\\u21e3\\u21e4\\u21e5\\u21e6\\u21e7\\u21e8\\u21e9\\u21ea\\u21eb\\u21ec\\u21ed\\u21ee\\u21ef\\u21f0\\u21f1\\u21f2\\u21f3\\u21f4\\u21f5\\u21f6\\u21f7\\u21f8\\u21f9\\u21fa\\u21fb\\u21fc\\u21fd\\u21fe\\u21ff\\u2301\\u2303\\u2304\\u2324\\u238b\\u2794\\u2798\\u2799\\u279a\\u279b\\u279c\\u279d\\u279e\\u279f\\u27a0\\u27a1\\u27a2\\u27a3\\u27a4\\u27a5\\u27a6\\u27a7\\u27a8\\u27a9\\u27aa\\u27ab\\u27ac\\u27ad\\u27ae\\u27af\\u27b1\\u27b2\\u27b3\\u27b4\\u27b5\\u27b6\\u27b7\\u27b8\\u27b9\\u27ba\\u27bb\\u27bc\\u27bd\\u27be\\u27f0\\u27f1\\u27f2\\u27f3\\u27f4\\u27f5\\u27f6\\u27f7\\u27f8\\u27f9\\u27fa\\u27fb\\u27fc\\u27fd\\u27fe\\u27ff\\u2900\\u2901\\u2902\\u2903\\u2904\\u2905\\u2906\\u2907\\u2908\\u2909\\u290a\\u290b\\u290c\\u290d\\u290e\\u290f\\u2910\\u2911\\u2912\\u2913\\u2914\\u2915\\u2916\\u2917\\u2918\\u2919\\u291a\\u291b\\u291c\\u291d\\u291e\\u291f\\u2920\\u2921\\u2922\\u2923\\u2924\\u2925\\u2926\\u2927\\u2928\\u2929\\u292a\\u292d\\u292e\\u292f\\u2930\\u2931\\u2932\\u2933\\u2934\\u2935\\u2936\\u2937\\u2938\\u2939\\u293a\\u293b\\u293c\\u293d\\u293e\\u293f\\u2940\\u2941\\u2942\\u2943\\u2944\\u2945\\u2946\\u2947\\u2948\\u2949\\u2970\\u2971\\u2972\\u2973\\u2974\\u2975\\u2976\\u2977\\u2978\\u2979\\u297a\\u297b\\u29b3\\u29b4\\u29bd\\u29ea\\u29ec\\u29ed\\u2a17\\u2b00\\u2b01\\u2b02\\u2b03\\u2b04\\u2b05\\u2b06\\u2b07\\u2b08\\u2b09\\u2b0a\\u2b0b\\u2b0c\\u2b0d\\u2b0e\\u2b0f\\u2b10\\u2b11\\u2b30\\u2b31\\u2b32\\u2b33\\u2b34\\u2b35\\u2b36\\u2b37\\u2b38\\u2b39\\u2b3a\\u2b3b\\u2b3c\\u2b3d\\u2b3e\\u2b3f\\u2b40\\u2b41\\u2b42\\u2b43\\u2b44\\u2b45\\u2b46\\u2b47\\u2b48\\u2b49\\u2b4a\\u2b4b\\u2b4c\\uffe9\\uffea\\uffeb\\uffec\\u21bc\\u21bd\\u21be\\u21bf\\u21c0\\u21c1\\u21c2\\u21c3\\u21cb\\u21cc\\u294a\\u294b\\u294c\\u294d\\u294e\\u294f\\u2950\\u2951\\u2952\\u2953\\u2954\\u2955\\u2956\\u2957\\u2958\\u2959\\u295a\\u295b\\u295c\\u295d\\u295e\\u295f\\u2960\\u2961\\u2962\\u2963\\u2964\\u2965\\u2966\\u2967\\u2968\\u2969\\u296a\\u296b\\u296c\\u296d\\u296e\\u296f\\u297c\\u297d\\u297e\\u297f\".split(\"\");\nthis.sumOps=\"\\u2140\\u220f\\u2210\\u2211\\u22c0\\u22c1\\u22c2\\u22c3\\u2a00\\u2a01\\u2a02\\u2a03\\u2a04\\u2a05\\u2a06\\u2a07\\u2a08\\u2a09\\u2a0a\\u2a0b\\u2afc\\u2aff\".split(\"\");this.intOps=\"\\u222b\\u222c\\u222d\\u222e\\u222f\\u2230\\u2231\\u2232\\u2233\\u2a0c\\u2a0d\\u2a0e\\u2a0f\\u2a10\\u2a11\\u2a12\\u2a13\\u2a14\\u2a15\\u2a16\\u2a17\\u2a18\\u2a19\\u2a1a\\u2a1b\\u2a1c\".split(\"\");this.prefixOps=\"\\u2200\\u2203\\u2206\\u2207\\u2202\\u2201\\u2204\".split(\"\");this.prefixOpsBold=[\"\\ud835\\udec1\",\"\\ud835\\udedb\",\"\\ud835\\udfca\",\"\\ud835\\udfcb\"];this.prefixOpsItalic=\n[\"\\ud835\\udefb\",\"\\ud835\\udf15\"];this.prefixOpsSansSerifBold=[\"\\ud835\\udf6f\",\"\\ud835\\udf89\"];this.operatorBits=\"\\u2320\\u2321\\u23b6\\u23aa\\u23ae\\u23af\\u23b2\\u23b3\\u23b7\".split(\"\");this.digitsNormal=\"0123456789\".split(\"\");this.digitsFullWidth=\"\\uff10\\uff11\\uff12\\uff13\\uff14\\uff15\\uff16\\uff17\\uff18\\uff19\".split(\"\");this.digitsBold=\"\\ud835\\udfce \\ud835\\udfcf \\ud835\\udfd0 \\ud835\\udfd1 \\ud835\\udfd2 \\ud835\\udfd3 \\ud835\\udfd4 \\ud835\\udfd5 \\ud835\\udfd6 \\ud835\\udfd7\".split(\" \");this.digitsDoubleStruck=\"\\ud835\\udfd8 \\ud835\\udfd9 \\ud835\\udfda \\ud835\\udfdb \\ud835\\udfdc \\ud835\\udfdd \\ud835\\udfde \\ud835\\udfdf \\ud835\\udfe0 \\ud835\\udfe1\".split(\" \");\nthis.digitsSansSerif=\"\\ud835\\udfe2 \\ud835\\udfe3 \\ud835\\udfe4 \\ud835\\udfe5 \\ud835\\udfe6 \\ud835\\udfe7 \\ud835\\udfe8 \\ud835\\udfe9 \\ud835\\udfea \\ud835\\udfeb\".split(\" \");this.digitsSansSerifBold=\"\\ud835\\udfec \\ud835\\udfed \\ud835\\udfee \\ud835\\udfef \\ud835\\udff0 \\ud835\\udff1 \\ud835\\udff2 \\ud835\\udff3 \\ud835\\udff4 \\ud835\\udff5\".split(\" \");this.digitsMonospace=\"\\ud835\\udff6 \\ud835\\udff7 \\ud835\\udff8 \\ud835\\udff9 \\ud835\\udffa \\ud835\\udffb \\ud835\\udffc \\ud835\\udffd \\ud835\\udffe \\ud835\\udfff\".split(\" \");this.digitsSuperscript=\n\"\\u00b2\\u00b3\\u00b9\\u2070\\u2074\\u2075\\u2076\\u2077\\u2078\\u2079\".split(\"\");this.digitsSubscript=\"\\u2080\\u2081\\u2082\\u2083\\u2084\\u2085\\u2086\\u2087\\u2088\\u2089\".split(\"\");this.fractions=\"\\u00bc\\u00bd\\u00be\\u2150\\u2151\\u2152\\u2153\\u2154\\u2155\\u2156\\u2157\\u2158\\u2159\\u215a\\u215b\\u215c\\u215d\\u215e\\u215f\\u2189\".split(\"\");this.enclosedNumbers=\"\\u2460\\u2461\\u2462\\u2463\\u2464\\u2465\\u2466\\u2467\\u2468\\u2469\\u246a\\u246b\\u246c\\u246d\\u246e\\u246f\\u2470\\u2471\\u2472\\u2473\\u24ea\\u24eb\\u24ec\\u24ed\\u24ee\\u24ef\\u24f0\\u24f1\\u24f2\\u24f3\\u24f4\\u24f5\\u24f6\\u24f7\\u24f8\\u24f9\\u24fa\\u24fb\\u24fc\\u24fd\\u24fe\\u24ff\\u2776\\u2777\\u2778\\u2779\\u277a\\u277b\\u277c\\u277d\\u277e\\u277f\\u2780\\u2781\\u2782\\u2783\\u2784\\u2785\\u2786\\u2787\\u2788\\u2789\\u278a\\u278b\\u278c\\u278d\\u278e\\u278f\\u2790\\u2791\\u2792\\u2793\\u3248\\u3249\\u324a\\u324b\\u324c\\u324d\\u324e\\u324f\\u3251\\u3252\\u3253\\u3254\\u3255\\u3256\\u3257\\u3258\\u3259\\u325a\\u325b\\u325c\\u325d\\u325e\\u325f\\u32b1\\u32b2\\u32b3\\u32b4\\u32b5\\u32b6\\u32b7\\u32b8\\u32b9\\u32ba\\u32bb\\u32bc\\u32bd\\u32be\\u32bf\".split(\"\");\nthis.fencedNumbers=\"\\u2474\\u2475\\u2476\\u2477\\u2478\\u2479\\u247a\\u247b\\u247c\\u247d\\u247e\\u247f\\u2480\\u2481\\u2482\\u2483\\u2484\\u2485\\u2486\\u2487\".split(\"\");this.punctuatedNumbers=\"\\u2488 \\u2489 \\u248a \\u248b \\u248c \\u248d \\u248e \\u248f \\u2490 \\u2491 \\u2492 \\u2493 \\u2494 \\u2495 \\u2496 \\u2497 \\u2498 \\u2499 \\u249a \\u249b \\ud83c\\udd00 \\ud83c\\udd01 \\ud83c\\udd02 \\ud83c\\udd03 \\ud83c\\udd04 \\ud83c\\udd05 \\ud83c\\udd06 \\ud83c\\udd07 \\ud83c\\udd08 \\ud83c\\udd09 \\ud83c\\udd0a\".split(\" \");this.digits=this.digitsNormal.concat(this.digitsFullWidth,\nthis.digitsBold,this.digitsDoubleStruck,this.digitsSansSerif,this.digitsSansSerifBold,this.digitsMonospace);this.numbers=this.fractions.concat(this.digitsSuperscript,this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.allNumbers=this.digits.concat(this.numbers);this.trigonometricFunctions=\"cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan\".split(\" \");this.hyperbolicFunctions=\"cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh\".split(\" \");\nthis.algebraicFunctions=\"deg det dim hom ker Tr tr\".split(\" \");this.elementaryFunctions=\"log ln lg exp expt gcd gcd arg im re Pr\".split(\" \");this.prefixFunctions=this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions=\"inf lim liminf limsup max min sup injlim projlim\".split(\" \");this.infixFunctions=[\"mod\",\"rem\"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.UNKNOWN},\n{set:this.colons,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COLON},{set:this.commas,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COMMA},{set:this.ellipses,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DASH},{set:this.primes,type:sre.SemanticAttr.Type.PUNCTUATION,\nrole:sre.SemanticAttr.Role.PRIME},{set:this.degrees,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DEGREE},{set:this.leftFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.OPEN},{set:this.rightFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.CLOSE},{set:this.topFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.TOP},{set:this.bottomFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,\ntype:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,\ntype:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.smallLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},\n{set:this.capitalLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},\n{set:this.smallLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},\n{set:this.capitalLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.capitalLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,\nfont:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.smallLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCKITALIC},{set:this.smallGreek,\ntype:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},\n{set:this.smallGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,\nfont:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},\n{set:this.smallGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.greekDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.greekSpecial,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.greekSpecialBold,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.greekSpecialItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.greekSpecialSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.hebrewLetters,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.OTHERLETTER,font:sre.SemanticAttr.Font.NORMAL},\n{set:this.digitsNormal,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},\n{set:this.digitsSansSerif,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.FLOAT},{set:this.additions,\ntype:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.ADDITION},{set:this.multiplications,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP},{set:this.prefixOpsBold,type:sre.SemanticAttr.Type.OPERATOR,\nrole:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.BOLD},{set:this.prefixOpsItalic,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.ITALIC},{set:this.prefixOpsSansSerifBold,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.equalities,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.EQUALITY},{set:this.inequalities,type:sre.SemanticAttr.Type.RELATION,\nrole:sre.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.ARROW},{set:this.sumOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.SUM},{set:this.intOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.LIMFUNC},{set:this.prefixFunctions,\ntype:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.INFIXFUNC}];this.meaning_=this.initMeaning_()};goog.addSingletonGetter(sre.SemanticAttr);\nsre.SemanticAttr.Type={PUNCTUATION:\"punctuation\",FENCE:\"fence\",NUMBER:\"number\",IDENTIFIER:\"identifier\",TEXT:\"text\",OPERATOR:\"operator\",RELATION:\"relation\",LARGEOP:\"largeop\",FUNCTION:\"function\",ACCENT:\"accent\",FENCED:\"fenced\",FRACTION:\"fraction\",PUNCTUATED:\"punctuated\",RELSEQ:\"relseq\",MULTIREL:\"multirel\",INFIXOP:\"infixop\",PREFIXOP:\"prefixop\",POSTFIXOP:\"postfixop\",APPL:\"appl\",INTEGRAL:\"integral\",BIGOP:\"bigop\",SQRT:\"sqrt\",ROOT:\"root\",LIMUPPER:\"limupper\",LIMLOWER:\"limlower\",LIMBOTH:\"limboth\",SUBSCRIPT:\"subscript\",\nSUPERSCRIPT:\"superscript\",UNDERSCORE:\"underscore\",OVERSCORE:\"overscore\",TENSOR:\"tensor\",TABLE:\"table\",MULTILINE:\"multiline\",MATRIX:\"matrix\",VECTOR:\"vector\",CASES:\"cases\",ROW:\"row\",LINE:\"line\",CELL:\"cell\",ENCLOSE:\"enclose\",INFERENCE:\"inference\",RULELABEL:\"rulelabel\",CONCLUSION:\"conclusion\",PREMISES:\"premises\",UNKNOWN:\"unknown\",EMPTY:\"empty\"};\nsre.SemanticAttr.Role={COMMA:\"comma\",ELLIPSIS:\"ellipsis\",FULLSTOP:\"fullstop\",DASH:\"dash\",PRIME:\"prime\",DEGREE:\"degree\",VBAR:\"vbar\",COLON:\"colon\",OPENFENCE:\"openfence\",CLOSEFENCE:\"closefence\",APPLICATION:\"application\",DUMMY:\"dummy\",UNIT:\"unit\",LABEL:\"label\",OPEN:\"open\",CLOSE:\"close\",TOP:\"top\",BOTTOM:\"bottom\",NEUTRAL:\"neutral\",LATINLETTER:\"latinletter\",GREEKLETTER:\"greekletter\",OTHERLETTER:\"otherletter\",NUMBERSET:\"numbersetletter\",INTEGER:\"integer\",FLOAT:\"float\",OTHERNUMBER:\"othernumber\",MIXED:\"mixed\",\nMULTIACCENT:\"multiaccent\",OVERACCENT:\"overaccent\",UNDERACCENT:\"underaccent\",UNDEROVER:\"underover\",SUBSUP:\"subsup\",LEFTSUB:\"leftsub\",LEFTSUPER:\"leftsuper\",RIGHTSUB:\"rightsub\",RIGHTSUPER:\"rightsuper\",LEFTRIGHT:\"leftright\",ABOVEBELOW:\"abovebelow\",SETEMPTY:\"set empty\",SETEXT:\"set extended\",SETSINGLE:\"set singleton\",SETCOLLECT:\"set collection\",STRING:\"string\",SEQUENCE:\"sequence\",ENDPUNCT:\"endpunct\",STARTPUNCT:\"startpunct\",TEXT:\"text\",NEGATIVE:\"negative\",POSITIVE:\"positive\",NEGATION:\"negation\",MULTIOP:\"multiop\",\nPREFIXOP:\"prefix operator\",POSTFIXOP:\"postfix operator\",LIMFUNC:\"limit function\",INFIXFUNC:\"infix function\",PREFIXFUNC:\"prefix function\",POSTFIXFUNC:\"postfix function\",SIMPLEFUNC:\"simple function\",COMPFUNC:\"composed function\",SUM:\"sum\",INTEGRAL:\"integral\",ADDITION:\"addition\",MULTIPLICATION:\"multiplication\",SUBTRACTION:\"subtraction\",IMPLICIT:\"implicit\",DIVISION:\"division\",VULGAR:\"vulgar\",EQUALITY:\"equality\",INEQUALITY:\"inequality\",ELEMENT:\"element\",ARROW:\"arrow\",DETERMINANT:\"determinant\",ROWVECTOR:\"rowvector\",\nBINOMIAL:\"binomial\",SQUAREMATRIX:\"squarematrix\",MULTILINE:\"multiline\",MATRIX:\"matrix\",VECTOR:\"vector\",CASES:\"cases\",TABLE:\"table\",PROOF:\"proof\",LEFT:\"left\",RIGHT:\"right\",UP:\"up\",DOWN:\"down\",FINAL:\"final\",SINGLE:\"single\",HYP:\"hyp\",AXIOM:\"axiom\",UNKNOWN:\"unknown\"};\nsre.SemanticAttr.Font={BOLD:\"bold\",BOLDFRAKTUR:\"bold-fraktur\",BOLDITALIC:\"bold-italic\",BOLDSCRIPT:\"bold-script\",CALIGRAPHIC:\"caligraphic\",CALIGRAPHICBOLD:\"caligraphic-bold\",DOUBLESTRUCK:\"double-struck\",DOUBLESTRUCKITALIC:\"double-struck-italic\",FRAKTUR:\"fraktur\",ITALIC:\"italic\",MONOSPACE:\"monospace\",NORMAL:\"normal\",OLDSTYLE:\"oldstyle\",OLDSTYLEBOLD:\"oldstyle-bold\",SCRIPT:\"script\",SANSSERIF:\"sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLD:\"sans-serif-bold\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",\nUNKNOWN:\"unknown\"};sre.SemanticAttr.equal=function(a,b){return a.type===b.type&&a.role===b.role&&a.font===b.font};sre.SemanticAttr.prototype.lookupType=function(a){return sre.SemanticAttr.Type.UNKNOWN};sre.SemanticAttr.prototype.lookupRole=function(a){return sre.SemanticAttr.Role.UNKNOWN};sre.SemanticAttr.lookupMeaning=function(a){return sre.SemanticAttr.getInstance().lookupMeaning_(a)};sre.SemanticAttr.invisibleTimes=function(){return sre.SemanticAttr.getInstance().invisibleTimes_};\nsre.SemanticAttr.invisiblePlus=function(){return sre.SemanticAttr.getInstance().invisiblePlus_};sre.SemanticAttr.invisibleComma=function(){return sre.SemanticAttr.getInstance().invisibleComma_};sre.SemanticAttr.functionApplication=function(){return sre.SemanticAttr.getInstance().functionApplication_};\nsre.SemanticAttr.isMatchingFenceRole=function(a,b){return a==sre.SemanticAttr.Role.OPEN&&b==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL&&b==sre.SemanticAttr.Role.NEUTRAL||a==sre.SemanticAttr.Role.TOP&&b==sre.SemanticAttr.Role.BOTTOM};sre.SemanticAttr.isMatchingFence=function(a,b){return sre.SemanticAttr.getInstance().isMatchingFence_(a,b)};sre.SemanticAttr.isOpeningFence=function(a){return a==sre.SemanticAttr.Role.OPEN||a==sre.SemanticAttr.Role.NEUTRAL};\nsre.SemanticAttr.isClosingFence=function(a){return a==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL};sre.SemanticAttr.isEmbellishedType=function(a){return a===sre.SemanticAttr.Type.OPERATOR||a===sre.SemanticAttr.Type.RELATION||a===sre.SemanticAttr.Type.FENCE||a===sre.SemanticAttr.Type.PUNCTUATION};sre.SemanticAttr.isCharacterD=function(a){return-1!=\"d \\u2146 \\uff44 \\ud835\\udc1d \\ud835\\udc51 \\ud835\\udcb9 \\ud835\\udced \\ud835\\udd21 \\ud835\\udd55 \\ud835\\udd89 \\ud835\\uddbd \\ud835\\uddf1 \\ud835\\ude25 \\ud835\\ude8d\".split(\" \").indexOf(a)};\nsre.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};sre.SemanticAttr.prototype.initMeaning_=function(){for(var a={},b=0,c;c=this.symbolSetToSemantic_[b];b++)c.set.forEach(function(d){a[d]={role:c.role||sre.SemanticAttr.Role.UNKNOWN,type:c.type||sre.SemanticAttr.Type.UNKNOWN,font:c.font||sre.SemanticAttr.Font.UNKNOWN}});return a};\nsre.SemanticAttr.prototype.lookupMeaning_=function(a){return this.meaning_[a]||{role:sre.SemanticAttr.Role.UNKNOWN,type:sre.SemanticAttr.Type.UNKNOWN,font:sre.SemanticAttr.Font.UNKNOWN}};sre.SemanticNode=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=sre.SemanticAttr.Type.UNKNOWN;this.role=sre.SemanticAttr.Role.UNKNOWN;this.font=sre.SemanticAttr.Font.UNKNOWN;this.embellished=null;this.fencePointer=\"\";this.childNodes=[];this.textContent=\"\";this.mathmlTree=null;this.contentNodes=[];this.annotation={};this.attributes={}};\nsre.SemanticNode.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));for(c=0;d=this.contentNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};sre.SemanticNode.Attribute={EMBELLISHED:\"embellished\",FENCEPOINTER:\"fencepointer\",FONT:\"font\",ID:\"id\",ANNOTATION:\"annotation\",ROLE:\"role\",TYPE:\"type\",CHILDREN:\"children\",CONTENT:\"content\",TEXT:\"$t\"};\nsre.SemanticNode.prototype.xml=function(a,b){var c=function(e,f){f=f.map(function(k){return k.xml(a,b)});e=a.createElementNS(\"\",e);for(var g=0,h;h=f[g];g++)e.appendChild(h);return e},d=a.createElementNS(\"\",this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CONTENT,this.contentNodes));0<this.childNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CHILDREN,this.childNodes));return d};\nsre.SemanticNode.prototype.toString=function(a){var b=new sre.SystemExternal.xmldom.XMLSerializer,c=(new sre.SystemExternal.xmldom.DOMParser).parseFromString(\"<snode/>\",\"text/xml\");return b.serializeToString(this.xml(c,a))};sre.SemanticNode.prototype.xmlAttributes_=function(a){for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a.setAttribute(d[0],d[1]);this.addExternalAttributes_(a)};\nsre.SemanticNode.prototype.allAttributes=function(){var a=[];a.push([sre.SemanticNode.Attribute.ROLE,this.role]);this.font!=sre.SemanticAttr.Font.UNKNOWN&&a.push([sre.SemanticNode.Attribute.FONT,this.font]);Object.keys(this.annotation).length&&a.push([sre.SemanticNode.Attribute.ANNOTATION,this.xmlAnnotation()]);this.embellished&&a.push([sre.SemanticNode.Attribute.EMBELLISHED,this.embellished]);this.fencePointer&&a.push([sre.SemanticNode.Attribute.FENCEPOINTER,this.fencePointer]);a.push([sre.SemanticNode.Attribute.ID,\nthis.id]);return a};sre.SemanticNode.prototype.addExternalAttributes_=function(a){for(var b in this.attributes)a.setAttribute(b,this.attributes[b])};sre.SemanticNode.prototype.xmlAnnotation=function(){var a=[],b;for(b in this.annotation)this.annotation[b].forEach(function(c){a.push(b+\":\"+c)});return a.join(\";\")};\nsre.SemanticNode.prototype.toJson=function(){var a={};a[sre.SemanticNode.Attribute.TYPE]=this.type;for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a[d[0]]=d[1].toString();this.textContent&&(a[sre.SemanticNode.Attribute.TEXT]=this.textContent);this.childNodes.length&&(a[sre.SemanticNode.Attribute.CHILDREN]=this.childNodes.map(function(e){return e.toJson()}));this.contentNodes.length&&(a[sre.SemanticNode.Attribute.CONTENT]=this.contentNodes.map(function(e){return e.toJson()}));return a};\nsre.SemanticNode.prototype.updateContent=function(a,b){b=b?a.replace(/^[ \\f\\n\\r\\t\\v\\u200b]*/,\"\").replace(/[ \\f\\n\\r\\t\\v\\u200b]*$/,\"\"):a.trim();a=a&&!b?a:b;this.textContent!=a&&(b=sre.SemanticAttr.lookupMeaning(a),this.textContent=a,this.role=b.role,this.type=b.type,this.font=b.font)};sre.SemanticNode.prototype.addMathmlNodes=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};\nsre.SemanticNode.prototype.removeMathmlNodes_=function(a){for(var b=this.mathml,c=0,d;d=a[c];c++)d=b.indexOf(d),-1!=d&&b.splice(d,1);this.mathml=b};sre.SemanticNode.prototype.appendChild=function(a){this.childNodes.push(a);this.addMathmlNodes(a.mathml);a.parent=this};\nsre.SemanticNode.prototype.replaceChild=function(a,b){var c=this.childNodes.indexOf(a);if(-1!=c){a.parent=null;b.parent=this;this.childNodes[c]=b;c=a.mathml.filter(function(e){return-1==b.mathml.indexOf(e)});var d=b.mathml.filter(function(e){return-1==a.mathml.indexOf(e)});this.removeMathmlNodes_(c);this.addMathmlNodes(d)}};sre.SemanticNode.prototype.appendContentNode=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes(a.mathml),a.parent=this)};\nsre.SemanticNode.prototype.removeContentNode=function(a){a&&(a=this.contentNodes.indexOf(a),-1!=a&&this.contentNodes.slice(a,1))};\nsre.SemanticNode.prototype.equals=function(a){if(!a||this.type!==a.type||this.role!==a.role||this.textContent!==a.textContent||this.childNodes.length!==a.childNodes.length||this.contentNodes.length!==a.contentNodes.length)return!1;for(var b=0,c,d;c=this.childNodes[b],d=a.childNodes[b];b++)if(!c.equals(d))return!1;for(b=0;c=this.contentNodes[b],d=a.contentNodes[b];b++)if(!c.equals(d))return!1;return!0};sre.SemanticNode.prototype.displayTree=function(){console.info(this.displayTree_(0))};\nsre.SemanticNode.prototype.displayTree_=function(a){a++;var b=Array(a).join(\"  \"),c=\"\";c+=\"\\n\"+b+this.toString();c+=\"\\n\"+b+\"MathmlTree:\";c+=\"\\n\"+b+this.mathmlTreeString_();c+=\"\\n\"+b+\"MathML:\";for(var d=0,e;e=this.mathml[d];d++)c+=\"\\n\"+b+e.toString();c+=\"\\n\"+b+\"Begin Content\";this.contentNodes.forEach(function(f){c+=f.displayTree_(a)});c+=\"\\n\"+b+\"End Content\";c+=\"\\n\"+b+\"Begin Children\";this.childNodes.forEach(function(f){c+=f.displayTree_(a)});return c+=\"\\n\"+b+\"End Children\"};\nsre.SemanticNode.prototype.mathmlTreeString_=function(){return this.mathmlTree?this.mathmlTree.toString():\"EMPTY\"};sre.SemanticNode.prototype.addAnnotation=function(a,b){b&&this.addAnnotation_(a,b)};sre.SemanticNode.prototype.addAnnotation_=function(a,b){var c=this.annotation[a];c?c.push(b):this.annotation[a]=[b]};sre.SemanticNode.prototype.getAnnotation=function(a){return(a=this.annotation[a])?a:[]};\nsre.SemanticNode.prototype.hasAnnotation=function(a,b){return(a=this.annotation[a])?-1!==a.indexOf(b):!1};sre.SemanticNode.prototype.parseAnnotation=function(a){a=a.split(\";\");for(var b=0,c=a.length;b<c;b++){var d=a[b].split(\":\");this.addAnnotation(d[0],d[1])}};sre.SemanticNode.prototype.meaning=function(){return{type:this.type,role:this.role,font:this.font}};sre.SemanticAnnotator=function(a,b){this.domain=a;this.func=b;this.name=a};sre.SemanticAnnotator.prototype.annotate=function(a){a.childNodes.forEach(goog.bind(this.annotate,this));a.addAnnotation(this.domain,this.func(a))};sre.SemanticVisitor=function(a,b,c){this.domain=a;this.func=b;this.name=a;this.def=c||{}};sre.SemanticVisitor.prototype.visit=function(a,b){b=this.func(a,b);a.addAnnotation(this.domain,b[0]);for(var c=0,d;d=a.childNodes[c];c++)b=this.visit(d,b[1]);return b};sre.SemanticAnnotations=function(){this.annotators={};this.visitors={};this.counter=0};goog.addSingletonGetter(sre.SemanticAnnotations);sre.SemanticAnnotations.prototype.register=function(a){a.name=a.domain+this.counter++;(a instanceof sre.SemanticAnnotator?this.annotators:this.visitors)[a.name]=a};sre.SemanticAnnotations.prototype.unregister=function(a){delete this.annotators[a];delete this.visitors[a]};\nsre.SemanticAnnotations.prototype.annotate=function(a){for(var b in this.annotators)this.annotators[b].annotate(a);for(var c in this.visitors)this.visitors[c].visit(a,this.visitors[c].def)};sre.SemanticOrdering=function(){this.comparators=[]};goog.addSingletonGetter(sre.SemanticOrdering);sre.SemanticOrdering.prototype.add=function(a){this.comparators.push(a)};sre.SemanticOrdering.prototype.apply=function(a,b){for(var c=0,d;d=this.comparators[c];c++)if(d=d.compare(a,b),0!==d)return d;return 0};sre.SemanticOrdering.prototype.sort=function(a){a.sort(goog.bind(this.apply,this))};\nsre.SemanticOrdering.prototype.reduce=function(a){if(1>=a.length)return a;a=a.slice();this.sort(a);var b=[];do{var c=a.pop();b.push(c)}while(c&&a.length&&0===this.apply(a[a.length-1],c));return b};sre.SemanticComparator=function(a,b){this.comparator=a;this.type=b||null;sre.SemanticOrdering.getInstance().add(this)};sre.SemanticComparator.prototype.compare=function(a,b){return this.type&&this.type===a.type&&this.type===b.type?this.comparator(a,b):0};\nsre.SemanticOrdering.simpleFunction=function(a,b){return a.role===sre.SemanticAttr.Role.SIMPLEFUNC?1:b.role===sre.SemanticAttr.Role.SIMPLEFUNC?-1:0};new sre.SemanticComparator(sre.SemanticOrdering.simpleFunction,sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticDefault=function(){this.map_={}};sre.SemanticDefault.prototype.add=function(a,b){this.map_[sre.SemanticDefault.key_(a,b.font)]=b};sre.SemanticDefault.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};sre.SemanticDefault.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};sre.SemanticDefault.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticDefault.key_=function(a,b){return b?a+\":\"+b:a};\nsre.SemanticDefault.prototype.size=function(){return Object.keys(this.map_).length};sre.SemanticCollator_=function(){this.map_={}};sre.SemanticCollator_.prototype.add=function(a,b){a=sre.SemanticDefault.key_(a,b.font);var c=this.map_[a];c?c.push(b):this.map_[a]=[b]};sre.SemanticCollator_.prototype.addNode=function(a){this.add(a.textContent,a)};sre.SemanticCollator_.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};\nsre.SemanticCollator_.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticCollator_.prototype.copyCollator=goog.abstractMethod;sre.SemanticCollator_.prototype.copy=function(){var a=this.copyCollator(),b;for(b in this.map_)a.map_[b]=this.map_[b];return a};sre.SemanticCollator_.prototype.minimize=function(){for(var a in this.map_)1===this.map_[a].length&&delete this.map_[a]};\nsre.SemanticCollator_.prototype.reduce=function(){for(var a in this.map_)1!==this.map_[a].length&&(this.map_[a]=sre.SemanticOrdering.getInstance().reduce(this.map_[a]))};sre.SemanticCollator_.prototype.minimalCollator=function(){var a=this.copy(),b;for(b in a.map_)1===a.map_[b].length&&delete a.map_[b];return a};sre.SemanticCollator_.prototype.isMultiValued=function(){for(var a in this.map_)if(1<this.map_[a].length)return!0;return!1};sre.SemanticCollator_.prototype.isEmpty=function(){return!Object.keys(this.map_).length};\nsre.SemanticNodeCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticNodeCollator,sre.SemanticCollator_);sre.SemanticNodeCollator.prototype.copyCollator=function(){return new sre.SemanticNodeCollator};sre.SemanticNodeCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(\" \"),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push(g.toString());a.push(b+\": \"+e.join(\"\\n\"+c))}return a.join(\"\\n\")};\nsre.SemanticNodeCollator.prototype.collateMeaning=function(){var a=new sre.SemanticMeaningCollator,b;for(b in this.map_)a.map_[b]=this.map_[b].map(function(c){return c.meaning()});return a};sre.SemanticMeaningCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticMeaningCollator,sre.SemanticCollator_);sre.SemanticMeaningCollator.prototype.copyCollator=function(){return new sre.SemanticMeaningCollator};\nsre.SemanticMeaningCollator.prototype.add=function(a,b){var c=this.retrieve(a,b.font);c&&c.find(function(d){return sre.SemanticAttr.equal(d,b)})||sre.SemanticMeaningCollator.superClass_.add.call(this,a,b)};sre.SemanticMeaningCollator.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};\nsre.SemanticMeaningCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(\" \"),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push(\"{type: \"+g.type+\", role: \"+g.role+\", font: \"+g.font+\"}\");a.push(b+\": \"+e.join(\"\\n\"+c))}return a.join(\"\\n\")};sre.SemanticMeaningCollator.prototype.default=function(){var a=new sre.SemanticDefault,b;for(b in this.map_)1===this.map_[b].length&&(a.map_[b]=this.map_[b][0]);return a};\nsre.SemanticMeaningCollator.prototype.newDefault=function(){var a=this.default();this.reduce();var b=this.default();return a.size()!==b.size()?b:null};sre.SemanticNodeFactory=function(){this.idCounter_=-1;this.leafMap=new sre.SemanticNodeCollator;this.defaultMap=new sre.SemanticDefault};sre.SemanticNodeFactory.prototype.createNode_=function(a){\"undefined\"!==typeof a?this.idCounter_=Math.max(this.idCounter_,a):a=++this.idCounter_;return new sre.SemanticNode(a)};sre.SemanticNodeFactory.prototype.makeNode=function(a){return this.createNode_(a)};sre.SemanticNodeFactory.prototype.makeUnprocessed=function(a){var b=this.createNode_();b.mathml=[a];return b};\nsre.SemanticNodeFactory.prototype.makeEmptyNode=function(){var a=this.createNode_();a.type=sre.SemanticAttr.Type.EMPTY;return a};sre.SemanticNodeFactory.prototype.makeContentNode=function(a){var b=this.createNode_();b.updateContent(a);return b};sre.SemanticNodeFactory.prototype.makeMultipleContentNodes=function(a,b){for(var c=[],d=0;d<a;d++)c.push(this.makeContentNode(b));return c};\nsre.SemanticNodeFactory.prototype.makeLeafNode=function(a,b){if(!a)return this.makeEmptyNode();a=this.makeContentNode(a);a.font=b||a.font;if(b=this.defaultMap.retrieveNode(a))a.type=b.type,a.role=b.role,a.font=b.font;this.leafMap.addNode(a);return a};sre.SemanticNodeFactory.prototype.makeBranchNode=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(f){f.parent=e;e.addMathmlNodes(f.mathml)});return e};sre.SemanticParser=function(){};sre.SemanticParser.prototype.parse=function(a){};sre.SemanticParser.prototype.parseList=function(a){};sre.SemanticParser.prototype.getFactory=function(){};sre.SemanticParser.prototype.setFactory=function(a){};sre.SemanticParser.prototype.getType=function(){};sre.SemanticAbstractParser=function(a){this.type_=a;this.factory_=new sre.SemanticNodeFactory};sre.SemanticAbstractParser.prototype.getFactory=function(){return this.factory_};\nsre.SemanticAbstractParser.prototype.setFactory=function(a){this.factory_=a};sre.SemanticAbstractParser.prototype.getType=function(){return this.type_};sre.SemanticAbstractParser.prototype.parse=goog.abstractMethod;sre.SemanticAbstractParser.prototype.parseList=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parse(d));return b};sre.SemanticPred={};sre.SemanticPred.isAttribute=function(a,b){return function(c){c=c[a];a:switch(a){case \"role\":var d=sre.SemanticAttr.Role[b];break a;case \"font\":d=sre.SemanticAttr.Font[b];break a;default:d=sre.SemanticAttr.Type[b]}return c===d}};\nsre.SemanticPred.isAccent=function(a){return sre.SemanticPred.isAttribute(\"type\",\"FENCE\")(a)||sre.SemanticPred.isAttribute(\"type\",\"PUNCTUATION\")(a)||sre.SemanticPred.isAttribute(\"type\",\"OPERATOR\")(a)||sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)||sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"UNKNOWN\")(a)&&!a.textContent.match(new RegExp(sre.SemanticAttr.getInstance().allLetters.join(\"|\")))};\nsre.SemanticPred.isSimpleFunctionScope=function(a){a=a.childNodes;if(0===a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!==sre.SemanticAttr.Type.INFIXOP||a.role===sre.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(sre.SemanticPred.isAttribute(\"type\",\"INFIXOP\"))?!0:!1};sre.SemanticPred.isPrefixFunctionBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isAttribute(\"type\",\"APPL\")(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};\nsre.SemanticPred.isBigOpBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};sre.SemanticPred.isIntegralDxBoundary=function(a,b){return!!b&&sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(b)&&sre.SemanticAttr.isCharacterD(a.textContent)};sre.SemanticPred.isIntegralDxBoundarySingle=function(a){if(sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&sre.SemanticAttr.isCharacterD(b)}return!1};\nsre.SemanticPred.isGeneralFunctionBoundary=function(a){return sre.SemanticPred.isRelation(a)||sre.SemanticPred.isPunctuation(a)};sre.SemanticPred.isEmbellished=function(a){return a.embellished?a.embellished:sre.SemanticAttr.isEmbellishedType(a.type)?a.type:null};sre.SemanticPred.isOperator=function(a){return sre.SemanticPred.isAttribute(\"type\",\"OPERATOR\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"OPERATOR\")(a)};\nsre.SemanticPred.isRelation=function(a){return sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"RELATION\")(a)};sre.SemanticPred.isPunctuation=function(a){return sre.SemanticPred.isAttribute(\"type\",\"PUNCTUATION\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"PUNCTUATION\")(a)};sre.SemanticPred.isFence=function(a){return sre.SemanticPred.isAttribute(\"type\",\"FENCE\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"FENCE\")(a)};\nsre.SemanticPred.isElligibleEmbellishedFence=function(a){if(!a||!sre.SemanticPred.isFence(a))return!1;if(!a.embellished)return!0;var b=function(c){return c.embellished?!(!sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(c)||sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[1])&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[2])||sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[3])&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[4]))||sre.SemanticPred.isAttribute(\"role\",\n\"CLOSE\")(c)&&sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(c)||sre.SemanticPred.isAttribute(\"role\",\"OPEN\")(c)&&(sre.SemanticPred.isAttribute(\"type\",\"SUBSCRIPT\")(c)||sre.SemanticPred.isAttribute(\"type\",\"SUPERSCRIPT\")(c))?!1:b(c.childNodes[0]):!0};return b(a)};sre.SemanticPred.isTableOrMultiline=function(a){return!!a&&(sre.SemanticPred.isAttribute(\"type\",\"TABLE\")(a)||sre.SemanticPred.isAttribute(\"type\",\"MULTILINE\")(a))};\nsre.SemanticPred.tableIsMatrixOrVector=function(a){return!!a&&sre.SemanticPred.isFencedElement(a)&&sre.SemanticPred.isTableOrMultiline(a.childNodes[0])};sre.SemanticPred.isFencedElement=function(a){return!!a&&sre.SemanticPred.isAttribute(\"type\",\"FENCED\")(a)&&(sre.SemanticPred.isAttribute(\"role\",\"LEFTRIGHT\")(a)||sre.SemanticPred.isAttribute(\"role\",\"NEUTRAL\")(a))&&1===a.childNodes.length};\nsre.SemanticPred.tableIsCases=function(a,b){return 0<b.length&&sre.SemanticPred.isAttribute(\"role\",\"OPENFENCE\")(b[b.length-1])};sre.SemanticPred.tableIsMultiline=function(a){return a.childNodes.every(function(b){return 1>=b.childNodes.length})};sre.SemanticPred.isBinomial=function(a){return 2===a.childNodes.length};\nsre.SemanticPred.isLimitBase=function(a){return sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMBOTH\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMLOWER\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMUPPER\")(a)||sre.SemanticPred.isAttribute(\"type\",\"FUNCTION\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"LIMFUNC\")(a)};\nsre.SemanticPred.isSimpleFunctionHead=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER};sre.SemanticPred.singlePunctAtPosition=function(a,b,c){return 1===b.length&&(a[c].type===sre.SemanticAttr.Type.PUNCTUATION||a[c].embellished===sre.SemanticAttr.Type.PUNCTUATION)&&a[c]===b[0]};\nsre.SemanticPred.isSimpleFunction=function(a){return sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"SIMPLEFUNC\")(a)};sre.SemanticPred.isLeftBrace=function(a){var b=[\"{\",\"\\ufe5b\",\"\\uff5b\"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isRightBrace=function(a){var b=[\"}\",\"\\ufe5c\",\"\\uff5d\"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isSetNode=function(a){return sre.SemanticPred.isLeftBrace(a.contentNodes[0])&&sre.SemanticPred.isRightBrace(a.contentNodes[1])};\nsre.SemanticPred.illegalSingleton_=[sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.INFERENCE];\nsre.SemanticPred.scriptedElement_=[sre.SemanticAttr.Type.LIMUPPER,sre.SemanticAttr.Type.LIMLOWER,sre.SemanticAttr.Type.LIMBOTH,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.UNDERSCORE,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.TENSOR];\nsre.SemanticPred.isSingletonSetContent=function(a){var b=a.type;return-1!==sre.SemanticPred.illegalSingleton_.indexOf(b)||b===sre.SemanticAttr.Type.INFIXOP&&a.role!==sre.SemanticAttr.Role.IMPLICIT?!1:b===sre.SemanticAttr.Type.FENCED?a.role===sre.SemanticAttr.Role.LEFTRIGHT?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0:-1!==sre.SemanticPred.scriptedElement_.indexOf(b)?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0};\nsre.SemanticPred.isNumber=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};sre.SemanticPred.isUnitCounter=function(a){return sre.SemanticPred.isNumber(a)||a.role===sre.SemanticAttr.Role.VULGAR||a.role===sre.SemanticAttr.Role.MIXED};sre.SemanticPred.isPureUnit=function(a){var b=a.childNodes;return a.role===sre.SemanticAttr.Role.UNIT&&(!b.length||b[0].role===sre.SemanticAttr.Role.UNIT)};\nsre.SemanticPred.isImplicit=function(a){return a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT&&!!a.contentNodes.length&&a.contentNodes[0].textContent===sre.SemanticAttr.invisibleTimes()};sre.SemanticProcessor=function(){this.factory_=new sre.SemanticNodeFactory};goog.addSingletonGetter(sre.SemanticProcessor);sre.SemanticProcessor.prototype.setNodeFactory=function(a){this.factory_=a};sre.SemanticProcessor.prototype.getNodeFactory=function(){return this.factory_};\nsre.SemanticProcessor.prototype.identifierNode=function(a,b,c){if(\"MathML-Unit\"===c)a.type=sre.SemanticAttr.Type.IDENTIFIER,a.role=sre.SemanticAttr.Role.UNIT;else if(!b&&1===a.textContent.length&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER)&&a.font===sre.SemanticAttr.Font.NORMAL)return a.font=sre.SemanticAttr.Font.ITALIC,a;a.type===sre.SemanticAttr.Type.UNKNOWN&&(a.type=sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticProcessor.exprFont_(a);\nreturn a};sre.SemanticProcessor.prototype.implicitNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleTimes()),c=sre.SemanticProcessor.getInstance().infixNode_(a,b[0]);c.role=sre.SemanticAttr.Role.IMPLICIT;b.forEach(function(d){d.parent=c});c.contentNodes=b;return c};\nsre.SemanticProcessor.prototype.implicitNode=function(a){a=sre.SemanticProcessor.getInstance().getMixedNumbers_(a);a=sre.SemanticProcessor.getInstance().combineUnits_(a);return 1===a.length?a[0]:sre.SemanticProcessor.getInstance().implicitNode_(a)};\nsre.SemanticProcessor.prototype.infixNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.INFIXOP,a,[b],sre.SemanticProcessor.getEmbellishedInner_(b).textContent);a.role=b.role;this.propagateSimpleFunction(a);return a};\nsre.SemanticProcessor.prototype.explicitMixed_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(h){return h.textContent===sre.SemanticAttr.invisiblePlus()});if(!b.rel.length)return a;a=[];for(var c=0,d;d=b.rel[c];c++){var e=b.comp[c],f=b.comp[c+1],g=e.length-1;e[g]&&f[0]&&sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(e[g])&&!sre.SemanticPred.isAttribute(\"role\",\"MIXED\")(e[g])&&sre.SemanticPred.isAttribute(\"type\",\"FRACTION\")(f[0])?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.NUMBER,\n[e[g],f[0]],[]),d.role=sre.SemanticAttr.Role.MIXED,a=a.concat(e.slice(0,g)),a.push(d),f.shift()):(a=a.concat(e),a.push(d))}return a.concat(b.comp[b.comp.length-1])};sre.SemanticProcessor.prototype.concatNode_=function(a,b,c){if(0===b.length)return a;var d=b.map(function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent}).join(\" \");a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(c,[a],b,d);1<b.length&&(a.role=sre.SemanticAttr.Role.MULTIOP);return a};\nsre.SemanticProcessor.prototype.prefixNode_=function(a,b){b=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isAttribute(\"role\",\"SUBTRACTION\"));a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.ADDITION&&\"+\"===a.contentNodes[0].textContent&&(a.role=sre.SemanticAttr.Role.POSITIVE);for(;0<b.rel.length;)a=sre.SemanticProcessor.getInstance().concatNode_(a,[b.rel.pop()],sre.SemanticAttr.Type.PREFIXOP),\na.role=sre.SemanticAttr.Role.NEGATIVE,a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);return a};sre.SemanticProcessor.prototype.postfixNode_=function(a,b){return b.length?sre.SemanticProcessor.getInstance().concatNode_(a,b,sre.SemanticAttr.Type.POSTFIXOP):a};sre.SemanticProcessor.prototype.text=function(a,b){a.type=sre.SemanticAttr.Type.TEXT;\"MS\"===b&&(a.role=sre.SemanticAttr.Role.STRING);sre.SemanticProcessor.exprFont_(a);return a};\nsre.SemanticProcessor.prototype.row=function(a){a=a.filter(function(b){return!sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(b)});if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();a=sre.SemanticProcessor.getInstance().getFencesInRow_(a);a=sre.SemanticProcessor.getInstance().tablesInRow(a);a=sre.SemanticProcessor.getInstance().getPunctuationInRow_(a);a=sre.SemanticProcessor.getInstance().getTextInRow_(a);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a);return sre.SemanticProcessor.getInstance().relationsInRow_(a)};\nsre.SemanticProcessor.prototype.combineUnits_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return!sre.SemanticPred.isAttribute(\"role\",\"UNIT\")(g)});if(a.length===b.rel.length)return b.rel;a=[];do{var c=b.comp.shift(),d=b.rel.shift(),e=null,f=a.pop();f&&(c.length&&sre.SemanticPred.isUnitCounter(f)?c.unshift(f):a.push(f));1===c.length&&(e=c.pop());1<c.length&&(e=sre.SemanticProcessor.getInstance().implicitNode_(c),e.role=sre.SemanticAttr.Role.UNIT);e&&a.push(e);d&&a.push(d)}while(d);\nreturn a};\nsre.SemanticProcessor.prototype.getMixedNumbers_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return sre.SemanticPred.isAttribute(\"type\",\"FRACTION\")(g)&&sre.SemanticPred.isAttribute(\"role\",\"VULGAR\")(g)});if(!b.rel.length)return a;a=[];for(var c=0,d;d=b.rel[c];c++){var e=b.comp[c],f=e.length-1;e[f]&&sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(e[f])&&(sre.SemanticPred.isAttribute(\"role\",\"INTEGER\")(e[f])||sre.SemanticPred.isAttribute(\"role\",\"FLOAT\")(e[f]))?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.NUMBER,[e[f],\nd],[]),d.role=sre.SemanticAttr.Role.MIXED,a=a.concat(e.slice(0,f)),a.push(d)):(a=a.concat(e),a.push(d))}return a.concat(b.comp[b.comp.length-1])};\nsre.SemanticProcessor.prototype.getTextInRow_=function(a){if(1>=a.length)return a;var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isAttribute(\"type\",\"TEXT\"));if(0===b.rel.length)return a;a=[];var c=b.comp[0];0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));for(var d=0;c=b.rel[d];d++)a.push(c),c=b.comp[d+1],0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));return[sre.SemanticProcessor.getInstance().dummyNode_(a)]};\nsre.SemanticProcessor.prototype.relationsInRow_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isRelation),c=b.rel[0];if(!c)return sre.SemanticProcessor.getInstance().operationsInRow_(a);if(1===a.length)return a[0];a=b.comp.map(goog.bind(sre.SemanticProcessor.getInstance().operationsInRow_,this));if(b.rel.some(function(d){return!d.equals(c)}))return a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTIREL,a,b.rel),b.rel.every(function(d){return d.role===\nc.role})&&(a.role=c.role),a;a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.RELSEQ,a,b.rel,sre.SemanticProcessor.getEmbellishedInner_(c).textContent);a.role=c.role;return a};\nsre.SemanticProcessor.prototype.operationsInRow_=function(a){if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();a=this.explicitMixed_(a);if(1===a.length)return a[0];for(var b=[];0<a.length&&sre.SemanticPred.isOperator(a[0]);)b.push(a.shift());if(0===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(b.pop(),b);if(1===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(a[0],b);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);\nb=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),b);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div):b};\nsre.SemanticProcessor.prototype.operationsTree_=function(a,b,c,d){d=d||[];if(0===a.length)return d.unshift(c),b.type===sre.SemanticAttr.Type.INFIXOP?(d=sre.SemanticProcessor.getInstance().postfixNode_(b.childNodes.pop(),d),b.appendChild(d),b):sre.SemanticProcessor.getInstance().postfixNode_(b,d);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);if(0===a.head.length)return d.push(a.div),sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,c,d);d=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),\nd);b=sre.SemanticProcessor.getInstance().appendOperand_(b,c,d);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div,[]):b};\nsre.SemanticProcessor.prototype.appendOperand_=function(a,b,c){if(a.type!==sre.SemanticAttr.Type.INFIXOP)return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);var d=this.appendDivisionOp_(a,b,c);return d?d:sre.SemanticProcessor.getInstance().appendExistingOperator_(a,b,c)?a:b.role===sre.SemanticAttr.Role.MULTIPLICATION?sre.SemanticProcessor.getInstance().appendMultiplicativeOp_(a,b,c):sre.SemanticProcessor.getInstance().appendAdditiveOp_(a,b,c)};\nsre.SemanticProcessor.prototype.appendDivisionOp_=function(a,b,c){return b.role===sre.SemanticAttr.Role.DIVISION?sre.SemanticPred.isImplicit(a)?sre.SemanticProcessor.getInstance().infixNode_([a,c],b):this.appendLastOperand_(a,b,c):a.role===sre.SemanticAttr.Role.DIVISION?this.infixNode_([a,c],b):null};\nsre.SemanticProcessor.prototype.appendLastOperand_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};\nsre.SemanticProcessor.prototype.appendMultiplicativeOp_=function(a,b,c){if(sre.SemanticPred.isImplicit(a))return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};\nsre.SemanticProcessor.prototype.appendAdditiveOp_=function(a,b,c){return sre.SemanticProcessor.getInstance().infixNode_([a,c],b)};sre.SemanticProcessor.prototype.appendExistingOperator_=function(a,b,c){return!a||a.type!==sre.SemanticAttr.Type.INFIXOP||sre.SemanticPred.isImplicit(a)?!1:a.contentNodes[0].equals(b)?(a.appendContentNode(b),a.appendChild(c),!0):sre.SemanticProcessor.getInstance().appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};\nsre.SemanticProcessor.prototype.getFencesInRow_=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isFence);a=sre.SemanticProcessor.purgeFences_(a);var b=a.comp.shift();return sre.SemanticProcessor.getInstance().fences_(a.rel,a.comp,[],[b])};\nsre.SemanticProcessor.prototype.fences_=function(a,b,c,d){if(0===a.length&&0===c.length)return d[0];var e=sre.SemanticPred.isAttribute(\"role\",\"OPEN\");if(0===a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),sre.SemanticProcessor.fenceToPunct_(b),a.push(b);else{c=sre.SemanticProcessor.sliceNodes_(c,e);var f=c.head.length-1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=\nc[c.length-1];g=a[0].role;if(g===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!==f.textContent))return c.push(a.shift()),(e=b.shift())&&d.push(e),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&(g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&a[0].textContent===f.textContent))return e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],\nb.shift())),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=sre.SemanticProcessor.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),sre.SemanticProcessor.getInstance().fences_(a,\nb,c.head,d);e=a.shift();sre.SemanticProcessor.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return sre.SemanticProcessor.getInstance().fences_(a,b,c,d)};\nsre.SemanticProcessor.prototype.neutralFences_=function(a,b){if(0===a.length)return a;if(1===a.length)return sre.SemanticProcessor.fenceToPunct_(a[0]),a;var c=a.shift(),d=sre.SemanticProcessor.sliceNodes_(a,function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent==sre.SemanticProcessor.getEmbellishedInner_(c).textContent});if(!d.div)return sre.SemanticProcessor.fenceToPunct_(c),d=b.shift(),d.unshift(c),d.concat(sre.SemanticProcessor.getInstance().neutralFences_(a,b));b=sre.SemanticProcessor.getInstance().combineFencedContent_(c,\nd.div,d.head,b);return 0<d.tail.length?(a=b.shift(),d=sre.SemanticProcessor.getInstance().neutralFences_(d.tail,b),a.concat(d)):b[0]};\nsre.SemanticProcessor.prototype.combineFencedContent_=function(a,b,c,d){if(0===c.length)return a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,d.shift()),0<d.length?d[0].unshift(a):d=[[a]],d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=sre.SemanticProcessor.getInstance().neutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};\nsre.SemanticProcessor.FENCE_TO_PUNCT_={};sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.NEUTRAL]=sre.SemanticAttr.Role.VBAR;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.OPEN]=sre.SemanticAttr.Role.OPENFENCE;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.CLOSE]=sre.SemanticAttr.Role.CLOSEFENCE;\nsre.SemanticProcessor.fenceToPunct_=function(a){var b=sre.SemanticProcessor.FENCE_TO_PUNCT_[a.role];if(b){for(;a.embellished;)a.embellished=sre.SemanticAttr.Type.PUNCTUATION,a.role=b,a=a.childNodes[0];a.type=sre.SemanticAttr.Type.PUNCTUATION;a.role=b}};\nsre.SemanticProcessor.prototype.horizontalFencedNode_=function(a,b,c){c=sre.SemanticProcessor.getInstance().row(c);b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FENCED,[c],[a,b]);a.role===sre.SemanticAttr.Role.OPEN?(this.classifyHorizontalFence_(b),this.propagateComposedFunction(b)):b.role=a.role;return sre.SemanticProcessor.rewriteFencedNode_(b)};\nsre.SemanticProcessor.prototype.classifyHorizontalFence_=function(a){a.role=sre.SemanticAttr.Role.LEFTRIGHT;var b=a.childNodes;if(sre.SemanticPred.isSetNode(a)&&!(1<b.length))if(0===b.length||b[0].type===sre.SemanticAttr.Type.EMPTY)a.role=sre.SemanticAttr.Role.SETEMPTY;else{var c=b[0].type;if(1===b.length&&sre.SemanticPred.isSingletonSetContent(b[0]))a.role=sre.SemanticAttr.Role.SETSINGLE;else{var d=b[0].role;c===sre.SemanticAttr.Type.PUNCTUATED&&d===sre.SemanticAttr.Role.SEQUENCE&&(b[0].contentNodes[0].role===\nsre.SemanticAttr.Role.COMMA?a.role=sre.SemanticAttr.Role.SETCOLLECT:1!==b[0].contentNodes.length||b[0].contentNodes[0].role!==sre.SemanticAttr.Role.VBAR&&b[0].contentNodes[0].role!==sre.SemanticAttr.Role.COLON||(a.role=sre.SemanticAttr.Role.SETEXT,this.setExtension_(a)))}}};\nsre.SemanticProcessor.prototype.setExtension_=function(a){(a=a.childNodes[0].childNodes[0])&&a.type===sre.SemanticAttr.Type.INFIXOP&&1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.UNKNOWN&&(a.contentNodes[0].role=sre.SemanticAttr.Role.SETEXT)};\nsre.SemanticProcessor.prototype.getPunctuationInRow_=function(a){if(1>=a.length)return a;var b=function(g){g=g.type;return\"punctuation\"===g||\"text\"===g||\"operator\"===g||\"relation\"===g},c=sre.SemanticProcessor.partitionNodes_(a,function(g){if(!sre.SemanticPred.isPunctuation(g))return!1;if(sre.SemanticPred.isPunctuation(g)&&!sre.SemanticPred.isAttribute(\"role\",\"ELLIPSIS\")(g))return!0;var h=a.indexOf(g);if(0===h)return a[1]&&b(a[1])?!1:!0;g=a[h-1];if(h===a.length-1)return b(g)?!1:!0;h=a[h+1];return b(g)&&\nb(h)?!1:!0});if(0===c.rel.length)return a;var d=[],e=c.comp.shift();0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));for(var f=0;0<c.comp.length;)d.push(c.rel[f++]),e=c.comp.shift(),0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));return[sre.SemanticProcessor.getInstance().punctuatedNode_(d,c.rel)]};\nsre.SemanticProcessor.prototype.punctuatedNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.PUNCTUATED,a,b);if(b.length===a.length){var d=b[0].role;if(d!==sre.SemanticAttr.Role.UNKNOWN&&b.every(function(e){return e.role===d}))return c.role=d,c}sre.SemanticPred.singlePunctAtPosition(a,b,0)?c.role=sre.SemanticAttr.Role.STARTPUNCT:sre.SemanticPred.singlePunctAtPosition(a,b,a.length-1)?c.role=sre.SemanticAttr.Role.ENDPUNCT:b.every(sre.SemanticPred.isAttribute(\"role\",\n\"DUMMY\"))?c.role=sre.SemanticAttr.Role.TEXT:c.role=sre.SemanticAttr.Role.SEQUENCE;return c};sre.SemanticProcessor.prototype.dummyNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleComma());b.forEach(function(c){c.role=sre.SemanticAttr.Role.DUMMY});return sre.SemanticProcessor.getInstance().punctuatedNode_(a,b)};\nsre.SemanticProcessor.MML_TO_LIMIT_={MSUB:sre.SemanticAttr.Type.LIMLOWER,MUNDER:sre.SemanticAttr.Type.LIMLOWER,MSUP:sre.SemanticAttr.Type.LIMUPPER,MOVER:sre.SemanticAttr.Type.LIMUPPER,MSUBSUP:sre.SemanticAttr.Type.LIMBOTH,MUNDEROVER:sre.SemanticAttr.Type.LIMBOTH};\nsre.SemanticProcessor.prototype.limitNode=function(a,b){var c=b[0];if(sre.SemanticPred.isLimitBase(c))a=sre.SemanticProcessor.MML_TO_LIMIT_[a];else switch(a){case \"MSUB\":a=sre.SemanticAttr.Type.SUBSCRIPT;break;case \"MSUP\":a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case \"MSUBSUP\":var d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=sre.SemanticAttr.Role.SUBSUP;b=[d,b[2]];a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case \"MOVER\":a=sre.SemanticAttr.Type.OVERSCORE;\nsre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.OVERACCENT);break;case \"MUNDER\":a=sre.SemanticAttr.Type.UNDERSCORE;sre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT);break;default:d=sre.SemanticPred.isAccent(b[1]),a=sre.SemanticPred.isAccent(b[2]),d&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT),a&&(b[2].role=sre.SemanticAttr.Role.OVERACCENT),a&&!d?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.OVERSCORE,[c,b[2]],\n[]),b=[d,b[1]],a=sre.SemanticAttr.Type.UNDERSCORE):(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.UNDERSCORE,[c,b[1]],[]),b=[d,b[2]],a=sre.SemanticAttr.Type.OVERSCORE),d.role=sre.SemanticAttr.Role.UNDEROVER}b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,[]);a=sre.SemanticPred.isEmbellished(c);d&&(d.embellished=a);b.embellished=a;b.role=c.role;return b};\nsre.SemanticProcessor.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0===a.length)return b;var c=a.shift(),d=sre.SemanticProcessor.classifyFunction_(c,a);if(!d)return b.push(c),sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,b);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,[]);a=sre.SemanticProcessor.getInstance().getFunctionArgs_(c,a,d);return b.concat(a)};sre.SemanticProcessor.CLASSIFY_FUNCTION_={};\nsre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.INTEGRAL]=\"integral\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SUM]=\"bigop\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.PREFIXFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.LIMFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SIMPLEFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.COMPFUNC]=\"prefix\";\nsre.SemanticProcessor.classifyFunction_=function(a,b){if(a.type===sre.SemanticAttr.Type.APPL||a.type===sre.SemanticAttr.Type.BIGOP||a.type===sre.SemanticAttr.Type.INTEGRAL)return\"\";if(b[0]&&b[0].textContent===sre.SemanticAttr.functionApplication()){b.shift();b=sre.SemanticAttr.Role.SIMPLEFUNC;if(a.role===sre.SemanticAttr.Role.PREFIXFUNC||a.role===sre.SemanticAttr.Role.LIMFUNC)b=a.role;sre.SemanticProcessor.propagateFunctionRole_(a,b);return\"prefix\"}return(b=sre.SemanticProcessor.CLASSIFY_FUNCTION_[a.role])?\nb:sre.SemanticPred.isSimpleFunctionHead(a)?\"simple\":\"\"};sre.SemanticProcessor.propagateFunctionRole_=function(a,b){a&&(sre.SemanticPred.isAttribute(\"role\",\"SUBSUP\")(a)||(a.role=b),sre.SemanticProcessor.propagateFunctionRole_(a.childNodes[0],b))};\nsre.SemanticProcessor.prototype.getFunctionArgs_=function(a,b,c){switch(c){case \"integral\":b=sre.SemanticProcessor.getInstance().getIntegralArgs_(b);if(!b.intvar&&!b.integrand.length)return b.rest.unshift(a),b.rest;c=sre.SemanticProcessor.getInstance().row(b.integrand);a=sre.SemanticProcessor.getInstance().integralNode_(a,c,b.intvar);b.rest.unshift(a);return b.rest;case \"prefix\":if(b[0]&&b[0].type===sre.SemanticAttr.Type.FENCED){var d=b.shift();d.role!==sre.SemanticAttr.Role.NEUTRAL&&(d.role=sre.SemanticAttr.Role.LEFTRIGHT);\na=sre.SemanticProcessor.getInstance().functionNode_(a,d);b.unshift(a);return b}c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isPrefixFunctionBoundary);if(c.head.length)d=sre.SemanticProcessor.getInstance().row(c.head),c.div&&c.tail.unshift(c.div);else{if(!c.div||!sre.SemanticPred.isAttribute(\"type\",\"APPL\")(c.div))return b.unshift(a),b;d=c.div}a=sre.SemanticProcessor.getInstance().functionNode_(a,d);c.tail.unshift(a);return c.tail;case \"bigop\":c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isBigOpBoundary);\nif(!c.head.length)return b.unshift(a),b;d=sre.SemanticProcessor.getInstance().row(c.head);a=sre.SemanticProcessor.getInstance().bigOpNode_(a,d);c.div&&c.tail.unshift(c.div);c.tail.unshift(a);return c.tail;default:if(0===b.length)return[a];c=b[0];if(c.type===sre.SemanticAttr.Type.FENCED&&c.role!==sre.SemanticAttr.Role.NEUTRAL&&sre.SemanticPred.isSimpleFunctionScope(c))return c.role=sre.SemanticAttr.Role.LEFTRIGHT,sre.SemanticProcessor.propagateFunctionRole_(a,sre.SemanticAttr.Role.SIMPLEFUNC),a=sre.SemanticProcessor.getInstance().functionNode_(a,\nb.shift()),b.unshift(a),b;b.unshift(a);return b}};\nsre.SemanticProcessor.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0===a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(sre.SemanticPred.isGeneralFunctionBoundary(c))return{integrand:b,intvar:null,rest:a};if(sre.SemanticPred.isIntegralDxBoundarySingle(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&sre.SemanticPred.isIntegralDxBoundary(c,a[1]))return c=sre.SemanticProcessor.getInstance().prefixNode_(a[1],[c]),c.role=sre.SemanticAttr.Role.INTEGRAL,{integrand:b,intvar:c,\nrest:a.slice(2)};b.push(a.shift());return sre.SemanticProcessor.getInstance().getIntegralArgs_(a,b)};\nsre.SemanticProcessor.prototype.functionNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeContentNode(sre.SemanticAttr.functionApplication());c.type=sre.SemanticAttr.Type.PUNCTUATION;c.role=sre.SemanticAttr.Role.APPLICATION;var d=sre.SemanticProcessor.getFunctionOp_(a,function(e){return sre.SemanticPred.isAttribute(\"type\",\"FUNCTION\")(e)||sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(e)&&sre.SemanticPred.isAttribute(\"role\",\"SIMPLEFUNC\")(e)});return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.APPL,\n[a,b],d,[c])};sre.SemanticProcessor.prototype.bigOpNode_=function(a,b){var c=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.BIGOP,[a,b],c,[])};\nsre.SemanticProcessor.prototype.integralNode_=function(a,b,c){b=b||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();c=c||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();var d=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.INTEGRAL,[a,b,c],d,[])};\nsre.SemanticProcessor.prototype.functionalNode_=function(a,b,c,d){var e=b[0];if(c){var f=c.parent;d.push(c)}a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,d);a.role=e.role;f&&(c.parent=f);return a};sre.SemanticProcessor.getFunctionOp_=function(a,b){if(b(a))return a;for(var c=0,d;d=a.childNodes[c];c++)if(d=sre.SemanticProcessor.getFunctionOp_(d,b))return d;return null};\nsre.SemanticProcessor.prototype.tablesInRow=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.tableIsMatrixOrVector);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(sre.SemanticProcessor.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isTableOrMultiline);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();sre.SemanticPred.tableIsCases(d,e)&&sre.SemanticProcessor.tableToCases_(d,e.pop());b=b.concat(e);\nb.push(d)}return b.concat(a.comp.shift())};sre.SemanticProcessor.tableToMatrixOrVector_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute(\"type\",\"MULTILINE\")(b)?sre.SemanticProcessor.tableToVector_(a):sre.SemanticProcessor.tableToMatrix_(a);a.contentNodes.forEach(goog.bind(b.appendContentNode,b));a=0;for(var c;c=b.childNodes[a];a++)sre.SemanticProcessor.assignRoleToRow_(c,sre.SemanticProcessor.getComponentRoles_(b));b.parent=null;return b};\nsre.SemanticProcessor.tableToVector_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.VECTOR;1===b.childNodes.length?sre.SemanticProcessor.tableToSquare_(a):sre.SemanticProcessor.binomialForm_(b)};sre.SemanticProcessor.binomialForm_=function(a){sre.SemanticPred.isBinomial(a)&&(a.role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[0].role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[1].role=sre.SemanticAttr.Role.BINOMIAL)};\nsre.SemanticProcessor.tableToMatrix_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.MATRIX;b.childNodes&&0<b.childNodes.length&&b.childNodes[0].childNodes&&b.childNodes.length===b.childNodes[0].childNodes.length?sre.SemanticProcessor.tableToSquare_(a):b.childNodes&&1===b.childNodes.length&&(b.role=sre.SemanticAttr.Role.ROWVECTOR)};\nsre.SemanticProcessor.tableToSquare_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute(\"role\",\"NEUTRAL\")(a)?b.role=sre.SemanticAttr.Role.DETERMINANT:b.role=sre.SemanticAttr.Role.SQUAREMATRIX};sre.SemanticProcessor.getComponentRoles_=function(a){var b=a.role;return b&&b!==sre.SemanticAttr.Role.UNKNOWN?b:sre.SemanticAttr.Role[a.type.toUpperCase()]||sre.SemanticAttr.Role.UNKNOWN};\nsre.SemanticProcessor.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)sre.SemanticProcessor.assignRoleToRow_(d,sre.SemanticAttr.Role.CASES);a.type=sre.SemanticAttr.Type.CASES;a.appendContentNode(b);sre.SemanticPred.tableIsMultiline(a)&&sre.SemanticProcessor.binomialForm_(a);return a};\nsre.SemanticProcessor.tableToMultiline=function(a){if(sre.SemanticPred.tableIsMultiline(a)){a.type=sre.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)sre.SemanticProcessor.rowToLine_(c,sre.SemanticAttr.Role.MULTILINE);1===a.childNodes.length&&sre.SemanticPred.isFencedElement(a.childNodes[0].childNodes[0])&&sre.SemanticProcessor.tableToMatrixOrVector_(sre.SemanticProcessor.rewriteFencedLine_(a));sre.SemanticProcessor.binomialForm_(a);sre.SemanticProcessor.classifyMultiline(a)}else sre.SemanticProcessor.classifyTable(a)};\nsre.SemanticProcessor.rewriteFencedLine_=function(a){var b=a.childNodes[0],c=a.childNodes[0].childNodes[0],d=a.childNodes[0].childNodes[0].childNodes[0];c.parent=a.parent;a.parent=c;d.parent=b;c.childNodes=[a];b.childNodes=[d];return c};\nsre.SemanticProcessor.rowToLine_=function(a,b){b=b||sre.SemanticAttr.Role.UNKNOWN;sre.SemanticPred.isAttribute(\"type\",\"ROW\")(a)&&(a.type=sre.SemanticAttr.Type.LINE,a.role=b,1===a.childNodes.length&&sre.SemanticPred.isAttribute(\"type\",\"CELL\")(a.childNodes[0])&&(a.childNodes=a.childNodes[0].childNodes,a.childNodes.forEach(function(c){c.parent=a})))};\nsre.SemanticProcessor.assignRoleToRow_=function(a,b){if(sre.SemanticPred.isAttribute(\"type\",\"LINE\")(a))a.role=b;else if(sre.SemanticPred.isAttribute(\"type\",\"ROW\")(a)){a.role=b;var c=sre.SemanticPred.isAttribute(\"type\",\"CELL\");a.childNodes.forEach(function(d){c(d)&&(d.role=b)})}};\nsre.SemanticProcessor.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};sre.SemanticProcessor.partitionNodes_=function(a,b){var c=[],d=[];do{var e=sre.SemanticProcessor.sliceNodes_(a,b);d.push(e.head);c.push(e.div);a=e.tail}while(e.div);c.pop();return{rel:c,comp:d}};\nsre.SemanticProcessor.prototype.mfenced=function(a,b,c,d){if(c&&0<d.length){var e=sre.SemanticProcessor.nextSeparatorFunction_(c),f=[d.shift()];d.forEach(goog.bind(function(g){f.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(e()));f.push(g)},this));d=f}if(a&&b)return sre.SemanticProcessor.getInstance().horizontalFencedNode_(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a),sre.SemanticProcessor.getInstance().factory_.makeContentNode(b),d);a&&d.unshift(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a));\nb&&d.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(b));return sre.SemanticProcessor.getInstance().row(d)};sre.SemanticProcessor.nextSeparatorFunction_=function(a){if(a){if(a.match(/^\\s+$/))return null;var b=a.replace(/\\s/g,\"\").split(\"\").filter(function(c){return c})}else b=[\",\"];return function(){return 1<b.length?b.shift():b[0]}};\nsre.SemanticProcessor.number=function(a){if(a.type===sre.SemanticAttr.Type.UNKNOWN||a.type===sre.SemanticAttr.Type.IDENTIFIER)a.type=sre.SemanticAttr.Type.NUMBER;sre.SemanticProcessor.numberRole_(a);sre.SemanticProcessor.exprFont_(a)};\nsre.SemanticProcessor.numberRole_=function(a){if(a.role===sre.SemanticAttr.Role.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning);b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||c.type===sre.SemanticAttr.Type.PUNCTUATION&&c.role===sre.SemanticAttr.Role.COMMA})?a.role=sre.SemanticAttr.Role.INTEGER:b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||\nc.type===sre.SemanticAttr.Type.PUNCTUATION})?a.role=sre.SemanticAttr.Role.FLOAT:a.role=sre.SemanticAttr.Role.OTHERNUMBER}};sre.SemanticProcessor.exprFont_=function(a){if(a.font===sre.SemanticAttr.Font.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning).reduce(function(c,d){return c&&d.font&&d.font!==sre.SemanticAttr.Font.UNKNOWN&&d.font!==c?c===sre.SemanticAttr.Font.UNKNOWN?d.font:null:c},sre.SemanticAttr.Font.UNKNOWN);b&&(a.font=b)}};\nsre.SemanticProcessor.prototype.fractionLikeNode=function(a,b,c,d){!d&&sre.SemanticUtil.isZeroLength(c)?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[a],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[b],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTILINE,[d,b],[]),sre.SemanticProcessor.binomialForm_(b),sre.SemanticProcessor.classifyMultiline(b)):(b=sre.SemanticProcessor.getInstance().fractionNode_(a,\nb),d&&b.addAnnotation(\"general\",\"bevelled\"));return b};\nsre.SemanticProcessor.prototype.fractionNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FRACTION,[a,b],[]);a.role=a.childNodes.every(function(c){return sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(c)&&sre.SemanticPred.isAttribute(\"role\",\"INTEGER\")(c)})?sre.SemanticAttr.Role.VULGAR:a.childNodes.every(sre.SemanticPred.isPureUnit)?sre.SemanticAttr.Role.UNIT:sre.SemanticAttr.Role.DIVISION;this.propagateSimpleFunction(a);return a};\nsre.SemanticProcessor.prototype.tensor=function(a,b,c,d,e){b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.TENSOR,[a,sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.LEFTSUB),sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.LEFTSUPER),sre.SemanticProcessor.getInstance().scriptNode_(d,sre.SemanticAttr.Role.RIGHTSUB),sre.SemanticProcessor.getInstance().scriptNode_(e,sre.SemanticAttr.Role.RIGHTSUPER)],[]);b.role=a.role;\nb.embellished=sre.SemanticPred.isEmbellished(a);return b};\nsre.SemanticProcessor.prototype.pseudoTensor=function(a,b,c){var d=function(g){return!sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(g)},e=b.filter(d).length;d=c.filter(d).length;if(!e&&!d)return a;var f=e?d?\"MSUBSUP\":\"MSUB\":\"MSUP\";a=[a];e&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.RIGHTSUB,!0));d&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.RIGHTSUPER,!0));return sre.SemanticProcessor.getInstance().limitNode(f,a)};\nsre.SemanticProcessor.prototype.scriptNode_=function(a,b,c){switch(a.length){case 0:a=sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();break;case 1:a=a[0];if(c)return a;break;default:a=sre.SemanticProcessor.getInstance().dummyNode_(a)}a.role=b;return a};sre.SemanticProcessor.getEmbellishedInner_=function(a){return a&&a.embellished&&0<a.childNodes.length?sre.SemanticProcessor.getEmbellishedInner_(a.childNodes[0]):a};\nsre.SemanticProcessor.purgeFences_=function(a){var b=a.rel;a=a.comp;for(var c=[],d=[];0<b.length;){var e=b.shift(),f=a.shift();sre.SemanticPred.isElligibleEmbellishedFence(e)?(c.push(e),d.push(f)):(sre.SemanticProcessor.fenceToPunct_(e),f.push(e),f=f.concat(a.shift()),a.unshift(f))}d.push(a.shift());return{rel:c,comp:d}};\nsre.SemanticProcessor.rewriteFencedNode_=function(a){var b=a.contentNodes[1],c=sre.SemanticProcessor.rewriteFence_(a,a.contentNodes[0]);a.contentNodes[0]=c.fence;c=sre.SemanticProcessor.rewriteFence_(c.node,b);a.contentNodes[1]=c.fence;a.contentNodes[0].parent=a;a.contentNodes[1].parent=a;c.node.parent=null;return c.node};\nsre.SemanticProcessor.rewriteFence_=function(a,b){if(!b.embellished)return{node:a,fence:b};var c=b.childNodes[0],d=sre.SemanticProcessor.rewriteFence_(a,c);if(sre.SemanticPred.isAttribute(\"type\",\"SUPERSCRIPT\")(b)||sre.SemanticPred.isAttribute(\"type\",\"SUBSCRIPT\")(b)||sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(b))return sre.SemanticPred.isAttribute(\"role\",\"SUBSUP\")(b)||(b.role=a.role),c!==d.node&&(b.replaceChild(c,d.node),c.parent=a),sre.SemanticProcessor.propagateFencePointer_(b,c),{node:b,fence:d.fence};\nb.replaceChild(c,d.fence);b.mathmlTree&&-1===b.mathml.indexOf(b.mathmlTree)&&b.mathml.push(b.mathmlTree);return{node:d.node,fence:b}};sre.SemanticProcessor.propagateFencePointer_=function(a,b){a.fencePointer=b.fencePointer||b.id.toString();a.embellished=null};\nsre.SemanticProcessor.classifyMultiline=function(a){for(var b=0,c=a.childNodes.length,d;b<c&&(!(d=a.childNodes[b])||!d.childNodes.length);)b++;if(!(b>=c)){var e=d.childNodes[0].role;e!==sre.SemanticAttr.Role.UNKNOWN&&a.childNodes.every(function(f){f=f.childNodes[0];return!f||f.role===e&&(sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(f)||sre.SemanticPred.isAttribute(\"type\",\"RELSEQ\")(f))})&&(a.role=e)}};\nsre.SemanticProcessor.classifyTable=function(a){var b=sre.SemanticProcessor.computeColumns_(a);sre.SemanticProcessor.classifyByColumns_(a,b,\"EQUALITY\")||sre.SemanticProcessor.classifyByColumns_(a,b,\"INEQUALITY\",[\"EQUALITY\"])||sre.SemanticProcessor.classifyByColumns_(a,b,\"ARROW\")};\nsre.SemanticProcessor.classifyByColumns_=function(a,b,c,d){d=function(g){return sre.SemanticProcessor.isPureRelation_(g,c)};var e=function(g){return sre.SemanticProcessor.isEndRelation_(g,c)||sre.SemanticProcessor.isPureRelation_(g,c)},f=function(g){return sre.SemanticProcessor.isEndRelation_(g,c,!0)||sre.SemanticProcessor.isPureRelation_(g,c)};return 3===b.length&&sre.SemanticProcessor.testColumns_(b,1,d)||2===b.length&&(sre.SemanticProcessor.testColumns_(b,1,e)||sre.SemanticProcessor.testColumns_(b,\n0,f))?(a.role=sre.SemanticAttr.Role[c],!0):!1};sre.SemanticProcessor.isEndRelation_=function(a,b,c){c=c?a.childNodes.length-1:0;return sre.SemanticPred.isAttribute(\"type\",\"RELSEQ\")(a)&&sre.SemanticPred.isAttribute(\"role\",b)(a)&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(a.childNodes[c])};sre.SemanticProcessor.isPureRelation_=function(a,b){return sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)&&sre.SemanticPred.isAttribute(\"role\",b)(a)};\nsre.SemanticProcessor.computeColumns_=function(a){for(var b=[],c=0,d;d=a.childNodes[c];c++)for(var e=0,f;f=d.childNodes[e];e++)b[e]?b[e].push(f):b[e]=[f];return b};sre.SemanticProcessor.testColumns_=function(a,b,c){return(a=a[b])?a.some(function(d){return d.childNodes.length&&c(d.childNodes[0])})&&a.every(function(d){return!d.childNodes.length||c(d.childNodes[0])}):!1};\nsre.SemanticProcessor.MATHJAX_FONTS={\"-tex-caligraphic\":sre.SemanticAttr.Font.CALIGRAPHIC,\"-tex-caligraphic-bold\":sre.SemanticAttr.Font.CALIGRAPHICBOLD,\"-tex-calligraphic\":sre.SemanticAttr.Font.CALIGRAPHIC,\"-tex-calligraphic-bold\":sre.SemanticAttr.Font.CALIGRAPHICBOLD,\"-tex-oldstyle\":sre.SemanticAttr.Font.OLDSTYLE,\"-tex-oldstyle-bold\":sre.SemanticAttr.Font.OLDSTYLEBOLD,\"-tex-mathit\":sre.SemanticAttr.Font.ITALIC};\nsre.SemanticProcessor.prototype.font=function(a){var b=sre.SemanticProcessor.MATHJAX_FONTS[a];return b?b:a};sre.SemanticProcessor.prototype.propagateSimpleFunction=function(a){\"clearspeak\"!==sre.Engine.getInstance().domain||a.type!==sre.SemanticAttr.Type.INFIXOP&&a.type!==sre.SemanticAttr.Type.FRACTION||!a.childNodes.every(sre.SemanticPred.isSimpleFunction)||(a.role=sre.SemanticAttr.Role.COMPFUNC)};\nsre.SemanticProcessor.prototype.propagateComposedFunction=function(a){\"clearspeak\"===sre.Engine.getInstance().domain&&a.type===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].role===sre.SemanticAttr.Role.COMPFUNC&&(a.role=sre.SemanticAttr.Role.COMPFUNC)};sre.SemanticProcessor.proof=function(a,b,c){b=sre.SemanticProcessor.separateSemantics(b);return sre.SemanticProcessor.getInstance().proof(a,b,c)};\nsre.SemanticProcessor.prototype.proof=function(a,b,c){b.inference||b.axiom||console.log(\"Noise\");if(b.axiom)return b=this.cleanInference(a.childNodes),b=b.length?this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,c(b),[]):this.factory_.makeEmptyNode(),b.role=sre.SemanticAttr.Role.AXIOM,b.mathmlTree=a,b;a=this.inference(a,b,c);b.proof&&(a.role=sre.SemanticAttr.Role.PROOF,a.childNodes[0].role=sre.SemanticAttr.Role.FINAL);return a};\nsre.SemanticProcessor.prototype.inference=function(a,b,c){if(b.inferenceRule)return c=this.getFormulas(a,[],c),c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,[c.conclusion,c.premises],[]);var d=b.labelledRule,e=sre.DomUtil.toArray(a.childNodes);b=[];\"left\"!==d&&\"both\"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.LEFT));\"right\"!==d&&\"both\"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.RIGHT));c=this.getFormulas(a,e,c);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,\n[c.conclusion,c.premises],b);c.mathmlTree=a;return c};sre.SemanticProcessor.prototype.getLabel=function(a,b,c,d){a=this.findNestedRow(b,\"prooflabel\",d);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.RULELABEL,c(sre.DomUtil.toArray(a.childNodes)),[]);c.role=d;c.mathmlTree=a;return c};\nsre.SemanticProcessor.prototype.getFormulas=function(a,b,c){b=b.length?this.findNestedRow(b,\"inferenceRule\"):a;var d=\"up\"===sre.SemanticProcessor.getSemantics(b).inferenceRule;a=d?b.childNodes[0]:b.childNodes[1];b=(d?b.childNodes[1]:b.childNodes[0]).childNodes[0].childNodes[0];var e=sre.DomUtil.toArray(b.childNodes[0].childNodes);d=[];var f=1;e=$jscomp.makeIterator(e);for(var g=e.next();!g.done;g=e.next())g=g.value,f%2&&d.push(g.childNodes[0]),f++;d=c(d);c=c(sre.DomUtil.toArray(a.childNodes[0].childNodes))[0];\nd=this.factory_.makeBranchNode(sre.SemanticAttr.Type.PREMISES,d,[]);d.mathmlTree=b;c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.CONCLUSION,[c],[]);c.mathmlTree=a.childNodes[0].childNodes[0];return{conclusion:c,premises:d}};sre.SemanticProcessor.prototype.findNestedRow=function(a,b,c){return this.findNestedRow_(a,b,0,c)};\nsre.SemanticProcessor.prototype.findNestedRow_=function(a,b,c,d){if(3<c)return null;for(var e=0,f;f=a[e];e++){var g=sre.DomUtil.tagName(f);if(\"MSPACE\"!==g){if(\"MROW\"===g)return this.findNestedRow_(sre.DomUtil.toArray(f.childNodes),b,c+1,d);if(sre.SemanticProcessor.findSemantics(f,b,d))return f}}return null};sre.SemanticProcessor.prototype.cleanInference=function(a){return sre.DomUtil.toArray(a).filter(function(b){return\"MSPACE\"!==sre.DomUtil.tagName(b)})};\nsre.SemanticProcessor.findSemantics=function(a,b,c){c=null==c?null:c;return(a=sre.SemanticProcessor.getSemantics(a))&&a[b]?null==c?!0:a[b]===c:!1};sre.SemanticProcessor.getSemantics=function(a){return(a=a.getAttribute(\"semantics\"))?sre.SemanticProcessor.separateSemantics(a):null};sre.SemanticProcessor.removePrefix=function(a){a=$jscomp.makeIterator(a.split(\"_\"));a.next();return $jscomp.arrayFromIterator(a).join(\"_\")};\nsre.SemanticProcessor.separateSemantics=function(a){var b={};a.split(\";\").forEach(function(c){var d=$jscomp.makeIterator(c.split(\":\"));c=d.next().value;d=d.next().value;b[sre.SemanticProcessor.removePrefix(c)]=d});return b};sre.SemanticMathml=function(){sre.SemanticAbstractParser.call(this,\"MathML\");this.parseMap_={SEMANTICS:goog.bind(this.semantics_,this),MATH:goog.bind(this.rows_,this),MROW:goog.bind(this.rows_,this),MPADDED:goog.bind(this.rows_,this),MSTYLE:goog.bind(this.rows_,this),MFRAC:goog.bind(this.fraction_,this),MSUB:goog.bind(this.limits_,this),MSUP:goog.bind(this.limits_,this),MSUBSUP:goog.bind(this.limits_,this),MOVER:goog.bind(this.limits_,this),MUNDER:goog.bind(this.limits_,this),MUNDEROVER:goog.bind(this.limits_,\nthis),MROOT:goog.bind(this.root_,this),MSQRT:goog.bind(this.sqrt_,this),MTABLE:goog.bind(this.table_,this),MLABELEDTR:goog.bind(this.tableLabeledRow_,this),MTR:goog.bind(this.tableRow_,this),MTD:goog.bind(this.tableCell_,this),MS:goog.bind(this.text_,this),MTEXT:goog.bind(this.text_,this),\"ANNOTATION-XML\":goog.bind(this.text_,this),MI:goog.bind(this.identifier_,this),MN:goog.bind(this.number_,this),MO:goog.bind(this.operator_,this),MFENCED:goog.bind(this.fenced_,this),MENCLOSE:goog.bind(this.enclosed_,\nthis),MMULTISCRIPTS:goog.bind(this.multiscripts_,this),ANNOTATION:goog.bind(this.empty_,this),NONE:goog.bind(this.empty_,this),MACTION:goog.bind(this.action_,this)};var a={type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.NUMBERSET,font:sre.SemanticAttr.Font.DOUBLESTRUCK};\"CHNPQRZ\\u2102\\u210d\\u2115\\u2119\\u211a\\u211d\\u2124\".split(\"\").forEach(function(b){this.getFactory().defaultMap.add(b,a)}.bind(this))};goog.inherits(sre.SemanticMathml,sre.SemanticAbstractParser);\nsre.SemanticMathml.prototype.parse=function(a){sre.SemanticProcessor.getInstance().setNodeFactory(this.getFactory());var b=sre.DomUtil.toArray(a.childNodes),c=sre.DomUtil.tagName(a),d=this.parseMap_[c];b=(d?d:goog.bind(this.dummy_,this))(a,b);sre.SemanticUtil.addAttributes(b,a);if(-1!==[\"MATH\",\"MROW\",\"MPADDED\",\"MSTYLE\",\"SEMANTICS\"].indexOf(c))return b;b.mathml.unshift(a);b.mathmlTree=a;return b};sre.SemanticMathml.prototype.semantics_=function(a,b){return b.length?this.parse(b[0]):this.getFactory().makeEmptyNode()};\nsre.SemanticMathml.prototype.rows_=function(a,b){var c=a.getAttribute(\"semantics\");if(c&&c.match(\"bspr_\"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));b=sre.SemanticUtil.purgeNodes(b);b=1===b.length?this.parse(b[0]):sre.SemanticProcessor.getInstance().row(this.parseList(b));b.mathml.unshift(a);return b};\nsre.SemanticMathml.prototype.fraction_=function(a,b){return sre.SemanticProcessor.getInstance().fractionLikeNode(this.parse(b[0]),this.parse(b[1]),a.getAttribute(\"linethickness\"),\"true\"===a.getAttribute(\"bevelled\"))};sre.SemanticMathml.prototype.limits_=function(a,b){return sre.SemanticProcessor.getInstance().limitNode(sre.DomUtil.tagName(a),this.parseList(b))};\nsre.SemanticMathml.prototype.root_=function(a,b){return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROOT,[this.parse(b[1]),this.parse(b[0])],[])};sre.SemanticMathml.prototype.sqrt_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.SQRT,[sre.SemanticProcessor.getInstance().row(a)],[])};\nsre.SemanticMathml.prototype.table_=function(a,b){var c=a.getAttribute(\"semantics\");if(c&&c.match(\"bspr_\"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.TABLE,this.parseList(b),[]);sre.SemanticProcessor.tableToMultiline(a);return a};sre.SemanticMathml.prototype.tableRow_=function(a,b){a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b),[]);a.role=sre.SemanticAttr.Role.TABLE;return a};\nsre.SemanticMathml.prototype.tableLabeledRow_=function(a,b){if(!b.length)return this.tableRow_(a,b);a=this.parse(b[0]);a.role=sre.SemanticAttr.Role.LABEL;b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b.slice(1)),[a]);b.role=sre.SemanticAttr.Role.TABLE;return b};\nsre.SemanticMathml.prototype.tableCell_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));a=a.length?1===a.length&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(a[0])?a:[sre.SemanticProcessor.getInstance().row(a)]:[];a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.CELL,a,[]);a.role=sre.SemanticAttr.Role.TABLE;return a};\nsre.SemanticMathml.prototype.text_=function(a,b){b=this.leaf_(a,b);if(!a.textContent)return b;b.updateContent(a.textContent,!0);return sre.SemanticProcessor.getInstance().text(b,sre.DomUtil.tagName(a))};\nsre.SemanticMathml.prototype.identifier_=function(a,b){b=this.leaf_(a,b);a=sre.SemanticProcessor.getInstance().identifierNode(b,sre.SemanticProcessor.getInstance().font(a.getAttribute(\"mathvariant\")),a.getAttribute(\"class\"));if(\"clearspeak\"!==sre.Engine.getInstance().domain)return a;-1!==\"fghFGH\".split(\"\").indexOf(a.textContent)&&(a.role=sre.SemanticAttr.Role.SIMPLEFUNC);return a};sre.SemanticMathml.prototype.number_=function(a,b){a=this.leaf_(a,b);sre.SemanticProcessor.number(a);return a};\nsre.SemanticMathml.prototype.operator_=function(a,b){a=this.leaf_(a,b);a.type===sre.SemanticAttr.Type.UNKNOWN&&(a.type=sre.SemanticAttr.Type.OPERATOR);return a};sre.SemanticMathml.prototype.fenced_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));var c=sre.SemanticMathml.getAttribute_(a,\"separators\",\",\"),d=sre.SemanticMathml.getAttribute_(a,\"open\",\"(\");a=sre.SemanticMathml.getAttribute_(a,\"close\",\")\");a=sre.SemanticProcessor.getInstance().mfenced(d,a,c,b);return sre.SemanticProcessor.getInstance().tablesInRow([a])[0]};\nsre.SemanticMathml.prototype.enclosed_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ENCLOSE,[sre.SemanticProcessor.getInstance().row(b)],[]);b.role=a.getAttribute(\"notation\")||sre.SemanticAttr.Role.UNKNOWN;return b};\nsre.SemanticMathml.prototype.multiscripts_=function(a,b){if(!b.length)return this.getFactory().makeEmptyNode();a=this.parse(b.shift());if(!b.length)return a;for(var c=[],d=[],e=[],f=[],g=!1,h=0,k=0,l;l=b[k];k++)\"MPRESCRIPTS\"===sre.DomUtil.tagName(l)?(g=!0,h=0):(g?h&1?c.push(l):d.push(l):h&1?e.push(l):f.push(l),h++);return sre.SemanticUtil.purgeNodes(c).length||sre.SemanticUtil.purgeNodes(d).length?sre.SemanticProcessor.getInstance().tensor(a,this.parseList(d),this.parseList(c),this.parseList(f),this.parseList(e)):\nsre.SemanticProcessor.getInstance().pseudoTensor(a,this.parseList(f),this.parseList(e))};sre.SemanticMathml.prototype.empty_=function(a,b){return this.getFactory().makeEmptyNode()};sre.SemanticMathml.prototype.action_=function(a,b){return 1<b.length?this.parse(b[1]):this.getFactory().makeUnprocessed(a)};sre.SemanticMathml.prototype.dummy_=function(a,b){b=this.getFactory().makeUnprocessed(a);b.role=a.tagName;return b};\nsre.SemanticMathml.prototype.leaf_=function(a,b){return 1===b.length&&b[0].nodeType!==sre.DomUtil.NodeType.TEXT_NODE?(a=this.getFactory().makeUnprocessed(a),sre.SemanticUtil.addAttributes(a,b[0]),a):this.getFactory().makeLeafNode(a.textContent,sre.SemanticProcessor.getInstance().font(a.getAttribute(\"mathvariant\")))};sre.SemanticMathml.getAttribute_=function(a,b,c){if(!a.hasAttribute(b))return c;a=a.getAttribute(b);return a.match(/^\\s*$/)?null:a};sre.SemanticTree=function(a){this.mathml=a;this.parser=new sre.SemanticMathml;this.root=this.parser.parse(a);this.collator=this.parser.getFactory().leafMap.collateMeaning();var b=this.collator.newDefault();b&&(this.parser=new sre.SemanticMathml,this.parser.getFactory().defaultMap=b,this.root=this.parser.parse(a));sre.SemanticTree.implicitVisitor_.visit(this.root,{});sre.SemanticTree.unitVisitor_.visit(this.root,{});sre.SemanticAnnotations.getInstance().annotate(this.root)};\nsre.SemanticTree.implicitVisitor_=new sre.SemanticVisitor(\"general\",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&a.contentNodes.every(function(c){return!c.embellished&&c.textContent===sre.SemanticAttr.invisibleTimes()})&&(a.role=sre.SemanticAttr.Role.IMPLICIT);return!1});\nsre.SemanticTree.unitVisitor_=new sre.SemanticVisitor(\"general\",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&(b=a.childNodes,b.length&&(sre.SemanticPred.isPureUnit(b[0])||sre.SemanticPred.isUnitCounter(b[0]))&&a.childNodes.slice(1).every(sre.SemanticPred.isPureUnit)&&(a.role=sre.SemanticAttr.Role.UNIT));return!1});sre.SemanticTree.empty=function(){var a=sre.DomUtil.parseInput(\"<math/>\"),b=new sre.SemanticTree(a);b.mathml=a;return b};\nsre.SemanticTree.fromNode=function(a,b){var c=sre.SemanticTree.empty();c.root=a;b&&(c.mathml=b);return c};sre.SemanticTree.fromRoot=function(a,b){for(;a.parent;)a=a.parent;a=sre.SemanticTree.fromNode(a);b&&(a.mathml=b);return a};sre.SemanticTree.prototype.xml=function(a){var b=sre.DomUtil.parseInput(\"<stree></stree>\");a=this.root.xml(b.ownerDocument,a);b.appendChild(a);return b};sre.SemanticTree.prototype.toString=function(a){return(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(this.xml(a))};\nsre.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return sre.DomUtil.formatXml(a)};sre.SemanticTree.prototype.displayTree=function(){this.root.displayTree()};sre.SemanticTree.prototype.replaceNode=function(a,b){var c=a.parent;c?c.replaceChild(a,b):this.root=b};sre.SemanticTree.prototype.toJson=function(){var a={};a.stree=this.root.toJson();return a};sre.Semantic={};sre.Semantic.Font=sre.SemanticAttr.Font;sre.Semantic.Role=sre.SemanticAttr.Role;sre.Semantic.Type=sre.SemanticAttr.Type;sre.Semantic.xmlTree=function(a){return sre.Semantic.getTree(a).xml()};sre.Semantic.getTree=function(a){return new sre.SemanticTree(a)};sre.Semantic.getTreeFromString=function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.getTree(a)};sre.MathspeakUtil={};sre.MathspeakUtil.spaceoutText=function(a){return a.textContent.split(\"\").join(\" \")};sre.MathspeakUtil.spaceoutNodes=function(a,b){var c=a.textContent.split(\"\"),d=[],e=sre.SemanticProcessor.getInstance();a=a.ownerDocument;for(var f=0,g;g=c[f];f++)g=e.getNodeFactory().makeLeafNode(g,sre.Semantic.Font.UNKNOWN),g=e.identifierNode(g,sre.Semantic.Font.UNKNOWN,\"\"),b(g),d.push(g.xml(a));return d};\nsre.MathspeakUtil.spaceoutNumber=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.textContent.match(/\\W/)||(b.type=sre.Semantic.Type.NUMBER)})};sre.MathspeakUtil.spaceoutIdentifier=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.font=sre.Semantic.Font.UNKNOWN;b.type=sre.Semantic.Type.IDENTIFIER})};\nsre.MathspeakUtil.nestingBarriers=[sre.Semantic.Type.CASES,sre.Semantic.Type.CELL,sre.Semantic.Type.INTEGRAL,sre.Semantic.Type.LINE,sre.Semantic.Type.MATRIX,sre.Semantic.Type.MULTILINE,sre.Semantic.Type.OVERSCORE,sre.Semantic.Type.ROOT,sre.Semantic.Type.ROW,sre.Semantic.Type.SQRT,sre.Semantic.Type.SUBSCRIPT,sre.Semantic.Type.SUPERSCRIPT,sre.Semantic.Type.TABLE,sre.Semantic.Type.UNDERSCORE,sre.Semantic.Type.VECTOR];sre.MathspeakUtil.nestingDepth={};\nsre.MathspeakUtil.resetNestingDepth=function(a){sre.MathspeakUtil.nestingDepth={};return[a]};\nsre.MathspeakUtil.getNestingDepth=function(a,b,c,d,e,f){d=d||sre.MathspeakUtil.nestingBarriers;e=e||{};f=f||function(h){return!1};var g=(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(b);sre.MathspeakUtil.nestingDepth[a]||(sre.MathspeakUtil.nestingDepth[a]={});if(sre.MathspeakUtil.nestingDepth[a][g])return sre.MathspeakUtil.nestingDepth[a][g];if(f(b)||0>c.indexOf(b.tagName))return 0;b=sre.MathspeakUtil.computeNestingDepth_(b,c,sre.BaseUtil.setdifference(d,c),e,f,0);return sre.MathspeakUtil.nestingDepth[a][g]=\nb};sre.MathspeakUtil.containsAttr=function(a,b){if(!a.attributes)return!1;a=sre.DomUtil.toArray(a.attributes);for(var c=0,d;d=a[c];c++)if(b[d.nodeName]===d.nodeValue)return!0;return!1};\nsre.MathspeakUtil.computeNestingDepth_=function(a,b,c,d,e,f){if(e(a)||-1<c.indexOf(a.tagName)||sre.MathspeakUtil.containsAttr(a,d))return f;-1<b.indexOf(a.tagName)&&f++;if(!a.childNodes||0===a.childNodes.length)return f;a=sre.DomUtil.toArray(a.childNodes);return Math.max.apply(null,a.map(function(g){return sre.MathspeakUtil.computeNestingDepth_(g,b,c,d,e,f)}))};\nsre.MathspeakUtil.fractionNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"fraction\",a,[\"fraction\"],sre.MathspeakUtil.nestingBarriers,{},sre.Messages.MS_FUNC.FRAC_NEST_DEPTH)};sre.MathspeakUtil.nestedFraction=function(a,b,c){a=sre.MathspeakUtil.fractionNestingDepth(a);a=Array.apply(null,Array(a)).map(function(d){return b});c&&a.push(c);return a.join(sre.Messages.REGEXP.JOINER_FRAC)};\nsre.MathspeakUtil.openingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.closingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.overFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.FRAC_OVER)};\nsre.MathspeakUtil.openingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_B)};sre.MathspeakUtil.closingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_B)};\nsre.MathspeakUtil.openingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_S:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_S)};\nsre.MathspeakUtil.closingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.ENDFRAC:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.ENDFRAC)};\nsre.MathspeakUtil.overFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_OVER:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_OVER)};sre.MathspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,10,100)?[a]:[]};\nsre.MathspeakUtil.nestedSubSuper=function(a,b,c){for(;a.parentNode;){var d=a.parentNode,e=d.parentNode,f=a.getAttribute&&a.getAttribute(\"role\");if(e.tagName===sre.Semantic.Type.SUBSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUB||f===sre.Semantic.Role.RIGHTSUB))b=c.sub+sre.Messages.REGEXP.JOINER_SUBSUPER+b;if(e.tagName===sre.Semantic.Type.SUPERSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUPER||\nf===sre.Semantic.Role.RIGHTSUPER))b=c.sup+sre.Messages.REGEXP.JOINER_SUBSUPER+b;a=e}return b.trim()};sre.MathspeakUtil.subscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUBSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.subscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUB,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};\nsre.MathspeakUtil.superscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUPERSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.superscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUP,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};\nsre.MathspeakUtil.baselineVerbose=function(a){return(a=sre.MathspeakUtil.nestedSubSuper(a,\"\",{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB}))?a.replace(new RegExp(sre.Messages.MS.SUB+\"$\"),sre.Messages.MS.SUBSCRIPT).replace(new RegExp(sre.Messages.MS.SUPER+\"$\"),sre.Messages.MS.SUPERSCRIPT):sre.Messages.MS.BASELINE};sre.MathspeakUtil.baselineBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,\"\",{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})||sre.Messages.MS.BASE};\nsre.MathspeakUtil.radicalNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"radical\",a,[\"sqrt\",\"root\"],sre.MathspeakUtil.nestingBarriers,{})};sre.MathspeakUtil.nestedRadical=function(a,b,c){var d=sre.MathspeakUtil.radicalNestingDepth(a);c=(a=sre.MathspeakUtil.getRootIndex(a))?sre.Messages.MS_FUNC.COMBINE_ROOT_INDEX(c,a):c;return 1===d?c:sre.Messages.MS_FUNC.COMBINE_NESTED_RADICAL(b,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(d-1),c)};\nsre.MathspeakUtil.getRootIndex=function(a){a=\"sqrt\"===a.tagName?\"2\":sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0].textContent.trim();return sre.Messages.MS_ROOT_INDEX[a]||\"\"};sre.MathspeakUtil.openingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ENDROOT)};\nsre.MathspeakUtil.indexRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ENDROOT)};\nsre.MathspeakUtil.indexRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOT)};sre.MathspeakUtil.indexRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.INDEX)};\nsre.MathspeakUtil.underscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"underscore\",a,[\"underscore\"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.UNDERSCORE&&b.childNodes[0].childNodes[1].getAttribute(\"role\")===sre.Semantic.Role.UNDERACCENT})};sre.MathspeakUtil.nestedUnderscore=function(a){a=sre.MathspeakUtil.underscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.UNDER)+sre.Messages.MS.UNDERSCRIPT};\nsre.MathspeakUtil.overscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"overscore\",a,[\"overscore\"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.OVERSCORE&&b.childNodes[0].childNodes[1].getAttribute(\"role\")===sre.Semantic.Role.OVERACCENT})};sre.MathspeakUtil.nestedOverscore=function(a){a=sre.MathspeakUtil.overscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.OVER)+sre.Messages.MS.OVERSCRIPT};\nsre.MathspeakUtil.determinantIsSimple=function(a){if(a.tagName!==sre.Semantic.Type.MATRIX||a.getAttribute(\"role\")!==sre.Semantic.Role.DETERMINANT)return[];for(var b=sre.XpathUtil.evalXPath(\"children/row/children/cell/children/*\",a),c=0,d;d=b[c];c++)if(d.tagName!==sre.Semantic.Type.NUMBER){if(d.tagName===sre.Semantic.Type.IDENTIFIER&&(d=d.getAttribute(\"role\"),d===sre.Semantic.Role.LATINLETTER||d===sre.Semantic.Role.GREEKLETTER||d===sre.Semantic.Role.OTHERLETTER))continue;return[]}return[a]};\nsre.MathspeakUtil.generateBaselineConstraint=function(){var a=function(g){return g.map(function(h){return\"ancestor::\"+h})},b=\"not(\"+a([\"subscript\",\"superscript\",\"tensor\"]).join(\" or \")+\")\",c=a([\"relseq\",\"multrel\"]);a=a([\"fraction\",\"punctuation\",\"fenced\",\"sqrt\",\"root\"]);for(var d=[],e=0,f;f=a[e];e++)d=d.concat(c.map(function(g){return f+\"/\"+g}));c=\"not(\"+d.join(\" | \")+\")\";return[\"ancestor::*/following-sibling::*\",b,c].join(\" and \")};\nsre.MathspeakUtil.removeParens=function(a){if(!a.childNodes.length||!a.childNodes[0].childNodes.length||!a.childNodes[0].childNodes[0].childNodes.length)return\"\";a=a.childNodes[0].childNodes[0].childNodes[0].textContent;return a.match(/^\\(.+\\)$/)?a.slice(1,-1):a};sre.MathspeakUtil.componentString_={3:\"CSFleftsuperscript\",4:\"CSFleftsubscript\",2:\"CSFbaseline\",1:\"CSFrightsubscript\",0:\"CSFrightsuperscript\"};sre.MathspeakUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};\nsre.MathspeakUtil.generateTensorRuleStrings_=function(a){var b=[],c=\"\",d=\"\";a=parseInt(a,2);for(var e=0;5>e;e++){var f=\"children/*[\"+sre.MathspeakUtil.childNumber_[e]+\"]\";if(a&1){var g=sre.MathspeakUtil.componentString_[e%5];c=\"[t] \"+g+\"Verbose; [n] \"+f+\";\"+c;d=\"[t] \"+g+\"Brief; [n] \"+f+\";\"+d}else b.unshift(\"name(\"+f+')=\"empty\"');a>>=1}b.push(c);b.push(d);return b};\nsre.MathspeakUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a),c=goog.bind(a.defineRulesAlias,a);a=goog.bind(a.defineSpecialisedRule,a);for(var d=\"11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100\".split(\" \"),e=0,f;f=d[e];e++){var g=\"tensor\"+f;f=sre.MathspeakUtil.generateTensorRuleStrings_(f);var h=f.pop(),k=f.pop(),l=[g,\"default\",k,\"self::tensor\"].concat(f),m=[g,\"brief\",h,\"self::tensor\"].concat(f);b.apply(null,l);b.apply(null,m);a(g,\"brief\",\"sbrief\");l=sre.MathspeakUtil.componentString_[2];\nk+=\"; [t]\"+l+\"Verbose\";h+=\"; [t]\"+l+\"Brief\";g+=\"-baseline\";l=[g,\"default\",k,\"self::tensor\",\"following-sibling::*\"].concat(f);m=[g,\"brief\",h,\"self::tensor\",\"following-sibling::*\"].concat(f);b.apply(null,l);b.apply(null,m);a(g,\"brief\",\"sbrief\");g=[g,\"self::tensor\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished\"].concat(f);c.apply(null,g)}};sre.Locale={};sre.Locale.nestingToString=function(a){switch(a){case 1:return sre.Messages.MS.ONCE||\"\";case 2:return sre.Messages.MS.TWICE;default:return a.toString()}};sre.Locale.vulgarNestingDepth=function(a){return!!sre.MathspeakUtil.isSmallVulgarFraction(a).length};sre.Locale.combinePostfixIndex=function(a,b){return a===sre.Messages.MS.ROOTINDEX||a===sre.Messages.MS.INDEX?a:a+\" \"+b};sre.Locale.localFont=function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||\"\");return\"string\"===typeof b?b:b[0]};\nsre.Grammar.getInstance().setCorrection(\"localFont\",sre.Locale.localFont);sre.Locale.localRole=function(a){return sre.Messages.ROLE[a]||a};sre.Grammar.getInstance().setCorrection(\"localRole\",sre.Locale.localRole);sre.Locale.localEnclose=function(a){return sre.Messages.ENCLOSE[a]||a};sre.Grammar.getInstance().setCorrection(\"localEnclose\",sre.Locale.localEnclose);sre.Locale.makePlural=function(a){var b=sre.Messages.PLURAL_UNIT[a];return b?b:sre.Messages.PLURAL(a)};\nsre.Grammar.getInstance().setCorrection(\"plural\",sre.Locale.makePlural);sre.Locale.prefixCombiner=function(a,b,c){a=c?c+\" \"+a:a;return b?b+\" \"+a:a};sre.Locale.postfixCombiner=function(a,b,c){a=c?c+\" \"+a:a;return b?a+\" \"+b:a};sre.Numbers.de={};sre.Numbers.de.onesNumbers_=\" eins zwei drei vier f\\u00fcnf sechs sieben acht neun zehn elf zw\\u00f6lf dreizehn vierzehn f\\u00fcnfzehn sechzehn siebzehn achtzehn neunzehn\".split(\" \");sre.Numbers.de.tensNumbers_=\"  zwanzig drei\\u00dfig vierzig f\\u00fcnfzig sechzig siebzig achtzig neunzig\".split(\" \");sre.Numbers.de.largeNumbers_=\" tausend million milliarde billion billiarde trillion trilliard quadrillion quadrilliard quintillion quintilliarde sextillion sextilliarde\".split(\" \");\nsre.Numbers.de.onePrefix_=function(a){return a===sre.Numbers.de.onesNumbers_[1]?\"ein\":a};sre.Numbers.de.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.de.onesNumbers_[Math.floor(a/100)];var c=b?sre.Numbers.de.onePrefix_(b)+\"hundert\":\"\";if(a%=100)if(c+=c?sre.Numbers.de.NUMBERS.numSep:\"\",b=sre.Numbers.de.onesNumbers_[a])c+=b;else{var d=sre.Numbers.de.tensNumbers_[Math.floor(a/10)];b=sre.Numbers.de.onesNumbers_[a%10];c+=b?sre.Numbers.de.onePrefix_(b)+\"und\"+d:d}return c};\nsre.Numbers.de.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){if(a%1E3){var d=sre.Numbers.de.hundredsToWords_(a%1E3);c=sre.Numbers.de.onePrefix_(d)+(b?sre.Numbers.de.largeNumbers_[b]:\"\")+c}a=Math.floor(a/1E3);b++}return c.replace(/ein$/,\"eins\")};sre.Numbers.de.numberToOrdinal=function(a,b){return 1===a?\"eintel\":2===a?b?\"halbe\":\"halb\":sre.Numbers.de.wordOrdinal(a)+\"l\"};\nsre.Numbers.de.wordOrdinal=function(a){return 1===a?\"erste\":3===a?\"dritte\":7===a?\"siebte\":8===a?\"achte\":sre.Numbers.de.numberToWords(a)+(19>a?\"te\":\"ste\")};sre.Numbers.de.simpleOrdinal=function(a){return a.toString()+\".\"};sre.Numbers.de.NUMBERS={wordOrdinal:sre.Numbers.de.wordOrdinal,simpleOrdinal:sre.Numbers.de.simpleOrdinal,numberToWords:sre.Numbers.de.numberToWords,numberToOrdinal:sre.Numbers.de.numberToOrdinal,vulgarSep:\" \",numSep:\"\"};var germanPrefixCombiner=function(a,b,c){\"s\"===c&&(b=b.split(\" \").map(function(d){return d.replace(/s$/,\"\")}).join(\" \"),c=\"\");a=c?c+\" \"+a:a;return b?b+\" \"+a:a},germanPostfixCombiner=function(a,b,c){a=c&&\"s\"!==c?c+\" \"+a:a;return b?a+\" \"+b:a};\nsre.Locale.de={MS:{START:\"Anfang\",FRAC_V:\"Bruch\",FRAC_B:\"Bruch\",FRAC_S:\"Bruch\",END:\"Ende\",FRAC_OVER:\"durch\",TWICE:\"Twice\",NEST_FRAC:\"geschachtelt\",ENDFRAC:\"Ende Bruch\",SUPER:\"hoch\",SUB:\"Index\",SUP:\"hoch\",SUPERSCRIPT:\"hoch\",SUBSCRIPT:\"Index\",BASELINE:\"Grundlinie\",BASE:\"Grund\",NESTED:\"geschachtelte\",NEST_ROOT:\"geschachtelte\",STARTROOT:\"Anfang Wurzel\",ENDROOT:\"Ende Wurzel\",ROOTINDEX:\"Wurzelexponent\",ROOT:\"Wurzel\",INDEX:\"Exponent\",UNDER:\"Unter\",UNDERSCRIPT:\"Unterschrift\",OVER:\"\\u00dcber\",OVERSCRIPT:\"\\u00dcberschrift\"},\nMS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,RADICAL_NEST_DEPTH:function(a){return 1<a?sre.Numbers.de.NUMBERS.numberToWords(a)+\"fach\":\"\"},COMBINE_ROOT_INDEX:function(a,b){return a.replace(\"Wurzel\",b?b+\"wurzel\":\"\")},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){a=c.match(/exponent$/)?a+\"r\":a;a=(b?b+\" \":\"\")+a;return c.match(/ /)?c.replace(/ /,\" \"+a+\" \"):a+\" \"+c},FONT_REGEXP:function(a){a=a.split(\" \").map(function(b){return b.replace(/s$/,\"(|s)\")}).join(\" \");\nreturn new RegExp(\"((^\"+a+\" )|( \"+a+\"$))\")}},MS_ROOT_INDEX:{2:\"Quadrat\",3:\"Kubik\"},FONT:{bold:\"fettes\",\"bold-fraktur\":\"fettes Fraktur\",\"bold-italic\":\"fettkursives\",\"bold-script\":\"fettes Schreibschrift\",caligraphic:\"kalligrafisches\",\"caligraphic-bold\":\"fettes kalligrafisches\",\"double-struck\":[\"mit Doppelstrich\",germanPostfixCombiner],\"double-struck-italic\":[\"kursiv mit Doppelstrich\",germanPostfixCombiner],fraktur:\"Fraktur\",fullwidth:\"vollbreites\",italic:\"kursives\",monospace:\"nichtproportionales\",normal:\"normales\",\noldstyle:\"antiquiertes\",\"oldstyle-bold\":\"antiquiertes fettes\",script:\"Schreibschrift\",\"sans-serif\":\"serifenloses\",\"sans-serif-italic\":\"serifenloses kursives\",\"sans-serif-bold\":\"serifenloses fettes\",\"sans-serif-bold-italic\":\"serifenloses fettkursives\",unknown:\"unbekannt\"},EMBELLISH:{\"super\":\"hoch\",sub:\"Index\",circled:\"eingekreistes\",parenthesized:\"eingeklammertes\",period:[\"Punkt\",germanPostfixCombiner],\"negative-circled\":\"schwarz eingekreistes\",\"double-circled\":\"doppelt eingekreistes\",\"circled-sans-serif\":\"eingekreistes serifenloses\",\n\"negative-circled-sans-serif\":\"schwarz eingekreistes serifenloses\",comma:[\"Komma\",germanPostfixCombiner],squared:\"umrahmtes\",\"negative-squared\":\"schwarz umrahmtes\"},ROLE:{addition:\"Addition\",multiplication:\"Multiplikation\",subtraction:\"Subtraktion\",division:\"Division\",equality:\"Gleichung\",inequality:\"Ungleichung\",element:\"Element\",arrow:\"Pfeil\",determinant:\"Determinante\",rowvector:\"Zeilenvektor\",binomial:\"Binomialkoeffizient\",squarematrix:\"quadratische Matrize\",multiline:\"mehrzeiligem Ausdruck\",matrix:\"Matrize\",\nvector:\"Vektor\",cases:\"Fallunterscheidung\",table:\"Tabelle\",unknown:\"unbekannt\"},ENCLOSE:{longdiv:\"langer Bruchstrich\",actuarial:\"Bilanzsumme\",radical:\"Quadratwurzel\",box:\"rechteckige Umrandung\",roundedbox:\"abgerundete rechteckige Umrandung\",circle:\"kreis\\u00e4hnliche Umrandung\",left:\"senkrechte Linie links\",right:\"senkrechte Linie rechts\",top:\"waagerechte Linie oberhalb\",bottom:\"waagerechte Linie unterhalb\",updiagonalstrike:\"durchgestrichen\",downdiagonalstrike:\"durchgestrichen\",verticalstrike:\"senkrecht durchgestrichen\",\nhorizontalstrike:\"durchgestrichen\",madruwb:\"arabisches Fakult\\u00e4tssymbol\",updiagonalarrow:\"Pfeil von links unten nach rechts oben\",phasorangle:\"phasor angle\",unknown:\"langer Bruchstrich\"},NAVIGATE:{COLLAPSIBLE:\"kollabierbar\",EXPANDABLE:\"ausfaltbar\",LEVEL:\"Niveau\"},REGEXP:{TEXT:\"a-zA-Z\\u00e4\\u00f6\\u00fc\\u00c4\\u00d6\\u00dc\\u00df\",NUMBER:\"((\\\\d{1,3})(?=(.| ))((.| )\\\\d{3})*(\\\\,\\\\d+)?)|^\\\\d*\\\\,\\\\d+|^\\\\d+\",DECIMAL_MARK:\",\",DIGIT_GROUP:\"\\\\.\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\" \"},PLURAL_UNIT:{Meile:\"Meilen\",\nYard:\"Yards\",Joule:\"Joules\",Gallone:\"Gallonen\",Unze:\"Unzen\",Tonne:\"Tonnen\",Minute:\"Minuten\",Stunde:\"Stunden\",Sekunde:\"Sekunden\"},PLURAL:function(a){return a.match(/(B|b)yte$/)?a.replace(/yte$/,\"ytes\"):a},NUMBERS:sre.Numbers.de.NUMBERS,ALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lambda;my;ny;xi;omikron;pi;rho;abschlie\\u00dfendes sigma;sigma;tau;ypsilon;phi;chi;psi;omega;partielle Ableitung;epsilon;theta;kappa;phi;rho;pi\".split(\";\"),\ngreekCap:\"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Theta Sigma Tau Ypsilon Phi Chi Psi Omega\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"null\":sre.Numbers.de.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"gro\\u00dfes\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"s\"}},ALPHABET_COMBINER:germanPrefixCombiner};\nsre.Grammar.getInstance().setCorrection(\"correctOne\",function(a){return a.replace(/^eins /,\"ein \")});sre.Grammar.getInstance().setCorrection(\"localFontNumber\",function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||\"\");b=\"string\"===typeof b?b:b[0];return b.split(\" \").map(function(c){return c.replace(/s$/,\"\")}).join(\" \")});sre.Grammar.getInstance().setCorrection(\"lowercase\",function(a){return a.toLowerCase()});\nsre.Grammar.getInstance().setCorrection(\"article\",function(a){return\"dative\"===sre.Grammar.getInstance().getParameter(\"case\")?{der:\"dem\",die:\"der\",das:\"dem\"}[a]:a});sre.Grammar.getInstance().setCorrection(\"masculine\",function(a){return\"dative\"===sre.Grammar.getInstance().getParameter(\"case\")?a+\"n\":a});sre.Numbers.en={};sre.Numbers.en.onesNumbers_=\" one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen\".split(\" \");sre.Numbers.en.tensNumbers_=\"  twenty thirty forty fifty sixty seventy eighty ninety\".split(\" \");sre.Numbers.en.largeNumbers_=\" thousand million billion trillion quadrillion quintillion sextillion septillion octillion nonillion decillion\".split(\" \");\nsre.Numbers.en.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.en.onesNumbers_[Math.floor(a/100)]?sre.Numbers.en.onesNumbers_[Math.floor(a/100)]+sre.Numbers.en.NUMBERS.numSep+\"hundred\":\"\";if(a%=100)b+=b?sre.Numbers.en.NUMBERS.numSep:\"\",b+=sre.Numbers.en.onesNumbers_[a]||sre.Numbers.en.tensNumbers_[Math.floor(a/10)]+(a%10?sre.Numbers.en.NUMBERS.numSep+sre.Numbers.en.onesNumbers_[a%10]:\"\");return b};\nsre.Numbers.en.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;)a%1E3&&(c=sre.Numbers.en.hundredsToWords_(a%1E3)+(b?\"-\"+sre.Numbers.en.largeNumbers_[b]+\"-\":\"\")+c),a=Math.floor(a/1E3),b++;return c.replace(/-$/,\"\")};sre.Numbers.en.numberToOrdinal=function(a,b){if(1===a)return b?\"oneths\":\"oneth\";if(2===a)return b?\"halves\":\"half\";a=sre.Numbers.en.wordOrdinal(a);return b?a+\"s\":a};\nsre.Numbers.en.wordOrdinal=function(a){a=sre.Numbers.en.numberToWords(a);return a=a.match(/one$/)?a.slice(0,-3)+\"first\":a.match(/two$/)?a.slice(0,-3)+\"second\":a.match(/three$/)?a.slice(0,-5)+\"third\":a.match(/five$/)?a.slice(0,-4)+\"fifth\":a.match(/eight$/)?a.slice(0,-5)+\"eighth\":a.match(/nine$/)?a.slice(0,-4)+\"ninth\":a.match(/twelve$/)?a.slice(0,-6)+\"twelfth\":a.match(/ty$/)?a.slice(0,-2)+\"tieth\":a+\"th\"};\nsre.Numbers.en.simpleOrdinal=function(a){var b=a%100,c=a.toString();if(10<b&&20>b)return c+\"th\";switch(a%10){case 1:return c+\"st\";case 2:return c+\"nd\";case 3:return c+\"rd\";default:return c+\"th\"}};sre.Numbers.en.NUMBERS={wordOrdinal:sre.Numbers.en.wordOrdinal,simpleOrdinal:sre.Numbers.en.simpleOrdinal,numberToWords:sre.Numbers.en.numberToWords,numberToOrdinal:sre.Numbers.en.numberToOrdinal,vulgarSep:\" \",numSep:\" \"};sre.Locale.en={MS:{START:\"Start\",FRAC_V:\"Fraction\",FRAC_B:\"Frac\",FRAC_S:\"Frac\",END:\"End\",FRAC_OVER:\"Over\",TWICE:\"Twice\",NEST_FRAC:\"Nest\",ENDFRAC:\"EndFrac\",SUPER:\"Super\",SUB:\"Sub\",SUP:\"Sup\",SUPERSCRIPT:\"Superscript\",SUBSCRIPT:\"Subscript\",BASELINE:\"Baseline\",BASE:\"Base\",NESTED:\"Nested\",NEST_ROOT:\"Nest\",STARTROOT:\"StartRoot\",ENDROOT:\"EndRoot\",ROOTINDEX:\"RootIndex\",ROOT:\"Root\",INDEX:\"Index\",UNDER:\"Under\",UNDERSCRIPT:\"Underscript\",OVER:\"Over\",OVERSCRIPT:\"Overscript\"},MS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,\nRADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:function(a,b){return a},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+b+c},FONT_REGEXP:function(a){return new RegExp(\"^\"+a.split(/ |-/).join(\"( |-)\")+\"( |-)\")}},MS_ROOT_INDEX:{},FONT:{bold:\"bold\",\"bold-fraktur\":\"bold fraktur\",\"bold-italic\":\"bold italic\",\"bold-script\":\"bold script\",caligraphic:\"calligraphic\",\"caligraphic-bold\":\"calligraphic bold\",\"double-struck\":\"double struck\",\n\"double-struck-italic\":\"double struck italic\",fraktur:\"fraktur\",fullwidth:\"fullwidth\",italic:\"italic\",monospace:\"monospace\",normal:\"normal\",oldstyle:\"oldstyle\",\"oldstyle-bold\":\"oldstyle bold\",script:\"script\",\"sans-serif\":\"sans serif\",\"sans-serif-italic\":\"sans serif italic\",\"sans-serif-bold\":\"sans serif bold\",\"sans-serif-bold-italic\":\"sans serif bold italic\",unknown:\"unknown\"},EMBELLISH:{\"super\":\"super\",sub:\"sub\",circled:\"circled\",parenthesized:\"parenthesized\",period:[\"period\",sre.Locale.postfixCombiner],\n\"negative-circled\":\"black circled\",\"double-circled\":\"double circled\",\"circled-sans-serif\":\"circled sans serif\",\"negative-circled-sans-serif\":\"black circled sans serif\",comma:[\"comma\",sre.Locale.postfixCombiner],squared:\"squared\",\"negative-squared\":\"black squared\"},ROLE:{addition:\"addition\",multiplication:\"multiplication\",subtraction:\"subtraction\",division:\"division\",equality:\"equality\",inequality:\"inequality\",element:\"element\",arrow:\"arrow\",determinant:\"determinant\",rowvector:\"row vector\",binomial:\"binomial\",\nsquarematrix:\"square matrix\",multiline:\"multiple lines\",matrix:\"matrix\",vector:\"vector\",cases:\"case statement\",table:\"table\",unknown:\"unknown\"},ENCLOSE:{longdiv:\"long division\",actuarial:\"actuarial symbol\",radical:\"square root\",box:\"box\",roundedbox:\"rounded box\",circle:\"circle\",left:\"left vertical-line\",right:\"right vertical-line\",top:\"overbar\",bottom:\"underbar\",updiagonalstrike:\"crossout\",downdiagonalstrike:\"crossout\",verticalstrike:\"vertical strikeout\",horizontalstrike:\"crossout\",madruwb:\"Arabic factorial symbol\",\nupdiagonalarrow:\"diagonal arrow\",phasorangle:\"phasor angle\",unknown:\"long division\"},NAVIGATE:{COLLAPSIBLE:\"collapsible\",EXPANDABLE:\"expandable\",LEVEL:\"Level\"},REGEXP:{TEXT:\"a-zA-Z\",NUMBER:\"((\\\\d{1,3})(?=(,| ))((,| )\\\\d{3})*(\\\\.\\\\d+)?)|^\\\\d*\\\\.\\\\d+|^\\\\d+\",DECIMAL_MARK:\"\\\\.\",DIGIT_GROUP:\",\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\"\"},PLURAL_UNIT:{foot:\"feet\",inch:\"inches\",\"square foot\":\"square feet\",\"square inch\":\"square inches\",\"cubic foot\":\"cubic feet\",\"cubic inch\":\"cubic inches\"},NUMBERS:sre.Numbers.en.NUMBERS,\nALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lamda;mu;nu;xi;omicron;pi;rho;final sigma;sigma;tau;upsilon;phi;chi;psi;omega;partial differential;epsilon;theta;kappa;phi;rho;pi\".split(\";\"),greekCap:\"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lamda Mu Nu Xi Omicron Pi Rho Theta Sigma Tau Upsilon Phi Chi Psi Omega\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===\na?\"zero\":sre.Numbers.en.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"cap\",mathspeak:\"upper\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}},ALPHABET_COMBINER:sre.Locale.prefixCombiner};sre.Numbers.es={};sre.Numbers.es.onesNumbers_=\" uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince diecis\\u00e9is diecisiete dieciocho diecinueve veinte veintiuno veintid\\u00f3s veintitr\\u00e9s veinticuatro veinticinco veintis\\u00e9is veintisiete veintiocho veintinueve\".split(\" \");sre.Numbers.es.tensNumbers_=\"   treinta cuarenta cincuenta sesenta setenta ochenta noventa\".split(\" \");sre.Numbers.es.hundredsNumbers_=\" cien doscientos trescientos cuatrocientos quinientos seiscientos setecientos ochocientos novecientos\".split(\" \");\nsre.Numbers.es.largeNumbers_=\";mil;mill\\u00f3n;mil mill\\u00f3nes;bill\\u00f3n;mil bill\\u00f3nes;trill\\u00f3n;mil trill\\u00f3nes;cuatrill\\u00f3;mil cuatrill\\u00f3es;quintill\\u00f3n;mil quintill\\u00f3nes;sextill\\u00f3n;mil sextill\\u00f3nes;septill\\u00f3n;mil septill\\u00f3nes;octill\\u00f3n;mil octill\\u00f3nes;nonill\\u00f3n;mil nonill\\u00f3nes;decill\\u00f3n;mil decill\\u00f3nes\".split(\";\");\nsre.Numbers.es.tensToWords_=function(a){var b=a%100;if(30>b)return sre.Numbers.es.onesNumbers_[b];a=sre.Numbers.es.tensNumbers_[Math.floor(b/10)];b=sre.Numbers.es.onesNumbers_[b%10];return a&&b?a+\" y \"+b:a||b};sre.Numbers.es.hundredsToWords_=function(a){var b=a%1E3;a=Math.floor(b/100);var c=sre.Numbers.es.hundredsNumbers_[a];b=sre.Numbers.es.tensToWords_(b%100);return 1===a?b?c+\"to \"+b:c:c&&b?c+\" \"+b:c||b};\nsre.Numbers.es.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.es.largeNumbers_[b],f=sre.Numbers.es.hundredsToWords_(d);b?1===d?(e=e.match(\"/^mil( |$)/\")?e:\"un \"+e,c=e+(c?\" \"+c:\"\")):(e=e.replace(/\\u00f3n$/,\"ones\"),c=sre.Numbers.es.hundredsToWords_(d)+\" \"+e+(c?\" \"+c:\"\")):c=f}a=Math.floor(a/1E3);b++}return c};sre.Numbers.es.onesOrdinals_=\"primera segunda tercera cuarta quinta sexta s\\u00e9ptima octava novena d\\u00e9cima und\\u00e9cima duod\\u00e9cima\".split(\" \");\nsre.Numbers.es.tensOrdinals_=\"d\\u00e9cima vig\\u00e9sima trig\\u00e9sima cuadrag\\u00e9sima quincuag\\u00e9sima sexag\\u00e9sima septuag\\u00e9sima octog\\u00e9sima nonag\\u00e9sima\".split(\" \");sre.Numbers.es.hundredsOrdinals_=\"cent\\u00e9sima ducent\\u00e9sima tricent\\u00e9sima cuadringent\\u00e9sima quingent\\u00e9sima sexcent\\u00e9sima septingent\\u00e9sima octingent\\u00e9sima noningent\\u00e9sima\".split(\" \");\nsre.Numbers.es.numberToOrdinal=function(a,b){if(1999<a)return a.toString()+\"a\";if(12>=a)return sre.Numbers.es.onesOrdinals_[a-1];b=[];1E3<=a&&(a-=1E3,b.push(\"mil\\u00e9sima\"));if(!a)return b.join(\" \");var c=Math.floor(a/100);0<c&&(b.push(sre.Numbers.es.hundredsOrdinals_[c-1]),a%=100);12>=a?b.push(sre.Numbers.es.onesOrdinals_[a-1]):(c=Math.floor(a/10),0<c&&(b.push(sre.Numbers.es.tensOrdinals_[c-1]),a%=10),0<a&&b.push(sre.Numbers.es.onesOrdinals_[a-1]));return b.join(\" \")};\nsre.Numbers.es.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter(\"gender\");return a.toString()+(\"female\"===b?\"a\":\"o\")};sre.Numbers.es.NUMBERS={simpleOrdinal:sre.Numbers.es.simpleOrdinal,numberToWords:sre.Numbers.es.numberToWords,numberToOrdinal:sre.Numbers.es.numberToOrdinal,vulgarSep:\"-\"};var sansserifCombiner=function(a,b,c){a=\"sans serif \"+(c?c+\" \"+a:a);return b?a+\" \"+b:a};\nsre.Locale.es={MS:{START:\"empezar\",FRAC_V:\"fracci\\u00f3n\",FRAC_B:\"frac\",FRAC_S:\"frac\",END:\"finalizar\",FRAC_OVER:\"entre\",TWICE:\"\",NEST_FRAC:\"\",ENDFRAC:\"\",SUPER:\"super\",SUB:\"sub\",SUP:\"sup\",SUPERSCRIPT:\"super\\u00edndice\",SUBSCRIPT:\"sub\\u00edndice\",BASELINE:\"l\\u00ednea base\",BASE:\"\",NESTED:\"\",NEST_ROOT:\"\",STARTROOT:\"empezar ra\\u00edz\",ENDROOT:\"finalizar ra\\u00edz\",ROOTINDEX:\"\\u00edndice de ra\\u00edz\",ROOT:\"ra\\u00edz\",INDEX:\"\",UNDER:\"bajo\",UNDERSCRIPT:\"bajo\\u00edndice\",OVER:\"sobre\",OVERSCRIPT:\"sobre\\u00edndice\"},\nMS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+c},FONT_REGEXP:function(a){return RegExp(\"^\"+a+\" \")}},MS_ROOT_INDEX:{2:\"cuadrada\",3:\"c\\u00fabica\",4:\"a la cuarta\",5:\"a la quinta\",6:\"a la sexta\",7:\"a la s\\u00e9ptima\",8:\"a la octava\",9:\"a la novena\",10:\"a la d\\u00e9cima\"},FONT:{bold:\"negrita\",\"bold-fraktur\":\"negrita Fraktur\",\n\"bold-italic\":\"negrita cursiva\",\"bold-script\":\"negrita script\",caligraphic:\"caligr\\u00e1fica\",\"caligraphic-bold\":\"caligr\\u00e1fica negrita\",\"double-struck\":\"negrita de pizarra\",\"double-struck-italic\":\"negrita de pizarra cursiva\",fraktur:\"Fraktur\",fullwidth:\"ancho completo\",italic:\"cursiva\",monospace:\"monoespacio\",normal:\"normal\",oldstyle:\"estilo antiguo\",\"oldstyle-bold\":\"estilo antiguo negrita\",script:\"script\",\"sans-serif\":\"sans serif\",\"sans-serif-italic\":\"sans serif cursiva\",\"sans-serif-bold\":\"sans serif negrita\",\n\"sans-serif-bold-italic\":\"sans serif negrita cursiva\",unknown:\"desconocida\"},ROLE:{addition:\"adici\\u00f3n\",multiplication:\"multiplicaci\\u00f3n\",subtraction:\"resta\",division:\"divisi\\u00f3n\",equality:\"igualdad\",inequality:\"desigualdad\",element:\"elemento\",arrow:\"flecha\",determinant:\"determinante\",rowvector:\"fila vector\",binomial:\"binomial\",squarematrix:\"matriz cuadrada\",multiline:\"l\\u00edneas m\\u00faltiples\",matrix:\"matriz\",vector:\"vector\",cases:\"declaraci\\u00f3n de caso\",table:\"mesa\",unknown:\"desconocida\"},\nENCLOSE:{longdiv:\"divisi\\u00f3n larga\",actuarial:\"s\\u00edmbolo actuarial\",radical:\"ra\\u00edz cuadrada\",box:\"caja\",roundedbox:\"caja redondeada\",circle:\"c\\u00edrculo\",left:\"barra vertical izquierda\",right:\"barra vertical derecha\",top:\"barra\",bottom:\"subbarra\",updiagonalstrike:\"tachadura\",downdiagonalstrike:\"tachadura\",verticalstrike:\"ponchado vertical\",horizontalstrike:\"cruce\",madruwb:\"s\\u00edmbolo factorial \\u00e1rabe\",updiagonalarrow:\"flecha diagonal\",phasorangle:\"\\u00e1ngulo de fasores\",unknown:\"divisi\\u00f3n larga\"},\nEMBELLISH:{\"super\":\"super\\u00edndice\",sub:\"sub\\u00edndice\",circled:[\"en circulo\",sre.Locale.postfixCombiner],parenthesized:[\"entre par\\u00e9ntesis\",sre.Locale.postfixCombiner],period:[\"punto\",sre.Locale.postfixCombiner],\"negative-circled\":[\"en circulo negro\",sre.Locale.postfixCombiner],\"double-circled\":[\"en doble circulo\",sre.Locale.postfixCombiner],\"circled-sans-serif\":[\"en circulo\",sansserifCombiner],\"negative-circled-sans-serif\":[\"en circulo negro\",sansserifCombiner],comma:[\"coma\",sre.Locale.postfixCombiner],\nsquared:[\"en cuadrado\",sre.Locale.postfixCombiner],\"negative-squared\":[\"en cuadrado negro\",sre.Locale.postfixCombiner]},NAVIGATE:{COLLAPSIBLE:\"plegable\",EXPANDABLE:\"ampliable\",LEVEL:\"nivel\"},REGEXP:{TEXT:\"a-zA-Z\\u00e1\\u00e9\\u00ed\\u00f3\\u00fa\\u00f1\\u00c1\\u00c9\\u00cd\\u00d3\\u00da\\u00d1\",NUMBER:\"((\\\\d{1,3})(?=( ))(( )\\\\d{3})*(,\\\\d+)?)|^\\\\d*,\\\\d+|^\\\\d+\",DECIMAL_MARK:\",\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\" \"},PLURAL_UNIT:{},PLURAL:function(a){return/.*s$/.test(a)?a:a+\"s\"},NUMBERS:sre.Numbers.es.NUMBERS,\nALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alfa;beta;gamma;delta;\\u00e9psilon;zeta;eta;theta;iota;kappa;lambda;mi;ni;xi;\\u00f3micron;pi;rho;sigma final;sigma;tau;\\u00edpsilon;phi;ji;psi;omega;diferencial parcial;\\u00e9psilon;theta;kappa;phi;rho;pi\".split(\";\"),greekCap:\"Alfa Beta Gamma Delta \\u00c9psilon Zeta Eta Theta Iota Kappa Lambda Mi Ni Xi \\u00d3micron Pi Rho Theta Sigma Tau \\u00cdpsilon Phi Ji Psi Omega\".split(\" \")},\nALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"cero\":sre.Numbers.es.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"may\\u00fascula\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}},ALPHABET_COMBINER:sre.Locale.prefixCombiner,UNIT_TIMES:\"por\"};sre.Numbers.fr={};sre.Numbers.fr.SUB_ISO=\"fr\";sre.Numbers.fr.onesNumbers_=\" un deux trois quatre cinq six sept huit neuf dix onze douze treize quatorze quinze seize dix-sept dix-huit dix-neuf\".split(\" \");sre.Numbers.fr.tensNumbers_={fr:\"  vingt trente quarante cinquante soixante soixante-dix quatre-vingts quatre-vingt-dix\".split(\" \"),be:\"  vingt trente quarante cinquante soixante septante quatre-vingts nonante\".split(\" \"),sw:\"  vingt trente quarante cinquante soixante septante huitante nonante\".split(\" \")};\nsre.Numbers.fr.largeNumbers_=\";mille;millions;milliards;billions;mille billions;trillions;mille trillions;quadrillions;mille quadrillions;quintillions;mille quintillions\".split(\";\");\nsre.Numbers.fr.hundredsToWords_=function(a){var b=a%1E3;a=sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]?sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]+\"-cent\":\"\";if(b%=100){a+=a?\"-\":\"\";var c=sre.Numbers.fr.onesNumbers_[b];if(c)a+=c;else{var d=sre.Numbers.fr.tensNumbers_[sre.Numbers.fr.SUB_ISO][Math.floor(b/10)];d.match(/\\-dix$/)?(c=sre.Numbers.fr.onesNumbers_[b%10+10],a+=d.replace(/\\-dix$/,\"\")+\"-\"+c):a+=d+(b%10?\"-\"+sre.Numbers.fr.onesNumbers_[b%10]:\"\")}}return(b=a.match(/s\\-\\w+$/))?a.replace(/s\\-\\w+$/,\nb[0].slice(1)):a.replace(/\\-un$/,\"-et-un\")};\nsre.Numbers.fr.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.fr.largeNumbers_[b],f=sre.Numbers.fr.hundredsToWords_(d);e&&e.match(/^mille /)?(d=e.replace(/^mille /,\"\"),c=c.match(RegExp(d))?f+(b?\"-mille-\":\"\")+c:c.match(RegExp(d.replace(/s$/,\"\")))?f+(b?\"-mille-\":\"\")+c.replace(d.replace(/s$/,\"\"),d):f+(b?\"-\"+e+\"-\":\"\")+c):(e=1===d&&e?e.replace(/s$/,\"\"):e,c=f+(b?\"-\"+e+\"-\":\"\")+c)}a=Math.floor(a/1E3);b++}return c.replace(/-$/,\n\"\")};sre.Numbers.fr.SMALL_ORDINAL={1:\"uni\\u00e8me\",2:\"demi\",3:\"tiers\",4:\"quart\"};sre.Numbers.fr.numberToOrdinal=function(a,b){var c=sre.Numbers.fr.SMALL_ORDINAL[a]||sre.Numbers.fr.wordOrdinal(a);return 3===a?c:b?c+\"s\":c};sre.Numbers.fr.wordOrdinal=function(a){if(1===a)return\"premi\\u00e8re\";a=sre.Numbers.fr.numberToWords(a);a.match(/^neuf$/)?a=a.slice(0,-1)+\"v\":a.match(/cinq$/)?a+=\"u\":a.match(/trois$/)||!a.match(/e$/)&&!a.match(/s$/)||(a=a.slice(0,-1));return a+\"i\\u00e8me\"};\nsre.Numbers.fr.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter(\"gender\");return 1===a?a.toString()+(\"male\"===b?\"er\":\"re\"):a.toString()+\"e\"};sre.Numbers.fr.NUMBERS={wordOrdinal:sre.Numbers.fr.wordOrdinal,simpleOrdinal:sre.Numbers.fr.simpleOrdinal,numberToWords:sre.Numbers.fr.numberToWords,numberToOrdinal:sre.Numbers.fr.numberToOrdinal,vulgarSep:\"-\"};sre.Locale.fr={MS:{START:\"d\\u00e9but\",FRAC_V:\"fraction\",FRAC_B:\"frac\",FRAC_S:\"frac\",END:\"fin\",FRAC_OVER:\"sur\",ONCE:\"1\",TWICE:\"2\",NEST_FRAC:\"imbriqu\\u00e9e\",ENDFRAC:\"fin frac\",SUPER:\"sup\",SUB:\"sub\",SUP:\"sup\",SUPERSCRIPT:\"exposant\",SUBSCRIPT:\"indice\",BASELINE:\"position de base\",BASE:\"position de base\",NESTED:\"imbriqu\\u00e9e\",NEST_ROOT:\"imbriqu\\u00e9e\",STARTROOT:\"d\\u00e9but racine\",ENDROOT:\"fin racine\",ROOTINDEX:\"indice du radical\",ROOT:\"racine\",INDEX:\"indice\",UNDER:\"sous\",UNDERSCRIPT:\"souscript\",OVER:\"sus\",\nOVERSCRIPT:\"suscript\"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return c.replace(/ $/g,\"\")+b+a},COMBINE_NESTED_RADICAL:function(a,b,c){return c+\" \"+a},FONT_REGEXP:function(a){return RegExp(\" (en |)\"+a+\"$\")}},MS_ROOT_INDEX:{2:\"carr\\u00e9e\",3:\"cubique\"},FONT:{bold:\"en gras\",\"bold-fraktur\":\"en gothique gras\",\"bold-italic\":\"en italique gras\",\"bold-script\":\"de ronde en gras\",\ncaligraphic:\"en calligraphique\",\"caligraphic-bold\":\"en calligraphique gras\",\"double-struck\":\"ajour\\u00e9\",\"double-struck-italic\":\"ajour\\u00e9 en italique\",fraktur:\"en gothique\",fullwidth:\"en pleine largeur\",italic:\"en italique\",monospace:\"en chasse fixe\",normal:\"en normal\",oldstyle:\"en ancien\",\"oldstyle-bold\":\"en ancien gras\",script:\"de ronde\",\"sans-serif\":\"sans empattement\",\"sans-serif-italic\":\"en italique sans empattement\",\"sans-serif-bold\":\"en gras sans empattement\",\"sans-serif-bold-italic\":\"en italique gras sans empattement\",\nunknown:\"inconnu\"},EMBELLISH:{\"super\":[\"exposant\",sre.Locale.prefixCombiner],sub:[\"indice\",sre.Locale.prefixCombiner],circled:\"encercl\\u00e9\",parenthesized:\"entre parenth\\u00e8ses\",period:\"un point\",\"negative-circled\":\"encercl\\u00e9 noir\",\"double-circled\":\"encercl\\u00e9 double\",\"circled-sans-serif\":\"sans empattement encercl\\u00e9\",\"negative-circled-sans-serif\":\"sans empattement encercl\\u00e9 noir\",comma:\"virgule\",squared:\"encadr\\u00e9\",\"negative-squared\":\"encadr\\u00e9 inverse\"},ROLE:{addition:\"addition\",\nmultiplication:\"multiplication\",subtraction:\"soustraction\",division:\"division\",equality:\"\\u00e9galit\\u00e9\",inequality:\"in\\u00e9galit\\u00e9\",element:\"\\u00e9l\\u00e9ment\",arrow:\"fl\\u00e8che\",determinant:\"d\\u00e9terminant\",rowvector:\"vecteur-rang\\u00e9e\",binomial:\"binomial\",squarematrix:\"matrice carr\\u00e9e\",\"set empty\":\"ensemble vide\",\"set extended\":\"extension\",\"set singleton\":\"singleton\",\"set collection\":\"collection\",label:\"\\u00e9tiquette\",multiline:\"multi-ligne\",matrix:\"matrice\",vector:\"vecteur\",\ncases:\"d\\u00e9claration de cas\",table:\"tableau\",unknown:\"inconnu\"},ENCLOSE:{longdiv:\"longue division\",actuarial:\"notation actuarielle\",radical:\"radical\",box:\"bo\\u00eete\",roundedbox:\"bo\\u00eete arrondie\",circle:\"cercle\",left:\"barre verticale gauche\",right:\"barre verticale droite\",top:\"trait suscrit\",bottom:\"trait souscrit\",updiagonalstrike:\"texte biff\\u00e9 diagonal montant\",downdiagonalstrike:\"texte biff\\u00e9 diagonal descendant\",verticalstrike:\"texte biff\\u00e9 vertical\",horizontalstrike:\"texte biff\\u00e9 horizontal\",\nmadruwb:\"symbole factorielle arabe\",updiagonalarrow:\"fl\\u00e8che diagonale montante\",phasorangle:\"angle de phase\",unknown:\"division longue\"},NAVIGATE:{COLLAPSIBLE:\"compressible\",EXPANDABLE:\"d\\u00e9compressible\",LEVEL:\"niveau\"},REGEXP:{TEXT:\"a-zA-Z\\u00e0\\u00e2\\u00e6\\u00e7\\u00e9\\u00e8\\u00ea\\u00eb\\u00ee\\u00ef\\u00f4\\u0153\\u00f9\\u00fb\\u00fc\\u00ff\\u00c0\\u00c2\\u00c6\\u00c7\\u00c9\\u00c8\\u00ca\\u00cb\\u00ce\\u00cf\\u00d4\\u0152\\u00d9\\u00db\\u00dc\\u0178\",NUMBER:\"((\\\\d{1,3})(?=( ))(( )\\\\d{3})*(,\\\\d+)?)|^\\\\d*,\\\\d+|^\\\\d+\",\nDECIMAL_MARK:\",\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\"-\",JOINER_FRAC:\" \"},PLURAL_UNIT:{foot:\"feet\",inch:\"inches\"},NUMBERS:sre.Numbers.fr.NUMBERS,ALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;b\\u00eata;gamma;delta;epsilon;z\\u00eata;\\u00eata;th\\u00eata;iota;kappa;lambda;m\\u00fb;n\\u00fb;xi;omicron;pi;rh\\u00f4;sigma final;sigma;tau;upsilon;phi;chi;psi;om\\u00e9ga;d\\u00e9riv\\u00e9e partielle;epsilon;th\\u00eata;kappa;phi;rh\\u00f4;pi\".split(\";\"),\ngreekCap:\"Alpha B\\u00eata Gamma Delta Epsilon Z\\u00eata \\u00cata Th\\u00eata Iota Kappa Lambda M\\u00fb N\\u00fb Xi Omicron Pi Rh\\u00f4 Th\\u00eata Sigma Tau Upsilon Phi Chi Psi Om\\u00e9ga\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"zero\":sre.Numbers.fr.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"majuscule\"},smallPrefix:{default:\"\"},\ndigitPrefix:{default:\"\"}},ALPHABET_COMBINER:function(a,b,c){a=c?a+\" \"+c:a;return b?a+\" \"+b:a}};sre.Numbers.nemeth={};sre.Numbers.nemeth.oneNumbers_=\"\\u2834\\u2802\\u2806\\u2812\\u2832\\u2822\\u2816\\u2836\\u2826\\u2814\".split(\"\");sre.Numbers.nemeth.numberToWords=function(a){return a.toString().split(\"\").map(function(b){return sre.Numbers.nemeth.oneNumbers_[parseInt(b,10)]}).join(\"\")};sre.Numbers.nemeth.NUMBERS={numberToWords:sre.Numbers.nemeth.numberToWords,simpleOrdinal:sre.Numbers.nemeth.numberToWords};var postfixCombiner=function(a,b,c){return b?a+b:a},embellishCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283b\"},doubleEmbellishCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283b\\u283b\"},parensCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283e\"};\nsre.Locale.nemeth={MS:{FRACTION_REPEAT:\"\\u2820\",FRACTION_START:\"\\u2839\",FRAC_V:\"\\u2839\",FRAC_B:\"Frac\",FRAC_S:\"Frac\",END:\"\\u2820\",FRACTION_OVER:\"\\u280c\",TWICE:\"Twice\",NEST_FRAC:\"Nest\",ENDFRAC:\"\\u283c\",FRACTION_END:\"\\u283c\",SUPER:\"\\u2818\",SUB:\"\\u2830\",SUP:\"\\u2818\",SUPERSCRIPT:\"\\u2818\",SUBSCRIPT:\"\\u2830\",BASELINE:\"\\u2810\",BASE:\"\\u2810\",NESTED:\"\\u2828\",NEST_ROOT:\"Nest\",STARTROOT:\"\\u281c\",ENDROOT:\"\\u283b\",ROOTINDEX:\"\\u2823\",ROOT:\"\\u2828\",INDEX:\"\\u2823\",UNDER:\"\\u2829\",UNDERSCRIPT:\"\\u2829\",OVER:\"\\u2823\",\nOVERSCRIPT:\"\\u2823\"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:function(a,b){return a},FONT_REGEXP:function(a){return RegExp(\"^\"+a)}},MS_ROOT_INDEX:{},FONT:{bold:\"\\u2838\",\"bold-fraktur\":\"\\u2838\\u2800\\u2838\",\"bold-italic\":\"\\u2838\\u2828\",\"bold-script\":\"\\u2838\\u2808\",caligraphic:\"\\u2808\",\"caligraphic-bold\":\"\\u2808\\u2838\",\"double-struck\":\"\\u2838\",\"double-struck-italic\":\"\\u2838\\u2828\",fraktur:\"\\u2838\",italic:\"\\u2828\",monospace:\"\",normal:\"\",\noldstyle:\"\",\"oldstyle-bold\":\"\\u2838\",script:\"\\u2808\",\"sans-serif\":\"\\u2820\\u2828\",\"sans-serif-italic\":\"\\u2820\\u2828\\u2828\",\"sans-serif-bold\":\"\\u2820\\u2828\\u2838\",\"sans-serif-bold-italic\":\"\\u2820\\u2828\\u2838\\u2828\",unknown:\"\"},EMBELLISH:{\"super\":\"\\u2818\",sub:\"\\u2830\",circled:[\"\\u282b\\u2809\\u2838\\u282b\",embellishCombiner],parenthesized:[\"\\u2837\",parensCombiner],period:[\"\\u2838\\u2832\",postfixCombiner],\"negative-circled\":[\"\\u282b\\u2838\\u2809\\u2838\\u282b\",embellishCombiner],\"double-circled\":[\"\\u282b\\u2809\\u2838\\u282b\\u282b\\u2809\\u2838\\u282b\",\ndoubleEmbellishCombiner],\"circled-sans-serif\":[\"\\u282b\\u2809\\u2838\\u282b\\u2820\\u2828\",embellishCombiner],\"negative-circled-sans-serif\":[\"\\u282b\\u2838\\u2809\\u2838\\u282b\\u2820\\u2828\",embellishCombiner],comma:[\"\\u2820\",postfixCombiner],squared:[\"\\u282b\\u2832\\u2838\\u282b\",embellishCombiner],\"negative-squared\":[\"\\u282b\\u2838\\u2832\\u2838\\u282b\",embellishCombiner]},ROLE:{addition:\"addition\",multiplication:\"multiplication\",subtraction:\"subtraction\",division:\"division\",equality:\"equality\",inequality:\"inequality\",\nelement:\"element\",arrow:\"arrow\",determinant:\"determinant\",rowvector:\"row vector\",binomial:\"binomial\",squarematrix:\"square matrix\",multiline:\"multiple lines\",matrix:\"matrix\",vector:\"vector\",cases:\"case statement\",table:\"table\",unknown:\"unknown\"},ENCLOSE:{longdiv:\"long division\",actuarial:\"actuarial symbol\",radical:\"square root\",box:\"box\",roundedbox:\"rounded box\",circle:\"circle\",left:\"left vertical-line\",right:\"right vertical-line\",top:\"overbar\",bottom:\"underbar\",updiagonalstrike:\"crossout\",downdiagonalstrike:\"crossout\",\nverticalstrike:\"vertical strikeout\",horizontalstrike:\"crossout\",madruwb:\"Arabic factorial symbol\",updiagonalarrow:\"diagonal arrow\",phasorangle:\"phasor angle\",unknown:\"long division\"},REGEXP:{TEXT:\"a-zA-Z\",NUMBER:\"((\\\\d{1,3})(?=(,| ))((,| )\\\\d{3})*(\\\\.\\\\d+)?)|^\\\\d*\\\\.\\\\d+|^\\\\d+\",DECIMAL_MARK:\".\",DIGIT_GROUP:\",\",JOINER_SUBSUPER:\"\",JOINER_FRAC:\"\"},NAVIGATE:{COLLAPSIBLE:\"collapsible\",EXPANDABLE:\"expandable\",LEVEL:\"Level\"},NUMBERS:sre.Numbers.nemeth.NUMBERS,ALPHABETS:{latinSmall:\"\\u2801\\u2803\\u2809\\u2819\\u2811\\u280b\\u281b\\u2813\\u280a\\u281a\\u2805\\u2807\\u280d\\u281d\\u2815\\u280f\\u281f\\u2817\\u280e\\u281e\\u2825\\u2827\\u283a\\u282d\\u283d\\u2835\".split(\"\"),\nlatinCap:\"\\u2820\\u2801 \\u2820\\u2803 \\u2820\\u2809 \\u2820\\u2819 \\u2820\\u2811 \\u2820\\u280b \\u2820\\u281b \\u2820\\u2813 \\u2820\\u280a \\u2820\\u281a \\u2820\\u2805 \\u2820\\u2807 \\u2820\\u280d \\u2820\\u281d \\u2820\\u2815 \\u2820\\u280f \\u2820\\u281f \\u2820\\u2817 \\u2820\\u280e \\u2820\\u281e \\u2820\\u2825 \\u2820\\u2827 \\u2820\\u283a \\u2820\\u282d \\u2820\\u283d \\u2820\\u2835\".split(\" \"),greekSmall:\"\\u2828\\u282b \\u2828\\u2801 \\u2828\\u2803 \\u2828\\u281b \\u2828\\u2819 \\u2828\\u2811 \\u2828\\u2831 \\u2828\\u2826 \\u2828\\u2839 \\u2828\\u280a \\u2828\\u2805 \\u2828\\u2807 \\u2828\\u280d \\u2828\\u281d \\u2828\\u282d \\u2828\\u2815 \\u2828\\u280f \\u2828\\u2817 \\u2828\\u2812 \\u2828\\u280e \\u2828\\u281e \\u2828\\u2825 \\u2828\\u280b \\u2828\\u282f \\u2828\\u2813 \\u2828\\u2815 \\u2808\\u2819 \\u2828\\u2811 \\u2828\\u2839 \\u2828\\u2805 \\u2828\\u280b \\u2828\\u2817 \\u2828\\u280f\".split(\" \"),\ngreekCap:\"\\u2828\\u2820\\u2801 \\u2828\\u2820\\u2803 \\u2828\\u2820\\u281b \\u2828\\u2820\\u2819 \\u2828\\u2820\\u2811 \\u2828\\u2820\\u2831 \\u2828\\u2820\\u2823 \\u2828\\u2820\\u2839 \\u2828\\u2820\\u280a \\u2828\\u2820\\u2805 \\u2828\\u2820\\u2807 \\u2828\\u2820\\u280d \\u2828\\u2820\\u281d \\u2828\\u2820\\u282d \\u2828\\u2820\\u2815 \\u2828\\u2820\\u280f \\u2828\\u2820\\u2817 \\u2828\\u2820\\u2839 \\u2828\\u2820\\u280e \\u2828\\u2820\\u2825 \\u2828\\u2820\\u2825 \\u2828\\u2820\\u280b \\u2828\\u2820\\u282f \\u2828\\u2820\\u282b \\u2828\\u2820\\u283a\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:sre.Numbers.nemeth.numberToWords},\nletter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\\u283c\"}},ALPHABET_COMBINER:function(a,b,c){return b?b+a:a}};sre.L10n={};sre.L10n.setLocale=function(){var a=sre.L10n.getLocale();if(a)for(var b in a)sre.Messages[b]=a[b]};sre.L10n.getLocale=function(){var a=sre.Engine.getInstance().locale;-1===sre.Variables.LOCALES.indexOf(a)&&(console.error(\"Locale \"+a+\" does not exist! Using en instead.\"),sre.Engine.getInstance().locale=\"en\");return sre.Locale[sre.Engine.getInstance().locale]||sre.Locale.en};sre.EnrichCase=function(){};sre.EnrichCase.prototype.getMathml=function(){};sre.AbstractEnrichCase=function(a){this.semantic=a};sre.AbstractEnrichCase.prototype.getMathml=goog.abstractMethod;sre.EnrichCaseFactory=function(){};sre.EnrichCaseFactory.cases=[];sre.EnrichCaseFactory.getCase=function(a){for(var b=0,c;c=sre.EnrichCaseFactory.cases[b];b++)if(c.test(a))return new c.constr(a);return null};sre.SemanticSkeleton=function(a){this.array=a=0===a?a:a||[];this.levelsMap=this.parents=null};sre.SemanticSkeleton.prototype.populate=function(){this.parents&&this.levelsMap||(this.parents={},this.levelsMap={},this.populate_(this.array,this.array,[]))};\nsre.SemanticSkeleton.prototype.populate_=function(a,b,c){if(sre.SemanticSkeleton.simpleCollapseStructure(a))this.levelsMap[a]=b,this.parents[a]=a===c[0]?c.slice(1):c;else{b=sre.SemanticSkeleton.contentCollapseStructure(a)?a.slice(1):a;c=[b[0]].concat(c);for(var d=0,e=b.length;d<e;d++)this.populate_(b[d],a,c)}};sre.SemanticSkeleton.prototype.toString=function(){return sre.SemanticSkeleton.makeSexp_(this.array)};\nsre.SemanticSkeleton.makeSexp_=function(a){return sre.SemanticSkeleton.simpleCollapseStructure(a)?a.toString():sre.SemanticSkeleton.contentCollapseStructure(a)?\"(c \"+a.slice(1).map(sre.SemanticSkeleton.makeSexp_).join(\" \")+\")\":\"(\"+a.map(sre.SemanticSkeleton.makeSexp_).join(\" \")+\")\"};sre.SemanticSkeleton.fromTree=function(a){return sre.SemanticSkeleton.fromNode(a.root)};sre.SemanticSkeleton.fromNode=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromNode_(a))};\nsre.SemanticSkeleton.fromString=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromString_(a))};sre.SemanticSkeleton.fromString_=function(a){a=a.replace(/\\(/g,\"[\");a=a.replace(/\\)/g,\"]\");a=a.replace(/ /g,\",\");a=a.replace(/c/g,'\"c\"');return JSON.parse(a)};\nsre.SemanticSkeleton.fromNode_=function(a){if(!a)return[];var b=a.contentNodes;if(b.length){var c=b.map(sre.SemanticSkeleton.fromNode_);c.unshift(\"c\")}var d=a.childNodes;if(!d.length)return b.length?[a.id,c]:a.id;d=d.map(sre.SemanticSkeleton.fromNode_);b.length&&d.unshift(c);d.unshift(a.id);return d};sre.SemanticSkeleton.simpleCollapseStructure=function(a){return\"number\"===typeof a};\nsre.SemanticSkeleton.contentCollapseStructure=function(a){return!!a&&!sre.SemanticSkeleton.simpleCollapseStructure(a)&&\"c\"===a[0]};sre.SemanticSkeleton.interleaveIds=function(a,b){return sre.BaseUtil.interleaveLists(sre.SemanticSkeleton.collapsedLeafs(a),sre.SemanticSkeleton.collapsedLeafs(b))};\nsre.SemanticSkeleton.collapsedLeafs=function(a){var b=function(c){return sre.SemanticSkeleton.simpleCollapseStructure(c)?[c]:sre.SemanticSkeleton.contentCollapseStructure(c[1])?c.slice(2):c.slice(1)};return Array.prototype.slice.call(arguments,0).reduce(function(c,d){return c.concat(b(d))},[])};sre.SemanticSkeleton.fromStructure=function(a,b){return new sre.SemanticSkeleton(sre.SemanticSkeleton.tree_(a,b.root))};\nsre.SemanticSkeleton.tree_=function(a,b){if(!b)return[];if(!b.childNodes.length)return b.id;var c=b.id,d=[c];c=sre.XpathUtil.evalXPath(\".//self::*[@\"+sre.EnrichMathml.Attribute.ID+\"=\"+c+\"]\",a)[0];b=sre.SemanticSkeleton.combineContentChildren(b,b.contentNodes.map(function(f){return f}),b.childNodes.map(function(f){return f}));c&&c.setAttribute(sre.EnrichMathml.Attribute.OWNS,b.map(function(f){return f.id}).join(\" \"));c=0;for(var e;e=b[c];c++)d.push(sre.SemanticSkeleton.tree_(a,e));return d};\nsre.SemanticSkeleton.combineContentChildren=function(a,b,c){switch(a.type){case sre.Semantic.Type.RELSEQ:case sre.Semantic.Type.INFIXOP:case sre.Semantic.Type.MULTIREL:return sre.BaseUtil.interleaveLists(c,b);case sre.Semantic.Type.PREFIXOP:return b.concat(c);case sre.Semantic.Type.POSTFIXOP:return c.concat(b);case sre.Semantic.Type.FENCED:return c.unshift(b[0]),c.push(b[1]),c;case sre.Semantic.Type.APPL:return[c[0],b[0],c[1]];case sre.Semantic.Type.ROOT:return[c[1],c[0]];case sre.Semantic.Type.ROW:case sre.Semantic.Type.LINE:return b.length&&\nc.unshift(b[0]),c;default:return c}};sre.EnrichMathml={};sre.EnrichMathml.Error=function(a){Error.call(this);this.message=a||\"\";this.name=\"MathML Enrichment Error\"};goog.inherits(sre.EnrichMathml.Error,Error);sre.EnrichMathml.SETTINGS={collapsed:!0,implicit:!0};sre.EnrichMathml.ATTRIBUTE_PREFIX_=\"data-semantic-\";\nsre.EnrichMathml.Attribute={ADDED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"added\",ALTERNATIVE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"alternative\",CHILDREN:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"children\",COLLAPSED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"collapsed\",CONTENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"content\",EMBELLISHED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"embellished\",FENCEPOINTER:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"fencepointer\",FONT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"font\",ID:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\n\"id\",ANNOTATION:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"annotation\",OPERATOR:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"operator\",OWNS:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"owns\",PARENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"parent\",PREFIX:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"prefix\",ROLE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"role\",SPEECH:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"speech\",STRUCTURE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"structure\",TYPE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"type\"};\nsre.EnrichMathml.enrich=function(a,b){var c=a.cloneNode(!0);sre.EnrichMathml.walkTree(b.root);sre.Engine.getInstance().structure&&a.setAttribute(sre.EnrichMathml.Attribute.STRUCTURE,sre.SemanticSkeleton.fromStructure(a,b).toString());sre.Debugger.getInstance().generateOutput(function(){sre.EnrichMathml.formattedOutput(c,a,b,!0);return[]});return a};\nsre.EnrichMathml.walkTree=function(a){var b=sre.EnrichCaseFactory.getCase(a);if(b)return b=b.getMathml(),sre.EnrichMathml.ascendNewNode(b);if(1===a.mathml.length)return sre.Debugger.getInstance().output(\"Walktree Case 0\"),b=a.mathml[0],sre.EnrichMathml.setAttributes(b,a),sre.EnrichMathml.ascendNewNode(b);b=a.contentNodes.map(sre.EnrichMathml.cloneContentNode);sre.EnrichMathml.setOperatorAttribute_(a,b);var c=a.childNodes.map(sre.EnrichMathml.walkTree);c=sre.SemanticSkeleton.combineContentChildren(a,\nb,c);b=a.mathmlTree;if(null===b)sre.Debugger.getInstance().output(\"Walktree Case 1\"),b=sre.EnrichMathml.introduceNewLayer(c);else{var d=sre.EnrichMathml.attachedElement_(c);sre.Debugger.getInstance().output(\"Walktree Case 2\");d?(sre.Debugger.getInstance().output(\"Walktree Case 2.1\"),b=d.parentNode):(sre.Debugger.getInstance().output(\"Walktree Case 2.2\"),b=sre.EnrichMathml.getInnerNode(b))}b=sre.EnrichMathml.rewriteMfenced(b);sre.EnrichMathml.mergeChildren_(b,c);sre.EnrichMathml.setAttributes(b,a);\nreturn sre.EnrichMathml.ascendNewNode(b)};\nsre.EnrichMathml.introduceNewLayer=function(a){var b=sre.EnrichMathml.mathmlLca_(a),c=b.node,d=b.type;d===sre.EnrichMathml.lcaType.VALID&&sre.SemanticUtil.hasEmptyTag(c)||(sre.Debugger.getInstance().output(\"Walktree Case 1.1\"),c=sre.DomUtil.createElement(\"mrow\"),d===sre.EnrichMathml.lcaType.PRUNED?(sre.Debugger.getInstance().output(\"Walktree Case 1.1.0\"),c=sre.EnrichMathml.introduceLayerAboveLca(c,b.node,a)):a[0]&&(sre.Debugger.getInstance().output(\"Walktree Case 1.1.1\"),b=sre.EnrichMathml.attachedElement_(a),\na=sre.EnrichMathml.childrenSubset_(b.parentNode,a),sre.DomUtil.replaceNode(b,c),a.forEach(function(e){c.appendChild(e)})));return c};\nsre.EnrichMathml.introduceLayerAboveLca=function(a,b,c){var d=sre.EnrichMathml.descendNode_(b);if(sre.SemanticUtil.hasMathTag(d)){sre.Debugger.getInstance().output(\"Walktree Case 1.1.0.0\");sre.EnrichMathml.moveSemanticAttributes_(d,a);sre.DomUtil.toArray(d.childNodes).forEach(function(f){a.appendChild(f)});var e=a;a=d;d=e}b=c.indexOf(b);c[b]=d;sre.DomUtil.replaceNode(d,a);a.appendChild(d);c.forEach(function(f){a.appendChild(f)});return a};\nsre.EnrichMathml.moveSemanticAttributes_=function(a,b){for(var c in sre.EnrichMathml.Attribute){var d=sre.EnrichMathml.Attribute[c];a.hasAttribute(d)&&(b.setAttribute(d,a.getAttribute(d)),a.removeAttribute(d))}};sre.EnrichMathml.childrenSubset_=function(a,b){var c=sre.DomUtil.toArray(a.childNodes),d=Infinity,e=-Infinity;b.forEach(function(f){f=c.indexOf(f);-1!==f&&(d=Math.min(d,f),e=Math.max(e,f))});return c.slice(d,e+1)};\nsre.EnrichMathml.mergeChildren_=function(a,b){var c=a.childNodes;if(c.length)for(var d=0;b.length;)c[d]===b[0]||sre.EnrichMathml.functionApplication_(c[d],b[0])?(b.shift(),d++):c[d]&&-1===b.indexOf(c[d])?d++:(sre.EnrichMathml.isDescendant_(b[0],a)||a.insertBefore(b[0],c[d]||null),b.shift());else b.forEach(function(e){a.appendChild(e)})};sre.EnrichMathml.isDescendant_=function(a,b){if(!a)return!1;do if(a=a.parentNode,a===b)return!0;while(a);return!1};\nsre.EnrichMathml.functionApplication_=function(a,b){var c=sre.SemanticAttr.functionApplication();if(a&&b&&a.textContent&&b.textContent&&a.textContent===c&&b.textContent===c&&\"true\"===b.getAttribute(sre.EnrichMathml.Attribute.ADDED)){c=0;for(var d;d=a.attributes[c];c++)b.hasAttribute(d.nodeName)||b.setAttribute(d.nodeName,d.nodeValue);sre.DomUtil.replaceNode(a,b);return!0}return!1};sre.EnrichMathml.lcaType={VALID:\"valid\",INVALID:\"invalid\",PRUNED:\"pruned\"};\nsre.EnrichMathml.mathmlLca_=function(a){var b=sre.EnrichMathml.attachedElement_(a);if(!b)return{type:sre.EnrichMathml.lcaType.INVALID,node:null};var c=sre.EnrichMathml.attachedElement_(a.slice().reverse());if(b===c)return{type:sre.EnrichMathml.lcaType.VALID,node:b};b=sre.EnrichMathml.pathToRoot_(b);var d=sre.EnrichMathml.prunePath_(b,a);a=sre.EnrichMathml.pathToRoot_(c,function(f){return-1!==d.indexOf(f)});c=a[0];var e=d.indexOf(c);return-1===e?{type:sre.EnrichMathml.lcaType.INVALID,node:null}:{type:d.length!==\nb.length?sre.EnrichMathml.lcaType.PRUNED:sre.EnrichMathml.validLca_(d[e+1],a[1])?sre.EnrichMathml.lcaType.VALID:sre.EnrichMathml.lcaType.INVALID,node:c}};sre.EnrichMathml.prunePath_=function(a,b){for(var c=0;a[c]&&-1===b.indexOf(a[c]);)c++;return a.slice(0,c+1)};sre.EnrichMathml.attachedElement_=function(a){for(var b=0,c=null;!c&&b<a.length;)a[b].parentNode&&(c=a[b]),b++;return c};\nsre.EnrichMathml.pathToRoot_=function(a,b){b=b||function(d){return!1};for(var c=[a];!b(a)&&!sre.SemanticUtil.hasMathTag(a)&&a.parentNode;)a=sre.EnrichMathml.parentNode_(a),c.unshift(a);return c};sre.EnrichMathml.validLca_=function(a,b){return!(!a||!b||a.previousSibling||b.nextSibling)};sre.EnrichMathml.ascendNewNode=function(a){for(;!sre.SemanticUtil.hasMathTag(a)&&sre.EnrichMathml.unitChild_(a);)a=sre.EnrichMathml.parentNode_(a);return a};\nsre.EnrichMathml.descendNode_=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(c){return c.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.SemanticUtil.hasIgnoreTag(c)});return 1===b.length&&sre.SemanticUtil.hasEmptyTag(b[0])&&!b[0].hasAttribute(sre.EnrichMathml.Attribute.TYPE)?sre.EnrichMathml.descendNode_(b[0]):a};\nsre.EnrichMathml.unitChild_=function(a){var b=sre.EnrichMathml.parentNode_(a);return b&&sre.SemanticUtil.hasEmptyTag(b)?sre.DomUtil.toArray(b.childNodes).every(function(c){return c===a||sre.EnrichMathml.isIgnorable_(c)}):!1};sre.EnrichMathml.isIgnorable_=function(a){if(!a||sre.SemanticUtil.hasIgnoreTag(a))return!0;var b=sre.DomUtil.toArray(a.childNodes);return!sre.SemanticUtil.hasEmptyTag(a)&&b.length?!1:sre.DomUtil.toArray(a.childNodes).every(sre.EnrichMathml.isIgnorable_)};\nsre.EnrichMathml.parentNode_=function(a){return a.parentNode};sre.EnrichMathml.addCollapsedAttribute=function(a,b){b=new sre.SemanticSkeleton(b);a.setAttribute(sre.EnrichMathml.Attribute.COLLAPSED,b.toString())};sre.EnrichMathml.cloneContentNode=function(a){if(a.mathml.length)return sre.EnrichMathml.walkTree(a);var b=sre.EnrichMathml.SETTINGS.implicit?sre.EnrichMathml.createInvisibleOperator_(a):sre.DomUtil.createElement(\"mrow\");a.mathml=[b];return b};sre.EnrichMathml.makeIdList=function(a){return a.map(function(b){return b.id}).join(\",\")};\nsre.EnrichMathml.setAttributes=function(a,b){a.setAttribute(sre.EnrichMathml.Attribute.TYPE,b.type);for(var c=b.allAttributes(),d=0,e;e=c[d];d++)a.setAttribute(sre.EnrichMathml.Attribute[e[0].toUpperCase()],e[1]);b.childNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList(b.childNodes));b.contentNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CONTENT,sre.EnrichMathml.makeIdList(b.contentNodes));b.parent&&a.setAttribute(sre.EnrichMathml.Attribute.PARENT,\nb.parent.id)};sre.EnrichMathml.rewriteMfenced=function(a){if(\"MFENCED\"!==sre.DomUtil.tagName(a))return a;for(var b=sre.DomUtil.createElement(\"mrow\"),c=0,d;d=a.attributes[c];c++)-1===[\"open\",\"close\",\"separators\"].indexOf(d.name)&&b.setAttribute(d.name,d.value);sre.DomUtil.toArray(a.childNodes).forEach(function(e){b.appendChild(e)});sre.DomUtil.replaceNode(a,b);return b};\nsre.EnrichMathml.createInvisibleOperator_=function(a){var b=sre.DomUtil.createElement(\"mo\"),c=sre.DomUtil.createTextNode(a.textContent);b.appendChild(c);sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");return b};sre.EnrichMathml.setOperatorAttribute_=function(a,b){var c=a.type+(a.textContent?\",\"+a.textContent:\"\");b.forEach(function(d){sre.EnrichMathml.getInnerNode(d).setAttribute(sre.EnrichMathml.Attribute.OPERATOR,c)})};\nsre.EnrichMathml.getInnerNode=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(g){return g.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.EnrichMathml.isIgnorable_(g)});for(var c=[],d=0,e;e=b[d];d++)if(sre.SemanticUtil.hasEmptyTag(e)){var f=sre.EnrichMathml.getInnerNode(e);f&&f!==e&&c.push(f)}else c.push(e);return 1===c.length?c[0]:a};\nsre.EnrichMathml.formattedOutput=function(a,b,c,d){d=d||!1;sre.EnrichMathml.formattedOutput_(a,\"Original MathML\",d);sre.EnrichMathml.formattedOutput_(c,\"Semantic Tree\",d);sre.EnrichMathml.formattedOutput_(b,\"Semantically enriched MathML\",d)};sre.EnrichMathml.formattedOutput_=function(a,b,c){a=sre.DomUtil.formatXml(a.toString());c?console.info(b+\":\\n```html\\n\"+sre.EnrichMathml.removeAttributePrefix(a)+\"\\n```\\n\"):console.info(a)};\nsre.EnrichMathml.removeAttributePrefix=function(a){return a.toString().replace(new RegExp(sre.EnrichMathml.ATTRIBUTE_PREFIX_,\"g\"),\"\")};sre.EnrichMathml.addPrefix=function(a){var b=a.toUpperCase();return sre.EnrichMathml.Attribute[b]||sre.EnrichMathml.ATTRIBUTE_PREFIX_+a};\nsre.EnrichMathml.collapsePunctuated=function(a,b){var c=!!b;b=b||[];var d=a.parent,e=a.contentNodes.map(function(k){return k.id});e.unshift(\"c\");e=[a.id,e];for(var f=0,g;g=a.childNodes[f];f++){var h=sre.EnrichMathml.walkTree(g);b.push(h);h=sre.EnrichMathml.getInnerNode(h);d&&!c&&h.setAttribute(sre.EnrichMathml.Attribute.PARENT,d.id);e.push(g.id)}return e};sre.EnrichMathml.printNodeList__=function(a,b){console.info(a);sre.DomUtil.toArray(b).forEach(function(c){console.info(c.toString())});console.info(\"<<<<<<<<<<<<<<<<<\")};sre.CaseBinomial=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseBinomial,sre.AbstractEnrichCase);sre.CaseBinomial.test=function(a){return!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE&&a.role===sre.SemanticAttr.Role.BINOMIAL};\nsre.CaseBinomial.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.mml=sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);if(this.mml.hasAttribute(sre.EnrichMathml.Attribute.TYPE)){var a=sre.DomUtil.createElement(\"mrow\");a.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");sre.DomUtil.replaceNode(this.mml,a);a.appendChild(this.mml);this.mml=a}sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseDoubleScript=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseDoubleScript,sre.AbstractEnrichCase);sre.CaseDoubleScript.test=function(a){if(!a.mathmlTree||!a.childNodes.length)return!1;var b=sre.DomUtil.tagName(a.mathmlTree);a=a.childNodes[0].role;return\"MSUBSUP\"===b&&a===sre.SemanticAttr.Role.SUBSUP||\"MUNDEROVER\"===b&&a===sre.SemanticAttr.Role.UNDEROVER};\nsre.CaseDoubleScript.prototype.getMathml=function(){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=this.semantic.childNodes[1],d=a.childNodes[1],e=sre.EnrichMathml.walkTree(c),f=sre.EnrichMathml.walkTree(b),g=sre.EnrichMathml.walkTree(d);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList([b,d,c]));[f,g,e].forEach(goog.bind(function(h){sre.EnrichMathml.getInnerNode(h).setAttribute(sre.EnrichMathml.Attribute.PARENT,\nthis.mml.getAttribute(sre.EnrichMathml.Attribute.ID))},this));this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,a.role);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,[a.id,b.id,d.id],c.id]);return this.mml};sre.CaseMultiindex=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseMultiindex,sre.AbstractEnrichCase);\nsre.CaseMultiindex.prototype.completeMultiscript=function(a,b){var c=sre.DomUtil.toArray(this.mml.childNodes).slice(1),d=0,e=goog.bind(function(f){for(var g=0,h;h=f[g];g++){var k=c[d];if(k&&h==sre.EnrichMathml.getInnerNode(k).getAttribute(sre.EnrichMathml.Attribute.ID))sre.EnrichMathml.getInnerNode(k).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id),d++;else{var l=this.semantic.querySelectorAll(function(m){return m.id===h});this.mml.insertBefore(sre.CaseMultiindex.createNone_(l[0]),\nk||null)}}},this);e(a);c[d]&&\"MPRESCRIPTS\"!==sre.DomUtil.tagName(c[d])?this.mml.insertBefore(c[d],sre.DomUtil.createElement(\"mprescripts\")):d++;e(b)};sre.CaseMultiindex.createNone_=function(a){var b=sre.DomUtil.createElement(\"none\");a&&sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");return b};\nsre.CaseMultiindex.multiscriptIndex=function(a){if(a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.contentNodes[0].role===sre.SemanticAttr.Role.DUMMY)return sre.EnrichMathml.collapsePunctuated(a);sre.EnrichMathml.walkTree(a);return a.id};sre.CaseMultiscripts=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseMultiscripts,sre.CaseMultiindex);sre.CaseMultiscripts.test=function(a){return a.mathmlTree?\"MMULTISCRIPTS\"===sre.DomUtil.tagName(a.mathmlTree)&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT):!1};\nsre.CaseMultiscripts.prototype.getMathml=function(){sre.EnrichMathml.setAttributes(this.mml,this.semantic);if(this.semantic.childNodes[0]&&this.semantic.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),d=sre.CaseMultiindex.multiscriptIndex(a.childNodes[1]),e=[this.semantic.id,[a.id,b.id,d],c];sre.EnrichMathml.addCollapsedAttribute(this.mml,e);this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,\na.role);this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(d,c),[])}else b=this.semantic.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),e=[this.semantic.id,b.id,c],sre.EnrichMathml.addCollapsedAttribute(this.mml,e);a=sre.SemanticSkeleton.collapsedLeafs(d||[],c);c=sre.EnrichMathml.walkTree(b);sre.EnrichMathml.getInnerNode(c).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id);a.unshift(b.id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,\na.join(\",\"));return this.mml};sre.CaseEmbellished=function(a){sre.AbstractEnrichCase.call(this,a);this.ofenceMml=this.ofence=this.fencedMml=this.fenced=null;this.ofenceMap={};this.cfenceMml=this.cfence=null;this.cfenceMap={};this.parentCleanup=[]};goog.inherits(sre.CaseEmbellished,sre.AbstractEnrichCase);sre.CaseEmbellished.test=function(a){return!(!a.mathmlTree||!a.fencePointer)};sre.CaseEmbellished.prototype.getMathml=function(){this.getFenced_();this.fencedMml=sre.EnrichMathml.walkTree(this.fenced);this.getFencesMml_();return this.rewrite_()};\nsre.CaseEmbellished.prototype.getFenced_=function(){for(var a=this.semantic;a.type!==sre.SemanticAttr.Type.FENCED;)a=a.childNodes[0];this.fenced=a.childNodes[0];this.ofence=a.contentNodes[0];this.cfence=a.contentNodes[1];sre.CaseEmbellished.fencedMap_(this.ofence,this.ofenceMap);sre.CaseEmbellished.fencedMap_(this.cfence,this.cfenceMap)};sre.CaseEmbellished.fencedMap_=function(a,b){b[a.id]=a.mathmlTree;a.embellished&&sre.CaseEmbellished.fencedMap_(a.childNodes[0],b)};\nsre.CaseEmbellished.prototype.getFencesMml_=function(){for(var a=this.semantic,b=Object.keys(this.ofenceMap),c=Object.keys(this.cfenceMap);!(this.ofenceMml&&this.cfenceMml||a===this.fenced);)-1===b.indexOf(a.fencePointer)||this.ofenceMml||(this.ofenceMml=a.mathmlTree),-1===c.indexOf(a.fencePointer)||this.cfenceMml||(this.cfenceMml=a.mathmlTree),a=a.childNodes[0];this.ofenceMml||(this.ofenceMml=this.ofence.mathmlTree);this.cfenceMml||(this.cfenceMml=this.cfence.mathmlTree);this.ofenceMml&&(this.ofenceMml=\nsre.EnrichMathml.ascendNewNode(this.ofenceMml));this.cfenceMml&&(this.cfenceMml=sre.EnrichMathml.ascendNewNode(this.cfenceMml))};\nsre.CaseEmbellished.prototype.rewrite_=function(){var a=this.semantic,b=null,c=this.introduceNewLayer_();for(sre.EnrichMathml.setAttributes(c,this.fenced.parent);a.type!==sre.SemanticAttr.Type.FENCED;){var d=a.mathmlTree,e=this.specialCase_(a,d);if(e)a=e;else{sre.EnrichMathml.setAttributes(d,a);e=[];for(var f=1,g;g=a.childNodes[f];f++)e.push(sre.EnrichMathml.walkTree(g));a=a.childNodes[0]}e=sre.DomUtil.createElement(\"dummy\");f=c.parentNode;g=d.childNodes[0];sre.DomUtil.replaceNode(d,e);sre.DomUtil.replaceNode(c,\nd);sre.DomUtil.replaceNode(d.childNodes[0],c);sre.DomUtil.replaceNode(e,g);d.parentNode=f;c=d.childNodes[0];b||(b=d)}sre.EnrichMathml.walkTree(this.ofence);sre.EnrichMathml.walkTree(this.cfence);this.cleanupParents_();return b||c};\nsre.CaseEmbellished.prototype.specialCase_=function(a,b){var c=sre.DomUtil.tagName(b),d=null;if(\"MSUBSUP\"===c){d=a.childNodes[0];var e=sre.CaseDoubleScript}else\"MMULTISCRIPTS\"===c&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT?e=sre.CaseMultiscripts:a.type===sre.SemanticAttr.Type.TENSOR&&(e=sre.CaseTensor),d=e&&a.childNodes[0]&&a.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP?a.childNodes[0]:a);if(!d)return null;c=d.childNodes[0];b=sre.CaseEmbellished.makeEmptyNode_(c.id);\nd.childNodes[0]=b;b=(new e(a)).getMathml();d.childNodes[0]=c;this.parentCleanup.push(b);return d.childNodes[0]};sre.CaseEmbellished.makeEmptyNode_=function(a){var b=sre.DomUtil.createElement(\"mrow\");a=new sre.SemanticNode(a);a.type=sre.SemanticAttr.Type.EMPTY;a.mathmlTree=b;return a};\nsre.CaseEmbellished.prototype.introduceNewLayer_=function(){var a=this.fullFence(this.ofenceMml),b=this.fullFence(this.cfenceMml),c=sre.DomUtil.createElement(\"mrow\");sre.DomUtil.replaceNode(this.fencedMml,c);c.appendChild(this.fencedMml);c.insertBefore(a,this.fencedMml);c.appendChild(b);if(!c.parentNode){for(a=sre.DomUtil.createElement(\"mrow\");0<c.childNodes.length;)a.appendChild(c.childNodes[0]);c.appendChild(a);c=a}return c};\nsre.CaseEmbellished.prototype.fullFence=function(a){for(var b=this.fencedMml.parentNode;a.parentNode&&a.parentNode!==b;)a=a.parentNode;return a};sre.CaseEmbellished.prototype.cleanupParents_=function(){this.parentCleanup.forEach(function(a){var b=a.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.PARENT);a.childNodes[0].setAttribute(sre.EnrichMathml.Attribute.PARENT,b)})};sre.CaseLine=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseLine,sre.AbstractEnrichCase);sre.CaseLine.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE};\nsre.CaseLine.prototype.getMathml=function(){this.semantic.contentNodes.length&&sre.EnrichMathml.walkTree(this.semantic.contentNodes[0]);this.semantic.childNodes.length&&sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseProof=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseProof,sre.AbstractEnrichCase);sre.CaseProof.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.INFERENCE||a.type===sre.SemanticAttr.Type.PREMISES)};\nsre.CaseProof.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.semantic.contentNodes.forEach(function(a){sre.EnrichMathml.walkTree(a);sre.EnrichMathml.setAttributes(a.mathmlTree,a)});this.semantic.childNodes.forEach(function(a){sre.EnrichMathml.walkTree(a)});sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.getAttribute(\"data-semantic-id\")===this.mml.getAttribute(\"data-semantic-parent\")&&this.mml.removeAttribute(\"data-semantic-parent\");return this.mml};sre.CaseTable=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree;this.inner=[]};goog.inherits(sre.CaseTable,sre.AbstractEnrichCase);sre.CaseTable.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.MATRIX||a.type===sre.SemanticAttr.Type.VECTOR||a.type===sre.SemanticAttr.Type.CASES)};\nsre.CaseTable.prototype.getMathml=function(){var a=sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[0]),b=this.semantic.contentNodes[1]?sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[1]):null;this.inner=this.semantic.childNodes.map(sre.EnrichMathml.walkTree);\"MFENCED\"===sre.DomUtil.tagName(this.mml)?(this.mml.insertBefore(a,this.mml.childNodes[0]||null),b&&this.mml.appendChild(b),this.mml=sre.EnrichMathml.rewriteMfenced(this.mml)):(a=[a,this.mml],b&&a.push(b),this.mml=sre.EnrichMathml.introduceNewLayer(a));\nsre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseTensor=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseTensor,sre.CaseMultiindex);sre.CaseTensor.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.TENSOR};\nsre.CaseTensor.prototype.getMathml=function(){sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);var a=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),b=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[2]),c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[3]),d=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[4]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,this.semantic.childNodes[0].id,\na,b,c,d]);var e=sre.SemanticSkeleton.collapsedLeafs(a,b,c,d);e.unshift(this.semantic.childNodes[0].id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,e.join(\",\"));this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(c,d),sre.SemanticSkeleton.interleaveIds(a,b));return this.mml};sre.CaseText=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseText,sre.AbstractEnrichCase);sre.CaseText.test=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&(a.role===sre.SemanticAttr.Role.TEXT||a.contentNodes.every(function(b){return b.role===sre.SemanticAttr.Role.DUMMY}))};\nsre.CaseText.prototype.getMathml=function(){var a=[],b=sre.EnrichMathml.collapsePunctuated(this.semantic,a);this.mml=sre.EnrichMathml.introduceNewLayer(a);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.removeAttribute(sre.EnrichMathml.Attribute.CONTENT);sre.EnrichMathml.addCollapsedAttribute(this.mml,b);return this.mml};sre.EnrichCases=function(){};\nsre.EnrichCaseFactory.cases.push({test:sre.CaseEmbellished.test,constr:sre.CaseEmbellished},{test:sre.CaseDoubleScript.test,constr:sre.CaseDoubleScript},{test:sre.CaseTensor.test,constr:sre.CaseTensor},{test:sre.CaseMultiscripts.test,constr:sre.CaseMultiscripts},{test:sre.CaseLine.test,constr:sre.CaseLine},{test:sre.CaseBinomial.test,constr:sre.CaseBinomial},{test:sre.CaseProof.test,constr:sre.CaseProof},{test:sre.CaseTable.test,constr:sre.CaseTable},{test:sre.CaseText.test,constr:sre.CaseText});sre.Enrich={};sre.Enrich.semanticMathmlNode=function(a){a=a.cloneNode(!0);var b=sre.Semantic.getTree(a);return sre.EnrichMathml.enrich(a,b)};sre.Enrich.semanticMathmlSync=function(a){a=sre.DomUtil.parseInput(a);return sre.Enrich.semanticMathmlNode(a)};sre.Enrich.semanticMathml=function(a,b){if(sre.Engine.isReady()){var c=sre.DomUtil.parseInput(a);b(sre.Enrich.semanticMathmlNode(c))}else setTimeout(function(){sre.Enrich.semanticMathml(a,b)},500)};\nsre.Enrich.testTranslation__=function(a){new sre.EnrichCases;sre.Debugger.getInstance().init();a=sre.Enrich.semanticMathmlSync(sre.Enrich.prepareMmlString(a)).toString();sre.EnrichMathml.removeAttributePrefix(a);sre.Debugger.getInstance().exit();return a};sre.Enrich.prepareMmlString=function(a){a.match(/^<math/)||(a=\"<math>\"+a);a.match(/\\/math>$/)||(a+=\"</math>\");return a};sre.ColorPicker=function(a,b){this.foreground=sre.ColorPicker.getChannelColor_(b,sre.ColorPicker.DEFAULT_FOREGROUND_);this.background=sre.ColorPicker.getChannelColor_(a,sre.ColorPicker.DEFAULT_BACKGROUND_)};sre.ColorPicker.DEFAULT_BACKGROUND_=\"blue\";sre.ColorPicker.DEFAULT_FOREGROUND_=\"black\";\nsre.ColorPicker.namedColors_={red:{red:255,green:0,blue:0},green:{red:0,green:255,blue:0},blue:{red:0,green:0,blue:255},yellow:{red:255,green:255,blue:0},cyan:{red:0,green:255,blue:255},magenta:{red:255,green:0,blue:255},white:{red:255,green:255,blue:255},black:{red:0,green:0,blue:0}};sre.ColorPicker.getChannelColor_=function(a,b){a=a||{color:b};var c=a.color?sre.ColorPicker.namedColors_[a.color]:a;c||(c=sre.ColorPicker.namedColors_[b]);c.alpha=a.hasOwnProperty(\"alpha\")?a.alpha:1;return sre.ColorPicker.normalizeColor_(c)};\nsre.ColorPicker.normalizeColor_=function(a){var b=function(c){c=Math.max(c,0);c=Math.min(255,c);return Math.round(c)};a.red=b(a.red);a.green=b(a.green);a.blue=b(a.blue);a.alpha=Math.max(a.alpha,0);a.alpha=Math.min(1,a.alpha);return a};sre.ColorPicker.prototype.rgba=function(){var a=function(b){return\"rgba(\"+b.red+\",\"+b.green+\",\"+b.blue+\",\"+b.alpha+\")\"};return{background:a(this.background),foreground:a(this.foreground)}};\nsre.ColorPicker.prototype.rgb=function(){var a=function(b){return\"rgb(\"+b.red+\",\"+b.green+\",\"+b.blue+\")\"};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};\nsre.ColorPicker.prototype.hex=function(){var a=function(b){return\"#\"+sre.ColorPicker.toHex_(b.red)+sre.ColorPicker.toHex_(b.green)+sre.ColorPicker.toHex_(b.blue)};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};sre.ColorPicker.toHex_=function(a){a=a.toString(16);return 1===a.length?\"0\"+a:a};sre.ContrastPicker=function(){this.hue=10;this.sat=100;this.incr=this.light=50};\nsre.ContrastPicker.prototype.generate=function(){return sre.ColorPicker.RGB2hex_(sre.ColorPicker.rgb2RGB_(sre.ColorPicker.hsl2rgb_(this.hue,this.sat,this.light)))};sre.ContrastPicker.prototype.increment=function(){this.hue=(this.hue+this.incr)%360};\nsre.ColorPicker.hsl2rgb_=function(a,b,c){c=1<c?c/100:c;var d=(1-Math.abs(2*c-1))*(1<b?b/100:b),e=d*(1-Math.abs(a/60%2-1));c-=d/2;var f=b=0,g=0;0<=a&&60>a?(a=$jscomp.makeIterator([d,e,0]),b=a.next().value,f=a.next().value,g=a.next().value):60<=a&&120>a?(a=$jscomp.makeIterator([e,d,0]),b=a.next().value,f=a.next().value,g=a.next().value):120<=a&&180>a?(a=$jscomp.makeIterator([0,d,e]),b=a.next().value,f=a.next().value,g=a.next().value):180<=a&&240>a?(a=$jscomp.makeIterator([0,e,d]),b=a.next().value,f=\na.next().value,g=a.next().value):240<=a&&300>a?(a=$jscomp.makeIterator([e,0,d]),b=a.next().value,f=a.next().value,g=a.next().value):300<=a&&360>a&&(a=$jscomp.makeIterator([d,0,e]),b=a.next().value,f=a.next().value,g=a.next().value);return{red:b+c,green:f+c,blue:g+c}};sre.ColorPicker.rgb2RGB_=function(a){return{red:Math.round(255*a.red),green:Math.round(255*a.green),blue:Math.round(255*a.blue)}};sre.ColorPicker.RGB2hex_=function(a){return\"rgb(\"+a.red+\",\"+a.green+\",\"+a.blue+\")\"};sre.Highlighter=function(){};sre.Highlighter.prototype.highlight=function(a){};sre.Highlighter.prototype.unhighlight=function(){};sre.Highlighter.prototype.highlightAll=function(a){};sre.Highlighter.prototype.unhighlightAll=function(){};sre.Highlighter.prototype.setColor=function(a){};sre.Highlighter.prototype.addEvents=function(a,b){};sre.AbstractHighlighter=function(){this.currentHighlights_=[];this.color=null;this.mactionName=\"\"};sre.AbstractHighlighter.ATTR=\"sre-highlight\";sre.AbstractHighlighter.prototype.highlight=function(a){this.currentHighlights_.push(a.map(goog.bind(function(b){var c=this.highlightNode(b);this.setHighlighted(b);return c},this)))};sre.AbstractHighlighter.prototype.highlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.highlightAll=function(a){a=this.getMactionNodes(a);for(var b=0,c;c=a[b];b++)this.highlight([c])};\nsre.AbstractHighlighter.prototype.unhighlight=function(){var a=this.currentHighlights_.pop();a&&a.forEach(goog.bind(function(b){this.isHighlighted(b.node)&&(this.unhighlightNode(b),this.unsetHighlighted(b.node))},this))};sre.AbstractHighlighter.prototype.unhighlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.unhighlightAll=function(){for(;0<this.currentHighlights_.length;)this.unhighlight()};sre.AbstractHighlighter.prototype.setColor=function(a){this.color=a};\nsre.AbstractHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.AbstractHighlighter.prototype.addEvents=function(a,b){a=this.getMactionNodes(a);for(var c=0,d;d=a[c];c++)for(var e in b)d.addEventListener(e,b[e])};sre.AbstractHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByClassName(this.mactionName)};sre.AbstractHighlighter.prototype.isMactionNode=function(a){return(a=a.className||a.getAttribute(\"class\"))?a.match(new RegExp(this.mactionName)):!1};\nsre.AbstractHighlighter.prototype.isHighlighted=function(a){return a.hasAttribute(sre.AbstractHighlighter.ATTR)};sre.AbstractHighlighter.prototype.setHighlighted=function(a){a.setAttribute(sre.AbstractHighlighter.ATTR,!0)};sre.AbstractHighlighter.prototype.unsetHighlighted=function(a){a.removeAttribute(sre.AbstractHighlighter.ATTR)};\nsre.AbstractHighlighter.prototype.colorizeAll=function(a){sre.XpathUtil.evalXPath(\".//*[@\"+sre.EnrichMathml.Attribute.ID+\"]\",a).forEach(goog.bind(function(b){this.colorize(b)},this))};sre.AbstractHighlighter.prototype.uncolorizeAll=function(a){sre.XpathUtil.evalXPath(\".//*[@\"+sre.EnrichMathml.Attribute.ID+\"]\",a).forEach(goog.bind(function(b){this.uncolorize(b)},this))};\nsre.AbstractHighlighter.prototype.colorize=function(a){var b=sre.EnrichMathml.addPrefix(\"foreground\");a.hasAttribute(b)&&(a.setAttribute(b+\"-old\",a.style.color),a.style.color=a.getAttribute(b))};sre.AbstractHighlighter.prototype.uncolorize=function(a){var b=sre.EnrichMathml.addPrefix(\"foreground\")+\"-old\";a.hasAttribute(b)&&(a.style.color=a.getAttribute(b))};sre.CssHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"mjx-maction\"};goog.inherits(sre.CssHighlighter,sre.AbstractHighlighter);sre.CssHighlighter.prototype.highlightNode=function(a){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color},c=this.colorString();a.style.backgroundColor=c.background;a.style.color=c.foreground;return b};sre.CssHighlighter.prototype.unhighlightNode=function(a){a.node.style.backgroundColor=a.background;a.node.style.color=a.foreground};sre.ChtmlHighlighter=function(){sre.CssHighlighter.call(this)};goog.inherits(sre.ChtmlHighlighter,sre.CssHighlighter);sre.ChtmlHighlighter.prototype.isMactionNode=function(a){return a.tagName.toUpperCase()===this.mactionName.toUpperCase()};sre.ChtmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.HtmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.HtmlHighlighter,sre.AbstractHighlighter);sre.HtmlHighlighter.prototype.setMode=function(a){this.mode=a};\nsre.HtmlHighlighter.prototype.highlightNode=function(a){var b={node:a,foreground:a.style.color,position:a.style.position},c=this.color.rgb();a.style.color=c.foreground;a.style.position=\"relative\";var d=a.bbox;if(d&&d.w){var e=sre.DomUtil.createElement(\"span\"),f=parseFloat(a.style.paddingLeft||\"0\");e.style.backgroundColor=c.background;e.style.opacity=c.alphaback.toString();e.style.display=\"inline-block\";e.style.height=d.h+d.d+.1+\"em\";e.style.verticalAlign=-d.d+\"em\";e.style.marginTop=e.style.marginBottom=\n\"-0.05em\";e.style.width=d.w+0+\"em\";e.style.marginLeft=f-0+\"em\";e.style.marginRight=-d.w-f+\"em\";a.parentNode.insertBefore(e,a);b.box=e}return b};sre.HtmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node;b.style.color=a.foreground;b.style.position=a.position;a.box&&a.box.parentNode.removeChild(a.box)};sre.MmlCssHighlighter=function(){sre.CssHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.MmlCssHighlighter,sre.CssHighlighter);sre.MmlCssHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.MmlCssHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.MmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.MmlHighlighter,sre.AbstractHighlighter);sre.MmlHighlighter.prototype.highlightNode=function(a){var b=a.getAttribute(\"style\");b+=\";background-color: \"+this.colorString().background;b+=\";color: \"+this.colorString().foreground;a.setAttribute(\"style\",b);return{node:a}};\nsre.MmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node.getAttribute(\"style\");b=b.replace(\";background-color: \"+this.colorString().background,\"\");b=b.replace(\";color: \"+this.colorString().foreground,\"\");a.node.setAttribute(\"style\",b)};sre.MmlHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.MmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};\nsre.MmlHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.SvgHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"mjx-svg-maction\"};goog.inherits(sre.SvgHighlighter,sre.AbstractHighlighter);\nsre.SvgHighlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a.previousSibling||a,background:a.style.backgroundColor,foreground:a.style.color};if(\"svg\"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");if(\"use\"===a.nodeName){var c=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\n\"g\");a.parentNode.insertBefore(c,a);c.appendChild(a);var d=c.getBBox();c.parentNode.replaceChild(a,c)}else d=a.getBBox();b.setAttribute(\"x\",d.x-40);b.setAttribute(\"y\",d.y-40);b.setAttribute(\"width\",d.width+80);b.setAttribute(\"height\",d.height+80);(d=a.getAttribute(\"transform\"))&&b.setAttribute(\"transform\",d);b.setAttribute(\"fill\",this.colorString().background);b.setAttribute(sre.AbstractHighlighter.ATTR,!0);a.parentNode.insertBefore(b,a);b={node:b,foreground:a.getAttribute(\"fill\")};a.setAttribute(\"fill\",\nthis.colorString().foreground);return b};sre.SvgHighlighter.prototype.setHighlighted=function(a){\"svg\"===a.tagName&&sre.SvgHighlighter.superClass_.setHighlighted.call(this,a)};sre.SvgHighlighter.prototype.unhighlightNode=function(a){\"background\"in a?(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground):(a.foreground?a.node.nextSibling.setAttribute(\"fill\",a.foreground):a.node.nextSibling.removeAttribute(\"fill\"),a.node.parentNode.removeChild(a.node))};\nsre.SvgHighlighter.prototype.isMactionNode=function(a){a=a.className||a.getAttribute(\"class\");return(a=void 0!==a.baseVal?a.baseVal:a)?a.match(new RegExp(this.mactionName)):!1};sre.SvgV3Highlighter=function(){sre.SvgHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.SvgV3Highlighter,sre.SvgHighlighter);\nsre.SvgV3Highlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a,background:this.colorString().background,foreground:this.colorString().foreground};if(\"svg\"===a.tagName||\"MJX-CONTAINER\"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");b.setAttribute(\"sre-highlighter-added\",\n!0);var c=a.getBBox();b.setAttribute(\"x\",c.x-40);b.setAttribute(\"y\",c.y-40);b.setAttribute(\"width\",c.width+80);b.setAttribute(\"height\",c.height+80);(c=a.getAttribute(\"transform\"))&&b.setAttribute(\"transform\",c);b.setAttribute(\"fill\",this.colorString().background);a.setAttribute(sre.AbstractHighlighter.ATTR,!0);a.parentNode.insertBefore(b,a);b={node:a,foreground:a.getAttribute(\"fill\")};\"rect\"===a.nodeName?(c=new sre.ColorPicker({alpha:0,color:\"black\"}),a.setAttribute(\"fill\",c.rgba().foreground)):a.setAttribute(\"fill\",\nthis.colorString().foreground);return b};sre.SvgV3Highlighter.prototype.unhighlightNode=function(a){var b=a.node.previousSibling;b&&b.hasAttribute(\"sre-highlighter-added\")?(a.foreground?a.node.setAttribute(\"fill\",a.foreground):a.node.removeAttribute(\"fill\"),a.node.parentNode.removeChild(b)):(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground)};sre.SvgV3Highlighter.prototype.isMactionNode=function(a){return a.getAttribute(\"data-mml-node\")===this.mactionName};\nsre.SvgV3Highlighter.prototype.getMactionNodes=function(a){return sre.XpathUtil.evalXPath('.//*[@data-mml-node=\"'+this.mactionName+'\"]',a)};sre.HighlighterFactory={};sre.HighlighterFactory.highlighter=function(a,b,c){a=new sre.ColorPicker(a,b);c=new (sre.HighlighterFactory.highlighterMapping_[\"NativeMML\"===c.renderer&&\"Safari\"===c.browser?\"MML-CSS\":\"SVG\"===c.renderer&&\"v3\"===c.browser?\"SVG-V3\":c.renderer]||sre.HighlighterFactory.highlighterMapping_.NativeMML);c.setColor(a);return c};sre.HighlighterFactory.addEvents=function(a,b,c){(c=sre.HighlighterFactory.highlighterMapping_[c.renderer])&&(new c).addEvents(a,b)};\nsre.HighlighterFactory.highlighterMapping_={SVG:sre.SvgHighlighter,\"SVG-V3\":sre.SvgV3Highlighter,NativeMML:sre.MmlHighlighter,\"HTML-CSS\":sre.HtmlHighlighter,\"MML-CSS\":sre.MmlCssHighlighter,CommonHTML:sre.CssHighlighter,CHTML:sre.ChtmlHighlighter};sre.Span=function(a,b){this.string=a;this.attributes=b};sre.AudioUtil={};sre.AudioUtil.mergePause=function(a,b,c){return a?{pause:sre.AudioUtil.mergePause_(a.pause,b.pause,c)}:b};sre.AudioUtil.mergePause_=function(a,b,c){return(c||function(d,e){return\"number\"===typeof d||\"number\"===typeof e?d+e:\"number\"===typeof d?e:\"number\"===typeof e?d:[a,b].sort()[0]}).call(null,a,b)};sre.AudioUtil.mergeMarkup=function(a,b){delete a.open;b.close.forEach(function(d){delete a[d]});b.open.forEach(function(d){a[d]=b[d]});var c=Object.keys(a);a.open=c};\nsre.AudioUtil.sortClose=function(a,b){if(1>=a.length)return a;for(var c=[],d=0,e;e=b[d],a.length;d++)e.close&&e.close.length&&e.close.forEach(function(f){var g=a.indexOf(f);-1!==g&&(c.unshift(f),a.splice(g,1))});return c};sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];\nsre.AudioUtil.personalityMarkup=function(a){sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];for(var b=[],c={},d=0,e;e=a[d];d++){var f=null,g=e.descriptionSpan(),h=e.personality;e=h[sre.Engine.personalityProps.JOIN];delete h[sre.Engine.personalityProps.JOIN];\"undefined\"!==typeof h[sre.Engine.personalityProps.PAUSE]&&(f={},f[sre.Engine.personalityProps.PAUSE]=h[sre.Engine.personalityProps.PAUSE],delete h[sre.Engine.personalityProps.PAUSE]);h=sre.AudioUtil.personalityDiff_(h,c);sre.AudioUtil.appendMarkup_(b,\ng,h,e,f,!0)}b=b.concat(sre.AudioUtil.finaliseMarkup_());return b=sre.AudioUtil.simplifyMarkup_(b)};\nsre.AudioUtil.appendElement_=function(a,b){var c=a[a.length-1];if(c)if(sre.AudioUtil.isSpanElement(b)&&sre.AudioUtil.isSpanElement(c))if(\"undefined\"===typeof c.join)c.span=c.span.concat(b.span);else{a=c.span.pop();var d=b.span.shift();c.span.push(a+c.join+d);c.span=c.span.concat(b.span);c.join=b.join}else sre.AudioUtil.isPauseElement(b)&&sre.AudioUtil.isPauseElement(c)?c.pause=sre.AudioUtil.mergePause_(c.pause,b.pause):a.push(b);else a.push(b)};\nsre.AudioUtil.simplifyMarkup_=function(a){for(var b={},c=[],d=0,e;e=a[d];d++)if(sre.AudioUtil.isMarkupElement(e))if(!e.close||1!==e.close.length||e.open.length)sre.AudioUtil.copyValues_(e,b),c.push(e);else{var f=a[d+1];if(!f||sre.AudioUtil.isSpanElement(f))sre.AudioUtil.copyValues_(e,b),c.push(e);else{var g=sre.AudioUtil.isPauseElement(f)?f:null;g&&(f=a[d+2]);f&&sre.AudioUtil.isMarkupElement(f)&&f.open[0]===e.close[0]&&!f.close.length&&f[f.open[0]]===b[f.open[0]]?g?(sre.AudioUtil.appendElement_(c,\ng),d+=2):d+=1:(sre.AudioUtil.copyValues_(e,b),c.push(e))}}else sre.AudioUtil.appendElement_(c,e);return c};sre.AudioUtil.copyValues_=function(a,b){a.rate&&(b.rate=a.rate);a.pitch&&(b.pitch=a.pitch);a.volume&&(b.volume=a.volume)};sre.AudioUtil.finaliseMarkup_=function(){for(var a=[],b=sre.AudioUtil.LastOpen_.length-1;0<=b;b--){var c=sre.AudioUtil.LastOpen_[b];if(c.length){for(var d={open:[],close:[]},e=0;e<c.length;e++){var f=c[e];d.close.push(f);d[f]=0}a.push(d)}}return a};\nsre.AudioUtil.isMarkupElement=function(a){return\"object\"===typeof a&&a.open};sre.AudioUtil.isPauseElement=function(a){return\"object\"===typeof a&&1===Object.keys(a).length&&Object.keys(a)[0]===sre.Engine.personalityProps.PAUSE};sre.AudioUtil.isSpanElement=function(a){var b=Object.keys(a);return\"object\"===typeof a&&(1===b.length&&\"span\"===b[0]||2===b.length&&(\"span\"===b[0]&&\"join\"===b[1]||\"span\"===b[1]&&\"join\"===b[0]))};\nsre.AudioUtil.appendMarkup_=function(a,b,c,d,e,f){if(f){if(f=a[a.length-1])var g=f[sre.Engine.personalityProps.JOIN];if(f&&!b.string&&e&&sre.AudioUtil.isPauseElement(f)){var h=sre.Engine.personalityProps.PAUSE;f[h]=sre.AudioUtil.mergePause_(f[h],e[h]);e=null}f&&b.string&&0===Object.keys(c).length&&sre.AudioUtil.isSpanElement(f)&&(\"undefined\"!==typeof g&&(h=f.span.pop(),b=new sre.Span(h.string+g+b.string,h.attributes)),f.span.push(b),b=new sre.Span(\"\",{}),f[sre.Engine.personalityProps.JOIN]=d)}0!==\nObject.keys(c).length&&a.push(c);b.string&&a.push({span:[b],join:d});e&&a.push(e)};\nsre.AudioUtil.personalityDiff_=function(a,b){if(!b)return a;var c={};for(h in sre.Engine.personalityProps){var d=sre.Engine.personalityProps[h],e=a[d],f=b[d];if(!(!e&&!f||e&&f&&e===f)){var g=e||0;sre.AudioUtil.isMarkupElement(c)||(c.open=[],c.close=[]);e||c.close.push(d);f||c.open.push(d);f&&e&&(c.close.push(d),c.open.push(d));b[d]=g;c[d]=g;sre.AudioUtil.PersonalityRanges_[d]?sre.AudioUtil.PersonalityRanges_[d].push(g):sre.AudioUtil.PersonalityRanges_[d]=[g]}}if(sre.AudioUtil.isMarkupElement(c)){for(a=\nc.close.slice();0<a.length;){var h=sre.AudioUtil.LastOpen_.pop();d=sre.BaseUtil.setdifference(h,a);a=sre.BaseUtil.setdifference(a,h);h=d;if(0===a.length)0!==h.length&&sre.AudioUtil.LastOpen_.push(h);else if(0!==h.length)for(c.close=c.close.concat(h),c.open=c.open.concat(h),d=0;e=h[d];d++)c[e]=b[e]}sre.AudioUtil.LastOpen_.push(c.open)}return c};sre.AudioRenderer=function(){};sre.AudioRenderer.prototype.setSeparator=function(a){};sre.AudioRenderer.prototype.getSeparator=function(){};sre.AudioRenderer.prototype.markup=function(a){};sre.AudioRenderer.prototype.error=function(a){};sre.AudioRenderer.prototype.merge=function(a){};sre.AudioRenderer.prototype.finalize=function(a){};sre.AbstractAudioRenderer=function(){this.separator_=\" \"};sre.AbstractAudioRenderer.prototype.setSeparator=function(a){this.separator_=a};sre.AbstractAudioRenderer.prototype.getSeparator=function(){return this.separator_};sre.AbstractAudioRenderer.prototype.markup=goog.abstractMethod;sre.AbstractAudioRenderer.prototype.error=function(a){return null};sre.AbstractAudioRenderer.prototype.merge=function(a){return a.map(function(b){return b.string}).join(this.getSeparator())};\nsre.AbstractAudioRenderer.prototype.finalize=function(a){return a};sre.AbstractAudioRenderer.prototype.pauseValue=function(a){switch(a){case \"long\":a=750;break;case \"medium\":a=500;break;case \"short\":a=250;break;default:a=parseInt(a,10)}return Math.floor(a*parseInt(sre.Engine.getInstance().getRate(),10)/100)};sre.MarkupRenderer=function(){sre.AbstractAudioRenderer.call(this);this.scaleFunction_=null};goog.inherits(sre.MarkupRenderer,sre.AbstractAudioRenderer);sre.MarkupRenderer.prototype.setScaleFunction=function(a,b,c,d,e){var f=e||0;this.scaleFunction_=function(g){g=(g-a)/(b-a);return+(Math.round(c*(1-g)+d*g+\"e+\"+f)+\"e-\"+f)}};sre.MarkupRenderer.prototype.applyScaleFunction=function(a){return this.scaleFunction_?this.scaleFunction_(a):a};sre.MarkupRenderer.prototype.pause=goog.abstractMethod;\nsre.MarkupRenderer.prototype.prosodyElement=goog.abstractMethod;sre.AcssRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.AcssRenderer,sre.MarkupRenderer);\nsre.AcssRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,0,10,0);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c={open:[]},d=null,e=!1,f=0,g;g=a[f];f++)if(sre.AudioUtil.isMarkupElement(g))sre.AudioUtil.mergeMarkup(c,g);else if(sre.AudioUtil.isPauseElement(g))e&&(d=sre.AudioUtil.mergePause(d,g,Math.max));else{g='\"'+this.merge(g.span)+'\"';e=!0;d&&(b.push(this.pause(d)),d=null);var h=this.prosody_(c);b.push(h?\"(text (\"+h+\") \"+g+\")\":g)}return\"(exp \"+b.join(\" \")+\")\"};\nsre.AcssRenderer.prototype.error=function(a){return'(error \"'+sre.EventUtil.Move[a.toString()]+'\")'};sre.AcssRenderer.prototype.prosody_=function(a){for(var b=a.open,c=[],d=0,e;e=b[d];d++)c.push(this.prosodyElement(e,a[e]));return c.join(\" \")};\nsre.AcssRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.RATE:return\"(richness . \"+b+\")\";case sre.Engine.personalityProps.PITCH:return\"(average-pitch . \"+b+\")\";case sre.Engine.personalityProps.VOLUME:return\"(stress . \"+b+\")\"}return\"(value . \"+b+\")\"};sre.AcssRenderer.prototype.pause=function(a){return\"(pause . \"+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+\")\"};sre.PunctuationRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.PunctuationRenderer,sre.AbstractAudioRenderer);\nsre.PunctuationRenderer.prototype.markup=function(a){a=sre.AudioUtil.personalityMarkup(a);for(var b=\"\",c=null,d=!1,e=0,f;f=a[e];e++)sre.AudioUtil.isMarkupElement(f)||(sre.AudioUtil.isPauseElement(f)?d&&(c=sre.AudioUtil.mergePause(c,f,Math.max)):(c&&(b+=this.pause(c[sre.Engine.personalityProps.PAUSE]),c=null),b+=(d?this.getSeparator():\"\")+this.merge(f.span),d=!0));return b};sre.PunctuationRenderer.PAUSE_PUNCTUATION_={\"short\":\",\",medium:\";\",\"long\":\".\"};\nsre.PunctuationRenderer.prototype.pause=function(a){return sre.PunctuationRenderer.PAUSE_PUNCTUATION_[\"number\"===typeof a?250>=a?\"short\":500>=a?\"medium\":\"long\":a]||\"\"};sre.XmlRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.XmlRenderer,sre.MarkupRenderer);\nsre.XmlRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,-100,100,2);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c=[],d=0,e;e=a[d];d++)if(e.span)b.push(this.merge(e.span));else if(sre.AudioUtil.isPauseElement(e))b.push(this.pause(e));else{if(e.close.length)for(var f=0;f<e.close.length;f++){var g=c.pop();if(-1===e.close.indexOf(g))throw new sre.Engine.Error(\"Unknown closing markup element: \"+g);b.push(this.closeTag(g))}e.open.length&&sre.AudioUtil.sortClose(e.open.slice(),a.slice(d+\n1)).forEach(goog.bind(function(h){b.push(this.prosodyElement(h,e[h]));c.push(h)},this))}return b.join(\" \")};sre.XmlRenderer.prototype.closeTag=goog.abstractMethod;sre.SableRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SableRenderer,sre.XmlRenderer);sre.SableRenderer.prototype.finalize=function(a){return'<?xml version=\"1.0\"?><!DOCTYPE SABLE PUBLIC \"-//SABLE//DTD SABLE speech mark up//EN\" \"Sable.v0_2.dtd\" []><SABLE>'+this.getSeparator()+a+this.getSeparator()+\"</SABLE>\"};sre.SableRenderer.prototype.pause=function(a){return'<BREAK MSEC=\"'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'\"/>'};\nsre.SableRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.PITCH:return'<PITCH RANGE=\"'+b+'%\">';case sre.Engine.personalityProps.RATE:return'<RATE SPEED=\"'+b+'%\">';case sre.Engine.personalityProps.VOLUME:return'<VOLUME LEVEL=\"'+b+'%\">';default:return\"<\"+a.toUpperCase()+' VALUE=\"'+b+'\">'}};sre.SableRenderer.prototype.closeTag=function(a){return\"</\"+a.toUpperCase()+\">\"};sre.SsmlRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SsmlRenderer,sre.XmlRenderer);sre.SsmlRenderer.prototype.finalize=function(a){return'<?xml version=\"1.0\"?><speak version=\"1.1\" xmlns=\"http://www.w3.org/2001/10/synthesis\"><prosody rate=\"'+sre.Engine.getInstance().getRate()+'%\">'+this.getSeparator()+a+this.getSeparator()+\"</prosody></speak>\"};sre.SsmlRenderer.prototype.pause=function(a){return'<break time=\"'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'ms\"/>'};\nsre.SsmlRenderer.prototype.prosodyElement=function(a,b){b=Math.floor(this.applyScaleFunction(b));b=0>b?b.toString():\"+\"+b.toString();return\"<prosody \"+a.toLowerCase()+'=\"'+b+(a===sre.Engine.personalityProps.VOLUME?\">\":'%\">')};sre.SsmlRenderer.prototype.closeTag=function(a){return\"</prosody>\"};sre.SsmlStepRenderer=function(){sre.SsmlRenderer.call(this)};goog.inherits(sre.SsmlStepRenderer,sre.SsmlRenderer);sre.SsmlStepRenderer.prototype.markup=function(a){sre.SsmlStepRenderer.MARKS={};return sre.SsmlStepRenderer.superClass_.markup.call(this,a)};sre.SsmlStepRenderer.CHARACTER_ATTR_=\"character\";sre.SsmlStepRenderer.MARKS={};\nsre.SsmlStepRenderer.prototype.merge=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=d.attributes.extid;e&&!sre.SsmlStepRenderer.MARKS[e]&&(b.push('<mark name=\"'+e+'\"/>'),sre.SsmlStepRenderer.MARKS[e]=!0);1===d.string.length&&d.string.match(/[a-zA-Z]/)?b.push('<say-as interpret-as=\"'+sre.SsmlStepRenderer.CHARACTER_ATTR_+'\">'+d.string+\"</say-as>\"):b.push(d.string)}return b.join(this.getSeparator())};sre.StringRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.StringRenderer,sre.AbstractAudioRenderer);sre.StringRenderer.prototype.markup=function(a){var b=\"\";a=a.filter(function(g){return g.descriptionString()});if(!a.length)return b;for(var c=0;c<a.length-1;c++){var d=a[c],e=d.personality[sre.Engine.personalityProps.JOIN],f=\"nemeth\"===sre.Engine.getInstance().locale?\"\":this.getSeparator();e=\"undefined\"===typeof e?f:e;b+=d.descriptionString()+e}return b+=a[c].descriptionString()};sre.AuralRendering=function(){};goog.addSingletonGetter(sre.AuralRendering);sre.AuralRendering.prototype.setSeparator=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];b&&b.setSeparator(a)};sre.AuralRendering.prototype.getSeparator=function(){var a=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return a?a.getSeparator():\"\"};\nsre.AuralRendering.prototype.markup=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.markup(a):\"\"};sre.AuralRendering.prototype.merge=function(a){var b=a.map(function(d){return{string:d,attributes:{}}}),c=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return c?c.merge(b):a.join()};\nsre.AuralRendering.prototype.finalize=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.finalize(a):a};sre.AuralRendering.prototype.error=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.error(a):\"\"};sre.AuralRendering.registerRenderer=function(a,b){sre.AuralRendering.rendererMapping_[a]=b};\nsre.AuralRendering.ofType=function(a){return sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup]instanceof a};sre.AuralRendering.rendererMapping_={};sre.AuralRendering.registerRenderer(sre.Engine.Markup.NONE,new sre.StringRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.PUNCTUATION,new sre.PunctuationRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.ACSS,new sre.AcssRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SABLE,new sre.SableRenderer);\nsre.AuralRendering.xmlInstance=new sre.SsmlRenderer;sre.AuralRendering.registerRenderer(sre.Engine.Markup.VOICEXML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML_STEP,new sre.SsmlStepRenderer);sre.WalkerUtil={};sre.WalkerUtil.splitAttribute=function(a){return a?a.split(/,/):[]};sre.WalkerUtil.getAttribute=function(a,b){return sre.DomUtil.getDataAttribute(a,b)};sre.WalkerUtil.getSemanticRoot=function(a){if(a.hasAttribute(sre.EnrichMathml.Attribute.TYPE)&&!a.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return a;for(var b=sre.DomUtil.querySelectorAllByAttr(a,sre.EnrichMathml.Attribute.TYPE),c=0,d;d=b[c];c++)if(!d.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return d;return a};\nsre.WalkerUtil.getBySemanticId=function(a,b){return a.getAttribute(sre.EnrichMathml.Attribute.ID)===b?a:sre.DomUtil.querySelectorAllByAttrValue(a,sre.EnrichMathml.Attribute.ID,b)[0]};sre.RebuildStree=function(a){this.factory=new sre.SemanticNodeFactory;this.nodeDict={};this.mathml=a;this.mmlRoot=sre.WalkerUtil.getSemanticRoot(a);this.streeRoot=this.assembleTree(this.mmlRoot);this.stree=sre.SemanticTree.fromNode(this.streeRoot,this.mathml);this.xml=this.stree.xml();sre.SemanticProcessor.getInstance().setNodeFactory(this.factory)};sre.RebuildStree.prototype.getTree=function(){return this.stree};\nsre.RebuildStree.addAttributes=function(a,b,c){c&&1===b.childNodes.length&&b.childNodes[0].nodeType!==sre.DomUtil.NodeType.TEXT_NODE&&sre.SemanticUtil.addAttributes(a,b.childNodes[0]);sre.SemanticUtil.addAttributes(a,b)};\nsre.RebuildStree.prototype.assembleTree=function(a){var b=this.makeNode(a),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),d=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT));sre.RebuildStree.addAttributes(b,a,!(c.length||d.length));if(0===d.length&&0===c.length)return b.textContent=a.textContent,b;if(0<d.length){var e=sre.WalkerUtil.getBySemanticId(a,d[0]);e&&(e=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(e,\nsre.EnrichMathml.Attribute.OPERATOR)),1<e.length&&(b.textContent=e[1]))}e=function(f){f=sre.WalkerUtil.getBySemanticId(a,f);f=this.assembleTree(f);f.parent=b;return f};b.contentNodes=d.map(goog.bind(e,this));b.childNodes=c.map(goog.bind(e,this));return(c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.COLLAPSED))?this.postProcess(b,c):b};\nsre.RebuildStree.prototype.makeNode=function(a){var b=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE),c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FONT),e=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ANNOTATION)||\"\",f=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ID),g=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.EMBELLISHED);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FENCEPOINTER);\nf=this.createNode(parseInt(f,10));f.type=b;f.role=c;f.font=d?d:sre.SemanticAttr.Font.UNKNOWN;f.parseAnnotation(e);a&&(f.fencePointer=a);g&&(f.embellished=g);return f};sre.RebuildStree.isPunctuated=function(a){return!sre.SemanticSkeleton.simpleCollapseStructure(a)&&a[1]&&sre.SemanticSkeleton.contentCollapseStructure(a[1])};sre.RebuildStree.prototype.makePunctuation=function(a){a=this.createNode(a);a.updateContent(sre.SemanticAttr.invisibleComma());a.role=sre.SemanticAttr.Role.DUMMY;return a};\nsre.RebuildStree.prototype.makePunctuated=function(a,b,c){var d=this.createNode(b[0]);d.type=sre.SemanticAttr.Type.PUNCTUATED;d.embellished=a.embellished;d.fencePointer=a.fencePointer;d.role=c;a=b.splice(1,1)[0].slice(1);d.contentNodes=a.map(goog.bind(this.makePunctuation,this));this.collapsedChildren_(b)};sre.RebuildStree.prototype.makeEmpty=function(a,b,c){b=this.createNode(b);b.type=sre.SemanticAttr.Type.EMPTY;b.embellished=a.embellished;b.fencePointer=a.fencePointer;b.role=c};\nsre.RebuildStree.prototype.makeIndex=function(a,b,c){sre.RebuildStree.isPunctuated(b)?this.makePunctuated(a,b,c):sre.SemanticSkeleton.simpleCollapseStructure(b)&&!this.nodeDict[b.toString()]&&this.makeEmpty(a,b,c)};\nsre.RebuildStree.prototype.postProcess=function(a,b){b=sre.SemanticSkeleton.fromString(b).array;if(a.type===sre.SemanticAttr.Role.SUBSUP){var c=this.createNode(b[1][0]);c.type=sre.SemanticAttr.Type.SUBSCRIPT;c.role=sre.SemanticAttr.Role.SUBSUP;a.type=sre.SemanticAttr.Type.SUPERSCRIPT;c.embellished=a.embellished;c.fencePointer=a.fencePointer;this.makeIndex(a,b[1][2],sre.SemanticAttr.Role.RIGHTSUB);this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER);this.collapsedChildren_(b);return a}if(a.type===\nsre.SemanticAttr.Type.SUBSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUB),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.SUPERSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.TENSOR)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.LEFTSUB),this.makeIndex(a,b[3],sre.SemanticAttr.Role.LEFTSUPER),this.makeIndex(a,b[4],sre.SemanticAttr.Role.RIGHTSUB),this.makeIndex(a,b[5],sre.SemanticAttr.Role.RIGHTSUPER),\nthis.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.PUNCTUATED)return sre.RebuildStree.isPunctuated(b)&&(b=b.splice(1,1)[0].slice(1),a.contentNodes=b.map(goog.bind(this.makePunctuation,this))),a;a.type===sre.SemanticAttr.Role.UNDEROVER&&(c=this.createNode(b[1][0]),a.childNodes[1].role===sre.SemanticAttr.Role.OVERACCENT?(c.type=sre.SemanticAttr.Type.OVERSCORE,a.type=sre.SemanticAttr.Type.UNDERSCORE):(c.type=sre.SemanticAttr.Type.UNDERSCORE,a.type=sre.SemanticAttr.Type.OVERSCORE),c.role=\nsre.SemanticAttr.Role.UNDEROVER,c.embellished=a.embellished,c.fencePointer=a.fencePointer,this.collapsedChildren_(b));return a};sre.RebuildStree.prototype.createNode=function(a){var b=this.factory.makeNode(a);return this.nodeDict[a.toString()]=b};\nsre.RebuildStree.prototype.collapsedChildren_=function(a){var b=goog.bind(function(c){var d=this.nodeDict[c[0]];d.childNodes=[];for(var e=1,f=c.length;e<f;e++){var g=c[e];d.childNodes.push(sre.SemanticSkeleton.simpleCollapseStructure(g)?this.nodeDict[g]:b(g))}return d},this);b(a)};sre.SpeechGenerator=function(){};sre.SpeechGenerator.prototype.getSpeech=function(a,b){};sre.SpeechGenerator.prototype.getRebuilt=function(){};sre.SpeechGenerator.prototype.setRebuilt=function(a){};sre.SpeechGenerator.prototype.setOptions=function(a){};sre.SpeechGenerator.prototype.getOptions=function(){};sre.SpeechGenerator.prototype.start=function(){};sre.SpeechGenerator.prototype.end=function(){};sre.AuditoryDescription=function(a){this.context=a.context||\"\";this.text=a.text||\"\";this.userValue=a.userValue||\"\";this.annotation=a.annotation||\"\";this.attributes=a.attributes||{};this.personality=a.personality||{}};sre.AuditoryDescription.create=function(a,b){a.text=sre.Grammar.getInstance().apply(a.text,b||{});return new sre.AuditoryDescription(a)};sre.AuditoryDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};\nsre.AuditoryDescription.prototype.clone=function(){if(this.personality){var a={};for(var b in this.personality)a=this.personality[b]}if(this.attributes){var c={};for(b in this.attributes)c=this.attributes[b]}return new sre.AuditoryDescription({context:this.context,text:this.text,userValue:this.userValue,annotation:this.annotation,personality:a,attributes:c})};\nsre.AuditoryDescription.prototype.toString=function(){return'AuditoryDescription(context=\"'+this.context+'\"  text=\"'+this.text+'\"  userValue=\"'+this.userValue+'\"  annotation=\"'+this.annotation+'\")'};sre.AuditoryDescription.prototype.descriptionString=function(){return this.context&&this.text?this.context+\" \"+this.text:this.context||this.text};sre.AuditoryDescription.prototype.descriptionSpan=function(){return new sre.Span(this.descriptionString(),this.attributes)};\nsre.AuditoryDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};sre.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d;this.context=null};sre.SpeechRule.prototype.toString=function(){return this.name+\" | \"+this.dynamicCstr.toString()+\" | \"+this.precondition.toString()+\" ==> \"+this.action.toString()};sre.SpeechRule.Type={NODE:\"NODE\",MULTI:\"MULTI\",TEXT:\"TEXT\",PERSONALITY:\"PERSONALITY\"};\nsre.SpeechRule.Type.fromString=function(a){switch(a){case \"[n]\":return sre.SpeechRule.Type.NODE;case \"[m]\":return sre.SpeechRule.Type.MULTI;case \"[t]\":return sre.SpeechRule.Type.TEXT;case \"[p]\":return sre.SpeechRule.Type.PERSONALITY;default:throw\"Parse error: \"+a;}};\nsre.SpeechRule.Type.toString=function(a){switch(a){case sre.SpeechRule.Type.NODE:return\"[n]\";case sre.SpeechRule.Type.MULTI:return\"[m]\";case sre.SpeechRule.Type.TEXT:return\"[t]\";case sre.SpeechRule.Type.PERSONALITY:return\"[p]\";default:throw\"Unknown type error: \"+a;}};sre.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content;this.attributes=a.attributes;this.grammar=a.grammar};\nsre.SpeechRule.Component.fromString=function(a){var b={};b.type=sre.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trim();if(!a)throw new sre.SpeechRule.OutputError(\"Missing content.\");switch(b.type){case sre.SpeechRule.Type.TEXT:if('\"'==a[0]){var c=sre.SpeechRule.splitString_(a,\"\\\\(\")[0].trim();if('\"'!=c.slice(-1))throw new sre.SpeechRule.OutputError(\"Invalid string syntax.\");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf(\"(\")&&(a=\"\");break}case sre.SpeechRule.Type.NODE:case sre.SpeechRule.Type.MULTI:c=\na.indexOf(\" (\"),-1==c?(b.content=a.trim(),a=\"\"):(b.content=a.substring(0,c).trim(),a=a.slice(c).trim())}a&&(a=sre.SpeechRule.Component.attributesFromString(a),a.grammar&&(b.grammar=a.grammar,delete a.grammar),Object.keys(a).length&&(b.attributes=a));return b=new sre.SpeechRule.Component(b)};sre.SpeechRule.Component.prototype.toString=function(){var a=\"\"+sre.SpeechRule.Type.toString(this.type);a+=this.content?\" \"+this.content:\"\";var b=this.attributesToString();return a+(b?\" \"+b:\"\")};\nsre.SpeechRule.Component.grammarFromString=function(a){return sre.Grammar.parseInput(a)};sre.SpeechRule.Component.prototype.grammarToString=function(){return this.getGrammar().join(\":\")};sre.SpeechRule.Component.prototype.getGrammar=function(){var a=[],b;for(b in this.grammar)!0===this.grammar[b]?a.push(b):!1===this.grammar[b]?a.push(\"!\"+b):a.push(b+\"=\"+this.grammar[b]);return a};\nsre.SpeechRule.Component.attributesFromString=function(a){if(\"(\"!=a[0]||\")\"!=a.slice(-1))throw new sre.SpeechRule.OutputError(\"Invalid attribute expression: \"+a);var b={};a=sre.SpeechRule.splitString_(a.slice(1,-1),\",\");for(var c=0,d=a.length;c<d;c++){var e=a[c],f=e.indexOf(\":\");if(-1==f)b[e.trim()]=\"true\";else{var g=e.substring(0,f).trim();e=e.slice(f+1).trim();b[g]=\"grammar\"===g?sre.SpeechRule.Component.grammarFromString(e):b[g]=e}}return b};\nsre.SpeechRule.Component.prototype.attributesToString=function(){var a=this.getAttributes(),b=this.grammarToString();b&&a.push(\"grammar:\"+b);return 0<a.length?\"(\"+a.join(\", \")+\")\":\"\"};sre.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this.attributes){var c=this.attributes[b];\"true\"===c?a.push(b):a.push(b+\":\"+c)}return a};sre.SpeechRule.Action=function(a){this.components=a};\nsre.SpeechRule.Action.fromString=function(a){a=sre.SpeechRule.splitString_(a,\";\").filter(function(f){return f.match(/\\S/)}).map(function(f){return f.trim()});for(var b=[],c=0,d=a.length;c<d;c++){var e=sre.SpeechRule.Component.fromString(a[c]);e&&b.push(e)}return new sre.SpeechRule.Action(b)};sre.SpeechRule.Action.prototype.toString=function(){return this.components.map(function(a){return a.toString()}).join(\"; \")};sre.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};\nsre.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(\", \");return this.query+\", \"+a};\nsre.SpeechRule.splitString_=function(a,b){for(var c=[],d=\"\";\"\"!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/\"/g)||[]).length%2)throw new sre.SpeechRule.OutputError(\"Invalid string in expression: \"+a);c.push(d+a);a=d=\"\"}else if(0==(a.substring(0,e).match(/\"/g)||[]).length%2)c.push(d+a.substring(0,e)),d=\"\",a=a.substring(e+1);else{var f=a.substring(e).search('\"');if(-1==f)throw new sre.SpeechRule.OutputError(\"Invalid string in expression: \"+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&c.push(d);\nreturn c};sre.SpeechRule.OutputError=function(a){sre.Engine.Error.call(this,a);this.name=\"RuleError\"};goog.inherits(sre.SpeechRule.OutputError,sre.Engine.Error);sre.SpeechRuleFunctions=function(){};sre.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};sre.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};sre.SpeechRuleFunctions.Store_.prototype.addStore=function(a){for(var b=Object.keys(a.store_),c=0,d;d=b[c];c++)this.add(d,a.store_[d])};sre.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};\nsre.SpeechRuleFunctions.CustomQueries=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CQF\",{})};goog.inherits(sre.SpeechRuleFunctions.CustomQueries,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.CustomStrings=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CSF\",{})};goog.inherits(sre.SpeechRuleFunctions.CustomStrings,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.ContextFunctions=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CTXF\",{})};\ngoog.inherits(sre.SpeechRuleFunctions.ContextFunctions,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){return a.match(new RegExp(\"^\"+this.prefix_))?!0:(console.error(\"FunctionError: Invalid function name. Expected prefix \"+this.prefix_),!1)};sre.SpeechRuleContext=function(){this.customQueries=new sre.SpeechRuleFunctions.CustomQueries;this.customStrings=new sre.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new sre.SpeechRuleFunctions.ContextFunctions};sre.SpeechRuleContext.prototype.applyCustomQuery=function(a,b){return(b=this.customQueries.lookup(b))?b(a):null};sre.SpeechRuleContext.prototype.applySelector=function(a,b){return this.applyCustomQuery(a,b)||sre.XpathUtil.evalXPath(b,a)};\nsre.SpeechRuleContext.prototype.applyQuery=function(a,b){a=this.applySelector(a,b);return 0<a.length?a[0]:null};sre.SpeechRuleContext.prototype.applyConstraint=function(a,b){return!!this.applyQuery(a,b)||sre.XpathUtil.evaluateBoolean(b,a)};sre.SpeechRuleContext.prototype.constructString=function(a,b){if(!b)return\"\";if('\"'==b.charAt(0))return b.slice(1,-1);var c=this.customStrings.lookup(b);return c?c(a):sre.XpathUtil.evaluateString(b,a)};\nsre.SpeechRuleContext.prototype.parse=function(a){for(var b=0,c;c=a[b];b++)({CQF:this.customQueries,CSF:this.customStrings,CTXF:this.contextFunctions})[c[0]].add(c[1],c[2])};sre.SpeechRuleEvaluator=function(){};sre.SpeechRuleEvaluator.prototype.evaluateDefault=goog.abstractMethod;sre.SpeechRuleStore=function(){};sre.SpeechRuleStore.prototype.addRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.deleteRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findAllRules=goog.abstractMethod;sre.SpeechRuleStore.prototype.lookupRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.defineRule=goog.abstractMethod;sre.TrieNode=function(){};sre.TrieNode.prototype.getConstraint=function(){};sre.TrieNode.prototype.getKind=function(){};sre.TrieNode.prototype.applyTest=function(a){};sre.TrieNode.prototype.addChild=function(a){};sre.TrieNode.prototype.getChild=function(a){};sre.TrieNode.prototype.getChildren=function(){};sre.TrieNode.prototype.findChildren=function(a){};sre.TrieNode.Kind={ROOT:\"root\",DYNAMIC:\"dynamic\",QUERY:\"query\",BOOLEAN:\"boolean\",STATIC:\"static\"};sre.AbstractTrieNode=function(a,b){this.constraint=a;this.test=b;this.children_={};this.kind=sre.TrieNode.Kind.ROOT};sre.AbstractTrieNode.prototype.getConstraint=function(){return this.constraint};sre.AbstractTrieNode.prototype.getKind=function(){return this.kind};sre.AbstractTrieNode.prototype.applyTest=function(a){return this.test(a)};sre.AbstractTrieNode.prototype.addChild=function(a){var b=a.getConstraint(),c=this.children_[b];this.children_[b]=a;return c};\nsre.AbstractTrieNode.prototype.getChild=function(a){return this.children_[a]};sre.AbstractTrieNode.prototype.getChildren=function(){var a=[],b;for(b in this.children_)a.push(this.children_[b]);return a};sre.AbstractTrieNode.prototype.findChildren=function(a){var b=[],c;for(c in this.children_){var d=this.children_[c];d.applyTest(a)&&b.push(d)}return b};sre.AbstractTrieNode.prototype.toString=function(){return this.constraint};\nsre.StaticTrieNode=function(a,b){sre.AbstractTrieNode.call(this,a,b);this.kind=sre.TrieNode.Kind.STATIC;this.rule_=null};goog.inherits(sre.StaticTrieNode,sre.AbstractTrieNode);sre.StaticTrieNode.prototype.getRule=function(){return this.rule_};sre.StaticTrieNode.prototype.setRule=function(a){this.rule_&&sre.Debugger.getInstance().output(\"Replacing rule \"+this.rule_+\" with \"+a);this.rule_=a};\nsre.StaticTrieNode.prototype.toString=function(){return this.getRule()?this.constraint+\"\\n==> \"+this.getRule().action:this.constraint};sre.TrieNodeFactory={};sre.TrieNodeFactory.getNode=function(a,b,c){switch(a){case sre.TrieNode.Kind.ROOT:return new sre.RootTrieNode;case sre.TrieNode.Kind.DYNAMIC:return new sre.DynamicTrieNode(b);case sre.TrieNode.Kind.QUERY:return new sre.QueryTrieNode(b,c);case sre.TrieNode.Kind.BOOLEAN:return new sre.BooleanTrieNode(b,c);default:return null}};sre.RootTrieNode=function(){sre.AbstractTrieNode.call(this,\"\",function(){return!0});this.kind=sre.TrieNode.Kind.ROOT};goog.inherits(sre.RootTrieNode,sre.AbstractTrieNode);\nsre.DynamicTrieNode=function(a){sre.AbstractTrieNode.call(this,a,function(b){return b===a});this.kind=sre.TrieNode.Kind.DYNAMIC};goog.inherits(sre.DynamicTrieNode,sre.AbstractTrieNode);\nsre.TrieNodeFactory.constraintTest_=function(a){if(a.match(/^self::\\*$/))return function(f){return!0};if(a.match(/^self::\\w+$/)){var b=a.slice(6).toUpperCase();return function(f){return f.tagName&&sre.DomUtil.tagName(f)===b}}if(a.match(/^self::\\w+:\\w+$/)){a=a.split(\":\");var c=sre.XpathUtil.resolveNameSpace(a[2]);if(!c)return null;b=a[3].toUpperCase();return function(f){return f.localName&&f.localName.toUpperCase()===b&&f.namespaceURI===c}}if(a.match(/^@\\w+$/)){var d=a.slice(1);return function(f){return f.hasAttribute&&\nf.hasAttribute(d)}}if(a.match(/^@\\w+=\"[\\w\\d ]+\"$/)){a=a.split(\"=\");d=a[0].slice(1);var e=a[1].slice(1,-1);return function(f){return f.hasAttribute&&f.hasAttribute(d)&&f.getAttribute(d)===e}}return a.match(/^@\\w+!=\"[\\w\\d ]+\"$/)?(a=a.split(\"!=\"),d=a[0].slice(1),e=a[1].slice(1,-1),function(f){return!f.hasAttribute||!f.hasAttribute(d)||f.getAttribute(d)!==e}):a.match(/^contains\\(\\s*@grammar\\s*,\\s*\"[\\w\\d ]+\"\\s*\\)$/)?(a=a.split('\"'),e=a[1],function(f){return sre.Grammar.getInstance().getParameter(e)}):\na.match(/^not\\(\\s*contains\\(\\s*@grammar\\s*,\\s*\"[\\w\\d ]+\"\\s*\\)\\s*\\)$/)?(a=a.split('\"'),e=a[1],function(f){return!sre.Grammar.getInstance().getParameter(e)}):null};sre.QueryTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.QUERY};goog.inherits(sre.QueryTrieNode,sre.StaticTrieNode);sre.QueryTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyQuery(a,this.constraint)===a};\nsre.BooleanTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.BOOLEAN};goog.inherits(sre.BooleanTrieNode,sre.StaticTrieNode);sre.BooleanTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyConstraint(a,this.constraint)};sre.Trie=function(a){this.store=a;this.root=sre.TrieNodeFactory.getNode(sre.TrieNode.Kind.ROOT,\"\",this.store.context)};sre.Trie.prototype.addRule=function(a){for(var b=this.root,c=a.context,d=a.dynamicCstr.getValues(),e=0,f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.DYNAMIC,c);b=this.addNode_(b,a.precondition.query,sre.TrieNode.Kind.QUERY,c);d=a.precondition.constraints;e=0;for(f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.BOOLEAN,c);b.setRule(a)};\nsre.Trie.prototype.addNode_=function(a,b,c,d){var e=a.getChild(b);e||(e=sre.TrieNodeFactory.getNode(c,b,d),a.addChild(e));return e};\nsre.Trie.prototype.lookupRules=function(a,b){for(var c=[this.root],d=[];b.length;){for(var e=b.shift(),f=[];c.length;){var g=c.shift();g=g.getChildren();g.forEach(function(h){h.getKind()===sre.TrieNode.Kind.DYNAMIC&&-1===e.indexOf(h.getConstraint())||f.push(h)})}c=f.slice()}for(;c.length;)g=c.shift(),g.getRule&&(b=g.getRule())&&d.push(b),g=g.findChildren(a),c=c.concat(g);return d};\nsre.Trie.prototype.hasSubtrie=function(a){for(var b=this.root,c=0,d=a.length;c<d;c++)if(b=b.getChild(a[c]),!b)return!1;return!0};sre.Trie.prototype.toString=function(){return sre.Trie.printWithDepth_(this.root,0,\"\")};sre.Trie.prototype.collectRules=function(){return sre.Trie.collectRules_(this.root)};sre.Trie.prototype.order=function(){return sre.Trie.order_(this.root)};\nsre.Trie.printWithDepth_=function(a,b,c){var d=Array(b+2).join(b)+\": \";c+=d+a.toString()+\"\\n\";a=a.getChildren();d=0;for(var e;e=a[d];d++)c=sre.Trie.printWithDepth_(e,b+1,c);return c};sre.Trie.order_=function(a){a=a.getChildren();if(!a.length)return 0;var b=Math.max.apply(null,a.map(sre.Trie.order_));return Math.max(a.length,b)};\nsre.Trie.collectRules_=function(a){var b=[];for(a=[a];a.length;){var c=a.shift();if(c.getKind()===sre.TrieNode.Kind.QUERY||c.getKind()===sre.TrieNode.Kind.BOOLEAN){var d=c.getRule();d&&b.unshift(d)}a=a.concat(c.getChildren())}return b};sre.Trie.prototype.enumerate=function(a){return this.enumerate_(this.root,a)};\nsre.Trie.prototype.enumerate_=function(a,b){b=b||{};a=a.getChildren();for(var c=0,d;d=a[c];c++)d.kind===sre.TrieNode.Kind.DYNAMIC&&(b[d.getConstraint()]=this.enumerate_(d,b[d.getConstraint()]));return b};sre.BaseRuleStore=function(){this.context=new sre.SpeechRuleContext;this.customQueries=this.context.customQueries;this.customStrings=this.context.customStrings;this.contextFunctions=this.context.contextFunctions;this.speechRules_=[];this.trie=new sre.Trie(this);this.parseOrder=sre.DynamicCstr.DEFAULT_ORDER;this.parser=new sre.DynamicCstr.Parser(this.parseOrder);this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];\nthis.domain=null;this.initialized=!1;this.parseMethods={Rule:goog.bind(this.defineRule,this)}};sre.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=sre.DomUtil.NodeType.ELEMENT_NODE&&a.nodeType!=sre.DomUtil.NodeType.TEXT_NODE)return null;a=this.trie.lookupRules(a,b.allProperties());return 0<a.length?this.pickMostConstraint_(b,a):null};\nsre.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=sre.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new sre.SpeechRule.Precondition(d,g),k=this.parseCstr(b);var l=new sre.SpeechRule(a,k,h,f)}catch(m){if(\"RuleError\"==m.name)return console.error(\"Rule Error \",d,\"(\"+b+\"):\",m.message),null;throw m;}this.addRule(l);return l};sre.BaseRuleStore.prototype.addRule=function(a){a.context=this.context;this.trie.addRule(a);this.speechRules_.unshift(a)};\nsre.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};sre.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};sre.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};sre.BaseRuleStore.prototype.evaluateDefault=function(a){return[sre.AuditoryDescription.create({text:a.textContent})]};\nsre.BaseRuleStore.prototype.debugSpeechRule=function(a,b){var c=a.precondition,d=a.context.applyQuery(b,c.query);sre.Debugger.getInstance().output(c.query,d?d.toString():d);c.constraints.forEach(goog.bind(function(e){sre.Debugger.getInstance().output(e,a.context.applyConstraint(b,e))},this))};sre.BaseRuleStore.prototype.initialize=goog.abstractMethod;\nsre.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&a.dynamicCstr.equal(c.dynamicCstr)&&sre.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};\nsre.BaseRuleStore.strongQuery_=function(a,b){a=a.precondition.query;b=b.precondition.query;var c=a.match(/^self::\\*\\[@[\\w-]+\\]$/),d=b.match(/^self::\\*\\[@[\\w-]+\\]$/);if(c&&d)return 0;if(c)return(b=b.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/))?1:-1;if(d)return(a=a.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/))?-1:1;a=a.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/);b=b.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/);return a&&b?0:a?-1:b?1:0};\nsre.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){var c=sre.Engine.getInstance().comparator;b.sort(function(d,e){return c.compare(d.dynamicCstr,e.dynamicCstr)||sre.BaseRuleStore.strongQuery_(d,e)||e.precondition.constraints.length-d.precondition.constraints.length});sre.Debugger.getInstance().generateOutput(goog.bind(function(){return b.map(function(d){return d.name+\"(\"+d.dynamicCstr.toString()+\")\"})},this));return b[0]};\nsre.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};sre.BaseRuleStore.comparePreconditions_=function(a,b){a=a.precondition;b=b.precondition;return a.query!=b.query?!1:sre.BaseRuleStore.compareStaticConstraints_(a.constraints,b.constraints)};sre.BaseRuleStore.prototype.getSpeechRules=function(){return this.speechRules_};sre.BaseRuleStore.prototype.setSpeechRules=function(a){this.speechRules_=a};\nsre.BaseRuleStore.prototype.parseCstr=function(a){return this.parser.parse(this.locale+\".\"+this.modality+(this.domain?\".\"+this.domain:\"\")+\".\"+a)};sre.BaseRuleStore.prototype.parse=function(a){this.modality=a.modality||this.modality;this.locale=a.locale||this.locale;this.domain=a.domain||this.domain;this.context.parse(a.functions||[]);this.parseRules(a.rules||[])};sre.BaseRuleStore.prototype.parseRules=function(a){for(var b=0,c;c=a[b];b++){var d=c[0],e=this.parseMethods[d];d&&e&&e.apply(this,c.slice(1))}};sre.MathStore=function(){sre.BaseRuleStore.call(this);this.initializer=[];this.parseMethods.Alias=goog.bind(this.defineRuleAlias,this);this.parseMethods.Aliases=goog.bind(this.defineRulesAlias,this);this.parseMethods.UniqueAlias=goog.bind(this.defineUniqueRuleAlias,this);this.parseMethods.SpecializedRule=goog.bind(this.defineSpecialisedRule,this)};goog.inherits(sre.MathStore,sre.BaseRuleStore);\nsre.MathStore.prototype.initialize=function(){if(!this.initialized){for(var a=0,b;b=this.initializer[a];a++)b(this);this.setSpeechRules(this.trie.collectRules());this.initialized=!0}};\nsre.MathStore.prototype.defineUniqueRuleAlias=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError(\"Rule named \"+a+\" with style \"+b+\" does not exist.\");this.addAlias_(f,c,Array.prototype.slice.call(arguments,3))};\nsre.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(e){return e.name==a});if(!d)throw new sre.SpeechRule.OutputError(\"Rule with named \"+a+\" does not exist.\");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};\nsre.MathStore.prototype.defineRulesAlias=function(a,b,c){var d=this.findAllRules(function(g){return g.name==a});if(0==d.length)throw new sre.SpeechRule.OutputError(\"Rule with name \"+a+\" does not exist.\");var e=Array.prototype.slice.call(arguments,2),f=[];d.forEach(goog.bind(function(g){a:{var h=g.dynamicCstr.toString();for(var k=g.action.toString(),l=0,m;m=f[l];l++)if(m.action===k&&m.cstr===h){h=!1;break a}f.push({cstr:h,action:k});h=!0}h&&this.addAlias_(g,b,e)},this))};\nsre.MathStore.prototype.addAlias_=function(a,b,c){b=new sre.SpeechRule.Precondition(b,c);b=new sre.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};\nsre.MathStore.prototype.defineSpecialisedRule=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError(\"Rule named \"+a+\" with style \"+b+\" does not exist.\");b=this.parseCstr(c);d=d?sre.SpeechRule.Action.fromString(d):f.action;f=new sre.SpeechRule(f.name,b,f.precondition,d);this.addRule(f)};sre.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};\nsre.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\\s+$/))return b;var c=this.matchNumber_(a);if(c&&c.length===a.length)return b.push(this.evaluate_(c.number)),b;a=sre.BaseUtil.removeEmpty(a.replace(/\\s/g,\" \").split(\" \"));for(var d=0;c=a[d];d++)if(1==c.length)b.push(this.evaluate_(c));else if(c.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+$\")))b.push(this.evaluate_(c));else for(var e=c;e;){c=this.matchNumber_(e);var f=e.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+\"));\nc?(b.push(this.evaluate_(c.number)),e=e.substring(c.length)):f?(b.push(this.evaluate_(f[0])),e=e.substring(f[0].length)):(c=e[0].charCodeAt(0),55296<=c&&56319>=c&&1<e.length&&!isNaN(e.charCodeAt(1))?(b.push(this.evaluate_(e.slice(0,2))),e=e.substring(2)):(b.push(this.evaluate_(e[0])),e=e.substring(1)))}return b};\nsre.MathStore.prototype.matchNumber_=function(a){var b=a.match(new RegExp(\"^\"+sre.Messages.REGEXP.NUMBER)),c=a.match(new RegExp(\"^\"+sre.Locale.en.REGEXP.NUMBER));if(!b&&!c)return null;var d=c&&c[0]===a;return b&&b[0]===a||!d?{number:b[0],length:b[0].length}:{number:c[0].replace(new RegExp(sre.Locale.en.REGEXP.DIGIT_GROUP,\"g\"),\"X\").replace(new RegExp(sre.Locale.en.REGEXP.DECIMAL_MARK,\"g\"),sre.Messages.REGEXP.DECIMAL_MARK).replace(/X/g,sre.Messages.REGEXP.DIGIT_GROUP.replace(/\\\\/g,\"\")),length:c[0].length}};\nsre.MathStore.prototype.evaluate_=function(a){return sre.AuditoryDescription.create({text:a},{adjust:!0,translate:!0})};sre.MathStore.prototype.parse=function(a){sre.MathStore.superClass_.parse.call(this,a);this.initializer=a.initialize||[]};sre.BrailleStore=function(){sre.MathStore.call(this);this.modality=\"braille\"};goog.inherits(sre.BrailleStore,sre.MathStore);\nsre.BrailleStore.prototype.evaluateDefault=function(a){a=a.textContent.slice(0);var b=[];if(a.match(/^\\s+$/))return b;for(;a;){var c=a[0],d=c.charCodeAt(0);55296<=d&&56319>=d&&1<a.length&&!isNaN(a.charCodeAt(1))?(b.push(sre.AuditoryDescription.create({text:a.slice(0,2)},{adjust:!0,translate:!0})),a=a.substring(2)):(b.push(sre.AuditoryDescription.create({text:c},{adjust:!0,translate:!0})),a=a.substring(1))}return b};sre.ClearspeakPreferences=function(a,b){sre.DynamicCstr.call(this,a);this.preference=b};goog.inherits(sre.ClearspeakPreferences,sre.DynamicCstr);sre.ClearspeakPreferences.prototype.equal=function(a){if(!sre.ClearspeakPreferences.superClass_.equal.call(this,a))return!1;var b=Object.keys(this.preference);a=a.preference;if(b.length!==Object.keys(a).length)return!1;for(var c=0,d;d=b[c];c++)if(this.preference[d]!==a[d])return!1;return!0};sre.ClearspeakPreferences.AUTO=\"Auto\";\nsre.ClearspeakPreferences.PREFERENCES=new sre.DynamicProperties({AbsoluteValue:[\"Auto\",\"AbsEnd\",\"Cardinality\",\"Determinant\"],Bar:[\"Auto\",\"Conjugate\"],Caps:[\"Auto\",\"SayCaps\"],CombinationPermutation:[\"Auto\",\"ChoosePermute\"],Currency:[\"Auto\",\"Position\",\"Prefix\"],Ellipses:[\"Auto\",\"AndSoOn\"],Exponent:[\"Auto\",\"AfterPower\",\"Ordinal\",\"OrdinalPower\",\"Exponent\"],Fraction:\"Auto EndFrac FracOver General GeneralEndFrac Ordinal Over OverEndFrac Per\".split(\" \"),Functions:[\"Auto\",\"None\",\"Reciprocal\"],ImpliedTimes:[\"Auto\",\n\"MoreImpliedTimes\",\"None\"],Log:[\"Auto\",\"LnAsNaturalLog\"],Matrix:\"Auto Combinatoric EndMatrix EndVector SilentColNum SpeakColNum Vector\".split(\" \"),MultiLineLabel:\"Auto Case Constraint Equation Line None Row Step\".split(\" \"),MultiLineOverview:[\"Auto\",\"None\"],MultiLinePausesBetweenColumns:[\"Auto\",\"Long\",\"Short\"],MultsymbolDot:[\"Auto\",\"Dot\"],MultsymbolX:[\"Auto\",\"By\",\"Cross\"],Paren:\"Auto CoordPoint Interval Silent Speak SpeakNestingLevel\".split(\" \"),Prime:[\"Auto\",\"Angle\",\"Length\"],Roots:[\"Auto\",\"PosNegSqRoot\",\n\"PosNegSqRootEnd\",\"RootEnd\"],SetMemberSymbol:[\"Auto\",\"Belongs\",\"Element\",\"Member\"],Sets:[\"Auto\",\"SilentBracket\",\"woAll\"],TriangleSymbol:[\"Auto\",\"Delta\"],Trig:[\"Auto\",\"ArcTrig\",\"TrigInverse\",\"Reciprocal\"],VerticalLine:[\"Auto\",\"Divides\",\"Given\",\"SuchThat\"]});\nsre.ClearspeakPreferences.comparator=function(){return new sre.ClearspeakPreferences.Comparator(sre.Engine.getInstance().dynamicCstr,sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]))};\nsre.ClearspeakPreferences.Comparator=function(a,b){sre.DynamicCstr.DefaultComparator.call(this,a,b);this.preference=a.preference||{}};goog.inherits(sre.ClearspeakPreferences.Comparator,sre.DynamicCstr.DefaultComparator);sre.ClearspeakPreferences.Comparator.prototype.match=function(a){if(!sre.ClearspeakPreferences.Comparator.superClass_.match.call(this,a))return!1;if(!a.preference)return!0;for(var b=Object.keys(a.preference),c=0,d;d=b[c];c++)if(this.preference[d]!==a.preference[d])return!1;return!0};\nsre.ClearspeakPreferences.Comparator.prototype.compare=function(a,b){var c=sre.ClearspeakPreferences.Comparator.superClass_.compare.call(this,a,b);if(0!==c)return c;if(!a.preference&&b.preference)return 1;if(a.preference&&!b.preference)return-1;if(!a.preference&&!b.preference)return 0;a=Object.keys(a.preference).length;b=Object.keys(b.preference).length;return a>b?-1:a<b?1:0};\nsre.ClearspeakPreferences.Parser=function(){sre.DynamicCstr.Parser.call(this,[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE])};goog.inherits(sre.ClearspeakPreferences.Parser,sre.DynamicCstr.Parser);\nsre.ClearspeakPreferences.Parser.prototype.parse=function(a){var b=sre.ClearspeakPreferences.Parser.superClass_.parse.call(this,a);a=b.getValue(sre.DynamicCstr.Axis.STYLE);b=b.getValue(sre.DynamicCstr.Axis.LOCALE);var c={};a!==sre.DynamicCstr.DEFAULT_VALUE&&(c=this.fromPreference(a),a=this.toPreference(c));return new sre.ClearspeakPreferences({locale:b,modality:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],domain:\"clearspeak\",style:a},c)};\nsre.ClearspeakPreferences.Parser.prototype.fromPreference=function(a){return sre.ClearspeakPreferences.fromPreference(a)};sre.ClearspeakPreferences.fromPreference=function(a){a=a.split(\":\");for(var b={},c=sre.ClearspeakPreferences.PREFERENCES.getProperties(),d=Object.keys(c),e=0,f;f=a[e];e++)if(f=f.split(\"_\"),-1!==d.indexOf(f[0])){var g=f[1];g&&g!==sre.ClearspeakPreferences.AUTO&&-1!==c[f[0]].indexOf(g)&&(b[f[0]]=f[1])}return b};sre.ClearspeakPreferences.Parser.prototype.toPreference=function(a){return sre.ClearspeakPreferences.toPreference(a)};\nsre.ClearspeakPreferences.toPreference=function(a){for(var b=Object.keys(a),c=[],d=0;d<b.length;d++)c.push(b[d]+\"_\"+a[b[d]]);return c.length?c.join(\":\"):sre.DynamicCstr.DEFAULT_VALUE};sre.ClearspeakPreferences.LOCALE_PREFERENCES=null;\nsre.ClearspeakPreferences.getLocalePreferences=function(a){sre.ClearspeakPreferences.LOCALE_PREFERENCES||(a=a||sre.MathCompoundStore.getInstance().enumerate(sre.SpeechRuleEngine.getInstance().enumerate()),sre.ClearspeakPreferences.LOCALE_PREFERENCES=sre.ClearspeakPreferences.getLocalePreferences_(a));return sre.ClearspeakPreferences.LOCALE_PREFERENCES};\nsre.ClearspeakPreferences.getLocalePreferences_=function(a){var b={},c;for(c in a)if(a[c].speech&&a[c].speech.clearspeak){var d=Object.keys(a[c].speech.clearspeak),e=b[c]={},f;for(f in sre.ClearspeakPreferences.PREFERENCES.getProperties()){var g=sre.ClearspeakPreferences.PREFERENCES.getProperties()[f],h=[f+\"_Auto\"];if(g){g=$jscomp.makeIterator(g);for(var k=g.next();!k.done;k=g.next())k=k.value,-1!==d.indexOf(f+\"_\"+k)&&h.push(f+\"_\"+k)}e[f]=h}}return b};\nsre.ClearspeakPreferences.getSpeechExplorer=function(a){return(a=a.attached)&&a.length?a.find(function(b){return b.speechGenerator&&\"speech\"===b.speechGenerator.getOptions().modality}):null};\nsre.ClearspeakPreferences.smartPreferences=function(a,b){b=sre.ClearspeakPreferences.getLocalePreferences()[b];if(!b)return[];a=sre.ClearspeakPreferences.getSpeechExplorer(a);if(!a)return[{type:\"radio\",content:\"Standard\",id:\"clearspeak-default\",variable:\"speechRules\"}];a=sre.ClearspeakPreferences.relevantPreferences(a.walker.getFocus().getSemanticPrimary());var c=sre.Engine.DOMAIN_TO_STYLES.clearspeak;return[{type:\"radio\",content:\"No Preferences\",id:\"clearspeak-default\",variable:\"speechRules\"},{type:\"radio\",\ncontent:\"Current Preferences\",id:\"clearspeak-\"+c,variable:\"speechRules\"},{type:\"rule\"},{type:\"label\",content:\"Preferences for \"+a},{type:\"rule\"}].concat(b[a].map(function(d){d=d.split(\"_\");return{type:\"radio\",content:d[1],id:\"clearspeak-\"+sre.ClearspeakPreferences.addPreference(c,d[0],d[1]),variable:\"speechRules\"}}))};sre.ClearspeakPreferences.relevantPreferences=function(a){var b=sre.ClearspeakPreferences.SEMANTIC_MAPPING_[a.type];return b?b[a.role]||b[\"\"]||\"ImpliedTimes\":\"ImpliedTimes\"};\nsre.ClearspeakPreferences.REVERSE_MAPPING_=[[\"AbsoluteValue\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.NEUTRAL],[\"Bar\",sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Role.OVERACCENT],[\"Caps\",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.LATINLETTER],[\"CombinationPermutation\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.UNKNOWN],[\"Ellipses\",sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Role.ELLIPSIS],[\"Exponent\",sre.SemanticAttr.Type.SUPERSCRIPT,\"\"],[\"Fraction\",sre.SemanticAttr.Type.FRACTION,\n\"\"],[\"Functions\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.SIMPLEFUNC],[\"ImpliedTimes\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.IMPLICIT],[\"Log\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],[\"Matrix\",sre.SemanticAttr.Type.MATRIX,\"\"],[\"Matrix\",sre.SemanticAttr.Type.VECTOR,\"\"],[\"MultiLineLabel\",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",\nsre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],[\"MultiLineLabel\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],[\"MultiLineLabel\",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",sre.SemanticAttr.Type.CASES,\nsre.SemanticAttr.Role.TABLE],[\"MultsymbolDot\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],[\"MultsymbolX\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],[\"Paren\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.LEFTRIGHT],[\"Prime\",sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Role.PRIME],[\"Roots\",sre.SemanticAttr.Type.ROOT,\"\"],[\"Roots\",sre.SemanticAttr.Type.SQRT,\"\"],[\"SetMemberSymbol\",sre.SemanticAttr.Type.RELATION,sre.SemanticAttr.Role.ELEMENT],\n[\"Sets\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.SETEXT],[\"TriangleSymbol\",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.GREEKLETTER],[\"Trig\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],[\"VerticalLine\",sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Role.VBAR]];sre.ClearspeakPreferences.SEMANTIC_MAPPING_=function(){for(var a={},b=0,c;c=sre.ClearspeakPreferences.REVERSE_MAPPING_[b];b++){var d=c[0],e=a[c[1]];e||(e={},a[c[1]]=e);e[c[2]]=d}return a}();\nsre.ClearspeakPreferences.findPreference=function(a,b){return\"default\"===a?sre.ClearspeakPreferences.AUTO:sre.ClearspeakPreferences.fromPreference(a)[b]||sre.ClearspeakPreferences.AUTO};sre.ClearspeakPreferences.addPreference=function(a,b,c){if(\"default\"===a)return b+\"_\"+c;a=sre.ClearspeakPreferences.fromPreference(a);a[b]=c;return sre.ClearspeakPreferences.toPreference(a)};sre.Engine.getInstance().comparators.clearspeak=sre.ClearspeakPreferences.comparator;\nsre.Engine.getInstance().parsers.clearspeak=new sre.ClearspeakPreferences.Parser;sre.AlphabetGenerator={};sre.AlphabetGenerator.Font={BOLD:\"bold\",BOLDFRAKTUR:\"bold-fraktur\",BOLDITALIC:\"bold-italic\",BOLDSCRIPT:\"bold-script\",DOUBLESTRUCK:\"double-struck\",FULLWIDTH:\"fullwidth\",FRAKTUR:\"fraktur\",ITALIC:\"italic\",MONOSPACE:\"monospace\",NORMAL:\"normal\",SCRIPT:\"script\",SANSSERIF:\"sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLD:\"sans-serif-bold\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\"};\nsre.AlphabetGenerator.Embellish={SUPER:\"super\",SUB:\"sub\",CIRCLED:\"circled\",PARENTHESIZED:\"parenthesized\",PERIOD:\"period\",NEGATIVECIRCLED:\"negative-circled\",DOUBLECIRCLED:\"double-circled\",CIRCLEDSANSSERIF:\"circled-sans-serif\",NEGATIVECIRCLEDSANSSERIF:\"negative-circled-sans-serif\",COMMA:\"comma\",SQUARED:\"squared\",NEGATIVESQUARED:\"negative-squared\"};sre.AlphabetGenerator.Base={LATINCAP:\"latinCap\",LATINSMALL:\"latinSmall\",GREEKCAP:\"greekCap\",GREEKSMALL:\"greekSmall\",DIGIT:\"digit\"};\nsre.AlphabetGenerator.Domains_={small:[\"default\"],capital:[\"default\"],digit:[\"default\"]};\nsre.AlphabetGenerator.makeDomains_=function(){var a=sre.Messages.ALPHABET_PREFIXES,b=sre.Messages.ALPHABET_TRANSFORMERS,c=function(d,e){var f={};Object.keys(d).forEach(function(g){f[g]=!0});Object.keys(e).forEach(function(g){f[g]=!0});return Object.keys(f)};sre.AlphabetGenerator.Domains_.small=c(a.smallPrefix,b.letter);sre.AlphabetGenerator.Domains_.capital=c(a.capPrefix,b.letter);sre.AlphabetGenerator.Domains_.digit=c(a.digitPrefix,b.digit)};\nsre.AlphabetGenerator.generate=function(a,b){var c=sre.Engine.getInstance().locale;sre.Engine.getInstance().locale=a;sre.L10n.setLocale();b.addSymbolRules({locale:a});sre.AlphabetGenerator.makeDomains_();a=sre.AlphabetGenerator.INTERVALS;for(var d=0,e;e=a[d];d++){var f=sre.AlphabetGenerator.makeInterval(e.interval,e.subst),g=f.map(function(h){return sre.SemanticUtil.numberToUnicode(parseInt(h,16))});\"offset\"in e?sre.AlphabetGenerator.numberRules(b,f,g,e.font,e.category,e.offset||0):sre.AlphabetGenerator.alphabetRules(b,\nf,g,sre.Messages.ALPHABETS[e.base],e.font,e.category,!!e.capital)}sre.Engine.getInstance().locale=c;sre.L10n.setLocale()};sre.AlphabetGenerator.makeInterval=function(a,b){var c=parseInt(a[0],16);a=parseInt(a[1],16);for(var d=[];c<=a;c++){var e=c.toString(16).toUpperCase();e=3<e.length?e:(\"000\"+e).slice(-4);!1!==b[e]&&(e=b[e]||e,d.push(e))}return d};\nsre.AlphabetGenerator.getFont=function(a){a=\"normal\"===a||\"fullwidth\"===a?\"\":sre.Messages.FONT[a]||sre.Messages.EMBELLISH[a]||\"\";return\"string\"===typeof a?{font:a,combiner:sre.Messages.ALPHABET_COMBINER}:{font:a[0],combiner:a[1]}};\nsre.AlphabetGenerator.alphabetRules=function(a,b,c,d,e,f,g){e=sre.AlphabetGenerator.getFont(e);for(var h=0,k,l,m;k=b[h],l=c[h],m=d[h];h++)sre.AlphabetGenerator.makeLetter(a,e.combiner,k,l,m,e.font,g?sre.Messages.ALPHABET_PREFIXES.capPrefix:sre.Messages.ALPHABET_PREFIXES.smallPrefix,f,sre.Messages.ALPHABET_TRANSFORMERS.letter,g?sre.AlphabetGenerator.Domains_.capital:sre.AlphabetGenerator.Domains_.small)};\nsre.AlphabetGenerator.numberRules=function(a,b,c,d,e,f){d=sre.AlphabetGenerator.getFont(d);for(var g=0,h,k;h=b[g],k=c[g];g++)sre.AlphabetGenerator.makeLetter(a,d.combiner,h,k,g+f,d.font,sre.Messages.ALPHABET_PREFIXES.digitPrefix,e,sre.Messages.ALPHABET_TRANSFORMERS.digit,sre.AlphabetGenerator.Domains_.digit)};\nsre.AlphabetGenerator.makeLetter=function(a,b,c,d,e,f,g,h,k,l){for(var m=0,n;n=l[m];m++){var p=n in g?g[n]:g[\"default\"];a.defineRule(c.toString(),n,\"default\",h,d,b((n in k?k[n]:k[\"default\"])(e),f,p))}};\nsre.AlphabetGenerator.INTERVALS=[{interval:[\"1D400\",\"1D419\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D41A\",\"1D433\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D56C\",\"1D585\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:[\"1D586\",\"1D59F\"],base:sre.AlphabetGenerator.Base.LATINSMALL,\nsubst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:[\"1D468\",\"1D481\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D482\",\"1D49B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D4D0\",\"1D4E9\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},\n{interval:[\"1D4EA\",\"1D503\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},{interval:[\"1D538\",\"1D551\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D53A\":\"2102\",\"1D53F\":\"210D\",\"1D545\":\"2115\",\"1D547\":\"2119\",\"1D548\":\"211A\",\"1D549\":\"211D\",\"1D551\":\"2124\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D552\",\"1D56B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",\nfont:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D504\",\"1D51D\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D506\":\"212D\",\"1D50B\":\"210C\",\"1D50C\":\"2111\",\"1D515\":\"211C\",\"1D51D\":\"2128\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:[\"1D51E\",\"1D537\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:[\"FF21\",\"FF3A\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",\nfont:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"FF41\",\"FF5A\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"1D434\",\"1D44D\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D44E\",\"1D467\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{\"1D455\":\"210E\"},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D670\",\n\"1D689\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"1D68A\",\"1D6A3\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"0041\",\"005A\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"0061\",\"007A\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,\ncategory:\"Ll\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"1D49C\",\"1D4B5\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D49D\":\"212C\",\"1D4A0\":\"2130\",\"1D4A1\":\"2131\",\"1D4A3\":\"210B\",\"1D4A4\":\"2110\",\"1D4A7\":\"2112\",\"1D4A8\":\"2133\",\"1D4AD\":\"211B\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SCRIPT},{interval:[\"1D4B6\",\"1D4CF\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{\"1D4BA\":\"212F\",\"1D4BC\":\"210A\",\"1D4C4\":\"2134\"},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SCRIPT},\n{interval:[\"1D5A0\",\"1D5B9\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D5BA\",\"1D5D3\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D608\",\"1D621\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:[\"1D622\",\"1D63B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,\nsubst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:[\"1D5D4\",\"1D5ED\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D5EE\",\"1D607\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D63C\",\"1D655\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},\n{interval:[\"1D656\",\"1D66F\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:[\"0391\",\"03A9\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{\"03A2\":\"03F4\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"03B0\",\"03D0\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{\"03B0\":\"2207\",\"03CA\":\"2202\",\"03CB\":\"03F5\",\"03CC\":\"03D1\",\"03CD\":\"03F0\",\"03CE\":\"03D5\",\"03CF\":\"03F1\",\"03D0\":\"03D6\"},\ncapital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"1D6A8\",\"1D6C0\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D6C1\",\"1D6E1\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D6E2\",\"1D6FA\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D6FB\",\n\"1D71B\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D71C\",\"1D734\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D735\",\"1D755\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D756\",\"1D76E\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,\ncategory:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D76F\",\"1D78F\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D790\",\"1D7A8\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:[\"1D7A9\",\"1D7C9\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},\n{interval:[\"0030\",\"0039\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"2070\",\"2079\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2071:\"00B9\",2072:\"00B2\",2073:\"00B3\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.SUPER},{interval:[\"2080\",\"2089\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.SUB},{interval:[\"245F\",\"2473\"],base:sre.AlphabetGenerator.Base.DIGIT,\nsubst:{\"245F\":\"24EA\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"3251\",\"325F\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:21,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"32B1\",\"32BF\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:36,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"2474\",\"2487\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:1,category:\"No\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},\n{interval:[\"2487\",\"249B\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2487:\"1F100\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.PERIOD},{interval:[\"2775\",\"277F\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2775:\"24FF\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:[\"24EB\",\"24F4\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:11,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:[\"24F5\",\"24FE\"],base:sre.AlphabetGenerator.Base.DIGIT,\nsubst:{},offset:1,category:\"No\",font:sre.AlphabetGenerator.Embellish.DOUBLECIRCLED},{interval:[\"277F\",\"2789\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{\"277F\":\"1F10B\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLEDSANSSERIF},{interval:[\"2789\",\"2793\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2789:\"1F10C\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLEDSANSSERIF},{interval:[\"FF10\",\"FF19\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,\ncategory:\"Nd\",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"1D7CE\",\"1D7D7\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D7D8\",\"1D7E1\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D7E2\",\"1D7EB\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D7EC\",\"1D7F5\"],\nbase:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D7F6\",\"1D7FF\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"1F101\",\"1F10A\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.COMMA},{interval:[\"24B6\",\"24CF\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",\nfont:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"24D0\",\"24E9\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"So\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"1F110\",\"1F129\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},{interval:[\"249C\",\"24B5\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"So\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},\n{interval:[\"1F130\",\"1F149\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.SQUARED},{interval:[\"1F170\",\"1F189\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.NEGATIVESQUARED},{interval:[\"1F150\",\"1F169\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED}];sre.MathSimpleStore=function(){sre.MathStore.call(this);this.category=\"\"};goog.inherits(sre.MathSimpleStore,sre.MathStore);sre.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d])this.defineRuleFromStrings(a,d,e,b,c[d][e])};sre.MathSimpleStore.prototype.defineRuleFromStrings=function(a,b,c,d,e){this.defineRule(a,b+\".\"+c,'[t] \"'+e+'\"',\"self::text()\",'\"'===d?\"self::text() = '\"+d+\"'\":'self::text() = \"'+d+'\"')};\nsre.MathSimpleStore.prototype.lookupRule=function(a,b){a=this.getSpeechRules().filter(function(c){return sre.MathSimpleStore.testDynamicConstraints_(b,c)});return a.length?a.sort(function(c,d){return sre.Engine.getInstance().comparator.compare(c.dynamicCstr,d.dynamicCstr)})[0]:null};sre.MathSimpleStore.testDynamicConstraints_=function(a,b){return sre.Engine.getInstance().strict?b.dynamicCstr.equal(a):sre.Engine.getInstance().comparator.match(b.dynamicCstr)};\nsre.MathCompoundStore=function(){this.subStores_={};this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]};goog.addSingletonGetter(sre.MathCompoundStore);sre.MathCompoundStore.prototype.getSubStore_=function(a){var b=this.subStores_[a];if(b)return sre.Debugger.getInstance().output(\"Store exists! \"+a),b;b=new sre.MathSimpleStore;return this.subStores_[a]=b};\nsre.MathCompoundStore.prototype.setupStore_=function(a,b){a.locale=this.locale;a.modality=this.modality;b&&(a.category=b)};sre.MathCompoundStore.prototype.defineRules=function(a,b,c,d){var e=this.getSubStore_(b);this.setupStore_(e,c);e.defineRulesFromMappings(a,b,d)};sre.MathCompoundStore.prototype.defineRule=function(a,b,c,d,e,f){var g=this.getSubStore_(e);this.setupStore_(g,d);g.defineRuleFromStrings(a,b,c,e,f)};\nsre.MathCompoundStore.prototype.changeLocale_=function(a){if(!a.locale&&!a.modality)return!1;this.locale=a.locale||this.locale;this.modality=a.modality||this.modality;return!0};sre.MathCompoundStore.prototype.addSymbolRules=function(a){if(!this.changeLocale_(a)){var b=sre.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.category,a.mappings)}};\nsre.MathCompoundStore.prototype.addFunctionRules=function(a){if(!this.changeLocale_(a)){var b=a.names,c=a.mappings;a=a.category;for(var d=0,e;e=b[d];d++)this.defineRules(e,e,a,c)}};sre.MathCompoundStore.prototype.addUnitRules=function(a){if(!this.changeLocale_(a)){var b=a.names;b&&(a.names=b.map(function(c){return c+\":unit\"}));this.addFunctionRules(a)}};sre.MathCompoundStore.prototype.lookupRule=function(a,b){return(a=this.subStores_[a])?a.lookupRule(null,b):null};\nsre.MathCompoundStore.prototype.lookupCategory=function(a){return(a=this.subStores_[a])?a.category:\"\"};sre.MathCompoundStore.prototype.lookupString=function(a,b){return(a=this.lookupRule(a,b))?a.action.components.map(function(c){return c.content.slice(1,-1)}).join(\" \"):\"\"};sre.MathCompoundStore.prototype.enumerate=function(a){a=a||{};for(var b in this.subStores_)a=this.subStores_[b].trie.enumerate(a);return a};\nsre.MathSimpleStore.parseUnicode_=function(a){a=parseInt(a,16);if(65536>a)return String.fromCharCode(a);a-=65536;return String.fromCharCode((a>>10)+55296,(a&1023)+56320)};sre.MathMap=function(){this.store=sre.MathCompoundStore.getInstance();this.loaded_=[];this.addRules={functions:goog.bind(this.store.addFunctionRules,this.store),symbols:goog.bind(this.store.addSymbolRules,this.store),units:goog.bind(this.store.addUnitRules,this.store)}};goog.addSingletonGetter(sre.MathMap);sre.MathMap.oldInst_=sre.MathMap.getInstance;sre.MathMap.getInstance=function(){var a=sre.MathMap.oldInst_();a.loadLocale();return a};\nsre.MathMap.prototype.loadLocale=function(){var a=sre.Engine.getInstance().locale;if(-1===this.loaded_.indexOf(a)){var b=sre.Engine.getInstance().mode===sre.Engine.Mode.ASYNC;b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.SYNC);this.loaded_.push(a);this.retrieveMaps(a);b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.ASYNC)}};sre.MathMap.toFetch_=0;sre.Engine.registerTest(function(){return sre.MathMap.getInstance()&&!sre.MathMap.toFetch_});\nsre.MathMap.prototype.retrieveFiles=function(a){a=sre.BaseUtil.makePath(sre.SystemExternal.jsonPath)+a+\".js\";switch(sre.Engine.getInstance().mode){case sre.Engine.Mode.ASYNC:sre.MathMap.toFetch_++;var b=goog.bind(this.parseMaps,this);sre.MathMap.fromFile_(a,function(c,d){sre.MathMap.toFetch_--;c||b(d)});break;case sre.Engine.Mode.HTTP:sre.MathMap.toFetch_++;this.getJsonAjax_(a);break;default:a=sre.MathMap.loadFile(a),this.parseMaps(a)}};\nsre.MathMap.prototype.parseMaps=function(a){a=JSON.parse(a);this.addMaps(a)};sre.MathMap.prototype.addMaps=function(a,b){for(var c=0,d;d=Object.keys(a)[c];c++){var e=d.split(\"/\");b&&b!==e[0]||a[d].forEach(this.addRules[e[1]])}};sre.MathMap.prototype.retrieveMaps=function(a){sre.AlphabetGenerator.generate(a,this.store);sre.Engine.getInstance().isIE&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?this.getJsonIE_(a):this.retrieveFiles(a)};\nsre.MathMap.prototype.getJsonIE_=function(a,b){var c=b||1;sre.BrowserUtil.mapsForIE?this.addMaps(sre.BrowserUtil.mapsForIE,a):5>=c&&setTimeout(goog.bind(function(){this.getJsonIE_(a,c++)},this),300)};sre.MathMap.fromFile_=function(a,b){return sre.SystemExternal.fs.readFile(a,\"utf8\",b)};sre.MathMap.loadFile=function(a){try{return sre.MathMap.readJSON_(a)}catch(b){console.error(\"Unable to load file: \"+a+\"\\n\"+b)}return\"{}\"};sre.MathMap.readJSON_=function(a){return sre.SystemExternal.fs.readFileSync(a)};\nsre.MathMap.prototype.getJsonAjax_=function(a){var b=new XMLHttpRequest,c=goog.bind(this.parseMaps,this);b.onreadystatechange=function(){4===b.readyState&&(sre.MathMap.toFetch_--,200===b.status&&c(b.responseText))};b.open(\"GET\",a,!0);b.send()};sre.StoreUtil={};sre.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e=\"\");return function(){d<c&&(d+=1);return e+\" \"+d}};sre.StoreUtil.pauseSeparator=function(a,b){a=parseFloat(b);var c=isNaN(a)?b:a;return function(){return[sre.AuditoryDescription.create({text:\"\",personality:{pause:c}})]}};\nsre.StoreUtil.contentIterator=function(a,b){var c=0<a.length?sre.XpathUtil.evalXPath(\"../../content/*\",a[0]):[];return function(){var d=c.shift(),e=b?[sre.AuditoryDescription.create({text:b},{translate:!0})]:[];if(!d)return e;d=sre.SpeechRuleEngine.getInstance().evaluateNode(d);return e.concat(d)}};sre.ClearspeakUtil={};sre.ClearspeakUtil.numbersToAlpha=function(a){return a.match(/\\d+/)?sre.Messages.NUMBERS.numberToWords(parseInt(a,10)):a};sre.ClearspeakUtil.nodeCounter=function(a,b){b=b.split(\"-\");var c=sre.StoreUtil.nodeCounter(a,b[0]||\"\"),d=b[1]||\"\",e=b[2]||\"\",f=!0;return function(){var g=c();return f?(f=!1,e+g+d):g+d}};\nsre.ClearspeakUtil.isSimpleExpression=function(a){return sre.ClearspeakUtil.isSimpleNumber_(a)||sre.ClearspeakUtil.isSimpleLetters_(a)||sre.ClearspeakUtil.isSimpleDegree_(a)||sre.ClearspeakUtil.isSimpleNegative_(a)||sre.ClearspeakUtil.isSimpleFunction_(a)};\nsre.ClearspeakUtil.isSimpleFunction_=function(a){return a.type===sre.SemanticAttr.Type.APPL&&(a.childNodes[0].role===sre.SemanticAttr.Role.PREFIXFUNC||a.childNodes[0].role===sre.SemanticAttr.Role.SIMPLEFUNC)&&(sre.ClearspeakUtil.isSimple_(a.childNodes[1])||a.childNodes[1].type===sre.SemanticAttr.Type.FENCED&&sre.ClearspeakUtil.isSimple_(a.childNodes[1].childNodes[0]))};\nsre.ClearspeakUtil.isSimpleNegative_=function(a){return a.type===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE&&sre.ClearspeakUtil.isSimple_(a.childNodes[0])&&a.childNodes[0].type!==sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].type!==sre.SemanticAttr.Type.APPL&&a.childNodes[0].type!==sre.SemanticAttr.Type.PUNCTUATED};\nsre.ClearspeakUtil.isSimpleDegree_=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.ENDPUNCT&&2===a.childNodes.length&&a.childNodes[1].role===sre.SemanticAttr.Role.DEGREE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0])||a.childNodes[0].type===sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].role===sre.SemanticAttr.Role.NEGATIVE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0].childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0].childNodes[0])))};\nsre.ClearspeakUtil.isSimpleLetters_=function(a){return sre.ClearspeakUtil.isLetter_(a)||a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.IMPLICIT&&(2===a.childNodes.length&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0]))&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])||3===a.childNodes.length&&sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0])&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])&&sre.ClearspeakUtil.isLetter_(a.childNodes[2]))};\nsre.ClearspeakUtil.isSimple_=function(a){return a.hasAnnotation(\"clearspeak\",\"simple\")};sre.ClearspeakUtil.isLetter_=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER&&(a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER||a.role===sre.SemanticAttr.Role.SIMPLEFUNC)};sre.ClearspeakUtil.isNumber_=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};\nsre.ClearspeakUtil.isSimpleNumber_=function(a){return sre.ClearspeakUtil.isNumber_(a)||sre.ClearspeakUtil.isSimpleFraction_(a)};\nsre.ClearspeakUtil.isSimpleFraction_=function(a){if(sre.ClearspeakUtil.hasPreference(\"Fraction_Over\")||sre.ClearspeakUtil.hasPreference(\"Fraction_FracOver\")||a.type!==sre.SemanticAttr.Type.FRACTION||a.role!==sre.SemanticAttr.Role.VULGAR)return!1;if(sre.ClearspeakUtil.hasPreference(\"Fraction_Ordinal\"))return!0;var b=parseInt(a.childNodes[0].textContent,10);a=parseInt(a.childNodes[1].textContent,10);return 0<b&&20>b&&0<a&&11>a};\nsre.ClearspeakUtil.hasPreference=function(a){return sre.Engine.getInstance().style===a};sre.ClearspeakUtil.simpleExpression=function(){return new sre.SemanticAnnotator(\"clearspeak\",function(a){return sre.ClearspeakUtil.isSimpleExpression(a)?\"simple\":\"\"})};sre.ClearspeakUtil.simpleNode=function(a){if(!a.hasAttribute(\"annotation\"))return!1;a=a.getAttribute(\"annotation\");return!!/clearspeak:simple$|clearspeak:simple;/.exec(a)};\nsre.ClearspeakUtil.simpleCell_=function(a){if(sre.ClearspeakUtil.simpleNode(a))return!0;if(a.tagName!==sre.SemanticAttr.Type.SUBSCRIPT)return!1;a=a.childNodes[0].childNodes;var b=a[1];return a[0].tagName===sre.SemanticAttr.Type.IDENTIFIER&&(sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.INFIXOP&&b.hasAttribute(\"role\")&&b.getAttribute(\"role\")===sre.SemanticAttr.Role.IMPLICIT&&sre.ClearspeakUtil.allIndices_(b))};\nsre.ClearspeakUtil.isInteger_=function(a){return a.tagName===sre.SemanticAttr.Type.NUMBER&&a.hasAttribute(\"role\")&&a.getAttribute(\"role\")===sre.SemanticAttr.Role.INTEGER};sre.ClearspeakUtil.allIndices_=function(a){return sre.XpathUtil.evalXPath(\"children/*\",a).every(function(b){return sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.IDENTIFIER})};\nsre.ClearspeakUtil.allCellsSimple=function(a){return sre.XpathUtil.evalXPath(a.tagName===sre.SemanticAttr.Type.MATRIX?\"children/row/children/cell/children/*\":\"children/line/children/*\",a).every(sre.ClearspeakUtil.simpleCell_)?[a]:[]};sre.ClearspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,20,11)?[a]:[]};\nsre.ClearspeakUtil.isUnitExpression=function(a){return a.type===sre.SemanticAttr.Type.TEXT||a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.TEXT&&sre.ClearspeakUtil.isNumber_(a.childNodes[0])&&sre.ClearspeakUtil.allTextLastContent_(a.childNodes.slice(1))||a.type===sre.SemanticAttr.Type.IDENTIFIER&&a.role===sre.SemanticAttr.Role.UNIT||a.type===sre.SemanticAttr.Type.INFIXOP&&(a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT)};\nsre.ClearspeakUtil.allTextLastContent_=function(a){for(var b=0;b<a.length-1;b++)if(a[b].type!==sre.SemanticAttr.Type.TEXT||\"\"!==a[b].textContent)return!1;return a[a.length-1].type===sre.SemanticAttr.Type.TEXT};sre.ClearspeakUtil.unitExpression=function(){return new sre.SemanticAnnotator(\"clearspeak\",function(a){return sre.ClearspeakUtil.isUnitExpression(a)?\"unit\":\"\"})};\nsre.ClearspeakUtil.ordinalExponent=function(a){var b=parseInt(a.textContent,10);return isNaN(b)?a.textContent:10<b?sre.Messages.NUMBERS.simpleOrdinal(b):sre.Messages.NUMBERS.wordOrdinal(b)};sre.ClearspeakUtil.isCapitalLetter=function(a){return\"Lu\"===sre.MathCompoundStore.getInstance().lookupCategory(a.textContent)?[a]:[]};sre.ClearspeakUtil.NESTING_DEPTH=null;\nsre.ClearspeakUtil.nestingDepth=function(a){var b=0,c=a.textContent,d=\"open\"===a.getAttribute(\"role\")?0:1;for(a=a.parentNode;a;)a.tagName===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].childNodes[d].textContent===c&&b++,a=a.parentNode;sre.ClearspeakUtil.NESTING_DEPTH=1<b?sre.Messages.NUMBERS.wordOrdinal(b):\"\";return sre.ClearspeakUtil.NESTING_DEPTH};\nsre.ClearspeakUtil.matchingFences=function(a){var b=a.previousSibling;if(b)var c=a;else b=a,c=a.nextSibling;return c?sre.SemanticAttr.isMatchingFence(b.textContent,c.textContent)?[a]:[]:[]};sre.ClearspeakUtil.insertNesting=function(a,b){if(!b||!a)return a;var c=a.match(/^(open|close) /);return c?c[0]+b+\" \"+a.substring(c[0].length):b+\" \"+a};sre.Grammar.getInstance().setCorrection(\"insertNesting\",sre.ClearspeakUtil.insertNesting);\nsre.ClearspeakUtil.fencedArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath(\"../../children/*\",a);b=b.indexOf(a);return sre.ClearspeakUtil.fencedFactor_(c[b])||sre.ClearspeakUtil.fencedFactor_(c[b+1])?[a]:[]};\nsre.ClearspeakUtil.simpleArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath(\"../../children/*\",a);b=b.indexOf(a);return sre.ClearspeakUtil.simpleFactor_(c[b])&&c[b+1]&&(sre.ClearspeakUtil.simpleFactor_(c[b+1])||c[b+1].tagName===sre.SemanticAttr.Type.ROOT||c[b+1].tagName===sre.SemanticAttr.Type.SQRT||c[b+1].tagName===sre.SemanticAttr.Type.SUPERSCRIPT&&c[b+1].childNodes[0].childNodes[0]&&(c[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.NUMBER||\nc[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.IDENTIFIER)&&(\"2\"===c[b+1].childNodes[0].childNodes[1].textContent||\"3\"===c[b+1].childNodes[0].childNodes[1].textContent))?[a]:[]};sre.ClearspeakUtil.simpleFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.NUMBER||a.tagName===sre.SemanticAttr.Type.IDENTIFIER||a.tagName===sre.SemanticAttr.Type.FUNCTION||a.tagName===sre.SemanticAttr.Type.APPL||a.tagName===sre.SemanticAttr.Type.FRACTION)};\nsre.ClearspeakUtil.fencedFactor_=function(a){return a&&(a.tagName===sre.SemanticAttr.Type.FENCED||a.hasAttribute(\"role\")&&a.getAttribute(\"role\")===sre.SemanticAttr.Role.LEFTRIGHT||sre.ClearspeakUtil.layoutFactor_(a))};sre.ClearspeakUtil.layoutFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.MATRIX||a.tagName===sre.SemanticAttr.Type.VECTOR)};\nsre.ClearspeakUtil.isHyperbolic=function(a){if(a.tagName===sre.SemanticAttr.Type.APPL){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&\"Hyperbolic\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};\nsre.ClearspeakUtil.isLogarithmWithBase=function(a){if(a.tagName===sre.SemanticAttr.Type.SUBSCRIPT){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&\"Logarithm\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};sre.ClearspeakUtil.wordOrdinal=function(a){return sre.Messages.NUMBERS.wordOrdinal(parseInt(a.textContent,10))};\nsre.ClearspeakUtil.firstCurrency=function(a){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];return b&&\"currency\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+\":unit\")?[a]:[]};sre.ClearspeakUtil.lastCurrency=function(a){var b=sre.XpathUtil.evalXPath(\"children/*[last()]\",a)[0];return b&&\"currency\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+\":unit\")?[a]:[]};\nsre.ClearspeakUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.simpleExpression());sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.unitExpression())};sre.ClearspeakFrench={locale:\"fr\",domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFordinalExponent\",sre.ClearspeakUtil.ordinalExponent],[\"CSF\",\n\"CSFwordOrdinal\",sre.Messages.NUMBERS.wordOrdinal],[\"CQF\",\"CQFisCapital\",sre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",\nsre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] \"compress\\u00e9e\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\n\"self::empty\"],'Rule{font{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:\"short\"){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:\"short\"){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),\n[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"majuscule\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),\n'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),\n'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"et ainsi de suite\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),\n'Rule;ellipsis;Ellipses_AndSoOn;[t] \"et ainsi de suite jusqu\\'\\u00e0\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"\\u00e9valu\\u00e9 \\u00e0\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"\\u00e9valu\\u00e9 \\u00e0\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"moins la m\\u00eame expression \\u00e9valu\\u00e9e \\u00e0\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"tel que\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Divides;[t] \"diviseur de\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Given;[t] \"sachant\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;set-member;default;[t] \"est un\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),\n[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"appartient \\u00e0\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"est un \\u00e9l\\u00e9ment de\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"est dans\"'],'Rule;set-not-member;default;[t] \"n\\'est pas un\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"n\\'appartient pas \\u00e0\"'],\n[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"n\\'est pas un \\u00e9l\\u00e9ment de\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"n\\'est pas dans\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),'Rule,feet,default,[n] children/*[1]; [t] \"feet\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,foot,default,[n] children/*[1]; [t] \"foot\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"inches\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inch,default,[n] children/*[1]; [t] \"inch\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"minutes\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"seconds\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),\n'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"second\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"degrees\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] \"degree\"; [p] (pause:short),self::punctuation,@role=\"degree\",children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"minutes\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"seconds\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"second\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"feet\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] \"foot\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"inches\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] \"inch\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],[\"Rule\",\"appl\",\"default\",'[n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),'Rule,appl-simple,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),\n[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"fois\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),'Rule{function-prefix-inverse{default{[p] (pause:\"short\");  [n] children/*[1]/children/*[1]; [t] \"inverse de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:\"short\"); [t] \"la reciproque de\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:\"short\"); [t] \"la reciproque de\"; [n] children/*[1]/children/*[1];[n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{contains(children/*[2]/@annotation, \"clearspeak:simple\"){children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"inverse\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-inverse{Functions_Reciprocal{[t] \"la reciproque de\"; [n] children/*[1]{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"\\u00e0 l\\'exposant\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"fin exposant\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\"),self::superscript,not(descendant::superscript)'.split(\",\"),\n'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\") ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"\\u00e0 la\"; [n] children/*[2] (grammar:ordinal); [t] \"puissance\" (pause:\"medium\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\"],CQFisCaptial'.split(\",\"),\n'Rule{exponent{default{[n] text() (join:\"-\"); [t] \"i\\u00e8me\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),\n'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_OrdinalPower;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"au carr\\u00e9\",self::superscript,children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),\n'Rule,cube,default,[n] children/*[1]; [t] \"au cube\",self::superscript,children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"le point avec coordon\\u00e9es\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"un intervalle de\"; [n] children/*[1]/children/*[1]; [t] \"\\u00e0\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]; [t] \"ni\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"inclus\"; [p] (pause:\"short\"); [t] \"mais sans inclure\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"mais avec\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"et\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t] \"ensemble vide\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"ensemble des\"; [n] children/*[1]/children/*[1]; [t] \"tel que\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"ensemble\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"ensemble de\"; [n] children/*[1]/children/*[1]; [t] \"tel que\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"sub\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"sub\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short); [t] \"fin fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_FracOver\",'[p] (pause:short); [t] \"fraction\"; [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"par\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short); [t] \"fin fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"fin fraction\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),\n'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),[\"Rule\",\"sqrt\",\"default\",'[t] \"la racine carr\\u00e9e de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,negative-sqrt,default,[t] \"la racine carr\\u00e9e n\\u00e9gative de\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e n\\u00e9gative de\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule,cube,default,[t] \"la racine cubique de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"la racine cubique de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n[\"Rule\",\"root\",\"default\",'[t] \"la\"; [n] children/*[1] (grammar:ordinal); [t] \"racine de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"la\"; [n] children/*[1] (grammar:ordinal); [t] \"racine de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"positif\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"la mesure de l\\'\" (join:\"\"); [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),\n[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"le\"; [n] self::* (grammar:!prefix); [t] \"de\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\" or descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\n\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),\n'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),\n'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"les nombres entier naturel\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule;integers;default;[t] \"les nombres entiers\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;rational-numbers;default;[t] \"les Nombres rationnels\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"les nombres r\\u00e9els\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;complex-numbers;default;[t] \"les nombres complexes\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule;natural-numbers-with-zero;default;[t] \"les nombres entiers naturel avec zero\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\"'.split(\";\"),'Rule;positive-integers;default;[t] \"les nombres entiers positif\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;positive-integers;default;[t] \"les nombres entiers n\\u00e9gatif\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-rational-numbers;default;[t] \"les nombres rationnels positif\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"les nombres rationnels n\\u00e9gatif\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"la valeur absolue de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"la valeur absolue de\"; [n] children/*[1]; [p] (pause: short); [t] \"fin de valeur absolue\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"la cardinalit\\u00e9 de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"le d\\u00e9terminant de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"la matrice de dimension\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"la matrice de dimension\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*);  [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"la matrice de dimension 1 par 1 avec \\u00e9l\\u00e9ment\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"le d\\u00e9terminant de la matrice de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{determinant-simple{default{[t] \"le d\\u00e9terminant de la matrice de dimension\"; [t] count(children/*);  [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),[\"Rule\",\"matrix-vector\",\"default\",'[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row-simple\",\n\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],\n'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),[\"Rule\",\"vector\",\"Matrix_Vector\",\n'[t] \"le vecteur colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"le vecteur colonne de dimension\"; [t] count(children/*); [t] \"par\";  [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"le vecteur ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"le vecteur ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin vecteur\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin vecteur\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[2]/children/*[1]; [t] \"parmi\"; [n] children/*[1]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"lignes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"cas\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Ligne-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"vide\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"vide\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Cas-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"cas\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Cas-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"\\u00e9quations\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"\\u00c9quation-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \" \\u00e9tapes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\" \\u00c9tape-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"colonnes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"contraintes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Contrainte-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[t] \"le\"; [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"de\"; [n] children/*[2];[t] \"\\u00e0\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"sous\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"le\"; [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],[\"Rule\",\n\"overscript\",\"default\",'[n] children/*[1]; [t] \"sous\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"\\u00e0\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",'[n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"de\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"et\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"nombre\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"virgule suivi par les chiffres r\\u00e9p\\u00e9t\\u00e9s\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"suivi par les chiffres r\\u00e9p\\u00e9t\\u00e9s\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"virgule suivi par le chiffre r\\u00e9p\\u00e9t\\u00e9\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"suivi par le chiffre r\\u00e9p\\u00e9t\\u00e9\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"point\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"le segment\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"le complexe conjugu\\u00e9 de\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"est d\\u00e9fini par\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[t] \"signe\"; [n] children/*[1] ; [t] \"avec\"; [n] children/*[2]; [t] \"dessus\",self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"factorielle\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"exposant gauche\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"exposant gauche\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"indice gauche\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"indice gauche\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"exposant droite\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"exposant droite\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"indice droite\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"indice droite\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[t] \"combinaison de\"; [n] children/*[3] (grammar:combinatorics); [t] \"parmi\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[t] \"permutation de\"; [n] children/*[2] (grammar:combinatorics); [t] \"parmi\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\")]};\nsre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakGerman={locale:\"de\",domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFwordOrdinal\",sre.ClearspeakUtil.wordOrdinal],[\"CQF\",\"CQFisCapital\",\nsre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] \"kollapiert\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),\n[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\"self::empty\"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::*{name(self::*)!=\"number\"{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),[\"SpecializedRule\",\"font\",\n\"default\",\"Caps_SayCaps\"],'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),[\"SpecializedRule\",\"font-identifier\",\n\"default\",\"Caps_SayCaps\"],'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\";self::*'.split(\";\"),[\"SpecializedRule\",\"omit-font\",\"default\",\"Caps_SayCaps\"],'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!=\"number\"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),\n[\"SpecializedRule\",\"font-double-struck\",\"default\",\"Caps_SayCaps\"],'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"gro\\u00dfes\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),\n'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),\n'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),\n'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"und so weiter\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"und so weiter bis\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),\n'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"minus des gleichen Ausdrucks ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"so dass\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Divides;[t] \"teilt\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Given;[t] \"f\\u00fcr die gilt\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;set-member;default;[t] \"in\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),\n[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"Element von\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"geh\\u00f6rt zu\"'],'Rule;set-not-member;default;[t] \"nicht in\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"kein Element von\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"geh\\u00f6rt nicht zu\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),\n'Rule,feet,default,[n] children/*[1]; [t] \"Fu\\u00df\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"Zoll\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"Minuten\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),\n'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"Minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"Sekunden\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"Sekunde\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"Grad\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"Minuten\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"Minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"Sekunden\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"Sekunde\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"Fu\\u00df\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"Zoll\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],'Rule{function-article{default{[t] \"der\" (grammar:article); [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\")'.split(\"{\"),'Rule{function-article-fem{default{[t] \"die\" (grammar:article); [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\"){text()=\"det\" or text()=\"dim\" or text()=\"tr\"'.split(\"{\"),[\"Rule\",\"appl\",\n\"default\",'[n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),'Rule,appl-simple,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),\n[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"mal\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),\n'Rule{function-prefix-inverse{default{[p] (pause:\"short\"); [t] \"der\" (grammar:article); [t] \"inverse\" (grammar:masculine); [n] children/*[1]/children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"invers\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,superscript-prefix-function,default,[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-prefix-function,default,[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"identifier\"'.split(\",\"),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"mit Exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"Ende Exponent\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,default,[n] children/*[1]; [t] \"mit Exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"Ende Exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),\n'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule,superscript-simple-power,Exponent_OrdinalPower,[n] children/*[1]; [t] \"potenziert mit\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-power-end,Exponent_OrdinalPower,[n] children/*[1]; [t] \"potenziert mit\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-power\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-power;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule{superscript-ordinal-power{Exponent_OrdinalPower{[n] children/*[1]; [t] \"zur\"; [n] children/*[2] (grammar:ordinal,join:\"\"); [t] \"n Potenz\" (pause:\"short\"){self::superscript{name(children/*[2])=\"number\"{children/*[2][@role=\"integer\"]'.split(\"{\"),[\"Aliases\",\"superscript-ordinal-power\",\"self::superscript\",'name(children/*[2])=\"identifier\"','children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'],'Rule{superscript-non-ordinal{Exponent_OrdinalPower{[n] children/*[1]; [t] \"zur negativ\"; [n] children/*[2]/children/*[1] (grammar:ordinal, join:\"\"); [t] \"n Potenz\" (pause:\"short\"){self::superscript{children/*[2][@role=\"negative\"]{name(children/*[2]/children/*[1])=\"number\"{children/*[2]/children/*[1][@role=\"integer\"]'.split(\"{\"),\n'Rule{superscript-simple-function{Exponent_OrdinalPower{[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\" (pause:\"short\"); [n] children/*[1]{self::superscript{name(children/*[1])=\"identifier\"{children/*[1][@role=\"simple function\"]{children/*[2][@role!=\"prime\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{exponent{default{[n] text() (join:\"\"); [t] \"te\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),'Rule;exponent;default;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),\n'Rule;exponent;default;[t] \"nullte\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,superscript-simple-exp,Exponent_Exponent,[n] children/*[1]; [t] \"mit Exponent\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-exp-end,Exponent_Exponent,[n] children/*[1]; [t] \"mit Exponent\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-exp\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-exp;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"Quadrat\",self::superscript,children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"Kubik\",self::superscript,children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),\n'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"der Punkt mit Koordinaten\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"das Interval von\"; [n] children/*[1]/children/*[1]; [t] \"bis\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]; [t] \"und\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"aber ohne\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"aber einschlie\\u00dflich\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]; [t] \"und\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t]  \"die leere Menge\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"die Menge aller\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"die Menge\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"die Menge von\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"Index\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"Basis\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"Index\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short); [t] \"Ende Bruch\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\n\"Fraction_FracOver\",'[p] (pause:short); [t] \"Bruch\"; [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"per\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short); [t] \"Ende Bruch\"; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"Ende Bruch\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),\n'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),\n[\"Rule\",\"sqrt\",\"default\",'[t] \"Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,negative-sqrt,default,[t] \"negative Quadratwurzel aus\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),\n'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"negative Quadratwurzel aus\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,cube,default,[t] \"Kubikwurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"Kubikwurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"die\" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] \"Wurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\n\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"die\" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] \"Wurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"plus\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"das Ma\\u00df des Winkels\"; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\n\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"der\" (grammar:article); [n] self::* (grammar:!prefix); [t] \"von\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\"{self::*{self::*{self::*'.split(\"{\"),'Rule{set-prefix-operators{default{[t] \"die\" (grammar:article); [n] self::* (grammar:!prefix); [t] \"von\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\n\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),\n'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),\n'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"die nat\\u00fcrlichen Zahlen\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;integers;default;[t] \"die ganzen Zahlen\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;rational-numbers;default;[t] \"die rationalen Zahlen\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"die reellen Zahlen\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;complex-numbers;default;[t] \"die komplexen Zahlen\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),\n'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),\n'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule;natural-numbers-with-zero;default;[t] \"die nat\\u00fcrlichen Zahlen mit Null\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-integers;default;[t] \"die positiven ganzen Zahlen\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;positive-integers;default;[t] \"die negativen ganzen Zahlen\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-rational-numbers;default;[t] \"die positiven rationalen Zahlen\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"die negativen rationalen Zahlen\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"der Betrag von\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"der Betrag von\"; [n] children/*[1]; [p] (pause: short); [t] \"Ende Betrag\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"die M\\u00e4chtigkeit der Menge\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"die Determinante von\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"die 1 mal 1 Matrize mit Element\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"die\" (grammar:article); [t] \"Determinante der\"; [t] count(children/*); [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{determinant-simple{default{[t] \"die\" (grammar:article); [t] \"Determinante der\"; [t] count(children/*); [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),[\"Rule\",\"matrix-vector\",\"default\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\n\"matrix-row-simple\",\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\n\"self::cell\"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),[\"Rule\",\"vector\",\n\"Matrix_Vector\",'[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenvektor\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Spaltenvektor\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenvektor\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenvektor\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Vektor\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Vektor\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"Zeilen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"F\\u00e4lle\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"leer\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"leer\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Fall-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"F\\u00e4lle\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Fall-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"Gleichungen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Gleichung-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \"Rechenschritte\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Schritt-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"Zeilen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"Bedingungen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Bedingung-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"von\"; [n] children/*[2];[t] \"bis\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"unter\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"das\"; [n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],\n[\"Rule\",\"overscript\",\"default\",'[n] children/*[1]; [t] \"unter\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"bis\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",\n'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"von\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Zahl\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"Komma mit Periode\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"mit Periode\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"Komma mit Periode\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"mit Periode\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"Komma\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"die Strecke\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"die komplexe Konjugation von\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"ist definiert als\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] \"Zeichen mit dar\\u00fcberstehendem\"; [n] children/*[2],self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"Fakult\\u00e4t\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"linker oberer Index\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"linker oberer Index\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"linker unterer Index\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"linker unterer Index\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"rechter oberer Index\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"rechter oberer Index\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"rechter unterer Index\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"rechter unterer Index\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] \"aus\"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] \"Permutionen von\"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\")]};\nsre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakRules={domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFordinalExponent\",sre.ClearspeakUtil.ordinalExponent],[\"CSF\",\"CSFwordOrdinal\",\nsre.ClearspeakUtil.wordOrdinal],[\"CQF\",\"CQFisCapital\",sre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],\n[\"CQF\",\"CQFfirstCurrency\",sre.ClearspeakUtil.firstCurrency],[\"CQF\",\"CQFlastCurrency\",sre.ClearspeakUtil.lastCurrency]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*[@alternative]{not(contains(@grammar, \"collapsed\"))'.split(\"{\"),[\"Rule\",\"direct-speech\",\"default\",\"[t] @ext-speech\",\"self::*[@ext-speech]\"],[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),\n[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\"self::empty\"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),\n'Rule{german-font{default{[t] \"German\"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"fraktur\"'.split(\"{\"),'Rule{german-font{default{[t] \"bold German\"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"bold-fraktur\"'.split(\"{\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"cap\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),\n'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),\n'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),\n'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"and so on\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"and so on up to\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),\n'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"evaluated at\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"evaluated at\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"minus the same expression evaluated at\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"such that\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-divides;default;[t] \"divides\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"]);parent::*/parent::*[@role=\"sequence\"]'.split(\";\"),'Rule;vbar-divides;VerticalLine_Divides;[t] \"divides\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-given;VerticalLine_Given;[t] \"given\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),\n'Rule;set-member;default;[t] \"in\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"member of\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"element of\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"belonging to\"'],'Rule;set-not-member;default;[t] \"not in\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\n\"set-not-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"not member of\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"not element of\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"not belonging to\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),'Rule,feet,default,[n] children/*[1]; [t] \"feet\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,foot,default,[n] children/*[1]; [t] \"foot\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"inches\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inch,default,[n] children/*[1]; [t] \"inch\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"minutes\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"seconds\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),\n'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"second\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"degrees\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] \"degree\"; [p] (pause:short),self::punctuation,@role=\"degree\",children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"minutes\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"seconds\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"second\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"feet\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] \"foot\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"inches\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] \"inch\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],'Rule{function-article{default{[t] \"the\"; [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\")'.split(\"{\"),[\"Rule\",\"appl\",\"default\",'[n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),\n'Rule,appl-simple,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"times\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),'Rule{function-prefix-inverse{default{[p] (pause:\"short\"); [t] \"the inverse\"; [n] children/*[1]/children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"inverse\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,superscript-prefix-function,default,[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-prefix-function,default,[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"identifier\"'.split(\",\"),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"raised to the\"; [n] children/*[2]; [t] \"power\" (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] \"raised to the\"; [n] children/*[2]; [t] \"power\",self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),\n'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\" (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),[\"Aliases\",\"superscript-ordinal\",\"self::superscript\",'name(children/*[2])=\"identifier\"','children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'],'Rule,superscript-non-ordinal,default,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [t] \"power\" (pause:\"short\"),self::superscript,children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule{superscript-simple-function{default{[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\" (pause:\"short\"); [n] children/*[1]{self::superscript{name(children/*[1])=\"identifier\"{children/*[1][@role=\"simple function\"]{children/*[2][@role!=\"prime\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,Exponent_Ordinal,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,Exponent_OrdinalPower,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),\n[\"Rule\",\"superscript-power\",\"Exponent_AfterPower\",'[n] children/*[1]; [t] \"raised to the power\"; [n] children/*[2] (grammar:afterPower); [p] (pause:\"short\")',\"self::superscript\"],'Rule,superscript-power-default,Exponent_AfterPower,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),'Rule{exponent{default{[n] text() (join:\"-\"); [t] \"th\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),\n'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),\n'Rule;exponent;Exponent_OrdinalPower;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"squared\",self::superscript,@role!=\"unit\",children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\",self::superscript,@role!=\"unit\",children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*'.split(\",\"),\n'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"the point with coordinates\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"the interval from\"; [n] children/*[1]/children/*[1]; [t] \"to\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]; [t] \"or\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"but not including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"but including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]; [t] \"and\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t] \"the empty set\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"the set of all\"; [n] children/*[1]/children/*[1]; [t] \"such that\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"the set\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"the set of\"; [n] children/*[1]/children/*[1]; [t] \"such that\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"sub\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"sub\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short); [t] \"end fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_FracOver\",'[p] (pause:short); [t] \"the fraction\"; [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"per\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short); [t] \"end fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"end fraction\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),\n'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),[\"Rule\",\"sqrt\",\"default\",'[t] \"the square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"the square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,negative-sqrt,default,[t] \"the negative square root of\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"the negative square root of\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,cube,default,[t] \"the cube root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"the cube root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"the\"; [n] children/*[1] (grammar:ordinal); [t] \"root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\n\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"the\"; [n] children/*[1] (grammar:ordinal); [t] \"root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"positive\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"the measure of\"; [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\n\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"the\"; [n] self::* (grammar:!prefix); [t] \"of\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\" or descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),\n'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),\n[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"the natural numbers\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;integers;default;[t] \"the integers\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule;rational-numbers;default;[t] \"the rational numbers\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"the real numbers\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;complex-numbers;default;[t] \"the complex numbers\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule;natural-numbers-with-zero;default;[t] \"the natural numbers with zero\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\"'.split(\";\"),'Rule;positive-integers;default;[t] \"the positive integers\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-integers;default;[t] \"the negative integers\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),'Rule;positive-rational-numbers;default;[t] \"the positive rational numbers\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"the negative rational numbers\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"the absolute value of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"the absolute value of\"; [n] children/*[1]; [p] (pause: short); [t] \"end absolute value\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"the cardinality of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"the determinant of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"the 1 by 1 matrix with entry\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"the determinant of the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),'Rule{determinant-simple{default{[t] \"the determinant of the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),\n[\"Rule\",\"matrix-vector\",\"default\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),\n[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),\n[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),\n'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row-simple\",\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\n\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end determinant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),\n[\"Rule\",\"vector\",\"Matrix_Vector\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column vector\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\"; [t] count(children/*[1]/children/*); [t] \"column vector\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row vector\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row vector\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end vector\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end vector\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end determinant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] \"choose\"; [n] children/*[2]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"lines\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"cases\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Line-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"blank\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"blank\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Case-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"cases\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Case-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"equations\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Equation-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \"steps\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Step-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"rows\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"constraints\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Constraint-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[t] \"the\"; [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"from\"; [n] children/*[2];[t] \"to\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"the\"; [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],\n[\"Rule\",\"overscript\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"to\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",\n'[n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"number\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"point followed by repeating digits\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"followed by repeating digits\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"point followed by repeating digit\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"followed by repeating digit\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"point\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"the line segment\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"the complex conjugate of\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"is defined to be\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] \"sign with\"; [n] children/*[2]; [t] \"over it\",self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"left super\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"left super\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"left sub\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"left sub\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"right super\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"right super\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"right sub\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"right sub\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] \"choose\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] \"permute\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\"),\n'Rule;unit-singular;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-plural;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\";not(contains(@grammar, \"singularUnit\"))'.split(\";\"),'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),\n'Rule,unit-reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),'Rule,unit-reciprocal,default,[t] \"per\"; [n] children/*[1] (grammar:singularUnit),self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),\n'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-combine-singular,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [m] children/*[position()>2],self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1]'.split(\",\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"per\"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role=\"unit\"'.split(\",\"),'Rule{currency{default{[m] children/*[position()>1]; [n] children/*[1];{self::infixop{contains(@annotation, \"clearspeak:unit\"){children/*[1][@role=\"unit\"]{CQFfirstCurrency'.split(\"{\"),\n'Rule;currency;Currency_Position;[m] children/*;self::infixop;contains(@annotation, \"clearspeak:unit\")'.split(\";\"),[\"SpecializedRule\",\"currency\",\"Currency_Position\",\"Currency_Prefix\"],'Rule{currency{Currency_Prefix{[n] children/*[last()]; [m] children/*[position()<last()]; {self::infixop{contains(@annotation, \"clearspeak:unit\"){children/*[last()][@role=\"unit\"]{CQFlastCurrency'.split(\"{\")],initialize:[sre.ClearspeakUtil.addAnnotators]};sre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.EmacspeakRules={domain:\"emacspeak\",functions:[[\"CTXF\",\"CTXFnodeCounter\",sre.StoreUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction]],rules:[[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"multrel\",\"default\",'[t] \"multirelation\"; [m] children/* (sepFunc:CTXFcontentIterator)',\"self::multirel\"],'Rule{variable-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),\n'Rule{multi-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2'.split(\"{\"),'Rule,equality,default,[t] \"equation\"; [t] \"left hand side\"; [n] children/*[1];[p] (pause:200); [n] content/*[1] (pause:200);[t] \"right hand side\"; [n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2'.split(\",\"),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/identifier or ./children/number'.split(\",\"),\n'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/function or ./children/appl'.split(\",\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\";children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"] or name(children/*[1])=\"number\";children/*[2][@role=\"latinletter\"] or children/*[2][@role=\"greekletter\"] or children/*[2][@role=\"otherletter\"] or name(children/*[2])=\"number\"'.split(\";\"),\n[\"Rule\",\"binary-operation\",\"default\",\"[p] (pause:100); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:100);\",\"self::infixop\"],'Rule,variable-addition,default,[t] \"sum with variable number of summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(children/*)>2,children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",'[t] \"prefix\"; [n] text(); [t] \"of\" (pause 150);[n] children/*[1]',\"self::prefixop\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,self::prefixop[@role=\"negative\"]'.split(\",\"),\n[\"Rule\",\"postfix\",\"default\",'[n] children/*[1]; [t] \"postfix\"; [n] text() (pause 300)',\"self::postfixop\"],[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule{font{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font; [n] CQFhideFont; [t] CSFshowFont{self::identifier{string-length(text())=1{@font{@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule,simple-fraction,default,[p] (pause:100); [n] children/*[1] (rate:0.35); [t] \"over\";  [n] children/*[2] (rate:0.35); [p] (pause:100),self::fraction,name(children/*[1])=\"number\" or name(children/*[1])=\"identifier\",name(children/*[2])=\"number\" or name(children/*[2])=\"identifier\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"default\",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] \"divided by\"; [p] (pause:250);  [n] children/*[2] (rate:0.35); [p] (pause:250)',\"self::fraction\"],[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"super\"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',\"self::superscript\"],[\"Rule\",\"subscript\",\"default\",'[n] children/*[1]; [t] \"sub\"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',\n\"self::subscript\"],'Rule,ellipsis,default,[p] (pause:200); [t] \"ellipsis\"; [p] (pause:300),self::punctuation,self::punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role=\"openfence\"]'.split(\";\"),[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"closefence\"]'],[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"vbar\"]'],[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"application\"]'],\n[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule,fences-open-close,default,[p] (pause:200); [n] children/*[1] (rate:0.35); [p] (pause:200),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role=\"leftright\"],./parent::children/parent::appl'.split(\",\"),'Rule,fences-neutral,default,[p] (pause:100); [t] \"absolute value of\"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role=\"neutral\"]'.split(\",\"),\n[\"Rule\",\"omit-fences\",\"default\",\"[p] (pause:500); [n] children/*[1]; [p] (pause:200);\",\"self::fenced\"],[\"Rule\",\"matrix\",\"default\",'[t] \"matrix\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100)',\"self::matrix\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)','self::row[@role=\"matrix\"]'],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"matrix\"]'],[\"Rule\",\"vector\",\"default\",'[t] \"vector\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"element\",pause:100)',\n\"self::vector\"],[\"Rule\",\"cases\",\"default\",'[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100)',\"self::cases\"],[\"Rule\",\"cases-row\",\"default\",\"[m] children/*\",'self::row[@role=\"cases\"]'],[\"Rule\",\"cases-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"cases\"]'],[\"Rule\",\"row\",\"default\",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)',\"self::row\"],'Rule{cases-end{default{[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100);[t] \"end cases\"{self::cases{following-sibling::*'.split(\"{\"),\n[\"Rule\",\"multiline\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"line\",pause:100)',\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],[\"Rule\",\"table\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200)',\"self::table\"],[\"Rule\",\"table-row\",\"default\",\"[m] children/* (pause:100)\",'self::row[@role=\"table\"]'],[\"Alias\",\"cases-cell\",'self::cell[@role=\"table\"]'],'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role=\"endpunct\"'.split(\",\"),\n'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/* (pause:100)\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],[\"Rule\",\"appl\",\"default\",\"[n] children/*[1]; [n] content/*[1]; [n] children/*[2]\",\"self::appl\"],\n'Rule,sum-only,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2]; [t] \"to\";[n] children/*[3],self::limboth,@role=\"sum\" or @role=\"integral\"'.split(\",\"),[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[t] \"under\"; [n] children/*[3]; [p] (pause 250);',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2];',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2];',\n\"self::limupper\"],[\"Rule\",\"largeop\",\"default\",\"[n] text()\",\"self::largeop\"],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[p] (pause 250);',\"self::bigop\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);\",\"self::integral\"],[\"Rule\",\"sqrt\",\"default\",'[t] \"Square root of\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\"self::sqrt\"],'Rule,square,default,[n] children/*[1]; [t] \"squared\" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=2],name(./children/*[1])!=\"text\"'.split(\",\"),\n'Rule,cube,default,[n] children/*[1]; [t] \"cubed\" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=3],name(./children/*[1])!=\"text\"'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"root of order\"; [n] children/*[1];[t] \"over\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\"self::root\"],\"Rule,text-no-mult,default,[n] children/*[1]; [p] (pause:200); [n] children/*[2],self::infixop,children/text\".split(\",\"),[\"Rule\",\"text\",\"default\",\"[n] text(); [p] (pause:200)\",\"self::text\"],'Rule;unit;default;[t] text() (annotation:unit, preprocess);self::identifier;@role=\"unit\"'.split(\";\"),\n'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"per\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] \"per\"; [n] children/*[2] (pitch:-0.3),self::fraction,@role=\"unit\"'.split(\",\")]};sre.MathspeakFrenchUtil={};sre.MathspeakFrenchUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&3>=b?[a]:[]};sre.MathspeakFrenchUtil.baselineVerbose=function(a){return sre.MathspeakUtil.baselineVerbose(a).replace(/\\-$/,\"\")};sre.MathspeakFrenchUtil.baselineBrief=function(a){return sre.MathspeakUtil.baselineBrief(a).replace(/\\-$/,\"\")};\nsre.MathspeakFrenchUtil.leftSuperscriptVerbose=function(a){return sre.MathspeakUtil.superscriptVerbose(a).replace(/^exposant/,\"exposant gauche\")};sre.MathspeakFrenchUtil.leftSubscriptVerbose=function(a){return sre.MathspeakUtil.subscriptVerbose(a).replace(/^indice/,\"indice gauche\")};sre.MathspeakFrenchUtil.leftSuperscriptBrief=function(a){return sre.MathspeakUtil.superscriptBrief(a).replace(/^sup/,\"sup gauche\")};\nsre.MathspeakFrenchUtil.leftSubscriptBrief=function(a){return sre.MathspeakUtil.subscriptBrief(a).replace(/^sub/,\"sub gauche\")};sre.MathspeakFrench={locale:\"fr\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFrFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CQF\",\"CQFisSmallRoot\",sre.MathspeakFrenchUtil.smallRoot],\n[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakFrenchUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakFrenchUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakFrenchUtil.leftSuperscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",\nsre.MathspeakFrenchUtil.leftSubscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakFrenchUtil.leftSuperscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakFrenchUtil.leftSubscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",\nsre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase]],rules:['Rule;collapsed;default;[n] . (engine:modality=summary,grammar:collapsed);self::*;@alternative;not(contains(@grammar, \"collapsed\"));self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::*;@role=\"protected\"'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"vide\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont);{self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"et\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{number-with-chars{default{[t] \"nombre\"; [m] CQFspaceoutNumber{self::number{\"\" != translate(text(), \"0123456789.,\", \"\"){text() != translate(text(), \"0123456789.,\", \"\")'.split(\"{\"),'Rule{number-as-upper-word{default{[t] \"MotMajuscule\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n'Rule{number-baseline{default{[t] \"position de base\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\"brief\",'[t] \"base\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"position de base\"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),\n[\"SpecializedRule\",\"number-baseline-font\",\"default\",\"brief\",'[t] \"base\"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";@role!=\"protected\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"moins\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"d\\u00e9but valeur absolue\"; [n] children/*[1]; [t] \"fin valeur absolue\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"valeur absolue\"; [n] children/*[1]; [t] \"fin valeur absolue\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"d\\u00e9but ensemble\"; [n] children/*[1]; [t] \"fin ensemble\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\n\"default\",\"sbrief\",'[t] \"ensemble\"; [n] children/*[1]; [t] \"fin ensemble\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"factorielle\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"moins\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prime\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"double prime\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prime\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"quadruple prime\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFrFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\"vulgar-fraction\",\n\"default\",\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"fraction continue\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"frac continue\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"d\\u00e9but fraction\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"brief\",'[t] \"d\\u00e9but frac\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"frac\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\n\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),[\"Rule\",\"root\",\"default\",\n\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];[t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];[t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[3]; [t] \"fin scripts\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2]; [t] \"fin scripts\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[2]; [t] \"fin scripts\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\n\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"indice inf\\u00e9rieur\"; [n] children/*[2];[t] \"indice sup\\u00e9rieur\"; [n] children/*[3]; [t] \"position de base\";,self::limboth,@role=\"integral\"'.split(\",\"),[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"inf\"; [n] children/*[2];[t] \"sup\"; [n] children/*[3]; [t] \"position de base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\n\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],\n[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm,self::*,self::*,self::*'.split(\",\"),[\"SpecializedRule\",\"subscript-base\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-base\",\n\"default\",\"sbrief\"],'Rule,subscript-simple,brief,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"brief\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"au carr\\u00e9\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubique\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,brief,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"brief\",\"sbrief\"],'Rule,overscore,default,[t] \"suscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,double-overscore,default,[t] \"sus-suscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,underscore,default,[t] \"souscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),\n'Rule,double-underscore,default,[t] \"sous-souscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"d\\u00e9but matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin matrice\"',\n\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",'[t] \"matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin matrice\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"avec \\u00e9tiquette\"; [n] content/*[1]; [t] \"fin \\u00e9tiquette\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"\\u00e9tiquette\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"\\u00e9tiquette\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"vide\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\n\"matrix-cell\",\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"vide\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"d\\u00e9but d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [t] \"\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",\n'[t] \"d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin d\\u00e9terminant\"'],'Rule{determinant-simple{default{[t] \"d\\u00e9but d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e\",grammar:simpleDet); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] \"d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e\",grammar:simpleDet); [t] \"fin d\\u00e9terminant\"'],'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"d\\u00e9but tableau\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\n\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"tableau\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::table\"],'Rule,binomial,default,[t] \"d\\u00e9but binomiale\"; [n] children/*[2]/children/*[1]; [t] \"parmi\"; [n] children/*[1]/children/*[1];  [t] \"fin binomiale\",self::vector,@role=\"binomial\"'.split(\",\"),'Rule,binomial,sbrief,[t] \"binomiale\"; [n] children/*[1]/children/*[1]; [t] \"parmi\"; [n] children/*[2]/children/*[1];  [t] \"fin binomiale\",self::vector,@role=\"binomial\"'.split(\",\"),\n[\"Rule\",\"cases\",\"default\",'[t] \"d\\u00e9but tableau\"; [n] content/*[1]; [t] \"\\u00e9largie\";[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"tableau\"; [n] content/*[1]; [t] \"\\u00e9largie\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"avec etiquette\"; [n] content/*[1]; [t] \"fin etiquette\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),\n[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"etiquette\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"etiquette\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),'Rule;empty-line;default;[t] \"vide\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\n\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"avec etiquette\"; [n] content/*[1]; [t] \"fin etiquette\" (pause: 200); [t] \"vide\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"etiquette\"; [n] content/*[1] (pause: 200); [t] \"vide\"'],[\"SpecializedRule\",\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"d\\u00e9but enfermer en\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"fin enfermer\"',\n\"self::enclose\"],'Rule,overbar,default,[t] \"d\\u00e9but trait suscrit\"; [n] children/*[1]; [t] \"fin trait suscrit\",self::enclose,@role=\"top\"'.split(\",\"),'Rule,underbar,default,[t] \"d\\u00e9but trait souscrit\"; [n] children/*[1]; [t] \"fin trait souscrit\",self::enclose,@role=\"bottom\"'.split(\",\"),'Rule,leftbar,default,[t] \"barre verticale\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"barre verticale\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[1]; [t] \"fin biff\\u00e9\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[1]/children/*[1]; [t] \"avec\"; [n] children/*[2]; [t] \"fin biff\\u00e9\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[2]/children/*[1]; [t] \"avec\"; [n] children/*[1]; [t] \"fin biff\\u00e9\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[n] children/*[1]; [t] \"carr\\u00e9\",self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[n] children/*[1]; [t] \"cubique\",self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"r\\u00e9ciproque\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"par\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"par\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakGerman={locale:\"de\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],\n[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] \"kollabiert\"{self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],\n[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"leer\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{name(self::*)!=\"number\"{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\";self::*'.split(\";\"),'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!=\"number\"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),\n'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Zahl\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule{number-as-upper-word{default{[t] \"Wort gro\\u00df\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"Grundlinie\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\n\"brief\",'[t] \"Grund\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"Grundlinie\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\n\"default\",\"brief\",'[t] \"Grund\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"minus\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"Anfang Betrag\"; [n] children/*[1]; [t] \"Ende Betrag\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"Betrag\"; [n] children/*[1]; [t] \"Ende Betrag\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"Anfang Menge\"; [n] children/*[1]; [t] \"Ende Menge\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\"default\",\"sbrief\",\n'[t] \"Menge\"; [n] children/*[1]; [t] \"Ende Menge\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"Fakult\\u00e4t\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"minus\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"Strich\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"zwei Strich\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"drei Strich\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"vier Strich\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"Strich\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\n\"vulgar-fraction\",\"default\",\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"Kettenbruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),'Rule,continued-fraction-inner,default,[t] \"Anfang Bruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"sbrief\",'[t] \"Bruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),\n\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\n\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"Ende \\u00dcberschrift\"',\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"Ende Unterschrift\"',\"self::limlower\"],\n[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"Ende \\u00dcberschrift\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"Index\"; [n] children/*[2];[t] \"Hoch\"; [n] children/*[3]; [t] \"Grundlinie\";,self::limboth,@role=\"integral\"'.split(\",\"),\n[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Index\"; [n] children/*[2];[t] \"Hoch\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),\n'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],\n'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-simple\",\"default\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"Quadrat\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"Kubik\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"sbrief\"],'Rule,overscore,default,[t] \"modifiziert oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"mod oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"modifiziert oben oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"mod oben oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"modifiziert unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"mod unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\n\"sbrief\"],'Rule,double-underscore,default,[t] \"modifiziert unten unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"mod unten unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"\\u00dcberstrich\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,underbar,default,[n] children/*[1]; [t] \"Unterstrich\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule,overtilde,default,[n] children/*[1]; [t] \"Tilde oben\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n'Rule,undertilde,default,[n] children/*[1]; [t] \"Tilde unten\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Matrize\"',\n\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Matrize\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"Bezeichner\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"Bezeichner\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"Blank\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"leer\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Determinante\"'],\n'Rule{determinant-simple{default{[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile\",grammar:simpleDet); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile\",grammar:simpleDet); [t] \"Ende Determinante\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"Anfang Anordnung\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Anordnung\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"Anordnung\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Anordnung\"',\"self::table\"],'Rule,binomial,default,[t] \"Anfang Binomialkoeffizient\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomialkoeffizient\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,brief,[t] \"Anfang Binomial\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomial\",self::vector,@role=\"binomial\"'.split(\",\"),'Rule,binomial,sbrief,[t] \"Binomial\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomial\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"Anfang Fallunterscheidung\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Fallunterscheidung\"',\n\"self::cases\"],[\"Rule\",\"cases\",\"brief\",'[t] \"Anfang F\\u00e4lle\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende F\\u00e4lle\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"F\\u00e4lle\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende F\\u00e4lle\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),\n[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"Bezeichner\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"Bezeichner\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),'Rule;empty-line;default;[t] \"leer\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\n\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\"(pause: 200); [t] \"leer\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"Bezeichner\"; [n] content/*[1] (pause: 200); [t] \"leer\"'],[\"SpecializedRule\",\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"Anfang Umschlie\\u00dfung\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"Ende Umschlie\\u00dfung\"',\n\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"senkrechter Strich\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"senkrechter Strich\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"durchgestrichen\"; [n] children/*[1]; [t] \"Ende duchgestrichen\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"durchgestrichen\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[2]; [t] \"Ende duchgestrichen\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"durchgestrichen\"; [n] children/*[2]/children/*[1]; [t] \"mit\"; [n] children/*[1]; [t] \"Ende duchgestrichen\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[t] \"Quadrat\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"Kubik\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[n] children/*[1]; [t] \"invers\",self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"pro\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"pro\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\"),[\"Rule\",\"inference\",\"default\",'[t] \"Schlussregel\"; [m] content/*; [t] \"mit Folgerung\"; [n] children/*[1]; [t] \"aus\"; [t] count(children/*[2]/children/*); [t] \"Pr\\u00e4missen\"',\n\"self::inference\"],'Rule,inference,default,[t] \"Schlussregel\"; ; [m] content/*; [t] \"mit Folgerung\"; [n] children/*[1]; [t] \"aus\"; [t] count(children/*[2]/children/*); [t] \"Pr\\u00e4misse\",self::inference,count(children/*[2]/children/*)<2'.split(\",\"),[\"Rule\",\"premise\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Pr\\u00e4misse \");',\"self::premises\"],[\"Rule\",\"conclusion\",\"default\",\"[n] children/*[1]\",\"self::conclusion\"],[\"Rule\",\"label\",\"default\",'[t] \"Regel\"; [n] children/*[1]',\"self::rulelabel\"],\n'Rule,axiom,default,[t] \"Axiom\"; [m] children/*[1];,self::inference,@role=\"axiom\"'.split(\",\"),'Rule,axiom,default,[t] \"leeres Axiom\";,self::empty,@role=\"axiom\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakRules={domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],\n[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*[@alternative]{not(contains(@grammar, \"collapsed\"))'.split(\"{\"),[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\n\"sbrief\"],[\"Rule\",\"direct-speech\",\"default\",\"[t] @ext-speech\",\"self::*[@ext-speech]\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"Blank\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule{german-font{default{[t] \"German\"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"fraktur\"'.split(\"{\"),\n'Rule{german-font{default{[t] \"bold German\"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"bold-fraktur\"'.split(\"{\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Number\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n[\"SpecializedRule\",\"number-with-chars\",\"default\",\"brief\",'[t] \"Num\"; [m] CQFspaceoutNumber (grammar:protected)'],[\"SpecializedRule\",\"number-with-chars\",\"brief\",\"sbrief\"],'Rule{number-as-upper-word{default{[t] \"UpperWord\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"Baseline\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\n\"brief\",'[t] \"Base\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"Baseline\"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\"default\",\"brief\",\n'[t] \"Base\"; [t] @font; [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"minus\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"StartAbsoluteValue\"; [n] children/*[1]; [t] \"EndAbsoluteValue\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"AbsoluteValue\"; [n] children/*[1]; [t] \"EndAbsoluteValue\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"StartSet\"; [n] children/*[1]; [t] \"EndSet\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\"default\",\n\"sbrief\",'[t] \"Set\"; [n] children/*[1]; [t] \"EndSet\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"minus\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prime\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"double prime\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prime\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"quadruple prime\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\n\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"ContinuedFraction\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"ContinuedFrac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"StartFraction\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"brief\",'[t] \"StartFrac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"Frac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\n\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\n\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"Endscripts\"',\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"Endscripts\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\n\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"Endscripts\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"Subscript\"; [n] children/*[2];[t] \"Superscript\"; [n] children/*[3]; [t] \"Baseline\";,self::limboth,@role=\"integral\"'.split(\",\"),\n[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Sub\"; [n] children/*[2];[t] \"Sup\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),\n'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],\n'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-simple\",\"default\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"squared\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"sbrief\"],'Rule,overscore,default,[t] \"ModifyingAbove\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"ModAbove\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"ModifyingAbove Above\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"ModAbove Above\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"ModifyingBelow\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"ModBelow\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\n\"sbrief\"],'Rule,double-underscore,default,[t] \"ModifyingBelow Below\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"ModBelow Below\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"overbar\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n[\"SpecializedRule\",\"overbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"overBar\"'],[\"SpecializedRule\",\"overbar\",\"brief\",\"sbrief\"],'Rule,underbar,default,[n] children/*[1]; [t] \"underbar\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"underbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"underBar\"'],\n[\"SpecializedRule\",\"underbar\",\"brief\",\"sbrief\"],'Rule,overtilde,default,[n] children/*[1]; [t] \"overTilde\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),[\"SpecializedRule\",\"overtilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"overtilde\"'],[\"SpecializedRule\",\"overtilde\",\"brief\",\"sbrief\"],'Rule,undertilde,default,[n] children/*[1]; [t] \"underTilde\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n[\"SpecializedRule\",\"undertilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"undertilde\"'],[\"SpecializedRule\",\"undertilde\",\"brief\",\"sbrief\"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Matrix\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndMatrix\"',\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",\n'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Matrix\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndMatrix\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"Label\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"Label\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"Blank\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"Blank\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndDeterminant\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndDeterminant\"'],\n'Rule{determinant-simple{default{[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row\",grammar:simpleDet); [t] \"EndDeterminant\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row\",grammar:simpleDet); [t] \"EndDeterminant\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"StartLayout\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"Layout\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::table\"],'Rule,binomial,default,[t] \"StartBinomialOrMatrix\"; [n] children/*[1]/children/*[1]; [t] \"Choose\"; [n] children/*[2]/children/*[1];  [t] \"EndBinomialOrMatrix\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,sbrief,[t] \"BinomialOrMatrix\"; [n] children/*[1]/children/*[1]; [t] \"Choose\"; [n] children/*[2]/children/*[1];  [t] \"EndBinomialOrMatrix\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"StartLayout\"; [t] \"Enlarged\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"Layout\"; [t] \"Enlarged\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\n\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"Label\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"Label\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),\n'Rule;empty-line;default;[t] \"Blank\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [t] \"Blank\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"Label\"; [n] content/*[1] (pause: 200); [t] \"Blank\"'],[\"SpecializedRule\",\"empty-line-with-label\",\n\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"StartEnclose\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"EndEnclose\"',\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"vertical bar\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"vertical bar\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"CrossOut\"; [n] children/*[1]; [t] \"EndCrossOut\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"CrossOut\"; [n] children/*[1]/children/*[1]; [t] \"With\"; [n] children/*[2]; [t] \"EndCrossOut\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"CrossOut\"; [n] children/*[2]/children/*[1]; [t] \"With\"; [n] children/*[1]; [t] \"EndCrossOut\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"per\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\"),[\"Rule\",\"inference\",\"default\",'[t] \"inference rule\"; [m] content/*; [t] \"with conclusion\"; [n] children/*[1]; [t] \"and\"; [t] count(children/*[2]/children/*); [t] \"premises\"',\n\"self::inference\"],'Rule,inference,default,[t] \"inference rule\"; ; [m] content/*; [t] \"with conclusion\"; [n] children/*[1]; [t] \"and\"; [t] count(children/*[2]/children/*); [t] \"premise\",self::inference,count(children/*[2]/children/*)<2'.split(\",\"),[\"Rule\",\"premise\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"premise \");',\"self::premises\"],[\"Rule\",\"conclusion\",\"default\",\"[n] children/*[1]\",\"self::conclusion\"],[\"Rule\",\"label\",\"default\",'[t] \"label\"; [n] children/*[1]',\"self::rulelabel\"],\n'Rule,axiom,default,[t] \"axiom\"; [m] children/*[1];,self::inference,@role=\"axiom\"'.split(\",\"),'Rule,axiom,default,[t] \"empty axiom\";,self::empty,@role=\"axiom\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakSpanishUtil={};sre.MathspeakSpanishUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.numberToOrdinal(++c,!1)+\" \"+b}};sre.MathspeakSpanishUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&10>=b?[a]:[]};sre.UnitUtil={};sre.UnitUtil.unitMultipliers=function(a,b){var c=0;return function(){var d=sre.AuditoryDescription.create({text:sre.UnitUtil.rightMostUnit(a[c])&&sre.UnitUtil.leftMostUnit(a[c+1])?sre.Messages.UNIT_TIMES:\"\"},{});c++;return[d]}};sre.UnitUtil.SCRIPT_ELEMENTS=[sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.UNDERSCORE];\nsre.UnitUtil.rightMostUnit=function(a){for(;a;){if(\"unit\"===a.getAttribute(\"role\"))return!0;var b=a.tagName;a=sre.XpathUtil.evalXPath(\"children/*\",a);a=-1!==sre.UnitUtil.SCRIPT_ELEMENTS.indexOf(b)?a[0]:a[a.length-1]}return!1};sre.UnitUtil.leftMostUnit=function(a){for(;a;){if(\"unit\"===a.getAttribute(\"role\"))return!0;a=sre.XpathUtil.evalXPath(\"children/*\",a)[0]}return!1};\nsre.UnitUtil.oneLeft=function(a){for(;a;){if(\"number\"===a.tagName&&\"1\"===a.textContent)return[a];if(\"infixop\"!==a.tagName||\"multiplication\"!==a.getAttribute(\"role\")&&\"implicit\"!==a.getAttribute(\"role\"))break;a=sre.XpathUtil.evalXPath(\"children/*\",a)[0]}return[]};sre.MathspeakSpanish={locale:\"es\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",sre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",\nsre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CQF\",\"CQFisSmallRoot\",sre.MathspeakSpanishUtil.smallRoot],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],\n[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],\n[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.MathspeakSpanishUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],\n[\"CTXF\",\"CTXFunitMultipliers\",sre.UnitUtil.unitMultipliers],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFoneLeft\",sre.UnitUtil.oneLeft],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] \"plegado\";{self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"SpecializedRule\",\n\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"espacio\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"m\\u00e1s\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{number-with-chars{default{[t] \"n\\u00famero\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),[\"SpecializedRule\",\"number-with-chars\",\"default\",\"brief\",'[t] \"n\\u00fam\"; [m] CQFspaceoutNumber (grammar:protected)'],[\"SpecializedRule\",\"number-with-chars\",\"brief\",\"sbrief\"],'Rule{number-as-upper-word{default{[t] \"may\\u00fascula\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"l\\u00ednea base\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\n\"default\",\"brief\",'[t] \"base\"; [n] text()'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"l\\u00ednea base\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\n\"default\",\"brief\",'[t] \"base\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"menos\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"menos\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"menos\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"empezar valor absoluto\"; [n] children/*[1]; [t] \"finalizar valor absoluto\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"valor absoluto\"; [n] children/*[1]; [t] \"finalizar valor absoluto\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"empezar llave\"; [n] children/*[1]; [t] \"finalizar llave\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\n\"fences-set\",\"default\",\"sbrief\",'[t] \"llave\"; [n] children/*[1]; [t] \"finalizar llave\"'],[\"Rule\",\"text\",\"default\",\"[n] text() (grammar:noTranslateText)\",\"self::text\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"menos\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prima\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"doble prima\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prima\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"cuadruplicar prima\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule,continued-fraction-outer,default,[t] \"fracci\\u00f3n continua\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"frac continua\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"empezar fracci\\u00f3n\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\n\"brief\",'[t] \"empezar frac\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"frac\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\n\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\n\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"finalizar \\u00edndices\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"finalizar \\u00edndices\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"finalizar \\u00edndices\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\n\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"definida\"; [t] \"sub\\u00edndice\"; [n] children/*[2];[t] \"super\\u00edndice\"; [n] children/*[3]; [t] \"l\\u00ednea base\";,self::limboth,@role=\"integral\"'.split(\",\"),[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Sub\"; [n] children/*[2];[t] \"Sup\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\n\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\n\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"al cuadrado\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"al cubo\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,overscore,default,[t] \"modificando superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"mod superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"modificando superior superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"mod superior superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],\n[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"modificando inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"mod inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\"sbrief\"],'Rule,double-underscore,default,[t] \"modificando inferior inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"mod inferior inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"barra\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"overbar\",\n\"default\",\"brief\",'[n] children/*[1]; [t] \"barra\"'],[\"SpecializedRule\",\"overbar\",\"brief\",\"sbrief\"],'Rule,underbar,default,[n] children/*[1]; [t] \"subbarra\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"underbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"subbarra\"'],[\"SpecializedRule\",\"underbar\",\n\"brief\",\"sbrief\"],'Rule,overtilde,default,[n] children/*[1]; [t] \"tilde\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),[\"SpecializedRule\",\"overtilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"tilde\"'],[\"SpecializedRule\",\"overtilde\",\"brief\",\"sbrief\"],'Rule,undertilde,default,[n] children/*[1]; [t] \"subtilde\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n[\"SpecializedRule\",\"undertilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"subtilde\"'],[\"SpecializedRule\",\"undertilde\",\"brief\",\"sbrief\"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"empezar matriz\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar matriz\"',\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",\n'[t] \"matriz\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\" \"); [t] \"finalizar matriz\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"etiqueta\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"etiqueta\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"espacio\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"espacio\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"empezar determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar determinante\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] \"determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar determinante\"'],\n'Rule{determinant-simple{default{[t] \"empezar determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila\",grammar:simpleDet); [t] \"finalizar determinante\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] \"determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila\",grammar:simpleDet); [t] \"finalizar determinante\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"empezar esquema\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"esquema\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::table\"],'Rule,binomial,default,[t] \"empezar binomial\"; [n] children/*[1]/children/*[1]; [t] \"en\"; [n] children/*[2]/children/*[1];  [t] \"finalizar binomial\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,sbrief,[t] \"binomial\"; [n] children/*[1]/children/*[1]; [t] \"en\"; [n] children/*[2]/children/*[1];  [t] \"finalizar binomial\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"empezar esquema\"; [n] content/*[1]; [t] \"alargada\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"esquema\"; [n] content/*[1]; [t] \"alargada\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\n\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"etiqueta\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"etiqueta\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),\n'Rule;empty-line;default;[t] \"espacio\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [t] \"espacio\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"etiqueta\"; [n] content/*[1] (pause: 200); [t] \"espacio\"'],[\"SpecializedRule\",\n\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"empezar rodear\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"finalizar rodear\"',\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"barra vertical\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"barra vertical\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"tachado\"; [n] children/*[1]; [t] \"finalizar tachado\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"tachado\"; [n] children/*[1]/children/*[1]; [t] \"con\"; [n] children/*[2]; [t] \"finalizar tachado\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"tachado\"; [n] children/*[2]/children/*[1]; [t] \"con\"; [n] children/*[1]; [t] \"finalizar tachado\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit-singular;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-plural;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\";not(contains(@grammar, \"singularUnit\"))'.split(\";\"),'Rule,unit-square,default,[n] children/*[1]; [t] \"cuadrado\",self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),\n'Rule,unit-cubic,default,[n] children/*[1]; [t] \"c\\u00fabico\",self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"rec\\u00edproco\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),'Rule,reciprocal,default,[t] \"por\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),\n'Rule;unit-combine;default;[m] children/* (sepFunc:CTXFunitMultipliers);self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-combine-mult,default,[m] children/* (sepFunc:CTXFunitMultipliers);,self::infixop,@role=\"multiplication\" or @role=\"implicit\",children/*[@role=\"unit\"]'.split(\",\"),'Rule{unit-combiner-singular{default{[n] children/*[1]; [t] \"por\"; [m] children/*[position()>1] (grammar:!singularUnit, sepFunc:CTXFunitMultipliers){self::infixop{@role=\"unit\"{name(children/*[1])!=\"number\"{contains(@grammar, \"singularUnit\"){count(children/*)>1'.split(\"{\"),\n'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [t] \"por\"; [m] children/*[position()>2] (sepFunc:CTXFunitMultipliers),self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1]'.split(\",\"),'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); ,self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1],count(children/*)=2'.split(\",\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"por\"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role=\"unit\"'.split(\",\")],\ninitialize:[sre.MathspeakUtil.generateTensorRules]};sre.NemethUtil={};sre.NemethUtil.openingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_START};sre.NemethUtil.closingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_END};sre.NemethUtil.overFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_OVER};\nsre.NemethUtil.overBevelledFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+\"\\u2838\"+sre.Messages.MS.FRACTION_OVER};sre.NemethUtil.nestedRadical=function(a,b){a=sre.NemethUtil.radicalNestingDepth(a);return 1===a?b:Array(a).join(sre.Messages.MS.NESTED)+b};sre.NemethUtil.radicalNestingDepth=function(a,b){b=b||0;return a.parentNode?sre.NemethUtil.radicalNestingDepth(a.parentNode,\"root\"===a.tagName||\"sqrt\"===a.tagName?b+1:b):b};\nsre.NemethUtil.openingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.STARTROOT)};sre.NemethUtil.closingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ENDROOT)};sre.NemethUtil.indexRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ROOTINDEX)};\nsre.NemethUtil.enlargeFence=function(a){if(1===a.length)return\"\\u2820\"+a;var b=a.split(\"\");return b.every(function(c){return\"\\u2833\"===c})?\"\\u2820\"+b.join(\"\\u2820\"):a.slice(0,1)+\"\\u2820\"+a.slice(1)};sre.Grammar.getInstance().setCorrection(\"enlargeFence\",sre.NemethUtil.enlargeFence);sre.NemethUtil.NUMBER_PROPAGATORS_=[sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.APPL];\nsre.NemethUtil.checkParent_=function(a){a=a.parent;if(!a)return!1;var b=a.type;return-1!==sre.NemethUtil.NUMBER_PROPAGATORS_.indexOf(b)||b===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE?!0:!1};sre.NemethUtil.propagateNumber=function(a,b){if(!a.childNodes.length)return sre.NemethUtil.checkParent_(a)&&(b.number=!0),[b.number?\"number\":\"\",{number:!1}];sre.NemethUtil.checkParent_(a)&&(b.number=!0);return[\"\",b]};\nsre.NemethUtil.numberIndicator=function(){return new sre.SemanticVisitor(\"nemeth\",sre.NemethUtil.propagateNumber,{number:!0})};sre.NemethUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.NemethUtil.numberIndicator())};sre.NemethUtil.componentString_={2:\"CSFbaseline\",1:\"CSFsubscript\",0:\"CSFsuperscript\"};sre.NemethUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};\nsre.NemethUtil.generateTensorRuleStrings_=function(a){var b=[],c=\"\";a=parseInt(a,2);for(var d=0;5>d;d++){var e=\"children/*[\"+sre.NemethUtil.childNumber_[d]+\"]\";a&1?c=\"[t] \"+sre.NemethUtil.componentString_[d%3]+\"Verbose; [n] \"+e+\";\"+c:b.unshift(\"name(\"+e+')=\"empty\"');a>>=1}b.push(c);return b};\nsre.NemethUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a);a=goog.bind(a.defineRulesAlias,a);for(var c=\"11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100\".split(\" \"),d=0,e;e=c[d];d++){var f=\"tensor\"+e;e=sre.NemethUtil.generateTensorRuleStrings_(e);var g=e.pop(),h=[f,\"default\",g,\"self::tensor\"].concat(e);b.apply(null,h);g+=\"; [t]\"+sre.NemethUtil.componentString_[2]+\"Verbose\";f+=\"-baseline\";h=[f,\"default\",g,\"self::tensor\",\"following-sibling::*\"].concat(e);b.apply(null,\nh);f=[f,\"self::tensor\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished\"].concat(e);a.apply(null,f)}};sre.NemethRules={locale:\"nemeth\",modality:\"braille\",domain:\"default\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFraction\",sre.NemethUtil.openingFraction],[\"CSF\",\"CSFcloseFraction\",sre.NemethUtil.closingFraction],[\"CSF\",\"CSFoverFraction\",sre.NemethUtil.overFraction],[\"CSF\",\"CSFoverBevFraction\",sre.NemethUtil.overBevelledFraction],\n[\"CSF\",\"CSFopenRadicalVerbose\",sre.NemethUtil.openingRadical],[\"CSF\",\"CSFcloseRadicalVerbose\",sre.NemethUtil.closingRadical],[\"CSF\",\"CSFindexRadicalVerbose\",sre.NemethUtil.indexRadical],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],\n[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:[\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::*;@role=\"protected\"'.split(\";\"),\n[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"\\u2800\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;@role!=\"greekletter\";not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule{number-indicator{default{[t] \"\\u283c\"; [n] text() (pause:10){self::number{contains(@annotation, \"nemeth:number\"){not(ancestor::sqrt){not(ancestor::root){not(ancestor::fraction)'.split(\"{\"),\n[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"\\u2838\\u2839\"; [n] children/*[2]/children/*[1]; [t] \"\\u280c\"; [n] children/*[2]/children/*[2]; [t] \"\\u2838\\u283c\",self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"\\u283c\"; [m] CQFspaceoutNumber{self::number{\"\" != translate(text(), \"0123456789.,\", \"\"){text() != translate(text(), \"0123456789.,\", \"\")'.split(\"{\"),'Rule{number-as-upper-word{default{[t] \"UpperWord\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n'Rule{number-baseline{default{[t] \"\\u2810\"; [n] text(){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),'Rule{number-baseline-font{default{[t] \"\\u2810\"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),\n'Rule;identifier;default;[n] text();self::identifier;@role=\"protected\"'.split(\";\"),'Rule,negative,default,[t] \"\\u2824\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[n] text(); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [n] text()\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),\n[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],[\"Rule\",\"function-named\",\"default\",'[n] children/*[1]; [t] \"\\u2800\"; [n] children/*[2]',\"self::appl\"],'Rule,function-prefix,default,[n] content/*[1]; [t] \"\\u2800\"; [n] children/*[1],self::prefixop,content/*[1][@role=\"infix function\"]'.split(\",\"),'Rule,function-infix,default,[n] children/*[1]; [n] content/*[1]; [t] \"\\u2800\"; [n] children/*[2],self::infixop,@role=\"infix function\"'.split(\",\"),\n'Rule,function-simple,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"simple function\"]'.split(\",\"),[\"Rule\",\"fences-open-close\",\"default\",\"[n] content/*[1]; [n] children/*[1]; [n] content/*[2]\",\"self::fenced\"],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"\\u282f\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),\n'Rule;single-prime;default;[t] \"\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),'Rule;triple-prime;default;[t] \"\\u2804\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"\\u2804\\u2804\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverFraction; [n] children/*[2]; [t] CSFcloseFraction\",\n\"self::fraction\"],'Rule{bevelled-fraction{default{[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverBevFraction; [n] children/*[2]; [t] CSFcloseFraction{self::fraction{contains(@annotation, \"general:bevelled\")'.split(\"{\"),[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"root\",\"default\",'[t] CSFindexRadicalVerbose; [n] children/*[1];[t] \"\\u281c\"; [n] children/*[2]; [t] CSFcloseRadicalVerbose',\"self::root\"],'Rule,limboth,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"\\u283b\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"\\u283b\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"\\u283b\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\n\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"\\u2830\"; [n] children/*[2];[t] \"\\u2818\"; [n] children/*[3]; [t] \"\\u2810\",self::limboth,@role=\"integral\"'.split(\",\"),[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),\n[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"],self::*'.split(\",\"),'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,@role!=\"prefix function\",not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\n\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],\n'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,@role!=\"prefix function\",not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\n\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",\n'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n'Rule,overscore,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2823\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule{overscore{default{[n] children/*[1]; [t] \"\\u2823\"; [n] children/*[2]{self::overscore{children/*[2][@role=\"overaccent\"]{contains(@grammar, \"modified\")'.split(\"{\"),'Rule,double-overscore,default,[t] \"\\u2810\"; [n] children/*[1] (grammar:\"modified\"); [t] \"\\u2823\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n'Rule,underscore,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2829\"; [n] children/*[2]; [t] \"\\u283b\",self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),'Rule{underscore{default{[n] children/*[1]; [t] \"\\u2829\"; [n] children/*[2]{self::underscore{children/*[2][@role=\"underaccent\"]{contains(@grammar, \"modified\")'.split(\"{\"),'Rule,double-underscore,default,[t] \"\\u2810\"; [n] children/*[1] (grammar:\"modified\"); [t] \"\\u2829\"; [n] children/*[2]; [t] \"\\u283b\",self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),\n'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[m] children/* (separator:\"\\u2800\", join:\"\");',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:\"\\u2800\"); [n] ../../content/*[2] (grammar:enlargeFence); ',\"self::row\"],[\"Aliases\",\"matrix-row\",\"self::line\",'@role=\"vector\"'],[\"Aliases\",\"matrix-row\",\n\"self::line\",'@role=\"binomial\"'],'Rule{row-with-label{default{[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),'Rule;empty-row;default;[t] \"\\u2800\" (pause:300);self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],'Rule;empty-cell;default;[t] \"\\u2800\" (pause: 300);self::cell;count(children/*)=0'.split(\";\"),[\"Rule\",\"layout\",\"default\",'[m] children/* (separator:\"\\u2800\", join:\"\");',\n\"self::table\"],[\"Rule\",\"cases\",\"default\",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:\"\\u2800\"); [t] \"\\u2810\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),'Rule;empty-line;default;[t] \"\\u2800\";self::line;count(children/*)=0;not(content)'.split(\";\"),'Rule,empty-line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [t] \"Blank\",self::line,count(children/*)=0,content'.split(\",\"),\n[\"Rule\",\"enclose\",\"default\",'[t] \"StartEnclose\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"EndEnclose\"',\"self::enclose\"],'Rule,overbar,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2823\\u2831\\u283b\",self::enclose,@role=\"top\"'.split(\",\"),'Rule,underbar,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2829\\u2831\\u283b\",self::enclose,@role=\"bottom\"'.split(\",\"),'Rule,leftbar,default,[t] \"\\u2833\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"\\u2833\",self::enclose,@role=\"right\"'.split(\",\"),\n'Rule,crossout,default,[t] \"\\u282a\"; [n] children/*[1]; [t] \"\\u283b\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),'Rule,cancel,default,[t] \"\\u282a\"; [n] children/*[1]/children/*[1]; [t] \"\\u282a\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],\n'Rule,cancel-reverse,default,[t] \"\\u282a\"; [n] children/*[2]/children/*[1]; [t] \"\\u282a\"; [n] children/*[1]; [t] \"\\u283b\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),\n'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule{punctuation{default{[n] text(); [t] \"\\u2810\"{self::punctuation{@role=\"fullstop\"{contains(@annotation, \"nemeth:number\")'.split(\"{\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule,punctuation-comma,default,[n] text(); [t] \"\\u2800\",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role!=\"fullstop\",@role!=\"vbar\"'.split(\",\"),\n'Rule,punctuation-ellipses,default,[t] \"\\u2800\"; [n] text(); [t] \"\\u2800\",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role=\"ellipsis\",name(preceding-sibling::*[1])!=\"punctuation\"'.split(\",\"),'Rule,punctuation-ellipses,default,[t] \"\\u2800\"; [n] text();,self::punctuation,parent::*/parent::punctuated,@role=\"ellipsis\",name(preceding-sibling::*[1])!=\"punctuation\"'.split(\",\"),'Rule,reference-sign,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[1])=\"text\" or (name(children/*[1])=\"punctuated\" and children/*[1][@role=\"text\"]),name(children/*[2])=\"operator\" or name(children/*[2])=\"punctuation\"'.split(\",\"),\n'Rule,reference-number,default,[n] children/*[1]; [t] \"\\u2808\\u283b\"; [n] children/*[2]; [t] \"\\u2810\",self::superscript,name(children/*[1])=\"text\" or (name(children/*[1])=\"punctuated\" and children/*[1][@role=\"text\"]),name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\")],initialize:[sre.NemethUtil.generateTensorRules,sre.NemethUtil.addAnnotators]};sre.PrefixFrench={locale:\"fr\",modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"num\\u00e9rateur\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"d\\u00e9nominateur\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\" or name(../..)=\"limlower\" or name(../..)=\"limupper\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,base-limit,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"limboth\"'.split(\",\"),'Rule,exponent,default,[t] \"exposant\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"indice\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"indice suscrit\"; [p] (pause:200),self::*,name(../..)=\"overscore\" or name(../..)=\"limupper\" or name(../..)=\"limboth\",count(preceding-sibling::*)=1 or count(preceding-sibling::*)=2'.split(\",\"),\n'Rule,underscript,default,[t] \"indice souscrit\"; [p] (pause:200),self::*,name(../..)=\"underscore\" or name(../..)=\"limlower\" or name(../..)=\"limboth\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,radicand,default,[t] \"radicande\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"radicande\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"indice\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,leftsub,default,[t] \"indice inf\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice inf\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),'Rule,leftsuper,default,[t] \"indice sup\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice sup\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),\n'Rule,rightsub,default,[t] \"indice inf\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice inf\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),'Rule,rightsuper,default,[t] \"indice sup\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice sup\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),\n'Rule,choice,default,[t] \"nombre d\\'\\u00e9l\\u00e9ments choisis\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),'Rule,select,default,[t] \"nombre d\\'\\u00e9l\\u00e9ments disponibles\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"rang\\u00e9e\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],\n'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"colonne\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"colonne\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixGerman={modality:\"prefix\",locale:\"de\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"Z\\u00e4hler\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"Nenner\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"Basis\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"Exponent\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"Index\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"Oberer Grenzwert\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"Unterer Grenzwert\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"Radikand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"Radikand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"Wurzelexponent\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"linker unterer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition; [t] \"linker unterer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"linker oberer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] \"linker oberer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"rechter unterer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition; [t] \"rechter unterer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"rechter oberer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] \"rechter oberer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"Grundgesamtheit\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),'Rule,select,default,[t] \"Stichprobengr\\u00f6\\u00dfe\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),\n[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition; [t] \"Zeile\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] \"Spalte\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition; [t] \"Spalte\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixRules={modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"Numerator\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"Denominator\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"Base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"Exponent\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"Subscript\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"Overscript\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"Underscript\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"Radicand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"Radicand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"Index\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"Left Subscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition; [t] \"Left Subscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"Left Superscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] \"Left Superscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"Right Subscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition; [t] \"Right Subscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"Right Superscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] \"Right Superscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"Choice Quantity\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),'Rule,select,default,[t] \"Selection Quantity\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),\n[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition; [t] \"Row\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] \"Column\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition; [t] \"Column\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixSpanish={locale:\"es\",modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"numerador\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"denominador\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"exponente\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"sub\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"sobre\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"bajo\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"radicand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"radicand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"sub\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"sub\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"super\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"super\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"sub\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"sub\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"super\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"super\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"cantidad de elecci\\u00f3n\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,select,default,[t] \"cantidad de selecci\\u00f3n\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"fila\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"columna\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"columna\"; [p] (pause:200)',\n\"self::cell\"]]};sre.SemanticTreeRules={domain:\"default\",functions:[[\"CTXF\",\"CTXFnodeCounter\",sre.StoreUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),\n[\"Rule\",\"multrel\",\"default\",'[t] \"multirelation\"; [m] children/* (sepFunc:CTXFcontentIterator)',\"self::multirel\"],'Rule{variable-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),'Rule{multi-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2'.split(\"{\"),\n'Rule,equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2'.split(\",\"),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/identifier or ./children/number'.split(\",\"),'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/function or ./children/appl'.split(\",\"),\n[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule,variable-addition,default,[t] \"sum with variable number of summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(children/*)>2,children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,multi-addition,default,[t] \"sum with\"; [t] count(./children/*); [t] \"summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(./children/*)>2'.split(\",\"),\n[\"Rule\",\"prefix\",\"default\",'[t] \"prefix\"; [m] content/* (pause 150);[n] children/*[1]',\"self::prefixop\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,self::prefixop[@role=\"negative\"]'.split(\",\"),[\"Rule\",\"postfix\",\"default\",'[n] children/*[1]; [t] \"postfix\"; [m] content/* (pause 300)',\"self::postfixop\"],[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"fraction\",\"default\",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] \"divided by\"; [n] children/*[2] (rate:-0.35); [p] (pause:400)',\n\"self::fraction\"],[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"super\"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',\"self::superscript\"],[\"Rule\",\"subscript\",\"default\",'[n] children/*[1]; [t] \"sub\"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',\"self::subscript\"],'Rule,ellipsis,default,[p] (pause:200); [t] \"ellipsis\"; [p] (pause:300),self::punctuation,self::punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role=\"openfence\"]'.split(\";\"),\n[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"closefence\"]'],[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"vbar\"]'],[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"application\"]'],[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule,fences-open-close,default,[p] (pause:100); [n] content/*[1]; [n] children/*[1]; [n] content/*[2]; [p] (pause:100),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role=\"leftright\"],./parent::children/parent::appl'.split(\",\"),\n'Rule,fences-neutral,default,[p] (pause:100); [t] \"absolute value of\"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role=\"neutral\"]'.split(\",\"),[\"Rule\",\"omit-fences\",\"default\",\"[p] (pause:500); [n] children/*[1]; [p] (pause:200);\",\"self::fenced\"],[\"Rule\",\"matrix\",\"default\",'[t] \"matrix\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100)',\"self::matrix\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)','self::row[@role=\"matrix\"]'],\n[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"matrix\"]'],[\"Rule\",\"vector\",\"default\",'[t] \"vector\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"element\",pause:100)',\"self::vector\"],[\"Rule\",\"cases\",\"default\",'[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100)',\"self::cases\"],[\"Rule\",\"cases-row\",\"default\",\"[m] children/*\",'self::row[@role=\"cases\"]'],[\"Rule\",\"cases-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"cases\"]'],[\"Rule\",\n\"row\",\"default\",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)',\"self::row\"],'Rule{cases-end{default{[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100);[t] \"end cases\"{self::cases{following-sibling::*'.split(\"{\"),[\"Rule\",\"multiline\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"line\",pause:100)',\"self::multiline\"],'Rule{multiline-ineq{default{[t] \"multiline inequality\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100){self::multiline{@role=\"inequality\"'.split(\"{\"),\n[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],[\"Rule\",\"table\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200)',\"self::table\"],'Rule{table-ineq{default{[t] \"multiline inequality\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200){self::table{@role=\"inequality\"'.split(\"{\"),[\"Rule\",\"table-row\",\"default\",\"[m] children/* (pause:100)\",'self::row[@role=\"table\"]'],[\"Aliases\",\"cases-cell\",'self::cell[@role=\"table\"]'],'Rule;empty-cell;default;[t] \"Blank\";self::cell;count(children/*)=0'.split(\";\"),\n'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role=\"endpunct\"'.split(\",\"),'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/* (pause:100)\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],\n[\"Rule\",\"appl\",\"default\",\"[n] children/*[1]; [n] content/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,sum-only,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2]; [t] \"to\";[n] children/*[3],self::limboth,self::limboth[@role=\"sum\"]'.split(\",\"),[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[t] \"under\"; [n] children/*[3]; [p] (pause 250);',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2];',\"self::limlower\"],\n[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2];',\"self::limupper\"],[\"Rule\",\"largeop\",\"default\",\"[n] text()\",\"self::largeop\"],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[p] (pause 250);',\"self::bigop\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);\",\"self::integral\"],[\"Rule\",\"sqrt\",\"default\",'[t] \"Square root of\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\n\"self::sqrt\"],'Rule,square,default,[n] children/*[1]; [t] \"squared\" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=2],name(./children/*[1])!=\"text\"'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=3],name(./children/*[1])!=\"text\"'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"root of order\"; [n] children/*[1];[t] \"over\"; [n] children/*[2] (rate:0.35); [p] (pause:400)',\"self::root\"],[\"Rule\",\"text\",\"default\",\n\"[n] text(); [p] (pause:200)\",\"self::text\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"per\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] \"per\"; [n] children/*[2] (pitch:-0.3),self::fraction,@role=\"unit\"'.split(\",\")]};sre.SummaryFrench={locale:\"fr\",modality:\"summary\",rules:[[\"Rule\",\"collapsed-masculine\",\"default.masculine\",'[t] \"compress\\u00e9\"','contains(@grammar, \"collapsed\")'],[\"Rule\",\"collapsed-feminine\",\"default.feminine\",'[t] \"compress\\u00e9e\"','contains(@grammar, \"collapsed\")'],[\"Rule\",\"no-collapsed\",\"default.masculine\",'[t] \"\"','not(contains(@grammar, \"collapsed\"))'],[\"Rule\",\"no-collapsed\",\"default.feminine\",'[t] \"\"','not(contains(@grammar, \"collapsed\"))'],[\"Rule\",\"stree\",\"default.default\",\"[n] ./*[1]\",\n\"self::stree\"],'Rule{abstr-identifier{default.default{[t] \"identifiant long\"; [n] . (engine:style=masculine){self::identifier{contains(@grammar, \"collapsed\")'.split(\"{\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identifiant\"; [n] . (engine:style=masculine)',\"self::identifier\"],'Rule{abstr-number{default.default{[t] \"nombre long\"; [n] . (engine:style=masculine){self::number{contains(@grammar, \"collapsed\")'.split(\"{\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"nombre\"; [n] . (engine:style=masculine)',\n\"self::number\"],'Rule{abstr-mixed-number{default.default{[t] \"nombre fractionnaire long\"; [n] . (engine:style=masculine){self::number{@role=\"mixed\"{contains(@grammar, \"collapsed\")'.split(\"{\"),'Rule,abstr-mixed-number,default.default,[t] \"nombre fractionnaire\"; [n] . (engine:style=masculine),self::number,@role=\"mixed\"'.split(\",\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"texte\"; [n] . (engine:style=masculine)',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"expression fonctionnelle\"; [n] . (engine:style=feminine)',\n\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"fonction\"; [n] . (engine:style=feminine)',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-lim,default.default,[t] \"fonction de limitation\"; [n] . (engine:style=feminine),self::function,@role=\"limit function\"'.split(\",\"),'Rule,abstr-lim,mathspeak.brief,[t] \"lim\"; [n] . (engine:style=feminine),self::function,@role=\"limit function\"'.split(\",\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fraction\"; [n] . (engine:style=feminine)',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"; [n] . (engine:style=feminine)',\"self::fraction\"],[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-continued-fraction,default.default,[t] \"fraction continue\"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-continued-fraction,mathspeak.brief,[t] \"frac continue\"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\",\"),\n[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"racine carr\\u00e9e\"; [n] . (engine:style=feminine)',\"self::sqrt\"],'Rule,abstr-sqrt-nested,default.default,[t] \"racine carr\\u00e9e imbriqu\\u00e9e\"; [n] . (engine:style=feminine),self::sqrt,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule{abstr-root{default.default{[t] \"racine d\\'indice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"fin indice\"; [n] . (engine:style=feminine);{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"racine d\\'indice\"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"racine\"; [n] . (engine:style=feminine)',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"racine imbriqu\\u00e9e d\\'indice\"; [n] children/*[1] (engine:modality=speech); [t] \"fin indice\"; [n] . (engine:style=feminine);{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"racine imbriqu\\u00e9e d\\'indice\"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule,abstr-root-nested,mathspeak.brief,[t] \"racine imbriqu\\u00e9e\"; [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",'[t] \"puissance\"; [n] . (engine:style=feminine)',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"indice\"; [n] . (engine:style=masculine)',\"self::subscript\"],'Rule,abstr-subsup,default.default,[t] \"puissance avec index\"; [n] . (engine:style=feminine),self::superscript,name(children/*[1])=\"subscript\"'.split(\",\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=masculine)',\n\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"avec un nombre d\\'\\u00e9l\\u00e9ments variable\"; [n] . (engine:style=masculine),self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole); [n] . (engine:style=masculine)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"somme avec\"; [t] count(./children/*); [t] \"op\\u00e9randes\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\"'.split(\",\"),\n'Rule,abstr-addition,mathspeak.brief,[t] \"somme\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\"'.split(\",\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-addition,default.default,[t] \"somme avec un nombre variable d\\'op\\u00e9randes\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\",count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-multiplication,default.default,[t] \"produit avec\"; [t] count(./children/*); [t] \"facteurs\"; [n] . (engine:style=masculine);,self::infixop,@role=\"multiplication\"'.split(\",\"),\n'Rule,abstr-multiplication,mathspeak.brief,[t] \"produit\"; [n] . (engine:style=masculine),self::infixop,@role=\"multiplication\"'.split(\",\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule,abstr-var-multiplication,default.default,[t] \"produit avec un nombre de facteurs variable\"; [n] . (engine:style=masculine),self::infixop,@role=\"multiplication\",count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] \"vecteur de dimension\"; [t] count(./children/*); [n] . (engine:style=masculine)',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vecteur\"; [n] . (engine:style=masculine)',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-vector,default.default,[t] \"vecteur colonne de dimension n\"; [n] . (engine:style=masculine),self::vector,./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'Rule,abstr-binomial,default.default,[t] \"binomial\"; [n] . (engine:style=masculine),self::vector,@role=\"binomial\"'.split(\",\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] \"d\\u00e9terminant de dimension\"; [t] count(./children/*); [n] . (engine:style=masculine),self::matrix,@role=\"determinant\"'.split(\",\"),'Rule,abstr-determinant,mathspeak.brief,[t] \"d\\u00e9terminant\"; [n] . (engine:style=masculine),self::matrix,@role=\"determinant\"'.split(\",\"),\n[\"SpecializedRule\",\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-determinant,default.default,[t] \"d\\u00e9terminant de dimension n\"; [n] . (engine:style=masculine),self::matrix,@role=\"determinant\",./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-squarematrix,default.default,[t] \"matrice carr\\u00e9e de dimension\"; [t] count(./children/*); [n] . (engine:style=feminine),self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule,abstr-squarematrix,mathspeak.brief,[t] \"matrice carr\\u00e9e\"; [n] . (engine:style=feminine),self::matrix,@role=\"squarematrix\"'.split(\",\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] \"vecteur ligne de dimension\"; [t] count(./children/row/children/*); [n] . (engine:style=masculine),self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule,abstr-rowvector,mathspeak.brief,[t] \"vecteur ligne\"; [n] . (engine:style=masculine),self::matrix,@role=\"rowvector\"'.split(\",\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"vecteur ligne de dimension n\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] \"matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [n] . (engine:style=feminine)',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matrice\"; [n] . (engine:style=feminine)',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-matrix,default.default,[t] \"matrice de dimension n par m\"; [n] . (engine:style=feminine),self::matrix,./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"d\\u00e9claration de cas\";[t] \"avec\"; [t] count(children/*); [t] \"cas\"; [n] . (engine:style=feminine)',\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"d\\u00e9claration de cas\"; [n] . (engine:style=feminine)',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-cases,default.default,[t] \"d\\u00e9claration de cas variable\"; [n] . (engine:style=feminine),self::cases,./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"liste de longueur\"; [t] count(children/*) - count(content/*); [t] \"s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine)',\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"liste s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine)',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"liste de longueur variable s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine),self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]; [n] . (engine:style=masculine)\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",'[t] \"int\\u00e9grale\"; [n] . (engine:style=feminine)','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole); [n] . (engine:style=masculine);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(\",\"),\n'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [t] \"avec un nombre de \\u00e9l\\u00e9ments variable\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),'Rule,abstr-multirel,default.default,[t] \"s\\u00e9quence de relation\"; [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(\",\"),'Rule,abstr-multirel,mathspeak.brief,[t] \"s\\u00e9quence de relation\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(\",\"),\n[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-multirel,default.default,[t] \"s\\u00e9quence de relation avec un nombre de \\u00e9l\\u00e9ments variable\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"table avec\"; [t] count(children/*); [t] \"lignes et\";[t] count(children/*[1]/children/*); [t] \"colonnes\"; [n] . (engine:style=feminine);',\"self::table\"],\n[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole); [n] . (engine:style=masculine)',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"avec\";[t] count(children/*); [t] \"colonnes\"; [n] . (engine:style=feminine)',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole); [n] . (engine:style=feminine);',\"self::cell\"]]};sre.SummaryGerman={modality:\"summary\",locale:\"de\",rules:['Rule;abstr-identifier;default.default;[t] \"langer Bezeichner\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"Bezeichner\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"lange Zahl\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"Zahl\"',\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"langer gemischter Bruch\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),\n'Rule;abstr-mixed-number;default.default;[t] \"gemischter Bruch\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"Text\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"Funktionsausdruck\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"Funktion\"',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"Grenzwertfunktion\";self::function;@role=\"limit function\"'.split(\";\"),\n'Rule;abstr-lim;mathspeak.brief;[t] \"Grenzwert\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"Bruch\"',\"self::fraction\"],'Rule;abstr-continued-fraction;default.default;[t] \"Kettenbruch\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"Quadratwurzel\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"verschachtelte Quadratwurzel\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),\n'Rule{abstr-root{default.default{[t] \"Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=speech); [t] \"Exponentende\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"Wurzel\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"verschachtelte Wurzel mit Wurzelexponent\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"Ende Wurzelexponent\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"verschachtelte Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"verschachtelte Wurzel\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",\n'[t] \"Potenz\"',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"Index\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"Potenz mit Index\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"mit ver\\u00e4nderlicher Anzahl an Elementen\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"Summe mit\"; [t] count(./children/*); [t] \"Summanden\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"Summe\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"Summe mit ver\\u00e4nderlicher Anzahl an Summanden\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"Produkt mit\"; [t] count(./children/*); [t] \"Faktoren\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"Produkt\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"Produkt mit ver\\u00e4nderlicher Anzahl an Faktoren\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] count(./children/*) ; [t] \"dimensionaler Vektor\"',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"Vektor\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"n dimensionaler Vektor\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"Binomialkoeffizient\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] \"dimensionale Determinante\",self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"Determinante\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"n dimensionale Determinante\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] \"dimensionale quadratische Matrize\",self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"quadratische Matrize\";self::matrix;@role=\"squarematrix\"'.split(\";\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] \"dimensionaler Zeilenvektor\",self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"Zeilenvektor\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n dimensionaler Zeilenvektor\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"Matrize\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n mal m dimensionale Matrize\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"Fallunterscheidung\";[t] \"mit\"; [t] count(children/*); [t] \"F\\u00e4llen\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"Fallunterscheidung\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"Fallunterscheidung mit ver\\u00e4nderlicher Anzahl an F\\u00e4llen\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste der L\\u00e4nge\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste\";',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste\";[t] \"ver\\u00e4nderlicher L\\u00e4nge\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\n\"default.default\",'[t] \"Integral\"','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule{abstr-relation-seq{default.default{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\"; [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\"{self::relseq{count(./children/*)>2'.split(\"{\"),'Rule{abstr-relation-seq{mathspeak.brief{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\"{self::relseq{count(./children/*)>2'.split(\"{\"),\n[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-var-relation{default.default{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\";[t] \"mit ver\\u00e4nderlicher Anzahl an Elementen\"{self::relseq{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),\n'Rule,abstr-multirel,default.default,[t] \"Relationsequenz\"; [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\",self::multirel,count(./children/*)>2'.split(\",\"),'Rule;abstr-multirel;mathspeak.brief;[t] \"Relationsequenz\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"Relationsequenz mit ver\\u00e4nderlicher Anzahl an Elementen\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"Tabelle mit\"; [t] count(children/*); [t] \"Zeilen und\";[t] count(children/*[1]/children/*); [t] \"Spalten\"',\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"mit\";[t] count(children/*); [t] \"Spalten\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\n\"self::cell\"]]};sre.SummaryRules={modality:\"summary\",rules:['Rule;abstr-identifier;default.default;[t] \"long identifier\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identifier\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"long number\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"number\"',\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"long mixed number\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),\n'Rule;abstr-mixed-number;default.default;[t] \"mixed number\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"text\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"functional expression\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"function\"',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"limit function\";self::function;@role=\"limit function\"'.split(\";\"),\n'Rule;abstr-lim;mathspeak.brief;[t] \"lim\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fraction\"',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"',\"self::fraction\"],[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-continued-fraction;default.default;[t] \"continued fraction\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-continued-fraction;mathspeak.brief;[t] \"continued frac\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"square root\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"nested square root\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),'Rule{abstr-root{default.default{[t] \"root of index\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"endindex\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"root of index\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"root\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"nested root of index\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"endindex\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"nested root of index\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"nested root\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",'[t] \"power\"',\n\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"subscript\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"power with subscript\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"with\"; [t] count(./children/*); [t] \"elements\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"with variable number of elements\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"sum with\"; [t] count(./children/*); [t] \"summands\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"sum\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"sum with variable number of summands\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"product with\"; [t] count(./children/*); [t] \"factors\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"product\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"product with variable number of factors\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] count(./children/*) ; [t] \"dimensional vector\"',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vector\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"n dimensional vector\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"binomial\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] \"dimensional determinant\",self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"determinant\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"n dimensional determinant\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] \"dimensional square matrix\",self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"square matrix\";self::matrix;@role=\"squarematrix\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] \"dimensional row vector\",self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"row vector\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n dimensional row vector\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matrix\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n by m dimensional matrix\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"case statement\";[t] \"with\"; [t] count(children/*); [t] \"cases\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"case statement\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"case statement with variable number of cases\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[n] content/*[1]; [t] \"separated list\"; [t] \"of length\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[n] content/*[1]; [t] \"separated list\"',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[n] content/*[1]; [t] \"separated list\";[t] \"of variable length\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",'[t] \"integral\"',\n'@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] \"sequence\"; [t] \"with\"; [t] count(./children/*); [t] \"elements\",self::relseq,count(./children/*)>2'.split(\",\"),'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] \"sequence\",self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] \"sequence\"; [t] \"with variable number of elements\",self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),'Rule,abstr-multirel,default.default,[t] \"relation sequence\"; [t] \"with\"; [t] count(./children/*); [t] \"elements\",self::multirel,count(./children/*)>2'.split(\",\"),\n'Rule;abstr-multirel;mathspeak.brief;[t] \"relation sequence\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"relation sequence with variable number of elements\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"table with\"; [t] count(children/*); [t] \"rows and\";[t] count(children/*[1]/children/*); [t] \"columns\"',\n\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"with\";[t] count(children/*); [t] \"columns\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::cell\"]]};sre.SummarySpanish={locale:\"es\",modality:\"summary\",rules:[[\"Rule\",\"stree\",\"default.default\",\"[n] ./*[1]\",\"self::stree\"],'Rule;abstr-identifier;default.default;[t] \"identificador largo\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identificador\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"n\\u00famero largo\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"n\\u00famero\"',\n\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"n\\u00famero largo mixto\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),'Rule;abstr-mixed-number;default.default;[t] \"n\\u00famero mixto\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"texto\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"expresi\\u00f3n funcional\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"funci\\u00f3n\"',\"self::function\"],\n[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"funci\\u00f3n de l\\u00edmite\";self::function;@role=\"limit function\"'.split(\";\"),'Rule;abstr-lim;mathspeak.brief;[t] \"l\\u00edmite\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fracci\\u00f3n\"',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"',\"self::fraction\"],\n[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-continued-fraction;default.default;[t] \"fracci\\u00f3n continua\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),'Rule;abstr-continued-fraction;mathspeak.brief;[t] \"frac continua\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",\n'[t] \"ra\\u00edz cuadrada\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"ra\\u00edz cuadrada anidada\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),'Rule{abstr-root{default.default{[t] \"ra\\u00edz del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"finalizar de \\u00edndice\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),[\"Rule\",\"abstr-root\",\"default.default\",\n'[t] \"ra\\u00edz del \\u00edndice\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"ra\\u00edz\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"ra\\u00edz anidada del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"finalizar de \\u00edndice\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"ra\\u00edz anidada del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"ra\\u00edz anidada\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",\n'[t] \"potencia\"',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"sub\\u00edndice\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"potencia con sub\\u00edndice\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"con\"; [t] count(./children/*); [t] \"elementos\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"con una cantidad variable de elementos\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"suma con\"; [t] count(./children/*); [t] \"sumandos\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"suma\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"suma con n\\u00famero variable de sumandos\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"producto con\"; [t] count(./children/*); [t] \"factores\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"producto\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"producto con una cantidad variable de factores\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] \"vector de dimensi\\u00f3n\"; [t] count(./children/*)',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vector\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"vector de dimensi\\u00f3n n\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"binomio\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] \"determinante de dimensi\\u00f3n\"; [t] count(./children/*),self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"determinante\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"determinante de dimensi\\u00f3n n\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] \"matriz cuadrada de dimensi\\u00f3n\"; [t] count(./children/*),self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"matriz cuadrada\";self::matrix;@role=\"squarematrix\"'.split(\";\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] \"vector fila de dimensi\\u00f3n\"; [t] count(./children/row/children/*),self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"vector fila\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"vector fila de dimensi\\u00f3n n\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [t] \"matriz\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matriz\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"matriz de dimensi\\u00f3n n por m\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"declaraci\\u00f3n de caso\";[t] \"con\"; [t] count(children/*); [t] \"casos\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"declaraci\\u00f3n de caso\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"declaraci\\u00f3n de caso con n\\u00famero variable de casos\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"lista separada por\"; [n] content/*[1]; [t] \"de longitud\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"lista separada por\"; [n] content/*[1]',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"lista separada por\"; [n] content/*[1],[t] \"de longitud variable\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",\n'[t] \"integral\"','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] \"secuencia de\"; [t] @role (grammar:localRole); [t] \"con\"; [t] count(./children/*); [t] \"elementos\",self::relseq,count(./children/*)>2'.split(\",\"),'Rule,abstr-relation-seq,mathspeak.brief,[t] \"secuencia de\"; [t] @role (grammar:localRole),self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\n\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] \"secuencia de\"; [t] @role (grammar:localRole); [t] \"con una cantidad variable de elementos\",self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),\n'Rule,abstr-multirel,default.default,[t] \"secuencia de relaci\\u00f3n\"; [t] \"con\"; [t] count(./children/*); [t] \"elementos\",self::multirel,count(./children/*)>2'.split(\",\"),'Rule;abstr-multirel;mathspeak.brief;[t] \"secuencia de relaci\\u00f3n\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"secuencia de relaci\\u00f3n con n\\u00famero variable de elementos\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"mesa con\"; [t] count(children/*); [t] \"filas y\";[t] count(children/*[1]/children/*); [t] \"columnas\"',\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"con\";[t] count(children/*); [t] \"columnas\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);',\n\"self::cell\"]]};sre.SpeechRuleStores={};\nsre.SpeechRuleStores.RULE_SETS_={SemanticTreeRules:sre.SemanticTreeRules,MathspeakFrench:sre.MathspeakFrench,MathspeakGerman:sre.MathspeakGerman,MathspeakRules:sre.MathspeakRules,MathspeakSpanish:sre.MathspeakSpanish,NemethRules:sre.NemethRules,ClearspeakFrench:sre.ClearspeakFrench,ClearspeakGerman:sre.ClearspeakGerman,ClearspeakRules:sre.ClearspeakRules,EmacspeakRules:sre.EmacspeakRules,SummaryFrench:sre.SummaryFrench,SummaryGerman:sre.SummaryGerman,SummaryRules:sre.SummaryRules,SummarySpanish:sre.SummarySpanish,\nPrefixFrench:sre.PrefixFrench,PrefixGerman:sre.PrefixGerman,PrefixRules:sre.PrefixRules,PrefixSpanish:sre.PrefixSpanish};sre.SpeechRuleStores.availableSets=function(){return Object.keys(sre.SpeechRuleStores.RULE_SETS_)};sre.SpeechRuleStores.getConstructor=function(a){return(a=sre.SpeechRuleStores.RULE_SETS_[a])?a:null};sre.SpeechRuleEngine=function(){this.activeStore_=null;this.cache_={};this.ready_=!0;this.combinedStores_={};this.evaluators_={};this.ruleSets_={};sre.Engine.registerTest(goog.bind(function(a){return this.ready_},this))};goog.addSingletonGetter(sre.SpeechRuleEngine);\nsre.SpeechRuleEngine.prototype.parameterize=function(a){for(var b={},c=0,d=a.length;c<d;c++){var e=a[c];if(this.ruleSets_[e])b[e]=this.ruleSets_[e];else{var f=sre.SpeechRuleStores.getConstructor(e);if(f&&f.getInstance)b[e]=f.getInstance(),this.ruleSets_[e]=f.getInstance();else if(f){var g=this.storeFactory_(f.modality);g.parse(f);this.ruleSets_[e]=g;b[e]=g}}}this.parameterize_(b)};\nsre.SpeechRuleEngine.prototype.storeFactory_=function(a){return new ({braille:sre.BrailleStore,speech:sre.MathStore}[a]||sre.MathStore)};sre.SpeechRuleEngine.prototype.parameterize_=function(a){try{this.activeStore_=this.combineStores_(a)}catch(b){if(\"StoreError\"==b.name)console.error(\"Store Error:\",b.message);else throw b;}this.updateEngine()};sre.SpeechRuleEngine.prototype.clearCache=function(){this.cache_={}};sre.SpeechRuleEngine.prototype.forCache=function(a){for(var b in this.cache_)a(b,this.cache_[b])};\nsre.SpeechRuleEngine.prototype.getCacheForNode_=function(a){if(!a||!a.getAttribute)return null;a=a.getAttribute(\"id\");return\"undefined\"===a||\"\"===a?null:this.getCache(a)};sre.SpeechRuleEngine.prototype.getCache=function(a){return(a=this.cache_[a])?this.cloneCache(a):a};sre.SpeechRuleEngine.prototype.cloneCache=function(a){return a.map(function(b){return b.clone()})};\nsre.SpeechRuleEngine.prototype.pushCache_=function(a,b){sre.Engine.getInstance().cache&&a.getAttribute&&(a=a.getAttribute(\"id\"))&&(this.cache_[a]=this.cloneCache(b))};sre.SpeechRuleEngine.prototype.evaluateNode=function(a){var b=(new Date).getTime();a=this.evaluateNode_(a);var c=(new Date).getTime();sre.Debugger.getInstance().output(\"Time:\",c-b);return a};sre.SpeechRuleEngine.prototype.evaluateNode_=function(a){if(!a)return[];this.updateConstraint_();return this.evaluateTree_(a)};\nsre.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=sre.Engine.getInstance();sre.Debugger.getInstance().output(b.mode!==sre.Engine.Mode.HTTP?a.toString():a);if(b.cache){var c=this.getCacheForNode_(a);if(c)return a.attributes&&this.addPersonality_(c,{},!1,a),c}sre.Grammar.getInstance().setAttribute(a);var d=this.activeStore_.lookupRule(a,b.dynamicCstr);if(!d){if(b.strict)return[];c=this.getEvaluator(b.locale,b.modality)(a);a.attributes&&this.addPersonality_(c,{},!1,a);this.pushCache_(a,\nc);return c}sre.Debugger.getInstance().generateOutput(goog.bind(function(){return[\"Apply Rule:\",d.name,d.dynamicCstr.toString(),b.mode!==sre.Engine.Mode.HTTP?a.toString():a]},this));var e=d.context||this.activeStore_.context,f=d.action.components;c=[];for(var g=0,h;h=f[g];g++){var k=[],l=h.content||\"\",m=h.attributes||{},n=!1;h.grammar&&this.processGrammar(e,a,h.grammar);var p=null,q=null;if(m.engine){p=sre.Engine.getInstance().dynamicCstr.getComponents();var r=sre.Grammar.parseInput(m.engine);q=this.cache_;\nthis.clearCache();sre.Engine.getInstance().setDynamicCstr(r)}switch(h.type){case sre.SpeechRule.Type.NODE:(l=e.applyQuery(a,l))&&(k=this.evaluateTree_(l));break;case sre.SpeechRule.Type.MULTI:n=!0;l=e.applySelector(a,l);0<l.length&&(k=this.evaluateNodeList_(e,l,m.sepFunc,e.constructString(a,m.separator),m.ctxtFunc,e.constructString(a,m.context)));break;case sre.SpeechRule.Type.TEXT:(l=e.constructString(a,l))&&(k=[sre.AuditoryDescription.create({text:l},{adjust:!0})]);break;default:k=[sre.AuditoryDescription.create({text:l})]}k[0]&&\n!n&&(m.context&&(k[0].context=e.constructString(a,m.context)+(k[0].context||\"\")),m.annotation&&(k[0].annotation=m.annotation));h.grammar&&sre.Grammar.getInstance().popState();c=c.concat(this.addPersonality_(k,m,n,a));p&&(this.cache_=q,sre.Engine.getInstance().setDynamicCstr(p))}this.pushCache_(a,c);return c};\nsre.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e,f){if(b==[])return[];var g=d||\"\",h=f||\"\";d=(d=a.contextFunctions.lookup(e))?d(b,h):function(){return h};a=(a=a.contextFunctions.lookup(c))?a(b,g):function(){return sre.AuditoryDescription.create({text:g},{translate:!0})};c=[];for(e=0;f=b[e];e++)f=this.evaluateTree_(f),0<f.length&&(f[0].context=d()+(f[0].context||\"\"),c=c.concat(f),e<b.length-1&&(f=a(),c=c.concat(f)));return c};\nsre.SpeechRuleEngine.prototype.addPersonality_=function(a,b,c,d){var e={},f;for(f in sre.Engine.personalityProps){var g=b[sre.Engine.personalityProps[f]];if(\"undefined\"!==typeof g){var h=parseFloat(g);e[sre.Engine.personalityProps[f]]=isNaN(h)?'\"'==g.charAt(0)?g.slice(1,-1):g:h}}for(b=0;f=a[b];b++)this.addRelativePersonality_(f,e),this.addExternalAttributes_(f,d);c&&a.length&&delete a[a.length-1].personality[sre.Engine.personalityProps.JOIN];return a};\nsre.SpeechRuleEngine.prototype.addExternalAttributes_=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;!a.attributes[d]&&d.match(/^ext/)&&(a.attributes[d]=b[c].value)}}};sre.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&\"number\"==typeof c[d]&&\"number\"==typeof b[d]?c[d]+b[d]:b[d];return a};sre.SpeechRuleEngine.prototype.toString=function(){return this.activeStore_.findAllRules(function(a){return!0}).map(function(a){return a.toString()}).join(\"\\n\")};\nsre.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;c&&c.debugSpeechRule(a,b)};sre.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;if(c)for(var d=c.findAllRules(function(g){return g.name==a}),e=0,f;f=d[e];e++)sre.Debugger.getInstance().output(\"Rule\",a,\"DynamicCstr:\",f.dynamicCstr.toString(),\"number\",e),c.debugSpeechRule(f,b)};\nsre.SpeechRuleEngine.prototype.runInSetting=function(a,b){var c=sre.Engine.getInstance(),d={},e=null,f;for(f in a)\"rules\"===f?(e=this.activeStore_,c.ruleSets=a[f],this.parameterize(c.ruleSets)):(d[f]=c[f],c[f]=a[f]);c.setDynamicCstr();a=b();for(f in d)c[f]=d[f];e&&(this.activeStore_=e);c.setDynamicCstr();return a};\nsre.SpeechRuleEngine.prototype.combineStores_=function(a){var b=this.cachedStore_(a);if(b)return b;b=new sre.MathStore;for(var c in a){var d=a[c];d.initialize();d.getSpeechRules().forEach(function(e){b.trie.addRule(e)});this.addEvaluator(d)}b.setSpeechRules(b.trie.collectRules());return this.combinedStores_[this.combinedStoreName_(Object.keys(a))]=b};sre.SpeechRuleEngine.prototype.combinedStoreName_=function(a){return a.sort().join(\"-\")};\nsre.SpeechRuleEngine.prototype.cachedStore_=function(a){var b=Object.keys(a);return b.some(function(c){return!a[c].initialized})?null:this.combinedStores_[this.combinedStoreName_(b)]};sre.SpeechRuleEngine.prototype.updateEngine=function(){this.ready_=!0;var a=sre.MathMap.getInstance();sre.Engine.isReady()?sre.Engine.getInstance().evaluator=goog.bind(a.store.lookupString,a.store):(this.ready_=!1,setTimeout(goog.bind(this.updateEngine,this),250))};\nsre.SpeechRuleEngine.prototype.processGrammar=function(a,b,c){var d={},e;for(e in c){var f=c[e];d[e]=\"string\"===typeof f?a.constructString(b,f):f}sre.Grammar.getInstance().pushState(d)};\nsre.SpeechRuleEngine.prototype.updateConstraint_=function(){var a=sre.Engine.getInstance().dynamicCstr,b=sre.Engine.getInstance().strict,c=this.activeStore_.trie,d={},e=a.getValue(sre.DynamicCstr.Axis.LOCALE),f=a.getValue(sre.DynamicCstr.Axis.MODALITY),g=a.getValue(sre.DynamicCstr.Axis.DOMAIN);c.hasSubtrie([e,f,g])||(e=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE],c.hasSubtrie([e,f,g])||(f=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],c.hasSubtrie([e,f,g])||(g=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN])));\nd[sre.DynamicCstr.Axis.LOCALE]=[e];d[sre.DynamicCstr.Axis.MODALITY]=[\"summary\"!==f?f:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]];d[sre.DynamicCstr.Axis.DOMAIN]=[\"speech\"!==f?sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]:g];c=a.getOrder();for(e=0;f=c[e];e++)if(!d[f]){g=a.getValue(f);var h=this.makeSet_(g,a.preference),k=sre.DynamicCstr.DEFAULT_VALUES[f];b||g===k||h.push(k);d[f]=h}a.updateProperties(d)};\nsre.SpeechRuleEngine.prototype.makeSet_=function(a,b){return b&&Object.keys(b).length?a.split(\":\"):[a]};sre.SpeechRuleEngine.prototype.addEvaluator=function(a){var b=goog.bind(a.evaluateDefault,a),c=this.evaluators_[a.locale];c?c[a.modality]=b:(c={},c[a.modality]=b,this.evaluators_[a.locale]=c)};sre.SpeechRuleEngine.prototype.getEvaluator=function(a,b){return(b=(a=this.evaluators_[a])?a[b]:null)?b:goog.bind(this.activeStore_.evaluateDefault,this.activeStore_)};\nsre.SpeechRuleEngine.prototype.enumerate=function(a){return this.activeStore_.trie.enumerate(a)};sre.SpeechGeneratorUtil={};sre.SpeechGeneratorUtil.computeSpeech=function(a){var b=sre.SpeechRuleEngine.getInstance();b.clearCache();return b.evaluateNode(a)};sre.SpeechGeneratorUtil.recomputeSpeech=function(a){a=sre.SemanticTree.fromNode(a);return sre.SpeechRuleEngine.getInstance().evaluateNode(a.xml())};\nsre.SpeechGeneratorUtil.computeSpeechWithoutCache=function(a){var b=sre.Engine.getInstance().cache;sre.Engine.getInstance().cache=!1;a=sre.SpeechRuleEngine.getInstance().evaluateNode(a);sre.Engine.getInstance().cache=b;return a};sre.SpeechGeneratorUtil.retrieveSpeech=function(a){var b=null;sre.Engine.getInstance().cache&&(b=sre.SpeechRuleEngine.getInstance().getCache(a.id.toString()));b||(b=sre.SpeechGeneratorUtil.recomputeSpeech(a));return sre.AuralRendering.getInstance().markup(b)};\nsre.SpeechGeneratorUtil.addSpeech=function(a,b,c){b=sre.SpeechGeneratorUtil.retrieveSpeech(b);a.setAttribute(c||sre.EnrichMathml.Attribute.SPEECH,b)};sre.SpeechGeneratorUtil.addPrefix=function(a,b){(b=sre.SpeechGeneratorUtil.retrievePrefix(b))&&a.setAttribute(sre.EnrichMathml.Attribute.PREFIX,b)};sre.SpeechGeneratorUtil.retrievePrefix=function(a){a=sre.SpeechGeneratorUtil.computePrefix_(a);return sre.AuralRendering.getInstance().markup(a)};\nsre.SpeechGeneratorUtil.computePrefix_=function(a){var b=sre.SemanticTree.fromRoot(a),c=sre.XpathUtil.evalXPath('.//*[@id=\"'+a.id+'\"]',b.xml())[0];return c?sre.SpeechRuleEngine.getInstance().runInSetting({modality:\"prefix\",domain:\"default\",style:\"default\",strict:!0,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(c)}):[]};\nsre.SpeechGeneratorUtil.connectMactions=function(a,b,c){b=sre.DomUtil.querySelectorAll(b,\"maction\");for(var d=0,e;e=b[d];d++){var f=e.getAttribute(\"id\");if(f=sre.DomUtil.querySelectorAllByAttrValue(a,\"id\",f)[0]){var g=e.childNodes[1];e=g.getAttribute(sre.EnrichMathml.Attribute.ID);var h=sre.WalkerUtil.getBySemanticId(a,e);h&&\"dummy\"!==h.getAttribute(sre.EnrichMathml.Attribute.TYPE)||(h=f.childNodes[0],h.getAttribute(\"sre-highlighter-added\")||((f=g.getAttribute(sre.EnrichMathml.Attribute.PARENT))&&\nh.setAttribute(sre.EnrichMathml.Attribute.PARENT,f),h.setAttribute(sre.EnrichMathml.Attribute.TYPE,\"dummy\"),h.setAttribute(sre.EnrichMathml.Attribute.ID,e),sre.DomUtil.querySelectorAllByAttrValue(c,\"id\",e)[0].setAttribute(\"alternative\",e)))}}};\nsre.SpeechGeneratorUtil.connectAllMactions=function(a,b){a=sre.DomUtil.querySelectorAll(a,\"maction\");for(var c=0,d;d=a[c];c++)d=d.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.ID),sre.DomUtil.querySelectorAllByAttrValue(b,\"id\",d)[0].setAttribute(\"alternative\",d)};sre.SpeechGeneratorUtil.retrieveSummary=function(a){a=sre.SpeechGeneratorUtil.computeSummary_(a);return sre.AuralRendering.getInstance().markup(a)};\nsre.SpeechGeneratorUtil.computeSummary_=function(a){return a?sre.SpeechRuleEngine.getInstance().runInSetting({modality:\"summary\",strict:!1,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(a)}):[]};sre.AbstractSpeechGenerator=function(){this.rebuilt_=null;this.options_={};this.modality=sre.EnrichMathml.addPrefix(\"speech\")};sre.AbstractSpeechGenerator.prototype.getRebuilt=function(){return this.rebuilt_};sre.AbstractSpeechGenerator.prototype.setRebuilt=function(a){this.rebuilt_=a};sre.AbstractSpeechGenerator.prototype.setOptions=function(a){this.options_=a||{};this.modality=sre.EnrichMathml.addPrefix(this.options_.modality||\"speech\")};sre.AbstractSpeechGenerator.prototype.getOptions=function(){return this.options_};\nsre.AbstractSpeechGenerator.prototype.getSpeech=goog.abstractMethod;sre.AbstractSpeechGenerator.prototype.start=function(){};sre.AbstractSpeechGenerator.prototype.end=function(){};sre.AbstractSpeechGenerator.prototype.generateSpeech=function(a,b){this.rebuilt_||(this.rebuilt_=new sre.RebuildStree(b));sre.System.getInstance().setupEngine(this.options_);a=sre.SpeechGeneratorUtil.computeSpeech(this.getRebuilt().xml);return sre.AuralRendering.getInstance().markup(a)};sre.AdhocSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.AdhocSpeechGenerator,sre.AbstractSpeechGenerator);sre.AdhocSpeechGenerator.prototype.getSpeech=function(a,b){b=this.generateSpeech(a,b);a.setAttribute(this.modality,b);return b};sre.ColorGenerator=function(){sre.AbstractSpeechGenerator.call(this);this.modality=sre.EnrichMathml.addPrefix(\"foreground\");this.contrast=new sre.ContrastPicker};goog.inherits(sre.ColorGenerator,sre.AbstractSpeechGenerator);sre.ColorGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};\nsre.ColorGenerator.prototype.generateSpeech=function(a,b){this.getRebuilt()||this.setRebuilt(new sre.RebuildStree(a));this.colorLeaves_(a);return sre.WalkerUtil.getAttribute(a,this.modality)};\nsre.ColorGenerator.prototype.colorLeaves_=function(a){var b=this,c=[];sre.ColorGenerator.visitStree_(this.getRebuilt().streeRoot,c,{});var d={};c=$jscomp.makeIterator(c);for(var e=c.next();!e.done;d={$jscomp$loop$prop$color$5:d.$jscomp$loop$prop$color$5},e=c.next()){e=e.value;d.$jscomp$loop$prop$color$5=this.contrast.generate();var f=!1;(f=Array.isArray(e)?e.map(function(g){return function(h){return b.colorLeave_(a,h,g.$jscomp$loop$prop$color$5)}}(d)).reduce(function(g,h){return g||h},!1):this.colorLeave_(a,\ne,d.$jscomp$loop$prop$color$5))&&this.contrast.increment()}};sre.ColorGenerator.prototype.colorLeave_=function(a,b,c){return(a=sre.WalkerUtil.getBySemanticId(a,b))?(a.setAttribute(this.modality,c),!0):!1};\nsre.ColorGenerator.visitStree_=function(a,b,c){if(a.childNodes.length){if(a.contentNodes.length&&(\"punctuated\"===a.type&&a.contentNodes.forEach(function(h){return c[h.id]=!0}),\"implicit\"!==a.role&&b.push(a.contentNodes.map(function(h){return h.id}))),a.childNodes.length)if(\"implicit\"===a.role){var d=[],e=[];a=$jscomp.makeIterator(a.childNodes);for(var f=a.next();!f.done;f=a.next()){var g=[];sre.ColorGenerator.visitStree_(f.value,g,c);2>=g.length&&d.push(g.shift());e=e.concat(g)}b.push(d);e.forEach(function(h){return b.push(h)})}else a.childNodes.forEach(function(h){return sre.ColorGenerator.visitStree_(h,\nb,c)})}else c[a.id]||b.push(a.id)};sre.DirectSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DirectSpeechGenerator,sre.AbstractSpeechGenerator);sre.DirectSpeechGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};sre.DummySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DummySpeechGenerator,sre.AbstractSpeechGenerator);sre.DummySpeechGenerator.prototype.getSpeech=function(a,b){return\"\"};sre.TreeSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.TreeSpeechGenerator,sre.AbstractSpeechGenerator);\nsre.TreeSpeechGenerator.prototype.getSpeech=function(a,b){var c=this.generateSpeech(a,b);a.setAttribute(this.modality,c);var d=this.getRebuilt().nodeDict,e;for(e in d){var f=d[e],g=sre.WalkerUtil.getBySemanticId(b,e),h=sre.WalkerUtil.getBySemanticId(a,e);g&&h&&(sre.SpeechGeneratorUtil.addSpeech(h,f,this.modality),this.modality===sre.EnrichMathml.Attribute.SPEECH&&sre.SpeechGeneratorUtil.addPrefix(h,f))}return c};sre.NodeSpeechGenerator=function(){sre.TreeSpeechGenerator.call(this)};goog.inherits(sre.NodeSpeechGenerator,sre.TreeSpeechGenerator);sre.NodeSpeechGenerator.prototype.getSpeech=function(a,b){var c=sre.WalkerUtil.getAttribute(a,this.modality);return c?c:sre.NodeSpeechGenerator.superClass_.getSpeech.call(this,a,b)};sre.SummarySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.SummarySpeechGenerator,sre.AbstractSpeechGenerator);sre.SummarySpeechGenerator.prototype.getSpeech=function(a,b){sre.SpeechGeneratorUtil.connectAllMactions(b,this.getRebuilt().xml);return this.generateSpeech(a,b)};sre.SpeechGeneratorFactory={};sre.SpeechGeneratorFactory.generator=function(a){return new (sre.SpeechGeneratorFactory.generatorMapping_[a]||sre.SpeechGeneratorFactory.generatorMapping_.Direct)};sre.SpeechGeneratorFactory.generatorMapping_={Adhoc:sre.AdhocSpeechGenerator,Color:sre.ColorGenerator,Direct:sre.DirectSpeechGenerator,Dummy:sre.DummySpeechGenerator,Node:sre.NodeSpeechGenerator,Summary:sre.SummarySpeechGenerator,Tree:sre.TreeSpeechGenerator};sre.EventUtil={};sre.EventUtil.KeyCode={ENTER:13,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,TAB:9,LESS:188,GREATER:190,DASH:189,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90};sre.EventUtil.Move=function(){var a={},b;for(b in sre.EventUtil.KeyCode)a[sre.EventUtil.KeyCode[b]]=b;return a}();\nsre.EventUtil.EventType={CLICK:\"click\",DBLCLICK:\"dblclick\",MOUSEDOWN:\"mousedown\",MOUSEUP:\"mouseup\",MOUSEOVER:\"mouseover\",MOUSEOUT:\"mouseout\",MOUSEMOVE:\"mousemove\",SELECTSTART:\"selectstart\",KEYPRESS:\"keypress\",KEYDOWN:\"keydown\",KEYUP:\"keyup\",TOUCHSTART:\"touchstart\",TOUCHMOVE:\"touchmove\",TOUCHEND:\"touchend\",TOUCHCANCEL:\"touchcancel\"};sre.EventUtil.Event=function(a,b,c){this.src=a;this.type=b;this.callback=c};sre.EventUtil.Event.prototype.add=function(){this.src.addEventListener(this.type,this.callback)};\nsre.EventUtil.Event.prototype.remove=function(){this.src.removeEventListener(this.type,this.callback)};sre.Focus=function(a,b){this.semanticNodes_=a;this.semanticPrimary_=b;this.domNodes_=[];this.domPrimary_=null;this.allNodes_=[]};sre.Focus.prototype.getSemanticPrimary=function(){return this.semanticPrimary_};sre.Focus.prototype.getSemanticNodes=function(){return this.semanticNodes_};sre.Focus.prototype.getNodes=function(){return this.allNodes_};sre.Focus.prototype.getDomNodes=function(){return this.domNodes_};sre.Focus.prototype.getDomPrimary=function(){return this.domPrimary_};\nsre.Focus.prototype.toString=function(){return\"Primary:\"+this.domPrimary_+\" Nodes:\"+this.domNodes_};sre.Focus.prototype.clone=function(){var a=new sre.Focus(this.semanticNodes_,this.semanticPrimary_);a.domNodes_=this.domNodes_;a.domPrimary_=this.domPrimary_;a.allNodes_=this.allNodes_;return a};\nsre.Focus.factory=function(a,b,c,d){var e=function(h){return sre.WalkerUtil.getBySemanticId(d,h)},f=c.nodeDict;c=e(a);e=b.map(e);var g=b.map(function(h){return f[h]});a=new sre.Focus(g,f[a]);a.domNodes_=e;a.domPrimary_=c;a.allNodes_=sre.Focus.generateAllVisibleNodes_(b,e,f,d);return a};\nsre.Focus.generateAllVisibleNodes_=function(a,b,c,d){for(var e=function(m){return sre.WalkerUtil.getBySemanticId(d,m)},f=[],g=0,h=a.length;g<h;g++)if(b[g])f.push(b[g]);else{var k=c[a[g]];if(k){k=k.childNodes.map(function(m){return m.id.toString()});var l=k.map(e);f=f.concat(sre.Focus.generateAllVisibleNodes_(k,l,c,d))}}return f};sre.Levels=function(){this.level_=[]};sre.Levels.prototype.push=function(a){this.level_.push(a)};sre.Levels.prototype.pop=function(){return this.level_.pop()};sre.Levels.prototype.peek=function(){return this.level_[this.level_.length-1]||null};sre.Levels.prototype.indexOf=function(a){var b=this.peek();return b?b.indexOf(a):null};sre.Levels.prototype.find=function(a){var b=this.peek();if(!b)return null;for(var c=0,d=b.length;c<d;c++)if(a(b[c]))return b[c];return null};\nsre.Levels.prototype.get=function(a){var b=this.peek();return!b||0>a||a>=b.length?null:b[a]};sre.Levels.prototype.depth=function(){return this.level_.length};sre.Levels.prototype.clone=function(){var a=new sre.Levels;a.level_=this.level_.slice(0);return a};sre.Levels.prototype.toString=function(){for(var a=\"\",b=0,c;c=this.level_[b];b++)a+=\"\\n\"+c.map(function(d){return d.toString()});return a};sre.Walker=function(){};sre.Walker.prototype.isActive=function(){};sre.Walker.prototype.activate=function(){};sre.Walker.prototype.deactivate=function(){};sre.Walker.prototype.speech=function(){};sre.Walker.prototype.getXml=function(){};sre.Walker.prototype.getRebuilt=function(){};sre.Walker.prototype.getFocus=function(a){};sre.Walker.prototype.setFocus=function(a){};sre.Walker.prototype.getDepth=function(){};sre.Walker.prototype.move=function(a){};sre.Walker.prototype.update=function(a){};\nsre.Walker.move={UP:\"up\",DOWN:\"down\",LEFT:\"left\",RIGHT:\"right\",REPEAT:\"repeat\",DEPTH:\"depth\",ENTER:\"enter\",EXPAND:\"expand\",HOME:\"home\",SUMMARY:\"summary\",DETAIL:\"detail\",ROW:\"row\",CELL:\"cell\"};sre.Walker.STATE_={};sre.Walker.resetState=function(a){delete sre.Walker.STATE_[a]};sre.Walker.setState=function(a,b){sre.Walker.STATE_[a]=b};sre.Walker.getState=function(a){return sre.Walker.STATE_[a]};sre.AbstractWalker=function(a,b,c,d){this.node=a;this.node.id?this.id=this.node.id:this.node.hasAttribute(sre.AbstractWalker.SRE_ID_ATTR)?this.id=this.node.getAttribute(sre.AbstractWalker.SRE_ID_ATTR):(this.node.setAttribute(sre.AbstractWalker.SRE_ID_ATTR,sre.AbstractWalker.ID_COUNTER),this.id=sre.AbstractWalker.ID_COUNTER++);this.generator=b;this.highlighter=c;this.rootNode=sre.WalkerUtil.getSemanticRoot(a);this.rootId=this.rootNode.getAttribute(sre.EnrichMathml.Attribute.ID);this.xmlString_=d;this.focus_=\nthis.rebuilt_=this.xml_=null;this.keyMapping={};this.keyMapping[sre.EventUtil.KeyCode.UP]=goog.bind(this.up,this);this.keyMapping[sre.EventUtil.KeyCode.DOWN]=goog.bind(this.down,this);this.keyMapping[sre.EventUtil.KeyCode.RIGHT]=goog.bind(this.right,this);this.keyMapping[sre.EventUtil.KeyCode.LEFT]=goog.bind(this.left,this);this.keyMapping[sre.EventUtil.KeyCode.TAB]=goog.bind(this.repeat,this);this.keyMapping[sre.EventUtil.KeyCode.DASH]=goog.bind(this.expand,this);this.keyMapping[sre.EventUtil.KeyCode.SPACE]=\ngoog.bind(this.depth,this);this.keyMapping[sre.EventUtil.KeyCode.HOME]=goog.bind(this.home,this);this.keyMapping[sre.EventUtil.KeyCode.X]=goog.bind(this.summary,this);this.keyMapping[sre.EventUtil.KeyCode.Z]=goog.bind(this.detail,this);this.keyMapping[sre.EventUtil.KeyCode.V]=goog.bind(this.virtualize,this);this.keyMapping[sre.EventUtil.KeyCode.P]=goog.bind(this.previous,this);this.keyMapping[sre.EventUtil.KeyCode.U]=goog.bind(this.undo,this);this.keyMapping[sre.EventUtil.KeyCode.LESS]=goog.bind(this.previousRules,\nthis);this.keyMapping[sre.EventUtil.KeyCode.GREATER]=goog.bind(this.nextRules,this);this.active_=!1;this.moved=sre.Walker.move.ENTER;this.cursors=[]};sre.AbstractWalker.prototype.getXml=function(){this.xml_||(this.xml_=sre.DomUtil.parseInput(this.xmlString_));return this.xml_};sre.AbstractWalker.prototype.getRebuilt=function(){this.rebuilt_||(this.rebuilt_=this.rebuildStree());return this.rebuilt_};sre.AbstractWalker.ID_COUNTER=0;sre.AbstractWalker.SRE_ID_ATTR=\"sre-explorer-id\";\nsre.AbstractWalker.prototype.isActive=function(){return this.active_};sre.AbstractWalker.prototype.toggleActive_=function(){this.active_=!this.active_};sre.AbstractWalker.prototype.activate=function(){this.isActive()||(this.generator.start(),this.toggleActive_())};sre.AbstractWalker.prototype.deactivate=function(){this.isActive()&&(sre.Walker.setState(this.id,this.primaryId()),this.generator.end(),this.toggleActive_())};\nsre.AbstractWalker.prototype.getFocus=function(a){this.focus_||(this.focus_=sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node));a&&this.updateFocus();return this.focus_};sre.AbstractWalker.prototype.setFocus=function(a){this.focus_=a};sre.AbstractWalker.prototype.getDepth=function(){return this.levels.depth()-1};sre.AbstractWalker.prototype.isSpeech=function(){return this.generator.modality===sre.EnrichMathml.Attribute.SPEECH};\nsre.AbstractWalker.prototype.speech=function(){var a=this.getFocus().getDomNodes();if(!a.length)return\"\";var b=this.specialMove();if(null!==b)return b;switch(this.moved){case sre.Walker.move.DEPTH:return this.depth_();case sre.Walker.move.SUMMARY:return this.summary_();case sre.Walker.move.DETAIL:return this.detail_();default:b=[];for(var c=this.getFocus().getSemanticNodes(),d=0,e=a.length;d<e;d++){var f=a[d],g=c[d];b.push(f?this.generator.getSpeech(f,this.getXml()):sre.SpeechGeneratorUtil.retrieveSpeech(g))}return this.mergePrefix_(b)}};\nsre.AbstractWalker.prototype.mergePrefix_=function(a,b){b=b||[];var c=this.isSpeech()?this.prefix_():\"\",d=sre.AuralRendering.getInstance();c&&a.unshift(c);return d.finalize(d.merge(b.concat(a)))};sre.AbstractWalker.prototype.prefix_=function(){var a=this.getFocus().getDomNodes(),b=this.getFocus().getSemanticNodes();return a[0]?sre.WalkerUtil.getAttribute(a[0],sre.EnrichMathml.Attribute.PREFIX):sre.SpeechGeneratorUtil.retrievePrefix(b[0])};\nsre.AbstractWalker.prototype.move=function(a){a=this.keyMapping[a];if(!a)return null;a=a();if(!a||a===this.getFocus())return!1;this.setFocus(a);this.moved===sre.Walker.move.HOME&&(this.levels=this.initLevels());return!0};sre.AbstractWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.getFocus()};sre.AbstractWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.getFocus()};sre.AbstractWalker.prototype.left=function(){this.moved=sre.Walker.move.LEFT;return this.getFocus()};\nsre.AbstractWalker.prototype.right=function(){this.moved=sre.Walker.move.RIGHT;return this.getFocus()};sre.AbstractWalker.prototype.repeat=function(){this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.depth=function(){this.moved=this.isSpeech()?sre.Walker.move.DEPTH:sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.depth_=function(){var a=sre.Grammar.getInstance().getParameter(\"depth\");sre.Grammar.getInstance().setParameter(\"depth\",!0);var b=this.getFocus().getDomPrimary();b=this.expandable(b)&&[sre.Messages.NAVIGATE.EXPANDABLE]||this.collapsible(b)&&[sre.Messages.NAVIGATE.COLLAPSIBLE]||[];var c=[sre.AuralRendering.getInstance().markup([new sre.AuditoryDescription({text:sre.Messages.NAVIGATE.LEVEL+\" \"+this.getDepth(),personality:{}})])],d=this.getFocus().getSemanticNodes();d=sre.SpeechGeneratorUtil.retrievePrefix(d[0]);\nvar e=sre.AuralRendering.getInstance();d&&c.push(d);sre.Grammar.getInstance().setParameter(\"depth\",a);return e.finalize(e.merge(c.concat(b)))};sre.AbstractWalker.prototype.home=function(){this.moved=sre.Walker.move.HOME;return sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node)};sre.AbstractWalker.prototype.getBySemanticId=function(a){return sre.WalkerUtil.getBySemanticId(this.node,a)};sre.AbstractWalker.prototype.primaryId=function(){return this.getFocus().getSemanticPrimary().id.toString()};\nsre.AbstractWalker.prototype.expand=function(){var a=this.getFocus().getDomPrimary();a=this.actionable_(a);if(!a)return this.getFocus();this.moved=sre.Walker.move.EXPAND;a.dispatchEvent(new Event(\"click\"));return this.getFocus().clone()};sre.AbstractWalker.prototype.actionable_=function(a){return a&&a.parentNode&&this.highlighter.isMactionNode(a.parentNode)?a.parentNode:null};sre.AbstractWalker.prototype.expandable=function(a){return!!this.actionable_(a)&&0===a.childNodes.length};\nsre.AbstractWalker.prototype.collapsible=function(a){return!!this.actionable_(a)&&0<a.childNodes.length};sre.AbstractWalker.prototype.restoreState=function(){if(this.highlighter){var a=sre.Walker.getState(this.id);if(a){var b=this.getRebuilt().nodeDict[a];for(a=[];b;)a.push(b.id),b=b.parent;for(a.pop();0<a.length;){this.down();b=a.pop();b=this.findFocusOnLevel(b);if(!b)break;this.setFocus(b)}this.moved=sre.Walker.move.ENTER}}};\nsre.AbstractWalker.prototype.updateFocus=function(){this.setFocus(sre.Focus.factory(this.getFocus().getSemanticPrimary().id.toString(),this.getFocus().getSemanticNodes().map(function(a){return a.id}),this.getRebuilt(),this.node))};sre.AbstractWalker.prototype.findFocusOnLevel=goog.abstractMethod;sre.AbstractWalker.prototype.initLevels=goog.abstractMethod;\nsre.AbstractWalker.prototype.rebuildStree=function(){var a=new sre.RebuildStree(this.getXml());this.rootId=a.stree.root.id.toString();this.generator.setRebuilt(a);this.focus_=sre.Focus.factory(this.rootId,[this.rootId],a,this.node);this.levels=this.initLevels();sre.SpeechGeneratorUtil.connectMactions(this.node,this.getXml(),a.xml);return a};\nsre.AbstractWalker.prototype.previousLevel=function(){var a=this.getFocus().getDomPrimary();return a?sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.PARENT):this.getFocus().getSemanticPrimary().parent.id.toString()};\nsre.AbstractWalker.prototype.nextLevel=function(){var a=this.getFocus().getDomPrimary();if(a){var b=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT)),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE);return this.combineContentChildren(d,a,c,b)}c=function(e){return e.id.toString()};\nd=this.getRebuilt().nodeDict[this.primaryId()];b=d.childNodes.map(c);c=d.contentNodes.map(c);return 0===b.length?[]:this.combineContentChildren(d.type,d.role,c,b)};sre.AbstractWalker.prototype.combineContentChildren=goog.abstractMethod;sre.AbstractWalker.prototype.singletonFocus=function(a){return this.focusFromId(a,[a])};sre.AbstractWalker.prototype.focusFromId=function(a,b){return sre.Focus.factory(a,b,this.getRebuilt(),this.node)};\nsre.AbstractWalker.prototype.summary=function(){this.moved=this.isSpeech()?sre.Walker.move.SUMMARY:sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.summary_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute(\"id\")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",a)[0];a=sre.SpeechGeneratorUtil.retrieveSummary(a);return this.mergePrefix_([a])};\nsre.AbstractWalker.prototype.detail=function(){this.moved=this.isSpeech()?sre.Walker.move.DETAIL:sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.detail_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute(\"id\")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",a)[0];var b=a.getAttribute(\"alternative\");a.removeAttribute(\"alternative\");var c=sre.SpeechGeneratorUtil.computeSpeechWithoutCache(a);c=sre.AuralRendering.getInstance().markup(c);c=this.mergePrefix_([c]);a.setAttribute(\"alternative\",b);return c};\nsre.AbstractWalker.prototype.specialMove=function(){return null};sre.AbstractWalker.prototype.virtualize=function(a){this.cursors.push({focus:this.getFocus(),levels:this.levels,undo:a||!this.cursors.length});this.levels=this.levels.clone();return this.getFocus().clone()};sre.AbstractWalker.prototype.previous=function(){var a=this.cursors.pop();if(!a)return this.getFocus();this.levels=a.levels;return a.focus};\nsre.AbstractWalker.prototype.undo=function(){do var a=this.cursors.pop();while(a&&!a.undo);if(!a)return this.getFocus();this.levels=a.levels;return a.focus};sre.AbstractWalker.prototype.update=function(a){this.generator.setOptions(a);sre.System.getInstance().setupEngine(a);sre.SpeechGeneratorFactory.generator(\"Tree\").getSpeech(this.node,this.getXml())};\nsre.AbstractWalker.prototype.nextRules=function(){var a=this.generator.getOptions();if(\"speech\"!==a.modality)return this.getFocus();sre.Engine.DOMAIN_TO_STYLES[a.domain]=a.style;a.domain=\"mathspeak\"===a.domain?\"clearspeak\":\"mathspeak\";a.style=sre.Engine.DOMAIN_TO_STYLES[a.domain];this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.nextStyle=function(a,b){if(\"mathspeak\"===a){a=[\"default\",\"brief\",\"sbrief\"];var c=a.indexOf(b);return-1===c?b:c>=a.length-1?a[0]:a[c+1]}if(\"clearspeak\"===a){var d=sre.ClearspeakPreferences.getLocalePreferences().en;if(!d)return\"default\";a=sre.ClearspeakPreferences.relevantPreferences(this.getFocus().getSemanticPrimary());c=sre.ClearspeakPreferences.findPreference(b,a);d=d[a].map(function(e){return e.split(\"_\")[1]});c=d.indexOf(c);return-1===c?b:sre.ClearspeakPreferences.addPreference(b,\na,c>=d.length-1?d[0]:d[c+1])}return b};sre.AbstractWalker.prototype.previousRules=function(){var a=this.generator.getOptions();if(\"speech\"!==a.modality)return this.getFocus();a.style=this.nextStyle(a.domain,a.style);this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.DummyWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d)};goog.inherits(sre.DummyWalker,sre.AbstractWalker);sre.DummyWalker.prototype.up=function(){};sre.DummyWalker.prototype.down=function(){};sre.DummyWalker.prototype.left=function(){};sre.DummyWalker.prototype.right=function(){};sre.DummyWalker.prototype.repeat=function(){};sre.DummyWalker.prototype.depth=function(){};sre.DummyWalker.prototype.home=function(){};sre.DummyWalker.prototype.getDepth=function(){return 0};\nsre.DummyWalker.prototype.initLevels=function(){};sre.SemanticWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SemanticWalker,sre.AbstractWalker);sre.SemanticWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.getFocus()]);return a};\nsre.SemanticWalker.prototype.up=function(){sre.SemanticWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.levels.find(function(b){return b.getSemanticNodes().some(function(c){return c.id.toString()===a})})};sre.SemanticWalker.prototype.down=function(){sre.SemanticWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;this.levels.push(a);return a[0]};\nsre.SemanticWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return this.makePairList(d,c);case sre.SemanticAttr.Type.PREFIXOP:return[this.focusFromId(d[0],c.concat(d))];case sre.SemanticAttr.Type.POSTFIXOP:return[this.focusFromId(d[0],d.concat(c))];case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return[this.focusFromId(d[0],\n[c[0],d[0],c[1]])];case sre.SemanticAttr.Type.CASES:return[this.focusFromId(d[0],[c[0],d[0]])];case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?d.map(goog.bind(this.singletonFocus,this)):d.length===c.length?c.map(goog.bind(this.singletonFocus,this)):this.combinePunctuations(d,c,[],[]);case sre.SemanticAttr.Type.APPL:return[this.focusFromId(d[0],[d[0],c[0]]),this.singletonFocus(d[1])];case sre.SemanticAttr.Type.ROOT:return[this.singletonFocus(d[1]),this.singletonFocus(d[0])];\ndefault:return d.map(goog.bind(this.singletonFocus,this))}};sre.SemanticWalker.prototype.combinePunctuations=function(a,b,c,d){if(0===a.length)return d;var e=a.shift(),f=b.shift();if(e===f)return c.push(f),this.combinePunctuations(a,b,c,d);b.unshift(f);c.push(e);if(a.length===b.length)return d.push(this.focusFromId(e,c.concat(b))),d;d.push(this.focusFromId(e,c));return this.combinePunctuations(a,b,[],d)};\nsre.SemanticWalker.prototype.makePairList=function(a,b){if(0===a.length)return[];if(1===a.length)return[this.singletonFocus(a[0])];for(var c=[this.singletonFocus(a.shift())],d=0,e=a.length;d<e;d++)c.push(this.focusFromId(a[d],[b[d],a[d]]));return c};sre.SemanticWalker.prototype.left=function(){sre.SemanticWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a-1))?a:null};\nsre.SemanticWalker.prototype.right=function(){sre.SemanticWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a+1))?a:null};sre.SemanticWalker.prototype.findFocusOnLevel=function(a){return this.levels.find(function(b){return b.getSemanticPrimary().id===a})};sre.SyntaxWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SyntaxWalker,sre.AbstractWalker);sre.SyntaxWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.primaryId()]);return a};sre.SyntaxWalker.prototype.up=function(){sre.SyntaxWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.singletonFocus(a)};\nsre.SyntaxWalker.prototype.down=function(){sre.SyntaxWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;var b=this.singletonFocus(a[0]);b&&this.levels.push(a);return b};\nsre.SyntaxWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return sre.BaseUtil.interleaveLists(d,c);case sre.SemanticAttr.Type.PREFIXOP:return c.concat(d);case sre.SemanticAttr.Type.POSTFIXOP:return d.concat(c);case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return d.unshift(c[0]),d.push(c[1]),d;case sre.SemanticAttr.Type.CASES:return d.unshift(c[0]),\nd;case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?sre.BaseUtil.interleaveLists(d,c):d;case sre.SemanticAttr.Type.APPL:return[d[0],c[0],d[1]];case sre.SemanticAttr.Type.ROOT:return[d[1],d[0]];default:return d}};sre.SyntaxWalker.prototype.left=function(){sre.SyntaxWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a-1))?this.singletonFocus(a):null};\nsre.SyntaxWalker.prototype.right=function(){sre.SyntaxWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a+1))?this.singletonFocus(a):null};sre.SyntaxWalker.prototype.findFocusOnLevel=function(a){return this.singletonFocus(a.toString())};sre.TableWalker=function(a,b,c,d){sre.SyntaxWalker.call(this,a,b,c,d);this.modifier=!1;this.keyMapping[sre.EventUtil.KeyCode[\"0\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"1\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"2\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"3\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"4\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"5\"]]=\ngoog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"6\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"7\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"8\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"9\"]]=goog.bind(this.jumpCell,this);this.key_=null;this.row_=0;this.firstJump=this.currentTable_=null};goog.inherits(sre.TableWalker,sre.SyntaxWalker);\nsre.TableWalker.prototype.move=function(a){this.key_=a;a=sre.TableWalker.superClass_.move.call(this,a);this.modifier=!1;return a};sre.TableWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.eligibleCell_()?this.verticalMove_(!1):sre.TableWalker.superClass_.up.call(this)};sre.TableWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.eligibleCell_()?this.verticalMove_(!0):sre.TableWalker.superClass_.down.call(this)};\nsre.TableWalker.ELIGIBLE_CELL_ROLES=[sre.SemanticAttr.Role.DETERMINANT,sre.SemanticAttr.Role.ROWVECTOR,sre.SemanticAttr.Role.BINOMIAL,sre.SemanticAttr.Role.SQUAREMATRIX,sre.SemanticAttr.Role.MULTILINE,sre.SemanticAttr.Role.MATRIX,sre.SemanticAttr.Role.VECTOR,sre.SemanticAttr.Role.CASES,sre.SemanticAttr.Role.TABLE];sre.TableWalker.ELIGIBLE_TABLE_TYPES=[sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.MATRIX,sre.SemanticAttr.Type.VECTOR,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.TABLE];\nsre.TableWalker.prototype.eligibleCell_=function(){var a=this.getFocus().getSemanticPrimary();return this.modifier&&a.type===sre.SemanticAttr.Type.CELL&&-1!==sre.TableWalker.ELIGIBLE_CELL_ROLES.indexOf(a.role)};\nsre.TableWalker.prototype.verticalMove_=function(a){var b=this.previousLevel();if(!b)return null;var c=this.getFocus(),d=this.levels.indexOf(this.primaryId()),e=this.levels.pop();b=this.levels.indexOf(b);a=this.levels.get(a?b+1:b-1);if(!a)return this.levels.push(e),null;this.setFocus(this.singletonFocus(a));a=this.nextLevel();if(!a[d])return this.setFocus(c),this.levels.push(e),null;this.levels.push(a);return this.singletonFocus(a[d])};\nsre.TableWalker.prototype.jumpCell=function(){if(!this.isInTable_()||null===this.key_)return this.getFocus();if(this.moved===sre.Walker.move.ROW){this.moved=sre.Walker.move.CELL;var a=this.key_-sre.EventUtil.KeyCode[\"0\"];return this.isLegalJump_(this.row_,a)?this.jumpCell_(this.row_,a):this.getFocus()}a=this.key_-sre.EventUtil.KeyCode[\"0\"];if(a>this.currentTable_.childNodes.length)return this.getFocus();this.row_=a;this.moved=sre.Walker.move.ROW;return this.getFocus().clone()};\nsre.TableWalker.prototype.jumpCell_=function(a,b){this.firstJump?this.virtualize(!1):(this.firstJump=this.getFocus(),this.virtualize(!0));var c=this.currentTable_.id.toString();do var d=this.levels.pop();while(-1===d.indexOf(c));this.levels.push(d);this.setFocus(this.singletonFocus(c));this.levels.push(this.nextLevel());a=this.currentTable_.childNodes[a-1];this.setFocus(this.singletonFocus(a.id.toString()));this.levels.push(this.nextLevel());return this.singletonFocus(a.childNodes[b-1].id.toString())};\nsre.TableWalker.prototype.isLegalJump_=function(a,b){var c=sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",this.currentTable_.id.toString())[0];if(!c||c.hasAttribute(\"alternative\"))return!1;a=this.currentTable_.childNodes[a-1];if(!a)return!1;c=sre.DomUtil.querySelectorAllByAttrValue(c,\"id\",a.id.toString())[0];return!c||c.hasAttribute(\"alternative\")?!1:!(!a||!a.childNodes[b-1])};\nsre.TableWalker.prototype.isInTable_=function(){for(var a=this.getFocus().getSemanticPrimary();a;){if(-1!==sre.TableWalker.ELIGIBLE_TABLE_TYPES.indexOf(a.type))return this.currentTable_=a,!0;a=a.parent}return!1};sre.TableWalker.prototype.undo=function(){var a=sre.TableWalker.superClass_.undo.call(this);a===this.firstJump&&(this.firstJump=null);return a};sre.WalkerFactory={};sre.WalkerFactory.walker=function(a,b,c,d,e){return new (sre.WalkerFactory.walkerMapping_[a.toLowerCase()]||sre.WalkerFactory.walkerMapping_.dummy)(b,c,d,e)};sre.WalkerFactory.walkerMapping_={dummy:sre.DummyWalker,semantic:sre.SemanticWalker,syntax:sre.SyntaxWalker,table:sre.TableWalker};sre.ProcessorFactory={};sre.ProcessorFactory.PROCESSORS_={};sre.ProcessorFactory.get_=function(a){var b=sre.ProcessorFactory.PROCESSORS_[a.toLowerCase()];if(!b)throw new sre.Engine.Error(\"Unknown processor \"+a);return b};sre.ProcessorFactory.process=function(a,b){return sre.ProcessorFactory.get_(a).processor(b)};sre.ProcessorFactory.print=function(a,b){a=sre.ProcessorFactory.get_(a);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};\nsre.ProcessorFactory.output=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};sre.ProcessorFactory.keypress=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.key?a.key(b):b;b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};\nsre.Processor=function(a,b){this.name=a;this.processor=b.processor;this.print=b.print||sre.Processor.stringify_;this.pprint=b.pprint||this.print;sre.ProcessorFactory.PROCESSORS_[this.name]=this};sre.KeyProcessor=function(a,b){sre.Processor.call(this,a,b);this.key=b.key||sre.KeyProcessor.getKey_};goog.inherits(sre.KeyProcessor,sre.Processor);sre.KeyProcessor.getKey_=function(a){return\"string\"===typeof a?sre.EventUtil.KeyCode[a.toUpperCase()]:a};\nsre.Processor.LocalState_={walker:null,speechGenerator:null,highlighter:null};sre.Processor.stringify_=function(a){return a?a.toString():a};new sre.Processor(\"semantic\",{processor:function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.xmlTree(a)},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});\nnew sre.Processor(\"speech\",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);a=sre.SpeechGeneratorUtil.computeSpeech(a);var b=sre.AuralRendering.getInstance();return b.finalize(b.markup(a))},pprint:function(a){a=a.toString();return sre.AuralRendering.ofType(sre.XmlRenderer)?sre.DomUtil.formatXml(a):a}});\nnew sre.Processor(\"json\",{processor:function(a){a=sre.DomUtil.parseInput(a,sre.Engine.Error);return sre.Semantic.getTree(a).toJson()},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});new sre.Processor(\"description\",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);return sre.SpeechGeneratorUtil.computeSpeech(a)},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});\nnew sre.Processor(\"enriched\",{processor:function(a){a=sre.Enrich.semanticMathmlSync(a);var b=sre.WalkerUtil.getSemanticRoot(a);switch(sre.Engine.getInstance().speech){case sre.Engine.Speech.SHALLOW:var c=sre.SpeechGeneratorFactory.generator(\"Adhoc\");c.getSpeech(b,a);break;case sre.Engine.Speech.DEEP:c=sre.SpeechGeneratorFactory.generator(\"Tree\"),c.getSpeech(b,a)}return a},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});\nnew sre.Processor(\"walker\",{processor:function(a){var b=sre.SpeechGeneratorFactory.generator(\"Node\");sre.Processor.LocalState_.speechGenerator=b;sre.Processor.LocalState_.highlighter=sre.HighlighterFactory.highlighter({color:\"black\"},{color:\"white\"},{renderer:\"NativeMML\"});a=sre.ProcessorFactory.process(\"enriched\",a);var c=sre.ProcessorFactory.print(\"enriched\",a);sre.Processor.LocalState_.walker=sre.WalkerFactory.walker(sre.Engine.getInstance().walker,a,b,sre.Processor.LocalState_.highlighter,c);\nreturn sre.Processor.LocalState_.walker},print:function(a){return sre.Processor.LocalState_.walker.speech()}});new sre.KeyProcessor(\"move\",{processor:function(a){return sre.Processor.LocalState_.walker?!1===sre.Processor.LocalState_.walker.move(a)?sre.AuralRendering.getInstance().error(a):sre.Processor.LocalState_.walker.speech():null}});sre.System=function(){this.version=sre.Variables.VERSION};goog.addSingletonGetter(sre.System);\nsre.System.prototype.setupEngine=function(a){var b=sre.Engine.getInstance(),c=function(d){b[d]=a[d]||b[d]};c(\"mode\");sre.System.prototype.configBlocks_(a);sre.Engine.BINARY_FEATURES.forEach(function(d){\"undefined\"!==typeof a[d]&&(b[d]=!!a[d])});sre.Engine.STRING_FEATURES.forEach(c);a.json&&(sre.SystemExternal.jsonPath=sre.BaseUtil.makePath(a.json));a.xpath&&(sre.SystemExternal.WGXpath=a.xpath);b.setupBrowsers();b.ruleSets=a.rules?a.rules:sre.SpeechRuleStores.availableSets();sre.SpeechRuleEngine.getInstance().parameterize(b.ruleSets);\nb.setDynamicCstr();sre.L10n.setLocale()};sre.System.prototype.configBlocks_=function(a){if(!sre.Engine.getInstance().config&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP){sre.Engine.getInstance().config=!0;for(var b=document.documentElement.querySelectorAll('script[type=\"text/x-sre-config\"]'),c=0,d=b.length;c<d;c++)try{var e=b[c].innerHTML,f=JSON.parse(e),g;for(g in f)a[g]=f[g]}catch(h){sre.Debugger.getInstance().output(\"Illegal configuration \",e)}}};\nsre.System.setAsync=function(){sre.Engine.isReady()||setTimeout(sre.System.setAsync,500);sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.ASYNC})};sre.System.prototype.engineSetup=function(){var a=[\"mode\"].concat(sre.Engine.STRING_FEATURES,sre.Engine.BINARY_FEATURES),b=sre.Engine.getInstance(),c={};a.forEach(function(d){c[d]=b[d]});c.json=sre.SystemExternal.jsonPath;c.xpath=sre.SystemExternal.WGXpath;c.rules=b.ruleSets.slice();return c};sre.System.prototype.engineReady=function(){return sre.Engine.isReady()};\nsre.System.prototype.toSpeech=function(a){return sre.System.getInstance().processString(\"speech\",a)};sre.System.prototype.toSemantic=function(a){return sre.System.getInstance().processString(\"semantic\",a)};sre.System.prototype.toJson=function(a){return sre.System.getInstance().processString(\"json\",a)};sre.System.prototype.toDescription=function(a){return sre.System.getInstance().processString(\"description\",a)};\nsre.System.prototype.toEnriched=function(a){return sre.System.getInstance().processString(\"enriched\",a)};sre.System.prototype.processString=function(a,b){return sre.ProcessorFactory.process(a,b)};sre.System.prototype.fileToSpeech=function(a,b){sre.System.getInstance().processFile(\"speech\",a,b)};sre.System.prototype.fileToSemantic=function(a,b){sre.System.getInstance().processFile(\"semantic\",a,b)};sre.System.prototype.fileToJson=function(a,b){sre.System.getInstance().processFile(\"json\",a,b)};\nsre.System.prototype.fileToDescription=function(a,b){sre.System.getInstance().processFile(\"description\",a,b)};sre.System.prototype.fileToEnriched=function(a,b){sre.System.getInstance().processFile(\"enriched\",a,b)};sre.System.prototype.processFile=function(a,b,c){sre.Engine.isReady()?sre.Engine.getInstance().mode===sre.Engine.Mode.SYNC?this.processFileSync_(a,b,c):this.processFileAsync_(a,b,c):setTimeout(goog.bind(function(){this.processFile(a,b,c)},this),100)};\nsre.System.prototype.inputFileSync_=function(a){try{var b=sre.SystemExternal.fs.readFileSync(a,{encoding:\"utf8\"})}catch(c){throw new sre.Engine.Error(\"Can not open file: \"+a);}return b};sre.System.prototype.processFileSync_=function(a,b,c){b=sre.System.getInstance().inputFileSync_(b);a=sre.ProcessorFactory.output(a,b);if(c)try{sre.SystemExternal.fs.writeFileSync(c,a)}catch(d){throw new sre.Engine.Error(\"Can not write to file: \"+c);}else console.info(a)};\nsre.System.prototype.inputFileAsync_=function(a,b){sre.SystemExternal.fs.readFile(a,{encoding:\"utf8\"},goog.bind(function(c,d){if(c)throw new sre.Engine.Error(\"Can not open file: \"+a);b(d)},this))};sre.System.prototype.processFileAsync_=function(a,b,c){sre.System.getInstance().inputFileAsync_(b,goog.bind(function(d){d=sre.ProcessorFactory.output(a,d);c?sre.SystemExternal.fs.writeFile(c,d,function(e){if(e)throw new sre.Engine.Error(\"Can not write to file: \"+c);}):console.info(d)},this))};\nsre.System.prototype.walk=function(a){return sre.ProcessorFactory.output(\"walker\",a)};sre.System.prototype.move=function(a){return sre.ProcessorFactory.keypress(\"move\",a)};sre.Browser={};sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.HTTP,domain:\"mathspeak\",style:\"default\"});var SRE=sre.System.getInstance();\n\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/js/mathjax/tex-svg-full.js",
    "content": "!function(t){var e={};function Q(r){if(e[r])return e[r].exports;var T=e[r]={i:r,l:!1,exports:{}};return t[r].call(T.exports,T,T.exports,Q),T.l=!0,T.exports}Q.m=t,Q.c=e,Q.d=function(t,e,r){Q.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},Q.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},Q.t=function(t,e){if(1&e&&(t=Q(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(Q.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var T in t)Q.d(r,T,function(e){return t[e]}.bind(null,T));return r},Q.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return Q.d(e,\"a\",e),e},Q.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},Q.p=\"\",Q(Q.s=313)}([function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.XMLNode=e.TextNode=e.AbstractMmlEmptyNode=e.AbstractMmlBaseNode=e.AbstractMmlLayoutNode=e.AbstractMmlTokenNode=e.AbstractMmlNode=e.indentAttributes=e.TEXCLASSNAMES=e.TEXCLASS=void 0;var a=Q(24),s=Q(58);e.TEXCLASS={ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},e.TEXCLASSNAMES=[\"ORD\",\"OP\",\"BIN\",\"REL\",\"OPEN\",\"CLOSE\",\"PUNCT\",\"INNER\",\"VCENTER\"];var l=[\"\",\"thinmathspace\",\"mediummathspace\",\"thickmathspace\"],c=[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]];e.indentAttributes=[\"indentalign\",\"indentalignfirst\",\"indentshift\",\"indentshiftfirst\"];var u=function(t){function Q(e,Q,r){void 0===Q&&(Q={}),void 0===r&&(r=[]);var T=t.call(this,e)||this;return T.texClass=null,T.prevClass=null,T.prevLevel=null,T.arity<0&&(T.childNodes=[e.create(\"inferredMrow\")],T.childNodes[0].parent=T),T.setChildren(r),T.attributes=new a.Attributes(e.getNodeClass(T.kind).defaults,e.getNodeClass(\"math\").defaults),T.attributes.setList(Q),T}return T(Q,t),Object.defineProperty(Q.prototype,\"isToken\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isSpacelike\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"linebreakContainer\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"hasNewLine\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"arity\",{get:function(){return 1/0},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isInferred\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"Parent\",{get:function(){for(var t=this.parent;t&&t.notParent;)t=t.Parent;return t},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"notParent\",{get:function(){return!1},enumerable:!1,configurable:!0}),Q.prototype.setChildren=function(e){return this.arity<0?this.childNodes[0].setChildren(e):t.prototype.setChildren.call(this,e)},Q.prototype.appendChild=function(e){return this.arity<0?(this.childNodes[0].appendChild(e),e):t.prototype.appendChild.call(this,e)},Q.prototype.replaceChild=function(e,Q){return this.arity<0?(this.childNodes[0].replaceChild(e,Q),e):t.prototype.replaceChild.call(this,e,Q)},Q.prototype.core=function(){return this},Q.prototype.coreMO=function(){return this},Q.prototype.coreIndex=function(){return 0},Q.prototype.childPosition=function(){for(var t,e,Q=this,r=Q.parent;r&&r.notParent;)Q=r,r=r.parent;if(r){var T=0;try{for(var n=o(r.childNodes),i=n.next();!i.done;i=n.next()){if(i.value===Q)return T;T++}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}return null},Q.prototype.setTeXclass=function(t){return this.getPrevClass(t),null!=this.texClass?this:t},Q.prototype.updateTeXclass=function(t){t&&(this.prevClass=t.prevClass,this.prevLevel=t.prevLevel,t.prevClass=t.prevLevel=null,this.texClass=t.texClass)},Q.prototype.getPrevClass=function(t){t&&(this.prevClass=t.texClass,this.prevLevel=t.attributes.get(\"scriptlevel\"))},Q.prototype.texSpacing=function(){var t=null!=this.prevClass?this.prevClass:e.TEXCLASS.NONE,Q=this.texClass||e.TEXCLASS.ORD;if(t===e.TEXCLASS.NONE||Q===e.TEXCLASS.NONE)return\"\";t===e.TEXCLASS.VCENTER&&(t=e.TEXCLASS.ORD),Q===e.TEXCLASS.VCENTER&&(Q=e.TEXCLASS.ORD);var r=c[t][Q];return(this.prevLevel>0||this.attributes.get(\"scriptlevel\")>0)&&r>=0?\"\":l[Math.abs(r)]},Q.prototype.hasSpacingAttributes=function(){return this.isEmbellished&&this.coreMO().hasSpacingAttributes()},Q.prototype.setInheritedAttributes=function(t,e,r,T){var n,a;void 0===t&&(t={}),void 0===e&&(e=!1),void 0===r&&(r=0),void 0===T&&(T=!1);var s=this.attributes.getAllDefaults();try{for(var l=o(Object.keys(t)),c=l.next();!c.done;c=l.next()){var u=c.value;if(s.hasOwnProperty(u)||Q.alwaysInherit.hasOwnProperty(u)){var p=i(t[u],2),h=p[0],f=p[1];((Q.noInherit[h]||{})[this.kind]||{})[u]||this.attributes.setInherited(u,f)}}}catch(t){n={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(n)throw n.error}}void 0===this.attributes.getExplicit(\"displaystyle\")&&this.attributes.setInherited(\"displaystyle\",e),void 0===this.attributes.getExplicit(\"scriptlevel\")&&this.attributes.setInherited(\"scriptlevel\",r),T&&this.setProperty(\"texprimestyle\",T);var d=this.arity;if(d>=0&&d!==1/0&&(1===d&&0===this.childNodes.length||1!==d&&this.childNodes.length!==d))if(d<this.childNodes.length)this.childNodes=this.childNodes.slice(0,d);else for(;this.childNodes.length<d;)this.appendChild(this.factory.create(\"mrow\"));this.setChildInheritedAttributes(t,e,r,T)},Q.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n;try{for(var i=o(this.childNodes),a=i.next();!a.done;a=i.next()){a.value.setInheritedAttributes(t,e,Q,r)}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},Q.prototype.addInheritedAttributes=function(t,e){var Q,r,T=n({},t);try{for(var i=o(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;\"displaystyle\"!==s&&\"scriptlevel\"!==s&&\"style\"!==s&&(T[s]=[this.kind,e[s]])}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}return T},Q.prototype.inheritAttributesFrom=function(t){var e=t.attributes,Q=e.get(\"displaystyle\"),r=e.get(\"scriptlevel\"),T=e.isSet(\"mathsize\")?{mathsize:[\"math\",e.get(\"mathsize\")]}:{},n=t.getProperty(\"texprimestyle\")||!1;this.setInheritedAttributes(T,Q,r,n)},Q.prototype.verifyTree=function(t){if(void 0===t&&(t=null),null!==t){this.verifyAttributes(t);var e=this.arity;t.checkArity&&e>=0&&e!==1/0&&(1===e&&0===this.childNodes.length||1!==e&&this.childNodes.length!==e)&&this.mError('Wrong number of children for \"'+this.kind+'\" node',t,!0),this.verifyChildren(t)}},Q.prototype.verifyAttributes=function(t){var e,Q;if(t.checkAttributes){var r=this.attributes,T=[];try{for(var n=o(r.getExplicitNames()),i=n.next();!i.done;i=n.next()){var a=i.value;\"data-\"===a.substr(0,5)||void 0!==r.getDefault(a)||a.match(/^(?:class|style|id|(?:xlink:)?href)$/)||T.push(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}T.length&&this.mError(\"Unknown attributes for \"+this.kind+\" node: \"+T.join(\", \"),t)}},Q.prototype.verifyChildren=function(t){var e,Q;try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.verifyTree(t)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},Q.prototype.mError=function(t,e,Q){if(void 0===Q&&(Q=!1),this.parent&&this.parent.isKind(\"merror\"))return null;var r=this.factory.create(\"merror\");if(e.fullErrors||Q){var T=this.factory.create(\"mtext\"),n=this.factory.create(\"text\");n.setText(e.fullErrors?t:this.kind),T.appendChild(n),r.appendChild(T),this.parent.replaceChild(r,this)}else this.parent.replaceChild(r,this),r.appendChild(this);return r},Q.defaults={mathbackground:a.INHERIT,mathcolor:a.INHERIT,mathsize:a.INHERIT,dir:a.INHERIT},Q.noInherit={mstyle:{mpadded:{width:!0,height:!0,depth:!0,lspace:!0,voffset:!0},mtable:{width:!0,height:!0,depth:!0,align:!0}},maligngroup:{mrow:{groupalign:!0},mtable:{groupalign:!0}}},Q.alwaysInherit={scriptminsize:!0,scriptsizemultiplier:!0},Q.verifyDefaults={checkArity:!0,checkAttributes:!1,fullErrors:!1,fixMmultiscripts:!0,fixMtables:!0},Q}(s.AbstractNode);e.AbstractMmlNode=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isToken\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getText=function(){var t,e,Q=\"\";try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){var n=T.value;n instanceof L&&(Q+=n.getText())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n;try{for(var i=o(this.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value;s instanceof u&&s.setInheritedAttributes(t,e,Q,r)}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},e.prototype.walkTree=function(t,e){var Q,r;t(this,e);try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;i instanceof u&&i.walkTree(t,e)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return e},e.defaults=n(n({},u.defaults),{mathvariant:\"normal\",mathsize:a.INHERIT}),e}(u);e.AbstractMmlTokenNode=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return this.childNodes[0].isSpacelike},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.childNodes[0]},e.prototype.coreMO=function(){return this.childNodes[0].coreMO()},e.prototype.setTeXclass=function(t){return t=this.childNodes[0].setTeXclass(t),this.updateTeXclass(this.childNodes[0]),t},e.defaults=u.defaults,e}(u);e.AbstractMmlLayoutNode=h;var f=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),Q.prototype.core=function(){return this.childNodes[0]},Q.prototype.coreMO=function(){return this.childNodes[0].coreMO()},Q.prototype.setTeXclass=function(t){var Q,r;this.getPrevClass(t),this.texClass=e.TEXCLASS.ORD;var T=this.childNodes[0];T?this.isEmbellished||T.isKind(\"mi\")?(t=T.setTeXclass(t),this.updateTeXclass(this.core())):(T.setTeXclass(null),t=this):t=this;try{for(var n=o(this.childNodes.slice(1)),i=n.next();!i.done;i=n.next()){var a=i.value;a&&a.setTeXclass(null)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(Q)throw Q.error}}return t},Q.defaults=u.defaults,Q}(u);e.AbstractMmlBaseNode=f;var d=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Object.defineProperty(Q.prototype,\"isToken\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isSpacelike\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"linebreakContainer\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"hasNewLine\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isInferred\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"notParent\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"Parent\",{get:function(){return this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"texClass\",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"prevClass\",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"prevLevel\",{get:function(){return 0},enumerable:!1,configurable:!0}),Q.prototype.hasSpacingAttributes=function(){return!1},Object.defineProperty(Q.prototype,\"attributes\",{get:function(){return null},enumerable:!1,configurable:!0}),Q.prototype.core=function(){return this},Q.prototype.coreMO=function(){return this},Q.prototype.coreIndex=function(){return 0},Q.prototype.childPosition=function(){return 0},Q.prototype.setTeXclass=function(t){return t},Q.prototype.texSpacing=function(){return\"\"},Q.prototype.setInheritedAttributes=function(t,e,Q,r){},Q.prototype.inheritAttributesFrom=function(t){},Q.prototype.verifyTree=function(t){},Q.prototype.mError=function(t,e,Q){void 0===Q&&(Q=!1)},Q}(s.AbstractEmptyNode);e.AbstractMmlEmptyNode=d;var L=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.text=\"\",e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"text\"},enumerable:!1,configurable:!0}),e.prototype.getText=function(){return this.text},e.prototype.setText=function(t){return this.text=t,this},e.prototype.toString=function(){return this.text},e}(d);e.TextNode=L;var H=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.xml=null,e.adaptor=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"XML\"},enumerable:!1,configurable:!0}),e.prototype.getXML=function(){return this.xml},e.prototype.setXML=function(t,e){return void 0===e&&(e=null),this.xml=t,this.adaptor=e,this},e.prototype.getSerializedXML=function(){return this.adaptor.outerHTML(this.xml)},e.prototype.toString=function(){return\"XML data\"},e}(d);e.XMLNode=H},function(t,e,Q){\"use strict\";(function(t){var Q=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};function r(t){return\"object\"==typeof t&&null!==t}function T(t,e){var n,o;try{for(var i=Q(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;\"__esModule\"!==s&&(!r(t[s])||!r(e[s])||e[s]instanceof Promise?null!==e[s]&&void 0!==e[s]&&(t[s]=e[s]):T(t[s],e[s]))}}catch(t){n={error:t}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return t}Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathJax=e.combineWithMathJax=e.combineDefaults=e.combineConfig=e.isObject=void 0,e.isObject=r,e.combineConfig=T,e.combineDefaults=function t(e,T,n){var o,i;e[T]||(e[T]={}),e=e[T];try{for(var a=Q(Object.keys(n)),s=a.next();!s.done;s=a.next()){var l=s.value;r(e[l])&&r(n[l])?t(e,l,n[l]):null==e[l]&&null!=n[l]&&(e[l]=n[l])}}catch(t){o={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}return e},e.combineWithMathJax=function(t){return T(e.MathJax,t)},void 0===t.MathJax&&(t.MathJax={}),t.MathJax.version||(t.MathJax={version:\"3.1.2\",_:{},config:t.MathJax}),e.MathJax=t.MathJax}).call(this,Q(271))},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var n,o=Q(7),i=Q(33),a=Q(30),s=Q(21),l=Q(20),c=function(){function t(t,e,Q,r,T,n,o,i,a,s,l,c){void 0===e&&(e={}),void 0===Q&&(Q={}),void 0===r&&(r={}),void 0===T&&(T={}),void 0===n&&(n={}),void 0===o&&(o={}),void 0===i&&(i=[]),void 0===a&&(a=[]),void 0===s&&(s=null),void 0===l&&(l=null),this.name=t,this.handler=e,this.fallback=Q,this.items=r,this.tags=T,this.options=n,this.nodes=o,this.preprocessors=i,this.postprocessors=a,this.initMethod=s,this.configMethod=l,this.priority=c,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,Q){var r=this;void 0===Q&&(Q={});var T=Q.priority||s.PrioritizedList.DEFAULTPRIORITY,n=Q.init?this.makeProcessor(Q.init,T):null,o=Q.config?this.makeProcessor(Q.config,T):null,i=(Q.preprocessors||[]).map((function(t){return r.makeProcessor(t,T)})),a=(Q.postprocessors||[]).map((function(t){return r.makeProcessor(t,T)}));return new t(e,Q.handler||{},Q.fallback||{},Q.items||{},Q.tags||{},Q.options||{},Q.nodes||{},i,a,n,o,T)},t.create=function(e,Q){void 0===Q&&(Q={});var r=t._create(e,Q);return n.set(e,r),r},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=c,function(t){var e=new Map;t.set=function(t,Q){e.set(t,Q)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(n=e.ConfigurationHandler||(e.ConfigurationHandler={}));var u=function(){function t(t){var e,Q,T,n;this.initMethod=new a.FunctionList,this.configMethod=new a.FunctionList,this.configurations=new s.PrioritizedList,this.handlers=new i.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var o=r(t.slice().reverse()),l=o.next();!l.done;l=o.next()){var c=l.value;this.addPackage(c)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}try{for(var u=r(this.configurations),p=u.next();!p.done;p=u.next()){var h=p.value,f=h.item,d=h.priority;this.append(f,d)}}catch(t){T={error:t}}finally{try{p&&!p.done&&(n=u.return)&&n.call(u)}finally{if(T)throw T.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,Q;this.configMethod.execute(this,t);try{for(var T=r(this.configurations),n=T.next();!n.done;n=T.next()){var o=n.value;this.addFilters(t,o.item)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],Q=n.get(e);Q&&this.configurations.add(Q,\"string\"==typeof t?Q.priority:t[1])},t.prototype.add=function(t,e,Q){var T,n;void 0===Q&&(Q={}),this.append(t),this.configurations.add(t,t.priority),this.init();var i=e.parseOptions;i.nodeFactory.setCreators(t.nodes);try{for(var a=r(Object.keys(t.items)),s=a.next();!s.done;s=a.next()){var c=s.value;i.itemFactory.setNodeClass(c,t.items[c])}}catch(t){T={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(T)throw T.error}}l.TagsFactory.addTags(t.tags),o.defaultOptions(i.options,t.options),o.userOptions(i.options,Q),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),o.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var Q,n,o,i;try{for(var a=r(e.preprocessors),s=a.next();!s.done;s=a.next()){var l=T(s.value,2),c=l[0],u=l[1];t.preFilters.add(c,u)}}catch(t){Q={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(Q)throw Q.error}}try{for(var p=r(e.postprocessors),h=p.next();!h.done;h=p.next()){var f=T(h.value,2),d=f[0];u=f[1];t.postFilters.add(d,u)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(i=p.return)&&i.call(p)}finally{if(o)throw o.error}}},t}();e.ParserConfiguration=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var a=Q(26),s=Q(33),l=function(){function t(t,e){this._name=t,this._parser=e,s.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.parserFor(r),o=this.lookup(r);return T&&o?T(Q,o)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=l;var c=function(t){function e(e,Q,r){var T=t.call(this,e,Q)||this;return T._regExp=r,T}return T(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(l);e.RegExpMap=c;var u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return T(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(l);e.AbstractParseMap=u;var p=function(t){function e(e,Q,r){var T,i,s=t.call(this,e,Q)||this;try{for(var l=o(Object.keys(r)),c=l.next();!c.done;c=l.next()){var u=c.value,p=r[u],h=n(\"string\"==typeof p?[p,null]:p,2),f=h[0],d=h[1],L=new a.Symbol(u,f,d);s.add(u,L)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(T)throw T.error}}return s}return T(e,t),e}(u);e.CharacterMap=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.parse=function(e){var Q=n(e,2),r=Q[0],T=Q[1];return t.prototype.parse.call(this,[r,\"\\\\\"+T])},e}(p);e.DelimiterMap=h;var f=function(t){function e(e,Q,r){var T,i,s=t.call(this,e,null)||this;try{for(var l=o(Object.keys(Q)),c=l.next();!c.done;c=l.next()){var u=c.value,p=Q[u],h=n(\"string\"==typeof p?[p]:p),f=h[0],d=h.slice(1),L=new a.Macro(u,r[f],d);s.add(u,L)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(T)throw T.error}}return s}return T(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);return T&&o?o.apply(void 0,i([Q,T.symbol],T.args))||!0:null},e}(u);e.MacroMap=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);if(!T||!o)return null;if(!o)return null;var a=Q.currentCS;Q.currentCS=\"\\\\\"+r;var s=o.apply(void 0,i([Q,\"\\\\\"+T.symbol],T.args));return Q.currentCS=a,s||!0},e}(f);e.CommandMap=d;var L=function(t){function e(e,Q,r,T){var n=t.call(this,e,r,T)||this;return n.parser=Q,n}return T(e,t),e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);return T&&o?(this.parser(Q,T.symbol,o,T.args),!0):null},e}(f);e.EnvironmentMap=L},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrapper=void 0;var i=Q(168),a=Q(50),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.element=null,e}return T(e,t),e.prototype.toSVG=function(t){this.addChildren(this.standardSVGnode(t))},e.prototype.addChildren=function(t){var e,Q,r=0;try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;i.toSVG(t),i.element&&i.place(r+i.bbox.L*i.bbox.rscale,0),r+=(i.bbox.L+i.bbox.w+i.bbox.R)*i.bbox.rscale}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},e.prototype.standardSVGnode=function(t){var e=this.createSVGnode(t);return this.handleStyles(),this.handleScale(),this.handleColor(),this.handleAttributes(),e},e.prototype.createSVGnode=function(t){var e=this.node.attributes.get(\"href\");if(e){t=this.adaptor.append(t,this.svg(\"a\",{href:e}));var Q=this.getBBox(),r=Q.h,T=Q.d,n=Q.w;this.adaptor.append(t,this.svg(\"rect\",{\"data-hitbox\":!0,fill:\"none\",stroke:\"none\",\"pointer-events\":\"all\",width:this.fixed(n),height:this.fixed(r+T),y:this.fixed(-T)}))}return this.element=this.adaptor.append(t,this.svg(\"g\",{\"data-mml-node\":this.node.kind})),this.element},e.prototype.handleStyles=function(){if(this.styles){var t=this.styles.cssText;t&&this.adaptor.setAttribute(this.element,\"style\",t)}},e.prototype.handleScale=function(){if(1!==this.bbox.rscale){var t=\"scale(\"+this.fixed(this.bbox.rscale/1e3,3)+\")\";this.adaptor.setAttribute(this.element,\"transform\",t)}},e.prototype.handleColor=function(){var t=this.adaptor,e=this.node.attributes,Q=e.getExplicit(\"mathcolor\"),r=e.getExplicit(\"color\"),T=e.getExplicit(\"mathbackground\"),n=e.getExplicit(\"background\");if((Q||r)&&(t.setAttribute(this.element,\"fill\",Q||r),t.setAttribute(this.element,\"stroke\",Q||r)),T||n){var o=this.getBBox(),i=o.h,a=o.d,s=o.w,l=this.svg(\"rect\",{fill:T||n,x:0,y:this.fixed(-a),width:this.fixed(s),height:this.fixed(i+a),\"data-bgcolor\":!0}),c=t.firstChild(this.element);c?t.insert(l,c):t.append(this.element,l)}},e.prototype.handleAttributes=function(){var t,Q,r,T,o=this.node.attributes,i=o.getAllDefaults(),a=e.skipAttributes;try{for(var s=n(o.getExplicitNames()),l=s.next();!l.done;l=s.next()){var c=l.value;!1!==a[c]&&(c in i||a[c]||this.adaptor.hasAttribute(this.element,c))||this.adaptor.setAttribute(this.element,c,o.getExplicit(c))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(t)throw t.error}}if(o.get(\"class\")){var u=o.get(\"class\").trim().split(/ +/);try{for(var p=n(u),h=p.next();!h.done;h=p.next()){var f=h.value;this.adaptor.addClass(this.element,f)}}catch(t){r={error:t}}finally{try{h&&!h.done&&(T=p.return)&&T.call(p)}finally{if(r)throw r.error}}}},e.prototype.place=function(t,e,Q){if(void 0===Q&&(Q=null),t||e){Q||(Q=this.element);var r=this.adaptor.getAttribute(Q,\"transform\")||\"\";r=\"translate(\"+this.fixed(t)+\", \"+this.fixed(e)+\")\"+(r?\" \"+r:\"\"),this.adaptor.setAttribute(Q,\"transform\",r)}},e.prototype.placeChar=function(t,e,Q,r,T){var i,a;void 0===T&&(T=null),null===T&&(T=this.variant);var s=t.toString(16).toUpperCase(),l=o(this.getVariantChar(T,t),4),c=l[2],u=l[3];if(\"p\"in u){var p=u.p?\"M\"+u.p+\"Z\":\"\";this.place(e,Q,this.adaptor.append(r,this.charNode(T,s,p)))}else if(\"c\"in u){var h=this.adaptor.append(r,this.svg(\"g\",{\"data-c\":s}));this.place(e,Q,h),e=0;try{for(var f=n(this.unicodeChars(u.c,T)),d=f.next();!d.done;d=f.next()){var L=d.value;e+=this.placeChar(L,e,Q,h,T)}}catch(t){i={error:t}}finally{try{d&&!d.done&&(a=f.return)&&a.call(f)}finally{if(i)throw i.error}}}else if(u.unknown){var H=String.fromCodePoint(t),m=this.adaptor.append(r,this.jax.unknownText(H,T));return this.place(e,Q,m),this.jax.measureTextNodeWithCache(m,H,T).w}return c},e.prototype.charNode=function(t,e,Q){return\"none\"!==this.jax.options.fontCache?this.useNode(t,e,Q):this.pathNode(e,Q)},e.prototype.pathNode=function(t,e){return this.svg(\"path\",{\"data-c\":t,d:e})},e.prototype.useNode=function(t,e,Q){var r=this.svg(\"use\"),T=\"#\"+this.jax.fontCache.cachePath(t,e,Q);return this.adaptor.setAttribute(r,\"href\",T,a.XLINKNS),r},e.prototype.drawBBox=function(){var t=this.getBBox(),e=t.w,Q=t.h,r=t.d,T=this.svg(\"g\",{style:{opacity:.25}},[this.svg(\"rect\",{fill:\"red\",height:this.fixed(Q),width:this.fixed(e)}),this.svg(\"rect\",{fill:\"green\",height:this.fixed(r),width:this.fixed(e),y:this.fixed(-r)})]),n=this.element||this.parent.element;this.adaptor.append(n,T)},e.prototype.html=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.jax.html(t,e,Q)},e.prototype.svg=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.jax.svg(t,e,Q)},e.prototype.text=function(t){return this.jax.text(t)},e.prototype.fixed=function(t,e){return void 0===e&&(e=1),this.jax.fixed(1e3*t,e)},e.kind=\"unknown\",e}(i.CommonWrapper);e.SVGWrapper=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(){function t(e,Q){for(var r=[],T=2;T<arguments.length;T++)r[T-2]=arguments[T];this.id=e,this.message=t.processString(Q,r)}return t.processString=function(e,Q){for(var r=e.split(t.pattern),T=1,n=r.length;T<n;T+=2){var o=r[T].charAt(0);if(o>=\"0\"&&o<=\"9\")r[T]=Q[parseInt(r[T],10)-1],\"number\"==typeof r[T]&&(r[T]=r[T].toString());else if(\"{\"===o){if((o=r[T].substr(1))>=\"0\"&&o<=\"9\")r[T]=Q[parseInt(r[T].substr(1,r[T].length-2),10)-1],\"number\"==typeof r[T]&&(r[T]=r[T].toString());else r[T].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(r[T]=\"%\"+r[T])}null==r[T]&&(r[T]=\"???\")}return r.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__createBinding||(Object.create?function(t,e,Q,r){void 0===r&&(r=Q),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[Q]}})}:function(t,e,Q,r){void 0===r&&(r=Q),t[r]=e[Q]}),o=this&&this.__exportStar||function(t,e){for(var Q in t)\"default\"===Q||e.hasOwnProperty(Q)||n(e,t,Q)},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AddPaths=e.SVGFontData=void 0;var a=Q(28);o(Q(28),e);var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.charOptions=function(e,Q){return t.charOptions.call(this,e,Q)},e}(a.FontData);e.SVGFontData=s,e.AddPaths=function(t,e,Q){var r,T,n,o;try{for(var a=i(Object.keys(e)),l=a.next();!l.done;l=a.next()){var c=l.value,u=parseInt(c);s.charOptions(t,u).p=e[u]}}catch(t){r={error:t}}finally{try{l&&!l.done&&(T=a.return)&&T.call(a)}finally{if(r)throw r.error}}try{for(var p=i(Object.keys(Q)),h=p.next();!h.done;h=p.next()){c=h.value,u=parseInt(c);s.charOptions(t,u).c=Q[u]}}catch(t){n={error:t}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(n)throw n.error}}return t}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.separateOptions=e.selectOptionsFromKeys=e.selectOptions=e.userOptions=e.defaultOptions=e.insert=e.copy=e.keys=e.makeArray=e.expandable=e.Expandable=e.REMOVE=e.APPEND=void 0;var o={}.constructor;function i(t){return\"object\"==typeof t&&null!==t&&(t.constructor===o||t.constructor===a)}e.APPEND=\"[+]\",e.REMOVE=\"[-]\";var a=function(){};function s(t){return Object.assign(Object.create(a.prototype),t)}function l(t){return t?Object.keys(t).concat(Object.getOwnPropertySymbols(t)):[]}function c(t){var e,Q,T={};try{for(var n=r(l(t)),o=n.next();!o.done;o=n.next()){var p=o.value,h=Object.getOwnPropertyDescriptor(t,p),f=h.value;Array.isArray(f)?h.value=u([],f,!1):i(f)&&(h.value=c(f)),h.enumerable&&(T[p]=h)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}return Object.defineProperties(t.constructor===a?s({}):{},T)}function u(t,Q,T){var o,s;void 0===T&&(T=!0);var p=function(r){if(T&&void 0===t[r]&&t.constructor!==a)throw\"symbol\"==typeof r&&(r=r.toString()),new Error('Invalid option \"'+r+'\" (no default value).');var o=Q[r],s=t[r];if(!i(o)||null===s||\"object\"!=typeof s&&\"function\"!=typeof s)Array.isArray(o)?(t[r]=[],u(t[r],o,!1)):i(o)?t[r]=c(o):t[r]=o;else{var p=l(o);Array.isArray(s)&&(1===p.length&&(p[0]===e.APPEND||p[0]===e.REMOVE)&&Array.isArray(o[p[0]])||2===p.length&&p.sort().join(\",\")===e.APPEND+\",\"+e.REMOVE&&Array.isArray(o[e.APPEND])&&Array.isArray(o[e.REMOVE]))?(o[e.REMOVE]&&(s=t[r]=s.filter((function(t){return o[e.REMOVE].indexOf(t)<0}))),o[e.APPEND]&&(t[r]=n(s,o[e.APPEND]))):u(s,o,T)}};try{for(var h=r(l(Q)),f=h.next();!f.done;f=h.next()){p(f.value)}}catch(t){o={error:t}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(o)throw o.error}}return t}function p(t){for(var e,Q,T=[],n=1;n<arguments.length;n++)T[n-1]=arguments[n];var o={};try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;t.hasOwnProperty(s)&&(o[s]=t[s])}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o}e.Expandable=a,e.expandable=s,e.makeArray=function(t){return Array.isArray(t)?t:[t]},e.keys=l,e.copy=c,e.insert=u,e.defaultOptions=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return e.forEach((function(e){return u(t,e,!1)})),t},e.userOptions=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return e.forEach((function(e){return u(t,e,!0)})),t},e.selectOptions=p,e.selectOptionsFromKeys=function(t,e){return p.apply(void 0,n([t],Object.keys(e)))},e.separateOptions=function(t){for(var e,Q,T,n,o=[],i=1;i<arguments.length;i++)o[i-1]=arguments[i];var a=[];try{for(var s=r(o),l=s.next();!l.done;l=s.next()){var c=l.value,u={},p={};try{for(var h=(T=void 0,r(Object.keys(t||{}))),f=h.next();!f.done;f=h.next()){var d=f.value;(void 0===c[d]?p:u)[d]=t[d]}}catch(t){T={error:t}}finally{try{f&&!f.done&&(n=h.return)&&n.call(h)}finally{if(T)throw T.error}}a.push(u),t=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return a.unshift(t),a}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=Q(0),a=Q(31);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function Q(t,Q){var T,n;try{for(var o=r(Object.keys(Q)),i=o.next();!i.done;i=o.next()){var a=i.value,s=Q[a];\"texClass\"===a?(t.texClass=s,t.setProperty(a,s)):\"movablelimits\"===a?(t.setProperty(\"movablelimits\",s),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",s)):\"inferred\"===a||(e.has(a)?t.setProperty(a,s):t.attributes.set(a,s))}}catch(t){T={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(T)throw T.error}}}function T(t,e,Q){t.childNodes[e]=Q,Q&&(Q.parent=t)}function o(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var Q,T;try{for(var n=r(e),o=n.next();!o.done;o=n.next()){var i=o.value;t.appendChild(i)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}},t.setAttribute=function(t,e,Q){t.attributes.set(e,Q)},t.setProperty=function(t,e,Q){t.setProperty(e,Q)},t.setProperties=Q,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];t.removeProperty.apply(t,n(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=T,t.copyChildren=function(t,e){for(var Q=t.childNodes,r=0;r<Q.length;r++)T(e,r,Q[r])},t.copyAttributes=function(t,e){e.attributes=t.attributes,Q(e,t.getAllProperties())},t.isType=o,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof i.AbstractMmlNode||t instanceof i.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,Q;if(!o(t,\"mo\"))return null;var T=t,n=T.getForms();try{for(var i=r(n),s=i.next();!s.done;s=i.next()){var l=s.value,c=a.MmlMo.OPTABLE[l][T.getText()];if(c)return c}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return null}}(o||(o={})),e.default=o},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=Q(0),i=Q(8),a=Q(12),s=Q(5),l=Q(19);Q(272),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},Q=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",n=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",c=RegExp(\"^\\\\s*\"+Q+\"\\\\s*\"+n+\"\\\\s*$\"),u=RegExp(\"^\\\\s*\"+Q+\"\\\\s*\"+n+\" ?\");function p(t,Q){void 0===Q&&(Q=!1);var T=t.match(Q?u:c);return T?function(t){var Q=r(t,3),T=Q[0],n=Q[1],o=Q[2];if(\"mu\"!==n)return[T,n,o];return[h(e[n](parseFloat(T||\"1\"))).slice(0,-2),\"em\",o]}([T[1].replace(/,/,\".\"),T[4],T[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function f(t,e,Q){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var r=\"{\\\\bigg\"+Q+\" \"+e+\"}\",T=\"{\\\\big\"+Q+\" \"+e+\"}\";return new a.default(\"\\\\mathchoice\"+r+T+T+T,{},t).mml()}function d(t,e,Q){e=e.replace(/^\\s+/,l.entities.nbsp).replace(/\\s+$/,l.entities.nbsp);var r=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],Q,r)}function L(t,e,Q){if(Q.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+Q.length>t.configuration.options.maxBuffer)throw new s.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+Q}function H(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function m(t,e){for(var Q=t.length,r=0,T=\"\",n=0,o=0,i=!0,a=!1;n<Q;){var l=t[n++];switch(l){case\" \":break;case\"{\":i?o++:(a=!1,o>r&&(o=r)),r++;break;case\"}\":r&&r--,(i||a)&&(o--,a=!0),i=!1;break;default:if(!r&&-1!==e.indexOf(l))return[a?\"true\":H(T,o),l,t.slice(n)];i=!1,a=!1}T+=l}if(r)throw new s.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[a?\"true\":H(T,o),\"\",t.slice(n)]}t.matchDimen=p,t.dimen2em=function(t){var Q=r(p(t),2),T=Q[0],n=Q[1],o=parseFloat(T||\"1\"),i=e[n];return i?i(o):0},t.Em=h,t.fenced=function(t,e,Q,r,T){void 0===T&&(T=\"\");var n,s=t.nodeFactory,l=s.create(\"node\",\"mrow\",[],{open:e,close:r,texClass:o.TEXCLASS.INNER});if(T)n=new a.default(\"\\\\\"+T+\"l\"+e,t.parser.stack.env,t).mml();else{var c=s.create(\"text\",e);n=s.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.OPEN},c)}if(i.default.appendChildren(l,[n]),i.default.isType(Q,\"mrow\")&&i.default.isInferred(Q)?i.default.appendChildren(l,i.default.getChildren(Q)):i.default.appendChildren(l,[Q]),T)n=new a.default(\"\\\\\"+T+\"r\"+r,t.parser.stack.env,t).mml();else{var u=s.create(\"text\",r);n=s.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.CLOSE},u)}return i.default.appendChildren(l,[n]),l},t.fixedFence=function(t,e,Q,r){var T=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:r,texClass:o.TEXCLASS.ORD});return e&&i.default.appendChildren(T,[f(t,e,\"l\")]),i.default.isType(Q,\"mrow\")?i.default.appendChildren(T,i.default.getChildren(Q)):i.default.appendChildren(T,[Q]),r&&i.default.appendChildren(T,[f(t,r,\"r\")]),T},t.mathPalette=f,t.fixInitialMO=function(t,e){for(var Q=0,r=e.length;Q<r;Q++){var T=e[Q];if(T&&!i.default.isType(T,\"mspace\")&&(!i.default.isType(T,\"TeXAtom\")||i.default.getChildren(T)[0]&&i.default.getChildren(i.default.getChildren(T)[0]).length)){if(i.default.isEmbellished(T)||i.default.isType(T,\"TeXAtom\")&&i.default.getTexClass(T)===o.TEXCLASS.REL){var n=t.nodeFactory.create(\"node\",\"mi\");e.unshift(n)}break}}},t.internalMath=function(t,e,Q,r){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,Q,r);var T,n,o=r||t.stack.env.font,i=o?{mathvariant:o}:{},l=[],c=0,u=0,p=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;c<e.length;)if(\"$\"===(T=e.charAt(c++)))\"$\"===p&&0===h?(n=t.create(\"node\",\"TeXAtom\",[new a.default(e.slice(u,c-1),{},t.configuration).mml()]),l.push(n),p=\"\",u=c):\"\"===p&&(u<c-1&&l.push(d(t,e.slice(u,c-1),i)),p=\"$\",u=c);else if(\"{\"===T&&\"\"!==p)h++;else if(\"}\"===T)if(\"}\"===p&&0===h){var f=new a.default(e.slice(u,c),{},t.configuration).mml();n=t.create(\"node\",\"TeXAtom\",[f],i),l.push(n),p=\"\",u=c}else\"\"!==p&&h&&h--;else if(\"\\\\\"===T)if(\"\"===p&&e.substr(c).match(/^(eq)?ref\\s*\\{/)){var L=RegExp[\"$&\"].length;u<c-1&&l.push(d(t,e.slice(u,c-1),i)),p=\"}\",u=c-1,c+=L}else\"(\"===(T=e.charAt(c++))&&\"\"===p?(u<c-2&&l.push(d(t,e.slice(u,c-2),i)),p=\")\",u=c):\")\"===T&&\")\"===p&&0===h?(n=t.create(\"node\",\"TeXAtom\",[new a.default(e.slice(u,c-2),{},t.configuration).mml()]),l.push(n),p=\"\",u=c):T.match(/[${}\\\\]/)&&\"\"===p&&(c--,e=e.substr(0,c-1)+e.substr(c));if(\"\"!==p)throw new s.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return u<e.length&&l.push(d(t,e.slice(u),i)),null!=Q?l=[t.create(\"node\",\"mstyle\",l,{displaystyle:!1,scriptlevel:Q})]:l.length>1&&(l=[t.create(\"node\",\"mrow\",l)]),l},t.internalText=d,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,Q){return\"t\"===(Q=t.trimSpaces(Q||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===Q?e.arraydef.align=\"baseline -1\":\"c\"===Q?e.arraydef.align=\"center\":Q&&(e.arraydef.align=Q),e},t.substituteArgs=function(t,e,Q){for(var r=\"\",T=\"\",n=0;n<Q.length;){var o=Q.charAt(n++);if(\"\\\\\"===o)r+=o+Q.charAt(n++);else if(\"#\"===o)if(\"#\"===(o=Q.charAt(n++)))r+=o;else{if(!o.match(/[1-9]/)||parseInt(o,10)>e.length)throw new s.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");T=L(t,L(t,T,r),e[parseInt(o,10)-1]),r=\"\"}else r+=o}return L(t,T,r)},t.addArgs=L,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new s.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,Q){return Q},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,Q){var n,o;void 0===e&&(e=null),void 0===Q&&(Q=!1);var i=function(t){var e,Q,T,n,o,i={},a=t;for(;a;)n=(e=r(m(a,[\"=\",\",\"]),3))[0],T=e[1],a=e[2],\"=\"===T?(o=(Q=r(m(a,[\",\"]),3))[0],T=Q[1],a=Q[2],o=\"false\"===o||\"true\"===o?JSON.parse(o):o,i[n]=o):n&&(i[n]=!0);return i}(t);if(e)try{for(var a=T(Object.keys(i)),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.hasOwnProperty(c)){if(Q)throw new s.default(\"InvalidOption\",\"Invalid optional argument: %1\",c);delete i[c]}}}catch(t){n={error:t}}finally{try{l&&!l.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return i}}(n||(n={})),e.default=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlAttrs=e.HtmlClasses=void 0;function r(t){return\"CtxtMenu_\"+t}function T(t){return r(t)}function n(t){return r(t)}e.HtmlClasses={ATTACHED:T(\"Attached\"),CONTEXTMENU:T(\"ContextMenu\"),MENU:T(\"Menu\"),MENUARROW:T(\"MenuArrow\"),MENUACTIVE:T(\"MenuActive\"),MENUCHECK:T(\"MenuCheck\"),MENUCLOSE:T(\"MenuClose\"),MENUCOMBOBOX:T(\"MenuComboBox\"),MENUDISABLED:T(\"MenuDisabled\"),MENUFRAME:T(\"MenuFrame\"),MENUITEM:T(\"MenuItem\"),MENULABEL:T(\"MenuLabel\"),MENURADIOCHECK:T(\"MenuRadioCheck\"),MENUINPUTBOX:T(\"MenuInputBox\"),MENURULE:T(\"MenuRule\"),MENUSLIDER:T(\"MenuSlider\"),MOUSEPOST:T(\"MousePost\"),RTL:T(\"RTL\"),INFO:T(\"Info\"),INFOCLOSE:T(\"InfoClose\"),INFOCONTENT:T(\"InfoContent\"),INFOSIGNATURE:T(\"InfoSignature\"),INFOTITLE:T(\"InfoTitle\"),SLIDERVALUE:T(\"SliderValue\"),SLIDERBAR:T(\"SliderBar\"),SELECTION:T(\"Selection\"),SELECTIONBOX:T(\"SelectionBox\"),SELECTIONMENU:T(\"SelectionMenu\"),SELECTIONDIVIDER:T(\"SelectionDivider\"),SELECTIONITEM:T(\"SelectionItem\")},e.HtmlAttrs={COUNTER:n(\"Counter\"),KEYDOWNFUNC:n(\"keydownFunc\"),CONTEXTMENUFUNC:n(\"contextmenuFunc\"),OLDTAB:n(\"Oldtabindex\"),TOUCHFUNC:n(\"TouchFunc\")}},function(t,e,Q){\"use strict\";(function(t){var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONFIG=e.MathJax=e.Loader=void 0;var T,n=Q(1),o=Q(29),i=Q(29);Object.defineProperty(e,\"Package\",{enumerable:!0,get:function(){return i.Package}}),Object.defineProperty(e,\"PackageError\",{enumerable:!0,get:function(){return i.PackageError}}),function(Q){Q.ready=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];0===Q.length&&(Q=Array.from(o.Package.packages.keys()));var n=[];try{for(var i=r(Q),a=i.next();!a.done;a=i.next()){var s=a.value,l=o.Package.packages.get(s)||new o.Package(s,!0);n.push(l.promise)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return Promise.all(n)},Q.load=function(){for(var t,Q,T=[],n=0;n<arguments.length;n++)T[n]=arguments[n];if(0===T.length)return Promise.resolve();var i=[];try{for(var a=r(T),s=a.next();!s.done;s=a.next()){var l=s.value,c=o.Package.packages.get(l);c||(c=new o.Package(l)).provides(e.CONFIG.provides[l]),c.checkNoLoad(),i.push(c.promise)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(t)throw t.error}}return o.Package.loadAll(),Promise.all(i)},Q.preLoad=function(){for(var t,Q,T=[],n=0;n<arguments.length;n++)T[n]=arguments[n];try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value,l=o.Package.packages.get(s);l||(l=new o.Package(s,!0)).provides(e.CONFIG.provides[s]),l.loaded()}}catch(e){t={error:e}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(t)throw t.error}}},Q.defaultReady=function(){void 0!==e.MathJax.startup&&e.MathJax.config.startup.ready()},Q.getRoot=function(){var e=t+\"/../../es5\";if(\"undefined\"!=typeof document){var Q=document.currentScript||document.getElementById(\"MathJax-script\");Q&&(e=Q.src.replace(/\\/[^\\/]*$/,\"\"))}return e}}(T=e.Loader||(e.Loader={})),e.MathJax=n.MathJax,void 0===e.MathJax.loader&&(n.combineDefaults(e.MathJax.config,\"loader\",{paths:{mathjax:T.getRoot()},source:{},dependencies:{},provides:{},load:[],ready:T.defaultReady.bind(T),failed:function(t){return console.log(\"MathJax(\"+(t.package||\"?\")+\"): \"+t.message)},require:null}),n.combineWithMathJax({loader:T})),e.CONFIG=e.MathJax.config.loader}).call(this,\"/\")},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(9),i=Q(85),a=Q(5),s=Q(0),l=function(){function t(t,e,Q){var T,n;this._string=t,this.configuration=Q,this.macroCount=0,this.i=0,this.currentCS=\"\";var o,a=e.hasOwnProperty(\"isInner\"),s=e.isInner;if(delete e.isInner,e){o={};try{for(var l=r(Object.keys(e)),c=l.next();!c.done;c=l.next()){var u=c.value;o[u]=e[u]}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}}this.configuration.pushParser(this),this.stack=new i.default(this.itemFactory,o,!a||s),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,Q=\"\";try{for(var T=r(Array.from(this.configuration.handlers.keys())),n=T.next();!n.done;n=T.next()){var o=n.value;Q+=o+\": \"+this.configuration.handlers.get(o)+\"\\n\"}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof s.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,Q;try{for(var T=r(t),n=T.next();!n.done;n=T.next()){var o=n.value;this.stack.Push(o)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new a.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new a.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var Q=++this.i,r=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":r++;break;case\"}\":if(0==--r)return this.string.slice(Q,this.i-1)}throw new a.default(\"MissingCloseBrace\",\"Missing close brace\")}var T=this.getCodePoint();return this.i+=T.length,T},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var Q=++this.i,r=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":r++;break;case\"\\\\\":this.i++;break;case\"}\":if(r--<=0)throw new a.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===r)return this.string.slice(Q,this.i-1)}throw new a.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var Q=this.GetNext();if(this.i+=Q.length,this.i<=this.string.length&&(\"\\\\\"===Q?Q+=this.GetCS():\"{\"===Q&&e&&(this.i--,Q=this.GetArgument(t)),this.contains(\"delimiter\",Q)))return this.convertDelimiter(Q);throw new a.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),Q=T(o.default.matchDimen(e),2),r=Q[0],n=Q[1];if(r)return r+n}else{e=this.string.slice(this.i);var i=T(o.default.matchDimen(e,!0),3),s=(r=i[0],n=i[1],i[2]);if(r)return this.i+=s,r+n}throw new a.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var Q=this.i,r=0;this.i<this.string.length;){var T=this.i,n=this.GetNext();switch(this.i+=n.length,n){case\"\\\\\":n+=this.GetCS();break;case\"{\":r++;break;case\"}\":if(0===r)throw new a.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);r--}if(0===r&&n===e)return this.string.slice(Q,T)}throw new a.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,Q){return new t(this.GetUpTo(e,Q),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=o.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new a.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return(e=this.configuration.nodeFactory).create.apply(e,n([t],Q))},t}();e.default=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.newState=e.STATE=e.AbstractMathItem=e.protoItem=void 0,e.protoItem=function(t,e,Q,r,T,n,o){return void 0===o&&(o=null),{open:t,math:e,close:Q,n:r,start:{n:T},end:{n:n},display:o}};var r=function(){function t(t,Q,r,T,n){void 0===r&&(r=!0),void 0===T&&(T={i:0,n:0,delim:\"\"}),void 0===n&&(n={i:0,n:0,delim:\"\"}),this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={},this._state=e.STATE.UNPROCESSED,this.math=t,this.inputJax=Q,this.display=r,this.start=T,this.end=n,this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={}}return Object.defineProperty(t.prototype,\"isEscaped\",{get:function(){return null===this.display},enumerable:!1,configurable:!0}),t.prototype.render=function(t){t.renderActions.renderMath(this,t)},t.prototype.rerender=function(t,Q){void 0===Q&&(Q=e.STATE.RERENDER),this.state()>=Q&&this.state(Q-1),t.renderActions.renderMath(this,t,Q)},t.prototype.convert=function(t,Q){void 0===Q&&(Q=e.STATE.LAST),t.renderActions.renderConvert(this,t,Q)},t.prototype.compile=function(t){this.state()<e.STATE.COMPILED&&(this.root=this.inputJax.compile(this,t),this.state(e.STATE.COMPILED))},t.prototype.typeset=function(t){this.state()<e.STATE.TYPESET&&(this.typesetRoot=t.outputJax[this.isEscaped?\"escaped\":\"typeset\"](this,t),this.state(e.STATE.TYPESET))},t.prototype.updateDocument=function(t){},t.prototype.removeFromDocument=function(t){void 0===t&&(t=!1)},t.prototype.setMetrics=function(t,e,Q,r,T){this.metrics={em:t,ex:e,containerWidth:Q,lineWidth:r,scale:T}},t.prototype.state=function(t,Q){return void 0===t&&(t=null),void 0===Q&&(Q=!1),null!=t&&(t<e.STATE.INSERTED&&this._state>=e.STATE.INSERTED&&this.removeFromDocument(Q),t<e.STATE.TYPESET&&this._state>=e.STATE.TYPESET&&(this.outputData={}),t<e.STATE.COMPILED&&this._state>=e.STATE.COMPILED&&(this.inputData={}),this._state=t),this._state},t.prototype.reset=function(t){void 0===t&&(t=!1),this.state(e.STATE.UNPROCESSED,t)},t}();e.AbstractMathItem=r,e.STATE={UNPROCESSED:0,FINDMATH:10,COMPILED:20,CONVERT:100,METRICS:110,RERENDER:125,TYPESET:150,INSERTED:200,LAST:1e4},e.newState=function(t,Q){if(t in e.STATE)throw Error(\"State \"+t+\" already exists\");e.STATE[t]=Q}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.split=e.isPercent=e.unicodeChars=e.quotePattern=e.sortLength=void 0,e.sortLength=function(t,e){return t.length!==e.length?e.length-t.length:t===e?0:t<e?-1:1},e.quotePattern=function(t){return t.replace(/([\\^$(){}+*?\\-|\\[\\]\\:\\\\])/g,\"\\\\$1\")},e.unicodeChars=function(t){return Array.from(t).map((function(t){return t.codePointAt(0)}))},e.isPercent=function(t){return!!t.match(/%\\s*$/)},e.split=function(t){return t.trim().split(/\\s+/)}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var T=Q(27),n=Q(8),o=Q(5),i=Q(12),a=Q(13),s=Q(9),l=Q(0),c=Q(20),u=Q(19);Q(272),Q(282),Q(283);var p={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function f(t,e){var Q=t.stack.env,r=Q.inRoot;Q.inRoot=!0;var T=new i.default(e,Q,t.configuration),n=T.mml(),o=T.stack.global;if(o.leftRoot||o.upRoot){var a={};o.leftRoot&&(a.width=o.leftRoot),o.upRoot&&(a.voffset=o.upRoot,a.height=o.upRoot),n=t.create(\"node\",\"mpadded\",[n],a)}return Q.inRoot=r,n}p.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},p.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},p.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},u.entities.nbsp))},p.Space=function(t,e){},p.Superscript=function(t,e){var Q,T,i;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var a=t.stack.Top();a.isKind(\"prime\")?(i=(Q=r(a.Peek(2),2))[0],T=Q[1],t.stack.Pop()):(i=t.stack.Prev())||(i=t.create(\"token\",\"mi\",{},\"\"));var s=n.default.getProperty(i,\"movesupsub\"),l=n.default.isType(i,\"msubsup\")?i.sup:i.over;if(n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")&&n.default.getChildAt(i,i.sup)||n.default.isType(i,\"munderover\")&&!n.default.isType(i,\"mover\")&&n.default.getChildAt(i,i.over)&&!n.default.getProperty(i,\"subsupOK\"))throw new o.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")||(s?((!n.default.isType(i,\"munderover\")||n.default.isType(i,\"mover\")||n.default.getChildAt(i,i.over))&&(i=t.create(\"node\",\"munderover\",[i],{movesupsub:!0})),l=i.over):l=(i=t.create(\"node\",\"msubsup\",[i])).sup),t.Push(t.itemFactory.create(\"subsup\",i).setProperties({position:l,primes:T,movesupsub:s}))},p.Subscript=function(t,e){var Q,T,i;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var a=t.stack.Top();a.isKind(\"prime\")?(i=(Q=r(a.Peek(2),2))[0],T=Q[1],t.stack.Pop()):(i=t.stack.Prev())||(i=t.create(\"token\",\"mi\",{},\"\"));var s=n.default.getProperty(i,\"movesupsub\"),l=n.default.isType(i,\"msubsup\")?i.sub:i.under;if(n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")&&n.default.getChildAt(i,i.sub)||n.default.isType(i,\"munderover\")&&!n.default.isType(i,\"mover\")&&n.default.getChildAt(i,i.under)&&!n.default.getProperty(i,\"subsupOK\"))throw new o.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")||(s?((!n.default.isType(i,\"munderover\")||n.default.isType(i,\"mover\")||n.default.getChildAt(i,i.under))&&(i=t.create(\"node\",\"munderover\",[i],{movesupsub:!0})),l=i.under):l=(i=t.create(\"node\",\"msubsup\",[i])).sub),t.Push(t.itemFactory.create(\"subsup\",i).setProperties({position:l,primes:T,movesupsub:s}))},p.Prime=function(t,e){var Q=t.stack.Prev();if(Q||(Q=t.create(\"node\",\"mi\")),n.default.isType(Q,\"msubsup\")&&!n.default.isType(Q,\"msup\")&&n.default.getChildAt(Q,Q.sup))throw new o.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var r=\"\";t.i--;do{r+=u.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===u.entities.rquote);r=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][r.length]||r;var T=t.create(\"token\",\"mo\",{},r);t.Push(t.itemFactory.create(\"prime\",Q,T))},p.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},p.Hash=function(t,e){throw new o.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},p.SetFont=function(t,e,Q){t.stack.env.font=Q},p.SetStyle=function(t,e,Q,r,T){t.stack.env.style=Q,t.stack.env.level=T,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:r,scriptlevel:T}))},p.SetSize=function(t,e,Q){t.stack.env.size=Q,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:Q+\"em\"}))},p.Spacer=function(t,e,Q){var r=t.create(\"node\",\"mspace\",[],{width:Q}),T=t.create(\"node\",\"mstyle\",[r],{scriptlevel:0});t.Push(T)},p.LeftRight=function(t,e){var Q=e.substr(1);t.Push(t.itemFactory.create(Q).setProperty(\"delim\",t.GetDelimiter(e)))},p.Middle=function(t,e){var Q=t.GetDelimiter(e),r=t.create(\"node\",\"TeXAtom\",[],{texClass:l.TEXCLASS.CLOSE});if(t.Push(r),!t.stack.Top().isKind(\"left\"))throw new o.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);r=t.create(\"token\",\"mo\",{stretchy:!0},Q),t.Push(r),r=t.create(\"node\",\"TeXAtom\",[],{texClass:l.TEXCLASS.OPEN}),t.Push(r)},p.NamedFn=function(t,e,Q){Q||(Q=e.substr(1));var r=t.create(\"token\",\"mi\",{texClass:l.TEXCLASS.OP},Q);t.Push(t.itemFactory.create(\"fn\",r))},p.NamedOp=function(t,e,Q){Q||(Q=e.substr(1)),Q=Q.replace(/&thinsp;/,\"\\u2006\");var r=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:a.TexConstant.Form.PREFIX,texClass:l.TEXCLASS.OP},Q);t.Push(r)},p.Limits=function(t,e,Q){var r=t.stack.Prev(!0);if(!r||n.default.getTexClass(n.default.getCoreMO(r))!==l.TEXCLASS.OP&&null==n.default.getProperty(r,\"movesupsub\"))throw new o.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var T,i=t.stack.Top();n.default.isType(r,\"munderover\")&&!Q?(T=t.create(\"node\",\"msubsup\"),n.default.copyChildren(r,T),r=i.Last=T):n.default.isType(r,\"msubsup\")&&Q&&(T=t.create(\"node\",\"munderover\"),n.default.copyChildren(r,T),r=i.Last=T),n.default.setProperty(r,\"movesupsub\",!!Q),n.default.setProperties(n.default.getCoreMO(r),{movablelimits:!1}),(n.default.getAttribute(r,\"movablelimits\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1})},p.Over=function(t,e,Q,r){var T=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);Q||r?(T.setProperty(\"open\",Q),T.setProperty(\"close\",r)):e.match(/withdelims$/)&&(T.setProperty(\"open\",t.GetDelimiter(e)),T.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?T.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||Q||r)&&T.setProperty(\"thickness\",0),t.Push(T)},p.Frac=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e),T=t.create(\"node\",\"mfrac\",[Q,r]);t.Push(T)},p.Sqrt=function(t,e){var Q=t.GetBrackets(e),r=t.GetArgument(e);\"\\\\frac\"===r&&(r+=\"{\"+t.GetArgument(r)+\"}{\"+t.GetArgument(r)+\"}\");var T=new i.default(r,t.stack.env,t.configuration).mml();T=Q?t.create(\"node\",\"mroot\",[T,f(t,Q)]):t.create(\"node\",\"msqrt\",[T]),t.Push(T)},p.Root=function(t,e){var Q=t.GetUpTo(e,\"\\\\of\"),r=t.ParseArg(e),T=t.create(\"node\",\"mroot\",[r,f(t,Q)]);t.Push(T)},p.MoveRoot=function(t,e,Q){if(!t.stack.env.inRoot)throw new o.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[Q])throw new o.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var r=t.GetArgument(e);if(!r.match(/-?[0-9]+/))throw new o.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(r=parseInt(r,10)/15+\"em\").substr(0,1)&&(r=\"+\"+r),t.stack.global[Q]=r},p.Accent=function(t,e,Q,r){var T=t.ParseArg(e),o=s.default.getFontDef(t);o.accent=!0;var i=n.default.createEntity(Q),a=t.create(\"token\",\"mo\",o,i);n.default.setAttribute(a,\"stretchy\",!!r);var l=n.default.isEmbellished(T)?n.default.getCoreMO(T):T;n.default.isType(l,\"mo\")&&n.default.setProperties(l,{movablelimits:!1});var c=t.create(\"node\",\"munderover\");n.default.setChild(c,0,T),n.default.setChild(c,1,null),n.default.setChild(c,2,a);var u=t.create(\"node\",\"TeXAtom\",[c]);t.Push(u)},p.UnderOver=function(t,e,Q,r,T){var o,i=t.ParseArg(e),a=n.default.getForm(i);(a&&a[3]&&a[3].movablelimits||n.default.getProperty(i,\"movablelimits\"))&&n.default.setProperties(i,{movablelimits:!1}),n.default.isType(i,\"munderover\")&&n.default.isEmbellished(i)&&(n.default.setProperties(n.default.getCoreMO(i),{lspace:0,rspace:0}),o=t.create(\"node\",\"mo\",[],{rspace:0}),i=t.create(\"node\",\"mrow\",[o,i]));var s=t.create(\"node\",\"munderover\",[i]),c=n.default.createEntity(Q);o=t.create(\"token\",\"mo\",{stretchy:!0,accent:!T},c),n.default.setChild(s,\"o\"===e.charAt(1)?s.over:s.under,o);var u=s;r&&(u=t.create(\"node\",\"TeXAtom\",[s],{texClass:l.TEXCLASS.OP,movesupsub:!0})),n.default.setProperty(u,\"subsupOK\",!0),t.Push(u)},p.Overset=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);(n.default.getAttribute(r,\"movablelimits\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1});var T=t.create(\"node\",\"mover\",[r,Q]);t.Push(T)},p.Underset=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);(n.default.isType(r,\"mo\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1});var T=t.create(\"node\",\"munder\",[r,Q]);t.Push(T)},p.TeXAtom=function(t,e,Q){var r,T,n,o={texClass:Q};if(Q===l.TEXCLASS.OP){o.movesupsub=o.movablelimits=!0;var s=t.GetArgument(e),c=s.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);c?(o.mathvariant=a.TexConstant.Variant.NORMAL,T=t.create(\"token\",\"mi\",o,c[1])):(n=new i.default(s,t.stack.env,t.configuration).mml(),T=t.create(\"node\",\"TeXAtom\",[n],o)),r=t.itemFactory.create(\"fn\",T)}else n=t.ParseArg(e),r=t.create(\"node\",\"TeXAtom\",[n],o);t.Push(r)},p.MmlToken=function(t,e){var Q,r=t.GetArgument(e),T=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),i=t.GetArgument(e),a={};try{Q=t.create(\"node\",r)}catch(t){Q=null}if(!Q||!Q.isToken)throw new o.default(\"NotMathMLToken\",\"%1 is not a token element\",r);for(;\"\"!==T;){var l=T.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!l)throw new o.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",T);if(!Q.attributes.hasDefault(l[1])&&!h[l[1]])throw new o.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",l[1],r);var c=s.default.MmlFilterAttribute(t,l[1],l[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));c&&(\"true\"===c.toLowerCase()?c=!0:\"false\"===c.toLowerCase()&&(c=!1),a[l[1]]=c),T=T.substr(l[0].length)}var u=t.create(\"text\",i);Q.appendChild(u),n.default.setProperties(Q,a),t.Push(Q)},p.Strut=function(t,e){var Q=t.create(\"node\",\"mrow\"),r=t.create(\"node\",\"mpadded\",[Q],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(r)},p.Phantom=function(t,e,Q,r){var T=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(Q||r)&&(T=t.create(\"node\",\"mpadded\",[T]),r&&(n.default.setAttribute(T,\"height\",0),n.default.setAttribute(T,\"depth\",0)),Q&&n.default.setAttribute(T,\"width\",0));var o=t.create(\"node\",\"TeXAtom\",[T]);t.Push(o)},p.Smash=function(t,e){var Q=s.default.trimSpaces(t.GetBrackets(e,\"\")),r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(Q){case\"b\":n.default.setAttribute(r,\"depth\",0);break;case\"t\":n.default.setAttribute(r,\"height\",0);break;default:n.default.setAttribute(r,\"height\",0),n.default.setAttribute(r,\"depth\",0)}var T=t.create(\"node\",\"TeXAtom\",[r]);t.Push(T)},p.Lap=function(t,e){var Q=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&n.default.setAttribute(Q,\"lspace\",\"-1width\");var r=t.create(\"node\",\"TeXAtom\",[Q]);t.Push(r)},p.RaiseLower=function(t,e){var Q=t.GetDimen(e),r=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===Q.charAt(0)&&(Q=Q.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(r.setProperty(\"dh\",\"-\"+Q),r.setProperty(\"dd\",\"+\"+Q)):(r.setProperty(\"dh\",\"+\"+Q),r.setProperty(\"dd\",\"-\"+Q)),t.Push(r)},p.MoveLeftRight=function(t,e){var Q=t.GetDimen(e),r=\"-\"===Q.charAt(0)?Q.slice(1):\"-\"+Q;if(\"\\\\moveleft\"===e){var T=Q;Q=r,r=T}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:Q}),right:t.create(\"node\",\"mspace\",[],{width:r})}))},p.Hskip=function(t,e){var Q=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(Q)},p.Rule=function(t,e,Q){var r={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==Q&&(r.mathbackground=t.stack.env.color||\"black\");var T=t.create(\"node\",\"mspace\",[],r);t.Push(T)},p.rule=function(t,e){var Q=t.GetBrackets(e),r=t.GetDimen(e),T=t.GetDimen(e),o=t.create(\"node\",\"mspace\",[],{width:r,height:T,mathbackground:t.stack.env.color||\"black\"});Q&&(o=t.create(\"node\",\"mpadded\",[o],{voffset:Q}),Q.match(/^\\-/)?(n.default.setAttribute(o,\"height\",Q),n.default.setAttribute(o,\"depth\",\"+\"+Q.substr(1))):n.default.setAttribute(o,\"height\",\"+\"+Q)),t.Push(o)},p.MakeBig=function(t,e,Q,r){var T=String(r*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",n=t.GetDelimiter(e,!0),o=t.create(\"token\",\"mo\",{minsize:T,maxsize:T,fence:!0,stretchy:!0,symmetric:!0},n),i=t.create(\"node\",\"TeXAtom\",[o],{texClass:Q});t.Push(i)},p.BuildRel=function(t,e){var Q=t.ParseUpTo(e,\"\\\\over\"),r=t.ParseArg(e),T=t.create(\"node\",\"munderover\");n.default.setChild(T,0,r),n.default.setChild(T,1,null),n.default.setChild(T,2,Q);var o=t.create(\"node\",\"TeXAtom\",[T],{texClass:l.TEXCLASS.REL});t.Push(o)},p.HBox=function(t,e,Q,r){t.PushAll(s.default.internalMath(t,t.GetArgument(e),Q,r))},p.FBox=function(t,e){var Q=s.default.internalMath(t,t.GetArgument(e)),r=t.create(\"node\",\"menclose\",Q,{notation:\"box\"});t.Push(r)},p.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},p.Dots=function(t,e){var Q=n.default.createEntity(\"2026\"),r=n.default.createEntity(\"22EF\"),T=t.create(\"token\",\"mo\",{stretchy:!1},Q),o=t.create(\"token\",\"mo\",{stretchy:!1},r);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:T,cdots:o}))},p.Matrix=function(t,e,Q,r,T,n,i,a,s,l){var c=t.GetNext();if(\"\"===c)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===c?t.i++:(t.string=c+\"}\"+t.string.slice(t.i+1),t.i=0);var u=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);u.arraydef={rowspacing:i||\"4pt\",columnspacing:n||\"1em\"},s&&u.setProperty(\"isCases\",!0),l&&(u.setProperty(\"isNumbered\",!0),u.arraydef.side=l),(Q||r)&&(u.setProperty(\"open\",Q),u.setProperty(\"close\",r)),\"D\"===a&&(u.arraydef.displaystyle=!0),null!=T&&(u.arraydef.columnalign=T),t.Push(u)},p.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var Q=t.string,r=0,T=-1,n=t.i,i=Q.length;n<i;){var a=Q.charAt(n);if(\"{\"===a)r++,n++;else if(\"}\"===a)0===r?i=0:(0===--r&&T<0&&(T=n-t.i),n++);else{if(\"&\"===a&&0===r)throw new o.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===a?Q.substr(n).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?i=0:n+=2:n++}}var l=Q.substr(t.i,n-t.i);if(!l.match(/^\\s*\\\\text[^a-zA-Z]/)||T!==l.replace(/\\s+$/,\"\").length-1){var c=s.default.internalMath(t,l,0);t.PushAll(c),t.i=n}}},p.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},p.CrLaTeX=function(t,e,Q){var n;if(void 0===Q&&(Q=!1),!Q&&\"[\"===t.string.charAt(t.i)){var i=t.GetBrackets(e,\"\"),l=r(s.default.matchDimen(i),2),c=l[0],u=l[1];if(i&&!c)throw new o.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);n=c+u}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var p,h=t.stack.Top();if(h instanceof T.ArrayItem){if(n&&h.arraydef.rowspacing){var f=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var d=s.default.dimen2em(f[0]);h.setProperty(\"rowspacing\",d)}for(var L=h.getProperty(\"rowspacing\");f.length<h.table.length;)f.push(s.default.Em(L));f[h.table.length-1]=s.default.Em(Math.max(0,L+s.default.dimen2em(n))),h.arraydef.rowspacing=f.join(\" \")}}else n&&(p=t.create(\"node\",\"mspace\",[],{depth:n}),t.Push(p)),p=t.create(\"node\",\"mspace\",[],{linebreak:a.TexConstant.LineBreak.NEWLINE}),t.Push(p)},p.HLine=function(t,e,Q){null==Q&&(Q=\"solid\");var r=t.stack.Top();if(!(r instanceof T.ArrayItem)||r.Size())throw new o.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(r.table.length){for(var n=r.arraydef.rowlines?r.arraydef.rowlines.split(/ /):[];n.length<r.table.length;)n.push(\"none\");n[r.table.length-1]=Q,r.arraydef.rowlines=n.join(\" \")}else r.frame.push(\"top\")},p.HFill=function(t,e){var Q=t.stack.Top();if(!(Q instanceof T.ArrayItem))throw new o.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);Q.hfill.push(Q.Size())},p.BeginEnd=function(t,e){var Q=t.GetArgument(e);if(Q.match(/\\\\/i))throw new o.default(\"InvalidEnv\",\"Invalid environment name '%1'\",Q);var r=t.configuration.handlers.get(\"environment\").lookup(Q);if(r&&\"\\\\end\"===e){if(!r.args[0]){var T=t.itemFactory.create(\"end\").setProperty(\"name\",Q);return void t.Push(T)}t.stack.env.closing=Q}if(++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,Q])},p.Array=function(t,e,Q,r,T,n,o,i,a){T||(T=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var s=(\"c\"+T).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");T=(T=T.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var l=t.itemFactory.create(\"array\");return l.arraydef={columnalign:T,columnspacing:n||\"1em\",rowspacing:o||\"4pt\"},s.match(/[|:]/)&&(s.charAt(0).match(/[|:]/)&&(l.frame.push(\"left\"),l.dashed=\":\"===s.charAt(0)),s.charAt(s.length-1).match(/[|:]/)&&l.frame.push(\"right\"),s=s.substr(1,s.length-2),l.arraydef.columnlines=s.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),Q&&l.setProperty(\"open\",t.convertDelimiter(Q)),r&&l.setProperty(\"close\",t.convertDelimiter(r)),\"D\"===i?l.arraydef.displaystyle=!0:i&&(l.arraydef.displaystyle=!1),\"S\"===i&&(l.arraydef.scriptlevel=1),a&&(l.arraydef.useHeight=!1),t.Push(e),l},p.AlignedArray=function(t,e){var Q=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),r=p.Array(t,e);return s.default.setArrayAlign(r,Q)},p.Equation=function(t,e,Q){return t.Push(e),s.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",Q).setProperty(\"name\",e.getName())},p.EqnArray=function(t,e,Q,r,T,n){t.Push(e),r&&s.default.checkEqnEnv(t),T=(T=T.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var o=t.itemFactory.create(\"eqnarray\",e.getName(),Q,r,t.stack.global);return o.arraydef={displaystyle:!0,columnalign:T,columnspacing:n||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},o},p.HandleNoTag=function(t,e){t.tags.notag()},p.HandleLabel=function(t,e){var Q=t.GetArgument(e);if(\"\"!==Q&&!t.tags.refUpdate){if(t.tags.label)throw new o.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=Q,(t.tags.allLabels[Q]||t.tags.labels[Q])&&!t.options.ignoreDuplicateLabels)throw new o.default(\"MultipleLabel\",\"Label '%1' multiply defined\",Q);t.tags.labels[Q]=new c.Label}},p.HandleRef=function(t,e,Q){var r=t.GetArgument(e),T=t.tags.allLabels[r]||t.tags.labels[r];T||(t.tags.refUpdate||(t.tags.redo=!0),T=new c.Label);var n=T.tag;Q&&(n=t.tags.formatTag(n));var o=t.create(\"node\",\"mrow\",s.default.internalMath(t,n),{href:t.tags.formatUrl(T.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(o)},p.Macro=function(t,e,Q,r,T){if(r){var n=[];if(null!=T){var i=t.GetBrackets(e);n.push(null==i?T:i)}for(var a=n.length;a<r;a++)n.push(t.GetArgument(e));Q=s.default.substituteArgs(t,n,Q)}if(t.string=s.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},p.MathChoice=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e),T=t.ParseArg(e),n=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[Q,r,T,n]))},e.default=p},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuUtil=void 0,function(t){t.close=function(t){var e=t.menu;e.baseMenu?e.baseMenu.unpost():e.unpost()},t.getActiveElement=function(t){var e=t.menu;return(e.baseMenu?e.baseMenu:e).store.active},t.error=function(t,e){console.error(\"ContextMenu Error: \"+e)},t.counter=function(){return e++};var e=0}(e.MenuUtil||(e.MenuUtil={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BBox=e.BBoxStyleAdjust=void 0;var r=Q(32);e.BBoxStyleAdjust=[[\"borderTopWidth\",\"h\"],[\"borderRightWidth\",\"w\"],[\"borderBottomWidth\",\"d\"],[\"borderLeftWidth\",\"w\",0],[\"paddingTop\",\"h\"],[\"paddingRight\",\"w\"],[\"paddingBottom\",\"d\"],[\"paddingLeft\",\"w\",0]];var T=function(){function t(t){void 0===t&&(t={w:0,h:-r.BIGDIMEN,d:-r.BIGDIMEN}),this.w=t.w||0,this.h=\"h\"in t?t.h:-r.BIGDIMEN,this.d=\"d\"in t?t.d:-r.BIGDIMEN,this.L=this.R=this.ic=this.sk=0,this.scale=this.rscale=1,this.pwidth=\"\"}return t.zero=function(){return new t({h:0,d:0,w:0})},t.empty=function(){return new t},t.prototype.empty=function(){return this.w=0,this.h=this.d=-r.BIGDIMEN,this},t.prototype.clean=function(){this.w===-r.BIGDIMEN&&(this.w=0),this.h===-r.BIGDIMEN&&(this.h=0),this.d===-r.BIGDIMEN&&(this.d=0)},t.prototype.rescale=function(t){this.w*=t,this.h*=t,this.d*=t},t.prototype.combine=function(t,e,Q){void 0===e&&(e=0),void 0===Q&&(Q=0);var r=t.rscale,T=e+r*(t.w+t.L+t.R),n=Q+r*t.h,o=r*t.d-Q;T>this.w&&(this.w=T),n>this.h&&(this.h=n),o>this.d&&(this.d=o)},t.prototype.append=function(t){var e=t.rscale;this.w+=e*(t.w+t.L+t.R),e*t.h>this.h&&(this.h=e*t.h),e*t.d>this.d&&(this.d=e*t.d)},t.prototype.updateFrom=function(t){this.h=t.h,this.d=t.d,this.w=t.w,t.pwidth&&(this.pwidth=t.pwidth)},t.fullWidth=\"100%\",t}();e.BBox=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.numeric=e.translate=e.remove=e.add=e.entities=e.options=void 0;var r=Q(40),T=Q(126);e.options={loadMissingEntities:!0},e.entities={ApplyFunction:\"\\u2061\",Backslash:\"\\u2216\",Because:\"\\u2235\",Breve:\"\\u02d8\",Cap:\"\\u22d2\",CenterDot:\"\\xb7\",CircleDot:\"\\u2299\",CircleMinus:\"\\u2296\",CirclePlus:\"\\u2295\",CircleTimes:\"\\u2297\",Congruent:\"\\u2261\",ContourIntegral:\"\\u222e\",Coproduct:\"\\u2210\",Cross:\"\\u2a2f\",Cup:\"\\u22d3\",CupCap:\"\\u224d\",Dagger:\"\\u2021\",Del:\"\\u2207\",Delta:\"\\u0394\",Diamond:\"\\u22c4\",DifferentialD:\"\\u2146\",DotEqual:\"\\u2250\",DoubleDot:\"\\xa8\",DoubleRightTee:\"\\u22a8\",DoubleVerticalBar:\"\\u2225\",DownArrow:\"\\u2193\",DownLeftVector:\"\\u21bd\",DownRightVector:\"\\u21c1\",DownTee:\"\\u22a4\",Downarrow:\"\\u21d3\",Element:\"\\u2208\",EqualTilde:\"\\u2242\",Equilibrium:\"\\u21cc\",Exists:\"\\u2203\",ExponentialE:\"\\u2147\",FilledVerySmallSquare:\"\\u25aa\",ForAll:\"\\u2200\",Gamma:\"\\u0393\",Gg:\"\\u22d9\",GreaterEqual:\"\\u2265\",GreaterEqualLess:\"\\u22db\",GreaterFullEqual:\"\\u2267\",GreaterLess:\"\\u2277\",GreaterSlantEqual:\"\\u2a7e\",GreaterTilde:\"\\u2273\",Hacek:\"\\u02c7\",Hat:\"^\",HumpDownHump:\"\\u224e\",HumpEqual:\"\\u224f\",Im:\"\\u2111\",ImaginaryI:\"\\u2148\",Integral:\"\\u222b\",Intersection:\"\\u22c2\",InvisibleComma:\"\\u2063\",InvisibleTimes:\"\\u2062\",Lambda:\"\\u039b\",Larr:\"\\u219e\",LeftAngleBracket:\"\\u27e8\",LeftArrow:\"\\u2190\",LeftArrowRightArrow:\"\\u21c6\",LeftCeiling:\"\\u2308\",LeftDownVector:\"\\u21c3\",LeftFloor:\"\\u230a\",LeftRightArrow:\"\\u2194\",LeftTee:\"\\u22a3\",LeftTriangle:\"\\u22b2\",LeftTriangleEqual:\"\\u22b4\",LeftUpVector:\"\\u21bf\",LeftVector:\"\\u21bc\",Leftarrow:\"\\u21d0\",Leftrightarrow:\"\\u21d4\",LessEqualGreater:\"\\u22da\",LessFullEqual:\"\\u2266\",LessGreater:\"\\u2276\",LessSlantEqual:\"\\u2a7d\",LessTilde:\"\\u2272\",Ll:\"\\u22d8\",Lleftarrow:\"\\u21da\",LongLeftArrow:\"\\u27f5\",LongLeftRightArrow:\"\\u27f7\",LongRightArrow:\"\\u27f6\",Longleftarrow:\"\\u27f8\",Longleftrightarrow:\"\\u27fa\",Longrightarrow:\"\\u27f9\",Lsh:\"\\u21b0\",MinusPlus:\"\\u2213\",NestedGreaterGreater:\"\\u226b\",NestedLessLess:\"\\u226a\",NotDoubleVerticalBar:\"\\u2226\",NotElement:\"\\u2209\",NotEqual:\"\\u2260\",NotExists:\"\\u2204\",NotGreater:\"\\u226f\",NotGreaterEqual:\"\\u2271\",NotLeftTriangle:\"\\u22ea\",NotLeftTriangleEqual:\"\\u22ec\",NotLess:\"\\u226e\",NotLessEqual:\"\\u2270\",NotPrecedes:\"\\u2280\",NotPrecedesSlantEqual:\"\\u22e0\",NotRightTriangle:\"\\u22eb\",NotRightTriangleEqual:\"\\u22ed\",NotSubsetEqual:\"\\u2288\",NotSucceeds:\"\\u2281\",NotSucceedsSlantEqual:\"\\u22e1\",NotSupersetEqual:\"\\u2289\",NotTilde:\"\\u2241\",NotVerticalBar:\"\\u2224\",Omega:\"\\u03a9\",OverBar:\"\\u203e\",OverBrace:\"\\u23de\",PartialD:\"\\u2202\",Phi:\"\\u03a6\",Pi:\"\\u03a0\",PlusMinus:\"\\xb1\",Precedes:\"\\u227a\",PrecedesEqual:\"\\u2aaf\",PrecedesSlantEqual:\"\\u227c\",PrecedesTilde:\"\\u227e\",Product:\"\\u220f\",Proportional:\"\\u221d\",Psi:\"\\u03a8\",Rarr:\"\\u21a0\",Re:\"\\u211c\",ReverseEquilibrium:\"\\u21cb\",RightAngleBracket:\"\\u27e9\",RightArrow:\"\\u2192\",RightArrowLeftArrow:\"\\u21c4\",RightCeiling:\"\\u2309\",RightDownVector:\"\\u21c2\",RightFloor:\"\\u230b\",RightTee:\"\\u22a2\",RightTeeArrow:\"\\u21a6\",RightTriangle:\"\\u22b3\",RightTriangleEqual:\"\\u22b5\",RightUpVector:\"\\u21be\",RightVector:\"\\u21c0\",Rightarrow:\"\\u21d2\",Rrightarrow:\"\\u21db\",Rsh:\"\\u21b1\",Sigma:\"\\u03a3\",SmallCircle:\"\\u2218\",Sqrt:\"\\u221a\",Square:\"\\u25a1\",SquareIntersection:\"\\u2293\",SquareSubset:\"\\u228f\",SquareSubsetEqual:\"\\u2291\",SquareSuperset:\"\\u2290\",SquareSupersetEqual:\"\\u2292\",SquareUnion:\"\\u2294\",Star:\"\\u22c6\",Subset:\"\\u22d0\",SubsetEqual:\"\\u2286\",Succeeds:\"\\u227b\",SucceedsEqual:\"\\u2ab0\",SucceedsSlantEqual:\"\\u227d\",SucceedsTilde:\"\\u227f\",SuchThat:\"\\u220b\",Sum:\"\\u2211\",Superset:\"\\u2283\",SupersetEqual:\"\\u2287\",Supset:\"\\u22d1\",Therefore:\"\\u2234\",Theta:\"\\u0398\",Tilde:\"\\u223c\",TildeEqual:\"\\u2243\",TildeFullEqual:\"\\u2245\",TildeTilde:\"\\u2248\",UnderBar:\"_\",UnderBrace:\"\\u23df\",Union:\"\\u22c3\",UnionPlus:\"\\u228e\",UpArrow:\"\\u2191\",UpDownArrow:\"\\u2195\",UpTee:\"\\u22a5\",Uparrow:\"\\u21d1\",Updownarrow:\"\\u21d5\",Upsilon:\"\\u03a5\",Vdash:\"\\u22a9\",Vee:\"\\u22c1\",VerticalBar:\"\\u2223\",VerticalTilde:\"\\u2240\",Vvdash:\"\\u22aa\",Wedge:\"\\u22c0\",Xi:\"\\u039e\",amp:\"&\",acute:\"\\xb4\",aleph:\"\\u2135\",alpha:\"\\u03b1\",amalg:\"\\u2a3f\",and:\"\\u2227\",ang:\"\\u2220\",angmsd:\"\\u2221\",angsph:\"\\u2222\",ape:\"\\u224a\",backprime:\"\\u2035\",backsim:\"\\u223d\",backsimeq:\"\\u22cd\",beta:\"\\u03b2\",beth:\"\\u2136\",between:\"\\u226c\",bigcirc:\"\\u25ef\",bigodot:\"\\u2a00\",bigoplus:\"\\u2a01\",bigotimes:\"\\u2a02\",bigsqcup:\"\\u2a06\",bigstar:\"\\u2605\",bigtriangledown:\"\\u25bd\",bigtriangleup:\"\\u25b3\",biguplus:\"\\u2a04\",blacklozenge:\"\\u29eb\",blacktriangle:\"\\u25b4\",blacktriangledown:\"\\u25be\",blacktriangleleft:\"\\u25c2\",bowtie:\"\\u22c8\",boxdl:\"\\u2510\",boxdr:\"\\u250c\",boxminus:\"\\u229f\",boxplus:\"\\u229e\",boxtimes:\"\\u22a0\",boxul:\"\\u2518\",boxur:\"\\u2514\",bsol:\"\\\\\",bull:\"\\u2022\",cap:\"\\u2229\",check:\"\\u2713\",chi:\"\\u03c7\",circ:\"\\u02c6\",circeq:\"\\u2257\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",circledR:\"\\xae\",circledS:\"\\u24c8\",circledast:\"\\u229b\",circledcirc:\"\\u229a\",circleddash:\"\\u229d\",clubs:\"\\u2663\",colon:\":\",comp:\"\\u2201\",ctdot:\"\\u22ef\",cuepr:\"\\u22de\",cuesc:\"\\u22df\",cularr:\"\\u21b6\",cup:\"\\u222a\",curarr:\"\\u21b7\",curlyvee:\"\\u22ce\",curlywedge:\"\\u22cf\",dagger:\"\\u2020\",daleth:\"\\u2138\",ddarr:\"\\u21ca\",deg:\"\\xb0\",delta:\"\\u03b4\",digamma:\"\\u03dd\",div:\"\\xf7\",divideontimes:\"\\u22c7\",dot:\"\\u02d9\",doteqdot:\"\\u2251\",dotplus:\"\\u2214\",dotsquare:\"\\u22a1\",dtdot:\"\\u22f1\",ecir:\"\\u2256\",efDot:\"\\u2252\",egs:\"\\u2a96\",ell:\"\\u2113\",els:\"\\u2a95\",empty:\"\\u2205\",epsi:\"\\u03b5\",epsiv:\"\\u03f5\",erDot:\"\\u2253\",eta:\"\\u03b7\",eth:\"\\xf0\",flat:\"\\u266d\",fork:\"\\u22d4\",frown:\"\\u2322\",gEl:\"\\u2a8c\",gamma:\"\\u03b3\",gap:\"\\u2a86\",gimel:\"\\u2137\",gnE:\"\\u2269\",gnap:\"\\u2a8a\",gne:\"\\u2a88\",gnsim:\"\\u22e7\",gt:\">\",gtdot:\"\\u22d7\",harrw:\"\\u21ad\",hbar:\"\\u210f\",hellip:\"\\u2026\",hookleftarrow:\"\\u21a9\",hookrightarrow:\"\\u21aa\",imath:\"\\u0131\",infin:\"\\u221e\",intcal:\"\\u22ba\",iota:\"\\u03b9\",jmath:\"\\u0237\",kappa:\"\\u03ba\",kappav:\"\\u03f0\",lEg:\"\\u2a8b\",lambda:\"\\u03bb\",lap:\"\\u2a85\",larrlp:\"\\u21ab\",larrtl:\"\\u21a2\",lbrace:\"{\",lbrack:\"[\",le:\"\\u2264\",leftleftarrows:\"\\u21c7\",leftthreetimes:\"\\u22cb\",lessdot:\"\\u22d6\",lmoust:\"\\u23b0\",lnE:\"\\u2268\",lnap:\"\\u2a89\",lne:\"\\u2a87\",lnsim:\"\\u22e6\",longmapsto:\"\\u27fc\",looparrowright:\"\\u21ac\",lowast:\"\\u2217\",loz:\"\\u25ca\",lt:\"<\",ltimes:\"\\u22c9\",ltri:\"\\u25c3\",macr:\"\\xaf\",malt:\"\\u2720\",mho:\"\\u2127\",mu:\"\\u03bc\",multimap:\"\\u22b8\",nLeftarrow:\"\\u21cd\",nLeftrightarrow:\"\\u21ce\",nRightarrow:\"\\u21cf\",nVDash:\"\\u22af\",nVdash:\"\\u22ae\",natur:\"\\u266e\",nearr:\"\\u2197\",nharr:\"\\u21ae\",nlarr:\"\\u219a\",not:\"\\xac\",nrarr:\"\\u219b\",nu:\"\\u03bd\",nvDash:\"\\u22ad\",nvdash:\"\\u22ac\",nwarr:\"\\u2196\",omega:\"\\u03c9\",omicron:\"\\u03bf\",or:\"\\u2228\",osol:\"\\u2298\",period:\".\",phi:\"\\u03c6\",phiv:\"\\u03d5\",pi:\"\\u03c0\",piv:\"\\u03d6\",prap:\"\\u2ab7\",precnapprox:\"\\u2ab9\",precneqq:\"\\u2ab5\",precnsim:\"\\u22e8\",prime:\"\\u2032\",psi:\"\\u03c8\",quot:'\"',rarrtl:\"\\u21a3\",rbrace:\"}\",rbrack:\"]\",rho:\"\\u03c1\",rhov:\"\\u03f1\",rightrightarrows:\"\\u21c9\",rightthreetimes:\"\\u22cc\",ring:\"\\u02da\",rmoust:\"\\u23b1\",rtimes:\"\\u22ca\",rtri:\"\\u25b9\",scap:\"\\u2ab8\",scnE:\"\\u2ab6\",scnap:\"\\u2aba\",scnsim:\"\\u22e9\",sdot:\"\\u22c5\",searr:\"\\u2198\",sect:\"\\xa7\",sharp:\"\\u266f\",sigma:\"\\u03c3\",sigmav:\"\\u03c2\",simne:\"\\u2246\",smile:\"\\u2323\",spades:\"\\u2660\",sub:\"\\u2282\",subE:\"\\u2ac5\",subnE:\"\\u2acb\",subne:\"\\u228a\",supE:\"\\u2ac6\",supnE:\"\\u2acc\",supne:\"\\u228b\",swarr:\"\\u2199\",tau:\"\\u03c4\",theta:\"\\u03b8\",thetav:\"\\u03d1\",tilde:\"\\u02dc\",times:\"\\xd7\",triangle:\"\\u25b5\",triangleq:\"\\u225c\",upsi:\"\\u03c5\",upuparrows:\"\\u21c8\",veebar:\"\\u22bb\",vellip:\"\\u22ee\",weierp:\"\\u2118\",xi:\"\\u03be\",yen:\"\\xa5\",zeta:\"\\u03b6\",zigrarr:\"\\u21dd\"};var n={};function o(t,Q){if(\"#\"===Q.charAt(0))return i(Q.slice(1));if(e.entities[Q])return e.entities[Q];if(e.options.loadMissingEntities){var o=Q.match(/^[a-zA-Z](fr|scr|opf)$/)?RegExp.$1:Q.charAt(0).toLowerCase();n[o]||(n[o]=!0,r.retryAfter(T.asyncLoad(\"./util/entities/\"+o+\".js\")))}return t}function i(t){var e=\"x\"===t.charAt(0)?parseInt(t.slice(1),16):parseInt(t);return String.fromCodePoint(e)}e.add=function(t,Q){Object.assign(e.entities,t),n[Q]=!0},e.remove=function(t){delete e.entities[t]},e.translate=function(t){return t.replace(/&([a-z][a-z0-9]*|#(?:[0-9]+|x[0-9a-f]+));/gi,o)},e.numeric=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var o=Q(12),i=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=i;var a=function(t,e,Q,r,T,n,o,i){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===Q&&(Q=!1),void 0===r&&(r=null),void 0===T&&(T=\"\"),void 0===n&&(n=\"\"),void 0===o&&(o=!1),void 0===i&&(i=\"\"),this.env=t,this.taggable=e,this.defaultTags=Q,this.tag=r,this.tagId=T,this.tagFormat=n,this.noTag=o,this.labelId=i};e.TagInfo=a;var s=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new a,this.history=[],this.stack=[],this.enTag=function(t,e){var Q=this.configuration.nodeFactory,r=Q.create(\"node\",\"mtd\",[t]),T=Q.create(\"node\",\"mlabeledtr\",[e,r]);return Q.create(\"node\",\"mtable\",[T],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,Q){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new a(t,e,Q)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var Q=this.makeTag();return this.enTag(t,Q)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new i(this.currentTag.tag,this.currentTag.tagId));var t=new o.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(s);e.NoTags=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var Q=this.getTag(!0);return this.enTag(t,Q)},e}(s);e.AllTags=c,function(t){var e=new Map([[\"none\",l],[\"all\",c]]),Q=\"none\";t.OPTIONS={tags:Q,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,Q){e.set(t,Q)},t.addTags=function(e){var Q,r;try{for(var T=n(Object.keys(e)),o=T.next();!o.done;o=T.next()){var i=o.value;t.add(i,e[i])}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},t.create=function(t){var r=e.get(t)||e.get(Q);if(!r)throw Error(\"Unknown tags class\");return new r},t.setDefault=function(t){Q=t},t.getDefault=function(){return t.create(Q)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=void 0;var r=function(){function t(){this.items=[],this.items=[]}return t.prototype[Symbol.iterator]=function(){var t=0,e=this.items;return{next:function(){return{value:e[t++],done:t>e.length}}}},t.prototype.add=function(e,Q){void 0===Q&&(Q=t.DEFAULTPRIORITY);var r=this.items.length;do{r--}while(r>=0&&Q<this.items[r].priority);return this.items.splice(r+1,0,{item:e,priority:Q}),e},t.prototype.remove=function(t){var e=this.items.length;do{e--}while(e>=0&&this.items[e].item!==t);e>=0&&this.items.splice(e,1)},t.prototype.toArray=function(){return Array.from(this)},t.DEFAULTPRIORITY=5,t}();e.PrioritizedList=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var a=Q(5),s=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];(t=this._nodes).push.apply(t,o(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return(e=this.factory.configuration.nodeFactory).create.apply(e,o([t],Q))},t}();e.MmlStack=s;var l=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,Q)||this;return T.factory=e,T.global={},T._properties={},T.isOpen&&(T._env={}),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new a.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var Q=n(this.getErrors(t.kind),2),r=Q[0],T=Q[1];throw new a.default(r,T,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var Q=i(Object.keys(this.env)),r=Q.next();!r.done;r=Q.next()){var T=r.value;delete this.env[T]}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(s);e.BaseItem=l},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=Q(8),i=Q(13),a=Q(9);!function(t){t.variable=function(t,e){var Q=a.default.getFontDef(t),r=t.create(\"token\",\"mi\",Q,e);t.Push(r)},t.digit=function(t,e){var Q,r=t.configuration.options.digits,T=t.string.slice(t.i-1).match(r),n=a.default.getFontDef(t);T?(Q=t.create(\"token\",\"mn\",n,T[0].replace(/[{}]/g,\"\")),t.i+=T[0].length-1):Q=t.create(\"token\",\"mo\",n,e),t.Push(Q)},t.controlSequence=function(t,e){var Q=t.GetCS();t.parse(\"macro\",[t,Q])},t.mathchar0mi=function(t,e){var Q=e.attributes||{mathvariant:i.TexConstant.Variant.ITALIC},r=t.create(\"token\",\"mi\",Q,e.char);t.Push(r)},t.mathchar0mo=function(t,e){var Q=e.attributes||{};Q.stretchy=!1;var r=t.create(\"token\",\"mo\",Q,e.char);o.default.setProperty(r,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",r),t.Push(r)},t.mathchar7=function(t,e){var Q=e.attributes||{mathvariant:i.TexConstant.Variant.NORMAL};t.stack.env.font&&(Q.mathvariant=t.stack.env.font);var r=t.create(\"token\",\"mi\",Q,e.char);t.Push(r)},t.delimiter=function(t,e){var Q=e.attributes||{};Q=Object.assign({fence:!1,stretchy:!1},Q);var r=t.create(\"token\",\"mo\",Q,e.char);t.Push(r)},t.environment=function(t,e,Q,r){var n=r[0],o=t.itemFactory.create(\"begin\").setProperties({name:e,end:n});o=Q.apply(void 0,T([t,o],r.slice(1))),t.Push(o)}}(n||(n={})),e.default=n},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Attributes=e.INHERIT=void 0,e.INHERIT=\"_inherit_\";var T=function(){function t(t,e){this.global=e,this.defaults=Object.create(e),this.inherited=Object.create(this.defaults),this.attributes=Object.create(this.inherited),Object.assign(this.defaults,t)}return t.prototype.set=function(t,e){this.attributes[t]=e},t.prototype.setList=function(t){Object.assign(this.attributes,t)},t.prototype.get=function(t){var Q=this.attributes[t];return Q===e.INHERIT&&(Q=this.global[t]),Q},t.prototype.getExplicit=function(t){if(this.attributes.hasOwnProperty(t))return this.attributes[t]},t.prototype.getList=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];var n={};try{for(var o=r(Q),i=o.next();!i.done;i=o.next()){var a=i.value;n[a]=this.get(a)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return n},t.prototype.setInherited=function(t,e){this.inherited[t]=e},t.prototype.getInherited=function(t){return this.inherited[t]},t.prototype.getDefault=function(t){return this.defaults[t]},t.prototype.isSet=function(t){return this.attributes.hasOwnProperty(t)||this.inherited.hasOwnProperty(t)},t.prototype.hasDefault=function(t){return t in this.defaults},t.prototype.getExplicitNames=function(){return Object.keys(this.attributes)},t.prototype.getInheritedNames=function(){return Object.keys(this.inherited)},t.prototype.getDefaultNames=function(){return Object.keys(this.defaults)},t.prototype.getGlobalNames=function(){return Object.keys(this.global)},t.prototype.getAllAttributes=function(){return this.attributes},t.prototype.getAllInherited=function(){return this.inherited},t.prototype.getAllDefaults=function(){return this.defaults},t.prototype.getAllGlobals=function(){return this.global},t}();e.Attributes=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=void 0;var r=Q(118),T=Q(40);e.mathjax={version:\"3.1.2\",handlers:new r.HandlerList,document:function(t,Q){return e.mathjax.handlers.document(t,Q)},handleRetriesFor:T.handleRetriesFor,retryAfter:T.retryAfter,asyncLoad:null}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var r=function(){function t(t,e,Q){this._symbol=t,this._char=e,this._attributes=Q}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=r;var T=function(){function t(t,e,Q){void 0===Q&&(Q=[]),this._symbol=t,this._func=e,this._args=Q}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var i=Q(33),a=Q(19),s=Q(0),l=Q(5),c=Q(9),u=Q(8),p=Q(22),h=function(t){function e(e,Q){var r=t.call(this,e)||this;return r.global=Q,r}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var Q=this.toMml();return this.global.isInner||(Q=this.factory.configuration.tags.finalize(Q,this.env)),[[this.factory.create(\"mml\",Q)],!0]}return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.StartItem=h;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.StopItem=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var Q=this.toMml(),r=this.create(\"node\",\"TeXAtom\",[Q]);return[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(p.BaseItem);e.OpenItem=d;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.CloseItem=L;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=n(this.Peek(2),2),Q=e[0],r=e[1];return!u.default.isType(Q,\"msubsup\")||u.default.isType(Q,\"msup\")?[[this.create(\"node\",\"msup\",[Q,r]),t],!0]:(u.default.setChild(Q,Q.sup,r),[[Q,t],!0])},e}(p.BaseItem);e.PrimeItem=H;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return p.BaseItem.success;var Q=this.First,r=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==r)u.default.setChild(Q,2,this.getProperty(\"primes\"));else{u.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var T=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=T}return u.default.setChild(Q,r,e.First),null!=this.getProperty(\"movesupsub\")&&u.default.setProperty(Q,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",Q)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var n=this.getErrors([\"\",\"sub\",\"sup\"][r]);throw new(l.default.bind.apply(l.default,o([void 0,n[0],n[1]],n.splice(2))))}return null},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(p.BaseItem);e.SubsupItem=m;var y=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"name\",\"\\\\over\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new l.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var Q=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&u.default.setAttribute(Q,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(u.default.setProperty(Q,\"withDelims\",!0),Q=c.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),Q,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",Q),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(p.BaseItem);e.OverItem=y;var v=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"delim\",\"(\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",c.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(p.BaseItem);e.LeftItem=v;var g=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"delim\",\")\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.RightItem=g;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new l.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?p.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new l.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.BeginItem=b;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.EndItem=M;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var Q=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",Q),e],!0]},e}(p.BaseItem);e.StyleItem=V;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new l.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var Q=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return Q=this.create(\"node\",\"mpadded\",[Q],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",Q)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.PositionItem=x;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.CellItem=O;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.MmlItem=_;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var Q=this.First;if(Q){if(e.isOpen)return p.BaseItem.success;if(!e.isKind(\"fn\")){var r=e.First;if(!e.isKind(\"mml\")||!r)return[[Q,e],!0];if(u.default.isType(r,\"mstyle\")&&r.childNodes.length&&u.default.isType(r.childNodes[0].childNodes[0],\"mspace\")||u.default.isType(r,\"mspace\"))return[[Q,e],!0];u.default.isEmbellished(r)&&(r=u.default.getCoreMO(r));var T=u.default.getForm(r);if(null!=T&&[0,0,1,1,0,1,1,0,0,0][T[2]])return[[Q,e],!0]}var n=this.create(\"token\",\"mo\",{texClass:s.TEXCLASS.NONE},a.entities.ApplyFunction);return[[Q,n,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(p.BaseItem);e.FnItem=S;var E=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=i.MapHandler.getMap(\"not_remap\"),e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,Q,r;if(t.isKind(\"open\")||t.isKind(\"left\"))return p.BaseItem.success;if(t.isKind(\"mml\")&&(u.default.isType(t.First,\"mo\")||u.default.isType(t.First,\"mi\")||u.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(Q=u.default.getText(e)).length&&!u.default.getProperty(e,\"movesupsub\")&&1===u.default.getChildren(e).length))return this.remap.contains(Q)?(r=this.create(\"text\",this.remap.lookup(Q).char),u.default.setChild(e,0,r)):(r=this.create(\"text\",\"\\u0338\"),u.default.appendChildren(e,[r])),[[t],!0];r=this.create(\"text\",\"\\u29f8\");var T=this.create(\"node\",\"mtext\",[],{},r),n=this.create(\"node\",\"mpadded\",[T],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[n],{texClass:s.TEXCLASS.REL}),t],!0]},e}(p.BaseItem);e.NotItem=E;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return p.BaseItem.success;var e=this.getProperty(\"ldots\"),Q=t.First;if(t.isKind(\"mml\")&&u.default.isEmbellished(Q)){var r=u.default.getTexClass(u.default.getCoreMO(Q));r!==s.TEXCLASS.BIN&&r!==s.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(p.BaseItem);e.DotsItem=C;var w=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),p.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),p.BaseItem.fail;this.EndTable(),this.clearEnv();var Q=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var r=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?u.default.setAttribute(r,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),r=this.create(\"node\",\"menclose\",[r],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||u.default.setAttribute(r,\"padding\",0)),Q&&(r=this.create(\"node\",\"mstyle\",[r],{scriptlevel:Q})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(r=c.default.fenced(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\")));var T=this.factory.create(\"mml\",r);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[T],!0];throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[T,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&u.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&u.default.setAttribute(t,\"columnalign\",u.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(p.BaseItem);e.ArrayItem=w;var A=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(Q[0],Q[2],Q[1]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&c.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var Q=this.create(\"node\",t,this.row);this.table.push(Q),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(w);e.EqnArrayItem=A;var P=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(\"equation\",!0,Q[0]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var Q=this.toMml(),r=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[r?this.factory.configuration.tags.enTag(Q,r):Q,e],!0]}if(e.isKind(\"stop\"))throw new l.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.EquationItem=P},function(t,e,Q){\"use strict\";var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontData=e.NOSTRETCH=e.H=e.V=void 0,e.V=1,e.H=2,e.NOSTRETCH={dir:0};var i=function(){function t(){var t,e;this.variant={},this.delimiters={},this.cssFontMap={},this.remapChars={};var Q=this.constructor;this.params=r({},Q.defaultParams),this.sizeVariants=n(Q.defaultSizeVariants),this.cssFontMap=r({},Q.defaultCssFonts),this.cssFamilyPrefix=Q.defaultCssFamilyPrefix,this.createVariants(Q.defaultVariants),this.defineDelimiters(Q.defaultDelimiters);try{for(var T=o(Object.keys(Q.defaultChars)),i=T.next();!i.done;i=T.next()){var a=i.value;this.defineChars(a,Q.defaultChars[a])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}this.defineRemap(\"accent\",Q.defaultAccentMap),this.defineRemap(\"mo\",Q.defaultMoMap),this.defineRemap(\"mn\",Q.defaultMnMap)}return t.charOptions=function(t,e){var Q=t[e];return 3===Q.length&&(Q[3]={}),Q[3]},t.prototype.createVariant=function(t,e,Q){void 0===e&&(e=null),void 0===Q&&(Q=null);var r={linked:[],chars:e?Object.create(this.variant[e].chars):{}};Q&&this.variant[Q]&&(Object.assign(r.chars,this.variant[Q].chars),this.variant[Q].linked.push(r.chars),r.chars=Object.create(r.chars)),this.remapSmpChars(r.chars,t),this.variant[t]=r},t.prototype.remapSmpChars=function(t,e){var Q,r,n,i,a=this.constructor;if(a.VariantSmp[e]){var s=a.SmpRemap,l=[null,null,a.SmpRemapGreekU,a.SmpRemapGreekL];try{for(var c=o(a.SmpRanges),u=c.next();!u.done;u=c.next()){var p=T(u.value,3),h=p[0],f=p[1],d=p[2],L=a.VariantSmp[e][h];if(L){for(var H=f;H<=d;H++)if(930!==H){var m=L+H-f;t[H]=this.smpChar(s[m]||m)}if(l[h])try{for(var y=(n=void 0,o(Object.keys(l[h]).map((function(t){return parseInt(t)})))),v=y.next();!v.done;v=y.next()){t[H=v.value]=this.smpChar(L+l[h][H])}}catch(t){n={error:t}}finally{try{v&&!v.done&&(i=y.return)&&i.call(y)}finally{if(n)throw n.error}}}}}catch(t){Q={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(Q)throw Q.error}}}\"bold\"===e&&(t[988]=this.smpChar(120778),t[989]=this.smpChar(120779))},t.prototype.smpChar=function(t){return[,,,{smp:t}]},t.prototype.createVariants=function(t){var e,Q;try{for(var r=o(t),T=r.next();!T.done;T=r.next()){var n=T.value;this.createVariant(n[0],n[1],n[2])}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},t.prototype.defineChars=function(t,e){var Q,r,T=this.variant[t];Object.assign(T.chars,e);try{for(var n=o(T.linked),i=n.next();!i.done;i=n.next()){var a=i.value;Object.assign(a,e)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(Q)throw Q.error}}},t.prototype.defineDelimiters=function(t){Object.assign(this.delimiters,t)},t.prototype.defineRemap=function(t,e){this.remapChars.hasOwnProperty(t)||(this.remapChars[t]={}),Object.assign(this.remapChars[t],e)},t.prototype.getDelimiter=function(t){return this.delimiters[t]},t.prototype.getSizeVariant=function(t,e){return this.delimiters[t].variants&&(e=this.delimiters[t].variants[e]),this.sizeVariants[e]},t.prototype.getChar=function(t,e){return this.variant[t].chars[e]},t.prototype.getVariant=function(t){return this.variant[t]},t.prototype.getCssFont=function(t){return this.cssFontMap[t]||[\"serif\",!1,!1]},t.prototype.getFamily=function(t){return this.cssFamilyPrefix?this.cssFamilyPrefix+\", \"+t:t},t.prototype.getRemappedChar=function(t,e){return(this.remapChars[t]||{})[e]},t.OPTIONS={},t.defaultVariants=[[\"normal\"],[\"bold\",\"normal\"],[\"italic\",\"normal\"],[\"bold-italic\",\"italic\",\"bold\"],[\"double-struck\",\"bold\"],[\"fraktur\",\"normal\"],[\"bold-fraktur\",\"bold\",\"fraktur\"],[\"script\",\"italic\"],[\"bold-script\",\"bold-italic\",\"script\"],[\"sans-serif\",\"normal\"],[\"bold-sans-serif\",\"bold\",\"sans-serif\"],[\"sans-serif-italic\",\"italic\",\"sans-serif\"],[\"sans-serif-bold-italic\",\"bold-italic\",\"bold-sans-serif\"],[\"monospace\",\"normal\"]],t.defaultCssFonts={normal:[\"serif\",!1,!1],bold:[\"serif\",!1,!0],italic:[\"serif\",!0,!1],\"bold-italic\":[\"serif\",!0,!0],\"double-struck\":[\"serif\",!1,!0],fraktur:[\"serif\",!1,!1],\"bold-fraktur\":[\"serif\",!1,!0],script:[\"cursive\",!1,!1],\"bold-script\":[\"cursive\",!1,!0],\"sans-serif\":[\"sans-serif\",!1,!1],\"bold-sans-serif\":[\"sans-serif\",!1,!0],\"sans-serif-italic\":[\"sans-serif\",!0,!1],\"sans-serif-bold-italic\":[\"sans-serif\",!0,!0],monospace:[\"monospace\",!1,!1]},t.defaultCssFamilyPrefix=\"\",t.VariantSmp={bold:[119808,119834,120488,120514,120782],italic:[119860,119886,120546,120572],\"bold-italic\":[119912,119938,120604,120630],script:[119964,119990],\"bold-script\":[120016,120042],fraktur:[120068,120094],\"double-struck\":[120120,120146,,,120792],\"bold-fraktur\":[120172,120198],\"sans-serif\":[120224,120250,,,120802],\"bold-sans-serif\":[120276,120302,120662,120688,120812],\"sans-serif-italic\":[120328,120354],\"sans-serif-bold-italic\":[120380,120406,120720,120746],monospace:[120432,120458,,,120822]},t.SmpRanges=[[0,65,90],[1,97,122],[2,913,937],[3,945,969],[4,48,57]],t.SmpRemap={119893:8462,119965:8492,119968:8496,119969:8497,119971:8459,119972:8464,119975:8466,119976:8499,119981:8475,119994:8495,119996:8458,120004:8500,120070:8493,120075:8460,120076:8465,120085:8476,120093:8488,120122:8450,120127:8461,120133:8469,120135:8473,120136:8474,120137:8477,120145:8484},t.SmpRemapGreekU={8711:25,1012:17},t.SmpRemapGreekL={977:27,981:29,982:31,1008:28,1009:30,1013:26,8706:25},t.defaultAccentMap={768:\"\\u02cb\",769:\"\\u02ca\",770:\"\\u02c6\",771:\"\\u02dc\",772:\"\\u02c9\",774:\"\\u02d8\",775:\"\\u02d9\",776:\"\\xa8\",778:\"\\u02da\",780:\"\\u02c7\",8594:\"\\u20d7\",8242:\"'\",8243:\"''\",8244:\"'''\",8245:\"`\",8246:\"``\",8247:\"```\",8279:\"''''\",8400:\"\\u21bc\",8401:\"\\u21c0\",8406:\"\\u2190\",8417:\"\\u2194\",8432:\"*\",8411:\"...\",8412:\"....\",8428:\"\\u21c1\",8429:\"\\u21bd\",8430:\"\\u2190\",8431:\"\\u2192\"},t.defaultMoMap={45:\"\\u2212\"},t.defaultMnMap={45:\"\\u2212\"},t.defaultParams={x_height:.442,quad:1,num1:.676,num2:.394,num3:.444,denom1:.686,denom2:.345,sup1:.413,sup2:.363,sup3:.289,sub1:.15,sub2:.247,sup_drop:.386,sub_drop:.05,delim1:2.39,delim2:1,axis_height:.25,rule_thickness:.06,big_op_spacing1:.111,big_op_spacing2:.167,big_op_spacing3:.2,big_op_spacing4:.6,big_op_spacing5:.1,surd_height:.075,scriptspace:.05,nulldelimiterspace:.12,delimiterfactor:901,delimitershortfall:.3,min_rule_thickness:1.25},t.defaultDelimiters={},t.defaultChars={},t.defaultSizeVariants=[],t}();e.FontData=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Package=e.PackageError=void 0;var a=Q(11),s=function(t){function e(e,Q){var r=t.call(this,e)||this;return r.package=Q,r}return T(e,t),e}(Error);e.PackageError=s;var l=function(){function t(e,Q){void 0===Q&&(Q=!1),this.isLoaded=!1,this.isLoading=!1,this.hasFailed=!1,this.dependents=[],this.dependencies=[],this.dependencyCount=0,this.provided=[],this.name=e,this.noLoad=Q,t.packages.set(e,this),this.promise=this.makePromise(this.makeDependencies())}return Object.defineProperty(t.prototype,\"canLoad\",{get:function(){return 0===this.dependencyCount&&!this.noLoad&&!this.isLoading&&!this.hasFailed},enumerable:!1,configurable:!0}),t.resolvePath=function(t,e){void 0===e&&(e=!0);var Q,r=a.CONFIG.source[t]||t;for(r.match(/^(?:[a-z]+:\\/)?\\/|[a-z]:\\\\|\\[/i)||(r=\"[mathjax]/\"+r.replace(/^\\.\\//,\"\")),e&&!r.match(/\\.[^\\/]+$/)&&(r+=\".js\");(Q=r.match(/^\\[([^\\]]*)\\]/))&&a.CONFIG.paths.hasOwnProperty(Q[1]);)r=a.CONFIG.paths[Q[1]]+r.substr(Q[0].length);return r},t.loadAll=function(){var t,e;try{for(var Q=n(this.packages.values()),r=Q.next();!r.done;r=Q.next()){var T=r.value;T.canLoad&&T.load()}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},t.prototype.makeDependencies=function(){var e,Q,r=[],T=t.packages,o=this.noLoad,s=this.name,l=[];a.CONFIG.dependencies.hasOwnProperty(s)?l.push.apply(l,i(a.CONFIG.dependencies[s])):\"core\"!==s&&l.push(\"core\");try{for(var c=n(l),u=c.next();!u.done;u=c.next()){var p=u.value,h=T.get(p)||new t(p,o);this.dependencies.indexOf(h)<0&&(h.addDependent(this,o),this.dependencies.push(h),h.isLoaded||(this.dependencyCount++,r.push(h.promise)))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(Q=c.return)&&Q.call(c)}finally{if(e)throw e.error}}return r},t.prototype.makePromise=function(t){var e=this,Q=new Promise((function(t,Q){e.resolve=t,e.reject=Q})),r=a.CONFIG[this.name]||{};return r.ready&&(Q=Q.then((function(t){return r.ready(e.name)}))),t.length&&(t.push(Q),Q=Promise.all(t).then((function(t){return t.join(\", \")}))),r.failed&&Q.catch((function(t){return r.failed(new s(t,e.name))})),Q},t.prototype.load=function(){if(!this.isLoaded&&!this.isLoading&&!this.noLoad){this.isLoading=!0;var e=t.resolvePath(this.name);a.CONFIG.require?this.loadCustom(e):this.loadScript(e)}},t.prototype.loadCustom=function(t){var e=this;try{var Q=a.CONFIG.require(t);Q instanceof Promise?Q.then((function(){return e.checkLoad()})).catch((function(Q){return e.failed(\"Can't load \\\"\"+t+'\"\\n'+Q.message.trim())})):this.checkLoad()}catch(t){this.failed(t.message)}},t.prototype.loadScript=function(t){var e=this,Q=document.createElement(\"script\");Q.src=t,Q.charset=\"UTF-8\",Q.onload=function(t){return e.checkLoad()},Q.onerror=function(Q){return e.failed(\"Can't load \\\"\"+t+'\"')},document.head.appendChild(Q)},t.prototype.loaded=function(){var t,e,Q,r;this.isLoaded=!0,this.isLoading=!1;try{for(var T=n(this.dependents),o=T.next();!o.done;o=T.next()){o.value.requirementSatisfied()}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}try{for(var i=n(this.provided),a=i.next();!a.done;a=i.next()){a.value.loaded()}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}this.resolve(this.name)},t.prototype.failed=function(t){this.hasFailed=!0,this.isLoading=!1,this.reject(new s(t,this.name))},t.prototype.checkLoad=function(){var t=this;((a.CONFIG[this.name]||{}).checkReady||function(){return Promise.resolve()})().then((function(){return t.loaded()})).catch((function(e){return t.failed(e)}))},t.prototype.requirementSatisfied=function(){this.dependencyCount&&(this.dependencyCount--,this.canLoad&&this.load())},t.prototype.provides=function(e){var Q,r;void 0===e&&(e=[]);try{for(var T=n(e),o=T.next();!o.done;o=T.next()){var i=o.value,s=t.packages.get(i);s||(a.CONFIG.dependencies[i]||(a.CONFIG.dependencies[i]=[]),a.CONFIG.dependencies[i].push(i),(s=new t(i,!0)).isLoading=!0),this.provided.push(s)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},t.prototype.addDependent=function(t,e){this.dependents.push(t),e||this.checkNoLoad()},t.prototype.checkNoLoad=function(){var t,e;if(this.noLoad){this.noLoad=!1;try{for(var Q=n(this.dependencies),r=Q.next();!r.done;r=Q.next()){r.value.checkNoLoad()}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}}},t.packages=new Map,t}();e.Package=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=void 0;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.execute=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(this),o=T.next();!o.done;o=T.next()){var a=o.value,s=a.item.apply(a,i(Q));if(!1===s)return!1}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return!0},e.prototype.asyncExecute=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var Q=-1,r=this.items;return new Promise((function(e,T){!function n(){for(var o;++Q<r.length;){var a=(o=r[Q]).item.apply(o,i(t));if(a instanceof Promise)return void a.then(n).catch((function(t){return T(t)}));if(!1===a)return void e(!1)}e(!0)}()}))},e}(Q(21).PrioritizedList);e.FunctionList=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=void 0;var a=Q(0),s=Q(112),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._texClass=null,e.lspace=5/18,e.rspace=5/18,e}return T(e,t),Object.defineProperty(e.prototype,\"texClass\",{get:function(){if(null===this._texClass){var t=this.getText(),e=o(this.handleExplicitForm(this.getForms()),3),Q=e[0],r=e[1],T=e[2],n=this.constructor.OPTABLE,i=n[Q][t]||n[r][t]||n[T][t];return i?i[2]:a.TEXCLASS.REL}return this._texClass},set:function(t){this._texClass=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mo\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"hasNewLine\",{get:function(){return\"newline\"===this.attributes.get(\"linebreak\")},enumerable:!1,configurable:!0}),e.prototype.coreParent=function(){for(var t=this,e=this,Q=this.factory.getNodeClass(\"math\");e&&e.isEmbellished&&e.coreMO()===this&&!(e instanceof Q);)t=e,e=e.Parent;return t},e.prototype.coreText=function(t){if(!t)return\"\";if(t.isEmbellished)return t.coreMO().getText();for(;((t.isKind(\"mrow\")||t.isKind(\"TeXAtom\")||t.isKind(\"mstyle\")||t.isKind(\"mphantom\"))&&1===t.childNodes.length||t.isKind(\"munderover\"))&&t.childNodes[0];)t=t.childNodes[0];return t.isToken?t.getText():\"\"},e.prototype.hasSpacingAttributes=function(){return this.attributes.isSet(\"lspace\")||this.attributes.isSet(\"rspace\")},Object.defineProperty(e.prototype,\"isAccent\",{get:function(){var t=!1,e=this.coreParent().parent;if(e){var Q=e.isKind(\"mover\")?e.childNodes[e.over].coreMO()?\"accent\":\"\":e.isKind(\"munder\")?e.childNodes[e.under].coreMO()?\"accentunder\":\"\":e.isKind(\"munderover\")?this===e.childNodes[e.over].coreMO()?\"accent\":this===e.childNodes[e.under].coreMO()?\"accentunder\":\"\":\"\";if(Q)t=void 0!==e.attributes.getExplicit(Q)?t:this.attributes.get(\"accent\")}return t},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){var e=this.attributes.getList(\"form\",\"fence\"),Q=e.form,r=e.fence;return void 0===this.getProperty(\"texClass\")&&(this.attributes.isSet(\"lspace\")||this.attributes.isSet(\"rspace\"))?null:(r&&this.texClass===a.TEXCLASS.REL&&(\"prefix\"===Q&&(this.texClass=a.TEXCLASS.OPEN),\"postfix\"===Q&&(this.texClass=a.TEXCLASS.CLOSE)),\"\\u2061\"===this.getText()?(t&&(t.texClass=a.TEXCLASS.OP,t.setProperty(\"fnOP\",!0)),this.texClass=this.prevClass=a.TEXCLASS.NONE,t):this.adjustTeXclass(t))},e.prototype.adjustTeXclass=function(t){var e=this.texClass,Q=this.prevClass;if(e===a.TEXCLASS.NONE)return t;if(t?(!t.getProperty(\"autoOP\")||e!==a.TEXCLASS.BIN&&e!==a.TEXCLASS.REL||(Q=t.texClass=a.TEXCLASS.ORD),Q=this.prevClass=t.texClass||a.TEXCLASS.ORD,this.prevLevel=this.attributes.getInherited(\"scriptlevel\")):Q=this.prevClass=a.TEXCLASS.NONE,e!==a.TEXCLASS.BIN||Q!==a.TEXCLASS.NONE&&Q!==a.TEXCLASS.BIN&&Q!==a.TEXCLASS.OP&&Q!==a.TEXCLASS.REL&&Q!==a.TEXCLASS.OPEN&&Q!==a.TEXCLASS.PUNCT)if(Q!==a.TEXCLASS.BIN||e!==a.TEXCLASS.REL&&e!==a.TEXCLASS.CLOSE&&e!==a.TEXCLASS.PUNCT){if(e===a.TEXCLASS.BIN){for(var r=this,T=this.parent;T&&T.parent&&T.isEmbellished&&(1===T.childNodes.length||!T.isKind(\"mrow\")&&T.core()===r);)r=T,T=T.parent;T.childNodes[T.childNodes.length-1]===r&&(this.texClass=a.TEXCLASS.ORD)}}else t.texClass=this.prevClass=a.TEXCLASS.ORD;else this.texClass=a.TEXCLASS.ORD;return this},e.prototype.setInheritedAttributes=function(e,Q,r,T){var n,a;void 0===e&&(e={}),void 0===Q&&(Q=!1),void 0===r&&(r=0),void 0===T&&(T=!1),t.prototype.setInheritedAttributes.call(this,e,Q,r,T);var s=this.getText(),l=o(this.handleExplicitForm(this.getForms()),3),c=l[0],u=l[1],p=l[2];this.attributes.setInherited(\"form\",c);var h=this.constructor.OPTABLE,f=h[c][s]||h[u][s]||h[p][s];if(f){void 0===this.getProperty(\"texClass\")&&(this.texClass=f[2]);try{for(var d=i(Object.keys(f[3]||{})),L=d.next();!L.done;L=d.next()){var H=L.value;this.attributes.setInherited(H,f[3][H])}}catch(t){n={error:t}}finally{try{L&&!L.done&&(a=d.return)&&a.call(d)}finally{if(n)throw n.error}}this.lspace=(f[0]+1)/18,this.rspace=(f[1]+1)/18}else{var m=this.getRange(s);if(m){void 0===this.getProperty(\"texClass\")&&(this.texClass=m[2]);var y=this.constructor.MMLSPACING[m[2]];this.lspace=(y[0]+1)/18,this.rspace=(y[1]+1)/18}}},e.prototype.getForms=function(){for(var t=this,e=this.parent,Q=this.Parent;Q&&Q.isEmbellished;)t=e,e=Q.parent,Q=Q.Parent;if(e&&e.isKind(\"mrow\")&&1!==e.nonSpaceLength()){if(e.firstNonSpace()===t)return[\"prefix\",\"infix\",\"postfix\"];if(e.lastNonSpace()===t)return[\"postfix\",\"infix\",\"prefix\"]}return[\"infix\",\"prefix\",\"postfix\"]},e.prototype.handleExplicitForm=function(t){if(this.attributes.isSet(\"form\")){var e=this.attributes.get(\"form\");t=[e].concat(t.filter((function(t){return t!==e})))}return t},e.prototype.getRange=function(t){var e,Q;if(!t.match(/^[\\uD800-\\uDBFF]?.$/))return null;var r=t.codePointAt(0),T=this.constructor.RANGES;try{for(var n=i(T),o=n.next();!o.done;o=n.next()){var a=o.value;if(a[0]<=r&&r<=a[1])return a;if(r<a[0])return null}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}return null},e.defaults=n(n({},a.AbstractMmlTokenNode.defaults),{form:\"infix\",fence:!1,separator:!1,lspace:\"thickmathspace\",rspace:\"thickmathspace\",stretchy:!1,symmetric:!1,maxsize:\"infinity\",minsize:\"0em\",largeop:!1,movablelimits:!1,accent:!1,linebreak:\"auto\",lineleading:\"1ex\",linebreakstyle:\"before\",indentalign:\"auto\",indentshift:\"0\",indenttarget:\"\",indentalignfirst:\"indentalign\",indentshiftfirst:\"indentshift\",indentalignlast:\"indentalign\",indentshiftlast:\"indentshift\"}),e.RANGES=s.RANGES,e.MMLSPACING=s.MMLSPACING,e.OPTABLE=s.OPTABLE,e}(a.AbstractMmlTokenNode);e.MmlMo=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.px=e.emRounded=e.em=e.percent=e.length2em=e.MATHSPACE=e.RELUNITS=e.UNITS=e.BIGDIMEN=void 0,e.BIGDIMEN=1e6,e.UNITS={px:1,in:96,cm:96/2.54,mm:96/25.4},e.RELUNITS={em:1,ex:.431,pt:.1,pc:1.2,mu:1/18},e.MATHSPACE={veryverythinmathspace:1/18,verythinmathspace:2/18,thinmathspace:3/18,mediummathspace:4/18,thickmathspace:5/18,verythickmathspace:6/18,veryverythickmathspace:7/18,negativeveryverythinmathspace:-1/18,negativeverythinmathspace:-2/18,negativethinmathspace:-3/18,negativemediummathspace:-4/18,negativethickmathspace:-5/18,negativeverythickmathspace:-6/18,negativeveryverythickmathspace:-7/18,thin:.04,medium:.06,thick:.1,normal:1,big:2,small:1/Math.sqrt(2),infinity:e.BIGDIMEN},e.length2em=function(t,Q,r,T){if(void 0===Q&&(Q=0),void 0===r&&(r=1),void 0===T&&(T=16),\"string\"!=typeof t&&(t=String(t)),\"\"===t||null==t)return Q;if(e.MATHSPACE[t])return e.MATHSPACE[t];var n=t.match(/^\\s*([-+]?(?:\\.\\d+|\\d+(?:\\.\\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/);if(!n)return Q;var o=parseFloat(n[1]||\"1\"),i=n[2];return e.UNITS.hasOwnProperty(i)?o*e.UNITS[i]/T/r:e.RELUNITS.hasOwnProperty(i)?o*e.RELUNITS[i]:\"%\"===i?o/100*Q:o*Q},e.percent=function(t){return(100*t).toFixed(1).replace(/\\.?0+$/,\"\")+\"%\"},e.em=function(t){return Math.abs(t)<.001?\"0\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"},e.emRounded=function(t,e){return void 0===e&&(e=16),t=(Math.round(t*e)+.05)/e,Math.abs(t)<.001?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"},e.px=function(t,Q,r){return void 0===Q&&(Q=-e.BIGDIMEN),void 0===r&&(r=16),t*=r,Q&&t<Q&&(t=Q),Math.abs(t)<.1?\"0\":t.toFixed(1).replace(/\\.0$/,\"\")+\"px\"}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var n,o=Q(21),i=Q(30);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(n=e.MapHandler||(e.MapHandler={}));var a=function(){function t(){this._configuration=new o.PrioritizedList,this._fallback=new i.FunctionList}return t.prototype.add=function(t,e,Q){var T,i;void 0===Q&&(Q=o.PrioritizedList.DEFAULTPRIORITY);try{for(var a=r(t.slice().reverse()),s=a.next();!s.done;s=a.next()){var l=s.value,c=n.getMap(l);if(!c)return void this.warn(\"Configuration \"+l+\" not found! Omitted.\");this._configuration.add(c,Q)}}catch(t){T={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(T)throw T.error}}e&&this._fallback.add(e,Q)},t.prototype.parse=function(t){var e,Q;try{for(var n=r(this._configuration),o=n.next();!o.done;o=n.next()){var i=o.value.item.parse(t);if(i)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}var a=T(t,2),s=a[0],l=a[1];this._fallback.toArray()[0].item(s,l)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,Q=[];try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;Q.push(o.name)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q.join(\", \")},t.prototype.applicable=function(t){var e,Q;try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;if(o.contains(t))return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,Q;try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;if(o.name===t)return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=a;var s=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,Q){var T,n;void 0===Q&&(Q=o.PrioritizedList.DEFAULTPRIORITY);try{for(var i=r(Object.keys(t)),s=i.next();!s.done;s=i.next()){var l=s.value,c=this.get(l);c||(c=new a,this.set(l,c)),c.add(t[l],e[l],Q)}}catch(t){T={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,Q;try{for(var T=r(this.map.values()),n=T.next();!n.done;n=T.next()){var o=n.value.retrieve(t);if(o)return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var r=Q(9),T=Q(8),n=Q(13),o=Q(12),i=Q(5),a=Q(26),s=Q(16),l=Q(0);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,Q,T,n,o,i){var a=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),l=s.default.EqnArray(t,e,Q,T,n,o,i);return r.default.setArrayAlign(l,a)},e.AmsMethods.AlignAt=function(t,Q,T,n){var o,a,s=Q.getName(),l=\"\",c=[];if(n||(a=t.GetBrackets(\"\\\\begin{\"+s+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+s+\"}\")).match(/[^0-9]/))throw new i.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+s+\"}\");for(var u=parseInt(o,10);u>0;)l+=\"rl\",c.push(\"0em 0em\"),u--;var p=c.join(\" \");if(n)return e.AmsMethods.EqnArray(t,Q,T,n,l,p);var h=e.AmsMethods.EqnArray(t,Q,T,n,l,p);return r.default.setArrayAlign(h,a)},e.AmsMethods.Multline=function(t,e,Q){t.Push(e),r.default.checkEqnEnv(t);var T=t.itemFactory.create(\"multline\",Q,t.stack);return T.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},T},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,Q){var T=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=r.default.trimSpaces(t.GetArgument(Q));\"\\\\\"===n.charAt(0)&&(n=n.substr(1));var o=t.GetArgument(Q);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(n,new a.Macro(n,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+T]))},e.AmsMethods.HandleOperatorName=function(t,e){var Q=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",T=r.default.trimSpaces(t.GetArgument(e));T.match(/\\\\text/)||(T=T.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+T+\"}\"+Q+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var Q=t.GetNext(),r=t.i;\"\\\\\"===Q&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=r)},e.AmsMethods.MultiIntegral=function(t,e,Q){var r=t.GetNext();if(\"\\\\\"===r){var T=t.i;r=t.GetArgument(e),t.i=T,\"\\\\limits\"===r&&(Q=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+Q+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+Q+\"}\")}t.string=Q+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,Q,n,i){var a={width:\"+\"+r.default.Em((n+i)/18),lspace:r.default.Em(n/18)},s=t.GetBrackets(e),c=t.ParseArg(e),u=t.create(\"token\",\"mo\",{stretchy:!0,texClass:l.TEXCLASS.REL},String.fromCodePoint(Q)),p=t.create(\"node\",\"munderover\",[u]),h=t.create(\"node\",\"mpadded\",[c],a);if(T.default.setAttribute(h,\"voffset\",\".15em\"),T.default.setChild(p,p.over,h),s){var f=new o.default(s,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[f],a),T.default.setAttribute(h,\"voffset\",\"-.24em\"),T.default.setChild(p,p.under,h)}T.default.setProperty(p,\"subsupOK\",!0),t.Push(p)},e.AmsMethods.HandleShove=function(t,e,Q){var r=t.stack.Top();if(\"multline\"!==r.kind)throw new i.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(r.Size())throw new i.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);r.setProperty(\"shove\",Q)},e.AmsMethods.CFrac=function(t,e){var Q=r.default.trimSpaces(t.GetBrackets(e,\"\")),a=t.GetArgument(e),s=t.GetArgument(e),l={l:n.TexConstant.Align.LEFT,r:n.TexConstant.Align.RIGHT,\"\":\"\"},c=new o.default(\"\\\\strut\\\\textstyle{\"+a+\"}\",t.stack.env,t.configuration).mml(),u=new o.default(\"\\\\strut\\\\textstyle{\"+s+\"}\",t.stack.env,t.configuration).mml(),p=t.create(\"node\",\"mfrac\",[c,u]);if(null==(Q=l[Q]))throw new i.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);Q&&T.default.setProperties(p,{numalign:Q,denomalign:Q}),t.Push(p)},e.AmsMethods.Genfrac=function(t,e,Q,n,o,a){null==Q&&(Q=t.GetDelimiterArg(e)),null==n&&(n=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==a&&(a=r.default.trimSpaces(t.GetArgument(e)));var s=t.ParseArg(e),l=t.ParseArg(e),c=t.create(\"node\",\"mfrac\",[s,l]);if(\"\"!==o&&T.default.setAttribute(c,\"linethickness\",o),(Q||n)&&(T.default.setProperty(c,\"withDelims\",!0),c=r.default.fixedFence(t.configuration,Q,c,n)),\"\"!==a){var u=parseInt(a,10),p=[\"D\",\"T\",\"S\",\"SS\"][u];if(null==p)throw new i.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);c=t.create(\"node\",\"mstyle\",[c]),\"D\"===p?T.default.setProperties(c,{displaystyle:!0,scriptlevel:0}):T.default.setProperties(c,{displaystyle:!1,scriptlevel:u-1})}t.Push(c)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new i.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new i.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var Q=t.GetStar(),T=r.default.trimSpaces(t.GetArgument(e));t.tags.tag(T,Q)},e.AmsMethods.HandleNoTag=s.default.HandleNoTag,e.AmsMethods.HandleRef=s.default.HandleRef,e.AmsMethods.Macro=s.default.Macro,e.AmsMethods.Accent=s.default.Accent,e.AmsMethods.Tilde=s.default.Tilde,e.AmsMethods.Array=s.default.Array,e.AmsMethods.Spacer=s.default.Spacer,e.AmsMethods.NamedOp=s.default.NamedOp,e.AmsMethods.EqnArray=s.default.EqnArray},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeXFont=void 0;var o=Q(6),i=Q(292),a=Q(220),s=Q(222),l=Q(293),c=Q(225),u=Q(227),p=Q(229),h=Q(231),f=Q(233),d=Q(235),L=Q(237),H=Q(239),m=Q(241),y=Q(243),v=Q(294),g=Q(295),b=Q(247),M=Q(249),V=Q(251),x=Q(253),O=Q(255),_=Q(257),S=Q(259),E=Q(261),C=Q(263),w=Q(265),A=function(t){function e(){var e,Q,r=t.call(this)||this,T=r.constructor;try{for(var o=n(Object.keys(T.variantCacheIds)),i=o.next();!i.done;i=o.next()){var a=i.value;r.variant[a].cacheID=\"TEX-\"+T.variantCacheIds[a]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}return r}return T(e,t),e.defaultDelimiters=w.delimiters,e.defaultChars={normal:d.normal,bold:s.bold,italic:p.italic,\"bold-italic\":a.boldItalic,\"double-struck\":l.doubleStruck,fraktur:u.fraktur,\"bold-fraktur\":c.frakturBold,script:g.script,\"bold-script\":v.scriptBold,\"sans-serif\":y.sansSerif,\"bold-sans-serif\":H.sansSerifBold,\"sans-serif-italic\":m.sansSerifItalic,\"sans-serif-bold-italic\":L.sansSerifBoldItalic,monospace:f.monospace,\"-smallop\":b.smallop,\"-largeop\":h.largeop,\"-size3\":S.texSize3,\"-size4\":E.texSize4,\"-tex-calligraphic\":V.texCalligraphic,\"-tex-bold-calligraphic\":M.texCalligraphicBold,\"-tex-mathit\":x.texMathit,\"-tex-oldstyle\":_.texOldstyle,\"-tex-bold-oldstyle\":O.texOldstyleBold,\"-tex-variant\":C.texVariant},e.variantCacheIds={normal:\"N\",bold:\"B\",italic:\"I\",\"bold-italic\":\"BI\",\"double-struck\":\"D\",fraktur:\"F\",\"bold-fraktur\":\"BF\",script:\"S\",\"bold-script\":\"BS\",\"sans-serif\":\"SS\",\"bold-sans-serif\":\"BSS\",\"sans-serif-italic\":\"SSI\",\"sans-serif-bold-italic\":\"SSBI\",monospace:\"M\",\"-smallop\":\"SO\",\"-largeop\":\"LO\",\"-size3\":\"S3\",\"-size4\":\"S4\",\"-tex-calligraphic\":\"C\",\"-tex-bold-calligraphic\":\"BC\",\"-tex-mathit\":\"MI\",\"-tex-oldstyle\":\"OS\",\"-tex-bold-oldstyle\":\"BOS\",\"-tex-variant\":\"V\"},e}(i.CommonTeXFontMixin(o.SVGFontData));e.TeXFont=A},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractItem=void 0;var o=Q(275),i=Q(17),a=Q(10),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,Q)||this;return n._content=r,n.disabled=!1,n.callbacks=[],n._id=T||r,n}return T(e,t),Object.defineProperty(e.prototype,\"content\",{get:function(){return this._content},set:function(t){this._content=t,this.generateHtml(),this.menu&&this.menu.generateHtml()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"id\",{get:function(){return this._id},enumerable:!1,configurable:!0}),e.prototype.press=function(){this.disabled||(this.executeAction(),this.executeCallbacks_())},e.prototype.executeAction=function(){},e.prototype.registerCallback=function(t){-1===this.callbacks.indexOf(t)&&this.callbacks.push(t)},e.prototype.unregisterCallback=function(t){var e=this.callbacks.indexOf(t);-1!==e&&this.callbacks.splice(e,1)},e.prototype.mousedown=function(t){this.press(),this.stop(t)},e.prototype.mouseover=function(t){this.focus(),this.stop(t)},e.prototype.mouseout=function(t){this.deactivate(),this.stop(t)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.setAttribute(\"aria-disabled\",\"false\"),e.textContent=this.content},e.prototype.activate=function(){this.disabled||this.html.classList.add(a.HtmlClasses.MENUACTIVE)},e.prototype.deactivate=function(){this.html.classList.remove(a.HtmlClasses.MENUACTIVE)},e.prototype.focus=function(){this.menu.focused=this,t.prototype.focus.call(this),this.activate()},e.prototype.unfocus=function(){this.deactivate(),t.prototype.unfocus.call(this)},e.prototype.escape=function(t){i.MenuUtil.close(this)},e.prototype.up=function(t){this.menu.up(t)},e.prototype.down=function(t){this.menu.down(t)},e.prototype.left=function(t){this.menu.left(t)},e.prototype.right=function(t){this.menu.right(t)},e.prototype.space=function(t){this.press()},e.prototype.disable=function(){this.disabled=!0;var t=this.html;t.classList.add(a.HtmlClasses.MENUDISABLED),t.setAttribute(\"aria-disabled\",\"true\")},e.prototype.enable=function(){this.disabled=!1;var t=this.html;t.classList.remove(a.HtmlClasses.MENUDISABLED),t.removeAttribute(\"aria-disabled\")},e.prototype.executeCallbacks_=function(){var t,e;try{for(var Q=n(this.callbacks),r=Q.next();!r.done;r=Q.next()){var T=r.value;try{T(this)}catch(t){i.MenuUtil.error(t,\"Callback for menu entry \"+this.id+\" failed.\")}}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e}(o.AbstractEntry);e.AbstractItem=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=void 0;var o=function(){function t(t){var e,Q;void 0===t&&(t=null),this.defaultKind=\"unknown\",this.nodeMap=new Map,this.node={},null===t&&(t=this.constructor.defaultNodes);try{for(var T=r(Object.keys(t)),n=T.next();!n.done;n=T.next()){var o=n.value;this.setNodeClass(o,t[o])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}return t.prototype.create=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return(this.node[t]||this.node[this.defaultKind]).apply(void 0,n(e))},t.prototype.setNodeClass=function(t,e){this.nodeMap.set(t,e);var Q=this,r=this.nodeMap.get(t);this.node[t]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new(r.bind.apply(r,n([void 0,Q],t)))}},t.prototype.getNodeClass=function(t){return this.nodeMap.get(t)},t.prototype.deleteNodeClass=function(t){this.nodeMap.delete(t),delete this.node[t]},t.prototype.nodeIsKind=function(t,e){return t instanceof this.getNodeClass(e)},t.prototype.getKinds=function(){return Array.from(this.nodeMap.keys())},t.defaultNodes={},t}();e.AbstractFactory=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMi=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mi\"},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(Q,r,T,n){void 0===Q&&(Q={}),void 0===r&&(r=!1),void 0===T&&(T=0),void 0===n&&(n=!1),t.prototype.setInheritedAttributes.call(this,Q,r,T,n),this.getText().match(e.singleCharacter)&&!Q.mathvariant&&this.attributes.setInherited(\"mathvariant\",\"italic\")},e.prototype.setTeXclass=function(t){this.getPrevClass(t);var Q=this.getText();return Q.length>1&&Q.match(e.operatorName)&&this.texClass===o.TEXCLASS.ORD&&(this.texClass=o.TEXCLASS.OP,this.setProperty(\"autoOP\",!0)),this},e.defaults=n({},o.AbstractMmlTokenNode.defaults),e.operatorName=/^[a-z][a-z0-9]*$/i,e.singleCharacter=/^[\\uD800-\\uDBFF]?.$/,e}(o.AbstractMmlTokenNode);e.MmlMi=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMsup=e.MmlMsub=e.MmlMsubsup=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msubsup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sub\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sup\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.childNodes;T[0].setInheritedAttributes(t,e,Q,r),T[1].setInheritedAttributes(t,!1,Q+1,r||1===this.sub),T[2]&&T[2].setInheritedAttributes(t,!1,Q+1,r||2===this.sub)},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{subscriptshift:\"\",superscriptshift:\"\"}),e}(o.AbstractMmlBaseNode);e.MmlMsubsup=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msub\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMsub=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sup\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sub\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMsup=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.retryAfter=e.handleRetriesFor=void 0,e.handleRetriesFor=function(t){return new Promise((function e(Q,r){try{Q(t())}catch(t){t.retry&&t.retry instanceof Promise?t.retry.then((function(){return e(Q,r)})).catch((function(t){return r(t)})):t.restart&&t.restart.isCallback?MathJax.Callback.After((function(){return e(Q,r)}),t.restart):r(t)}}))},e.retryAfter=function(t){var e=new Error(\"MathJax retry\");throw e.retry=t,e}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var n=Q(8),o=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,Q,r,T){void 0===Q&&(Q=[]),void 0===r&&(r={});var o=t.mmlFactory.create(e),i=o.arity;if(i===1/0||-1===i)1===Q.length&&Q[0].isInferred?o.setChildren(n.default.getChildren(Q[0])):o.setChildren(Q);else{for(var a=[],s=0,l=void 0;l=Q[s];s++)if(l.isInferred){var c=t.mmlFactory.create(\"mrow\",{},n.default.getChildren(l));n.default.copyAttributes(l,c),a.push(c)}else a.push(l);o.setChildren(a)}return T&&o.appendChild(T),n.default.setProperties(o,r),o},t.createToken=function(t,e,Q,r){void 0===Q&&(Q={}),void 0===r&&(r=\"\");var T=t.create(\"text\",r);return t.create(\"node\",e,[],Q,T)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var Q=t.create(\"text\",e),r=t.create(\"node\",\"mtext\",[],{},Q);return t.create(\"node\",\"merror\",[r],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=this.factory[t]||this.factory.node,n=r.apply(void 0,T([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],n),n},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=o},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var o=Q(2),i=Q(33),a=Q(5),s=Q(8),l=Q(3),c=Q(27),u=Q(20);function p(t,e){var Q=t.stack.env.font?{mathvariant:t.stack.env.font}:{},r=i.MapHandler.getMap(\"remap\").lookup(e),T=t.create(\"token\",\"mo\",Q,r?r.char:e);s.default.setProperty(T,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",T),t.Push(T)}Q(281),new l.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(u.AbstractTags);e.BaseTags=h,e.BaseConfiguration=o.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:p,macro:function(t,e){throw new a.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new a.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(T={},T[c.StartItem.prototype.kind]=c.StartItem,T[c.StopItem.prototype.kind]=c.StopItem,T[c.OpenItem.prototype.kind]=c.OpenItem,T[c.CloseItem.prototype.kind]=c.CloseItem,T[c.PrimeItem.prototype.kind]=c.PrimeItem,T[c.SubsupItem.prototype.kind]=c.SubsupItem,T[c.OverItem.prototype.kind]=c.OverItem,T[c.LeftItem.prototype.kind]=c.LeftItem,T[c.RightItem.prototype.kind]=c.RightItem,T[c.BeginItem.prototype.kind]=c.BeginItem,T[c.EndItem.prototype.kind]=c.EndItem,T[c.StyleItem.prototype.kind]=c.StyleItem,T[c.PositionItem.prototype.kind]=c.PositionItem,T[c.CellItem.prototype.kind]=c.CellItem,T[c.MmlItem.prototype.kind]=c.MmlItem,T[c.FnItem.prototype.kind]=c.FnItem,T[c.NotItem.prototype.kind]=c.NotItem,T[c.DotsItem.prototype.kind]=c.DotsItem,T[c.ArrayItem.prototype.kind]=c.ArrayItem,T[c.EqnArrayItem.prototype.kind]=c.EqnArrayItem,T[c.EquationItem.prototype.kind]=c.EquationItem,T),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var o=Q(8),i=Q(9),a=null,s=null,l=function(t){return s.root=t,a.outputJax.getBBox(s,a).w},c=function(t){for(var e=0;t&&!o.default.isType(t,\"mtable\");){if(o.default.isType(t,\"text\"))return null;o.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},u=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},p=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},h=function(t){return p(t,0)},f=function(t){return p(t,t.childNodes.length-1)},d=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},L=function(t){for(;t&&!o.default.isType(t,\"mtd\");)t=t.parent;return t},H=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},m=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},y=function(t,e,Q){void 0===Q&&(Q=!1);var r=0;if(t===e)return r;if(t!==e.parent){var T=t.childNodes,n=Q?T.length-1:0;o.default.isType(T[n],\"mspace\")&&(r+=l(T[n])),t=e.parent}if(t===e)return r;var i=t.childNodes,a=Q?i.length-1:0;return i[a]!==e&&(r+=l(i[a])),r},v=function(t,Q){void 0===Q&&(Q=!1);var r=c(t),T=d(r,e.getProperty(r,\"inferenceRule\"));return y(t,r,Q)+(l(r)-l(T))/2},g=function(t,Q,r,T){if(void 0===T&&(T=!1),e.getProperty(Q,\"inferenceRule\")||e.getProperty(Q,\"labelledRule\")){var n=t.nodeFactory.create(\"node\",\"mrow\");Q.parent.replaceChild(n,Q),n.setChildren([Q]),b(Q,n),Q=n}var a=T?Q.childNodes.length-1:0,s=Q.childNodes[a];o.default.isType(s,\"mspace\")?o.default.setAttribute(s,\"width\",i.default.Em(i.default.dimen2em(o.default.getAttribute(s,\"width\"))+r)):(s=t.nodeFactory.create(\"node\",\"mspace\",[],{width:i.default.Em(r)}),T?Q.appendChild(s):(s.parent=Q,Q.childNodes.unshift(s)))},b=function(t,Q){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(r){var T=e.getProperty(t,r);null!=T&&(e.setProperty(Q,r,T),e.removeProperty(t,r))}))},M=function(t,Q,r,T,n){var o=t.nodeFactory.create(\"node\",\"mspace\",[],{width:i.default.Em(n)});if(\"left\"===T){var a=Q.childNodes[r].childNodes[0];o.parent=a,a.childNodes.unshift(o)}else Q.childNodes[r].appendChild(o);e.setProperty(Q.parent,\"sequentAdjust_\"+T,n)},V=function(t,Q){for(var r=Q.pop();Q.length;){var n=Q.pop(),o=T(x(r,n),2),i=o[0],a=o[1];e.getProperty(r.parent,\"axiom\")&&(M(t,i<0?r:n,0,\"left\",Math.abs(i)),M(t,a<0?r:n,2,\"right\",Math.abs(a))),r=n}},x=function(t,e){var Q=l(t.childNodes[2]),r=l(e.childNodes[2]);return[l(t.childNodes[0])-l(e.childNodes[0]),Q-r]};e.balanceRules=function(t){var Q,r;s=new t.document.options.MathItem(\"\",null,t.math.display);var T=t.data;!function(t){var Q=t.nodeLists.sequent;if(Q)for(var r=Q.length-1,T=void 0;T=Q[r];r--)if(e.getProperty(T,\"sequentProcessed\"))e.removeProperty(T,\"sequentProcessed\");else{var n=[],o=m(T);if(1===e.getProperty(o,\"inference\")){for(n.push(T);1===e.getProperty(o,\"inference\");){o=c(o);var i=h(u(o,e.getProperty(o,\"inferenceRule\"))),a=e.getProperty(i,\"inferenceRule\")?d(i,e.getProperty(i,\"inferenceRule\")):i;e.getProperty(a,\"sequent\")&&(T=a.childNodes[0],n.push(T),e.setProperty(T,\"sequentProcessed\",!0)),o=i}V(t,n)}}}(T);var o=T.nodeLists.inference||[];try{for(var i=n(o),a=i.next();!a.done;a=i.next()){var l=a.value,p=e.getProperty(l,\"proof\"),b=c(l),M=u(b,e.getProperty(b,\"inferenceRule\")),x=h(M);if(e.getProperty(x,\"inference\")){var O=v(x);if(O){g(T,x,-O);var _=y(l,b,!1);g(T,l,O-_)}}var S=f(M);if(null!=e.getProperty(S,\"inference\")){var E=v(S,!0);g(T,S,-E,!0);var C=y(l,b,!0),w=e.getProperty(l,\"maxAdjust\");null!=w&&(E=Math.max(E,w));var A=void 0;if(!p&&(A=L(l))){var P=H(A);if(P){var N=T.nodeFactory.create(\"node\",\"mspace\",[],{width:E-C+\"em\"});P.appendChild(N),l.removeProperty(\"maxAdjust\")}else{var k=m(A);k&&(E=e.getProperty(k,\"maxAdjust\")?Math.max(e.getProperty(k,\"maxAdjust\"),E):E,e.setProperty(k,\"maxAdjust\",E))}}else g(T,e.getProperty(l,\"proof\")?l:l.parent,E-C,!0)}}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}};var O=((r={}).bspr_maxAdjust=!0,r);e.setProperty=function(t,e,Q){o.default.setProperty(t,\"bspr_\"+e,Q)},e.getProperty=function(t,e){return o.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var Q=[];t.getPropertyNames().forEach((function(e){!O[e]&&e.match(RegExp(\"^bspr_\"))&&Q.push(e+\":\"+t.getProperty(e))})),Q.length&&o.default.setAttribute(t,\"semantics\",Q.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(a=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){a=null}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r,T=Q(9),n=Q(5),o=Q(26);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var Q=[t,e.char];if(e.attributes)for(var r in e.attributes)Q.push(r),Q.push(e.attributes[r]);return Q},t.assembleSymbol=function(t){for(var e=t[0],Q=t[1],r={},T=2;T<t.length;T+=2)r[t[T]]=t[T+1];return new o.Symbol(e,Q,r)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new n.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return T.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,Q){for(var r=t.GetNext(),T=[],o=0,i=t.i;t.i<t.string.length;){if(\"#\"===(r=t.GetNext())){if(i!==t.i&&(T[o]=t.string.substr(i,t.i-i)),!(r=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new n.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",Q);if(parseInt(r)!==++o)throw new n.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",Q);i=t.i+1}else if(\"{\"===r)return i!==t.i&&(T[o]=t.string.substr(i,t.i-i)),T.length>0?[o.toString()].concat(T):o;t.i++}throw new n.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,Q,r){if(null==r)return t.GetArgument(Q);for(var T=t.i,o=0,i=0;t.i<t.string.length;){var a=t.string.charAt(t.i);if(\"{\"===a)t.i===T&&(i=1),t.GetArgument(Q),o=t.i-T;else{if(e(t,r))return i&&(T++,o-=2),t.string.substr(T,o);if(\"\\\\\"===a){t.i++,o++,i=0;var s=t.string.substr(t.i).match(/[a-z]+|./i);s&&(t.i+=s[0].length,o=t.i-T)}else t.i++,o++,i=0}}throw new n.default(\"RunawayArgument\",\"Runaway argument for %1?\",Q)},t.MatchParam=e,t.addDelimiter=function(e,Q,r,T){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(Q,new o.Symbol(Q,r,T))},t.addMacro=function(e,Q,r,T,n){void 0===n&&(n=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(Q,new o.Macro(n||Q,r,T))},t.addEnvironment=function(e,Q,r,T){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(Q,new o.Macro(Q,r,T))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(r||(r={})),e.default=r},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonArrow=e.CommonDiagonalArrow=e.CommonDiagonalStrike=e.CommonBorder2=e.CommonBorder=e.arrowBBox=e.diagonalArrowDef=e.arrowDef=e.arrowBBoxW=e.arrowBBoxHD=e.arrowHead=e.fullBorder=e.fullPadding=e.fullBBox=e.sideNames=e.sideIndex=e.SOLID=e.PADDING=e.THICKNESS=e.ARROWY=e.ARROWDX=e.ARROWX=void 0,e.ARROWX=4,e.ARROWDX=1,e.ARROWY=2,e.THICKNESS=.067,e.PADDING=.2,e.SOLID=e.THICKNESS+\"em solid\",e.sideIndex={top:0,right:1,bottom:2,left:3},e.sideNames=Object.keys(e.sideIndex),e.fullBBox=function(t){return new Array(4).fill(t.thickness+t.padding)},e.fullPadding=function(t){return new Array(4).fill(t.padding)},e.fullBorder=function(t){return new Array(4).fill(t.thickness)},e.arrowHead=function(t){return Math.max(t.padding,t.thickness*(t.arrowhead.x+t.arrowhead.dx+1))},e.arrowBBoxHD=function(t,e){if(t.childNodes[0]){var Q=t.childNodes[0].getBBox(),r=Q.h,T=Q.d;e[0]=e[2]=Math.max(0,t.thickness*t.arrowhead.y-(r+T)/2)}return e},e.arrowBBoxW=function(t,e){if(t.childNodes[0]){var Q=t.childNodes[0].getBBox().w;e[1]=e[3]=Math.max(0,t.thickness*t.arrowhead.y-Q/2)}return e},e.arrowDef={up:[-Math.PI/2,!1,!0,\"verticalstrike\"],down:[Math.PI/2,!1,!0,\"verticakstrike\"],right:[0,!1,!1,\"horizontalstrike\"],left:[Math.PI,!1,!1,\"horizontalstrike\"],updown:[Math.PI/2,!0,!0,\"verticalstrike uparrow downarrow\"],leftright:[0,!0,!1,\"horizontalstrike leftarrow rightarrow\"]},e.diagonalArrowDef={updiagonal:[-1,0,!1,\"updiagonalstrike northeastarrow\"],northeast:[-1,0,!1,\"updiagonalstrike updiagonalarrow\"],southeast:[1,0,!1,\"downdiagonalstrike\"],northwest:[1,Math.PI,!1,\"downdiagonalstrike\"],southwest:[-1,Math.PI,!1,\"updiagonalstrike\"],northeastsouthwest:[-1,0,!0,\"updiagonalstrike northeastarrow updiagonalarrow southwestarrow\"],northwestsoutheast:[1,0,!0,\"downdiagonalstrike northwestarrow southeastarrow\"]},e.arrowBBox={up:function(t){return e.arrowBBoxW(t,[e.arrowHead(t),0,t.padding,0])},down:function(t){return e.arrowBBoxW(t,[t.padding,0,e.arrowHead(t),0])},right:function(t){return e.arrowBBoxHD(t,[0,e.arrowHead(t),0,t.padding])},left:function(t){return e.arrowBBoxHD(t,[0,t.padding,0,e.arrowHead(t)])},updown:function(t){return e.arrowBBoxW(t,[e.arrowHead(t),0,e.arrowHead(t),0])},leftright:function(t){return e.arrowBBoxHD(t,[0,e.arrowHead(t),0,e.arrowHead(t)])}},e.CommonBorder=function(t){return function(Q){var r=e.sideIndex[Q];return[Q,{renderer:t,bbox:function(t){var e=[0,0,0,0];return e[r]=t.thickness+t.padding,e},border:function(t){var e=[0,0,0,0];return e[r]=t.thickness,e}}]}},e.CommonBorder2=function(t){return function(Q,r,T){var n=e.sideIndex[r],o=e.sideIndex[T];return[Q,{renderer:t,bbox:function(t){var e=t.thickness+t.padding,Q=[0,0,0,0];return Q[n]=Q[o]=e,Q},border:function(t){var e=[0,0,0,0];return e[n]=e[o]=t.thickness,e},remove:r+\" \"+T}]}},e.CommonDiagonalStrike=function(t){return function(Q){var r=\"mjx-\"+Q.charAt(0)+\"strike\";return[Q+\"diagonalstrike\",{renderer:t(r),bbox:e.fullBBox}]}},e.CommonDiagonalArrow=function(t){return function(Q){var T=r(e.diagonalArrowDef[Q],4),n=T[0],o=T[1],i=T[2];return[Q+\"arrow\",{renderer:function(e,Q){var r=e.arrowData(),T=r.a,a=r.W,s=e.arrow(a,n*(T-o),i);t(e,s)},bbox:function(t){var e=t.arrowData(),Q=e.a,T=e.x,n=e.y,o=r([t.arrowhead.x,t.arrowhead.y,t.arrowhead.dx],3),i=o[0],a=o[1],s=o[2],l=r(t.getArgMod(i+s,a),2),c=l[0],u=l[1],p=n+(c>Q?t.thickness*u*Math.sin(c-Q):0),h=T+(c>Math.PI/2-Q?t.thickness*u*Math.sin(c+Q-Math.PI/2):0);return[p,h,p,h]},remove:T[3]}]}},e.CommonArrow=function(t){return function(Q){var T=r(e.arrowDef[Q],4),n=T[0],o=T[1],i=T[2],a=T[3];return[Q+\"arrow\",{renderer:function(e,Q){var r=e.getBBox(),T=r.w,a=r.h,s=r.d,l=i?a+s:T,c=e.arrow(l,n,o);t(e,c)},bbox:e.arrowBBox[Q],remove:a}]}}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsubsupMixin=e.CommonMsupMixin=e.CommonMsubMixin=void 0,e.CommonMsubMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),e.prototype.getOffset=function(t,e){return[0,-this.getV(t,e)]},e}(t)},e.CommonMsupMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),e.prototype.getOffset=function(t,e){return[(this.baseCore.bbox.ic?.05*this.baseCore.bbox.ic+.05:0)*this.coreScale(),this.getU(t,e)]},e}(t)},e.CommonMsubsupMixin=function(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.UVQ=null,e}return T(e,t),Object.defineProperty(e.prototype,\"subChild\",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"supChild\",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.baseChild.getBBox(),r=this.subChild.getBBox(),T=this.supChild.getBBox();t.empty(),t.append(Q);var o=t.w,i=n(this.getUVQ(Q,r,T),2),a=i[0],s=i[1],l=this.baseCore.bbox.ic?this.coreIC()*this.coreScale():0;t.combine(r,o,s),t.combine(T,o+l,a),t.w+=this.font.params.scriptspace,t.clean(),this.setChildPWidths(e)},e.prototype.getUVQ=function(t,e,Q){if(this.UVQ)return this.UVQ;var r=this.font.params,T=3*r.rule_thickness,o=this.length2em(this.node.attributes.get(\"subscriptshift\"),r.sub2),i=this.isCharBase()?0:t.d*t.rscale+r.sub_drop*e.rscale,a=n([this.getU(t,Q),Math.max(i,o)],2),s=a[0],l=a[1],c=s-Q.d*Q.rscale-(e.h*e.rscale-l);if(c<T){l+=T-c;var u=.8*r.x_height-(s-Q.d*Q.rscale);u>0&&(s+=u,l-=u)}return s=Math.max(this.length2em(this.node.attributes.get(\"superscriptshift\"),s),s),l=Math.max(this.length2em(this.node.attributes.get(\"subscriptshift\"),l),l),c=s-Q.d*Q.rscale-(e.h*e.rscale-l),this.UVQ=[s,-l,c],this.UVQ},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMunderoverMixin=e.CommonMoverMixin=e.CommonMunderMixin=void 0,e.CommonMunderMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e,Q){if(void 0===Q&&(Q=!1),this.hasMovableLimits())t.prototype.computeBBox.call(this,e,Q);else{e.empty();var r=this.baseChild.getBBox(),T=this.script.getBBox(),o=this.getUnderKV(r,T)[1],i=this.getDelta(!0),a=n(this.getDeltaW([r,T],[0,-i]),2),s=a[0],l=a[1];e.combine(r,s,0),e.combine(T,l,o),e.d+=this.font.params.big_op_spacing5,e.ic=-this.baseCore.bbox.ic,e.clean(),this.setChildPWidths(Q)}},e}(t)},e.CommonMoverMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e){if(this.hasMovableLimits())t.prototype.computeBBox.call(this,e);else{e.empty();var Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=this.getOverKU(Q,r)[1],o=this.getDelta(),i=n(this.getDeltaW([Q,r],[0,o]),2),a=i[0],s=i[1];e.combine(Q,a,0),e.combine(r,s,T),e.h+=this.font.params.big_op_spacing5,e.ic=-this.baseCore.bbox.ic,e.clean()}},e}(t)},e.CommonMunderoverMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"underChild\",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"overChild\",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"subChild\",{get:function(){return this.underChild},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"supChild\",{get:function(){return this.overChild},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e){if(this.hasMovableLimits())t.prototype.computeBBox.call(this,e);else{e.empty();var Q=this.overChild.getBBox(),r=this.baseChild.getBBox(),T=this.underChild.getBBox(),o=this.getOverKU(r,Q)[1],i=this.getUnderKV(r,T)[1],a=this.getDelta(),s=n(this.getDeltaW([r,T,Q],[0,-a,a]),3),l=s[0],c=s[1],u=s[2];e.combine(r,l,0),e.combine(Q,u,o),e.combine(T,c,i);var p=this.font.params.big_op_spacing5;e.h+=p,e.d+=p,e.ic=-this.baseCore.bbox.ic,e.clean()}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmsubsup=e.SVGmsup=e.SVGmsub=void 0;var o=Q(207),i=Q(46),a=Q(46),s=Q(46),l=Q(39),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=l.MmlMsub.prototype.kind,e.useIC=!1,e}(i.CommonMsubMixin(o.SVGscriptbase));e.SVGmsub=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=l.MmlMsup.prototype.kind,e.useIC=!0,e}(a.CommonMsupMixin(o.SVGscriptbase));e.SVGmsup=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=n([this.baseChild,this.supChild,this.subChild],3),r=Q[0],T=Q[1],o=Q[2],i=r.getBBox(),a=n(this.getUVQ(i,o.getBBox(),T.getBBox()),2),s=a[0],l=a[1],c=this.baseCore.bbox.ic?this.coreIC()*this.coreScale():0;r.toSVG(e),T.toSVG(e),o.toSVG(e),o.place(i.w*i.rscale,l),T.place(i.w*i.rscale+c,s)},e.kind=l.MmlMsubsup.prototype.kind,e.useIC=!1,e}(s.CommonMsubsupMixin(o.SVGscriptbase));e.SVGmsubsup=p},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLHandler=void 0;var n=Q(108),o=Q(122),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.documentClass=o.HTMLDocument,e}return T(e,t),e.prototype.handlesDocument=function(t){var e=this.adaptor;if(\"string\"==typeof t)try{t=e.parse(t,\"text/html\")}catch(t){}return t instanceof e.window.Document||t instanceof e.window.HTMLElement||t instanceof e.window.DocumentFragment},e.prototype.create=function(e,Q){var r=this.adaptor;if(\"string\"==typeof e)e=r.parse(e,\"text/html\");else if(e instanceof r.window.HTMLElement||e instanceof r.window.DocumentFragment){var T=e;e=r.parse(\"\",\"text/html\"),r.append(r.body(e),T)}return t.prototype.create.call(this,e,Q)},e}(n.AbstractHandler);e.HTMLHandler=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVG=e.XLINKNS=e.SVGNS=void 0;var i=Q(167),a=Q(191),s=Q(35),l=Q(266),c=Q(15),u=Q(32);e.SVGNS=\"http://www.w3.org/2000/svg\",e.XLINKNS=\"http://www.w3.org/1999/xlink\";var p=function(t){function Q(e){void 0===e&&(e=null);var Q=t.call(this,e,a.SVGWrapperFactory,s.TeXFont)||this;return Q.minwidth=0,Q.shift=0,Q.container=null,Q.svgStyles=null,Q.fontCache=new l.FontCache(Q),Q}return T(Q,t),Q.prototype.initialize=function(){\"global\"===this.options.fontCache&&this.fontCache.clearCache()},Q.prototype.clearFontCache=function(){this.fontCache.clearCache()},Q.prototype.setScale=function(t){1!==this.options.scale&&this.adaptor.setStyle(t,\"fontSize\",u.percent(this.options.scale))},Q.prototype.escaped=function(t,e){return this.setDocument(e),this.html(\"span\",{},[this.text(t.math)])},Q.prototype.styleSheet=function(e){if(this.svgStyles)return null;var r=this.svgStyles=t.prototype.styleSheet.call(this,e);return this.adaptor.setAttribute(r,\"id\",Q.STYLESHEETID),r},Q.prototype.pageElements=function(t){return\"global\"!==this.options.fontCache||this.findCache(t)?null:this.svg(\"svg\",{id:Q.FONTCACHEID,style:{display:\"none\"}},[this.fontCache.getCache()])},Q.prototype.findCache=function(t){for(var e=this.adaptor,r=e.tags(e.body(t.document),\"svg\"),T=r.length-1;T>=0;T--)if(this.adaptor.getAttribute(r[T],\"id\")===Q.FONTCACHEID)return!0;return!1},Q.prototype.processMath=function(t,e){var Q=this.container;this.container=e;var r=this.factory.wrap(t),T=o(this.createRoot(r),2),n=T[0],i=T[1];this.typesetSVG(r,n,i),this.container=Q},Q.prototype.createRoot=function(t){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=Q.pwidth,i=Math.max(r,.001),a=this.svg(\"g\",{stroke:\"currentColor\",fill:\"currentColor\",\"stroke-width\":0,transform:\"matrix(1 0 0 -1 0 0)\"}),s=this.adaptor,l=s.append(this.container,this.svg(\"svg\",{xmlns:e.SVGNS,width:this.ex(i),height:this.ex(T+n),role:\"img\",focusable:!1,style:{\"vertical-align\":this.ex(-n)},viewBox:[0,this.fixed(1e3*-T,1),this.fixed(1e3*i,1),this.fixed(1e3*(T+n),1)].join(\" \")},[a]));if(.001===i&&(s.setAttribute(l,\"preserveAspectRatio\",\"xMidYMid slice\"),r<0&&s.setStyle(this.container,\"margin-right\",this.ex(r))),o){s.setStyle(l,\"min-width\",this.ex(i)),s.setAttribute(l,\"width\",o),s.removeAttribute(l,\"viewBox\");var c=t.metrics.ex/(1e3*this.font.params.x_height);s.setAttribute(a,\"transform\",\"matrix(1 0 0 -1 0 0) scale(\"+this.fixed(c,6)+\") translate(0, \"+this.fixed(1e3*-T,1)+\")\")}return\"none\"!==this.options.fontCache&&s.setAttribute(l,\"xmlns:xlink\",e.XLINKNS),[l,a]},Q.prototype.typesetSVG=function(t,e,Q){var r=this.adaptor;if(this.minwidth=this.shift=0,\"local\"===this.options.fontCache&&(this.fontCache.clearCache(),this.fontCache.useLocalID(this.options.localID),r.insert(this.fontCache.getCache(),Q)),t.toSVG(Q),this.fontCache.clearLocalID(),this.minwidth)r.setStyle(e,\"minWidth\",this.ex(this.minwidth)),r.setStyle(this.container,\"minWidth\",this.ex(this.minwidth));else if(this.shift){var T=r.getAttribute(this.container,\"justify\")||\"center\";this.setIndent(e,T,this.shift)}},Q.prototype.setIndent=function(t,e,Q){\"center\"!==e&&\"left\"!==e||this.adaptor.setStyle(t,\"margin-left\",this.ex(Q)),\"center\"!==e&&\"right\"!==e||this.adaptor.setStyle(t,\"margin-right\",this.ex(-Q))},Q.prototype.ex=function(t){return t/=this.font.params.x_height,Math.abs(t)<.001?\"0\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"ex\"},Q.prototype.svg=function(t,Q,r){return void 0===Q&&(Q={}),void 0===r&&(r=[]),this.html(t,Q,r,e.SVGNS)},Q.prototype.unknownText=function(t,e){var Q=this.math.metrics,r=this.font.params.x_height/Q.ex*Q.em*1e3,T=this.svg(\"text\",{\"data-variant\":e,transform:\"matrix(1 0 0 -1 0 0)\",\"font-size\":this.fixed(r,1)+\"px\"},[this.text(t)]),n=this.adaptor;if(\"-explicitFont\"!==e){var i=c.unicodeChars(t);if(1!==i.length||i[0]<119808||i[0]>120831){var a=o(this.font.getCssFont(e),3),s=a[0],l=a[1],u=a[2];n.setAttribute(T,\"font-family\",s),l&&n.setAttribute(T,\"font-style\",\"italic\"),u&&n.setAttribute(T,\"font-weight\",\"bold\")}}return T},Q.prototype.measureTextNode=function(t){var e=this.adaptor;t=e.clone(t),e.removeAttribute(t,\"transform\");var Q=this.fixed(1e3*this.font.params.x_height,1),r=this.svg(\"svg\",{position:\"absolute\",visibility:\"hidden\",width:\"1ex\",height:\"1ex\",viewBox:[0,0,Q,Q].join(\" \")},[t]);e.append(e.body(e.document),r);var T=e.nodeSize(t,1e3,!0)[0];return e.remove(r),{w:T,h:.75,d:.2}},Q.NAME=\"SVG\",Q.OPTIONS=n(n({},i.CommonOutputJax.OPTIONS),{internalSpeechTitles:!0,titleID:0,fontCache:\"local\",localID:null}),Q.commonStyles={'mjx-container[jax=\"SVG\"]':{direction:\"ltr\"},'mjx-container[jax=\"SVG\"] > svg':{overflow:\"visible\"},'mjx-container[jax=\"SVG\"] > svg a':{fill:\"blue\",stroke:\"blue\"}},Q.FONTCACHEID=\"MJX-SVG-global-cache\",Q.STYLESHEETID=\"MJX-SVG-styles\",Q}(i.CommonOutputJax);e.SVG=p},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KEY=void 0,function(t){t[t.RETURN=13]=\"RETURN\",t[t.ESCAPE=27]=\"ESCAPE\",t[t.SPACE=32]=\"SPACE\",t[t.LEFT=37]=\"LEFT\",t[t.UP=38]=\"UP\",t[t.RIGHT=39]=\"RIGHT\",t[t.DOWN=40]=\"DOWN\"}(e.KEY||(e.KEY={}))},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractVariableItem=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;this.span||this.generateSpan(),e.appendChild(this.span),this.update()},e.prototype.register=function(){this.variable.register(this)},e.prototype.unregister=function(){this.variable.unregister(this)},e.prototype.update=function(){this.updateAria(),this.span&&this.updateSpan()},e}(Q(36).AbstractItem);e.AbstractVariableItem=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMathDocument=e.RenderList=void 0;var a=Q(7),s=Q(54),l=Q(55),c=Q(56),u=Q(14),p=Q(57),h=Q(117),f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.create=function(t){var e,Q,r=new this;try{for(var T=n(Object.keys(t)),i=T.next();!i.done;i=T.next()){var a=i.value,s=o(this.action(a,t[a]),2),l=s[0],c=s[1];c&&r.add(l,c)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return r},e.action=function(t,e){var Q,r,T,n,i,a,s=!0,l=e[0];if(1===e.length||\"boolean\"==typeof e[1])2===e.length&&(s=e[1]),i=(Q=o(this.methodActions(t),2))[0],a=Q[1];else if(\"string\"==typeof e[1])if(\"string\"==typeof e[2]){4===e.length&&(s=e[3]);var c=o(e.slice(1),2),u=c[0],p=c[1];i=(r=o(this.methodActions(u,p),2))[0],a=r[1]}else 3===e.length&&(s=e[2]),i=(T=o(this.methodActions(e[1]),2))[0],a=T[1];else 4===e.length&&(s=e[3]),i=(n=o(e.slice(1),2))[0],a=n[1];return[{id:t,renderDoc:i,renderMath:a,convert:s},l]},e.methodActions=function(t,e){return void 0===e&&(e=t),[function(e){return t&&e[t](),!1},function(t,Q){return e&&t[e](Q),!1}]},e.prototype.renderDoc=function(t,e){var Q,r;void 0===e&&(e=u.STATE.UNPROCESSED);try{for(var T=n(this.items),o=T.next();!o.done;o=T.next()){var i=o.value;if(i.priority>=e&&i.item.renderDoc(t))return}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},e.prototype.renderMath=function(t,e,Q){var r,T;void 0===Q&&(Q=u.STATE.UNPROCESSED);try{for(var o=n(this.items),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.priority>=Q&&a.item.renderMath(t,e))return}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}},e.prototype.renderConvert=function(t,e,Q){var r,T;void 0===Q&&(Q=u.STATE.LAST);try{for(var o=n(this.items),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.priority>Q)return;if(a.item.convert&&a.item.renderMath(t,e))return}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}},e.prototype.findID=function(t){var e,Q;try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(o.item.id===t)return o.item}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return null},e}(Q(21).PrioritizedList);e.RenderList=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.compile=function(t){return null},e}(s.AbstractInputJax),L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.typeset=function(t,e){return void 0===e&&(e=null),null},e.prototype.escaped=function(t,e){return null},e}(l.AbstractOutputJax),H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(c.AbstractMathList),m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(u.AbstractMathItem),y=function(){function t(e,Q,r){var T=this,n=this.constructor;this.document=e,this.options=a.userOptions(a.defaultOptions({},n.OPTIONS),r),this.math=new(this.options.MathList||H),this.renderActions=f.create(this.options.renderActions),this.processed=new t.ProcessBits,this.outputJax=this.options.OutputJax||new L;var o=this.options.InputJax||[new d];Array.isArray(o)||(o=[o]),this.inputJax=o,this.adaptor=Q,this.outputJax.setAdaptor(Q),this.inputJax.map((function(t){return t.setAdaptor(Q)})),this.mmlFactory=this.options.MmlFactory||new p.MmlFactory,this.inputJax.map((function(t){return t.setMmlFactory(T.mmlFactory)})),this.outputJax.initialize(),this.inputJax.map((function(t){return t.initialize()}))}return Object.defineProperty(t.prototype,\"kind\",{get:function(){return this.constructor.KIND},enumerable:!1,configurable:!0}),t.prototype.addRenderAction=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=o(f.action(t,e),2),T=r[0],n=r[1];this.renderActions.add(T,n)},t.prototype.removeRenderAction=function(t){var e=this.renderActions.findID(t);e&&this.renderActions.remove(e)},t.prototype.render=function(){return this.renderActions.renderDoc(this),this},t.prototype.rerender=function(t){return void 0===t&&(t=u.STATE.RERENDER),this.state(t-1),this.render(),this},t.prototype.convert=function(t,e){void 0===e&&(e={});var Q=a.userOptions({format:this.inputJax[0].name,display:!0,end:u.STATE.LAST,em:16,ex:8,containerWidth:null,lineWidth:1e6,scale:1,family:\"\"},e),r=Q.format,T=Q.display,n=Q.end,o=Q.ex,i=Q.em,s=Q.containerWidth,l=Q.lineWidth,c=Q.scale,p=Q.family;null===s&&(s=80*o);var h=this.inputJax.reduce((function(t,e){return e.name===r?e:t}),null),f=new this.options.MathItem(t,h,T);return f.start.node=this.adaptor.body(this.document),f.setMetrics(i,o,s,l,c),this.outputJax.options.mtextInheritFont&&(f.outputData.mtextFamily=p),this.outputJax.options.merrorInheritFont&&(f.outputData.merrorFamily=p),f.convert(this,n),f.typesetRoot||f.root},t.prototype.findMath=function(t){return void 0===t&&(t=null),this.processed.set(\"findMath\"),this},t.prototype.compile=function(){var t,e,Q,r;if(!this.processed.isSet(\"compile\")){var T=[];try{for(var o=n(this.math),i=o.next();!i.done;i=o.next()){var a=i.value;this.compileMath(a),void 0!==a.inputData.recompile&&T.push(a)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}try{for(var s=n(T),l=s.next();!l.done;l=s.next()){var c=(a=l.value).inputData.recompile;a.state(c.state),a.inputData.recompile=c,this.compileMath(a)}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(Q)throw Q.error}}this.processed.set(\"compile\")}return this},t.prototype.compileMath=function(t){try{t.compile(this)}catch(e){if(e.retry||e.restart)throw e;this.options.compileError(this,t,e),t.inputData.error=e}},t.prototype.compileError=function(t,e){t.root=this.mmlFactory.create(\"math\",null,[this.mmlFactory.create(\"merror\",{\"data-mjx-error\":e.message,title:e.message},[this.mmlFactory.create(\"mtext\",null,[this.mmlFactory.create(\"text\").setText(\"Math input error\")])])]),t.display&&t.root.attributes.set(\"display\",\"block\"),t.inputData.error=e.message},t.prototype.typeset=function(){var t,e;if(!this.processed.isSet(\"typeset\")){try{for(var Q=n(this.math),r=Q.next();!r.done;r=Q.next()){var T=r.value;try{T.typeset(this)}catch(t){if(t.retry||t.restart)throw t;this.options.typesetError(this,T,t),T.outputData.error=t}}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"typeset\")}return this},t.prototype.typesetError=function(t,e){t.typesetRoot=this.adaptor.node(\"mjx-container\",{class:\"MathJax mjx-output-error\",jax:this.outputJax.name},[this.adaptor.node(\"span\",{\"data-mjx-error\":e.message,title:e.message,style:{color:\"red\",\"background-color\":\"yellow\",\"line-height\":\"normal\"}},[this.adaptor.text(\"Math output error\")])]),t.display&&this.adaptor.setAttributes(t.typesetRoot,{style:{display:\"block\",margin:\"1em 0\",\"text-align\":\"center\"}}),t.outputData.error=e.message},t.prototype.getMetrics=function(){return this.processed.isSet(\"getMetrics\")||(this.outputJax.getMetrics(this),this.processed.set(\"getMetrics\")),this},t.prototype.updateDocument=function(){var t,e;if(!this.processed.isSet(\"updateDocument\")){try{for(var Q=n(this.math.reversed()),r=Q.next();!r.done;r=Q.next()){r.value.updateDocument(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"updateDocument\")}return this},t.prototype.removeFromDocument=function(t){return void 0===t&&(t=!1),this},t.prototype.state=function(t,e){var Q,r;void 0===e&&(e=!1);try{for(var T=n(this.math),o=T.next();!o.done;o=T.next()){o.value.state(t,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return t<u.STATE.INSERTED&&this.processed.clear(\"updateDocument\"),t<u.STATE.TYPESET&&(this.processed.clear(\"typeset\"),this.processed.clear(\"getMetrics\")),t<u.STATE.COMPILED&&this.processed.clear(\"compile\"),this},t.prototype.reset=function(){return this.processed.reset(),this},t.prototype.clear=function(){return this.reset(),this.math.clear(),this},t.prototype.concat=function(t){return this.math.merge(t),this},t.prototype.clearMathItemsWithin=function(t){var e;(e=this.math).remove.apply(e,i(this.getMathItemsWithin(t)))},t.prototype.getMathItemsWithin=function(t){var e,Q,r,T;Array.isArray(t)||(t=[t]);var o=this.adaptor,i=[],a=o.getElements(t,this.document);try{t:for(var s=n(this.math),l=s.next();!l.done;l=s.next()){var c=l.value;try{for(var u=(r=void 0,n(a)),p=u.next();!p.done;p=u.next()){var h=p.value;if(c.start.node&&o.contains(h,c.start.node)){i.push(c);continue t}}}catch(t){r={error:t}}finally{try{p&&!p.done&&(T=u.return)&&T.call(u)}finally{if(r)throw r.error}}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return i},t.KIND=\"MathDocument\",t.OPTIONS={OutputJax:null,InputJax:null,MmlFactory:null,MathList:H,MathItem:m,compileError:function(t,e,Q){t.compileError(e,Q)},typesetError:function(t,e,Q){t.typesetError(e,Q)},renderActions:a.expandable({find:[u.STATE.FINDMATH,\"findMath\",\"\",!1],compile:[u.STATE.COMPILED],metrics:[u.STATE.METRICS,\"getMetrics\",\"\",!1],typeset:[u.STATE.TYPESET],update:[u.STATE.INSERTED,\"updateDocument\",!1]})},t.ProcessBits=h.BitFieldClass(\"findMath\",\"compile\",\"getMetrics\",\"typeset\",\"updateDocument\"),t}();e.AbstractMathDocument=y},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=void 0;var r=Q(7),T=Q(30),n=function(){function t(t){void 0===t&&(t={}),this.adaptor=null,this.mmlFactory=null;var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t),this.preFilters=new T.FunctionList,this.postFilters=new T.FunctionList}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.setAdaptor=function(t){this.adaptor=t},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.initialize=function(){},Object.defineProperty(t.prototype,\"processStrings\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.findMath=function(t,e){return[]},t.prototype.executeFilters=function(t,e,Q,r){var T={math:e,document:Q,data:r};return t.execute(T),T.data},t.NAME=\"generic\",t.OPTIONS={},t}();e.AbstractInputJax=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractOutputJax=void 0;var r=Q(7),T=Q(30),n=function(){function t(t){void 0===t&&(t={}),this.adaptor=null;var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t),this.postFilters=new T.FunctionList}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.setAdaptor=function(t){this.adaptor=t},t.prototype.initialize=function(){},t.prototype.getMetrics=function(t){},t.prototype.styleSheet=function(t){return null},t.prototype.pageElements=function(t){return null},t.prototype.executeFilters=function(t,e,Q,r){var T={math:e,document:Q,data:r};return t.execute(T),T.data},t.NAME=\"generic\",t.OPTIONS={},t}();e.AbstractOutputJax=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMathList=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.isBefore=function(t,e){return t.start.i<e.start.i||t.start.i===e.start.i&&t.start.n<e.start.n},e}(Q(109).LinkedList);e.AbstractMathList=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlFactory=void 0;var n=Q(110),o=Q(111),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"MML\",{get:function(){return this.node},enumerable:!1,configurable:!0}),e.defaultNodes=o.MML,e}(n.AbstractNodeFactory);e.MmlFactory=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEmptyNode=e.AbstractNode=void 0;var o=function(){function t(t,e,Q){var r,T;void 0===e&&(e={}),void 0===Q&&(Q=[]),this.parent=null,this.properties={},this._factory=null,this.childNodes=[],this._factory=t;try{for(var o=n(Object.keys(e)),i=o.next();!i.done;i=o.next()){var a=i.value;this.setProperty(a,e[a])}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}Q.length&&this.setChildren(Q)}return Object.defineProperty(t.prototype,\"factory\",{get:function(){return this._factory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"unknown\"},enumerable:!1,configurable:!0}),t.prototype.setProperty=function(t,e){this.properties[t]=e},t.prototype.getProperty=function(t){return this.properties[t]},t.prototype.getPropertyNames=function(){return Object.keys(this.properties)},t.prototype.getAllProperties=function(){return this.properties},t.prototype.removeProperty=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q),o=T.next();!o.done;o=T.next()){var i=o.value;delete this.properties[i]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}},t.prototype.isKind=function(t){return this.factory.nodeIsKind(this,t)},t.prototype.setChildren=function(t){var e,Q;this.childNodes=[];try{for(var r=n(t),T=r.next();!T.done;T=r.next()){var o=T.value;this.appendChild(o)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},t.prototype.appendChild=function(t){return this.childNodes.push(t),t.parent=this,t},t.prototype.replaceChild=function(t,e){var Q=this.childIndex(e);return null!==Q&&(this.childNodes[Q]=t,t.parent=this),t},t.prototype.childIndex=function(t){var e=this.childNodes.indexOf(t);return-1===e?null:e},t.prototype.findNodes=function(t){var e=[];return this.walkTree((function(Q){Q.isKind(t)&&e.push(Q)})),e},t.prototype.walkTree=function(t,e){var Q,r;t(this,e);try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;i&&i.walkTree(t,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return e},t.prototype.toString=function(){return this.kind+\"(\"+this.childNodes.join(\",\")+\")\"},t}();e.AbstractNode=o;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.setChildren=function(t){},e.prototype.appendChild=function(t){return t},e.prototype.replaceChild=function(t,e){return e},e.prototype.childIndex=function(t){return null},e.prototype.walkTree=function(t,e){return t(this,e),e},e.prototype.toString=function(){return this.kind},e}(o);e.AbstractEmptyNode=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMath=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"math\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(e,Q,r,T){\"display\"===this.attributes.get(\"mode\")&&this.attributes.setInherited(\"display\",\"block\"),e=this.addInheritedAttributes(e,this.attributes.getAllAttributes()),Q=!!this.attributes.get(\"displaystyle\")||!this.attributes.get(\"displaystyle\")&&\"block\"===this.attributes.get(\"display\"),this.attributes.setInherited(\"displaystyle\",Q),r=this.attributes.get(\"scriptlevel\")||this.constructor.defaults.scriptlevel,t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{mathvariant:\"normal\",mathsize:\"normal\",mathcolor:\"\",mathbackground:\"transparent\",dir:\"ltr\",scriptlevel:0,displaystyle:!1,display:\"inline\",maxwidth:\"\",overflow:\"linebreak\",altimg:\"\",\"altimg-width\":\"\",\"altimg-height\":\"\",\"altimg-valign\":\"\",alttext:\"\",cdgroup:\"\",scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:\"8px\",infixlinebreakstyle:\"before\",lineleading:\"1ex\",linebreakmultchar:\"\\u2062\",indentshift:\"auto\",indentalign:\"auto\",indenttarget:\"\",indentalignfirst:\"indentalign\",indentshiftfirst:\"indentshift\",indentalignlast:\"indentalign\",indentshiftlast:\"indentshift\"}),e}(o.AbstractMmlLayoutNode);e.MmlMath=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMn=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mn\"},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlTokenNode.defaults),e}(o.AbstractMmlTokenNode);e.MmlMn=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtext=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtext\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlTokenNode.defaults),e}(o.AbstractMmlTokenNode);e.MmlMtext=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMspace=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mspace\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"hasNewline\",{get:function(){var t=this.attributes;return null==t.getExplicit(\"width\")&&null==t.getExplicit(\"height\")&&null==t.getExplicit(\"depth\")&&\"newline\"===t.get(\"linebreak\")},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{width:\"0em\",height:\"0ex\",depth:\"0ex\",linebreak:\"auto\"}),e}(o.AbstractMmlTokenNode);e.MmlMspace=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMs=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"ms\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{lquote:'\"',rquote:'\"'}),e}(o.AbstractMmlTokenNode);e.MmlMs=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlInferredMrow=e.MmlMrow=void 0;var i=Q(0),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._core=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mrow\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){var t,e;try{for(var Q=o(this.childNodes),r=Q.next();!r.done;r=Q.next()){if(!r.value.isSpacelike)return!1}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){var t,e,Q=!1,r=0;try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;if(i)if(i.isEmbellished){if(Q)return!1;Q=!0,this._core=r}else if(!i.isSpacelike)return!1;r++}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core]:this},e.prototype.coreMO=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core].coreMO():this},e.prototype.nonSpaceLength=function(){var t,e,Q=0;try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){var n=T.value;n&&!n.isSpacelike&&Q++}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.firstNonSpace=function(){var t,e;try{for(var Q=o(this.childNodes),r=Q.next();!r.done;r=Q.next()){var T=r.value;if(T&&!T.isSpacelike)return T}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}return null},e.prototype.lastNonSpace=function(){for(var t=this.childNodes.length;--t>=0;){var e=this.childNodes[t];if(e&&!e.isSpacelike)return e}return null},e.prototype.setTeXclass=function(t){var e,Q,r,T;if(null==this.getProperty(\"open\")&&null==this.getProperty(\"close\")||t&&null==t.getProperty(\"fnOP\")){try{for(var n=o(this.childNodes),a=n.next();!a.done;a=n.next()){t=a.value.setTeXclass(t)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=n.return)&&T.call(n)}finally{if(r)throw r.error}}this.childNodes[0]&&this.updateTeXclass(this.childNodes[0])}else{this.getPrevClass(t),t=null;try{for(var s=o(this.childNodes),l=s.next();!l.done;l=s.next()){t=l.value.setTeXclass(t)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}null==this.texClass&&(this.texClass=i.TEXCLASS.INNER)}return t},e.defaults=n({},i.AbstractMmlNode.defaults),e}(i.AbstractMmlNode);e.MmlMrow=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"inferredMrow\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isInferred\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return\"[\"+this.childNodes.join(\",\")+\"]\"},e.defaults=a.defaults,e}(a);e.MmlInferredMrow=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMfrac=void 0;var i=Q(0),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mfrac\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){(!e||Q>0)&&Q++,this.childNodes[0].setInheritedAttributes(t,!1,Q,r),this.childNodes[1].setInheritedAttributes(t,!1,Q,!0)},e.defaults=n(n({},i.AbstractMmlBaseNode.defaults),{linethickness:\"medium\",numalign:\"center\",denomalign:\"center\",bevelled:!1}),e}(i.AbstractMmlBaseNode);e.MmlMfrac=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMsqrt=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msqrt\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return this.getPrevClass(t),this.childNodes[0].setTeXclass(null),this},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMsqrt=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMroot=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mroot\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,!0),this.childNodes[1].setInheritedAttributes(t,!1,Q+2,r)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMroot=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMerror=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"merror\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMerror=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMpadded=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mpadded\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{width:\"\",height:\"\",depth:\"\",lspace:0,voffset:0}),e}(o.AbstractMmlLayoutNode);e.MmlMpadded=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMphantom=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mphantom\"},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlLayoutNode.defaults),e}(o.AbstractMmlLayoutNode);e.MmlMphantom=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMfenced=void 0;var i=Q(0),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=i.TEXCLASS.INNER,e.separators=[],e.open=null,e.close=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mfenced\"},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){this.getPrevClass(t),this.open&&(t=this.open.setTeXclass(t)),this.childNodes[0]&&(t=this.childNodes[0].setTeXclass(t));for(var e=1,Q=this.childNodes.length;e<Q;e++)this.separators[e-1]&&(t=this.separators[e-1].setTeXclass(t)),this.childNodes[e]&&(t=this.childNodes[e].setTeXclass(t));return this.close&&(t=this.close.setTeXclass(t)),this.updateTeXclass(this.open),t},e.prototype.setChildInheritedAttributes=function(e,Q,r,T){var n,i;this.addFakeNodes();try{for(var a=o([this.open,this.close].concat(this.separators)),s=a.next();!s.done;s=a.next()){var l=s.value;l&&l.setInheritedAttributes(e,Q,r,T)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.prototype.addFakeNodes=function(){var t,e,Q=this.attributes.getList(\"open\",\"close\",\"separators\"),r=Q.open,T=Q.close,n=Q.separators;if(r=r.replace(/[ \\t\\n\\r]/g,\"\"),T=T.replace(/[ \\t\\n\\r]/g,\"\"),n=n.replace(/[ \\t\\n\\r]/g,\"\"),r&&(this.open=this.fakeNode(r,{fence:!0,form:\"prefix\"},i.TEXCLASS.OPEN)),n){for(;n.length<this.childNodes.length-1;)n+=n.charAt(n.length-1);var a=0;try{for(var s=o(this.childNodes.slice(1)),l=s.next();!l.done;l=s.next()){l.value&&this.separators.push(this.fakeNode(n.charAt(a++)))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}}T&&(this.close=this.fakeNode(T,{fence:!0,form:\"postfix\"},i.TEXCLASS.CLOSE))},e.prototype.fakeNode=function(t,e,Q){void 0===e&&(e={}),void 0===Q&&(Q=null);var r=this.factory.create(\"text\").setText(t),T=this.factory.create(\"mo\",e,[r]);return T.texClass=Q,T.parent=this,T},e.defaults=n(n({},i.AbstractMmlNode.defaults),{open:\"(\",close:\")\",separators:\",\"}),e}(i.AbstractMmlNode);e.MmlMfenced=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMenclose=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"menclose\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContininer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return t=this.childNodes[0].setTeXclass(t),this.updateTeXclass(this.childNodes[0]),t},e.defaults=n(n({},o.AbstractMmlNode.defaults),{notation:\"longdiv\"}),e}(o.AbstractMmlNode);e.MmlMenclose=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMaction=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"maction\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"selected\",{get:function(){var t=this.attributes.get(\"selection\"),e=Math.max(1,Math.min(this.childNodes.length,t))-1;return this.childNodes[e]||this.factory.create(\"mrow\")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return this.selected.isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return this.selected.isSpacelike},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.selected.core()},e.prototype.coreMO=function(){return this.selected.coreMO()},e.prototype.verifyAttributes=function(e){(t.prototype.verifyAttributes.call(this,e),\"toggle\"!==this.attributes.get(\"actiontype\")&&void 0!==this.attributes.getExplicit(\"selection\"))&&delete this.attributes.getAllAttributes().selection},e.prototype.setTeXclass=function(t){\"tooltip\"===this.attributes.get(\"actiontype\")&&this.childNodes[1]&&this.childNodes[1].setTeXclass(null);var e=this.selected;return t=e.setTeXclass(t),this.updateTeXclass(e),t},e.prototype.nextToggleSelection=function(){var t=Math.max(1,this.attributes.get(\"selection\")+1);t>this.childNodes.length&&(t=1),this.attributes.set(\"selection\",t)},e.defaults=n(n({},o.AbstractMmlNode.defaults),{actiontype:\"toggle\",selection:1}),e}(o.AbstractMmlNode);e.MmlMaction=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMover=e.MmlMunder=e.MmlMunderover=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"munderover\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"under\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"over\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.childNodes;T[0].setInheritedAttributes(t,e,Q,r||!!T[this.over]);var n=!(e||!T[0].coreMO().attributes.get(\"movablelimits\")),o=this.constructor.ACCENTS;T[1].setInheritedAttributes(t,!1,this.getScriptlevel(o[1],n,Q),r||1===this.under),this.setInheritedAccent(1,o[1],e,Q,r,n),T[2]&&(T[2].setInheritedAttributes(t,!1,this.getScriptlevel(o[2],n,Q),r||2===this.under),this.setInheritedAccent(2,o[2],e,Q,r,n))},e.prototype.getScriptlevel=function(t,e,Q){return!e&&this.attributes.get(t)||Q++,Q},e.prototype.setInheritedAccent=function(t,e,Q,r,T,n){var o=this.childNodes[t];if(null==this.attributes.getExplicit(e)&&o.isEmbellished){var i=o.coreMO().attributes.get(\"accent\");this.attributes.setInherited(e,i),i!==this.attributes.getDefault(e)&&o.setInheritedAttributes({},Q,this.getScriptlevel(e,n,r),T)}},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{accent:!1,accentunder:!1,align:\"center\"}),e.ACCENTS=[\"\",\"accentunder\",\"accent\"],e}(o.AbstractMmlBaseNode);e.MmlMunderover=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"munder\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMunder=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mover\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"over\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"under\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e.ACCENTS=[\"\",\"accent\",\"accentunder\"],e}(i);e.MmlMover=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlNone=e.MmlMprescripts=e.MmlMmultiscripts=void 0;var o=Q(0),i=Q(39),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mmultiscripts\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,r);for(var T=!1,n=1,o=0;n<this.childNodes.length;n++){var i=this.childNodes[n];if(i.isKind(\"mprescripts\")){if(!T&&(T=!0,n%2==0)){var a=this.factory.create(\"mrow\");this.childNodes.splice(n,0,a),a.parent=this,n++}}else{var s=r||o%2==0;i.setInheritedAttributes(t,!1,Q+1,s),o++}}this.childNodes.length%2==(T?1:0)&&(this.appendChild(this.factory.create(\"mrow\")),this.childNodes[this.childNodes.length-1].setInheritedAttributes(t,!1,Q+1,r))},e.prototype.verifyChildren=function(e){for(var Q=!1,r=e.fixMmultiscripts,T=0;T<this.childNodes.length;T++){var n=this.childNodes[T];n.isKind(\"mprescripts\")&&(Q?n.mError(n.kind+\" can only appear once in \"+this.kind,e,!0):(Q=!0,T%2!=0||r||this.mError(\"There must be an equal number of prescripts of each type\",e)))}this.childNodes.length%2!=(Q?1:0)||r||this.mError(\"There must be an equal number of scripts of each type\",e),t.prototype.verifyChildren.call(this,e)},e.defaults=n({},i.MmlMsubsup.defaults),e}(i.MmlMsubsup);e.MmlMmultiscripts=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mprescripts\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),e.prototype.verifyTree=function(e){t.prototype.verifyTree.call(this,e),this.parent&&!this.parent.isKind(\"mmultiscripts\")&&this.mError(this.kind+\" must be a child of mmultiscripts\",e,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMprescripts=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"none\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),e.prototype.verifyTree=function(e){t.prototype.verifyTree.call(this,e),this.parent&&!this.parent.isKind(\"mmultiscripts\")&&this.mError(this.kind+\" must be a child of mmultiscripts\",e,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlNone=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtable=void 0;var i=Q(0),a=Q(15),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.properties={useHeight:1},e.texClass=i.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtable\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(e,Q,r,T){var n,a;try{for(var s=o(i.indentAttributes),l=s.next();!l.done;l=s.next()){var c=l.value;e[c]&&this.attributes.setInherited(c,e[c][1]),void 0!==this.attributes.getExplicit(c)&&delete this.attributes.getAllAttributes()[c]}}catch(t){n={error:t}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(n)throw n.error}}t.prototype.setInheritedAttributes.call(this,e,Q,r,T)},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n,i,s;try{for(var l=o(this.childNodes),c=l.next();!c.done;c=l.next()){(f=c.value).isKind(\"mtr\")||this.replaceChild(this.factory.create(\"mtr\"),f).appendChild(f)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}e=!(!this.attributes.getExplicit(\"displaystyle\")&&!this.attributes.getDefault(\"displaystyle\")),t=this.addInheritedAttributes(t,{columnalign:this.attributes.get(\"columnalign\"),rowalign:\"center\"});var u=a.split(this.attributes.get(\"rowalign\"));try{for(var p=o(this.childNodes),h=p.next();!h.done;h=p.next()){var f=h.value;t.rowalign[1]=u.shift()||t.rowalign[1],f.setInheritedAttributes(t,e,Q,r)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(s=p.return)&&s.call(p)}finally{if(i)throw i.error}}},e.prototype.verifyChildren=function(e){var Q,r;if(!e.fixMtables)try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){n.value.isKind(\"mtr\")||this.mError(\"Children of \"+this.kind+\" must be mtr or mlabeledtr\",e)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.prototype.verifyChildren.call(this,e)},e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.defaults=n(n({},i.AbstractMmlNode.defaults),{align:\"axis\",rowalign:\"baseline\",columnalign:\"center\",groupalign:\"{left}\",alignmentscope:!0,columnwidth:\"auto\",width:\"auto\",rowspacing:\"1ex\",columnspacing:\".8em\",rowlines:\"none\",columnlines:\"none\",frame:\"none\",framespacing:\"0.4em 0.5ex\",equalrows:!1,equalcolumns:!1,displaystyle:!1,side:\"right\",minlabelspacing:\"0.8em\"}),e}(i.AbstractMmlNode);e.MmlMtable=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMlabeledtr=e.MmlMtr=void 0;var i=Q(0),a=Q(24),s=Q(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtr\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n,i,a;try{for(var l=o(this.childNodes),c=l.next();!c.done;c=l.next()){(f=c.value).isKind(\"mtd\")||this.replaceChild(this.factory.create(\"mtd\"),f).appendChild(f)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}var u=s.split(this.attributes.get(\"columnalign\"));1===this.arity&&u.unshift(this.parent.attributes.get(\"side\")),t=this.addInheritedAttributes(t,{rowalign:this.attributes.get(\"rowalign\"),columnalign:\"center\"});try{for(var p=o(this.childNodes),h=p.next();!h.done;h=p.next()){var f=h.value;t.columnalign[1]=u.shift()||t.columnalign[1],f.setInheritedAttributes(t,e,Q,r)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(a=p.return)&&a.call(p)}finally{if(i)throw i.error}}},e.prototype.verifyChildren=function(e){var Q,r;if(!this.parent||this.parent.isKind(\"mtable\")){if(!e.fixMtables)try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;if(!i.isKind(\"mtd\"))this.replaceChild(this.factory.create(\"mtr\"),i).mError(\"Children of \"+this.kind+\" must be mtd\",e,!0)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.prototype.verifyChildren.call(this,e)}else this.mError(this.kind+\" can only be a child of an mtable\",e,!0)},e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.defaults=n(n({},i.AbstractMmlNode.defaults),{rowalign:a.INHERIT,columnalign:a.INHERIT,groupalign:a.INHERIT}),e}(i.AbstractMmlNode);e.MmlMtr=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mlabeledtr\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),e}(l);e.MmlMlabeledtr=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtd=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtd\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.verifyChildren=function(e){!this.parent||this.parent.isKind(\"mtr\")?t.prototype.verifyChildren.call(this,e):this.mError(this.kind+\" can only be a child of an mtr or mlabeledtr\",e,!0)},e.prototype.setTeXclass=function(t){return this.getPrevClass(t),this.childNodes[0].setTeXclass(null),this},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{rowspan:1,columnspan:1,rowalign:i.INHERIT,columnalign:i.INHERIT,groupalign:i.INHERIT}),e}(o.AbstractMmlBaseNode);e.MmlMtd=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMglyph=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mglyph\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{alt:\"\",src:\"\",width:\"auto\",height:\"auto\",valign:\"0em\"}),e}(o.AbstractMmlTokenNode);e.MmlMglyph=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlAnnotation=e.MmlAnnotationXML=e.MmlSemantics=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"semantics\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{definitionUrl:null,encoding:null}),e}(o.AbstractMmlBaseNode);e.MmlSemantics=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"annotation-xml\"},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(){},e.defaults=n(n({},o.AbstractMmlNode.defaults),{definitionUrl:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}),e}(o.AbstractMmlNode);e.MmlAnnotationXML=a;var s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.properties={isChars:!0},e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"annotation\"},enumerable:!1,configurable:!0}),e.defaults=n({},a.defaults),e}(a);e.MmlAnnotation=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeXAtom=void 0;var o=Q(0),i=Q(31),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"TeXAtom\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return this.childNodes[0].setTeXclass(null),this.adjustTeXclass(t)},e.prototype.adjustTeXclass=function(t){return t},e.defaults=n({},o.AbstractMmlBaseNode.defaults),e}(o.AbstractMmlBaseNode);e.TeXAtom=a,a.prototype.adjustTeXclass=i.MmlMo.prototype.adjustTeXclass},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=void 0;var n=Q(57),o=function(t){function e(e){void 0===e&&(e=null);return e||(e=new n.MmlFactory),t.call(this,e)||this}return T(e,t),e.prototype.visitTextNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q]},e.prototype.visitXMLNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q]},e}(Q(119).AbstractVisitor);e.MmlVisitor=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SerializedMmlVisitor=e.toEntity=e.DATAMJX=void 0;var i=Q(82),a=Q(0),s=Q(38);e.DATAMJX=\"data-mjx-\",e.toEntity=function(t){return\"&#x\"+t.codePointAt(0).toString(16).toUpperCase()+\";\"};var l=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Q.prototype.visitTree=function(t){return this.visitNode(t,\"\")},Q.prototype.visitTextNode=function(t,e){return this.quoteHTML(t.getText())},Q.prototype.visitXMLNode=function(t,e){return e+t.getSerializedXML()},Q.prototype.visitInferredMrowNode=function(t,e){var Q,r,T=[];try{for(var o=n(t.childNodes),i=o.next();!i.done;i=o.next()){var a=i.value;T.push(this.visitNode(a,e))}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}return T.join(\"\\n\")},Q.prototype.visitTeXAtomNode=function(t,e){var Q=this.childNodeMml(t,e+\"  \",\"\\n\");return e+\"<mrow\"+this.getAttributes(t)+\">\"+(Q.match(/\\S/)?\"\\n\"+Q+e:\"\")+\"</mrow>\"},Q.prototype.visitAnnotationNode=function(t,e){return e+\"<annotation\"+this.getAttributes(t)+\">\"+this.childNodeMml(t,\"\",\"\")+\"</annotation>\"},Q.prototype.visitDefault=function(t,e){var Q=t.kind,r=o(t.isToken||0===t.childNodes.length?[\"\",\"\"]:[\"\\n\",e],2),T=r[0],n=r[1],i=this.childNodeMml(t,e+\"  \",T);return e+\"<\"+Q+this.getAttributes(t)+\">\"+(i.match(/\\S/)?T+i+n:\"\")+\"</\"+Q+\">\"},Q.prototype.childNodeMml=function(t,e,Q){var r,T,o=\"\";try{for(var i=n(t.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value;o+=this.visitNode(s,e)+Q}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o},Q.prototype.getAttributes=function(t){var e,Q,r=[],T=this.constructor.defaultAttributes[t.kind]||{},o=Object.assign({},T,this.getDataAttributes(t),t.attributes.getAllAttributes()),i=this.constructor.variants;o.hasOwnProperty(\"mathvariant\")&&i.hasOwnProperty(o.mathvariant)&&(o.mathvariant=i[o.mathvariant]);try{for(var a=n(Object.keys(o)),s=a.next();!s.done;s=a.next()){var l=s.value,c=String(o[l]);void 0!==c&&r.push(l+'=\"'+this.quoteHTML(c)+'\"')}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}return r.length?\" \"+r.join(\" \"):\"\"},Q.prototype.getDataAttributes=function(t){var e={},Q=t.attributes.getExplicit(\"mathvariant\"),r=this.constructor.variants;Q&&r.hasOwnProperty(Q)&&this.setDataAttribute(e,\"variant\",Q),t.getProperty(\"variantForm\")&&this.setDataAttribute(e,\"alternate\",\"1\");var T=t.getProperty(\"texClass\");if(void 0!==T){var n=!0;if(T===a.TEXCLASS.OP&&t.isKind(\"mi\")){var o=t.getText();n=!(o.length>1&&o.match(s.MmlMi.operatorName))}n&&this.setDataAttribute(e,\"texclass\",T<0?\"NONE\":a.TEXCLASSNAMES[T])}return e},Q.prototype.setDataAttribute=function(t,Q,r){t[e.DATAMJX+Q]=r},Q.prototype.quoteHTML=function(t){return t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\\\"/g,\"&quot;\").replace(/[\\uD800-\\uDBFF]./g,e.toEntity).replace(/[\\u0080-\\uD7FF\\uE000-\\uFFFF]/g,e.toEntity)},Q.variants={\"-tex-calligraphic\":\"script\",\"-tex-calligraphic-bold\":\"bold-script\",\"-tex-oldstyle\":\"normal\",\"-tex-oldstyle-bold\":\"bold\",\"-tex-mathit\":\"italic\"},Q.defaultAttributes={math:{xmlns:\"http://www.w3.org/1998/Math/MathML\"}},Q}(i.MmlVisitor);e.SerializedMmlVisitor=l},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Styles=void 0;var o=[\"top\",\"right\",\"bottom\",\"left\"],i=[\"width\",\"style\",\"color\"];function a(t){for(var e=t.split(/((?:'[^']*'|\"[^\"]*\"|,[\\s\\n]|[^\\s\\n])*)/g),Q=[];e.length>1;)e.shift(),Q.push(e.shift());return Q}function s(t){var e,Q,T=a(this.styles[t]);0===T.length&&T.push(\"\"),1===T.length&&T.push(T[0]),2===T.length&&T.push(T[0]),3===T.length&&T.push(T[1]);try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value;this.setStyle(this.childName(t,i),T.shift())}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}}function l(t){var e,Q,T=y.connect[t].children,n=[];try{for(var o=r(T),i=o.next();!i.done;i=o.next()){var a=i.value,s=this.styles[t+\"-\"+a];if(!s)return void delete this.styles[t];n.push(s)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}n[3]===n[1]&&(n.pop(),n[2]===n[0]&&(n.pop(),n[1]===n[0]&&n.pop())),this.styles[t]=n.join(\" \")}function c(t){var e,Q;try{for(var T=r(y.connect[t].children),n=T.next();!n.done;n=T.next()){var o=n.value;this.setStyle(this.childName(t,o),this.styles[t])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}function u(t){var e,Q,T=n(y.connect[t].children),o=this.styles[this.childName(t,T.shift())];try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;if(this.styles[this.childName(t,s)]!==o)return void delete this.styles[t]}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}this.styles[t]=o}var p=/^(?:[\\d.]+(?:[a-z]+)|thin|medium|thick|inherit|initial|unset)$/,h=/^(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|inherit|initial|unset)$/;function f(t){var e,Q,T,n,o={width:\"\",style:\"\",color:\"\"};try{for(var i=r(a(this.styles[t])),s=i.next();!s.done;s=i.next()){var l=s.value;l.match(p)&&\"\"===o.width?o.width=l:l.match(h)&&\"\"===o.style?o.style=l:o.color=l}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}try{for(var c=r(y.connect[t].children),u=c.next();!u.done;u=c.next()){var f=u.value;this.setStyle(this.childName(t,f),o[f])}}catch(t){T={error:t}}finally{try{u&&!u.done&&(n=c.return)&&n.call(c)}finally{if(T)throw T.error}}}function d(t){var e,Q,T=[];try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value,a=this.styles[this.childName(t,i)];a&&T.push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}T.length?this.styles[t]=T.join(\" \"):delete this.styles[t]}var L={style:/^(?:normal|italic|oblique|inherit|initial|unset)$/,variant:new RegExp(\"^(?:\"+[\"normal|none\",\"inherit|initial|unset\",\"common-ligatures|no-common-ligatures\",\"discretionary-ligatures|no-discretionary-ligatures\",\"historical-ligatures|no-historical-ligatures\",\"contextual|no-contextual\",\"(?:stylistic|character-variant|swash|ornaments|annotation)\\\\([^)]*\\\\)\",\"small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps\",\"lining-nums|oldstyle-nums|proportional-nums|tabular-nums\",\"diagonal-fractions|stacked-fractions\",\"ordinal|slashed-zero\",\"jis78|jis83|jis90|jis04|simplified|traditional\",\"full-width|proportional-width\",\"ruby\"].join(\"|\")+\")$\"),weight:/^(?:normal|bold|bolder|lighter|[1-9]00|inherit|initial|unset)$/,stretch:new RegExp(\"^(?:\"+[\"normal\",\"(?:(?:ultra|extra|semi)-)?condensed\",\"(?:(?:semi|extra|ulta)-)?expanded\",\"inherit|initial|unset\"].join(\"|\")+\")$\"),size:new RegExp(\"^(?:\"+[\"xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller\",\"[d.]+%|[d.]+[a-z]+\",\"inherit|initial|unset\"].join(\"|\")+\")(?:/(?:normal|[d.+](?:%|[a-z]+)?))?$\")};function H(t){var e,Q,n,o,i=a(this.styles[t]),s={style:\"\",variant:[],weight:\"\",stretch:\"\",size:\"\",family:\"\",\"line-height\":\"\"};try{for(var l=r(i),c=l.next();!c.done;c=l.next()){var u=c.value;s.family=u;try{for(var p=(n=void 0,r(Object.keys(L))),h=p.next();!h.done;h=p.next()){var f=h.value;if((Array.isArray(s[f])||\"\"===s[f])&&u.match(L[f]))if(\"size\"===f){var d=T(u.split(/\\//),2),H=d[0],m=d[1];s[f]=H,m&&(s[\"line-height\"]=m)}else\"\"===s.size&&(Array.isArray(s[f])?s[f].push(u):s[f]=u)}}catch(t){n={error:t}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(n)throw n.error}}}}catch(t){e={error:t}}finally{try{c&&!c.done&&(Q=l.return)&&Q.call(l)}finally{if(e)throw e.error}}!function(t,e){var Q,T;try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value,a=this.childName(t,i);if(Array.isArray(e[i])){var s=e[i];s.length&&(this.styles[a]=s.join(\" \"))}else\"\"!==e[i]&&(this.styles[a]=e[i])}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}}(t,s),delete this.styles[t]}function m(t){}var y=function(){function t(t){void 0===t&&(t=\"\"),this.parse(t)}return Object.defineProperty(t.prototype,\"cssText\",{get:function(){var t,e,Q=[];try{for(var T=r(Object.keys(this.styles)),n=T.next();!n.done;n=T.next()){var o=n.value,i=this.parentName(o);this.styles[i]||Q.push(o+\": \"+this.styles[o])}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q.join(\"; \")},enumerable:!1,configurable:!0}),t.prototype.set=function(e,Q){for(e=this.normalizeName(e),this.setStyle(e,Q),t.connect[e]&&!t.connect[e].combine&&(this.combineChildren(e),delete this.styles[e]);e.match(/-/)&&(e=this.parentName(e),t.connect[e]);)t.connect[e].combine.call(this,e)},t.prototype.get=function(t){return t=this.normalizeName(t),this.styles.hasOwnProperty(t)?this.styles[t]:\"\"},t.prototype.setStyle=function(e,Q){this.styles[e]=Q,t.connect[e]&&t.connect[e].children&&t.connect[e].split.call(this,e),\"\"===Q&&delete this.styles[e]},t.prototype.combineChildren=function(e){var Q,T,n=this.parentName(e);try{for(var o=r(t.connect[e].children),i=o.next();!i.done;i=o.next()){var a=i.value,s=this.childName(n,a);t.connect[s].combine.call(this,s)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}},t.prototype.parentName=function(t){var e=t.replace(/-[^-]*$/,\"\");return t===e?\"\":e},t.prototype.childName=function(e,Q){return Q.match(/-/)?Q:(t.connect[e]&&!t.connect[e].combine&&(Q+=e.replace(/.*-/,\"-\"),e=this.parentName(e)),e+\"-\"+Q)},t.prototype.normalizeName=function(t){return t.replace(/[A-Z]/g,(function(t){return\"-\"+t.toLowerCase()}))},t.prototype.parse=function(t){void 0===t&&(t=\"\");var e=this.constructor.pattern;this.styles={};for(var Q=t.replace(e.comment,\"\").split(e.style);Q.length>1;){var r=T(Q.splice(0,3),3),n=r[0],o=r[1],i=r[2];if(n.match(/[^\\s\\n]/))return;this.set(o,i)}},t.pattern={style:/([-a-z]+)[\\s\\n]*:[\\s\\n]*((?:'[^']*'|\"[^\"]*\"|\\n|.)*?)[\\s\\n]*(?:;|$)/g,comment:/\\/\\*[^]*?\\*\\//g},t.connect={padding:{children:o,split:s,combine:l},border:{children:o,split:c,combine:u},\"border-top\":{children:i,split:f,combine:d},\"border-right\":{children:i,split:f,combine:d},\"border-bottom\":{children:i,split:f,combine:d},\"border-left\":{children:i,split:f,combine:d},\"border-width\":{children:o,split:s,combine:null},\"border-style\":{children:o,split:s,combine:null},\"border-color\":{children:o,split:s,combine:null},font:{children:[\"style\",\"variant\",\"weight\",\"stretch\",\"line-height\",\"size\",\"family\"],split:H,combine:m}},t}();e.Styles=y},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(8),i=function(){function t(t,e,Q){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:Q},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,Q=[],i=0;i<arguments.length;i++)Q[i]=arguments[i];try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;if(l){var c=o.default.isNode(l)?this._factory.create(\"mml\",l):l;c.global=this.global;var u=T(this.stack.length?this.Top().checkItem(c):[null,!0],2),p=u[0],h=u[1];h&&(p?(this.Pop(),this.Push.apply(this,n(p))):(this.stack.push(c),c.env?(c.copyEnv&&Object.assign(c.env,this.env),this.env=c.env):c.env=this.env))}}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=i},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(131),i=Q(41),a=Q(7),s=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new i.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new o.default(t.items),this.itemFactory.configuration=this,a.defaultOptions.apply(void 0,T([this.options],e)),a.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var Q=this.nodeLists[t];Q||(Q=this.nodeLists[t]=[]),Q.push(e)},t.prototype.getList=function(t){var e,Q,r=this.nodeLists[t]||[],T=[];try{for(var o=n(r),i=o.next();!i.done;i=o.next()){var a=i.value;this.inTree(a)&&T.push(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}return this.nodeLists[t]=T,T},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var r=Q(2),T=Q(3),n=Q(9);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,Q){var r=t.GetArgument(Q).replace(/,/g,\" \"),T=t.GetBrackets(Q,\"\"),o=t.ParseArg(Q),i=n.default.keyvalOptions(T,e.ENCLOSE_OPTIONS);i.notation=r,t.Push(t.create(\"node\",\"menclose\",[o],i))},new T.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=r.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(5),T=Q(3),n=Q(16),o=Q(9),i=Q(44),a={NewCommand:function(t,e){var Q=o.default.trimSpaces(t.GetArgument(e)),T=t.GetBrackets(e),n=t.GetBrackets(e),s=t.GetArgument(e);if(\"\\\\\"===Q.charAt(0)&&(Q=Q.substr(1)),!Q.match(/^(.|[a-z]+)$/i))throw new r.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(T&&!(T=o.default.trimSpaces(T)).match(/^[0-9]+$/))throw new r.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);i.default.addMacro(t,Q,a.Macro,[s,T,n])},NewEnvironment:function(t,e){var Q=o.default.trimSpaces(t.GetArgument(e)),T=t.GetBrackets(e),n=t.GetBrackets(e),s=t.GetArgument(e),l=t.GetArgument(e);if(T&&!(T=o.default.trimSpaces(T)).match(/^[0-9]+$/))throw new r.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);i.default.addEnvironment(t,Q,a.BeginEnv,[!0,s,l,T,n])},MacroDef:function(t,e){var Q=i.default.GetCSname(t,e),r=i.default.GetTemplate(t,e,\"\\\\\"+Q),T=t.GetArgument(e);r instanceof Array?i.default.addMacro(t,Q,a.MacroWithTemplate,[T].concat(r)):i.default.addMacro(t,Q,a.Macro,[T,r])},Let:function(t,e){var Q=i.default.GetCSname(t,e),r=t.GetNext();\"=\"===r&&(t.i++,r=t.GetNext());var n=t.configuration.handlers;if(\"\\\\\"!==r){t.i++;var o=n.get(\"delimiter\").lookup(r);o?i.default.addDelimiter(t,\"\\\\\"+Q,o.char,o.attributes):i.default.addMacro(t,Q,a.Macro,[r])}else{e=i.default.GetCSname(t,e);var s=n.get(\"delimiter\").lookup(\"\\\\\"+e);if(s)return void i.default.addDelimiter(t,\"\\\\\"+Q,s.char,s.attributes);var l=n.get(\"macro\").applicable(e);if(!l)return;if(l instanceof T.MacroMap){var c=l.lookup(e);return void i.default.addMacro(t,Q,c.func,c.args,c.symbol)}s=l.lookup(e);var u=i.default.disassembleSymbol(Q,s);i.default.addMacro(t,Q,(function(t,e){for(var Q=[],r=2;r<arguments.length;r++)Q[r-2]=arguments[r];var T=i.default.assembleSymbol(Q);return l.parser(t,T)}),u)}},MacroWithTemplate:function(t,e,Q,T){for(var n=[],a=4;a<arguments.length;a++)n[a-4]=arguments[a];var s=parseInt(T,10);if(s){var l=[];if(t.GetNext(),n[0]&&!i.default.MatchParam(t,n[0]))throw new r.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var c=0;c<s;c++)l.push(i.default.GetParameter(t,e,n[c+1]));Q=o.default.substituteArgs(t,l,Q)}if(t.string=o.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new r.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,Q,r,T,n){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var i=t.string.slice(t.i);return t.string=r,t.i=0,t.Parse(),t.string=i,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(T){var a=[];if(null!=n){var s=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");a.push(null==s?n:s)}for(var l=a.length;l<T;l++)a.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));Q=o.default.substituteArgs(t,a,Q),r=o.default.substituteArgs(t,[],r)}return t.string=o.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};a.Macro=n.default.Macro,e.default=a},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var T=Q(2),n=Q(153),o=Q(44);Q(288);var i=Q(23),a=Q(3);e.NewcommandConfiguration=T.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(r={},r[n.BeginEnvItem.prototype.kind]=n.BeginEnvItem,r),options:{maxMacros:1e3},init:function(t){new a.DelimiterMap(o.default.NEW_DELIMITER,i.default.delimiter,{}),new a.CommandMap(o.default.NEW_COMMAND,{},{}),new a.EnvironmentMap(o.default.NEW_ENVIRONMENT,i.default.environment,{},{}),t.append(T.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var r=Q(12),T=Q(40),n=Q(16);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var Q,T,n=t.i,o=0;T=t.GetNext();)switch(Q=t.i++,T){case\"\\\\\":\")\"===t.GetCS()&&(T=\"\\\\(\");case\"$\":if(0===o&&e===T){var i=t.texParser.configuration,a=new r.default(t.string.substr(n,Q-n),t.stack.env,i).mml();return void t.PushMath(a)}break;case\"{\":o++;break;case\"}\":0===o&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),o--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var Q=t.stack.env;t.envStack.push(Q),t.stack.env=Object.assign({},Q)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,Q){t.text+=Q},Accent:function(t,e,Q){var r=t.ParseArg(name),T=t.create(\"token\",\"mo\",{},Q);t.addAttributes(T),t.Push(t.create(\"node\",\"mover\",[r,T]))},Emph:function(t,e){var Q=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:Q}))},SetFont:function(t,e,Q){t.saveText(),t.stack.env.mathvariant=Q},SetSize:function(t,e,Q){t.saveText(),t.stack.env.mathsize=Q},CheckAutoload:function(t,e){var Q=t.configuration.packageData.get(\"autoload\"),r=t.texParser;e=e.slice(1);var n=r.lookup(\"macro\",e);if(!n||Q&&n._func===Q.Autoload){if(r.parse(\"macro\",[r,e]),!n)return;T.retryAfter(Promise.resolve())}r.parse(\"macro\",[t,e])},Macro:n.default.Macro,Spacer:n.default.Spacer,Hskip:n.default.Hskip,rule:n.default.rule,Rule:n.default.Rule,HandleRef:n.default.HandleRef}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var o=Q(2),i=Q(3),a=Q(5),s=Q(1),l=Q(29),c=Q(11),u=Q(25),p=Q(7),h=s.MathJax.config;function f(t,e){var Q,T=t.parseOptions.options.require,n=t.parseOptions.packageData.get(\"require\").required,i=e.substr(T.prefix.length);if(n.indexOf(i)<0){n.push(i),function(t,e){var Q,T;void 0===e&&(e=[]);var n=t.parseOptions.options.require.prefix;try{for(var o=r(e),i=o.next();!i.done;i=o.next()){var a=i.value;a.substr(0,n.length)===n&&f(t,a)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}}(t,c.CONFIG.dependencies[e]);var a=o.ConfigurationHandler.get(i);if(a){var s=h[e]||{};a.options&&1===Object.keys(a.options).length&&a.options[i]&&((Q={})[i]=s,s=Q),t.configuration.add(a,t,s);var l=t.parseOptions.packageData.get(\"require\").configured;a.preprocessors.length&&!l.has(i)&&(l.set(i,!0),u.mathjax.retryAfter(Promise.resolve()))}}}function d(t,e){var Q=t.options.require,r=Q.allow,T=(\"[\"===e.substr(0,1)?\"\":Q.prefix)+e;if(!(r.hasOwnProperty(T)?r[T]:r.hasOwnProperty(e)?r[e]:Q.defaultAllow))throw new a.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',T);l.Package.packages.has(T)?f(t.configuration.packageData.get(\"require\").jax,T):u.mathjax.retryAfter(c.Loader.load(T))}e.RequireLoad=d,e.RequireMethods={Require:function(t,e){var Q=t.GetArgument(e);if(Q.match(/[^_a-zA-Z0-9]/)||\"\"===Q)throw new a.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);d(t,Q)}},e.options={require:{allow:p.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new i.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=o.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:n(e.options.packages),configured:new Map});var Q=e.parseOptions.options.require,r=Q.prefix;if(r.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");c.CONFIG.paths[r]||(c.CONFIG.paths[r]=\"[mathjax]/input/tex/extensions\"),Q.prefix=\"[\"+r+\"]/\"},options:e.options})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMactionMixin=e.TooltipData=void 0;var i=Q(15);e.TooltipData={dx:\".2em\",dy:\".1em\",postDelay:600,clearDelay:100,hoverTimer:new Map,clearTimer:new Map,stopTimers:function(t,e){e.clearTimer.has(t)&&(clearTimeout(e.clearTimer.get(t)),e.clearTimer.delete(t)),e.hoverTimer.has(t)&&(clearTimeout(e.hoverTimer.get(t)),e.hoverTimer.delete(t))}},e.CommonMactionMixin=function(t){return function(t){function Q(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.constructor.actions,i=r.node.attributes.get(\"actiontype\"),a=n(T.get(i)||[function(t,e){},{}],2),s=a[0],l=a[1];return r.action=s,r.data=l,r.getParameters(),r}return T(Q,t),Object.defineProperty(Q.prototype,\"selected\",{get:function(){var t=this.node.attributes.get(\"selection\"),e=Math.max(1,Math.min(this.childNodes.length,t))-1;return this.childNodes[e]||this.wrap(this.node.selected)},enumerable:!1,configurable:!0}),Q.prototype.getParameters=function(){var t=this.node.attributes.get(\"data-offsets\"),Q=n(i.split(t||\"\"),2),r=Q[0],T=Q[1];this.dx=this.length2em(r||e.TooltipData.dx),this.dy=this.length2em(T||e.TooltipData.dy)},Q.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.updateFrom(this.selected.getBBox()),this.selected.setChildPWidths(e)},Q}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonInferredMrowMixin=e.CommonMrowMixin=void 0;var a=Q(18);e.CommonMrowMixin=function(t){return function(t){function e(){for(var e,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];var n=t.apply(this,o(r))||this;n.stretchChildren();try{for(var s=i(n.childNodes),l=s.next();!l.done;l=s.next()){var c=l.value;if(c.bbox.pwidth){n.bbox.pwidth=a.BBox.fullWidth;break}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return n}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.stretchChildren=function(){var t,e,Q,r,T,n,o=[];try{for(var a=i(this.childNodes),s=a.next();!s.done;s=a.next()){(b=s.value).canStretch(1)&&o.push(b)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}var l=o.length,c=this.childNodes.length;if(l&&c>1){var u=0,p=0,h=l>1&&l===c;try{for(var f=i(this.childNodes),d=f.next();!d.done;d=f.next()){var L=0===(b=d.value).stretch.dir;if(h||L){var H=b.getBBox(L),m=H.h,y=H.d;m>u&&(u=m),y>p&&(p=y)}}}catch(t){Q={error:t}}finally{try{d&&!d.done&&(r=f.return)&&r.call(f)}finally{if(Q)throw Q.error}}try{for(var v=i(o),g=v.next();!g.done;g=v.next()){var b;(b=g.value).coreMO().getStretchedVariant([u,p])}}catch(t){T={error:t}}finally{try{g&&!g.done&&(n=v.return)&&n.call(v)}finally{if(T)throw T.error}}}},e}(t)},e.CommonInferredMrowMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getScale=function(){this.bbox.scale=this.parent.bbox.scale,this.bbox.rscale=1},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMlabeledtrMixin=e.CommonMtrMixin=void 0,e.CommonMtrMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"numCells\",{get:function(){return this.childNodes.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"labeled\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tableCells\",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),e.prototype.getChild=function(t){return this.childNodes[t]},e.prototype.getChildBBoxes=function(){return this.childNodes.map((function(t){return t.getBBox()}))},e.prototype.stretchChildren=function(t){var e,Q,r,T,o,i;void 0===t&&(t=null);var a=[],s=this.labeled?this.childNodes.slice(1):this.childNodes;try{for(var l=n(s),c=l.next();!c.done;c=l.next()){(V=c.value.childNodes[0]).canStretch(1)&&a.push(V)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(Q=l.return)&&Q.call(l)}finally{if(e)throw e.error}}var u=a.length,p=this.childNodes.length;if(u&&p>1){if(null===t){var h=0,f=0,d=u>1&&u===p;try{for(var L=n(s),H=L.next();!H.done;H=L.next()){var m=0===(V=H.value.childNodes[0]).stretch.dir;if(d||m){var y=V.getBBox(m),v=y.h,g=y.d;v>h&&(h=v),g>f&&(f=g)}}}catch(t){r={error:t}}finally{try{H&&!H.done&&(T=L.return)&&T.call(L)}finally{if(r)throw r.error}}t=[h,f]}try{for(var b=n(a),M=b.next();!M.done;M=b.next()){var V;(V=M.value).coreMO().getStretchedVariant(t)}}catch(t){o={error:t}}finally{try{M&&!M.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}}},e}(t)},e.CommonMlabeledtrMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"numCells\",{get:function(){return Math.max(0,this.childNodes.length-1)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"labeled\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tableCells\",{get:function(){return this.childNodes.slice(1)},enumerable:!1,configurable:!0}),e.prototype.getChild=function(t){return this.childNodes[t+1]},e.prototype.getChildBBoxes=function(){return this.childNodes.slice(1).map((function(t){return t.getBBox()}))},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmsqrt=void 0;var n=Q(4),o=Q(185),i=Q(66),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dx=0,e}return T(e,t),e.prototype.toSVG=function(t){var e=this.childNodes[this.surd],Q=this.childNodes[this.base],r=this.root?this.childNodes[this.root]:null,T=this.getBBox(),n=e.getBBox(),o=Q.getBBox(),i=this.getPQ(n)[1],a=this.font.params.rule_thickness*this.bbox.scale,s=o.h+i+a,l=this.standardSVGnode(t),c=this.adaptor.append(l,this.svg(\"g\"));this.addRoot(l,r,n,s),e.toSVG(l),e.place(this.dx,T.h-n.h-a),Q.toSVG(c),Q.place(this.dx+n.w,0),this.adaptor.append(l,this.svg(\"rect\",{width:this.fixed(o.w),height:this.fixed(a),x:this.fixed(this.dx+n.w),y:this.fixed(T.h-2*a)}))},e.prototype.addRoot=function(t,e,Q,r){},e.kind=i.MmlMsqrt.prototype.kind,e}(o.CommonMsqrtMixin(n.SVGWrapper));e.SVGmsqrt=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.browserAdaptor=void 0;var r=Q(105);e.browserAdaptor=function(){return new r.HTMLAdaptor(window)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var i=Q(54),a=Q(7),s=Q(129),l=Q(130),c=Q(8),u=Q(12),p=Q(5),h=Q(86),f=Q(20),d=Q(2);Q(42);var L=function(t){function e(Q){void 0===Q&&(Q={});var r=this,T=o(a.separateOptions(Q,e.OPTIONS,s.FindTeX.OPTIONS),3),n=T[0],i=T[1],c=T[2];(r=t.call(this,i)||this).findTeX=r.options.FindTeX||new s.FindTeX(c);var u=r.options.packages,p=r.configuration=e.configure(u),d=r._parseOptions=new h.default(p,[r.options,f.TagsFactory.OPTIONS]);return a.userOptions(d.options,n),p.config(r),e.tags(d,p),r.postFilters.add(l.default.cleanSubSup,-6),r.postFilters.add(l.default.setInherited,-5),r.postFilters.add(l.default.moveLimits,-4),r.postFilters.add(l.default.cleanStretchy,-3),r.postFilters.add(l.default.cleanAttributes,-2),r.postFilters.add(l.default.combineRelations,-1),r}return T(e,t),e.configure=function(t){var e=new d.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){f.TagsFactory.addTags(e.tags),f.TagsFactory.setDefault(t.options.tags),t.tags=f.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var Q,r=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{Q=new u.default(this.latex,{display:r,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof p.default))throw t;this.parseOptions.error=!0,Q=this.options.formatError(this,t)}return Q=this.parseOptions.nodeFactory.create(\"node\",\"math\",[Q]),r&&c.default.setAttribute(Q,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=Q,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=n(n({},i.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(i.AbstractInputJax);e.TeX=L},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,Q(42),Q(132),Q(133),Q(135),Q(137),Q(138),Q(139),Q(142),Q(145),Q(146),Q(150),Q(151),Q(87),Q(152),Q(154),Q(156),Q(89),Q(157),Q(158),Q(159),Q(162),Q(163),Q(165),Q(166),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuHandler=e.MenuMathDocumentMixin=e.MenuMathItemMixin=void 0;var s=Q(25),l=Q(14),c=Q(7),u=Q(268);function p(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addMenu=function(t,e){void 0===e&&(e=!1),this.state()>=l.STATE.CONTEXT_MENU||(this.isEscaped||!t.options.enableMenu&&!e||t.menu.addMenu(this),this.state(l.STATE.CONTEXT_MENU))},e.prototype.checkLoading=function(t){t.checkLoading()},e}(t)}function h(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this;r.menu=new r.options.MenuClass(r,r.options.menuOptions);var T=r.constructor.ProcessBits;return T.has(\"context-menu\")||T.allocate(\"context-menu\"),r.options.MathItem=p(r.options.MathItem),r}return T(e,t),e.prototype.addMenu=function(){var t,e;if(!this.processed.isSet(\"context-menu\")){try{for(var Q=a(this.math),r=Q.next();!r.done;r=Q.next()){r.value.addMenu(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"context-menu\")}return this},e.prototype.checkLoading=function(){this.menu.isLoading&&s.mathjax.retryAfter(this.menu.loadingPromise.catch((function(t){return console.log(t)})));var t=this.menu.settings;return t.collapsible&&(this.options.enableComplexity=!0,this.menu.checkComponent(\"a11y/complexity\")),t.explorer&&(this.options.enableEnrichment=!0,this.options.enableExplorer=!0,this.menu.checkComponent(\"a11y/explorer\")),this},e.prototype.state=function(e,Q){return void 0===Q&&(Q=!1),t.prototype.state.call(this,e,Q),e<l.STATE.CONTEXT_MENU&&this.processed.clear(\"context-menu\"),this},e.prototype.updateDocument=function(){return t.prototype.updateDocument.call(this),this.menu.menu.store.sort(),this},e}(t)).OPTIONS=n(n({},t.OPTIONS),{MenuClass:u.Menu,menuOptions:u.Menu.OPTIONS,enableMenu:!0,a11y:t.OPTIONS.a11y||c.expandable({}),renderActions:c.expandable(n(n({},t.OPTIONS.renderActions),{addMenu:[l.STATE.CONTEXT_MENU],checkLoading:[l.STATE.UNPROCESSED+1]}))}),e}l.newState(\"CONTEXT_MENU\",170),e.MenuMathItemMixin=p,e.MenuMathDocumentMixin=h,e.MenuHandler=function(t){return t.documentClass=h(t.documentClass),t}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AssistiveMmlHandler=e.AssistiveMmlMathDocumentMixin=e.AssistiveMmlMathItemMixin=e.LimitedMmlVisitor=void 0;var s=Q(14),l=Q(83),c=Q(7),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getAttributes=function(e){return t.prototype.getAttributes.call(this,e).replace(/ ?id=\".*?\"/,\"\")},e}(l.SerializedMmlVisitor);function p(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.assistiveMml=function(t,e){if(void 0===e&&(e=!1),!(this.state()>=s.STATE.ASSISTIVEMML)){if(!this.isEscaped&&(t.options.enableAssistiveMml||e)){var Q=t.adaptor,r=t.toMML(this.root).replace(/\\n */g,\"\").replace(/<!--.*?-->/g,\"\"),T=Q.firstChild(Q.body(Q.parse(r,\"text/html\"))),n=Q.node(\"mjx-assistive-mml\",{role:\"presentation\",unselectable:\"on\",display:this.display?\"block\":\"inline\"},[T]);Q.setAttribute(this.typesetRoot,\"role\",\"presentation\"),Q.setAttribute(Q.firstChild(this.typesetRoot),\"aria-hidden\",\"true\"),Q.setStyle(this.typesetRoot,\"position\",\"relative\"),Q.append(this.typesetRoot,n)}this.state(s.STATE.ASSISTIVEMML)}},e}(t)}function h(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this,T=r.constructor,n=T.ProcessBits;return n.has(\"assistive-mml\")||n.allocate(\"assistive-mml\"),r.visitor=new u(r.mmlFactory),r.options.MathItem=p(r.options.MathItem),\"addStyles\"in r&&r.addStyles(T.assistiveStyles),r}return T(e,t),e.prototype.toMML=function(t){return this.visitor.visitTree(t)},e.prototype.assistiveMml=function(){var t,e;if(!this.processed.isSet(\"assistive-mml\")){try{for(var Q=a(this.math),r=Q.next();!r.done;r=Q.next()){r.value.assistiveMml(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"assistive-mml\")}return this},e.prototype.state=function(e,Q){return void 0===Q&&(Q=!1),t.prototype.state.call(this,e,Q),e<s.STATE.ASSISTIVEMML&&this.processed.clear(\"assistive-mml\"),this},e}(t)).OPTIONS=n(n({},t.OPTIONS),{enableAssistiveMml:!0,renderActions:c.expandable(n(n({},t.OPTIONS.renderActions),{assistiveMml:[s.STATE.ASSISTIVEMML]}))}),e.assistiveStyles={\"mjx-assistive-mml\":{position:\"absolute !important\",top:\"0px\",left:\"0px\",clip:\"rect(1px, 1px, 1px, 1px)\",padding:\"1px 0px 0px 0px !important\",border:\"0px !important\",display:\"block !important\",width:\"auto !important\",overflow:\"hidden !important\",\"-webkit-touch-callout\":\"none\",\"-webkit-user-select\":\"none\",\"-khtml-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},'mjx-assistive-mml[display=\"block\"]':{width:\"100% !important\"}},e}e.LimitedMmlVisitor=u,s.newState(\"ASSISTIVEMML\",153),e.AssistiveMmlMathItemMixin=p,e.AssistiveMmlMathDocumentMixin=h,e.AssistiveMmlHandler=function(t){return t.documentClass=h(t.documentClass),t}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMenu=void 0;var o=Q(102),i=Q(36),a=Q(10),s=Q(103),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.className=a.HtmlClasses.CONTEXTMENU,e.role=\"menu\",e._items=[],e._baseMenu=null,e}return T(e,t),Object.defineProperty(e.prototype,\"baseMenu\",{get:function(){return this._baseMenu},set:function(t){this._baseMenu=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"items\",{get:function(){return this._items},set:function(t){this._items=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"pool\",{get:function(){return this.variablePool},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"focused\",{get:function(){return this._focused},set:function(t){if(this._focused!==t){this._focused||this.unfocus();var e=this._focused;this._focused=t,e&&e.unfocus()}},enumerable:!1,configurable:!0}),e.prototype.up=function(t){var e=this.items.filter((function(t){return t instanceof i.AbstractItem&&!t.isHidden()}));if(0!==e.length)if(this.focused){var Q=e.indexOf(this.focused);-1!==Q&&e[Q=Q?--Q:e.length-1].focus()}else e[e.length-1].focus()},e.prototype.down=function(t){var e=this.items.filter((function(t){return t instanceof i.AbstractItem&&!t.isHidden()}));if(0!==e.length)if(this.focused){var Q=e.indexOf(this.focused);-1!==Q&&e[Q=++Q===e.length?0:Q].focus()}else e[0].focus()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.generateMenu()},e.prototype.generateMenu=function(){var t,e,Q=this.html;Q.classList.add(a.HtmlClasses.MENU);try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(o.isHidden()){var i=o.html;i.parentNode&&i.parentNode.removeChild(i)}else Q.appendChild(o.html)}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.post=function(e,Q){this.variablePool.update(),t.prototype.post.call(this,e,Q)},e.prototype.unpostSubmenus=function(){var t,e,Q=this.items.filter((function(t){return t instanceof s.Submenu}));try{for(var r=n(Q),T=r.next();!T.done;T=r.next()){var o=T.value;o.submenu.unpost(),o!==this.focused&&o.unfocus()}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.unpostSubmenus(),this.focused=null},e.prototype.find=function(t){var e,Q;try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(\"rule\"!==o.type){if(o.id===t)return o;if(\"submenu\"===o.type){var i=o.submenu.find(t);if(i)return i}}}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return null},e}(o.AbstractPostable);e.AbstractMenu=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractPostable=void 0;var n=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.posted=!1,e}return T(e,t),e.prototype.isPosted=function(){return this.posted},e.prototype.post=function(t,e){this.posted||(void 0!==t&&void 0!==e&&this.html.setAttribute(\"style\",\"left: \"+t+\"px; top: \"+e+\"px;\"),this.display(),this.posted=!0)},e.prototype.unpost=function(){if(this.posted){var t=this.html;t.parentNode&&t.parentNode.removeChild(t),this.posted=!1}},e}(Q(274).MenuElement);e.AbstractPostable=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Submenu=void 0;var n=Q(36),o=Q(10),i=function(t){function e(e,Q,r){var T=t.call(this,e,\"submenu\",Q,r)||this;return T._submenu=null,T}return T(e,t),e.fromJson=function(t,e,Q){var r=e.content,T=e.menu,n=new this(Q,r,e.id),o=t.get(\"subMenu\")(t,T,n);return n.submenu=o,n},Object.defineProperty(e.prototype,\"submenu\",{get:function(){return this._submenu},set:function(t){this._submenu=t},enumerable:!1,configurable:!0}),e.prototype.mouseover=function(t){this.focus(),this.stop(t)},e.prototype.mouseout=function(t){this.stop(t)},e.prototype.unfocus=function(){if(this.submenu.isPosted()){if(this.menu.focused!==this)return t.prototype.unfocus.call(this),void this.menu.unpostSubmenus();this.html.setAttribute(\"tabindex\",\"-1\"),this.html.blur()}else t.prototype.unfocus.call(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.submenu.isPosted()||this.disabled||this.submenu.post()},e.prototype.executeAction=function(){this.submenu.isPosted()?this.submenu.unpost():this.submenu.post()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;this.span=document.createElement(\"span\"),this.span.textContent=\"\\u25ba\",this.span.classList.add(o.HtmlClasses.MENUARROW),e.appendChild(this.span),e.setAttribute(\"aria-haspopup\",\"true\")},e.prototype.left=function(e){this.submenu.isPosted()?this.submenu.unpost():t.prototype.left.call(this,e)},e.prototype.right=function(t){this.submenu.isPosted()?this.submenu.down(t):this.submenu.post()},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Submenu=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Info=void 0;var n=Q(300),o=Q(10),i=function(t){function e(e,Q,r){var T=t.call(this)||this;return T.title=e,T.signature=r,T.className=o.HtmlClasses.INFO,T.role=\"dialog\",T.contentDiv=T.generateContent(),T.close=T.generateClose(),T.content=Q||function(){return\"\"},T}return T(e,t),e.prototype.attachMenu=function(t){this.menu=t},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.appendChild(this.generateTitle()),e.appendChild(this.contentDiv),e.appendChild(this.generateSignature()),e.appendChild(this.close.html),e.setAttribute(\"tabindex\",\"0\")},e.prototype.post=function(){t.prototype.post.call(this);var e=document.documentElement,Q=this.html,r=window.innerHeight||e.clientHeight||e.scrollHeight||0,T=Math.floor(-Q.offsetWidth/2),n=Math.floor((r-Q.offsetHeight)/3);Q.setAttribute(\"style\",\"margin-left: \"+T+\"px; top: \"+n+\"px;\"),window.event instanceof MouseEvent&&Q.classList.add(o.HtmlClasses.MOUSEPOST),Q.focus()},e.prototype.display=function(){this.menu.registerWidget(this),this.contentDiv.innerHTML=this.content();var t=this.menu.html;t.parentNode&&t.parentNode.removeChild(t),this.menu.frame.appendChild(this.html)},e.prototype.click=function(t){},e.prototype.keydown=function(e){this.bubbleKey(),t.prototype.keydown.call(this,e)},e.prototype.escape=function(t){this.unpost()},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.html.classList.remove(o.HtmlClasses.MOUSEPOST),this.menu.unregisterWidget(this)},e.prototype.generateClose=function(){var t=new n.CloseButton(this),e=t.html;return e.classList.add(o.HtmlClasses.INFOCLOSE),e.setAttribute(\"aria-label\",\"Close Dialog Box\"),t},e.prototype.generateTitle=function(){var t=document.createElement(\"span\");return t.innerHTML=this.title,t.classList.add(o.HtmlClasses.INFOTITLE),t},e.prototype.generateContent=function(){var t=document.createElement(\"div\");return t.classList.add(o.HtmlClasses.INFOCONTENT),t.setAttribute(\"tabindex\",\"0\"),t},e.prototype.generateSignature=function(){var t=document.createElement(\"span\");return t.innerHTML=this.signature,t.classList.add(o.HtmlClasses.INFOSIGNATURE),t},e.prototype.toJson=function(){return{type:\"\"}},e}(Q(102).AbstractPostable);e.Info=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLAdaptor=void 0;var o=function(t){function e(e){var Q=t.call(this,e.document)||this;return Q.window=e,Q.parser=new e.DOMParser,Q}return T(e,t),e.prototype.parse=function(t,e){return void 0===e&&(e=\"text/html\"),this.parser.parseFromString(t,e)},e.prototype.create=function(t,e){return e?this.document.createElementNS(e,t):this.document.createElement(t)},e.prototype.text=function(t){return this.document.createTextNode(t)},e.prototype.head=function(t){return t.head},e.prototype.body=function(t){return t.body},e.prototype.root=function(t){return t.documentElement},e.prototype.doctype=function(t){return\"<!DOCTYPE \"+t.doctype.name+\">\"},e.prototype.tags=function(t,e,Q){void 0===Q&&(Q=null);var r=Q?t.getElementsByTagNameNS(Q,e):t.getElementsByTagName(e);return Array.from(r)},e.prototype.getElements=function(t,e){var Q,r,T=[];try{for(var o=n(t),i=o.next();!i.done;i=o.next()){var a=i.value;\"string\"==typeof a?T=T.concat(Array.from(this.document.querySelectorAll(a))):Array.isArray(a)||a instanceof this.window.NodeList||a instanceof this.window.HTMLCollection?T=T.concat(Array.from(a)):T.push(a)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}return T},e.prototype.contains=function(t,e){return t.contains(e)},e.prototype.parent=function(t){return t.parentNode},e.prototype.append=function(t,e){return t.appendChild(e)},e.prototype.insert=function(t,e){return this.parent(e).insertBefore(t,e)},e.prototype.remove=function(t){return this.parent(t).removeChild(t)},e.prototype.replace=function(t,e){return this.parent(e).replaceChild(t,e)},e.prototype.clone=function(t){return t.cloneNode(!0)},e.prototype.split=function(t,e){return t.splitText(e)},e.prototype.next=function(t){return t.nextSibling},e.prototype.previous=function(t){return t.previousSibling},e.prototype.firstChild=function(t){return t.firstChild},e.prototype.lastChild=function(t){return t.lastChild},e.prototype.childNodes=function(t){return Array.from(t.childNodes)},e.prototype.childNode=function(t,e){return t.childNodes[e]},e.prototype.kind=function(t){return t.nodeName.toLowerCase()},e.prototype.value=function(t){return t.nodeValue||\"\"},e.prototype.textContent=function(t){return t.textContent},e.prototype.innerHTML=function(t){return t.innerHTML},e.prototype.outerHTML=function(t){return t.outerHTML},e.prototype.setAttribute=function(t,e,Q,r){return void 0===r&&(r=null),r?(e=r.replace(/.*\\//,\"\")+\":\"+e.replace(/^.*:/,\"\"),t.setAttributeNS(r,e,Q)):t.setAttribute(e,Q)},e.prototype.getAttribute=function(t,e){return t.getAttribute(e)},e.prototype.removeAttribute=function(t,e){return t.removeAttribute(e)},e.prototype.hasAttribute=function(t,e){return t.hasAttribute(e)},e.prototype.allAttributes=function(t){return Array.from(t.attributes).map((function(t){return{name:t.name,value:t.value}}))},e.prototype.addClass=function(t,e){t.classList?t.classList.add(e):t.className=(t.className+\" \"+e).trim()},e.prototype.removeClass=function(t,e){t.classList?t.classList.remove(e):t.className=t.className.split(/ /).filter((function(t){return t!==e})).join(\" \")},e.prototype.hasClass=function(t,e){return t.classList?t.classList.contains(e):t.className.split(/ /).indexOf(e)>=0},e.prototype.setStyle=function(t,e,Q){t.style[e]=Q},e.prototype.getStyle=function(t,e){return t.style[e]},e.prototype.allStyles=function(t){return t.style.cssText},e.prototype.fontSize=function(t){var e=this.window.getComputedStyle(t);return parseFloat(e.fontSize)},e.prototype.fontFamily=function(t){return this.window.getComputedStyle(t).fontFamily||\"\"},e.prototype.nodeSize=function(t,e,Q){if(void 0===e&&(e=1),void 0===Q&&(Q=!1),Q&&t.getBBox){var r=t.getBBox();return[r.width/e,r.height/e]}return[t.offsetWidth/e,t.offsetHeight/e]},e.prototype.nodeBBox=function(t){var e=t.getBoundingClientRect();return{left:e.left,right:e.right,top:e.top,bottom:e.bottom}},e}(Q(106).AbstractDOMAdaptor);e.HTMLAdaptor=o},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractDOMAdaptor=void 0;var T=function(){function t(t){void 0===t&&(t=null),this.document=t}return t.prototype.node=function(t,e,Q,T){var n,o;void 0===e&&(e={}),void 0===Q&&(Q=[]);var i=this.create(t,T);this.setAttributes(i,e);try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;this.append(i,l)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return i},t.prototype.setAttributes=function(t,e){var Q,T,n,o,i,a;if(e.style&&\"string\"!=typeof e.style)try{for(var s=r(Object.keys(e.style)),l=s.next();!l.done;l=s.next()){var c=l.value;this.setStyle(t,c.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()})),e.style[c])}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(Q)throw Q.error}}if(e.properties)try{for(var u=r(Object.keys(e.properties)),p=u.next();!p.done;p=u.next()){t[c=p.value]=e.properties[c]}}catch(t){n={error:t}}finally{try{p&&!p.done&&(o=u.return)&&o.call(u)}finally{if(n)throw n.error}}try{for(var h=r(Object.keys(e)),f=h.next();!f.done;f=h.next()){\"style\"===(c=f.value)&&\"string\"!=typeof e.style||\"properties\"===c||this.setAttribute(t,c,e[c])}}catch(t){i={error:t}}finally{try{f&&!f.done&&(a=h.return)&&a.call(h)}finally{if(i)throw i.error}}},t.prototype.replace=function(t,e){return this.insert(t,e),this.remove(e),e},t.prototype.childNode=function(t,e){return this.childNodes(t)[e]},t.prototype.allClasses=function(t){var e=this.getAttribute(t,\"class\");return e?e.replace(/  +/g,\" \").replace(/^ /,\"\").replace(/ $/,\"\").split(/ /):[]},t}();e.AbstractDOMAdaptor=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=void 0;var r=Q(7),T=function(){function t(t){var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t)}return t.OPTIONS={},t}();e.AbstractFindMath=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractHandler=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(Q(53).AbstractMathDocument),o=function(){function t(t,e){void 0===e&&(e=5),this.documentClass=n,this.adaptor=t,this.priority=e}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.handlesDocument=function(t){return!1},t.prototype.create=function(t,e){return new this.documentClass(t,this.adaptor,e)},t.NAME=\"generic\",t}();e.AbstractHandler=o},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinkedList=e.ListItem=e.END=void 0,e.END=Symbol();var o=function(t){void 0===t&&(t=null),this.next=null,this.prev=null,this.data=t};e.ListItem=o;var i=function(){function t(){for(var t=[],Q=0;Q<arguments.length;Q++)t[Q]=arguments[Q];this.list=new o(e.END),this.list.next=this.list.prev=this.list,this.push.apply(this,T(t))}return t.prototype.toArray=function(){return Array.from(this)},t.prototype.isBefore=function(t,e){return t<e},t.prototype.push=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q),i=T.next();!i.done;i=T.next()){var a=i.value,s=new o(a);s.next=this.list,s.prev=this.list.prev,this.list.prev=s,s.prev.next=s}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return this},t.prototype.pop=function(){var t=this.list.prev;return t.data===e.END?null:(this.list.prev=t.prev,t.prev.next=this.list,t.next=t.prev=null,t.data)},t.prototype.unshift=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q.slice(0).reverse()),i=T.next();!i.done;i=T.next()){var a=i.value,s=new o(a);s.next=this.list.next,s.prev=this.list,this.list.next=s,s.next.prev=s}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return this},t.prototype.shift=function(){var t=this.list.next;return t.data===e.END?null:(this.list.next=t.next,t.next.prev=this.list,t.next=t.prev=null,t.data)},t.prototype.remove=function(){for(var t,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];var o=new Map;try{for(var i=n(r),a=i.next();!a.done;a=i.next()){var s=a.value;o.set(s,!0)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(t)throw t.error}}for(var l=this.list.next;l.data!==e.END;){var c=l.next;o.has(l.data)&&(l.prev.next=l.next,l.next.prev=l.prev,l.next=l.prev=null),l=c}},t.prototype.clear=function(){return this.list.next.prev=this.list.prev.next=null,this.list.next=this.list.prev=this.list,this},t.prototype[Symbol.iterator]=function(){var t=this.list;return{next:function(){return(t=t.next).data===e.END?{value:null,done:!0}:{value:t.data,done:!1}}}},t.prototype.reversed=function(){var t,Q=this.list;return(t={})[Symbol.iterator]=function(){return this},t.next=function(){return(Q=Q.prev).data===e.END?{value:null,done:!0}:{value:Q.data,done:!1}},t.toArray=function(){return Array.from(this)},t},t.prototype.insert=function(t,Q){void 0===Q&&(Q=null),null===Q&&(Q=this.isBefore.bind(this));for(var r=new o(t),T=this.list.next;T.data!==e.END&&Q(T.data,r.data);)T=T.next;return r.prev=T.prev,r.next=T,T.prev.next=T.prev=r,this},t.prototype.sort=function(e){var Q,r;void 0===e&&(e=null),null===e&&(e=this.isBefore.bind(this));var T=[];try{for(var o=n(this),i=o.next();!i.done;i=o.next()){var a=i.value;T.push(new t(a))}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}for(this.list.next=this.list.prev=this.list;T.length>1;){var s=T.shift(),l=T.shift();s.merge(l,e),T.push(s)}return T.length&&(this.list=T[0].list),this},t.prototype.merge=function(t,Q){var T,n,o,i,a;void 0===Q&&(Q=null),null===Q&&(Q=this.isBefore.bind(this));for(var s=this.list.next,l=t.list.next;s.data!==e.END&&l.data!==e.END;)Q(l.data,s.data)?(T=r([s,l],2),l.prev.next=T[0],s.prev.next=T[1],n=r([s.prev,l.prev],2),l.prev=n[0],s.prev=n[1],o=r([t.list,this.list],2),this.list.prev.next=o[0],t.list.prev.next=o[1],i=r([t.list.prev,this.list.prev],2),this.list.prev=i[0],t.list.prev=i[1],s=(a=r([l.next,s],2))[0],l=a[1]):s=s.next;return l.data!==e.END&&(this.list.prev.next=t.list.next,t.list.next.prev=this.list.prev,t.list.prev.next=this.list,this.list.prev=t.list.prev,t.list.next=t.list.prev=t.list),this},t}();e.LinkedList=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractNodeFactory=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.create=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.node[t](e,Q)},e}(Q(37).AbstractFactory);e.AbstractNodeFactory=n},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MML=void 0;var T=Q(0),n=Q(59),o=Q(38),i=Q(60),a=Q(31),s=Q(61),l=Q(62),c=Q(63),u=Q(64),p=Q(65),h=Q(66),f=Q(67),d=Q(113),L=Q(68),H=Q(69),m=Q(70),y=Q(71),v=Q(72),g=Q(73),b=Q(39),M=Q(74),V=Q(75),x=Q(76),O=Q(77),_=Q(78),S=Q(114),E=Q(115),C=Q(79),w=Q(80),A=Q(81),P=Q(116);e.MML=((r={})[n.MmlMath.prototype.kind]=n.MmlMath,r[o.MmlMi.prototype.kind]=o.MmlMi,r[i.MmlMn.prototype.kind]=i.MmlMn,r[a.MmlMo.prototype.kind]=a.MmlMo,r[s.MmlMtext.prototype.kind]=s.MmlMtext,r[l.MmlMspace.prototype.kind]=l.MmlMspace,r[c.MmlMs.prototype.kind]=c.MmlMs,r[u.MmlMrow.prototype.kind]=u.MmlMrow,r[u.MmlInferredMrow.prototype.kind]=u.MmlInferredMrow,r[p.MmlMfrac.prototype.kind]=p.MmlMfrac,r[h.MmlMsqrt.prototype.kind]=h.MmlMsqrt,r[f.MmlMroot.prototype.kind]=f.MmlMroot,r[d.MmlMstyle.prototype.kind]=d.MmlMstyle,r[L.MmlMerror.prototype.kind]=L.MmlMerror,r[H.MmlMpadded.prototype.kind]=H.MmlMpadded,r[m.MmlMphantom.prototype.kind]=m.MmlMphantom,r[y.MmlMfenced.prototype.kind]=y.MmlMfenced,r[v.MmlMenclose.prototype.kind]=v.MmlMenclose,r[g.MmlMaction.prototype.kind]=g.MmlMaction,r[b.MmlMsub.prototype.kind]=b.MmlMsub,r[b.MmlMsup.prototype.kind]=b.MmlMsup,r[b.MmlMsubsup.prototype.kind]=b.MmlMsubsup,r[M.MmlMunder.prototype.kind]=M.MmlMunder,r[M.MmlMover.prototype.kind]=M.MmlMover,r[M.MmlMunderover.prototype.kind]=M.MmlMunderover,r[V.MmlMmultiscripts.prototype.kind]=V.MmlMmultiscripts,r[V.MmlMprescripts.prototype.kind]=V.MmlMprescripts,r[V.MmlNone.prototype.kind]=V.MmlNone,r[x.MmlMtable.prototype.kind]=x.MmlMtable,r[O.MmlMlabeledtr.prototype.kind]=O.MmlMlabeledtr,r[O.MmlMtr.prototype.kind]=O.MmlMtr,r[_.MmlMtd.prototype.kind]=_.MmlMtd,r[S.MmlMaligngroup.prototype.kind]=S.MmlMaligngroup,r[E.MmlMalignmark.prototype.kind]=E.MmlMalignmark,r[C.MmlMglyph.prototype.kind]=C.MmlMglyph,r[w.MmlSemantics.prototype.kind]=w.MmlSemantics,r[w.MmlAnnotation.prototype.kind]=w.MmlAnnotation,r[w.MmlAnnotationXML.prototype.kind]=w.MmlAnnotationXML,r[A.TeXAtom.prototype.kind]=A.TeXAtom,r[P.MathChoice.prototype.kind]=P.MathChoice,r[T.TextNode.prototype.kind]=T.TextNode,r[T.XMLNode.prototype.kind]=T.XMLNode,r)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OPTABLE=e.MMLSPACING=e.RANGES=e.MO=e.OPDEF=void 0;var r=Q(0);function T(t,e,Q,T){return void 0===Q&&(Q=r.TEXCLASS.BIN),void 0===T&&(T=null),[t,e,Q,T]}e.OPDEF=T,e.MO={ORD:T(0,0,r.TEXCLASS.ORD),ORD11:T(1,1,r.TEXCLASS.ORD),ORD21:T(2,1,r.TEXCLASS.ORD),ORD02:T(0,2,r.TEXCLASS.ORD),ORD55:T(5,5,r.TEXCLASS.ORD),OP:T(1,2,r.TEXCLASS.OP,{largeop:!0,movablelimits:!0,symmetric:!0}),OPFIXED:T(1,2,r.TEXCLASS.OP,{largeop:!0,movablelimits:!0}),INTEGRAL:T(0,1,r.TEXCLASS.OP,{largeop:!0,symmetric:!0}),INTEGRAL2:T(1,2,r.TEXCLASS.OP,{largeop:!0,symmetric:!0}),BIN3:T(3,3,r.TEXCLASS.BIN),BIN4:T(4,4,r.TEXCLASS.BIN),BIN01:T(0,1,r.TEXCLASS.BIN),BIN5:T(5,5,r.TEXCLASS.BIN),TALLBIN:T(4,4,r.TEXCLASS.BIN,{stretchy:!0}),BINOP:T(4,4,r.TEXCLASS.BIN,{largeop:!0,movablelimits:!0}),REL:T(5,5,r.TEXCLASS.REL),REL1:T(1,1,r.TEXCLASS.REL,{stretchy:!0}),REL4:T(4,4,r.TEXCLASS.REL),RELSTRETCH:T(5,5,r.TEXCLASS.REL,{stretchy:!0}),RELACCENT:T(5,5,r.TEXCLASS.REL,{accent:!0}),WIDEREL:T(5,5,r.TEXCLASS.REL,{accent:!0,stretchy:!0}),OPEN:T(0,0,r.TEXCLASS.OPEN,{fence:!0,stretchy:!0,symmetric:!0}),CLOSE:T(0,0,r.TEXCLASS.CLOSE,{fence:!0,stretchy:!0,symmetric:!0}),INNER:T(0,0,r.TEXCLASS.INNER),PUNCT:T(0,3,r.TEXCLASS.PUNCT),ACCENT:T(0,0,r.TEXCLASS.ORD,{accent:!0}),WIDEACCENT:T(0,0,r.TEXCLASS.ORD,{accent:!0,stretchy:!0})},e.RANGES=[[32,127,r.TEXCLASS.REL,\"BasicLatin\"],[160,255,r.TEXCLASS.ORD,\"Latin1Supplement\"],[256,383,r.TEXCLASS.ORD,\"LatinExtendedA\"],[384,591,r.TEXCLASS.ORD,\"LatinExtendedB\"],[688,767,r.TEXCLASS.ORD,\"SpacingModLetters\"],[768,879,r.TEXCLASS.ORD,\"CombDiacritMarks\"],[880,1023,r.TEXCLASS.ORD,\"GreekAndCoptic\"],[7680,7935,r.TEXCLASS.ORD,\"LatinExtendedAdditional\"],[8192,8303,r.TEXCLASS.PUNCT,\"GeneralPunctuation\"],[8304,8351,r.TEXCLASS.ORD,\"SuperAndSubscripts\"],[8352,8399,r.TEXCLASS.ORD,\"Currency\"],[8400,8447,r.TEXCLASS.ORD,\"CombDiactForSymbols\"],[8448,8527,r.TEXCLASS.ORD,\"LetterlikeSymbols\"],[8528,8591,r.TEXCLASS.ORD,\"NumberForms\"],[8592,8703,r.TEXCLASS.REL,\"Arrows\"],[8704,8959,r.TEXCLASS.BIN,\"MathOperators\"],[8960,9215,r.TEXCLASS.ORD,\"MiscTechnical\"],[9312,9471,r.TEXCLASS.ORD,\"EnclosedAlphaNums\"],[9472,9631,r.TEXCLASS.ORD,\"BoxDrawing\"],[9632,9727,r.TEXCLASS.ORD,\"GeometricShapes\"],[9984,10175,r.TEXCLASS.ORD,\"Dingbats\"],[10176,10223,r.TEXCLASS.ORD,\"MiscMathSymbolsA\"],[10224,10239,r.TEXCLASS.REL,\"SupplementalArrowsA\"],[10496,10623,r.TEXCLASS.REL,\"SupplementalArrowsB\"],[10624,10751,r.TEXCLASS.ORD,\"MiscMathSymbolsB\"],[10752,11007,r.TEXCLASS.BIN,\"SuppMathOperators\"],[11008,11263,r.TEXCLASS.ORD,\"MiscSymbolsAndArrows\"],[119808,120831,r.TEXCLASS.ORD,\"MathAlphabets\"]],e.MMLSPACING=[[0,0],[1,2],[3,3],[4,4],[0,0],[0,0],[0,3]],e.OPTABLE={prefix:{\"(\":e.MO.OPEN,\"+\":e.MO.BIN01,\"-\":e.MO.BIN01,\"[\":e.MO.OPEN,\"{\":e.MO.OPEN,\"|\":e.MO.OPEN,\"||\":[0,0,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xac\":e.MO.ORD21,\"\\xb1\":e.MO.BIN01,\"\\u2016\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2018\":[0,0,r.TEXCLASS.OPEN,{fence:!0}],\"\\u201c\":[0,0,r.TEXCLASS.OPEN,{fence:!0}],\"\\u2145\":e.MO.ORD21,\"\\u2146\":T(2,0,r.TEXCLASS.ORD),\"\\u2200\":e.MO.ORD21,\"\\u2202\":e.MO.ORD21,\"\\u2203\":e.MO.ORD21,\"\\u2204\":e.MO.ORD21,\"\\u2207\":e.MO.ORD21,\"\\u220f\":e.MO.OP,\"\\u2210\":e.MO.OP,\"\\u2211\":e.MO.OP,\"\\u2212\":e.MO.BIN01,\"\\u2213\":e.MO.BIN01,\"\\u221a\":[1,1,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u221b\":e.MO.ORD11,\"\\u221c\":e.MO.ORD11,\"\\u2220\":e.MO.ORD,\"\\u2221\":e.MO.ORD,\"\\u2222\":e.MO.ORD,\"\\u222b\":e.MO.INTEGRAL,\"\\u222c\":e.MO.INTEGRAL,\"\\u222d\":e.MO.INTEGRAL,\"\\u222e\":e.MO.INTEGRAL,\"\\u222f\":e.MO.INTEGRAL,\"\\u2230\":e.MO.INTEGRAL,\"\\u2231\":e.MO.INTEGRAL,\"\\u2232\":e.MO.INTEGRAL,\"\\u2233\":e.MO.INTEGRAL,\"\\u22c0\":e.MO.OP,\"\\u22c1\":e.MO.OP,\"\\u22c2\":e.MO.OP,\"\\u22c3\":e.MO.OP,\"\\u2308\":e.MO.OPEN,\"\\u230a\":e.MO.OPEN,\"\\u2772\":e.MO.OPEN,\"\\u27e6\":e.MO.OPEN,\"\\u27e8\":e.MO.OPEN,\"\\u27ea\":e.MO.OPEN,\"\\u27ec\":e.MO.OPEN,\"\\u27ee\":e.MO.OPEN,\"\\u2980\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2983\":e.MO.OPEN,\"\\u2985\":e.MO.OPEN,\"\\u2987\":e.MO.OPEN,\"\\u2989\":e.MO.OPEN,\"\\u298b\":e.MO.OPEN,\"\\u298d\":e.MO.OPEN,\"\\u298f\":e.MO.OPEN,\"\\u2991\":e.MO.OPEN,\"\\u2993\":e.MO.OPEN,\"\\u2995\":e.MO.OPEN,\"\\u2997\":e.MO.OPEN,\"\\u29fc\":e.MO.OPEN,\"\\u2a00\":e.MO.OP,\"\\u2a01\":e.MO.OP,\"\\u2a02\":e.MO.OP,\"\\u2a03\":e.MO.OP,\"\\u2a04\":e.MO.OP,\"\\u2a05\":e.MO.OP,\"\\u2a06\":e.MO.OP,\"\\u2a07\":e.MO.OP,\"\\u2a08\":e.MO.OP,\"\\u2a09\":e.MO.OP,\"\\u2a0a\":e.MO.OP,\"\\u2a0b\":e.MO.INTEGRAL2,\"\\u2a0c\":e.MO.INTEGRAL,\"\\u2a0d\":e.MO.INTEGRAL2,\"\\u2a0e\":e.MO.INTEGRAL2,\"\\u2a0f\":e.MO.INTEGRAL2,\"\\u2a10\":e.MO.OP,\"\\u2a11\":e.MO.OP,\"\\u2a12\":e.MO.OP,\"\\u2a13\":e.MO.OP,\"\\u2a14\":e.MO.OP,\"\\u2a15\":e.MO.INTEGRAL2,\"\\u2a16\":e.MO.INTEGRAL2,\"\\u2a17\":e.MO.INTEGRAL2,\"\\u2a18\":e.MO.INTEGRAL2,\"\\u2a19\":e.MO.INTEGRAL2,\"\\u2a1a\":e.MO.INTEGRAL2,\"\\u2a1b\":e.MO.INTEGRAL2,\"\\u2a1c\":e.MO.INTEGRAL2,\"\\u2afc\":e.MO.OP,\"\\u2aff\":e.MO.OP},postfix:{\"!!\":T(1,0),\"!\":[1,0,r.TEXCLASS.CLOSE,null],\"&\":e.MO.ORD,\")\":e.MO.CLOSE,\"++\":T(0,0),\"--\":T(0,0),\"..\":T(0,0),\"...\":e.MO.ORD,\"'\":e.MO.ACCENT,\"]\":e.MO.CLOSE,\"^\":e.MO.WIDEACCENT,_:e.MO.WIDEACCENT,\"`\":e.MO.ACCENT,\"|\":e.MO.CLOSE,\"}\":e.MO.CLOSE,\"~\":e.MO.WIDEACCENT,\"||\":[0,0,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xa8\":e.MO.ACCENT,\"\\xaf\":e.MO.WIDEACCENT,\"\\xb0\":e.MO.ORD,\"\\xb4\":e.MO.ACCENT,\"\\xb8\":e.MO.ACCENT,\"\\u02c6\":e.MO.WIDEACCENT,\"\\u02c7\":e.MO.WIDEACCENT,\"\\u02c9\":e.MO.WIDEACCENT,\"\\u02ca\":e.MO.ACCENT,\"\\u02cb\":e.MO.ACCENT,\"\\u02cd\":e.MO.WIDEACCENT,\"\\u02d8\":e.MO.ACCENT,\"\\u02d9\":e.MO.ACCENT,\"\\u02da\":e.MO.ACCENT,\"\\u02dc\":e.MO.WIDEACCENT,\"\\u02dd\":e.MO.ACCENT,\"\\u02f7\":e.MO.WIDEACCENT,\"\\u0302\":e.MO.WIDEACCENT,\"\\u0311\":e.MO.ACCENT,\"\\u03f6\":e.MO.REL,\"\\u2016\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2019\":[0,0,r.TEXCLASS.CLOSE,{fence:!0}],\"\\u201d\":[0,0,r.TEXCLASS.CLOSE,{fence:!0}],\"\\u2032\":e.MO.ORD02,\"\\u203e\":e.MO.WIDEACCENT,\"\\u20db\":e.MO.ACCENT,\"\\u20dc\":e.MO.ACCENT,\"\\u2309\":e.MO.CLOSE,\"\\u230b\":e.MO.CLOSE,\"\\u23b4\":e.MO.WIDEACCENT,\"\\u23b5\":e.MO.WIDEACCENT,\"\\u23dc\":e.MO.WIDEACCENT,\"\\u23dd\":e.MO.WIDEACCENT,\"\\u23de\":e.MO.WIDEACCENT,\"\\u23df\":e.MO.WIDEACCENT,\"\\u23e0\":e.MO.WIDEACCENT,\"\\u23e1\":e.MO.WIDEACCENT,\"\\u25a0\":e.MO.BIN3,\"\\u25a1\":e.MO.BIN3,\"\\u25aa\":e.MO.BIN3,\"\\u25ab\":e.MO.BIN3,\"\\u25ad\":e.MO.BIN3,\"\\u25ae\":e.MO.BIN3,\"\\u25af\":e.MO.BIN3,\"\\u25b0\":e.MO.BIN3,\"\\u25b1\":e.MO.BIN3,\"\\u25b2\":e.MO.BIN4,\"\\u25b4\":e.MO.BIN4,\"\\u25b6\":e.MO.BIN4,\"\\u25b7\":e.MO.BIN4,\"\\u25b8\":e.MO.BIN4,\"\\u25bc\":e.MO.BIN4,\"\\u25be\":e.MO.BIN4,\"\\u25c0\":e.MO.BIN4,\"\\u25c1\":e.MO.BIN4,\"\\u25c2\":e.MO.BIN4,\"\\u25c4\":e.MO.BIN4,\"\\u25c5\":e.MO.BIN4,\"\\u25c6\":e.MO.BIN4,\"\\u25c7\":e.MO.BIN4,\"\\u25c8\":e.MO.BIN4,\"\\u25c9\":e.MO.BIN4,\"\\u25cc\":e.MO.BIN4,\"\\u25cd\":e.MO.BIN4,\"\\u25ce\":e.MO.BIN4,\"\\u25cf\":e.MO.BIN4,\"\\u25d6\":e.MO.BIN4,\"\\u25d7\":e.MO.BIN4,\"\\u25e6\":e.MO.BIN4,\"\\u266d\":e.MO.ORD02,\"\\u266e\":e.MO.ORD02,\"\\u266f\":e.MO.ORD02,\"\\u2773\":e.MO.CLOSE,\"\\u27e7\":e.MO.CLOSE,\"\\u27e9\":e.MO.CLOSE,\"\\u27eb\":e.MO.CLOSE,\"\\u27ed\":e.MO.CLOSE,\"\\u27ef\":e.MO.CLOSE,\"\\u2980\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2984\":e.MO.CLOSE,\"\\u2986\":e.MO.CLOSE,\"\\u2988\":e.MO.CLOSE,\"\\u298a\":e.MO.CLOSE,\"\\u298c\":e.MO.CLOSE,\"\\u298e\":e.MO.CLOSE,\"\\u2990\":e.MO.CLOSE,\"\\u2992\":e.MO.CLOSE,\"\\u2994\":e.MO.CLOSE,\"\\u2996\":e.MO.CLOSE,\"\\u2998\":e.MO.CLOSE,\"\\u29fd\":e.MO.CLOSE},infix:{\"!=\":e.MO.BIN4,\"#\":e.MO.ORD,$:e.MO.ORD,\"%\":[3,3,r.TEXCLASS.ORD,null],\"&&\":e.MO.BIN4,\"\":e.MO.ORD,\"*\":e.MO.BIN3,\"**\":T(1,1),\"*=\":e.MO.BIN4,\"+\":e.MO.BIN4,\"+=\":e.MO.BIN4,\",\":[0,3,r.TEXCLASS.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"-\":e.MO.BIN4,\"-=\":e.MO.BIN4,\"->\":e.MO.BIN5,\".\":[0,3,r.TEXCLASS.PUNCT,{separator:!0}],\"/\":e.MO.ORD11,\"//\":T(1,1),\"/=\":e.MO.BIN4,\":\":[1,2,r.TEXCLASS.REL,null],\":=\":e.MO.BIN4,\";\":[0,3,r.TEXCLASS.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"<\":e.MO.REL,\"<=\":e.MO.BIN5,\"<>\":T(1,1),\"=\":e.MO.REL,\"==\":e.MO.BIN4,\">\":e.MO.REL,\">=\":e.MO.BIN5,\"?\":[1,1,r.TEXCLASS.CLOSE,null],\"@\":e.MO.ORD11,\"\\\\\":e.MO.ORD,\"^\":e.MO.ORD11,_:e.MO.ORD11,\"|\":[2,2,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"||\":[2,2,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[2,2,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xb1\":e.MO.BIN4,\"\\xb7\":e.MO.BIN4,\"\\xd7\":e.MO.BIN4,\"\\xf7\":e.MO.BIN4,\"\\u02b9\":e.MO.ORD,\"\\u0300\":e.MO.ACCENT,\"\\u0301\":e.MO.ACCENT,\"\\u0303\":e.MO.WIDEACCENT,\"\\u0304\":e.MO.ACCENT,\"\\u0306\":e.MO.ACCENT,\"\\u0307\":e.MO.ACCENT,\"\\u0308\":e.MO.ACCENT,\"\\u030c\":e.MO.ACCENT,\"\\u0332\":e.MO.WIDEACCENT,\"\\u0338\":e.MO.REL4,\"\\u2015\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u2017\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u2020\":e.MO.BIN3,\"\\u2021\":e.MO.BIN3,\"\\u2022\":e.MO.BIN4,\"\\u2026\":e.MO.INNER,\"\\u2044\":e.MO.TALLBIN,\"\\u2061\":e.MO.ORD,\"\\u2062\":e.MO.ORD,\"\\u2063\":[0,0,r.TEXCLASS.ORD,{linebreakstyle:\"after\",separator:!0}],\"\\u2064\":e.MO.ORD,\"\\u20d7\":e.MO.ACCENT,\"\\u2111\":e.MO.ORD,\"\\u2113\":e.MO.ORD,\"\\u2118\":e.MO.ORD,\"\\u211c\":e.MO.ORD,\"\\u2190\":e.MO.WIDEREL,\"\\u2191\":e.MO.RELSTRETCH,\"\\u2192\":e.MO.WIDEREL,\"\\u2193\":e.MO.RELSTRETCH,\"\\u2194\":e.MO.WIDEREL,\"\\u2195\":e.MO.RELSTRETCH,\"\\u2196\":e.MO.RELSTRETCH,\"\\u2197\":e.MO.RELSTRETCH,\"\\u2198\":e.MO.RELSTRETCH,\"\\u2199\":e.MO.RELSTRETCH,\"\\u219a\":e.MO.RELACCENT,\"\\u219b\":e.MO.RELACCENT,\"\\u219c\":e.MO.WIDEREL,\"\\u219d\":e.MO.WIDEREL,\"\\u219e\":e.MO.WIDEREL,\"\\u219f\":e.MO.WIDEREL,\"\\u21a0\":e.MO.WIDEREL,\"\\u21a1\":e.MO.RELSTRETCH,\"\\u21a2\":e.MO.WIDEREL,\"\\u21a3\":e.MO.WIDEREL,\"\\u21a4\":e.MO.WIDEREL,\"\\u21a5\":e.MO.RELSTRETCH,\"\\u21a6\":e.MO.WIDEREL,\"\\u21a7\":e.MO.RELSTRETCH,\"\\u21a8\":e.MO.RELSTRETCH,\"\\u21a9\":e.MO.WIDEREL,\"\\u21aa\":e.MO.WIDEREL,\"\\u21ab\":e.MO.WIDEREL,\"\\u21ac\":e.MO.WIDEREL,\"\\u21ad\":e.MO.WIDEREL,\"\\u21ae\":e.MO.RELACCENT,\"\\u21af\":e.MO.RELSTRETCH,\"\\u21b0\":e.MO.RELSTRETCH,\"\\u21b1\":e.MO.RELSTRETCH,\"\\u21b2\":e.MO.RELSTRETCH,\"\\u21b3\":e.MO.RELSTRETCH,\"\\u21b4\":e.MO.RELSTRETCH,\"\\u21b5\":e.MO.RELSTRETCH,\"\\u21b6\":e.MO.RELACCENT,\"\\u21b7\":e.MO.RELACCENT,\"\\u21b8\":e.MO.REL,\"\\u21b9\":e.MO.WIDEREL,\"\\u21ba\":e.MO.REL,\"\\u21bb\":e.MO.REL,\"\\u21bc\":e.MO.WIDEREL,\"\\u21bd\":e.MO.WIDEREL,\"\\u21be\":e.MO.RELSTRETCH,\"\\u21bf\":e.MO.RELSTRETCH,\"\\u21c0\":e.MO.WIDEREL,\"\\u21c1\":e.MO.WIDEREL,\"\\u21c2\":e.MO.RELSTRETCH,\"\\u21c3\":e.MO.RELSTRETCH,\"\\u21c4\":e.MO.WIDEREL,\"\\u21c5\":e.MO.RELSTRETCH,\"\\u21c6\":e.MO.WIDEREL,\"\\u21c7\":e.MO.WIDEREL,\"\\u21c8\":e.MO.RELSTRETCH,\"\\u21c9\":e.MO.WIDEREL,\"\\u21ca\":e.MO.RELSTRETCH,\"\\u21cb\":e.MO.WIDEREL,\"\\u21cc\":e.MO.WIDEREL,\"\\u21cd\":e.MO.RELACCENT,\"\\u21ce\":e.MO.RELACCENT,\"\\u21cf\":e.MO.RELACCENT,\"\\u21d0\":e.MO.WIDEREL,\"\\u21d1\":e.MO.RELSTRETCH,\"\\u21d2\":e.MO.WIDEREL,\"\\u21d3\":e.MO.RELSTRETCH,\"\\u21d4\":e.MO.WIDEREL,\"\\u21d5\":e.MO.RELSTRETCH,\"\\u21d6\":e.MO.RELSTRETCH,\"\\u21d7\":e.MO.RELSTRETCH,\"\\u21d8\":e.MO.RELSTRETCH,\"\\u21d9\":e.MO.RELSTRETCH,\"\\u21da\":e.MO.WIDEREL,\"\\u21db\":e.MO.WIDEREL,\"\\u21dc\":e.MO.WIDEREL,\"\\u21dd\":e.MO.WIDEREL,\"\\u21de\":e.MO.REL,\"\\u21df\":e.MO.REL,\"\\u21e0\":e.MO.WIDEREL,\"\\u21e1\":e.MO.RELSTRETCH,\"\\u21e2\":e.MO.WIDEREL,\"\\u21e3\":e.MO.RELSTRETCH,\"\\u21e4\":e.MO.WIDEREL,\"\\u21e5\":e.MO.WIDEREL,\"\\u21e6\":e.MO.WIDEREL,\"\\u21e7\":e.MO.RELSTRETCH,\"\\u21e8\":e.MO.WIDEREL,\"\\u21e9\":e.MO.RELSTRETCH,\"\\u21ea\":e.MO.RELSTRETCH,\"\\u21eb\":e.MO.RELSTRETCH,\"\\u21ec\":e.MO.RELSTRETCH,\"\\u21ed\":e.MO.RELSTRETCH,\"\\u21ee\":e.MO.RELSTRETCH,\"\\u21ef\":e.MO.RELSTRETCH,\"\\u21f0\":e.MO.WIDEREL,\"\\u21f1\":e.MO.REL,\"\\u21f2\":e.MO.REL,\"\\u21f3\":e.MO.RELSTRETCH,\"\\u21f4\":e.MO.RELACCENT,\"\\u21f5\":e.MO.RELSTRETCH,\"\\u21f6\":e.MO.WIDEREL,\"\\u21f7\":e.MO.RELACCENT,\"\\u21f8\":e.MO.RELACCENT,\"\\u21f9\":e.MO.RELACCENT,\"\\u21fa\":e.MO.RELACCENT,\"\\u21fb\":e.MO.RELACCENT,\"\\u21fc\":e.MO.RELACCENT,\"\\u21fd\":e.MO.WIDEREL,\"\\u21fe\":e.MO.WIDEREL,\"\\u21ff\":e.MO.WIDEREL,\"\\u2201\":T(1,2,r.TEXCLASS.ORD),\"\\u2205\":e.MO.ORD,\"\\u2206\":e.MO.BIN3,\"\\u2208\":e.MO.REL,\"\\u2209\":e.MO.REL,\"\\u220a\":e.MO.REL,\"\\u220b\":e.MO.REL,\"\\u220c\":e.MO.REL,\"\\u220d\":e.MO.REL,\"\\u220e\":e.MO.BIN3,\"\\u2212\":e.MO.BIN4,\"\\u2213\":e.MO.BIN4,\"\\u2214\":e.MO.BIN4,\"\\u2215\":e.MO.TALLBIN,\"\\u2216\":e.MO.BIN4,\"\\u2217\":e.MO.BIN4,\"\\u2218\":e.MO.BIN4,\"\\u2219\":e.MO.BIN4,\"\\u221d\":e.MO.REL,\"\\u221e\":e.MO.ORD,\"\\u221f\":e.MO.REL,\"\\u2223\":e.MO.REL,\"\\u2224\":e.MO.REL,\"\\u2225\":e.MO.REL,\"\\u2226\":e.MO.REL,\"\\u2227\":e.MO.BIN4,\"\\u2228\":e.MO.BIN4,\"\\u2229\":e.MO.BIN4,\"\\u222a\":e.MO.BIN4,\"\\u2234\":e.MO.REL,\"\\u2235\":e.MO.REL,\"\\u2236\":e.MO.REL,\"\\u2237\":e.MO.REL,\"\\u2238\":e.MO.BIN4,\"\\u2239\":e.MO.REL,\"\\u223a\":e.MO.BIN4,\"\\u223b\":e.MO.REL,\"\\u223c\":e.MO.REL,\"\\u223d\":e.MO.REL,\"\\u223d\\u0331\":e.MO.BIN3,\"\\u223e\":e.MO.REL,\"\\u223f\":e.MO.BIN3,\"\\u2240\":e.MO.BIN4,\"\\u2241\":e.MO.REL,\"\\u2242\":e.MO.REL,\"\\u2242\\u0338\":e.MO.REL,\"\\u2243\":e.MO.REL,\"\\u2244\":e.MO.REL,\"\\u2245\":e.MO.REL,\"\\u2246\":e.MO.REL,\"\\u2247\":e.MO.REL,\"\\u2248\":e.MO.REL,\"\\u2249\":e.MO.REL,\"\\u224a\":e.MO.REL,\"\\u224b\":e.MO.REL,\"\\u224c\":e.MO.REL,\"\\u224d\":e.MO.REL,\"\\u224e\":e.MO.REL,\"\\u224e\\u0338\":e.MO.REL,\"\\u224f\":e.MO.REL,\"\\u224f\\u0338\":e.MO.REL,\"\\u2250\":e.MO.REL,\"\\u2251\":e.MO.REL,\"\\u2252\":e.MO.REL,\"\\u2253\":e.MO.REL,\"\\u2254\":e.MO.REL,\"\\u2255\":e.MO.REL,\"\\u2256\":e.MO.REL,\"\\u2257\":e.MO.REL,\"\\u2258\":e.MO.REL,\"\\u2259\":e.MO.REL,\"\\u225a\":e.MO.REL,\"\\u225c\":e.MO.REL,\"\\u225d\":e.MO.REL,\"\\u225e\":e.MO.REL,\"\\u225f\":e.MO.REL,\"\\u2260\":e.MO.REL,\"\\u2261\":e.MO.REL,\"\\u2262\":e.MO.REL,\"\\u2263\":e.MO.REL,\"\\u2264\":e.MO.REL,\"\\u2265\":e.MO.REL,\"\\u2266\":e.MO.REL,\"\\u2266\\u0338\":e.MO.REL,\"\\u2267\":e.MO.REL,\"\\u2268\":e.MO.REL,\"\\u2269\":e.MO.REL,\"\\u226a\":e.MO.REL,\"\\u226a\\u0338\":e.MO.REL,\"\\u226b\":e.MO.REL,\"\\u226b\\u0338\":e.MO.REL,\"\\u226c\":e.MO.REL,\"\\u226d\":e.MO.REL,\"\\u226e\":e.MO.REL,\"\\u226f\":e.MO.REL,\"\\u2270\":e.MO.REL,\"\\u2271\":e.MO.REL,\"\\u2272\":e.MO.REL,\"\\u2273\":e.MO.REL,\"\\u2274\":e.MO.REL,\"\\u2275\":e.MO.REL,\"\\u2276\":e.MO.REL,\"\\u2277\":e.MO.REL,\"\\u2278\":e.MO.REL,\"\\u2279\":e.MO.REL,\"\\u227a\":e.MO.REL,\"\\u227b\":e.MO.REL,\"\\u227c\":e.MO.REL,\"\\u227d\":e.MO.REL,\"\\u227e\":e.MO.REL,\"\\u227f\":e.MO.REL,\"\\u227f\\u0338\":e.MO.REL,\"\\u2280\":e.MO.REL,\"\\u2281\":e.MO.REL,\"\\u2282\":e.MO.REL,\"\\u2282\\u20d2\":e.MO.REL,\"\\u2283\":e.MO.REL,\"\\u2283\\u20d2\":e.MO.REL,\"\\u2284\":e.MO.REL,\"\\u2285\":e.MO.REL,\"\\u2286\":e.MO.REL,\"\\u2287\":e.MO.REL,\"\\u2288\":e.MO.REL,\"\\u2289\":e.MO.REL,\"\\u228a\":e.MO.REL,\"\\u228b\":e.MO.REL,\"\\u228c\":e.MO.BIN4,\"\\u228d\":e.MO.BIN4,\"\\u228e\":e.MO.BIN4,\"\\u228f\":e.MO.REL,\"\\u228f\\u0338\":e.MO.REL,\"\\u2290\":e.MO.REL,\"\\u2290\\u0338\":e.MO.REL,\"\\u2291\":e.MO.REL,\"\\u2292\":e.MO.REL,\"\\u2293\":e.MO.BIN4,\"\\u2294\":e.MO.BIN4,\"\\u2295\":e.MO.BIN4,\"\\u2296\":e.MO.BIN4,\"\\u2297\":e.MO.BIN4,\"\\u2298\":e.MO.BIN4,\"\\u2299\":e.MO.BIN4,\"\\u229a\":e.MO.BIN4,\"\\u229b\":e.MO.BIN4,\"\\u229c\":e.MO.BIN4,\"\\u229d\":e.MO.BIN4,\"\\u229e\":e.MO.BIN4,\"\\u229f\":e.MO.BIN4,\"\\u22a0\":e.MO.BIN4,\"\\u22a1\":e.MO.BIN4,\"\\u22a2\":e.MO.REL,\"\\u22a3\":e.MO.REL,\"\\u22a4\":e.MO.ORD55,\"\\u22a5\":e.MO.REL,\"\\u22a6\":e.MO.REL,\"\\u22a7\":e.MO.REL,\"\\u22a8\":e.MO.REL,\"\\u22a9\":e.MO.REL,\"\\u22aa\":e.MO.REL,\"\\u22ab\":e.MO.REL,\"\\u22ac\":e.MO.REL,\"\\u22ad\":e.MO.REL,\"\\u22ae\":e.MO.REL,\"\\u22af\":e.MO.REL,\"\\u22b0\":e.MO.REL,\"\\u22b1\":e.MO.REL,\"\\u22b2\":e.MO.REL,\"\\u22b3\":e.MO.REL,\"\\u22b4\":e.MO.REL,\"\\u22b5\":e.MO.REL,\"\\u22b6\":e.MO.REL,\"\\u22b7\":e.MO.REL,\"\\u22b8\":e.MO.REL,\"\\u22b9\":e.MO.REL,\"\\u22ba\":e.MO.BIN4,\"\\u22bb\":e.MO.BIN4,\"\\u22bc\":e.MO.BIN4,\"\\u22bd\":e.MO.BIN4,\"\\u22be\":e.MO.BIN3,\"\\u22bf\":e.MO.BIN3,\"\\u22c4\":e.MO.BIN4,\"\\u22c5\":e.MO.BIN4,\"\\u22c6\":e.MO.BIN4,\"\\u22c7\":e.MO.BIN4,\"\\u22c8\":e.MO.REL,\"\\u22c9\":e.MO.BIN4,\"\\u22ca\":e.MO.BIN4,\"\\u22cb\":e.MO.BIN4,\"\\u22cc\":e.MO.BIN4,\"\\u22cd\":e.MO.REL,\"\\u22ce\":e.MO.BIN4,\"\\u22cf\":e.MO.BIN4,\"\\u22d0\":e.MO.REL,\"\\u22d1\":e.MO.REL,\"\\u22d2\":e.MO.BIN4,\"\\u22d3\":e.MO.BIN4,\"\\u22d4\":e.MO.REL,\"\\u22d5\":e.MO.REL,\"\\u22d6\":e.MO.REL,\"\\u22d7\":e.MO.REL,\"\\u22d8\":e.MO.REL,\"\\u22d9\":e.MO.REL,\"\\u22da\":e.MO.REL,\"\\u22db\":e.MO.REL,\"\\u22dc\":e.MO.REL,\"\\u22dd\":e.MO.REL,\"\\u22de\":e.MO.REL,\"\\u22df\":e.MO.REL,\"\\u22e0\":e.MO.REL,\"\\u22e1\":e.MO.REL,\"\\u22e2\":e.MO.REL,\"\\u22e3\":e.MO.REL,\"\\u22e4\":e.MO.REL,\"\\u22e5\":e.MO.REL,\"\\u22e6\":e.MO.REL,\"\\u22e7\":e.MO.REL,\"\\u22e8\":e.MO.REL,\"\\u22e9\":e.MO.REL,\"\\u22ea\":e.MO.REL,\"\\u22eb\":e.MO.REL,\"\\u22ec\":e.MO.REL,\"\\u22ed\":e.MO.REL,\"\\u22ee\":e.MO.ORD55,\"\\u22ef\":e.MO.INNER,\"\\u22f0\":e.MO.REL,\"\\u22f1\":[5,5,r.TEXCLASS.INNER,null],\"\\u22f2\":e.MO.REL,\"\\u22f3\":e.MO.REL,\"\\u22f4\":e.MO.REL,\"\\u22f5\":e.MO.REL,\"\\u22f6\":e.MO.REL,\"\\u22f7\":e.MO.REL,\"\\u22f8\":e.MO.REL,\"\\u22f9\":e.MO.REL,\"\\u22fa\":e.MO.REL,\"\\u22fb\":e.MO.REL,\"\\u22fc\":e.MO.REL,\"\\u22fd\":e.MO.REL,\"\\u22fe\":e.MO.REL,\"\\u22ff\":e.MO.REL,\"\\u2305\":e.MO.BIN3,\"\\u2306\":e.MO.BIN3,\"\\u2322\":e.MO.REL4,\"\\u2323\":e.MO.REL4,\"\\u2329\":e.MO.OPEN,\"\\u232a\":e.MO.CLOSE,\"\\u23aa\":e.MO.ORD,\"\\u23af\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u23b0\":e.MO.OPEN,\"\\u23b1\":e.MO.CLOSE,\"\\u2500\":e.MO.ORD,\"\\u25b3\":e.MO.BIN4,\"\\u25b5\":e.MO.BIN4,\"\\u25b9\":e.MO.BIN4,\"\\u25bd\":e.MO.BIN4,\"\\u25bf\":e.MO.BIN4,\"\\u25c3\":e.MO.BIN4,\"\\u25ef\":e.MO.BIN3,\"\\u2660\":e.MO.ORD,\"\\u2661\":e.MO.ORD,\"\\u2662\":e.MO.ORD,\"\\u2663\":e.MO.ORD,\"\\u2758\":e.MO.REL,\"\\u27f0\":e.MO.RELSTRETCH,\"\\u27f1\":e.MO.RELSTRETCH,\"\\u27f5\":e.MO.WIDEREL,\"\\u27f6\":e.MO.WIDEREL,\"\\u27f7\":e.MO.WIDEREL,\"\\u27f8\":e.MO.WIDEREL,\"\\u27f9\":e.MO.WIDEREL,\"\\u27fa\":e.MO.WIDEREL,\"\\u27fb\":e.MO.WIDEREL,\"\\u27fc\":e.MO.WIDEREL,\"\\u27fd\":e.MO.WIDEREL,\"\\u27fe\":e.MO.WIDEREL,\"\\u27ff\":e.MO.WIDEREL,\"\\u2900\":e.MO.RELACCENT,\"\\u2901\":e.MO.RELACCENT,\"\\u2902\":e.MO.RELACCENT,\"\\u2903\":e.MO.RELACCENT,\"\\u2904\":e.MO.RELACCENT,\"\\u2905\":e.MO.RELACCENT,\"\\u2906\":e.MO.RELACCENT,\"\\u2907\":e.MO.RELACCENT,\"\\u2908\":e.MO.REL,\"\\u2909\":e.MO.REL,\"\\u290a\":e.MO.RELSTRETCH,\"\\u290b\":e.MO.RELSTRETCH,\"\\u290c\":e.MO.WIDEREL,\"\\u290d\":e.MO.WIDEREL,\"\\u290e\":e.MO.WIDEREL,\"\\u290f\":e.MO.WIDEREL,\"\\u2910\":e.MO.WIDEREL,\"\\u2911\":e.MO.RELACCENT,\"\\u2912\":e.MO.RELSTRETCH,\"\\u2913\":e.MO.RELSTRETCH,\"\\u2914\":e.MO.RELACCENT,\"\\u2915\":e.MO.RELACCENT,\"\\u2916\":e.MO.RELACCENT,\"\\u2917\":e.MO.RELACCENT,\"\\u2918\":e.MO.RELACCENT,\"\\u2919\":e.MO.RELACCENT,\"\\u291a\":e.MO.RELACCENT,\"\\u291b\":e.MO.RELACCENT,\"\\u291c\":e.MO.RELACCENT,\"\\u291d\":e.MO.RELACCENT,\"\\u291e\":e.MO.RELACCENT,\"\\u291f\":e.MO.RELACCENT,\"\\u2920\":e.MO.RELACCENT,\"\\u2921\":e.MO.RELSTRETCH,\"\\u2922\":e.MO.RELSTRETCH,\"\\u2923\":e.MO.REL,\"\\u2924\":e.MO.REL,\"\\u2925\":e.MO.REL,\"\\u2926\":e.MO.REL,\"\\u2927\":e.MO.REL,\"\\u2928\":e.MO.REL,\"\\u2929\":e.MO.REL,\"\\u292a\":e.MO.REL,\"\\u292b\":e.MO.REL,\"\\u292c\":e.MO.REL,\"\\u292d\":e.MO.REL,\"\\u292e\":e.MO.REL,\"\\u292f\":e.MO.REL,\"\\u2930\":e.MO.REL,\"\\u2931\":e.MO.REL,\"\\u2932\":e.MO.REL,\"\\u2933\":e.MO.RELACCENT,\"\\u2934\":e.MO.REL,\"\\u2935\":e.MO.REL,\"\\u2936\":e.MO.REL,\"\\u2937\":e.MO.REL,\"\\u2938\":e.MO.REL,\"\\u2939\":e.MO.REL,\"\\u293a\":e.MO.RELACCENT,\"\\u293b\":e.MO.RELACCENT,\"\\u293c\":e.MO.RELACCENT,\"\\u293d\":e.MO.RELACCENT,\"\\u293e\":e.MO.REL,\"\\u293f\":e.MO.REL,\"\\u2940\":e.MO.REL,\"\\u2941\":e.MO.REL,\"\\u2942\":e.MO.RELACCENT,\"\\u2943\":e.MO.RELACCENT,\"\\u2944\":e.MO.RELACCENT,\"\\u2945\":e.MO.RELACCENT,\"\\u2946\":e.MO.RELACCENT,\"\\u2947\":e.MO.RELACCENT,\"\\u2948\":e.MO.RELACCENT,\"\\u2949\":e.MO.REL,\"\\u294a\":e.MO.RELACCENT,\"\\u294b\":e.MO.RELACCENT,\"\\u294c\":e.MO.REL,\"\\u294d\":e.MO.REL,\"\\u294e\":e.MO.WIDEREL,\"\\u294f\":e.MO.RELSTRETCH,\"\\u2950\":e.MO.WIDEREL,\"\\u2951\":e.MO.RELSTRETCH,\"\\u2952\":e.MO.WIDEREL,\"\\u2953\":e.MO.WIDEREL,\"\\u2954\":e.MO.RELSTRETCH,\"\\u2955\":e.MO.RELSTRETCH,\"\\u2956\":e.MO.RELSTRETCH,\"\\u2957\":e.MO.RELSTRETCH,\"\\u2958\":e.MO.RELSTRETCH,\"\\u2959\":e.MO.RELSTRETCH,\"\\u295a\":e.MO.WIDEREL,\"\\u295b\":e.MO.WIDEREL,\"\\u295c\":e.MO.RELSTRETCH,\"\\u295d\":e.MO.RELSTRETCH,\"\\u295e\":e.MO.WIDEREL,\"\\u295f\":e.MO.WIDEREL,\"\\u2960\":e.MO.RELSTRETCH,\"\\u2961\":e.MO.RELSTRETCH,\"\\u2962\":e.MO.RELACCENT,\"\\u2963\":e.MO.REL,\"\\u2964\":e.MO.RELACCENT,\"\\u2965\":e.MO.REL,\"\\u2966\":e.MO.RELACCENT,\"\\u2967\":e.MO.RELACCENT,\"\\u2968\":e.MO.RELACCENT,\"\\u2969\":e.MO.RELACCENT,\"\\u296a\":e.MO.RELACCENT,\"\\u296b\":e.MO.RELACCENT,\"\\u296c\":e.MO.RELACCENT,\"\\u296d\":e.MO.RELACCENT,\"\\u296e\":e.MO.RELSTRETCH,\"\\u296f\":e.MO.RELSTRETCH,\"\\u2970\":e.MO.RELACCENT,\"\\u2971\":e.MO.RELACCENT,\"\\u2972\":e.MO.RELACCENT,\"\\u2973\":e.MO.RELACCENT,\"\\u2974\":e.MO.RELACCENT,\"\\u2975\":e.MO.RELACCENT,\"\\u2976\":e.MO.RELACCENT,\"\\u2977\":e.MO.RELACCENT,\"\\u2978\":e.MO.RELACCENT,\"\\u2979\":e.MO.RELACCENT,\"\\u297a\":e.MO.RELACCENT,\"\\u297b\":e.MO.RELACCENT,\"\\u297c\":e.MO.RELACCENT,\"\\u297d\":e.MO.RELACCENT,\"\\u297e\":e.MO.REL,\"\\u297f\":e.MO.REL,\"\\u2981\":e.MO.BIN3,\"\\u2982\":e.MO.BIN3,\"\\u2999\":e.MO.BIN3,\"\\u299a\":e.MO.BIN3,\"\\u299b\":e.MO.BIN3,\"\\u299c\":e.MO.BIN3,\"\\u299d\":e.MO.BIN3,\"\\u299e\":e.MO.BIN3,\"\\u299f\":e.MO.BIN3,\"\\u29a0\":e.MO.BIN3,\"\\u29a1\":e.MO.BIN3,\"\\u29a2\":e.MO.BIN3,\"\\u29a3\":e.MO.BIN3,\"\\u29a4\":e.MO.BIN3,\"\\u29a5\":e.MO.BIN3,\"\\u29a6\":e.MO.BIN3,\"\\u29a7\":e.MO.BIN3,\"\\u29a8\":e.MO.BIN3,\"\\u29a9\":e.MO.BIN3,\"\\u29aa\":e.MO.BIN3,\"\\u29ab\":e.MO.BIN3,\"\\u29ac\":e.MO.BIN3,\"\\u29ad\":e.MO.BIN3,\"\\u29ae\":e.MO.BIN3,\"\\u29af\":e.MO.BIN3,\"\\u29b0\":e.MO.BIN3,\"\\u29b1\":e.MO.BIN3,\"\\u29b2\":e.MO.BIN3,\"\\u29b3\":e.MO.BIN3,\"\\u29b4\":e.MO.BIN3,\"\\u29b5\":e.MO.BIN3,\"\\u29b6\":e.MO.BIN4,\"\\u29b7\":e.MO.BIN4,\"\\u29b8\":e.MO.BIN4,\"\\u29b9\":e.MO.BIN4,\"\\u29ba\":e.MO.BIN4,\"\\u29bb\":e.MO.BIN4,\"\\u29bc\":e.MO.BIN4,\"\\u29bd\":e.MO.BIN4,\"\\u29be\":e.MO.BIN4,\"\\u29bf\":e.MO.BIN4,\"\\u29c0\":e.MO.REL,\"\\u29c1\":e.MO.REL,\"\\u29c2\":e.MO.BIN3,\"\\u29c3\":e.MO.BIN3,\"\\u29c4\":e.MO.BIN4,\"\\u29c5\":e.MO.BIN4,\"\\u29c6\":e.MO.BIN4,\"\\u29c7\":e.MO.BIN4,\"\\u29c8\":e.MO.BIN4,\"\\u29c9\":e.MO.BIN3,\"\\u29ca\":e.MO.BIN3,\"\\u29cb\":e.MO.BIN3,\"\\u29cc\":e.MO.BIN3,\"\\u29cd\":e.MO.BIN3,\"\\u29ce\":e.MO.REL,\"\\u29cf\":e.MO.REL,\"\\u29cf\\u0338\":e.MO.REL,\"\\u29d0\":e.MO.REL,\"\\u29d0\\u0338\":e.MO.REL,\"\\u29d1\":e.MO.REL,\"\\u29d2\":e.MO.REL,\"\\u29d3\":e.MO.REL,\"\\u29d4\":e.MO.REL,\"\\u29d5\":e.MO.REL,\"\\u29d6\":e.MO.BIN4,\"\\u29d7\":e.MO.BIN4,\"\\u29d8\":e.MO.BIN3,\"\\u29d9\":e.MO.BIN3,\"\\u29db\":e.MO.BIN3,\"\\u29dc\":e.MO.BIN3,\"\\u29dd\":e.MO.BIN3,\"\\u29de\":e.MO.REL,\"\\u29df\":e.MO.BIN3,\"\\u29e0\":e.MO.BIN3,\"\\u29e1\":e.MO.REL,\"\\u29e2\":e.MO.BIN4,\"\\u29e3\":e.MO.REL,\"\\u29e4\":e.MO.REL,\"\\u29e5\":e.MO.REL,\"\\u29e6\":e.MO.REL,\"\\u29e7\":e.MO.BIN3,\"\\u29e8\":e.MO.BIN3,\"\\u29e9\":e.MO.BIN3,\"\\u29ea\":e.MO.BIN3,\"\\u29eb\":e.MO.BIN3,\"\\u29ec\":e.MO.BIN3,\"\\u29ed\":e.MO.BIN3,\"\\u29ee\":e.MO.BIN3,\"\\u29ef\":e.MO.BIN3,\"\\u29f0\":e.MO.BIN3,\"\\u29f1\":e.MO.BIN3,\"\\u29f2\":e.MO.BIN3,\"\\u29f3\":e.MO.BIN3,\"\\u29f4\":e.MO.REL,\"\\u29f5\":e.MO.BIN4,\"\\u29f6\":e.MO.BIN4,\"\\u29f7\":e.MO.BIN4,\"\\u29f8\":e.MO.BIN3,\"\\u29f9\":e.MO.BIN3,\"\\u29fa\":e.MO.BIN3,\"\\u29fb\":e.MO.BIN3,\"\\u29fe\":e.MO.BIN4,\"\\u29ff\":e.MO.BIN4,\"\\u2a1d\":e.MO.BIN3,\"\\u2a1e\":e.MO.BIN3,\"\\u2a1f\":e.MO.BIN3,\"\\u2a20\":e.MO.BIN3,\"\\u2a21\":e.MO.BIN3,\"\\u2a22\":e.MO.BIN4,\"\\u2a23\":e.MO.BIN4,\"\\u2a24\":e.MO.BIN4,\"\\u2a25\":e.MO.BIN4,\"\\u2a26\":e.MO.BIN4,\"\\u2a27\":e.MO.BIN4,\"\\u2a28\":e.MO.BIN4,\"\\u2a29\":e.MO.BIN4,\"\\u2a2a\":e.MO.BIN4,\"\\u2a2b\":e.MO.BIN4,\"\\u2a2c\":e.MO.BIN4,\"\\u2a2d\":e.MO.BIN4,\"\\u2a2e\":e.MO.BIN4,\"\\u2a2f\":e.MO.BIN4,\"\\u2a30\":e.MO.BIN4,\"\\u2a31\":e.MO.BIN4,\"\\u2a32\":e.MO.BIN4,\"\\u2a33\":e.MO.BIN4,\"\\u2a34\":e.MO.BIN4,\"\\u2a35\":e.MO.BIN4,\"\\u2a36\":e.MO.BIN4,\"\\u2a37\":e.MO.BIN4,\"\\u2a38\":e.MO.BIN4,\"\\u2a39\":e.MO.BIN4,\"\\u2a3a\":e.MO.BIN4,\"\\u2a3b\":e.MO.BIN4,\"\\u2a3c\":e.MO.BIN4,\"\\u2a3d\":e.MO.BIN4,\"\\u2a3e\":e.MO.BIN4,\"\\u2a3f\":e.MO.BIN4,\"\\u2a40\":e.MO.BIN4,\"\\u2a41\":e.MO.BIN4,\"\\u2a42\":e.MO.BIN4,\"\\u2a43\":e.MO.BIN4,\"\\u2a44\":e.MO.BIN4,\"\\u2a45\":e.MO.BIN4,\"\\u2a46\":e.MO.BIN4,\"\\u2a47\":e.MO.BIN4,\"\\u2a48\":e.MO.BIN4,\"\\u2a49\":e.MO.BIN4,\"\\u2a4a\":e.MO.BIN4,\"\\u2a4b\":e.MO.BIN4,\"\\u2a4c\":e.MO.BIN4,\"\\u2a4d\":e.MO.BIN4,\"\\u2a4e\":e.MO.BIN4,\"\\u2a4f\":e.MO.BIN4,\"\\u2a50\":e.MO.BIN4,\"\\u2a51\":e.MO.BIN4,\"\\u2a52\":e.MO.BIN4,\"\\u2a53\":e.MO.BIN4,\"\\u2a54\":e.MO.BIN4,\"\\u2a55\":e.MO.BIN4,\"\\u2a56\":e.MO.BIN4,\"\\u2a57\":e.MO.BIN4,\"\\u2a58\":e.MO.BIN4,\"\\u2a59\":e.MO.REL,\"\\u2a5a\":e.MO.BIN4,\"\\u2a5b\":e.MO.BIN4,\"\\u2a5c\":e.MO.BIN4,\"\\u2a5d\":e.MO.BIN4,\"\\u2a5e\":e.MO.BIN4,\"\\u2a5f\":e.MO.BIN4,\"\\u2a60\":e.MO.BIN4,\"\\u2a61\":e.MO.BIN4,\"\\u2a62\":e.MO.BIN4,\"\\u2a63\":e.MO.BIN4,\"\\u2a64\":e.MO.BIN4,\"\\u2a65\":e.MO.BIN4,\"\\u2a66\":e.MO.REL,\"\\u2a67\":e.MO.REL,\"\\u2a68\":e.MO.REL,\"\\u2a69\":e.MO.REL,\"\\u2a6a\":e.MO.REL,\"\\u2a6b\":e.MO.REL,\"\\u2a6c\":e.MO.REL,\"\\u2a6d\":e.MO.REL,\"\\u2a6e\":e.MO.REL,\"\\u2a6f\":e.MO.REL,\"\\u2a70\":e.MO.REL,\"\\u2a71\":e.MO.BIN4,\"\\u2a72\":e.MO.BIN4,\"\\u2a73\":e.MO.REL,\"\\u2a74\":e.MO.REL,\"\\u2a75\":e.MO.REL,\"\\u2a76\":e.MO.REL,\"\\u2a77\":e.MO.REL,\"\\u2a78\":e.MO.REL,\"\\u2a79\":e.MO.REL,\"\\u2a7a\":e.MO.REL,\"\\u2a7b\":e.MO.REL,\"\\u2a7c\":e.MO.REL,\"\\u2a7d\":e.MO.REL,\"\\u2a7d\\u0338\":e.MO.REL,\"\\u2a7e\":e.MO.REL,\"\\u2a7e\\u0338\":e.MO.REL,\"\\u2a7f\":e.MO.REL,\"\\u2a80\":e.MO.REL,\"\\u2a81\":e.MO.REL,\"\\u2a82\":e.MO.REL,\"\\u2a83\":e.MO.REL,\"\\u2a84\":e.MO.REL,\"\\u2a85\":e.MO.REL,\"\\u2a86\":e.MO.REL,\"\\u2a87\":e.MO.REL,\"\\u2a88\":e.MO.REL,\"\\u2a89\":e.MO.REL,\"\\u2a8a\":e.MO.REL,\"\\u2a8b\":e.MO.REL,\"\\u2a8c\":e.MO.REL,\"\\u2a8d\":e.MO.REL,\"\\u2a8e\":e.MO.REL,\"\\u2a8f\":e.MO.REL,\"\\u2a90\":e.MO.REL,\"\\u2a91\":e.MO.REL,\"\\u2a92\":e.MO.REL,\"\\u2a93\":e.MO.REL,\"\\u2a94\":e.MO.REL,\"\\u2a95\":e.MO.REL,\"\\u2a96\":e.MO.REL,\"\\u2a97\":e.MO.REL,\"\\u2a98\":e.MO.REL,\"\\u2a99\":e.MO.REL,\"\\u2a9a\":e.MO.REL,\"\\u2a9b\":e.MO.REL,\"\\u2a9c\":e.MO.REL,\"\\u2a9d\":e.MO.REL,\"\\u2a9e\":e.MO.REL,\"\\u2a9f\":e.MO.REL,\"\\u2aa0\":e.MO.REL,\"\\u2aa1\":e.MO.REL,\"\\u2aa1\\u0338\":e.MO.REL,\"\\u2aa2\":e.MO.REL,\"\\u2aa2\\u0338\":e.MO.REL,\"\\u2aa3\":e.MO.REL,\"\\u2aa4\":e.MO.REL,\"\\u2aa5\":e.MO.REL,\"\\u2aa6\":e.MO.REL,\"\\u2aa7\":e.MO.REL,\"\\u2aa8\":e.MO.REL,\"\\u2aa9\":e.MO.REL,\"\\u2aaa\":e.MO.REL,\"\\u2aab\":e.MO.REL,\"\\u2aac\":e.MO.REL,\"\\u2aad\":e.MO.REL,\"\\u2aae\":e.MO.REL,\"\\u2aaf\":e.MO.REL,\"\\u2aaf\\u0338\":e.MO.REL,\"\\u2ab0\":e.MO.REL,\"\\u2ab0\\u0338\":e.MO.REL,\"\\u2ab1\":e.MO.REL,\"\\u2ab2\":e.MO.REL,\"\\u2ab3\":e.MO.REL,\"\\u2ab4\":e.MO.REL,\"\\u2ab5\":e.MO.REL,\"\\u2ab6\":e.MO.REL,\"\\u2ab7\":e.MO.REL,\"\\u2ab8\":e.MO.REL,\"\\u2ab9\":e.MO.REL,\"\\u2aba\":e.MO.REL,\"\\u2abb\":e.MO.REL,\"\\u2abc\":e.MO.REL,\"\\u2abd\":e.MO.REL,\"\\u2abe\":e.MO.REL,\"\\u2abf\":e.MO.REL,\"\\u2ac0\":e.MO.REL,\"\\u2ac1\":e.MO.REL,\"\\u2ac2\":e.MO.REL,\"\\u2ac3\":e.MO.REL,\"\\u2ac4\":e.MO.REL,\"\\u2ac5\":e.MO.REL,\"\\u2ac6\":e.MO.REL,\"\\u2ac7\":e.MO.REL,\"\\u2ac8\":e.MO.REL,\"\\u2ac9\":e.MO.REL,\"\\u2aca\":e.MO.REL,\"\\u2acb\":e.MO.REL,\"\\u2acc\":e.MO.REL,\"\\u2acd\":e.MO.REL,\"\\u2ace\":e.MO.REL,\"\\u2acf\":e.MO.REL,\"\\u2ad0\":e.MO.REL,\"\\u2ad1\":e.MO.REL,\"\\u2ad2\":e.MO.REL,\"\\u2ad3\":e.MO.REL,\"\\u2ad4\":e.MO.REL,\"\\u2ad5\":e.MO.REL,\"\\u2ad6\":e.MO.REL,\"\\u2ad7\":e.MO.REL,\"\\u2ad8\":e.MO.REL,\"\\u2ad9\":e.MO.REL,\"\\u2ada\":e.MO.REL,\"\\u2adb\":e.MO.REL,\"\\u2adc\":e.MO.REL,\"\\u2add\":e.MO.REL,\"\\u2ade\":e.MO.REL,\"\\u2adf\":e.MO.REL,\"\\u2ae0\":e.MO.REL,\"\\u2ae1\":e.MO.REL,\"\\u2ae2\":e.MO.REL,\"\\u2ae3\":e.MO.REL,\"\\u2ae4\":e.MO.REL,\"\\u2ae5\":e.MO.REL,\"\\u2ae6\":e.MO.REL,\"\\u2ae7\":e.MO.REL,\"\\u2ae8\":e.MO.REL,\"\\u2ae9\":e.MO.REL,\"\\u2aea\":e.MO.REL,\"\\u2aeb\":e.MO.REL,\"\\u2aec\":e.MO.REL,\"\\u2aed\":e.MO.REL,\"\\u2aee\":e.MO.REL,\"\\u2aef\":e.MO.REL,\"\\u2af0\":e.MO.REL,\"\\u2af1\":e.MO.REL,\"\\u2af2\":e.MO.REL,\"\\u2af3\":e.MO.REL,\"\\u2af4\":e.MO.BIN4,\"\\u2af5\":e.MO.BIN4,\"\\u2af6\":e.MO.BIN4,\"\\u2af7\":e.MO.REL,\"\\u2af8\":e.MO.REL,\"\\u2af9\":e.MO.REL,\"\\u2afa\":e.MO.REL,\"\\u2afb\":e.MO.BIN4,\"\\u2afd\":e.MO.BIN4,\"\\u2afe\":e.MO.BIN3,\"\\u2b45\":e.MO.RELSTRETCH,\"\\u2b46\":e.MO.RELSTRETCH,\"\\u3008\":e.MO.OPEN,\"\\u3009\":e.MO.CLOSE,\"\\ufe37\":e.MO.WIDEACCENT,\"\\ufe38\":e.MO.WIDEACCENT}},e.OPTABLE.infix[\"^\"]=e.MO.WIDEREL,e.OPTABLE.infix._=e.MO.WIDEREL,e.OPTABLE.prefix[\"\\u2223\"]=e.MO.OPEN,e.OPTABLE.prefix[\"\\u2225\"]=e.MO.OPEN,e.OPTABLE.postfix[\"\\u2223\"]=e.MO.CLOSE,e.OPTABLE.postfix[\"\\u2225\"]=e.MO.CLOSE},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMstyle=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mstyle\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.attributes.getExplicit(\"scriptlevel\");null!=T&&((T=T.toString()).match(/^\\s*[-+]/)?Q+=parseInt(T):Q=parseInt(T));var n=this.attributes.getExplicit(\"displaystyle\");null!=n&&(e=!0===n),t=this.addInheritedAttributes(t,this.attributes.getAllAttributes()),this.childNodes[0].setInheritedAttributes(t,e,Q,r)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{scriptlevel:i.INHERIT,displaystyle:i.INHERIT,scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:\"8px\",mathbackground:i.INHERIT,mathcolor:i.INHERIT,dir:i.INHERIT,infixlinebreakstyle:\"before\"}),e}(o.AbstractMmlLayoutNode);e.MmlMstyle=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMaligngroup=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"maligngroup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(e,Q,r,T){e=this.addInheritedAttributes(e,this.attributes.getAllAttributes()),t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{groupalign:i.INHERIT}),e}(o.AbstractMmlLayoutNode);e.MmlMaligngroup=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMalignmark=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"malignmark\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlNode.defaults),{edge:\"left\"}),e}(o.AbstractMmlNode);e.MmlMalignmark=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathChoice=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"MathChoice\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 4},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(t,e,Q,r){var T=e?0:Math.max(0,Math.min(Q,2))+1,n=this.childNodes[T]||this.factory.create(\"mrow\");this.parent.replaceChild(n,this),n.setInheritedAttributes(t,e,Q,r)},e.defaults=n({},o.AbstractMmlBaseNode.defaults),e}(o.AbstractMmlBaseNode);e.MathChoice=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BitFieldClass=e.BitField=void 0;var a=function(){function t(){this.bits=0}return t.allocate=function(){for(var e,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];try{for(var o=n(r),i=o.next();!i.done;i=o.next()){var a=i.value;if(this.has(a))throw new Error(\"Bit already allocated for \"+a);if(this.next===t.MAXBIT)throw new Error(\"Maximum number of bits already allocated\");this.names.set(a,this.next),this.next<<=1}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}},t.has=function(t){return this.names.has(t)},t.prototype.set=function(t){this.bits|=this.getBit(t)},t.prototype.clear=function(t){this.bits&=~this.getBit(t)},t.prototype.isSet=function(t){return!!(this.bits&this.getBit(t))},t.prototype.reset=function(){this.bits=0},t.prototype.getBit=function(t){var e=this.constructor.names.get(t);if(!e)throw new Error(\"Unknown bit-field name: \"+t);return e},t.MAXBIT=1<<31,t.next=1,t.names=new Map,t}();e.BitField=a,e.BitFieldClass=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(a);return Q.allocate.apply(Q,i(t)),Q}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HandlerList=void 0;var o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.register=function(t){return this.add(t,t.priority)},e.prototype.unregister=function(t){this.remove(t)},e.prototype.handlesDocument=function(t){var e,Q;try{for(var r=n(this),T=r.next();!T.done;T=r.next()){var o=T.value.item;if(o.handlesDocument(t))return o}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}throw new Error(\"Can't find handler for document\")},e.prototype.document=function(t,e){return void 0===e&&(e=null),this.handlesDocument(t).create(t,e)},e}(Q(21).PrioritizedList);e.HandlerList=o},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractVisitor=void 0;var o=Q(58),i=function(){function t(e){var Q,T;this.nodeHandlers=new Map;try{for(var n=r(e.getKinds()),o=n.next();!o.done;o=n.next()){var i=o.value,a=this[t.methodName(i)];a&&this.nodeHandlers.set(i,a)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}}return t.methodName=function(t){return\"visit\"+(t.charAt(0).toUpperCase()+t.substr(1)).replace(/[^a-z0-9_]/gi,\"_\")+\"Node\"},t.prototype.visitTree=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return this.visitNode.apply(this,n([t],e))},t.prototype.visitNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=this.nodeHandlers.get(t.kind)||this.visitDefault;return r.call.apply(r,n([this,t],e))},t.prototype.visitDefault=function(t){for(var e,Q,T=[],i=1;i<arguments.length;i++)T[i-1]=arguments[i];if(t instanceof o.AbstractNode)try{for(var a=r(t.childNodes),s=a.next();!s.done;s=a.next()){var l=s.value;this.visitNode.apply(this,n([l],T))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}},t.prototype.setNodeHandler=function(t,e){this.nodeHandlers.set(t,e)},t.prototype.removeNodeHandler=function(t){this.nodeHandlers.delete(t)},t}();e.AbstractVisitor=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractWrapper=void 0;var r=function(){function t(t,e){this.factory=t,this.node=e}return Object.defineProperty(t.prototype,\"kind\",{get:function(){return this.node.kind},enumerable:!1,configurable:!0}),t.prototype.wrap=function(t){return this.factory.wrap(t)},t}();e.AbstractWrapper=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractWrapperFactory=void 0;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.wrap=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return this.create.apply(this,o([t.kind,t],e))},e}(Q(37).AbstractFactory);e.AbstractWrapperFactory=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLDocument=void 0;var a=Q(53),s=Q(7),l=Q(123),c=Q(124),u=Q(125),p=Q(14),h=function(t){function e(e,Q,r){var T=this,n=o(s.separateOptions(r,u.HTMLDomStrings.OPTIONS),2),i=n[0],a=n[1];return(T=t.call(this,e,Q,i)||this).domStrings=T.options.DomStrings||new u.HTMLDomStrings(a),T.domStrings.adaptor=Q,T.styles=[],T}return T(e,t),e.prototype.findPosition=function(t,e,Q,r){var T,n,a=this.adaptor;try{for(var s=i(r[t]),l=s.next();!l.done;l=s.next()){var c=l.value,u=o(c,2),p=u[0],h=u[1];if(e<=h&&\"#text\"===a.kind(p))return{node:p,n:Math.max(e,0),delim:Q};e-=h}}catch(t){T={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(T)throw T.error}}return{node:null,n:0,delim:Q}},e.prototype.mathItem=function(t,e,Q){var r=t.math,T=this.findPosition(t.n,t.start.n,t.open,Q),n=this.findPosition(t.n,t.end.n,t.close,Q);return new this.options.MathItem(r,e,t.display,T,n)},e.prototype.findMath=function(t){var e,Q,r,T,n,a,l,c,u;if(!this.processed.isSet(\"findMath\")){this.adaptor.document=this.document,t=s.userOptions({elements:this.options.elements||[this.adaptor.body(this.document)]},t);try{for(var p=i(this.adaptor.getElements(t.elements,this.document)),h=p.next();!h.done;h=p.next()){var f=h.value,d=o([null,null],2),L=d[0],H=d[1];try{for(var m=(r=void 0,i(this.inputJax)),y=m.next();!y.done;y=m.next()){var v=y.value,g=new this.options.MathList;if(v.processStrings){null===L&&(L=(n=o(this.domStrings.find(f),2))[0],H=n[1]);try{for(var b=(a=void 0,i(v.findMath(L))),M=b.next();!M.done;M=b.next()){var V=M.value;g.push(this.mathItem(V,v,H))}}catch(t){a={error:t}}finally{try{M&&!M.done&&(l=b.return)&&l.call(b)}finally{if(a)throw a.error}}}else try{for(var x=(c=void 0,i(v.findMath(f))),O=x.next();!O.done;O=x.next()){V=O.value;var _=new this.options.MathItem(V.math,v,V.display,V.start,V.end);g.push(_)}}catch(t){c={error:t}}finally{try{O&&!O.done&&(u=x.return)&&u.call(x)}finally{if(c)throw c.error}}this.math.merge(g)}}catch(t){r={error:t}}finally{try{y&&!y.done&&(T=m.return)&&T.call(m)}finally{if(r)throw r.error}}}}catch(t){e={error:t}}finally{try{h&&!h.done&&(Q=p.return)&&Q.call(p)}finally{if(e)throw e.error}}this.processed.set(\"findMath\")}return this},e.prototype.updateDocument=function(){return this.processed.isSet(\"updateDocument\")||(this.addPageElements(),this.addStyleSheet(),t.prototype.updateDocument.call(this),this.processed.set(\"updateDocument\")),this},e.prototype.addPageElements=function(){var t=this.adaptor.body(this.document),e=this.documentPageElements();e&&this.adaptor.append(t,e)},e.prototype.addStyleSheet=function(){var t=this.documentStyleSheet();if(t){var e=this.adaptor.head(this.document),Q=this.findSheet(e,this.adaptor.getAttribute(t,\"id\"));Q?this.adaptor.replace(t,Q):this.adaptor.append(e,t)}},e.prototype.findSheet=function(t,e){var Q,r;if(e)try{for(var T=i(this.adaptor.tags(t,\"style\")),n=T.next();!n.done;n=T.next()){var o=n.value;if(this.adaptor.getAttribute(o,\"id\")===e)return o}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return null},e.prototype.removeFromDocument=function(t){var e,Q;if(void 0===t&&(t=!1),this.processed.isSet(\"updateDocument\"))try{for(var r=i(this.math),T=r.next();!T.done;T=r.next()){var n=T.value;n.state()>=p.STATE.INSERTED&&n.state(p.STATE.TYPESET,t)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this.processed.clear(\"updateDocument\"),this},e.prototype.documentStyleSheet=function(){return this.outputJax.styleSheet(this)},e.prototype.documentPageElements=function(){return this.outputJax.pageElements(this)},e.prototype.addStyles=function(t){this.styles.push(t)},e.prototype.getStyles=function(){return this.styles},e.KIND=\"HTML\",e.OPTIONS=n(n({},a.AbstractMathDocument.OPTIONS),{renderActions:s.expandable(n(n({},a.AbstractMathDocument.OPTIONS.renderActions),{styles:[p.STATE.INSERTED+1,\"\",\"updateStyleSheet\",!1]})),MathList:c.HTMLMathList,MathItem:l.HTMLMathItem,DomStrings:null}),e}(a.AbstractMathDocument);e.HTMLDocument=h},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLMathItem=void 0;var n=Q(14),o=function(t){function e(e,Q,r,T,n){return void 0===r&&(r=!0),void 0===T&&(T={node:null,n:0,delim:\"\"}),void 0===n&&(n={node:null,n:0,delim:\"\"}),t.call(this,e,Q,r,T,n)||this}return T(e,t),Object.defineProperty(e.prototype,\"adaptor\",{get:function(){return this.inputJax.adaptor},enumerable:!1,configurable:!0}),e.prototype.updateDocument=function(t){if(this.state()<n.STATE.INSERTED){if(this.inputJax.processStrings){var e=this.start.node;if(e===this.end.node)this.end.n&&this.end.n<this.adaptor.value(this.end.node).length&&this.adaptor.split(this.end.node,this.end.n),this.start.n&&(e=this.adaptor.split(this.start.node,this.start.n)),this.adaptor.replace(this.typesetRoot,e);else{for(this.start.n&&(e=this.adaptor.split(e,this.start.n));e!==this.end.node;){var Q=this.adaptor.next(e);this.adaptor.remove(e),e=Q}this.adaptor.insert(this.typesetRoot,e),this.end.n<this.adaptor.value(e).length&&this.adaptor.split(e,this.end.n),this.adaptor.remove(e)}}else this.adaptor.replace(this.typesetRoot,this.start.node);this.start.node=this.end.node=this.typesetRoot,this.start.n=this.end.n=0,this.state(n.STATE.INSERTED)}},e.prototype.updateStyleSheet=function(t){t.addStyleSheet()},e.prototype.removeFromDocument=function(t){if(void 0===t&&(t=!1),this.state()>=n.STATE.TYPESET){var e=this.adaptor,Q=this.start.node,r=e.text(\"\");if(t){var T=this.start.delim+this.math+this.end.delim;if(this.inputJax.processStrings)r=e.text(T);else{var o=e.parse(T,\"text/html\");r=e.firstChild(e.body(o))}}e.parent(Q)&&e.replace(r,Q),this.start.node=this.end.node=r,this.start.n=this.end.n=0}},e}(n.AbstractMathItem);e.HTMLMathItem=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLMathList=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(Q(56).AbstractMathList);e.HTMLMathList=n},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLDomStrings=void 0;var T=Q(7),n=function(){function t(t){void 0===t&&(t=null);var e=this.constructor;this.options=T.userOptions(T.defaultOptions({},e.OPTIONS),t),this.init(),this.getPatterns()}return t.prototype.init=function(){this.strings=[],this.string=\"\",this.snodes=[],this.nodes=[],this.stack=[]},t.prototype.getPatterns=function(){var t=T.makeArray(this.options.skipHtmlTags),e=T.makeArray(this.options.ignoreHtmlClass),Q=T.makeArray(this.options.processHtmlClass);this.skipHtmlTags=new RegExp(\"^(?:\"+t.join(\"|\")+\")$\",\"i\"),this.ignoreHtmlClass=new RegExp(\"(?:^| )(?:\"+e.join(\"|\")+\")(?: |$)\"),this.processHtmlClass=new RegExp(\"(?:^| )(?:\"+Q+\")(?: |$)\")},t.prototype.pushString=function(){this.string.match(/\\S/)&&(this.strings.push(this.string),this.nodes.push(this.snodes)),this.string=\"\",this.snodes=[]},t.prototype.extendString=function(t,e){this.snodes.push([t,e.length]),this.string+=e},t.prototype.handleText=function(t,e){return e||this.extendString(t,this.adaptor.value(t)),this.adaptor.next(t)},t.prototype.handleTag=function(t,e){if(!e){var Q=this.options.includeHtmlTags[this.adaptor.kind(t)];this.extendString(t,Q)}return this.adaptor.next(t)},t.prototype.handleContainer=function(t,e){this.pushString();var Q=this.adaptor.getAttribute(t,\"class\")||\"\",r=this.adaptor.kind(t)||\"\",T=this.processHtmlClass.exec(Q),n=t;return!this.adaptor.firstChild(t)||this.adaptor.getAttribute(t,\"data-MJX\")||!T&&this.skipHtmlTags.exec(r)?n=this.adaptor.next(t):(this.adaptor.next(t)&&this.stack.push([this.adaptor.next(t),e]),n=this.adaptor.firstChild(t),e=(e||this.ignoreHtmlClass.exec(Q))&&!T),[n,e]},t.prototype.find=function(t){var e,Q;this.init();for(var T=this.adaptor.next(t),n=!1,o=this.options.includeHtmlTags;t&&t!==T;)\"#text\"===this.adaptor.kind(t)?t=this.handleText(t,n):void 0!==o[this.adaptor.kind(t)]?t=this.handleTag(t,n):(t=(e=r(this.handleContainer(t,n),2))[0],n=e[1]),!t&&this.stack.length&&(this.pushString(),t=(Q=r(this.stack.pop(),2))[0],n=Q[1]);this.pushString();var i=[this.strings,this.nodes];return this.init(),i},t.OPTIONS={skipHtmlTags:[\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\",\"annotation\",\"annotation-xml\"],includeHtmlTags:{br:\"\\n\",wbr:\"\",\"#comment\":\"\"},ignoreHtmlClass:\"mathjax_ignore\",processHtmlClass:\"mathjax_process\"},t}();e.HTMLDomStrings=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.asyncLoad=void 0;var r=Q(25);e.asyncLoad=function(t){return r.mathjax.asyncLoad?new Promise((function(e,Q){var T=r.mathjax.asyncLoad(t);T instanceof Promise?T.then((function(t){return e(t)})).catch((function(t){return Q(t)})):e(T)})):Promise.reject(\"Can't load '\"+t+\"': No asyncLoad method specified\")}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=void 0;var T=function(){function t(t){void 0===t&&(t=null),this.styles={},this.addStyles(t)}return Object.defineProperty(t.prototype,\"cssText\",{get:function(){return this.getStyleString()},enumerable:!1,configurable:!0}),t.prototype.addStyles=function(t){var e,Q;if(t)try{for(var T=r(Object.keys(t)),n=T.next();!n.done;n=T.next()){var o=n.value;this.styles[o]||(this.styles[o]={}),Object.assign(this.styles[o],t[o])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.removeStyles=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];try{for(var n=r(Q),o=n.next();!o.done;o=n.next()){var i=o.value;delete this.styles[i]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}},t.prototype.clear=function(){this.styles={}},t.prototype.getStyleString=function(){var t,e,Q=Object.keys(this.styles),T=new Array(Q.length),n=0;try{for(var o=r(Q),i=o.next();!i.done;i=o.next()){var a=i.value;T[n++]=a+\" {\\n\"+this.getStyleDefString(this.styles[a])+\"\\n}\"}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return T.join(\"\\n\\n\")},t.prototype.getStyleDefString=function(t){var e,Q,T=Object.keys(t),n=new Array(T.length),o=0;try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;n[o++]=\"  \"+s+\": \"+t[s]+\";\"}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return n.join(\"\\n\")},t}();e.CssStyles=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.max=e.sum=void 0,e.sum=function(t){return t.reduce((function(t,e){return t+e}),0)},e.max=function(t){return t.reduce((function(t,e){return Math.max(t,e)}),0)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var o=Q(107),i=Q(15),a=Q(14),s=function(t){function e(e){var Q=t.call(this,e)||this;return Q.getPatterns(),Q}return T(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,Q=[],r=[],T=[];this.end={},this.env=this.sub=0;var n=1;e.inlineMath.forEach((function(e){return t.addPattern(Q,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(Q,e,!0)})),Q.length&&r.push(Q.sort(i.sortLength).join(\"|\")),e.processEnvironments&&(r.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=n,n++),e.processEscapes&&T.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&T.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),T.length&&(r.push(\"(\"+T.join(\"|\")+\")\"),this.sub=n),this.start=new RegExp(r.join(\"|\"),\"g\"),this.hasPatterns=r.length>0},e.prototype.addPattern=function(t,e,Q){var r=n(e,2),T=r[0],o=r[1];t.push(i.quotePattern(T)),this.end[T]=[o,Q,this.endPattern(o)]},e.prototype.endPattern=function(t,e){return new RegExp((e||i.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,Q,r){for(var T,o=n(r,3),i=o[0],s=o[1],l=o[2],c=l.lastIndex=Q.index+Q[0].length,u=0;T=l.exec(t);){if((T[1]||T[0])===i&&0===u)return a.protoItem(Q[0],t.substr(c,T.index-c),T[0],e,Q.index,T.index+T[0].length,s);\"{\"===T[0]?u++:\"}\"===T[0]&&u&&u--}return null},e.prototype.findMathInString=function(t,e,Q){var r,T;for(this.start.lastIndex=0;r=this.start.exec(Q);){if(void 0!==r[this.env]&&this.env){var n=\"\\\\\\\\end\\\\s*(\\\\{\"+i.quotePattern(r[this.env])+\"\\\\})\";(T=this.findEnd(Q,e,r,[\"{\"+r[this.env]+\"}\",!0,this.endPattern(null,n)]))&&(T.math=T.open+T.math+T.close,T.open=T.close=\"\")}else if(void 0!==r[this.sub]&&this.sub){var o=r[this.sub];n=r.index+r[this.sub].length;T=2===o.length?a.protoItem(\"\",o.substr(1),\"\",e,r.index,n):a.protoItem(\"\",o,\"\",e,r.index,n,!1)}else T=this.findEnd(Q,e,r,this.end[r[0]]);T&&(t.push(T),this.start.lastIndex=T.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var Q=0,r=t.length;Q<r;Q++)this.findMathInString(e,Q,t[Q]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(o.AbstractFindMath);e.FindTeX=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var T,n=Q(0),o=Q(8);!function(t){t.cleanStretchy=function(t){var e,Q,T=t.data;try{for(var n=r(T.getList(\"fixStretchy\")),i=n.next();!i.done;i=n.next()){var a=i.value;if(o.default.getProperty(a,\"fixStretchy\")){var s=o.default.getForm(a);s&&s[3]&&s[3].stretchy&&o.default.setAttribute(a,\"stretchy\",!1);var l=a.parent;if(!(o.default.getTexClass(a)||s&&s[2])){var c=T.nodeFactory.create(\"node\",\"TeXAtom\",[a]);l.replaceChild(c,a),c.inheritAttributesFrom(a)}o.default.removeProperties(a,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var Q,T,n=t.attributes;if(n)try{for(var o=r(n.getExplicitNames()),i=o.next();!i.done;i=o.next()){var a=i.value;n.attributes[a]===t.attributes.getInherited(a)&&delete n.attributes[a]}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}}),{})},t.combineRelations=function(t){var T,i;try{for(var a=r(t.data.getList(\"mo\")),s=a.next();!s.done;s=a.next()){var l=s.value;if(!l.getProperty(\"relationsCombined\")&&l.parent&&(!l.parent||o.default.isType(l.parent,\"mrow\"))&&o.default.getTexClass(l)===n.TEXCLASS.REL){for(var c=l.parent,u=void 0,p=c.childNodes,h=p.indexOf(l)+1,f=o.default.getProperty(l,\"variantForm\");h<p.length&&(u=p[h])&&o.default.isType(u,\"mo\")&&o.default.getTexClass(u)===n.TEXCLASS.REL;){if(f!==o.default.getProperty(u,\"variantForm\")||!Q(l,u)){null==l.attributes.getExplicit(\"rspace\")&&o.default.setAttribute(l,\"rspace\",\"0pt\"),null==u.attributes.getExplicit(\"lspace\")&&o.default.setAttribute(u,\"lspace\",\"0pt\");break}o.default.appendChildren(l,o.default.getChildren(u)),e([\"stretchy\",\"rspace\"],l,u),o.default.setProperties(l,u.getAllProperties()),p.splice(h,1),u.parent=null,u.setProperty(\"relationsCombined\",!0)}l.attributes.setInherited(\"form\",l.getForms()[0])}}}catch(t){T={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(T)throw T.error}}};var e=function(t,e,Q){var r=e.attributes,T=Q.attributes;t.forEach((function(t){var e=T.getExplicit(t);null!=e&&r.set(t,e)}))},Q=function(t,e){var Q,T,n=function(t,e){return t.getExplicitNames().filter((function(Q){return Q!==e&&(\"stretchy\"!==Q||t.getExplicit(\"stretchy\"))}))},o=t.attributes,i=e.attributes,a=n(o,\"lspace\"),s=n(i,\"rspace\");if(a.length!==s.length)return!1;try{for(var l=r(a),c=l.next();!c.done;c=l.next()){var u=c.value;if(o.getExplicit(u)!==i.getExplicit(u))return!1}}catch(t){Q={error:t}}finally{try{c&&!c.done&&(T=l.return)&&T.call(l)}finally{if(Q)throw Q.error}}return!0},T=function(t,e,Q){var T,n;try{for(var i=r(t.getList(\"m\"+e+Q)),a=i.next();!a.done;a=i.next()){var s=a.value,l=s.childNodes;if(!l[s[e]]||!l[s[Q]]){var c=s.parent,u=l[s[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[l[s.base],l[s[e]]]):t.nodeFactory.create(\"node\",\"m\"+Q,[l[s.base],l[s[Q]]]);o.default.copyAttributes(s,u),c?c.replaceChild(u,s):t.root=u}}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(T(e,\"sub\",\"sup\"),T(e,\"under\",\"over\"))};var i=function(t,e,Q){var T,n;try{for(var i=r(t.getList(e)),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.attributes.get(\"displaystyle\")){var l=s.childNodes[s.base],c=l.coreMO();if(l.getProperty(\"movablelimits\")&&!c.attributes.getExplicit(\"movablelimits\")){var u=t.nodeFactory.create(\"node\",Q,s.childNodes);o.default.copyAttributes(s,u),s.parent?s.parent.replaceChild(u,s):t.root=u}}}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}};t.moveLimits=function(t){var e=t.data;i(e,\"munderover\",\"msubsup\"),i(e,\"munder\",\"msub\"),i(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(T||(T={})),e.default=T},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(22),i=Q(37),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(o.BaseItem),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return n(e,t),e.DefaultStackItems=((T={})[a.prototype.kind]=a,T),e}(i.AbstractFactory);e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var r=Q(2),T=Q(12),n=Q(3),o=Q(16);e.ActionMethods={},e.ActionMethods.Macro=o.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var Q,r=[];\"\\\\endtoggle\"!==(Q=t.GetArgument(e));)r.push(new T.default(Q,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",r,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[Q,r],{actiontype:\"tooltip\"}))},new n.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=r.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=Q(2),i=Q(134),a=Q(20),s=Q(34);Q(284);var l=Q(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(a.AbstractTags);e.AmsTags=c;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(T={},T[i.MultlineItem.prototype.kind]=i.MultlineItem,T),tags:{ams:c},init:function(t){new l.CommandMap(s.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[s.NEW_OPS]},priority:-1}))}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var n=Q(27),o=Q(9),i=Q(8),a=Q(5),s=Q(13),l=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(\"multline\",!0,Q[0]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new a.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,Q=-1;i.default.getAttribute(i.default.getChildren(this.table[0])[0],\"columnalign\")||i.default.setAttribute(i.default.getChildren(this.table[0])[0],\"columnalign\",s.TexConstant.Align.LEFT),i.default.getAttribute(i.default.getChildren(this.table[e])[0],\"columnalign\")||i.default.setAttribute(i.default.getChildren(this.table[e])[0],\"columnalign\",s.TexConstant.Align.RIGHT);var r=this.factory.configuration.tags.getTag();if(r){Q=this.arraydef.side===s.TexConstant.Align.LEFT?0:this.table.length-1;var T=this.table[Q],n=this.create(\"node\",\"mlabeledtr\",[r].concat(i.default.getChildren(T)));i.default.copyAttributes(T,n),this.table[Q]=n}}this.factory.configuration.tags.end()},e}(n.ArrayItem);e.MultlineItem=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var r=Q(2);Q(285),e.AmsCdConfiguration=r.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(12),T=Q(42),n=Q(0),o=Q(8),i={CD:function(t,e){t.Push(e);var Q=t.itemFactory.create(\"array\"),r=t.configuration.options.amscd;return Q.setProperties({minw:t.stack.env.CD_minw||r.harrowsize,minh:t.stack.env.CD_minh||r.varrowsize}),Q.arraydef={columnalign:\"center\",columnspacing:r.colspace,rowspacing:r.rowspace,displaystyle:!0},Q},arrow:function(t,e){var Q=t.string.charAt(t.i);if(!Q.match(/[><VA.|=]/))return T.Other(t,e);t.i++;var a=t.stack.Top();a.isKind(\"array\")&&!a.Size()||(i.cell(t,e),a=t.stack.Top());for(var s,l=a,c=l.table.length%2==1,u=(l.row.length+(c?0:1))%2;u;)i.cell(t,e),u--;var p={minsize:l.getProperty(\"minw\"),stretchy:!0},h={minsize:l.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===Q);else if(\"|\"===Q)s=t.create(\"token\",\"mo\",h,\"\\u2225\");else if(\"=\"===Q)s=t.create(\"token\",\"mo\",p,\"=\");else{var f={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[Q],d=t.GetUpTo(e+Q,Q),L=t.GetUpTo(e+Q,Q);if(\">\"===Q||\"<\"===Q){if(s=t.create(\"token\",\"mo\",p,f),d||(d=\"\\\\kern \"+l.getProperty(\"minw\")),d||L){var H={width:\".67em\",lspace:\".33em\"};if(s=t.create(\"node\",\"munderover\",[s]),d){var m=new r.default(d,t.stack.env,t.configuration).mml(),y=t.create(\"node\",\"mpadded\",[m],H);o.default.setAttribute(y,\"voffset\",\".1em\"),o.default.setChild(s,s.over,y)}if(L){var v=new r.default(L,t.stack.env,t.configuration).mml();o.default.setChild(s,s.under,t.create(\"node\",\"mpadded\",[v],H))}t.configuration.options.amscd.hideHorizontalLabels&&(s=t.create(\"node\",\"mpadded\",s,{depth:0,height:\".67em\"}))}}else{var g=t.create(\"token\",\"mo\",h,f);s=g,(d||L)&&(s=t.create(\"node\",\"mrow\"),d&&o.default.appendChildren(s,[new r.default(\"\\\\scriptstyle\\\\llap{\"+d+\"}\",t.stack.env,t.configuration).mml()]),g.texClass=n.TEXCLASS.ORD,o.default.appendChildren(s,[g]),L&&o.default.appendChildren(s,[new r.default(\"\\\\scriptstyle\\\\rlap{\"+L+\"}\",t.stack.env,t.configuration).mml()]))}}s&&t.Push(s),i.cell(t,e)},cell:function(t,e){var Q=t.stack.Top();(Q.table||[]).length%2==0&&0===(Q.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var r=Q(2),T=Q(3),n=Q(5);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var Q,r,T,a=t.GetBrackets(e,\"\"),s=t.ParseArg(e),l=a.split(/,/),c=0,u=l.length;c<u;c++){var p=l[c].trim(),h=p.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(h){if(Q)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var f=i(h[1]+h[3]);f&&(Q={height:\"+\"+f,depth:\"+\"+f,lspace:f,width:\"+\"+2*parseInt(h[1],10)+h[3]})}else if(p.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(r)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);r=p}else if(p.match(/^[-a-z]+:/i)){if(T)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);T=o(p)}else if(\"\"!==p)throw new n.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',p)}Q&&(s=t.create(\"node\",\"mpadded\",[s],Q)),(r||T)&&(Q={},r&&Object.assign(Q,{mathbackground:r}),T&&Object.assign(Q,{style:T}),s=t.create(\"node\",\"mstyle\",[s],Q)),t.Push(s)};var o=function(t){return t},i=function(t){return t};new T.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=r.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var T=Q(2),n=Q(8),o=Q(13),i=Q(3),a=Q(41),s={};function l(t,e,Q,r){var T=a.NodeFactory.createToken(t,e,Q,r);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(n.default.setProperty(T,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",T)),T}function c(t){var e,Q;try{for(var T=r(t.data.getList(\"fixBold\")),i=T.next();!i.done;i=T.next()){var a=i.value;if(n.default.getProperty(a,\"fixBold\")){var l=n.default.getAttribute(a,\"mathvariant\");null==l?n.default.setAttribute(a,\"mathvariant\",o.TexConstant.Variant.BOLD):n.default.setAttribute(a,\"mathvariant\",s[l]||l),n.default.removeProperties(a,\"fixBold\")}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}s[o.TexConstant.Variant.NORMAL]=o.TexConstant.Variant.BOLD,s[o.TexConstant.Variant.ITALIC]=o.TexConstant.Variant.BOLDITALIC,s[o.TexConstant.Variant.FRAKTUR]=o.TexConstant.Variant.BOLDFRAKTUR,s[o.TexConstant.Variant.SCRIPT]=o.TexConstant.Variant.BOLDSCRIPT,s[o.TexConstant.Variant.SANSSERIF]=o.TexConstant.Variant.BOLDSANSSERIF,s[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",s[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var Q=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var r=t.ParseArg(e);t.stack.env.boldsymbol=Q,t.Push(r)},new i.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=l,e.rewriteBoldTokens=c,e.BoldsymbolConfiguration=T.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:l},postprocessors:[c]})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var T=Q(2),n=Q(140);Q(286),e.BraketConfiguration=T.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(r={},r[n.BraketItem.prototype.kind]=n.BraketItem,r)})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var n=Q(22),o=Q(0),i=Q(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:n.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),Q=this.getProperty(\"open\"),r=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return i.default.fenced(this.factory.configuration,Q,e,r);var T={fence:!0,stretchy:!1,symmetric:!0,texClass:o.TEXCLASS.OPEN},n=this.create(\"token\",\"mo\",T,Q);T.texClass=o.TEXCLASS.CLOSE;var a=this.create(\"token\",\"mo\",T,r);return this.create(\"node\",\"mrow\",[n,e,a],{open:Q,close:r,texClass:o.TEXCLASS.INNER})},e}(n.BaseItem);e.BraketItem=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(16),T=Q(0),n=Q(5),o={};o.Macro=r.default.Macro,o.Braket=function(t,e,Q,r,T,o){var i=t.GetNext();if(\"\"===i)throw new n.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var a=!0;\"{\"===i&&(t.i++,a=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:o,barcount:0,open:Q,close:r,stretchy:T,single:a}))},o.Bar=function(t,e){var Q=\"|\"===e?\"|\":\"\\u2225\",r=t.stack.Top();if(\"braket\"!==r.kind||r.getProperty(\"barcount\")>=r.getProperty(\"barmax\")){var n=t.create(\"token\",\"mo\",{texClass:T.TEXCLASS.ORD,stretchy:!1},Q);t.Push(n)}else{if(\"|\"===Q&&\"|\"===t.GetNext()&&(t.i++,Q=\"\\u2225\"),r.getProperty(\"stretchy\")){var o=t.create(\"node\",\"TeXAtom\",[],{texClass:T.TEXCLASS.CLOSE});t.Push(o),r.setProperty(\"barcount\",r.getProperty(\"barcount\")+1),o=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},Q),t.Push(o),o=t.create(\"node\",\"TeXAtom\",[],{texClass:T.TEXCLASS.OPEN}),t.Push(o)}else{var i=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},Q);t.Push(i)}}},e.default=o},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var T=Q(2),n=Q(143),o=Q(43);Q(287),e.BussproofsConfiguration=T.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(r={},r[n.ProofTreeItem.prototype.kind]=n.ProofTreeItem,r),preprocessors:[[o.saveDocument,1]],postprocessors:[[o.clearDocument,3],[o.makeBsprAttributes,2],[o.balanceRules,1]]})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var n=Q(5),o=Q(22),i=Q(85),a=Q(43),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new i.default(e.factory,{},!0),e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return a.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new n.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),o.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),Q=this.innerStack.Top();if(Q.isKind(\"start\")&&!Q.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var r=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[r,e],{})},e}(o.BaseItem);e.ProofTreeItem=s},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var n=Q(5),o=Q(12),i=Q(9),a=Q(43),s={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var Q=t.stack.Top();if(\"proofTree\"!==Q.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var r=l(t,t.GetArgument(e));a.setProperty(r,\"axiom\",!0),Q.Push(r)}},l=function(t,e){var Q=i.default.internalMath(t,i.default.trimSpaces(e),0);if(!Q[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var r=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),n=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",T([r],Q,[n]))};function c(t,e,Q,r,T,n,o){var i,s,l,c,u=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),p=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",Q,{})],{}),h=t.create(\"node\",\"mtable\",o?[p,u]:[u,p],{align:\"top 2\",rowlines:n,framespacing:\"0 0\"});if(a.setProperty(h,\"inferenceRule\",o?\"up\":\"down\"),r&&(i=t.create(\"node\",\"mpadded\",[r],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),a.setProperty(i,\"prooflabel\",\"left\")),T&&(s=t.create(\"node\",\"mpadded\",[T],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),a.setProperty(s,\"prooflabel\",\"right\")),r&&T)l=[i,h,s],c=\"both\";else if(r)l=[i,h],c=\"left\";else{if(!T)return h;l=[h,s],c=\"right\"}return h=t.create(\"node\",\"mrow\",l),a.setProperty(h,\"labelledRule\",c),h}function u(t,e){if(\"$\"!==t.GetNext())throw new n.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var Q=t.GetUpTo(e,\"$\");if(-1===Q.indexOf(\"\\\\fCenter\"))throw new n.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var T=r(Q.split(\"\\\\fCenter\"),2),i=T[0],s=T[1],l=new o.default(i,t.stack.env,t.configuration).mml(),c=new o.default(s,t.stack.env,t.configuration).mml(),u=new o.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),p=t.create(\"node\",\"mtd\",[l],{}),h=t.create(\"node\",\"mtd\",[u],{}),f=t.create(\"node\",\"mtd\",[c],{}),d=t.create(\"node\",\"mtr\",[p,h,f],{}),L=t.create(\"node\",\"mtable\",[d],{columnspacing:\".5ex\",columnalign:\"center 2\"});return a.setProperty(L,\"sequent\",!0),t.configuration.addNode(\"sequent\",d),L}s.Inference=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(r.Size()<Q)throw new n.default(\"BadProofTree\",\"Proof tree badly specified.\");var T=r.getProperty(\"rootAtTop\"),o=1!==Q||r.Peek()[0].childNodes.length?Q:0,i=[];do{i.length&&i.unshift(t.create(\"node\",\"mtd\",[],{})),i.unshift(t.create(\"node\",\"mtd\",[r.Pop()],{rowalign:T?\"top\":\"bottom\"})),Q--}while(Q>0);var s=t.create(\"node\",\"mtr\",i,{}),u=t.create(\"node\",\"mtable\",[s],{framespacing:\"0 0\"}),p=l(t,t.GetArgument(e)),h=r.getProperty(\"currentLine\");h!==r.getProperty(\"line\")&&r.setProperty(\"currentLine\",r.getProperty(\"line\"));var f=c(t,u,[p],r.getProperty(\"left\"),r.getProperty(\"right\"),h,T);r.setProperty(\"left\",null),r.setProperty(\"right\",null),a.setProperty(f,\"inference\",o),t.configuration.addNode(\"inference\",f),r.Push(f)},s.Label=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var T=i.default.internalMath(t,t.GetArgument(e),0),o=T.length>1?t.create(\"node\",\"mrow\",T,{}):T[0];r.setProperty(Q,o)},s.SetLine=function(t,e,Q,r){var T=t.stack.Top();if(\"proofTree\"!==T.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");T.setProperty(\"currentLine\",Q),r&&T.setProperty(\"line\",Q)},s.RootAtTop=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");r.setProperty(\"rootAtTop\",Q)},s.AxiomF=function(t,e){var Q=t.stack.Top();if(\"proofTree\"!==Q.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var r=u(t,e);a.setProperty(r,\"axiom\",!0),Q.Push(r)},s.FCenter=function(t,e){},s.InferenceF=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(r.Size()<Q)throw new n.default(\"BadProofTree\",\"Proof tree badly specified.\");var T=r.getProperty(\"rootAtTop\"),o=1!==Q||r.Peek()[0].childNodes.length?Q:0,i=[];do{i.length&&i.unshift(t.create(\"node\",\"mtd\",[],{})),i.unshift(t.create(\"node\",\"mtd\",[r.Pop()],{rowalign:T?\"top\":\"bottom\"})),Q--}while(Q>0);var s=t.create(\"node\",\"mtr\",i,{}),l=t.create(\"node\",\"mtable\",[s],{framespacing:\"0 0\"}),p=u(t,e),h=r.getProperty(\"currentLine\");h!==r.getProperty(\"line\")&&r.setProperty(\"currentLine\",r.getProperty(\"line\"));var f=c(t,l,[p],r.getProperty(\"left\"),r.getProperty(\"right\"),h,T);r.setProperty(\"left\",null),r.setProperty(\"right\",null),a.setProperty(f,\"inference\",o),t.configuration.addNode(\"inference\",f),r.Push(f)},e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var r=Q(2),T=Q(13),n=Q(3),o=Q(9),i=Q(87);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,Q){var r=t.GetBrackets(e,\"\"),T=t.ParseArg(e),n=o.default.keyvalOptions(r,i.ENCLOSE_OPTIONS);n.notation=Q,t.Push(t.create(\"node\",\"menclose\",[T],n))},e.CancelMethods.CancelTo=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.ParseArg(e),n=t.ParseArg(e),a=o.default.keyvalOptions(Q,i.ENCLOSE_OPTIONS);a.notation=[T.TexConstant.Notation.UPDIAGONALSTRIKE,T.TexConstant.Notation.UPDIAGONALARROW,T.TexConstant.Notation.NORTHEASTARROW].join(\" \"),r=t.create(\"node\",\"mpadded\",[r],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[n],a),r]))},new n.CommandMap(\"cancel\",{cancel:[\"Cancel\",T.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",T.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",T.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+T.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=r.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var r=Q(3),T=Q(2),n=Q(147),o=Q(148);new r.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},n.ColorMethods);e.ColorConfiguration=T.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new o.ColorModel})}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var r=Q(8),T=Q(9);function n(t){var e=\"+\"+t,Q=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+Q,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.GetArgument(e),T=t.configuration.packageData.get(\"color\").model.getColor(Q,r),n=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:T}});t.stack.env.color=T,t.Push(n)},e.ColorMethods.TextColor=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.GetArgument(e),T=t.configuration.packageData.get(\"color\").model.getColor(Q,r),n=t.stack.env.color;t.stack.env.color=T;var o=t.ParseArg(e);n?t.stack.env.color=n:delete t.stack.env.color;var i=t.create(\"node\",\"mstyle\",[o],{mathcolor:T});t.Push(i)},e.ColorMethods.DefineColor=function(t,e){var Q=t.GetArgument(e),r=t.GetArgument(e),T=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(r,Q,T)},e.ColorMethods.ColorBox=function(t,e){var Q=t.GetArgument(e),o=T.default.internalMath(t,t.GetArgument(e)),i=t.configuration.packageData.get(\"color\").model,a=t.create(\"node\",\"mpadded\",o,{mathbackground:i.getColor(\"named\",Q)});r.default.setProperties(a,n(t.options.color.padding)),t.Push(a)},e.ColorMethods.FColorBox=function(t,e){var Q=t.GetArgument(e),o=t.GetArgument(e),i=T.default.internalMath(t,t.GetArgument(e)),a=t.options.color,s=t.configuration.packageData.get(\"color\").model,l=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",o),style:\"border: \"+a.borderWidth+\" solid \"+s.getColor(\"named\",Q)});r.default.setProperties(l,n(a.padding)),t.Push(l)}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var T=Q(5),n=Q(149),o=new Map,i=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(o.has(t))return o.get(t)(e);throw new T.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):n.COLORS.has(t)?n.COLORS.get(t):t},t.prototype.defineColor=function(t,e,Q){var r=this.normalizeColor(t,Q);this.userColors.set(e,r)},t}();e.ColorModel=i,o.set(\"rgb\",(function(t){var e,Q,n=t.trim().split(/\\s*,\\s*/),o=\"#\";if(3!==n.length)throw new T.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var i=r(n),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new T.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var l=parseFloat(s);if(l<0||l>1)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var c=Math.floor(255*l).toString(16);c.length<2&&(c=\"0\"+c),o+=c}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o})),o.set(\"RGB\",(function(t){var e,Q,n=t.trim().split(/\\s*,\\s*/),o=\"#\";if(3!==n.length)throw new T.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var i=r(n),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.match(/^\\d+$/))throw new T.default(\"InvalidNumber\",\"Invalid number\");var l=parseInt(s);if(l>255)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var c=l.toString(16);c.length<2&&(c=\"0\"+c),o+=c}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o})),o.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new T.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var Q=Math.floor(255*e).toString(16);return Q.length<2&&(Q=\"0\"+Q),\"#\"+Q+Q+Q}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var r=Q(3),T=Q(2);e.ColorV2Methods={Color:function(t,e){var Q=t.GetArgument(e),r=t.stack.env.color;t.stack.env.color=Q;var T=t.ParseArg(e);r?t.stack.env.color=r:delete t.stack.env.color;var n=t.create(\"node\",\"mstyle\",[T],{mathcolor:Q});t.Push(n)}},new r.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=T.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var T=Q(2),n=Q(7),o=Q(3),i=Q(26),a=Q(88);e.ConfigMacrosConfiguration=T.Configuration.create(\"configmacros\",{init:function(t){new o.CommandMap(\"configmacros-map\",{},{}),t.append(T.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var Q,T,n=e.parseOptions.handlers.retrieve(\"configmacros-map\"),o=e.parseOptions.options.macros;try{for(var s=r(Object.keys(o)),l=s.next();!l.done;l=s.next()){var c=l.value,u=\"string\"==typeof o[c]?[o[c]]:o[c],p=Array.isArray(u[2])?new i.Macro(c,a.default.MacroWithTemplate,u.slice(0,2).concat(u[2])):new i.Macro(c,a.default.Macro,u);n.add(c,p)}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(Q)throw Q.error}}},options:{macros:n.expandable({})}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var r=Q(2),T=Q(3),n=Q(34),o=Q(44),i=Q(89),a=Q(5);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=n.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,Q){var r=t.GetArgument(Q),T=t.GetArgument(Q),n=t.GetArgument(Q);if(!r.match(/^\\\\([a-z]+|.)$/i))throw new a.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",Q);if(!T.match(/^(\\d+),(\\d+)$/))throw new a.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",Q);if(!n.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new a.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",Q);r=r.substr(1);var i=T.split(\",\");o.default.addMacro(t,r,e.ExtpfeilMethods.xArrow,[parseInt(n),parseInt(i[0]),parseInt(i[1])])},new T.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=r.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){i.NewcommandConfiguration.init(t)}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var n=Q(5),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new n.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new n.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(Q(22).BaseItem);e.BeginEnvItem=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var r=Q(2),T=Q(3),n=Q(155);new T.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},n.default),e.HtmlConfiguration=r.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(8),T={Href:function(t,e){var Q=t.GetArgument(e),T=n(t,e);r.default.setAttribute(T,\"href\",Q),t.Push(T)},Class:function(t,e){var Q=t.GetArgument(e),T=n(t,e),o=r.default.getAttribute(T,\"class\");o&&(Q=o+\" \"+Q),r.default.setAttribute(T,\"class\",Q),t.Push(T)},Style:function(t,e){var Q=t.GetArgument(e),T=n(t,e),o=r.default.getAttribute(T,\"style\");o&&(\";\"!==Q.charAt(Q.length-1)&&(Q+=\";\"),Q=o+\" \"+Q),r.default.setAttribute(T,\"style\",Q),t.Push(T)},Id:function(t,e){var Q=t.GetArgument(e),T=n(t,e);r.default.setAttribute(T,\"id\",Q),t.Push(T)}},n=function(t,e){var Q=t.ParseArg(e);if(!r.default.isInferred(Q))return Q;var T=r.default.getChildren(Q);if(1===T.length)return T[0];var n=t.create(\"node\",\"mrow\");return r.default.copyChildren(Q,n),r.default.copyAttributes(Q,n),n};e.default=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var r=Q(2),T=Q(3),n=Q(5),o=Q(16),i=Q(34),a=Q(289),s={};s.Macro=o.default.Macro,s.xArrow=i.AmsMethods.xArrow,s.Machine=function(t,e,Q){try{var r=t.GetArgument(e),T=a.mhchemParser.go(r,Q),o=a.texify.go(T);t.string=o+t.string.substr(t.i),t.i=0}catch(t){throw new n.default(t[0],t[1],t.slice(2))}},new T.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},s),e.MhchemConfiguration=r.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var r=Q(2);e.NoErrorsConfiguration=r.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,Q,r){var T=t.create(\"token\",\"mtext\",{},r.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[T],{\"data-mjx-error\":e,title:e})}}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var T=Q(2);e.NoUndefinedConfiguration=T.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var Q,T,n=t.create(\"text\",\"\\\\\"+e),o=t.options.noundefined||{},i={};try{for(var a=r([\"color\",\"background\",\"size\"]),s=a.next();!s.done;s=a.next()){var l=s.value;o[l]&&(i[\"math\"+l]=o[l])}}catch(t){Q={error:t}}finally{try{s&&!s.done&&(T=a.return)&&T.call(a)}finally{if(Q)throw Q.error}}t.Push(t.create(\"node\",\"mtext\",[],i,n))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var T=Q(2),n=Q(160);Q(290),e.PhysicsConfiguration=T.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(r={},r[n.AutoOpen.prototype.kind]=n.AutoOpen,r)})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var n=Q(22),o=Q(9),i=Q(12),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,Q=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var r=t.prototype.toMml.call(this),T=e.create(\"node\",\"mpadded\",[r],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[T]))}Q&&this.Push(new i.default(Q,e.stack.env,e.configuration).mml());var n=t.prototype.toMml.call(this);return o.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var Q=e.getProperty(\"autoclose\");return Q&&Q===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(n.BaseItem);e.AutoOpen=a},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var T=Q(16),n=Q(12),o=Q(5),i=Q(0),a=Q(9),s=Q(8),l=Q(41),c={},u={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},p=/^(b|B)i(g{1,2})$/;c.Quantity=function(t,e,Q,r,T,l,c){void 0===Q&&(Q=\"(\"),void 0===r&&(r=\")\"),void 0===T&&(T=!1),void 0===l&&(l=\"\"),void 0===c&&(c=\"\");var h=!!T&&t.GetStar(),f=t.GetNext(),d=t.i,L=null;if(\"\\\\\"===f){if(t.i++,!(L=t.GetCS()).match(p)){var H=t.create(\"node\",\"mrow\");return t.Push(a.default.fenced(t.configuration,Q,H,r)),void(t.i=d)}f=t.GetNext()}var m=u[f];if(T&&\"{\"!==f)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!m){H=t.create(\"node\",\"mrow\");return t.Push(a.default.fenced(t.configuration,Q,H,r)),void(t.i=d)}if(l){var y=t.create(\"token\",\"mi\",{texClass:i.TEXCLASS.OP},l);c&&s.default.setAttribute(y,\"mathvariant\",c),t.Push(t.itemFactory.create(\"fn\",y))}if(\"{\"===f){var v=t.GetArgument(e);return f=T?Q:\"\\\\{\",m=T?r:\"\\\\}\",v=h?f+\" \"+v+\" \"+m:L?\"\\\\\"+L+\"l\"+f+\" \"+v+\" \\\\\"+L+\"r\"+m:\"\\\\left\"+f+\" \"+v+\" \\\\right\"+m,void t.Push(new n.default(v,t.stack.env,t.configuration).mml())}T&&(f=Q,m=r),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:f,close:m,big:L}))},c.Eval=function(t,e){var Q=t.GetStar(),r=t.GetNext();if(\"{\"!==r){if(\"(\"===r||\"[\"===r)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:r,close:\"|\",smash:Q,right:\"\\\\vphantom{\\\\int}\"}));throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var T=t.GetArgument(e),n=\"\\\\left. \"+(Q?\"\\\\smash{\"+T+\"}\":T)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+n+t.string.slice(t.i)},c.Commutator=function(t,e,Q,r){void 0===Q&&(Q=\"[\"),void 0===r&&(r=\"]\");var T=t.GetStar(),i=t.GetNext(),a=null;if(\"\\\\\"===i){if(t.i++,!(a=t.GetCS()).match(p))throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);i=t.GetNext()}if(\"{\"!==i)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var s=t.GetArgument(e)+\",\"+t.GetArgument(e);s=T?Q+\" \"+s+\" \"+r:a?\"\\\\\"+a+\"l\"+Q+\" \"+s+\" \\\\\"+a+\"r\"+r:\"\\\\left\"+Q+\" \"+s+\" \\\\right\"+r,t.Push(new n.default(s,t.stack.env,t.configuration).mml())};var h=[65,90],f=[97,122],d=[913,937],L=[945,969],H=[48,57];function m(t,e){return t>=e[0]&&t<=e[1]}function y(t,e,Q,r){var T=t.configuration.parser,n=l.NodeFactory.createToken(t,e,Q,r),o=r.codePointAt(0);return 1===r.length&&!T.stack.env.font&&T.stack.env.vectorFont&&(m(o,h)||m(o,f)||m(o,d)||m(o,H)||m(o,L)&&T.stack.env.vectorStar||s.default.getAttribute(n,\"accent\"))&&s.default.setAttribute(n,\"mathvariant\",T.stack.env.vectorFont),n}c.VectorBold=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=t.configuration.nodeFactory.get(\"token\"),o=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",y),t.stack.env.vectorFont=Q?\"bold-italic\":\"bold\",t.stack.env.vectorStar=Q;var i=new n.default(r,t.stack.env,t.configuration).mml();o&&(t.stack.env.font=o),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",T),t.Push(i)},c.StarMacro=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];var n=t.GetStar(),i=[];if(Q)for(var s=i.length;s<Q;s++)i.push(t.GetArgument(e));var l=r.join(n?\"*\":\"\");if(l=a.default.substituteArgs(t,i,l),t.string=a.default.addArgs(t,l,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var v=function(t,e,Q,r,T){var o=new n.default(r,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,o));var i=t.GetNext(),a=u[i];if(a){var s=-1!==T.indexOf(i);if(\"{\"===i){var l=(s?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(Q)+\" \"+(s?\"\\\\right\\\\}\":\"\");return t.string=l+t.string.slice(t.i),void(t.i=0)}s&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:i,close:a})))}};function g(t,e,Q){var T=r(t,3),n=T[0],o=T[1],i=T[2];return e&&Q?\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+n+\"}\\\\vert{\"+o+\"}\\\\vert{\"+i+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\right\\\\vert{\"+o+\"}\\\\left\\\\vert{\"+i+\"}\\\\right\\\\rangle\"}c.OperatorApplication=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];v(t,\"fn\",e,Q,r)},c.VectorOperator=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];v(t,\"mml\",e,Q,r)},c.Expression=function(t,e,Q,r){void 0===Q&&(Q=!0),void 0===r&&(r=\"\"),r=r||e.slice(1);var T=Q?t.GetBrackets(e):null,o=t.create(\"token\",\"mi\",{texClass:i.TEXCLASS.OP},r);if(T){var a=new n.default(T,t.stack.env,t.configuration).mml();o=t.create(\"node\",\"msup\",[o,a])}t.Push(t.itemFactory.create(\"fn\",o)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},c.Qqtext=function(t,e,Q){var r=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(Q||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+r+t.string.slice(t.i)},c.Differential=function(t,e,Q){var r=t.GetBrackets(e),T=null!=r?\"^{\"+r+\"}\":\" \",o=\"(\"===t.GetNext(),a=\"{\"===t.GetNext(),s=Q+T;if(o||a)if(a){s+=t.GetArgument(e);l=new n.default(s,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[l],{texClass:i.TEXCLASS.OP}))}else t.Push(new n.default(s,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{s+=t.GetArgument(e,!0)||\"\";var l=new n.default(s,t.stack.env,t.configuration).mml();t.Push(l)}},c.Derivative=function(t,e,Q,r){var T=t.GetStar(),o=t.GetBrackets(e),i=1,a=[];for(a.push(t.GetArgument(e));\"{\"===t.GetNext()&&i<Q;)a.push(t.GetArgument(e)),i++;var s=!1,l=\" \",c=\" \";Q>2&&a.length>2?(l=\"^{\"+(a.length-1)+\"}\",s=!0):null!=o&&(Q>2&&a.length>1&&(s=!0),c=l=\"^{\"+o+\"}\");for(var u=T?\"\\\\flatfrac\":\"\\\\frac\",p=a.length>1?a[0]:\"\",h=a.length>1?a[1]:a[0],f=\"\",d=2,L=void 0;L=a[d];d++)f+=r+\" \"+L;var H=u+\"{\"+r+l+p+\"}{\"+r+\" \"+h+c+\" \"+f+\"}\";t.Push(new n.default(H,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:s})))},c.Bra=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=\"\",o=!1,i=!1;if(\"\\\\\"===t.GetNext()){var a=t.i;t.i++;var s=t.GetCS(),l=t.lookup(\"macro\",s);l&&\"ket\"===l.symbol?(o=!0,a=t.i,i=t.GetStar(),\"{\"===t.GetNext()?T=t.GetArgument(s,!0):(t.i=a,i=!1)):t.i=a}var c=\"\";c=o?Q||i?\"\\\\langle{\"+r+\"}\\\\vert{\"+T+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+T+\"}\\\\right\\\\rangle\":Q||i?\"\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\langle{\"+r+\"}\\\\right\\\\vert{\"+T+\"}\",t.Push(new n.default(c,t.stack.env,t.configuration).mml())},c.Ket=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=Q?\"\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+r+\"}\\\\right\\\\rangle\";t.Push(new n.default(T,t.stack.env,t.configuration).mml())},c.BraKet=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=null;\"{\"===t.GetNext()&&(T=t.GetArgument(e,!0));var o=\"\";o=null==T?Q?\"\\\\langle{\"+r+\"}\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+r+\"}\\\\right\\\\rangle\":Q?\"\\\\langle{\"+r+\"}\\\\vert{\"+T+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+T+\"}\\\\right\\\\rangle\",t.Push(new n.default(o,t.stack.env,t.configuration).mml())},c.KetBra=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=null;\"{\"===t.GetNext()&&(T=t.GetArgument(e,!0));var o=\"\";o=null==T?Q?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+r+\"}\\\\right\\\\vert\":Q?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+T+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+T+\"}\\\\right\\\\vert\",t.Push(new n.default(o,t.stack.env,t.configuration).mml())},c.Expectation=function(t,e){var Q=t.GetStar(),r=Q&&t.GetStar(),T=t.GetArgument(e),o=null;\"{\"===t.GetNext()&&(o=t.GetArgument(e,!0));var i=T&&o?g([o,T,o],Q,r):Q?\"\\\\langle {\"+T+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+T+\"} \\\\right\\\\rangle\";t.Push(new n.default(i,t.stack.env,t.configuration).mml())},c.MatrixElement=function(t,e){var Q=t.GetStar(),r=Q&&t.GetStar(),T=g([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],Q,r);t.Push(new n.default(T,t.stack.env,t.configuration).mml())},c.MatrixQuantity=function(t,e,Q){var r=t.GetStar(),T=Q?\"smallmatrix\":\"array\",o=\"\",i=\"\",a=\"\";switch(t.GetNext()){case\"{\":o=t.GetArgument(e);break;case\"(\":t.i++,i=r?\"\\\\lgroup\":\"(\",a=r?\"\\\\rgroup\":\")\",o=t.GetUpTo(e,\")\");break;case\"[\":t.i++,i=\"[\",a=\"]\",o=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,i=\"|\",a=\"|\",o=t.GetUpTo(e,\"|\");break;default:i=\"(\",a=\")\"}var s=(i?\"\\\\left\":\"\")+i+\"\\\\begin{\"+T+\"}{} \"+o+\"\\\\end{\"+T+\"}\"+(i?\"\\\\right\":\"\")+a;t.Push(new n.default(s,t.stack.env,t.configuration).mml())},c.IdentityMatrix=function(t,e){var Q=t.GetArgument(e),r=parseInt(Q,10);if(isNaN(r))throw new o.default(\"InvalidNumber\",\"Invalid number\");if(r<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var T=Array(r).fill(\"0\"),n=[],i=0;i<r;i++){var a=T.slice();a[i]=\"1\",n.push(a.join(\" & \"))}t.string=n.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},c.XMatrix=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=t.GetArgument(e),n=t.GetArgument(e),i=parseInt(T,10),a=parseInt(n,10);if(isNaN(i)||isNaN(a)||a.toString()!==n||i.toString()!==T)throw new o.default(\"InvalidNumber\",\"Invalid number\");if(i=i<1?1:i,a=a<1?1:a,!Q){var s=Array(a).fill(r).join(\" & \"),l=Array(i).fill(s).join(\"\\\\\\\\ \");return t.string=l+t.string.slice(t.i),void(t.i=0)}var c=\"\";if(1===i&&1===a)c=r;else if(1===i){s=[];for(var u=1;u<=a;u++)s.push(r+\"_{\"+u+\"}\");c=s.join(\" & \")}else if(1===a){for(s=[],u=1;u<=i;u++)s.push(r+\"_{\"+u+\"}\");c=s.join(\"\\\\\\\\ \")}else{var p=[];for(u=1;u<=i;u++){s=[];for(var h=1;h<=a;h++)s.push(r+\"_{{\"+u+\"}{\"+h+\"}}\");p.push(s.join(\" & \"))}c=p.join(\"\\\\\\\\ \")}t.string=c+t.string.slice(t.i),t.i=0},c.PauliMatrix=function(t,e){var Q=t.GetArgument(e),r=Q.slice(1);switch(Q[0]){case\"0\":r+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":r+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":r+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":r+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=r+t.string.slice(t.i),t.i=0},c.DiagonalMatrix=function(t,e,Q){if(\"{\"===t.GetNext()){var r=t.i;t.GetArgument(e);var T=t.i;t.i=r+1;for(var n=[],o=\"\",i=t.i;i<T;){try{o=t.GetUpTo(e,\",\")}catch(e){t.i=T,n.push(t.string.slice(i,T-1));break}if(t.i>=T){n.push(t.string.slice(i,T));break}i=t.i,n.push(o)}t.string=function(t,e){for(var Q=t.length,r=[],T=0;T<Q;T++)r.push(Array(e?Q-T:T+1).join(\"&\")+\"\\\\mqty{\"+t[T]+\"}\");return r.join(\"\\\\\\\\ \")}(n,Q)+t.string.slice(T),t.i=0}},c.AutoClose=function(t,e,Q){var r=t.create(\"token\",\"mo\",{stretchy:!1},e),T=t.itemFactory.create(\"mml\",r).setProperties({autoclose:e});t.Push(T)},c.Macro=T.default.Macro,c.NamedFn=T.default.NamedFn,c.Array=T.default.Array,e.default=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var n=Q(2),o=Q(20),i=0;function a(t,e){var Q=e.parseOptions.options.tags;\"base\"!==Q&&t.tags.hasOwnProperty(Q)&&o.TagsFactory.add(Q,t.tags[Q]);var r=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Q.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},Q.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},Q.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},Q.prototype.formatUrl=function(t,Q){return e.parseOptions.options.tagformat.url(t,Q)},Q}(o.TagsFactory.create(e.parseOptions.options.tags).constructor),n=\"configTags-\"+ ++i;o.TagsFactory.add(n,r),e.parseOptions.options.tags=n}e.tagformatConfig=a,e.TagFormatConfiguration=n.Configuration.create(\"tagformat\",{config:[a,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var T=Q(2),n=Q(86),o=Q(20),i=Q(27),a=Q(164),s=Q(90);function l(t,e,Q,r){var T=t.configuration.packageData.get(\"textmacros\");return t instanceof a.TextParser||(T.texParser=t),[new a.TextParser(e,r?{mathvariant:r}:{},T.parseOptions,Q).mml()]}Q(291),e.textBase=T.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var Q=t.texParser,r=Q.lookup(\"macro\",e);r&&r._func!==s.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),Q.parse(\"macro\",[r?t:Q,e])}},items:(r={},r[i.StartItem.prototype.kind]=i.StartItem,r[i.StopItem.prototype.kind]=i.StopItem,r[i.MmlItem.prototype.kind]=i.MmlItem,r[i.StyleItem.prototype.kind]=i.StyleItem,r)}),T.Configuration.create(\"textmacros\",{config:function(t,Q){var r=new T.ParserConfiguration([]);r.append(e.textBase),r.init();var i=new n.default(r,[]);i.options=Q.parseOptions.options,r.config(Q),o.TagsFactory.addTags(r.tags),i.tags=o.TagsFactory.getDefault(),i.tags.configuration=i,i.packageData=Q.parseOptions.packageData,i.packageData.set(\"textmacros\",{parseOptions:i,jax:Q,texParser:null}),i.options.internalMath=l},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var a=Q(12),s=Q(5),l=Q(9),c=Q(0),u=Q(8),p=Q(27),h=function(t){function e(e,Q,r,T){var n=t.call(this,e,Q,r)||this;return n.level=T,n}return T(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=l.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof p.StopItem)return t.prototype.Push.call(this,e);e instanceof p.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof c.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,Q,r=this.stack.env;try{for(var T=n([\"mathsize\",\"mathcolor\"]),o=T.next();!o.done;o=T.next()){var i=o.value;r[i]&&!t.attributes.getExplicit(i)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),u.default.setAttribute(t,i,r[i]))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,Q,r=this.stack.env;if(t.isToken)try{for(var T=n([\"mathsize\",\"mathcolor\",\"mathvariant\"]),o=T.next();!o.done;o=T.next()){var i=o.value;r[i]&&!t.attributes.getExplicit(i)&&u.default.setAttribute(t,i,r[i])}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,Q){return new e(this.GetArgument(t),Q=Object.assign(Object.assign({},this.stack.env),Q),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var Q=[],r=2;r<arguments.length;r++)Q[r-2]=arguments[r];throw new(s.default.bind.apply(s.default,i([void 0,t,e],Q)))},e}(a.default);e.TextParser=h},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var r=Q(2),T=Q(5),n=Q(3),o=Q(9),i=Q(8),a=Q(19);e.UnicodeMethods={};var s={};e.UnicodeMethods.Unicode=function(t,e){var Q=t.GetBrackets(e),r=null,n=null;Q&&(Q.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(r=Q.replace(/ /g,\"\").split(/,/),n=t.GetBrackets(e)):n=Q);var l=o.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!l.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new T.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var c=parseInt(l.match(/^x/)?\"0\"+l:l);s[c]?n||(n=s[c][2]):s[c]=[800,200,n,c],r&&(s[c][0]=Math.floor(1e3*parseFloat(r[0])),s[c][1]=Math.floor(1e3*parseFloat(r[1])));var u=t.stack.env.font,p={};n?(s[c][2]=p.fontfamily=n.replace(/'/g,\"'\"),u&&(u.match(/bold/)&&(p.fontweight=\"bold\"),u.match(/italic|-mathit/)&&(p.fontstyle=\"italic\"))):u&&(p.mathvariant=u);var h=t.create(\"token\",\"mtext\",p,a.numeric(l));i.default.setProperty(h,\"unicode\",!0),t.Push(h)},new n.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=r.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var r=Q(2),T=Q(13),n=Q(3),o=Q(5);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var Q=t.GetNext(),r=++t.i;if(\"\"===Q)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==Q;)t.i++;if(t.i===t.string.length)throw new o.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var n=t.string.slice(r,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:T.TexConstant.Variant.MONOSPACE},n))},new n.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=r.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonOutputJax=void 0;var a=Q(55),s=Q(14),l=Q(7),c=Q(32),u=Q(84),p=Q(127),h=function(t){function e(e,Q,r){void 0===e&&(e=null),void 0===Q&&(Q=null),void 0===r&&(r=null);var T=this,n=o(l.separateOptions(e,r.OPTIONS),2),i=n[0],a=n[1];return(T=t.call(this,i)||this).factory=T.options.wrapperFactory||new Q,T.factory.jax=T,T.cssStyles=T.options.cssStyles||new p.CssStyles,T.font=T.options.font||new r(a),T.unknownCache=new Map,T}return T(e,t),e.prototype.typeset=function(t,e){this.setDocument(e);var Q=this.createNode();return this.toDOM(t,Q,e),Q},e.prototype.createNode=function(){var t=this.constructor.NAME;return this.html(\"mjx-container\",{class:\"MathJax\",jax:t})},e.prototype.setScale=function(t){var e=this.math.metrics.scale*this.options.scale;1!==e&&this.adaptor.setStyle(t,\"fontSize\",c.percent(e))},e.prototype.toDOM=function(t,e,Q){void 0===Q&&(Q=null),this.setDocument(Q),this.math=t,this.pxPerEm=t.metrics.ex/this.font.params.x_height,t.root.setTeXclass(null),this.setScale(e),this.nodeMap=new Map,this.container=e,this.processMath(t.root,e),this.nodeMap=null,this.executeFilters(this.postFilters,t,Q,e)},e.prototype.getBBox=function(t,e){this.setDocument(e),this.math=t,t.root.setTeXclass(null),this.nodeMap=new Map;var Q=this.factory.wrap(t.root).getBBox();return this.nodeMap=null,Q},e.prototype.getMetrics=function(t){var e,Q;this.setDocument(t);var r=this.adaptor,T=this.getMetricMaps(t);try{for(var n=i(t.math),o=n.next();!o.done;o=n.next()){var a=o.value,l=r.parent(a.start.node);if(a.state()<s.STATE.METRICS&&l){var c=T[a.display?1:0].get(l),u=c.em,p=c.ex,h=c.containerWidth,f=c.lineWidth,d=c.scale,L=c.family;a.setMetrics(u,p,h,f,d),this.options.mtextInheritFont&&(a.outputData.mtextFamily=L),this.options.merrorInheritFont&&(a.outputData.merrorFamily=L),a.state(s.STATE.METRICS)}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},e.prototype.getMetricsFor=function(t,e){var Q=this.options.mtextInheritFont||this.options.merrorInheritFont,r=this.getTestElement(t,e),T=this.measureMetrics(r,Q);return this.adaptor.remove(r),T},e.prototype.getMetricMaps=function(t){var e,Q,r,T,n,o,a,l,c,u,p=this.adaptor,h=[new Map,new Map];try{for(var f=i(t.math),d=f.next();!d.done;d=f.next()){var L=d.value;if((x=p.parent(L.start.node))&&L.state()<s.STATE.METRICS){var H=h[L.display?1:0];H.has(x)||H.set(x,this.getTestElement(x,L.display))}}}catch(t){e={error:t}}finally{try{d&&!d.done&&(Q=f.return)&&Q.call(f)}finally{if(e)throw e.error}}var m=this.options.mtextInheritFont||this.options.merrorInheritFont,y=[new Map,new Map];try{for(var v=i(y.keys()),g=v.next();!g.done;g=v.next()){var b=g.value;try{for(var M=(n=void 0,i(h[b].keys())),V=M.next();!V.done;V=M.next()){var x=V.value;y[b].set(x,this.measureMetrics(h[b].get(x),m))}}catch(t){n={error:t}}finally{try{V&&!V.done&&(o=M.return)&&o.call(M)}finally{if(n)throw n.error}}}}catch(t){r={error:t}}finally{try{g&&!g.done&&(T=v.return)&&T.call(v)}finally{if(r)throw r.error}}try{for(var O=i(y.keys()),_=O.next();!_.done;_=O.next()){b=_.value;try{for(var S=(c=void 0,i(h[b].values())),E=S.next();!E.done;E=S.next()){x=E.value;p.remove(x)}}catch(t){c={error:t}}finally{try{E&&!E.done&&(u=S.return)&&u.call(S)}finally{if(c)throw c.error}}}}catch(t){a={error:t}}finally{try{_&&!_.done&&(l=O.return)&&l.call(O)}finally{if(a)throw a.error}}return y},e.prototype.getTestElement=function(t,e){var Q=this.adaptor;if(!this.testInline){this.testInline=this.html(\"mjx-test\",{style:{display:\"inline-block\",width:\"100%\",\"font-style\":\"normal\",\"font-weight\":\"normal\",\"font-size\":\"100%\",\"font-size-adjust\":\"none\",\"text-indent\":0,\"text-transform\":\"none\",\"letter-spacing\":\"normal\",\"word-spacing\":\"normal\",overflow:\"hidden\",height:\"1px\",\"margin-right\":\"-1px\"}},[this.html(\"mjx-left-box\",{style:{display:\"inline-block\",width:0,float:\"left\"}}),this.html(\"mjx-ex-box\",{style:{position:\"absolute\",overflow:\"hidden\",width:\"1px\",height:\"60ex\"}}),this.html(\"mjx-right-box\",{style:{display:\"inline-block\",width:0,float:\"right\"}})]),this.testDisplay=Q.clone(this.testInline),Q.setStyle(this.testDisplay,\"display\",\"table\"),Q.setStyle(this.testDisplay,\"margin-right\",\"\"),Q.setStyle(Q.firstChild(this.testDisplay),\"display\",\"none\");var r=Q.lastChild(this.testDisplay);Q.setStyle(r,\"display\",\"table-cell\"),Q.setStyle(r,\"width\",\"10000em\"),Q.setStyle(r,\"float\",\"\")}return Q.append(t,Q.clone(e?this.testDisplay:this.testInline))},e.prototype.measureMetrics=function(t,e){var Q=this.adaptor,r=e?Q.fontFamily(t):\"\",T=Q.fontSize(t),n=Q.nodeSize(Q.childNode(t,1))[1]/60||T*this.options.exFactor;return{em:T,ex:n,containerWidth:\"table\"===Q.getStyle(t,\"display\")?Q.nodeSize(Q.lastChild(t))[0]-1:Q.nodeBBox(Q.lastChild(t)).left-Q.nodeBBox(Q.firstChild(t)).left-2,lineWidth:1e6,scale:Math.max(this.options.minScale,this.options.matchFontHeight?n/this.font.params.x_height/T:1),family:r}},e.prototype.styleSheet=function(t){var e,Q,r,T;if(this.setDocument(t),this.cssStyles.clear(),this.cssStyles.addStyles(this.constructor.commonStyles),\"getStyles\"in t)try{for(var n=i(t.getStyles()),o=n.next();!o.done;o=n.next()){var a=o.value;this.cssStyles.addStyles(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}try{for(var s=i(this.factory.getKinds()),l=s.next();!l.done;l=s.next()){var c=l.value;this.addClassStyles(this.factory.getNodeClass(c))}}catch(t){r={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(r)throw r.error}}return this.cssStyles.addStyles(this.font.styles),this.html(\"style\",{id:\"MJX-styles\"},[this.text(\"\\n\"+this.cssStyles.cssText+\"\\n\")])},e.prototype.addClassStyles=function(t){this.cssStyles.addStyles(t.styles)},e.prototype.setDocument=function(t){t&&(this.document=t,this.adaptor.document=t.document)},e.prototype.html=function(t,e,Q,r){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.adaptor.node(t,e,Q,r)},e.prototype.text=function(t){return this.adaptor.text(t)},e.prototype.fixed=function(t,e){return void 0===e&&(e=3),Math.abs(t)<6e-4?\"0\":t.toFixed(e).replace(/\\.?0+$/,\"\")},e.prototype.measureText=function(t,e,Q){void 0===Q&&(Q=[\"\",!1,!1]);var r=this.unknownText(t,e);if(\"-explicitFont\"===e){var T=this.cssFontStyles(Q);this.adaptor.setAttributes(r,{style:T})}return this.measureTextNodeWithCache(r,t,e,Q)},e.prototype.measureTextNodeWithCache=function(t,e,Q,r){void 0===r&&(r=[\"\",!1,!1]),\"-explicitFont\"===Q&&(Q=[r[0],r[1]?\"T\":\"F\",r[2]?\"T\":\"F\",\"\"].join(\"-\")),this.unknownCache.has(Q)||this.unknownCache.set(Q,new Map);var T=this.unknownCache.get(Q),n=T.get(e);if(n)return n;var o=this.measureTextNode(t);return T.set(e,o),o},e.prototype.measureXMLnode=function(t){var e=this.adaptor,Q=this.html(\"mjx-xml-block\",{style:{display:\"inline-block\"}},[e.clone(t)]),r=this.html(\"mjx-baseline\",{style:{display:\"inline-block\",width:0,height:0}}),T=this.html(\"mjx-measure-xml\",{style:{position:\"absolute\",display:\"inline-block\",\"font-family\":\"initial\",\"line-height\":\"normal\"}},[r,Q]);e.append(e.parent(this.math.start.node),this.container),e.append(this.container,T);var n=this.math.metrics.em*this.math.metrics.scale,o=e.nodeBBox(Q),i=o.left,a=o.right,s=o.bottom,l=o.top,c=(a-i)/n,u=(e.nodeBBox(r).top-l)/n,p=(s-l)/n-u;return e.remove(this.container),e.remove(T),{w:c,h:u,d:p}},e.prototype.cssFontStyles=function(t,e){void 0===e&&(e={});var Q=o(t,3),r=Q[0],T=Q[1],n=Q[2];return e[\"font-family\"]=this.font.getFamily(r),T&&(e[\"font-style\"]=\"italic\"),n&&(e[\"font-weight\"]=\"bold\"),e},e.prototype.getFontData=function(t){return t||(t=new u.Styles),[this.font.getFamily(t.get(\"font-family\")),\"italic\"===t.get(\"font-style\"),\"bold\"===t.get(\"font-weight\")]},e.NAME=\"Common\",e.OPTIONS=n(n({},a.AbstractOutputJax.OPTIONS),{scale:1,minScale:.5,matchFontHeight:!0,mtextInheritFont:!1,merrorInheritFont:!1,mtextFont:\"\",merrorFont:\"serif\",mathmlSpacing:!1,skipAttributes:{},exFactor:.5,displayAlign:\"center\",displayIndent:\"0\",wrapperFactory:null,font:null,cssStyles:null}),e.commonStyles={},e}(a.AbstractOutputJax);e.CommonOutputJax=h},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonWrapper=void 0;var a=Q(120),s=Q(0),l=Q(15),c=Q(32),u=Q(84),p=Q(18),h=Q(28);function f(t,e){return t?e<.1111111111111111?0:.1111111111111111:e}var d=function(t){function e(e,Q,r){void 0===r&&(r=null);var T=t.call(this,e,Q)||this;return T.parent=null,T.removedStyles=null,T.styles=null,T.variant=\"\",T.bboxComputed=!1,T.stretch=h.NOSTRETCH,T.font=null,T.parent=r,T.font=e.jax.font,T.bbox=p.BBox.zero(),T.getStyles(),T.getVariant(),T.getScale(),T.getSpace(),T.childNodes=Q.childNodes.map((function(t){var e=T.wrap(t);return e.bbox.pwidth&&(Q.notParent||Q.isKind(\"math\"))&&(T.bbox.pwidth=p.BBox.fullWidth),e})),T}return T(e,t),Object.defineProperty(e.prototype,\"jax\",{get:function(){return this.factory.jax},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"adaptor\",{get:function(){return this.factory.jax.adaptor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"metrics\",{get:function(){return this.factory.jax.math.metrics},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!this.node.notParent&&!this.node.isToken},enumerable:!1,configurable:!0}),e.prototype.wrap=function(t,e){void 0===e&&(e=null);var Q=this.factory.wrap(t,e||this);return e&&e.childNodes.push(Q),this.jax.nodeMap.set(t,Q),Q},e.prototype.getBBox=function(t){if(void 0===t&&(t=!0),this.bboxComputed)return this.bbox;var e=t?this.bbox:p.BBox.zero();return this.computeBBox(e),this.bboxComputed=t,e},e.prototype.computeBBox=function(t,e){var Q,r;void 0===e&&(e=!1),t.empty();try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;t.append(i.getBBox())}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.clean(),this.fixesPWidth&&this.setChildPWidths(e)&&this.computeBBox(t,!0)},e.prototype.setChildPWidths=function(t,e,Q){var r,T;if(void 0===e&&(e=null),void 0===Q&&(Q=!0),t)return!1;Q&&(this.bbox.pwidth=\"\");var o=!1;try{for(var i=n(this.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value,l=s.getBBox();l.pwidth&&s.setChildPWidths(t,null===e?l.w:e,Q)&&(o=!0)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o},e.prototype.invalidateBBox=function(){this.bboxComputed&&(this.bboxComputed=!1,this.parent&&this.parent.invalidateBBox())},e.prototype.copySkewIC=function(t){var e=this.childNodes[0];e&&e.bbox.sk&&(t.sk=e.bbox.sk);var Q=this.childNodes[this.childNodes.length-1];Q&&Q.bbox.ic&&(t.ic=Q.bbox.ic,t.w+=t.ic)},e.prototype.getStyles=function(){var t=this.node.attributes.getExplicit(\"style\");if(t)for(var Q=this.styles=new u.Styles(t),r=0,T=e.removeStyles.length;r<T;r++){var n=e.removeStyles[r];Q.get(n)&&(this.removedStyles||(this.removedStyles={}),this.removedStyles[n]=Q.get(n),Q.set(n,\"\"))}},e.prototype.getVariant=function(){if(this.node.isToken){var t=this.node.attributes,Q=t.get(\"mathvariant\");if(!t.getExplicit(\"mathvariant\")){var r=t.getList(\"fontfamily\",\"fontweight\",\"fontstyle\");if(this.removedStyles){var T=this.removedStyles;T.fontFamily&&(r.family=T.fontFamily),T.fontWeight&&(r.weight=T.fontWeight),T.fontStyle&&(r.style=T.fontStyle)}r.fontfamily&&(r.family=r.fontfamily),r.fontweight&&(r.weight=r.fontweight),r.fontstyle&&(r.style=r.fontstyle),r.weight&&r.weight.match(/^\\d+$/)&&(r.weight=parseInt(r.weight)>600?\"bold\":\"normal\"),r.family?Q=this.explicitVariant(r.family,r.weight,r.style):(this.node.getProperty(\"variantForm\")&&(Q=\"-tex-variant\"),Q=(e.BOLDVARIANTS[r.weight]||{})[Q]||Q,Q=(e.ITALICVARIANTS[r.style]||{})[Q]||Q)}this.variant=Q}},e.prototype.explicitVariant=function(t,e,Q){var r=this.styles;return r||(r=this.styles=new u.Styles),r.set(\"fontFamily\",t),e&&r.set(\"fontWeight\",e),Q&&r.set(\"fontStyle\",Q),\"-explicitFont\"},e.prototype.getScale=function(){var t=1,e=this.parent,Q=e?e.bbox.scale:1,r=this.node.attributes,T=Math.min(r.get(\"scriptlevel\"),2),n=r.get(\"fontsize\"),o=this.node.isToken||this.node.isKind(\"mstyle\")?r.get(\"mathsize\"):r.getInherited(\"mathsize\");if(0!==T){t=Math.pow(r.get(\"scriptsizemultiplier\"),T);var i=this.length2em(r.get(\"scriptminsize\"),.8,1);t<i&&(t=i)}this.removedStyles&&this.removedStyles.fontSize&&!n&&(n=this.removedStyles.fontSize),n&&!r.getExplicit(\"mathsize\")&&(o=n),\"1\"!==o&&(t*=this.length2em(o,1,1)),this.bbox.scale=t,this.bbox.rscale=t/Q},e.prototype.getSpace=function(){var t=this.isTopEmbellished(),e=this.node.hasSpacingAttributes();this.jax.options.mathmlSpacing||e?t&&this.getMathMLSpacing():this.getTeXSpacing(t,e)},e.prototype.getMathMLSpacing=function(){var t=this.node.coreMO(),e=t.attributes,Q=e.get(\"scriptlevel\")>0;this.bbox.L=e.isSet(\"lspace\")?Math.max(0,this.length2em(e.get(\"lspace\"))):f(Q,t.lspace),this.bbox.R=e.isSet(\"rspace\")?Math.max(0,this.length2em(e.get(\"rspace\"))):f(Q,t.rspace)},e.prototype.getTeXSpacing=function(t,e){if(!e){var Q=this.node.texSpacing();Q&&(this.bbox.L=this.length2em(Q))}if(t||e){var r=this.node.coreMO().attributes;r.isSet(\"lspace\")&&(this.bbox.L=Math.max(0,this.length2em(r.get(\"lspace\")))),r.isSet(\"rspace\")&&(this.bbox.R=Math.max(0,this.length2em(r.get(\"rspace\"))))}},e.prototype.isTopEmbellished=function(){return this.node.isEmbellished&&!(this.node.Parent&&this.node.Parent.isEmbellished)},e.prototype.core=function(){return this.jax.nodeMap.get(this.node.core())},e.prototype.coreMO=function(){return this.jax.nodeMap.get(this.node.coreMO())},e.prototype.getText=function(){var t,e,Q=\"\";if(this.node.isToken)try{for(var r=n(this.node.childNodes),T=r.next();!T.done;T=r.next()){var o=T.value;o instanceof s.TextNode&&(Q+=o.getText())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.canStretch=function(t){if(this.stretch=h.NOSTRETCH,this.node.isEmbellished){var e=this.core();e&&e.node!==this.node&&e.canStretch(t)&&(this.stretch=e.stretch)}return 0!==this.stretch.dir},e.prototype.getAlignShift=function(){var t,e=(t=this.node.attributes).getList.apply(t,i(s.indentAttributes)),Q=e.indentalign,r=e.indentshift,T=e.indentalignfirst,n=e.indentshiftfirst;return\"indentalign\"!==T&&(Q=T),\"auto\"===Q&&(Q=this.jax.options.displayAlign),\"indentshift\"!==n&&(r=n),\"auto\"===r&&(r=this.jax.options.displayIndent,\"right\"!==Q||r.match(/^\\s*0[a-z]*\\s*$/)||(r=(\"-\"+r.trim()).replace(/^--/,\"\"))),[Q,this.length2em(r,this.metrics.containerWidth)]},e.prototype.getAlignX=function(t,e,Q){return\"right\"===Q?t-(e.w+e.R)*e.rscale:\"left\"===Q?e.L*e.rscale:(t-e.w*e.rscale)/2},e.prototype.getAlignY=function(t,e,Q,r,T){return\"top\"===T?t-Q:\"bottom\"===T?r-e:\"middle\"===T?(t-Q-(e-r))/2:0},e.prototype.getWrapWidth=function(t){return this.childNodes[t].getBBox().w},e.prototype.getChildAlign=function(t){return\"left\"},e.prototype.percent=function(t){return c.percent(t)},e.prototype.em=function(t){return c.em(t)},e.prototype.px=function(t,e){return void 0===e&&(e=-c.BIGDIMEN),c.px(t,e,this.metrics.em)},e.prototype.length2em=function(t,e,Q){return void 0===e&&(e=1),void 0===Q&&(Q=null),null===Q&&(Q=this.bbox.scale),c.length2em(t,e,Q,this.jax.pxPerEm)},e.prototype.unicodeChars=function(t,e){void 0===e&&(e=this.variant);var Q=l.unicodeChars(t),r=this.font.getVariant(e);if(r&&r.chars){var T=r.chars;Q=Q.map((function(t){return((T[t]||[])[3]||{}).smp||t}))}return Q},e.prototype.remapChars=function(t){return t},e.prototype.mmlText=function(t){return this.node.factory.create(\"text\").setText(t)},e.prototype.mmlNode=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.node.factory.create(t,e,Q)},e.prototype.createMo=function(t){var e=this.node.factory,Q=e.create(\"text\").setText(t),r=e.create(\"mo\",{stretchy:!0},[Q]);r.inheritAttributesFrom(this.node);var T=this.wrap(r);return T.parent=this,T},e.prototype.getVariantChar=function(t,e){var Q=this.font.getChar(t,e)||[0,0,0,{unknown:!0}];return 3===Q.length&&(Q[3]={}),Q},e.kind=\"unknown\",e.styles={},e.removeStyles=[\"fontSize\",\"fontFamily\",\"fontWeight\",\"fontStyle\",\"fontVariant\",\"font\"],e.skipAttributes={fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,class:!0,href:!0,style:!0,xmlns:!0},e.BOLDVARIANTS={bold:{normal:\"bold\",italic:\"bold-italic\",fraktur:\"bold-fraktur\",script:\"bold-script\",\"sans-serif\":\"bold-sans-serif\",\"sans-serif-italic\":\"sans-serif-bold-italic\"},normal:{bold:\"normal\",\"bold-italic\":\"italic\",\"bold-fraktur\":\"fraktur\",\"bold-script\":\"script\",\"bold-sans-serif\":\"sans-serif\",\"sans-serif-bold-italic\":\"sans-serif-italic\"}},e.ITALICVARIANTS={italic:{normal:\"italic\",bold:\"bold-italic\",\"sans-serif\":\"sans-serif-italic\",\"bold-sans-serif\":\"sans-serif-bold-italic\"},normal:{italic:\"normal\",\"bold-italic\":\"bold\",\"sans-serif-italic\":\"sans-serif\",\"sans-serif-bold-italic\":\"bold-sans-serif\"}},e}(a.AbstractWrapper);e.CommonWrapper=d},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonWrapperFactory=void 0;var n=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.jax=null,e}return T(e,t),Object.defineProperty(e.prototype,\"Wrappers\",{get:function(){return this.node},enumerable:!1,configurable:!0}),e.defaultNodes={},e}(Q(121).AbstractWrapperFactory);e.CommonWrapperFactory=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTeXAtomMixin=void 0;var n=Q(0);e.CommonTeXAtomMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(e,Q){if(void 0===Q&&(Q=!1),t.prototype.computeBBox.call(this,e,Q),this.childNodes[0]&&this.childNodes[0].bbox.ic&&(e.ic=this.childNodes[0].bbox.ic),this.node.texClass===n.TEXCLASS.VCENTER){var r=e.h,T=(r+e.d)/2+this.font.params.axis_height-r;e.h+=T,e.d-=T}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTextNodeMixin=void 0,e.CommonTextNodeMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){var Q,r;void 0===e&&(e=!1);var T=this.parent.variant,i=this.node.getText();if(\"-explicitFont\"===T){var a=this.jax.getFontData(this.parent.styles),s=this.jax.measureText(i,T,a),l=s.w,c=s.h,u=s.d;t.h=c,t.d=u,t.w=l}else{var p=this.remappedText(i,T);t.empty();try{for(var h=n(p),f=h.next();!f.done;f=h.next()){var d=f.value,L=o(this.getVariantChar(T,d),4),H=(c=L[0],u=L[1],l=L[2],L[3]);if(H.unknown){var m=this.jax.measureText(String.fromCodePoint(d),T);l=m.w,c=m.h,u=m.d}t.w+=l,c>t.h&&(t.h=c),u>t.d&&(t.d=u),t.ic=H.ic||0,t.sk=H.sk||0}}catch(t){Q={error:t}}finally{try{f&&!f.done&&(r=h.return)&&r.call(h)}finally{if(Q)throw Q.error}}p.length>1&&(t.sk=0),t.clean()}},e.prototype.remappedText=function(t,e){var Q=this.parent.stretch.c;return Q?[Q]:this.parent.remapChars(this.unicodeChars(t,e))},e.prototype.getStyles=function(){},e.prototype.getVariant=function(){},e.prototype.getScale=function(){},e.prototype.getSpace=function(){},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMathMixin=void 0,e.CommonMathMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getWrapWidth=function(t){return this.parent?this.getBBox().w:this.metrics.containerWidth/this.jax.pxPerEm},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMencloseMixin=void 0;var a=Q(45),s=Q(15);e.CommonMencloseMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.notations={},r.renderChild=null,r.msqrt=null,r.padding=a.PADDING,r.thickness=a.THICKNESS,r.arrowhead={x:a.ARROWX,y:a.ARROWY,dx:a.ARROWDX},r.getParameters(),r.getNotations(),r.removeRedundantNotations(),r.initializeNotations(),r}return T(e,t),e.prototype.getParameters=function(){var t=this.node.attributes,e=t.get(\"data-padding\");void 0!==e&&(this.padding=this.length2em(e,a.PADDING));var Q=t.get(\"data-thickness\");void 0!==Q&&(this.thickness=this.length2em(Q,a.THICKNESS));var r=t.get(\"data-arrowhead\");if(void 0!==r){var T=n(s.split(r),3),o=T[0],i=T[1],l=T[2];this.arrowhead={x:o?parseFloat(o):a.ARROWX,y:i?parseFloat(i):a.ARROWY,dx:l?parseFloat(l):a.ARROWDX}}},e.prototype.getNotations=function(){var t,e,Q=this.constructor.notations;try{for(var r=i(s.split(this.node.attributes.get(\"notation\"))),T=r.next();!T.done;T=r.next()){var n=T.value,o=Q.get(n);o&&(this.notations[n]=o,o.renderChild&&(this.renderChild=o.renderer))}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.removeRedundantNotations=function(){var t,e,Q,r;try{for(var T=i(Object.keys(this.notations)),n=T.next();!n.done;n=T.next()){var o=n.value;if(this.notations[o]){var a=this.notations[o].remove||\"\";try{for(var s=(Q=void 0,i(a.split(/ /))),l=s.next();!l.done;l=s.next()){var c=l.value;delete this.notations[c]}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(Q)throw Q.error}}}}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}},e.prototype.initializeNotations=function(){var t,e;try{for(var Q=i(Object.keys(this.notations)),r=Q.next();!r.done;r=Q.next()){var T=r.value,n=this.notations[T].init;n&&n(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=n(this.getBBoxExtenders(),4),r=Q[0],T=Q[1],o=Q[2],i=Q[3],a=this.childNodes[0].getBBox();t.combine(a,i,0),t.h+=r,t.d+=o,t.w+=T,this.setChildPWidths(e)},e.prototype.getBBoxExtenders=function(){var t,e,Q=[0,0,0,0];try{for(var r=i(Object.keys(this.notations)),T=r.next();!T.done;T=r.next()){var n=T.value;this.maximizeEntries(Q,this.notations[n].bbox(this))}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.getPadding=function(){var t,e,Q=[0,0,0,0],r=[0,0,0,0];try{for(var T=i(Object.keys(this.notations)),n=T.next();!n.done;n=T.next()){var o=n.value;this.maximizeEntries(Q,this.notations[o].bbox(this));var a=this.notations[o].border;a&&this.maximizeEntries(r,a(this))}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return[0,1,2,3].map((function(t){return Q[t]-r[t]}))},e.prototype.maximizeEntries=function(t,e){for(var Q=0;Q<t.length;Q++)t[Q]<e[Q]&&(t[Q]=e[Q])},e.prototype.getArgMod=function(t,e){return[Math.atan2(e,t),Math.sqrt(t*t+e*e)]},e.prototype.arrow=function(t,e,Q){return void 0===Q&&(Q=!1),null},e.prototype.arrowData=function(){var t=n([this.padding,this.thickness],2),e=t[0],Q=t[1]*(this.arrowhead.x+Math.max(1,this.arrowhead.dx)),r=this.childNodes[0].getBBox(),T=r.h,o=r.d,i=r.w,a=T+o,s=Math.sqrt(a*a+i*i),l=Math.max(e,Q*i/s),c=Math.max(e,Q*a/s),u=n(this.getArgMod(i+2*l,a+2*c),2);return{a:u[0],W:u[1],x:l,y:c}},e.prototype.createMsqrt=function(t){var e=this.node.factory.create(\"msqrt\");e.inheritAttributesFrom(this.node),e.childNodes[0]=t.node;var Q=this.wrap(e);return Q.parent=this,Q},e.prototype.sqrtTRBL=function(){var t=this.msqrt.getBBox(),e=this.msqrt.childNodes[0].getBBox();return[t.h-e.h,0,t.d-e.d,t.w-e.w]},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMfencedMixin=void 0,e.CommonMfencedMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.mrow=null,r.createMrow(),r.addMrowChildren(),r}return T(e,t),e.prototype.createMrow=function(){var t=this.node.factory.create(\"inferredMrow\");t.inheritAttributesFrom(this.node),this.mrow=this.wrap(t),this.mrow.parent=this},e.prototype.addMrowChildren=function(){var t,e,Q=this.node,r=this.mrow;this.addMo(Q.open),this.childNodes.length&&r.childNodes.push(this.childNodes[0]);var T=0;try{for(var n=i(this.childNodes.slice(1)),o=n.next();!o.done;o=n.next()){var a=o.value;this.addMo(Q.separators[T++]),r.childNodes.push(a)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.addMo(Q.close),r.stretchChildren()},e.prototype.addMo=function(t){if(t){var e=this.wrap(t);this.mrow.childNodes.push(e),e.parent=this.mrow}},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.updateFrom(this.mrow.getBBox()),this.setChildPWidths(e)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMfracMixin=void 0,e.CommonMfracMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;if(r.bevel=null,r.pad=r.node.getProperty(\"withDelims\")?0:r.font.params.nulldelimiterspace,r.node.attributes.get(\"bevelled\")){var T=r.getBevelData(r.isDisplay()).H,n=r.bevel=r.createMo(\"/\");n.canStretch(1),n.getStretchedVariant([T],!0)}return r}return T(e,t),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.empty();var Q=this.node.attributes.getList(\"linethickness\",\"bevelled\"),r=Q.linethickness,T=Q.bevelled,n=this.isDisplay(),o=null;if(T)this.getBevelledBBox(t,n);else{var i=this.length2em(String(r),.06);o=-2*this.pad,0===i?this.getAtopBBox(t,n):(this.getFractionBBox(t,n,i),o-=.2),o+=t.w}t.clean(),this.setChildPWidths(e,o)},e.prototype.getFractionBBox=function(t,e,Q){var r=this.childNodes[0].getBBox(),T=this.childNodes[1].getBBox(),n=this.font.params.axis_height,o=this.getTUV(e,Q),i=o.T,a=o.u,s=o.v;t.combine(r,0,n+i+Math.max(r.d*r.rscale,a)),t.combine(T,0,n-i-Math.max(T.h*T.rscale,s)),t.w+=2*this.pad+.2},e.prototype.getTUV=function(t,e){var Q=this.font.params,r=Q.axis_height,T=(t?3.5:1.5)*e;return{T:(t?3.5:1.5)*e,u:(t?Q.num1:Q.num2)-r-T,v:(t?Q.denom1:Q.denom2)+r-T}},e.prototype.getAtopBBox=function(t,e){var Q=this.getUVQ(e),r=Q.u,T=Q.v,n=Q.nbox,o=Q.dbox;t.combine(n,0,r),t.combine(o,0,-T),t.w+=2*this.pad},e.prototype.getUVQ=function(t){var e=this.childNodes[0].getBBox(),Q=this.childNodes[1].getBBox(),r=this.font.params,T=n(t?[r.num1,r.denom1]:[r.num3,r.denom2],2),o=T[0],i=T[1],a=(t?7:3)*r.rule_thickness,s=o-e.d*e.scale-(Q.h*Q.scale-i);return s<a&&(o+=(a-s)/2,i+=(a-s)/2,s=a),{u:o,v:i,q:s,nbox:e,dbox:Q}},e.prototype.getBevelledBBox=function(t,e){var Q=this.getBevelData(e),r=Q.u,T=Q.v,n=Q.delta,o=Q.nbox,i=Q.dbox,a=this.bevel.getBBox();t.combine(o,0,r),t.combine(a,t.w-n/2,0),t.combine(i,t.w-n/2,T)},e.prototype.getBevelData=function(t){var e=this.childNodes[0].getBBox(),Q=this.childNodes[1].getBBox(),r=t?.4:.15,T=Math.max(e.scale*(e.h+e.d),Q.scale*(Q.h+Q.d))+2*r,n=this.font.params.axis_height;return{H:T,delta:r,u:e.scale*(e.d-e.h)/2+n+r,v:Q.scale*(Q.d-Q.h)/2+n-r,nbox:e,dbox:Q}},e.prototype.canStretch=function(t){return!1},e.prototype.isDisplay=function(){var t=this.node.attributes.getList(\"displaystyle\",\"scriptlevel\"),e=t.displaystyle,Q=t.scriptlevel;return e&&0===Q},e.prototype.getWrapWidth=function(t){var e=this.node.attributes;return e.get(\"bevelled\")?this.childNodes[t].getBBox().w:this.getBBox().w-(this.length2em(e.get(\"linethickness\"))?.2:0)-2*this.pad},e.prototype.getChildAlign=function(t){var e=this.node.attributes;return e.get(\"bevelled\")?\"left\":e.get([\"numalign\",\"denomalign\"][t])},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMglyphMixin=void 0,e.CommonMglyphMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.getParameters(),r}return T(e,t),e.prototype.getParameters=function(){var t=this.node.attributes.getList(\"width\",\"height\",\"valign\"),e=t.width,Q=t.height,r=t.valign;this.width=\"auto\"===e?1:this.length2em(e),this.height=\"auto\"===Q?1:this.length2em(Q),this.valign=this.length2em(r||\"0\")},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.w=this.width,t.h=this.height+this.valign,t.d=-this.valign},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMiMixin=void 0,e.CommonMiMixin=function(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.noIC=!1,e}return T(e,t),e.prototype.computeBBox=function(e,Q){void 0===Q&&(Q=!1),t.prototype.computeBBox.call(this,e),this.copySkewIC(e),this.noIC&&(e.w-=e.ic)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMmultiscriptsMixin=e.ScriptNames=e.NextScript=void 0;var i=Q(18);e.NextScript={base:\"subList\",subList:\"supList\",supList:\"subList\",psubList:\"psupList\",psupList:\"psubList\"},e.ScriptNames=[\"sup\",\"sup\",\"psup\",\"psub\"],e.CommonMmultiscriptsMixin=function(t){return function(t){function Q(){var e=null!==t&&t.apply(this,arguments)||this;return e.scriptData=null,e.firstPrescript=0,e}return T(Q,t),Q.prototype.combinePrePost=function(t,e){var Q=new i.BBox(t);return Q.combine(e,0,0),Q},Q.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.font.params.scriptspace,r=this.getScriptData(),T=this.combinePrePost(r.sub,r.psub),o=this.combinePrePost(r.sup,r.psup),i=n(this.getUVQ(r.base,T,o),2),a=i[0],s=i[1];if(t.empty(),r.numPrescripts&&(t.combine(r.psup,Q,a),t.combine(r.psub,Q,s)),t.append(r.base),r.numScripts){var l=t.w;t.combine(r.sup,l,a),t.combine(r.sub,l,s),t.w+=Q}t.clean(),this.setChildPWidths(e)},Q.prototype.getScriptData=function(){if(this.scriptData)return this.scriptData;var t=this.scriptData={base:null,sub:i.BBox.empty(),sup:i.BBox.empty(),psub:i.BBox.empty(),psup:i.BBox.empty(),numPrescripts:0,numScripts:0},e=this.getScriptBBoxLists();return this.combineBBoxLists(t.sub,t.sup,e.subList,e.supList),this.combineBBoxLists(t.psub,t.psup,e.psubList,e.psupList),this.scriptData.base=e.base[0],this.scriptData.numPrescripts=e.psubList.length,this.scriptData.numScripts=e.subList.length,this.scriptData},Q.prototype.getScriptBBoxLists=function(){var t,Q,r={base:[],subList:[],supList:[],psubList:[],psupList:[]},T=\"base\";try{for(var n=o(this.childNodes),i=n.next();!i.done;i=n.next()){var a=i.value;a.node.isKind(\"mprescripts\")?T=\"psubList\":(r[T].push(a.getBBox()),T=e.NextScript[T])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(t)throw t.error}}return this.firstPrescript=r.subList.length+r.supList.length+2,this.padLists(r.subList,r.supList),this.padLists(r.psubList,r.psupList),r},Q.prototype.padLists=function(t,e){t.length>e.length&&e.push(i.BBox.empty())},Q.prototype.combineBBoxLists=function(t,e,Q,r){for(var T=0;T<Q.length;T++){var o=n(this.getScaledWHD(Q[T]),3),i=o[0],a=o[1],s=o[2],l=n(this.getScaledWHD(r[T]),3),c=l[0],u=l[1],p=l[2],h=Math.max(i,c);t.w+=h,e.w+=h,a>t.h&&(t.h=a),s>t.d&&(t.d=s),u>e.h&&(e.h=u),p>e.d&&(e.d=p)}},Q.prototype.getScaledWHD=function(t){var e=t.w,Q=t.h,r=t.d,T=t.rscale;return[e*T,Q*T,r*T]},Q.prototype.getUVQ=function(e,Q,r){var T;if(!this.UVQ){var o=n([0,0,0],3),i=o[0],a=o[1],s=o[2];0===Q.h&&0===Q.d?i=this.getU(e,r):0===r.h&&0===r.d?i=-this.getV(e,Q):(i=(T=n(t.prototype.getUVQ.call(this,e,Q,r),3))[0],a=T[1],s=T[2]),this.UVQ=[i,a,s]}return this.UVQ},Q}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMnMixin=void 0,e.CommonMnMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.remapChars=function(t){if(t.length){var e=this.font.getRemappedChar(\"mn\",t[0]);if(e){var Q=this.unicodeChars(e,this.variant);1===Q.length?t[0]=Q[0]:t=Q.concat(t.slice(1))}}return t},e}(t)}},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMoMixin=e.DirectionVH=void 0;var s=Q(28);e.DirectionVH=((T={})[1]=\"v\",T[2]=\"h\",T),e.CommonMoMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this;return r.noIC=!1,r.size=null,r.isAccent=r.node.isAccent,r}return n(e,t),e.prototype.computeBBox=function(e,Q){void 0===Q&&(Q=!1);var r=0!==this.stretch.dir;if(r&&null===this.size&&this.getStretchedVariant([0]),!(r&&this.size<0)&&(t.prototype.computeBBox.call(this,e),this.copySkewIC(e),this.noIC&&(e.w-=e.ic),this.node.attributes.get(\"symmetric\")&&2!==this.stretch.dir)){var T=(e.h+e.d)/2+this.font.params.axis_height-e.h;e.h+=T,e.d-=T}},e.prototype.getVariant=function(){this.node.attributes.get(\"largeop\")?this.variant=this.node.attributes.get(\"displaystyle\")?\"-largeop\":\"-smallop\":t.prototype.getVariant.call(this)},e.prototype.canStretch=function(t){if(0!==this.stretch.dir)return this.stretch.dir===t;if(!this.node.attributes.get(\"stretchy\"))return!1;var e=this.getText();if(1!==Array.from(e).length)return!1;var Q=this.font.getDelimiter(e.codePointAt(0));return this.stretch=Q&&Q.dir===t?Q:s.NOSTRETCH,0!==this.stretch.dir},e.prototype.getStretchedVariant=function(t,e){var Q,r;if(void 0===e&&(e=!1),0!==this.stretch.dir){var T=this.getWH(t),n=this.getSize(\"minsize\",0),o=this.getSize(\"maxsize\",1/0);T=Math.max(n,Math.min(o,T));var i=n||e?T:Math.max(T*this.font.params.delimiterfactor/1e3,T-this.font.params.delimitershortfall),s=this.stretch,l=s.c||this.getText().codePointAt(0),c=0;if(s.sizes)try{for(var u=a(s.sizes),p=u.next();!p.done;p=u.next()){if(p.value>=i)return this.variant=this.font.getSizeVariant(l,c),void(this.size=c);c++}}catch(t){Q={error:t}}finally{try{p&&!p.done&&(r=u.return)&&r.call(u)}finally{if(Q)throw Q.error}}s.stretch?(this.size=-1,this.invalidateBBox(),this.getStretchBBox(t,T,s)):(this.variant=this.font.getSizeVariant(l,c-1),this.size=c-1)}},e.prototype.getSize=function(t,e){var Q=this.node.attributes;return Q.isSet(t)&&(e=this.length2em(Q.get(t),1,1)),e},e.prototype.getWH=function(t){if(0===t.length)return 0;if(1===t.length)return t[0];var e=o(t,2),Q=e[0],r=e[1],T=this.font.params.axis_height;return this.node.attributes.get(\"symmetric\")?2*Math.max(Q-T,r+T):Q+r},e.prototype.getStretchBBox=function(t,e,Q){var r;Q.hasOwnProperty(\"min\")&&Q.min>e&&(e=Q.min);var T=o(Q.HDW,3),n=T[0],i=T[1],a=T[2];1===this.stretch.dir?(n=(r=o(this.getBaseline(t,e,Q),2))[0],i=r[1]):a=e,this.bbox.h=n,this.bbox.d=i,this.bbox.w=a},e.prototype.getBaseline=function(t,e,Q){var r=2===t.length&&t[0]+t[1]===e,T=this.node.attributes.get(\"symmetric\"),n=o(r?t:[e,0],2),i=n[0],a=n[1],s=o([i+a,0],2),l=s[0],c=s[1];if(T){var u=this.font.params.axis_height;r&&(l=2*Math.max(i-u,a+u)),c=l/2-u}else if(r)c=a;else{var p=o(Q.HDW||[.75,.25],2),h=p[0],f=p[1];c=f*(l/(h+f))}return[l-c,c]},e.prototype.remapChars=function(t){if(1===t.length){var e=this.node.coreParent().parent,Q=this.isAccent&&!e.isKind(\"mrow\")?\"accent\":\"mo\",r=this.font.getRemappedChar(Q,t[0]);r&&(t=this.unicodeChars(r,this.variant))}return t},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMpaddedMixin=void 0,e.CommonMpaddedMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getDimens=function(){var t=this.node.attributes.getList(\"width\",\"height\",\"depth\",\"lspace\",\"voffset\"),e=this.childNodes[0].getBBox(),Q=e.w,r=e.h,T=e.d,n=Q,o=r,i=T,a=0,s=0,l=0;\"\"!==t.width&&(Q=this.dimen(t.width,e,\"w\",0)),\"\"!==t.height&&(r=this.dimen(t.height,e,\"h\",0)),\"\"!==t.depth&&(T=this.dimen(t.depth,e,\"d\",0)),\"\"!==t.voffset&&(s=this.dimen(t.voffset,e)),\"\"!==t.lspace&&(a=this.dimen(t.lspace,e));var c=this.node.attributes.get(\"data-align\");return c&&(l=this.getAlignX(Q,e,c)),[o,i,n,r-o,T-i,Q-n,a,s,l]},e.prototype.dimen=function(t,e,Q,r){void 0===Q&&(Q=\"\"),void 0===r&&(r=null);var T=(t=String(t)).match(/width|height|depth/),n=T?e[T[0].charAt(0)]:Q?e[Q]:0,o=this.length2em(t,n)||0;return t.match(/^[-+]/)&&Q&&(o+=n),null!=r&&(o=Math.max(r,o)),o},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=n(this.getDimens(),6),r=Q[0],T=Q[1],o=Q[2],i=Q[3],a=Q[4],s=Q[5];t.w=o+s,t.h=r+i,t.d=T+a,this.setChildPWidths(e,t.w)},e.prototype.getWrapWidth=function(t){return this.getBBox().w},e.prototype.getChildAlign=function(t){return this.node.attributes.get(\"data-align\")||\"left\"},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMrootMixin=void 0,e.CommonMrootMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"surd\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"root\",{get:function(){return 1},enumerable:!1,configurable:!0}),e.prototype.combineRootBBox=function(t,e,Q){var r=this.childNodes[this.root].getBBox(),T=this.getRootDimens(e,Q)[1];t.combine(r,0,T)},e.prototype.getRootDimens=function(t,e){var Q=this.childNodes[this.surd],r=this.childNodes[this.root].getBBox(),T=(Q.size<0?.5:.6)*t.w,n=r.w,o=r.rscale,i=Math.max(n,T/o),a=Math.max(0,i-n);return[i*o-T,this.rootHeight(r,t,Q.size,e),a]},e.prototype.rootHeight=function(t,e,Q,r){var T=e.h+e.d;return(Q<0?1.9:.55*T)-(T-r)+Math.max(0,t.d*t.rscale)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsMixin=void 0,e.CommonMsMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.node.attributes,n=T.getList(\"lquote\",\"rquote\");return\"monospace\"!==r.variant&&(T.isSet(\"lquote\")||'\"'!==n.lquote||(n.lquote=\"\\u201c\"),T.isSet(\"rquote\")||'\"'!==n.rquote||(n.rquote=\"\\u201d\")),r.childNodes.unshift(r.createText(n.lquote)),r.childNodes.push(r.createText(n.rquote)),r}return T(e,t),e.prototype.createText=function(t){var e=this.wrap(this.mmlText(t));return e.parent=this,e},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMspaceMixin=void 0,e.CommonMspaceMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.node.attributes;t.w=this.length2em(Q.get(\"width\"),0),t.h=this.length2em(Q.get(\"height\"),0),t.d=this.length2em(Q.get(\"depth\"),0)},e.prototype.handleVariant=function(){},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsqrtMixin=void 0;var i=Q(18);e.CommonMsqrtMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.createMo(\"\\u221a\");T.canStretch(1);var n=r.childNodes[r.base].getBBox(),i=n.h,a=n.d,s=r.font.params.rule_thickness,l=r.node.attributes.get(\"displaystyle\")?r.font.params.x_height:s;return r.surdH=i+a+2*s+l/4,T.getStretchedVariant([r.surdH-a,a],!0),r}return T(e,t),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"surd\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"root\",{get:function(){return null},enumerable:!1,configurable:!0}),e.prototype.createMo=function(e){var Q=t.prototype.createMo.call(this,e);return this.childNodes.push(Q),Q},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.childNodes[this.surd].getBBox(),r=new i.BBox(this.childNodes[this.base].getBBox()),T=this.getPQ(Q)[1],o=this.font.params.rule_thickness,a=r.h+T+o,s=n(this.getRootDimens(Q,a),1)[0];t.h=a+o,this.combineRootBBox(t,Q,a),t.combine(Q,s,a-Q.h),t.combine(r,s+Q.w,0),t.clean(),this.setChildPWidths(e)},e.prototype.combineRootBBox=function(t,e,Q){},e.prototype.getPQ=function(t){var e=this.font.params.rule_thickness,Q=this.node.attributes.get(\"displaystyle\")?this.font.params.x_height:e;return[Q,t.h+t.d>this.surdH?(t.h+t.d-(this.surdH-2*e-Q/2))/2:e+Q/4]},e.prototype.getRootDimens=function(t,e){return[0,0,0,0]},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtableMixin=void 0;var a=Q(18),s=Q(15),l=Q(128);e.CommonMtableMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;r.numCols=0,r.numRows=0,r.data=null,r.pwidthCells=[],r.pWidth=0,r.numCols=l.max(r.tableRows.map((function(t){return t.numCells}))),r.numRows=r.childNodes.length,r.hasLabels=r.childNodes.reduce((function(t,e){return t||e.node.isKind(\"mlabeledtr\")}),!1),r.findContainer(),r.isTop=!r.container||r.container.node.isKind(\"math\")&&!r.container.parent,r.isTop&&(r.jax.table=r),r.getPercentageWidth();var T=r.node.attributes;return r.frame=\"none\"!==T.get(\"frame\"),r.fLine=r.frame?.07:0,r.fSpace=r.frame?r.convertLengths(r.getAttributeArray(\"framespacing\")):[0,0],r.cSpace=r.convertLengths(r.getColumnAttributes(\"columnspacing\")),r.rSpace=r.convertLengths(r.getRowAttributes(\"rowspacing\")),r.cLines=r.getColumnAttributes(\"columnlines\").map((function(t){return\"none\"===t?0:.07})),r.rLines=r.getRowAttributes(\"rowlines\").map((function(t){return\"none\"===t?0:.07})),r.cWidths=r.getColumnWidths(),r.stretchRows(),r.stretchColumns(),r}return T(e,t),Object.defineProperty(e.prototype,\"tableRows\",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),e.prototype.findContainer=function(){for(var t=this,e=t.parent;e&&(e.node.notParent||e.node.isKind(\"mrow\"));)t=e,e=e.parent;this.container=e,this.containerI=t.node.childPosition()},e.prototype.getPercentageWidth=function(){if(this.hasLabels)this.bbox.pwidth=a.BBox.fullWidth;else{var t=this.node.attributes.get(\"width\");s.isPercent(t)&&(this.bbox.pwidth=t)}},e.prototype.stretchRows=function(){for(var t=this.node.attributes.get(\"equalrows\"),e=t?this.getEqualRowHeight():0,Q=t?this.getTableData():{H:[0],D:[0]},r=Q.H,T=Q.D,n=this.tableRows,o=0;o<this.numRows;o++){var i=t?[(e+r[o]-T[o])/2,(e-r[o]+T[o])/2]:null;n[o].stretchChildren(i)}},e.prototype.stretchColumns=function(){for(var t=0;t<this.numCols;t++){var e=\"number\"==typeof this.cWidths[t]?this.cWidths[t]:null;this.stretchColumn(t,e)}},e.prototype.stretchColumn=function(t,e){var Q,r,T,n,o,a,s=[];try{for(var l=i(this.tableRows),c=l.next();!c.done;c=l.next()){if(L=c.value.getChild(t))0===(g=L.childNodes[0]).stretch.dir&&g.canStretch(2)&&s.push(g)}}catch(t){Q={error:t}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(Q)throw Q.error}}var u=s.length,p=this.childNodes.length;if(u&&p>1){if(null===e){e=0;var h=u>1&&u===p;try{for(var f=i(this.tableRows),d=f.next();!d.done;d=f.next()){var L;if(L=d.value.getChild(t)){var H=0===(g=L.childNodes[0]).stretch.dir;if(h||H){var m=g.getBBox(H).w;m>e&&(e=m)}}}}catch(t){T={error:t}}finally{try{d&&!d.done&&(n=f.return)&&n.call(f)}finally{if(T)throw T.error}}}try{for(var y=i(s),v=y.next();!v.done;v=y.next()){var g;(g=v.value).coreMO().getStretchedVariant([e])}}catch(t){o={error:t}}finally{try{v&&!v.done&&(a=y.return)&&a.call(y)}finally{if(o)throw o.error}}}},e.prototype.getTableData=function(){if(this.data)return this.data;for(var t=new Array(this.numRows).fill(0),e=new Array(this.numRows).fill(0),Q=new Array(this.numCols).fill(0),r=new Array(this.numRows),T=new Array(this.numRows),n=[0],o=this.tableRows,i=0;i<o.length;i++){for(var a=o[i],s=0;s<a.numCells;s++){var l=a.getChild(s);this.updateHDW(l,s,i,t,e,Q),this.recordPWidthCell(l,s)}r[i]=t[i],T[i]=e[i],a.labeled&&this.updateHDW(a.childNodes[0],0,i,t,e,n)}var c=n[0];return this.data={H:t,D:e,W:Q,NH:r,ND:T,L:c},this.data},e.prototype.updateHDW=function(t,e,Q,r,T,n){void 0===n&&(n=null);var o=t.getBBox(),i=o.h,a=o.d,s=o.w;i<.75&&(i=.75),a<.25&&(a=.25),i>r[Q]&&(r[Q]=i),a>T[Q]&&(T[Q]=a),n&&s>n[e]&&(n[e]=s)},e.prototype.recordPWidthCell=function(t,e){t.childNodes[0]&&t.childNodes[0].getBBox().pwidth&&this.pwidthCells.push([t,e])},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q,r,T=this.getTableData(),o=T.H,i=T.D;if(this.node.attributes.get(\"equalrows\")){var a=this.getEqualRowHeight();Q=l.sum([].concat(this.rLines,this.rSpace))+a*this.numRows}else Q=l.sum(o.concat(i,this.rLines,this.rSpace));Q+=2*(this.fLine+this.fSpace[1]);var c=this.getComputedWidths();r=l.sum(c.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]);var u=this.node.attributes.get(\"width\");\"auto\"!==u&&(r=Math.max(this.length2em(u,0)+2*this.fLine,r));var p=n(this.getBBoxHD(Q),2),h=p[0],f=p[1];t.h=h,t.d=f,t.w=r;var d=n(this.getBBoxLR(),2),L=d[0],H=d[1];t.L=L,t.R=H,s.isPercent(u)||this.setColumnPWidths()},e.prototype.setChildPWidths=function(t,e,Q){var r=this.node.attributes.get(\"width\");if(!s.isPercent(r))return!1;this.hasLabels||(this.bbox.pwidth=\"\",this.container.bbox.pwidth=\"\");var T=this.bbox,n=T.w,o=T.L,i=T.R,a=Math.max(n,this.length2em(r,Math.max(e,o+n+i))),c=this.node.attributes.get(\"equalcolumns\")?Array(this.numCols).fill(this.percent(1/Math.max(1,this.numCols))):this.getColumnAttributes(\"columnwidth\",0);this.cWidths=this.getColumnWidthsFixed(c,a);var u=this.getComputedWidths();return this.pWidth=l.sum(u.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]),this.isTop&&(this.bbox.w=this.pWidth),this.setColumnPWidths(),this.pWidth!==n&&this.parent.invalidateBBox(),this.pWidth!==n},e.prototype.setColumnPWidths=function(){var t,e,Q=this.cWidths;try{for(var r=i(this.pwidthCells),T=r.next();!T.done;T=r.next()){var o=n(T.value,2),a=o[0],s=o[1];a.setChildPWidths(!1,Q[s])&&(a.invalidateBBox(),a.getBBox())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.getBBoxHD=function(t){var e=n(this.getAlignmentRow(),2),Q=e[0],r=e[1];if(null===r){var T=this.font.params.axis_height,o=t/2;return{top:[0,t],center:[o,o],bottom:[t,0],baseline:[o,o],axis:[o+T,o-T]}[Q]||[o,o]}var i=this.getVerticalPosition(r,Q);return[i,t-i]},e.prototype.getBBoxLR=function(){if(this.hasLabels){var t=this.node.attributes.get(\"side\"),e=n(this.getPadAlignShift(t),2),Q=e[0];return\"center\"===e[1]?[Q,Q]:\"left\"===t?[Q,0]:[0,Q]}return[0,0]},e.prototype.getPadAlignShift=function(t){var e=this.getTableData().L+this.length2em(this.node.attributes.get(\"minlabelspacing\")),Q=n(null==this.styles?[\"\",\"\"]:[this.styles.get(\"padding-left\"),this.styles.get(\"padding-right\")],2),r=Q[0],T=Q[1];(r||T)&&(e=Math.max(e,this.length2em(r||\"0\"),this.length2em(T||\"0\")));var o=n(this.getAlignShift(),2),i=o[0],a=o[1];return i===t&&(a=\"left\"===t?Math.max(e,a)-e:Math.min(-e,a)+e),[e,i,a]},e.prototype.getAlignShift=function(){return this.isTop?t.prototype.getAlignShift.call(this):[this.container.getChildAlign(this.containerI),0]},e.prototype.getWidth=function(){return this.pWidth||this.getBBox().w},e.prototype.getEqualRowHeight=function(){var t=this.getTableData(),e=t.H,Q=t.D,r=Array.from(e.keys()).map((function(t){return e[t]+Q[t]}));return Math.max.apply(Math,r)},e.prototype.getComputedWidths=function(){var t=this,e=this.getTableData().W,Q=Array.from(e.keys()).map((function(Q){return\"number\"==typeof t.cWidths[Q]?t.cWidths[Q]:e[Q]}));return this.node.attributes.get(\"equalcolumns\")&&(Q=Array(Q.length).fill(l.max(Q))),Q},e.prototype.getColumnWidths=function(){var t=this.node.attributes.get(\"width\");if(this.node.attributes.get(\"equalcolumns\"))return this.getEqualColumns(t);var e=this.getColumnAttributes(\"columnwidth\",0);return\"auto\"===t?this.getColumnWidthsAuto(e):s.isPercent(t)?this.getColumnWidthsPercent(e):this.getColumnWidthsFixed(e,this.length2em(t))},e.prototype.getEqualColumns=function(t){var e,Q=Math.max(1,this.numCols);if(\"auto\"===t){var r=this.getTableData().W;e=l.max(r)}else if(s.isPercent(t))e=this.percent(1/Q);else{var T=l.sum([].concat(this.cLines,this.cSpace))+2*this.fSpace[0];e=Math.max(0,this.length2em(t)-T)/Q}return Array(this.numCols).fill(e)},e.prototype.getColumnWidthsAuto=function(t){var e=this;return t.map((function(t){return\"auto\"===t||\"fit\"===t?null:s.isPercent(t)?t:e.length2em(t)}))},e.prototype.getColumnWidthsPercent=function(t){var e=this,Q=t.indexOf(\"fit\")>=0,r=(Q?this.getTableData():{W:null}).W;return Array.from(t.keys()).map((function(T){var n=t[T];return\"fit\"===n?null:\"auto\"===n?Q?r[T]:null:s.isPercent(n)?n:e.length2em(n)}))},e.prototype.getColumnWidthsFixed=function(t,e){var Q=this,r=Array.from(t.keys()),T=r.filter((function(e){return\"fit\"===t[e]})),n=r.filter((function(e){return\"auto\"===t[e]})),o=T.length||n.length,i=(o?this.getTableData():{W:null}).W,a=e-l.sum([].concat(this.cLines,this.cSpace))-2*this.fSpace[0],s=a;r.forEach((function(r){var T=t[r];s-=\"fit\"===T||\"auto\"===T?i[r]:Q.length2em(T,e)}));var c=o&&s>0?s/o:0;return r.map((function(e){var r=t[e];return\"fit\"===r?i[e]+c:\"auto\"===r?i[e]+(0===T.length?c:0):Q.length2em(r,a)}))},e.prototype.getVerticalPosition=function(t,e){for(var Q=this.node.attributes.get(\"equalrows\"),r=this.getTableData(),T=r.H,o=r.D,i=Q?this.getEqualRowHeight():0,a=this.getRowHalfSpacing(),s=this.fLine,l=0;l<t;l++)s+=a[l]+(Q?i:T[l]+o[l])+a[l+1]+this.rLines[l];var c=n(Q?[(i+T[t]-o[t])/2,(i-T[t]+o[t])/2]:[T[t],o[t]],2),u=c[0],p=c[1];return s+={top:0,center:a[t]+(u+p)/2,bottom:a[t]+u+p+a[t+1],baseline:a[t]+u,axis:a[t]+u-.25}[e]||0},e.prototype.getEmHalfSpacing=function(t,e){var Q=this.em(t),r=this.addEm(e,2);return r.unshift(Q),r.push(Q),r},e.prototype.getRowHalfSpacing=function(){var t=this.rSpace.map((function(t){return t/2}));return t.unshift(this.fSpace[1]),t.push(this.fSpace[1]),t},e.prototype.getColumnHalfSpacing=function(){var t=this.cSpace.map((function(t){return t/2}));return t.unshift(this.fSpace[0]),t.push(this.fSpace[0]),t},e.prototype.getAlignmentRow=function(){var t=n(s.split(this.node.attributes.get(\"align\")),2),e=t[0],Q=t[1];if(null==Q)return[e,null];var r=parseInt(Q);return r<0&&(r+=this.numRows+1),[e,r<1||r>this.numRows?null:r-1]},e.prototype.getColumnAttributes=function(t,e){void 0===e&&(e=1);var Q=this.numCols-e,r=this.getAttributeArray(t);if(0===r.length)return null;for(;r.length<Q;)r.push(r[r.length-1]);return r.length>Q&&r.splice(Q),r},e.prototype.getRowAttributes=function(t,e){void 0===e&&(e=1);var Q=this.numRows-e,r=this.getAttributeArray(t);if(0===r.length)return null;for(;r.length<Q;)r.push(r[r.length-1]);return r.length>Q&&r.splice(Q),r},e.prototype.getAttributeArray=function(t){var e=this.node.attributes.get(t);return e?s.split(e):[this.node.attributes.getDefault(t)]},e.prototype.addEm=function(t,e){var Q=this;return void 0===e&&(e=1),t?t.map((function(t){return Q.em(t/e)})):null},e.prototype.convertLengths=function(t){var e=this;return t?t.map((function(t){return e.length2em(t)})):null},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtdMixin=void 0,e.CommonMtdMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.invalidateBBox=function(){this.bboxComputed=!1},e.prototype.getWrapWidth=function(t){var e=this.parent.parent,Q=this.parent,r=this.node.childPosition()-(Q.labeled?1:0);return\"number\"==typeof e.cWidths[r]?e.cWidths[r]:e.getTableData().W[r]},e.prototype.getChildAlign=function(t){return this.node.attributes.get(\"columnalign\")},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtextMixin=void 0,e.CommonMtextMixin=function(t){var e;return(e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getVariant=function(){var e=this.jax.options,Q=this.jax.math.outputData,r=(!!Q.merrorFamily||!!e.merrorFont)&&this.node.Parent.isKind(\"merror\");if(Q.mtextFamily||e.mtextFont||r){var T=this.node.attributes.get(\"mathvariant\"),n=this.constructor.INHERITFONTS[T]||this.jax.font.getCssFont(T),o=n[0]||(r?Q.merrorFamily||e.merrorFont:Q.mtextFamily||e.mtextFont);this.variant=this.explicitVariant(o,n[2]?\"bold\":\"\",n[1]?\"italic\":\"\")}else t.prototype.getVariant.call(this)},e}(t)).INHERITFONTS={normal:[\"\",!1,!1],bold:[\"\",!1,!0],italic:[\"\",!0,!1],\"bold-italic\":[\"\",!0,!0]},e}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonScriptbaseMixin=void 0;e.CommonScriptbaseMixin=function(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.baseCore=r.childNodes[0];if(!T)return r;for(;1===T.childNodes.length&&(T.node.isKind(\"mrow\")||T.node.isKind(\"TeXAtom\")||T.node.isKind(\"mstyle\")||T.node.isKind(\"mpadded\")||T.node.isKind(\"mphantom\")||T.node.isKind(\"semantics\"));)if(!(T=T.childNodes[0]))return r;return\"noIC\"in T?(r.baseCore=T,r.constructor.useIC||(T.noIC=!0),r):r}return T(e,t),Object.defineProperty(e.prototype,\"baseChild\",{get:function(){return this.childNodes[this.node.base]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[1]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=n(this.getOffset(Q,r),2),o=T[0],i=T[1];t.append(Q),t.combine(r,t.w+o,i),t.w+=this.font.params.scriptspace,t.clean(),this.setChildPWidths(e)},e.prototype.coreIC=function(){var t=this.baseCore.getBBox();return t.ic?1.05*t.ic+.05:0},e.prototype.coreScale=function(){for(var t=this.baseChild.getBBox().rscale,e=this.baseChild;(e.node.isKind(\"mstyle\")||e.node.isKind(\"mrow\")||e.node.isKind(\"TeXAtom\"))&&1===e.childNodes.length;)t*=(e=e.childNodes[0]).getBBox().rscale;return t},e.prototype.isCharBase=function(){for(var t=this.baseChild;(t.node.isKind(\"mstyle\")||t.node.isKind(\"mrow\"))&&1===t.childNodes.length;)t=t.childNodes[0];return(t.node.isKind(\"mo\")||t.node.isKind(\"mi\")||t.node.isKind(\"mn\"))&&1===t.bbox.rscale&&1===Array.from(t.getText()).length&&!t.node.attributes.get(\"largeop\")},e.prototype.getOffset=function(t,e){return[0,0]},e.prototype.getV=function(t,e){var Q=this.font.params,r=this.length2em(this.node.attributes.get(\"subscriptshift\"),Q.sub1);return Math.max(this.isCharBase()?0:t.d*t.rscale+Q.sub_drop*e.rscale,r,e.h*e.rscale-.8*Q.x_height)},e.prototype.getU=function(t,e){var Q=this.font.params,r=this.node.attributes.getList(\"displaystyle\",\"superscriptshift\"),T=this.node.getProperty(\"texprimestyle\")?Q.sup3:r.displaystyle?Q.sup1:Q.sup2,n=this.length2em(r.superscriptshift,T);return Math.max(this.isCharBase()?0:t.h*t.rscale-Q.sup_drop*e.rscale,n,e.d*e.rscale+1/4*Q.x_height)},e.prototype.hasMovableLimits=function(){var t=this.node.attributes.get(\"displaystyle\"),e=this.baseChild.coreMO().node;return!t&&!!e.attributes.get(\"movablelimits\")},e.prototype.getOverKU=function(t,e){var Q=this.node.attributes.get(\"accent\"),r=this.font.params,T=e.d*e.rscale,n=(Q?r.rule_thickness:Math.max(r.big_op_spacing1,r.big_op_spacing3-Math.max(0,T)))-(this.baseChild.node.isKind(\"munderover\")?.1:0);return[n,t.h*t.rscale+n+T]},e.prototype.getUnderKV=function(t,e){var Q=this.node.attributes.get(\"accentunder\"),r=this.font.params,T=e.h*e.rscale,n=(Q?r.rule_thickness:Math.max(r.big_op_spacing2,r.big_op_spacing4-T))-(this.baseChild.node.isKind(\"munderover\")?.1:0);return[n,-(t.d*t.rscale+n+T)]},e.prototype.getDeltaW=function(t,e){var Q,r,T,n;void 0===e&&(e=[0,0,0]);var a=this.node.attributes.get(\"align\"),s=t.map((function(t){return t.w*t.rscale})),l=Math.max.apply(Math,o(s)),c=[],u=0;try{for(var p=i(s.keys()),h=p.next();!h.done;h=p.next()){c[L=h.value]=(\"center\"===a?(l-s[L])/2:\"right\"===a?l-s[L]:0)+e[L],c[L]<u&&(u=-c[L])}}catch(t){Q={error:t}}finally{try{h&&!h.done&&(r=p.return)&&r.call(p)}finally{if(Q)throw Q.error}}if(u)try{for(var f=i(c.keys()),d=f.next();!d.done;d=f.next()){var L;c[L=d.value]+=u}}catch(t){T={error:t}}finally{try{d&&!d.done&&(n=f.return)&&n.call(f)}finally{if(T)throw T.error}}return c},e.prototype.getDelta=function(t){void 0===t&&(t=!1);var e=this.node.attributes.get(\"accent\")&&!t?this.baseChild.coreMO().bbox.sk:0;return(1.5*this.baseCore.bbox.ic/2+e)*this.coreScale()},e.prototype.stretchChildren=function(){var t,e,Q,r,T,n,o=[];try{for(var a=i(this.childNodes),s=a.next();!s.done;s=a.next()){(g=s.value).canStretch(2)&&o.push(g)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}var l=o.length,c=this.childNodes.length;if(l&&c>1){var u=0,p=l>1&&l===c;try{for(var h=i(this.childNodes),f=h.next();!f.done;f=h.next()){var d=0===(g=f.value).stretch.dir;if(p||d){var L=g.getBBox(d),H=L.w,m=L.rscale;H*m>u&&(u=H*m)}}}catch(t){Q={error:t}}finally{try{f&&!f.done&&(r=h.return)&&r.call(h)}finally{if(Q)throw Q.error}}try{for(var y=i(o),v=y.next();!v.done;v=y.next()){var g;(g=v.value).coreMO().getStretchedVariant([u/g.bbox.rscale])}}catch(t){T={error:t}}finally{try{v&&!v.done&&(n=y.return)&&n.call(y)}finally{if(T)throw T.error}}}},e}(t)).useIC=!1,e}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonSemanticsMixin=void 0,e.CommonSemanticsMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){if(void 0===e&&(e=!1),this.childNodes.length){var Q=this.childNodes[0].getBBox(),r=Q.w,T=Q.h,n=Q.d;t.w=r,t.h=T,t.d=n}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrapperFactory=void 0;var n=Q(169),o=Q(192),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.jax=null,e}return T(e,t),e.defaultNodes=o.SVGWrappers,e}(n.CommonWrapperFactory);e.SVGWrapperFactory=i},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrappers=void 0;var T=Q(4),n=Q(193),o=Q(194),i=Q(195),a=Q(196),s=Q(197),l=Q(198),c=Q(199),u=Q(200),p=Q(201),h=Q(202),f=Q(203),d=Q(204),L=Q(95),H=Q(205),m=Q(206),y=Q(48),v=Q(208),g=Q(209),b=Q(210),M=Q(211),V=Q(212),x=Q(213),O=Q(214),_=Q(216),S=Q(217),E=Q(218),C=Q(219);e.SVGWrappers=((r={})[n.SVGmath.kind]=n.SVGmath,r[o.SVGmrow.kind]=o.SVGmrow,r[o.SVGinferredMrow.kind]=o.SVGinferredMrow,r[i.SVGmi.kind]=i.SVGmi,r[a.SVGmo.kind]=a.SVGmo,r[s.SVGmn.kind]=s.SVGmn,r[l.SVGms.kind]=l.SVGms,r[c.SVGmtext.kind]=c.SVGmtext,r[u.SVGmerror.kind]=u.SVGmerror,r[p.SVGmspace.kind]=p.SVGmspace,r[h.SVGmpadded.kind]=h.SVGmpadded,r[f.SVGmphantom.kind]=f.SVGmphantom,r[d.SVGmfrac.kind]=d.SVGmfrac,r[L.SVGmsqrt.kind]=L.SVGmsqrt,r[H.SVGmroot.kind]=H.SVGmroot,r[m.SVGmfenced.kind]=m.SVGmfenced,r[y.SVGmsub.kind]=y.SVGmsub,r[y.SVGmsup.kind]=y.SVGmsup,r[y.SVGmsubsup.kind]=y.SVGmsubsup,r[v.SVGmunder.kind]=v.SVGmunder,r[v.SVGmover.kind]=v.SVGmover,r[v.SVGmunderover.kind]=v.SVGmunderover,r[g.SVGmmultiscripts.kind]=g.SVGmmultiscripts,r[b.SVGmtable.kind]=b.SVGmtable,r[M.SVGmtr.kind]=M.SVGmtr,r[M.SVGmlabeledtr.kind]=M.SVGmlabeledtr,r[V.SVGmtd.kind]=V.SVGmtd,r[x.SVGmaction.kind]=x.SVGmaction,r[O.SVGmenclose.kind]=O.SVGmenclose,r[_.SVGsemantics.kind]=_.SVGsemantics,r[_.SVGannotation.kind]=_.SVGannotation,r[_.SVGannotationXML.kind]=_.SVGannotationXML,r[_.SVGxml.kind]=_.SVGxml,r[S.SVGmglyph.kind]=S.SVGmglyph,r[E.SVGTeXAtom.kind]=E.SVGTeXAtom,r[C.SVGTextNode.kind]=C.SVGTextNode,r[T.SVGWrapper.kind]=T.SVGWrapper,r)},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmath=void 0;var i=Q(4),a=Q(172),s=Q(59),l=Q(18),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e);var Q=this.adaptor;\"block\"===this.node.attributes.get(\"display\")&&(Q.setAttribute(this.jax.container,\"display\",\"true\"),this.handleDisplay()),this.jax.document.options.internalSpeechTitles&&this.handleSpeech()},e.prototype.handleDisplay=function(){var t=n(this.getAlignShift(),2),e=t[0],Q=t[1];if(\"center\"!==e&&this.adaptor.setAttribute(this.jax.container,\"justify\",e),this.bbox.pwidth===l.BBox.fullWidth){if(this.adaptor.setAttribute(this.jax.container,\"width\",\"full\"),this.jax.table){var r=this.jax.table.getBBox(),T=r.L,o=r.w,i=r.R;\"right\"===e?i=Math.max(i||-Q,-Q):\"left\"===e?T=Math.max(T||Q,Q):\"center\"===e&&(o+=2*Math.abs(Q)),this.jax.minwidth=Math.max(0,T+o+i)}}else this.jax.shift=Q},e.prototype.handleSpeech=function(){var t,e,Q=this.adaptor,r=this.node.attributes,T=r.get(\"aria-label\")||r.get(\"data-semantic-speech\");if(T){var n=this.getTitleID(),i=this.svg(\"title\",{id:n},[this.text(T)]);Q.insert(i,Q.firstChild(this.element)),Q.setAttribute(this.element,\"aria-labeledby\",n),Q.removeAttribute(this.element,\"aria-label\");try{for(var a=o(this.childNodes[0].childNodes),s=a.next();!s.done;s=a.next()){var l=s.value;Q.setAttribute(l.element,\"aria-hidden\",\"true\")}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}}},e.prototype.getTitleID=function(){return\"mjx-svg-title-\"+String(this.jax.options.titleID++)},e.prototype.setChildPWidths=function(e,Q,r){return void 0===Q&&(Q=null),void 0===r&&(r=!0),t.prototype.setChildPWidths.call(this,e,this.parent?Q:this.metrics.containerWidth/this.jax.pxPerEm,!1)},e.kind=s.MmlMath.prototype.kind,e.styles={'mjx-container[jax=\"SVG\"][display=\"true\"]':{display:\"block\",\"text-align\":\"center\",margin:\"1em 0\"},'mjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"]':{display:\"flex\"},'mjx-container[jax=\"SVG\"][justify=\"left\"]':{\"text-align\":\"left\"},'mjx-container[jax=\"SVG\"][justify=\"right\"]':{\"text-align\":\"right\"}},e}(a.CommonMathMixin(i.SVGWrapper));e.SVGmath=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGinferredMrow=e.SVGmrow=void 0;var n=Q(4),o=Q(93),i=Q(93),a=Q(64),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.node.isInferred?this.element=t:this.standardSVGnode(t);this.addChildren(e)},e.kind=a.MmlMrow.prototype.kind,e}(o.CommonMrowMixin(n.SVGWrapper));e.SVGmrow=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=a.MmlInferredMrow.prototype.kind,e}(i.CommonInferredMrowMixin(s));e.SVGinferredMrow=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmi=void 0;var n=Q(4),o=Q(177),i=Q(38),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMi.prototype.kind,e}(o.CommonMiMixin(n.SVGWrapper));e.SVGmi=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmo=void 0;var o=Q(4),i=Q(180),a=Q(31),s=Q(18),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){var Q=this.node.attributes,r=Q.get(\"symmetric\")&&2!==this.stretch.dir,T=0!==this.stretch.dir;T&&null===this.size&&this.getStretchedVariant([]);var n=this.standardSVGnode(e);if(T&&this.size<0)this.stretchSVG();else{if(r||Q.get(\"largeop\")){var o=s.BBox.empty();t.prototype.computeBBox.call(this,o);var i=this.fixed((o.d-o.h)/2+this.font.params.axis_height);\"0\"!==i&&this.adaptor.setAttribute(n,\"transform\",\"translate(0 \"+i+\")\")}this.addChildren(n)}},e.prototype.stretchSVG=function(){var t=this.stretch.stretch,e=this.getBBox();1===this.stretch.dir?this.stretchVertical(t,e):this.stretchHorizontal(t,e)},e.prototype.stretchVertical=function(t,e){var Q=e.h,r=e.d,T=e.w,o=this.addTop(t[0],Q,T),i=this.addBot(t[2],r,T);if(4===t.length){var a=n(this.addMidV(t[3],T),2),s=a[0],l=a[1];this.addExtV(t[1],Q,0,o,s,T),this.addExtV(t[1],0,r,l,i,T)}else this.addExtV(t[1],Q,r,o,i,T)},e.prototype.stretchHorizontal=function(t,e){var Q=e.w,r=this.addLeft(t[0]),T=this.addRight(t[2],Q);if(4===t.length){var o=n(this.addMidH(t[3],Q),2),i=o[0],a=o[1],s=Q/2;this.addExtH(t[1],s,r,s-i),this.addExtH(t[1],s,a-s,T,s)}else this.addExtH(t[1],Q,r,T)},e.prototype.getChar=function(t){var e=this.font.getChar(\"-size4\",t)||[0,0,0,null];return[e[0],e[1],e[2],e[3]||{}]},e.prototype.addGlyph=function(t,e,Q,r){return void 0===r&&(r=null),this.placeChar(t,e,Q,r||this.element,\"-size4\")},e.prototype.addTop=function(t,e,Q){if(!t)return 0;var r=n(this.getChar(t),3),T=r[0],o=r[1],i=r[2];return this.addGlyph(t,(Q-i)/2,e-T),T+o},e.prototype.addExtV=function(t,e,Q,r,T,o){var i=this;if(t){r=Math.max(0,r-.1),T=Math.max(0,T-.1);var a=this.adaptor,s=n(this.getChar(t),3),l=s[0],c=s[1],u=s[2],p=e+Q-r-T,h=1.5*p/(l+c),f=(h*(l-c)-p)/2;if(!(p<=0)){var d=this.svg(\"svg\",{width:this.fixed(u),height:this.fixed(p),y:this.fixed(T-Q),x:this.fixed((o-u)/2),viewBox:[0,f,u,p].map((function(t){return i.fixed(t)})).join(\" \")});this.addGlyph(t,0,0,d);var L=a.lastChild(d);a.setAttribute(L,\"transform\",\"scale(1, \"+this.jax.fixed(h)+\")\"),a.append(this.element,d)}}},e.prototype.addBot=function(t,e,Q){if(!t)return 0;var r=n(this.getChar(t),3),T=r[0],o=r[1],i=r[2];return this.addGlyph(t,(Q-i)/2,o-e),T+o},e.prototype.addMidV=function(t,e){if(!t)return[0,0];var Q=n(this.getChar(t),3),r=Q[0],T=Q[1],o=Q[2],i=(T-r)/2+this.font.params.axis_height;return this.addGlyph(t,(e-o)/2,i),[r+i,T-i]},e.prototype.addLeft=function(t){return t?this.addGlyph(t,0,0):0},e.prototype.addExtH=function(t,e,Q,r,T){var o=this;if(void 0===T&&(T=0),t){r=Math.max(0,r-.1),Q=Math.max(0,Q-.1);var i=n(this.getChar(t),3),a=i[0],s=i[1],l=i[2],c=e-Q-r,u=a+s+.2,p=c/l*1.5,h=-(s+.1);if(!(c<=0)){var f=this.svg(\"svg\",{width:this.fixed(c),height:this.fixed(u),x:this.fixed(T+Q),y:this.fixed(h),viewBox:[(p*l-c)/2,h,c,u].map((function(t){return o.fixed(t)})).join(\" \")});this.addGlyph(t,0,0,f);var d=this.adaptor.lastChild(f);this.adaptor.setAttribute(d,\"transform\",\"scale(\"+this.jax.fixed(p)+\", 1)\"),this.adaptor.append(this.element,f)}}},e.prototype.addRight=function(t,e){if(!t)return 0;var Q=this.getChar(t)[2];return this.addGlyph(t,e-Q,0)},e.prototype.addMidH=function(t,e){if(!t)return[0,0];var Q=this.getChar(t)[2];return this.addGlyph(t,(e-Q)/2,0),[(e-Q)/2,(e+Q)/2]},e.kind=a.MmlMo.prototype.kind,e}(i.CommonMoMixin(o.SVGWrapper));e.SVGmo=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmn=void 0;var n=Q(4),o=Q(179),i=Q(60),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMn.prototype.kind,e}(o.CommonMnMixin(n.SVGWrapper));e.SVGmn=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGms=void 0;var n=Q(4),o=Q(183),i=Q(63),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMs.prototype.kind,e}(o.CommonMsMixin(n.SVGWrapper));e.SVGms=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtext=void 0;var n=Q(4),o=Q(188),i=Q(61),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMtext.prototype.kind,e}(o.CommonMtextMixin(n.SVGWrapper));e.SVGmtext=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmerror=void 0;var n=Q(4),o=Q(68),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.getBBox(),r=Q.h,T=Q.d,n=Q.w;this.adaptor.append(this.element,this.svg(\"rect\",{\"data-background\":!0,width:this.fixed(n),height:this.fixed(r+T),y:this.fixed(-T)}));var o=this.node.attributes.get(\"title\");o&&this.adaptor.append(this.element,this.svg(\"title\",{},[this.adaptor.text(o)])),this.addChildren(e)},e.kind=o.MmlMerror.prototype.kind,e.styles={'g[data-mml-node=\"merror\"] > g':{fill:\"red\",stroke:\"red\"},'g[data-mml-node=\"merror\"] > rect[data-background]':{fill:\"yellow\",stroke:\"none\"}},e}(n.SVGWrapper);e.SVGmerror=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmspace=void 0;var n=Q(4),o=Q(184),i=Q(62),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMspace.prototype.kind,e}(o.CommonMspaceMixin(n.SVGWrapper));e.SVGmspace=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmpadded=void 0;var o=Q(4),i=Q(181),a=Q(69),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=n(this.getDimens(),9),r=Q[5],T=Q[6],o=Q[7],i=Q[8],a=this.node.attributes.get(\"data-align\")||\"left\",s=T+i-(r<0&&\"left\"!==a?\"center\"===a?r/2:r:0);(s||o)&&(e=this.adaptor.append(e,this.svg(\"g\")),this.place(s,o,e)),this.addChildren(e)},e.kind=a.MmlMpadded.prototype.kind,e}(i.CommonMpaddedMixin(o.SVGWrapper));e.SVGmpadded=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmphantom=void 0;var n=Q(4),o=Q(70),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){this.standardSVGnode(t)},e.kind=o.MmlMphantom.prototype.kind,e}(n.SVGWrapper);e.SVGmphantom=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmfrac=void 0;var o=Q(4),i=Q(175),a=Q(65),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){this.standardSVGnode(t);var e=this.node.attributes.getList(\"linethickness\",\"bevelled\"),Q=e.linethickness,r=e.bevelled,T=this.isDisplay();if(r)this.makeBevelled(T);else{var n=this.length2em(String(Q),.06);0===n?this.makeAtop(T):this.makeFraction(T,n)}},e.prototype.makeFraction=function(t,e){var Q=this.element,r=this.node.attributes.getList(\"numalign\",\"denomalign\"),T=r.numalign,o=r.denomalign,i=n(this.childNodes,2),a=i[0],s=i[1],l=a.getBBox(),c=s.getBBox(),u=this.font.params,p=u.axis_height,h=this.node.getProperty(\"withDelims\")?0:u.nulldelimiterspace,f=Math.max((l.L+l.w+l.R)*l.rscale,(c.L+c.w+c.R)*c.rscale),d=this.getAlignX(f,l,T)+.1+h,L=this.getAlignX(f,c,o)+.1+h,H=this.getTUV(t,e),m=H.T,y=H.u,v=H.v;a.toSVG(Q),a.place(d,p+m+Math.max(l.d*l.rscale,y)),s.toSVG(Q),s.place(L,p-m-Math.max(c.h*c.rscale,v)),this.adaptor.append(Q,this.svg(\"rect\",{width:this.fixed(f+.2),height:this.fixed(e),x:this.fixed(h),y:this.fixed(p-e/2)}))},e.prototype.makeAtop=function(t){var e=this.element,Q=this.node.attributes.getList(\"numalign\",\"denomalign\"),r=Q.numalign,T=Q.denomalign,o=n(this.childNodes,2),i=o[0],a=o[1],s=i.getBBox(),l=a.getBBox(),c=this.font.params,u=this.node.getProperty(\"withDelims\")?0:c.nulldelimiterspace,p=Math.max((s.L+s.w+s.R)*s.rscale,(l.L+l.w+l.R)*l.rscale),h=this.getAlignX(p,s,r)+u,f=this.getAlignX(p,l,T)+u,d=this.getUVQ(t),L=d.u,H=d.v;i.toSVG(e),i.place(h,L),a.toSVG(e),a.place(f,-H)},e.prototype.makeBevelled=function(t){var e=this.element,Q=n(this.childNodes,2),r=Q[0],T=Q[1],o=this.getBevelData(t),i=o.u,a=o.v,s=o.delta,l=o.nbox,c=o.dbox,u=(l.L+l.w+l.R)*l.rscale;r.toSVG(e),this.bevel.toSVG(e),T.toSVG(e),r.place(l.L*l.rscale,i),this.bevel.place(u-s/2,0),T.place(u+this.bevel.getBBox().w+c.L*c.rscale-s,a)},e.kind=a.MmlMfrac.prototype.kind,e}(i.CommonMfracMixin(o.SVGWrapper));e.SVGmfrac=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmroot=void 0;var o=Q(95),i=Q(182),a=Q(67),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addRoot=function(t,e,Q,r){e.toSVG(t);var T=n(this.getRootDimens(Q,r),3),o=T[0],i=T[1],a=T[2],s=e.getBBox();e.place(a*s.rscale,i),this.dx=o},e.kind=a.MmlMroot.prototype.kind,e}(i.CommonMrootMixin(o.SVGmsqrt));e.SVGmroot=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmfenced=void 0;var o=Q(4),i=Q(174),a=Q(71),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.setChildrenParent(this.mrow),this.mrow.toSVG(e),this.setChildrenParent(this)},e.prototype.setChildrenParent=function(t){var e,Q;try{for(var r=n(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.parent=t}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},e.kind=a.MmlMfenced.prototype.kind,e}(i.CommonMfencedMixin(o.SVGWrapper));e.SVGmfenced=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGscriptbase=void 0;var o=Q(4),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=n(this.getOffset(Q,r),2),o=T[0],i=T[1];this.baseChild.toSVG(e),this.script.toSVG(e),this.script.place(Q.w*Q.rscale+o,i)},e.kind=\"scriptbase\",e.useIC=!1,e}(Q(189).CommonScriptbaseMixin(o.SVGWrapper));e.SVGscriptbase=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmunderover=e.SVGmover=e.SVGmunder=void 0;var o=Q(48),i=Q(47),a=Q(47),s=Q(47),l=Q(74),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.script],2),T=r[0],o=r[1],i=n([T.getBBox(),o.getBBox()],2),a=i[0],s=i[1];T.toSVG(Q),o.toSVG(Q);var l=this.getDelta(!0),c=this.getUnderKV(a,s)[1],u=n(this.getDeltaW([a,s],[0,-l]),2),p=u[0],h=u[1];T.place(p,0),o.place(h,c)}},e.kind=l.MmlMunder.prototype.kind,e.useIC=!0,e}(i.CommonMunderMixin(o.SVGmsub));e.SVGmunder=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.script],2),T=r[0],o=r[1],i=n([T.getBBox(),o.getBBox()],2),a=i[0],s=i[1];T.toSVG(Q),o.toSVG(Q);var l=this.getDelta(),c=this.getOverKU(a,s)[1],u=n(this.getDeltaW([a,s],[0,l]),2),p=u[0],h=u[1];T.place(p,0),o.place(h,c)}},e.kind=l.MmlMover.prototype.kind,e.useIC=!0,e}(a.CommonMoverMixin(o.SVGmsup));e.SVGmover=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.overChild,this.underChild],3),T=r[0],o=r[1],i=r[2],a=n([T.getBBox(),o.getBBox(),i.getBBox()],3),s=a[0],l=a[1],c=a[2];T.toSVG(Q),i.toSVG(Q),o.toSVG(Q);var u=this.getDelta(),p=this.getOverKU(s,l)[1],h=this.getUnderKV(s,c)[1],f=n(this.getDeltaW([s,c,l],[0,-u,u]),3),d=f[0],L=f[1],H=f[2];T.place(d,0),i.place(L,h),o.place(H,p)}},e.kind=l.MmlMunderover.prototype.kind,e.useIC=!0,e}(s.CommonMunderoverMixin(o.SVGmsubsup));e.SVGmunderover=p},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmmultiscripts=void 0;var o=Q(48),i=Q(178),a=Q(75),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.getScriptData(),r=this.combinePrePost(Q.sub,Q.psub),T=this.combinePrePost(Q.sup,Q.psup),o=n(this.getUVQ(Q.base,r,T),2),i=o[0],a=o[1],s=0;Q.numPrescripts&&(s=this.addScripts(.05,i,a,!0,this.firstPrescript,Q.numPrescripts));var l=this.baseChild;l.toSVG(e),l.place(s,0),s+=l.getBBox().w,Q.numScripts&&this.addScripts(s,i,a,!1,1,Q.numScripts)},e.prototype.addScripts=function(t,e,Q,r,T,o){var i=this.adaptor,a=i.append(this.element,this.svg(\"g\")),s=i.append(this.element,this.svg(\"g\"));this.place(t,e,a),this.place(t,Q,s);for(var l=T+2*o,c=0;T<l;){var u=n([this.childNodes[T++],this.childNodes[T++]],2),p=u[0],h=u[1],f=n([p.getBBox(),h.getBBox()],2),d=f[0],L=f[1],H=n([d.rscale,L.rscale],2),m=H[0],y=H[1],v=Math.max(d.w*m,L.w*y);p.toSVG(s),h.toSVG(a),p.place(c+(r?v-d.w*m:0),0),h.place(c+(r?v-L.w*y:0),0),c+=v}return t+c},e.kind=a.MmlMmultiscripts.prototype.kind,e}(i.CommonMmultiscriptsMixin(o.SVGmsubsup));e.SVGmmultiscripts=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtable=void 0;var i=Q(4),a=Q(186),s=Q(76),l=function(t){function e(e,Q,r){void 0===r&&(r=null);var T=t.call(this,e,Q,r)||this,n={\"data-labels\":!0};return T.isTop&&(n.transform=\"matrix(1 0 0 -1 0 0)\"),T.labels=T.svg(\"g\",n),T}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.placeRows(e),this.handleColumnLines(e),this.handleRowLines(e),this.handleFrame(e);var Q=this.handlePWidth(e);this.handleLabels(e,t,Q)},e.prototype.placeRows=function(t){for(var e,Q,r,T=this.node.attributes.get(\"equalrows\"),i=this.getTableData(),a=i.H,s=i.D,l=this.getEqualRowHeight(),c=this.getRowHalfSpacing(),u=o([this.fLine],this.rLines,[this.fLine]),p=this.getBBox().h-u[0],h=0;h<this.numRows;h++){var f=this.childNodes[h];e=n(this.getRowHD(T,l,a[h],s[h]),2),f.H=e[0],f.D=e[1],Q=n([c[h],c[h+1]],2),f.tSpace=Q[0],f.bSpace=Q[1],r=n([u[h],u[h+1]],2),f.tLine=r[0],f.bLine=r[1],f.toSVG(t),f.place(0,p-c[h]-f.H),p-=c[h]+f.H+f.D+c[h+1]+u[h+1]}},e.prototype.getRowHD=function(t,e,Q,r){return t?[(e+Q-r)/2,(e-Q+r)/2]:[Q,r]},e.prototype.handleColor=function(){t.prototype.handleColor.call(this);var e=this.adaptor.firstChild(this.element);e&&this.adaptor.setAttribute(e,\"width\",this.fixed(this.getWidth()))},e.prototype.handleColumnLines=function(t){if(\"none\"!==this.node.attributes.get(\"columnlines\")){var e=this.getColumnAttributes(\"columnlines\");if(e)for(var Q=this.getColumnHalfSpacing(),r=this.cLines,T=this.getComputedWidths(),n=this.fLine,o=0;o<e.length;o++)n+=Q[o]+T[o]+Q[o+1],\"none\"!==e[o]&&this.adaptor.append(t,this.makeVLine(n,e[o],r[o])),n+=r[o]}},e.prototype.handleRowLines=function(t){if(\"none\"!==this.node.attributes.get(\"rowlines\")){var e=this.getRowAttributes(\"rowlines\");if(e)for(var Q=this.node.attributes.get(\"equalrows\"),r=this.getTableData(),T=r.H,o=r.D,i=this.getEqualRowHeight(),a=this.getRowHalfSpacing(),s=this.rLines,l=this.getBBox().h-this.fLine,c=0;c<e.length;c++){var u=n(this.getRowHD(Q,i,T[c],o[c]),2),p=u[0],h=u[1];l-=a[c]+p+h+a[c+1],\"none\"!==e[c]&&this.adaptor.append(t,this.makeHLine(l,e[c],s[c])),l-=s[c]}}},e.prototype.handleFrame=function(t){if(this.frame){var e=this.getBBox(),Q=e.h,r=e.d,T=e.w,n=this.node.attributes.get(\"frame\");this.adaptor.append(t,this.makeFrame(T,Q,r,n))}},e.prototype.handlePWidth=function(t){if(!this.pWidth)return 0;var e=this.getBBox(),Q=e.w,r=e.L,T=e.R,n=r+this.pWidth+T,o=this.getAlignShift()[0],i=Math.max(this.isTop?n:0,this.container.getWrapWidth(this.containerI))-r-T,a=Q-(this.pWidth>i?i:this.pWidth),s=\"left\"===o?0:\"right\"===o?a:a/2;if(s){var l=this.svg(\"g\",{},this.adaptor.childNodes(t));this.place(s,0,l),this.adaptor.append(t,l)}return s},e.prototype.lineClass=function(t){return\"mjx-\"+t},e.prototype.makeFrame=function(t,e,Q,r){var T=this.fLine;return this.svg(\"rect\",this.setLineThickness(T,r,{\"data-frame\":!0,class:this.lineClass(r),width:this.fixed(t-T),height:this.fixed(e+Q-T),x:this.fixed(T/2),y:this.fixed(T/2-Q)}))},e.prototype.makeVLine=function(t,e,Q){var r=this.getBBox(),T=r.h,n=r.d,o=\"dotted\"===e?Q/2:0,i=this.fixed(t+Q/2);return this.svg(\"line\",this.setLineThickness(Q,e,{\"data-line\":\"v\",class:this.lineClass(e),x1:i,y1:this.fixed(o-n),x2:i,y2:this.fixed(T-o)}))},e.prototype.makeHLine=function(t,e,Q){var r=this.getBBox().w,T=\"dotted\"===e?Q/2:0,n=this.fixed(t-Q/2);return this.svg(\"line\",this.setLineThickness(Q,e,{\"data-line\":\"h\",class:this.lineClass(e),x1:this.fixed(T),y1:n,x2:this.fixed(r-T),y2:n}))},e.prototype.setLineThickness=function(t,e,Q){return.07!==t&&(Q[\"stroke-thickness\"]=this.fixed(t),\"solid\"!==e&&(Q[\"stroke-dasharray\"]=(\"dotted\"===e?\"0,\":\"\")+this.fixed(2*t))),Q},e.prototype.handleLabels=function(t,e,Q){if(this.hasLabels){var r=this.labels,T=this.node.attributes.get(\"side\");this.spaceLabels(),this.isTop?this.topTable(t,r,T):this.subTable(t,r,T,Q)}},e.prototype.spaceLabels=function(){for(var t=this.adaptor,e=this.getBBox().h,Q=this.getTableData().L,r=this.getRowHalfSpacing(),T=e-this.fLine,n=t.firstChild(this.labels),o=0;o<this.numRows;o++){var i=this.childNodes[o];if(i.node.isKind(\"mlabeledtr\")){var a=i.childNodes[0];T-=r[o]+i.H,i.placeCell(a,{x:0,y:T,w:Q,lSpace:0,rSpace:0,lLine:0,rLine:0}),T-=i.D+r[o+1]+this.rLines[o],n=t.next(n)}else T-=r[o]+i.H+i.D+r[o+1]+this.rLines[o]}},e.prototype.topTable=function(t,e,Q){var r=this.adaptor,T=this.getBBox(),o=T.h,i=T.d,a=T.w,s=T.L,l=T.R,c=s+(this.pWidth||a)+l,u=this.getTableData().L,p=n(this.getPadAlignShift(Q),3),h=p[1],f=p[2]+(\"right\"===h?-c:\"center\"===h?-c/2:0)+s,d=\"matrix(1 0 0 -1 0 0)\",L=\"scale(\"+this.jax.fixed(1e3*this.font.params.x_height/this.metrics.ex,2)+\")\",H=\"translate(0 \"+this.fixed(o)+\") \"+d+\" \"+L,m=this.svg(\"svg\",{\"data-table\":!0,preserveAspectRatio:\"left\"===h?\"xMinYMid\":\"right\"===h?\"xMaxYMid\":\"xMidYMid\",viewBox:[this.fixed(-f),this.fixed(-o),1,this.fixed(o+i)].join(\" \")},[this.svg(\"g\",{transform:d},r.childNodes(t))]);e=this.svg(\"svg\",{\"data-labels\":!0,preserveAspectRatio:\"left\"===Q?\"xMinYMid\":\"xMaxYMid\",viewBox:[\"left\"===Q?0:this.fixed(u),this.fixed(-o),1,this.fixed(o+i)].join(\" \")},[e]),r.append(t,this.svg(\"g\",{transform:H},[m,e])),this.place(-s,0,t)},e.prototype.subTable=function(t,e,Q,r){var T=this.adaptor,n=this.getBBox(),o=n.w,i=n.L,a=n.R,s=i+(this.pWidth||o)+a,l=this.getTableData().L,c=this.getAlignShift()[0],u=Math.max(s,this.container.getWrapWidth(this.containerI));this.place(\"left\"===Q?(\"left\"===c?0:\"right\"===c?s-u+r:(s-u)/2+r)-i:(\"left\"===c?u:\"right\"===c?s+r:(u+s)/2+r)-i-l,0,e),T.append(t,e)},e.kind=s.MmlMtable.prototype.kind,e.styles={'g[data-mml-node=\"mtable\"] > line[data-line]':{\"stroke-width\":\"70px\",fill:\"none\"},'g[data-mml-node=\"mtable\"] > rect[data-frame]':{\"stroke-width\":\"70px\",fill:\"none\"},'g[data-mml-node=\"mtable\"] > .mjx-dashed':{\"stroke-dasharray\":\"140\"},'g[data-mml-node=\"mtable\"] > .mjx-dotted':{\"stroke-linecap\":\"round\",\"stroke-dasharray\":\"0,140\"},'g[data-mml-node=\"mtable\"] > g > svg':{overflow:\"visible\"}},e}(a.CommonMtableMixin(i.SVGWrapper));e.SVGmtable=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmlabeledtr=e.SVGmtr=void 0;var i=Q(4),a=Q(94),s=Q(94),l=Q(77),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.placeCells(e),this.placeColor()},e.prototype.placeCells=function(t){for(var e=this.parent.getColumnHalfSpacing(),Q=o([this.parent.fLine],this.parent.cLines,[this.parent.fLine]),r=this.parent.getComputedWidths(),T=Q[0],n=0;n<this.numCells;n++){var i=this.getChild(n);i.toSVG(t),T+=this.placeCell(i,{x:T,y:0,lSpace:e[n],rSpace:e[n+1],w:r[n],lLine:Q[n],rLine:Q[n+1]})}},e.prototype.placeCell=function(t,e){var Q=e.x,r=e.y,T=e.lSpace,o=e.w,i=e.rSpace,a=e.lLine,s=e.rLine,l=n(t.placeCell(Q+T,r,o,this.H,this.D),2),c=l[0],u=l[1],p=T+o+i,h=n([this.H+this.tSpace,this.D+this.bSpace],2),f=h[0],d=h[1];return t.placeColor(-(c+T+a/2),-(d+this.bLine/2+u),p+(a+s)/2,f+d+(this.tLine+this.bLine)/2),p+s},e.prototype.placeColor=function(){var t=this.adaptor,e=t.firstChild(this.element);if(e&&\"rect\"===t.kind(e)&&t.getAttribute(e,\"data-bgcolor\")){var Q=n([this.tLine/2,this.bLine/2],2),r=Q[0],T=Q[1],o=n([this.tSpace,this.bSpace],2),i=o[0],a=o[1],s=n([this.H,this.D],2),l=s[0],c=s[1];t.setAttribute(e,\"y\",this.fixed(-(c+a+T))),t.setAttribute(e,\"width\",this.fixed(this.parent.getWidth())),t.setAttribute(e,\"height\",this.fixed(r+i+l+c+a+T))}},e.kind=l.MmlMtr.prototype.kind,e}(a.CommonMtrMixin(i.SVGWrapper));e.SVGmtr=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e);var Q=this.childNodes[0];Q&&Q.toSVG(this.parent.labels)},e.kind=l.MmlMlabeledtr.prototype.kind,e}(s.CommonMlabeledtrMixin(c));e.SVGmlabeledtr=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtd=void 0;var n=Q(4),o=Q(187),i=Q(78),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.placeCell=function(t,e,Q,r,T){var n=this.getBBox(),o=Math.max(n.h,.75),i=Math.max(n.d,.25),a=this.node.attributes.get(\"columnalign\"),s=this.node.attributes.get(\"rowalign\"),l=this.getAlignX(Q,n,a),c=this.getAlignY(r,T,o,i,s);return this.place(t+l,e+c),[l,c]},e.prototype.placeColor=function(t,e,Q,r){var T=this.adaptor,n=T.firstChild(this.element);n&&\"rect\"===T.kind(n)&&T.getAttribute(n,\"data-bgcolor\")&&(T.setAttribute(n,\"x\",this.fixed(t)),T.setAttribute(n,\"y\",this.fixed(e)),T.setAttribute(n,\"width\",this.fixed(Q)),T.setAttribute(n,\"height\",this.fixed(r)))},e.kind=i.MmlMtd.prototype.kind,e}(o.CommonMtdMixin(n.SVGWrapper));e.SVGmtd=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmaction=void 0;var n=Q(4),o=Q(92),i=Q(92),a=Q(73),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.selected,r=Q.getBBox(),T=r.h,n=r.d,o=r.w;this.adaptor.append(this.element,this.svg(\"rect\",{width:this.fixed(o),height:this.fixed(T+n),y:this.fixed(-n),fill:\"none\",\"pointer-events\":\"all\"})),Q.toSVG(e),this.action(this,this.data)},e.prototype.setEventHandler=function(t,e){this.element.addEventListener(t,e)},e.kind=a.MmlMaction.prototype.kind,e.styles={'[jax=\"SVG\"] mjx-tool':{display:\"inline-block\",position:\"relative\",width:0,height:0},'[jax=\"SVG\"] mjx-tool > mjx-tip':{position:\"absolute\",top:0,left:0},\"mjx-tool > mjx-tip\":{display:\"inline-block\",padding:\".2em\",border:\"1px solid #888\",\"font-size\":\"70%\",\"background-color\":\"#F8F8F8\",color:\"black\",\"box-shadow\":\"2px 2px 5px #AAAAAA\"},'g[data-mml-node=\"maction\"][data-toggle]':{cursor:\"pointer\"},\"mjx-status\":{display:\"block\",position:\"fixed\",left:\"1em\",bottom:\"1em\",\"min-width\":\"25%\",padding:\".2em .4em\",border:\"1px solid #888\",\"font-size\":\"90%\",\"background-color\":\"#F8F8F8\",color:\"black\"}},e.actions=new Map([[\"toggle\",[function(t,e){t.adaptor.setAttribute(t.element,\"data-toggle\",t.node.attributes.get(\"selection\"));var Q=t.factory.jax.math,r=t.factory.jax.document,T=t.node;t.setEventHandler(\"click\",(function(t){Q.end.node||(Q.start.node=Q.end.node=Q.typesetRoot,Q.start.n=Q.end.n=0),T.nextToggleSelection(),Q.rerender(r),t.stopPropagation()}))},{}]],[\"tooltip\",[function(t,e){var Q=t.childNodes[1];if(Q){var r=t.adaptor.firstChild(t.element);if(Q.node.isKind(\"mtext\")){var T=Q.node.getText();t.adaptor.insert(t.svg(\"title\",{},[t.text(T)]),r)}else{var n=t.adaptor,o=t.jax.container,i=t.node.factory.create(\"math\",{},[t.childNodes[1].node]),a=t.html(\"mjx-tool\",{},[t.html(\"mjx-tip\")]),s=n.append(r,t.svg(\"foreignObject\",{style:{display:\"none\"}},[a]));t.jax.processMath(i,n.firstChild(a)),t.childNodes[1].node.parent=t.node,t.setEventHandler(\"mouseover\",(function(Q){e.stopTimers(t,e),e.hoverTimer.set(t,setTimeout((function(){n.setStyle(a,\"left\",\"0\"),n.setStyle(a,\"top\",\"0\"),n.append(o,a);var e=n.nodeBBox(a),Q=n.nodeBBox(t.element),r=(Q.right-e.left)/t.metrics.em+t.dx,T=(Q.bottom-e.bottom)/t.metrics.em+t.dy;n.setStyle(a,\"left\",t.px(r)),n.setStyle(a,\"top\",t.px(T))}),e.postDelay)),Q.stopPropagation()})),t.setEventHandler(\"mouseout\",(function(Q){e.stopTimers(t,e);var r=setTimeout((function(){return n.append(s,a)}),e.clearDelay);e.clearTimer.set(t,r),Q.stopPropagation()}))}}},i.TooltipData]],[\"statusline\",[function(t,e){var Q=t.childNodes[1];if(Q&&Q.node.isKind(\"mtext\")){var r=t.adaptor,T=Q.node.getText();r.setAttribute(t.element,\"data-statusline\",T),t.setEventHandler(\"mouseover\",(function(Q){if(null===e.status){var n=r.body(r.document);e.status=r.append(n,t.html(\"mjx-status\",{},[t.text(T)]))}Q.stopPropagation()})),t.setEventHandler(\"mouseout\",(function(t){e.status&&(r.remove(e.status),e.status=null),t.stopPropagation()}))}},{status:null}]]]),e}(o.CommonMactionMixin(n.SVGWrapper));e.SVGmaction=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmenclose=void 0;var i=Q(4),a=Q(173),s=Q(215),l=Q(72),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e,Q,r=this.standardSVGnode(t),T=this.getBBoxExtenders()[3],o={};T>0&&(o.transform=\"translate(\"+this.fixed(T)+\", 0)\");var i=this.adaptor.append(r,this.svg(\"g\",o));this.renderChild?this.renderChild(this,i):this.childNodes[0].toSVG(i);try{for(var a=n(Object.keys(this.notations)),s=a.next();!s.done;s=a.next()){var l=s.value,c=this.notations[l];!c.renderChild&&c.renderer(this,r)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}},e.prototype.arrow=function(t,e,Q){void 0===Q&&(Q=!1);var r=this.getBBox(),T=r.w,n=(t-T)/2,i=(r.h-r.d)/2,a=this.thickness,s=a/2,l=o([a*this.arrowhead.x,a*this.arrowhead.y,a*this.arrowhead.dx],3),c=l[0],u=l[1],p=l[2],h=Q?this.fill(\"M\",T+n,i,\"l\",-(c+p),u,\"l\",p,s-u,\"L\",c-n,i+s,\"l\",p,u-s,\"l\",-(c+p),-u,\"l\",c+p,-u,\"l\",-p,u-s,\"L\",T+n-c,i-s,\"l\",-p,s-u,\"Z\"):this.fill(\"M\",T+n,i,\"l\",-(c+p),u,\"l\",p,s-u,\"L\",-n,i+s,\"l\",0,-a,\"L\",T+n-c,i-s,\"l\",-p,s-u,\"Z\");if(e){var f=this.jax.fixed(180*-e/Math.PI);this.adaptor.setAttribute(h,\"transform\",\"rotate(\"+[f,this.fixed(T/2),this.fixed(i)].join(\" \")+\")\")}return h},e.prototype.line=function(t){var e=o(t,4),Q=e[0],r=e[1],T=e[2],n=e[3];return this.svg(\"line\",{x1:this.fixed(Q),y1:this.fixed(r),x2:this.fixed(T),y2:this.fixed(n),\"stroke-width\":this.fixed(this.thickness)})},e.prototype.box=function(t,e,Q,r){void 0===r&&(r=0);var T=this.thickness,n={x:this.fixed(T/2),y:this.fixed(T/2-Q),width:this.fixed(t-T),height:this.fixed(e+Q-T),fill:\"none\",\"stroke-width\":this.fixed(T)};return r&&(n.rx=this.fixed(r)),this.svg(\"rect\",n)},e.prototype.ellipse=function(t,e,Q){var r=this.thickness;return this.svg(\"ellipse\",{rx:this.fixed((t-r)/2),ry:this.fixed((e+Q-r)/2),cx:this.fixed(t/2),cy:this.fixed((e-Q)/2),fill:\"none\",\"stroke-width\":this.fixed(r)})},e.prototype.path=function(t){for(var e=this,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return this.svg(\"path\",{d:Q.map((function(t){return\"string\"==typeof t?t:e.fixed(t)})).join(\" \"),style:{\"stroke-width\":this.fixed(this.thickness)},\"stroke-linecap\":\"round\",\"stroke-linejoin\":t,fill:\"none\"})},e.prototype.fill=function(){for(var t=this,e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];return this.svg(\"path\",{d:e.map((function(e){return\"string\"==typeof e?e:t.fixed(e)})).join(\" \")})},e.kind=l.MmlMenclose.prototype.kind,e.notations=new Map([s.Border(\"top\"),s.Border(\"right\"),s.Border(\"bottom\"),s.Border(\"left\"),s.Border2(\"actuarial\",\"top\",\"right\"),s.Border2(\"madruwb\",\"bottom\",\"right\"),s.DiagonalStrike(\"up\"),s.DiagonalStrike(\"down\"),[\"horizontalstrike\",{renderer:s.RenderLine(\"horizontal\"),bbox:function(t){return[0,t.padding,0,t.padding]}}],[\"verticalstrike\",{renderer:s.RenderLine(\"vertical\"),bbox:function(t){return[t.padding,0,t.padding,0]}}],[\"box\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d;t.adaptor.append(t.element,t.box(r,T,n))},bbox:s.fullBBox,border:s.fullBorder,remove:\"left right top bottom\"}],[\"roundedbox\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.thickness+t.padding;t.adaptor.append(t.element,t.box(r,T,n,o))},bbox:s.fullBBox}],[\"circle\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d;t.adaptor.append(t.element,t.ellipse(r,T,n))},bbox:s.fullBBox}],[\"phasorangle\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.getArgMod(1.75*t.padding,T+n)[0],i=t.thickness/2,a=T+n,s=Math.cos(o);t.adaptor.append(t.element,t.path(\"mitre\",\"M\",r,i-n,\"L\",i+s*i,i-n,\"L\",s*a+i,a-n-i))},bbox:function(t){var e=t.padding/2,Q=t.thickness;return[2*e,e,e+Q,3*e+Q]},border:function(t){return[0,0,t.thickness,0]},remove:\"bottom\"}],s.Arrow(\"up\"),s.Arrow(\"down\"),s.Arrow(\"left\"),s.Arrow(\"right\"),s.Arrow(\"updown\"),s.Arrow(\"leftright\"),s.DiagonalArrow(\"updiagonal\"),s.DiagonalArrow(\"northeast\"),s.DiagonalArrow(\"southeast\"),s.DiagonalArrow(\"northwest\"),s.DiagonalArrow(\"southwest\"),s.DiagonalArrow(\"northeastsouthwest\"),s.DiagonalArrow(\"northwestsoutheast\"),[\"longdiv\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.thickness/2,i=t.padding;t.adaptor.append(t.element,t.path(\"round\",\"M\",o,o-n,\"a\",i-o/2,(T+n)/2-4*o,0,\"0,1\",0,T+n-2*o,\"L\",r-o,T-o))},bbox:function(t){var e=t.padding,Q=t.thickness;return[e+Q,e,e,2*e+Q/2]}}],[\"radical\",{renderer:function(t,e){t.msqrt.toSVG(e);var Q=t.sqrtTRBL()[3];t.place(-Q,0,e)},init:function(t){t.msqrt=t.createMsqrt(t.childNodes[0])},bbox:function(t){return t.sqrtTRBL()},renderChild:!0}]]),e}(a.CommonMencloseMixin(i.SVGWrapper));e.SVGmenclose=c},function(t,e,Q){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(t,e,Q,r){void 0===r&&(r=Q),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[Q]}})}:function(t,e,Q,r){void 0===r&&(r=Q),t[r]=e[Q]}),T=this&&this.__exportStar||function(t,e){for(var Q in t)\"default\"===Q||e.hasOwnProperty(Q)||r(e,t,Q)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Arrow=e.DiagonalArrow=e.DiagonalStrike=e.Border2=e.Border=e.RenderLine=e.lineData=e.computeLineData=void 0;var n=Q(45);T(Q(45),e),e.computeLineData={top:function(t,e,Q,r){return[0,t-r,Q,t-r]},right:function(t,e,Q,r){return[Q-r,-e,Q-r,t]},bottom:function(t,e,Q,r){return[0,r-e,Q,r-e]},left:function(t,e,Q,r){return[r,-e,r,t]},vertical:function(t,e,Q,r){return[Q/2-r,t,Q/2-r,-e]},horizontal:function(t,e,Q,r){return[0,(t-e)/2-r,Q,(t-e)/2-r]},up:function(t,e,Q,r){return[r,r-e,Q-r,t-r]},down:function(t,e,Q,r){return[r,t-r,Q-r,r-e]}},e.lineData=function(t,Q){var r=t.getBBox(),T=r.h,n=r.d,o=r.w,i=t.thickness/2;return e.computeLineData[Q](T,n,o,i)},e.RenderLine=function(t){return function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}},e.Border=function(t){return n.CommonBorder((function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}))(t)},e.Border2=function(t,Q,r){return n.CommonBorder2((function(t,T){t.adaptor.append(t.element,t.line(e.lineData(t,Q))),t.adaptor.append(t.element,t.line(e.lineData(t,r)))}))(t,Q,r)},e.DiagonalStrike=function(t){return n.CommonDiagonalStrike((function(Q){return function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}}))(t)},e.DiagonalArrow=function(t){return n.CommonDiagonalArrow((function(t,e){t.adaptor.append(t.element,e)}))(t)},e.Arrow=function(t){return n.CommonArrow((function(t,e){t.adaptor.append(t.element,e)}))(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGxml=e.SVGannotationXML=e.SVGannotation=e.SVGsemantics=void 0;var n=Q(4),o=Q(190),i=Q(80),a=Q(0),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.childNodes.length&&this.childNodes[0].toSVG(e)},e.kind=i.MmlSemantics.prototype.kind,e}(o.CommonSemanticsMixin(n.SVGWrapper));e.SVGsemantics=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e)},e.prototype.computeBBox=function(){return this.bbox},e.kind=i.MmlAnnotation.prototype.kind,e}(n.SVGWrapper);e.SVGannotation=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlAnnotationXML.prototype.kind,e.styles={\"foreignObject[data-mjx-xml]\":{\"font-family\":\"initial\",\"line-height\":\"normal\",overflow:\"visible\"}},e}(n.SVGWrapper);e.SVGannotationXML=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.adaptor.clone(this.node.getXML()),Q=this.jax.math.metrics.em*this.jax.math.metrics.scale,r=this.fixed(1/Q),T=this.getBBox(),n=T.w,o=T.h,i=T.d;this.element=this.adaptor.append(t,this.svg(\"foreignObject\",{\"data-mjx-xml\":!0,y:this.jax.fixed(-o*Q)+\"px\",width:this.jax.fixed(n*Q)+\"px\",height:this.jax.fixed((o+i)*Q)+\"px\",transform:\"scale(\"+r+\") matrix(1 0 0 -1 0 0)\"},[e]))},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.jax.measureXMLnode(this.node.getXML()),r=Q.w,T=Q.h,n=Q.d;t.w=r,t.h=T,t.d=n},e.prototype.getStyles=function(){},e.prototype.getScale=function(){},e.prototype.getVariant=function(){},e.kind=a.XMLNode.prototype.kind,e.autoStyle=!1,e}(n.SVGWrapper);e.SVGxml=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmglyph=void 0;var n=Q(4),o=Q(176),i=Q(79),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.node.attributes.getList(\"src\",\"alt\"),r=Q.src,T=Q.alt,n=this.fixed(this.height),o={width:this.fixed(this.width),height:n,transform:\"translate(0 \"+this.fixed(this.height+(this.valign||0))+\") matrix(1 0 0 -1 0 0)\",preserveAspectRatio:\"none\",alt:T,title:T,href:r},i=this.svg(\"image\",o);this.adaptor.append(e,i)},e.kind=i.MmlMglyph.prototype.kind,e}(o.CommonMglyphMixin(n.SVGWrapper));e.SVGmglyph=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGTeXAtom=void 0;var n=Q(4),o=Q(170),i=Q(81),a=Q(0),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(t.prototype.toSVG.call(this,e),this.adaptor.setAttribute(this.element,\"data-mjx-texclass\",a.TEXCLASSNAMES[this.node.texClass]),this.node.texClass===a.TEXCLASS.VCENTER){var Q=this.childNodes[0].getBBox(),r=Q.h,T=(r+Q.d)/2+this.font.params.axis_height-r,n=\"translate(0 \"+this.fixed(T)+\")\";this.adaptor.setAttribute(this.element,\"transform\",n)}},e.kind=i.TeXAtom.prototype.kind,e}(o.CommonTeXAtomMixin(n.SVGWrapper));e.SVGTeXAtom=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGTextNode=void 0;var o=Q(0),i=Q(4),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e,Q,r=this.node.getText(),T=this.parent.variant;if(\"-explicitFont\"===T)this.adaptor.append(t,this.jax.unknownText(r,T));else{var o=this.remappedText(r,T),i=0;try{for(var a=n(o),s=a.next();!s.done;s=a.next()){var l=s.value;i+=this.placeChar(l,i,0,t,T)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}}this.element=this.adaptor.lastChild(t)},e.kind=o.TextNode.prototype.kind,e.styles={\".MathJax path\":{\"stroke-width\":3}},e}(Q(171).CommonTextNodeMixin(i.SVGWrapper));e.SVGTextNode=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.boldItalic=void 0;var r=Q(6),T=Q(221);e.boldItalic=r.AddPaths(T.boldItalic,{47:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",305:\"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",567:\"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373\",8260:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",8710:\"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342\",10744:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.boldItalic=void 0,e.boldItalic={47:[.711,.21,.894],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}],8260:[.711,.21,.894],8710:[.711,0,.958,{sk:.192}],10744:[.711,.21,.894]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.bold=void 0;var r=Q(6),T=Q(223);e.bold=r.AddPaths(T.bold,{33:\"89 629Q89 663 116 684T171 705Q215 705 237 681T260 634Q260 619 233 434T204 244Q201 237 175 237Q150 237 146 244Q144 248 117 433T89 629ZM90 86Q90 125 116 148T177 171Q211 169 235 146T259 86Q259 48 235 25T175 1Q138 1 114 24T90 86\",34:\"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547\",35:\"64 362Q64 380 87 393H363L366 404Q379 443 390 480T409 542T424 590T435 628T443 655T451 674T458 686T467 692T478 694Q490 694 499 686T509 662Q505 643 427 395Q427 393 523 393H620L623 404Q630 426 652 498T691 624T711 681Q718 694 735 694Q748 694 757 685T766 662Q762 643 684 395Q684 393 777 393H871Q872 392 875 390T881 386T887 381T891 374T893 363Q893 345 871 333L767 332H664L660 319Q660 318 638 245T614 171Q614 169 742 169H871L877 165Q883 161 885 159T890 151T893 138Q893 120 871 109L732 108H594L590 95Q587 84 546 -46Q508 -175 505 -178Q498 -193 478 -193Q462 -193 455 -183T448 -164Q448 -156 530 106Q530 108 434 108H337L333 95Q330 84 289 -46Q251 -175 248 -178Q240 -193 222 -193Q206 -193 199 -183T191 -164Q191 -154 273 106Q273 108 180 108L87 109Q64 117 64 139Q64 156 87 169H293L321 262Q326 277 331 294T340 321L343 330Q343 332 215 332L87 333Q64 343 64 362ZM600 330Q600 332 504 332H407L403 319Q403 318 381 245T357 171Q357 169 453 169H550L578 262Q583 277 588 294T597 321L600 330\",36:\"64 494Q64 541 80 579T120 638T171 674T219 693T253 698H256V750H318V699H323Q355 694 380 686T433 663T480 620T506 556Q510 539 510 520Q510 480 488 463T440 445L422 447Q407 451 398 459Q370 478 370 515Q370 542 384 559T412 580L427 584Q424 589 418 596T386 617T324 636H318V434Q411 419 460 355T510 217Q510 196 507 175T492 122T461 67T404 23T318 -4V-56H256V-5H254Q252 -3 240 -3Q194 4 160 23T108 64T80 112T67 156T64 190Q64 218 81 240T134 262Q171 262 187 240T204 193T190 150T153 125Q146 125 144 123Q142 123 149 113T174 89T218 66Q247 58 255 58Q256 58 256 173V287L239 291Q160 308 112 365T64 494ZM255 636Q246 635 236 632T206 620T173 591T160 543Q160 472 256 448V542Q256 636 255 636ZM320 59Q324 59 333 61T356 70T384 89T406 120T415 167Q415 200 395 225T356 260T318 274V59H320\",37:\"65 549Q65 609 84 652T132 714T187 742T236 750Q265 750 296 734T355 697T431 661T541 644Q662 644 736 730Q751 749 767 749T790 739T797 719Q797 710 768 672T504 329Q212 -47 211 -48Q203 -55 191 -55Q161 -55 161 -25Q161 -17 163 -12L642 609Q608 595 542 595Q515 595 488 599T441 608T405 619T381 628L373 632Q373 630 375 619T380 589T383 548Q383 455 343 401T235 347Q217 347 198 351T154 368T110 403T78 462T65 549ZM320 549Q320 633 295 665T235 698H234Q214 698 196 674Q182 650 182 549Q182 509 183 486T190 441T207 409T238 399Q269 399 294 431T320 549ZM745 -56Q727 -56 708 -52T664 -35T620 0T588 59T575 146T588 232T620 291T663 325T708 343T747 347Q810 347 851 294T893 146Q893 89 879 48T841 -15T794 -46T745 -56ZM830 146Q830 230 805 262T745 295H744Q724 295 706 271Q692 247 692 146Q692 106 693 83T700 38T717 6T748 -4Q779 -4 804 28T830 146\",38:\"255 -11Q209 -11 164 4T84 56T48 146Q48 159 50 171Q57 197 72 218T99 249T152 292Q204 333 204 334L194 356Q185 379 176 421T166 511Q166 538 168 551Q182 613 226 654T332 704Q334 704 343 704T358 705Q412 702 444 661T476 565V559Q476 489 334 371L330 368L335 357Q382 272 485 165L496 154L506 163Q543 200 597 273L671 382H601V444H610L732 441Q821 441 830 444H836V382H741L709 335Q702 324 687 302T665 270T646 244T625 216T605 191T581 162T553 132L537 116Q544 109 557 98T605 69T673 51Q711 51 739 70T767 115V118H829V114Q829 70 786 30T668 -11Q570 -11 474 37L451 49L441 43Q352 -11 255 -11ZM415 564Q415 596 400 625T356 654Q329 654 310 634T285 588Q283 580 283 554Q283 475 309 417L325 431Q415 512 415 564ZM192 182Q192 126 213 89T279 51Q348 51 400 83L389 91Q362 112 338 137T295 186T264 229T240 265T227 286Q226 285 222 280T217 272T211 263T205 251T200 238T196 222T193 204T192 182\",39:\"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547\",40:\"103 166T103 251T121 412T165 541T225 639T287 708T341 750H356H361Q382 750 382 736Q382 732 365 714T323 661T274 576T232 439T214 250Q214 -62 381 -229Q382 -231 382 -234Q382 -249 360 -249H356H341Q314 -231 287 -207T226 -138T165 -41T121 89\",41:\"231 251Q231 354 214 439T173 575T123 661T81 714T64 735Q64 744 73 749H75Q77 749 79 749T84 750T90 750H105Q132 732 159 708T220 639T281 542T325 413T343 251T325 89T281 -40T221 -138T159 -207T105 -249H90Q80 -249 76 -249T68 -245T64 -234Q64 -230 81 -212T123 -160T172 -75T214 61T231 251\",42:\"235 706Q235 724 251 737T287 750Q306 750 322 738T339 706Q339 685 318 580V579Q429 663 436 666Q441 668 449 668Q471 668 486 650T501 612Q501 582 478 572Q476 570 414 549L354 528L414 507Q420 505 430 502T445 497T458 492T470 488T479 483T487 478T493 471T497 463T500 454T501 443Q501 423 486 406T449 388H446Q435 388 370 437Q339 461 318 477V476Q339 371 339 350Q339 332 323 319T287 306T251 319T235 350Q235 371 256 476V477Q145 393 138 390Q133 388 125 388Q103 388 88 406T73 444Q73 474 96 484Q98 486 160 507L220 528L160 549Q154 551 144 554T129 559T116 564T104 568T95 573T87 578T81 585T77 593T74 602T73 613Q73 633 88 650T125 668H128Q139 668 204 619Q235 595 256 579V580Q235 685 235 706\",43:\"64 232T64 250T87 281H416V444Q416 608 418 612Q426 633 446 633T475 613Q477 608 477 444V281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221L642 220H477V57Q477 -107 475 -112Q468 -131 446 -131Q425 -131 418 -112Q416 -107 416 57V220H251L87 221Q64 232 64 250\",44:\"74 85Q74 120 97 145T159 171Q200 171 226 138Q258 101 258 37Q258 -5 246 -44T218 -109T183 -155T152 -184T135 -194Q129 -194 118 -183T106 -164Q106 -157 115 -149Q121 -145 130 -137T161 -100T195 -35Q197 -28 200 -17T204 3T205 11T199 9T183 3T159 0Q120 0 97 26T74 85\",45:\"13 166V278H318V166H13\",46:\"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85\",47:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",58:\"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85\",59:\"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 50T74 86T97 146T158 171Q204 171 226 132T248 38Q248 -23 223 -80T171 -165T135 -194Q129 -194 118 -183T106 -164Q106 -163 106 -160L107 -158Q108 -155 121 -142T150 -107T177 -58Q189 -32 194 3Q195 6 193 6Q172 0 158 0Q121 0 98 25\",60:\"797 -56Q797 -68 790 -76T767 -85H759L434 70Q108 226 105 229Q96 238 96 250Q96 263 105 272Q109 276 271 354T595 508T757 585Q763 587 766 587Q780 587 788 578T797 556Q797 544 788 535Q784 531 490 391L197 251Q213 242 359 173T644 37T788 -34Q797 -43 797 -56\",61:\"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87\",62:\"127 -85Q110 -85 103 -75T96 -55Q96 -41 106 -34Q119 -24 308 65Q361 90 411 114L696 250L427 379Q106 533 103 537Q96 545 96 557Q96 568 104 577T128 587Q137 586 460 431T788 272Q797 263 797 250Q797 238 788 229Q785 226 459 70L135 -85H127\",63:\"65 570Q65 628 119 664T259 700Q326 700 372 688T440 654T469 613T478 569Q478 505 412 465Q287 391 287 294V283Q287 250 284 244T263 237H256H249Q232 237 229 242T225 272V287Q227 364 253 418Q274 463 311 504Q335 530 335 575Q335 622 323 635T259 648Q231 648 209 644T179 636T170 630L172 628Q174 627 177 625T183 620T190 611T197 601T202 587T204 570Q204 539 185 519T134 499Q105 499 85 517T65 570ZM171 86Q171 125 197 148T258 171Q292 169 316 146T340 86Q340 48 316 25T256 1Q218 1 195 24T171 86\",64:\"64 347Q64 511 171 605T434 699Q487 699 500 698Q624 684 703 621T811 464Q828 414 828 344Q828 232 788 179T691 125Q673 125 657 127T628 132T606 140T588 148T576 156T568 162L566 164Q565 164 549 154T504 135T444 125Q349 125 284 183T218 347Q218 455 284 512T448 569Q554 569 610 479H638Q670 479 674 471Q676 468 676 340V258Q676 213 679 199T694 178Q701 174 713 177Q767 187 767 340Q767 489 678 569T446 649Q299 649 213 566T126 346Q126 307 134 269T166 189T225 116T320 65T455 45H463Q606 51 721 91L746 99H782H801Q829 99 829 85Q829 78 825 75T804 65Q800 63 797 62Q625 -6 451 -6Q271 -6 168 91T64 347ZM547 468Q526 493 504 505T444 517T377 476T346 347Q346 306 354 271T386 206T448 177Q505 177 547 226V468\",91:\"128 -250V750H293V689H189V-189H293V-250H128\",92:\"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718\",93:\"25 689V750H190V-250H25V-189H129V689H25\",94:\"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632\",95:\"0 -61V-10H574V-61H0\",96:\"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634\",123:\"504 -207T504 -225T500 -246T476 -250H469Q257 -250 227 -145L225 -135L224 0Q224 15 224 30T224 59T224 84T224 106T223 122T223 133V137Q222 138 221 144T213 162T195 185Q171 206 141 215Q123 222 107 223T84 225T74 229T70 250T73 270T83 276T106 276T141 285Q171 294 195 315Q201 321 206 328T214 341T219 352T222 360L223 363V367Q223 371 223 378T223 394T224 415T224 441T224 470T224 501L225 636Q249 739 426 749Q428 749 443 749T466 750H473Q495 750 499 747T504 725T501 704T480 699Q381 693 357 645Q352 634 351 617T350 497V412Q350 350 338 329Q325 303 298 284T251 258T227 251Q226 251 226 250L227 249Q231 248 238 246T265 236T299 217T329 184T349 137Q350 131 350 3T352 -130Q358 -160 392 -178T480 -199Q497 -200 500 -203\",124:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",125:\"70 726Q71 744 74 747T99 750H106Q323 750 349 636L350 501Q350 486 350 470T350 441T350 416T350 394T351 378T351 367V363Q352 362 353 356T361 338T379 315Q403 294 433 285Q451 278 467 277T490 275T500 271T504 250T501 230T491 224T468 224T433 215Q403 206 379 185Q373 179 368 172T360 159T355 148T352 140L351 137V133Q351 129 351 122T351 106T350 85T350 59T350 31T350 0L349 -135L347 -145Q317 -250 106 -250H99Q79 -250 75 -247T70 -226Q70 -208 73 -204T95 -199Q193 -193 217 -145Q222 -134 223 -117T224 3Q224 20 224 48T223 86Q223 145 237 175T301 232Q335 249 347 249Q348 249 348 250L347 251Q343 252 336 254T309 264T275 284T245 316T225 363Q224 369 224 497T222 631Q216 660 182 678T95 699Q77 700 74 704T70 726\",126:\"343 202Q320 202 278 225T215 249Q181 249 146 214L134 202L115 219Q111 222 106 226T98 234L96 236Q158 306 165 313Q199 344 230 344Q239 344 244 343Q262 339 300 318T359 297Q393 297 428 332L440 344L459 327Q463 324 468 320T476 312L478 310Q416 240 409 233Q375 202 343 202\",168:\"96 615Q96 650 120 672T178 695Q214 693 234 669T255 615Q255 583 232 559T176 535Q147 535 122 556T96 615ZM319 615Q319 651 343 673T399 695Q426 695 452 675T478 615Q478 578 454 557T395 535Q364 537 342 559T319 615\",172:\"680 371Q683 369 688 366T695 361T698 356T701 346T701 332T702 308V216Q702 196 702 168T703 130Q703 90 697 76T671 61Q650 61 643 81Q641 86 641 198V310H364L87 311Q64 319 64 341Q64 362 84 369Q89 371 385 371H680\",175:\"80 540V607H494V540H80\",176:\"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618\",177:\"64 328T64 346T87 377H416V542L417 707Q431 728 443 728Q467 728 475 709Q477 704 477 540V377H807Q808 376 811 374T817 370T823 365T827 358T829 347Q829 326 807 317L642 316H477V25H807Q808 24 811 22T817 18T823 13T827 6T829 -5Q829 -26 807 -35H87Q64 -24 64 -6T87 25H416V316H251L87 317Q64 328 64 346\",180:\"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706\",183:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251\",215:\"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500\",247:\"344 495Q344 535 372 566T447 597Q490 597 519 566T548 495Q548 452 518 423T446 393Q404 393 374 423T344 495ZM87 221Q64 230 64 251T84 279Q89 281 448 281H806Q807 280 810 278T816 274T822 269T826 262T828 251Q828 230 806 221H87ZM344 -36T344 6T373 78T446 108Q487 108 517 79T548 6Q548 -35 519 -65T446 -96Q406 -96 375 -66\",305:\"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",567:\"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",697:\"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563\",710:\"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632\",711:\"131 603Q130 604 136 618T150 646T158 659L223 635L287 611L351 635L416 659Q417 660 424 647T437 619T443 603Q440 601 364 558T287 515T210 558T131 603\",713:\"80 540V607H494V540H80\",714:\"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706\",715:\"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634\",728:\"287 500Q208 500 155 558T102 689V694H153V685Q153 681 154 674T164 648T186 615T226 590T287 578Q347 578 382 611T421 685V694H472V689Q472 623 422 562T287 500\",729:\"202 610Q202 647 227 671T283 695Q324 695 348 669T372 610T350 551T287 525Q248 525 225 551T202 610\",730:\"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618\",732:\"343 552Q320 552 278 575T215 599Q181 599 146 564L134 552L115 569Q111 572 106 576T98 584L96 586Q158 656 165 663Q199 694 230 694Q239 694 244 693Q262 689 300 668T359 647Q393 647 428 682L440 694L459 677Q463 674 468 670T476 662L478 660Q416 590 409 583Q375 552 343 552\",768:\"-461 634Q-461 663 -439 684T-392 706Q-384 706 -379 705T-367 700T-356 693T-343 681T-330 666T-313 645T-293 620Q-243 558 -238 553Q-237 552 -257 527L-276 503L-352 543Q-360 547 -373 553T-392 563T-408 571T-422 580T-434 587T-444 595T-451 603T-457 612T-460 622T-461 634\",769:\"-184 706Q-156 706 -136 683T-115 634Q-115 608 -134 593T-209 550Q-219 545 -224 543L-300 503L-319 527Q-339 552 -338 553Q-333 558 -283 620Q-276 629 -266 641T-251 659T-239 673T-229 685T-221 693T-212 699T-204 703T-195 705T-184 706\",770:\"-368 632L-288 694Q-286 693 -207 632T-127 570T-144 545T-162 520Q-165 520 -225 559L-288 597L-351 559Q-411 520 -414 520Q-415 520 -432 544T-449 570T-368 632\",771:\"-232 552Q-255 552 -297 575T-360 599Q-394 599 -429 564L-441 552L-460 569Q-464 572 -469 576T-476 584L-479 586Q-417 656 -410 663Q-376 694 -345 694Q-336 694 -331 693Q-313 689 -275 668T-216 647Q-182 647 -147 682L-135 694L-116 677Q-112 674 -107 670T-100 662L-97 660Q-159 590 -166 583Q-200 552 -232 552\",772:\"-495 540V607H-81V540H-495\",774:\"-288 500Q-367 500 -420 558T-473 689V694H-422V685Q-422 681 -421 674T-411 648T-389 615T-349 590T-288 578Q-228 578 -193 611T-154 685V694H-103V689Q-103 623 -153 562T-288 500\",775:\"-373 610Q-373 647 -348 671T-292 695Q-251 695 -227 669T-203 610T-225 551T-288 525Q-327 525 -350 551T-373 610\",776:\"-479 615Q-479 650 -456 672T-397 695Q-361 693 -341 669T-320 615Q-320 583 -343 559T-399 535Q-428 535 -453 556T-479 615ZM-256 615Q-256 651 -232 673T-176 695Q-149 695 -123 675T-97 615Q-97 578 -121 557T-180 535Q-211 537 -233 559T-256 615\",778:\"-415 618Q-415 653 -382 677T-296 702H-291Q-194 702 -168 647Q-161 634 -161 618Q-161 607 -165 596T-180 570T-220 546T-288 536T-355 545T-394 568T-410 594T-415 618ZM-223 618Q-223 645 -234 652T-274 659H-283Q-289 659 -297 659T-307 660Q-328 660 -339 653T-351 638T-353 619Q-353 591 -341 585T-288 578Q-260 578 -249 580T-230 590T-223 618\",779:\"-389 511L-442 543Q-442 544 -424 606T-404 674Q-390 705 -361 713Q-360 713 -356 713T-349 714Q-340 714 -330 712Q-273 690 -273 644Q-273 621 -290 604L-342 554L-389 511ZM-198 511L-251 543Q-251 544 -233 606T-213 674Q-199 705 -170 713Q-169 713 -165 713T-158 714Q-127 714 -105 693T-82 647Q-82 638 -84 631T-89 618T-99 604T-112 590T-130 574T-151 554L-198 511\",780:\"-444 603Q-445 604 -439 618T-425 646T-417 659L-352 635L-288 611L-224 635L-159 659Q-158 660 -151 647T-138 619T-132 603Q-135 601 -211 558T-288 515T-365 558T-444 603\",824:\"-705 -210Q-715 -210 -724 -203T-734 -179Q-734 -171 -732 -166Q-730 -163 -474 266T-215 698Q-208 711 -190 711Q-180 711 -171 704T-161 681Q-161 672 -164 667Q-171 654 -425 228T-683 -201Q-692 -210 -705 -210\",8194:\"\",8195:\"\",8196:\"\",8197:\"\",8198:\"\",8201:\"\",8202:\"\",8211:\"0 249V300H574V249H0\",8212:\"0 249V300H1149V249H0\",8213:\"0 249V300H1149V249H0\",8214:\"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727\",8215:\"0 -61V-10H574V-61H0\",8216:\"58 461Q58 503 70 542T99 607T134 654T165 684T184 694T201 683T213 664Q213 658 202 648T175 624T143 583T116 518Q115 512 114 505T112 493L111 488Q132 500 161 500Q198 500 221 475T245 414T222 354T161 329Q112 329 85 369T58 461\",8217:\"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547\",8220:\"110 461Q110 502 121 541T150 606T185 653T217 684T235 694Q242 694 254 682T266 664Q266 659 254 648T226 623T193 578T167 511Q164 500 164 494T164 487Q188 500 212 500Q251 500 274 475T297 414Q297 378 274 354T212 329Q167 329 139 367T110 461ZM377 461Q377 502 388 541T417 606T452 653T484 684T502 694Q509 694 521 682T533 664Q533 659 521 648T493 623T460 578T434 511Q431 500 431 494T431 487Q455 500 479 500Q518 500 541 475T564 414Q564 378 541 354T479 329Q434 329 406 367T377 461\",8221:\"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547\",8224:\"231 470Q232 471 232 473Q232 477 213 540T193 636Q192 642 192 651T204 677T239 700Q249 702 255 702Q300 702 315 660Q317 653 317 636Q317 603 298 539T279 472V470Q280 470 318 488T383 506Q408 506 423 493T442 467T446 444T443 421T424 396T383 382Q355 382 318 400T279 418Q278 416 285 392T303 334T316 284Q318 268 318 234Q318 149 311 45T296 -127T284 -203Q279 -211 255 -211Q237 -211 233 -210T226 -203Q222 -195 214 -129T199 41T192 234V245Q192 286 212 349Q233 413 231 418Q229 418 192 400T128 382Q102 382 86 396T67 421T64 444T67 466T86 492T128 506Q155 506 192 488T231 470\",8225:\"193 637Q193 663 206 679T231 698T255 702T279 699T304 679T317 637Q317 605 299 557T280 504Q280 503 281 503T320 521T382 539Q410 539 428 521T446 476Q446 454 432 434T383 414H377Q358 414 320 431T281 449L280 448Q280 444 298 396T317 316Q318 310 318 301T306 275T271 252Q261 250 255 250Q210 250 195 292Q193 299 193 316Q193 347 211 395T230 448Q230 449 229 449Q227 449 196 434Q151 414 133 414H127Q102 414 87 427T68 452T64 477Q64 503 81 521T127 539Q143 539 164 532T204 515T226 504Q230 502 230 504Q230 508 212 556T193 637ZM193 184Q193 210 206 226T231 245T255 249T279 246T304 226T317 184Q317 153 299 106T280 53Q280 51 282 51T322 68T383 86Q411 86 428 69T445 24T428 -21T382 -39Q358 -39 322 -22T282 -4Q280 -3 280 -3T280 -6Q281 -13 299 -59T317 -136Q318 -142 318 -151T306 -177T271 -200Q261 -202 255 -202Q210 -202 195 -160Q193 -153 193 -136Q193 -106 211 -60T230 -6Q230 -4 228 -4T188 -21T128 -39Q100 -39 83 -22T65 24Q65 53 82 69T127 86Q150 86 187 69T228 51Q230 50 230 50T230 53Q229 58 211 105T193 184\",8226:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251\",8230:\"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85ZM562 85Q562 121 587 146T644 171Q688 171 710 143T733 85Q733 56 712 29T648 1Q606 1 584 27T562 85ZM1050 85Q1050 121 1075 146T1132 171Q1176 171 1198 143T1221 85Q1221 56 1200 29T1136 1Q1094 1 1072 27T1050 85\",8242:\"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563\",8254:\"80 540V607H494V540H80\",8260:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",8407:\"406 694Q406 704 413 713T433 723Q448 723 454 719T467 701Q483 665 522 648Q542 637 542 619Q542 605 536 599T514 586Q468 569 431 532Q411 513 399 513Q386 513 378 522T369 543Q369 557 381 568Q385 572 387 574L400 588H228L56 589Q33 598 33 618Q33 636 56 649H426Q406 676 406 694\",8463:\"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L167 540H80V607H184L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 142 685T220 690Q293 694 307 694Q324 694 328 679Q328 673 311 607H494V540H294Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56\",8467:\"245 -19Q228 -19 212 -16T184 -6T162 9T143 27T129 46T118 66T111 84T106 99T102 111L101 116L69 89L36 62Q31 60 24 62Q-1 88 -1 98Q-1 101 1 105Q1 106 73 170L95 189V197Q95 242 112 317T159 476T241 624T353 701Q357 702 367 702Q428 702 444 641Q446 630 446 606Q446 454 241 246L215 220L212 203Q203 150 203 114Q203 113 203 106T204 95T205 82T209 67T214 54T223 43T236 35T253 32Q277 32 305 44T352 70T389 98T407 112Q409 113 412 113Q420 113 432 95Q445 77 443 70Q440 64 416 44T342 3T245 -19ZM387 615Q387 651 366 651Q342 651 321 604T276 470L241 331Q246 331 280 373T350 486T387 615\",8472:\"399 159Q410 159 421 151T433 126Q433 104 410 85Q408 84 410 78Q411 72 414 66T428 51T455 43Q483 43 506 55T543 83T568 125T584 166T594 206Q595 211 596 214Q610 273 610 301Q610 365 542 365H538Q483 365 429 344T337 292T269 229T225 175T210 150L255 99Q261 92 274 78T292 58T305 41T316 22T321 3T324 -23Q324 -87 283 -148T174 -210H171Q161 -210 152 -209T128 -201T101 -180T81 -141T72 -78Q72 -72 72 -60T73 -45Q79 4 102 65L108 81Q84 117 84 167Q84 273 140 367T269 461Q285 461 285 447Q285 440 282 431Q278 418 276 415T264 410Q228 404 201 336T174 219Q174 218 176 202L184 214Q252 303 348 360T549 417Q614 417 658 391T719 317Q726 292 726 260Q726 148 646 70T451 -8Q407 -8 377 17T346 92Q346 159 396 159H399ZM178 -160Q200 -160 216 -132T232 -75Q232 -63 228 -56T203 -26Q196 -18 192 -14Q185 -5 176 5T161 20T156 27L153 28Q151 28 146 8T137 -42T132 -89Q132 -160 178 -160\",8501:\"590 427Q581 427 579 433T575 450T568 470V468L532 288L541 281Q620 220 634 165L637 154V124Q637 74 628 46Q623 32 612 16T592 0Q580 0 578 19T569 69T538 121Q532 126 385 240T236 355Q234 355 231 338T225 291T222 237Q222 222 223 213T225 201T228 195T231 190Q238 179 261 160T300 119T316 73Q316 41 291 23T231 1Q226 0 149 0H98Q73 0 69 3T64 24Q64 43 67 47T85 51H89Q119 51 134 55T152 64T154 76Q154 95 125 141T96 220Q96 243 104 270T123 319T145 360T164 391T172 404T150 421T102 468T68 529L65 541V570Q65 620 74 648Q79 664 91 679T111 694Q122 694 123 675T132 625T164 573Q168 569 319 452T471 335Q471 337 486 409T502 488Q502 489 491 493T467 511T448 546V573Q448 602 452 624T462 659T474 680T486 691T493 694Q499 694 502 691T507 682T513 673Q517 667 534 651T557 630Q558 629 590 616T631 587Q638 577 638 543Q637 489 622 458T590 427\",8592:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063\",8593:\"33 396Q14 396 14 423Q14 445 18 449T41 459Q72 466 99 478T147 505T185 537T215 571T238 604T254 635T264 661T270 678L272 685Q276 694 288 694Q298 692 300 689T307 672Q331 592 392 535T535 459Q553 454 557 450T561 423Q561 396 542 396Q531 396 501 405T418 443T329 517L319 529L318 179V-171Q307 -193 288 -193Q265 -193 258 -171L257 179V529L247 517Q209 473 158 444T76 405T33 396\",8594:\"65 251Q65 270 87 281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L87 221Q65 228 65 251\",8595:\"14 77Q14 104 33 104Q44 104 74 96T156 57T247 -17L257 -29V321Q257 669 259 675Q268 694 289 694Q295 693 300 691T307 686T313 679T318 672V321L319 -29L329 -17Q366 26 417 55T499 94T542 104Q561 104 561 77Q561 56 557 51T535 41Q481 28 438 0T370 -58T330 -119T308 -167T302 -187Q297 -194 288 -194Q278 -194 273 -186T265 -165T251 -127T220 -77Q151 15 41 41Q22 46 18 50T14 77\",8596:\"305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L404 281H744L914 282Q880 305 839 362T785 484Q781 500 781 503Q781 517 806 518Q809 518 811 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495\",8597:\"33 469Q14 469 14 496Q14 518 18 522T41 532Q121 551 182 608T268 745Q275 767 288 767Q299 767 303 755T320 713T355 650Q424 558 535 532Q553 527 557 523T561 496Q561 469 542 469Q531 469 501 478T418 516T329 590L319 602L318 426V74L319 -102L329 -90Q366 -47 417 -18T499 21T542 31Q561 31 561 4Q561 -17 557 -22T535 -32Q454 -51 393 -108T307 -245Q300 -267 288 -267Q279 -267 274 -259T266 -238T250 -200T220 -150Q151 -58 41 -32Q22 -27 18 -23T14 4Q14 31 33 31Q44 31 74 23T156 -16T247 -90L257 -102V602L247 590Q209 546 158 517T76 478T33 469\",8598:\"429 724Q438 724 452 711T466 690Q466 681 452 671Q361 602 242 599H218L756 135Q832 69 913 -1T1036 -108L1077 -143Q1084 -151 1084 -163Q1084 -180 1074 -187T1054 -194H1052Q1043 -194 939 -105Q866 -42 812 5Q180 549 178 549V546Q179 542 179 539Q183 520 183 483Q183 435 172 390T149 323T130 296Q121 292 115 295Q85 312 85 328Q85 331 95 350T115 406T125 486Q125 540 110 583T79 648T64 675Q64 681 68 687T81 693Q87 693 94 690Q162 657 232 657Q296 657 349 681T420 722Q422 724 429 724\",8599:\"1069 693Q1076 693 1080 687T1085 675Q1085 671 1076 656T1055 621T1034 565T1024 486Q1024 442 1034 406T1054 351T1064 328Q1064 321 1057 313T1042 300L1034 295Q1030 293 1027 293Q1023 293 1020 295T1014 301T1009 308T1005 316T1001 324Q980 368 971 419Q966 442 966 484V492Q966 528 972 553Q971 553 757 368T328 -3T107 -191Q103 -193 94 -193Q78 -193 71 -184T64 -164Q64 -153 72 -143Q79 -136 382 124L934 599H909Q837 599 760 634T683 690Q683 697 696 710T722 724Q726 724 742 714T779 691T838 668T920 657Q959 657 991 666T1043 684T1069 693\",8600:\"65 663Q65 680 74 687T93 694H96Q104 694 118 683T204 610Q280 545 338 495Q969 -49 971 -49L970 -46Q970 -42 970 -39Q966 -20 966 18Q966 65 977 110T1001 177T1019 204Q1028 208 1034 205Q1064 188 1064 172Q1064 169 1054 150T1034 94T1024 14Q1024 -28 1033 -64T1054 -120T1075 -155T1085 -175Q1085 -181 1081 -187T1068 -193Q1062 -193 1055 -190Q987 -157 919 -157Q817 -157 739 -215Q727 -224 720 -224Q712 -224 697 -210Q683 -199 683 -190T697 -171Q788 -102 907 -99H931L393 365Q317 431 236 501T114 608L72 643Q65 651 65 663\",8601:\"80 -193Q73 -193 69 -187T64 -175Q64 -172 79 -150T109 -84T125 14Q125 58 115 94T95 149T85 172Q85 179 92 187T108 200L115 205Q119 207 122 207Q126 207 129 205T135 199T140 192T144 184T148 176Q169 132 178 81Q183 58 183 17Q183 -7 182 -24T178 -48L177 -53Q178 -53 389 129T816 498T1043 692Q1049 694 1054 694Q1070 694 1077 684T1085 664Q1085 653 1077 643Q1070 636 767 376L215 -98L240 -99Q312 -99 389 -134T466 -190Q466 -197 452 -210T429 -224Q422 -224 411 -215Q330 -157 229 -157Q190 -157 158 -166T106 -184T80 -193\",8614:\"65 426Q74 448 95 448Q112 448 125 426V281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L135 221Q134 221 133 221T130 220H125V76Q115 54 95 54Q73 54 65 76V426\",8617:\"1029 475Q1029 505 1068 505Q1129 501 1173 463T1218 363Q1218 296 1170 259T1066 221H1063L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063Q1105 284 1131 305T1158 361Q1158 385 1146 401Q1122 441 1063 444Q1029 446 1029 475\",8618:\"225 221H218Q159 221 112 260T65 363Q65 431 116 468T221 505Q254 503 254 474Q254 456 245 450T216 443T188 438Q152 427 137 401Q125 385 125 362Q125 334 147 310Q171 288 221 281H632L1046 282Q1013 304 974 357T917 482Q913 500 913 501Q913 512 924 517Q926 518 944 518H949Q964 518 967 515T976 495Q996 412 1055 351T1197 270Q1217 263 1217 251Q1217 240 1209 236T1176 225T1127 204Q1069 173 1030 122T976 6Q972 -10 968 -13T948 -17H943Q918 -16 914 -9Q913 -6 913 -2Q913 1 917 17Q945 138 1046 220H632L225 221\",8636:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L572 220Q79 220 77 221Q64 225 64 244Q64 250 64 254T67 261T71 265T78 268T85 272Q142 302 189 345T258 421T296 484T315 516Q319 518 337 518Q358 518 363 512Q370 504 367 496Q360 469 319 404T219 290L209 282L636 281H1063\",8637:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063\",8640:\"65 251Q65 270 87 281H513L940 282L930 290Q871 338 830 403T782 496Q779 510 791 517Q794 518 812 518H817Q831 518 835 515T847 494Q871 445 903 404T966 338T1022 298T1064 272T1083 259Q1085 255 1085 245Q1085 225 1072 221Q1070 220 578 220L87 221Q65 228 65 251\",8641:\"84 279Q89 281 580 281Q1070 281 1074 279Q1085 275 1085 256Q1085 245 1083 241T1066 230Q919 153 847 7Q839 -11 835 -14T817 -17H812Q791 -17 786 -11Q779 -3 782 5Q789 31 830 96T930 212L940 220H513L87 221Q64 229 64 250Q64 272 84 279\",8652:\"65 451Q65 470 87 481H513L940 482L930 490Q871 538 830 603T782 696Q779 710 791 717Q794 718 812 718H817Q831 718 835 715T847 694Q871 645 903 604T966 538T1022 498T1064 472T1083 459Q1085 455 1085 445Q1085 425 1072 421Q1070 420 578 420L87 421Q65 428 65 451ZM1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063\",8656:\"1063 169L1068 166Q1072 163 1074 162T1079 157T1083 149T1085 139Q1085 118 1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1069 389T1076 384T1082 375T1085 362Q1085 344 1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063\",8657:\"672 343Q672 326 670 320T657 313Q644 313 602 335Q577 349 557 361T527 381T509 395T499 403T495 406T494 118Q494 -166 492 -174Q484 -193 465 -193H463Q456 -193 453 -192T444 -186T433 -170V465L423 477Q407 495 394 514T367 554T351 579Q349 576 339 560T313 520T279 477L269 465V-22V-102Q269 -132 269 -145T268 -169T266 -180T260 -185T253 -191Q248 -193 239 -193H237Q218 -193 210 -174Q208 -166 208 118Q208 406 207 406L199 399Q191 392 165 374T100 335Q58 313 45 313Q35 313 33 319T30 343V349Q30 359 30 362T35 369T45 374T66 383T100 401Q267 499 333 680Q339 694 351 694Q361 694 365 687T380 652T407 597Q442 536 489 489T573 420T638 383T670 365Q672 361 672 343\",8658:\"64 362Q64 380 87 393H416L745 394L735 405Q708 436 681 477T654 531Q654 547 679 547H684H689Q703 547 710 540T723 519T750 475T806 411Q914 303 1059 271Q1060 271 1063 270T1068 269T1072 268T1076 266T1079 264T1082 260T1083 256T1084 250Q1084 242 1080 238T1063 231T1035 225T992 211T934 185Q797 112 719 -24Q710 -40 706 -43T689 -46H684Q653 -46 653 -31Q653 -24 661 -10Q694 50 737 99L745 108H416L87 109Q64 117 64 139Q64 156 87 169H449L812 170L826 180Q842 193 860 204T892 223T918 237T937 246L944 250L919 264Q866 290 825 321L811 332H449L87 333Q64 343 64 362\",8659:\"30 157Q30 174 32 180T46 187Q59 187 104 163Q154 136 198 101L207 94Q208 94 208 382Q208 666 210 674Q219 694 241 694Q254 692 262 683Q266 679 267 674Q269 658 269 522V35L279 23Q295 5 308 -14T335 -54T351 -79Q353 -76 363 -60T389 -20T423 23L433 35V671Q439 682 444 686T452 692T463 693H465Q484 693 492 674Q494 666 494 382Q494 94 495 94L504 101Q547 135 593 160T652 187Q665 191 671 177Q672 175 672 157Q672 137 669 134T636 116Q606 101 578 83T528 47T486 9T452 -30T424 -68T403 -103T387 -134T377 -159T370 -176L367 -184Q360 -194 351 -194Q345 -194 342 -192T334 -182T327 -166T315 -137T295 -97Q260 -36 213 11T129 80T63 117T32 136Q30 139 30 157\",8660:\"336 497Q358 541 363 544Q367 547 379 547H384Q401 547 405 545Q418 538 414 525T389 474T346 408L335 393H814L803 408Q781 436 760 474T735 525T744 545Q748 547 765 547Q771 547 774 547T780 546T786 544T790 541T794 535T799 527T805 514T813 497Q841 446 877 406T950 340T1014 301T1068 276L1096 265Q1102 259 1102 251Q1102 240 1085 232Q981 195 902 121Q835 56 798 -25Q791 -40 787 -43T765 -46T744 -44Q735 -40 735 -30Q735 -15 760 28T806 98L814 108H335L343 98Q361 75 378 46T404 -1T414 -24Q418 -37 405 -44Q401 -46 384 -46T363 -43T351 -25Q314 56 247 121Q216 150 182 173T125 206T79 226T53 237Q47 243 47 251Q47 254 47 256T49 261T52 264T57 267T61 268T66 270T71 272Q246 335 336 497ZM985 251Q932 280 882 323L871 332H278Q264 321 253 311T237 297T214 282T164 251L176 244Q221 218 278 169H871Q928 218 973 244L985 251\",8661:\"49 441Q30 441 30 464V471V480Q30 498 44 502Q237 573 331 750Q337 767 351 767Q360 767 368 753T400 702T460 629Q504 584 552 554T632 511T666 497Q672 493 672 471Q672 454 670 449Q664 441 653 441Q639 443 591 465T508 513L495 522L494 386V114L495 -22L508 -13Q543 12 591 34T653 59Q672 59 672 36V29V20Q672 2 658 -2Q465 -71 367 -257Q360 -267 351 -267Q343 -267 336 -257T320 -231T292 -187T242 -129Q198 -84 150 -54T70 -11T36 3Q30 7 30 29Q30 46 32 51Q38 59 49 59Q63 57 111 35T194 -13L208 -22V522L194 513Q159 488 111 466T49 441ZM422 584Q411 594 400 606T383 626T366 648T351 667Q349 665 339 652T314 620T280 584L269 573V-73L280 -84Q305 -108 351 -166Q353 -164 363 -151T389 -119T422 -84L433 -73V573L422 584\",8704:\"1 664Q-2 685 23 693H27Q46 693 54 680T102 578L148 475H492L533 570Q541 586 548 603T560 630T569 650T576 667T582 678T588 686T594 691T600 693T609 694Q622 694 631 684T639 662Q637 653 492 325T341 -8Q333 -16 320 -16Q306 -16 298 -8Q294 -4 147 326L1 656V664ZM464 414H319Q175 414 175 413L319 88L464 414\",8707:\"81 347Q81 359 84 363T104 378H513V633H300L87 634Q64 642 64 664Q64 685 84 692Q89 694 321 694H552Q571 681 574 669V25Q567 7 552 1H87Q64 12 64 30T87 61H513V317H308Q103 317 99 319Q81 328 81 347\",8709:\"285 711Q307 711 326 708T357 701T370 698Q371 698 375 710T383 735T389 750Q395 767 415 767Q431 767 438 757T446 738T436 701T426 670Q426 668 433 664Q468 633 489 588Q511 542 519 488T528 344Q528 286 524 243T508 150T466 63T394 6Q345 -17 287 -17Q265 -17 246 -14T216 -7T203 -4Q191 -47 183 -60T159 -73Q146 -73 137 -63T128 -44Q128 -38 138 -7L148 24L141 30Q134 35 120 49Q94 77 78 113T56 194T48 268T46 344Q46 388 47 416T56 494T78 577T122 644T194 694Q239 711 285 711ZM351 639Q350 639 346 642T337 648T325 654T306 658T283 660Q254 660 221 638T181 567Q171 513 171 375Q171 164 182 129L351 639ZM402 356Q402 516 395 555Q395 557 395 559T394 563T394 566L393 568L223 57Q252 34 286 34H288Q318 34 346 53T387 109Q402 152 402 329V356\",8710:\"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137\",8712:\"97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L534 526Q515 526 491 526T457 526T435 526T417 525T404 523T390 521T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 403 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220Q159 220 159 218Q159 206 166 182T190 122T247 50T341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q276 -65 187 24T97 251\",8713:\"126 -210Q116 -210 107 -203T97 -179Q97 -171 99 -166Q99 -165 111 -145T150 -80T203 8Q97 104 97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H549Q565 614 582 643T608 685L616 698Q623 711 641 711Q651 711 660 704T670 681Q670 672 667 667Q666 666 661 657T644 627T620 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L584 526L437 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220H401L283 23Q311 5 341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q320 -71 252 -29Q152 -197 148 -201Q139 -210 126 -210ZM235 62L330 220Q159 219 159 218Q159 196 176 150T235 62ZM366 281L513 526Q503 526 487 526T465 526T448 525T433 525T422 525T412 524T403 523T394 521T385 519T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 366 281\",8715:\"96 251Q96 268 119 281H363Q607 281 607 283Q607 295 600 319T576 379T519 451T425 507Q386 521 361 523T233 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 229 587Q238 587 257 587T288 588Q366 588 435 568T568 488Q670 388 670 251Q670 155 621 78T499 -39T345 -85Q336 -86 225 -86L119 -85Q96 -77 96 -55Q96 -38 119 -25H233Q356 -24 371 -21Q373 -21 393 -16Q468 3 523 55T599 177Q607 206 607 218Q607 220 363 220L119 221Q96 229 96 251\",8722:\"119 221Q96 230 96 251T116 279Q121 281 448 281H775Q776 280 779 278T785 274T791 269T795 262T797 251Q797 230 775 221H119\",8723:\"64 155Q64 172 87 185H416V476H251L87 477Q64 485 64 507Q64 528 84 535Q89 537 448 537H807Q808 536 811 534T817 530T823 525T827 518T829 507Q829 486 807 477L642 476H477V185H807Q808 184 811 182T817 178T823 173T827 166T829 155Q829 134 807 125L642 124H477V-39Q477 -203 475 -208Q466 -227 446 -227Q427 -227 417 -205L416 -41V124H251L87 125Q64 133 64 155\",8725:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",8726:\"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718\",8727:\"236 431Q237 447 251 459T287 472T323 459T338 431Q338 423 328 363L317 300Q318 300 340 317T392 356T435 387Q442 390 450 390Q470 390 485 374T501 335Q501 326 500 320T494 309T486 300T473 293T458 287T438 280T414 272L353 250L414 228Q422 225 436 221T457 214T472 208T485 201T493 192T499 181T501 166Q501 141 484 126T450 111Q447 111 445 111T441 111T437 112T433 114T428 117T422 121T414 127T404 135T391 145T374 158L317 200L328 137Q338 77 338 69Q336 52 321 40T287 28T253 40T236 69Q236 77 246 137L257 200Q256 200 234 183T182 144T139 113Q132 110 124 110Q104 110 89 126T73 165Q73 174 74 180T80 191T88 200T101 207T116 213T136 220T160 228L221 250L160 272Q152 275 138 279T117 286T102 292T89 299T81 308T75 319T73 334Q73 359 90 374T124 389Q127 389 129 389T133 389T137 388T141 386T146 383T152 379T160 373T170 365T183 355T200 342L257 300L246 363Q236 423 236 431\",8728:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251ZM448 251Q448 325 405 369T286 413Q215 413 171 371T126 251Q126 177 168 133T287 89Q361 89 404 132T448 251\",8729:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251\",8730:\"107 178Q100 178 89 188T78 207Q78 216 84 220Q85 221 124 248T207 304T260 338Q269 340 275 335Q276 334 370 156L463 -20L698 393Q928 800 935 811Q944 820 954 820Q972 820 980 811T988 789Q988 781 858 553Q776 409 718 306Q452 -166 447 -171Q439 -179 422 -180Q405 -180 400 -175Q399 -174 346 -73T241 128T187 229L151 205Q111 178 107 178\",8733:\"65 222Q65 282 88 329T144 401T208 438T261 451H273Q312 451 320 450Q456 431 526 330L537 316Q638 451 778 451Q813 451 830 445V388Q821 391 799 391Q758 391 721 377T660 342T618 301T592 266L584 251Q648 152 697 114Q748 74 804 74H806Q823 74 829 77Q830 77 830 38V-1L820 -3Q801 -7 786 -7H771Q699 -7 632 25T527 114L516 128Q414 -8 276 -8Q192 -8 129 56T65 222ZM256 53Q296 53 332 67T392 102T434 143T461 178L469 193Q405 292 356 330Q308 369 251 369H243Q196 369 156 328T116 221Q116 191 124 161T158 99T225 55Q234 53 256 53\",8734:\"65 219Q65 318 132 385T302 452Q473 452 573 331L589 312L596 320Q710 452 857 452Q948 452 1016 386T1084 225Q1084 125 1017 59T848 -8Q679 -8 576 113L560 132L553 124Q439 -8 292 -8Q200 -8 133 58T65 219ZM1033 224Q1033 291 987 340T875 389Q748 389 648 261Q641 253 642 251Q717 163 748 137Q813 81 880 81Q941 81 987 120T1033 224ZM275 56Q315 56 353 70T418 104T466 144T497 178L507 192Q507 193 474 230T441 269Q355 362 267 362Q210 362 163 324T116 221Q116 150 162 103T275 56\",8736:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 21 56 23V25Q55 27 55 30Q55 31 56 33V35Q55 37 55 40Q55 42 57 48Q67 63 346 381Q421 467 518 578Q607 680 623 697T647 714Q656 714 661 708T666 694V692Q676 687 676 674Q676 668 673 663Q672 662 637 622T534 503T400 350L147 61L386 60H653Q666 50 666 40V38Q676 31 676 20Q676 8 661 0H71\",8739:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",8741:\"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727\",8743:\"95 -16Q78 -16 71 -6T64 14Q64 20 65 22L212 308Q359 593 361 595Q370 604 385 604Q398 602 405 595Q407 593 554 308L701 22Q702 20 702 15Q702 1 693 -8T671 -17Q661 -17 651 -9Q647 -5 515 251L383 506L251 251Q119 -5 116 -8Q108 -16 95 -16\",8744:\"64 572Q64 585 72 594T94 604T116 595Q119 592 251 336L383 81L515 336Q647 592 651 596Q661 604 671 604Q684 604 693 595T702 572Q702 567 701 565L554 279Q407 -6 405 -8Q404 -9 401 -11T397 -14Q392 -16 383 -16H380Q369 -16 361 -8Q359 -6 212 279L65 565Q65 566 65 568T64 572\",8745:\"94 -16Q73 -16 64 8V209Q64 239 64 287Q65 418 69 432Q70 434 70 435Q84 487 125 523T216 575T299 597T354 603H372Q444 603 501 590T591 558T648 515T681 471T696 435Q696 434 697 432Q701 417 702 309Q702 303 702 287Q702 239 702 209V8Q693 -16 672 -16Q650 -16 643 3Q641 8 641 201Q641 397 640 403Q631 472 558 507T383 542Q339 542 298 535T219 511T156 468T126 403Q125 397 125 201Q125 8 123 3Q116 -16 94 -16\",8746:\"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603\",8747:\"204 -71Q204 -108 181 -124T137 -141Q132 -141 132 -142Q142 -161 154 -161Q164 -161 186 -152Q200 -145 210 -135T228 -107T241 -77T249 -38T254 -2T258 38T262 74Q282 265 334 489Q334 490 337 503T341 523T347 544T355 569T365 594T379 620T397 643T420 666T447 685T481 700Q511 711 539 711T587 696T616 656T628 612T632 573Q632 536 610 519T562 501Q534 501 513 519T492 571Q492 608 515 624T559 641Q564 641 564 642Q554 661 542 661Q532 661 510 652Q496 645 486 635T468 607T455 577T447 538T442 502T438 462T434 426Q414 235 362 11Q352 -35 347 -54T328 -101T291 -152Q235 -208 162 -211Q147 -211 136 -208T109 -196T83 -165T67 -108Q64 -94 64 -73Q64 -37 86 -19T134 -1Q162 -1 183 -19T204 -71\",8764:\"64 155Q64 210 84 262T150 353T257 391Q300 391 341 371T417 321T484 264T557 215T637 194Q702 194 745 244T788 367Q796 391 808 391Q815 391 821 381T828 353V342Q828 252 776 181T637 109Q594 109 552 129T476 179T409 236T336 285T256 306Q193 306 149 258T105 132Q98 109 86 109Q76 109 70 122T64 155\",8768:\"64 561Q64 570 76 576T108 583Q174 583 214 535T254 407Q254 368 238 324T202 248T166 173T149 92Q149 43 169 2T217 -39Q231 -40 242 -46T254 -60Q254 -69 241 -75T210 -82Q145 -82 105 -34T64 93Q64 133 80 177T116 253T152 328T169 408Q169 461 148 500T105 540Q92 540 78 545T64 561\",8771:\"64 295Q64 378 117 440T257 502Q298 502 339 485T416 443T486 394T560 352T637 335Q693 335 740 373T788 478Q796 502 808 502Q815 502 821 492T828 465V455Q828 365 771 308T640 250Q603 250 562 265T501 294T439 336L370 382Q308 417 256 417Q205 417 164 388T110 317Q110 316 109 304T107 286T103 270T97 255T86 250Q76 250 70 263T64 295ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27\",8773:\"64 402Q64 457 84 509T150 600T257 638Q300 638 341 618T417 569T484 511T557 462T637 441Q702 441 745 491T788 614Q796 638 808 638Q815 638 821 628T828 600V589Q828 499 776 428T637 356Q594 356 552 376T476 425T409 483T336 532T256 553Q193 553 149 505T105 379Q98 356 86 356Q76 356 70 369T64 402ZM87 197Q64 207 64 226Q64 247 84 255Q89 257 448 257H807Q808 256 811 254T817 250T823 245T827 238T829 227Q829 209 807 197H87ZM87 -27Q64 -18 64 3Q64 23 86 32Q89 33 448 33H807L812 30Q816 27 818 26T823 21T827 13T829 3Q829 -18 807 -27H87\",8776:\"64 345Q64 423 119 473T250 524Q301 524 356 503T451 455T542 407T636 385Q700 385 743 417T786 481Q786 493 791 508T807 524Q817 524 823 512T829 479Q829 404 776 352T638 300Q590 300 537 321T443 369T352 417T256 439Q207 439 166 417T110 359Q109 357 107 341T100 312T85 300Q77 300 71 313T64 345ZM64 77Q64 155 119 205T250 256Q302 256 357 235T451 187T541 139T636 117Q699 117 742 148T786 213Q786 231 792 243T808 256T823 242T829 208Q829 134 776 83T640 32Q591 32 537 53T443 101T352 149T256 171Q206 171 165 148T110 91Q109 89 107 73T100 44T85 32Q77 32 71 45T64 77\",8781:\"798 533Q812 533 820 524T829 502T819 480T769 440Q655 355 537 330Q492 322 447 322Q401 322 356 330Q289 344 219 381T118 443T73 481Q64 490 64 503Q64 517 72 525T94 533Q99 533 102 532Q107 531 138 507T209 456T314 405T446 382Q604 382 765 515Q788 533 798 533ZM95 -32Q81 -32 73 -23T64 -1Q64 10 74 21T124 61Q213 127 293 153T421 179L422 180Q424 180 426 180T432 180T441 180T452 179Q612 179 769 61Q811 29 820 19T829 -1Q829 -14 821 -23T798 -32Q788 -32 765 -14Q608 118 446 118Q287 118 128 -14Q105 -32 95 -32\",8784:\"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87ZM362 635Q362 671 387 696T444 721Q488 721 510 693T533 635Q533 606 512 579T448 551Q406 551 384 577T362 635\",8800:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q165 -163 327 109H87Q64 118 64 139Q64 159 86 168Q89 169 363 169L461 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H496Q533 455 583 539T656 660T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q729 664 709 631T645 523T567 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H532L433 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H398Q217 -195 211 -201Q202 -210 189 -210\",8801:\"87 445Q64 454 64 475Q64 497 84 503Q89 505 448 505H807Q808 504 812 502T818 497T823 492T827 484T829 474Q829 456 807 445H87ZM87 221Q64 230 64 251T84 279Q89 281 448 281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221H87ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27\",8804:\"797 55Q797 45 790 35T767 25H759L434 180Q108 336 105 339Q96 348 96 360Q96 378 114 388Q126 394 439 544T757 695Q763 697 766 697Q780 697 788 688T797 666Q797 654 788 645Q784 641 507 509T197 361L466 232Q785 80 790 74Q797 66 797 55ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119\",8805:\"127 25Q110 25 103 34T96 54Q96 66 105 75Q109 80 439 238L696 361Q113 637 105 645Q96 654 96 667Q96 679 104 688T128 697Q137 696 460 541T788 382Q797 373 797 360Q797 348 788 339Q785 336 459 180L135 25H127ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119\",8810:\"734 -74T734 -86T727 -107T704 -116H702Q694 -116 584 -55Q473 7 380 58Q87 219 73 229Q64 238 64 250Q64 263 73 272Q87 282 380 443Q695 616 699 617H700Q718 617 726 607T734 588Q734 568 717 560Q705 554 435 404L157 250L439 94Q721 -61 726 -66Q734 -74 734 -86ZM1085 -74T1085 -86T1078 -107T1055 -116H1053Q1045 -116 935 -55Q824 7 731 58Q438 219 424 229Q415 238 415 250Q415 263 424 272Q438 282 731 443Q1046 616 1050 617H1051Q1069 617 1077 607T1085 588Q1085 568 1068 560Q1056 554 786 404L508 250L790 94Q1072 -61 1077 -66Q1085 -74 1085 -86\",8811:\"64 588Q64 600 72 609T94 618H95Q103 618 209 559Q322 496 419 443Q712 282 725 272Q734 263 734 250Q734 238 725 229Q714 220 415 55T110 -113Q103 -116 95 -116Q78 -116 71 -106T64 -86Q64 -74 72 -66Q77 -61 359 94L641 250L363 404Q277 452 173 509Q95 552 82 560T66 576V577Q64 585 64 588ZM415 588Q415 600 423 609T445 618H446Q454 618 560 559Q673 496 770 443Q1063 282 1076 272Q1085 263 1085 250Q1085 238 1076 229Q1065 220 766 55T461 -113Q454 -116 446 -116Q429 -116 422 -106T415 -86Q415 -74 423 -66Q428 -61 710 94L992 250L714 404Q628 452 524 509Q446 552 433 560T417 576V577Q415 585 415 588\",8826:\"797 -57Q797 -65 790 -75T766 -86Q748 -86 741 -74T733 -43T719 8T681 72Q647 112 588 141T475 185T343 207T230 216T136 219Q96 219 96 250Q96 280 132 280H136Q193 281 239 283T347 292T457 310T556 342T643 391T703 460T735 553Q741 585 763 585Q781 585 789 575T797 556Q797 540 792 513T758 434T682 345Q605 285 481 254L462 249Q483 246 526 233T633 185T733 104Q767 63 782 15T797 -57\",8827:\"96 556Q96 568 104 577T126 586Q152 586 158 553Q164 503 188 462T247 394T331 345T429 313T539 294T649 284T758 280H760Q797 280 797 250Q797 219 760 219H758Q627 217 529 204T347 160T216 77T158 -54Q152 -86 126 -86Q110 -86 103 -76T96 -57Q96 -41 101 -14T135 65T211 154Q288 214 412 245L431 250Q410 252 367 265T259 314T160 395Q127 435 112 483T96 556\",8834:\"96 251Q96 389 191 482T417 586Q418 586 428 586T456 586T496 586T546 587T601 587H775Q776 586 779 584T785 580T791 575T795 568T797 557Q797 536 775 527L597 526Q411 525 395 522Q390 521 370 516Q285 494 222 424T158 251Q158 131 246 53Q313 -9 408 -23Q417 -24 597 -25H775Q776 -26 781 -29T788 -34T794 -43T797 -56Q797 -74 775 -85H493Q407 -85 376 -79Q257 -55 177 35T96 251\",8835:\"96 -55Q96 -38 119 -25H296Q482 -24 498 -21Q503 -20 523 -15Q609 7 672 77T735 251T665 431T485 524Q476 525 296 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 300 587Q451 586 476 585T522 579Q632 556 714 468T796 251Q796 112 695 13Q612 -65 497 -82Q473 -86 289 -86L119 -85Q96 -77 96 -55\",8838:\"96 361Q96 499 191 592T417 696Q418 696 428 696T456 696T496 696T546 697T601 697H775Q776 696 779 694T785 690T791 685T795 678T797 667Q797 646 775 637L597 636Q411 635 395 632Q390 631 370 626Q285 604 222 534T158 361Q158 241 246 163Q313 101 408 87Q417 86 597 85H775Q776 84 781 81T788 76T794 67T797 54Q797 36 775 25H493Q407 25 376 31Q257 55 177 145T96 361ZM149 -199Q127 -191 127 -169T149 -140H154Q160 -140 169 -140T192 -140T224 -140T262 -140T306 -139T354 -139T407 -139T463 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H149\",8839:\"96 55Q96 72 119 85H296Q482 86 498 89Q503 90 523 95Q609 117 672 187T735 361T665 541T485 634Q476 635 296 636L119 637Q96 645 96 667Q96 688 116 695Q121 697 300 697Q451 696 476 695T522 689Q632 666 714 578T796 361Q796 222 695 123Q612 45 497 28Q473 24 289 24L119 25Q96 33 96 55ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 433 -139H745Q766 -152 766 -170Q766 -190 745 -199H119\",8846:\"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603ZM353 412Q353 420 353 435T352 456Q352 483 358 495T385 507Q403 506 409 494T415 457Q415 451 415 436T414 411V341H558Q579 329 579 311Q579 289 558 281L486 280H414V136Q400 114 384 114Q363 114 354 136L353 208V280H281L209 281Q187 289 187 310Q187 328 209 341H353V412\",8849:\"127 25Q111 29 104 49V362L105 675Q114 693 127 696H132Q138 696 149 696T174 696T208 696T249 696T297 697T350 697T407 697T468 697H806Q828 683 828 666Q828 646 806 637L485 636H165V85H805Q806 84 809 82T813 80T817 77T821 73T824 68T826 62T827 55Q827 34 806 25H127ZM96 -190T96 -169T119 -140H125Q131 -140 141 -140T167 -140T201 -140T242 -140T290 -139T344 -139T402 -139T463 -139H805Q806 -140 809 -142T813 -144T817 -147T821 -151T824 -156T826 -162T827 -169Q827 -190 806 -199H119Q96 -190 96 -169\",8850:\"66 55Q66 74 89 85H728V636H408L88 637Q66 645 66 667T88 696H94Q99 696 110 696T135 696T169 696T210 696T258 697T311 697T368 697T429 697H767Q786 684 789 672V49Q782 31 767 25H88Q66 32 66 55ZM88 -199Q66 -191 66 -169Q66 -148 87 -140Q91 -139 433 -139H775Q776 -140 779 -142T783 -144T787 -147T791 -151T794 -156T796 -162T797 -169Q797 -189 775 -199H88\",8851:\"131 25Q121 1 100 1Q81 1 71 23L70 301Q70 579 72 583Q77 598 90 602Q95 604 385 604H674Q693 591 696 579V25Q686 1 665 1Q646 1 636 23L635 283V543H131V25\",8852:\"696 25Q689 7 674 1H93Q77 7 71 23L70 301Q70 579 72 583Q80 604 100 604T131 579V61H635V579Q644 603 666 603Q687 603 696 579V25\",8853:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM416 282V570H414Q341 564 285 535T202 475T156 397T134 332T128 287Q127 283 127 282H416ZM765 288Q760 344 743 389T700 462T647 512T589 543T538 560T499 568L483 570H478V282H766L765 288ZM416 -69V220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q337 -61 410 -69H416ZM483 -69Q554 -60 607 -33T687 21T733 93T756 156T764 209Q766 217 766 220H478V-69H483\",8854:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM765 288Q753 424 666 497T446 571T227 498T128 288L127 282H766L765 288ZM446 -70Q578 -70 666 4T765 213L766 220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q353 -70 446 -70\",8855:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM647 512Q567 571 447 571Q340 571 262 523Q237 507 237 505L342 399L447 295L657 505L647 512ZM298 356L192 461Q180 445 161 411Q126 341 126 251Q126 128 192 40L403 250L298 356ZM701 41Q704 41 719 63T750 138T767 250Q767 310 750 362T719 437T701 460L491 250L701 41ZM238 -5Q238 -8 261 -22T336 -53T447 -70Q567 -70 647 -11L657 -4L447 206L342 101Q238 -1 238 -5\",8856:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM657 505Q656 506 650 510T638 518T623 527T604 537T581 547T553 556T522 563T486 569T446 571Q305 571 216 487T126 251Q126 128 192 40L657 505ZM447 -70Q591 -70 679 16T767 250Q767 308 751 360T719 436T701 460L469 228Q238 -1 238 -5Q238 -8 261 -22T336 -53T447 -70\",8857:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM767 252Q767 395 681 483T446 571Q303 571 215 486T126 249Q126 107 212 19T446 -70Q596 -70 681 18T767 252ZM335 251Q335 297 368 329T441 361Q498 361 527 327T557 250Q557 202 525 171T446 140Q397 140 366 173T335 251\",8866:\"65 672Q76 693 91 693Q115 693 123 674Q125 669 125 523V378H615Q618 376 622 373T628 369T632 366T635 362T636 356T637 347Q637 328 619 319Q615 317 370 317H125V171Q125 25 123 20Q114 1 94 1Q73 1 65 23V672\",8867:\"64 327T64 347T89 378H577V525L578 672Q592 693 604 693Q629 693 638 669V25Q628 1 607 1Q588 1 578 23L577 170V317H88Q64 327 64 347\",8868:\"64 664Q64 675 71 683T87 693H93Q99 693 110 693T137 693T173 693T217 694T267 694T323 694T383 694T448 694H807Q808 693 811 691T817 687T823 682T827 675T829 664Q829 643 807 634L642 633H477V25Q467 1 446 1Q427 1 417 23L416 328V633H251L87 634Q64 643 64 664\",8869:\"65 31Q65 38 66 41T71 50T87 61H416V366L417 672Q431 693 443 693Q468 693 477 669V61H807Q808 60 811 58T817 54T823 49T827 42T829 31Q829 10 807 1H87Q65 10 65 31\",8872:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V392Q219 393 537 393H896Q897 392 900 390T906 386T912 381T916 374T918 363Q918 345 896 333H190V169H896L900 166Q905 163 907 162T912 157T916 149T918 139Q918 118 896 109H190V-225Q181 -249 160 -249\",8900:\"280 522Q281 523 285 523H289Q301 523 366 457Q404 420 431 393Q533 291 546 277T560 250Q560 239 548 226T431 108Q313 -10 304 -16Q297 -21 287 -21Q278 -21 275 -19Q270 -17 146 107T18 238Q15 242 15 251Q15 258 18 263Q20 268 145 392T274 519L280 522ZM388 350L288 449L188 350L89 250L288 52L487 250L388 350\",8901:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251\",8902:\"270 491Q274 502 287 502Q298 502 304 491Q304 486 323 396T342 303L438 314Q520 324 534 324Q540 324 545 320T550 307Q550 298 539 290T456 243Q377 198 377 197L416 111Q456 26 456 22Q457 21 457 18Q457 11 451 6T438 0H437Q432 0 415 16Q387 42 358 68L287 133L216 68Q193 47 167 23Q142 0 136 0Q129 0 123 5T117 18Q117 21 118 22Q118 26 158 111L197 197Q197 198 156 221T72 269T26 298Q24 304 24 307Q24 315 29 319T40 324Q53 324 136 314L232 303Q232 306 251 396T270 491\",8904:\"906 251Q906 456 905 456Q550 252 549 251Q549 250 726 148T905 45T906 251ZM967 -14Q958 -38 939 -38H937Q928 -38 923 -35Q919 -34 748 64T500 209L71 -38Q69 -39 63 -39Q42 -39 33 -16V518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407L500 292Q578 339 750 438T929 539H933Q958 539 967 515V-14ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251\",8942:\"74 55Q74 91 99 116T156 141Q200 141 222 113T245 55Q245 26 224 -1T160 -29Q118 -29 96 -3T74 55ZM74 465Q74 501 99 526T156 551Q200 551 222 523T245 465Q245 436 224 409T160 381Q118 381 96 407T74 465ZM74 865Q74 901 99 926T156 951Q200 951 222 923T245 865Q245 836 224 809T160 781Q118 781 96 807T74 865\",8943:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251ZM562 251Q562 286 587 311T644 336Q688 336 710 308T733 250Q733 221 712 194T648 166T584 193T562 251ZM1050 251Q1050 286 1075 311T1132 336Q1176 336 1198 308T1221 250Q1221 221 1200 194T1136 166T1072 193T1050 251\",8945:\"129 785Q129 821 154 846T211 871Q255 871 277 843T300 785Q300 756 279 729T215 701Q173 701 151 727T129 785ZM576 485Q576 521 601 546T658 571Q702 571 724 543T747 485Q747 456 726 429T662 401Q620 401 598 427T576 485ZM1023 185Q1023 221 1048 246T1105 271Q1149 271 1171 243T1194 185Q1194 156 1173 129T1109 101Q1067 101 1045 127T1023 185\",8968:\"194 728Q199 743 216 749H220Q223 749 229 749T245 749T265 750T289 750T316 750T345 750H471Q472 749 477 746T484 741T490 732T493 719Q493 701 471 690L362 689H254V-224Q244 -248 223 -248T194 -226V728\",8969:\"317 -224Q307 -248 286 -248Q267 -248 257 -226L256 231V689H148L40 690Q17 698 17 720Q17 741 37 748Q42 750 169 750H295Q314 737 317 725V-224\",8970:\"194 728Q204 749 220 749Q245 749 254 725V-188H471Q472 -189 477 -192T484 -197T490 -206T493 -219Q493 -237 471 -248H216Q200 -242 194 -226V728\",8971:\"17 -219Q17 -201 40 -188H256V270L257 728Q271 749 283 749Q308 749 317 725V-224Q310 -242 295 -248H40L38 -247Q35 -246 34 -245T30 -243T25 -239T21 -234T18 -227T17 -219\",8994:\"95 108Q85 108 75 114T65 139Q65 159 129 227Q316 405 573 405Q654 405 729 387T854 344T950 286T1015 232T1053 191Q1078 160 1083 152Q1084 148 1084 139Q1084 121 1074 115T1054 108Q1040 108 1029 122T990 167T922 223Q819 291 680 309Q641 315 575 315Q508 315 469 309Q303 288 197 201Q168 179 148 155T118 119T95 108\",8995:\"1054 392Q1067 392 1076 384T1085 362Q1085 351 1079 342T1050 310Q983 243 901 200Q753 126 575 126Q494 126 420 141T298 176T205 225T140 272T100 310Q64 346 64 362Q64 370 67 374Q75 393 93 393Q107 393 124 375Q272 214 575 214Q877 214 1025 375Q1039 392 1054 392\",9001:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",9002:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\",9651:\"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340\",9653:\"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340\",9657:\"33 518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407Q529 276 533 272Q542 263 542 250Q542 238 533 229Q528 224 304 95T71 -38Q69 -39 63 -39Q42 -39 33 -16V518ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251\",9661:\"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154\",9663:\"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154\",9667:\"542 -14Q533 -38 514 -38H512Q503 -38 498 -35Q494 -34 270 95T42 229Q33 238 33 251Q33 259 35 264Q36 265 38 268T42 272Q48 278 271 407T504 539H508Q533 539 542 515V-14ZM481 251Q481 456 480 456Q125 252 124 251Q124 250 301 148T480 45T481 251\",9711:\"65 42T65 250T204 584T574 711Q795 711 935 594Q955 577 974 555T1022 490T1067 385T1084 250Q1084 42 945 -84T574 -211T204 -85ZM1024 250Q1024 431 903 540T578 650Q482 650 404 627T274 565T189 474T140 366T125 250Q125 123 186 31T347 -106T573 -150Q772 -150 898 -45T1024 250\",9824:\"675 -18Q536 -18 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366Q364 52 360 40T342 14T300 -8T230 -17H218Q110 -17 75 117Q64 163 64 209Q64 290 116 357T261 495Q363 574 414 690Q425 719 445 719Q467 719 478 693Q507 627 547 578T623 503T702 438T777 357Q829 285 829 202V197Q826 128 808 81T762 15T714 -11T675 -18\",9825:\"65 491Q65 602 121 656T246 710Q375 710 440 624L447 615Q519 711 638 711Q723 711 775 652T828 491Q828 390 770 313T581 129Q539 95 514 63T483 14T469 -13T446 -24Q434 -24 427 -17T416 0T400 32T371 74Q352 97 310 131T229 199T151 276T89 374T65 491ZM249 649Q188 649 157 603T125 489Q125 409 181 338T352 176Q408 131 437 87L446 73L456 87Q479 121 507 147T579 207T659 278Q768 387 768 489Q768 506 766 524T756 566T731 611T687 642Q668 649 638 649Q609 649 593 644Q547 633 516 604T478 534Q473 505 447 505H445Q420 505 416 534Q407 577 372 608T285 648Q277 649 249 649\",9826:\"409 686Q410 688 412 691T415 696T418 701T421 706T424 709T427 713T431 715T435 717T440 718T446 719Q455 719 460 717T472 704T488 679T516 633T563 567Q624 485 687 422T787 330T826 296T828 282Q828 270 825 265T801 245Q696 161 612 59T477 -133Q465 -154 447 -154Q439 -154 434 -152T425 -146T414 -130T399 -104T372 -62T330 -3Q270 78 207 142T107 234T70 265Q64 274 64 282Q64 296 90 317Q284 472 409 686ZM749 282Q745 286 721 307T681 343T635 388T581 446T525 516T465 601Q462 606 457 613T450 624L447 627V628Q446 628 436 611T402 561T348 489T266 396T155 292L145 282Q147 280 185 245T257 177T343 79T442 -57Q446 -64 447 -64V-63Q450 -59 475 -22T530 56T619 160T749 282\",9827:\"240 527Q240 611 301 665T446 719T590 665T652 527Q652 431 571 373Q578 363 584 352T593 335T597 329L604 335Q611 341 617 345T637 356T667 366Q672 366 680 367T694 368Q767 368 814 310T861 177Q861 109 819 57T713 -12Q690 -17 656 -17Q535 -13 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366V62Q356 -12 237 -17Q130 -17 71 60Q32 111 32 178Q32 251 78 309T198 368Q217 368 233 364T260 354T279 343T291 333T296 329L300 336Q304 343 310 354T322 373Q240 432 240 527\",9837:\"230 480Q293 480 337 440T381 330V322Q381 240 323 161Q258 71 123 -11L114 -16L97 -17Q70 -17 66 -7Q64 -3 64 366V641Q64 717 65 731T75 748Q78 750 95 750Q117 750 122 742T127 694Q127 685 127 653T126 595V454Q183 480 230 480ZM242 333Q242 405 212 405H207Q147 405 130 370L127 364L126 219Q126 77 128 77Q133 82 140 90T167 127T202 183T229 253T242 333\",9838:\"345 -223Q333 -223 330 -214T327 -178V-116Q327 -23 326 -23L203 -82Q90 -134 77 -140Q65 -142 59 -130Q57 -126 57 295V595Q57 643 57 667T58 704T60 719T63 724Q93 741 101 741Q113 741 116 732T119 680V597Q119 467 120 467Q121 468 180 495T301 552T369 584Q381 586 387 574Q389 570 389 187V-88Q389 -132 389 -154T388 -188T386 -202T383 -206Q353 -223 345 -223ZM327 271Q327 421 326 421L120 323L119 173V23Q120 23 223 72L327 121V271\",9839:\"140 628Q151 628 154 620T158 591V549V484L166 488Q175 492 192 500T223 516L288 548V622V674Q288 681 288 685T289 693T289 699T291 703T295 707T298 709T304 712T311 716Q326 724 332 724Q343 724 346 715T350 685V644V579Q358 583 364 583Q376 583 380 574Q382 570 382 514V481Q382 459 380 454T363 441L350 435V135Q358 139 364 139Q376 139 380 130Q382 126 382 70V37Q382 15 380 10T363 -3L350 -9V-76Q350 -102 348 -106T328 -119Q312 -128 306 -128Q288 -128 288 -99V-77V-40L280 -44Q271 -48 254 -56T223 -72L158 -104V-150V-180Q158 -198 155 -202T135 -216Q119 -224 114 -224Q96 -224 96 -192V-172V-135Q86 -140 81 -140Q70 -140 66 -129Q64 -126 64 -70V-54Q64 -18 66 -12T83 3L96 9V309Q86 304 81 304Q70 304 66 315Q64 318 64 374V407Q64 429 66 434T83 447L96 453V602Q99 609 100 610T118 619Q134 628 140 628ZM288 254Q288 404 287 404L158 340V40L166 44Q175 48 192 56T223 72L288 104V254\",10072:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",10216:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",10217:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\",10229:\"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063L1065 280Q1079 281 1392 281H1719Q1720 280 1723 278T1729 274T1735 269T1739 262T1741 251Q1741 230 1719 221H1063\",10230:\"119 221Q96 230 96 251T116 279Q121 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H119\",10231:\"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1476L1890 282Q1857 304 1818 357T1761 482Q1757 500 1757 501Q1757 512 1768 517Q1770 518 1788 518H1793Q1808 518 1811 515T1820 495Q1840 412 1899 351T2041 270Q2061 263 2061 251Q2061 240 2053 236T2020 225T1971 204Q1913 173 1874 122T1820 6Q1816 -10 1812 -13T1792 -17H1787Q1762 -16 1758 -9Q1757 -6 1757 -2Q1757 1 1761 17Q1789 138 1890 220H1476L1063 221\",10232:\"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063L1064 168Q1080 169 1423 169H1782L1786 166Q1791 163 1793 162T1798 157T1802 149T1804 139Q1804 118 1782 109H1063L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1065 392Q1081 393 1423 393H1782Q1783 392 1786 390T1792 386T1798 381T1802 374T1804 363Q1804 345 1782 333H1063\",10233:\"87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H1169L1532 170L1546 180Q1562 193 1580 204T1612 223T1638 237T1657 246L1664 250L1639 264Q1586 290 1545 321L1531 332H1169L807 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H1136L1465 394L1455 405Q1428 436 1401 477T1374 531Q1374 547 1399 547H1404H1409Q1423 547 1430 540T1443 519T1470 475T1526 411Q1634 303 1779 271Q1780 271 1783 270T1788 269T1792 268T1796 266T1799 264T1802 260T1803 256T1804 250Q1804 242 1800 238T1783 231T1755 225T1712 211T1654 185Q1517 112 1439 -24Q1430 -40 1426 -43T1409 -46H1404Q1373 -46 1373 -31Q1373 -24 1381 -10Q1414 50 1457 99L1465 108H1136L807 109H87\",10234:\"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1425L1788 170L1802 180Q1818 193 1836 204T1868 223T1894 237T1913 246L1920 250L1895 264Q1842 290 1801 321L1787 332H1425L1063 333ZM733 393H1392L1721 394L1711 405Q1684 436 1657 477T1630 531Q1630 547 1655 547H1660H1665Q1679 547 1686 540T1699 519T1726 475T1782 411Q1890 303 2035 271Q2036 271 2039 270T2044 269T2048 268T2052 266T2055 264T2058 260T2059 256T2060 250Q2060 242 2056 238T2039 231T2011 225T1968 211T1910 185Q1773 112 1695 -24Q1686 -40 1682 -43T1665 -46H1660Q1629 -46 1629 -31Q1629 -24 1637 -10Q1670 50 1713 99L1721 108H1392L1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393\",10236:\"65 426Q74 448 95 448Q112 448 125 426V281H130L132 280H134Q162 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H135Q133 220 130 220H125V76Q115 54 95 54Q73 54 65 76V426\",10744:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",10799:\"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500\",10815:\"39 655Q39 675 43 680T69 686Q110 684 225 684Q267 684 303 684T360 685T385 686Q401 686 405 680T409 651Q409 632 403 628T367 624H348H301V62H598V624H551H532Q502 624 496 628T490 651Q490 673 494 679T514 686Q518 686 558 685T675 684T792 685T836 686Q852 686 856 680T860 651Q860 632 854 628T818 624H799H752V62H799H809Q846 62 853 59T860 36V31V21Q860 6 850 2Q846 0 450 0H156Q75 0 60 1T40 11V18Q39 26 39 31Q39 54 44 58T82 63Q84 63 90 63T100 62H147V624H100H90Q53 624 46 627T39 650V655\",10927:\"796 54Q796 40 788 32T767 24Q741 24 735 57Q729 107 705 148T646 216T563 264T465 297T356 316T245 326T136 330H134Q96 330 96 360Q96 391 134 391H136Q193 392 239 394T347 403T457 421T556 453T643 502T703 571T735 664Q741 696 763 696Q781 696 789 686T797 667Q797 651 792 624T758 545T682 456Q605 396 481 365L462 360Q483 357 526 344T633 296T733 215Q767 173 781 128T796 54ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119\",10928:\"127 24Q115 24 106 32T97 55Q97 95 124 156T211 265Q288 325 412 356L431 361Q410 363 367 376T259 425T160 506Q127 546 112 594T96 667Q96 679 104 688T126 697Q152 697 158 664Q164 614 188 573T247 505T331 456T429 424T539 405T649 395T758 391Q797 391 797 360Q797 330 761 330H758Q701 329 655 327T547 318T437 300T337 268T251 219T190 150T158 57Q151 24 127 24ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119\",12296:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",12297:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8279:\"\\u2032\\u2032\\u2032\\u2032\",8602:\"\\u2190\\u0338\",8603:\"\\u2192\\u0338\",8622:\"\\u2194\\u0338\",8653:\"\\u21d0\\u0338\",8654:\"\\u21d4\\u0338\",8655:\"\\u21d2\\u0338\",8708:\"\\u2203\\u0338\",8716:\"\\u220b\\u0338\",8740:\"\\u2223\\u0338\",8742:\"\\u2225\\u0338\",8769:\"\\u223c\\u0338\",8772:\"\\u2243\\u0338\",8775:\"\\u2245\\u0338\",8777:\"\\u2248\\u0338\",8802:\"\\u2261\\u0338\",8813:\"\\u224d\\u0338\",8814:\"<\\u0338\",8815:\">\\u0338\",8816:\"\\u2264\\u0338\",8817:\"\\u2265\\u0338\",8832:\"\\u227a\\u0338\",8833:\"\\u227b\\u0338\",8836:\"\\u2282\\u0338\",8837:\"\\u2283\\u0338\",8840:\"\\u2286\\u0338\",8841:\"\\u2287\\u0338\",8876:\"\\u22a2\\u0338\",8877:\"\\u22a8\\u0338\",8930:\"\\u2291\\u0338\",8931:\"\\u2292\\u0338\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.bold=void 0,e.bold={33:[.705,0,.35],34:[.694,-.329,.603],35:[.694,.193,.958],36:[.75,.056,.575],37:[.75,.056,.958],38:[.705,.011,.894],39:[.694,-.329,.319],40:[.75,.249,.447],41:[.75,.249,.447],42:[.75,-.306,.575],43:[.633,.131,.894],44:[.171,.194,.319],45:[.278,-.166,.383],46:[.171,0,.319],47:[.75,.25,.575],58:[.444,0,.319],59:[.444,.194,.319],60:[.587,.085,.894],61:[.393,-.109,.894],62:[.587,.085,.894],63:[.7,0,.543],64:[.699,.006,.894],91:[.75,.25,.319],92:[.75,.25,.575],93:[.75,.25,.319],94:[.694,-.52,.575],95:[-.01,.061,.575],96:[.706,-.503,.575],123:[.75,.25,.575],124:[.75,.249,.319],125:[.75,.25,.575],126:[.344,-.202,.575],168:[.695,-.535,.575],172:[.371,-.061,.767],175:[.607,-.54,.575],176:[.702,-.536,.575],177:[.728,.035,.894],180:[.706,-.503,.575],183:[.336,-.166,.319],215:[.53,.028,.894],247:[.597,.096,.894],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.563,-.033,.344],710:[.694,-.52,.575],711:[.66,-.515,.575],713:[.607,-.54,.575],714:[.706,-.503,.575],715:[.706,-.503,.575],728:[.694,-.5,.575],729:[.695,-.525,.575],730:[.702,-.536,.575],732:[.694,-.552,.575],768:[.706,-.503,0],769:[.706,-.503,0],770:[.694,-.52,0],771:[.694,-.552,0],772:[.607,-.54,0],774:[.694,-.5,0],775:[.695,-.525,0],776:[.695,-.535,0],778:[.702,-.536,0],779:[.714,-.511,0],780:[.66,-.515,0],824:[.711,.21,0],8194:[0,0,.5],8195:[0,0,.999],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.083],8211:[.3,-.249,.575],8212:[.3,-.249,1.15],8213:[.3,-.249,1.15],8214:[.75,.248,.575],8215:[-.01,.061,.575],8216:[.694,-.329,.319],8217:[.694,-.329,.319],8220:[.694,-.329,.603],8221:[.694,-.329,.603],8224:[.702,.211,.511],8225:[.702,.202,.511],8226:[.474,-.028,.575],8230:[.171,0,1.295],8242:[.563,-.033,.344],8243:[.563,0,.688],8244:[.563,0,1.032],8254:[.607,-.54,.575],8260:[.75,.25,.575],8279:[.563,0,1.376],8407:[.723,-.513,.575],8463:[.694,.008,.668,{sk:-.0319}],8467:[.702,.019,.474,{sk:.128}],8472:[.461,.21,.74],8501:[.694,0,.703],8592:[.518,.017,1.15],8593:[.694,.193,.575],8594:[.518,.017,1.15],8595:[.694,.194,.575],8596:[.518,.017,1.15],8597:[.767,.267,.575],8598:[.724,.194,1.15],8599:[.724,.193,1.15],8600:[.694,.224,1.15],8601:[.694,.224,1.15],8602:[.711,.21,1.15],8603:[.711,.21,1.15],8614:[.518,.017,1.15],8617:[.518,.017,1.282],8618:[.518,.017,1.282],8622:[.711,.21,1.15],8636:[.518,-.22,1.15],8637:[.281,.017,1.15],8640:[.518,-.22,1.15],8641:[.281,.017,1.15],8652:[.718,.017,1.15],8653:[.711,.21,1.15],8654:[.711,.21,1.15],8655:[.711,.21,1.15],8656:[.547,.046,1.15],8657:[.694,.193,.703],8658:[.547,.046,1.15],8659:[.694,.194,.703],8660:[.547,.046,1.15],8661:[.767,.267,.703],8704:[.694,.016,.639],8707:[.694,0,.639],8708:[.711,.21,.639],8709:[.767,.073,.575],8710:[.698,0,.958],8712:[.587,.086,.767],8713:[.711,.21,.767],8715:[.587,.086,.767],8716:[.711,.21,.767],8722:[.281,-.221,.894],8723:[.537,.227,.894],8725:[.75,.25,.575],8726:[.75,.25,.575],8727:[.472,-.028,.575],8728:[.474,-.028,.575],8729:[.474,-.028,.575],8730:[.82,.18,.958,{ic:.03}],8733:[.451,.008,.894],8734:[.452,.008,1.15],8736:[.714,0,.722],8739:[.75,.249,.319],8740:[.75,.249,.319],8741:[.75,.248,.575],8742:[.75,.248,.575],8743:[.604,.017,.767],8744:[.604,.016,.767],8745:[.603,.016,.767],8746:[.604,.016,.767],8747:[.711,.211,.569,{ic:.063}],8764:[.391,-.109,.894],8768:[.583,.082,.319],8769:[.711,.21,.894],8771:[.502,0,.894],8772:[.711,.21,.894],8773:[.638,.027,.894],8775:[.711,.21,.894],8776:[.524,-.032,.894],8777:[.711,.21,.894],8781:[.533,.032,.894],8784:[.721,-.109,.894],8800:[.711,.21,.894],8801:[.505,0,.894],8802:[.711,.21,.894],8804:[.697,.199,.894],8805:[.697,.199,.894],8810:[.617,.116,1.15],8811:[.618,.116,1.15],8813:[.711,.21,.894],8814:[.711,.21,.894],8815:[.711,.21,.894],8816:[.711,.21,.894],8817:[.711,.21,.894],8826:[.585,.086,.894],8827:[.586,.086,.894],8832:[.711,.21,.894],8833:[.711,.21,.894],8834:[.587,.085,.894],8835:[.587,.086,.894],8836:[.711,.21,.894],8837:[.711,.21,.894],8838:[.697,.199,.894],8839:[.697,.199,.894],8840:[.711,.21,.894],8841:[.711,.21,.894],8846:[.604,.016,.767],8849:[.697,.199,.894],8850:[.697,.199,.894],8851:[.604,0,.767],8852:[.604,0,.767],8853:[.632,.132,.894],8854:[.632,.132,.894],8855:[.632,.132,.894],8856:[.632,.132,.894],8857:[.632,.132,.894],8866:[.693,0,.703],8867:[.693,0,.703],8868:[.694,0,.894],8869:[.693,0,.894],8872:[.75,.249,.974],8876:[.711,.21,.703],8877:[.75,.249,.974],8900:[.523,.021,.575],8901:[.336,-.166,.319],8902:[.502,0,.575],8904:[.54,.039,1],8930:[.711,.21,.894],8931:[.711,.21,.894],8942:[.951,.029,.319],8943:[.336,-.166,1.295],8945:[.871,-.101,1.323],8968:[.75,.248,.511],8969:[.75,.248,.511],8970:[.749,.248,.511],8971:[.749,.248,.511],8994:[.405,-.108,1.15],8995:[.392,-.126,1.15],9001:[.75,.249,.447],9002:[.75,.249,.447],9651:[.711,0,1.022],9653:[.711,0,1.022],9657:[.54,.039,.575],9661:[.5,.21,1.022],9663:[.5,.21,1.022],9667:[.539,.038,.575],9711:[.711,.211,1.15],9824:[.719,.129,.894],9825:[.711,.024,.894],9826:[.719,.154,.894],9827:[.719,.129,.894],9837:[.75,.017,.447],9838:[.741,.223,.447],9839:[.724,.224,.447],10072:[.75,.249,.319],10216:[.75,.249,.447],10217:[.75,.249,.447],10229:[.518,.017,1.805],10230:[.518,.017,1.833],10231:[.518,.017,2.126],10232:[.547,.046,1.868],10233:[.547,.046,1.87],10234:[.547,.046,2.126],10236:[.518,.017,1.833],10744:[.711,.21,.894],10799:[.53,.028,.894],10815:[.686,0,.9],10927:[.696,.199,.894],10928:[.697,.199,.894],12296:[.75,.249,.447],12297:[.75,.249,.447]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.doubleStruck=void 0,e.doubleStruck={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.frakturBold=void 0;var r=Q(6),T=Q(226);e.frakturBold=r.AddPaths(T.frakturBold,{33:\"121 621Q121 657 132 673T177 689Q223 689 223 644V635Q223 604 222 595Q221 590 210 490T187 292T175 190V186L166 185L156 184Q156 185 139 393T121 621ZM107 47Q107 70 127 87T174 104Q201 104 221 89T241 48Q241 24 222 6T174 -12Q147 -12 127 6T107 47\",34:\"53 695Q74 695 90 679V622L65 433L52 432H39L27 516Q10 626 10 655Q10 680 26 688Q33 693 39 693Q49 695 53 695ZM151 668Q151 691 191 691Q217 691 224 685T231 661V652Q230 634 219 531L207 433L195 432Q183 432 183 433L168 541Q151 664 151 668\",38:\"290 -14Q186 -14 115 41T44 185Q44 222 54 249T88 300T131 336T189 371Q216 387 216 388Q185 459 185 510Q185 563 206 601T263 659T334 687T405 696Q476 696 503 668T531 603Q531 565 513 536T450 476Q423 459 370 432L334 413L354 384Q474 212 560 139L563 137Q611 185 611 250Q611 295 577 329Q549 356 496 357Q439 357 433 354Q432 354 432 379V403L437 402Q443 402 479 401T557 400Q653 400 735 403T831 407H836Q833 352 833 351L821 352Q809 352 792 352T756 352T720 353T696 354Q680 354 680 353L681 346Q682 339 683 327T685 306Q685 283 681 260T669 218T653 182T635 152T619 129T606 114L602 109Q604 107 618 99T659 81T707 71Q742 71 767 99T804 155L815 183Q815 184 821 183T833 180T839 177Q837 169 834 156T816 110T782 52T727 5T648 -16Q569 -16 499 35H498Q496 35 466 23T387 -1T290 -14ZM418 592Q418 617 398 639T352 661T302 642T278 574Q278 545 288 514T306 465T319 444Q342 456 353 463T382 488T409 529T418 584V592ZM159 239Q159 158 222 98T364 38Q386 38 447 57L469 63L434 98Q349 185 286 275Q258 316 238 345Q233 353 232 353Q159 316 159 239\",39:\"80 645T80 662T93 687T123 695Q158 695 158 659Q158 649 157 643L123 437Q123 436 114 436H104Q104 442 92 538Q80 645 80 662\",40:\"347 719Q325 708 311 698T272 656T233 580T207 455T195 267Q195 30 247 -79Q261 -110 291 -136Q320 -163 347 -172V-179Q347 -186 344 -186Q338 -186 328 -184T287 -165T230 -123Q134 -25 134 271Q134 417 158 514T226 662T335 734L346 737Q347 737 347 728V719\",41:\"264 262Q264 366 253 446T226 572T186 649T145 692T105 714V725Q105 735 107 735Q108 734 121 731T154 719T196 692T242 641T284 560T314 437T326 268Q326 112 299 7Q279 -78 239 -124T116 -185L105 -187V-179L106 -171L109 -169Q130 -161 138 -158T165 -146T190 -127T210 -101T229 -64T243 -12T255 58T261 148T264 262\",42:\"40 516L62 529Q85 542 110 556T140 574L126 582Q112 591 104 595T80 607T40 629Q53 642 57 645L65 652L78 642Q106 620 132 603L152 589V595Q152 630 149 681V692H179V689Q178 681 174 638T171 593Q173 593 240 639L258 652Q260 652 267 643L276 633L260 625Q190 587 175 576Q173 575 180 570Q183 569 186 567Q213 549 256 527L277 515L256 495Q246 501 228 515T194 539T170 554V543Q170 486 178 449H148V456Q152 492 152 550L151 562Q150 562 102 528L53 495Q40 514 40 516\",43:\"422 584L471 598Q472 598 472 440V282H837Q833 273 829 263L821 244L647 243H472V-63L448 -73L423 -82Q422 -82 422 81V243H239Q56 243 56 244Q60 253 65 263L73 282H422V584\",44:\"118 61Q118 80 135 93T169 107Q190 107 221 65T253 -23Q253 -39 251 -49T237 -80T198 -133Q148 -191 144 -191Q142 -191 137 -182T132 -172Q143 -161 160 -131T183 -83Q185 -77 185 -62Q185 -54 184 -48T182 -38T177 -28T171 -19T162 -8T150 6Q130 28 124 38T118 61\",45:\"54 236L73 275H453Q833 275 833 274Q830 265 825 255L818 236H54\",46:\"103 23T103 44T120 83T170 102Q200 102 218 84T237 44Q237 20 216 3T168 -15Q138 -15 121 4\",47:\"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270\",48:\"238 -12Q162 -12 102 42T42 185Q42 303 130 393Q163 425 208 452T284 490L313 501Q323 499 339 495T395 472T464 426Q533 357 533 273Q533 201 483 133T364 27T238 -12ZM428 208Q428 255 402 297T342 365T280 404T241 419Q214 419 178 374T142 259Q142 206 168 164T225 99Q259 74 310 74Q326 74 337 75T366 82T396 103T417 141Q428 171 428 208\",49:\"95 481Q102 481 217 485T383 489Q384 489 384 485Q367 397 367 165Q367 58 369 54Q374 46 380 44T410 42H466H546V40Q547 38 547 19L548 0H54V23Q54 29 54 34T54 44L55 47Q79 47 134 46T202 45Q226 45 234 52Q240 57 241 64T245 105Q254 236 254 320V347Q254 369 252 382T240 409T211 431L97 450L96 465Q95 480 95 481\",50:\"307 335Q307 374 283 397T224 421Q187 421 112 387Q105 384 100 382T95 381Q90 387 86 394L77 407L86 413Q219 491 298 491Q370 491 399 460T428 388Q428 373 424 358T409 326T391 297T363 264T335 235T301 202T269 171L199 104Q194 99 205 97Q209 96 214 96Q527 105 544 105Q553 107 563 102Q563 100 557 79T545 34T537 2H377Q338 2 247 2T130 4H44V26L104 77Q185 145 212 172T267 235Q307 291 307 335\",51:\"102 402L108 408Q115 413 122 418T141 431T165 447T194 461T227 474T263 483T302 487H307Q413 487 452 420Q465 400 465 371Q465 334 445 303T396 253T347 225T317 213Q314 213 314 211Q316 209 316 205Q317 201 320 201Q337 201 359 198T411 184T465 156T506 109T523 39Q523 -62 436 -127T229 -193Q179 -193 130 -178T56 -150T31 -133Q31 -132 41 -122L52 -112L63 -117Q128 -148 201 -148Q282 -148 331 -104T381 20Q381 71 363 100T304 145Q243 166 149 166H137V204H146Q179 204 211 210T275 229T326 268T346 329Q346 372 314 401Q292 423 245 423Q188 423 125 383L102 402\",52:\"346 -196Q344 -196 335 -187L336 -148Q337 -127 337 -55V0H13V29L187 253Q362 477 362 479L368 480Q375 481 387 483T411 487T434 491T452 494L459 495Q460 495 470 482V453Q470 389 466 230T461 62Q461 61 513 61T565 60L555 29L546 -1H461V-15Q461 -48 463 -100T465 -154L457 -157Q449 -160 434 -165T405 -175Q347 -196 346 -196ZM339 265V341Q339 362 335 362Q327 362 219 217T110 65V61H337V117Q338 133 338 187T339 265\",53:\"232 192Q176 192 122 152L95 162V481H306Q516 481 516 479Q514 477 501 433L486 389L319 388H152V386V382Q152 379 152 374T151 365Q147 329 146 260V218H149Q211 242 284 242Q353 242 402 224T474 176T508 117T518 55Q518 -62 432 -126T220 -190Q184 -190 151 -185T96 -172T57 -157T31 -145T20 -139T19 -138Q19 -136 27 -125L35 -112L51 -120Q114 -152 174 -152Q257 -152 314 -100T371 46Q371 107 340 149T232 192\",54:\"48 251Q48 330 76 403T150 529T253 623T370 683T485 704Q494 704 520 701T547 695Q547 692 542 659T536 625Q531 624 524 624L512 623L502 628Q489 635 468 640Q452 645 423 645Q403 645 379 640T320 617T255 568T201 481T171 348Q170 341 170 330V325L183 333Q275 385 357 385H361Q464 385 514 312Q546 267 546 217Q546 127 457 58T262 -12Q225 -12 189 3T120 49T68 132T48 251ZM448 165Q448 228 406 274T289 320Q264 320 236 312T190 295T173 284Q173 266 176 241T189 178T214 112T259 61T326 39Q372 39 410 75T448 165\",55:\"57 376L87 479H591V455L584 446Q544 399 491 328T349 117T185 -169L171 -196H159Q152 -197 102 -197Q58 -197 58 -196T56 -185L54 -175L299 158L443 359Q446 367 444 370H254L71 365L57 376\",56:\"88 533Q88 573 120 610T194 668T268 701T307 714Q324 714 352 711T422 695T486 659Q518 625 518 585Q518 536 479 489T384 406L371 398L385 390Q387 389 400 382T420 370T442 356T466 339T489 319T510 295T526 269T538 238T542 204Q542 125 463 60T256 -5Q145 -5 92 52Q45 97 45 165Q45 204 64 237T109 290T163 324T209 345T228 353L214 364Q199 375 179 392T138 431T103 480T88 533ZM405 557Q405 568 402 581T387 612T350 644T286 663Q283 663 280 663T274 664H272Q256 664 228 636T199 572Q199 547 238 507Q268 475 320 437L334 427Q345 433 358 443T388 483T405 549V557ZM304 42Q366 42 398 76T431 155Q431 178 420 200T396 238T359 270T321 296T283 318L263 328Q262 328 230 312Q190 290 175 266T160 198Q160 132 202 87T304 42\",57:\"549 220Q549 23 429 -82T105 -195H84V-189Q84 -179 85 -174V-164H93Q184 -156 238 -132T334 -56Q361 -23 376 16T394 78L397 100L363 88Q329 75 291 61T244 45Q237 44 218 44Q154 44 94 97Q29 152 29 240Q29 350 108 404Q145 429 257 480Q270 487 279 487Q403 487 470 421Q549 347 549 220ZM408 217Q408 276 390 320T346 385T297 415T259 424Q218 424 185 393T151 286Q151 216 213 154Q252 115 321 115Q368 115 388 134T408 217\",58:\"57 398Q57 419 72 438T117 457Q154 457 174 439T194 398Q194 379 176 361T119 343Q85 343 71 362T57 398ZM62 19T62 43T77 85T115 104Q153 104 175 86T197 42Q197 14 171 1T119 -12Q96 -12 79 3\",59:\"56 399Q56 424 73 440T104 456Q114 458 120 458Q149 458 170 440T192 399Q192 380 174 362T120 344Q85 344 71 362T56 399ZM78 53Q78 67 84 76T90 86Q90 88 98 92T116 98Q117 98 121 98T128 99Q152 97 181 58T211 -24Q211 -77 128 -165Q124 -170 121 -173T116 -178T113 -181T110 -185T106 -190L97 -184L88 -177L95 -168Q143 -104 143 -65Q143 -51 137 -40T113 -7T81 35Q78 41 78 53\",61:\"559 342L549 304H22L27 319Q29 328 30 333T33 343H296Q559 343 559 342ZM559 206L549 168H22L27 183Q29 192 30 197T33 207H296Q559 207 559 206\",63:\"121 590Q121 575 128 562T144 542T152 533T115 512L78 491Q55 499 47 516Q40 530 40 553Q40 601 77 632Q155 697 257 697H268Q316 697 355 679Q422 646 422 576Q422 518 388 476Q383 468 376 461T358 444T340 428T316 410T290 390L230 344Q180 307 180 275Q180 261 187 248T202 227L209 219Q209 215 176 193L142 170Q114 177 100 194T84 226V239Q84 259 93 276T113 302T150 331T192 362Q203 370 219 382T247 403T267 422Q312 471 312 546Q312 593 282 623T207 653Q170 653 146 636T121 590ZM95 23T95 49T117 94T173 113Q204 113 223 96T242 54Q242 27 221 7T167 -14Q136 -14 116 4\",91:\"226 711T225 711T86 699V-93H89Q94 -93 157 -96T223 -100H226V-119H223Q134 -119 42 -130H36V740H42Q61 738 156 736H226V723Q226 711 225 711\",93:\"69 732Q116 733 146 734T184 736T197 737T206 738H208V-132Q190 -129 160 -127T99 -125T66 -124H14V-103H19Q20 -103 84 -98T152 -92H158V699H151Q148 700 85 703T18 708H14V732H69\",94:\"1 463T1 464T148 599T296 734Q584 486 584 485L561 472Q538 459 537 461Q296 672 293 672L161 563Q133 539 97 509T44 466L28 452Q27 452 14 457\",8216:\"187 456Q187 437 169 424T138 411Q114 411 84 454T53 538Q53 565 75 597Q109 648 155 697L166 708L181 694L173 681Q124 610 124 577Q124 549 155 511T187 456\",8217:\"125 524Q125 545 92 588T58 651Q58 661 61 667Q65 674 80 683T107 692Q131 692 162 645T193 564Q193 540 176 509T144 460T87 394L78 400L68 406L79 421Q125 489 125 524\",8260:\"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270\",58113:\"388 427Q320 485 242 524T128 563H116Q95 563 87 561L77 559Q72 563 69 566T65 570T65 572L75 576Q106 592 154 611T212 630Q230 630 262 622T358 581T492 498L508 486Q512 463 512 396Q512 246 469 112L465 102Q453 94 341 25Q252 -27 247 -27Q243 -27 174 24T97 84Q90 100 90 214Q90 285 98 345Q100 360 102 363T118 377Q175 422 262 465Q264 463 270 460L277 456Q277 455 267 447T244 428T228 414Q206 382 206 269Q206 187 214 164T259 110Q286 89 342 58Q391 131 391 313Q391 355 388 412V427\",58114:\"39 362L37 366L38 368L82 405H133V474Q135 563 143 589T198 658Q210 669 224 676T247 687L255 690H253Q241 690 253 692Q254 692 256 692T260 693Q263 693 262 691L261 690Q300 690 361 662L373 656L388 666Q404 675 405 675L406 674Q406 672 406 670T406 664L408 655L301 555Q300 555 287 564T254 584T221 597Q190 597 176 583T161 550Q161 525 184 495T232 440T261 405H387V399Q377 389 364 379L340 359H258V315Q258 52 228 -18L172 -120L121 -211H109Q102 -212 96 -212L109 -174Q131 -108 135 -80T139 53V76V157V362H39\",58115:\"41 352Q40 354 39 355T37 358L36 360H37Q48 370 61 380L84 400H108Q131 400 131 402Q121 424 104 501L100 519Q109 560 134 602T196 664Q230 681 271 681Q291 681 316 669T358 644L373 631Q373 630 304 553Q299 548 294 547Q292 547 290 546H287Q286 546 274 562T243 593T205 609Q180 609 165 596T150 562Q150 526 191 488L217 462Q248 431 253 405V400H381L384 394L349 352H251V332Q249 271 231 17L227 -37L120 -217L109 -218Q103 -219 97 -219Q97 -218 101 -206T110 -177T118 -151Q126 -129 128 -120T136 -46T141 127Q141 250 136 340V352H41\",58116:\"107 370Q127 384 172 409T255 454T294 473L306 468Q356 446 425 431L435 429L524 468Q528 465 531 461Q499 395 499 271V263Q499 146 509 71T519 -8Q519 -28 512 -45Q510 -50 435 -123T355 -197Q296 -212 257 -212Q209 -212 164 -196T98 -167T67 -143L133 -44H144Q167 -88 216 -111T320 -134Q371 -134 390 -118T410 -69Q410 -52 404 -12T392 60T385 92L193 -29L158 5Q124 39 110 51L96 63V71Q94 79 94 121Q94 130 94 148T93 174Q93 230 96 275T103 344T107 370ZM221 397Q200 334 200 254Q200 170 210 140Q216 126 234 109T268 81L283 71L383 119V127Q384 132 384 241L385 347L368 349Q325 357 290 369T240 389T221 397\",58117:\"103 453Q103 631 95 661Q95 663 102 667T110 672L114 664Q117 655 123 641T131 621L140 597L154 606Q208 641 275 673L297 684Q300 683 302 682T307 679T310 678L314 676Q283 658 256 625Q238 601 231 579T223 515L224 512L282 548Q339 583 341 583T365 548T386 509Q326 443 318 443L316 446Q314 448 311 452T304 460T294 470T283 480T272 488T260 494T248 497Q231 497 223 474Q220 468 218 440T215 407V401H345L309 360H218V314Q218 181 221 139V129L253 108Q306 73 310 73Q315 73 343 83L373 92L374 87Q375 82 375 79T375 74T360 65T308 36T229 -13L208 -27L192 -13Q149 24 90 61Q89 61 89 62L90 68Q91 73 93 87T97 125T100 191T103 291V360H33V366L34 371L85 405H94L103 404V453\",58120:\"602 575Q505 508 505 489Q505 488 505 482T506 463T507 432Q507 314 456 237L449 226L434 216Q420 208 325 143L316 137Q453 82 488 82Q527 82 585 127L596 136Q597 136 599 126L602 115Q578 85 511 27T428 -31Q400 -31 308 10T170 51Q143 51 123 43T92 24T54 -15L34 6L41 14Q65 41 170 129L188 144L204 145Q254 147 293 164T350 208Q378 249 378 344Q378 422 362 478T320 563T268 605T213 618Q177 618 156 600T134 561Q134 539 162 508T217 446T245 394Q245 368 213 337T85 250L62 262Q73 269 86 279T116 308T133 338T108 378T57 439T32 499Q32 556 117 617T291 679Q350 679 393 658Q415 647 433 631T462 600T480 572T490 550T494 541T499 544T516 556T547 578T603 613T689 662L720 679L730 670Q742 659 756 649T785 629T810 615T836 601T855 590Q855 587 860 536T870 419T875 312Q875 114 800 -25Q794 -35 781 -47Q584 -220 398 -220Q322 -220 278 -190Q253 -173 239 -155L244 -150Q248 -145 255 -138T271 -120T290 -100T310 -80T328 -63T341 -51T349 -46Q350 -46 351 -46T354 -47Q357 -47 357 -52Q359 -68 364 -83T383 -118T424 -151T491 -166Q559 -166 613 -129Q629 -118 641 -108T674 -68T710 1T735 107T746 260Q746 433 727 507Q727 512 685 535T615 570L602 575\",58121:\"351 571Q317 571 247 563T171 555Q153 555 133 563T107 584Q94 605 98 609Q101 615 138 658T190 717H207Q204 710 204 699Q204 673 231 666Q235 665 264 665Q296 665 345 667T426 669Q474 669 501 660T545 626Q553 612 553 594Q553 531 498 474T379 384Q371 379 371 378Q371 376 390 376H411H434Q520 376 602 318Q621 303 627 288T633 234Q633 59 540 -34Q465 -109 348 -130Q308 -137 235 -137Q159 -136 143 -129Q132 -125 132 -118V-53Q118 -24 90 -24Q69 -24 37 -39L27 -44L25 -42Q23 -39 21 -35T17 -30Q17 -28 40 -14T103 19T177 44Q183 45 205 45Q219 45 227 44T245 37T259 20T264 -12Q264 -33 262 -48T259 -80Q259 -93 260 -95Q271 -110 305 -110Q343 -110 383 -86T443 -33Q491 34 491 154Q491 223 467 249Q428 288 334 288H322Q288 288 237 276L222 273L206 286L262 367Q279 369 303 377T358 403T410 452T431 524Q431 531 431 533T427 545T416 558T392 566T351 571\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.frakturBold=void 0,e.frakturBold={33:[.689,.012,.349],34:[.695,-.432,.254],38:[.696,.016,.871],39:[.695,-.436,.25],40:[.737,.186,.459],41:[.735,.187,.459],42:[.692,-.449,.328],43:[.598,.082,.893],44:[.107,.191,.328],45:[.275,-.236,.893],46:[.102,.015,.328],47:[.721,.182,.593],48:[.501,.012,.593],49:[.489,0,.593],50:[.491,0,.593],51:[.487,.193,.593],52:[.495,.196,.593],53:[.481,.19,.593],54:[.704,.012,.593],55:[.479,.197,.593],56:[.714,.005,.593],57:[.487,.195,.593],58:[.457,.012,.255],59:[.458,.19,.255],61:[.343,-.168,.582],63:[.697,.014,.428],91:[.74,.13,.257],93:[.738,.132,.257],94:[.734,-.452,.59],8216:[.708,-.411,.254],8217:[.692,-.394,.254],8260:[.721,.182,.593],58113:[.63,.027,.587],58114:[.693,.212,.394,{ic:.014}],58115:[.681,.219,.387],58116:[.473,.212,.593],58117:[.684,.027,.393],58120:[.679,.22,.981],58121:[.717,.137,.727]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fraktur=void 0;var r=Q(6),T=Q(228);e.fraktur=r.AddPaths(T.fraktur,{33:\"102 582T102 620T112 673T152 689Q190 689 190 638Q190 605 167 373L148 187L133 184Q102 582 102 620ZM91 24T91 48T107 88T148 104Q171 104 187 87T204 48Q204 22 188 5T149 -12Q124 -12 108 6\",34:\"33 436Q8 603 8 648Q8 663 9 671T19 687T43 695Q63 695 74 681Q76 678 76 650V623L66 532Q57 443 55 436V432H33V436ZM128 666Q128 691 162 691T196 668Q196 634 186 531Q176 441 176 432H166Q155 432 155 434L142 545Q135 603 130 647Q128 664 128 666\",38:\"181 520Q181 604 231 650T328 697L330 698Q333 698 335 698Q336 698 340 698T346 697Q390 697 418 670T446 604Q446 554 414 511Q384 467 300 417L283 406Q281 405 296 374T347 286T425 182Q466 135 469 135Q470 135 473 140T480 152T486 165Q509 210 509 263Q509 282 507 292Q498 317 488 332T465 352T443 359T418 361Q388 361 357 358L346 356L347 374Q347 394 348 396V399H355Q366 396 535 396Q663 396 689 398L703 399Q703 398 702 375T700 351L688 353Q655 356 601 357Q553 357 553 355Q562 332 562 294Q562 280 561 267T555 241T548 218T539 195T529 175T518 156T508 141T497 126L489 115L496 107Q549 54 596 54Q623 54 644 67T677 101T697 140T708 174L710 187Q710 188 710 188L711 190Q714 190 723 187T733 183Q733 179 732 172T726 145T714 107T694 66T665 27T623 0T569 -11Q500 -11 443 41L434 49L425 42Q348 -9 275 -9Q251 -9 233 -6Q187 -1 152 18T98 60T67 111T52 159T49 195Q49 231 60 261T96 315T141 354T197 390L208 397Q181 459 181 520ZM374 577Q374 607 356 629T311 651Q289 651 271 636Q242 614 242 559Q242 533 249 502T262 453T270 435T279 440T298 453T314 464Q374 503 374 577ZM127 217Q127 145 173 89T291 32Q318 32 347 42T393 63T409 75Q384 100 325 184T227 351Q223 366 220 366Q215 366 178 338Q127 298 127 217\",39:\"69 666Q69 680 79 687T104 695Q112 695 117 694T128 684T134 659L104 438Q104 436 96 436T88 438Q88 447 79 540T69 655V666\",40:\"293 737V719Q291 718 285 714T276 708T268 702T258 695T250 686T241 674Q164 570 164 282Q164 -37 230 -119Q273 -171 292 -171Q293 -171 293 -179V-186H289Q270 -180 259 -175Q175 -132 145 -23T114 275Q114 491 157 598T293 737\",41:\"223 259Q223 386 212 474T178 609T136 677T89 714V735Q121 726 139 713Q276 622 276 273Q276 98 246 -23Q225 -106 189 -139T89 -187V-170L101 -165Q148 -146 172 -110T210 13T223 259\",42:\"118 573Q118 575 76 602L34 629L50 647L55 652L66 642Q76 633 91 620T117 598L128 590Q128 663 125 687V692H151V689V687Q151 685 151 683T150 678T150 672Q145 628 144 605V592L219 652L232 634Q232 632 220 624Q195 610 155 582L146 575L158 567Q178 552 197 540T225 523T233 516Q233 515 226 506T217 495L152 549L143 555V530Q144 509 145 492T148 466T149 454Q149 449 142 449H125V462Q128 522 128 549V562L115 552Q88 531 59 506L45 495Q44 495 39 505T34 516L118 573\",43:\"357 584L399 598V282H709L702 263L696 243H399V-64L379 -73L358 -82Q357 -82 357 81V243H47L51 253Q52 256 54 263T58 272L62 282H357V584\",44:\"99 62Q99 82 114 94T144 107Q159 107 178 77T205 26Q213 5 213 -23Q213 -49 207 -65T181 -113Q128 -189 122 -191Q121 -191 116 -184T111 -174Q111 -173 122 -155T145 -111T156 -62Q156 -44 152 -34T127 4L104 37Q99 49 99 62\",45:\"46 236L62 274Q62 275 384 275H706L699 255L693 236H46\",46:\"87 43Q87 69 104 85T142 102Q164 102 182 86T200 44Q200 20 183 3T141 -15Q118 -15 103 2T87 43\",47:\"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270\",48:\"212 -13Q184 -13 156 -2T101 32T59 97T42 195Q42 311 132 396Q170 433 211 462T262 492Q272 492 301 477T366 434T429 360T456 258Q456 161 378 74T212 -13ZM381 209Q381 257 365 295T328 355T282 390T243 408T223 413Q220 413 204 403T167 376T137 341Q119 305 119 250Q119 168 159 114T263 59Q308 59 344 93T381 209\",49:\"123 459Q145 459 170 460T217 462T256 464T284 466L295 467Q296 467 296 467T297 468Q299 468 302 466T307 462L309 459Q307 454 304 424T299 341T297 235Q297 139 298 101T302 55T313 44Q316 43 367 43L460 46Q460 35 459 22V-1H450Q402 2 281 6Q222 6 171 4T91 1T56 -1L47 -2V43H121H170Q195 43 201 45T209 56Q212 69 212 214Q212 333 209 365T194 409Q183 417 161 423T121 430L104 432Q103 432 103 446V459H123\",50:\"104 384Q115 394 133 409T199 449T281 474Q321 474 351 447T385 378Q385 328 333 255T228 127T176 72Q176 67 183 65Q184 65 203 65T260 67T331 69L475 73L484 67Q484 64 472 33L460 1H60V17L107 61Q210 159 249 208Q309 283 309 331Q309 363 285 389T228 415Q212 415 184 403T134 379L114 367L104 384\",51:\"305 328Q305 372 279 396T214 421H211Q172 421 128 384L107 398L116 405Q151 437 191 455T251 473H260Q314 473 341 455T382 394Q384 386 384 367T382 338Q362 263 271 217L256 210L257 206L259 202Q260 202 272 201T296 198T324 192T355 179T384 157T410 123T427 75Q429 64 429 41Q429 -59 353 -120T183 -182L88 -164Q81 -162 69 -157T48 -147T39 -141Q39 -139 46 -127L53 -114L69 -122Q129 -149 171 -149Q218 -149 253 -131T305 -83T330 -26T338 29Q338 41 336 55T328 89T308 127T273 153Q228 171 162 171Q158 171 152 171T142 170H127V204H134Q232 214 275 257Q305 292 305 328\",52:\"299 -179Q306 -156 306 -48V0H11V7Q10 10 10 18Q10 23 154 236L298 449Q298 450 339 463L379 476Q385 473 384 470V466Q384 463 384 457T384 444T383 427T383 408Q381 328 381 248Q381 46 384 40H387Q422 40 460 44Q465 44 470 44T478 44L481 45Q481 43 478 24T473 1Q473 -1 464 -1Q462 -1 451 -1T430 0H387V-76L389 -156V-161L311 -191Q299 -181 299 -179ZM299 364H287L277 352Q234 297 186 224T112 104T79 43Q79 42 192 42H306V115Q306 300 299 359V364\",53:\"334 25Q334 99 296 134T207 169Q154 169 107 123L98 114L89 120L80 125V458H420Q420 456 409 418L397 379Q397 378 264 378H131Q130 377 128 376T125 374T124 371T122 368T122 363T121 356T121 345V279V190L130 186L140 190Q196 214 260 214Q311 214 348 197T404 153T431 99T440 42T433 -16T406 -76T356 -130T276 -169T163 -184H156Q110 -184 57 -163L47 -159L53 -147L58 -134Q61 -134 74 -139T110 -148T156 -153Q206 -153 243 -135T299 -87T326 -30T334 25\",54:\"45 240Q45 328 73 406T143 536T235 626T327 681T399 699Q400 699 404 699T411 700Q424 700 441 696T459 689Q459 671 451 637Q451 633 447 632L444 629L434 633Q413 640 384 640H377Q299 640 222 565Q182 531 156 463T129 315V306H136L149 315Q229 376 316 376H318Q393 376 432 326T471 213Q471 129 402 58T237 -13T93 59T45 240ZM391 172Q391 231 354 272T258 314Q230 314 200 302T154 279T133 262L134 249Q154 32 266 32Q315 32 353 64T391 172\",55:\"395 377L391 382H225Q59 382 59 383L74 423Q89 464 89 465Q90 468 94 468Q146 460 350 458H498V442L473 406Q241 75 125 -156L113 -181H40L37 -168L57 -140Q115 -58 199 70T339 287T395 377\",56:\"220 -10Q168 -10 131 6T75 50T48 103T40 157Q40 223 77 266Q103 295 156 328T225 375Q247 393 247 394L206 361Q205 361 193 368T164 391T131 426T102 474T90 531Q90 580 114 615Q146 660 238 698L254 705L262 704Q288 704 332 693T402 656Q434 620 434 568Q434 518 401 475T321 402L305 391L336 368Q339 366 353 356T372 343T389 330T406 316T420 301T434 283T445 265T454 244T458 222T461 195Q461 106 389 48T220 -10ZM350 545Q350 578 337 601T304 634T266 649T234 653L224 654L204 639Q196 634 191 629T182 621T176 614T173 609T170 603T168 597Q165 585 165 567Q165 497 261 424L273 415Q350 467 350 545ZM261 405L263 407Q262 407 261 405ZM258 403Q257 403 255 401L254 399L256 400Q258 402 258 403ZM252 398Q251 398 249 396L248 394L250 395Q252 397 252 398ZM245 36Q276 36 300 45T338 69T360 102T371 136T374 168Q374 211 341 255Q324 275 305 289T235 332Q231 330 215 321T193 307T173 292T153 271T138 247T127 216T123 177Q123 146 132 117T170 62T245 36\",57:\"353 93T352 93T320 79T251 49T201 34Q127 37 87 79Q28 138 28 234Q28 273 37 304T60 355T101 396T152 429T218 462L234 469H243Q348 461 395 417Q466 348 466 201Q466 72 397 -29T211 -163Q155 -179 91 -182H72V-154H80Q144 -154 202 -131T297 -60Q318 -31 333 7T352 68L357 92Q353 93 352 93ZM369 208Q369 240 362 272T339 339T290 394T214 415Q171 415 144 372T116 266Q116 193 154 144T238 95H249Q369 95 369 208\",58:\"50 377T50 400T64 440T99 457Q128 457 146 440T165 399Q165 375 146 359T102 342T64 359ZM53 19T53 43T66 86T103 105Q129 105 148 87T168 41Q168 17 147 3T102 -12Q80 -12 67 3\",59:\"47 399Q47 424 62 441T101 458T143 442T162 400T144 359T101 343Q78 343 63 360T47 399ZM76 86Q76 88 80 91T91 96T106 99Q119 99 131 86Q179 35 179 -25Q179 -64 146 -115T89 -189Q86 -187 83 -185T79 -182T76 -180T75 -177T77 -173T80 -168Q121 -108 121 -64Q121 -44 94 -5T66 52Q66 66 71 75T76 86\",61:\"725 366Q724 365 721 349T716 331V329H385Q54 329 54 331Q55 332 59 349T63 368H394Q725 368 725 366ZM725 169Q724 168 721 152T716 134V132H385Q54 132 54 134Q55 135 59 152T63 171H394Q725 171 725 169\",63:\"46 557Q46 613 103 653T227 693Q287 693 322 659T357 564Q357 517 326 469T259 390T191 326T160 272Q160 240 187 221Q193 217 193 216Q182 209 170 200L147 184Q127 192 113 209T98 250Q98 290 193 376Q287 454 287 542Q287 581 262 616T188 652Q143 652 126 631T108 588Q108 559 140 527L79 490Q46 515 46 557ZM108 47Q108 68 123 85T160 103Q179 103 198 90T217 46Q215 24 201 7T164 -11Q142 -11 125 6T108 47\",91:\"262 -119Q224 -120 191 -123T141 -128T118 -130Q117 -130 117 305V740H122Q141 737 219 736H278V723Q278 711 277 711L159 699V-93H162Q167 -93 220 -96T276 -100Q278 -100 278 -109V-119H262\",93:\"64 733Q89 733 110 734T143 737T158 738H160V-131H154Q101 -125 40 -124H-4V-103H1Q3 -102 57 -98T113 -92H118V700L64 703Q7 707 3 708H-4V732H21Q34 733 64 733\",94:\"0 464L250 734L262 722Q274 712 384 598L495 486Q483 478 467 467L456 459L248 672L154 580L23 452Q17 454 10 458T0 464\",8216:\"117 410Q97 410 71 455T45 539Q45 588 129 694L140 708Q142 708 153 694L147 682Q106 609 106 582V577V571Q106 548 132 511T158 455Q158 434 143 422T117 410\",8217:\"105 529Q105 546 77 588T49 651Q49 658 51 666Q53 672 67 682T92 692Q111 692 137 644T163 563Q163 534 143 497T99 428T74 395Q72 395 65 400T58 407Q105 476 105 523V529\",8260:\"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270\",58112:\"427 436Q427 434 427 425T429 398T430 362Q430 222 396 109L393 99L305 33Q218 -32 216 -32Q208 -29 142 22L91 68L78 81L77 94Q75 130 75 173Q75 245 87 347L135 385Q178 418 184 424L177 428Q174 429 170 431Q116 454 96 473T75 534Q79 608 154 683Q164 677 164 673Q164 670 157 662T144 637T137 598Q137 552 182 518T280 470T380 447T427 436ZM342 371L275 394L208 417Q203 417 192 399T168 334T156 229Q153 187 153 157Q153 141 156 135Q158 125 208 88T280 51Q306 51 326 120T346 297Q346 339 344 354T342 371\",58113:\"39 551L35 569L52 577Q72 586 98 595T140 610T158 616Q174 612 200 604T293 560T412 477Q414 475 417 472Q428 462 430 450T432 376Q432 223 401 124Q395 106 393 103T382 92Q351 68 281 20T206 -29Q201 -31 137 26L100 60L78 83L77 112Q76 132 76 170Q76 259 86 342L88 360L101 371Q116 386 163 422T215 459Q216 459 224 455T233 450L229 446Q225 442 218 434T203 419Q179 394 175 389T168 372Q156 334 156 262Q156 167 164 137Q168 125 196 102T252 62L278 45Q279 45 285 52T302 78T322 126T339 205T346 316Q346 367 344 389L343 406L326 423Q228 520 113 559L100 564L70 557L39 551\",58114:\"123 386L120 431Q116 476 116 511V520Q116 593 174 649Q207 680 236 680Q258 680 284 664T312 648Q318 648 327 656Q328 657 330 659Q337 664 337 661Q337 660 338 657Q338 652 339 648L268 566L260 574Q234 600 206 600Q182 600 164 585T145 541Q145 492 211 386L267 385H324L299 354H214V312Q214 86 193 -58L192 -69L116 -215H108Q92 -215 92 -212Q93 -211 100 -189T116 -135T128 -80Q134 -41 134 22Q134 54 130 185T125 349V354H29L59 385H91Q123 385 123 386\",58115:\"91 530Q91 564 116 600T164 656T194 678Q195 678 200 678T209 679Q268 679 316 639L293 593Q267 547 263 546H262Q260 546 256 553Q222 613 180 613Q160 613 146 599T132 564T170 474T210 388H318L296 356H206V322Q204 284 204 255Q202 221 202 161V99Q202 28 194 -22T160 -124Q148 -146 116 -199L101 -224L91 -220Q85 -218 84 -217T83 -215L101 -161Q116 -114 119 -73T122 108Q119 334 117 352V356H72L28 357L66 388H92Q118 388 118 389L109 433Q91 514 91 530\",58116:\"254 -150Q293 -150 328 -126T363 -54Q363 -38 352 29T339 98L250 34Q160 -30 159 -30L77 64V71Q74 95 74 174Q74 212 75 243T79 294T83 328T87 352T90 366L117 384Q206 446 238 464L250 471Q277 455 306 443T350 427L365 423Q367 423 405 443T443 465L449 455Q431 414 426 362T418 201Q418 135 420 121Q438 -4 438 -19Q438 -26 438 -31T434 -42T429 -51T420 -63T408 -77T391 -95T370 -119T346 -147T325 -170T309 -187T291 -200T274 -207T252 -213T225 -214Q175 -214 132 -196T70 -160L52 -143Q52 -138 90 -48Q90 -47 95 -47H101Q108 -81 146 -115T254 -150ZM341 136Q341 157 344 242T347 348V355L334 356Q299 359 262 367T203 383T179 391Q177 391 173 377T163 323T158 227Q158 164 161 128V121L174 106Q203 75 223 59L341 127V136\",58117:\"92 446Q92 603 82 664Q94 670 95 670L96 666Q98 661 101 651T108 633Q121 598 121 597L141 612Q247 686 250 686Q251 686 266 679Q261 674 243 659T213 632T190 597T173 546Q172 541 171 530T170 511T170 502Q171 502 222 542L273 582Q308 522 315 504L279 449L269 462Q231 506 215 506Q202 506 190 490Q164 458 164 395V390H279L266 373L254 355H167V306Q169 252 169 217Q170 195 170 147V117L200 92Q234 64 237 64Q243 64 277 81L311 99V75Q310 75 242 27L174 -20L156 -3Q88 60 81 60L79 62Q80 60 82 62Q87 67 87 290V355H57L26 356L73 390H92V446\",58118:\"117 531Q117 533 137 544T178 566L198 577Q200 577 204 575T208 572V570Q208 568 208 566T207 560Q197 496 197 397V392H321L295 353H199V260Q199 157 200 145V122L269 68Q271 67 274 67Q282 67 310 83T342 100Q343 100 345 92T346 83L211 -21L172 12Q117 59 117 63Q117 65 117 87T119 150T120 238V353H75L29 354L65 391H118V460Q117 498 117 531\",58119:\"337 91V78L324 71Q288 53 256 29T206 -8T180 -22Q174 -22 158 -9Q82 46 60 46H59L63 51Q67 56 73 68T85 96Q101 158 101 254Q101 300 95 330T83 370T66 394L53 388Q48 385 41 382T24 374Q22 376 20 378T16 381T13 383T10 385V386L119 475Q150 439 160 430L171 422V409Q173 377 173 300Q173 228 166 183T152 122T145 102Q207 81 242 58L337 104V111Q340 146 340 227Q340 320 339 351T338 408V423L422 469Q425 465 429 462L426 438Q413 354 413 251Q413 152 423 119Q426 110 435 96T452 82Q454 82 509 103Q514 98 514 89Q514 87 507 81T472 51T409 -7L395 -20Q393 -18 390 -17Q386 -14 382 -6Q380 -2 379 1Q369 24 361 40T348 62T341 73T338 84L337 91\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fraktur=void 0,e.fraktur={33:[.689,.012,.296],34:[.695,-.432,.215],38:[.698,.011,.738],39:[.695,-.436,.212],40:[.737,.186,.389],41:[.735,.187,.389],42:[.692,-.449,.278],43:[.598,.082,.756],44:[.107,.191,.278],45:[.275,-.236,.756],46:[.102,.015,.278],47:[.721,.182,.502],48:[.492,.013,.502],49:[.468,0,.502],50:[.474,0,.502],51:[.473,.182,.502],52:[.476,.191,.502],53:[.458,.184,.502],54:[.7,.013,.502],55:[.468,.181,.502],56:[.705,.01,.502],57:[.469,.182,.502],58:[.457,.012,.216],59:[.458,.189,.216],61:[.368,-.132,.756],63:[.693,.011,.362],91:[.74,.13,.278],93:[.738,.131,.278],94:[.734,-.452,.5],8216:[.708,-.41,.215],8217:[.692,-.395,.215],8260:[.721,.182,.502],58112:[.683,.032,.497],58113:[.616,.03,.498],58114:[.68,.215,.333],58115:[.679,.224,.329],58116:[.471,.214,.503],58117:[.686,.02,.333],58118:[.577,.021,.334,{ic:.013}],58119:[.475,.022,.501,{ic:.013}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.italic=void 0;var r=Q(6),T=Q(230);e.italic=r.AddPaths(T.italic,{33:\"330 716Q351 716 365 703T380 670V659L304 433Q230 207 227 204Q225 198 205 198Q184 198 184 207T220 439T260 669Q270 694 297 708Q300 709 304 710T311 713T316 714Q324 716 330 716ZM107 51Q110 83 133 102T179 121Q207 121 219 105T231 72Q231 45 209 23T156 0Q138 0 123 11T107 51\",34:\"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620\",35:\"281 327H228Q186 327 175 330T164 347Q164 359 176 365Q179 367 292 367H404L563 688Q569 694 578 694T593 686T597 670Q597 667 531 535L448 367H614L773 688Q779 694 787 694Q796 694 802 688T808 674V672L807 670Q807 667 732 517L658 368L736 367H814Q828 357 828 347Q828 336 812 327H637L599 250Q561 174 561 173H662H724Q760 173 769 170T779 153T770 136T729 132Q721 132 696 132T651 133H540L380 -188Q374 -194 366 -194Q357 -194 351 -188T345 -174L346 -172V-170Q346 -167 412 -35L495 133H330L170 -188Q164 -194 156 -194Q147 -194 141 -188T135 -174L136 -172V-170Q136 -167 211 -17L285 133H207L130 134Q115 140 115 153Q115 164 131 173H306L344 250Q382 326 382 327H281ZM592 327H427L389 250Q351 174 351 173H516L554 250Q592 326 592 327\",37:\"301 348Q257 348 231 383T205 480Q205 553 244 629T346 736Q370 750 394 750Q416 750 429 742T458 714Q512 644 606 644Q722 644 802 732Q817 750 827 750Q835 750 841 744T847 730Q847 725 827 700T689 540Q586 421 512 335Q180 -50 176 -52Q172 -56 165 -56Q157 -56 151 -50T145 -35Q145 -29 162 -9T330 186Q392 258 430 302Q711 627 711 628L701 624Q652 607 604 607Q551 607 494 634L479 642V624Q479 544 439 467Q414 416 377 382T301 348ZM270 443Q270 385 303 385H306H308Q326 385 348 407Q384 441 409 504T434 627Q434 713 390 713Q358 713 328 663Q307 631 289 556T270 451V443ZM608 -56Q573 -56 543 -23T513 76Q513 129 536 190T604 296L627 318Q670 347 704 347Q747 347 767 310T788 222Q788 126 732 35T608 -56ZM742 222Q742 310 699 310Q677 310 655 285T620 227Q608 197 593 138T578 42V36Q578 -18 613 -18Q657 -18 699 64T742 222\",38:\"209 444Q209 546 278 631T424 716Q473 716 501 683T530 601Q530 554 511 535T467 515Q446 515 437 527T427 553Q427 578 446 594T481 610H483V617Q480 641 464 660T419 679Q367 679 328 603Q316 578 305 538T288 470L282 443L295 449Q308 455 330 462T371 469Q397 469 413 450T430 404Q430 363 400 329T331 295Q291 295 256 322Q255 322 246 293T227 223T217 158Q217 117 232 88T273 43T327 22T387 15Q457 15 512 37T599 93T652 169T680 248T688 317T678 380T659 423T647 437Q643 435 637 431T613 416T581 392T554 364T538 332Q540 310 541 310Q554 335 587 335Q601 335 613 327T626 300Q626 290 622 279T603 255T563 242Q532 245 512 263T491 320Q494 351 511 377T547 418T600 456T652 494Q676 512 697 539T728 582T738 601Q738 602 736 602Q732 602 726 604T714 616T707 638Q707 661 724 677T764 694Q799 694 802 660Q802 625 767 562T688 467L694 458Q700 449 702 444T711 428T720 408T727 385T733 358T735 327Q735 281 724 235T685 141T617 59T515 1T375 -22Q270 -22 199 34T127 181Q127 216 147 270T207 374L216 386Q209 421 209 444ZM386 412Q386 432 366 432Q345 432 325 418T294 390T284 375Q284 371 289 362T306 343T335 332Q355 332 367 350T383 384T386 412\",39:\"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620\",40:\"241 -250Q203 -212 174 -140T144 39Q144 158 180 288T296 544T481 746L487 750H499Q517 750 517 740Q517 736 495 716Q399 630 331 491T236 228T208 3Q208 -73 224 -130T255 -214T271 -244Q271 -250 252 -250H241\",41:\"326 497Q326 546 320 588T304 655T285 699T269 728T262 740Q262 746 267 749L272 750Q276 750 281 750H293Q331 712 360 640T390 461Q390 332 339 171T188 -116Q161 -150 121 -188T47 -250H35Q17 -250 17 -240Q17 -236 39 -216Q135 -130 203 9T298 272T326 497\",42:\"560 658Q569 658 576 649T584 631Q584 625 583 620T577 611T569 603T556 595T540 587T519 578T494 566L428 536Q427 535 433 531T479 502Q525 475 532 469T539 450Q538 435 525 424T497 412Q489 412 482 418T442 456Q400 497 400 494L387 420Q376 353 373 343T352 323Q345 320 336 320H331Q322 320 316 327T309 343Q309 347 334 420L359 496Q358 496 297 456T234 414Q228 411 221 411Q212 411 204 417T195 439Q198 458 209 465T283 502L353 534L300 566Q255 593 247 599T239 616Q239 631 252 644T282 658Q290 658 295 654T335 615L378 573L391 647Q393 657 395 671T398 691T400 706T404 720T408 730T414 739T423 744T434 749Q435 749 439 749T445 750Q467 748 469 728Q469 723 457 685T432 610L420 573L481 613Q548 658 560 658\",43:\"139 237T139 250T151 266T198 270H293H431L465 407Q469 424 476 452Q494 528 500 542T519 557Q526 557 532 552T538 538Q538 536 507 409T472 272Q472 270 604 270Q737 270 741 268Q753 261 753 250Q753 237 742 233T696 229Q687 229 655 229T599 230H462L461 226Q461 224 427 91T392 -47Q387 -57 374 -57Q367 -57 361 -51T355 -37Q355 -31 388 99L421 230H288Q267 230 238 230T199 229Q163 229 151 233\",44:\"106 46Q106 68 121 90T167 120Q168 120 173 120T180 121Q232 121 232 59V54Q232 18 219 -20T186 -88T145 -143T109 -181T88 -194Q84 -194 77 -185T69 -171Q69 -168 70 -166T76 -161T85 -154T101 -139T124 -114Q146 -88 162 -58T183 -12T188 7Q187 7 183 5T172 2T156 0Q129 0 118 14T106 46\",45:\"205 180H131Q102 180 93 181T84 190Q90 238 103 251H334Q341 244 341 241Q341 236 336 214T327 186Q325 181 312 181T205 180\",46:\"107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50\",47:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",48:\"414 665Q562 665 562 490Q562 426 534 318Q451 -21 251 -21Q222 -21 202 -15Q155 2 134 40T110 144Q110 201 127 286T187 470T287 614Q348 665 414 665ZM187 98Q187 59 208 37T260 15Q320 15 365 83Q394 128 440 312T487 547Q487 580 471 600T433 627Q428 628 408 628Q381 628 353 609T311 569Q279 526 239 364T190 143Q187 120 187 98\",49:\"248 491Q228 491 228 502Q228 516 236 532Q237 536 246 537T275 541T314 552Q350 567 382 595T430 644L446 664Q450 666 454 666Q468 666 468 658Q468 647 395 359Q321 63 321 59Q321 52 334 50T388 46H422Q428 37 428 35Q428 19 421 5Q416 0 405 0Q400 0 361 1T263 2Q215 2 185 2T142 1T127 0Q110 0 110 11Q110 13 113 25T118 40Q120 46 146 46Q196 46 212 49T235 61Q238 66 295 295L353 526L340 519Q328 512 302 503T248 491\",50:\"159 404Q159 433 176 476T222 562T297 635T395 666Q466 666 508 617T551 497Q551 473 545 446Q534 388 482 333Q441 292 355 240T264 184Q216 151 179 101L171 91Q171 90 177 90Q206 90 269 77T366 64Q385 64 390 65Q418 73 441 98T475 156Q479 168 481 170T495 173H518Q524 167 524 166T521 152Q502 86 459 32T353 -22Q315 -22 259 15T172 53Q156 53 143 36T126 1L121 -16Q119 -22 98 -22H82Q76 -16 76 -13T80 5T98 50T132 111T189 178T274 242Q327 273 364 305T420 370T447 427T460 483Q466 514 466 538Q466 586 443 607T389 629Q338 629 293 584T226 487T204 399Q204 390 204 386T209 378T222 373Q258 376 282 422T307 493Q307 506 302 517T297 531Q297 537 308 546T327 551Q329 550 333 543T340 523T344 497Q344 450 306 393T216 336Q186 336 173 355T159 396V404\",51:\"296 531Q296 536 307 544T322 553Q330 553 338 534T346 501Q346 468 319 440T258 412Q232 412 216 430T200 478Q200 552 281 618Q345 666 416 666Q489 666 525 625T562 530Q562 473 525 419T430 335L416 329Q479 288 479 206Q479 142 440 89T344 7T229 -22Q173 -22 135 12T96 106Q96 192 157 192Q192 192 197 157Q197 134 184 117T142 96Q153 47 180 29Q201 15 232 15Q249 15 275 22Q307 34 331 57Q363 90 379 153T396 246Q396 261 393 272T384 290T371 301T355 308T341 311T326 312H316H307Q287 312 282 313T276 320Q276 323 279 337T283 352Q284 356 290 357T325 358Q364 359 368 360Q386 365 400 372T433 397T464 448T485 527Q487 535 487 556Q487 629 414 629Q350 629 298 580T245 476Q245 450 263 450H264Q280 450 294 463T308 496Q308 508 302 518T296 531\",52:\"448 34Q453 34 463 22T473 5Q473 -2 457 -7Q417 -22 383 -23H366L350 -91Q348 -98 345 -111T340 -130T335 -146T330 -161T325 -172T318 -182T310 -188T299 -193T286 -194Q256 -194 253 -165Q253 -159 271 -83T292 -5Q231 29 169 29Q114 29 91 14Q72 -2 65 1Q46 20 46 28Q46 35 55 43T77 60T96 74Q306 257 396 623Q410 666 444 666Q459 666 468 657T478 634Q478 627 470 595T440 504T387 381T303 239T187 99L164 75H178Q217 75 260 59L304 43Q304 48 325 127Q342 195 346 207T358 228Q372 242 391 242Q403 242 413 235T423 214Q423 205 402 116T378 25Q378 23 387 23Q405 23 418 25T439 31T448 34\",53:\"196 304Q189 309 189 314Q189 317 231 487T275 660Q278 666 283 666Q287 666 302 658T346 643T413 635Q447 635 481 642T537 658T559 666Q561 666 564 663T567 658Q565 637 557 629Q528 600 474 573T359 545Q342 545 327 546T304 550T294 552L291 540Q288 529 283 507T273 465L251 379Q307 420 364 420Q415 420 456 382T497 261Q497 165 429 82T262 -20Q256 -20 247 -21T233 -22Q176 -22 141 15T106 112Q106 208 173 208Q192 208 203 197T214 169Q214 143 195 125T156 107H153V100Q155 73 174 47T239 21Q245 21 259 23Q355 46 392 200Q393 205 394 207Q412 276 412 312Q412 352 396 367T358 383Q288 383 233 314Q226 306 224 305T209 304H196\",54:\"377 434Q425 434 457 404T499 341T509 278Q509 243 496 194T456 105T383 27Q322 -22 256 -22Q142 -22 122 114Q120 130 120 159Q120 221 135 292T195 452T310 599Q390 665 465 665Q565 665 565 583V574Q565 543 546 524Q528 506 504 506Q491 506 478 514T465 543Q465 585 515 602Q505 626 466 626Q419 626 372 587Q334 557 305 503T266 409L255 370Q287 410 339 429Q361 434 377 434ZM424 333Q424 359 411 378T365 397Q318 397 282 356T230 257T205 157T197 94Q197 67 211 45T260 22Q313 22 341 57T386 151Q424 283 424 333\",55:\"466 519Q448 519 435 528T416 550T400 571T376 581Q324 581 271 540T186 437Q185 435 183 432T181 428T179 426T177 424T174 423T171 422T165 422H159Q141 422 141 423Q136 423 136 431Q136 433 190 548T247 665Q249 666 266 666H282Q288 660 288 657Q288 655 284 646T276 628L273 620Q337 666 390 666Q413 666 425 652T438 620T444 584T457 559Q460 557 470 557Q497 557 524 582T571 635T594 665Q595 666 612 666H628Q634 660 634 657Q634 653 618 629T572 556T510 441T437 269T367 43Q356 -22 304 -22Q291 -22 278 -14T263 14Q263 36 281 95T354 269T486 507Q497 524 495 524Q482 519 466 519\",56:\"209 449Q209 545 278 605T416 666Q482 666 517 631T553 546Q553 513 539 482T504 430T463 394T426 370L410 360L430 343Q471 309 483 278T495 211Q495 141 441 75Q363 -21 253 -21Q182 -21 141 18T99 117Q99 161 119 201T170 268T222 308T259 331L272 338L259 349Q212 389 209 449ZM492 542Q492 586 469 605T415 625Q360 625 320 587T279 505Q279 495 281 487T286 474T295 460T306 449T321 436T337 422Q379 386 380 386Q389 386 420 412T472 471Q492 513 492 542ZM163 118Q163 76 189 49T258 21Q316 21 368 64T420 170Q420 193 412 208T395 233T350 271L302 312Q298 312 284 303T249 276T209 235T177 181T163 118\",57:\"297 211Q258 211 230 228T189 273T169 323T163 367Q163 411 183 472T254 585Q327 656 401 665Q403 665 412 665T427 666Q458 664 481 652T518 622T539 580T550 535T553 491Q553 448 544 395T515 277T454 148T358 37Q282 -22 213 -22Q166 -22 137 -1T107 55V64Q107 88 114 104T134 127T154 136T169 138Q185 138 196 128T207 101Q207 82 196 68T172 48L161 43Q161 40 167 36T187 26T219 21Q286 21 344 99Q364 126 382 169T408 241T417 275L412 269Q406 263 395 253T370 234T337 218T297 211ZM476 552Q476 626 417 626Q368 626 330 584Q312 563 300 533T270 433Q248 341 248 312Q248 286 262 267T310 248Q353 248 387 287T440 380T467 480T476 552\",58:\"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50\",59:\"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 47Q107 77 130 99T180 121Q226 121 226 61Q226 25 214 -14T182 -84T144 -140T109 -180T88 -194T77 -185T70 -172Q70 -169 84 -155T121 -112T161 -48Q180 -10 180 3Q180 4 174 2Q172 2 166 1T156 0Q135 0 121 13T107 47\",61:\"776 357T776 347T761 327H470Q180 327 176 329Q164 334 164 347Q164 359 176 365Q179 367 470 367H761Q776 357 776 347ZM116 143T116 153T131 173H422Q713 173 717 171Q728 166 728 153T717 135Q713 133 422 133H131Q116 143 116 153\",63:\"235 431Q217 431 206 442T195 468Q195 490 215 537T280 638T380 707Q403 716 423 716Q425 716 429 716T436 715Q485 715 518 681T551 590Q551 543 530 503T482 439Q471 428 400 375T318 310Q300 287 300 259Q300 236 315 236Q333 236 352 251T384 300Q386 306 407 306H423Q429 300 429 297Q429 272 393 235T308 198Q287 198 269 215T251 270Q251 330 293 374L374 436Q377 438 401 456T432 480T457 503T481 531T494 561T501 598Q501 614 499 626Q482 678 430 678H426Q392 678 362 660T311 615T280 571T264 540L259 528Q259 527 266 526T283 516T294 492Q294 466 276 449T235 431ZM209 51Q212 83 235 102T281 121Q309 121 321 105T333 72Q333 45 311 23T258 0Q240 0 225 11T209 51\",64:\"198 250Q198 155 248 91T394 26Q514 26 640 80L650 84H675H683Q709 84 709 76Q709 73 708 71Q706 64 660 45T534 8T383 -11T260 24T181 115Q152 168 152 248Q152 410 268 552Q303 590 324 608Q439 705 551 705Q611 705 658 683T733 623T775 543T789 454Q789 380 766 304T720 192Q677 125 617 125Q591 125 573 137T548 160T541 176Q541 178 540 178L534 173Q527 168 515 160T488 144T454 131T417 125Q361 125 320 166T279 284Q279 393 356 481T523 569Q570 569 603 537Q623 515 632 490L637 480L657 479Q684 479 684 470Q684 465 650 333L617 199V185Q616 162 628 162Q677 162 712 278Q743 381 743 442Q743 555 687 611T553 668Q467 668 385 608T250 450T198 250ZM598 445Q598 453 594 470T569 510T518 532Q463 532 410 448T356 271Q356 220 374 191T423 162Q482 162 552 255L575 348Q598 440 598 445\",91:\"205 -221Q205 -239 194 -250H137H106Q73 -250 73 -242Q73 -232 194 255T321 747L324 750H381H417Q435 750 440 748T446 739Q446 730 443 723T437 712L434 710H350L349 706Q349 704 235 249T120 -208Q120 -210 159 -210Q166 -210 175 -210T187 -209Q205 -209 205 -221\",93:\"227 721Q227 739 238 750H295H326Q359 750 359 742Q359 732 238 245T111 -247L108 -250H51H15Q-3 -250 -8 -248T-14 -239Q-14 -230 -11 -223T-5 -212L-2 -210H82L83 -206Q83 -204 197 251T312 708Q312 710 273 710Q266 710 257 710T245 709Q227 709 227 721\",94:\"528 555Q528 549 514 538T496 527Q491 527 470 554Q458 569 449 580L414 625L353 578Q339 567 323 555T298 536L290 529Q286 527 285 527Q279 527 273 533T264 546L260 553Q260 559 263 562Q265 564 342 628T421 693T425 694Q430 694 433 691Q528 563 528 555\",95:\"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98\",126:\"266 208Q262 208 255 215T247 228Q247 233 250 236T274 259Q335 318 369 318Q394 318 420 292T464 265Q485 265 516 291T550 318Q554 318 562 311T571 297Q570 293 551 273T502 231T451 209H447Q421 209 396 235T355 261Q334 261 301 235T266 208\",305:\"75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287\",567:\"75 284T75 287T81 305T101 343T133 389T180 426T240 442Q273 440 300 420T327 350V332L278 134Q267 92 253 37T233 -45T225 -73Q208 -123 162 -163T54 -204Q8 -204 -15 -181Q-32 -164 -32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 39 -166L44 -167H59H60Q112 -167 145 -74Q148 -65 198 134T251 347Q252 353 252 370Q252 382 251 388T245 399T230 405Q204 405 175 378Q157 360 145 337T126 298T117 280T98 278H81Q75 284 75 287\",768:\"-222 651Q-222 668 -206 682T-174 697Q-155 697 -145 680Q-140 671 -107 599T-74 526Q-74 522 -88 511T-107 500Q-109 500 -113 502T-167 568T-219 637Q-222 643 -222 651\",769:\"-148 500Q-154 500 -163 511T-173 528Q-173 529 -172 530V532Q-170 534 -97 610T-21 688Q-8 697 4 697Q19 697 29 688T39 663T30 638Q26 631 -50 573L-135 507Q-144 500 -148 500\",770:\"17 555Q17 549 3 538T-15 527Q-20 527 -41 554Q-53 569 -62 580L-97 625L-158 578Q-172 567 -188 555T-212 536L-221 529Q-225 527 -226 527Q-232 527 -238 533T-248 546L-251 553Q-251 559 -248 562Q-246 564 -169 628T-90 693T-86 694Q-81 694 -78 691Q17 563 17 555\",771:\"-245 558Q-249 558 -256 565T-264 578Q-264 583 -261 586T-237 609Q-176 668 -142 668Q-117 668 -91 642T-47 615Q-26 615 5 641T39 668Q43 668 51 661T60 647Q59 643 40 623T-9 581T-60 559H-64Q-90 559 -115 585T-156 611Q-177 611 -210 585T-245 558\",772:\"-275 544Q-282 548 -282 554Q-282 561 -279 573T-271 588Q-269 589 -111 589H-27H12Q38 589 46 587T54 578Q54 574 51 563T47 550Q45 546 32 545Q15 544 -118 544H-275\",774:\"-237 641Q-237 694 -218 694H-213Q-195 694 -195 684Q-195 683 -195 679T-197 667T-198 650Q-198 611 -176 589T-117 566Q-74 566 -34 597T23 678Q27 689 30 691T43 694Q62 694 62 684Q62 671 49 645T14 589T-46 537T-123 515Q-175 515 -206 550T-237 641\",775:\"-165 599Q-162 631 -139 650T-93 669Q-65 669 -53 653T-41 620Q-41 593 -63 571T-116 548Q-134 548 -149 559T-165 599\",776:\"-251 601Q-251 626 -230 647T-180 669Q-139 669 -133 625Q-133 595 -155 575T-203 554Q-223 554 -237 567T-251 601ZM-72 599Q-72 632 -48 650T-2 669Q18 669 31 657T45 623Q45 592 22 573T-25 554Q-68 554 -72 599\",778:\"-199 610Q-199 654 -161 685T-79 716Q-39 716 -16 693Q3 674 3 647Q3 607 -34 575T-118 542Q-199 542 -199 610ZM-41 631T-41 655T-83 679H-89Q-129 679 -142 656Q-146 650 -151 632T-156 604Q-156 578 -113 578H-108Q-94 578 -86 579T-69 586T-52 605Q-41 631 -41 655\",779:\"-217 503Q-221 503 -234 510T-248 523Q-248 528 -205 602Q-200 610 -192 623T-180 644T-170 661T-159 676T-151 686T-142 694T-134 696Q-132 697 -121 697Q-88 694 -88 664Q-88 652 -97 640T-152 574Q-214 504 -217 503ZM-64 503Q-68 503 -81 510T-95 523Q-95 528 -52 602Q-47 610 -39 623T-27 644T-17 661T-6 676T2 686T11 694T19 696Q21 697 32 697Q65 694 65 664Q65 652 56 640T1 574Q-61 504 -64 503\",780:\"11 637Q16 637 22 624T29 607Q29 606 27 602Q26 600 -47 552T-125 502H-127Q-133 502 -184 553Q-236 602 -236 608Q-236 612 -224 625T-206 638L-202 637L-196 632Q-190 628 -179 620T-158 603L-116 570Q-109 572 -52 604T11 637\",989:\"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261\",8211:\"98 248Q91 252 91 259Q91 279 100 284Q102 285 324 285H442H500Q536 285 545 283T554 274Q554 260 548 254Q546 250 538 249Q520 248 319 248H98\",8212:\"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124\",8213:\"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124\",8215:\"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98\",8216:\"249 379Q228 379 213 396T197 448Q197 533 271 627L278 635Q286 643 295 652T314 671T332 687T344 694Q349 694 355 685T362 671Q362 668 345 654T301 608T256 537Q238 493 240 491Q241 491 245 493T258 498T275 500Q296 500 311 488T326 454Q326 426 304 403T249 379\",8217:\"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620\",8220:\"295 379Q274 379 259 396T243 448Q243 533 317 627Q326 638 354 666T391 694Q395 694 402 686T409 673Q409 668 392 654T348 608T302 537Q284 493 286 491Q287 491 291 493T304 498T321 500Q342 500 357 488T372 454Q372 426 350 403T295 379ZM492 379Q471 379 456 396T440 448Q440 533 514 627Q523 638 551 666T588 694Q592 694 599 685T606 672T589 654T544 608T499 537Q481 493 483 491Q484 491 488 493T501 498T518 500Q539 500 554 488T569 454Q569 426 547 403T492 379\",8221:\"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620\",8260:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",8463:\"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150\",8710:\"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346\",10744:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.italic=void 0,e.italic={33:[.716,0,.307,{ic:.073}],34:[.694,-.379,.514,{ic:.024}],35:[.694,.194,.818,{ic:.01}],37:[.75,.056,.818,{ic:.029}],38:[.716,.022,.767,{ic:.035}],39:[.694,-.379,.307,{ic:.07}],40:[.75,.25,.409,{ic:.108}],41:[.75,.25,.409],42:[.75,-.32,.511,{ic:.073}],43:[.557,.057,.767],44:[.121,.194,.307],45:[.251,-.18,.358],46:[.121,0,.307],47:[.716,.215,.778],48:[.665,.021,.511,{ic:.051}],49:[.666,0,.511],50:[.666,.022,.511,{ic:.04}],51:[.666,.022,.511,{ic:.051}],52:[.666,.194,.511],53:[.666,.022,.511,{ic:.056}],54:[.665,.022,.511,{ic:.054}],55:[.666,.022,.511,{ic:.123}],56:[.666,.021,.511,{ic:.042}],57:[.666,.022,.511,{ic:.042}],58:[.431,0,.307],59:[.431,.194,.307],61:[.367,-.133,.767],63:[.716,0,.511,{ic:.04}],64:[.705,.011,.767,{ic:.022}],91:[.75,.25,.307,{ic:.139}],93:[.75,.25,.307,{ic:.052}],94:[.694,-.527,.511,{ic:.017}],95:[-.025,.062,.511,{ic:.043}],126:[.318,-.208,.511,{ic:.06}],305:[.441,.01,.307,{ic:.033}],567:[.442,.204,.332],768:[.697,-.5,0],769:[.697,-.5,0,{ic:.039}],770:[.694,-.527,0,{ic:.017}],771:[.668,-.558,0,{ic:.06}],772:[.589,-.544,0,{ic:.054}],774:[.694,-.515,0,{ic:.062}],775:[.669,-.548,0],776:[.669,-.554,0,{ic:.045}],778:[.716,-.542,0],779:[.697,-.503,0,{ic:.065}],780:[.638,-.502,0,{ic:.029}],989:[.605,.085,.778],8211:[.285,-.248,.511,{ic:.043}],8212:[.285,-.248,1.022,{ic:.016}],8213:[.285,-.248,1.022,{ic:.016}],8215:[-.025,.062,.511,{ic:.043}],8216:[.694,-.379,.307,{ic:.055}],8217:[.694,-.379,.307,{ic:.07}],8220:[.694,-.379,.514,{ic:.092}],8221:[.694,-.379,.514,{ic:.024}],8260:[.716,.215,.778],8463:[.695,.013,.54,{ic:.022}],8710:[.716,0,.833,{sk:.167}],10744:[.716,.215,.778]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.largeop=void 0;var r=Q(6),T=Q(232);e.largeop=r.AddPaths(T.largeop,{40:\"180 96T180 250T205 541T266 770T353 944T444 1069T527 1150H555Q561 1144 561 1141Q561 1137 545 1120T504 1072T447 995T386 878T330 721T288 513T272 251Q272 133 280 56Q293 -87 326 -209T399 -405T475 -531T536 -609T561 -640Q561 -643 555 -649H527Q483 -612 443 -568T353 -443T266 -270T205 -41\",41:\"35 1138Q35 1150 51 1150H56H69Q113 1113 153 1069T243 944T330 771T391 541T416 250T391 -40T330 -270T243 -443T152 -568T69 -649H56Q43 -649 39 -647T35 -637Q65 -607 110 -548Q283 -316 316 56Q324 133 324 251Q324 368 316 445Q278 877 48 1123Q36 1137 35 1138\",47:\"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649\",91:\"224 -649V1150H455V1099H275V-598H455V-649H224\",92:\"754 -625Q754 -649 731 -649Q715 -649 712 -639Q709 -635 383 242T55 1124Q54 1135 61 1142T80 1150Q92 1150 98 1140Q101 1137 427 262T754 -625\",93:\"16 1099V1150H247V-649H16V-598H196V1099H16\",123:\"547 -643L541 -649H528Q515 -649 503 -645Q324 -582 293 -466Q289 -449 289 -428T287 -200L286 42L284 53Q274 98 248 135T196 190T146 222L121 235Q119 239 119 250Q119 262 121 266T133 273Q262 336 284 449L286 460L287 701Q287 737 287 794Q288 949 292 963Q293 966 293 967Q325 1080 508 1148Q516 1150 527 1150H541L547 1144V1130Q547 1117 546 1115T536 1109Q480 1086 437 1046T381 950L379 940L378 699Q378 657 378 594Q377 452 374 438Q373 437 373 436Q350 348 243 282Q192 257 186 254L176 251L188 245Q211 236 234 223T287 189T340 135T373 65Q373 64 374 63Q377 49 378 -93Q378 -156 378 -198L379 -438L381 -449Q393 -504 436 -544T536 -608Q544 -611 545 -613T547 -629V-643\",125:\"119 1130Q119 1144 121 1147T135 1150H139Q151 1150 182 1138T252 1105T326 1046T373 964Q378 942 378 702Q378 469 379 462Q386 394 439 339Q482 296 535 272Q544 268 545 266T547 251Q547 241 547 238T542 231T531 227T510 217T477 194Q390 129 379 39Q378 32 378 -201Q378 -441 373 -463Q342 -580 165 -644Q152 -649 139 -649Q125 -649 122 -646T119 -629Q119 -622 119 -619T121 -614T124 -610T132 -607T143 -602Q195 -579 235 -539T285 -447Q286 -435 287 -199T289 51Q294 74 300 91T329 138T390 197Q412 213 436 226T475 244L489 250L472 258Q455 265 430 279T377 313T327 366T293 434Q289 451 289 472T287 699Q286 941 285 948Q279 978 262 1005T227 1048T184 1080T151 1100T129 1109L127 1110Q119 1113 119 1130\",710:\"1004 603Q1004 600 999 583T991 565L960 574Q929 582 866 599T745 631L500 698Q497 698 254 631Q197 616 134 599T39 574L8 565Q5 565 0 582T-5 603L26 614Q58 624 124 646T248 687L499 772Q999 604 1004 603\",732:\"296 691Q258 691 216 683T140 663T79 639T34 619T16 611Q13 619 8 628L0 644L36 662Q206 749 321 749Q410 749 517 710T703 670Q741 670 783 678T859 698T920 722T965 742T983 750Q986 742 991 733L999 717L963 699Q787 611 664 611Q594 611 484 651T296 691\",770:\"4 603Q4 600 -1 583T-9 565L-40 574Q-71 582 -134 599T-255 631L-500 698Q-503 698 -746 631Q-803 616 -866 599T-961 574L-992 565Q-995 565 -1000 582T-1005 603L-974 614Q-942 624 -876 646T-752 687L-501 772Q-1 604 4 603\",771:\"-704 691Q-742 691 -784 683T-860 663T-921 639T-966 619T-984 611Q-987 619 -992 628L-1000 644L-964 662Q-794 749 -679 749Q-590 749 -483 710T-297 670Q-259 670 -217 678T-141 698T-80 722T-35 742T-17 750Q-14 742 -9 733L-1 717L-37 699Q-213 611 -336 611Q-405 611 -515 651T-704 691\",8214:\"257 0V602H300V0H257ZM478 0V602H521V0H478\",8260:\"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649\",8593:\"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421\",8595:\"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96\",8657:\"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329\",8659:\"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236\",8719:\"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H725V-396H735Q864 -396 888 -314Q889 -312 889 -311V896H388V292L389 -311Q405 -396 542 -396H552V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812\",8720:\"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H552V896H542Q411 896 389 812L388 208V-396H889V812Q889 813 887 819T883 829T877 840T868 853T854 866T835 878T809 887T776 893T735 896H725V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812\",8721:\"60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948\",8730:\"1001 1150Q1017 1150 1020 1132Q1020 1127 741 244L460 -643Q453 -650 436 -650H424Q423 -647 423 -645T421 -640T419 -631T415 -617T408 -594T399 -560T385 -512T367 -448T343 -364T312 -259L203 119L138 41L111 67L212 188L264 248L472 -474L983 1140Q988 1150 1001 1150\",8739:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",8741:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612\",8747:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798\",8748:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798\",8749:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798ZM1150 -798Q1168 -824 1201 -824H1203Q1231 -824 1259 -764T1311 -600T1356 -391T1398 -164Q1401 -143 1403 -133Q1475 292 1559 655T1681 1127Q1687 1145 1691 1157T1708 1201T1735 1257T1769 1306T1813 1346T1864 1360Q1920 1360 1948 1325T1980 1245Q1980 1220 1968 1205T1945 1186T1923 1183Q1902 1183 1885 1198T1868 1239Q1868 1287 1921 1296L1918 1300Q1915 1303 1910 1307T1902 1313Q1887 1323 1869 1323Q1855 1323 1843 1311T1811 1255T1772 1139T1725 936T1669 628Q1610 293 1546 -5T1446 -437T1391 -629Q1314 -862 1201 -862Q1161 -862 1128 -831T1091 -746Q1091 -711 1110 -698T1148 -685Q1169 -685 1186 -700T1203 -741Q1203 -789 1150 -798\",8750:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q382 -52 390 2Q314 40 276 99Q230 167 230 249Q230 363 305 436T484 519H494L503 563Q587 939 632 1087T727 1298Q774 1360 828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q766 1323 688 929Q662 811 610 496Q770 416 770 249Q770 147 701 68T516 -21H506L497 -65Q407 -464 357 -623T237 -837Q203 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM480 478Q460 478 435 470T380 444T327 401T287 335T271 249Q271 124 375 56L397 43L431 223L485 478H480ZM519 20Q545 20 578 33T647 72T706 144T730 249Q730 383 603 455Q603 454 597 421T582 343T569 276Q516 22 515 20H519\",8896:\"1055 -401Q1055 -419 1042 -434T1007 -450Q977 -450 963 -423Q959 -417 757 167L555 750L353 167Q151 -417 147 -423Q134 -450 104 -450Q84 -450 70 -436T55 -401Q55 -394 56 -390Q59 -381 284 270T512 925Q525 950 555 950Q583 950 597 926Q599 923 825 270T1054 -391Q1055 -394 1055 -401\",8897:\"55 900Q55 919 69 934T103 950Q134 950 147 924Q152 913 353 333L555 -250L757 333Q958 913 963 924Q978 950 1007 950Q1028 950 1041 935T1055 901Q1055 894 1054 891Q1052 884 826 231T597 -426Q583 -450 556 -450Q527 -450 512 -424Q510 -421 285 229T56 890Q55 893 55 900\",8898:\"57 516Q68 602 104 675T190 797T301 882T423 933T542 949Q594 949 606 948Q780 928 901 815T1048 545Q1053 516 1053 475T1055 49Q1055 -406 1054 -410Q1051 -427 1037 -438T1006 -450T976 -439T958 -411Q957 -407 957 37Q957 484 956 494Q945 643 831 747T554 852Q481 852 411 826Q301 786 232 696T154 494Q153 484 153 37Q153 -407 152 -411Q148 -428 135 -439T104 -450T73 -439T56 -410Q55 -406 55 49Q56 505 57 516\",8899:\"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911\",8968:\"224 -649V1150H511V1099H275V-649H224\",8969:\"16 1099V1150H303V-649H252V1099H16\",8970:\"224 -649V1150H275V-598H511V-649H224\",8971:\"252 -598V1150H303V-649H16V-598H252\",9001:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",9002:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\",9168:\"312 0V602H355V0H312\",10072:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",10216:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",10217:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\",10752:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM755 -352Q922 -352 1061 -269T1278 -48T1356 250Q1356 479 1202 652T809 850Q798 851 747 851Q634 851 527 806T337 682T204 491T154 251Q154 128 201 17T329 -176T521 -304T755 -352ZM665 250Q665 290 692 315T758 341Q792 339 818 315T845 250Q845 211 819 186T755 160Q716 160 691 186T665 250\",10753:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM706 299V850H704Q519 832 386 725T198 476Q181 433 169 379T156 300Q156 299 431 299H706ZM1116 732Q1054 778 982 807T871 842T810 849L804 850V299H1079Q1354 299 1354 300Q1354 311 1352 329T1336 402T1299 506T1228 620T1116 732ZM706 -350V201H431Q156 201 156 200Q156 189 158 171T174 98T211 -6T282 -120T395 -232Q428 -257 464 -277T527 -308T587 -328T636 -339T678 -346T706 -350ZM1354 200Q1354 201 1079 201H804V-350Q808 -349 838 -345T887 -338T940 -323T1010 -295Q1038 -282 1067 -265T1144 -208T1229 -121T1301 0T1349 158Q1354 188 1354 200\",10754:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM1143 709Q1138 714 1129 722T1086 752T1017 791T925 826T809 850Q798 851 747 851H728Q659 851 571 823T408 741Q367 713 367 709L755 320L1143 709ZM297 639Q296 639 282 622T247 570T205 491T169 382T154 250T168 118T204 9T247 -70T282 -122L297 -139L685 250L297 639ZM1213 -139Q1214 -139 1228 -122T1263 -70T1305 9T1341 118T1356 250T1342 382T1306 491T1263 570T1228 622L1213 639L825 250L1213 -139ZM367 -209Q373 -215 384 -224T434 -258T514 -302T622 -336T755 -352T887 -338T996 -302T1075 -259T1126 -224L1143 -209L755 180Q754 180 561 -14T367 -209\",10756:\"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911ZM507 554Q511 570 523 581T554 593Q571 593 585 582T603 554Q604 551 604 443V338H709Q817 338 820 337Q835 334 847 321T859 290Q859 254 819 241Q816 240 709 240H604V134Q604 48 604 34T598 11Q583 -15 555 -15Q526 -15 512 11Q507 20 507 34T506 134V240H401H344Q292 240 278 246Q251 259 251 290Q251 309 264 321T290 337Q293 338 401 338H506V443Q506 551 507 554\",10758:\"56 911Q60 927 72 938T103 950Q120 950 134 939T152 911Q153 907 153 277V-352H957V277Q957 907 958 911Q962 928 975 939T1006 950T1036 939T1054 911V891Q1054 871 1054 836T1054 754T1054 647T1055 525T1055 390T1055 250T1055 111T1055 -24T1055 -147T1054 -253T1054 -335T1054 -391V-411Q1047 -442 1016 -449Q1011 -450 552 -450L94 -449Q63 -439 56 -411V-391Q56 -371 56 -336T56 -254T56 -147T55 -25T55 110T55 250T55 389T55 524T55 647T56 753T56 835T56 891V911\",12296:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",12297:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\"},{10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.largeop=void 0,e.largeop={40:[1.15,.649,.597],41:[1.15,.649,.597],47:[1.15,.649,.811],91:[1.15,.649,.472],92:[1.15,.649,.811],93:[1.15,.649,.472],123:[1.15,.649,.667],125:[1.15,.649,.667],710:[.772,-.565,1],732:[.75,-.611,1],770:[.772,-.565,0],771:[.75,-.611,0],8214:[.602,0,.778],8260:[1.15,.649,.811],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.95,.45,1.278],8720:[.95,.45,1.278],8721:[.95,.45,1.444],8730:[1.15,.65,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[1.36,.862,.556,{ic:.388}],8748:[1.36,.862,1.084,{ic:.388}],8749:[1.36,.862,1.592,{ic:.388}],8750:[1.36,.862,.556,{ic:.388}],8896:[.95,.45,1.111],8897:[.95,.45,1.111],8898:[.949,.45,1.111],8899:[.95,.449,1.111],8968:[1.15,.649,.528],8969:[1.15,.649,.528],8970:[1.15,.649,.528],8971:[1.15,.649,.528],9001:[1.15,.649,.611],9002:[1.15,.649,.611],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[1.15,.649,.611],10217:[1.15,.649,.611],10752:[.949,.449,1.511],10753:[.949,.449,1.511],10754:[.949,.449,1.511],10756:[.95,.449,1.111],10758:[.95,.45,1.111],10764:[1.36,.862,2.168,{ic:.388}],12296:[1.15,.649,.611],12297:[1.15,.649,.611]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.monospace=void 0;var r=Q(6),T=Q(234);e.monospace=r.AddPaths(T.monospace,{32:\"\",33:\"206 565Q206 590 222 606T265 622Q287 621 303 606T319 565T314 392L308 216Q299 194 273 194H262Q247 194 241 195T228 200T217 216L211 392Q206 539 206 565ZM206 56Q206 83 223 99T265 115Q288 113 304 99T320 58Q320 33 303 17T262 0Q237 0 222 17T206 56\",34:\"122 575Q122 593 137 608T173 623Q196 623 210 608T225 575Q225 562 218 464Q212 373 211 361T201 341Q193 333 173 333Q154 333 146 341Q138 348 137 360T129 464Q122 561 122 575ZM299 575Q299 593 314 608T350 623Q373 623 387 608T402 575Q402 562 395 464Q389 373 388 361T378 341Q370 333 350 333Q331 333 323 341Q315 348 314 360T306 464Q299 561 299 575\",35:\"93 163Q74 163 65 164T46 173T36 198Q36 210 40 215T61 233H131V236Q132 239 140 307T149 377Q149 379 105 379L61 380Q36 392 36 414Q36 450 86 450Q91 450 99 450T112 449H159Q163 480 167 517Q168 524 170 545T174 573T180 591T191 607T210 611Q223 611 232 604T243 588L245 580Q245 565 238 511T230 451Q230 449 282 449H333Q337 480 341 517Q342 524 343 537T345 556T348 573T352 589T359 600T370 608T384 611Q395 611 406 602T419 580Q419 565 412 511T404 451Q404 449 431 449H442Q477 449 485 429Q489 421 489 414Q489 392 463 380L428 379H394V376Q393 373 385 305T376 235Q376 233 419 233H463L468 230Q472 227 473 227T477 223T482 218T486 213T488 206T489 198Q489 162 436 162Q430 162 422 162T412 163H366V161Q364 159 357 92Q356 85 355 73T353 54T350 37T346 22T339 11T328 3T314 0Q303 0 292 9T279 31Q279 37 287 96T295 162Q295 163 244 163H192V161Q190 159 183 92Q182 85 181 73T179 54T176 37T172 22T165 11T154 3T140 0Q129 0 118 9T105 31Q105 37 113 96T121 162Q121 163 93 163ZM323 377Q323 379 272 379H220V376Q219 373 211 305T202 235Q202 233 253 233H305V236Q306 239 314 307T323 377\",36:\"415 397Q392 397 377 411T362 448Q362 464 376 485Q369 498 362 506T346 520T332 528T315 533T300 538V445L301 353L311 350Q382 334 424 284T466 174Q466 115 425 65T303 -2L300 -3V-30Q300 -64 291 -74Q283 -82 262 -82H255Q234 -82 225 -60L224 -32V-4L213 -2Q152 6 106 51T59 170V180Q59 197 74 213Q89 227 110 227T146 213T162 174Q162 156 147 137Q153 123 161 112T176 95T191 85T205 79T216 76T224 74V283L213 285Q147 298 103 343T58 449Q58 516 108 560T224 614V643V654Q224 666 226 673T237 687T264 694Q289 693 294 683T300 642V615H303Q355 607 390 587T440 540T460 493T466 453Q466 425 451 411T415 397ZM137 452Q137 425 158 404T198 376T223 369Q224 369 224 453T223 537Q198 532 168 509T137 452ZM301 75Q307 75 325 83T365 116T387 171Q387 238 300 267V171Q300 75 301 75\",37:\"35 560Q35 607 54 645T110 693Q111 693 116 693T125 694Q165 692 187 651T210 560Q210 506 186 467T123 428Q84 428 60 466T35 560ZM139 560Q139 574 136 587T130 608T124 615Q122 617 120 614Q106 595 106 561Q106 516 121 506Q123 504 125 507Q139 526 139 560ZM123 -83Q107 -83 98 -73T88 -48Q88 -43 89 -41Q90 -37 229 316T370 675Q381 694 400 694Q416 694 426 684T436 659Q436 654 435 652Q434 647 295 294T153 -65Q144 -83 123 -83ZM314 50Q314 104 338 143T400 183Q439 183 464 144T489 50T465 -43T402 -82Q358 -82 336 -41T314 50ZM417 50Q417 71 413 85T405 102L401 106Q386 95 386 50Q386 29 390 15T398 -2L402 -6Q417 5 417 50\",38:\"96 462Q96 546 132 584T211 622Q255 622 284 583T314 474Q314 395 224 305L208 288Q213 275 226 251L265 185L269 179Q273 184 299 246L332 333L342 363Q342 364 341 365Q334 365 334 393Q334 406 334 410T340 420T356 431H412H440Q467 431 478 424T490 393Q490 376 484 367T470 357T448 355H441H415L399 312Q349 176 322 127L315 115L323 106Q360 65 393 65Q405 65 410 80T416 109Q416 140 452 140Q487 140 487 105Q487 56 460 23T391 -11L286 41L273 53L262 42Q212 -11 151 -11Q97 -11 63 33T28 143Q28 161 30 176T38 205T47 227T60 247T72 261T84 274T94 283L122 311L119 323Q96 392 96 462ZM243 474Q243 533 218 545L215 546Q212 546 210 546Q182 546 169 501Q167 492 167 466Q167 419 179 368L188 377Q234 425 242 461Q243 465 243 474ZM217 129Q185 174 154 235Q121 214 115 176Q113 168 113 143Q113 83 139 67Q141 66 152 66Q191 66 228 112L217 129\",39:\"205 554Q205 577 221 594T263 611Q302 611 325 577T349 490Q349 409 298 347Q285 330 258 309T214 287Q203 289 189 302T175 327Q175 341 185 349T213 369T245 402Q269 437 273 483V497Q264 496 263 496Q240 496 223 513T205 554\",40:\"437 -53Q437 -82 399 -82H394Q377 -82 342 -55Q259 7 213 102T166 306Q166 412 211 507T342 667Q377 694 393 694H399Q437 694 437 665Q437 654 426 643T397 620T356 584T311 525Q301 511 290 488T264 412T250 306Q250 191 300 105T422 -27Q437 -37 437 -53\",41:\"87 664Q87 694 126 694Q138 694 147 690T183 667Q266 605 312 510T358 306Q358 193 307 93T161 -70Q142 -82 126 -82Q105 -82 96 -73T87 -53Q87 -47 88 -44Q92 -36 116 -19T173 34T230 119Q273 206 273 306Q273 408 231 494T109 635Q87 649 87 664\",42:\"222 487Q224 501 235 510T262 520Q279 520 289 510T302 487Q302 458 301 429Q301 421 301 413T301 398T300 386T300 377V374Q300 373 301 373Q304 373 353 403T416 434Q432 434 444 423T456 393Q456 389 456 386T454 379T451 373T448 368T442 363T436 358T427 353T417 348T405 342T391 334Q345 309 339 305L388 279Q400 273 412 266T432 255T441 250Q456 238 456 218Q456 200 445 189T417 177Q403 177 354 207T301 238Q300 238 300 237V234Q300 231 300 226T300 214T301 199T301 182Q302 153 302 124Q300 109 289 100T262 90T235 100T222 124Q222 153 223 182Q223 190 223 198T223 213T224 225T224 234V237Q224 238 223 238Q220 238 171 208T108 177Q92 177 80 188T68 218Q68 237 79 246T134 277Q180 303 185 306L136 332Q124 338 112 345T92 356T83 361Q68 373 68 393Q68 411 79 422T107 434Q121 434 170 404T223 373Q224 373 224 374V377Q224 380 224 385T224 397T223 412T223 429Q222 458 222 487\",43:\"147 271Q138 271 122 271T98 270Q68 270 53 277T38 306T53 335T98 342Q105 342 121 342T147 341H227V423L228 505Q241 531 262 531Q268 531 273 530T282 525T287 519T293 511L297 505V341H377H430Q457 341 467 338T483 321Q487 313 487 306Q487 295 480 286T463 273Q457 271 377 271H297V107Q281 81 262 81Q250 81 242 87T230 100L228 107L227 189V271H147\",44:\"193 37T193 70T213 121T260 140Q302 140 327 108T353 36Q353 -7 336 -43T294 -98T249 -128T215 -139Q204 -139 189 -125Q177 -111 174 -101Q172 -84 183 -77T217 -61T253 -33Q261 -24 272 1L265 0Q234 0 214 18\",45:\"57 306Q57 333 86 341H438Q468 332 468 306T438 271H86Q57 280 57 306\",46:\"193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70\",47:\"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83\",58:\"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70\",59:\"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T259 140Q301 140 319 108T337 33Q337 -38 291 -88T214 -139Q203 -139 189 -126T175 -97Q175 -85 182 -78T200 -66T225 -50T249 -17Q256 -3 256 0Q252 1 248 1Q242 2 235 5T218 15T200 36T193 70\",60:\"468 90Q468 76 458 66T433 55Q426 55 419 58Q413 61 243 168T68 280Q57 291 57 306T68 332Q72 335 241 442T416 553Q424 557 432 557Q447 557 457 547T468 522T456 496Q454 494 305 399L158 306L305 213Q341 190 390 159Q443 125 452 119T464 106V105Q468 97 468 90\",61:\"38 382Q38 409 67 417H457Q487 408 487 382Q487 358 461 348H64Q51 352 45 360T38 376V382ZM67 195Q38 204 38 230Q38 255 62 264Q66 265 264 265H461L464 264Q467 262 469 261T475 256T481 249T485 240T487 230Q487 204 457 195H67\",62:\"57 522Q57 539 67 548T90 557Q98 557 105 554Q111 551 281 444T456 332Q468 320 468 306T456 280Q452 276 282 169T105 58Q98 55 91 55Q79 55 68 63T57 90Q57 105 68 116Q70 118 219 213L366 306L219 399Q75 491 71 494Q57 507 57 522\",63:\"62 493Q62 540 107 578T253 617Q366 617 414 578T462 490Q462 459 445 434T411 400L394 390Q315 347 296 287Q294 278 293 247V217Q285 201 278 198T246 194T216 197T201 215V245V253Q201 379 351 456Q366 464 375 477Q377 482 377 490Q377 517 339 528T251 540Q182 540 159 517Q166 503 166 490Q166 468 151 453T114 438Q96 438 79 451T62 493ZM190 58Q190 85 208 100T249 115Q272 113 288 99T304 58Q304 33 287 17T246 0T206 16T190 58\",64:\"44 306Q44 445 125 531T302 617Q332 617 358 607T411 574T456 502T479 387Q481 361 481 321Q481 203 421 143Q381 103 332 103Q266 103 225 165T183 307Q183 390 227 449T332 508Q358 508 378 498Q350 541 304 541Q229 541 172 473T115 305Q115 208 171 140T306 71H310Q358 71 397 105Q409 115 436 115Q458 115 462 113Q481 106 481 86Q481 73 468 61Q401 -6 305 -6Q262 -6 217 14T133 71T69 170T44 306ZM410 306Q410 361 386 396T333 431Q300 431 277 394T254 305Q254 256 276 218T332 180Q364 180 387 217T410 306\",91:\"237 -82Q221 -78 214 -58V305Q214 669 216 673Q220 687 231 690T278 694H350H461Q462 693 467 690T474 685T478 679T482 670T483 656Q483 632 471 625T428 617Q422 617 406 617T379 618H298V-7H379H420Q459 -7 471 -13T483 -45Q483 -55 483 -59T477 -70T461 -82H237\",92:\"58 659Q58 673 68 683T93 694Q114 694 125 673Q132 659 297 314T464 -36Q466 -44 466 -48Q466 -66 454 -74T431 -83Q410 -83 399 -62Q391 -47 226 298T60 648Q58 656 58 659\",93:\"41 656Q41 681 53 688T99 695Q107 695 133 695T177 694H288Q307 681 310 669V-58Q303 -76 288 -82H64Q41 -73 41 -45Q41 -21 53 -14T96 -6Q102 -6 118 -6T145 -7H226V618H145H100Q67 618 54 625T41 656\",94:\"138 460Q121 460 109 479T96 512Q96 527 106 534Q109 536 178 571T253 609Q256 611 264 611Q272 610 343 574Q357 567 369 561T389 550T402 543T411 538T416 535T420 532T422 529T425 525Q428 518 428 512Q428 498 416 479T386 460H384Q377 460 316 496L262 526L208 496Q147 460 138 460\",95:\"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60\",96:\"176 479Q176 563 227 622T310 681Q324 680 337 667T350 641Q350 627 340 619T312 599T280 566Q256 531 252 485V471Q261 472 262 472Q285 472 302 455T320 414Q320 389 303 373T261 357Q223 357 200 391T176 479\",123:\"430 -7H436Q449 -7 456 -8T469 -19T475 -45Q475 -69 466 -76T434 -83H419Q386 -82 363 -80T308 -69T253 -41T223 7L221 17L220 118V220L218 224Q215 229 214 230T210 235T204 241T195 246T184 252T170 257T151 262T127 265Q118 267 100 267T69 270T52 283Q50 288 50 306V314Q50 335 67 341Q68 342 102 343T172 355T217 386L220 392V493L221 595Q225 611 230 621T251 650T304 679T395 693L406 694Q418 694 426 694Q458 694 466 685Q475 676 475 656T466 627Q458 618 430 618Q319 618 305 587L304 486Q304 476 304 458T305 431Q305 385 295 358T251 311L243 306Q243 305 254 298T281 274T302 231Q304 223 304 125L305 25Q309 16 316 10T352 -1T430 -7\",124:\"228 668Q241 694 262 694Q268 694 273 693T282 688T287 682T293 674L297 668V-57Q282 -82 262 -82Q239 -82 228 -57V668\",125:\"49 655Q49 674 56 682T73 692T106 694Q141 693 167 690T224 677T275 647T303 595L305 392Q313 367 347 356T417 344T457 341Q475 335 475 306Q475 292 473 285T464 273T451 269T430 267Q352 262 327 246Q311 236 305 220L303 17L301 7Q294 -16 277 -33T242 -60T196 -74T150 -80T106 -83Q78 -83 72 -82T58 -74Q49 -65 49 -44Q49 -24 58 -16Q66 -7 94 -7Q143 -7 171 -1T207 10T220 25V125Q220 223 222 231Q228 257 243 274T270 299L281 306Q234 329 222 381Q220 387 220 486V587Q212 597 207 601T173 612T94 618Q66 618 58 627Q49 635 49 655\",126:\"125 467Q113 467 100 480T87 509Q88 520 111 543Q172 602 209 609Q219 611 224 611Q246 611 263 596T290 566T304 551Q319 551 367 594Q383 610 396 610H400Q411 610 424 597T437 568Q436 557 413 534Q348 469 305 466Q278 466 260 481T234 511T220 526Q205 526 157 483Q141 467 129 467H125\",127:\"104 565Q104 590 120 600T155 611Q175 611 180 610Q217 599 217 565Q217 545 202 532T166 519H159H155Q120 519 107 547Q104 553 104 565ZM307 565Q307 580 317 593T346 610Q348 610 350 610T354 611Q355 612 367 612Q395 611 408 597T421 565T409 534T365 519H358Q336 519 322 532T307 565\",160:\"\",305:\"411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411\",567:\"75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107\",697:\"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572\",768:\"-409 569Q-409 586 -399 596T-377 610Q-376 610 -372 610T-365 611Q-355 610 -284 588T-210 563Q-195 556 -195 537Q-195 533 -197 522T-208 498T-229 485Q-238 485 -312 508T-388 533Q-400 538 -405 552Q-409 559 -409 569\",769:\"-297 485Q-315 485 -323 505T-331 537Q-331 556 -316 563Q-307 569 -170 610Q-169 610 -165 610T-157 611Q-141 609 -131 600T-119 584T-117 569Q-117 555 -124 545T-138 533Q-140 531 -214 508T-297 485\",770:\"-387 460Q-404 460 -416 479T-429 512Q-429 527 -419 534Q-416 536 -347 571T-272 609Q-269 611 -261 611Q-254 610 -182 574Q-168 567 -156 561T-136 550T-123 543T-114 538T-109 535T-105 532T-103 529T-100 525Q-97 518 -97 512Q-97 498 -109 479T-139 460H-141Q-148 460 -209 496L-263 526L-317 496Q-378 460 -387 460\",771:\"-400 467Q-412 467 -425 480T-438 509Q-437 520 -414 543Q-353 602 -316 609Q-306 611 -301 611Q-279 611 -262 596T-235 566T-221 551Q-206 551 -158 594Q-142 610 -129 610H-125Q-114 610 -101 597T-88 568Q-89 557 -112 534Q-177 469 -220 466Q-247 466 -265 481T-291 511T-305 526Q-320 526 -368 483Q-384 467 -396 467H-400\",772:\"-429 500Q-440 504 -445 511T-450 522T-452 536Q-452 552 -451 556Q-445 571 -434 574T-379 578Q-369 578 -330 578T-261 577H-96Q-94 575 -90 573T-85 569T-81 564T-77 558T-75 550T-74 538Q-74 522 -78 515T-96 500H-429\",774:\"-446 579Q-446 611 -412 611H-407Q-383 609 -378 599T-358 587Q-340 583 -263 583H-235Q-159 583 -152 593Q-145 611 -120 611H-117H-115Q-79 611 -79 577Q-80 552 -95 536T-140 514T-191 506T-251 504H-263H-274Q-311 504 -334 505T-386 513T-431 536T-446 579\",776:\"-421 565Q-421 590 -405 600T-370 611Q-350 611 -345 610Q-308 599 -308 565Q-308 545 -323 532T-359 519H-366H-370Q-405 519 -418 547Q-421 553 -421 565ZM-218 565Q-218 580 -208 593T-179 610Q-177 610 -175 610T-171 611Q-170 612 -158 612Q-130 611 -117 597T-104 565T-116 534T-160 519H-167Q-189 519 -203 532T-218 565\",778:\"-344 558Q-344 583 -321 601T-262 619Q-225 619 -204 600T-182 560Q-182 536 -205 518T-264 499Q-301 499 -322 519T-344 558ZM-223 559Q-223 570 -234 579T-261 588T-289 580T-303 559Q-303 549 -293 540T-263 530T-234 539T-223 559\",780:\"-427 525Q-427 542 -417 559T-392 577Q-385 577 -323 553L-263 530L-203 553Q-143 576 -136 576Q-118 576 -109 559T-99 525Q-99 508 -107 502T-161 481Q-177 475 -186 472Q-256 449 -263 449Q-272 449 -339 472T-412 498Q-420 501 -423 508T-427 520V525\",913:\"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221\",914:\"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176\",915:\"466 611Q468 609 473 606T479 602T483 598T486 593T487 586T488 576T488 562V526V488Q488 452 470 444Q466 442 446 442Q421 442 413 450Q406 457 405 463T404 501V535H185V76H222H239Q260 76 270 69T281 38Q281 12 270 6T209 0H155H104Q48 0 37 5T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594Q33 606 43 608T106 611H258H466\",916:\"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501\",917:\"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271\",918:\"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71\",919:\"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571\",920:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM262 66Q285 66 300 67T329 74T351 86T366 108T376 138T381 181T383 235T384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 247 141 215T146 151T158 107T179 82T212 69T262 66ZM179 356Q187 378 219 378H223Q240 377 249 372T260 360L261 355Q261 353 262 353T263 355Q263 362 272 369Q280 377 304 377H310Q325 377 331 374T346 356V256Q338 241 331 238T309 234H304Q280 234 272 242Q263 249 263 256Q263 258 262 258T261 256Q261 249 252 242Q244 234 220 234H216Q186 234 179 256V356\",921:\"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400\",922:\"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573\",923:\"30 38Q30 57 38 66T70 76Q88 76 88 78Q89 79 117 207T173 466T205 602Q213 617 231 622H236Q241 622 249 622T264 623H294Q315 609 319 602Q321 598 350 468T407 208T435 78Q436 76 454 76Q470 76 478 73Q495 62 495 38Q495 10 473 1H313Q290 10 290 38Q290 56 297 65T310 74T331 76Q350 76 350 78Q349 80 328 176T285 383T263 520Q263 526 262 527Q261 527 261 521Q261 497 240 388T198 181T174 78Q174 76 193 76Q220 75 227 65Q234 56 234 38Q234 28 234 24T228 13T212 1H52Q30 9 30 32V38\",924:\"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50\",925:\"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571\",926:\"37 555V569Q37 605 60 610H66Q71 610 81 610T105 610T137 610T175 611T217 611T264 611H465Q467 609 471 606T477 602T481 599T484 594T485 588T487 580T487 570T487 554Q487 526 486 520T478 506Q470 498 445 498T412 506Q403 515 403 531V539H121V531Q121 498 86 498H79H71Q48 498 39 517Q37 522 37 555ZM109 318V346Q109 366 113 374T132 389H170Q193 379 193 359V354H331V359Q331 379 354 389H392Q407 381 411 373T415 342V318V290Q415 270 411 262T392 247H354Q331 257 331 277V282H193V277Q193 257 170 247H132Q117 255 113 263T109 294V318ZM56 1Q41 7 37 15T33 42V58V80Q33 101 41 110T77 119Q87 118 91 118T103 114T114 103T117 83V72H407V83Q407 101 416 110T449 119T482 110Q489 103 490 97T491 59V41Q491 24 487 16T469 1H56\",927:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513\",928:\"60 535Q45 535 38 536T24 545T16 571Q16 603 36 609Q41 611 264 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V535H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60\",929:\"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421\",931:\"40 575Q40 576 40 579T41 583T41 588T43 593T46 597T50 602T55 606T63 610H68Q74 610 84 610T108 610T139 610T176 611T219 611T264 611H462Q464 609 469 606T475 602T479 598T482 593T483 586T484 576T484 562V526V488Q484 452 466 444Q462 442 442 442Q417 442 409 450Q402 457 401 463T400 501V535H153Q153 533 218 430Q233 405 250 378T276 336T286 319Q290 311 290 307Q290 296 239 211Q229 194 223 184L161 78H400V112Q400 142 401 149T409 163Q418 172 442 172Q473 172 482 152Q484 147 484 86V49Q484 25 481 17T462 1H63Q41 10 41 31Q41 39 43 44Q43 45 81 109T157 238L195 303Q195 307 119 430T41 557T40 575\",932:\"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38\",933:\"38 494Q38 549 74 585T152 621Q168 621 179 619T209 606T241 566T262 492Q262 494 265 507T270 526T276 547T285 569T298 589T315 606T337 617T365 622Q416 622 451 584T486 494Q486 470 469 461Q464 459 445 459H437Q416 459 406 476Q404 479 403 502T393 541T365 558Q350 558 340 548T323 519T312 475T307 419T305 354T304 282Q304 254 304 239V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V239Q220 256 220 289T220 338T219 383T217 426T214 463T209 497T201 522T189 543T174 555Q168 558 159 558Q139 558 131 541T121 502T118 476Q108 459 84 459H79H71Q38 459 38 494\",934:\"139 573V578Q139 603 161 610H166Q172 610 182 610T204 610T232 611T264 611H364Q379 602 382 595T385 573Q385 544 364 536L334 535H304V441H306Q313 440 325 438T367 426T421 403T464 364T483 306Q483 251 430 216T317 172Q315 172 313 172T308 170H306H304V76H364Q379 67 382 60T385 38Q385 28 385 24T379 12T364 1H161Q139 8 139 33V38Q139 46 139 49T141 58T148 68T161 76H220V170H218Q211 171 199 173T157 185T103 208T60 248T41 306Q41 361 94 396T208 439Q210 439 212 439T216 440L218 441H220V535H190L161 536Q139 543 139 573ZM124 306Q124 286 147 271T194 252L218 247Q220 247 220 306V364H218Q212 364 192 359T148 340T124 306ZM400 305Q400 325 377 340T330 360L306 364Q304 364 304 306Q304 247 306 247Q312 247 332 252T376 271T400 305\",935:\"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571\",936:\"37 439Q38 451 40 457T52 469T77 475H79Q96 475 107 473T132 456T152 411Q152 409 153 396T154 372V365Q154 291 198 261Q215 251 219 251Q220 251 220 393V535H193L167 536Q145 545 145 567V573Q145 602 167 610Q168 611 264 611H358Q372 602 376 595T380 573Q380 545 358 536L331 535H304V393Q304 251 305 251Q307 251 310 252T323 259T339 272T355 295T367 331Q368 337 370 372Q370 382 371 395T372 411Q376 434 384 448T404 467T425 474T447 475Q461 474 467 473T480 463T487 437Q487 419 481 412Q476 403 459 398Q457 390 453 344T431 263Q415 228 383 205T332 177T306 172H304V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V172H218Q211 172 192 177T141 205T93 263Q74 298 71 343T67 391L66 398Q47 403 42 411T37 433V439\",937:\"40 404Q40 498 106 560T258 622Q357 622 420 558T484 406Q484 359 469 311T428 205T392 117Q382 84 382 78Q382 76 402 76H421V87Q421 110 431 116T457 123Q474 123 483 114Q490 107 491 100T492 61V42Q492 11 474 3Q470 1 397 1H324Q302 9 302 32V39Q302 104 351 225T400 405Q400 462 361 504T262 546Q200 546 162 504T124 405Q124 346 171 230T223 42V36Q223 11 205 3Q201 1 128 1H55Q39 7 33 23L32 60V80Q32 94 34 102T44 116T68 123Q103 123 103 87V76H123Q142 76 142 78Q142 100 117 156T66 282T40 404\",8215:\"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60\",8242:\"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572\",8260:\"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83\",8710:\"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8279:\"\\u2032\\u2032\\u2032\\u2032\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.monospace=void 0,e.monospace={32:[0,0,.525],33:[.622,0,.525],34:[.623,-.333,.525],35:[.611,0,.525],36:[.694,.082,.525],37:[.694,.083,.525],38:[.622,.011,.525],39:[.611,-.287,.525],40:[.694,.082,.525],41:[.694,.082,.525],42:[.52,-.09,.525],43:[.531,-.081,.525],44:[.14,.139,.525],45:[.341,-.271,.525],46:[.14,0,.525],47:[.694,.083,.525],58:[.431,0,.525],59:[.431,.139,.525],60:[.557,-.055,.525],61:[.417,-.195,.525],62:[.557,-.055,.525],63:[.617,0,.525],64:[.617,.006,.525],91:[.694,.082,.525],92:[.694,.083,.525],93:[.694,.082,.525],94:[.611,-.46,.525],95:[-.025,.095,.525],96:[.681,-.357,.525],123:[.694,.083,.525],124:[.694,.082,.525],125:[.694,.083,.525],126:[.611,-.466,.525],127:[.612,-.519,.525],160:[0,0,.525],305:[.431,0,.525],567:[.431,.228,.525],697:[.623,-.334,.525],768:[.611,-.485,0],769:[.611,-.485,0],770:[.611,-.46,0],771:[.611,-.466,0],772:[.577,-.5,0],774:[.611,-.504,0],776:[.612,-.519,0],778:[.619,-.499,0],780:[.577,-.449,0],913:[.623,0,.525],914:[.611,0,.525],915:[.611,0,.525],916:[.623,0,.525],917:[.611,0,.525],918:[.611,0,.525],919:[.611,0,.525],920:[.621,.01,.525],921:[.611,0,.525],922:[.611,0,.525],923:[.623,0,.525],924:[.611,0,.525],925:[.611,0,.525],926:[.611,0,.525],927:[.621,.01,.525],928:[.611,0,.525],929:[.611,0,.525],931:[.611,0,.525],932:[.611,0,.525],933:[.622,0,.525],934:[.611,0,.525],935:[.611,0,.525],936:[.611,0,.525],937:[.622,0,.525],8215:[-.025,.095,.525],8242:[.623,-.334,.525],8243:[.623,0,1.05],8244:[.623,0,1.575],8260:[.694,.083,.525],8279:[.623,0,2.1],8710:[.623,0,.525]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normal=void 0;var r=Q(6),T=Q(236);e.normal=r.AddPaths(T.normal,{32:\"\",33:\"78 661Q78 682 96 699T138 716T180 700T199 661Q199 654 179 432T158 206Q156 198 139 198Q121 198 119 206Q118 209 98 431T78 661ZM79 61Q79 89 97 105T141 121Q164 119 181 104T198 61Q198 31 181 16T139 1Q114 1 97 16T79 61\",34:\"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634\",35:\"56 347Q56 360 70 367H313L355 524Q394 676 401 686Q406 694 416 694Q434 694 436 676Q436 672 396 522Q355 374 355 369L354 367H543L585 524Q626 679 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 668 626 522Q585 374 585 369L584 367H762Q777 359 777 347Q777 334 767 331T722 327H667H572L552 251L531 174Q531 173 647 173H720Q756 173 766 170T777 153T762 133H519L477 -24Q436 -179 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -177Q397 -167 436 -21Q477 125 477 131L478 133H289L247 -24Q206 -179 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -177Q167 -167 206 -21Q247 125 247 131L248 133H70Q56 140 56 153Q56 168 72 173H260L280 249L301 326Q301 327 186 327H72Q56 332 56 347ZM531 326Q531 327 437 327H342L322 251L301 174Q301 173 395 173H490L510 249L531 326\",36:\"162 187Q162 164 146 149T109 133H103V130Q108 115 115 105Q122 92 131 82T150 64T170 52T190 44T206 40T220 37L227 36V313Q190 320 162 335Q116 358 86 404T55 508Q55 567 85 614T165 685Q186 696 225 704H227V750H273V704L286 703Q369 690 413 631Q441 588 444 531Q444 514 443 509Q439 490 425 479T391 468Q368 468 353 483T337 522Q337 546 353 560T390 575L394 576V578Q386 599 372 614T342 637T314 649T288 656L273 658V408L288 405Q329 394 355 376Q396 348 420 300T444 199Q444 130 408 76T313 1Q286 -9 276 -9H273V-56H227V-10H221Q202 -6 193 -4T155 11T108 41T74 94T55 176V182Q55 227 95 238Q103 240 108 240Q129 240 145 226T162 187ZM225 657Q219 657 204 651T169 632T135 594T121 538Q121 512 131 491T156 457T187 435T213 423T227 420V539Q227 657 225 657ZM378 169Q378 230 339 265T274 301Q273 301 273 169V37Q324 50 351 87T378 169\",37:\"465 605Q428 605 394 614T340 632T319 641Q332 608 332 548Q332 458 293 403T202 347Q145 347 101 402T56 548Q56 637 101 693T202 750Q241 750 272 719Q359 642 464 642Q580 642 650 732Q662 748 668 749Q670 750 673 750Q682 750 688 743T693 726Q178 -47 170 -52Q166 -56 160 -56Q147 -56 142 -45Q137 -36 142 -27Q143 -24 363 304Q469 462 525 546T581 630Q528 605 465 605ZM207 385Q235 385 263 427T292 548Q292 617 267 664T200 712Q193 712 186 709T167 698T147 668T134 615Q132 595 132 548V527Q132 436 165 403Q183 385 203 385H207ZM500 146Q500 234 544 290T647 347Q699 347 737 292T776 146T737 0T646 -56Q590 -56 545 0T500 146ZM651 -18Q679 -18 707 24T736 146Q736 215 711 262T644 309Q637 309 630 306T611 295T591 265T578 212Q577 200 577 146V124Q577 -18 647 -18H651\",38:\"156 540Q156 620 201 668T302 716Q354 716 377 671T401 578Q401 505 287 386L274 373Q309 285 416 148L429 132L437 142Q474 191 543 309L562 341V349Q562 368 541 376T498 385H493V431H502L626 428Q709 428 721 431H727V385H712Q688 384 669 379T639 369T618 354T603 337T591 316T578 295Q537 223 506 176T464 117T454 104Q454 102 471 85T497 62Q543 24 585 24Q618 24 648 48T682 113V121H722V112Q721 94 714 75T692 32T646 -7T574 -22Q491 -19 414 42L402 51L391 42Q312 -22 224 -22Q144 -22 93 25T42 135Q42 153 46 169T55 197T74 225T96 249T125 278T156 308L195 347L190 360Q185 372 182 382T174 411T165 448T159 491T156 540ZM361 576Q361 613 348 646T305 679Q272 679 252 649T232 572Q232 497 255 426L259 411L267 420Q361 519 361 576ZM140 164Q140 103 167 64T240 24Q271 24 304 36T356 61T374 77Q295 156 235 262L220 292L210 310L193 293Q177 277 169 268T151 229T140 164\",39:\"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634\",40:\"94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250\",41:\"60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749\",42:\"215 721Q216 732 225 741T248 750Q263 750 273 742T284 721L270 571L327 613Q383 654 388 657T399 660Q412 660 423 650T435 624T424 600T376 575Q363 569 355 566L289 534L355 504L424 470Q435 462 435 447Q435 431 424 420T399 409Q393 409 388 412T327 456L270 498L277 423L284 348Q280 320 250 320T215 348L229 498L172 456Q116 415 111 412T100 409Q87 409 76 420T64 447Q64 461 75 470L144 504L210 534L144 566Q136 570 122 576Q83 593 74 600T64 624Q64 639 75 649T100 660Q106 660 111 657T172 613L229 571Q229 578 222 643T215 721\",43:\"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250\",44:\"78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17\",45:\"11 179V252H277V179H11\",46:\"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60\",47:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",48:\"96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597\",49:\"213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578\",50:\"109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429\",51:\"127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463\",52:\"462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293\",53:\"164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157\",54:\"42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397\",55:\"55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458\",56:\"70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21\",57:\"352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248\",58:\"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60\",59:\"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 85 94 103T137 121Q202 121 202 8Q202 -44 183 -94T144 -169T118 -194Q115 -194 106 -186T95 -174Q94 -171 107 -155T137 -107T160 -38Q161 -32 162 -22T165 -4T165 4Q165 5 161 4T142 0Q110 0 94 18T78 60\",60:\"694 -11T694 -19T688 -33T678 -40Q671 -40 524 29T234 166L90 235Q83 240 83 250Q83 261 91 266Q664 540 678 540Q681 540 687 534T694 519T687 505Q686 504 417 376L151 250L417 124Q686 -4 687 -5Q694 -11 694 -19\",61:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",62:\"84 520Q84 528 88 533T96 539L99 540Q106 540 253 471T544 334L687 265Q694 260 694 250T687 235Q685 233 395 96L107 -40H101Q83 -38 83 -20Q83 -19 83 -17Q82 -10 98 -1Q117 9 248 71Q326 108 378 132L626 250L378 368Q90 504 86 509Q84 513 84 520\",63:\"226 668Q190 668 162 656T124 632L114 621Q116 621 119 620T130 616T145 607T157 591T162 567Q162 544 147 529T109 514T71 528T55 566Q55 625 100 661T199 704Q201 704 210 704T224 705H228Q281 705 320 692T378 656T407 612T416 567Q416 503 361 462Q267 395 247 303Q242 279 242 241V224Q242 205 239 202T222 198T205 201T202 218V249Q204 320 220 371T255 445T292 491T315 537Q317 546 317 574V587Q317 604 315 615T304 640T277 661T226 668ZM162 61Q162 89 180 105T224 121Q247 119 264 104T281 61Q281 31 264 16T222 1Q197 1 180 16T162 61\",64:\"56 347Q56 429 86 498T164 612T270 680T386 705Q522 705 622 603T722 349Q722 126 608 126Q541 126 513 176Q512 177 512 179T510 182L509 183Q508 183 503 177T487 163T464 146T429 132T385 126Q311 126 251 186T190 347Q190 448 251 508T385 568Q426 568 460 548T509 511T531 479H555Q580 479 582 478Q586 477 587 468Q588 454 588 338V260Q588 200 593 182T619 163Q641 163 655 178T674 223T680 273T682 325V330Q682 426 647 500Q611 569 544 618T388 668Q271 668 184 577T96 347Q96 216 180 121T396 26Q421 26 446 28T493 34T535 43T573 52T605 63T629 72T647 80T657 84H716Q722 78 722 74Q722 65 675 45T547 7T392 -11Q255 -11 156 90T56 347ZM274 347Q274 266 308 214T390 162Q420 162 449 182T498 235L504 245V449L498 459Q453 532 387 532Q347 532 311 483T274 347\",65:\"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447\",66:\"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188\",67:\"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q322 658 252 588Q173 509 173 342Q173 221 211 151Q232 111 263 84T328 45T384 29T428 24Q517 24 571 93T626 244Q626 251 632 257H660L666 251V236Q661 133 590 56T403 -21Q262 -21 159 83T56 342\",68:\"130 622Q123 629 119 631T103 634T60 637H27V683H228Q399 682 419 682T461 676Q504 667 546 641T626 573T685 470T708 336Q708 210 634 116T442 3Q429 1 228 0H27V46H60Q102 47 111 49T130 61V622ZM593 338Q593 439 571 501T493 602Q439 637 355 637H322H294Q238 637 234 628Q231 624 231 344Q231 62 232 59Q233 49 248 48T339 46H350Q456 46 515 95Q561 133 577 191T593 338\",69:\"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619\",70:\"128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619\",71:\"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q401 658 376 654T316 633T254 592T205 519T177 411Q173 369 173 335Q173 259 192 201T238 111T302 58T370 31T431 24Q478 24 513 45T559 100Q562 110 562 160V212Q561 213 557 216T551 220T542 223T526 225T502 226T463 227H437V273H449L609 270Q715 270 727 273H735V227H721Q674 227 668 215Q666 211 666 108V6Q660 0 657 0Q653 0 639 10Q617 25 600 42L587 54Q571 27 524 3T406 -22Q317 -22 238 22T108 151T56 342\",72:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",73:\"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328\",74:\"89 177Q115 177 133 160T152 112Q152 88 137 72T102 52Q99 51 101 49Q106 43 129 29Q159 15 190 15Q232 15 256 48T286 126Q286 127 286 142T286 183T286 238T287 306T287 378Q287 403 287 429T287 479T287 524T286 563T286 593T286 614V621Q281 630 263 633T182 637H154V683H166Q187 680 332 680Q439 680 457 683H465V637H449Q422 637 401 634Q393 631 389 623Q388 621 388 376T387 123Q377 61 322 20T194 -22Q188 -22 177 -21T160 -20Q96 -9 61 29T25 110Q25 144 44 160T89 177\",75:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",76:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q48 680 182 680Q324 680 348 683H360V637H333Q273 637 258 635T233 622L232 342V129Q232 57 237 52Q243 47 313 47Q384 47 410 53Q470 70 498 110T536 221Q536 226 537 238T540 261T542 272T562 273H582V268Q580 265 568 137T554 5V0H25V46H58Q100 47 109 49T128 61V622\",77:\"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622\",78:\"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42\",79:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647\",80:\"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488\",81:\"56 341Q56 499 157 602T388 705Q521 705 621 601T722 341Q722 275 703 218T660 127T603 63T555 25T525 9Q524 8 524 8H523Q524 5 526 -1T537 -21T555 -47T581 -67T615 -76Q653 -76 678 -56T706 -3Q707 10 716 10Q721 10 728 5L727 -13Q727 -88 697 -140T606 -193Q563 -193 538 -166T498 -83Q483 -23 483 -8L471 -11Q459 -14 435 -18T388 -22Q254 -22 155 81T56 341ZM607 339Q607 429 586 496T531 598T461 649T390 665T318 649T248 598T192 496T170 339Q170 143 277 57Q301 39 305 39L304 42Q304 44 304 46Q301 53 301 68Q301 101 325 128T391 155Q454 155 495 70L501 58Q549 91 578 164Q607 234 607 339ZM385 18Q404 18 425 23T459 33T472 40Q471 47 468 57T449 88T412 115Q398 117 386 117Q367 117 353 102T338 67Q338 48 351 33T385 18\",82:\"130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499\",83:\"55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507\",84:\"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443\",85:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 418V291Q232 189 240 145T280 67Q325 24 389 24Q454 24 506 64T571 183Q575 206 575 410V598Q569 608 565 613T541 627T489 637H472V683H481Q496 680 598 680T715 683H724V637H707Q634 633 622 598L621 399Q620 194 617 180Q617 179 615 171Q595 83 531 31T389 -22Q304 -22 226 33T130 192Q129 201 128 412V622\",86:\"114 620Q113 621 110 624T107 627T103 630T98 632T91 634T80 635T67 636T48 637H19V683H28Q46 680 152 680Q273 680 294 683H305V637H284Q223 634 223 620Q223 618 313 372T404 126L490 358Q575 588 575 597Q575 616 554 626T508 637H503V683H512Q527 680 627 680Q718 680 724 683H730V637H723Q648 637 627 596Q627 595 515 291T401 -14Q396 -22 382 -22H374H367Q353 -22 348 -14Q346 -12 231 303Q114 617 114 620\",87:\"792 683Q810 680 914 680Q991 680 1003 683H1009V637H996Q931 633 915 598Q912 591 863 438T766 135T716 -17Q711 -22 694 -22Q676 -22 673 -15Q671 -13 593 231L514 477L435 234Q416 174 391 92T358 -6T341 -22H331Q314 -21 310 -15Q309 -14 208 302T104 622Q98 632 87 633Q73 637 35 637H18V683H27Q69 681 154 681Q164 681 181 681T216 681T249 682T276 683H287H298V637H285Q213 637 213 620Q213 616 289 381L364 144L427 339Q490 535 492 546Q487 560 482 578T475 602T468 618T461 628T449 633T433 636T408 637H380V683H388Q397 680 508 680Q629 680 650 683H660V637H647Q576 637 576 619L727 146Q869 580 869 600Q869 605 863 612T839 627T794 637H783V683H792\",88:\"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270\",89:\"518 0Q497 3 374 3Q253 3 232 0H221V46H254Q313 47 321 58Q324 62 324 167V273L221 446Q117 620 114 623Q106 631 91 634T31 637H11V683H20Q29 680 148 680Q273 680 294 683H305V637H287Q239 636 236 621Q236 619 321 475L407 332L483 460Q502 492 527 534Q563 594 563 604Q563 632 517 637H508V683H517H525Q533 683 545 683T571 682T600 681T626 681Q695 681 731 683H738V637H723Q640 633 613 588Q612 587 517 427L425 273V169V95Q425 66 428 59T444 49Q459 46 506 46H528V0H518\",90:\"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69\",91:\"118 -250V750H255V710H158V-210H255V-250H118\",92:\"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731\",93:\"22 710V750H159V-250H22V-210H119V710H22\",94:\"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560\",95:\"0 -62V-25H499V-62H0\",96:\"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655\",97:\"137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106\",98:\"307 -11Q234 -11 168 55L158 37Q156 34 153 28T147 17T143 10L138 1L118 0H98V298Q98 599 97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V543Q179 391 180 391L183 394Q186 397 192 401T207 411T228 421T254 431T286 439T323 442Q401 442 461 379T522 216Q522 115 458 52T307 -11ZM182 98Q182 97 187 90T196 79T206 67T218 55T233 44T250 35T271 29T295 26Q330 26 363 46T412 113Q424 148 424 212Q424 287 412 323Q385 405 300 405Q270 405 239 390T188 347L182 339V98\",99:\"370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320\",100:\"376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342\",101:\"28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275\",102:\"273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273\",103:\"329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75\",104:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",105:\"69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",106:\"98 609Q98 637 116 653T160 669Q183 667 200 652T217 609Q217 579 200 564T158 549Q133 549 116 564T98 609ZM28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",107:\"36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36\",108:\"42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42\",109:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",110:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",111:\"28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30\",112:\"36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218\",113:\"33 218Q33 308 95 374T236 441H246Q330 441 381 372L387 364Q388 364 404 403L420 442H457V156Q457 -132 458 -134Q462 -142 470 -145Q491 -148 519 -148H535V-194H527L504 -193Q480 -192 453 -192T415 -191Q312 -191 303 -194H295V-148H311Q339 -148 360 -145Q369 -141 371 -135T373 -106V-41V49Q313 -11 236 -11Q154 -11 94 53T33 218ZM376 300Q346 389 278 401Q275 401 269 401T261 402Q211 400 171 350T131 214Q131 137 165 82T253 27Q296 27 328 54T376 118V300\",114:\"36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36\",115:\"295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316\",116:\"27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27\",117:\"383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58\",118:\"338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338\",119:\"90 368Q84 378 76 380T40 385H18V431H24L43 430Q62 430 84 429T116 428Q206 428 221 431H229V385H215Q177 383 177 368Q177 367 221 239L265 113L339 328L333 345Q323 374 316 379Q308 384 278 385H258V431H264Q270 428 348 428Q439 428 454 431H461V385H452Q404 385 404 369Q404 366 418 324T449 234T481 143L496 100L537 219Q579 341 579 347Q579 363 564 373T530 385H522V431H529Q541 428 624 428Q692 428 698 431H703V385H697Q696 385 691 385T682 384Q635 377 619 334L559 161Q546 124 528 71Q508 12 503 1T487 -11H479Q460 -11 456 -4Q455 -3 407 133L361 267Q359 263 266 -4Q261 -11 243 -11H238Q225 -11 220 -3L90 368\",120:\"201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201\",121:\"69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66\",122:\"42 263Q44 270 48 345T53 423V431H393Q399 425 399 415Q399 403 398 402L381 378Q364 355 331 309T265 220L134 41L182 40H206Q254 40 283 46T331 77Q352 105 359 185L361 201Q361 202 381 202H401V196Q401 195 393 103T384 6V0H209L34 1L31 3Q28 8 28 17Q28 30 29 31T160 210T294 394H236Q169 393 152 388Q127 382 113 367Q89 344 82 264V255H42V263\",123:\"434 -231Q434 -244 428 -250H410Q281 -250 230 -184Q225 -177 222 -172T217 -161T213 -148T211 -133T210 -111T209 -84T209 -47T209 0Q209 21 209 53Q208 142 204 153Q203 154 203 155Q189 191 153 211T82 231Q71 231 68 234T65 250T68 266T82 269Q116 269 152 289T203 345Q208 356 208 377T209 529V579Q209 634 215 656T244 698Q270 724 324 740Q361 748 377 749Q379 749 390 749T408 750H428Q434 744 434 732Q434 719 431 716Q429 713 415 713Q362 710 332 689T296 647Q291 634 291 499V417Q291 370 288 353T271 314Q240 271 184 255L170 250L184 245Q202 239 220 230T262 196T290 137Q291 131 291 1Q291 -134 296 -147Q306 -174 339 -192T415 -213Q429 -213 431 -216Q434 -219 434 -231\",124:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",125:\"65 731Q65 745 68 747T88 750Q171 750 216 725T279 670Q288 649 289 635T291 501Q292 362 293 357Q306 312 345 291T417 269Q428 269 431 266T434 250T431 234T417 231Q380 231 345 210T298 157Q293 143 292 121T291 -28V-79Q291 -134 285 -156T256 -198Q202 -250 89 -250Q71 -250 68 -247T65 -230Q65 -224 65 -223T66 -218T69 -214T77 -213Q91 -213 108 -210T146 -200T183 -177T207 -139Q208 -134 209 3L210 139Q223 196 280 230Q315 247 330 250Q305 257 280 270Q225 304 212 352L210 362L209 498Q208 635 207 640Q195 680 154 696T77 713Q68 713 67 716T65 731\",126:\"179 251Q164 251 151 245T131 234T111 215L97 227L83 238Q83 239 95 253T121 283T142 304Q165 318 187 318T253 300T320 282Q335 282 348 288T368 299T388 318L402 306L416 295Q375 236 344 222Q330 215 313 215Q292 215 248 233T179 251\",160:\"\",163:\"699 578Q699 473 635 473Q597 473 595 508Q595 559 654 569V576Q654 619 637 648T581 677Q545 677 513 647T463 561Q460 554 437 464T414 371Q414 370 458 370H502Q508 364 508 362Q505 334 495 324H402L382 241Q377 224 373 206T366 180T361 163T358 151T354 142T350 133T344 120Q340 112 338 107T336 101L354 90Q398 63 422 54T476 44Q515 44 539 73T574 133Q578 144 580 146T598 148Q622 148 622 139Q622 138 620 130Q602 74 555 32T447 -11Q395 -11 317 38L294 51Q271 28 233 9T155 -10Q117 -10 103 5T88 39Q88 73 126 106T224 139Q236 139 247 138T266 134L273 132Q275 132 302 239L323 324H259Q253 330 253 332Q253 350 265 370H300L334 371L355 453Q356 457 360 477T366 501T372 522T379 545T387 565T397 587T409 606T425 627Q453 664 497 689T583 714Q640 714 669 676T699 578ZM245 76Q211 85 195 85Q173 85 158 71T142 42Q142 26 160 26H163Q211 30 245 76\",165:\"515 0Q494 3 374 3Q256 3 235 0H224V46H257Q316 47 324 58Q327 62 327 137V213H133Q121 213 113 213T97 213T86 213T78 213T73 214T70 215T69 216T68 218T67 220Q64 225 66 231T73 240Q76 242 202 242H327V273L247 407H115Q81 407 75 408T67 414Q64 419 66 425T73 434Q76 436 153 436Q228 436 228 437Q227 440 173 530T115 623Q101 637 31 637H11V683H20Q66 681 153 681Q169 681 202 681T262 682L288 683H298V637H280Q230 636 230 621Q230 619 250 584Q255 576 264 561T286 526T305 494L340 437L403 436H467L513 514Q564 596 564 605Q564 608 560 616Q550 634 517 637H508V683H516Q531 680 633 680Q722 680 731 683H738V637H723Q644 632 617 595Q614 591 568 515T521 437T597 436T676 434Q681 432 683 426T682 414T671 409T589 407H503L422 273V242H547Q673 242 676 240Q681 238 683 232T682 220Q682 219 682 218T681 217T679 216T677 215T672 214T664 213T652 213T637 213T616 213H422V139V87Q422 64 425 58T441 49Q456 46 503 46H525V0H515ZM449 406Q449 407 403 407Q358 407 358 406L370 387Q381 368 392 350L404 331Q447 404 449 406\",168:\"95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611\",172:\"56 323T56 336T70 356H596Q603 353 611 343V102Q598 89 591 89Q587 89 584 90T579 94T575 98T572 102L571 209V316H70Q56 323 56 336\",174:\"915 266Q915 140 852 38T689 -120T474 -175Q312 -175 188 -71T38 190Q32 220 32 266V287Q32 345 57 416T129 545Q192 624 282 666T464 709Q513 709 522 708Q599 698 665 666T776 590T853 493T900 387T915 287V266ZM875 285Q875 339 853 399T789 517T676 616T519 668Q510 669 465 669Q380 669 299 630T155 514T77 336Q72 312 72 285V266V256Q72 123 163 11Q290 -135 474 -135Q614 -135 727 -46Q875 81 875 266V285ZM276 457Q275 458 274 460T272 463T270 465T267 467T264 469T258 471T252 472T243 473T232 474T218 474H204V514H335Q477 514 499 510Q560 502 610 467T661 375Q661 362 658 350T648 327T635 308T618 292T601 280T583 269T568 262T554 256L547 253Q548 252 556 247T570 237T586 223T602 202T614 174Q616 169 626 123T638 72Q652 23 683 23Q715 23 720 68Q721 78 724 81T740 84T756 82T760 70Q760 47 747 25T715 -7Q700 -14 673 -14Q672 -14 662 -14T643 -12T619 -7T593 2T568 16T547 37T534 67Q531 80 531 97Q531 103 531 116T532 136Q532 218 472 236Q466 238 413 239H360V148L361 58Q366 47 375 44T418 40H432V0H424Q409 3 318 3T212 0H204V40H218Q242 40 253 42T268 47T276 58V457ZM376 473Q365 471 363 464T360 430V366V276H416Q421 276 434 276T453 276T469 277T486 279T501 282T517 287T529 294T542 305Q561 324 561 375Q561 424 545 444T482 472Q478 473 427 474Q415 474 403 474T384 474L376 473\",175:\"69 544V590H430V544H69\",176:\"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628\",177:\"56 320T56 333T70 353H369V502Q369 651 371 655Q376 666 388 666Q402 666 405 654T409 596V500V353H707Q722 345 722 333Q722 320 707 313H409V40H707Q722 32 722 20T707 0H70Q56 7 56 20T70 40H369V313H70Q56 320 56 333\",180:\"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699\",183:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250\",215:\"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29\",240:\"75 566V604Q75 624 79 629T102 635Q124 635 127 629T131 588L133 550L191 588L249 628L231 635Q176 654 124 657Q116 657 106 658L95 659Q94 661 94 687T95 715Q99 717 113 717Q195 717 282 679L309 668L331 681Q351 697 391 721Q428 748 435 748Q437 749 446 749Q470 749 473 746Q478 744 478 681V621Q466 615 456 615Q435 615 424 624L422 661V699L382 675L344 648Q353 639 366 630Q480 538 504 413Q509 393 509 333V313Q509 284 507 257T495 184T466 102T413 33T329 -16Q311 -21 275 -21Q226 -21 195 -10Q150 7 110 50T53 141Q42 179 42 227Q42 332 101 403T245 474Q282 474 314 461T359 436T380 415Q386 405 389 408Q389 426 378 475Q368 505 355 529T329 567T306 590T288 603L282 606L120 501Q116 500 102 500Q84 500 75 506V566ZM388 225Q388 376 309 410Q299 416 273 419Q216 419 191 390Q174 371 168 342T162 218Q162 112 184 79Q212 39 273 39Q312 39 342 62T380 121Q388 159 388 225\",247:\"318 466Q318 500 339 518T386 537Q418 537 438 517T458 466Q458 438 440 417T388 396Q355 396 337 417T318 466ZM56 237T56 250T70 270H706Q721 262 721 250T706 230H70Q56 237 56 250ZM318 34Q318 68 339 86T386 105Q418 105 438 85T458 34Q458 6 440 -15T388 -36Q355 -36 337 -15T318 34\",305:\"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",567:\"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",697:\"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43\",710:\"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560\",711:\"114 611L127 630L136 644Q138 644 193 612Q248 581 250 581L306 612Q361 644 363 644L385 611L318 562L249 513L114 611\",713:\"69 544V590H430V544H69\",714:\"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699\",715:\"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655\",728:\"250 515Q179 515 138 565T92 683V694H129V689Q129 688 129 683T130 675Q137 631 169 599T248 567Q304 567 337 608T370 689V694H407V683Q403 617 361 566T250 515\",729:\"190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609\",730:\"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628\",732:\"179 601Q164 601 151 595T131 584T111 565L97 577L83 588Q83 589 95 603T121 633T142 654Q165 668 187 668T253 650T320 632Q335 632 348 638T368 649T388 668L402 656L416 645Q375 586 344 572Q330 565 313 565Q292 565 248 583T179 601\",768:\"-394 655Q-394 671 -381 685T-350 699Q-334 699 -323 688Q-310 671 -278 629T-225 561T-205 533T-218 519L-233 505L-304 563Q-381 626 -387 634Q-394 643 -394 655\",769:\"-151 699Q-133 699 -120 686T-107 656Q-107 651 -108 647T-113 637T-120 627T-133 616T-149 602T-170 585T-197 563L-268 505L-283 519Q-297 533 -296 533Q-296 534 -271 567T-218 636T-187 678L-184 681Q-182 684 -179 686T-172 692T-163 697T-151 699\",770:\"-388 560L-251 694L-243 686Q-113 562 -113 560L-139 531Q-141 532 -197 581L-250 627L-305 580Q-318 569 -331 557T-352 538L-360 532Q-362 530 -375 546L-388 560\",771:\"-321 601Q-336 601 -349 595T-369 584T-389 565L-403 577L-417 588Q-417 589 -405 603T-379 633T-358 654Q-335 668 -313 668T-247 650T-180 632Q-165 632 -152 638T-132 649T-112 668L-98 656L-84 645Q-125 586 -156 572Q-170 565 -187 565Q-208 565 -252 583T-321 601\",772:\"-431 544V590H-70V544H-431\",774:\"-250 515Q-321 515 -362 565T-408 683V694H-371V689Q-371 688 -371 683T-370 675Q-363 631 -331 599T-252 567Q-196 567 -163 608T-130 689V694H-93V683Q-97 617 -139 566T-250 515\",775:\"-310 609Q-310 637 -292 653T-248 669Q-225 667 -208 652T-191 609Q-191 579 -208 564T-250 549Q-275 549 -292 564T-310 609\",776:\"-405 612Q-405 633 -388 651T-347 669T-307 652T-290 612Q-290 588 -306 571T-348 554L-373 560Q-405 577 -405 612ZM-211 611Q-211 634 -196 649T-165 668Q-164 668 -160 668T-154 669Q-131 669 -114 652T-96 612T-113 572T-154 554Q-177 554 -194 570T-211 611\",778:\"-353 628Q-353 669 -321 692T-256 715Q-202 715 -175 689T-148 629Q-148 592 -177 567T-251 542Q-298 542 -325 567T-353 628ZM-187 628Q-187 660 -200 669T-241 678H-247Q-252 678 -258 678T-266 679Q-283 679 -293 674T-308 659T-312 644T-313 629Q-313 600 -302 590Q-290 579 -250 579H-235Q-221 579 -212 581T-195 595T-187 628\",779:\"-292 701Q-278 701 -262 690T-246 658Q-246 649 -250 641Q-252 637 -297 574T-344 510L-378 528Q-378 530 -355 598T-327 676Q-316 701 -292 701ZM-126 701Q-112 701 -96 690T-80 658Q-80 649 -84 641Q-86 637 -131 574T-178 510L-212 528Q-212 530 -189 598T-161 676Q-150 701 -126 701\",780:\"-386 611L-373 630L-364 644Q-362 644 -307 612Q-252 581 -250 581L-194 612Q-139 644 -137 644L-115 611L-182 562L-251 513L-386 611\",824:\"-612 -215T-619 -215T-631 -212T-637 -204T-639 -197Q-639 -190 -634 -183Q-621 -157 -400 274T-176 707Q-173 716 -160 716Q-153 716 -148 712T-142 703T-140 696Q-140 691 -372 241T-608 -212Q-612 -215 -619 -215\",913:\"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447\",914:\"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188\",915:\"128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619\",916:\"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344\",917:\"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619\",918:\"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69\",919:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",920:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM610 339Q610 428 590 495T535 598T463 651T384 668Q332 668 289 638T221 566Q168 485 168 339Q168 274 176 235Q189 158 228 105T324 28Q356 16 388 16Q415 16 442 24T501 54T555 111T594 205T610 339ZM223 263V422H263V388H514V422H554V263H514V297H263V263H223\",921:\"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328\",922:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",923:\"320 708Q326 716 340 716H348H355Q367 716 372 708Q374 706 423 547T523 226T575 62Q581 52 591 50T634 46H661V0H653Q644 3 532 3Q411 3 390 0H379V46H392Q464 46 464 65Q463 70 390 305T316 539L246 316Q177 95 177 84Q177 72 198 59T248 46H253V0H245Q230 3 130 3Q47 3 38 0H32V46H45Q112 51 127 91Q128 92 224 399T320 708\",924:\"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622\",925:\"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42\",926:\"47 509L55 676Q55 677 333 677T611 676L619 509Q619 508 599 508T579 510Q579 529 575 557T564 589Q550 594 333 594T102 589Q95 586 91 558T87 510Q87 508 67 508T47 509ZM139 260V445H179V394H487V445H527V260H487V311H179V260H139ZM50 0L42 180H62Q82 180 82 178Q82 133 89 105Q92 93 95 90T108 86Q137 83 333 83Q530 83 558 86Q568 87 571 90T577 105Q584 133 584 178Q584 180 604 180H624L616 0H50\",927:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647\",928:\"128 619Q121 626 117 628T101 631T58 634H25V680H724V634H691Q651 633 640 631T622 619V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V634H232V348L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V619\",929:\"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488\",931:\"666 247Q664 244 652 126T638 4V0H351Q131 0 95 0T57 5V6Q54 12 57 17L73 36Q89 54 121 90T182 159L305 299L56 644L55 658Q55 677 60 681Q63 683 351 683H638V679Q640 674 652 564T666 447V443H626V447Q618 505 604 543T559 605Q529 626 478 631T333 637H294H189L293 494Q314 465 345 422Q400 346 400 340Q400 338 399 337L154 57Q407 57 428 58Q476 60 508 68T551 83T575 103Q595 125 608 162T624 225L626 251H666V247\",932:\"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443\",933:\"55 551Q55 604 91 654T194 705Q240 705 277 681T334 624T367 556T385 498L389 474L392 488Q394 501 400 521T414 566T438 615T473 659T521 692T584 705Q620 705 648 689T691 647T714 597T722 551Q722 540 719 538T699 536Q680 536 677 541Q677 542 677 544T676 548Q676 576 650 596T588 616H582Q538 616 505 582Q466 543 454 477T441 318Q441 301 441 269T442 222V61Q448 55 452 53T478 48T542 46H569V0H557Q533 3 389 3T221 0H209V46H236Q256 46 270 46T295 47T311 48T322 51T328 54T332 57T337 61V209Q337 383 333 415Q313 616 189 616Q154 616 128 597T101 548Q101 540 97 538T78 536Q63 536 59 538T55 551\",934:\"312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415\",935:\"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270\",936:\"340 622Q338 623 335 625T331 629T325 631T314 634T298 635T274 636T239 637H212V683H224Q248 680 389 680T554 683H566V637H539Q479 637 464 635T439 622L438 407Q438 192 439 192Q443 193 449 195T474 207T507 232T536 276T557 344Q560 365 562 417T573 493Q587 536 620 544Q627 546 671 546H715L722 540V515Q714 509 708 509Q680 505 671 476T658 392T644 307Q599 177 451 153L438 151V106L439 61Q446 54 451 52T476 48T539 46H566V0H554Q530 3 389 3T224 0H212V46H239Q259 46 273 46T298 47T314 48T325 51T331 54T335 57T340 61V151Q126 178 117 406Q115 503 69 509Q55 509 55 526Q55 541 59 543T86 546H107H120Q150 546 161 543T184 528Q198 514 204 493Q212 472 213 420T226 316T272 230Q287 216 303 207T330 194L339 192Q340 192 340 407V622\",937:\"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454\",8192:\"\",8193:\"\",8194:\"\",8195:\"\",8196:\"\",8197:\"\",8198:\"\",8201:\"\",8202:\"\",8203:\"\",8204:\"\",8211:\"0 248V285H499V248H0\",8212:\"0 248V285H999V248H0\",8213:\"0 248V285H999V248H0\",8214:\"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739\",8215:\"0 -62V-25H499V-62H0\",8216:\"64 494Q64 548 86 597T131 670T160 694Q163 694 172 685T182 672Q182 669 170 656T144 625T116 573T101 501Q101 489 102 489T107 491T120 497T138 500Q163 500 180 483T198 440T181 397T139 379Q110 379 87 405T64 494\",8217:\"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634\",8220:\"128 494Q128 528 137 560T158 616T185 658T209 685T223 694T236 685T245 670Q244 668 231 654T204 622T178 571T164 501Q164 489 165 489T170 491T183 497T201 500Q226 500 244 483T262 440T245 397T202 379Q173 379 151 405T128 494ZM332 494Q332 528 341 560T362 616T389 658T413 685T427 694T439 685T449 672Q449 669 437 656T411 625T383 573T368 501Q368 489 369 489T374 491T387 497T405 500Q430 500 448 483T466 440T449 397T406 379Q377 379 355 405T332 494\",8221:\"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634\",8224:\"182 675Q195 705 222 705Q234 705 243 700T253 691T263 675L262 655Q262 620 252 549T240 454V449Q250 451 288 461T346 472T377 461T389 431Q389 417 379 404T346 390Q327 390 288 401T243 412H240V405Q245 367 250 339T258 301T261 274T263 225Q263 124 255 -41T239 -213Q236 -216 222 -216H217Q206 -216 204 -212T200 -186Q199 -175 199 -168Q181 38 181 225Q181 265 182 280T191 327T204 405V412H201Q196 412 157 401T98 390Q76 390 66 403T55 431T65 458T98 472Q116 472 155 462T205 449Q204 452 204 460T201 490T193 547Q182 619 182 655V675\",8225:\"181 658Q181 705 222 705T263 658Q263 633 252 572T240 497Q240 496 241 496Q243 496 285 507T345 519Q365 519 376 508T388 478Q388 466 384 458T375 447T361 438H344Q318 438 282 448T241 459Q240 458 240 456Q240 449 251 384T263 297Q263 278 255 267T238 253T222 250T206 252T190 266T181 297Q181 323 192 383T204 458Q204 459 203 459Q198 459 162 449T101 438H84Q74 443 70 446T61 457T56 478Q56 497 67 508T99 519Q117 519 159 508T203 496Q204 496 204 499Q204 507 193 572T181 658ZM181 202Q181 249 222 249T263 202Q263 185 259 161T249 103T240 48V41H243Q248 41 287 52T346 63T377 52T389 22Q389 8 379 -5T346 -19Q327 -19 288 -8T243 3H240V-4Q243 -24 249 -58T259 -117T263 -158Q263 -177 255 -188T238 -202T222 -205T206 -203T190 -189T181 -158Q181 -141 185 -117T195 -59T204 -4V3H201Q196 3 157 -8T98 -19Q76 -19 66 -6T55 22T65 49T98 63Q117 63 156 52T201 41H204V48Q201 68 195 102T185 161T181 202\",8226:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251\",8230:\"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60\",8242:\"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43\",8245:\"12 501Q12 527 31 542T63 558Q73 560 77 560Q114 560 128 528Q133 518 188 293T244 61Q244 56 223 50T195 43Q192 43 190 45T102 263T14 486Q12 496 12 501\",8254:\"69 544V590H430V544H69\",8260:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8288:\"\",8289:\"\",8290:\"\",8291:\"\",8292:\"\",8407:\"377 694Q377 702 382 708T397 714Q404 714 409 709Q414 705 419 690Q429 653 460 633Q471 626 471 615Q471 606 468 603T454 594Q411 572 379 531Q377 529 374 525T369 519T364 517T357 516Q350 516 344 521T337 536Q337 555 384 595H213L42 596Q29 605 29 615Q29 622 42 635H401Q377 673 377 694\",8450:\"684 131Q684 125 672 109T633 71T573 29T489 -5T386 -19Q330 -19 276 -3T174 46T91 134T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q212 547 212 336Q212 249 233 179Q274 30 405 30Q533 30 641 130Q658 147 666 147Q671 147 677 143T684 131ZM250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q89 213 113 169T164 101T217 61T260 39L277 34Q270 41 264 48Q199 111 181 254Q178 281 178 344T181 434Q200 559 250 625ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565\",8459:\"331 505Q331 519 382 574T472 629H480Q512 629 529 614T547 576Q547 555 534 532T520 504Q520 493 549 493Q590 493 623 506T668 533L681 546Q731 600 772 641T832 700T852 717Q857 717 860 711T865 697L866 690Q866 688 813 617T708 475T656 403Q682 403 714 404H771L780 416Q1004 707 1167 707Q1209 707 1225 689T1241 646Q1241 604 1209 547T1118 447Q1081 422 1034 405T952 382T888 374T857 370H852L826 334Q733 204 708 144Q691 104 691 76Q691 29 748 29Q768 31 791 48T831 83T862 122T881 146Q883 148 900 148H917Q921 143 921 140T914 127Q810 -8 723 -8Q611 -4 611 100Q611 142 631 191T676 275T721 337T742 367Q716 367 685 366H628L620 355Q618 352 558 268Q486 168 461 141Q405 79 339 34T215 -28Q188 -36 153 -36Q86 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 60Q67 28 99 14T170 0Q214 0 272 47T419 224L505 340L518 357Q513 357 504 356T467 347T415 330T360 300T308 253Q296 238 295 237H278H274Q256 237 256 243Q256 248 263 256Q291 294 330 321T407 362T476 382T530 393T552 398Q556 402 573 423T600 454Q602 457 604 460T608 465L610 467Q565 455 532 455Q465 455 449 483Q447 487 447 498Q447 513 463 538T479 579Q479 593 463 593Q436 593 385 519Q374 504 371 502T360 499H353H349Q331 499 331 505ZM1195 634Q1195 643 1195 648T1185 662T1157 671Q1130 671 1092 644T1019 579T952 502T901 436L882 409L891 410Q900 411 913 412T934 415Q1081 439 1144 520Q1195 590 1195 634\",8460:\"11 -16L1 0Q7 6 25 27T57 62T91 88T128 101Q159 99 195 66L203 59L211 67Q239 95 239 133Q239 158 210 213T152 330T123 430Q123 477 173 536T269 630T320 666Q376 610 440 606H443Q457 606 466 611T519 647L542 664Q543 664 543 654V643L522 622Q434 537 403 537Q388 537 366 543T329 555T293 570T270 580L261 585L253 574Q206 517 206 475Q206 452 218 416T242 356L255 331Q256 331 270 345T324 391T421 459L437 468H453Q545 463 608 421L618 415L623 392Q644 307 644 233Q644 97 612 9Q604 -10 601 -15T581 -35Q505 -104 467 -124Q446 -133 431 -133Q414 -132 399 -126T376 -115T368 -107Q368 -106 392 -75L415 -43Q432 -67 444 -73T472 -79H474Q479 -79 484 -78T501 -69T521 -50T538 -13T551 46Q558 97 558 180Q558 232 557 245Q553 277 547 300T528 349T488 389T424 404Q344 404 276 295Q272 288 273 285Q300 216 300 168Q300 161 300 156T298 145T297 137T293 129T289 123T283 116T277 107Q212 23 178 -13L166 -26L149 -9Q108 32 81 32Q63 32 21 -7L11 -16\",8461:\"14 666Q14 675 26 683H344L351 679Q361 665 351 655Q344 648 317 648Q287 645 282 641Q270 637 269 623T266 497V370H511V497Q511 519 510 553Q509 615 507 626T496 641H495Q489 645 459 648Q420 648 420 665Q420 672 426 679L433 683H751Q762 676 762 666Q762 648 724 648Q684 645 677 632Q675 626 675 341Q675 57 677 52Q684 38 724 35Q762 35 762 16Q762 6 751 -1H433L426 3Q420 10 420 17Q420 35 459 35Q501 38 506 52Q511 64 511 190V323H266V190Q266 60 271 52Q276 38 317 35Q342 35 351 28Q360 17 351 3L344 -1H26Q14 5 14 16Q14 35 53 35Q94 38 99 52Q104 60 104 341T99 632Q93 645 53 648Q14 648 14 666ZM233 341V553Q233 635 239 648H131Q134 641 135 638T137 603T139 517T139 341Q139 131 138 89T132 37Q131 36 131 35H239Q233 47 233 129V341ZM639 341V489Q639 548 639 576T640 620T642 639T646 648H537L542 639Q546 625 546 341Q546 130 545 88T538 37Q537 36 537 35H646Q643 41 643 42T641 55T639 84T639 140V341\",8462:\"137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683\",8463:\"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150\",8464:\"829 148Q845 148 845 143T841 130T823 109T788 83T730 54T644 22Q637 20 634 19T627 16T622 13T618 10T612 3T604 -6Q510 -112 396 -203T201 -312Q190 -314 171 -314H166Q156 -314 147 -312T123 -304T101 -283T92 -245Q92 -203 117 -160T175 -93Q214 -65 280 -41T390 -6T509 22L532 27L547 47Q673 219 673 225L665 228Q657 231 648 235T627 249T606 270T591 300T584 341Q584 389 614 447T686 544Q735 588 799 615T959 667T1108 713Q1118 717 1119 717Q1125 717 1129 705T1133 689Q1133 686 1115 673Q1051 627 1001 579T918 481T867 403T828 328T805 277Q802 271 801 267T798 261T798 259Q849 270 900 317Q956 371 956 421Q956 438 953 457T950 480Q950 481 950 482L951 484Q953 487 966 492T985 498Q989 498 994 473Q1000 441 1000 423Q1000 362 934 302T790 223L775 220L767 207Q757 191 731 158T685 98T662 63Q662 61 690 70T755 99T811 142L816 148H829ZM646 332Q646 308 659 291T685 268L698 263L735 320Q828 465 865 511Q923 582 1003 643L1005 645Q1004 645 924 620Q775 572 716 492Q646 401 646 332ZM184 -278Q233 -278 311 -212T444 -80L498 -15H496Q468 -20 424 -30T293 -70T174 -133Q167 -140 158 -153T138 -190T127 -232Q127 -278 184 -278\",8465:\"190 601Q161 601 137 587T97 553T71 512T55 477T48 463Q44 465 39 468L30 473L35 488Q73 594 106 636T199 685Q200 686 211 686Q250 686 326 652T417 617Q435 617 455 626T497 652T522 670Q532 660 532 654Q469 591 390 550L378 543L343 556Q223 601 190 601ZM378 208Q378 249 369 318T360 424Q360 430 360 439T361 451L362 462Q416 526 482 571L495 580L503 577L511 575L499 562Q442 502 442 465Q442 436 452 368T462 246Q462 169 442 128T385 56Q292 -26 195 -26Q150 -26 104 14L96 21L43 -16Q43 -15 43 -14T41 -10T38 0L48 13Q76 50 123 97L150 125Q154 131 159 131Q166 131 171 116T182 81T193 53Q199 43 216 33T261 22Q307 22 344 68Q378 113 378 208\",8466:\"572 704Q607 704 607 693Q607 681 590 664H588Q586 664 584 664T578 663Q504 658 434 592T363 457Q363 426 386 401Q417 371 481 361Q490 360 527 360H562Q565 363 595 404T666 494T755 596T854 682T945 717Q986 717 1010 696T1035 637Q1035 593 996 531T873 414Q809 378 753 360T674 338T651 333Q650 333 633 308T588 245T544 185Q498 126 426 78L413 68H414Q498 47 575 47Q626 47 676 74T755 139L762 148H779H783Q802 148 802 142Q802 137 795 129Q760 81 691 33T544 -16Q470 -16 366 20L341 29L331 24Q239 -17 155 -17H141Q90 -17 61 -12T23 1T14 22Q14 44 39 65T103 95Q126 101 180 101Q224 101 258 98T309 90T330 86Q332 86 353 103T389 135Q401 146 412 158T431 179T450 203T466 225T485 252T505 280L535 322H509Q391 322 340 362T289 452Q289 495 321 547T396 630Q438 665 486 684T572 704ZM978 635Q978 644 977 650T973 661T968 668T961 673T954 676T946 678T938 680Q929 680 925 677Q893 659 795 531T682 377Q683 377 711 385T755 401T801 421T856 453T906 495Q927 516 952 557T978 635ZM274 50Q274 51 258 54T216 61T166 65Q160 65 151 65T140 64Q115 58 102 48T88 31Q88 20 159 20Q191 20 219 27T261 42L274 50\",8467:\"345 104T349 104T361 95T369 80T352 59Q268 -20 206 -20Q170 -20 146 3T113 53T99 104L94 129Q94 130 79 116T48 86T28 70Q22 70 15 79T7 94Q7 98 12 103T58 147L91 179V185Q91 186 91 191T92 200Q92 282 128 400T223 612T336 705Q397 705 397 636V627Q397 453 194 233Q185 223 180 218T174 211T171 208T165 201L163 186Q159 142 159 123Q159 17 208 17Q228 17 253 30T293 56T335 94Q345 104 349 104ZM360 634Q360 655 354 661T336 668Q328 668 322 666T302 645T272 592Q252 547 229 467T192 330L179 273Q179 272 186 280T204 300T221 322Q327 453 355 590Q360 612 360 634\",8469:\"20 664Q20 666 31 683H142Q256 683 258 681Q259 680 279 653T342 572T422 468L582 259V425Q582 451 582 490T583 541Q583 611 573 628T522 648Q500 648 493 654Q484 665 493 679L500 683H691Q702 676 702 666Q702 657 698 652Q688 648 680 648Q633 648 627 612Q624 601 624 294V-8Q616 -20 607 -20Q601 -20 596 -15Q593 -13 371 270L156 548L153 319Q153 284 153 234T152 167Q152 103 156 78T172 44T213 34Q236 34 242 28Q253 17 242 3L236 -1H36Q24 6 24 16Q24 34 56 34Q58 35 69 36T86 40T100 50T109 72Q111 83 111 345V603L96 619Q72 643 44 648Q20 648 20 664ZM413 419L240 648H120L136 628Q137 626 361 341T587 54L589 68Q589 78 589 121V192L413 419\",8472:\"300 74Q300 133 338 133Q350 133 356 126T363 109Q363 88 340 76Q340 71 342 62T358 39T393 26Q435 26 474 67T532 182T551 290Q551 325 535 349T484 373Q430 373 378 348T291 289T228 218T187 157T174 130Q254 30 265 10Q276 -15 276 -41Q276 -101 235 -158T142 -216Q112 -216 90 -195T67 -118Q67 -40 104 64L110 81Q81 118 81 174Q81 268 134 360T247 453Q252 453 255 451T258 447L259 445Q259 432 253 420Q251 416 242 416Q209 411 176 341T142 203Q142 193 143 184T146 170T149 165L158 180Q215 280 303 345T485 410Q548 410 586 368T625 255Q625 157 553 74T389 -10H383Q349 -10 325 14Q302 37 300 74ZM105 -123Q105 -134 106 -141T110 -158T122 -173T145 -178Q155 -178 160 -176Q184 -163 199 -132T214 -73Q214 -69 214 -66T213 -59T212 -53T209 -47T205 -41T199 -33T193 -25T184 -14T174 -1L165 10Q156 22 148 32L139 43Q138 43 130 15T113 -54T105 -123\",8473:\"16 666Q16 675 28 683H195Q334 683 370 682T437 672Q511 657 554 611T597 495Q597 343 404 309Q402 308 401 308Q381 303 319 303H261V181Q261 157 262 120Q262 60 267 50T304 36Q310 35 313 35Q352 35 352 17Q352 10 346 3L339 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM235 35Q228 46 227 84Q226 129 226 337V621L230 635L237 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H235ZM301 341H313Q339 341 354 344T389 362T417 410T426 498Q426 586 401 616T322 647Q301 647 293 643Q271 637 264 621Q261 617 261 479V341H301ZM429 350Q431 350 443 353T476 367T515 391T548 432T562 490Q562 550 524 592Q507 607 484 619Q481 621 448 635L433 639L439 621Q462 578 462 506Q462 448 454 413T437 366T428 350H429\",8474:\"480 -10Q480 -13 486 -24T507 -50T541 -80T588 -104T648 -114Q666 -114 688 -110T714 -106Q724 -106 728 -114T729 -130Q723 -145 663 -163T548 -181Q503 -181 463 -169T395 -139T343 -97T307 -56T284 -19L280 -3L262 1Q188 24 131 81Q57 155 37 275Q34 292 34 342T37 410Q58 528 131 601Q179 652 248 676T388 701Q485 701 562 661Q698 595 731 448Q742 410 742 341T731 235Q707 141 646 81Q616 50 575 27T493 -5L480 -10ZM568 342Q568 613 437 659L395 666Q329 666 286 626Q232 570 213 439Q210 408 210 342T213 246Q231 113 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 134 568 342ZM174 341V354Q174 393 175 419T183 484T205 561T246 635L249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 491 69 344Q69 133 231 52Q247 42 247 46Q247 46 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 410 689 467T640 556T588 606T546 630Q532 638 531 638Q530 638 531 635Q563 590 577 543Q602 472 602 341V316Q602 264 599 230T580 144T531 48Q529 44 532 45T546 52Q575 68 596 84T642 128T683 200T706 299Q708 327 708 341ZM391 -17H333Q329 -15 326 -15Q324 -15 324 -17Q324 -21 362 -68Q424 -130 506 -143Q518 -144 544 -144Q569 -144 577 -143L589 -141L575 -139Q544 -127 509 -101T453 -37L442 -19L391 -17\",8475:\"224 266Q185 266 156 286T127 354Q127 419 176 487T282 594Q346 642 433 679T615 717Q732 717 802 680L815 673Q824 680 840 690T860 700Q864 700 867 693T872 680L873 673Q873 668 858 659L845 651L853 642Q887 605 887 561Q887 500 840 439Q790 379 681 336Q693 312 693 292Q692 276 689 263T672 229T653 198T620 152L575 87Q557 57 557 33Q557 24 560 17T566 8L569 5Q546 5 508 25T470 76Q470 83 473 92T545 198T616 310Q616 317 615 318T612 319Q603 319 575 315H560L545 291Q492 201 429 135T277 23Q202 -17 142 -17H130Q50 -17 16 17Q-2 35 -2 57Q-2 95 24 126T88 158Q106 158 116 147T127 121Q127 110 122 102Q116 93 99 84T63 75Q58 75 53 76T47 77T45 75T44 67Q45 52 57 42T88 27T120 21T144 19Q174 19 208 36T267 76T324 134T369 189T406 239Q462 319 504 374T616 503T755 631L770 644Q767 647 753 654T697 670T602 680Q493 680 399 631T247 516Q218 485 193 440T168 359Q168 328 188 316T234 303Q255 303 273 315T304 340T343 389T390 448Q428 490 441 510T456 548Q456 557 458 559Q459 560 476 567T496 575Q505 575 505 558Q505 511 434 412Q429 406 427 403Q397 360 378 343Q342 308 300 287T224 266ZM819 564Q819 595 800 619L784 606Q729 557 692 512T605 387L591 365L610 364Q622 364 631 363T641 361Q643 361 651 363Q725 388 772 449T819 564ZM794 141Q794 123 725 63T612 3Q609 3 612 5Q612 5 615 7Q639 19 678 57T742 131L755 148H772H780Q794 148 794 141ZM588 -3Q590 0 593 0H594L593 -1Q592 -1 590 -2L588 -3\",8476:\"27 496Q31 569 102 627T234 685Q236 685 241 685T251 686Q287 686 318 672T367 638T399 598T418 564L423 550Q424 554 434 567T463 601T505 639T561 671T626 685Q672 685 688 659T710 572Q713 533 721 523T766 513Q781 513 787 514T794 516Q796 512 798 509T801 504T802 501T787 493Q702 461 624 401L607 389Q655 383 688 358L697 352V342Q699 330 699 297Q704 209 710 173T734 103Q751 69 765 69Q769 69 806 83L824 90V74Q823 73 759 24T693 -26Q692 -26 660 32L628 90L629 111Q631 159 631 177Q631 278 614 300Q584 340 523 340Q500 340 467 333T431 325Q429 325 429 322Q428 321 426 308T420 275T410 230T392 178T366 125L358 112L342 99Q306 70 269 38T213 -10T193 -26Q192 -26 163 0T116 26Q82 26 50 -8L42 -16L35 -8L27 0L35 10Q43 21 58 38T104 80T158 106Q179 106 218 65L235 48Q238 48 255 60T295 99T329 158Q352 231 352 359Q352 555 242 614Q210 628 187 628Q140 628 116 600T91 548Q91 522 138 464T185 382V376Q185 345 158 313T103 263L76 246Q74 244 64 253L54 260L65 267Q91 285 100 302Q111 318 111 337Q111 355 69 410T27 496ZM562 628Q504 628 443 507L435 491L436 479Q437 471 437 446Q437 396 432 351L529 389L602 426Q673 462 673 463H672Q644 470 637 483T622 553Q608 628 562 628\",8477:\"17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243\",8484:\"39 -1Q29 9 29 12Q29 23 60 77T219 337L410 648H364Q261 648 210 628Q168 612 142 588T109 545T97 509T88 490Q85 489 80 489Q72 489 61 503L70 588Q72 607 75 628T79 662T81 675Q84 677 88 681Q90 683 341 683H592Q604 673 604 666Q604 662 412 348L221 37Q221 35 301 35Q406 35 446 48Q504 68 543 111T597 212Q602 239 617 239Q624 239 629 234T635 223Q635 215 621 113T604 8L597 1Q595 -1 317 -1H39ZM148 637L166 648H112V632Q111 629 110 622T108 612Q108 608 110 608T116 612T129 623T148 637ZM552 646Q552 648 504 648Q452 648 450 643Q448 639 266 343T77 37Q77 35 128 35H179L366 339L552 646ZM572 35Q581 89 581 97L561 77Q542 59 526 48L508 37L539 35H572\",8486:\"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454\",8487:\"126 584Q119 584 110 539T97 493Q95 490 73 490Q44 490 44 501Q44 515 62 590Q75 672 82 679Q84 684 177 684Q193 684 214 684T241 685Q265 685 271 682T277 664V648Q271 572 229 434T186 231Q186 173 203 132T247 70T302 42T360 33Q391 33 419 42T474 72T517 133T533 231Q533 297 491 437T442 648Q442 675 446 679Q448 684 542 684Q635 684 637 681Q640 678 657 594T675 501Q675 490 646 490Q624 490 622 493Q620 493 609 538T593 584Q591 585 585 585T569 586T551 588H513Q514 586 518 573T538 531T582 453Q647 340 660 277Q663 259 663 232Q663 194 657 177Q652 151 629 112T560 39Q495 -5 424 -19Q403 -22 360 -22Q318 -22 297 -19Q239 -8 193 18T120 74T80 131T62 177Q56 194 56 229Q56 281 74 328T137 453Q160 491 174 518T193 555T201 575T206 588H168Q160 587 150 587T134 586T126 584\",8488:\"148 590Q95 592 91 627V633L160 729H176Q169 713 169 705Q169 670 244 670Q269 670 305 672T357 675Q405 675 432 661T468 609Q469 605 469 596Q469 572 460 540Q433 463 301 372Q325 378 359 378Q431 378 472 350T519 297Q532 249 532 198Q532 115 500 40T442 -57Q335 -139 202 -139Q165 -139 125 -131L112 -129V-100Q112 -49 106 -33T75 -17Q55 -17 31 -35L22 -42L11 -26L22 -18Q94 36 151 36H160Q171 36 178 33T188 27T194 13T196 -5T197 -32Q198 -79 206 -90Q217 -107 251 -107Q336 -107 389 -33T442 155Q442 240 407 274Q362 319 285 319Q236 319 192 298Q188 298 181 309L224 372Q227 373 234 374T246 376T257 379T271 384T285 391T302 402T321 417Q384 471 384 540Q384 562 366 581T306 600Q292 600 233 595T148 590\",8492:\"256 262Q161 262 161 351Q161 408 203 471T289 570Q380 645 475 676T617 707L627 708Q637 708 644 708Q759 708 831 675L844 669L857 677Q892 700 896 700Q902 700 907 685Q907 683 907 681T908 678T909 676T909 673Q909 671 909 670T906 667T903 664T897 660T889 655L878 647L889 636Q928 598 928 548Q928 529 923 510T907 474T886 442T861 412T837 388T815 368T800 355Q847 323 847 270V263Q847 205 806 145Q766 82 695 37T564 -8Q527 -8 506 10T484 58Q484 85 501 117T543 172Q607 226 685 228Q695 228 698 226Q703 220 692 206Q684 194 682 193T665 191Q625 189 595 172T550 133T529 93T522 66Q522 29 576 29Q642 29 705 109Q785 211 785 270Q785 287 779 300T769 316T755 327L740 319Q682 290 634 290Q611 290 592 294H588L565 261Q559 252 544 231T522 201T504 178T481 151T455 123Q394 63 314 18T159 -28Q103 -28 67 -6T31 54Q31 88 57 123T123 158Q144 158 154 146T164 119Q164 102 142 89T100 75Q94 75 87 77T76 80L72 81Q69 78 69 65Q69 35 102 22T175 9Q184 9 198 11Q248 23 300 70T403 187T508 331T636 489T789 629L801 639Q796 642 786 647T732 661T633 670Q592 670 558 665Q481 651 409 613T286 520Q274 507 258 485T222 424T202 354Q202 299 269 299Q282 299 295 301T318 307T339 317T358 329T376 345T391 362T406 380T420 398T433 417T445 435Q496 512 496 547Q496 559 497 560T516 569Q526 574 530 574Q538 574 538 540Q538 414 427 325Q342 262 256 262ZM689 382Q708 382 753 375L765 387Q860 482 860 555Q860 594 839 610L822 592Q794 563 752 511T680 420T651 380Q655 381 660 381Q664 382 689 382ZM697 344Q692 345 681 345H675Q671 345 665 345T655 344T650 344L648 342Q646 339 645 338Q643 333 639 327H653Q670 329 676 330Q706 342 706 343Q702 344 697 344\",8493:\"299 585Q333 609 384 634T470 672L505 685Q506 685 513 662T531 613T548 580Q553 576 563 576Q575 576 605 585Q607 585 607 575V564Q537 532 496 527Q475 542 456 567T427 610T415 627Q410 627 398 618T382 603Q373 588 373 558T386 475T400 399Q400 337 366 303Q343 281 309 266T254 247T226 242L214 257Q214 258 223 260T251 272T287 299Q304 316 304 360Q304 396 289 451T274 532Q274 553 277 561V564H269Q205 558 172 501T139 358Q139 207 226 127T443 46Q448 46 457 46T470 47L485 48L601 106Q602 106 602 93V80Q551 48 517 25T474 -4T460 -13T443 -19Q409 -24 367 -24Q360 -24 351 -24T335 -23T326 -22Q190 -2 125 87T59 319V328Q62 412 96 487L101 500L118 512Q189 563 245 591L266 601L299 585\",8496:\"280 398L279 400Q278 402 277 405T275 413T272 426T271 443Q271 494 302 544T379 629T472 685T553 707H565H573Q630 707 664 689Q718 661 718 604Q718 548 662 492T553 436Q525 436 508 451T490 492Q490 534 531 579T619 630Q632 630 632 623Q632 619 624 606Q614 593 602 592T578 580Q566 568 549 541T532 497Q532 474 565 474Q577 474 587 476Q600 481 611 489Q630 503 651 535T672 596Q672 660 553 660H548Q494 660 450 616Q421 587 384 531T343 439Q341 420 344 415H345Q346 415 352 415T369 417T391 418Q421 418 440 412T466 398T473 382Q473 367 452 353T398 339Q370 339 348 345T315 359L304 366Q297 365 284 360T234 321T163 234Q120 160 120 117Q120 83 149 57T252 30Q311 30 357 60Q386 79 414 114T452 179Q454 186 454 200Q454 230 415 242Q401 246 373 246Q353 246 347 244Q328 236 313 219T288 184T274 149T265 121T261 109Q260 107 247 102T230 97Q223 97 223 105Q223 148 271 216T386 284Q446 284 483 260T520 195Q520 121 427 57T239 -8Q192 -8 152 2T79 46T46 133Q46 212 107 285T269 394L280 398ZM427 376Q427 377 402 380Q386 380 386 379L425 375L427 376\",8497:\"258 428Q258 489 322 562T482 685T661 735Q726 735 824 693T977 651Q990 651 990 644Q990 639 971 612T948 581Q947 580 938 580Q878 580 784 621T617 663Q544 663 480 635T379 568T320 492T299 431Q299 387 362 387Q404 387 438 402T493 438T527 486T546 531T551 563Q551 569 550 575T549 584T549 590Q551 593 563 602T579 611Q584 611 592 605T608 584T616 548Q616 513 595 477T554 423Q518 392 464 372T349 351Q258 351 258 428ZM324 187T305 187T286 196Q286 202 301 217Q327 242 383 262T484 290L527 297L567 356Q624 441 643 467T688 521Q715 550 752 581T795 613T804 603T808 587T778 547T702 444T626 300H637Q663 302 685 306L697 308L703 317Q745 376 792 400Q806 406 818 406Q849 406 849 375Q847 355 831 338T797 312T763 296L747 290Q744 289 735 266T724 241Q722 240 702 232T664 217T645 210Q638 210 638 218Q638 224 653 246T669 270Q669 271 668 271Q663 270 624 264L607 263Q570 199 529 152Q513 133 484 106T409 45T305 -13T193 -36Q109 -36 74 -10T39 50Q39 86 64 121T128 158Q171 158 171 121Q171 97 141 83Q125 75 107 75Q93 75 80 83Q76 71 76 62Q76 29 117 15T207 0Q324 0 494 248L501 258H495Q368 239 330 195Q324 187 305 187ZM775 335Q806 358 806 368Q805 369 804 369Q800 369 791 360Q774 336 775 335\",8498:\"457 681Q471 695 477 695Q485 695 497 681V12L484 -1H68Q55 14 55 19T68 39H457V328H215L211 335Q198 346 211 359L217 368H457V681\",8499:\"112 -7Q86 -7 58 6T30 48T54 103T113 130Q129 130 141 121T153 94Q153 71 132 59T90 47H80Q95 30 133 30Q180 30 228 63T311 137T402 249T500 361Q566 425 703 529T910 693Q942 721 945 721T958 716T970 709Q974 704 964 691Q961 688 905 622T847 554L595 181Q553 121 527 77T496 19L492 5Q497 5 531 46Q579 98 685 224T850 409L972 524Q994 543 1004 556Q1012 567 1097 643T1186 720Q1194 720 1206 715T1215 703Q1215 701 1191 671T1133 599T1080 530Q1036 461 983 357T862 152Q802 64 799 17Q799 7 800 5T811 2Q836 2 882 37T969 126Q972 130 974 134T978 138T983 139T996 140H1012Q1018 134 1018 132Q1018 122 981 83T889 4T795 -35Q761 -35 745 -12T728 48Q728 122 781 190Q833 269 890 370L927 434L914 422Q848 360 752 245Q643 117 582 51T498 -33T461 -50Q424 -48 424 -4Q424 84 481 172L714 495Q591 406 523 333Q507 316 430 226T313 95Q263 48 221 24T162 -4T120 -7H112\",8501:\"55 613Q55 643 61 663T74 688T85 694Q94 694 94 681Q98 632 134 588L412 285Q416 311 430 397T447 509V519L438 526Q407 554 398 571T388 617T394 664T407 688T418 694Q425 694 427 684Q429 675 454 635T488 586Q490 584 496 579T513 563T537 540Q555 516 555 487Q555 460 549 441T537 416T528 409Q519 409 517 415T513 435T503 463Q492 481 490 481Q454 264 454 246Q454 237 479 212T529 152T555 79Q555 32 538 9Q531 1 524 1Q516 1 516 13Q512 62 476 106Q468 115 337 258T195 412L193 406Q191 401 189 394T183 377T176 352T171 322T167 284T165 240Q165 224 166 220Q171 199 211 152T252 70Q252 45 235 29T203 8T175 1Q170 0 115 0H79Q60 0 58 3T55 20Q55 31 58 34Q60 37 76 37Q112 39 126 46T140 70Q140 96 112 148T83 236Q83 281 102 334T140 419T159 452Q55 556 55 613\",8502:\"56 706V726Q56 763 76 763Q83 763 87 759T98 741Q108 726 116 721L127 717L340 715Q547 712 564 709Q575 705 587 692Q599 680 605 663L609 650V137H676Q687 124 687 115Q687 110 678 100T622 43L558 -21H-9Q-22 -6 -22 -1T-13 14T42 72L107 137H569V339Q569 541 567 546Q558 555 554 557L545 563H329Q118 566 101 569Q90 573 78 586Q54 610 54 661Q54 670 56 706\",8503:\"56 750Q68 764 76 764Q88 764 97 743T125 717Q131 715 240 715T358 713Q421 691 421 640Q421 608 399 588T358 566Q353 566 352 565T351 557L356 526Q356 488 379 346T402 97Q400 21 385 -12Q366 -43 351 -43Q335 -43 329 -10Q316 40 316 64Q316 67 315 67Q313 67 269 26L222 -21H-9Q-22 -7 -22 -1Q-22 4 -14 14T42 73L107 137H311V564H211H164Q115 564 93 573T60 615Q56 630 56 690V750\",8504:\"62 757Q69 764 75 764Q87 764 97 741Q102 731 105 728T117 721L129 715H349Q569 715 580 710Q618 701 635 670Q640 661 640 639Q640 609 622 590Q617 583 604 575T580 566H573V553Q575 547 576 531T582 469T600 353Q624 205 624 104Q624 46 617 17T591 -32Q581 -43 573 -43Q550 -43 540 44Q535 73 533 319V564H322Q117 566 100 570Q90 573 77 586Q54 609 54 663Q54 689 55 706Q55 738 56 745T62 757\",8513:\"239 665Q194 665 154 653T90 629T66 617Q59 617 53 623T46 637Q46 652 66 659Q129 695 197 701Q218 705 248 705Q293 705 335 693Q371 684 435 644Q543 562 573 417Q577 393 577 341Q577 290 573 266Q531 83 384 10Q346 -9 315 -16T234 -23H206Q202 -23 183 -23T152 -21T120 -18T88 -10T63 3T44 24L37 35V297L50 310H235Q248 297 248 290Q248 285 235 270H77V103Q77 88 77 80T77 63T78 50T80 43T82 38T85 35T89 32T95 30Q126 20 206 17Q289 17 330 30Q407 55 460 120T533 275Q538 305 538 342Q538 486 452 575T239 665\",8592:\"944 261T944 250T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H929Q944 261 944 250\",8593:\"27 414Q17 414 17 433Q17 437 17 439T17 444T19 447T20 450T22 452T26 453T30 454T36 456Q80 467 120 494T180 549Q227 607 238 678Q240 694 251 694Q259 694 261 684Q261 677 265 659T284 608T320 549Q340 525 363 507T405 479T440 463T467 455T479 451Q483 447 483 433Q483 413 472 413Q467 413 458 416Q342 448 277 545L270 555V-179Q262 -193 252 -193H250H248Q236 -193 230 -179V555L223 545Q192 499 146 467T70 424T27 414\",8594:\"56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250\",8595:\"473 86Q483 86 483 67Q483 63 483 61T483 56T481 53T480 50T478 48T474 47T470 46T464 44Q428 35 391 14T316 -55T264 -168Q264 -170 263 -173T262 -180T261 -184Q259 -194 251 -194Q242 -194 238 -176T221 -121T180 -49Q169 -34 155 -21T125 2T95 20T67 33T44 42T27 47L21 49Q17 53 17 67Q17 87 28 87Q33 87 42 84Q158 52 223 -45L230 -55V312Q230 391 230 482T229 591Q229 662 231 676T243 693Q244 694 251 694Q264 692 270 679V-55L277 -45Q307 1 353 33T430 76T473 86\",8596:\"263 479Q267 501 271 506T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H835Q729 349 696 475Q691 493 691 500Q691 511 711 511Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q144 292 194 349T263 479\",8597:\"27 492Q17 492 17 511Q17 515 17 517T17 522T19 525T20 528T22 530T26 531T30 532T36 534Q80 545 120 572T180 627Q210 664 223 701T238 755T250 772T261 762Q261 757 264 741T282 691T319 628Q352 589 390 566T454 536L479 529Q483 525 483 511Q483 491 472 491Q467 491 458 494Q342 526 277 623L270 633V-133L277 -123Q307 -77 353 -45T430 -2T473 8Q483 8 483 -11Q483 -15 483 -17T483 -22T481 -25T480 -28T478 -30T474 -31T470 -32T464 -34Q407 -49 364 -84T300 -157T270 -223T261 -262Q259 -272 250 -272Q242 -272 239 -255T223 -201T180 -127Q169 -112 155 -99T125 -76T95 -58T67 -45T44 -36T27 -31L21 -29Q17 -25 17 -11Q17 9 28 9Q33 9 42 6Q158 -26 223 -123L230 -133V633L223 623Q192 577 146 545T70 502T27 492\",8598:\"204 662Q257 662 301 676T369 705T394 720Q398 720 407 711T417 697Q417 688 389 671T310 639T212 623Q176 623 153 628Q151 628 221 557T546 232Q942 -164 943 -168Q944 -170 944 -174Q944 -182 938 -188T924 -195Q922 -195 916 -193Q912 -191 517 204Q440 281 326 394T166 553L121 598Q126 589 126 541Q126 438 70 349Q59 332 52 332Q48 332 39 341T29 355Q29 358 38 372T57 407T77 464T86 545Q86 583 78 614T63 663T55 683Q55 693 65 693Q73 693 82 688Q136 662 204 662\",8599:\"582 697Q582 701 591 710T605 720Q607 720 630 706T697 677T795 662Q830 662 863 670T914 686T934 694Q942 694 944 685Q944 680 936 663T921 615T913 545Q913 490 927 446T956 379T970 355Q970 351 961 342T947 332Q940 332 929 349Q874 436 874 541Q874 590 878 598L832 553Q787 508 673 395T482 204Q87 -191 83 -193Q77 -195 75 -195Q67 -195 61 -189T55 -174Q55 -170 56 -168Q58 -164 453 232Q707 487 777 557T847 628Q824 623 787 623Q689 623 599 679Q582 690 582 697\",8600:\"55 675Q55 683 60 689T75 695Q77 695 83 693Q87 691 482 296Q532 246 605 174T717 62T799 -20T859 -80T878 -97Q874 -93 874 -41Q874 64 929 151Q940 168 947 168Q951 168 960 159T970 145Q970 143 956 121T928 54T913 -45Q913 -83 920 -114T936 -163T944 -185Q942 -194 934 -194Q932 -194 914 -186T864 -170T795 -162Q743 -162 698 -176T630 -205T605 -220Q601 -220 592 -211T582 -197Q582 -187 611 -170T691 -138T787 -123Q824 -123 847 -128Q848 -128 778 -57T453 268Q58 664 56 668Q55 670 55 675\",8601:\"126 -41Q126 -92 121 -97Q121 -98 139 -80T200 -20T281 61T394 173T517 296Q909 690 916 693Q922 695 924 695Q932 695 938 689T944 674Q944 670 943 668Q942 664 546 268Q292 13 222 -57T153 -128Q176 -123 212 -123Q310 -123 400 -179Q417 -190 417 -197Q417 -201 408 -210T394 -220Q392 -220 369 -206T302 -177T204 -162Q131 -162 67 -194Q63 -195 59 -192T55 -183Q55 -180 62 -163T78 -115T86 -45Q86 10 72 54T44 120T29 145Q29 149 38 158T52 168Q59 168 70 151Q126 62 126 -41\",8602:\"942 250Q942 244 928 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L735 270H931Q942 257 942 250\",8603:\"54 250Q54 258 66 270H277L488 272L542 350Q596 431 602 435Q604 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H264L66 232Q54 239 54 250\",8606:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H276L285 277Q322 306 349 345T388 417H434Q434 413 424 392T393 338T349 279L340 270H634Q933 270 937 266L938 265Q944 259 944 250T938 235L937 234Q933 230 634 230H340L349 221Q372 196 393 163T424 108T434 83H388Q377 116 350 155T285 223L276 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250\",8608:\"943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H723L714 223Q677 194 650 155T611 83H565Q565 87 575 108T606 162T650 221L659 230H365Q66 230 62 234L61 235Q55 241 55 250T61 265L62 266Q66 270 365 270H659L650 279Q627 304 606 337T575 392T565 417H611Q622 384 649 345T714 277L723 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250\",8610:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H873L882 277Q919 306 946 345T985 417H1031Q1031 413 1021 392T990 338T946 279L937 270V230L946 221Q969 196 990 163T1021 108T1031 83H985Q974 116 947 155T882 223L873 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250\",8611:\"1054 250Q1006 221 967 177T912 83H889Q866 83 866 84Q866 86 873 103T902 156T952 222L959 230H237L228 223Q191 194 164 155T125 83H79Q79 87 89 108T120 162T164 221L173 230V270L164 279Q141 304 120 337T89 392T79 417H125Q136 384 163 345T228 277L237 270H959L952 278Q924 309 903 344T874 396T866 416Q866 417 889 417H912Q928 367 967 323T1054 250\",8614:\"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H95V155\",8617:\"903 424T903 444T929 464Q976 464 1023 434T1070 347Q1070 316 1055 292T1016 256T971 237T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H926Q929 270 941 271T960 275T978 280T998 290T1015 307Q1030 325 1030 347Q1030 355 1027 364T1014 387T983 411T929 424H928Q903 424 903 444\",8618:\"55 347Q55 380 72 404T113 441T159 458T197 464Q222 464 222 444Q222 429 204 426T157 417T110 387Q95 369 95 347Q95 339 98 330T111 307T142 283T196 270H961Q845 357 818 493Q818 494 818 496T817 499Q817 511 834 511H837Q846 511 849 510T855 506T858 497T861 481T869 456Q891 389 942 336T1061 261Q1070 258 1070 250Q1070 244 1065 241T1041 231T1003 212Q962 186 932 152T887 85T866 35T858 4Q856 -6 853 -8T837 -11Q817 -11 817 0Q817 7 822 25Q854 151 961 230H196Q149 230 102 260T55 347\",8619:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H622V305Q622 356 624 388T635 460T661 521T709 559T785 575Q813 575 833 573T880 561T923 534T952 483T964 405Q964 374 959 350T942 307T918 276T884 255T847 242T804 235T760 231T713 230H662V-27Q654 -41 644 -41H642H640Q628 -41 622 -27V230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250ZM924 403Q924 474 894 505T794 536Q758 536 734 526T696 500T675 453T665 395T662 319V270H699Q826 270 875 295T924 403\",8620:\"35 405Q35 454 48 489T86 542T137 567T195 575Q229 575 251 571T301 554T345 510T370 429Q377 384 377 305V270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q896 221 857 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H377V-27Q369 -41 359 -41H357Q342 -41 337 -25V230H286Q247 231 225 232T169 238T115 255T75 284T45 333T35 405ZM75 406Q75 322 123 296T300 270H337V319Q335 432 317 477T240 534Q232 535 197 535Q140 535 108 507T75 406\",8621:\"57 250Q159 311 200 417H246L242 407Q215 340 159 278L152 270H276L315 310Q354 349 358 351Q366 356 376 351Q378 350 455 273L530 196L606 273Q683 350 686 351Q694 354 703 351Q705 350 782 273L858 196L933 273Q1010 350 1012 351Q1022 356 1030 351Q1034 349 1073 310L1112 270H1236L1229 278Q1173 340 1146 407L1142 417H1188Q1233 306 1331 250Q1231 192 1188 83H1142L1146 93Q1173 160 1229 222L1236 230H1168Q1155 230 1139 230T1119 229Q1112 229 1108 229T1099 231T1092 233T1085 238T1078 245T1068 256T1056 269L1021 304L984 267Q948 230 910 191T867 149Q857 144 848 150Q844 151 770 227T694 304T618 228T540 150Q531 144 521 149Q517 152 479 191T404 267L367 304L332 269Q328 264 320 256T310 246T303 239T296 234T289 231T280 229T269 229Q265 229 249 229T220 230H152L159 222Q215 160 242 93L246 83H223L200 84L195 96Q152 190 57 250\",8622:\"491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272\",8624:\"56 555Q74 567 79 570T107 592T141 625T170 667T198 722H221Q244 722 244 721Q244 718 236 699T207 647T161 587L151 576L291 575H292H293H294H296H297H298H299H300H301H302H304H305H306H307H308H309H310H311H312H314H315H316H317H318H319H320H321H322H323H324H325H327H328H329H330H331H332H333H334H335H336H337H338H339H340H341H342H343H345Q435 574 438 570L439 569L440 568Q444 564 444 287Q444 15 442 12Q436 0 424 0T406 12Q404 15 404 275V535H151L162 523Q187 495 207 462T236 410T244 389H198L193 402Q171 457 131 497T56 555\",8625:\"301 722Q339 618 443 555L437 551Q431 547 422 541T401 526T377 504T352 477T327 443T306 402L301 389H255Q255 392 263 410T291 461T337 523L348 535H95V275Q95 15 93 12Q87 0 75 0T57 12Q55 15 55 287Q55 564 59 568L60 569Q64 573 76 573T208 575L348 576L338 587Q314 613 294 646T264 698T255 721Q255 722 278 722H301\",8630:\"361 210Q373 210 373 182V177Q373 155 370 151T348 139Q303 118 267 84T216 28T201 1Q197 -1 196 -1Q189 -1 184 8Q166 39 143 64T99 104T61 129T32 144T19 150Q17 152 17 179Q17 203 21 208Q28 210 39 206Q106 178 157 135L175 119V126Q179 130 179 155Q182 173 193 201Q228 305 312 374T510 459Q532 461 551 461H567Q678 461 784 386Q835 344 861 301Q902 245 926 173T950 32Q950 15 944 8Q930 -6 917 8Q910 12 910 43Q901 208 801 314T561 421Q453 421 359 359Q300 319 263 258T217 126L216 125Q216 124 216 123T217 122Q219 122 229 131T260 156T301 181Q314 189 336 199T361 210\",8631:\"972 209Q980 209 981 204T982 179Q982 155 979 151T957 139Q915 121 878 86T815 8Q808 -1 803 -1Q801 -1 797 1Q797 6 783 28T732 84T650 139L628 150Q626 152 626 177Q626 201 630 206Q636 210 637 210Q650 210 697 181Q727 166 764 137L784 119L782 132Q767 239 689 318T499 417Q474 421 442 421Q343 421 261 369T130 219Q86 121 86 28Q86 15 79 8Q73 1 66 1T53 8Q46 15 46 30Q46 102 77 192T186 361Q274 443 386 459Q396 460 426 460Q515 460 588 431T703 361T773 271T812 187T822 132Q822 123 825 123Q936 209 972 209\",8634:\"369 543T369 563T397 583Q408 583 440 579L454 577L464 581Q492 592 516 609T552 638T565 650Q604 638 607 637Q606 636 598 628T585 614T570 601T548 584T523 568L510 560L516 558Q522 555 527 553T541 546T559 536T580 523T603 506T626 485Q722 384 722 250Q722 106 622 12T387 -83Q253 -83 155 12T56 250Q56 357 110 433T235 545Q244 550 252 550Q270 550 270 531Q270 522 261 515T238 501T202 477T159 433Q95 352 95 250Q95 131 178 45T388 -42Q511 -42 596 43T682 250Q682 340 636 408T522 511Q495 526 488 526Q488 525 488 525T487 522T485 515L490 506Q505 481 516 451T531 404T535 384L532 385Q529 386 524 387T513 390L491 397L488 408Q472 483 413 542L399 543Q369 543 369 563\",8635:\"170 637L213 650Q270 597 313 581L323 577L337 579Q369 583 380 583Q408 583 408 563T380 543H378L364 542Q305 483 289 408L286 397L264 390Q259 389 254 388T245 385L242 384Q242 387 246 403T261 450T287 506L292 515Q291 519 291 521T290 524T289 526Q284 526 265 517T216 486T160 434T114 354T95 249Q95 132 178 45T388 -42Q513 -42 597 44T682 250Q682 337 638 404T532 506Q529 508 525 510T519 514T515 516T511 519T509 522T508 526T507 531Q507 550 525 550Q533 550 542 545Q569 532 596 511T653 454T702 366T721 250Q721 151 672 74T547 -43T388 -83Q254 -83 155 12T56 250Q56 385 151 485Q164 498 179 509T205 528T228 542T247 551T260 558L267 560L254 568Q215 590 170 637\",8636:\"62 230Q56 236 55 244Q55 252 57 255T69 265Q114 292 151 326T208 391T243 448T265 491T273 509Q276 511 288 511Q304 511 306 505Q309 501 303 484Q293 456 279 430T251 383T223 344T196 313T173 291T156 276L148 270H929Q944 261 944 250T929 230H62\",8637:\"55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256\",8638:\"188 258V694H208L215 682Q246 628 293 594T375 551V528Q375 505 374 505Q369 505 351 510T299 534T237 578L228 587V205Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 258\",8639:\"41 551Q76 559 123 592T201 682L208 694H228V258Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 205V587L179 578Q151 552 117 534T65 511T42 505Q41 505 41 528V551\",8640:\"691 500Q691 511 711 511Q720 511 723 510T730 504T735 490T746 464T768 425Q796 378 835 339T897 285T933 263Q941 258 942 256T944 245T937 230H70Q56 237 56 250T70 270H852Q802 308 762 364T707 455T691 500\",8641:\"56 237T56 250T70 270H937Q944 263 944 256Q944 251 944 250T943 246T940 242T933 238Q794 153 734 7Q729 -7 726 -9T711 -11Q695 -11 693 -5Q690 -1 696 16Q721 84 763 139T852 230H70Q56 237 56 250\",8642:\"190 682Q195 694 208 694T226 683Q228 679 228 296V-87L237 -78Q265 -52 299 -34T351 -11T374 -5Q375 -5 375 -28V-51Q340 -60 293 -92T215 -182L208 -194H188V242Q188 678 190 682\",8643:\"188 295V573Q188 657 189 672T200 692Q206 694 208 694Q221 694 226 683Q228 679 228 242V-194H208L201 -182Q170 -128 123 -94T41 -51V-28Q41 -5 42 -5Q47 -5 65 -10T117 -34T179 -78L188 -87V295\",8644:\"943 500Q895 471 856 427T801 333H778Q755 333 755 334Q755 336 762 353T791 406T841 472L848 480H459Q70 480 67 482Q55 488 55 500T67 518Q70 520 459 520H848L841 528Q813 559 792 594T763 646T755 666Q755 667 778 667H801Q817 617 856 573T943 500ZM56 167Q102 194 141 238T198 333H221Q244 333 244 332Q221 265 161 198L151 187H539Q928 187 930 186Q944 182 944 167Q944 155 934 149Q930 147 541 147H151L160 137Q185 110 205 77T235 24T244 1Q244 0 221 0H199Q158 106 56 167\",8646:\"56 500Q103 527 142 572T199 667H221Q244 667 244 666Q244 664 237 647T208 594T158 528L151 520H539Q928 520 932 518Q944 513 944 500T932 482Q928 480 539 480H151L158 472Q186 441 207 406T236 354T244 334Q244 333 221 333H199Q181 383 142 428T56 500ZM943 167Q835 101 801 0H778Q755 0 755 1T758 9T765 25T771 39Q800 94 839 137L848 147H458Q68 147 66 149Q55 154 55 167Q55 182 69 186Q71 187 460 187H848L838 198Q811 228 791 261T762 314L755 332Q755 333 778 333H801Q841 227 943 167\",8647:\"930 437Q944 426 944 416T934 399Q930 397 540 397H150L159 387Q185 360 205 328T234 277T243 252Q243 237 217 191T159 113L150 103H540Q930 103 934 101Q944 94 944 84Q944 71 930 64L540 63H151Q180 34 203 -2T236 -61L244 -83H198Q178 -31 142 11T66 77L55 83L65 89Q157 145 197 246Q199 250 190 269Q150 359 65 411L55 417L66 423Q106 447 142 489T198 583H244Q202 488 151 437H930\",8648:\"83 551Q190 590 250 694Q251 689 263 671T307 621T380 567Q409 551 416 551Q422 551 447 563T511 608T577 684L582 694Q642 591 749 551V528Q749 505 748 505Q745 505 724 515T669 546T612 590L602 599V-181Q595 -193 585 -193H582H581Q568 -193 565 -183L563 -179L562 209V598L552 589Q517 556 473 531T414 506H412Q411 506 393 514T361 530T324 553T280 589L270 598V-179Q255 -192 250 -193H247Q237 -193 230 -181V599L220 590Q197 567 164 546T110 515T84 505Q83 505 83 528V551\",8649:\"55 416Q55 427 70 437H848Q819 466 796 502T764 561L755 583H801Q821 531 857 489T933 423L944 417L934 411Q843 355 802 254Q800 250 809 231Q849 141 934 89L944 83L933 77Q893 53 857 11T801 -83H755Q797 12 848 63H459L70 64Q55 70 55 84Q55 94 65 101Q69 103 459 103H849L840 113Q806 148 779 196T756 254Q756 255 760 264T770 286T786 315T809 351T840 387L849 397H459Q69 397 65 399Q55 406 55 416\",8650:\"230 681Q240 694 251 694Q260 693 270 680V-98L280 -89Q297 -73 314 -60T348 -38T374 -24T397 -13T412 -6H414Q428 -6 473 -32T552 -89L562 -98V291L563 680Q570 693 582 693Q593 694 602 681V-99L612 -90Q635 -68 668 -47T723 -15T748 -5Q749 -5 749 -28V-51Q642 -91 582 -194L577 -184Q551 -141 512 -108T447 -63T416 -51T385 -63T321 -108T255 -184L250 -194Q189 -89 83 -51V-28Q83 -5 84 -5Q88 -5 109 -15T164 -46T220 -90L230 -99V681\",8651:\"195 504L198 514H221Q244 514 244 512Q244 508 239 490T215 437T171 376L162 367H545Q928 367 932 365Q944 360 944 347T932 329Q928 327 492 327H55V347L67 354Q113 379 146 420T195 504ZM67 171Q70 173 507 173H944V153L932 146Q839 95 804 -4L801 -14H778Q755 -14 755 -12Q768 59 828 124L837 133H454Q71 133 67 135Q55 140 55 153Q55 165 67 171\",8652:\"691 660Q691 671 711 671Q720 671 723 670T730 664T735 650T746 624T768 585Q797 538 836 499T897 445T933 423Q941 418 942 416T944 405T937 390H70Q56 397 56 410T70 430H852Q802 468 762 524T707 615T691 660ZM55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256\",8653:\"397 525Q410 525 414 524T418 516Q418 506 394 467T331 381L319 367H473L624 369L657 445Q674 487 684 507T699 531T709 534Q717 534 722 528T728 516Q728 510 695 434Q689 418 683 402T672 377T668 367H928Q942 355 942 347Q942 341 928 327H791Q651 327 651 325Q649 324 620 251T586 174Q586 172 757 172H928Q942 158 942 152Q942 143 928 132H568L537 54Q510 -9 503 -22T486 -35Q479 -35 473 -29T466 -17T495 61L526 132H319L331 118Q364 81 391 37T418 -17Q418 -23 415 -24T401 -26Q398 -26 397 -26L384 -24L377 -13Q344 49 301 97T218 170T143 210T84 233T55 245Q54 253 59 256T86 267Q281 327 377 512L384 525H397ZM606 325Q606 327 439 327H275Q258 312 179 265L148 249Q228 206 262 181L275 172H544L575 247L606 325\",8654:\"395 -24T395 -19T417 57T440 132H255L266 116Q308 64 340 -6Q342 -17 337 -21Q335 -26 320 -26T302 -19Q302 -15 294 4T265 54T217 117T145 182T49 236Q30 243 33 254Q40 261 49 263Q98 283 142 315T214 379T263 442T293 493T302 519Q305 525 320 525T337 521Q342 516 340 505Q308 435 266 383L255 370L384 367H515Q561 522 569 530Q574 534 580 534Q587 534 594 528T602 516Q602 512 580 441T557 367H651L742 370L731 383Q689 435 657 505Q655 516 660 521Q662 525 677 525T695 519Q695 515 703 496T732 446T780 383T853 317T949 263Q967 258 964 245Q959 240 949 236Q897 215 852 182T779 116T731 52T703 3T695 -19Q692 -26 677 -26T660 -21Q655 -17 657 -6Q670 21 682 42T702 77T717 99T728 114T735 122T739 126T740 130T613 132H482L460 54Q440 -9 433 -23T415 -37Q408 -37 402 -31ZM502 325Q502 327 360 327H217L195 310Q173 291 120 256L111 250Q114 248 143 229T195 190L217 172H335L453 174L502 325ZM886 250Q885 251 865 263T831 286T802 310L780 327H544L535 299Q531 283 511 223L495 174L637 172H780L802 190Q843 225 877 243L886 250\",8655:\"346 174Q348 176 378 249T411 325Q411 327 239 327H68Q55 342 55 347Q55 354 68 367H428L459 445Q487 509 494 521T510 534Q517 534 524 527T531 516Q531 515 502 438L471 367H677L666 381Q631 421 605 463T578 516Q578 522 582 523T599 525H615L619 512Q659 437 714 383T812 309T896 272T942 254Q943 246 938 243T911 232Q718 172 619 -13L615 -24L599 -26Q578 -26 578 -17Q578 -11 587 6T617 53T666 118L677 132H373L339 54Q323 12 313 -8T298 -32T288 -35Q280 -35 275 -29T269 -17Q269 -14 298 57T328 132H68Q55 145 55 152Q55 156 56 158T62 165T68 172H206Q346 172 346 174ZM848 249Q763 297 735 318L722 327H455L422 252L391 174Q391 172 557 172H722L735 181Q773 210 819 234L848 249\",8656:\"944 153Q944 140 929 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H929Q944 359 944 347Q944 336 930 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173H930Q931 172 933 171T936 169T938 167T941 164T942 162T943 158T944 153\",8657:\"228 -179Q227 -180 226 -182T223 -186T221 -189T218 -192T214 -193T208 -194Q196 -194 189 -181L188 125V430L176 419Q122 369 59 338Q46 330 40 330Q38 330 31 337V350Q31 362 33 365T46 374Q60 381 77 390T128 426T190 484T247 567T292 677Q295 688 298 692Q302 694 305 694Q313 694 318 677Q334 619 363 568T420 485T481 427T532 391T564 374Q575 368 577 365T579 350V337Q572 330 570 330Q564 330 551 338Q487 370 435 419L423 430L422 125V-181Q409 -194 401 -194Q397 -194 394 -193T388 -189T385 -184T382 -180V-177V475L373 487Q331 541 305 602Q304 601 300 591T290 571T278 548T260 519T238 488L229 476L228 148V-179\",8658:\"580 514Q580 525 596 525Q601 525 604 525T609 525T613 524T615 523T617 520T619 517T622 512Q659 438 720 381T831 300T927 263Q944 258 944 250T935 239T898 228T840 204Q696 134 622 -12Q618 -21 615 -22T600 -24Q580 -24 580 -17Q580 -13 585 0Q620 69 671 123L681 133H70Q56 140 56 153Q56 168 72 173H725L735 181Q774 211 852 250Q851 251 834 259T789 283T735 319L725 327H72Q56 332 56 347Q56 360 70 367H681L671 377Q638 412 609 458T580 514\",8659:\"401 694Q412 694 422 681V375L423 70L435 81Q487 130 551 162Q564 170 570 170Q572 170 579 163V150Q579 138 577 135T564 126Q541 114 518 99T453 48T374 -46T318 -177Q313 -194 305 -194T293 -178T272 -119T225 -31Q158 70 46 126Q35 132 33 135T31 150V163Q38 170 40 170Q46 170 59 162Q122 131 176 81L188 70V375L189 681Q199 694 208 694Q219 694 228 680V352L229 25L238 12Q279 -42 305 -102Q344 -23 373 13L382 25V678Q387 692 401 694\",8660:\"308 524Q318 526 323 526Q340 526 340 514Q340 507 336 499Q326 476 314 454T292 417T274 391T260 374L255 368Q255 367 500 367Q744 367 744 368L739 374Q734 379 726 390T707 416T685 453T663 499Q658 511 658 515Q658 525 680 525Q687 524 690 523T695 519T701 507Q766 359 902 287Q921 276 939 269T961 259T966 250Q966 246 965 244T960 240T949 236T930 228T902 213Q763 137 701 -7Q697 -16 695 -19T690 -23T680 -25Q658 -25 658 -15Q658 -11 663 1Q673 24 685 46T707 83T725 109T739 126L744 132Q744 133 500 133Q255 133 255 132L260 126Q265 121 273 110T292 84T314 47T336 1Q341 -11 341 -15Q341 -25 319 -25Q312 -24 309 -23T304 -19T298 -7Q233 141 97 213Q83 221 70 227T51 235T41 239T35 243T34 250T35 256T40 261T51 265T70 273T97 287Q235 363 299 509Q305 522 308 524ZM792 319L783 327H216Q183 294 120 256L110 250L120 244Q173 212 207 181L216 173H783L792 181Q826 212 879 244L889 250L879 256Q826 288 792 319\",8661:\"290 755Q298 772 305 772T318 757T343 706T393 633Q431 588 473 558T545 515T579 497V484Q579 464 570 464Q564 464 550 470Q485 497 423 550L422 400V100L423 -50Q485 3 550 30Q565 36 570 36Q579 36 579 16V3Q575 -1 549 -12T480 -53T393 -132Q361 -172 342 -208T318 -258T305 -272T293 -258T268 -208T217 -132Q170 -80 128 -51T61 -12T31 3V16Q31 36 40 36Q46 36 61 30Q86 19 109 6T146 -18T173 -38T188 -50V550Q186 549 173 539T147 519T110 495T61 470Q46 464 40 464Q31 464 31 484V497Q34 500 63 513T135 557T217 633Q267 692 290 755ZM374 598Q363 610 351 625T332 651T316 676T305 695L294 676Q282 657 267 636T236 598L228 589V-89L236 -98Q247 -110 259 -125T278 -151T294 -176T305 -195L316 -176Q328 -157 343 -136T374 -98L382 -89V589L374 598\",8666:\"944 54Q942 44 929 36H372Q372 34 377 26T395 -4T422 -58Q442 -109 442 -110T408 -111H374L370 -100Q282 124 87 243L76 250L87 257Q284 377 370 600L374 611H408Q442 611 442 610Q423 550 381 480Q380 478 379 475T376 471T374 468T372 465V464H929Q942 456 944 446Q944 442 943 439T941 434T938 430T935 428T931 426T928 424H344L336 414Q277 336 200 277L191 270H560Q929 270 933 268Q944 262 944 250Q944 237 933 232Q929 230 560 230H191L200 223Q279 162 336 86L344 76H928Q929 76 931 75T934 73T938 70T941 66T943 61T944 54\",8667:\"56 250Q56 260 68 270H808L799 277Q720 338 663 414L655 424H363Q71 424 68 426Q55 432 55 444T68 462Q71 464 349 464H627Q627 466 622 474T604 504T577 558Q557 609 557 610T591 611H626L629 600Q717 376 912 257L923 250L912 243Q715 123 629 -100L626 -111H591Q557 -111 557 -110Q576 -50 618 20Q619 22 620 25T623 29T625 32T626 35L627 36H349Q71 36 68 38Q55 44 55 56T68 74Q71 76 363 76H655L663 86Q722 164 799 223L808 230H438L68 231Q56 236 56 250\",8669:\"76 230Q68 230 62 237T56 250Q56 257 63 264T91 291Q102 300 108 306L159 351Q168 356 177 351L218 316L303 239L353 195Q376 214 403 239L488 316L529 351Q538 356 546 351Q548 350 594 310L638 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H737Q625 230 622 232Q620 233 599 251T558 288L537 306Q537 305 451 228T362 149Q353 146 345 149Q341 150 255 227T169 306Q167 306 129 270Q123 265 115 257T102 245T93 237T84 232T76 230\",8672:\"292 419Q292 400 261 347T211 275H306H364Q400 275 411 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM918 237T918 250T932 270H1236Q1251 262 1251 250T1236 230H932Q918 237 918 250\",8674:\"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM1022 417Q1022 437 1055 437H1067Q1090 437 1097 434T1109 417Q1128 373 1161 333T1236 270Q1251 261 1251 250Q1251 241 1244 236T1216 217T1175 182Q1149 155 1133 128T1109 85T1097 66Q1093 64 1065 64H1053Q1031 64 1025 72T1027 100Q1036 124 1049 147T1073 185T1091 210T1101 223L1103 225H1008H950Q914 225 903 229T892 250T903 270T948 275H1008H1103L1101 277Q1100 280 1091 291T1067 325T1039 374Q1022 408 1022 417\",8704:\"0 673Q0 684 7 689T20 694Q32 694 38 680T82 567L126 451H430L473 566Q483 593 494 622T512 668T519 685Q524 694 538 694Q556 692 556 674Q556 670 426 329T293 -15Q288 -22 278 -22T263 -15Q260 -11 131 328T0 673ZM414 410Q414 411 278 411T142 410L278 55L414 410\",8705:\"404 269Q412 269 418 267T428 261T435 253T441 245L444 240V172Q444 103 443 96Q440 81 431 65T403 27T344 -7T250 -21T156 -8T97 27T69 65T58 96Q56 103 56 413Q56 722 58 729Q74 822 215 845Q221 846 229 846H243Q282 846 290 845Q422 826 443 729Q444 722 444 653V586L442 583Q441 580 440 578T436 573T430 567T423 562T415 558T404 556Q377 556 367 583Q364 590 364 654V719Q363 721 360 726T355 733Q326 766 250 766H249Q235 766 219 765T174 752T137 719V107Q145 83 178 71T251 58H254Q340 58 364 107V172Q364 176 364 187T363 204Q363 269 404 269\",8706:\"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306\",8707:\"56 661T56 674T70 694H487Q497 686 500 679V15Q497 10 487 1L279 0H70Q56 7 56 20T70 40H460V327H84Q70 334 70 347T84 367H460V654H70Q56 661 56 674\",8709:\"331 696Q335 708 339 722T345 744T350 759T357 769T367 772Q374 772 381 767T388 754Q388 746 377 712L366 673L378 661Q460 575 460 344Q460 281 456 234T432 126T373 27Q319 -22 250 -22Q214 -22 180 -7Q168 -3 168 -4L159 -33Q148 -71 142 -75Q138 -78 132 -78Q124 -78 118 -72T111 -60Q111 -52 122 -18L133 21L125 29Q39 111 39 344Q39 596 137 675Q187 716 251 716Q265 716 278 714T296 710T315 703T331 696ZM276 676Q264 679 246 679Q196 679 159 631Q134 597 128 536T121 356Q121 234 127 174T151 80L234 366Q253 430 275 506T308 618L318 654Q318 656 294 669L276 676ZM181 42Q207 16 250 16Q291 16 324 47Q354 78 366 136T378 356Q378 470 372 528T349 616L348 613Q348 611 264 326L181 42\",8710:\"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344\",8711:\"46 676Q46 679 51 683H781Q786 679 786 676Q786 674 617 326T444 -26Q439 -33 416 -33T388 -26Q385 -22 216 326T46 676ZM697 596Q697 597 445 597T193 596Q195 591 319 336T445 80L697 596\",8712:\"84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250\",8713:\"196 25Q84 109 84 250Q84 372 166 450T360 539Q361 539 375 539T413 540T460 540L547 707Q550 716 563 716Q570 716 575 712T581 703T583 696T505 540H568Q583 532 583 520Q583 511 570 501L484 500L366 270H568Q583 262 583 250T568 230H346L247 38Q284 16 328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 447 -40T419 -41Q304 -41 228 3Q117 -211 115 -212Q111 -215 104 -215T92 -212T86 -204T84 -197Q84 -190 89 -183L196 25ZM214 61L301 230H124V228Q124 196 147 147T214 61ZM321 270L440 500Q353 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H321\",8715:\"83 520Q83 532 98 540H195Q202 540 220 540T249 541Q404 541 494 455Q582 374 582 250Q582 165 539 99T434 0T304 -39Q297 -40 195 -40H98Q83 -32 83 -20Q83 -10 96 0H200Q311 1 337 6Q369 14 401 28Q422 39 445 55Q484 85 508 127T537 191T542 228V230H98Q84 237 84 250T98 270H542V272Q542 280 539 295T527 336T497 391T445 445Q422 461 401 472Q386 479 374 483T347 491T325 495T298 498T273 499T239 500T200 500L96 501Q83 511 83 520\",8717:\"154 -1Q122 -1 112 3T102 26Q102 63 158 63H178Q192 64 206 65T228 66T240 68Q301 85 324 146L329 157H244Q158 157 153 161Q149 162 145 169T140 183Q140 201 158 215L167 221H256L344 223L349 237Q352 262 352 287Q352 308 351 315Q341 352 315 368T256 385Q231 385 206 376T166 356T149 346Q143 346 138 364T132 388Q132 396 147 406Q198 440 252 440Q291 440 318 435Q421 404 451 301Q456 288 456 248V234Q456 151 391 86Q330 25 240 3Q212 -1 154 -1\",8719:\"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8720:\"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8721:\"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748\",8722:\"84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250\",8723:\"56 467T56 480T70 500H707Q722 492 722 480T707 460H409V187H707Q722 179 722 167Q722 154 707 147H409V0V-93Q409 -144 406 -155T389 -166Q376 -166 372 -155T368 -105Q368 -96 368 -62T369 -2V147H70Q56 154 56 167T70 187H369V460H70Q56 467 56 480\",8724:\"339 717Q339 739 354 752T388 766Q410 766 424 751T439 716T424 681T390 666Q369 666 354 681T339 717ZM57 237T57 250T71 270H369V425L370 581Q380 594 389 594Q402 594 409 579V270H707Q722 262 722 250T707 230H409V-79Q401 -93 391 -93H389H387Q375 -93 369 -79V230H71Q57 237 57 250\",8725:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8726:\"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731\",8727:\"229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286\",8728:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251ZM245 403Q188 403 142 361T96 250Q96 183 141 140T250 96Q284 96 313 109T354 135T375 160Q403 197 403 250Q403 313 360 358T245 403\",8729:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251\",8730:\"95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178\",8733:\"56 124T56 216T107 375T238 442Q260 442 280 438T319 425T352 407T382 385T406 361T427 336T442 315T455 297T462 285L469 297Q555 442 679 442Q687 442 722 437V398H718Q710 400 694 400Q657 400 623 383T567 343T527 294T503 253T495 235Q495 231 520 192T554 143Q625 44 696 44Q717 44 719 46H722V-5Q695 -11 678 -11Q552 -11 457 141Q455 145 454 146L447 134Q362 -11 235 -11Q157 -11 107 56ZM93 213Q93 143 126 87T220 31Q258 31 292 48T349 88T389 137T413 178T421 196Q421 200 396 239T362 288Q322 345 288 366T213 387Q163 387 128 337T93 213\",8734:\"55 217Q55 305 111 373T254 442Q342 442 419 381Q457 350 493 303L507 284L514 294Q618 442 747 442Q833 442 888 374T944 214Q944 128 889 59T743 -11Q657 -11 580 50Q542 81 506 128L492 147L485 137Q381 -11 252 -11Q166 -11 111 57T55 217ZM907 217Q907 285 869 341T761 397Q740 397 720 392T682 378T648 359T619 335T594 310T574 285T559 263T548 246L543 238L574 198Q605 158 622 138T664 94T714 61T765 51Q827 51 867 100T907 217ZM92 214Q92 145 131 89T239 33Q357 33 456 193L425 233Q364 312 334 337Q285 380 233 380Q171 380 132 331T92 214\",8736:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q67 43 346 361Q397 420 474 508Q595 648 616 671T647 694T661 688T666 674Q666 668 663 663Q662 662 627 622T524 503T390 350L120 41L386 40H653Q666 30 666 20Q666 8 651 0H71\",8737:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q64 38 348 373T638 712Q644 714 646 714Q653 714 659 709T666 694V693Q666 687 633 647Q619 631 576 580Q528 524 495 485Q336 296 329 289Q328 288 348 264T395 182T433 54L434 40H651Q666 32 666 20T651 0H436Q431 -20 416 -20Q400 -20 396 -4V0H71ZM394 40Q394 51 389 76T366 149T319 234L302 256L119 41L256 40H394\",8738:\"666 -32Q666 -51 646 -51Q639 -51 365 85L75 228Q55 238 55 250Q55 257 59 262T68 268L72 270L611 536Q642 551 647 551T659 547T666 532Q666 521 657 515L525 449Q525 448 535 424T556 352T566 250T556 148T536 77T525 51L657 -15Q666 -21 666 -32ZM526 250Q526 297 517 342T499 409T488 431Q487 431 304 341T121 250T304 159T488 69Q526 143 526 250\",8739:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",8740:\"118 737Q131 750 138 750L151 746L158 739V579L160 421L213 470Q269 519 276 519Q284 519 290 513T296 499V498Q296 493 291 488T244 445Q225 428 213 417L158 368V-239Q143 -252 136 -252L124 -248L120 -241L118 44V328L62 279Q4 231 0 230Q-8 230 -14 236T-20 250Q-20 257 -11 265T62 332L118 384V737\",8741:\"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739\",8742:\"131 737Q134 739 138 743T144 748T151 750T171 737V199L327 357V737Q340 750 347 750Q351 750 353 749T360 743T367 737V397L429 457Q493 518 498 519Q506 519 512 512T518 500Q518 489 442 417L367 339V-237Q352 -250 346 -250L333 -243L327 -237V301L171 143V-237Q156 -250 151 -250T131 -237V101L69 41Q24 -3 15 -12T0 -21Q-8 -21 -14 -14T-20 -2Q-20 5 -7 19T56 81L131 159V737\",8743:\"318 591Q325 598 333 598Q344 598 348 591Q349 590 414 445T545 151T611 -4Q609 -22 591 -22Q588 -22 586 -21T581 -20T577 -17T575 -13T572 -9T570 -4L333 528L96 -4Q87 -20 80 -21Q78 -22 75 -22Q57 -22 55 -4Q55 2 120 150T251 444T318 591\",8744:\"55 580Q56 587 61 592T75 598Q86 598 96 580L333 48L570 580Q579 596 586 597Q588 598 591 598Q609 598 611 580Q611 574 546 426T415 132T348 -15Q343 -22 333 -22T318 -15Q317 -14 252 131T121 425T55 580\",8745:\"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21\",8746:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598\",8747:\"151 -112Q151 -150 106 -161Q106 -165 114 -172T134 -179Q155 -179 170 -146Q181 -120 188 -64T206 101T232 310Q256 472 277 567Q308 716 392 716Q434 716 453 681T472 613Q472 590 458 577T424 564Q404 564 390 578T376 612Q376 650 421 661Q421 663 418 667T407 675T393 679Q387 679 380 675Q360 665 350 619T326 438Q302 190 253 -57Q235 -147 201 -186Q174 -213 138 -216Q93 -216 74 -181T55 -113Q55 -91 69 -78T103 -64Q123 -64 137 -78T151 -112\",8748:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244\",8749:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244\",8750:\"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107\",8756:\"273 411Q273 437 291 454T334 471Q358 471 375 454T393 411T376 368T333 351Q307 351 290 368T273 411ZM84 38Q110 38 126 21T143 -22Q143 -46 127 -64T83 -82Q57 -82 41 -65T24 -22Q24 4 41 21T84 38ZM524 -22Q524 4 541 21T584 38Q608 38 625 21T643 -22Q643 -45 627 -63T583 -82Q557 -82 541 -65T524 -22\",8757:\"23 411Q23 437 41 454T84 471Q108 471 125 454T143 411T126 368T83 351Q57 351 40 368T23 411ZM523 411Q523 437 541 454T584 471Q608 471 625 454T643 411T626 368T583 351Q557 351 540 368T523 411ZM274 -22Q274 4 291 21T334 38Q356 38 374 22T392 -22T375 -65T333 -82Q307 -82 291 -65T274 -22\",8764:\"55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166\",8765:\"222 133Q147 133 102 197T56 335Q56 362 66 365Q71 369 77 364Q83 356 84 335T90 298Q102 254 137 222T223 189Q258 189 292 206T355 250T413 301T477 346T550 367Q628 367 673 309T722 171Q722 133 708 133Q703 133 699 141T694 162Q694 220 655 265T555 311Q519 311 485 293T421 248T363 196T298 152T222 133\",8768:\"55 569Q55 583 83 583Q122 583 151 565T194 519T215 464T222 411Q222 360 194 304T139 193T111 89Q111 38 134 -7T195 -55Q222 -57 222 -69Q222 -83 189 -83Q130 -83 93 -33T55 90Q55 130 72 174T110 252T148 328T166 411Q166 462 144 507T83 555Q55 556 55 569\",8769:\"220 366Q258 366 297 347T361 308T391 288Q394 288 464 370Q494 407 510 425T535 454T546 465T552 467H553Q560 467 566 461T573 448Q573 439 499 350Q424 266 424 261Q424 259 442 247T492 222T554 209Q607 209 646 243Q671 268 680 295T690 341T702 366Q719 366 719 314Q716 265 695 226Q682 199 664 179Q614 132 555 132Q517 132 477 151T412 190T383 210T347 172T278 89T233 37Q228 32 220 32Q210 32 206 38T201 48Q201 57 266 137Q272 144 275 148Q351 231 351 237Q351 239 333 251T283 276T221 289Q159 289 123 248T86 166Q86 156 82 145T73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q161 366 220 366\",8770:\"55 439T55 443T56 449T62 456T68 463H706Q720 449 720 443T706 423H68Q55 439 55 443ZM56 72Q56 112 73 152T130 225T224 257Q259 257 294 240T360 199T419 149T484 107T553 90Q603 90 643 125T691 223Q693 257 704 257Q717 257 717 221Q717 147 671 91T554 34Q517 34 481 51T414 93T355 142T291 184T222 201Q172 201 131 167T84 67Q81 34 71 34Q56 37 56 72\",8771:\"55 283Q55 356 103 409T217 463Q262 463 297 447T395 382Q431 355 446 344T493 320T554 307H558Q613 307 652 344T694 433Q694 464 708 464T722 432Q722 356 673 304T564 251H554Q510 251 465 275T387 329T310 382T223 407H219Q164 407 122 367Q91 333 85 295T76 253T69 250Q55 250 55 283ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56\",8773:\"55 388Q55 463 101 526T222 589Q260 589 296 571T362 526T421 474T484 430T554 411Q616 411 655 458T694 560Q694 572 698 580T708 589Q722 589 722 556Q722 482 677 419T562 356H554Q517 356 481 374T414 418T355 471T292 515T223 533Q179 533 145 508Q109 479 96 440T80 378T69 355Q55 355 55 388ZM56 236Q56 249 70 256H707Q722 248 722 236Q722 225 708 217L390 216H72Q56 221 56 236ZM56 42Q56 57 72 62H708Q722 52 722 42Q722 30 707 22H70Q56 29 56 42\",8775:\"55 417Q55 479 101 528T222 578Q259 578 294 564T393 507Q413 493 434 480T469 460T484 454L537 549Q587 639 595 647Q600 652 607 652Q615 652 621 647T628 634Q628 625 575 536Q524 446 524 443Q527 440 555 440Q603 440 644 469T691 547Q694 578 706 578T718 556Q718 555 718 551T717 545Q717 488 684 445T595 387Q582 384 558 384Q530 384 508 389L493 394L404 238L557 236H708Q720 224 720 217T706 196H379L291 43L499 41H708Q720 29 720 21T706 1H268L226 -71Q186 -143 179 -148Q173 -155 165 -155T152 -150T146 -137Q146 -133 184 -64L222 1H144L66 3L59 7Q54 14 54 20Q54 29 66 41H246L333 194Q333 196 202 196H68Q55 211 55 218T66 236H213L357 238L457 409L437 421Q432 423 393 450T307 500T222 523Q171 523 129 491T84 414Q82 383 70 383Q55 383 55 417\",8776:\"55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85\",8778:\"220 523Q163 523 124 486T84 412Q81 383 69 383Q56 383 56 413Q56 441 67 470Q78 508 111 537T187 575Q203 579 219 579Q248 579 271 572Q304 565 393 508Q498 439 551 439Q620 439 662 486Q688 512 693 557Q693 565 697 572T707 579Q719 579 719 548Q719 483 673 434T550 384Q512 384 467 405T386 453T305 501T220 523ZM222 288Q164 288 124 251T84 177Q81 148 69 148Q56 148 56 178Q56 206 67 235Q78 274 111 302T187 339Q198 343 220 343Q244 343 259 341T308 322T393 272Q496 203 553 203Q612 203 651 241T691 312Q693 343 705 343Q719 343 719 313Q719 245 673 199Q626 148 552 148Q513 148 467 170T385 218T304 266T222 288ZM51 -19Q51 -6 62 -1H387Q713 -1 715 -3Q725 -10 725 -20Q725 -27 718 -34Q714 -38 672 -38T387 -39H62Q51 -25 51 -19\",8781:\"55 464Q55 471 60 477T74 484Q80 484 108 464T172 420T268 376T389 356Q436 356 483 368T566 399T630 436T675 467T695 482Q701 484 703 484Q711 484 716 478T722 464Q722 454 707 442Q550 316 389 316Q338 316 286 329T195 362T124 402T76 437T57 456Q55 462 55 464ZM57 45Q66 58 109 88T230 151T381 183Q438 183 494 168T587 135T658 94T703 61T720 45Q722 39 722 36Q722 28 717 22T703 16Q697 16 669 36T606 80T510 124T389 144Q341 144 294 132T211 101T147 64T102 33T82 18Q76 16 74 16Q66 16 61 22T55 36Q55 39 57 45\",8782:\"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H268Q277 168 279 164Q281 162 284 137T305 89Q334 49 389 49H391Q442 49 472 89Q487 108 490 126T495 156T509 173H608H666Q701 173 711 170T722 153T707 133H532Q526 81 486 45T389 8Q331 8 291 45T245 133H70Q56 140 56 153\",8783:\"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",8784:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM329 610Q329 634 346 652T389 670Q413 670 431 654T450 611Q450 586 433 568T390 550T347 567T329 610\",8785:\"421 474T389 474T339 493T321 541Q321 566 337 587T391 609Q456 602 456 541Q456 512 439 493ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM421 -108T389 -108T339 -89T321 -41Q321 -16 337 5T391 27Q456 20 456 -41Q456 -70 439 -89\",8786:\"15 541Q15 569 33 585T75 601T117 585T135 541Q135 514 118 498T75 481T32 498T15 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM642 -41Q642 -17 658 0T702 18Q726 18 744 3T762 -41Q762 -67 745 -84T702 -101Q676 -101 659 -85T642 -41\",8787:\"642 541Q642 569 660 585T702 601T744 585T762 541Q762 515 745 498T702 481Q676 481 659 497T642 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM14 -41Q14 -15 31 1T74 18Q101 18 118 0T135 -41Q135 -64 118 -83T75 -102Q51 -102 33 -85T14 -41\",8790:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 334 711 331T658 327H586H465L472 318Q496 288 496 250T472 182L465 173H586H663Q700 173 711 170T722 153T707 133H70Q56 140 56 153Q56 168 72 173H312L305 182Q281 212 281 250T305 318L312 327H72Q56 332 56 347ZM473 250Q473 265 472 273T460 297T428 327H349Q328 313 318 298T306 273T304 250Q304 235 305 227T317 203T349 173H428Q449 187 459 202T471 227T473 250\",8791:\"279 612Q279 656 310 688T388 721Q433 721 465 689T498 612Q498 573 470 538T389 503Q336 503 308 538T279 612ZM458 614Q458 637 452 651T433 672T411 679T383 680T352 675T333 664T324 647T321 629T320 611Q320 593 321 584T332 562T359 545Q366 543 389 543H391Q406 543 414 544T435 552T452 573T458 614ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",8796:\"192 482H190Q187 483 185 484T181 488T177 493T175 501Q175 506 178 512Q184 523 278 687T375 853Q379 857 383 857Q385 857 387 858T390 859Q397 859 403 853Q405 851 499 687T600 512Q603 506 603 501Q603 488 587 482H192ZM548 523L389 798Q388 798 309 661T230 523T389 522T548 523ZM56 347Q56 360 70 367H708Q723 359 723 347Q723 336 709 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H709Q723 163 723 153Q723 140 708 133H70Q56 140 56 153\",8800:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183L306 133H70Q56 140 56 153Q56 168 72 173H327L406 327H72Q56 332 56 347Q56 360 70 367H426Q597 702 602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 692 471 367H707Q722 359 722 347Q722 336 708 328L451 327L371 173H708Q722 163 722 153Q722 140 707 133H351Q175 -210 170 -212Q166 -215 159 -215\",8801:\"56 444Q56 457 70 464H707Q722 456 722 444Q722 430 706 424H72Q56 429 56 444ZM56 237T56 250T70 270H707Q722 262 722 250T707 230H70Q56 237 56 250ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56\",8804:\"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118\",8805:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118\",8806:\"674 753Q682 753 688 747T694 732T687 718Q686 717 417 589L151 463L399 345Q687 209 691 204Q694 198 694 193Q694 175 676 173H670L382 309Q92 446 90 448Q83 453 83 465Q84 476 96 482Q104 486 382 617T665 751Q669 753 674 753ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157\",8807:\"83 733Q83 741 89 747T99 753Q107 753 253 685T543 548T687 478Q694 473 694 463T687 448Q685 446 395 309L107 173H101Q83 175 83 193Q83 194 83 196Q82 203 98 212Q117 222 248 284Q326 321 378 345L626 463L360 589Q291 622 200 665Q112 706 98 714T83 733ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157\",8808:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",8809:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",8810:\"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM944 -48Q944 -54 939 -60T924 -67H923Q917 -67 841 -26Q735 33 634 88Q366 235 364 239Q361 243 361 250T364 261Q367 266 641 415T920 567L924 568Q927 567 930 567Q944 562 944 548Q944 540 938 534Q937 532 679 391L422 250L679 109Q937 -32 938 -34Q944 -40 944 -48\",8811:\"55 539T55 547T60 561T74 567Q81 567 207 498Q297 449 365 412Q633 265 636 261Q639 255 639 250Q639 241 626 232Q614 224 365 88Q83 -65 79 -66Q76 -67 73 -67Q65 -67 60 -61T55 -47Q55 -39 61 -33Q62 -33 95 -15T193 39T320 109L321 110H322L323 111H324L325 112L326 113H327L329 114H330L331 115H332L333 116L334 117H335L336 118H337L338 119H339L340 120L341 121H342L343 122H344L345 123H346L347 124L348 125H349L351 126H352L353 127H354L355 128L356 129H357L358 130H359L360 131H361L362 132L363 133H364L365 134H366L367 135H368L369 136H370L371 137L372 138H373L374 139H375L376 140L378 141L576 251Q63 530 62 533Q55 539 55 547ZM360 539T360 547T365 561T379 567Q386 567 512 498Q602 449 670 412Q938 265 941 261Q944 255 944 250Q944 241 931 232Q919 224 670 88Q388 -65 384 -66Q381 -67 378 -67Q370 -67 365 -61T360 -47Q360 -39 366 -33Q367 -33 400 -15T498 39T625 109L626 110H627L628 111H629L630 112L631 113H632L634 114H635L636 115H637L638 116L639 117H640L641 118H642L643 119H644L645 120L646 121H647L648 122H649L650 123H651L652 124L653 125H654L656 126H657L658 127H659L660 128L661 129H662L663 130H664L665 131H666L667 132L668 133H669L670 134H671L672 135H673L674 136H675L676 137L677 138H678L679 139H680L681 140L683 141L881 251Q368 530 367 533Q360 539 360 547\",8812:\"104 730Q104 749 123 749Q130 749 138 745Q186 717 237 671L250 659L261 670Q297 703 332 726T375 750T389 744T395 730Q395 721 390 717T364 699T322 668Q290 641 283 632Q280 628 281 627T293 612Q425 454 425 250Q425 144 388 51T293 -112Q282 -125 281 -126T283 -132Q306 -162 379 -209Q395 -219 395 -230Q395 -238 389 -244T375 -250T335 -228T262 -171L250 -159L238 -170Q202 -203 167 -226T124 -250T110 -244T104 -230Q104 -219 121 -209Q199 -156 216 -132Q219 -128 218 -127T206 -112Q74 46 74 250T206 612Q217 625 218 626T216 632Q199 656 121 709Q104 719 104 730ZM249 -94Q364 61 364 250Q364 430 265 574Q253 590 249 594L242 583Q134 439 134 250Q134 114 192 -1Q212 -44 242 -83L249 -94\",8814:\"693 -14T693 -20T687 -33T675 -41Q667 -41 506 37L344 112Q342 112 262 -46Q184 -196 176 -205Q172 -209 168 -209T162 -208Q155 -208 151 -203T146 -190Q146 -178 171 -137Q193 -91 251 21L306 132L198 183Q142 208 118 220T88 238T82 249Q82 253 86 261Q92 267 278 357L464 443L529 572Q561 637 577 667T597 703T607 708Q615 708 622 702T629 688Q629 680 575 579L524 474Q524 473 545 482T598 508Q666 541 673 541T686 535T693 521Q693 512 679 504T589 459L493 414L360 150Q366 148 378 142T431 116T529 70Q686 -8 689 -10Q693 -14 693 -20ZM380 277L433 383Q432 385 292 319T151 250T237 209T324 170L380 277\",8815:\"82 514T82 520T89 533T100 541Q106 541 271 463Q434 386 435 386L515 543Q593 699 600 706Q604 708 607 708Q615 708 622 702T629 688T549 526Q509 445 491 407T473 368Q522 343 580 317Q636 291 660 278T688 261T693 250V249Q693 241 681 234T580 184Q533 161 502 146Q317 59 315 59Q312 56 246 -74Q197 -170 186 -189T168 -209Q164 -209 162 -208Q155 -208 151 -203T146 -190Q146 -187 200 -79L253 28L218 11Q182 -6 144 -23T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4T186 41L284 88L349 217Q377 273 395 311T413 350Q413 351 253 428Q101 498 86 510Q82 514 82 520ZM624 250Q461 330 455 330Q454 331 453 329T448 321T441 308T430 287T416 259T398 223L342 114L624 250\",8816:\"82 -124Q82 -120 83 -117T89 -110T95 -103H220L284 50Q346 204 344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q664 54 526 121Q513 127 495 136T464 150T438 162T416 173T399 180T388 185L384 186Q383 186 322 41L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",8817:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q384 185 322 39L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124Q82 -120 83 -117T89 -110T95 -103H220L273 26Q326 156 326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",8818:\"674 732Q682 732 688 726T694 711T687 697Q686 696 417 568L151 442L399 324Q687 188 691 183Q694 177 694 172Q694 154 676 152H670L382 288Q92 425 90 427Q83 432 83 444Q84 455 96 461Q104 465 382 596T665 730Q669 732 674 732ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8819:\"90 697Q83 704 83 712T88 726T99 732Q107 732 253 664T543 527T687 457Q694 452 694 442T687 427Q685 425 395 288L107 152H101Q83 154 83 172Q83 173 83 175Q82 182 98 191Q117 201 248 263Q326 300 378 324L626 442L360 568Q91 696 90 697ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8822:\"734 181Q734 173 728 167T714 161Q711 161 386 280T54 404Q44 408 44 421Q44 432 52 437Q66 443 388 562T714 681Q721 681 727 675T734 661Q734 651 722 645Q711 639 462 546Q441 539 420 531L122 421L420 311L723 198Q734 192 734 181ZM44 247Q44 255 50 261T63 267Q66 267 391 148T723 24Q734 18 734 7T723 -10Q716 -14 391 -133T63 -253Q56 -253 50 -247T44 -233Q44 -223 55 -217Q67 -210 317 -118Q337 -110 357 -103L655 7L357 117L54 230Q44 236 44 247\",8823:\"83 661Q83 668 88 674T104 681Q111 679 396 560Q686 437 687 436Q694 431 694 421T687 406Q686 405 543 344T253 222T101 161Q83 163 83 180Q83 194 95 199Q96 199 130 213T232 257T361 311L621 421L357 532Q307 553 233 584Q121 631 102 640T83 661ZM673 267Q694 267 694 248Q694 237 687 232Q684 229 420 118L156 7L416 -103L683 -215Q694 -222 694 -233Q694 -251 676 -253Q670 -253 524 -192T235 -70T90 -8Q83 -1 83 7Q83 19 94 24Q97 25 378 144T667 266Q669 267 673 267\",8826:\"84 249Q84 262 91 266T117 270Q120 270 126 270T137 269Q388 273 512 333T653 512Q657 539 676 539Q685 538 689 532T694 520V515Q689 469 672 431T626 366T569 320T500 286T435 265T373 249Q379 248 404 242T440 233T477 221T533 199Q681 124 694 -17Q694 -41 674 -41Q658 -41 653 -17Q646 41 613 84T533 154T418 197T284 220T137 229H114Q104 229 98 230T88 235T84 249\",8827:\"84 517Q84 539 102 539Q115 539 119 529T125 503T137 459T171 404Q277 275 640 269H661Q694 269 694 249T661 229H640Q526 227 439 214T283 173T173 98T124 -17Q118 -41 103 -41Q83 -41 83 -17Q88 29 105 67T151 132T208 178T277 212T342 233T404 249Q401 250 380 254T345 263T302 276T245 299Q125 358 92 468Q84 502 84 517\",8828:\"112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q516 310 620 464Q635 486 642 510T651 548T657 571T675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17Q688 5 683 3Q677 0 673 0Q656 0 653 24Q623 270 118 270H112ZM110 116Q83 116 83 136T110 156H113Q134 156 160 155T231 146T318 128T407 95T489 44T550 -30T583 -131Q583 -153 563 -153Q556 -153 553 -152T547 -145T542 -127Q531 -54 478 0Q425 53 333 83T123 116H110\",8829:\"668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668ZM194 -131Q201 -60 241 -6T343 82T477 133T628 155Q632 155 644 155T661 156Q685 155 690 147Q694 143 694 136Q694 132 693 129T689 124T685 120T681 117L656 116Q596 114 543 106T436 79T342 35T272 -33T235 -127Q231 -154 212 -154Q203 -153 199 -147T194 -136V-131\",8830:\"84 442Q84 455 91 459T117 463Q120 463 126 463T137 462Q388 466 512 526T653 705Q657 732 676 732Q685 731 689 725T694 714V708Q689 662 672 624T626 559T569 513T500 479T435 458T373 442Q379 441 404 435T440 426T477 414T533 392Q592 362 630 319T681 241T694 174Q694 153 674 153Q662 153 657 163T652 188T640 231T606 287Q500 416 137 422H114Q104 422 98 423T88 428T84 442ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8831:\"84 710Q84 732 102 732Q115 732 119 722T125 696T137 652T171 597Q277 468 640 462H661Q694 462 694 442T661 422H640Q578 421 526 417T415 403T309 376T222 333T156 268T124 179Q122 162 118 158T103 153Q100 153 98 153T95 154T93 155T90 158T85 163Q83 167 83 176Q88 222 105 260T151 325T208 371T277 405T342 426T404 442Q401 443 380 447T345 456T302 469T245 492Q125 551 92 661Q84 695 84 710ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8832:\"386 292Q388 292 439 393T543 598T598 703Q599 703 603 704T609 705Q616 705 622 699T629 685T533 494Q440 308 440 305Q451 310 462 312Q547 342 592 388T651 505Q654 525 658 532T673 539Q680 539 686 533T693 519Q693 495 678 450Q638 341 500 283Q433 259 418 259Q416 259 411 251T406 241T415 239Q482 224 544 190Q674 121 691 -10Q693 -28 691 -32Q684 -43 672 -43Q664 -43 658 -37Q656 -33 650 -6T634 47T589 109T500 168Q473 179 436 190T388 201H386L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -185 246 12Q344 206 344 210Q344 213 305 217T213 225T124 228H95Q82 241 82 248Q82 253 95 268H124Q172 268 236 273T343 283T386 292\",8833:\"103 -43Q96 -43 89 -39T82 -26L84 -10Q105 141 275 212Q342 236 355 236Q360 236 364 245L369 256H360Q284 280 275 283Q115 351 86 490Q82 507 82 517Q82 526 88 532T103 538Q110 538 115 534Q119 531 122 517T128 486T143 444T174 397T231 351T320 310Q371 292 389 292L491 496Q595 701 598 703Q599 703 603 704T609 705Q616 705 622 699T629 685Q629 684 531 485Q431 296 431 288Q431 278 520 273T651 268H680Q693 253 693 248Q693 241 680 228H651Q591 228 491 218T386 201L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -182 302 125L335 190L324 185Q313 185 289 172Q241 153 208 128T159 78T135 31T124 -11T118 -37Q112 -43 103 -43\",8834:\"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250\",8835:\"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520\",8838:\"84 346Q84 468 166 546T360 635Q361 635 370 635T395 635T430 636T475 636T524 636H679Q694 628 694 616Q694 607 681 597L522 596H470H441Q366 596 338 592T266 568Q244 557 224 542T179 500T139 433T124 346V341Q124 253 185 185Q244 121 328 103Q348 98 366 98T522 96H681Q694 86 694 76Q694 64 679 56H526Q510 56 480 56T434 55Q350 55 289 71T172 141Q84 223 84 346ZM104 -131T104 -118T118 -98H679Q694 -106 694 -118T679 -138H118Q104 -131 104 -118\",8839:\"83 616Q83 628 98 636H251Q267 636 297 636T343 637Q427 637 488 621T605 551Q693 470 693 346Q693 261 650 195T545 96T415 57Q407 56 251 56H98Q83 64 83 76Q83 86 96 96H255H308H337Q412 96 439 100T512 124Q533 135 553 150T599 192T639 259T654 346Q654 437 592 507Q557 545 512 568Q468 587 439 591T335 596H306H255L96 597Q83 607 83 616ZM84 -131T84 -118T98 -98H659Q674 -106 674 -118T659 -138H98Q84 -131 84 -118\",8840:\"146 -283Q146 -282 174 -213T202 -143H115Q102 -127 102 -123T115 -103H220L291 68L278 73Q203 101 153 157T86 288Q83 309 83 344Q83 380 86 399Q107 480 160 539Q222 601 298 621Q328 630 345 631T435 635L526 637L560 715Q587 778 593 789T609 801Q616 801 622 795T629 781Q629 780 625 771T614 742T600 706L571 637Q571 635 626 635H680Q693 620 693 613T689 601L682 597L618 595H553L449 346Q425 288 399 223T359 127T346 95H356Q365 95 381 95T417 94T463 93T515 93H682Q693 82 693 74T680 53H511Q420 55 335 55L329 57L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283ZM509 590Q509 595 438 595Q354 595 318 586Q246 567 195 516T126 395Q123 378 123 344T126 293Q141 229 184 181T291 110L306 104L406 346L509 590\",8841:\"82 606T82 613T95 635H251H348Q408 635 435 632T502 615L515 608L520 617Q520 619 558 708Q584 774 591 787T609 801Q616 801 622 795T629 781Q629 775 562 615L551 590L569 577Q646 527 678 437Q691 398 691 344T678 250Q653 182 597 132T469 64Q427 53 366 53H326L295 -25L262 -103H660Q673 -118 673 -124Q673 -129 669 -136L662 -141L453 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L251 -25L284 53H189L93 55L86 59Q82 64 82 71T95 93H302L400 333Q498 569 498 573L444 590Q431 593 260 595L93 597L86 601Q82 606 82 613ZM652 344V354Q652 451 575 521Q571 526 557 538T537 551Q534 551 533 548Q533 543 438 319L344 95L371 93H386Q487 93 557 150T649 293Q652 309 652 344\",8842:\"693 72Q693 68 692 66T686 59T680 52H524Q398 52 367 53T309 63Q236 82 180 132T98 250Q84 288 84 343Q84 397 98 437Q126 515 193 568T346 632Q347 632 373 633T440 634T520 635H680Q693 620 693 615Q693 608 680 595H526Q364 595 353 592Q279 582 221 539T138 430Q124 392 124 343Q124 296 138 257Q163 192 221 149T353 95Q364 92 526 92H680Q693 79 693 72ZM102 -132T102 -125T115 -103H382L420 -68Q429 -60 438 -52T452 -39T463 -28T472 -20T478 -14T483 -10T487 -7T490 -6T493 -5T496 -5Q502 -5 508 -12T515 -28Q515 -34 513 -37Q512 -38 507 -42T492 -55T475 -70L440 -101L562 -103H682Q693 -114 693 -122T680 -143H395L355 -179Q289 -241 280 -241Q273 -241 267 -235T260 -221T265 -208T300 -174L335 -143H224L113 -141L106 -137Q102 -132 102 -125\",8843:\"82 615Q82 620 95 635H251Q378 635 409 634T469 623Q540 605 596 555T678 437Q691 397 691 343T678 250Q649 172 581 119T426 55Q415 52 251 52H95Q93 55 89 59T84 65T82 72Q82 79 95 92H249Q411 92 422 95Q496 105 554 148T638 257Q651 296 651 343Q651 391 638 430Q613 495 555 538T422 592Q411 595 249 595H95Q82 608 82 615ZM82 -132T82 -125T95 -103H380L420 -57Q452 -21 460 -14T474 -6Q482 -6 488 -12T495 -25T451 -81L433 -101L549 -103H662Q673 -114 673 -122T660 -143H395L355 -190Q311 -239 309 -239Q305 -241 302 -241Q294 -241 287 -235T280 -221T324 -163L342 -143H218L93 -141L86 -137Q82 -132 82 -125\",8846:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM313 406Q313 417 313 435T312 459Q312 483 316 493T333 503T349 494T353 461V406V325H515Q516 325 519 323T527 316T531 305T527 294T520 287T515 285H353V204V152Q353 127 350 117T333 107T316 117T312 152Q312 158 312 175T313 204V285H151Q150 285 147 287T139 294T135 305T139 316T146 323T151 325H313V406\",8847:\"83 523Q87 535 99 539H679Q694 531 694 519Q694 506 679 499H123V-1H678Q694 -7 694 -21Q694 -34 679 -41H98Q93 -38 84 -28L83 247V523\",8848:\"64 506T64 519T78 539H699Q706 536 714 526V-28Q706 -38 699 -41H78Q64 -34 64 -21Q64 -6 80 -1H674V499H78Q64 506 64 519\",8849:\"94 620Q98 632 110 636H699Q714 628 714 616T699 596H134V96H698Q714 90 714 76Q714 64 699 56H109Q104 59 95 69L94 344V620ZM84 -118Q84 -103 100 -98H698Q714 -104 714 -118Q714 -130 699 -138H98Q84 -131 84 -118\",8850:\"64 603T64 616T78 636H668Q675 633 683 623V69Q675 59 668 56H78Q64 63 64 76Q64 91 80 96H643V596H78Q64 603 64 616ZM64 -118Q64 -108 79 -98H678Q694 -104 694 -118Q694 -130 679 -138H78Q64 -131 64 -118\",8851:\"83 0Q79 0 76 1T71 3T67 6T65 9T63 13T61 16V301L62 585Q70 595 76 598H592Q602 590 605 583V15Q598 2 587 0Q583 0 580 1T575 3T571 6T569 9T567 13T565 16V558H101V15Q94 2 83 0\",8852:\"77 0Q65 4 61 16V301L62 585Q72 598 81 598Q94 598 101 583V40H565V583Q573 598 585 598Q598 598 605 583V15Q602 10 592 1L335 0H77\",8853:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM364 542Q308 539 251 509T148 418T96 278V270H369V542H364ZM681 278Q675 338 650 386T592 462T522 509T458 535T412 542H409V270H681V278ZM96 222Q104 150 139 95T219 12T302 -29T366 -42H369V230H96V222ZM681 222V230H409V-42H412Q429 -42 456 -36T521 -10T590 37T649 113T681 222\",8854:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM681 278Q669 385 591 463T381 542Q283 542 196 471T96 278V270H681V278ZM275 -42T388 -42T585 32T681 222V230H96V222Q108 107 191 33\",8855:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q531 510 496 523Q446 542 381 542Q324 542 272 519T196 471L389 278L485 375L582 471ZM167 442Q95 362 95 250Q95 137 167 58L359 250L167 442ZM610 58Q682 138 682 250Q682 363 610 442L418 250L610 58ZM196 29Q209 16 230 2T295 -27T388 -42Q409 -42 429 -40T465 -33T496 -23T522 -11T544 1T561 13T574 22T582 29L388 222L196 29\",8856:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q581 472 571 480T556 491T539 502T517 514T491 525T460 534T424 539T381 542Q272 542 184 460T95 251Q95 198 113 150T149 80L167 58L582 471ZM388 -42Q513 -42 597 44T682 250Q682 363 610 442L196 29Q209 16 229 2T295 -27T388 -42\",8857:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM682 250Q682 322 649 387T546 497T381 542Q272 542 184 459T95 250Q95 132 178 45T389 -42Q515 -42 598 45T682 250ZM311 250Q311 285 332 304T375 328Q376 328 382 328T392 329Q424 326 445 305T466 250Q466 217 445 195T389 172Q354 172 333 195T311 250\",8858:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM250 250Q250 316 295 352T384 388Q451 388 489 347T528 250Q528 192 487 152T389 112Q331 112 291 152T250 250ZM488 250Q488 290 460 319T389 349Q348 349 319 320T290 250Q290 208 320 180T389 151Q431 151 459 181T488 250\",8859:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM204 339Q204 357 215 366T238 375Q247 375 283 348Q300 336 311 328L368 286Q369 286 366 323T359 398T355 437Q357 456 379 465Q380 465 384 465T391 466Q403 465 412 457T423 437Q423 436 420 398T413 323T410 286L467 328Q476 334 486 341T501 353T513 361T523 368T529 372T535 374T541 375Q554 375 564 365T575 339Q575 325 566 318T519 292Q504 285 496 281L430 250L496 219Q552 192 559 188T572 175Q575 168 575 161Q575 148 566 137T541 126H538Q530 126 499 149Q480 163 467 172L410 214Q409 214 412 177T419 102T423 63Q423 59 421 54T411 43T389 36T368 42T357 54T355 63Q355 64 358 102T365 177T368 214L311 172Q302 165 293 159T279 148T268 140T260 134T254 131T250 128T246 127T242 126T238 126Q223 126 214 135T204 161T213 183T282 219L348 250L282 281Q226 308 219 312T206 325Q204 330 204 339\",8861:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM223 250Q223 263 233 267T280 271Q289 271 325 271T389 270H490Q535 270 545 267T555 250Q555 241 549 235Q544 231 527 231T389 230Q239 230 235 232Q223 236 223 250\",8862:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM369 365V649H95V365H369ZM682 365V649H409V365H682ZM369 40V325H95V40H369ZM682 40V325H409V40H682\",8863:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 365V649H95V365H682ZM682 40V325H95V40H682\",8864:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H707Q714 686 722 676V13Q714 3 707 0H71ZM123 649Q147 625 214 555T335 430T389 374L654 649H123ZM95 70Q99 74 229 209T360 345L95 619V70ZM682 70V619L418 346Q417 344 549 207L682 70ZM654 41L400 304L388 315L123 41L256 40H522L654 41\",8865:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682ZM330 345Q330 371 347 388T390 405Q412 405 430 389T448 345Q448 317 430 301T389 285T348 301T330 345\",8866:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V367H540Q555 359 555 347Q555 334 540 327H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678\",8867:\"515 678Q515 679 516 681T518 684T521 688T525 691T530 693T537 694Q548 692 555 679V15Q548 2 537 0Q533 0 530 1T525 3T521 6T519 9T517 13T515 16V327H71Q70 327 67 329T59 336T55 347T59 358T66 365T71 367H515V678\",8868:\"55 642T55 648T59 659T66 666T71 668H708Q723 660 723 648T708 628H409V15Q402 2 391 0Q387 0 384 1T379 3T375 6T373 9T371 13T369 16V628H71Q70 628 67 630T59 637\",8869:\"369 652Q369 653 370 655T372 658T375 662T379 665T384 667T391 668Q402 666 409 653V40H708Q723 32 723 20T708 0H71Q70 0 67 2T59 9T55 20T59 31T66 38T71 40H369V652\",8872:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V367H796Q811 359 811 347Q811 336 797 328L479 327H161L159 328V172L161 173H797Q798 172 800 171T803 169T805 167T808 164T809 162T810 158T811 153Q811 140 796 133H159V-235Q151 -249 141 -249H139\",8873:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM249 678Q249 679 250 681T252 684T255 688T259 691T264 693T271 694Q282 692 289 679V367H651Q666 359 666 347Q666 334 651 327H289V15Q282 2 271 0Q267 0 264 1T259 3T255 6T253 9T251 13T249 16V678\",8874:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM237 678Q237 679 238 681T240 684T243 688T247 691T252 693T259 694Q270 692 277 679V15Q270 2 259 0Q255 0 252 1T247 3T243 6T241 9T239 13T237 16V678ZM419 678Q419 679 420 681T422 684T425 688T429 691T434 693T441 694Q452 692 459 679V367H818Q833 359 833 347Q833 334 818 327H459V15Q452 2 441 0Q437 0 434 1T429 3T425 6T423 9T421 13T419 16V678\",8876:\"56 681Q70 695 76 695T96 681V368H243L381 530Q521 692 525 692Q537 700 547 688Q554 682 554 674Q554 671 553 669T548 661T539 649T522 631T499 604T465 565T421 512Q296 373 296 368H416H476Q525 368 539 365T554 348Q554 334 543 328H261L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM205 326Q205 328 152 328H96V263Q96 203 98 203Q99 203 123 231T174 290T205 326\",8877:\"56 681Q70 695 76 695T96 681V466H327L425 579Q522 692 527 692Q529 693 534 693Q542 693 547 688T553 674Q553 668 549 663Q549 662 538 650T504 611T463 563L381 468L461 466H543Q554 453 554 446T541 426H345L209 272L376 270H543Q554 257 554 251T541 230H174L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM267 399L292 426H96V270H158L201 321Q256 382 267 399ZM118 228L119 229Q119 230 109 230H96V201L107 212Q118 227 118 228\",8878:\"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V526Q292 368 296 368Q298 368 447 510Q638 695 642 695H645Q651 695 658 688T665 673Q665 666 661 661Q659 660 639 641T578 582T505 512L356 370L505 368H654Q665 357 665 349Q665 343 652 328H314L303 317L292 308V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681\",8879:\"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V466H401L503 563L621 679Q637 695 645 695Q652 695 658 688T665 673Q665 670 663 666Q663 665 651 652T611 612T561 563L458 468L556 466H654Q665 455 665 447T652 426H416L294 308L292 288V270H652Q665 255 665 250T652 230H292V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681ZM358 426H292V361L325 392L358 426\",8882:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26ZM654 11T654 249T653 487T402 369T151 249L275 190Q399 131 524 72T652 11Q654 11 654 249\",8883:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523ZM376 368Q323 393 254 425T155 472L125 487Q123 487 123 249T125 11Q127 12 252 71T502 190L626 249L376 368\",8884:\"694 71Q686 58 676 56H670L382 192Q92 329 90 331Q83 336 83 346Q83 359 96 364Q101 367 379 498T665 634Q671 636 674 636Q686 636 694 621V71ZM654 108T654 346T653 584T402 466T151 346L275 287Q399 228 524 169T652 108Q654 108 654 346ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120\",8885:\"83 620Q83 621 85 624T92 632T103 636Q107 636 389 503T680 365Q694 357 694 346Q694 336 687 331Q685 329 395 192L107 56H101Q90 58 83 71V620ZM376 465Q323 490 254 522T155 570L125 584Q123 584 123 346T125 108Q127 109 252 168T502 287L626 346L376 465ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120\",8888:\"1055 250Q1055 190 1012 141T896 92Q858 92 828 106T781 140T755 180T741 214L738 228V230H405Q71 230 68 232Q55 238 55 250T68 268Q71 270 405 270H738V272L740 280Q742 287 745 297T754 321T771 348T796 374T832 396T881 408H891Q969 408 1012 360T1055 250ZM896 132Q948 132 981 166T1014 250Q1014 301 985 330T920 367Q914 368 891 368Q853 368 816 338T778 250Q778 198 812 165T896 132\",8890:\"318 -182Q302 -212 280 -212H278H275Q249 -212 239 -182L238 84V351H162L87 352Q57 362 57 391T84 429Q89 431 280 431H470L474 429Q477 427 479 426T484 423T490 417T495 410T499 402T500 391Q500 365 470 352L394 351H318V-182\",8891:\"56 697Q56 706 62 711T75 716Q86 716 90 709Q91 708 104 680T147 592T199 483L305 261L411 483Q443 548 481 629Q512 694 518 705T535 716Q543 716 549 710T555 700Q555 693 501 577T388 340T325 210Q316 194 305 194Q292 194 285 210Q282 219 224 339T111 574T56 697ZM55 14T55 20T59 31T66 38T71 40H540Q555 32 555 20T540 0H71Q70 0 67 2T59 9\",8892:\"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18\",8896:\"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249\",8897:\"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708\",8898:\"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217\",8899:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750\",8900:\"242 486Q245 488 250 488Q256 488 258 486Q262 484 373 373T486 258T488 250T486 242T373 127T258 14Q256 12 250 12Q245 12 242 14Q237 16 127 126T14 242Q12 245 12 250T14 258Q16 263 126 373T242 486ZM439 250L250 439L61 250L250 61L439 250\",8901:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250\",8902:\"210 282Q210 284 225 381T241 480Q241 484 245 484Q249 486 251 486Q258 486 260 477T272 406Q275 390 276 380Q290 286 290 282L388 299Q484 314 487 314H488Q497 314 497 302Q497 297 434 266Q416 257 404 251L315 206L361 118Q372 98 383 75T401 40L407 28Q407 16 395 16Q394 16 392 16L390 17L250 159L110 17L108 16Q106 16 105 16Q93 16 93 28L99 40Q105 52 116 75T139 118L185 206L96 251Q6 296 4 300Q3 301 3 302Q3 314 12 314H13Q16 314 112 299L210 282\",8903:\"366 543Q374 545 382 545Q405 545 419 538Q429 534 443 521T462 496Q466 478 466 467Q466 438 444 412Q422 390 388 390Q352 390 331 412Q311 434 311 467Q311 499 331 518Q345 533 366 543ZM146 472Q146 479 153 485T166 492Q171 492 187 476T279 385L386 278L495 385Q600 492 608 492Q615 492 621 486T628 472Q628 467 614 452T531 367L435 270H706Q720 256 720 250Q720 241 706 230H435L531 132Q600 63 614 48T628 27Q628 20 622 14T608 7Q600 7 495 114L386 221L279 114Q204 39 188 23T166 7Q159 7 153 13T146 27Q146 32 160 47T244 132L339 230H68Q55 243 55 250Q55 255 68 270H339L244 367Q175 436 161 451T146 472ZM466 34Q466 4 447 -20T388 -44Q353 -44 331 -22Q311 1 311 34Q311 66 331 85Q347 101 366 110Q374 112 382 112Q405 112 419 105Q429 100 443 87T462 63Q466 45 466 34\",8904:\"833 50T833 250T832 450T659 351T487 250T658 150T832 50Q833 50 833 250ZM873 10Q866 -5 854 -5Q851 -5 845 -3L449 226L260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489Q33 505 43 505Q51 505 260 385L449 274L845 503Q851 505 853 505Q866 505 873 490V10ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250\",8905:\"146 479Q159 492 166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 621 486T628 472Q628 464 522 357L415 250L522 144Q628 37 628 28Q628 21 622 15T608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q162 8 160 9T153 15T146 21V479ZM186 77L359 250L186 424V77\",8906:\"146 472Q146 479 152 485T166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 628 479V21Q615 8 608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q159 8 153 14T146 28Q146 37 253 144L359 250L253 357Q146 464 146 472ZM588 77V424L499 337L415 250L588 77\",8907:\"55 674Q55 682 62 688T76 694H77Q83 694 100 677T208 561Q320 440 410 342Q462 286 541 201Q677 55 699 30T722 -2Q722 -9 716 -15T701 -22T688 -17Q687 -15 542 141T394 301L388 306L240 146Q119 15 101 -3T75 -22T61 -16T55 -2Q55 4 67 19T158 117Q190 151 209 172L361 336L209 500Q62 657 57 667Q55 671 55 674\",8908:\"84 -22T76 -22T62 -16T55 -2Q55 4 78 30T249 215Q321 293 367 342Q672 672 683 682Q695 694 702 694Q710 694 716 688T722 674Q722 668 710 653T619 555Q587 521 568 500L416 336L568 172Q715 15 720 5Q722 1 722 -2Q722 -9 716 -15T702 -22H700Q693 -22 671 1T537 146L389 306Q387 304 340 253T237 143T135 33L89 -17Q84 -22 76 -22\",8909:\"56 433Q56 464 71 464Q74 464 77 461Q82 454 82 438T91 397T123 347Q166 307 222 307Q264 307 308 331T386 385T465 438T556 463Q631 463 676 408T722 283Q722 250 708 250Q704 250 699 257Q695 265 693 286T682 330Q670 350 655 367Q612 407 556 407Q514 407 470 383T393 329T314 276T222 251Q148 251 102 306T56 433ZM57 56Q57 71 73 76H706Q722 70 722 56Q722 44 707 36H71Q57 43 57 56\",8910:\"83 558Q83 566 89 572T104 578Q108 578 116 577T146 570T190 555T239 526T286 480Q308 453 325 420T351 358T367 304T376 265T380 251T381 253Q381 262 395 312Q428 434 492 499T642 576Q654 578 655 578Q664 578 670 572T676 558Q676 543 657 540T599 524T525 476Q406 362 400 29V8Q400 -21 380 -21Q369 -21 362 -11Q360 -7 360 12Q360 115 348 200T308 360T231 480T111 537Q83 540 83 558\",8911:\"104 -22Q95 -22 89 -16T83 -2Q83 11 98 16T135 23T192 46T256 103Q360 233 360 549Q360 554 360 557T361 563T362 567T364 569T367 572T371 576Q377 578 380 578Q401 578 401 547Q401 543 401 537T400 527Q409 53 648 19Q676 16 676 -2Q676 -10 670 -16T655 -22Q654 -22 642 -20Q556 -9 492 56T395 244Q381 294 381 303Q381 305 380 305T374 275T352 201T310 110T234 27T117 -20Q105 -22 104 -22\",8912:\"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250ZM694 134Q694 123 679 114H425H384Q350 114 326 121T277 154Q238 193 238 251Q238 322 295 361Q318 378 339 382T412 387Q423 387 459 387T520 386H679Q694 377 694 366Q694 354 679 346H519Q493 346 458 346T411 347Q360 347 341 342T303 315Q278 287 278 250Q278 210 301 187T351 156Q358 154 519 154H679Q694 146 694 134\",8913:\"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520ZM83 366Q83 376 96 386H244Q280 386 317 386T378 386L402 387Q456 387 498 348T540 250Q540 203 512 168T446 120Q427 114 353 114H99Q84 120 84 134Q84 147 98 154H258Q284 154 319 154T366 153Q416 153 436 158T474 185Q500 214 500 250Q500 290 477 313T426 344Q419 346 258 346H98Q83 354 83 366\",8914:\"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21ZM229 -21H227Q215 -21 209 -7V166Q209 304 209 327T215 363Q226 398 259 421T333 444Q380 444 414 416T455 347Q457 339 457 166V-7Q449 -21 439 -21H437H435Q423 -21 417 -7V164Q417 303 417 325T411 358Q387 403 333 403T255 358Q250 347 250 325T249 164V-7Q241 -21 231 -21H229\",8915:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM437 598Q450 598 457 583V410Q457 237 455 229Q448 189 414 161T333 132Q291 132 255 157T211 230Q209 237 209 412L210 585Q220 598 229 598Q242 598 249 583V412Q249 273 249 251T255 218Q279 173 333 173T411 218Q416 229 416 251T417 412V583Q425 598 437 598\",8916:\"76 -22Q64 -22 56 -7V176L57 360L59 370Q66 401 83 426T123 468T171 495T221 513T265 522T298 527L311 528H314V625L315 723Q325 736 334 736Q346 736 354 721V528H356L368 527Q380 526 399 523T441 515T490 498T537 472T578 433T606 379Q611 359 611 171V-7Q604 -21 591 -21T571 -7V170Q571 313 571 337T565 375Q555 408 526 432T461 467T402 482T365 487H354V-7Q347 -21 334 -21T314 -7V487H303Q251 484 207 467Q121 438 99 367L97 357L96 174V-9Q86 -22 76 -22\",8918:\"86 261Q92 267 381 404T673 541Q680 541 686 535T693 521T689 510Q684 504 418 379L151 250L418 121Q686 -4 689 -10Q693 -14 693 -21T687 -34T675 -41Q668 -41 380 96T86 239Q82 244 82 250Q82 257 86 261ZM610 250Q610 224 592 198T531 172Q498 172 475 195Q453 214 453 250Q453 308 513 328Q515 330 535 330Q569 328 589 304T610 250\",8919:\"82 521Q82 529 89 535T100 541Q107 541 395 404T689 261Q693 257 693 250T689 239Q684 234 396 97T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4Q118 9 358 121L624 250L358 379Q91 503 86 510Q82 514 82 521ZM165 250Q165 282 188 306T239 330Q262 330 275 323Q303 312 318 283Q322 272 322 250Q322 213 300 195Q277 172 246 172Q224 172 213 177Q165 200 165 250\",8920:\"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM958 -48Q958 -54 953 -60T938 -67H937Q931 -67 855 -26Q749 33 648 88Q380 235 378 239Q375 243 375 250T378 261Q381 266 655 415T934 567L938 568Q941 567 944 567Q958 562 958 548Q958 540 952 534Q951 532 693 391L436 250L693 109Q951 -32 952 -34Q958 -40 958 -48ZM1277 -48Q1277 -54 1272 -60T1257 -67H1256Q1250 -67 1174 -26Q1068 33 967 88Q699 235 697 239Q694 243 694 250T697 261Q700 266 974 415T1253 567L1257 568Q1260 567 1263 567Q1277 562 1277 548Q1277 540 1271 534Q1270 532 1012 391L755 250L1012 109Q1270 -32 1271 -34Q1277 -40 1277 -48\",8921:\"75 -67Q65 -67 60 -61T55 -48Q55 -40 61 -34Q62 -32 329 109L595 250L329 391Q62 532 61 534Q55 540 55 548Q55 562 69 567H77Q81 567 222 493T506 342T653 264Q667 250 653 236Q649 234 504 157T220 7T77 -67H75ZM364 547Q364 563 381 567L384 568Q387 568 518 499T795 353T955 269Q967 261 967 250T955 231Q925 216 780 139T513 -3T383 -67Q373 -67 369 -60T364 -47Q364 -40 370 -34Q373 -31 639 109L904 250L639 391Q373 531 370 534Q364 540 364 547ZM674 538T674 548T681 562T693 567Q699 567 816 505Q915 453 993 412Q1050 382 1132 339Q1241 282 1259 271T1277 250Q1277 241 1263 232Q1246 221 985 84Q698 -67 692 -67Q674 -67 674 -47Q674 -38 680 -33Q683 -30 947 109L1213 250L947 391Q683 530 680 533Q674 538 674 548\",8922:\"674 445Q674 438 669 432T655 425T369 531T90 640Q83 645 83 655Q83 668 95 673Q644 886 654 886Q662 886 668 880T674 866Q674 856 663 850Q649 843 411 751L160 655L407 560Q474 534 561 501Q646 469 660 462T674 445ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM83 55Q83 68 94 73Q98 76 104 76Q108 75 383 -30T664 -138Q674 -144 674 -155Q674 -165 667 -170Q664 -173 385 -279T104 -386Q85 -386 83 -368Q83 -354 92 -349Q93 -349 347 -251L597 -155L346 -59Q296 -40 223 -12Q118 28 101 36T83 55\",8923:\"111 425T102 425T88 431T83 445V446Q83 455 96 461Q111 469 203 504Q287 536 350 560L597 655L346 751Q94 848 92 850Q83 856 83 866Q83 873 88 879T104 886Q109 885 386 779T667 670Q674 665 674 655T667 640Q665 638 388 532ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM653 76Q656 76 660 75T669 68T674 56Q674 46 665 40Q663 38 411 -59L160 -155L410 -251Q664 -349 665 -349Q674 -354 674 -368Q672 -386 654 -386Q650 -386 371 -279T90 -170Q83 -165 83 -155Q83 -144 93 -138Q645 76 653 76\",8926:\"113 424Q83 424 83 444Q83 453 96 464H121Q181 466 234 474T341 501T435 545T505 613T542 707Q545 734 564 734Q583 731 583 714Q583 658 560 613T500 538T414 486T321 453T229 434T156 426T113 424ZM112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q624 310 653 556Q657 580 675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17L692 14Q691 11 689 8T683 3T673 0Q657 0 653 24Q623 270 118 270H112\",8927:\"195 713Q195 725 201 729T214 734Q227 734 231 722T238 691T255 641T299 580Q405 474 656 464H681Q694 451 694 443Q694 424 670 424H664Q535 424 415 465T235 595Q195 657 195 713ZM668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668\",8928:\"82 344Q82 349 95 364H124Q266 364 398 390L429 397L509 595Q519 619 536 659Q581 766 590 783T609 801Q616 801 622 795T629 781Q629 776 553 595Q533 548 516 506T489 439T480 415Q482 415 505 426T538 444Q632 498 651 601Q654 621 658 628T673 635Q680 635 686 629T693 615Q693 591 678 546Q636 433 484 375L458 364L451 348Q443 332 443 329T455 324Q480 316 503 307T560 277T619 233T664 170T691 86Q693 68 691 64Q684 53 672 53Q664 53 658 59Q657 60 650 97T617 174T538 244Q515 257 476 273T428 289Q425 289 412 256Q381 179 344 90L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L302 97Q384 288 384 299Q384 302 341 308T235 319T124 324H95Q82 337 82 344ZM399 338Q403 338 406 346L409 353L375 344Q375 343 384 341T399 338\",8929:\"146 -283Q146 -282 174 -213T202 -143H95Q82 -127 82 -123T95 -103H220L300 93Q343 196 374 270Q385 294 386 299L373 295Q331 287 289 268Q241 249 208 224T159 174T135 127T124 85T118 59Q112 53 103 53Q91 53 84 64Q82 68 84 86Q96 185 174 248T375 337L400 344Q399 344 381 348T351 355T316 364T276 379T235 398T193 424T155 456T122 497T98 546Q82 587 82 615Q82 622 88 628T102 635Q112 635 116 628T124 601Q128 579 134 562T159 515T207 463T290 418T415 384L422 381L506 586Q571 744 584 772T609 801Q616 801 622 795T629 781T544 577Q525 529 504 478T473 402T462 375Q480 373 500 373Q579 364 651 364H680Q682 361 686 357T691 351T693 344Q693 337 680 324H651Q553 324 451 310L433 308L349 104L262 -101L473 -103H682Q694 -115 694 -123Q694 -133 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283\",8934:\"86 450Q93 455 380 592T673 730Q680 730 686 724T693 710Q693 702 688 699Q686 693 417 568L151 439L417 310Q685 185 688 179Q693 176 693 168Q693 161 687 155T675 148Q668 148 380 285T86 428Q74 438 86 450ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8935:\"88 723Q95 730 99 730Q106 730 394 593T688 450Q693 447 693 439T688 428Q683 423 395 286T99 148Q94 148 88 155T82 168Q82 175 86 179Q89 184 357 310L624 439L357 568Q88 694 86 699Q81 703 81 711T88 723ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8936:\"95 419Q81 433 81 439T95 459H124Q318 459 455 501Q515 521 556 550T615 607T641 659T652 702T659 725Q667 730 673 730Q680 730 686 724T693 710Q693 682 677 641Q668 616 654 594T622 554T586 522T545 497T504 477T464 462T428 452T397 444T375 439Q379 437 410 430T476 411T551 379T625 321T677 237Q693 196 693 168Q693 161 687 155T673 148Q662 148 658 154T651 181Q638 253 591 300T455 377Q318 419 124 419H95ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8937:\"679 459Q693 445 693 439Q693 430 679 419H651Q455 419 319 377Q231 347 184 300T124 181Q120 161 116 155T102 148Q95 148 89 154T82 168Q82 192 97 237Q111 275 137 306T188 355T249 391T307 414T361 429T399 439Q397 440 364 447T298 467T224 499T149 557T97 641Q82 686 82 710Q82 717 88 723T102 730L115 725Q118 722 124 697Q137 625 184 578T319 501Q456 459 651 459H679ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8938:\"693 -30Q686 -41 673 -41Q661 -41 506 34L346 110L280 -44Q228 -162 216 -185T193 -208Q177 -208 173 -192Q173 -186 242 -30T311 128Q271 145 184 186T86 236Q82 240 82 246Q82 251 86 259Q96 267 271 350L449 434L506 565Q537 635 551 664T571 700T582 706Q587 706 593 701T600 690Q600 679 553 572Q504 463 504 461L586 501Q672 539 673 539Q679 539 693 525V-30ZM653 10V488L566 445L480 405L422 276Q415 260 405 236T388 199T376 171T368 151T366 145Q368 143 510 77T653 10ZM422 374Q422 376 420 376T285 313T151 248Q315 168 326 163Q415 356 422 374\",8939:\"82 525Q96 539 102 539Q103 539 122 530T186 501T266 463L426 388Q428 388 495 541Q564 694 569 699Q573 706 581 706Q587 706 593 702T600 691Q600 676 533 528Q515 486 506 465T485 418T470 381T466 370Q466 369 575 316Q676 269 689 259Q693 253 693 248Q693 242 689 236Q688 235 506 145Q328 63 324 59Q324 50 266 -70Q224 -169 214 -188T193 -208Q177 -208 173 -192Q173 -183 222 -77Q244 -29 257 2T269 34L186 -6Q108 -43 99 -43Q93 -43 82 -30V525ZM271 416Q129 485 126 485H125Q122 485 122 250Q122 10 124 10L211 50L295 92L411 350Q411 351 271 416ZM624 248L449 332L440 319Q434 297 393 214Q353 121 353 119Q355 119 489 182T624 248\",8940:\"82 -123Q82 -114 93 -103H166L238 -101L293 50Q349 200 349 204L220 266Q166 291 140 304T100 325T84 336T82 344Q82 353 94 360Q112 372 282 453L473 541L482 568Q487 578 529 693Q559 785 569 795Q573 802 581 802Q587 802 593 797T599 786Q599 775 564 675L526 570Q526 568 561 584T633 617T673 635Q679 635 693 621V66Q686 54 679 54Q665 54 526 119Q491 137 458 153T405 177T386 184Q385 182 334 42T282 -101T482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123ZM653 106V584L506 513L453 370Q442 339 428 300T407 243T400 224Q403 222 527 164T653 106ZM453 486Q453 488 451 488T300 417T151 344L224 308Q247 298 285 279T331 257L364 241L453 486\",8941:\"82 621Q96 635 102 635T249 568L420 486L449 473L469 533Q563 789 569 797Q573 801 581 801Q598 801 600 786Q602 781 544 617L484 455Q531 435 584 408Q677 364 689 355Q693 351 693 344Q693 339 692 337T676 325T631 302T538 257Q504 241 465 223T406 195T386 186Q384 184 333 44T282 -101Q282 -103 482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123Q82 -114 93 -103H166L238 -101L333 159Q326 159 220 106Q110 54 97 54Q89 54 82 66V621ZM298 501Q155 567 142 575L122 584V344Q122 106 124 106Q125 106 180 132T291 185T351 213Q355 217 393 326L433 435Q433 436 298 501ZM549 381Q472 417 471 417L406 241Q408 240 516 291T624 344L549 381\",8942:\"78 30Q78 54 95 72T138 90Q162 90 180 74T199 31Q199 6 182 -12T139 -30T96 -13T78 30ZM78 440Q78 464 95 482T138 500Q162 500 180 484T199 441Q199 416 182 398T139 380T96 397T78 440ZM78 840Q78 864 95 882T138 900Q162 900 180 884T199 841Q199 816 182 798T139 780T96 797T78 840\",8943:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250\",8945:\"133 760Q133 784 150 802T193 820Q217 820 235 804T254 761Q254 736 237 718T194 700T151 717T133 760ZM580 460Q580 484 597 502T640 520Q664 520 682 504T701 461Q701 436 684 418T641 400T598 417T580 460ZM1027 160Q1027 184 1044 202T1087 220Q1111 220 1129 204T1148 161Q1148 136 1131 118T1088 100T1045 117T1027 160\",8965:\"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18\",8966:\"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97\",8968:\"174 734Q178 746 190 750H298H369Q400 750 411 747T422 730T411 713T372 709Q365 709 345 709T310 710H214V-235Q206 -248 196 -250Q192 -250 189 -249T184 -247T180 -244T178 -241T176 -237T174 -234V734\",8969:\"21 717T21 730T32 746T75 750H147H256Q266 742 269 735V-235Q262 -248 251 -250Q247 -250 244 -249T239 -247T235 -244T233 -241T231 -237T229 -234V710H133Q119 710 99 710T71 709Q43 709 32 713\",8970:\"174 734Q174 735 175 737T177 740T180 744T184 747T189 749T196 750Q206 748 214 735V-210H310H373Q401 -210 411 -213T422 -230T411 -247T369 -251Q362 -251 338 -251T298 -250H190Q178 -246 174 -234V734\",8971:\"229 734Q229 735 230 737T232 740T235 744T239 747T244 749T251 750Q262 748 269 735V-235Q266 -240 256 -249L147 -250H77Q43 -250 32 -247T21 -230T32 -213T72 -209Q79 -209 99 -209T133 -210H229V734\",8988:\"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306\",8989:\"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306\",8990:\"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172\",8991:\"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351\",8994:\"55 141Q55 149 72 174T125 234T209 303T329 360T478 388H526Q649 383 765 319Q814 291 858 250T923 179T944 141Q944 133 938 128T924 122Q914 124 912 125T902 139Q766 328 500 328Q415 328 342 308T225 258T150 199T102 148T84 124Q81 122 75 122Q55 127 55 141\",8995:\"923 378Q944 378 944 358Q944 345 912 311T859 259Q710 134 500 134Q288 134 140 259Q55 336 55 358Q55 366 61 372T75 378Q78 378 84 376Q86 376 101 356T147 310T221 257T339 212T500 193Q628 193 734 236Q841 282 903 363Q914 378 923 378\",9001:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",9002:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",9136:\"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 454T239 315T239 247Q240 235 240 124V40Q240 -17 233 -53T201 -130Q155 -206 78 -244H69H64Q58 -244 57 -243T56 -234Q56 -232 56 -231V-225Q56 -218 63 -215Q153 -153 170 -39Q172 -25 173 119V219Q173 245 174 249Q173 258 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741\",9137:\"78 744Q153 706 196 640T239 492V376Q239 341 239 314T238 271T238 253Q239 251 239 223V119V49Q239 -39 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 258 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78\",9168:\"312 0V602H355V0H312\",9416:\"451 -175Q328 -175 226 -115T66 47T8 267Q8 303 15 342T39 431T94 531T186 622Q239 663 307 686T424 709H440Q604 709 716 622Q757 592 788 555T838 482T869 414T886 350T892 301T894 267Q894 147 835 45T674 -116T451 -175ZM854 268Q854 375 802 467T657 614T450 670Q283 670 166 552T49 267Q49 99 167 -18T453 -136Q617 -136 735 -18T854 268ZM273 378Q273 430 309 474T409 527Q411 527 417 527T428 528Q498 528 549 484L567 505Q583 528 590 528H594Q600 528 606 522V350L600 344H586Q577 344 574 344T569 347T566 357Q542 491 432 491Q389 491 365 465T340 407Q340 391 344 378T358 356T377 340T400 328T421 321T443 316T459 313Q499 305 517 300T559 279T601 238Q629 195 629 148Q629 80 583 33T471 -14Q392 -14 330 30Q312 6 293 -13Q292 -14 285 -14Q279 -14 273 -8V77V138Q273 160 275 165T286 170H294H307Q313 164 313 158Q313 108 350 67T471 26Q512 26 537 54T562 119Q562 137 558 151T544 176T527 193T504 205T483 212T459 218T441 222Q391 232 368 241T318 273Q273 316 273 378\",9484:\"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306\",9488:\"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306\",9492:\"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172\",9496:\"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351\",9585:\"19 -195Q13 -195 7 -188T0 -176Q0 -169 18 -151L822 683Q835 694 840 694T852 688T860 674Q860 667 810 614T460 252Q57 -167 44 -179Q27 -195 19 -195\",9586:\"0 675Q0 681 6 687T19 694Q27 694 44 678L460 247Q759 -62 809 -115T860 -175Q860 -183 852 -189T840 -195Q835 -195 822 -184L18 649Q0 667 0 675\",9632:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9633:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682\",9642:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9650:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99\",9651:\"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347\",9652:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99\",9653:\"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347\",9654:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523\",9656:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523\",9657:\"26 489Q33 505 43 505Q51 505 260 385Q464 266 471 259Q473 257 473 250Q473 242 469 239Q459 231 260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250\",9660:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556\",9661:\"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460\",9662:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556\",9663:\"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460\",9664:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26\",9666:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26\",9667:\"473 10Q466 -5 454 -5Q451 -5 445 -3Q444 -3 343 56T140 173T35 234Q26 239 26 250T35 266Q40 269 240 384T445 503Q451 505 453 505Q466 505 473 490V10ZM433 50T433 250T432 450T259 351T87 250T258 150T432 50Q433 50 433 250\",9674:\"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709ZM567 290T567 291T451 475T333 658L100 293Q100 288 215 108L333 -74Q334 -74 450 108\",9711:\"56 250Q56 353 95 442T196 589T335 681T491 715Q573 715 635 693Q694 673 747 635T846 543T917 412T944 250Q944 58 815 -78T500 -215Q457 -215 429 -210Q274 -183 165 -56T56 250ZM500 -176Q664 -176 784 -54T904 250Q904 418 799 536T543 674Q534 675 493 675Q425 675 357 647T229 567T133 432T96 250Q96 160 129 80T217 -56T346 -144T500 -176\",9723:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682\",9724:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9733:\"367 395Q374 416 398 492T442 627T463 688Q463 692 467 692Q471 694 472 694Q478 694 484 680T523 562Q553 469 576 400L577 395H731H819Q872 395 883 394T895 384Q895 380 891 376T832 333Q794 305 767 285Q643 195 643 194L690 47Q737 -96 737 -103Q737 -111 727 -111Q721 -111 594 -18L472 71L350 -18Q223 -111 217 -111Q207 -111 207 -103Q207 -96 254 47L301 194Q301 195 241 239T118 328T51 378Q49 382 49 384Q49 392 58 393T110 395H213H367\",9824:\"181 -21Q134 -21 96 27T55 193Q55 224 58 247T82 317T143 410Q172 443 234 498Q282 543 314 598T360 687T380 725Q386 727 389 727Q395 727 398 725T406 716T413 702T423 677T439 641Q481 556 544 498Q633 420 678 353T723 204Q723 142 711 94T669 12T590 -21Q520 -21 490 8T459 66V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V66Q319 57 314 44T297 16T257 -10T191 -21H181\",9825:\"55 490Q55 557 71 604T114 674T167 706T222 716Q279 716 322 684T389 605Q391 610 395 617T414 643T447 677T494 704T555 716Q642 716 682 652T723 490Q723 455 718 426T684 342T602 227Q573 196 537 161T485 110T449 63T412 -8Q408 -22 404 -27T389 -33Q382 -33 379 -31T372 -23T366 -8T355 18T335 54Q319 81 298 104T239 163T176 227Q102 310 79 371T55 490ZM198 674Q143 664 119 613T95 491Q95 415 137 346Q174 282 265 194T384 48L389 39Q391 42 397 54T406 71T415 86T427 104T442 122T464 146T491 172Q571 249 613 303Q683 396 683 487Q683 581 649 631Q613 676 556 676Q495 676 457 634T410 538Q407 514 390 514Q386 514 380 517Q372 520 369 536T355 581T319 635Q277 675 223 675H217H208L204 674Q200 674 198 674\",9826:\"370 714Q370 717 375 722T388 727Q398 727 403 721T417 697Q420 692 421 689Q536 465 709 304Q723 291 723 282T709 260Q529 93 406 -153Q402 -162 390 -162H389Q379 -162 376 -158T357 -125Q247 89 89 241L64 265Q55 272 55 282Q55 287 57 290T64 300T77 312T98 331T127 361Q197 435 258 523T344 663L370 714ZM655 299Q568 384 508 470T389 662L376 638Q362 613 341 577T289 497T215 399T123 299L105 282L123 265Q210 180 270 94T389 -98L402 -74Q416 -49 437 -13T489 67T563 165T655 265L673 282L655 299\",9827:\"213 532Q213 615 265 670T389 726Q461 726 513 671T565 532Q565 511 562 492T553 458T541 432T526 409T512 393T498 379L490 371L511 326Q512 326 516 330T528 341T546 353T572 363T606 368Q664 368 707 315T750 174Q750 87 699 33T579 -22Q567 -22 553 -20T517 -10T479 16T459 63V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V63Q315 25 281 2T197 -22Q132 -22 80 32T28 174Q28 255 69 311T175 368Q192 368 207 364T232 353T250 341T262 331T267 326L288 371L280 378Q272 385 267 391T253 407T238 430T226 457T217 492T213 532\",9837:\"200 467Q254 467 293 428T332 321Q332 147 104 -11L88 -22H75Q62 -22 56 -16L55 362V647Q55 743 60 748Q63 750 76 750H83Q87 750 95 744V434L104 440Q144 467 200 467ZM237 322Q237 360 225 388T183 417Q158 417 134 407T101 378Q96 370 96 349T95 197V34Q152 91 194 167T237 322\",9838:\"65 721Q78 734 94 734Q100 734 104 727V444L116 449Q129 454 157 465T208 486Q313 527 314 527Q318 527 324 521V-210Q306 -223 294 -223Q289 -223 284 -216V-13L270 -18Q257 -24 231 -34T180 -54Q77 -96 74 -96T65 -90V721ZM104 13Q282 84 283 85Q284 85 284 252Q284 418 283 418L230 396L140 360L104 346V13\",9839:\"101 -223Q94 -223 93 -217T91 -188V-151Q91 -88 90 -88Q87 -88 80 -92T68 -96Q62 -96 56 -90L55 -50V-22Q55 -8 58 -4T78 5L91 10V177Q91 343 90 343Q87 343 80 339T68 335Q62 335 56 341L55 381V409Q55 423 58 427T78 436L91 441V543V616Q91 643 93 648T106 656Q119 662 126 659Q130 657 130 645T131 554V456L257 503V607L258 710L260 712Q261 715 272 719T286 723Q293 723 295 715T297 671V617Q297 519 298 519Q301 519 307 522T319 526Q327 526 333 521V437L330 435Q328 432 312 427L297 421V254Q297 88 298 88Q301 88 307 91T319 95Q327 95 333 90V6L330 4Q328 1 312 -4L297 -10V-78V-122Q297 -145 295 -149T282 -156Q274 -160 268 -160Q257 -160 257 -130V-89V-25L131 -72V-210Q123 -215 116 -218T104 -222L101 -223ZM257 72V406L131 359V25L257 72\",10003:\"84 231Q84 244 114 264T170 285Q176 285 183 274T224 205Q267 129 268 129Q271 141 279 163T318 250T389 378T502 523T662 673Q702 706 732 706H734Q749 706 749 695Q749 682 730 666T660 607T559 505Q387 299 328 29Q324 0 295 -17T245 -34H241Q234 -34 225 -21T185 46Q166 79 154 101Q84 223 84 231\",10016:\"195 702T195 706T201 716H632Q638 710 638 706T636 700T621 690Q436 581 427 374V357H430Q554 357 645 421Q682 447 711 483T755 542T770 567Q775 572 786 563V131Q777 125 774 125T762 139Q709 228 642 274T482 333Q452 337 430 337H427V320Q430 279 437 247T462 170T521 82T621 4Q630 -2 633 -4T637 -7T638 -12Q638 -16 632 -22H201Q195 -16 195 -12T197 -6T212 4Q397 113 406 320V337H403Q279 337 188 273Q151 247 122 211T78 152T63 127Q58 122 48 131V563Q54 569 59 569Q62 569 71 555Q124 466 191 420T351 361Q381 357 403 357H406V374Q403 415 396 447T371 525T312 613T212 690Q199 697 197 699\",10072:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",10216:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",10217:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",10222:\"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 394V331Q240 259 239 250Q240 242 240 119V49Q240 -42 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 260 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741\",10223:\"78 744Q153 706 196 640T239 492V376Q239 339 239 311T238 269T238 252Q240 236 240 124V40Q240 -18 233 -53T202 -130Q156 -206 79 -244H70H65Q58 -244 57 -242T56 -231T57 -220T64 -215Q153 -154 170 -39Q173 -18 174 119V247Q173 249 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78\",10229:\"165 270H1510Q1525 262 1525 250T1510 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270\",10230:\"84 237T84 250T98 270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H98Q84 237 84 250\",10231:\"165 270H1694Q1578 357 1551 493Q1551 494 1551 496T1550 499Q1550 511 1567 511H1570Q1579 511 1582 510T1588 506T1591 497T1594 481T1602 456Q1624 389 1675 336T1794 261Q1803 258 1803 250Q1803 244 1798 241T1774 231T1736 212Q1695 186 1665 152T1620 85T1599 35T1591 4Q1589 -6 1586 -8T1570 -11Q1550 -11 1550 0Q1550 7 1555 25Q1587 151 1694 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270\",10232:\"274 173H1539Q1540 172 1542 171T1545 169T1547 167T1550 164T1551 162T1552 158T1553 153Q1553 140 1538 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1538Q1553 359 1553 347Q1553 336 1539 328L1221 327H903L900 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173\",10233:\"1218 514Q1218 525 1234 525Q1239 525 1242 525T1247 525T1251 524T1253 523T1255 520T1257 517T1260 512Q1297 438 1358 381T1469 300T1565 263Q1582 258 1582 250T1573 239T1536 228T1478 204Q1334 134 1260 -12Q1256 -21 1253 -22T1238 -24Q1218 -24 1218 -17Q1218 -13 1223 0Q1258 69 1309 123L1319 133H70Q56 140 56 153Q56 168 72 173H1363L1373 181Q1412 211 1490 250Q1489 251 1472 259T1427 283T1373 319L1363 327H710L707 328L390 327H72Q56 332 56 347Q56 360 70 367H1319L1309 377Q1276 412 1247 458T1218 514\",10234:\"1438 514Q1438 525 1454 525Q1459 525 1462 525T1467 525T1471 524T1473 523T1475 520T1477 517T1480 512Q1517 438 1578 381T1689 300T1785 263Q1802 258 1802 250T1793 239T1756 228T1698 204Q1554 134 1480 -12Q1476 -21 1473 -22T1458 -24Q1438 -24 1438 -17Q1438 -13 1443 0Q1478 69 1529 123L1539 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1539L1529 377Q1496 412 1467 458T1438 514ZM274 173H1583L1593 181Q1632 211 1710 250Q1709 251 1692 259T1647 283T1593 319L1583 327H930L927 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173\",10236:\"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H95V155\",10731:\"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709\",10744:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",10752:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250\",10753:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103\",10754:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59\",10756:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276\",10758:\"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217\",10799:\"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29\",10815:\"28 660Q28 676 31 679T46 683H50Q87 681 182 681Q217 681 247 681T294 682T315 682Q321 682 323 682T328 679T331 673T332 660Q332 643 328 640T304 637Q239 637 231 626Q229 620 229 334V46H520V334Q520 620 518 626Q510 637 445 637Q426 637 422 640T417 660Q417 675 420 678T432 682H435Q437 682 467 682T569 681T671 681T703 682Q714 682 717 679T721 660Q721 643 717 640T693 637Q628 637 620 626Q619 623 619 342Q619 60 620 57Q628 46 693 46Q714 46 717 43T721 23Q721 5 715 1Q713 0 374 0Q36 0 34 1Q28 5 28 23Q28 40 31 43T56 46Q121 46 129 57Q131 63 131 342Q131 620 129 626Q121 637 56 637Q35 637 32 640T28 660\",10846:\"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97\",10877:\"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM94 170Q102 172 104 172Q110 171 254 103T535 -30T678 -98Q694 -106 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 164 94 170\",10878:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM674 172Q692 172 694 154Q694 142 687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 96 -100Q100 -98 380 35T665 170T674 172\",10885:\"667 761Q669 762 673 762Q682 762 688 756T694 741Q694 731 687 727Q684 724 420 613L156 502L416 392Q476 367 544 338T647 295T682 280Q694 274 694 262Q694 244 676 242Q670 242 524 303T235 425T90 487Q83 493 83 501Q83 514 94 519Q97 520 378 639T667 761ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257\",10886:\"90 727Q83 734 83 743Q83 751 89 756T104 762Q111 760 396 641Q686 518 687 517Q694 512 694 502T687 487Q686 486 543 425T253 303T101 242Q83 244 83 262Q83 274 95 280Q96 280 130 294T232 338T361 392L621 502L357 613Q93 724 90 727ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257\",10887:\"380 497Q445 528 522 564T636 618T673 635Q680 635 686 628T693 615T689 603Q686 599 418 472L151 343L418 215Q686 88 689 83Q693 79 693 72T687 59T675 52Q669 52 381 189T86 332Q82 337 82 344Q82 350 86 355Q91 359 380 497ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124\",10888:\"82 614Q82 620 86 625T94 632T100 635Q106 635 394 498T689 355Q693 349 693 343Q693 338 689 332Q683 327 395 190T100 52Q95 52 89 58T82 72Q82 80 95 88Q114 99 358 215L624 343L358 472Q89 599 86 603Q82 607 82 614ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124\",10889:\"86 512Q93 518 381 639T673 761Q680 761 686 755T693 741Q693 733 688 730Q685 723 419 612L155 501L419 390Q685 277 688 272Q693 269 693 261Q693 254 687 248T675 241Q669 241 381 362T86 490Q74 500 86 512ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59\",10890:\"86 730Q81 734 81 740Q81 747 88 754T99 761Q103 761 392 640T688 512Q693 509 693 501T688 490Q682 484 394 363T99 241Q94 241 88 248T82 261Q82 268 86 272Q89 277 355 390L619 501L355 612Q89 723 86 730ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59\",10891:\"674 1003Q681 1003 687 999T694 983Q694 973 683 967Q669 959 420 868L162 772L422 676Q683 579 685 577Q694 571 694 560Q694 550 687 546T673 541Q669 542 384 647T93 755Q83 760 83 772Q83 783 91 788Q98 791 383 897T674 1003ZM84 354T84 367T98 387H679Q694 379 694 367Q694 354 679 347H98Q84 354 84 367ZM84 160T84 173T98 193H679Q694 185 694 173Q694 160 679 153H98Q84 160 84 173ZM94 -3Q102 -1 104 -1Q107 -2 392 -107T684 -215Q694 -219 694 -232Q694 -241 687 -247Q686 -248 395 -357Q106 -463 101 -463Q83 -461 83 -443Q83 -431 94 -426Q97 -423 357 -328L615 -232L355 -136Q94 -39 92 -37Q83 -31 83 -21Q83 -9 94 -3\",10892:\"104 541Q98 541 91 545T83 560Q83 571 92 577Q94 579 355 676L615 772L357 868Q108 959 94 967Q83 973 83 983Q83 989 87 996T104 1003Q109 1002 396 896T687 787Q694 781 694 772Q694 759 684 755Q678 752 393 647T104 541ZM84 367Q84 380 98 387H679Q694 379 694 367Q694 356 680 348L390 347H100Q84 352 84 367ZM84 173Q84 188 100 193H680Q694 183 694 173Q694 160 679 153H98Q84 160 84 173ZM674 -1Q682 -1 688 -6T694 -20Q694 -31 685 -37Q683 -39 422 -136L162 -232L420 -328Q680 -423 683 -426Q694 -431 694 -443Q694 -461 676 -463Q671 -463 382 -357Q91 -248 90 -247Q83 -242 83 -232Q83 -220 93 -215Q667 -1 674 -1\",10901:\"674 636Q682 636 688 631T694 616Q694 605 687 601Q685 599 395 462L107 326H101Q83 328 83 345Q83 358 96 365Q102 367 382 500T665 634Q671 636 674 636ZM674 442Q692 442 694 424Q694 412 687 407Q686 406 417 278L151 152L399 34Q687 -102 691 -107Q694 -113 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 165 96 171Q104 175 382 306T665 440Q669 442 674 442\",10902:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 354 694 346Q694 328 676 326H670L382 462Q317 493 226 535Q119 585 101 595T83 616ZM94 440Q102 442 104 442Q110 441 254 373T535 240T678 172Q679 172 680 171Q694 164 694 153T687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 93 -101L128 -84Q163 -68 230 -36T361 26L626 152L360 278Q91 406 90 407Q83 412 83 424Q84 434 94 440\",10927:\"84 346Q84 359 91 363T117 367Q120 367 126 367T137 366Q388 370 512 430T653 609Q657 636 676 636Q685 635 689 629T694 618V612Q689 566 672 528T626 463T569 417T500 383T435 362T373 346Q379 345 404 339T440 330T477 318T533 296Q592 266 630 223T681 145T694 78Q694 57 674 57Q662 57 657 67T652 92T640 135T606 191Q500 320 137 326H114Q104 326 98 327T88 332T84 346ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118\",10928:\"84 614Q84 636 102 636Q115 636 119 626T125 600T137 556T171 501Q277 372 640 366H661Q694 366 694 346T661 326H640Q578 325 526 321T415 307T309 280T222 237T156 172T124 83Q122 66 118 62T103 57Q100 57 98 57T95 58T93 59T90 62T85 67Q83 71 83 80Q88 126 105 164T151 229T208 275T277 309T342 330T404 346Q401 347 380 351T345 360T302 373T245 396Q125 455 92 565Q84 599 84 614ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118\",10933:\"653 734Q653 738 660 745T673 752T686 745T693 723Q672 555 466 485Q390 463 378 463Q373 463 373 461Q373 458 378 458Q390 458 466 436Q562 404 620 350Q682 283 693 198Q693 183 686 176Q681 170 674 170T660 176T653 187Q653 192 652 200T646 228T631 265T602 307T555 350Q435 431 151 441H95Q82 454 82 460T95 481H151Q165 482 197 483T238 485Q427 500 528 554T649 707Q653 729 653 734ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",10934:\"693 466T693 460T680 441H624Q608 439 577 438T538 436Q349 421 248 367T126 214Q122 192 122 187Q122 183 116 177T102 170Q95 170 89 176Q82 183 82 198Q93 283 155 350Q213 404 309 436Q385 458 398 458Q402 458 402 461Q402 463 398 463Q385 463 309 485Q103 555 82 723Q82 738 89 745T102 752T115 745T122 734Q122 721 126 701T155 640T220 572Q340 490 624 481H680Q693 466 693 460ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",10935:\"82 494T82 501T95 521H171Q405 527 511 569Q630 618 651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q684 668 648 623Q627 591 573 557T442 507L417 501Q428 496 442 494Q520 478 573 444T648 378Q684 333 693 267Q693 254 686 247Q673 234 659 245Q657 247 651 269Q630 383 511 432Q406 474 171 481H95Q82 494 82 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294\",10936:\"693 501Q693 493 679 481H604Q369 474 264 432Q143 382 124 269Q116 246 115 245Q101 234 88 247Q82 254 82 267Q89 329 126 378Q147 410 201 444T333 494L357 501Q354 502 340 505T318 510T295 516T269 525T243 535T215 548T188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q143 619 264 569Q371 527 604 521H679Q693 507 693 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294\",10937:\"82 494T82 501T95 521H171Q256 523 317 528T441 548T543 584T613 644T651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q686 686 664 647T615 586T548 545T482 518T417 501Q419 500 451 493T517 471T590 434T657 367T693 267Q693 241 673 241Q664 241 659 245Q656 249 650 273T635 323T593 380T511 432Q406 474 171 481H95Q82 494 82 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26\",10938:\"693 501Q693 493 679 481H604Q548 479 509 477T418 469T331 454T257 429T194 392T150 340T124 270Q117 247 115 245Q101 236 88 247Q82 254 82 267Q89 330 126 379Q147 411 202 444T333 494L357 501Q239 531 188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q133 678 166 640T241 579T349 544T470 527T604 521H679Q693 507 693 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26\",10949:\"84 463Q84 585 166 663T360 752Q361 752 370 752T395 752T430 752T475 753T524 753H679Q694 746 694 733Q694 724 681 714L522 713H470H441Q366 713 338 709T266 685Q244 674 224 659T179 617T139 550T124 463V458Q124 370 185 302Q244 238 328 220Q348 215 366 215T522 213H681Q694 203 694 193Q694 180 679 173H526Q510 173 480 173T434 172Q350 172 289 188T172 258Q84 340 84 463ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195\",10950:\"83 733Q83 746 98 753H251Q267 753 297 753T343 754Q427 754 488 738T605 668Q693 587 693 463Q693 378 650 312T545 213T415 174Q407 173 251 173H98Q83 180 83 193Q83 203 96 213H255H308H337Q412 213 439 217T512 241Q533 252 553 267T599 309T639 376T654 463Q654 554 592 624Q557 662 512 685Q468 704 439 708T335 713H306H255L96 714Q83 724 83 733ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195\",10955:\"693 221Q693 214 680 201H524Q398 201 367 202T309 212Q236 230 180 280T98 398Q84 438 84 492T98 585Q126 663 193 716T346 781Q347 781 373 781T440 782T520 783H680Q682 780 686 776T691 770T693 763T680 743H526Q364 743 353 741Q279 730 221 687T138 578Q124 540 124 492T138 405Q163 340 221 297T353 243Q364 241 526 241H680Q682 238 686 234T691 228T693 221ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41\",10956:\"82 759T82 763T83 769T89 776T95 783H251Q378 783 409 782T469 772Q540 753 596 703T678 585Q691 546 691 492T678 398Q649 320 581 267T426 203Q415 201 251 201H95Q82 214 82 221Q82 225 83 227T89 234T95 241H249Q411 241 422 243Q496 253 554 296T638 405Q651 444 651 492Q651 539 638 578Q613 643 555 686T422 741Q411 743 249 743H95Q82 759 82 763ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41\",12296:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",12297:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",57350:\"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417\",57351:\"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417\",57352:\"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261\",57353:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",57356:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",57357:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",57358:\"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461\",57359:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",57360:\"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",57361:\"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623\",57366:\"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710\",57367:\"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7\",57368:\"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473\",57369:\"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732\",57370:\"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122\",57371:\"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614\",119808:\"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390\",119809:\"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192\",119810:\"64 343Q64 502 174 599T468 697Q502 697 533 691T586 674T623 655T647 639T657 632L694 663Q703 670 711 677T723 687T730 692T735 695T740 696T746 697Q759 697 762 692T766 668V627V489V449Q766 428 762 424T742 419H732H720Q699 419 697 436Q690 498 657 545Q611 618 532 632Q522 634 496 634Q356 634 286 553Q232 488 232 343T286 133Q355 52 497 52Q597 52 650 112T704 237Q704 248 709 251T729 254H735Q750 254 755 253T763 248T766 234Q766 136 680 63T469 -11Q285 -11 175 86T64 343\",119811:\"39 624V686H270H310H408Q500 686 545 680T638 649Q768 584 805 438Q817 388 817 338Q817 171 702 75Q628 17 515 2Q504 1 270 0H39V62H147V624H39ZM655 337Q655 370 655 390T650 442T639 494T616 540T580 580T526 607T451 623Q443 624 368 624H298V62H377H387H407Q445 62 472 65T540 83T606 129Q629 156 640 195T653 262T655 337\",119812:\"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286\",119813:\"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H644V676Q647 670 659 552T675 428V424H613Q613 433 605 477Q599 511 589 535T562 574T530 599T488 612T441 617T387 618H368H304V371H333Q389 373 411 390T437 468V488H499V192H437V212Q436 244 430 263T408 292T378 305T333 309H304V62H439V0H425\",119814:\"465 -10Q281 -10 173 88T64 343Q64 413 85 471T143 568T217 631T298 670Q371 697 449 697Q452 697 459 697T470 696Q502 696 531 690T582 675T618 658T644 641T656 632L732 695Q734 697 745 697Q758 697 761 692T765 668V627V489V449Q765 428 761 424T741 419H731H724Q705 419 702 422T695 444Q683 520 631 577T495 635Q364 635 295 563Q261 528 247 477T232 343Q232 296 236 260T256 185T296 120T366 76T472 52Q481 51 498 51Q544 51 573 67T607 108Q608 111 608 164V214H464V276H479Q506 273 680 273Q816 273 834 276H845V214H765V113V51Q765 16 763 8T750 0Q742 2 709 16T658 40L648 46Q592 -10 465 -10\",119815:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400\",119816:\"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397\",119817:\"174 114Q174 96 169 82T159 63T144 47L155 45Q183 40 203 40Q271 40 290 104Q294 118 294 150T295 380V624H154V686H169Q196 683 365 683Q499 683 517 686H527V624H446V379Q446 183 446 153T441 108Q413 32 315 2Q266 -11 208 -11Q160 -11 118 -2T42 37T8 114V122Q8 150 30 174T91 198T152 174T174 122V114\",119818:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400\",119819:\"643 285Q641 280 629 148T612 4V0H39V62H147V624H39V686H51Q75 683 228 683Q415 685 425 686H439V624H304V62H352H378Q492 62 539 138Q551 156 558 178T569 214T576 255T581 289H643V285\",119820:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314\",119821:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314\",119822:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454\",119823:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475\",119824:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 255 768 184Q720 77 611 26L600 21Q635 -26 682 -26H696Q769 -26 769 0Q769 7 774 12T787 18Q805 18 805 -7V-13Q803 -64 785 -106T737 -171Q720 -183 697 -191Q687 -193 668 -193Q636 -193 613 -182T575 -144T552 -94T532 -27Q531 -23 530 -16T528 -6T526 -3L512 -5Q499 -7 477 -8T431 -10Q393 -10 382 -9Q238 8 151 97T64 339ZM326 80Q326 113 356 138T430 163Q492 163 542 100L553 86Q554 85 561 91T578 108Q637 179 637 330Q637 430 619 498T548 604Q500 641 425 641Q408 641 390 637T347 623T299 590T259 535Q226 469 226 338Q226 244 246 180T318 79L325 74Q326 74 326 80ZM506 58Q480 112 433 112Q412 112 395 104T378 77Q378 44 431 44Q480 44 506 58\",119825:\"394 0Q370 3 222 3Q75 3 51 0H39V62H147V624H39V686H234Q256 686 299 686T362 687Q479 687 554 669T681 593Q716 550 716 497Q716 390 568 338Q569 337 572 336T577 332Q605 317 623 300T650 258T662 218T668 172Q678 98 689 76Q707 40 748 40Q770 40 780 54T795 88T801 111Q805 117 827 117H831Q846 117 852 113T858 92Q857 78 852 63T834 30T797 1T739 -11Q630 -11 580 12T511 87Q506 104 506 168Q506 170 506 178T507 194Q507 289 438 313Q424 318 356 318H298V62H406V0H394ZM366 369Q459 370 490 381Q548 402 548 476V498V517Q548 578 513 600Q479 624 392 624H358H298V369H366\",119826:\"64 493Q64 582 120 636T264 696H272Q280 697 285 697Q380 697 454 645L480 669Q484 672 488 676T495 683T500 688T504 691T508 693T511 695T514 696T517 697T522 697Q536 697 539 691T542 652V577Q542 557 542 532T543 500Q543 472 540 465T524 458H511H505Q489 458 485 461T479 478Q472 529 449 564T393 614T336 634T287 639Q228 639 203 610T177 544Q177 517 195 493T247 457Q253 454 343 436T475 391Q574 326 574 207V200Q574 163 559 120Q517 12 389 -9Q380 -10 346 -10Q308 -10 275 -5T221 7T184 22T160 35T151 40L126 17Q122 14 118 10T111 3T106 -2T102 -5T98 -7T95 -9T92 -10T89 -11T84 -11Q70 -11 67 -4T64 35V108Q64 128 64 153T63 185Q63 203 63 211T69 223T77 227T94 228H100Q118 228 122 225T126 205Q130 125 193 88T345 51Q408 51 434 82T460 157Q460 196 439 221T388 257Q384 259 305 276T221 295Q155 313 110 366T64 493\",119827:\"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425\",119828:\"570 686Q588 683 703 683T836 686H845V624H737V420Q737 390 737 345T738 284Q738 205 729 164T689 83Q614 -11 465 -11Q321 -11 240 51T148 207Q147 214 147 421V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V405V370V268Q304 181 311 146T346 87Q387 52 466 52Q642 52 667 195Q668 204 669 415V624H561V686H570\",119829:\"592 686H604Q615 685 631 685T666 684T700 684T724 683Q829 683 835 686H843V624H744L611 315Q584 254 546 165Q492 40 482 19T461 -6L460 -7H409Q398 -4 391 9Q385 20 257 315L124 624H25V686H36Q57 683 190 683Q340 683 364 686H377V624H289L384 403L480 185L492 212Q504 240 529 298T575 405L670 624H582V686H592\",119830:\"915 686L1052 683Q1142 683 1157 686H1164V624H1073L957 320Q930 249 900 170T855 52T839 10Q834 0 826 -5Q821 -7 799 -7H792Q777 -7 772 -5T759 10Q759 11 748 39T716 122T676 228L594 442L512 228Q486 159 455 78Q433 19 428 9T416 -5Q411 -7 389 -7H379Q356 -7 349 10Q349 12 334 51T288 170T231 320L116 624H24V686H35Q44 683 183 683Q331 683 355 686H368V624H323Q278 624 278 623L437 207L499 369L561 531L526 624H434V686H445Q454 683 593 683Q741 683 765 686H778V624H733Q688 624 688 623L847 207Q848 207 927 415T1006 624H905V686H915\",119831:\"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327\",119832:\"605 0Q581 3 434 3Q286 3 262 0H250V62H358V275L126 624H19V686H30Q54 683 189 683Q361 685 370 686H383V624H308L319 608Q330 591 353 556T396 491L484 359L660 623Q660 624 623 624H585V686H595Q613 683 728 683Q832 683 841 686H849V624H742L509 274V62H618V0H605\",119833:\"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80\",119834:\"64 349Q64 399 107 426T255 453Q346 453 402 423T473 341Q478 327 478 310T479 196V77Q493 63 529 62Q549 62 553 57T558 31Q558 9 552 5T514 0H497H481Q375 0 367 56L356 46Q300 -6 210 -6Q130 -6 81 30T32 121Q32 188 111 226T332 272H350V292Q350 313 348 327T337 361T306 391T248 402T194 399H189Q204 376 204 354Q204 327 187 306T134 284Q97 284 81 305T64 349ZM164 121Q164 89 186 67T238 45Q274 45 307 63T346 108L350 117V226H347Q248 218 206 189T164 121\",119835:\"32 686L123 690Q214 694 215 694H221V409Q289 450 378 450Q479 450 539 387T600 221Q600 122 535 58T358 -6H355Q272 -6 203 53L160 1L129 0H98V301Q98 362 98 435T99 525Q99 591 97 604T83 620Q69 624 42 624H29V686H32ZM227 105L232 99Q237 93 242 87T258 73T280 59T306 49T339 45Q380 45 411 66T451 131Q457 160 457 230Q457 264 456 284T448 329T430 367T396 389T343 398Q282 398 235 355L227 348V105\",119836:\"447 131H458Q478 131 478 117Q478 112 471 95T439 51T377 9Q330 -6 286 -6Q196 -6 135 35Q39 96 39 222Q39 324 101 384Q169 453 286 453Q359 453 411 431T464 353Q464 319 445 302T395 284Q360 284 343 305T325 353Q325 380 338 396H333Q317 398 295 398H292Q280 398 271 397T245 390T218 373T197 338T183 283Q182 275 182 231Q182 199 184 180T193 132T220 85T270 57Q289 50 317 50H326Q385 50 414 115Q419 127 423 129T447 131\",119837:\"351 686L442 690Q533 694 534 694H540V389Q540 327 540 253T539 163Q539 97 541 83T555 66Q569 62 596 62H609V31Q609 0 608 0Q588 0 510 -3T412 -6Q411 -6 411 16V38L401 31Q337 -6 265 -6Q159 -6 99 58T38 224Q38 265 51 303T92 375T165 429T272 449Q359 449 417 412V507V555Q417 597 415 607T402 620Q388 624 361 624H348V686H351ZM411 350Q362 399 291 399Q278 399 256 392T218 371Q195 351 189 320T182 238V221Q182 179 183 159T191 115T212 74Q241 46 288 46Q358 46 404 100L411 109V350\",119838:\"32 225Q32 332 102 392T272 452H283Q382 452 436 401Q494 343 494 243Q494 226 486 222T440 217Q431 217 394 217T327 218H175V209Q175 177 179 154T196 107T236 69T306 50Q312 49 323 49Q376 49 410 85Q421 99 427 111T434 127T442 133T463 135H468Q494 135 494 117Q494 110 489 97T468 66T431 32T373 5T292 -6Q181 -6 107 55T32 225ZM383 276Q377 346 348 374T280 402Q253 402 230 390T195 357Q179 331 176 279V266H383V276\",119839:\"308 0Q290 3 172 3Q58 3 49 0H40V62H109V382H42V444H109V503L110 562L112 572Q127 625 178 658T316 699Q318 699 330 699T348 700Q381 698 404 687T436 658T449 629T452 606Q452 576 432 557T383 537Q355 537 335 555T314 605Q314 635 328 649H325Q311 649 293 644T253 618T227 560Q226 555 226 498V444H340V382H232V62H318V0H308\",119840:\"50 300Q50 368 105 409T255 450Q328 450 376 426L388 420Q435 455 489 455Q517 455 533 441T554 414T558 389Q558 367 544 353T508 339Q484 339 471 354T458 387Q458 397 462 400Q464 401 461 400Q459 400 454 399Q429 392 427 390Q454 353 459 328Q461 315 461 300Q461 240 419 202Q364 149 248 149Q185 149 136 172Q129 158 129 148Q129 105 170 93Q176 91 263 91Q273 91 298 91T334 91T366 89T400 85T432 77T466 64Q544 22 544 -69Q544 -114 506 -145Q438 -201 287 -201Q149 -201 90 -161T30 -70Q30 -58 33 -47T42 -27T54 -13T69 -1T82 6T94 12T101 15Q66 57 66 106Q66 151 90 187L97 197L89 204Q50 243 50 300ZM485 403H492Q491 404 488 404L485 403V403ZM255 200Q279 200 295 206T319 219T331 242T335 268T336 300Q336 337 333 352T317 380Q298 399 255 399Q228 399 211 392T187 371T178 345T176 312V300V289Q176 235 194 219Q215 200 255 200ZM287 -150Q357 -150 400 -128T443 -71Q443 -65 442 -61T436 -50T420 -37T389 -27T339 -21L308 -20Q276 -20 253 -20Q190 -20 180 -20T156 -26Q130 -38 130 -69Q130 -105 173 -127T287 -150\",119841:\"40 686L131 690Q222 694 223 694H229V533L230 372L238 381Q248 394 264 407T317 435T398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V332Q106 387 106 453T107 534Q107 593 105 605T91 620Q77 624 50 624H37V686H40\",119842:\"72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46\",119843:\"104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78\",119844:\"32 686L123 690Q214 694 215 694H221V255L377 382H346V444H355Q370 441 476 441Q544 441 556 444H562V382H476L347 277L515 62H587V0H579Q564 3 476 3Q370 3 352 0H343V62H358L373 63L260 206L237 189L216 172V62H285V0H277Q259 3 157 3Q46 3 37 0H29V62H98V332Q98 387 98 453T99 534Q99 593 97 605T83 620Q69 624 42 624H29V686H32\",119845:\"43 686L134 690Q225 694 226 694H232V62H301V0H292Q274 3 170 3Q67 3 49 0H40V62H109V332Q109 387 109 453T110 534Q110 593 108 605T94 620Q80 624 53 624H40V686H43\",119846:\"40 442Q217 450 218 450H224V365Q226 367 235 378T254 397T278 416T314 435T362 448Q376 450 400 450H406Q503 450 534 393Q545 376 545 370Q545 368 555 379Q611 450 716 450Q774 450 809 434Q850 414 861 379T873 276V213V198V62H942V0H933Q915 3 809 3Q702 3 684 0H675V62H744V194V275Q744 348 735 373T690 399Q645 399 607 370T557 290Q555 281 554 171V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40\",119847:\"40 442Q217 450 218 450H224V407L225 365Q233 378 245 391T289 422T362 448Q374 450 398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40\",119848:\"287 -5Q228 -5 182 10T109 48T63 102T39 161T32 219Q32 272 50 314T94 382T154 423T214 446T265 452H279Q319 452 326 451Q428 439 485 376T542 221Q542 156 514 108T442 33Q384 -5 287 -5ZM399 230V250Q399 280 398 298T391 338T372 372T338 392T282 401Q241 401 212 380Q190 363 183 334T175 230Q175 202 175 189T177 153T183 118T195 91T215 68T245 56T287 50Q348 50 374 84Q388 101 393 132T399 230\",119849:\"32 442L123 446Q214 450 215 450H221V409Q222 409 229 413T251 423T284 436T328 446T382 450Q480 450 540 388T600 223Q600 128 539 61T361 -6H354Q292 -6 236 28L227 34V-132H296V-194H287Q269 -191 163 -191Q56 -191 38 -194H29V-132H98V113V284Q98 330 97 348T93 370T83 376Q69 380 42 380H29V442H32ZM457 224Q457 303 427 349T350 395Q282 395 235 352L227 345V104L233 97Q274 45 337 45Q383 45 420 86T457 224\",119850:\"38 220Q38 273 54 314T95 380T152 421T211 443T264 449Q368 449 429 386L438 377L484 450H540V-132H609V-194H600Q582 -191 475 -191Q360 -191 351 -194H342V-132H411V42Q409 41 399 34T383 25T367 16T347 7T324 1T296 -4T264 -6Q162 -6 100 56T38 220ZM287 46Q368 46 417 127V301L412 312Q398 347 369 371T302 395Q282 395 263 388T225 362T194 308T182 221Q182 126 214 86T287 46\",119851:\"405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313\",119852:\"38 315Q38 339 45 360T70 404T127 440T223 453Q273 453 320 436L338 445L357 453H366Q380 453 383 447T386 403V387V355Q386 331 383 326T365 321H355H349Q333 321 329 324T324 341Q317 406 224 406H216Q123 406 123 353Q123 334 143 321T188 304T244 294T285 286Q305 281 325 273T373 237T412 172Q414 162 414 142Q414 -6 230 -6Q154 -6 117 22L68 -6H58Q44 -6 41 0T38 42V73Q38 85 38 101T37 122Q37 144 42 148T68 153H75Q87 153 91 151T97 147T103 132Q131 46 220 46H230Q257 46 265 47Q330 58 330 108Q330 127 316 142Q300 156 284 162Q271 168 212 178T122 202Q38 243 38 315\",119853:\"272 49Q320 49 320 136V145V177H382V143Q382 106 380 99Q374 62 349 36T285 -2L272 -5H247Q173 -5 134 27Q109 46 102 74T94 160Q94 171 94 199T95 245V382H21V433H25Q58 433 90 456Q121 479 140 523T162 621V635H224V444H363V382H224V239V207V149Q224 98 228 81T249 55Q261 49 272 49\",119854:\"40 442L134 446Q228 450 229 450H235V273V165Q235 90 238 74T254 52Q268 46 304 46H319Q352 46 380 67T419 121L420 123Q424 135 425 199Q425 201 425 207Q425 233 425 249V316Q425 354 423 363T410 376Q396 380 369 380H356V442L554 450V267Q554 84 556 79Q561 62 610 62H623V31Q623 0 622 0Q603 0 527 -3T432 -6Q431 -6 431 25V56L420 45Q373 6 332 -1Q313 -6 281 -6Q208 -6 165 14T109 87L107 98L106 230Q106 358 104 366Q96 380 50 380H37V442H40\",119855:\"401 444Q413 441 495 441Q568 441 574 444H580V382H510L409 156Q348 18 339 6Q331 -4 320 -4Q318 -4 313 -4T303 -3H288Q273 -3 264 12T221 102Q206 135 197 156L96 382H26V444H34Q49 441 145 441Q252 441 270 444H279V382H231L284 264Q335 149 338 149Q338 150 389 264T442 381Q442 382 418 382H394V444H401\",119856:\"624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624\",119857:\"227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227\",119858:\"84 -102Q84 -110 87 -119T102 -138T133 -149Q148 -148 162 -143T186 -131T206 -114T222 -95T234 -76T243 -59T249 -45T252 -37L269 0L96 382H26V444H34Q49 441 146 441Q252 441 270 444H279V382H255Q232 382 232 380L337 151L442 382H394V444H401Q413 441 495 441Q568 441 574 444H580V382H510L406 152Q298 -84 297 -87Q269 -139 225 -169T131 -200Q85 -200 54 -172T23 -100Q23 -64 44 -50T87 -35Q111 -35 130 -50T152 -92V-100H84V-102\",119859:\"48 262Q48 264 54 349T60 436V444H252Q289 444 336 444T394 445Q441 445 450 441T459 418Q459 406 458 404Q456 399 327 229T194 55H237Q260 56 268 56T297 58T325 65T348 77T370 98T384 128T395 170Q400 197 400 216Q400 217 431 217H462V211Q461 208 453 108T444 6V0H245Q46 0 43 2Q32 7 32 28V33Q32 41 40 52T84 112Q129 170 164 217L298 393H256Q189 392 165 380Q124 360 115 303Q110 280 110 256Q110 254 79 254H48V262\",119860:\"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260\",119861:\"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229\",119862:\"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252\",119863:\"287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469\",119864:\"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213\",119865:\"48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1\",119866:\"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252\",119867:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",119868:\"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1\",119869:\"447 625Q447 637 354 637H329Q323 642 323 645T325 664Q329 677 335 683H352Q393 681 498 681Q541 681 568 681T605 682T619 682Q633 682 633 672Q633 670 630 658Q626 642 623 640T604 637Q552 637 545 623Q541 610 483 376Q420 128 419 127Q397 64 333 21T195 -22Q137 -22 97 8T57 88Q57 130 80 152T132 174Q177 174 182 130Q182 98 164 80T123 56Q115 54 115 53T122 44Q148 15 197 15Q235 15 271 47T324 130Q328 142 387 380T447 625\",119870:\"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628\",119871:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",119872:\"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629\",119873:\"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637\",119874:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476\",119875:\"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554\",119876:\"399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18\",119877:\"230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554\",119878:\"308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24\",119879:\"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40\",119880:\"107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637\",119881:\"52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648\",119882:\"436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683\",119883:\"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0\",119884:\"66 637Q54 637 49 637T39 638T32 641T30 647T33 664T42 682Q44 683 56 683Q104 680 165 680Q288 680 306 683H316Q322 677 322 674T320 656Q316 643 310 637H298Q242 637 242 624Q242 619 292 477T343 333L346 336Q350 340 358 349T379 373T411 410T454 461Q546 568 561 587T577 618Q577 634 545 637Q528 637 528 647Q528 649 530 661Q533 676 535 679T549 683Q551 683 578 682T657 680Q684 680 713 681T746 682Q763 682 763 673Q763 669 760 657T755 643Q753 637 734 637Q662 632 617 587Q608 578 477 424L348 273L322 169Q295 62 295 57Q295 46 363 46Q379 46 384 45T390 35Q390 33 388 23Q384 6 382 4T366 1Q361 1 324 1T232 2Q170 2 138 2T102 1Q84 1 84 9Q84 14 87 24Q88 27 89 30T90 35T91 39T93 42T96 44T101 45T107 45T116 46T129 46Q168 47 180 50T198 63Q201 68 227 171L252 274L129 623Q128 624 127 625T125 627T122 629T118 631T113 633T105 634T96 635T83 636T66 637\",119885:\"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8\",119886:\"33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328\",119887:\"73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325\",119888:\"34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159\",119889:\"366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326\",119890:\"39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353\",119891:\"118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162\",119892:\"311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328\",119894:\"184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287\",119895:\"297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376\",119896:\"121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647\",119897:\"117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59\",119898:\"21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287\",119899:\"21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287\",119900:\"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120\",119901:\"23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102\",119902:\"33 157Q33 258 109 349T280 441Q340 441 372 389Q373 390 377 395T388 406T404 418Q438 442 450 442Q454 442 457 439T460 434Q460 425 391 149Q320 -135 320 -139Q320 -147 365 -148H390Q396 -156 396 -157T393 -175Q389 -188 383 -194H370Q339 -192 262 -192Q234 -192 211 -192T174 -192T157 -193Q143 -193 143 -185Q143 -182 145 -170Q149 -154 152 -151T172 -148Q220 -148 230 -141Q238 -136 258 -53T279 32Q279 33 272 29Q224 -10 172 -10Q117 -10 75 30T33 157ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326\",119903:\"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287\",119904:\"131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289\",119905:\"26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26\",119906:\"21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287\",119907:\"173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380\",119908:\"580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385\",119909:\"52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289\",119910:\"21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287\",119911:\"347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338\",119912:\"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372\",119913:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240\",119914:\"380 -17Q335 -17 293 -10T207 16T130 65T76 144T55 256Q55 306 70 361T122 476T211 582T345 663T525 702H545Q673 702 731 634L777 668Q783 672 789 677T800 685T808 691T814 695T818 698T822 700T825 702T828 703T830 703T833 703Q855 703 855 690Q855 686 823 558T789 426Q786 421 782 420T756 419Q734 420 729 421T724 432Q724 434 725 447T726 472Q726 552 678 604Q640 640 586 640H574Q533 640 494 632T409 604T324 541T260 437Q243 397 227 333T210 219Q210 152 237 117Q255 90 299 68T420 46H429Q506 46 580 100T678 234Q683 249 687 251T712 254H723Q743 254 743 240Q743 232 736 213T710 162T663 100T586 40T477 -5Q433 -17 380 -17\",119915:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 437 686Q659 686 668 685Q727 680 772 662T842 621T883 568T905 517T913 475Q914 466 914 434Q914 373 892 307T828 179T712 69T548 7Q517 2 494 2T279 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM768 475Q768 515 753 544T718 588T666 611T613 622T563 624H538H532H452L382 344Q311 64 311 63T363 62H405Q490 62 545 76T656 142Q696 185 724 265T760 399T768 475\",119916:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",119917:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H795Q801 677 804 673T808 666L809 664Q809 659 798 549T783 433Q777 424 755 424Q736 424 730 427T724 444Q724 448 725 468T727 507V524Q727 541 724 554T713 577T698 594T676 605T653 612T625 616T597 617T566 618T538 618H456L455 614Q455 611 424 491L394 371H429Q454 372 463 372T491 378T517 392T536 419T552 464Q556 481 561 484T586 488Q603 488 607 486Q616 482 616 473Q616 467 584 337T549 201Q542 192 521 192Q503 192 497 195T490 209Q490 212 492 224Q499 251 499 269Q499 288 489 296T465 306T417 308L379 309L348 188Q341 161 334 129T322 80L318 65L317 62H375H409Q430 62 438 59T447 45Q444 8 431 2L426 0L377 1Q347 2 231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",119918:\"379 -16Q233 -16 145 52T56 255Q56 310 73 368T127 483T216 586T347 663T518 702H540Q562 702 582 700T616 696T644 689T667 681T686 670T702 659T717 647T731 635L776 668Q782 672 788 677T799 685T807 691T813 695T817 698T821 700T824 702T827 703T829 703T832 703Q854 703 854 690Q854 686 822 558T788 426Q785 421 781 420T755 419Q734 420 729 422T723 432Q723 434 724 446T725 469Q725 531 702 571T642 628Q616 640 575 640Q468 640 390 593T272 464Q247 415 229 340T210 214Q210 166 228 132T277 79T343 54T419 46Q445 46 465 50T500 59T526 76T544 96T557 123T566 150T574 182T581 214H519Q511 214 498 214T479 213Q443 213 443 230Q443 250 452 268Q457 273 464 276L514 275Q546 274 657 274Q735 274 768 275T803 276Q826 276 826 258Q823 224 810 216Q806 214 771 214H736Q736 211 710 109T683 5Q678 0 671 0Q666 0 637 14T597 36Q593 38 590 40T585 44T582 44T576 40Q511 -16 379 -16\",119919:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",119920:\"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624\",119921:\"205 131Q205 105 192 84T165 54L152 45Q152 44 160 42T182 37T213 35H216Q255 35 289 65Q314 90 329 129Q331 136 392 378T453 623Q453 624 393 624H332Q318 631 318 640Q318 647 322 664T334 684Q338 686 359 686Q413 684 533 684Q566 684 605 685T652 686Q677 686 685 683T694 669Q694 664 691 652Q686 631 681 628T647 624H602L542 380Q531 336 518 285T500 212T487 161T475 122T463 97T448 74T429 55Q351 -17 213 -17Q142 -17 99 7T43 70Q42 75 42 93Q42 143 73 168T139 194Q168 194 186 177T205 131\",119922:\"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0\",119923:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 409 684Q454 684 492 684T552 685T579 686Q603 686 603 668Q599 632 587 626Q583 624 520 624H457L388 344Q317 64 317 63T353 62H390Q418 62 440 64T493 78T548 110T598 169T643 261Q651 282 655 285T680 289Q696 289 700 288T709 279Q711 274 711 269Q710 265 663 138T613 8Q611 4 602 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",119924:\"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",119925:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",119926:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489\",119927:\"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558\",119928:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 410 808 370T781 277T729 178T643 87T519 14L525 4Q540 -19 553 -25T592 -32Q632 -32 654 -24T680 -7T689 10T704 18Q713 18 717 12T722 0Q722 -8 711 -36T681 -101T624 -166T541 -194Q513 -194 494 -183T465 -157T450 -118T444 -79T443 -41V-7L433 -9Q391 -17 344 -17Q301 -17 263 -10T185 15T118 62T71 138T53 245ZM666 482Q666 529 652 563T614 615T565 640T512 648Q412 648 335 573Q268 506 235 389T201 202Q201 164 210 136T230 95T259 66L262 76Q269 109 302 135T382 162Q401 162 415 159T449 140T484 92L491 78L496 82Q502 86 505 88T515 97T528 107T541 120T555 137T570 156T585 179T599 205T612 235Q629 278 647 351T666 482ZM439 56Q439 58 439 62T435 75T426 92T410 106T383 112Q353 112 332 96T311 63Q311 38 355 38H366Q391 39 415 45T439 56\",119929:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 422 686H446H525Q634 686 698 674T806 620Q843 583 843 535Q843 505 833 478T805 432T768 396T728 370T690 352T662 342L651 338L654 336Q658 334 667 327T688 310Q719 278 719 237Q719 222 710 165T701 94Q701 35 748 35Q775 35 793 57T819 101Q822 112 826 114T843 117H849Q881 117 881 99Q881 78 852 39T781 -11Q765 -17 728 -17Q537 -13 537 94Q537 110 552 169T567 243Q567 292 529 309Q517 316 508 316T441 318H375L374 314Q374 312 343 189T311 64Q311 62 355 62H382Q414 62 414 44Q410 6 397 2L393 0L351 1Q325 2 221 2Q147 2 108 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM687 555Q687 617 589 623Q581 624 513 624H451L420 498Q413 468 405 436T392 388L388 371Q388 369 458 369Q464 369 485 369T515 369T541 372T570 377T596 386T624 400Q649 417 664 457T683 522T687 555\",119930:\"354 45Q429 45 467 91T506 184Q506 225 477 250Q461 262 384 279T294 300Q238 318 210 362T182 452Q182 493 202 540T257 623Q338 702 449 702Q491 702 501 701Q571 690 610 654Q614 649 617 650Q618 650 650 675T683 702Q685 703 692 703Q714 703 714 690Q714 686 687 578T658 466Q653 458 629 458Q606 458 602 463Q600 465 599 466Q599 467 599 469T598 473Q598 475 599 487T600 511Q600 584 557 614T454 645Q386 645 347 606T308 520Q308 506 311 496T323 477T338 464T360 454T384 446T413 439T441 433Q523 416 549 401Q581 384 602 352Q631 309 631 254Q631 214 615 170T567 83T478 12T347 -16Q322 -16 300 -14T261 -8T230 0T205 10T187 20T172 30L162 37L130 11Q124 7 119 3T110 -4T104 -9T100 -13T96 -15T93 -16T91 -17T88 -17H82Q76 -17 73 -16T69 -14T66 -10T63 -5L90 107Q97 133 106 170Q116 211 120 219T136 228H148Q167 228 173 227T179 218Q179 216 176 200T173 168Q173 102 227 74T354 45\",119931:\"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498\",119932:\"856 686Q877 686 877 668Q877 663 873 649T867 631Q861 624 828 624Q762 622 757 617Q757 613 705 409T651 200Q620 112 540 48T328 -16Q251 -16 196 2T113 51T75 112T63 176Q63 202 70 232T117 422Q129 469 141 520T160 598L167 623Q167 624 123 624H96Q79 624 73 626T64 639Q68 678 81 684Q85 686 104 686Q155 684 268 684Q340 684 377 685T418 686Q441 686 441 668Q437 632 425 626Q421 624 371 624H322L270 415Q224 232 217 198T209 141Q209 45 336 45Q372 45 406 52T475 77T540 128T585 211L590 229Q594 247 601 274T617 336T636 409T654 482T670 547T681 595T686 618Q686 620 685 620H683Q681 621 678 621T671 622Q660 622 630 624Q616 624 610 624T598 626T589 630T587 640Q587 647 590 659Q594 677 598 681T613 686Q618 686 653 685T740 684Q775 684 801 684T840 685T856 686\",119933:\"401 686Q415 680 415 668Q415 651 404 629Q398 624 356 624Q318 624 318 623Q318 620 337 508T377 284L397 174L472 285Q548 396 623 507T699 620Q698 621 652 624Q634 624 627 627T619 641Q619 648 622 658Q627 677 631 681T650 686Q654 686 686 685T766 684Q794 684 823 684T858 685Q874 685 878 683T886 671Q886 667 882 651Q877 632 873 628T850 624Q800 624 779 617Q774 617 770 613Q767 610 560 304T350 -5Q346 -9 332 -16H306H291Q270 -16 267 -2Q267 -1 260 37T238 161T210 313L156 624H116H94Q62 624 62 642Q66 678 78 684Q82 686 99 686Q144 684 246 684Q330 684 368 685L401 686\",119934:\"111 624Q109 624 102 624T91 623Q61 623 61 640Q61 660 70 678Q78 686 98 686Q140 684 239 684Q277 684 309 684T360 685T383 686H385Q407 686 407 668Q404 634 391 626Q387 624 348 624Q307 624 307 622Q307 618 332 409Q359 198 359 195L570 532L564 576L558 622V624H522H504Q472 624 472 641Q475 678 488 684L493 686L529 685Q551 684 645 684Q716 684 753 685T795 686Q818 686 818 669Q815 632 802 626Q798 624 759 624Q718 624 718 622Q718 615 743 410Q770 199 770 196Q770 195 806 253T903 406Q1035 618 1035 619Q1025 624 968 624Q943 624 943 641Q943 648 946 659Q950 675 952 679T963 686L998 685Q1020 684 1093 684Q1113 684 1139 685T1173 686Q1207 686 1207 669Q1207 664 1204 652Q1199 631 1194 628T1164 624Q1113 622 1101 615Q1098 612 905 305Q715 -1 709 -7Q699 -17 673 -17Q645 -17 639 -8L581 441Q581 444 442 221Q331 44 314 18T288 -14Q279 -17 263 -17H254Q229 -17 227 -5Q225 2 186 311L147 620V624H111\",119935:\"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686\",119936:\"97 624H73Q40 624 40 640Q40 660 49 678Q57 686 77 686Q122 684 228 684Q269 684 304 684T360 685T385 686Q406 686 406 668Q406 662 403 653Q398 631 393 628T361 624H353Q321 624 321 623T376 491T432 360L448 377Q465 394 493 424T553 490L673 620Q662 624 630 624Q606 624 606 640Q608 678 623 684Q627 686 634 686Q638 686 671 685T755 684Q777 684 805 685T841 686Q861 686 868 683T876 669Q876 664 873 652Q868 631 863 628T829 624Q764 622 747 611Q727 590 590 441L437 275L411 170Q385 65 384 64Q384 62 429 62H453Q473 62 478 60T487 48Q488 44 484 29Q479 6 473 3Q468 0 454 0Q450 0 436 0T386 1T294 2Q220 2 181 1T138 0Q121 0 116 15Q120 54 133 60Q137 62 187 62H236L289 275L142 624H97\",119937:\"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430\",119938:\"222 -8Q140 -8 89 34T38 158Q38 191 48 227Q72 329 151 390T327 452Q361 452 385 443T421 425T433 416H434L441 421Q448 426 460 430T486 435Q509 435 523 422T538 386Q538 380 522 315T488 179T467 93Q466 87 466 72Q466 42 483 42Q505 42 521 75Q531 94 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351\",119939:\"220 -8Q142 -8 94 35T45 155V167Q45 187 52 218T104 426L153 622H149Q148 622 144 622T134 623T122 624T111 624T101 624T96 625Q84 628 84 642Q84 647 88 661T94 679Q98 684 109 685T185 690Q258 694 272 694Q289 694 293 679Q293 676 263 553L232 429L244 434Q256 440 281 446T331 452Q417 452 465 407T513 285Q513 235 494 184T439 90T346 20T220 -8ZM385 337Q385 400 318 400Q269 400 226 360Q214 349 211 341T191 268Q162 149 162 113Q162 44 226 44Q269 44 299 76T339 135T362 215Q364 222 365 226Q385 303 385 337\",119940:\"362 325Q362 344 371 361T390 386L399 394Q390 401 355 401Q276 401 231 338Q207 301 189 230T170 122Q170 43 264 43Q392 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T259 -8Q194 -8 148 9T80 54T49 109T40 167Q40 280 129 365T352 451Q390 451 396 450Q448 442 473 416T499 358T477 302T421 274H417Q393 274 378 288T362 325\",119941:\"222 -8Q140 -8 89 34T38 158Q38 220 68 285T151 391Q230 452 329 452Q382 452 416 428L422 424Q423 424 447 523L472 622H468Q467 622 463 622T453 623T441 624T430 624T420 624T415 625Q403 628 403 642Q403 647 407 661T413 679Q417 684 428 685T504 690Q577 694 591 694Q608 694 612 679L467 91Q466 87 466 72Q466 43 483 43Q518 43 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351\",119942:\"260 -8Q196 -8 151 9T83 54T52 111T42 169Q42 188 44 210Q50 240 58 266Q127 434 335 451L338 452Q342 452 345 452Q347 452 353 452T363 451Q426 451 464 424T502 352Q502 289 442 250Q381 211 222 211H184Q184 210 181 196T175 162T171 126Q171 43 264 43Q391 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T260 -8ZM237 262Q427 266 427 349Q427 368 409 384T354 401Q316 401 287 388T242 354T216 314T202 278L197 263Q197 262 237 262\",119943:\"584 444Q597 439 597 426Q597 409 586 387Q580 382 505 382H434V380Q432 378 421 314T395 162T368 30Q324 -164 203 -199Q194 -201 175 -201Q123 -201 94 -177T64 -117T88 -58T145 -33Q169 -33 184 -47T200 -84Q200 -122 166 -150L174 -151H185Q202 -148 217 -112Q222 -94 240 9Q246 40 262 132T293 303T307 382H247H210Q190 382 182 385T173 400Q177 436 189 442Q193 444 256 444H318L319 446Q337 565 355 602Q373 640 404 664T458 694T503 701Q569 701 596 676T624 617Q624 581 599 557T544 533Q520 533 504 547T488 585Q488 596 491 606T499 624T508 637T516 646L520 650Q515 650 509 651Q459 651 459 561V554L458 518L452 484Q446 448 445 447V444H584\",119944:\"227 0Q142 0 93 43T43 166Q43 207 58 252T104 341T188 414T310 451L313 452Q316 452 319 452Q321 452 326 452T335 451Q367 451 390 443T425 425L436 416L443 421Q450 426 462 430T488 435Q511 435 525 422T540 386Q540 378 483 151T424 -82Q401 -139 335 -170T167 -202Q72 -202 36 -183T0 -125Q0 -90 24 -67T81 -43Q103 -43 119 -56T136 -99Q133 -124 114 -149L123 -150H183Q222 -150 254 -127T299 -74Q300 -71 306 -47T318 -1T324 23Q323 23 310 18T274 6T227 0ZM407 353Q406 354 404 358T400 365T395 371T388 379T381 385T371 391T360 396T346 400T329 401Q300 401 277 389T240 355T219 317T205 280Q171 148 171 109Q171 77 190 64T235 51T296 67Q322 82 337 98L345 106L407 353\",119945:\"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 672 294 540Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56\",119946:\"205 615Q205 646 229 670T283 694Q310 694 324 679T339 641Q339 610 315 586T258 562Q235 562 220 577T205 615ZM24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",119947:\"321 616Q321 648 346 671T400 694Q425 694 440 680T456 640Q456 609 431 586T376 562Q353 562 337 577T321 616ZM297 360T297 373T294 392T288 400T278 401H276Q241 399 210 372T158 303Q151 287 148 285T129 282H123H116Q102 282 97 284T92 298Q96 331 153 391T279 451Q357 451 388 422T420 354V339L371 142Q363 111 353 71T339 13T329 -30T318 -64T308 -88T296 -109T283 -125T264 -142Q190 -202 88 -202Q44 -202 16 -181T-12 -125Q-12 -93 11 -68T68 -43Q92 -43 108 -58T124 -93Q124 -121 106 -144Q101 -150 103 -150Q120 -150 147 -128T191 -64Q194 -57 242 136T294 345Q297 360 297 373\",119948:\"99 -8Q71 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 674 280 482Q231 290 231 287Q231 285 234 286Q259 302 294 334T356 390T420 433T493 452Q528 452 546 427T564 364Q564 308 538 282T480 256Q456 256 441 269T425 308Q425 339 444 359T483 384L502 389Q502 395 496 398Q493 400 483 400Q465 400 449 395T409 374T373 347T323 305T268 257Q274 256 282 256Q312 251 329 247T371 232T411 202Q431 181 431 146Q431 132 427 110T422 73Q422 44 440 44H442Q462 44 478 64T502 102T514 141Q518 157 522 159T547 162H558Q578 162 578 148Q578 118 537 56T440 -7H432Q374 -7 337 21T299 94Q299 103 301 116T304 139Q304 164 281 181T235 202L212 206H211Q176 47 160 24Q137 -8 99 -8\",119949:\"157 -8Q138 -8 118 -4T77 11T41 42T27 91V106L156 622H152Q151 622 147 622T137 623T125 624T114 624T104 624T99 625Q87 628 87 642Q87 647 91 661T97 679Q101 684 112 685T188 690Q261 694 275 694Q292 694 296 679L151 91Q150 85 150 71Q150 42 167 42Q186 42 205 75Q216 96 225 134Q230 155 234 158T255 162H260H271Q291 162 291 148Q290 145 289 140T283 118T271 87T254 54T229 23T197 1T157 -8\",119950:\"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L295 392Q305 401 317 410T349 429T389 445Q411 451 446 451Q560 451 592 383Q593 380 594 379L595 375L604 384Q675 452 762 452Q893 452 916 367Q918 356 918 334Q918 285 881 183T841 66Q838 43 849 43Q876 43 901 69T940 138Q945 156 949 159T969 162H975H986Q1006 162 1006 148Q1006 138 996 115T966 63T914 13T841 -8Q794 -8 758 16T721 82Q721 96 758 199T796 351Q796 401 753 401Q702 401 662 369T599 298Q597 294 567 172T533 40Q525 22 506 7T462 -8Q435 -8 422 8T409 39Q409 48 425 114T458 248T476 320Q478 330 478 348T474 377T462 393T449 399T433 400H428Q380 400 336 363Q301 332 281 298Q278 293 247 170T214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296\",119951:\"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L293 391Q363 452 454 452Q575 446 597 367Q599 356 599 334Q599 285 562 183T522 66Q519 43 530 43Q557 43 582 69T621 138Q626 156 630 159T650 162H656H667Q687 162 687 148Q687 138 677 115T647 63T595 13T522 -8Q475 -8 439 16T402 82Q402 96 439 199T477 351Q477 401 434 401Q421 401 409 398Q341 388 285 305L278 295L247 170Q216 46 214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296\",119952:\"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400\",119953:\"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q235 452 273 404Q336 452 409 452Q434 452 458 448T507 432T550 402T581 354T593 285Q593 221 564 159T480 53Q401 -8 302 -8Q290 -8 279 -7T259 -3T242 3T228 9T218 14T212 18L209 20Q208 19 190 -55T171 -131T198 -132H213Q240 -132 240 -150Q237 -187 223 -192Q219 -194 212 -194Q208 -194 176 -193T95 -192Q48 -192 24 -193T-3 -194Q-11 -194 -16 -190T-22 -182T-23 -176Q-20 -142 -7 -134Q-3 -132 20 -132H44L164 354Q165 357 165 372Q165 401 148 401Q113 401 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296ZM465 339Q465 373 447 387T403 401Q375 401 347 387T303 360T288 341Q288 338 257 216L227 93Q248 43 306 43Q332 43 361 59T410 115Q425 147 445 224Q465 309 465 339\",119954:\"38 159Q38 209 58 260T113 355T205 425T327 452Q338 452 348 451T366 449T382 444T394 440T405 434T414 429T422 423T429 418Q440 429 481 440T533 452Q540 452 545 447T550 437Q550 432 481 152Q410 -130 410 -131T437 -132H452Q479 -132 479 -150Q476 -187 462 -192Q458 -194 451 -194Q447 -194 414 -193T330 -192Q277 -192 249 -193T217 -194Q202 -194 197 -179Q197 -175 201 -159Q206 -139 211 -136T243 -132H283L319 15L307 10Q295 4 270 -2T220 -8Q134 -8 86 37T38 159ZM402 353Q402 358 395 368T369 390T324 401Q301 401 282 394T249 369T226 338T208 297T196 258T186 218Q166 141 166 107Q166 44 229 44Q265 44 294 61T337 95Q341 100 371 222T402 353\",119955:\"24 296Q24 298 28 313T42 352T67 398T104 436T154 452Q198 452 230 437T273 404L282 411Q334 452 393 452Q441 452 470 423T500 350Q500 301 473 279T418 256Q395 256 379 270T363 308Q363 366 424 386Q424 388 420 391T405 398T385 401Q363 401 343 390Q321 380 289 341L252 192Q214 42 212 39Q190 -8 142 -8Q117 -8 103 7T89 39Q89 52 127 202T165 369Q165 402 148 402Q139 402 128 393T110 369Q100 348 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296\",119956:\"140 290Q140 311 148 336T176 388T235 433T326 451H336Q355 451 373 449T418 439T460 412T476 363Q476 333 456 311T406 289Q384 289 371 302T357 335Q357 351 364 364T379 384L386 391Q386 392 381 394T362 398T330 400Q299 400 278 393T247 373T235 352T232 335Q232 322 242 312Q258 299 315 290T403 260Q457 224 457 167Q457 152 453 134T435 90T397 43T330 7T229 -8Q133 -8 95 22T57 91Q57 127 81 152T139 177Q161 177 177 164T194 121Q189 80 153 56Q179 43 236 43Q275 43 303 52T343 75T361 101T366 124Q366 148 338 161T272 180T232 186Q187 198 164 227T140 290\",119957:\"82 382H55Q21 382 21 399Q21 422 33 439Q39 444 93 444H144L162 517Q163 522 167 541T174 567T181 589T192 611T206 627T226 639T253 643Q276 643 291 630T306 594Q306 586 288 514Q284 499 280 481T273 454L271 445Q271 444 317 444Q322 444 331 444T345 445Q377 445 377 428Q377 408 368 390Q360 382 341 382H306H255Q182 86 182 75Q182 43 201 43H204Q242 46 279 81Q298 101 309 119T323 145T330 157T350 162H356H363Q377 162 382 160T387 146Q385 136 372 114T337 64T275 14T192 -7Q131 -7 95 19T59 90V105L128 381Q128 382 82 382\",119958:\"189 389Q189 397 187 399T176 401Q150 399 126 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 307 35 331T65 383T117 431T187 452Q237 452 272 427T308 362Q308 347 273 254T238 111Q238 43 291 43Q319 43 344 58T380 86T391 103T426 247T464 396Q472 414 491 429T535 444T574 429T588 397Q588 390 570 315T534 168L516 97Q514 89 514 72Q514 42 531 42Q544 42 556 56Q574 76 589 134Q594 155 598 158T619 162H624H635Q655 162 655 148Q654 142 652 132T638 94T614 47T575 9T520 -8Q509 -8 498 -7T478 -3T461 2T446 8T434 16T424 23T416 29T410 35T406 39L405 41L397 34Q347 -7 288 -7H281Q148 -7 122 78Q116 95 116 125V136Q116 174 152 273T189 389\",119959:\"380 367Q380 397 406 425T465 453Q493 453 516 430T540 357Q540 314 524 250T467 115T373 13Q338 -8 292 -8Q218 -8 167 23T116 129Q116 178 152 275T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T189 452Q231 452 269 429T308 362Q308 346 273 255T238 114Q238 43 306 43Q336 43 363 65T407 118T437 182T456 239T462 268Q462 290 417 315Q380 335 380 367\",119960:\"636 367Q636 400 664 426T719 453Q748 453 772 431T796 357Q796 321 782 256T727 112T633 6Q604 -8 567 -8Q466 -8 415 43Q414 42 410 38T403 31T396 25T388 18T378 11T367 5T355 0T340 -4T324 -7T306 -8Q249 -8 209 5T151 40T125 84T117 129Q117 176 153 274T190 388Q190 408 158 396Q112 376 90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 305 34 328T63 380T114 430T187 452Q240 452 274 427T309 362Q309 346 275 255T240 117Q240 43 317 43Q325 43 333 45T347 50T359 57T369 66T377 75T383 83T388 90L390 95Q390 99 389 110T387 129Q387 139 391 167Q393 177 419 282T448 396Q456 414 475 429T519 444Q546 444 559 428T572 397Q572 384 542 265T511 114Q511 43 579 43Q608 43 633 66T673 122T699 188T714 244L718 267Q718 291 673 315Q636 335 636 367\",119961:\"74 282H63Q43 282 43 296Q43 298 45 307T56 332T76 365T110 401T159 433Q200 451 233 451H236Q273 451 282 450Q358 437 382 400L392 410Q434 452 483 452Q538 452 568 421T599 346Q599 303 573 280T517 256Q494 256 478 270T462 308Q462 343 488 367Q501 377 520 385Q520 386 516 389T502 396T480 400T462 398Q429 383 415 341Q354 116 354 80T405 44Q449 44 485 74T535 142Q539 156 542 159T562 162H568H579Q599 162 599 148Q599 135 586 111T550 60T485 12T397 -8Q313 -8 266 35L258 44Q215 -7 161 -7H156Q99 -7 71 25T43 95Q43 143 70 165T125 188Q148 188 164 174T180 136Q180 101 154 77Q141 67 122 59Q124 54 136 49T161 43Q183 43 200 61T226 103Q287 328 287 364T236 400Q200 400 164 377T107 302Q103 288 100 285T80 282H74\",119962:\"206 -150Q240 -150 268 -134T314 -95T344 -48T362 -7T367 14Q339 -7 280 -7Q230 -7 195 5T144 39T122 79T115 122Q115 175 152 274T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T188 452Q239 452 273 427T308 361Q308 347 273 253T237 109Q237 43 291 43T388 98Q388 99 425 246T463 396Q471 414 490 429T534 444T573 430T587 399Q587 386 537 186T483 -25Q461 -84 410 -126T296 -188Q248 -202 204 -202Q127 -202 96 -175T64 -114Q64 -82 86 -57T144 -31Q169 -31 184 -45T199 -83Q199 -89 198 -94T196 -104T193 -113T189 -120T184 -128T179 -134T173 -141T168 -147Q189 -150 206 -150\",119963:\"66 -8H60Q34 -8 34 5Q34 9 42 22T70 59T115 110Q162 156 255 229T381 332L389 339H381Q348 332 298 329T212 325T172 321Q168 318 151 318H146Q116 318 116 332Q116 334 118 342Q128 374 154 402Q205 452 265 452Q304 452 352 422T426 392Q441 392 462 421T485 451T508 452H518Q539 452 539 438Q539 431 516 401T458 334Q412 289 312 210Q229 146 191 111L183 103H195Q203 103 213 104T240 107T268 110Q301 114 337 116T391 119T428 123T455 134T469 157Q473 166 495 166Q521 166 525 161Q532 156 528 141Q510 81 456 37T337 -7Q297 -7 251 22T177 52Q154 52 134 38T100 8L88 -7Q86 -8 66 -8\",119964:\"76 60Q83 29 135 29Q190 29 264 81Q280 93 280 95T277 99T265 106T248 118Q189 166 189 237Q189 307 245 388Q267 421 299 436Q336 455 386 455Q488 455 550 403L559 395L571 405Q727 544 944 679L957 687L966 701Q968 704 970 707T973 712T975 714T978 716T982 717T989 717H995Q1004 717 1007 717T1013 714T1016 708Q1016 705 829 403L636 92L630 83Q659 93 685 110T728 143L745 158Q758 158 752 138L748 127L740 119Q676 58 605 42L593 22Q590 17 587 12T583 6T579 2T573 0T564 0H530H484Q480 3 480 8Q480 15 489 26T498 39T497 40Q477 40 423 49T327 74L316 78L302 68Q200 -8 121 -8Q85 -8 60 7T35 53T60 113T123 144Q144 144 153 132T162 106Q162 89 143 75T99 61Q90 61 76 65V60ZM904 614L905 615Q901 615 840 573T700 469T581 369L587 359Q600 340 608 315T618 273T622 238T624 216L764 414Q904 612 904 614ZM525 363Q493 405 379 418H375Q342 418 309 378Q251 300 251 234Q251 174 306 137Q318 128 322 131Q323 132 329 139Q351 161 362 180Q430 273 509 348L525 363ZM579 205Q579 245 571 278T556 323T546 337L521 311Q461 248 422 196T362 121L353 111Q427 85 499 79Q517 77 520 77L525 76L549 111Q551 114 556 121T563 131T568 138T573 147T575 157T577 169T578 185T579 205\",119966:\"367 89Q367 84 353 77T334 70Q325 70 312 83T298 120Q298 169 364 233T496 298Q538 298 563 275T588 220V213Q588 132 501 53T306 -26Q251 -26 211 6T170 114Q171 148 181 184T205 248T232 298T255 334T265 349T246 350Q127 350 77 390T26 480Q26 533 71 581T178 656T295 683Q312 683 312 676Q312 674 311 672L302 660Q294 648 292 647L286 646Q280 646 276 646Q197 641 145 583T93 476Q93 387 265 387Q271 387 277 387T287 388T292 388T313 414T373 483T451 562Q618 712 732 727Q733 727 740 727T753 728Q790 727 804 708T819 665Q819 643 810 617T773 553T699 481T572 414T385 361Q381 361 367 341Q247 172 247 86Q247 11 325 11Q404 11 465 95Q518 165 528 208Q529 212 529 220Q529 237 518 249T480 261Q431 261 387 209T343 126Q343 111 355 101T367 89ZM777 658Q777 691 738 691Q704 691 658 662T570 590T491 504T432 432T410 400H411Q416 400 440 405T505 423T589 455T675 506T743 576Q777 627 777 658\",119967:\"251 272Q199 272 168 298T136 374Q136 432 175 496T267 603Q321 645 395 676T552 708Q610 708 655 694T724 659T763 618T784 584L790 569Q792 569 800 572T819 576T840 578Q855 578 855 571Q855 566 846 554T829 541Q824 541 817 539T804 533T799 529Q802 517 802 483Q802 376 742 256T585 53T392 -31Q353 -31 300 -7L289 -2L277 -6Q242 -17 192 -17Q141 -17 113 -13T77 -3T68 14Q68 20 73 28T93 45T131 58Q152 62 197 62Q241 62 272 48L282 44Q308 65 334 93Q380 145 467 266T622 454Q644 476 664 493T694 517T720 534T740 547Q699 671 540 671Q461 671 385 625T276 534Q265 520 251 499T219 438T202 368Q202 309 267 309Q325 309 396 383T491 545Q492 548 493 552Q494 558 496 559T511 564Q513 565 514 565Q523 568 527 568Q534 568 534 560Q534 554 529 537Q507 442 420 357T251 272ZM332 20Q332 19 341 15T368 6T400 2Q425 2 457 13T531 49T614 125T690 248Q750 376 750 476V490L738 479Q698 436 646 366T554 239T455 121T332 20ZM226 20Q226 25 186 25Q181 25 174 24H166Q161 24 158 23H152Q170 21 197 21Q205 21 213 21T223 20H226\",119970:\"206 318L249 320Q249 327 259 352T282 399Q312 447 366 510T465 610Q588 717 661 717Q695 717 716 701T738 653T704 577Q663 522 610 474T512 397T424 346T359 315T333 306Q331 304 327 290T323 267Q323 229 368 229Q402 229 439 254T505 312T571 382T638 435Q642 437 644 437Q658 437 658 409Q655 403 647 399T624 379T595 326Q583 296 564 267T523 179Q504 126 483 91T423 27Q335 -37 231 -37Q191 -37 157 -30T95 -2T67 53Q67 89 94 123T159 158Q180 158 190 146T200 119Q200 102 178 89T136 75Q128 75 120 78T110 81Q105 81 105 62Q105 38 129 24T180 5T238 1H244Q282 1 319 32Q349 55 371 85T436 190L465 239Q413 192 354 192Q300 192 274 217T245 276Q245 284 242 284Q220 280 187 280Q106 280 59 315T12 409Q12 457 43 508T118 597T210 659T295 683Q308 683 308 675Q308 670 299 658T282 646Q266 646 240 633Q182 606 118 511Q76 448 76 400Q76 368 105 343T206 318ZM677 660Q677 680 646 680Q616 680 565 629Q537 601 514 571Q493 544 455 492T389 398T360 355Q366 357 386 367Q463 406 534 473T641 591T677 660\",119973:\"829 148Q845 148 845 143T841 130T823 109T788 83T730 54T644 22Q637 20 634 19T627 16T622 13T618 10T612 3T604 -6Q510 -112 396 -203T201 -312Q190 -314 171 -314H166Q156 -314 147 -312T123 -304T101 -283T92 -245Q92 -203 117 -160T175 -93Q214 -65 280 -41T390 -6T509 22L532 27L547 47Q673 219 673 225L665 228Q657 231 648 235T627 249T606 270T591 300T584 341Q584 389 614 447T686 544Q735 588 799 615T959 667T1108 713Q1118 717 1119 717Q1125 717 1129 705T1133 689Q1133 686 1115 673Q1051 627 1001 579T918 481T867 403T828 328T805 277Q802 271 801 267T798 261T798 259Q849 270 900 317Q956 371 956 421Q956 438 953 457T950 480Q950 481 950 482L951 484Q953 487 966 492T985 498Q989 498 994 473Q1000 441 1000 423Q1000 362 934 302T790 223L775 220L767 207Q757 191 731 158T685 98T662 63Q662 61 690 70T755 99T811 142L816 148H829ZM646 332Q646 308 659 291T685 268L698 263L735 320Q828 465 865 511Q923 582 1003 643L1005 645Q1004 645 924 620Q775 572 716 492Q646 401 646 332ZM184 -278Q233 -278 311 -212T444 -80L498 -15H496Q468 -20 424 -30T293 -70T174 -133Q167 -140 158 -153T138 -190T127 -232Q127 -278 184 -278\",119974:\"521 506Q521 493 549 493Q608 493 660 527Q667 531 690 555L736 604Q750 619 777 646T825 694T848 716T852 717Q857 717 860 711T865 697L866 690Q866 687 812 615Q654 404 654 401Q655 401 656 401T659 402T665 403T680 404Q718 404 734 374Q735 370 743 376Q745 377 752 382Q806 416 852 466T933 563T982 623Q1028 666 1075 686T1155 706Q1165 706 1173 705T1186 703T1194 699T1199 695T1201 692T1202 688V687L1204 677Q1204 667 1191 670Q1189 670 1183 670T1174 671Q1137 671 1086 643T1001 564Q970 517 899 449T749 339L739 333L736 322Q730 295 703 253T652 165T628 77Q628 21 681 21Q692 21 698 23Q751 46 817 134L827 148H844Q861 148 864 146Q869 140 859 127Q818 75 761 29T665 -17Q649 -17 633 -12T598 4T569 40T558 100Q558 128 563 152T585 205T609 245T643 294Q647 300 645 300Q633 297 615 297Q607 297 600 298T589 300T584 301Q581 301 569 284T536 236T488 171T418 97T331 28Q233 -37 155 -37Q104 -37 68 -17T29 44Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q68 82 68 59Q68 37 85 23T123 5T167 0Q203 0 238 21T311 85T382 174T468 288T563 410Q576 426 588 440T607 462T615 472L605 468Q568 456 533 456H527Q490 456 463 483Q451 496 451 508T468 545T486 581Q486 593 465 593Q448 593 425 568T384 518T364 493Q364 492 347 492Q326 492 326 499T351 537T414 599T477 630Q509 630 528 615T547 576Q547 556 534 533T521 506ZM675 357Q675 368 665 368Q656 368 644 363Q631 355 616 333H628Q640 334 672 341Q675 354 675 357\",119977:\"764 513Q764 482 772 423T780 330Q780 304 778 285T775 256T773 245Q778 252 826 328T932 484T1042 617Q1077 652 1114 678T1173 715T1200 726Q1208 726 1208 717Q1208 711 1206 695L1203 679L1199 675Q1197 675 1187 670T1161 657T1133 639Q1050 583 959 456Q906 381 858 307T779 179T725 83T691 18T679 -6Q677 -8 660 -8H656Q639 -8 639 -1Q639 4 646 17Q685 93 685 173V196Q685 233 681 288T676 380Q676 438 687 487L664 454Q505 230 454 170Q366 64 290 14T163 -36H152Q87 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 37 89 19T167 1Q187 1 197 3Q221 9 246 22T292 52T336 91T375 132T411 174T440 212T463 245T478 266Q779 695 784 698Q786 700 802 700H818Q824 694 824 692T809 668T779 604T764 513\",119978:\"259 -8Q230 -7 205 0T153 24T112 74T96 153Q96 254 174 379T374 599T607 707H621Q732 707 778 661Q805 634 805 598Q805 558 775 517T696 452L684 447V441Q684 378 626 273T484 97Q379 7 288 -7Q279 -8 259 -8ZM760 594Q760 670 608 670Q562 670 493 622T347 472Q174 240 174 131Q174 76 205 53T279 29Q294 29 306 32Q405 60 507 205Q592 325 616 401Q625 426 625 435Q625 436 621 436T603 440T569 449Q524 466 515 475Q513 477 513 481T525 496T541 508L548 504Q555 501 565 497T587 488T609 480T625 476Q627 476 626 481Q626 486 623 494T613 513T589 533T548 541Q495 541 413 454T286 281Q265 241 254 201T240 141T235 120Q234 118 217 111T197 104Q195 104 192 107T189 112Q190 125 193 147T220 231T280 348Q335 428 407 493T539 576Q548 578 563 578Q594 578 617 568T653 546T672 518T681 494T683 482Q683 481 684 481Q690 481 707 495T742 538T760 594\",119979:\"571 345Q571 384 612 418T687 452Q698 452 698 445Q698 436 679 417Q677 415 670 415Q650 412 633 389T615 350Q615 340 621 331T634 319T643 315L663 342Q751 462 817 536Q873 595 896 614L907 625Q843 680 701 680Q594 680 499 632T344 516Q317 486 296 449T267 384Q262 366 262 354Q262 332 276 316T326 299H327Q374 299 426 338Q481 376 537 456T597 598Q597 616 599 617Q601 619 614 624T630 630Q639 630 639 604V587V581Q639 519 597 456Q544 377 462 320T318 262Q278 262 250 282T222 350Q222 418 285 504Q360 597 480 656T702 716Q773 716 825 707T898 688T951 660Q962 670 985 685T1012 700Q1018 700 1022 690T1026 673Q1026 670 1019 664Q988 633 988 631Q988 630 999 618T1020 580T1031 522Q1031 471 1003 419T928 330Q854 275 765 264Q757 262 733 262H714L701 245Q615 121 473 42T218 -37Q159 -37 125 -15T90 46Q90 82 116 120T185 158Q203 158 213 147T224 121Q224 110 219 102Q198 75 159 75Q154 75 149 76T143 77T140 77Q137 72 137 53Q138 37 149 26T177 9T205 2T228 0Q313 0 419 74T602 257L620 281L614 285Q607 289 601 294T587 306T576 323T571 345ZM950 529Q950 576 943 576Q940 576 840 439T741 299H751Q804 300 845 334T924 438Q949 490 950 529\",119980:\"330 387Q330 331 402 331Q463 331 514 371T589 459T613 542Q613 559 608 570T598 588T593 596Q593 601 617 610Q632 617 636 616Q675 585 675 527Q675 464 629 409T516 324T387 294Q271 294 271 394V402Q271 438 292 478Q344 582 457 649T672 717Q765 717 825 675T885 548Q885 433 771 298T498 76Q493 73 491 72T486 69T484 67T485 66Q539 41 607 41Q655 41 703 71T780 139L787 148H804Q806 148 809 148Q826 149 826 140Q826 128 786 91T687 19T589 -16H576Q503 -16 414 20L396 27Q279 -17 192 -17Q130 -17 92 2T54 53Q54 92 107 123T222 155Q303 155 401 106L431 91L441 97Q476 118 527 157Q622 236 711 361T801 573Q801 591 795 607T775 641T732 668T660 679Q592 679 528 644T422 560T355 464T330 387ZM201 20Q232 20 267 27T322 40T342 49Q342 52 315 60T243 77T160 86Q150 88 144 88Q130 88 122 79T112 62L111 53Q111 20 201 20\",119982:\"346 463Q346 419 406 386T576 352H588L613 384L681 476Q767 594 842 651T973 708Q1016 708 1016 661Q1016 621 987 562T894 449Q802 375 696 338L682 334L665 312Q638 279 605 233T547 158T482 97Q418 46 332 5T158 -36Q87 -36 58 -11T29 48Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 28 98 14T166 0Q232 0 320 55T491 226Q530 279 551 305L558 314Q558 315 543 315Q417 321 353 365T289 460Q289 566 488 632Q578 662 660 665H679Q685 660 685 657T676 642Q670 633 666 629L664 628Q663 628 661 628T655 628Q606 628 546 615T426 568T350 486Q346 475 346 463ZM976 653Q976 671 959 671Q938 671 919 661T883 629T858 593T835 554Q832 548 830 545Q802 495 775 455T734 400T721 382L736 388Q876 449 946 568Q948 572 949 573Q976 622 976 653\",119983:\"354 350Q264 350 264 426Q264 442 265 448Q279 514 347 582T503 692T662 735Q719 735 774 714T882 672T983 651Q996 651 996 644Q996 639 977 612T954 581Q953 580 938 580Q909 582 884 587L869 591L870 587Q870 583 849 557T796 491T748 422Q729 391 692 313T620 188Q555 105 454 34T253 -37Q214 -37 181 -30T120 -2T92 53Q92 89 119 123T184 158Q205 158 215 146T225 119Q225 102 203 89T161 75Q153 75 145 78T135 81Q130 81 130 62Q130 39 153 24T204 5T267 0Q311 0 358 29T454 117T539 226T629 358T710 476Q726 496 744 516T778 551T807 577T828 595L836 601L785 623Q743 642 713 651T668 661T626 663Q564 663 509 644T418 596T356 535T317 475T305 431Q305 416 312 408Q323 388 369 388Q429 388 465 411T530 480Q557 526 557 565Q557 573 556 579T555 587T555 590Q555 591 568 600T584 611Q588 612 600 603Q622 581 622 549Q622 516 600 475T536 405Q454 350 354 350\",119984:\"55 377Q55 443 122 523T290 660T478 717Q533 717 575 689T618 594Q618 565 611 538T585 477T552 422T506 355T458 288L357 146Q307 68 307 31Q307 20 318 20Q326 20 331 21Q367 27 411 57T490 128L767 500L861 617H908H939Q953 617 956 616T960 609Q960 605 928 566T816 423T648 198Q587 113 571 86Q540 34 540 21Q540 20 545 20Q580 25 623 55T696 124Q702 132 704 133T722 134H739Q744 130 744 127T735 113Q713 80 655 38T548 -14Q527 -17 524 -17Q475 -17 473 47V63L462 55Q364 -17 302 -17Q235 -17 235 69Q235 88 239 105T248 135T268 171T292 205T328 251T369 304Q376 313 395 338T423 374T450 408T476 445T499 479T519 514T534 546T545 579T548 608Q548 647 522 663T460 680Q355 680 243 591T99 406Q97 399 97 383V377Q97 339 153 339Q169 339 175 340Q215 350 241 373T298 444Q333 496 349 535T367 588T374 603Q402 616 408 616Q416 616 416 608Q416 563 393 492T320 378Q233 302 140 302H132Q75 302 57 353Q55 361 55 377\",119985:\"540 717Q542 717 545 717Q562 717 562 710Q562 708 557 702T541 678T517 632T485 544T448 407Q447 405 443 388T438 366T433 345T427 321T420 299T411 274T400 250T387 223T372 197Q363 181 364 181L388 203Q476 284 527 354T620 490T718 612Q754 647 790 673T835 700Q839 700 842 691T848 672L850 662Q850 657 842 653Q803 630 768 600T699 527T653 467T610 405Q554 322 518 282T368 138Q307 84 273 51T231 9T218 -5L207 -17H175Q169 -11 169 -9Q169 -4 183 10Q227 56 258 120T302 234T330 350T356 445Q357 450 360 458L362 464Q317 434 276 434Q221 437 221 479Q221 498 240 521T259 552Q259 565 235 565Q209 565 174 546T105 482Q103 480 102 478T99 474T97 472T95 470T93 468T90 467T86 467T81 467H75Q56 467 56 475Q56 482 82 511T156 570T253 601Q289 601 311 590T334 557Q334 543 312 517T289 478Q289 471 297 471Q327 471 378 514Q384 519 390 531T412 571T451 632Q482 675 524 717H540\",119986:\"232 504Q232 492 263 492Q304 492 356 515L367 520L379 537Q443 632 515 705L527 717H543H552Q564 717 564 709Q564 705 562 703T554 694T540 677T518 643T488 589T448 504T398 385Q368 309 353 281L349 270L523 472L669 634Q726 695 737 706T757 717H765Q786 717 786 710Q786 704 776 691T738 627T675 497Q630 394 609 354T541 244Q456 120 449 111L447 107L448 108Q630 240 700 327Q734 368 788 463Q821 520 841 550T898 619T980 683Q1010 700 1018 700Q1020 700 1023 697T1026 692Q1026 688 1024 671T1020 652Q1018 650 1007 645T988 635Q940 609 902 565T842 477T781 374T699 272Q653 226 535 133Q423 47 373 -2L358 -17H342Q320 -17 320 -11Q320 -7 328 5T354 46T390 112Q416 161 439 217T488 326T564 453L589 490Q587 490 523 414T352 217T166 14Q138 -16 137 -16Q136 -17 120 -17Q106 -17 103 -16T99 -9Q99 -5 100 -3T106 3T116 14T132 35T154 72T184 129T222 212T270 327Q310 426 337 471L326 467Q278 455 243 455Q209 455 188 462T161 478T155 496Q155 508 176 533T198 576Q198 579 198 581T192 588T178 593Q151 593 100 519Q89 504 86 502T75 499H68Q46 499 46 506Q46 510 63 534T112 587T170 627Q178 629 195 629Q235 629 252 613T270 577Q270 556 251 532T232 504\",119987:\"351 351Q308 351 290 373T272 426Q272 487 329 566T478 688Q538 717 584 717Q635 717 681 696T745 620Q752 598 752 564T745 498L741 485Q742 486 769 516T825 573T889 634T962 689T1027 716Q1035 717 1060 717Q1083 716 1096 714T1120 705T1131 686Q1131 668 1109 647T1055 626Q1035 626 1026 638T1016 663Q1016 667 1020 679H1015Q971 671 886 589T728 413L688 360Q688 359 725 359H750Q762 359 766 357T770 348Q769 345 761 335T750 322Q748 321 704 321H660Q651 311 632 282T589 199T565 107Q565 25 653 20Q684 20 720 44T779 95T826 152T850 183L856 184Q861 184 865 184Q888 184 888 173Q883 163 845 117Q770 37 723 10T638 -17Q584 -14 554 17T523 101Q523 147 534 167L532 166Q530 164 526 160T518 153Q378 15 256 -15Q250 -16 226 -16Q161 -16 132 7T103 59Q103 93 129 125T194 158Q232 158 232 121Q233 118 233 113T221 96T188 77Q182 75 168 75T150 78V70Q150 43 178 32T241 20Q340 20 527 286L552 321H524Q489 321 489 330Q489 333 497 344T509 358Q511 359 545 359H579Q580 362 597 389T631 445T661 514T675 586Q675 637 645 658T572 680Q506 680 444 632T348 527T314 434Q314 388 361 388H364H366Q380 388 389 390T416 408T457 454Q487 497 505 536T526 594L529 613Q531 615 545 622T560 630Q568 630 573 613T578 577Q578 518 532 455Q504 413 453 382T351 351\",119988:\"155 280Q116 280 87 300T57 368Q57 409 87 466T192 589Q269 653 345 684T472 716Q572 716 613 675Q644 644 644 599Q644 585 643 574T637 550T629 529T616 505T600 481T578 450T554 416Q494 330 493 328L480 306Q466 278 466 256Q466 227 492 227H496Q514 227 534 234Q541 237 544 241T571 279L762 559Q777 579 792 595Q818 620 856 646T919 686T946 700Q951 700 955 692T959 677Q959 673 947 665T911 639T866 595Q816 538 749 408T640 225Q574 138 464 61T248 -17Q190 -17 144 1T98 62Q98 81 109 102T131 135Q156 156 183 158Q226 158 226 121Q226 111 224 107Q215 93 196 84T162 74Q154 74 147 77H144V70Q146 41 185 31T263 20Q363 20 493 175L507 192H504Q500 191 498 191Q484 189 476 189Q430 189 405 219T379 287Q379 294 379 299T382 311T385 322T391 335T398 347T408 363T420 379T434 399T450 422Q455 429 469 449T488 475T504 499T520 523T533 543T544 565T552 583T557 603T559 620Q559 680 467 680Q402 680 333 646T213 563T131 462T98 373Q98 343 119 330T169 317Q187 317 212 333Q242 354 291 423T352 555Q354 562 355 588Q355 612 356 612Q357 614 371 622T387 630Q391 630 397 623T409 597T415 556Q415 507 380 448T294 344Q216 280 155 280\",119989:\"221 428Q221 487 280 555T425 670T583 717H587Q641 717 665 695T689 646Q689 625 674 600T658 564Q658 550 671 541T695 530T710 528L718 539Q779 613 821 646Q894 707 964 707H970Q1010 707 1025 675Q1032 661 1032 645Q1032 626 1022 607Q1008 579 980 560T897 522Q867 512 836 505T788 496L771 493Q768 493 760 477T736 429T702 370Q700 367 698 363Q696 360 696 359H805Q809 355 809 350Q809 340 791 322Q789 321 728 321H668Q562 179 433 88L419 78L434 73Q505 54 554 54Q609 54 654 82T720 140H752Q758 134 758 132Q758 128 747 113Q711 67 657 32T552 -14Q540 -16 517 -16T480 -15T439 -3T375 27L354 38L338 30Q257 -8 191 -8H184Q154 -8 133 -5T103 1T88 10T83 19T83 29Q83 35 86 44T100 65T127 88T173 105T241 112Q286 112 342 99L360 95L372 105Q434 157 523 270L560 320Q560 321 533 321L507 322Q502 325 502 330Q502 339 521 358Q523 359 556 359H588L669 474L682 491Q676 492 665 494T647 498T632 503T614 510T596 521Q556 547 556 570Q556 585 579 618T603 663Q603 679 568 679Q510 679 452 650T354 581T288 500T262 431Q262 407 280 397T321 387Q331 387 341 390T360 398T376 409T390 423T400 435T409 447L414 454Q457 514 460 562Q460 575 461 576Q461 577 475 586T492 595Q496 595 503 588T514 572Q520 559 520 539Q520 473 452 412T308 351Q269 351 245 370T221 428ZM989 642Q989 667 953 671Q905 671 871 644Q853 632 832 604T799 554T787 531H788Q801 531 842 539T916 561Q989 592 989 642ZM198 29Q230 29 257 36T295 52L306 59Q306 63 259 73Q251 74 209 74Q177 74 158 66T134 48L130 40Q130 29 198 29\",120068:\"22 505Q22 563 94 624T271 685H280Q416 685 443 560Q447 535 447 504Q444 414 405 330L399 319L229 155Q233 154 241 153T253 150T265 145T281 135T301 119T328 93L357 64L402 92Q438 116 473 137L500 154V339Q500 528 495 593V601L559 649Q621 696 624 696L638 686L629 677Q599 650 593 638Q582 614 581 504Q580 490 580 443Q580 314 584 238Q584 235 584 224T584 210T585 199T586 187T588 176T591 164T595 152T601 137T609 121Q630 77 640 77Q661 77 703 101Q704 95 706 90L707 86V84L636 29Q618 15 601 2T574 -19T564 -25L500 121Q499 121 399 48L299 -26Q298 -26 291 -15T272 11T245 42T209 69T165 80Q120 80 58 43L48 37L40 42L32 48L122 117Q196 173 241 211Q319 280 343 327T368 447Q368 535 317 582Q264 633 199 633Q155 633 122 605T86 542Q86 518 133 467T181 387Q181 348 140 309Q113 281 73 260L64 255L50 265L59 273Q112 307 112 345Q112 363 90 387T45 441T22 505\",120069:\"48 506Q48 568 120 629T268 691Q362 691 425 594L431 585L441 594Q478 628 528 657T629 686Q665 686 687 670Q703 658 718 584T753 506Q756 505 763 505Q778 505 804 512L815 516L820 496Q820 494 808 490T774 476T732 454Q720 445 708 437L675 415L640 394L625 383Q626 382 635 382Q652 382 670 379T712 364T754 336T784 289T797 220Q797 172 776 122Q769 106 766 102T745 84Q654 11 619 -8T538 -27Q483 -27 387 10T249 47Q218 47 186 34T133 8T112 -5T104 7T97 21L196 82Q259 120 284 140Q333 181 351 214Q368 251 368 353Q368 588 228 620Q222 621 205 621Q160 621 139 596Q117 569 117 548Q117 526 162 470T208 387Q208 352 179 320T104 264Q88 256 86 256Q83 256 70 266L82 274Q134 309 134 343Q134 352 130 359Q118 377 100 401T72 439T56 470T48 506ZM453 528Q457 496 457 419L458 357L488 367Q554 390 622 425Q673 449 673 453L671 454Q669 456 665 460T657 473T648 498T639 541Q629 597 616 613Q599 633 567 633Q534 633 493 599Q471 577 457 540L453 528ZM713 176Q713 252 661 295T528 339Q512 339 494 336T466 330T455 325Q454 325 452 311T444 270T425 217L420 207L304 118L319 116Q381 111 475 74T602 37Q655 37 684 79T713 176\",120071:\"346 611Q300 611 261 604T194 584T144 555T107 519T82 481T65 443T55 410T50 383T48 367L37 372L27 378V393Q33 524 115 603Q160 648 230 666T365 685Q423 685 434 684Q745 653 745 405Q745 281 694 151L687 133L657 103Q524 -27 470 -27Q456 -27 331 18T157 64Q122 64 84 28Q67 9 57 -6L50 -16L43 -8L35 0Q35 3 46 22T83 74T141 133H154Q208 136 253 161T299 230Q299 259 277 290T232 348T209 392Q209 434 254 479T358 556L368 561L382 550Q382 549 381 548T377 545T371 541Q353 527 326 496T298 444Q298 430 343 365T389 277Q389 240 353 202T267 136L252 127Q304 118 400 83T513 47Q548 47 582 79T635 145Q671 208 671 323Q671 390 651 441T599 524T523 576T436 603T346 611\",120072:\"301 564Q240 564 203 507T165 361Q165 280 190 218T260 119T358 64T474 46Q491 46 499 47L511 48L628 106V80L499 -5Q498 -6 497 -7T494 -10T490 -12T485 -15T478 -17T468 -19T456 -21T439 -22T418 -23T392 -24Q252 -20 169 67T86 315Q86 409 124 491Q128 500 139 508Q211 560 272 591L293 601L325 585L338 594Q374 617 422 639T502 674L532 685Q533 685 540 663T557 614T574 581Q580 575 591 575Q600 575 616 580T634 585V564L623 559Q572 535 532 529L522 527Q491 547 442 627Q442 628 440 627T435 624T428 620Q410 610 405 597T399 559V553Q399 534 409 487Q419 431 427 369L476 400Q526 431 526 432Q531 426 537 420Q565 382 602 359Q611 353 610 352Q609 351 575 332T537 312Q536 312 505 335T463 358Q451 358 439 352T425 337Q394 243 263 223L251 221L243 229L235 236L245 239Q274 247 303 266Q320 277 325 290T330 336Q330 394 315 451T300 531Q300 549 303 561Q303 564 301 564\",120073:\"198 617Q177 617 159 609T128 587T106 557T91 524T82 494T76 472L75 463Q74 463 67 468T59 474Q59 488 63 510T80 564T114 622T170 667T253 686Q272 686 295 680Q330 672 384 645T468 598Q498 580 524 580Q549 580 595 626L612 643V616L599 599Q522 500 482 500Q466 500 435 514L420 521Q388 516 349 486T309 415Q309 396 323 366T352 315T367 294Q367 293 375 301T398 322T429 352L490 410Q537 355 542 332Q542 330 531 315T510 286L499 273Q479 313 449 313Q437 313 419 303T390 282L378 271L394 250Q444 183 470 129Q484 96 484 71Q484 -19 402 -86T223 -153H220Q175 -153 137 -120Q103 -89 103 -8Q103 12 106 40T109 96Q109 132 103 146T72 161Q46 161 16 143L14 154L11 165Q88 219 143 219Q163 219 177 197T192 127Q192 102 186 65T179 4Q179 -60 210 -88T272 -117Q319 -117 362 -75T405 33Q405 72 363 139T278 271T235 368Q235 385 243 404T264 439T292 472T324 500T353 522T374 538L382 543Q382 544 351 562T274 598T198 617\",120074:\"373 560Q373 543 378 509T388 448T394 421Q396 421 416 433T474 474T548 537L538 543Q481 570 452 628L487 659Q521 690 522 690L526 684Q529 677 535 667T551 646T575 625T607 608Q617 606 621 606Q644 606 660 622L664 600L497 455Q495 453 527 453H546Q628 453 665 407L666 406Q710 357 710 297Q710 196 631 109L621 98L577 69Q471 -7 452 -15Q413 -26 370 -26Q239 -26 155 59Q66 148 66 319Q66 442 113 505L191 552Q269 600 270 600H271Q273 600 280 596T293 589T299 586Q300 586 357 623Q413 659 415 659L426 649Q373 604 373 560ZM219 228Q305 262 305 329V343Q305 384 294 434T282 519Q282 562 287 567Q287 569 286 569Q222 556 191 520Q144 464 144 362Q144 213 228 128T420 42Q514 42 568 103T622 255V260Q622 320 578 357Q526 400 453 400Q434 400 410 396L399 394L400 378V372Q400 330 388 301T348 254T305 232T252 217Q245 215 242 214L234 213L226 220L219 228\",120077:\"194 601Q175 601 155 590T121 564T95 533T76 506L69 495Q55 503 55 507Q55 509 60 521Q87 586 132 636T222 686Q251 686 289 660T363 607T422 580Q442 580 466 588T506 604L522 612V591L487 574Q371 517 359 517H357Q332 522 280 561T194 601ZM383 39Q383 96 356 203T329 361Q329 364 329 370T330 378L331 388L339 399Q362 429 394 462T446 513T469 531Q470 531 477 527T484 521L474 509Q411 434 411 379Q411 341 434 223T458 82Q458 1 390 -69T239 -139Q191 -139 162 -123T123 -83T108 -30T101 23T88 64T52 80Q27 80 -4 64L-10 80Q-5 85 13 98T63 128T118 144Q149 144 163 129T179 93T182 38T187 -19Q199 -96 278 -96Q294 -96 309 -91T343 -73T372 -31T383 39\",120078:\"154 37Q219 41 219 142Q219 203 190 302T160 434Q160 445 172 472T209 534T269 602T354 657T460 680H472Q576 680 618 617V599Q618 578 615 555T608 517T602 501Q596 495 587 495Q586 495 586 499Q586 500 586 505T585 513Q567 628 415 628Q384 628 356 621T302 596T260 546T244 466Q244 416 258 377L261 367L276 382Q294 401 317 422T386 471T468 500Q500 500 518 477T544 422T554 386Q555 382 560 376T576 364T601 357Q612 357 623 361Q623 360 621 351T617 340L541 305L465 272Q469 271 476 270T488 266T502 260L512 255L519 242Q533 211 546 157T564 93Q584 53 617 53Q649 53 682 74V54L675 46Q646 17 612 -5T554 -27Q546 -27 538 -23T517 -9T494 28T478 91Q465 172 448 200T378 228Q337 228 289 207L288 196Q288 160 284 138Q283 125 262 98Q185 1 112 -24L102 -27L91 -25Q47 -13 17 31Q17 33 49 69L80 106Q111 37 154 37ZM421 434Q411 436 405 436Q370 436 336 407T275 337L267 325L271 313Q288 257 288 234Q289 234 395 276T502 319Q501 320 499 323T493 330T485 345T475 371Q473 378 468 388T449 416T421 434\",120079:\"251 231Q251 254 206 341T160 468Q160 529 238 605Q313 677 425 685L432 686Q440 686 445 686Q520 686 545 657T571 576Q571 548 568 517T564 480Q564 466 572 460T608 452H623V431L619 430Q618 430 611 428T591 423T566 417L516 404Q497 415 491 419T480 433T475 461Q475 470 477 498T480 546Q480 561 480 569T474 592T459 615T429 631T379 638Q322 638 283 606T239 526Q237 480 280 394Q319 310 320 268V250Q308 235 244 169L203 128H210Q215 128 256 112T357 80T466 64Q526 64 564 88T625 186L629 196Q643 187 644 186Q618 70 604 41Q577 -15 513 -24Q496 -26 476 -26Q418 -26 344 -3T211 45T133 69Q115 69 97 50T65 7T49 -20L45 -16Q41 -11 37 -6T33 0Q33 8 66 69T111 134Q251 156 251 231\",120080:\"687 578Q690 586 719 612T794 665T877 692Q909 692 926 670T953 614T973 570Q983 561 1000 560Q1023 560 1048 569V553L1034 546Q1003 528 972 504T933 466Q905 403 905 264Q905 205 909 172T920 126T940 91Q951 74 959 74T997 87L1027 100V79L956 27Q940 15 922 2T894 -19L885 -26Q883 -26 854 27L825 80V192Q826 314 830 341Q831 345 833 356Q840 398 844 404Q871 444 920 489L917 491Q914 493 911 495T903 501T898 508Q893 516 877 562T852 616Q840 628 818 628Q751 628 702 541L697 532L700 515Q708 467 708 419Q706 348 690 276T662 169T643 126L634 116Q626 105 611 87T581 51L522 -22L514 -15Q470 21 452 21Q431 21 394 -16L384 5L386 9L426 60Q449 87 460 95T486 104Q487 104 491 104T497 103Q514 99 541 81L559 69Q595 96 606 169T618 350Q618 486 598 543T517 601Q484 601 458 570T432 523Q432 516 434 492T436 443Q436 250 369 133L363 122L280 50Q207 -16 192 -27L182 -18Q136 26 106 26Q83 26 62 9T37 -16L27 0L33 10Q41 22 54 39T94 81T143 106Q178 106 225 62L235 53Q283 82 307 117Q352 190 352 359Q352 408 345 451T320 534T267 597T183 621Q159 621 147 617T120 598Q97 574 96 556Q96 528 143 469T191 377T161 311T102 262T70 245Q69 245 59 252T49 260L56 264Q63 268 73 275T94 291T111 312T118 338Q118 355 95 384T50 446T27 506Q31 567 101 626T255 686Q297 686 330 671T382 632T409 595T421 572V571L430 580Q454 610 496 634T588 659H590Q655 659 683 585L687 578\",120081:\"112 334Q112 356 70 410T27 497Q27 553 94 619T229 685Q230 685 236 685T246 686Q303 686 349 654Q373 636 392 607T419 558L426 538L454 576Q474 604 486 618T520 651T569 678T633 686Q668 684 687 673T713 651T730 609Q730 608 732 600T736 588T741 578T747 568T754 561T765 555T779 553Q789 553 817 562Q819 557 819 555V547L790 526Q743 492 730 479T712 447Q697 369 697 281Q697 166 726 108Q741 76 755 68Q759 66 767 66Q789 66 825 93V82Q825 71 822 70Q821 69 763 27T701 -18L692 -25L668 15Q662 25 650 45T635 70L627 85V107Q627 122 626 162T624 285Q624 381 632 398Q638 409 651 425T675 454T696 477T707 489H696Q683 490 679 492T669 507T653 551Q642 588 627 608T584 628Q572 628 560 625T538 616T519 602T502 586T486 568T473 549T463 532T454 517T448 504L445 497Q437 480 437 474Q437 472 439 461T444 421T446 348Q446 205 405 124Q396 105 392 100T368 78Q312 32 278 9T235 -18T214 -22Q191 -22 170 -10T139 12T129 25T160 66T192 105Q193 102 194 98T200 83T213 64T233 49T261 42Q303 42 339 90Q373 134 373 268Q373 397 339 493T235 618Q215 628 191 628Q155 628 126 604T97 548Q97 524 120 493T168 431T192 381Q192 346 164 318T86 260L70 250L54 266L63 272Q112 300 112 334\",120082:\"428 596Q412 596 386 595T350 593Q289 593 270 625Q267 632 267 640Q267 656 280 672T312 705T336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q648 627 677 599T720 535T739 466T744 392Q744 317 732 260T696 166T659 116T621 83Q617 80 615 78Q485 -27 377 -27Q320 -25 272 -9T187 21T122 36H116Q65 36 29 -13L27 -15L12 0Q12 1 32 26T76 78T109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596\",120083:\"112 339Q112 354 91 380T49 438T28 497Q28 565 95 628T242 692Q261 692 277 689T307 682T331 670T351 655T367 637T379 619T388 600T395 582T401 565T405 550Q409 554 422 570T453 603T500 641Q573 692 637 692Q656 692 670 686T692 672T705 647T713 618T718 584Q720 568 721 562T728 546T742 534T768 530Q776 531 782 532T791 535T796 536Q799 536 804 521Q801 519 789 513T764 499T738 480Q697 447 680 414Q677 407 677 396Q677 370 713 312T750 210Q750 125 686 57T560 -11Q540 -11 475 13L410 37V31Q410 -9 412 -50T417 -118T420 -150Q419 -150 373 -184T326 -218L305 -208Q305 -207 307 -196T314 -165T322 -116T328 -46T331 43V63L318 66Q270 80 250 80Q233 80 213 70Q183 57 138 -3L128 -16L118 5L125 20Q193 154 282 154Q309 154 331 146V287Q331 444 327 469Q321 522 301 560Q284 590 251 611T184 633Q146 633 119 607T92 550Q92 539 94 534Q100 516 143 460T186 386Q186 366 170 336T119 281Q102 264 70 250L49 260L56 266Q64 271 72 278T90 296T106 317T112 339ZM602 345Q602 357 608 371T622 397T642 421T661 441T678 456L686 462Q663 473 652 486T639 512T634 553Q631 594 624 608T593 631Q587 632 567 632Q539 632 497 600T416 497L410 484V122L467 103Q481 99 502 92T533 82T557 75T578 69T594 66T610 64Q647 64 672 87T697 144Q697 180 650 250T602 345\",120084:\"428 596Q412 596 386 595T350 593Q313 593 291 605T268 638Q268 644 269 648T274 658T284 669T301 689T326 718L336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q744 592 744 398Q744 299 708 213T646 104L603 68L614 55Q670 -5 710 -5Q726 -5 744 1T772 14L781 20Q782 20 782 7V-6L771 -13Q673 -69 665 -69L647 -63Q552 -30 514 8H512Q509 8 500 3T471 -9T428 -23Q405 -27 377 -27Q305 -24 228 6T124 36Q69 36 27 -16Q23 -13 19 -8L11 0L27 20Q93 102 109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596\",120086:\"750 276Q750 141 645 57T378 -27Q224 -27 146 67Q66 163 66 307Q66 361 80 412T127 515T217 609T356 676L388 684L420 692L442 681Q545 625 586 608T654 591Q688 591 710 609T737 646L742 665Q742 665 756 654L752 642Q736 594 706 566T621 515L607 510Q580 513 528 542T421 599T335 627Q272 627 214 569Q139 500 139 373Q139 308 159 247T217 136T316 56T455 26Q520 26 566 43T634 90T666 148T676 207Q676 264 649 297T580 338Q574 339 552 339Q516 339 442 325T327 310H324Q303 310 290 312T259 328T232 369Q230 375 230 390Q230 426 259 461Q286 488 338 507Q351 498 351 495L346 492Q342 490 339 488T330 482T320 473T312 462T305 447T303 428Q303 368 366 368Q393 368 487 388T613 409Q656 409 696 385T748 306Q750 294 750 276\",120087:\"289 686Q338 686 439 668T565 649Q606 649 641 672Q656 683 664 690T674 700L675 701Q676 698 676 692V681L641 636Q608 591 602 588Q577 575 528 575Q490 575 438 583L426 585L416 578Q335 520 335 465Q335 437 393 366T452 259Q452 226 406 171Q387 146 351 115L341 106L358 97Q438 58 475 58Q525 58 598 124L608 133Q617 119 617 118Q617 114 606 103Q513 0 448 -27L438 -25Q401 -19 337 14T234 48Q186 48 122 -3L112 -11L106 -3L101 5L110 15Q160 63 209 105L224 117H310Q384 163 384 210Q384 238 329 303T263 398Q262 400 262 404Q262 427 290 476T368 580Q383 596 381 596Q315 622 228 622Q159 622 118 593T76 516Q76 482 96 461T139 431L107 399L75 367Q34 403 34 472Q34 525 64 572T148 652Q207 686 289 686\",120088:\"160 247Q160 291 110 382T59 505Q59 542 106 597T207 690L218 697L229 682Q229 680 216 669T187 644T158 604T144 552Q144 526 165 482T207 387T228 291Q228 277 228 267T224 247T219 232T210 217T199 202T184 184T166 163L118 107Q124 105 132 105T160 98T220 77Q298 47 317 47Q354 47 409 105Q444 142 451 161T458 244V277Q458 339 455 457T447 596L575 686L591 676L583 668Q550 632 541 587T532 449V372V298Q532 198 550 147Q572 79 605 79Q617 79 631 84T656 95L665 100V79L595 27Q578 15 560 2T532 -19L523 -26Q522 -26 490 42L458 111L397 50Q389 42 374 27T355 8T340 -5T325 -16T311 -22T294 -26T274 -27Q232 -25 152 6T35 37Q28 36 19 30T4 18T-8 4T-16 -5Q-25 10 -25 11T-20 18Q-5 34 15 57L54 101Q70 103 86 116Q94 121 113 140T137 166Q160 201 160 247\",120089:\"54 266Q118 307 118 339Q118 360 74 413T27 493Q26 530 59 578T133 651Q187 686 256 686Q299 686 332 673T382 640T409 600T424 567T429 553Q431 553 463 586T542 653T624 686Q663 686 715 652T798 617Q812 617 825 622V606L815 599Q785 576 762 546Q724 495 724 432Q724 397 737 317T750 217Q750 148 711 96Q697 75 639 34T578 -10Q563 -21 555 -23T522 -26Q458 -26 363 29Q253 89 211 89Q192 89 173 83T139 67T114 49T96 34L90 27L80 43L95 59Q121 87 148 110T191 143T213 154Q261 154 300 195Q328 222 340 267T352 406Q352 562 255 611Q222 627 187 627H182Q143 627 115 598Q96 579 96 559Q96 528 144 470T192 381Q192 348 156 314T80 256L70 250L54 266ZM727 548Q701 550 650 583T567 617Q560 617 554 615Q532 610 501 580T445 501L437 485V465Q432 326 378 223L294 150Q321 143 421 87T560 31Q608 31 634 64Q660 102 660 198Q660 226 655 292T650 387Q650 418 658 452L660 462L735 548H727ZM264 150Q265 151 263 151H261Q261 150 264 150ZM280 150H276V149Q280 149 280 150\",120090:\"32 501Q35 564 103 625T264 686Q326 686 365 652Q402 618 420 564L441 585Q486 630 539 670L559 686L572 672Q637 606 665 559L682 576Q787 686 845 686Q877 686 929 656T992 623Q999 621 1016 621Q1041 621 1054 628L1051 617L1047 606Q1042 602 1037 597Q983 557 969 522T954 434Q954 394 961 336T968 221Q968 201 966 184T963 155T956 131T948 113T936 96T923 82T906 66T887 50L816 -2Q815 -3 810 -6T801 -11T791 -16T777 -20T759 -23T735 -25Q691 -25 619 4T505 37H496L463 21Q420 0 389 -20L378 -27H362Q316 -27 275 -9T202 28T150 46H146Q114 46 59 -5L48 -16L41 -6Q40 -4 38 -2T34 2L33 4Q33 8 77 54Q111 87 142 112L154 122H166Q239 127 288 182Q346 244 346 406Q346 489 326 537T259 610Q227 628 195 628Q155 628 128 606T101 549Q101 517 146 465T192 382Q192 348 156 310T85 254L75 250L64 258L55 266Q56 267 74 276T105 301T118 339Q118 362 75 413T32 501ZM952 547Q927 555 877 586T796 617Q744 617 682 525L676 516L677 498Q678 486 678 425Q678 301 652 206Q649 195 613 151T577 102Q577 100 582 100Q618 100 720 51Q761 32 790 32H794Q843 32 869 83Q884 110 884 189Q884 233 879 294T873 400Q874 433 879 451T889 478T915 507T952 547ZM241 105Q249 98 263 88T317 60T393 42Q478 42 547 109Q607 171 607 358Q607 371 607 380T604 417T595 467T577 517T546 566T500 601L479 580Q449 550 433 526L426 516V503Q426 311 357 200L352 191L296 149Q241 107 241 105\",120091:\"96 511L78 527L149 603Q207 666 227 686L237 685Q278 680 306 667T351 631T376 588T395 533L400 516L406 527Q439 600 523 653Q538 664 587 688Q589 688 596 672T613 635T629 606Q643 588 665 588Q677 588 693 596L709 603V585L607 526Q583 536 554 564T512 614Q461 571 435 507T405 381V367H581L563 347Q561 344 558 341T553 335T549 330T546 326L545 325H541Q537 325 488 329T411 334H405V325Q405 198 454 123Q497 54 568 54Q594 54 619 64T660 84L676 95V74L565 -16L553 -20Q528 -27 512 -27Q492 -27 475 -21T444 -5T418 19T398 47T382 77T371 105T363 128T358 145L357 151Q354 151 339 136T294 91T232 37Q152 -22 113 -22Q90 -22 69 -9T38 17T28 32Q28 33 58 68L86 101Q94 81 115 64T165 47Q206 47 249 84Q302 128 325 222Q334 263 336 312V334H312Q198 334 163 324H161Q162 326 182 348L198 367H336V398Q333 508 308 550Q295 570 274 585T227 601Q204 601 181 589T145 565T115 533T96 511\",120092:\"123 345Q123 358 75 415T27 496Q27 533 63 578T121 639Q181 685 256 685Q305 685 332 676T384 635Q419 588 425 542Q468 585 526 628T618 686Q632 667 658 645T704 609T724 594Q740 512 740 385V375V361Q740 128 682 -3Q656 -64 554 -141T361 -218Q319 -218 287 -203T243 -173T230 -150Q230 -148 267 -109L304 -69Q311 -115 341 -142T411 -170Q474 -170 534 -119T624 11Q660 111 660 312Q660 447 633 528L612 549Q578 583 552 596L543 601L528 592Q501 574 483 558Q454 528 436 494L431 484V473Q431 330 376 230Q366 213 359 206T306 159L250 112Q278 105 327 82T399 58Q421 58 440 69T471 92T484 104H485L493 90L480 73Q453 39 429 13Q393 -22 372 -22Q342 -22 260 15T153 53Q97 53 48 -16L38 5Q46 22 74 54T128 108L143 122H155Q226 127 275 168Q352 236 352 399Q352 501 309 564T197 628Q156 628 129 607T102 553Q102 517 147 463T192 383Q192 323 75 250L59 266Q123 314 123 345\",120094:\"86 363Q86 365 128 391T212 444L255 470Q256 470 263 465T283 453T308 442Q338 431 346 431Q350 431 358 436L414 465L421 459L418 434Q404 339 404 262Q404 147 408 119L425 97Q443 74 444 74L467 86L491 97Q492 97 497 83L436 28Q377 -26 374 -26L331 46L329 91L155 -35Q152 -35 114 10T68 65L67 86Q66 100 66 156Q66 177 66 198T68 236T71 268T74 296T77 320T80 338T83 351T86 360V363ZM314 365Q285 367 255 374T206 386L187 392Q181 392 172 376T154 311T145 197Q145 124 151 118Q156 110 187 78L208 56H214Q221 57 253 76L308 109L329 123V136Q328 143 328 257V365H314\",120095:\"177 427Q177 364 181 364Q184 364 192 370T223 395T271 433Q317 469 323 469Q325 469 338 462T377 440T432 413L440 409L441 396Q441 394 441 372T442 334Q442 203 425 108L423 97L400 83Q347 49 296 21T222 -19T196 -31Q192 -29 149 12T87 71L89 89Q100 155 100 319Q100 500 94 627Q94 632 94 638T94 648T94 656T93 662V664Q93 668 97 669T106 670H110Q114 653 118 633L127 596Q127 595 132 597Q136 599 195 642L255 685L272 673Q269 670 256 659T233 637T211 609T190 565T179 508Q177 494 177 427ZM295 377L274 385Q273 385 264 381T242 370T223 361Q213 355 188 340L178 333V123L198 103Q259 42 285 42Q299 42 314 55T339 85Q363 132 363 232Q363 310 358 343V349L345 355Q330 363 295 377\",120096:\"72 208Q72 323 84 361Q84 363 167 414Q248 466 250 466Q255 465 260 465Q283 460 307 450T344 430L357 422L306 343L301 342L296 340Q267 362 247 372T216 384T177 390Q154 349 154 238Q154 220 156 158V145L168 132Q179 121 208 93T244 59Q245 58 246 58Q255 58 302 83T350 108L352 104Q355 100 356 96L358 92Q358 91 274 32T187 -29L177 -20Q160 -6 120 36T77 84Q77 87 75 118T72 208\",120097:\"13 542Q13 544 77 576T147 609Q154 609 185 598T283 551T414 464L427 454V440Q427 436 427 412T428 372Q428 315 426 270T418 197T409 152T400 121T394 103L304 35Q285 21 261 2T225 -25L214 -33Q149 7 97 59L76 80L75 91V171Q75 221 76 254T79 299T80 313Q80 315 78 321Q78 323 78 326L77 330Q79 336 132 384T211 447L219 445Q221 445 224 444L228 443Q229 443 228 441T221 432T206 415L191 395Q175 378 162 339Q152 306 152 250Q152 217 159 140V134L171 121Q194 99 235 74T284 48Q296 48 310 75T337 156T349 267Q349 346 336 400L315 420Q246 489 176 525Q127 545 94 545H73L27 527L13 542\",120098:\"353 103Q353 97 358 87L337 71Q293 38 247 6Q191 -30 189 -30Q188 -30 173 -16T130 26T76 85L74 99Q70 139 70 190Q70 228 73 271T79 338T84 365L94 372Q105 378 126 392T166 417L246 467Q283 417 349 369L364 358L355 349Q249 249 169 180L151 166L152 152V139L165 126Q186 105 215 84T260 62Q267 62 309 82L353 103ZM267 323Q246 337 230 350T204 371T189 385T179 394T174 397Q149 381 149 219V211Q151 211 171 223T220 258T268 299L282 313L267 323\",120099:\"128 387Q128 391 112 456T92 546V555L101 568Q133 617 183 670L193 681L204 673Q238 648 262 648Q276 648 292 656L302 661L308 653Q308 652 278 618L249 585H234Q194 587 159 595Q158 595 156 596H153L150 597Q151 593 152 581T154 564T157 547T164 524T176 494Q199 436 203 400V392H207L323 386Q323 384 309 368L296 351H203V176Q201 -9 198 -32Q194 -61 166 -114Q158 -129 153 -138Q114 -214 110 -221Q105 -221 98 -220L87 -219V-216Q88 -215 106 -150T124 -82Q128 -73 129 155V351H30L64 386H96Q128 386 128 387\",120100:\"27 -144L17 -131L82 -75L146 -20L126 6Q99 37 92 48L78 65L77 79Q75 103 75 158Q75 217 78 268T86 343T91 368Q92 370 109 382T157 413T222 452Q240 465 249 469L251 470Q296 443 350 428L365 424L437 465L442 459Q442 456 441 453T437 444T432 424T427 385T423 317T421 215V133L423 119Q423 111 455 -17Q455 -21 380 -108T290 -201Q290 -202 284 -204T269 -207T252 -209Q172 -209 75 -135L62 -126Q60 -126 44 -135L27 -144ZM349 351Q267 359 178 389Q177 387 173 376T166 358T161 337T157 303T155 259Q155 195 159 135L160 124L170 112Q180 101 204 77T230 53Q231 53 286 88L340 123V141Q340 235 348 329Q348 334 348 339T348 348L349 351ZM364 -59Q364 -37 358 -1T347 64T341 93Q336 93 252 28T149 -57Q226 -134 293 -134Q325 -134 344 -118T364 -69V-59\",120101:\"88 427Q88 486 87 545T84 634T81 667Q81 673 82 673T89 676H94L117 600L200 661Q208 667 218 674T233 684L238 688L254 678Q222 646 216 637Q164 572 164 483V442V371Q187 390 244 431T312 478Q344 446 411 423L428 417L429 396Q434 297 434 218Q430 8 406 -34Q346 -111 262 -195L251 -205L249 -203Q248 -203 244 -199T236 -193Q226 -183 227 -182Q228 -182 244 -169T278 -140T301 -121Q330 -89 340 -22Q355 60 355 171Q355 200 353 244T348 321T344 354Q333 363 307 376T260 390Q241 390 179 350L164 341V121Q180 96 201 66L213 50Q210 46 172 11T131 -24Q130 -24 123 -11T102 25T77 65V78Q80 104 84 227T88 427\",120102:\"72 617Q72 618 102 645T133 673H134Q134 668 175 627L187 615L130 555L116 568Q72 615 72 617ZM27 369Q21 376 14 382L26 392Q83 440 119 474Q158 435 169 427L179 420L176 395Q166 302 166 227Q166 171 174 139Q178 119 186 103T202 81L208 75Q255 100 261 100Q262 100 264 92T267 83Q267 80 208 30T145 -20Q143 -20 118 17L91 55Q98 117 98 193Q98 339 88 369Q71 390 68 390Q63 390 39 376L27 369\",120103:\"101 644L132 672L145 657Q155 642 169 628L182 614L169 600Q148 579 140 570L125 555L112 568Q109 570 91 592T72 615Q72 617 101 644ZM19 -208Q-9 -185 -9 -183Q57 -134 80 -106Q103 -81 110 -19T118 179Q118 294 113 329T86 383Q78 389 76 389Q73 389 57 379L39 367Q26 380 26 381L33 387Q40 393 53 405T79 428L130 474Q147 457 186 428L195 422L196 376Q196 130 192 58T174 -35Q172 -39 104 -114T19 -208\",120104:\"93 348Q93 379 90 503T87 658V670Q87 671 94 671L100 672L112 636Q124 603 124 600L144 616Q196 659 234 682L246 689Q252 686 256 685T268 680L254 667Q225 641 211 626T184 579T168 505V497L178 504Q203 523 237 544L300 584L310 573Q359 522 359 481Q359 476 359 472T358 464T355 456T351 448T346 440T340 433T332 424T323 414T312 402T299 389L255 343L300 342H346L320 309H177V128L193 113Q214 92 244 68L254 60L303 84Q351 108 352 108L362 96Q355 85 277 30T194 -25L170 -4Q146 18 120 41T89 68Q94 85 94 168Q94 184 94 218T93 268V309H58L24 310L51 342H93V348ZM172 342Q217 342 252 374T287 445Q287 472 255 504Q242 517 241 517Q202 498 187 468T168 365V342H172\",120105:\"221 76L267 99Q268 98 269 96T271 88T270 82L262 76Q255 69 241 57T214 34L148 -20L98 56L99 89Q107 247 107 373Q107 494 101 621Q101 653 99 659V665L106 668L113 672L118 655Q122 642 131 617L138 597Q140 597 157 611L240 670L264 685Q265 685 270 680T276 674T269 667T247 647T219 617Q197 587 186 551T173 493T171 438Q171 376 175 282T179 147V117Q184 109 201 93T221 76\",120106:\"20 367L8 379Q9 380 63 425T118 471Q130 460 143 446L168 421V398L169 376L295 475Q362 433 415 418V399Q415 380 416 380T437 394T484 428T529 462L544 474L556 467Q590 449 614 438T646 424L653 421L665 417L664 412Q664 411 664 407T664 397T663 384Q660 342 660 335Q658 303 658 245Q658 186 660 152L661 126L669 115Q680 96 697 79L707 83Q716 87 723 90T735 96T741 100T746 102L747 103V102L750 95Q753 88 753 87L631 -18Q630 -17 622 -3T589 43L576 60L579 72Q592 146 592 218Q592 265 584 321Q581 345 578 350T560 363Q535 376 496 386L481 390Q475 387 425 358L415 351V238V157Q415 142 415 135T417 120T421 110T430 98T441 81L465 47Q462 44 458 41T443 28T420 8L380 -26L333 47L336 62Q339 77 342 109T345 184Q345 223 341 285T333 348Q322 364 258 382L240 388L169 347L168 240Q168 118 171 110L174 106Q178 101 183 93T195 78L217 48Q217 47 196 30T154 -5T133 -21L130 -16Q127 -10 122 0T111 19Q89 56 89 60Q95 76 95 153Q95 239 88 337V365L62 391L20 367\",120107:\"31 368Q20 379 20 380T72 427L121 470L129 463Q137 455 155 441T176 425V367L320 475L329 469Q351 454 385 437T434 417L432 402Q429 362 429 231V128L439 111Q442 107 445 102T449 95T453 90T456 86T459 84T463 82T467 82Q468 82 489 93T511 105T514 95V88L395 -18L340 65L341 77Q347 111 348 178Q348 343 343 353V358L332 363Q298 377 264 382Q260 382 254 382L249 383Q247 383 211 362L176 341V229V147Q176 134 176 127T177 115T179 106T183 99T189 91T197 81Q201 76 206 69T214 57L217 53Q217 52 175 15T132 -22Q132 -20 114 5T88 41Q84 45 84 50Q94 116 94 203Q94 227 93 263T92 324L90 364L67 388L50 378Q32 368 31 368\",120108:\"67 121Q70 265 84 359V364L97 371Q137 394 177 421T238 464T260 480L278 468Q295 457 327 442T394 418L406 414Q412 388 412 300Q412 263 410 228T405 170T399 130T393 103T391 92L381 86Q274 19 165 -28L161 -24Q157 -21 151 -15T136 -2T118 14T101 30T86 46T74 60L67 68V121ZM335 278Q335 286 335 303T334 335L333 349V356H326Q288 360 208 388L183 397Q178 393 172 383T154 333T142 239Q142 192 151 134Q152 124 155 120T175 99Q197 77 219 64T251 47T267 44T281 52T302 80T320 124Q335 182 335 278\",120109:\"23 25Q15 33 12 38L35 59Q82 102 87 105V351L68 378Q42 414 42 422Q42 437 67 472T114 530L125 541Q126 541 132 537T138 532Q121 507 121 488Q121 453 160 413L167 405L166 390L165 372Q169 372 233 421T305 478Q307 479 315 472Q395 421 423 415Q424 415 424 415T425 414L426 410Q426 407 426 401T426 388Q430 335 430 272Q430 139 408 80Q407 78 340 22L273 -33Q200 23 165 23Q164 23 164 -32Q165 -89 168 -155V-170L93 -212L78 -203Q85 -48 87 16V47H79Q53 44 23 25ZM319 41Q346 94 349 212Q349 278 343 343V351L330 357Q318 363 270 381L255 387L245 383Q212 370 178 345L166 336V287Q165 260 165 166V94H175Q219 90 299 51L319 41ZM132 57L129 60Q130 58 132 57ZM158 29Q159 29 155 34T145 45T138 50Q155 29 158 29\",120110:\"399 19Q399 -123 407 -174V-179L332 -219L322 -210L312 -202L314 -185Q320 -83 323 54V95L311 85Q255 40 162 -19Q146 -29 145 -27Q140 -22 103 20L63 65V73Q61 83 61 115Q61 122 61 135T60 154Q60 263 79 353L83 368L94 375Q123 391 147 405T186 429T212 446T229 458T238 466T243 470T247 471L260 464Q274 457 295 448T330 434L341 432L410 479L412 478Q414 476 416 475T419 473L417 461Q399 358 399 19ZM316 367Q287 370 252 377T196 391L176 397H175Q173 397 166 382T149 314T139 187V158Q139 138 141 132T155 114Q158 111 160 109Q210 58 211 58L218 62Q226 67 240 75T266 91L319 124V196Q319 334 325 361V367H316\",120111:\"357 398Q364 398 375 403L386 408Q386 404 387 400V393L369 377Q361 370 350 360T336 347T327 340T316 336T303 335Q270 335 234 371L224 379Q220 375 214 370T198 355L182 340V243Q182 164 183 152T189 129Q195 117 211 100T239 72T254 60T298 81Q342 101 343 101Q344 100 345 92T346 82L200 -21Q174 -5 117 55L97 75L99 92Q106 147 106 196Q106 216 104 282T97 355Q95 359 95 361Q95 364 77 378L65 387L48 380Q30 372 29 372Q28 371 23 375T17 380Q17 384 50 415T107 467L115 474L128 461Q171 421 182 414V382L235 425Q247 435 261 446T283 462L290 468L295 460Q335 398 357 398\",120112:\"272 33Q284 33 290 70T296 138Q296 181 290 198T262 230Q257 232 246 232Q231 232 218 227T156 194L108 167L101 176Q90 192 75 219L69 230V284Q69 346 70 357V377L146 427Q181 450 202 464T223 477L225 476Q227 475 229 474Q231 472 242 466T270 450T296 431Q309 418 326 418Q342 418 361 429T392 450T403 459Q406 445 406 442Q406 440 384 421T338 382L316 363Q315 362 310 362Q292 362 251 371T173 396Q156 403 155 403Q143 386 143 342Q143 305 150 278T168 244Q171 242 181 242L190 243L315 300Q330 295 357 274Q358 273 362 270T366 266T369 261T372 253T373 239T374 217T374 185Q374 157 372 133T368 98T363 71T358 50L336 40Q288 20 255 2T211 -22T198 -29L190 -22Q181 -14 168 -3T138 19T104 38T70 46Q50 46 32 37T3 20T-9 11L-18 23L-1 41Q46 89 62 99T112 110Q141 110 157 103T225 62Q268 33 272 33\",120113:\"228 640L242 627L227 613Q213 599 211 593T203 553Q197 500 196 435V389H301L272 353H195V274Q195 178 196 159L197 123Q249 71 273 68H280L312 83Q344 99 345 99Q348 99 348 78Q348 76 314 52T246 4L212 -20Q211 -20 164 19T112 62Q112 122 113 196Q113 228 113 262T114 318T114 341V353H27L62 389H116L117 431V558L228 640\",120114:\"171 315Q171 252 165 199T153 124L147 103Q147 102 196 80L244 57L335 107V116Q339 161 339 268Q339 315 338 351T337 412V424L420 468Q424 465 427 461L424 435Q412 331 412 226Q412 170 415 145T434 96Q442 84 452 83Q461 83 492 96L506 102Q507 102 510 96T513 88L493 71Q445 32 401 -9Q392 -18 388 -17L384 -16Q358 39 355 44Q336 77 333 77Q261 45 203 -9Q186 -23 181 -23Q177 -23 162 -11T121 18T69 44L57 48L61 54Q65 60 71 73T82 102Q100 156 100 262Q100 305 93 335T80 373T62 396L23 376Q18 377 9 386L119 474Q149 437 171 421V339V315\",120115:\"55 418Q55 443 100 503Q121 530 123 530Q125 528 127 528T131 528T134 528T135 524T131 516Q123 499 123 486Q123 457 159 416L169 405L170 388L171 372Q171 371 244 424L317 477L334 466Q394 428 432 416L433 402Q433 400 433 377T434 336V305Q434 195 420 131Q413 94 406 87Q403 84 298 29L192 -28L172 -8Q139 25 106 52L92 64V70Q95 97 95 198Q95 293 94 318L92 355L84 367Q55 406 55 418ZM174 306Q174 297 173 255T171 184Q171 153 175 136T198 100Q207 94 224 80T255 57T282 49Q304 49 328 80Q359 129 359 243Q359 284 352 345Q351 358 348 360Q333 373 304 384T265 396L251 390Q215 372 186 351L175 344V337Q175 319 174 306\",120116:\"45 425Q45 439 82 485T126 532Q127 532 128 532T131 531T137 529L132 519Q121 499 121 483Q121 473 131 454T156 419L167 408L169 376L185 388Q237 425 291 473L301 466Q337 443 394 416L419 405L418 387V369Q419 369 487 418T560 471L581 459Q597 450 621 437T664 415T684 406Q688 406 688 323Q688 254 679 193T662 103T648 71Q647 70 554 20L464 -28L443 -15Q416 1 386 17T343 40T331 49Q331 52 333 73T337 133T339 216Q339 309 334 339Q333 341 316 353T277 377T246 389Q235 389 201 369T166 346Q166 345 164 247Q164 232 164 210T163 179Q163 139 170 116T205 57L212 48L136 -27Q115 16 87 44L78 53L80 67Q88 124 88 211Q88 282 87 315T83 356T74 371Q45 410 45 425ZM591 352Q580 359 565 365T540 374T517 381T504 385L418 342L417 318V220Q417 212 417 194T417 170T418 152T420 134T424 120T431 106T440 95T454 83Q508 44 544 44Q566 44 583 77Q603 120 605 235Q605 289 600 322Q598 343 597 345T591 352\",120117:\"14 377Q63 428 117 472Q130 462 144 449L193 408V392V376L247 420Q300 464 301 464L310 451Q331 417 363 390L333 365Q303 340 301 340Q293 343 277 364T250 386Q241 386 215 361L195 341Q194 333 193 327T191 318T190 304T188 269Q188 220 192 148Q193 122 195 118T210 101Q255 60 271 60Q276 60 278 61L318 82Q327 86 336 91T351 98L356 101Q359 82 356 79Q354 77 283 27T210 -24L192 -7Q160 23 137 40L126 49L116 40Q66 -13 66 -54Q66 -117 167 -140L179 -142V-147L180 -152L123 -188L112 -185Q58 -170 31 -145Q10 -122 10 -96Q10 -80 22 -53Q44 -10 95 49Q97 51 100 54T104 59T107 64T109 71T111 81T112 97T113 119T114 149T114 188Q114 284 108 347V354L96 365Q76 385 67 385Q62 385 45 377L27 368L14 377\",120118:\"74 58Q89 124 89 241Q89 265 89 278T89 305T88 324T87 336T84 346T81 352T77 359T71 368Q57 388 52 398L45 409Q62 454 98 507L113 528Q128 528 128 524Q128 523 125 518T120 503T117 483V471Q123 456 130 445Q135 438 140 432T148 422T153 415T157 409T160 405T162 402T163 399T163 395V384V365Q165 365 237 419L311 473Q383 430 420 416Q426 414 426 411V404Q426 398 426 388T427 367Q431 233 431 201Q431 -3 391 -52Q387 -58 305 -138T221 -218L218 -217Q216 -216 211 -214T202 -210L184 -202L199 -194Q259 -162 288 -127T334 -19T350 184Q350 257 342 328L340 356Q282 390 262 390Q248 390 178 346L163 336V111L216 45L131 -26L124 -15Q114 3 85 44L74 58\",120119:\"47 335L36 347L52 362Q112 421 167 461L181 471L192 465Q236 444 260 417T284 369Q284 355 276 343T233 291Q195 246 195 245T205 242T241 228T300 198L302 187Q314 138 314 74Q314 -24 291 -95Q290 -100 222 -157L154 -214H145Q102 -214 53 -189T-7 -117Q41 -21 183 122L207 147Q205 149 186 157T140 172T100 180H97V192L140 231Q192 280 199 293Q205 303 205 315Q205 339 185 363T137 388Q119 388 63 347L47 335ZM179 -153Q212 -153 226 -113T240 14Q240 67 233 98T223 132T211 143L222 130Q216 125 206 116T170 82T124 33T88 -20T72 -70Q72 -99 105 -126T179 -153\",120120:\"130 -1H63Q34 -1 26 2T17 17Q17 24 22 29T35 35Q49 35 64 44T88 66Q101 93 210 383Q331 693 335 697T346 701T357 697Q358 696 493 399Q621 104 633 83Q656 35 686 35Q693 35 698 30T703 17Q703 5 693 2T643 -1H541Q388 -1 386 1Q378 6 378 16Q378 24 383 29T397 35Q412 35 434 45T456 65Q456 93 428 170L419 197H197L195 179Q184 134 184 97Q184 82 186 71T190 55T198 45T205 39T214 36L219 35Q241 31 241 17Q241 5 233 2T196 -1H130ZM493 68Q493 51 481 35H619Q604 56 515 256Q486 321 468 361L348 637Q347 637 330 592T313 543Q313 538 358 436T448 219T493 68ZM404 235Q404 239 355 355T295 488L275 430Q241 348 208 232H306Q404 232 404 235ZM155 48Q151 55 148 88V117L135 86Q118 47 117 46L110 37L135 35H159Q157 41 155 48\",120121:\"11 665Q11 672 22 683H213Q407 681 431 677Q582 649 582 515Q582 488 573 468Q554 413 484 372L474 366H475Q620 317 620 178Q620 115 568 69T420 6Q393 1 207 -1H22Q11 10 11 18Q11 35 51 35Q79 37 88 39T102 52Q107 70 107 341T102 630Q97 640 88 643T51 648H46Q11 648 11 665ZM142 341Q142 129 141 88T134 37Q133 36 133 35H240L233 48L229 61V623L233 635L240 648H133L138 639Q142 621 142 341ZM284 370Q365 378 391 411T417 508Q417 551 406 581T378 624T347 643T320 648Q298 648 278 635Q267 628 266 611T264 492V370H284ZM546 515Q546 551 531 577T494 617T454 635T422 641L411 643L420 630Q439 604 445 579T452 510V504Q452 481 451 467T441 430T415 383Q420 383 439 391T483 413T527 455T546 515ZM585 185Q585 221 570 249T534 294T490 320T453 334T436 337L435 336L440 330Q445 325 452 315T467 288T479 246T484 188Q484 145 474 110T454 62T442 48Q442 47 444 47Q450 47 470 54T517 75T564 119T585 185ZM449 184Q449 316 358 332Q355 332 335 333T302 335H264V199Q266 68 270 57Q275 50 289 43Q300 37 324 37Q449 37 449 184\",120123:\"16 666Q16 675 28 683H193Q329 683 364 682T430 672Q534 650 600 585T686 423Q688 406 688 352Q688 274 673 226Q641 130 565 72T381 1Q368 -1 195 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM237 646Q237 648 184 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H237L230 48L226 61V343Q228 620 231 633Q232 636 237 646ZM264 61Q278 40 310 35Q363 35 401 55T461 112T496 193T513 295Q515 333 515 349Q515 411 504 459Q481 598 373 641Q351 648 321 648Q304 648 292 643T277 635T264 621V61ZM461 628Q462 627 471 616T489 594T509 559T529 509T544 441T550 352Q550 165 479 75L468 59Q474 61 484 65T522 87T573 128T618 195T650 290Q654 322 654 354Q654 418 638 464T581 552Q559 576 529 595T480 621L461 628\",120124:\"12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61\",120125:\"584 499Q569 490 566 490Q558 490 552 497T546 515Q546 535 533 559Q526 574 506 593T469 621Q415 648 326 648Q293 648 287 647T275 641Q264 630 263 617Q262 609 260 492V370L275 372Q323 376 350 392T393 441Q409 473 409 506Q409 529 427 529Q437 529 442 519Q444 511 444 362Q444 212 442 206Q436 197 426 197Q409 197 409 217Q409 265 375 299Q346 328 280 335H260V206Q260 70 262 63Q265 46 276 41T326 35Q362 35 366 28Q377 17 366 3L360 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666Q12 675 24 683H573Q576 678 584 670V499ZM137 341Q137 131 136 89T130 37Q129 36 129 35H182Q233 35 233 39Q226 54 225 92T224 346L226 623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM549 603V648H495L506 641Q531 621 533 619L549 603ZM409 317V395L400 386Q390 376 375 366L357 355L373 346Q394 331 397 328L409 317\",120126:\"737 285Q749 277 749 268Q749 260 744 255T730 250Q695 250 677 217Q666 195 666 119Q666 52 664 50Q656 36 555 3Q483 -16 415 -19Q364 -19 348 -17Q226 -3 146 70T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q213 547 213 337Q213 75 341 23Q357 19 397 19Q440 19 462 22T492 30T513 45V119Q513 184 506 203Q491 237 435 250Q421 250 415 257Q404 267 415 281L421 285H737ZM250 43Q250 45 243 55T225 87T203 139T185 224T177 343V361Q184 533 250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q106 117 230 52L250 43ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565ZM655 250H517L524 241Q548 213 548 149V114V39Q549 39 562 44T592 55T615 63L630 70V134Q632 190 634 204T648 237Q655 245 655 250\",120128:\"20 666Q20 676 31 683H358Q369 676 369 666Q369 648 331 648Q288 645 282 632Q278 626 278 341Q278 57 282 50Q286 42 295 40T331 35Q369 35 369 16Q369 6 358 -1H31Q20 4 20 16Q20 35 58 35Q84 37 93 39T107 50Q113 60 113 341Q113 623 107 632Q101 645 58 648Q20 648 20 666ZM249 35Q246 40 246 41T244 54T242 83T242 139V341Q242 632 244 639L249 648H140Q146 634 147 596T149 341Q149 124 148 86T140 35H249\",120129:\"79 103Q108 103 129 83T151 38Q151 9 130 -15Q116 -34 130 -37Q133 -39 157 -39Q208 -39 219 -8L226 3V305Q226 612 224 621Q220 636 211 641T166 647Q137 647 128 654Q119 665 128 679L135 683H466Q478 677 478 666Q478 647 439 647Q399 644 393 632Q388 620 388 347Q386 69 384 59Q364 -6 316 -39T184 -77H172Q102 -77 56 -48T6 30Q6 62 26 82T79 103ZM353 354Q353 556 354 596T361 645Q362 646 362 647H253Q257 639 258 628T261 547T262 312V-4L255 -17Q248 -29 250 -29Q253 -29 258 -28T277 -20T302 -5T327 22T348 65Q350 74 353 354ZM115 36Q115 47 105 57T79 67Q73 67 67 66T52 56T44 34Q44 9 62 -8Q66 -11 71 -15T81 -22T86 -24L90 -13Q100 3 102 5Q115 22 115 36\",120130:\"22 666Q22 676 33 683H351L358 679Q368 665 358 655Q351 648 324 648Q288 645 280 637Q275 631 274 605T273 477L275 343L382 446Q473 530 492 553T512 599Q512 617 502 631T475 648Q455 651 455 666Q455 677 465 680T510 683H593H720Q732 676 732 666Q732 659 727 654T713 648Q670 648 589 581Q567 562 490 489T413 415Q413 413 554 245T711 61Q737 35 751 35Q758 35 763 29T768 15Q768 6 758 -1H624Q491 -1 486 3Q480 10 480 17Q480 25 487 30T506 35Q518 36 520 38T520 48L400 195L302 310L286 297L273 283V170Q275 65 277 57Q280 41 300 38Q302 37 324 35Q349 35 358 28Q367 17 358 3L351 -1H33Q22 4 22 16Q22 35 60 35Q101 38 106 52Q111 60 111 341T106 632Q100 645 60 648Q22 648 22 666ZM240 341V553Q240 635 246 648H138Q141 641 142 638T144 603T146 517T146 341Q146 131 145 89T139 37Q138 36 138 35H246Q240 47 240 129V341ZM595 632L615 648H535L542 637Q542 636 544 625T549 610V595L562 606Q565 608 577 618T595 632ZM524 226L386 388Q386 389 378 382T358 361Q330 338 330 333Q330 332 330 332L331 330L533 90Q558 55 558 41V35H684L671 50Q667 54 524 226\",120131:\"12 666Q12 675 24 683H333L340 679Q350 665 340 655Q333 648 309 648Q287 646 279 643T266 630Q264 623 264 346Q264 68 266 57Q274 40 284 35H340Q413 37 460 55Q514 78 553 117T602 197Q605 221 622 221Q629 221 634 215T640 201Q638 194 625 105T611 12Q611 6 600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H237Q235 41 233 48L229 61L226 339Q226 621 229 628Q230 630 231 636T233 643V648H129Q132 641 133 638T135 603T137 517T137 341ZM580 48Q580 59 583 74T586 97Q586 98 585 97T579 92T571 86Q549 64 513 43L500 35H577L580 48\",120132:\"18 666Q18 677 27 680T73 683H146Q261 683 266 679L465 215Q469 215 566 443Q663 676 668 681Q673 683 790 683H908L915 679Q924 664 915 655Q912 648 897 648Q851 639 835 606L833 346Q833 86 835 79Q838 69 849 58T873 41Q877 40 887 38T901 35Q926 35 926 16Q926 6 915 -1H604L597 3Q588 19 597 28Q600 35 615 35Q660 42 673 68L679 79V339Q679 409 679 443T679 520T679 580T677 597Q646 521 584 375T473 117T424 3Q416 -1 410 -1T401 1Q399 3 273 301L148 599L146 343Q146 86 148 79Q152 69 163 58T186 41Q190 40 200 38T215 35Q226 35 235 28Q244 17 235 3L228 -1H28Q17 4 17 17Q17 35 39 35Q84 42 97 68L104 79V639L88 641Q72 644 53 648Q34 648 26 651T18 666ZM457 166Q451 169 449 171T435 198T404 268T344 412L244 648H157L166 637Q169 633 293 346L413 66Q424 88 435 117L457 166ZM817 646Q817 648 766 648H715V72L708 57Q701 45 697 41L695 37Q695 35 757 35H819L813 46Q802 61 800 76Q797 105 797 346L799 612L804 626Q812 638 815 641L817 646ZM124 42Q119 42 119 38Q119 35 128 35Q132 35 132 36Q125 42 124 42\",120134:\"131 601Q180 652 249 676T387 701Q485 701 562 661Q628 629 671 575T731 448Q742 410 742 341T731 234Q707 140 646 81Q549 -19 389 -19Q228 -19 131 81Q57 155 37 274Q34 292 34 341Q34 392 37 410Q58 528 131 601ZM568 341Q568 613 437 659Q406 664 395 665Q329 665 286 625Q232 571 213 439Q210 408 210 341Q210 275 213 245Q232 111 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 132 568 341ZM174 341Q174 403 177 441T197 535T249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 488 69 344Q69 133 231 52Q244 45 246 45Q248 45 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 415 684 475T635 563T582 610Q578 612 565 619T546 630Q533 637 531 637Q530 637 530 636V635L531 634Q562 591 577 543Q602 471 602 341V316Q602 264 599 230T580 144T531 48L530 47V46Q530 45 531 45Q533 45 547 52T583 75T622 105Q708 195 708 341\",120138:\"54 238Q72 238 72 212Q72 174 106 121Q113 110 132 90T166 59Q221 23 264 23Q315 23 348 41Q368 50 384 79Q393 102 393 129Q393 181 356 219T221 299Q120 343 74 390T28 501Q28 561 55 610Q98 682 212 699Q214 699 231 700T261 701Q309 698 340 687T408 675Q431 678 445 690T465 702Q474 702 481 690V497L477 490Q464 481 450 490Q446 500 446 501Q446 546 386 606T260 666Q215 666 182 639T148 565Q148 528 186 496T319 428Q352 414 370 405T418 379T468 338T506 284Q528 239 528 191Q528 102 456 46T266 -10Q211 -10 176 2T110 15Q86 9 73 -1T53 -12Q44 -12 37 -1V112V182Q37 214 40 226T54 238ZM446 619Q446 648 444 648Q439 646 435 644Q425 644 415 639H404L417 624Q435 606 439 601L446 592V619ZM124 619L128 635Q126 635 108 617Q64 576 64 502Q64 489 65 479T76 449T102 414T150 376T228 335Q335 291 381 245T427 128Q427 94 419 75L415 61Q421 61 448 88Q490 127 490 190Q490 233 475 264Q456 299 430 321Q402 349 369 367T287 404T204 441Q138 481 119 526Q113 544 113 565Q113 596 124 619ZM75 43Q76 43 90 46T110 50H119L106 64L74 101Q72 101 72 72T75 43\",120139:\"33 672Q36 680 44 683H624Q632 680 635 672V490L631 483Q621 479 617 479Q611 479 606 485T600 499Q600 525 584 552Q577 567 558 588T524 617Q479 642 426 646L415 648V355Q415 62 422 52Q425 42 434 40T473 35Q500 35 509 28Q518 17 509 3L502 -1H166L160 3Q149 17 160 28Q167 35 195 35Q224 37 234 39T249 52Q253 66 253 355V648L242 646Q192 642 144 617Q129 609 110 588T84 552Q69 527 69 499Q69 490 64 484T50 478Q39 478 33 490V672ZM113 639L126 648H69V597L84 612Q93 623 113 639ZM389 35Q382 46 381 86Q380 134 380 350V648H289V350Q289 199 288 131T286 53T280 35H389ZM600 597V648H542L555 639Q575 623 584 612L600 597\",120140:\"16 666Q16 677 28 683H341L348 679Q359 665 348 654Q342 648 315 648Q270 644 266 632Q262 627 262 598T261 399Q261 372 261 325T260 260Q260 149 274 99T339 30Q355 25 393 25Q430 25 457 33T494 49T519 72Q562 115 575 205Q576 219 576 379Q576 538 575 550Q568 597 550 622T506 648Q498 648 493 654T487 667T499 683H697Q709 675 709 667T704 654T690 648Q653 648 633 597Q624 573 622 546T619 377Q617 193 613 174Q596 95 544 41Q477 -19 355 -19H344Q275 -16 226 5T153 57T120 110T106 154Q101 172 99 399Q99 618 95 632Q88 644 53 648Q16 648 16 666ZM228 639L233 648H128Q128 647 133 632Q135 621 135 412Q135 197 137 185Q148 115 181 79Q209 51 235 41Q242 36 258 31T277 25Q276 27 268 38T254 59T241 92T228 145Q226 161 226 399Q226 632 228 639ZM604 621Q606 626 619 648H577L586 634Q587 632 591 625T595 614L597 608L604 621\",120141:\"316 683Q327 676 327 666Q327 648 302 648Q272 642 258 628Q249 621 249 608Q252 589 263 556T289 485T322 406T357 325T388 256T411 205L420 185Q423 185 473 317Q547 497 547 590Q547 621 541 632T516 648Q501 648 498 654Q488 664 498 679L504 683H607H660Q695 683 707 680T719 667Q719 660 714 654T700 648Q678 648 658 628L642 614L513 301Q484 231 449 148T397 25T380 -15Q373 -20 368 -20Q361 -20 358 -15Q354 -13 287 135T149 438T67 610Q45 648 18 648Q11 648 6 653T0 666Q0 677 9 680T59 683H164H316ZM216 614Q216 620 216 622T216 628T216 633T217 635T218 638T219 640T221 644T224 648H84L96 632Q118 592 236 330L367 43L387 88L404 132L380 185Q250 468 222 568Q216 590 216 614ZM576 645Q584 628 584 597L587 568L598 597Q609 624 618 637L624 648H600Q576 648 576 645\",120142:\"785 664Q785 670 795 683H982Q994 675 994 665Q994 650 975 648Q953 643 939 619Q931 593 823 292T710 -15Q706 -19 699 -19T688 -15Q682 -6 639 107T555 328T513 437Q513 438 500 409T462 325T413 212Q315 -14 310 -17Q308 -19 302 -19T288 -15L57 619Q45 643 24 648Q5 650 5 665Q5 677 17 683H146H200Q256 683 270 681T285 666Q285 659 280 654T268 648Q253 648 239 634Q230 630 230 619Q230 598 264 481L362 192Q363 193 428 341T493 492Q493 496 473 546T446 608Q426 648 399 648Q392 648 387 653T382 667Q382 678 393 683H679Q690 670 690 665Q690 662 685 655T673 648Q653 648 633 632L622 625V610Q626 576 657 479T719 300T751 218Q754 218 779 294Q847 492 847 581Q847 648 802 648Q796 648 791 652T785 664ZM194 623Q194 630 199 648H82L90 632Q99 616 199 332L302 50Q303 50 322 94T342 141Q342 142 305 245T231 467T194 623ZM585 620Q585 634 593 648H530Q466 648 466 645Q479 632 595 323L699 54Q701 56 718 103T735 154L702 245Q585 562 585 620ZM884 572L890 587Q896 602 903 620T915 645Q915 648 893 648H868L875 634Q883 598 883 576Q883 572 884 572\",120143:\"22 666Q22 677 31 680T80 683H184H335Q346 675 346 667Q346 660 341 655Q335 648 315 648Q280 644 273 637Q273 630 300 583T356 492T386 448Q430 504 450 535T474 577T478 601Q478 620 469 634T444 648Q428 648 428 666Q428 678 436 680T488 683H559H630Q673 683 681 681T690 666Q690 648 673 648Q652 648 619 637Q571 615 517 550Q490 517 450 464T410 408Q415 399 501 273T617 106Q648 61 661 48T688 35Q705 35 705 16Q705 5 695 -1H539Q384 -1 379 3Q373 10 373 17Q373 27 380 31T408 35Q459 40 459 49Q459 59 418 129T335 259Q334 260 332 260Q328 260 273 197Q210 127 208 117Q199 104 199 82Q199 57 213 46T239 35Q247 35 252 29T257 15Q257 10 256 7T253 3T248 0L246 -1H28Q16 7 16 15T21 29T35 35Q61 35 117 88Q289 279 304 297Q307 303 255 377Q117 586 79 626Q60 648 39 648Q32 648 27 653T22 666ZM237 639V648H173Q113 647 113 646Q113 642 137 612Q186 546 302 373T453 139Q497 63 497 43Q497 39 495 35H559Q622 35 622 37Q622 38 583 94T486 233T373 399T277 552T237 639ZM553 637L566 648H504L508 637Q510 630 515 615V603L528 615Q529 616 539 625T553 637ZM170 46Q169 49 167 58T164 70V83L137 59L113 35H175Q175 38 170 46\",120144:\"16 659T16 667T28 683H295Q306 676 306 666Q306 648 284 648Q258 648 255 641Q255 634 265 615T339 479Q418 339 421 339L455 394Q489 448 523 502L557 557Q560 566 560 582Q560 637 504 648Q489 648 486 655Q475 664 486 679L493 683H693Q704 675 704 667Q704 650 684 648Q672 645 653 623Q633 604 614 576T517 426L439 301V183Q442 62 444 59Q449 35 504 35Q521 35 528 30Q538 16 528 3L521 -1H195L188 3Q178 16 188 30Q195 35 213 35Q266 35 273 59Q274 61 277 163V261L75 621Q64 638 58 643T37 648Q28 648 22 653ZM219 637V648H101Q110 634 215 446L313 270V166Q310 59 306 48L301 35H415L410 48Q404 65 404 175V290L317 443Q230 601 226 612Q219 625 219 637ZM608 630L624 648H575Q584 632 588 623L595 610L608 630\",120172:\"821 97Q822 97 824 88T827 77L793 53Q676 -25 670 -28Q669 -29 656 -27L583 123Q583 124 467 46L352 -31L341 -20Q305 18 264 47T192 77Q161 77 60 32L49 40Q37 47 38 49Q39 49 93 83T212 160T297 219Q411 312 411 452Q411 519 360 571T233 624Q180 624 157 601T133 548Q133 524 160 496T214 441T241 393Q241 356 199 321T100 256L86 249L77 256Q68 263 67 263L84 274Q101 286 118 304T135 339T109 384T56 446T29 504Q29 566 118 624Q207 686 309 686Q349 686 360 685Q405 678 439 661T491 625T520 583T534 543T537 511Q537 436 491 344L478 318L455 299Q420 272 308 179L284 160L294 158Q348 154 426 89L437 79Q513 110 579 153V175Q579 183 579 227T580 330T581 446T582 542L583 582L664 630Q681 640 703 653T734 673L744 679Q750 678 756 676L767 674L716 623V585Q716 568 712 463T708 289V250Q708 237 709 218T710 195L711 180L739 130Q768 79 771 79Q775 79 796 88T821 97\",120173:\"160 345Q160 357 144 376T109 413T73 458T57 509Q57 544 95 584Q142 631 205 657T331 684Q382 684 427 658T500 585L505 577L521 588Q537 599 562 614T616 646T679 673T738 684Q790 684 807 666T840 587Q850 552 863 532T888 508Q894 505 906 505Q917 505 930 507T953 512T963 514L964 504Q965 495 965 494T914 467T808 413T745 384H751Q782 380 802 377T854 362T904 334T937 287T951 217Q951 178 937 143T908 91Q903 86 820 34L734 -21L718 -24Q679 -31 639 -31Q561 -31 451 4T271 40Q190 40 119 -2L99 -13L91 1L84 15L86 16Q88 18 132 42T233 100T315 152Q377 199 386 233Q388 240 393 297T399 363Q399 487 353 551Q337 573 306 597T238 622Q201 622 179 602T157 557T214 476T272 396Q272 371 229 334T143 272T96 246Q95 246 85 252T74 259T95 273T138 306T160 345ZM529 443Q529 409 528 385T526 353L525 346Q526 346 649 390T773 435Q749 451 742 464T727 518Q727 519 725 532T721 548T717 562T712 577T706 589T698 601T688 608T675 614T658 616Q626 616 576 582T525 528Q525 527 526 518T528 489T529 443ZM772 57Q774 57 778 58T792 64T808 77T821 103T827 144Q827 222 784 266T660 322Q652 323 611 323H596Q577 323 535 316L523 314Q520 291 505 255L500 241L356 138L366 137Q443 131 518 110T650 72T748 54Q763 54 772 57\",120174:\"460 -32Q373 -32 305 -11T193 45T122 124T83 214T72 303Q72 395 114 476L119 486L313 592L338 568L359 580Q418 615 479 638T568 668T606 675Q607 675 608 676H610Q612 676 615 661T630 621T660 578Q673 568 694 568Q717 568 721 570H726Q724 565 722 559L717 549L706 545Q608 513 583 513Q568 517 559 522T533 546T493 603L490 609Q452 599 452 558Q452 537 469 481T486 393Q486 353 474 331T422 285T296 231L272 223L262 230L253 237Q279 246 314 274T351 338Q351 376 334 442T316 532Q316 546 319 552Q319 554 316 554Q304 554 288 547T250 523T214 466T199 371Q199 218 299 133T541 47Q571 47 585 51T652 81L712 108Q716 104 716 81L706 74Q695 68 673 54T633 29L550 -22L540 -24Q492 -32 460 -32\",120175:\"380 596Q307 596 250 582T158 546T100 493T67 433T56 373V361Q55 361 43 366L31 372V384Q31 455 69 523T173 627Q213 650 284 666T444 683H452Q629 683 735 629Q896 548 896 369Q896 263 839 163Q835 155 818 140Q746 82 662 27T563 -29Q525 -29 386 16T183 62Q147 62 127 52T63 1L48 -14L40 -4L31 5Q83 73 172 149L186 161H199Q291 161 329 181Q357 199 357 231Q357 258 301 316T245 396Q245 423 282 458T349 512T403 543L413 548L425 545L438 541Q373 491 373 462Q373 446 399 415T453 349T480 288Q480 251 433 212Q394 180 348 156L334 148L353 145Q408 134 513 105T654 76Q711 76 745 132T780 277Q780 434 676 517Q637 549 562 572T380 596\",120176:\"527 55Q574 55 619 69T691 97L717 111V85L562 -18Q520 -29 443 -29Q379 -29 325 -15T235 21T180 61T146 98Q74 186 74 307Q74 395 109 472Q113 482 123 489T190 533Q251 568 295 591L308 598L350 580L361 586Q403 612 464 636T564 673T609 686Q610 686 610 685Q612 683 616 670T627 636T646 601Q666 572 686 572H692Q713 572 726 576H728L725 565L723 554L692 544Q660 535 629 526T595 516Q585 514 574 519Q563 527 543 552T507 597T490 617Q467 604 456 579V564Q456 535 473 471T492 393L494 381L613 460L622 446Q630 433 650 411T696 371L703 365L614 312H596L580 322Q568 329 553 340T528 355T510 360Q496 358 491 354T484 345T471 326T435 297Q408 278 370 261T307 235T277 227Q273 227 266 234L256 240L267 245Q280 251 294 258T330 288T353 336Q353 373 335 444T316 530V537Q316 549 322 567Q270 554 233 499T196 370Q196 253 287 157Q392 55 527 55\",120177:\"424 522Q265 596 208 596Q193 596 180 593T150 579T116 542T89 474Q86 465 86 463L59 481L63 494Q87 578 137 627Q191 684 285 684Q334 684 406 658T538 607T621 581Q644 581 706 629L721 640Q722 640 725 630L727 620Q701 592 654 548T582 486L569 487Q533 490 485 504L468 508Q449 503 429 495T387 466T365 422Q365 373 439 299L453 310Q473 325 528 370L588 418Q614 398 642 368T668 331Q667 331 628 296L590 262L582 274Q557 311 526 311Q511 311 487 297T462 278Q462 277 492 244T551 166T581 88Q581 54 570 25T536 -27T505 -56T478 -76Q376 -146 274 -146H270Q199 -146 162 -118T124 -15Q124 12 128 30T132 96V107Q132 144 117 157Q102 169 85 169Q74 169 59 165T32 156T20 151Q20 152 19 158T17 167Q17 168 17 168T17 169T19 170T22 172T27 175T35 179Q131 230 195 230Q231 230 259 202Q270 190 270 171Q269 150 253 87T236 -16Q236 -67 261 -87T322 -107Q380 -107 428 -68Q467 -35 467 30Q467 60 447 91T383 171T316 251Q290 286 278 308T263 339T261 359Q261 384 284 418Q322 469 424 522\",120178:\"742 611Q784 611 812 631V611Q807 607 783 591T718 544T629 476L606 458Q608 458 628 457T667 453T713 443T762 423T804 388T836 335Q844 313 844 289Q844 231 814 182T746 103Q720 82 655 48T546 -18L520 -21Q456 -29 432 -29Q313 -29 223 33Q204 45 183 65T135 119T91 207T74 320Q74 428 109 480Q116 491 127 497T215 546L308 595L343 583L355 591Q387 613 433 636T488 660H489L491 659Q493 658 495 657T500 655L509 650L500 645Q479 635 460 612T441 552Q441 535 447 498T459 433T466 405L625 513L643 526Q620 530 585 546T535 586Q535 587 532 592T527 602T525 610Q525 613 577 649L630 687Q632 687 638 675T653 649T686 623T742 611ZM349 313Q349 328 327 413T305 510V516Q305 531 308 542T314 559T317 566T315 567Q297 567 270 548Q233 524 212 490T191 392Q191 337 206 288T244 207T284 156T316 128Q410 51 535 51Q632 51 675 102T718 217Q718 269 690 314T599 375Q574 381 535 381Q501 381 477 377L466 376Q469 364 469 349Q469 314 457 295T408 258Q366 236 308 219L288 213L279 220L270 227Q284 232 294 236T309 243T320 252T326 260T331 270T336 281Q349 310 349 313\",120179:\"288 139Q288 172 255 224T189 335T156 442Q156 495 242 579Q289 625 361 668Q364 671 368 673T376 678T380 681L384 683L392 676Q401 670 414 661T443 642T477 626T509 619Q543 619 618 668Q625 672 628 674T631 675Q632 673 633 663T633 651L564 595Q556 589 545 580T528 566T516 556T505 548T497 543T488 539T481 537T472 535T463 534T451 534H442Q385 534 304 581L291 589Q290 588 285 583T277 575T269 566T262 555T257 543T255 529V522Q255 507 260 487T276 446T293 409T311 376L321 359Q321 358 322 358T324 359T327 361T333 366Q386 409 481 460L503 472L543 471Q586 471 599 470Q692 459 714 430Q725 416 738 360T752 245Q752 184 742 127T725 51T703 -8Q700 -13 619 -64T518 -123Q508 -126 493 -126Q438 -126 398 -86L427 -52Q456 -17 457 -17Q460 -17 465 -16H473Q474 -21 481 -32T504 -56T539 -69Q572 -69 599 -34Q625 4 625 158Q625 264 609 311T532 378Q508 386 484 386Q455 386 419 372T360 345T337 330L346 313Q375 263 386 227Q389 215 389 202Q389 192 388 184T384 168T376 152T365 138T350 121T331 103T307 81T278 54L194 -24Q130 30 99 30Q85 30 64 20T31 1T16 -10Q15 -11 13 -7Q12 -6 11 -3Q8 4 6 8L32 35Q88 88 117 107T169 126Q177 126 182 125Q218 118 252 84L263 73Q288 113 288 139\",120180:\"500 615Q523 615 550 628T595 655T614 668L623 654L607 642Q512 569 440 534L427 527L413 529Q384 535 340 547T265 565T209 572Q173 572 145 556T101 522T60 465Q58 460 54 460T41 468L32 477L37 487Q96 599 139 640Q187 681 247 681Q275 681 283 680Q313 674 398 645T500 615ZM418 170Q418 186 410 260T401 382Q403 418 403 424L405 433L415 444Q482 515 571 571L582 578Q591 573 607 568L597 560Q522 504 522 450Q522 427 533 357T545 241V228Q545 190 536 159T508 106T478 73T446 48Q343 -25 238 -25Q179 -25 118 15L107 22L79 5Q51 -12 51 -12L38 2L55 18Q106 67 175 122L192 136Q202 130 206 123Q223 91 252 61Q263 50 266 48T278 39T297 32T320 30Q357 30 389 68Q415 102 418 170\",120181:\"65 510Q68 517 74 528T101 569T144 620T202 661T274 680Q308 680 389 628T503 576Q530 576 596 600Q615 607 616 607Q616 602 615 596V585Q605 581 576 568T531 548T485 531T418 509L400 503L358 522Q347 527 327 537T299 550T277 560T257 568T239 573T220 577T201 578H196Q181 578 169 575T135 554T88 502L83 496Q82 496 74 502T65 510ZM424 4Q424 50 395 151T365 313V320Q365 352 369 361T405 403Q431 432 465 462T521 508T547 525L549 524Q551 524 554 523T560 521L571 517L552 498Q515 461 499 430Q485 399 485 366Q485 326 512 231T539 84Q539 -14 460 -77T273 -141Q248 -141 234 -140T198 -131T160 -106T134 -59Q128 -40 124 -16T117 22T108 49T91 69T59 75T15 65L1 59Q-8 76 -7 77Q4 85 22 97T88 129T170 149Q218 149 234 125Q242 112 242 43V21Q242 -17 248 -41T274 -85T322 -105H325H330Q363 -105 396 -75Q424 -47 424 4\",120182:\"234 109Q234 144 194 245T153 404Q153 445 180 490Q232 572 325 626T517 681H524Q612 681 661 658Q683 647 699 632T717 604Q717 600 708 545L699 490L690 489Q681 488 679 488Q675 488 669 504T640 546T577 592Q520 620 446 620Q415 620 386 614T327 594T280 553T262 487Q262 468 265 447T271 413T279 384T285 362L295 371Q320 396 352 421T439 474T538 502Q577 502 596 484T627 428Q642 386 651 373T677 360H682Q698 360 727 369L724 357Q724 354 724 351T722 346V344Q559 289 539 283Q582 272 589 271L615 265L637 189Q662 109 663 108Q668 97 682 84Q698 68 722 68H730H738Q762 68 799 91L803 80L806 70Q795 59 770 40T703 -3T631 -26Q598 -26 578 -8Q548 24 536 92Q524 154 509 183T477 218T428 224Q409 224 385 220T346 212L331 207Q330 205 330 201T331 189T332 178Q332 158 325 116L305 96Q269 60 240 38Q171 -21 123 -21Q72 -21 33 18L20 32L62 74Q96 107 102 112T116 118Q120 118 122 113T131 95T150 69Q171 48 190 48Q198 48 206 51T224 69T234 109ZM519 367Q497 432 450 432Q379 432 313 333L300 314L304 299Q306 294 309 280T315 260L321 235L542 313Q530 325 519 367\",120183:\"277 226Q277 248 253 286T203 369T178 449Q178 490 212 533T284 607Q380 683 532 683Q610 683 639 660T668 583Q668 568 666 546T663 509Q663 478 683 460Q691 452 719 452L738 450Q732 437 729 437Q728 437 652 416T573 394Q554 394 541 409T527 444Q527 449 532 487T538 542Q536 584 501 606T418 628Q389 628 364 620T317 587T295 523Q295 478 333 401T372 276Q372 269 371 267Q371 264 318 206L264 149Q284 141 317 130T433 101T577 82Q619 82 652 95T701 127T728 164T742 196L744 209Q744 210 749 208T759 203T764 199T760 185T751 154T744 129Q714 42 680 13Q628 -28 566 -28Q490 -28 403 -5T249 42T153 66T106 53T70 15T47 -16Q46 -17 30 -5L39 13Q85 100 138 148L147 156L161 157Q218 165 246 179T277 226\",120184:\"134 338Q134 357 81 417T27 504Q27 516 34 530Q55 568 110 615Q190 683 305 683H314Q445 683 495 580L501 569L512 577Q608 646 681 646Q759 646 801 585L808 576L816 583Q860 619 921 650T1041 682Q1063 682 1077 675T1096 660T1112 631T1132 596Q1160 555 1188 555Q1204 555 1228 564Q1230 565 1231 562Q1231 560 1232 554V547L1215 538Q1179 521 1114 475Q1112 474 1106 470T1099 464T1093 459T1088 452T1085 441T1082 425T1081 404T1079 376T1079 339Q1079 282 1084 236T1098 160T1117 112T1138 85T1159 77Q1166 77 1180 81T1207 90L1219 94Q1220 94 1221 86T1222 76L1045 -32Q1044 -32 1004 15L964 64V167Q965 334 970 372V378L994 402Q1032 440 1057 460Q1061 463 1066 467Q1070 469 1070 470T1068 471T1060 474T1050 481Q1040 488 1021 531T996 583Q979 609 947 609Q922 609 887 592T820 537L821 524Q825 484 825 448Q825 268 768 155L759 137L589 -28L579 -20Q533 17 507 17Q475 17 449 -7L436 -18L424 2L441 20Q446 25 456 36T471 52T484 65T497 79T509 90T522 99T534 106T548 112T561 115T576 117Q602 117 639 86Q648 81 648 81Q650 82 657 94T668 112Q711 202 711 373Q711 484 677 533T600 583Q592 583 583 581T569 577T554 568T542 560T528 549T516 539L519 523Q527 485 527 461Q527 444 522 407Q506 266 447 150L437 130L217 -25L208 -15Q165 28 126 28Q89 28 62 1Q47 -14 43 -14Q42 -14 36 -8L28 0L44 17Q96 73 120 92T166 117Q182 123 204 123Q239 123 284 78L295 67Q307 72 337 102Q400 178 400 346Q400 508 325 571Q270 618 208 618Q180 618 168 614T140 594Q124 578 124 564Q124 540 182 480T240 396Q240 359 197 321Q154 285 94 252L80 245L76 248L67 257L61 262L71 268Q82 275 94 284T120 309T134 338\",120185:\"522 492Q521 492 517 502T512 513Q542 444 542 333Q542 226 503 137L498 125L396 53Q308 -8 292 -17T260 -27Q226 -27 191 -9T136 29L145 39Q162 56 192 89L230 129L235 128H241Q276 57 332 57Q358 57 391 80Q403 89 409 100T422 143T428 227Q428 329 406 408T347 530T272 594T196 615Q152 615 135 596T118 558Q118 535 146 502T203 438T232 385Q232 357 195 322T122 265T83 243Q82 242 72 249T61 258L66 262Q72 265 82 273T103 292Q125 314 125 333Q125 351 101 376T51 432T26 492Q26 549 108 614T290 679Q326 679 335 678Q353 675 370 670T400 658T425 642T445 625T463 606T477 588T487 571T495 556T500 543L504 535L523 553Q553 581 569 595T619 632T686 667T757 678Q778 678 793 675T819 664T833 651T844 633T852 617Q884 548 910 548H916Q938 548 962 556L967 542Q967 540 947 531Q909 509 883 492T847 467T838 458Q825 419 825 328Q825 234 833 191T858 121Q875 94 892 77Q898 71 907 71Q912 71 928 76T957 87T971 91L972 88Q972 84 972 81L973 73L957 63Q891 21 806 -23L794 -30L783 -14Q766 13 728 60L713 79V372L724 384Q743 406 765 427T800 460L813 471Q809 472 806 472Q783 479 766 503T741 551T715 594T672 614Q644 614 622 595Q597 576 572 550T534 508L522 492\",120186:\"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q859 223 809 147Q801 134 789 124Q595 -30 456 -30Q395 -30 289 3T147 36Q134 36 121 33T98 26T76 15T59 4T44 -8T32 -17L22 -7L12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595\",120187:\"247 398Q247 372 206 334T126 272T83 247Q82 247 72 253T61 261Q60 261 61 262T66 265Q127 306 127 343Q127 364 63 430Q42 451 38 458T33 480V490V497Q33 526 63 567Q112 632 170 660T282 688Q341 688 384 667Q454 633 482 566Q483 565 484 566T496 574Q562 623 630 653Q699 681 751 681Q778 681 797 673Q818 662 830 609Q835 580 843 564Q863 524 895 524H901Q917 524 932 528Q936 522 938 518T942 513T942 511Q873 480 836 454Q789 423 789 395Q789 362 834 298T880 200Q880 170 867 145T820 81Q733 -20 647 -20Q581 -20 499 21V9Q499 -16 502 -53T509 -116L512 -141L370 -223L357 -216Q344 -209 344 -208L348 -196Q370 -113 370 33V52L355 58Q307 76 284 76Q258 76 228 60T183 29T141 -11Q137 -7 133 -2L126 7L134 18Q181 89 210 121T278 170Q304 179 328 179Q336 179 358 177L370 175Q368 268 367 359Q367 416 363 434Q362 438 362 441Q348 527 302 574T203 621Q169 621 148 599T127 557Q127 535 187 476T247 398ZM673 315Q673 357 786 442Q786 443 776 444T750 449T727 462Q719 471 716 484V496Q715 507 715 515Q715 571 698 588Q680 611 643 611Q592 611 547 571Q534 558 511 522L499 505V139L543 123Q702 64 744 64Q770 64 781 79T793 112Q793 143 733 217T673 315\",120188:\"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q864 250 838 196T791 126Q748 93 733 82L715 69Q714 68 723 60T748 40T774 23Q806 2 832 2Q849 2 870 6T904 14L917 17Q917 12 918 6V-3L882 -22Q806 -60 778 -73L755 -83Q640 -36 596 -7L586 0L576 -4Q513 -30 457 -30Q394 -30 289 2T149 35Q119 35 93 22T52 -4T36 -17T24 -7T12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595\",120189:\"31 498Q34 541 76 586T176 659T279 688H290Q377 688 429 653T506 569L511 558L526 572Q620 663 707 682Q722 685 737 685Q781 685 804 665T830 619T838 565T854 525Q866 511 897 511Q917 511 925 513L937 515Q938 515 941 509T944 501T925 493T870 470T803 438Q735 406 735 401Q735 400 741 399T767 390T814 374L828 367L829 307Q829 233 833 202T852 144Q873 109 896 90Q906 82 928 82T976 95V92Q976 88 978 72L807 -28Q768 39 733 87L718 108V149Q718 230 714 257T693 298Q654 333 580 333Q524 333 520 329Q520 300 489 224T443 133Q441 131 333 53T223 -27Q221 -26 204 -11T169 16T136 28Q110 28 66 -8L56 -16Q52 -13 40 -1L48 7Q165 124 211 124Q232 124 287 77L298 67Q309 73 337 97Q397 150 397 347Q397 419 379 474T330 560T269 604T207 619Q177 619 152 601T126 563Q126 540 185 479T244 387Q240 336 160 289Q144 278 98 255L80 246L62 261L79 272Q96 283 113 301T130 337Q130 353 115 373T81 410T47 451T31 498ZM524 358Q537 358 657 405T777 457Q777 459 768 459Q749 462 738 474T723 499T714 539Q706 585 697 599Q681 618 657 618Q632 618 597 595T532 515L525 502L524 441Q524 375 523 369Q523 358 524 358\",120190:\"457 -31Q356 -31 272 6T135 120T82 304Q82 372 106 430T170 527T241 588T305 626Q341 643 386 657T460 678T495 685T554 660T674 609T778 584Q800 584 818 591T848 610T866 633T878 651T883 659L893 649L901 639Q879 574 803 532T666 490Q661 490 657 490T650 491T641 492T633 495T622 500T610 505T595 513T577 522T554 533T527 547Q436 594 415 602Q393 608 374 608Q303 608 253 545T202 386Q202 229 307 135T568 41Q674 41 748 85T822 198Q822 244 779 283T639 322Q595 322 499 303T383 283Q358 283 335 290T291 318T270 374Q270 418 313 460T424 510H431L435 505L440 500Q425 496 403 475T380 427Q380 382 431 373Q437 372 475 372Q543 372 626 388T742 404Q831 404 868 362T905 260Q905 182 831 108Q692 -31 457 -31\",120191:\"666 641Q737 641 794 686L802 662Q790 648 734 596L677 541L664 538Q630 528 583 528Q540 528 482 537L461 541Q402 512 402 456Q402 427 439 387T512 311T549 253Q549 220 455 139L440 126Q541 75 586 75Q600 75 619 80T654 94T685 110T709 124T719 130Q722 125 725 119L730 108Q700 72 568 -18Q551 -30 542 -30Q495 -30 404 6T270 42H263Q213 42 142 -11L131 -19L129 -8Q126 1 126 4Q218 84 301 126L316 134H406L413 142Q436 165 436 189Q436 202 421 221T364 281Q336 307 318 328T296 356T283 381L290 394Q338 478 410 540Q419 549 417 549Q415 550 369 558T268 575T195 584Q153 584 127 567T100 523Q100 499 116 479T151 447T170 433Q170 429 171 428Q171 427 131 394T88 359Q82 363 73 370T47 403T31 457Q31 513 79 565T197 648T332 679Q369 679 490 660T666 641\",120192:\"273 244Q273 281 244 331T186 428T155 502Q155 524 165 536Q239 634 333 688Q338 684 345 680L356 672L344 664Q310 642 295 624T280 582Q280 550 303 505T348 407T371 300Q371 270 362 248L247 123L358 92Q452 64 484 64Q507 64 523 72Q553 87 573 109Q583 121 586 146T593 283Q594 303 594 344Q594 401 591 461T584 558L581 595Q598 600 623 611T672 634T719 659T754 678L768 686Q770 686 784 673L782 670Q781 668 777 664T768 655Q747 635 738 616T721 535T714 359Q714 205 723 176Q727 164 744 133T771 89Q780 75 804 75Q814 75 853 87L867 92L871 73L671 -39L654 -10Q636 20 619 50T600 83Q600 84 589 75T539 34Q478 -16 475 -19Q469 -22 449 -28T414 -34Q410 -34 394 -32Q356 -28 282 -2L237 15Q169 38 126 38Q106 38 85 27T51 4T37 -8T27 -1T18 8Q18 10 70 63T124 116Q154 123 176 131T223 154T260 191T273 244\",120193:\"133 343Q133 360 79 416T25 496Q25 523 58 563T118 624Q197 685 293 685Q331 685 339 684Q453 665 489 558L493 546Q521 570 553 596T640 653T725 684Q753 684 783 672T844 641T889 618Q895 616 912 616Q924 616 936 617T956 620T965 622T966 612V604L952 595Q924 576 895 549Q864 517 856 496T847 448V434Q847 395 848 388L859 323Q874 241 874 212Q874 142 830 96Q796 62 724 14Q661 -29 603 -29Q555 -29 421 28T242 86Q182 86 110 31Q105 28 102 26T99 25Q88 36 88 42Q95 54 222 142Q252 163 262 165Q319 183 344 218Q378 266 378 377Q378 444 362 494T319 571T266 610T212 623Q181 623 156 603T131 562Q131 539 154 512T206 458T243 416Q246 409 246 399Q246 387 242 377T225 351T178 311T94 259L79 251Q72 256 68 261T62 268L61 270L70 277Q131 318 133 343ZM822 526Q778 531 719 564T628 597Q611 597 579 574Q543 543 513 506L505 495L506 473Q506 469 506 461T507 449Q507 348 467 271L462 261L404 218L348 174Q349 173 356 173Q384 169 450 144L546 105Q665 56 708 56Q737 56 746 72T756 118Q756 129 755 135L741 219Q725 314 725 334V344Q725 416 736 431Q748 450 815 510L832 526H822\",120194:\"133 317T133 338T80 413T26 496Q26 532 83 591Q100 608 111 616T151 644T219 672T304 682Q381 682 434 646T506 564L510 557Q513 557 534 573L677 665L707 683L790 561L803 572Q933 682 1001 682Q1037 682 1098 650T1193 616Q1208 616 1222 619L1235 622Q1239 622 1239 616Q1239 611 1240 609Q1240 608 1206 577T1138 503T1104 430Q1104 409 1123 330T1142 208Q1142 183 1136 147Q1127 118 1117 106Q1114 103 1031 48T935 -14Q930 -18 908 -22T862 -27Q826 -27 759 -6T647 26Q597 38 578 38Q573 38 561 33T533 20T505 4T480 -10L469 -16L452 -26L439 -28Q423 -30 411 -30Q358 -30 279 7T169 45Q125 45 58 -5L47 -14L41 -4L35 8Q35 11 56 29T113 75T181 125L200 139H217Q279 143 320 180T377 270T394 393Q394 453 378 498T334 568T277 605T213 617Q177 617 155 607Q140 600 130 587T119 560Q119 545 137 522T177 479T217 434T236 393Q236 324 98 251L89 246L76 253L63 261Q91 275 112 296ZM1088 526Q1066 526 1004 556T909 586Q863 586 816 539L802 526L804 514Q814 461 814 411Q814 319 781 238Q772 214 760 198T730 165T702 136L715 133Q759 122 848 90T973 57Q1003 57 1017 80Q1022 93 1022 116Q1022 152 1003 241T983 377V391Q983 405 985 409T1002 429Q1019 450 1045 475T1090 514L1107 528Q1104 527 1102 527T1096 527T1088 526ZM699 358Q699 391 696 419T688 467T675 503T660 530T642 550T626 563T608 574T593 582Q581 575 559 554T524 512Q523 510 523 477Q523 315 444 218L435 207L368 169Q301 132 301 131Q307 128 315 125L377 99Q476 57 515 57Q534 57 608 94L627 102L636 111Q699 187 699 358\",120195:\"273 679Q354 674 408 633T477 525L484 533Q496 548 524 574T571 615Q594 633 625 649T675 673T699 681Q724 632 747 607Q754 601 756 599T765 594T777 591T794 590Q818 590 834 594V585L835 577L704 513L693 518Q657 534 631 560T597 599Q596 601 581 584Q495 490 489 379V366H562L681 369Q682 369 679 366T668 355T651 341L620 314H485V295Q490 190 543 125T686 60Q720 60 789 88L801 93V89Q798 83 798 66Q781 59 685 -10L665 -25L634 -30Q596 -35 594 -35Q570 -35 536 -23T477 19Q461 37 445 67T418 118L409 138Q401 131 388 120T340 79T273 28T206 -12T151 -31Q129 -31 90 -12T32 22L113 101Q114 101 120 96T136 84T160 69T189 56T221 51Q256 51 305 90Q376 149 376 301V315H293Q276 315 251 315T210 314T190 313L168 312Q168 313 200 340L231 368L238 367Q275 367 311 366H378V387Q376 470 355 512T291 572Q274 579 252 579Q223 579 197 568T156 544T131 519T117 508Q112 512 108 518L99 527L117 545Q177 604 255 665L273 679\",120196:\"34 496Q34 518 53 549T107 610T195 661T310 682Q357 682 398 663T460 611Q467 600 475 583T489 554T495 542Q495 544 531 570T617 629T700 676L724 688Q742 670 756 657T784 635T806 621T830 606T856 592Q878 416 878 340Q878 154 805 -3L798 -20L779 -40Q706 -113 613 -163T421 -214Q359 -214 317 -196T256 -160L306 -63L313 -64L320 -66L326 -79Q337 -104 349 -120T392 -151T470 -166Q576 -166 644 -101Q750 7 750 292Q750 426 721 495T617 565H611Q563 565 513 509L506 501L508 493Q508 490 509 475T510 445Q510 319 458 236L451 225L436 216Q406 198 365 169T318 134L332 127Q336 126 397 103T489 80H493Q527 80 593 129L604 137L607 127Q610 119 610 116Q610 114 592 95T543 46T484 -4Q450 -27 446 -27Q441 -27 402 -18Q365 -9 290 20T188 50Q135 50 64 -7L52 -17L43 -7L34 2L51 19Q118 87 177 132L192 143H215Q259 145 289 155T335 184T355 214T366 245Q382 306 382 388Q382 426 381 436Q368 520 318 570T214 621Q184 621 165 608T142 583T137 562Q137 541 163 508L201 469Q245 425 251 408Q253 403 253 398Q253 383 240 366T212 335T161 295Q128 271 99 253L89 247L77 256L65 266L76 273Q125 301 134 329Q136 334 136 342Q136 357 124 372T88 410T49 455Q34 479 34 496\",120197:\"278 601Q242 601 212 591T167 570T121 533Q114 528 111 525L93 550Q223 661 244 667Q299 677 356 677Q415 677 456 666T515 634T541 596T549 555Q549 513 529 478T480 421T424 388T377 372Q365 370 365 367Q365 365 389 365T450 358T523 337T588 282T623 183Q624 177 624 161Q624 20 524 -60Q415 -148 285 -148Q242 -148 213 -139Q181 -131 159 -109Q136 -87 127 -56T114 6T104 49Q94 69 57 69Q38 69 13 58L1 53Q1 55 0 59T-3 68T-4 76Q78 130 138 142Q150 144 162 144Q213 144 227 120T242 31Q242 -30 263 -66T345 -102Q397 -102 444 -52T491 107Q491 172 471 211T428 265Q392 288 306 288Q269 288 233 284L218 282Q208 289 208 291L229 324L251 359Q250 360 248 360Q239 360 248 371L256 381H273Q344 385 378 409T413 495Q413 537 384 569T278 601\",120198:\"80 129V151Q80 241 99 363Q99 367 111 372T172 401T285 465L297 472Q340 455 405 443L423 440L455 453Q486 467 489 467L497 461L494 451Q480 390 480 292V283Q480 207 483 155L484 143L535 80L558 90L582 99Q586 95 586 83Q586 81 513 25L443 -29Q410 16 386 40L371 55V61Q371 63 371 67T370 74V80L278 25Q186 -29 184 -31Q182 -32 160 -12T112 35T80 75V129ZM359 366Q334 366 300 371T243 382L221 388Q218 388 212 375T200 323T194 228Q194 191 197 152L198 139L217 120Q245 92 269 74L279 66L304 78Q338 95 349 100L369 110V152Q368 164 368 210T367 275Q367 358 366 361V366H359\",120199:\"99 398Q99 610 86 662Q86 665 95 669T106 674L108 669Q109 664 112 654T119 635Q122 626 125 616T130 601L131 596Q214 649 273 678Q295 690 298 690Q299 690 304 688T313 682L317 679Q275 653 240 612Q210 569 210 469V459Q210 450 210 432T211 406L212 378L285 425Q301 435 321 447T350 466L360 472Q360 473 361 473T368 471T401 456T465 429L501 414V408Q504 386 504 309Q504 255 500 203T491 125T485 97Q485 95 445 74T343 23T237 -24L214 -32Q197 -22 165 3T109 49T87 73Q99 169 99 398ZM386 251Q386 320 380 347V350L305 374L282 382L214 348L213 274Q213 184 214 165V131L230 119Q288 76 349 54Q386 137 386 251\",120200:\"227 393Q215 393 210 351T205 269Q205 161 213 153Q220 145 244 125T290 88L312 72L365 92Q414 113 418 113V93L365 60Q255 -9 221 -26L211 -18Q158 21 91 88L90 107Q87 167 87 225Q87 267 90 302T96 351T100 366L295 473L311 470Q340 464 368 454T410 437T424 429L347 334L342 333H337L325 342Q299 363 271 378T228 393H227\",120201:\"88 117Q88 177 91 231T97 310T102 341Q102 343 118 357T168 397T239 447L257 459L268 454L278 449Q242 416 238 412L219 394Q219 391 216 378T211 349T206 307T203 249Q203 211 206 166L208 148Q224 132 261 108T333 70Q341 66 342 67T350 79Q393 157 393 302Q393 368 388 406V411L371 424Q199 558 101 558Q69 558 28 545L18 542L8 549L-1 557L24 569Q61 587 147 621L177 632Q179 631 194 627T216 621T240 613T269 602T302 589T340 571T382 549T431 522T484 488Q504 475 504 472Q511 449 511 365Q511 248 474 129L468 108L451 96Q427 77 347 28T254 -28Q235 -20 174 21T89 86L88 117\",120202:\"309 69Q391 98 416 108Q418 106 422 100T425 92Q419 86 326 30T229 -27Q228 -27 207 -13T154 27T97 76L85 87L84 106Q81 152 81 194Q81 295 93 359L95 369L286 471L313 449Q376 397 414 372L428 362Q428 360 375 318L188 181V170Q188 156 189 153V148L203 138Q228 119 266 94T309 69ZM209 389Q208 388 204 366T194 307T187 244Q187 225 188 225T201 233L245 261Q283 284 291 291Q324 313 324 316L296 334Q280 343 259 357T224 380L210 390Q209 390 209 389\",120203:\"128 400Q127 401 121 422T108 478T99 540V555L111 569Q135 597 165 626T214 671T235 687L249 678Q263 668 282 659T315 650Q335 650 362 666L372 654L286 569H271Q205 576 173 586V583Q173 558 208 492T252 401Q253 399 310 399T367 398L332 355H254V311Q251 160 235 16Q230 -28 226 -36Q225 -38 221 -45Q171 -140 121 -211L113 -222H104Q94 -222 94 -220Q94 -215 105 -187L121 -145Q139 -80 139 35V93Q139 222 135 314L134 354Q134 355 84 355H35L84 399H106Q128 399 128 400\",120204:\"92 71Q92 74 91 88T88 128T86 183Q86 230 91 275T102 342T109 366Q115 372 207 422T305 472Q407 426 431 426Q435 426 476 445L519 465L525 463L532 461Q497 392 497 268Q496 255 496 233Q496 179 516 92T539 -10L541 -22L526 -38Q441 -126 355 -194L339 -206L327 -207Q324 -207 319 -207T310 -208Q242 -208 171 -179T73 -131L56 -141Q40 -150 38 -150Q17 -140 17 -137Q17 -136 18 -136T98 -79L176 -23Q174 -21 134 24T92 71ZM226 393Q224 393 221 372T214 312T210 235Q210 182 214 144L215 132L230 118Q281 70 301 66Q304 66 331 80T373 105L384 112L383 165Q383 224 387 309Q387 314 387 319T387 329T388 336T388 341V343Q388 344 381 344T339 354T249 384Q246 385 243 386T236 389T231 391T228 392L226 393ZM414 -80Q414 -64 411 -43T403 -1T394 37T386 66T382 79Q381 79 286 15T189 -52Q312 -125 365 -125Q397 -125 405 -115T414 -80\",120205:\"95 661Q95 662 103 667T113 672L126 634L137 596L147 602Q235 656 275 677L292 687L303 680Q305 679 307 677T312 674L313 672L310 670Q307 669 301 667T289 660T274 649T259 634Q250 622 244 611T233 585T226 560T222 528T221 497T220 456T219 413V377L232 384Q244 391 271 409T339 455L362 471L383 461Q425 440 491 415L504 410V406Q507 399 507 269Q507 76 486 -21Q485 -30 483 -33T461 -57Q382 -139 299 -207L281 -197L263 -186L266 -185Q268 -184 280 -177T312 -155Q344 -130 353 -116Q394 -59 394 117Q394 162 391 216T386 301T382 335Q382 338 365 346T323 364T281 376L250 362Q220 347 219 347Q213 336 213 232Q213 177 217 144L218 128L224 119Q244 92 263 71L272 60Q206 21 157 -24Q156 -24 151 -16T132 11T98 52L89 62L91 103Q104 289 104 436Q104 471 103 506T101 568T99 616T96 649L95 661\",120206:\"73 613L164 686L184 666Q200 650 214 637T235 620T242 614T203 577T162 540Q158 540 122 570T73 613ZM92 58Q92 63 94 83T98 142T101 234Q101 318 97 358V366L59 387L40 379L21 371Q20 371 12 376T3 382L38 406Q78 431 125 466L138 477Q149 468 186 444L219 422V389Q215 324 215 247Q215 136 222 123Q226 113 238 98T258 83Q263 83 292 94L322 104Q322 103 324 97T327 89Q327 88 317 82T272 52T190 -7Q166 -25 164 -25L112 35Q92 55 92 58\",120207:\"74 611L155 682Q172 666 186 655T208 636L235 614Q227 606 191 574L154 540L135 556Q101 582 84 601L74 611ZM10 377L144 477Q145 476 184 453T229 428L233 425V416Q238 346 238 252Q238 93 215 -16L213 -30L185 -57Q29 -203 19 -203Q17 -203 -19 -189L-9 -183Q52 -146 78 -116T114 -37Q120 31 120 192V237Q120 327 113 351T72 380L53 372Q34 362 32 364L10 377\",120208:\"106 72Q110 105 111 193T114 294V308H74L34 309L83 346H115V430Q114 591 106 652Q105 662 107 665T114 668T123 672Q125 672 139 635L152 597L154 598Q156 600 160 602T167 607Q193 625 226 644T279 672T302 682L312 676L321 670L312 665Q281 649 263 626T241 587T233 547Q232 541 231 530T230 510T230 501Q231 501 265 522T334 564T369 583L380 570Q428 509 428 481Q428 475 427 470T423 459T416 448T404 434T389 418T369 397T344 371L321 347L365 346H409L372 308H227V294Q227 272 230 208T234 138Q234 136 256 119T302 84L324 68L372 88Q421 108 422 108T432 90L421 83Q373 53 270 -5L234 -25L204 -1Q172 25 124 60L106 72ZM336 434Q336 452 327 472T308 503T297 514Q296 514 290 510T275 499T264 490Q230 458 230 358V346H247Q268 346 276 350T302 372Q328 398 335 423Q335 424 335 428T336 434\",120209:\"111 275Q111 406 108 518T104 650V657Q105 657 109 660T117 665T122 666L133 629L144 594L161 606Q218 642 272 670L294 681Q295 681 300 677T306 672L302 669Q298 666 292 662T278 651T263 637T251 621Q232 587 227 530T222 343Q222 226 230 125L231 112L244 98L258 83Q271 87 285 92L312 102V84Q297 72 231 24T163 -23L100 55Q110 141 111 275\",120210:\"115 203Q115 257 114 291T112 338T111 355Q111 357 93 370L75 384L54 375Q32 366 31 365Q27 365 16 378Q25 383 89 430L152 476Q175 453 228 420Q229 420 229 418T229 410T227 394L225 369Q279 400 315 425T363 461T376 471Q480 424 514 416V412Q514 411 514 404T513 392L511 376L520 382Q529 387 548 399T584 422Q599 432 618 444T648 463L657 469H658Q661 469 681 461T735 440T796 420Q803 418 803 416Q801 414 798 390T791 325T788 247Q788 220 790 172T794 123Q799 115 814 97T835 78H838Q841 78 867 89L895 101Q896 101 896 100T897 92T900 78L873 62Q810 23 761 -12L736 -30Q735 -30 729 -22T707 7T671 48L661 59Q674 93 674 207V219Q674 341 670 344Q655 353 591 372L576 376L544 364Q511 351 510 351Q507 349 507 224V132L535 95Q541 87 548 78T560 63L563 58Q563 57 504 15T444 -28L385 53L387 67Q396 114 396 206Q396 289 393 334Q393 346 390 348Q369 358 306 373Q301 373 265 361L228 349V335Q227 322 227 284Q227 206 231 157Q231 151 231 144T232 133V129Q232 125 259 90Q286 56 286 53Q287 53 284 51T273 43T258 31L173 -31L166 -20Q160 -11 145 7T119 38T108 59Q108 62 110 81T113 133T115 203\",120211:\"608 88Q572 65 535 37T477 -8T455 -25Q432 7 389 53L375 68L378 82Q386 160 386 195V221Q386 284 385 307L384 344Q352 359 306 373L286 379L213 353V273Q214 229 214 161V129L275 62L163 -28L150 -14Q136 0 121 16T91 44Q86 48 86 50Q95 83 96 148Q96 224 89 340L88 366L79 374Q69 384 67 385L64 388L55 383Q52 382 44 378T33 373L21 367L13 374Q5 379 5 381Q5 384 69 428L133 473Q135 473 147 464T179 443T215 424L214 400V376Q271 404 342 457L363 472Q363 473 364 473Q366 473 375 469T418 449T502 414L512 411V407Q502 330 502 217V197V132L523 109Q527 104 533 97T543 87T547 83L550 80L578 92Q603 103 604 103Q606 103 608 88\",120212:\"107 102Q107 178 112 242T123 334T129 362Q129 363 140 368T199 400T315 469L336 482L346 476Q409 439 498 414L514 410L515 389Q515 208 502 141Q494 101 491 94Q490 89 478 81Q430 51 375 23T288 -20T254 -34Q250 -34 200 -1T119 56L108 65L107 76V102ZM389 355Q367 358 346 363T309 372T282 381T264 388L257 390H256Q254 390 249 381T238 348T227 293Q226 280 226 237Q226 183 231 146L232 131L244 122Q285 91 323 74T374 57H377L380 68Q405 154 405 267Q405 315 401 349V354L389 355\",120213:\"66 435Q66 445 117 501T173 557Q174 557 183 555T193 551Q174 526 174 509Q174 496 190 472T233 428V386L377 482L399 471Q450 445 509 425Q519 421 519 420L518 419Q518 418 518 416T517 410Q517 405 518 381T519 335Q519 222 501 137Q492 84 489 84L473 75Q457 66 423 44T354 -6L338 -19L329 -13Q320 -8 313 -4T297 4T284 10T270 14T258 17T245 20T233 22V12L241 -161L214 -172Q187 -184 160 -195T131 -207Q127 -207 112 -202L113 -188Q113 -182 115 -77T118 31Q118 32 109 32Q63 27 23 0L10 -9Q5 -4 -1 8Q1 13 52 57T114 101H115L117 123Q117 141 117 230V359L110 367Q85 394 71 421Q66 433 66 435ZM384 83Q386 83 389 110T396 180T400 254Q400 294 395 339L394 349L379 355Q308 383 294 383Q290 383 263 372L234 360L233 245V130Q270 125 305 113T361 92T384 83\",120214:\"362 -196Q375 -92 375 47V78L282 24Q189 -29 188 -30Q187 -30 139 21T90 75Q87 84 87 158Q88 206 94 259T107 342L113 372L308 478L322 473Q374 452 421 444L433 442L503 485Q515 479 515 477Q485 378 485 56Q485 -100 494 -164V-171L381 -211L371 -207L362 -202V-196ZM280 72Q301 77 323 86T358 101T372 110Q372 268 377 346L378 358H374Q368 360 358 360T323 365T257 380L234 386Q231 386 229 379Q215 353 211 310T207 180Q207 152 208 150Q210 142 235 114T280 72\",120215:\"23 367Q21 370 18 374T14 380L13 382L151 472L236 411L238 381L290 426Q298 432 307 439T322 452T333 461T342 467L344 469Q382 410 404 399Q410 397 416 397Q423 397 432 399T446 403L451 405Q453 405 453 399V393Q430 374 404 356T364 328T350 318L349 317Q321 320 276 356Q257 371 256 371Q253 374 249 366T242 351Q232 321 232 236Q232 214 232 205T232 182T233 162T235 148T238 137T242 129T249 120T257 114T268 105T281 95Q313 70 314 70L358 85Q377 92 389 96T402 100V90L403 80L229 -26L221 -18Q195 6 166 29T121 63T105 76T106 82T110 97T114 121T117 158T119 208Q119 269 114 329L113 341L103 350Q90 362 67 380L45 374L23 367\",120216:\"189 331Q190 304 196 282T207 252T214 244Q239 244 348 292L371 302L382 297Q398 290 415 279T433 265Q442 238 442 166Q442 103 423 45Q416 42 380 29T310 3T244 -26L227 -34Q139 40 73 40Q61 40 48 37T24 30T6 22T-8 14L-13 11Q-14 11 -18 18T-23 26T38 75T102 125Q107 128 146 131H153Q192 131 296 56Q318 40 318 43Q323 48 323 114Q323 157 321 177L319 194Q308 208 291 216T261 225Q239 225 160 185L123 167Q85 205 79 227Q78 230 78 304V377L171 428Q264 479 265 478Q268 478 287 465T334 440T384 427Q423 427 475 463L478 453Q481 446 481 442Q481 439 410 391L339 342H331Q309 345 277 361T222 391T198 406T195 399T191 372T189 331\",120217:\"328 69Q401 102 403 102Q404 102 405 94T406 84Q406 83 318 28L230 -27Q223 -21 206 -5T171 25T132 54L124 60V71Q129 154 129 297V359H43L44 363Q44 365 44 367L45 369L48 372Q51 374 57 378T68 387L90 405H129V553L285 648Q304 641 306 640L260 598V592Q259 589 255 505T249 413V405H353V402Q353 399 328 379L303 360H245V319Q245 150 253 125Q257 115 276 101T311 78T328 69\",120218:\"444 -31Q444 -29 384 66Q382 66 364 58T309 30T231 -17Q214 -29 212 -29L197 -20Q172 -4 140 11T88 34L68 42Q68 43 73 49T85 67T100 98T113 149T118 221Q118 272 105 332L100 356L58 383L23 365L9 379L76 425Q141 472 144 472Q144 471 183 443L221 414V404Q224 365 224 275V253Q224 159 196 113Q191 104 193 104Q203 104 285 72L308 62L374 89L375 106Q375 266 373 340Q373 364 371 396V424L430 445L491 467Q493 467 499 463T505 457Q505 456 503 442Q488 335 488 187V158L529 81L534 80Q541 80 568 90L598 101Q605 94 602 87L524 27Q445 -32 444 -31\",120219:\"95 67Q104 80 104 193Q104 261 100 321L98 355L91 363Q56 402 56 421Q56 441 82 472T132 524T159 546Q174 542 175 542Q159 520 159 501Q159 481 205 432L221 415L220 401Q219 394 219 387L288 429Q309 441 325 451T347 465T358 472T365 476L504 415V409Q504 408 505 374T507 318Q507 155 474 91L469 80L343 26Q314 14 281 0T232 -20L216 -27L202 -15Q192 -5 152 28Q141 35 126 45T103 60T95 67ZM386 349Q302 389 287 389Q271 383 253 375L220 361V136Q226 120 256 100T312 68T342 56Q355 56 360 68Q389 134 389 258Q389 310 386 341V349\",120220:\"90 58T90 59T92 64T97 78T102 105T107 150T109 218Q109 290 103 350V356L83 377Q55 407 55 425Q55 445 138 528Q158 549 162 549L164 548Q165 548 167 548T170 547L175 546L172 540Q168 533 165 523T161 502Q161 479 216 430L229 419V382Q232 382 366 471Q407 445 500 408L511 404V387L512 370L595 420Q678 469 679 469L693 462Q756 431 795 417L815 409L814 380Q812 187 782 96Q774 71 766 62T744 48T684 25T577 -23L557 -32L546 -26Q536 -19 519 -10T481 10T436 31T393 47Q384 50 380 50Q380 52 381 58T384 77T387 104Q391 174 391 256V292L390 333L377 340Q350 357 304 373L294 376L227 355V348Q224 322 224 243Q228 117 232 112L235 108Q238 103 245 95T257 80L281 50Q281 49 227 10T172 -29L159 -13Q133 19 116 36T94 56ZM652 64Q658 64 667 84T685 162T697 303V336L686 341Q653 356 619 367L591 376Q590 376 553 361T514 344T512 324T510 275T508 221Q508 167 510 152T521 126Q537 112 590 88T652 64\",120221:\"8 -90Q8 -68 13 -63Q13 -56 53 -8T120 63L128 71L129 85Q133 120 134 182Q134 308 131 331T106 365Q100 367 97 369L75 381L35 365L20 377Q20 378 47 397T110 440T161 471L253 413V396Q253 378 254 378L309 422Q364 466 365 466Q365 467 366 466T370 461T376 454Q403 419 426 396L441 380L438 377Q438 376 433 372T420 359T404 344L372 314Q351 320 338 327T310 344T277 364Q261 364 252 316Q251 306 251 235Q251 136 255 129Q257 127 258 124T268 113T298 92Q334 68 335 68Q340 70 349 73T377 84T408 95T421 99Q422 99 422 90L423 82L334 26Q246 -28 243 -28L200 8Q156 43 148 43Q144 43 130 36T99 9T83 -36Q83 -67 121 -89T198 -118L237 -124V-129L238 -133L193 -160Q183 -166 171 -173T152 -184L146 -188Q140 -187 131 -185T98 -173T56 -154T23 -127T8 -90\",120222:\"280 53Q272 47 246 27T199 -10T176 -27L167 -18Q137 17 107 44L90 60L93 71Q108 130 109 290V331Q109 339 109 344T108 353T107 359T105 364T102 369T97 374T91 381Q60 412 60 432Q60 448 86 479T138 534L164 557Q168 553 180 553Q163 532 163 511Q165 491 186 468Q206 443 231 423V404L232 385L371 477L389 468Q439 441 498 418L512 412V386Q512 360 507 190T500 14Q488 -26 445 -67Q401 -111 355 -148T282 -203T249 -221Q247 -220 230 -210T213 -199T229 -191T269 -172T306 -151Q361 -120 379 14Q391 92 391 182Q391 218 386 305Q384 339 380 341Q363 353 330 366T288 379Q282 379 258 368L230 356V181V141Q230 127 232 120T236 108T251 89T275 59L280 53\",120223:\"153 371Q141 371 126 365T100 354T78 340L65 331L57 338L50 346L62 356Q133 419 222 471Q274 453 306 422T338 366Q338 356 329 346T283 301L243 264L262 257Q298 246 361 214Q378 154 378 73Q378 33 371 -9T356 -74T345 -104Q340 -106 267 -160L191 -214H177Q60 -214 13 -150Q-7 -122 -7 -115Q-7 -112 19 -77T106 25T241 149Q241 152 227 158T181 173T109 185V190L108 194L158 229Q212 267 223 278T234 306Q234 329 208 350T153 371ZM258 1Q258 42 257 68T254 105T252 118Q235 105 210 85T144 22T102 -45Q102 -79 146 -106T234 -133H238Q248 -128 254 -80Q258 -58 258 1\",120224:\"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606\",120225:\"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190\",120226:\"59 347Q59 440 100 521T218 654T392 705Q473 705 550 680Q577 670 577 667Q576 666 572 642T564 595T559 571Q515 601 479 613T392 626Q300 626 232 549T164 347Q164 231 229 150T397 68Q453 68 489 80T568 120L581 129L582 110Q584 91 585 71T587 46Q580 40 566 31T502 5T396 -11Q296 -11 218 41T99 174T59 347\",120227:\"88 0V694H237H258H316Q383 694 425 686T511 648Q578 604 622 525T666 343Q666 190 564 86Q494 18 400 3Q387 1 237 0H88ZM565 341Q565 409 546 463T495 550T429 600T359 621Q348 623 267 623H189V71H267Q272 71 286 71T310 70Q461 70 527 184Q565 251 565 341\",120228:\"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86\",120229:\"86 0V691H526V611H358L190 612V384H485V308H190V0H86\",120230:\"59 346Q59 499 157 601T384 704Q436 704 466 700T541 679Q551 674 560 670T575 664T583 660T588 658T590 656Q590 652 582 605T573 557L564 564Q489 626 392 626Q301 626 233 549T164 347T233 145T392 68Q441 68 506 84V223H388V299H599V38L588 33Q494 -11 393 -11Q296 -11 219 40T100 172T59 346\",120231:\"86 0V694H190V399H517V694H621V0H517V323H190V0H86\",120232:\"87 0V694H191V0H87\",120233:\"181 53Q200 53 215 56T241 66T259 79T272 95T280 109T285 122L287 129V694H388V415V229Q388 135 385 112T369 63Q364 51 355 39T328 12T280 -12T212 -22Q172 -22 130 -12T66 8T43 20L46 42Q50 65 54 88L58 110Q58 111 65 104Q107 53 181 53\",120234:\"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88\",120235:\"87 0V694H191V79L297 80H451L499 81V0H87\",120236:\"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92\",120237:\"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88\",120238:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147\",120239:\"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485\",120240:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 284 665 231T629 143T587 85T551 48L536 35L648 -120L652 -125H531L452 -8L440 -12Q407 -22 369 -22Q239 -22 147 85T55 345ZM579 345Q579 473 517 555T369 637Q279 637 218 554T156 345Q156 223 215 141T368 58Q376 58 382 58T392 58T397 59T401 60T403 61H404Q404 63 360 128T315 194H421L453 150Q485 105 486 105Q490 108 496 113T517 138T545 182T567 247T579 334V345\",120241:\"88 0V694H227H259H302Q365 694 399 689T474 663Q528 637 558 595T589 504Q589 482 584 462T569 426T547 396T522 372T495 353T470 338T449 328T434 322L429 320L440 300Q452 280 477 238T523 160L617 1L565 0Q513 0 512 1Q512 2 424 156L337 309H189V0H88ZM492 504Q492 600 367 620Q354 622 271 623H189V385H271Q363 386 388 392Q432 402 462 430T492 504\",120242:\"55 514Q55 589 115 652T283 716Q315 716 345 711T396 699T432 685T457 672T467 667Q467 666 459 618T449 568Q383 634 282 634Q214 634 182 600T150 525Q150 507 155 492T172 465T194 446T222 432T247 423T272 416T289 412Q353 396 378 384Q432 358 466 307T500 194Q500 110 438 44T272 -22Q215 -22 159 -5T73 28T44 50Q45 51 49 75T57 122T62 146L65 143Q68 140 74 136T88 125T107 111T131 98T160 85T194 74T232 66T274 63H286Q327 63 366 96T406 182Q406 245 352 280Q329 296 265 310T173 339Q124 363 90 409T55 514\",120243:\"36 608V688H644V608H518L392 609V0H288V609L162 608H36\",120244:\"87 450V694H191V449Q192 203 193 194Q200 148 220 117T266 72T311 54T347 49Q404 49 446 84T501 178Q505 195 505 218T507 449V694H600V450Q600 414 600 356Q599 198 595 181Q594 178 594 177Q575 89 505 34T345 -22Q258 -22 184 34T89 196Q88 205 87 450\",120245:\"14 692Q14 694 68 694H122L146 633Q325 165 339 90Q340 87 341 87Q341 124 530 619L558 694H605Q652 694 652 692Q650 690 523 354T390 10L387 0H279L276 10Q271 18 144 354T14 692\",120246:\"115 694Q115 693 156 550T233 266T270 90L271 85Q272 86 272 92Q272 153 405 616L427 694H524L553 590Q672 174 681 95L682 84L684 95Q689 138 728 287T803 563T841 692Q841 694 885 694T929 693Q929 691 829 346L730 0H679L628 1L606 75Q478 524 470 600L469 611L467 600Q458 518 338 101L310 0H213L114 346Q14 691 14 693Q14 694 64 694H115\",120247:\"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14\",120248:\"4 693L64 694H125L174 621Q335 378 340 364L341 362Q361 398 395 450L558 694H663L383 277V0H282V278L143 485Q112 531 75 586T21 668L4 693\",120249:\"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69\",120250:\"236 387Q209 387 184 382T141 370T111 355T91 342T83 337L82 355Q80 373 79 393T77 417Q77 419 81 421Q86 423 91 426Q155 460 227 460H238Q319 460 368 400Q393 371 400 341T408 252Q408 240 408 207T407 152V0H317V39L306 32Q244 -10 159 -10H152Q109 -10 77 22Q38 61 38 126Q38 142 39 146Q55 199 130 223T295 252H314V277Q314 305 313 310Q308 342 287 364T236 387ZM303 186Q124 180 124 126Q124 105 144 86T208 66Q284 66 309 124Q314 137 314 166V186H303\",120251:\"303 -11Q280 -11 259 -6T222 6T194 21T176 33T168 38V0H75V694H165V550L166 405Q247 455 336 455Q397 455 439 389T482 226Q482 115 428 52T303 -11ZM390 221Q390 283 361 331T265 379Q214 379 177 342L168 334V118Q203 66 258 66Q316 66 353 106T390 221\",120252:\"34 223Q34 327 99 393T245 460Q290 460 301 459Q328 455 354 445T395 427T410 415L396 338L386 344Q377 349 362 357T335 370Q305 381 258 381H252Q182 381 146 315Q126 275 126 224Q126 158 159 113T255 68Q329 68 394 106L408 114L410 93Q411 72 412 52L414 32Q407 27 394 20T338 2T252 -10Q156 -10 95 58T34 223\",120253:\"33 224Q33 321 81 388T197 455Q277 455 342 414L351 408V694H441V0H348V44L338 37Q278 -10 198 -10Q177 -10 168 -8Q99 11 62 90Q33 148 33 224ZM348 337Q307 378 263 378Q260 378 256 378T251 379Q239 379 223 374T182 355T142 305T126 220Q126 90 225 67Q231 66 250 66H255Q306 66 342 115L348 124V337\",120254:\"28 226Q28 329 91 395T235 461Q258 461 279 456T325 436T368 397T399 332T415 238V219H113V215Q113 163 151 114T248 65Q273 65 298 70T341 82T373 96T396 108L403 113Q403 106 406 76T409 38Q409 34 408 33T393 24Q325 -10 252 -10Q155 -10 92 59T28 226ZM340 289L338 297Q335 305 333 310T327 326T317 343T304 358T286 372T263 381T233 385Q212 385 193 376T162 353T140 325T127 301T123 289H340\",120255:\"262 705H267Q300 705 347 694V612L336 616Q303 628 274 628H266Q224 628 199 605Q187 590 184 579T181 541V507V444H287V371H184V0H94V371H27V444H94V492Q94 544 95 550Q102 617 151 661T262 705\",120256:\"55 286Q55 357 105 406T224 455Q280 455 323 421L322 423L318 427Q318 428 339 434T396 448T465 455H471L478 416L485 377Q484 377 474 379T445 383T401 385Q397 385 391 385T381 384L362 383L357 387Q358 386 364 375T375 354T384 325T389 287Q389 217 340 168T221 119Q178 119 138 142Q133 145 131 143Q125 131 125 117Q125 82 155 72L227 71Q230 71 251 71T280 71T310 69T343 65T373 57T403 46T428 30T449 7Q471 -26 471 -62V-71Q471 -136 384 -178Q326 -206 250 -206Q159 -206 102 -172T30 -92Q28 -84 28 -68T31 -37T40 -12T52 7T64 21T75 31T82 38Q60 68 60 106Q60 145 80 180L86 189L80 199Q55 240 55 286ZM304 233T304 287T279 362T220 383Q189 383 165 361T140 287Q140 243 161 217T220 191Q253 191 278 212ZM250 -134Q298 -134 331 -122T375 -96T387 -69Q387 -21 306 -7Q288 -5 216 -5Q161 -5 153 -7Q146 -9 139 -13T122 -31T113 -66Q113 -75 113 -80T127 -97T166 -121Q203 -134 250 -134\",120257:\"163 395Q223 455 307 455Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V694H163V395\",120258:\"67 576V680H171V576H67ZM74 0V444H164V0H74\",120259:\"88 576V680H192V576H88ZM31 -126Q40 -126 48 -125T62 -122T73 -117T82 -111T89 -105T94 -99T98 -92L102 -86V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171T-51 -133T-41 -96L-38 -99Q-34 -102 -28 -106T-13 -115T7 -123T31 -126\",120260:\"76 0V694H163V257L340 444H449L286 272L292 263Q296 259 378 138T463 12L471 0H372L309 92Q294 114 277 139T250 179T237 198L228 211L160 139V0H76\",120261:\"74 0V694H164V0H74\",120262:\"160 392Q223 455 304 455Q359 455 386 436T430 383L437 391Q495 455 584 455Q694 455 715 354Q719 331 720 164V0H627V157Q626 315 625 320Q611 378 536 378H530Q501 378 481 358Q457 334 450 301T442 209Q442 198 442 172T443 129V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392\",120263:\"160 392Q214 446 283 454Q285 454 292 454T303 455H306Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392\",120264:\"28 222Q28 323 95 391T244 460Q275 460 281 459Q364 445 417 377T471 219Q471 124 408 57T250 -10Q158 -10 93 57T28 222ZM377 230Q377 277 364 310T328 358T287 379T248 385Q233 385 219 382T186 369T155 342T132 297T122 230Q122 146 159 108T250 69H253Q263 69 274 70T305 81T339 106T365 154T377 230\",120265:\"166 404Q194 424 241 439T337 455H341Q410 455 451 370Q483 307 483 222Q483 128 433 59T306 -10Q282 -10 260 -5T222 7T194 21T176 33T168 38V-194H75V444H165V424L166 404ZM390 222Q390 287 354 331T266 376T177 340L168 332V118Q200 66 257 66Q313 66 351 112T390 222\",120266:\"33 220Q33 325 87 389T206 454Q286 454 341 406L351 398V455H441V-194H348V41L338 35Q276 -8 198 -11Q171 -11 154 -5Q102 12 68 74T33 220ZM126 220Q126 160 161 113T251 65Q305 65 351 123V298L350 301Q349 304 347 308T342 319T336 331T327 343T315 355T300 365T283 373Q273 375 256 375Q208 375 167 332T126 220\",120267:\"171 389Q237 455 320 455H327V373H317Q262 369 220 336T167 248Q165 239 164 119V0H74V450H159V377L171 389\",120268:\"33 326Q33 376 60 408T117 450T175 460H190Q245 460 272 454T345 429Q345 428 338 388L331 349Q278 386 188 386H183Q119 386 119 336Q119 307 142 295T210 276T278 256Q360 213 360 130Q360 108 354 88T332 43T281 5T195 -10Q152 -10 111 1T49 22T28 35Q29 36 32 56T39 95T43 115T51 110T72 99T102 85T143 73T193 68Q274 68 274 123Q274 152 248 167Q234 178 187 186T115 207Q66 229 46 273Q33 298 33 326\",120269:\"333 27Q333 24 314 16T257 -1T184 -10H172Q146 -10 128 14T105 58T99 91Q95 113 95 251V371H18V444H98V571H182V444H316V371H182V253Q183 128 189 104Q199 68 234 68Q277 72 314 98Q315 93 323 61T333 27\",120270:\"353 39Q352 38 344 34T331 27T315 19T295 11T270 3T241 -3T207 -8T168 -10H162Q148 -10 137 -8T111 2T87 30T74 81Q73 89 73 268V444H166V268L167 92Q171 79 174 74T192 64T238 59Q317 59 344 116Q349 128 349 148T350 291V444H443V0H353V39\",120271:\"178 0Q15 441 14 442Q14 444 60 444Q107 444 107 442Q108 441 136 364T196 194T232 67Q233 98 280 234T356 442Q356 444 401 444T446 442L282 0H178\",120272:\"14 444H105L108 434Q192 160 200 74V65L201 75Q206 144 282 399L296 444H381L399 381Q480 112 480 69L481 70Q481 113 562 386L580 444H668L534 1L483 0H432L429 10Q343 294 338 367L337 377Q336 375 336 370Q336 340 313 250T269 88T245 11L242 0H195L148 1L14 444\",120273:\"187 229L6 444H107L227 294L344 444H393L442 443Q439 437 299 268L267 229L460 0H359L294 88Q280 107 262 131T236 166L227 177L100 0H0Q1 1 47 58T140 171T187 229\",120274:\"113 -204Q83 -204 63 -200L43 -197Q43 -196 40 -157T36 -117L48 -121Q79 -133 114 -133Q124 -133 130 -132T145 -121T163 -94Q169 -82 184 -42T200 1L188 29Q176 57 152 115T107 223T62 330T26 416L14 443Q14 444 61 444H109L122 411Q230 155 236 75L237 65V74Q245 161 348 424L356 444H401Q446 444 446 443L396 313Q345 183 293 49T236 -93Q191 -204 123 -204H113\",120275:\"42 370V444H400V395L156 76L279 77H402V0H28V51L273 371L157 370H42\",120276:\"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279\",120277:\"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194\",120278:\"423 -11Q339 -11 275 9T171 62T106 143T71 240T61 347Q61 450 93 527Q157 664 313 694Q357 704 416 704Q479 704 517 699T608 676Q634 667 635 660Q635 653 624 592L612 528L609 524Q604 521 601 521Q595 521 583 531T555 555T505 578T428 589H424Q298 589 250 494Q224 438 224 347Q224 292 233 251T265 175T329 122T432 104Q488 104 524 115T604 158Q607 160 610 162T615 165T619 168L621 170Q625 172 630 170T637 163Q638 160 642 109T647 54Q646 49 625 37T568 11T499 -7Q463 -11 423 -11\",120279:\"119 1Q98 5 92 28V667Q98 686 118 693H124Q131 693 142 693T168 694T200 694T237 694H296Q416 694 450 692T525 677Q732 617 732 342Q732 169 644 81Q593 32 528 16T372 0Q356 0 324 0T276 1H119ZM573 349Q573 387 571 413T559 473T532 527T482 567T403 591Q395 592 320 593H250V101H321Q418 102 456 114Q553 144 569 263Q573 303 573 349\",120280:\"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277\",120281:\"512 572Q451 572 356 573T258 575H253V400H370H431Q494 400 506 392T518 345Q518 307 507 299T437 291H370H253V161Q253 141 253 113T254 75Q254 23 245 12T195 0H170L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 327 691T538 689Q564 682 564 644V632V618Q564 582 538 573Q537 573 535 573T526 572T512 572\",120282:\"61 347Q61 405 70 454T105 550T171 631T276 685T426 705Q483 705 537 693T620 668T650 646Q650 645 649 637T645 612T639 578L627 514L624 510Q620 507 615 507T597 520T566 548T512 577T430 590Q223 590 223 347T431 104Q478 104 506 112Q508 112 508 164V215H471L434 216L428 222L427 268Q427 315 429 318Q432 323 444 323T544 324H652Q655 320 659 317V45L656 43Q654 39 624 27T536 2T424 -11Q366 -11 317 -2T219 33T137 97T82 200T61 347\",120283:\"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667\",120284:\"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667\",120285:\"236 -22Q190 -22 144 -11T72 12T46 29Q63 147 69 153Q80 164 92 146Q124 91 191 91Q222 91 242 102T267 134Q268 139 268 402Q268 663 270 669Q275 687 294 692Q298 694 347 694H367Q393 694 406 690T425 669Q427 663 427 399Q427 132 426 125Q421 87 404 58T366 15T318 -9T273 -20T236 -22\",120286:\"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667\",120287:\"92 667Q98 684 109 689T142 694H172H198Q244 694 251 669Q253 663 253 389V116L278 117Q410 119 490 119H495Q511 119 517 115T534 93V63V48Q534 9 508 2Q503 0 310 0L119 1Q99 7 92 28V667\",120288:\"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120289:\"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120290:\"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433\",120291:\"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467\",120292:\"450 -20Q444 -20 429 -21T396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715Q364 715 376 715T394 716Q732 716 732 340Q732 268 719 210T686 120T647 68T615 39T601 29T638 -22T676 -73Q679 -78 679 -83Q679 -98 661 -106H593Q526 -106 521 -104Q514 -103 507 -97T496 -84T477 -55L454 -19L450 -20ZM554 509Q516 622 391 622Q294 622 250 535Q220 475 220 345Q220 299 222 266T234 198T258 140T299 99T363 74Q378 71 393 71H395L381 92Q367 114 353 136T338 161Q336 165 336 170Q336 186 352 193L361 194Q370 194 384 194T412 194H452Q457 194 460 194T466 194T471 192T476 191T480 188T483 185T487 180T492 174T497 167T504 158L526 129Q532 127 552 175Q573 231 573 348Q573 455 554 509\",120293:\"654 24Q654 9 644 5T612 0H577L521 1Q509 5 503 13Q498 20 421 160L343 304H250V168Q250 147 250 118T251 78Q251 24 242 12T192 0H168L119 1Q99 7 92 28V667Q98 686 118 693H124Q131 693 141 693T165 694T195 694T229 694T280 694T332 695Q389 695 428 691T510 675T582 637T627 569Q641 532 641 493Q641 377 537 331L497 317L493 316L571 177Q653 28 654 24ZM487 472T487 492T485 525T476 553T450 577T404 591Q398 592 322 593H250V391H321Q327 391 353 391T385 392T412 395T438 401T457 412T474 430T483 456\",120294:\"61 503Q61 547 72 583T110 650T186 698T305 716Q405 716 496 671Q513 664 514 657Q514 656 513 648T509 623T503 589L491 525L488 521Q484 518 479 518H475L461 532Q430 565 395 581T305 598Q201 598 201 523Q201 480 240 462T345 431T443 394Q549 324 549 204Q549 160 538 123T502 51T427 -2T308 -22Q180 -22 69 41Q50 52 49 57Q49 58 50 66T54 91T60 125L72 189L75 193Q80 196 84 196Q87 196 104 182T145 149T212 117T304 102Q408 102 408 188Q408 215 396 234T362 263T319 278T267 290T219 302Q149 324 105 380T61 503\",120295:\"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687\",120296:\"92 667Q101 694 143 694H172H200Q242 694 251 671Q253 663 253 430Q254 189 255 185Q262 134 288 107T384 79Q498 79 516 168Q520 191 521 431Q521 663 523 671Q532 694 572 694H596H618Q639 694 648 692T665 679Q671 672 671 653Q672 632 672 555V432Q671 200 670 190Q652 79 581 29T383 -22Q137 -22 98 166Q92 195 92 303V667\",120297:\"27 667Q27 683 39 688T75 694H101Q155 694 159 692Q182 687 194 665Q202 652 283 419T374 142Q376 165 473 445Q552 664 553 666Q568 694 618 694H639H658Q681 694 693 689T705 667Q705 660 592 347Q481 32 477 28Q466 7 441 1H292Q266 7 255 28Q251 32 140 347Q27 660 27 667\",120298:\"994 694Q1012 683 1014 668Q1014 661 977 519T896 217T845 26Q831 0 783 0H747H711Q685 0 672 5T649 26Q644 36 583 272T517 548Q516 552 516 551Q503 479 437 227Q389 37 383 26Q367 0 323 0H288H254Q207 0 193 26Q191 32 108 346T24 665Q24 685 44 693Q47 694 98 694H115Q152 694 168 668Q174 657 235 417T297 144Q297 134 300 153Q307 204 362 421T427 668Q441 694 488 694H523Q586 694 597 688Q612 683 620 661T651 549Q664 496 673 462Q744 194 750 146V140Q767 223 800 354T857 576T883 668Q897 694 938 694H958H994\",120299:\"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52\",120300:\"635 694H668Q688 694 698 690T708 670Q708 664 704 658L446 278L445 152V27Q442 20 440 17T433 9T419 1L368 0H339Q316 0 305 5T288 26Q286 31 286 154V278L157 468Q135 500 101 550Q43 635 34 650T24 671Q24 686 39 693Q42 694 105 694H122H132Q163 694 180 689T214 666Q225 654 336 485Q373 425 373 420L374 418Q375 419 375 421Q378 432 418 493T496 609T536 667Q543 676 551 681T572 689T591 693T615 694T635 694\",120301:\"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584\",120302:\"255 394Q218 394 186 383T138 358T109 333T94 321H91Q88 321 86 322T83 325T80 331T79 339T78 349T77 362T75 377Q72 410 72 420Q72 423 72 425T73 429T74 431T77 433T80 435T85 437Q166 475 262 475Q360 475 413 440Q462 406 471 341Q472 332 472 181Q472 155 472 119T473 73Q473 20 462 10T398 0H380Q349 0 337 8T324 48V65Q298 30 257 10T172 -11Q109 -11 70 37T31 145Q31 276 307 289H321V309Q321 337 318 352T300 381T255 394ZM176 146Q176 116 190 97T231 77Q251 77 266 85Q322 110 322 185Q322 189 322 192T322 198L321 201V234L308 232Q176 220 176 146\",120303:\"54 667Q63 694 102 694H127H151Q190 694 199 671Q201 663 201 544L202 422L211 428Q270 468 355 468Q523 468 523 231Q523 -10 321 -10Q286 -10 261 -2T204 33Q197 11 187 6T142 0H126L81 1Q61 7 54 28V667ZM372 230Q372 317 355 349T280 382Q251 382 204 356V107Q235 76 274 76Q301 76 320 84T349 105T364 139T371 180T372 230\",120304:\"188 233Q188 199 190 177T200 131T225 95T271 83H281Q356 83 421 130Q433 138 434 139Q446 141 448 131Q449 128 453 84T457 36Q455 30 432 20T364 -1T273 -11Q37 -11 37 232Q37 456 244 474Q246 474 257 474T276 475Q349 475 400 455Q443 436 448 431L451 425Q451 419 443 377Q442 372 441 366T439 356T438 348T436 340T435 334T433 330T431 327T429 325T426 324Q420 324 406 336Q376 362 350 372T281 382Q254 382 236 373T208 352T194 317T189 278T188 233\",120305:\"225 -11Q192 -11 164 -3T104 29T55 102T37 227Q37 321 63 376Q111 469 223 469Q292 469 349 433L359 426V546Q359 564 359 589T358 623Q358 675 369 684T433 694H451Q497 694 505 669Q507 663 507 347T505 25Q500 9 487 5T450 0H432H413Q356 0 356 36V40Q298 -11 225 -11ZM356 359Q326 382 286 382Q239 382 215 358Q189 330 189 256V229V203V195Q189 102 231 86Q251 76 274 76Q318 76 356 114V359\",120306:\"30 231Q30 301 51 351T107 426T181 463T262 474H268Q293 474 312 472T366 459T422 427T462 363T480 260Q480 230 466 222T405 213Q395 213 364 213T311 214H173V211Q173 183 183 148T216 96Q244 76 287 76Q319 76 350 85T399 104T433 125T451 136Q463 138 465 128Q466 125 469 84T473 39Q471 29 423 13T330 -9Q321 -10 286 -10Q213 -10 161 11T81 68T42 144T30 231ZM353 292Q350 324 342 344T320 373T294 384T264 387Q191 387 175 286V282H353V292\",120307:\"67 458H78V502V509Q78 538 79 556T90 604T117 651T169 685T253 704Q254 704 258 704T265 705T275 705T287 704Q364 704 381 687V638V607Q381 591 378 585T366 579Q362 581 351 591T323 610T282 618Q238 618 226 587Q224 581 223 519V458H253Q288 458 298 453Q315 441 315 415Q315 399 312 390T299 377T282 372T259 371H255H226V201Q226 31 224 25Q215 0 174 0H150L106 1Q86 7 79 28L78 199V371H69Q29 371 29 412Q29 425 30 431T40 447T67 458\",120308:\"63 108Q63 142 83 176L76 184Q35 227 35 300Q35 469 243 469Q330 469 385 437L397 443Q451 469 508 469Q515 468 517 466T522 456T528 425Q534 392 534 386Q532 379 523 377Q520 377 509 381T477 390T431 398L425 399Q453 362 453 297Q453 268 445 242T417 189T351 146T242 130Q169 130 119 153Q117 141 117 136Q117 95 155 83Q161 81 252 81Q354 80 362 79Q437 71 475 48T526 -24Q532 -42 532 -65Q532 -116 489 -156T341 -204Q323 -206 274 -206H256Q39 -206 18 -84Q17 -79 17 -68Q17 15 82 42L76 53Q63 79 63 108ZM310 300Q310 359 298 377T238 396Q217 396 204 390T186 368T179 339T178 300Q178 245 189 224T244 203T299 224T310 300ZM414 -66Q414 -55 411 -47T401 -32T387 -21T368 -14T346 -10T322 -7T297 -6T271 -6T246 -6H193Q163 -6 154 -10T140 -30Q135 -45 135 -62Q135 -134 274 -134Q414 -134 414 -66\",120309:\"53 667Q62 694 101 694H126H148Q191 694 198 669Q200 663 200 526V390Q263 469 361 469Q390 469 412 465T456 449T491 413T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V667\",120310:\"72 574Q55 583 51 591T46 619V636L47 670L48 673Q50 676 52 678T56 684T63 690T73 694H81Q89 694 102 694T129 695H181Q193 687 196 685T203 676T207 661T208 634Q208 603 204 593T181 574H72ZM54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",120311:\"70 634V648Q70 686 96 693Q100 695 151 695H176Q201 695 213 691T230 670Q232 665 232 634V620Q232 582 206 575Q202 573 151 573H126Q101 573 89 577T72 598Q70 603 70 634ZM-41 -84Q-1 -105 28 -105Q67 -105 78 -85Q83 -77 83 -48T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -62 -124T-52 -89Q-49 -84 -41 -84\",120312:\"496 23Q496 9 487 5T457 0H427H398Q367 0 354 11Q352 12 288 99L226 183L191 150V90V54Q191 30 186 18T165 2Q160 0 124 0L90 1Q70 7 63 28V667Q72 694 108 694H128H146Q183 694 192 671Q194 663 194 496L195 325L254 383Q266 394 281 409T301 429T316 441T329 450T341 455T357 458T376 458H409H436Q461 458 470 454T480 437Q480 430 477 427T445 395Q417 368 396 347L319 271Q319 270 358 217T442 103T494 32Q496 30 496 23\",120313:\"54 667Q63 694 102 694H127H149Q192 694 199 669Q201 663 201 347T199 25Q190 0 149 0H125L81 1Q61 7 54 28V667\",120314:\"197 386Q256 468 366 468Q404 468 430 461T471 438T491 413T503 385Q563 469 666 469Q731 469 769 446T814 350Q815 343 815 185Q815 31 813 25Q808 9 796 5T758 0H737L692 1Q672 7 665 28L664 186V206V290Q664 349 655 365T610 381Q581 381 560 370T529 341T515 311T510 291Q509 286 509 157V82Q509 24 501 12T452 0H431L386 1Q366 7 359 28L358 186V206V290Q358 349 349 365T304 381Q275 381 254 370T223 341T209 311T204 291Q203 286 203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386\",120315:\"197 386Q264 468 350 468Q375 468 390 467T429 460T466 443T492 408T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386\",120316:\"274 -11Q32 -11 32 225Q32 346 85 406T249 474H266H271Q302 474 325 471T385 458T451 419T498 346Q518 300 518 225Q518 -11 274 -11ZM367 233Q367 322 350 354T270 387Q240 387 222 377T195 344T184 298T182 233Q182 151 198 117T275 83H282Q318 83 339 104Q355 119 361 146T367 233\",120317:\"125 458H139Q174 458 185 452T202 420L211 426Q245 448 288 458T354 469Q356 469 361 469T369 468Q443 468 481 412Q523 355 523 223Q523 164 509 120T473 51T423 12T371 -7T323 -11Q260 -11 204 33V-65Q204 -80 204 -102T205 -131Q205 -162 200 -175T178 -192Q173 -194 126 -194L81 -193Q61 -187 54 -166V431Q58 447 81 458H125ZM372 230Q372 376 282 376Q247 376 204 352V107L208 103Q213 99 218 95T232 87T251 79T274 76Q323 76 349 116Q372 153 372 230\",120318:\"226 -11Q37 -11 37 236Q37 294 51 338T86 407T135 445T186 464T233 469H235Q300 469 349 422L359 413V425Q359 452 376 464Q384 469 433 469H455Q498 469 505 444Q507 438 507 137Q507 -163 505 -169Q500 -185 487 -189T450 -194H432H413Q367 -194 358 -171Q356 -163 356 -63V40L348 33Q296 -11 231 -11H226ZM281 375Q188 375 188 228Q188 77 275 77Q322 77 359 120V328Q338 357 324 366T281 375\",120319:\"54 437Q58 453 81 464H122H147Q186 464 194 439Q196 434 196 405V377L203 387Q245 456 324 468Q325 468 331 468T340 469Q347 469 356 462V360Q350 355 346 354T339 353T326 353T300 347Q260 337 234 311T202 252Q201 247 201 138Q201 122 201 98T202 66Q202 33 197 20T175 2Q170 0 125 0L81 1Q61 7 54 28V437\",120320:\"37 328Q37 392 75 433T203 474Q254 474 265 473Q319 465 370 442Q378 439 380 432Q380 426 372 384Q364 336 359 333Q358 331 355 331Q348 331 337 341Q282 388 216 388H208Q190 388 180 387T161 377T151 351Q151 333 164 323T224 306L267 297Q314 285 355 246T396 144Q396 17 282 -5Q260 -10 218 -10Q170 -10 124 2T55 26T30 44Q30 48 39 99T49 153Q52 159 60 159Q66 159 70 153Q100 120 133 101T218 82Q231 82 238 83T258 87T277 101T283 126Q283 149 260 160T200 176T153 186Q109 201 73 236T37 328\",120321:\"225 267Q225 202 226 169T232 115T244 88T265 82Q295 84 318 100T345 116Q352 116 354 110T364 77Q373 46 373 43Q373 28 312 9T190 -10Q160 -10 139 1T107 29T89 77T82 136T80 210V258V371H66H59Q39 371 27 386Q20 394 20 417Q21 432 23 437Q35 458 60 458H65H83V510L84 562Q93 589 131 589H154H174Q216 589 223 564Q225 558 225 508V458H274Q330 458 338 453Q355 441 355 415Q355 388 338 376Q330 371 274 371H225V267\",120322:\"53 431Q62 459 100 459Q105 459 114 459T127 458H152Q192 458 201 435Q203 427 203 262Q204 86 208 77Q209 74 216 71Q227 66 258 66H264Q334 66 354 140L356 150L357 290Q357 427 359 435Q365 449 377 453T412 458H432H450Q498 458 506 433Q508 427 508 229T506 25Q498 0 451 0H434H418Q386 0 374 7T360 43V58L352 49Q298 -11 199 -11Q135 -9 101 11T56 80Q52 100 52 273L53 431\",120323:\"26 429T26 435T32 448T44 456Q48 458 85 458H99Q145 458 161 431Q162 429 207 285L251 145L294 284Q333 410 341 430Q351 451 374 456Q379 458 420 458H430Q450 458 457 456T471 443Q473 437 473 435Q473 426 443 325T381 126L350 28Q339 7 316 2Q312 0 250 0Q187 0 183 2Q160 7 149 28L136 68Q124 109 106 166T70 283T39 385\",120324:\"699 458Q717 447 719 432Q719 426 666 230T610 27Q602 10 588 5T548 0H512H482Q431 0 420 17T384 135Q356 241 352 298V308L351 295Q348 251 322 145T290 28Q279 0 233 0H212H191Q146 0 133 27Q130 33 77 229T24 430Q24 449 44 457Q47 458 79 458Q122 458 126 456Q154 450 163 419L233 153Q241 187 272 304T307 431Q318 458 368 458Q394 458 398 456Q421 451 430 431Q434 423 509 147L547 286Q582 416 588 429Q600 454 624 457Q632 458 647 458H663H699\",120325:\"92 0Q87 0 77 0T62 -1Q24 -1 24 22Q24 29 33 41T106 136Q185 237 184 238Q184 239 147 284T73 376T33 427Q31 430 31 436Q31 451 45 457Q48 458 96 458H122Q152 458 163 450T208 394L247 345L282 394Q288 403 297 416T309 434T319 444T328 452T338 455T352 458T372 458H393H440Q457 449 457 435Q457 428 450 419T379 328Q308 239 308 237L389 137Q409 112 436 79Q475 31 475 23Q475 -1 436 -1Q432 -1 422 -1T407 0Q360 0 352 3Q343 6 336 16T291 83L247 151L245 148Q243 145 239 139T229 124T218 106T204 84Q167 24 160 15T141 1L92 0\",120326:\"454 458Q473 446 473 430Q473 426 394 184L311 -68Q291 -119 245 -162T123 -205Q51 -205 46 -190Q44 -187 40 -142T36 -92Q36 -90 36 -88L37 -87Q41 -80 46 -80Q48 -80 73 -92T126 -105Q146 -105 161 -98T185 -76T197 -53T206 -28L215 0L122 212Q29 427 29 435Q29 448 46 457Q49 458 91 458Q93 458 106 458T125 457T140 454T157 446T170 431Q183 410 224 305T266 158Q266 152 266 151Q267 151 268 163Q271 206 302 310T342 432Q354 458 398 458H418H454\",120327:\"268 376Q250 376 180 375T92 374Q69 374 63 380Q46 390 46 419Q46 428 49 437Q57 451 73 457Q76 458 242 458T413 456Q420 455 427 448Q439 438 439 413Q439 392 433 385Q432 383 318 236T204 88Q235 88 306 89T395 90H399Q408 90 414 89T427 84T438 70T442 45Q442 9 416 2Q411 0 236 0H136Q73 0 62 1T41 12Q31 23 31 47Q31 68 36 77Q37 78 51 97T96 155T153 228L268 376\",120328:\"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492\",120329:\"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322\",120330:\"124 266Q124 372 179 473T333 639T544 705Q592 705 635 697T698 679L718 670Q719 669 701 621T681 572L676 576Q670 580 661 586T641 598T614 611T583 620Q558 625 526 625Q406 625 318 516T230 276Q230 238 236 212Q251 148 294 108T412 68Q469 68 508 80T598 123Q608 129 608 128Q606 109 603 87L598 45L573 33Q521 7 486 -1T394 -10Q358 -10 346 -8Q260 5 202 62Q124 145 124 266\",120331:\"162 348L236 694H385Q535 693 543 692Q600 682 641 654T705 586T737 506T747 425Q747 296 672 187Q625 114 548 62T384 1Q376 0 262 0Q88 0 88 1L98 46Q107 90 126 177T162 348ZM622 533Q575 624 443 624Q434 624 419 624T399 623H321L263 348Q249 283 234 213T212 107L204 72Q204 71 289 71Q374 72 386 74Q501 94 573 193T646 422Q646 487 622 533\",120332:\"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2\",120333:\"86 2Q88 4 160 346T233 689Q233 691 453 691T673 689Q670 686 656 611H488L320 612Q314 579 302 523T281 427T272 385Q272 384 419 384H567L551 308H255L223 156Q216 124 207 82T194 20L190 2Q190 0 138 0H86V2\",120334:\"125 267Q125 375 182 476T337 641T544 705Q598 705 644 693T710 669T730 655L712 609L693 560L692 557L681 567Q618 626 526 626Q447 626 378 573T269 440T229 277Q229 185 276 127T406 68Q422 68 451 71T502 78T524 84L526 93Q528 102 532 119T539 153L553 222Q553 223 495 223Q436 223 436 224Q436 230 444 262L452 299H662V296Q661 290 635 166T607 40Q606 37 576 25T492 1T391 -11Q272 -11 199 66T125 267\",120335:\"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2\",120336:\"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348\",120337:\"377 424L435 694H535V691Q534 685 476 412T416 135Q401 74 350 26T210 -22Q165 -22 124 -11T65 9T46 21L54 41Q62 61 70 83T81 109Q82 111 85 106Q86 105 87 103Q93 94 103 84T135 64T185 53Q238 53 272 76T317 142Q317 145 325 182T348 289T377 424\",120338:\"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223\",120339:\"161 348L235 694H338V691Q338 690 273 385T208 79Q278 80 362 80H516Q502 11 499 2V0H293Q87 0 87 1L96 46Q106 90 125 177T161 348\",120340:\"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691\",120341:\"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609\",120342:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58\",120343:\"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513\",120344:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 305 693 194T543 36Q547 29 586 -47T625 -125H504L450 -8Q406 -22 363 -22Q256 -22 187 56T118 254ZM661 437Q661 532 616 584T506 636Q428 636 361 578T257 433T220 258Q220 167 264 113T380 58Q390 58 397 58T408 59T413 60T417 61Q417 63 387 127T356 193Q356 194 409 194H462L485 150L508 105Q509 103 532 125T567 161Q661 278 661 437\",120345:\"162 348L236 694H375H414H445Q507 694 538 690T606 668Q698 623 698 534V528Q698 447 608 377Q582 358 555 345T512 326L497 321L617 0H565L513 1L402 309H255L189 0H138Q88 0 88 1L98 46Q107 90 126 177T162 348ZM603 525Q603 603 499 620Q486 622 403 623H321L297 506Q292 482 285 449T274 402L271 387V385H346Q350 385 363 385T386 384Q548 384 592 479Q603 503 603 525\",120346:\"161 478Q161 568 242 642T435 716Q527 716 599 673L609 667Q595 633 589 615L571 568Q570 568 564 575T546 592T518 611T475 628T417 635Q351 635 305 596T259 507Q259 465 290 444T372 411T432 396Q473 385 509 343T545 236Q545 140 464 59T270 -22Q155 -22 54 48L92 146Q93 146 101 138T124 117T161 92T216 72T288 63Q360 63 403 109T447 204Q447 220 444 233T435 256T421 273T404 285T385 295T366 301T347 306T331 310T315 314T292 321T265 331T235 346T207 367T183 395T168 431T161 478\",120347:\"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165\",120348:\"340 -22Q251 -22 191 33T131 177V187Q131 192 131 195T132 205T133 215T136 231T141 253T147 285T156 328T168 384T184 457L235 694H338V691Q338 690 288 451T236 210Q234 194 234 177Q234 138 247 111T280 72T319 54T357 49Q408 49 449 74T510 128Q516 136 521 143T530 158T538 175T545 194T553 220T560 250T569 289T579 336T591 395T606 464L655 694H747V691Q651 243 645 213Q623 149 587 102Q482 -22 340 -22\",120349:\"220 348L161 694H216Q270 694 270 693L283 613Q334 313 346 215Q359 102 359 96Q359 87 358 84Q388 162 684 657L706 694H753Q799 694 799 693L387 0H333Q279 0 279 1L272 45Q264 89 249 177T220 348\",120350:\"596 540Q596 562 597 585T599 609Q599 588 436 255Q402 185 362 104L310 0H213V3Q213 6 188 347T161 694H263L265 664Q290 327 293 184Q293 112 289 85Q290 85 290 87Q290 95 301 123T332 194T373 282T419 380T463 469T498 541T517 579L574 694H671V689L674 646Q678 603 682 538T691 401T699 263T703 160Q703 102 700 87Q719 154 930 576L989 694H1076Q1076 693 903 347L730 0H628V4L626 26Q624 48 622 85T616 168T609 267T603 369T598 464T596 540\",120351:\"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14\",120352:\"151 692Q151 694 212 694H272L418 362L696 683L705 694H758L809 693Q809 692 630 490T444 280Q442 275 413 139L383 1L333 0Q282 0 282 2Q283 3 312 141L341 278L246 484L151 692\",120353:\"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54\",120354:\"313 386Q286 386 260 381T217 369T186 355T164 342T155 337Q154 338 159 377T165 418Q251 461 320 461Q322 461 328 461T337 460Q397 460 435 424T473 329Q473 325 473 318T472 308Q432 110 407 2V0H317V2L325 38Q295 21 269 10Q215 -10 156 -10H149Q76 -10 62 69Q61 75 61 90Q61 127 73 150T116 194Q146 215 207 231T348 252H368L373 277Q378 302 378 318Q378 367 339 384Q332 386 313 386ZM150 116Q150 93 171 79T223 65Q259 65 293 85T341 135Q343 140 348 160T353 184Q353 186 342 186Q298 186 231 174T153 134Q150 127 150 116\",120355:\"302 -11Q266 -11 235 1T190 26L176 38Q170 8 168 2V0H121Q75 0 75 1L84 46Q94 90 113 177T149 348L223 694H267Q312 694 312 693T282 551T251 407Q251 406 256 408T271 415Q347 454 430 454H438Q501 454 528 374Q539 339 539 299Q539 179 466 84T302 -11ZM443 275Q443 317 421 348T346 379Q318 379 296 369Q269 359 238 332L193 118L198 109Q220 65 269 65Q350 65 396 130T443 275\",120356:\"75 164Q75 226 100 282T165 377T252 437T342 460H347Q447 460 499 417L483 378Q468 339 468 338Q466 338 455 347T424 366T385 378Q355 382 334 382Q262 382 215 318T168 177Q168 120 196 95T259 69H269Q345 69 420 108Q432 114 432 113T427 72L422 32L402 22Q382 12 344 2T259 -11Q214 -11 180 2T126 36T95 81T79 126T75 164\",120357:\"73 156Q73 224 102 293T184 408T294 455Q375 455 432 413Q438 407 438 410T469 553L499 694H588V691Q588 690 515 348T441 2V0H348V2Q357 29 357 43L352 41Q332 24 288 7T196 -10H190Q178 -10 166 -7T134 8T98 46T75 113Q73 129 73 156ZM419 335Q419 339 412 348T386 368T342 379Q284 379 243 343T184 261T167 168Q167 122 191 94T263 66Q321 66 367 116L374 124L397 229Q419 333 419 335\",120358:\"248 -11Q170 -11 121 41T71 173Q71 265 133 349T285 454Q305 460 318 460H328Q368 460 399 448Q472 414 472 309Q472 274 464 234L462 219H159Q156 198 156 185Q156 137 179 107T237 68Q246 66 268 66Q345 66 427 113V109Q426 108 422 73T417 37Q417 34 409 29Q329 -11 248 -11ZM401 299Q399 337 376 361T316 385Q291 385 266 371Q220 350 184 289H401V299\",120359:\"381 443Q381 440 374 407T366 371H315Q263 371 263 369Q262 368 224 186Q215 145 205 97T189 25L184 2V0H94V2L99 25Q104 48 114 96T134 186Q172 368 173 369Q173 371 139 371H106V373L114 410L121 444H155L188 445L191 455L212 551Q232 612 288 658T415 705Q438 705 464 701T494 694Q478 614 477 614L467 618Q457 621 440 624T406 629H400Q333 629 306 579Q301 568 289 507L275 444H328Q381 444 381 443\",120360:\"113 252Q113 334 177 394T311 454Q332 454 350 451T379 442T398 432T410 424L413 421Q412 423 411 424L409 426Q409 429 434 436T496 449T560 455H568V451Q568 447 567 429T566 394L565 377L553 379Q522 385 479 385Q463 385 456 384L443 383L436 392Q454 357 454 324Q454 243 390 182T249 120Q233 120 219 122T195 128T178 136T167 142L163 145Q149 131 149 105Q149 78 171 72L242 71Q246 71 269 71T303 71T336 68T372 62T403 51T432 32Q461 8 461 -40Q461 -112 383 -159T211 -206Q123 -206 68 -172T12 -86Q12 -55 31 -23T82 32Q90 38 89 39Q89 40 87 44T82 59T80 82Q80 134 126 189Q113 228 113 252ZM369 319Q369 354 350 368T304 383Q274 383 252 369T218 333T202 291T197 255Q197 221 217 206T263 191Q317 191 343 233T369 319ZM373 -59Q373 -41 362 -30T330 -13T291 -7T247 -5H216Q167 -5 158 -6T139 -12Q123 -20 110 -38T97 -76Q97 -102 133 -118T221 -134Q242 -134 267 -130T316 -118T357 -94T373 -59\",120361:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 1L82 46Q92 90 111 177T147 348L221 694H265Q310 694 310 693T279 544L247 395Q325 455 403 455Q513 455 513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120362:\"189 578Q190 579 199 627T211 678V680H315V678Q313 675 304 627T293 578V576H189V578ZM168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224\",120363:\"211 577L233 680H284Q336 680 336 679L315 576H263Q211 576 211 577ZM19 -204Q-12 -204 -40 -196T-82 -179T-96 -170Q-96 -168 -78 -132L-61 -95L-54 -103Q-32 -126 3 -126Q26 -126 50 -116Q76 -101 83 -85Q84 -79 140 180T196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204\",120364:\"150 348L224 694H310V691Q218 259 218 258L232 270Q245 281 274 306T327 351L435 444H489L542 443Q542 442 443 357L344 272L471 1L422 0H372L366 14Q359 27 347 54T323 105L273 210Q271 210 231 174L190 139L160 0H118Q76 0 76 1L86 46Q95 90 114 177T150 348\",120365:\"148 348L222 694H311V691Q311 690 238 348T164 2V0H119Q74 0 74 1L84 46Q93 90 112 177T148 348\",120366:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392H400Q451 454 472 439Q482 434 489 427T500 412T506 399T510 388L511 384Q511 384 517 388Q563 431 620 446Q648 455 680 455Q790 455 790 358Q790 334 785 309Q784 304 753 156T720 2V0H627V2L634 34Q641 65 650 110T669 200T686 281T693 321Q693 379 613 379Q553 379 514 302Q503 276 486 202T457 66T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120367:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392Q416 454 433 452T470 440T502 411T513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120368:\"69 169Q69 238 107 306T211 417T348 461Q419 461 471 412T523 271Q523 161 438 75T247 -11Q170 -11 120 39T69 169ZM432 279Q432 338 401 361T333 385Q280 385 240 352T182 273T164 178Q164 119 195 94T265 68Q306 68 344 94Q380 115 406 169T432 279\",120369:\"259 443Q251 405 251 404L260 409Q269 414 286 421T324 436T375 449T434 455Q482 455 510 417T538 303Q538 169 463 79T302 -11Q226 -11 176 39V36Q175 35 151 -80L127 -193Q127 -194 80 -194H34V-191L102 127L169 443Q169 444 214 444T259 443ZM269 65Q332 65 386 124T441 262Q441 304 422 334T370 373Q356 375 339 375Q293 375 238 331L193 118Q200 103 206 94T229 75T269 65\",120370:\"72 149Q72 272 146 363T304 455Q340 455 371 442T409 423T436 398Q438 411 442 427L448 455H538L400 -193Q400 -194 354 -194Q307 -194 307 -193L356 37V41Q355 41 350 38T332 27T302 13Q247 -10 191 -10H179Q138 -10 105 32T72 149ZM414 298Q402 376 341 376Q277 376 223 317T169 182Q169 121 198 93T265 65Q319 65 365 111L377 123L414 298\",120371:\"240 377L244 380Q248 384 255 390T272 404T296 419T325 434T361 446T401 454Q403 454 408 454T416 455H424L421 442Q419 435 413 405T406 373Q351 373 294 336T216 237Q213 231 201 173T178 60T164 2V0H119Q74 0 74 2L122 226L170 449Q170 450 213 450H255L247 414Q246 409 245 403T243 393T241 385T240 379T240 377\",120372:\"99 299Q99 318 106 341T133 393T195 441T298 461Q336 461 370 453T420 437L436 429Q436 428 421 389T405 350Q356 386 273 386H265Q248 386 237 384T211 371T191 337Q189 329 189 326Q189 320 190 315T194 306T200 299T209 293T218 289T228 285T239 283T251 281T263 278L270 276Q278 275 283 274T298 270T316 264T333 255T351 243T367 228T380 209T388 186T391 157Q391 96 341 43T193 -11Q171 -11 150 -8T114 -1T84 9T61 19T45 28T35 33Q35 36 67 116L76 109Q132 67 211 67Q258 67 279 88T301 135Q301 159 280 170T224 187T180 197Q141 212 120 239T99 299\",120373:\"245 68Q267 68 289 75T322 90L334 98Q338 94 338 28V24L324 19Q268 -4 218 -8Q198 -11 177 -11Q118 -11 118 75Q118 98 123 127Q125 137 149 251T174 369Q174 371 135 371H97V373L105 410L112 444H152L192 445L200 478Q208 512 213 541L219 571H261Q303 571 303 570T290 506L276 444H343Q410 444 410 443Q410 440 403 407T395 371H328Q261 371 261 369Q211 152 211 118Q211 68 245 68\",120374:\"166 -10H160Q146 -10 137 -8T115 0T97 22T90 63Q90 79 130 268L167 443Q167 444 214 444Q260 444 260 443L224 273Q187 97 187 86Q187 70 202 65T250 59Q303 59 336 83T379 139Q380 143 412 292T444 443Q444 444 491 444Q537 444 537 443T491 225T443 2V0H353V2L361 38L352 34Q344 29 326 22T286 7T232 -5T166 -10\",120375:\"177 6L108 442V444H201V442Q202 441 213 371T235 213T246 90V65Q259 117 429 406L450 444H495Q540 444 540 443Q539 442 411 221L282 1L230 0H178L177 6\",120376:\"148 5Q147 8 128 222T109 440L108 444H199V442Q200 441 204 385T214 253T219 140Q219 108 215 76Q215 72 214 67V65L215 66Q219 95 278 221L390 444H475V437Q497 203 497 121Q497 90 494 70Q494 67 494 67L496 73Q520 143 654 405L674 444H718Q762 444 762 443L534 1L483 0H432V5Q429 28 422 126T413 283Q413 343 416 370L417 378Q416 377 416 376Q401 303 248 12L242 0H148V5\",120377:\"317 229Q453 9 460 0H409L359 1L312 88Q266 176 265 176Q265 177 254 165T223 132T182 88L100 0H1L15 14Q29 28 61 59T118 115L236 229L226 244Q108 433 100 444H201L290 294L438 444H537L528 435Q526 432 512 418T468 376T418 327L317 229\",120378:\"11 -117L20 -120Q28 -124 46 -128T84 -132H100Q124 -122 149 -85Q200 -6 200 1Q200 17 155 204T109 442Q109 444 156 444H203Q203 443 208 419T221 357T235 277T248 190T254 114Q254 81 250 67V65Q251 65 251 67Q256 94 297 177Q339 259 422 397L450 444H540Q540 443 386 186T219 -90Q179 -153 145 -179T73 -205Q52 -205 34 -202Q29 -202 21 -201T7 -198L1 -197Q1 -196 6 -157T11 -117\",120379:\"129 408L136 444H315Q494 444 494 443Q494 441 489 419L484 396L164 76L291 77Q418 77 418 76T411 41T402 2V0H215Q28 0 28 2L34 27L38 50L360 371L240 370Q121 370 121 371Q124 388 129 408\",120432:\"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221\",120433:\"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176\",120434:\"40 305Q40 437 110 529T281 622Q315 622 343 611T387 589T404 578Q409 585 415 596T425 611T435 618T452 622Q472 622 478 609T485 566Q485 559 485 540T484 508V460Q484 413 478 403T442 393Q417 393 409 402Q400 409 400 420Q400 428 395 445T380 487T347 528T295 546Q235 546 180 483T124 306Q124 245 141 197T186 121T241 80T296 66Q346 66 373 103T400 178Q400 209 435 209H442H450Q484 209 484 172Q480 96 421 43T281 -11Q177 -11 109 84T40 305\",120435:\"38 1Q16 8 16 38Q16 62 32 73Q39 76 58 76H78V535H58Q40 535 32 538Q16 548 16 573Q16 587 17 591Q23 604 34 607T83 611H166H176Q188 611 209 611T239 612Q299 612 337 597T415 530Q485 438 485 300Q485 180 431 100T301 3L291 1H38ZM400 301Q400 363 385 410T346 482T303 519T267 534Q261 535 210 535H162V76H214L267 77Q323 89 361 148T400 301\",120436:\"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271\",120437:\"384 260Q384 230 377 221T342 212Q317 212 309 220Q300 229 300 252V268H179V76H249Q264 67 267 61T271 38Q271 10 249 1H44Q22 9 22 32V38Q22 63 39 73Q45 76 69 76H95V535H69H59Q42 535 32 542T22 573Q22 602 44 610H50Q56 610 66 610T91 610T125 610T164 611T208 611T257 611H468Q470 609 475 606T481 602T485 598T488 593T489 586T490 576T490 562V526V488Q490 452 472 444Q468 442 448 442Q423 442 415 450Q408 457 407 463T406 501V535H179V344H300V360Q300 383 309 392T342 401Q373 401 382 381Q384 376 384 306V260\",120438:\"38 306Q38 447 105 534T261 622Q280 622 298 618T329 608T350 596T366 585L371 581Q373 581 377 591T390 612T417 622Q437 622 443 609T450 566Q450 559 450 540T449 508V460Q449 413 443 403T407 393Q392 393 386 394T373 402T364 426Q360 472 335 509T271 546Q214 546 168 477T121 308Q121 210 164 138T271 65Q293 65 310 78T337 109T352 147T360 180T362 195Q362 196 333 196L304 197Q282 204 282 227V234Q282 247 282 251T288 261T304 272H474Q488 263 492 256T496 234Q496 211 479 199Q475 197 461 196H449V21Q441 6 434 3T412 -1H407H402Q385 -1 379 3T364 28Q350 14 322 2T260 -11Q173 -11 106 76T38 306\",120439:\"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571\",120440:\"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400\",120441:\"202 543T202 573T224 610H228Q231 610 237 610T251 610T269 610T291 611T315 611T342 611H457Q471 602 475 595T479 573Q479 549 462 538Q454 535 432 535H408V328Q408 159 408 133T402 93Q386 48 340 19T229 -11Q158 -11 108 16T57 100Q57 129 73 141T108 154Q128 154 143 140T159 102Q159 93 155 79Q188 65 228 65H230Q290 65 318 106Q323 115 323 139T324 329V535H274L224 536Q202 543 202 573\",120442:\"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573\",120443:\"27 594Q34 605 43 608T84 611H154H213Q258 611 269 605T281 573Q281 546 263 538Q257 535 222 535H185V76H404V118V145Q404 168 411 177T446 186H453Q478 186 486 167Q488 161 488 93V50Q488 24 485 17T466 1L258 0H147H99Q47 0 36 6T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594\",120444:\"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50\",120445:\"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571\",120446:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513\",120447:\"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421\",120448:\"56 306Q56 380 58 426T68 510T87 568T120 600T170 617T240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 124 447 66Q433 23 394 6L424 -53Q454 -112 454 -118Q454 -128 441 -138H377Q367 -135 363 -129T333 -69L304 -11H254Q205 -10 180 -8T128 6T91 36T70 92T58 178T56 306ZM227 151Q227 171 262 171H276H281Q292 171 296 171T305 170T313 165T317 158T323 145T332 127L353 88Q356 88 361 95T372 131T382 202Q384 228 384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 248 141 217T146 154T157 109T178 83T212 68T262 65H266L264 70Q261 75 256 85T247 105Q227 145 227 151\",120449:\"16 571Q16 598 27 605T76 612Q84 612 108 612T148 611Q268 611 294 605Q346 592 389 550T432 440Q432 394 410 359Q393 329 366 310L358 303Q387 273 399 239Q405 219 405 178T408 106T421 68Q426 65 428 65Q433 65 435 74T438 96T441 112Q450 130 480 130H485Q519 130 522 100Q522 79 516 56T488 11T434 -11Q421 -11 408 -8T377 5T344 37T324 93Q322 101 322 154L321 209Q304 257 257 267Q252 268 207 268H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571ZM348 440Q348 478 321 502T260 532Q252 534 208 535H165V344H208Q212 344 223 344T239 345T252 346T266 348T278 351T293 358Q348 387 348 440\",120450:\"52 454Q52 524 107 572T229 621Q266 621 274 620Q326 610 360 588L371 581Q377 594 379 598T386 610T397 619T412 622Q433 622 439 610T446 570Q446 563 446 545T445 515V479Q445 441 444 432T436 417Q428 408 403 408T370 417Q361 424 361 434Q361 439 360 448T351 476T331 509T295 535T238 546Q194 546 163 522T132 458Q132 435 148 412Q155 401 166 393T192 380T218 371T247 364T270 359Q341 342 349 339Q389 325 418 296T461 229Q472 201 472 164Q469 92 417 41T287 -11Q240 -11 200 -1T143 19L126 29Q117 6 109 -2Q100 -11 84 -11Q64 -11 58 1T51 42Q51 49 51 66T52 95V135Q52 173 53 180T61 194Q70 203 95 203Q119 203 127 194Q136 186 136 168Q143 66 284 66H290Q325 66 350 85Q391 115 391 165Q391 204 369 228T322 260Q320 260 255 275T185 293Q123 309 88 355T52 454\",120451:\"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38\",120452:\"-3 573Q-3 597 8 604T50 612Q57 612 77 612T111 611H200Q214 602 218 595T222 573Q222 549 205 538Q198 535 175 535H151V359Q151 333 151 291Q152 177 156 162Q157 160 157 159Q165 123 193 95T262 66Q303 66 330 94T367 159Q371 175 371 191T373 359V535H349H339Q328 535 322 537T309 548T303 573T306 595T325 611H506Q520 602 524 595T528 573Q528 549 511 538Q504 535 481 535H457V364Q457 189 456 182Q448 101 394 45T262 -11Q189 -11 132 43T68 182Q67 189 67 364V535H43H33Q22 535 16 537T3 548T-3 573\",120453:\"19 578Q19 585 20 590T23 598T29 604T38 608T48 610T62 611T78 612T97 611T119 611H195Q210 602 213 596T217 573Q217 561 216 555T206 542T179 535H164Q166 529 188 435T235 231T261 94L262 84V88Q263 91 263 94Q265 121 289 231T336 438L360 535H345Q308 535 308 566V573Q308 586 308 590T314 600T330 611H484Q499 602 502 595T505 573Q505 560 504 554T493 541T465 535H447L384 278Q321 19 319 14Q309 -7 278 -7H262H246Q215 -7 205 14Q203 19 140 278L78 535H59Q45 535 38 536T25 547T19 573V578\",120454:\"459 611Q491 611 501 605T512 573Q512 538 482 535H474L439 276Q406 26 402 11Q398 2 389 -3Q387 -3 386 -4L380 -7H359H349Q324 -7 313 13Q307 29 285 139T263 275Q263 283 262 283Q261 282 261 274Q261 248 239 137T211 13Q200 -7 175 -7H165H144Q136 -3 127 3Q121 10 117 36T85 276L50 535H42Q26 536 19 545T12 564V573Q12 603 33 610Q37 611 101 611H134Q165 611 175 604T186 573Q186 563 186 559T182 547T169 538T143 535H122V531Q124 517 133 446T155 266T172 96V84L173 102Q176 157 192 243T215 346Q227 367 259 367H262H265Q297 367 309 346Q316 329 332 243T351 102L352 84V96Q356 161 368 266T390 444T402 531V535H381Q366 535 359 536T345 547T338 573Q338 600 356 608Q362 611 425 611H459\",120455:\"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571\",120456:\"20 573Q20 597 30 604T72 611H121H198Q212 602 216 595T220 573Q220 568 219 563T217 555T214 549T211 544T207 541T203 538T198 537T194 536T190 536L188 535Q179 535 179 534L188 516Q196 497 208 470T232 415T252 363T261 332Q261 329 262 329T263 332Q263 354 333 508L345 534Q345 535 336 535Q305 538 305 567V573Q305 589 308 595T327 611H483Q505 598 505 573Q505 549 488 538Q481 535 460 535H438L304 245V76H325H331Q343 76 350 75T363 64T369 38Q369 10 347 1H178Q167 5 162 11T157 21T156 38V44Q156 66 172 73Q180 76 199 76H220V245L86 535H64Q44 535 36 538Q20 548 20 573\",120457:\"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71\",120458:\"126 306Q105 306 90 321T74 359Q74 439 211 439Q268 439 276 438Q343 426 383 390T430 306Q431 301 431 190V81Q446 79 465 78T492 76T509 72T521 60T524 38Q524 11 506 3Q502 1 466 1Q426 1 406 5T379 14T355 36L345 30Q284 -6 205 -6Q135 -6 92 39T48 141Q48 182 79 212T158 256T252 278T342 285H347V290Q347 315 325 335T267 362Q258 363 224 363Q189 363 185 362H179L178 358Q178 353 178 352T176 345T174 337T170 330T165 322T158 316T150 311T139 308T126 306ZM132 140Q132 115 157 93T224 70Q269 70 302 87T344 133Q346 139 347 175V211H339Q256 209 194 190T132 140\",120459:\"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 491V396L182 402Q217 424 256 431Q280 437 309 437Q376 437 434 379T492 217Q492 162 473 118T422 47T358 8T293 -6Q229 -6 174 38Q171 13 163 7T135 1H131H122Q99 1 90 23L89 279V535H58L27 536Q4 543 4 573ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215\",120460:\"291 -6Q196 -6 131 60T66 216Q66 296 119 361Q154 403 200 421T273 439Q275 440 293 440H313Q400 440 433 409Q454 388 454 359Q454 335 439 321T402 306Q380 306 365 321T350 357V362L340 363Q339 363 326 363T303 364Q280 364 266 362Q217 352 184 313T151 215Q151 153 199 112T313 70Q341 70 357 85T381 118T394 140Q402 146 424 146Q443 146 447 144Q466 137 466 117Q466 106 457 88T429 47T374 10T291 -6\",120461:\"266 573Q266 596 277 603T314 611H352H385Q411 611 419 607T435 586V76H498Q512 67 516 60T520 38Q520 9 498 1H436Q429 1 417 1T398 0Q375 0 363 7T351 34V43L342 36Q288 -6 223 -6Q143 -6 87 58T31 216Q31 307 88 372T230 437Q292 437 342 405L351 399V535H320L289 536Q266 543 266 573ZM351 290Q347 302 337 316T302 346T244 361Q193 361 154 319T115 215Q115 152 152 111T235 70Q314 70 351 170V290\",120462:\"48 217Q48 295 100 361T248 439L258 440Q268 440 274 440Q329 438 369 416T428 359T456 292T464 228Q464 215 461 208T454 198T442 190L288 189H135L138 179Q153 132 199 102T303 71Q336 71 353 86T380 120T398 143Q404 146 422 146Q453 146 462 126Q464 120 464 116Q464 84 416 39T285 -6Q187 -6 118 59T48 217ZM377 264Q371 291 365 306T341 338T294 362Q288 363 264 363Q225 363 190 336T139 264H377\",120463:\"43 395Q44 405 44 408T47 416T53 423T66 431H176V461Q176 500 182 518Q201 570 252 593T353 617Q399 614 418 593T437 548Q437 528 424 514T387 499Q365 499 353 511T338 537V541H328Q275 536 261 494Q260 490 260 460V431H327Q334 431 346 431T364 432Q392 432 404 425T416 393T405 362T365 355H327H260V76H319Q375 76 388 71T401 38Q401 27 400 23T395 12T379 1H58Q47 6 42 12T36 23T35 38Q35 65 53 73Q59 76 117 76H176V355H121H93Q64 355 54 362T43 395\",120464:\"60 274Q60 337 107 386T233 436Q278 436 316 417L329 410L338 416Q384 442 427 442T489 423T509 381T494 345T460 332Q449 332 440 338Q432 341 427 348T419 360T415 365Q414 364 410 364L383 355Q406 320 406 274Q406 211 358 162T233 112Q189 112 155 128L146 133Q142 125 142 115Q142 99 150 85T175 71Q182 72 187 70Q188 70 195 70T218 70T254 69Q259 69 275 69T297 69T318 68T340 66T361 62T384 57T405 49T428 38Q495 -1 495 -76Q495 -143 427 -186T262 -229Q161 -229 94 -185T29 -73Q30 -60 33 -48T39 -26T47 -8T57 8T67 20T77 30T86 38L91 43Q91 44 86 53T75 80T70 117Q70 142 89 183L83 194Q60 232 60 274ZM321 274Q321 312 296 337T230 362Q197 362 171 338T145 274Q145 235 170 211T233 187Q273 187 297 212T321 274ZM422 -78Q422 -54 408 -38T366 -15T315 -6T255 -4H200Q198 -4 193 -4T183 -3Q148 -3 125 -26T102 -78Q102 -110 151 -132T261 -154Q321 -154 371 -132T422 -78\",120465:\"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 489Q173 394 175 394L186 402Q197 410 219 420T269 434Q278 436 306 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 10 286 32V38V46Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V535H58L27 536Q4 543 4 573\",120466:\"202 538T202 559T218 596T260 612Q283 612 300 597T317 560Q317 538 300 523T260 507Q235 507 219 522ZM411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411\",120467:\"261 559Q261 580 277 596T319 612Q342 612 359 597T376 560T360 523T320 507Q296 507 279 523T261 559ZM75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107\",120468:\"13 42Q13 63 23 69T69 76H102V535H69H54Q34 535 24 542T13 573Q13 588 15 593Q22 605 29 608T56 611H95Q113 611 122 611T140 610T152 609T159 607T163 603T167 597T173 589V413L174 237L295 355H275Q260 355 253 356T239 367T232 393Q232 419 243 425T304 431H359H464Q479 422 482 415T485 393Q485 364 464 356L431 355H398L293 254L427 76H486Q501 67 504 60T507 38Q507 28 507 24T501 12T486 1H314Q292 8 292 38Q292 62 308 73Q312 75 326 76L338 77L290 140Q279 154 267 171T248 196L242 204L207 171L173 139V76H206H221Q241 76 251 69T262 38Q262 11 244 3Q240 1 138 1Q123 1 100 1T70 0Q32 0 23 7T13 42\",120469:\"51 573Q51 602 73 610H76Q79 610 84 610T97 610T113 610T133 611T155 611T179 611H282Q301 598 304 586V76H452Q466 67 470 60T474 38Q474 10 452 1H73Q51 9 51 32V38Q51 54 54 60T73 76H220V535H146L73 536Q51 545 51 567V573\",120470:\"133 76Q156 74 164 67T172 38Q172 9 151 1H11Q-12 8 -12 38Q-12 61 5 73Q10 75 28 76H45V355H28Q10 356 5 358Q-12 370 -12 393Q-12 419 11 431H52H70Q91 431 100 427T116 405Q163 436 200 436Q255 436 281 390L285 394Q289 398 292 400T301 407T314 415T329 423T346 429T366 434T389 436H392Q425 436 448 411Q469 390 474 360T480 268V232V203V76H497Q520 74 528 67T536 38Q536 9 515 1H396Q374 9 374 32V38Q374 73 402 76H409V191V242Q409 317 404 339T375 361Q343 361 323 332T299 264Q298 258 298 165V76H315Q338 74 346 67T354 38Q354 9 333 1H214Q192 9 192 32V38Q192 73 220 76H227V191V242Q227 317 222 339T193 361Q161 361 141 332T117 264Q116 258 116 165V76H133\",120471:\"89 431Q94 431 105 431T122 432Q173 432 173 399Q173 394 175 394Q176 394 190 404T233 425T298 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 9 286 32V38V45Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89\",120472:\"52 216Q52 318 118 379T261 440Q343 440 407 378T472 216Q472 121 410 58T262 -6Q176 -6 114 58T52 216ZM388 225Q388 281 351 322T261 364Q213 364 175 325T136 225Q136 158 174 114T262 70T350 114T388 225\",120473:\"89 431Q93 431 104 431T121 432Q173 432 173 401V396L182 402Q237 437 305 437Q376 437 434 378T492 217Q492 146 459 93T382 17T291 -6Q261 -6 232 5T188 26L174 37Q173 37 173 -54V-146H236Q250 -155 254 -162T258 -184Q258 -213 236 -221H27Q4 -214 4 -184Q4 -169 8 -162T27 -146H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215\",120474:\"34 215Q34 309 91 368T222 436Q224 436 231 436T242 437Q309 437 372 390V401Q372 419 381 428T414 437Q426 437 432 436T444 430T456 412V-146H489H504Q524 -146 534 -153T545 -184Q545 -211 527 -219Q523 -221 414 -221Q398 -221 374 -221T342 -222Q304 -222 294 -216T283 -184Q283 -157 301 -149Q307 -146 339 -146H372V-51Q372 43 371 43L364 38Q357 33 345 26T318 12T280 -1T236 -6Q155 -6 95 55T34 215ZM117 215Q117 152 157 111T250 70Q289 70 318 92T363 146Q372 163 372 192V215L371 263Q339 360 254 360Q206 360 162 321T117 215\",120475:\"327 76Q359 76 369 70T380 38Q380 10 359 1H47Q24 8 24 38Q24 54 28 61T47 76H145V355H96L47 356Q24 363 24 393Q24 409 28 416T47 431H207Q223 419 226 414T229 393V387V369Q297 437 394 437Q436 437 461 417T487 368Q487 347 473 332T438 317Q428 317 420 320T407 327T398 337T393 347T390 356L388 361Q348 356 324 345Q228 299 228 170Q228 161 228 151T229 138V76H293H327\",120476:\"72 317Q72 361 108 396T229 439Q231 439 245 439T268 440Q303 439 324 435T353 427T363 423L372 432Q380 440 397 440Q430 440 430 395Q430 390 430 380T429 366V335Q429 311 422 302T387 293Q364 293 355 300T346 316T343 336T325 353Q306 364 257 364Q209 364 178 351T147 317Q147 284 231 272Q327 256 357 247Q458 210 458 129V121Q458 74 413 34T271 -6Q246 -6 224 -3T189 5T165 14T150 22T144 26Q142 23 139 18T135 11T132 6T128 1T124 -2T119 -4T113 -5T104 -6Q84 -6 78 6T71 43Q71 48 71 60T72 79Q72 132 73 141T81 157Q90 166 115 166Q135 166 142 162T157 140Q168 108 191 90T260 70Q297 70 323 76T361 91T379 110T384 129Q384 157 346 171T247 195T165 212Q119 228 96 256T72 317\",120477:\"25 395Q26 405 26 408T29 416T35 423T48 431H145V481L146 532Q154 547 161 550T184 554H189Q218 554 227 534Q229 529 229 480V431H405Q406 430 411 427T418 422T422 416T426 407T427 393Q427 387 427 382T424 374T421 368T417 363T413 360T408 358L405 356L317 355H229V249Q229 237 229 214T228 179Q228 126 241 98T295 70Q354 70 365 149Q366 167 375 174Q383 182 407 182H415Q438 182 446 166Q448 161 448 148Q448 84 398 39T282 -6Q226 -6 189 29T146 128Q145 134 145 247V355H96H72Q45 355 35 362T25 395\",120478:\"4 393Q4 416 15 423T52 431H90Q141 431 151 429T168 417Q171 412 173 409V254L174 100Q182 70 244 70Q320 70 344 119Q349 130 350 144T351 248V355H320L289 356Q266 363 266 393Q266 408 270 415T289 431H351H386Q409 431 418 428T433 411Q435 406 435 241V76H498Q512 67 516 60T520 38Q520 9 498 1H436H394Q372 1 364 5T351 26L342 21Q293 -5 227 -5Q118 -5 96 67Q91 82 90 101T89 227V355H58L27 356Q4 363 4 393\",120479:\"24 392Q24 417 36 424T79 432Q85 432 103 432T132 431H215Q229 422 233 415T237 393Q237 355 198 355H193H172L262 77L352 355H331H323Q288 355 288 393Q288 409 291 415T310 431H478Q491 423 495 416T500 393Q500 364 478 356L452 355H426L374 190Q320 24 318 20Q307 -4 273 -4H262H251Q217 -4 206 20Q204 24 150 190L98 355H72L47 356Q24 363 24 392\",120480:\"54 355Q16 355 16 388V393Q16 423 37 430Q41 431 125 431H162Q206 431 218 425T230 393Q230 366 212 358Q206 355 174 355Q141 355 141 354L150 296Q181 110 181 89V84Q182 85 183 96Q185 118 199 173T218 237Q223 247 245 259H264H268Q294 259 309 240Q315 229 329 174T343 92Q343 84 344 84V86Q344 88 344 91T345 97Q347 125 356 187T374 301T383 354Q383 355 350 355H333Q314 355 304 362T294 393Q294 420 312 428Q318 431 401 431H440Q485 431 496 425T508 393Q508 382 508 377T498 363T470 355L455 354Q455 353 441 271T413 104T396 16Q384 -4 355 -4H351Q315 -4 305 9T280 79Q278 90 276 96Q265 149 265 169Q265 176 264 169Q263 166 263 162Q261 130 248 79T230 18Q220 -4 183 -4H175L151 -3Q134 5 127 17L112 102Q97 188 83 270T69 354Q62 355 54 355\",120481:\"35 393Q35 417 46 424T89 432Q95 432 112 432T141 431H223Q238 422 241 415T244 393Q244 389 244 383T237 367T216 355Q209 355 209 354L234 319Q259 286 260 286L308 354Q308 355 301 355Q285 356 278 365T270 384L271 393Q271 420 289 428Q295 431 376 431H459Q460 430 465 427T472 422T476 416T480 407T481 393Q481 368 470 362T434 355H425H392L344 290Q295 225 295 223Q294 223 309 203T350 149L405 77L439 76H453Q474 76 484 69T495 38Q495 10 473 1H303Q281 9 281 32V38Q281 49 282 54T290 67T313 76Q324 76 324 77L259 173L197 77Q202 76 209 76Q225 75 233 68T241 55T242 38Q242 28 242 24T236 12T221 1H51Q29 9 29 32V38Q29 48 29 51T31 59T38 67T51 76H117L171 149Q224 222 224 223L124 355H90H78Q54 355 45 361T35 393\",120482:\"26 393Q26 417 37 424T80 431H134H217Q232 422 235 416T239 393Q239 379 236 371T226 360T214 356T197 355L179 354V353L188 330Q197 306 209 272T235 201T259 133T271 89V84L274 95Q279 122 298 185T335 300T352 354Q352 355 331 355Q312 355 304 358Q288 368 288 393Q288 408 291 415T310 431H478Q479 430 484 427T491 422T495 416T499 407T500 393Q500 376 493 367T479 357T458 355H452Q426 355 425 353Q420 337 351 124T280 -94Q240 -195 168 -220Q147 -228 125 -228Q89 -228 66 -201T42 -139Q42 -116 56 -102T93 -87Q117 -87 130 -102T144 -135V-138H126Q121 -148 121 -150T130 -152Q182 -147 207 -87Q211 -78 223 -40T236 1Q230 10 102 355H75L49 356Q26 363 26 393\",120483:\"56 1Q40 7 37 14T34 41Q34 59 36 64Q39 67 43 73Q65 95 191 213T341 355H133V334Q133 306 124 297Q116 289 91 289H83Q60 289 51 308Q49 313 49 361L50 409Q59 427 72 430H78Q83 430 92 430T115 430T144 430T179 431T219 431T262 431H450Q452 430 455 428T459 424T463 422T466 419T468 416T469 413T470 409T471 404T472 398T472 391Q472 374 469 368L462 358Q453 349 315 218Q210 122 164 76H391V103Q391 136 400 146Q409 155 433 155Q464 155 473 135Q475 130 475 78V46Q475 24 472 16T453 1H56\",120488:\"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390\",120489:\"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192\",120490:\"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H612V676Q614 670 627 552T643 428V424H581V428Q580 430 576 461T562 524T532 576Q512 596 481 605T426 616T357 618H304V62H439V0H425\",120491:\"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137\",120492:\"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286\",120493:\"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80\",120494:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400\",120495:\"629 -10T446 -10T164 89T64 340Q64 380 71 420T102 510T163 596T266 662T418 696H438Q488 696 499 695Q582 686 644 655T741 584T796 495T823 409T829 338Q829 188 729 89ZM439 645Q416 645 390 638T333 615T275 564T236 480Q221 423 221 341Q221 272 230 228Q247 144 301 94T447 43T592 93T663 228Q672 272 672 341Q672 645 439 645ZM286 242V446H348V412H545V446H607V242H545V276H348V242H286\",120496:\"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397\",120497:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400\",120498:\"285 0Q267 3 154 3Q56 3 47 0H40V62H131Q131 63 167 160T244 369T321 578T359 678Q366 698 393 698H404H413Q437 698 446 678Q448 672 560 369T674 62H765V0H754Q733 3 604 3Q453 3 429 0H416V62H461L507 63L355 470Q353 468 279 265L203 63L249 62H294V0H285\",120499:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314\",120500:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314\",120501:\"54 465L63 674Q63 675 383 675T703 674L712 465Q712 464 681 464H650V467Q650 490 646 516T632 545Q612 550 383 550H283Q169 550 149 548T124 531Q123 530 123 529Q116 506 116 467V464H85Q54 464 54 465ZM160 256V447H222V414H544V447H606V256H544V289H222V256H160ZM57 0L48 222H110V219Q110 147 125 133Q127 130 130 129T160 127T235 126T383 126Q482 126 530 126T604 127T635 129T641 133Q656 146 656 219V222H718L709 0H57\",120502:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454\",120503:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V618H39V680H860V618H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V618H304V62H412V0H400\",120504:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475\",120506:\"766 271Q764 266 750 137T735 4V0H407Q74 0 71 4L70 5Q64 9 64 18Q64 24 82 41T213 158L359 288Q360 288 320 336T214 460Q67 633 66 635Q64 638 64 655Q64 679 75 684Q78 686 407 686H735V682Q738 676 751 558T766 434V430H735Q704 430 704 431Q704 434 703 444T696 477T681 520T654 563T613 598Q578 615 527 619T371 624H281L396 489Q506 358 513 351Q517 342 512 334Q503 325 371 208Q338 179 303 147T249 99L231 83L243 81Q258 81 364 81Q382 81 418 81T470 82T513 83T554 88T587 96T619 109T645 129Q689 173 702 260L704 274Q704 275 735 275H766V271\",120507:\"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425\",120508:\"64 556Q69 619 114 658T224 697Q271 697 310 677T375 622T417 554T444 484L447 477V479Q456 516 473 551T516 620T582 676T670 697Q735 697 780 656T829 556Q829 539 818 532H772Q761 539 761 548Q761 571 681 571Q664 571 653 570T623 562T587 537T555 490Q536 448 531 410T525 300V210V62H660V0H646L447 3Q257 1 247 0H233V62H368V210V301Q368 373 363 410T338 490Q324 518 307 536T270 561T240 569T212 571Q132 571 132 548Q132 539 121 532H75Q64 538 64 556\",120509:\"609 0Q582 3 415 3T221 0H207V62H342V168L328 169Q193 180 117 241Q64 286 64 343T117 445Q193 506 328 517L342 518V624H207V686H221Q248 683 415 683T609 686H623V624H488V518L502 517Q637 506 713 445Q766 400 766 343T713 241Q637 180 502 169L488 168V62H623V0H609ZM342 219T342 343T340 467Q328 467 304 459Q277 451 261 439T237 409T228 378T226 343Q226 314 229 296T250 259T301 228Q331 219 341 219Q342 219 342 343ZM604 343Q604 365 602 379T591 413T560 446T503 464L489 467Q488 467 488 343T489 219Q499 219 529 228Q554 236 570 248T593 277T602 308T604 343\",120510:\"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327\",120511:\"64 515Q64 532 71 536T104 540H139Q200 540 207 538Q225 533 236 521T253 489T260 454T264 414Q264 340 287 296T347 237Q369 226 373 226Q374 226 374 425V624H239V686H253Q280 683 447 683T641 686H655V624H520V226L522 227Q525 228 531 229T552 240T580 261T606 298T624 354Q627 368 628 394T631 440T637 482T654 518T686 538Q693 540 754 540H794Q817 540 823 536T829 515Q829 500 824 495T811 489T796 483T782 461T775 408Q767 212 568 175Q526 168 521 168Q520 168 520 115V62H655V0H641Q614 3 447 3T253 0H239V62H374V168L364 169Q290 178 243 203Q126 261 118 409Q117 443 111 461T98 484T83 489T70 495T64 515\",120512:\"598 645T415 645T232 458Q232 385 275 239T318 26Q318 8 311 4T272 -1Q265 -1 240 -1T196 0H88V3Q86 5 70 108Q52 211 51 212V215H113V212Q123 149 132 133Q136 124 149 122T202 118Q241 118 241 119Q241 132 132 277Q64 378 64 457Q64 564 158 630T403 696Q487 696 543 685T661 638Q722 599 744 549T766 458Q766 434 761 410T749 368T729 327T709 293T684 258T663 229Q632 187 614 160T592 126L589 119Q589 118 628 118Q667 119 680 121T698 133Q702 140 706 160T714 196L717 212V215H779V212Q778 211 760 108Q744 5 742 3V0H634H562Q528 0 520 4T512 26Q512 92 555 238T598 458Q598 645 415 645\",120513:\"56 673Q56 679 65 686H892Q901 679 901 673Q901 668 714 331T521 -15Q518 -18 506 -24H452Q440 -19 436 -15Q431 -8 337 162T150 501L57 669Q57 670 56 672V673ZM528 136L758 553H297Q298 551 414 341L528 136\",120546:\"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260\",120547:\"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229\",120548:\"49 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H714Q721 676 721 669Q721 664 708 557T694 447Q692 440 674 440H662Q655 445 655 454Q655 455 658 480T661 534Q661 572 652 592Q638 619 603 626T501 634H471Q398 633 393 630Q389 628 386 622Q385 619 315 341T245 60Q245 46 333 46H345Q366 46 366 35Q366 33 363 21T358 6Q356 1 339 1Q334 1 292 1T187 2Q122 2 88 2T49 1\",120549:\"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346\",120550:\"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213\",120551:\"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8\",120552:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",120553:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM640 466Q640 523 625 565T583 628T532 658T479 668Q370 668 273 559T151 255Q150 245 150 213Q150 156 165 116T207 55T259 26T313 17Q385 17 451 63T561 184Q590 234 615 312T640 466ZM510 276Q510 278 512 288L515 298Q515 299 384 299H253L250 285Q246 271 244 268T231 265H227Q216 265 214 266T207 274Q207 278 223 345T244 416Q247 419 260 419H263Q280 419 280 408Q280 406 278 396L275 386Q275 385 406 385H537L540 399Q544 413 546 416T559 419H563Q574 419 576 418T583 410Q583 403 566 339Q549 271 544 267Q542 265 538 265H530H527Q510 265 510 276\",120554:\"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1\",120555:\"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628\",120556:\"135 2Q114 2 90 2T60 1Q35 1 35 11Q35 28 42 40Q45 46 55 46Q119 46 151 94Q153 97 325 402T498 709Q505 716 526 716Q543 716 549 710Q550 709 560 548T580 224T591 57Q594 52 595 52Q603 47 638 46H663Q670 39 670 35Q669 12 657 0H644Q613 2 530 2Q497 2 469 2T424 2T405 1Q388 1 388 10Q388 15 391 24Q392 27 393 32T395 38T397 41T401 44T406 45T415 46Q473 46 487 64L472 306Q468 365 465 426T459 518L457 550Q456 550 328 322T198 88Q196 80 196 77Q196 49 243 46Q261 46 261 35Q261 34 259 22Q256 7 254 4T240 0Q237 0 211 1T135 2\",120557:\"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629\",120558:\"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637\",120559:\"222 668Q222 670 229 677H654Q677 677 705 677T740 678Q764 678 770 676T777 667Q777 662 764 594Q761 579 757 559T751 528L749 519Q747 512 729 512H717Q710 519 710 525Q712 532 715 559T719 591Q718 595 711 595Q682 598 486 598Q252 598 246 592Q239 587 228 552L216 517Q214 512 197 512H185Q178 517 178 522Q178 524 198 591T222 668ZM227 262Q218 262 215 262T209 266L207 270L227 356Q247 435 250 439Q253 443 260 443H267H280Q287 438 287 433Q287 430 285 420T280 402L278 393Q278 392 431 392H585L590 415Q595 436 598 439T612 443H628Q635 438 635 433Q635 431 615 351T594 268Q592 262 575 262H572Q556 262 556 272Q556 280 560 293L565 313H258L252 292Q248 271 245 267T230 262H227ZM60 0Q53 4 53 11Q53 14 68 89T84 169Q88 176 98 176H104H116Q123 169 123 163Q122 160 117 127T112 88Q112 80 243 80H351H454Q554 80 574 81T597 88V89Q603 100 610 121T622 157T630 174Q633 176 646 176H658Q665 171 665 166Q665 164 643 89T618 7Q616 2 607 1T548 0H335H60\",120560:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476\",120561:\"48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H541Q621 680 709 680T812 681Q841 681 855 681T877 679T886 676T887 670Q887 663 885 656Q880 637 875 635Q871 634 860 634H854Q827 634 794 631Q780 628 775 619Q773 614 704 338T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q528 52 533 61Q536 67 572 209T642 491T678 632Q678 634 533 634H388Q387 631 316 347T245 59Q245 55 246 54T253 50T270 48T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1\",120562:\"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554\",120564:\"65 0Q58 4 58 11Q58 16 114 67Q173 119 222 164L377 304Q378 305 340 386T261 552T218 644Q217 648 219 660Q224 678 228 681Q231 683 515 683H799Q804 678 806 674Q806 667 793 559T778 448Q774 443 759 443Q747 443 743 445T739 456Q739 458 741 477T743 516Q743 552 734 574T710 609T663 627T596 635T502 637Q480 637 469 637H339Q344 627 411 486T478 341V339Q477 337 477 336L457 318Q437 300 398 265T322 196L168 57Q167 56 188 56T258 56H359Q426 56 463 58T537 69T596 97T639 146T680 225Q686 243 689 246T702 250H705Q726 250 726 239Q726 238 683 123T639 5Q637 1 610 1Q577 0 348 0H65\",120565:\"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40\",120566:\"45 535Q34 535 31 536T28 544Q28 554 39 578T70 631T126 683T206 705Q230 705 251 698T295 671T330 612T344 514Q344 477 342 473V472Q343 472 347 480T361 509T380 547Q471 704 596 704Q615 704 625 702Q659 692 679 663T700 595Q700 565 696 552T687 537T670 535Q656 535 653 536T649 543Q649 544 649 550T650 562Q650 589 629 605T575 621Q502 621 448 547T365 361Q290 70 290 60Q290 46 379 46H404Q410 40 410 39T408 19Q404 6 398 0H381Q340 2 225 2Q184 2 149 2T94 2T69 1Q61 1 58 1T53 4T51 10Q51 11 53 23Q54 25 55 30T56 36T58 40T60 43T62 44T67 46T73 46T82 46H89Q144 46 163 49T190 62L198 93Q206 124 217 169T241 262T262 350T274 404Q281 445 281 486V494Q281 621 185 621Q147 621 116 601T74 550Q71 539 66 537T45 535\",120567:\"356 624Q356 637 267 637H243Q237 642 237 645T239 664Q243 677 249 683H264Q342 681 429 681Q565 681 571 683H583Q589 677 589 674T587 656Q582 641 578 637H540Q516 637 504 637T479 633T463 630T454 623T448 613T443 597T438 576Q436 566 434 556T430 539L428 533Q442 533 472 526T543 502T613 451T642 373Q642 301 567 241T386 158L336 150Q332 150 331 146Q310 66 310 60Q310 46 399 46H424Q430 40 430 39T428 19Q424 6 418 0H401Q360 2 247 2Q207 2 173 2T119 2T95 1Q87 1 84 1T79 4T77 10Q77 11 79 23Q80 25 81 30T82 36T84 40T86 43T88 44T93 46T99 46T108 46H115Q170 46 189 49T216 62Q220 74 228 107L239 150L223 152Q139 164 82 205T24 311Q24 396 125 462Q207 517 335 533L346 578Q356 619 356 624ZM130 291Q130 203 241 188H249Q249 190 287 342L325 495H324Q313 495 291 491T229 466T168 414Q130 357 130 291ZM536 393Q536 440 507 463T418 496L341 187L351 189Q443 201 487 255Q536 314 536 393\",120568:\"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0\",120569:\"216 151Q48 174 48 329Q48 361 56 403T65 458Q65 482 58 494T43 507T28 510T21 520Q21 528 23 534T29 544L32 546H72H94Q110 546 119 544T139 536T154 514T159 476V465Q159 445 149 399T138 314Q142 229 197 201Q223 187 226 190L233 218Q240 246 253 300T280 407Q333 619 333 625Q333 637 244 637H220Q214 642 214 645T216 664Q220 677 226 683H241Q321 681 405 681Q543 681 549 683H560Q566 677 566 674T564 656Q559 641 555 637H517Q448 636 436 628Q429 623 423 600T373 404L320 192Q370 201 419 248Q451 281 469 317T500 400T518 457Q529 486 542 505T569 532T594 543T621 546H644H669Q692 546 692 536Q691 509 676 509Q623 509 593 399Q587 377 579 355T552 301T509 244T446 195T359 159Q324 151 314 151Q311 151 310 150T298 106T287 60Q287 46 376 46H401Q407 40 407 39T405 19Q401 6 395 0H378Q337 2 224 2Q184 2 150 2T96 2T72 1Q64 1 61 1T56 4T54 10Q54 11 56 23Q57 25 58 30T59 36T61 40T63 43T65 44T70 46T76 46T85 46H92Q147 46 166 49T193 62L204 106Q216 149 216 151\",120570:\"125 84Q127 78 194 76H243V78Q243 122 208 215T165 350Q164 359 162 389Q162 522 272 610Q328 656 396 680T525 704Q628 704 698 661Q734 637 755 601T781 544T786 504Q786 439 747 374T635 226T537 109Q518 81 518 77Q537 76 557 76Q608 76 620 78T640 92Q646 100 656 119T673 155T683 172Q690 173 698 173Q718 173 718 162Q718 161 681 82T642 2Q639 0 550 0H461Q455 5 455 9T458 28Q472 78 510 149T584 276T648 402T677 525Q677 594 636 631T530 668Q476 668 423 641T335 568Q284 499 271 400Q270 388 270 348Q270 298 277 228T285 115Q285 82 280 49T271 6Q269 1 258 1T175 0H87Q83 3 80 7V18Q80 22 82 98Q84 156 85 163T91 172Q94 173 104 173T119 172Q124 169 124 126Q125 104 125 84\",120572:\"34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26\",120573:\"29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431\",120574:\"31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249\",120575:\"195 609Q195 656 227 686T302 717Q319 716 351 709T407 697T433 690Q451 682 451 662Q451 644 438 628T403 612Q382 612 348 641T288 671T249 657T235 628Q235 584 334 463Q401 379 401 292Q401 169 340 80T205 -10H198Q127 -10 83 36T36 153Q36 286 151 382Q191 413 252 434Q252 435 245 449T230 481T214 521T201 566T195 609ZM112 130Q112 83 136 55T204 27Q233 27 256 51T291 111T309 178T316 232Q316 267 309 298T295 344T269 400L259 396Q215 381 183 342T137 256T118 179T112 130\",120576:\"190 -22Q124 -22 76 11T27 107Q27 174 97 232L107 239L99 248Q76 273 76 304Q76 364 144 408T290 452H302Q360 452 405 421Q428 405 428 392Q428 381 417 369T391 356Q382 356 371 365T338 383T283 392Q217 392 167 368T116 308Q116 289 133 272Q142 263 145 262T157 264Q188 278 238 278H243Q308 278 308 247Q308 206 223 206Q177 206 142 219L132 212Q68 169 68 112Q68 39 201 39Q253 39 286 49T328 72T345 94T362 105Q376 103 376 88Q376 79 365 62T334 26T275 -8T190 -22\",120577:\"296 643Q298 704 324 704Q342 704 342 687Q342 682 339 664T336 633Q336 623 337 618T338 611Q339 612 341 612Q343 614 354 616T374 618L384 619H394Q471 619 471 586Q467 548 386 546H372Q338 546 320 564L311 558Q235 506 175 398T114 190Q114 171 116 155T125 127T137 104T153 86T171 72T192 61T213 53T235 46T256 39L322 16Q389 -10 389 -80Q389 -119 364 -154T300 -202Q292 -204 274 -204Q247 -204 225 -196Q210 -192 193 -182T172 -167Q167 -159 173 -148Q180 -139 191 -139Q195 -139 221 -153T283 -168Q298 -166 310 -152T322 -117Q322 -91 302 -75T250 -51T183 -29T116 4T65 62T44 160Q44 287 121 410T293 590L302 595Q296 613 296 643\",120578:\"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287\",120579:\"35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132\",120580:\"139 -10Q111 -10 92 0T64 25T52 52T48 74Q48 89 55 109T85 199T135 375L137 384Q139 394 140 397T145 409T151 422T160 431T173 439T190 442Q202 442 213 435T225 410Q225 404 214 358T181 238T137 107Q126 74 126 54Q126 43 126 39T130 31T142 27H147Q206 27 255 78Q272 98 281 114T290 138T295 149T313 153Q321 153 324 153T329 152T332 149T332 143Q332 106 276 48T145 -10H139\",120581:\"83 -11Q70 -11 62 -4T51 8T49 17Q49 30 96 217T147 414Q160 442 193 442Q205 441 213 435T223 422T225 412Q225 401 208 337L192 270Q193 269 208 277T235 292Q252 304 306 349T396 412T467 431Q489 431 500 420T512 391Q512 366 494 347T449 327Q430 327 418 338T405 368Q405 370 407 380L397 375Q368 360 315 315L253 266L240 257H245Q262 257 300 251T366 230Q422 203 422 150Q422 140 417 114T411 67Q411 26 437 26Q484 26 513 137Q516 149 519 151T535 153Q554 153 554 144Q554 121 527 64T457 -7Q447 -10 431 -10Q386 -10 360 17T333 90Q333 108 336 122T339 146Q339 170 320 186T271 209T222 218T185 221H180L155 122Q129 22 126 16Q113 -11 83 -11\",120582:\"166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673\",120583:\"58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216\",120584:\"74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431\",120585:\"268 632Q268 704 296 704Q314 704 314 687Q314 682 311 664T308 635T309 620V616H315Q342 619 360 619Q443 619 443 586Q439 548 358 546H344Q326 546 317 549T290 566Q257 550 226 505T195 405Q195 381 201 364T211 342T218 337Q266 347 298 347Q375 347 375 314Q374 297 359 288T327 277T280 275Q234 275 208 283L195 286Q149 260 119 214T88 130Q88 116 90 108Q101 79 129 63T229 20Q238 17 243 15Q337 -21 354 -33Q383 -53 383 -94Q383 -137 351 -171T273 -205Q240 -205 202 -190T158 -167Q156 -163 156 -159Q156 -151 161 -146T176 -140Q182 -140 189 -143Q232 -168 274 -168Q286 -168 292 -165Q313 -151 313 -129Q313 -112 301 -104T232 -75Q214 -68 204 -64Q198 -62 171 -52T136 -38T107 -24T78 -8T56 12T36 37T26 66T21 103Q21 149 55 206T145 301L154 307L148 313Q141 319 136 323T124 338T111 358T103 382T99 413Q99 471 143 524T259 602L271 607Q268 618 268 632\",120586:\"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120\",120587:\"132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11\",120588:\"58 -216Q25 -216 23 -186Q23 -176 73 26T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 219 486 165T425 74T345 13T266 -10H255H248Q197 -10 165 35L160 41L133 -71Q108 -168 104 -181T92 -202Q76 -216 58 -216ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q217 269 193 170L176 102Q193 26 260 26Q298 26 334 62Q367 92 389 158T418 266T424 322\",120589:\"31 207Q31 306 115 374T302 442Q341 442 373 430T405 400Q405 392 399 383T379 374Q373 375 348 390T296 405Q222 405 160 357T98 249Q98 232 103 218T112 195T132 175T154 159T186 141T219 122Q234 114 255 102T286 85T299 78L302 74Q306 71 308 69T315 61T322 51T328 40T332 25T334 8Q334 -31 305 -69T224 -107Q194 -107 163 -92Q156 -88 156 -80Q156 -73 162 -67T178 -61Q186 -61 190 -63Q209 -71 224 -71Q244 -71 253 -59T263 -30Q263 -25 263 -21T260 -12T255 -4T248 3T239 9T227 17T213 25T195 34T174 46Q170 48 150 58T122 74T97 90T70 112T51 137T36 169T31 207\",120590:\"184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278\",120591:\"39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284\",120592:\"413 384Q413 406 432 424T473 443Q492 443 507 425T523 367Q523 334 508 270T468 153Q424 63 373 27T282 -10H268Q220 -10 186 2T135 36T111 78T104 121Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Q200 441 225 419T250 355Q248 336 247 334Q247 331 232 291T201 199T185 118Q185 68 211 47T275 26Q317 26 355 57T416 132T452 216T465 277Q465 301 457 318T439 343T421 361T413 384\",120593:\"92 210Q92 176 106 149T142 108T185 85T220 72L235 70L237 71L250 112Q268 170 283 211T322 299T370 375T429 423T502 442Q547 442 582 410T618 302Q618 224 575 152T457 35T299 -10Q273 -10 273 -12L266 -48Q260 -83 252 -125T241 -179Q236 -203 215 -212Q204 -218 190 -218Q159 -215 159 -185Q159 -175 214 -2L209 0Q204 2 195 5T173 14T147 28T120 46T94 71T71 103T56 142T50 190Q50 238 76 311T149 431H162Q183 431 183 423Q183 417 175 409Q134 361 114 300T92 210ZM574 278Q574 320 550 344T486 369Q437 369 394 329T323 218Q309 184 295 109L286 64Q304 62 306 62Q423 62 498 131T574 278\",120594:\"576 -125Q576 -147 547 -175T487 -204H476Q394 -204 363 -157Q334 -114 293 26L284 59Q283 58 248 19T170 -66T92 -151T53 -191Q49 -194 43 -194Q36 -194 31 -189T25 -177T38 -154T151 -30L272 102L265 131Q189 405 135 405Q104 405 87 358Q86 351 68 351Q48 351 48 361Q48 369 56 386T89 423T148 442Q224 442 258 400Q276 375 297 320T330 222L341 180Q344 180 455 303T573 429Q579 431 582 431Q600 431 600 414Q600 407 587 392T477 270Q356 138 353 134L362 102Q392 -10 428 -89T490 -168Q504 -168 517 -156T536 -126Q539 -116 543 -115T557 -114T571 -115Q576 -118 576 -125\",120595:\"161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441\",120596:\"495 384Q495 406 514 424T555 443Q574 443 589 425T604 364Q604 334 592 278T555 155T483 38T377 -11Q297 -11 267 66Q266 68 260 61Q201 -11 125 -11Q15 -11 15 139Q15 230 56 325T123 434Q135 441 147 436Q160 429 160 418Q160 406 140 379T94 306T62 208Q61 202 61 187Q61 124 85 100T143 76Q201 76 245 129L253 137V156Q258 297 317 297Q348 297 348 261Q348 243 338 213T318 158L308 135Q309 133 310 129T318 115T334 97T358 83T393 76Q456 76 501 148T546 274Q546 305 533 325T508 357T495 384\",120597:\"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306\",120598:\"227 -11Q149 -11 95 41T40 174Q40 262 87 322Q121 367 173 396T287 430Q289 431 329 431H367Q382 426 382 411Q382 385 341 385H325H312Q191 385 154 277L150 265H327Q340 256 340 246Q340 228 320 219H138V217Q128 187 128 143Q128 77 160 52T231 26Q258 26 284 36T326 57T343 68Q350 68 354 58T358 39Q358 36 357 35Q354 31 337 21T289 0T227 -11\",120599:\"537 500Q537 474 533 439T524 383L521 362Q558 355 561 351Q563 349 563 345Q563 321 552 318Q542 318 521 323L510 326Q496 261 459 187T362 51T241 -11Q100 -11 100 105Q100 139 127 242T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Q21 291 27 313T47 368T79 418Q103 442 134 442Q169 442 201 419T233 344Q232 330 206 228T180 98Q180 26 247 26Q292 26 332 90T404 260L427 349Q422 349 398 359T339 392T289 440Q265 476 265 520Q265 590 312 647T417 705Q463 705 491 670T528 592T537 500ZM464 564Q464 668 413 668Q373 668 339 622T304 522Q304 494 317 470T349 431T388 406T421 391T435 387H436L443 415Q450 443 457 485T464 564\",120600:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",120601:\"409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282\",120602:\"205 -174Q136 -174 102 -153T67 -76Q67 -25 91 85T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 169 431 80T253 -10Q226 -10 204 -2T169 19T146 44T132 64L128 73Q128 72 124 53T116 5T112 -44Q112 -68 117 -78T150 -95T236 -102Q327 -102 356 -111T386 -154Q386 -166 384 -178Q381 -190 378 -192T361 -194H348Q342 -188 342 -179Q342 -169 315 -169Q294 -169 264 -171T205 -174ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q221 276 204 217Q188 152 188 116Q188 68 210 47T259 26Q297 26 334 62Q367 92 389 158T418 266T424 322\",120603:\"206 -10Q158 -10 136 24T114 110Q114 233 199 349L205 358H184Q144 358 121 347Q108 340 95 330T75 312T61 295T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 532 431Q799 431 803 430Q823 423 823 402Q823 377 801 364Q790 358 766 358Q748 358 748 357Q748 355 749 348T752 327T754 297Q754 258 738 207T693 107T618 24T520 -10Q488 -10 466 2T432 36T416 77T411 120Q411 128 410 128T404 122Q373 71 323 31T206 -10ZM714 296Q714 316 707 358H251Q250 357 244 348T230 328T212 301T193 267T176 229T164 187T159 144Q159 62 222 62Q290 62 349 127T432 285Q433 286 434 288T435 291T437 293T440 294T444 294T452 294H466Q472 288 472 286Q472 285 464 244T456 170Q456 62 534 62Q604 62 659 139T714 296\",120604:\"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372\",120605:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240\",120606:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H763Q769 677 772 673T776 666L777 664Q777 659 766 549T751 433Q745 424 723 424Q704 424 699 427T693 441Q693 444 695 467T697 513Q697 543 689 563T670 594T636 610T592 617T534 618H516H456L455 614Q455 613 387 339T317 64Q317 62 375 62H411Q430 62 438 59T447 44Q444 7 430 2Q426 0 416 0Q409 0 359 1T231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120607:\"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342\",120608:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120609:\"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430\",120610:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",120611:\"358 -17Q218 -17 136 49T54 243Q54 298 70 356T123 474T211 582T338 663T504 702H527Q578 702 590 701Q709 688 776 622T844 441Q844 379 825 315T765 192T668 86T532 11T358 -17ZM700 474Q700 525 685 561T642 616T587 643T528 652Q390 652 301 534Q252 472 225 373T198 210Q198 160 214 125T256 71T311 44T372 36Q484 36 571 119Q639 189 669 299T700 474ZM366 428Q366 425 364 419T362 411H466L570 412L573 422Q576 437 581 441T604 445Q620 445 623 444Q636 440 636 429Q636 423 616 340T593 253Q586 243 572 243H566Q545 243 539 249Q536 251 535 253T534 258T534 263T535 270T537 277H329L326 266Q323 251 318 247T295 243Q279 243 276 244Q263 248 263 259Q263 265 283 346Q288 366 295 394Q304 431 308 438T326 445H334H338Q366 445 366 428\",120612:\"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624\",120613:\"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0\",120614:\"439 0Q425 6 425 18Q425 35 436 57Q442 62 485 62Q525 62 525 64L478 483Q478 484 465 463T422 394T350 277Q222 69 222 68Q223 67 224 67Q229 64 271 62Q290 62 297 59T305 45Q305 38 302 28Q297 9 293 5T274 0Q270 0 238 1T159 2Q133 2 105 2T72 1Q56 1 52 3T44 15Q44 19 48 35Q53 55 58 58T89 62Q142 64 151 73Q154 76 345 387T538 699Q550 711 570 711H580H592Q613 711 618 695Q619 692 654 379T690 63Q690 62 726 62H746Q776 62 776 44Q773 7 759 2Q755 0 747 0Q743 0 707 1T600 2Q502 2 476 1L439 0\",120615:\"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",120616:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",120617:\"206 466Q175 466 175 484Q175 487 201 574T230 666Q235 673 241 675H547Q853 675 857 673Q867 668 867 657Q867 655 850 569T832 478Q827 466 808 466H802H795Q773 466 771 481Q771 486 775 508T779 541V549H774Q755 552 505 552Q281 551 267 548Q262 548 255 533T242 496T233 472Q228 466 206 466ZM259 255H252Q231 255 228 270Q228 275 248 355T270 439Q277 448 288 448H298Q321 448 326 440Q331 434 326 414Q326 413 486 413H647L650 424Q654 441 658 444T678 448H683H693Q702 448 705 446T714 432L694 348Q674 267 669 261Q664 255 652 255H643Q622 255 617 261Q613 265 613 272T613 283T616 289Q616 290 456 290H295L294 285Q293 280 292 275T288 265T281 257Q278 255 259 255ZM150 131Q150 124 281 123Q346 123 390 123Q640 123 664 126Q668 127 675 127Q686 131 704 198Q708 213 713 216T733 220H738Q755 220 759 218Q768 213 768 203Q768 198 741 105T710 8Q708 4 699 0H388Q77 0 73 2Q62 7 62 18Q62 27 81 115Q99 206 102 212Q106 220 120 220H129Q140 220 145 220T155 215T160 202Q160 196 159 192Q150 145 150 131\",120618:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489\",120619:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H1011Q1022 675 1026 665Q1022 626 1009 620Q1005 618 956 618H907L906 614Q906 613 838 339T768 64Q768 62 812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66Q614 67 682 341T752 616Q752 618 604 618H456L455 614Q455 613 387 339T317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120620:\"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558\",120622:\"847 430Q828 430 823 434T817 450Q817 454 817 466T818 487Q818 526 809 551T784 591T737 613T675 622T590 624H528H430L513 487Q594 351 596 345Q596 335 590 330Q583 323 418 204L250 81L363 80Q533 80 591 89T694 142Q739 185 765 252Q772 268 776 271T799 274Q816 274 820 272Q832 266 830 254Q829 250 784 130T736 7Q732 3 725 0H405Q84 0 80 2Q69 7 69 18Q69 26 75 32Q76 32 98 48T168 100T255 164L432 293Q429 300 329 465T225 637Q223 675 245 686H888Q900 680 902 671Q902 667 890 556T876 441Q871 430 847 430\",120623:\"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498\",120624:\"32 544Q32 586 91 644T229 703Q277 703 311 683T363 628T389 560T397 491V478L404 491Q455 589 526 646T677 703Q730 703 766 671T802 584Q802 551 793 541T766 531H757L736 532L732 535L729 539V549Q731 569 715 575T658 581H650Q545 581 477 443Q453 392 443 351Q441 345 424 273T389 133T371 64Q371 62 428 62H461Q483 62 492 59T501 44Q498 10 485 2L480 0L431 1Q401 2 278 2T127 1L85 0Q71 5 71 17Q71 24 74 33Q77 46 78 49T84 57T95 61T118 62H154H216Q232 126 249 193T273 287T287 345T296 388T299 416T300 452Q294 581 198 581Q154 581 132 575T106 562T99 546T86 533Q82 531 60 531L39 532Q32 537 32 544\",120625:\"323 624H293Q267 624 261 626T251 639Q255 678 268 684Q272 686 293 686Q348 684 475 684Q557 684 600 685T647 686H648Q671 686 671 668Q667 632 655 626Q650 624 588 624H525L500 520Q500 519 520 518T579 507T656 480Q737 440 737 372Q737 294 648 237Q562 180 426 169L412 168L399 118Q386 66 386 65L385 62H443H479Q498 62 506 59T515 44Q511 8 499 2L494 0L447 1Q417 2 298 2Q212 2 167 1T118 0Q100 0 95 15Q99 54 112 60Q116 62 179 62H241Q242 64 254 114T266 167Q266 168 262 168Q256 168 237 170T180 181T110 205T54 249T29 316Q29 391 112 446T327 516Q345 518 349 518Q351 518 353 518L355 519Q356 520 368 570T381 623Q381 624 323 624ZM342 466Q341 467 339 467Q320 467 283 455T225 420Q181 361 181 296Q181 273 193 257T222 233T254 222T277 219L280 220Q281 220 311 342T342 466ZM583 389Q583 409 576 423T557 444T533 456T509 463T492 467H486L455 343Q444 300 437 271T428 231T426 219Q430 219 445 222T483 232T521 250Q551 269 567 310T583 389\",120626:\"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686\",120627:\"205 471Q205 445 196 403T186 333Q186 303 194 281T218 248T240 233T262 224L361 623Q361 624 303 624Q296 624 284 624T266 623Q232 623 232 641Q232 648 235 657Q240 678 244 682T268 686H273Q329 684 457 684Q502 684 540 684T599 685T626 686H628Q651 686 651 668Q649 633 631 624H505L407 227Q410 228 416 229T439 239T472 259T507 294T539 345Q549 365 563 416T597 498T649 538Q657 540 717 540Q725 540 737 540T755 541Q790 541 790 524Q790 512 784 497Q780 491 767 490T742 477Q736 471 731 463T722 449T715 433T710 419T705 403T701 389Q686 340 658 302T599 240T530 201T463 179T404 169L391 168L379 116Q365 67 365 63Q365 62 422 62H455Q477 62 486 59T495 44Q492 10 479 2L474 0L427 1Q397 2 278 2T131 1L90 0Q76 5 76 17Q76 24 79 33Q82 46 83 49T89 57T100 61T123 62H159H221Q247 162 247 168H244Q241 169 239 169Q202 176 178 182T123 207T74 252Q46 291 46 351Q46 375 52 404T59 454Q59 489 40 489Q32 489 27 494T22 507Q22 535 37 538Q40 540 99 540H128Q168 540 186 528T205 471\",120628:\"162 119Q181 115 235 115L273 116Q273 133 231 222T180 345Q173 368 173 391V406V414Q173 477 214 540Q255 600 315 635Q353 661 423 682T585 703Q656 703 711 690T799 656T851 608T879 555T886 503Q886 449 860 401Q840 359 810 322T725 230T643 146Q619 117 619 116T650 115Q707 115 722 120Q730 123 750 165T775 210Q779 212 796 212Q828 212 828 196Q828 191 807 144T764 52L743 7Q740 4 740 4T733 2T717 0T686 0H632H573Q535 0 526 3T517 17Q517 44 544 103T617 243T671 341Q729 454 729 535Q729 599 686 625T583 652Q549 652 517 645T450 616T388 561T344 470T327 340Q327 304 331 237T336 135Q336 93 330 50T313 2Q308 0 208 0H142Q107 0 100 4T93 25Q93 28 93 41T95 77T96 118L100 199Q105 208 109 210T131 212Q147 212 151 210T161 199V160Q161 131 162 125V119\",120630:\"39 166Q39 213 59 261T117 353T219 424T362 452Q420 452 466 433T536 384T573 325T586 269V265Q593 272 609 308T636 381Q640 397 644 399T669 402H680Q700 402 700 388Q700 379 691 351T659 276T604 188L593 173L595 153Q600 79 612 43H618Q634 45 642 51T653 64T658 71Q661 73 684 73Q712 73 712 59Q712 39 685 16T603 -7Q588 -7 575 -5T551 2T532 12T516 24T503 37T494 49T487 60T481 69L469 61Q362 -8 251 -8Q159 -8 99 36T39 166ZM260 43Q310 43 361 63T438 101T465 124Q458 240 453 277Q435 401 354 401Q291 401 245 355Q230 337 217 313Q201 279 186 216T170 126Q170 72 208 54Q230 43 260 43\",120631:\"59 -194H49Q31 -194 28 -182Q28 -178 107 139T192 473Q212 533 248 580T324 652T395 689T450 701H461Q514 701 551 688T605 652T630 607T637 561Q637 546 634 526T611 465T556 393Q572 382 590 347T608 262Q608 146 522 69T299 -8Q279 -8 261 -6T228 2T204 13T183 26T169 37T157 48L150 56L120 -64Q113 -90 104 -128Q93 -175 89 -184T73 -194H59ZM531 592Q531 651 463 651Q399 651 341 600T253 466Q250 458 217 327T182 185Q180 176 180 159Q180 108 212 76T301 44Q330 44 354 51T393 65T423 91T444 118T459 151T468 179T475 206Q490 264 491 296Q491 313 489 326T484 345L482 350Q481 350 477 348T464 344T444 340T413 335T372 333T334 334T301 340T274 355T265 380Q265 444 397 444Q425 444 445 441T476 436L485 433Q489 433 499 458Q509 482 520 527T531 592ZM424 390Q424 393 389 393Q383 393 374 393T362 392Q348 392 333 388Q345 384 379 384Q424 384 424 390\",120632:\"5 269Q5 285 19 312T57 368T124 421T215 451H241Q274 451 303 439T353 406T389 361T416 311T432 266T442 232L444 220L446 216L450 226Q473 278 513 357T561 441Q566 444 584 444H594Q617 444 617 430Q617 426 596 389T536 273T462 110L452 84L451 70Q447 12 427 -76T388 -192Q375 -211 355 -211Q339 -211 332 -198T325 -171Q325 -114 386 64L393 84V98Q393 181 371 241Q360 280 319 303T210 327Q158 327 126 317T84 296T68 272T59 258Q55 256 36 256Q23 256 18 256T9 260T5 269\",120633:\"216 610Q216 640 229 664T262 700T299 719T327 725Q330 725 406 709T487 690Q513 681 513 651Q513 627 494 607T450 587Q417 587 378 631Q346 663 314 663Q286 663 272 639Q271 637 271 634Q271 609 344 536L397 484Q438 448 458 410T478 313Q478 234 443 147T338 18Q298 -8 249 -8Q214 -8 180 0T113 26T60 81T39 168Q39 200 50 237T87 316T160 391T272 442L260 465Q216 553 216 610ZM348 235Q348 274 336 313T310 372L298 392Q295 391 290 390T269 380T241 359T212 323T185 267Q157 168 157 130Q157 83 186 63T255 43Q280 43 300 67Q317 89 332 138T348 235\",120634:\"224 -17Q126 -17 81 22T36 112Q36 178 84 226L93 236L88 246Q79 264 79 289Q79 341 124 388Q201 461 333 461Q402 461 455 425Q480 409 481 390Q481 365 464 350T428 334Q415 334 387 352T313 370Q141 370 141 293Q141 275 146 270Q147 270 148 270T155 272Q202 291 263 291H270Q349 291 349 244Q349 195 281 183Q274 182 239 182Q201 182 184 185T137 200Q123 188 112 168T100 129T112 98T148 81T189 75T237 74H243H251Q288 74 310 75T359 86T398 112Q405 124 417 124Q426 124 432 117T439 100Q439 88 427 70T390 32T322 -3T224 -17ZM286 238Q286 240 253 240Q245 240 234 239T216 237T209 235Q209 232 250 232Q286 232 286 238\",120635:\"361 711Q373 711 381 703T389 683Q389 681 388 676T383 656T376 618V612H379Q385 618 429 618Q521 618 521 572Q521 551 506 534Q483 510 415 507Q385 507 371 511T336 536L326 528Q254 472 204 381T154 209Q154 190 157 177Q159 165 162 154T170 135T182 119T195 106T212 95T229 86T249 78T269 72T290 66T311 60Q385 37 388 36Q437 14 454 -36Q456 -46 456 -64Q456 -83 455 -90Q445 -132 413 -167T333 -202Q300 -202 257 -191T206 -169Q203 -164 203 -158Q203 -148 210 -140T231 -130Q239 -130 263 -139T326 -151H329Q337 -151 342 -150T352 -143T357 -123Q356 -117 355 -113T350 -104T344 -96T335 -90T324 -85T310 -80T294 -74T275 -68T254 -62Q253 -62 231 -56T205 -48T179 -39T150 -26T125 -10T100 11T80 37T62 70T53 109T48 157Q48 281 123 396T317 586V612Q319 638 320 649T325 678T338 703T361 711ZM454 564Q445 567 424 567Q407 567 398 565T387 563Q387 558 411 558Q434 558 450 562L454 564\",120636:\"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q202 452 233 435Q267 419 284 384L294 392Q304 401 316 410T348 429T388 445Q410 451 445 451H453Q468 451 482 450T519 443T558 425T587 391T600 337V327Q600 311 538 64Q484 -158 478 -168Q457 -211 409 -211Q386 -211 372 -197T357 -161Q357 -158 415 80Q476 330 477 348Q477 366 473 377T461 393T448 399T432 400H427Q379 400 335 363Q300 332 280 298Q277 293 246 170T213 40Q205 22 186 7T142 -8T103 7T89 39Q89 49 106 117T142 260T164 351Q166 363 166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296\",120637:\"213 -8Q130 -8 85 50T40 200V207Q40 303 83 428Q122 535 189 608Q279 702 381 702Q410 702 437 693T492 661T537 593T554 486Q554 428 539 362T495 230T425 111T330 25T213 -8ZM433 562Q433 600 419 625T377 651Q363 651 348 644T311 619T268 557T229 453Q225 441 217 411T208 378H401Q433 500 433 562ZM161 140Q161 43 217 43Q249 43 280 74Q310 103 332 150T378 287Q385 313 385 315Q385 316 289 316H192Q191 308 183 275T169 205T161 140\",120638:\"161 -8Q111 -8 75 16T38 85Q38 95 48 121T80 214T123 368L124 374Q126 381 127 386T132 399T139 414T149 428T162 440T180 448T203 452Q226 452 241 439T257 404Q257 386 230 290T171 111Q157 73 157 57Q157 43 166 43Q209 43 258 69T322 144Q326 157 330 159T348 162H355H366Q386 162 386 148Q386 143 383 132T367 100T335 61Q301 27 253 10T161 -8\",120639:\"258 405Q258 394 251 364T237 308T230 281T238 284T270 306T330 349Q365 377 389 394T450 427T519 444Q545 444 559 430T574 391Q574 360 551 336T491 312Q469 312 454 326T439 364Q439 372 438 372Q433 372 395 344T320 289T283 260H285Q287 260 290 260T297 259Q495 248 495 146Q495 132 491 110T486 74Q486 43 505 43Q520 43 531 53Q559 72 578 141Q582 157 586 159T611 162H622Q642 162 642 148T627 100T578 29T504 -7H495Q435 -7 399 22T363 96Q363 111 366 122T369 142Q369 155 364 165T347 182T326 193T298 200T269 204T238 207T212 210L211 206L190 123L169 40Q161 22 142 7T98 -8T59 7T45 39Q45 48 67 139T112 317L134 404Q142 424 161 438T204 452Q226 452 242 440T258 405\",120640:\"95 -13Q70 -13 55 4T40 41Q40 65 61 88Q65 92 210 207T357 322L235 602Q217 640 185 643Q182 643 178 644T173 645Q161 651 161 666Q161 677 167 684T181 692Q189 694 212 694Q335 694 358 660Q362 653 500 340T647 18Q652 10 652 6Q652 -8 622 -8H589H538L526 -5Q506 1 500 8Q494 16 444 128Q442 133 440 138L387 259L265 134Q156 20 137 4T95 -13\",120641:\"294 -8Q265 -8 244 -5T213 1T201 4Q200 4 192 -32T172 -111T155 -168Q134 -211 86 -211Q62 -211 48 -196T34 -158Q37 -144 103 123T174 404Q182 424 201 438T244 452Q271 452 284 436T298 404Q298 392 267 269T235 114Q235 43 305 43Q342 43 375 68T418 110Q420 112 455 253T492 397Q514 444 562 444Q587 444 601 429T615 397Q615 387 599 320T563 178T542 93Q540 81 540 72Q540 42 558 42Q580 42 596 75Q606 94 616 134Q621 155 624 158T646 162H651H662Q682 162 682 148Q681 142 679 132T665 94T641 47T602 9T548 -8Q523 -8 502 -3T468 11T446 27T432 40L429 46Q367 -8 294 -8\",120642:\"88 382Q70 382 65 385T59 402T64 427T78 443Q79 444 157 448T247 452Q256 452 261 448T266 440L267 437Q267 432 223 252L177 71L192 77Q293 117 371 199T480 388Q489 424 511 438T556 452Q579 452 593 438T608 402Q608 378 593 340T540 251T446 152T299 62T96 -1Q91 -2 78 -2Q38 -2 38 15Q38 22 82 198L127 379Q124 382 88 382\",120643:\"287 648Q291 671 293 680T305 700T329 711Q339 711 347 705T356 687Q356 680 351 653T345 619Q345 615 346 615Q358 618 398 618Q490 618 490 572Q490 553 476 536T434 512Q411 508 378 508H366Q332 508 306 534L298 525Q271 496 254 456T237 375Q237 336 244 336Q272 346 319 346H325Q354 346 372 344T406 331T422 300Q422 252 350 238Q332 236 303 236Q286 236 269 238T240 242T218 247T202 252L196 254Q191 254 174 237T141 191T124 139Q124 108 151 92T267 46Q285 40 295 37Q308 33 332 25T366 13T392 3T415 -8T432 -20T445 -36T451 -55T454 -80Q454 -118 427 -153T358 -199Q349 -201 327 -201Q313 -201 298 -200T271 -196T246 -191T226 -185T210 -180T200 -176L196 -174Q187 -170 187 -158T196 -138T216 -130Q217 -130 254 -140T329 -151Q349 -151 349 -135Q349 -127 340 -122T293 -104Q260 -93 238 -85Q130 -48 115 -41Q71 -19 47 15T23 88Q23 126 48 179T130 277L144 288L136 297Q99 336 99 390Q99 456 148 514T285 602V619Q285 624 286 635T287 648ZM355 563Q362 560 376 558Q424 558 423 564Q405 567 390 567Q369 567 355 563ZM279 292Q297 287 315 287Q355 287 355 293Q355 296 321 296Q316 296 308 296L301 295Q295 295 289 294L279 292\",120644:\"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400\",120645:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 418 444Q591 444 617 444T652 439Q674 426 674 400Q674 378 661 360T625 335Q621 334 549 333H479L477 321Q476 312 476 279Q476 219 491 174T521 104T536 65Q536 38 511 15T457 -8Q403 -8 386 94Q384 110 384 139Q384 181 391 229T406 304L413 331Q413 333 365 333H316L315 329Q315 328 312 314T301 272T288 220Q274 167 258 103Q244 49 240 38T228 18Q225 16 224 14Q200 -8 172 -8Q146 -8 132 7T118 44Q118 54 121 61Q122 65 142 102T190 195T235 293Q250 329 250 333Q177 333 166 332Q115 328 88 301L77 290L55 289\",120646:\"307 -8Q277 -8 251 0T215 14L205 20Q203 18 193 -25T171 -114T155 -168Q134 -211 87 -211Q64 -211 49 -198T34 -162Q34 -158 137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 285Q603 172 520 82T307 -8ZM474 343Q474 364 458 382T409 400H406Q339 400 299 341Q281 313 264 257Q261 248 242 170T222 89Q222 84 230 74T260 54T308 43Q334 43 365 57T417 110Q437 145 456 228Q474 298 474 332V343\",120647:\"33 209Q33 277 80 334T195 421T330 451H344Q410 451 439 429Q457 417 457 402Q457 386 445 375T420 363Q415 363 406 368T383 383T354 398Q347 400 330 400Q256 400 196 361T135 265V257Q135 242 147 225T174 199L358 107Q400 77 400 28T362 -63T271 -105Q254 -105 229 -99T195 -86Q188 -82 188 -71Q188 -56 197 -50T216 -44Q225 -44 237 -48T270 -53H282Q293 -44 293 -31Q293 -19 283 -10Q278 -4 200 33T115 76Q77 98 55 133T33 209\",120648:\"35 151Q35 190 51 236T99 327T184 404T306 443Q307 443 316 443T342 443T378 444T425 444T476 444Q606 444 626 444T655 439Q677 426 677 400Q677 358 639 340Q625 333 563 333Q510 333 510 331Q518 319 518 272Q518 155 437 74T226 -8Q123 -8 79 41T35 151ZM396 278Q396 314 375 323T305 332Q249 332 222 310T180 243Q171 219 162 178T153 116V110Q153 43 234 43Q347 43 382 199Q383 203 383 204Q396 255 396 278\",120649:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 386 444Q571 444 577 442Q588 441 599 432T610 402Q610 359 572 340Q561 335 547 334T452 333H353V331Q352 330 342 261T320 119T306 40Q300 18 281 3Q257 -13 233 -13Q210 -13 196 0T181 35Q181 44 182 48Q183 53 229 187T279 331Q279 333 228 333H209Q163 333 136 328T88 301L77 290L55 289\",120650:\"189 388Q189 396 187 398T176 401Q144 399 122 369T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T188 452Q232 452 270 430T308 361Q308 345 275 258T241 123Q241 44 336 44H344Q380 44 415 73T474 140T511 214T526 267Q526 280 513 292Q505 301 486 311T456 333T444 367Q444 400 471 426T529 453Q555 453 579 431T604 358Q604 327 592 271T557 172Q550 157 541 142T510 97T464 47T404 9T328 -8Q264 -8 219 5T154 41T125 85T117 131Q117 182 153 277T189 388\",120651:\"238 4Q230 5 218 8T174 26T118 58T73 112T53 190Q53 219 60 246Q77 313 103 362T143 426T163 443Q165 444 186 444Q217 444 217 432Q217 425 188 392Q157 351 137 291T116 206Q116 127 263 109L276 107L288 139Q347 304 414 378T566 452Q621 449 662 412T703 286Q698 167 598 82T357 -8H332V-11Q332 -12 327 -46T317 -116T310 -157Q306 -180 286 -198T234 -216Q211 -216 197 -203T183 -168Q183 -160 184 -155Q184 -152 198 -112T225 -34T238 4ZM637 260Q637 303 607 322T541 341Q502 341 466 319T405 264Q368 218 356 159Q348 111 348 104Q348 103 361 103Q502 103 569 152T637 260\",120652:\"58 -194Q32 -194 32 -164Q32 -153 46 -139L175 -13Q296 104 296 106Q271 232 226 308Q165 401 141 401Q128 401 117 390T100 365Q94 350 91 349T69 346H45Q35 348 35 359Q35 380 62 411T133 450Q143 452 165 452Q286 452 329 402Q347 379 366 333T394 254T404 215Q404 213 405 213Q405 212 420 227T463 268T520 324Q637 437 640 438Q647 444 661 444Q667 444 676 438T685 419Q685 405 670 389T549 271L420 145Q433 85 444 53Q466 -25 509 -88T575 -151Q590 -151 600 -140T617 -114T626 -98Q629 -96 650 -96H655Q681 -96 681 -108Q681 -114 679 -119Q670 -148 646 -169T591 -199Q581 -201 550 -201Q422 -201 381 -143Q345 -88 316 20L311 39L230 -40Q144 -126 114 -153Q85 -182 77 -188T58 -194\",120653:\"244 141Q244 117 254 98T277 70T305 55T329 48T342 47L344 48L424 366Q501 678 505 686Q508 691 512 692T533 694T555 693T562 688T565 683Q565 678 486 362T406 45Q406 43 415 43Q467 49 514 78T590 143T636 213T653 266Q653 282 641 293T613 311T585 332T572 367Q572 397 598 425T657 453Q684 453 708 430T732 358Q732 330 723 287T706 225Q671 124 578 58T401 -8H393L370 -101Q346 -196 345 -197Q340 -202 316 -202H306Q286 -202 286 -188Q286 -187 296 -144T318 -57T331 -8Q331 -6 328 -6Q290 -6 233 11T148 62Q119 97 119 146Q119 181 154 275T190 388Q190 401 181 401Q154 401 129 375T90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T189 452Q237 452 273 428T309 362Q309 343 277 260T244 141\",120654:\"532 367Q532 399 559 426T618 453Q645 453 668 430T691 357Q691 319 677 261T649 171Q640 149 626 125T586 68T521 14T438 -7Q401 -7 372 7T333 30T311 57Q246 -8 165 -8Q119 -8 82 19T30 102Q24 126 24 163V178Q24 210 37 255Q61 346 118 424Q141 451 161 451Q174 451 184 443T194 419Q194 402 179 387Q91 273 91 206Q91 159 122 138T189 117T281 145V173Q283 223 294 253Q304 276 323 289T364 303Q386 303 400 287T415 250Q415 219 385 157L378 144Q378 142 388 136T419 124T462 117Q522 117 566 165T610 255Q610 288 561 320Q532 337 532 367\",120655:\"230 475Q202 475 189 492T175 526T186 570T221 631T288 687T389 710Q430 710 438 709Q495 701 537 679T601 629T637 568T653 509T657 459Q657 409 640 341Q617 248 581 180T507 75T424 16T348 -11T282 -17Q171 -17 113 37Q60 88 60 159Q60 192 71 231Q96 336 184 402Q264 462 366 462Q407 462 439 448T497 389L502 380Q503 381 508 403T519 463T525 531Q523 580 499 610T447 648T387 657Q324 657 283 616Q271 604 276 604Q279 604 286 600T302 583T311 555Q311 523 287 499T230 475ZM196 110Q196 41 287 41Q351 41 398 88Q422 111 437 151Q473 243 473 298Q473 386 409 409Q408 409 383 411Q316 411 278 373Q265 360 259 351T241 311T217 226Q196 143 196 110\",120656:\"415 89Q423 89 429 74T436 46Q436 43 434 39Q432 36 420 29T380 11T322 -5Q311 -7 281 -7Q216 -7 168 10T94 54T56 110T44 167V181Q44 262 94 329Q104 343 119 357T162 391T234 425T327 443Q328 443 348 443T383 444Q434 444 442 438Q450 430 450 416Q446 392 424 383L376 382Q306 381 278 369Q230 349 208 294Q199 274 199 268Q199 267 291 267Q305 267 325 267T353 268Q383 268 394 263T406 241Q406 214 380 206Q375 205 279 205T183 203Q174 176 174 140Q174 87 208 65T292 43Q295 43 300 43T307 44Q337 49 372 69T415 89\",120657:\"114 132Q114 153 140 253T166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296Q25 302 27 312T41 350T65 397T104 435T158 452Q184 452 211 445T263 414T288 354V339L265 245Q237 134 237 118V107V102Q237 87 239 77T257 56T300 43Q395 43 455 254Q479 346 479 347L460 354Q294 408 294 528Q294 606 350 653T464 701Q536 701 579 659Q634 601 634 491Q634 468 630 438T623 388L620 370Q624 370 631 369T647 364T656 352Q656 347 653 335Q647 317 642 316Q640 315 637 315Q635 315 619 317Q606 319 605 316Q605 315 603 308Q587 248 550 177T457 57Q379 -8 293 -8Q192 -8 153 23T114 116V132ZM519 566Q519 600 507 625T464 651Q425 651 391 617T356 529Q356 501 370 478T404 441T443 417T477 404L491 400Q493 400 499 428T512 497T519 566\",120658:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",120659:\"274 -7Q232 -4 195 7T125 38T71 94T51 176V190Q51 213 60 242T95 307T156 373T255 425T393 451L397 452L427 568Q434 597 443 636Q452 677 456 685T472 694H486H495Q517 694 517 680L514 665Q510 650 503 621T489 564L460 451H469Q527 447 574 430T657 370T693 266Q693 163 599 82T350 -7H346L322 -100Q301 -190 295 -197Q291 -202 283 -202H269H258Q238 -202 238 -188Q238 -186 260 -96L283 -7H274ZM449 400Q448 400 404 225T359 47T366 45Q464 55 516 119Q542 149 558 199T575 295Q575 387 462 398L449 400ZM384 398Q384 399 381 399Q350 399 298 378T214 308Q168 236 168 149Q168 68 259 49Q282 44 294 44H295L384 398\",120660:\"371 -168Q357 -168 323 -171T245 -175Q143 -175 109 -150T75 -66Q75 -5 100 108T137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 282Q603 213 569 148T465 38T304 -8Q273 -8 247 -2T204 14T176 31T159 46T152 53Q152 52 148 27T144 -16Q144 -36 150 -44T189 -58T293 -64Q405 -65 432 -75Q466 -88 466 -127Q466 -140 459 -172Q455 -188 451 -191T426 -194H420Q405 -194 400 -191T395 -176Q396 -170 394 -169T378 -168Q373 -168 371 -168ZM236 116Q236 77 258 60T311 43Q369 43 407 94Q429 123 451 206T474 331Q474 400 409 400H406Q339 400 299 341Q276 305 256 227T236 116\",120661:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 562 444Q922 444 928 442Q961 434 961 400Q961 376 944 355T886 333H870Q872 322 872 295V279Q872 230 842 165T751 46T618 -8Q581 -8 554 6T513 45T494 84T484 119Q484 121 478 114Q477 113 476 111Q384 -7 268 -7H265Q251 -7 237 -4T199 11T162 54T147 132Q147 149 149 166T155 198T165 229T176 256T189 281T200 301T211 319T220 333H199Q120 333 88 301L77 290L55 289ZM639 103Q674 103 712 122T780 188T811 295Q811 318 808 330V333H289Q274 318 244 263T214 169Q214 133 236 118T288 103Q351 103 412 153T494 278Q497 290 502 292T529 295Q546 295 551 293T556 283Q556 281 553 260T550 218Q550 153 576 128T639 103\",120662:\"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279\",120663:\"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194\",120664:\"92 664Q98 683 118 690Q121 691 312 691T508 689Q534 682 534 644V632V618Q534 582 508 573L502 572Q496 572 489 572Q486 572 463 572T416 573Q333 573 291 575H253V303Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664\",120665:\"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148\",120666:\"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277\",120667:\"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584\",120668:\"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667\",120669:\"62 340Q62 716 425 716Q511 716 576 696T681 642T747 559T783 458T793 341Q793 264 777 203T721 89T608 7T428 -22Q62 -22 62 340ZM638 333Q638 365 637 387T632 441T621 495T600 542T567 583T518 611T451 628Q443 629 427 629Q402 629 378 624T327 608T276 571T240 511Q217 453 217 345Q217 254 231 204T279 120Q333 69 428 69Q522 69 576 120Q638 183 638 333ZM279 349V373Q279 413 305 420Q309 422 427 422H487Q550 422 563 414T576 369V349Q576 345 576 337T577 324Q577 284 550 277Q545 275 428 275H369Q306 275 293 283T279 329V349\",120670:\"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667\",120671:\"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667\",120672:\"106 0H83Q41 0 41 28Q41 39 133 349T229 667Q242 694 296 694H335H375Q403 694 418 689T442 667Q445 660 537 350T630 28Q630 11 619 6T584 0H555H526Q478 0 465 27Q462 32 431 136T366 372T325 555V546Q320 503 287 376T222 141T186 27Q184 22 177 15T165 6Q154 0 106 0\",120673:\"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120674:\"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120675:\"627 553Q609 553 512 554T366 555Q316 555 220 554T105 553Q96 553 90 553T82 554T78 554Q61 560 57 571T52 605V623L53 661Q59 680 79 687Q82 688 366 688Q649 688 654 686Q680 679 680 639V621V603Q680 563 654 554Q653 554 651 554T642 554T627 553ZM149 423Q152 424 366 424Q579 424 584 422Q610 415 610 376V358V340Q610 300 584 293Q579 291 366 291H232Q162 291 150 293T129 306Q122 315 122 360L123 397Q129 416 149 423ZM108 135Q143 135 226 134T363 133Q407 133 507 134T632 135H645Q675 135 684 110Q686 104 686 68V49Q686 9 660 2Q655 0 364 0L74 1Q57 7 49 21L47 28L46 65V83Q46 126 72 133Q80 135 108 135\",120676:\"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433\",120677:\"92 664Q98 683 118 690Q121 691 396 691T676 689Q695 684 700 666Q702 660 702 345Q702 31 700 25Q696 9 684 5T646 0H621H596Q571 0 559 4T542 25Q540 31 540 307V582H253V307Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664\",120678:\"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467\",120680:\"322 124Q326 124 457 125T672 127H689Q721 127 730 102Q732 96 732 64V48Q732 9 706 2Q701 0 394 0L89 1Q76 5 69 13T62 29V36Q62 37 62 38Q62 47 70 58T126 126Q161 167 185 196Q302 335 302 336L187 463Q74 584 68 594Q61 603 61 639L62 667Q68 686 88 693Q91 694 396 694T706 692Q732 686 732 647V635V621Q732 585 706 576Q705 576 702 576T691 576T670 575L302 578Q302 577 394 475T490 371Q498 362 498 347Q498 336 488 323T408 226L322 124\",120681:\"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687\",120682:\"62 560Q62 607 94 644T169 698T253 715Q273 715 286 713T322 704T363 677T398 625Q413 597 423 556L428 540Q429 541 436 566T454 620T494 677T561 713Q570 715 593 715Q682 715 737 668T793 560Q793 549 793 545T786 533T767 520H670Q646 532 644 551T632 579Q618 594 591 594Q539 594 524 530T509 321V216Q509 31 507 25Q498 0 455 0H426L375 1Q355 7 348 28L347 232Q346 344 346 441Q346 442 343 468T335 521T312 571T266 594Q252 594 247 593Q228 586 220 576T212 557T209 539T191 523L185 520H88Q75 527 69 534T63 545T62 560\",120683:\"62 292T62 347T80 445T124 511T183 552T243 574T292 584L315 587H319V627L320 667Q329 694 370 694H397H422Q466 694 473 669Q475 663 475 625V587H478Q479 587 500 584T548 575T608 553T668 513T713 446T732 347Q732 253 674 187Q655 167 628 152T576 128T530 116T493 109L478 107H475V69V50Q475 9 449 2Q444 0 395 0L347 1Q327 7 320 28L319 67V107H315L292 110Q269 114 243 119T184 142T124 182T80 249ZM319 197T319 347T318 497Q316 497 307 494T284 485T262 471Q220 438 220 347Q220 285 239 249Q248 234 261 223T286 208T308 200L317 197Q319 197 319 347ZM572 347V357Q572 387 569 407T548 452T496 491Q495 491 494 491T487 493T475 497V197Q518 210 541 232T571 303Q572 312 572 347\",120684:\"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52\",120685:\"61 585Q62 594 62 597T64 606T73 616T89 626H138Q196 626 208 620Q243 602 253 546T261 431T271 309T325 219Q342 205 349 205Q350 205 350 436L351 667Q360 694 401 694H428H454Q495 694 504 671Q506 663 506 436L507 205Q542 222 561 251T586 318T593 392T595 472T602 546Q614 614 661 625Q665 626 708 626H730Q766 626 780 618T794 582Q794 548 768 540Q755 538 754 501T750 410T736 298T680 191T560 120Q550 116 512 109H506V70V50Q506 9 480 2Q475 0 426 0L378 1Q358 7 351 28L350 68V109L335 111Q298 117 267 129T214 156T175 191T146 229T127 272T115 314T109 357T106 395T105 429Q104 537 87 540Q66 548 63 565Q61 570 61 585\",120686:\"241 122Q225 154 191 199T131 278T83 363T61 464Q61 497 68 527T94 591T145 650T228 693T349 715Q354 715 370 715T396 716Q539 716 622 668Q658 647 682 617T715 556T728 505T732 465Q732 415 711 365T663 280T602 200T552 122H632Q649 122 669 122T693 123H697Q736 123 742 98Q744 92 744 62V47Q744 9 718 2Q713 0 591 0L471 1Q454 7 446 21Q444 27 444 45Q444 96 463 154T506 257T549 360T569 469Q569 504 563 530T538 580T485 616T396 629Q313 629 268 594T223 468Q223 419 243 361T286 258T330 152T350 41Q350 14 335 7T276 -1Q267 -1 241 -1T197 0L77 1Q57 7 50 28L49 59V74Q49 114 75 121Q81 123 100 123Q104 123 124 123T161 122H241\",120782:\"266 654H280H282Q500 654 524 418Q529 370 529 320Q529 125 456 52Q397 -10 287 -10Q110 -10 63 154Q45 212 45 316Q45 504 113 585Q140 618 185 636T266 654ZM374 548Q347 604 286 604Q247 604 218 575Q197 552 193 511T188 311Q188 159 196 116Q202 87 225 64T287 41Q339 41 367 87Q379 107 382 152T386 329Q386 518 374 548\",120783:\"481 0L294 3Q136 3 109 0H96V62H227V304Q227 546 225 546Q169 529 97 529H80V591H97Q231 591 308 647L319 655H333Q355 655 359 644Q361 640 361 351V62H494V0H481\",120784:\"175 580Q175 578 185 572T205 551T215 510Q215 467 191 449T137 430Q107 430 83 448T58 511Q58 558 91 592T168 640T259 654Q328 654 383 637Q451 610 484 563T517 459Q517 401 482 360T368 262Q340 243 265 184L210 140H274Q416 140 429 145Q439 148 447 186T455 237H517V233Q516 230 501 119Q489 9 486 4V0H57V25Q57 51 58 54Q60 57 109 106T215 214T288 291Q364 377 364 458Q364 515 328 553T231 592Q214 592 201 589T181 584T175 580\",120785:\"80 503Q80 565 133 610T274 655Q366 655 421 623T491 538Q493 528 493 510Q493 446 453 407T361 348L376 344Q452 324 489 281T526 184Q526 152 514 121T474 58T392 8T265 -11Q175 -11 111 34T48 152Q50 187 72 209T132 232Q171 232 193 208T216 147Q216 136 214 126T207 108T197 94T187 84T178 77T170 72L168 71Q168 70 179 65T215 54T266 48H270Q331 48 350 105Q358 128 358 185Q358 239 348 268T309 313Q292 321 242 322Q205 322 198 324T191 341V348Q191 366 196 369T232 375Q239 375 247 376T260 377T268 378Q284 383 297 393T326 436T341 517Q341 536 339 547T331 573T308 593T266 600Q248 600 241 599Q214 593 183 576Q234 556 234 503Q234 462 210 444T157 426Q126 426 103 446T80 503\",120786:\"531 0Q510 3 381 3Q238 3 214 0H201V62H313V155H32V217L205 434Q342 606 362 630T387 655L391 656Q395 656 401 656T414 656H427Q447 656 451 645Q453 641 453 429V217H542V155H453V62H542V0H531ZM324 217V494L103 218L213 217H324\",120787:\"100 565V605Q100 637 102 646T113 655Q116 655 139 647T202 631T286 623Q332 623 372 631T434 647T459 655Q466 655 469 651T472 643T472 629Q472 613 463 601Q370 487 219 487Q195 487 183 488T169 490T168 433V376Q169 376 174 379T188 387T211 397T244 405T288 409Q390 409 453 352T517 201Q517 106 445 48T253 -11Q169 -11 113 37T57 154Q57 187 79 208T131 229T183 209T206 154Q206 99 155 83Q152 82 157 78Q196 47 253 47Q347 47 358 135Q358 137 358 138Q360 158 360 209Q360 277 355 301T337 338Q315 358 282 358Q202 358 160 303Q153 294 149 292T130 290Q107 290 102 301Q100 304 100 474V565\",120788:\"48 318Q48 395 68 456T120 553T193 613T273 646T350 655Q425 655 461 616T497 524Q497 485 475 468T428 451Q399 451 378 470T357 521Q357 565 403 588Q375 601 351 601Q313 601 282 584Q242 565 222 526Q199 473 199 367Q201 369 210 380T227 396T246 410T275 422T312 426Q438 426 494 332Q526 285 526 208V199Q526 112 465 53Q428 17 388 3T285 -11Q236 -11 195 7T135 43T104 80Q48 165 48 318ZM375 231V244V268Q375 295 373 310T364 342T341 366T299 374H297Q231 374 208 287Q200 257 200 196Q201 120 209 100Q231 47 288 47Q351 47 368 90Q375 112 375 231\",120789:\"256 -11Q231 -11 208 5T185 65Q185 105 193 146T212 220T241 289T275 349T312 402T346 445T377 479T397 502L400 504H301Q156 503 150 497Q142 491 134 456T126 407H64V411Q65 414 82 544T99 675T130 676H161V673Q161 669 162 666T167 661T173 657T181 654T190 652T200 651T210 650T220 649T229 648Q237 648 254 647T276 646Q277 646 426 644H558V620V607Q558 596 551 586T509 537Q489 515 476 500Q390 401 384 393Q349 339 337 259T324 113T322 38Q307 -11 256 -11\",120790:\"80 474Q80 561 139 607T278 654Q357 654 411 632Q490 593 494 509Q494 424 416 376L407 371L418 364Q432 356 447 345T481 312T513 260T526 192Q526 100 461 45T285 -11Q184 -11 116 32T48 164Q48 181 50 196T58 225T69 249T84 270T100 286T117 300T134 311T149 321T162 329L152 336Q120 360 100 397T80 474ZM347 404Q404 446 404 503Q404 579 317 599Q309 600 276 600Q178 600 170 538Q170 532 171 527T173 518T178 509T184 501T194 492T205 484T219 476T235 467T254 456T275 445L347 404ZM289 47Q323 47 351 54T402 82T425 137Q425 147 421 161Q411 183 391 197T303 249Q224 293 223 293Q220 291 215 288T197 273T175 248T157 213T149 167Q149 109 188 78T289 47\",120791:\"178 59Q206 48 238 48Q311 48 345 102Q370 138 375 259V278Q374 278 369 271T350 252T322 232Q297 220 258 220Q172 220 110 275T48 438V446Q54 561 146 618Q199 654 278 654Q321 654 329 653Q526 621 526 330Q526 252 507 190T457 92T388 31T312 -2T240 -11Q165 -11 121 25T77 120Q77 159 99 176T147 193T194 177T217 122Q217 113 216 106T211 92T205 82T198 73T191 67T184 62T178 59ZM374 446V465Q374 523 364 552T315 598Q309 600 293 601Q227 601 210 562Q199 539 199 433Q199 343 204 319T235 279Q250 272 274 271H282Q293 271 303 274T327 288T353 323T371 385Q374 403 374 446\",120802:\"117 621Q174 678 247 678Q305 678 351 647Q396 617 424 557Q460 472 460 328Q460 271 455 224Q448 154 427 104T376 27T314 -10T249 -22Q201 -22 160 1T91 67Q39 154 39 316Q39 541 117 621ZM250 55Q274 55 293 66T324 93T344 136T357 185T364 240T366 291T367 340Q367 373 367 393T363 449T352 507T332 553T299 589T250 601Q217 601 194 584T159 542T141 479T133 411T132 340V331Q132 299 133 277T137 219T147 157T167 107T201 68T250 55\",120803:\"94 612Q172 616 211 632T284 678H307V73H430V0H88V73H213V317Q213 560 212 560Q210 558 197 554T155 546T96 540L83 539V612H94\",120804:\"222 599Q190 599 166 585T128 550T108 509T97 474T93 459L67 492L42 526L47 539Q72 608 120 642T225 677Q304 677 355 644Q449 579 449 454Q449 373 361 290Q351 280 315 250T199 144Q156 103 137 85L293 86H449V0H50V79L216 242Q284 302 317 349T351 456Q351 517 315 558T222 599\",120805:\"333 521Q333 554 313 579T243 604Q154 604 99 514L78 546Q56 577 56 579Q56 580 62 589T82 611T114 637T162 662T222 677Q224 677 231 677T242 678H245Q318 678 374 634T430 520Q430 483 417 452T382 398T351 369T329 354L328 353Q369 333 373 330Q408 306 432 268T457 184Q457 103 397 41T242 -22Q131 -22 51 58L42 68L49 105L55 142L58 138Q62 134 66 130T77 120T91 108T108 96T129 83T152 72T179 63T209 57T242 54Q285 54 319 86T353 184Q353 231 331 267T260 315L213 316H166V354Q166 392 167 392Q233 395 257 405Q290 418 311 450T333 521\",120806:\"271 654L272 656H380V235H471V159H380V0H286V159H28V235L149 443Q269 652 271 654ZM292 235V607Q292 604 290 591T286 571T280 548T269 517T252 476T226 422T189 354T140 267Q136 260 132 253T126 240L123 236Q123 235 207 235H292\",120807:\"257 350Q236 350 218 342T189 323T171 301T160 281L157 273Q157 272 116 272H75V656H416V577H162V486Q162 396 163 396T174 403T207 418T258 426Q339 426 394 360T449 203Q449 113 386 46T226 -21H223Q188 -21 156 -11T102 13T64 42T41 66T33 77Q34 78 44 95T64 128L73 144Q93 112 117 93Q165 54 223 54Q270 54 306 86T345 197Q345 350 257 350\",120808:\"42 318Q42 396 61 460T109 564T173 629T237 666T289 677H301H317Q359 677 408 658V621Q408 585 407 585H406Q359 605 308 605Q246 605 203 556T146 421Q143 403 144 403Q145 402 152 409Q216 469 299 469Q333 469 357 457T407 405Q457 330 457 226Q457 126 402 57Q340 -22 251 -22Q216 -22 183 -7T116 43T63 149T42 318ZM260 393Q216 393 188 365T150 306T141 243Q141 153 172 104Q192 68 230 56Q238 54 251 54Q311 54 342 116Q360 152 360 226Q360 297 344 332Q320 382 277 392Q275 392 270 392T260 393\",120809:\"42 570V656H457V577L447 564Q345 439 295 289T244 0V-11H145V12Q160 330 356 550Q360 556 365 561T374 571L208 570H42\",120810:\"55 500Q55 568 109 623T250 678Q327 678 385 627T444 501Q444 445 410 410T336 357L329 353H330Q378 335 417 293T456 184Q456 93 393 36T249 -22T106 35T43 184Q43 251 82 293T169 353Q171 354 166 356Q165 356 163 357Q113 378 84 416T55 500ZM358 496Q358 557 325 581T250 605Q206 605 174 580T141 496Q141 446 171 420T250 393Q298 393 328 419T358 496ZM245 316Q205 316 172 285T139 185V179Q139 79 222 57Q231 55 250 55H254Q295 55 327 84Q360 120 360 188Q360 254 326 285Q295 316 245 316\",120811:\"44 476Q57 561 116 619T245 677H255Q308 677 349 647Q392 619 424 545T457 334Q457 178 382 78T205 -22Q168 -22 135 -10T86 14L72 25Q73 25 91 58L110 91Q127 78 136 72T163 60T203 54Q238 54 265 71T308 110T335 164T350 214T357 253V257L347 248Q284 187 200 187Q165 187 140 201T87 258Q42 332 42 430Q42 458 44 476ZM269 604Q265 605 254 605Q222 605 199 591T164 554T148 517T141 487Q140 478 140 430T141 373Q146 335 164 307T207 269Q223 263 247 263Q299 266 328 308T358 417Q358 435 356 456T346 511T318 570T269 604\",120812:\"274 -22Q227 -22 190 -9T128 24T87 76T62 135T49 204T44 271T43 336V343V362Q43 407 45 440T56 524T86 613T141 677Q197 715 264 715Q314 715 353 702T418 669T460 616T487 555T500 483T505 413T506 343Q506 310 506 293T503 241T498 185T486 133T467 83T437 42T397 8T343 -13T274 -22ZM355 355V401Q355 448 354 476T349 537T336 587T311 617T272 629Q270 629 266 629T261 628Q219 618 207 568T194 419V355Q194 203 200 156T231 85Q250 66 275 66Q299 66 318 85Q342 109 348 156T355 355\",120813:\"118 560H116Q107 560 100 561T85 572T76 600Q76 612 77 618T83 632T99 644Q102 645 135 646T207 660T275 700Q292 716 310 716Q353 716 360 691Q362 685 362 386V87H446Q464 76 468 69T473 44Q473 12 446 1H118Q105 7 100 13T94 25T93 44V62Q100 79 119 87H210V329Q210 571 208 571Q182 560 118 560\",120814:\"339 477Q339 505 332 531T301 579T242 601Q165 601 136 503Q133 493 130 490T121 486Q116 486 94 514Q86 523 82 528Q46 572 46 577Q46 591 77 632T147 691Q192 716 257 716Q305 716 351 700Q416 674 455 615T494 481Q494 421 463 376T356 266Q326 240 287 205T224 146T199 122H331Q359 122 392 122T431 123H445Q485 123 492 98Q494 92 494 62V47Q494 9 468 2Q463 0 272 0L83 1Q63 7 56 28L55 57V89Q59 97 215 261Q255 303 275 327T317 394T339 477\",120815:\"61 624Q62 630 83 650T153 693T262 716Q328 716 373 698T438 650T465 593T473 536Q473 438 375 376L387 371Q450 350 476 305T503 208Q503 164 492 126T456 53T380 -2T261 -22Q224 -22 189 -15T130 2T86 24T57 43T46 53Q46 56 53 99T62 145Q65 152 71 152Q76 152 90 143T123 121T175 99T248 87Q302 87 321 113T341 202Q341 264 329 292T279 329L232 331L190 332L184 338V411Q190 417 192 417Q193 418 205 419T232 421T252 424Q280 430 299 461T318 539V551Q318 599 283 609Q276 611 257 611Q225 611 199 601T159 577T136 554T120 543T102 560T76 597T62 618T61 624\",120816:\"278 693H282Q285 693 291 693T305 694T322 694T342 694H377Q402 694 411 691T430 677Q434 670 434 646T435 456V249H461H472Q509 249 516 224Q518 219 518 194Q518 178 518 171T511 155T492 142Q488 140 461 140H435V86V53Q435 9 409 2Q405 0 366 0H351Q306 0 298 25Q296 31 296 86V140H179H123Q99 140 80 129T50 106T37 95Q31 95 31 163V208Q31 246 33 251Q251 673 262 684Q268 691 278 693ZM302 249V416L301 576Q301 536 165 276L151 250L226 249H302\",120817:\"109 282Q87 290 83 310V666Q83 667 84 670T87 676T91 682T98 688T108 693Q112 694 269 694T431 692Q457 686 457 648V637V624Q457 588 431 581Q426 579 326 579H227V510Q227 442 229 442Q243 450 288 450Q377 450 435 399T494 222Q494 -22 241 -22Q202 -22 167 -11T109 16T69 49T45 79T37 94T69 151Q91 185 97 185Q105 185 112 170Q127 135 160 111T240 87Q266 87 284 94T311 111T325 142T331 179T332 226Q332 307 324 335T281 363Q228 363 197 306Q189 289 172 282H109\",120818:\"414 589Q410 589 389 600T334 612Q275 612 243 575Q209 538 202 433V422L209 431Q243 487 317 487Q392 487 440 442Q478 402 490 357T503 236Q503 113 454 54Q421 13 381 -4T279 -22Q263 -22 250 -21T214 -15T173 1T133 30T96 77T68 146T50 242Q46 278 46 336Q46 406 52 447Q84 698 312 715L315 716Q318 716 321 716Q323 716 328 716T337 715Q398 715 425 688V596Q419 591 414 589ZM282 87Q324 89 336 117T348 231Q348 310 343 343T324 388T277 399Q249 399 231 373T208 317T202 253Q202 201 207 168T224 117T249 93T282 87\",120819:\"135 38Q135 190 198 335T353 572H215Q185 572 151 572T110 571H96Q55 571 48 596Q46 602 46 633V648Q46 686 72 693Q76 695 124 695Q134 695 183 695T274 694Q472 694 477 692Q503 686 503 648V637Q503 612 502 605T491 588Q300 349 292 46V36Q292 -4 266 -9Q262 -11 214 -11H192Q160 -11 148 -3T135 38\",120820:\"61 518Q61 574 79 614T128 676T192 706T263 715H270Q298 715 318 714T373 701T430 671T470 612T488 517Q488 459 458 423T390 376Q388 375 393 373Q395 372 398 371Q503 330 503 204Q503 -22 275 -22Q209 -22 163 -3T92 49T57 120T46 204Q46 230 50 252T61 289T77 318T96 339T116 353T134 363T148 369T158 373T160 376Q118 389 90 424T61 518ZM344 538Q344 563 340 578T326 600T307 609T279 612Q232 612 218 594T204 518Q204 459 216 439T275 418Q328 418 338 450Q344 464 344 515V538ZM248 88T274 88T315 94T338 117T346 149T349 197Q349 269 342 290Q338 309 320 320T274 331Q246 331 229 320T207 290Q200 269 200 197Q201 163 202 149T210 118T232 94\",120821:\"347 272Q346 272 342 266T330 250T309 230T276 214T230 207Q185 207 150 223Q116 240 90 276T54 357Q46 393 46 468Q46 469 46 484T47 502T48 520T51 540T55 559T61 579T69 599T81 620T96 640T115 661Q174 716 276 716Q299 716 317 714T369 698T426 658T471 580T499 456Q503 402 503 342Q503 115 392 29Q322 -22 231 -22Q163 -22 115 7L82 31Q76 38 81 46Q116 112 127 123Q130 126 134 126T148 116T179 97T226 87Q287 87 318 132Q323 139 326 146T332 165T337 182T340 204T342 225T345 249T347 272ZM201 547T201 454T211 329T262 294Q276 294 285 296T310 312T335 355Q347 391 347 447Q347 520 340 550T317 595Q300 612 277 612Q226 612 214 580\",120822:\"42 305Q42 450 111 535T257 621Q335 621 390 562Q482 468 482 306Q482 174 418 82T262 -10T106 82T42 305ZM257 545Q209 545 168 481T126 320Q126 220 162 147Q204 65 262 65Q318 65 358 139T398 320V328Q395 411 364 470T284 543Q270 545 257 545\",120823:\"99 461Q99 470 99 474T104 487T120 498T151 502Q213 517 251 596Q264 622 283 622Q308 622 319 597V76H373H401Q428 76 439 69T450 38Q450 11 428 1H127Q104 10 104 38Q104 62 115 69T153 76H181H235V269Q235 461 234 461Q184 426 137 424H133Q124 424 119 425T109 431T99 447V461\",120824:\"52 462Q52 528 110 575T247 622H250Q343 622 407 565T472 421Q472 371 446 324T390 248T308 178Q307 177 275 151T214 101L185 77Q185 76 286 76H388V87Q388 105 397 114T430 123T463 114Q470 107 471 100T472 61V42Q472 24 468 16T450 1H75Q53 10 53 32V38V48Q53 57 63 67T127 122Q153 144 169 157L289 256Q388 345 388 419Q388 473 346 509T231 545H224Q176 545 146 499L144 494Q155 476 155 459Q154 459 155 455T154 444T148 430T136 417T114 408Q113 408 110 408T104 407Q80 407 66 422T52 462\",120825:\"260 546Q233 546 211 541T180 531T171 524L174 514Q177 505 177 497Q177 476 162 461T125 446Q106 446 90 459T73 504Q76 540 98 565T150 601T203 616T239 621Q241 622 265 622Q322 620 362 602T420 558T444 513T451 478Q451 386 369 329L375 326Q381 323 386 320T401 311T419 298T436 283T452 263T466 240T475 212T479 180Q479 99 416 44T259 -11T105 28T44 130Q44 154 59 168T95 183Q117 183 132 169T148 131Q148 119 139 101Q175 65 260 65Q316 65 355 97T395 179Q395 211 375 240Q336 292 253 292H234H215Q194 292 185 299T175 330Q175 350 184 359Q192 368 238 370T309 384Q336 398 351 423T367 474Q367 496 350 513Q321 546 260 546\",120826:\"235 1Q213 10 213 32V38V46Q213 65 230 73Q236 76 274 76H314V168H183L52 169Q37 175 33 182T29 205V218L30 244Q53 283 155 443T264 613Q276 623 298 623H323H363Q378 616 385 601V244H429H450Q474 244 484 237T495 206Q495 179 477 171Q471 168 429 168H385V76H425H442Q466 76 476 69T487 38Q487 10 465 1H235ZM314 244V554L117 245L215 244H314\",120827:\"387 189Q387 244 354 278T273 313Q230 313 205 301T163 271T138 249H120Q102 249 97 251Q85 258 83 266T80 311Q80 320 80 359T81 430Q81 587 82 591Q88 605 103 610H108Q112 610 120 610T138 610T163 610T192 611T225 611T260 611H415Q416 610 421 607T428 602T432 596T436 587T437 573Q437 567 437 562T434 554T431 548T427 543T423 540T418 538L415 536L289 535H164V363L170 366Q175 368 184 372T207 380T238 386T276 389Q357 389 414 331T472 187Q472 116 412 53T245 -10Q218 -10 209 -9Q126 5 89 48T52 137Q52 164 68 177T104 191Q130 191 143 175T156 141Q156 132 154 125T149 113T146 107Q146 104 155 95T188 76T245 65Q298 65 342 98T387 189\",120828:\"357 536Q357 546 318 546Q258 546 205 497T133 357V353L144 361Q210 402 285 402Q362 402 414 350Q479 285 479 193Q479 111 418 50T263 -11Q234 -11 207 -3T149 26T97 81T60 171T45 301Q45 444 129 533T319 622Q388 622 421 589T454 510Q454 491 442 475T402 458Q373 458 362 475T350 510Q350 520 354 528L357 536ZM319 326T269 326T179 298T136 223Q136 202 143 174T176 112T237 68Q246 66 265 66Q319 66 360 107Q395 146 395 197Q395 250 356 289Q319 326 269 326\",120829:\"204 -10Q162 -10 162 40Q162 146 198 261T310 477Q311 478 321 491T342 517T358 535H128V524Q128 506 119 497Q111 489 86 489H78Q55 489 46 508Q44 513 44 557V580Q44 605 52 616T88 627H93Q114 627 125 611H458Q474 598 477 593T480 573Q480 559 478 553T469 543T446 521T408 477Q252 290 246 49Q246 43 246 37T246 27T245 22Q243 11 233 1T204 -10\",120830:\"58 460Q58 523 117 572T254 621Q290 621 298 620Q376 607 421 560T466 460Q466 441 460 424T443 393T421 370T397 352T374 340T357 332L350 330L356 328Q363 325 371 321T392 310T415 295T439 274T459 249T473 217T479 179Q479 102 418 46T262 -10T106 46T45 179Q45 202 52 222T70 257T96 284T123 305T148 319T167 328L174 330L170 332Q166 333 159 336T145 343Q104 362 81 393T58 460ZM382 458Q382 491 349 518T263 546Q215 546 179 521T142 458Q142 421 178 395T262 368Q315 368 348 396T382 458ZM396 178Q396 223 358 257T263 292Q206 292 167 258T128 178Q128 137 163 102T262 66Q324 66 360 101T396 178\",120831:\"392 259Q333 210 236 210H233Q163 210 109 262Q46 325 46 411T99 550Q164 622 264 622Q293 622 319 615T376 587T428 532T464 440T479 304Q479 167 400 78T217 -11Q140 -11 105 22T70 101Q70 124 84 138T122 153Q150 153 162 137T174 101Q174 91 168 76Q179 65 216 65Q267 65 300 93Q322 109 339 130T366 173T380 210T388 242T392 259ZM388 389Q388 438 357 492T268 546T185 520Q129 479 129 415Q129 384 138 363Q145 349 156 334T195 302T255 285Q305 285 345 313T388 389\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8246:\"\\u2035\\u2035\",8247:\"\\u2035\\u2035\\u2035\",8279:\"\\u2032\\u2032\\u2032\\u2032\",8708:\"\\u2203\\u0338\",8716:\"\\u220b\\u0338\",8772:\"\\u2243\\u0338\",8777:\"\\u2248\\u0338\",8802:\"\\u2261\\u0338\",8813:\"\\u224d\\u0338\",8820:\"\\u2272\\u0338\",8821:\"\\u2273\\u0338\",8824:\"\\u2276\\u0338\",8825:\"\\u2277\\u0338\",8836:\"\\u2282\\u0338\",8837:\"\\u2283\\u0338\",8930:\"\\u2291\\u0338\",8931:\"\\u2292\\u0338\",10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normal=void 0,e.normal={32:[0,0,.25],33:[.716,0,.278],34:[.694,-.379,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.778],39:[.694,-.379,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.32,.5],43:[.583,.082,.778],44:[.121,.194,.278],45:[.252,-.179,.333],46:[.12,0,.278],47:[.75,.25,.5],48:[.666,.022,.5],49:[.666,0,.5],50:[.666,0,.5],51:[.665,.022,.5],52:[.677,0,.5],53:[.666,.022,.5],54:[.666,.022,.5],55:[.676,.022,.5],56:[.666,.022,.5],57:[.666,.022,.5],58:[.43,0,.278],59:[.43,.194,.278],60:[.54,.04,.778],61:[.583,.082,.778],62:[.54,.04,.778],63:[.705,0,.472],64:[.705,.011,.778],65:[.716,0,.75],66:[.683,0,.708],67:[.705,.021,.722],68:[.683,0,.764],69:[.68,0,.681],70:[.68,0,.653],71:[.705,.022,.785],72:[.683,0,.75],73:[.683,0,.361],74:[.683,.022,.514],75:[.683,0,.778],76:[.683,0,.625],77:[.683,0,.917],78:[.683,0,.75],79:[.705,.022,.778],80:[.683,0,.681],81:[.705,.193,.778],82:[.683,.022,.736],83:[.705,.022,.556],84:[.677,0,.722],85:[.683,.022,.75],86:[.683,.022,.75],87:[.683,.022,1.028],88:[.683,0,.75],89:[.683,0,.75],90:[.683,0,.611],91:[.75,.25,.278],92:[.75,.25,.5],93:[.75,.25,.278],94:[.694,-.531,.5],95:[-.025,.062,.5],96:[.699,-.505,.5],97:[.448,.011,.5],98:[.694,.011,.556],99:[.448,.011,.444],100:[.694,.011,.556],101:[.448,.011,.444],102:[.705,0,.306,{ic:.066}],103:[.453,.206,.5],104:[.694,0,.556],105:[.669,0,.278],106:[.669,.205,.306],107:[.694,0,.528],108:[.694,0,.278],109:[.442,0,.833],110:[.442,0,.556],111:[.448,.01,.5],112:[.442,.194,.556],113:[.442,.194,.528],114:[.442,0,.392],115:[.448,.011,.394],116:[.615,.01,.389],117:[.442,.011,.556],118:[.431,.011,.528],119:[.431,.011,.722],120:[.431,0,.528],121:[.431,.204,.528],122:[.431,0,.444],123:[.75,.25,.5],124:[.75,.249,.278],125:[.75,.25,.5],126:[.318,-.215,.5],160:[0,0,.25],163:[.714,.011,.769],165:[.683,0,.75],168:[.669,-.554,.5],172:[.356,-.089,.667],174:[.709,.175,.947],175:[.59,-.544,.5],176:[.715,-.542,.5],177:[.666,0,.778],180:[.699,-.505,.5],183:[.31,-.19,.278],215:[.491,-.009,.778],240:[.749,.021,.556],247:[.537,.036,.778],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.56,-.043,.275],710:[.694,-.531,.5],711:[.644,-.513,.5],713:[.59,-.544,.5],714:[.699,-.505,.5],715:[.699,-.505,.5],728:[.694,-.515,.5],729:[.669,-.549,.5],730:[.715,-.542,.5],732:[.668,-.565,.5],768:[.699,-.505,0],769:[.699,-.505,0],770:[.694,-.531,0],771:[.668,-.565,0],772:[.59,-.544,0],774:[.694,-.515,0],775:[.669,-.549,0],776:[.669,-.554,0],778:[.715,-.542,0],779:[.701,-.51,0],780:[.644,-.513,0],824:[.716,.215,0],913:[.716,0,.75],914:[.683,0,.708],915:[.68,0,.625],916:[.716,0,.833],917:[.68,0,.681],918:[.683,0,.611],919:[.683,0,.75],920:[.705,.022,.778],921:[.683,0,.361],922:[.683,0,.778],923:[.716,0,.694],924:[.683,0,.917],925:[.683,0,.75],926:[.677,0,.667],927:[.705,.022,.778],928:[.68,0,.75],929:[.683,0,.681],931:[.683,0,.722],932:[.677,0,.722],933:[.705,0,.778],934:[.683,0,.722],935:[.683,0,.75],936:[.683,0,.778],937:[.704,0,.722],8192:[0,0,.5],8193:[0,0,1],8194:[0,0,.5],8195:[0,0,1],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.1],8203:[0,0,0],8204:[0,0,0],8211:[.285,-.248,.5],8212:[.285,-.248,1],8213:[.285,-.248,1],8214:[.75,.25,.5],8215:[-.025,.062,.5],8216:[.694,-.379,.278],8217:[.694,-.379,.278],8220:[.694,-.379,.5],8221:[.694,-.379,.5],8224:[.705,.216,.444],8225:[.705,.205,.444],8226:[.444,-.055,.5],8230:[.12,0,1.172],8242:[.56,-.043,.275],8243:[.56,0,.55],8244:[.56,0,.825],8245:[.56,-.043,.275],8246:[.56,0,.55],8247:[.56,0,.825],8254:[.59,-.544,.5],8260:[.75,.25,.5],8279:[.56,0,1.1],8288:[0,0,0],8289:[0,0,0],8290:[0,0,0],8291:[0,0,0],8292:[0,0,0],8407:[.714,-.516,.5],8450:[.702,.019,.722],8459:[.717,.036,.969,{ic:.272,sk:.333}],8460:[.666,.133,.72],8461:[.683,0,.778],8462:[.694,.011,.576,{sk:-.0278}],8463:[.695,.013,.54,{ic:.022}],8464:[.717,.314,1.052,{ic:.081,sk:.417}],8465:[.686,.026,.554],8466:[.717,.017,.874,{ic:.161,sk:.306}],8467:[.705,.02,.417,{sk:.111}],8469:[.683,.02,.722],8472:[.453,.216,.636,{sk:.111}],8473:[.683,0,.611],8474:[.701,.181,.778],8475:[.717,.017,.85,{ic:.037,sk:.194}],8476:[.686,.026,.828],8477:[.683,0,.722],8484:[.683,0,.667],8486:[.704,0,.722],8487:[.684,.022,.722],8488:[.729,.139,.602],8492:[.708,.028,.908,{ic:.02,sk:.194}],8493:[.685,.024,.613],8496:[.707,.008,.562,{ic:.156,sk:.139}],8497:[.735,.036,.895,{ic:.095,sk:.222}],8498:[.695,0,.556],8499:[.721,.05,1.08,{ic:.136,sk:.444}],8501:[.694,0,.611],8502:[.763,.021,.667,{ic:.02}],8503:[.764,.043,.444],8504:[.764,.043,.667],8513:[.705,.023,.639],8592:[.511,.011,1],8593:[.694,.193,.5],8594:[.511,.011,1],8595:[.694,.194,.5],8596:[.511,.011,1],8597:[.772,.272,.5],8598:[.72,.195,1],8599:[.72,.195,1],8600:[.695,.22,1],8601:[.695,.22,1],8602:[.437,-.06,1],8603:[.437,-.06,1],8606:[.417,-.083,1],8608:[.417,-.083,1],8610:[.417,-.083,1.111],8611:[.417,-.083,1.111],8614:[.511,.011,1],8617:[.511,.011,1.126],8618:[.511,.011,1.126],8619:[.575,.041,1],8620:[.575,.041,1],8621:[.417,-.083,1.389],8622:[.437,-.06,1],8624:[.722,0,.5],8625:[.722,0,.5],8630:[.461,0,1],8631:[.46,0,1],8634:[.65,.083,.778],8635:[.65,.083,.778],8636:[.511,-.23,1],8637:[.27,.011,1],8638:[.694,.194,.417],8639:[.694,.194,.417],8640:[.511,-.23,1],8641:[.27,.011,1],8642:[.694,.194,.417],8643:[.694,.194,.417],8644:[.667,0,1],8646:[.667,0,1],8647:[.583,.083,1],8648:[.694,.193,.833],8649:[.583,.083,1],8650:[.694,.194,.833],8651:[.514,.014,1],8652:[.671,.011,1],8653:[.534,.035,1],8654:[.534,.037,1],8655:[.534,.035,1],8656:[.525,.024,1],8657:[.694,.194,.611],8658:[.525,.024,1],8659:[.694,.194,.611],8660:[.526,.025,1],8661:[.772,.272,.611],8666:[.611,.111,1],8667:[.611,.111,1],8669:[.417,-.083,1],8672:[.437,-.064,1.334],8674:[.437,-.064,1.334],8704:[.694,.022,.556],8705:[.846,.021,.5],8706:[.715,.022,.531,{ic:.035,sk:.0833}],8707:[.694,0,.556],8708:[.716,.215,.556],8709:[.772,.078,.5],8710:[.716,0,.833],8711:[.683,.033,.833],8712:[.54,.04,.667],8713:[.716,.215,.667],8715:[.54,.04,.667],8716:[.716,.215,.667],8717:[.44,0,.429,{ic:.027}],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8722:[.583,.082,.778],8723:[.5,.166,.778],8724:[.766,.093,.778],8725:[.75,.25,.5],8726:[.75,.25,.5],8727:[.465,-.035,.5],8728:[.444,-.055,.5],8729:[.444,-.055,.5],8730:[.8,.2,.833,{ic:.02}],8733:[.442,.011,.778],8734:[.442,.011,1],8736:[.694,0,.722],8737:[.714,.02,.722],8738:[.551,.051,.722],8739:[.75,.249,.278],8740:[.75,.252,.278,{ic:.019}],8741:[.75,.25,.5],8742:[.75,.25,.5,{ic:.018}],8743:[.598,.022,.667],8744:[.598,.022,.667],8745:[.598,.022,.667],8746:[.598,.022,.667],8747:[.716,.216,.417,{ic:.055}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8756:[.471,.082,.667],8757:[.471,.082,.667],8764:[.367,-.133,.778],8765:[.367,-.133,.778],8768:[.583,.083,.278],8769:[.467,-.032,.778],8770:[.463,-.034,.778],8771:[.464,-.036,.778],8772:[.716,.215,.778],8773:[.589,-.022,.778],8775:[.652,.155,.778],8776:[.483,-.055,.778],8777:[.716,.215,.778],8778:[.579,.039,.778],8781:[.484,-.016,.778],8782:[.492,-.008,.778],8783:[.492,-.133,.778],8784:[.67,-.133,.778],8785:[.609,.108,.778],8786:[.601,.101,.778],8787:[.601,.102,.778],8790:[.367,-.133,.778],8791:[.721,-.133,.778],8796:[.859,-.133,.778],8800:[.716,.215,.778],8801:[.464,-.036,.778],8802:[.716,.215,.778],8804:[.636,.138,.778],8805:[.636,.138,.778],8806:[.753,.175,.778],8807:[.753,.175,.778],8808:[.752,.286,.778],8809:[.752,.286,.778],8810:[.568,.067,1],8811:[.567,.067,1],8812:[.75,.25,.5],8813:[.716,.215,.778],8814:[.708,.209,.778],8815:[.708,.209,.778],8816:[.801,.303,.778],8817:[.801,.303,.778],8818:[.732,.228,.778],8819:[.732,.228,.778],8820:[.732,.228,.778],8821:[.732,.228,.778],8822:[.681,.253,.778],8823:[.681,.253,.778],8824:[.716,.253,.778],8825:[.716,.253,.778],8826:[.539,.041,.778],8827:[.539,.041,.778],8828:[.58,.153,.778],8829:[.58,.154,.778],8830:[.732,.228,.778],8831:[.732,.228,.778],8832:[.705,.208,.778],8833:[.705,.208,.778],8834:[.54,.04,.778],8835:[.54,.04,.778],8836:[.716,.215,.778],8837:[.716,.215,.778],8838:[.636,.138,.778],8839:[.636,.138,.778],8840:[.801,.303,.778],8841:[.801,.303,.778],8842:[.635,.241,.778],8843:[.635,.241,.778],8846:[.598,.022,.667],8847:[.539,.041,.778],8848:[.539,.041,.778],8849:[.636,.138,.778],8850:[.636,.138,.778],8851:[.598,0,.667],8852:[.598,0,.667],8853:[.583,.083,.778],8854:[.583,.083,.778],8855:[.583,.083,.778],8856:[.583,.083,.778],8857:[.583,.083,.778],8858:[.582,.082,.778],8859:[.582,.082,.778],8861:[.582,.082,.778],8862:[.689,0,.778],8863:[.689,0,.778],8864:[.689,0,.778],8865:[.689,0,.778],8866:[.694,0,.611],8867:[.694,0,.611],8868:[.668,0,.778],8869:[.668,0,.778],8872:[.75,.249,.867],8873:[.694,0,.722],8874:[.694,0,.889],8876:[.695,0,.611],8877:[.695,0,.611],8878:[.695,0,.722],8879:[.695,0,.722],8882:[.539,.041,.778],8883:[.539,.041,.778],8884:[.636,.138,.778],8885:[.636,.138,.778],8888:[.408,-.092,1.111],8890:[.431,.212,.556],8891:[.716,0,.611],8892:[.716,0,.611],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8900:[.488,-.012,.5],8901:[.31,-.19,.278],8902:[.486,-.016,.5],8903:[.545,.044,.778],8904:[.505,.005,.9],8905:[.492,-.008,.778],8906:[.492,-.008,.778],8907:[.694,.022,.778],8908:[.694,.022,.778],8909:[.464,-.036,.778],8910:[.578,.021,.76],8911:[.578,.022,.76],8912:[.54,.04,.778],8913:[.54,.04,.778],8914:[.598,.022,.667],8915:[.598,.022,.667],8916:[.736,.022,.667],8918:[.541,.041,.778],8919:[.541,.041,.778],8920:[.568,.067,1.333],8921:[.568,.067,1.333],8922:[.886,.386,.778],8923:[.886,.386,.778],8926:[.734,0,.778],8927:[.734,0,.778],8928:[.801,.303,.778],8929:[.801,.303,.778],8930:[.716,.215,.778],8931:[.716,.215,.778],8934:[.73,.359,.778],8935:[.73,.359,.778],8936:[.73,.359,.778],8937:[.73,.359,.778],8938:[.706,.208,.778],8939:[.706,.208,.778],8940:[.802,.303,.778],8941:[.801,.303,.778],8942:[1.3,.03,.278],8943:[.31,-.19,1.172],8945:[1.52,-.1,1.282],8965:[.716,0,.611],8966:[.813,.097,.611],8968:[.75,.25,.444],8969:[.75,.25,.444],8970:[.75,.25,.444],8971:[.75,.25,.444],8988:[.694,-.306,.5],8989:[.694,-.306,.5],8990:[.366,.022,.5],8991:[.366,.022,.5],8994:[.388,-.122,1],8995:[.378,-.134,1],9001:[.75,.25,.389],9002:[.75,.25,.389],9136:[.744,.244,.412],9137:[.744,.244,.412],9168:[.602,0,.667],9416:[.709,.175,.902],9484:[.694,-.306,.5],9488:[.694,-.306,.5],9492:[.366,.022,.5],9496:[.366,.022,.5],9585:[.694,.195,.889],9586:[.694,.195,.889],9632:[.689,0,.778],9633:[.689,0,.778],9642:[.689,0,.778],9650:[.575,.02,.722],9651:[.716,0,.889],9652:[.575,.02,.722],9653:[.716,0,.889],9654:[.539,.041,.778],9656:[.539,.041,.778],9657:[.505,.005,.5],9660:[.576,.019,.722],9661:[.5,.215,.889],9662:[.576,.019,.722],9663:[.5,.215,.889],9664:[.539,.041,.778],9666:[.539,.041,.778],9667:[.505,.005,.5],9674:[.716,.132,.667],9711:[.715,.215,1],9723:[.689,0,.778],9724:[.689,0,.778],9733:[.694,.111,.944],9824:[.727,.13,.778],9825:[.716,.033,.778],9826:[.727,.162,.778],9827:[.726,.13,.778],9837:[.75,.022,.389],9838:[.734,.223,.389],9839:[.723,.223,.389],10003:[.706,.034,.833],10016:[.716,.022,.833],10072:[.75,.249,.278],10216:[.75,.25,.389],10217:[.75,.25,.389],10222:[.744,.244,.412],10223:[.744,.244,.412],10229:[.511,.011,1.609],10230:[.511,.011,1.638],10231:[.511,.011,1.859],10232:[.525,.024,1.609],10233:[.525,.024,1.638],10234:[.525,.024,1.858],10236:[.511,.011,1.638],10731:[.716,.132,.667],10744:[.716,.215,.778],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],10799:[.491,-.009,.778],10815:[.683,0,.75],10846:[.813,.097,.611],10877:[.636,.138,.778],10878:[.636,.138,.778],10885:[.762,.29,.778],10886:[.762,.29,.778],10887:[.635,.241,.778],10888:[.635,.241,.778],10889:[.761,.387,.778],10890:[.761,.387,.778],10891:[1.003,.463,.778],10892:[1.003,.463,.778],10901:[.636,.138,.778],10902:[.636,.138,.778],10927:[.636,.138,.778],10928:[.636,.138,.778],10933:[.752,.286,.778],10934:[.752,.286,.778],10935:[.761,.294,.778],10936:[.761,.294,.778],10937:[.761,.337,.778],10938:[.761,.337,.778],10949:[.753,.215,.778],10950:[.753,.215,.778],10955:[.783,.385,.778],10956:[.783,.385,.778],12296:[.75,.25,.389],12297:[.75,.25,.389],57350:[.43,.023,.222,{ic:.018}],57351:[.431,.024,.389,{ic:.018}],57352:[.605,.085,.778],57353:[.434,.006,.667,{ic:.067}],57356:[.752,.284,.778],57357:[.752,.284,.778],57358:[.919,.421,.778],57359:[.801,.303,.778],57360:[.801,.303,.778],57361:[.919,.421,.778],57366:[.828,.33,.778],57367:[.752,.332,.778],57368:[.828,.33,.778],57369:[.752,.333,.778],57370:[.634,.255,.778],57371:[.634,.254,.778],119808:[.698,0,.869],119809:[.686,0,.818],119810:[.697,.011,.831],119811:[.686,0,.882],119812:[.68,0,.756],119813:[.68,0,.724],119814:[.697,.01,.904],119815:[.686,0,.9],119816:[.686,0,.436],119817:[.686,.011,.594],119818:[.686,0,.901],119819:[.686,0,.692],119820:[.686,0,1.092],119821:[.686,0,.9],119822:[.696,.01,.864],119823:[.686,0,.786],119824:[.696,.193,.864],119825:[.686,.011,.862],119826:[.697,.011,.639],119827:[.675,0,.8],119828:[.686,.011,.885],119829:[.686,.007,.869],119830:[.686,.007,1.189],119831:[.686,0,.869],119832:[.686,0,.869],119833:[.686,0,.703],119834:[.453,.006,.559],119835:[.694,.006,.639],119836:[.453,.006,.511],119837:[.694,.006,.639],119838:[.452,.006,.527],119839:[.7,0,.351,{ic:.101}],119840:[.455,.201,.575],119841:[.694,0,.639],119842:[.695,0,.319],119843:[.695,.2,.351],119844:[.694,0,.607],119845:[.694,0,.319],119846:[.45,0,.958],119847:[.45,0,.639],119848:[.452,.005,.575],119849:[.45,.194,.639],119850:[.45,.194,.607],119851:[.45,0,.474],119852:[.453,.006,.454],119853:[.635,.005,.447],119854:[.45,.006,.639],119855:[.444,0,.607],119856:[.444,0,.831],119857:[.444,0,.607],119858:[.444,.2,.607],119859:[.444,0,.511],119860:[.716,0,.75,{sk:.139}],119861:[.683,0,.759,{sk:.0833}],119862:[.705,.022,.715,{ic:.045,sk:.0833}],119863:[.683,0,.828,{sk:.0556}],119864:[.68,0,.738,{ic:.026,sk:.0833}],119865:[.68,0,.643,{ic:.106,sk:.0833}],119866:[.705,.022,.786,{sk:.0833}],119867:[.683,0,.831,{ic:.057,sk:.0556}],119868:[.683,0,.44,{ic:.064,sk:.111}],119869:[.683,.022,.555,{ic:.078,sk:.167}],119870:[.683,0,.849,{ic:.04,sk:.0556}],119871:[.683,0,.681,{sk:.0278}],119872:[.683,0,.97,{ic:.081,sk:.0833}],119873:[.683,0,.803,{ic:.085,sk:.0833}],119874:[.704,.022,.763,{sk:.0833}],119875:[.683,0,.642,{ic:.109,sk:.0833}],119876:[.704,.194,.791,{sk:.0833}],119877:[.683,.021,.759,{sk:.0833}],119878:[.705,.022,.613,{ic:.032,sk:.0833}],119879:[.677,0,.584,{ic:.12,sk:.0833}],119880:[.683,.022,.683,{ic:.084,sk:.0278}],119881:[.683,.022,.583,{ic:.186}],119882:[.683,.022,.944,{ic:.104}],119883:[.683,0,.828,{ic:.024,sk:.0833}],119884:[.683,0,.581,{ic:.182}],119885:[.683,0,.683,{ic:.04,sk:.0833}],119886:[.441,.01,.529],119887:[.694,.011,.429],119888:[.442,.011,.433,{sk:.0556}],119889:[.694,.01,.52,{sk:.167}],119890:[.442,.011,.466,{sk:.0556}],119891:[.705,.205,.49,{ic:.06,sk:.167}],119892:[.442,.205,.477,{sk:.0278}],119894:[.661,.011,.345],119895:[.661,.204,.412],119896:[.694,.011,.521],119897:[.694,.011,.298,{sk:.0833}],119898:[.442,.011,.878],119899:[.442,.011,.6],119900:[.441,.011,.485,{sk:.0556}],119901:[.442,.194,.503,{sk:.0833}],119902:[.442,.194,.446,{ic:.014,sk:.0833}],119903:[.442,.011,.451,{sk:.0556}],119904:[.442,.01,.469,{sk:.0556}],119905:[.626,.011,.361,{sk:.0833}],119906:[.442,.011,.572,{sk:.0278}],119907:[.443,.011,.485,{sk:.0278}],119908:[.443,.011,.716,{sk:.0833}],119909:[.442,.011,.572,{sk:.0278}],119910:[.442,.205,.49,{sk:.0556}],119911:[.442,.011,.465,{sk:.0556}],119912:[.711,0,.869,{sk:.16}],119913:[.686,0,.866,{sk:.0958}],119914:[.703,.017,.817,{ic:.038,sk:.0958}],119915:[.686,0,.938,{sk:.0639}],119916:[.68,0,.81,{ic:.015,sk:.0958}],119917:[.68,0,.689,{ic:.12,sk:.0958}],119918:[.703,.016,.887,{sk:.0958}],119919:[.686,0,.982,{ic:.045,sk:.0639}],119920:[.686,0,.511,{ic:.062,sk:.128}],119921:[.686,.017,.631,{ic:.063,sk:.192}],119922:[.686,0,.971,{ic:.032,sk:.0639}],119923:[.686,0,.756,{sk:.0319}],119924:[.686,0,1.142,{ic:.077,sk:.0958}],119925:[.686,0,.95,{ic:.077,sk:.0958}],119926:[.703,.017,.837,{sk:.0958}],119927:[.686,0,.723,{ic:.124,sk:.0958}],119928:[.703,.194,.869,{sk:.0958}],119929:[.686,.017,.872,{sk:.0958}],119930:[.703,.017,.693,{ic:.021,sk:.0958}],119931:[.675,0,.637,{ic:.135,sk:.0958}],119932:[.686,.016,.8,{ic:.077,sk:.0319}],119933:[.686,.016,.678,{ic:.208}],119934:[.686,.017,1.093,{ic:.114}],119935:[.686,0,.947,{sk:.0958}],119936:[.686,0,.675,{ic:.201}],119937:[.686,0,.773,{ic:.032,sk:.0958}],119938:[.452,.008,.633],119939:[.694,.008,.521],119940:[.451,.008,.513,{sk:.0639}],119941:[.694,.008,.61,{sk:.192}],119942:[.452,.008,.554,{sk:.0639}],119943:[.701,.201,.568,{ic:.056,sk:.192}],119944:[.452,.202,.545,{sk:.0319}],119945:[.694,.008,.668,{sk:-.0319}],119946:[.694,.008,.405],119947:[.694,.202,.471],119948:[.694,.008,.604],119949:[.694,.008,.348,{sk:.0958}],119950:[.452,.008,1.032],119951:[.452,.008,.713],119952:[.452,.008,.585,{sk:.0639}],119953:[.452,.194,.601,{sk:.0958}],119954:[.452,.194,.542,{sk:.0958}],119955:[.452,.008,.529,{sk:.0639}],119956:[.451,.008,.531,{sk:.0639}],119957:[.643,.007,.415,{sk:.0958}],119958:[.452,.008,.681,{sk:.0319}],119959:[.453,.008,.567,{sk:.0319}],119960:[.453,.008,.831,{sk:.0958}],119961:[.452,.008,.659,{sk:.0319}],119962:[.452,.202,.59,{sk:.0639}],119963:[.452,.008,.555,{sk:.0639}],119964:[.717,.008,.803,{ic:.213,sk:.389}],119966:[.728,.026,.666,{ic:.153,sk:.278}],119967:[.708,.031,.774,{ic:.081,sk:.111}],119970:[.717,.037,.61,{ic:.128,sk:.25}],119973:[.717,.314,1.052,{ic:.081,sk:.417}],119974:[.717,.037,.914,{ic:.29,sk:.361}],119977:[.726,.036,.902,{ic:.306,sk:.389}],119978:[.707,.008,.738,{ic:.067,sk:.167}],119979:[.716,.037,1.013,{ic:.018,sk:.222}],119980:[.717,.017,.883,{sk:.278}],119982:[.708,.036,.868,{ic:.148,sk:.333}],119983:[.735,.037,.747,{ic:.249,sk:.222}],119984:[.717,.017,.8,{ic:.16,sk:.25}],119985:[.717,.017,.622,{ic:.228,sk:.222}],119986:[.717,.017,.805,{ic:.221,sk:.25}],119987:[.717,.017,.944,{ic:.187,sk:.278}],119988:[.716,.017,.71,{ic:.249,sk:.194}],119989:[.717,.016,.821,{ic:.211,sk:.306}],120068:[.696,.026,.718],120069:[.691,.027,.884],120071:[.685,.027,.832],120072:[.685,.024,.663],120073:[.686,.153,.611],120074:[.69,.026,.785],120077:[.686,.139,.552],120078:[.68,.027,.668,{ic:.014}],120079:[.686,.026,.666],120080:[.692,.027,1.05],120081:[.686,.025,.832],120082:[.729,.027,.827],120083:[.692,.218,.828],120084:[.729,.069,.827],120086:[.692,.027,.829],120087:[.701,.027,.669],120088:[.697,.027,.646,{ic:.019}],120089:[.686,.026,.831],120090:[.686,.027,1.046],120091:[.688,.027,.719],120092:[.686,.218,.833],120094:[.47,.035,.5],120095:[.685,.031,.513],120096:[.466,.029,.389],120097:[.609,.033,.499],120098:[.467,.03,.401],120099:[.681,.221,.326],120100:[.47,.209,.504],120101:[.688,.205,.521],120102:[.673,.02,.279],120103:[.672,.208,.281],120104:[.689,.025,.389],120105:[.685,.02,.28],120106:[.475,.026,.767],120107:[.475,.022,.527],120108:[.48,.028,.489],120109:[.541,.212,.5],120110:[.479,.219,.489],120111:[.474,.021,.389],120112:[.478,.029,.443],120113:[.64,.02,.333,{ic:.015}],120114:[.474,.023,.517],120115:[.53,.028,.512],120116:[.532,.028,.774],120117:[.472,.188,.389],120118:[.528,.218,.499],120119:[.471,.214,.391],120120:[.701,0,.722],120121:[.683,0,.667],120123:[.683,0,.722],120124:[.683,0,.667],120125:[.683,0,.611],120126:[.702,.019,.778],120128:[.683,0,.389],120129:[.683,.077,.5],120130:[.683,0,.778],120131:[.683,0,.667],120132:[.683,0,.944],120134:[.701,.019,.778],120138:[.702,.012,.556],120139:[.683,0,.667],120140:[.683,.019,.722],120141:[.683,.02,.722],120142:[.683,.019,1],120143:[.683,0,.722],120144:[.683,0,.722],120172:[.686,.031,.847],120173:[.684,.031,1.044],120174:[.676,.032,.723],120175:[.683,.029,.982],120176:[.686,.029,.783],120177:[.684,.146,.722],120178:[.687,.029,.927],120179:[.683,.126,.851],120180:[.681,.025,.655],120181:[.68,.141,.652],120182:[.681,.026,.789,{ic:.017}],120183:[.683,.028,.786],120184:[.683,.032,1.239],120185:[.679,.03,.983],120186:[.726,.03,.976],120187:[.688,.223,.977],120188:[.726,.083,.976],120189:[.688,.028,.978],120190:[.685,.031,.978],120191:[.686,.03,.79,{ic:.012}],120192:[.688,.039,.851,{ic:.02}],120193:[.685,.029,.982],120194:[.683,.03,1.235],120195:[.681,.035,.849],120196:[.688,.214,.984],120197:[.677,.148,.711],120198:[.472,.032,.603],120199:[.69,.032,.59],120200:[.473,.026,.464],120201:[.632,.028,.589],120202:[.471,.027,.472],120203:[.687,.222,.388],120204:[.472,.208,.595],120205:[.687,.207,.615],120206:[.686,.025,.331],120207:[.682,.203,.332],120208:[.682,.025,.464],120209:[.681,.024,.337],120210:[.476,.031,.921],120211:[.473,.028,.654],120212:[.482,.034,.609],120213:[.557,.207,.604],120214:[.485,.211,.596],120215:[.472,.026,.46],120216:[.479,.034,.523],120217:[.648,.027,.393,{ic:.014}],120218:[.472,.032,.589,{ic:.014}],120219:[.546,.027,.604],120220:[.549,.032,.918],120221:[.471,.188,.459],120222:[.557,.221,.589],120223:[.471,.214,.461],120224:[.694,0,.667],120225:[.694,0,.667],120226:[.705,.011,.639],120227:[.694,0,.722],120228:[.691,0,.597],120229:[.691,0,.569],120230:[.704,.011,.667],120231:[.694,0,.708],120232:[.694,0,.278],120233:[.694,.022,.472],120234:[.694,0,.694],120235:[.694,0,.542],120236:[.694,0,.875],120237:[.694,0,.708],120238:[.715,.022,.736],120239:[.694,0,.639],120240:[.715,.125,.736],120241:[.694,0,.646],120242:[.716,.022,.556],120243:[.688,0,.681],120244:[.694,.022,.688],120245:[.694,0,.667],120246:[.694,0,.944],120247:[.694,0,.667],120248:[.694,0,.667],120249:[.694,0,.611],120250:[.46,.01,.481],120251:[.694,.011,.517],120252:[.46,.01,.444],120253:[.694,.01,.517],120254:[.461,.01,.444],120255:[.705,0,.306,{ic:.041}],120256:[.455,.206,.5],120257:[.694,0,.517],120258:[.68,0,.239],120259:[.68,.205,.267],120260:[.694,0,.489],120261:[.694,0,.239],120262:[.455,0,.794],120263:[.455,0,.517],120264:[.46,.01,.5],120265:[.455,.194,.517],120266:[.455,.194,.517],120267:[.455,0,.342],120268:[.46,.01,.383],120269:[.571,.01,.361],120270:[.444,.01,.517],120271:[.444,0,.461],120272:[.444,0,.683],120273:[.444,0,.461],120274:[.444,.204,.461],120275:[.444,0,.435],120276:[.694,0,.733],120277:[.694,0,.733],120278:[.704,.011,.703],120279:[.694,0,.794],120280:[.691,0,.642],120281:[.691,0,.611],120282:[.705,.011,.733],120283:[.694,0,.794],120284:[.694,0,.331],120285:[.694,.022,.519],120286:[.694,0,.764],120287:[.694,0,.581],120288:[.694,0,.978],120289:[.694,0,.794],120290:[.716,.022,.794],120291:[.694,0,.703],120292:[.716,.106,.794],120293:[.694,0,.703],120294:[.716,.022,.611],120295:[.688,0,.733],120296:[.694,.022,.764],120297:[.694,0,.733],120298:[.694,0,1.039],120299:[.694,0,.733],120300:[.694,0,.733],120301:[.694,0,.672],120302:[.475,.011,.525],120303:[.694,.01,.561],120304:[.475,.011,.489],120305:[.694,.011,.561],120306:[.474,.01,.511],120307:[.705,0,.336,{ic:.045}],120308:[.469,.206,.55],120309:[.694,0,.561],120310:[.695,0,.256],120311:[.695,.205,.286],120312:[.694,0,.531],120313:[.694,0,.256],120314:[.469,0,.867],120315:[.468,0,.561],120316:[.474,.011,.55],120317:[.469,.194,.561],120318:[.469,.194,.561],120319:[.469,0,.372],120320:[.474,.01,.422],120321:[.589,.01,.404],120322:[.458,.011,.561],120323:[.458,0,.5],120324:[.458,0,.744],120325:[.458,0,.5],120326:[.458,.205,.5],120327:[.458,0,.476],120328:[.694,0,.667],120329:[.694,0,.667,{ic:.029}],120330:[.705,.01,.639,{ic:.08}],120331:[.694,0,.722,{ic:.025}],120332:[.691,0,.597,{ic:.091}],120333:[.691,0,.569,{ic:.104}],120334:[.705,.011,.667,{ic:.063}],120335:[.694,0,.708,{ic:.06}],120336:[.694,0,.278,{ic:.06}],120337:[.694,.022,.472,{ic:.063}],120338:[.694,0,.694,{ic:.091}],120339:[.694,0,.542],120340:[.694,0,.875,{ic:.054}],120341:[.694,0,.708,{ic:.058}],120342:[.716,.022,.736,{ic:.027}],120343:[.694,0,.639,{ic:.051}],120344:[.716,.125,.736,{ic:.027}],120345:[.694,0,.646,{ic:.052}],120346:[.716,.022,.556,{ic:.053}],120347:[.688,0,.681,{ic:.109}],120348:[.694,.022,.688,{ic:.059}],120349:[.694,0,.667,{ic:.132}],120350:[.694,0,.944,{ic:.132}],120351:[.694,0,.667,{ic:.091}],120352:[.694,0,.667,{ic:.143}],120353:[.694,0,.611,{ic:.091}],120354:[.461,.01,.481],120355:[.694,.011,.517,{ic:.022}],120356:[.46,.011,.444,{ic:.055}],120357:[.694,.01,.517,{ic:.071}],120358:[.46,.011,.444,{ic:.028}],120359:[.705,0,.306,{ic:.188}],120360:[.455,.206,.5,{ic:.068}],120361:[.694,0,.517],120362:[.68,0,.239,{ic:.076}],120363:[.68,.204,.267,{ic:.069}],120364:[.694,0,.489,{ic:.054}],120365:[.694,0,.239,{ic:.072}],120366:[.455,0,.794],120367:[.454,0,.517],120368:[.461,.011,.5,{ic:.023}],120369:[.455,.194,.517,{ic:.021}],120370:[.455,.194,.517,{ic:.021}],120371:[.455,0,.342,{ic:.082}],120372:[.461,.011,.383,{ic:.053}],120373:[.571,.011,.361,{ic:.049}],120374:[.444,.01,.517,{ic:.02}],120375:[.444,0,.461,{ic:.079}],120376:[.444,0,.683,{ic:.079}],120377:[.444,0,.461,{ic:.076}],120378:[.444,.205,.461,{ic:.079}],120379:[.444,0,.435,{ic:.059}],120432:[.623,0,.525],120433:[.611,0,.525],120434:[.622,.011,.525],120435:[.611,0,.525],120436:[.611,0,.525],120437:[.611,0,.525],120438:[.622,.011,.525],120439:[.611,0,.525],120440:[.611,0,.525],120441:[.611,.011,.525],120442:[.611,0,.525],120443:[.611,0,.525],120444:[.611,0,.525],120445:[.611,0,.525],120446:[.621,.01,.525],120447:[.611,0,.525],120448:[.621,.138,.525],120449:[.611,.011,.525],120450:[.622,.011,.525],120451:[.611,0,.525],120452:[.611,.011,.525],120453:[.611,.007,.525],120454:[.611,.007,.525],120455:[.611,0,.525],120456:[.611,0,.525],120457:[.611,0,.525],120458:[.439,.006,.525],120459:[.611,.006,.525],120460:[.44,.006,.525],120461:[.611,.006,.525],120462:[.44,.006,.525],120463:[.617,0,.525],120464:[.442,.229,.525],120465:[.611,0,.525],120466:[.612,0,.525],120467:[.612,.228,.525],120468:[.611,0,.525],120469:[.611,0,.525],120470:[.436,0,.525,{ic:.011}],120471:[.436,0,.525],120472:[.44,.006,.525],120473:[.437,.221,.525],120474:[.437,.221,.525,{ic:.02}],120475:[.437,0,.525],120476:[.44,.006,.525],120477:[.554,.006,.525],120478:[.431,.005,.525],120479:[.431,0,.525],120480:[.431,0,.525],120481:[.431,0,.525],120482:[.431,.228,.525],120483:[.431,0,.525],120488:[.698,0,.869],120489:[.686,0,.818],120490:[.68,0,.692],120491:[.698,0,.958],120492:[.68,0,.756],120493:[.686,0,.703],120494:[.686,0,.9],120495:[.696,.01,.894],120496:[.686,0,.436],120497:[.686,0,.901],120498:[.698,0,.806],120499:[.686,0,1.092],120500:[.686,0,.9],120501:[.675,0,.767],120502:[.696,.01,.864],120503:[.68,0,.9],120504:[.686,0,.786],120506:[.686,0,.831],120507:[.675,0,.8],120508:[.697,0,.894],120509:[.686,0,.831],120510:[.686,0,.869],120511:[.686,0,.894],120512:[.696,0,.831],120513:[.686,.024,.958],120546:[.716,0,.75,{sk:.139}],120547:[.683,0,.759,{sk:.0833}],120548:[.68,0,.615,{ic:.106,sk:.0833}],120549:[.716,0,.833,{sk:.167}],120550:[.68,0,.738,{ic:.026,sk:.0833}],120551:[.683,0,.683,{ic:.04,sk:.0833}],120552:[.683,0,.831,{ic:.057,sk:.0556}],120553:[.704,.022,.763,{sk:.0833}],120554:[.683,0,.44,{ic:.064,sk:.111}],120555:[.683,0,.849,{ic:.04,sk:.0556}],120556:[.716,0,.694,{sk:.167}],120557:[.683,0,.97,{ic:.081,sk:.0833}],120558:[.683,0,.803,{ic:.085,sk:.0833}],120559:[.677,0,.742,{ic:.035,sk:.0833}],120560:[.704,.022,.763,{sk:.0833}],120561:[.68,0,.831,{ic:.056,sk:.0556}],120562:[.683,0,.642,{ic:.109,sk:.0833}],120564:[.683,0,.78,{ic:.026,sk:.0833}],120565:[.677,0,.584,{ic:.12,sk:.0833}],120566:[.705,0,.583,{ic:.117,sk:.0556}],120567:[.683,0,.667,{sk:.0833}],120568:[.683,0,.828,{ic:.024,sk:.0833}],120569:[.683,0,.612,{ic:.08,sk:.0556}],120570:[.704,0,.772,{ic:.014,sk:.0833}],120572:[.442,.011,.64,{sk:.0278}],120573:[.705,.194,.566,{sk:.0833}],120574:[.441,.216,.518,{ic:.025}],120575:[.717,.01,.444,{sk:.0556}],120576:[.452,.022,.466,{sk:.0833}],120577:[.704,.204,.438,{ic:.033,sk:.0833}],120578:[.442,.216,.497,{sk:.0556}],120579:[.705,.01,.469,{sk:.0833}],120580:[.442,.01,.354,{sk:.0556}],120581:[.442,.011,.576],120582:[.694,.012,.583],120583:[.442,.216,.603,{sk:.0278}],120584:[.442,0,.494,{ic:.036,sk:.0278}],120585:[.704,.205,.438,{sk:.111}],120586:[.441,.011,.485,{sk:.0556}],120587:[.431,.011,.57],120588:[.442,.216,.517,{sk:.0833}],120589:[.442,.107,.363,{ic:.042,sk:.0833}],120590:[.431,.011,.571],120591:[.431,.013,.437,{ic:.08,sk:.0278}],120592:[.443,.01,.54,{sk:.0278}],120593:[.442,.218,.654,{sk:.0833}],120594:[.442,.204,.626,{sk:.0556}],120595:[.694,.205,.651,{sk:.111}],120596:[.443,.011,.622],120597:[.715,.022,.531,{ic:.035,sk:.0833}],120598:[.431,.011,.406,{sk:.0556}],120599:[.705,.011,.591,{sk:.0833}],120600:[.434,.006,.667,{ic:.067}],120601:[.694,.205,.596,{sk:.0833}],120602:[.442,.194,.517,{sk:.0833}],120603:[.431,.01,.828],120604:[.711,0,.869,{sk:.16}],120605:[.686,0,.866,{sk:.0958}],120606:[.68,0,.657,{ic:.12,sk:.0958}],120607:[.711,0,.958,{sk:.192}],120608:[.68,0,.81,{ic:.015,sk:.0958}],120609:[.686,0,.773,{ic:.032,sk:.0958}],120610:[.686,0,.982,{ic:.045,sk:.0639}],120611:[.702,.017,.867,{sk:.0958}],120612:[.686,0,.511,{ic:.062,sk:.128}],120613:[.686,0,.971,{ic:.032,sk:.0639}],120614:[.711,0,.806,{sk:.192}],120615:[.686,0,1.142,{ic:.077,sk:.0958}],120616:[.686,0,.95,{ic:.077,sk:.0958}],120617:[.675,0,.841,{ic:.026,sk:.0958}],120618:[.703,.017,.837,{sk:.0958}],120619:[.68,0,.982,{ic:.044,sk:.0639}],120620:[.686,0,.723,{ic:.124,sk:.0958}],120622:[.686,0,.885,{ic:.017,sk:.0958}],120623:[.675,0,.637,{ic:.135,sk:.0958}],120624:[.703,0,.671,{ic:.131,sk:.0639}],120625:[.686,0,.767,{sk:.0958}],120626:[.686,0,.947,{sk:.0958}],120627:[.686,0,.714,{ic:.076,sk:.0639}],120628:[.703,0,.879,{sk:.0958}],120630:[.452,.008,.761,{sk:.0319}],120631:[.701,.194,.66,{sk:.0958}],120632:[.451,.211,.59,{ic:.027}],120633:[.725,.008,.522,{sk:.0639}],120634:[.461,.017,.529,{sk:.0958}],120635:[.711,.202,.508,{ic:.013,sk:.0958}],120636:[.452,.211,.6,{sk:.0639}],120637:[.702,.008,.562,{sk:.0958}],120638:[.452,.008,.412,{sk:.0639}],120639:[.452,.008,.668],120640:[.694,.013,.671],120641:[.452,.211,.708,{sk:.0319}],120642:[.452,0,.577,{ic:.031,sk:.0319}],120643:[.711,.201,.508,{sk:.128}],120644:[.452,.008,.585,{sk:.0639}],120645:[.444,.008,.682],120646:[.451,.211,.612,{sk:.0958}],120647:[.451,.105,.424,{ic:.033,sk:.0958}],120648:[.444,.008,.686],120649:[.444,.013,.521,{ic:.089,sk:.0319}],120650:[.453,.008,.631,{sk:.0319}],120651:[.452,.216,.747,{sk:.0958}],120652:[.452,.201,.718,{sk:.0639}],120653:[.694,.202,.758,{sk:.128}],120654:[.453,.008,.718],120655:[.71,.017,.628,{ic:.029,sk:.0958}],120656:[.444,.007,.483,{sk:.0639}],120657:[.701,.008,.692,{sk:.0958}],120658:[.434,.006,.667,{ic:.067}],120659:[.694,.202,.712,{sk:.0958}],120660:[.451,.194,.612,{sk:.0958}],120661:[.444,.008,.975],120662:[.694,0,.733],120663:[.694,0,.733],120664:[.691,0,.581],120665:[.694,0,.917],120666:[.691,0,.642],120667:[.694,0,.672],120668:[.694,0,.794],120669:[.716,.022,.856],120670:[.694,0,.331],120671:[.694,0,.764],120672:[.694,0,.672],120673:[.694,0,.978],120674:[.694,0,.794],120675:[.688,0,.733],120676:[.716,.022,.794],120677:[.691,0,.794],120678:[.694,0,.703],120680:[.694,0,.794],120681:[.688,0,.733],120682:[.715,0,.856],120683:[.694,0,.794],120684:[.694,0,.733],120685:[.694,0,.856],120686:[.716,0,.794],120782:[.654,.01,.575],120783:[.655,0,.575],120784:[.654,0,.575],120785:[.655,.011,.575],120786:[.656,0,.575],120787:[.655,.011,.575],120788:[.655,.011,.575],120789:[.676,.011,.575],120790:[.654,.011,.575],120791:[.654,.011,.575],120802:[.678,.022,.5],120803:[.678,0,.5],120804:[.677,0,.5],120805:[.678,.022,.5],120806:[.656,0,.5],120807:[.656,.021,.5],120808:[.677,.022,.5],120809:[.656,.011,.5],120810:[.678,.022,.5],120811:[.677,.022,.5],120812:[.715,.022,.55],120813:[.716,0,.55],120814:[.716,0,.55],120815:[.716,.022,.55],120816:[.694,0,.55],120817:[.694,.022,.55],120818:[.716,.022,.55],120819:[.695,.011,.55],120820:[.715,.022,.55],120821:[.716,.022,.55],120822:[.621,.01,.525],120823:[.622,0,.525],120824:[.622,0,.525],120825:[.622,.011,.525],120826:[.624,0,.525],120827:[.611,.01,.525],120828:[.622,.011,.525],120829:[.627,.01,.525],120830:[.621,.01,.525],120831:[.622,.011,.525]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBoldItalic=void 0;var r=Q(6),T=Q(238);e.sansSerifBoldItalic=r.AddPaths(T.sansSerifBoldItalic,{305:\"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",567:\"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBoldItalic=void 0,e.sansSerifBoldItalic={305:[.458,0,.256],567:[.458,.205,.286]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBold=void 0;var r=Q(6),T=Q(240);e.sansSerifBold=r.AddPaths(T.sansSerifBold,{33:\"111 669Q111 680 111 682T113 689T121 693T137 694H184H249Q255 686 256 681Q244 220 239 213Q236 208 229 208T183 207T137 207T127 213T118 431T111 669ZM110 71V95Q110 137 136 144Q140 146 183 146H200Q246 146 254 121Q256 115 256 73V51Q256 9 230 2Q225 0 181 0L138 1Q121 7 113 21L111 28L110 71\",34:\"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687\",35:\"61 365Q61 370 62 375T65 383T69 390T74 395T80 399T85 403T90 406L94 407H344L381 536Q418 668 426 680Q431 687 445 692Q451 694 457 694Q477 694 488 682T500 651Q500 645 466 528T431 409Q431 407 504 407H577L609 521Q651 668 656 675Q669 693 691 693Q710 693 721 680T733 651Q733 645 699 528T664 409Q664 407 743 407H823L827 405Q831 403 834 402T841 397T848 389T853 379T855 365Q855 337 823 324L731 323H639L619 253Q599 181 598 180V177H823L827 175Q831 173 834 172T841 167T848 159T853 149T855 135Q855 107 823 94L698 93H573L540 -21Q498 -168 493 -175Q480 -193 458 -193Q439 -193 428 -180T416 -151Q416 -144 450 -27T485 91Q485 93 412 93H340L307 -21Q265 -168 260 -175Q247 -193 225 -193Q206 -193 195 -180T183 -151Q183 -144 217 -27T252 91Q252 93 173 93L94 94Q61 105 61 135Q61 140 62 145T65 153T69 160T74 165T80 169T85 173T90 176L94 177H185L277 178L297 248L318 320V323H206L94 324Q61 335 61 365ZM551 320V323H479Q406 323 405 322Q404 319 385 249T365 178T438 177L510 178L530 248L551 320\",36:\"231 712L232 716Q232 719 232 722T234 729T239 736T246 743T256 748T271 750Q318 750 318 711V703Q393 692 451 656Q469 645 470 640Q470 635 461 587L453 537Q445 529 442 529Q438 529 424 540T384 565T330 585Q328 585 325 585T320 586L318 587V434Q322 433 333 429T350 424T365 418T382 409T399 397T419 380Q488 313 488 213Q488 24 334 -5L318 -8V-17Q318 -56 279 -56H272Q253 -56 243 -46T232 -30T231 -18V-8H224Q170 2 127 20T68 50T49 67Q49 71 58 122T68 176Q71 182 79 182Q83 182 98 169T145 138T216 110Q228 108 229 108H231V288Q167 299 114 356T61 496Q61 537 70 570T94 624T126 661T162 684T195 696T219 701L228 702H231V712ZM231 521Q231 583 230 583Q226 582 220 579T204 561T193 521Q193 491 212 472Q226 458 230 458Q231 458 231 521ZM318 112Q356 131 356 187Q356 237 318 263V112\",37:\"61 549Q61 733 218 749Q220 749 228 749T241 750Q286 750 321 735T369 708T389 683Q422 634 422 548V538Q422 519 420 501T408 453T381 401T328 364T243 347Q61 347 61 549ZM292 549Q292 663 242 663Q221 663 211 648T198 615T196 566V548Q196 471 206 454Q218 434 242 434Q292 434 292 549ZM243 -55Q223 -55 212 -42T201 -13Q201 -2 207 7Q209 11 480 371T758 738Q770 750 788 750Q805 750 817 738T830 709Q830 694 820 681L544 315Q273 -43 269 -47Q258 -55 243 -55ZM606 146Q606 330 763 346Q764 346 773 346T786 347Q831 347 866 332T914 305T934 280Q966 233 966 146V135Q966 115 964 97T952 49T925 -2T872 -40T788 -56Q606 -56 606 146ZM742 146V132Q742 107 743 93T748 62T762 39T787 31Q819 31 832 79Q837 97 837 146Q837 260 787 260Q767 260 757 246T744 214T742 169V146\",38:\"757 117Q762 117 769 110V3Q759 -7 718 -14T641 -22T571 -15T518 1T477 19T453 31L437 23Q350 -19 257 -22Q158 -22 103 30T47 155Q47 188 57 216T87 263T119 292T151 313L182 333L187 336L181 349Q150 431 150 506Q150 605 211 660T347 716Q417 716 471 668T526 543Q526 517 518 495T471 432T360 343L342 330Q342 327 358 306T402 250T458 189L467 181Q518 225 556 289T607 395L620 437Q622 443 630 443Q631 443 679 430Q718 420 725 418T733 409Q733 402 722 365T670 255T573 123Q562 111 563 111Q589 94 644 94Q678 94 703 100T740 111T757 117ZM397 544Q397 573 384 601T346 629Q320 629 299 607T277 538Q277 484 295 429Q301 413 301 412Q302 409 309 415Q397 476 397 544ZM227 258Q197 228 197 177Q197 150 207 126T234 95Q242 93 251 93Q288 93 337 107L349 110L328 131Q266 196 234 248L227 258\",39:\"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687\",40:\"79 250Q79 352 100 441T152 585T213 678T266 733L287 749Q288 750 324 750H359Q366 741 366 738Q366 734 356 721T329 682T296 623T262 531T238 407Q230 346 230 250Q230 142 244 55T278 -82T318 -165T352 -215T366 -238Q366 -242 359 -249H286L277 -242Q79 -74 79 250\",41:\"61 737Q61 750 85 750H106H141L150 742Q348 574 348 250T150 -242L141 -249L106 -250H87Q61 -250 61 -238Q61 -233 74 -216Q157 -113 183 51Q197 130 197 250T183 449Q174 505 158 554T126 634T95 687T71 722T61 737\",42:\"241 579Q241 582 228 639T215 702Q215 722 233 736T271 750Q296 750 315 736T334 702V697Q334 693 328 664T314 607L308 579L352 620Q389 654 397 660T417 668Q447 668 464 647T482 602Q482 591 479 583T472 569T459 559T443 552T421 546T397 538L342 521L397 504Q405 501 420 497T442 490T458 483T472 473T479 460T482 440Q482 416 465 395T417 374Q406 375 398 381T352 422L308 463L314 435Q321 407 327 378T334 345Q336 333 327 319T296 295Q288 293 275 293Q241 293 227 311T215 345Q215 349 221 378T234 435L241 463L197 422Q160 388 152 382T132 374Q102 374 85 395T67 440Q67 451 70 459T77 473T90 483T106 490T128 496T152 504L207 521L152 538Q144 541 129 545T107 552T91 559T77 569T70 582T67 602Q67 626 84 647T132 668Q143 667 151 661T197 620L241 579\",43:\"61 250Q61 276 94 292H386V436V535Q386 577 388 589T401 607Q411 617 427 617Q458 617 468 587Q470 581 470 436V292H762L766 290Q770 288 773 287T780 282T787 274T792 264T794 250Q794 222 762 209L616 208H470V64Q470 -81 468 -87Q458 -116 428 -116T388 -87Q386 -81 386 64V208H240L94 209Q61 220 61 250\",44:\"81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139\",45:\"12 230Q12 257 26 265T80 274Q88 274 114 274T158 273T201 273T235 274Q276 274 290 266T305 230T291 194T235 185Q226 185 201 185T159 186Q143 186 119 186T85 185Q43 185 28 193T12 230\",46:\"219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219\",47:\"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249\",58:\"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219\",59:\"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139\",61:\"94 324Q61 335 61 366Q61 396 91 405Q96 407 429 407H762Q763 406 767 404T774 400T781 395T787 387T792 378T794 365Q794 338 762 324H94ZM94 94Q61 105 61 135Q61 149 69 160T92 175Q97 177 430 177H762L766 175Q770 173 773 172T780 167T787 159T792 149T794 135Q794 107 762 94H94\",63:\"61 644Q61 652 87 666T157 693T244 705Q344 705 400 671T457 551Q457 516 446 490T422 451T387 421T356 391Q330 361 318 332T305 292T303 252Q303 218 300 213T290 208T244 207H220Q194 207 188 213Q187 214 186 215V255Q187 282 188 296T198 345T229 417T288 496Q306 515 306 559Q306 596 296 607T253 618Q214 618 185 607T143 583T120 558T103 547Q99 547 95 551Q93 553 77 597T61 644ZM171 71V95Q171 137 197 144Q201 146 244 146H261Q307 146 315 121Q317 115 317 73V51Q317 9 291 2Q286 0 242 0L199 1Q182 7 174 21L172 28L171 71\",64:\"61 264T61 347T82 494T136 596T217 660T311 694T410 704Q460 704 471 703Q534 694 577 666Q633 623 651 552T670 370V342Q670 249 633 195Q583 116 454 116Q238 116 238 347Q238 443 276 499Q328 578 456 578Q488 578 494 577L504 575Q475 617 430 617H421Q196 617 196 347Q196 215 253 143Q310 76 427 76Q499 76 561 102L575 107H664Q671 97 671 94V89L663 81Q566 -11 422 -11Q365 -11 316 -2T219 33T137 97T82 200ZM469 490Q459 492 453 492Q429 492 405 472Q374 439 374 347Q374 233 423 210Q436 202 454 202L486 210Q536 228 536 347Q536 461 486 484Q476 490 469 490\",91:\"318 -206Q318 -235 305 -243T255 -251Q248 -251 229 -251T198 -250H143Q112 -250 99 -246T81 -225Q79 -219 79 250T81 725Q85 741 98 745T143 750H198Q210 750 229 750T255 751Q291 751 304 743T318 707Q318 680 301 668Q293 663 255 663H224V-163H255Q293 -163 301 -168Q318 -180 318 -206\",93:\"24 706Q24 734 39 742T90 751Q97 751 114 751T143 750H198Q230 750 243 746T261 725Q263 719 263 250T261 -225Q257 -241 244 -245T198 -250H143Q131 -250 112 -250T86 -251Q50 -251 37 -243T24 -207Q24 -180 41 -168Q49 -163 87 -163H118V663H87H71Q24 663 24 706\",94:\"108 550Q108 554 135 589T190 658T219 692Q221 694 275 694Q328 694 330 693Q331 692 381 629T438 557Q441 553 441 549T434 538L399 537Q363 537 362 538Q361 538 318 575L275 611Q274 611 231 575Q188 538 187 538Q186 537 150 537L115 538Q108 545 108 550\",95:\"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66\",126:\"92 215Q92 259 122 301T204 344Q238 344 264 329T310 300T343 285Q356 285 361 295T369 322T377 344H450Q457 334 457 330Q457 281 427 240T344 198Q312 198 285 213T239 242T206 257Q188 257 182 230T172 199L137 198H120Q102 198 97 200T92 215\",305:\"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",567:\"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84\",768:\"-458 682Q-458 690 -452 692T-426 694H-381H-314L-312 691Q-311 691 -305 682T-287 655T-263 622L-218 555V549Q-218 544 -224 538L-259 537Q-295 537 -296 538Q-298 539 -376 606T-456 676Q-458 680 -458 682\",769:\"-290 537H-310Q-334 537 -334 549Q-334 553 -311 588T-264 656L-241 690Q-240 690 -239 691T-236 693Q-235 694 -167 694H-100Q-93 684 -93 681T-94 677Q-95 675 -173 607T-255 538Q-256 537 -290 537\",770:\"-442 550Q-442 554 -415 589T-360 658T-331 692Q-329 694 -275 694Q-222 694 -220 693Q-219 692 -169 629T-112 557Q-109 552 -109 549Q-109 545 -116 538L-151 537Q-187 537 -188 538Q-189 538 -232 575L-275 611Q-276 611 -319 575Q-362 538 -363 538Q-364 537 -400 537L-435 538Q-442 545 -442 550\",771:\"-458 565Q-458 609 -428 651T-346 694Q-312 694 -286 679T-240 650T-207 635Q-194 635 -189 645T-181 672T-173 694H-100Q-93 684 -93 680Q-93 631 -123 590T-206 548Q-238 548 -265 563T-311 592T-344 607Q-362 607 -368 580T-378 549L-413 548H-430Q-448 548 -453 550T-458 565\",772:\"-84 660Q-81 656 -77 653V567L-81 564L-84 561L-274 560H-383Q-469 560 -471 565L-472 566Q-474 569 -474 611L-473 653Q-469 659 -466 659Q-465 660 -274 660H-84\",774:\"-123 694Q-80 694 -80 657Q-80 626 -99 601T-161 563Q-199 552 -275 552Q-352 552 -389 563Q-470 586 -470 655Q-470 667 -468 673Q-457 694 -435 694H-431Q-408 694 -396 685Q-387 676 -387 671Q-384 661 -275 661Q-167 661 -164 671Q-164 674 -163 677T-151 687T-123 694\",775:\"-329 596Q-346 602 -351 611T-356 638V646Q-356 653 -356 654T-356 661T-355 668T-353 673T-351 679T-347 684T-341 689T-332 693T-274 695H-221Q-202 683 -198 676T-194 645Q-194 632 -195 625T-202 610T-221 596H-329\",776:\"-331 695Q-312 683 -308 676T-304 645Q-304 632 -304 626T-311 610T-331 596L-380 595H-408Q-448 595 -457 617Q-459 621 -459 645T-457 673Q-448 696 -409 696Q-405 696 -396 696T-380 695H-331ZM-247 644Q-247 658 -246 665T-239 680T-221 694Q-217 695 -169 695H-143Q-102 695 -93 672Q-91 664 -91 645V635Q-91 613 -106 602Q-113 597 -121 596T-171 595L-219 596Q-232 600 -238 608T-246 622T-247 644\",778:\"-365 616Q-365 658 -331 676T-256 694Q-253 694 -247 694T-236 693Q-166 693 -139 666Q-119 644 -119 616T-139 565Q-166 538 -237 538H-242Q-365 538 -365 616ZM-181 616Q-181 641 -195 647T-242 654Q-258 654 -266 654T-284 650T-298 638T-303 616Q-303 592 -289 585T-242 577Q-209 577 -195 584T-181 616\",779:\"-426 686Q-424 694 -394 694H-350H-283Q-277 686 -277 682Q-277 673 -317 608T-361 538L-396 537H-420Q-432 537 -436 539T-440 548Q-440 560 -434 616Q-432 633 -430 650T-427 677L-426 686ZM-243 686Q-241 694 -211 694H-167H-100Q-94 686 -94 682Q-94 673 -134 608T-178 538L-213 537H-237Q-249 537 -253 539T-257 548Q-257 560 -251 616Q-249 633 -247 650T-244 677L-243 686\",780:\"-442 645Q-442 657 -418 657H-398Q-393 657 -388 657T-379 657T-371 656T-365 656H-363L-319 620L-276 583Q-275 583 -232 619Q-189 656 -188 656Q-187 657 -151 657H-116Q-109 649 -109 645Q-109 642 -112 637Q-118 629 -168 566T-220 501Q-222 500 -275 500Q-329 500 -331 501Q-442 634 -442 645\",8211:\"0 284Q0 318 26 325Q30 327 274 327Q469 327 497 327T532 322Q549 310 549 283Q549 257 532 245Q525 241 498 241T275 240Q31 240 26 242Q0 249 0 284\",8212:\"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284\",8213:\"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284\",8215:\"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66\",8216:\"87 443L81 449V581L119 636Q125 644 131 653T141 667T148 677T154 685T158 689T163 692T167 693T173 694H190H201Q226 694 226 683Q226 678 208 635T189 590Q189 588 204 588H219Q222 584 226 581V449L219 443H87\",8217:\"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687\",8220:\"144 443L138 449V581L176 636Q182 644 188 653T198 667T205 677T211 685T215 689T220 692T224 693T230 694H247H258Q283 694 283 683Q283 678 265 635T246 590Q246 588 261 588H276Q279 584 283 581V449L276 443H144ZM381 443L375 449V581L413 636Q419 644 425 653T435 667T442 677T448 685T452 689T457 692T461 693T467 694H484H495Q520 694 520 683Q520 678 502 635T483 590Q483 588 498 588H513Q516 584 520 581V449L513 443H381\",8221:\"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687\",8260:\"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249\",8710:\"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBold=void 0,e.sansSerifBold={33:[.694,0,.367],34:[.694,-.442,.558],35:[.694,.193,.917],36:[.75,.056,.55],37:[.75,.056,1.029],38:[.716,.022,.831],39:[.694,-.442,.306],40:[.75,.249,.428],41:[.75,.25,.428],42:[.75,-.293,.55],43:[.617,.116,.856],44:[.146,.106,.306],45:[.273,-.186,.367],46:[.146,0,.306],47:[.75,.249,.55],58:[.458,0,.306],59:[.458,.106,.306],61:[.407,-.094,.856],63:[.705,0,.519],64:[.704,.011,.733],91:[.75,.25,.343],93:[.75,.25,.343],94:[.694,-.537,.55],95:[-.023,.11,.55],126:[.344,-.198,.55],305:[.458,0,.256],567:[.458,.205,.286],768:[.694,-.537,0],769:[.694,-.537,0],770:[.694,-.537,0],771:[.694,-.548,0],772:[.66,-.56,0],774:[.694,-.552,0],775:[.695,-.596,0],776:[.695,-.595,0],778:[.694,-.538,0],779:[.694,-.537,0],780:[.657,-.5,0],8211:[.327,-.24,.55],8212:[.327,-.24,1.1],8213:[.327,-.24,1.1],8215:[-.023,.11,.55],8216:[.694,-.443,.306],8217:[.694,-.442,.306],8220:[.694,-.443,.558],8221:[.694,-.442,.558],8260:[.75,.249,.55],8710:[.694,0,.917]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifItalic=void 0;var r=Q(6),T=Q(242);e.sansSerifItalic=r.AddPaths(T.sansSerifItalic,{33:\"160 187L257 694H306Q355 694 355 693L238 186H199Q160 186 160 187ZM110 2Q111 3 120 49T131 96Q131 98 180 98T229 96L219 50Q209 3 208 2V0H110V2\",34:\"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647\",35:\"793 170Q809 162 809 149Q809 145 807 141T802 135T796 132L793 130H547L472 -27Q397 -184 394 -187Q389 -194 379 -194Q367 -194 362 -183Q359 -179 359 -173Q360 -168 431 -20L503 129Q503 130 410 130H317L242 -27Q167 -184 164 -187Q159 -194 149 -194Q137 -194 132 -183Q129 -179 129 -173Q130 -168 201 -19L273 130H187L100 131Q87 141 87 150Q87 162 102 170H294L331 248Q339 265 349 286T365 318L370 328Q370 330 258 330Q145 330 142 332Q129 338 129 351Q129 362 140 368Q146 370 267 370L391 371L467 527Q542 684 544 686Q544 688 549 691T560 694H562Q565 693 567 692T571 690T575 686T578 681T579 672Q577 665 507 520T436 373L435 370H528L621 371L692 518Q767 675 769 677Q775 694 789 694Q798 694 804 688T809 672Q806 664 737 519L665 371L751 370Q835 370 841 368Q851 362 851 350Q851 337 841 334T799 330H765H741H645L606 250L568 170H793ZM600 328Q600 330 508 330H415Q412 326 338 171Q338 170 431 170H524L561 248Q569 265 579 286T595 318L600 328\",36:\"228 70Q233 92 246 155T270 266T280 316Q271 318 265 320T237 333T200 360T172 403T159 468Q159 537 205 600T325 691Q352 701 360 701Q361 701 361 701T362 703T364 711T368 727L372 750H409Q445 750 445 749L436 705Q436 703 450 702T494 691T554 657L565 649Q562 642 548 604L534 568Q511 591 484 605T440 621L424 623L419 624L372 405Q399 400 424 384Q490 338 490 247V240Q490 156 430 85Q374 13 294 -5L284 -7L280 -30Q279 -35 278 -41T275 -52L274 -55Q274 -56 237 -56Q201 -56 201 -54Q202 -53 205 -34T211 -11Q211 -9 206 -9Q154 -2 115 19Q80 35 56 59L88 141L99 131Q109 121 119 113T141 99T160 89T180 82T197 77T214 73T228 70ZM303 426Q304 427 313 471T332 564T345 620L335 616Q287 596 263 549Q252 525 252 499Q252 470 267 451T298 426Q303 424 303 426ZM302 75Q305 75 315 80T340 98T367 125T390 164T399 214Q399 247 384 268T349 297Q338 247 326 186L302 75\",37:\"268 347Q224 347 195 386T165 488Q165 517 173 552Q191 637 246 693T349 749Q389 749 414 725T448 673T456 614Q456 506 396 427T268 347ZM372 604Q372 674 339 674Q311 674 290 633T261 549T253 482V474Q253 438 272 426Q277 424 286 424Q319 424 345 485T372 604ZM189 -56Q179 -56 173 -49T167 -37Q167 -30 347 198Q425 296 475 360Q780 745 785 747Q790 750 796 750Q814 748 814 730Q814 725 811 719L204 -49Q198 -56 189 -56ZM523 87Q523 184 583 265T713 347Q758 347 786 308T815 207Q815 110 757 28T629 -55Q576 -55 550 -12T523 87ZM729 200Q729 271 696 271Q675 271 658 247T631 189T616 125T611 76Q611 21 644 21H647Q672 21 700 77T729 200\",38:\"219 -22Q158 -22 117 13T71 111Q71 131 74 150T84 185T98 215T118 241T137 262T159 281T179 295T199 308L214 318L258 348L256 362Q254 373 254 413V435Q254 483 271 537T325 641T411 708Q427 715 441 715Q446 716 455 716Q504 716 534 681T565 590Q565 522 519 468T377 347L358 334Q359 333 363 320T374 290T387 262Q404 227 428 187T460 139Q521 183 574 251T651 362T674 409L710 398Q746 388 747 388Q747 381 720 333T635 213T517 94L510 87Q542 57 598 57Q649 57 708 72Q716 75 718 75L709 34L701 -7Q636 -22 578 -22Q531 -22 498 -8T428 34L408 25Q314 -22 219 -22ZM480 579Q480 640 436 640Q410 640 385 615T351 554Q340 513 340 457Q340 413 343 410Q343 406 360 419Q431 471 455 505T480 579ZM245 57Q279 59 311 67T359 81T375 89T358 113T318 178T281 260L274 277L245 257Q167 205 167 135Q167 110 174 93T194 69T217 60T237 57H245\",39:\"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647\",40:\"195 37Q195 -7 200 -47T213 -113T231 -166T250 -204T268 -232T280 -250H204L194 -238Q104 -124 104 55Q104 238 181 432T405 740L417 750H454Q491 750 491 749L468 729Q446 709 411 667T337 565T262 405T208 188Q195 110 195 37\",41:\"300 463Q300 634 222 740L214 750H290L299 740Q300 738 309 726T323 707T337 682T353 651T367 613T379 566T387 510T390 444Q390 314 344 156T203 -125Q179 -155 145 -191Q111 -224 89 -241L78 -250H2Q4 -248 27 -227T65 -189T107 -140T155 -71T200 16T244 129T278 266Q300 372 300 463\",42:\"193 608Q193 628 210 644T246 660Q250 660 252 660T257 658T264 654T272 648T284 638T302 623Q340 590 340 593Q341 594 345 623T354 682T360 715Q365 729 378 739T407 750Q424 750 433 740T443 720Q443 712 427 652L410 591L462 623Q505 650 514 655T534 660Q549 660 558 650T568 625Q568 617 567 611T560 599T551 590T536 580T519 571T496 561T470 548L429 528L474 500Q482 495 492 489T506 481T516 475T523 469T527 464T529 458T530 450Q530 430 514 414T479 397H475Q468 397 460 402T423 433Q414 440 404 448T388 461L383 465L365 344Q348 306 314 306Q302 306 292 313T281 338Q281 347 297 404L313 464L260 433Q201 397 195 397H189Q173 397 165 407T156 432Q156 438 157 443T161 452T166 460T175 468T185 475T198 482T212 489T230 497T250 506L295 528L250 556Q203 582 202 585Q193 591 193 608\",43:\"108 244T108 250T112 261T119 268T124 270H426V272Q428 274 457 419Q489 565 492 573Q497 583 508 583Q516 583 522 577T528 565Q528 553 498 417Q491 384 483 346T471 288L467 270H760Q775 262 775 250T760 230H458Q456 221 426 77T394 -71Q389 -83 375 -83Q367 -83 362 -78T356 -64Q356 -58 387 84Q394 118 401 155T413 210L417 229Q417 230 271 230H124Q123 230 120 232T112 239\",44:\"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2\",45:\"66 257V259H332V257L324 220L317 186H184Q51 186 51 187T58 220T66 257\",46:\"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2\",47:\"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744\",48:\"245 -22Q209 -22 181 -11T135 20T107 65T92 116T88 171Q88 235 114 354T194 557Q226 606 269 635T340 671T392 678H395Q422 678 446 670T495 643T534 582T549 481Q549 430 534 350T499 213Q459 89 379 25Q315 -22 247 -22H245ZM430 582Q408 601 378 601Q313 601 269 534Q234 475 205 341Q181 232 181 174Q181 104 209 76Q231 54 260 54T318 73T368 125Q410 194 447 375Q460 445 460 487Q460 555 430 582\",49:\"234 613Q277 613 331 628T428 678H439Q451 678 451 676Q450 671 387 373T323 74T384 73H445L430 0H259L88 1L104 73H229L332 560Q278 541 198 539Q198 540 198 541T199 546T200 554T202 564T205 576L213 612H219Q221 612 226 612T234 613\",50:\"190 460Q189 460 181 475T164 507T155 527Q155 535 182 571Q259 678 380 678Q462 678 506 630T551 513V507Q551 418 487 349Q469 329 441 305T391 265T344 232T316 212Q158 87 158 86T188 85Q194 85 234 85T311 86Q467 86 467 85Q451 9 449 2V0H50Q54 18 58 40L67 79L133 133Q246 226 269 243Q369 318 410 373T452 492Q452 535 433 560T393 592T350 599Q311 599 279 578T231 532T203 484T190 460\",51:\"446 542Q446 576 424 590T372 605Q330 605 288 583T216 524Q209 515 208 516Q207 517 192 549L178 580L187 589Q224 627 276 652T386 678Q456 678 500 642T544 550Q544 515 530 482T495 427T453 387T418 362L403 353L413 348Q440 335 462 313Q500 271 500 217Q500 135 423 57T236 -22T63 59L56 68L85 141Q106 112 125 98Q177 54 254 54Q315 54 355 105T396 218Q396 242 393 254Q380 301 335 313Q327 315 280 316Q233 316 233 318L249 392Q298 392 322 399Q373 408 409 453T446 542\",52:\"78 235L411 656H465Q519 656 519 655T475 447T430 237V235H521V233L505 160Q505 159 459 159H414L380 0H286L320 159H62L63 164Q64 169 66 179T70 198L78 235ZM342 235L421 607Q420 607 419 604Q409 535 197 267Q173 236 173 235H342\",53:\"330 350Q263 350 214 272H133V275Q134 276 174 467L214 655Q214 656 385 656H555V653Q555 652 554 647T550 631T546 613L539 577H284L265 486Q261 464 256 441T248 406L246 395L250 398Q255 401 264 406T286 415T315 423T350 427Q412 427 455 381T498 256Q498 150 415 64T222 -22Q186 -22 155 -12T105 12T74 41T55 65T50 77L51 79Q61 89 78 112L104 145L107 138Q110 130 114 123T125 106T142 88T165 72T196 60T236 55Q282 55 316 79T366 140T389 208T396 267Q396 310 378 330T337 350H330\",54:\"437 605Q397 605 361 585T301 536T261 477T236 426T228 401L236 408Q244 414 260 424T296 445T345 462T402 469H404Q422 469 434 467T465 446T498 394Q515 351 515 307Q515 254 497 193T439 85Q352 -22 246 -22Q220 -22 196 -14T148 15T109 78T94 179Q94 272 123 373Q163 505 257 591T450 678Q474 678 498 674T535 664T548 656L540 621L532 586L520 590Q509 594 485 599T437 605ZM339 392Q281 392 233 334T185 163V158Q185 87 230 61Q244 54 262 54Q325 54 371 122Q395 158 407 217T419 298Q419 337 401 364T339 392\",55:\"173 614L181 656H389Q596 656 596 655L595 650Q594 645 592 635T588 616L580 578L554 551Q313 307 245 4L242 -11H192Q143 -11 143 -10Q144 0 148 17T169 89T212 198T285 327T393 470Q423 504 472 550Q479 555 485 561T496 571L329 570Q163 570 163 571L164 577Q166 583 168 593T173 614\",56:\"159 470Q159 547 229 612T394 678Q467 678 510 636T554 533Q554 512 549 493T535 458T515 429T492 405T467 386T443 372T423 362T409 356L404 354Q404 353 405 353Q411 353 432 341T476 295T500 218Q500 134 424 56T246 -22Q175 -22 126 22T77 143Q77 204 110 251T188 327L202 334Q216 340 229 346T243 353T235 358T214 372T189 393T168 426T159 470ZM467 527Q467 605 375 605Q317 605 281 566T244 472Q244 429 271 411T334 392Q392 392 429 430T467 527ZM405 228Q405 262 384 289T315 316Q257 316 216 266T174 144Q174 95 199 75T262 54Q329 54 367 109T405 228\",57:\"220 594Q303 677 389 677Q545 677 545 479Q545 413 526 327Q493 175 398 77T202 -22Q124 -22 77 25L130 91L137 83Q169 54 218 54Q255 54 290 76T347 129Q364 151 380 182T403 232T411 256Q410 255 390 241T353 217T303 197T236 187Q195 187 173 209Q155 226 140 263T124 352Q124 392 135 435Q154 527 220 594ZM455 497Q455 605 383 605Q340 605 305 577T246 492Q220 411 220 360Q220 278 279 264Q280 264 287 264T299 263Q347 263 387 302Q455 375 455 497\",58:\"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2\",59:\"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2\",61:\"142 368Q145 370 463 370Q780 370 784 368Q796 364 796 350T784 332Q780 330 463 330Q145 330 142 332Q129 338 129 351Q129 362 142 368ZM88 137T88 150T102 170H738Q739 170 742 168T750 161T754 150T750 139T743 132T738 130H102Q88 137 88 150\",63:\"194 652Q194 654 218 666T284 691T362 704Q444 704 490 678T536 583Q536 541 516 500T459 433Q415 400 387 371T343 313T321 266T307 216L301 186H262Q223 186 223 187Q224 199 228 218T250 288T294 377Q317 413 344 440T391 481T414 499Q442 527 442 574Q442 584 441 590T433 607T409 623T362 629Q335 629 310 624T267 610T235 595T214 582T205 576L200 614Q194 651 194 652ZM173 2Q174 3 183 49T194 96Q194 98 243 98T292 96L282 50Q272 3 271 2V0H173V2\",64:\"120 267Q120 377 179 478T336 642T538 705Q610 705 658 662T707 513Q707 425 681 331Q658 241 590 179T447 117Q386 117 343 163T300 288Q300 397 374 486T544 576Q575 576 608 562Q590 628 517 628Q406 628 309 522T212 278Q212 179 267 122T404 65T550 91H631Q513 -10 390 -10Q265 -10 193 70T120 267ZM600 397Q600 441 581 471T530 501Q476 501 433 436T390 298Q390 254 409 224T462 193Q512 193 556 257T600 397\",91:\"148 252L253 750H339Q425 750 425 749L424 744Q423 739 421 729T417 711L409 675L367 674H325L235 252Q145 -167 145 -172Q145 -174 187 -174H229V-176Q213 -240 213 -250H127Q41 -250 41 -248Q41 -245 148 252\",93:\"353 749Q353 746 303 512T200 27T141 -250H-31Q-31 -240 -15 -176V-174H70L250 674H208L165 675L181 750H267Q353 750 353 749\",94:\"190 527L360 694H434L484 611Q533 528 533 527H457L390 632L385 639L266 527H190\",95:\"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75\",126:\"330 327Q356 326 388 298T446 269Q470 269 484 327H522Q560 327 560 325L557 316Q554 306 549 292T535 263T512 232T480 208Q453 193 429 193T370 222T315 251Q285 251 275 193H199V197Q214 257 251 292T330 327\",305:\"168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224\",567:\"-54 -96L-48 -104Q-41 -111 -27 -118T7 -126Q60 -126 82 -87Q85 -81 140 181L196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204Q-13 -204 -41 -196T-83 -180T-96 -170Q-55 -96 -54 -96\",768:\"-262 681L-270 694H-177L-132 612Q-89 530 -87 528Q-87 527 -125 527H-163L-208 598Q-254 670 -262 681\",769:\"-96 625L-29 694H63Q42 673 -31 605L-114 527H-190L-176 541Q-160 559 -96 625\",770:\"-310 527L-140 694H-66L-16 611Q33 528 33 527H-43L-110 632L-115 639L-234 527H-310\",771:\"-170 677Q-144 676 -112 648T-54 619Q-30 619 -16 677H22Q60 677 60 675L57 666Q54 656 49 642T35 613T12 582T-20 558Q-47 543 -71 543T-130 572T-185 601Q-215 601 -225 543H-301V547Q-286 607 -249 642T-170 677\",772:\"-314 553L-297 631H-116Q64 631 64 630Q60 612 56 591L47 553L-133 552Q-314 552 -314 553\",774:\"-142 508Q-205 508 -244 548T-284 652Q-284 666 -281 683L-280 694H-204Q-205 689 -205 677Q-205 650 -196 631T-173 604T-147 593T-125 590Q-85 590 -50 618T-5 686L-2 694H73V690Q53 610 -10 559T-142 508\",775:\"-180 578Q-179 579 -170 627T-158 678V680H-54V678Q-56 675 -65 627T-76 578V576H-180V578\",776:\"-273 584Q-272 585 -262 632L-252 678V680H-154V678L-164 632Q-174 585 -175 584Q-175 582 -224 582T-273 584ZM-78 586Q-78 587 -69 632T-58 678V680H40L39 677Q39 676 38 670T34 651T29 628L19 583L-30 582H-79L-78 586\",778:\"-227 597Q-227 639 -186 666T-102 693H-97Q-29 693 -8 649Q-2 637 -2 623Q-2 582 -43 555T-132 527Q-171 527 -199 546T-227 597ZM-59 619Q-59 635 -68 643T-104 652Q-142 652 -156 636T-171 602Q-171 569 -123 569Q-119 569 -111 570T-99 571Q-59 582 -59 619\",779:\"-236 619L-195 694H-149Q-103 694 -103 693L-211 527H-287L-282 536Q-281 539 -236 619ZM-70 619L-29 694H17Q63 694 63 693L-45 527H-121L-116 536Q-115 539 -70 619\",780:\"-283 654H-207L-140 549L-135 542L-16 654H60L-109 487H-147L-184 488L-234 570Q-283 653 -283 654\",913:\"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492\",914:\"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322\",915:\"87 2Q88 4 160 346T234 689Q234 691 440 691T646 689Q643 686 629 611H475L321 612Q193 4 191 2V0H87V2\",916:\"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576\",917:\"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2\",918:\"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54\",919:\"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2\",920:\"119 260Q119 348 157 433T254 579T387 677T533 715Q701 715 772 574Q804 511 804 431Q804 315 744 209T586 41T384 -22Q262 -22 191 59T119 260ZM706 426Q706 524 655 582T525 640Q454 640 395 600T293 502Q256 447 237 383T218 266Q218 168 269 112T401 55Q518 55 612 166T706 426ZM283 349L293 397H473Q652 397 652 396Q647 374 642 347L632 299H452Q273 299 273 300Q278 322 283 349\",921:\"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348\",922:\"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223\",923:\"28 0L401 694H504V690Q505 686 543 345T582 1Q582 0 528 0H473V3Q472 6 460 113T435 359T422 558Q422 593 424 603L425 610L424 608Q414 572 343 431Q287 316 143 49L117 1L73 0H28\",924:\"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691\",925:\"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609\",926:\"193 687Q193 688 479 688H765V686Q764 685 755 642L747 600H461L175 601Q175 602 184 645L193 687ZM196 400Q196 401 418 401T640 400L622 315Q622 314 400 314T178 315L196 400ZM42 2Q43 3 51 44T60 87H64Q68 87 75 87T93 87T119 87T151 88T190 88T237 88T291 88T352 88H643Q638 66 634 44T627 13T624 2V0H42V2\",927:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58\",928:\"86 2Q88 4 160 346T233 689Q233 691 501 691Q768 691 768 689Q766 688 694 346T621 2V0H517V2Q518 3 582 304T646 609L648 615H321L190 0H86V2\",929:\"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513\",931:\"194 655L202 694H508Q813 694 813 693Q809 675 805 653L797 614H559L321 615Q327 606 405 478L485 347Q449 311 348 203T247 86Q247 84 294 84Q303 84 359 84T465 85H684Q684 84 675 42L666 0H360L55 1L195 154Q346 319 347 320L359 333L273 473Q187 614 186 614L187 620Q188 625 190 635T194 655\",932:\"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165\",933:\"357 637Q320 637 297 612T266 555H173Q178 576 188 598Q214 651 265 683T373 716Q497 716 497 542V509L504 526Q579 715 711 715Q773 715 808 677T843 589Q843 576 840 555H747L748 557Q748 559 748 563T749 574V580Q749 604 731 622Q715 638 693 638Q591 638 543 465Q531 425 506 309T462 98T441 2V0H337V2Q425 401 436 486Q438 504 438 526Q438 637 364 637H357\",934:\"124 308Q124 399 208 481T433 587Q437 587 437 589Q438 590 449 643L459 694H508Q557 694 557 693Q557 691 546 641T535 587Q543 587 562 583T614 565T674 531T722 472T743 387Q743 288 656 209T449 110L433 106Q411 3 410 2Q410 0 361 0H312L313 3Q313 5 324 56L335 107H331L321 108Q311 110 297 114T266 124T228 141T190 168Q124 225 124 308ZM227 315Q227 282 239 257T270 218T306 197T338 186L350 184H351L386 346Q420 507 420 509H419Q411 509 393 505T342 485T284 444Q227 387 227 315ZM642 381Q642 413 629 437T599 475T563 496T533 507T519 510Q518 510 484 348T450 184Q544 201 593 258T642 381\",935:\"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14\",936:\"325 556Q325 524 310 447T294 330Q294 289 304 260Q314 234 333 216T364 192T380 187L488 694H585V691Q584 689 531 438L478 188H479Q485 188 503 195T555 231T613 305Q637 352 654 435Q662 470 669 496T681 538T690 562T698 578T704 587Q719 609 733 615T772 621H802H854V619L838 546Q838 545 832 545Q775 539 749 418Q716 274 638 196Q616 173 590 156T543 131T503 117T473 110T460 106Q460 105 450 54T438 2V0H340V2Q341 3 351 54T362 106Q363 107 358 108T344 111T322 117T295 128T267 145T239 171T216 207T200 256T194 319Q194 356 203 408T213 483Q213 517 203 530T182 544T171 546Q184 609 187 619V621H239Q286 621 294 620T309 612Q325 596 325 556\",937:\"148 407Q148 475 182 534T269 633T386 694T511 716Q622 716 695 658T769 507Q769 461 747 409T699 321T628 225T562 136Q533 90 533 86Q542 85 557 85Q564 85 583 85T614 86Q695 86 695 85Q679 9 677 2V0H425Q426 3 433 30T447 72T480 131T549 241L554 248Q558 254 563 261T576 281T592 306T609 335T625 366T640 400T653 434T661 466T664 498Q664 562 618 601T497 640Q416 640 351 596T262 482Q250 441 250 392T276 237T302 70V56Q302 28 296 2V0H44V2L62 85Q62 86 143 86L225 85V88Q224 89 224 89T224 91T224 95T223 101T222 110T220 123T216 140T209 163T200 191T188 227Q148 344 148 407\",8211:\"59 275L66 312H316Q565 312 565 311T558 275T549 238Q549 236 299 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8212:\"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8213:\"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8215:\"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75\",8216:\"309 567L299 520Q289 474 288 473Q288 471 239 471T190 473L192 480Q193 486 196 499T201 522L211 569L287 694H312L335 693L332 685Q328 677 321 661T307 630L279 570L294 569Q309 569 309 567\",8217:\"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647\",8220:\"393 567L383 520Q373 474 372 473Q372 471 323 471T274 473L276 480Q277 486 280 499T285 522L295 569L371 694H396L419 693L416 685Q412 677 405 661T391 630L363 570L378 569Q393 569 393 567ZM587 567L577 520Q567 474 566 473Q566 471 517 471T468 473L470 480Q471 486 474 499T479 522L489 569L565 694H590L613 693L610 685Q606 677 599 661T585 630L557 570L572 569Q587 569 587 567\",8221:\"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647\",8260:\"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744\",8710:\"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifItalic=void 0,e.sansSerifItalic={33:[.694,0,.319,{ic:.036}],34:[.694,-.471,.5],35:[.694,.194,.833,{ic:.018}],36:[.75,.056,.5,{ic:.065}],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278,{ic:.057}],40:[.75,.25,.389,{ic:.102}],41:[.75,.25,.389],42:[.75,-.306,.5,{ic:.068}],43:[.583,.083,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5,{ic:.1}],48:[.678,.022,.5,{ic:.049}],49:[.678,0,.5],50:[.678,0,.5,{ic:.051}],51:[.678,.022,.5,{ic:.044}],52:[.656,0,.5,{ic:.021}],53:[.656,.022,.5,{ic:.055}],54:[.678,.022,.5,{ic:.048}],55:[.656,.011,.5,{ic:.096}],56:[.678,.022,.5,{ic:.054}],57:[.677,.022,.5,{ic:.045}],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778,{ic:.018}],63:[.704,0,.472,{ic:.064}],64:[.705,.01,.667,{ic:.04}],91:[.75,.25,.289,{ic:.136}],93:[.75,.25,.289,{ic:.064}],94:[.694,-.527,.5,{ic:.033}],95:[-.038,.114,.5,{ic:.065}],126:[.327,-.193,.5,{ic:.06}],305:[.444,0,.239,{ic:.019}],567:[.444,.204,.267,{ic:.019}],768:[.694,-.527,0],769:[.694,-.527,0,{ic:.063}],770:[.694,-.527,0,{ic:.033}],771:[.677,-.543,0,{ic:.06}],772:[.631,-.552,0,{ic:.064}],774:[.694,-.508,0,{ic:.073}],775:[.68,-.576,0],776:[.68,-.582,0,{ic:.04}],778:[.693,-.527,0],779:[.694,-.527,0,{ic:.063}],780:[.654,-.487,0,{ic:.06}],913:[.694,0,.667],914:[.694,0,.667,{ic:.029}],915:[.691,0,.542,{ic:.104}],916:[.694,0,.833],917:[.691,0,.597,{ic:.091}],918:[.694,0,.611,{ic:.091}],919:[.694,0,.708,{ic:.06}],920:[.715,.022,.778,{ic:.026}],921:[.694,0,.278,{ic:.06}],922:[.694,0,.694,{ic:.091}],923:[.694,0,.611],924:[.694,0,.875,{ic:.054}],925:[.694,0,.708,{ic:.058}],926:[.688,0,.667,{ic:.098}],927:[.716,.022,.736,{ic:.027}],928:[.691,0,.708,{ic:.06}],929:[.694,0,.639,{ic:.051}],931:[.694,0,.722,{ic:.091}],932:[.688,0,.681,{ic:.109}],933:[.716,0,.778,{ic:.065}],934:[.694,0,.722,{ic:.021}],935:[.694,0,.667,{ic:.091}],936:[.694,0,.778,{ic:.076}],937:[.716,0,.722,{ic:.047}],8211:[.312,-.236,.5,{ic:.065}],8212:[.312,-.236,1,{ic:.065}],8213:[.312,-.236,1,{ic:.065}],8215:[-.038,.114,.5,{ic:.065}],8216:[.694,-.471,.278,{ic:.058}],8217:[.694,-.471,.278,{ic:.057}],8220:[.694,-.471,.5,{ic:.114}],8221:[.694,-.471,.5],8260:[.75,.25,.5,{ic:.1}],8710:[.694,0,.833]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerif=void 0;var r=Q(6),T=Q(244);e.sansSerif=r.AddPaths(T.sansSerif,{33:\"120 187Q120 225 115 440T110 693Q110 694 159 694T208 693Q208 655 203 440T198 187Q198 186 159 186T120 187ZM110 0V98H208V0H110\",34:\"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227\",35:\"56 350Q56 363 70 370H192Q314 370 314 371L356 526Q396 676 401 685Q406 694 416 694Q423 694 429 689T436 677Q436 673 396 523T355 371Q355 370 449 370Q544 370 544 371L586 526Q628 682 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 670 645 593T605 444L585 371Q585 370 673 370H762Q777 362 777 350Q777 337 767 334T723 330H668H573L567 305Q560 282 545 226L530 171L646 170H721Q756 170 766 167T777 150Q777 138 762 130H640Q518 130 518 129L476 -26Q434 -182 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -178Q397 -170 417 -93T457 56L477 129Q477 130 383 130Q288 130 288 129L246 -26Q204 -182 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -178Q167 -170 187 -94T227 56L247 129Q247 130 159 130H70Q56 137 56 150Q56 165 72 170H259L265 195Q273 222 287 275L302 330H186L70 331Q63 334 58 339Q56 343 56 350ZM489 170L532 330H343L337 305Q330 282 315 226L300 171L394 170H489\",36:\"55 509Q55 585 103 638T213 701V750H286V703H289Q312 703 354 689Q372 682 399 666T427 646L413 569Q413 568 403 575Q352 615 291 624H286V405Q357 389 400 331T444 199Q444 128 402 69T286 -7V-56H213V-9Q167 -3 125 14T63 44T44 60Q44 61 52 101L59 140L69 132Q78 125 87 119T107 107T124 97T141 90T157 84T173 80T187 76T201 73T213 70V317L202 319Q141 335 98 386T55 509ZM213 424V620L203 615Q143 587 143 522Q143 455 213 424ZM356 187Q356 208 350 227T334 258T315 280T298 293T287 297Q286 297 286 186V75Q356 110 356 187\",37:\"56 549Q56 639 98 694T195 750Q248 750 290 694T332 548Q332 455 290 401T195 347Q141 347 99 403T56 549ZM248 549Q248 602 234 638T195 674Q145 674 145 549Q145 423 195 423Q219 423 233 459T248 549ZM197 -56Q187 -56 182 -49T176 -35Q176 -33 178 -27Q179 -25 399 356T623 741Q626 750 639 750Q648 750 654 744T659 729Q657 721 435 336T207 -52Q203 -56 197 -56ZM500 146Q500 235 542 291T639 347Q692 347 734 293T776 146Q776 53 733 -1T639 -56Q587 -56 544 -2T500 146ZM692 146Q692 199 678 235T639 271Q589 271 589 146Q589 20 639 20Q663 20 677 56T692 146\",38:\"156 502Q156 600 198 658T302 716Q367 716 405 665T444 549Q444 531 442 523Q426 446 304 348L287 334Q305 297 340 249T402 170T430 139T443 149T472 181T509 231T549 303T583 394Q584 398 586 404Q587 408 587 409Q588 409 626 399T665 388Q663 381 660 369T644 322T614 253T567 176T502 98L491 87Q534 57 584 57Q653 57 700 75Q702 75 702 34T700 -7Q652 -22 586 -22H580Q505 -22 434 26L421 34Q419 33 405 25T374 11T336 -4T285 -17T226 -22Q143 -22 93 31T42 152Q42 184 51 211T81 260T111 291T144 317L184 348L178 365Q156 430 156 502ZM359 552Q359 588 345 614T302 640Q292 640 282 636T260 622T241 590T233 535Q236 474 253 417L257 407L271 419Q312 454 330 479Q359 514 359 552ZM345 102Q262 190 216 277Q215 277 204 267T180 247T165 236Q135 208 135 159Q135 123 152 97T198 61Q207 58 227 58Q286 58 357 89L345 102\",39:\"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90\",40:\"74 250Q74 564 240 733L257 750H333L323 739Q167 573 167 250T323 -239L333 -250H257L240 -233Q74 -63 74 250\",41:\"221 -73T221 250T65 739L55 750H131L148 733Q314 567 314 250T148 -233L131 -250H55L65 -239Q221 -73 221 250\",42:\"208 717Q211 731 222 740T250 750Q265 750 277 741T291 717Q291 706 290 675T286 617L285 591L329 622Q369 651 376 655T393 659Q411 659 423 647T436 616Q436 609 434 603T429 594T419 585T407 577T389 567T368 556L316 528L368 500Q421 472 429 464Q436 455 436 440Q436 422 423 409T393 396Q390 396 388 396T384 397T380 398T375 401T367 406T358 413T346 422T329 434L285 465Q284 465 285 438T289 381T291 347Q291 327 278 317T250 306Q234 306 222 315T208 339Q208 350 209 381T212 439L214 465L170 434Q130 405 123 401T106 397Q88 397 76 409T63 440Q63 447 65 453T70 462T80 471T92 479T110 489T131 500L183 528L131 556Q78 584 70 592Q63 601 63 616Q63 634 76 647T106 660Q109 660 111 660T115 659T119 658T124 655T132 650T141 643T153 634T170 622L214 591L212 617Q211 643 210 674T208 717\",43:\"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250\",44:\"90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90\",45:\"11 186V259H277V186H11\",46:\"90 0V98H188V0H90\",47:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",58:\"90 346V444H188V346H90ZM90 0V98H188V0H90\",59:\"90 346V444H188V346H90ZM90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90\",61:\"56 350Q56 363 70 370H707Q722 362 722 350Q722 339 708 331L390 330H72Q56 335 56 350ZM56 150Q56 165 72 170H708Q722 160 722 150Q722 138 707 130H70Q56 137 56 150\",63:\"55 652Q63 658 77 666T132 689T214 704T265 703Q303 698 332 684T376 653T401 615T413 578T416 546Q416 475 360 426Q325 396 303 365T273 303T263 256T261 216V186H183V225Q184 281 194 322Q206 368 232 409T276 469T306 495Q323 517 323 550Q323 596 297 612T223 629Q187 629 157 618Q122 607 91 583L83 576L55 652ZM173 0V98H271V0H173\",64:\"422 576Q440 576 456 573T480 566L488 563Q488 565 484 571T472 588T452 607T424 622T387 629Q294 629 220 550T146 347Q146 233 210 155T365 66Q376 65 400 65Q465 68 517 86L532 91H612L598 76Q511 -11 388 -11Q250 -11 153 93T56 347Q56 454 107 538T231 663T378 704Q446 704 492 680T564 608T599 506T611 376Q611 320 607 299Q595 227 546 173T422 118Q343 118 288 185T232 347Q232 444 287 510T422 576ZM520 347Q520 429 487 465T421 501Q385 501 354 461T323 347Q323 270 355 232T422 193Q454 193 487 229T520 347\",91:\"94 -250V750H266V674H181V-174H266V-250H94\",93:\"22 674V750H194V-250H22V-174H107V674H22\",94:\"146 612L212 694H287L353 612Q417 532 420 529Q421 528 418 527Q414 527 383 527H345L250 639Q244 633 199 580L154 527H116Q79 528 79 529Q82 532 146 612\",95:\"0 -114V-38H499V-114H0\",126:\"83 204Q86 254 113 290T186 327Q211 327 251 299T312 270Q337 270 340 315V327H416V316Q413 258 382 226T315 193Q289 193 249 221T187 250Q162 250 159 205V193H83V204\",305:\"74 0V444H164V0H74\",567:\"-35 -95Q-4 -126 34 -126Q58 -126 76 -116T100 -88Q102 -82 102 181V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171L-47 -133L-35 -95\",768:\"-415 692L-417 694H-324L-262 612Q-249 594 -233 572T-208 539L-200 528L-237 527H-275L-344 608Q-359 625 -378 647T-406 680T-415 692\",769:\"-239 612L-177 694H-84L-86 692Q-86 691 -95 681T-123 648T-157 608L-226 527H-264L-301 528L-293 539Q-285 550 -269 572T-239 612\",770:\"-354 612L-288 694H-213L-147 612Q-83 532 -80 529Q-79 528 -82 527Q-86 527 -117 527H-155L-250 639Q-256 633 -301 580L-346 527H-384Q-421 528 -421 529Q-418 532 -354 612\",771:\"-417 554Q-414 604 -387 640T-314 677Q-289 677 -249 649T-188 620Q-163 620 -160 665V677H-84V666Q-87 608 -118 576T-185 543Q-211 543 -251 571T-313 600Q-338 600 -341 555V543H-417V554\",772:\"-431 552V631H-70V552H-431\",774:\"-250 508Q-331 508 -379 567T-427 689V694H-351V685Q-348 649 -321 620T-250 591Q-206 591 -180 619T-150 685V694H-74V689Q-74 624 -122 566T-250 508\",775:\"-302 576V680H-198V576H-302\",776:\"-397 582V680H-299V582H-397ZM-202 582V680H-104V582H-202\",778:\"-319 611Q-319 649 -285 671T-211 694Q-164 694 -132 671T-99 611Q-99 572 -133 550T-209 527T-285 549T-319 611ZM-155 610Q-155 635 -171 643T-215 651Q-263 651 -263 610Q-263 570 -211 570H-209H-207Q-155 570 -155 610\",779:\"-250 693Q-317 544 -323 527H-399L-343 694H-296Q-250 694 -250 693ZM-84 693Q-151 544 -157 527H-233L-177 694H-130Q-84 694 -84 693\",780:\"-421 652Q-422 653 -419 654Q-415 654 -384 654H-346L-301 601Q-287 585 -275 571T-258 551T-250 542L-155 654H-117Q-80 653 -80 652Q-83 649 -147 569L-213 487H-288L-354 569Q-418 649 -421 652\",913:\"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606\",914:\"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190\",915:\"87 0V691H499V611H345L191 612V0H87\",916:\"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630\",917:\"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86\",918:\"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69\",919:\"86 0V694H190V399H517V694H621V0H517V323H190V0H86\",920:\"56 344Q56 430 86 502T164 619T271 690T388 716Q448 716 506 691T613 619T692 501T722 344Q722 188 624 84T389 -21Q252 -21 154 83T56 344ZM624 345Q624 423 597 488T513 596T380 639Q343 639 305 621T232 568T175 475T153 344Q153 216 222 136T388 56Q487 56 555 138T624 345ZM209 299V397H568V299H209\",921:\"87 0V694H191V0H87\",922:\"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88\",923:\"294 606Q294 574 252 430T163 144T117 0H72Q28 0 28 1T141 348L254 694H357L469 348Q582 2 582 1T527 0L473 1L469 11Q469 13 427 141T343 411T296 599L294 610V606\",924:\"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92\",925:\"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88\",926:\"47 600V688H619V600H47ZM111 314V401H555V314H111ZM42 0V88H624V0H42\",927:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147\",928:\"86 0V691H621V0H517V615H190V0H86\",929:\"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485\",931:\"55 0Q56 3 171 167T288 332Q288 334 172 474L55 615V694H666V614H428L190 615L412 347L322 218Q236 97 228 84L447 85H666V0H55\",932:\"36 608V688H644V608H518L392 609V0H288V609L162 608H36\",933:\"55 565Q59 625 105 670T219 716H222Q310 716 353 627Q376 583 386 524L389 510L393 532Q397 555 407 584T433 644T482 695T557 716Q621 716 669 673T722 565V555H629V563Q627 592 607 615T557 638Q530 638 511 629T479 598T459 553T447 488T442 411T441 319V202V0H337V202Q337 453 331 497Q313 634 226 638Q185 638 167 612T148 563V555H55V565\",934:\"666 347Q666 326 661 302T638 247T594 190T520 140T413 107H410V0H312V54Q312 107 311 107Q286 107 229 128T125 192Q55 260 55 347Q55 396 77 438T131 507T200 552T265 579T311 587Q312 587 312 641V694H410V587H413Q476 576 524 552T598 502T640 444T661 390T666 347ZM310 510Q305 510 291 507T252 492T208 464T172 416T157 347T171 279T204 233T247 205T286 190T310 184H312V347Q312 510 310 510ZM564 347Q564 385 549 416T514 463T470 491T433 505T414 509L410 510V184Q413 184 426 187T464 200T510 227T548 275T564 347\",935:\"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14\",936:\"340 187V694H438V187Q481 206 495 219Q518 239 533 267T553 332T560 386T562 435Q562 576 593 608Q608 621 637 621H670H722V545H719Q718 545 715 545T710 544Q679 536 666 487Q664 474 662 429T654 344T633 259T580 175T486 119Q450 109 438 108V0H340V108L326 110Q122 149 117 415Q116 460 111 487Q98 536 67 544Q65 544 62 544T58 545H55V621H107Q160 621 163 620Q191 613 202 573Q213 536 213 473T220 351T256 249Q262 239 270 230T285 216T301 205T316 197T329 192T340 187\",937:\"55 462Q55 561 141 638T359 716Q492 716 579 640T666 462Q666 407 642 347T579 222T529 126Q515 91 515 86Q517 85 528 85Q530 85 552 85T596 86H677V0H425V14Q429 79 465 168L492 228Q494 232 504 254T516 283T527 310T539 340T548 368T556 399T560 428T562 460Q562 531 510 585T361 639Q263 639 211 585T159 460Q159 422 170 378T192 309T229 228L256 168Q292 79 296 14V0H44V86H125Q146 86 168 86T193 85L206 86Q206 103 183 148T131 241T79 352T55 462\",8211:\"0 236V312H499V236H0\",8212:\"0 236V312H999V236H0\",8213:\"0 236V312H999V236H0\",8215:\"0 -114V-38H499V-114H0\",8216:\"90 568L140 694H189L174 633Q159 572 158 571Q158 569 173 569H188V471H90V568\",8217:\"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90\",8220:\"174 568L224 694H273L258 633Q243 572 242 571Q242 569 257 569H272V471H174V568ZM368 568L418 694H467L452 633Q437 572 436 571Q436 569 451 569H466V471H368V568\",8221:\"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227\",8260:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8710:\"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerif=void 0,e.sansSerif={33:[.694,0,.319],34:[.694,-.471,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.306,.5],43:[.583,.082,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778],63:[.704,0,.472],64:[.704,.011,.667],91:[.75,.25,.289],93:[.75,.25,.289],94:[.694,-.527,.5],95:[-.038,.114,.5],126:[.327,-.193,.5],305:[.444,0,.239],567:[.444,.205,.267],768:[.694,-.527,0],769:[.694,-.527,0],770:[.694,-.527,0],771:[.677,-.543,0],772:[.631,-.552,0],774:[.694,-.508,0],775:[.68,-.576,0],776:[.68,-.582,0],778:[.694,-.527,0],779:[.694,-.527,0],780:[.654,-.487,0],913:[.694,0,.667],914:[.694,0,.667],915:[.691,0,.542],916:[.694,0,.833],917:[.691,0,.597],918:[.694,0,.611],919:[.694,0,.708],920:[.716,.021,.778],921:[.694,0,.278],922:[.694,0,.694],923:[.694,0,.611],924:[.694,0,.875],925:[.694,0,.708],926:[.688,0,.667],927:[.715,.022,.736],928:[.691,0,.708],929:[.694,0,.639],931:[.694,0,.722],932:[.688,0,.681],933:[.716,0,.778],934:[.694,0,.722],935:[.694,0,.667],936:[.694,0,.778],937:[.716,0,.722],8211:[.312,-.236,.5],8212:[.312,-.236,1],8213:[.312,-.236,1],8215:[-.038,.114,.5],8216:[.694,-.471,.278],8217:[.694,-.471,.278],8220:[.694,-.471,.5],8221:[.694,-.471,.5],8260:[.75,.25,.5],8710:[.694,0,.833]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.scriptBold=void 0,e.scriptBold={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.script=void 0,e.script={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.smallop=void 0;var r=Q(6),T=Q(248);e.smallop=r.AddPaths(T.smallop,{40:\"152 251Q152 646 388 850H416Q422 844 422 841Q422 837 403 816T357 753T302 649T255 482T236 250Q236 124 255 19T301 -147T356 -251T403 -315T422 -340Q422 -343 416 -349H388Q359 -325 332 -296T271 -213T212 -97T170 56T152 251\",41:\"305 251Q305 -145 69 -349H56Q43 -349 39 -347T35 -338Q37 -333 60 -307T108 -239T160 -136T204 27T221 250T204 473T160 636T108 740T60 807T35 839Q35 850 50 850H56H69Q197 743 256 566Q305 425 305 251\",47:\"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838\",91:\"202 -349V850H394V810H242V-309H394V-349H202\",92:\"522 -326Q522 -337 515 -343T500 -349Q487 -349 481 -337Q477 -328 267 248T55 827Q54 835 60 842T76 850Q89 850 96 838Q100 829 310 253T522 -326\",93:\"22 810V850H214V-349H22V-309H174V810H22\",123:\"477 -343L471 -349H458Q432 -349 367 -325T273 -263Q258 -245 250 -212L249 -51Q249 -27 249 12Q248 118 244 128Q243 129 243 130Q220 189 121 228Q109 232 107 235T105 250Q105 256 105 257T105 261T107 265T111 268T118 272T128 276T142 283T162 291Q224 324 243 371Q243 372 244 373Q248 384 249 469Q249 475 249 489Q249 528 249 552L250 714Q253 728 256 736T271 761T299 789T347 816T422 843Q440 849 441 849H443Q445 849 447 849T452 850T457 850H471L477 844V830Q477 820 476 817T470 811T459 807T437 801T404 785Q353 760 338 724Q333 710 333 550Q333 526 333 492T334 447Q334 393 327 368T295 318Q257 280 181 255L169 251L184 245Q318 198 332 112Q333 106 333 -49Q333 -209 338 -223Q351 -255 391 -277T469 -309Q477 -311 477 -329V-343\",125:\"110 849L115 850Q120 850 125 850Q151 850 215 826T309 764Q324 747 332 714L333 552Q333 528 333 489Q334 383 338 373Q339 372 339 371Q353 336 391 310T469 271Q477 268 477 251Q477 241 476 237T472 232T456 225T428 214Q357 179 339 130Q339 129 338 128Q334 117 333 32Q333 26 333 12Q333 -27 333 -51L332 -212Q328 -228 323 -240T302 -271T255 -307T175 -338Q139 -349 125 -349T108 -346T105 -329Q105 -314 107 -312T130 -304Q233 -271 248 -209Q249 -203 249 -49V57Q249 106 253 125T273 167Q307 213 398 245L413 251L401 255Q265 300 250 389Q249 395 249 550Q249 710 244 724Q224 774 112 811Q105 813 105 830Q105 845 110 849\",710:\"279 669Q273 669 142 610T9 551L0 569Q-8 585 -8 587Q-8 588 -7 588L12 598Q30 608 66 628T136 666L277 744L564 587L555 569Q549 556 547 554T544 552Q539 555 410 612T279 669\",732:\"374 597Q337 597 269 627T160 658Q101 658 34 606L24 597L12 611Q1 624 1 626Q1 627 27 648T55 671Q120 722 182 722Q219 722 286 692T395 661Q454 661 521 713L531 722L543 708Q554 695 554 693Q554 692 528 671T500 648Q434 597 374 597\",770:\"-277 669Q-283 669 -414 610T-547 551L-556 569Q-564 585 -564 587Q-564 588 -563 588L-544 598Q-526 608 -490 628T-420 666L-279 744L8 587L-1 569Q-7 556 -9 554T-12 552Q-17 555 -146 612T-277 669\",771:\"-182 597Q-219 597 -287 627T-396 658Q-455 658 -522 606L-532 597L-544 611Q-555 624 -555 626Q-555 627 -529 648T-501 671Q-436 722 -374 722Q-337 722 -270 692T-161 661Q-102 661 -35 713L-25 722L-13 708Q-2 695 -2 693Q-2 692 -28 671T-56 648Q-122 597 -182 597\",8214:\"257 0V602H300V0H257ZM478 0V602H521V0H478\",8260:\"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838\",8593:\"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421\",8595:\"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96\",8657:\"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329\",8659:\"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236\",8719:\"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8720:\"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8721:\"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748\",8730:\"263 249Q264 249 315 130T417 -108T470 -228L725 302Q981 837 982 839Q989 850 1001 850Q1008 850 1013 844T1020 832V826L741 243Q645 43 540 -176Q479 -303 469 -324T453 -348Q449 -350 436 -350L424 -349L315 -96Q206 156 205 156L171 130Q138 104 137 104L111 130L263 249\",8739:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",8741:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612\",8747:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244\",8748:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244\",8749:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244\",8750:\"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107\",8896:\"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249\",8897:\"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708\",8898:\"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217\",8899:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750\",8968:\"202 -349V850H449V810H242V-349H202\",8969:\"22 810V850H269V-349H229V810H22\",8970:\"202 -349V850H242V-309H449V-349H202\",8971:\"229 -309V850H269V-349H22V-309H229\",9001:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",9002:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\",9168:\"312 0V602H355V0H312\",10072:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",10216:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",10217:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\",10752:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250\",10753:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103\",10754:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59\",10756:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276\",10758:\"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217\",12296:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",12297:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\"},{10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.smallop=void 0,e.smallop={40:[.85,.349,.458],41:[.85,.349,.458],47:[.85,.349,.578],91:[.85,.349,.417],92:[.85,.349,.578],93:[.85,.349,.417],123:[.85,.349,.583],125:[.85,.349,.583],710:[.744,-.551,.556],732:[.722,-.597,.556],770:[.744,-.551,0],771:[.722,-.597,0],8214:[.602,0,.778],8260:[.85,.349,.578],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8730:[.85,.35,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[.805,.306,.472,{ic:.138}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8968:[.85,.349,.472],8969:[.85,.349,.472],8970:[.85,.349,.472],8971:[.85,.349,.472],9001:[.85,.35,.472],9002:[.85,.35,.472],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[.85,.35,.472],10217:[.85,.35,.472],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],12296:[.85,.35,.472],12297:[.85,.35,.472]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphicBold=void 0;var r=Q(6),T=Q(250);e.texCalligraphicBold=r.AddPaths(T.texCalligraphicBold,{65:\"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266\",66:\"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83\",67:\"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20\",68:\"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391\",69:\"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516\",70:\"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567\",71:\"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279\",72:\"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447\",73:\"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499\",74:\"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390\",75:\"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142\",76:\"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17\",77:\"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20\",78:\"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47\",79:\"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433\",80:\"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468\",81:\"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453\",82:\"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0\",83:\"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476\",84:\"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462\",85:\"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586\",86:\"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608\",87:\"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607\",88:\"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562\",89:\"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555\",90:\"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622\",305:\"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",567:\"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphicBold=void 0,e.texCalligraphicBold={65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphic=void 0;var r=Q(6),T=Q(252);e.texCalligraphic=r.AddPaths(T.texCalligraphic,{65:\"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249\",66:\"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342\",67:\"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25\",68:\"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407\",69:\"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470\",70:\"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579\",71:\"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68\",72:\"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487\",73:\"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0\",74:\"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78\",75:\"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429\",76:\"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11\",77:\"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9\",78:\"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705\",79:\"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428\",80:\"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475\",81:\"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286\",82:\"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475\",83:\"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512\",84:\"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475\",85:\"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592\",86:\"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633\",87:\"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633\",88:\"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324\",89:\"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599\",90:\"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphic=void 0,e.texCalligraphic={65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texMathit=void 0;var r=Q(6),T=Q(254);e.texMathit=r.AddPaths(T.texMathit,{65:\"85 46Q112 48 132 56T161 73T176 92T185 104Q185 106 353 407T524 709Q527 716 551 716Q568 716 572 712Q573 711 574 710Q576 708 594 384Q613 54 617 52H618Q626 46 672 46H689Q696 41 696 36Q696 13 683 0H670Q639 2 557 2Q526 2 500 2T459 2T441 1Q425 1 425 10Q425 12 427 24Q428 27 429 31T430 36T432 40T434 43T437 45T443 46T450 46Q514 46 514 69Q514 74 511 136L506 209H292L260 152Q222 84 222 74Q222 48 264 46Q280 46 280 35Q280 33 278 21Q275 7 272 4T259 0Q256 0 232 1T159 2Q135 2 109 1T78 0Q58 0 58 10Q58 14 61 26T66 40Q68 46 85 46ZM504 260Q503 263 496 407T486 553L466 520Q446 486 402 406L318 256Q318 255 411 255H504V260\",66:\"57 11Q57 38 69 45L74 46Q78 46 85 46T99 46Q134 47 145 50T162 62Q164 66 233 344T303 626Q303 627 302 629V631Q296 637 241 637H223Q217 642 217 645T219 664Q223 677 229 683H411L593 682L605 680Q616 678 628 675T660 662T694 639T720 601T732 547Q732 519 726 503Q710 452 662 414T556 360L545 357L556 355Q604 346 641 312T678 221Q678 155 622 92T482 8Q459 2 439 2T256 0H154H105Q74 0 66 2T57 11ZM629 549Q628 550 629 557T627 576T619 600T601 622T570 636Q564 637 490 637Q472 637 454 637T424 636T411 636Q399 635 395 622T364 500Q333 377 332 376Q332 374 408 374L485 375L495 377Q547 390 588 437T629 549ZM504 336Q500 337 410 337Q323 337 322 336Q322 334 305 263T270 122T252 51Q252 47 337 46Q346 46 361 46T384 45Q425 45 455 55T515 95Q574 156 574 235Q574 276 555 304T504 336\",67:\"395 -21Q279 -21 215 56T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q321 502 287 397T252 213Q252 123 297 74Q347 24 421 24Q500 24 564 89T653 240Q656 253 659 255T677 257Q700 257 700 248Q700 242 694 222Q681 183 656 143T593 65T504 3T395 -21\",68:\"56 11Q56 38 68 45L72 46Q77 46 84 46T98 46Q133 47 144 50T161 62Q163 66 232 344T302 626Q302 627 302 629L301 631Q295 637 240 637H222Q216 642 216 645T218 664Q222 677 228 683H403Q582 683 589 682Q672 674 723 608T775 440Q775 312 709 209T562 54Q502 14 432 2Q423 1 243 0H148H102Q72 0 64 2T56 11ZM254 51Q254 46 348 46Q395 46 422 50T484 71Q585 121 633 255Q679 396 679 477Q679 522 665 554T629 603T587 626T548 636Q547 636 536 636T510 636T480 637Q420 637 411 636T398 627Q396 623 325 339T254 51\",69:\"248 634Q216 634 214 638Q213 641 213 646Q213 674 224 678Q226 680 481 680H736Q743 676 743 669Q743 665 729 557T713 447Q711 440 690 440H675Q667 445 667 454Q667 455 671 481T675 536Q675 583 658 604T592 632Q574 634 475 634Q439 634 424 633T405 631T399 625Q397 622 367 501T336 377Q336 376 367 376H388Q451 376 477 389Q493 399 503 419T520 462T528 489Q531 493 549 493Q557 493 561 492T566 491T569 488T572 483L539 351Q507 221 503 216Q503 216 500 213H484Q468 213 465 216Q461 219 461 225Q461 228 466 250T472 290Q472 317 452 323T368 330H324Q323 326 289 191T255 51T331 46H360Q413 46 444 49T511 67T570 113Q589 137 608 175T638 242T652 272Q656 274 670 274Q693 274 693 262L648 148Q590 4 588 2Q585 0 323 0H61Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623Q299 630 292 631T248 634\",70:\"299 623Q299 630 292 631T247 634H219Q213 640 213 642T215 661Q218 673 225 680H724Q731 676 731 669Q731 665 717 557T701 447Q699 440 678 440H663Q656 444 656 452Q656 457 659 485T663 538Q663 586 644 607T566 633Q564 633 535 633T486 634H458Q404 634 399 625Q396 620 364 492L332 363H380Q446 365 464 373Q496 389 514 458Q518 477 523 479Q527 480 541 480H556Q563 475 563 470Q563 467 532 339T498 207Q496 200 475 200H460Q453 207 453 212Q454 213 456 225T461 254T464 278Q464 304 445 310T369 317H321L289 190Q257 66 257 59Q257 54 261 52T283 48T337 46Q348 46 352 46T360 45T366 42T368 37Q368 32 365 23Q360 4 355 2Q352 1 342 1Q336 1 297 1T199 2Q138 2 106 2T71 1H68Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623\",71:\"632 -1Q629 -1 622 5T604 25T583 53Q508 -22 394 -22Q287 -22 219 52T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q319 501 286 394T252 208Q252 156 269 118T314 61T369 33T425 24Q470 24 509 46T566 104Q571 116 583 162T595 214Q595 222 583 223Q561 227 517 227H495Q488 230 488 238Q488 254 495 268Q500 273 511 273Q515 273 532 273T581 272T649 271Q731 271 752 273H761Q767 267 767 264T765 246Q761 233 755 227H742Q698 227 693 213L639 4Q636 -1 632 -1\",72:\"61 0Q54 7 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 396 612T367 500Q360 474 352 442T340 395L336 380Q336 378 466 378H596Q657 622 657 626Q657 627 656 629V631Q650 637 595 637H577Q571 642 571 645T573 664Q577 677 583 683H596Q664 681 729 681Q837 681 843 683H853Q860 676 860 672Q858 647 848 637H819Q783 636 772 634T756 623Q753 618 684 340T614 57Q614 50 621 49T666 46Q697 46 699 40Q701 37 698 21Q693 3 689 1Q686 0 677 0Q673 0 657 0T611 1T546 2Q453 2 428 0H418Q411 7 411 11Q411 27 418 41Q422 46 452 46Q488 47 499 50T516 62Q517 64 550 196T584 331Q584 332 454 332H324L291 197Q257 64 257 56Q257 50 265 49T309 46Q340 46 342 40Q344 37 341 21Q336 3 332 1Q329 0 320 0Q316 0 300 0T254 1T189 2Q96 2 71 0H61\",73:\"235 637Q217 637 213 638T209 649Q209 673 220 682Q222 683 237 683Q278 681 369 681Q404 681 441 682T483 683Q499 683 503 681T508 672Q508 670 505 658T500 643Q498 637 464 637Q425 635 415 633T398 621Q396 618 327 340T257 58T260 52T278 48T322 46Q349 46 349 36Q349 31 346 22Q342 4 337 1Q336 1 334 1T329 0Q325 0 307 0T258 1T190 2Q95 2 67 0H56Q49 7 49 11Q51 38 62 46H91Q129 47 141 50T159 62Q161 66 230 344T300 625Q300 637 235 637\",74:\"361 637Q333 637 331 641Q330 644 330 649Q330 673 341 682Q343 683 360 683Q405 681 500 681Q551 681 577 681T607 682Q622 682 622 673Q622 665 616 647Q614 640 610 639T587 637Q547 636 541 624Q538 618 477 374T413 124Q391 64 333 22T207 -21T109 12T78 86Q78 130 101 150T149 170Q193 170 196 129Q196 100 178 80T137 58L132 57Q134 52 138 46T160 28T205 16Q242 16 273 48T319 122Q322 129 383 371T444 627Q444 637 361 637\",75:\"668 621Q668 635 645 637Q629 637 629 648Q629 650 632 662T637 677Q640 682 653 682Q657 682 688 681T764 680Q786 680 810 681T839 682Q859 682 859 672Q859 655 852 643Q849 637 839 637Q804 637 768 621T717 595T697 578Q696 578 600 497L505 417L508 408Q543 311 574 227T618 106T632 69Q645 47 688 46H707Q713 38 713 37T710 19Q706 6 700 0H688Q659 2 587 2Q557 2 532 2T492 2T474 1Q458 1 458 10Q458 13 460 23Q464 39 466 42T480 46Q526 46 526 72Q526 75 476 213L427 350Q426 350 396 325T334 272T302 242Q302 241 299 230T290 194T279 150Q257 61 257 55Q257 50 265 49T309 46H337Q343 40 343 38T341 19Q337 6 331 0H316Q280 2 190 2Q158 2 131 2T89 2T70 1Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q386 681 414 681T464 682L487 683H496Q502 677 502 674T500 656Q495 641 491 637H462Q426 636 415 634T399 623Q396 618 358 467L320 314Q321 314 484 452Q510 474 552 509Q625 570 646 590T668 621\",76:\"61 0Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H240Q275 681 371 681Q407 681 438 681T487 682T509 682Q527 682 527 674Q527 670 524 659Q523 657 523 654T522 649T520 645T519 642T517 640T515 639T512 638T507 637T502 637T494 637H478Q433 636 417 633T396 617Q395 614 325 334T255 51Q255 47 319 47Q387 47 410 52Q459 65 494 98T543 163T570 229T589 273H622Q628 264 628 262Q628 259 584 133T539 5Q537 1 511 1Q482 0 296 0H61\",77:\"72 1Q58 1 58 11Q58 33 66 41Q68 46 87 46Q150 50 168 84Q172 91 238 356T304 626Q304 627 304 629L303 631Q297 637 242 637H224Q218 642 218 645T220 664Q224 677 230 683H326H394Q417 683 422 682T429 676L480 127L502 163Q523 199 560 262T642 400Q801 668 805 676L817 683H1003Q1010 678 1010 672Q1010 650 997 637H979Q915 637 906 623Q903 618 834 340T764 57Q764 50 771 49T817 46H845Q851 38 851 37T848 19Q845 7 838 0H824Q789 2 701 2Q670 2 644 2T603 2T584 1Q569 1 569 11Q569 13 571 25Q576 42 581 45L586 46Q590 46 597 46T611 46Q646 47 657 50T674 62L813 616L634 313Q453 7 452 7Q446 0 428 0Q409 0 407 6Q405 10 379 304T351 604L285 348Q220 83 220 82Q220 65 233 57T279 46H295Q301 38 301 37T298 19Q295 7 288 0H275Q244 2 171 2Q145 2 123 2T88 2T72 1\",78:\"633 637Q624 637 621 639T617 650Q617 670 630 683H641Q682 680 736 680Q836 680 845 683H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q746 590 673 300Q656 230 638 156T610 44L600 7Q598 0 576 0H559Q553 6 448 297L342 588Q341 588 279 336T216 81Q216 49 274 46Q293 46 295 40Q297 37 294 21Q293 19 292 16T291 11T290 7T289 4T287 2T284 1T280 1T275 0T263 0T229 1T167 2Q91 2 70 0H61Q54 7 54 11T57 27Q61 41 64 43T83 46Q146 50 164 84Q167 90 235 362L303 634Q300 635 253 637H220Q214 643 214 645T216 664Q220 677 226 683H314Q386 683 397 683T410 677Q412 675 501 428L591 179Q591 178 592 180T595 189T600 209T610 246T624 303T645 385Q698 595 698 606Q698 618 683 627T633 637\",79:\"149 237Q149 326 186 413T282 563T412 665T552 704Q619 704 667 678T741 611T777 528T788 444Q788 328 728 219T572 44T377 -22Q275 -22 212 50T149 237ZM688 487Q688 570 650 617T548 665Q467 665 398 592T291 413T253 203Q253 119 290 70T387 20Q440 20 489 52T573 135T635 249T675 373T688 487\",80:\"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H404H431H502Q578 683 615 675T684 636Q729 595 729 531Q729 462 671 396T524 308Q499 302 404 301H318L288 182Q258 63 258 55T310 46Q341 46 343 40Q345 37 342 21Q337 3 333 1Q330 0 321 0Q317 0 301 0T255 1T190 2Q97 2 72 0H62ZM626 555V562Q626 620 552 635Q546 636 481 637Q466 637 450 637T423 636T412 636Q401 635 398 627Q396 622 361 484Q353 452 344 416T330 362L325 344Q325 342 390 342H427Q523 342 567 386Q596 415 611 473T626 555\",81:\"460 -107Q460 -72 464 -42T468 -7L457 -10Q446 -14 424 -18T379 -22Q276 -22 213 50T149 237Q149 326 186 413T282 563T412 665T552 704Q664 704 726 631T788 442Q788 305 703 180Q627 64 517 13L506 8Q506 7 508 -12T513 -38T522 -59T538 -79T565 -85Q604 -85 634 -59T672 0Q676 11 684 11Q693 11 695 2Q695 -1 690 -20T673 -69T644 -126T599 -174T538 -194Q464 -194 460 -110Q460 -108 460 -107ZM689 481Q689 578 646 621T551 665Q468 665 391 586Q321 512 285 399T249 202Q249 106 295 58Q310 41 314 41Q315 41 315 46Q315 83 344 118T420 154Q450 154 473 135Q493 114 500 69L502 58L512 65Q571 110 613 192T672 348T689 481ZM472 49Q472 118 415 118Q393 118 373 98T353 51Q353 18 386 18H387Q424 18 472 40V49\",82:\"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H386Q554 682 569 679Q571 678 580 676Q643 662 680 623T717 533Q717 473 667 420T528 337L538 330Q563 314 578 286T594 228Q594 212 588 147T581 65Q581 36 589 26T616 16H618Q637 16 652 37Q668 57 677 94Q679 105 701 105T723 95Q723 89 717 72T698 33T662 -5T610 -22Q555 -22 513 3T471 88Q471 107 486 168T502 244Q502 303 452 320Q445 322 382 323H320L288 192Q255 63 255 55T307 46Q338 46 340 40Q342 37 339 21Q335 3 330 1Q326 0 320 0Q317 0 306 0T265 1T190 2Q99 2 73 0H62ZM612 558Q612 566 612 568T610 581T603 597T590 611T567 625T532 635Q526 636 470 637Q458 637 445 637T422 636T412 636Q402 635 397 627L390 598Q383 570 373 532T354 455T337 389T330 361Q356 360 384 360H415Q483 360 527 382Q557 399 574 424T604 498Q612 533 612 558\",83:\"198 460Q198 551 269 628T432 705Q516 705 557 644L583 673Q589 679 593 684T600 693T605 698T609 702T611 704T614 705T618 705H620Q633 705 633 698T605 577T573 459L570 456H554Q546 456 543 456T536 457T532 460T531 466Q531 469 533 489T536 532Q536 573 525 600T496 640T462 657T427 662Q369 662 325 612T281 503Q281 475 290 458T318 430T356 415T407 401T463 383Q506 360 522 323T538 258V244Q538 141 465 60T300 -22Q198 -22 152 41L143 31Q137 25 126 12T106 -10T95 -21L92 -22Q88 -22 86 -22Q81 -22 78 -20T74 -16V-14Q74 -11 132 221Q134 227 155 227H171Q177 221 177 215Q177 212 175 205T171 182T169 147Q171 99 195 70T246 33T306 25Q358 25 400 70T453 169Q455 180 455 203V210Q455 263 414 285Q409 288 347 305Q271 328 254 339Q239 350 224 371Q198 409 198 460\",84:\"178 437Q173 442 171 446Q171 451 238 654Q243 670 250 677H681H762Q792 677 799 676T806 667Q806 661 788 553T768 444Q768 437 746 437Q727 437 723 445Q723 450 729 492T736 562Q736 589 728 602T693 624Q675 630 622 630H595Q575 630 571 629T564 623Q562 621 492 342T422 59Q422 48 502 46H542Q548 38 548 37T545 19Q541 6 535 0H517Q475 2 357 2Q315 2 279 2T223 2T198 1Q179 1 179 9Q179 14 182 24Q187 42 190 44Q194 46 206 46H232Q289 47 301 49T326 65L395 344Q465 619 465 626Q465 629 462 629Q456 631 411 631Q364 631 336 625T288 597T255 549T224 467Q215 442 210 437H178\",85:\"636 637Q627 637 624 639T620 650Q620 670 633 683H644Q702 681 753 681Q760 681 772 681T796 681T820 682T838 683H845H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q745 588 698 400T648 204Q627 140 584 86Q484 -22 378 -22Q300 -22 247 31T194 167Q194 176 194 182T196 198T200 218T207 248T217 288T231 346T250 422Q300 618 300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 394 603T344 410Q299 232 292 198T284 135Q284 102 294 78T322 44T355 29T387 24Q455 24 515 74T604 211Q605 215 653 404T701 607Q701 618 686 627T636 637\",86:\"667 637Q657 637 654 639T650 650Q650 670 663 683H675Q704 681 772 681Q793 681 818 682T847 683Q868 683 868 672Q868 670 865 658T860 643Q857 637 848 637Q785 637 749 587L394 -15Q387 -22 366 -22Q346 -22 342 -16Q341 -13 313 303Q285 622 285 623Q283 631 273 634T229 637Q205 637 205 648Q205 654 208 666T217 682Q219 683 230 683Q276 680 329 680Q444 680 456 683H466Q472 677 472 674T470 656Q466 643 460 637H448Q384 637 384 615Q385 612 406 371T427 126Q427 125 495 240T632 473T704 596Q707 604 707 609Q707 633 667 637\",87:\"234 637H226Q205 637 205 648Q205 673 216 682Q218 683 231 683Q265 681 340 681Q371 681 404 682T443 683Q458 683 462 681T467 672Q467 670 464 658T459 643Q457 637 434 637Q407 636 394 632T378 623T376 613Q376 589 385 377T394 149L511 361Q542 419 596 519L613 551L612 585Q610 621 610 624Q608 637 559 637H555Q537 637 537 647Q537 654 540 664Q544 677 550 683H561Q600 680 656 680Q771 680 783 683H792Q798 677 798 675T796 658Q792 643 790 640T778 637H774Q721 637 708 620L717 385Q726 150 727 149Q727 148 752 193T812 303T882 433T942 546T969 596Q970 600 970 606Q970 610 969 613T966 620T961 625T955 628T949 631T941 633T934 634T927 636T920 637Q903 637 903 648Q903 650 905 664Q909 677 915 683H928Q960 681 1031 681Q1050 681 1073 681T1101 682Q1124 682 1124 672Q1124 655 1117 643Q1114 637 1104 637Q1085 637 1069 632T1043 618T1026 603T1014 588L1009 580L687 -16Q681 -22 660 -22Q643 -22 637 -16Q635 -14 627 223Q617 441 617 464L602 441Q578 397 487 228Q456 171 423 110T372 17T355 -15Q348 -22 328 -22Q312 -22 308 -20T303 -9Q303 -5 291 310T277 627Q273 636 234 637\",88:\"684 0Q670 0 634 1T569 2Q512 2 482 2T449 1Q433 1 433 10Q433 11 435 25Q437 34 438 37T442 43T448 45T459 46T476 49Q506 58 506 64Q506 65 467 179T426 295L382 244Q339 194 295 142T249 86Q245 79 245 72Q245 48 279 46Q293 46 293 32Q293 13 280 0H268Q206 2 151 2Q70 2 64 0Q50 0 50 11Q50 15 53 27Q57 41 60 43T78 46Q154 49 205 100Q207 103 312 225L411 341L407 353Q404 360 381 428T336 560T310 627Q301 636 255 637H229Q223 643 223 645T225 664Q229 677 235 683H246Q288 680 346 680Q462 680 477 683H487Q493 677 493 674T491 656Q488 644 485 641T471 637Q461 635 454 635Q419 626 421 619Q421 617 453 524T486 430T554 509T624 593Q631 604 631 611Q631 622 621 629T598 637Q583 637 583 648Q583 650 585 660Q589 676 591 679T602 683Q606 683 637 682T715 680Q742 680 771 681T804 682Q825 682 825 672Q825 650 817 642Q814 637 797 637Q739 634 700 608Q684 597 659 569T505 389L501 384L557 222Q612 61 616 57Q625 47 671 46Q691 46 697 45T704 36Q704 35 702 23Q701 19 700 14T699 7T696 3T692 1T684 0\",89:\"232 637Q198 637 198 647Q198 651 201 664T210 682Q212 683 223 683Q269 680 325 680Q443 680 455 683H465Q472 676 472 672Q472 656 465 642Q460 637 441 637Q395 634 395 623Q395 621 438 478T482 334T583 460T688 591Q688 593 694 601T700 617Q700 637 668 637H666Q655 637 655 648Q655 654 658 664Q660 672 660 673T663 678T668 682T677 683Q680 683 704 682T776 680Q801 680 828 681T858 682Q875 682 875 673Q875 669 872 657T867 643Q865 637 848 637Q788 634 749 597Q733 581 608 424L487 273L461 170Q454 145 448 118T438 76T434 60Q434 54 436 52T452 48T496 46H514Q520 41 520 38T518 19Q514 6 508 0H495Q427 2 364 2Q350 2 323 2T272 0H250H241Q234 7 234 11Q234 27 241 41Q245 46 275 46Q312 47 323 50T340 64Q340 65 344 79T355 120T368 171L393 274L341 448Q288 622 286 626Q278 636 232 637\",90:\"203 452Q203 455 236 565T270 677Q270 681 274 681Q276 683 488 683H699Q704 678 704 675Q704 663 697 649Q697 647 449 348L201 50L266 49H301Q442 49 495 116Q525 155 556 251Q563 274 565 278T579 282H585Q609 285 609 271Q609 270 570 142T528 8T518 1T466 0H303Q253 0 197 0T131 -1Q112 -1 102 -1T87 1T81 3T80 8Q80 30 89 39Q90 41 204 178T446 470T575 626L584 637H512H504H475Q446 637 426 635T378 624T330 597T289 546T254 467Q247 446 243 444Q239 442 226 442Q203 442 203 452\",97:\"418 53Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521Q531 153 534 153T540 150T543 144Q543 141 540 126T529 88T509 43T477 5T434 -11Q404 -11 383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 260 177 351T333 442Q343 442 352 441T369 437T382 431T393 425T402 417T409 410T414 402T419 396Q423 406 436 414T461 422Q475 422 484 413T494 395Q494 384 459 244T420 88Q418 80 418 58V53ZM397 323Q397 344 382 374T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100V94Q184 54 207 35Q218 26 235 26Q279 26 330 91Q343 109 346 118T372 217Q397 317 397 323\",98:\"158 683Q163 683 223 688T300 694Q312 694 312 685T279 544Q243 405 243 403L256 412Q268 422 292 432T338 442Q395 442 431 398T467 284Q467 175 393 82T229 -11Q175 -11 142 32T108 142Q108 176 115 207T166 412Q177 458 190 510T209 588T216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683ZM178 109Q178 27 234 27Q247 27 254 29Q295 44 323 94Q343 129 363 208T384 332Q384 354 382 361Q369 405 332 405Q282 405 228 326L222 317L205 250Q178 142 178 109\",99:\"257 -10Q183 -10 143 37T103 155Q103 257 173 341T337 440Q341 441 348 441H358Q421 441 445 415T469 356Q469 320 450 305T410 289Q392 289 381 299T370 325Q370 362 404 378L414 383Q392 402 365 405Q322 405 285 375T227 294Q217 271 202 213T187 119Q187 27 263 27Q299 27 330 40Q361 51 386 71T424 106T440 121Q444 121 455 110T466 96Q466 92 458 81T432 54T390 24T331 0T257 -10\",100:\"418 54Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521H526Q543 153 543 144Q543 143 541 129Q531 91 521 65T487 14T434 -11T383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 255 174 348T337 441Q354 441 368 437T390 427T404 414T413 404T417 400L471 616Q471 629 464 632T425 637H404Q398 643 398 645T400 664Q405 683 413 683Q418 683 478 688T555 694Q567 694 567 686Q567 676 495 389L419 86Q418 80 418 61V54ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323\",101:\"107 166Q107 230 131 283T193 369T270 420T345 441Q346 441 352 441T361 442H364Q409 442 439 418T470 355Q470 270 366 239Q308 223 218 223H205Q189 164 189 125Q189 83 206 55T261 27Q309 27 353 50T426 109Q436 121 440 121T453 111T466 97Q469 92 455 77Q424 41 372 16T258 -10Q184 -10 146 41T107 166ZM416 333T416 354T401 390T360 405Q322 405 292 384T246 336T223 288T215 261Q215 260 240 260Q262 261 276 262T314 266T353 275T384 291T408 317\",102:\"351 608Q351 642 389 661Q368 668 365 668Q358 668 352 664Q349 663 347 661T342 654T337 647T333 637T330 627T327 614T324 601T321 587T318 571L291 432Q291 431 343 431H394Q400 426 400 423T398 404Q394 390 389 386L335 385H282L255 246Q212 20 189 -51Q136 -199 58 -204Q22 -204 0 -185T-23 -134Q-23 -100 -3 -85T37 -69Q54 -69 65 -80T76 -108Q76 -115 75 -119Q70 -134 61 -144T46 -158L39 -161Q39 -162 42 -163T50 -166T61 -168Q77 -168 91 -145Q98 -128 105 -95L125 -1Q145 90 146 98Q149 109 163 180T189 317T202 384T158 385H114Q108 390 108 393T110 412Q113 424 120 431H165Q211 431 211 433Q213 435 219 473T237 561T266 639Q282 667 310 686T367 705Q402 705 426 686T450 635Q450 600 430 585T390 569Q373 569 362 580T351 608\",103:\"103 163Q106 263 173 347T320 441Q322 441 329 441T341 442Q387 439 419 398Q420 399 420 400Q421 402 425 406T440 416T464 422Q476 421 485 413T494 396Q494 386 465 268T407 38T377 -77Q365 -123 310 -164T179 -205Q46 -205 46 -139Q46 -114 64 -97T106 -79Q127 -79 136 -91T146 -115Q146 -127 141 -138T130 -155T124 -162T125 -163Q133 -166 170 -168Q200 -168 217 -162Q242 -153 264 -130T297 -78Q298 -74 305 -46T320 10T327 38Q326 38 317 31T291 15T256 2Q249 1 231 1Q182 1 143 38T103 163ZM398 324Q398 330 395 346T375 383T332 405Q330 405 326 405T320 404Q291 396 263 365Q230 324 208 239T185 115Q185 38 238 38Q258 38 279 50T312 77T336 106L348 122Q349 125 373 223T398 324\",104:\"398 44Q398 26 414 26Q431 26 451 43Q477 71 496 136Q499 148 501 150T515 153H521Q531 153 534 153T541 150T544 143Q544 133 534 105T496 41T432 -8Q424 -10 408 -10Q370 -10 348 12T326 72Q326 93 342 135Q397 288 397 349Q397 367 396 372Q386 405 357 405Q283 405 228 310Q217 290 212 274T180 152Q153 42 148 26T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 685Q312 674 277 539Q241 395 241 393Q242 394 249 399T259 407T271 415T285 424T300 431T318 437T338 440T362 442Q423 442 449 410T475 338Q475 290 437 178T398 44\",105:\"234 599Q234 620 251 638T292 656Q306 656 319 647T332 617Q332 594 313 577T273 560Q260 560 247 569T234 599ZM75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287\",106:\"266 600Q266 622 283 639T322 656Q340 656 352 645T364 616Q364 596 347 578T305 560Q291 560 279 569T266 600ZM75 287Q75 293 86 316T117 369T168 420T236 442Q282 442 304 415T327 358V332L278 134Q269 98 260 60T246 3T236 -36T227 -66T220 -85T213 -101T204 -114Q181 -150 139 -177T46 -204Q8 -204 -12 -186T-32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 38 -166Q42 -168 49 -168Q75 -168 98 -147T130 -108T146 -71Q150 -59 199 138T250 346Q253 359 253 373Q253 405 230 405Q206 405 184 386T149 345T126 301L117 280Q115 278 98 278H81Q75 284 75 287\",107:\"158 683Q163 683 223 688T300 694Q312 694 312 686Q312 679 262 478L211 273Q212 272 219 276T248 299T296 349Q317 371 328 382T360 410T399 434T439 442Q462 442 480 427T498 373Q498 329 479 313T437 296Q420 296 409 305T398 331Q398 357 413 372T445 391Q454 392 448 399Q445 405 431 405Q408 405 377 385Q351 368 314 327T250 261Q243 257 243 254Q249 254 279 243T328 220Q366 192 366 146Q366 131 361 109T355 62V54Q355 26 376 26Q379 26 387 28Q420 36 443 130Q449 151 454 152Q457 153 465 153H470Q484 153 488 152T492 144Q492 141 489 126T476 88T454 42T420 5T372 -11Q331 -11 306 17T280 88Q280 100 283 119T287 146Q287 172 265 190T221 215T198 220Q197 220 173 121Q152 37 148 24T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683\",108:\"162 61Q162 26 183 26Q211 26 239 131Q245 151 249 152Q252 153 261 153H266H271Q288 153 288 144Q288 143 286 129Q276 91 266 65T232 14T179 -11Q144 -11 116 12T87 81Q87 96 88 102L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 686Q312 676 240 389L164 86Q162 74 162 61\",109:\"81 278Q75 284 75 289Q77 299 89 338Q101 373 114 396T142 428T166 439T186 442H189Q225 440 251 417Q266 401 271 384L275 374L286 386Q342 442 414 442Q428 442 440 440T461 435T479 427T493 418T503 407T511 397T516 387T520 378T523 370L524 366Q546 395 583 418T667 442Q729 442 755 411T782 338Q782 290 743 178T704 45Q704 26 720 26Q773 26 802 136Q805 148 807 150T822 153H828Q838 153 841 153T848 150T851 143Q851 137 843 115T821 63T778 12T715 -10Q671 -10 652 16T632 71Q632 88 668 191T704 349Q704 367 703 372Q693 405 664 405Q637 405 613 393T571 360T547 329T534 309Q523 290 518 274T487 151Q455 24 452 16Q438 -11 408 -11T376 18Q376 26 411 167T447 314Q449 325 449 346Q449 372 444 384Q431 405 408 405Q334 405 276 305Q266 289 262 273T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 26 159 182T200 347Q202 361 202 372Q202 405 181 405Q168 405 159 391Q145 374 132 328T117 280T98 278H81\",110:\"449 44Q449 26 465 26Q482 26 502 43Q528 71 547 136Q550 148 552 150T566 153H572Q582 153 585 153T592 150T595 143Q595 133 585 105T547 41T483 -8Q475 -10 459 -10Q421 -10 399 12T377 72Q377 93 393 135Q448 288 448 349Q448 367 447 372Q437 405 408 405Q381 405 357 393T315 360T291 329T278 309Q267 290 262 274T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 406 183 406Q163 406 148 374Q142 360 135 338T124 299T117 280T98 278H81Q75 284 75 287Q76 293 78 303T90 341T110 388T141 425T184 442Q195 442 204 441T221 436T235 429T247 421T256 412T262 403T267 394T271 387T273 381L274 378V374L287 387Q342 442 414 442Q474 442 500 410T526 338Q526 290 488 178T449 44\",111:\"103 155Q103 266 185 354T366 442Q435 442 476 394T517 275Q517 169 436 79T255 -11Q194 -11 149 32T103 155ZM187 119Q187 67 209 47T260 26Q290 26 321 47Q354 68 380 113T426 260Q432 291 432 315Q432 361 408 385Q388 405 358 405Q319 405 283 374T227 294Q217 271 202 213T187 119\",112:\"81 278Q75 284 75 287Q93 379 131 417Q154 442 189 442Q222 440 243 423T272 382L280 390Q335 442 389 442Q446 442 482 398T518 284Q518 212 480 137T375 19Q321 -10 291 -10H282H278Q237 -10 204 28L202 32L181 -51Q160 -135 160 -139Q160 -147 205 -148H230Q236 -155 236 -157T233 -175Q230 -187 227 -190T214 -194Q211 -194 202 -194T169 -193T108 -192Q40 -192 21 -194H13Q6 -187 6 -183T9 -167Q13 -153 16 -151T39 -148Q73 -147 78 -136Q82 -128 139 104Q199 337 199 347Q202 362 202 372Q202 406 182 406Q169 406 159 391Q145 374 132 328T117 280T98 278H81ZM221 111Q234 26 286 26Q307 26 336 47T385 116Q398 147 416 217T435 332Q435 354 433 361Q420 405 383 405Q333 405 279 326L273 317L221 111\",113:\"228 -11Q172 -11 137 33T101 147Q101 205 125 266T201 377T318 441Q322 442 333 442Q388 442 420 394L429 403Q439 413 455 423T481 437T494 442Q498 442 501 439T504 434Q504 425 435 149Q364 -135 364 -139Q364 -147 409 -148H434Q440 -155 440 -157T437 -175Q433 -191 429 -193Q425 -194 418 -194Q416 -194 406 -194T372 -193T309 -192Q259 -192 233 -192T204 -193Q190 -193 190 -184Q190 -181 192 -169Q196 -153 199 -151T219 -148Q266 -148 277 -141Q283 -137 305 -51L325 29L316 22Q270 -11 228 -11ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323\",114:\"81 278Q75 284 75 289Q77 301 89 339Q122 442 183 442Q219 442 241 425T271 384L283 396Q327 442 384 442Q424 442 454 421T484 362Q484 327 464 312T424 296Q407 296 396 305T385 331Q385 352 394 365T414 384T424 390Q409 405 378 405Q322 405 276 315L268 300L234 161Q200 25 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 405 182 405Q164 405 150 377T128 316T117 280Q115 278 98 278H81\",115:\"153 285Q153 349 197 395T311 442Q355 442 386 420T418 356Q418 321 401 308T365 294Q336 294 331 326Q331 336 334 345T343 359T353 368T362 374L366 376Q365 379 362 383T344 396T308 404Q265 404 246 377T226 325T244 289T287 275T339 258T383 212Q395 188 395 163Q395 132 379 95T333 32Q279 -11 207 -11Q154 -11 115 13T76 86Q76 108 83 123T102 145T121 153T135 156Q154 156 164 145T175 117Q175 82 142 66L132 62Q131 62 131 61Q131 57 139 49T166 34T210 26Q250 26 277 44T312 83T321 123Q321 153 301 166T248 185T204 198Q176 211 162 241Q153 258 153 285\",116:\"94 385Q87 392 87 395Q87 399 90 411T95 425Q97 430 103 430T149 431H196L215 511Q218 521 222 539T228 565T234 585T242 603T251 615T264 623T281 626Q311 626 315 597Q315 591 296 513T275 433Q275 431 320 431H366Q373 424 373 420Q373 398 360 385H263L189 86Q188 80 188 61V54Q188 29 201 27Q213 23 229 30Q253 37 276 66T316 138Q321 149 324 151T342 153H347Q364 153 364 146T360 130Q331 63 290 26T202 -11Q158 -11 135 18T111 81Q111 93 129 168T166 314L184 383Q184 385 139 385H94\",117:\"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q301 26 324 43T358 77T369 99Q369 102 406 249T446 404Q460 431 490 431T522 402Q522 394 485 245T446 89Q443 74 443 56Q443 28 461 26Q487 26 507 86Q524 130 524 146Q524 147 530 153H547Q570 153 570 144Q570 138 561 109T544 62Q530 29 512 12Q492 -11 454 -11Q429 -9 410 2T385 23T376 41L363 28Q350 16 325 3T269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287\",118:\"387 386Q387 407 406 425T445 443Q466 443 479 423T492 371Q492 330 473 253Q411 18 307 -8Q298 -10 279 -10Q208 -10 179 26T149 114Q149 162 185 261T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 337 259 245T226 102Q226 26 285 26Q328 26 360 72T422 237Q429 265 429 290Q428 324 408 349T387 386\",119:\"591 386Q591 407 610 425T649 443Q670 443 683 423T696 371Q696 327 672 232T621 85Q575 -11 493 -11Q469 -11 449 -6T418 8T398 24T386 38L382 43Q347 -10 293 -10H286Q221 -10 186 21T150 115Q150 164 185 262T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 336 260 246T227 108Q227 26 292 26H295Q332 26 361 93L366 103V119Q366 122 367 133T369 150Q372 167 401 282T433 404Q446 431 477 431Q507 431 509 402Q509 396 500 358T474 254T446 140Q444 126 444 104V92Q444 66 459 46T502 26H505Q527 28 545 43T577 88T602 149T623 226Q633 265 633 290Q632 324 612 349T591 386\",120:\"275 356Q275 383 262 394T233 405Q196 405 166 371T121 289Q119 280 116 279T98 278H81Q77 282 76 283T75 288T78 300Q88 332 109 363T153 411Q195 442 235 442Q306 442 333 386Q373 442 427 442Q461 442 487 421T513 364T494 312T453 296Q436 296 425 305T414 331Q414 352 424 366T446 386L456 390Q448 404 421 404H418Q382 404 358 341Q355 332 328 227T298 105Q295 90 295 75Q295 26 339 26Q365 26 388 43T424 82T444 123T451 146L457 153H474Q490 153 493 152T496 144Q496 133 486 110T456 58T404 10T333 -11Q276 -11 237 45Q197 -11 146 -11Q108 -11 83 10T58 67Q58 99 76 117T119 135Q136 135 147 124T158 96Q158 89 157 85Q149 57 125 45L115 41Q125 26 151 26Q171 26 187 45T214 93Q217 102 244 210T273 330Q275 339 275 356\",121:\"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q325 26 367 93L405 245Q442 393 446 404Q460 431 490 431T522 402Q522 400 416 -24Q389 -102 327 -153T196 -205Q152 -205 122 -181T91 -119Q91 -84 110 -67T152 -49Q170 -49 180 -60T191 -87Q191 -108 174 -128Q167 -134 157 -138T146 -144Q155 -153 159 -156T173 -163T199 -167Q229 -167 255 -149T297 -105T325 -52T342 -6T347 15Q315 -10 269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287\",122:\"160 317Q158 317 155 317Q136 317 136 324Q136 351 171 396T260 442Q292 442 321 410T365 375H369Q384 375 404 408L425 441Q427 442 444 442H460Q466 436 466 434Q466 419 426 367Q387 314 294 222T178 105L170 95L181 94Q198 93 236 81T295 68Q328 68 356 89T395 141Q398 150 401 151T419 153Q441 153 441 144Q441 110 394 50T282 -11Q251 -11 221 23T171 57Q157 57 143 47T121 26T104 3T95 -10Q93 -11 76 -11H60Q54 -5 54 -2Q54 3 61 14Q103 88 233 215Q349 329 349 338L302 351Q269 362 247 362Q227 362 212 356T192 342T183 327T178 320Q175 317 160 317\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texMathit=void 0,e.texMathit={65:[.716,0,.743],66:[.683,0,.704],67:[.705,.021,.716],68:[.683,0,.755],69:[.68,0,.678],70:[.68,0,.653],71:[.705,.022,.774],72:[.683,0,.743],73:[.683,0,.386],74:[.683,.021,.525],75:[.683,0,.769],76:[.683,0,.627],77:[.683,0,.897],78:[.683,0,.743],79:[.704,.022,.767],80:[.683,0,.678],81:[.704,.194,.767],82:[.683,.022,.729],83:[.705,.022,.562],84:[.677,0,.716],85:[.683,.022,.743],86:[.683,.022,.743],87:[.683,.022,.999],88:[.683,0,.743],89:[.683,0,.743],90:[.683,0,.613],97:[.442,.011,.511],98:[.694,.011,.46],99:[.441,.01,.46],100:[.694,.011,.511],101:[.442,.01,.46],102:[.705,.204,.307],103:[.442,.205,.46],104:[.694,.011,.511],105:[.656,.01,.307],106:[.656,.204,.307],107:[.694,.011,.46],108:[.694,.011,.256],109:[.442,.011,.818],110:[.442,.011,.562],111:[.442,.011,.511],112:[.442,.194,.511],113:[.442,.194,.46],114:[.442,.011,.422],115:[.442,.011,.409],116:[.626,.011,.332],117:[.441,.011,.537],118:[.443,.01,.46],119:[.443,.011,.664],120:[.442,.011,.464],121:[.441,.205,.486],122:[.442,.011,.409]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyleBold=void 0;var r=Q(6),T=Q(256);e.texOldstyleBold=r.AddPaths(T.texOldstyleBold,{48:\"259 460H279Q352 460 403 444T491 378Q528 320 528 219Q528 100 475 45Q417 -17 287 -17Q152 -17 99 44T46 219Q46 246 47 265T57 318T82 376T131 422T210 454Q234 460 259 460ZM389 229V271Q389 351 371 380T280 409Q232 409 208 385Q194 371 190 345T185 229V210Q185 108 194 83Q208 35 287 35Q317 35 336 42Q372 55 380 85T389 204V229\",49:\"119 417Q191 417 240 428T310 450T338 461Q353 461 357 452T361 400Q361 389 361 342T360 254V62H420H456Q483 62 488 58T494 35V29Q494 13 491 7T473 0Q468 0 424 1T295 2T167 1T117 0Q114 0 111 0T107 1Q96 8 96 27V35Q96 54 102 58T140 62H170H229V213Q229 363 228 363Q220 360 196 358T150 356L130 355H93Q84 360 82 365T80 386Q80 404 81 407T95 417H119\",50:\"214 399Q202 399 191 398T175 395T170 392L171 390Q172 389 174 386T178 379T181 369T182 355Q182 328 165 312T123 296Q99 296 82 312T64 356Q64 397 105 428T253 460Q301 460 337 456T411 441T476 403T514 338Q516 328 516 310V304Q516 257 470 227Q456 217 427 205T376 184L354 176Q350 174 325 162T277 139L254 128Q414 129 428 130H439Q450 148 453 166T460 188T486 193H493Q515 193 517 178Q517 171 502 94T484 11Q481 3 472 2T410 0H269Q65 0 62 2Q55 5 53 10T51 32Q51 54 56 58Q60 62 173 131Q296 207 318 224Q368 264 368 308Q368 342 342 363T283 392T214 399\",51:\"80 309Q80 367 131 414T276 461Q388 461 441 417T494 313Q494 265 463 223T373 155L361 151L376 147Q436 132 480 92T525 -15T487 -127T393 -192T274 -211Q179 -211 114 -167T48 -53Q48 -18 69 5T128 29Q168 29 188 5T208 -50Q208 -59 207 -67T203 -81T197 -92T190 -101T183 -109T177 -114T170 -118L167 -121Q160 -125 164 -127Q167 -129 176 -133Q215 -152 268 -152H273Q337 -152 356 -92Q364 -69 364 -14Q364 45 352 74T303 120Q287 125 240 125H230Q201 125 196 127T191 146V152Q192 170 196 173T233 178Q234 178 241 178T252 179T262 181T274 183T285 188T297 195T308 205T319 218T328 235T337 257Q345 280 345 320V330Q345 345 343 355T335 379T312 399T270 407Q226 407 177 377Q226 356 226 310Q226 270 204 253T153 235Q123 235 102 253T80 309\",52:\"180 0Q155 0 124 0T84 -1Q48 -1 40 3T32 27V37Q32 59 34 63T204 265T377 465Q380 468 383 468H387Q391 468 398 468T411 469Q432 469 438 468T449 459Q451 455 451 258V62H489H498Q531 62 536 58T542 31Q542 9 537 5T504 0H489H451V-132H489H498Q530 -132 536 -136T542 -163Q542 -181 538 -187T522 -194Q518 -194 483 -193T378 -192Q281 -192 256 -193L217 -194Q203 -189 203 -169V-163V-158Q203 -140 209 -136T246 -132H265H314V0H180ZM325 62V320L105 63L215 62H325\",53:\"131 29Q159 26 175 12T194 -13T197 -35V-41Q197 -58 195 -66Q191 -76 185 -84T173 -97T161 -105T152 -109L148 -110Q148 -112 158 -121T195 -141T252 -152Q274 -152 280 -151Q335 -137 349 -104T363 9Q363 85 356 114T322 157Q305 166 286 166Q251 166 223 154T182 131T162 109Q154 98 150 96T130 93Q107 93 102 104Q100 107 100 279V371V424Q100 461 110 461Q114 461 123 458T149 450T183 441Q234 429 286 429Q313 429 340 432T387 440T422 449T447 457T458 461Q472 461 472 435Q472 420 470 418Q464 405 438 379T352 325T226 297Q189 297 171 301H168V182Q169 182 174 185T190 194T213 205T248 213T292 217Q391 217 454 159T517 5Q517 -92 444 -151T255 -211Q167 -211 112 -160T57 -44Q57 -12 76 8T131 29\",54:\"48 316Q48 398 70 462T124 562T198 621T274 652T339 660Q377 660 384 659Q497 632 497 532Q497 507 482 487T431 466Q397 466 381 486T365 530Q365 569 405 593Q382 603 381 603Q361 607 350 607Q316 607 279 589T221 533Q199 489 196 385L195 370Q196 371 203 379T217 395T237 410T263 424Q283 431 313 431Q409 431 468 368Q526 310 526 208Q526 131 492 81T405 5Q359 -17 289 -17Q256 -17 227 -11T163 17T105 73T65 170T48 316ZM293 380Q244 380 220 331T196 212Q196 104 216 80Q240 41 292 41Q295 41 301 41T309 42Q338 46 355 62Q372 81 375 108T379 230Q378 314 372 333Q358 375 299 380H293\",55:\"95 210H88Q66 210 64 225Q64 229 82 345T102 465Q106 476 125 476H131Q162 476 162 458Q162 451 213 448Q221 448 238 447T260 446Q261 446 410 444Q436 444 468 444T509 445Q544 445 551 440T558 413V404Q558 395 547 380T478 301L392 202Q354 150 339 81T321 -104V-132Q321 -187 286 -203Q273 -211 255 -211Q236 -211 217 -199T190 -160Q189 -153 189 -130Q194 17 282 156Q309 200 370 270Q404 307 400 307H293Q151 306 146 303Q140 300 132 259T120 215Q115 210 95 210\",56:\"48 164Q48 199 59 228T92 277T128 307T163 329Q159 332 155 336Q135 346 110 382Q80 427 80 477Q80 564 147 620Q202 660 264 660Q266 660 275 660T290 661Q384 661 439 619T494 506Q494 486 489 468T477 437T459 413T440 395T421 380T406 370L410 368Q414 365 421 361T437 351T456 335T476 316T495 291T511 262T522 228T526 189Q526 93 460 38T282 -17Q242 -17 205 -9T130 19T71 75T48 164ZM406 506Q406 545 379 576T283 607Q218 606 193 585T168 536Q168 522 172 513T195 490T224 471T275 443L346 403Q406 446 406 506ZM291 42Q365 42 395 70T425 134V141Q425 170 401 190T319 242Q308 248 302 251Q286 260 266 271T235 288L225 294Q222 292 217 289T198 274T175 249T157 212T148 163Q148 116 179 79T291 42\",57:\"175 -140Q198 -152 236 -152Q294 -152 332 -116Q356 -91 366 -54T379 62V78L376 74Q372 70 366 64T352 50T333 35T308 23Q289 17 262 17Q168 17 108 77T48 235Q48 273 59 317Q81 381 141 421T276 461Q279 461 285 461T295 460Q326 460 354 454T415 426T471 371T510 277T526 136Q526 42 501 -28T432 -136T341 -192T240 -210Q199 -210 169 -201T121 -178T94 -146T80 -112T77 -82Q77 -51 95 -33T143 -15Q170 -15 189 -33T209 -81Q209 -116 175 -140ZM377 244V274Q377 300 376 316T368 352T348 384T312 405Q307 406 283 406Q257 406 238 396T213 376T205 361Q196 341 196 259V233V181Q196 122 211 96T278 69H298Q330 82 345 104Q367 134 376 190Q377 200 377 244\",65:\"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266\",66:\"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83\",67:\"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20\",68:\"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391\",69:\"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516\",70:\"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567\",71:\"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279\",72:\"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447\",73:\"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499\",74:\"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390\",75:\"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142\",76:\"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17\",77:\"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20\",78:\"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47\",79:\"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433\",80:\"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468\",81:\"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453\",82:\"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0\",83:\"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476\",84:\"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462\",85:\"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586\",86:\"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608\",87:\"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607\",88:\"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562\",89:\"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555\",90:\"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyleBold=void 0,e.texOldstyleBold={48:[.46,.017,.575],49:[.461,0,.575],50:[.46,0,.575],51:[.461,.211,.575],52:[.469,.194,.575],53:[.461,.211,.575],54:[.66,.017,.575],55:[.476,.211,.575],56:[.661,.017,.575],57:[.461,.21,.575],65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyle=void 0;var r=Q(6),T=Q(258);e.texOldstyle=r.AddPaths(T.texOldstyle,{48:\"39 213Q39 274 53 319T89 389T139 429T192 448T242 452Q347 452 400 400Q460 335 460 213Q460 -22 250 -22Q39 -22 39 213ZM364 242Q364 279 363 301T355 348T338 385T306 406T254 415Q250 415 245 415T238 416Q217 416 190 404T150 368Q136 339 136 221Q136 114 146 78T200 23Q219 16 250 16Q280 16 299 23Q341 41 352 77T364 221V242\",49:\"116 410Q176 412 215 423T269 443T288 453H291Q293 453 301 447V254Q301 62 303 60Q307 52 322 49T394 46Q418 46 422 43T426 23Q426 8 424 4T411 0Q407 0 369 1T258 2T148 1T106 0Q96 0 94 4T91 23Q91 40 95 43T123 46Q180 46 195 49T215 61Q216 63 216 220V376Q192 367 119 364H93L86 371V403L92 410H116\",50:\"55 334Q55 386 105 419T236 453Q333 453 390 413T448 307Q448 278 437 256T406 218T365 193T318 172T277 151L248 134Q219 118 191 102T163 84T267 83L382 85H391Q399 99 406 126Q410 143 413 145T429 148Q440 148 442 147T449 139Q449 137 435 73T420 7Q420 6 414 0H233Q94 0 71 0T46 5Q46 5 46 6Q44 8 44 24Q44 39 46 41Q47 44 98 78T212 155T294 212Q347 257 347 304Q347 354 306 380T203 407Q150 407 120 377Q118 375 123 373Q146 362 146 332Q146 315 133 302T101 288Q85 288 70 298T55 334\",51:\"69 312Q69 377 122 414T233 452Q333 452 381 409T430 313Q430 268 402 223T311 149L301 144Q307 143 317 140T355 123T402 92T439 44T456 -25Q456 -101 396 -158T241 -216Q154 -216 98 -173T42 -68Q42 -58 44 -50T50 -35T57 -25T66 -17T75 -13T82 -10L87 -8Q92 -7 102 -7Q132 -7 147 -25T162 -66Q162 -112 118 -125L113 -126Q113 -129 127 -140T173 -162T239 -173Q268 -173 292 -158Q345 -124 345 -24Q345 33 329 67Q298 125 229 125H210H172Q166 131 166 142Q166 159 172 161Q178 161 208 164T244 169Q251 169 263 176T291 199T316 245T327 314Q327 413 238 413Q182 413 130 369Q177 350 181 312Q181 289 166 273T125 257Q102 257 86 272T69 312\",52:\"163 0Q139 0 109 0T71 -1Q43 -1 36 2T28 15V27V46L190 270Q325 457 330 462Q333 464 352 464H371L377 458V46H464L471 40V6L464 0H377V-65V-108Q377 -131 379 -137T391 -144Q409 -148 446 -148H464Q468 -151 471 -155V-187L464 -194H453Q395 -192 325 -192Q222 -192 210 -194H199L193 -188V-154L199 -148H228Q241 -148 250 -148T265 -146T275 -145T281 -143T284 -141T286 -138T289 -134V0H163ZM295 46V350L75 46H295\",53:\"159 -44Q159 -66 145 -80T109 -96H102L107 -105Q148 -173 228 -173Q255 -173 280 -162Q351 -128 351 -6V8Q351 67 344 98T316 151Q288 176 255 176Q175 176 136 109Q129 100 114 100Q97 100 95 106Q93 110 93 277V403Q93 451 98 451Q100 452 103 452Q105 452 124 445T177 431T251 423Q294 423 328 430T380 445T401 453Q410 453 410 435V422Q332 331 203 331Q152 331 140 339Q139 339 139 254V168Q194 214 256 214Q332 214 390 154T448 0Q448 -95 381 -155T229 -216Q153 -216 104 -166T50 -49Q50 -15 66 -1T105 13Q128 13 143 -3T159 -44\",54:\"42 313Q42 401 68 472T133 583T215 644T296 665H304Q317 665 329 664T360 657T393 640T418 608T432 557Q432 533 422 519T401 502T380 498Q358 498 343 512T328 550Q328 591 367 601L372 602Q372 604 365 609T341 620T307 626Q260 626 226 600T174 537Q147 483 143 376V356Q192 434 266 434Q317 434 357 409Q406 375 435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM251 396Q211 396 178 354T145 217Q145 159 152 122T166 73T187 47Q216 21 252 21Q294 21 321 47Q342 68 349 99T356 203V232Q356 264 354 285T345 331T322 373T280 395Q274 396 251 396\",55:\"75 246Q64 246 62 247T55 255Q55 259 72 357T90 458L94 462H99Q104 463 109 463H121Q128 460 128 452Q128 445 134 441T165 435T233 432T356 431H478L485 425V392L414 298Q408 290 385 260T358 223T337 191T317 154T302 116T289 68T282 14T275 -55T274 -137Q274 -173 272 -177Q262 -216 223 -216Q170 -216 170 -157V-148Q172 -78 189 -12T237 109T288 196T338 266Q345 275 348 279Q395 340 395 342Q396 343 376 343T274 343Q122 342 117 339T103 294T90 248Q88 246 75 246\",56:\"69 496Q69 570 124 618T247 666Q321 666 375 624T429 515Q429 468 405 433T320 361L346 344Q385 320 403 301T439 250Q456 212 456 181V172V160Q456 141 449 119T426 71T386 26T326 -8T246 -21Q160 -21 102 30T43 155Q43 265 167 332L176 337L161 347Q105 384 87 423Q69 458 69 496ZM371 513Q371 567 334 596T249 626Q198 626 163 598T127 532Q127 521 129 511T138 492T150 476T167 460T185 447T207 433T228 420L284 384L294 391Q346 424 363 469Q371 486 371 513ZM190 21T250 21T351 56T393 140Q393 180 362 213Q354 221 317 246T246 292L212 313Q210 313 200 307T173 287T142 256T117 212T106 157Q106 100 148 61\",57:\"171 -101Q171 -118 163 -130T146 -146T134 -151Q132 -151 132 -152Q132 -154 140 -159T167 -168T206 -173Q274 -173 317 -108Q356 -50 356 79V86L350 77Q308 9 231 9Q150 9 92 81Q42 141 42 228Q42 289 64 333Q93 390 142 421T235 452Q237 452 244 452T255 453Q289 453 321 439T386 391T437 290T457 128Q457 -29 381 -122T206 -216Q148 -216 108 -187T67 -104Q67 -75 84 -62T119 -49Q141 -49 156 -63T171 -101ZM242 46Q293 46 324 94T355 223Q355 323 337 356Q316 401 275 410Q267 412 248 412Q206 412 179 386Q155 360 149 328T143 224Q143 120 163 88Q192 46 242 46\",65:\"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249\",66:\"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342\",67:\"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25\",68:\"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407\",69:\"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470\",70:\"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579\",71:\"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68\",72:\"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487\",73:\"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0\",74:\"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78\",75:\"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429\",76:\"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11\",77:\"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9\",78:\"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705\",79:\"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428\",80:\"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475\",81:\"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286\",82:\"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475\",83:\"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512\",84:\"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475\",85:\"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592\",86:\"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633\",87:\"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633\",88:\"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324\",89:\"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599\",90:\"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyle=void 0,e.texOldstyle={48:[.452,.022,.5],49:[.453,0,.5],50:[.453,0,.5],51:[.452,.216,.5],52:[.464,.194,.5],53:[.453,.216,.5],54:[.665,.022,.5],55:[.463,.216,.5],56:[.666,.021,.5],57:[.453,.216,.5],65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize3=void 0;var r=Q(6),T=Q(260);e.texSize3=r.AddPaths(T.texSize3,{40:\"701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940\",41:\"34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438\",47:\"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949\",91:\"247 -949V1450H516V1388H309V-887H516V-949H247\",92:\"988 -922Q988 -933 980 -941T962 -949Q947 -949 940 -938Q936 -934 645 -155L204 1020Q56 1416 56 1424Q56 1433 62 1441T84 1450Q97 1448 103 1439Q107 1435 398 656L839 -519Q988 -918 988 -922\",93:\"11 1388V1450H280V-949H11V-887H218V1388H11\",123:\"618 -943L612 -949H582L568 -943Q472 -903 411 -841T332 -703Q327 -682 327 -653T325 -350Q324 -28 323 -18Q317 24 301 61T264 124T221 171T179 205T147 225T132 234Q130 238 130 250Q130 255 130 258T131 264T132 267T134 269T139 272T144 275Q207 308 256 367Q310 436 323 519Q324 529 325 851Q326 1124 326 1154T332 1205Q369 1358 566 1443L582 1450H612L618 1444V1429Q618 1413 616 1411L608 1406Q599 1402 585 1393T552 1372T515 1343T479 1305T449 1257T429 1200Q425 1180 425 1152T423 851Q422 579 422 549T416 498Q407 459 388 424T346 364T297 318T250 284T214 264T197 254L188 251L205 242Q290 200 345 138T416 3Q421 -18 421 -48T423 -349Q423 -397 423 -472Q424 -677 428 -694Q429 -697 429 -699Q434 -722 443 -743T465 -782T491 -816T519 -845T548 -868T574 -886T595 -899T610 -908L616 -910Q618 -912 618 -928V-943\",125:\"131 1414T131 1429T133 1447T148 1450H153H167L182 1444Q276 1404 336 1343T415 1207Q421 1184 421 1154T423 851L424 531L426 517Q434 462 460 415T518 339T571 296T608 274Q615 270 616 267T618 251Q618 241 618 238T615 232T608 227Q542 194 491 132T426 -15L424 -29L423 -350Q422 -622 422 -652T415 -706Q397 -780 337 -841T182 -943L167 -949H153Q137 -949 134 -946T131 -928Q131 -914 132 -911T144 -904Q146 -903 148 -902Q299 -820 323 -680Q324 -663 325 -349T327 -19Q355 145 541 241L561 250L541 260Q356 355 327 520Q326 537 325 850T323 1181Q315 1227 293 1267T244 1332T193 1374T151 1401T132 1413Q131 1414 131 1429\",710:\"1439 564Q1434 564 1080 631T722 698Q719 698 362 631Q7 564 4 564L0 583Q-4 602 -4 603L720 772L1083 688Q1446 603 1447 603Q1447 602 1443 583L1439 564\",732:\"1 643Q1 646 76 671T271 722T476 749Q555 749 626 736T742 706T856 676T999 662Q1088 662 1192 684T1363 727T1432 749Q1432 745 1437 731T1442 716Q1442 714 1381 693T1212 645T1012 611Q1000 610 955 610Q851 610 701 653T444 697Q355 697 251 676T80 632T11 610Q11 614 6 628T1 643\",770:\"-5 564Q-9 564 -363 631T-722 698Q-725 698 -1082 631Q-1437 564 -1440 564L-1444 583Q-1448 602 -1448 603L-724 772L-361 688Q2 603 3 603Q3 602 -1 583L-5 564\",771:\"-1443 643Q-1443 646 -1368 671T-1173 722T-968 749Q-889 749 -818 736T-702 706T-588 676T-445 662Q-356 662 -252 684T-81 727T-12 749Q-12 745 -7 731T-2 716Q-2 714 -63 693T-232 645T-432 611Q-444 610 -489 610Q-593 610 -743 653T-1000 697Q-1089 697 -1193 676T-1364 632T-1433 610Q-1433 614 -1438 628T-1443 643\",8260:\"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949\",8730:\"424 -948Q422 -947 313 -434T202 80L170 31Q165 24 157 10Q137 -21 137 -21Q131 -16 124 -8L111 5L264 248L473 -720Q473 -717 727 359T983 1440Q989 1450 1001 1450Q1007 1450 1013 1445T1020 1433Q1020 1425 742 244T460 -941Q458 -950 439 -950H436Q424 -950 424 -948\",8968:\"246 -949V1450H571V1388H308V-949H246\",8969:\"11 1388V1450H336V-949H274V1388H11\",8970:\"246 -949V1450H308V-887H571V-949H246\",8971:\"274 -887V1450H336V-949H11V-887H274\",9001:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",9002:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\",10216:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",10217:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\",12296:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",12297:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize3=void 0,e.texSize3={40:[1.45,.949,.736],41:[1.45,.949,.736],47:[1.45,.949,1.044],91:[1.45,.949,.528],92:[1.45,.949,1.044],93:[1.45,.949,.528],123:[1.45,.949,.75],125:[1.45,.949,.75],710:[.772,-.564,1.444],732:[.749,-.61,1.444],770:[.772,-.564,0],771:[.749,-.61,0],8260:[1.45,.949,1.044],8730:[1.45,.95,1,{ic:.02}],8968:[1.45,.949,.583],8969:[1.45,.949,.583],8970:[1.45,.949,.583],8971:[1.45,.949,.583],9001:[1.45,.95,.75],9002:[1.45,.949,.75],10216:[1.45,.95,.75],10217:[1.45,.949,.75],12296:[1.45,.95,.75],12297:[1.45,.949,.75]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize4=void 0;var r=Q(6),T=Q(262);e.texSize4=r.AddPaths(T.texSize4,{40:\"758 -1237T758 -1240T752 -1249H736Q718 -1249 717 -1248Q711 -1245 672 -1199Q237 -706 237 251T672 1700Q697 1730 716 1749Q718 1750 735 1750H752Q758 1744 758 1741Q758 1737 740 1713T689 1644T619 1537T540 1380T463 1176Q348 802 348 251Q348 -242 441 -599T744 -1218Q758 -1237 758 -1240\",41:\"33 1741Q33 1750 51 1750H60H65Q73 1750 81 1743T119 1700Q554 1207 554 251Q554 -707 119 -1199Q76 -1250 66 -1250Q65 -1250 62 -1250T56 -1249Q55 -1249 53 -1249T49 -1250Q33 -1250 33 -1239Q33 -1236 50 -1214T98 -1150T163 -1052T238 -910T311 -727Q443 -335 443 251Q443 402 436 532T405 831T339 1142T224 1438T50 1716Q33 1737 33 1741\",47:\"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738\",91:\"269 -1249V1750H577V1677H342V-1176H577V-1249H269\",92:\"56 1720Q56 1732 64 1741T85 1750Q104 1750 111 1738Q113 1734 666 264T1220 -1214Q1220 -1215 1220 -1217T1221 -1220Q1221 -1231 1212 -1240T1191 -1249Q1175 -1249 1166 -1237Q1164 -1233 611 237T57 1715Q57 1716 56 1718V1720\",93:\"5 1677V1750H313V-1249H5V-1176H240V1677H5\",123:\"661 -1243L655 -1249H622L604 -1240Q503 -1190 434 -1107T348 -909Q346 -897 346 -499L345 -98L343 -82Q335 3 287 87T157 223Q146 232 145 236Q144 240 144 250Q144 265 145 268T157 278Q242 333 288 417T343 583L345 600L346 1001Q346 1398 348 1410Q379 1622 600 1739L622 1750H655L661 1744V1727V1721Q661 1712 661 1710T657 1705T648 1700T630 1690T602 1668Q589 1659 574 1643T531 1593T484 1508T459 1398Q458 1389 458 1001Q458 614 457 605Q441 435 301 316Q254 277 202 251L250 222Q260 216 301 185Q443 66 457 -104Q458 -113 458 -501Q458 -888 459 -897Q463 -944 478 -988T509 -1060T548 -1114T580 -1149T602 -1167Q620 -1183 634 -1192T653 -1202T659 -1207T661 -1220V-1226V-1243\",125:\"144 1727Q144 1743 146 1746T162 1750H167H183L203 1740Q274 1705 325 1658T403 1562T440 1478T456 1410Q458 1398 458 1001Q459 661 459 624T465 558Q470 526 480 496T502 441T529 395T559 356T588 325T615 301T637 284T654 273L660 269V266Q660 263 660 259T661 250V239Q661 236 661 234T660 232T656 229T649 224Q577 179 528 105T465 -57Q460 -86 460 -123T458 -499V-661Q458 -857 457 -893T447 -955Q425 -1048 359 -1120T203 -1239L183 -1249H168Q150 -1249 147 -1246T144 -1226Q144 -1213 145 -1210T153 -1202Q169 -1193 186 -1181T232 -1140T282 -1081T322 -1000T345 -897Q346 -888 346 -501Q346 -113 347 -104Q359 58 503 184Q554 226 603 250Q504 299 430 393T347 605Q346 614 346 1002Q346 1389 345 1398Q338 1493 288 1573T153 1703Q146 1707 145 1710T144 1727\",710:\"5 561Q-4 561 -9 582T-14 618Q-14 623 -13 625Q-11 628 461 736T943 845Q945 845 1417 738T1896 628Q1902 628 1902 618Q1902 607 1897 584T1883 561Q1881 561 1412 654L945 750L476 654Q6 561 5 561\",732:\"1212 583Q1124 583 1048 603T923 647T799 691T635 711Q524 711 375 679T120 615L16 583Q14 584 12 587T9 592Q-2 650 2 659Q2 669 38 687Q54 696 146 723T309 767Q527 823 666 823Q759 823 837 803T964 759T1088 715T1252 695Q1363 695 1512 727T1764 791T1871 823Q1872 822 1874 819T1878 814Q1885 783 1885 753Q1885 748 1884 747Q1884 738 1849 719Q1836 712 1740 682T1484 617T1212 583\",770:\"-1884 561Q-1893 561 -1898 582T-1903 618Q-1903 623 -1902 625Q-1900 628 -1428 736T-946 845Q-944 845 -472 738T7 628Q13 628 13 618Q13 607 8 584T-6 561Q-8 561 -477 654L-944 750L-1413 654Q-1883 561 -1884 561\",771:\"-677 583Q-765 583 -841 603T-966 647T-1090 691T-1254 711Q-1365 711 -1514 679T-1768 615L-1873 583Q-1875 584 -1877 587T-1880 592Q-1891 650 -1887 659Q-1887 669 -1851 687Q-1835 696 -1743 723T-1580 767Q-1362 823 -1223 823Q-1130 823 -1052 803T-925 759T-801 715T-637 695Q-526 695 -377 727T-125 791T-18 823Q-17 822 -15 819T-11 814Q-4 782 -4 753Q-4 748 -5 747Q-5 738 -40 719Q-53 712 -149 682T-405 617T-677 583\",8260:\"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738\",8730:\"983 1739Q988 1750 1001 1750Q1008 1750 1013 1745T1020 1733Q1020 1726 742 244T460 -1241Q458 -1250 439 -1250H436Q424 -1250 424 -1248L410 -1166Q395 -1083 367 -920T312 -601L201 44L137 -83L111 -57L187 96L264 247Q265 246 369 -357Q470 -958 473 -963L727 384Q979 1729 983 1739\",8968:\"269 -1249V1750H633V1677H342V-1249H269\",8969:\"5 1677V1750H369V-1249H296V1677H5\",8970:\"269 -1249V1750H342V-1176H633V-1249H269\",8971:\"296 -1176V1750H369V-1249H5V-1176H296\",9001:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",9002:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",9115:\"837 1154Q843 1148 843 1145Q843 1141 818 1106T753 1002T667 841T574 604T494 299Q417 -84 417 -609Q417 -641 416 -647T411 -654Q409 -655 366 -655Q299 -655 297 -654Q292 -652 292 -643T291 -583Q293 -400 304 -242T347 110T432 470T574 813T785 1136Q787 1139 790 1142T794 1147T796 1150T799 1152T802 1153T807 1154T813 1154H819H837\",9116:\"413 -9Q412 -9 407 -9T388 -10T354 -10Q300 -10 297 -9Q294 -8 293 -5Q291 5 291 127V300Q291 602 292 605L296 609Q298 610 366 610Q382 610 392 610T407 610T412 609Q416 609 416 592T417 473V127Q417 -9 413 -9\",9117:\"843 -635Q843 -638 837 -644H820Q801 -644 800 -643Q792 -635 785 -626Q684 -503 605 -363T473 -75T385 216T330 518T302 809T291 1093Q291 1144 291 1153T296 1164Q298 1165 366 1165Q409 1165 411 1164Q415 1163 416 1157T417 1119Q417 529 517 109T833 -617Q843 -631 843 -635\",9118:\"31 1143Q31 1154 49 1154H59Q72 1154 75 1152T89 1136Q190 1013 269 873T401 585T489 294T544 -8T572 -299T583 -583Q583 -634 583 -643T577 -654Q575 -655 508 -655Q465 -655 463 -654Q459 -653 458 -647T457 -609Q457 -58 371 340T100 1037Q87 1059 61 1098T31 1143\",9119:\"579 -9Q578 -9 573 -9T554 -10T520 -10Q466 -10 463 -9Q460 -8 459 -5Q457 5 457 127V300Q457 602 458 605L462 609Q464 610 532 610Q548 610 558 610T573 610T578 609Q582 609 582 592T583 473V127Q583 -9 579 -9\",9120:\"56 -644H50Q31 -644 31 -635Q31 -632 37 -622Q69 -579 100 -527Q286 -228 371 170T457 1119Q457 1161 462 1164Q464 1165 520 1165Q575 1165 577 1164Q582 1162 582 1153T583 1093Q581 910 570 752T527 400T442 40T300 -303T89 -626Q78 -640 75 -642T61 -644H56\",9121:\"319 -645V1154H666V1070H403V-645H319\",9122:\"319 0V602H403V0H319\",9123:\"319 -644V1155H403V-560H666V-644H319\",9124:\"0 1070V1154H347V-645H263V1070H0\",9125:\"263 0V602H347V0H263\",9126:\"263 -560V1155H347V-644H0V-560H263\",9127:\"712 899L718 893V876V865Q718 854 704 846Q627 793 577 710T510 525Q510 524 509 521Q505 493 504 349Q504 345 504 334Q504 277 504 240Q504 -2 503 -4Q502 -8 494 -9T444 -10Q392 -10 390 -9Q387 -8 386 -5Q384 5 384 230Q384 262 384 312T383 382Q383 481 392 535T434 656Q510 806 664 892L677 899H712\",9128:\"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 924Q504 691 503 682Q494 549 425 439T243 259L229 250L243 241Q349 175 421 66T503 -182Q504 -191 504 -424Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -425V-282Q384 -176 377 -116T342 10Q325 54 301 92T255 155T214 196T183 222T171 232Q170 233 170 250T171 268Q171 269 191 284T240 331T300 407T354 524T383 679Q384 691 384 925Q384 1152 385 1155L389 1159\",9129:\"718 -893L712 -899H677L666 -893Q542 -825 468 -714T385 -476Q384 -466 384 -282Q384 3 385 5L389 9Q392 10 444 10Q486 10 494 9T503 4Q504 2 504 -239V-310V-366Q504 -470 508 -513T530 -609Q546 -657 569 -698T617 -767T661 -812T699 -843T717 -856T718 -876V-893\",9130:\"384 150V266Q384 304 389 309Q391 310 455 310Q496 310 498 309Q502 308 503 298Q504 283 504 150Q504 32 504 12T499 -9H498Q496 -10 444 -10T390 -9Q386 -8 385 2Q384 17 384 150\",9131:\"170 875Q170 892 172 895T189 899H194H211L222 893Q345 826 420 715T503 476Q504 467 504 230Q504 51 504 21T499 -9H498Q496 -10 444 -10Q402 -10 394 -9T385 -4Q384 -2 384 240V311V366Q384 469 380 513T358 609Q342 657 319 698T271 767T227 812T189 843T171 856T170 875\",9132:\"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 925V782Q504 676 511 616T546 490Q563 446 587 408T633 345T674 304T705 278T717 268Q718 267 718 250T717 232Q717 231 697 216T648 169T588 93T534 -24T505 -179Q504 -191 504 -425Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -424Q384 -191 385 -182Q394 -49 463 61T645 241L659 250L645 259Q539 325 467 434T385 682Q384 692 384 873Q384 1153 385 1155L389 1159\",9133:\"384 -239V-57Q384 4 389 9Q391 10 455 10Q496 10 498 9Q501 8 502 5Q504 -5 504 -230Q504 -261 504 -311T505 -381Q505 -486 492 -551T435 -691Q357 -820 222 -893L211 -899H195Q176 -899 173 -896T170 -874Q170 -858 171 -855T184 -846Q262 -793 312 -709T378 -525Q378 -524 379 -522Q383 -493 384 -351Q384 -345 384 -334Q384 -276 384 -239\",9143:\"742 -871Q740 -873 737 -876T733 -880T730 -882T724 -884T714 -885H702L222 569L180 484Q138 399 137 399Q131 404 124 412L111 425L265 736L702 -586V168L703 922Q713 935 722 935Q734 935 742 920V-871\",10216:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",10217:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",12296:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",12297:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",57344:\"722 -14H720Q708 -14 702 0V306L703 612Q713 625 722 625Q734 625 742 610V0Q734 -14 724 -14H722\",57345:\"702 589Q706 601 718 605H1061Q1076 597 1076 585Q1076 572 1061 565H742V0Q734 -14 724 -14H722H720Q708 -14 702 0V589\",57680:\"-18 -213L-24 -207V-172L-16 -158Q75 2 260 84Q334 113 415 119Q418 119 427 119T440 120Q454 120 457 117T460 98V60V25Q460 7 457 4T441 0Q308 0 193 -55T25 -205Q21 -211 18 -212T-1 -213H-18\",57681:\"-10 60Q-10 104 -10 111T-5 118Q-1 120 10 120Q96 120 190 84Q375 2 466 -158L474 -172V-207L468 -213H451H447Q437 -213 434 -213T428 -209T423 -202T414 -187T396 -163Q331 -82 224 -41T9 0Q-4 0 -7 3T-10 25V60\",57682:\"-24 327L-18 333H-1Q11 333 15 333T22 329T27 322T35 308T54 284Q115 203 225 162T441 120Q454 120 457 117T460 95V60V28Q460 8 457 4T442 0Q355 0 260 36Q75 118 -16 278L-24 292V327\",57683:\"-10 60V95Q-10 113 -7 116T9 120Q151 120 250 171T396 284Q404 293 412 305T424 324T431 331Q433 333 451 333H468L474 327V292L466 278Q375 118 190 36Q95 0 8 0Q-5 0 -7 3T-10 24V60\",57684:\"-10 0V120H410V0H-10\"},{57685:\"\\ue153\\ue152\",57686:\"\\ue151\\ue150\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize4=void 0,e.texSize4={40:[1.75,1.249,.792],41:[1.75,1.249,.792],47:[1.75,1.249,1.278],91:[1.75,1.249,.583],92:[1.75,1.249,1.278],93:[1.75,1.249,.583],123:[1.75,1.249,.806],125:[1.75,1.249,.806],710:[.845,-.561,1.889,{ic:.013}],732:[.823,-.583,1.889],770:[.845,-.561,0,{ic:.013}],771:[.823,-.583,0],8260:[1.75,1.249,1.278],8730:[1.75,1.25,1,{ic:.02}],8968:[1.75,1.249,.639],8969:[1.75,1.249,.639],8970:[1.75,1.249,.639],8971:[1.75,1.249,.639],9001:[1.75,1.248,.806],9002:[1.75,1.248,.806],9115:[1.154,.655,.875],9116:[.61,.01,.875],9117:[1.165,.644,.875],9118:[1.154,.655,.875],9119:[.61,.01,.875],9120:[1.165,.644,.875],9121:[1.154,.645,.667],9122:[.602,0,.667],9123:[1.155,.644,.667],9124:[1.154,.645,.667],9125:[.602,0,.667],9126:[1.155,.644,.667],9127:[.899,.01,.889],9128:[1.16,.66,.889],9129:[.01,.899,.889],9130:[.29,.015,.889],9131:[.899,.01,.889],9132:[1.16,.66,.889],9133:[.01,.899,.889],9143:[.935,.885,1.056],10216:[1.75,1.248,.806],10217:[1.75,1.248,.806],12296:[1.75,1.248,.806],12297:[1.75,1.248,.806],57344:[.625,.014,1.056],57345:[.605,.014,1.056,{ic:.02}],57680:[.12,.213,.45,{ic:.01}],57681:[.12,.213,.45,{ic:.024}],57682:[.333,0,.45,{ic:.01}],57683:[.333,0,.45,{ic:.024}],57684:[.32,.2,.4,{ic:.01}],57685:[.333,0,.9,{ic:.01}],57686:[.12,.213,.9,{ic:.01}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texVariant=void 0;var r=Q(6),T=Q(264);e.texVariant=r.AddPaths(T.texVariant,{710:\"1 561Q-3 563 -6 577T-12 604L-14 618Q-14 625 -7 628T23 635Q31 636 36 637Q63 641 621 745Q1148 845 1165 845Q1167 845 1752 739L2338 630Q2346 630 2346 618Q2340 565 2332 561Q2329 561 1749 654Q1617 675 1466 699T1241 736T1167 748Q1165 748 1093 737T867 700T583 654Q3 561 1 561\",732:\"804 788Q717 788 606 772T397 732T213 685T75 645T18 628Q11 628 11 632Q8 637 4 668T2 704Q2 713 36 732Q55 739 242 795Q622 898 826 898Q893 898 947 895Q1009 887 1056 872T1187 819Q1286 776 1356 758T1527 739Q1614 739 1725 755T1934 795T2118 842T2256 882T2313 899Q2320 899 2320 895Q2323 890 2327 860T2329 824Q2329 818 2296 795Q2273 787 2089 732Q1810 657 1598 632Q1562 629 1492 629Q1389 629 1320 644T1144 708Q1048 751 977 769T804 788\",770:\"-2332 561Q-2336 563 -2340 577T-2346 604L-2347 618Q-2347 625 -2340 628T-2310 635Q-2302 636 -2297 637Q-2270 641 -1712 745Q-1185 845 -1168 845Q-1166 845 -581 739L5 630Q13 630 13 618Q7 565 -1 561Q-4 561 -584 654Q-716 675 -867 699T-1092 736T-1166 748Q-1168 748 -1240 737T-1466 700T-1750 654Q-2330 561 -2332 561\",771:\"-1529 788Q-1616 788 -1727 772T-1936 732T-2120 685T-2258 645T-2315 628Q-2322 628 -2322 632Q-2325 637 -2329 668T-2331 704Q-2331 713 -2297 732Q-2278 739 -2091 795Q-1711 898 -1507 898Q-1440 898 -1386 895Q-1324 887 -1277 872T-1146 819Q-1047 776 -977 758T-806 739Q-719 739 -608 755T-399 795T-215 842T-77 882T-20 899Q-13 899 -13 895Q-10 890 -6 860T-4 824Q-4 818 -37 795Q-60 787 -244 732Q-523 657 -735 632Q-771 629 -841 629Q-944 629 -1013 644T-1189 708Q-1285 751 -1356 769T-1529 788\",1008:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",8463:\"182 599Q182 611 174 615T133 619Q118 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 295 644T282 597Q282 592 360 592H399Q430 592 445 587T460 563Q460 552 451 541L442 535H266L251 468Q247 453 243 436T236 409T233 399Q233 395 244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26L166 530Q166 534 161 534T129 535Q127 535 122 535T112 534Q74 534 74 562Q74 570 77 576T84 585T96 589T109 591T124 592T138 592L182 595V599\",8592:\"292 419Q292 400 261 347T211 275H306Q319 275 338 275T364 276Q399 276 410 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419\",8594:\"188 417Q188 437 221 437H233Q256 437 263 434T275 417Q294 373 327 333T402 270Q417 261 417 250Q417 241 410 236T382 217T341 182Q315 155 299 128T275 85T263 66Q259 64 231 64H219Q197 64 191 72T193 100Q202 124 215 147T239 185T257 210T267 223L269 225H174H116Q80 225 69 229T58 250T70 271T114 276Q121 276 140 276T174 275H269L267 277Q266 280 257 291T233 325T205 374Q188 408 188 417\",8652:\"755 512Q755 514 778 514H801L804 503Q805 501 812 486T824 462T839 437T862 408T892 381T932 354L944 347V327H507Q70 327 67 329Q55 335 55 347T67 365Q70 367 454 367H837L828 376Q803 403 785 437T761 489T755 512ZM55 153V173H492Q928 173 932 171Q944 166 944 153T932 135Q928 133 545 133H162L171 124Q198 95 216 61T239 8L244 -12Q244 -14 221 -14H198L195 -4Q160 95 67 146L55 153\",8708:\"55 676Q55 688 66 694H199L333 696L351 772Q364 827 370 843T386 860Q393 860 399 854T406 841Q406 836 391 765L375 696Q375 694 431 694H484Q491 688 497 681V12L493 5L486 1L353 -1H219L202 -79Q184 -153 180 -159Q175 -166 165 -166Q146 -166 146 -148Q146 -141 161 -76T177 -4Q177 -1 122 -1H68Q55 12 55 20T66 39H126L186 41L219 181Q226 215 234 251T246 305T251 325Q251 328 166 328H79Q68 345 68 347Q68 352 75 359L82 368H262L291 505Q298 539 306 575T319 630T324 650V654H68Q55 669 55 676ZM457 368V654H411Q366 654 366 652Q365 651 361 634T349 580T333 514Q303 373 302 372V368H457ZM457 39V328H375Q293 328 293 325Q292 322 260 183T228 41T344 39H457\",8709:\"624 470Q624 468 639 446T668 382T683 291Q683 181 612 99T437 -1Q425 -2 387 -2T337 -1Q245 18 193 70L179 81L131 39Q96 8 89 3T75 -3Q55 -3 55 17Q55 24 61 30T111 73Q154 113 151 113Q151 114 140 130T115 177T95 241Q94 253 94 291T95 341Q112 431 173 495Q265 587 385 587Q410 587 437 581Q522 571 582 513L595 501L642 541Q689 586 695 586Q696 586 697 586T699 587Q706 587 713 583T720 568Q720 560 711 551T664 510Q651 499 642 490T628 475T624 470ZM564 477Q517 522 448 539Q428 546 375 546Q290 546 229 492T144 370Q133 332 133 279Q136 228 151 195Q157 179 168 160T184 141Q186 141 375 307T564 477ZM642 290Q642 318 637 343T625 386T611 416T598 436T593 444Q590 444 402 277T213 108Q213 104 231 89T293 55T392 37Q495 37 568 111T642 290\",8722:\"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250\",8726:\"91 404T91 410T97 423T111 430Q117 430 395 224Q676 13 678 10Q685 3 685 -3T678 -16T664 -23Q658 -23 380 184T98 397Q91 404 91 410\",8733:\"56 250Q56 346 122 409T276 472Q349 472 407 430T486 326L489 316Q490 317 493 326T501 345T514 367T531 393Q557 425 602 448T698 472Q722 472 722 452Q722 437 702 435T642 421T571 377Q520 323 520 250Q520 179 568 126T693 68Q722 66 722 48Q722 28 698 28Q636 28 576 67T493 174L490 184Q489 181 483 167T475 150T468 136T458 120T447 107T432 90T412 73Q350 28 277 28Q188 28 122 91T56 250ZM199 68T278 68T408 122T459 250Q459 322 414 370T308 430Q302 431 273 431Q204 431 150 380T96 250Q96 176 147 122\",8739:\"91 417Q104 430 111 430T131 417V-10Q116 -23 111 -23T91 -10V417\",8740:\"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417\",8741:\"55 417Q69 431 76 431T95 419V-12Q84 -23 76 -23Q72 -23 69 -22T62 -16T55 -10V417ZM293 419Q300 431 310 431L324 424L331 417V-10Q316 -23 309 -23L297 -19L293 -12V419\",8742:\"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417\",8764:\"73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q148 353 195 363Q199 364 212 364Q262 364 294 350T408 272Q472 222 522 212Q537 208 555 208Q606 208 646 243Q671 268 680 296T691 342T702 365Q713 365 716 354T719 314Q714 236 664 179L660 176Q657 173 654 170T644 163T631 154T615 146T596 139T574 134T549 132Q510 132 465 156T386 211T307 265T223 290Q162 290 124 249T86 165Q86 155 82 144T73 132\",8776:\"55 326Q55 394 101 437T226 481Q268 479 313 460T392 419T469 379T555 361Q622 361 662 401Q686 423 688 450Q693 479 702 479H705Q719 479 719 442Q719 367 670 327T554 286Q512 286 466 304T386 345T307 385T220 404Q184 404 157 394T120 374L111 363Q86 339 86 317Q86 288 71 288Q55 288 55 326ZM55 90Q55 164 105 205T226 246Q269 243 314 224T392 183T470 144T558 126Q622 126 662 166Q686 187 688 214Q693 244 704 244Q716 244 719 210Q719 165 702 132T658 82T605 58T552 50T498 58T447 77T384 110Q322 146 302 152Q263 168 220 168Q179 168 144 152Q128 147 107 125T86 81Q86 52 71 52Q55 52 55 90\",8808:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",8809:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",8816:\"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623\",8817:\"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461\",8840:\"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710\",8841:\"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473\",8842:\"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122\",8843:\"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614\",8872:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V464H540Q554 456 555 446Q555 442 554 439T552 434T549 430T546 428T542 426T539 424H95V270H539Q540 270 542 269T545 267T549 264T552 260T554 255T555 248Q554 238 540 230H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678\",8901:\"71 0Q59 4 55 16V96L56 176Q59 180 66 187L70 189H209Q219 181 222 174V15Q219 10 209 1L140 0H71\",8994:\"77 122Q68 122 63 126T57 135T55 142Q55 151 68 176T111 235T177 302T271 356T388 378Q451 378 508 355T602 300T668 233T709 174T722 142Q722 124 704 122Q692 122 685 134T658 179T606 243Q511 338 390 338Q354 338 320 329Q251 312 193 263T97 141Q87 123 77 122\",8995:\"389 143Q324 143 266 164T171 215T107 277T67 330T55 358T60 371T77 378Q85 377 92 367T116 331T158 280Q256 182 389 182Q475 182 552 227T675 351Q688 378 704 378Q722 376 722 358Q722 352 710 330T670 276T605 215T511 164T389 143\",9651:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99ZM476 260L360 509L248 266Q137 24 135 22Q135 20 360 20Q586 20 586 21L476 260\",9661:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556ZM586 534Q586 536 361 536Q135 536 135 535L358 52L361 47L473 290Q584 532 586 534\",10887:\"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",10888:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",10955:\"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7\",10956:\"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texVariant=void 0,e.texVariant={710:[.845,-.561,2.333,{ic:.013}],732:[.899,-.628,2.333],770:[.845,-.561,0,{ic:.013}],771:[.899,-.628,0],1008:[.434,.006,.667,{ic:.067}],8463:[.695,.013,.54,{ic:.022}],8592:[.437,-.064,.5],8594:[.437,-.064,.5],8652:[.514,.014,1],8708:[.86,.166,.556],8709:[.587,0,.778],8722:[.27,-.23,.5],8726:[.43,.023,.778],8733:[.472,-.028,.778],8739:[.43,.023,.222],8740:[.43,.023,.222,{ic:.018}],8741:[.431,.023,.389],8742:[.431,.024,.389,{ic:.018}],8764:[.365,-.132,.778],8776:[.481,-.05,.778],8808:[.752,.284,.778],8809:[.752,.284,.778],8816:[.919,.421,.778],8817:[.919,.421,.778],8840:[.828,.33,.778],8841:[.828,.33,.778],8842:[.634,.255,.778],8843:[.634,.254,.778],8872:[.694,0,.611],8901:[.189,0,.278],8994:[.378,-.122,.778],8995:[.378,-.143,.778],9651:[.575,.02,.722],9661:[.576,.019,.722],10887:[.801,.303,.778],10888:[.801,.303,.778],10955:[.752,.332,.778],10956:[.752,.333,.778]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.delimiters=e.VSIZES=e.HDW3=e.HDW2=e.HDW1=void 0;var r=Q(28);e.HDW1=[.75,.25,.875],e.HDW2=[.85,.349,.667],e.HDW3=[.583,.082,.5],e.VSIZES=[1,1.2,1.8,2.4,3];var T={c:47,dir:r.V,sizes:e.VSIZES},n={c:175,dir:r.H,sizes:[.59],stretch:[0,175],HDW:[.59,-.544,.5]},o={c:710,dir:r.H,sizes:[.517,.817,1.335,1.777,1.909]},i={c:732,dir:r.H,sizes:[.583,.805,1.33,1.773,1.887]},a={c:8211,dir:r.H,sizes:[.5],stretch:[0,8211],HDW:[.285,-.248,.5]},s={c:8592,dir:r.H,sizes:[1],stretch:[8592,8722],HDW:e.HDW3},l={c:8594,dir:r.H,sizes:[1],stretch:[0,8722,8594],HDW:e.HDW3},c={c:8596,dir:r.H,sizes:[1],stretch:[8592,8722,8594],HDW:e.HDW3},u={c:8612,dir:r.H,stretch:[8592,8722,8739],HDW:e.HDW3,min:1.278},p={c:8614,dir:r.H,sizes:[1],stretch:[8739,8722,8594],HDW:e.HDW3},h={c:8656,dir:r.H,sizes:[1],stretch:[8656,61],HDW:e.HDW3},f={c:8658,dir:r.H,sizes:[1],stretch:[0,61,8658],HDW:e.HDW3},d={c:8660,dir:r.H,sizes:[1],stretch:[8656,61,8658],HDW:e.HDW3},L={c:8722,dir:r.H,sizes:[.778],stretch:[0,8722],HDW:e.HDW3},H={c:8739,dir:r.V,sizes:[1],stretch:[0,8739],HDW:[.627,.015,.333]},m={c:9180,dir:r.H,sizes:[.778,1],schar:[8994,8994],stretch:[57680,57684,57681],HDW:[.32,.2,.5]},y={c:9181,dir:r.H,sizes:[.778,1],schar:[8995,8995],stretch:[57682,57684,57683],HDW:[.32,.2,.5]},v={c:9182,dir:r.H,stretch:[57680,57684,57681,57685],HDW:[.32,.2,.5],min:1.8},g={c:9183,dir:r.H,stretch:[57682,57684,57683,57686],HDW:[.32,.2,.5],min:1.8},b={c:10216,dir:r.V,sizes:e.VSIZES},M={c:10217,dir:r.V,sizes:e.VSIZES},V={c:10502,dir:r.H,stretch:[8656,61,8739],HDW:e.HDW3,min:1.278},x={c:10503,dir:r.H,stretch:[8872,61,8658],HDW:e.HDW3,min:1.278};e.delimiters={40:{dir:r.V,sizes:e.VSIZES,stretch:[9115,9116,9117],HDW:[.85,.349,.875]},41:{dir:r.V,sizes:e.VSIZES,stretch:[9118,9119,9120],HDW:[.85,.349,.875]},45:L,47:T,61:{dir:r.H,sizes:[.767],stretch:[0,61],HDW:e.HDW3},91:{dir:r.V,sizes:e.VSIZES,stretch:[9121,9122,9123],HDW:e.HDW2},92:{dir:r.V,sizes:e.VSIZES},93:{dir:r.V,sizes:e.VSIZES,stretch:[9124,9125,9126],HDW:e.HDW2},94:o,95:a,123:{dir:r.V,sizes:e.VSIZES,stretch:[9127,9130,9129,9128],HDW:[.85,.349,.889]},124:{dir:r.V,sizes:[1],stretch:[0,8739],HDW:[.75,.25,.333]},125:{dir:r.V,sizes:e.VSIZES,stretch:[9131,9130,9133,9132],HDW:[.85,.349,.889]},126:i,175:n,710:o,713:n,732:i,770:o,771:i,818:a,8211:a,8212:a,8213:a,8214:{dir:r.V,sizes:[.602,1],schar:[0,8741],stretch:[0,8741],HDW:[.602,0,.556]},8215:a,8254:n,8407:l,8592:s,8593:{dir:r.V,sizes:[.888],stretch:[8593,9168],HDW:[.6,0,.667]},8594:l,8595:{dir:r.V,sizes:[.888],stretch:[0,9168,8595],HDW:[.6,0,.667]},8596:c,8597:{dir:r.V,sizes:[1.044],stretch:[8593,9168,8595],HDW:e.HDW1},8606:{dir:r.H,sizes:[1],stretch:[8606,8722],HDW:e.HDW3},8608:{dir:r.H,sizes:[1],stretch:[0,8722,8608],HDW:e.HDW3},8612:u,8613:{dir:r.V,stretch:[8593,9168,8869],HDW:e.HDW1,min:1.555},8614:p,8615:{dir:r.V,stretch:[8868,9168,8595],HDW:e.HDW1,min:1.555},8624:{dir:r.V,sizes:[.722],stretch:[8624,9168],HDW:e.HDW1},8625:{dir:r.V,sizes:[.722],stretch:[8625,9168],HDW:e.HDW1},8636:{dir:r.H,sizes:[1],stretch:[8636,8722],HDW:e.HDW3},8637:{dir:r.H,sizes:[1],stretch:[8637,8722],HDW:e.HDW3},8638:{dir:r.V,sizes:[.888],stretch:[8638,9168],HDW:e.HDW1},8639:{dir:r.V,sizes:[.888],stretch:[8639,9168],HDW:e.HDW1},8640:{dir:r.H,sizes:[1],stretch:[0,8722,8640],HDW:e.HDW3},8641:{dir:r.H,sizes:[1],stretch:[0,8722,8641],HDW:e.HDW3},8642:{dir:r.V,sizes:[.888],stretch:[0,9168,8642],HDW:e.HDW1},8643:{dir:r.V,sizes:[.888],stretch:[0,9168,8643],HDW:e.HDW1},8656:h,8657:{dir:r.V,sizes:[.888],stretch:[8657,8214],HDW:[.599,0,.778]},8658:f,8659:{dir:r.V,sizes:[.888],stretch:[0,8214,8659],HDW:[.6,0,.778]},8660:d,8661:{dir:r.V,sizes:[1.044],stretch:[8657,8214,8659],HDW:[.75,.25,.778]},8666:{dir:r.H,sizes:[1],stretch:[8666,8801],HDW:[.464,-.036,.5]},8667:{dir:r.H,sizes:[1],stretch:[0,8801,8667],HDW:[.464,-.036,.5]},8722:L,8725:T,8730:{dir:r.V,sizes:e.VSIZES,stretch:[57345,57344,9143],HDW:[.85,.35,1.056]},8739:H,8741:{dir:r.V,sizes:[1],stretch:[0,8741],HDW:[.627,.015,.556]},8968:{dir:r.V,sizes:e.VSIZES,stretch:[9121,9122],HDW:e.HDW2},8969:{dir:r.V,sizes:e.VSIZES,stretch:[9124,9125],HDW:e.HDW2},8970:{dir:r.V,sizes:e.VSIZES,stretch:[0,9122,9123],HDW:e.HDW2},8971:{dir:r.V,sizes:e.VSIZES,stretch:[0,9125,9126],HDW:e.HDW2},8978:m,8994:m,8995:y,9001:b,9002:M,9130:{dir:r.V,sizes:[.32],stretch:[9130,9130,9130],HDW:[.29,.015,.889]},9135:a,9136:{dir:r.V,sizes:[.989],stretch:[9127,9130,9133],HDW:[.75,.25,.889]},9137:{dir:r.V,sizes:[.989],stretch:[9131,9130,9129],HDW:[.75,.25,.889]},9140:{dir:r.H,stretch:[9484,8722,9488],HDW:e.HDW3,min:1},9141:{dir:r.H,stretch:[9492,8722,9496],HDW:e.HDW3,min:1},9168:{dir:r.V,sizes:[.602,1],schar:[0,8739],stretch:[0,8739],HDW:[.602,0,.333]},9180:m,9181:y,9182:v,9183:g,9184:{dir:r.H,stretch:[714,713,715],HDW:[.59,-.544,.5],min:1},9185:{dir:r.H,stretch:[715,713,714],HDW:[.59,-.544,.5],min:1},9472:a,10072:H,10216:b,10217:M,10222:{dir:r.V,sizes:[.989],stretch:[9127,9130,9129],HDW:[.75,.25,.889]},10223:{dir:r.V,sizes:[.989],stretch:[9131,9130,9133],HDW:[.75,.25,.889]},10229:s,10230:l,10231:c,10232:h,10233:f,10234:d,10235:u,10236:p,10237:V,10238:x,10502:V,10503:x,10574:{dir:r.H,stretch:[8636,8722,8640],HDW:e.HDW3,min:2},10575:{dir:r.V,stretch:[8638,9168,8642],HDW:e.HDW1,min:1.776},10576:{dir:r.H,stretch:[8637,8722,8641],HDW:e.HDW3,min:2},10577:{dir:r.V,stretch:[8639,9168,8643],HDW:e.HDW1,min:.5},10586:{dir:r.H,stretch:[8636,8722,8739],HDW:e.HDW3,min:1.278},10587:{dir:r.H,stretch:[8739,8722,8640],HDW:e.HDW3,min:1.278},10588:{dir:r.V,stretch:[8638,9168,8869],HDW:e.HDW1,min:1.556},10589:{dir:r.V,stretch:[8868,9168,8642],HDW:e.HDW1,min:1.556},10590:{dir:r.H,stretch:[8637,8722,8739],HDW:e.HDW3,min:1.278},10591:{dir:r.H,stretch:[8739,8722,8641],HDW:e.HDW3,min:1.278},10592:{dir:r.V,stretch:[8639,9168,8869],HDW:e.HDW1,min:1.776},10593:{dir:r.V,stretch:[8868,9168,8643],HDW:e.HDW1,min:1.776},12296:b,12297:M,65079:v,65080:g}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontCache=void 0;var r=function(){function t(t){this.cache=new Map,this.defs=null,this.localID=\"\",this.nextID=0,this.jax=t}return t.prototype.cachePath=function(t,e,Q){var r=\"MJX-\"+this.localID+(this.jax.font.getVariant(t).cacheID||\"\")+\"-\"+e;return this.cache.has(r)||(this.cache.set(r,Q),this.jax.adaptor.append(this.defs,this.jax.svg(\"path\",{id:r,d:Q}))),r},t.prototype.clearLocalID=function(){this.localID=\"\"},t.prototype.useLocalID=function(t){void 0===t&&(t=null),this.localID=(null==t?++this.nextID:t)+(\"\"===t?\"\":\"-\")},t.prototype.clearCache=function(){this.cache=new Map,this.defs=this.jax.svg(\"defs\")},t.prototype.getCache=function(){return this.defs},t}();e.FontCache=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MJContextMenu=void 0;var i=Q(273),a=Q(103),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.mathItem=null,e.annotation=\"\",e.annotationTypes={},e}return T(e,t),e.prototype.post=function(e,Q){if(this.mathItem){if(void 0!==Q){var r=this.mathItem.inputJax.name,T=this.findID(\"Show\",\"Original\");T.content=\"MathML\"===r?\"Original MathML\":r+\" Commands\",this.findID(\"Copy\",\"Original\").content=T.content;var n=this.findID(\"Settings\",\"semantics\");\"MathML\"===r?n.disable():n.enable(),this.getAnnotationMenu(),this.dynamicSubmenus()}t.prototype.post.call(this,e,Q)}},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.mathItem=null},e.prototype.findID=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];var T=this,o=null;try{for(var i=n(Q),s=i.next();!s.done;s=i.next()){var l=s.value;T?(o=T.find(l),T=o instanceof a.Submenu?o.submenu:null):o=null}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return o},e.prototype.getAnnotationMenu=function(){var t=this,e=this.getAnnotations(this.getSemanticNode());this.createAnnotationMenu(\"Show\",e,(function(){return t.showAnnotation.post()})),this.createAnnotationMenu(\"Copy\",e,(function(){return t.copyAnnotation()}))},e.prototype.getSemanticNode=function(){for(var t=this.mathItem.root;t&&!t.isKind(\"semantics\");){if(t.isToken||1!==t.childNodes.length)return null;t=t.childNodes[0]}return t},e.prototype.getAnnotations=function(t){var e,Q,r=[];if(!t)return r;try{for(var T=n(t.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;if(i.isKind(\"annotation\")){var a=this.annotationMatch(i);if(a){var s=i.childNodes.reduce((function(t,e){return t+e.toString()}),\"\");r.push([a,s])}}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return r},e.prototype.annotationMatch=function(t){var e,Q,r=t.attributes.get(\"encoding\");try{for(var T=n(Object.keys(this.annotationTypes)),o=T.next();!o.done;o=T.next()){var i=o.value;if(this.annotationTypes[i].indexOf(r)>=0)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},e.prototype.createAnnotationMenu=function(t,e,Q){var r=this,T=this.findID(t,\"Annotation\");T.submenu=this.factory.get(\"subMenu\")(this.factory,{items:e.map((function(t){var e=o(t,2),T=e[0],n=e[1];return{type:\"command\",id:T,content:T,action:function(){r.annotation=n,Q()}}})),id:\"annotations\"},T),e.length?T.enable():T.disable()},e.prototype.dynamicSubmenus=function(){var t,Q;try{for(var r=n(e.DynamicSubmenus),T=r.next();!T.done;T=r.next()){var i=o(T.value,2),a=i[0],s=i[1],l=this.find(a);if(l){var c=s(this,l);l.submenu=c,c.items.length?l.enable():l.disable()}}}catch(e){t={error:e}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(t)throw t.error}}},e.DynamicSubmenus=new Map,e}(i.ContextMenu);e.MJContextMenu=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Menu=void 0;var T=Q(25),n=Q(14),o=Q(1),i=Q(7),a=Q(267),s=Q(269),l=Q(270),c=Q(104),u=Q(301),p=Q(276),h=Q(312),f=o.MathJax,d=\"undefined\"!=typeof window&&window.navigator&&\"Mac\"===window.navigator.platform.substr(0,3),L=function(){function t(t,e){var Q=this;void 0===e&&(e={}),this.settings=null,this.defaultSettings=null,this.menu=null,this.MmlVisitor=new s.MmlVisitor,this.jax={CHTML:null,SVG:null},this.rerenderStart=n.STATE.LAST,this.about=new c.Info('<b style=\"font-size:120%;\">MathJax</b> v'+T.mathjax.version,(function(){var t=[];return t.push(\"Input Jax: \"+Q.document.inputJax.map((function(t){return t.name})).join(\", \")),t.push(\"Output Jax: \"+Q.document.outputJax.name),t.push(\"Document Type: \"+Q.document.kind),t.join(\"<br/>\")}),'<a href=\"https://www.mathjax.org\">www.mathjax.org</a>'),this.help=new c.Info(\"<b>MathJax Help</b>\",(function(){return[\"<p><b>MathJax</b> is a JavaScript library that allows page\",\" authors to include mathematics within their web pages.\",\" As a reader, you don't need to do anything to make that happen.</p>\",\"<p><b>Browsers</b>: MathJax works with all modern browsers including\",\" Edge, Firefox, Chrome, Safari, Opera, and most mobile browsers.</p>\",\"<p><b>Math Menu</b>: MathJax adds a contextual menu to equations.\",\" Right-click or CTRL-click on any mathematics to access the menu.</p>\",'<div style=\"margin-left: 1em;\">',\"<p><b>Show Math As:</b> These options allow you to view the formula's\",\" source markup (as MathML or in its original format).</p>\",\"<p><b>Copy to Clipboard:</b> These options copy the formula's source markup,\",\" as MathML or in its original format, to the clipboard\",\" (in browsers that support that).</p>\",\"<p><b>Math Settings:</b> These give you control over features of MathJax,\",\" such the size of the mathematics, and the mechanism used\",\" to display equations.</p>\",\"<p><b>Accessibility</b>: MathJax can work with screen\",\" readers to make mathematics accessible to the visually impaired.\",\" Turn on the explorer to enable generation of speech strings\",\" and the ability to investigate expressions interactively.</p>\",\"<p><b>Language</b>: This menu lets you select the language used by MathJax\",\" for its menus and warning messages. (Not yet implemented in version 3.)</p>\",\"</div>\",\"<p><b>Math Zoom</b>: If you are having difficulty reading an\",\" equation, MathJax can enlarge it to help you see it better, or\",\" you can scall all the math on the page to make it larger.\",\" Turn these features on in the <b>Math Settings</b> menu.</p>\",\"<p><b>Preferences</b>: MathJax uses your browser's localStorage database\",\" to save the preferences set via this menu locally in your browser.  These\",\" are not used to track you, and are not transferred or used remotely by\",\" MathJax in any way.</p>\"].join(\"\\n\")}),'<a href=\"https://www.mathjax.org\">www.mathjax.org</a>'),this.mathmlCode=new l.SelectableInfo(\"MathJax MathML Expression\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.toMML(Q.menu.mathItem);return\"<pre>\"+Q.formatSource(t)+\"</pre>\"}),\"\"),this.originalText=new l.SelectableInfo(\"MathJax Original Source\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.mathItem.math;return'<pre style=\"font-size:125%; margin:0\">'+Q.formatSource(t)+\"</pre>\"}),\"\"),this.annotationText=new l.SelectableInfo(\"MathJax Annotation Text\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.annotation;return'<pre style=\"font-size:125%; margin:0\">'+Q.formatSource(t)+\"</pre>\"}),\"\"),this.zoomBox=new c.Info(\"MathJax Zoomed Expression\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.mathItem.typesetRoot.cloneNode(!0);return t.style.margin=\"0\",'<div style=\"font-size: '+1.25*parseFloat(Q.settings.zscale)+'%\">'+t.outerHTML+\"</div>\"}),\"\"),this.document=t,this.options=i.userOptions(i.defaultOptions({},this.constructor.OPTIONS),e),this.initSettings(),this.mergeUserSettings(),this.initMenu()}return Object.defineProperty(t.prototype,\"isLoading\",{get:function(){return t.loading>0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"loadingPromise\",{get:function(){return this.isLoading?(t._loadingPromise||(t._loadingPromise=new Promise((function(e,Q){t._loadingOK=e,t._loadingFailed=Q}))),t._loadingPromise):Promise.resolve()},enumerable:!1,configurable:!0}),t.prototype.initSettings=function(){this.settings=this.options.settings,this.jax=this.options.jax;var t=this.document.outputJax;this.jax[t.name]=t,this.settings.renderer=t.name,f._.a11y&&f._.a11y.explorer&&Object.assign(this.settings,this.document.options.a11y),this.settings.scale=t.options.scale,this.defaultSettings=Object.assign({},this.settings)},t.prototype.initMenu=function(){var t=this,e=new u.Parser([[\"contextMenu\",a.MJContextMenu.fromJson.bind(a.MJContextMenu)]]);this.menu=e.parse({type:\"contextMenu\",id:\"MathJax_Menu\",pool:[this.variable(\"texHints\"),this.variable(\"semantics\"),this.variable(\"zoom\"),this.variable(\"zscale\"),this.variable(\"renderer\",(function(e){return t.setRenderer(e)})),this.variable(\"alt\"),this.variable(\"cmd\"),this.variable(\"ctrl\"),this.variable(\"shift\"),this.variable(\"scale\",(function(e){return t.setScale(e)})),this.variable(\"explorer\",(function(e){return t.setExplorer(e)})),this.a11yVar(\"highlight\"),this.a11yVar(\"backgroundColor\"),this.a11yVar(\"backgroundOpacity\"),this.a11yVar(\"foregroundColor\"),this.a11yVar(\"foregroundOpacity\"),this.a11yVar(\"speech\"),this.a11yVar(\"subtitles\"),this.a11yVar(\"braille\"),this.a11yVar(\"viewBraille\"),this.a11yVar(\"locale\"),this.a11yVar(\"speechRules\"),this.a11yVar(\"magnification\"),this.a11yVar(\"magnify\"),this.a11yVar(\"treeColoring\"),this.a11yVar(\"infoType\"),this.a11yVar(\"infoRole\"),this.a11yVar(\"infoPrefix\"),this.variable(\"autocollapse\"),this.variable(\"collapsible\",(function(e){return t.setCollapsible(e)})),this.variable(\"inTabOrder\",(function(e){return t.setTabOrder(e)})),this.variable(\"assistiveMml\",(function(e){return t.setAssistiveMml(e)}))],items:[this.submenu(\"Show\",\"Show Math As\",[this.command(\"MathMLcode\",\"MathML Code\",(function(){return t.mathmlCode.post()})),this.command(\"Original\",\"Original Form\",(function(){return t.originalText.post()})),this.submenu(\"Annotation\",\"Annotation\")]),this.submenu(\"Copy\",\"Copy to Clipboard\",[this.command(\"MathMLcode\",\"MathML Code\",(function(){return t.copyMathML()})),this.command(\"Original\",\"Original Form\",(function(){return t.copyOriginal()})),this.submenu(\"Annotation\",\"Annotation\")]),this.rule(),this.submenu(\"Settings\",\"Math Settings\",[this.submenu(\"Renderer\",\"Math Renderer\",this.radioGroup(\"renderer\",[[\"CHTML\"],[\"SVG\"]])),this.rule(),this.submenu(\"ZoomTrigger\",\"Zoom Trigger\",[this.command(\"ZoomNow\",\"Zoom Once Now\",(function(){return t.zoom(null,\"\",t.menu.mathItem)})),this.rule(),this.radioGroup(\"zoom\",[[\"Click\"],[\"DoubleClick\",\"Double-Click\"],[\"NoZoom\",\"No Zoom\"]]),this.rule(),this.label(\"TriggerRequires\",\"Trigger Requires:\"),this.checkbox(d?\"Option\":\"Alt\",d?\"Option\":\"Alt\",\"alt\"),this.checkbox(\"Command\",\"Command\",\"cmd\",{hidden:!d}),this.checkbox(\"Control\",\"Control\",\"ctrl\",{hiddne:d}),this.checkbox(\"Shift\",\"Shift\",\"shift\")]),this.submenu(\"ZoomFactor\",\"Zoom Factor\",this.radioGroup(\"zscale\",[[\"150%\"],[\"175%\"],[\"200%\"],[\"250%\"],[\"300%\"],[\"400%\"]])),this.rule(),this.command(\"Scale\",\"Scale All Math...\",(function(){return t.scaleAllMath()})),this.rule(),this.checkbox(\"texHints\",\"Add TeX hints to MathML\",\"texHints\"),this.checkbox(\"semantics\",\"Add original as annotation\",\"semantics\"),this.rule(),this.command(\"Reset\",\"Reset to defaults\",(function(){return t.resetDefaults()}))]),this.submenu(\"Accessibility\",\"Accessibility\",[this.checkbox(\"Activate\",\"Activate\",\"explorer\"),this.submenu(\"Speech\",\"Speech\",[this.checkbox(\"Speech\",\"Speech Output\",\"speech\"),this.checkbox(\"Subtitles\",\"Speech Subtities\",\"subtitles\"),this.checkbox(\"Braille\",\"Braille Output\",\"braille\"),this.checkbox(\"View Braille\",\"Braille Subtitles\",\"viewBraille\"),this.rule(),this.submenu(\"A11yLanguage\",\"Language\"),this.rule(),this.submenu(\"Mathspeak\",\"Mathspeak Rules\",this.radioGroup(\"speechRules\",[[\"mathspeak-default\",\"Verbose\"],[\"mathspeak-brief\",\"Brief\"],[\"mathspeak-sbrief\",\"Superbrief\"]])),this.submenu(\"Clearspeak\",\"Clearspeak Rules\",this.radioGroup(\"speechRules\",[[\"clearspeak-default\",\"Auto\"]])),this.submenu(\"ChromeVox\",\"ChromeVox Rules\",this.radioGroup(\"speechRules\",[[\"default-default\",\"Standard\"],[\"default-alternative\",\"Alternative\"]]))]),this.submenu(\"Highlight\",\"Highlight\",[this.submenu(\"Background\",\"Background\",this.radioGroup(\"backgroundColor\",[[\"Blue\"],[\"Red\"],[\"Green\"],[\"Yellow\"],[\"Cyan\"],[\"Magenta\"],[\"White\"],[\"Black\"]])),{type:\"slider\",variable:\"backgroundOpacity\",content:\" \"},this.submenu(\"Foreground\",\"Foreground\",this.radioGroup(\"foregroundColor\",[[\"Black\"],[\"White\"],[\"Magenta\"],[\"Cyan\"],[\"Yellow\"],[\"Green\"],[\"Red\"],[\"Blue\"]])),{type:\"slider\",variable:\"foregroundOpacity\",content:\" \"},this.rule(),this.radioGroup(\"highlight\",[[\"None\"],[\"Hover\"],[\"Flame\"]]),this.rule(),this.checkbox(\"TreeColoring\",\"Tree Coloring\",\"treeColoring\")]),this.submenu(\"Magnification\",\"Magnification\",[this.radioGroup(\"magnification\",[[\"None\"],[\"Keyboard\"],[\"Mouse\"]]),this.rule(),this.radioGroup(\"magnify\",[[\"200%\"],[\"300%\"],[\"400%\"],[\"500%\"]])]),this.submenu(\"Semantic Info\",\"Semantic Info\",[this.checkbox(\"Type\",\"Type\",\"infoType\"),this.checkbox(\"Role\",\"Role\",\"infoRole\"),this.checkbox(\"Prefix\",\"Prefix\",\"infoPrefix\")],!0),this.rule(),this.checkbox(\"Collapsible\",\"Collapsible Math\",\"collapsible\"),this.checkbox(\"AutoCollapse\",\"Auto Collapse\",\"autocollapse\",{disabled:!0}),this.rule(),this.checkbox(\"InTabOrder\",\"Include in Tab Order\",\"inTabOrder\"),this.checkbox(\"AssistiveMml\",\"Include Hidden MathML\",\"assistiveMml\")]),this.submenu(\"Language\",\"Language\"),this.rule(),this.command(\"About\",\"About MathJax\",(function(){return t.about.post()})),this.command(\"Help\",\"MathJax Help\",(function(){return t.help.post()}))]});var Q=this.menu;this.about.attachMenu(Q),this.help.attachMenu(Q),this.originalText.attachMenu(Q),this.annotationText.attachMenu(Q),this.mathmlCode.attachMenu(Q),this.zoomBox.attachMenu(Q),this.checkLoadableItems(),this.enableExplorerItems(this.settings.explorer),Q.showAnnotation=this.annotationText,Q.copyAnnotation=this.copyAnnotation.bind(this),Q.annotationTypes=this.options.annotationTypes,h.CssStyles.addInfoStyles(this.document.document),h.CssStyles.addMenuStyles(this.document.document)},t.prototype.checkLoadableItems=function(){var t,e;if(f&&f._&&f.loader&&f.startup)!this.settings.collapsible||f._.a11y&&f._.a11y.complexity||this.loadA11y(\"complexity\"),!this.settings.explorer||f._.a11y&&f._.a11y.explorer||this.loadA11y(\"explorer\"),!this.settings.assistiveMml||f._.a11y&&f._.a11y[\"assistive-mml\"]||this.loadA11y(\"assistive-mml\");else{var Q=this.menu;try{for(var T=r(Object.keys(this.jax)),n=T.next();!n.done;n=T.next()){var o=n.value;this.jax[o]||Q.findID(\"Settings\",\"Renderer\",o).disable()}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}Q.findID(\"Accessibility\",\"Activate\").disable(),Q.findID(\"Accessibility\",\"AutoCollapse\").disable(),Q.findID(\"Accessibility\",\"Collapsible\").disable()}},t.prototype.enableExplorerItems=function(t){var e,Q,T=this.menu.findID(\"Accessibility\",\"Activate\").menu;try{for(var n=r(T.items.slice(1)),o=n.next();!o.done;o=n.next()){var i=o.value;if(i instanceof p.Rule)break;t?i.enable():i.disable()}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.prototype.mergeUserSettings=function(){try{var e=localStorage.getItem(t.MENU_STORAGE);if(!e)return;Object.assign(this.settings,JSON.parse(e)),this.setA11y(this.settings)}catch(t){console.log(\"MathJax localStorage error: \"+t.message)}},t.prototype.saveUserSettings=function(){var e,Q,T={};try{for(var n=r(Object.keys(this.settings)),o=n.next();!o.done;o=n.next()){var i=o.value;this.settings[i]!==this.defaultSettings[i]&&(T[i]=this.settings[i])}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}try{Object.keys(T).length?localStorage.setItem(t.MENU_STORAGE,JSON.stringify(T)):localStorage.removeItem(t.MENU_STORAGE)}catch(t){console.log(\"MathJax localStorage error: \"+t.message)}},t.prototype.setA11y=function(t){f._.a11y&&f._.a11y.explorer&&f._.a11y.explorer_ts.setA11yOptions(this.document,t)},t.prototype.getA11y=function(t){if(f._.a11y&&f._.a11y.explorer)return this.document.options.a11y[t]},t.prototype.setScale=function(t){this.document.outputJax.options.scale=parseFloat(t),this.document.rerender()},t.prototype.setRenderer=function(t){var e=this;if(this.jax[t])this.setOutputJax(t);else{var Q=t.toLowerCase();this.loadComponent(\"output/\"+Q,(function(){var r=f.startup;Q in r.constructors&&(r.useOutput(Q,!0),r.output=r.getOutputJax(),e.jax[t]=r.output,e.setOutputJax(t))}))}},t.prototype.setOutputJax=function(t){this.jax[t].setAdaptor(this.document.adaptor),this.document.outputJax=this.jax[t],this.rerender()},t.prototype.setTabOrder=function(t){this.menu.store.inTaborder(t)},t.prototype.setAssistiveMml=function(t){this.document.options.enableAssistiveMml=t,!t||f._.a11y&&f._.a11y[\"assistive-mml\"]?this.rerender():this.loadA11y(\"assistive-mml\")},t.prototype.setExplorer=function(t){this.enableExplorerItems(t),this.document.options.enableExplorer=t,!t||f._.a11y&&f._.a11y.explorer?this.rerender(this.settings.collapsible?n.STATE.RERENDER:n.STATE.COMPILED):this.loadA11y(\"explorer\")},t.prototype.setCollapsible=function(t){this.document.options.enableComplexity=t,!t||f._.a11y&&f._.a11y.complexity?this.rerender(n.STATE.COMPILED):this.loadA11y(\"complexity\")},t.prototype.scaleAllMath=function(){var t=(100*parseFloat(this.settings.scale)).toFixed(1).replace(/.0$/,\"\"),e=prompt(\"Scale all mathematics (compared to surrounding text) by\",t+\"%\");if(e)if(e.match(/^\\s*\\d+(\\.\\d*)?\\s*%?\\s*$/)){var Q=parseFloat(e)/100;Q?this.setScale(String(Q)):alert(\"The scale should not be zero\")}else alert(\"The scale should be a percentage (e.g., 120%)\")},t.prototype.resetDefaults=function(){var e,Q;t.loading++;var T=this.menu.pool,o=this.defaultSettings;try{for(var i=r(Object.keys(this.settings)),a=i.next();!a.done;a=i.next()){var s=a.value,l=T.lookup(s);if(l){l.setValue(o[s]);var c=l.items[0];c&&c.executeCallbacks_()}else this.settings[s]=o[s]}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}t.loading--,this.rerender(n.STATE.COMPILED)},t.prototype.checkComponent=function(e){var Q=t.loadingPromises.get(e);Q&&T.mathjax.retryAfter(Q)},t.prototype.loadComponent=function(e,Q){if(!t.loadingPromises.has(e)){var r=f.loader;if(r){t.loading++;var T=r.load(e).then((function(){t.loading--,t.loadingPromises.delete(e),Q(),0===t.loading&&t._loadingPromise&&(t._loadingPromise=null,t._loadingOK())})).catch((function(e){t._loadingPromise?(t._loadingPromise=null,t._loadingFailed(e)):console.log(e)}));t.loadingPromises.set(e,T)}}},t.prototype.loadA11y=function(e){var Q=this,r=!n.STATE.ENRICHED;this.loadComponent(\"a11y/\"+e,(function(){var o=f.startup;T.mathjax.handlers.unregister(o.handler),o.handler=o.getHandler(),T.mathjax.handlers.register(o.handler);var i=Q.document;Q.document=o.document=o.getDocument(),Q.document.menu=Q,Q.transferMathList(i),Q.document.processed=i.processed,t._loadingPromise||Q.rerender(\"complexity\"===e||r?n.STATE.COMPILED:n.STATE.TYPESET)}))},t.prototype.transferMathList=function(t){var e,Q,T=this.document.options.MathItem;try{for(var n=r(t.math),o=n.next();!o.done;o=n.next()){var i=o.value,a=new T;Object.assign(a,i),this.document.math.push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.prototype.formatSource=function(t){return t.trim().replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")},t.prototype.toMML=function(t){return this.MmlVisitor.visitTree(t.root,t,{texHints:this.settings.texHints,semantics:this.settings.semantics&&\"MathML\"!==t.inputJax.name})},t.prototype.zoom=function(t,e,Q){t&&!this.isZoomEvent(t,e)||(this.menu.mathItem=Q,t&&this.menu.post(t),this.zoomBox.post())},t.prototype.isZoomEvent=function(t,e){return this.settings.zoom===e&&(!this.settings.alt||t.altKey)&&(!this.settings.ctrl||t.ctrlKey)&&(!this.settings.cmd||t.metaKey)&&(!this.settings.shift||t.shiftKey)},t.prototype.rerender=function(e){void 0===e&&(e=n.STATE.TYPESET),this.rerenderStart=Math.min(e,this.rerenderStart),t.loading||(this.document.rerender(this.rerenderStart),this.rerenderStart=n.STATE.LAST)},t.prototype.copyMathML=function(){this.copyToClipboard(this.toMML(this.menu.mathItem))},t.prototype.copyOriginal=function(){this.copyToClipboard(this.menu.mathItem.math)},t.prototype.copyAnnotation=function(){this.copyToClipboard(this.menu.annotation)},t.prototype.copyToClipboard=function(t){var e=document.createElement(\"textarea\");e.value=t,e.setAttribute(\"readonly\",\"\"),e.style.cssText=\"height: 1px; width: 1px; padding: 1px; position: absolute; left: -10px\",document.body.appendChild(e),e.select();try{document.execCommand(\"copy\")}catch(t){alert(\"Can't copy to clipboard: \"+t.message)}document.body.removeChild(e)},t.prototype.addMenu=function(t){var e=this,Q=t.typesetRoot;Q.addEventListener(\"contextmenu\",(function(){return e.menu.mathItem=t}),!0),Q.addEventListener(\"keydown\",(function(){return e.menu.mathItem=t}),!0),Q.addEventListener(\"click\",(function(Q){return e.zoom(Q,\"Click\",t)}),!0),Q.addEventListener(\"dblclick\",(function(Q){return e.zoom(Q,\"DoubleClick\",t)}),!0),this.menu.store.insert(Q)},t.prototype.clear=function(){this.menu.store.clear()},t.prototype.variable=function(t,e){var Q=this;return{name:t,getter:function(){return Q.settings[t]},setter:function(r){Q.settings[t]=r,e&&e(r),Q.saveUserSettings()}}},t.prototype.a11yVar=function(t){var e=this;return{name:t,getter:function(){return e.getA11y(t)},setter:function(Q){e.settings[t]=Q;var r={};r[t]=Q,e.setA11y(r),e.saveUserSettings()}}},t.prototype.submenu=function(t,e,Q,T){var n,o;void 0===Q&&(Q=[]),void 0===T&&(T=!1);var i=[];try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;Array.isArray(l)?i=i.concat(l):i.push(l)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return{type:\"submenu\",id:t,content:e,menu:{items:i},disabled:0===i.length||T}},t.prototype.command=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"command\",id:t,content:e,action:Q},r)},t.prototype.checkbox=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"checkbox\",id:t,content:e,variable:Q},r)},t.prototype.radioGroup=function(t,e){var Q=this;return e.map((function(e){return Q.radio(e[0],e[1]||e[0],t)}))},t.prototype.radio=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"radio\",id:t,content:e,variable:Q},r)},t.prototype.label=function(t,e){return{type:\"label\",id:t,content:e}},t.prototype.rule=function(){return{type:\"rule\"}},t.MENU_STORAGE=\"MathJax-Menu-Settings\",t.OPTIONS={settings:{texHints:!0,semantics:!1,zoom:\"NoZoom\",zscale:\"200%\",renderer:\"CHTML\",alt:!1,cmd:!1,ctrl:!1,shift:!1,scale:1,autocollapse:!1,collapsible:!1,inTabOrder:!0,assistiveMml:!0,explorer:!1},jax:{CHTML:null,SVG:null},annotationTypes:i.expandable({TeX:[\"TeX\",\"LaTeX\",\"application/x-tex\"],StarMath:[\"StarMath 5.0\"],Maple:[\"Maple\"],ContentMathML:[\"MathML-Content\",\"application/mathml-content+xml\"],OpenMath:[\"OpenMath\"]})},t.loading=0,t.loadingPromises=new Map,t._loadingPromise=null,t._loadingOK=null,t._loadingFailed=null,t}();e.Menu=L},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=void 0;var n=Q(83),o=Q(7),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.options={texHints:!0,semantics:!1},e.mathItem=null,e}return T(e,t),e.prototype.visitTree=function(t,e,Q){return void 0===e&&(e=null),void 0===Q&&(Q={}),this.mathItem=e,o.userOptions(this.options,Q),this.visitNode(t,\"\")},e.prototype.visitTeXAtomNode=function(e,Q){return this.options.texHints?t.prototype.visitTeXAtomNode.call(this,e,Q):e.childNodes[0]&&1===e.childNodes[0].childNodes.length?this.visitNode(e.childNodes[0],Q):Q+\"<mrow\"+this.getAttributes(e)+\">\\n\"+this.childNodeMml(e,Q+\"  \",\"\\n\")+Q+\"</mrow>\"},e.prototype.visitMathNode=function(e,Q){if(!this.options.semantics||\"TeX\"!==this.mathItem.inputJax.name)return t.prototype.visitDefault.call(this,e,Q);var r=e.childNodes.length&&e.childNodes[0].childNodes.length>1;return Q+\"<math\"+this.getAttributes(e)+\">\\n\"+Q+\"  <semantics>\\n\"+(r?Q+\"    <mrow>\\n\":\"\")+this.childNodeMml(e,Q+(r?\"      \":\"    \"),\"\\n\")+(r?Q+\"    </mrow>\\n\":\"\")+Q+'    <annotation encoding=\"application/x-tex\">'+this.mathItem.math+\"</annotation>\\n\"+Q+\"  </semantics>\\n\"+Q+\"</math>\"},e}(n.SerializedMmlVisitor);e.MmlVisitor=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectableInfo=void 0;var n=Q(104),o=Q(10),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addEvents=function(t){var e=this;t.addEventListener(\"keypress\",(function(t){\"a\"===t.key&&(t.ctrlKey||t.metaKey)&&(e.selectAll(),e.stop(t))}))},e.prototype.selectAll=function(){document.getSelection().selectAllChildren(this.html.querySelector(\"pre\"))},e.prototype.copyToClipboard=function(){this.selectAll();try{document.execCommand(\"copy\")}catch(t){alert(\"Can't copy to clipboard: \"+t.message)}document.getSelection().removeAllRanges()},e.prototype.generateHtml=function(){var e=this;t.prototype.generateHtml.call(this);var Q=this.html.querySelector(\"span.\"+o.HtmlClasses.INFOSIGNATURE).appendChild(document.createElement(\"input\"));Q.type=\"button\",Q.value=\"Copy to Clipboard\",Q.addEventListener(\"click\",(function(t){return e.copyToClipboard()}))},e}(n.Info);e.SelectableInfo=i},function(t,e){var Q;Q=function(){return this}();try{Q=Q||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(Q=window)}t.exports=Q},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextMenu=void 0;var n=Q(101),o=Q(10),i=Q(298),a=Q(299),s=function(t){function e(e){var Q=t.call(this)||this;return Q.factory=e,Q.id=\"\",Q.moving=!1,Q._store=new i.MenuStore(Q),Q.widgets=[],Q.variablePool=new a.VariablePool,Q}return T(e,t),e.fromJson=function(t,e){var Q=e.pool,r=e.items,T=e.id,n=void 0===T?\"\":T,o=new this(t);o.id=n;var i=t.get(\"variable\");Q.forEach((function(e){return i(t,e,o.pool)}));var a=t.get(\"items\")(t,r,o);return o.items=a,o},e.prototype.generateHtml=function(){this.isPosted()&&this.unpost(),t.prototype.generateHtml.call(this),this._frame=document.createElement(\"div\"),this._frame.classList.add(o.HtmlClasses.MENUFRAME);var e=\"left: 0px; top: 0px; z-index: 200; width: 100%; height: 100%; border: 0px; padding: 0px; margin: 0px;\";this._frame.setAttribute(\"style\",\"position: absolute; \"+e);var Q=document.createElement(\"div\");Q.setAttribute(\"style\",\"position: fixed; \"+e),this._frame.appendChild(Q),Q.addEventListener(\"mousedown\",function(t){this.unpost(),this.unpostWidgets(),this.stop(t)}.bind(this))},e.prototype.display=function(){document.body.appendChild(this.frame),this.frame.appendChild(this.html),this.focus()},e.prototype.escape=function(t){this.unpost(),this.unpostWidgets()},e.prototype.unpost=function(){if(t.prototype.unpost.call(this),!(this.widgets.length>0)){this.frame.parentNode.removeChild(this.frame);var e=this.store;this.moving||e.insertTaborder(),e.active.focus()}},e.prototype.left=function(t){this.move_(this.store.previous())},e.prototype.right=function(t){this.move_(this.store.next())},Object.defineProperty(e.prototype,\"frame\",{get:function(){return this._frame},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"store\",{get:function(){return this._store},enumerable:!1,configurable:!0}),e.prototype.post=function(e,Q){if(void 0!==Q)return this.moving||this.store.removeTaborder(),void t.prototype.post.call(this,e,Q);var r,T,n,o=e;if(o instanceof Event?(r=o.target,this.stop(o)):r=o,o instanceof MouseEvent&&(T=o.pageX,n=o.pageY,T||n||!o.clientX||(T=o.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=o.clientY+document.body.scrollTop+document.documentElement.scrollTop)),!T&&!n&&r){var i=window.pageXOffset||document.documentElement.scrollLeft,a=window.pageYOffset||document.documentElement.scrollTop,s=r.getBoundingClientRect();T=(s.right+s.left)/2+i,n=(s.bottom+s.top)/2+a}this.store.active=r,this.anchor=this.store.active;var l=this.html;T+l.offsetWidth>document.body.offsetWidth-5&&(T=document.body.offsetWidth-l.offsetWidth-5),this.post(T,n)},e.prototype.registerWidget=function(t){this.widgets.push(t)},e.prototype.unregisterWidget=function(t){var e=this.widgets.indexOf(t);e>-1&&this.widgets.splice(e,1),0===this.widgets.length&&this.unpost()},e.prototype.unpostWidgets=function(){this.widgets.forEach((function(t){return t.unpost()}))},e.prototype.toJson=function(){return{type:\"\"}},e.prototype.move_=function(t){this.anchor&&t!==this.anchor&&(this.moving=!0,this.unpost(),this.post(t),this.moving=!1)},e}(n.AbstractMenu);e.ContextMenu=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuElement=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addAttributes=function(t){for(var e in t)this.html.setAttribute(e,t[e])},Object.defineProperty(e.prototype,\"html\",{get:function(){return this._html||this.generateHtml(),this._html},set:function(t){this._html=t,this.addEvents(t)},enumerable:!1,configurable:!0}),e.prototype.generateHtml=function(){var t=document.createElement(\"div\");t.classList.add(this.className),t.setAttribute(\"role\",this.role),this.html=t},e.prototype.focus=function(){var t=this.html;t.setAttribute(\"tabindex\",\"0\"),t.focus()},e.prototype.unfocus=function(){var t=this.html;t.hasAttribute(\"tabindex\")&&t.setAttribute(\"tabindex\",\"-1\");try{t.blur()}catch(t){}t.blur()},e}(Q(296).AbstractNavigatable);e.MenuElement=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEntry=void 0;var n=Q(274),o=Q(10),i=function(t){function e(e,Q){var r=t.call(this)||this;return r._menu=e,r._type=Q,r.className=o.HtmlClasses.MENUITEM,r.role=\"menuitem\",r.hidden=!1,r}return T(e,t),Object.defineProperty(e.prototype,\"menu\",{get:function(){return this._menu},set:function(t){this._menu=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"type\",{get:function(){return this._type},enumerable:!1,configurable:!0}),e.prototype.hide=function(){this.hidden=!0,this.menu.generateMenu()},e.prototype.show=function(){this.hidden=!1,this.menu.generateMenu()},e.prototype.isHidden=function(){return this.hidden},e}(n.MenuElement);e.AbstractEntry=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Rule=void 0;var n=Q(275),o=Q(10),i=function(t){function e(e){var Q=t.call(this,e,\"rule\")||this;return Q.className=o.HtmlClasses.MENUITEM,Q.role=\"separator\",Q}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.classList.add(o.HtmlClasses.MENURULE),e.setAttribute(\"aria-orientation\",\"vertical\")},e.prototype.addEvents=function(t){},e.prototype.toJson=function(){return{type:\"rule\"}},e}(n.AbstractEntry);e.Rule=i},function(t,e,Q){\"use strict\";(function(t){var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONFIG=e.MathJax=e.Startup=void 0;var n,o=Q(1),i=Q(21);!function(Q){var n,o,s=new i.PrioritizedList;function l(t){return n.visitTree(t,Q.document)}function c(){n=new e.MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor,o=e.MathJax._.mathjax.mathjax,Q.input=L(),Q.output=H(),Q.adaptor=m(),Q.handler&&o.handlers.unregister(Q.handler),Q.handler=y(),Q.handler&&(o.handlers.register(Q.handler),Q.document=v())}function u(){var t,e;Q.input&&Q.output&&p();var r=Q.output?Q.output.name.toLowerCase():\"\";try{for(var n=T(Q.input),o=n.next();!o.done;o=n.next()){var i=o.value,a=i.name.toLowerCase();f(a,i),d(a,i),Q.output&&h(a,r,i)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}function p(){e.MathJax.typeset=function(t){void 0===t&&(t=null),Q.document.options.elements=t,Q.document.reset(),Q.document.render()},e.MathJax.typesetPromise=function(t){return void 0===t&&(t=null),Q.document.options.elements=t,Q.document.reset(),o.handleRetriesFor((function(){Q.document.render()}))},e.MathJax.typesetClear=function(t){void 0===t&&(t=null),t?Q.document.clearMathItemsWithin(t):Q.document.clear()}}function h(t,r,T){var n=t+\"2\"+r;e.MathJax[n]=function(t,e){return void 0===e&&(e={}),e.format=T.name,Q.document.convert(t,e)},e.MathJax[n+\"Promise\"]=function(t,e){return void 0===e&&(e={}),e.format=T.name,o.handleRetriesFor((function(){return Q.document.convert(t,e)}))},e.MathJax[r+\"Stylesheet\"]=function(){return Q.output.styleSheet(Q.document)},\"getMetricsFor\"in Q.output&&(e.MathJax.getMetricsFor=function(t,e){return Q.output.getMetricsFor(t,e)})}function f(t,r){var T=e.MathJax._.core.MathItem.STATE;e.MathJax[t+\"2mml\"]=function(t,e){return void 0===e&&(e={}),e.end=T.CONVERT,e.format=r.name,l(Q.document.convert(t,e))},e.MathJax[t+\"2mmlPromise\"]=function(t,e){return void 0===e&&(e={}),e.end=T.CONVERT,e.format=r.name,o.handleRetriesFor((function(){return l(Q.document.convert(t,e))}))}}function d(t,Q){\"tex\"===t&&(e.MathJax.texReset=function(t){return void 0===t&&(t=0),Q.parseOptions.tags.reset(t)})}function L(){var t,r,n=[];try{for(var o=T(e.CONFIG.input),i=o.next();!i.done;i=o.next()){var a=i.value,s=Q.constructors[a];if(!s)throw Error('Input Jax \"'+a+'\" is not defined (has it been loaded?)');n.push(new s(e.MathJax.config[a]))}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n}function H(){var t=e.CONFIG.output;if(!t)return null;var r=Q.constructors[t];if(!r)throw Error('Output Jax \"'+t+'\" is not defined (has it been loaded?)');return new r(e.MathJax.config[t])}function m(){var t=e.CONFIG.adaptor;if(!t||\"none\"===t)return null;var r=Q.constructors[t];if(!r)throw Error('DOMAdaptor \"'+t+'\" is not defined (has it been loaded?)');return r(e.MathJax.config[t])}function y(){var t,r,n=e.CONFIG.handler;if(!n||\"none\"===n||!Q.adaptor)return null;var o=Q.constructors[n];if(!o)throw Error('Handler \"'+n+'\" is not defined (has it been loaded?)');var i=new o(Q.adaptor,5);try{for(var a=T(s),l=a.next();!l.done;l=a.next()){i=l.value.item(i)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return i}function v(t){return void 0===t&&(t=null),o.document(t||e.CONFIG.document,r(r({},e.MathJax.config.options),{InputJax:Q.input,OutputJax:Q.output}))}Q.constructors={},Q.input=[],Q.output=null,Q.handler=null,Q.adaptor=null,Q.elements=null,Q.document=null,Q.promise=new Promise((function(t,e){Q.promiseResolve=t,Q.promiseReject=e})),Q.pagePromise=new Promise((function(e,Q){var r=t.document;if(r&&r.readyState&&\"complete\"!==r.readyState&&\"interactive\"!==r.readyState){var T=function(){return e()};r.defaultView.addEventListener(\"load\",T,!0),r.defaultView.addEventListener(\"DOMContentLoaded\",T,!0)}else e()})),Q.toMML=l,Q.registerConstructor=function(t,e){Q.constructors[t]=e},Q.useHandler=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.handler&&!Q||(e.CONFIG.handler=t)},Q.useAdaptor=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.adaptor&&!Q||(e.CONFIG.adaptor=t)},Q.useInput=function(t,Q){void 0===Q&&(Q=!1),a&&!Q||e.CONFIG.input.push(t)},Q.useOutput=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.output&&!Q||(e.CONFIG.output=t)},Q.extendHandler=function(t,e){void 0===e&&(e=10),s.add(t,e)},Q.defaultReady=function(){c(),u(),Q.pagePromise.then((function(){return e.CONFIG.pageReady()})).then((function(){return Q.promiseResolve()})).catch((function(t){return Q.promiseReject(t)}))},Q.defaultPageReady=function(){return e.CONFIG.typeset&&e.MathJax.typesetPromise?e.MathJax.typesetPromise(e.CONFIG.elements):Promise.resolve()},Q.getComponents=c,Q.makeMethods=u,Q.makeTypesetMethods=p,Q.makeOutputMethods=h,Q.makeMmlMethods=f,Q.makeResetMethod=d,Q.getInputJax=L,Q.getOutputJax=H,Q.getAdaptor=m,Q.getHandler=y,Q.getDocument=v}(n=e.Startup||(e.Startup={})),e.MathJax=o.MathJax,void 0===e.MathJax._.startup&&(o.combineDefaults(e.MathJax.config,\"startup\",{input:[],output:\"\",handler:null,adaptor:null,document:\"undefined\"==typeof document?\"\":document,elements:null,typeset:!0,ready:n.defaultReady.bind(n),pageReady:n.defaultPageReady.bind(n)}),o.combineWithMathJax({startup:n,options:{}})),e.CONFIG=e.MathJax.config.startup;var a=0!==e.CONFIG.input.length}).call(this,Q(271))},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathMLVisitor=void 0;var o=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.document=null,e}return T(e,t),e.prototype.visitTree=function(t,e){this.document=e;var Q=e.createElement(\"top\");return this.visitNode(t,Q),this.document=null,Q.firstChild},e.prototype.visitTextNode=function(t,e){e.appendChild(this.document.createTextNode(t.getText()))},e.prototype.visitXMLNode=function(t,e){e.appendChild(t.getXML().cloneNode(!0))},e.prototype.visitInferredMrowNode=function(t,e){var Q,r;try{for(var T=n(t.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;this.visitNode(i,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},e.prototype.visitDefault=function(t,e){var Q,r,T=this.document.createElement(t.kind);this.addAttributes(t,T);try{for(var o=n(t.childNodes),i=o.next();!i.done;i=o.next()){var a=i.value;this.visitNode(a,T)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}e.appendChild(T)},e.prototype.addAttributes=function(t,e){var Q,r,T=t.attributes,o=T.getExplicitNames();try{for(var i=n(o),a=i.next();!a.done;a=i.next()){var s=a.value;e.setAttribute(s,T.getExplicit(s).toString())}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}},e}(Q(82).MmlVisitor);e.MathMLVisitor=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RegisterHTMLHandler=void 0;var r=Q(25),T=Q(49);e.RegisterHTMLHandler=function(t){var e=new T.HTMLHandler(t);return r.mathjax.handlers.register(e),e}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var n=Q(2),o=Q(3),i=Q(26),a=Q(91),s=Q(29),l=Q(7);function c(t,e,Q,n){var o,i,l,c;if(s.Package.packages.has(t.options.require.prefix+Q)){var h=t.options.autoload[Q],f=r(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),d=f[0],L=f[1];try{for(var H=T(d),m=H.next();!m.done;m=H.next()){var y=m.value;u.remove(y)}}catch(t){o={error:t}}finally{try{m&&!m.done&&(i=H.return)&&i.call(H)}finally{if(o)throw o.error}}try{for(var v=T(L),g=v.next();!g.done;g=v.next()){var b=g.value;p.remove(b)}}catch(t){l={error:t}}finally{try{g&&!g.done&&(c=v.return)&&c.call(v)}finally{if(l)throw l.error}}t.string=(n?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}a.RequireLoad(t,Q)}var u=new o.CommandMap(\"autoload-macros\",{},{}),p=new o.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=n.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:l.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var Q,n,o,s,l,h,f=e.parseOptions,d=f.handlers.get(\"macro\"),L=f.handlers.get(\"environment\"),H=f.options.autoload;f.packageData.set(\"autoload\",{Autoload:c});try{for(var m=T(Object.keys(H)),y=m.next();!y.done;y=m.next()){var v=y.value,g=H[v],b=r(2===g.length&&Array.isArray(g[0])?g:[g,[]],2),M=b[0],V=b[1];try{for(var x=(o=void 0,T(M)),O=x.next();!O.done;O=x.next()){var _=O.value;d.lookup(_)&&\"color\"!==_||u.add(_,new i.Macro(_,c,[v,!0]))}}catch(t){o={error:t}}finally{try{O&&!O.done&&(s=x.return)&&s.call(x)}finally{if(o)throw o.error}}try{for(var S=(l=void 0,T(V)),E=S.next();!E.done;E=S.next()){var C=E.value;L.lookup(C)||p.add(C,new i.Macro(C,c,[v,!1]))}}catch(t){l={error:t}}finally{try{E&&!E.done&&(h=S.return)&&h.call(S)}finally{if(l)throw l.error}}}}catch(t){Q={error:t}}finally{try{y&&!y.done&&(n=m.return)&&n.call(m)}finally{if(Q)throw Q.error}}f.packageData.get(\"require\")||a.RequireConfiguration.config(t,e)},init:function(t){t.options.require||l.defaultOptions(t.options,a.RequireConfiguration.options)},priority:10})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(13),n=Q(16),o=Q(23),i=Q(0);new r.RegExpMap(\"letter\",o.default.variable,/[a-z]/i),new r.RegExpMap(\"digit\",o.default.digit,/[0-9.,]/),new r.RegExpMap(\"command\",o.default.controlSequence,/^\\\\/),new r.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},n.default),new r.CharacterMap(\"mathchar0mi\",o.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:T.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:T.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:T.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:T.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:T.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:T.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:T.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:T.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:T.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:T.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:T.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:T.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:T.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:T.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:T.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:T.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:T.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:T.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:T.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:T.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:T.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:T.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:T.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:T.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:T.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:T.TexConstant.Variant.NORMAL}]}),new r.CharacterMap(\"mathchar0mo\",o.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:i.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:i.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:i.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:i.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:i.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:i.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:i.TEXCLASS.PUNCT}],colon:[\":\",{texClass:i.TEXCLASS.PUNCT}]}),new r.CharacterMap(\"mathchar7\",o.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new r.DelimiterMap(\"delimiter\",o.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:i.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:i.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:i.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:i.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new r.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",T.TexConstant.Variant.NORMAL],mit:[\"SetFont\",T.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",T.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",T.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",T.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",T.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",T.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",T.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",T.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",T.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",T.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",i.TEXCLASS.ORD,.85],Big:[\"MakeBig\",i.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",i.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",i.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",i.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",i.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",i.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",i.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",i.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",i.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",i.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",i.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",i.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",i.TEXCLASS.ORD],mathop:[\"TeXAtom\",i.TEXCLASS.OP],mathopen:[\"TeXAtom\",i.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",i.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",i.TEXCLASS.BIN],mathrel:[\"TeXAtom\",i.TEXCLASS.REL],mathpunct:[\"TeXAtom\",i.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",i.TEXCLASS.INNER],vcenter:[\"TeXAtom\",i.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,T.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,T.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,T.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,T.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,T.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},n.default),new r.EnvironmentMap(\"environment\",o.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+T.TexConstant.Length.THICKMATHSPACE,\".5em\"]},n.default),new r.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(34),T=Q(3),n=Q(13),o=Q(23),i=Q(9),a=Q(0),s=function(t){for(var e=[],Q=0,r=t.length;Q<r;Q++)e[Q]=i.default.Em(t[Q]);return e.join(\" \")};new T.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:a.TEXCLASS.OP}]}),new T.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",n.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",n.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",n.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",n.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},r.AmsMethods),new T.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+n.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",s([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,s([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",s([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},r.AmsMethods),new T.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:a.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:a.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:a.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:a.TEXCLASS.CLOSE}]}),new T.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:n.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:n.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:n.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:n.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:n.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:n.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:n.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:n.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:n.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:n.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:n.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new T.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new T.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new T.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},r.AmsMethods)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(23),n=Q(136);new r.EnvironmentMap(\"amscd_environment\",T.default.environment,{CD:\"CD\"},n.default),new r.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},n.default),new r.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},n.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(141);new r.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},T.default),new r.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},T.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(144),T=Q(23),n=Q(3);new n.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},r.default),new n.EnvironmentMap(\"Bussproofs-environments\",T.default.environment,{prooftree:[\"Prooftree\",null,!1]},r.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(88);new(Q(3).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},r.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var Q,T=\"0\",n={};n.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var o=10,i=[];;){Q!==t?(o=10,Q=t):o--;var a=r.stateMachines[e],s=a.transitions[T]||a.transitions[\"*\"];t:for(var l=0;l<s.length;l++){var c=r.patterns.match_(s[l].pattern,t);if(c){for(var u=s[l].task,p=0;p<u.action_.length;p++){var h;if(a.actions[u.action_[p].type_])h=a.actions[u.action_[p].type_](n,c.match_,u.action_[p].option);else{if(!r.actions[u.action_[p].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+u.action_[p].type_+\")\"];h=r.actions[u.action_[p].type_](n,c.match_,u.action_[p].option)}r.concatArray(i,h)}if(T=u.nextState||T,!(t.length>0))return i;if(u.revisit||(t=c.remainder),!u.toContinue)break t}}if(o<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var Q=0;Q<e.length;Q++)t.push(e[Q]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=r.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var Q=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return Q?{match_:Q[0],remainder:t.substr(Q[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return r.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return r.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return r.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return r.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return r.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return r.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return r.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var Q=r.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return Q&&(e=Q.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,Q,r,T,n,o,i,a,s){var l=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var Q=t.match(e);return Q?Q[0]:null},c=l(t,e);if(null===c)return null;if(t=t.substr(c.length),null===(c=l(t,Q)))return null;var u=function(t,e,Q){for(var r=0;e<t.length;){var T=t.charAt(e),n=l(t.substr(e),Q);if(null!==n&&0===r)return{endMatchBegin:e,endMatchEnd:e+n.length};if(\"{\"===T)r++;else if(\"}\"===T){if(0===r)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];r--}e++}return null}(t,c.length,r||T);if(null===u)return null;var p=t.substring(0,r?u.endMatchEnd:u.endMatchBegin);if(n||o){var h=this.findObserveGroups(t.substr(u.endMatchEnd),n,o,i,a);if(null===h)return null;var f=[p,h.match_];return{match_:s?f.join(\"\"):f,remainder:h.remainder}}return{match_:p,remainder:t.substr(u.endMatchEnd)}},match_:function(t,e){var Q=r.patterns.patterns[t];if(void 0===Q)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof Q)return r.patterns.patterns[t](e);var T=e.match(Q);return T?{match_:T[2]?[T[1],T[2]]:T[1]?T[1]:T[0],remainder:e.substr(T[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,Q){return{type_:Q}},\"insert+p1\":function(t,e,Q){return{type_:Q,p1:e}},\"insert+p1+p2\":function(t,e,Q){return{type_:Q,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return r.go(e,\"text\")},\"{text}\":function(t,e){var Q=[\"{\"];return r.concatArray(Q,r.go(e,\"text\")),Q.push(\"}\"),Q},\"tex-math\":function(t,e){return r.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return r.go(e,\"tex-math tight\")},bond:function(t,e,Q){return{type_:\"bond\",kind_:Q||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return r.go(e)},\"1/2\":function(t,e){var Q=[];e.match(/^[+\\-]/)&&(Q.push(e.substr(0,1)),e=e.substr(1));var r=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return r[1]=r[1].replace(/\\$/g,\"\"),Q.push({type_:\"frac\",p1:r[1],p2:r[2]}),r[3]&&(r[3]=r[3].replace(/\\$/g,\"\"),Q.push({type_:\"tex-math\",p1:r[3]})),Q},\"9,9\":function(t,e){return r.go(e,\"9,9\")}},createTransitions:function(t){var e,Q,r,T,n={};for(e in t)for(Q in t[e])for(r=Q.split(\"|\"),t[e][Q].stateArray=r,T=0;T<r.length;T++)n[r[T]]=[];for(e in t)for(Q in t[e])for(r=t[e][Q].stateArray||[],T=0;T<r.length;T++){var o=t[e][Q];if(o.action_){o.action_=[].concat(o.action_);for(var i=0;i<o.action_.length;i++)\"string\"==typeof o.action_[i]&&(o.action_[i]={type_:o.action_[i]})}else o.action_=[];for(var a=e.split(\"|\"),s=0;s<a.length;s++)if(\"*\"===r[T])for(var l in n)n[l].push({pattern:a[s],task:o});else n[r[T]].push({pattern:a[s],task:o})}return n},stateMachines:{}};r.stateMachines={ce:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var Q;if((t.d||\"\").match(/^[0-9]+$/)){var T=t.d;t.d=void 0,Q=this.output(t),t.b=T}else Q=this.output(t);return r.actions[\"o=\"](t,e),Q},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var Q=[];return r.concatArray(Q,this.output(t)),r.concatArray(Q,r.actions.bond(t,e,\"-\")),Q}t.d=e},\"- after o/d\":function(t,e,Q){var T=r.patterns.match_(\"orbital\",t.o||\"\"),n=r.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),o=r.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),i=r.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),a=\"-\"===e&&(T&&\"\"===T.remainder||n||o||i);!a||t.a||t.b||t.p||t.d||t.q||T||!o||(t.o=\"$\"+t.o+\"$\");var s=[];return a?(r.concatArray(s,this.output(t)),s.push({type_:\"hyphen\"})):(T=r.patterns.match_(\"digits\",t.d||\"\"),Q&&T&&\"\"===T.remainder?(r.concatArray(s,r.actions[\"d=\"](t,e)),r.concatArray(s,this.output(t))):(r.concatArray(s,this.output(t)),r.concatArray(s,r.actions.bond(t,e,\"-\")))),s},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:r.go(e,\"o\")}},comma:function(t,e){var Q=e.replace(/\\s*$/,\"\");return Q!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:Q}:{type_:\"comma enumeration M\",p1:Q}},output:function(t,e,Q){var T,n,o;t.r?(n=\"M\"===t.rdt?r.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:r.go(t.rd),o=\"M\"===t.rqt?r.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:r.go(t.rq),T={type_:\"arrow\",r:t.r,rd:n,rq:o}):(T=[],(t.a||t.b||t.p||t.o||t.q||t.d||Q)&&(t.sb&&T.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===Q?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&r.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),T.push({type_:\"chemfive\",a:r.go(t.a,\"a\"),b:r.go(t.b,\"bd\"),p:r.go(t.p,\"pq\"),o:r.go(t.o,\"o\"),q:r.go(t.q,\"pq\"),d:r.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var i in t)\"parenthesisLevel\"!==i&&\"beginsWithBond\"!==i&&delete t[i];return T},\"oxidation-output\":function(t,e){var Q=[\"{\"];return r.concatArray(Q,r.go(e,\"oxidation\")),Q.push(\"}\"),Q},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:r.go(e[0]),p2:r.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:r.go(e[0]),p2:r.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:r.go(e[0]),p2:r.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:r.go(e[0]),p2:r.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,Q){return{type_:\"operator\",kind_:Q||e}}}},a:{transitions:r.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:r.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var Q in t)delete t[Q];return e}}}},pq:{transitions:r.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:r.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1],\"pq\")}}}},bd:{transitions:r.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1],\"bd\")}}}},oxidation:{transitions:r.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var Q in t)delete t[Q];return e}}}},\"tex-math tight\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var Q in t)delete t[Q];return e}}}},\"9,9\":{transitions:r.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var Q=[];return\"+-\"===e[0]||\"+/-\"===e[0]?Q.push(\"\\\\pm \"):e[0]&&Q.push(e[0]),e[1]&&(r.concatArray(Q,r.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?r.concatArray(Q,r.go(e[2],\"pu-9,9\")):Q.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?Q.push({type_:\"cdot\"}):Q.push({type_:\"times\"}))),e[3]&&Q.push(\"10^{\"+e[5]+\"}\"),Q},\"number^\":function(t,e){var Q=[];return\"+-\"===e[0]||\"+/-\"===e[0]?Q.push(\"\\\\pm \"):e[0]&&Q.push(e[0]),r.concatArray(Q,r.go(e[1],\"pu-9,9\")),Q.push(\"^{\"+e[2]+\"}\"),Q},operator:function(t,e,Q){return{type_:\"operator\",kind_:Q||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,Q=r.patterns.match_(\"{(...)}\",t.d||\"\");Q&&\"\"===Q.remainder&&(t.d=Q.match_);var T=r.patterns.match_(\"{(...)}\",t.q||\"\");if(T&&\"\"===T.remainder&&(t.q=T.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var n={d:r.go(t.d,\"pu\"),q:r.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:n.d,p2:n.q}:(e=n.d,n.d.length>1||n.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),r.concatArray(e,n.q))}else e=r.go(t.d,\"pu-2\");for(var o in t)delete t[o];return e}}},\"pu-2\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var Q=r.patterns.match_(\"{(...)}\",t.rm||\"\");e=Q&&\"\"===Q.remainder?r.go(Q.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var T in t)delete t[T];return e}}},\"pu-9,9\":{transitions:r.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var Q=t.text_.length%3;0===Q&&(Q=3);for(var r=t.text_.length-3;r>0;r-=3)e.push(t.text_.substr(r,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,Q)),e.reverse()}else e.push(t.text_);for(var T in t)delete t[T];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var Q=t.text_.length-3,r=0;r<Q;r+=3)e.push(t.text_.substr(r,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(r))}else e.push(t.text_);for(var T in t)delete t[T];return e}}}};var T={go:function(t,e){if(!t)return\"\";for(var Q=\"\",r=!1,n=0;n<t.length;n++){var o=t[n];\"string\"==typeof o?Q+=o:(Q+=T._go2(o),\"1st-level escape\"===o.type_&&(r=!0))}return e||r||!Q||(Q=\"{\"+Q+\"}\"),Q},_goInner:function(t){return t?T.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var Q={a:T._goInner(t.a),b:T._goInner(t.b),p:T._goInner(t.p),o:T._goInner(t.o),q:T._goInner(t.q),d:T._goInner(t.d)};Q.a&&(Q.a.match(/^[+\\-]/)&&(Q.a=\"{\"+Q.a+\"}\"),e+=Q.a+\"\\\\,\"),(Q.b||Q.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(Q.b||\"\")+\"}}_{\\\\hphantom{\"+(Q.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(Q.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(Q.p||\"\")+\"}}}\"),Q.o&&(Q.o.match(/^[+\\-]/)&&(Q.o=\"{\"+Q.o+\"}\"),e+=Q.o),\"kv\"===t.dType?((Q.d||Q.q)&&(e+=\"{\\\\vphantom{X}}\"),Q.d&&(e+=\"^{\"+Q.d+\"}\"),Q.q&&(e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\")):\"oxidation\"===t.dType?(Q.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+Q.d+\"}\"),Q.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\")):(Q.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\"),Q.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+Q.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+T._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+T._goInner(t.p1);break;case\"bond\":if(!(e=T._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var r=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+r+\"}{\"+r+\"}{\"+r+\"}{\"+r+\"}\";break;case\"pu-frac\":var n=\"\\\\frac{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+T._goInner(t.p1)+\"}_{\"+T._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+T._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var o={rd:T._goInner(t.rd),rq:T._goInner(t.rq)},i=T._getArrow(t.r);o.rd||o.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(i=\"\\\\long\"+i,o.rd&&(i=\"\\\\overset{\"+o.rd+\"}{\"+i+\"}\"),o.rq&&(i=\"\\\\underset{\\\\lower7mu{\"+o.rq+\"}}{\"+i+\"}\"),i=\" {}\\\\mathrel{\"+i+\"}{} \"):(o.rq&&(i+=\"[{\"+o.rq+\"}]\"),i=\" {}\\\\mathrel{\\\\x\"+(i+=\"{\"+o.rd+\"}\")+\"}{} \"):i=\" {}\\\\mathrel{\\\\long\"+i+\"}{} \",e=i;break;case\"operator\":e=T._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function n(t){}function o(t){}e.mhchemParser=r,e.texify=T,e.assertNever=n,e.assertString=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(161),n=Q(13),o=Q(23),i=Q(0);new r.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",n.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},T.default),new r.CharacterMap(\"Physics-vector-chars\",o.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:n.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:n.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:n.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:n.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:n.TexConstant.Variant.NORMAL}]}),new r.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},T.default),new r.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},T.default),new r.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},T.default),new r.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},T.default),new r.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},T.default),new r.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},T.default),new r.EnvironmentMap(\"Physics-aux-envs\",o.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},T.default),new r.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",i.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},T.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(13),n=Q(90);new r.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},n.TextMacrosMethods),new r.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",T.TexConstant.Variant.NORMAL],mit:[\"SetFont\",T.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",T.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",T.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",T.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",T.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",T.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",T.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",T.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",T.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",T.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},n.TextMacrosMethods)},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTeXFontMixin=void 0,e.CommonTeXFontMixin=function(t){var e;return(e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getDelimiterData=function(t){return this.getChar(\"-smallop\",t)||this.getChar(\"-size4\",t)},e}(t)).defaultVariants=i(t.defaultVariants,[[\"-smallop\",\"normal\"],[\"-largeop\",\"normal\"],[\"-size3\",\"normal\"],[\"-size4\",\"normal\"],[\"-tex-calligraphic\",\"italic\"],[\"-tex-bold-calligraphic\",\"bold-italic\"],[\"-tex-oldstyle\",\"normal\"],[\"-tex-bold-oldstyle\",\"bold\"],[\"-tex-mathit\",\"italic\"],[\"-tex-variant\",\"normal\"]]),e.defaultCssFonts=n(n({},t.defaultCssFonts),{\"-smallop\":[\"serif\",!1,!1],\"-largeop\":[\"serif\",!1,!1],\"-size3\":[\"serif\",!1,!1],\"-size4\":[\"serif\",!1,!1],\"-tex-calligraphic\":[\"cursive\",!0,!1],\"-tex-bold-calligraphic\":[\"cursive\",!0,!0],\"-tex-oldstyle\":[\"serif\",!1,!1],\"-tex-bold-oldstyle\":[\"serif\",!1,!0],\"-tex-mathit\":[\"serif\",!0,!1]}),e.defaultSizeVariants=[\"normal\",\"-smallop\",\"-largeop\",\"-size3\",\"-size4\"],e}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(224);Object.defineProperty(e,\"doubleStruck\",{enumerable:!0,get:function(){return r.doubleStruck}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(245);Object.defineProperty(e,\"scriptBold\",{enumerable:!0,get:function(){return r.scriptBold}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(246);Object.defineProperty(e,\"script\",{enumerable:!0,get:function(){return r.script}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractNavigatable=void 0;var r=Q(51),T=Q(297),n=function(){function t(){this.bubble=!1}return t.prototype.bubbleKey=function(){this.bubble=!0},t.prototype.keydown=function(t){switch(t.keyCode){case r.KEY.ESCAPE:this.escape(t);break;case r.KEY.RIGHT:this.right(t);break;case r.KEY.LEFT:this.left(t);break;case r.KEY.UP:this.up(t);break;case r.KEY.DOWN:this.down(t);break;case r.KEY.RETURN:case r.KEY.SPACE:this.space(t);break;default:return}this.bubble?this.bubble=!1:this.stop(t)},t.prototype.escape=function(t){},t.prototype.space=function(t){},t.prototype.left=function(t){},t.prototype.right=function(t){},t.prototype.up=function(t){},t.prototype.down=function(t){},t.prototype.stop=function(t){t&&(t.stopPropagation(),t.preventDefault(),t.cancelBubble=!0)},t.prototype.mousedown=function(t){return this.stop(t)},t.prototype.mouseup=function(t){return this.stop(t)},t.prototype.mouseover=function(t){return this.stop(t)},t.prototype.mouseout=function(t){return this.stop(t)},t.prototype.click=function(t){return this.stop(t)},t.prototype.addEvents=function(t){t.addEventListener(T.MOUSE.DOWN,this.mousedown.bind(this)),t.addEventListener(T.MOUSE.UP,this.mouseup.bind(this)),t.addEventListener(T.MOUSE.OVER,this.mouseover.bind(this)),t.addEventListener(T.MOUSE.OUT,this.mouseout.bind(this)),t.addEventListener(T.MOUSE.CLICK,this.click.bind(this)),t.addEventListener(\"keydown\",this.keydown.bind(this)),t.addEventListener(\"dragstart\",this.stop.bind(this)),t.addEventListener(T.MOUSE.SELECTSTART,this.stop.bind(this)),t.addEventListener(\"contextmenu\",this.stop.bind(this)),t.addEventListener(T.MOUSE.DBLCLICK,this.stop.bind(this))},t}();e.AbstractNavigatable=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MOUSE=void 0,e.MOUSE={CLICK:\"click\",DBLCLICK:\"dblclick\",DOWN:\"mousedown\",UP:\"mouseup\",OVER:\"mouseover\",OUT:\"mouseout\",MOVE:\"mousemove\",SELECTEND:\"selectend\",SELECTSTART:\"selectstart\"}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuStore=void 0;var T=Q(17),n=Q(10),o=Q(51),i=function(){function t(t){this.menu=t,this.store=[],this._active=null,this.counter=0,this.attachedClass=n.HtmlClasses.ATTACHED+\"_\"+T.MenuUtil.counter(),this.taborder=!0,this.attrMap={}}return Object.defineProperty(t.prototype,\"active\",{get:function(){return this._active},set:function(t){do{if(-1!==this.store.indexOf(t)){this._active=t;break}t=t.parentNode}while(t)},enumerable:!1,configurable:!0}),t.prototype.next=function(){var t=this.store.length;if(0===t)return this.active=null,null;var e=this.store.indexOf(this.active);return e=-1===e?0:e<t-1?e+1:0,this.active=this.store[e],this.active},t.prototype.previous=function(){var t=this.store.length;if(0===t)return this.active=null,null;var e=t-1,Q=this.store.indexOf(this.active);return Q=-1===Q||0===Q?e:Q-1,this.active=this.store[Q],this.active},t.prototype.clear=function(){this.remove(this.store)},t.prototype.insert=function(t){var e,Q,T=t instanceof HTMLElement?[t]:t;try{for(var n=r(T),o=n.next();!o.done;o=n.next()){var i=o.value;this.insertElement(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}this.sort()},t.prototype.remove=function(t){var e,Q,T=t instanceof HTMLElement?[t]:t;try{for(var n=r(T),o=n.next();!o.done;o=n.next()){var i=o.value;this.removeElement(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}this.sort()},t.prototype.inTaborder=function(t){this.taborder&&!t&&this.removeTaborder(),!this.taborder&&t&&this.insertTaborder(),this.taborder=t},t.prototype.insertTaborder=function(){this.taborder&&this.insertTaborder_()},t.prototype.removeTaborder=function(){this.taborder&&this.removeTaborder_()},t.prototype.insertElement=function(t){t.classList.contains(this.attachedClass)||(t.classList.add(this.attachedClass),this.taborder&&this.addTabindex(t),this.addEvents(t))},t.prototype.removeElement=function(t){t.classList.contains(this.attachedClass)&&(t.classList.remove(this.attachedClass),this.taborder&&this.removeTabindex(t),this.removeEvents(t))},t.prototype.sort=function(){var t=document.getElementsByClassName(this.attachedClass);this.store=[].slice.call(t)},t.prototype.insertTaborder_=function(){this.store.forEach((function(t){return t.setAttribute(\"tabindex\",\"0\")}))},t.prototype.removeTaborder_=function(){this.store.forEach((function(t){return t.setAttribute(\"tabindex\",\"-1\")}))},t.prototype.addTabindex=function(t){t.hasAttribute(\"tabindex\")&&t.setAttribute(n.HtmlAttrs.OLDTAB,t.getAttribute(\"tabindex\")),t.setAttribute(\"tabindex\",\"0\")},t.prototype.removeTabindex=function(t){t.hasAttribute(n.HtmlAttrs.OLDTAB)?(t.setAttribute(\"tabindex\",t.getAttribute(n.HtmlAttrs.OLDTAB)),t.removeAttribute(n.HtmlAttrs.OLDTAB)):t.removeAttribute(\"tabindex\")},t.prototype.addEvents=function(t){t.hasAttribute(n.HtmlAttrs.COUNTER)||(this.addEvent(t,\"contextmenu\",this.menu.post.bind(this.menu)),this.addEvent(t,\"keydown\",this.keydown.bind(this)),t.setAttribute(n.HtmlAttrs.COUNTER,this.counter.toString()),this.counter++)},t.prototype.addEvent=function(t,e,Q){var r=n.HtmlAttrs[e.toUpperCase()+\"FUNC\"];this.attrMap[r+this.counter]=Q,t.addEventListener(e,Q)},t.prototype.removeEvents=function(t){if(t.hasAttribute(n.HtmlAttrs.COUNTER)){var e=t.getAttribute(n.HtmlAttrs.COUNTER);this.removeEvent(t,\"contextmenu\",e),this.removeEvent(t,\"keydown\",e),t.removeAttribute(n.HtmlAttrs.COUNTER)}},t.prototype.removeEvent=function(t,e,Q){var r=n.HtmlAttrs[e.toUpperCase()+\"FUNC\"],T=this.attrMap[r+Q];t.removeEventListener(e,T)},t.prototype.keydown=function(t){t.keyCode===o.KEY.SPACE&&(this.menu.post(t),t.preventDefault(),t.stopImmediatePropagation())},t}();e.MenuStore=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VariablePool=void 0;var r=function(){function t(){this.pool={}}return t.prototype.insert=function(t){this.pool[t.name]=t},t.prototype.lookup=function(t){return this.pool[t]},t.prototype.remove=function(t){delete this.pool[t]},t.prototype.update=function(){for(var t in this.pool)this.pool[t].update()},t}();e.VariablePool=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CloseButton=void 0;var n=Q(102),o=Q(10),i=function(t){function e(e){var Q=t.call(this)||this;return Q.element=e,Q.className=o.HtmlClasses.MENUCLOSE,Q.role=\"button\",Q}return T(e,t),e.prototype.generateHtml=function(){var t=document.createElement(\"span\");t.classList.add(this.className),t.setAttribute(\"role\",this.role),t.setAttribute(\"tabindex\",\"0\");var e=document.createElement(\"span\");e.textContent=\"\\xd7\",t.appendChild(e),this.html=t},e.prototype.display=function(){},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.element.unpost()},e.prototype.keydown=function(e){this.bubbleKey(),t.prototype.keydown.call(this,e)},e.prototype.space=function(t){this.unpost(),this.stop(t)},e.prototype.mousedown=function(t){this.unpost(),this.stop(t)},e}(n.AbstractPostable);e.CloseButton=i},function(t,e,Q){\"use strict\";var r=this&&this.__rest||function(t,e){var Q={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(Q[r]=t[r]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var T=0;for(r=Object.getOwnPropertySymbols(t);T<r.length;T++)e.indexOf(r[T])<0&&Object.prototype.propertyIsEnumerable.call(t,r[T])&&(Q[r[T]]=t[r[T]])}return Q},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Parser=void 0;var i=Q(302),a=Q(273),s=Q(303),l=Q(304),c=Q(305),u=Q(306),p=Q(307),h=Q(103),f=Q(276),d=Q(308),L=Q(309),H=Q(310),m=Q(311),y=function(){function t(t){var e=this;void 0===t&&(t=[]),this._initList=[[\"command\",i.Command.fromJson.bind(i.Command)],[\"checkbox\",l.Checkbox.fromJson.bind(l.Checkbox)],[\"combo\",c.Combo.fromJson.bind(c.Combo)],[\"slider\",d.Slider.fromJson.bind(d.Slider)],[\"label\",u.Label.fromJson.bind(u.Label)],[\"radio\",p.Radio.fromJson.bind(p.Radio)],[\"rule\",f.Rule.fromJson.bind(f.Rule)],[\"submenu\",h.Submenu.fromJson.bind(h.Submenu)],[\"contextMenu\",a.ContextMenu.fromJson.bind(a.ContextMenu)],[\"subMenu\",L.SubMenu.fromJson.bind(L.SubMenu)],[\"variable\",s.Variable.fromJson.bind(s.Variable)],[\"items\",this.items.bind(this)],[\"selectionMenu\",H.SelectionMenu.fromJson.bind(H.SelectionMenu)],[\"selectionBox\",H.SelectionBox.fromJson.bind(H.SelectionBox)]],this._factory=new m.ParserFactory(this._initList),t.forEach((function(t){var Q=T(t,2),r=Q[0],n=Q[1];return e.factory.add(r,n)}))}return Object.defineProperty(t.prototype,\"factory\",{get:function(){return this._factory},enumerable:!1,configurable:!0}),t.prototype.items=function(t,e,Q){var r,T,o=[];try{for(var i=n(e),a=i.next();!a.done;a=i.next()){var s=a.value,l=this.parse(s,Q);l&&(Q.items.push(l),s.disabled&&l.disable(),s.hidden&&o.push(l))}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o.forEach((function(t){return t.hide()})),Q.items},t.prototype.parse=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var T=t.type,n=r(t,[\"type\"]),i=this.factory.get(T);return i?i.apply(void 0,o([this.factory,n],e)):null},t}();e.Parser=y},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Command=void 0;var n=Q(36),o=Q(17),i=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"command\",Q,T)||this;return n.command=r,n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.action,e.id)},e.prototype.executeAction=function(){try{this.command(o.MenuUtil.getActiveElement(this))}catch(t){o.MenuUtil.error(t,\"Illegal command callback.\")}o.MenuUtil.close(this)},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Command=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Variable=void 0;var r=Q(17),T=function(){function t(t,e,Q){this._name=t,this.getter=e,this.setter=Q,this.items=[]}return t.fromJson=function(t,e,Q){var r=new this(e.name,e.getter,e.setter);Q.insert(r)},Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.getValue=function(t){try{return this.getter(t)}catch(t){return r.MenuUtil.error(t,\"Command of variable \"+this.name+\" failed.\"),null}},t.prototype.setValue=function(t,e){try{this.setter(t,e)}catch(t){r.MenuUtil.error(t,\"Command of variable \"+this.name+\" failed.\")}this.update()},t.prototype.register=function(t){-1===this.items.indexOf(t)&&this.items.push(t)},t.prototype.unregister=function(t){var e=this.items.indexOf(t);-1!==e&&this.items.splice(e,1)},t.prototype.update=function(){this.items.forEach((function(t){return t.update()}))},t.prototype.registerCallback=function(t){this.items.forEach((function(e){return e.registerCallback(t)}))},t.prototype.unregisterCallback=function(t){this.items.forEach((function(e){return e.unregisterCallback(t)}))},t.prototype.toJson=function(){return{type:\"variable\",name:this.name,getter:this.getter.toString(),setter:this.setter.toString()}},t}();e.Variable=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Checkbox=void 0;var n=Q(52),o=Q(17),i=Q(10),a=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"checkbox\",Q,T)||this;return n.role=\"menuitemcheckbox\",n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(!this.variable.getValue()),o.MenuUtil.close(this)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.textContent=\"\\u2713\",this.span.classList.add(i.HtmlClasses.MENUCHECK)},e.prototype.updateAria=function(){this.html.setAttribute(\"aria-checked\",this.variable.getValue()?\"true\":\"false\")},e.prototype.updateSpan=function(){this.span.style.display=this.variable.getValue()?\"\":\"none\"},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Checkbox=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Combo=void 0;var n=Q(52),o=Q(17),i=Q(10),a=Q(51),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"combobox\",Q,T)||this;return n.role=\"combobox\",n.inputEvent=!1,n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.input.value,o.MenuUtil.getActiveElement(this))},e.prototype.space=function(e){t.prototype.space.call(this,e),o.MenuUtil.close(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.input.focus()},e.prototype.unfocus=function(){t.prototype.unfocus.call(this),this.updateSpan()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.MENUCOMBOBOX)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.classList.add(i.HtmlClasses.MENUINPUTBOX),this.input=document.createElement(\"input\"),this.input.addEventListener(\"keydown\",this.inputKey.bind(this)),this.input.setAttribute(\"size\",\"10em\"),this.input.setAttribute(\"type\",\"text\"),this.input.setAttribute(\"tabindex\",\"-1\"),this.span.appendChild(this.input)},e.prototype.inputKey=function(t){this.bubbleKey(),this.inputEvent=!0},e.prototype.keydown=function(e){if(this.inputEvent&&e.keyCode!==a.KEY.ESCAPE&&e.keyCode!==a.KEY.RETURN)return this.inputEvent=!1,void e.stopPropagation();t.prototype.keydown.call(this,e),e.stopPropagation()},e.prototype.updateAria=function(){},e.prototype.updateSpan=function(){var t;try{t=this.variable.getValue(o.MenuUtil.getActiveElement(this))}catch(e){t=\"\"}this.input.value=t},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Combo=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=void 0;var n=Q(36),o=Q(10),i=function(t){function e(e,Q,r){return t.call(this,e,\"label\",Q,r)||this}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.id)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(o.HtmlClasses.MENULABEL)},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Label=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Radio=void 0;var n=Q(52),o=Q(17),i=Q(10),a=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"radio\",Q,T)||this;return n.role=\"menuitemradio\",n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.id),o.MenuUtil.close(this)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.textContent=\"\\u2713\",this.span.classList.add(i.HtmlClasses.MENURADIOCHECK)},e.prototype.updateAria=function(){this.html.setAttribute(\"aria-checked\",this.variable.getValue()===this.id?\"true\":\"false\")},e.prototype.updateSpan=function(){this.span.style.display=this.variable.getValue()===this.id?\"\":\"none\"},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Radio=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Slider=void 0;var n=Q(52),o=Q(17),i=Q(10),a=Q(51),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"slider\",Q,T)||this;return n.role=\"slider\",n.labelId=\"ctx_slideLabel\"+o.MenuUtil.counter(),n.valueId=\"ctx_slideValue\"+o.MenuUtil.counter(),n.inputEvent=!1,n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.input.value,o.MenuUtil.getActiveElement(this)),this.update()},e.prototype.space=function(e){t.prototype.space.call(this,e),o.MenuUtil.close(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.input.focus()},e.prototype.unfocus=function(){t.prototype.unfocus.call(this),this.updateSpan()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.MENUSLIDER),this.valueSpan=document.createElement(\"span\"),this.valueSpan.setAttribute(\"id\",this.valueId),this.valueSpan.classList.add(i.HtmlClasses.SLIDERVALUE),this.html.appendChild(this.valueSpan)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.labelSpan=document.createElement(\"span\"),this.labelSpan.setAttribute(\"id\",this.labelId),this.labelSpan.appendChild(this.html.childNodes[0]),this.html.appendChild(this.labelSpan),this.input=document.createElement(\"input\"),this.input.setAttribute(\"type\",\"range\"),this.input.setAttribute(\"min\",\"0\"),this.input.setAttribute(\"max\",\"100\"),this.input.setAttribute(\"aria-valuemin\",\"0\"),this.input.setAttribute(\"aria-valuemax\",\"100\"),this.input.setAttribute(\"aria-labelledby\",this.labelId),this.input.addEventListener(\"keydown\",this.inputKey.bind(this)),this.input.addEventListener(\"input\",this.executeAction.bind(this)),this.input.classList.add(i.HtmlClasses.SLIDERBAR),this.span.appendChild(this.input)},e.prototype.inputKey=function(t){this.inputEvent=!0},e.prototype.mousedown=function(t){t.stopPropagation()},e.prototype.mouseup=function(t){event.stopPropagation()},e.prototype.keydown=function(e){var Q=e.keyCode;return Q===a.KEY.UP||Q===a.KEY.DOWN?(e.preventDefault(),void t.prototype.keydown.call(this,e)):this.inputEvent&&Q!==a.KEY.ESCAPE&&Q!==a.KEY.RETURN?(this.inputEvent=!1,void e.stopPropagation()):(t.prototype.keydown.call(this,e),void e.stopPropagation())},e.prototype.updateAria=function(){var t=this.variable.getValue();t&&this.input&&(this.input.setAttribute(\"aria-valuenow\",t),this.input.setAttribute(\"aria-valuetext\",t+\"%\"))},e.prototype.updateSpan=function(){var t;try{t=this.variable.getValue(o.MenuUtil.getActiveElement(this)),this.valueSpan.innerHTML=t+\"%\"}catch(e){t=\"\"}this.input.value=t},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Slider=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubMenu=void 0;var n=function(t){function e(e){var Q=t.call(this)||this;return Q._anchor=e,Q.variablePool=Q.anchor.menu.pool,Q.setBaseMenu(),Q}return T(e,t),e.fromJson=function(t,e,Q){var r=e.items,T=new this(Q),n=t.get(\"items\")(t,r,T);return T.items=n,T},Object.defineProperty(e.prototype,\"anchor\",{get:function(){return this._anchor},enumerable:!1,configurable:!0}),e.prototype.post=function(){if(this.anchor.menu.isPosted()){for(var e=this.anchor.html,Q=this.html,r=this.baseMenu.frame,T=e.offsetWidth,n=T-2,o=0;e&&e!==r;)n+=e.offsetLeft,o+=e.offsetTop,e=e.parentNode;n+Q.offsetWidth>document.body.offsetWidth-5&&(n=Math.max(5,n-T-Q.offsetWidth+6)),t.prototype.post.call(this,n,o)}},e.prototype.display=function(){this.baseMenu.frame.appendChild(this.html)},e.prototype.setBaseMenu=function(){var t=this;do{t=t.anchor.menu}while(t instanceof e);this.baseMenu=t},e.prototype.left=function(t){this.focused=null,this.anchor.focus()},e.prototype.toJson=function(){return{type:\"\"}},e}(Q(101).AbstractMenu);e.SubMenu=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectionBox=e.SelectionMenu=void 0;var o=Q(17),i=Q(10),a=Q(101),s=Q(104),l=function(t){function e(e){var Q=t.call(this)||this;return Q.anchor=e,Q.className=i.HtmlClasses.SELECTIONMENU,Q.variablePool=Q.anchor.menu.pool,Q.baseMenu=Q.anchor.menu,Q}return T(e,t),e.fromJson=function(t,e,Q){var r=e.title,T=e.values,n=e.variable,o=new this(Q),i=t.get(\"label\")(t,{content:r||\"\",id:r||\"id\"},o),a=t.get(\"rule\")(t,{},o),s=T.map((function(e){return t.get(\"radio\")(t,{content:e,variable:n,id:e},o)})),l=[i,a].concat(s);return o.items=l,o},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.items.forEach((function(t){return t.html.classList.add(i.HtmlClasses.SELECTIONITEM)}))},e.prototype.display=function(){},e.prototype.right=function(t){this.anchor.right(t)},e.prototype.left=function(t){this.anchor.left(t)},e}(a.AbstractMenu);e.SelectionMenu=l;var c=function(t){function e(e,Q,r,T){void 0===r&&(r=\"none\"),void 0===T&&(T=\"vertical\");var n=t.call(this,e,null,Q)||this;return n.style=r,n.grid=T,n._selections=[],n.prefix=\"ctxt-selection\",n._balanced=!0,n}return T(e,t),e.fromJson=function(t,e,Q){var r=e.title,T=e.signature,n=e.selections,o=new this(r,T,e.order,e.grid);o.attachMenu(Q);var i=n.map((function(e){return t.get(\"selectionMenu\")(t,e,o)}));return o.selections=i,o},e.prototype.attachMenu=function(t){this.menu=t},Object.defineProperty(e.prototype,\"selections\",{get:function(){return this._selections},set:function(t){var e=this;this._selections=[],t.forEach((function(t){return e.addSelection(t)}))},enumerable:!1,configurable:!0}),e.prototype.addSelection=function(t){t.anchor=this,this._selections.push(t)},e.prototype.rowDiv=function(t){var e=this,Q=document.createElement(\"div\");this.contentDiv.appendChild(Q);var r=t.map((function(t){return Q.appendChild(t.html),t.html.id||(t.html.id=e.prefix+o.MenuUtil.counter()),t.html.getBoundingClientRect()})),T=r.map((function(t){return t.width})),n=T.reduce((function(t,e){return t+e}),0),a=r.reduce((function(t,e){return Math.max(t,e.height)}),0);return Q.classList.add(i.HtmlClasses.SELECTIONDIVIDER),Q.setAttribute(\"style\",\"height: \"+a+\"px;\"),[Q,n,a,T]},e.prototype.display=function(){if(t.prototype.display.call(this),this.order(),this.selections.length){for(var e=[],Q=0,r=[],T=this.getChunkSize(this.selections.length),o=function(t){var o=i.selections.slice(t,t+T),a=n(i.rowDiv(o),4),s=a[0],l=a[1],c=a[2],u=a[3];e.push(s),Q=Math.max(Q,l),o.forEach((function(t){return t.html.style.height=c+\"px\"})),r=i.combineColumn(r,u)},i=this,a=0;a<this.selections.length;a+=T)o(a);this._balanced&&(this.balanceColumn(e,r),Q=r.reduce((function(t,e){return t+e}),20)),e.forEach((function(t){return t.style.width=Q+\"px\"}))}},e.prototype.getChunkSize=function(t){switch(this.grid){case\"square\":return Math.floor(Math.sqrt(t));case\"horizontal\":return Math.floor(t/e.chunkSize);case\"vertical\":default:return e.chunkSize}},e.prototype.balanceColumn=function(t,e){t.forEach((function(t){for(var Q=Array.from(t.children),r=0,T=void 0;T=Q[r];r++)T.style.width=e[r]+\"px\"}))},e.prototype.combineColumn=function(t,e){for(var Q=[],r=0;t[r]||e[r];){if(!t[r]){Q=Q.concat(e.slice(r));break}if(!e[r]){Q=Q.concat(t.slice(r));break}Q.push(Math.max(t[r],e[r])),r++}return Q},e.prototype.left=function(t){var e=this;this.move(t,(function(t){return(0===t?e.selections.length:t)-1}))},e.prototype.right=function(t){var e=this;this.move(t,(function(t){return t===e.selections.length-1?0:t+1}))},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.SELECTION)},e.prototype.generateContent=function(){var e=t.prototype.generateContent.call(this);return e.classList.add(i.HtmlClasses.SELECTIONBOX),e.removeAttribute(\"tabindex\"),e},e.prototype.findSelection=function(t){var e=t.target,Q=null;if(e.id&&(Q=this.selections.find((function(t){return t.html.id===e.id}))),!Q){var r=e.parentElement.id;Q=this.selections.find((function(t){return t.html.id===r}))}return Q},e.prototype.move=function(t,e){var Q=this.findSelection(t);Q.focused&&Q.focused.unfocus();var r=e(this.selections.indexOf(Q));this.selections[r].focus()},e.prototype.order=function(){this.selections.sort(e.orderMethod.get(this.style))},e.prototype.toJson=function(){return{type:\"\"}},e.chunkSize=4,e.orderMethod=new Map([[\"alphabetical\",function(t,e){return t.items[0].content.localeCompare(e.items[0].content)}],[\"none\",function(t,e){return 1}],[\"decreasing\",function(t,e){var Q=t.items.length,r=e.items.length;return Q<r?1:r<Q?-1:0}],[\"increasing\",function(t,e){var Q=t.items.length,r=e.items.length;return Q<r?-1:r<Q?1:0}]]),e}(s.Info);e.SelectionBox=c},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserFactory=void 0;var r=function(){function t(t){this._parser=new Map(t)}return t.prototype.get=function(t){return this._parser.get(t)},t.prototype.add=function(t,e){this._parser.set(t,e)},t}();e.ParserFactory=r},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=void 0;var r=Q(10);!function(t){function e(t){return\".\"+(r.HtmlClasses[t]||t)}var Q={};Q[e(\"INFOCLOSE\")]=\"{  top:.2em; right:.2em;}\",Q[e(\"INFOCONTENT\")]=\"{  overflow:auto; text-align:left; font-size:80%;  padding:.4em .6em; border:1px inset; margin:1em 0px;  max-height:20em; max-width:30em; background-color:#EEEEEE;  white-space:normal;}\",Q[e(\"INFO\")+e(\"MOUSEPOST\")]=\"{outline:none;}\",Q[e(\"INFO\")]='{  position:fixed; left:50%; width:auto; text-align:center;  border:3px outset; padding:1em 2em; background-color:#DDDDDD;  color:black;  cursor:default; font-family:message-box; font-size:120%;  font-style:normal; text-indent:0; text-transform:none;  line-height:normal; letter-spacing:normal; word-spacing:normal;  word-wrap:normal; white-space:nowrap; float:none; z-index:201;  border-radius: 15px;                     /* Opera 10.5 and IE9 */  -webkit-border-radius:15px;               /* Safari and Chrome */  -moz-border-radius:15px;                  /* Firefox */  -khtml-border-radius:15px;                /* Konqueror */  box-shadow:0px 10px 20px #808080;         /* Opera 10.5 and IE9 */  -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */  -moz-box-shadow:0px 10px 20px #808080;    /* Forefox 3.5 */  -khtml-box-shadow:0px 10px 20px #808080;  /* Konqueror */  filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color=\"gray\", Positive=\"true\"); /* IE */}';var T={};T[e(\"MENU\")]=\"{  position:absolute;  background-color:white;  color:black;  width:auto; padding:5px 0px;  border:1px solid #CCCCCC; margin:0; cursor:default;  font: menu; text-align:left; text-indent:0; text-transform:none;  line-height:normal; letter-spacing:normal; word-spacing:normal;  word-wrap:normal; white-space:nowrap; float:none; z-index:201;  border-radius: 5px;                     /* Opera 10.5 and IE9 */  -webkit-border-radius: 5px;             /* Safari and Chrome */  -moz-border-radius: 5px;                /* Firefox */  -khtml-border-radius: 5px;              /* Konqueror */  box-shadow:0px 10px 20px #808080;         /* Opera 10.5 and IE9 */  -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */  -moz-box-shadow:0px 10px 20px #808080;    /* Forefox 3.5 */  -khtml-box-shadow:0px 10px 20px #808080;  /* Konqueror */}\",T[e(\"MENUITEM\")]=\"{  padding: 1px 2em;  background:transparent;}\",T[e(\"MENUARROW\")]=\"{  position:absolute; right:.5em; padding-top:.25em; color:#666666;  font-family: null; font-size: .75em}\",T[e(\"MENUACTIVE\")+\" \"+e(\"MENUARROW\")]=\"{color:white}\",T[e(\"MENUARROW\")+e(\"RTL\")]=\"{left:.5em; right:auto}\",T[e(\"MENUCHECK\")]=\"{  position:absolute; left:.7em;  font-family: null}\",T[e(\"MENUCHECK\")+e(\"RTL\")]=\"{ right:.7em; left:auto }\",T[e(\"MENURADIOCHECK\")]=\"{  position:absolute; left: .7em;}\",T[e(\"MENURADIOCHECK\")+e(\"RTL\")]=\"{  right: .7em; left:auto}\",T[e(\"MENUINPUTBOX\")]=\"{  padding-left: 1em; right:.5em; color:#666666;  font-family: null;}\",T[e(\"MENUINPUTBOX\")+e(\"RTL\")]=\"{  left: .1em;}\",T[e(\"MENUCOMBOBOX\")]=\"{  left:.1em; padding-bottom:.5em;}\",T[e(\"MENUSLIDER\")]=\"{  left: .1em;}\",T[e(\"SLIDERVALUE\")]=\"{  position:absolute; right:.1em; padding-top:.25em; color:#333333;  font-size: .75em}\",T[e(\"SLIDERBAR\")]=\"{  outline: none; background: #d3d3d3}\",T[e(\"MENULABEL\")]=\"{  padding: 1px 2em 3px 1.33em;  font-style:italic}\",T[e(\"MENURULE\")]=\"{  border-top: 1px solid #DDDDDD;  margin: 4px 3px;}\",T[e(\"MENUDISABLED\")]=\"{  color:GrayText}\",T[e(\"MENUACTIVE\")]=\"{  background-color: #606872;  color: white;}\",T[e(\"MENUDISABLED\")+\":focus\"]=\"{  background-color: #E8E8E8}\",T[e(\"MENULABEL\")+\":focus\"]=\"{  background-color: #E8E8E8}\",T[e(\"CONTEXTMENU\")+\":focus\"]=\"{  outline:none}\",T[e(\"CONTEXTMENU\")+\" \"+e(\"MENUITEM\")+\":focus\"]=\"{  outline:none}\",T[e(\"SELECTIONMENU\")]=\"{  position:relative; float:left;  border-bottom: none; -webkit-box-shadow:none; -webkit-border-radius:0px; }\",T[e(\"SELECTIONITEM\")]=\"{  padding-right: 1em;}\",T[e(\"SELECTION\")]=\"{  right: 40%; width:50%; }\",T[e(\"SELECTIONBOX\")]=\"{  padding: 0em; max-height:20em; max-width: none;  background-color:#FFFFFF;}\",T[e(\"SELECTIONDIVIDER\")]=\"{  clear: both; border-top: 2px solid #000000;}\",T[e(\"MENU\")+\" \"+e(\"MENUCLOSE\")]=\"{  top:-10px; left:-10px}\";var n={};n[e(\"MENUCLOSE\")]='{  position:absolute;  cursor:pointer;  display:inline-block;  border:2px solid #AAA;  border-radius:18px;  -webkit-border-radius: 18px;             /* Safari and Chrome */  -moz-border-radius: 18px;                /* Firefox */  -khtml-border-radius: 18px;              /* Konqueror */  font-family: \"Courier New\", Courier;  font-size:24px;  color:#F0F0F0}',n[e(\"MENUCLOSE\")+\" span\"]=\"{  display:block; background-color:#AAA; border:1.5px solid;  border-radius:18px;  -webkit-border-radius: 18px;             /* Safari and Chrome */  -moz-border-radius: 18px;                /* Firefox */  -khtml-border-radius: 18px;              /* Konqueror */  line-height:0;  padding:8px 0 6px     /* may need to be browser-specific */}\",n[e(\"MENUCLOSE\")+\":hover\"]=\"{  color:white!important;  border:2px solid #CCC!important}\",n[e(\"MENUCLOSE\")+\":hover span\"]=\"{  background-color:#CCC!important}\",n[e(\"MENUCLOSE\")+\":hover:focus\"]=\"{  outline:none}\";var o=!1,i=!1,a=!1;function s(t){a||(l(n,t),a=!0)}function l(t,e){var Q=e||document,r=Q.createElement(\"style\");r.type=\"text/css\";var T=\"\";for(var n in t)T+=n,T+=\" \",T+=t[n],T+=\"\\n\";r.innerHTML=T,Q.head.appendChild(r)}t.addMenuStyles=function(t){i||(l(T,t),i=!0,s(t))},t.addInfoStyles=function(t){o||(l(Q,t),o=!0,s(t))}}(e.CssStyles||(e.CssStyles={}))},function(t,e,Q){\"use strict\";Q.r(e);var r=Q(1),T=Q(11),n=Q(29),o=Q(277);Object(r.combineWithMathJax)({_:{components:{loader:T,package:n,startup:o}}}),T.Loader.preLoad(\"loader\",\"startup\",\"core\",\"input/tex-full\",\"output/svg\",\"output/svg/fonts/tex.js\",\"ui/menu\",\"a11y/assistive-mml\");var i=Q(105),a=Q(96),s=Q(106),l=Q(107),c=Q(108),u=Q(118),p=Q(54),h=Q(53),f=Q(14),d=Q(56),L=Q(24),H=Q(111),m=Q(278),y=Q(57),v=Q(0),g=Q(81),b=Q(73),M=Q(114),V=Q(115),x=Q(59),O=Q(116),_=Q(72),S=Q(68),E=Q(71),C=Q(65),w=Q(79),A=Q(38),P=Q(75),N=Q(60),k=Q(31),I=Q(69),R=Q(70),j=Q(67),B=Q(64),D=Q(63),Z=Q(62),F=Q(66),G=Q(113),q=Q(39),W=Q(76),X=Q(78),z=Q(61),U=Q(77),J=Q(74),K=Q(80),$=Q(82),Y=Q(112),tt=Q(83),et=Q(55),Qt=Q(37),rt=Q(58),Tt=Q(110),nt=Q(119),ot=Q(120),it=Q(121),at=Q(279),st=Q(122),lt=Q(125),ct=Q(49),ut=Q(123),pt=Q(124),ht=Q(25),ft=Q(126),dt=Q(18),Lt=Q(117),Ht=Q(19),mt=Q(30),yt=Q(109),vt=Q(7),gt=Q(21),bt=Q(40),Mt=Q(127),Vt=Q(84),xt=Q(32),Ot=Q(128),_t=Q(15);Object(r.combineWithMathJax)({_:{adaptors:{HTMLAdaptor:i,browserAdaptor:a},components:{global:r},core:{DOMAdaptor:s,FindMath:l,Handler:c,HandlerList:u,InputJax:p,MathDocument:h,MathItem:f,MathList:d,MmlTree:{Attributes:L,MML:H,MathMLVisitor:m,MmlFactory:y,MmlNode:v,MmlNodes:{TeXAtom:g,maction:b,maligngroup:M,malignmark:V,math:x,mathchoice:O,menclose:_,merror:S,mfenced:E,mfrac:C,mglyph:w,mi:A,mmultiscripts:P,mn:N,mo:k,mpadded:I,mphantom:R,mroot:j,mrow:B,ms:D,mspace:Z,msqrt:F,mstyle:G,msubsup:q,mtable:W,mtd:X,mtext:z,mtr:U,munderover:J,semantics:K},MmlVisitor:$,OperatorDictionary:Y,SerializedMmlVisitor:tt},OutputJax:et,Tree:{Factory:Qt,Node:rt,NodeFactory:Tt,Visitor:nt,Wrapper:ot,WrapperFactory:it}},handlers:{html_ts:at,html:{HTMLDocument:st,HTMLDomStrings:lt,HTMLHandler:ct,HTMLMathItem:ut,HTMLMathList:pt}},mathjax:ht,util:{AsyncLoad:ft,BBox:dt,BitField:Lt,Entities:Ht,FunctionList:mt,LinkedList:yt,Options:vt,PrioritizedList:gt,Retries:bt,StyleList:Mt,Styles:Vt,lengths:xt,numeric:Ot,string:_t}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"HTMLHandler\",ct.HTMLHandler),MathJax.startup.registerConstructor(\"browserAdaptor\",a.browserAdaptor),MathJax.startup.useHandler(\"HTMLHandler\"),MathJax.startup.useAdaptor(\"browserAdaptor\")),MathJax.loader&&(MathJax._.mathjax.mathjax.asyncLoad=function(t){return MathJax.loader.load(t)});var St,Et=Q(97),Ct=Q(98),wt=Q(2),At=Q(130),Pt=Q(129),Nt=Q(33),kt=Q(41),It=Q(8),Rt=Q(23),jt=Q(86),Bt=Q(9),Dt=Q(85),Zt=Q(22),Ft=Q(131),Gt=Q(26),qt=Q(3),Wt=Q(20),Xt=Q(13),zt=Q(5),Ut=Q(12),Jt=Q(132),Kt=Q(135),$t=Q(136),Yt=Q(133),te=Q(134),ee=Q(34),Qe=Q(280),re=Q(42),Te=Q(27),ne=Q(16),oe=Q(137),ie=Q(138),ae=Q(139),se=Q(140),le=Q(141),ce=Q(142),ue=Q(143),pe=Q(144),he=Q(43),fe=Q(145),de=Q(150),Le=Q(146),He=Q(149),me=Q(147),ye=Q(148),ve=Q(151),ge=Q(87),be=Q(152),Me=Q(154),Ve=Q(155),xe=Q(156),Oe=Q(89),_e=Q(153),Se=Q(88),Ee=Q(44),Ce=Q(157),we=Q(158),Ae=Q(159),Pe=Q(160),Ne=Q(161),ke=Q(91),Ie=Q(162),Re=Q(163),je=Q(90),Be=Q(164),De=Q(165),Ze=Q(166);function Fe(t,e,Q){var T,n,o,i=MathJax.config.tex;if(i&&i.packages){var a=i.packages,s=a.indexOf(t);s>=0&&(a[s]=e),Q&&i[t]&&(Object(r.combineConfig)(i,(T={},n=e,o=i[t],n in T?Object.defineProperty(T,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):T[n]=o,T)),delete i[t])}}function Ge(t,e){(null==e||e>t.length)&&(e=t.length);for(var Q=0,r=new Array(e);Q<e;Q++)r[Q]=t[Q];return r}Object(r.combineWithMathJax)({_:{input:{tex_ts:Et,tex:{AllPackages:Ct,Configuration:wt,FilterUtil:At,FindTeX:Pt,MapHandler:Nt,NodeFactory:kt,NodeUtil:It,ParseMethods:Rt,ParseOptions:jt,ParseUtil:Bt,Stack:Dt,StackItem:Zt,StackItemFactory:Ft,Symbol:Gt,SymbolMap:qt,Tags:Wt,TexConstants:Xt,TexError:zt,TexParser:Ut,action:{ActionConfiguration:Jt},amscd:{AmsCdConfiguration:Kt,AmsCdMethods:$t},ams:{AmsConfiguration:Yt,AmsItems:te,AmsMethods:ee},autoload:{AutoloadConfiguration:Qe},base:{BaseConfiguration:re,BaseItems:Te,BaseMethods:ne},bbox:{BboxConfiguration:oe},boldsymbol:{BoldsymbolConfiguration:ie},braket:{BraketConfiguration:ae,BraketItems:se,BraketMethods:le},bussproofs:{BussproofsConfiguration:ce,BussproofsItems:ue,BussproofsMethods:pe,BussproofsUtil:he},cancel:{CancelConfiguration:fe},colorv2:{ColorV2Configuration:de},color:{ColorConfiguration:Le,ColorConstants:He,ColorMethods:me,ColorUtil:ye},configmacros:{ConfigMacrosConfiguration:ve},enclose:{EncloseConfiguration:ge},extpfeil:{ExtpfeilConfiguration:be},html:{HtmlConfiguration:Me,HtmlMethods:Ve},mhchem:{MhchemConfiguration:xe},newcommand:{NewcommandConfiguration:Oe,NewcommandItems:_e,NewcommandMethods:Se,NewcommandUtil:Ee},noerrors:{NoErrorsConfiguration:Ce},noundefined:{NoUndefinedConfiguration:we},physics:{PhysicsConfiguration:Ae,PhysicsItems:Pe,PhysicsMethods:Ne},require:{RequireConfiguration:ke},tagformat:{TagFormatConfiguration:Ie},textmacros:{TextMacrosConfiguration:Re,TextMacrosMethods:je,TextParser:Be},unicode:{UnicodeConfiguration:De},verb:{VerbConfiguration:Ze}}}}}),T.Loader.preLoad(\"input/tex-base\",\"[tex]/all-packages\",\"[tex]/require\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",Et.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(vt.insert)(MathJax.config.tex,{packages:e})}}([\"require\"].concat(function(t){if(Array.isArray(t))return Ge(t)}(St=Ct.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(St)||function(t,e){if(t){if(\"string\"==typeof t)return Ge(t,e);var Q=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===Q&&t.constructor&&(Q=t.constructor.name),\"Map\"===Q||\"Set\"===Q?Array.from(t):\"Arguments\"===Q||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Q)?Ge(t,e):void 0}}(St)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),Fe(\"amsCd\",\"amscd\",!0),Fe(\"colorV2\",\"colorv2\",!1),Fe(\"configMacros\",\"configmacros\",!1),Fe(\"tagFormat\",\"tagformat\",!0);var qe=Q(28),We=Q(45),Xe=Q(167),ze=Q(168),Ue=Q(169),Je=Q(170),Ke=Q(171),$e=Q(92),Ye=Q(172),tQ=Q(173),eQ=Q(174),QQ=Q(175),rQ=Q(176),TQ=Q(177),nQ=Q(178),oQ=Q(179),iQ=Q(180),aQ=Q(181),sQ=Q(182),lQ=Q(93),cQ=Q(183),uQ=Q(184),pQ=Q(185),hQ=Q(46),fQ=Q(186),dQ=Q(187),LQ=Q(188),HQ=Q(94),mQ=Q(47),yQ=Q(189),vQ=Q(190),gQ=Q(50),bQ=Q(266),MQ=Q(6),VQ=Q(215),xQ=Q(4),OQ=Q(191),_Q=Q(192),SQ=Q(218),EQ=Q(219),CQ=Q(213),wQ=Q(193),AQ=Q(214),PQ=Q(200),NQ=Q(206),kQ=Q(204),IQ=Q(217),RQ=Q(195),jQ=Q(209),BQ=Q(197),DQ=Q(196),ZQ=Q(202),FQ=Q(203),GQ=Q(205),qQ=Q(194),WQ=Q(198),XQ=Q(201),zQ=Q(95),UQ=Q(48),JQ=Q(210),KQ=Q(212),$Q=Q(199),YQ=Q(211),tr=Q(208),er=Q(207),Qr=Q(216);Object(r.combineWithMathJax)({_:{output:{common:{FontData:qe,Notation:We,OutputJax:Xe,Wrapper:ze,WrapperFactory:Ue,Wrappers:{TeXAtom:Je,TextNode:Ke,maction:$e,math:Ye,menclose:tQ,mfenced:eQ,mfrac:QQ,mglyph:rQ,mi:TQ,mmultiscripts:nQ,mn:oQ,mo:iQ,mpadded:aQ,mroot:sQ,mrow:lQ,ms:cQ,mspace:uQ,msqrt:pQ,msubsup:hQ,mtable:fQ,mtd:dQ,mtext:LQ,mtr:HQ,munderover:mQ,scriptbase:yQ,semantics:vQ}},svg_ts:gQ,svg:{FontCache:bQ,FontData:MQ,Notation:VQ,Wrapper:xQ,WrapperFactory:OQ,Wrappers_ts:_Q,Wrappers:{TeXAtom:SQ,TextNode:EQ,maction:CQ,math:wQ,menclose:AQ,merror:PQ,mfenced:NQ,mfrac:kQ,mglyph:IQ,mi:RQ,mmultiscripts:jQ,mn:BQ,mo:DQ,mpadded:ZQ,mphantom:FQ,mroot:GQ,mrow:qQ,ms:WQ,mspace:XQ,msqrt:zQ,msubsup:UQ,mtable:JQ,mtd:KQ,mtext:$Q,mtr:YQ,munderover:tr,scriptbase:er,semantics:Qr}}}}}),MathJax.loader&&Object(r.combineDefaults)(MathJax.config.loader,\"output/svg\",{checkReady:function(){return MathJax.loader.load(\"output/svg/fonts/tex\")}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"svg\",gQ.SVG),MathJax.startup.useOutput(\"svg\"));var rr=Q(221),Tr=Q(223),nr=Q(265),or=Q(224),ir=Q(226),ar=Q(228),sr=Q(230),lr=Q(232),cr=Q(234),ur=Q(236),pr=Q(238),hr=Q(240),fr=Q(242),dr=Q(244),Lr=Q(245),Hr=Q(246),mr=Q(248),yr=Q(250),vr=Q(252),gr=Q(254),br=Q(256),Mr=Q(258),Vr=Q(260),xr=Q(262),Or=Q(264),_r=Q(35),Sr=Q(220),Er=Q(222),Cr=Q(225),wr=Q(227),Ar=Q(229),Pr=Q(231),Nr=Q(233),kr=Q(235),Ir=Q(237),Rr=Q(239),jr=Q(241),Br=Q(243),Dr=Q(247),Zr=Q(249),Fr=Q(251),Gr=Q(253),qr=Q(255),Wr=Q(257),Xr=Q(259),zr=Q(261),Ur=Q(263);if(Object(r.combineWithMathJax)({_:{output:{common:{fonts:{tex:{\"bold-italic\":rr,bold:Tr,delimiters:nr,\"double-struck\":or,\"fraktur-bold\":ir,fraktur:ar,italic:sr,largeop:lr,monospace:cr,normal:ur,\"sans-serif-bold-italic\":pr,\"sans-serif-bold\":hr,\"sans-serif-italic\":fr,\"sans-serif\":dr,\"script-bold\":Lr,script:Hr,smallop:mr,\"tex-calligraphic-bold\":yr,\"tex-calligraphic\":vr,\"tex-mathit\":gr,\"tex-oldstyle-bold\":br,\"tex-oldstyle\":Mr,\"tex-size3\":Vr,\"tex-size4\":xr,\"tex-variant\":Or}}},svg:{fonts:{tex_ts:_r,tex:{\"bold-italic\":Sr,bold:Er,\"fraktur-bold\":Cr,fraktur:wr,italic:Ar,largeop:Pr,monospace:Nr,normal:kr,\"sans-serif-bold-italic\":Ir,\"sans-serif-bold\":Rr,\"sans-serif-italic\":jr,\"sans-serif\":Br,smallop:Dr,\"tex-calligraphic-bold\":Zr,\"tex-calligraphic\":Fr,\"tex-mathit\":Gr,\"tex-oldstyle-bold\":qr,\"tex-oldstyle\":Wr,\"tex-size3\":Xr,\"tex-size4\":zr,\"tex-variant\":Ur}}}}}}),MathJax.startup){var Jr=Object(vt.selectOptionsFromKeys)(MathJax.config.svg||{},_r.TeXFont.OPTIONS);Object(r.combineDefaults)(MathJax.config,\"svg\",{font:new _r.TeXFont(Jr)})}var Kr=Q(267),$r=Q(268),Yr=Q(99),tT=Q(269),eT=Q(270);Object(r.combineWithMathJax)({_:{ui:{menu:{MJContextMenu:Kr,Menu:$r,MenuHandler:Yr,MmlVisitor:tT,SelectableInfo:eT}}}}),MathJax.startup&&\"undefined\"!=typeof window&&MathJax.startup.extendHandler((function(t){return Object(Yr.MenuHandler)(t)}),20);var QT=Q(100);Object(r.combineWithMathJax)({_:{a11y:{\"assistive-mml\":QT}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(QT.AssistiveMmlHandler)(t)}));var rT={tex:\"[mathjax]/input/tex/extensions\",sre:\"[mathjax]/sre/\"+(\"undefined\"==typeof window?\"sre-node\":\"sre_browser\")},TT=[\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/configmacros\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/require\",\"[tex]/tagformat\",\"[tex]/textmacros\",\"[tex]/unicode\",\"[tex]/verb\"],nT={startup:[\"loader\"],\"input/tex\":[\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\",\"[tex]/noundefined\",\"[tex]/require\",\"[tex]/autoload\",\"[tex]/configmacros\"],\"input/tex-full\":[\"input/tex-base\",\"[tex]/all-packages\"].concat(TT),\"[tex]/all-packages\":TT};function oT(t,e){(null==e||e>t.length)&&(e=t.length);for(var Q=0,r=new Array(e);Q<e;Q++)r[Q]=t[Q];return r}Object(r.combineDefaults)(MathJax.config.loader,\"dependencies\",{\"a11y/semantic-enrich\":[\"input/mml\",\"[sre]\"],\"a11y/complexity\":[\"a11y/semantic-enrich\"],\"a11y/explorer\":[\"a11y/semantic-enrich\",\"ui/menu\"],\"[tex]/all-packages\":[\"input/tex-base\"],\"[tex]/action\":[\"input/tex-base\",\"[tex]/newcommand\"],\"[tex]/autoload\":[\"input/tex-base\",\"[tex]/require\"],\"[tex]/ams\":[\"input/tex-base\"],\"[tex]/amscd\":[\"input/tex-base\"],\"[tex]/bbox\":[\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\"],\"[tex]/boldsymbol\":[\"input/tex-base\"],\"[tex]/braket\":[\"input/tex-base\"],\"[tex]/bussproofs\":[\"input/tex-base\"],\"[tex]/cancel\":[\"input/tex-base\",\"[tex]/enclose\"],\"[tex]/color\":[\"input/tex-base\"],\"[tex]/colorv2\":[\"input/tex-base\"],\"[tex]/configmacros\":[\"input/tex-base\",\"[tex]/newcommand\"],\"[tex]/enclose\":[\"input/tex-base\"],\"[tex]/extpfeil\":[\"input/tex-base\",\"[tex]/newcommand\",\"[tex]/ams\"],\"[tex]/html\":[\"input/tex-base\"],\"[tex]/mhchem\":[\"input/tex-base\",\"[tex]/ams\"],\"[tex]/newcommand\":[\"input/tex-base\"],\"[tex]/noerrors\":[\"input/tex-base\"],\"[tex]/noundefined\":[\"input/tex-base\"],\"[tex]/physics\":[\"input/tex-base\"],\"[tex]/require\":[\"input/tex-base\"],\"[tex]/tagformat\":[\"input/tex-base\"],\"[tex]/textmacros\":[\"input/tex-base\"],\"[tex]/unicode\":[\"input/tex-base\"],\"[tex]/verb\":[\"input/tex-base\"]}),Object(r.combineDefaults)(MathJax.config.loader,\"paths\",rT),Object(r.combineDefaults)(MathJax.config.loader,\"provides\",nT),Object(r.combineDefaults)(MathJax.config.loader,\"source\",{\"[tex]/amsCd\":\"[tex]/amscd\",\"[tex]/colorV2\":\"[tex]/colorv2\",\"[tex]/configMacros\":\"[tex]/configmacros\",\"[tex]/tagFormat\":\"[tex]/tagformat\"}),T.Loader.preLoad(\"loader\"),T.Loader.load.apply(T.Loader,function(t){return function(t){if(Array.isArray(t))return oT(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return oT(t,e);var Q=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===Q&&t.constructor&&(Q=t.constructor.name);if(\"Map\"===Q||\"Set\"===Q)return Array.from(t);if(\"Arguments\"===Q||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Q))return oT(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}(T.CONFIG.load)).then((function(){return T.CONFIG.ready()})).catch((function(t){return T.CONFIG.failed(t)}))}]);"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/method.d.ts",
    "content": "import * as adapterRender from \"./ts/markdown/adapterRender\";\ndeclare class Vditor {\n    /** 点击图片放大 */\n    static adapterRender: typeof adapterRender;\n    /** 点击图片放大 */\n    static previewImage: (oldImgElement: HTMLImageElement, lang?: keyof II18n, theme?: string) => void;\n    /** 为 element 中的代码块添加复制按钮 */\n    static codeRender: (element: HTMLElement, option?: IHljs) => void;\n    /** 对 graphviz 进行渲染 */\n    static graphvizRender: (element: HTMLElement, cdn?: string) => void;\n    /** 为 element 中的代码块进行高亮渲染 */\n    static highlightRender: (hljsOption?: IHljs, element?: HTMLElement | Document, cdn?: string) => void;\n    /** 对数学公式进行渲染 */\n    static mathRender: (element?: HTMLElement | Document, options?: {\n        cdn?: string;\n        math?: IMath;\n    }) => void;\n    /** 流程图/时序图/甘特图渲染 */\n    static mermaidRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** 化学物质结构渲染 */\n    static SMILESRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** 支持 markdown 的思维导图 */\n    static markmapRender: (element?: HTMLElement | Document, cdn?: string) => void;\n    /** flowchart.js 渲染 */\n    static flowchartRender: (element: HTMLElement, cdn?: string) => void;\n    /** 图表渲染 */\n    static chartRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** 五线谱渲染 */\n    static abcRender: (element?: HTMLElement | Document, cdn?: string) => void;\n    /** 脑图渲染 */\n    static mindmapRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** plantuml渲染 */\n    static plantumlRender: (element?: HTMLElement | Document, cdn?: string) => void;\n    /** 大纲渲染 */\n    static outlineRender: (contentElement: HTMLElement, targetElement: Element, vditor?: IVditor) => string;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    static mediaRender: (element: HTMLElement) => void;\n    /** 对选中的文字进行阅读 */\n    static speechRender: (element: HTMLElement, lang?: keyof II18n) => void;\n    /** 对图片进行懒加载 */\n    static lazyLoadImageRender: (element?: HTMLElement | Document) => boolean;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    static md2html: (mdText: string, options?: IPreviewOptions) => Promise<string>;\n    /** 页面 Markdown 文章渲染 */\n    static preview: (previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) => Promise<void>;\n    /** 设置代码主题 */\n    static setCodeTheme: (codeTheme: string, cdn?: string) => void;\n    /** 设置内容主题 */\n    static setContentTheme: (contentTheme: string, path: string) => void;\n}\nexport default Vditor;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/method.js",
    "content": "/*!\n * Vditor v3.11.1 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vditor\"] = factory();\n\telse\n\t\troot[\"Vditor\"] = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 145:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"g\": () => (/* binding */ Constants)\n/* harmony export */ });\n/* unused harmony export VDITOR_VERSION */\nvar _VDITOR_VERSION = (/* unused pure expression or super */ null && (\"3.11.1\"));\n\nvar Constants = /** @class */ (function () {\n    function Constants() {\n    }\n    Constants.ZWSP = \"\\u200b\";\n    Constants.DROP_EDITOR = \"application/editor\";\n    Constants.MOBILE_WIDTH = 520;\n    Constants.CLASS_MENU_DISABLED = \"vditor-menu--disabled\";\n    Constants.EDIT_TOOLBARS = [\"emoji\", \"headings\", \"bold\", \"italic\", \"strike\", \"link\", \"list\",\n        \"ordered-list\", \"outdent\", \"indent\", \"check\", \"line\", \"quote\", \"code\", \"inline-code\", \"insert-after\",\n        \"insert-before\", \"upload\", \"record\", \"table\"];\n    Constants.CODE_THEME = [\"a11y-dark\", \"agate\", \"an-old-hope\", \"androidstudio\",\n        \"arta\", \"atom-one-dark\", \"atom-one-dark-reasonable\", \"base16/3024\", \"base16/apathy\", \"base16/apprentice\", \"base16/ashes\", \"base16/atelier-cave\", \"base16/atelier-dune\",\n        \"base16/atelier-estuary\", \"base16/atelier-forest\", \"base16/atelier-heath\", \"base16/atelier-lakeside\", \"base16/atelier-plateau\", \"base16/atelier-savanna\", \"base16/atelier-seaside\", \"base16/atelier-sulphurpool\",\n        \"base16/atlas\", \"base16/bespin\", \"base16/black-metal\", \"base16/black-metal-bathory\", \"base16/black-metal-burzum\", \"base16/black-metal-dark-funeral\", \"base16/black-metal-gorgoroth\", \"base16/black-metal-immortal\", \"base16/black-metal-khold\", \"base16/black-metal-marduk\", \"base16/black-metal-mayhem\", \"base16/black-metal-nile\", \"base16/black-metal-venom\", \"base16/brewer\", \"base16/bright\", \"base16/brogrammer\",\n        \"base16/brush-trees-dark\", \"base16/chalk\", \"base16/circus\", \"base16/classic-dark\", \"base16/codeschool\", \"base16/colors\", \"base16/danqing\", \"base16/darcula\", \"base16/dark-violet\",\n        \"base16/darkmoss\", \"base16/darktooth\", \"base16/decaf\", \"base16/default-dark\", \"base16/dracula\", \"base16/edge-dark\", \"base16/eighties\", \"base16/embers\", \"base16/equilibrium-dark\",\n        \"base16/equilibrium-gray-dark\", \"base16/espresso\", \"base16/eva\", \"base16/eva-dim\", \"base16/flat\", \"base16/framer\", \"base16/gigavolt\", \"base16/google-dark\", \"base16/grayscale-dark\", \"base16/green-screen\", \"base16/gruvbox-dark-hard\", \"base16/gruvbox-dark-medium\",\n        \"base16/gruvbox-dark-pale\", \"base16/gruvbox-dark-soft\", \"base16/hardcore\", \"base16/harmonic16-dark\", \"base16/heetch-dark\", \"base16/helios\", \"base16/hopscotch\", \"base16/horizon-dark\", \"base16/humanoid-dark\", \"base16/ia-dark\", \"base16/icy-dark\", \"base16/ir-black\", \"base16/isotope\",\n        \"base16/kimber\", \"base16/london-tube\", \"base16/macintosh\", \"base16/marrakesh\", \"base16/materia\", \"base16/material\", \"base16/material-darker\", \"base16/material-palenight\", \"base16/material-vivid\",\n        \"base16/mellow-purple\", \"base16/mocha\", \"base16/monokai\", \"base16/nebula\", \"base16/nord\", \"base16/nova\", \"base16/ocean\", \"base16/oceanicnext\", \"base16/onedark\", \"base16/outrun-dark\",\n        \"base16/papercolor-dark\", \"base16/paraiso\", \"base16/pasque\", \"base16/phd\", \"base16/pico\", \"base16/pop\", \"base16/porple\", \"base16/qualia\", \"base16/railscasts\", \"base16/rebecca\",\n        \"base16/ros-pine\", \"base16/ros-pine-moon\", \"base16/sandcastle\", \"base16/seti-ui\", \"base16/silk-dark\", \"base16/snazzy\", \"base16/solar-flare\", \"base16/solarized-dark\", \"base16/spacemacs\", \"base16/summercamp\", \"base16/summerfruit-dark\",\n        \"base16/synth-midnight-terminal-dark\", \"base16/tango\", \"base16/tender\", \"base16/tomorrow-night\", \"base16/twilight\", \"base16/unikitty-dark\", \"base16/vulcan\",\n        \"base16/windows-10\", \"base16/windows-95\", \"base16/windows-high-contrast\", \"base16/windows-nt\", \"base16/woodland\", \"base16/xcode-dusk\", \"base16/zenburn\", \"codepen-embed\", \"dark\",\n        \"devibeans\", \"far\", \"felipec\", \"github-dark\", \"github-dark-dimmed\", \"gml\", \"gradient-dark\", \"hybrid\", \"ir-black\", \"isbl-editor-dark\", \"kimbie-dark\", \"lioshi\",\n        \"monokai\", \"monokai-sublime\", \"night-owl\", \"nnfx-dark\", \"nord\", \"obsidian\", \"panda-syntax-dark\", \"paraiso-dark\", \"pojoaque\", \"qtcreator-dark\", \"rainbow\", \"shades-of-purple\", \"srcery\", \"stackoverflow-dark\",\n        \"sunburst\", \"tomorrow-night-blue\", \"tomorrow-night-bright\", \"tokyo-night-dark\", \"vs2015\", \"xt256\",\n        \"ant-design\",\n        \"a11y-light\", \"arduino-light\", \"ascetic\", \"atom-one-light\", \"base16/atelier-cave-light\",\n        \"base16/atelier-dune-light\", \"base16/atelier-estuary-light\", \"base16/atelier-forest-light\", \"base16/atelier-heath-light\",\n        \"base16/atelier-lakeside-light\", \"base16/atelier-plateau-light\", \"base16/atelier-savanna-light\", \"base16/atelier-seaside-light\", \"base16/atelier-sulphurpool-light\", \"base16/brush-trees\",\n        \"base16/classic-light\", \"base16/cupcake\", \"base16/cupertino\", \"base16/default-light\", \"base16/dirtysea\", \"base16/edge-light\", \"base16/equilibrium-gray-light\", \"base16/equilibrium-light\",\n        \"base16/fruit-soda\", \"base16/github\", \"base16/google-light\", \"base16/grayscale-light\", \"base16/gruvbox-light-hard\", \"base16/gruvbox-light-medium\", \"base16/gruvbox-light-soft\",\n        \"base16/harmonic16-light\", \"base16/heetch-light\", \"base16/humanoid-light\", \"base16/horizon-light\", \"base16/ia-light\", \"base16/material-lighter\", \"base16/mexico-light\",\n        \"base16/one-light\", \"base16/papercolor-light\", \"base16/ros-pine-dawn\", \"base16/sagelight\", \"base16/shapeshifter\",\n        \"base16/silk-light\", \"base16/solar-flare-light\", \"base16/solarized-light\", \"base16/summerfruit-light\", \"base16/synth-midnight-terminal-light\", \"base16/tomorrow\",\n        \"base16/unikitty-light\", \"base16/windows-10-light\", \"base16/windows-95-light\", \"base16/windows-high-contrast-light\", \"brown-paper\", \"base16/windows-nt-light\",\n        \"color-brewer\", \"docco\", \"foundation\", \"github\", \"googlecode\", \"gradient-light\", \"grayscale\", \"idea\", \"intellij-light\", \"isbl-editor-light\", \"kimbie-light\",\n        \"lightfair\", \"magula\", \"mono-blue\", \"nnfx-light\", \"panda-syntax-light\", \"paraiso-light\", \"purebasic\", \"qtcreator-light\", \"routeros\", \"school-book\",\n        \"stackoverflow-light\", \"tokyo-night-light\", \"vs\", \"xcode\", \"default\"];\n    Constants.ALIAS_CODE_LANGUAGES = [\n        // 自定义\n        \"abc\", \"plantuml\", \"mermaid\", \"flowchart\", \"echarts\", \"mindmap\", \"graphviz\", \"math\", \"markmap\", \"smiles\",\n        // 别名\n        \"js\", \"ts\", \"html\", \"toml\", \"c#\", \"bat\"\n    ];\n    Constants.CDN = \"https://unpkg.com/vditor@\".concat(\"3.11.1\");\n    Constants.MARKDOWN_OPTIONS = {\n        autoSpace: false,\n        gfmAutoLink: true,\n        codeBlockPreview: true,\n        fixTermTypo: false,\n        footnotes: true,\n        linkBase: \"\",\n        linkPrefix: \"\",\n        listStyle: false,\n        mark: false,\n        mathBlockPreview: true,\n        paragraphBeginningSpace: false,\n        sanitize: true,\n        toc: false,\n    };\n    Constants.HLJS_OPTIONS = {\n        enable: true,\n        lineNumber: false,\n        defaultLang: \"\",\n        style: \"github\",\n    };\n    Constants.MATH_OPTIONS = {\n        engine: \"KaTeX\",\n        inlineDigit: false,\n        macros: {},\n    };\n    Constants.THEME_OPTIONS = {\n        current: \"light\",\n        list: {\n            \"ant-design\": \"Ant Design\",\n            \"dark\": \"Dark\",\n            \"light\": \"Light\",\n            \"wechat\": \"WeChat\",\n        },\n        path: \"\".concat(Constants.CDN, \"/dist/css/content-theme\"),\n    };\n    return Constants;\n}());\n\n\n\n/***/ }),\n\n/***/ 825:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"J\": () => (/* binding */ SMILESRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\n\n\n\n\nvar SMILESRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var SMILESElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getElements(element);\n    if (SMILESElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/smiles-drawer/smiles-drawer.min.js?v=2.1.7\"), \"vditorAbcjsScript\").then(function () {\n            var sd = new SmiDrawer({}, {});\n            SMILESElements.forEach(function (item) {\n                var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getCode(item).trim();\n                if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                    return;\n                }\n                var id = \"smiles\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();\n                item.innerHTML = \"<svg id=\\\"\".concat(id, \"\\\"></svg>\");\n                sd.draw(code, '#' + id, theme === \"dark\" ? \"dark\" : undefined);\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 135:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Q\": () => (/* binding */ abcRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar abcRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element);\n    if (abcElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/abcjs/abcjs_basic.min.js\"), \"vditorAbcjsScript\").then(function () {\n            abcElements.forEach(function (item) {\n                if (item.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    item.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                if (item.getAttribute(\"data-processed\") === \"true\") {\n                    return;\n                }\n                ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim());\n                item.style.overflowX = \"auto\";\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 840:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mathRenderAdapter\": () => (/* binding */ mathRenderAdapter),\n/* harmony export */   \"SMILESRenderAdapter\": () => (/* binding */ SMILESRenderAdapter),\n/* harmony export */   \"mermaidRenderAdapter\": () => (/* binding */ mermaidRenderAdapter),\n/* harmony export */   \"markmapRenderAdapter\": () => (/* binding */ markmapRenderAdapter),\n/* harmony export */   \"mindmapRenderAdapter\": () => (/* binding */ mindmapRenderAdapter),\n/* harmony export */   \"chartRenderAdapter\": () => (/* binding */ chartRenderAdapter),\n/* harmony export */   \"abcRenderAdapter\": () => (/* binding */ abcRenderAdapter),\n/* harmony export */   \"graphvizRenderAdapter\": () => (/* binding */ graphvizRenderAdapter),\n/* harmony export */   \"flowchartRenderAdapter\": () => (/* binding */ flowchartRenderAdapter),\n/* harmony export */   \"plantumlRenderAdapter\": () => (/* binding */ plantumlRenderAdapter)\n/* harmony export */ });\nvar mathRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-math\"); },\n};\nvar SMILESRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-smiles\"); },\n};\nvar mermaidRenderAdapter = {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-mermaid\"); },\n};\nvar markmapRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-markmap\"); },\n};\nvar mindmapRenderAdapter = {\n    getCode: function (el) { return el.getAttribute(\"data-code\"); },\n    getElements: function (el) { return el.querySelectorAll(\".language-mindmap\"); },\n};\nvar chartRenderAdapter = {\n    getCode: function (el) { return el.innerText; },\n    getElements: function (el) { return el.querySelectorAll(\".language-echarts\"); },\n};\nvar abcRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-abc\"); },\n};\nvar graphvizRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-graphviz\"); },\n};\nvar flowchartRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-flowchart\"); },\n};\nvar plantumlRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-plantuml\"); },\n};\n\n\n/***/ }),\n\n/***/ 775:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"p\": () => (/* binding */ chartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar chartRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element);\n    if (echartsElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js?v=5.5.1\"), \"vditorEchartsScript\").then(function () {\n            echartsElements.forEach(function (e) { return __awaiter(void 0, void 0, void 0, function () {\n                var text, option, error_1;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                                return [2 /*return*/];\n                            }\n                            text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim();\n                            if (!text) {\n                                return [2 /*return*/];\n                            }\n                            _a.label = 1;\n                        case 1:\n                            _a.trys.push([1, 3, , 4]);\n                            if (e.getAttribute(\"data-processed\") === \"true\") {\n                                return [2 /*return*/];\n                            }\n                            return [4 /*yield*/, (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .looseJsonParse */ .Qf)(text)];\n                        case 2:\n                            option = _a.sent();\n                            echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption(option);\n                            e.setAttribute(\"data-processed\", \"true\");\n                            return [3 /*break*/, 4];\n                        case 3:\n                            error_1 = _a.sent();\n                            e.className = \"vditor-reset--error\";\n                            e.innerHTML = \"echarts render error: <br>\".concat(error_1);\n                            return [3 /*break*/, 4];\n                        case 4: return [2 /*return*/];\n                    }\n                });\n            }); });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 428:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"O\": () => (/* binding */ codeRender)\n/* harmony export */ });\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n\n\nvar codeRender = function (element, option) {\n    Array.from(element.querySelectorAll(\"pre > code\")).filter(function (e, index) {\n        if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n            e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n            return false;\n        }\n        if (e.classList.contains(\"language-mermaid\") || e.classList.contains(\"language-flowchart\") ||\n            e.classList.contains(\"language-echarts\") || e.classList.contains(\"language-mindmap\") ||\n            e.classList.contains(\"language-plantuml\") || e.classList.contains(\"language-markmap\") ||\n            e.classList.contains(\"language-abc\") || e.classList.contains(\"language-graphviz\") ||\n            e.classList.contains(\"language-math\") || e.classList.contains(\"language-smiles\")) {\n            return false;\n        }\n        if (e.style.maxHeight.indexOf(\"px\") > -1) {\n            return false;\n        }\n        // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67\n        if (element.classList.contains(\"vditor-preview\") && index > 5) {\n            return false;\n        }\n        return true;\n    }).forEach(function (e) {\n        var _a, _b, _c;\n        var codeText = e.innerText;\n        if (e.classList.contains(\"highlight-chroma\")) {\n            var codeElement = e.cloneNode(true);\n            codeElement.querySelectorAll(\".highlight-ln\").forEach(function (item) {\n                item.remove();\n            });\n            codeText = codeElement.innerText;\n        }\n        else if (codeText.endsWith(\"\\n\")) {\n            codeText = codeText.substr(0, codeText.length - 1);\n        }\n        var iconHTML = '<svg><use xlink:href=\"#vditor-icon-copy\"></use></svg>';\n        if (!document.getElementById(\"vditorIconScript\")) {\n            iconHTML = '<svg viewBox=\"0 0 32 32\"><path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path></svg>';\n        }\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-copy\";\n        divElement.innerHTML = \"<span aria-label=\\\"\".concat(((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copy) || \"复制\", \"\\\"\\nonmouseover=\\\"this.setAttribute('aria-label', '\").concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.copy) || \"复制\", \"')\\\"\\nclass=\\\"vditor-tooltipped vditor-tooltipped__w\\\"\\nonclick=\\\"event.stopPropagation();this.previousElementSibling.select();document.execCommand('copy');this.setAttribute('aria-label', '\").concat(((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copied) || \"已复制\", \"');this.previousElementSibling.blur()\\\">\").concat(iconHTML, \"</span>\");\n        var textarea = document.createElement(\"textarea\");\n        textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);\n        divElement.insertAdjacentElement(\"afterbegin\", textarea);\n        if (option && option.renderMenu) {\n            option.renderMenu(e, divElement);\n        }\n        e.before(divElement);\n        e.style.maxHeight = (window.outerHeight - 40) + \"px\";\n        // https://github.com/Vanessa219/vditor/issues/1356\n        e.insertAdjacentHTML(\"afterend\", \"<span style=\\\"position: absolute\\\">\".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, \"</span>\"));\n    });\n};\n\n\n/***/ }),\n\n/***/ 325:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ flowchartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar flowchartRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element);\n    if (flowchartElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/flowchart.js/flowchart.min.js\"), \"vditorFlowchartScript\").then(function () {\n        flowchartElements.forEach(function (item) {\n            if (item.getAttribute(\"data-processed\") === \"true\") {\n                return;\n            }\n            var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item));\n            item.innerHTML = \"\";\n            flowchartObj.drawSVG(item);\n            item.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 483:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"v\": () => (/* binding */ graphvizRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar graphvizRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element);\n    if (graphvizElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/graphviz/viz.js\"), \"vditorGraphVizScript\").then(function () {\n        graphvizElements.forEach(function (e) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e);\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            if (e.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            try {\n                var blob = new Blob([\"importScripts('\".concat(document.getElementById(\"vditorGraphVizScript\").src.replace(\"viz.js\", \"full.render.js\"), \"');\")], { type: \"application/javascript\" });\n                var url = window.URL || window.webkitURL;\n                var blobUrl = url.createObjectURL(blob);\n                var worker = new Worker(blobUrl);\n                new Viz({ worker: worker })\n                    .renderSVGElement(code).then(function (result) {\n                    e.innerHTML = result.outerHTML;\n                }).catch(function (error) {\n                    e.innerHTML = \"graphviz render error: <br>\".concat(error);\n                    e.className = \"vditor-reset--error\";\n                });\n            }\n            catch (e) {\n                console.error(\"graphviz error\", e);\n            }\n            e.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 999:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"s\": () => (/* binding */ highlightRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);\n\n\n\nvar highlightRender = function (hljsOption, element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var style = hljsOption.style;\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) {\n        style = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".min.css\");\n    if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n    }\n    (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(\"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".min.css\"), \"vditorHljsStyle\");\n    if (hljsOption.enable === false) {\n        return;\n    }\n    var codes = element.querySelectorAll(\"pre > code\");\n    if (codes.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/highlight.min.js?v=11.7.0\"), \"vditorHljsScript\").then(function () {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/third-languages.js?v=1.0.1\"), \"vditorHljsThirdScript\").then(function () {\n            element.querySelectorAll(\"pre > code\").forEach(function (block) {\n                // ir & wysiwyg 区域不渲染\n                if (block.parentElement.classList.contains(\"vditor-ir__marker--pre\") ||\n                    block.parentElement.classList.contains(\"vditor-wysiwyg__pre\")) {\n                    return;\n                }\n                if (block.classList.contains(\"language-mermaid\") || block.classList.contains(\"language-flowchart\") ||\n                    block.classList.contains(\"language-echarts\") || block.classList.contains(\"language-mindmap\") ||\n                    block.classList.contains(\"language-plantuml\") || block.classList.contains(\"language-smiles\") ||\n                    block.classList.contains(\"language-abc\") || block.classList.contains(\"language-graphviz\") ||\n                    block.classList.contains(\"language-math\")) {\n                    return;\n                }\n                if (hljsOption.defaultLang !== \"\" && block.className.indexOf(\"language-\") === -1) {\n                    block.classList.add(\"language-\" + hljsOption.defaultLang);\n                }\n                var language = block.className.replace(\"language-\", \"\");\n                if (!window.hljs.getLanguage(language)) {\n                    language = \"plaintext\";\n                }\n                block.innerHTML = window.hljs.highlight(block.textContent, {\n                    language: language,\n                    ignoreIllegals: true\n                }).value;\n                block.classList.add(\"hljs\");\n                if (!hljsOption.lineNumber) {\n                    return;\n                }\n                block.classList.add(\"vditor-linenumber\");\n                var linenNumberTemp = block.querySelector(\".vditor-linenumber__temp\");\n                if (!linenNumberTemp) {\n                    linenNumberTemp = document.createElement(\"div\");\n                    linenNumberTemp.className = \"vditor-linenumber__temp\";\n                    block.insertAdjacentElement(\"beforeend\", linenNumberTemp);\n                }\n                var whiteSpace = getComputedStyle(block).whiteSpace;\n                var isSoftWrap = false;\n                if (whiteSpace === \"pre-wrap\" || whiteSpace === \"pre-line\") {\n                    isSoftWrap = true;\n                }\n                var lineNumberHTML = \"\";\n                var lineList = block.textContent.split(/\\r\\n|\\r|\\n/g);\n                lineList.pop();\n                lineList.map(function (line) {\n                    var lineHeight = \"\";\n                    if (isSoftWrap) {\n                        linenNumberTemp.textContent = line || \"\\n\";\n                        lineHeight = \" style=\\\"height:\".concat(linenNumberTemp.getBoundingClientRect().height, \"px\\\"\");\n                    }\n                    lineNumberHTML += \"<span\".concat(lineHeight, \"></span>\");\n                });\n                linenNumberTemp.style.display = \"none\";\n                lineNumberHTML = \"<span class=\\\"vditor-linenumber__rows\\\">\".concat(lineNumberHTML, \"</span>\");\n                block.insertAdjacentHTML(\"beforeend\", lineNumberHTML);\n            });\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 11:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"K\": () => (/* binding */ markmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar enabled = {};\nvar transform = function (transformer, content) {\n    var result = transformer.transform(content);\n    var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; });\n    keys.forEach(function (key) {\n        enabled[key] = true;\n    });\n    var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts;\n    var markmap = window.markmap;\n    if (styles)\n        markmap.loadCSS(styles);\n    if (scripts)\n        markmap.loadJS(scripts);\n    return result;\n};\nvar init = function (el, code) {\n    var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS;\n    var transformer = new Transformer();\n    el.innerHTML = '<svg style=\"width:100%\"></svg>';\n    var svg = el.firstChild;\n    var mm = Markmap.create(svg, null);\n    var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter;\n    var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap;\n    var frontmatterOptions = deriveOptions(markmapOptions);\n    mm.setData(root, frontmatterOptions);\n    mm.fit();\n};\nvar markmapRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element);\n    if (markmapElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/markmap/markmap.min.js\"), \"vditorMarkerScript\").then(function () {\n        markmapElements.forEach(function (item) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item);\n            if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            var render = document.createElement(\"div\");\n            render.className = \"language-markmap\";\n            item.parentNode.appendChild(render);\n            init(render, code);\n            if (item.parentNode.childNodes[0].nodeName == \"CODE\") {\n                item.parentNode.removeChild(item.parentNode.childNodes[0]);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 472:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ mathRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(413);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(290);\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(105);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\n\n\nvar mathRender = function (element, options) {\n    if (element === void 0) { element = document; }\n    var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element);\n    if (mathElements.length === 0) {\n        return;\n    }\n    var defaultOptions = {\n        cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN,\n        math: {\n            engine: \"KaTeX\",\n            inlineDigit: false,\n            macros: {},\n        },\n    };\n    if (options && options.math) {\n        options.math =\n            Object.assign({}, defaultOptions.math, options.math);\n    }\n    options = Object.assign({}, defaultOptions, options);\n    if (options.math.engine === \"KaTeX\") {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_2__/* .addStyle */ .c)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.css?v=0.16.9\"), \"vditorKatexStyle\");\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.js?v=0.16.9\"), \"vditorKatexScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/mhchem.min.js?v=0.16.9\"), \"vditorKatexChemScript\").then(function () {\n                mathElements.forEach(function (mathElement) {\n                    if (mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                        mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                        return;\n                    }\n                    if (mathElement.getAttribute(\"data-math\")) {\n                        return;\n                    }\n                    var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement));\n                    mathElement.setAttribute(\"data-math\", math);\n                    try {\n                        mathElement.innerHTML = katex.renderToString(math, {\n                            displayMode: mathElement.tagName === \"DIV\",\n                            output: \"html\",\n                            macros: options.math.macros,\n                        });\n                    }\n                    catch (e) {\n                        mathElement.innerHTML = e.message;\n                        mathElement.className = \"language-math vditor-reset--error\";\n                    }\n                    mathElement.addEventListener(\"copy\", function (event) {\n                        event.stopPropagation();\n                        event.preventDefault();\n                        var vditorMathElement = event.currentTarget.closest(\".language-math\");\n                        event.clipboardData.setData(\"text/html\", vditorMathElement.innerHTML);\n                        event.clipboardData.setData(\"text/plain\", vditorMathElement.getAttribute(\"data-math\"));\n                    });\n                });\n            });\n        });\n    }\n    else if (options.math.engine === \"MathJax\") {\n        var chainAsync_1 = function (fns) {\n            if (fns.length === 0) {\n                return;\n            }\n            var curr = 0;\n            var last = fns[fns.length - 1];\n            var next = function () {\n                var fn = fns[curr++];\n                fn === last ? fn() : fn(next);\n            };\n            next();\n        };\n        if (!window.MathJax) {\n            window.MathJax = {\n                loader: {\n                    paths: { mathjax: \"\".concat(options.cdn, \"/dist/js/mathjax\") },\n                },\n                startup: {\n                    typeset: false,\n                },\n                tex: {\n                    macros: options.math.macros,\n                },\n            };\n            // https://github.com/Vanessa219/vditor/issues/1453\n            Object.assign(window.MathJax, options.math.mathJaxOptions);\n        }\n        // 循环加载会抛异常\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScriptSync */ .J)(\"\".concat(options.cdn, \"/dist/js/mathjax/tex-svg-full.js\"), \"protyleMathJaxScript\");\n        var renderMath_1 = function (mathElement, next) {\n            var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim();\n            var mathOptions = window.MathJax.getMetricsFor(mathElement);\n            mathOptions.display = mathElement.tagName === \"DIV\";\n            window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) {\n                mathElement.innerHTML = \"\";\n                mathElement.setAttribute(\"data-math\", math);\n                mathElement.append(node);\n                window.MathJax.startup.document.clear();\n                window.MathJax.startup.document.updateDocument();\n                var errorTextElement = node.querySelector('[data-mml-node=\"merror\"]');\n                if (errorTextElement && errorTextElement.textContent.trim() !== \"\") {\n                    mathElement.innerHTML = errorTextElement.textContent.trim();\n                    mathElement.className = \"vditor-reset--error\";\n                }\n                if (next) {\n                    next();\n                }\n            });\n        };\n        window.MathJax.startup.promise.then(function () {\n            var chains = [];\n            var _loop_1 = function (i) {\n                var mathElement = mathElements[i];\n                if (!mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") &&\n                    !mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\") &&\n                    !mathElement.getAttribute(\"data-math\") && (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim()) {\n                    chains.push(function (next) {\n                        if (i === mathElements.length - 1) {\n                            renderMath_1(mathElement);\n                        }\n                        else {\n                            renderMath_1(mathElement, next);\n                        }\n                    });\n                }\n            };\n            for (var i = 0; i < mathElements.length; i++) {\n                _loop_1(i);\n            }\n            chainAsync_1(chains);\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 280:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ mediaRender)\n/* harmony export */ });\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(494);\n\nvar videoRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<video controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></video>\"));\n    element.remove();\n};\nvar audioRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<audio controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></audio>\"));\n    element.remove();\n};\nvar iframeRender = function (element, url) {\n    var youtubeMatch = url.match(/\\/\\/(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?/);\n    var youkuMatch = url.match(/\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/);\n    var qqMatch = url.match(/\\/\\/v\\.qq\\.com\\/x\\/cover\\/.*\\/([^\\/]+)\\.html\\??.*/);\n    var coubMatch = url.match(/(?:www\\.|\\/\\/)coub\\.com\\/view\\/(\\w+)/);\n    var facebookMatch = url.match(/(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/);\n    var dailymotionMatch = url.match(/.+dailymotion.com\\/(video|hub)\\/(\\w+)\\?/);\n    var bilibiliMatch = url.match(/(?:www\\.|\\/\\/)bilibili\\.com\\/video\\/(\\w+)/);\n    var tedMatch = url.match(/(?:www\\.|\\/\\/)ted\\.com\\/talks\\/(\\w+)/);\n    if (youtubeMatch && youtubeMatch[1].length === 11) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//www.youtube.com/embed/\".concat(youtubeMatch[1] +\n            (youtubeMatch[2] ? \"?start=\" + youtubeMatch[2] : \"\"), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (youkuMatch && youkuMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//player.youku.com/embed/\".concat(youkuMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (qqMatch && qqMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"https://v.qq.com/txp/iframe/player.html?vid=\".concat(qqMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (coubMatch && coubMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"//coub.com/embed/\".concat(coubMatch[1], \"?muted=false&autostart=false&originalSize=true&startWithHD=true\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (facebookMatch && facebookMatch[0]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.facebook.com/plugins/video.php?href=\".concat(encodeURIComponent(facebookMatch[0]), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (dailymotionMatch && dailymotionMatch[2]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.dailymotion.com/embed/video/\".concat(dailymotionMatch[2], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (url.indexOf(\"bilibili.com\") > -1 && (url.indexOf(\"bvid=\") > -1 || (bilibiliMatch && bilibiliMatch[1]))) {\n        var params_1 = {\n            bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .on)(\"bvid\", url) || (bilibiliMatch && bilibiliMatch[1]),\n            page: \"1\",\n            high_quality: \"1\",\n            as_wide: \"1\",\n            allowfullscreen: \"true\",\n            autoplay: \"0\"\n        };\n        new URL(url.startsWith(\"http\") ? url : \"https:\" + url).search.split(\"&\").forEach(function (item, index) {\n            if (!item) {\n                return;\n            }\n            if (index === 0) {\n                item = item.substr(1);\n            }\n            var keyValue = item.split(\"=\");\n            params_1[keyValue[0]] = keyValue[1];\n        });\n        var src_1 = \"https://player.bilibili.com/player.html?\";\n        var keys_1 = Object.keys(params_1);\n        keys_1.forEach(function (key, index) {\n            src_1 += \"\".concat(key, \"=\").concat(params_1[key]);\n            if (index < keys_1.length - 1) {\n                src_1 += \"&\";\n            }\n        });\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"\".concat(src_1, \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (tedMatch && tedMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//embed.ted.com/talks/\".concat(tedMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n};\nvar mediaRender = function (element) {\n    if (!element) {\n        return;\n    }\n    element.querySelectorAll(\"a\").forEach(function (aElement) {\n        var url = aElement.getAttribute(\"href\");\n        if (!url) {\n            return;\n        }\n        if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) {\n            videoRender(aElement, url);\n        }\n        else if (url.match(/^.+.(mp3|wav|flac)$/)) {\n            audioRender(aElement, url);\n        }\n        else {\n            iframeRender(aElement, url);\n        }\n    });\n};\n\n\n/***/ }),\n\n/***/ 637:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"i\": () => (/* binding */ mermaidRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar mermaidRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mermaidElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getElements(element);\n    if (mermaidElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/mermaid/mermaid.min.js?v=11.6.0\"), \"vditorMermaidScript\").then(function () {\n        var config = {\n            securityLevel: \"loose\",\n            altFontFamily: \"sans-serif\",\n            fontFamily: \"sans-serif\",\n            startOnLoad: false,\n            flowchart: {\n                htmlLabels: true,\n                useMaxWidth: !0\n            },\n            sequence: {\n                useMaxWidth: true,\n                diagramMarginX: 8,\n                diagramMarginY: 8,\n                boxMargin: 8,\n                showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers\n            },\n            gantt: {\n                leftPadding: 75,\n                rightPadding: 20\n            }\n        };\n        if (theme === \"dark\") {\n            config.theme = \"dark\";\n        }\n        mermaid.initialize(config);\n        mermaidElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {\n            var code, id, mermaidData, e_1, errorElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getCode(item);\n                        if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                            return [2 /*return*/];\n                        }\n                        id = \"mermaid\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, mermaid.render(id, item.textContent)];\n                    case 2:\n                        mermaidData = _a.sent();\n                        item.innerHTML = mermaidData.svg;\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        errorElement = document.querySelector(\"#\" + id);\n                        item.innerHTML = \"\".concat(errorElement.outerHTML, \"<br>\\n<div style=\\\"text-align: left\\\"><small>\").concat(e_1.message.replace(/\\n/, \"<br>\"), \"</small></div>\");\n                        errorElement.parentElement.remove();\n                        return [3 /*break*/, 4];\n                    case 4:\n                        item.setAttribute(\"data-processed\", \"true\");\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n    });\n};\n\n\n/***/ }),\n\n/***/ 194:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ mindmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar mindmapRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mindmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getElements(element);\n    if (mindmapElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js?v=5.5.1\"), \"vditorEchartsScript\").then(function () {\n            mindmapElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getCode(e);\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption({\n                        series: [\n                            {\n                                data: [JSON.parse(decodeURIComponent(text))],\n                                initialTreeDepth: -1,\n                                itemStyle: {\n                                    borderWidth: 0,\n                                    color: \"#4285f4\",\n                                },\n                                label: {\n                                    backgroundColor: \"#f6f8fa\",\n                                    borderColor: \"#d1d5da\",\n                                    borderRadius: 5,\n                                    borderWidth: 0.5,\n                                    color: \"#586069\",\n                                    lineHeight: 20,\n                                    offset: [-5, 0],\n                                    padding: [0, 5],\n                                    position: \"insideRight\",\n                                },\n                                lineStyle: {\n                                    color: \"#d1d5da\",\n                                    width: 1,\n                                },\n                                roam: true,\n                                symbol: function (value, params) {\n                                    var _a;\n                                    if ((_a = params === null || params === void 0 ? void 0 : params.data) === null || _a === void 0 ? void 0 : _a.children) {\n                                        return \"circle\";\n                                    }\n                                    else {\n                                        return \"path://\";\n                                    }\n                                },\n                                type: \"tree\",\n                            },\n                        ],\n                        tooltip: {\n                            trigger: \"item\",\n                            triggerOn: \"mousemove\",\n                        },\n                    });\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"mindmap render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 436:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"k\": () => (/* binding */ outlineRender)\n/* harmony export */ });\n/* harmony import */ var _util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(771);\n/* harmony import */ var _mathRender__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(472);\n\n\nvar outlineRender = function (contentElement, targetElement, vditor) {\n    var tocHTML = \"\";\n    var ids = [];\n    Array.from(contentElement.children).forEach(function (item, index) {\n        if ((0,_util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByHeadings */ .W)(item)) {\n            if (vditor) {\n                var lastIndex = item.id.lastIndexOf(\"_\");\n                item.id = item.id.substring(0, lastIndex === -1 ? undefined : lastIndex) + \"_\" + index;\n            }\n            ids.push(item.id);\n            tocHTML += item.outerHTML.replace(\"<wbr>\", \"\");\n        }\n    });\n    if (tocHTML === \"\") {\n        targetElement.innerHTML = \"\";\n        return \"\";\n    }\n    var tempElement = document.createElement(\"div\");\n    if (vditor) {\n        vditor.lute.SetToC(true);\n        if (vditor.currentMode === \"wysiwyg\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else if (vditor.currentMode === \"ir\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else {\n            tempElement.innerHTML = vditor.lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        vditor.lute.SetToC(vditor.options.preview.markdown.toc);\n    }\n    else {\n        targetElement.classList.add(\"vditor-outline\");\n        var lute = Lute.New();\n        lute.SetToC(true);\n        tempElement.innerHTML = lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n    }\n    var headingsElement = tempElement.firstElementChild.querySelectorAll(\"li > span[data-target-id]\");\n    headingsElement.forEach(function (item, index) {\n        if (item.nextElementSibling && item.nextElementSibling.tagName === \"UL\") {\n            var iconHTML = \"<svg class='vditor-outline__action'><use xlink:href='#vditor-icon-down'></use></svg>\";\n            if (!document.getElementById(\"vditorIconScript\")) {\n                iconHTML = '<svg class=\"vditor-outline__action\" viewBox=\"0 0 32 32\"><path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path></svg>';\n            }\n            item.innerHTML = \"\".concat(iconHTML, \"<span>\").concat(item.innerHTML, \"</span>\");\n        }\n        else {\n            item.innerHTML = \"<svg></svg><span>\".concat(item.innerHTML, \"</span>\");\n        }\n        item.setAttribute(\"data-target-id\", ids[index]);\n    });\n    tocHTML = tempElement.firstElementChild.innerHTML;\n    if (headingsElement.length === 0) {\n        targetElement.innerHTML = \"\";\n        return tocHTML;\n    }\n    targetElement.innerHTML = tocHTML;\n    if (vditor) {\n        (0,_mathRender__WEBPACK_IMPORTED_MODULE_0__/* .mathRender */ .H)(targetElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    }\n    targetElement.firstElementChild.addEventListener(\"click\", function (event) {\n        var target = event.target;\n        while (target && !target.isEqualNode(targetElement)) {\n            if (target.classList.contains(\"vditor-outline__action\")) {\n                if (target.classList.contains(\"vditor-outline__action--close\")) {\n                    target.classList.remove(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:block\");\n                }\n                else {\n                    target.classList.add(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            }\n            else if (target.getAttribute(\"data-target-id\")) {\n                event.preventDefault();\n                event.stopPropagation();\n                var idElement = document.getElementById(target.getAttribute(\"data-target-id\"));\n                if (!idElement) {\n                    return;\n                }\n                if (vditor) {\n                    if (vditor.options.height === \"auto\") {\n                        var windowScrollY = idElement.offsetTop + vditor.element.offsetTop;\n                        if (!vditor.options.toolbarConfig.pin) {\n                            windowScrollY += vditor.toolbar.element.offsetHeight;\n                        }\n                        window.scrollTo(window.scrollX, windowScrollY);\n                    }\n                    else {\n                        if (vditor.element.offsetTop < window.scrollY) {\n                            window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                        }\n                        if (vditor.preview.element.contains(contentElement)) {\n                            contentElement.parentElement.scrollTop = idElement.offsetTop;\n                        }\n                        else {\n                            contentElement.scrollTop = idElement.offsetTop;\n                        }\n                    }\n                }\n                else {\n                    window.scrollTo(window.scrollX, idElement.offsetTop);\n                }\n                break;\n            }\n            target = target.parentElement;\n        }\n    });\n    return tocHTML;\n};\n\n\n/***/ }),\n\n/***/ 229:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"B\": () => (/* binding */ plantumlRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);\n\n\n\nvar plantumlRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var plantumlElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getElements(element);\n    if (plantumlElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/plantuml/plantuml-encoder.min.js\"), \"vditorPlantumlScript\").then(function () {\n        plantumlElements.forEach(function (e) {\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getCode(e).trim();\n            if (!text) {\n                return;\n            }\n            try {\n                e.innerHTML = \"<object type=\\\"image/svg+xml\\\" data=\\\"https://www.plantuml.com/plantuml/svg/~1\".concat(plantumlEncoder.encode(text), \"\\\"/>\");\n            }\n            catch (error) {\n                e.className = \"vditor-reset--error\";\n                e.innerHTML = \"plantuml render error: <br>\".concat(error);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 214:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ setLute)\n/* harmony export */ });\nvar setLute = function (options) {\n    var lute = Lute.New();\n    lute.PutEmojis(options.emojis);\n    lute.SetEmojiSite(options.emojiSite);\n    lute.SetHeadingAnchor(options.headingAnchor);\n    lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);\n    lute.SetAutoSpace(options.autoSpace);\n    lute.SetToC(options.toc);\n    lute.SetFootnotes(options.footnotes);\n    lute.SetFixTermTypo(options.fixTermTypo);\n    lute.SetVditorCodeBlockPreview(options.codeBlockPreview);\n    lute.SetVditorMathBlockPreview(options.mathBlockPreview);\n    lute.SetSanitize(options.sanitize);\n    lute.SetChineseParagraphBeginningSpace(options.paragraphBeginningSpace);\n    lute.SetRenderListStyle(options.listStyle);\n    lute.SetLinkBase(options.linkBase);\n    lute.SetLinkPrefix(options.linkPrefix);\n    lute.SetMark(options.mark);\n    lute.SetGFMAutoLink(options.gfmAutoLink);\n    if (options.lazyLoadImage) {\n        lute.SetImageLazyLoading(options.lazyLoadImage);\n    }\n    return lute;\n};\n\n\n/***/ }),\n\n/***/ 190:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"E\": () => (/* binding */ previewImage)\n/* harmony export */ });\nvar previewImage = function (oldImgElement, lang, theme) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (theme === void 0) { theme = \"classic\"; }\n    var oldImgRect = oldImgElement.getBoundingClientRect();\n    var height = 36;\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div class=\\\"vditor vditor-img\".concat(theme === \"dark\" ? \" vditor--dark\" : \"\", \"\\\">\\n    <div class=\\\"vditor-img__bar\\\">\\n      <span class=\\\"vditor-img__btn\\\" data-deg=\\\"0\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-redo\\\"></use></svg>\\n        \").concat(window.VditorI18n.spin, \"\\n      </span>\\n      <span class=\\\"vditor-img__btn\\\"  onclick=\\\"this.parentElement.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n        X &nbsp;\").concat(window.VditorI18n.close, \"\\n      </span>\\n    </div>\\n    <div class=\\\"vditor-img__img\\\" onclick=\\\"this.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n      <img style=\\\"width: \").concat(oldImgElement.width, \"px;height:\").concat(oldImgElement.height, \"px;transform: translate3d(\").concat(oldImgRect.left, \"px, \").concat(oldImgRect.top - height, \"px, 0)\\\" src=\\\"\").concat(oldImgElement.getAttribute(\"src\"), \"\\\">\\n    </div>\\n</div>\"));\n    document.body.style.overflow = \"hidden\";\n    // 图片从原始位置移动到预览正中间的动画效果\n    var imgElement = document.querySelector(\".vditor-img img\");\n    var translate3d = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2, \"px, 0)\");\n    setTimeout(function () {\n        imgElement.setAttribute(\"style\", \"transition: transform .3s ease-in-out;transform: \".concat(translate3d));\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n    // 旋转\n    var btnElement = document.querySelector(\".vditor-img__btn\");\n    btnElement.addEventListener(\"click\", function () {\n        var deg = parseInt(btnElement.getAttribute(\"data-deg\"), 10) + 90;\n        if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) {\n            imgElement.style.transform = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2, \"px, 0) rotateZ(\").concat(deg, \"deg)\");\n        }\n        else {\n            imgElement.style.transform = \"\".concat(translate3d, \" rotateZ(\").concat(deg, \"deg)\");\n        }\n        btnElement.setAttribute(\"data-deg\", deg.toString());\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n};\n\n\n/***/ }),\n\n/***/ 580:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ setCodeTheme)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);\n\n\nvar setCodeTheme = function (codeTheme, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(codeTheme)) {\n        codeTheme = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(codeTheme, \".min.css\");\n    if (!vditorHljsStyle) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n    else if (vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 538:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": () => (/* binding */ setContentTheme)\n/* harmony export */ });\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(290);\n\nvar setContentTheme = function (contentTheme, path) {\n    if (!contentTheme || !path) {\n        return;\n    }\n    var vditorContentTheme = document.getElementById(\"vditorContentTheme\");\n    var cssPath = \"\".concat(path, \"/\").concat(contentTheme, \".css\");\n    if (!vditorContentTheme) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n    else if (vditorContentTheme.getAttribute(\"href\") !== cssPath) {\n        vditorContentTheme.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 413:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"J\": () => (/* binding */ addScriptSync),\n/* harmony export */   \"G\": () => (/* binding */ addScript)\n/* harmony export */ });\nvar addScriptSync = function (path, id) {\n    if (document.getElementById(id)) {\n        return false;\n    }\n    var xhrObj = new XMLHttpRequest();\n    xhrObj.open(\"GET\", path, false);\n    xhrObj.setRequestHeader(\"Accept\", \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01\");\n    xhrObj.send(\"\");\n    var scriptElement = document.createElement(\"script\");\n    scriptElement.type = \"text/javascript\";\n    scriptElement.text = xhrObj.responseText;\n    scriptElement.id = id;\n    document.head.appendChild(scriptElement);\n};\nvar addScript = function (path, id) {\n    return new Promise(function (resolve, reject) {\n        if (document.getElementById(id)) {\n            // 脚本加载后再次调用直接返回\n            resolve(true);\n            return false;\n        }\n        var scriptElement = document.createElement(\"script\");\n        scriptElement.src = path;\n        scriptElement.async = true;\n        // 循环调用时 Chrome 不会重复请求 js\n        document.head.appendChild(scriptElement);\n        scriptElement.onerror = function (event) {\n            reject(event);\n        };\n        scriptElement.onload = function () {\n            if (document.getElementById(id)) {\n                // 循环调用需清除 DOM 中的 script 标签\n                scriptElement.remove();\n                resolve(true);\n                return false;\n            }\n            scriptElement.id = id;\n            resolve(true);\n        };\n    });\n};\n\n\n/***/ }),\n\n/***/ 290:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"c\": () => (/* binding */ addStyle)\n/* harmony export */ });\nvar addStyle = function (url, id) {\n    if (!document.getElementById(id)) {\n        var styleElement = document.createElement(\"link\");\n        styleElement.id = id;\n        styleElement.rel = \"stylesheet\";\n        styleElement.type = \"text/css\";\n        styleElement.href = url;\n        document.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n    }\n};\n\n\n/***/ }),\n\n/***/ 105:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ code160to32)\n/* harmony export */ });\nvar code160to32 = function (text) {\n    // 非打断空格转换为空格\n    return text.replace(/\\u00a0/g, \" \");\n};\n\n\n/***/ }),\n\n/***/ 494:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Wb\": () => (/* binding */ genUUID),\n/* harmony export */   \"on\": () => (/* binding */ getSearch),\n/* harmony export */   \"Qf\": () => (/* binding */ looseJsonParse)\n/* harmony export */ });\nvar genUUID = function () { return ([1e7].toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {\n    return (parseInt(c, 10) ^ (window.crypto.getRandomValues(new Uint32Array(1))[0] & (15 >> (parseInt(c, 10) / 4)))).toString(16);\n}); };\nvar getSearch = function (key, link) {\n    if (link === void 0) { link = window.location.search; }\n    var params = link.substring(link.indexOf(\"?\"));\n    var hashIndex = params.indexOf(\"#\");\n    // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams\n    var urlSearchParams = new URLSearchParams(params.substring(0, hashIndex >= 0 ? hashIndex : undefined));\n    return urlSearchParams.get(key);\n};\nvar looseJsonParse = function (text) {\n    return Function(\"\\\"use strict\\\";return (\".concat(text, \")\"))();\n};\n\n\n/***/ }),\n\n/***/ 106:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"lG\": () => (/* binding */ hasClosestByMatchTag),\n/* harmony export */   \"fb\": () => (/* binding */ hasClosestByClassName)\n/* harmony export */ });\n/* unused harmony exports hasTopClosestByClassName, hasTopClosestByAttribute, hasTopClosestByTag, getTopList, hasClosestByAttribute, hasClosestBlock, getLastNode */\n\nvar hasTopClosestByClassName = function (element, className) {\n    var closest = hasClosestByClassName(element, className);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByClassName(closest.parentElement, className);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByAttribute = function (element, attr, value) {\n    var closest = hasClosestByAttribute(element, attr, value);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByAttribute(closest.parentElement, attr, value);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByTag = function (element, nodeName) {\n    var closest = hasClosestByTag(element, nodeName);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByTag(closest.parentElement, nodeName);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar getTopList = function (element) {\n    var topUlElement = hasTopClosestByTag(element, \"UL\");\n    var topOlElement = hasTopClosestByTag(element, \"OL\");\n    var topListElement = topUlElement;\n    if (topOlElement && (!topUlElement || (topUlElement && topOlElement.contains(topUlElement)))) {\n        topListElement = topOlElement;\n    }\n    return topListElement;\n};\nvar hasClosestByAttribute = function (element, attr, value) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.getAttribute(attr) === value) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestBlock = function (element) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    var blockElement = hasClosestByAttribute(element, \"data-block\", \"0\");\n    if (blockElement) {\n        return blockElement;\n    }\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.tagName === \"H1\" ||\n            e.tagName === \"H2\" ||\n            e.tagName === \"H3\" ||\n            e.tagName === \"H4\" ||\n            e.tagName === \"H5\" ||\n            e.tagName === \"H6\" ||\n            e.tagName === \"P\" ||\n            e.tagName === \"BLOCKQUOTE\" ||\n            e.tagName === \"OL\" ||\n            e.tagName === \"UL\") {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByMatchTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName === nodeName) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByClassName = function (element, className) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.classList.contains(className)) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar getLastNode = function (node) {\n    while (node && node.lastChild) {\n        node = node.lastChild;\n    }\n    return node;\n};\n\n\n/***/ }),\n\n/***/ 771:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"W\": () => (/* binding */ hasClosestByHeadings)\n/* harmony export */ });\n/* unused harmony export hasClosestByTag */\n// NOTE: 减少 method.ts 打包，故从 hasClosest.ts 中拆分\nvar hasClosestByTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName.indexOf(nodeName) === 0) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByHeadings = function (element) {\n    var headingElement = hasClosestByTag(element, \"H\");\n    if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== \"HR\") {\n        return headingElement;\n    }\n    return false;\n};\n\n\n/***/ }),\n\n/***/ 673:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"T\": () => (/* binding */ merge)\n/* harmony export */ });\nvar merge = function () {\n    var options = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        options[_i] = arguments[_i];\n    }\n    var target = {};\n    var merger = function (obj) {\n        for (var prop in obj) {\n            if (obj.hasOwnProperty(prop)) {\n                if (Object.prototype.toString.call(obj[prop]) === \"[object Object]\") {\n                    target[prop] = merge(target[prop], obj[prop]);\n                }\n                else {\n                    target[prop] = obj[prop];\n                }\n            }\n        }\n    };\n    for (var i = 0; i < options.length; i++) {\n        merger(options[i]);\n    }\n    return target;\n};\n\n\n/***/ }),\n\n/***/ 810:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Hc\": () => (/* binding */ setSelectionFocus)\n/* harmony export */ });\n/* unused harmony exports getEditorRange, getCursorPosition, selectIsEditor, getSelectPosition, setSelectionByPosition, setRangeByWbr, insertHTML */\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);\n\n\n\nvar getEditorRange = function (vditor) {\n    var range;\n    var element = vditor[vditor.currentMode].element;\n    if (getSelection().rangeCount > 0) {\n        range = getSelection().getRangeAt(0);\n        if (element.isEqualNode(range.startContainer) || element.contains(range.startContainer)) {\n            return range;\n        }\n    }\n    if (vditor[vditor.currentMode].range) {\n        return vditor[vditor.currentMode].range;\n    }\n    element.focus();\n    range = element.ownerDocument.createRange();\n    range.setStart(element, 0);\n    range.collapse(true);\n    return range;\n};\nvar getCursorPosition = function (editor) {\n    var range = window.getSelection().getRangeAt(0);\n    if (!editor.contains(range.startContainer) && !hasClosestByClassName(range.startContainer, \"vditor-panel--none\")) {\n        return {\n            left: 0,\n            top: 0,\n        };\n    }\n    var parentRect = editor.parentElement.getBoundingClientRect();\n    var cursorRect;\n    if (range.getClientRects().length === 0) {\n        if (range.startContainer.nodeType === 3) {\n            // 空行时，会出现没有 br 的情况，需要根据父元素 <p> 获取位置信息\n            var parent_1 = range.startContainer.parentElement;\n            if (parent_1 && parent_1.getClientRects().length > 0) {\n                cursorRect = parent_1.getClientRects()[0];\n            }\n            else {\n                return {\n                    left: 0,\n                    top: 0,\n                };\n            }\n        }\n        else {\n            var children = range.startContainer.children;\n            if (children[range.startOffset] &&\n                children[range.startOffset].getClientRects().length > 0) {\n                // markdown 模式回车\n                cursorRect = children[range.startOffset].getClientRects()[0];\n            }\n            else if (range.startContainer.childNodes.length > 0) {\n                // in table or code block\n                var cloneRange = range.cloneRange();\n                range.selectNode(range.startContainer.childNodes[Math.max(0, range.startOffset - 1)]);\n                cursorRect = range.getClientRects()[0];\n                range.setEnd(cloneRange.endContainer, cloneRange.endOffset);\n                range.setStart(cloneRange.startContainer, cloneRange.startOffset);\n            }\n            else {\n                cursorRect = range.startContainer.getClientRects()[0];\n            }\n            if (!cursorRect) {\n                var parentElement = range.startContainer.childNodes[range.startOffset];\n                while (!parentElement.getClientRects ||\n                    (parentElement.getClientRects && parentElement.getClientRects().length === 0)) {\n                    parentElement = parentElement.parentElement;\n                }\n                cursorRect = parentElement.getClientRects()[0];\n            }\n        }\n    }\n    else {\n        cursorRect = range.getClientRects()[0];\n    }\n    return {\n        left: cursorRect.left - parentRect.left,\n        top: cursorRect.top - parentRect.top,\n    };\n};\nvar selectIsEditor = function (editor, range) {\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return false;\n        }\n        else {\n            range = getSelection().getRangeAt(0);\n        }\n    }\n    var container = range.commonAncestorContainer;\n    return editor.isEqualNode(container) || editor.contains(container);\n};\nvar setSelectionFocus = function (range) {\n    var selection = window.getSelection();\n    selection.removeAllRanges();\n    selection.addRange(range);\n};\nvar getSelectPosition = function (selectElement, editorElement, range) {\n    var position = {\n        end: 0,\n        start: 0,\n    };\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return position;\n        }\n        range = window.getSelection().getRangeAt(0);\n    }\n    if (selectIsEditor(editorElement, range)) {\n        var preSelectionRange = range.cloneRange();\n        if (selectElement.childNodes[0] && selectElement.childNodes[0].childNodes[0]) {\n            preSelectionRange.setStart(selectElement.childNodes[0].childNodes[0], 0);\n        }\n        else {\n            preSelectionRange.selectNodeContents(selectElement);\n        }\n        preSelectionRange.setEnd(range.startContainer, range.startOffset);\n        position.start = preSelectionRange.toString().length;\n        position.end = position.start + range.toString().length;\n    }\n    return position;\n};\nvar setSelectionByPosition = function (start, end, editor) {\n    var charIndex = 0;\n    var line = 0;\n    var pNode = editor.childNodes[line];\n    var foundStart = false;\n    var stop = false;\n    start = Math.max(0, start);\n    end = Math.max(0, end);\n    var range = editor.ownerDocument.createRange();\n    range.setStart(pNode || editor, 0);\n    range.collapse(true);\n    while (!stop && pNode) {\n        var nextCharIndex = charIndex + pNode.textContent.length;\n        if (!foundStart && start >= charIndex && start <= nextCharIndex) {\n            if (start === 0) {\n                range.setStart(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setStart(pNode.childNodes[0], start - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setStartBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setStartAfter(pNode);\n                }\n            }\n            foundStart = true;\n            if (start === end) {\n                stop = true;\n                break;\n            }\n        }\n        if (foundStart && end >= charIndex && end <= nextCharIndex) {\n            if (end === 0) {\n                range.setEnd(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setEnd(pNode.childNodes[0], end - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setEndBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setEndAfter(pNode);\n                }\n            }\n            stop = true;\n        }\n        charIndex = nextCharIndex;\n        pNode = editor.childNodes[++line];\n    }\n    if (!stop && editor.childNodes[line - 1]) {\n        range.setStartBefore(editor.childNodes[line - 1]);\n    }\n    setSelectionFocus(range);\n    return range;\n};\nvar setRangeByWbr = function (element, range) {\n    var wbrElement = element.querySelector(\"wbr\");\n    if (!wbrElement) {\n        return;\n    }\n    if (!wbrElement.previousElementSibling) {\n        if (wbrElement.previousSibling) {\n            // text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n        else if (wbrElement.nextSibling) {\n            if (wbrElement.nextSibling.nodeType === 3) {\n                // <wbr>text\n                range.setStart(wbrElement.nextSibling, 0);\n            }\n            else {\n                // <wbr><br> https://github.com/Vanessa219/vditor/issues/400\n                range.setStartBefore(wbrElement.nextSibling);\n            }\n        }\n        else {\n            // 内容为空\n            range.setStart(wbrElement.parentElement, 0);\n        }\n    }\n    else {\n        if (wbrElement.previousElementSibling.isSameNode(wbrElement.previousSibling)) {\n            if (wbrElement.previousElementSibling.lastChild) {\n                // <em>text</em><wbr>\n                range.setStartBefore(wbrElement);\n                range.collapse(true);\n                setSelectionFocus(range);\n                // fix Chrome set range bug: **c**\n                if (isChrome() && (wbrElement.previousElementSibling.tagName === \"EM\" ||\n                    wbrElement.previousElementSibling.tagName === \"STRONG\" ||\n                    wbrElement.previousElementSibling.tagName === \"S\")) {\n                    range.insertNode(document.createTextNode(Constants.ZWSP));\n                    range.collapse(false);\n                }\n                wbrElement.remove();\n                return;\n            }\n            else {\n                // <br><wbr>\n                range.setStartAfter(wbrElement.previousElementSibling);\n            }\n        }\n        else {\n            // <em>text</em>text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n    }\n    range.collapse(true);\n    wbrElement.remove();\n    setSelectionFocus(range);\n};\nvar insertHTML = function (html, vditor) {\n    // 使用 lute 方法会添加 p 元素，只有一个 p 元素的时候进行删除\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var tempBlockElement = tempElement.querySelectorAll(\"p\");\n    if (tempBlockElement.length === 1 && !tempBlockElement[0].previousSibling && !tempBlockElement[0].nextSibling &&\n        vditor[vditor.currentMode].element.children.length > 0 && tempElement.firstElementChild.tagName === \"P\") {\n        html = tempBlockElement[0].innerHTML.trim();\n    }\n    var pasteElement = document.createElement(\"div\");\n    pasteElement.innerHTML = html;\n    var range = getEditorRange(vditor);\n    if (range.toString() !== \"\") {\n        vditor[vditor.currentMode].preventInput = true;\n        document.execCommand(\"delete\", false, \"\");\n    }\n    if (pasteElement.firstElementChild &&\n        pasteElement.firstElementChild.getAttribute(\"data-block\") === \"0\") {\n        // 粘贴内容为块元素时，应在下一段落中插入\n        pasteElement.lastElementChild.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        var blockElement = hasClosestBlock(range.startContainer);\n        if (!blockElement) {\n            vditor[vditor.currentMode].element.insertAdjacentHTML(\"beforeend\", pasteElement.innerHTML);\n        }\n        else {\n            blockElement.insertAdjacentHTML(\"afterend\", pasteElement.innerHTML);\n        }\n        setRangeByWbr(vditor[vditor.currentMode].element, range);\n    }\n    else {\n        var pasteTemplate = document.createElement(\"template\");\n        pasteTemplate.innerHTML = html;\n        range.insertNode(pasteTemplate.content.cloneNode(true));\n        range.collapse(false);\n        setSelectionFocus(range);\n    }\n};\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ method)\n});\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(135);\n// EXTERNAL MODULE: ./src/ts/markdown/adapterRender.ts\nvar adapterRender = __webpack_require__(840);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(775);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(428);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(325);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(483);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(999);\n;// CONCATENATED MODULE: ./src/ts/markdown/lazyLoadImageRender.ts\nvar lazyLoadImageRender = function (element) {\n    if (element === void 0) { element = document; }\n    var loadImg = function (it) {\n        var testImage = document.createElement(\"img\");\n        testImage.src = it.getAttribute(\"data-src\");\n        testImage.addEventListener(\"load\", function () {\n            if (!it.getAttribute(\"style\") && !it.getAttribute(\"class\") &&\n                !it.getAttribute(\"width\") && !it.getAttribute(\"height\")) {\n                if (testImage.naturalHeight > testImage.naturalWidth &&\n                    testImage.naturalWidth / testImage.naturalHeight <\n                        document.querySelector(\".vditor-reset\").clientWidth / (window.innerHeight - 40) &&\n                    testImage.naturalHeight > (window.innerHeight - 40)) {\n                    it.style.height = (window.innerHeight - 40) + \"px\";\n                }\n            }\n            it.src = testImage.src;\n        });\n        it.removeAttribute(\"data-src\");\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            if (imgElement.getAttribute(\"data-src\")) {\n                loadImg(imgElement);\n            }\n        });\n        return false;\n    }\n    if (window.vditorImageIntersectionObserver) {\n        window.vditorImageIntersectionObserver.disconnect();\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n    else {\n        window.vditorImageIntersectionObserver = new IntersectionObserver(function (entries) {\n            entries.forEach(function (entrie) {\n                if ((typeof entrie.isIntersecting === \"undefined\"\n                    ? entrie.intersectionRatio !== 0\n                    : entrie.isIntersecting)\n                    && entrie.target.getAttribute(\"data-src\")) {\n                    loadImg(entrie.target);\n                }\n            });\n        });\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(472);\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(280);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(637);\n// EXTERNAL MODULE: ./src/ts/markdown/SMILESRender.ts\nvar SMILESRender = __webpack_require__(825);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(11);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(194);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(436);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(229);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(145);\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(538);\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(413);\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(106);\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(673);\n;// CONCATENATED MODULE: ./src/ts/markdown/anchorRender.ts\nvar anchorRender = function (type) {\n    document.querySelectorAll(\".vditor-anchor\").forEach(function (anchor) {\n        if (type === 1) {\n            anchor.classList.add(\"vditor-anchor--left\");\n        }\n        anchor.onclick = function () {\n            var id = anchor.getAttribute(\"href\").substr(1);\n            var top = document.getElementById(\"vditorAnchor-\" + id).offsetTop;\n            document.querySelector(\"html\").scrollTop = top;\n        };\n    });\n    window.onhashchange = function () {\n        var element = document.getElementById(\"vditorAnchor-\" + decodeURIComponent(window.location.hash.substr(1)));\n        if (element) {\n            document.querySelector(\"html\").scrollTop = element.offsetTop;\n        }\n    };\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(214);\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar selection = __webpack_require__(810);\n;// CONCATENATED MODULE: ./src/ts/markdown/speechRender.ts\n\nvar speechRender = function (element, lang) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (typeof speechSynthesis === \"undefined\" || typeof SpeechSynthesisUtterance === \"undefined\") {\n        return;\n    }\n    var getVoice = function () {\n        var voices = speechSynthesis.getVoices();\n        var currentVoice;\n        var defaultVoice;\n        voices.forEach(function (item) {\n            if (item.lang === lang.replace(\"_\", \"-\")) {\n                currentVoice = item;\n            }\n            if (item.default) {\n                defaultVoice = item;\n            }\n        });\n        if (!currentVoice) {\n            currentVoice = defaultVoice;\n        }\n        return currentVoice;\n    };\n    var playSVG = '<svg><use xlink:href=\"#vditor-icon-play\"></use></svg>';\n    var pauseSVG = '<svg><use xlink:href=\"#vditor-icon-pause\"></use></svg>';\n    if (!document.getElementById(\"vditorIconScript\")) {\n        playSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path></svg>';\n        pauseSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path></svg>';\n    }\n    var speechDom = document.querySelector(\".vditor-speech\");\n    if (!speechDom) {\n        speechDom = document.createElement(\"button\");\n        speechDom.className = \"vditor-speech\";\n        element.insertAdjacentElement(\"beforeend\", speechDom);\n        if (speechSynthesis.onvoiceschanged !== undefined) {\n            speechSynthesis.onvoiceschanged = getVoice;\n        }\n    }\n    var voice = getVoice();\n    var utterThis = new SpeechSynthesisUtterance();\n    utterThis.voice = voice;\n    utterThis.onend = utterThis.onerror = function () {\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n    };\n    element.addEventListener(window.ontouchstart !== undefined ? \"touchend\" : \"click\", function (event) {\n        var target = event.target;\n        if (target.classList.contains(\"vditor-speech\") || target.parentElement.classList.contains(\"vditor-speech\")) {\n            if (!speechDom.classList.contains(\"vditor-speech--current\")) {\n                utterThis.text = speechDom.getAttribute(\"data-text\");\n                speechSynthesis.speak(utterThis);\n                speechDom.classList.add(\"vditor-speech--current\");\n                speechDom.innerHTML = pauseSVG;\n            }\n            else {\n                if (speechSynthesis.speaking) {\n                    if (speechSynthesis.paused) {\n                        speechSynthesis.resume();\n                        speechDom.innerHTML = pauseSVG;\n                    }\n                    else {\n                        speechSynthesis.pause();\n                        speechDom.innerHTML = playSVG;\n                    }\n                }\n            }\n            (0,selection/* setSelectionFocus */.Hc)(window.vditorSpeechRange);\n            element.focus();\n            return;\n        }\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        var range = getSelection().getRangeAt(0);\n        var text = range.toString().trim();\n        if (!text) {\n            return;\n        }\n        window.vditorSpeechRange = range.cloneRange();\n        var rect = range.getBoundingClientRect();\n        speechDom.innerHTML = playSVG;\n        speechDom.style.display = \"block\";\n        speechDom.style.top = (rect.top + rect.height + document.querySelector(\"html\").scrollTop - 20) + \"px\";\n        if (window.ontouchstart !== undefined) {\n            speechDom.style.left = (event.changedTouches[event.changedTouches.length - 1].pageX + 2) + \"px\";\n        }\n        else {\n            speechDom.style.left = (event.clientX + 2) + \"px\";\n        }\n        speechDom.setAttribute(\"data-text\", text);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/markdown/previewRender.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeOptions = function (options) {\n    var _a;\n    var defaultOption = {\n        anchor: 0,\n        cdn: constants/* Constants.CDN */.g.CDN,\n        customEmoji: {},\n        emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n        hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n        icon: \"ant\",\n        lang: \"zh_CN\",\n        markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n        math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n        mode: \"light\",\n        speech: {\n            enable: false,\n        },\n        render: {\n            media: {\n                enable: true,\n            }\n        },\n        theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n    };\n    if (options.cdn) {\n        if (!((_a = options.theme) === null || _a === void 0 ? void 0 : _a.path)) {\n            defaultOption.theme.path = \"\".concat(options.cdn, \"/dist/css/content-theme\");\n        }\n        if (!options.emojiPath) {\n            defaultOption.emojiPath = \"\".concat(options.cdn, \"/dist/images/emoji\");\n        }\n    }\n    return (0,merge/* merge */.T)(defaultOption, options);\n};\nvar md2html = function (mdText, options) {\n    var mergedOptions = mergeOptions(options);\n    return (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n        var lute = (0,setLute/* setLute */.X)({\n            autoSpace: mergedOptions.markdown.autoSpace,\n            gfmAutoLink: mergedOptions.markdown.gfmAutoLink,\n            codeBlockPreview: mergedOptions.markdown.codeBlockPreview,\n            emojiSite: mergedOptions.emojiPath,\n            emojis: mergedOptions.customEmoji,\n            fixTermTypo: mergedOptions.markdown.fixTermTypo,\n            footnotes: mergedOptions.markdown.footnotes,\n            headingAnchor: mergedOptions.anchor !== 0,\n            inlineMathDigit: mergedOptions.math.inlineDigit,\n            lazyLoadImage: mergedOptions.lazyLoadImage,\n            linkBase: mergedOptions.markdown.linkBase,\n            linkPrefix: mergedOptions.markdown.linkPrefix,\n            listStyle: mergedOptions.markdown.listStyle,\n            mark: mergedOptions.markdown.mark,\n            mathBlockPreview: mergedOptions.markdown.mathBlockPreview,\n            paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,\n            sanitize: mergedOptions.markdown.sanitize,\n            toc: mergedOptions.markdown.toc,\n        });\n        if (options === null || options === void 0 ? void 0 : options.renderers) {\n            lute.SetJSRenderers({\n                renderers: {\n                    Md2HTML: options.renderers,\n                },\n            });\n        }\n        lute.SetHeadingID(true);\n        return lute.Md2HTML(mdText);\n    });\n};\nvar previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {\n    var mergedOptions, html, i18nScriptPrefix, i18nScriptID_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                mergedOptions = mergeOptions(options);\n                return [4 /*yield*/, md2html(markdown, mergedOptions)];\n            case 1:\n                html = _a.sent();\n                if (mergedOptions.transform) {\n                    html = mergedOptions.transform(html);\n                }\n                previewElement.innerHTML = html;\n                previewElement.classList.add(\"vditor-reset\");\n                if (!!mergedOptions.i18n) return [3 /*break*/, 5];\n                if (!![\"de_DE\", \"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) return [3 /*break*/, 2];\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            case 2:\n                i18nScriptPrefix = \"vditorI18nScript\";\n                i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1)];\n            case 3:\n                _a.sent();\n                _a.label = 4;\n            case 4: return [3 /*break*/, 6];\n            case 5:\n                window.VditorI18n = mergedOptions.i18n;\n                _a.label = 6;\n            case 6:\n                if (!mergedOptions.icon) return [3 /*break*/, 8];\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\")];\n            case 7:\n                _a.sent();\n                _a.label = 8;\n            case 8:\n                (0,setContentTheme/* setContentTheme */.Z)(mergedOptions.theme.current, mergedOptions.theme.path);\n                if (mergedOptions.anchor === 1) {\n                    previewElement.classList.add(\"vditor-reset--anchor\");\n                }\n                (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);\n                (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);\n                (0,mathRender/* mathRender */.H)(previewElement, {\n                    cdn: mergedOptions.cdn,\n                    math: mergedOptions.math,\n                });\n                (0,mermaidRender/* mermaidRender */.i)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,SMILESRender/* SMILESRender */.J)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn);\n                (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);\n                (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);\n                (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);\n                (0,abcRender/* abcRender */.Q)(previewElement, mergedOptions.cdn);\n                if (mergedOptions.render.media.enable) {\n                    (0,mediaRender/* mediaRender */.Y)(previewElement);\n                }\n                if (mergedOptions.speech.enable) {\n                    speechRender(previewElement);\n                }\n                if (mergedOptions.anchor !== 0) {\n                    anchorRender(mergedOptions.anchor);\n                }\n                if (mergedOptions.after) {\n                    mergedOptions.after();\n                }\n                if (mergedOptions.lazyLoadImage) {\n                    lazyLoadImageRender(previewElement);\n                }\n                previewElement.addEventListener(\"click\", function (event) {\n                    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n                    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                        var headingElement = previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                        if (headingElement) {\n                            window.scrollTo(window.scrollX, headingElement.offsetTop);\n                        }\n                        return;\n                    }\n                });\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(190);\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(580);\n;// CONCATENATED MODULE: ./src/method.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function () {\n    function Vditor() {\n    }\n    /** 点击图片放大 */\n    Vditor.adapterRender = adapterRender;\n    /** 点击图片放大 */\n    Vditor.previewImage = preview_image/* previewImage */.E;\n    /** 为 element 中的代码块添加复制按钮 */\n    Vditor.codeRender = codeRender/* codeRender */.O;\n    /** 对 graphviz 进行渲染 */\n    Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;\n    /** 为 element 中的代码块进行高亮渲染 */\n    Vditor.highlightRender = highlightRender/* highlightRender */.s;\n    /** 对数学公式进行渲染 */\n    Vditor.mathRender = mathRender/* mathRender */.H;\n    /** 流程图/时序图/甘特图渲染 */\n    Vditor.mermaidRender = mermaidRender/* mermaidRender */.i;\n    /** 化学物质结构渲染 */\n    Vditor.SMILESRender = SMILESRender/* SMILESRender */.J;\n    /** 支持 markdown 的思维导图 */\n    Vditor.markmapRender = markmapRender/* markmapRender */.K;\n    /** flowchart.js 渲染 */\n    Vditor.flowchartRender = flowchartRender/* flowchartRender */.P;\n    /** 图表渲染 */\n    Vditor.chartRender = chartRender/* chartRender */.p;\n    /** 五线谱渲染 */\n    Vditor.abcRender = abcRender/* abcRender */.Q;\n    /** 脑图渲染 */\n    Vditor.mindmapRender = mindmapRender/* mindmapRender */.P;\n    /** plantuml渲染 */\n    Vditor.plantumlRender = plantumlRender/* plantumlRender */.B;\n    /** 大纲渲染 */\n    Vditor.outlineRender = outlineRender/* outlineRender */.k;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    Vditor.mediaRender = mediaRender/* mediaRender */.Y;\n    /** 对选中的文字进行阅读 */\n    Vditor.speechRender = speechRender;\n    /** 对图片进行懒加载 */\n    Vditor.lazyLoadImageRender = lazyLoadImageRender;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    Vditor.md2html = md2html;\n    /** 页面 Markdown 文章渲染 */\n    Vditor.preview = previewRender;\n    /** 设置代码主题 */\n    Vditor.setCodeTheme = setCodeTheme/* setCodeTheme */.Y;\n    /** 设置内容主题 */\n    Vditor.setContentTheme = setContentTheme/* setContentTheme */.Z;\n    return Vditor;\n}());\n/* harmony default export */ const method = (Vditor);\n\n})();\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/constants.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare const _VDITOR_VERSION: string;\nexport { _VDITOR_VERSION as VDITOR_VERSION };\nexport declare abstract class Constants {\n    static readonly ZWSP: string;\n    static readonly DROP_EDITOR: string;\n    static readonly MOBILE_WIDTH: number;\n    static readonly CLASS_MENU_DISABLED: string;\n    static readonly EDIT_TOOLBARS: string[];\n    static readonly CODE_THEME: string[];\n    static readonly ALIAS_CODE_LANGUAGES: string[];\n    static readonly CDN: string;\n    static readonly MARKDOWN_OPTIONS: {\n        autoSpace: boolean;\n        gfmAutoLink: boolean;\n        codeBlockPreview: boolean;\n        fixTermTypo: boolean;\n        footnotes: boolean;\n        linkBase: string;\n        linkPrefix: string;\n        listStyle: boolean;\n        mark: boolean;\n        mathBlockPreview: boolean;\n        paragraphBeginningSpace: boolean;\n        sanitize: boolean;\n        toc: boolean;\n    };\n    static readonly HLJS_OPTIONS: {\n        enable: boolean;\n        lineNumber: boolean;\n        defaultLang: string;\n        style: string;\n    };\n    static readonly MATH_OPTIONS: IMath;\n    static readonly THEME_OPTIONS: {\n        current: string;\n        list: {\n            \"ant-design\": string;\n            dark: string;\n            light: string;\n            wechat: string;\n        };\n        path: string;\n    };\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/devtools/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class DevTools {\n    element: HTMLDivElement;\n    private ASTChart;\n    constructor();\n    renderEchart(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/export/index.d.ts",
    "content": "export declare const download: (vditor: IVditor, content: string, filename: string) => void;\nexport declare const exportMarkdown: (vditor: IVditor) => void;\nexport declare const exportPDF: (vditor: IVditor) => void;\nexport declare const exportHTML: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/hint/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Hint {\n    timeId: number;\n    element: HTMLDivElement;\n    recentLanguage: string;\n    private splitChar;\n    private lastIndex;\n    constructor(hintExtends: IHintExtend[]);\n    render(vditor: IVditor): void;\n    genHTML(data: IHintData[], key: string, vditor: IVditor): void;\n    fillEmoji: (element: HTMLElement, vditor: IVditor) => void;\n    insert(value: string, range: any, vditor: IVditor): void;\n    select(event: KeyboardEvent, vditor: IVditor): boolean;\n    private getKey;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/expandMarker.d.ts",
    "content": "export declare const expandMarker: (range: Range, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/highlightToolbarIR.d.ts",
    "content": "export declare const highlightToolbarIR: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class IR {\n    range: Range;\n    element: HTMLPreElement;\n    processTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    composingLock: boolean;\n    preventInput: boolean;\n    constructor(vditor: IVditor);\n    private copy;\n    private bindEvent;\n}\nexport { IR };\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/input.d.ts",
    "content": "export declare const input: (vditor: IVditor, range: Range, ignoreSpace?: boolean, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/process.d.ts",
    "content": "export declare const processHint: (vditor: IVditor) => void;\nexport declare const processAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const processHeading: (vditor: IVditor, value: string) => void;\nexport declare const processToolbar: (vditor: IVditor, actionBtn: Element, prefix: string, suffix: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ir/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/SMILESRender.d.ts",
    "content": "export declare const SMILESRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/abcRender.d.ts",
    "content": "export declare const abcRender: (element?: (HTMLElement | Document), cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/adapterRender.d.ts",
    "content": "export declare const mathRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const SMILESRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const mermaidRenderAdapter: {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const markmapRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const mindmapRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const chartRenderAdapter: {\n    getCode: (el: HTMLElement) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const abcRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const graphvizRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const flowchartRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const plantumlRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/anchorRender.d.ts",
    "content": "export declare const anchorRender: (type: number) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/chartRender.d.ts",
    "content": "export declare const chartRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/codeRender.d.ts",
    "content": "export declare const codeRender: (element: HTMLElement, option?: IHljs) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/flowchartRender.d.ts",
    "content": "export declare const flowchartRender: (element: HTMLElement, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/getHTML.d.ts",
    "content": "export declare const getHTML: (vditor: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/getMarkdown.d.ts",
    "content": "export declare const getMarkdown: (vditor: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/graphvizRender.d.ts",
    "content": "export declare const graphvizRender: (element: HTMLElement, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/highlightRender.d.ts",
    "content": "export declare const highlightRender: (hljsOption?: IHljs, element?: HTMLElement | Document, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/lazyLoadImageRender.d.ts",
    "content": "declare global {\n    interface Window {\n        vditorImageIntersectionObserver: IntersectionObserver;\n    }\n}\nexport declare const lazyLoadImageRender: (element?: (HTMLElement | Document)) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/markmapRender.d.ts",
    "content": "export declare const markmapRender: (element?: (HTMLElement | Document), cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/mathRender.d.ts",
    "content": "declare global {\n    interface Window {\n        MathJax: any;\n    }\n}\nexport declare const mathRender: (element?: (HTMLElement | Document), options?: {\n    cdn?: string;\n    math?: IMath;\n}) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/mediaRender.d.ts",
    "content": "export declare const mediaRender: (element: HTMLElement) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/mermaidRender.d.ts",
    "content": "export declare const mermaidRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/mindmapRender.d.ts",
    "content": "export declare const mindmapRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/outlineRender.d.ts",
    "content": "export declare const outlineRender: (contentElement: HTMLElement, targetElement: Element, vditor?: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/plantumlRender.d.ts",
    "content": "export declare const plantumlRender: (element?: (HTMLElement | Document), cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/previewRender.d.ts",
    "content": "export declare const md2html: (mdText: string, options?: IPreviewOptions) => Promise<string>;\nexport declare const previewRender: (previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) => Promise<void>;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/setLute.d.ts",
    "content": "export declare const setLute: (options: ILuteOptions) => Lute;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/markdown/speechRender.d.ts",
    "content": "declare global {\n    interface Window {\n        vditorSpeechRange: Range;\n    }\n}\nexport declare const speechRender: (element: HTMLElement, lang?: keyof II18n) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/outline/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Outline {\n    element: HTMLElement;\n    constructor(outlineLabel: string);\n    render(vditor: IVditor): string;\n    toggle(vditor: IVditor, show?: boolean, focus?: boolean): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/preview/image.d.ts",
    "content": "export declare const previewImage: (oldImgElement: HTMLImageElement, lang?: keyof II18n, theme?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/preview/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Preview {\n    element: HTMLElement;\n    previewElement: HTMLElement;\n    private mdTimeoutId;\n    constructor(vditor: IVditor);\n    render(vditor: IVditor, value?: string): void;\n    private afterRender;\n    private copyToX;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/resize/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Resize {\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    private bindEvent;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/sv/combineFootnote.d.ts",
    "content": "/**\n * 合并脚注\n * @param elements vditor.sv.element\n * @param afterCombine 每个脚注块合并完成后的回调, param: root为合并后的脚注块\n */\nexport declare const combineFootnote: (elements: HTMLElement, afterCombine?: (root: HTMLElement) => void) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/sv/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class Editor {\n    range: Range;\n    element: HTMLPreElement;\n    composingLock: boolean;\n    processTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    preventInput: boolean;\n    constructor(vditor: IVditor);\n    private copy;\n    private bindEvent;\n}\nexport { Editor };\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/sv/inputEvent.d.ts",
    "content": "export declare const inputEvent: (vditor: IVditor, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/sv/process.d.ts",
    "content": "export declare const processPaste: (vditor: IVditor, text: string) => void;\nexport declare const getSideByType: (spanNode: Node, type: string, isPrevious?: boolean) => false | Element;\nexport declare const processSpinVditorSVDOM: (html: string, vditor: IVditor) => string;\nexport declare const processPreviousMarkers: (spanElement: HTMLElement) => string;\nexport declare const processAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const processHeading: (vditor: IVditor, value: string) => void;\nexport declare const processToolbar: (vditor: IVditor, actionBtn: Element, prefix: string, suffix: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/sv/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/tip/index.d.ts",
    "content": "export declare class Tip {\n    element: HTMLElement;\n    constructor();\n    show(text: string, time?: number): void;\n    hide(): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Both.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Both extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Br.d.ts",
    "content": "export declare class Br {\n    element: HTMLElement;\n    constructor();\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/CodeTheme.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class CodeTheme extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/ContentTheme.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class ContentTheme extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Counter.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Counter {\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    render(vditor: IVditor, mdText: string): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Custom.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Custom extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Devtools.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Devtools extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Divider.d.ts",
    "content": "export declare class Divider {\n    element: HTMLElement;\n    constructor();\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/EditMode.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare const setEditMode: (vditor: IVditor, type: string, event: Event | string) => void;\nexport declare class EditMode extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, panelElement: HTMLElement, menuItem: IMenuItem): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Emoji.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Emoji extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    private bindEvent;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Export.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Export extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Fullscreen.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Fullscreen extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, menuItem: IMenuItem): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Headings.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Headings extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, panelElement: HTMLElement): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Help.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Help extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Indent.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Indent extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Info.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Info extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/InsertAfter.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class InsertAfter extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/InsertBefore.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class InsertBefore extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/MenuItem.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Outdent.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Outdent extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Outline.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Outline extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Preview.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Preview extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Record.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Record extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Redo.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Redo extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Undo.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Undo extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/Upload.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Upload extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Toolbar {\n    elements: {\n        [key: string]: HTMLElement;\n    };\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    updateConfig(vditor: IVditor, options: IToolbarConfig): void;\n    private genItem;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/toolbar/setToolbar.d.ts",
    "content": "export declare const removeCurrentToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const setCurrentToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const enableToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const disableToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const hideToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const showToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const hidePanel: (vditor: IVditor, panels: string[], exceptElement?: HTMLElement) => void;\nexport declare const toggleSubMenu: (vditor: IVditor, panelElement: HTMLElement, actionBtn: Element, level: number) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ui/initUI.d.ts",
    "content": "export declare const initUI: (vditor: IVditor) => void;\nexport declare const setPadding: (vditor: IVditor) => void;\nexport declare const setTypewriterPosition: (vditor: IVditor) => void;\nexport declare function UIUnbindListener(): void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ui/setCodeTheme.d.ts",
    "content": "export declare const setCodeTheme: (codeTheme: string, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ui/setContentTheme.d.ts",
    "content": "export declare const setContentTheme: (contentTheme: string, path: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ui/setPreviewMode.d.ts",
    "content": "export declare const setPreviewMode: (mode: \"both\" | \"editor\", vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/ui/setTheme.d.ts",
    "content": "export declare const setTheme: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/undo/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class Undo {\n    private stackSize;\n    private dmp;\n    private wysiwyg;\n    private ir;\n    private sv;\n    constructor();\n    clearStack(vditor: IVditor): void;\n    resetIcon(vditor: IVditor): void;\n    undo(vditor: IVditor): void;\n    redo(vditor: IVditor): void;\n    recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void;\n    addToUndoStack(vditor: IVditor): void;\n    private renderDiff;\n    private resetStack;\n    private addCaret;\n}\nexport { Undo };\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/upload/getElement.d.ts",
    "content": "export declare const getElement: (vditor: IVditor) => HTMLPreElement;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/upload/index.d.ts",
    "content": "declare class Upload {\n    element: HTMLElement;\n    isUploading: boolean;\n    range: Range;\n    constructor();\n}\ndeclare const uploadFiles: (vditor: IVditor, files: FileList | DataTransferItemList | File[], element?: HTMLInputElement) => Promise<void>;\nexport { Upload, uploadFiles };\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/upload/setHeaders.d.ts",
    "content": "export declare const setHeaders: (vditor: IVditor, xhr: XMLHttpRequest) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/Options.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Options {\n    options: IOptions;\n    private defaultOptions;\n    constructor(options: IOptions);\n    merge(): IOptions;\n    private mergeToolbar;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/RecordMedia.d.ts",
    "content": "export declare class RecordMedia {\n    SAMPLE_RATE: number;\n    DEFAULT_SAMPLE_RATE: number;\n    isRecording: boolean;\n    readyFlag: boolean;\n    leftChannel: Float32List[];\n    rightChannel: Float32List[];\n    recordingLength: number;\n    recorder: ScriptProcessorNode;\n    constructor(e: MediaStream);\n    cloneChannelData(leftChannelData: Float32List, rightChannelData: Float32List): void;\n    startRecordingNewWavFile(): void;\n    stopRecording(): void;\n    buildWavFileBlob(): Blob;\n    private downSampleBuffer;\n    private mergeBuffers;\n    private writeUTFBytes;\n}\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/addScript.d.ts",
    "content": "export declare const addScriptSync: (path: string, id: string) => boolean;\nexport declare const addScript: (path: string, id: string) => Promise<unknown>;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/addStyle.d.ts",
    "content": "export declare const addStyle: (url: string, id: string) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/code160to32.d.ts",
    "content": "export declare const code160to32: (text: string) => string;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/compatibility.d.ts",
    "content": "export declare const isSafari: () => boolean;\nexport declare const isFirefox: () => boolean;\nexport declare const accessLocalStorage: () => boolean;\nexport declare const getEventName: () => \"click\" | \"touchstart\";\nexport declare const isCtrl: (event: KeyboardEvent) => boolean;\nexport declare const updateHotkeyTip: (hotkey: string) => string;\nexport declare const isChrome: () => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/editorCommonEvent.d.ts",
    "content": "export declare const focusEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const dblclickEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const blurEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const dropEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const copyEvent: (vditor: IVditor, editorElement: HTMLElement, copy: (event: ClipboardEvent, vditor: IVditor) => void) => void;\nexport declare const cutEvent: (vditor: IVditor, editorElement: HTMLElement, copy: (event: ClipboardEvent, vditor: IVditor) => void) => void;\nexport declare const scrollCenter: (vditor: IVditor) => void;\nexport declare const hotkeyEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const selectEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/fixBrowserBehavior.d.ts",
    "content": "export declare const fixGSKeyBackspace: (event: KeyboardEvent, vditor: IVditor, startContainer: Node) => boolean;\nexport declare const fixCJKPosition: (range: Range, vditor: IVditor, event: KeyboardEvent) => void;\nexport declare const fixCursorDownInlineMath: (range: Range, key: string) => void;\nexport declare const insertEmptyBlock: (vditor: IVditor, position: InsertPosition) => void;\nexport declare const isFirstCell: (cellElement: HTMLElement) => false | HTMLTableElement;\nexport declare const isLastCell: (cellElement: HTMLElement) => false | HTMLTableElement;\nexport declare const insertAfterBlock: (vditor: IVditor, event: KeyboardEvent, range: Range, element: HTMLElement, blockElement: HTMLElement) => boolean;\nexport declare const insertBeforeBlock: (vditor: IVditor, event: KeyboardEvent, range: Range, element: HTMLElement, blockElement: HTMLElement) => boolean;\nexport declare const listToggle: (vditor: IVditor, range: Range, type: string, cancel?: boolean) => void;\nexport declare const listIndent: (vditor: IVditor, liElement: HTMLElement, range: Range) => void;\nexport declare const listOutdent: (vditor: IVditor, liElement: HTMLElement, range: Range, topListElement: HTMLElement) => void;\nexport declare const setTableAlign: (tableElement: HTMLTableElement, type: string) => void;\nexport declare const isHrMD: (text: string) => boolean;\nexport declare const isHeadingMD: (text: string) => boolean;\nexport declare const execAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const fixList: (range: Range, vditor: IVditor, pElement: HTMLElement | false, event: KeyboardEvent) => boolean;\nexport declare const fixTab: (vditor: IVditor, range: Range, event: KeyboardEvent) => boolean;\nexport declare const fixMarkdown: (event: KeyboardEvent, vditor: IVditor, pElement: HTMLElement | false, range: Range) => boolean;\nexport declare const insertRow: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const insertRowAbove: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const insertColumn: (vditor: IVditor, tableElement: HTMLTableElement, cellElement: HTMLElement, type?: InsertPosition) => void;\nexport declare const deleteRow: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const deleteColumn: (vditor: IVditor, range: Range, tableElement: HTMLTableElement, cellElement: HTMLElement) => void;\nexport declare const fixTable: (vditor: IVditor, event: KeyboardEvent, range: Range) => boolean;\nexport declare const fixCodeBlock: (vditor: IVditor, event: KeyboardEvent, codeRenderElement: HTMLElement, range: Range) => boolean;\nexport declare const fixBlockquote: (vditor: IVditor, range: Range, event: KeyboardEvent, pElement: HTMLElement | false) => boolean;\nexport declare const fixTask: (vditor: IVditor, range: Range, event: KeyboardEvent) => boolean;\nexport declare const fixDelete: (vditor: IVditor, range: Range, event: KeyboardEvent, pElement: HTMLElement | false) => boolean;\nexport declare const fixHR: (range: Range) => void;\nexport declare const fixFirefoxArrowUpTable: (event: KeyboardEvent, blockElement: false | HTMLElement, range: Range) => boolean;\nexport declare const paste: (vditor: IVditor, event: (ClipboardEvent | DragEvent) & {\n    target: HTMLElement;\n}, callback: {\n    pasteCode(code: string): void;\n}) => Promise<void>;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/function.d.ts",
    "content": "export declare const genUUID: () => string;\nexport declare const getSearch: (key: string, link?: string) => string;\nexport declare const looseJsonParse: (text: string) => any;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/getSelectText.d.ts",
    "content": "export declare const getSelectText: (editor: HTMLElement, range?: Range) => string;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/hasClosest.d.ts",
    "content": "export declare const hasTopClosestByClassName: (element: Node, className: string) => false | HTMLElement;\nexport declare const hasTopClosestByAttribute: (element: Node, attr: string, value: string) => false | HTMLElement;\nexport declare const hasTopClosestByTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const getTopList: (element: Node) => false | HTMLElement;\nexport declare const hasClosestByAttribute: (element: Node, attr: string, value: string) => false | HTMLElement;\nexport declare const hasClosestBlock: (element: Node) => false | HTMLElement;\nexport declare const hasClosestByMatchTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const hasClosestByClassName: (element: Node, className: string) => false | HTMLElement;\nexport declare const getLastNode: (node: Node) => Node;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/hasClosestByHeadings.d.ts",
    "content": "export declare const hasClosestByTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const hasClosestByHeadings: (element: Node) => false | HTMLElement;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/highlightToolbar.d.ts",
    "content": "export declare const highlightToolbar: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/hotKey.d.ts",
    "content": "export declare const matchHotKey: (hotKey: string, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/log.d.ts",
    "content": "export declare const log: (method: string, content: string, type: string, print: boolean) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/merge.d.ts",
    "content": "export declare const merge: (...options: any[]) => any;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/processCode.d.ts",
    "content": "export declare const processPasteCode: (html: string, text: string, type?: string) => string | false;\nexport declare const processCodeRender: (previewPanel: HTMLElement, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/selection.d.ts",
    "content": "export declare const getEditorRange: (vditor: IVditor) => Range;\nexport declare const getCursorPosition: (editor: HTMLElement) => {\n    left: number;\n    top: number;\n};\nexport declare const selectIsEditor: (editor: HTMLElement, range?: Range) => boolean;\nexport declare const setSelectionFocus: (range: Range) => void;\nexport declare const getSelectPosition: (selectElement: HTMLElement, editorElement: HTMLElement, range?: Range) => {\n    end: number;\n    start: number;\n};\nexport declare const setSelectionByPosition: (start: number, end: number, editor: HTMLElement) => Range;\nexport declare const setRangeByWbr: (element: HTMLElement, range: Range) => void;\nexport declare const insertHTML: (html: string, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/util/toc.d.ts",
    "content": "export declare const renderToc: (vditor: IVditor) => void;\nexport declare const clickToc: (event: MouseEvent & {\n    target: HTMLElement;\n}, vditor: IVditor) => void;\nexport declare const keydownToc: (blockElement: HTMLElement, vditor: IVditor, event: KeyboardEvent, range: Range) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/afterRenderEvent.d.ts",
    "content": "export declare const afterRenderEvent: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts",
    "content": "export declare const highlightToolbarWYSIWYG: (vditor: IVditor) => void;\nexport declare const genLinkRefPopover: (vditor: IVditor, linkRefElement: HTMLElement, range?: Range) => void;\nexport declare const genAPopover: (vditor: IVditor, aElement: HTMLElement, range: Range) => void;\nexport declare const genImagePopover: (event: Event, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class WYSIWYG {\n    range: Range;\n    element: HTMLPreElement;\n    popover: HTMLDivElement;\n    selectPopover: HTMLDivElement;\n    afterRenderTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    preventInput: boolean;\n    composingLock: boolean;\n    commentIds: string[];\n    private scrollListener;\n    constructor(vditor: IVditor);\n    getComments(vditor: IVditor, getData?: boolean): ICommentsData[];\n    triggerRemoveComment(vditor: IVditor): void;\n    showComment(): void;\n    hideComment(): void;\n    unbindListener(): void;\n    private copy;\n    private bindEvent;\n}\nexport { WYSIWYG };\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/inlineTag.d.ts",
    "content": "export declare const previoueIsEmptyA: (node: Node) => false | HTMLElement;\nexport declare const nextIsCode: (range: Range) => boolean;\nexport declare const getNextHTML: (node: Node) => string;\nexport declare const getPreviousHTML: (node: Node) => string;\nexport declare const getRenderElementNextNode: (blockCodeElement: HTMLElement) => ChildNode;\nexport declare const splitElement: (range: Range) => {\n    afterHTML: string;\n    beforeHTML: string;\n};\nexport declare const modifyPre: (vditor: IVditor, range: Range) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/input.d.ts",
    "content": "export declare const input: (vditor: IVditor, range: Range, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/placeholder.d.ts",
    "content": "export declare const placeholder: (inputing: boolean, vditor: any) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\nexport declare const removeBlockElement: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/renderDomByMd.d.ts",
    "content": "export declare const renderDomByMd: (vditor: IVditor, md: string, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/setHeading.d.ts",
    "content": "export declare const setHeading: (vditor: IVditor, tagName: string) => void;\nexport declare const removeHeading: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/showCode.d.ts",
    "content": "export declare const showCode: (previewElement: HTMLElement, vditor: IVditor, first?: boolean) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/ts/wysiwyg/toolbarEvent.d.ts",
    "content": "export declare const toolbarEvent: (vditor: IVditor, actionBtn: Element, event: Event) => void;\n"
  },
  {
    "path": "src/frontend/client/public/vditor/dist/types/index.d.ts",
    "content": "declare module \"*.svg\";\n\ndeclare module \"*.png\";\n\ninterface Window {\n    VditorI18n: ITips;\n    hljs: {\n        listLanguages(): string[];\n        highlight(text: string, options: {\n            language?: string,\n            ignoreIllegals: boolean\n        }): {\n            value: string\n        };\n        getLanguage(text: string): {\n            name: string\n        };\n    };\n}\n\ninterface IObject {\n    [key: string]: string;\n}\n\ninterface ILuteNode {\n    TokensStr: () => string;\n    __internal_object__: {\n        Parent: {\n            Type: number,\n        },\n        HeadingLevel: string,\n    };\n}\n\ntype ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];\n\n/** @link https://ld246.com/article/1588412297062 */\ninterface ILuteRender {\n    renderDocument?: ILuteRenderCallback;\n    renderParagraph?: ILuteRenderCallback;\n    renderText?: ILuteRenderCallback;\n    renderCodeBlock?: ILuteRenderCallback;\n    renderCodeBlockOpenMarker?: ILuteRenderCallback;\n    renderCodeBlockInfoMarker?: ILuteRenderCallback;\n    renderCodeBlockCode?: ILuteRenderCallback;\n    renderCodeBlockCloseMarker?: ILuteRenderCallback;\n    renderMathBlock?: ILuteRenderCallback;\n    renderMathBlockOpenMarker?: ILuteRenderCallback;\n    renderMathBlockContent?: ILuteRenderCallback;\n    renderMathBlockCloseMarker?: ILuteRenderCallback;\n    renderBlockquote?: ILuteRenderCallback;\n    renderBlockquoteMarker?: ILuteRenderCallback;\n    renderHeading?: ILuteRenderCallback;\n    renderHeadingC8hMarker?: ILuteRenderCallback;\n    renderList?: ILuteRenderCallback;\n    renderListItem?: ILuteRenderCallback;\n    renderTaskListItemMarker?: ILuteRenderCallback;\n    renderThematicBreak?: ILuteRenderCallback;\n    renderHTML?: ILuteRenderCallback;\n    renderTable?: ILuteRenderCallback;\n    renderTableHead?: ILuteRenderCallback;\n    renderTableRow?: ILuteRenderCallback;\n    renderTableCell?: ILuteRenderCallback;\n    renderFootnotesDef?: ILuteRenderCallback;\n    renderCodeSpan?: ILuteRenderCallback;\n    renderCodeSpanOpenMarker?: ILuteRenderCallback;\n    renderCodeSpanContent?: ILuteRenderCallback;\n    renderCodeSpanCloseMarker?: ILuteRenderCallback;\n    renderInlineMath?: ILuteRenderCallback;\n    renderInlineMathOpenMarker?: ILuteRenderCallback;\n    renderInlineMathContent?: ILuteRenderCallback;\n    renderInlineMathCloseMarker?: ILuteRenderCallback;\n    renderEmphasis?: ILuteRenderCallback;\n    renderEmAsteriskOpenMarker?: ILuteRenderCallback;\n    renderEmAsteriskCloseMarker?: ILuteRenderCallback;\n    renderEmUnderscoreOpenMarker?: ILuteRenderCallback;\n    renderEmUnderscoreCloseMarker?: ILuteRenderCallback;\n    renderStrong?: ILuteRenderCallback;\n    renderStrongA6kOpenMarker?: ILuteRenderCallback;\n    renderStrongA6kCloseMarker?: ILuteRenderCallback;\n    renderStrongU8eOpenMarker?: ILuteRenderCallback;\n    renderStrongU8eCloseMarker?: ILuteRenderCallback;\n    renderStrikethrough?: ILuteRenderCallback;\n    renderStrikethrough1OpenMarker?: ILuteRenderCallback;\n    renderStrikethrough1CloseMarker?: ILuteRenderCallback;\n    renderStrikethrough2OpenMarker?: ILuteRenderCallback;\n    renderStrikethrough2CloseMarker?: ILuteRenderCallback;\n    renderHardBreak?: ILuteRenderCallback;\n    renderSoftBreak?: ILuteRenderCallback;\n    renderInlineHTML?: ILuteRenderCallback;\n    renderLink?: ILuteRenderCallback;\n    renderOpenBracket?: ILuteRenderCallback;\n    renderCloseBracket?: ILuteRenderCallback;\n    renderOpenParen?: ILuteRenderCallback;\n    renderCloseParen?: ILuteRenderCallback;\n    renderLinkText?: ILuteRenderCallback;\n    renderLinkSpace?: ILuteRenderCallback;\n    renderLinkDest?: ILuteRenderCallback;\n    renderLinkTitle?: ILuteRenderCallback;\n    renderImage?: ILuteRenderCallback;\n    renderBang?: ILuteRenderCallback;\n    renderEmoji?: ILuteRenderCallback;\n    renderEmojiUnicode?: ILuteRenderCallback;\n    renderEmojiImg?: ILuteRenderCallback;\n    renderEmojiAlias?: ILuteRenderCallback;\n    renderToC?: ILuteRenderCallback;\n    renderFootnotesRef?: ILuteRenderCallback;\n    renderBackslash?: ILuteRenderCallback;\n    renderBackslashContent?: ILuteRenderCallback;\n}\n\ninterface ILuteOptions extends IMarkdownConfig {\n    emojis: IObject;\n    emojiSite: string;\n    headingAnchor: boolean;\n    inlineMathDigit: boolean;\n    lazyLoadImage?: string;\n}\n\ndeclare class Lute {\n    public static WalkStop: number;\n    public static WalkSkipChildren: number;\n    public static WalkContinue: number;\n    public static Version: string;\n    public static Caret: string;\n\n    public static New(): Lute;\n\n    public static EscapeHTMLStr(html: string): string;\n\n    public static GetHeadingID(node: ILuteNode): string;\n\n    public static NewNodeID(): string;\n\n    public static Sanitize(html: string): string;\n\n    private constructor();\n\n    public SetJSRenderers(options?: {\n        renderers: {\n            HTML2VditorDOM?: ILuteRender,\n            HTML2VditorIRDOM?: ILuteRender,\n            HTML2Md?: ILuteRender,\n            Md2HTML?: ILuteRender,\n            Md2VditorDOM?: ILuteRender,\n            Md2VditorIRDOM?: ILuteRender,\n            Md2VditorSVDOM?: ILuteRender,\n        },\n    }): void;\n\n    public SetChineseParagraphBeginningSpace(enable: boolean): void;\n\n    public SetHeadingID(enable: boolean): void;\n\n    public SetRenderListStyle(enable: boolean): void;\n\n    public SetLinkBase(url: string): void;\n\n    public SetVditorIR(enable: boolean): void;\n\n    public SetVditorSV(enable: boolean): void;\n\n    public SetVditorWYSIWYG(enable: boolean): void;\n\n    public SetLinkPrefix(url: string): void;\n\n    public SetMark(enable: boolean): void;\n\n    public SetGFMAutoLink(enable: boolean): void;\n\n    public SetSanitize(enable: boolean): void;\n\n    public SetHeadingAnchor(enable: boolean): void;\n\n    public SetImageLazyLoading(imagePath: string): void;\n\n    public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;\n\n    public SetToC(enable: boolean): void;\n\n    public SetFootnotes(enable: boolean): void;\n\n    public SetAutoSpace(enable: boolean): void;\n\n    public SetFixTermTypo(enable: boolean): void;\n\n    public SetEmojiSite(emojiSite: string): void;\n\n    public SetVditorCodeBlockPreview(enable: boolean): void;\n\n    public SetVditorMathBlockPreview(enable: boolean): void;\n\n    public PutEmojis(emojis: IObject): void;\n\n    public GetEmojis(): IObject;\n\n    public IsValidLinkDest(link: string): boolean;\n\n    // debugger md\n    public RenderEChartsJSON(text: string): string;\n\n    // md 转换为 html\n    public Md2HTML(markdown: string): string;\n\n    // 粘贴时将 html 转换为 md\n    public HTML2Md(html: string): string;\n\n    // wysiwyg 转换为 html\n    public VditorDOM2HTML(vhtml: string): string;\n\n    // wysiwyg 输入渲染\n    public SpinVditorDOM(html: string): string;\n\n    // 粘贴时将 html 转换为 wysiwyg\n    public HTML2VditorDOM(html: string): string;\n\n    // 将 wysiwyg 转换为 md\n    public VditorDOM2Md(html: string): string;\n\n    // 将 md 转换为 wysiwyg\n    public Md2VditorDOM(markdown: string): string;\n\n    // ir 输入渲染\n    public SpinVditorIRDOM(markdown: string): string;\n\n    // ir 获取 md\n    public VditorIRDOM2Md(html: string): string;\n\n    // md 转换为 ir\n    public Md2VditorIRDOM(text: string): string;\n\n    // 获取 HTML\n    public VditorIRDOM2HTML(html: string): string;\n\n    // 粘贴时将 html 转换为 sv\n    public HTML2VditorIRDOM(html: string): string;\n\n    // sv 输入渲染\n    public SpinVditorSVDOM(text: string): string;\n\n    // 粘贴是 md 转换为 sv\n    public Md2VditorSVDOM(text: string): string;\n\n    // 将markdown转化为JSON结构输出 https://github.com/88250/lute/issues/120\n    public RenderJSON(markdown: string): string;\n}\n\ndeclare const webkitAudioContext: {\n    prototype: AudioContext\n    new(contextOptions?: AudioContextOptions): AudioContext,\n};\n\ninterface ITips {\n    [index: string]: string;\n\n    alignCenter: string;\n    alignLeft: string;\n    alignRight: string;\n    alternateText: string;\n    bold: string;\n    both: string;\n    check: string;\n    close: string;\n    code: string;\n    \"code-theme\": string;\n    column: string;\n    comment: string;\n    confirm: string;\n    \"content-theme\": string;\n    copied: string;\n    copy: string;\n    \"delete-column\": string;\n    \"delete-row\": string;\n    devtools: string;\n    down: string;\n    downloadTip: string;\n    edit: string;\n    \"edit-mode\": string;\n    emoji: string;\n    export: string;\n    fileTypeError: string;\n    footnoteRef: string;\n    fullscreen: string;\n    generate: string;\n    headings: string;\n    help: string;\n    imageURL: string;\n    indent: string;\n    info: string;\n    \"inline-code\": string;\n    \"insert-after\": string;\n    \"insert-before\": string;\n    insertColumnLeft: string;\n    insertColumnRight: string;\n    insertRowAbove: string;\n    insertRowBelow: string;\n    instantRendering: string;\n    italic: string;\n    language: string;\n    line: string;\n    link: string;\n    linkRef: string;\n    list: string;\n    more: string;\n    nameEmpty: string;\n    \"ordered-list\": string;\n    outdent: string;\n    outline: string;\n    over: string;\n    performanceTip: string;\n    preview: string;\n    quote: string;\n    record: string;\n    \"record-tip\": string;\n    recording: string;\n    redo: string;\n    remove: string;\n    row: string;\n    spin: string;\n    splitView: string;\n    strike: string;\n    table: string;\n    textIsNotEmpty: string;\n    title: string;\n    tooltipText: string;\n    undo: string;\n    up: string;\n    update: string;\n    upload: string;\n    uploadError: string;\n    uploading: string;\n    wysiwyg: string;\n}\n\ninterface II18n {\n    de_DE: ITips;\n    en_US: ITips;\n    fr_FR: ITips;\n    ja_JP: ITips;\n    ko_KR: ITips;\n    ru_RU: ITips;\n    sv_SE: ITips;\n    zh_CN: ITips;\n    zh_TW: ITips;\n    pt_BR: ITips;\n}\n\ninterface IClasses {\n    preview?: string;\n}\n\ninterface IPreviewTheme {\n    current: string;\n    list?: IObject;\n    path?: string;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-upload */\ninterface IUpload {\n    /** 上传 url */\n    url?: string;\n    /** 上传文件最大 Byte */\n    max?: number;\n    /** 剪切板中包含图片地址时，使用此 url 重新上传 */\n    linkToImgUrl?: string;\n\n    /** 剪切板中包含图片地址时，使用此方法进行自定义 */\n    renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number];\n\n    /** CORS 上传验证，头为 X-Upload-Token */\n    token?: string;\n    /** 文件上传类型，同 [input accept](https://www.w3schools.com/tags/att_input_accept.asp) */\n    accept?: string;\n    /** 跨站点访问控制。默认值: false */\n    withCredentials?: boolean;\n    /** 请求头设置 */\n    headers?: IObject;\n    /** 额外请求参数 */\n    extraData?: { [key: string]: string | Blob };\n    /** 是否允许多文件上传。默认值：true */\n    multiple?: boolean;\n    /** 上传字段名。默认值：file[] */\n    fieldName?: string;\n\n    /** 每次上传前都会重新设置请求头 */\n    setHeaders?(): IObject;\n\n    /** 上传成功回调 */\n    success?(editor: HTMLPreElement, msg: string): void;\n\n    /** 上传失败回调 */\n    error?(msg: string): void;\n\n    /** 文件名安全处理。 默认值: name => name.replace(/\\W/g, '') */\n    filename?(name: string): string;\n\n    /** 校验，成功时返回 true 否则返回错误信息 */\n    validate?(files: File[]): string | boolean;\n\n    /** 自定义上传，当发生错误时返回错误信息 */\n    handler?(files: File[]): string | null | Promise<string> | Promise<null>;\n\n    /** 对服务端返回的数据进行转换，以满足内置的数据结构 */\n    format?(files: File[], responseText: string): string;\n\n    /** 对服务端返回的数据进行转换(对应linkToImgUrl)，以满足内置的数据结构 */\n    linkToImgFormat?(responseText: string): string;\n\n    /** 将上传的文件处理后再返回  */\n    file?(files: File[]): File[] | Promise<File[]>;\n\n    /** 取消正在上传的文件  */\n    cancel?(files: File[]): void;\n\n    /** 图片地址上传后的回调  */\n    linkToImgCallback?(responseText: string): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-toolbar */\ninterface IMenuItem {\n    /** 唯一标示 */\n    name: string;\n    /** svg 图标 HTML */\n    icon?: string;\n    /** 元素的样式名称 */\n    className?: string;\n    /** 提示 */\n    tip?: string;\n    /** 快捷键，支持⌘/ctrl-key 或 ⌘/ctrl-⇧/shift-key 格式的配置，不支持 wysiwyg 模式 */\n    hotkey?: string;\n    /** 插入编辑器中的后缀 */\n    suffix?: string;\n    /** 插入编辑器中的前缀 */\n    prefix?: string;\n    /** 提示位置：ne, nw */\n    tipPosition?: string;\n    /** 子菜单 */\n    toolbar?: Array<string | IMenuItem>;\n    /** 菜单层级，最大为 3，内部使用 */\n    level?: number;\n\n    /** 自定义按钮点击时触发的事件 */\n    click?(event: Event, vditor: IVditor): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-hljs */\ninterface IHljs {\n    /** 代码块没有指定语言时，使用此值。默认值: \"\" */\n    defaultLang?: string;\n    /** 是否启用行号。默认值: false */\n    lineNumber?: boolean;\n    /** 代码风格，可选值参见 [Chroma](https://xyproto.github.io/splash/docs/longer/all.html)。 默认值: 'github' */\n    style?: string;\n    /** 是否启用代码高亮。默认值: true */\n    enable?: boolean;\n    /** 自定义指定语言: CODE_LANGUAGES */\n    langs?: string[];\n\n    /** 渲染右上角菜单按钮 */\n    renderMenu?(element: HTMLElement, menuElement: HTMLElement): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-math */\ninterface IMath {\n    /** 内联数学公式起始 $ 后是否允许数字。默认值: false */\n    inlineDigit?: boolean;\n    /** 使用 MathJax 渲染时传入的宏定义。默认值: {} */\n    macros?: object;\n    /** 数学公式渲染引擎。默认值: 'KaTeX' */\n    engine?: \"KaTeX\" | \"MathJax\";\n    /** 数学公式渲染引擎为 MathJax 时传入的参数 */\n    mathJaxOptions?: any;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-markdown */\ninterface IMarkdownConfig {\n    /** 自动空格。默认值: false */\n    autoSpace?: boolean;\n    /** 段落开头是否空两格。默认值: false */\n    paragraphBeginningSpace?: boolean;\n    /** 自动矫正术语。默认值: false */\n    fixTermTypo?: boolean;\n    /** 插入目录。默认值: false */\n    toc?: boolean;\n    /** 脚注。默认值: true */\n    footnotes?: boolean;\n    /** wysiwyg & ir 模式代码块是否渲染。默认值: true */\n    codeBlockPreview?: boolean;\n    /** wysiwyg & ir 模式数学公式块是否渲染。默认值: true */\n    mathBlockPreview?: boolean;\n    /** 是否启用过滤 XSS。默认值: true */\n    sanitize?: boolean;\n    /** 链接相对路径前缀。默认值：'' */\n    linkBase?: string;\n    /** 链接强制前缀。默认值：'' */\n    linkPrefix?: string;\n    /** 为列表添加标记，以便[自定义列表样式](https://github.com/Vanessa219/vditor/issues/390) 默认值：false */\n    listStyle?: boolean;\n    /** 支持 mark 标记 */\n    mark?: boolean;\n    /** 支持自动链接 */\n    gfmAutoLink?: boolean;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview */\ninterface IPreview {\n    /** 预览 debounce 毫秒间隔。默认值: 1000 */\n    delay?: number;\n    /** 预览区域最大宽度。默认值: 768 */\n    maxWidth?: number;\n    /** 显示模式。默认值: 'both' */\n    mode?: \"both\" | \"editor\";\n    /** md 解析请求 */\n    url?: string;\n    /** @link https://ld246.com/article/1549638745630#options-preview-hljs */\n    hljs?: IHljs;\n    /** @link https://ld246.com/article/1549638745630#options-preview-math */\n    math?: IMath;\n    /** @link https://ld246.com/article/1549638745630#options-preview-markdown */\n    markdown?: IMarkdownConfig;\n    /** @link https://ld246.com/article/1549638745630#options-preview-theme */\n    theme?: IPreviewTheme;\n    /** @link https://ld246.com/article/1549638745630#options-preview-actions  */\n    actions?: Array<IPreviewAction | IPreviewActionCustom>;\n    render?: IPreviewRender;\n\n    /** 预览回调 */\n    parse?(element: HTMLElement): void;\n\n    /** 渲染之前回调 */\n    transform?(html: string): string;\n}\n\ninterface IPreviewRender {\n    media?: {\n        enable?: boolean;\n    };\n}\n\ntype IPreviewAction = \"desktop\" | \"tablet\" | \"mobile\" | \"mp-wechat\" | \"zhihu\";\n\ninterface IPreviewActionCustom {\n    /** 键名 */\n    key: string;\n    /** 按钮文本 */\n    text: string;\n    /** 按钮 className 值 */\n    className?: string;\n    /** 按钮提示信息 */\n    tooltip?: string;\n    /** 点击回调 */\n    click: (key: string) => void;\n}\n\ninterface IPreviewOptions {\n    mode: \"dark\" | \"light\";\n    customEmoji?: IObject;\n    lang?: (keyof II18n);\n    i18n?: ITips;\n    lazyLoadImage?: string;\n    emojiPath?: string;\n    hljs?: IHljs;\n    speech?: {\n        enable?: boolean,\n    };\n    anchor?: number; // 0: no render, 1: render left, 2: render right\n    math?: IMath;\n    cdn?: string;\n    markdown?: IMarkdownConfig;\n    renderers?: ILuteRender;\n    theme?: IPreviewTheme;\n    icon?: \"ant\" | \"material\" | undefined;\n    render?: IPreviewRender;\n\n    transform?(html: string): string;\n\n    after?(): void;\n}\n\ninterface IHintData {\n    html: string;\n    value: string;\n}\n\ninterface IHintExtend {\n    key: string;\n\n    hint?(value: string): IHintData[] | Promise<IHintData[]>;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-hint */\ninterface IHint {\n    /** 提示内容是否进行 md 解析 */\n    parse?: boolean;\n    /** 常用表情提示 HTML */\n    emojiTail?: string;\n    /** 提示 debounce 毫秒间隔。默认值: 200 */\n    delay?: number;\n    /** 默认表情，可从 [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go#L32) 中选取，也可自定义 */\n    emoji?: IObject;\n    /** 表情图片地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}/dist/images/emoji' */\n    emojiPath?: string;\n    extend?: IHintExtend[];\n}\n\n/** @link https://ld246.com/article/1549638745630#options-toolbarConfig */\ninterface IToolbarConfig {\n    /** 是否隐藏工具栏。默认值: false */\n    hide?: boolean;\n    /** 是否固定工具栏。默认值: false */\n    pin?: boolean;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-comment */\ninterface IComment {\n    /** 是否启用评论模式。默认值: false */\n    enable: boolean;\n\n    /** 添加评论回调 */\n    add?(id: string, text: string, commentsData: ICommentsData[]): void;\n\n    /** 删除评论回调 */\n    remove?(ids: string[]): void;\n\n    /** 滚动回调 */\n    scroll?(top: number): void;\n\n    /** 文档修改时，适配评论高度 */\n    adjustTop?(commentsData: ICommentsData[]): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-outline */\ninterface IOutline {\n    /** 初始化是否展现大纲。默认值: false */\n    enable: boolean;\n    /** 大纲位置：'left', 'right'。默认值: 'left' */\n    position: \"left\" | \"right\";\n}\n\ninterface IResize {\n    position?: string;\n    enable?: boolean;\n\n    after?(height: number): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options */\ninterface IOptions {\n    /** RTL */\n    rtl?: boolean;\n    /** 历史记录间隔 */\n    undoDelay?: number;\n    /** 内部调试时使用 */\n    _lutePath?: string;\n    /** 编辑器初始化值。默认值: '' */\n    value?: string;\n    /** 是否显示日志。默认值: false */\n    debugger?: boolean;\n    /** 是否启用打字机模式。默认值: false */\n    typewriterMode?: boolean;\n    /** 编辑器总高度。默认值: 'auto' */\n    height?: number | string;\n    /** 编辑器最小高度 */\n    minHeight?: number;\n    /** 编辑器总宽度，支持 %。默认值: 'auto' */\n    width?: number | string;\n    /** 输入区域为空时的提示。默认值: '' */\n    placeholder?: string;\n    /** 多语言。默认值: 'zh_CN' */\n    lang?: (keyof II18n);\n    /** 国际化, 自定义语言。优先级低于lang */\n    i18n?: ITips;\n    /** @link https://ld246.com/article/1549638745630#options-fullscreen */\n    fullscreen?: {\n        /** 全屏层级。默认值: 90 */\n        index: number;\n    };\n    /** @link https://ld246.com/article/1549638745630#options-toolbar */\n    toolbar?: Array<string | IMenuItem>;\n    /** @link https://ld246.com/article/1549638745630#options-resize */\n    resize?: IResize;\n    /** @link https://ld246.com/article/1549638745630#options-counter */\n    counter?: {\n        /** 是否启用计数器。默认值: false */\n        enable: boolean;\n        /** 允许输入的最大值 */\n        max?: number;\n        /** 统计类型。默认值: 'markdown' */\n        type?: \"markdown\" | \"text\";\n        /** 字数统计回调。 */\n        after?(length: number, counter: {\n            /** 是否启用计数器。默认值: false */\n            enable: boolean;\n            /** 允许输入的最大值 */\n            max?: number;\n            /** 统计类型。默认值: 'markdown' */\n            type?: \"markdown\" | \"text\"\n        }): void\n    };\n    /** @link https://ld246.com/article/1549638745630#options-cache */\n    cache?: {\n        /** 缓存 key，第一个参数为元素且启用缓存时必填 */\n        id?: string;\n        /** 是否使用 localStorage 进行缓存。默认值: true */\n        enable?: boolean;\n        /** 缓存后的回调 */\n        after?(markdown: string): void;\n    };\n    /** 编辑模式。默认值: 'wysiwyg'\n     *\n     * wysiwyg: 所见即所得\n     *\n     * ir: 即时渲染\n     *\n     * sv: 分屏预览\n     */\n    mode?: \"wysiwyg\" | \"sv\" | \"ir\";\n    /** @link https://ld246.com/article/1549638745630#options-preview */\n    preview?: IPreview;\n    /** @link https://ld246.com/article/1549638745630#options-link */\n    link?: {\n        /** 是否打开链接地址。默认值: true */\n        isOpen?: boolean;\n        /** 点击链接事件 */\n        click?: (bom: Element) => void;\n    },\n    /** @link https://ld246.com/article/1549638745630#options-image */\n    image?: {\n        /** 是否预览图片。默认值: true */\n        isPreview?: boolean;\n        /** 图片预览处理 */\n        preview?: (bom: Element) => void;\n    },\n    /** @link https://ld246.com/article/1549638745630#options-hint */\n    hint?: IHint;\n    /** @link https://ld246.com/article/1549638745630#options-toolbarConfig */\n    toolbarConfig?: IToolbarConfig;\n    /** 评论\n     * @link https://ld246.com/article/1549638745630#options-comment\n     */\n    comment?: IComment;\n    /** 主题。默认值: 'classic' */\n    theme?: \"classic\" | \"dark\";\n    /** 图标。默认值: 'ant' */\n    icon?: \"ant\" | \"material\";\n    /** @link https://ld246.com/article/1549638745630#options-upload */\n    upload?: IUpload;\n    /** @link https://ld246.com/article/1549638745630#options-classes */\n    classes?: IClasses;\n    /** 配置自建 CDN 地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}' */\n    cdn?: string;\n    /** tab 键操作字符串，支持 \\t 及任意字符串 */\n    tab?: string;\n    /** @link https://ld246.com/article/1549638745630#options-outline */\n    outline?: IOutline;\n    customRenders?: {\n        language: string,\n        render: (element: HTMLElement, vditor: IVditor) => void\n    }[],\n\n    /** 编辑器异步渲染完成后的回调方法 */\n    after?(): void;\n\n    /** 输入后触发 */\n    input?(value: string): void;\n\n    /** 聚焦后触发  */\n    focus?(value: string): void;\n\n    /** 失焦后触发 */\n    blur?(value: string): void;\n\n    /** 按下键盘触发 */\n    keydown?(event: KeyboardEvent): void;\n\n    /** `esc` 按下后触发 */\n    esc?(value: string): void;\n\n    /** `⌘/ctrl+enter` 按下后触发 */\n    ctrlEnter?(value: string): void;\n\n    /** 编辑器中选中文字后触发 */\n    select?(value: string): void;\n\n    /** 编辑器中未选中文字后触发 */\n    unSelect?(): void;\n}\n\ninterface IEChart {\n    setOption(option: any): void;\n\n    resize(): void;\n}\n\ninterface IVditor {\n    element: HTMLElement;\n    options: IOptions;\n    originalInnerHTML: string;\n    lute: Lute;\n    currentMode: \"sv\" | \"wysiwyg\" | \"ir\";\n    devtools?: {\n        element: HTMLDivElement,\n        renderEchart(vditor: IVditor): void,\n    };\n    outline: {\n        element: HTMLElement,\n        render(vditor: IVditor): string,\n        toggle(vditor: IVditor, show?: boolean, focus?: boolean): void,\n    };\n    toolbar?: {\n        elements?: { [key: string]: HTMLElement },\n        element?: HTMLElement,\n        updateConfig(vditor: IVditor, options: IToolbarConfig): void,\n    };\n    preview?: {\n        element: HTMLElement,\n        previewElement: HTMLElement,\n        render(vditor: IVditor, value?: string): void,\n    };\n    counter?: {\n        element: HTMLElement\n        render(vditor: IVditor, mdText?: string): void,\n    };\n    resize?: {\n        element: HTMLElement,\n    };\n    hint: {\n        timeId: number\n        element: HTMLDivElement\n        recentLanguage: string\n        fillEmoji(element: HTMLElement, vditor: IVditor): void\n        render(vditor: IVditor): void,\n        genHTML(data: IHintData[], key: string, vditor: IVditor): void\n        select(event: KeyboardEvent, vditor: IVditor): boolean,\n    };\n    tip: {\n        element: HTMLElement\n        show(text: string, time?: number): void\n        hide(): void,\n    };\n    upload?: {\n        element: HTMLElement\n        isUploading: boolean\n        range: Range,\n        xhr?: XMLHttpRequest,\n    };\n    undo?: {\n        clearStack(vditor: IVditor): void,\n        redo(vditor: IVditor): void\n        undo(vditor: IVditor): void\n        addToUndoStack(vditor: IVditor): void\n        recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void,\n        resetIcon(vditor: IVditor): void,\n    };\n    wysiwyg?: {\n        range: Range,\n        element: HTMLPreElement,\n        selectPopover: HTMLDivElement,\n        popover: HTMLDivElement,\n        afterRenderTimeoutId: number,\n        hlToolbarTimeoutId: number,\n        preventInput: boolean,\n        composingLock: boolean,\n        commentIds: string[]\n        getComments(vditor: IVditor, getData?: boolean): ICommentsData[],\n        triggerRemoveComment(vditor: IVditor): void,\n        showComment(): void,\n        hideComment(): void,\n        unbindListener(): void,\n    };\n    ir?: {\n        range: Range,\n        element: HTMLPreElement,\n        composingLock: boolean,\n        preventInput: boolean,\n        processTimeoutId: number,\n        hlToolbarTimeoutId: number,\n    };\n    sv?: {\n        range: Range,\n        element: HTMLPreElement,\n        processTimeoutId: number,\n        hlToolbarTimeoutId: number,\n        composingLock: boolean,\n        preventInput: boolean,\n    };\n}\n\ninterface ICommentsData {\n    id: string;\n    top: number;\n}\n"
  },
  {
    "path": "src/frontend/client/readme.md",
    "content": "\n\nconst { showToast } = useToastContext();\nshowToast({ message: 'xxx', status: 'error' });\n\n\n __APP_ENV__.BASE_URL\n __APP_ENV__.BISHENG_HOST"
  },
  {
    "path": "src/frontend/client/src/@types/chat.ts",
    "content": "// 技能&工作流详情\nexport interface FlowData {\n  create_time: string; // ISO 8601 format date string\n  data: {\n    edges: any[]; // Replace 'any' with a more specific type if you know the structure\n    nodes: any[]; // Replace 'any' with a more specific type if you know the structure\n    viewport: Record<string, unknown>; // Or a more specific type if viewport structure is known\n  };\n  description: string;\n  flow_type: number;\n  guide_word: null | string; // Assuming it can be null or string\n  id: string;\n  logo: string;\n  name: string;\n  status: number;\n  update_time: string; // ISO 8601 format date string\n  user_id: null | string; // Assuming it can be null or string\n}\n\n//\nexport type ChatMessageType = {\n  message: string | Object;\n  template?: string;\n  isSend: boolean;\n  thought?: string;\n  category?: string;\n  files?: Array<{ data: string; type: string; data_type: string, file_name?: string }>;\n  chatKey: string;\n  end: boolean;\n  id?: number;\n  source?: number;\n  noAccess?: boolean;\n  user_name: string;\n  at?: string;\n  /** 用户名 */\n  sender?: string;\n  /** @某人 */\n  receiver?: any;\n  liked?: boolean;\n  extra?: string;\n  create_time: string;\n  update_time: string;\n  reasoning_log?: string;\n};\n\nexport interface ChatVersion {\n  id: string\n  name: string\n  createdAt: number\n  updatedAt: number\n}\n\nexport interface Chat {\n  flow: FlowData,\n  messages: ChatMessageType[],\n  /* 没有更多历史消息 */\n  historyEnd: boolean\n}\n\nexport interface SubmitData {\n  input?: string,\n  action: string,\n  chatId?: string,\n  flowId?: string,\n  nodeId?: string,\n  msgId?: string,\n  data?: any,\n  flow?: FlowData,\n  files?: any[]\n}\n\nexport interface WebSocketStatus {\n  connected: boolean\n  connecting: boolean\n  error: string | null\n}\n\n// 运行状态\nexport interface RunningStatus {\n  /** 是否正在运行 */\n  running: boolean;\n  /** 输入框禁用状态 */\n  inputDisabled: boolean;\n  /** 失败原因 */\n  error: { code: string, data: any };\n  /** 展示form表单 */\n  inputForm: any;\n  /** 展示上传按钮 */\n  showUpload: boolean;\n  /** 展示stop按钮 */\n  showStop: boolean;\n  /** 引导词 */\n  guideWord?: string[];\n  /** 重新运行展示 */\n  showReRun?: boolean;\n}\n\n// 毕昇配置\nexport type BishengConfig = {\n  env: string;\n  uns_support: string[];\n  office_url: string;\n  dialog_tips: string;\n  dialog_quick_search: string;\n  websocket_url: string;\n  pro: boolean;\n  sso: boolean;\n  application_usage_tips: boolean;\n  show_github_and_help: boolean;\n  version: string;\n  /** 注册入口 */\n  enable_registration: boolean;\n  /** 最大上传文件大小 mb */\n  uploaded_files_maximum_size: number;\n  /** 是否部署 ETL4LM  */\n  enable_etl4lm: boolean;\n};\n"
  },
  {
    "path": "src/frontend/client/src/@types/i18next.d.ts",
    "content": "import { defaultNS, resources } from '~/locales/i18n';\n\ndeclare module 'i18next' {\n    interface CustomTypeOptions {\n        defaultNS: typeof defaultNS;\n        resources: typeof resources.en;\n        strictKeyChecks: true\n    }\n}"
  },
  {
    "path": "src/frontend/client/src/@types/index.ts",
    "content": "export * from './model';\nexport * from './chat';\n\n\n"
  },
  {
    "path": "src/frontend/client/src/@types/model.ts",
    "content": "export interface ModelInfo {\n    key: string | null;\n    id: string;\n    name: string | null;\n    displayName: string | null;\n}\n\nexport interface SelectModel {\n    task_model: ModelInfo;\n    embedding_model: ModelInfo;\n    linsight_executor_mode: string;\n    asr_model: ModelInfo;\n    tts_model: ModelInfo;\n}\n\nexport interface Response<T> {\n    code: number;\n    message: string;\n    data: T;\n}\n\nexport type SelectModelResponse = Response<SelectModel>;"
  },
  {
    "path": "src/frontend/client/src/App.jsx",
    "content": "import * as RadixToast from '@radix-ui/react-toast';\nimport { QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { RouterProvider } from 'react-router-dom';\nimport { RecoilRoot } from 'recoil';\nimport { LiveAnnouncer } from '~/a11y';\nimport Toast from './components/ui/Toast';\nimport { ScreenshotProvider, ThemeProvider, useApiErrorBoundary } from './hooks';\nimport { ToastProvider } from './Providers';\nimport { router } from './routes';\n\nconst App = () => {\n  const { setError } = useApiErrorBoundary();\n\n  const queryClient = new QueryClient({\n    queryCache: new QueryCache({\n      onError: (error) => {\n        if (error?.response?.status === 401) {\n          setError(error);\n        }\n      },\n    }),\n  });\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <RecoilRoot>\n        <LiveAnnouncer>\n          <ThemeProvider>\n            <RadixToast.Provider>\n              <ToastProvider>\n                <DndProvider backend={HTML5Backend}>\n                  <RouterProvider router={router} />\n                  {/* <ReactQueryDevtools initialIsOpen={false} position=\"top-right\" /> */}\n                  <Toast />\n                  <RadixToast.Viewport className=\"pointer-events-none fixed inset-0 z-[1000] mx-auto my-2 flex max-w-[560px] flex-col items-stretch justify-start md:pb-5\" />\n                </DndProvider>\n              </ToastProvider>\n            </RadixToast.Provider>\n          </ThemeProvider>\n        </LiveAnnouncer>\n      </RecoilRoot>\n    </QueryClientProvider>\n  );\n};\n\nexport default () => (\n  <ScreenshotProvider>\n    <App />\n  </ScreenshotProvider>\n);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AddedChatContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport useAddedResponse from '~/hooks/Chat/useAddedResponse';\ntype TAddedChatContext = ReturnType<typeof useAddedResponse>;\n\nexport const AddedChatContext = createContext<TAddedChatContext>({} as TAddedChatContext);\nexport const useAddedChatContext = () => useContext(AddedChatContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AgentsContext.tsx",
    "content": "import { useForm, FormProvider } from 'react-hook-form';\nimport { createContext, useContext } from 'react';\nimport { defaultAgentFormValues } from '~/data-provider/data-provider/src';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type { AgentForm } from '~/common';\n\ntype AgentsContextType = UseFormReturn<AgentForm>;\n\nexport const AgentsContext = createContext<AgentsContextType>({} as AgentsContextType);\n\nexport function useAgentsContext() {\n  const context = useContext(AgentsContext);\n\n  if (context === undefined) {\n    throw new Error('useAgentsContext must be used within an AgentsProvider');\n  }\n\n  return context;\n}\n\nexport default function AgentsProvider({ children }) {\n  const methods = useForm<AgentForm>({\n    defaultValues: defaultAgentFormValues,\n  });\n\n  return <FormProvider {...methods}>{children}</FormProvider>;\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AgentsMapContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport useAgentsMap from '~/hooks/Agents/useAgentsMap';\ntype AgentsMapContextType = ReturnType<typeof useAgentsMap>;\n\nexport const AgentsMapContext = createContext<AgentsMapContextType>({} as AgentsMapContextType);\nexport const useAgentsMapContext = () => useContext(AgentsMapContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AnnouncerContext.tsx",
    "content": "// AnnouncerContext.tsx\nimport React from 'react';\nimport type { AnnounceOptions } from '~/common';\n\ninterface AnnouncerContextType {\n  announceAssertive: (options: AnnounceOptions) => void;\n  announcePolite: (options: AnnounceOptions) => void;\n}\n\nconst defaultContext: AnnouncerContextType = {\n  announceAssertive: () => console.warn('Announcement failed, LiveAnnouncer context is missing'),\n  announcePolite: () => console.warn('Announcement failed, LiveAnnouncer context is missing'),\n};\n\nconst AnnouncerContext = React.createContext<AnnouncerContextType>(defaultContext);\n\nexport const useLiveAnnouncer = () => {\n  const context = React.useContext(AnnouncerContext);\n  return context;\n};\n\nexport default AnnouncerContext;\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ArtifactContext.tsx",
    "content": "import { createContext, useContext, ReactNode, useCallback, useRef } from 'react';\n\ntype TArtifactContext = {\n  getNextIndex: (skip: boolean) => number;\n  resetCounter: () => void;\n};\n\nexport const ArtifactContext = createContext<TArtifactContext>({} as TArtifactContext);\nexport const useArtifactContext = () => useContext(ArtifactContext);\n\nexport function ArtifactProvider({ children }: { children: ReactNode }) {\n  const counterRef = useRef(0);\n\n  const getNextIndex = useCallback((skip: boolean) => {\n    if (skip) {\n      return counterRef.current;\n    }\n    const nextIndex = counterRef.current;\n    counterRef.current += 1;\n    return nextIndex;\n  }, []);\n\n  const resetCounter = useCallback(() => {\n    counterRef.current = 0;\n  }, []);\n\n  return (\n    <ArtifactContext.Provider value={{ getNextIndex, resetCounter }}>\n      {children}\n    </ArtifactContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AssistantsContext.tsx",
    "content": "import { useForm, FormProvider } from 'react-hook-form';\nimport { createContext, useContext } from 'react';\nimport { defaultAssistantFormValues } from '~/data-provider/data-provider/src';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type { AssistantForm } from '~/common';\n\ntype AssistantsContextType = UseFormReturn<AssistantForm>;\n\nexport const AssistantsContext = createContext<AssistantsContextType>({} as AssistantsContextType);\n\nexport function useAssistantsContext() {\n  const context = useContext(AssistantsContext);\n\n  if (context === undefined) {\n    throw new Error('useAssistantsContext must be used within an AssistantsProvider');\n  }\n\n  return context;\n}\n\nexport default function AssistantsProvider({ children }) {\n  const methods = useForm<AssistantForm>({\n    defaultValues: defaultAssistantFormValues,\n  });\n\n  return <FormProvider {...methods}>{children}</FormProvider>;\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/AssistantsMapContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport { useAssistantsMap } from '~/hooks/Assistants';\ntype AssistantsMapContextType = ReturnType<typeof useAssistantsMap>;\n\nexport const AssistantsMapContext = createContext<AssistantsMapContextType>(\n  {} as AssistantsMapContextType,\n);\nexport const useAssistantsMapContext = () => useContext(AssistantsMapContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/BookmarkContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport type { TConversationTag } from '~/data-provider/data-provider/src';\n\ntype TBookmarkContext = { bookmarks: TConversationTag[] };\n\nexport const BookmarkContext = createContext<TBookmarkContext>({\n  bookmarks: [],\n} as TBookmarkContext);\nexport const useBookmarkContext = () => useContext(BookmarkContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ChatContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport useChatHelpers from '~/hooks/Chat/useChatHelpers';\ntype TChatContext = ReturnType<typeof useChatHelpers>;\n\nexport const ChatContext = createContext<TChatContext>({} as TChatContext);\nexport const useChatContext = () => useContext(ChatContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ChatFormContext.tsx",
    "content": "import { createFormContext } from './CustomFormContext';\nimport type { ChatFormValues } from '~/common';\n\nconst { CustomFormProvider, useCustomFormContext } = createFormContext<ChatFormValues>();\n\nexport { CustomFormProvider as ChatFormProvider, useCustomFormContext as useChatFormContext };\n"
  },
  {
    "path": "src/frontend/client/src/Providers/CodeBlockContext.tsx",
    "content": "import { createContext, useContext, ReactNode, useCallback, useRef } from 'react';\n\ntype TCodeBlockContext = {\n  getNextIndex: (skip: boolean) => number;\n  resetCounter: () => void;\n};\n\nexport const CodeBlockContext = createContext<TCodeBlockContext>({} as TCodeBlockContext);\nexport const useCodeBlockContext = () => useContext(CodeBlockContext);\n\nexport function CodeBlockProvider({ children }: { children: ReactNode }) {\n  const counterRef = useRef(0);\n\n  const getNextIndex = useCallback((skip: boolean) => {\n    if (skip) {\n      return counterRef.current;\n    }\n    const nextIndex = counterRef.current;\n    counterRef.current += 1;\n    return nextIndex;\n  }, []);\n\n  const resetCounter = useCallback(() => {\n    counterRef.current = 0;\n  }, []);\n\n  return (\n    <CodeBlockContext.Provider value={{ getNextIndex, resetCounter }}>\n      {children}\n    </CodeBlockContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/CustomFormContext.tsx",
    "content": "import React, { createContext, PropsWithChildren, ReactElement, useContext, useMemo } from 'react';\nimport type {\n  Control,\n  // FieldErrors,\n  FieldValues,\n  UseFormReset,\n  UseFormRegister,\n  UseFormGetValues,\n  UseFormHandleSubmit,\n  UseFormSetValue,\n} from 'react-hook-form';\n\ninterface FormContextValue<TFieldValues extends FieldValues> {\n  register: UseFormRegister<TFieldValues>;\n  control: Control<TFieldValues>;\n  // errors: FieldErrors<TFieldValues>;\n  getValues: UseFormGetValues<TFieldValues>;\n  setValue: UseFormSetValue<TFieldValues>;\n  handleSubmit: UseFormHandleSubmit<TFieldValues>;\n  reset: UseFormReset<TFieldValues>;\n}\n\nfunction createFormContext<TFieldValues extends FieldValues>() {\n  const context = createContext<FormContextValue<TFieldValues> | undefined>(undefined);\n\n  const useCustomFormContext = (): FormContextValue<TFieldValues> => {\n    const value = useContext(context);\n    if (!value) {\n      throw new Error('useCustomFormContext must be used within a CustomFormProvider');\n    }\n    return value;\n  };\n\n  const CustomFormProvider = ({\n    register,\n    control,\n    setValue,\n    // errors,\n    getValues,\n    handleSubmit,\n    reset,\n    children,\n  }: PropsWithChildren<FormContextValue<TFieldValues>>): ReactElement => {\n    const value = useMemo(\n      () => ({ register, control, getValues, setValue, handleSubmit, reset }),\n      [register, control, setValue, getValues, handleSubmit, reset],\n    );\n\n    return <context.Provider value={value}>{children}</context.Provider>;\n  };\n\n  return { CustomFormProvider, useCustomFormContext };\n}\n\nexport type { FormContextValue };\nexport { createFormContext };\n"
  },
  {
    "path": "src/frontend/client/src/Providers/DashboardContext.tsx",
    "content": "import { createContext, useContext } from 'react';\ntype TDashboardContext = {\n  prevLocationPath: string;\n};\n\nexport const DashboardContext = createContext<TDashboardContext>({} as TDashboardContext);\nexport const useDashboardContext = () => useContext(DashboardContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/EditorContext.tsx",
    "content": "import React, { createContext, useContext, useState } from 'react';\n\ninterface EditorContextType {\n  isMutating: boolean;\n  setIsMutating: React.Dispatch<React.SetStateAction<boolean>>;\n  currentCode?: string;\n  setCurrentCode: React.Dispatch<React.SetStateAction<string | undefined>>;\n}\n\nconst EditorContext = createContext<EditorContextType | undefined>(undefined);\n\nexport function EditorProvider({ children }: { children: React.ReactNode }) {\n  const [isMutating, setIsMutating] = useState(false);\n  const [currentCode, setCurrentCode] = useState<string | undefined>();\n\n  return (\n    <EditorContext.Provider value={{ isMutating, setIsMutating, currentCode, setCurrentCode }}>\n      {children}\n    </EditorContext.Provider>\n  );\n}\n\nexport function useEditorContext() {\n  const context = useContext(EditorContext);\n  if (context === undefined) {\n    throw new Error('useEditorContext must be used within an EditorProvider');\n  }\n  return context;\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/FileMapContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport { useFileMap } from '~/hooks/Files';\ntype FileMapContextType = ReturnType<typeof useFileMap>;\n\nexport const FileMapContext = createContext<FileMapContextType>({} as FileMapContextType);\nexport const useFileMapContext = () => useContext(FileMapContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/MessageContext.tsx",
    "content": "import { createContext, useContext } from 'react';\ntype MessageContext = {\n  messageId: string;\n  nextType?: string;\n  partIndex?: number;\n  isExpanded: boolean;\n  conversationId?: string | null;\n};\n\nexport const MessageContext = createContext<MessageContext>({} as MessageContext);\nexport const useMessageContext = () => useContext(MessageContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/SearchContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport useSearch from '~/hooks/Conversations/useSearch';\ntype SearchContextType = ReturnType<typeof useSearch>;\n\nexport const SearchContext = createContext<SearchContextType>({} as SearchContextType);\nexport const useSearchContext = () => useContext(SearchContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/SetConvoContext.tsx",
    "content": "import { createContext, useContext, useRef } from 'react';\nimport type { MutableRefObject } from 'react';\n\ntype SetConvoContext = MutableRefObject<boolean>;\n\nexport const SetConvoContext = createContext<SetConvoContext>({} as SetConvoContext);\n\nexport const SetConvoProvider = ({ children }: { children: React.ReactNode }) => {\n  const hasSetConversation = useRef<boolean>(false);\n\n  return <SetConvoContext.Provider value={hasSetConversation}>{children}</SetConvoContext.Provider>;\n};\n\nexport const useSetConvoContext = () => useContext(SetConvoContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ShareContext.tsx",
    "content": "import { createContext, useContext } from 'react';\ntype TShareContext = { isSharedConvo?: boolean };\n\nexport const ShareContext = createContext<TShareContext>({} as TShareContext);\nexport const useShareContext = () => useContext(ShareContext);\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ToastContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport type { TShowToast } from '~/common';\nimport useToast from '~/hooks/useToast';\n\ntype ToastContextType = {\n  showToast: ({ message, severity, showIcon, duration }: TShowToast) => void;\n};\n\nexport const ToastContext = createContext<ToastContextType>({\n  showToast: () => ({}),\n});\n\nexport function useToastContext() {\n  return useContext(ToastContext);\n}\n\nexport default function ToastProvider({ children }) {\n  const { showToast } = useToast();\n\n  return <ToastContext.Provider value={{ showToast }}>{children}</ToastContext.Provider>;\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/ToolCallsMapContext.tsx",
    "content": "import { createContext, useContext } from 'react';\nimport useToolCallsMap from '~/hooks/Plugins/useToolCallsMap';\ntype ToolCallsMapContextType = ReturnType<typeof useToolCallsMap>;\n\nexport const ToolCallsMapContext = createContext<ToolCallsMapContextType>(\n  {} as ToolCallsMapContextType,\n);\nexport const useToolCallsMapContext = () => useContext(ToolCallsMapContext);\n\ninterface ToolCallsMapProviderProps {\n  children: React.ReactNode;\n  conversationId: string;\n}\n\nexport function ToolCallsMapProvider({ children, conversationId }: ToolCallsMapProviderProps) {\n  const toolCallsMap = useToolCallsMap({ conversationId });\n\n  return (\n    <ToolCallsMapContext.Provider value={toolCallsMap}>{children}</ToolCallsMapContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/Providers/index.ts",
    "content": "export { default as ToastProvider } from './ToastContext';\nexport { default as AssistantsProvider } from './AssistantsContext';\nexport { default as AgentsProvider } from './AgentsContext';\nexport * from './ChatContext';\nexport * from './ShareContext';\nexport * from './ToastContext';\nexport * from './SearchContext';\nexport * from './FileMapContext';\nexport * from './AddedChatContext';\nexport * from './EditorContext';\nexport * from './ChatFormContext';\nexport * from './BookmarkContext';\nexport * from './MessageContext';\nexport * from './DashboardContext';\nexport * from './AssistantsContext';\nexport * from './AgentsContext';\nexport * from './AssistantsMapContext';\nexport * from './AnnouncerContext';\nexport * from './AgentsMapContext';\nexport * from './ArtifactContext';\nexport * from './CodeBlockContext';\nexport * from './ToolCallsMapContext';\nexport * from './SetConvoContext';\n"
  },
  {
    "path": "src/frontend/client/src/a11y/Announcer.tsx",
    "content": "// client/src/a11y/Announcer.tsx\nimport React from 'react';\n\ninterface AnnouncerProps {\n  statusMessage: string;\n  logMessage: string;\n}\n\nconst Announcer: React.FC<AnnouncerProps> = ({ statusMessage, logMessage }) => {\n  return (\n    <div className=\"sr-only\">\n      <div aria-live=\"polite\" aria-atomic=\"true\">\n        {statusMessage}\n      </div>\n      <div aria-live=\"polite\" aria-atomic=\"true\">\n        {logMessage}\n      </div>\n    </div>\n  );\n};\n\nexport default Announcer;\n"
  },
  {
    "path": "src/frontend/client/src/a11y/LiveAnnouncer.tsx",
    "content": "// client/src/a11y/LiveAnnouncer.tsx\nimport React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';\nimport type { AnnounceOptions } from '~/common';\nimport AnnouncerContext from '~/Providers/AnnouncerContext';\nimport useLocalize from '~/hooks/useLocalize';\nimport Announcer from './Announcer';\n\ninterface LiveAnnouncerProps {\n  children: React.ReactNode;\n}\n\nconst LiveAnnouncer: React.FC<LiveAnnouncerProps> = ({ children }) => {\n  const [statusMessage, setStatusMessage] = useState('');\n  const [logMessage, setLogMessage] = useState('');\n\n  const statusTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n  const localize = useLocalize();\n\n  const events: Record<string, string | undefined> = useMemo(\n    () => ({\n      start: localize('com_a11y_start'),\n      end: localize('com_a11y_end'),\n      composing: localize('com_a11y_ai_composing'),\n    }),\n    [localize],\n  );\n\n  const announceStatus = useCallback((message: string) => {\n    if (statusTimeoutRef.current) {\n      clearTimeout(statusTimeoutRef.current);\n    }\n\n    setStatusMessage(message);\n\n    statusTimeoutRef.current = setTimeout(() => {\n      setStatusMessage('');\n    }, 1000);\n  }, []);\n\n  const announceLog = useCallback((message: string) => {\n    setLogMessage(message);\n  }, []);\n\n  const announcePolite = useCallback(\n    ({ message, isStatus = false }: AnnounceOptions) => {\n      const finalMessage = (events[message] ?? message).replace(/[*`_]/g, '');\n\n      if (isStatus) {\n        announceStatus(finalMessage);\n      } else {\n        announceLog(finalMessage);\n      }\n    },\n    [events, announceStatus, announceLog],\n  );\n\n  const announceAssertive = announcePolite;\n\n  const contextValue = {\n    announcePolite,\n    announceAssertive,\n  };\n\n  useEffect(() => {\n    return () => {\n      if (statusTimeoutRef.current) {\n        clearTimeout(statusTimeoutRef.current);\n      }\n    };\n  }, []);\n\n  return (\n    <AnnouncerContext.Provider value={contextValue}>\n      {children}\n      <Announcer statusMessage={statusMessage} logMessage={logMessage} />\n    </AnnouncerContext.Provider>\n  );\n};\n\nexport default LiveAnnouncer;\n"
  },
  {
    "path": "src/frontend/client/src/a11y/LiveMessage.tsx",
    "content": "import React, { useEffect, useContext } from 'react';\nimport AnnouncerContext from '~/Providers/AnnouncerContext';\n\ninterface LiveMessageProps {\n  message: string;\n  'aria-live': 'polite' | 'assertive';\n  clearOnUnmount?: boolean | 'true' | 'false';\n}\n\nconst LiveMessage: React.FC<LiveMessageProps> = ({\n  message,\n  'aria-live': ariaLive,\n  clearOnUnmount,\n}) => {\n  const { announceAssertive, announcePolite } = useContext(AnnouncerContext);\n\n  useEffect(() => {\n    if (ariaLive === 'assertive') {\n      announceAssertive(message);\n    } else if (ariaLive === 'polite') {\n      announcePolite(message);\n    }\n  }, [message, ariaLive, announceAssertive, announcePolite]);\n\n  useEffect(() => {\n    return () => {\n      if (clearOnUnmount === true || clearOnUnmount === 'true') {\n        announceAssertive('');\n        announcePolite('');\n      }\n    };\n  }, [clearOnUnmount, announceAssertive, announcePolite]);\n\n  return null;\n};\n\nexport default LiveMessage;\n"
  },
  {
    "path": "src/frontend/client/src/a11y/LiveMessenger.tsx",
    "content": "import React from 'react';\nimport AnnouncerContext from '~/Providers/AnnouncerContext';\n\ninterface LiveMessengerProps {\n  children: (context: React.ContextType<typeof AnnouncerContext>) => React.ReactNode;\n}\n\nconst LiveMessenger: React.FC<LiveMessengerProps> = ({ children }) => (\n  <AnnouncerContext.Consumer>{(contextProps) => children(contextProps)}</AnnouncerContext.Consumer>\n);\n\nexport default LiveMessenger;\n"
  },
  {
    "path": "src/frontend/client/src/a11y/MessageBlock.tsx",
    "content": "import React from 'react';\n\nconst offScreenStyle: React.CSSProperties = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  padding: 0,\n  width: '1px',\n  position: 'absolute',\n};\n\ninterface MessageBlockProps {\n  message: string;\n  'aria-live': 'polite' | 'assertive';\n}\n\nconst MessageBlock: React.FC<MessageBlockProps> = ({ message, 'aria-live': ariaLive }) => (\n  <div style={offScreenStyle} role=\"log\" aria-live={ariaLive}>\n    {message}\n  </div>\n);\n\nexport default MessageBlock;\n"
  },
  {
    "path": "src/frontend/client/src/a11y/index.ts",
    "content": "export { default as LiveAnnouncer } from './LiveAnnouncer';\n"
  },
  {
    "path": "src/frontend/client/src/api/apps.ts",
    "content": "import request from \"./request\";\n\n// 毕昇config\nexport async function getBysConfigApi() {\n    return await request.get('/api/v1/env')\n}\n\n// 所有标签\nexport async function getAllLabelsApi() {\n    return await request.get('/api/v1/tag')\n}\n\n// 获取首页展示的标签列表\nexport async function getHomeLabelApi() {\n    return await request.get('/api/v1/tag/home')\n}\n\n// 更新首页展示的标签列表\nexport async function updateHomeLabelApi(tag_ids) {\n    return await request.post('/api/v1/tag/home', {\n        tag_ids\n    })\n}\n\n/**\n * 技能 工作流详情\n */\nexport async function getFlowApi(flowId: string, version: string = 'v1', shareToken?: string): Promise<any> {\n    const headers = shareToken ? { 'share-token': shareToken } : {}\n\n    return await request.get(`/api/${version}/flows/${flowId}`, { headers })\n}\n\n/**\n * 删除的技能 工作流详情\n */\nexport async function getDeleteFlowApi(chatId: string): Promise<any> {\n    return await request.get(`/api/v1/chat/info?chat_id=${chatId}`).then(res => {\n        res.data.name = res.data.flow_name\n        return res\n    })\n}\n\n// 获取助手详情\nexport const getAssistantDetailApi = async (id: string, shareToken?: string): Promise<any> => {\n    const headers = shareToken ? { 'share-token': shareToken } : {}\n\n    return await request.get(`/api/v1/assistant/info/${id}`, {\n        headers\n    })\n};\n\nexport const baseMsgItem = {\n    id: Math.random() * 1000000,\n    isSend: false,\n    message: '',\n    chatKey: '',\n    thought: '',\n    category: '',\n    files: [],\n    end: true,\n    user_name: '',\n    create_time: \"\",\n    update_time: \"\"\n}\n\n/**\n * 赞 踩消息\n */\nexport const likeChatApi = (msgId, liked) => {\n    liked && trackingApi({ message_id: msgId, operation_type: liked === 1 ? 'like' : 'dislike' });\n    return request.post(`/api/v1/liked`, { message_id: msgId, liked });\n};\n\n/**\n * 点击复制上报\n * */\nexport const copyTrackingApi = (msgId) => {\n    trackingApi({ message_id: msgId, operation_type: 'copy' });\n    return request.post(`/api/v1/chat/copied`, { message_id: msgId });\n}\n\n/**\n * 踩消息反馈\n */\nexport const disLikeCommentApi = (message_id, comment) => {\n    return request.post(`/api/v1/chat/comment`, { message_id, comment });\n};\n\n/**\n * Tracking\n */\nexport const trackingApi = (data: { message_id: string, operation_type: 'dislike' | 'like' | 'copy' }) => {\n    return request.post(`/api/v1/session/chat/message/telemetry`, data);\n}\n\n/**\n * 技能 工作流详情\n */\nexport async function getChatHistoryApi({ flowId, chatId, flowType, id, shareToken }\n    : { flowId: string, chatId: string, flowType: string, id?: number, shareToken?: string }): Promise<any> {\n    const filterFlowMsg = (data) => {\n        return data.filter(item =>\n            [\"question\", \"output_with_input_msg\", \"output_with_choose_msg\", \"stream_msg\", \"output_msg\", \"guide_question\", \"guide_word\", \"node_run\", \"answer\"].includes(item.category)\n            && (item.message || item.reasoning_log))\n    }\n\n    const filterSkillMsg = (data) => {\n        return data.filter(item =>\n            ['answer', 'question', 'processing', 'system', 'report', 'tool', 'knowledge', 'divider', 'flow', 'reasoning_answer'].includes(item.category)\n        )\n    }\n\n    const headers = shareToken ? { 'share-token': shareToken } : {}\n\n    return await request.get(`/api/v1/chat/history?flow_id=${flowId}&chat_id=${chatId}&page_size=40&id=${id || ''}`, {\n        headers\n    }).then(res => {\n        if (res.status_code !== 200) return []\n        const newData = Number(flowType) === 10 ? filterFlowMsg(res.data) : filterSkillMsg(res.data)\n\n        return newData.map(item => {\n            let { message, files, is_bot, isSend, intermediate_steps, category, ...other } = item\n            try {\n                message = message && message[0] === '{' ? JSON.parse(message) : message || ''\n            } catch (e) {\n                // 未考虑的情况暂不处理\n                console.error('消息 to JSON error :>> ', e);\n            }\n            // 修正数据\n            const _isSend = isSend || !is_bot;\n            const _category = _isSend ? 'question' : category\n            const _files = (files ? JSON.parse(files) : []).map(file => {\n                return {\n                    file_name: file.file_name || file.name,\n                    file_url: file.file_url || file.path,\n                }\n            })\n\n            let chatKey = Number(flowType) === 5 ? 'input' : (typeof message === 'string' ? undefined : Object.keys(message)[0]);\n            chatKey = chatKey === 'data' ? 'query' : chatKey // 排除data\n\n            return {\n                ...other,\n                category: _category,\n                chatKey,\n                end: true,\n                files: _files,\n                isSend: _isSend,\n                message,\n                thought: intermediate_steps,\n                reasoning_log: message.reasoning_content || '',\n                noAccess: true\n            }\n        })\n    });\n}\n\n\n// 溯源-分词\nexport async function splitWordApi(word: string, messageId: string): Promise<string[]> {\n    return await request.get(`/api/v1/qa/keyword?message_id=${messageId}`)\n}\n\n// 溯源-获取 chunks\nexport async function getSourceChunksApi(chatId: string, messageId: number, keys: string) {\n    try {\n        const res: any[] = await request.post(`/api/v1/qa/chunk`, {\n            chat_id: chatId,\n            message_id: messageId,\n            keys,\n        })\n        const fileMap = {}\n        const chunks = res.data\n        chunks.forEach(chunk => {\n            const list = fileMap[chunk.file_id]\n            if (list) {\n                fileMap[chunk.file_id].push(chunk)\n            } else {\n                fileMap[chunk.file_id] = [chunk]\n            }\n        });\n\n        return Object.keys(fileMap).map(fileId => {\n            const { file_id: id, source: fileName, source_url, original_url: originUrl, ...other } = fileMap[fileId][0]\n\n            const chunks = fileMap[fileId].sort((a, b) => b.score - a.score)\n                .map(chunk => ({\n                    box: chunk.chunk_bboxes,\n                    score: chunk.score\n                }))\n            const score = chunks[0].score\n\n            // 兼容后端历史逻辑\n            let fileUrl = ''\n            let suffix = fileName.split('.').pop().toLowerCase()\n            let isNew = false\n            if (['uns', 'local'].includes(other.parse_type)) {\n                fileUrl = other.chunk_bboxes ? source_url : originUrl;\n                if (other.chunk_bboxes) {\n                    suffix = 'pdf'\n                }\n            } else if (['etl4lm', 'un_etl4lm'].includes(other.parse_type)) {\n                fileUrl = source_url || originUrl\n                isNew = true\n            }\n            return { id, fileName, suffix, isNew, fileUrl, originUrl, chunks, ...other, score }\n        }).sort((a, b) => b.score - a.score)\n    } catch (error) {\n        console.error(error);\n        throw error;\n    }\n}\n\n\n/**\n * 聊天窗上传文件\n */\nexport async function uploadChatFile(v, file: File, onProgress): Promise<any> {\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    return await request.post(`/api/v1/knowledge/upload`, formData, {\n        headers: {\n            \"Content-Type\": \"multipart/form-data\"\n        },\n        onUploadProgress: (progressEvent) => {\n            // Calculate progress percentage\n            if (progressEvent.total) {\n                const progress = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n                onProgress(progress);\n            }\n        }\n    });\n}\n\n\nexport async function postBuildInit(data: {\n    flow: any\n    chatId?: string\n    versionId?: number\n}): Promise<any> {\n    const { flow, chatId, versionId } = data;\n    const qstr = versionId ? `?version_id=${versionId}` : ''\n    return await request.post(`/api/v1/build/init/${flow.id}${qstr}`, chatId ? { chat_id: chatId } : flow);\n}\n\n/**\n * 上传文件\n */\nexport async function uploadLibFile(data, config, type: 'knowledge' | 'icon', url) {\n    const urls = {\n        knowledge: '/api/v1/knowledge/upload',\n        icon: '/api/v1/upload/icon',\n    }\n    return await request.post(url || urls[type], data, config);\n}\nexport async function uploadFile(\n    file: File,\n    id: string\n): Promise<any> {\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    return await request.post(`/api/v1/upload/${id}`, formData);\n}\n\n// Function to upload the file with progress tracking\nexport const uploadFileWithProgress = async (file, callback, type: 'knowledge' | 'icon' = 'knowledge', url): Promise<any> => {\n    try {\n        const formData = new FormData();\n        formData.append('file', file);\n\n        const config = {\n            headers: { 'Content-Type': 'multipart/form-data;charset=utf-8' },\n            onUploadProgress: (progressEvent) => {\n                const { loaded, total } = progressEvent;\n                const progress = Math.round((loaded * 100) / total);\n                console.log(`Upload progress: ${file.name} ${progress}%`);\n                callback(progress)\n                // You can update your UI with the progress information here\n            },\n        };\n\n        // Convert the FormData to binary using the FileReader API\n        const data = await uploadLibFile(formData, config, type, url);\n\n        data && callback(100);\n\n        console.log('Upload complete:', data);\n        return data.data\n        // Handle the response data as needed\n    } catch (error) {\n        console.error('Error uploading file:', error);\n        return ''\n        // Handle errors\n    }\n};\n\n\n/**\n * get组件 variables 变量\n * params flow_id, node_id\n */\nconst enum VariableType {\n    /** 文本 */\n    Text = \"text\",\n    /** 下拉框 */\n    Select = \"select\",\n    /** 文件 */\n    File = \"file\"\n}\nexport function getVariablesApi(params) {\n    return (request.get(`/api/v1/variable/list`, { params }) as Promise<any[]>).then(res => {\n        return res.data.map((item) => {\n            const types = ['', VariableType.Text, VariableType.Select, VariableType.File]\n            return {\n                id: item.id,\n                update: true,\n                name: item.variable_name,\n                type: types[item.value_type],\n                nodeId: item.node_id,\n                required: item.is_option === 1,\n                maxLength: item.value_type === 1 ? item.value : '',\n                options: item.value_type === 2 ? item.value\n                    .split(',')\n                    .map((op, i) => ({ key: i, value: op })) : [],\n                value: ''\n            }\n        }) as any[]\n    });\n}\nexport async function getFrequently(page, limit) {\n    return await request.get('/api/v1/workstation/app/frequently_used', {\n        params: {\n            page,\n            limit\n        }\n    })\n}\n\nexport async function addToFrequentlyUsed(user_link_type, type_detail) {\n    return await request.post('/api/v1/workstation/app/frequently_used', {\n        user_link_type, type_detail\n    }, { showError: true });\n}\n\n// 从常用列表移除\nexport async function removeFromFrequentlyUsed(user_id, type, type_detail) {\n\n    const url = `/api/v1/workstation/app/frequently_used?user_id=${user_id}&user_link_type=${type}&type_detail=${type_detail}`;\n    return await request.delete(url);\n}\nexport async function getUncategorized(page: number = 1, pageSize: number = 8) {\n    return await request.get('/api/v1/workstation/app/uncategorized', {\n        params: {\n            page,\n            limit: pageSize\n        }\n    })\n}\n\nexport async function getAppsApi({ page = 1, pageSize = 8, keyword, tag_id = -1, type }) {\n    const tagIdStr = tag_id === -1 ? '' : `&tag_id=${tag_id}`\n    const map = { assistant: 5, skill: 1, flow: 10 }\n    const flowType = map[type] ? `&flow_type=${map[type]}` : ''\n    const { data, total }: { data: any[], total: number } = await request.get(`/api/v1/workflow/list?page_num=${page}&page_size=${pageSize}&name=${keyword}${tagIdStr}${flowType}`);\n    const newData = data.data.map(item => {\n        if (item.flow_type !== 5) return item\n        return {\n            ...item,\n            version_list: item.version_list || [],\n        }\n    })\n    return { data: newData, total };\n}\n\n\nexport const getChatOnlineApi = async (page, keyword, tag_id, disableLimit = 8) => {\n    const params = {\n        page,\n        keyword,\n        limit: disableLimit\n    }\n    if (tag_id !== -1 && tag_id != null) {\n        params.tag_id = tag_id\n    }\n\n    return await request.get(`/api/v1/chat/online`, { params })\n}\n"
  },
  {
    "path": "src/frontend/client/src/api/index.ts",
    "content": "import * as Types from '~/@types';\nimport request from \"./request\";\n\n/**\n * 获取知识库构建状态\n */\nexport async function getKnowledgeStatusApi(): Promise<any> {\n    return await request.get(`/api/v1/knowledge/status`)\n}\n\n/**\n * 语音转文字\n */\nexport async function getVoice2TextApi(data: any): Promise<any> {\n    return await request.postMultiPart(`/api/v1/llm/workbench/asr`, data)\n    // return Promise.resolve({ data: '测试语音转文字内容' })\n}\n\n/**\n * 文字转语音\n */\nexport const textToSpeech = (text: string): Promise<{ audio: string }> => {\n    // const encodedText = encodeURIComponent(text);\n    return request.post(`/api/v1/llm/workbench/tts`, { text });\n};\n\n\n/**\n * 获取工作台模型列表\n */\nexport async function getWorkbenchModelListApi(): Promise<Types.SelectModelResponse> {\n    return await request.get(`/api/v1/llm/workbench`)\n}\n\n/**\n * 获取分享链接\n */\nexport async function getShareLinkApi(type: string, chatId: string, data: any): Promise<any> {\n    return await request.post(`/api/v1/share-link/generate_share_link`, {\n        resource_type: type,\n        resource_id: chatId,\n        meta_data: data\n    })\n}\n\n/**\n * 解析分享链接的信息\n */\nexport async function getShareParamsApi(token: string): Promise<any> {\n    return await request.get(`/api/v1/share-link/${token}`)\n}\n"
  },
  {
    "path": "src/frontend/client/src/api/linsight.ts",
    "content": "import { LinsightInfo } from \"~/store/linsight\";\nimport request from \"./request\";\n\n// 保存修改sop\nexport function saveSop(data: {\n  sop_content: string,\n  linsight_session_version_id: string,\n}): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/sop-modify', data);\n}\n\n// 获取灵思会话信息\nexport function getLinsightSessionVersionList(ConversationId: string, shareToken: string): Promise<any> {\n  const headers = shareToken ? { 'share-token': shareToken } : {}\n  return request.get('/api/v1/linsight/workbench/session-version-list', {\n    params: {\n      session_id: ConversationId\n    },\n    headers\n  }).then(res => {\n    return res.data.map(item => {\n      return {\n        ...item,\n        sop: item.sop?.replace(/^---/, '')?.replace(/\\`\\`\\`markdown/g, '```') ?? '' // 去除markdown标记，否则vditor编辑器会显示为代码块\n      }\n    }\n    )\n  });\n}\n\n// 获取灵思任务信息\nexport function getLinsightTaskList(versionId: string, linsight: LinsightInfo, shareToken: string): Promise<any> {\n  const headers = shareToken ? { 'share-token': shareToken } : {}\n  return request.get('/api/v1/linsight/workbench/execute-task-detail', {\n    params: {\n      session_version_id: versionId\n    },\n    headers\n  }).then(res => {\n    if (linsight.status === 'terminated') {\n      // 任务手动终止后，后端返回的数据status为in_progress的任务，需要修改为terminated\n      return res.data.map(item => ({\n        ...item,\n        status: item.status === 'in_progress' ? 'terminated' : item.status\n      }))\n    }\n    return res.data\n  });\n}\n\n\n// 开始执行灵思\nexport function startLinsight(versionId: string): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/start-execute', {\n    linsight_session_version_id: versionId\n  });\n}\n\n// 用户任务中输入事件\nexport function userInputLinsightEvent(session_version_id: string, linsight_execute_task_id: string, input_content: string, files: any[]): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/user-input', {\n    session_version_id,\n    linsight_execute_task_id,\n    input_content,\n    files\n  });\n}\n\n// 用户终止任务事件\nexport function userStopLinsightEvent(linsight_session_version_id: string): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/terminate-execute', {\n    linsight_session_version_id\n  });\n}\n\n// 反馈\nexport function submitLinsightFeedback(versionid, data: {\n  feedback: string,\n  score: number,\n  is_reexecute: boolean,\n  cancel_feedback: boolean\n}): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/submit-feedback',\n    { linsight_session_version_id: versionid, ...data },\n    { showError: true }\n  )\n}\n\n\n// 获取灵思工具\nexport function getLinsightTools(): Promise<any> {\n  return request.get('/api/v1/tool/linsight/preset');\n}\n\n\n// 获取个人知识库信息\nexport function getPersonalKnowledgeInfo(): Promise<any> {\n  return request.get('/api/v1/knowledge/personal_knowledge_info');\n}\n\n// 获取组织知识库\nexport function getKnowledgeInfo({ page = 1, name = '', page_size = 200 }): Promise<any> {\n  return request.get(`/api/v1/knowledge?page_num=${page}&page_size=${page_size}&type=0&name=${name}`);\n}\n\n// 获取linsight剩余次数\nexport function inviteCode() {\n  return request.get('/api/v1/invite/code');\n};\n\n// 绑定邀请码\nexport function bindInviteCode(code: string) {\n  return request.post('/api/v1/invite/bind', { code });\n}\n\n// 批量下载\nexport async function batchDownload(data: {\n  fileName: string,\n  files: { file_name: string, file_url: string }[]\n}) {\n  const res = await request.post('/api/v1/linsight/workbench/batch-download-files', {\n    zip_name: data.fileName,\n    file_info_list: data.files\n  }, {\n    responseType: 'blob'\n  })\n\n  console.log('res :>> ', res);\n  const url = window.URL.createObjectURL(new Blob([res]));\n  const a = document.createElement('a');\n  a.href = url;\n  a.download = data.fileName || 'downloadFile.zip';\n  document.body.appendChild(a);\n  a.click();\n  document.body.removeChild(a);\n  window.URL.revokeObjectURL(url);\n}\n\n// 检查文件解析状态\nexport function checkFileParseStatus(ids: string[]) {\n  return request.post('/api/v1/linsight/workbench/file-parsing-status', {\n    file_ids: ids\n  })\n}\n\n// 检查sop排队状态\nexport function checkSopQueueStatus(id: string) {\n  return request.get('/api/v1/linsight/workbench/queue-status', {\n    params: {\n      session_version_id: id\n    }\n  })\n}\n\n// Selected Cases\nexport function getFeaturedCases(page: number): Promise<any> {\n  return request.get('/api/v1/linsight/sop/showcase', {\n    params: {\n      page,\n      page_size: 12\n    }\n  });\n}\n\n// Get case details based on SOP ID\nexport function getCaseDetail(sop_id: string): Promise<any> {\n  return request.get('/api/v1/linsight/sop/showcase/result', {\n    params: {\n      sop_id\n    }\n  })\n}\n\nexport function getMdDownload(file_info: { file_url: string; file_name: string }, to_type: 'pdf' | 'docx'): Promise<any> {\n  return request.post('/api/v1/linsight/workbench/download-md-to-pdf-or-docx', {\n    file_info: file_info,\n    to_type: to_type\n  }\n    , {\n      responseType: 'blob' // 确保这里设置了 responseType\n    })\n}"
  },
  {
    "path": "src/frontend/client/src/api/request.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosError, AxiosRequestConfig } from 'axios';\nimport i18next from \"i18next\";\n\n// 报错的时候是否弹窗\ntype ErrorOptions = {\n  showError?: boolean;\n};\n\nconst customAxios = axios.create({\n  baseURL: import.meta.env.BASE_URL\n  // 配置\n});\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig & ErrorOptions): Promise<T> {\n  const response = await customAxios.get(url, { ...options });\n  return response.data;\n}\n\nasync function _getResponse<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  return await customAxios.get(url, { ...options });\n}\n\nasync function _post(url: string, data?: any, config?: AxiosRequestConfig) {\n  const response = await customAxios.post(url, config ? data : JSON.stringify(data), {\n    headers: { 'Content-Type': 'application/json' },\n    ...config\n  });\n  return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n  const response = await customAxios.post(url, formData, {\n    ...options,\n    headers: { 'Content-Type': 'multipart/form-data' },\n  });\n  return response.data;\n}\n\nasync function _postTTS(url: string, formData: FormData, options?: AxiosRequestConfig) {\n  const response = await customAxios.post(url, formData, {\n    ...options,\n    headers: { 'Content-Type': 'multipart/form-data' },\n    responseType: 'arraybuffer',\n  });\n  return response.data;\n}\n\nasync function _put(url: string, data?: any, options?: AxiosRequestConfig) {\n  const response = await customAxios.put(url, JSON.stringify(data), {\n    ...options,\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return response.data;\n}\n\nasync function _delete<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  const response = await customAxios.delete(url, { ...options });\n  return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  const response = await customAxios.delete(url, { ...options });\n  return response.data;\n}\n\nasync function _patch(url: string, data?: any, options?: AxiosRequestConfig) {\n  const response = await customAxios.patch(url, JSON.stringify(data), {\n    ...options,\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\n// const refreshToken = (retry?: boolean): Promise<t.TRefreshTokenResponse | undefined> =>\n//   _post(endpoints.refreshToken(retry));\n\n// const dispatchTokenUpdatedEvent = (token: string) => {\n//   setTokenHeader(token);\n//   window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n// };\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n  failedQueue.forEach((prom) => {\n    if (error) {\n      prom.reject(error);\n    } else {\n      prom.resolve(token);\n    }\n  });\n  failedQueue = [];\n};\n\ncustomAxios.interceptors.response.use(\n  (response) => {\n    if (response.data.status_code === 403) {\n      // console.log('response :>> ', response);\n      localStorage.setItem('ERROR_REQUEST_PATH', response.config.url || '')\n      location.href = `${__APP_ENV__.BASE_URL}/c/new?error=11403`;\n      return response\n    }\n\n    if (response.config.showError && response.data && response.data.status_code !== 200) {\n      console.log('业务错误:>> ', response.config.url, response.data);\n      window.showToast?.({ message: i18next.t(`api_errors.${response.data.status_code}`, response.data.data), status: 'error' });\n    }\n    return response;\n  },\n  async (error) => {\n    const originalRequest = error.config;\n    if (!error.response) {\n      return Promise.reject(error);\n    }\n\n    if (originalRequest.url?.includes('/api/auth/2fa') === true) {\n      return Promise.reject(error);\n    }\n    if (originalRequest.url?.includes('/api/auth/logout') === true) {\n      return Promise.reject(error);\n    }\n\n    if (error.response.status === 401 && !originalRequest._retry) {\n      console.warn('401 error, refreshing token');\n      originalRequest._retry = true;\n\n      if (import.meta.env.MODE === 'production') {\n        localStorage.setItem('LOGIN_PATHNAME', location.pathname)\n        location.href = `${location.origin}${__APP_ENV__.BISHENG_HOST}`\n      }\n      // } else {\n      //   if (location.pathname.indexOf('login') === -1) {\n      //     // location.href = '/workspace/login';\n      //   }\n      // }\n      // location.href = '/'\n\n      // if (isRefreshing) {\n      //   try {\n      //     const token = await new Promise((resolve, reject) => {\n      //       failedQueue.push({ resolve, reject });\n      //     });\n      //     // originalRequest.headers['Authorization'] = 'Bearer ' + token;\n      //     return await customAxios(originalRequest);\n      //   } catch (err) {\n      //     return Promise.reject(err);\n      //   }\n      // }\n\n      // isRefreshing = true;\n\n      try {\n        // const response = await refreshToken(\n        //   // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n        //   originalRequest.url?.includes('api/auth/refresh') === true ? true : false,\n        // );\n\n        // const token = response?.token ?? '';\n\n        // if (token) {\n        //   originalRequest.headers['Authorization'] = 'Bearer ' + token;\n        //   dispatchTokenUpdatedEvent(token);\n        //   processQueue(null, token);\n        //   return await customAxios(originalRequest);\n        // } else if (window.location.href.includes('share/')) {\n        //   console.log(\n        //     `Refresh token failed from shared link, attempting request to ${originalRequest.url}`,\n        //   );\n        // } else {\n        //   window.location.href = '/login';\n        // }\n      } catch (err) {\n        processQueue(err as AxiosError, null);\n        return Promise.reject(err);\n      } finally {\n        isRefreshing = false;\n      }\n    }\n\n    return Promise.reject(error);\n  },\n);\n\nexport default {\n  get: _get,\n  getResponse: _getResponse,\n  post: _post,\n  postMultiPart: _postMultiPart,\n  postTTS: _postTTS,\n  put: _put,\n  delete: _delete,\n  deleteWithOptions: _deleteWithOptions,\n  patch: _patch,\n};\n"
  },
  {
    "path": "src/frontend/client/src/common/a11y.ts",
    "content": "export interface AnnounceOptions {\n  message: string;\n  isStatus?: boolean;\n}\n\nexport const MESSAGE_UPDATE_INTERVAL = 7000;\n"
  },
  {
    "path": "src/frontend/client/src/common/agents-types.ts",
    "content": "import { AgentCapabilities, ArtifactModes } from '~/data-provider/data-provider/src';\nimport type { Agent, AgentProvider, AgentModelParameters } from '~/data-provider/data-provider/src';\nimport type { OptionWithIcon, ExtendedFile } from './types';\n\nexport type TAgentOption = OptionWithIcon &\n  Agent & {\n    knowledge_files?: Array<[string, ExtendedFile]>;\n    code_files?: Array<[string, ExtendedFile]>;\n  };\n\nexport type TAgentCapabilities = {\n  [AgentCapabilities.file_search]: boolean;\n  [AgentCapabilities.execute_code]: boolean;\n  [AgentCapabilities.end_after_tools]?: boolean;\n  [AgentCapabilities.hide_sequential_outputs]?: boolean;\n};\n\nexport type AgentForm = {\n  agent?: TAgentOption;\n  id: string;\n  name: string | null;\n  description: string | null;\n  instructions: string | null;\n  model: string | null;\n  model_parameters: AgentModelParameters;\n  tools?: string[];\n  provider?: AgentProvider | OptionWithIcon;\n  agent_ids?: string[];\n  [AgentCapabilities.artifacts]?: ArtifactModes | string;\n} & TAgentCapabilities;\n"
  },
  {
    "path": "src/frontend/client/src/common/artifacts.ts",
    "content": "export interface CodeBlock {\n  id: string;\n  language: string;\n  content: string;\n}\n\nexport interface Artifact {\n  id: string;\n  lastUpdateTime: number;\n  index?: number;\n  messageId?: string;\n  identifier?: string;\n  language?: string;\n  content?: string;\n  title?: string;\n  type?: string;\n}\n\nexport type ArtifactFiles =\n  | {\n      'App.tsx': string;\n      'index.tsx': string;\n      '/components/ui/MermaidDiagram.tsx': string;\n    }\n  | Partial<{\n      [x: string]: string | undefined;\n    }>;\n"
  },
  {
    "path": "src/frontend/client/src/common/assistants-types.ts",
    "content": "import { Capabilities, EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { Assistant, AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { Option, ExtendedFile } from './types';\n\nexport type ActionsEndpoint = AssistantsEndpoint | EModelEndpoint.agents;\n\nexport type TAssistantOption =\n  | string\n  | (Option &\n      Assistant & {\n        files?: Array<[string, ExtendedFile]>;\n        code_files?: Array<[string, ExtendedFile]>;\n      });\n\nexport type Actions = {\n  [Capabilities.code_interpreter]: boolean;\n  [Capabilities.image_vision]: boolean;\n  [Capabilities.retrieval]: boolean;\n};\n\nexport type AssistantForm = {\n  assistant: TAssistantOption;\n  id: string;\n  name: string | null;\n  description: string | null;\n  instructions: string | null;\n  conversation_starters: string[];\n  model: string;\n  functions: string[];\n  append_current_datetime: boolean;\n} & Actions;\n"
  },
  {
    "path": "src/frontend/client/src/common/index.ts",
    "content": "export * from './a11y';\nexport * from './artifacts';\nexport * from './types';\nexport * from './menus';\nexport * from './tools';\nexport * from './assistants-types';\nexport * from './agents-types';\n\n\nexport const enum File_Accept {\n    Linsight = '.pdf,.txt,.docx,.doc,.ppt,.pptx,.md,.html,.xls,.xlsx',\n    Linsight_Etl4lm = '.pdf,.txt,.docx,.ppt,.pptx,.md,.html,.xls,.xlsx,.doc,.png,.jpg,.jpeg,.bmp',\n    Default = '.pdf,.txt,.docx,.pptx,.md,.html,.xls,.xlsx,.doc,.ppt,.png,.jpg,.jpeg,.bmp',\n}\n"
  },
  {
    "path": "src/frontend/client/src/common/menus.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type RenderProp<\n  P = React.HTMLAttributes<any> & {\n    ref?: React.Ref<any>;\n  },\n> = (props: P) => React.ReactNode;\n\nexport interface MenuItemProps {\n  id?: string;\n  label?: string;\n  onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLDivElement>) => void;\n  icon?: React.ReactNode;\n  kbd?: string;\n  show?: boolean;\n  disabled?: boolean;\n  separate?: boolean;\n  hideOnClick?: boolean;\n  dialog?: React.ReactElement;\n  ref?: React.Ref<any>;\n  render?:\n    | RenderProp<React.HTMLAttributes<any> & { ref?: React.Ref<any> | undefined }>\n    | React.ReactElement<any, string | React.JSXElementConstructor<any>>\n    | undefined;\n}\n"
  },
  {
    "path": "src/frontend/client/src/common/tools.ts",
    "content": "import type { AuthType } from '~/data-provider/data-provider/src';\n\nexport type ApiKeyFormData = {\n  apiKey: string;\n  authType?: string | AuthType;\n};\n"
  },
  {
    "path": "src/frontend/client/src/common/types.ts",
    "content": "import { RefObject } from 'react';\nimport { FileSources } from '~/data-provider/data-provider/src';\nimport type * as InputNumberPrimitive from 'rc-input-number';\nimport type { ColumnDef } from '@tanstack/react-table';\nimport type { SetterOrUpdater } from 'recoil';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type { LucideIcon } from 'lucide-react';\nimport type { TranslationKeys } from '~/hooks';\n\nexport type CodeBarProps = {\n  lang: string;\n  error?: boolean;\n  plugin?: boolean;\n  blockIndex?: number;\n  allowExecution?: boolean;\n  codeRef: RefObject<HTMLElement>;\n};\n\nexport enum PromptsEditorMode {\n  SIMPLE = 'simple',\n  ADVANCED = 'advanced',\n}\n\nexport enum STTEndpoints {\n  browser = 'browser',\n  external = 'external',\n}\n\nexport enum TTSEndpoints {\n  browser = 'browser',\n  edge = 'edge',\n  external = 'external',\n}\n\nexport type AudioChunk = {\n  audio: string;\n  isFinal: boolean;\n  alignment: {\n    char_start_times_ms: number[];\n    chars_durations_ms: number[];\n    chars: string[];\n  };\n  normalizedAlignment: {\n    char_start_times_ms: number[];\n    chars_durations_ms: number[];\n    chars: string[];\n  };\n};\n\nexport type AssistantListItem = {\n  id: string;\n  name: string;\n  metadata: t.Assistant['metadata'];\n  model: string;\n};\n\nexport type AgentListItem = {\n  id: string;\n  name: string;\n  avatar: t.Agent['avatar'];\n};\n\nexport type TPluginMap = Record<string, t.TPlugin>;\n\nexport type GenericSetter<T> = (value: T | ((currentValue: T) => T)) => void;\n\nexport type LastSelectedModels = Record<t.EModelEndpoint, string>;\n\nexport type LocalizeFunction = (\n  phraseKey: TranslationKeys,\n  options?: Record<string, string | number>,\n) => string;\n\nexport type ChatFormValues = { text: string };\n\nexport const mainTextareaId = 'prompt-textarea';\nexport const globalAudioId = 'global-audio';\n\nexport enum IconContext {\n  landing = 'landing',\n  menuItem = 'menu-item',\n  nav = 'nav',\n  message = 'message',\n}\n\nexport type IconMapProps = {\n  className?: string;\n  iconURL?: string;\n  context?: 'landing' | 'menu-item' | 'nav' | 'message';\n  endpoint?: string | null;\n  endpointType?: string;\n  assistantName?: string;\n  agentName?: string;\n  avatar?: string;\n  size?: number;\n};\n\nexport type IconComponent = React.ComponentType<IconMapProps>;\nexport type AgentIconComponent = React.ComponentType<AgentIconMapProps>;\nexport type IconComponentTypes = IconComponent | AgentIconComponent;\nexport type IconsRecord = {\n  [key in t.EModelEndpoint | 'unknown' | string]: IconComponentTypes | null | undefined;\n};\n\nexport type AgentIconMapProps = IconMapProps & { agentName?: string };\n\nexport type NavLink = {\n  title: TranslationKeys;\n  label?: string;\n  icon: LucideIcon | React.FC;\n  Component?: React.ComponentType;\n  onClick?: (e?: React.MouseEvent) => void;\n  variant?: 'default' | 'ghost';\n  id: string;\n};\n\nexport interface NavProps {\n  isCollapsed: boolean;\n  links: NavLink[];\n  resize?: (size: number) => void;\n  defaultActive?: string;\n}\n\nexport interface DataColumnMeta {\n  meta:\n    | {\n        size: number | string;\n      }\n    | undefined;\n}\n\nexport enum Panel {\n  builder = 'builder',\n  actions = 'actions',\n  model = 'model',\n}\n\nexport type FileSetter =\n  | SetterOrUpdater<Map<string, ExtendedFile>>\n  | React.Dispatch<React.SetStateAction<Map<string, ExtendedFile>>>;\n\nexport type ActionAuthForm = {\n  /* General */\n  type: t.AuthTypeEnum;\n  saved_auth_fields: boolean;\n  /* API key */\n  api_key: string; // not nested\n  authorization_type: t.AuthorizationTypeEnum;\n  custom_auth_header: string;\n  /* OAuth */\n  oauth_client_id: string; // not nested\n  oauth_client_secret: string; // not nested\n  authorization_url: string;\n  client_url: string;\n  scope: string;\n  token_exchange_method: t.TokenExchangeMethodEnum;\n};\n\nexport type ActionWithNullableMetadata = Omit<t.Action, 'metadata'> & {\n  metadata: t.ActionMetadata | null;\n};\n\nexport type AssistantPanelProps = {\n  index?: number;\n  action?: ActionWithNullableMetadata;\n  actions?: t.Action[];\n  assistant_id?: string;\n  activePanel?: string;\n  endpoint: t.AssistantsEndpoint;\n  version: number | string;\n  documentsMap: Map<string, t.AssistantDocument> | null;\n  setAction: React.Dispatch<React.SetStateAction<t.Action | undefined>>;\n  setCurrentAssistantId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;\n};\n\nexport type AgentPanelProps = {\n  index?: number;\n  agent_id?: string;\n  activePanel?: string;\n  action?: t.Action;\n  actions?: t.Action[];\n  setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;\n  setAction: React.Dispatch<React.SetStateAction<t.Action | undefined>>;\n  endpointsConfig?: t.TEndpointsConfig;\n  setCurrentAgentId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  agentsConfig?: t.TAgentsEndpoint | null;\n};\n\nexport type AgentModelPanelProps = {\n  agent_id?: string;\n  providers: Option[];\n  models: Record<string, string[] | undefined>;\n  setActivePanel: React.Dispatch<React.SetStateAction<Panel>>;\n};\n\nexport type AugmentedColumnDef<TData, TValue> = ColumnDef<TData, TValue> & DataColumnMeta;\n\nexport type TSetOption = t.TSetOption;\n\nexport type TSetExample = (\n  i: number,\n  type: string,\n  newValue: number | string | boolean | null,\n) => void;\n\nexport type OnInputNumberChange = InputNumberPrimitive.InputNumberProps['onChange'];\n\nexport const defaultDebouncedDelay = 450;\n\nexport enum ESide {\n  Top = 'top',\n  Right = 'right',\n  Bottom = 'bottom',\n  Left = 'left',\n}\n\nexport enum NotificationSeverity {\n  INFO = 'info',\n  SUCCESS = 'success',\n  WARNING = 'warning',\n  ERROR = 'error',\n}\n\nexport type TShowToast = {\n  message: string;\n  severity?: NotificationSeverity;\n  showIcon?: boolean;\n  duration?: number;\n  status?: 'error' | 'success' | 'warning' | 'info';\n};\n\nexport type TBaseSettingsProps = {\n  conversation: t.TConversation | t.TPreset | null;\n  className?: string;\n  isPreset?: boolean;\n  readonly?: boolean;\n};\n\nexport type TSettingsProps = TBaseSettingsProps & {\n  setOption: TSetOption;\n};\n\nexport type TModels = {\n  models: string[];\n  showAbove?: boolean;\n  popover?: boolean;\n};\n\nexport type TModelSelectProps = TSettingsProps & TModels;\n\nexport type TEditPresetProps = {\n  open: boolean;\n  onOpenChange: React.Dispatch<React.SetStateAction<boolean>>;\n  preset: t.TPreset;\n  title?: string;\n};\n\nexport type TSetOptions = (options: Record<string, unknown>) => void;\nexport type TSetOptionsPayload = {\n  setOption: TSetOption;\n  setExample: TSetExample;\n  addExample: () => void;\n  removeExample: () => void;\n  setAgentOption: TSetOption;\n  // getConversation: () => t.TConversation | t.TPreset | null;\n  checkPluginSelection: (value: string) => boolean;\n  setTools: (newValue: string, remove?: boolean) => void;\n  setOptions?: TSetOptions;\n};\n\nexport type TPresetItemProps = {\n  preset: t.TPreset;\n  value: t.TPreset;\n  onSelect: (preset: t.TPreset) => void;\n  onChangePreset: (preset: t.TPreset) => void;\n  onDeletePreset: (preset: t.TPreset) => void;\n};\n\nexport type TOnClick = (e: React.MouseEvent<HTMLButtonElement>) => void;\n\nexport type TGenButtonProps = {\n  onClick: TOnClick;\n};\n\nexport type TAskProps = {\n  text: string;\n  overrideConvoId?: string;\n  overrideUserMessageId?: string;\n  parentMessageId?: string | null;\n  conversationId?: string | null;\n  messageId?: string | null;\n  clientTimestamp?: string;\n};\n\nexport type TOptions = {\n  editedMessageId?: string | null;\n  editedText?: string | null;\n  resubmitFiles?: boolean;\n  isRegenerate?: boolean;\n  isContinued?: boolean;\n  isEdited?: boolean;\n  overrideMessages?: t.TMessage[];\n};\n\nexport type TAskFunction = (props: TAskProps, options?: TOptions) => void;\n\nexport type TMessageProps = {\n  conversation?: t.TConversation | null;\n  messageId?: string | null;\n  message?: t.TMessage;\n  messagesTree?: t.TMessage[];\n  currentEditId: string | number | null;\n  isSearchView?: boolean;\n  siblingIdx?: number;\n  siblingCount?: number;\n  setCurrentEditId?: React.Dispatch<React.SetStateAction<string | number | null>> | null;\n  setSiblingIdx?: ((value: number) => void | React.Dispatch<React.SetStateAction<number>>) | null;\n};\n\nexport type TMessageIcon = { endpoint?: string | null; isCreatedByUser?: boolean } & Pick<\n  t.TConversation,\n  'modelLabel'\n> &\n  Pick<t.TMessage, 'model' | 'iconURL'>;\n\nexport type TInitialProps = {\n  text: string;\n  edit: boolean;\n  error: boolean;\n  unfinished: boolean;\n  isSubmitting: boolean;\n  isLast: boolean;\n};\nexport type TAdditionalProps = {\n  ask: TAskFunction;\n  message: t.TMessage;\n  isCreatedByUser: boolean;\n  siblingIdx: number;\n  enterEdit: (cancel: boolean) => void;\n  setSiblingIdx: (value: number) => void;\n};\n\nexport type TMessageContentProps = TInitialProps & TAdditionalProps;\n\nexport type TText = Pick<TInitialProps, 'text'> & { className?: string };\nexport type TEditProps = Pick<TInitialProps, 'isSubmitting'> &\n  Omit<TAdditionalProps, 'isCreatedByUser' | 'siblingIdx'> & {\n    text?: string;\n    index?: number;\n    siblingIdx: number | null;\n  };\nexport type TDisplayProps = TText &\n  Pick<TAdditionalProps, 'isCreatedByUser' | 'message'> & {\n    showCursor?: boolean;\n  };\n\nexport type TConfigProps = {\n  userKey: string;\n  setUserKey: React.Dispatch<React.SetStateAction<string>>;\n  endpoint: t.EModelEndpoint | string;\n};\n\nexport type TDangerButtonProps = {\n  id: string;\n  confirmClear: boolean;\n  className?: string;\n  disabled?: boolean;\n  showText?: boolean;\n  mutation?: UseMutationResult<unknown>;\n  onClick: () => void;\n  infoTextCode: TranslationKeys;\n  actionTextCode: TranslationKeys;\n  dataTestIdInitial: string;\n  dataTestIdConfirm: string;\n  infoDescriptionCode?: TranslationKeys;\n  confirmActionTextCode?: TranslationKeys;\n};\n\nexport type TDialogProps = {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n};\n\nexport type TPluginStoreDialogProps = {\n  isOpen: boolean;\n  setIsOpen: (open: boolean) => void;\n};\n\nexport type TResError = {\n  response: { data: { message: string } };\n  message: string;\n};\n\nexport type TAuthContext = {\n  user: t.TUser | undefined;\n  token: string | undefined;\n  isAuthenticated: boolean;\n  error: string | undefined;\n  login: (data: t.TLoginUser) => void;\n  logout: () => void;\n  setError: React.Dispatch<React.SetStateAction<string | undefined>>;\n  roles?: Record<string, t.TRole | null | undefined>;\n};\n\nexport type TUserContext = {\n  user?: t.TUser | undefined;\n  token: string | undefined;\n  isAuthenticated: boolean;\n  redirect?: string;\n};\n\nexport type TAuthConfig = {\n  loginRedirect: string;\n  test?: boolean;\n};\n\nexport type IconProps = Pick<t.TMessage, 'isCreatedByUser' | 'model'> &\n  Pick<t.TConversation, 'chatGptLabel' | 'modelLabel'> & {\n    size?: number;\n    button?: boolean;\n    iconURL?: string;\n    message?: boolean;\n    className?: string;\n    iconClassName?: string;\n    endpoint?: t.EModelEndpoint | string | null;\n    endpointType?: t.EModelEndpoint | null;\n    assistantName?: string;\n    agentName?: string;\n    error?: boolean;\n  };\n\nexport type Option = Record<string, unknown> & {\n  label?: string;\n  value: string | number | null;\n};\n\nexport type StringOption = Option & { value: string | null };\n\nexport type VoiceOption = {\n  value: string;\n  label: string;\n};\n\nexport type TMessageAudio = {\n  messageId?: string;\n  content?: t.TMessageContentParts[] | string;\n  className?: string;\n  isLast: boolean;\n  index: number;\n};\n\nexport type OptionWithIcon = Option & { icon?: React.ReactNode };\nexport type DropdownValueSetter = (value: string | Option | OptionWithIcon) => void;\nexport type MentionOption = OptionWithIcon & {\n  type: string;\n  value: string;\n  description?: string;\n};\nexport type PromptOption = MentionOption & {\n  id: string;\n};\n\nexport type TOptionSettings = {\n  showExamples?: boolean;\n  isCodeChat?: boolean;\n};\n\nexport interface ExtendedFile {\n  file?: File;\n  file_id: string;\n  temp_file_id?: string;\n  type?: string;\n  filepath?: string;\n  filename?: string;\n  width?: number;\n  height?: number;\n  size: number;\n  preview?: string;\n  progress: number;\n  source?: FileSources;\n  attached?: boolean;\n  embedded?: boolean;\n  tool_resource?: string;\n  abortController?: AbortController;\n}\n\nexport type ContextType = { navVisible: boolean; setNavVisible: (visible: boolean) => void };\n\nexport interface SwitcherProps {\n  endpoint?: t.EModelEndpoint | null;\n  endpointKeyProvided: boolean;\n  isCollapsed: boolean;\n}\nexport type TLoginLayoutContext = {\n  startupConfig: t.TStartupConfig | null;\n  startupConfigError: unknown;\n  isFetching: boolean;\n  error: string | null;\n  setError: React.Dispatch<React.SetStateAction<string | null>>;\n  headerText: string;\n  setHeaderText: React.Dispatch<React.SetStateAction<string>>;\n};\n\nexport type NewConversationParams = {\n  template?: Partial<t.TConversation>;\n  preset?: Partial<t.TPreset>;\n  modelsData?: t.TModelsConfig;\n  buildDefault?: boolean;\n  keepLatestMessage?: boolean;\n  keepAddedConvos?: boolean;\n};\n\nexport type ConvoGenerator = (params: NewConversationParams) => void | t.TConversation;\n\nexport type TBaseResData = {\n  plugin?: t.TResPlugin;\n  final?: boolean;\n  initial?: boolean;\n  previousMessages?: t.TMessage[];\n  conversation: t.TConversation;\n  conversationId?: string;\n  runMessages?: t.TMessage[];\n};\n\nexport type TResData = TBaseResData & {\n  requestMessage: t.TMessage;\n  responseMessage: t.TMessage;\n};\n\nexport type TFinalResData = TBaseResData & {\n  requestMessage?: t.TMessage;\n  responseMessage?: t.TMessage;\n};\n\nexport type TVectorStore = {\n  _id: string;\n  object: 'vector_store';\n  created_at: string | Date;\n  name: string;\n  bytes?: number;\n  file_counts?: {\n    in_progress: number;\n    completed: number;\n    failed: number;\n    cancelled: number;\n    total: number;\n  };\n};\n\nexport type TThread = { id: string; createdAt: string };\n\ndeclare global {\n  interface Window {\n    google_tag_manager?: unknown;\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/Artifact.tsx",
    "content": "import React, { useEffect, useCallback, useRef, useState } from 'react';\nimport throttle from 'lodash/throttle';\nimport { visit } from 'unist-util-visit';\nimport { useSetRecoilState } from 'recoil';\nimport type { Pluggable } from 'unified';\nimport type { Artifact } from '~/common';\nimport { useMessageContext, useArtifactContext } from '~/Providers';\nimport { artifactsState } from '~/store/artifacts';\nimport { logger, extractContent } from '~/utils';\nimport ArtifactButton from './ArtifactButton';\n\nexport const artifactPlugin: Pluggable = () => {\n  return (tree) => {\n    visit(tree, ['textDirective', 'leafDirective', 'containerDirective'], (node) => {\n      if (node.name !== 'artifact') {\n        return;\n      }\n      node.data = {\n        hName: node.name,\n        hProperties: node.attributes,\n        ...node.data,\n      };\n      return node;\n    });\n  };\n};\n\nexport function Artifact({\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  node,\n  ...props\n}: Artifact & {\n  children: React.ReactNode | { props: { children: React.ReactNode } };\n  node: unknown;\n}) {\n  const { messageId } = useMessageContext();\n  const { getNextIndex, resetCounter } = useArtifactContext();\n  const artifactIndex = useRef(getNextIndex(false)).current;\n\n  const setArtifacts = useSetRecoilState(artifactsState);\n  const [artifact, setArtifact] = useState<Artifact | null>(null);\n\n  const throttledUpdateRef = useRef(\n    throttle((updateFn: () => void) => {\n      updateFn();\n    }, 25),\n  );\n\n  const updateArtifact = useCallback(() => {\n    const content = extractContent(props.children);\n    logger.log('artifacts', 'updateArtifact: content.length', content.length);\n\n    const title = props.title ?? 'Untitled Artifact';\n    const type = props.type ?? 'unknown';\n    const identifier = props.identifier ?? 'no-identifier';\n    const artifactKey = `${identifier}_${type}_${title}_${messageId}`\n      .replace(/\\s+/g, '_')\n      .toLowerCase();\n\n    throttledUpdateRef.current(() => {\n      const now = Date.now();\n\n      const currentArtifact: Artifact = {\n        id: artifactKey,\n        identifier,\n        title,\n        type,\n        content,\n        messageId,\n        index: artifactIndex,\n        lastUpdateTime: now,\n      };\n\n      setArtifacts((prevArtifacts) => {\n        if (\n          prevArtifacts?.[artifactKey] != null &&\n          prevArtifacts[artifactKey].content === content\n        ) {\n          return prevArtifacts;\n        }\n\n        return {\n          ...prevArtifacts,\n          [artifactKey]: currentArtifact,\n        };\n      });\n\n      setArtifact(currentArtifact);\n    });\n  }, [\n    props.type,\n    props.title,\n    setArtifacts,\n    props.children,\n    props.identifier,\n    messageId,\n    artifactIndex,\n  ]);\n\n  useEffect(() => {\n    resetCounter();\n    updateArtifact();\n  }, [updateArtifact, resetCounter]);\n\n  return <ArtifactButton artifact={artifact} />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/ArtifactButton.tsx",
    "content": "import { useSetRecoilState } from 'recoil';\nimport type { Artifact } from '~/common';\nimport FilePreview from '~/components/Chat/Input/Files/FilePreview';\nimport { useLocalize } from '~/hooks';\nimport { getFileType } from '~/utils';\nimport store from '~/store';\n\nconst ArtifactButton = ({ artifact }: { artifact: Artifact | null }) => {\n  const localize = useLocalize();\n  const setVisible = useSetRecoilState(store.artifactsVisible);\n  const setArtifactId = useSetRecoilState(store.currentArtifactId);\n  if (artifact === null || artifact === undefined) {\n    return null;\n  }\n  const fileType = getFileType('artifact');\n\n  return (\n    <div className=\"group relative my-4 rounded-xl text-sm text-text-primary\">\n      <button\n        type=\"button\"\n        onClick={() => {\n          setArtifactId(artifact.id);\n          setVisible(true);\n        }}\n        className=\"relative overflow-hidden rounded-xl border border-border-medium transition-all duration-300 hover:border-border-xheavy hover:shadow-lg\"\n      >\n        <div className=\"w-fit bg-surface-tertiary p-2 \">\n          <div className=\"flex flex-row items-center gap-2\">\n            <FilePreview fileType={fileType} className=\"relative\" />\n            <div className=\"overflow-hidden text-left\">\n              <div className=\"truncate font-medium\">{artifact.title}</div>\n              <div className=\"truncate text-text-secondary\">\n                {localize('com_ui_artifact_click')}\n              </div>\n            </div>\n          </div>\n        </div>\n      </button>\n      <br />\n    </div>\n  );\n};\n\nexport default ArtifactButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/ArtifactCodeEditor.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport React, { memo, useEffect, useMemo, useCallback } from 'react';\nimport {\n  useSandpack,\n  SandpackCodeEditor,\n  SandpackProvider as StyledProvider,\n} from '@codesandbox/sandpack-react';\nimport { SandpackProviderProps } from '@codesandbox/sandpack-react/unstyled';\nimport type { CodeEditorRef } from '@codesandbox/sandpack-react';\nimport type { ArtifactFiles, Artifact } from '~/common';\nimport { sharedFiles, sharedOptions } from '~/utils/artifacts';\nimport { useEditArtifact } from '~/data-provider';\nimport { useEditorContext } from '~/Providers';\n\nconst createDebouncedMutation = (\n  callback: (params: {\n    index: number;\n    messageId: string;\n    original: string;\n    updated: string;\n  }) => void,\n) => debounce(callback, 500);\n\nconst CodeEditor = ({\n  fileKey,\n  readOnly,\n  artifact,\n  editorRef,\n}: {\n  fileKey: string;\n  readOnly: boolean;\n  artifact: Artifact;\n  editorRef: React.MutableRefObject<CodeEditorRef>;\n}) => {\n  const { sandpack } = useSandpack();\n  const { isMutating, setIsMutating, setCurrentCode } = useEditorContext();\n  const editArtifact = useEditArtifact({\n    onMutate: () => {\n      setIsMutating(true);\n    },\n    onSuccess: () => {\n      setIsMutating(false);\n    },\n    onError: () => {\n      setIsMutating(false);\n    },\n  });\n\n  const mutationCallback = useCallback(\n    (params: { index: number; messageId: string; original: string; updated: string }) => {\n      editArtifact.mutate(params);\n    },\n    [editArtifact],\n  );\n\n  const debouncedMutation = useMemo(\n    () => createDebouncedMutation(mutationCallback),\n    [mutationCallback],\n  );\n\n  useEffect(() => {\n    if (readOnly) {\n      return;\n    }\n    if (isMutating) {\n      return;\n    }\n\n    const currentCode = sandpack.files['/' + fileKey].code;\n\n    if (currentCode && artifact.content != null && currentCode.trim() !== artifact.content.trim()) {\n      setCurrentCode(currentCode);\n      debouncedMutation({\n        index: artifact.index,\n        messageId: artifact.messageId ?? '',\n        original: artifact.content,\n        updated: currentCode,\n      });\n    }\n\n    return () => {\n      debouncedMutation.cancel();\n    };\n  }, [\n    fileKey,\n    artifact.index,\n    artifact.content,\n    artifact.messageId,\n    readOnly,\n    isMutating,\n    sandpack.files,\n    setIsMutating,\n    setCurrentCode,\n    debouncedMutation,\n  ]);\n\n  return (\n    <SandpackCodeEditor\n      ref={editorRef}\n      showTabs={false}\n      readOnly={readOnly}\n      showRunButton={false}\n      showLineNumbers={true}\n      showInlineErrors={true}\n      className=\"hljs language-javascript bg-black\"\n    />\n  );\n};\n\nexport const ArtifactCodeEditor = memo(function ({\n  files,\n  fileKey,\n  template,\n  artifact,\n  editorRef,\n  sharedProps,\n  isSubmitting,\n}: {\n  fileKey: string;\n  artifact: Artifact;\n  files: ArtifactFiles;\n  isSubmitting: boolean;\n  template: SandpackProviderProps['template'];\n  sharedProps: Partial<SandpackProviderProps>;\n  editorRef: React.MutableRefObject<CodeEditorRef>;\n}) {\n  if (Object.keys(files).length === 0) {\n    return null;\n  }\n\n  return (\n    <StyledProvider\n      theme=\"dark\"\n      files={{\n        ...files,\n        ...sharedFiles,\n      }}\n      options={{ ...sharedOptions }}\n      {...sharedProps}\n      template={template}\n    >\n      <CodeEditor\n        editorRef={editorRef}\n        fileKey={fileKey}\n        readOnly={isSubmitting}\n        artifact={artifact}\n      />\n    </StyledProvider>\n  );\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/ArtifactPreview.tsx",
    "content": "import React, { memo, useMemo } from 'react';\nimport {\n  SandpackPreview,\n  SandpackProvider,\n  SandpackProviderProps,\n} from '@codesandbox/sandpack-react/unstyled';\nimport type { SandpackPreviewRef } from '@codesandbox/sandpack-react/unstyled';\nimport type { ArtifactFiles } from '~/common';\nimport { sharedFiles, sharedOptions } from '~/utils/artifacts';\nimport { useEditorContext } from '~/Providers';\n\nexport const ArtifactPreview = memo(function ({\n  files,\n  fileKey,\n  previewRef,\n  sharedProps,\n  template,\n}: {\n  files: ArtifactFiles;\n  fileKey: string;\n  template: SandpackProviderProps['template'];\n  sharedProps: Partial<SandpackProviderProps>;\n  previewRef: React.MutableRefObject<SandpackPreviewRef>;\n}) {\n  const { currentCode } = useEditorContext();\n  const artifactFiles = useMemo(() => {\n    if (Object.keys(files).length === 0) {\n      return files;\n    }\n    const code = currentCode ?? '';\n    if (!code) {\n      return files;\n    }\n    return {\n      ...files,\n      [fileKey]: {\n        code,\n      },\n    };\n  }, [currentCode, files, fileKey]);\n  if (Object.keys(artifactFiles).length === 0) {\n    return null;\n  }\n\n  return (\n    <SandpackProvider\n      files={{\n        ...artifactFiles,\n        ...sharedFiles,\n      }}\n      options={{ ...sharedOptions }}\n      {...sharedProps}\n      template={template}\n    >\n      <SandpackPreview\n        showOpenInCodeSandbox={false}\n        showRefreshButton={false}\n        tabIndex={0}\n        ref={previewRef}\n      />\n    </SandpackProvider>\n  );\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/ArtifactTabs.tsx",
    "content": "import { useRef } from 'react';\nimport * as Tabs from '@radix-ui/react-tabs';\nimport type { SandpackPreviewRef, CodeEditorRef } from '@codesandbox/sandpack-react';\nimport type { Artifact } from '~/common';\nimport useArtifactProps from '~/hooks/Artifacts/useArtifactProps';\nimport { useAutoScroll } from '~/hooks/Artifacts/useAutoScroll';\nimport { ArtifactCodeEditor } from './ArtifactCodeEditor';\nimport { ArtifactPreview } from './ArtifactPreview';\nimport { cn } from '~/utils';\n\nexport default function ArtifactTabs({\n  artifact,\n  isMermaid,\n  editorRef,\n  previewRef,\n  isSubmitting,\n}: {\n  artifact: Artifact;\n  isMermaid: boolean;\n  isSubmitting: boolean;\n  editorRef: React.MutableRefObject<CodeEditorRef>;\n  previewRef: React.MutableRefObject<SandpackPreviewRef>;\n}) {\n  const content = artifact.content ?? '';\n  const contentRef = useRef<HTMLDivElement>(null);\n  useAutoScroll({ ref: contentRef, content, isSubmitting });\n  const { files, fileKey, template, sharedProps } = useArtifactProps({ artifact });\n  return (\n    <>\n      <Tabs.Content\n        ref={contentRef}\n        value=\"code\"\n        id=\"artifacts-code\"\n        className={cn('flex-grow overflow-auto')}\n      >\n        <ArtifactCodeEditor\n          files={files}\n          fileKey={fileKey}\n          template={template}\n          artifact={artifact}\n          editorRef={editorRef}\n          sharedProps={sharedProps}\n          isSubmitting={isSubmitting}\n        />\n      </Tabs.Content>\n      <Tabs.Content\n        value=\"preview\"\n        className={cn('flex-grow overflow-auto', isMermaid ? 'bg-[#282C34]' : 'bg-white')}\n      >\n        <ArtifactPreview\n          files={files}\n          fileKey={fileKey}\n          template={template}\n          previewRef={previewRef}\n          sharedProps={sharedProps}\n        />\n      </Tabs.Content>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/Artifacts.tsx",
    "content": "import { useRef, useState, useEffect } from 'react';\nimport { RefreshCw } from 'lucide-react';\nimport { useSetRecoilState } from 'recoil';\nimport * as Tabs from '@radix-ui/react-tabs';\nimport type { SandpackPreviewRef, CodeEditorRef } from '@codesandbox/sandpack-react';\nimport useArtifacts from '~/hooks/Artifacts/useArtifacts';\nimport DownloadArtifact from './DownloadArtifact';\nimport { useEditorContext } from '~/Providers';\nimport useLocalize from '~/hooks/useLocalize';\nimport ArtifactTabs from './ArtifactTabs';\nimport { CopyCodeButton } from './Code';\nimport store from '~/store';\n\nexport default function Artifacts() {\n  const localize = useLocalize();\n  const { isMutating } = useEditorContext();\n  const editorRef = useRef<CodeEditorRef>();\n  const previewRef = useRef<SandpackPreviewRef>();\n  const [isVisible, setIsVisible] = useState(false);\n  const [isRefreshing, setIsRefreshing] = useState(false);\n  const setArtifactsVisible = useSetRecoilState(store.artifactsVisible);\n\n  useEffect(() => {\n    setIsVisible(true);\n  }, []);\n\n  const {\n    activeTab,\n    isMermaid,\n    setActiveTab,\n    currentIndex,\n    isSubmitting,\n    cycleArtifact,\n    currentArtifact,\n    orderedArtifactIds,\n  } = useArtifacts();\n\n  if (currentArtifact === null || currentArtifact === undefined) {\n    return null;\n  }\n\n  const handleRefresh = () => {\n    setIsRefreshing(true);\n    const client = previewRef.current?.getClient();\n    if (client != null) {\n      client.dispatch({ type: 'refresh' });\n    }\n    setTimeout(() => setIsRefreshing(false), 750);\n  };\n\n  return (\n    <Tabs.Root value={activeTab} onValueChange={setActiveTab} asChild>\n      {/* Main Parent */}\n      <div className=\"flex h-full w-full items-center justify-center\">\n        {/* Main Container */}\n        <div\n          className={`flex h-full w-full flex-col overflow-hidden border border-border-medium bg-surface-primary text-xl text-text-primary shadow-xl transition-all duration-300 ease-in-out ${\n            isVisible\n              ? 'translate-x-0 scale-100 opacity-100'\n              : 'translate-x-full scale-95 opacity-0'\n          }`}\n        >\n          {/* Header */}\n          <div className=\"flex items-center justify-between border-b border-border-medium bg-surface-primary-alt p-2\">\n            <div className=\"flex items-center\">\n              <button\n                className=\"mr-2 text-text-secondary\"\n                onClick={() => {\n                  setIsVisible(false);\n                  setTimeout(() => setArtifactsVisible(false), 300);\n                }}\n              >\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  width=\"16\"\n                  height=\"16\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 256 256\"\n                >\n                  <path d=\"M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z\" />\n                </svg>\n              </button>\n              <h3 className=\"truncate text-sm text-text-primary\">{currentArtifact.title}</h3>\n            </div>\n            <div className=\"flex items-center\">\n              {/* Refresh button */}\n              {activeTab === 'preview' && (\n                <button\n                  className={`mr-2 text-text-secondary transition-transform duration-500 ease-in-out ${\n                    isRefreshing ? 'rotate-180' : ''\n                  }`}\n                  onClick={handleRefresh}\n                  disabled={isRefreshing}\n                  aria-label=\"Refresh\"\n                >\n                  <RefreshCw\n                    size={16}\n                    className={`transform ${isRefreshing ? 'animate-spin' : ''}`}\n                  />\n                </button>\n              )}\n              {activeTab !== 'preview' && isMutating && (\n                <RefreshCw size={16} className=\"mr-2 animate-spin text-text-secondary\" />\n              )}\n              {/* Tabs */}\n              <Tabs.List className=\"mr-2 inline-flex h-7 rounded-full border border-border-medium bg-surface-tertiary\">\n                <Tabs.Trigger\n                  value=\"preview\"\n                  disabled={isMutating}\n                  className=\"border-0.5 flex items-center gap-1 rounded-full border-transparent py-1 pl-2.5 pr-2.5 text-xs font-medium text-text-secondary data-[state=active]:border-border-light data-[state=active]:bg-surface-primary-alt data-[state=active]:text-text-primary\"\n                >\n                  {localize('com_ui_preview')}\n                </Tabs.Trigger>\n                <Tabs.Trigger\n                  value=\"code\"\n                  className=\"border-0.5 flex items-center gap-1 rounded-full border-transparent py-1 pl-2.5 pr-2.5 text-xs font-medium text-text-secondary data-[state=active]:border-border-light data-[state=active]:bg-surface-primary-alt data-[state=active]:text-text-primary\"\n                >\n                  {localize('com_ui_code')}\n                </Tabs.Trigger>\n              </Tabs.List>\n              <button\n                className=\"text-text-secondary\"\n                onClick={() => {\n                  setIsVisible(false);\n                  setTimeout(() => setArtifactsVisible(false), 300);\n                }}\n              >\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  width=\"16\"\n                  height=\"16\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 256 256\"\n                >\n                  <path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" />\n                </svg>\n              </button>\n            </div>\n          </div>\n          {/* Content */}\n          <ArtifactTabs\n            isMermaid={isMermaid}\n            artifact={currentArtifact}\n            isSubmitting={isSubmitting}\n            editorRef={editorRef as React.MutableRefObject<CodeEditorRef>}\n            previewRef={previewRef as React.MutableRefObject<SandpackPreviewRef>}\n          />\n          {/* Footer */}\n          <div className=\"flex items-center justify-between border-t border-border-medium bg-surface-primary-alt p-2 text-sm text-text-secondary\">\n            <div className=\"flex items-center\">\n              <button onClick={() => cycleArtifact('prev')} className=\"mr-2 text-text-secondary\">\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  width=\"16\"\n                  height=\"16\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 256 256\"\n                >\n                  <path d=\"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\" />\n                </svg>\n              </button>\n              <span className=\"text-xs\">{`${currentIndex + 1} / ${\n                orderedArtifactIds.length\n              }`}</span>\n              <button onClick={() => cycleArtifact('next')} className=\"ml-2 text-text-secondary\">\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  width=\"16\"\n                  height=\"16\"\n                  fill=\"currentColor\"\n                  viewBox=\"0 0 256 256\"\n                >\n                  <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" />\n                </svg>\n              </button>\n            </div>\n            <div className=\"flex items-center gap-2\">\n              <CopyCodeButton content={currentArtifact.content ?? ''} />\n              {/* Download Button */}\n              <DownloadArtifact artifact={currentArtifact} />\n              {/* Publish button */}\n              {/* <button className=\"border-0.5 min-w-[4rem] whitespace-nowrap rounded-md border-border-medium bg-[radial-gradient(ellipse,_var(--tw-gradient-stops))] from-surface-active from-50% to-surface-active px-3 py-1 text-xs font-medium text-text-primary transition-colors hover:bg-surface-active hover:text-text-primary active:scale-[0.985] active:bg-surface-active\">\n                Publish\n              </button> */}\n            </div>\n          </div>\n        </div>\n      </div>\n    </Tabs.Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/Code.tsx",
    "content": "import React, { memo, useEffect, useRef, useState } from 'react';\nimport rehypeKatex from 'rehype-katex';\nimport ReactMarkdown from 'react-markdown';\nimport rehypeHighlight from 'rehype-highlight';\nimport copy from 'copy-to-clipboard';\nimport { handleDoubleClick, langSubset } from '~/utils';\nimport Clipboard from '~/components/svg/Clipboard';\nimport CheckMark from '~/components/svg/CheckMark';\nimport useLocalize from '~/hooks/useLocalize';\n\ntype TCodeProps = {\n  inline: boolean;\n  className?: string;\n  children: React.ReactNode;\n};\n\nexport const code: React.ElementType = memo(({ inline, className, children }: TCodeProps) => {\n  const match = /language-(\\w+)/.exec(className ?? '');\n  const lang = match && match[1];\n\n  if (inline) {\n    return (\n      <code onDoubleClick={handleDoubleClick} className={className}>\n        {children}\n      </code>\n    );\n  }\n\n  return <code className={`hljs language-${lang} !whitespace-pre`}>{children}</code>;\n});\n\nexport const CodeMarkdown = memo(\n  ({ content = '', isSubmitting }: { content: string; isSubmitting: boolean }) => {\n    const scrollRef = useRef<HTMLDivElement>(null);\n    const [userScrolled, setUserScrolled] = useState(false);\n    const currentContent = content;\n    const rehypePlugins = [\n      [rehypeKatex, { output: 'mathml' }],\n      [\n        rehypeHighlight,\n        {\n          detect: true,\n          ignoreMissing: true,\n          subset: langSubset,\n        },\n      ],\n    ];\n\n    useEffect(() => {\n      const scrollContainer = scrollRef.current;\n      if (!scrollContainer) {\n        return;\n      }\n\n      const handleScroll = () => {\n        const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n        const isNearBottom = scrollHeight - scrollTop - clientHeight < 50;\n\n        if (!isNearBottom) {\n          setUserScrolled(true);\n        } else {\n          setUserScrolled(false);\n        }\n      };\n\n      scrollContainer.addEventListener('scroll', handleScroll);\n\n      return () => {\n        scrollContainer.removeEventListener('scroll', handleScroll);\n      };\n    }, []);\n\n    useEffect(() => {\n      const scrollContainer = scrollRef.current;\n      if (!scrollContainer || !isSubmitting || userScrolled) {\n        return;\n      }\n\n      scrollContainer.scrollTop = scrollContainer.scrollHeight;\n    }, [content, isSubmitting, userScrolled]);\n\n    return (\n      <div ref={scrollRef} className=\"max-h-full overflow-y-auto\">\n        <ReactMarkdown\n          /* @ts-ignore */\n          rehypePlugins={rehypePlugins}\n          components={\n            { code } as {\n              [key: string]: React.ElementType;\n            }\n          }\n        >\n          {currentContent}\n        </ReactMarkdown>\n      </div>\n    );\n  },\n);\n\nexport const CopyCodeButton: React.FC<{ content: string }> = ({ content }) => {\n  const localize = useLocalize();\n  const [isCopied, setIsCopied] = useState(false);\n\n  const handleCopy = () => {\n    copy(content, { format: 'text/plain' });\n    setIsCopied(true);\n    setTimeout(() => setIsCopied(false), 3000);\n  };\n\n  return (\n    <button\n      className=\"mr-2 text-text-secondary\"\n      onClick={handleCopy}\n      aria-label={isCopied ? localize('com_ui_copied') : localize('com_ui_copy_code')}\n    >\n      {isCopied ? <CheckMark className=\"h-[18px] w-[18px]\" /> : <Clipboard />}\n    </button>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/DownloadArtifact.tsx",
    "content": "import React, { useState } from 'react';\nimport { Download } from 'lucide-react';\nimport type { Artifact } from '~/common';\nimport useArtifactProps from '~/hooks/Artifacts/useArtifactProps';\nimport { useEditorContext } from '~/Providers';\nimport { CheckMark } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\n\nconst DownloadArtifact = ({\n  artifact,\n  className = '',\n}: {\n  artifact: Artifact;\n  className?: string;\n}) => {\n  const localize = useLocalize();\n  const { currentCode } = useEditorContext();\n  const [isDownloaded, setIsDownloaded] = useState(false);\n  const { fileKey: fileName } = useArtifactProps({ artifact });\n\n  const handleDownload = () => {\n    try {\n      const content = currentCode ?? artifact.content ?? '';\n      if (!content) {\n        return;\n      }\n      const blob = new Blob([content], { type: 'text/plain' });\n      const url = window.URL.createObjectURL(blob);\n      const link = document.createElement('a');\n      link.href = url;\n      link.download = fileName;\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n      window.URL.revokeObjectURL(url);\n      setIsDownloaded(true);\n      setTimeout(() => setIsDownloaded(false), 3000);\n    } catch (error) {\n      console.error('Download failed:', error);\n    }\n  };\n\n  return (\n    <button\n      className={`mr-2 text-text-secondary ${className}`}\n      onClick={handleDownload}\n      aria-label={localize('com_ui_download_artifact')}\n    >\n      {isDownloaded ? <CheckMark className=\"h-4 w-4\" /> : <Download className=\"h-4 w-4\" />}\n    </button>\n  );\n};\n\nexport default DownloadArtifact;\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/Mermaid.tsx",
    "content": "import React, { useEffect, useRef, useState } from 'react';\nimport mermaid from 'mermaid';\nimport { TransformWrapper, TransformComponent, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';\n// import { Button } from '/components/ui/Button'; // Live component\nimport { Button } from '~/components/ui/Button';\nimport { ZoomIn, ZoomOut, RefreshCw } from 'lucide-react';\n\ninterface MermaidDiagramProps {\n  content: string;\n}\n\n/** Note: this is just for testing purposes, don't actually use this component */\nconst MermaidDiagram: React.FC<MermaidDiagramProps> = ({ content }) => {\n  const mermaidRef = useRef<HTMLDivElement>(null);\n  const transformRef = useRef<ReactZoomPanPinchRef>(null);\n  const [isRendered, setIsRendered] = useState(false);\n\n  useEffect(() => {\n    mermaid.initialize({\n      startOnLoad: false,\n      theme: 'base',\n      securityLevel: 'sandbox',\n      themeVariables: {\n        background: '#282C34',\n        primaryColor: '#333842',\n        secondaryColor: '#333842',\n        tertiaryColor: '#333842',\n        primaryTextColor: '#ABB2BF',\n        secondaryTextColor: '#ABB2BF',\n        lineColor: '#636D83',\n        fontSize: '16px',\n        nodeBorder: '#636D83',\n        mainBkg: '#282C34',\n        altBackground: '#282C34',\n        textColor: '#ABB2BF',\n        edgeLabelBackground: '#282C34',\n        clusterBkg: '#282C34',\n        clusterBorder: '#636D83',\n        labelBoxBkgColor: '#333842',\n        labelBoxBorderColor: '#636D83',\n        labelTextColor: '#ABB2BF',\n      },\n      flowchart: {\n        curve: 'basis',\n        nodeSpacing: 50,\n        rankSpacing: 50,\n        diagramPadding: 8,\n        htmlLabels: true,\n        useMaxWidth: true,\n        padding: 15,\n        wrappingWidth: 200,\n      },\n    });\n\n    const renderDiagram = async () => {\n      if (mermaidRef.current) {\n        try {\n          const { svg } = await mermaid.render('mermaid-diagram', content);\n          mermaidRef.current.innerHTML = svg;\n\n          const svgElement = mermaidRef.current.querySelector('svg');\n          if (svgElement) {\n            svgElement.style.width = '100%';\n            svgElement.style.height = '100%';\n\n            const pathElements = svgElement.querySelectorAll('path');\n            pathElements.forEach((path) => {\n              path.style.strokeWidth = '1.5px';\n            });\n\n            const rectElements = svgElement.querySelectorAll('rect');\n            rectElements.forEach((rect) => {\n              const parent = rect.parentElement;\n              if (parent && parent.classList.contains('node')) {\n                rect.style.stroke = '#636D83';\n                rect.style.strokeWidth = '1px';\n              } else {\n                rect.style.stroke = 'none';\n              }\n            });\n          }\n          setIsRendered(true);\n        } catch (error) {\n          console.error('Mermaid rendering error:', error);\n          mermaidRef.current.innerHTML = 'Error rendering diagram';\n        }\n      }\n    };\n\n    renderDiagram();\n  }, [content]);\n\n  const centerAndFitDiagram = () => {\n    if (transformRef.current && mermaidRef.current) {\n      const { centerView, zoomToElement } = transformRef.current;\n      zoomToElement(mermaidRef.current as HTMLElement);\n      centerView(1, 0);\n    }\n  };\n\n  useEffect(() => {\n    if (isRendered) {\n      centerAndFitDiagram();\n    }\n  }, [isRendered]);\n\n  const handlePanning = () => {\n    if (transformRef.current) {\n      const { state, instance } = (transformRef.current as ReactZoomPanPinchRef | undefined) ?? {};\n      if (!state || !instance) {\n        return;\n      }\n      const { scale, positionX, positionY } = state;\n      const { wrapperComponent, contentComponent } = instance;\n\n      if (wrapperComponent && contentComponent) {\n        const wrapperRect = wrapperComponent.getBoundingClientRect();\n        const contentRect = contentComponent.getBoundingClientRect();\n        const maxX = wrapperRect.width - contentRect.width * scale;\n        const maxY = wrapperRect.height - contentRect.height * scale;\n\n        let newX = positionX;\n        let newY = positionY;\n\n        if (newX > 0) {\n          newX = 0;\n        }\n        if (newY > 0) {\n          newY = 0;\n        }\n        if (newX < maxX) {\n          newX = maxX;\n        }\n        if (newY < maxY) {\n          newY = maxY;\n        }\n\n        if (newX !== positionX || newY !== positionY) {\n          instance.setTransformState(scale, newX, newY);\n        }\n      }\n    }\n  };\n\n  return (\n    <div className=\"relative h-screen w-screen cursor-move bg-[#282C34] p-5\">\n      <TransformWrapper\n        ref={transformRef}\n        initialScale={1}\n        minScale={0.1}\n        maxScale={4}\n        limitToBounds={false}\n        centerOnInit={true}\n        initialPositionY={0}\n        wheel={{ step: 0.1 }}\n        panning={{ velocityDisabled: true }}\n        alignmentAnimation={{ disabled: true }}\n        onPanning={handlePanning}\n      >\n        {({ zoomIn, zoomOut }) => (\n          <>\n            <TransformComponent\n              wrapperStyle={{ width: '100%', height: '100%', overflow: 'hidden' }}\n            >\n              <div\n                ref={mermaidRef}\n                style={{ width: 'auto', height: 'auto', minWidth: '100%', minHeight: '100%' }}\n              />\n            </TransformComponent>\n            <div className=\"absolute bottom-2 right-2 flex space-x-2\">\n              <Button onClick={() => zoomIn(0.1)} variant=\"outline\" size=\"icon\">\n                <ZoomIn className=\"h-4 w-4\" />\n              </Button>\n              <Button onClick={() => zoomOut(0.1)} variant=\"outline\" size=\"icon\">\n                <ZoomOut className=\"h-4 w-4\" />\n              </Button>\n              <Button onClick={centerAndFitDiagram} variant=\"outline\" size=\"icon\">\n                <RefreshCw className=\"h-4 w-4\" />\n              </Button>\n            </div>\n          </>\n        )}\n      </TransformWrapper>\n    </div>\n  );\n};\n\nexport default MermaidDiagram;\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/Thinking.tsx",
    "content": "import { useState, useMemo, memo, useCallback } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { Atom, ChevronDown } from 'lucide-react';\nimport type { MouseEvent, FC } from 'react';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nconst BUTTON_STYLES = {\n  base: 'group mt-3 flex w-fit items-center justify-center rounded-xl bg-surface-tertiary px-3 py-2 text-xs leading-[18px] animate-thinking-appear',\n  icon: 'icon-sm ml-1.5 transform-gpu text-text-primary transition-transform duration-200',\n} as const;\n\nconst CONTENT_STYLES = {\n  wrapper: 'relative pl-3 text-text-secondary',\n  border:\n    'absolute left-0 h-[calc(100%-10px)] border-l-2 border-border-medium dark:border-border-heavy',\n  partBorder:\n    'absolute left-0 h-[calc(100%)] border-l-2 border-border-medium dark:border-border-heavy',\n  text: 'whitespace-pre-wrap leading-[26px]',\n} as const;\n\nexport const ThinkingContent: FC<{ children: React.ReactNode; isPart?: boolean }> = memo(\n  ({ isPart, children }) => (\n    <div className={CONTENT_STYLES.wrapper}>\n      <div className={isPart === true ? CONTENT_STYLES.partBorder : CONTENT_STYLES.border} />\n      <p className={CONTENT_STYLES.text}>{children}</p>\n    </div>\n  ),\n);\n\nexport const ThinkingButton = memo(\n  ({\n    isExpanded,\n    onClick,\n    label,\n  }: {\n    isExpanded: boolean;\n    onClick: (e: MouseEvent<HTMLButtonElement>) => void;\n    label: string;\n  }) => (\n    <button type=\"button\" onClick={onClick} className={BUTTON_STYLES.base}>\n      <Atom size={14} className=\"mr-1.5 text-text-secondary\" />\n      {label}\n      <ChevronDown className={`${BUTTON_STYLES.icon} ${isExpanded ? 'rotate-180' : ''}`} />\n    </button>\n  ),\n);\n\nconst Thinking: React.ElementType = memo(({ children }: { children: React.ReactNode }) => {\n  const localize = useLocalize();\n  const showThinking = useRecoilValue<boolean>(store.showThinking);\n  const [isExpanded, setIsExpanded] = useState(showThinking);\n\n  const handleClick = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    setIsExpanded((prev) => !prev);\n  }, []);\n\n  const label = useMemo(() => localize('com_ui_thoughts'), [localize]);\n\n  if (children == null) {\n    return null;\n  }\n\n  return (\n    <>\n      <div className=\"mb-5\">\n        <ThinkingButton isExpanded={isExpanded} onClick={handleClick} label={label} />\n      </div>\n      <div\n        className={cn('grid transition-all duration-300 ease-out', isExpanded && 'mb-8')}\n        style={{\n          gridTemplateRows: isExpanded ? '1fr' : '0fr',\n        }}\n      >\n        <div className=\"overflow-hidden\">\n          <ThinkingContent isPart={true}>{children}</ThinkingContent>\n        </div>\n      </div>\n    </>\n  );\n});\n\nThinkingButton.displayName = 'ThinkingButton';\nThinkingContent.displayName = 'ThinkingContent';\nThinking.displayName = 'Thinking';\n\nexport default memo(Thinking);\n"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/remarkCitationPlugin.tsx",
    "content": "import { visit } from 'unist-util-visit';\n\nexport const remarkCitationPlugin = () => {\n    return (tree) => {\n        visit(tree, 'text', (node) => {\n            if (typeof node.value === 'string') {\n                const regex = /\\[citation:(\\d+)\\]/g;\n                // node.value = node.value.replace(regex, (match, number) => {\n                //     // 将 [citation:number] 替换为一个自定义标记\n                //     return `<citation>${number}</citation>`; // 标记为 \"citation:number\"\n                // });\n                if (regex.test(node.value)) {\n                    node.name = 'citation'\n                    node.data = {\n                        hName: node.name,\n                        hProperties: node.attributes,\n                        ...node.data,\n                    };\n                    return node;\n                }\n            }\n        });\n    };\n};"
  },
  {
    "path": "src/frontend/client/src/components/Artifacts/useDebounceCodeBlock.ts",
    "content": "// client/src/hooks/useDebounceCodeBlock.ts\nimport { useCallback, useEffect } from 'react';\nimport debounce from 'lodash/debounce';\nimport { useSetRecoilState } from 'recoil';\nimport { codeBlocksState, codeBlockIdsState } from '~/store/artifacts';\nimport type { CodeBlock } from '~/common';\n\nexport function useDebounceCodeBlock() {\n  const setCodeBlocks = useSetRecoilState(codeBlocksState);\n  const setCodeBlockIds = useSetRecoilState(codeBlockIdsState);\n\n  const updateCodeBlock = useCallback((codeBlock: CodeBlock) => {\n    console.log('Updating code block:', codeBlock);\n    setCodeBlocks((prev) => ({\n      ...prev,\n      [codeBlock.id]: codeBlock,\n    }));\n    setCodeBlockIds((prev) =>\n      prev.includes(codeBlock.id) ? prev : [...prev, codeBlock.id],\n    );\n  }, [setCodeBlocks, setCodeBlockIds]);\n\n  const debouncedUpdateCodeBlock = useCallback(\n    debounce((codeBlock: CodeBlock) => {\n      updateCodeBlock(codeBlock);\n    }, 25),\n    [updateCodeBlock],\n  );\n\n  useEffect(() => {\n    return () => {\n      debouncedUpdateCodeBlock.cancel();\n    };\n  }, [debouncedUpdateCodeBlock]);\n\n  return debouncedUpdateCodeBlock;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Audio/TTS.tsx",
    "content": "/* eslint-disable jsx-a11y/media-has-caption */\nimport { useEffect, useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TMessageAudio } from '~/common';\nimport { useLocalize, useTTSBrowser, useTTSEdge, useTTSExternal } from '~/hooks';\nimport { VolumeIcon, VolumeMuteIcon, Spinner } from '~/components/svg';\nimport { useToastContext } from '~/Providers/ToastContext';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\nexport function BrowserTTS({ isLast, index, messageId, content, className }: TMessageAudio) {\n  const localize = useLocalize();\n  const playbackRate = useRecoilValue(store.playbackRate);\n\n  const { toggleSpeech, isSpeaking, isLoading, audioRef } = useTTSBrowser({\n    isLast,\n    index,\n    messageId,\n    content,\n  });\n\n  const renderIcon = (size: string) => {\n    if (isLoading === true) {\n      return <Spinner size={size} />;\n    }\n\n    if (isSpeaking === true) {\n      return <VolumeMuteIcon size={size} />;\n    }\n\n    return <VolumeIcon size={size} />;\n  };\n\n  useEffect(() => {\n    const messageAudio = document.getElementById(`audio-${messageId}`) as HTMLAudioElement | null;\n    if (!messageAudio) {\n      return;\n    }\n    if (playbackRate != null && playbackRate > 0 && messageAudio.playbackRate !== playbackRate) {\n      messageAudio.playbackRate = playbackRate;\n    }\n  }, [audioRef, isSpeaking, playbackRate, messageId]);\n\n  logger.log(\n    'MessageAudio: audioRef.current?.src, audioRef.current',\n    audioRef.current?.src,\n    audioRef.current,\n  );\n\n  return (\n    <>\n      <button\n        className={className}\n        onClickCapture={() => {\n          if (audioRef.current) {\n            audioRef.current.muted = false;\n          }\n          toggleSpeech();\n        }}\n        type=\"button\"\n        title={isSpeaking === true ? localize('com_ui_stop') : localize('com_ui_read_aloud')}\n      >\n        {renderIcon('19')}\n      </button>\n      <audio\n        ref={audioRef}\n        controls\n        preload=\"none\"\n        controlsList=\"nodownload nofullscreen noremoteplayback\"\n        style={{\n          position: 'absolute',\n          overflow: 'hidden',\n          display: 'none',\n          height: '0px',\n          width: '0px',\n        }}\n        src={audioRef.current?.src}\n        onError={(error) => {\n          logger.error('Error fetching audio:', error);\n        }}\n        id={`audio-${messageId}`}\n        autoPlay\n      />\n    </>\n  );\n}\n\nexport function EdgeTTS({ isLast, index, messageId, content, className }: TMessageAudio) {\n  const localize = useLocalize();\n  const playbackRate = useRecoilValue(store.playbackRate);\n  const isBrowserSupported = useMemo(\n    () => typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported('audio/mpeg'),\n    [],\n  );\n\n  const { showToast } = useToastContext();\n  const { toggleSpeech, isSpeaking, isLoading, audioRef } = useTTSEdge({\n    isLast,\n    index,\n    messageId,\n    content,\n  });\n\n  const renderIcon = (size: string) => {\n    if (isLoading === true) {\n      return <Spinner size={size} />;\n    }\n\n    if (isSpeaking === true) {\n      return <VolumeMuteIcon size={size} />;\n    }\n\n    return <VolumeIcon size={size} />;\n  };\n\n  useEffect(() => {\n    const messageAudio = document.getElementById(`audio-${messageId}`) as HTMLAudioElement | null;\n    if (!messageAudio) {\n      return;\n    }\n    if (playbackRate != null && playbackRate > 0 && messageAudio.playbackRate !== playbackRate) {\n      messageAudio.playbackRate = playbackRate;\n    }\n  }, [audioRef, isSpeaking, playbackRate, messageId]);\n\n  logger.log(\n    'MessageAudio: audioRef.current?.src, audioRef.current',\n    audioRef.current?.src,\n    audioRef.current,\n  );\n\n  return (\n    <>\n      <button\n        className={className}\n        onClickCapture={() => {\n          if (!isBrowserSupported) {\n            showToast({\n              message: localize('com_nav_tts_unsupported_error'),\n              status: 'error',\n            });\n            return;\n          }\n          if (audioRef.current) {\n            audioRef.current.muted = false;\n          }\n          toggleSpeech();\n        }}\n        type=\"button\"\n        title={isSpeaking === true ? localize('com_ui_stop') : localize('com_ui_read_aloud')}\n      >\n        {renderIcon('19')}\n      </button>\n      {isBrowserSupported ? (\n        <audio\n          ref={audioRef}\n          controls\n          preload=\"none\"\n          controlsList=\"nodownload nofullscreen noremoteplayback\"\n          style={{\n            position: 'absolute',\n            overflow: 'hidden',\n            display: 'none',\n            height: '0px',\n            width: '0px',\n          }}\n          src={audioRef.current?.src}\n          onError={(error) => {\n            logger.error('Error fetching audio:', error);\n          }}\n          id={`audio-${messageId}`}\n          autoPlay\n        />\n      ) : null}\n    </>\n  );\n}\n\nexport function ExternalTTS({ isLast, index, messageId, content, className }: TMessageAudio) {\n  const localize = useLocalize();\n  const playbackRate = useRecoilValue(store.playbackRate);\n\n  const { toggleSpeech, isSpeaking, isLoading, audioRef } = useTTSExternal({\n    isLast,\n    index,\n    messageId,\n    content,\n  });\n\n  const renderIcon = (size: string) => {\n    if (isLoading === true) {\n      return <Spinner size={size} />;\n    }\n\n    if (isSpeaking === true) {\n      return <VolumeMuteIcon size={size} />;\n    }\n\n    return <VolumeIcon size={size} />;\n  };\n\n  useEffect(() => {\n    const messageAudio = document.getElementById(`audio-${messageId}`) as HTMLAudioElement | null;\n    if (!messageAudio) {\n      return;\n    }\n    if (playbackRate != null && playbackRate > 0 && messageAudio.playbackRate !== playbackRate) {\n      messageAudio.playbackRate = playbackRate;\n    }\n  }, [audioRef, isSpeaking, playbackRate, messageId]);\n\n  logger.log(\n    'MessageAudio: audioRef.current?.src, audioRef.current',\n    audioRef.current?.src,\n    audioRef.current,\n  );\n\n  return (\n    <>\n      <button\n        className={className}\n        onClickCapture={() => {\n          if (audioRef.current) {\n            audioRef.current.muted = false;\n          }\n          toggleSpeech();\n        }}\n        type=\"button\"\n        title={isSpeaking === true ? localize('com_ui_stop') : localize('com_ui_read_aloud')}\n      >\n        {renderIcon('19')}\n      </button>\n      <audio\n        ref={audioRef}\n        controls\n        preload=\"none\"\n        controlsList=\"nodownload nofullscreen noremoteplayback\"\n        style={{\n          position: 'absolute',\n          overflow: 'hidden',\n          display: 'none',\n          height: '0px',\n          width: '0px',\n        }}\n        src={audioRef.current?.src}\n        onError={(error) => {\n          logger.error('Error fetching audio:', error);\n        }}\n        id={`audio-${messageId}`}\n        autoPlay\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Audio/Voices.tsx",
    "content": "import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport type { Option } from '~/common';\nimport { useLocalize, useTTSBrowser, useTTSEdge, useTTSExternal } from '~/hooks';\nimport { Dropdown } from '~/components/ui';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\nexport function EdgeVoiceDropdown() {\n  const localize = useLocalize();\n  const { voices = [] } = useTTSEdge();\n  const [voice, setVoice] = useRecoilState(store.voice);\n\n  const handleVoiceChange = (newValue?: string | Option) => {\n    logger.log('Edge Voice changed:', newValue);\n    const newVoice = typeof newValue === 'string' ? newValue : newValue?.value;\n    if (newVoice != null) {\n      return setVoice(newVoice.toString());\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_voice_select')}</div>\n      <Dropdown\n        key={`edge-voice-dropdown-${voices.length}`}\n        value={voice ?? ''}\n        options={voices}\n        onChange={handleVoiceChange}\n        sizeClasses=\"min-w-[200px] !max-w-[400px] [--anchor-max-width:400px]\"\n        testId=\"EdgeVoiceDropdown\"\n      />\n    </div>\n  );\n}\n\nexport function BrowserVoiceDropdown() {\n  const localize = useLocalize();\n  const { voices = [] } = useTTSBrowser();\n  const [voice, setVoice] = useRecoilState(store.voice);\n\n  const handleVoiceChange = (newValue?: string | Option) => {\n    logger.log('Browser Voice changed:', newValue);\n    const newVoice = typeof newValue === 'string' ? newValue : newValue?.value;\n    if (newVoice != null) {\n      return setVoice(newVoice.toString());\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_voice_select')}</div>\n      <Dropdown\n        key={`browser-voice-dropdown-${voices.length}`}\n        value={voice ?? ''}\n        options={voices}\n        onChange={handleVoiceChange}\n        sizeClasses=\"min-w-[200px] !max-w-[400px] [--anchor-max-width:400px]\"\n        testId=\"BrowserVoiceDropdown\"\n      />\n    </div>\n  );\n}\n\nexport function ExternalVoiceDropdown() {\n  const localize = useLocalize();\n  const { voices = [] } = useTTSExternal();\n  const [voice, setVoice] = useRecoilState(store.voice);\n\n  const handleVoiceChange = (newValue?: string | Option) => {\n    logger.log('External Voice changed:', newValue);\n    const newVoice = typeof newValue === 'string' ? newValue : newValue?.value;\n    if (newVoice != null) {\n      return setVoice(newVoice.toString());\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_voice_select')}</div>\n      <Dropdown\n        key={`external-voice-dropdown-${voices.length}`}\n        value={voice ?? ''}\n        options={voices}\n        onChange={handleVoiceChange}\n        sizeClasses=\"min-w-[200px] !max-w-[400px] [--anchor-max-width:400px]\"\n        testId=\"ExternalVoiceDropdown\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/ApiErrorWatcher.tsx",
    "content": "import React from 'react';\nimport { useApiErrorBoundary } from '~/hooks/ApiErrorBoundaryContext';\nimport { useNavigate } from 'react-router-dom';\n\nconst ApiErrorWatcher = () => {\n  const { error } = useApiErrorBoundary();\n  const navigate = useNavigate();\n  React.useEffect(() => {\n    if (error?.response?.status === 500) {\n      // do something with error\n      // navigate('/login');\n    }\n  }, [error, navigate]);\n\n  return null;\n};\n\nexport default ApiErrorWatcher;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/AuthLayout.tsx",
    "content": "import { TranslationKeys, useLocalize } from '~/hooks';\nimport { BlinkAnimation } from './BlinkAnimation';\nimport { TStartupConfig } from '~/data-provider/data-provider/src';\nimport SocialLoginRender from './SocialLoginRender';\nimport { ThemeSelector } from '~/components/ui';\nimport { Banner } from '../Banners';\nimport Footer from './Footer';\n\nconst ErrorRender = ({ children }: { children: React.ReactNode }) => (\n  <div className=\"mt-16 flex justify-center\">\n    <div\n      role=\"alert\"\n      aria-live=\"assertive\"\n      className=\"rounded-md border border-red-500 bg-red-500/10 px-3 py-2 text-sm text-gray-600 dark:text-gray-200\"\n    >\n      {children}\n    </div>\n  </div>\n);\n\nfunction AuthLayout({\n  children,\n  header,\n  isFetching,\n  startupConfig,\n  startupConfigError,\n  pathname,\n  error,\n}: {\n  children: React.ReactNode;\n  header: React.ReactNode;\n  isFetching: boolean;\n  startupConfig: TStartupConfig | null | undefined;\n  startupConfigError: unknown | null | undefined;\n  pathname: string;\n  error: TranslationKeys | null;\n}) {\n  const localize = useLocalize();\n\n  const hasStartupConfigError = startupConfigError !== null && startupConfigError !== undefined;\n  const DisplayError = () => {\n    if (hasStartupConfigError) {\n      return <ErrorRender>{localize('com_auth_error_login_server')}</ErrorRender>;\n    } else if (error === 'com_auth_error_invalid_reset_token') {\n      return (\n        <ErrorRender>\n          {localize('com_auth_error_invalid_reset_token')}{' '}\n          <a className=\"font-semibold text-green-600 hover:underline\" href=\"/forgot-password\">\n            {localize('com_auth_click_here')}\n          </a>{' '}\n          {localize('com_auth_to_try_again')}\n        </ErrorRender>\n      );\n    } else if (error != null && error) {\n      return <ErrorRender>{localize(error)}</ErrorRender>;\n    }\n    return null;\n  };\n\n  return (\n    <div className=\"relative flex min-h-screen flex-col bg-white dark:bg-gray-900\">\n      <Banner />\n      <BlinkAnimation active={isFetching}>\n        <div className=\"mt-6 h-20 w-full bg-cover\">\n          <img\n            src=\"/assets/sg-logo.png\"\n            className=\"h-full w-full object-contain\"\n            alt={localize('com_ui_logo', { 0: startupConfig?.appTitle ?? 'Deepseek' })}\n          />\n        </div>\n      </BlinkAnimation>\n      <DisplayError />\n      <div className=\"absolute bottom-0 left-0 md:m-4\">\n        <ThemeSelector />\n      </div>\n\n      <div className=\"flex flex-grow items-center justify-center\">\n        <div className=\"w-authPageWidth overflow-hidden bg-white px-6 py-4 dark:bg-gray-900 sm:max-w-md sm:rounded-lg\">\n          {!hasStartupConfigError && !isFetching && (\n            <h1\n              className=\"mb-4 text-center text-3xl font-semibold text-black dark:text-white\"\n              style={{ userSelect: 'none' }}\n            >\n              {header}\n            </h1>\n          )}\n          {children}\n          {!pathname.includes('2fa') &&\n            (pathname.includes('login') || pathname.includes('register')) && (\n            <SocialLoginRender startupConfig={startupConfig} />\n          )}\n        </div>\n      </div>\n      {/* <Footer startupConfig={startupConfig} /> */}\n    </div>\n  );\n}\n\nexport default AuthLayout;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/BlinkAnimation.tsx",
    "content": "export const BlinkAnimation = ({\n  active,\n  children,\n}: {\n  active: boolean;\n  children: React.ReactNode;\n}) => {\n  const style = `\n  @keyframes blink-animation {\n    0%,\n    100% {\n      opacity: 1;\n    }\n    50% {\n      opacity: 0;\n    }\n  }`;\n\n  if (!active) {\n    return <>{children}</>;\n  }\n\n  return (\n    <>\n      <style>{style}</style>\n      <div style={{ animation: 'blink-animation 3s infinite' }}>{children}</div>\n    </>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/ErrorMessage.tsx",
    "content": "export const ErrorMessage = ({ children }: { children: React.ReactNode }) => (\n  <div\n    role=\"alert\"\n    aria-live=\"assertive\"\n    className=\"relative mt-6 rounded-lg border border-red-500/20 bg-red-50/50 px-6 py-4 text-red-700 shadow-sm transition-all dark:bg-red-950/30 dark:text-red-100\"\n  >\n    {children}\n  </div>\n);\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/Footer.tsx",
    "content": "import { useLocalize } from '~/hooks';\nimport { TStartupConfig } from '~/data-provider/data-provider/src';\n\nfunction Footer({ startupConfig }: { startupConfig: TStartupConfig | null | undefined }) {\n  const localize = useLocalize();\n  if (!startupConfig) {\n    return null;\n  }\n  const privacyPolicy = startupConfig.interface?.privacyPolicy;\n  const termsOfService = startupConfig.interface?.termsOfService;\n\n  const privacyPolicyRender = privacyPolicy?.externalUrl && (\n    <a\n      className=\"text-sm text-green-500\"\n      href={privacyPolicy.externalUrl}\n      target={privacyPolicy.openNewTab ? '_blank' : undefined}\n      rel=\"noreferrer\"\n    >\n      {localize('com_ui_privacy_policy')}\n    </a>\n  );\n\n  const termsOfServiceRender = termsOfService?.externalUrl && (\n    <a\n      className=\"text-sm text-green-500\"\n      href={termsOfService.externalUrl}\n      target={termsOfService.openNewTab ? '_blank' : undefined}\n      rel=\"noreferrer\"\n    >\n      {localize('com_ui_terms_of_service')}\n    </a>\n  );\n\n  return (\n    <div className=\"align-end m-4 flex justify-center gap-2\" role=\"contentinfo\">\n      {privacyPolicyRender}\n      {privacyPolicyRender && termsOfServiceRender && (\n        <div className=\"border-r-[1px] border-gray-300 dark:border-gray-600\" />\n      )}\n      {termsOfServiceRender}\n    </div>\n  );\n}\n\nexport default Footer;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/Login.tsx",
    "content": "import { useOutletContext } from 'react-router-dom';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport type { TLoginLayoutContext } from '~/common';\nimport { ErrorMessage } from '~/components/Auth/ErrorMessage';\nimport { getLoginError } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport LoginForm from './LoginForm';\n\nfunction Login() {\n  const localize = useLocalize();\n  const { error, setError, login } = useAuthContext();\n  const { startupConfig } = useOutletContext<TLoginLayoutContext>();\n\n  return (\n    <>\n      {error != null && <ErrorMessage>{localize(getLoginError(error))}</ErrorMessage>}\n      {startupConfig?.emailLoginEnabled === true && (\n        <LoginForm\n          onSubmit={login}\n          startupConfig={startupConfig}\n          error={error}\n          setError={setError}\n        />\n      )}\n      {startupConfig?.registrationEnabled === true && (\n        <p className=\"my-4 text-center text-sm font-light text-gray-700 dark:text-white\">\n          {' '}\n          {localize('com_auth_no_account')}{' '}\n          <a\n            href=\"/register\"\n            className=\"inline-flex p-1 text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n          >\n            {localize('com_auth_sign_up')}\n          </a>\n        </p>\n      )}\n    </>\n  );\n}\n\nexport default Login;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/LoginForm.tsx",
    "content": "import { useForm } from 'react-hook-form';\nimport React, { useState, useEffect } from 'react';\nimport type { TLoginUser, TStartupConfig } from '~/data-provider/data-provider/src';\nimport type { TAuthContext } from '~/common';\nimport { useResendVerificationEmail, useGetStartupConfig } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\n\ntype TLoginFormProps = {\n  onSubmit: (data: TLoginUser) => void;\n  startupConfig: TStartupConfig;\n  error: Pick<TAuthContext, 'error'>['error'];\n  setError: Pick<TAuthContext, 'setError'>['setError'];\n};\n\nconst LoginForm: React.FC<TLoginFormProps> = ({ onSubmit, startupConfig, error, setError }) => {\n  const localize = useLocalize();\n  const {\n    register,\n    getValues,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<TLoginUser>();\n  const [showResendLink, setShowResendLink] = useState<boolean>(false);\n\n  const { data: config } = useGetStartupConfig();\n  const useUsernameLogin = config?.ldap?.username;\n\n  useEffect(() => {\n    if (error && error.includes('422') && !showResendLink) {\n      setShowResendLink(true);\n    }\n  }, [error, showResendLink]);\n\n  const resendLinkMutation = useResendVerificationEmail({\n    onMutate: () => {\n      setError(undefined);\n      setShowResendLink(false);\n    },\n  });\n\n  if (!startupConfig) {\n    return null;\n  }\n\n  const renderError = (fieldName: string) => {\n    const errorMessage = errors[fieldName]?.message;\n    return errorMessage ? (\n      <span role=\"alert\" className=\"mt-1 text-sm text-red-500 dark:text-red-900\">\n        {String(errorMessage)}\n      </span>\n    ) : null;\n  };\n\n  const handleResendEmail = () => {\n    const email = getValues('email');\n    if (!email) {\n      return setShowResendLink(false);\n    }\n    resendLinkMutation.mutate({ email });\n  };\n\n  return (\n    <>\n      {showResendLink && (\n        <div className=\"mt-2 rounded-md border border-green-500 bg-green-500/10 px-3 py-2 text-sm text-gray-600 dark:text-gray-200\">\n          {localize('com_auth_email_verification_resend_prompt')}\n          <button\n            type=\"button\"\n            className=\"ml-2 text-blue-600 hover:underline\"\n            onClick={handleResendEmail}\n            disabled={resendLinkMutation.isLoading}\n          >\n            {localize('com_auth_email_resend_link')}\n          </button>\n        </div>\n      )}\n      <form\n        className=\"mt-6\"\n        aria-label=\"Login form\"\n        method=\"POST\"\n        onSubmit={handleSubmit((data) => onSubmit(data))}\n      >\n        <div className=\"mb-4\">\n          <div className=\"relative\">\n            <input\n              type=\"text\"\n              id=\"email\"\n              autoComplete={useUsernameLogin ? 'username' : 'email'}\n              aria-label={localize('com_auth_email')}\n              {...register('email', {\n                required: localize('com_auth_email_required'),\n                maxLength: { value: 120, message: localize('com_auth_email_max_length') },\n                pattern: {\n                  value: useUsernameLogin ? /\\S+/ : /\\S+/,\n                  message: localize('com_auth_email_pattern'),\n                },\n              })}\n              aria-invalid={!!errors.email}\n              className=\"\n                webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light\n                bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none\n              \"\n              placeholder=\" \"\n            />\n            <label\n              htmlFor=\"email\"\n              className=\"\n                absolute start-3 top-1.5 z-10 origin-[0] -translate-y-4 scale-75 transform bg-surface-primary px-2 text-sm text-text-secondary-alt duration-200\n                peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:scale-100\n                peer-focus:top-1.5 peer-focus:-translate-y-4 peer-focus:scale-75 peer-focus:px-2 peer-focus:text-green-600 dark:peer-focus:text-green-500\n                rtl:peer-focus:left-auto rtl:peer-focus:translate-x-1/4\n                \"\n            >\n              {useUsernameLogin\n                ? localize('com_auth_username').replace(/ \\(.*$/, '')\n                : localize('com_auth_email_address')}\n            </label>\n          </div>\n          {renderError('email')}\n        </div>\n        <div className=\"mb-2\">\n          <div className=\"relative\">\n            <input\n              type=\"password\"\n              id=\"password\"\n              autoComplete=\"current-password\"\n              aria-label={localize('com_auth_password')}\n              {...register('password', {\n                required: localize('com_auth_password_required'),\n                minLength: { value: 8, message: localize('com_auth_password_min_length') },\n                maxLength: { value: 128, message: localize('com_auth_password_max_length') },\n              })}\n              aria-invalid={!!errors.password}\n              className=\"\n                webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light\n                bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none\n                \"\n              placeholder=\" \"\n            />\n            <label\n              htmlFor=\"password\"\n              className=\"\n                absolute start-3 top-1.5 z-10 origin-[0] -translate-y-4 scale-75 transform bg-surface-primary px-2 text-sm text-text-secondary-alt duration-200\n                peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:scale-100\n                peer-focus:top-1.5 peer-focus:-translate-y-4 peer-focus:scale-75 peer-focus:px-2 peer-focus:text-green-600 dark:peer-focus:text-green-500\n                rtl:peer-focus:left-auto rtl:peer-focus:translate-x-1/4\n                \"\n            >\n              {localize('com_auth_password')}\n            </label>\n          </div>\n          {renderError('password')}\n        </div>\n        {startupConfig.passwordResetEnabled && (\n          <a\n            href=\"/forgot-password\"\n            className=\"inline-flex p-1 text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n          >\n            {localize('com_auth_password_forgot')}\n          </a>\n        )}\n        <div className=\"mt-6\">\n          <button\n            aria-label={localize('com_auth_continue')}\n            data-testid=\"login-button\"\n            type=\"submit\"\n            className=\"\n            w-full rounded-2xl bg-green-600 px-4 py-3 text-sm font-medium text-white\n            transition-colors hover:bg-green-700 dark:bg-green-600 dark:hover:bg-green-700\n          \"\n          >\n            {localize('com_auth_continue')}\n          </button>\n        </div>\n      </form>\n    </>\n  );\n};\n\nexport default LoginForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/Registration.tsx",
    "content": "import { useForm } from 'react-hook-form';\nimport React, { useState } from 'react';\nimport { useNavigate, useOutletContext, useLocation } from 'react-router-dom';\nimport { useRegisterUserMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TRegisterUser, TError } from '~/data-provider/data-provider/src';\nimport type { TLoginLayoutContext } from '~/common';\nimport { ErrorMessage } from './ErrorMessage';\nimport { Spinner } from '~/components/svg';\nimport { useLocalize, TranslationKeys } from '~/hooks';\n\nconst Registration: React.FC = () => {\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const { startupConfig, startupConfigError, isFetching } = useOutletContext<TLoginLayoutContext>();\n\n  const {\n    watch,\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<TRegisterUser>({ mode: 'onChange' });\n  const password = watch('password');\n\n  const [errorMessage, setErrorMessage] = useState<string>('');\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [countdown, setCountdown] = useState<number>(3);\n\n  const location = useLocation();\n  const queryParams = new URLSearchParams(location.search);\n  const token = queryParams.get('token');\n\n  const registerUser = useRegisterUserMutation({\n    onMutate: () => {\n      setIsSubmitting(true);\n    },\n    onSuccess: () => {\n      setIsSubmitting(false);\n      setCountdown(3);\n      const timer = setInterval(() => {\n        setCountdown((prevCountdown) => {\n          if (prevCountdown <= 1) {\n            clearInterval(timer);\n            navigate('/c/new', { replace: true });\n            return 0;\n          } else {\n            return prevCountdown - 1;\n          }\n        });\n      }, 1000);\n    },\n    onError: (error: unknown) => {\n      setIsSubmitting(false);\n      if ((error as TError).response?.data?.message) {\n        setErrorMessage((error as TError).response?.data?.message ?? '');\n      }\n    },\n  });\n\n  const renderInput = (id: string, label: TranslationKeys, type: string, validation: object) => (\n    <div className=\"mb-4\">\n      <div className=\"relative\">\n        <input\n          id={id}\n          type={type}\n          autoComplete={id}\n          aria-label={localize(label)}\n          {...register(\n            id as 'name' | 'email' | 'username' | 'password' | 'confirm_password',\n            validation,\n          )}\n          aria-invalid={!!errors[id]}\n          className=\"\n            webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light\n            bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none\n          \"\n          placeholder=\" \"\n          data-testid={id}\n        />\n        <label\n          htmlFor={id}\n          className=\"\n            absolute start-3 top-1.5 z-10 origin-[0] -translate-y-4 scale-75 transform bg-surface-primary px-2 text-sm text-text-secondary-alt duration-200\n            peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:scale-100\n            peer-focus:top-1.5 peer-focus:-translate-y-4 peer-focus:scale-75 peer-focus:px-2 peer-focus:text-green-500\n            rtl:peer-focus:left-auto rtl:peer-focus:translate-x-1/4\n          \"\n        >\n          {localize(label)}\n        </label>\n      </div>\n      {errors[id] && (\n        <span role=\"alert\" className=\"mt-1 text-sm text-red-500\">\n          {String(errors[id]?.message) ?? ''}\n        </span>\n      )}\n    </div>\n  );\n\n  return (\n    <>\n      {errorMessage && (\n        <ErrorMessage>\n          {localize('com_auth_error_create')} {errorMessage}\n        </ErrorMessage>\n      )}\n      {registerUser.isSuccess && countdown > 0 && (\n        <div\n          className=\"rounded-md border border-green-500 bg-green-500/10 px-3 py-2 text-sm text-gray-600 dark:text-gray-200\"\n          role=\"alert\"\n        >\n          {localize(\n            startupConfig?.emailEnabled\n              ? 'com_auth_registration_success_generic'\n              : 'com_auth_registration_success_insecure',\n          ) +\n            ' ' +\n            localize('com_auth_email_verification_redirecting', { 0: countdown.toString() })}\n        </div>\n      )}\n      {!startupConfigError && !isFetching && (\n        <>\n          <form\n            className=\"mt-6\"\n            aria-label=\"Registration form\"\n            method=\"POST\"\n            onSubmit={handleSubmit((data: TRegisterUser) =>\n              registerUser.mutate({ ...data, token: token ?? undefined }),\n            )}\n          >\n            {renderInput('name', 'com_auth_full_name', 'text', {\n              required: localize('com_auth_name_required'),\n              minLength: {\n                value: 0,\n                message: localize('com_auth_name_min_length'),\n              },\n              maxLength: {\n                value: 80,\n                message: localize('com_auth_name_max_length'),\n              },\n            })}\n            {renderInput('username', 'com_auth_username', 'text', {\n              minLength: {\n                value: 2,\n                message: localize('com_auth_username_min_length'),\n              },\n              maxLength: {\n                value: 80,\n                message: localize('com_auth_username_max_length'),\n              },\n            })}\n            {renderInput('email', 'com_auth_email', 'email', {\n              required: localize('com_auth_email_required'),\n              minLength: {\n                value: 1,\n                message: localize('com_auth_email_min_length'),\n              },\n              maxLength: {\n                value: 120,\n                message: localize('com_auth_email_max_length'),\n              },\n              pattern: {\n                value: /\\S+/,\n                message: localize('com_auth_email_pattern'),\n              },\n            })}\n            {renderInput('password', 'com_auth_password', 'password', {\n              required: localize('com_auth_password_required'),\n              minLength: {\n                value: 8,\n                message: localize('com_auth_password_min_length'),\n              },\n              maxLength: {\n                value: 128,\n                message: localize('com_auth_password_max_length'),\n              },\n            })}\n            {renderInput('confirm_password', 'com_auth_password_confirm', 'password', {\n              validate: (value: string) =>\n                value === password || localize('com_auth_password_not_match'),\n            })}\n            <div className=\"mt-6\">\n              <button\n                disabled={Object.keys(errors).length > 0}\n                type=\"submit\"\n                aria-label=\"Submit registration\"\n                className=\"\n            w-full rounded-2xl bg-green-600 px-4 py-3 text-sm font-medium text-white\n            transition-colors hover:bg-green-700 focus:outline-none focus:ring-2\n            focus:ring-green-500 focus:ring-offset-2 disabled:opacity-50\n            disabled:hover:bg-green-600 dark:bg-green-600 dark:hover:bg-green-700\n          \"\n              >\n                {isSubmitting ? <Spinner /> : localize('com_auth_continue')}\n              </button>\n            </div>\n          </form>\n\n          <p className=\"my-4 text-center text-sm font-light text-gray-700 dark:text-white\">\n            {localize('com_auth_already_have_account')}{' '}\n            <a\n              href=\"/login\"\n              aria-label=\"Login\"\n              className=\"inline-flex p-1 text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n            >\n              {localize('com_auth_login')}\n            </a>\n          </p>\n        </>\n      )}\n    </>\n  );\n};\n\nexport default Registration;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/RequestPasswordReset.tsx",
    "content": "import { useForm } from 'react-hook-form';\nimport { useState, ReactNode } from 'react';\nimport { useOutletContext } from 'react-router-dom';\nimport { useRequestPasswordResetMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TRequestPasswordReset, TRequestPasswordResetResponse } from '~/data-provider/data-provider/src';\nimport type { FC } from 'react';\nimport type { TLoginLayoutContext } from '~/common';\nimport { useLocalize } from '~/hooks';\n\nconst BodyTextWrapper: FC<{ children: ReactNode }> = ({ children }) => {\n  return (\n    <div\n      className=\"relative mt-6 rounded-lg border border-green-500/20 bg-green-50/50 px-6 py-4 text-green-700 shadow-sm transition-all dark:bg-green-950/30 dark:text-green-100\"\n      role=\"alert\"\n    >\n      {children}\n    </div>\n  );\n};\n\nconst ResetPasswordBodyText = () => {\n  const localize = useLocalize();\n  return (\n    <div className=\"flex flex-col space-y-4\">\n      <p>{localize('com_auth_reset_password_if_email_exists')}</p>\n      <a\n        className=\"inline-flex text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n        href=\"/login\"\n      >\n        {localize('com_auth_back_to_login')}\n      </a>\n    </div>\n  );\n};\n\nfunction RequestPasswordReset() {\n  const localize = useLocalize();\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<TRequestPasswordReset>();\n  const [bodyText, setBodyText] = useState<ReactNode | undefined>(undefined);\n  const { startupConfig, setHeaderText } = useOutletContext<TLoginLayoutContext>();\n\n  const requestPasswordReset = useRequestPasswordResetMutation();\n\n  const onSubmit = (data: TRequestPasswordReset) => {\n    requestPasswordReset.mutate(data, {\n      onSuccess: (data: TRequestPasswordResetResponse) => {\n        if (data.link && !startupConfig?.emailEnabled) {\n          setHeaderText('com_auth_reset_password');\n          setBodyText(\n            <span>\n              {localize('com_auth_click')}{' '}\n              <a className=\"text-green-500 hover:underline\" href={data.link}>\n                {localize('com_auth_here')}\n              </a>{' '}\n              {localize('com_auth_to_reset_your_password')}\n            </span>,\n          );\n        } else {\n          setHeaderText('com_auth_reset_password_link_sent');\n          setBodyText(<ResetPasswordBodyText />);\n        }\n      },\n      onError: () => {\n        setHeaderText('com_auth_reset_password_link_sent');\n        setBodyText(<ResetPasswordBodyText />);\n      },\n    });\n  };\n\n  if (bodyText) {\n    return <BodyTextWrapper>{bodyText}</BodyTextWrapper>;\n  }\n\n  return (\n    <form\n      className=\"mt-8 space-y-6\"\n      aria-label=\"Password reset form\"\n      method=\"POST\"\n      onSubmit={handleSubmit(onSubmit)}\n    >\n      <div className=\"space-y-2\">\n        <div className=\"relative\">\n          <input\n            type=\"email\"\n            id=\"email\"\n            autoComplete=\"off\"\n            aria-label={localize('com_auth_email')}\n            {...register('email', {\n              required: localize('com_auth_email_required'),\n              minLength: {\n                value: 3,\n                message: localize('com_auth_email_min_length'),\n              },\n              maxLength: {\n                value: 120,\n                message: localize('com_auth_email_max_length'),\n              },\n              pattern: {\n                value: /\\S+/,\n                message: localize('com_auth_email_pattern'),\n              },\n            })}\n            aria-invalid={!!errors.email}\n            className=\"\n              peer w-full rounded-lg border border-gray-300 bg-transparent px-4 py-3\n              text-base text-gray-900 placeholder-transparent transition-all\n              focus:border-green-500 focus:outline-none focus:ring-2 focus:ring-green-500/20\n              dark:border-gray-700 dark:text-white dark:focus:border-green-500\n            \"\n            placeholder=\"email@example.com\"\n          />\n          <label\n            htmlFor=\"email\"\n            className=\"\n              absolute -top-2 left-2 z-10 bg-white px-2 text-sm text-gray-600\n              transition-all peer-placeholder-shown:top-3 peer-placeholder-shown:text-base\n              peer-placeholder-shown:text-gray-500 peer-focus:-top-2 peer-focus:text-sm\n              peer-focus:text-green-600 dark:bg-gray-900 dark:text-gray-400\n              dark:peer-focus:text-green-500\n            \"\n          >\n            {localize('com_auth_email_address')}\n          </label>\n        </div>\n        {errors.email && (\n          <p role=\"alert\" className=\"text-sm font-medium text-red-600 dark:text-red-400\">\n            {errors.email.message}\n          </p>\n        )}\n      </div>\n      <div className=\"space-y-4\">\n        <button\n          type=\"submit\"\n          disabled={!!errors.email}\n          className=\"\n            w-full rounded-2xl bg-green-600 px-4 py-3 text-sm font-medium text-white\n            transition-colors hover:bg-green-700 focus:outline-none focus:ring-2\n            focus:ring-green-500 focus:ring-offset-2 disabled:opacity-50\n            disabled:hover:bg-green-600 dark:bg-green-600 dark:hover:bg-green-700\n          \"\n        >\n          {localize('com_auth_continue')}\n        </button>\n        <a\n          href=\"/login\"\n          className=\"block text-center text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n        >\n          {localize('com_auth_back_to_login')}\n        </a>\n      </div>\n    </form>\n  );\n}\n\nexport default RequestPasswordReset;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/ResetPassword.tsx",
    "content": "import { useForm } from 'react-hook-form';\nimport { useOutletContext } from 'react-router-dom';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useResetPasswordMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TResetPassword } from '~/data-provider/data-provider/src';\nimport type { TLoginLayoutContext } from '~/common';\nimport { useLocalize } from '~/hooks';\n\nfunction ResetPassword() {\n  const localize = useLocalize();\n  const {\n    register,\n    handleSubmit,\n    watch,\n    formState: { errors },\n  } = useForm<TResetPassword>();\n  const navigate = useNavigate();\n  const [params] = useSearchParams();\n  const password = watch('password');\n  const resetPassword = useResetPasswordMutation();\n  const { setError, setHeaderText } = useOutletContext<TLoginLayoutContext>();\n\n  const onSubmit = (data: TResetPassword) => {\n    resetPassword.mutate(data, {\n      onError: () => {\n        setError('com_auth_error_invalid_reset_token');\n      },\n      onSuccess: () => {\n        setHeaderText('com_auth_reset_password_success');\n      },\n    });\n  };\n\n  if (resetPassword.isSuccess) {\n    return (\n      <>\n        <div\n          className=\"relative mb-8 mt-4 rounded-2xl border border-green-400 bg-green-100 px-4 py-3 text-center text-green-700 dark:bg-gray-900 dark:text-white\"\n          role=\"alert\"\n        >\n          {localize('com_auth_login_with_new_password')}\n        </div>\n        <button\n          onClick={() => navigate('/login')}\n          aria-label={localize('com_auth_sign_in')}\n          className=\"w-full transform rounded-2xl bg-green-500 px-4 py-3 tracking-wide text-white transition-colors duration-200 hover:bg-green-600 focus:bg-green-600 focus:outline-none\"\n        >\n          {localize('com_auth_continue')}\n        </button>\n      </>\n    );\n  }\n\n  return (\n    <form\n      className=\"mt-6\"\n      aria-label=\"Password reset form\"\n      method=\"POST\"\n      onSubmit={handleSubmit(onSubmit)}\n    >\n      <div className=\"mb-2\">\n        <div className=\"relative\">\n          <input\n            type=\"hidden\"\n            id=\"token\"\n            value={params.get('token') ?? ''}\n            {...register('token', { required: 'Unable to process: No valid reset token' })}\n          />\n          <input\n            type=\"hidden\"\n            id=\"userId\"\n            value={params.get('userId') ?? ''}\n            {...register('userId', { required: 'Unable to process: No valid user id' })}\n          />\n          <input\n            type=\"password\"\n            id=\"password\"\n            autoComplete=\"current-password\"\n            aria-label={localize('com_auth_password')}\n            {...register('password', {\n              required: localize('com_auth_password_required'),\n              minLength: {\n                value: 8,\n                message: localize('com_auth_password_min_length'),\n              },\n              maxLength: {\n                value: 128,\n                message: localize('com_auth_password_max_length'),\n              },\n            })}\n            aria-invalid={!!errors.password}\n            className=\"\n              webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light\n              bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none\n           \"\n            placeholder=\" \"\n          />\n          <label\n            htmlFor=\"password\"\n            className=\"\n              absolute start-3 top-1.5 z-10 origin-[0] -translate-y-4 scale-75 transform bg-surface-primary px-2 text-sm text-text-secondary-alt duration-200\n              peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:scale-100\n              peer-focus:top-1.5 peer-focus:-translate-y-4 peer-focus:scale-75 peer-focus:px-2 peer-focus:text-green-500\n              rtl:peer-focus:left-auto rtl:peer-focus:translate-x-1/4\n          \"\n          >\n            {localize('com_auth_password')}\n          </label>\n        </div>\n\n        {errors.password && (\n          <span role=\"alert\" className=\"mt-1 text-sm text-red-500 dark:text-red-900\">\n            {errors.password.message}\n          </span>\n        )}\n      </div>\n      <div className=\"mb-2\">\n        <div className=\"relative\">\n          <input\n            type=\"password\"\n            id=\"confirm_password\"\n            aria-label={localize('com_auth_password_confirm')}\n            {...register('confirm_password', {\n              validate: (value) => value === password || localize('com_auth_password_not_match'),\n            })}\n            aria-invalid={!!errors.confirm_password}\n            className=\"\n            webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light\n            bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none\n            \"\n            placeholder=\" \"\n          />\n          <label\n            htmlFor=\"confirm_password\"\n            className=\"\n              absolute start-3 top-1.5 z-10 origin-[0] -translate-y-4 scale-75 transform bg-surface-primary px-2 text-sm text-text-secondary-alt duration-200\n              peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:scale-100\n              peer-focus:top-1.5 peer-focus:-translate-y-4 peer-focus:scale-75 peer-focus:px-2 peer-focus:text-green-500\n              rtl:peer-focus:left-auto rtl:peer-focus:translate-x-1/4\n            \"\n          >\n            {localize('com_auth_password_confirm')}\n          </label>\n        </div>\n        {errors.confirm_password && (\n          <span role=\"alert\" className=\"mt-1 text-sm text-red-500 dark:text-red-900\">\n            {errors.confirm_password.message}\n          </span>\n        )}\n        {errors.token && (\n          <span role=\"alert\" className=\"mt-1 text-sm text-red-500 dark:text-red-900\">\n            {errors.token.message}\n          </span>\n        )}\n        {errors.userId && (\n          <span role=\"alert\" className=\"mt-1 text-sm text-red-500 dark:text-red-900\">\n            {errors.userId.message}\n          </span>\n        )}\n      </div>\n      <div className=\"mt-6\">\n        <button\n          disabled={!!errors.password || !!errors.confirm_password}\n          type=\"submit\"\n          aria-label={localize('com_auth_submit_registration')}\n          className=\"\n            w-full rounded-2xl bg-green-600 px-4 py-3 text-sm font-medium text-white\n            transition-colors hover:bg-green-700 focus:outline-none focus:ring-2\n            focus:ring-green-500 focus:ring-offset-2 disabled:opacity-50\n            disabled:hover:bg-green-600 dark:bg-green-600 dark:hover:bg-green-700\n          \"\n        >\n          {localize('com_auth_continue')}\n        </button>\n      </div>\n    </form>\n  );\n}\n\nexport default ResetPassword;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/SocialButton.tsx",
    "content": "import React from 'react';\n\nconst SocialButton = ({ id, enabled, serverDomain, oauthPath, Icon, label }) => {\n  if (!enabled) {\n    return null;\n  }\n\n  return (\n    <div className=\"mt-2 flex gap-x-2\">\n      <a\n        aria-label={`${label}`}\n        className=\"flex w-full items-center space-x-3 rounded-2xl border border-border-light bg-surface-primary px-5 py-3 text-text-primary transition-colors duration-200 hover:bg-surface-tertiary\"\n        href={`${serverDomain}/oauth/${oauthPath}`}\n        data-testid={id}\n      >\n        <Icon />\n        <p>{label}</p>\n      </a>\n    </div>\n  );\n};\n\nexport default SocialButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/SocialLoginRender.tsx",
    "content": "import { GoogleIcon, FacebookIcon, OpenIDIcon, GithubIcon, DiscordIcon, AppleIcon } from '~/components';\n\nimport SocialButton from './SocialButton';\n\nimport { useLocalize } from '~/hooks';\n\nimport { TStartupConfig } from '~/data-provider/data-provider/src';\n\nfunction SocialLoginRender({\n  startupConfig,\n}: {\n  startupConfig: TStartupConfig | null | undefined;\n}) {\n  const localize = useLocalize();\n\n  if (!startupConfig) {\n    return null;\n  }\n\n  const providerComponents = {\n    discord: startupConfig.discordLoginEnabled && (\n      <SocialButton\n        key=\"discord\"\n        enabled={startupConfig.discordLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"discord\"\n        Icon={DiscordIcon}\n        label={localize('com_auth_discord_login')}\n        id=\"discord\"\n      />\n    ),\n    facebook: startupConfig.facebookLoginEnabled && (\n      <SocialButton\n        key=\"facebook\"\n        enabled={startupConfig.facebookLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"facebook\"\n        Icon={FacebookIcon}\n        label={localize('com_auth_facebook_login')}\n        id=\"facebook\"\n      />\n    ),\n    github: startupConfig.githubLoginEnabled && (\n      <SocialButton\n        key=\"github\"\n        enabled={startupConfig.githubLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"github\"\n        Icon={GithubIcon}\n        label={localize('com_auth_github_login')}\n        id=\"github\"\n      />\n    ),\n    google: startupConfig.googleLoginEnabled && (\n      <SocialButton\n        key=\"google\"\n        enabled={startupConfig.googleLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"google\"\n        Icon={GoogleIcon}\n        label={localize('com_auth_google_login')}\n        id=\"google\"\n      />\n    ),\n    apple: startupConfig.appleLoginEnabled && (\n      <SocialButton\n        key=\"apple\"\n        enabled={startupConfig.appleLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"apple\"\n        Icon={AppleIcon}\n        label={localize('com_auth_apple_login')}\n        id=\"apple\"\n      />\n    ),\n    openid: startupConfig.openidLoginEnabled && (\n      <SocialButton\n        key=\"openid\"\n        enabled={startupConfig.openidLoginEnabled}\n        serverDomain={startupConfig.serverDomain}\n        oauthPath=\"openid\"\n        Icon={() =>\n          startupConfig.openidImageUrl ? (\n            <img src={startupConfig.openidImageUrl} alt=\"OpenID Logo\" className=\"h-5 w-5\" />\n          ) : (\n            <OpenIDIcon />\n          )\n        }\n        label={startupConfig.openidLabel}\n        id=\"openid\"\n      />\n    ),\n  };\n\n  return (\n    startupConfig.socialLoginEnabled && (\n      <>\n        {startupConfig.emailLoginEnabled && (\n          <>\n            <div className=\"relative mt-6 flex w-full items-center justify-center border border-t border-gray-300 uppercase dark:border-gray-600\">\n              <div className=\"absolute bg-white px-3 text-xs text-black dark:bg-gray-900 dark:text-white\">\n                Or\n              </div>\n            </div>\n            <div className=\"mt-8\" />\n          </>\n        )}\n        <div className=\"mt-2\">\n          {startupConfig.socialLogins?.map((provider) => providerComponents[provider] || null)}\n        </div>\n      </>\n    )\n  );\n}\n\nexport default SocialLoginRender;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/TwoFactorScreen.tsx",
    "content": "import React, { useState, useCallback } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useForm, Controller } from 'react-hook-form';\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from 'input-otp';\nimport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Label } from '~/components';\nimport { useVerifyTwoFactorTempMutation } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\ninterface VerifyPayload {\n  tempToken: string;\n  token?: string;\n  backupCode?: string;\n}\n\ntype TwoFactorFormInputs = {\n  token?: string;\n  backupCode?: string;\n};\n\nconst TwoFactorScreen: React.FC = React.memo(() => {\n  const [searchParams] = useSearchParams();\n  const tempTokenRaw = searchParams.get('tempToken');\n  const tempToken = tempTokenRaw !== null && tempTokenRaw !== '' ? tempTokenRaw : '';\n\n  const {\n    control,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<TwoFactorFormInputs>();\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const [useBackup, setUseBackup] = useState<boolean>(false);\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const { mutate: verifyTempMutate } = useVerifyTwoFactorTempMutation({\n    onSuccess: (result) => {\n      if (result.token != null && result.token !== '') {\n        window.location.href = '/';\n      }\n    },\n    onMutate: () => {\n      setIsLoading(true);\n    },\n    onError: (error: unknown) => {\n      setIsLoading(false);\n      const err = error as { response?: { data?: { message?: unknown } } };\n      const errorMsg =\n        typeof err.response?.data?.message === 'string'\n          ? err.response.data.message\n          : 'Error verifying 2FA';\n      showToast({ message: errorMsg, status: 'error' });\n    },\n  });\n\n  const onSubmit = useCallback(\n    (data: TwoFactorFormInputs) => {\n      const payload: VerifyPayload = { tempToken };\n      if (useBackup && data.backupCode != null && data.backupCode !== '') {\n        payload.backupCode = data.backupCode;\n      } else if (data.token != null && data.token !== '') {\n        payload.token = data.token;\n      }\n      verifyTempMutate(payload);\n    },\n    [tempToken, useBackup, verifyTempMutate],\n  );\n\n  const toggleBackupOn = useCallback(() => {\n    setUseBackup(true);\n  }, []);\n\n  const toggleBackupOff = useCallback(() => {\n    setUseBackup(false);\n  }, []);\n\n  return (\n    <div className=\"mt-4\">\n      <form onSubmit={handleSubmit(onSubmit)}>\n        <Label className=\"flex justify-center break-keep text-center text-sm text-text-primary\">\n          {localize('com_auth_two_factor')}\n        </Label>\n        {!useBackup && (\n          <div className=\"my-4 flex justify-center text-text-primary\">\n            <Controller\n              name=\"token\"\n              control={control}\n              render={({ field: { onChange, value } }) => (\n                <InputOTP\n                  maxLength={6}\n                  value={value != null ? value : ''}\n                  onChange={onChange}\n                  pattern={REGEXP_ONLY_DIGITS}\n                >\n                  <InputOTPGroup>\n                    <InputOTPSlot index={0} />\n                    <InputOTPSlot index={1} />\n                    <InputOTPSlot index={2} />\n                  </InputOTPGroup>\n                  <InputOTPSeparator />\n                  <InputOTPGroup>\n                    <InputOTPSlot index={3} />\n                    <InputOTPSlot index={4} />\n                    <InputOTPSlot index={5} />\n                  </InputOTPGroup>\n                </InputOTP>\n              )}\n            />\n            {errors.token && <span className=\"text-sm text-red-500\">{errors.token.message}</span>}\n          </div>\n        )}\n        {useBackup && (\n          <div className=\"my-4 flex justify-center text-text-primary\">\n            <Controller\n              name=\"backupCode\"\n              control={control}\n              render={({ field: { onChange, value } }) => (\n                <InputOTP\n                  maxLength={8}\n                  value={value != null ? value : ''}\n                  onChange={onChange}\n                  pattern={REGEXP_ONLY_DIGITS_AND_CHARS}\n                >\n                  <InputOTPGroup>\n                    <InputOTPSlot index={0} />\n                    <InputOTPSlot index={1} />\n                    <InputOTPSlot index={2} />\n                    <InputOTPSlot index={3} />\n                    <InputOTPSlot index={4} />\n                    <InputOTPSlot index={5} />\n                    <InputOTPSlot index={6} />\n                    <InputOTPSlot index={7} />\n                  </InputOTPGroup>\n                </InputOTP>\n              )}\n            />\n            {errors.backupCode && (\n              <span className=\"text-sm text-red-500\">{errors.backupCode.message}</span>\n            )}\n          </div>\n        )}\n        <div className=\"flex items-center justify-between\">\n          <button\n            type=\"submit\"\n            aria-label={localize('com_auth_continue')}\n            data-testid=\"login-button\"\n            disabled={isLoading}\n            className=\"w-full rounded-2xl bg-green-600 px-4 py-3 text-sm font-medium text-white transition-colors hover:bg-green-700 disabled:opacity-80 dark:bg-green-600 dark:hover:bg-green-700\"\n          >\n            {isLoading ? localize('com_auth_email_verifying_ellipsis') : localize('com_ui_verify')}\n          </button>\n        </div>\n        <div className=\"mt-4 flex justify-center\">\n          {!useBackup ? (\n            <button\n              type=\"button\"\n              onClick={toggleBackupOn}\n              className=\"inline-flex p-1 text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n            >\n              {localize('com_ui_use_backup_code')}\n            </button>\n          ) : (\n            <button\n              type=\"button\"\n              onClick={toggleBackupOff}\n              className=\"inline-flex p-1 text-sm font-medium text-green-600 transition-colors hover:text-green-700 dark:text-green-400 dark:hover:text-green-300\"\n            >\n              {localize('com_ui_use_2fa_code')}\n            </button>\n          )}\n        </div>\n      </form>\n    </div>\n  );\n});\n\nexport default TwoFactorScreen;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/VerifyEmail.tsx",
    "content": "import { useSearchParams, useNavigate } from 'react-router-dom';\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useVerifyEmailMutation, useResendVerificationEmail } from '~/data-provider';\nimport { ThemeSelector } from '~/components/ui';\nimport { Spinner } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\n\nfunction RequestPasswordReset() {\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const [params] = useSearchParams();\n\n  const [countdown, setCountdown] = useState<number>(3);\n  const [headerText, setHeaderText] = useState<string>('');\n  const [showResendLink, setShowResendLink] = useState<boolean>(false);\n  const [verificationStatus, setVerificationStatus] = useState<boolean>(false);\n  const token = useMemo(() => params.get('token') || '', [params]);\n  const email = useMemo(() => params.get('email') || '', [params]);\n\n  const countdownRedirect = useCallback(() => {\n    setCountdown(3);\n    const timer = setInterval(() => {\n      setCountdown((prevCountdown) => {\n        if (prevCountdown <= 1) {\n          clearInterval(timer);\n          navigate('/c/new', { replace: true });\n          return 0;\n        }\n        return prevCountdown - 1;\n      });\n    }, 1000);\n  }, [navigate]);\n\n  const verifyEmailMutation = useVerifyEmailMutation({\n    onSuccess: () => {\n      setHeaderText(localize('com_auth_email_verification_success') + ' 🎉');\n      setVerificationStatus(true);\n      countdownRedirect();\n    },\n    onError: (error: unknown) => {\n      setHeaderText(localize('com_auth_email_verification_failed') + ' 😢');\n      setShowResendLink(true);\n      setVerificationStatus(true);\n    },\n  });\n\n  const resendEmailMutation = useResendVerificationEmail({\n    onSuccess: () => {\n      setHeaderText(localize('com_auth_email_resent_success') + ' 📧');\n      countdownRedirect();\n    },\n    onError: () => {\n      setHeaderText(localize('com_auth_email_resent_failed') + ' 😢');\n    },\n    onMutate: () => setShowResendLink(false),\n  });\n\n  const handleResendEmail = () => {\n    resendEmailMutation.mutate({ email });\n  };\n\n  useEffect(() => {\n    if (verificationStatus || verifyEmailMutation.isLoading) {\n      return;\n    }\n\n    if (token && email) {\n      verifyEmailMutation.mutate({ email, token });\n    } else {\n      if (email) {\n        setHeaderText(localize('com_auth_email_verification_failed_token_missing') + ' 😢');\n      } else {\n        setHeaderText(localize('com_auth_email_verification_invalid') + ' 🤨');\n      }\n      setShowResendLink(true);\n      setVerificationStatus(true);\n    }\n  }, [token, email, verificationStatus, verifyEmailMutation]);\n\n  const VerificationSuccess = () => (\n    <div className=\"flex flex-col items-center justify-center\">\n      <h1 className=\"mb-4 text-center text-3xl font-semibold text-black dark:text-white\">\n        {headerText}\n      </h1>\n      {countdown > 0 && (\n        <p className=\"text-center text-lg text-gray-600 dark:text-gray-400\">\n          {localize('com_auth_email_verification_redirecting', { 0: countdown.toString() })}\n        </p>\n      )}\n      {showResendLink && countdown === 0 && (\n        <p className=\"text-center text-lg text-gray-600 dark:text-gray-400\">\n          {localize('com_auth_email_verification_resend_prompt')}\n          <button\n            className=\"ml-2 text-blue-600 hover:underline\"\n            onClick={handleResendEmail}\n            disabled={resendEmailMutation.isLoading}\n          >\n            {localize('com_auth_email_resend_link')}\n          </button>\n        </p>\n      )}\n    </div>\n  );\n\n  const VerificationInProgress = () => (\n    <div className=\"flex flex-col items-center justify-center\">\n      <h1 className=\"mb-4 text-center text-3xl font-semibold text-black dark:text-white\">\n        {localize('com_auth_email_verification_in_progress')}\n      </h1>\n      <div className=\"mt-4 flex justify-center\">\n        <Spinner className=\"h-8 w-8 text-green-500\" />\n      </div>\n    </div>\n  );\n\n  return (\n    <div className=\"flex min-h-screen flex-col items-center justify-center bg-white pt-6 dark:bg-gray-900 sm:pt-0\">\n      <div className=\"absolute bottom-0 left-0 m-4\">\n        <ThemeSelector />\n      </div>\n      {verificationStatus ? <VerificationSuccess /> : <VerificationInProgress />}\n    </div>\n  );\n}\n\nexport default RequestPasswordReset;\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/__tests__/Login.spec.tsx",
    "content": "import reactRouter from 'react-router-dom';\nimport userEvent from '@testing-library/user-event';\nimport { getByTestId, render, waitFor } from 'test/layout-test-utils';\nimport type { TStartupConfig } from '~/data-provider/data-provider/src';\nimport * as endpointQueries from '~/data-provider/Endpoints/queries';\nimport * as miscDataProvider from '~/data-provider/Misc/queries';\nimport * as authMutations from '~/data-provider/Auth/mutations';\nimport * as authQueries from '~/data-provider/Auth/queries';\nimport AuthLayout from '~/components/Auth/AuthLayout';\nimport Login from '~/components/Auth/Login';\n\njest.mock('~/data-provider/data-provider/src/react-query');\n\nconst mockStartupConfig = {\n  isFetching: false,\n  isLoading: false,\n  isError: false,\n  data: {\n    socialLogins: ['google', 'facebook', 'openid', 'github', 'discord'],\n    discordLoginEnabled: true,\n    facebookLoginEnabled: true,\n    githubLoginEnabled: true,\n    googleLoginEnabled: true,\n    openidLoginEnabled: true,\n    openidLabel: 'Test OpenID',\n    openidImageUrl: 'http://test-server.com',\n    ldap: {\n      enabled: false,\n    },\n    registrationEnabled: true,\n    emailLoginEnabled: true,\n    socialLoginEnabled: true,\n    serverDomain: 'mock-server',\n  },\n};\n\nconst setup = ({\n  useGetUserQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n  useLoginUserReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {},\n    isSuccess: false,\n  },\n  useRefreshTokenMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {\n      token: 'mock-token',\n      user: {},\n    },\n  },\n  useGetStartupConfigReturnValue = mockStartupConfig,\n  useGetBannerQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n} = {}) => {\n  const mockUseLoginUser = jest\n    .spyOn(authMutations, 'useLoginUserMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useLoginUserReturnValue);\n  const mockUseGetUserQuery = jest\n    .spyOn(authQueries, 'useGetUserQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetUserQueryReturnValue);\n  const mockUseGetStartupConfig = jest\n    .spyOn(endpointQueries, 'useGetStartupConfig')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetStartupConfigReturnValue);\n  const mockUseRefreshTokenMutation = jest\n    .spyOn(authMutations, 'useRefreshTokenMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useRefreshTokenMutationReturnValue);\n  const mockUseGetBannerQuery = jest\n    .spyOn(miscDataProvider, 'useGetBannerQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetBannerQueryReturnValue);\n  const mockUseOutletContext = jest.spyOn(reactRouter, 'useOutletContext').mockReturnValue({\n    startupConfig: useGetStartupConfigReturnValue.data,\n  });\n  const renderResult = render(\n    <AuthLayout\n      startupConfig={useGetStartupConfigReturnValue.data as TStartupConfig}\n      isFetching={useGetStartupConfigReturnValue.isFetching}\n      error={null}\n      startupConfigError={null}\n      header={'Welcome back'}\n      pathname=\"login\"\n    >\n      <Login />\n    </AuthLayout>,\n  );\n  return {\n    ...renderResult,\n    mockUseLoginUser,\n    mockUseGetUserQuery,\n    mockUseOutletContext,\n    mockUseGetStartupConfig,\n    mockUseRefreshTokenMutation,\n    mockUseGetBannerQuery,\n  };\n};\n\njest.mock('react-router-dom', () => ({\n  ...jest.requireActual('react-router-dom'),\n  useOutletContext: () => ({\n    startupConfig: mockStartupConfig,\n  }),\n}));\n\ntest('renders login form', () => {\n  const { getByLabelText, getByRole } = setup();\n  expect(getByLabelText(/email/i)).toBeInTheDocument();\n  expect(getByLabelText(/password/i)).toBeInTheDocument();\n  expect(getByTestId(document.body, 'login-button')).toBeInTheDocument();\n  expect(getByRole('link', { name: /Sign up/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Sign up/i })).toHaveAttribute('href', '/register');\n  expect(getByRole('link', { name: /Continue with Google/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Google/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/google',\n  );\n  expect(getByRole('link', { name: /Continue with Facebook/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Facebook/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/facebook',\n  );\n  expect(getByRole('link', { name: /Continue with Github/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Github/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/github',\n  );\n  expect(getByRole('link', { name: /Continue with Discord/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Discord/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/discord',\n  );\n});\n\ntest('calls loginUser.mutate on login', async () => {\n  const mutate = jest.fn();\n  const { getByLabelText } = setup({\n    // @ts-ignore - we don't need all parameters of the QueryObserverResult\n    useLoginUserReturnValue: {\n      isLoading: false,\n      mutate: mutate,\n      isError: false,\n    },\n  });\n\n  const emailInput = getByLabelText(/email/i);\n  const passwordInput = getByLabelText(/password/i);\n  const submitButton = getByTestId(document.body, 'login-button');\n\n  await userEvent.type(emailInput, 'test@test.com');\n  await userEvent.type(passwordInput, 'password');\n  await userEvent.click(submitButton);\n\n  waitFor(() => expect(mutate).toHaveBeenCalled());\n});\n\ntest('Navigates to / on successful login', async () => {\n  const { getByLabelText, history } = setup({\n    // @ts-ignore - we don't need all parameters of the QueryObserverResult\n    useLoginUserReturnValue: {\n      isLoading: false,\n      mutate: jest.fn(),\n      isError: false,\n      isSuccess: true,\n    },\n    useGetStartupConfigReturnValue: {\n      ...mockStartupConfig,\n      data: {\n        ...mockStartupConfig.data,\n        emailLoginEnabled: true,\n        registrationEnabled: true,\n      },\n    },\n  });\n\n  const emailInput = getByLabelText(/email/i);\n  const passwordInput = getByLabelText(/password/i);\n  const submitButton = getByTestId(document.body, 'login-button');\n\n  await userEvent.type(emailInput, 'test@test.com');\n  await userEvent.type(passwordInput, 'password');\n  await userEvent.click(submitButton);\n\n  waitFor(() => expect(history.location.pathname).toBe('/'));\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/__tests__/LoginForm.spec.tsx",
    "content": "import { render, getByTestId } from 'test/layout-test-utils';\nimport userEvent from '@testing-library/user-event';\nimport type { TStartupConfig } from '~/data-provider/data-provider/src';\nimport * as endpointQueries from '~/data-provider/Endpoints/queries';\nimport * as miscDataProvider from '~/data-provider/Misc/queries';\nimport * as authMutations from '~/data-provider/Auth/mutations';\nimport * as authQueries from '~/data-provider/Auth/queries';\nimport Login from '../LoginForm';\n\njest.mock('~/data-provider/data-provider/src/react-query');\n\nconst mockLogin = jest.fn();\n\nconst mockStartupConfig: TStartupConfig = {\n  socialLogins: ['google', 'facebook', 'openid', 'github', 'discord'],\n  discordLoginEnabled: true,\n  facebookLoginEnabled: true,\n  githubLoginEnabled: true,\n  googleLoginEnabled: true,\n  openidLoginEnabled: true,\n  openidLabel: 'Test OpenID',\n  openidImageUrl: 'http://test-server.com',\n  registrationEnabled: true,\n  emailLoginEnabled: true,\n  socialLoginEnabled: true,\n  passwordResetEnabled: true,\n  serverDomain: 'mock-server',\n  appTitle: '',\n  ldap: {\n    enabled: false,\n  },\n  emailEnabled: false,\n  checkBalance: false,\n  showBirthdayIcon: false,\n  helpAndFaqURL: '',\n};\n\nconst setup = ({\n  useGetUserQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n  useLoginUserReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {},\n    isSuccess: false,\n  },\n  useRefreshTokenMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {\n      token: 'mock-token',\n      user: {},\n    },\n  },\n  useGetStartupConfigReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: mockStartupConfig,\n  },\n  useGetBannerQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n} = {}) => {\n  const mockUseLoginUser = jest\n    .spyOn(authMutations, 'useLoginUserMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useLoginUserReturnValue);\n  const mockUseGetUserQuery = jest\n    .spyOn(authQueries, 'useGetUserQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetUserQueryReturnValue);\n  const mockUseGetStartupConfig = jest\n    .spyOn(endpointQueries, 'useGetStartupConfig')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetStartupConfigReturnValue);\n  const mockUseRefreshTokenMutation = jest\n    .spyOn(authMutations, 'useRefreshTokenMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useRefreshTokenMutationReturnValue);\n  const mockUseGetBannerQuery = jest\n    .spyOn(miscDataProvider, 'useGetBannerQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetBannerQueryReturnValue);\n  return {\n    mockUseLoginUser,\n    mockUseGetUserQuery,\n    mockUseGetStartupConfig,\n    mockUseRefreshTokenMutation,\n    mockUseGetBannerQuery,\n  };\n};\n\nbeforeEach(() => {\n  setup();\n});\n\ntest('renders login form', () => {\n  const { getByLabelText } = render(\n    <Login onSubmit={mockLogin} startupConfig={mockStartupConfig} />,\n  );\n  expect(getByLabelText(/email/i)).toBeInTheDocument();\n  expect(getByLabelText(/password/i)).toBeInTheDocument();\n});\n\ntest('submits login form', async () => {\n  const { getByLabelText, getByRole } = render(\n    <Login onSubmit={mockLogin} startupConfig={mockStartupConfig} />,\n  );\n  const emailInput = getByLabelText(/email/i);\n  const passwordInput = getByLabelText(/password/i);\n  const submitButton = getByTestId(document.body, 'login-button');\n\n  await userEvent.type(emailInput, 'test@example.com');\n  await userEvent.type(passwordInput, 'password');\n  await userEvent.click(submitButton);\n\n  expect(mockLogin).toHaveBeenCalledWith({ email: 'test@example.com', password: 'password' });\n});\n\ntest('displays validation error messages', async () => {\n  const { getByLabelText, getByRole, getByText } = render(\n    <Login onSubmit={mockLogin} startupConfig={mockStartupConfig} />,\n  );\n  const emailInput = getByLabelText(/email/i);\n  const passwordInput = getByLabelText(/password/i);\n  const submitButton = getByTestId(document.body, 'login-button');\n\n  await userEvent.type(emailInput, 'test');\n  await userEvent.type(passwordInput, 'pass');\n  await userEvent.click(submitButton);\n\n  expect(getByText(/You must enter a valid email address/i)).toBeInTheDocument();\n  expect(getByText(/Password must be at least 8 characters/i)).toBeInTheDocument();\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/__tests__/Registration.spec.tsx",
    "content": "import reactRouter from 'react-router-dom';\nimport userEvent from '@testing-library/user-event';\nimport { render, waitFor, screen } from 'test/layout-test-utils';\nimport * as mockDataProvider from '~/data-provider/data-provider/src/react-query';\nimport type { TStartupConfig } from '~/data-provider/data-provider/src';\nimport * as miscDataProvider from '~/data-provider/Misc/queries';\nimport * as endpointQueries from '~/data-provider/Endpoints/queries';\nimport * as authMutations from '~/data-provider/Auth/mutations';\nimport * as authQueries from '~/data-provider/Auth/queries';\nimport Registration from '~/components/Auth/Registration';\nimport AuthLayout from '~/components/Auth/AuthLayout';\n\njest.mock('~/data-provider/data-provider/src/react-query');\n\nconst mockStartupConfig = {\n  isFetching: false,\n  isLoading: false,\n  isError: false,\n  data: {\n    socialLogins: ['google', 'facebook', 'openid', 'github', 'discord'],\n    discordLoginEnabled: true,\n    facebookLoginEnabled: true,\n    githubLoginEnabled: true,\n    googleLoginEnabled: true,\n    openidLoginEnabled: true,\n    openidLabel: 'Test OpenID',\n    openidImageUrl: 'http://test-server.com',\n    registrationEnabled: true,\n    socialLoginEnabled: true,\n    serverDomain: 'mock-server',\n  },\n};\n\nconst setup = ({\n  useGetUserQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n  useRegisterUserMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {},\n    isSuccess: false,\n    error: null as Error | null,\n  },\n  useRefreshTokenMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {\n      token: 'mock-token',\n      user: {},\n    },\n  },\n  useGetBannerQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {},\n  },\n  useGetStartupConfigReturnValue = mockStartupConfig,\n} = {}) => {\n  const mockUseRegisterUserMutation = jest\n    .spyOn(mockDataProvider, 'useRegisterUserMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useRegisterUserMutationReturnValue);\n  const mockUseGetUserQuery = jest\n    .spyOn(authQueries, 'useGetUserQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetUserQueryReturnValue);\n  const mockUseGetStartupConfig = jest\n    .spyOn(endpointQueries, 'useGetStartupConfig')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetStartupConfigReturnValue);\n  const mockUseRefreshTokenMutation = jest\n    .spyOn(authMutations, 'useRefreshTokenMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useRefreshTokenMutationReturnValue);\n  const mockUseOutletContext = jest.spyOn(reactRouter, 'useOutletContext').mockReturnValue({\n    startupConfig: useGetStartupConfigReturnValue.data,\n  });\n  const mockUseGetBannerQuery = jest\n    .spyOn(miscDataProvider, 'useGetBannerQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetBannerQueryReturnValue);\n  const renderResult = render(\n    <AuthLayout\n      startupConfig={useGetStartupConfigReturnValue.data as TStartupConfig}\n      isFetching={useGetStartupConfigReturnValue.isFetching}\n      error={null}\n      startupConfigError={null}\n      header={'Create your account'}\n      pathname=\"register\"\n    >\n      <Registration />\n    </AuthLayout>,\n  );\n\n  return {\n    ...renderResult,\n    mockUseGetUserQuery,\n    mockUseOutletContext,\n    mockUseGetStartupConfig,\n    mockUseRegisterUserMutation,\n    mockUseRefreshTokenMutation,\n  };\n};\n\njest.mock('react-router-dom', () => ({\n  ...jest.requireActual('react-router-dom'),\n  useOutletContext: () => ({\n    startupConfig: mockStartupConfig,\n  }),\n}));\n\ntest('renders registration form', () => {\n  const { getByText, getByTestId, getByRole } = setup();\n  expect(getByText(/Create your account/i)).toBeInTheDocument();\n  expect(getByRole('textbox', { name: /Full name/i })).toBeInTheDocument();\n  expect(getByRole('form', { name: /Registration form/i })).toBeVisible();\n  expect(getByRole('textbox', { name: /Username/i })).toBeInTheDocument();\n  expect(getByRole('textbox', { name: /Email/i })).toBeInTheDocument();\n  expect(getByTestId('password')).toBeInTheDocument();\n  expect(getByTestId('confirm_password')).toBeInTheDocument();\n  expect(getByRole('button', { name: /Submit registration/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: 'Login' })).toBeInTheDocument();\n  expect(getByRole('link', { name: 'Login' })).toHaveAttribute('href', '/login');\n  expect(getByRole('link', { name: /Continue with Google/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Google/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/google',\n  );\n  expect(getByRole('link', { name: /Continue with Facebook/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Facebook/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/facebook',\n  );\n  expect(getByRole('link', { name: /Continue with Github/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Github/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/github',\n  );\n  expect(getByRole('link', { name: /Continue with Discord/i })).toBeInTheDocument();\n  expect(getByRole('link', { name: /Continue with Discord/i })).toHaveAttribute(\n    'href',\n    'mock-server/oauth/discord',\n  );\n});\n\n// eslint-disable-next-line jest/no-commented-out-tests\n// test('calls registerUser.mutate on registration', async () => {\n//   const mutate = jest.fn();\n//   const { getByTestId, getByRole, history } = setup({\n//     // @ts-ignore - we don't need all parameters of the QueryObserverResult\n//     useLoginUserReturnValue: {\n//       isLoading: false,\n//       mutate: mutate,\n//       isError: false,\n//       isSuccess: true,\n//     },\n//   });\n\n//   await userEvent.type(getByRole('textbox', { name: /Full name/i }), 'John Doe');\n//   await userEvent.type(getByRole('textbox', { name: /Username/i }), 'johndoe');\n//   await userEvent.type(getByRole('textbox', { name: /Email/i }), 'test@test.com');\n//   await userEvent.type(getByTestId('password'), 'password');\n//   await userEvent.type(getByTestId('confirm_password'), 'password');\n//   await userEvent.click(getByRole('button', { name: /Submit registration/i }));\n\n//   console.log(history);\n//   waitFor(() => {\n//     // expect(mutate).toHaveBeenCalled();\n//     expect(history.location.pathname).toBe('/c/new');\n//   });\n// });\n\ntest('shows validation error messages', async () => {\n  const { getByTestId, getAllByRole, getByRole } = setup();\n  await userEvent.type(getByRole('textbox', { name: /Full name/i }), 'J');\n  await userEvent.type(getByRole('textbox', { name: /Username/i }), 'j');\n  await userEvent.type(getByRole('textbox', { name: /Email/i }), 'test');\n  await userEvent.type(getByTestId('password'), 'pass');\n  await userEvent.type(getByTestId('confirm_password'), 'password1');\n  const alerts = getAllByRole('alert');\n  expect(alerts).toHaveLength(5);\n  expect(alerts[0]).toHaveTextContent(/Name must be at least 3 characters/i);\n  expect(alerts[1]).toHaveTextContent(/Username must be at least 2 characters/i);\n  expect(alerts[2]).toHaveTextContent(/You must enter a valid email address/i);\n  expect(alerts[3]).toHaveTextContent(/Password must be at least 8 characters/i);\n  expect(alerts[4]).toHaveTextContent(/Passwords do not match/i);\n});\n\ntest('shows error message when registration fails', async () => {\n  const mutate = jest.fn();\n  const { getByTestId, getByRole } = setup({\n    useRegisterUserMutationReturnValue: {\n      isLoading: false,\n      isError: true,\n      mutate,\n      error: new Error('Registration failed'),\n      data: {},\n      isSuccess: false,\n    },\n  });\n\n  await userEvent.type(getByRole('textbox', { name: /Full name/i }), 'John Doe');\n  await userEvent.type(getByRole('textbox', { name: /Username/i }), 'johndoe');\n  await userEvent.type(getByRole('textbox', { name: /Email/i }), 'test@test.com');\n  await userEvent.type(getByTestId('password'), 'password');\n  await userEvent.type(getByTestId('confirm_password'), 'password');\n  await userEvent.click(getByRole('button', { name: /Submit registration/i }));\n\n  waitFor(() => {\n    expect(screen.getByTestId('registration-error')).toBeInTheDocument();\n    expect(screen.getByTestId('registration-error')).toHaveTextContent(\n      /There was an error attempting to register your account. Please try again. Registration failed/i,\n    );\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Auth/index.ts",
    "content": "export { default as Login } from './Login';\nexport { default as Registration } from './Registration';\nexport { default as ResetPassword } from './ResetPassword';\nexport { default as VerifyEmail } from './VerifyEmail';\nexport { default as ApiErrorWatcher } from './ApiErrorWatcher';\nexport { default as RequestPasswordReset } from './RequestPasswordReset';\nexport { default as TwoFactorScreen } from './TwoFactorScreen';\n"
  },
  {
    "path": "src/frontend/client/src/components/Avator/index.tsx",
    "content": "import { useMemo } from \"react\";\nimport { cn } from \"~/utils\"\n\nconst gradients = [\n    'bg-amber-500',\n    'bg-orange-600',\n    'bg-teal-500',\n    'bg-purple-600',\n    'bg-blue-700'\n]\n\nexport default function AppAvator({ id = 1, flowType = '', url = '', className = '' }) {\n\n    const color = useMemo(() => {\n        const str = id + ''\n        let hex = '';\n        for (let i = 0; i < str.length; i++) {\n            hex += str.charCodeAt(i).toString(16);\n        }\n        const num = parseInt(hex, 16) || 0;\n        return gradients[parseInt(num + '', 16) % gradients.length]\n    }, [id])\n\n    if (url) return <img src={__APP_ENV__.BASE_URL + url} className={cn(`w-6 h-6 rounded-sm object-cover`, className)} />\n\n    const flowIcons = {\n        1: <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g id=\"Group 628\">\n                <g id=\"Group 625\">\n                    <ellipse id=\"Ellipse 17\" cx=\"13.0622\" cy=\"13.4282\" rx=\"6\" ry=\"3\" transform=\"rotate(-30 13.0622 13.4282)\"\n                        stroke=\"url(#paint0_linear_410_134)\" stroke-width=\"2\" />\n                    <ellipse id=\"Ellipse 18\" cx=\"11.0622\" cy=\"9.9641\" rx=\"7\" ry=\"4\" transform=\"rotate(-30 11.0622 9.9641)\"\n                        fill=\"url(#paint1_linear_410_134)\" />\n                </g>\n            </g>\n            <defs>\n                <linearGradient id=\"paint0_linear_410_134\" x1=\"13.0622\" y1=\"9.42815\" x2=\"13.0622\" y2=\"17.4282\"\n                    gradientUnits=\"userSpaceOnUse\">\n                    <stop stop-color=\"white\" stop-opacity=\"0.1\" />\n                    <stop offset=\"1\" stop-color=\"white\" />\n                </linearGradient>\n                <linearGradient id=\"paint1_linear_410_134\" x1=\"11.0622\" y1=\"5.9641\" x2=\"11.0622\" y2=\"13.9641\"\n                    gradientUnits=\"userSpaceOnUse\">\n                    <stop stop-color=\"white\" stop-opacity=\"0.82\" />\n                    <stop offset=\"1\" stop-color=\"white\" />\n                </linearGradient>\n            </defs>\n        </svg>,\n        5: <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <rect x=\"8\" y=\"7\" width=\"8\" height=\"2\" rx=\"1\" fill=\"white\" />\n            <rect x=\"5\" y=\"11\" width=\"14\" height=\"2\" rx=\"1\" fill=\"white\" />\n            <rect x=\"8\" y=\"15\" width=\"8\" height=\"2\" rx=\"1\" fill=\"white\" />\n        </svg>,\n        10: <svg viewBox=\"-400 -400 1800 1800\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n            p-id=\"6880\" width=\"24\" height=\"24\">\n            <path\n                d=\"M982.646154 208.738462c-41.353846-80.738462-145.723077-230.4-338.707692-141.784616-120.123077 55.138462-187.076923 86.646154-187.076924 86.646154l-173.292307 74.830769c-49.230769 23.630769-155.569231-9.846154-216.615385-31.507692-17.723077-5.907692-33.476923 11.815385-25.6 29.538461 41.353846 80.738462 145.723077 230.4 338.707692 141.784616 120.123077-55.138462 360.369231-159.507692 360.369231-159.507692 49.230769-23.630769 155.569231 9.846154 216.615385 31.507692 17.723077 3.938462 33.476923-13.784615 25.6-31.507692zM567.138462 460.8c-21.661538 11.815385-108.307692 51.2-108.307693 51.2l-86.646154 37.415385c-43.323077 23.630769-135.876923-7.876923-191.015384-29.538462-15.753846-7.876923-29.538462 11.815385-21.661539 27.569231 35.446154 78.769231 128 220.553846 297.353846 133.907692 106.338462-53.169231 194.953846-88.615385 194.953847-88.615384 43.323077-23.630769 135.876923 7.876923 191.015384 29.538461 15.753846 5.907692 29.538462-11.815385 21.661539-29.538461-35.446154-76.8-128-218.584615-297.353846-131.938462z m-63.015385 348.553846c-17.723077 9.846154-47.261538 27.569231-47.261539 27.569231-33.476923 21.661538-102.4-5.907692-143.753846-25.6-11.815385-5.907692-21.661538 11.815385-15.753846 27.569231 25.6 70.892308 94.523077 198.892308 222.523077 120.123077 47.261538-29.538462 47.261538-27.569231 47.261539-27.569231 35.446154-17.723077 102.4 5.907692 143.753846 25.6 11.815385 5.907692 21.661538-11.815385 15.753846-27.569231-25.6-70.892308-90.584615-192.984615-222.523077-120.123077z\"\n                fill=\"#FFFFFF\" p-id=\"6881\"></path>\n        </svg>\n    }\n\n    return <div className={cn(`size-5 min-w-5 rounded-md flex justify-center items-center`, color, className)}>\n        {flowIcons[flowType]}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Banners/Banner.tsx",
    "content": "import { useEffect, useRef } from 'react';\nimport { XIcon } from 'lucide-react';\nimport { useRecoilState } from 'recoil';\nimport { useGetBannerQuery } from '~/data-provider';\nimport store from '~/store';\n\nexport const Banner = ({ onHeightChange }: { onHeightChange?: (height: number) => void }) => {\n  // const { data: banner } = useGetBannerQuery();\n  const banner = null;\n  const [hideBannerHint, setHideBannerHint] = useRecoilState<string[]>(store.hideBannerHint);\n  const bannerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (onHeightChange && bannerRef.current) {\n      onHeightChange(bannerRef.current.offsetHeight);\n    }\n  }, [banner, hideBannerHint, onHeightChange]);\n\n  if (!banner || (banner.bannerId && hideBannerHint.includes(banner.bannerId))) {\n    return null;\n  }\n\n  const onClick = () => {\n    setHideBannerHint([...hideBannerHint, banner.bannerId]);\n    if (onHeightChange) {\n      onHeightChange(0); // Reset height when banner is closed\n    }\n  };\n\n  return (\n    <div\n      ref={bannerRef}\n      className=\"sticky top-0 z-20 flex items-center bg-neutral-900 from-gray-700 to-gray-900 px-2 py-1 text-slate-50 dark:bg-gradient-to-r dark:text-white md:relative\"\n    >\n      <div\n        className=\"w-full truncate px-4 text-center text-sm\"\n        dangerouslySetInnerHTML={{ __html: banner.message }}\n      ></div>\n      <button\n        type=\"button\"\n        aria-label=\"Dismiss banner\"\n        className=\"h-8 w-8 opacity-80 hover:opacity-100\"\n        onClick={onClick}\n      >\n        <XIcon className=\"mx-auto h-4 w-4\" />\n      </button>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Banners/index.ts",
    "content": "export { Banner } from './Banner';\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/BookmarkEditDialog.tsx",
    "content": "import React, { useRef, Dispatch, SetStateAction } from 'react';\nimport { TConversationTag } from '~/data-provider/data-provider/src';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useConversationTagMutation } from '~/data-provider';\nimport { OGDialog, Button, Spinner } from '~/components';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport BookmarkForm from './BookmarkForm';\nimport { useLocalize } from '~/hooks';\nimport { logger } from '~/utils';\n\ntype BookmarkEditDialogProps = {\n  open: boolean;\n  setOpen: Dispatch<SetStateAction<boolean>>;\n  tags?: string[];\n  setTags?: (tags: string[]) => void;\n  context: string;\n  bookmark?: TConversationTag;\n  conversationId?: string;\n  children?: React.ReactNode;\n  triggerRef?: React.RefObject<HTMLButtonElement>;\n};\n\nconst BookmarkEditDialog = ({\n  open,\n  setOpen,\n  tags,\n  setTags,\n  context,\n  bookmark,\n  children,\n  triggerRef,\n  conversationId,\n}: BookmarkEditDialogProps) => {\n  const localize = useLocalize();\n  const formRef = useRef<HTMLFormElement>(null);\n\n  const { showToast } = useToastContext();\n  const mutation = useConversationTagMutation({\n    context,\n    tag: bookmark?.tag,\n    options: {\n      onSuccess: (_data, vars) => {\n        showToast({\n          message: bookmark\n            ? localize('com_ui_bookmarks_update_success')\n            : localize('com_ui_bookmarks_create_success'),\n        });\n        setOpen(false);\n        logger.log('tag_mutation', 'tags before setting', tags);\n\n        if (setTags && vars.addToConversation === true) {\n          const newTags = [...(tags || []), vars.tag].filter(\n            (tag) => tag !== undefined,\n          ) as string[];\n          setTags(newTags);\n\n          logger.log('tag_mutation', 'tags after', newTags);\n          if (vars.tag == null || vars.tag === '') {\n            return;\n          }\n\n          setTimeout(() => {\n            const tagElement = document.getElementById(vars.tag ?? '');\n            console.log('tagElement', tagElement);\n            if (!tagElement) {\n              return;\n            }\n            tagElement.focus();\n          }, 5);\n        }\n      },\n      onError: () => {\n        showToast({\n          message: bookmark\n            ? localize('com_ui_bookmarks_update_error')\n            : localize('com_ui_bookmarks_create_error'),\n          severity: NotificationSeverity.ERROR,\n        });\n      },\n    },\n  });\n\n  const handleSubmitForm = () => {\n    if (formRef.current) {\n      formRef.current.dispatchEvent(new Event('submit', { cancelable: true, bubbles: true }));\n    }\n  };\n\n  return (\n    <OGDialog open={open} onOpenChange={setOpen} triggerRef={triggerRef}>\n      {children}\n      <OGDialogTemplate\n        title=\"Bookmark\"\n        showCloseButton={false}\n        className=\"w-11/12 md:max-w-2xl\"\n        main={\n          <BookmarkForm\n            tags={tags}\n            setOpen={setOpen}\n            mutation={mutation}\n            conversationId={conversationId}\n            bookmark={bookmark}\n            formRef={formRef}\n          />\n        }\n        buttons={\n          <Button\n            variant=\"submit\"\n            type=\"submit\"\n            disabled={mutation.isLoading}\n            onClick={handleSubmitForm}\n            className=\"text-white\"\n          >\n            {mutation.isLoading ? <Spinner /> : localize('com_ui_save')}\n          </Button>\n        }\n      />\n    </OGDialog>\n  );\n};\n\nexport default BookmarkEditDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/BookmarkForm.tsx",
    "content": "import React, { useEffect } from 'react';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { TConversationTag, TConversationTagRequest } from '~/data-provider/data-provider/src';\nimport { Checkbox, Label, TextareaAutosize, Input } from '~/components';\nimport { useBookmarkContext } from '~/Providers/BookmarkContext';\nimport { useConversationTagMutation } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\nimport { cn, logger } from '~/utils';\n\ntype TBookmarkFormProps = {\n  tags?: string[];\n  bookmark?: TConversationTag;\n  conversationId?: string;\n  formRef: React.RefObject<HTMLFormElement>;\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n  mutation: ReturnType<typeof useConversationTagMutation>;\n};\nconst BookmarkForm = ({\n  tags,\n  bookmark,\n  mutation,\n  conversationId,\n  setOpen,\n  formRef,\n}: TBookmarkFormProps) => {\n  const localize = useLocalize();\n  const queryClient = useQueryClient();\n  const { showToast } = useToastContext();\n  const { bookmarks } = useBookmarkContext();\n\n  const {\n    register,\n    handleSubmit,\n    setValue,\n    getValues,\n    control,\n    formState: { errors },\n  } = useForm<TConversationTagRequest>({\n    defaultValues: {\n      tag: bookmark?.tag ?? '',\n      description: bookmark?.description ?? '',\n      conversationId: conversationId ?? '',\n      addToConversation: conversationId != null && conversationId ? true : false,\n    },\n  });\n\n  useEffect(() => {\n    if (bookmark && bookmark.tag) {\n      setValue('tag', bookmark.tag);\n      setValue('description', bookmark.description ?? '');\n    }\n  }, [bookmark, setValue]);\n\n  const onSubmit = (data: TConversationTagRequest) => {\n    logger.log('tag_mutation', 'BookmarkForm - onSubmit: data', data);\n    if (mutation.isLoading) {\n      return;\n    }\n    if (data.tag === bookmark?.tag && data.description === bookmark?.description) {\n      return;\n    }\n    if (data.tag != null && (tags ?? []).includes(data.tag)) {\n      showToast({\n        message: localize('com_ui_bookmarks_create_exists'),\n        status: 'warning',\n      });\n      return;\n    }\n    const allTags =\n      queryClient.getQueryData<TConversationTag[]>([QueryKeys.conversationTags]) ?? [];\n    if (allTags.some((tag) => tag.tag === data.tag)) {\n      showToast({\n        message: localize('com_ui_bookmarks_create_exists'),\n        status: 'warning',\n      });\n      return;\n    }\n\n    mutation.mutate(data);\n    setOpen(false);\n  };\n\n  return (\n    <form\n      ref={formRef}\n      className=\"mt-6\"\n      aria-label=\"Bookmark form\"\n      method=\"POST\"\n      onSubmit={handleSubmit(onSubmit)}\n    >\n      <div className=\"flex w-full flex-col items-center gap-2\">\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"bookmark-tag\" className=\"text-left text-sm font-medium\">\n            {localize('com_ui_bookmarks_title')}\n          </Label>\n          <Input\n            type=\"text\"\n            id=\"bookmark-tag\"\n            aria-label=\"Bookmark\"\n            {...register('tag', {\n              required: 'tag is required',\n              maxLength: {\n                value: 128,\n                message: localize('com_auth_password_max_length'),\n              },\n              validate: (value) => {\n                return (\n                  value === bookmark?.tag ||\n                  bookmarks.every((bookmark) => bookmark.tag !== value) ||\n                  'tag must be unique'\n                );\n              },\n            })}\n            aria-invalid={!!errors.tag}\n            placeholder=\"Bookmark\"\n          />\n          {errors.tag && <span className=\"text-sm text-red-500\">{errors.tag.message}</span>}\n        </div>\n\n        <div className=\"mt-4 grid w-full items-center gap-2\">\n          <Label htmlFor=\"bookmark-description\" className=\"text-left text-sm font-medium\">\n            {localize('com_ui_bookmarks_description')}\n          </Label>\n          <TextareaAutosize\n            {...register('description', {\n              maxLength: {\n                value: 1048,\n                message: 'Maximum 1048 characters',\n              },\n            })}\n            id=\"bookmark-description\"\n            disabled={false}\n            className={cn(\n              'flex h-10 max-h-[250px] min-h-[100px] w-full resize-none rounded-lg border border-input bg-transparent px-3 py-2 text-sm ring-offset-background focus-visible:outline-none',\n            )}\n          />\n        </div>\n        {conversationId != null && conversationId && (\n          <div className=\"mt-2 flex w-full items-center\">\n            <Controller\n              name=\"addToConversation\"\n              control={control}\n              render={({ field }) => (\n                <Checkbox\n                  {...field}\n                  checked={field.value}\n                  onCheckedChange={field.onChange}\n                  className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                  value={field.value?.toString()}\n                />\n              )}\n            />\n            <button\n              type=\"button\"\n              aria-label={localize('com_ui_bookmarks_add_to_conversation')}\n              className=\"form-check-label w-full cursor-pointer text-text-primary\"\n              onClick={() =>\n                setValue('addToConversation', !(getValues('addToConversation') ?? false), {\n                  shouldDirty: true,\n                })\n              }\n            >\n              <div className=\"flex select-none items-center\">\n                {localize('com_ui_bookmarks_add_to_conversation')}\n              </div>\n            </button>\n          </div>\n        )}\n      </div>\n    </form>\n  );\n};\n\nexport default BookmarkForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/BookmarkItem.tsx",
    "content": "import { useState } from 'react';\nimport { MenuItem } from '@headlessui/react';\nimport { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons';\nimport type { FC } from 'react';\nimport { Spinner } from '~/components/svg';\n\ntype MenuItemProps = {\n  tag: string | React.ReactNode;\n  selected: boolean;\n  count?: number;\n  handleSubmit: (tag?: string) => void;\n  icon?: React.ReactNode;\n};\n\nconst BookmarkItem: FC<MenuItemProps> = ({ tag, selected, handleSubmit, icon, ...rest }) => {\n  const [isLoading, setIsLoading] = useState(false);\n  const clickHandler = async () => {\n    if (tag === 'New Bookmark') {\n      handleSubmit();\n      return;\n    }\n\n    setIsLoading(true);\n    handleSubmit(tag as string);\n    setIsLoading(false);\n  };\n\n  const breakWordStyle: React.CSSProperties = {\n    wordBreak: 'break-word',\n    overflowWrap: 'anywhere',\n  };\n\n  const renderIcon = () => {\n    if (icon != null) {\n      return icon;\n    }\n    if (isLoading) {\n      return <Spinner className=\"size-4\" />;\n    }\n    if (selected) {\n      return <BookmarkFilledIcon className=\"size-4\" />;\n    }\n    return <BookmarkIcon className=\"size-4\" />;\n  };\n\n  return (\n    <MenuItem\n      aria-label={tag as string}\n      className=\"group flex w-full gap-2 rounded-lg p-2.5 text-sm text-text-primary transition-colors duration-200 focus:outline-none data-[focus]:bg-surface-secondary data-[focus]:ring-2 data-[focus]:ring-primary\"\n      {...rest}\n      as=\"button\"\n      onClick={clickHandler}\n    >\n      <div className=\"flex grow items-center justify-between gap-2\">\n        <div className=\"flex items-center gap-2\">\n          {renderIcon()}\n          <div style={breakWordStyle}>{tag}</div>\n        </div>\n      </div>\n    </MenuItem>\n  );\n};\n\nexport default BookmarkItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/BookmarkItems.tsx",
    "content": "import type { FC } from 'react';\nimport { useBookmarkContext } from '~/Providers/BookmarkContext';\nimport BookmarkItem from './BookmarkItem';\ninterface BookmarkItemsProps {\n  tags: string[];\n  handleSubmit: (tag?: string) => void;\n  header: React.ReactNode;\n}\n\nconst BookmarkItems: FC<BookmarkItemsProps> = ({ tags, handleSubmit, header }) => {\n  const { bookmarks } = useBookmarkContext();\n\n  return (\n    <>\n      {header}\n      {bookmarks.length > 0 && <div className=\"my-1.5 h-px\" role=\"none\" />}\n      {bookmarks.map((bookmark, i) => (\n        <BookmarkItem\n          key={`${bookmark._id ?? bookmark.tag}-${i}`}\n          tag={bookmark.tag}\n          selected={tags.includes(bookmark.tag)}\n          handleSubmit={handleSubmit}\n        />\n      ))}\n    </>\n  );\n};\n\nexport default BookmarkItems;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/DeleteBookmarkButton.tsx",
    "content": "import { useCallback, useState } from 'react';\nimport type { FC } from 'react';\nimport { Label, OGDialog, OGDialogTrigger, TooltipAnchor } from '~/components/ui';\nimport { useDeleteConversationTagMutation } from '~/data-provider';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { TrashIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\n\nconst DeleteBookmarkButton: FC<{\n  bookmark: string;\n  tabIndex?: number;\n  onFocus?: () => void;\n  onBlur?: () => void;\n}> = ({ bookmark, tabIndex = 0, onFocus, onBlur }) => {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const [open, setOpen] = useState(false);\n\n  const deleteBookmarkMutation = useDeleteConversationTagMutation({\n    onSuccess: () => {\n      showToast({\n        message: localize('com_ui_bookmarks_delete_success'),\n      });\n    },\n    onError: () => {\n      showToast({\n        message: localize('com_ui_bookmarks_delete_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n  });\n\n  const confirmDelete = useCallback(async () => {\n    await deleteBookmarkMutation.mutateAsync(bookmark);\n  }, [bookmark, deleteBookmarkMutation]);\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      event.stopPropagation();\n      setOpen(!open);\n    }\n  };\n\n  return (\n    <>\n      <OGDialog open={open} onOpenChange={setOpen}>\n        <OGDialogTrigger asChild>\n          <TooltipAnchor\n            role=\"button\"\n            aria-label={localize('com_ui_bookmarks_delete')}\n            description={localize('com_ui_delete')}\n            className=\"flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n            tabIndex={tabIndex}\n            onFocus={onFocus}\n            onBlur={onBlur}\n            onClick={() => setOpen(!open)}\n            onKeyDown={handleKeyDown}\n          >\n            <TrashIcon className=\"size-4\" />\n          </TooltipAnchor>\n        </OGDialogTrigger>\n        <OGDialogTemplate\n          showCloseButton={false}\n          title={localize('com_ui_bookmarks_delete')}\n          className=\"w-11/12 max-w-lg\"\n          main={\n            <Label className=\"text-left text-sm font-medium\">\n              {localize('com_ui_bookmark_delete_confirm')} {bookmark}\n            </Label>\n          }\n          selection={{\n            selectHandler: confirmDelete,\n            selectClasses:\n              'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 text-white',\n            selectText: localize('com_ui_delete'),\n          }}\n        />\n      </OGDialog>\n    </>\n  );\n};\n\nexport default DeleteBookmarkButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/EditBookmarkButton.tsx",
    "content": "import { useState } from 'react';\nimport type { FC } from 'react';\nimport type { TConversationTag } from '~/data-provider/data-provider/src';\nimport { TooltipAnchor, OGDialogTrigger } from '~/components/ui';\nimport BookmarkEditDialog from './BookmarkEditDialog';\nimport { EditIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\n\nconst EditBookmarkButton: FC<{\n  bookmark: TConversationTag;\n  tabIndex?: number;\n  onFocus?: () => void;\n  onBlur?: () => void;\n}> = ({ bookmark, tabIndex = 0, onFocus, onBlur }) => {\n  const localize = useLocalize();\n  const [open, setOpen] = useState(false);\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (event.key === 'Enter' || event.key === ' ') {\n      setOpen(!open);\n    }\n  };\n\n  return (\n    <BookmarkEditDialog\n      context=\"EditBookmarkButton\"\n      bookmark={bookmark}\n      open={open}\n      setOpen={setOpen}\n    >\n      <OGDialogTrigger asChild>\n        <TooltipAnchor\n          role=\"button\"\n          aria-label={localize('com_ui_bookmarks_edit')}\n          description={localize('com_ui_edit')}\n          tabIndex={tabIndex}\n          onFocus={onFocus}\n          onBlur={onBlur}\n          onClick={() => setOpen(!open)}\n          className=\"flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n          onKeyDown={handleKeyDown}\n        >\n          <EditIcon />\n        </TooltipAnchor>\n      </OGDialogTrigger>\n    </BookmarkEditDialog>\n  );\n};\n\nexport default EditBookmarkButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Bookmarks/index.ts",
    "content": "export { default as DeleteBookmarkButton } from './DeleteBookmarkButton';\nexport { default as EditBookmarkButton } from './EditBookmarkButton';\nexport { default as BookmarkEditDialog } from './BookmarkEditDialog';\nexport { default as BookmarkItems } from './BookmarkItems';\nexport { default as BookmarkItem } from './BookmarkItem';\nexport { default as BookmarkForm } from './BookmarkForm';\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/AddMultiConvo.tsx",
    "content": "import { PlusCircle } from 'lucide-react';\nimport { isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport { useChatContext, useAddedChatContext } from '~/Providers';\nimport { TooltipAnchor } from '~/components';\nimport { mainTextareaId } from '~/common';\nimport { useLocalize } from '~/hooks';\n\nfunction AddMultiConvo() {\n  const { conversation } = useChatContext();\n  const { setConversation: setAddedConvo } = useAddedChatContext();\n  const localize = useLocalize();\n\n  const clickHandler = () => {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const { title: _t, ...convo } = conversation ?? ({} as TConversation);\n    setAddedConvo({\n      ...convo,\n      title: '',\n    });\n\n    const textarea = document.getElementById(mainTextareaId);\n    if (textarea) {\n      textarea.focus();\n    }\n  };\n\n  if (!conversation) {\n    return null;\n  }\n\n  if (isAssistantsEndpoint(conversation.endpoint)) {\n    return null;\n  }\n\n  return (\n    <TooltipAnchor\n      id=\"add-multi-conversation-button\"\n      aria-label={localize('com_ui_add_multi_conversation')}\n      description={localize('com_ui_add_multi_conversation')}\n      tabIndex={0}\n      role=\"button\"\n      onClick={clickHandler}\n      data-testid=\"parameters-button\"\n      className=\"inline-flex size-10 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary\"\n    >\n      <PlusCircle size={16} aria-label=\"Plus Icon\" />\n    </TooltipAnchor>\n  );\n}\n\nexport default AddMultiConvo;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/ChatView.tsx",
    "content": "import { ArrowRight, MousePointerClick } from 'lucide-react';\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { getFeaturedCases } from '~/api/linsight';\nimport type { ChatFormValues } from '~/common';\nimport { Spinner } from '~/components/svg';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useGetMessagesByConvoId } from '~/data-provider/data-provider/src/react-query';\nimport { useAddedResponse, useChatHelpers, useSSE } from '~/hooks';\nimport useLocalize from '~/hooks/useLocalize';\nimport { AddedChatContext, ChatContext, ChatFormProvider, useFileMapContext } from '~/Providers';\nimport store from '~/store';\nimport { buildTree, cn } from '~/utils';\nimport { Button } from '../ui';\nimport { Card, CardContent } from '../ui/Card';\nimport HeaderTitle from './HeaderTitle';\nimport ChatForm from './Input/ChatForm';\nimport { sameSopLabelState } from './Input/SameSopSpan';\nimport InvitationCodeForm from './InviteCode';\nimport Landing from './Landing';\nimport MessagesView from './Messages/MessagesView';\nimport Presentation from './Presentation';\nimport { useGetBsConfig } from '~/data-provider';\n\n\nconst ChatView = ({ id = '', index = 0, shareToken = '' }: { id?: string, index?: number, shareToken?: string }) => {\n  const t = useLocalize();\n  const { conversationId: cid } = useParams();\n  const conversationId = cid ?? id;\n  const rootSubmission = useRecoilValue(store.submissionByIndex(index));\n  const addedSubmission = useRecoilValue(store.submissionByIndex(index + 1));\n  const [showCode, setShowCode] = useState(false);\n  const [inputFloat, setInputFloat] = useState(false);\n  const [inputWidth, setInputWidth] = useState(0); // To hold the calculated width\n\n  const { data: bsConfig } = useGetBsConfig();\n  const navigate = useNavigate();\n  const fileMap = useFileMapContext();\n\n  const { data: messagesTree = null, isLoading } = useGetMessagesByConvoId(conversationId ?? '', shareToken, {\n    select: useCallback(\n      (data: TMessage[]) => {\n        // console.log('messagesTree :>> ', data);\n        const dataTree = buildTree({ messages: data, fileMap });\n        return dataTree?.length === 0 ? null : (dataTree ?? null);\n      },\n      [fileMap],\n    ),\n    enabled: !!fileMap,\n  });\n\n  const [isLingsi, setIsLingsi] = useState(false);\n  useEffect(() => {\n    window.isLinsight = isLingsi\n  }, [isLingsi])\n  const chatHelpers = useChatHelpers(index, conversationId, isLingsi);\n  const addedChatHelpers = useAddedResponse({ rootIndex: index });\n\n  useSSE(rootSubmission, chatHelpers, false);\n  useSSE(addedSubmission, addedChatHelpers, true);\n\n  const methods = useForm<ChatFormValues>({\n    defaultValues: { text: '' },\n  });\n\n  // 提取title in messagesTree\n  const conversation = useMemo(() => ({\n    ...chatHelpers?.conversation,\n    title: messagesTree?.[0]?.flow_name || '',\n  }), [chatHelpers]);\n\n  useEffect(() => {\n    if (messagesTree && messagesTree.length !== 0) {\n      setIsLingsi(false);\n    }\n  }, [messagesTree]);\n\n  // Handle scroll event to trigger float input\n  const chatContainerRef = useRef<HTMLDivElement>(null); // 创建 ref\n  const casesRef = useRef(null)\n  const [isLoadingMore, setIsLoadingMore] = useState(false)\n  useEffect(() => {\n    let hideLocal = 0\n    const handleScroll = async (e: Event) => {\n      const target = e.target as HTMLDivElement\n      const scrollTop = target.scrollTop\n      const floatPanne = document.getElementById(\"floatPanne\")\n\n      if (floatPanne) {\n        const rect = floatPanne.getBoundingClientRect()\n        if (rect.top <= 20) {\n          setInputFloat(true)\n          setInputWidth(rect.width)\n          console.log(\"e :>> \")\n          if (hideLocal === 0) {\n            hideLocal = scrollTop\n          }\n        }\n        if (hideLocal > 0 && scrollTop < hideLocal) {\n          setInputFloat(false)\n          hideLocal = 0\n        }\n      }\n\n      const { scrollHeight, clientHeight } = target\n      if (scrollTop + clientHeight >= scrollHeight - 10 && !isLoadingMore && casesRef.current) {\n        setIsLoadingMore(true)\n        try {\n          const hasMore = await casesRef.current.loadMore()\n          if (!hasMore) {\n            console.log(\"No more data to load\")\n          }\n        } catch (error) {\n          console.error(\"Error loading more data:\", error)\n        } finally {\n          setIsLoadingMore(false)\n        }\n      }\n    }\n\n    const chatContainer = chatContainerRef.current\n    if (chatContainer) {\n      chatContainer.addEventListener(\"scroll\", handleScroll)\n    }\n    return () => {\n      if (chatContainer) {\n        chatContainer.removeEventListener(\"scroll\", handleScroll)\n      }\n    }\n  }, [isLoadingMore])\n\n  const isNew = conversationId === 'new';\n  let content: JSX.Element | null | undefined;\n\n  if (isLoading && conversationId !== 'new') {\n    content = (\n      <div className=\"flex h-screen items-center justify-center\">\n        <Spinner className=\"opacity-0\" />\n      </div>\n    );\n  } else if (messagesTree && messagesTree.length !== 0) {\n    content = <MessagesView readOnly={shareToken} messagesTree={messagesTree} Header={<HeaderTitle readOnly={shareToken} conversation={conversation} logo={null} />} />;\n  } else {\n    content = <Landing lingsi={isLingsi} lingsiEntry={bsConfig?.linsightConfig?.linsight_entry} setLingsi={setIsLingsi} isNew={isNew} />;\n  }\n\n  return (\n    <ChatFormProvider {...methods}>\n      <ChatContext.Provider value={chatHelpers}>\n        <AddedChatContext.Provider value={addedChatHelpers}>\n          <Presentation isLingsi={isLingsi}>\n            <div className={cn(`h-full`)}>\n              <video\n                autoPlay\n                loop\n                muted\n                playsInline\n                preload=\"auto\"\n                className={cn(\n                  \"absolute size-full object-cover object-center\",\n                  \"transition-opacity duration-500 ease-out\",\n                  isLingsi ? \"opacity-100\" : \"opacity-0\"\n                )}\n              >\n                <source src={`${__APP_ENV__.BASE_URL}/assets/linsi-bg.mp4`} type=\"video/mp4\" />\n                <img src={`${__APP_ENV__.BASE_URL}/assets/lingsi-bg.png`} alt=\"\" />\n              </video>\n              <div ref={chatContainerRef} className='relative z-10 h-full overflow-y-auto'>\n                <div className={cn(showCode ? \"hidden\" : \"flex flex-col justify-center relative\",\n                  messagesTree ? ' h-full' : 'h-[calc(100vh-200px)]'\n                )}>\n                  {content}\n                  <div\n                    id=\"floatPanne\"\n                    className={cn(\n                      'w-full border-t-0 pl-0 pt-2 dark:border-white/20 md:w-[calc(100%-.5rem)] md:border-t-0 md:border-transparent md:pl-0 md:pt-0 md:dark:border-transparent',\n                      inputFloat ? 'fixed top-0 z-10 bg-white pb-20 md:pt-5' : ''\n                    )}\n                    style={{ width: inputFloat ? `${inputWidth}px` : '100%' }} // Dynamically set width\n                  >\n                    <ChatForm isLingsi={isLingsi} setShowCode={setShowCode} index={index} readOnly={shareToken} />\n                    {!inputFloat && <div className=\"h-[2vh]\"></div>}\n                  </div>\n                </div>\n                <Cases ref={casesRef} t={t} isLingsi={isLingsi} setIsLingsi={setIsLingsi} />\n              </div>\n              {/*   邀请码 */}\n              <InvitationCodeForm showCode={showCode} setShowCode={setShowCode} />\n            </div >\n          </Presentation >\n        </AddedChatContext.Provider >\n      </ChatContext.Provider >\n    </ChatFormProvider >\n  );\n};\n\nexport default memo(ChatView);\n\n\nconst Cases = forwardRef(({ t, isLingsi, setIsLingsi }, ref) => {\n  const [_, setSameSopLabel] = useRecoilState(sameSopLabelState)\n  const [casesData, setCasesData] = useState<any[]>([])\n  const [currentPage, setCurrentPage] = useState(1)\n  const [hasMore, setHasMore] = useState(true)\n  const [isLoading, setIsLoading] = useState(false)\n\n  const queryParams = typeof window !== \"undefined\" ? new URLSearchParams(location.search) : null\n  const sopid = queryParams?.get(\"sopid\")\n  const sopName = queryParams?.get(\"name\")\n  const sopSharePath = queryParams?.get(\"path\")\n\n  const handleCardClick = (sopId: string) => {\n    window.open(`${__APP_ENV__.BASE_URL}/linsight/case/${sopId}`)\n  }\n\n  const loadMore = async (): Promise<boolean> => {\n    if (!hasMore || isLoading) return false\n\n    setIsLoading(true)\n    try {\n      const nextPage = currentPage + 1\n      const res = await getFeaturedCases(nextPage)\n\n      if (res.data.items.length > 0) {\n        setCasesData((prev) => [...prev, ...res.data.items]) // Prepend new items for upward scroll\n        setCurrentPage(nextPage)\n        setHasMore(res.data.items.length === 12)\n        return true\n      } else {\n        setHasMore(false)\n        return false\n      }\n    } catch (error) {\n      console.error(\"Error loading more cases:\", error)\n      return false\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  useImperativeHandle(ref, () => ({\n    loadMore,\n  }))\n\n  useEffect(() => {\n    const loadInitialData = async () => {\n      try {\n        const res = await getFeaturedCases(1)\n        setCasesData(res.data.items)\n        setHasMore(res.data.items.length === 12)\n\n        // If sopid exists, find and set the sameSopLabel\n        if (sopid) {\n          const caseItem = res.data.items.find((item: any) => item.id === Number(sopid))\n          if (caseItem) {\n            setSameSopLabel({ ...caseItem }) // Uncomment if you have this state\n            setIsLingsi(true)\n          }\n        } else if (sopName && sopSharePath) {\n          setSameSopLabel({ id: '', name: decodeURIComponent(sopName), url: decodeURIComponent(sopSharePath) })\n          setIsLingsi(true)\n        }\n      } catch (error) {\n        console.error(\"Error loading initial cases:\", error)\n      }\n    }\n\n    loadInitialData()\n  }, [sopid, setIsLingsi])\n\n  if (!isLingsi) return null\n  if (casesData.length === 0) return null\n\n  return (\n    <div className=\"relative w-full mt-8 pb-20\">\n      <p className=\"text-sm text-center text-gray-400\">{t(\"com_case_featured\")}</p>\n      <div className=\"flex flex-wrap pt-4 mx-auto gap-2 w-[782px]\">\n        {casesData.map((caseItem) => (\n          <Card\n            key={caseItem.id}\n            className=\"w-[254px] py-0 rounded-2xl shadow-none hover:shadow-xl group relative overflow-hidden\"\n          >\n            <CardContent className=\"flex flex-col justify-between h-[98px] p-4\">\n              {/* 信息位：标题 */}\n              <div className=\"text-sm font-medium text-gray-800 line-clamp-2\">{caseItem.name}</div>\n\n              {/* 动作位：按钮组（右下角，hover 时显示） */}\n              <div className=\"absolute bottom-2 right-4 flex justify-end space-x-2 mt-2 opacity-0 translate-y-2 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-300\">\n                <Button\n                  variant=\"default\"\n                  className=\"bg-primary text-white rounded-full h-8 px-3 text-xs flex items-center space-x-0\"\n                  onClick={() => setSameSopLabel({ ...caseItem })}\n                >\n                  <MousePointerClick className=\"w-3.5 h-3.5\" />\n                  <span>{t(\"com_make_samestyle\")}</span>\n                </Button>\n\n                <Button\n                  variant=\"outline\"\n                  size=\"icon\"\n                  className=\"rounded-full w-8 h-8 p-0 text-xs flex items-center space-x-1 bg-transparent\"\n                  onClick={() => handleCardClick(caseItem.id.toString())}\n                >\n                  <ArrowRight className=\"w-3.5 h-3.5\" />\n                </Button>\n              </div>\n            </CardContent>\n          </Card>\n        ))}\n      </div>\n    </div>\n  )\n})"
  },
  {
    "path": "src/frontend/client/src/components/Chat/ConvoStarter.tsx",
    "content": "interface ConvoStarterProps {\n  text: string;\n  onClick: () => void;\n}\n\nexport default function ConvoStarter({ text, onClick }: ConvoStarterProps) {\n  return (\n    <button\n      onClick={onClick}\n      className=\"relative flex w-40 cursor-pointer flex-col gap-2 rounded-2xl border border-border-medium px-3 pb-4 pt-3 text-start align-top text-[15px] shadow-[0_0_2px_0_rgba(0,0,0,0.05),0_4px_6px_0_rgba(0,0,0,0.02)] transition-colors duration-300 ease-in-out fade-in hover:bg-surface-tertiary\"\n    >\n      <p className=\"break-word line-clamp-3 overflow-hidden text-balance break-all text-text-secondary\">\n        {text}\n      </p>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/ExportAndShareMenu.tsx",
    "content": "import { useState, useId, useRef } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport * as Ariakit from '@ariakit/react';\nimport { Upload, Share2 } from 'lucide-react';\nimport type * as t from '~/common';\nimport ExportModal from '~/components/Nav/ExportConversation/ExportModal';\nimport { ShareButton } from '~/components/Conversations/ConvoOptions';\nimport { DropdownPopup, TooltipAnchor } from '~/components/ui';\nimport { useMediaQuery, useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function ExportAndShareMenu({\n  isSharedButtonEnabled,\n}: {\n  isSharedButtonEnabled: boolean;\n}) {\n  const localize = useLocalize();\n  const [showExports, setShowExports] = useState(false);\n  const [isPopoverActive, setIsPopoverActive] = useState(false);\n  const [showShareDialog, setShowShareDialog] = useState(false);\n\n  const menuId = useId();\n  const shareButtonRef = useRef<HTMLButtonElement>(null);\n  const exportButtonRef = useRef<HTMLButtonElement>(null);\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const conversation = useRecoilValue(store.conversationByIndex(0));\n\n  const exportable =\n    conversation &&\n    conversation.conversationId != null &&\n    conversation.conversationId !== 'new' &&\n    conversation.conversationId !== 'search';\n\n  if (exportable === false) {\n    return null;\n  }\n\n  const shareHandler = () => {\n    setShowShareDialog(true);\n  };\n\n  const exportHandler = () => {\n    setShowExports(true);\n  };\n\n  const dropdownItems: t.MenuItemProps[] = [\n    {\n      label: localize('com_endpoint_export'),\n      onClick: exportHandler,\n      icon: <Upload className=\"icon-md mr-2 text-text-secondary\" />,\n      /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */\n      hideOnClick: false,\n      ref: exportButtonRef,\n      render: (props) => <button {...props} />,\n    },\n    {\n      label: localize('com_ui_share'),\n      onClick: shareHandler,\n      icon: <Share2 className=\"icon-md mr-2 text-text-secondary\" />,\n      show: isSharedButtonEnabled,\n      /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */\n      hideOnClick: false,\n      ref: shareButtonRef,\n      render: (props) => <button {...props} />,\n    },\n  ];\n\n  return (\n    <>\n      <DropdownPopup\n        menuId={menuId}\n        focusLoop={true}\n        isOpen={isPopoverActive}\n        setIsOpen={setIsPopoverActive}\n        trigger={\n          <TooltipAnchor\n            description={localize('com_endpoint_export_share')}\n            render={\n              <Ariakit.MenuButton\n                id=\"export-menu-button\"\n                aria-label=\"Export options\"\n                className=\"inline-flex size-10 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary\"\n              >\n                <Upload\n                  className=\"icon-md text-text-secondary\"\n                  aria-hidden=\"true\"\n                  focusable=\"false\"\n                />\n              </Ariakit.MenuButton>\n            }\n          />\n        }\n        items={dropdownItems}\n        className={isSmallScreen ? '' : 'absolute right-0 top-0 mt-2'}\n      />\n      <ExportModal\n        open={showExports}\n        onOpenChange={setShowExports}\n        conversation={conversation}\n        triggerRef={exportButtonRef}\n        aria-label={localize('com_ui_export_convo_modal')}\n      />\n      <ShareButton\n        triggerRef={shareButtonRef}\n        conversationId={conversation.conversationId ?? ''}\n        title={conversation.title ?? ''}\n        open={showShareDialog}\n        onOpenChange={setShowShareDialog}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Footer.tsx",
    "content": "import React, { useEffect } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport TagManager from 'react-gtm-module';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useGetStartupConfig } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\n\nexport default function Footer({ className }: { className?: string }) {\n  const { data: config } = useGetStartupConfig();\n  const localize = useLocalize();\n\n  const privacyPolicy = config?.interface?.privacyPolicy;\n  const termsOfService = config?.interface?.termsOfService;\n\n  const privacyPolicyRender = privacyPolicy?.externalUrl != null && (\n    <a\n      className=\"text-text-secondary underline\"\n      href={privacyPolicy.externalUrl}\n      target={privacyPolicy.openNewTab === true ? '_blank' : undefined}\n      rel=\"noreferrer\"\n    >\n      {localize('com_ui_privacy_policy')}\n    </a>\n  );\n\n  const termsOfServiceRender = termsOfService?.externalUrl != null && (\n    <a\n      className=\"text-text-secondary underline\"\n      href={termsOfService.externalUrl}\n      target={termsOfService.openNewTab === true ? '_blank' : undefined}\n      rel=\"noreferrer\"\n    >\n      {localize('com_ui_terms_of_service')}\n    </a>\n  );\n\n  const mainContentParts = (\n    typeof config?.customFooter === 'string'\n      ? config.customFooter\n      : 'AI-generated, ' + localize('com_ui_latest_footer')\n  ).split('|');\n\n  useEffect(() => {\n    if (config?.analyticsGtmId != null && typeof window.google_tag_manager === 'undefined') {\n      const tagManagerArgs = {\n        gtmId: config.analyticsGtmId,\n      };\n      TagManager.initialize(tagManagerArgs);\n    }\n  }, [config?.analyticsGtmId]);\n\n  const mainContentRender = mainContentParts.map((text, index) => (\n    <React.Fragment key={`main-content-part-${index}`}>\n      <ReactMarkdown\n        components={{\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          a: ({ node: _n, href, children, ...otherProps }) => {\n            return (\n              <a\n                className=\"text-text-secondary underline\"\n                href={href}\n                target=\"_blank\"\n                rel=\"noreferrer\"\n                {...otherProps}\n              >\n                {children}\n              </a>\n            );\n          },\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          p: ({ node: _n, ...props }) => <span className=\"text-gray-500\" {...props} />,\n        }}\n      >\n        {text.trim()}\n      </ReactMarkdown>\n    </React.Fragment>\n  ));\n\n  const footerElements = [...mainContentRender].filter(\n    Boolean,\n  );\n\n  return (\n    <div\n      className={\n        className ??\n        'relative flex items-center justify-center gap-2 px-2 py-2 text-center text-xs text-text-primary md:px-[60px]'\n      }\n      role=\"contentinfo\"\n    >\n      {footerElements.map((contentRender, index) => {\n        const isLastElement = index === footerElements.length - 1;\n        return (\n          <React.Fragment key={`footer-element-${index}`}>\n            {contentRender}\n            {!isLastElement && (\n              <div key={`separator-${index}`} className=\"h-2 border-r-[1px] border-border-medium\" />\n            )}\n          </React.Fragment>\n        );\n      })}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Header.tsx",
    "content": "import { useMemo } from 'react';\nimport { useOutletContext } from 'react-router-dom';\nimport { getConfigDefaults, PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport type { ContextType } from '~/common';\nimport { EndpointsMenu, ModelSpecsMenu, PresetsMenu, HeaderNewChat } from './Menus';\nimport { useGetStartupConfig } from '~/data-provider';\nimport ExportAndShareMenu from './ExportAndShareMenu';\nimport { useMediaQuery, useHasAccess } from '~/hooks';\nimport HeaderOptions from './Input/HeaderOptions';\nimport BookmarkMenu from './Menus/BookmarkMenu';\nimport AddMultiConvo from './AddMultiConvo';\n\nconst defaultInterface = getConfigDefaults().interface;\n\nexport default function Header() {\n  const { data: startupConfig } = useGetStartupConfig();\n  const { navVisible } = useOutletContext<ContextType>();\n  const modelSpecs = useMemo(() => startupConfig?.modelSpecs?.list ?? [], [startupConfig]);\n  const interfaceConfig = useMemo(\n    () => startupConfig?.interface ?? defaultInterface,\n    [startupConfig],\n  );\n\n  const hasAccessToBookmarks = useHasAccess({\n    permissionType: PermissionTypes.BOOKMARKS,\n    permission: Permissions.USE,\n  });\n\n  const hasAccessToMultiConvo = useHasAccess({\n    permissionType: PermissionTypes.MULTI_CONVO,\n    permission: Permissions.USE,\n  });\n\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n\n  return (\n    <div className=\"sticky top-0 z-10 flex h-14 w-full items-center justify-between bg-white p-2 font-semibold dark:bg-gray-800 dark:text-white\">\n      <div className=\"hide-scrollbar flex w-full items-center justify-between gap-2 overflow-x-auto\">\n        <div className=\"flex items-center gap-2\">\n          {!navVisible && <HeaderNewChat />}\n          {interfaceConfig.endpointsMenu === true && <EndpointsMenu />}\n          {modelSpecs.length > 0 && <ModelSpecsMenu modelSpecs={modelSpecs} />}\n          {<HeaderOptions interfaceConfig={interfaceConfig} />}\n          {interfaceConfig.presets === true && <PresetsMenu />}\n          {hasAccessToBookmarks === true && <BookmarkMenu />}\n          {hasAccessToMultiConvo === true && <AddMultiConvo />}\n          {isSmallScreen && (\n            <ExportAndShareMenu\n              isSharedButtonEnabled={startupConfig?.sharedLinksEnabled ?? false}\n            />\n          )}\n        </div>\n        {!isSmallScreen && (\n          <ExportAndShareMenu isSharedButtonEnabled={startupConfig?.sharedLinksEnabled ?? false} />\n        )}\n      </div>\n      {/* Empty div for spacing */}\n      <div />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/HeaderTitle.tsx",
    "content": "import { useLocalize } from '~/hooks';\nimport ShareChat from '../Share/ShareChat';\n\nconst types = {\n  1: 'skill',\n  5: 'assistant',\n  10: 'workflow',\n  15: 'workbench_chat'\n}\nexport default function HeaderTitle({ conversation, logo, readOnly }) {\n  const localize = useLocalize();\n\n  return (\n    <div className=\"sticky top-0 z-10 flex h-14 w-full items-center justify-center bg-white p-2 gap-2 font-semibold dark:bg-gray-800 dark:text-white \">\n      {logo}\n      <div id=\"app-title\" className=\"overflow max-w-2xl truncate\">{conversation?.title || localize('com_ui_new_chat')}</div>\n      <div className='absolute right-2'>\n        {!readOnly && <ShareChat type={types[conversation?.flowType]} flowId={conversation?.flowId} chatId={conversation?.conversationId || ''} />}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/ActiveSetting.tsx",
    "content": "export default function ActiveSetting() {\n  return (\n    <div className=\"text-token-text-tertiary space-x-2 overflow-hidden text-ellipsis text-sm font-light\">\n      Talking to{' '}\n      <span className=\"text-token-text-secondary font-medium\">[latest] Tailwind CSS GPT</span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/AddedConvo.tsx",
    "content": "import { useMemo } from 'react';\nimport type { TConversation, TEndpointOption, TPreset } from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport useGetSender from '~/hooks/Conversations/useGetSender';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { EndpointIcon } from '~/components/Endpoints';\nimport { getPresetTitle } from '~/utils';\n\nexport default function AddedConvo({\n  addedConvo,\n  setAddedConvo,\n}: {\n  addedConvo: TConversation | null;\n  setAddedConvo: SetterOrUpdater<TConversation | null>;\n}) {\n  const getSender = useGetSender();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const title = useMemo(() => {\n    const sender = getSender(addedConvo as TEndpointOption);\n    const title = getPresetTitle(addedConvo as TPreset);\n    return `+ ${sender}: ${title}`;\n  }, [addedConvo, getSender]);\n\n  if (!addedConvo) {\n    return null;\n  }\n  return (\n    <div className=\"flex items-start gap-4 py-2.5 pl-3 pr-1.5 text-sm\">\n      <span className=\"mt-0 flex h-6 w-6 flex-shrink-0 items-center justify-center\">\n        <div className=\"icon-md\">\n          <EndpointIcon\n            conversation={addedConvo}\n            endpointsConfig={endpointsConfig}\n            containerClassName=\"shadow-stroke overflow-hidden rounded-full\"\n            context=\"menu-item\"\n            size={20}\n          />\n        </div>\n      </span>\n      <span className=\"text-token-text-secondary line-clamp-3 flex-1 py-0.5 font-semibold\">\n        {title}\n      </span>\n      <button\n        className=\"text-token-text-secondary flex-shrink-0\"\n        type=\"button\"\n        aria-label=\"Close added conversation\"\n        onClick={() => setAddedConvo(null)}\n      >\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"24\"\n          height=\"24\"\n          fill=\"none\"\n          viewBox=\"0 0 24 24\"\n          className=\"icon-lg\"\n          aria-hidden=\"true\"\n        >\n          <path\n            fill=\"currentColor\"\n            fillRule=\"evenodd\"\n            d=\"M7.293 7.293a1 1 0 0 1 1.414 0L12 10.586l3.293-3.293a1 1 0 1 1 1.414 1.414L13.414 12l3.293 3.293a1 1 0 0 1-1.414 1.414L12 13.414l-3.293 3.293a1 1 0 0 1-1.414-1.414L10.586 12 7.293 8.707a1 1 0 0 1 0-1.414\"\n            clipRule=\"evenodd\"\n          ></path>\n        </svg>\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/AudioRecorder.tsx",
    "content": "import { useCallback } from 'react';\nimport { useChatFormContext, useToastContext } from '~/Providers';\nimport { ListeningIcon, Spinner } from '~/components/svg';\nimport { useLocalize, useSpeechToText } from '~/hooks';\nimport { TooltipAnchor } from '~/components/ui';\nimport { globalAudioId } from '~/common';\nimport { cn } from '~/utils';\n\nexport default function AudioRecorder({\n  isRTL,\n  disabled,\n  ask,\n  methods,\n  textAreaRef,\n  isSubmitting,\n}: {\n  isRTL: boolean;\n  disabled: boolean;\n  ask: (data: { text: string }) => void;\n  methods: ReturnType<typeof useChatFormContext>;\n  textAreaRef: React.RefObject<HTMLTextAreaElement>;\n  isSubmitting: boolean;\n}) {\n  const { setValue, reset } = methods;\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const onTranscriptionComplete = useCallback(\n    (text: string) => {\n      if (isSubmitting) {\n        showToast({\n          message: localize('com_ui_speech_while_submitting'),\n          status: 'error',\n        });\n        return;\n      }\n      if (text) {\n        const globalAudio = document.getElementById(globalAudioId) as HTMLAudioElement | null;\n        if (globalAudio) {\n          console.log('Unmuting global audio');\n          globalAudio.muted = false;\n        }\n        ask({ text });\n        reset({ text: '' });\n      }\n    },\n    [ask, reset, showToast, localize, isSubmitting],\n  );\n\n  const setText = useCallback(\n    (text: string) => {\n      setValue('text', text, {\n        shouldValidate: true,\n      });\n    },\n    [setValue],\n  );\n\n  const { isListening, isLoading, startRecording, stopRecording } = useSpeechToText(\n    setText,\n    onTranscriptionComplete,\n  );\n\n  if (!textAreaRef.current) {\n    return null;\n  }\n\n  const handleStartRecording = async () => startRecording();\n\n  const handleStopRecording = async () => stopRecording();\n\n  const renderIcon = () => {\n    if (isListening === true) {\n      return <ListeningIcon className=\"stroke-red-500\" />;\n    }\n    if (isLoading === true) {\n      return <Spinner className=\"stroke-gray-700 dark:stroke-gray-300\" />;\n    }\n    return <ListeningIcon className=\"stroke-gray-700 dark:stroke-gray-300\" />;\n  };\n\n  return (\n    <TooltipAnchor\n      description={localize('com_ui_use_micrphone')}\n      render={\n        <button\n          id=\"audio-recorder\"\n          type=\"button\"\n          aria-label={localize('com_ui_use_micrphone')}\n          onClick={isListening === true ? handleStopRecording : handleStartRecording}\n          disabled={disabled}\n          className={cn(\n            'absolute flex size-[35px] items-center justify-center rounded-full p-1 transition-colors hover:bg-surface-hover',\n            isRTL ? 'bottom-2 left-2' : 'bottom-2 right-2',\n            disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n          )}\n          title={localize('com_ui_use_micrphone')}\n          aria-pressed={isListening}\n        >\n          {renderIcon()}\n        </button>\n      }\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/ChatForm.tsx",
    "content": "import { BookOpen, Rotate3DIcon } from \"lucide-react\";\nimport { memo, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { File_Accept } from \"~/common\";\nimport { Button, TextareaAutosize } from \"~/components/ui\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n} from \"~/components/ui/Select\";\nimport SpeechToTextComponent from \"~/components/Voice/SpeechToText\";\nimport { useRecordingAudioLoading } from \"~/components/Voice/textToSpeechStore\";\nimport {\n  useGetBsConfig,\n  useGetFileConfig,\n  useGetUserLinsightCountQuery,\n  useGetWorkbenchModelsQuery,\n} from \"~/data-provider\";\nimport {\n  BsConfig,\n  fileConfig as defaultFileConfig,\n  isAssistantsEndpoint,\n  mergeFileConfig,\n  supportsFiles,\n} from \"~/data-provider/data-provider/src\";\nimport {\n  useAutoSave,\n  useHandleKeyUp,\n  useLocalize,\n  useQueryParams,\n  useRequiresKey,\n  useSubmitMessage,\n  useTextarea,\n} from \"~/hooks\";\nimport {\n  useAddedChatContext,\n  useAssistantsMapContext,\n  useChatContext,\n  useChatFormContext,\n} from \"~/Providers\";\nimport store from \"~/store\";\nimport { checkIfScrollable, cn, removeFocusRings } from \"~/utils\";\nimport { ChatToolDown } from \"./ChatFormTools\";\nimport CollapseChat from \"./CollapseChat\";\nimport FileFormWrapper from \"./Files/FileFormWrapper\";\nimport SameSopSpan, { sameSopLabelState } from \"./SameSopSpan\";\nimport SendButton from \"./SendButton\";\nimport StopButton from \"./StopButton\";\nimport { ChatKnowledge } from \"./ChatKnowledge\";\ntype SelectedOrgKb = {\n  id: string;\n  name: string;\n};\nconst ChatForm = ({ isLingsi, setShowCode, readOnly, index = 0 }) => {\n  const submitButtonRef = useRef<HTMLButtonElement>(null);\n  const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n  useQueryParams({ textAreaRef });\n\n  const localize = useLocalize();\n\n  const [isOutMaxToken, setIsOutMaxToken] = useState(false);\n  const [isCollapsed, setIsCollapsed] = useState(false);\n  const [isScrollable, setIsScrollable] = useState(false);\n\n  const maximizeChatSpace = useRecoilValue(store.maximizeChatSpace);\n  const [searchType, setSearchType] = useRecoilState(store.searchType);\n  const [isSearch, setIsSearch] = useRecoilState(store.isSearch);\n  const [chatModel, setChatModel] = useRecoilState(store.chatModel);\n  // 组织知识库选中（多选）\n  const [selectedOrgKbs, setSelectedOrgKbs] = useRecoilState(\n    store.selectedOrgKbs\n  );\n  const [enableOrgKb, setEnableOrgKb] = useRecoilState(store.enableOrgKb);\n\n  const [chatStatesMap, setChatStatesMap] = useRecoilState(store.chatStatesMap);\n  const isSearching = useRecoilValue(store.isSearching);\n  const [showStopButton, setShowStopButton] = useRecoilState(\n    store.showStopButtonByIndex(index)\n  );\n  const [showPlusPopover, setShowPlusPopover] = useRecoilState(\n    store.showPlusPopoverFamily(index)\n  );\n  const [showMentionPopover, setShowMentionPopover] = useRecoilState(\n    store.showMentionPopoverFamily(index)\n  );\n  const isInitialMount = useRef(true);\n  const [chatId, setChatId] = useRecoilState(store.chatId);\n  const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();\n  const isRTL = chatDirection === \"rtl\";\n\n  const { requiresKey } = useRequiresKey();\n  const handleKeyUp = useHandleKeyUp({\n    index,\n    textAreaRef,\n    setShowPlusPopover,\n    setShowMentionPopover,\n  });\n\n  const { data: bsConfig } = useGetBsConfig();\n  const [sameSopLabel] = useRecoilState(sameSopLabelState);\n  const {\n    handlePaste,\n    handleKeyDown,\n    handleCompositionStart,\n    handleCompositionEnd,\n  } = useTextarea({\n    textAreaRef,\n    submitButtonRef,\n    setIsScrollable,\n    disabled: !!(requiresKey ?? false),\n    placeholder: isLingsi\n      ? sameSopLabel\n        ? \"请输入与此案例相似的目标\"\n        : bsConfig?.linsightConfig?.input_placeholder ||\n        localize(\"com_linsight_input_placeholder\")\n      : bsConfig?.inputPlaceholder,\n  });\n\n  const {\n    files,\n    setFiles,\n    dailyFiles,\n    setDailyFiles,\n    conversation,\n    isSubmitting,\n    filesLoading,\n    newConversation,\n    handleStopGenerating,\n  } = useChatContext();\n  const methods = useChatFormContext();\n  const {\n    addedIndex,\n    generateConversation,\n    conversation: addedConvo,\n    setConversation: setAddedConvo,\n    isSubmitting: isSubmittingAdded,\n  } = useAddedChatContext();\n  const showStopAdded = useRecoilValue(store.showStopButtonByIndex(addedIndex));\n\n  const { clearDraft } = useAutoSave({\n    conversationId: useMemo(() => conversation?.conversationId, [conversation]),\n    textAreaRef,\n    files,\n    setFiles,\n    dailyFiles,\n    setDailyFiles,\n  });\n\n  const navigator = useNavigate();\n\n  const assistantMap = useAssistantsMapContext();\n  const { submitMessage, submitPrompt } = useSubmitMessage({ clearDraft });\n\n  const { endpoint: _endpoint, endpointType } = conversation ?? {\n    endpoint: null,\n  };\n  const endpoint = endpointType ?? _endpoint;\n  // 知识库是否开启\n  const isKnowledgeOn = enableOrgKb || searchType === \"knowledgeSearch\";\n\n  // 联网搜索是否开启\n  const isNetSearchOn = searchType === \"netSearch\";\n\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const endpointFileConfig = fileConfig.endpoints[endpoint ?? \"\"];\n  const invalidAssistant = useMemo(\n    () =>\n      isAssistantsEndpoint(conversation?.endpoint) &&\n      (!(conversation?.assistant_id ?? \"\") ||\n        !assistantMap?.[conversation?.endpoint ?? \"\"][\n        conversation?.assistant_id ?? \"\"\n        ]),\n    [conversation?.assistant_id, conversation?.endpoint, assistantMap]\n  );\n  const disableInputs = useMemo(() => {\n    if (readOnly) return true;\n    if (isLingsi) return false;\n    if (!bsConfig?.models) return true;\n    if (bsConfig.models.length === 0) return true;\n    return !!((requiresKey ?? false) || invalidAssistant);\n  }, [requiresKey, invalidAssistant, isLingsi, readOnly, bsConfig]);\n\n  const { ref, ...registerProps } = methods.register(\"text\", {\n    required: true,\n    onChange: (e) => {\n      methods.setValue(\"text\", e.target.value, { shouldValidate: true });\n    },\n  });\n  const isVisual = useMemo(() => {\n    if (!bsConfig?.models || !chatModel?.id) return false;\n    const model = bsConfig.models.find(item => item.id == chatModel.id);\n    return !!model?.visual;\n  }, [bsConfig?.models, chatModel?.id]);\n  useEffect(() => {\n    if (!isSearching && textAreaRef.current && !disableInputs) {\n      textAreaRef.current.focus();\n    }\n  }, [isSearching, disableInputs]);\n\n  useEffect(() => {\n    if (textAreaRef.current) {\n      checkIfScrollable(textAreaRef.current);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (files.size >= 1) {\n      setIsSearch(false);\n    }\n    let total = 0;\n    files.forEach((item: any) => {\n      total = item?.token + total;\n    });\n    const isOut = total > 300000;\n    setIsOutMaxToken(isOut);\n  }, [files]);\n\n  useEffect(() => {\n    searchType || enableOrgKb ? setIsSearch(true) : setIsSearch(false);\n  }, [searchType, enableOrgKb]);\n  const prevChatId = useRef(\"\");\n  useEffect(() => {\n    if (conversation?.conversationId === prevChatId.current) {\n      return;\n    }\n\n    // 情况1: 切换到 \"new\" 状态\n    if (conversation?.conversationId === \"new\") {\n      console.log(\"切换到 new 状态，清空所有状态\");\n\n      // 清空状态\n      setSelectedOrgKbs([]);\n      setEnableOrgKb(false);\n      setSearchType(\"\");\n      setChatId(\"new\");\n      prevChatId.current = \"new\";\n      return;\n    }\n\n    // 情况2: 从 \"new\" 转换到实际 ID\n    if (prevChatId.current === \"new\" && conversation?.conversationId) {\n      const newChatId = conversation.conversationId;\n      console.log(\"从 new 转换到实际 ID\", newChatId);\n\n      // 先检查是否已经有保存的状态\n      const savedState = chatStatesMap[newChatId];\n\n      if (savedState) {\n        // 如果已经有保存的状态，恢复它\n        console.log(\"恢复已保存的状态\", savedState);\n        setSelectedOrgKbs(savedState.selectedOrgKbs || []);\n        setEnableOrgKb(savedState.enableOrgKb ?? false);\n        setSearchType(savedState.searchType ?? \"\");\n      } else {\n        // 如果没有保存的状态，保存当前状态\n        console.log(\"保存当前状态到新ID\");\n        const newChatState = {\n          selectedOrgKbs: selectedOrgKbs,\n          enableOrgKb: enableOrgKb,\n          searchType: searchType,\n        };\n\n        // 保存到新的 conversationId 中\n        setChatStatesMap((prev) => ({\n          ...prev,\n          [newChatId]: newChatState,\n        }));\n      }\n\n      setChatId(newChatId);\n      prevChatId.current = newChatId;\n      return;\n    }\n\n    // 情况3: 从实际 ID 切换到另一个实际 ID\n    if (\n      conversation?.conversationId &&\n      prevChatId.current &&\n      prevChatId.current !== \"new\"\n    ) {\n      const newChatId = conversation.conversationId;\n      // 先保存当前会话的状态\n      if (prevChatId.current) {\n        setChatStatesMap((prev) => ({\n          ...prev,\n          [prevChatId.current]: {\n            selectedOrgKbs,\n            enableOrgKb,\n            searchType,\n          },\n        }));\n      }\n\n      // 然后恢复新会话的状态\n      const savedState = chatStatesMap[newChatId];\n      if (savedState) {\n        console.log(\"恢复新会话的状态\", savedState);\n        setSelectedOrgKbs(savedState.selectedOrgKbs || []);\n        setEnableOrgKb(savedState.enableOrgKb || false);\n        setSearchType(savedState.searchType || \"\");\n      } else {\n        console.log(\"新会话没有保存的状态，清空\");\n        setSelectedOrgKbs([]);\n        setEnableOrgKb(false);\n        setSearchType(\"\");\n      }\n\n      setChatId(newChatId);\n      prevChatId.current = newChatId;\n      return;\n    }\n    if (conversation?.conversationId) {\n      const newChatId = conversation.conversationId;\n\n      // 恢复保存的状态\n      const savedState = chatStatesMap[newChatId];\n      if (savedState) {\n        console.log(\"恢复保存的状态\", savedState);\n        setSelectedOrgKbs(savedState.selectedOrgKbs || []);\n        setEnableOrgKb(savedState.enableOrgKb || false);\n        setSearchType(savedState.searchType || \"\");\n      } else {\n        console.log(\"没有保存的状态，清空\");\n        setSelectedOrgKbs([]);\n        setEnableOrgKb(false);\n        setSearchType(\"\");\n      }\n\n      setChatId(newChatId);\n      prevChatId.current = newChatId;\n    } else {\n      // conversationId 不存在的情况\n      setChatId(\"\");\n      prevChatId.current = conversation?.conversationId;\n    }\n  }, [conversation?.conversationId]);\n\n  const endpointSupportsFiles: boolean =\n    supportsFiles[endpointType ?? endpoint ?? \"\"] ?? false;\n  const isUploadDisabled: boolean = endpointFileConfig?.disabled ?? false;\n\n  const baseClasses = cn(\n    \"md:py-3.5 m-0 w-full resize-none py-[13px] bg-surface-tertiary placeholder-black/50 dark:placeholder-white/50 [&:has(textarea:focus)]:shadow-[0_2px_6px_rgba(0,0,0,.5)]\",\n    isCollapsed ? \"max-h-[52px]\" : \"max-h-96\",\n    isLingsi && \"bg-transparent\"\n  );\n\n  const uploadActive = endpointSupportsFiles && !isUploadDisabled;\n  const speechClass = isRTL\n    ? `pr-${uploadActive ? \"6\" : \"4\"} pl-6`\n    : `pl-${uploadActive ? \"6\" : \"4\"} pr-6`;\n\n  // linsight工具\n  const [tools, setTools] = useState([]);\n  // 获取剩余次数\n  const { data: count, refetch } = useGetUserLinsightCountQuery();\n  useEffect(() => {\n    bsConfig?.linsight_invitation_code && refetch();\n  }, [bsConfig?.linsight_invitation_code]);\n\n  const accept = useMemo(() => {\n    if (isLingsi) {\n      return bsConfig?.enable_etl4lm\n        ? File_Accept.Linsight_Etl4lm\n        : File_Accept.Linsight;\n    }\n    return \"\";\n  }, [isLingsi]);\n\n  const { data: modelData } = useGetWorkbenchModelsQuery();\n  const showVoice = modelData?.asr_model.id;\n\n  const [audioOpening] = useRecordingAudioLoading();\n  const noModel = useMemo(() => {\n    if (isLingsi) return false;\n    if (!bsConfig?.models) return true;\n    if (bsConfig.models.length === 0) return true;\n    return false;\n  }, [isLingsi, bsConfig]);\n\n  return (\n    <form\n      onSubmit={methods.handleSubmit((data) => {\n        console.log(\n          \"bsConfig?.linsight_invitation_code :>> \",\n          bsConfig?.linsight_invitation_code,\n          isLingsi,\n          count\n        );\n        if (bsConfig?.linsight_invitation_code && isLingsi && count === 0)\n          return setShowCode(true);\n        submitMessage({\n          ...data,\n          linsight: isLingsi,\n          tools,\n          // knowledge: {\n          //   personal: searchType === \"knowledgeSearch\",\n          //   orgKbIds: enableOrgKb ? selectedOrgKbs.map((kb) => kb.id) : [],\n          // },\n        });\n        isLingsi && navigator(\"/linsight/new\");\n      })}\n      className={cn(\n        \"mx-auto flex flex-row gap-3 transition-all duration-200 last:mb-2\",\n        maximizeChatSpace ? \"w-full max-w-full\" : \"md:max-w-2xl xl:max-w-3xl\"\n      )}\n    >\n      <div\n        className={`relative flex h-full flex-1 items-stretch md:flex-col ${!isLingsi && \"overflow-hidden\"\n          }`}\n      >\n        {/* 切换模型 */}\n        {/* {showPlusPopover && !isAssistantsEndpoint(endpoint) && (\n          <Mention\n            setShowMentionPopover={setShowPlusPopover}\n            newConversation={generateConversation}\n            textAreaRef={textAreaRef}\n            commandChar=\"+\"\n            placeholder=\"com_ui_add_model_preset\"\n            includeAssistants={false}\n          />\n        )}\n        {showMentionPopover && (\n          <Mention\n            setShowMentionPopover={setShowMentionPopover}\n            newConversation={newConversation}\n            textAreaRef={textAreaRef}\n          />\n        )} */}\n        {/* 快捷提示词选择 */}\n        {/* <PromptsCommand index={index} textAreaRef={textAreaRef} submitPrompt={submitPrompt} /> */}\n        <div\n          className={cn(\n            \"transitional-all relative flex w-full flex-grow flex-col overflow-hidden rounded-3xl bg-surface-tertiary pb-8 z-10 text-text-primary duration-200 border border-transparent\",\n            isLingsi &&\n            \"border-blue-400 bg-gradient-to-b from-[#F2F5FF] to-white\"\n          )}\n        >\n          {/* 临时对话 */}\n          {/* <TemporaryChat\n            isTemporaryChat={isTemporaryChat}\n            setIsTemporaryChat={setIsTemporaryChat}\n          /> */}\n          {/* 操作已添加的对话 */}\n          {/* <TextareaHeader addedConvo={addedConvo} setAddedConvo={setAddedConvo} /> */}\n          {/* {bsConfig?.fileUpload.enabled && */}\n          {/* 做同款 */}\n          {isLingsi && <SameSopSpan></SameSopSpan>}\n          {(enableOrgKb || searchType === \"knowledgeSearch\") &&\n            selectedOrgKbs.length > 0 &&\n            !isLingsi && (\n              <div className=\"mx-2 mt-2 max-h-[100px] overflow-y-auto\">\n                <div className=\"flex flex-wrap gap-2\">\n                  {selectedOrgKbs.map((kb) => (\n                    <div\n                      key={kb.id}\n                      className=\"group relative flex items-center gap-1\n              px-2 py-1 pr-6\n              rounded-full bg-white border border-slate-200\n              text-xs text-slate-700\n              max-w-[200px]\n              hover:bg-slate-50 transition-all duration-200\"\n                    >\n                      {kb.id === \"personal_knowledge_base\" ? (\n                        <BookOpen\n                          size={14}\n                          className=\"text-slate-500 shrink-0\"\n                        />\n                      ) : (\n                        <img\n                          className=\"size-[14px] text-slate-500 shrink-0\"\n                          src={__APP_ENV__.BASE_URL + \"/assets/books.svg\"}\n                          alt=\"\"\n                        />\n                      )}\n\n                      <span className=\"truncate flex-1 min-w-0 transition-all duration-200 group-hover:text-[11px]\">\n                        {kb.name}\n                      </span>\n\n                      {setSelectedOrgKbs && (\n                        <button\n                          onClick={() => {\n                            setSelectedOrgKbs((prev) =>\n                              prev.filter((i) => i.id !== kb.id)\n                            );\n                            if (kb.id === \"personal_knowledge_base\") {\n                              setSearchType(\"\");\n                            }\n                          }}\n                          className=\"absolute right-1 top-1/2 -translate-y-1/2\n                  opacity-0 group-hover:opacity-100\n                  w-4 h-4 flex items-center justify-center\n                  rounded-full hover:bg-slate-200\n                  text-slate-400 transition-opacity duration-200\"\n                        >\n                          ✕\n                        </button>\n                      )}\n                    </div>\n                  ))}\n                </div>\n              </div>\n            )}\n          <FileFormWrapper\n            accept={accept}\n            showVoice={showVoice}\n            fileTip={!isLingsi && !isVisual}\n            noUpload={!bsConfig?.fileUpload.enabled}\n            disableInputs={disableInputs || audioOpening}\n            disabledSearch={isSearch && !isLingsi}\n            selectedOrgKbs={selectedOrgKbs}\n            setSelectedOrgKbs={setSelectedOrgKbs}\n            enableOrgKb={enableOrgKb}\n          >\n            <>\n              <CollapseChat\n                isCollapsed={isCollapsed}\n                isScrollable={isScrollable}\n                setIsCollapsed={setIsCollapsed}\n              />\n              <TextareaAutosize\n                {...registerProps}\n                ref={(e) => {\n                  ref(e);\n                  textAreaRef.current = e;\n                }}\n                disabled={disableInputs}\n                onPaste={handlePaste}\n                onKeyDown={handleKeyDown}\n                onKeyUp={handleKeyUp}\n                onHeightChange={() => {\n                  if (textAreaRef.current) {\n                    const scrollable = checkIfScrollable(textAreaRef.current);\n                    setIsScrollable(scrollable);\n                  }\n                }}\n                onCompositionStart={handleCompositionStart}\n                onCompositionEnd={handleCompositionEnd}\n                tabIndex={0}\n                data-testid=\"text-input\"\n                rows={2}\n                onFocus={() => isCollapsed && setIsCollapsed(false)}\n                onClick={() => isCollapsed && setIsCollapsed(false)}\n                style={{ height: isLingsi ? 124 : 84, overflowY: \"auto\" }}\n                className={cn(\n                  baseClasses,\n                  speechClass,\n                  removeFocusRings,\n                  \"transition-[max-height] duration-200\",\n                  \"transition-[height] duration-500\",\n                  isLingsi ? \"min-h-32\" : \"min-h-24\"\n                )}\n              />\n            </>\n          </FileFormWrapper>\n          {/* 发送和停止 */}\n          <div className=\"absolute bottom-2 right-3 flex gap-2 items-center\">\n            {showVoice && (\n              <SpeechToTextComponent\n                disabled={readOnly || noModel}\n                onChange={(e) => {\n                  const text = textAreaRef.current.value + e;\n                  methods.setValue(\"text\", text, { shouldValidate: true });\n                }}\n              />\n            )}\n            {(isSubmitting || isSubmittingAdded) &&\n              (showStopButton || showStopAdded) ? (\n              <StopButton\n                stop={handleStopGenerating}\n                setShowStopButton={setShowStopButton}\n              />\n            ) : (\n              <SendButton\n                ref={submitButtonRef}\n                isLingsi={isLingsi}\n                control={methods.control}\n                disabled={\n                  !!(\n                    filesLoading ||\n                    isSubmitting ||\n                    disableInputs ||\n                    isOutMaxToken\n                  ) || audioOpening\n                }\n              />\n            )}\n          </div>\n          {/* 深度思考 联网 */}\n          <div className=\"absolute bottom-2 left-3 flex gap-2\">\n            {!isLingsi && (\n              <ModelSelect\n                disabled={readOnly}\n                value={chatModel.id}\n                options={bsConfig?.models}\n                onChange={(val) => {\n                  setChatModel({\n                    id: Number(val),\n                    name:\n                      bsConfig?.models?.find((item) => item.id === val)\n                        ?.displayName || \"\",\n                  });\n                }}\n              />\n            )}\n            {/* 知识库 */}\n            {!isLingsi && bsConfig?.knowledgeBase.enabled && (\n              <ChatKnowledge\n                config={bsConfig}\n                searchType={searchType}\n                setSearchType={setSearchType}\n                disabled={!!files.size || readOnly || isNetSearchOn}\n                selectedOrgKbs={selectedOrgKbs}\n                setSelectedOrgKbs={setSelectedOrgKbs}\n                enableOrgKb={enableOrgKb}\n                setEnableOrgKb={setEnableOrgKb}\n              />\n            )}\n            <ChatToolDown\n              tools={tools}\n              setTools={setTools}\n              linsi={isLingsi}\n              config={bsConfig}\n              searchType={searchType}\n              setSearchType={setSearchType}\n              disabled={!!files.size || readOnly || isKnowledgeOn}\n            />\n          </div>\n        </div>\n        {/* 气泡 */}\n        <div\n          className={cn(\n            \"absolute w-full rounded-b-[28px] pt-10 -bottom-10 flex justify-between\",\n            \"bg-gradient-to-b from-[#DEE8FF] via-[#DEE8FF] to-[rgba(222,232,255,0.4)]\",\n            \"backdrop-blur-sm\", // 添加毛玻璃效果\n            \"transition-[opacity,transform] duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]\",\n            \"border border-opacity-10 border-[#143BFF]\", // 添加边框和阴影\n            isLingsi ? \"opacity-100\" : \"opacity-0 pointer-events-none\",\n            isLingsi ? \"translate-y-0\" : \"translate-y-2\" // 整体轻微上浮\n          )}\n        >\n          <p\n            className={cn(\n              \"py-2.5 px-1.5 text-sm text-[#6C7EC5] flex items-center\",\n              \"transition-all duration-300 ease-out delay-200\",\n              \"rounded-full mx-4\", // 文字背景\n              isLingsi\n                ? \"translate-y-0 opacity-100\"\n                : \"-translate-y-3 opacity-0\"\n            )}\n          >\n            <div className=\"relative h-3.5 mr-4\">\n              <div className=\"size-1.5 rounded-full bg-[#4A5AA1] absolute -left-1 top-0\"></div>\n              <div className=\"w-0.5 h-3 bg-[#4A5AA1] absolute -rotate-45\"></div>\n              <div className=\"size-1.5 rounded-full bg-[#4A5AA1] absolute bottom-0 left-0.5\"></div>\n            </div>\n            {localize(\"com_linsight_tagline\")}\n          </p>\n          {bsConfig?.linsight_invitation_code && (\n            <div className=\"flex gap-4 items-center pr-6\">\n              <span className=\"text-xs text-gray-500\">\n                {localize(\"com_linsight_remaining_times\", { count })}\n              </span>\n              {!count && (\n                <Button\n                  size=\"sm\"\n                  className=\"h-6 text-xs\"\n                  onClick={() => setShowCode(true)}\n                >\n                  {localize(\"com_linsight_activate\")}\n                </Button>\n              )}\n            </div>\n          )}\n        </div>\n      </div>\n    </form>\n  );\n};\n\nconst ModelSelect = ({\n  options,\n  value,\n  disabled,\n  onChange,\n}: {\n  options?: BsConfig[\"models\"];\n  disabled: boolean;\n  value: number;\n  onChange: (value: string) => void;\n}) => {\n  const label = useMemo(() => {\n    if (!options || options.length === 0 || value == null) return \"\";\n\n    const currentOpt = options.find((opt) => String(opt.id) === String(value));\n    return currentOpt?.displayName ?? \"\";\n  }, [options, value]);\n\n  useEffect(() => {\n    if (!options || options.length === 0) return;\n\n    // 当前值是否在 options 里\n    const hasCurrent = options.find((opt) => String(opt.id) === String(value));\n\n    // 没有值 / 值不合法时，默认选中第一个\n    if (!hasCurrent) {\n      onChange(String(options[0].id));\n    } else {\n      onChange(hasCurrent.id);\n    }\n  }, [options, value]);\n\n  return (\n    <Select\n      value={useMemo(() => value + \"\", [value])}\n      disabled={disabled}\n      onValueChange={onChange}\n    >\n      <SelectTrigger className=\"h-7 rounded-full px-2 bg-white dark:bg-transparent\">\n        <div className=\"flex gap-2\">\n          <Rotate3DIcon size=\"16\" />\n          <span className=\"text-xs font-normal\">{label}</span>\n        </div>\n      </SelectTrigger>\n      <SelectContent className=\"bg-white\">\n        {options?.map((opt) => (\n          <SelectItem key={opt.key} value={opt.id + \"\"}>\n            {opt.displayName}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n\nexport default memo(ChatForm);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/ChatFormTools.tsx",
    "content": "import {\n  FileText,\n  GlobeIcon,\n  Hammer,\n  KeyRound,\n  Pencil,\n  Settings2Icon,\n} from \"lucide-react\";\nimport { useEffect, useMemo } from \"react\";\nimport { useRecoilValue } from \"recoil\";\nimport { Switch } from \"~/components/ui\";\nimport { Select, SelectContent, SelectTrigger } from \"~/components/ui/Select\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"~/components/ui/Tooltip2\";\nimport { useGetBsConfig, useModelBuilding } from \"~/data-provider\";\nimport { useLocalize } from \"~/hooks\";\nimport store from \"~/store\";\n\nimport { BsConfig } from \"~/data-provider/data-provider/src\";\nimport { cn } from \"~/utils\";\n\n// 工具\nexport const ChatToolDown = ({\n  linsi,\n  tools,\n  setTools,\n  config,\n  searchType,\n  setSearchType,\n  disabled,\n}: {\n  linsi: boolean;\n  config?: BsConfig;\n  searchType: string;\n  setSearchType: (type: string) => void;\n  disabled: boolean;\n}) => {\n  const [building] = useModelBuilding();\n  const localize = useLocalize();\n\n  // 每次重置工具\n  useEffect(() => {\n    setSearchType(\"\");\n  }, []);\n\n  if (!linsi && !config?.webSearch.enabled) return null;\n  if (linsi) return <LinsiTools tools={tools} setTools={setTools} />;\n\n  return (\n    <Select disabled={disabled}>\n      <SelectTrigger\n        className={cn(\n          \"h-7 rounded-full px-2 data-[state=open]:border-blue-500\",\n          searchType === \"netSearch\" && \"bg-blue-100\"\n        )}\n      >\n        <div\n          className={cn(\n            \"flex gap-2\",\n            searchType === \"netSearch\" && \"text-blue-600\"\n          )}\n        >\n          <Settings2Icon size=\"16\" />\n          <span className=\"text-xs font-normal\">\n            {localize(\"com_tools_title\")}\n          </span>\n        </div>\n      </SelectTrigger>\n      <SelectContent className=\"bg-white rounded-xl p-2 w-52\">\n        {config?.webSearch.enabled && (\n          <div className=\"flex justify-between\">\n            <div className=\"flex gap-2 items-center\">\n              <GlobeIcon className=\"\" size=\"16\" />\n              <span className=\"text-xs font-normal\">\n                {localize(\"com_tools_web_search\")}\n              </span>\n            </div>\n            <Switch\n              className=\"data-[state=checked]:bg-blue-600\"\n              disabled={disabled}\n              checked={searchType === \"netSearch\"}\n              onCheckedChange={(val) => {\n                if (searchType === \"netSearch\") {\n                  setSearchType(\"\");\n                } else {\n                  setSearchType(\"netSearch\");\n                }\n              }}\n            ></Switch>\n          </div>\n        )}\n      </SelectContent>\n    </Select>\n  );\n};\n\nconst LinsiTools = ({ tools, setTools }) => {\n  const { data: bsConfig } = useGetBsConfig();\n  const localize = useLocalize();\n  const lang = useRecoilValue(store.lang);\n\n  useEffect(() => {\n    const defaultTools = [\n      {\n        id: \"pro_knowledge\",\n        name: localize(\"com_tools_org_knowledge\"),\n        icon: <KeyRound size=\"16\" />,\n        checked: true,\n      },\n      {\n        id: \"knowledge\",\n        name: localize(\"com_tools_personal_knowledge\"),\n        icon: <Pencil size=\"16\" />,\n        checked: true,\n      },\n    ];\n    if (bsConfig) {\n      const tools = bsConfig.linsightConfig?.tools || [];\n      const newTools = tools.map((tool) => ({\n        id: tool.id,\n        name: tool.name,\n        icon: <Hammer size=\"16\" />,\n        checked: true,\n        data: tool,\n      }));\n      setTools((tools) => [...defaultTools, ...newTools]);\n    }\n  }, [bsConfig, lang]);\n\n  const active = useMemo(() => tools.some((tool) => tool.checked), [tools]);\n\n  return (\n    <Select>\n      <SelectTrigger className=\"h-7 rounded-full px-2 bg-white dark:bg-transparent data-[state=open]:border-blue-500\">\n        <div className={cn(\"flex gap-2\", active && \"text-blue-600\")}>\n          <Settings2Icon size=\"16\" />\n          <span className=\"text-xs font-normal\">\n            {localize(\"com_tools_title\")}\n          </span>\n        </div>\n      </SelectTrigger>\n      <SelectContent className=\"bg-white rounded-xl p-2 w-64\">\n        {tools.map((tool) => {\n          return (\n            <div key={tool.name} className=\"flex justify-between mb-3.5\">\n              <div className=\"flex gap-2 items-center\">\n                {tool.icon}\n                <span className=\"max-w-36 text-xs font-normal line-clamp-1 flex-1 grow overflow-hidden\">\n                  {tool.name}\n                </span>\n              </div>\n              <Switch\n                className=\"data-[state=checked]:bg-blue-600\"\n                checked={tool.checked}\n                onCheckedChange={(val) =>\n                  setTools(\n                    tools.map((t) =>\n                      t.id === tool.id ? { ...t, checked: val } : t\n                    )\n                  )\n                }\n              ></Switch>\n            </div>\n          );\n        })}\n      </SelectContent>\n    </Select>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/ChatKnowledge.tsx",
    "content": "import { useEffect, useState, useMemo } from \"react\";\nimport {\n  Check,\n  BookOpen,\n  BookOpenText,\n  Loader2,\n  SearchIcon,\n} from \"lucide-react\";\nimport { Switch, Input } from \"~/components/ui\";\nimport { Select, SelectContent, SelectTrigger } from \"~/components/ui/Select\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"~/components/ui/Tooltip2\";\nimport { useLocalize } from \"~/hooks\";\nimport { useGetOrgToolList, useModelBuilding } from \"~/data-provider\";\nimport { BsConfig } from \"~/data-provider/data-provider/src\";\nimport { cn } from \"~/utils\";\nimport { useToastContext } from \"~/Providers\";\n\n// Custom Hook: Debounce value\nfunction useDebounce<T>(value: T, delay: number): T {\n  const [debouncedValue, setDebouncedValue] = useState<T>(value);\n  useEffect(() => {\n    const handler = setTimeout(() => setDebouncedValue(value), delay);\n    return () => clearTimeout(handler);\n  }, [value, delay]);\n  return debouncedValue;\n}\nconst PERSONAL_KB = {\n  id: \"personal_knowledge_base\",\n  name: \"个人知识库\",\n};\nexport const ChatKnowledge = ({\n  config,\n  disabled,\n  searchType,\n  setSearchType,\n  enableOrgKb,\n  setEnableOrgKb,\n  selectedOrgKbs,\n  setSelectedOrgKbs,\n}: {\n  config?: BsConfig;\n  disabled: boolean;\n  searchType: string;\n  setSearchType: React.Dispatch<React.SetStateAction<string>>;\n  enableOrgKb: boolean;\n  setEnableOrgKb: (v: boolean) => void;\n  selectedOrgKbs: { id: string; name: string }[];\n  setSelectedOrgKbs: React.Dispatch<\n    React.SetStateAction<{ id: string; name: string }[]>\n  >;\n}) => {\n  const [building] = useModelBuilding();\n  const localize = useLocalize();\n  const PAGE_SIZE = 20;\n  const MAX_ORG_KB = 50;\n\n  // Search and Pagination State\n  const [keyword, setKeyword] = useState(\"\");\n  const debouncedKeyword = useDebounce(keyword, 500);\n  const [page, setPage] = useState(1);\n  const [allOrgKbs, setAllOrgKbs] = useState<any[]>([]);\n  const [hasMore, setHasMore] = useState(true);\n  const { showToast } = useToastContext();\n\n  // Fetch Data\n  const { data: currentPageData, isFetching } = useGetOrgToolList({\n    page,\n    page_size: PAGE_SIZE,\n    name: debouncedKeyword,\n  });\n\n  // Reset list when search keyword changes\n  useEffect(() => {\n    setPage(1);\n    setAllOrgKbs([]);\n    setHasMore(true);\n  }, [debouncedKeyword]);\n\n  // Accumulate data when page or response changes\n  useEffect(() => {\n    if (currentPageData) {\n      setAllOrgKbs((prev) => {\n        if (page === 1) return [...currentPageData];\n        const newItems = currentPageData.filter(\n          (item: any) => !prev.some((p) => p.id === item.id)\n        );\n        return [...prev, ...newItems];\n      });\n      setHasMore(currentPageData.length === PAGE_SIZE);\n    }\n  }, [currentPageData, page, debouncedKeyword]);\n\n  // Infinite Scroll Handler\n  const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n    const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;\n    if (\n      scrollHeight - scrollTop <= clientHeight + 10 &&\n      !isFetching &&\n      hasMore\n    ) {\n      setPage((prev) => prev + 1);\n    }\n  };\n\n  const toggleOrgKb = (kb: { id: string; name: string }) => {\n    setSelectedOrgKbs((prev) => {\n      const exists = prev.some((i) => i.id === kb.id);\n      if (exists) return prev.filter((i) => i.id !== kb.id);\n      if (prev.length >= MAX_ORG_KB) {\n        showToast({\n          message: localize(\"kbLimitReached\"),\n          status: \"error\",\n        });\n        return prev;\n      }\n      return [{ id: kb.id, name: kb.name }, ...prev];\n    });\n  };\n  useEffect(() => {\n    setSelectedOrgKbs((prev) => {\n      const filtered = prev.filter((kb) => kb.id !== PERSONAL_KB.id);\n      return searchType === \"knowledgeSearch\" ? [...filtered, PERSONAL_KB] : filtered;\n    });\n  }, [searchType]);\n\n  useEffect(() => {\n    if (!enableOrgKb) {\n      // 仅删除组织 KB\n      setSelectedOrgKbs((prev) =>\n        prev.filter((kb) => kb.id === PERSONAL_KB.id || kb.id === PERSONAL_KB.id)\n      );\n    }\n  }, [enableOrgKb, setSelectedOrgKbs]);\n\n  useEffect(() => {\n    if (!selectedOrgKbs.length && !enableOrgKb) {\n      setSelectedOrgKbs([]);\n      setEnableOrgKb(false);\n    }\n  }, []);\n\n  return (\n    <Select disabled={disabled}>\n      <SelectTrigger\n        className={cn(\n          \"h-7 rounded-full px-2 data-[state=open]:border-blue-500\",\n          (searchType === \"knowledgeSearch\" || enableOrgKb) && \"bg-blue-100\"\n        )}\n      >\n        <div\n          className={cn(\n            \"flex gap-2 items-center \",\n            (searchType === \"knowledgeSearch\" || enableOrgKb) && \"text-blue-600\"\n          )}\n        >\n          <BookOpenText size={16} />\n          <span className=\"text-xs\">\n            {localize(\"com_tools_knowledge_base\")}\n          </span>\n        </div>\n      </SelectTrigger>\n\n      <SelectContent className=\"bg-white rounded-xl p-3 w-64 shadow-lg border\">\n        {/* Section 1: Personal Knowledge Base */}\n\n        <div className=\"flex justify-between items-center\">\n          <div className=\"flex gap-2 items-center\">\n            <BookOpen\n              size={16}\n              color=\"#595959\"\n              strokeWidth={2.75}\n              className=\"text-slate-500\"\n            />\n            <span className=\"text-xs font-medium\">\n              {localize(\"com_tools_personal_knowledge\")}\n            </span>\n          </div>\n          <Tooltip delayDuration={200}>\n            <TooltipTrigger asChild>\n              <div>\n                <Switch\n                  className=\"data-[state=checked]:bg-blue-600\"\n                  disabled={building || disabled}\n                  checked={searchType === \"knowledgeSearch\"}\n                  onCheckedChange={(val) =>\n                    setSearchType(val ? \"knowledgeSearch\" : \"\")\n                  }\n                />\n              </div>\n            </TooltipTrigger>\n            {building && (\n              <TooltipContent>\n                {localize(\"com_tools_knowledge_rebuilding\")}\n              </TooltipContent>\n            )}\n          </Tooltip>\n        </div>\n\n        {/* Section 2: Organization Knowledge Base */}\n        <div className=\"flex justify-between items-center mt-3  -ml-0.5\">\n          <div className=\"flex gap-2 items-center\">\n            <img\n              className=\"size-5 text-slate-500\"\n              src={__APP_ENV__.BASE_URL + \"/assets/books.svg\"}\n              alt=\"\"\n            />\n            <span className=\"text-xs font-medium\">\n              {localize(\"com_tools_org_knowledge\")}\n            </span>\n          </div>\n          <Switch\n            checked={enableOrgKb}\n            onCheckedChange={setEnableOrgKb}\n            disabled={disabled}\n            className=\"data-[state=checked]:bg-blue-600\"\n          />\n        </div>\n\n        {/* Org KB Search and List */}\n        {enableOrgKb && (\n          <div className=\"mt-3\">\n            <div className=\"relative\">\n              <Input\n                className=\"h-8 text-xs mb-2 bg-slate-50 border-none focus-visible:ring-1 focus-visible:ring-blue-500 pr-8\" // 新增 pr-8 给图标留空间\n                placeholder={localize(\"com_tools_knowledge_base_search\")}\n                value={keyword}\n                onChange={(e) => setKeyword(e.target.value)}\n              />\n              {/* 搜索图标 - 固定在输入框右侧 */}\n              <SearchIcon\n                className=\"absolute right-2 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\"\n                aria-hidden=\"true\"\n              />\n            </div>\n\n            <div\n              className=\"max-h-52 overflow-y-auto custom-scrollbar\"\n              onScroll={handleScroll}\n            >\n              {allOrgKbs.map((item) => {\n                const checked = selectedOrgKbs.some((kb) => kb.id === item.id);\n                return (\n                  <div\n                    key={item.id}\n                    onClick={() => toggleOrgKb(item)}\n                    className=\"flex justify-between items-center px-2 py-2 rounded-md cursor-pointer text-xs hover:bg-slate-50 group\"\n                  >\n                    <span className=\"truncate flex-1 pr-2 text-slate-700\">\n                      {item.name}\n                    </span>\n                    {checked && (\n                      <Check size={14} className=\"text-blue-600 shrink-0\" />\n                    )}\n                  </div>\n                );\n              })}\n\n              {/* Loading & Empty State Feedback */}\n              {isFetching && (\n                <div className=\"flex justify-center py-2\">\n                  <Loader2 size={14} className=\"animate-spin text-slate-400\" />\n                </div>\n              )}\n\n              {/* {allOrgKbs.length === 0 && (\n                <div className=\"text-center text-[10px] text-slate-400 py-2 border-t mt-1\">\n                  {localize(\"com_tools_no_more\")}\n                </div>\n              )} */}\n\n              {!isFetching && allOrgKbs.length === 0 && (\n                <div className=\"text-center text-xs text-slate-400 py-6\">\n                  {localize(\"com_tools_no_results\")}\n                </div>\n              )}\n            </div>\n          </div>\n        )}\n      </SelectContent>\n    </Select>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/CircleRender.tsx",
    "content": "import React from 'react';\nimport { CircleIcon, CircleDotsIcon } from '~/components/svg';\nimport { ECallState } from '~/data-provider/data-provider/src';\n\nconst CircleRender = ({ rmsLevel, isCameraOn, state }) => {\n  const getIconComponent = (state) => {\n    switch (state) {\n      case ECallState.Thinking:\n        return <CircleDotsIcon />;\n      default:\n        return (\n          <div className=\"smooth-transition\" style={{ transform: `scale(${transformScale})` }}>\n            <CircleIcon state={state} size=\"256\" />\n          </div>\n        );\n    }\n  };\n\n  const baseScale = isCameraOn ? 0.5 : 1;\n  const scaleMultiplier =\n    rmsLevel > 0.08\n      ? 1.8\n      : rmsLevel > 0.07\n        ? 1.6\n        : rmsLevel > 0.05\n          ? 1.4\n          : rmsLevel > 0.01\n            ? 1.2\n            : 1;\n\n  const transformScale = baseScale * scaleMultiplier;\n\n  return getIconComponent(state);\n};\n\nexport default CircleRender;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/CollapseChat.tsx",
    "content": "import React from 'react';\nimport { Minimize2 } from 'lucide-react';\nimport { TooltipAnchor } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nconst CollapseChat = ({\n  isScrollable,\n  isCollapsed,\n  setIsCollapsed,\n}: {\n  isScrollable: boolean;\n  isCollapsed: boolean;\n  setIsCollapsed: React.Dispatch<React.SetStateAction<boolean>>;\n}) => {\n  const localize = useLocalize();\n  if (!isScrollable) {\n    return null;\n  }\n\n  if (isCollapsed) {\n    return null;\n  }\n\n  return (\n    <TooltipAnchor\n      role=\"button\"\n      description={localize('com_ui_collapse_chat')}\n      aria-label={localize('com_ui_collapse_chat')}\n      onClick={() => setIsCollapsed(true)}\n      className={cn(\n        'absolute right-2 top-2 z-10 size-[35px] rounded-full p-2 transition-colors',\n        'hover:bg-surface-hover focus:outline-none focus:ring-2 focus:ring-primary focus:ring-opacity-50',\n      )}\n    >\n      <Minimize2 className=\"h-full w-full\" />\n    </TooltipAnchor>\n  );\n};\n\nexport default CollapseChat;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/AttachFile.tsx",
    "content": "import React, { useRef } from 'react';\nimport { FileUpload, TooltipAnchor } from '~/components/ui';\nimport { AttachmentIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nconst AttachFile = ({\n  isRTL,\n  accept = '',\n  disabled,\n  showVoice,\n  handleFileChange,\n}: {\n  isRTL: boolean;\n  accept?: string;\n  disabled?: boolean | null;\n  showVoice?: boolean;\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const localize = useLocalize();\n  const inputRef = useRef<HTMLInputElement>(null);\n  const isUploadDisabled = disabled ?? false;\n\n  return (\n    <FileUpload ref={inputRef} accept={accept} handleFileChange={handleFileChange}>\n      <TooltipAnchor\n        role=\"button\"\n        id=\"attach-file\"\n        aria-label={localize('com_sidepanel_attach_files')}\n        disabled={isUploadDisabled}\n        className={cn(\n          'absolute flex size-[35px] items-center justify-center rounded-full p-1 transition-colors hover:bg-surface-hover focus:outline-none focus:ring-2 focus:ring-primary focus:ring-opacity-50',\n          isRTL ? 'bottom-1.5 right-2' : 'bottom-1.5 right-14',\n          showVoice && 'right-[94px]'\n        )}\n        description={localize('com_sidepanel_attach_files')}\n        onKeyDownCapture={(e) => {\n          if (!inputRef.current) {\n            return;\n          }\n          if (e.key === 'Enter' || e.key === ' ') {\n            inputRef.current.value = '';\n            inputRef.current.click();\n          }\n        }}\n        onClick={() => {\n          if (!inputRef.current) {\n            return;\n          }\n          inputRef.current.value = '';\n          inputRef.current.click();\n        }}\n      >\n        <div className=\"flex w-full items-center justify-center gap-2\">\n          <AttachmentIcon className={cn(isUploadDisabled && 'text-gray-300')} />\n        </div>\n      </TooltipAnchor>\n    </FileUpload>\n  );\n};\n\nexport default React.memo(AttachFile);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/AttachFileMenu.tsx",
    "content": "import * as Ariakit from '@ariakit/react';\nimport React, { useRef, useState, useMemo } from 'react';\nimport { FileSearch, ImageUpIcon, TerminalSquareIcon } from 'lucide-react';\nimport { EToolResources, EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { FileUpload, TooltipAnchor, DropdownPopup } from '~/components/ui';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { AttachmentIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\ninterface AttachFileProps {\n  isRTL: boolean;\n  disabled?: boolean | null;\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>, toolResource?: string) => void;\n}\n\nconst AttachFile = ({ isRTL, disabled, handleFileChange }: AttachFileProps) => {\n  const localize = useLocalize();\n  const isUploadDisabled = disabled ?? false;\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [isPopoverActive, setIsPopoverActive] = useState(false);\n  const [toolResource, setToolResource] = useState<EToolResources | undefined>();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n\n  const capabilities = useMemo(\n    () => endpointsConfig?.[EModelEndpoint.agents]?.capabilities ?? [],\n    [endpointsConfig],\n  );\n\n  const handleUploadClick = (isImage?: boolean) => {\n    if (!inputRef.current) {\n      return;\n    }\n    inputRef.current.value = '';\n    inputRef.current.accept = isImage === true ? 'image/*' : '';\n    inputRef.current.click();\n    inputRef.current.accept = '';\n  };\n\n  const dropdownItems = useMemo(() => {\n    const items = [\n      {\n        label: localize('com_ui_upload_image_input'),\n        onClick: () => {\n          setToolResource(undefined);\n          handleUploadClick(true);\n        },\n        icon: <ImageUpIcon className=\"icon-md\" />,\n      },\n    ];\n\n    if (capabilities.includes(EToolResources.file_search)) {\n      items.push({\n        label: localize('com_ui_upload_file_search'),\n        onClick: () => {\n          setToolResource(EToolResources.file_search);\n          handleUploadClick();\n        },\n        icon: <FileSearch className=\"icon-md\" />,\n      });\n    }\n\n    if (capabilities.includes(EToolResources.execute_code)) {\n      items.push({\n        label: localize('com_ui_upload_code_files'),\n        onClick: () => {\n          setToolResource(EToolResources.execute_code);\n          handleUploadClick();\n        },\n        icon: <TerminalSquareIcon className=\"icon-md\" />,\n      });\n    }\n\n    return items;\n  }, [capabilities, localize, setToolResource]);\n\n  const menuTrigger = (\n    <TooltipAnchor\n      render={\n        <Ariakit.MenuButton\n          disabled={isUploadDisabled}\n          id=\"attach-file-menu-button\"\n          aria-label=\"Attach File Options\"\n          className={cn(\n            'absolute flex size-[35px] items-center justify-center rounded-full p-1 transition-colors hover:bg-surface-hover focus:outline-none focus:ring-2 focus:ring-primary focus:ring-opacity-50',\n            isRTL ? 'bottom-2 right-2' : 'bottom-2 left-1 md:left-2',\n          )}\n        >\n          <div className=\"flex w-full items-center justify-center gap-2\">\n            <AttachmentIcon />\n          </div>\n        </Ariakit.MenuButton>\n      }\n      id=\"attach-file-menu-button\"\n      description={localize('com_sidepanel_attach_files')}\n      disabled={isUploadDisabled}\n    />\n  );\n\n  return (\n    <FileUpload\n      ref={inputRef}\n      handleFileChange={(e) => {\n        handleFileChange(e, toolResource);\n      }}\n    >\n      <div className=\"relative select-none\">\n        <DropdownPopup\n          menuId=\"attach-file-menu\"\n          isOpen={isPopoverActive}\n          setIsOpen={setIsPopoverActive}\n          modal={true}\n          trigger={menuTrigger}\n          items={dropdownItems}\n          iconClassName=\"mr-0\"\n        />\n      </div>\n    </FileUpload>\n  );\n};\n\nexport default React.memo(AttachFile);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/DragDropModal.tsx",
    "content": "import React, { useMemo } from 'react';\nimport { EModelEndpoint, EToolResources } from '~/data-provider/data-provider/src';\nimport { FileSearch, ImageUpIcon, TerminalSquareIcon } from 'lucide-react';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport useLocalize from '~/hooks/useLocalize';\nimport { OGDialog } from '~/components/ui';\n\ninterface DragDropModalProps {\n  onOptionSelect: (option: string | undefined) => void;\n  files: File[];\n  isVisible: boolean;\n  setShowModal: (showModal: boolean) => void;\n}\n\ninterface FileOption {\n  label: string;\n  value?: EToolResources;\n  icon: React.JSX.Element;\n  condition?: boolean;\n}\n\nconst DragDropModal = ({ onOptionSelect, setShowModal, files, isVisible }: DragDropModalProps) => {\n  const localize = useLocalize();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const capabilities = useMemo(\n    () => endpointsConfig?.[EModelEndpoint.agents]?.capabilities ?? [],\n    [endpointsConfig],\n  );\n\n  const options = useMemo(() => {\n    const _options: FileOption[] = [\n      {\n        label: localize('com_ui_upload_image_input'),\n        value: undefined,\n        icon: <ImageUpIcon className=\"icon-md\" />,\n        condition: files.every((file) => file.type.startsWith('image/')),\n      },\n    ];\n    for (const capability of capabilities) {\n      if (capability === EToolResources.file_search) {\n        _options.push({\n          label: localize('com_ui_upload_file_search'),\n          value: EToolResources.file_search,\n          icon: <FileSearch className=\"icon-md\" />,\n        });\n      } else if (capability === EToolResources.execute_code) {\n        _options.push({\n          label: localize('com_ui_upload_code_files'),\n          value: EToolResources.execute_code,\n          icon: <TerminalSquareIcon className=\"icon-md\" />,\n        });\n      }\n    }\n\n    return _options;\n  }, [capabilities, files, localize]);\n\n  if (!isVisible) {\n    return null;\n  }\n\n  return (\n    <OGDialog open={isVisible} onOpenChange={setShowModal}>\n      <OGDialogTemplate\n        title={localize('com_ui_upload_type')}\n        className=\"w-11/12 sm:w-[440px] md:w-[400px] lg:w-[360px]\"\n        main={\n          <div className=\"flex flex-col gap-2\">\n            {options.map(\n              (option, index) =>\n                option.condition !== false && (\n                  <button\n                    key={index}\n                    onClick={() => onOptionSelect(option.value)}\n                    className=\"flex items-center gap-2 rounded-lg p-2 hover:bg-surface-active-alt\"\n                  >\n                    {option.icon}\n                    <span>{option.label}</span>\n                  </button>\n                ),\n            )}\n          </div>\n        }\n      />\n    </OGDialog>\n  );\n};\n\nexport default DragDropModal;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/DragDropOverlay.tsx",
    "content": "import { useLocalize } from \"~/hooks\";\n\nexport const DragDropOverlayIcon = () => {\n  return <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 132 108\"\n    fill=\"none\"\n    width=\"132\"\n    height=\"108\"\n  >\n    <g clipPath=\"url(#clip0_3605_64419)\">\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M25.2025 29.3514C10.778 33.2165 8.51524 37.1357 11.8281 49.4995L13.4846 55.6814C16.7975 68.0453 20.7166 70.308 35.1411 66.443L43.3837 64.2344C57.8082 60.3694 60.0709 56.4502 56.758 44.0864L55.1016 37.9044C51.7887 25.5406 47.8695 23.2778 33.445 27.1428L29.3237 28.2471L25.2025 29.3514ZM18.1944 42.7244C18.8572 41.5764 20.325 41.1831 21.4729 41.8459L27.3517 45.24C28.4996 45.9027 28.8929 47.3706 28.2301 48.5185L24.836 54.3972C24.1733 55.5451 22.7054 55.9384 21.5575 55.2757C20.4096 54.613 20.0163 53.1451 20.6791 51.9972L22.8732 48.1969L19.0729 46.0028C17.925 45.3401 17.5317 43.8723 18.1944 42.7244ZM29.4091 56.3843C29.066 55.104 29.8258 53.7879 31.1062 53.4449L40.3791 50.9602C41.6594 50.6172 42.9754 51.377 43.3184 52.6573C43.6615 53.9376 42.9017 55.2536 41.6214 55.5967L32.3485 58.0813C31.0682 58.4244 29.7522 57.6646 29.4091 56.3843Z\"\n        fill=\"#AFC1FF\"\n      />\n    </g>\n    <g clipPath=\"url(#clip1_3605_64419)\">\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M86.8124 13.4036C81.0973 11.8722 78.5673 13.2649 77.0144 19.0603L68.7322 49.97C67.1793 55.7656 68.5935 58.2151 74.4696 59.7895L97.4908 65.958C103.367 67.5326 105.816 66.1184 107.406 60.1848L115.393 30.379C115.536 29.8456 115.217 29.2959 114.681 29.16C113.478 28.8544 112.435 28.6195 111.542 28.4183C106.243 27.2253 106.22 27.2201 109.449 20.7159C109.73 20.1507 109.426 19.4638 108.816 19.3004L86.8124 13.4036ZM87.2582 28.4311C86.234 28.1567 85.1812 28.7645 84.9067 29.7888C84.6323 30.813 85.2401 31.8658 86.2644 32.1403L101.101 36.1158C102.125 36.3902 103.178 35.7824 103.453 34.7581C103.727 33.7339 103.119 32.681 102.095 32.4066L87.2582 28.4311ZM82.9189 37.2074C83.1934 36.1831 84.2462 35.5753 85.2704 35.8497L100.107 39.8252C101.131 40.0996 101.739 41.1524 101.465 42.1767C101.19 43.201 100.137 43.8088 99.1132 43.5343L84.2766 39.5589C83.2523 39.2844 82.6445 38.2316 82.9189 37.2074ZM83.2826 43.2683C82.2584 42.9939 81.2056 43.6017 80.9311 44.626C80.6567 45.6502 81.2645 46.703 82.2888 46.9775L89.7071 48.9652C90.7313 49.2396 91.7841 48.6318 92.0586 47.6076C92.333 46.5833 91.7252 45.5305 90.7009 45.256L83.2826 43.2683Z\"\n        fill=\"#7989FF\"\n      />\n    </g>\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M40.4004 71.8426C40.4004 57.2141 44.0575 53.5569 61.1242 53.5569H66.0004H70.8766C87.9432 53.5569 91.6004 57.2141 91.6004 71.8426V79.1569C91.6004 93.7855 87.9432 97.4426 70.8766 97.4426H61.1242C44.0575 97.4426 40.4004 93.7855 40.4004 79.1569V71.8426ZM78.8002 67.4995C78.8002 70.1504 76.6512 72.2995 74.0002 72.2995C71.3492 72.2995 69.2002 70.1504 69.2002 67.4995C69.2002 64.8485 71.3492 62.6995 74.0002 62.6995C76.6512 62.6995 78.8002 64.8485 78.8002 67.4995ZM60.7204 70.8597C60.2672 70.2553 59.5559 69.8997 58.8004 69.8997C58.045 69.8997 57.3337 70.2553 56.8804 70.8597L47.2804 83.6597C46.4851 84.72 46.7 86.2244 47.7604 87.0197C48.8208 87.8149 50.3251 87.6 51.1204 86.5397L58.8004 76.2997L66.4804 86.5397C66.8979 87.0962 67.5363 87.4443 68.2303 87.4936C68.9243 87.5429 69.6055 87.2887 70.0975 86.7967L74.8004 82.0938L79.5034 86.7967C80.4406 87.734 81.9602 87.734 82.8975 86.7967C83.8347 85.8595 83.8347 84.3399 82.8975 83.4026L76.4975 77.0026C75.5602 76.0653 74.0406 76.0653 73.1034 77.0026L68.6601 81.4459L60.7204 70.8597Z\"\n      fill=\"#3C46FF\"\n    />\n    <defs>\n      <clipPath id=\"clip0_3605_64419\">\n        <rect\n          width=\"56\"\n          height=\"56\"\n          fill=\"white\"\n          transform=\"translate(0 26.9939) rotate(-15)\"\n        />\n      </clipPath>\n      <clipPath id=\"clip1_3605_64419\">\n        <rect\n          width=\"64\"\n          height=\"64\"\n          fill=\"white\"\n          transform=\"translate(69.5645 0.5) rotate(15)\"\n        />\n      </clipPath>\n    </defs>\n  </svg>\n};\n\n\nexport default function DragDropOverlay() {\n  const localize = useLocalize();\n\n  return (\n    <div\n      className=\"bg-surface-primary/85 fixed inset-0 z-[9999] flex flex-col items-center justify-center\n        gap-2 text-text-primary\n        backdrop-blur-[4px] transition-all duration-200\n        ease-in-out animate-in fade-in\n        zoom-in-95 hover:backdrop-blur-sm\"\n    >\n      <DragDropOverlayIcon />\n      <h3>{localize('com_addAnything')}</h3>\n      <h4>{localize('com_dropAnyFileToAdd')}</h4>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/DragDropWrapper.tsx",
    "content": "import DragDropModal from '~/components/Chat/Input/Files/DragDropModal';\nimport DragDropOverlay from '~/components/Chat/Input/Files/DragDropOverlay';\nimport { useDragHelpers } from '~/hooks';\nimport { cn } from '~/utils';\n\ninterface DragDropWrapperProps {\n  children: React.ReactNode;\n  className?: string;\n  isLingsi: boolean;\n}\n\nexport default function DragDropWrapper({ isLingsi, children, className }: DragDropWrapperProps) {\n  const { isOver, canDrop, drop, showModal, setShowModal, draggedFiles, handleOptionSelect } =\n    useDragHelpers(isLingsi);\n\n  const isActive = canDrop && isOver;\n\n  return (\n    <div ref={drop} className={cn('relative flex h-full w-full', className)}>\n      {children}\n      {isActive && <DragDropOverlay />}\n      <DragDropModal\n        files={draggedFiles}\n        isVisible={showModal}\n        setShowModal={setShowModal}\n        onOptionSelect={handleOptionSelect}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FileContainer.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport FilePreview from './FilePreview';\nimport RemoveFile from './RemoveFile';\nimport { getFileType } from '~/utils';\nimport { getFileTypebyFileName } from '~/components/ui/icon/File/FileIcon';\nimport { useMemo } from 'react';\n\nconst FileContainer = ({\n  file,\n  onDelete,\n}: {\n  file: ExtendedFile | TFile;\n  onDelete?: () => void;\n}) => {\n\n  // 聊天框兼容展示文件名\n  const currentFile = useMemo(() => {\n    if (!file.filename && file.filepath) {\n      const fileName = file.filepath.split('/').pop()?.split('?').shift() || '';\n      return {\n        ...file,\n        filename: decodeURIComponent(fileName),\n      };\n    }\n    return file;\n  }, [file]);\n\n  function getFileSuffix(file) {\n    if (file.type) {\n      return file.type;\n    }\n\n    if (!file.filename) return 'artifact';\n\n    // Extract file extension\n    const extension = file.filename.split('.').pop().toLowerCase();\n\n    // Match extensions to types\n    switch (extension) {\n      case 'txt':\n      case 'md':\n      case 'html':\n      case 'htm':\n        return 'text';\n\n      case 'csv':\n        return 'csv';\n\n      case 'pdf':\n        return 'pdf';\n\n      default:\n        return 'file';\n    }\n  }\n\n  const fileType = getFileType(getFileSuffix(file));\n\n  return (\n    <div className=\"group relative inline-block text-sm text-text-primary\">\n      <div className=\"relative overflow-hidden rounded-2xl border\">\n        <div className=\"w-56 bg-white p-2\">\n          <div className=\"flex flex-row items-center gap-2\">\n            <FilePreview file={currentFile} fileType={fileType} className=\"relative\" />\n            <div className=\"overflow-hidden\">\n              <div className=\"truncate font-bold\" title={currentFile.filename}>\n                {currentFile.filename}\n              </div>\n              <div className=\"truncate text-text-secondary\" title={fileType.title}>\n                {currentFile.filename && getFileTypebyFileName(currentFile.filename)}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      {onDelete && <RemoveFile onRemove={onDelete} />}\n    </div>\n  );\n};\n\nexport default FileContainer;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FileFormWrapper.tsx",
    "content": "import { memo, useEffect, useMemo, useState } from \"react\";\nimport { useRecoilValue } from \"recoil\";\nimport {\n  supportsFiles,\n  mergeFileConfig,\n  isAgentsEndpoint,\n  EndpointFileConfig,\n  fileConfig as defaultFileConfig,\n} from \"~/data-provider/data-provider/src\";\nimport { useGetFileConfig } from \"~/data-provider\";\nimport AttachFileMenu from \"./AttachFileMenu\";\nimport { useChatContext } from \"~/Providers\";\nimport { useFileHandling } from \"~/hooks\";\nimport AttachFile from \"./AttachFile\";\nimport FileRow from \"./FileRow\";\nimport store from \"~/store\";\nimport useLocalize from \"~/hooks/useLocalize\";\nimport cn from \"~/utils/cn\";\n\nfunction FileFormWrapper({\n  children,\n  accept = \"\",\n  fileTip = false,\n  disableInputs,\n  disabledSearch,\n  noUpload = false,\n  showVoice = false,\n  selectedOrgKbs = [],\n  setSelectedOrgKbs,\n  enableOrgKb = false,\n}: {\n  disableInputs: boolean;\n  children?: React.ReactNode;\n  disabledSearch: boolean;\n  fileTip?: boolean;\n  accept?: string;\n  noUpload: boolean;\n  showVoice?: boolean;\n  selectedOrgKbs: string[];\n  setSelectedOrgKbs: (value: string[]) => void;\n  enableOrgKb?: boolean;\n}) {\n  const t = useLocalize();\n  const [fileTotalTokens, setFileTotalTokens] = useState(0);\n  const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();\n  const { files, setFiles, conversation, setFilesLoading } = useChatContext();\n  const { endpoint: _endpoint, endpointType } = conversation ?? {\n    endpoint: null,\n  };\n  const isAgents = useMemo(() => isAgentsEndpoint(_endpoint), [_endpoint]);\n\n  const { handleFileChange, abortUpload } = useFileHandling({\n    isLinsight: !fileTip,\n  });\n\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const isRTL = chatDirection === \"rtl\";\n\n  const endpointFileConfig = fileConfig.endpoints[_endpoint ?? \"\"] as\n    | EndpointFileConfig\n    | undefined;\n\n  const endpointSupportsFiles: boolean =\n    supportsFiles[endpointType ?? _endpoint ?? \"\"] ?? false;\n  const isUploadDisabled =\n    (disableInputs || endpointFileConfig?.disabled) ?? false;\n\n  const renderAttachFile = () => {\n    // if (isAgents) {\n    //   return (\n    //     <AttachFileMenu\n    //       isRTL={isRTL}\n    //       disabled={disableInputs}\n    //       handleFileChange={handleFileChange}\n    //     />\n    //   );\n    // }\n    // if (endpointSupportsFiles) {\n    // this\n    return (\n      <AttachFile\n        isRTL={isRTL}\n        showVoice={showVoice}\n        accept={accept}\n        disabled={disableInputs || disabledSearch}\n        handleFileChange={handleFileChange}\n      />\n    );\n    // }\n\n    return null;\n  };\n  useEffect(() => {\n    let total = 0;\n    files.forEach((item: any) => {\n      total = item?.token + total;\n    });\n    setFileTotalTokens(total);\n  }, [files]);\n\n  if (noUpload) return children;\n\n  return (\n    <>\n      {fileTip && files.size > 0 && (\n        <span className=\"pl-6 pt-2 text-sm\">{t(\"com_file_tip_text_only\")}</span>\n      )}\n      {fileTotalTokens > 0 && (\n        <span className=\"pl-6 pt-2 text-sm\">\n          {t(\"com_file_content_exceed_tokens\")}\n        </span>\n      )}\n\n      <FileRow\n        files={files}\n        setFiles={setFiles}\n        abortUpload={abortUpload}\n        setFilesLoading={setFilesLoading}\n        isRTL={isRTL}\n        Wrapper={({ children }) => (\n          <div className=\"mx-2 mt-2 flex flex-wrap gap-2 max-h-96 overflow-auto\">\n            {children}\n          </div>\n        )}\n      />\n      {children}\n      {/* 上传按钮 */}\n      {renderAttachFile()}\n    </>\n  );\n}\n\nexport default memo(FileFormWrapper);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FilePreview.tsx",
    "content": "import type { ExtendedFile } from '~/common';\nimport { FileIcon, getFileTypebyFileName } from '~/components/ui/icon/File/FileIcon';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { useProgress } from '~/hooks';\n\nconst FilePreview = ({\n  file,\n  fileType,\n  className = '',\n}: {\n  file?: ExtendedFile | TFile;\n  fileType: {\n    paths: React.FC;\n    fill: string;\n    title: string;\n  };\n  className?: string;\n}) => {\n  const radius = 55; // Radius of the SVG circle\n  const circumference = 2 * Math.PI * radius;\n  const progress = useProgress(\n    file?.['progress'] ?? 1,\n    0.001,\n    (file as ExtendedFile | undefined)?.size ?? 1,\n  );\n\n  // Calculate the offset based on the loading progress\n  const offset = circumference - progress * circumference;\n  const circleCSSProperties = {\n    transition: 'stroke-dashoffset 0.5s linear',\n  };\n\n  return (<FileIcon loading={progress < 1} type={getFileTypebyFileName(file.filename)} />\n    // <div className={cn('size-8 shrink-0 overflow-hidden rounded-lg', className)}>\n    //   <FontIcon name={progress < 1 ? '' : file.filename} />\n    //   <SourceIcon source={file?.source} />\n    //   {progress < 1 && (\n    //     <ProgressCircle\n    //       circumference={circumference}\n    //       offset={offset}\n    //       circleCSSProperties={circleCSSProperties}\n    //     />\n    //   )}\n    // </div>\n  );\n};\n\nexport default FilePreview;\n\n\n\nconst FontIcon = ({ name }) => {\n  const suffix = name ? name.split('.').pop().toLowerCase() : '';\n\n  let char = '';\n  let bg = 'bg-gray-500';\n\n  switch (suffix) {\n    case 'html':\n      char = 'H';\n      bg = 'bg-red-500';\n      break;\n    case 'txt':\n      char = 'Txt';\n      bg = 'bg-gray-300';\n      break;\n    case 'md':\n      char = 'M';\n      break;\n    case 'doc':\n    case 'docx':\n      char = 'W';\n      bg = 'bg-blue-500';\n      break;\n    case 'xls':\n    case 'xlsx':\n      char = 'X';\n      bg = 'bg-green-500';\n      break;\n    case 'ppt':\n    case 'pptx':\n      char = 'ppt';\n      bg = 'bg-orange-500';\n      break;\n    case 'pdf':\n      char = 'P';\n      bg = 'bg-red-500';\n      break;\n    case 'jpg':\n    case 'jpeg':\n    case 'png':\n    case 'gif':\n      char = 'I';\n      bg = 'bg-purple-500';\n      break;\n    // 可以继续添加其他文件类型...\n  }\n\n  return (\n    <div className={`size-full flex items-center justify-center font-bold \n      ${bg} text-white`}>\n      {char}\n    </div>\n  );\n};"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FileRow.tsx",
    "content": "import { useEffect } from 'react';\nimport { EToolResources } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport { useDeleteFilesMutation } from '~/data-provider';\nimport { useFileDeletion } from '~/hooks/Files';\nimport FileContainer from './FileContainer';\nimport { logger } from '~/utils';\nimport Image from './Image';\n\nexport default function FileRow({\n  files: _files,\n  setFiles,\n  abortUpload,\n  setFilesLoading,\n  assistant_id,\n  agent_id,\n  tool_resource,\n  fileFilter,\n  isRTL = false,\n  Wrapper,\n}: {\n  files: Map<string, ExtendedFile> | undefined;\n  abortUpload?: (file?: ExtendedFile) => void;\n  setFiles: React.Dispatch<React.SetStateAction<Map<string, ExtendedFile>>>;\n  setFilesLoading: React.Dispatch<React.SetStateAction<boolean>>;\n  fileFilter?: (file: ExtendedFile) => boolean;\n  assistant_id?: string;\n  agent_id?: string;\n  tool_resource?: EToolResources;\n  isRTL?: boolean;\n  Wrapper?: React.FC<{ children: React.ReactNode }>;\n}) {\n  const files = Array.from(_files?.values() ?? []).filter((file) =>\n    fileFilter ? fileFilter(file) : true,\n  );\n\n  const { mutateAsync } = useDeleteFilesMutation({\n    onMutate: async () =>\n      logger.log(\n        'agents',\n        'Deleting files: agent_id, assistant_id, tool_resource',\n        agent_id,\n        assistant_id,\n        tool_resource,\n      ),\n    onSuccess: () => {\n      console.log('Files deleted');\n    },\n    onError: (error) => {\n      console.log('Error deleting files:', error);\n    },\n  });\n\n  const { deleteFile } = useFileDeletion({ mutateAsync, agent_id, assistant_id, tool_resource });\n\n  useEffect(() => {\n    if (files.length === 0) {\n      setFilesLoading(false);\n      return;\n    }\n\n    if (files.some((file) => file.progress < 1)) {\n      return;\n    }\n\n    if (files.every((file) => file.progress === 1)) {\n      setFilesLoading(false);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [files]);\n\n  if (files.length === 0) {\n    return null;\n  }\n\n  const renderFiles = () => {\n    const rowStyle = isRTL\n      ? {\n        display: 'flex',\n        flexDirection: 'row-reverse',\n        flexWrap: 'wrap',\n        gap: '6px',\n        width: '100%',\n        maxWidth: '100%',\n      }\n      : {\n        display: 'flex',\n        flexWrap: 'wrap',\n        gap: '6px',\n        width: '100%',\n        maxWidth: '100%',\n      };\n\n    return (\n      <div style={rowStyle as React.CSSProperties}>\n        {files\n          .reduce(\n            (acc, current) => {\n              if (!acc.map.has(current.file_id)) {\n                acc.map.set(current.file_id, true);\n                acc.uniqueFiles.push(current);\n              }\n              return acc;\n            },\n            { map: new Map(), uniqueFiles: [] as ExtendedFile[] },\n          )\n          .uniqueFiles.map((file: ExtendedFile, index: number) => {\n            const handleDelete = () => {\n              if (abortUpload && file.progress < 1) {\n                abortUpload(file);\n              }\n              deleteFile({ file, setFiles });\n              file.preview && URL.revokeObjectURL(file.preview);\n            };\n            const isImage = file.type?.startsWith('image') ?? false;\n\n            return (\n              <div\n                key={index}\n                style={{\n                  flexBasis: '70px',\n                  flexGrow: 0,\n                  flexShrink: 0,\n                }}\n              >\n                {isImage ? (\n                  <Image\n                    url={file.preview ?? file.filepath}\n                    onDelete={handleDelete}\n                    progress={file.progress}\n                    source={file.source}\n                  />\n                ) : (\n                  <FileContainer file={file} onDelete={handleDelete} />\n                )}\n              </div>\n            );\n          })}\n      </div>\n    );\n  };\n\n  if (Wrapper) {\n    return <Wrapper>{renderFiles()}</Wrapper>;\n  }\n\n  return renderFiles();\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FileUpload.tsx",
    "content": "import React, { useState } from 'react';\nimport { FileUp } from 'lucide-react';\nimport { cn } from '~/utils/';\nimport { useLocalize } from '~/hooks';\n\ntype FileUploadProps = {\n  onFileSelected: (jsonData: Record<string, unknown>) => void;\n  className?: string;\n  containerClassName?: string;\n  successText?: string;\n  invalidText?: string;\n  validator?: ((data: Record<string, unknown>) => boolean) | null;\n  text?: string;\n  id?: string;\n};\n\nconst FileUpload: React.FC<FileUploadProps> = ({\n  onFileSelected,\n  className = '',\n  containerClassName = '',\n  successText = null,\n  invalidText = null,\n  validator = null,\n  text = null,\n  id = '1',\n}) => {\n  const [statusColor, setStatusColor] = useState<string>('text-gray-600');\n  const [status, setStatus] = useState<null | string>(null);\n  const localize = useLocalize();\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n    const file = event.target.files?.[0];\n    if (!file) {\n      return;\n    }\n\n    const reader = new FileReader();\n    reader.onload = (e) => {\n      const jsonData = JSON.parse(e.target?.result as string);\n      if (validator && !validator(jsonData)) {\n        setStatus('invalid');\n        setStatusColor('text-red-600');\n        return;\n      }\n\n      if (validator) {\n        setStatus('success');\n        setStatusColor('text-green-500 dark:text-green-500');\n      }\n\n      onFileSelected(jsonData);\n    };\n    reader.readAsText(file);\n  };\n\n  let statusText: string;\n  if (!status) {\n    statusText = text ?? localize('com_ui_import');\n  } else if (status === 'success') {\n    statusText = successText ?? localize('com_ui_upload_success');\n  } else {\n    statusText = invalidText ?? localize('com_ui_upload_invalid');\n  }\n\n  return (\n    <label\n      htmlFor={`file-upload-${id}`}\n      className={cn(\n        'mr-1 flex h-auto cursor-pointer items-center rounded bg-transparent px-2 py-1 text-xs font-normal transition-colors hover:bg-gray-100 hover:text-green-600 dark:bg-transparent dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-green-500',\n        statusColor,\n        containerClassName,\n      )}\n    >\n      <FileUp className=\"mr-1 flex w-[22px] items-center stroke-1\" />\n      <span className=\"flex text-xs\">{statusText}</span>\n      <input\n        id={`file-upload-${id}`}\n        value=\"\"\n        type=\"file\"\n        className={cn('hidden', className)}\n        accept=\".json\"\n        onChange={handleFileChange}\n      />\n    </label>\n  );\n};\n\nexport default FileUpload;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/FilesView.tsx",
    "content": "import { FileSources, FileContext } from '~/data-provider/data-provider/src';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle } from '~/components';\nimport { useGetFiles } from '~/data-provider';\nimport { DataTable, columns } from './Table';\nimport { useLocalize } from '~/hooks';\n\nexport default function Files({ open, onOpenChange }) {\n  const localize = useLocalize();\n\n  const { data: files = [] } = useGetFiles<TFile[]>({\n    select: (files) =>\n      files.map((file) => {\n        file.context = file.context ?? FileContext.unknown;\n        file.filterSource = file.source === FileSources.firebase ? FileSources.local : file.source;\n        return file;\n      }),\n  });\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange}>\n      <OGDialogContent\n        title={localize('com_nav_my_files')}\n        className=\"w-11/12 bg-background text-text-primary shadow-2xl\"\n      >\n        <OGDialogHeader>\n          <OGDialogTitle>{localize('com_nav_my_files')}</OGDialogTitle>\n        </OGDialogHeader>\n        <DataTable columns={columns} data={files} />\n      </OGDialogContent>\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Image.tsx",
    "content": "import { FileSources } from '~/data-provider/data-provider/src';\nimport ImagePreview from './ImagePreview';\nimport RemoveFile from './RemoveFile';\n\nconst Image = ({\n  imageBase64,\n  url,\n  onDelete,\n  progress = 1,\n  source = FileSources.local,\n}: {\n  imageBase64?: string;\n  url?: string;\n  onDelete: () => void;\n  progress: number; // between 0 and 1\n  source?: FileSources;\n}) => {\n  return (\n    <div className=\"group relative inline-block text-sm text-black/70 dark:text-white/90\">\n      <div className=\"relative overflow-hidden rounded-2xl border border-gray-200 dark:border-gray-600\">\n        <ImagePreview source={source} imageBase64={imageBase64} url={url} progress={progress} />\n      </div>\n      <RemoveFile onRemove={onDelete} />\n    </div>\n  );\n};\n\nexport default Image;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/ImagePreview.tsx",
    "content": "import { useState, useEffect, useCallback } from 'react';\nimport { Maximize2 } from 'lucide-react';\nimport { OGDialog, OGDialogContent } from '~/components/ui';\nimport { FileSources } from '~/data-provider/data-provider/src';\nimport ProgressCircle from './ProgressCircle';\nimport SourceIcon from './SourceIcon';\nimport { cn } from '~/utils';\n\ntype styleProps = {\n  backgroundImage?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string;\n  backgroundRepeat?: string;\n};\n\ninterface CloseModalEvent {\n  stopPropagation: () => void;\n  preventDefault: () => void;\n}\n\nconst ImagePreview = ({\n  imageBase64,\n  url,\n  progress = 1,\n  className = '',\n  source,\n  alt = 'Preview image',\n}: {\n  imageBase64?: string;\n  url?: string;\n  progress?: number;\n  className?: string;\n  source?: FileSources;\n  alt?: string;\n}) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [isHovered, setIsHovered] = useState(false);\n  const [previousActiveElement, setPreviousActiveElement] = useState<Element | null>(null);\n\n  const openModal = useCallback(() => {\n    setPreviousActiveElement(document.activeElement);\n    setIsModalOpen(true);\n  }, []);\n\n  const closeModal = useCallback(\n    (e: CloseModalEvent): void => {\n      setIsModalOpen(false);\n      e.stopPropagation();\n      e.preventDefault();\n\n      if (\n        previousActiveElement instanceof HTMLElement &&\n        !previousActiveElement.closest('[data-skip-refocus=\"true\"]')\n      ) {\n        previousActiveElement.focus();\n      }\n    },\n    [previousActiveElement],\n  );\n\n  const handleKeyDown = useCallback(\n    (e: KeyboardEvent) => {\n      if (e.key === 'Escape') {\n        closeModal(e);\n      }\n    },\n    [closeModal],\n  );\n\n  useEffect(() => {\n    if (isModalOpen) {\n      document.addEventListener('keydown', handleKeyDown);\n      document.body.style.overflow = 'hidden';\n      const closeButton = document.querySelector('[aria-label=\"Close full view\"]') as HTMLElement;\n      if (closeButton) {\n        setTimeout(() => closeButton.focus(), 0);\n      }\n    }\n\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n      document.body.style.overflow = 'unset';\n    };\n  }, [isModalOpen, handleKeyDown]);\n\n  const baseStyle: styleProps = {\n    backgroundSize: 'cover',\n    backgroundPosition: 'center',\n    backgroundRepeat: 'no-repeat',\n  };\n\n  const imageUrl = imageBase64 ?? url ?? '';\n\n  const style: styleProps = imageUrl\n    ? {\n      ...baseStyle,\n      backgroundImage: `url(${imageUrl})`,\n    }\n    : baseStyle;\n\n  if (typeof style.backgroundImage !== 'string' || style.backgroundImage.length === 0) {\n    return null;\n  }\n\n  const radius = 55;\n  const circumference = 2 * Math.PI * radius;\n  const offset = circumference - progress * circumference;\n  const circleCSSProperties = {\n    transition: 'stroke-dashoffset 0.3s linear',\n  };\n\n  return (\n    <>\n      <div\n        className={cn('relative size-14 rounded-xl', className)}\n        onMouseEnter={() => setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n      >\n        <button\n          type=\"button\"\n          className=\"size-full overflow-hidden rounded-xl\"\n          style={style}\n          aria-label={`View ${alt} in full size`}\n          aria-haspopup=\"dialog\"\n          onClick={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            openModal();\n          }}\n        />\n        {progress < 1 ? (\n          <ProgressCircle\n            circumference={circumference}\n            offset={offset}\n            circleCSSProperties={circleCSSProperties}\n            aria-label={`Loading progress: ${Math.round(progress * 100)}%`}\n          />\n        ) : (\n          <div\n            className={cn(\n              'absolute inset-0 flex transform-gpu cursor-pointer items-center justify-center rounded-xl transition-opacity duration-200 ease-in-out',\n              isHovered ? 'bg-black/20 opacity-100' : 'opacity-0',\n            )}\n            onClick={(e) => {\n              e.stopPropagation();\n              openModal();\n            }}\n            aria-hidden=\"true\"\n          >\n            <Maximize2\n              className={cn(\n                'size-5 transform-gpu text-white drop-shadow-lg transition-all duration-200',\n                isHovered ? 'scale-110' : '',\n              )}\n            />\n          </div>\n        )}\n        <SourceIcon source={source} aria-label={source ? `Source: ${source}` : undefined} />\n      </div>\n\n      <OGDialog open={isModalOpen} onOpenChange={setIsModalOpen}>\n        <OGDialogContent\n          showCloseButton={false}\n          className={cn('w-11/12 overflow-x-auto bg-transparent p-0 sm:w-auto')}\n          disableScroll={false}\n        >\n          <img\n            src={imageUrl}\n            alt={alt}\n            className=\"max-w-screen h-full max-h-screen w-full object-contain\"\n          />\n        </OGDialogContent>\n      </OGDialog>\n    </>\n  );\n};\n\nexport default ImagePreview;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/MyKnowledgeView.tsx",
    "content": "import axios from 'axios';\nimport { useEffect, useState } from 'react';\nimport { NotificationSeverity } from '~/common';\nimport { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle } from '~/components';\nimport { useGetDownloadUrl, useGetKnowledgeFiles, useModelBuilding } from '~/data-provider';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { dataService } from '~/data-provider/data-provider/src';\nimport { useLocalize, useToast } from '~/hooks';\nimport { DataTableKnowledge, getKnowledgeColumns } from './Table';\n\nexport default function MyKnowledgeView({ open, onOpenChange }) {\n  const localize = useLocalize();\n  const [keyword, setKeyword] = useState('')\n  const [page, setPage] = useState(1)\n\n  const { data = { list: [], total: 1 }, refetch } = useGetKnowledgeFiles<TFile[]>([page, keyword], {\n\n    select: (files) => {\n      // setTotal(files.data.total)\n      return {\n        list: files.data.list || [],\n        total: files.data.total || 1,\n      };\n      // files.map((file) => {\n      //   file.context = file.context ?? FileContext.unknown;\n      //   file.filterSource = file.source === FileSources.firebase ? FileSources.local : file.source;\n      //   return file;\n      // })\n    },\n    refetchInterval: 10000, // 10s一刷新\n  });\n\n  const handleDownload = async (id: string, filename: string) => {\n    if (building) return backToast()\n\n    const res = await useGetDownloadUrl(id)\n\n    return axios.get(__APP_ENV__.BASE_URL + res.data.original_url, { responseType: \"blob\" }).then((res: any) => {\n      const blob = new Blob([res.data]);\n      const link = document.createElement(\"a\");\n      link.href = URL.createObjectURL(blob);\n      link.download = filename;\n      link.click();\n      URL.revokeObjectURL(link.href);\n    }).catch(console.error);\n\n    // try {\n    //   const link = document.createElement('a');\n    //   link.href = res.data;\n    //   link.download = filename;\n    //   document.body.appendChild(link);\n    //   link.click();\n    //   document.body.removeChild(link);\n    // } catch (error) {\n    //   console.error('Download failed:', error);\n    // }\n  };\n\n  const handleDelete = async (id) => {\n    if (building) return backToast()\n\n    try {\n      const res = await dataService.deleteKnowledge(id);\n      console.info(res);\n      refetch()\n    } catch (error) {\n      console.error('delete failed:', error);\n    }\n  };\n\n  const { showToast } = useToast()\n  const backToast = () => {\n    showToast({\n      message: localize('com_tools_knowledge_rebuilding'),\n      severity: NotificationSeverity.WARNING,\n    })\n  }\n\n  const [building] = useModelBuilding()\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange}>\n      <OGDialogContent\n        // title={localize('com_nav_my_knowledge_files')}\n        className=\"w-11/12 bg-background text-text-primary shadow-2xl\"\n      >\n        <OGDialogHeader>\n          <OGDialogTitle>{localize('com_nav_my_knowledge_files')}</OGDialogTitle>\n        </OGDialogHeader>\n        <DataTableKnowledge columns={getKnowledgeColumns(handleDelete, handleDownload)}\n          building={building}\n          data={data}\n          page={page}\n          onPage={setPage}\n          onSearch={setKeyword}\n          onUpload={refetch}\n        />\n      </OGDialogContent>\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/ProgressCircle.tsx",
    "content": "export default function ProgressCircle({\n  circumference,\n  offset,\n  circleCSSProperties,\n}: {\n  circumference: number;\n  offset: number;\n  circleCSSProperties: React.CSSProperties;\n}) {\n  return (\n    <div className=\"absolute inset-0 flex items-center justify-center bg-black/5 text-white\">\n      <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" className=\"h-6 w-6\">\n        <circle\n          className=\"origin-[50%_50%] -rotate-90 stroke-gray-400\"\n          strokeWidth=\"10\"\n          fill=\"transparent\"\n          r=\"55\"\n          cx=\"60\"\n          cy=\"60\"\n        />\n        <circle\n          className=\"origin-[50%_50%] -rotate-90 transition-[stroke-dashoffset]\"\n          stroke=\"currentColor\"\n          strokeWidth=\"10\"\n          strokeDasharray={`${circumference} ${circumference}`}\n          strokeDashoffset={offset}\n          fill=\"transparent\"\n          r=\"55\"\n          cx=\"60\"\n          cy=\"60\"\n          style={circleCSSProperties}\n        />\n      </svg>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/RemoveFile.tsx",
    "content": "import { X } from \"lucide-react\";\n\nexport default function RemoveFile({ onRemove }: { onRemove: () => void }) {\n  return (\n    <button\n      type=\"button\"\n      className=\"absolute p-0.5 right-1.5 top-1.5 bg-black text-white rounded-full transition-colors duration-200 hover:bg-gray-300 z-50\"\n      onClick={onRemove}\n    >\n      <span>\n        <X size={12} />\n      </span>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/SourceIcon.tsx",
    "content": "import { EModelEndpoint, FileSources } from '~/data-provider/data-provider/src';\nimport { MinimalIcon } from '~/components/Endpoints';\nimport { cn } from '~/utils';\n\nconst sourceToEndpoint = {\n  [FileSources.openai]: EModelEndpoint.openAI,\n  [FileSources.azure]: EModelEndpoint.azureOpenAI,\n};\nconst sourceToClassname = {\n  [FileSources.openai]: 'bg-white/75 dark:bg-black/65',\n  [FileSources.azure]: 'azure-bg-color opacity-85',\n};\n\nconst defaultClassName =\n  'absolute right-0 bottom-0 rounded-full p-[0.15rem] text-gray-600 transition-colors';\n\nexport default function SourceIcon({\n  source,\n  className = defaultClassName,\n}: {\n  source?: FileSources;\n  className?: string;\n}) {\n  if (source === FileSources.local || source === FileSources.firebase) {\n    return null;\n  }\n\n  const endpoint = sourceToEndpoint[source ?? ''];\n\n  if (!endpoint) {\n    return null;\n  }\n  return (\n    <button type=\"button\" className={cn(className, sourceToClassname[source ?? ''] ?? '')}>\n      <span className=\"flex items-center justify-center\">\n        <MinimalIcon\n          endpoint={endpoint}\n          size={14}\n          isCreatedByUser={false}\n          iconClassName=\"h-3 w-3\"\n        />\n      </span>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/AttachFileButton.tsx",
    "content": "import React, { useRef } from 'react';\nimport { Button, FileUpload, TooltipAnchor } from '~/components/ui';\nimport { AttachmentIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport { Loader2 } from 'lucide-react';\n\nconst AttachFileButton = ({\n  disabled,\n  handleFileChange,\n}: {\n  disabled?: boolean | null;\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const localize = useLocalize();\n  const inputRef = useRef<HTMLInputElement>(null);\n  const isUploadDisabled = disabled ?? false;\n\n  return (\n    <FileUpload ref={inputRef} handleFileChange={handleFileChange}>\n      <TooltipAnchor\n        role=\"button\"\n        id=\"attach-file\"\n        aria-label={localize('com_sidepanel_attach_files')}\n        disabled={isUploadDisabled}\n        className={cn(\n          'flex items-center justify-center rounded-full p-1 transition-colors focus-visible:outline-none dark:focus-visible:outline-none ',\n        )}\n        description={localize('com_sidepanel_attach_files')}\n        onKeyDownCapture={(e) => {\n          if (disabled) return\n          if (!inputRef.current) {\n            return;\n          }\n          if (e.key === 'Enter' || e.key === ' ') {\n            inputRef.current.value = '';\n            inputRef.current.click();\n          }\n        }}\n        onClick={() => {\n          if (!inputRef.current) {\n            return;\n          }\n          inputRef.current.value = '';\n          inputRef.current.click();\n        }}\n      >\n        <div className=\"flex w-full items-center justify-center gap-2\">\n          <Button disabled={isUploadDisabled}>\n            {disabled && <Loader2 className='animate-spin' />}\n            {localize('com_knowledge_add_file')}</Button>\n        </div>\n      </TooltipAnchor>\n    </FileUpload>\n  );\n};\n\nexport default React.memo(AttachFileButton);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/Columns.tsx",
    "content": "\nimport { ArrowUpDown, Database } from 'lucide-react';\nimport { FileSources, FileContext } from '~/data-provider/data-provider/src';\nimport type { ColumnDef } from '@tanstack/react-table';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { Button, Checkbox, OpenAIMinimalIcon, AzureMinimalIcon } from '~/components';\nimport ImagePreview from '~/components/Chat/Input/Files/ImagePreview';\nimport FilePreview from '~/components/Chat/Input/Files/FilePreview';\nimport { SortFilterHeader } from './SortFilterHeader';\nimport { TranslationKeys, useLocalize, useMediaQuery } from '~/hooks';\nimport { formatDate, getFileType } from '~/utils';\n\nconst contextMap: Record<any, TranslationKeys> = {\n  [FileContext.avatar]: 'com_ui_avatar',\n  [FileContext.unknown]: 'com_ui_unknown',\n  [FileContext.assistants]: 'com_ui_assistants',\n  [FileContext.image_generation]: 'com_ui_image_gen',\n  [FileContext.assistants_output]: 'com_ui_assistants_output',\n  [FileContext.message_attachment]: 'com_ui_attachment',\n};\n\nexport const columns: ColumnDef<TFile>[] = [\n  {\n    id: 'select',\n    header: ({ table }) => {\n      return (\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && 'indeterminate')\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n          className=\"flex\"\n        />\n      );\n    },\n    cell: ({ row }) => {\n      return (\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n          className=\"flex\"\n        />\n      );\n    },\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    meta: {\n      size: '150px',\n    },\n    accessorKey: 'filename',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return (\n        <Button\n          variant=\"ghost\"\n          className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}\n        >\n          {localize('com_ui_name')}\n          <ArrowUpDown className=\"ml-2 h-3 w-4 sm:h-4 sm:w-4\" />\n        </Button>\n      );\n    },\n    cell: ({ row }) => {\n      const file = row.original;\n      if (file.type.startsWith('image')) {\n        return (\n          <div className=\"flex gap-2\">\n            <ImagePreview\n              url={file.filepath}\n              className=\"relative h-10 w-10 shrink-0 overflow-hidden rounded-md\"\n              source={file.source}\n            />\n            <span className=\"self-center truncate \">{file.filename}</span>\n          </div>\n        );\n      }\n\n      const fileType = getFileType(file.type);\n      return (\n        <div className=\"flex gap-2\">\n          {fileType && <FilePreview fileType={fileType} className=\"relative\" file={file} />}\n          <span className=\"self-center truncate\">{file.filename}</span>\n        </div>\n      );\n    },\n  },\n  {\n    accessorKey: 'updatedAt',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return (\n        <Button\n          variant=\"ghost\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}\n          className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n        >\n          {localize('com_ui_date')}\n          <ArrowUpDown className=\"ml-2 h-3 w-4 sm:h-4 sm:w-4\" />\n        </Button>\n      );\n    },\n    cell: ({ row }) => {\n      const isSmallScreen = useMediaQuery('(max-width: 768px)');\n      return formatDate(row.original.updatedAt?.toString() ?? '', isSmallScreen);\n    },\n  },\n  {\n    accessorKey: 'filterSource',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return (\n        <SortFilterHeader\n          column={column}\n          title={localize('com_ui_storage')}\n          filters={{\n            Storage: Object.values(FileSources).filter(\n              (value) =>\n                value === FileSources.local ||\n                value === FileSources.openai ||\n                value === FileSources.azure,\n            ),\n          }}\n          valueMap={{\n            [FileSources.azure]: 'com_ui_azure',\n            [FileSources.openai]: 'com_ui_openai',\n            [FileSources.local]: 'com_ui_host',\n          }}\n        />\n      );\n    },\n    cell: ({ row }) => {\n      const localize = useLocalize();\n      const { source } = row.original;\n      if (source === FileSources.openai) {\n        return (\n          <div className=\"flex flex-wrap items-center gap-2\">\n            <OpenAIMinimalIcon className=\"icon-sm text-green-600/50\" />\n            {'OpenAI'}\n          </div>\n        );\n      } else if (source === FileSources.azure) {\n        return (\n          <div className=\"flex flex-wrap items-center gap-2\">\n            <AzureMinimalIcon className=\"icon-sm text-cyan-700\" />\n            {'Azure'}\n          </div>\n        );\n      }\n      return (\n        <div className=\"flex flex-wrap items-center gap-2\">\n          <Database className=\"icon-sm text-cyan-700\" />\n          {localize('com_ui_host')}\n        </div>\n      );\n    },\n  },\n  {\n    accessorKey: 'context',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return (\n        <SortFilterHeader\n          column={column}\n          title={localize('com_ui_context')}\n          filters={{\n            Context: Object.values(FileContext).filter(\n              (value) => value === FileContext[value ?? ''],\n            ),\n          }}\n          valueMap={contextMap}\n        />\n      );\n    },\n    cell: ({ row }) => {\n      const { context } = row.original;\n      const localize = useLocalize();\n      return (\n        <div className=\"flex flex-wrap items-center gap-2\">\n          {localize(contextMap[context ?? FileContext.unknown])}\n        </div>\n      );\n    },\n  },\n  {\n    accessorKey: 'bytes',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return (\n        <Button\n          variant=\"ghost\"\n          className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}\n        >\n          {localize('com_ui_size')}\n          <ArrowUpDown className=\"ml-2 h-3 w-4 sm:h-4 sm:w-4\" />\n        </Button>\n      );\n    },\n    cell: ({ row }) => {\n      const suffix = ' MB';\n      const value = Number((Number(row.original.bytes) / 1024 / 1024).toFixed(2));\n      if (value < 0.01) {\n        return '< 0.01 MB';\n      }\n\n      return `${value}${suffix}`;\n    },\n  },\n];"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/DataTable.tsx",
    "content": "import { useState } from 'react';\nimport { ListFilter } from 'lucide-react';\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from '@tanstack/react-table';\nimport type {\n  ColumnDef,\n  SortingState,\n  VisibilityState,\n  ColumnFiltersState,\n} from '@tanstack/react-table';\nimport { FileContext } from '~/data-provider/data-provider/src';\nimport type { AugmentedColumnDef } from '~/common';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport {\n  Button,\n  Input,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n} from '~/components/ui';\nimport { useDeleteFilesFromTable } from '~/hooks/Files';\nimport { TrashIcon, Spinner } from '~/components/svg';\nimport useLocalize from '~/hooks/useLocalize';\nimport { useMediaQuery } from '~/hooks';\nimport { cn } from '~/utils';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nconst contextMap = {\n  [FileContext.filename]: 'com_ui_name',\n  [FileContext.updatedAt]: 'com_ui_date',\n  [FileContext.filterSource]: 'com_ui_storage',\n  [FileContext.context]: 'com_ui_context',\n  [FileContext.bytes]: 'com_ui_size',\n};\n\ntype Style = {\n  width?: number | string;\n  maxWidth?: number | string;\n  minWidth?: number | string;\n  zIndex?: number;\n};\n\nexport default function DataTable<TData, TValue>({ columns, data }: DataTableProps<TData, TValue>) {\n  const localize = useLocalize();\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [rowSelection, setRowSelection] = useState({});\n  const [sorting, setSorting] = useState<SortingState>([]);\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n  const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n  const { deleteFiles } = useDeleteFilesFromTable(() => setIsDeleting(false));\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    getPaginationRowModel: getPaginationRowModel(),\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  });\n\n  return (\n    <div className=\"flex h-full flex-col gap-4\">\n      <div className=\"flex flex-wrap items-center gap-2 py-2 sm:gap-4 sm:py-4\">\n        <Button\n          variant=\"outline\"\n          onClick={() => {\n            setIsDeleting(true);\n            const filesToDelete = table\n              .getFilteredSelectedRowModel()\n              .rows.map((row) => row.original);\n            deleteFiles({ files: filesToDelete as TFile[] });\n            setRowSelection({});\n          }}\n          disabled={!table.getFilteredSelectedRowModel().rows.length || isDeleting}\n          className={cn('min-w-[40px] transition-all duration-200', isSmallScreen && 'px-2 py-1')}\n        >\n          {isDeleting ? (\n            <Spinner className=\"size-3.5 sm:size-4\" />\n          ) : (\n            <TrashIcon className=\"size-3.5 text-red-400 sm:size-4\" />\n          )}\n          {!isSmallScreen && <span className=\"ml-2\">{localize('com_ui_delete')}</span>}\n        </Button>\n        <Input\n          placeholder={localize('com_files_filter')}\n          value={(table.getColumn('filename')?.getFilterValue() as string | undefined) ?? ''}\n          onChange={(event) => table.getColumn('filename')?.setFilterValue(event.target.value)}\n          className=\"flex-1 text-sm\"\n        />\n        <DropdownMenu>\n          <DropdownMenuTrigger asChild>\n            <Button variant=\"outline\" className={cn('min-w-[40px]', isSmallScreen && 'px-2 py-1')}>\n              <ListFilter className=\"size-3.5 sm:size-4\" />\n            </Button>\n          </DropdownMenuTrigger>\n          <DropdownMenuContent\n            align=\"end\"\n            className=\"max-h-[300px] overflow-y-auto dark:border-gray-700 dark:bg-gray-850\"\n          >\n            {table\n              .getAllColumns()\n              .filter((column) => column.getCanHide())\n              .map((column) => (\n                <DropdownMenuCheckboxItem\n                  key={column.id}\n                  className=\"cursor-pointer text-sm capitalize dark:text-white dark:hover:bg-gray-800\"\n                  checked={column.getIsVisible()}\n                  onCheckedChange={(value) => column.toggleVisibility(Boolean(value))}\n                >\n                  {localize(contextMap[column.id])}\n                </DropdownMenuCheckboxItem>\n              ))}\n          </DropdownMenuContent>\n        </DropdownMenu>\n      </div>\n      <div className=\"relative grid h-full max-h-[calc(100vh-20rem)] w-full flex-1 overflow-hidden overflow-x-auto overflow-y-auto rounded-md border border-black/10 dark:border-white/10\">\n        <Table className=\"w-full min-w-[300px] border-separate border-spacing-0\">\n          <TableHeader className=\"sticky top-0 z-50\">\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id} className=\"border-b border-border-light\">\n                {headerGroup.headers.map((header, index) => {\n                  const style: Style = {};\n                  if (index === 0 && header.id === 'select') {\n                    style.width = '35px';\n                    style.minWidth = '35px';\n                  } else if (header.id === 'filename') {\n                    style.width = isSmallScreen ? '60%' : '40%';\n                  } else {\n                    style.width = isSmallScreen ? '20%' : '15%';\n                  }\n\n                  return (\n                    <TableHead\n                      key={header.id}\n                      className=\"whitespace-nowrap bg-surface-secondary px-2 py-2 text-left text-sm font-medium text-text-secondary sm:px-4\"\n                      style={{ ...style }}\n                    >\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(header.column.columnDef.header, header.getContext())}\n                    </TableHead>\n                  );\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody className=\"w-full\">\n            {table.getRowModel().rows.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && 'selected'}\n                  className=\"border-b border-border-light transition-colors hover:bg-surface-secondary [tr:last-child_&]:border-b-0\"\n                >\n                  {row.getVisibleCells().map((cell, index) => {\n                    const maxWidth =\n                      (cell.column.columnDef as AugmentedColumnDef<TData, TValue>).meta?.size ??\n                      'auto';\n\n                    const style: Style = {};\n                    if (cell.column.id === 'filename') {\n                      style.maxWidth = maxWidth;\n                    } else if (index === 0) {\n                      style.maxWidth = '20px';\n                    }\n\n                    return (\n                      <TableCell\n                        key={cell.id}\n                        className=\"align-start overflow-x-auto px-2 py-1 text-xs sm:px-4 sm:py-2 sm:text-sm [tr[data-disabled=true]_&]:opacity-50\"\n                        style={style}\n                      >\n                        {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                      </TableCell>\n                    );\n                  })}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                  {localize('com_files_no_results')}\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n\n      <div className=\"flex items-center justify-end gap-2 py-4\">\n        <div className=\"ml-2 flex-1 truncate text-xs text-muted-foreground sm:ml-4 sm:text-sm\">\n          <span className=\"hidden sm:inline\">\n            {localize(\n              'com_files_number_selected',\n              {\n                0: `${table.getFilteredSelectedRowModel().rows.length}`,\n                1: `${table.getFilteredRowModel().rows.length}`,\n              },\n            )}\n          </span>\n          <span className=\"sm:hidden\">\n            {`${table.getFilteredSelectedRowModel().rows.length}/${\n              table.getFilteredRowModel().rows.length\n            }`}\n          </span>\n        </div>\n        <div className=\"flex items-center space-x-1 pr-2 text-xs font-bold text-text-primary sm:text-sm\">\n          <span className=\"hidden sm:inline\">{localize('com_ui_page')}</span>\n          <span>{table.getState().pagination.pageIndex + 1}</span>\n          <span>/</span>\n          <span>{table.getPageCount()}</span>\n        </div>\n        <Button\n          className=\"select-none\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.previousPage()}\n          disabled={!table.getCanPreviousPage()}\n        >\n          {localize('com_ui_prev')}\n        </Button>\n        <Button\n          className=\"select-none\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.nextPage()}\n          disabled={!table.getCanNextPage()}\n        >\n          {localize('com_ui_next')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx",
    "content": "import type {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  VisibilityState,\n} from '@tanstack/react-table';\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from '@tanstack/react-table';\nimport { dataService, FileContext } from '~/data-provider/data-provider/src';\nimport { debounce } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\nimport { NotificationSeverity, type AugmentedColumnDef } from '~/common';\nimport {\n  Button,\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow\n} from '~/components/ui';\nimport { useMediaQuery, useToast } from '~/hooks';\nimport { useDeleteFilesFromTable } from '~/hooks/Files';\nimport useLocalize from '~/hooks/useLocalize';\nimport AttachFileButton from './AttachFileButton';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nconst contextMap = {\n  [FileContext.filename]: 'com_ui_name',\n  [FileContext.updatedAt]: 'com_ui_date',\n  [FileContext.filterSource]: 'com_ui_storage',\n  [FileContext.context]: 'com_ui_context',\n  [FileContext.bytes]: 'com_ui_size',\n};\n\ntype Style = {\n  width?: number | string;\n  maxWidth?: number | string;\n  minWidth?: number | string;\n  zIndex?: number;\n};\n\nexport default function DataTableKnowledge<TData, TValue>({\n  page,\n  onPage,\n  onSearch,\n  onUpload,\n  columns,\n  data,\n  building\n}: DataTableProps<TData, TValue>) {\n  const localize = useLocalize();\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [rowSelection, setRowSelection] = useState({});\n  const [sorting, setSorting] = useState<SortingState>([]);\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n  const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n  const { deleteFiles } = useDeleteFilesFromTable(() => setIsDeleting(false));\n\n  // 重复文件相关状态\n  const [repeatFiles, setRepeatFiles] = useState([]);\n  const [retryLoad, setRetryLoad] = useState(false);\n  const [pendingFiles, setPendingFiles] = useState([]);\n  const [infoId, setInfoId] = useState('');\n  const [fileUrl, setFileUrl] = useState('');\n  const handleSearch = useCallback(\n    debounce((event: any) => {\n      onSearch(event.target.value);\n    }, 300),\n    [onSearch],\n  );\n  useEffect(() => {\n    const fetchUserInfo = async () => {\n      const res = await dataService.getUserInfo();\n      setInfoId(res?.data[0]?.id || '');\n    }\n    fetchUserInfo();\n  }, [])\n\n  const [loading, setLoading] = useState(false);\n  const { showToast } = useToast();\n\n  const unRetry = () => {\n    setRepeatFiles([]);\n    setPendingFiles([]);\n    setLoading(false);\n  };\n\n  const onRetry = async (files) => {\n    setRetryLoad(true);\n    try {\n      const formData = new FormData();\n      formData.append('retry', 'true');\n\n      files.forEach(file => {\n        if (file.file) {\n          formData.append('file', file.file);\n        }\n        if (file.name) {\n          formData.append('filename', file.name);\n        }\n      });\n      const fileList = repeatFiles.map(repeatFile => ({\n        file_path: repeatFile.file_path,\n        excel_rule: repeatFile.fileType === 'file' ? {} : {\n          \"append_header\": true,\n          \"header_end_row\": 1,\n          \"header_start_row\": 1,\n          \"slice_length\": 10\n        }\n      }));\n\n      // 一次上传所有重复文件\n      const params = {\n        knowledge_id: infoId,\n        file_list: fileList, // 数组，包含多个重复文件\n        separator: [\"\\n\\n\", \"\\n\"],\n        separator_rule: [\"after\", \"after\"],\n        chunk_size: 1000,\n        chunk_overlap: 100,\n        retain_images: true,\n        enable_formula: true,\n        force_ocr: true,\n        fileter_page_header_footer: true\n      };\n\n      const uploadRes = await dataService.subUploadLibFile(params);\n\n      if (uploadRes.status_code === 200) {\n        showToast({\n          message: localize('com_tools_file_upload', { count: repeatFiles.length }),\n          severity: NotificationSeverity.SUCCESS,\n        });\n        onUpload();\n      } else {\n        showToast({\n          message: uploadRes.status_message || localize('com_tools_file_upload_failed'),\n          severity: NotificationSeverity.ERROR,\n        });\n      }\n    } catch (error) {\n      console.error('com_tools_file_upload_failed:', error);\n      showToast({\n        message: localize('com_tools_file_upload_failed') + error.message,\n        severity: NotificationSeverity.ERROR,\n      });\n    } finally {\n      setRetryLoad(false);\n      setRepeatFiles([]);\n      setPendingFiles([]);\n      setLoading(false);\n    }\n  };\n\n  const handleUpload = async (event) => {\n    setLoading(true);\n    const files = Array.from(event.target.files);\n\n    // 在函数作用域内声明 duplicateFiles\n    let duplicateFiles = [];\n\n    if (!files || files.length === 0) {\n      setLoading(false);\n      return;\n    }\n    setPendingFiles(files.map(file => ({ file, name: file.name })));\n\n    try {\n      const nonDuplicateFiles = [];\n      duplicateFiles = []; // 重置\n\n      for (const file of files) {\n        const formData = new FormData();\n        formData.append('filename', file.name);\n        formData.append('file', file);\n\n        const repeatCheckRes = await dataService.repeatUpload(formData, infoId);\n\n        if (repeatCheckRes.data?.repeat === true) {\n          duplicateFiles.push({\n            file,\n            name: file.name,\n            file_name: repeatCheckRes.data.file_name,\n            repeat_file_name: repeatCheckRes.data.repeat_file_name,\n            repeat_update_time: repeatCheckRes.data.repeat_update_time,\n            data: repeatCheckRes.data,\n            file_path: repeatCheckRes.data.file_path,\n          });\n        } else {\n          nonDuplicateFiles.push({\n            file,\n            name: file.name,\n            file_path: repeatCheckRes.data.file_path,\n          });\n        }\n      }\n\n      if (duplicateFiles.length > 0) {\n        setRepeatFiles(duplicateFiles.map(item => ({\n          id: item.name,\n          remark: `${item.file_name} 对应已存在文件 ${item.repeat_file_name}`,\n          file_path: item.file_path,\n          fileType: 'file',\n          file: item.file,\n        })));\n      }\n\n      if (nonDuplicateFiles.length > 0) {\n        let hasError = false;\n\n        // 修改这里：将多个文件合并成一个数组上传\n        const fileList = nonDuplicateFiles.map(fileInfo => ({\n          file_path: fileInfo.file_path,\n          excel_rule: fileInfo.file.type === 'file' ? {} : {\n            \"append_header\": true,\n            \"header_end_row\": 1,\n            \"header_start_row\": 1,\n            \"slice_length\": 10\n          }\n        }));\n\n        // 一次上传所有非重复文件\n        const params = {\n          knowledge_id: infoId,\n          file_list: fileList, // 这里是数组，包含多个文件\n          separator: [\"\\n\\n\", \"\\n\"],\n          separator_rule: [\"after\", \"after\"],\n          chunk_size: 1000,\n          chunk_overlap: 100,\n          retain_images: true,\n          enable_formula: true,\n          force_ocr: true,\n          fileter_page_header_footer: true\n        };\n\n        const uploadRes = await dataService.subUploadLibFile(params);\n\n        if (uploadRes.status_code === 500) {\n          // 如果有错误，尝试解析哪些文件失败了\n          showToast({\n            message: localize('com_tools_file_upload_partial_error'),\n            severity: NotificationSeverity.ERROR,\n          });\n          hasError = true;\n        } else if (uploadRes.data?.remark) {\n          // showToast({\n          //   message: uploadRes.data.remark || localize('com_tools_knowledge_upload_remark'),\n          //   severity: NotificationSeverity.ERROR,\n          // });\n          hasError = true;\n        }\n\n        if (!hasError) {\n          showToast({\n            message: localize('com_tools_file_upload', { count: nonDuplicateFiles.length }),\n            severity: NotificationSeverity.SUCCESS,\n          });\n          onUpload();\n        }\n      }\n\n    } catch (error) {\n      console.error('com_tools_file_upload_failed:', error);\n      showToast({\n        message: localize('com_tools_file_upload_failed') + ': ' + error.message,\n        severity: NotificationSeverity.ERROR,\n      });\n    } finally {\n      if (duplicateFiles.length === 0) {\n        setLoading(false);\n      }\n    }\n  };\n\n  const table = useReactTable({\n    data: data.list,\n    columns,\n    onSortingChange: setSorting,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    getPaginationRowModel: getPaginationRowModel(),\n    onRowSelectionChange: setRowSelection,\n    manualPagination: true,\n    pageCount: Math.ceil(data.total / 20),\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  });\n\n  return (\n    <div className=\"flex h-full flex-col gap-4\">\n      <Dialog open={!!repeatFiles.length} onOpenChange={(b) => !b && setRepeatFiles([])}>\n        <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n          <DialogHeader>\n            <DialogTitle>{localize('com_tools_file_detected')}</DialogTitle>\n            <DialogDescription>\n              {localize('com_tools_file_following')}\n            </DialogDescription>\n          </DialogHeader>\n          <ul className=\"overflow-y-auto max-h-[400px] py-2\">\n            {repeatFiles.map(el => (\n              <li key={el.id} className=\"py-1 text-red-500 text-sm\">\n                {el.remark}\n              </li>\n            ))}\n          </ul>\n          <DialogFooter>\n            <Button className=\"h-8\" variant=\"outline\" onClick={unRetry}>\n              {localize('com_tools_file_not_overwrite')}\n            </Button>\n            <Button\n              className=\"h-8\"\n              disabled={retryLoad}\n              onClick={() => onRetry(pendingFiles)}\n            >\n              {retryLoad && <span className=\"loading loading-spinner loading-xs mr-1\"></span>}\n              {localize('com_tools_file_overwrite')}\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n\n      <div className=\"flex flex-wrap items-center justify-between gap-2 py-2 sm:gap-4 sm:py-4\">\n        <div className='flex gap-2 sm:gap-4'>\n          {/* <Input\n            placeholder={localize('com_files_filter')}\n            // value={(table.getColumn('file_name')?.getFilterValue() as string | undefined) ?? ''}\n            onChange={handleSearch}\n            // onChange={(event) =>  table.getColumn('file_name')?.setFilterValue(event.target.value)}\n            className=\"flex-1 text-sm\"\n          /> */}\n        </div>\n        <div>\n          {building ? (\n            <Button onClick={() => {\n              showToast({\n                message: localize('com_tools_knowledge_rebuilding'),\n                severity: NotificationSeverity.WARNING,\n              });\n            }}>\n              {localize('com_knowledge_add_file')}\n            </Button>\n          ) : (\n            <AttachFileButton disabled={loading} handleFileChange={handleUpload} />\n          )}\n        </div>\n      </div>\n\n      <div className=\"relative grid h-full max-h-[calc(100vh-20rem)] w-full flex-1 overflow-hidden overflow-x-auto overflow-y-auto rounded-md border border-black/10 dark:border-white/10\">\n        <Table className=\"w-full min-w-[300px] border-separate border-spacing-0\">\n          <TableHeader className=\"sticky top-0 z-50\">\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id} className=\"border-b border-border-light\">\n                {headerGroup.headers.map((header, index) => {\n                  const style: Style = {};\n                  if (index === 0 && header.id === 'select') {\n                    style.width = '35px';\n                    style.minWidth = '35px';\n                  } else if (header.id === 'filename') {\n                    style.width = isSmallScreen ? '60%' : '40%';\n                  } else {\n                    style.width = isSmallScreen ? '20%' : '15%';\n                  }\n\n                  return (\n                    <TableHead\n                      key={header.id}\n                      className=\"whitespace-nowrap bg-surface-secondary px-2 py-2 text-left text-sm font-medium text-text-secondary sm:px-4\"\n                      style={{ ...style }}\n                    >\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(header.column.columnDef.header, header.getContext())}\n                    </TableHead>\n                  );\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody className=\"w-full\">\n            {table.getRowModel().rows.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && 'selected'}\n                  className=\"border-b border-border-light transition-colors hover:bg-surface-secondary [tr:last-child_&]:border-b-0\"\n                >\n                  {row.getVisibleCells().map((cell, index) => {\n                    const maxWidth =\n                      (cell.column.columnDef as AugmentedColumnDef<TData, TValue>).meta?.size ??\n                      'auto';\n\n                    const style: Style = {};\n                    if (cell.column.id === 'filename') {\n                      style.maxWidth = maxWidth;\n                    } else if (index === 0) {\n                      style.maxWidth = '20px';\n                    }\n\n                    return (\n                      <TableCell\n                        key={cell.id}\n                        className=\"align-start overflow-x-auto px-2 py-1 text-xs sm:px-4 sm:py-2 sm:text-sm [tr[data-disabled=true]_&]:opacity-50\"\n                        style={style}\n                      >\n                        {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                      </TableCell>\n                    );\n                  })}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                  {localize('com_files_no_results')}\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n\n      <div className=\"flex items-center justify-end gap-2 py-4\">\n        <div className=\"ml-2 flex-1 truncate text-xs text-muted-foreground sm:ml-4 sm:text-sm\">\n          {/* <span className=\"hidden sm:inline\">\n            {localize('com_files_number_selected', {\n              0: `${table.getFilteredSelectedRowModel().rows.length}`,\n              1: `${table.getFilteredRowModel().rows.length}`,\n            })}\n          </span> */}\n          <span className=\"sm:hidden\">\n            {`${table.getFilteredSelectedRowModel().rows.length}/${table.getFilteredRowModel().rows.length}`}\n          </span>\n        </div>\n        <div className=\"flex items-center space-x-1 pr-2 text-xs font-bold text-text-primary sm:text-sm\">\n          <span className=\"hidden sm:inline\">{localize('com_ui_page')}</span>\n          <span>{page}</span>\n          <span>/</span>\n          <span>{table.getPageCount()}</span>\n        </div>\n        <Button\n          className=\"select-none\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => onPage(page - 1)}\n          disabled={page === 1}\n        >\n          {localize('com_ui_prev')}\n        </Button>\n        <Button\n          className=\"select-none\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => onPage(page + 1)}\n          disabled={page === table.getPageCount()}\n        >\n          {localize('com_ui_next')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx",
    "content": "import { ArrowUpDown, Database, Download, TrashIcon } from 'lucide-react';\nimport { FileSources, FileContext, dataService } from '~/data-provider/data-provider/src';\nimport type { ColumnDef } from '@tanstack/react-table';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { Button, Checkbox, OpenAIMinimalIcon, AzureMinimalIcon } from '~/components';\nimport ImagePreview from '~/components/Chat/Input/Files/ImagePreview';\nimport FilePreview from '~/components/Chat/Input/Files/FilePreview';\nimport { SortFilterHeader } from './SortFilterHeader';\nimport { TranslationKeys, useLocalize, useMediaQuery } from '~/hooks';\nimport { formatDate, getFileType } from '~/utils';\n\nconst contextMap: Record<any, TranslationKeys> = {\n  [FileContext.avatar]: 'com_ui_avatar',\n  [FileContext.unknown]: 'com_ui_unknown',\n  [FileContext.assistants]: 'com_ui_assistants',\n  [FileContext.image_generation]: 'com_ui_image_gen',\n  [FileContext.assistants_output]: 'com_ui_assistants_output',\n  [FileContext.message_attachment]: 'com_ui_attachment',\n};\n\nexport const getKnowledgeColumns = (\n  handleDelete: (row: any) => void,\n  handleDownload: (row: any) => void\n): ColumnDef<TFile>[] => {\n  const localize = useLocalize();\n\n  return [\n    {\n      meta: {\n        size: '150px',\n      },\n      accessorKey: 'file_name',\n      header: ({ column }) => {\n        return localize('com_ui_name');\n      },\n    },\n    {\n      accessorKey: 'update_time',\n      header: ({ column }) => {\n        return localize('com_knowledge_upload_time');\n      },\n      cell: ({ row }) => {\n        return row.original.update_time.replace('T', ' ');\n      },\n    },\n    {\n      accessorKey: 'status',\n      header: ({ column }) => {\n        return localize('com_knowledge_status');\n      },\n      cell: ({ row }) => {\n        const statusTexts = [\n          '',\n          localize('com_knowledge_processing'),\n          localize('com_knowledge_success'),\n          localize('com_knowledge_failed'),\n          localize('com_knowledge_model_switching'),\n          localize('com_knowledge_processing'),\n        ];\n        return statusTexts[row.original.status];\n      },\n    },\n    {\n      accessorKey: 'operate',\n      header: ({ column }) => {\n        return localize('com_knowledge_operation');\n      },\n      cell: ({ row }) => {\n        return (\n          <div className=\"flex items-center gap-3\">\n            <div\n              className=\"cursor-pointer rounded-md px-2 py-1 hover:bg-gray-100\"\n              onClick={() => handleDownload(row.original.id, row.original.file_name)}\n            >\n              <Download className=\"h-5 w-5\" />\n            </div>\n            <div\n              className=\"cursor-pointer rounded-md text-red-700 px-2 py-1 hover:bg-gray-100\"\n              onClick={() => handleDelete(row.original.id)}\n            >\n              <TrashIcon className=\"h-5 w-5\" />\n            </div>\n          </div>\n        );\n      },\n    },\n  ];\n};"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/SortFilterHeader.tsx",
    "content": "import { Column } from '@tanstack/react-table';\nimport { ListFilter, FilterX } from 'lucide-react';\nimport { ArrowDownIcon, ArrowUpIcon, CaretSortIcon } from '@radix-ui/react-icons';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from '~/components/ui/DropdownMenu';\nimport { Button } from '~/components/ui/Button';\nimport { useLocalize, TranslationKeys } from '~/hooks';\nimport { cn } from '~/utils';\n\ninterface SortFilterHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n  title: string;\n  column: Column<TData, TValue>;\n  filters?: Record<string, string[] | number[]>;\n  valueMap?: Record<any, TranslationKeys>;\n}\n\nexport function SortFilterHeader<TData, TValue>({\n  column,\n  title,\n  className = '',\n  filters,\n  valueMap,\n}: SortFilterHeaderProps<TData, TValue>) {\n  const localize = useLocalize();\n  if (!column.getCanSort()) {\n    return <div className={cn(className)}>{title}</div>;\n  }\n\n  return (\n    <div className={cn('flex items-center space-x-2', className)}>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"ghost\"\n            className=\"px-2 py-0 text-xs hover:bg-surface-hover data-[state=open]:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n          >\n            <span>{title}</span>\n            {column.getIsFiltered() ? (\n              <ListFilter className=\"icon-sm ml-2 text-muted-foreground/70\" />\n            ) : (\n              <ListFilter className=\"icon-sm ml-2 opacity-30\" />\n            )}\n            {(() => {\n              const sortState = column.getIsSorted();\n              if (sortState === 'desc') {\n                return <ArrowDownIcon className=\"icon-sm ml-2\" />;\n              }\n              if (sortState === 'asc') {\n                return <ArrowUpIcon className=\"icon-sm ml-2\" />;\n              }\n              return <CaretSortIcon className=\"icon-sm ml-2\" />;\n            })()}\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent\n          align=\"start\"\n          className=\"z-[1001] dark:border-gray-700 dark:bg-gray-850\"\n        >\n          <DropdownMenuItem\n            onClick={() => column.toggleSorting(false)}\n            className=\"cursor-pointer text-text-primary\"\n          >\n            <ArrowUpIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n            {localize('com_ui_ascending')}\n          </DropdownMenuItem>\n          <DropdownMenuItem\n            onClick={() => column.toggleSorting(true)}\n            className=\"cursor-pointer text-text-primary\"\n          >\n            <ArrowDownIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n            {localize('com_ui_descending')}\n          </DropdownMenuItem>\n          <DropdownMenuSeparator className=\"dark:bg-gray-500\" />\n          {filters &&\n            Object.entries(filters).map(([key, values]) =>\n              values.map((value?: string | number) => {\n                const translationKey = valueMap?.[value ?? ''];\n                const filterValue =\n                  translationKey != null && translationKey.length\n                    ? localize(translationKey)\n                    : String(value);\n                if (!filterValue) {\n                  return null;\n                }\n                return (\n                  <DropdownMenuItem\n                    className=\"cursor-pointer text-text-primary\"\n                    key={`${key}-${value}`}\n                    onClick={() => {\n                      column.setFilterValue(value);\n                    }}\n                  >\n                    <ListFilter className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n                    {filterValue}\n                  </DropdownMenuItem>\n                );\n              }),\n            )}\n          {filters && (\n            <DropdownMenuItem\n              className={\n                column.getIsFiltered()\n                  ? 'cursor-pointer dark:text-white dark:hover:bg-gray-800'\n                  : 'pointer-events-none opacity-30'\n              }\n              onClick={() => {\n                column.setFilterValue(undefined);\n              }}\n            >\n              <FilterX className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n              {localize('com_ui_show_all')}\n            </DropdownMenuItem>\n          )}\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/TemplateTable.tsx",
    "content": "import { DotsIcon, TrashIcon } from '~/components/svg';\n\nexport default function Template() {\n  return (\n    <div className=\"max-h-[28rem] overflow-y-auto rounded-md border border-black/10 dark:border-white/10\">\n      <table className=\"w-full border-separate border-spacing-0\">\n        <thead>\n          <tr>\n            <th className=\"sticky top-0 rounded-t border-b border-black/10 bg-white px-4 py-2 text-left font-medium text-gray-700 dark:border-white/10 dark:bg-gray-900 dark:text-gray-100\">\n              Name\n            </th>\n            <th className=\"sticky top-0 rounded-t border-b border-black/10 bg-white px-4 py-2 text-left font-medium text-gray-700 dark:border-white/10 dark:bg-gray-900 dark:text-gray-100\">\n              Date\n            </th>\n            <th className=\"sticky top-0 rounded-t border-b border-black/10 bg-white px-4 py-2 text-left font-medium text-gray-700 dark:border-white/10 dark:bg-gray-900 dark:text-gray-100\">\n              Size\n            </th>\n            <th className=\"sticky top-0 rounded-t border-b border-black/10 bg-white px-4 py-2 text-right font-medium text-gray-700 dark:border-white/10 dark:bg-gray-900 dark:text-gray-100\">\n              <button\n                className=\"text-gray-500 hover:text-gray-600 radix-state-open:text-gray-600 dark:hover:text-gray-400 dark:radix-state-open:text-gray-400\"\n                type=\"button\"\n                id=\"radix-:r67:\"\n                aria-haspopup=\"menu\"\n                aria-expanded=\"false\"\n                data-state=\"closed\"\n              >\n                <DotsIcon />\n              </button>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr className=\"\">\n            <td className=\"border-b border-black/10 text-left text-gray-600 dark:border-white/10 dark:text-gray-300 [tr:last-child_&]:border-b-0\">\n              <div className=\"px-4 py-2 [tr[data-disabled=true]_&]:opacity-50\">\n                File Transfer: Node to FastAPI\n              </div>\n            </td>\n            <td className=\"border-b border-black/10 text-left text-gray-600 dark:border-white/10 dark:text-gray-300 [tr:last-child_&]:border-b-0\">\n              <div className=\"px-4 py-2 [tr[data-disabled=true]_&]:opacity-50\">June 11, 2023</div>\n            </td>\n            <td className=\"border-b border-black/10 text-left text-gray-600 dark:border-white/10 dark:text-gray-300 [tr:last-child_&]:border-b-0\">\n              <div className=\"px-4 py-2 [tr[data-disabled=true]_&]:opacity-50\">11 mb</div>\n            </td>\n            <td className=\"border-b border-black/10 text-left text-gray-600 dark:border-white/10 dark:text-gray-300 [tr:last-child_&]:border-b-0\">\n              <div className=\"px-4 py-2 [tr[data-disabled=true]_&]:opacity-50\">\n                <div className=\"flex items-center justify-end gap-2\">\n                  <span className=\"\" data-state=\"closed\">\n                    <a\n                      href=\"/c/da3130ea-830c-4dd2-9d2d-d875e71e3867\"\n                      target=\"_blank\"\n                      rel=\"noreferrer\"\n                      aria-label=\"View source chat\"\n                      className=\"text-gray-500 hover:text-gray-600 dark:hover:text-gray-400\"\n                    >\n                      <svg\n                        stroke=\"currentColor\"\n                        fill=\"none\"\n                        strokeWidth=\"2\"\n                        viewBox=\"0 0 24 24\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        className=\"h-4 w-4\"\n                        height=\"1em\"\n                        width=\"1em\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"></path>\n                      </svg>\n                    </a>\n                  </span>\n                  <span className=\"\" data-state=\"closed\">\n                    <button\n                      aria-label=\"Delete shared link\"\n                      className=\"text-gray-500 hover:text-gray-600 dark:hover:text-gray-400\"\n                    >\n                      <TrashIcon />\n                    </button>\n                  </span>\n                </div>\n              </div>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/fakeData.ts",
    "content": "import { FileSources } from '~/data-provider/data-provider/src';\nimport type { TFile } from '~/data-provider/data-provider/src';\n\nexport const files: TFile[] = [\n  {\n    _id: '65b004acd70ce86b9146e9dd',\n    file_id: 'file-CbxzlOiGvaG2uwhuAdKXdUpX',\n    __v: 0,\n    bytes: 18740,\n    createdAt: '2024-01-23T18:25:48.153Z',\n    filename: 'dataset.xlsx',\n    filepath: 'https://api.openai.com/v1/files/file-CbxzlOiGvaG2uwhuAdKXdUpX',\n    object: 'file',\n    source: FileSources.openai,\n    temp_file_id: '63214c34-2d2c-445f-9c60-5cf04c15607c',\n    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n    updatedAt: '2024-01-23T18:25:48.153Z',\n    usage: 0,\n    user: '652ac880c4102a77fe54c5db',\n    embedded: false,\n  },\n  {\n    _id: '65b004abd70ce86b9146e861',\n    file_id: '86fe0534-803c-4e88-b730-73ec4187742f',\n    __v: 0,\n    bytes: 3147861,\n    createdAt: '2024-01-23T18:25:47.698Z',\n    filename: 'img-337c49c7-fb1f-4a14-939d-40d12de11d5c.png',\n    filepath: '/images/652ac880c4102a77fe54c5db/img-337c49c7-fb1f-4a14-939d-40d12de11d5c.png',\n    height: 1024,\n    object: 'file',\n    source: FileSources.local,\n    type: 'image/png',\n    updatedAt: '2024-01-23T18:25:47.698Z',\n    usage: 0,\n    user: '652ac880c4102a77fe54c5db',\n    width: 1024,\n    embedded: false,\n  },\n  {\n    _id: '65b00495d70ce86b9146adc1',\n    file_id: 'e301fdff-6fae-48d3-a9a2-c7fe66357890',\n    __v: 0,\n    bytes: 3147861,\n    createdAt: '2024-01-23T18:25:25.324Z',\n    filename: 'img-459c76d1-16b7-48f9-9ff7-85ba6464e204.png',\n    filepath: '/images/652ac880c4102a77fe54c5db/img-459c76d1-16b7-48f9-9ff7-85ba6464e204.png',\n    height: 1024,\n    object: 'file',\n    source: FileSources.local,\n    type: 'image/png',\n    updatedAt: '2024-01-23T18:25:25.324Z',\n    usage: 0,\n    user: '652ac880c4102a77fe54c5db',\n    width: 1024,\n    embedded: false,\n  },\n  {\n    _id: '65b00494d70ce86b9146ace6',\n    file_id: '63cf2058-3ad1-4712-afbe-6b475119c33a',\n    __v: 0,\n    bytes: 3147861,\n    createdAt: '2024-01-23T18:25:25.035Z',\n    filename: 'img-c3fb2935-e578-4d72-b397-d1dcb122af67.png',\n    filepath: '/images/652ac880c4102a77fe54c5db/img-c3fb2935-e578-4d72-b397-d1dcb122af67.png',\n    height: 1024,\n    object: 'file',\n    source: FileSources.local,\n    type: 'image/png',\n    updatedAt: '2024-01-23T18:25:25.035Z',\n    usage: 0,\n    user: '652ac880c4102a77fe54c5db',\n    width: 1024,\n    embedded: false,\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Files/Table/index.ts",
    "content": "export { columns } from './Columns';\nexport { getKnowledgeColumns } from './KnowledgeColumns';\nexport { default as DataTable } from './DataTable';\nexport { default as DataTableKnowledge } from './DataTableKnowledge';\nexport { default as TemplateTable } from './TemplateTable';\nexport { files } from './fakeData';\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/HeaderOptions.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Settings2 } from 'lucide-react';\nimport { useState, useEffect, useMemo } from 'react';\nimport { Root, Anchor } from '@radix-ui/react-popover';\nimport {\n  EModelEndpoint,\n  isParamEndpoint,\n  isAgentsEndpoint,\n  tConvoUpdateSchema,\n} from '~/data-provider/data-provider/src';\nimport type { TPreset, TInterfaceConfig } from '~/data-provider/data-provider/src';\nimport { EndpointSettings, SaveAsPresetDialog, AlternativeSettings } from '~/components/Endpoints';\nimport { PluginStoreDialog, TooltipAnchor } from '~/components';\nimport { ModelSelect } from '~/components/Input/ModelSelect';\nimport { useSetIndexOptions, useLocalize } from '~/hooks';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport OptionsPopover from './OptionsPopover';\nimport PopoverButtons from './PopoverButtons';\nimport { useChatContext } from '~/Providers';\nimport { getEndpointField } from '~/utils';\nimport store from '~/store';\n\nexport default function HeaderOptions({\n  interfaceConfig,\n}: {\n  interfaceConfig?: Partial<TInterfaceConfig>;\n}) {\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const [saveAsDialogShow, setSaveAsDialogShow] = useState<boolean>(false);\n  const [showPluginStoreDialog, setShowPluginStoreDialog] = useRecoilState(\n    store.showPluginStoreDialog,\n  );\n  const localize = useLocalize();\n\n  const { showPopover, conversation, setShowPopover } = useChatContext();\n  const { setOption } = useSetIndexOptions();\n  const { endpoint, conversationId } = conversation ?? {};\n\n  const noSettings = useMemo<{ [key: string]: boolean }>(\n    () => ({\n      [EModelEndpoint.chatGPTBrowser]: true,\n    }),\n    [conversationId],\n  );\n\n  useEffect(() => {\n    if (endpoint && noSettings[endpoint]) {\n      setShowPopover(false);\n    }\n  }, [endpoint, noSettings]);\n\n  const saveAsPreset = () => {\n    setSaveAsDialogShow(true);\n  };\n\n  if (!endpoint) {\n    return null;\n  }\n\n  const triggerAdvancedMode = () => setShowPopover((prev) => !prev);\n\n  const endpointType = getEndpointField(endpointsConfig, endpoint, 'type');\n  const paramEndpoint = isParamEndpoint(endpoint, endpointType);\n\n  return (\n    <Root\n      open={showPopover}\n      // onOpenChange={} //  called when the open state of the popover changes.\n    >\n      <Anchor>\n        <div className=\"my-auto lg:max-w-2xl xl:max-w-3xl\">\n          <span className=\"flex w-full flex-col items-center justify-center gap-0 md:order-none md:m-auto md:gap-2\">\n            <div className=\"z-[61] flex w-full items-center justify-center gap-2\">\n              {interfaceConfig?.modelSelect === true && !isAgentsEndpoint(endpoint) && (\n                <ModelSelect\n                  conversation={conversation}\n                  setOption={setOption}\n                  showAbove={false}\n                  popover={true}\n                />\n              )}\n              {!noSettings[endpoint] &&\n                interfaceConfig?.parameters === true &&\n                paramEndpoint === false && (\n                <TooltipAnchor\n                  id=\"parameters-button\"\n                  aria-label={localize('com_ui_model_parameters')}\n                  description={localize('com_ui_model_parameters')}\n                  tabIndex={0}\n                  role=\"button\"\n                  onClick={triggerAdvancedMode}\n                  data-testid=\"parameters-button\"\n                  className=\"inline-flex size-10 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary\"\n                >\n                  <Settings2 size={16} aria-label=\"Settings/Parameters Icon\" />\n                </TooltipAnchor>\n              )}\n            </div>\n            {interfaceConfig?.parameters === true && paramEndpoint === false && (\n              <OptionsPopover\n                visible={showPopover}\n                saveAsPreset={saveAsPreset}\n                presetsDisabled={!(interfaceConfig.presets ?? false)}\n                PopoverButtons={<PopoverButtons />}\n                closePopover={() => setShowPopover(false)}\n              >\n                <div className=\"px-4 py-4\">\n                  <EndpointSettings\n                    className=\"[&::-webkit-scrollbar]:w-2\"\n                    conversation={conversation}\n                    setOption={setOption}\n                  />\n                  <AlternativeSettings conversation={conversation} setOption={setOption} />\n                </div>\n              </OptionsPopover>\n            )}\n            {interfaceConfig?.presets === true && (\n              <SaveAsPresetDialog\n                open={saveAsDialogShow}\n                onOpenChange={setSaveAsDialogShow}\n                preset={\n                  tConvoUpdateSchema.parse({\n                    ...conversation,\n                  }) as TPreset\n                }\n              />\n            )}\n            {interfaceConfig?.parameters === true && (\n              <PluginStoreDialog\n                isOpen={showPluginStoreDialog}\n                setIsOpen={setShowPluginStoreDialog}\n              />\n            )}\n          </span>\n        </div>\n      </Anchor>\n    </Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/Mention.tsx",
    "content": "import { useState, useRef, useEffect } from 'react';\nimport { AutoSizer, List } from 'react-virtualized';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport type { MentionOption, ConvoGenerator } from '~/common';\nimport useSelectMention from '~/hooks/Input/useSelectMention';\nimport { useAssistantsMapContext } from '~/Providers';\nimport useMentions from '~/hooks/Input/useMentions';\nimport { useLocalize, useCombobox, TranslationKeys } from '~/hooks';\nimport { removeCharIfLast } from '~/utils';\nimport MentionItem from './MentionItem';\n\nconst ROW_HEIGHT = 40;\n\nexport default function Mention({\n  setShowMentionPopover,\n  newConversation,\n  textAreaRef,\n  commandChar = '@',\n  placeholder = 'com_ui_mention',\n  includeAssistants = true,\n}: {\n  setShowMentionPopover: SetterOrUpdater<boolean>;\n  newConversation: ConvoGenerator;\n  textAreaRef: React.MutableRefObject<HTMLTextAreaElement | null>;\n  commandChar?: string;\n  placeholder?: TranslationKeys;\n  includeAssistants?: boolean;\n}) {\n  const localize = useLocalize();\n  const assistantMap = useAssistantsMapContext();\n  const {\n    options,\n    presets,\n    modelSpecs,\n    agentsList,\n    modelsConfig,\n    endpointsConfig,\n    assistantListMap,\n  } = useMentions({ assistantMap: assistantMap || {}, includeAssistants });\n  const { onSelectMention } = useSelectMention({\n    presets,\n    modelSpecs,\n    assistantMap,\n    endpointsConfig,\n    newConversation,\n  });\n\n  const [activeIndex, setActiveIndex] = useState(0);\n  const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const [inputOptions, setInputOptions] = useState<MentionOption[]>(options);\n\n  const { open, setOpen, searchValue, setSearchValue, matches } = useCombobox({\n    value: '',\n    options: inputOptions,\n  });\n\n  const handleSelect = (mention?: MentionOption) => {\n    if (!mention) {\n      return;\n    }\n\n    const defaultSelect = () => {\n      setSearchValue('');\n      setOpen(false);\n      setShowMentionPopover(false);\n      onSelectMention(mention);\n\n      if (textAreaRef.current) {\n        removeCharIfLast(textAreaRef.current, commandChar);\n      }\n    };\n\n    if (mention.type === 'endpoint' && mention.value === EModelEndpoint.agents) {\n      setSearchValue('');\n      setInputOptions(agentsList ?? []);\n      setActiveIndex(0);\n      inputRef.current?.focus();\n    } else if (mention.type === 'endpoint' && mention.value === EModelEndpoint.assistants) {\n      setSearchValue('');\n      setInputOptions(assistantListMap[EModelEndpoint.assistants] ?? []);\n      setActiveIndex(0);\n      inputRef.current?.focus();\n    } else if (mention.type === 'endpoint' && mention.value === EModelEndpoint.azureAssistants) {\n      setSearchValue('');\n      setInputOptions(assistantListMap[EModelEndpoint.azureAssistants] ?? []);\n      setActiveIndex(0);\n      inputRef.current?.focus();\n    } else if (mention.type === 'endpoint') {\n      const models = (modelsConfig?.[mention.value || ''] ?? []).map((model) => ({\n        value: mention.value,\n        label: model,\n        type: 'model',\n      }));\n\n      setActiveIndex(0);\n      setSearchValue('');\n      setInputOptions(models);\n      inputRef.current?.focus();\n    } else {\n      defaultSelect();\n    }\n  };\n\n  useEffect(() => {\n    if (!open) {\n      setInputOptions(options);\n      setActiveIndex(0);\n    }\n  }, [open, options]);\n\n  useEffect(() => {\n    return () => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n    };\n  }, []);\n\n  const type = commandChar !== '@' ? 'add-convo' : 'mention';\n  useEffect(() => {\n    const currentActiveItem = document.getElementById(`${type}-item-${activeIndex}`);\n    currentActiveItem?.scrollIntoView({ behavior: 'instant', block: 'nearest' });\n  }, [type, activeIndex]);\n\n  const rowRenderer = ({\n    index,\n    key,\n    style,\n  }: {\n    index: number;\n    key: string;\n    style: React.CSSProperties;\n  }) => {\n    const mention = matches[index] as MentionOption;\n    return (\n      <MentionItem\n        type={type}\n        index={index}\n        key={key}\n        style={style}\n        onClick={(e) => {\n          e.preventDefault();\n          e.stopPropagation();\n          if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n          }\n          timeoutRef.current = null;\n          handleSelect(mention);\n        }}\n        name={mention.label ?? ''}\n        icon={mention.icon}\n        description={mention.description}\n        isActive={index === activeIndex}\n      />\n    );\n  };\n\n  return (\n    <div className=\"absolute bottom-14 z-10 w-full space-y-2\">\n      <div className=\"popover border-token-border-light rounded-2xl border bg-white p-2 shadow-lg dark:bg-gray-700\">\n        <input\n          // The user expects focus to transition to the input field when the popover is opened\n\n          autoFocus\n          ref={inputRef}\n          placeholder={localize(placeholder)}\n          className=\"mb-1 w-full border-0 bg-white p-2 text-sm focus:outline-none dark:bg-gray-700 dark:text-gray-200\"\n          autoComplete=\"off\"\n          value={searchValue}\n          onKeyDown={(e) => {\n            if (e.key === 'Escape') {\n              setOpen(false);\n              setShowMentionPopover(false);\n              textAreaRef.current?.focus();\n            }\n            if (e.key === 'ArrowDown') {\n              setActiveIndex((prevIndex) => (prevIndex + 1) % matches.length);\n            } else if (e.key === 'ArrowUp') {\n              setActiveIndex((prevIndex) => (prevIndex - 1 + matches.length) % matches.length);\n            } else if (e.key === 'Enter' || e.key === 'Tab') {\n              const mentionOption = matches[activeIndex] as MentionOption | undefined;\n              if (mentionOption?.type === 'endpoint') {\n                e.preventDefault();\n              } else if (e.key === 'Enter') {\n                e.preventDefault();\n              }\n              handleSelect(matches[activeIndex] as MentionOption);\n            } else if (e.key === 'Backspace' && searchValue === '') {\n              setOpen(false);\n              setShowMentionPopover(false);\n              textAreaRef.current?.focus();\n            }\n          }}\n          onChange={(e) => setSearchValue(e.target.value)}\n          onFocus={() => setOpen(true)}\n          onBlur={() => {\n            timeoutRef.current = setTimeout(() => {\n              setOpen(false);\n              setShowMentionPopover(false);\n            }, 150);\n          }}\n        />\n        {open && (\n          <div className=\"max-h-40\">\n            <AutoSizer disableHeight>\n              {({ width }) => (\n                <List\n                  width={width}\n                  overscanRowCount={5}\n                  rowHeight={ROW_HEIGHT}\n                  rowCount={matches.length}\n                  rowRenderer={rowRenderer}\n                  scrollToIndex={activeIndex}\n                  height={Math.min(matches.length * ROW_HEIGHT, 160)}\n                />\n              )}\n            </AutoSizer>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/MentionItem.tsx",
    "content": "import React from 'react';\nimport { Clock4 } from 'lucide-react';\nimport { cn } from '~/utils';\n\nexport interface MentionItemProps {\n  name: string;\n  onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n  index: number;\n  type?: 'prompt' | 'mention' | 'add-convo';\n  icon?: React.ReactNode;\n  isActive?: boolean;\n  description?: string;\n  style?: React.CSSProperties;\n}\n\nexport default function MentionItem({\n  name,\n  onClick,\n  index,\n  icon,\n  isActive,\n  description,\n  style,\n  type = 'mention',\n}: MentionItemProps) {\n  return (\n    <button\n      tabIndex={index}\n      onClick={onClick}\n      id={`${type}-item-${index}`}\n      className=\"w-full\"\n      style={style}\n    >\n      <div\n        className={cn(\n          'text-token-text-primary bg-token-main-surface-secondary group flex h-10 items-center gap-2 rounded-lg px-2 text-sm font-medium hover:bg-surface-secondary',\n          isActive === true ? 'bg-surface-active' : 'bg-transparent',\n        )}\n      >\n        <div className=\"flex h-5 w-5 flex-shrink-0 items-center justify-center\">{icon}</div>\n        <div className=\"flex min-w-0 flex-grow items-center justify-between\">\n          <div className=\"truncate\">\n            <span className=\"font-medium\">{name}</span>\n            {description != null && description ? (\n              <span className=\"text-token-text-tertiary ml-2 text-sm font-light\">\n                {description}\n              </span>\n            ) : null}\n          </div>\n          <Clock4 size={16} className=\"ml-2 flex-shrink-0\" />\n        </div>\n      </div>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/OptionsPopover.tsx",
    "content": "import { useRef } from 'react';\nimport { Save } from 'lucide-react';\nimport { Portal, Content } from '@radix-ui/react-popover';\nimport type { ReactNode } from 'react';\nimport { useLocalize, useOnClickOutside } from '~/hooks';\nimport { cn, removeFocusOutlines } from '~/utils';\nimport { CrossIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype TOptionsPopoverProps = {\n  children: ReactNode;\n  visible: boolean;\n  saveAsPreset: () => void;\n  closePopover: () => void;\n  PopoverButtons: ReactNode;\n  presetsDisabled: boolean;\n};\n\nexport default function OptionsPopover({\n  children,\n  // endpoint,\n  visible,\n  saveAsPreset,\n  closePopover,\n  PopoverButtons,\n  presetsDisabled,\n}: TOptionsPopoverProps) {\n  const popoverRef = useRef(null);\n  useOnClickOutside(\n    popoverRef,\n    () => closePopover(),\n    ['dialog-template-content', 'shadcn-button', 'advanced-settings'],\n    (_target) => {\n      const target = _target as Element;\n      if (\n        target.id === 'presets-button' ||\n        (target.parentNode instanceof Element && target.parentNode.id === 'presets-button')\n      ) {\n        return false;\n      }\n      const tagName = target.tagName;\n      return tagName === 'path' || tagName === 'svg' || tagName === 'circle';\n    },\n  );\n\n  const localize = useLocalize();\n  const cardStyle =\n    'shadow-xl rounded-md min-w-[75px] font-normal bg-white border-black/10 border dark:bg-gray-700 text-black dark:text-white';\n\n  if (!visible) {\n    return null;\n  }\n\n  return (\n    <Portal>\n      <Content sideOffset={8} align=\"start\" ref={popoverRef} asChild>\n        <div className=\"z-[70] flex w-screen flex-col items-center md:w-full md:px-4\">\n          <div\n            className={cn(\n              cardStyle,\n              'dark:bg-gray-700',\n              'border-d-0 flex w-full flex-col overflow-hidden rounded-none border-s-0 border-t bg-white px-0 pb-[10px] dark:border-white/10 md:rounded-md md:border lg:w-[736px]',\n            )}\n          >\n            <div className=\"flex w-full items-center bg-gray-50 px-2 py-2 dark:bg-gray-700\">\n              {presetsDisabled ? null : (\n                <Button\n                  type=\"button\"\n                  className=\"h-auto w-[150px] justify-start rounded-md border border-gray-300/50 bg-transparent px-2 py-1 text-xs font-normal text-black hover:bg-gray-100 hover:text-black focus-visible:ring-1 focus-visible:ring-ring-primary dark:border-gray-600 dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:focus-visible:ring-white\"\n                  onClick={saveAsPreset}\n                >\n                  <Save className=\"mr-1 w-[14px]\" />\n                  {localize('com_endpoint_save_as_preset')}\n                </Button>\n              )}\n              {PopoverButtons}\n              <Button\n                type=\"button\"\n                className={cn(\n                  'ml-auto h-auto bg-transparent px-3 py-2 text-xs font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-700 dark:hover:text-white',\n                  removeFocusOutlines,\n                )}\n                onClick={closePopover}\n              >\n                <CrossIcon />\n              </Button>\n            </div>\n            <div>{children}</div>\n          </div>\n        </div>\n      </Content>\n    </Portal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/PopoverButtons.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { EModelEndpoint, SettingsViews } from '~/data-provider/data-provider/src';\nimport type { ReactNode } from 'react';\nimport { MessagesSquared, GPTIcon, AssistantIcon, DataIcon } from '~/components/svg';\nimport { useChatContext } from '~/Providers';\nimport { Button } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils/';\nimport store from '~/store';\n\ntype TPopoverButton = {\n  label: string;\n  buttonClass: string;\n  handler: () => void;\n  type?: 'alternative';\n  icon: ReactNode;\n};\n\nexport default function PopoverButtons({\n  buttonClass,\n  iconClass = '',\n  endpoint: _overrideEndpoint,\n  endpointType: overrideEndpointType,\n  model: overrideModel,\n}: {\n  buttonClass?: string;\n  iconClass?: string;\n  endpoint?: EModelEndpoint | string;\n  endpointType?: EModelEndpoint | string;\n  model?: string | null;\n}) {\n  const {\n    conversation,\n    optionSettings,\n    setOptionSettings,\n    showAgentSettings,\n    setShowAgentSettings,\n  } = useChatContext();\n  const localize = useLocalize();\n  const [settingsView, setSettingsView] = useRecoilState(store.currentSettingsView);\n\n  const { model: _model, endpoint: _endpoint, endpointType } = conversation ?? {};\n  const overrideEndpoint = overrideEndpointType ?? _overrideEndpoint;\n  const endpoint = overrideEndpoint ?? endpointType ?? _endpoint ?? '';\n  const model = overrideModel ?? _model;\n\n  const isGenerativeModel = model?.toLowerCase().includes('gemini') ?? false;\n  const isChatModel = (!isGenerativeModel && model?.toLowerCase().includes('chat')) ?? false;\n  const isTextModel = !isGenerativeModel && !isChatModel && /code|text/.test(model ?? '');\n\n  const { showExamples } = optionSettings;\n  const showExamplesButton = !isGenerativeModel && !isTextModel && isChatModel;\n\n  const triggerExamples = () => {\n    setSettingsView(SettingsViews.default);\n    setOptionSettings((prev) => ({ ...prev, showExamples: !(prev.showExamples ?? false) }));\n  };\n\n  const endpointSpecificbuttons: { [key: string]: TPopoverButton[] } = {\n    [EModelEndpoint.google]: [\n      {\n        label: localize(showExamples === true ? 'com_hide_examples' : 'com_show_examples'),\n        buttonClass: isGenerativeModel === true || isTextModel ? 'disabled' : '',\n        handler: triggerExamples,\n        icon: <MessagesSquared className={cn('mr-1 w-[14px]', iconClass)} />,\n      },\n    ],\n    [EModelEndpoint.gptPlugins]: [\n      {\n        label: localize(\n          showAgentSettings ? 'com_show_completion_settings' : 'com_show_agent_settings',\n        ),\n        buttonClass: '',\n        handler: () => {\n          setSettingsView(SettingsViews.default);\n          setShowAgentSettings((prev) => !prev);\n        },\n        icon: <GPTIcon className={cn('mr-1 w-[14px]', iconClass)} size={24} />,\n      },\n    ],\n  };\n\n  if (!endpoint) {\n    return null;\n  }\n\n  if (endpoint === EModelEndpoint.google && !showExamplesButton) {\n    return null;\n  }\n\n  const additionalButtons: { [key: string]: TPopoverButton[] } = {\n    [SettingsViews.default]: [\n      {\n        label: 'Context Settings',\n        buttonClass: '',\n        type: 'alternative',\n        handler: () => setSettingsView(SettingsViews.advanced),\n        icon: <DataIcon className={cn('mr-1 h-6 w-[14px]', iconClass)} />,\n      },\n    ],\n    [SettingsViews.advanced]: [\n      {\n        label: 'Model Settings',\n        buttonClass: '',\n        type: 'alternative',\n        handler: () => setSettingsView(SettingsViews.default),\n        icon: <AssistantIcon className={cn('mr-1 h-6 w-[14px]', iconClass)} />,\n      },\n    ],\n  };\n\n  const endpointButtons = (endpointSpecificbuttons[endpoint] as TPopoverButton[] | null) ?? [];\n\n  const disabled = true;\n\n  return (\n    <div className=\"flex w-full justify-between\">\n      <div className=\"flex items-center justify-start\">\n        {endpointButtons.map((button, index) => (\n          <Button\n            key={`button-${index}`}\n            type=\"button\"\n            className={cn(\n              button.buttonClass,\n              'border border-gray-300/50 focus:ring-1 focus:ring-green-500/90 dark:border-gray-500/50 dark:focus:ring-green-500',\n              'ml-1 h-full bg-transparent px-2 py-1 text-xs font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white',\n              buttonClass ?? '',\n            )}\n            onClick={button.handler}\n          >\n            {button.icon}\n            {button.label}\n          </Button>\n        ))}\n      </div>\n      {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition */}\n      {disabled ? null : (\n        <div className=\"flex w-[150px] items-center justify-end\">\n          {additionalButtons[settingsView].map((button, index) => (\n            <Button\n              key={`button-${index}`}\n              type=\"button\"\n              className={cn(\n                button.buttonClass,\n                'flex justify-center border border-gray-300/50 focus:ring-1 focus:ring-green-500/90 dark:border-gray-500/50 dark:focus:ring-green-500',\n                'h-full w-full bg-transparent px-2 py-1 text-xs font-normal text-black hover:bg-gray-100 hover:text-black dark:bg-transparent dark:text-white dark:hover:bg-gray-600 dark:hover:text-white',\n                buttonClass ?? '',\n              )}\n              onClick={button.handler}\n            >\n              {button.icon}\n              {button.label}\n            </Button>\n          ))}\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/PromptsCommand.tsx",
    "content": "import { useState, useRef, useEffect, useMemo, memo, useCallback } from 'react';\nimport { AutoSizer, List } from 'react-virtualized';\nimport { useSetRecoilState, useRecoilValue } from 'recoil';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport type { PromptOption } from '~/common';\nimport { removeCharIfLast, mapPromptGroups, detectVariables } from '~/utils';\nimport VariableDialog from '~/components/Prompts/Groups/VariableDialog';\nimport CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';\nimport { useLocalize, useCombobox, useHasAccess } from '~/hooks';\nimport { useGetAllPromptGroups } from '~/data-provider';\nimport { Spinner } from '~/components/svg';\nimport MentionItem from './MentionItem';\nimport store from '~/store';\n\nconst commandChar = '/';\n\nconst PopoverContainer = memo(\n  ({\n    index,\n    children,\n    isVariableDialogOpen,\n    variableGroup,\n    setVariableDialogOpen,\n  }: {\n    index: number;\n    children: React.ReactNode;\n    isVariableDialogOpen: boolean;\n    variableGroup: TPromptGroup | null;\n    setVariableDialogOpen: (isOpen: boolean) => void;\n  }) => {\n    const showPromptsPopover = useRecoilValue(store.showPromptsPopoverFamily(index));\n    return (\n      <>\n        {showPromptsPopover ? children : null}\n        <VariableDialog\n          open={isVariableDialogOpen}\n          onClose={() => setVariableDialogOpen(false)}\n          group={variableGroup}\n        />\n      </>\n    );\n  },\n);\n\nconst ROW_HEIGHT = 40;\n\nfunction PromptsCommand({\n  index,\n  textAreaRef,\n  submitPrompt,\n}: {\n  index: number;\n  textAreaRef: React.MutableRefObject<HTMLTextAreaElement | null>;\n  submitPrompt: (textPrompt: string) => void;\n}) {\n  const localize = useLocalize();\n  const hasAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.USE,\n  });\n\n  const { data, isLoading } = useGetAllPromptGroups(undefined, {\n    enabled: hasAccess,\n    select: (data) => {\n      const mappedArray = data.map((group) => ({\n        id: group._id,\n        value: group.command ?? group.name,\n        label: `${group.command != null && group.command ? `/${group.command} - ` : ''}${\n          group.name\n        }: ${\n          (group.oneliner?.length ?? 0) > 0 ? group.oneliner : group.productionPrompt?.prompt ?? ''\n        }`,\n        icon: <CategoryIcon category={group.category ?? ''} className=\"h-5 w-5\" />,\n      }));\n\n      const promptsMap = mapPromptGroups(data);\n\n      return {\n        promptsMap,\n        promptGroups: mappedArray,\n      };\n    },\n  });\n\n  const [activeIndex, setActiveIndex] = useState(0);\n  const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const [isVariableDialogOpen, setVariableDialogOpen] = useState(false);\n  const [variableGroup, setVariableGroup] = useState<TPromptGroup | null>(null);\n  const setShowPromptsPopover = useSetRecoilState(store.showPromptsPopoverFamily(index));\n\n  const prompts = useMemo(() => data?.promptGroups, [data]);\n  const promptsMap = useMemo(() => data?.promptsMap, [data]);\n\n  const { open, setOpen, searchValue, setSearchValue, matches } = useCombobox({\n    value: '',\n    options: prompts ?? [],\n  });\n\n  const handleSelect = useCallback(\n    (mention?: PromptOption, e?: React.KeyboardEvent<HTMLInputElement>) => {\n      if (!mention) {\n        return;\n      }\n\n      setSearchValue('');\n      setOpen(false);\n      setShowPromptsPopover(false);\n\n      if (textAreaRef.current) {\n        removeCharIfLast(textAreaRef.current, commandChar);\n      }\n\n      const group = promptsMap?.[mention.id];\n      if (!group) {\n        return;\n      }\n\n      const hasVariables = detectVariables(group.productionPrompt?.prompt ?? '');\n      if (hasVariables) {\n        if (e && e.key === 'Tab') {\n          e.preventDefault();\n        }\n        setVariableGroup(group);\n        setVariableDialogOpen(true);\n        return;\n      } else {\n        submitPrompt(group.productionPrompt?.prompt ?? '');\n      }\n    },\n    [setSearchValue, setOpen, setShowPromptsPopover, textAreaRef, promptsMap, submitPrompt],\n  );\n\n  useEffect(() => {\n    if (!open) {\n      setActiveIndex(0);\n    } else {\n      setVariableGroup(null);\n    }\n  }, [open]);\n\n  useEffect(() => {\n    return () => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n    };\n  }, []);\n\n  useEffect(() => {\n    const currentActiveItem = document.getElementById(`prompt-item-${activeIndex}`);\n    currentActiveItem?.scrollIntoView({ behavior: 'instant', block: 'nearest' });\n  }, [activeIndex]);\n\n  if (!hasAccess) {\n    return null;\n  }\n\n  const rowRenderer = ({\n    index,\n    key,\n    style,\n  }: {\n    index: number;\n    key: string;\n    style: React.CSSProperties;\n  }) => {\n    const mention = matches[index] as PromptOption;\n    return (\n      <MentionItem\n        index={index}\n        type=\"prompt\"\n        key={key}\n        style={style}\n        onClick={() => {\n          if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n          }\n          timeoutRef.current = null;\n          handleSelect(mention);\n        }}\n        name={mention.label ?? ''}\n        icon={mention.icon}\n        description={mention.description}\n        isActive={index === activeIndex}\n      />\n    );\n  };\n\n  return (\n    <PopoverContainer\n      index={index}\n      isVariableDialogOpen={isVariableDialogOpen}\n      variableGroup={variableGroup}\n      setVariableDialogOpen={setVariableDialogOpen}\n    >\n      <div className=\"absolute bottom-14 z-10 w-full space-y-2\">\n        <div className=\"popover border-token-border-light rounded-2xl border bg-surface-tertiary-alt p-2 shadow-lg\">\n          <input\n            // The user expects focus to transition to the input field when the popover is opened\n            // eslint-disable-next-line jsx-a11y/no-autofocus\n            autoFocus\n            ref={inputRef}\n            placeholder={localize('com_ui_command_usage_placeholder')}\n            className=\"mb-1 w-full border-0 bg-surface-tertiary-alt p-2 text-sm focus:outline-none dark:text-gray-200\"\n            autoComplete=\"off\"\n            value={searchValue}\n            onKeyDown={(e) => {\n              if (e.key === 'Escape') {\n                setOpen(false);\n                setShowPromptsPopover(false);\n                textAreaRef.current?.focus();\n              }\n              if (e.key === 'ArrowDown') {\n                setActiveIndex((prevIndex) => (prevIndex + 1) % matches.length);\n              } else if (e.key === 'ArrowUp') {\n                setActiveIndex((prevIndex) => (prevIndex - 1 + matches.length) % matches.length);\n              } else if (e.key === 'Enter' || e.key === 'Tab') {\n                if (e.key === 'Enter') {\n                  e.preventDefault();\n                }\n                handleSelect(matches[activeIndex] as PromptOption | undefined, e);\n              } else if (e.key === 'Backspace' && searchValue === '') {\n                setOpen(false);\n                setShowPromptsPopover(false);\n                textAreaRef.current?.focus();\n              }\n            }}\n            onChange={(e) => setSearchValue(e.target.value)}\n            onFocus={() => setOpen(true)}\n            onBlur={() => {\n              timeoutRef.current = setTimeout(() => {\n                setOpen(false);\n                setShowPromptsPopover(false);\n              }, 150);\n            }}\n          />\n          <div className=\"max-h-40 overflow-y-auto\">\n            {(() => {\n              if (isLoading && open) {\n                return (\n                  <div className=\"flex h-32 items-center justify-center text-text-primary\">\n                    <Spinner />\n                  </div>\n                );\n              }\n\n              if (!isLoading && open) {\n                return (\n                  <div className=\"max-h-40\">\n                    <AutoSizer disableHeight>\n                      {({ width }) => (\n                        <List\n                          width={width}\n                          overscanRowCount={5}\n                          rowHeight={ROW_HEIGHT}\n                          rowCount={matches.length}\n                          rowRenderer={rowRenderer}\n                          scrollToIndex={activeIndex}\n                          height={Math.min(matches.length * ROW_HEIGHT, 160)}\n                        />\n                      )}\n                    </AutoSizer>\n                  </div>\n                );\n              }\n              return null;\n            })()}\n          </div>\n        </div>\n      </div>\n    </PopoverContainer>\n  );\n}\n\nexport default memo(PromptsCommand);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/SameSopSpan.tsx",
    "content": "import { ArrowRight, CircleX } from \"lucide-react\";\nimport { atom, useRecoilState } from \"recoil\";\nimport { Button } from \"~/components/ui\";\nimport { useLocalize } from \"~/hooks\";\n\nexport default function SameSopSpan() {\n    const [sameSopLabel, setSameSopLabel] = useRecoilState(sameSopLabelState)\n    const t = useLocalize();\n\n    const handleClose = () => {\n        setSameSopLabel(null)\n    }\n\n    const handleCardClick = () => {\n        sameSopLabel.url ? window.open(sameSopLabel.url) :\n            window.open(`${__APP_ENV__.BASE_URL}/linsight/case/${sameSopLabel.id}`)\n    }\n\n    if (!sameSopLabel) return null\n\n    return <div className=\"p-2 px-6\">\n        <div className=\"flex items-center justify-between border-b bg-background rounded-sm\">\n            <div className=\"flex items-center gap-3\">\n                <Button variant=\"ghost\" size=\"sm\" className=\"h-8 text-xs rounded-sm bg-primary/20 text-blue-600 hover:text-blue-700\">\n                    <ArrowRight className=\"h-3 w-3\" />\n                    {t('com_make_samestyle')}\n                </Button>\n            </div>\n\n            <div className=\"flex-1 pl-2\" onClick={handleCardClick}>\n                <p className=\"text-sm text-foreground underline truncate max-w-80 sm:max-w-[555px]\">{sameSopLabel.name}</p>\n            </div>\n\n            <div className=\"flex items-center\">\n                <Button\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    onClick={handleClose}\n                    className=\"h-8 text-muted-foreground hover:text-foreground\"\n                >\n                    <CircleX className=\"h-4 w-4\" />\n                </Button>\n            </div>\n        </div>\n    </div>\n};\n\nexport type SameSopLabel = {\n    id: string\n    name: string,\n    url?: string\n} | null\n\nexport const sameSopLabelState = atom<SameSopLabel>({\n    key: \"sameSopLabelState\",\n    default: null,\n})"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/SendButton.tsx",
    "content": "import React, { forwardRef } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { TooltipAnchor } from '~/components/ui';\nimport { SendIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\ntype SendButtonProps = {\n  disabled: boolean;\n  control: Control<{ text: string }>;\n};\n\nconst SubmitButton = React.memo(\n  forwardRef((props: { disabled: boolean, isLingsi: boolean }, ref: React.ForwardedRef<HTMLButtonElement>) => {\n    const localize = useLocalize();\n    return (\n      <TooltipAnchor\n        description={localize('com_nav_send_message')}\n        render={\n          <button\n            ref={ref}\n            aria-label={localize('com_nav_send_message')}\n            id=\"send-button\"\n            disabled={props.disabled}\n            className={cn(\n              'rounded-full bg-primary p-1 text-text-primary outline-offset-4 transition-all duration-200 disabled:cursor-not-allowed disabled:text-text-secondary disabled:opacity-10',\n              props.isLingsi && 'bg-gradient-to-b from-[#143BFF] to-[#99BCFF]',\n            )}\n            data-testid=\"send-button\"\n            type=\"submit\"\n          >\n            <span className=\"\" data-state=\"closed\">\n              <SendIcon size={24} />\n            </span>\n          </button>\n        }\n      ></TooltipAnchor>\n    );\n  }),\n);\n\nconst SendButton = React.memo(\n  forwardRef((props: SendButtonProps, ref: React.ForwardedRef<HTMLButtonElement>) => {\n    const data = useWatch({ control: props.control });\n    return <SubmitButton ref={ref} isLingsi={props.isLingsi || false} disabled={props.disabled || !data.text} />;\n  }),\n);\n\nexport default SendButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/StopButton.tsx",
    "content": "import { TooltipAnchor } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function StopButton({ stop, setShowStopButton }) {\n  const localize = useLocalize();\n\n  return (\n    <TooltipAnchor\n      description={localize('com_nav_stop_generating')}\n      render={\n        <button\n          type=\"button\"\n          className={cn(\n            'rounded-full bg-primary p-1 text-text-primary outline-offset-4 transition-all duration-200 disabled:cursor-not-allowed disabled:text-text-secondary disabled:opacity-10',\n          )}\n          aria-label={localize('com_nav_stop_generating')}\n          onClick={(e) => {\n            setShowStopButton(false);\n            stop(e);\n          }}\n        >\n          <svg\n            width=\"24\"\n            height=\"24\"\n            viewBox=\"0 0 24 24\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            className=\"icon-lg text-surface-primary\"\n          >\n            <rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"1.25\" fill=\"currentColor\"></rect>\n          </svg>\n        </button>\n      }\n    ></TooltipAnchor>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/StreamAudio.tsx",
    "content": "import { useParams } from 'react-router-dom';\nimport { useEffect, useCallback } from 'react';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useCustomAudioRef, MediaSourceAppender, usePauseGlobalAudio } from '~/hooks/Audio';\nimport { getLatestText, logger } from '~/utils';\nimport { useAuthContext } from '~/hooks';\nimport { globalAudioId } from '~/common';\nimport store from '~/store';\n\nfunction timeoutPromise(ms: number, message?: string) {\n  return new Promise((_, reject) =>\n    setTimeout(() => reject(new Error(message ?? 'Promise timed out')), ms),\n  );\n}\n\nconst promiseTimeoutMessage = 'Reader promise timed out';\nconst maxPromiseTime = 15000;\n\nexport default function StreamAudio({ index = 0 }) {\n  const { token } = useAuthContext();\n\n  const cacheTTS = useRecoilValue(store.cacheTTS);\n  const playbackRate = useRecoilValue(store.playbackRate);\n\n  const voice = useRecoilValue(store.voice);\n  const activeRunId = useRecoilValue(store.activeRunFamily(index));\n  const automaticPlayback = useRecoilValue(store.automaticPlayback);\n  const isSubmitting = useRecoilValue(store.isSubmittingFamily(index));\n  const latestMessage = useRecoilValue(store.latestMessageFamily(index));\n  const setIsPlaying = useSetRecoilState(store.globalAudioPlayingFamily(index));\n  const [audioRunId, setAudioRunId] = useRecoilState(store.audioRunFamily(index));\n  const [isFetching, setIsFetching] = useRecoilState(store.globalAudioFetchingFamily(index));\n  const [globalAudioURL, setGlobalAudioURL] = useRecoilState(store.globalAudioURLFamily(index));\n\n  const { audioRef } = useCustomAudioRef({ setIsPlaying });\n  const { pauseGlobalAudio } = usePauseGlobalAudio();\n\n  const { conversationId: paramId } = useParams();\n  const queryParam = paramId === 'new' ? paramId : latestMessage?.conversationId ?? paramId ?? '';\n\n  const queryClient = useQueryClient();\n  const getMessages = useCallback(\n    () => queryClient.getQueryData<TMessage[]>([QueryKeys.messages, queryParam]),\n    [queryParam, queryClient],\n  );\n\n  useEffect(() => {\n    const latestText = getLatestText(latestMessage);\n\n    const shouldFetch = !!(\n      token != null &&\n      automaticPlayback &&\n      !isSubmitting &&\n      latestMessage &&\n      !latestMessage.isCreatedByUser &&\n      latestText &&\n      latestMessage.messageId &&\n      !latestMessage.messageId.includes('_') &&\n      !isFetching &&\n      activeRunId != null &&\n      activeRunId !== audioRunId\n    );\n\n    if (!shouldFetch) {\n      return;\n    }\n\n    async function fetchAudio() {\n      setIsFetching(true);\n\n      try {\n        if (audioRef.current) {\n          audioRef.current.pause();\n          URL.revokeObjectURL(audioRef.current.src);\n          setGlobalAudioURL(null);\n        }\n\n        let cacheKey = latestMessage?.text ?? '';\n        const cache = await caches.open('tts-responses');\n        const cachedResponse = await cache.match(cacheKey);\n\n        setAudioRunId(activeRunId);\n        if (cachedResponse) {\n          logger.log('Audio found in cache');\n          const audioBlob = await cachedResponse.blob();\n          const blobUrl = URL.createObjectURL(audioBlob);\n          setGlobalAudioURL(blobUrl);\n          setIsFetching(false);\n          return;\n        }\n\n        logger.log('Fetching audio...', navigator.userAgent);\n        const response = await fetch('/api/files/speech/tts', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` },\n          body: JSON.stringify({ messageId: latestMessage?.messageId, runId: activeRunId, voice }),\n        });\n\n        if (!response.ok) {\n          throw new Error('Failed to fetch audio');\n        }\n        if (!response.body) {\n          throw new Error('Null Response body');\n        }\n\n        const reader = response.body.getReader();\n\n        const type = 'audio/mpeg';\n        const browserSupportsType =\n          typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported(type);\n        let mediaSource: MediaSourceAppender | undefined;\n        if (browserSupportsType) {\n          mediaSource = new MediaSourceAppender(type);\n          setGlobalAudioURL(mediaSource.mediaSourceUrl);\n        }\n\n        let done = false;\n        const chunks: ArrayBuffer[] = [];\n\n        while (!done) {\n          const readPromise = reader.read();\n          const { value, done: readerDone } = (await Promise.race([\n            readPromise,\n            timeoutPromise(maxPromiseTime, promiseTimeoutMessage),\n          ])) as ReadableStreamReadResult<ArrayBuffer>;\n\n          if (cacheTTS && value) {\n            chunks.push(value);\n          }\n          if (value && mediaSource) {\n            mediaSource.addData(value);\n          }\n          done = readerDone;\n        }\n\n        if (chunks.length) {\n          logger.log('Adding audio to cache');\n          const latestMessages = getMessages() ?? [];\n          const targetMessage = latestMessages.find(\n            (msg) => msg.messageId === latestMessage?.messageId,\n          );\n          cacheKey = targetMessage?.text ?? '';\n          if (!cacheKey) {\n            throw new Error('Cache key not found');\n          }\n          const audioBlob = new Blob(chunks, { type });\n          const cachedResponse = new Response(audioBlob);\n          await cache.put(cacheKey, cachedResponse);\n          if (!browserSupportsType) {\n            const unconsumedResponse = await cache.match(cacheKey);\n            if (!unconsumedResponse) {\n              throw new Error('Failed to fetch audio from cache');\n            }\n            const audioBlob = await unconsumedResponse.blob();\n            const blobUrl = URL.createObjectURL(audioBlob);\n            setGlobalAudioURL(blobUrl);\n          }\n          setIsFetching(false);\n        }\n\n        logger.log('Audio stream reading ended');\n      } catch (error) {\n        if (error?.['message'] !== promiseTimeoutMessage) {\n          logger.log(promiseTimeoutMessage);\n          return;\n        }\n        logger.error('Error fetching audio:', error);\n        setIsFetching(false);\n        setGlobalAudioURL(null);\n      } finally {\n        setIsFetching(false);\n      }\n    }\n\n    fetchAudio();\n  }, [\n    automaticPlayback,\n    setGlobalAudioURL,\n    setAudioRunId,\n    setIsFetching,\n    latestMessage,\n    isSubmitting,\n    activeRunId,\n    getMessages,\n    isFetching,\n    audioRunId,\n    cacheTTS,\n    audioRef,\n    voice,\n    token,\n  ]);\n\n  useEffect(() => {\n    if (\n      playbackRate != null &&\n      globalAudioURL != null &&\n      playbackRate > 0 &&\n      audioRef.current &&\n      audioRef.current.playbackRate !== playbackRate\n    ) {\n      audioRef.current.playbackRate = playbackRate;\n    }\n  }, [audioRef, globalAudioURL, playbackRate]);\n\n  useEffect(() => {\n    pauseGlobalAudio();\n    // We only want the effect to run when the paramId changes\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [paramId]);\n\n  logger.log('StreamAudio.tsx - globalAudioURL:', globalAudioURL);\n  return (\n    // eslint-disable-next-line jsx-a11y/media-has-caption\n    <audio\n      ref={audioRef}\n      controls\n      controlsList=\"nodownload nofullscreen noremoteplayback\"\n      style={{\n        position: 'absolute',\n        overflow: 'hidden',\n        display: 'none',\n        height: '0px',\n        width: '0px',\n      }}\n      src={globalAudioURL ?? undefined}\n      id={globalAudioId}\n      autoPlay\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/TemporaryChat.tsx",
    "content": "import { MessageCircleDashed, X } from 'lucide-react';\nimport { useLocalize } from '~/hooks';\n\ninterface TemporaryChatProps {\n  isTemporaryChat: boolean;\n  setIsTemporaryChat: (value: boolean) => void;\n}\n\nexport const TemporaryChat = ({ isTemporaryChat, setIsTemporaryChat }: TemporaryChatProps) => {\n  const localize = useLocalize();\n\n  if (!isTemporaryChat) {\n    return null;\n  }\n\n  return (\n    <div className=\"divide-token-border-light m-1.5 flex flex-col divide-y overflow-hidden rounded-b-lg rounded-t-2xl bg-surface-secondary-alt\">\n      <div className=\"flex items-start gap-4 py-2.5 pl-3 pr-1.5 text-sm\">\n        <span className=\"mt-0 flex h-6 w-6 flex-shrink-0 items-center justify-center\">\n          <div className=\"icon-md\">\n            <MessageCircleDashed className=\"icon-md\" aria-hidden=\"true\" />\n          </div>\n        </span>\n        <span className=\"text-token-text-secondary line-clamp-3 flex-1 py-0.5 font-semibold\">\n          {localize('com_ui_temporary_chat')}\n        </span>\n        <button\n          className=\"text-token-text-secondary flex-shrink-0\"\n          type=\"button\"\n          aria-label=\"Close temporary chat\"\n          onClick={() => setIsTemporaryChat(false)}\n        >\n          <X className=\"pr-1\" />\n        </button>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Input/TextareaHeader.tsx",
    "content": "import AddedConvo from './AddedConvo';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\n\nexport default function TextareaHeader({\n  addedConvo,\n  setAddedConvo,\n}: {\n  addedConvo: TConversation | null;\n  setAddedConvo: SetterOrUpdater<TConversation | null>;\n}) {\n  if (!addedConvo) {\n    return null;\n  }\n  return (\n    <div className=\"divide-token-border-light m-1.5 flex flex-col divide-y overflow-hidden rounded-b-lg rounded-t-2xl bg-surface-secondary-alt\">\n      <AddedConvo addedConvo={addedConvo} setAddedConvo={setAddedConvo} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/InviteCode.tsx",
    "content": "import { useState } from \"react\";\nimport { bindInviteCode } from \"~/api/linsight\";\nimport { useGetBsConfig, useGetUserLinsightCountQuery } from \"~/data-provider\";\nimport { useToastContext } from \"~/Providers\";\nimport { useLocalize } from \"~/hooks\";\nimport { Button, Dialog, DialogContent, Input } from \"../ui\";\n\nexport default function InvitationCodeForm({ showCode, setShowCode }) {\n    const [invitationCode, setInvitationCode] = useState(\"\")\n    const [error, setError] = useState(\"\")\n    const [isLoading, setIsLoading] = useState(false)\n    const { refetch } = useGetUserLinsightCountQuery()\n    const { showToast } = useToastContext();\n    const { data: bsConfig } = useGetBsConfig()\n    const localize = useLocalize()\n\n    const handleSubmit = async (e: React.FormEvent) => {\n        e.preventDefault()\n\n        if (!invitationCode.trim()) {\n            setError(localize('com_invite_please_input_code'))\n            return\n        }\n\n        setIsLoading(true)\n        setError(\"\")\n\n        try {\n            const result = await bindInviteCode(invitationCode.trim())\n            console.log('result :>> ', result);\n            if (result.status_code === 500) {\n                setError(result.status_message || localize('com_invite_submit_failed'))\n                // setError(\"您输入的邀请码无效\")\n                // setError(\"已绑定其他邀请码\")\n            } else {\n                refetch()\n                // 成功处理\n                setInvitationCode(\"\")\n                setError(\"\")\n                setShowCode(false)\n                showToast({ message: result.status_message, status: 'success' });\n            }\n\n        } catch (err) {\n            setError(\"网络错误，请稍后重试\")\n        } finally {\n            setIsLoading(false)\n        }\n    }\n\n    return (\n        <Dialog open={showCode} onOpenChange={setShowCode}>\n            <DialogContent className=\"sm:max-w-[560px]\">\n                <div className=\"p-2\">\n                    {/* BISHENG Logo */}\n                    <div className=\"\" style={{ backgroundImage: `url('${__APP_ENV__.BASE_URL}/assets/diandian.png')` }}>\n                        <div className=\"text-2xl font-bold text-primary pt-20 pl-8\">{localize('com_invite_title')}</div>\n                        {/* Description */}\n                        <p className=\"text-sm mt-3 pl-8\">{localize('com_invite_desc')}</p>\n                    </div>\n\n                    {/* Form */}\n                    <form onSubmit={handleSubmit} className=\"mt-10 px-8\">\n                        {/* Input Field */}\n                        <div className=\"flex gap-3\">\n                            <Input\n                                type=\"text\"\n                                value={invitationCode}\n                                onChange={(e) => setInvitationCode(e.target.value)}\n                                placeholder={localize('com_invite_placeholder')}\n                                maxLength={50}\n                                className=\"\"\n                                disabled={isLoading}\n                            />\n                            {/* Submit Button */}\n                            <Button\n                                type=\"submit\"\n                                disabled={isLoading || !invitationCode.trim()}\n                                className=\"px-8 h-10\"\n                            >\n                                {isLoading ? localize('com_invite_submitting') : localize('com_invite_submit')}\n                            </Button>\n                        </div>\n                        {/* Error Message */}\n                        <p className=\"text-red-500 text-sm mt-3 px-2 h-6\">{error}</p>\n                        {bsConfig?.waiting_list_url && <p className=\"text-xs mt-3 px-2 h-6\">{localize('com_invite_no_code_tip')}<a className=\"text-primary\" href={bsConfig.waiting_list_url} target=\"_blank\" rel=\"noreferrer\">{localize('com_invite_apply_access')}</a></p>}\n                    </form>\n                </div>\n            </DialogContent>\n        </Dialog >\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Landing.tsx",
    "content": "import type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { useAgentsMapContext, useAssistantsMapContext, useChatContext } from '~/Providers';\nimport {\n  useGetAssistantDocsQuery,\n  useGetBsConfig,\n  useGetEndpointsQuery,\n  useGetStartupConfig,\n} from '~/data-provider';\nimport type * as t from '~/data-provider/data-provider/src';\nimport { Constants, EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useLocalize, useSubmitMessage } from '~/hooks';\nimport { cn, getEntity, getIconEndpoint } from '~/utils';\nimport { useInterruptAudio } from '../Voice/textToSpeechStore';\nimport ConvoStarter from './ConvoStarter';\nimport SegmentSelector from './SegmentSelector';\n\nexport default function Landing({ Header, isNew, lingsi, lingsiEntry, setLingsi }: { Header?: ReactNode; isNew?: boolean, lingsi: boolean }) {\n  const { conversation } = useChatContext();\n  const agentsMap = useAgentsMapContext();\n  const assistantMap = useAssistantsMapContext();\n  const { data: startupConfig } = useGetStartupConfig();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const { data: bsConfig } = useGetBsConfig()\n  const interruptAudio = useInterruptAudio()\n\n  const localize = useLocalize();\n\n  let { endpoint = '' } = conversation ?? {};\n\n  if (\n    endpoint === EModelEndpoint.chatGPTBrowser ||\n    endpoint === EModelEndpoint.azureOpenAI ||\n    endpoint === EModelEndpoint.gptPlugins\n  ) {\n    endpoint = EModelEndpoint.openAI;\n  }\n\n  const iconURL = conversation?.iconURL;\n  endpoint = getIconEndpoint({ endpointsConfig, iconURL, endpoint });\n  const { data: documentsMap = new Map() } = useGetAssistantDocsQuery(endpoint, {\n    select: (data) => new Map(data.map((dbA) => [dbA.assistant_id, dbA])),\n  });\n\n  const { entity, isAgent, isAssistant } = getEntity({\n    endpoint,\n    agentsMap,\n    assistantMap,\n    agent_id: conversation?.agent_id,\n    assistant_id: conversation?.assistant_id,\n  });\n\n  const name = entity?.name ?? '';\n  const description = entity?.description ?? '';\n  const avatar = isAgent\n    ? ((entity as t.Agent | undefined)?.avatar?.filepath ?? '')\n    : (((entity as t.Assistant | undefined)?.metadata?.avatar as string | undefined) ?? '');\n  const conversation_starters = useMemo(() => {\n    /* The user made updates, use client-side cache, or they exist in an Agent */\n    if (entity && (entity.conversation_starters?.length ?? 0) > 0) {\n      return entity.conversation_starters;\n    }\n    if (isAgent) {\n      return entity?.conversation_starters ?? [];\n    }\n\n    /* If none in cache, we use the latest assistant docs */\n    const entityDocs = documentsMap.get(entity?.id ?? '');\n    return entityDocs?.conversation_starters ?? [];\n  }, [documentsMap, isAgent, entity]);\n\n  const containerClassName =\n    'shadow-stroke relative flex h-full items-center justify-center rounded-full bg-white text-black';\n\n  const { submitMessage } = useSubmitMessage();\n  const sendConversationStarter = (text: string) => submitMessage({ text });\n\n  const getWelcomeMessage = () => {\n    const greeting = conversation?.greeting ?? '';\n    if (greeting) {\n      return greeting;\n    }\n\n    if (isAssistant) {\n      return localize('com_nav_welcome_assistant');\n    }\n\n    if (isAgent) {\n      return localize('com_nav_welcome_agent');\n    }\n\n    return typeof startupConfig?.interface?.customWelcome === 'string'\n      ? startupConfig?.interface?.customWelcome\n      : localize('com_nav_welcome_message');\n  };\n\n\n  return (\n    <div className={cn('relative', !isNew && 'h-full')}>\n      <div className=\"absolute left-0 right-0\">{Header != null ? Header : null}</div>\n      <div className=\"flex h-full flex-col items-center justify-center\">\n        <div className='flex items-center gap-4'>\n          {bsConfig?.assistantIcon.image && <img className=\"overflow w-[52px]\" src={__APP_ENV__.BASE_URL + bsConfig?.assistantIcon.image} />}\n          <h2 className=\"max-w-[75vh] px-12 text-center text-lg font-medium dark:text-white md:px-0 md:text-2xl\">\n            {bsConfig?.welcomeMessage}\n          </h2>\n        </div>\n        <div className=\"max-w-lg text-center mt-4 text-sm font-normal text-gray-500\">\n          {bsConfig?.functionDescription}\n        </div>\n\n        {/* 引导词 */}\n        <div className=\"mt-8 flex flex-wrap justify-center gap-3 px-4\">\n          {conversation_starters.length > 0 &&\n            conversation_starters\n              .slice(0, Constants.MAX_CONVO_STARTERS)\n              .map((text: string, index: number) => (\n                <ConvoStarter\n                  key={index}\n                  text={text}\n                  onClick={() => sendConversationStarter(text)}\n                />\n              ))}\n        </div>\n\n        {/* 模式切换 */}\n        {lingsiEntry && <div className='mx-auto mb-6 mt-2'>\n          <SegmentSelector lingsi={lingsi} onChange={(bl) => {\n            setLingsi(bl);\n            interruptAudio();\n          }} />\n        </div>}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/BookmarkMenu.tsx",
    "content": "import { useState, useId, useCallback, useMemo, useRef } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport * as Ariakit from '@ariakit/react';\nimport { BookmarkPlusIcon } from 'lucide-react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Constants, QueryKeys } from '~/data-provider/data-provider/src';\nimport { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons';\nimport type { TConversationTag } from '~/data-provider/data-provider/src';\nimport type { FC } from 'react';\nimport type * as t from '~/common';\nimport { useConversationTagsQuery, useTagConversationMutation } from '~/data-provider';\nimport { DropdownPopup, TooltipAnchor } from '~/components/ui';\nimport { BookmarkContext } from '~/Providers/BookmarkContext';\nimport { BookmarkEditDialog } from '~/components/Bookmarks';\nimport { useBookmarkSuccess, useLocalize } from '~/hooks';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { Spinner } from '~/components';\nimport { cn, logger } from '~/utils';\nimport store from '~/store';\n\nconst BookmarkMenu: FC = () => {\n  const localize = useLocalize();\n  const queryClient = useQueryClient();\n  const { showToast } = useToastContext();\n\n  const conversation = useRecoilValue(store.conversationByIndex(0)) || undefined;\n  const conversationId = conversation?.conversationId ?? '';\n  const updateConvoTags = useBookmarkSuccess(conversationId);\n  const tags = conversation?.tags;\n  const isTemporary = conversation?.expiredAt != null;\n\n  const menuId = useId();\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const mutation = useTagConversationMutation(conversationId, {\n    onSuccess: (newTags: string[], vars) => {\n      updateConvoTags(newTags);\n      const tagElement = document.getElementById(vars.tag);\n      console.log('tagElement', tagElement);\n      if (tagElement) {\n        setTimeout(() => tagElement.focus(), 2);\n      }\n    },\n    onError: () => {\n      showToast({\n        message: 'Error adding bookmark',\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n    onMutate: (vars) => {\n      const tagElement = document.getElementById(vars.tag);\n      console.log('tagElement', tagElement);\n      if (tagElement) {\n        setTimeout(() => tagElement.focus(), 2);\n      }\n    },\n  });\n\n  const { data } = useConversationTagsQuery();\n\n  const isActiveConvo = Boolean(\n    conversation &&\n      conversationId &&\n      conversationId !== Constants.NEW_CONVO &&\n      conversationId !== 'search',\n  );\n\n  const handleSubmit = useCallback(\n    (tag?: string) => {\n      if (tag === undefined || tag === '' || !conversationId) {\n        showToast({\n          message: 'Invalid tag or conversationId',\n          severity: NotificationSeverity.ERROR,\n        });\n        return;\n      }\n\n      logger.log('tag_mutation', 'BookmarkMenu - handleSubmit: tags before setting', tags);\n\n      const allTags =\n        queryClient.getQueryData<TConversationTag[]>([QueryKeys.conversationTags]) ?? [];\n      const existingTags = allTags.map((t) => t.tag);\n      const filteredTags = tags?.filter((t) => existingTags.includes(t));\n\n      logger.log('tag_mutation', 'BookmarkMenu - handleSubmit: tags after filtering', filteredTags);\n      const newTags =\n        filteredTags?.includes(tag) === true\n          ? filteredTags.filter((t) => t !== tag)\n          : [...(filteredTags ?? []), tag];\n\n      logger.log('tag_mutation', 'BookmarkMenu - handleSubmit: tags after', newTags);\n      mutation.mutate({\n        tags: newTags,\n        tag,\n      });\n    },\n    [tags, conversationId, mutation, queryClient, showToast],\n  );\n\n  const newBookmarkRef = useRef<HTMLButtonElement>(null);\n\n  const dropdownItems: t.MenuItemProps[] = useMemo(() => {\n    const items: t.MenuItemProps[] = [\n      {\n        id: '%___new___bookmark___%',\n        label: localize('com_ui_bookmarks_new'),\n        icon: <BookmarkPlusIcon className=\"size-4\" />,\n        hideOnClick: false,\n        ref: newBookmarkRef,\n        render: (props) => <button {...props} />,\n        onClick: () => setIsDialogOpen(true),\n      },\n    ];\n\n    if (data) {\n      for (const tag of data) {\n        const isSelected = tags?.includes(tag.tag);\n        items.push({\n          id: tag.tag,\n          label: tag.tag,\n          hideOnClick: false,\n          icon:\n            isSelected === true ? (\n              <BookmarkFilledIcon className=\"size-4\" />\n            ) : (\n              <BookmarkIcon className=\"size-4\" />\n            ),\n          onClick: () => handleSubmit(tag.tag),\n          disabled: mutation.isLoading,\n        });\n      }\n    }\n\n    return items;\n  }, [tags, data, handleSubmit, mutation.isLoading, localize]);\n\n  if (!isActiveConvo) {\n    return null;\n  }\n\n  if (isTemporary) {\n    return null;\n  }\n\n  const renderButtonContent = () => {\n    if (mutation.isLoading) {\n      return <Spinner aria-label=\"Spinner\" />;\n    }\n    if ((tags?.length ?? 0) > 0) {\n      return <BookmarkFilledIcon className=\"icon-sm\" aria-label=\"Filled Bookmark\" />;\n    }\n    return <BookmarkIcon className=\"icon-sm\" aria-label=\"Bookmark\" />;\n  };\n\n  return (\n    <BookmarkContext.Provider value={{ bookmarks: data || [] }}>\n      <DropdownPopup\n        focusLoop={true}\n        menuId={menuId}\n        isOpen={isMenuOpen}\n        setIsOpen={setIsMenuOpen}\n        keyPrefix={`${conversationId}-bookmark-`}\n        trigger={\n          <TooltipAnchor\n            description={localize('com_ui_bookmarks_add')}\n            render={\n              <Ariakit.MenuButton\n                id=\"bookmark-menu-button\"\n                aria-label={localize('com_ui_bookmarks_add')}\n                className={cn(\n                  'mt-text-sm flex size-10 items-center justify-center gap-2 rounded-lg border border-border-light text-sm transition-colors duration-200 hover:bg-surface-hover',\n                  isMenuOpen ? 'bg-surface-hover' : '',\n                )}\n                data-testid=\"bookmark-menu\"\n              >\n                {renderButtonContent()}\n              </Ariakit.MenuButton>\n            }\n          />\n        }\n        items={dropdownItems}\n      />\n      <BookmarkEditDialog\n        tags={tags}\n        open={isDialogOpen}\n        setTags={updateConvoTags}\n        setOpen={setIsDialogOpen}\n        triggerRef={newBookmarkRef}\n        conversationId={conversationId}\n        context=\"BookmarkMenu - BookmarkEditDialog\"\n      />\n    </BookmarkContext.Provider>\n  );\n};\n\nexport default BookmarkMenu;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Bookmarks/BookmarkMenuItems.tsx",
    "content": "import React, { useState } from 'react';\nimport { BookmarkPlusIcon } from 'lucide-react';\nimport type { FC } from 'react';\nimport { BookmarkEditDialog, BookmarkItems, BookmarkItem } from '~/components/Bookmarks';\nimport { OGDialogTrigger } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport const BookmarkMenuItems: FC<{\n  tags: string[];\n  setTags: React.Dispatch<React.SetStateAction<string[]>>;\n  handleSubmit: (tag?: string) => void;\n  conversationId?: string;\n}> = ({ tags, setTags, handleSubmit, conversationId }) => {\n  const localize = useLocalize();\n  const [open, setOpen] = useState(false);\n  const handleToggleOpen = () => setOpen(!open);\n\n  return (\n    <BookmarkItems\n      tags={tags}\n      handleSubmit={handleSubmit}\n      header={\n        <BookmarkEditDialog\n          context=\"BookmarkMenu - BookmarkEditDialog\"\n          conversationId={conversationId}\n          tags={tags}\n          setTags={setTags}\n          open={open}\n          setOpen={setOpen}\n        >\n          <OGDialogTrigger asChild>\n            <BookmarkItem\n              tag={localize('com_ui_bookmarks_new')}\n              data-testid=\"bookmark-item-new\"\n              handleSubmit={handleToggleOpen}\n              selected={false}\n              icon={<BookmarkPlusIcon className=\"size-4\" aria-label=\"Add Bookmark\" />}\n            />\n          </OGDialogTrigger>\n        </BookmarkEditDialog>\n      }\n    />\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Endpoints/Icons.tsx",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { IconMapProps, AgentIconMapProps, IconsRecord } from '~/common';\nimport { Feather } from 'lucide-react';\nimport {\n  MinimalPlugin,\n  GPTIcon,\n  AnthropicIcon,\n  AzureMinimalIcon,\n  GoogleMinimalIcon,\n  CustomMinimalIcon,\n  AssistantIcon,\n  LightningIcon,\n  BedrockIcon,\n  Sparkles,\n} from '~/components/svg';\nimport UnknownIcon from './UnknownIcon';\nimport { cn } from '~/utils';\n\nconst AssistantAvatar = ({\n  className = '',\n  assistantName = '',\n  avatar = '',\n  context,\n  size,\n}: IconMapProps) => {\n  if (assistantName && avatar) {\n    return (\n      <img\n        src={avatar}\n        className=\"bg-token-surface-secondary dark:bg-token-surface-tertiary h-full w-full rounded-full object-cover\"\n        alt={assistantName}\n        width=\"80\"\n        height=\"80\"\n      />\n    );\n  } else if (assistantName) {\n    return <AssistantIcon className={cn('text-token-secondary', className)} size={size} />;\n  }\n\n  return <Sparkles className={cn(context === 'landing' ? 'icon-2xl' : '', className)} />;\n};\n\nconst AgentAvatar = ({ className = '', avatar = '', agentName, size }: AgentIconMapProps) => {\n  if (agentName != null && agentName && avatar) {\n    return (\n      <img\n        src={avatar}\n        className=\"bg-token-surface-secondary dark:bg-token-surface-tertiary h-full w-full rounded-full object-cover\"\n        alt={agentName}\n        width=\"80\"\n        height=\"80\"\n      />\n    );\n  }\n\n  return <Feather className={cn(agentName === '' ? 'icon-2xl' : '', className)} size={size} />;\n};\n\nconst Bedrock = ({ className = '' }: IconMapProps) => {\n  return <BedrockIcon className={cn(className, 'h-full w-full')} />;\n};\n\nexport const icons: IconsRecord = {\n  [EModelEndpoint.azureOpenAI]: AzureMinimalIcon,\n  [EModelEndpoint.openAI]: GPTIcon,\n  [EModelEndpoint.gptPlugins]: MinimalPlugin,\n  [EModelEndpoint.anthropic]: AnthropicIcon,\n  [EModelEndpoint.chatGPTBrowser]: LightningIcon,\n  [EModelEndpoint.google]: GoogleMinimalIcon,\n  [EModelEndpoint.custom]: CustomMinimalIcon,\n  [EModelEndpoint.assistants]: AssistantAvatar,\n  [EModelEndpoint.azureAssistants]: AssistantAvatar,\n  [EModelEndpoint.agents]: AgentAvatar,\n  [EModelEndpoint.bedrock]: Bedrock,\n  unknown: UnknownIcon,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Endpoints/MenuItem.tsx",
    "content": "import { useState } from 'react';\nimport { Settings } from 'lucide-react';\nimport { useRecoilValue } from 'recoil';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport type { FC } from 'react';\nimport { cn, getConvoSwitchLogic, getEndpointField, getIconKey } from '~/utils';\nimport { useLocalize, useUserKey, useDefaultConvo } from '~/hooks';\nimport { SetKeyDialog } from '~/components/Input/SetKeyDialog';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { useChatContext } from '~/Providers';\nimport { icons } from './Icons';\nimport store from '~/store';\n\ntype MenuItemProps = {\n  title: string;\n  value: EModelEndpoint;\n  selected: boolean;\n  description?: string;\n  userProvidesKey: boolean;\n  // iconPath: string;\n  // hoverContent?: string;\n};\n\nconst MenuItem: FC<MenuItemProps> = ({\n  title,\n  value: endpoint,\n  description,\n  selected,\n  userProvidesKey,\n  ...rest\n}) => {\n  const modularChat = useRecoilValue(store.modularChat);\n  const [isDialogOpen, setDialogOpen] = useState(false);\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const { conversation, newConversation } = useChatContext();\n  const getDefaultConversation = useDefaultConvo();\n\n  const { getExpiry } = useUserKey(endpoint);\n  const localize = useLocalize();\n  const expiryTime = getExpiry() ?? '';\n\n  const onSelectEndpoint = (newEndpoint?: EModelEndpoint) => {\n    if (!newEndpoint) {\n      return;\n    }\n\n    if (!expiryTime) {\n      setDialogOpen(true);\n    }\n\n    const {\n      template,\n      shouldSwitch,\n      isNewModular,\n      newEndpointType,\n      isCurrentModular,\n      isExistingConversation,\n    } = getConvoSwitchLogic({\n      newEndpoint,\n      modularChat,\n      conversation,\n      endpointsConfig,\n    });\n\n    const isModular = isCurrentModular && isNewModular && shouldSwitch;\n    if (isExistingConversation && isModular) {\n      template.endpointType = newEndpointType;\n\n      const currentConvo = getDefaultConversation({\n        /* target endpointType is necessary to avoid endpoint mixing */\n        conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n        preset: template,\n      });\n\n      /* We don't reset the latest message, only when changing settings mid-converstion */\n      newConversation({\n        template: currentConvo,\n        preset: currentConvo,\n        keepLatestMessage: true,\n        keepAddedConvos: true,\n      });\n      return;\n    }\n    newConversation({\n      template: { ...(template as Partial<TConversation>) },\n      keepAddedConvos: isModular,\n    });\n  };\n\n  const endpointType = getEndpointField(endpointsConfig, endpoint, 'type');\n  const iconKey = getIconKey({ endpoint, endpointsConfig, endpointType });\n  const Icon = icons[iconKey];\n\n  return (\n    <>\n      <div\n        role=\"option\"\n        aria-selected={selected}\n        className={cn(\n          'group m-1.5 flex max-h-[40px] cursor-pointer gap-2 rounded px-5 py-2.5 !pr-3 text-sm !opacity-100 hover:bg-surface-hover',\n          'radix-disabled:pointer-events-none radix-disabled:opacity-50',\n        )}\n        tabIndex={0}\n        {...rest}\n        onClick={() => onSelectEndpoint(endpoint)}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter') {\n            e.preventDefault();\n            onSelectEndpoint(endpoint);\n          }\n        }}\n      >\n        <div className=\"flex grow items-center justify-between gap-2\">\n          <div>\n            <div className=\"flex items-center gap-2\">\n              {Icon != null && (\n                <Icon\n                  size={18}\n                  endpoint={endpoint}\n                  context={'menu-item'}\n                  className=\"icon-md shrink-0 dark:text-white\"\n                  iconURL={getEndpointField(endpointsConfig, endpoint, 'iconURL')}\n                />\n              )}\n              <div>\n                {title}\n                <div className=\"text-token-text-tertiary\">{description}</div>\n              </div>\n            </div>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            {userProvidesKey ? (\n              <div className=\"text-token-text-primary\" key={`set-key-${endpoint}`}>\n                <button\n                  tabIndex={0}\n                  aria-label={`${localize('com_endpoint_config_key')} for ${title}`}\n                  className={cn(\n                    'invisible flex gap-x-1 group-focus-within:visible group-hover:visible',\n                    selected ? 'visible' : '',\n                    expiryTime ? 'text-token-text-primary w-full rounded-lg p-2' : '',\n                  )}\n                  onClick={(e) => {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    setDialogOpen(true);\n                  }}\n                  onKeyDown={(e) => {\n                    if (e.key === 'Enter' || e.key === ' ') {\n                      e.preventDefault();\n                      e.stopPropagation();\n                      setDialogOpen(true);\n                    }\n                  }}\n                >\n                  <div\n                    className={cn(\n                      'invisible group-focus-within:visible group-hover:visible',\n                      expiryTime ? 'text-xs' : '',\n                    )}\n                  >\n                    {localize('com_endpoint_config_key')}\n                  </div>\n                  <Settings className={cn(expiryTime ? 'icon-sm' : 'icon-md stroke-1')} />\n                </button>\n              </div>\n            ) : null}\n            {selected && (\n              <svg\n                width=\"24\"\n                height=\"24\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                className=\"icon-md block group-hover:hidden\"\n              >\n                <path\n                  fillRule=\"evenodd\"\n                  clipRule=\"evenodd\"\n                  d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n            )}\n            {(!userProvidesKey || expiryTime) && (\n              <div className=\"text-token-text-primary hidden gap-x-1 group-hover:flex \">\n                {!userProvidesKey && <div className=\"\">{localize('com_ui_new_chat')}</div>}\n                <svg\n                  width=\"24\"\n                  height=\"24\"\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  className=\"icon-md\"\n                >\n                  <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M16.7929 2.79289C18.0118 1.57394 19.9882 1.57394 21.2071 2.79289C22.4261 4.01184 22.4261 5.98815 21.2071 7.20711L12.7071 15.7071C12.5196 15.8946 12.2652 16 12 16H9C8.44772 16 8 15.5523 8 15V12C8 11.7348 8.10536 11.4804 8.29289 11.2929L16.7929 2.79289ZM19.7929 4.20711C19.355 3.7692 18.645 3.7692 18.2071 4.2071L10 12.4142V14H11.5858L19.7929 5.79289C20.2308 5.35499 20.2308 4.64501 19.7929 4.20711ZM6 5C5.44772 5 5 5.44771 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V14C19 13.4477 19.4477 13 20 13C20.5523 13 21 13.4477 21 14V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34314 4.34315 3 6 3H10C10.5523 3 11 3.44771 11 4C11 4.55228 10.5523 5 10 5H6Z\"\n                    fill=\"currentColor\"\n                  />\n                </svg>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n      {userProvidesKey && (\n        <SetKeyDialog\n          open={isDialogOpen}\n          endpoint={endpoint}\n          endpointType={endpointType}\n          onOpenChange={setDialogOpen}\n          userProvideURL={getEndpointField(endpointsConfig, endpoint, 'userProvideURL')}\n        />\n      )}\n    </>\n  );\n};\n\nexport default MenuItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Endpoints/MenuItems.tsx",
    "content": "import type { FC } from 'react';\nimport { Close } from '@radix-ui/react-popover';\nimport {\n  EModelEndpoint,\n  alternateName,\n  PermissionTypes,\n  Permissions,\n} from '~/data-provider/data-provider/src';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport MenuSeparator from '../UI/MenuSeparator';\nimport { getEndpointField } from '~/utils';\nimport { useHasAccess } from '~/hooks';\nimport MenuItem from './MenuItem';\n\nconst EndpointItems: FC<{\n  endpoints: Array<EModelEndpoint | undefined>;\n  selected: EModelEndpoint | '';\n}> = ({ endpoints = [], selected }) => {\n  const hasAccessToAgents = useHasAccess({\n    permissionType: PermissionTypes.AGENTS,\n    permission: Permissions.USE,\n  });\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  return (\n    <>\n      {endpoints.map((endpoint, i) => {\n        if (!endpoint) {\n          return null;\n        } else if (!endpointsConfig?.[endpoint]) {\n          return null;\n        }\n\n        if (endpoint === EModelEndpoint.agents && !hasAccessToAgents) {\n          return null;\n        }\n        const userProvidesKey: boolean | null | undefined =\n          getEndpointField(endpointsConfig, endpoint, 'userProvide') ?? false;\n        return (\n          <Close asChild key={`endpoint-${endpoint}`}>\n            <div key={`endpoint-${endpoint}`}>\n              <MenuItem\n                key={`endpoint-item-${endpoint}`}\n                title={alternateName[endpoint] || endpoint}\n                value={endpoint}\n                selected={selected === endpoint}\n                data-testid={`endpoint-item-${endpoint}`}\n                userProvidesKey={!!userProvidesKey}\n                // description=\"With DALL·E, browsing and analysis\"\n              />\n              {i !== endpoints.length - 1 && <MenuSeparator />}\n            </div>\n          </Close>\n        );\n      })}\n    </>\n  );\n};\n\nexport default EndpointItems;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Endpoints/UnknownIcon.tsx",
    "content": "import { memo } from 'react';\nimport { EModelEndpoint, KnownEndpoints } from '~/data-provider/data-provider/src';\nimport { CustomMinimalIcon } from '~/components/svg';\nimport { IconContext } from '~/common';\nimport { cn } from '~/utils';\n\nconst knownEndpointAssets = {\n  [KnownEndpoints.anyscale]: '/assets/anyscale.png',\n  [KnownEndpoints.apipie]: '/assets/apipie.png',\n  [KnownEndpoints.cohere]: '/assets/cohere.png',\n  [KnownEndpoints.deepseek]: '/assets/deepseek.svg',\n  [KnownEndpoints.fireworks]: '/assets/fireworks.png',\n  [KnownEndpoints.groq]: '/assets/groq.png',\n  [KnownEndpoints.huggingface]: '/assets/huggingface.svg',\n  [KnownEndpoints.mistral]: '/assets/mistral.png',\n  [KnownEndpoints.mlx]: '/assets/mlx.png',\n  [KnownEndpoints.ollama]: '/assets/ollama.png',\n  [KnownEndpoints.openrouter]: '/assets/openrouter.png',\n  [KnownEndpoints.perplexity]: '/assets/perplexity.png',\n  [KnownEndpoints.shuttleai]: '/assets/shuttleai.png',\n  [KnownEndpoints['together.ai']]: '/assets/together.png',\n  [KnownEndpoints.unify]: '/assets/unify.webp',\n  [KnownEndpoints.xai]: '/assets/xai.svg',\n};\n\nconst knownEndpointClasses = {\n  [KnownEndpoints.cohere]: {\n    [IconContext.landing]: 'p-2',\n  },\n  [KnownEndpoints.xai]: {\n    [IconContext.landing]: 'p-2',\n    [IconContext.menuItem]: 'bg-white',\n    [IconContext.message]: 'bg-white',\n    [IconContext.nav]: 'bg-white',\n  },\n};\n\nconst getKnownClass = ({\n  currentEndpoint,\n  context = '',\n  className,\n}: {\n  currentEndpoint: string;\n  context?: string;\n  className: string;\n}) => {\n  if (currentEndpoint === KnownEndpoints.openrouter) {\n    return className;\n  }\n\n  const match = knownEndpointClasses[currentEndpoint]?.[context] ?? '';\n  const defaultClass = context === IconContext.landing ? '' : className;\n\n  return cn(match, defaultClass);\n};\n\nfunction UnknownIcon({\n  className = '',\n  endpoint: _endpoint,\n  iconURL = '',\n  context,\n}: {\n  iconURL?: string;\n  className?: string;\n  endpoint?: EModelEndpoint | string | null;\n  context?: 'landing' | 'menu-item' | 'nav' | 'message';\n}) {\n  const endpoint = _endpoint ?? '';\n  if (!endpoint) {\n    return <CustomMinimalIcon className={className} />;\n  }\n\n  const currentEndpoint = endpoint.toLowerCase();\n\n  if (iconURL) {\n    return <img className={className} src={iconURL} alt={`${endpoint} Icon`} />;\n  }\n\n  const assetPath: string = knownEndpointAssets[currentEndpoint] ?? '';\n\n  if (!assetPath) {\n    return <CustomMinimalIcon className={className} />;\n  }\n\n  return (\n    <img\n      className={getKnownClass({\n        currentEndpoint,\n        context: context,\n        className,\n      })}\n      src={assetPath}\n      alt={`${currentEndpoint} Icon`}\n    />\n  );\n}\n\nexport default memo(UnknownIcon);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/EndpointsMenu.tsx",
    "content": "import { useCallback, useRef } from 'react';\nimport { alternateName } from '~/data-provider/data-provider/src';\nimport { Content, Portal, Root } from '@radix-ui/react-popover';\nimport type { FC, KeyboardEvent } from 'react';\nimport { useChatContext, useAgentsMapContext, useAssistantsMapContext } from '~/Providers';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { mapEndpoints, getEntity } from '~/utils';\nimport EndpointItems from './Endpoints/MenuItems';\nimport useLocalize from '~/hooks/useLocalize';\nimport TitleButton from './UI/TitleButton';\n\nconst EndpointsMenu: FC = () => {\n  const { data: endpoints = [] } = useGetEndpointsQuery({\n    select: mapEndpoints,\n  });\n\n  const localize = useLocalize();\n  const agentsMap = useAgentsMapContext();\n  const assistantMap = useAssistantsMapContext();\n  const { conversation } = useChatContext();\n  const { endpoint = '' } = conversation ?? {};\n\n  const menuRef = useRef<HTMLDivElement>(null);\n\n  const handleKeyDown = useCallback((event: KeyboardEvent) => {\n    const menuItems = menuRef.current?.querySelectorAll('[role=\"option\"]');\n    if (!menuItems) {\n      return;\n    }\n    if (!menuItems.length) {\n      return;\n    }\n\n    const currentIndex = Array.from(menuItems).findIndex((item) => item === document.activeElement);\n\n    switch (event.key) {\n      case 'ArrowDown':\n        event.preventDefault();\n        if (currentIndex < menuItems.length - 1) {\n          (menuItems[currentIndex + 1] as HTMLElement).focus();\n        } else {\n          (menuItems[0] as HTMLElement).focus();\n        }\n        break;\n      case 'ArrowUp':\n        event.preventDefault();\n        if (currentIndex > 0) {\n          (menuItems[currentIndex - 1] as HTMLElement).focus();\n        } else {\n          (menuItems[menuItems.length - 1] as HTMLElement).focus();\n        }\n        break;\n    }\n  }, []);\n\n  if (!endpoint) {\n    console.warn('No endpoint selected');\n    return null;\n  }\n\n  const { entity } = getEntity({\n    endpoint,\n    agentsMap,\n    assistantMap,\n    agent_id: conversation?.agent_id,\n    assistant_id: conversation?.assistant_id,\n  });\n\n  const primaryText = entity\n    ? entity.name\n    : (alternateName[endpoint] as string | undefined) ?? endpoint;\n\n  return (\n    <Root>\n      <TitleButton primaryText={primaryText + ' '} />\n      <Portal>\n        <div\n          style={{\n            position: 'fixed',\n            left: '0px',\n            top: '0px',\n            transform: 'translate3d(268px, 50px, 0px)',\n            minWidth: 'max-content',\n            zIndex: 'auto',\n          }}\n        >\n          <Content\n            side=\"bottom\"\n            align=\"start\"\n            role=\"listbox\"\n            id=\"llm-endpoint-menu\"\n            ref={menuRef}\n            onKeyDown={handleKeyDown}\n            aria-label={localize('com_ui_endpoints_available')}\n            className=\"mt-2 max-h-[65vh] min-w-[340px] overflow-y-auto rounded-lg border border-border-light bg-header-primary text-text-primary shadow-lg lg:max-h-[75vh]\"\n          >\n            <EndpointItems endpoints={endpoints} selected={endpoint} />\n          </Content>\n        </div>\n      </Portal>\n    </Root>\n  );\n};\n\nexport default EndpointsMenu;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/HeaderNewChat.tsx",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys, Constants } from '~/data-provider/data-provider/src';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useMediaQuery, useLocalize } from '~/hooks';\nimport { NewChatIcon } from '~/components/svg';\nimport { useChatContext } from '~/Providers';\n\nexport default function HeaderNewChat() {\n  const queryClient = useQueryClient();\n  const { conversation, newConversation } = useChatContext();\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const localize = useLocalize();\n  if (isSmallScreen) {\n    return null;\n  }\n  return (\n    <button\n      data-testid=\"wide-header-new-chat-button\"\n      aria-label={localize('com_ui_new_chat')}\n      type=\"button\"\n      className=\"btn btn-neutral btn-small border-token-border-medium focus:border-black-500 dark:focus:border-white-500 relative ml-2 flex h-9 w-9 items-center justify-center whitespace-nowrap rounded-lg border md:flex\"\n      onClick={() => {\n        queryClient.setQueryData<TMessage[]>(\n          [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],\n          [],\n        );\n        newConversation();\n      }}\n    >\n      <div className=\"flex w-full items-center justify-center gap-2\">\n        <NewChatIcon />\n      </div>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/MenuButton.tsx",
    "content": "import { useState } from 'react';\nimport { Trigger } from '@radix-ui/react-popover';\nimport type { TModelSpec, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport { useLocalize } from '~/hooks';\nimport SpecIcon from './SpecIcon';\nimport { cn } from '~/utils';\n\nexport default function MenuButton({\n  selected,\n  className = '',\n  textClassName = '',\n  primaryText = '',\n  secondaryText = '',\n  endpointsConfig,\n}: {\n  selected?: TModelSpec;\n  className?: string;\n  textClassName?: string;\n  primaryText?: string;\n  secondaryText?: string;\n  endpointsConfig: TEndpointsConfig;\n}) {\n  const localize = useLocalize();\n  const [isExpanded, setIsExpanded] = useState(false);\n\n  return (\n    <Trigger asChild>\n      <button\n        className={cn(\n          'group flex cursor-pointer items-center gap-1 rounded-xl px-3 py-2 text-lg font-medium hover:bg-gray-50 radix-state-open:bg-gray-50 dark:hover:bg-gray-700 dark:radix-state-open:bg-gray-700',\n          className,\n        )}\n        type=\"button\"\n        aria-label={localize('com_ui_llm_menu')}\n        role=\"combobox\"\n        aria-haspopup=\"listbox\"\n        aria-expanded={isExpanded}\n        aria-controls=\"llm-menu\"\n        onClick={() => setIsExpanded(!isExpanded)}\n      >\n        {selected && selected.showIconInHeader === true && (\n          <SpecIcon currentSpec={selected} endpointsConfig={endpointsConfig} />\n        )}\n        <div className={textClassName}>\n          {!selected ? localize('com_ui_none_selected') : primaryText}{' '}\n          {!!secondaryText && <span className=\"text-token-text-secondary\">{secondaryText}</span>}\n        </div>\n        <svg\n          width=\"16\"\n          height=\"17\"\n          viewBox=\"0 0 16 17\"\n          fill=\"none\"\n          className=\"text-token-text-tertiary\"\n        >\n          <path\n            d=\"M11.3346 7.83203L8.00131 11.1654L4.66797 7.83203\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n        </svg>\n      </button>\n    </Trigger>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/ModelSpec.tsx",
    "content": "import { useState, useMemo } from 'react';\nimport { Settings } from 'lucide-react';\nimport type { FC } from 'react';\nimport type { TModelSpec, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport { SetKeyDialog } from '~/components/Input/SetKeyDialog';\nimport { useLocalize, useUserKey } from '~/hooks';\nimport { cn, getEndpointField } from '~/utils';\nimport SpecIcon from './SpecIcon';\n\ntype MenuItemProps = {\n  title: string;\n  spec: TModelSpec;\n  selected: boolean;\n  description?: string;\n  userProvidesKey: boolean;\n  endpointsConfig: TEndpointsConfig;\n  onClick?: () => void;\n  // iconPath: string;\n  // hoverContent?: string;\n};\n\nconst MenuItem: FC<MenuItemProps> = ({\n  title,\n  spec,\n  selected,\n  description,\n  userProvidesKey,\n  endpointsConfig,\n  onClick,\n  ...rest\n}) => {\n  const { endpoint } = spec.preset;\n  const [isDialogOpen, setDialogOpen] = useState(false);\n  const { getExpiry } = useUserKey(endpoint ?? '');\n  const localize = useLocalize();\n  const expiryTime = getExpiry() ?? '';\n\n  const clickHandler = () => {\n    if (expiryTime) {\n      setDialogOpen(true);\n    }\n    if (onClick) {\n      onClick();\n    }\n  };\n\n  const endpointType = useMemo(\n    () => spec.preset.endpointType ?? getEndpointField(endpointsConfig, endpoint, 'type'),\n    [spec, endpointsConfig, endpoint],\n  );\n\n  const { showIconInMenu = true } = spec;\n\n  return (\n    <>\n      <div\n        id={selected ? 'selected-llm' : undefined}\n        role=\"option\"\n        aria-selected={selected}\n        className=\"group m-1.5 flex cursor-pointer gap-2 rounded px-1 py-2.5 !pr-3 text-sm !opacity-100 hover:bg-black/5 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-white/5\"\n        tabIndex={0}\n        {...rest}\n        onClick={clickHandler}\n        aria-label={title}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter') {\n            e.preventDefault();\n            clickHandler();\n          }\n        }}\n      >\n        <div className=\"flex grow items-center justify-between gap-2\">\n          <div>\n            <div className=\"flex items-center gap-2\">\n              {showIconInMenu && <SpecIcon currentSpec={spec} endpointsConfig={endpointsConfig} />}\n              <div>\n                {title}\n                <div className=\"text-token-text-tertiary\">{description}</div>\n              </div>\n            </div>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            {userProvidesKey ? (\n              <div className=\"text-token-text-primary\" key={`set-key-${endpoint}`}>\n                <button\n                  tabIndex={0}\n                  aria-label={`${localize('com_endpoint_config_key')} for ${title}`}\n                  className={cn(\n                    'invisible flex gap-x-1 group-focus-within:visible group-hover:visible',\n                    selected ? 'visible' : '',\n                    expiryTime\n                      ? 'w-full rounded-lg p-2 hover:bg-gray-200 dark:hover:bg-gray-900'\n                      : '',\n                  )}\n                  onClick={(e) => {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    setDialogOpen(true);\n                  }}\n                  onKeyDown={(e) => {\n                    if (e.key === 'Enter' || e.key === ' ') {\n                      e.preventDefault();\n                      e.stopPropagation();\n                      setDialogOpen(true);\n                    }\n                  }}\n                >\n                  <div\n                    className={cn(\n                      'invisible group-focus-within:visible group-hover:visible',\n                      expiryTime ? 'text-xs' : '',\n                    )}\n                  >\n                    {localize('com_endpoint_config_key')}\n                  </div>\n                  <Settings className={cn(expiryTime ? 'icon-sm' : 'icon-md stroke-1')} />\n                </button>\n              </div>\n            ) : null}\n            {selected && (\n              <svg\n                width=\"24\"\n                height=\"24\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                className=\"icon-md block\"\n                // className=\"icon-md block group-hover:hidden\"\n              >\n                <path\n                  fillRule=\"evenodd\"\n                  clipRule=\"evenodd\"\n                  d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z\"\n                  fill=\"currentColor\"\n                />\n              </svg>\n            )}\n          </div>\n        </div>\n      </div>\n      {userProvidesKey && (\n        <SetKeyDialog\n          open={isDialogOpen}\n          onOpenChange={setDialogOpen}\n          endpoint={endpoint ?? ''}\n          endpointType={endpointType}\n        />\n      )}\n    </>\n  );\n};\n\nexport default MenuItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/ModelSpecs.tsx",
    "content": "import type { FC } from 'react';\nimport { Close } from '@radix-ui/react-popover';\nimport { AuthType } from '~/data-provider/data-provider/src';\nimport type { TModelSpec, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport MenuSeparator from '~/components/Chat/Menus/UI/MenuSeparator';\nimport ModelSpec from './ModelSpec';\n\nconst ModelSpecs: FC<{\n  specs?: Array<TModelSpec | undefined>;\n  selected?: TModelSpec;\n  setSelected?: (spec: TModelSpec) => void;\n  endpointsConfig: TEndpointsConfig;\n}> = ({ specs = [], selected, setSelected = () => ({}), endpointsConfig }) => {\n  return (\n    <>\n      {specs.length &&\n        specs.map((spec, i) => {\n          if (!spec) {\n            return null;\n          }\n          return (\n            <Close asChild key={`spec-${spec.name}`}>\n              <div key={`spec-${spec.name}`}>\n                <ModelSpec\n                  spec={spec}\n                  title={spec.label}\n                  key={`spec-item-${spec.name}`}\n                  description={spec.description}\n                  onClick={() => setSelected(spec)}\n                  data-testid={`spec-item-${spec.name}`}\n                  selected={selected?.name === spec.name}\n                  userProvidesKey={spec.authType === AuthType.USER_PROVIDED}\n                  endpointsConfig={endpointsConfig}\n                />\n                {i !== specs.length - 1 && <MenuSeparator />}\n              </div>\n            </Close>\n          );\n        })}\n    </>\n  );\n};\n\nexport default ModelSpecs;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/ModelSpecsMenu.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useMemo, useCallback, useRef } from 'react';\nimport { Content, Portal, Root } from '@radix-ui/react-popover';\nimport { EModelEndpoint, isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TModelSpec, TConversation, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport type { KeyboardEvent } from 'react';\nimport { useChatContext, useAssistantsMapContext } from '~/Providers';\nimport { useDefaultConvo, useNewConvo, useLocalize } from '~/hooks';\nimport { getConvoSwitchLogic, getModelSpecIconURL } from '~/utils';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport MenuButton from './MenuButton';\nimport ModelSpecs from './ModelSpecs';\nimport store from '~/store';\n\nexport default function ModelSpecsMenu({ modelSpecs }: { modelSpecs?: TModelSpec[] }) {\n  const { conversation } = useChatContext();\n  const { newConversation } = useNewConvo();\n\n  const localize = useLocalize();\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n  const modularChat = useRecoilValue(store.modularChat);\n  const getDefaultConversation = useDefaultConvo();\n  const assistantMap = useAssistantsMapContext();\n\n  const onSelectSpec = (spec: TModelSpec) => {\n    const { preset } = spec;\n    preset.iconURL = getModelSpecIconURL(spec);\n    preset.spec = spec.name;\n    const { endpoint } = preset;\n    const newEndpoint = endpoint ?? '';\n    if (!newEndpoint) {\n      return;\n    }\n\n    const {\n      template,\n      shouldSwitch,\n      isNewModular,\n      newEndpointType,\n      isCurrentModular,\n      isExistingConversation,\n    } = getConvoSwitchLogic({\n      newEndpoint,\n      modularChat,\n      conversation,\n      endpointsConfig,\n    });\n\n    if (newEndpointType) {\n      preset.endpointType = newEndpointType;\n    }\n\n    if (isAssistantsEndpoint(newEndpoint) && preset.assistant_id != null && !(preset.model ?? '')) {\n      preset.model = assistantMap?.[newEndpoint]?.[preset.assistant_id]?.model;\n    }\n\n    const isModular = isCurrentModular && isNewModular && shouldSwitch;\n    if (isExistingConversation && isModular) {\n      template.endpointType = newEndpointType as EModelEndpoint | undefined;\n\n      const currentConvo = getDefaultConversation({\n        /* target endpointType is necessary to avoid endpoint mixing */\n        conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n        preset: template,\n      });\n\n      /* We don't reset the latest message, only when changing settings mid-converstion */\n      newConversation({\n        template: currentConvo,\n        preset,\n        keepLatestMessage: true,\n        keepAddedConvos: true,\n      });\n      return;\n    }\n\n    newConversation({\n      template: { ...(template as Partial<TConversation>) },\n      preset,\n      keepAddedConvos: isModular,\n    });\n  };\n\n  const selected = useMemo(() => {\n    const spec = modelSpecs?.find((spec) => spec.name === conversation?.spec);\n    if (!spec) {\n      return undefined;\n    }\n    return spec;\n  }, [modelSpecs, conversation?.spec]);\n\n  const menuRef = useRef<HTMLDivElement>(null);\n\n  const handleKeyDown = useCallback((event: KeyboardEvent) => {\n    const menuItems = menuRef.current?.querySelectorAll('[role=\"option\"]');\n    if (!menuItems) {\n      return;\n    }\n    if (!menuItems.length) {\n      return;\n    }\n\n    const currentIndex = Array.from(menuItems).findIndex((item) => item === document.activeElement);\n\n    switch (event.key) {\n      case 'ArrowDown':\n        event.preventDefault();\n        if (currentIndex < menuItems.length - 1) {\n          (menuItems[currentIndex + 1] as HTMLElement).focus();\n        } else {\n          (menuItems[0] as HTMLElement).focus();\n        }\n        break;\n      case 'ArrowUp':\n        event.preventDefault();\n        if (currentIndex > 0) {\n          (menuItems[currentIndex - 1] as HTMLElement).focus();\n        } else {\n          (menuItems[menuItems.length - 1] as HTMLElement).focus();\n        }\n        break;\n    }\n  }, []);\n\n  return (\n    <Root>\n      <MenuButton\n        selected={selected}\n        className=\"min-h-11\"\n        textClassName=\"block items-center justify-start text-xs md:text-base whitespace-nowrap max-w-64 overflow-hidden shrink-0 text-ellipsis\"\n        primaryText={selected?.label ?? ''}\n        endpointsConfig={endpointsConfig}\n      />\n      <Portal>\n        {modelSpecs && modelSpecs.length && (\n          <div\n            style={{\n              position: 'fixed',\n              left: '0px',\n              top: '0px',\n              transform: 'translate3d(268px, 50px, 0px)',\n              minWidth: 'max-content',\n              zIndex: 'auto',\n            }}\n          >\n            <Content\n              side=\"bottom\"\n              align=\"start\"\n              id=\"llm-menu\"\n              role=\"listbox\"\n              ref={menuRef}\n              onKeyDown={handleKeyDown}\n              aria-label={localize('com_ui_llms_available')}\n              className=\"models-scrollbar mt-2 max-h-[65vh] min-w-[340px] max-w-xs overflow-y-auto rounded-lg border border-gray-100 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-700 dark:text-white lg:max-h-[75vh]\"\n            >\n              <ModelSpecs\n                specs={modelSpecs}\n                selected={selected}\n                setSelected={onSelectSpec}\n                endpointsConfig={endpointsConfig}\n              />\n            </Content>\n          </div>\n        )}\n      </Portal>\n    </Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/SpecIcon.tsx",
    "content": "import React, { memo } from 'react';\nimport type { TModelSpec, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport type { IconMapProps } from '~/common';\nimport { getModelSpecIconURL, getIconKey, getEndpointField } from '~/utils';\nimport { icons } from '~/components/Chat/Menus/Endpoints/Icons';\nimport { URLIcon } from '~/components/Endpoints/URLIcon';\n\ninterface SpecIconProps {\n  currentSpec: TModelSpec;\n  endpointsConfig: TEndpointsConfig;\n}\n\nconst SpecIcon: React.FC<SpecIconProps> = ({ currentSpec, endpointsConfig }) => {\n  const iconURL = getModelSpecIconURL(currentSpec);\n  const { endpoint } = currentSpec.preset;\n  const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL');\n  const iconKey = getIconKey({ endpoint, endpointsConfig, endpointIconURL });\n  let Icon: (props: IconMapProps) => React.JSX.Element;\n\n  if (!iconURL.includes('http')) {\n    Icon = icons[iconKey] ?? icons.unknown;\n  } else if (iconURL) {\n    return <URLIcon iconURL={iconURL} altName={currentSpec.name} />;\n  } else {\n    Icon = icons[endpoint ?? ''] ?? icons.unknown;\n  }\n\n  return (\n    <Icon\n      size={20}\n      endpoint={endpoint}\n      context=\"menu-item\"\n      iconURL={endpointIconURL}\n      className=\"icon-lg mr-1 shrink-0 text-text-primary\"\n    />\n  );\n};\n\nexport default memo(SpecIcon);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Models/fakeData.ts",
    "content": "import { EModelEndpoint, AuthType } from '~/data-provider/data-provider/src';\nimport type { TModelSpec } from '~/data-provider/data-provider/src';\n\nexport const data: TModelSpec[] = [\n  {\n    name: 'commander_01',\n    label: 'Commander in Chief',\n    description:\n      'Salute your president, soldier! Salute your president, soldier! Salute your president, soldier!',\n    iconURL: 'https://i.kym-cdn.com/entries/icons/facebook/000/017/252/2f0.jpg',\n    // iconURL: EModelEndpoint.openAI,\n    preset: {\n      endpoint: 'Ollama',\n      greeting: 'My fellow Americans,',\n      // 'endpointType': EModelEndpoint.custom,\n      frequency_penalty: 0,\n      // 'imageDetail': 'auto',\n      model: 'command-r',\n      presence_penalty: 0,\n      promptPrefix: null,\n      resendFiles: false,\n      temperature: 0.8,\n      top_p: 0.5,\n    },\n    authType: AuthType.SYSTEM_DEFINED,\n  },\n  {\n    name: 'vision_pro',\n    label: 'Vision Pro',\n    description:\n      'Salute your president, soldier! Salute your president, soldier! Salute your president, soldier!',\n    // iconURL: 'https://i.ytimg.com/vi/SaneSRqePVY/maxresdefault.jpg',\n    iconURL: EModelEndpoint.openAI, // Allow using project-included icons\n    preset: {\n      chatGptLabel: 'Vision Helper',\n      greeting: 'What\\'s up!!',\n      endpoint: EModelEndpoint.openAI,\n      model: 'gpt-4-turbo',\n      promptPrefix:\n        'Examine images closely to understand its style, colors, composition, and other elements. Then, craft a detailed prompt to that closely resemble the original. Your focus is on accuracy in replicating the style, colors, techniques, and details of the original image in written form. Your prompt must be excruciatingly detailed as it will be given to an image generating AI for image generation. \\n',\n      temperature: 0.8,\n      top_p: 1,\n    },\n    authType: AuthType.SYSTEM_DEFINED,\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys, isAgentsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TModelsConfig, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport {\n  cn,\n  defaultTextProps,\n  removeFocusOutlines,\n  mapEndpoints,\n  getConvoSwitchLogic,\n} from '~/utils';\nimport { Input, Label, SelectDropDown, Dialog, DialogClose, DialogButton } from '~/components';\nimport { useSetIndexOptions, useLocalize, useDebouncedInput } from '~/hooks';\nimport PopoverButtons from '~/components/Chat/Input/PopoverButtons';\nimport DialogTemplate from '~/components/ui/DialogTemplate';\nimport { EndpointSettings } from '~/components/Endpoints';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { useChatContext } from '~/Providers';\nimport store from '~/store';\n\nconst EditPresetDialog = ({\n  exportPreset,\n  submitPreset,\n}: {\n  exportPreset: () => void;\n  submitPreset: () => void;\n}) => {\n  const localize = useLocalize();\n  const queryClient = useQueryClient();\n  const { preset, setPreset } = useChatContext();\n  const { setOption, setOptions, setAgentOption } = useSetIndexOptions(preset);\n  const [onTitleChange, title] = useDebouncedInput({\n    setOption,\n    optionKey: 'title',\n    initialValue: preset?.title,\n  });\n  const [presetModalVisible, setPresetModalVisible] = useRecoilState(store.presetModalVisible);\n\n  const { data: _endpoints = [] } = useGetEndpointsQuery({\n    select: mapEndpoints,\n  });\n\n  const availableEndpoints = useMemo(() => {\n    return _endpoints.filter((endpoint) => !isAgentsEndpoint(endpoint));\n  }, [_endpoints]);\n\n  useEffect(() => {\n    if (!preset) {\n      return;\n    }\n\n    if (isAgentsEndpoint(preset.endpoint)) {\n      return;\n    }\n\n    const presetEndpoint = preset.endpoint ?? '';\n\n    if (!presetEndpoint) {\n      return;\n    }\n\n    const modelsConfig = queryClient.getQueryData<TModelsConfig>([QueryKeys.models]);\n    if (!modelsConfig) {\n      return;\n    }\n\n    const models = modelsConfig[presetEndpoint] as string[] | undefined;\n    if (!models) {\n      return;\n    }\n    if (!models.length) {\n      return;\n    }\n\n    if (preset.model === models[0]) {\n      return;\n    }\n\n    if (!models.includes(preset.model ?? '')) {\n      console.log('setting model', models[0]);\n      setOption('model')(models[0]);\n    }\n\n    if (preset.agentOptions?.model === models[0]) {\n      return;\n    }\n\n    if (\n      preset.agentOptions?.model != null &&\n      preset.agentOptions.model &&\n      !models.includes(preset.agentOptions.model)\n    ) {\n      console.log('setting agent model', models[0]);\n      setAgentOption('model')(models[0]);\n    }\n  }, [preset, queryClient, setOption, setAgentOption]);\n\n  const switchEndpoint = useCallback(\n    (newEndpoint: string) => {\n      if (!setOptions) {\n        return console.warn('setOptions is not defined');\n      }\n\n      const { newEndpointType } = getConvoSwitchLogic({\n        newEndpoint,\n        modularChat: true,\n        conversation: null,\n        endpointsConfig: queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]) ?? {},\n      });\n\n      setOptions({\n        endpoint: newEndpoint,\n        endpointType: newEndpointType,\n      });\n    },\n    [queryClient, setOptions],\n  );\n\n  const { endpoint: _endpoint, endpointType, model } = preset || {};\n  const endpoint = _endpoint ?? '';\n  if (!endpoint) {\n    return null;\n  } else if (isAgentsEndpoint(endpoint)) {\n    return null;\n  }\n\n  return (\n    <Dialog\n      open={presetModalVisible}\n      onOpenChange={(open) => {\n        setPresetModalVisible(open);\n        if (!open) {\n          setPreset(null);\n        }\n      }}\n    >\n      <DialogTemplate\n        title={`${localize('com_ui_edit') + ' ' + localize('com_endpoint_preset')} - ${\n          preset?.title\n        }`}\n        className=\"h-full max-w-full overflow-y-auto pb-4 sm:w-[680px] sm:pb-0 md:h-[720px] md:w-[750px] md:overflow-y-hidden lg:w-[950px] xl:h-[720px]\"\n        main={\n          <div className=\"flex w-full flex-col items-center gap-2 md:h-[550px] md:overflow-y-auto\">\n            <div className=\"grid w-full\">\n              <div className=\"col-span-4 flex flex-col items-start justify-start gap-6 pb-4 md:flex-row\">\n                <div className=\"flex w-full flex-col\">\n                  <Label htmlFor=\"preset-name\" className=\"mb-1 text-left text-sm font-medium\">\n                    {localize('com_endpoint_preset_name')}\n                  </Label>\n                  <Input\n                    id=\"preset-name\"\n                    value={(title as string | undefined) ?? ''}\n                    onChange={onTitleChange}\n                    placeholder={localize('com_endpoint_set_custom_name')}\n                    className={cn(\n                      defaultTextProps,\n                      'flex h-10 max-h-10 w-full resize-none px-3 py-2',\n                      removeFocusOutlines,\n                    )}\n                  />\n                </div>\n                <div className=\"flex w-full flex-col\">\n                  <Label htmlFor=\"endpoint\" className=\"mb-1 text-left text-sm font-medium\">\n                    {localize('com_endpoint')}\n                  </Label>\n                  <SelectDropDown\n                    value={endpoint || ''}\n                    setValue={switchEndpoint}\n                    showLabel={false}\n                    emptyTitle={true}\n                    searchPlaceholder={localize('com_endpoint_search')}\n                    availableValues={availableEndpoints}\n                  />\n                </div>\n              </div>\n              <div className=\"col-span-2 flex items-start justify-between gap-4 sm:col-span-4\">\n                <div className=\"flex w-full flex-col\">\n                  <Label\n                    htmlFor=\"endpoint\"\n                    className=\"mb-1 hidden text-left text-sm font-medium sm:block\"\n                  >\n                    {'ㅤ'}\n                  </Label>\n                  <PopoverButtons\n                    buttonClass=\"ml-0 w-full border border-border-medium p-2 h-[40px] justify-center mt-0\"\n                    iconClass=\"hidden lg:block w-4 \"\n                    endpoint={endpoint}\n                    endpointType={endpointType}\n                    model={model}\n                  />\n                </div>\n              </div>\n            </div>\n            <div className=\"my-4 w-full border-t border-border-medium\" />\n            <div className=\"w-full p-0\">\n              <EndpointSettings\n                conversation={preset}\n                setOption={setOption}\n                isPreset={true}\n                className=\"h-full text-text-primary md:mb-4 md:h-[440px]\"\n              />\n            </div>\n          </div>\n        }\n        buttons={\n          <div className=\"mb-6 md:mb-2\">\n            <DialogButton\n              onClick={exportPreset}\n              className=\"border-gray-100 hover:bg-gray-100 dark:border-gray-600 dark:hover:bg-gray-600\"\n            >\n              {localize('com_endpoint_export')}\n            </DialogButton>\n            <DialogClose\n              onClick={submitPreset}\n              className=\"ml-2 bg-green-500 text-white hover:bg-green-600 dark:hover:bg-green-600\"\n            >\n              {localize('com_ui_save')}\n            </DialogClose>\n          </div>\n        }\n        footerClassName=\"bg-white dark:bg-gray-700\"\n      />\n    </Dialog>\n  );\n};\n\nexport default EditPresetDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Presets/PresetItems.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { Close } from '@radix-ui/react-popover';\nimport { Flipper, Flipped } from 'react-flip-toolkit';\nimport type { FC } from 'react';\nimport type { TPreset } from '~/data-provider/data-provider/src';\nimport { getPresetTitle, getEndpointField, getIconKey } from '~/utils';\nimport FileUpload from '~/components/Chat/Input/Files/FileUpload';\nimport { PinIcon, EditIcon, TrashIcon } from '~/components/svg';\nimport { Dialog, DialogTrigger, Label } from '~/components/ui';\nimport DialogTemplate from '~/components/ui/DialogTemplate';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { MenuSeparator, MenuItem } from '../UI';\nimport { icons } from '../Endpoints/Icons';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nconst PresetItems: FC<{\n  presets?: Array<TPreset | undefined>;\n  onSetDefaultPreset: (preset: TPreset, remove?: boolean) => void;\n  onSelectPreset: (preset: TPreset) => void;\n  onChangePreset: (preset: TPreset) => void;\n  onDeletePreset: (preset: TPreset) => void;\n  clearAllPresets: () => void;\n  onFileSelected: (jsonData: Record<string, unknown>) => void;\n}> = ({\n  presets,\n  onSetDefaultPreset,\n  onSelectPreset,\n  onChangePreset,\n  onDeletePreset,\n  clearAllPresets,\n  onFileSelected,\n}) => {\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const defaultPreset = useRecoilValue(store.defaultPreset);\n  const localize = useLocalize();\n  return (\n    <>\n      <div\n        role=\"menuitem\"\n        className=\"pointer-none group m-1.5 flex h-8 min-w-[170px] gap-2 rounded px-5 py-2.5 !pr-3 text-sm !opacity-100 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50  md:min-w-[240px]\"\n        tabIndex={-1}\n      >\n        <div className=\"flex h-full grow items-center justify-end gap-2\">\n          <label\n            htmlFor=\"default-preset\"\n            className=\"w-40 truncate rounded bg-transparent py-1 text-xs font-medium text-gray-600 transition-colors dark:bg-transparent dark:text-gray-300 sm:w-72\"\n          >\n            {defaultPreset\n              ? `${localize('com_endpoint_preset_default_item')} ${defaultPreset.title}`\n              : localize('com_endpoint_preset_default_none')}\n          </label>\n          <Dialog>\n            <DialogTrigger asChild>\n              <label\n                htmlFor=\"file-upload\"\n                className=\"mr-1 flex h-[32px] cursor-pointer items-center rounded bg-transparent px-2 py-1 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 hover:text-red-700 dark:bg-transparent dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-red-700\"\n              >\n                <svg\n                  width=\"24\"\n                  height=\"24\"\n                  viewBox=\"0 0 16 16\"\n                  fill=\"currentColor\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  className=\"mr-1 flex w-[22px] items-center\"\n                >\n                  <path d=\"M9.293 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.707A1 1 0 0 0 13.707 4L10 .293A1 1 0 0 0 9.293 0M9.5 3.5v-2l3 3h-2a1 1 0 0 1-1-1M6.854 7.146 8 8.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 9l1.147 1.146a.5.5 0 0 1-.708.708L8 9.707l-1.146 1.147a.5.5 0 0 1-.708-.708L7.293 9 6.146 7.854a.5.5 0 1 1 .708-.708\"></path>\n                </svg>\n                {localize('com_ui_clear')} {localize('com_ui_all')}\n              </label>\n            </DialogTrigger>\n            <DialogTemplate\n              showCloseButton={false}\n              title={`${localize('com_ui_clear')} ${localize('com_endpoint_presets')}`}\n              className=\"max-w-[450px]\"\n              main={\n                <>\n                  <div className=\"flex w-full flex-col items-center gap-2\">\n                    <div className=\"grid w-full items-center gap-2\">\n                      <Label\n                        htmlFor=\"preset-item-clear-all\"\n                        className=\"text-left text-sm font-medium\"\n                      >\n                        {localize('com_endpoint_presets_clear_warning')}\n                      </Label>\n                    </div>\n                  </div>\n                </>\n              }\n              selection={{\n                selectHandler: clearAllPresets,\n                selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-600 text-white',\n                selectText: localize('com_ui_clear'),\n              }}\n            />\n            <FileUpload onFileSelected={onFileSelected} />\n          </Dialog>\n        </div>\n      </div>\n      {presets && presets.length === 0 && (\n        <div\n          role=\"menuitem\"\n          className=\"pointer-none group m-1.5 flex h-8 min-w-[170px] gap-2 rounded px-5 py-2.5 !pr-3 text-sm !opacity-100 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 md:min-w-[240px]\"\n          tabIndex={-1}\n        >\n          <div className=\"flex h-full grow items-center justify-end gap-2 text-gray-600 dark:text-gray-300\">\n            {/* TODO: Create Preset from here */}\n            {localize('com_endpoint_no_presets')}\n          </div>\n        </div>\n      )}\n      <Flipper\n        flipKey={presets\n          ?.map((preset) => preset?.presetId)\n          .filter((p) => p)\n          .join('.')}\n      >\n        {presets &&\n          presets.length > 0 &&\n          presets.map((preset, i) => {\n            const presetId = preset?.presetId ?? '';\n            if (!preset || !presetId) {\n              return null;\n            }\n\n            const iconKey = getIconKey({ endpoint: preset.endpoint, endpointsConfig });\n            const Icon = icons[iconKey];\n\n            return (\n              <Close asChild key={`preset-${presetId}`}>\n                <div key={`preset-${presetId}`}>\n                  <Flipped flipId={presetId}>\n                    <MenuItem\n                      key={`preset-item-${presetId}`}\n                      textClassName=\"text-xs max-w-[150px] sm:max-w-[200px] truncate md:max-w-full \"\n                      title={getPresetTitle(preset)}\n                      onClick={() => onSelectPreset(preset)}\n                      icon={\n                        Icon != null && (\n                          <Icon\n                            context=\"menu-item\"\n                            iconURL={getEndpointField(endpointsConfig, preset.endpoint, 'iconURL')}\n                            className=\"icon-md mr-1 dark:text-white\"\n                            endpoint={preset.endpoint}\n                          />\n                        )\n                      }\n                      selected={false}\n                      data-testid={`preset-item-${preset}`}\n                    >\n                      <div className=\"flex h-full items-center justify-end gap-1\">\n                        <button\n                          className={cn(\n                            'm-0 h-full rounded-md bg-transparent p-2 text-gray-400 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200',\n                            defaultPreset?.presetId === presetId\n                              ? ''\n                              : 'sm:invisible sm:group-hover:visible',\n                          )}\n                          onClick={(e) => {\n                            e.preventDefault();\n                            e.stopPropagation();\n                            onSetDefaultPreset(preset, defaultPreset?.presetId === presetId);\n                          }}\n                        >\n                          <PinIcon unpin={defaultPreset?.presetId === presetId} />\n                        </button>\n                        <button\n                          className=\"m-0 h-full rounded-md p-2 text-gray-400 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 sm:invisible sm:group-hover:visible\"\n                          onClick={(e) => {\n                            e.preventDefault();\n                            e.stopPropagation();\n                            onChangePreset(preset);\n                          }}\n                        >\n                          <EditIcon />\n                        </button>\n                        <button\n                          className=\"m-0 h-full rounded-md p-2 text-gray-400 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-200 sm:invisible sm:group-hover:visible\"\n                          onClick={(e) => {\n                            e.preventDefault();\n                            e.stopPropagation();\n                            onDeletePreset(preset);\n                          }}\n                        >\n                          <TrashIcon />\n                        </button>\n                      </div>\n                    </MenuItem>\n                  </Flipped>\n                  {i !== presets.length - 1 && <MenuSeparator />}\n                </div>\n              </Close>\n            );\n          })}\n      </Flipper>\n    </>\n  );\n};\n\nexport default PresetItems;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/Presets/index.ts",
    "content": "export { default as EditPresetDialog } from './EditPresetDialog';\nexport { default as PresetItems } from './PresetItems';\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/PresetsMenu.tsx",
    "content": "import type { FC } from 'react';\nimport { BookCopy } from 'lucide-react';\nimport { Content, Portal, Root, Trigger } from '@radix-ui/react-popover';\nimport { EditPresetDialog, PresetItems } from './Presets';\nimport { useLocalize, usePresets } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport { TooltipAnchor } from '~/components';\n\nconst PresetsMenu: FC = () => {\n  const localize = useLocalize();\n  const {\n    presetsQuery,\n    onSetDefaultPreset,\n    onFileSelected,\n    onSelectPreset,\n    onChangePreset,\n    clearAllPresets,\n    onDeletePreset,\n    submitPreset,\n    exportPreset,\n  } = usePresets();\n  const { preset } = useChatContext();\n  return (\n    <Root>\n      <Trigger asChild>\n        <TooltipAnchor\n          id=\"presets-button\"\n          aria-label={localize('com_endpoint_examples')}\n          description={localize('com_endpoint_examples')}\n          tabIndex={0}\n          role=\"button\"\n          data-testid=\"presets-button\"\n          className=\"inline-flex size-10 items-center justify-center rounded-lg border border-border-light bg-transparent text-text-primary transition-all ease-in-out hover:bg-surface-tertiary disabled:pointer-events-none disabled:opacity-50 radix-state-open:bg-surface-tertiary\"\n        >\n          <BookCopy size={16} aria-label=\"Preset Icon\" />\n        </TooltipAnchor>\n      </Trigger>\n      <Portal>\n        <div\n          style={{\n            position: 'fixed',\n            left: '0px',\n            top: '0px',\n            transform: 'translate3d(268px, 50px, 0px)',\n            minWidth: 'max-content',\n            zIndex: 'auto',\n          }}\n        >\n          <Content\n            side=\"bottom\"\n            align=\"center\"\n            className=\"mt-2 max-h-[495px] overflow-x-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-700 dark:text-white md:min-w-[400px]\"\n          >\n            <PresetItems\n              presets={presetsQuery.data}\n              onSetDefaultPreset={onSetDefaultPreset}\n              onSelectPreset={onSelectPreset}\n              onChangePreset={onChangePreset}\n              onDeletePreset={onDeletePreset}\n              clearAllPresets={clearAllPresets}\n              onFileSelected={onFileSelected}\n            />\n          </Content>\n        </div>\n      </Portal>\n      {preset && <EditPresetDialog submitPreset={submitPreset} exportPreset={exportPreset} />}\n    </Root>\n  );\n};\n\nexport default PresetsMenu;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/UI/MenuItem.tsx",
    "content": "import type { FC } from 'react';\nimport { cn } from '~/utils';\n\ntype MenuItemProps = {\n  title: string;\n  value?: string;\n  selected: boolean;\n  description?: string;\n  onClick?: () => void;\n  hoverCondition?: boolean;\n  hoverContent?: React.ReactNode;\n  children?: React.ReactNode;\n  icon?: React.ReactNode;\n  className?: string;\n  textClassName?: string;\n  // hoverContent?: string;\n} & Record<string, unknown>;\n\nconst MenuItem: FC<MenuItemProps> = ({\n  title,\n  // value,\n  description,\n  selected,\n  // hoverCondition = true,\n  // hoverContent,\n  icon,\n  className = '',\n  textClassName = '',\n  children,\n  onClick,\n  ...rest\n}) => {\n  return (\n    <div\n      id={selected ? 'selected-endpoint' : undefined}\n      role=\"option\"\n      aria-selected={selected}\n      aria-label={title}\n      data-testid=\"chat-menu-item\"\n      className={cn(\n        'group m-1.5 flex cursor-pointer gap-2 rounded px-5 py-2.5 !pr-3 text-sm !opacity-100 hover:bg-black/5 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-gray-600 md:min-w-[240px]',\n        className || '',\n      )}\n      tabIndex={0} // Change to 0 to make it focusable\n      onClick={onClick}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          if (onClick) {\n            onClick();\n          }\n        }\n      }}\n      {...rest}\n    >\n      <div className=\"flex grow items-center justify-between gap-2\">\n        <div>\n          <div className={cn('flex items-center gap-1 ')}>\n            {icon != null ? icon : null}\n            <div className={cn('truncate', textClassName)}>\n              {title}\n              <div className=\"text-token-text-tertiary\">{description}</div>\n            </div>\n          </div>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          {children}\n          {selected && (\n            <svg\n              width=\"24\"\n              height=\"24\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              className=\"icon-md block \"\n            >\n              <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z\"\n                fill=\"currentColor\"\n              />\n            </svg>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default MenuItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/UI/MenuSeparator.tsx",
    "content": "import type { FC } from 'react';\n\nconst MenuSeparator: FC = () => (\n  <div\n    role=\"separator\"\n    aria-orientation=\"horizontal\"\n    className=\"my-1.5 border-b bg-gray-200 dark:border-gray-700\"\n  />\n);\n\nexport default MenuSeparator;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/UI/TitleButton.tsx",
    "content": "import { useState } from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { Trigger } from '@radix-ui/react-popover';\nimport useLocalize from '~/hooks/useLocalize';\n\nexport default function TitleButton({ primaryText = '', secondaryText = '' }) {\n  const localize = useLocalize();\n  const [isExpanded, setIsExpanded] = useState(false);\n\n  return (\n    <Trigger asChild>\n      <button\n        className=\"group flex cursor-pointer items-center gap-2 rounded-lg px-3 py-1.5 text-lg font-medium transition-colors duration-200 hover:bg-surface-hover radix-state-open:bg-surface-hover\"\n        aria-label={localize('com_ui_endpoint_menu')}\n        aria-expanded={isExpanded}\n        role=\"combobox\"\n        aria-haspopup=\"listbox\"\n        aria-controls=\"llm-endpoint-menu\"\n        onClick={() => setIsExpanded(!isExpanded)}\n      >\n        <div>\n          <span className=\"text-text-primary\"> {primaryText} </span>\n          {!!secondaryText && <span className=\"text-token-text-secondary\">{secondaryText}</span>}\n        </div>\n        <ChevronDown className=\"text-token-text-secondary size-4\" />\n      </button>\n    </Trigger>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/UI/index.ts",
    "content": "export { default as MenuItem } from './MenuItem';\nexport { default as MenuSeparator } from './MenuSeparator';\nexport { default as TitleButton } from './TitleButton';\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Menus/index.ts",
    "content": "export { default as PresetsMenu } from './PresetsMenu';\nexport { default as EndpointsMenu } from './EndpointsMenu';\nexport { default as HeaderNewChat } from './HeaderNewChat';\nexport { default as ModelSpecsMenu } from './Models/ModelSpecsMenu';\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ActionIcon.tsx",
    "content": "export default function ActionIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      viewBox=\"0 0 20 20\"\n      width=\"20\"\n      height=\"20\"\n      style={{ width: '100%', height: '100%', transform: 'translate3d(0px, 0px, 0px)' }}\n      preserveAspectRatio=\"xMidYMid meet\"\n    >\n      <defs>\n        <clipPath id=\"__lottie_element_232\">\n          <rect width=\"20\" height=\"20\" x=\"0\" y=\"0\"></rect>\n        </clipPath>\n        <clipPath id=\"__lottie_element_242\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        <g id=\"__lottie_element_245\">\n          <g\n            clipPath=\"url(#__lottie_element_246)\"\n            style={{ display: 'block' }}\n            transform=\"matrix(1,0,0,1,0,0)\"\n            opacity=\"1\"\n          >\n            <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10006,10006)\" opacity=\"1\">\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,0,0)\">\n                <path\n                  fill=\"rgb(255,255,255)\"\n                  fillOpacity=\"1\"\n                  d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                ></path>\n                <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,2.25)\"></g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <clipPath id=\"__lottie_element_246\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        <clipPath id=\"__lottie_element_256\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        {/* eslint-disable-next-line react/no-unknown-property */}\n        <mask id=\"__lottie_element_245_1\" mask-type=\"alpha\">\n          <use xlinkHref=\"#__lottie_element_245\"></use>\n        </mask>\n        <clipPath id=\"__lottie_element_269\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        <g id=\"__lottie_element_272\">\n          <g\n            clipPath=\"url(#__lottie_element_273)\"\n            style={{ display: 'block' }}\n            transform=\"matrix(1,0,0,1,0,0)\"\n            opacity=\"1\"\n          >\n            <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10006,10006)\" opacity=\"1\">\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,0,0)\">\n                <path\n                  fill=\"rgb(255,255,255)\"\n                  fillOpacity=\"1\"\n                  d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                ></path>\n                <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,2.25)\"></g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <clipPath id=\"__lottie_element_273\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        <clipPath id=\"__lottie_element_283\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\"></path>\n        </clipPath>\n        {/* eslint-disable-next-line react/no-unknown-property */}\n        <mask id=\"__lottie_element_272_1\" mask-type=\"alpha\">\n          <use xlinkHref=\"#__lottie_element_272\"></use>\n        </mask>\n      </defs>\n      <g clipPath=\"url(#__lottie_element_232)\">\n        <g\n          clipPath=\"url(#__lottie_element_269)\"\n          style={{ display: 'block' }}\n          transform=\"matrix(-1,0,0,-1,10014,10018.5)\"\n          opacity=\"1\"\n        >\n          <g style={{ display: 'block' }} mask=\"url(#__lottie_element_272_1)\">\n            <g clipPath=\"url(#__lottie_element_283)\" transform=\"matrix(1,0,0,1,0,0)\" opacity=\"1\">\n              <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10006,10006)\" opacity=\"1\">\n                <g opacity=\"1\" transform=\"matrix(1,0,0,1,0,0)\">\n                  <path\n                    fill=\"rgb(177,98,253)\"\n                    fillOpacity=\"1\"\n                    d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                  ></path>\n                  <path\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    fillOpacity=\"0\"\n                    stroke=\"rgb(177,98,253)\"\n                    strokeOpacity=\"1\"\n                    strokeWidth=\"3\"\n                    d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                  ></path>\n                  <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,2.25)\"></g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <g style={{ display: 'block' }} transform=\"matrix(-1,0,0,-1,5.75,10.25)\" opacity=\"1\">\n          <g opacity=\"1\" transform=\"matrix(1,0,0,1,-2.25,-0.75)\">\n            <path\n              fill=\"rgb(247,247,248)\"\n              fillOpacity=\"1\"\n              d=\" M0,0 C0.75,0 1.5,0 2.25,0 C2.6642000675201416,0 3,0.3357999920845032 3,0.75 C3,0.75 3,0.75 3,0.75 C3,1.164199948310852 2.6642000675201416,1.5 2.25,1.5 C1.5,1.5 0.75,1.5 0,1.5 C0,1 0,0.5 0,0 C0,0 0,0 0,0 C0,0 0,0 0,0\"\n            ></path>\n          </g>\n        </g>\n        <g\n          clipPath=\"url(#__lottie_element_242)\"\n          style={{ display: 'block' }}\n          transform=\"matrix(-1,0,0,-1,10022.5,10018.5)\"\n          opacity=\"1\"\n        >\n          <g style={{ display: 'block' }} mask=\"url(#__lottie_element_245_1)\">\n            <g clipPath=\"url(#__lottie_element_256)\" transform=\"matrix(1,0,0,1,0,0)\" opacity=\"1\">\n              <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10006,10006)\" opacity=\"1\">\n                <g opacity=\"1\" transform=\"matrix(1,0,0,1,0,0)\">\n                  <path\n                    fill=\"rgb(177,98,253)\"\n                    fillOpacity=\"1\"\n                    d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                  ></path>\n                  <path\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    fillOpacity=\"0\"\n                    stroke=\"rgb(177,98,253)\"\n                    strokeOpacity=\"1\"\n                    strokeWidth=\"3\"\n                    d=\" M4.5,1 C4.5,1 4.5,3.5 4.5,3.5 C4.5,4.05 4.05,4.5 3.5,4.5 C3.5,4.5 1,4.5 1,4.5 C0.45,4.5 0,4.05 0,3.5 C0,3.5 0,1 0,1 C0,0.45 0.45,0 1,0 C1,0 3.5,0 3.5,0 C4.05,0 4.5,0.45 4.5,1z\"\n                  ></path>\n                  <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,2.25)\"></g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <g style={{ display: 'block' }} transform=\"matrix(-1,0,0,-1,14.25,10.25)\" opacity=\"1\">\n          <g opacity=\"1\" transform=\"matrix(1,0,0,1,-0.75,-0.75)\">\n            <path\n              fill=\"rgb(247,247,248)\"\n              fillOpacity=\"1\"\n              d=\" M0,0.75 C0,0.3357999920845032 0.3357900083065033,0 0.75,0 C1.5,0 2.25,0 3,0 C3,0.5 3,1 3,1.5 C2.25,1.5 1.5,1.5 0.75,1.5 C0.3357900083065033,1.5 0,1.164199948310852 0,0.75 C0,0.75 0,0.75 0,0.75 C0,0.75 0,0.75 0,0.75 C0,0.75 0,0.75 0,0.75\"\n            ></path>\n          </g>\n        </g>\n        <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,0,0)\" opacity=\"1\">\n          <g opacity=\"1\" transform=\"matrix(1,0,0,1,10,10.25)\">\n            <path\n              fill=\"rgb(177,98,253)\"\n              fillOpacity=\"1\"\n              d=\" M2,-0.75 C2,-0.75 2,0.75 2,0.75 C2,0.75 -2,0.75 -2,0.75 C-2,0.75 -2,-0.75 -2,-0.75 C-2,-0.75 2,-0.75 2,-0.75z\"\n            ></path>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/CancelledIcon.tsx",
    "content": "export default function CancelledIcon() {\n  return (\n    <div\n      className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-gray-300 text-white\"\n      style={{ opacity: 1, transform: 'none' }}\n    >\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 8 9\" fill=\"none\" width=\"8\" height=\"9\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M7.32256 1.48447C7.59011 1.16827 7.55068 0.695034 7.23447 0.427476C6.91827 0.159918 6.44503 0.199354 6.17748 0.515559L4.00002 3.08892L1.82256 0.515559C1.555 0.199354 1.08176 0.159918 0.765559 0.427476C0.449355 0.695034 0.409918 1.16827 0.677476 1.48447L3.01755 4.25002L0.677476 7.01556C0.409918 7.33176 0.449354 7.805 0.765559 8.07256C1.08176 8.34011 1.555 8.30068 1.82256 7.98447L4.00002 5.41111L6.17748 7.98447C6.44503 8.30068 6.91827 8.34011 7.23447 8.07256C7.55068 7.805 7.59011 7.33176 7.32256 7.01556L4.98248 4.25002L7.32256 1.48447Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/CodeAnalyze.tsx",
    "content": "import { useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { CodeInProgress } from './Parts/CodeProgress';\nimport { useProgress, useLocalize } from '~/hooks';\nimport ProgressText from './ProgressText';\nimport FinishedIcon from './FinishedIcon';\nimport MarkdownLite from './MarkdownLite';\nimport store from '~/store';\n\nconst radius = 56.08695652173913;\nconst circumference = 2 * Math.PI * radius;\n\nexport default function CodeAnalyze({\n  initialProgress = 0.1,\n  code,\n  outputs = [],\n  isSubmitting,\n}: {\n  initialProgress: number;\n  code: string;\n  outputs: Record<string, unknown>[];\n  isSubmitting: boolean;\n}) {\n  const localize = useLocalize();\n  const progress = useProgress(initialProgress);\n  const showAnalysisCode = useRecoilValue(store.showCode);\n  const [showCode, setShowCode] = useState(showAnalysisCode);\n  const offset = circumference - progress * circumference;\n\n  const logs = outputs.reduce((acc, output) => {\n    if (output['logs']) {\n      return acc + output['logs'] + '\\n';\n    }\n    return acc;\n  }, '');\n\n  return (\n    <>\n      <div className=\"my-2.5 flex items-center gap-2.5\">\n        <div className=\"relative h-5 w-5 shrink-0\">\n          {progress < 1 ? (\n            <CodeInProgress\n              offset={offset}\n              radius={radius}\n              progress={progress}\n              isSubmitting={isSubmitting}\n              circumference={circumference}\n            />\n          ) : (\n            <FinishedIcon />\n          )}\n        </div>\n        <ProgressText\n          progress={progress}\n          onClick={() => setShowCode((prev) => !prev)}\n          inProgressText={localize('com_ui_analyzing')}\n          finishedText={localize('com_ui_analyzing_finished')}\n          hasInput={!!code.length}\n          isExpanded={showCode}\n        />\n      </div>\n      {showCode && (\n        <div className=\"code-analyze-block mb-3 mt-0.5 overflow-hidden rounded-xl bg-black\">\n          <MarkdownLite content={code ? `\\`\\`\\`python\\n${code}\\n\\`\\`\\`` : ''} />\n          {logs && (\n            <div className=\"bg-gray-700 p-4 text-xs\">\n              <div className=\"mb-1 text-gray-400\">{localize('com_ui_result')}</div>\n              <div\n                className=\"prose flex flex-col-reverse text-white\"\n                style={{\n                  color: 'white',\n                }}\n              >\n                <pre className=\"shrink-0\">{logs}</pre>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Container.tsx",
    "content": "import { TMessage } from '~/data-provider/data-provider/src';\nimport Files from './Files';\n\nconst Container = ({ children, message }: { children: React.ReactNode; message?: TMessage }) => (\n  <div\n    className=\"text-message flex min-h-[20px] flex-col items-start gap-3 overflow-visible [.text-message+&]:mt-5\"\n    dir=\"auto\"\n  >\n    {message?.isCreatedByUser === true && <Files message={message} />}\n    {children}\n  </div>\n);\n\nexport default Container;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ContentParts.tsx",
    "content": "import { memo, useMemo, useState } from 'react';\nimport { useRecoilValue, useRecoilState } from 'recoil';\nimport { ContentTypes } from '~/data-provider/data-provider/src';\nimport type { TMessageContentParts, TAttachment, Agents } from '~/data-provider/data-provider/src';\nimport { ThinkingButton } from '~/components/Artifacts/Thinking';\nimport EditTextPart from './Parts/EditTextPart';\nimport useLocalize from '~/hooks/useLocalize';\nimport { mapAttachments } from '~/utils/map';\nimport { MessageContext } from '~/Providers';\nimport store from '~/store';\nimport Part from './Part';\n\ntype ContentPartsProps = {\n  content: Array<TMessageContentParts | undefined> | undefined;\n  messageId: string;\n  conversationId?: string | null;\n  attachments?: TAttachment[];\n  isCreatedByUser: boolean;\n  isLast: boolean;\n  isSubmitting: boolean;\n  edit?: boolean;\n  enterEdit?: (cancel?: boolean) => void | null | undefined;\n  siblingIdx?: number;\n  setSiblingIdx?:\n    | ((value: number) => void | React.Dispatch<React.SetStateAction<number>>)\n    | null\n    | undefined;\n};\n\nconst ContentParts = memo(\n  ({\n    content,\n    messageId,\n    conversationId,\n    attachments,\n    isCreatedByUser,\n    isLast,\n    isSubmitting,\n    edit,\n    enterEdit,\n    siblingIdx,\n    setSiblingIdx,\n  }: ContentPartsProps) => {\n    const localize = useLocalize();\n    const [showThinking, setShowThinking] = useRecoilState<boolean>(store.showThinking);\n    const [isExpanded, setIsExpanded] = useState(showThinking);\n    const messageAttachmentsMap = useRecoilValue(store.messageAttachmentsMap);\n    const attachmentMap = useMemo(\n      () => mapAttachments(attachments ?? messageAttachmentsMap[messageId] ?? []),\n      [attachments, messageAttachmentsMap, messageId],\n    );\n\n    const hasReasoningParts = useMemo(() => {\n      const hasThinkPart = content?.some((part) => part?.type === ContentTypes.THINK) ?? false;\n      const allThinkPartsHaveContent =\n        content?.every((part) => {\n          if (part?.type !== ContentTypes.THINK) {\n            return true;\n          }\n\n          if (typeof part.think === 'string') {\n            const cleanedContent = part.think.replace(/<\\/?think>/g, '').trim();\n            return cleanedContent.length > 0;\n          }\n\n          return false;\n        }) ?? false;\n\n      return hasThinkPart && allThinkPartsHaveContent;\n    }, [content]);\n    if (!content) {\n      return null;\n    }\n    if (edit === true && enterEdit && setSiblingIdx) {\n      return (\n        <>\n          {content.map((part, idx) => {\n            if (part?.type !== ContentTypes.TEXT || typeof part.text !== 'string') {\n              return null;\n            }\n\n            return (\n              <EditTextPart\n                index={idx}\n                text={part.text}\n                messageId={messageId}\n                isSubmitting={isSubmitting}\n                enterEdit={enterEdit}\n                siblingIdx={siblingIdx ?? null}\n                setSiblingIdx={setSiblingIdx}\n                key={`edit-${messageId}-${idx}`}\n              />\n            );\n          })}\n        </>\n      );\n    }\n\n    return (\n      <>\n        {hasReasoningParts && (\n          <div className=\"mb-5\">\n            <ThinkingButton\n              isExpanded={isExpanded}\n              onClick={() =>\n                setIsExpanded((prev) => {\n                  const val = !prev;\n                  setShowThinking(val);\n                  return val;\n                })\n              }\n              label={\n                isSubmitting && isLast ? localize('com_ui_thinking') : localize('com_ui_thoughts')\n              }\n            />\n          </div>\n        )}\n        {content\n          .filter((part) => part)\n          .map((part, idx) => {\n            const toolCallId =\n              (part?.[ContentTypes.TOOL_CALL] as Agents.ToolCall | undefined)?.id ?? '';\n            const attachments = attachmentMap[toolCallId];\n\n            return (\n              <MessageContext.Provider\n                key={`provider-${messageId}-${idx}`}\n                value={{\n                  messageId,\n                  conversationId,\n                  partIndex: idx,\n                  isExpanded,\n                  nextType: content[idx + 1]?.type,\n                }}\n              >\n                <Part\n                  part={part}\n                  attachments={attachments}\n                  isSubmitting={isSubmitting}\n                  key={`part-${messageId}-${idx}`}\n                  isCreatedByUser={isCreatedByUser}\n                  showCursor={idx === content.length - 1 && isLast}\n                />\n              </MessageContext.Provider>\n            );\n          })}\n      </>\n    );\n  },\n);\n\nexport default ContentParts;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/DialogImage.tsx",
    "content": "import * as Dialog from '@radix-ui/react-dialog';\n\nexport default function DialogImage({ src = '', width = 1920, height = 1080 }) {\n  return (\n    <Dialog.Portal>\n      <Dialog.Overlay\n        className=\"radix-state-open:animate-show fixed inset-0 z-[100] flex items-center justify-center overflow-hidden bg-black/90 dark:bg-black/80\"\n        style={{ pointerEvents: 'auto' }}\n      >\n        <Dialog.Close asChild>\n          <button\n            className=\"absolute right-4 top-4 text-gray-50 transition hover:text-gray-200\"\n            type=\"button\"\n          >\n            <svg\n              stroke=\"currentColor\"\n              fill=\"none\"\n              strokeWidth=\"2\"\n              viewBox=\"0 0 24 24\"\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n              className=\"h-5 w-5\"\n              height=\"1em\"\n              width=\"1em\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n              <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n            </svg>\n          </button>\n        </Dialog.Close>\n        <Dialog.Content\n          className=\"radix-state-open:animate-contentShow relative max-h-[85vh] max-w-[90vw] shadow-xl focus:outline-none\"\n          tabIndex={-1}\n          style={{ pointerEvents: 'auto', aspectRatio: height > width ? 1 / 1.75 : 1.75 / 1 }}\n        >\n          <img src={src} alt=\"Uploaded image\" className=\"h-full w-full object-contain\" />\n        </Dialog.Content>\n      </Dialog.Overlay>\n    </Dialog.Portal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Echarts.tsx",
    "content": "\"use client\"\n\nimport { Copy } from \"lucide-react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { Button } from \"~/components/ui\"\nimport { copyText } from \"~/utils\"\nimport { loadScript } from \"./Mermaid\"\nimport { useLocalize } from \"~/hooks\"\n\nexport default function ECharts({ option }: { option: string }) {\n    const [mode, setMode] = useState<\"chart\" | \"code\">(\"chart\")\n    const [echartsLib, setEchartsLib] = useState<any>(null)\n    const chartRef = useRef<any | null>(null)\n    const domRef = useRef<HTMLDivElement>(null)\n    const containerRef = useRef<HTMLDivElement>(null)\n    const localize = useLocalize();\n    const codeRef = useRef<HTMLElement>(null)\n\n    useEffect(() => {\n        loadScript(\"echarts\")\n            .then((echarts) => {\n                console.log(\"[v0] ECharts library loaded successfully\", echarts)\n                setEchartsLib(echarts)\n            })\n            .catch((error) => {\n                console.error(\"[v0] Failed to load ECharts library:\", error)\n            })\n    }, [])\n\n    useEffect(() => {\n        // 等待 echarts 库加载完成\n        if (!echartsLib) return\n\n        // 清理旧实例\n        if (chartRef.current) {\n            chartRef.current.dispose()\n            chartRef.current = null\n        }\n\n        // 只在图表模式下初始化\n        if (domRef.current) {\n            // 确保 DOM 已经渲染\n            setTimeout(() => {\n                if (domRef.current && echartsLib) {\n                    chartRef.current = echartsLib.init(domRef.current)\n                    const getOption = new Function(\"myChart\", \"echarts\", `return ${option.trim()}`)\n                    try {\n                        chartRef.current.setOption(getOption(chartRef.current, echartsLib))\n                    } catch (e) {\n                        console.error(\"[v0] ECharts option error:\", e)\n                    }\n                }\n            }, 0)\n        }\n\n        return () => {\n            if (chartRef.current) {\n                chartRef.current.dispose()\n                chartRef.current = null\n            }\n        }\n    }, [option, echartsLib])\n\n    // 自适应宽度\n    useEffect(() => {\n        if (mode !== \"chart\" || !containerRef.current || !chartRef.current) return\n\n        const resizeObserver = new ResizeObserver(() => {\n            chartRef.current?.resize()\n        })\n\n        if (containerRef.current) {\n            resizeObserver.observe(containerRef.current)\n        }\n\n        const handleResize = () => {\n            chartRef.current?.resize()\n        }\n        window.addEventListener(\"resize\", handleResize)\n\n        return () => {\n            resizeObserver.disconnect()\n            window.removeEventListener(\"resize\", handleResize)\n        }\n    }, [mode])\n\n    useEffect(() => {\n        const parentNode = document.querySelector(\".bisheng-message\")\n        if (parentNode && containerRef.current) {\n            containerRef.current.style.width = `${parentNode.clientWidth - 60}px`\n        }\n    }, [])\n\n    const codeStr = useMemo(() => {\n        try {\n            return JSON.stringify(JSON.parse(option), null, 2)\n        } catch (e) {\n            return option\n        }\n    }, [option])\n\n    const [copySuccess, setCopySuccess] = useState(false)\n    const handleCopy = async () => {\n        try {\n            await copyText(codeRef.current)\n            setCopySuccess(true)\n            setTimeout(() => setCopySuccess(false), 2000)\n        } catch (error) {\n            console.error(\"Copy failed:\", error)\n        }\n    }\n\n    return (\n        <div className=\"w-full my-3\" ref={containerRef}>\n            <div className=\"shadow-sm rounded-lg bg-muted overflow-hidden\">\n                {/* 头部切换按钮 */}\n                <div className=\"flex items-center justify-between p-2 relative z-10 bg-muted\">\n                    <div className=\"flex gap-1 bg-background rounded-md\">\n                        <Button\n                            onClick={() => setMode(\"chart\")}\n                            variant={mode === \"chart\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            {localize('com_ui_chart')}\n                        </Button>\n                        <Button\n                            onClick={() => setMode(\"code\")}\n                            variant={mode === \"code\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            {localize('com_ui_code')}\n                        </Button>\n                    </div>\n                    {mode === \"code\" && (\n                        <div className=\"flex items-center\">\n                            <Button onClick={handleCopy} variant=\"ghost\" className=\"text-xs h-8\">\n                                <Copy size={16} />\n                                {copySuccess ? localize('com_ui_duplicated') : localize('com_ui_duplicate')}\n                            </Button>\n                        </div>\n                    )}\n                </div>\n\n                {/* 内容区域 */}\n                <div className=\"\">\n                    {!echartsLib && mode === \"chart\" && (\n                        <div className=\"flex items-center justify-center h-[400px] text-muted-foreground\">loading...</div>\n                    )}\n                    <div ref={domRef} style={{ height: 400 }} className={mode === \"chart\" && echartsLib ? \"block\" : \"hidden\"} />\n                    <div className={mode === \"code\" ? \"block relative\" : \"hidden\"}>\n                        <pre className=\"p-4 overflow-x-auto text-sm leading-relaxed max-h-[500px] overflow-y-auto mt-0 bg-transparent\">\n                            <code ref={codeRef} className=\"text-slate-500 font-mono whitespace-pre-wrap break-words\">{codeStr}</code>\n                        </pre>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/EditMessage.tsx",
    "content": "import { useRef, useEffect, useCallback } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { useForm } from 'react-hook-form';\nimport { useUpdateMessageMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TEditProps } from '~/common';\nimport { useChatContext, useAddedChatContext } from '~/Providers';\nimport { TextareaAutosize, TooltipAnchor } from '~/components/ui';\nimport { cn, removeFocusRings } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport Container from './Container';\nimport store from '~/store';\n\nconst EditMessage = ({\n  text,\n  message,\n  isSubmitting,\n  ask,\n  enterEdit,\n  siblingIdx,\n  setSiblingIdx,\n}: TEditProps) => {\n  const { addedIndex } = useAddedChatContext();\n  const saveButtonRef = useRef<HTMLButtonElement | null>(null);\n  const submitButtonRef = useRef<HTMLButtonElement | null>(null);\n  const { getMessages, setMessages, conversation } = useChatContext();\n  const [latestMultiMessage, setLatestMultiMessage] = useRecoilState(\n    store.latestMessageFamily(addedIndex),\n  );\n\n  const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n\n  const { conversationId, parentMessageId, messageId } = message;\n  const updateMessageMutation = useUpdateMessageMutation(conversationId ?? '');\n  const localize = useLocalize();\n\n  const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();\n  const isRTL = chatDirection === 'rtl';\n\n  const { register, handleSubmit, setValue } = useForm({\n    defaultValues: {\n      text: text ?? '',\n    },\n  });\n\n  useEffect(() => {\n    const textArea = textAreaRef.current;\n    if (textArea) {\n      const length = textArea.value.length;\n      textArea.focus();\n      textArea.setSelectionRange(length, length);\n    }\n  }, []);\n\n  const resubmitMessage = (data: { text: string }) => {\n    if (message.isCreatedByUser) {\n      ask(\n        {\n          text: data.text,\n          parentMessageId,\n          conversationId,\n        },\n        {\n          resubmitFiles: true,\n        },\n      );\n\n      setSiblingIdx((siblingIdx ?? 0) - 1);\n    } else {\n      const messages = getMessages();\n      const parentMessage = messages?.find((msg) => msg.messageId === parentMessageId);\n\n      if (!parentMessage) {\n        return;\n      }\n      ask(\n        { ...parentMessage },\n        {\n          editedText: data.text,\n          editedMessageId: messageId,\n          isRegenerate: true,\n          isEdited: true,\n        },\n      );\n\n      setSiblingIdx((siblingIdx ?? 0) - 1);\n    }\n\n    enterEdit(true);\n  };\n\n  const updateMessage = (data: { text: string }) => {\n    const messages = getMessages();\n    if (!messages) {\n      return;\n    }\n    updateMessageMutation.mutate({\n      conversationId: conversationId ?? '',\n      model: conversation?.model ?? 'gpt-3.5-turbo',\n      text: data.text,\n      messageId,\n    });\n\n    if (message.messageId === latestMultiMessage?.messageId) {\n      setLatestMultiMessage({ ...latestMultiMessage, text: data.text });\n    }\n\n    const isInMessages = messages.some((message) => message.messageId === messageId);\n    if (!isInMessages) {\n      message.text = data.text;\n    } else {\n      setMessages(\n        messages.map((msg) =>\n          msg.messageId === messageId\n            ? {\n              ...msg,\n              text: data.text,\n            }\n            : msg,\n        ),\n      );\n    }\n\n    enterEdit(true);\n  };\n\n  const handleKeyDown = useCallback(\n    (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n      if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n        e.preventDefault();\n        submitButtonRef.current?.click();\n      }\n      if (e.key === 's' && (e.ctrlKey || e.metaKey)) {\n        e.preventDefault();\n        saveButtonRef.current?.click();\n      }\n      if (e.key === 'Escape') {\n        e.preventDefault();\n        enterEdit(true);\n      }\n    },\n    [enterEdit],\n  );\n\n  const { ref, ...registerProps } = register('text', {\n    required: true,\n    onChange: (e) => {\n      setValue('text', e.target.value, { shouldValidate: true });\n    },\n  });\n\n  return (\n    <Container message={message}>\n      <div className=\"bg-token-main-surface-primary relative flex w-full flex-grow flex-col overflow-hidden rounded-2xl border border-border-medium text-text-primary [&:has(textarea:focus)]:border-border-heavy [&:has(textarea:focus)]:shadow-[0_2px_6px_rgba(0,0,0,.05)]\">\n        <TextareaAutosize\n          {...registerProps}\n          ref={(e) => {\n            ref(e);\n            textAreaRef.current = e;\n          }}\n          onKeyDown={handleKeyDown}\n          data-testid=\"message-text-editor\"\n          className={cn(\n            'markdown prose dark:prose-invert light whitespace-pre-wrap break-words pl-3 md:pl-4',\n            'm-0 w-full resize-none border-0 bg-transparent py-[10px]',\n            'placeholder-text-secondary focus:ring-0 focus-visible:ring-0 md:py-3.5',\n            isRTL ? 'text-right' : 'text-left',\n            'max-h-[65vh] pr-3 md:max-h-[75vh] md:pr-4',\n            removeFocusRings,\n          )}\n          dir={isRTL ? 'rtl' : 'ltr'}\n        />\n      </div>\n      <div className=\"mt-2 flex w-full justify-center text-center\">\n        <TooltipAnchor\n          description=\"Ctrl + Enter / ⌘ + Enter\"\n          render={\n            <button\n              ref={submitButtonRef}\n              className=\"btn btn-primary relative mr-2\"\n              disabled={isSubmitting}\n              onClick={handleSubmit(resubmitMessage)}\n            >\n              {localize('com_ui_save_submit')}\n            </button>\n          }\n        />\n        <TooltipAnchor\n          description=\"Shift + Enter\"\n          render={\n            <button\n              ref={saveButtonRef}\n              className=\"btn btn-secondary relative mr-2\"\n              disabled={isSubmitting}\n              onClick={handleSubmit(updateMessage)}\n            >\n              {localize('com_ui_save')}\n            </button>\n          }\n        />\n        <TooltipAnchor\n          description=\"Esc\"\n          render={\n            <button className=\"btn btn-neutral relative\" onClick={() => enterEdit(true)}>\n              {localize('com_ui_cancel')}\n            </button>\n          }\n        />\n      </div>\n    </Container>\n  );\n};\n\nexport default EditMessage;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Files.tsx",
    "content": "import { useMemo, memo } from 'react';\nimport type { TFile, TMessage } from '~/data-provider/data-provider/src';\nimport FileContainer from '~/components/Chat/Input/Files/FileContainer';\nimport Image from './Image';\n\nconst Files = ({ message }: { message?: TMessage }) => {\n  const imageFiles = useMemo(() => {\n    const images = message?.files?.filter((file) => file.type?.startsWith('image/')) || [];\n    return images.map(file => ({ ...file, filepath: file.filepath?.replace(/^https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL) }))\n  }, [message?.files]);\n\n  const otherFiles = useMemo(() => {\n    return message?.files?.filter((file) => !(file.type?.startsWith('image/') === true)) || [];\n  }, [message?.files]);\n\n  return (\n    <>\n      {otherFiles.length > 0 &&\n        otherFiles.map((file) => <FileContainer key={file.file_id} file={file as TFile} />)}\n      {imageFiles.length > 0 &&\n        imageFiles.map((file) => (\n          <Image\n            key={file.file_id}\n            imagePath={file.preview ?? file.filepath ?? ''}\n            height={file.height ?? 1920}\n            width={file.width ?? 1080}\n            altText={file.filename ?? 'Uploaded Image'}\n            placeholderDimensions={{\n              height: `${file.height ?? 1920}px`,\n              width: `${file.height ?? 1080}px`,\n            }}\n          // n={imageFiles.length}\n          // i={i}\n          />\n        ))}\n    </>\n  );\n};\n\nexport default memo(Files);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/FinishedIcon.tsx",
    "content": "export default function FinishedIcon() {\n  return (\n    <div\n      className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-brand-purple text-white\"\n      style={{ opacity: 1, transform: 'none' }}\n      data-projection-id=\"162\"\n    >\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 8 9\" fill=\"none\" width=\"8\" height=\"9\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M7.66607 0.376042C8.01072 0.605806 8.10385 1.07146 7.87408 1.4161L3.54075 7.9161C3.40573 8.11863 3.18083 8.24304 2.93752 8.24979C2.69421 8.25654 2.46275 8.1448 2.31671 7.95008L0.150044 5.06119C-0.098484 4.72982 -0.0313267 4.25972 0.300044 4.01119C0.631415 3.76266 1.10152 3.82982 1.35004 4.16119L2.88068 6.20204L6.62601 0.584055C6.85577 0.239408 7.32142 0.146278 7.66607 0.376042Z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Image.tsx",
    "content": "import React, { useState, useRef, useMemo } from 'react';\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport DialogImage from './DialogImage';\nimport { cn } from '~/utils';\n\nconst scaleImage = ({\n  originalWidth,\n  originalHeight,\n  containerRef,\n}: {\n  originalWidth?: number;\n  originalHeight?: number;\n  containerRef: React.RefObject<HTMLDivElement>;\n}) => {\n  const containerWidth = containerRef.current?.offsetWidth ?? 0;\n  if (containerWidth === 0 || originalWidth == null || originalHeight == null) {\n    return { width: 'auto', height: 'auto' };\n  }\n  const aspectRatio = originalWidth / originalHeight;\n  const scaledWidth = Math.min(containerWidth, originalWidth);\n  const scaledHeight = scaledWidth / aspectRatio;\n  return { width: `${scaledWidth}px`, height: `${scaledHeight}px` };\n};\n\nconst Image = ({\n  imagePath,\n  altText,\n  height,\n  width,\n  placeholderDimensions,\n}: {\n  imagePath: string;\n  altText: string;\n  height: number;\n  width: number;\n  placeholderDimensions?: {\n    height?: string;\n    width?: string;\n  };\n}) => {\n  const [isLoaded, setIsLoaded] = useState(false);\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const handleImageLoad = () => setIsLoaded(true);\n\n  const { width: scaledWidth, height: scaledHeight } = useMemo(\n    () =>\n      scaleImage({\n        originalWidth: Number(placeholderDimensions?.width?.split('px')[0] ?? width),\n        originalHeight: Number(placeholderDimensions?.height?.split('px')[0] ?? height),\n        containerRef,\n      }),\n    [placeholderDimensions, height, width],\n  );\n\n  return (\n    <Dialog.Root>\n      <div ref={containerRef}>\n        <div className=\"relative mt-1 flex h-auto w-full max-w-lg items-center justify-center overflow-hidden bg-gray-200 text-gray-500 dark:bg-gray-700 dark:text-gray-400\">\n          <Dialog.Trigger asChild>\n            <button type=\"button\" aria-haspopup=\"dialog\" aria-expanded=\"false\">\n              <LazyLoadImage\n                alt={altText}\n                onLoad={handleImageLoad}\n                visibleByDefault={true}\n                className={cn(\n                  'opacity-100 transition-opacity duration-100',\n                  isLoaded ? 'opacity-100' : 'opacity-0',\n                )}\n                src={imagePath}\n                style={{\n                  width: scaledWidth,\n                  height: 'auto',\n                  color: 'transparent',\n                }}\n                placeholder={<div style={{ width: scaledWidth, height: scaledHeight }} />}\n              />\n            </button>\n          </Dialog.Trigger>\n        </div>\n      </div>\n      {isLoaded && <DialogImage src={imagePath} height={height} width={width} />}\n    </Dialog.Root>\n  );\n};\n\nexport default Image;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ImageGen.tsx",
    "content": "import { useState } from 'react';\nimport ProgressCircle from './ProgressCircle';\nimport ProgressText from './ProgressText';\nimport { useProgress } from '~/hooks';\n\nexport default function ImageGen({\n  initialProgress = 0.1,\n  args = '',\n}: {\n  initialProgress: number;\n  args: string;\n}) {\n  const progress = useProgress(initialProgress);\n  const radius = 56.08695652173913;\n  const circumference = 2 * Math.PI * radius;\n\n  const offset = circumference - progress * circumference;\n  const [showDetails, setShowDetails] = useState(false);\n\n  // const [translate, setTranslate] = useState(0);\n  // useEffect(() => {\n  //   const timer = setInterval(() => {\n  //     setTranslate((prevTranslate) => (prevTranslate + 1) % 360);\n  //   }, 20);\n  //   return () => clearInterval(timer);\n  // }, []);\n  // if (progress >= 1) {\n  //   return null;\n  // }\n\n  return (\n    <div className=\"my-2.5 flex items-center gap-2.5\">\n      <div className=\"relative h-5 w-5 shrink-0\">\n        <div\n          className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-white\"\n          style={{ opacity: 1, transform: 'none' }}\n          data-projection-id=\"106\"\n        >\n          <div>\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n              viewBox=\"0 0 20 20\"\n              width=\"20\"\n              height=\"20\"\n              style={{ width: '100%', height: '100%', transform: 'translate3d(0px, 0px, 0px)' }}\n              preserveAspectRatio=\"xMidYMid meet\"\n            >\n              <g className=\"move-up\">\n                <path\n                  fill=\"rgb(177,98,253)\"\n                  fillOpacity=\"1\"\n                  d=\"M11.812616,5.914505C11.535567,5.360465,10.744857,5.360465,10.467807,5.914505C9.369731,8.110632,8.271654,10.306758,7.173676,12.502885C6.923041,13.002725,7.286122,13.590845,7.844972,13.590845C10.041112,13.590845,12.237252,13.590845,14.433392,13.590845C14.992292,13.590845,15.355792,13.002725,15.105892,12.502885C14.007888,10.306758,12.909805,8.110632,11.812616,5.914505C11.812616,5.914505,11.812616,5.914505,11.812616,5.914505C11.812616,5.914505,11.812616,5.914505,11.812616,5.914505M7.216073,8.914505C6.939024,8.360465,6.148304,8.360465,5.871264,8.914505C5.274365,10.10828,4.677499,11.302055,4.080601,12.495835C3.83003,12.99568,4.193122,13.58379,4.751975,13.58379C5.946767,13.58379,7.14156,13.58379,8.336353,13.58379C8.895213,13.58379,9.258683,12.99568,9.008763,12.495835C8.411867,11.302055,7.81497,10.10828,7.216073,8.914505C7.216073,8.914505,7.216073,8.914505,7.216073,8.914505C7.216073,8.914505,7.216073,8.914505,7.216073,8.914505\"\n                />\n              </g>\n              <g\n                style={{ display: 'block' }}\n                transform=\"matrix(-1,0,0,-1,10,10)\"\n                opacity=\"1\"\n                className=\"moon-rise\"\n              >\n                <g opacity=\"1\" transform=\"matrix(1,0,0,1,3.75,5.5)\">\n                  <path\n                    fill=\"rgb(177,98,253)\"\n                    fillOpacity=\"1\"\n                    d=\" M2.660290002822876,2.2502501010894775 C2.7567598819732666,2.2502501010894775 2.850860118865967,2.241950035095215 2.9425699710845947,2.225330114364624 C3.034290075302124,2.208709955215454 3.1081299781799316,2.1867599487304688 3.164109945297241,2.1594600677490234 C3.239150047302246,2.120300054550171 3.305850028991699,2.100709915161133 3.364219903945923,2.100709915161133 C3.405900001525879,2.100709915161133 3.438659906387329,2.113770008087158 3.462480068206787,2.1398799419403076 C3.487489938735962,2.165990114212036 3.5,2.2009999752044678 3.5,2.2449100017547607 C3.5,2.2698400020599365 3.4958300590515137,2.2983200550079346 3.487489938735962,2.3303699493408203 C3.4803500175476074,2.362410068511963 3.468440055847168,2.3968300819396973 3.4517600536346436,2.433619976043701 C3.3803000450134277,2.5950300693511963 3.287990093231201,2.7410099506378174 3.1748299598693848,2.871570110321045 C3.0628700256347656,3.002120018005371 2.9348299503326416,3.1142799854278564 2.790709972381592,3.2080399990081787 C2.646589994430542,3.3029799461364746 2.4905600547790527,3.375380039215088 2.3226099014282227,3.425230026245117 C2.15585994720459,3.4750800132751465 1.9825600385665894,3.5 1.8027100563049316,3.5 C1.5430500507354736,3.5 1.3036400079727173,3.4554901123046875 1.0844800472259521,3.3664801120758057 C0.8653200268745422,3.2786500453948975 0.6741499900817871,3.1540400981903076 0.5109699964523315,2.9926199913024902 C0.34898999333381653,2.831209897994995 0.22333000600337982,2.641319990158081 0.1340000033378601,2.4229400157928467 C0.04467000067234039,2.2045600414276123 0,1.9660099744796753 0,1.7072700262069702 C0,1.4639699459075928 0.04645000025629997,1.2325400114059448 0.1393599957227707,1.012969970703125 C0.23226000368595123,0.7922199964523315 0.3626900017261505,0.5975800156593323 0.5306299924850464,0.4290440082550049 C0.6997600197792053,0.2593249976634979 0.8968899846076965,0.12877200543880463 1.121999979019165,0.03738600015640259 C1.1541600227355957,0.024329999461770058 1.1833399534225464,0.01483600027859211 1.2095500230789185,0.008901000022888184 C1.2369400262832642,0.0029670000076293945 1.2631399631500244,2.220446049250313e-16 1.288159966468811,2.220446049250313e-16 C1.335800051689148,2.220446049250313e-16 1.3733199834823608,0.014241999946534634 1.4007099866867065,0.042725998908281326 C1.4292999505996704,0.07121100276708603 1.4435900449752808,0.10681600123643875 1.4435900449752808,0.14954200387001038 C1.4435900449752808,0.1780260056257248 1.438230037689209,0.2076980024576187 1.4275100231170654,0.23855499923229218 C1.41798996925354,0.2682270109653473 1.404289960861206,0.2996779978275299 1.3864200115203857,0.3329089879989624 C1.3625999689102173,0.3768230080604553 1.3423500061035156,0.4302310049533844 1.3256800174713135,0.493133008480072 C1.309000015258789,0.5548499822616577 1.296489953994751,0.6225000023841858 1.288159966468811,0.6960800290107727 C1.2798199653625488,0.7684800028800964 1.2756500244140625,0.8414700031280518 1.2756500244140625,0.9150599837303162 C1.2756500244140625,1.1215699911117554 1.3072099685668945,1.3073099851608276 1.3703399896621704,1.4722800254821777 C1.4346599578857422,1.6372499465942383 1.5269700288772583,1.7778899669647217 1.6472699642181396,1.8941999673843384 C1.7675700187683105,2.0093300342559814 1.9128799438476562,2.097749948501587 2.083209991455078,2.1594600677490234 C2.2547199726104736,2.2199900150299072 2.44707989692688,2.2502501010894775 2.660290002822876,2.2502501010894775 C2.660290002822876,2.2502501010894775 2.660290002822876,2.2502501010894775 2.660290002822876,2.2502501010894775 C2.660290002822876,2.2502501010894775 2.660290002822876,2.2502501010894775 2.660290002822876,2.2502501010894775\"\n                  />\n                </g>\n              </g>\n            </svg>\n          </div>\n          <ProgressCircle radius={radius} circumference={circumference} offset={offset} />\n        </div>\n      </div>\n      <ProgressText\n        progress={progress}\n        onClick={() => setShowDetails((prev) => !prev)}\n        inProgressText=\"Creating Image\"\n        finishedText=\"Finished.\"\n        hasInput={false}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/InProgressCall.tsx",
    "content": "import CancelledIcon from './CancelledIcon';\n\nexport default function InProgressCall({\n  error,\n  isSubmitting,\n  progress,\n  children,\n}: {\n  error?: boolean;\n  isSubmitting: boolean;\n  progress: number;\n  children: React.ReactNode;\n}) {\n  if ((!isSubmitting && progress < 1) || error === true) {\n    return <CancelledIcon />;\n  }\n\n  return <>{children}</>;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Markdown.tsx",
    "content": "import React, { lazy, memo, Suspense, useEffect, useMemo, useRef } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport { useRecoilValue } from 'recoil';\nimport rehypeHighlight from 'rehype-highlight';\nimport rehypeKatex from 'rehype-katex';\nimport remarkDirective from 'remark-directive';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport supersub from 'remark-supersub';\nimport type { Pluggable } from 'unified';\nimport {\n  ArtifactProvider,\n  CodeBlockProvider,\n  useCodeBlockContext,\n  useToastContext,\n} from '~/Providers';\nimport { Artifact, artifactPlugin } from '~/components/Artifacts/Artifact';\nimport { remarkCitationPlugin } from '~/components/Artifacts/remarkCitationPlugin';\nimport CodeBlock from '~/components/Messages/Content/CodeBlock';\nimport { TooltipAnchor } from '~/components/ui';\nimport { useFileDownload } from '~/data-provider';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport useHasAccess from '~/hooks/Roles/useHasAccess';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\nimport { handleDoubleClick, langSubset, preprocessLaTeX } from '~/utils';\nimport { WebItem } from './SearchWebUrls';\nimport MermaidBlock from './Mermaid'\nimport Echarts from './Echarts'\n\n// const ECharts = lazy(() => import('./Echarts')); // cdn\n// const MermaidBlock = lazy(() =>\n//   import(\n//     /* webpackChunkName: \"mermaid\" */\n//     /* webpackPrefetch: false */\n//     /* webpackPreload: false */\n//     './Mermaid'\n//   )\n// );\n\ntype TCodeProps = {\n  inline?: boolean;\n  className?: string;\n  children: React.ReactNode;\n};\n\nexport const code: React.ElementType = memo(({ className, children }: TCodeProps) => {\n  const canRunCode = useHasAccess({\n    permissionType: PermissionTypes.RUN_CODE,\n    permission: Permissions.USE,\n  });\n  const match = /language-(\\w+)/.exec(className ?? '');\n  const lang = match && match[1];\n  const isMath = lang === 'math';\n  const isSingleLine = typeof children === 'string' && children.split('\\n').length === 1;\n\n  const { getNextIndex, resetCounter } = useCodeBlockContext();\n  const blockIndex = useRef(getNextIndex(isMath || isSingleLine)).current;\n\n  useEffect(() => {\n    resetCounter();\n  }, [children, resetCounter]);\n\n  if (isMath) {\n    return <>{children}</>;\n  } else if (isSingleLine) {\n    return (\n      <code onDoubleClick={handleDoubleClick} className={className}>\n        {children}\n      </code>\n    );\n  } else {\n    if (lang === 'echarts') return <Echarts option={children} />\n    if (lang === 'mermaid') return <MermaidBlock>{String(children).trim()}</MermaidBlock>\n    return <CodeBlock\n      lang={lang ?? 'text'}\n      codeChildren={children}\n      blockIndex={blockIndex}\n      allowExecution={canRunCode}\n    />\n  }\n});\n\nexport const codeNoExecution: React.ElementType = memo(({ className, children }: TCodeProps) => {\n  const match = /language-(\\w+)/.exec(className ?? '');\n  const lang = match && match[1];\n\n  if (lang === 'math') {\n    return children;\n  } else if (typeof children === 'string' && children.split('\\n').length === 1) {\n    return (\n      <code onDoubleClick={handleDoubleClick} className={className}>\n        {children}\n      </code>\n    );\n  } else {\n    return <CodeBlock lang={lang ?? 'text'} codeChildren={children} allowExecution={false} />;\n  }\n});\n\ntype TAnchorProps = {\n  href: string;\n  children: React.ReactNode;\n};\n\nexport const a: React.ElementType = memo(({ href, children }: TAnchorProps) => {\n  const user = useRecoilValue(store.user);\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const {\n    file_id = '',\n    filename = '',\n    filepath,\n  } = useMemo(() => {\n    const pattern = new RegExp(`(?:files|outputs)/${user?.id}/([^\\\\s]+)`);\n    const match = href.match(pattern);\n    if (match && match[0]) {\n      const path = match[0];\n      const parts = path.split('/');\n      const name = parts.pop();\n      const file_id = parts.pop();\n      return { file_id, filename: name, filepath: path };\n    }\n    return { file_id: '', filename: '', filepath: '' };\n  }, [user?.id, href]);\n\n  const { refetch: downloadFile } = useFileDownload(user?.id ?? '', file_id);\n  const props: { target?: string; onClick?: React.MouseEventHandler } = { target: '_new' };\n\n  if (!file_id || !filename) {\n    return (\n      <a href={href} {...props}>\n        {children}\n      </a>\n    );\n  }\n\n  const handleDownload = async (event: React.MouseEvent<HTMLAnchorElement>) => {\n    event.preventDefault();\n    try {\n      const stream = await downloadFile();\n      if (stream.data == null || stream.data === '') {\n        console.error('Error downloading file: No data found');\n        showToast({\n          status: 'error',\n          message: localize('com_ui_download_error'),\n        });\n        return;\n      }\n      const link = document.createElement('a');\n      link.href = stream.data;\n      link.setAttribute('download', filename);\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n      window.URL.revokeObjectURL(stream.data);\n    } catch (error) {\n      console.error('Error downloading file:', error);\n    }\n  };\n\n  props.onClick = handleDownload;\n  props.target = '_blank';\n\n  return (\n    <a\n      href={filepath.startsWith('files/') ? `/api/${filepath}` : `/api/files/${filepath}`}\n      {...props}\n    >\n      {children}\n    </a>\n  );\n});\n\ntype TParagraphProps = {\n  children: React.ReactNode;\n};\n\nexport const p: React.ElementType = memo(({ children }: TParagraphProps) => {\n  return <p className=\"mb-2 whitespace-pre-wrap\">{children}</p>;\n});\n\nconst cursor = ' ';\n\ntype TContentProps = {\n  content: string;\n  showCursor?: boolean;\n  isLatestMessage: boolean;\n};\n\nconst Citation = ({ data, children }) => {\n\n  if (!data) return null;\n\n  return <TooltipAnchor\n    role=\"button\"\n    description={\n      <div className=\"p-2\">\n        <WebItem {...data} />\n      </div>\n    }\n    className=\"bg-gray-100 dark:bg-gray-600 inline-flex size-5 items-center justify-center rounded-full transition-colors duration-200 hover:bg-surface-hover\"\n    onClick={() => {\n      window.open(data.url, '_blank')\n    }}\n  >\n    <span className='text-xs'>{children}</span>\n  </TooltipAnchor>\n};\n\nconst Markdown = memo(({ content = '', showCursor, isLatestMessage, webContent }: TContentProps & { webContent: any }) => {\n  const LaTeXParsing = useRecoilValue<boolean>(store.LaTeXParsing);\n  const isInitializing = content === '';\n\n  function filterMermaidBlocks(input) {\n    const closedMermaidPattern = /```mermaid[\\s\\S]*?```/g;\n    const openMermaidPattern = /```mermaid[\\s\\S]*$/g;\n\n    // 先删除未闭合的\n    if (!closedMermaidPattern.test(input)) {\n      input = input.replace(openMermaidPattern, \"\");\n    }\n\n    return input;\n  }\n\n  const currentContent = useMemo(() => {\n    if (isInitializing) {\n      return '';\n    }\n    const message = LaTeXParsing ? preprocessLaTeX(content) : content;\n    //         return `\\`\\`\\`mermaid\n    //             graph TD\n    //               A[Next.js] --> B[Markdoc]\n    //               B --> C[Mermaid Node]\n    //               C --> D[渲染流程图]\n    //               D --> E{交互式图表}\n    // \\`\\`\\``;\n    //     return `\\`\\`\\`echarts\n    //     {\"xAxis\":{\"type\":\"category\",\"data\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"]},\"yAxis\":{\"type\":\"value\"},\"series\":[{\"data\":[120,200,150,80,70,110,130],\"type\":\"bar\"}]}\n    // \\`\\`\\``\n    return filterMermaidBlocks(message)\n      // .replaceAll(/(\\n\\s{4,})/g, '\\n   ') // 禁止4空格转代码\n      .replace(/(?<![\\n\\|])\\n(?!\\n)/g, '\\n\\n') // 单个换行符 处理不换行情况，例如：`Hello | There\\nFriend\n    // .replaceAll('(bisheng/', '(/bisheng/') // TODO 临时处理方案,以后需要改为markdown插件方式处理\n    // .replace(/\\\\[\\[\\]]/g, '$$') // 处理`\\[...\\]`包裹的公式\n  }, [content, LaTeXParsing, isInitializing]);\n\n  const rehypePlugins = useMemo(\n    () => [\n      [rehypeKatex, { output: 'mathml' }],\n      [\n        rehypeHighlight,\n        {\n          detect: true,\n          ignoreMissing: true,\n          subset: langSubset,\n        },\n      ],\n    ],\n    [],\n  );\n\n  const remarkPlugins: Pluggable[] = useMemo(\n    () => [\n      supersub,\n      remarkGfm,\n      remarkDirective,\n      artifactPlugin,\n      [remarkMath, { singleDollarTextMath: true }],\n      remarkCitationPlugin\n    ],\n    [],\n  );\n\n  // Cursor\n  if (isInitializing) {\n    return (\n      <div className=\"absolute top-10\">\n        <p className=\"relative\">\n          <span className={isLatestMessage ? 'result-thinking' : ''} />\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <ArtifactProvider>\n      <CodeBlockProvider>\n        <ReactMarkdown\n          /** @ts-ignore */\n          remarkPlugins={remarkPlugins}\n          /* @ts-ignore */\n          rehypePlugins={rehypePlugins}\n          components={\n            {\n              code,\n              a,\n              p,\n              artifact: Artifact,\n              citation: ({ children }: { children: React.ReactNode }) => {\n                if (typeof children === 'string') {\n                  const parts = children.split(/\\[citation:(\\d+)\\]/g);\n                  return (\n                    <>\n                      {parts.map((part, index) => {\n                        if (index % 2 === 0) {\n                          return part;\n                        } else {\n                          return webContent?.[Number(part) - 1] ? <Citation key={index} data={webContent[Number(part) - 1]}>{part}</Citation> : null;\n                        }\n                      })}\n                    </>\n                  );\n                }\n\n                return <>{children}</>;\n              }\n            } as {\n              [nodeType: string]: React.ElementType;\n            }\n          }\n        >\n          {isLatestMessage && (showCursor ?? false) ? currentContent + cursor : currentContent}\n        </ReactMarkdown>\n      </CodeBlockProvider>\n    </ArtifactProvider>\n  );\n});\n\nexport default Markdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/MarkdownLite.tsx",
    "content": "import { memo } from 'react';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport rehypeKatex from 'rehype-katex';\nimport supersub from 'remark-supersub';\nimport ReactMarkdown from 'react-markdown';\nimport rehypeHighlight from 'rehype-highlight';\nimport type { PluggableList } from 'unified';\nimport { code, codeNoExecution, a, p } from './Markdown';\nimport { CodeBlockProvider, ArtifactProvider } from '~/Providers';\nimport { langSubset } from '~/utils';\n\nconst MarkdownLite = memo(\n  ({ content = '', codeExecution = true }: { content?: string; codeExecution?: boolean }) => {\n    const rehypePlugins: PluggableList = [\n      [rehypeKatex, { output: 'mathml' }],\n      [\n        rehypeHighlight,\n        {\n          detect: true,\n          ignoreMissing: true,\n          subset: langSubset,\n        },\n      ],\n    ];\n\n    return (\n      <ArtifactProvider>\n        <CodeBlockProvider>\n          <ReactMarkdown\n            remarkPlugins={[\n              /** @ts-ignore */\n              supersub,\n              remarkGfm,\n              [remarkMath, { singleDollarTextMath: true }],\n            ]}\n            /** @ts-ignore */\n            rehypePlugins={rehypePlugins}\n            // linkTarget=\"_new\"\n            components={\n              {\n                code: codeExecution ? code : codeNoExecution,\n                a,\n                p,\n              } as {\n                [nodeType: string]: React.ElementType;\n              }\n            }\n          >\n            {content}\n          </ReactMarkdown>\n        </CodeBlockProvider>\n      </ArtifactProvider>\n    );\n  },\n);\n\nexport default MarkdownLite;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Mermaid.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { Copy, DownloadIcon, ZoomIn, ZoomOut } from \"lucide-react\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { Button, Separator } from \"~/components/ui\"\nimport { copyText, formatDate } from \"~/utils\"\nimport { useLocalize } from \"~/hooks\"\n\n// 动态加载 mermaid\nexport const loadScript = async (fileName) => {\n    if (window[fileName]) {\n        return window[fileName]\n    }\n\n    const script = document.createElement(\"script\")\n    script.src = `${__APP_ENV__.BASE_URL}/${fileName}.min.js`\n    script.type = \"module\"\n\n    return new Promise((resolve, reject) => {\n        script.onload = () => {\n            // 等待 mermaid 初始化\n            const checkMermaid = setInterval(() => {\n                if (window[fileName]) {\n                    clearInterval(checkMermaid)\n                    resolve(window[fileName])\n                }\n            }, 100)\n        }\n        script.onerror = reject\n        document.head.appendChild(script)\n    })\n}\n\nexport default function MermaidBlock({ children }: { children: string }) {\n    const ref = useRef<HTMLDivElement>(null)\n    const containerRef = useRef<HTMLDivElement>(null)\n    const [mode, setMode] = useState<\"chart\" | \"code\">(\"chart\")\n    const mermaidRef = useRef<any>(null)\n    const localize = useLocalize();\n\n    const [zoom, setZoom] = useState(1)\n    const [pan, setPan] = useState({ x: 0, y: 0 })\n    const [isDragging, setIsDragging] = useState(false)\n    const [dragStart, setDragStart] = useState({ x: 0, y: 0 })\n    const [copySuccess, setCopySuccess] = useState(false)\n    const codeRef = useRef<HTMLElement>(null)\n\n    useEffect(() => {\n        loadScript('mermaid').then((mermaid) => {\n            mermaid.initialize({ startOnLoad: false, theme: \"default\" })\n            mermaidRef.current = mermaid\n            if (ref.current) {\n                ref.current.innerHTML = children\n                mermaidRef.current.run({ nodes: [ref.current] })\n            }\n        })\n    }, [])\n\n    useEffect(() => {\n        const parentNode = document.querySelector(\".bisheng-message\")\n        if (parentNode && containerRef.current) {\n            containerRef.current.style.width = `${parentNode.clientWidth - 60}px`\n        }\n    }, [])\n\n    const handleZoomIn = () => {\n        setZoom((prev) => Math.min(prev + 0.2, 3))\n    }\n\n    const handleZoomOut = () => {\n        setZoom((prev) => Math.max(prev - 0.2, 0.5))\n    }\n\n    const handleDownload = async () => {\n        if (!ref.current) return\n\n        const svgElement = ref.current.querySelector(\"svg\")\n        if (!svgElement) return\n\n        try {\n            // Clone the SVG to avoid modifying the original\n            const clonedSvg = svgElement.cloneNode(true) as SVGElement\n\n            // Get computed styles and inline them to avoid CORS issues\n            // const allElements = clonedSvg.querySelectorAll(\"*\")\n            // allElements.forEach((el) => {\n            //     const computedStyle = window.getComputedStyle(el as Element)\n            //     const styleString = Array.from(computedStyle)\n            //         .map((key) => `${key}:${computedStyle.getPropertyValue(key)}`)\n            //         .join(\";\")\n            //         ; (el as HTMLElement).setAttribute(\"style\", styleString)\n            // })\n\n            // Get SVG dimensions\n            const bbox = svgElement.getBBox()\n            const width = bbox.width || svgElement.clientWidth\n            const height = bbox.height || svgElement.clientHeight\n\n            // Set explicit width and height on cloned SVG\n            clonedSvg.setAttribute(\"width\", width.toString())\n            clonedSvg.setAttribute(\"height\", height.toString())\n\n            // Create canvas\n            const canvas = document.createElement(\"canvas\")\n            const scale = 2 // Higher resolution\n            canvas.width = width * scale\n            canvas.height = height * scale\n            const ctx = canvas.getContext(\"2d\")\n\n            if (!ctx) return\n\n            // Scale for better quality\n            ctx.scale(scale, scale)\n            ctx.fillStyle = \"white\"\n            ctx.fillRect(0, 0, width, height)\n\n            // Convert SVG to data URL (not blob URL to avoid CORS)\n            const svgData = new XMLSerializer().serializeToString(clonedSvg)\n            const svgDataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgData)}`\n\n            // Load image and draw to canvas\n            const img = new Image()\n            img.onload = () => {\n                ctx.drawImage(img, 0, 0)\n\n                // Download\n                canvas.toBlob((blob) => {\n                    if (blob) {\n                        const titleDom = document.querySelector(\"#app-title\")\n                        console.log('titleDom :>> ', titleDom);\n                        const link = document.createElement(\"a\")\n                        link.download = `${titleDom?.innerHTML}_${formatDate(new Date(), 'yyyyMMdd_HHmm')}.png` || `mermaid-diagram-${Date.now()}.png`\n                        link.href = URL.createObjectURL(blob)\n                        link.click()\n                        URL.revokeObjectURL(link.href)\n                    }\n                })\n            }\n            img.onerror = (error) => {\n                console.error(\"Image load failed:\", error)\n            }\n            img.src = svgDataUrl\n        } catch (error) {\n            console.error(\"Download failed:\", error)\n        }\n    }\n    const handleCopy = async () => {\n        try {\n            await copyText(codeRef.current)\n            setCopySuccess(true)\n            setTimeout(() => setCopySuccess(false), 2000)\n        } catch (error) {\n            console.error(\"Copy failed:\", error)\n        }\n    }\n\n    const handleMouseDown = (e: React.MouseEvent) => {\n        // if (zoom > 1) {\n        setIsDragging(true)\n        setDragStart({ x: e.clientX - pan.x, y: e.clientY - pan.y })\n        // }\n    }\n\n    const handleMouseMove = (e: React.MouseEvent) => {\n        if (isDragging) {\n            setPan({\n                x: e.clientX - dragStart.x,\n                y: e.clientY - dragStart.y,\n            })\n        }\n    }\n\n    const handleMouseUp = () => {\n        setIsDragging(false)\n    }\n\n    const handleMouseLeave = () => {\n        setIsDragging(false)\n    }\n\n    return (\n        <div className=\"w-full my-3\" ref={containerRef}>\n            <div className=\"shadow-sm rounded-lg bg-muted overflow-hidden\">\n                {/* 头部切换按钮 */}\n                <div className=\"flex items-center justify-between p-2 relative z-10 bg-muted\">\n                    <div className=\"flex gap-1 bg-background rounded-md\">\n                        <Button\n                            onClick={() => setMode(\"chart\")}\n                            variant={mode === \"chart\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            {localize('com_ui_chart')}\n                        </Button>\n                        <Button\n                            onClick={() => setMode(\"code\")}\n                            variant={mode === \"code\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            {localize('com_ui_code')}\n                        </Button>\n                    </div>\n                    {mode === \"chart\" && (\n                        <div className=\"flex items-center\">\n                            <Button\n                                onClick={handleZoomOut}\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"text-xs h-8\"\n                                disabled={zoom <= 0.5}\n                            >\n                                <ZoomOut size={16} />\n                            </Button>\n                            <Button\n                                onClick={handleZoomIn}\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"text-xs h-8\"\n                                disabled={zoom >= 3}\n                            >\n                                <ZoomIn size={16} />\n                            </Button>\n                            <Separator orientation=\"vertical\" className=\"h-4 mx-1\" />\n                            <Button onClick={handleDownload} variant=\"ghost\" className=\"text-xs h-8\">\n                                <DownloadIcon size={16} />\n                                {localize('com_ui_download')}\n                            </Button>\n                        </div>\n                    )}\n                    {mode === \"code\" && (\n                        <div className=\"flex items-center\">\n                            <Button onClick={handleCopy} variant=\"ghost\" className=\"text-xs h-8\">\n                                <Copy size={16} />\n                                {copySuccess ? localize('com_ui_duplicated') : localize('com_ui_duplicate')}\n                            </Button>\n                        </div>\n                    )}\n                </div>\n\n                {/* 内容区域 */}\n                <div className=\"\">\n                    <div\n                        ref={ref}\n                        className={mode === \"chart\" ? \"flex justify-center mermaid overflow-hidden\" : \"hidden\"}\n                        style={{\n                            transform: `scale(${zoom}) translate(${pan.x / zoom}px, ${pan.y / zoom}px)`,\n                            transformOrigin: \"center center\",\n                            cursor: (isDragging ? \"grabbing\" : \"grab\"),\n                            transition: isDragging ? \"none\" : \"transform 0.2s ease-out\",\n                        }}\n                        onMouseDown={handleMouseDown}\n                        onMouseMove={handleMouseMove}\n                        onMouseUp={handleMouseUp}\n                        onMouseLeave={handleMouseLeave}\n                    />\n                    <div className={mode === \"code\" ? \"block relative\" : \"hidden\"}>\n                        <pre className=\"p-4 overflow-x-auto text-sm leading-relaxed max-h-[500px] overflow-y-auto\">\n                            <code ref={codeRef} className=\"text-slate-500 text-foreground font-mono whitespace-pre-wrap break-words\">{children}</code>\n                        </pre>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/MessageContent.tsx",
    "content": "import type { TMessage } from '~/data-provider/data-provider/src';\nimport { memo, Suspense, useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TDisplayProps, TMessageContentProps } from '~/common';\nimport Thinking from '~/components/Artifacts/Thinking';\nimport Error from '~/components/Messages/Content/Error';\nimport { DelayedRender } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport store from '~/store';\nimport { cn } from '~/utils';\nimport Container from './Container';\nimport EditMessage from './EditMessage';\nimport Markdown from './Markdown';\nimport MarkdownLite from './MarkdownLite';\nimport SearchWebUrls from './SearchWebUrls';\n\nexport const ErrorMessage = ({\n  text,\n  message,\n  className = '',\n}: Pick<TDisplayProps, 'text' | 'className'> & {\n  message?: TMessage;\n}) => {\n  const localize = useLocalize();\n  if (text === 'Error connecting to server, try refreshing the page.') {\n    console.log('error message', message);\n    return (\n      <Suspense\n        fallback={\n          <div className=\"text-message mb-[0.625rem] flex min-h-[20px] flex-col items-start gap-3 overflow-visible\">\n            <div className=\"markdown prose dark:prose-invert light w-full break-words dark:text-gray-100\">\n              <div className=\"absolute\">\n                <p className=\"submitting relative\">\n                  <span className=\"result-thinking\" />\n                </p>\n              </div>\n            </div>\n          </div>\n        }\n      >\n        <DelayedRender delay={5500}>\n          <Container message={message}>\n            <div\n              className={cn(\n                'rounded-md border border-red-500 bg-red-500/10 px-3 py-2 text-sm text-gray-600 dark:text-gray-200',\n                className,\n              )}\n            >\n              {localize('com_ui_error_connection')}\n            </div>\n          </Container>\n        </DelayedRender>\n      </Suspense>\n    );\n  }\n  return (\n    <Container message={message}>\n      <div\n        role=\"alert\"\n        aria-live=\"assertive\"\n        className={cn(\n          'rounded-xl mt-2 border border-red-500/20 bg-red-500/5 px-3 py-2 text-sm text-gray-600 dark:text-gray-200',\n          className,\n        )}\n      >\n        <Error text={text} />\n      </div>\n    </Container>\n  );\n};\n\nconst DisplayMessage = ({ text, isCreatedByUser, message, showCursor, webContent }: TDisplayProps & { webContent: any }) => {\n  const { isSubmitting, latestMessage } = useChatContext();\n  const enableUserMsgMarkdown = useRecoilValue(store.enableUserMsgMarkdown);\n  const showCursorState = useMemo(\n    () => showCursor === true && isSubmitting,\n    [showCursor, isSubmitting],\n  );\n  const isLatestMessage = useMemo(\n    () => message.messageId === latestMessage?.messageId,\n    [message.messageId, latestMessage?.messageId],\n  );\n\n  const safeText = text ?? '';\n\n  let content: React.ReactElement;\n  if (!isCreatedByUser) {\n    content = (\n      <Markdown content={safeText} webContent={webContent} showCursor={showCursorState} isLatestMessage={isLatestMessage} />\n    );\n  } else if (enableUserMsgMarkdown) {\n    content = <MarkdownLite content={safeText} />;\n  } else {\n    content = <>{safeText}</>;\n  }\n\n  return (\n    <Container message={message}>\n      <div\n        className={cn(\n          isSubmitting ? 'submitting' : '',\n          showCursorState && !!safeText.length ? 'result-streaming' : '',\n          'bs-mkdown message-content dark:prose-invert light w-full break-words',\n          isCreatedByUser && !enableUserMsgMarkdown && 'whitespace-pre-wrap',\n          isCreatedByUser ? 'dark:text-gray-20' : 'dark:text-gray-100',\n        )}\n      >\n        {content}\n      </div>\n    </Container>\n  );\n};\n\n// Unfinished Message Component\nexport const UnfinishedMessage = ({ message }: { message: TMessage }) => (\n  <ErrorMessage\n    message={message}\n    text=\"The response is incomplete; it's either still processing, was cancelled, or censored. Refresh or try a different prompt.\"\n  />\n);\n\nconst MessageContent = ({\n  text,\n  edit,\n  error,\n  unfinished,\n  isSubmitting,\n  isLast,\n  ...props\n}: TMessageContentProps) => {\n  const { message } = props;\n  const { messageId } = message;\n\n  const { thinkingContent, regularContent } = useMemo(() => {\n    if (!text) {\n      return {\n        thinkingContent: '',\n        regularContent: '',\n      };\n    }\n    const thinkingMatch = text.match(/:::thinking([\\s\\S]*?):::/);\n    let regularContent = text;\n    if (thinkingMatch) {\n      regularContent = text.replace(/:::thinking[\\s\\S]*?:::/, '').trim()\n    }\n    if (text.match(/:::web([\\s\\S]*?):::/)) {\n      regularContent = regularContent.replace(/:::web[\\s\\S]*?:::/, '').trim() // + '[citation:2]'  test\n    }\n\n    regularContent.replaceAll(`\\``, '')\n    return {\n      thinkingContent: thinkingMatch ? thinkingMatch[1].trim() : '',\n      regularContent,\n    };\n  }, [text]);\n\n  const webContent = useMemo(() => {\n    if (!text) {\n      return [];\n    }\n    const webMatch = text.match(/:::web([\\s\\S]*?):::/);\n    const str = webMatch ? webMatch[1].trim() : ''\n    const webContent = str ? JSON.parse(str) : []\n    return webContent;\n  }, [text]);\n\n  const showRegularCursor = useMemo(() => isLast && isSubmitting, [isLast, isSubmitting]);\n\n  const unfinishedMessage = useMemo(\n    () =>\n      !isSubmitting && unfinished ? (\n        <Suspense>\n          <DelayedRender delay={250}>\n            <UnfinishedMessage message={message} />\n          </DelayedRender>\n        </Suspense>\n      ) : null,\n    [isSubmitting, unfinished, message],\n  );\n\n  if (error) {\n    return <ErrorMessage message={props.message} text={text} />;\n  } else if (edit) {\n    return <EditMessage text={text} isSubmitting={isSubmitting} {...props} />;\n  }\n\n  return (\n    <>\n      {thinkingContent.length > 0 && (\n        <Thinking key={`thinking-${messageId}`}>{thinkingContent}</Thinking>\n      )}\n      {webContent.length > 0 && (\n        <SearchWebUrls key={`thinking-${messageId}`} webs={webContent} />\n      )}\n\n\n      <DisplayMessage\n        key={`display-${messageId}`}\n        webContent={webContent}\n        showCursor={showRegularCursor}\n        text={regularContent}\n        {...props}\n      />\n      {unfinishedMessage}\n    </>\n  );\n};\n\nexport default memo(MessageContent);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Part.tsx",
    "content": "import {\n  Tools,\n  ContentTypes,\n  ToolCallTypes,\n  imageGenTools,\n  isImageVisionTool,\n} from '~/data-provider/data-provider/src';\nimport { memo } from 'react';\nimport type { TMessageContentParts, TAttachment } from '~/data-provider/data-provider/src';\nimport { ErrorMessage } from './MessageContent';\nimport ExecuteCode from './Parts/ExecuteCode';\nimport RetrievalCall from './RetrievalCall';\nimport Reasoning from './Parts/Reasoning';\nimport CodeAnalyze from './CodeAnalyze';\nimport Container from './Container';\nimport ToolCall from './ToolCall';\nimport ImageGen from './ImageGen';\nimport Text from './Parts/Text';\nimport Image from './Image';\n\ntype PartProps = {\n  part?: TMessageContentParts;\n  isSubmitting: boolean;\n  showCursor: boolean;\n  isCreatedByUser: boolean;\n  attachments?: TAttachment[];\n};\n\nconst Part = memo(({ part, isSubmitting, attachments, showCursor, isCreatedByUser }: PartProps) => {\n  if (!part) {\n    return null;\n  }\n\n  if (part.type === ContentTypes.ERROR) {\n    return <ErrorMessage text={part[ContentTypes.TEXT].value} className=\"my-2\" />;\n  } else if (part.type === ContentTypes.TEXT) {\n    const text = typeof part.text === 'string' ? part.text : part.text.value;\n\n    if (typeof text !== 'string') {\n      return null;\n    }\n    if (part.tool_call_ids != null && !text) {\n      return null;\n    }\n    return (\n      <Container>\n        <Text text={text} isCreatedByUser={isCreatedByUser} showCursor={showCursor} />\n      </Container>\n    );\n  } else if (part.type === ContentTypes.THINK) {\n    const reasoning = typeof part.think === 'string' ? part.think : part.think.value;\n    if (typeof reasoning !== 'string') {\n      return null;\n    }\n    return <Reasoning reasoning={reasoning} />;\n  } else if (part.type === ContentTypes.TOOL_CALL) {\n    const toolCall = part[ContentTypes.TOOL_CALL];\n\n    if (!toolCall) {\n      return null;\n    }\n\n    const isToolCall =\n      'args' in toolCall && (!toolCall.type || toolCall.type === ToolCallTypes.TOOL_CALL);\n    if (isToolCall && toolCall.name === Tools.execute_code) {\n      return (\n        <ExecuteCode\n          args={typeof toolCall.args === 'string' ? toolCall.args : ''}\n          output={toolCall.output ?? ''}\n          initialProgress={toolCall.progress ?? 0.1}\n          isSubmitting={isSubmitting}\n          attachments={attachments}\n        />\n      );\n    } else if (isToolCall) {\n      return (\n        <ToolCall\n          args={toolCall.args ?? ''}\n          name={toolCall.name || ''}\n          output={toolCall.output ?? ''}\n          initialProgress={toolCall.progress ?? 0.1}\n          isSubmitting={isSubmitting}\n          attachments={attachments}\n          auth={toolCall.auth}\n          expires_at={toolCall.expires_at}\n        />\n      );\n    } else if (toolCall.type === ToolCallTypes.CODE_INTERPRETER) {\n      const code_interpreter = toolCall[ToolCallTypes.CODE_INTERPRETER];\n      return (\n        <CodeAnalyze\n          initialProgress={toolCall.progress ?? 0.1}\n          code={code_interpreter.input}\n          outputs={code_interpreter.outputs ?? []}\n          isSubmitting={isSubmitting}\n        />\n      );\n    } else if (\n      toolCall.type === ToolCallTypes.RETRIEVAL ||\n      toolCall.type === ToolCallTypes.FILE_SEARCH\n    ) {\n      return (\n        <RetrievalCall initialProgress={toolCall.progress ?? 0.1} isSubmitting={isSubmitting} />\n      );\n    } else if (\n      toolCall.type === ToolCallTypes.FUNCTION &&\n      ToolCallTypes.FUNCTION in toolCall &&\n      imageGenTools.has(toolCall.function.name)\n    ) {\n      return (\n        <ImageGen\n          initialProgress={toolCall.progress ?? 0.1}\n          args={toolCall.function.arguments as string}\n        />\n      );\n    } else if (toolCall.type === ToolCallTypes.FUNCTION && ToolCallTypes.FUNCTION in toolCall) {\n      if (isImageVisionTool(toolCall)) {\n        if (isSubmitting && showCursor) {\n          return (\n            <Container>\n              <Text text={''} isCreatedByUser={isCreatedByUser} showCursor={showCursor} />\n            </Container>\n          );\n        }\n        return null;\n      }\n\n      return (\n        <ToolCall\n          initialProgress={toolCall.progress ?? 0.1}\n          isSubmitting={isSubmitting}\n          args={toolCall.function.arguments as string}\n          name={toolCall.function.name}\n          output={toolCall.function.output}\n        />\n      );\n    }\n  } else if (part.type === ContentTypes.IMAGE_FILE) {\n    const imageFile = part[ContentTypes.IMAGE_FILE];\n    const height = imageFile.height ?? 1920;\n    const width = imageFile.width ?? 1080;\n    return (\n      <Image\n        imagePath={imageFile.filepath}\n        height={height}\n        width={width}\n        altText={imageFile.filename ?? 'Uploaded Image'}\n        placeholderDimensions={{\n          height: height + 'px',\n          width: width + 'px',\n        }}\n      />\n    );\n  }\n\n  return null;\n});\n\nexport default Part;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/Attachment.tsx",
    "content": "import { imageExtRegex } from '~/data-provider/data-provider/src';\nimport type { TAttachment, TFile, TAttachmentMetadata } from '~/data-provider/data-provider/src';\nimport Image from '~/components/Chat/Messages/Content/Image';\n\nexport default function Attachment({ attachment }: { attachment?: TAttachment }) {\n  if (!attachment) {\n    return null;\n  }\n  const { width, height, filepath = null } = attachment as TFile & TAttachmentMetadata;\n  const isImage =\n    imageExtRegex.test(attachment.filename) && width != null && height != null && filepath != null;\n\n  if (isImage) {\n    return (\n      <Image altText={attachment.filename} imagePath={filepath} height={height} width={width} />\n    );\n  }\n  return null;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/CodeProgress.tsx",
    "content": "import ProgressCircle from '~/components/Chat/Messages/Content/ProgressCircle';\nimport CancelledIcon from '~/components/Chat/Messages/Content/CancelledIcon';\n\nexport const CodeInProgress = ({\n  offset,\n  circumference,\n  radius,\n  isSubmitting,\n  progress,\n}: {\n  progress: number;\n  offset: number;\n  circumference: number;\n  radius: number;\n  isSubmitting: boolean;\n}) => {\n  if (progress < 1 && !isSubmitting) {\n    return <CancelledIcon />;\n  }\n  return (\n    <div\n      className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-white\"\n      style={{ opacity: 1, transform: 'none' }}\n      data-projection-id=\"77\"\n    >\n      <div className=\"absolute bottom-[1.5px] right-[1.5px]\">\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox=\"0 0 20 20\"\n          width=\"20\"\n          height=\"20\"\n          style={{ transform: 'translate3d(0px, 0px, 0px)' }}\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <defs>\n            <clipPath id=\"__lottie_element_11\">\n              <rect width=\"20\" height=\"20\" x=\"0\" y=\"0\" />\n            </clipPath>\n          </defs>\n          <g clipPath=\"url(#__lottie_element_11)\">\n            <g\n              style={{ display: 'block', transform: 'matrix(1,0,0,1,-2,-2)', opacity: 1 }}\n              className=\"slide-from-left\"\n            >\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,7.026679992675781,8.834091186523438)\">\n                <path\n                  fill=\"rgb(177,98,253)\"\n                  fillOpacity=\"1\"\n                  d=\" M1.2870399951934814,0.2207774966955185 C0.992609977722168,-0.07359249889850616 0.5152599811553955,-0.07359249889850616 0.22082999348640442,0.2207774966955185 C-0.07361000031232834,0.5151575207710266 -0.07361000031232834,0.992437481880188 0.22082999348640442,1.2868175506591797 C0.8473266959190369,1.9131841659545898 1.4738233089447021,2.53955078125 2.1003201007843018,3.16591739654541 C1.4738233089447021,3.7922842502593994 0.8473266959190369,4.4186506271362305 0.22082999348640442,5.045017719268799 C-0.07361000031232834,5.339417457580566 -0.07361000031232834,5.816617488861084 0.22082999348640442,6.11101770401001 C0.5152599811553955,6.405417442321777 0.992609977722168,6.405417442321777 1.2870399951934814,6.11101770401001 C2.091266632080078,5.306983947753906 2.895493268966675,4.502950668334961 3.6997199058532715,3.6989173889160156 C3.994119882583618,3.404517412185669 3.994119882583618,2.927217483520508 3.6997199058532715,2.6329174041748047 C2.895493268966675,1.8288708925247192 2.091266632080078,1.0248241424560547 1.2870399951934814,0.2207774966955185 C1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 C1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185\"\n                />\n                <path\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  fillOpacity=\"0\"\n                  stroke=\"rgb(177,98,253)\"\n                  strokeOpacity=\"1\"\n                  strokeWidth=\"0.201031\"\n                  d=\" M1.2870399951934814,0.2207774966955185 C0.992609977722168,-0.07359249889850616 0.5152599811553955,-0.07359249889850616 0.22082999348640442,0.2207774966955185 C-0.07361000031232834,0.5151575207710266 -0.07361000031232834,0.992437481880188 0.22082999348640442,1.2868175506591797 C0.8473266959190369,1.9131841659545898 1.4738233089447021,2.53955078125 2.1003201007843018,3.16591739654541 C1.4738233089447021,3.7922842502593994 0.8473266959190369,4.4186506271362305 0.22082999348640442,5.045017719268799 C-0.07361000031232834,5.339417457580566 -0.07361000031232834,5.816617488861084 0.22082999348640442,6.11101770401001 C0.5152599811553955,6.405417442321777 0.992609977722168,6.405417442321777 1.2870399951934814,6.11101770401001 C2.091266632080078,5.306983947753906 2.895493268966675,4.502950668334961 3.6997199058532715,3.6989173889160156 C3.994119882583618,3.404517412185669 3.994119882583618,2.927217483520508 3.6997199058532715,2.6329174041748047 C2.895493268966675,1.8288708925247192 2.091266632080078,1.0248241424560547 1.2870399951934814,0.2207774966955185 C1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 C1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185 1.2870399951934814,0.2207774966955185\"\n                />\n              </g>\n            </g>\n            <g\n              style={{ display: 'block', transform: 'matrix(1,0,0,1,-2,-2)', opacity: 1 }}\n              className=\"slide-to-down\"\n            >\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,11.79640007019043,13.512199401855469)\">\n                <path\n                  fill=\"rgb(177,98,253)\"\n                  fillOpacity=\"1\"\n                  d=\" M4.3225998878479,0 C3.1498000621795654,0 1.9769999980926514,0 0.8041999936103821,0 C0.36010000109672546,0 0,0.36000001430511475 0,0.804099977016449 C0,1.2482000589370728 0.36010000109672546,1.6081000566482544 0.8041999936103821,1.6081000566482544 C1.9769999980926514,1.6081000566482544 3.1498000621795654,1.6081000566482544 4.3225998878479,1.6081000566482544 C4.7667999267578125,1.6081000566482544 5.126800060272217,1.2482000589370728 5.126800060272217,0.804099977016449 C5.126800060272217,0.36000001430511475 4.7667999267578125,0 4.3225998878479,0 C4.3225998878479,0 4.3225998878479,0 4.3225998878479,0 C4.3225998878479,0 4.3225998878479,0 4.3225998878479,0\"\n                />\n                <path\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  fillOpacity=\"0\"\n                  stroke=\"rgb(177,98,253)\"\n                  strokeOpacity=\"1\"\n                  strokeWidth=\"0.100515\"\n                  d=\" M4.3225998878479,0 C3.1498000621795654,0 1.9769999980926514,0 0.8041999936103821,0 C0.36010000109672546,0 0,0.36000001430511475 0,0.804099977016449 C0,1.2482000589370728 0.36010000109672546,1.6081000566482544 0.8041999936103821,1.6081000566482544 C1.9769999980926514,1.6081000566482544 3.1498000621795654,1.6081000566482544 4.3225998878479,1.6081000566482544 C4.7667999267578125,1.6081000566482544 5.126800060272217,1.2482000589370728 5.126800060272217,0.804099977016449 C5.126800060272217,0.36000001430511475 4.7667999267578125,0 4.3225998878479,0 C4.3225998878479,0 4.3225998878479,0 4.3225998878479,0 C4.3225998878479,0 4.3225998878479,0 4.3225998878479,0\"\n                />\n              </g>\n            </g>\n          </g>\n        </svg>\n      </div>\n      <ProgressCircle radius={radius} circumference={circumference} offset={offset} />\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/EditTextPart.tsx",
    "content": "import { useForm } from 'react-hook-form';\nimport { ContentTypes } from '~/data-provider/data-provider/src';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { useRef, useEffect, useCallback, useMemo } from 'react';\nimport { useUpdateMessageContentMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TEditProps } from '~/common';\nimport Container from '~/components/Chat/Messages/Content/Container';\nimport { useChatContext, useAddedChatContext } from '~/Providers';\nimport { TextareaAutosize } from '~/components/ui';\nimport { cn, removeFocusRings } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nconst EditTextPart = ({\n  text,\n  index,\n  messageId,\n  isSubmitting,\n  enterEdit,\n}: Omit<TEditProps, 'message' | 'ask'> & {\n  index: number;\n  messageId: string;\n}) => {\n  const localize = useLocalize();\n  const { addedIndex } = useAddedChatContext();\n  const { getMessages, setMessages, conversation } = useChatContext();\n  const [latestMultiMessage, setLatestMultiMessage] = useRecoilState(\n    store.latestMessageFamily(addedIndex),\n  );\n\n  const { conversationId = '' } = conversation ?? {};\n  const message = useMemo(\n    () => getMessages()?.find((msg) => msg.messageId === messageId),\n    [getMessages, messageId],\n  );\n\n  const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n  const updateMessageContentMutation = useUpdateMessageContentMutation(conversationId ?? '');\n\n  const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();\n  const isRTL = chatDirection === 'rtl';\n\n  const { register, handleSubmit, setValue } = useForm({\n    defaultValues: {\n      text: text ?? '',\n    },\n  });\n\n  useEffect(() => {\n    const textArea = textAreaRef.current;\n    if (textArea) {\n      const length = textArea.value.length;\n      textArea.focus();\n      textArea.setSelectionRange(length, length);\n    }\n  }, []);\n\n  /*\n  const resubmitMessage = () => {\n    showToast({\n      status: 'warning',\n      message: localize('com_warning_resubmit_unsupported'),\n    });\n\n    // const resubmitMessage = (data: { text: string }) => {\n    // Not supported by AWS Bedrock\n    const messages = getMessages();\n    const parentMessage = messages?.find((msg) => msg.messageId === message?.parentMessageId);\n\n    if (!parentMessage) {\n      return;\n    }\n    ask(\n      { ...parentMessage },\n      {\n        editedText: data.text,\n        editedMessageId: messageId,\n        isRegenerate: true,\n        isEdited: true,\n      },\n    );\n\n    setSiblingIdx((siblingIdx ?? 0) - 1);\n    enterEdit(true);\n  };\n  */\n\n  const updateMessage = (data: { text: string }) => {\n    const messages = getMessages();\n    if (!messages) {\n      return;\n    }\n    updateMessageContentMutation.mutate({\n      index,\n      conversationId: conversationId ?? '',\n      text: data.text,\n      messageId,\n    });\n\n    if (messageId === latestMultiMessage?.messageId) {\n      setLatestMultiMessage({ ...latestMultiMessage, text: data.text });\n    }\n\n    const isInMessages = messages.some((msg) => msg.messageId === messageId);\n    if (!isInMessages) {\n      return enterEdit(true);\n    }\n\n    const updatedContent = message?.content?.map((part, idx) => {\n      if (part.type === ContentTypes.TEXT && idx === index) {\n        return { ...part, text: data.text };\n      }\n      return part;\n    });\n\n    setMessages(\n      messages.map((msg) =>\n        msg.messageId === messageId\n          ? {\n            ...msg,\n            content: updatedContent,\n          }\n          : msg,\n      ),\n    );\n\n    enterEdit(true);\n  };\n\n  const handleKeyDown = useCallback(\n    (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n      if (e.key === 'Escape') {\n        e.preventDefault();\n        enterEdit(true);\n      }\n    },\n    [enterEdit],\n  );\n\n  const { ref, ...registerProps } = register('text', {\n    required: true,\n    onChange: (e) => {\n      setValue('text', e.target.value, { shouldValidate: true });\n    },\n  });\n\n  return (\n    <Container message={message}>\n      <div className=\"bg-token-main-surface-primary relative flex w-full flex-grow flex-col overflow-hidden rounded-2xl border border-border-medium text-text-primary [&:has(textarea:focus)]:border-border-heavy [&:has(textarea:focus)]:shadow-[0_2px_6px_rgba(0,0,0,.05)]\">\n        <TextareaAutosize\n          {...registerProps}\n          ref={(e) => {\n            ref(e);\n            textAreaRef.current = e;\n          }}\n          onKeyDown={handleKeyDown}\n          data-testid=\"message-text-editor\"\n          className={cn(\n            'markdown prose dark:prose-invert light whitespace-pre-wrap break-words pl-3 md:pl-4',\n            'm-0 w-full resize-none border-0 bg-transparent py-[10px]',\n            'placeholder-text-secondary focus:ring-0 focus-visible:ring-0 md:py-3.5',\n            isRTL ? 'text-right' : 'text-left',\n            'max-h-[65vh] pr-3 md:max-h-[75vh] md:pr-4',\n            removeFocusRings,\n          )}\n          dir={isRTL ? 'rtl' : 'ltr'}\n        />\n      </div>\n      <div className=\"mt-2 flex w-full justify-center text-center\">\n        {/* <button\n          className=\"btn btn-primary relative mr-2\"\n          disabled={isSubmitting}\n          onClick={handleSubmit(resubmitMessage)}\n        >\n          {localize('com_ui_save_submit')}\n        </button> */}\n        <button\n          className=\"btn btn-secondary relative mr-2\"\n          disabled={isSubmitting}\n          onClick={handleSubmit(updateMessage)}\n        >\n          {localize('com_ui_save')}\n        </button>\n        <button className=\"btn btn-neutral relative\" onClick={() => enterEdit(true)}>\n          {localize('com_ui_cancel')}\n        </button>\n      </div>\n    </Container>\n  );\n};\n\nexport default EditTextPart;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/ExecuteCode.tsx",
    "content": "import React, { useMemo, useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TAttachment } from '~/data-provider/data-provider/src';\nimport ProgressText from '~/components/Chat/Messages/Content/ProgressText';\nimport FinishedIcon from '~/components/Chat/Messages/Content/FinishedIcon';\nimport MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite';\nimport { useProgress, useLocalize } from '~/hooks';\nimport { CodeInProgress } from './CodeProgress';\nimport Attachment from './Attachment';\nimport LogContent from './LogContent';\nimport store from '~/store';\n\ninterface ParsedArgs {\n  lang: string;\n  code: string;\n}\n\nexport function useParseArgs(args: string): ParsedArgs {\n  return useMemo(() => {\n    if (!args) {\n      return {\n        lang: '',\n        code: '',\n      };\n    }\n    const langMatch = args.match(/\"lang\"\\s*:\\s*\"(\\w+)\"/);\n    const codeMatch = args.match(/\"code\"\\s*:\\s*\"(.+?)(?=\"\\s*,\\s*\"args\"|$)/s);\n\n    let code = '';\n    if (codeMatch) {\n      code = codeMatch[1];\n      if (code.endsWith('\"}')) {\n        code = code.slice(0, -2);\n      }\n      code = code.replace(/\\\\n/g, '\\n').replace(/\\\\/g, '');\n    }\n\n    return {\n      lang: langMatch ? langMatch[1] : '',\n      code,\n    };\n  }, [args]);\n}\n\nconst radius = 56.08695652173913;\nconst circumference = 2 * Math.PI * radius;\n\nexport default function ExecuteCode({\n  initialProgress = 0.1,\n  args,\n  output = '',\n  isSubmitting,\n  attachments,\n}: {\n  initialProgress: number;\n  args: string;\n  output?: string;\n  isSubmitting: boolean;\n  attachments?: TAttachment[];\n}) {\n  const localize = useLocalize();\n  const showAnalysisCode = useRecoilValue(store.showCode);\n  const [showCode, setShowCode] = useState(showAnalysisCode);\n\n  const { lang, code } = useParseArgs(args);\n  const progress = useProgress(initialProgress);\n  const offset = circumference - progress * circumference;\n\n  return (\n    <>\n      <div className=\"my-2.5 flex items-center gap-2.5\">\n        <div className=\"relative h-5 w-5 shrink-0\">\n          {progress < 1 ? (\n            <CodeInProgress\n              offset={offset}\n              radius={radius}\n              progress={progress}\n              isSubmitting={isSubmitting}\n              circumference={circumference}\n            />\n          ) : (\n            <FinishedIcon />\n          )}\n        </div>\n        <ProgressText\n          progress={progress}\n          onClick={() => setShowCode((prev) => !prev)}\n          inProgressText={localize('com_ui_analyzing')}\n          finishedText={localize('com_ui_analyzing_finished')}\n          hasInput={!!code.length}\n          isExpanded={showCode}\n        />\n      </div>\n      {showCode && (\n        <div className=\"code-analyze-block mb-3 mt-0.5 overflow-hidden rounded-xl bg-black\">\n          <MarkdownLite\n            content={code ? `\\`\\`\\`${lang}\\n${code}\\n\\`\\`\\`` : ''}\n            codeExecution={false}\n          />\n          {output.length > 0 && (\n            <div className=\"bg-gray-700 p-4 text-xs\">\n              <div\n                className=\"prose flex flex-col-reverse text-white\"\n                style={{\n                  color: 'white',\n                }}\n              >\n                <pre className=\"shrink-0\">\n                  <LogContent output={output} attachments={attachments} />\n                </pre>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n      {attachments?.map((attachment, index) => <Attachment attachment={attachment} key={index} />)}\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/LogContent.tsx",
    "content": "import { isAfter } from 'date-fns';\nimport React, { useMemo } from 'react';\nimport { imageExtRegex } from '~/data-provider/data-provider/src';\nimport type { TFile, TAttachment, TAttachmentMetadata } from '~/data-provider/data-provider/src';\nimport Image from '~/components/Chat/Messages/Content/Image';\nimport { useLocalize } from '~/hooks';\nimport LogLink from './LogLink';\n\ninterface LogContentProps {\n  output?: string;\n  renderImages?: boolean;\n  attachments?: TAttachment[];\n}\n\ntype ImageAttachment = TFile &\n  TAttachmentMetadata & {\n    height: number;\n    width: number;\n  };\n\nconst LogContent: React.FC<LogContentProps> = ({ output = '', renderImages, attachments }) => {\n  const localize = useLocalize();\n\n  const processedContent = useMemo(() => {\n    if (!output) {\n      return '';\n    }\n\n    const parts = output.split('Generated files:');\n    return parts[0].trim();\n  }, [output]);\n\n  const { imageAttachments, nonImageAttachments } = useMemo(() => {\n    const imageAtts: ImageAttachment[] = [];\n    const nonImageAtts: TAttachment[] = [];\n\n    attachments?.forEach((attachment) => {\n      const { width, height, filepath = null } = attachment as TFile & TAttachmentMetadata;\n      const isImage =\n        imageExtRegex.test(attachment.filename) &&\n        width != null &&\n        height != null &&\n        filepath != null;\n      if (isImage) {\n        imageAtts.push(attachment as ImageAttachment);\n      } else {\n        nonImageAtts.push(attachment);\n      }\n    });\n\n    return {\n      imageAttachments: renderImages === true ? imageAtts : null,\n      nonImageAttachments: nonImageAtts,\n    };\n  }, [attachments, renderImages]);\n\n  const renderAttachment = (file: TAttachment) => {\n    const now = new Date();\n    const expiresAt = typeof file.expiresAt === 'number' ? new Date(file.expiresAt) : null;\n    const isExpired = expiresAt ? isAfter(now, expiresAt) : false;\n\n    if (isExpired) {\n      return `${file.filename} ${localize('com_download_expired')}`;\n    }\n\n    // const expirationText = expiresAt\n    //   ? ` ${localize('com_download_expires', { 0: format(expiresAt, 'MM/dd/yy HH:mm') })}`\n    //   : ` ${localize('com_click_to_download')}`;\n\n    return (\n      <LogLink href={file.filepath} filename={file.filename}>\n        {'- '}\n        {file.filename} {localize('com_click_to_download')}\n      </LogLink>\n    );\n  };\n\n  return (\n    <>\n      {processedContent && <div>{processedContent}</div>}\n      {nonImageAttachments.length > 0 && (\n        <div>\n          <p>{localize('com_generated_files')}</p>\n          {nonImageAttachments.map((file, index) => (\n            <React.Fragment key={file.filepath}>\n              {renderAttachment(file)}\n              {index < nonImageAttachments.length - 1 && ', '}\n            </React.Fragment>\n          ))}\n        </div>\n      )}\n      {imageAttachments?.map((attachment, index) => {\n        const { width, height, filepath } = attachment;\n        return (\n          <Image\n            key={index}\n            altText={attachment.filename}\n            imagePath={filepath}\n            height={height}\n            width={width}\n          />\n        );\n      })}\n    </>\n  );\n};\n\nexport default LogContent;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/LogLink.tsx",
    "content": "import React from 'react';\nimport { useCodeOutputDownload } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\n\ninterface LogLinkProps {\n  href: string;\n  filename: string;\n  children: React.ReactNode;\n}\n\nconst LogLink: React.FC<LogLinkProps> = ({ href, filename, children }) => {\n  const { showToast } = useToastContext();\n  const { refetch: downloadFile } = useCodeOutputDownload(href);\n\n  const handleDownload = async (event: React.MouseEvent<HTMLAnchorElement>) => {\n    event.preventDefault();\n    try {\n      const stream = await downloadFile();\n      if (stream.data == null || stream.data === '') {\n        console.error('Error downloading file: No data found');\n        showToast({\n          status: 'error',\n          message: 'Error downloading file',\n        });\n        return;\n      }\n      const link = document.createElement('a');\n      link.href = stream.data;\n      link.setAttribute('download', filename);\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n      window.URL.revokeObjectURL(stream.data);\n    } catch (error) {\n      console.error('Error downloading file:', error);\n    }\n  };\n\n  return (\n    <a\n      href={href}\n      onClick={handleDownload}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      className=\"!text-blue-400 visited:!text-purple-400 hover:underline\"\n    >\n      {children}\n    </a>\n  );\n};\n\nexport default LogLink;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/Reasoning.tsx",
    "content": "import { memo, useMemo } from 'react';\nimport { ContentTypes } from '~/data-provider/data-provider/src';\nimport { ThinkingContent } from '~/components/Artifacts/Thinking';\nimport { useMessageContext } from '~/Providers';\nimport { cn } from '~/utils';\n\ntype ReasoningProps = {\n  reasoning: string;\n};\n\nconst Reasoning = memo(({ reasoning }: ReasoningProps) => {\n  const { isExpanded, nextType } = useMessageContext();\n  const reasoningText = useMemo(() => {\n    return reasoning\n      .replace(/^<think>\\s*/, '')\n      .replace(/\\s*<\\/think>$/, '')\n      .trim();\n  }, [reasoning]);\n\n  if (!reasoningText) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'grid transition-all duration-300 ease-out',\n        nextType !== ContentTypes.THINK && isExpanded && 'mb-8',\n      )}\n      style={{\n        gridTemplateRows: isExpanded ? '1fr' : '0fr',\n      }}\n    >\n      <div className=\"overflow-hidden\">\n        <ThinkingContent isPart={true}>{reasoningText}</ThinkingContent>\n      </div>\n    </div>\n  );\n});\n\nexport default Reasoning;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/Parts/Text.tsx",
    "content": "import { memo, useMemo, ReactElement } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite';\nimport Markdown from '~/components/Chat/Messages/Content/Markdown';\nimport { useChatContext, useMessageContext } from '~/Providers';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\ntype TextPartProps = {\n  text: string;\n  showCursor: boolean;\n  isCreatedByUser: boolean;\n};\n\ntype ContentType =\n  | ReactElement<React.ComponentProps<typeof Markdown>>\n  | ReactElement<React.ComponentProps<typeof MarkdownLite>>\n  | ReactElement;\n\nconst TextPart = memo(({ text, isCreatedByUser, showCursor }: TextPartProps) => {\n  const { messageId } = useMessageContext();\n  const { isSubmitting, latestMessage } = useChatContext();\n  const enableUserMsgMarkdown = useRecoilValue(store.enableUserMsgMarkdown);\n  const showCursorState = useMemo(() => showCursor && isSubmitting, [showCursor, isSubmitting]);\n  const isLatestMessage = useMemo(\n    () => messageId === latestMessage?.messageId,\n    [messageId, latestMessage?.messageId],\n  );\n\n  const content: ContentType = useMemo(() => {\n    if (!isCreatedByUser) {\n      return (\n        <Markdown content={text} showCursor={showCursorState} isLatestMessage={isLatestMessage} />\n      );\n    } else if (enableUserMsgMarkdown) {\n      return <MarkdownLite content={text} />;\n    } else {\n      return <>{text}</>;\n    }\n  }, [isCreatedByUser, enableUserMsgMarkdown, text, showCursorState, isLatestMessage]);\n\n  return (\n    <div\n      className={cn(\n        isSubmitting ? 'submitting' : '',\n        showCursorState && !!text.length ? 'result-streaming' : '',\n        'markdown prose message-content dark:prose-invert light w-full break-words',\n        isCreatedByUser && !enableUserMsgMarkdown && 'whitespace-pre-wrap',\n        isCreatedByUser ? 'dark:text-gray-20' : 'dark:text-gray-100',\n      )}\n    >\n      {content}\n    </div>\n  );\n});\n\nexport default TextPart;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ProgressCircle.tsx",
    "content": "export default function ProgressCircle({\n  radius,\n  circumference,\n  offset,\n}: {\n  radius: number;\n  circumference: number;\n  offset: number;\n}) {\n  return (\n    <svg\n      width=\"120\"\n      height=\"120\"\n      viewBox=\"0 0 120 120\"\n      className=\"absolute left-1/2 top-1/2 h-[23px] w-[23px] -translate-x-1/2 -translate-y-1/2 text-brand-purple\"\n    >\n      <circle\n        className=\"origin-[50%_50%] -rotate-90 stroke-brand-purple/25 dark:stroke-brand-purple/50\"\n        strokeWidth=\"7.826086956521739\"\n        fill=\"transparent\"\n        r={radius}\n        cx=\"60\"\n        cy=\"60\"\n      />\n      <circle\n        className=\"origin-[50%_50%] -rotate-90 transition-[stroke-dashoffset]\"\n        stroke=\"currentColor\"\n        strokeWidth=\"7.826086956521739\"\n        strokeDasharray={`${circumference} ${circumference}`}\n        strokeDashoffset={offset}\n        fill=\"transparent\"\n        r={radius}\n        cx=\"60\"\n        cy=\"60\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ProgressText.tsx",
    "content": "import * as Popover from '@radix-ui/react-popover';\nimport { cn } from '~/utils';\n\nconst wrapperClass =\n  'progress-text-wrapper text-token-text-secondary relative -mt-[0.75px] h-5 w-full leading-5';\n\nconst Wrapper = ({ popover, children }: { popover: boolean; children: React.ReactNode }) => {\n  if (popover) {\n    return (\n      <div className={wrapperClass}>\n        <Popover.Trigger asChild>\n          <div\n            className=\"progress-text-content absolute left-0 top-0 line-clamp-1 overflow-visible\"\n            style={{ opacity: 1, transform: 'none' }}\n            data-projection-id=\"78\"\n          >\n            {children}\n          </div>\n        </Popover.Trigger>\n      </div>\n    );\n  }\n\n  return (\n    <div className={wrapperClass}>\n      <div\n        className=\"progress-text-content absolute left-0 top-0 line-clamp-1 overflow-visible\"\n        style={{ opacity: 1, transform: 'none' }}\n        data-projection-id=\"78\"\n      >\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport default function ProgressText({\n  progress,\n  onClick,\n  inProgressText,\n  finishedText,\n  authText,\n  hasInput = true,\n  popover = false,\n  isExpanded = false,\n}: {\n  progress: number;\n  onClick?: () => void;\n  inProgressText: string;\n  finishedText: string;\n  authText?: string;\n  hasInput?: boolean;\n  popover?: boolean;\n  isExpanded?: boolean;\n}) {\n  const text = progress < 1 ? (authText ?? inProgressText) : finishedText;\n  return (\n    <Wrapper popover={popover}>\n      <button\n        type=\"button\"\n        className={cn('inline-flex items-center gap-1', hasInput ? '' : 'pointer-events-none')}\n        disabled={!hasInput}\n        onClick={onClick}\n      >\n        {text}\n        <svg\n          width=\"16\"\n          height=\"17\"\n          viewBox=\"0 0 16 17\"\n          fill=\"none\"\n          className={isExpanded ? 'rotate-180' : 'rotate-0'}\n        >\n          <path\n            className={hasInput ? '' : 'stroke-transparent'}\n            d=\"M11.3346 7.83203L8.00131 11.1654L4.66797 7.83203\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n        </svg>\n      </button>\n    </Wrapper>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/RetrievalCall.tsx",
    "content": "import ProgressCircle from './ProgressCircle';\nimport InProgressCall from './InProgressCall';\nimport RetrievalIcon from './RetrievalIcon';\nimport CancelledIcon from './CancelledIcon';\nimport ProgressText from './ProgressText';\nimport FinishedIcon from './FinishedIcon';\nimport { useProgress } from '~/hooks';\n\nexport default function RetrievalCall({\n  initialProgress = 0.1,\n  isSubmitting,\n}: {\n  initialProgress: number;\n  isSubmitting: boolean;\n}) {\n  const progress = useProgress(initialProgress);\n  const radius = 56.08695652173913;\n  const circumference = 2 * Math.PI * radius;\n  const offset = circumference - progress * circumference;\n  const error = progress >= 2;\n\n  return (\n    <div className=\"my-2.5 flex items-center gap-2.5\">\n      <div className=\"relative h-5 w-5 shrink-0\">\n        {progress < 1 ? (\n          <InProgressCall progress={progress} isSubmitting={isSubmitting} error={error}>\n            <div\n              className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-white\"\n              style={{ opacity: 1, transform: 'none' }}\n            >\n              <div>\n                <RetrievalIcon />\n              </div>\n              <ProgressCircle radius={radius} circumference={circumference} offset={offset} />\n            </div>\n          </InProgressCall>\n        ) : error ? (\n          <CancelledIcon />\n        ) : (\n          <FinishedIcon />\n        )}\n      </div>\n      <ProgressText\n        progress={progress}\n        onClick={() => ({})}\n        inProgressText={'Searching my knowledge'}\n        finishedText={'Used Retrieval'}\n        hasInput={false}\n        popover={false}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/RetrievalIcon.tsx",
    "content": "export default function RetrievalIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      viewBox=\"0 0 20 20\"\n      width=\"20\"\n      height=\"20\"\n      style={{ width: '100%', height: '100%', transform: 'translate3d(0px, 0px, 0px)' }}\n      preserveAspectRatio=\"xMidYMid meet\"\n    >\n      <defs>\n        <clipPath id=\"__lottie_element_258\">\n          <rect width=\"20\" height=\"20\" x=\"0\" y=\"0\" />\n        </clipPath>\n        <clipPath id=\"__lottie_element_263\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\" />\n        </clipPath>\n        <clipPath id=\"__lottie_element_270\">\n          <path d=\"M0,0 L20000,0 L20000,20000 L0,20000z\" />\n        </clipPath>\n      </defs>\n      <g clipPath=\"url(#__lottie_element_258)\">\n        <g\n          clipPath=\"url(#__lottie_element_263)\"\n          style={{ display: 'block' }}\n          transform=\"matrix(0.9999999403953552,0,0,0.9999999403953552,-10000,-10000)\"\n          opacity=\"1\"\n        >\n          <g\n            clipPath=\"url(#__lottie_element_270)\"\n            style={{ display: 'block' }}\n            transform=\"matrix(0.9999988675117493,0,0,0.9999988675117493,10.01171875,10.01171875)\"\n            opacity=\"1\"\n          >\n            <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10000,10000)\" opacity=\"1\">\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,-3.25,-2.125)\">\n                <path\n                  fill=\"rgb(177,97,253)\"\n                  fillOpacity=\"1\"\n                  d=\" M0,0.75 C0,0.3357900083065033 0.3357900083065033,8.881784197001252e-16 0.75,8.881784197001252e-16 C2.4166667461395264,8.881784197001252e-16 4.083333492279053,8.881784197001252e-16 5.75,8.881784197001252e-16 C6.1641998291015625,8.881784197001252e-16 6.5,0.3357900083065033 6.5,0.75 C6.5,1.1642099618911743 6.1641998291015625,1.5 5.75,1.5 C4.083333492279053,1.5 2.4166667461395264,1.5 0.75,1.5 C0.3357900083065033,1.5 0,1.1642099618911743 0,0.75 C0,0.75 0,0.75 0,0.75 C0,0.75 0,0.75 0,0.75\"\n                />\n              </g>\n            </g>\n            <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10000,10000)\" opacity=\"1\">\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,-3.25,0.625)\">\n                <path\n                  fill=\"rgb(177,97,253)\"\n                  fillOpacity=\"1\"\n                  d=\" M0,0.75 C0,0.3357999920845032 0.3357900083065033,0 0.75,0 C1.9166666269302368,0 3.0833332538604736,0 4.25,0 C4.6641998291015625,0 5,0.3357999920845032 5,0.75 C5,1.164199948310852 4.6641998291015625,1.5 4.25,1.5 C3.0833332538604736,1.5 1.9166666269302368,1.5 0.75,1.5 C0.3357900083065033,1.5 0,1.164199948310852 0,0.75 C0,0.75 0,0.75 0,0.75 C0,0.75 0,0.75 0,0.75\"\n                />\n              </g>\n            </g>\n          </g>\n          <g style={{ display: 'block' }} transform=\"matrix(1,0,0,1,10000,10000)\" opacity=\"1\">\n            <g opacity=\"1\" transform=\"matrix(1,0,0,1,10,10)\">\n              <path\n                fill=\"rgb(177,97,253)\"\n                fillOpacity=\"1\"\n                d=\" M-3.13,-5.25 C-3.09,-5.25 -3.04,-5.25 -3,-5.25 C-2.59,-5.25 -2.25,-4.91 -2.25,-4.5 C-2.25,-4.09 -2.59,-3.75 -3,-3.75 C-3.03,-3.75 -3.07,-3.75 -3.1,-3.75 C-3.53,-3.75 -3.81,-3.75 -4.02,-3.73 C-4.23,-3.72 -4.3,-3.69 -4.34,-3.67 C-4.48,-3.6 -4.6,-3.48 -4.67,-3.34 C-4.69,-3.3 -4.72,-3.23 -4.73,-3.02 C-4.75,-2.81 -4.75,-2.53 -4.75,-2.1 C-4.75,-2.07 -4.75,-2.03 -4.75,-2 C-4.75,-1.59 -5.09,-1.25 -5.5,-1.25 C-5.91,-1.25 -6.25,-1.59 -6.25,-2 C-6.25,-2.04 -6.25,-2.09 -6.25,-2.13 C-6.25,-2.52 -6.25,-2.87 -6.23,-3.15 C-6.2,-3.44 -6.15,-3.74 -6,-4.02 C-5.79,-4.44 -5.44,-4.79 -5.02,-5 C-4.74,-5.15 -4.44,-5.2 -4.15,-5.23 C-3.87,-5.25 -3.52,-5.25 -3.13,-5.25 C-3.13,-5.25 -3.13,-5.25 -3.13,-5.25 C-3.13,-5.25 -3.13,-5.25 -3.13,-5.25 M6.25,-2.13 C6.25,-2.09 6.25,-2.04 6.25,-2 C6.25,-1.59 5.91,-1.25 5.5,-1.25 C5.09,-1.25 4.75,-1.59 4.75,-2 C4.75,-2.03 4.75,-2.07 4.75,-2.1 C4.75,-2.53 4.75,-2.81 4.73,-3.02 C4.72,-3.23 4.69,-3.3 4.67,-3.34 C4.6,-3.48 4.48,-3.6 4.34,-3.67 C4.3,-3.69 4.23,-3.72 4.02,-3.73 C3.81,-3.75 3.53,-3.75 3.1,-3.75 C3.07,-3.75 3.03,-3.75 3,-3.75 C2.59,-3.75 2.25,-4.09 2.25,-4.5 C2.25,-4.91 2.59,-5.25 3,-5.25 C3.04,-5.25 3.09,-5.25 3.13,-5.25 C3.52,-5.25 3.87,-5.25 4.15,-5.23 C4.44,-5.2 4.74,-5.15 5.02,-5 C5.44,-4.79 5.79,-4.44 6,-4.02 C6.15,-3.74 6.2,-3.44 6.23,-3.15 C6.25,-2.87 6.25,-2.52 6.25,-2.13 C6.25,-2.13 6.25,-2.13 6.25,-2.13 C6.25,-2.13 6.25,-2.13 6.25,-2.13 M-3.13,5.25 C-3.09,5.25 -3.04,5.25 -3,5.25 C-2.59,5.25 -2.25,4.91 -2.25,4.5 C-2.25,4.09 -2.59,3.75 -3,3.75 C-3.03,3.75 -3.07,3.75 -3.1,3.75 C-3.53,3.75 -3.81,3.75 -4.02,3.73 C-4.23,3.72 -4.3,3.69 -4.34,3.67 C-4.48,3.6 -4.6,3.48 -4.67,3.34 C-4.69,3.3 -4.72,3.23 -4.73,3.02 C-4.75,2.81 -4.75,2.53 -4.75,2.1 C-4.75,2.07 -4.75,2.03 -4.75,2 C-4.75,1.59 -5.09,1.25 -5.5,1.25 C-5.91,1.25 -6.25,1.59 -6.25,2 C-6.25,2.04 -6.25,2.09 -6.25,2.13 C-6.25,2.52 -6.25,2.87 -6.23,3.15 C-6.2,3.44 -6.15,3.74 -6,4.02 C-5.79,4.44 -5.44,4.79 -5.02,5 C-4.74,5.15 -4.44,5.2 -4.15,5.23 C-3.87,5.25 -3.52,5.25 -3.13,5.25 C-3.13,5.25 -3.13,5.25 -3.13,5.25 C-3.13,5.25 -3.13,5.25 -3.13,5.25 M6.25,2.13 C6.25,2.09 6.25,2.04 6.25,2 C6.25,1.59 5.91,1.25 5.5,1.25 C5.09,1.25 4.75,1.59 4.75,2 C4.75,2.03 4.75,2.07 4.75,2.1 C4.75,2.53 4.75,2.81 4.73,3.02 C4.72,3.23 4.69,3.3 4.67,3.34 C4.6,3.48 4.48,3.6 4.34,3.67 C4.3,3.69 4.23,3.72 4.02,3.73 C3.81,3.75 3.53,3.75 3.1,3.75 C3.07,3.75 3.03,3.75 3,3.75 C2.59,3.75 2.25,4.09 2.25,4.5 C2.25,4.91 2.59,5.25 3,5.25 C3.04,5.25 3.09,5.25 3.13,5.25 C3.52,5.25 3.87,5.25 4.15,5.23 C4.44,5.2 4.74,5.15 5.02,5 C5.44,4.79 5.79,4.44 6,4.02 C6.15,3.74 6.2,3.44 6.23,3.15 C6.25,2.87 6.25,2.52 6.25,2.13 C6.25,2.13 6.25,2.13 6.25,2.13 C6.25,2.13 6.25,2.13 6.25,2.13\"\n              />\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,-6.250000476837158,-5.250000476837158)\">\n                <path fill=\"rgb(177,97,253)\" fillOpacity=\"1\" d=\"M0 0\" />\n              </g>\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,-5.250000476837158)\">\n                <path fill=\"rgb(177,97,253)\" fillOpacity=\"1\" d=\"M0 0\" />\n              </g>\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,-6.250000476837158,1.25)\">\n                <path fill=\"rgb(177,97,253)\" fillOpacity=\"1\" d=\"M0 0\" />\n              </g>\n              <g opacity=\"1\" transform=\"matrix(1,0,0,1,2.25,1.25)\">\n                <path fill=\"rgb(177,97,253)\" fillOpacity=\"1\" d=\"M0 0\" />\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/SearchContent.tsx",
    "content": "import { Suspense } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TMessage, TMessageContentParts } from '~/data-provider/data-provider/src';\nimport { UnfinishedMessage } from './MessageContent';\nimport { DelayedRender } from '~/components/ui';\nimport MarkdownLite from './MarkdownLite';\nimport { cn } from '~/utils';\nimport store from '~/store';\nimport Part from './Part';\n\nconst SearchContent = ({ message }: { message: TMessage }) => {\n  const enableUserMsgMarkdown = useRecoilValue(store.enableUserMsgMarkdown);\n  const { messageId } = message;\n  if (Array.isArray(message.content) && message.content.length > 0) {\n    return (\n      <>\n        {message.content\n          .filter((part: TMessageContentParts | undefined) => part)\n          .map((part: TMessageContentParts | undefined, idx: number) => {\n            if (!part) {\n              return null;\n            }\n            return (\n              <Part\n                key={`display-${messageId}-${idx}`}\n                showCursor={false}\n                isSubmitting={false}\n                isCreatedByUser={message.isCreatedByUser}\n                messageId={message.messageId}\n                part={part}\n              />\n            );\n          })}\n        {message.unfinished === true && (\n          <Suspense>\n            <DelayedRender delay={250}>\n              <UnfinishedMessage message={message} key={`unfinished-${messageId}`} />\n            </DelayedRender>\n          </Suspense>\n        )}\n      </>\n    );\n  }\n\n  return (\n    <div\n      className={cn(\n        'markdown prose dark:prose-invert light w-full break-words',\n        message.isCreatedByUser && !enableUserMsgMarkdown && 'whitespace-pre-wrap',\n        message.isCreatedByUser ? 'dark:text-gray-20' : 'dark:text-gray-70',\n      )}\n      dir=\"auto\"\n    >\n      <MarkdownLite content={message.text || ''} />\n    </div>\n  );\n};\n\nexport default SearchContent;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/SearchWebUrls.tsx",
    "content": "import { Atom, ChevronRight } from \"lucide-react\";\nimport { useMemo, useState } from \"react\";\nimport { ThinkingButton } from \"~/components/Artifacts/Thinking\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from \"~/components/ui\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\nconst BUTTON_STYLES = {\n    base: 'group mt-3 flex w-fit items-center justify-center rounded-xl bg-surface-tertiary px-3 py-2 text-xs leading-[18px] animate-thinking-appear',\n    icon: 'icon-sm ml-1.5 transform-gpu text-text-primary transition-transform duration-200',\n} as const;\n\nexport default function SearchWebUrls({ webs }) {\n    const [isOpen, setIsOpen] = useState(false);\n    const t = useLocalize()\n\n    return <div className=\"mb-4\">\n        <Dialog open={isOpen} onOpenChange={setIsOpen}>\n            <DialogTrigger asChild>\n                <button\n                    type=\"button\"\n                    className={BUTTON_STYLES.base}\n                    onClick={() => setIsOpen(true)}\n                >\n                    <Atom size={14} className=\"mr-1.5 text-text-secondary\" />\n                    {t('com_search_found_webs', { 0: webs.length })}\n                    <ChevronRight className=\"rotate-0 size-4\" />\n                </button>\n            </DialogTrigger>\n\n            <DialogContent className=\"absolute flex flex-col bottom-4 right-4 w-[440px] px-6 bg-white shadow-lg rounded-lg h-[92vh]\">\n                <DialogHeader className=\"text-md px-0\">\n                    <DialogTitle>{t('com_search_results')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex-1 pb-10 overflow-hidden flex flex-col\">\n                    <div className=\"flex-1 overflow-y-auto dark:text-gray-300\">\n                        {webs.map((web) => <WebItem key={web.url} {...web} />)}\n                    </div>\n                </div>\n            </DialogContent>\n        </Dialog>\n    </div>\n};\n\nexport const WebItem = ({ url, title, snippet }: { url: string; title: string; snippet: string }) => {\n    // 清除文本中的 HTML 标签\n    const stripHtmlTags = (text: string) => {\n        const doc = new DOMParser().parseFromString(text, 'text/html');\n        return doc.body.textContent || ''; // 获取纯文本内容\n    };\n\n    return (\n        <div className=\"max-w-[440px]\">\n            <a href={url} target=\"_blank\" className=\"block p-2 rounded-md hover:bg-gray-50 dark:hover:bg-gray-700 \">\n                <div className=\"cursor-pointer\">\n                    {/* URL */}\n                    <span className=\"text-sm text-gray-400\">{url}</span>\n                    {/* 标题加粗，清除 HTML 标签 */}\n                    <h3 className=\"font-bold text-md mb-2\">{stripHtmlTags(title)}</h3>\n                    {/* 描述部分，最多两行，超出显示省略号，清除 HTML 标签 */}\n                    <p className=\"text-sm text-gray-500 line-clamp-2\">\n                        {stripHtmlTags(snippet)}\n                    </p>\n                </div>\n            </a>\n        </div>\n    );\n};\n\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ToolCall.tsx",
    "content": "import { useMemo } from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { ShieldCheck, TriangleAlert } from 'lucide-react';\nimport { actionDelimiter, actionDomainSeparator, Constants } from '~/data-provider/data-provider/src';\nimport type { TAttachment } from '~/data-provider/data-provider/src';\nimport useLocalize from '~/hooks/useLocalize';\nimport ProgressCircle from './ProgressCircle';\nimport InProgressCall from './InProgressCall';\nimport Attachment from './Parts/Attachment';\nimport CancelledIcon from './CancelledIcon';\nimport ProgressText from './ProgressText';\nimport FinishedIcon from './FinishedIcon';\nimport ToolPopover from './ToolPopover';\nimport WrenchIcon from './WrenchIcon';\nimport { useProgress } from '~/hooks';\nimport { logger } from '~/utils';\n\nconst radius = 56.08695652173913;\nconst circumference = 2 * Math.PI * radius;\n\nexport default function ToolCall({\n  initialProgress = 0.1,\n  isSubmitting,\n  name,\n  args: _args = '',\n  output,\n  attachments,\n  auth,\n}: {\n  initialProgress: number;\n  isSubmitting: boolean;\n  name: string;\n  args: string | Record<string, unknown>;\n  output?: string | null;\n  attachments?: TAttachment[];\n  auth?: string;\n  expires_at?: number;\n}) {\n  const localize = useLocalize();\n  const { function_name, domain, isMCPToolCall } = useMemo(() => {\n    if (typeof name !== 'string') {\n      return { function_name: '', domain: null, isMCPToolCall: false };\n    }\n\n    if (name.includes(Constants.mcp_delimiter)) {\n      const [func, server] = name.split(Constants.mcp_delimiter);\n      return {\n        function_name: func || '',\n        domain: server && (server.replaceAll(actionDomainSeparator, '.') || null),\n        isMCPToolCall: true,\n      };\n    }\n\n    const [func, _domain] = name.includes(actionDelimiter)\n      ? name.split(actionDelimiter)\n      : [name, ''];\n    return {\n      function_name: func || '',\n      domain: _domain && (_domain.replaceAll(actionDomainSeparator, '.') || null),\n      isMCPToolCall: false,\n    };\n  }, [name]);\n\n  const error =\n    typeof output === 'string' && output.toLowerCase().includes('error processing tool');\n\n  const args = useMemo(() => {\n    if (typeof _args === 'string') {\n      return _args;\n    }\n\n    try {\n      return JSON.stringify(_args, null, 2);\n    } catch (e) {\n      logger.error(\n        'client/src/components/Chat/Messages/Content/ToolCall.tsx - Failed to stringify args',\n        e,\n      );\n      return '';\n    }\n  }, [_args]) as string | undefined;\n\n  const hasInfo = useMemo(\n    () => (args?.length ?? 0) > 0 || (output?.length ?? 0) > 0,\n    [args, output],\n  );\n\n  const authDomain = useMemo(() => {\n    const authURL = auth ?? '';\n    if (!authURL) {\n      return '';\n    }\n    try {\n      const url = new URL(authURL);\n      return url.hostname;\n    } catch (e) {\n      return '';\n    }\n  }, [auth]);\n\n  const progress = useProgress(error === true ? 1 : initialProgress);\n  const cancelled = (!isSubmitting && progress < 1) || error === true;\n  const offset = circumference - progress * circumference;\n\n  const renderIcon = () => {\n    if (progress < 1 && authDomain.length > 0) {\n      return (\n        <div\n          className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-text-secondary\"\n          style={{ opacity: 1, transform: 'none' }}\n          data-projection-id=\"849\"\n        >\n          <div>\n            <ShieldCheck />\n          </div>\n        </div>\n      );\n    } else if (progress < 1) {\n      return (\n        <InProgressCall progress={progress} isSubmitting={isSubmitting} error={error}>\n          <div\n            className=\"absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-white\"\n            style={{ opacity: 1, transform: 'none' }}\n            data-projection-id=\"849\"\n          >\n            <div>\n              <WrenchIcon />\n            </div>\n            <ProgressCircle radius={radius} circumference={circumference} offset={offset} />\n          </div>\n        </InProgressCall>\n      );\n    }\n\n    return cancelled ? <CancelledIcon /> : <FinishedIcon />;\n  };\n\n  const getFinishedText = () => {\n    if (cancelled) {\n      return localize('com_ui_error');\n    }\n    if (isMCPToolCall === true) {\n      return localize('com_assistants_completed_function', { 0: function_name });\n    }\n    if (domain != null && domain && domain.length !== Constants.ENCODED_DOMAIN_LENGTH) {\n      return localize('com_assistants_completed_action', { 0: domain });\n    }\n    return localize('com_assistants_completed_function', { 0: function_name });\n  };\n\n  return (\n    <Popover.Root>\n      <div className=\"my-2.5 flex flex-wrap items-center gap-2.5\">\n        <div className=\"flex w-full items-center gap-2.5\">\n          <div className=\"relative h-5 w-5 shrink-0\">{renderIcon()}</div>\n          <ProgressText\n            progress={cancelled ? 1 : progress}\n            inProgressText={localize('com_assistants_running_action')}\n            authText={\n              !cancelled && authDomain.length > 0 ? localize('com_ui_requires_auth') : undefined\n            }\n            finishedText={getFinishedText()}\n            hasInput={hasInfo}\n            popover={true}\n          />\n          {hasInfo && (\n            <ToolPopover\n              input={args ?? ''}\n              output={output}\n              domain={authDomain || (domain ?? '')}\n              function_name={function_name}\n              pendingAuth={authDomain.length > 0 && !cancelled && progress < 1}\n            />\n          )}\n        </div>\n        {auth != null && auth && progress < 1 && !cancelled && (\n          <div className=\"flex w-full flex-col gap-2.5\">\n            <div className=\"mb-1 mt-2\">\n              <a\n                className=\"inline-flex items-center justify-center gap-2 rounded-3xl bg-surface-tertiary px-4 py-2 text-sm font-medium hover:bg-surface-hover\"\n                href={auth}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n              >\n                {localize('com_ui_sign_in_to_domain', { 0: authDomain })}\n              </a>\n            </div>\n            <p className=\"flex items-center text-xs text-text-secondary\">\n              <TriangleAlert className=\"mr-1.5 inline-block h-4 w-4\" />\n              {localize('com_assistants_allow_sites_you_trust')}\n            </p>\n          </div>\n        )}\n      </div>\n      {attachments?.map((attachment, index) => <Attachment attachment={attachment} key={index} />)}\n    </Popover.Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/ToolPopover.tsx",
    "content": "import * as Popover from '@radix-ui/react-popover';\nimport useLocalize from '~/hooks/useLocalize';\n\nexport default function ToolPopover({\n  input,\n  output,\n  domain,\n  function_name,\n  pendingAuth,\n}: {\n  input: string;\n  function_name: string;\n  output?: string | null;\n  domain?: string;\n  pendingAuth?: boolean;\n}) {\n  const localize = useLocalize();\n  const formatText = (text: string) => {\n    try {\n      return JSON.stringify(JSON.parse(text), null, 2);\n    } catch {\n      return text;\n    }\n  };\n\n  let title =\n    domain != null && domain\n      ? localize('com_assistants_domain_info', { 0: domain })\n      : localize('com_assistants_function_use', { 0: function_name });\n  if (pendingAuth === true) {\n    title =\n      domain != null && domain\n        ? localize('com_assistants_action_attempt', { 0: domain })\n        : localize('com_assistants_attempt_info');\n  }\n\n  return (\n    <Popover.Portal>\n      <Popover.Content\n        side=\"bottom\"\n        align=\"start\"\n        sideOffset={12}\n        alignOffset={-5}\n        className=\"w-18 min-w-[180px]  max-w-sm rounded-lg bg-surface-primary px-1\"\n      >\n        <div tabIndex={-1}>\n          <div className=\"bg-token-surface-primary max-w-sm rounded-md p-2 shadow-[0_0_24px_0_rgba(0,0,0,0.05),inset_0_0.5px_0_0_rgba(0,0,0,0.05),0_2px_8px_0_rgba(0,0,0,0.05)]\">\n            <div className=\"mb-2 text-sm font-medium text-text-primary\">{title}</div>\n            <div className=\"bg-token-surface-secondary text-token-text-primary dark rounded-md text-xs\">\n              <div className=\"max-h-32 overflow-y-auto rounded-md bg-surface-tertiary p-2\">\n                <code className=\"!whitespace-pre-wrap \">{formatText(input)}</code>\n              </div>\n            </div>\n            {output != null && output && (\n              <>\n                <div className=\"mb-2 mt-2 text-sm font-medium text-text-primary\">\n                  {localize('com_ui_result')}\n                </div>\n                <div className=\"bg-token-surface-secondary text-token-text-primary dark rounded-md text-xs\">\n                  <div className=\"max-h-32 overflow-y-auto rounded-md bg-surface-tertiary p-2\">\n                    <code className=\"!whitespace-pre-wrap \">{formatText(output)}</code>\n                  </div>\n                </div>\n              </>\n            )}\n          </div>\n        </div>\n      </Popover.Content>\n    </Popover.Portal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Content/WrenchIcon.tsx",
    "content": "import React, { useState, useEffect } from 'react';\n\nexport default function WrenchIcon() {\n  const [rotate, setRotate] = useState(false);\n\n  useEffect(() => {\n    const timer = setInterval(() => {\n      setRotate((r) => !r);\n    }, 2000); // Change 2000 to the duration you want for each pause\n\n    return () => clearInterval(timer);\n  }, []);\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      viewBox=\"0 0 24 24\"\n      width=\"24\"\n      height=\"24\"\n      style={{ width: '100%', height: '100%', transform: 'rotate(30deg)' }}\n      preserveAspectRatio=\"xMidYMid meet\"\n    >\n      <defs>\n        <clipPath id=\"__lottie_element_28\">\n          <rect width=\"24\" height=\"24\" x=\"0\" y=\"0\"></rect>\n        </clipPath>\n      </defs>\n      <g clipPath=\"url(#__lottie_element_28)\">\n        <g\n          style={{ display: 'block', transform: 'matrix(1,0,0,1,0,0)' }}\n          opacity=\"1\"\n          className=\"rotate-adjust-and-back\"\n        >\n          <g\n            opacity=\"1\"\n            transform=\"matrix(0.8995603322982788,-0.8114914894104004,0.8114914894104004,0.8995603322982788,1.0572385787963867,13.542327880859375)\"\n          >\n            <path\n              fill=\"rgb(178,98,254)\"\n              fillOpacity=\"1\"\n              d=\" M8.648597717285156,0.11783526837825775 C9.091397285461426,0.2144152671098709 9.200997352600098,0.7544552683830261 8.880497932434082,1.0749353170394897 C8.137197494506836,1.8182452917099 7.393897533416748,2.5615553855895996 6.65059757232666,3.3048653602600098 C5.901897430419922,4.053555488586426 5.901897430419922,5.267405033111572 6.65059757232666,6.0161051750183105 C7.399197578430176,6.764805316925049 8.613097190856934,6.764805316925049 9.361797332763672,6.0161051750183105 C10.105097770690918,5.2727952003479 10.848397254943848,4.52948522567749 11.591697692871094,3.78617525100708 C11.91219711303711,3.465695381164551 12.452197074890137,3.5752952098846436 12.548797607421875,4.018115043640137 C12.907397270202637,5.6623053550720215 12.44759750366211,7.449105262756348 11.169297218322754,8.727405548095703 C9.65219783782959,10.244504928588867 7.418797492980957,10.608805656433105 5.557697296142578,9.820205688476562 C4.796051025390625,10.581838607788086 4.034404277801514,11.34347152709961 3.2727575302124023,12.10510540008545 C2.5240674018859863,12.853805541992188 1.310207486152649,12.853805541992188 0.5615174770355225,12.10510540008545 C-0.18717250227928162,11.356505393981934 -0.18717250227928162,10.14260482788086 0.5615174770355225,9.393905639648438 C1.3231642246246338,8.632271766662598 2.084810733795166,7.870638370513916 2.8464574813842773,7.109005451202393 C2.0579075813293457,5.247905254364014 2.4221975803375244,3.014495372772217 3.939307451248169,1.497375249862671 C5.217597484588623,0.21908527612686157 7.004397392272949,-0.24075473845005035 8.648597717285156,0.11783526837825775 \"\n            ></path>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/HoverButtons.tsx",
    "content": "import React, { useEffect, useRef, useState } from \"react\";\nimport { useRecoilState } from \"recoil\";\nimport {\n  CheckMark,\n  Clipboard,\n  ContinueIcon,\n  RegenerateIcon,\n} from \"~/components/svg\";\nimport { TextToSpeechButton } from \"~/components/Voice/TextToSpeechButton\";\nimport type {\n  TConversation,\n  TMessage,\n} from \"~/data-provider/data-provider/src\";\nimport { useGenerationsByLatest, useLocalize } from \"~/hooks\";\nimport MessageSource from \"~/pages/appChat/components/MessageSource\";\nimport ResouceModal from \"~/pages/appChat/components/ResouceModal\";\nimport store from \"~/store\";\nimport { cn } from \"~/utils\";\n\ntype THoverButtons = {\n  isEditing: boolean;\n  enterEdit: (cancel?: boolean) => void;\n  copyToClipboard: (\n    setIsCopied: React.Dispatch<React.SetStateAction<boolean>>\n  ) => void;\n  conversation: TConversation | null;\n  isSubmitting: boolean;\n  message: TMessage;\n  regenerate: () => void;\n  handleContinue: (e: React.MouseEvent<HTMLButtonElement>) => void;\n  latestMessage: TMessage | null;\n  isLast: boolean;\n  index: number;\n};\n\nexport default function HoverButtons({\n  index,\n  isEditing,\n  enterEdit,\n  copyToClipboard,\n  conversation,\n  isSubmitting,\n  message,\n  regenerate,\n  handleContinue,\n  latestMessage,\n  isLast,\n}: THoverButtons) {\n  const localize = useLocalize();\n  const { endpoint: _endpoint, endpointType } = conversation ?? {};\n  const endpoint = endpointType ?? _endpoint;\n  const [isCopied, setIsCopied] = useState(false);\n  const [enableOrgKb, setEnableOrgKb] = useRecoilState(store.enableOrgKb);\n\n  const {\n    hideEditButton,\n    regenerateEnabled,\n    continueSupported,\n    forkingSupported,\n    isEditableEndpoint,\n  } = useGenerationsByLatest({\n    isEditing,\n    isSubmitting,\n    error: message.error,\n    endpoint: endpoint ?? \"\",\n    messageId: message.messageId,\n    searchResult: message.searchResult,\n    finish_reason: message.finish_reason,\n    isCreatedByUser: message.isCreatedByUser,\n    latestMessageId: latestMessage?.messageId,\n  });\n  if (!conversation) {\n    return null;\n  }\n\n  const { isCreatedByUser, error } = message;\n  const sourceRef = useRef(null);\n\n  const renderRegenerate = () => {\n    if (!regenerateEnabled) {\n      return null;\n    }\n    return (\n      <button\n        className={cn(\n          \"hover-button active rounded-md p-1 hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible md:group-[.final-completion]:visible\",\n          !isLast ? \"md:opacity-0 md:group-hover:opacity-100\" : \"\"\n        )}\n        onClick={regenerate}\n        type=\"button\"\n        title={localize(\"com_ui_regenerate\")}\n      >\n        <RegenerateIcon\n          className=\"hover:text-gray-500 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400\"\n          size=\"19\"\n        />\n      </button>\n    );\n  };\n\n  if (error === true) {\n    return (\n      <div className=\"visible mt-0 flex justify-center gap-1 self-end text-gray-500 lg:justify-start\">\n        {renderRegenerate()}\n      </div>\n    );\n  }\n\n  const onEdit = () => {\n    if (isEditing) {\n      return enterEdit(true);\n    }\n    enterEdit();\n  };\n  return (\n    <div className=\"visible mt-0 flex justify-center gap-1 self-end text-gray-500 lg:justify-start\">\n      <div className=\"mr-2 pt-0.5\">\n        <MessageSource\n          extra={null}\n          end={true}\n          source={message.source}\n          onSource={() => {\n            sourceRef.current?.openModal({\n              messageId: message.messageId,\n              message: message.text\n                .replace(/:::thinking[\\s\\S]*?:::/, \"\")\n                .trim(),\n              chatId: message.conversationId,\n            });\n          }}\n        />\n      </div>\n      {/* {TextToSpeech && (\n        <MessageAudio\n          index={index}\n          messageId={message.messageId}\n          content={message.content ?? message.text}\n          isLast={isLast}\n          className={cn(\n            'ml-0 flex items-center gap-1.5 rounded-md p-1 text-xs hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible',\n          )}\n        />\n      )} */}\n      {/* 隐藏编辑按钮 */}\n      {/* {isEditableEndpoint && (\n        <button\n          id={`edit-${message.messageId}`}\n          className={cn(\n            'hover-button rounded-md p-1 hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible',\n            isCreatedByUser ? '' : 'active',\n            hideEditButton ? 'opacity-0' : '',\n            isEditing ? 'active text-gray-700 dark:text-gray-200' : '',\n            !isLast ? 'md:opacity-0 md:group-hover:opacity-100' : '',\n          )}\n          onClick={onEdit}\n          type=\"button\"\n          title={localize('com_ui_edit')}\n          disabled={hideEditButton}\n        >\n          <EditIcon size=\"19\" />\n        </button>\n      )} */}\n      <button\n        className={cn(\n          \"ml-0 flex items-center gap-1.5 rounded-md p-1 text-xs hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible\",\n          isSubmitting && isCreatedByUser\n            ? \"md:opacity-0 md:group-hover:opacity-100\"\n            : \"\",\n          !isLast ? \"md:opacity-0 md:group-hover:opacity-100\" : \"\"\n        )}\n        onClick={() => copyToClipboard(setIsCopied)}\n        type=\"button\"\n        title={\n          isCopied\n            ? localize(\"com_ui_copied_to_clipboard\")\n            : localize(\"com_ui_copy_to_clipboard\")\n        }\n      >\n        {isCopied ? (\n          <CheckMark className=\"h-[18px] w-[18px]\" />\n        ) : (\n          <Clipboard size=\"19\" />\n        )}\n      </button>\n      {renderRegenerate()}\n      {/* <Fork\n        isLast={isLast}\n        messageId={message.messageId}\n        conversationId={conversation.conversationId}\n        forkingSupported={forkingSupported}\n        latestMessageId={latestMessage?.messageId}\n      /> */}\n      {continueSupported === true ? (\n        <button\n          className={cn(\n            \"hover-button active rounded-md p-1 hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible\",\n            !isLast ? \"md:opacity-0 md:group-hover:opacity-100\" : \"\"\n          )}\n          onClick={handleContinue}\n          type=\"button\"\n          title={localize(\"com_ui_continue\")}\n        >\n          <ContinueIcon className=\"h-4 w-4 hover:text-gray-500 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400\" />\n        </button>\n      ) : null}\n      {regenerateEnabled && message.text && (\n        <TextToSpeechButton\n          className={!isLast ? \"md:opacity-0 md:group-hover:opacity-100\" : \"\"}\n          messageId={message.messageId}\n          text={message.text.replace(/:::([\\s\\S]*?):::/g, \"\")}\n        />\n      )}\n\n      <ResouceModal ref={sourceRef}></ResouceModal>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/Message.tsx",
    "content": "import React from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { useMessageProcess } from '~/hooks';\nimport type { TMessageProps } from '~/common';\nimport MessageRender from './ui/MessageRender';\n// eslint-disable-next-line import/no-cycle\nimport MultiMessage from './MultiMessage';\nimport { cn } from '~/utils';\nimport store from '~/store';\nimport { useGetBsConfig } from '~/data-provider';\n\nconst MessageContainer = React.memo(\n  ({\n    handleScroll,\n    children,\n  }: {\n    handleScroll: (event?: unknown) => void;\n    children: React.ReactNode;\n  }) => {\n    return (\n      <div\n        className=\"text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent\"\n        onWheel={handleScroll}\n        onTouchMove={handleScroll}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n\nexport default function Message(props: TMessageProps) {\n  const {\n    showSibling,\n    conversation,\n    handleScroll,\n    siblingMessage,\n    latestMultiMessage,\n    isSubmittingFamily,\n  } = useMessageProcess({ message: props.message });\n  const { message, currentEditId, setCurrentEditId } = props;\n  const maximizeChatSpace = useRecoilValue(store.maximizeChatSpace);\n  const { data: bsConfig } = useGetBsConfig()\n\n  if (!message || typeof message !== 'object') {\n    return null;\n  }\n\n  const { children, messageId = null } = message;\n\n  return (\n    <>\n      <MessageContainer handleScroll={handleScroll}>\n        {/* 切换树枝 */}\n        {showSibling ? (\n          <div className=\"m-auto my-2 flex justify-center p-4 py-2 md:gap-6\">\n            <div\n              className={cn(\n                'flex w-full flex-row flex-wrap justify-between gap-1 md:flex-nowrap md:gap-2',\n                maximizeChatSpace ? 'w-full max-w-full' : 'md:max-w-5xl xl:max-w-6xl',\n              )}\n            >\n              <MessageRender\n                {...props}\n                message={message}\n                isSubmittingFamily={isSubmittingFamily}\n                isCard\n              />\n              <MessageRender\n                {...props}\n                isMultiMessage\n                isCard\n                message={siblingMessage ?? latestMultiMessage ?? undefined}\n                isSubmittingFamily={isSubmittingFamily}\n              />\n            </div>\n          </div>\n        ) : (\n          <div className=\"m-auto justify-center p-4 py-2 md:gap-6 \">\n            <MessageRender iconURL={bsConfig?.assistantIcon.image ? __APP_ENV__.BASE_URL + bsConfig?.assistantIcon.image : ''} {...props} />\n          </div>\n        )}\n      </MessageContainer>\n      <MultiMessage\n        key={messageId}\n        messageId={messageId}\n        conversation={conversation}\n        messagesTree={children ?? []}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MessageAudio.tsx",
    "content": "import { memo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TMessageAudio } from '~/common';\nimport { BrowserTTS, EdgeTTS, ExternalTTS } from '~/components/Audio/TTS';\nimport { TTSEndpoints } from '~/common';\nimport store from '~/store';\n\nfunction MessageAudio(props: TMessageAudio) {\n  const engineTTS = useRecoilValue<string>(store.engineTTS);\n\n  const TTSComponents = {\n    [TTSEndpoints.edge]: EdgeTTS,\n    [TTSEndpoints.browser]: BrowserTTS,\n    [TTSEndpoints.external]: ExternalTTS,\n  };\n\n  const SelectedTTS = TTSComponents[engineTTS];\n  return <SelectedTTS {...props} />;\n}\n\nexport default memo(MessageAudio);\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MessageIcon.tsx",
    "content": "import React, { useMemo, memo } from 'react';\nimport type { Assistant, Agent } from '~/data-provider/data-provider/src';\nimport type { TMessageIcon } from '~/common';\nimport { getEndpointField, getIconEndpoint, logger } from '~/utils';\nimport ConvoIconURL from '~/components/Endpoints/ConvoIconURL';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport Icon from '~/components/Endpoints/Icon';\n\nconst MessageIcon = memo(\n  ({\n    iconData,\n    name,\n    assistant,\n    agent,\n  }: {\n    iconData?: TMessageIcon;\n    assistant?: Assistant;\n    agent?: Agent;\n    name?: string;\n  }) => {\n    logger.log('icon_data', iconData, assistant, agent);\n    const { data: endpointsConfig } = useGetEndpointsQuery();\n\n    const agentName = useMemo(() => agent?.name ?? '', [agent]);\n    const agentAvatar = useMemo(() => agent?.avatar?.filepath ?? '', [agent]);\n    const assistantName = useMemo(() => assistant?.name ?? '', [assistant]);\n    const assistantAvatar = useMemo(() => assistant?.metadata?.avatar ?? '', [assistant]);\n\n    const avatarURL = useMemo(() => {\n      let result = '';\n      if (assistant) {\n        result = assistantAvatar;\n      } else if (agent) {\n        result = agentAvatar;\n      }\n      return result;\n    }, [assistant, agent, assistantAvatar, agentAvatar]);\n\n    const iconURL = iconData?.iconURL;\n    const endpoint = useMemo(\n      () => getIconEndpoint({ endpointsConfig, iconURL, endpoint: iconData?.endpoint }),\n      [endpointsConfig, iconURL, iconData?.endpoint],\n    );\n\n    const endpointIconURL = useMemo(\n      () => getEndpointField(endpointsConfig, endpoint, 'iconURL'),\n      [endpointsConfig, endpoint],\n    );\n\n    // 模型头像\n    if (iconData?.isCreatedByUser !== true && iconURL != null ) {\n      return (\n        <ConvoIconURL\n          iconURL={iconURL}\n          modelLabel={iconData?.modelLabel}\n          context=\"message\"\n          assistantAvatar={assistantAvatar}\n          agentAvatar={agentAvatar}\n          endpointIconURL={endpointIconURL}\n          assistantName={assistantName}\n          agentName={agentName}\n        />\n      );\n    }\n\n    // 用户头像\n    return (\n      <Icon\n        isCreatedByUser={iconData?.isCreatedByUser ?? false}\n        endpoint={endpoint}\n        name={name}\n        iconURL={avatarURL || endpointIconURL}\n        model={iconData?.model}\n        assistantName={assistantName}\n        agentName={agentName}\n        size={28.8}\n      />\n    );\n  },\n);\n\nMessageIcon.displayName = 'MessageIcon';\n\nexport default MessageIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MessageParts.tsx",
    "content": "import React, { useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TMessageContentParts } from '~/data-provider/data-provider/src';\nimport type { TMessageProps, TMessageIcon } from '~/common';\nimport MessageIcon from '~/components/Chat/Messages/MessageIcon';\nimport { useMessageHelpers, useLocalize } from '~/hooks';\nimport ContentParts from './Content/ContentParts';\nimport SiblingSwitch from './SiblingSwitch';\n// eslint-disable-next-line import/no-cycle\nimport MultiMessage from './MultiMessage';\nimport HoverButtons from './HoverButtons';\nimport SubRow from './SubRow';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function Message(props: TMessageProps) {\n  const localize = useLocalize();\n  const { message, siblingIdx, siblingCount, setSiblingIdx, currentEditId, setCurrentEditId } =\n    props;\n\n  const {\n    edit,\n    index,\n    agent,\n    isLast,\n    enterEdit,\n    assistant,\n    handleScroll,\n    conversation,\n    isSubmitting,\n    latestMessage,\n    handleContinue,\n    copyToClipboard,\n    regenerateMessage,\n  } = useMessageHelpers(props);\n  const fontSize = useRecoilValue(store.fontSize);\n  const { children, messageId = null, isCreatedByUser } = message ?? {};\n  const name = useMemo(() => {\n    let result = '';\n    if (isCreatedByUser === true) {\n      result = localize('com_user_message');\n    } else if (assistant) {\n      result = assistant.name ?? localize('com_ui_assistant');\n    } else if (agent) {\n      result = agent.name ?? localize('com_ui_agent');\n    }\n\n    return result;\n  }, [assistant, agent, isCreatedByUser, localize]);\n\n  const iconData: TMessageIcon = useMemo(\n    () => ({\n      endpoint: message?.endpoint ?? conversation?.endpoint,\n      model: message?.model ?? conversation?.model,\n      iconURL: message?.iconURL ?? conversation?.iconURL,\n      modelLabel: name,\n      isCreatedByUser: message?.isCreatedByUser,\n    }),\n    [\n      name,\n      conversation?.endpoint,\n      conversation?.iconURL,\n      conversation?.model,\n      message?.model,\n      message?.iconURL,\n      message?.endpoint,\n      message?.isCreatedByUser,\n    ],\n  );\n  if (!message) {\n    return null;\n  }\n\n  return (\n    <>\n      <div\n        className=\"text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent\"\n        onWheel={handleScroll}\n        onTouchMove={handleScroll}\n      >\n        <div className=\"m-auto justify-center p-4 py-2 md:gap-6 \">\n          <div className=\"group mx-auto flex flex-1 gap-3 md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5\">\n            <div className=\"relative flex flex-shrink-0 flex-col items-end\">\n              <div>\n                <div className=\"pt-0.5\">\n                  <div className=\"shadow-stroke flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n                    <MessageIcon iconData={iconData} assistant={assistant} agent={agent} />\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div\n              className={cn(\n                'relative flex w-full flex-col',\n                isCreatedByUser === true ? '' : 'agent-turn',\n              )}\n            >\n              <div className={cn('select-none font-semibold', fontSize)}>{name}</div>\n              <div className=\"flex-col gap-1 md:gap-3\">\n                <div className=\"flex max-w-full flex-grow flex-col gap-0\">\n                  <ContentParts\n                    isLast={isLast}\n                    isSubmitting={isSubmitting}\n                    messageId={message.messageId}\n                    isCreatedByUser={message.isCreatedByUser}\n                    conversationId={conversation?.conversationId}\n                    content={message.content as Array<TMessageContentParts | undefined>}\n                  />\n                </div>\n              </div>\n              {isLast && isSubmitting ? (\n                <div className=\"mt-1 h-[27px] bg-transparent\" />\n              ) : (\n                <SubRow classes=\"text-xs\">\n                  <SiblingSwitch\n                    siblingIdx={siblingIdx}\n                    siblingCount={siblingCount}\n                    setSiblingIdx={setSiblingIdx}\n                  />\n                  <HoverButtons\n                    index={index}\n                    isEditing={edit}\n                    message={message}\n                    enterEdit={enterEdit}\n                    isSubmitting={isSubmitting}\n                    conversation={conversation ?? null}\n                    regenerate={() => regenerateMessage()}\n                    copyToClipboard={copyToClipboard}\n                    handleContinue={handleContinue}\n                    latestMessage={latestMessage}\n                    isLast={isLast}\n                  />\n                </SubRow>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n      <MultiMessage\n        key={messageId}\n        messageId={messageId}\n        conversation={conversation}\n        messagesTree={children ?? []}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MessagesView.tsx",
    "content": "import { useState } from \"react\";\nimport { MessageSquare, MessagesSquareIcon, Search } from \"lucide-react\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CSSTransition } from \"react-transition-group\";\nimport type { ReactNode } from \"react\";\nimport type { TMessage } from \"~/data-provider/data-provider/src\";\nimport {\n  useScreenshot,\n  useMessageScrolling,\n  useLocalize,\n  useNewConvo,\n} from \"~/hooks\";\nimport ScrollToBottom from \"~/components/Messages/ScrollToBottom\";\nimport MultiMessage from \"./MultiMessage\";\nimport { cn } from \"~/utils\";\nimport store from \"~/store\";\nimport { Button } from \"~/components/ui\";\n\nexport default function MessagesView({\n  messagesTree: _messagesTree,\n  readOnly,\n  Header,\n}: {\n  messagesTree?: TMessage[] | null;\n  readOnly?: boolean;\n  Header?: ReactNode;\n}) {\n  const { newConversation: newConvo } = useNewConvo(0);\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const scrollButtonPreference = useRecoilValue(store.showScrollButton);\n  const fontSize = useRecoilValue(store.fontSize);\n  const { screenshotTargetRef } = useScreenshot();\n  const [currentEditId, setCurrentEditId] = useState<number | string | null>(\n    -1\n  );\n  const [selectedOrgKbs, setSelectedOrgKbs] = useRecoilState(\n    store.selectedOrgKbs\n  );\n  const [enableOrgKb, setEnableOrgKb] = useRecoilState(store.enableOrgKb);\n  const {\n    conversation,\n    scrollableRef,\n    messagesEndRef,\n    showScrollButton,\n    handleSmoothToRef,\n    debouncedHandleScroll,\n  } = useMessageScrolling(_messagesTree);\n\n  const { conversationId } = conversation ?? {};\n\n  return (\n    // 消息面板\n    <div className=\"flex-1 overflow-hidden overflow-y-auto\">\n      <div className=\"relative h-full\">\n        <div\n          className=\"scrollbar-gutter-stable flex flex-grow flex-col pb-20\"\n          onScroll={debouncedHandleScroll}\n          ref={scrollableRef}\n          style={{\n            height: \"100%\",\n            overflowY: \"auto\",\n            width: \"100%\",\n          }}\n        >\n          <div className=\"flex flex-1 flex-col pb-3 dark:bg-transparent\">\n            {(_messagesTree && _messagesTree.length == 0) ||\n            _messagesTree === null ? (\n              <div\n                className={cn(\n                  \"flex w-full items-center justify-center p-3 text-text-secondary\",\n                  fontSize\n                )}\n              >\n                {localize(\"com_ui_nothing_found\")}\n              </div>\n            ) : (\n              <>\n                {Header != null && Header}\n                <div ref={screenshotTargetRef}>\n                  <MultiMessage\n                    key={conversationId} // avoid internal state mixture\n                    messagesTree={_messagesTree}\n                    messageId={conversationId ?? null}\n                    setCurrentEditId={setCurrentEditId}\n                    currentEditId={currentEditId ?? null}\n                  />\n                </div>\n              </>\n            )}\n            <div\n              id=\"messages-end\"\n              className=\"group h-0 w-full flex-shrink-0\"\n              ref={messagesEndRef}\n            />\n          </div>\n        </div>\n        {/* 开启新对话 */}\n        <div className=\"absolute bottom-12 h-0 w-full flex justify-center\">\n          {\n            <Button\n              className=\"flex items-center h-8 justify-center gap-2 rounded-2xl bg-blue-100 px-4 py-1 font-medium text-blue-main hover:bg-blue-200\"\n              disabled={readOnly}\n              onClick={() => {\n                setSelectedOrgKbs([]);\n                setEnableOrgKb(false);\n                document.getElementById(\"create-convo-btn\")?.click();\n                // hack\n                setTimeout(() => {\n                  document.getElementById(\"create-convo-btn\")?.click();\n                }, 300);\n              }}\n              aria-label={localize(\"com_ui_new_chat\")}\n            >\n              <img\n                className=\"size-5\"\n                src={__APP_ENV__.BASE_URL + \"/assets/chat.png\"}\n                alt=\"\"\n              />\n              <span className=\"text-sm\">{localize(\"com_ui_new_chat\")}</span>\n            </Button>\n          }\n        </div>\n        {/* 返回底部 */}\n        <CSSTransition\n          in={showScrollButton}\n          timeout={400}\n          classNames=\"scroll-down\"\n          unmountOnExit={false}\n          // appear\n        >\n          {() =>\n            showScrollButton &&\n            scrollButtonPreference && (\n              <ScrollToBottom scrollHandler={handleSmoothToRef} />\n            )\n          }\n        </CSSTransition>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MinimalHoverButtons.tsx",
    "content": "import { useState } from 'react';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useLocalize, useCopyToClipboard } from '~/hooks';\nimport { Clipboard, CheckMark } from '~/components/svg';\n\ntype THoverButtons = {\n  message: TMessage;\n};\n\nexport default function MinimalHoverButtons({ message }: THoverButtons) {\n  const localize = useLocalize();\n  const [isCopied, setIsCopied] = useState(false);\n  const copyToClipboard = useCopyToClipboard({ text: message.text, content: message.content });\n\n  return (\n    <div className=\"visible mt-0 flex justify-center gap-1 self-end text-gray-400 lg:justify-start\">\n      <button\n        className=\"ml-0 flex items-center gap-1.5 rounded-md p-1 text-xs hover:text-gray-900 dark:text-gray-400/70 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible\"\n        onClick={() => copyToClipboard(setIsCopied)}\n        type=\"button\"\n        title={\n          isCopied ? localize('com_ui_copied_to_clipboard') : localize('com_ui_copy_to_clipboard')\n        }\n      >\n        {isCopied ? <CheckMark className=\"h-[18px] w-[18px]\" /> : <Clipboard />}\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MinimalMessages.tsx",
    "content": "import React from 'react';\nimport { cn } from '~/utils';\n\nconst MinimalMessages = React.forwardRef(\n  (\n    props: { children: React.ReactNode; className?: string },\n    ref: React.ForwardedRef<HTMLDivElement>,\n  ) => {\n    return (\n      <div\n        className={cn(\n          'relative flex w-full grow overflow-hidden bg-white dark:bg-gray-800',\n          props.className,\n        )}\n      >\n        <div className=\"transition-width relative h-full w-full flex-1 overflow-auto bg-white dark:bg-gray-800\">\n          <div className=\"flex h-full flex-col\" role=\"presentation\" tabIndex={0}>\n            <div className=\"flex-1 overflow-hidden overflow-y-auto\">\n              <div className=\"dark:gpt-dark-gray relative h-full\">\n                <div\n                  ref={ref}\n                  style={{\n                    height: '100%',\n                    overflowY: 'auto',\n                    width: '100%',\n                  }}\n                >\n                  <div className=\"flex flex-col pb-9 text-sm dark:bg-transparent\">\n                    {props.children}\n                    <div className=\"dark:gpt-dark-gray group h-0 w-full flex-shrink-0 dark:border-gray-800/50\" />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  },\n);\n\nexport default MinimalMessages;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/MultiMessage.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { useEffect, useCallback } from 'react';\nimport { isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport type { TMessageProps } from '~/common';\n// eslint-disable-next-line import/no-cycle\nimport MessageContent from '~/components/Messages/MessageContent';\n// eslint-disable-next-line import/no-cycle\nimport MessageParts from './MessageParts';\n// eslint-disable-next-line import/no-cycle\nimport Message from './Message';\nimport store from '~/store';\n\nexport default function MultiMessage({\n  // messageId is used recursively here\n  messageId,\n  messagesTree,\n  currentEditId,\n  setCurrentEditId,\n}: TMessageProps) {\n  const [siblingIdx, setSiblingIdx] = useRecoilState(store.messagesSiblingIdxFamily(messageId));\n\n  const setSiblingIdxRev = useCallback(\n    (value: number) => {\n      setSiblingIdx((messagesTree?.length ?? 0) - value - 1);\n    },\n    [messagesTree?.length, setSiblingIdx],\n  );\n\n  useEffect(() => {\n    // reset siblingIdx when the tree changes, mostly when a new message is submitting.\n    setSiblingIdx(0);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [messagesTree?.length]);\n\n  useEffect(() => {\n    if (messagesTree?.length && siblingIdx >= messagesTree.length) {\n      setSiblingIdx(0);\n    }\n  }, [siblingIdx, messagesTree?.length, setSiblingIdx]);\n\n  if (!(messagesTree && messagesTree.length)) {\n    return null;\n  }\n\n  const message = messagesTree[messagesTree.length - siblingIdx - 1] as TMessage | undefined;\n\n  if (!message) {\n    return null;\n  }\n\n  if (isAssistantsEndpoint(message.endpoint) && message.content) {\n    return (\n      <MessageParts\n        key={message.messageId}\n        message={message}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n        siblingIdx={messagesTree.length - siblingIdx - 1}\n        siblingCount={messagesTree.length}\n        setSiblingIdx={setSiblingIdxRev}\n      />\n    );\n  } else if (message.content && message.content.length) {\n    return (\n      <MessageContent\n        key={message.messageId}\n        message={message}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n        siblingIdx={messagesTree.length - siblingIdx - 1}\n        siblingCount={messagesTree.length}\n        setSiblingIdx={setSiblingIdxRev}\n      />\n    );\n  }\n\n  return (\n    <Message\n      key={message.messageId}\n      message={message}\n      currentEditId={currentEditId}\n      setCurrentEditId={setCurrentEditId}\n      siblingIdx={messagesTree.length - siblingIdx - 1}\n      siblingCount={messagesTree.length}\n      setSiblingIdx={setSiblingIdxRev}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/SearchButtons.tsx",
    "content": "import { Link } from 'lucide-react';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useLocalize, useNavigateToConvo } from '~/hooks';\nimport { useSearchContext } from '~/Providers';\nimport { getConversationById } from '~/utils';\n\nexport default function SearchButtons({ message }: { message: TMessage }) {\n  const localize = useLocalize();\n  const { searchQueryRes } = useSearchContext();\n  const { navigateWithLastTools } = useNavigateToConvo();\n  const conversationId = message.conversationId ?? '';\n\n  if (!conversationId) {\n    return null;\n  }\n\n  const clickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    const conversation = getConversationById(searchQueryRes?.data, conversationId);\n    if (!conversation) {\n      return;\n    }\n\n    // document.title = message.title ?? '';\n    navigateWithLastTools(conversation, true, true);\n  };\n\n  return (\n    <div className=\"visible mt-0 flex items-center justify-center gap-1 self-end text-text-secondary lg:justify-start\">\n      <button\n        className=\"ml-0 flex cursor-pointer items-center gap-1.5 rounded-md p-1 text-xs hover:text-text-primary hover:underline\"\n        onClick={clickHandler}\n        title={localize('com_ui_go_to_conversation')}\n      >\n        <Link className=\"icon-sm\" />\n        {message.title}\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/SearchMessage.tsx",
    "content": "import { useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { useAuthContext, useLocalize } from '~/hooks';\nimport type { TMessageProps, TMessageIcon } from '~/common';\nimport MinimalHoverButtons from '~/components/Chat/Messages/MinimalHoverButtons';\nimport Icon from '~/components/Chat/Messages/MessageIcon';\nimport SearchContent from './Content/SearchContent';\nimport SearchButtons from './SearchButtons';\nimport SubRow from './SubRow';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function Message({ message }: Pick<TMessageProps, 'message'>) {\n  const UsernameDisplay = useRecoilValue<boolean>(store.UsernameDisplay);\n  const fontSize = useRecoilValue(store.fontSize);\n  const { user } = useAuthContext();\n  const localize = useLocalize();\n\n  const iconData: TMessageIcon = useMemo(\n    () => ({\n      endpoint: message?.endpoint,\n      model: message?.model,\n      iconURL: message?.iconURL ?? '',\n      isCreatedByUser: message?.isCreatedByUser,\n    }),\n    [message?.model, message?.iconURL, message?.endpoint, message?.isCreatedByUser],\n  );\n\n  if (!message) {\n    return null;\n  }\n\n  const { isCreatedByUser } = message;\n\n  let messageLabel = '';\n  if (isCreatedByUser) {\n    messageLabel = UsernameDisplay\n      ? (user?.name ?? '') || (user?.username ?? '')\n      : localize('com_user_message');\n  } else {\n    messageLabel = message.sender ?? '';\n  }\n\n  return (\n    <>\n      <div className=\"text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent\">\n        <div className=\"m-auto justify-center p-4 py-2 md:gap-6 \">\n          <div className=\"final-completion group mx-auto flex flex-1 gap-3 md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5\">\n            <div className=\"relative flex flex-shrink-0 flex-col items-end\">\n              <div>\n                <div className=\"pt-0.5\">\n                  <div className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n                    <Icon iconData={iconData} />\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div\n              className={cn('relative flex w-11/12 flex-col', isCreatedByUser ? '' : 'agent-turn')}\n            >\n              <div className={cn('select-none font-semibold', fontSize)}>{messageLabel}</div>\n              <div className=\"flex-col gap-1 md:gap-3\">\n                <div className=\"flex max-w-full flex-grow flex-col gap-0\">\n                  <SearchContent message={message} />\n                </div>\n              </div>\n              <SubRow classes=\"text-xs\">\n                <MinimalHoverButtons message={message} />\n                <SearchButtons message={message} />\n              </SubRow>\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/SiblingSwitch.tsx",
    "content": "import type { TMessageProps } from '~/common';\nimport { cn } from '~/utils';\n\ntype TSiblingSwitchProps = Pick<TMessageProps, 'siblingIdx' | 'siblingCount' | 'setSiblingIdx'>;\n\nexport default function SiblingSwitch({\n  siblingIdx,\n  siblingCount,\n  setSiblingIdx,\n}: TSiblingSwitchProps) {\n  if (siblingIdx === undefined) {\n    return null;\n  } else if (siblingCount === undefined) {\n    return null;\n  }\n\n  const previous = () => {\n    setSiblingIdx && setSiblingIdx(siblingIdx - 1);\n  };\n\n  const next = () => {\n    setSiblingIdx && setSiblingIdx(siblingIdx + 1);\n  };\n\n  return siblingCount > 1 ? (\n    <div className=\"visible flex items-center justify-center gap-1 self-center pt-0 text-xs\">\n      <button\n        className={cn(\n          'hover-button rounded-md p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-500 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible',\n        )}\n        type=\"button\"\n        onClick={previous}\n        disabled={siblingIdx == 0}\n      >\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"1.5\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"15 18 9 12 15 6\" />\n        </svg>\n      </button>\n      <span className=\"flex-shrink-0 flex-grow tabular-nums\">\n        {siblingIdx + 1} / {siblingCount}\n      </span>\n      <button\n        className={cn(\n          'hover-button rounded-md p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-500 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible',\n        )}\n        type=\"button\"\n        onClick={next}\n        disabled={siblingIdx == siblingCount - 1}\n      >\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"1.5\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"9 18 15 12 9 6\" />\n        </svg>\n      </button>\n    </div>\n  ) : null;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/SubRow.tsx",
    "content": "import { cn } from '~/utils';\n\ntype TSubRowProps = {\n  children: React.ReactNode;\n  classes?: string;\n  subclasses?: string;\n  onClick?: () => void;\n};\n\nexport default function SubRow({ children, classes = '', onClick }: TSubRowProps) {\n  return (\n    <div\n      className={cn('mt-1 flex justify-start gap-3 empty:hidden lg:flex', classes)}\n      onClick={onClick}\n    >\n      {children}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/ui/MessageRender.tsx",
    "content": "import type { TMessage } from '~/data-provider/data-provider/src';\nimport { memo, useCallback, useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport type { TMessageIcon, TMessageProps } from '~/common';\nimport MessageContent from '~/components/Chat/Messages/Content/MessageContent';\nimport HoverButtons from '~/components/Chat/Messages/HoverButtons';\nimport MessageIcon from '~/components/Chat/Messages/MessageIcon';\nimport SiblingSwitch from '~/components/Chat/Messages/SiblingSwitch';\nimport SubRow from '~/components/Chat/Messages/SubRow';\nimport PlaceholderRow from '~/components/Chat/Messages/ui/PlaceholderRow';\nimport { Plugin } from '~/components/Messages/Content';\nimport { useMessageActions } from '~/hooks';\nimport { MessageContext } from '~/Providers';\nimport store from '~/store';\nimport { cn, logger } from '~/utils';\n\ntype MessageRenderProps = {\n  message?: TMessage;\n  isCard?: boolean;\n  isMultiMessage?: boolean;\n  isSubmittingFamily?: boolean;\n  iconURL?: string;\n} & Pick<\n  TMessageProps,\n  'currentEditId' | 'setCurrentEditId' | 'siblingIdx' | 'setSiblingIdx' | 'siblingCount'\n>;\n\nconst MessageRender = memo(\n  ({\n    isCard,\n    siblingIdx,\n    siblingCount,\n    message: msg,\n    iconURL = '',\n    setSiblingIdx,\n    currentEditId,\n    isMultiMessage,\n    setCurrentEditId,\n    isSubmittingFamily,\n  }: MessageRenderProps) => {\n    const {\n      ask,\n      edit,\n      index,\n      assistant,\n      enterEdit,\n      conversation,\n      messageLabel,\n      isSubmitting,\n      latestMessage,\n      handleContinue,\n      copyToClipboard,\n      setLatestMessage,\n      regenerateMessage,\n    } = useMessageActions({\n      message: msg,\n      currentEditId,\n      isMultiMessage,\n      setCurrentEditId,\n    });\n    const fontSize = useRecoilValue(store.fontSize);\n    const maximizeChatSpace = useRecoilValue(store.maximizeChatSpace);\n    const handleRegenerateMessage = useCallback(() => regenerateMessage(), [regenerateMessage]);\n    const { isCreatedByUser, error, unfinished } = msg ?? {};\n    const hasNoChildren = !(msg?.children?.length ?? 0);\n    const isLast = useMemo(\n      () => hasNoChildren && (msg?.depth === latestMessage?.depth || msg?.depth === -1),\n      [hasNoChildren, msg?.depth, latestMessage?.depth],\n    );\n    const iconData: TMessageIcon = useMemo(\n      () => ({\n        endpoint: msg?.endpoint ?? conversation?.endpoint,\n        model: msg?.model ?? conversation?.model,\n        iconURL: msg?.iconURL ?? conversation?.iconURL ?? iconURL,\n        modelLabel: messageLabel,\n        isCreatedByUser: msg?.isCreatedByUser,\n      }),\n      [\n        messageLabel,\n        conversation?.endpoint,\n        conversation?.iconURL,\n        conversation?.model,\n        msg?.model,\n        msg?.iconURL,\n        msg?.endpoint,\n        msg?.isCreatedByUser,\n        iconURL\n      ],\n    );\n\n    if (!msg) {\n      return null;\n    }\n\n    const isLatestMessage = msg.messageId === latestMessage?.messageId;\n    const showCardRender = isLast && !(isSubmittingFamily === true) && isCard === true;\n    const isLatestCard = isCard === true && !(isSubmittingFamily === true) && isLatestMessage;\n    const clickHandler =\n      showCardRender && !isLatestMessage\n        ? () => {\n          logger.log(`Message Card click: Setting ${msg.messageId} as latest message`);\n          logger.dir(msg);\n          setLatestMessage(msg);\n        }\n        : undefined;\n\n    // Style classes\n    const baseClasses =\n      'final-completion group mx-auto flex flex-1 gap-3 transition-all duration-300 transform-gpu';\n    let layoutClasses = '';\n\n    if (isCard ?? false) {\n      layoutClasses =\n        'relative w-full gap-1 rounded-lg border border-border-medium bg-surface-primary-alt p-2 md:w-1/2 md:gap-3 md:p-4';\n    } else if (maximizeChatSpace) {\n      layoutClasses = 'md:max-w-full md:px-5';\n    } else {\n      layoutClasses = 'md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5';\n    }\n\n    const latestCardClasses = isLatestCard ? 'bg-surface-secondary' : '';\n    const showRenderClasses = showCardRender ? 'cursor-pointer transition-colors duration-300' : '';\n\n\n    return (\n      <div\n        id={msg.messageId}\n        aria-label={`message-${msg.depth}-${msg.messageId}`}\n        className={cn(\n          baseClasses,\n          layoutClasses,\n          latestCardClasses,\n          showRenderClasses,\n          'message-render focus:outline-none focus:ring-2 focus:ring-border-xheavy',\n        )}\n        onClick={clickHandler}\n        onKeyDown={(e) => {\n          if ((e.key === 'Enter' || e.key === ' ') && clickHandler) {\n            clickHandler();\n          }\n        }}\n        role={showCardRender ? 'button' : undefined}\n        tabIndex={showCardRender ? 0 : undefined}\n      >\n        {isLatestCard === true && (\n          <div className=\"absolute right-0 top-0 m-2 h-3 w-3 rounded-full bg-text-primary\"></div>\n        )}\n        {/* 消息头像 */}\n        <div className=\"relative flex flex-shrink-0 flex-col items-end\">\n          <div>\n            <div className=\"pt-0.5\">\n              <div className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n                <MessageIcon iconData={iconData} name={messageLabel} assistant={assistant} />\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className={cn(\n            'relative flex w-11/12 flex-col',\n            msg.isCreatedByUser === true ? '' : 'agent-turn',\n          )}\n        >\n          {/* name */}\n          <h2 className={cn('rc-name select-none font-semibold', fontSize)}>{messageLabel}</h2>\n          <div className=\"flex-col gap-1 md:gap-3\">\n            <div className=\"flex max-w-full flex-grow flex-col gap-0\">\n              <MessageContext.Provider\n                value={{\n                  messageId: msg.messageId,\n                  conversationId: conversation?.conversationId,\n                }}\n              >\n                {msg.plugin && <Plugin plugin={msg.plugin} />}\n                <MessageContent\n                  ask={ask}\n                  edit={edit}\n                  isLast={isLast}\n                  text={msg.text || ''}\n                  message={msg}\n                  enterEdit={enterEdit}\n                  error={!!(error ?? false)}\n                  isSubmitting={isSubmitting}\n                  unfinished={unfinished ?? false}\n                  isCreatedByUser={isCreatedByUser ?? true}\n                  siblingIdx={siblingIdx ?? 0}\n                  setSiblingIdx={setSiblingIdx ?? (() => ({}))}\n                />\n              </MessageContext.Provider>\n            </div>\n          </div>\n          {hasNoChildren && (isSubmittingFamily === true || isSubmitting) ? (\n            // null\n            <PlaceholderRow isCard={isCard} />\n          ) : (\n            <SubRow classes=\"text-xs\">\n              {/* 分支 */}\n              <SiblingSwitch\n                siblingIdx={siblingIdx}\n                siblingCount={siblingCount}\n                setSiblingIdx={setSiblingIdx}\n              />\n              {/* 操作按钮 */}\n              <HoverButtons\n                index={index}\n                isEditing={edit}\n                message={msg}\n                enterEdit={enterEdit}\n                isSubmitting={isSubmitting}\n                conversation={conversation ?? null}\n                regenerate={handleRegenerateMessage}\n                copyToClipboard={copyToClipboard}\n                handleContinue={handleContinue}\n                latestMessage={latestMessage}\n                isLast={isLast}\n              />\n            </SubRow>\n          )}\n        </div>\n      </div>\n    );\n  },\n);\n\nexport default MessageRender;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Messages/ui/PlaceholderRow.tsx",
    "content": "import { memo } from 'react';\n\nconst PlaceholderRow = memo(({ isCard }: { isCard?: boolean }) => {\n  if (!isCard) {\n    return null;\n  }\n  return <div className=\"mt-1 h-[27px] bg-transparent\" />;\n});\n\nexport default PlaceholderRow;\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Presentation.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useEffect, useMemo } from 'react';\nimport { FileSources, LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport { useDeleteFilesMutation } from '~/data-provider';\nimport DragDropWrapper from '~/components/Chat/Input/Files/DragDropWrapper';\nimport Artifacts from '~/components/Artifacts/Artifacts';\nimport { SidePanelGroup } from '~/components/SidePanel';\nimport { useSetFilesToDelete } from '~/hooks';\nimport { EditorProvider } from '~/Providers';\nimport store from '~/store';\n\nexport default function Presentation({ isLingsi, children }: { isLingsi: boolean, children: React.ReactNode }) {\n  const artifacts = useRecoilValue(store.artifactsState);\n  const artifactsVisible = useRecoilValue(store.artifactsVisible);\n\n  const setFilesToDelete = useSetFilesToDelete();\n\n  const { mutateAsync } = useDeleteFilesMutation({\n    onSuccess: () => {\n      console.log('Temporary Files deleted');\n      setFilesToDelete({});\n    },\n    onError: (error) => {\n      console.log('Error deleting temporary files:', error);\n    },\n  });\n\n  useEffect(() => {\n    const filesToDelete = localStorage.getItem(LocalStorageKeys.FILES_TO_DELETE);\n    const map = JSON.parse(filesToDelete ?? '{}') as Record<string, ExtendedFile>;\n    const files = Object.values(map)\n      .filter(\n        (file) =>\n          file.filepath != null && file.source && !(file.embedded ?? false) && file.temp_file_id,\n      )\n      .map((file) => ({\n        file_id: file.file_id,\n        filepath: file.filepath as string,\n        source: file.source as FileSources,\n        embedded: !!(file.embedded ?? false),\n      }));\n\n    if (files.length === 0) {\n      return;\n    }\n    mutateAsync({ files });\n  }, [mutateAsync]);\n\n  const defaultLayout = useMemo(() => {\n    const resizableLayout = localStorage.getItem('react-resizable-panels:layout');\n    return typeof resizableLayout === 'string' ? JSON.parse(resizableLayout) : undefined;\n  }, []);\n  const defaultCollapsed = useMemo(() => {\n    const collapsedPanels = localStorage.getItem('react-resizable-panels:collapsed');\n    return typeof collapsedPanels === 'string' ? JSON.parse(collapsedPanels) : true;\n  }, []);\n  const fullCollapse = useMemo(() => localStorage.getItem('fullPanelCollapse') === 'true', []);\n\n  const layout = () => (\n    <div className=\"transition-width relative flex h-full w-full flex-1 flex-col items-stretch overflow-hidden bg-presentation pt-0\">\n      <div className=\"flex h-full flex-col\" role=\"presentation\">\n        {children}\n      </div>\n    </div>\n  );\n\n  return (\n    <DragDropWrapper isLingsi={isLingsi} className=\"relative flex w-full grow overflow-hidden bg-presentation\">\n      <SidePanelGroup\n        defaultLayout={defaultLayout}\n        fullPanelCollapse={fullCollapse}\n        defaultCollapsed={defaultCollapsed}\n        artifacts={\n          artifactsVisible === true && Object.keys(artifacts ?? {}).length > 0 ? (\n            <EditorProvider>\n              <Artifacts />\n            </EditorProvider>\n          ) : null\n        }\n      >\n        <main className=\"flex h-full flex-col overflow-y-auto\" role=\"main\">\n          {children}\n        </main>\n      </SidePanelGroup>\n    </DragDropWrapper>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/PromptCard.tsx",
    "content": "import { TPromptGroup } from '~/data-provider/data-provider/src';\nimport CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';\n\nexport default function PromptCard({ promptGroup }: { promptGroup?: TPromptGroup }) {\n  return (\n    <div className=\"hover:bg-token-main-surface-secondary relative flex w-40 cursor-pointer flex-col gap-2 rounded-2xl border px-3 pb-4 pt-3 text-start align-top text-[15px] shadow-[0_0_2px_0_rgba(0,0,0,0.05),0_4px_6px_0_rgba(0,0,0,0.02)] transition-colors duration-300 ease-in-out fade-in hover:bg-slate-100 dark:border-gray-600 dark:hover:bg-gray-700\">\n      <div className=\"\">\n        <CategoryIcon className=\"size-4\" category={promptGroup?.category ?? ''} />\n      </div>\n      <p className=\"break-word line-clamp-3 text-balance text-gray-600 dark:text-gray-400\">\n        {(promptGroup?.oneliner ?? '') || promptGroup?.productionPrompt?.prompt}\n      </p>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/Prompts.tsx",
    "content": "import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { usePromptGroupsNav } from '~/hooks';\nimport PromptCard from './PromptCard';\nimport { Button } from '../ui';\n\nexport default function Prompts() {\n  const { prevPage, nextPage, hasNextPage, promptGroups, hasPreviousPage, setPageSize, pageSize } =\n    usePromptGroupsNav();\n\n  const renderPromptCards = (start = 0, count) => {\n    return promptGroups\n      .slice(start, count + start)\n      .map((promptGroup) => <PromptCard key={promptGroup._id} promptGroup={promptGroup} />);\n  };\n\n  const getRows = () => {\n    switch (pageSize) {\n      case 4:\n        return [4];\n      case 8:\n        return [4, 4];\n      case 12:\n        return [4, 4, 4];\n      default:\n        return [];\n    }\n  };\n\n  const rows = getRows();\n\n  return (\n    <div className=\"mx-3 flex h-full max-w-3xl flex-col items-stretch justify-center gap-4\">\n      <div className=\"mt-2 flex justify-end gap-2\">\n        <Button\n          variant={'ghost'}\n          onClick={() => setPageSize(4)}\n          className={`rounded px-3 py-2 hover:bg-transparent ${\n            pageSize === 4 ? 'text-white' : 'text-gray-500 dark:text-gray-500'\n          }`}\n        >\n          4\n        </Button>\n        <Button\n          variant={'ghost'}\n          onClick={() => setPageSize(8)}\n          className={`rounded px-3 py-2 hover:bg-transparent ${\n            pageSize === 8 ? 'text-white' : 'text-gray-500 dark:text-gray-500'\n          }`}\n        >\n          8\n        </Button>\n        <Button\n          variant={'ghost'}\n          onClick={() => setPageSize(12)}\n          className={`rounded p-2 hover:bg-transparent ${\n            pageSize === 12 ? 'text-white' : 'text-gray-500 dark:text-gray-500'\n          }`}\n        >\n          12\n        </Button>\n      </div>\n      <div className=\"flex h-full flex-col items-start gap-2\">\n        <div\n          className={\n            'flex min-h-[121.1px] min-w-full max-w-3xl flex-col gap-4 overflow-y-auto md:min-w-[22rem] lg:min-w-[43rem]'\n          }\n        >\n          {rows.map((rowSize, index) => (\n            <div key={index} className=\"flex flex-wrap justify-center gap-4\">\n              {renderPromptCards(rowSize * index, rowSize)}\n            </div>\n          ))}\n        </div>\n        <div className=\"flex w-full justify-between\">\n          <Button\n            variant={'ghost'}\n            onClick={prevPage}\n            disabled={!hasPreviousPage}\n            className=\"m-0 self-start p-0 hover:bg-transparent\"\n            aria-label=\"previous\"\n          >\n            <ChevronLeft className={`${hasPreviousPage ? '' : 'text-gray-500'}`} />\n          </Button>\n          <Button\n            variant={'ghost'}\n            onClick={nextPage}\n            disabled={!hasNextPage}\n            className=\"m-0 self-end p-0 hover:bg-transparent\"\n          >\n            <ChevronRight className={`${hasNextPage ? '' : 'text-gray-500'}`} />\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Chat/SegmentSelector.tsx",
    "content": "import { useLocalize } from '~/hooks';\n\nconst SegmentSelector = ({ lingsi, onChange }) => {\n    const localize = useLocalize();\n\n    return (\n        <div className=\"w-full\">\n            {/* 选项卡容器 */}\n            <div className=\"p-1 rounded-full border flex\">\n                <button\n                    className={`flex-1 py-1.5 px-8 rounded-full text-sm break-keep transition-all ${!lingsi\n                        ? 'bg-blue-50 shadow-sm'\n                        : '0'\n                        }`}\n                    onClick={() => onChange(false)}\n                >\n                    {localize('com_segment_daily_mode')}\n                </button>\n                <button\n                    className={`flex-1 py-1.5 px-8 rounded-full text-sm break-keep transition-all ${lingsi\n                        ? 'bg-blue-50 shadow-sm'\n                        : ''\n                        }`}\n                    onClick={() => onChange(true)}\n                >\n                    <div className='flex items-center justify-center relative'>\n                        {lingsi && <img src={__APP_ENV__.BASE_URL + \"/assets/lingsi.svg\"} className='size-4 block' alt=\"\" />}\n                        <span className={lingsi ? 'lingsi-text ml-2' : ''}>{localize('com_segment_linsight')}</span>\n                    </div>\n                </button>\n            </div>\n        </div >\n    );\n};\n\nexport default SegmentSelector;"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/Conversations.tsx",
    "content": "import { useMemo, memo } from 'react';\nimport { parseISO, isToday } from 'date-fns';\nimport { TConversation } from '~/data-provider/data-provider/src';\nimport { useLocalize, TranslationKeys } from '~/hooks';\nimport { groupConversationsByDate } from '~/utils';\nimport Convo from './Convo';\n\nconst Conversations = ({\n  conversations,\n  moveToTop,\n  toggleNav,\n}: {\n  conversations: Array<TConversation | null>;\n  moveToTop: () => void;\n  toggleNav: () => void;\n}) => {\n  const localize = useLocalize();\n  const groupedConversations = useMemo(\n    () => groupConversationsByDate(conversations),\n    [conversations],\n  );\n  const firstTodayConvoId = useMemo(\n    () =>\n      conversations.find((convo) => convo && convo.updatedAt && isToday(parseISO(convo.updatedAt)))\n        ?.conversationId,\n    [conversations],\n  );\n\n  return (\n    <div className=\"text-token-text-primary flex flex-col gap-2 pb-2 text-sm\">\n      <div>\n        <span>\n          {groupedConversations.map(([groupName, convos]) => (\n            <div key={groupName}>\n              <div\n                className=\"text-text-secondary\"\n                style={{\n                  fontSize: '0.7rem',\n                  marginTop: '20px',\n                  marginBottom: '5px',\n                  paddingLeft: '10px',\n                }}\n              >\n                {/* time */}\n                {localize(groupName as TranslationKeys) || groupName}\n              </div>\n              {convos.map((convo, i) => (\n                <Convo\n                  key={`${groupName}-${convo.conversationId}-${i}`}\n                  isLatestConvo={convo.conversationId === firstTodayConvoId}\n                  conversation={convo}\n                  retainView={moveToTop}\n                  toggleNav={toggleNav}\n                />\n              ))}\n              <div\n                style={{\n                  marginTop: '5px',\n                  marginBottom: '5px',\n                }}\n              />\n            </div>\n          ))}\n        </span>\n      </div>\n    </div>\n  );\n};\n\nexport default memo(Conversations);\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/Convo.tsx",
    "content": "import { Check, X } from \"lucide-react\";\nimport type { FocusEvent, KeyboardEvent, MouseEvent } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { useRecoilValue } from \"recoil\";\nimport { NotificationSeverity } from \"~/common\";\nimport {\n  useGetEndpointsQuery,\n  useUpdateConversationMutation,\n} from \"~/data-provider\";\nimport type { TConversation } from \"~/data-provider/data-provider/src\";\nimport { Constants } from \"~/data-provider/data-provider/src\";\nimport { useLocalize, useMediaQuery, useNavigateToConvo } from \"~/hooks\";\nimport { useToastContext } from \"~/Providers\";\nimport store from \"~/store\";\nimport { cn } from \"~/utils\";\nimport { ConvoOptions } from \"./ConvoOptions\";\n\ntype KeyEvent = KeyboardEvent<HTMLInputElement>;\n\ntype ConversationProps = {\n  conversation: TConversation;\n  retainView: () => void;\n  toggleNav: () => void;\n  isLatestConvo: boolean;\n};\n\nexport default function Conversation({\n  conversation,\n  retainView,\n  toggleNav,\n  isLatestConvo,\n}: ConversationProps) {\n  const params = useParams();\n\n  const currentConvoId = useMemo(\n    () => params.conversationId,\n    [params.conversationId]\n  );\n  const updateConvoMutation = useUpdateConversationMutation(\n    currentConvoId ?? \"\"\n  );\n  const activeConvos = useRecoilValue(store.allConversationsSelector);\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const { navigateWithLastTools } = useNavigateToConvo();\n  const { showToast } = useToastContext();\n  const { conversationId, title } = conversation;\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const [titleInput, setTitleInput] = useState(title);\n  const [renaming, setRenaming] = useState(false);\n  const [isPopoverActive, setIsPopoverActive] = useState(false);\n  const isSmallScreen = useMediaQuery(\"(max-width: 768px)\");\n  const localize = useLocalize();\n  const navigate = useNavigate();\n\n  const clickHandler = async (event: MouseEvent<HTMLAnchorElement>) => {\n    if (event.button === 0 && (event.ctrlKey || event.metaKey)) {\n      toggleNav();\n      return;\n    }\n\n    event.preventDefault();\n\n    if (currentConvoId === conversationId || isPopoverActive) {\n      return;\n    }\n\n    toggleNav();\n\n    // set document title\n    if (typeof title === \"string\" && title.length > 0) {\n      // document.title = title;\n    }\n\n    /* Note: Latest Message should not be reset if existing convo */\n    navigateWithLastTools(\n      conversation,\n      !(conversationId ?? \"\") || conversationId === Constants.NEW_CONVO\n    );\n  };\n\n  const renameHandler = useCallback(() => {\n    setIsPopoverActive(false);\n    setTitleInput(title);\n    setRenaming(true);\n  }, [title]);\n\n  useEffect(() => {\n    if (renaming && inputRef.current) {\n      inputRef.current.focus();\n    }\n  }, [renaming]);\n\n  const onRename = useCallback(\n    (\n      e: MouseEvent<HTMLButtonElement> | FocusEvent<HTMLInputElement> | KeyEvent\n    ) => {\n      e.preventDefault();\n      setRenaming(false);\n      if (titleInput === title) {\n        return;\n      }\n      if (typeof conversationId !== \"string\" || conversationId === \"\") {\n        return;\n      }\n\n      updateConvoMutation.mutate(\n        {\n          conversationId,\n          title: titleInput ?? \"\",\n          flowId: conversation.flowId,\n          flowType: conversation.flowType,\n        },\n        {\n          onError: () => {\n            setTitleInput(title);\n            showToast({\n              message: \"Failed to rename conversation\",\n              severity: NotificationSeverity.ERROR,\n              showIcon: true,\n            });\n          },\n        }\n      );\n    },\n    [\n      title,\n      titleInput,\n      conversationId,\n      showToast,\n      conversation,\n      updateConvoMutation,\n    ]\n  );\n\n  const handleKeyDown = useCallback(\n    (e: KeyEvent) => {\n      if (e.key === \"Escape\") {\n        setTitleInput(title);\n        setRenaming(false);\n      } else if (e.key === \"Enter\") {\n        onRename(e);\n      }\n    },\n    [title, onRename]\n  );\n\n  const cancelRename = useCallback(\n    (e: MouseEvent<HTMLButtonElement>) => {\n      e.preventDefault();\n      setTitleInput(title);\n      setRenaming(false);\n    },\n    [title]\n  );\n\n  const isActiveConvo: boolean = useMemo(\n    () =>\n      currentConvoId === conversationId ||\n      (isLatestConvo &&\n        currentConvoId === \"new\" &&\n        activeConvos[0] != null &&\n        activeConvos[0] !== \"new\"),\n    [currentConvoId, conversationId, isLatestConvo, activeConvos]\n  );\n\n  return (\n    <div\n      className={cn(\n        \"group relative mt-2 flex h-10 w-full items-center rounded-lg hover:bg-[#EBEFF8]\",\n        isActiveConvo ? \"bg-[#EBEFF8]\" : \"\",\n        isSmallScreen ? \"h-12\" : \"\"\n      )}\n    >\n      {renaming ? (\n        <div className=\"absolute inset-0 z-20 flex w-full items-center rounded-lg bg-[#EBEFF8] p-1.5\">\n          <input\n            ref={inputRef}\n            type=\"text\"\n            className=\"w-full rounded bg-transparent p-0.5 text-sm leading-tight focus-visible:outline-none\"\n            value={titleInput ?? \"\"}\n            onChange={(e) => setTitleInput(e.target.value)}\n            onKeyDown={handleKeyDown}\n            aria-label={`${localize(\"com_ui_rename\")} ${localize(\n              \"com_ui_chat\"\n            )}`}\n          />\n          <div className=\"flex gap-1\">\n            <button\n              onClick={cancelRename}\n              aria-label={`${localize(\"com_ui_cancel\")} ${localize(\n                \"com_ui_rename\"\n              )}`}\n            >\n              <X\n                aria-hidden={true}\n                className=\"h-4 w-4 transition-colors duration-200 ease-in-out hover:opacity-70\"\n              />\n            </button>\n            <button\n              onClick={onRename}\n              aria-label={`${localize(\"com_ui_submit\")} ${localize(\n                \"com_ui_rename\"\n              )}`}\n            >\n              <Check\n                aria-hidden={true}\n                className=\"h-4 w-4 transition-colors duration-200 ease-in-out hover:opacity-70\"\n              />\n            </button>\n          </div>\n        </div>\n      ) : (\n        <a\n          // 切换会话\n          // href={`/c/${conversationId}`}\n          data-testid=\"convo-item\"\n          onClick={clickHandler}\n          className={cn(\n            \"flex grow cursor-pointer items-center gap-2 overflow-hidden whitespace-nowrap break-all rounded-lg px-2 py-2\",\n            isActiveConvo ? \"bg-[#EBEFF8]\" : \"\"\n          )}\n          title={title ?? \"\"}\n        >\n          {/* <EndpointIcon\n            conversation={conversation}\n            endpointsConfig={endpointsConfig}\n            size={20}\n            context=\"menu-item\"\n          /> */}\n          <div\n            className=\"relative line-clamp-1 flex-1 grow overflow-hidden\"\n            onDoubleClick={(e) => {\n              e.preventDefault();\n              e.stopPropagation();\n              setTitleInput(title);\n              setRenaming(true);\n            }}\n            alt={conversation?.flowType}\n          >\n            <img\n              src={\n                __APP_ENV__.BASE_URL +\n                (conversation?.flowType === 20\n                  ? \"/assets/linsi.png\"\n                  : \"/assets/talk.png\")\n              }\n              className=\"size-6 inline-block mr-2.5\"\n              alt=\"\"\n            />\n            {title}\n          </div>\n          {isActiveConvo ? (\n            <div className=\"absolute bottom-0 right-0 top-0 w-20 rounded-r-lg bg-gradient-to-l\" />\n          ) : (\n            <div className=\"absolute bottom-0 right-0 top-0 w-20 rounded-r-lg bg-gradient-to-l \" />\n          )}\n        </a>\n      )}\n      <div\n        className={cn(\n          \"mr-2\",\n          isPopoverActive || isActiveConvo\n            ? \"flex\"\n            : \"hidden group-focus-within:flex group-hover:flex\"\n        )}\n      >\n        {!renaming && (\n          <ConvoOptions\n            title={title}\n            retainView={retainView}\n            renameHandler={renameHandler}\n            isActiveConvo={isActiveConvo}\n            conversationId={conversationId}\n            isPopoverActive={isPopoverActive}\n            setIsPopoverActive={setIsPopoverActive}\n          />\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ConvoOptions/ConvoOptions.tsx",
    "content": "import { useState, useId, useRef, memo } from 'react';\nimport * as Menu from '@ariakit/react/menu';\nimport { Ellipsis, Share2, Copy, Archive, Pen, Trash } from 'lucide-react';\nimport type { MouseEvent } from 'react';\nimport type * as t from '~/common';\nimport { useDuplicateConversationMutation, useGetStartupConfig } from '~/data-provider';\nimport { useLocalize, useArchiveHandler, useNavigateToConvo } from '~/hooks';\nimport { useToastContext, useChatContext } from '~/Providers';\nimport { DropdownPopup } from '~/components/ui';\nimport DeleteButton from './DeleteButton';\nimport ShareButton from './ShareButton';\nimport { cn } from '~/utils';\n\nfunction ConvoOptions({\n  conversationId,\n  title,\n  retainView,\n  renameHandler,\n  isPopoverActive,\n  setIsPopoverActive,\n  isActiveConvo,\n}: {\n  conversationId: string | null;\n  title: string | null;\n  retainView: () => void;\n  renameHandler: (e: MouseEvent) => void;\n  isPopoverActive: boolean;\n  setIsPopoverActive: React.Dispatch<React.SetStateAction<boolean>>;\n  isActiveConvo: boolean;\n}) {\n  const localize = useLocalize();\n  const { index } = useChatContext();\n  const { data: startupConfig } = useGetStartupConfig();\n  const archiveHandler = useArchiveHandler(conversationId, true, retainView);\n  const { navigateToConvo } = useNavigateToConvo(index);\n  const { showToast } = useToastContext();\n  const shareButtonRef = useRef<HTMLButtonElement>(null);\n  const deleteButtonRef = useRef<HTMLButtonElement>(null);\n  const [showShareDialog, setShowShareDialog] = useState(false);\n  const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n  const duplicateConversation = useDuplicateConversationMutation({\n    onSuccess: (data) => {\n      navigateToConvo(data.conversation);\n      showToast({\n        message: localize('com_ui_duplication_success'),\n        status: 'success',\n      });\n    },\n    onMutate: () => {\n      showToast({\n        message: localize('com_ui_duplication_processing'),\n        status: 'info',\n      });\n    },\n    onError: () => {\n      showToast({\n        message: localize('com_ui_duplication_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const shareHandler = () => {\n    setShowShareDialog(true);\n  };\n\n  const deleteHandler = () => {\n    setShowDeleteDialog(true);\n  };\n\n  const duplicateHandler = () => {\n    setIsPopoverActive(false);\n    duplicateConversation.mutate({\n      conversationId: conversationId ?? '',\n    });\n  };\n\n  const dropdownItems: t.MenuItemProps[] = [\n    // {\n    //   label: localize('com_ui_share'),\n    //   onClick: shareHandler,\n    //   icon: <Share2 className=\"icon-sm mr-2 text-text-primary\" />,\n    //   show: startupConfig && startupConfig.sharedLinksEnabled,\n    //   /** NOTE: THE FOLLOWING PROPS ARE REQUIRED FOR MENU ITEMS THAT OPEN DIALOGS */\n    //   hideOnClick: false,\n    //   ref: shareButtonRef,\n    //   render: (props) => <button {...props} />,\n    // },\n    {\n      label: localize('com_ui_rename'),\n      onClick: renameHandler,\n      icon: <Pen className=\"icon-sm mr-2 text-text-primary\" />,\n    },\n    // 隐藏复制会话\n    // {\n    //   label: localize('com_ui_duplicate'),\n    //   onClick: duplicateHandler,\n    //   icon: <Copy className=\"icon-sm mr-2 text-text-primary\" />,\n    // },\n    // {\n    //   label: localize('com_ui_archive'),\n    //   onClick: archiveHandler,\n    //   icon: <Archive className=\"icon-sm mr-2 text-text-primary\" />,\n    // },\n    {\n      label: localize('com_ui_delete'),\n      onClick: deleteHandler,\n      icon: <Trash className=\"icon-sm mr-2 text-text-primary\" />,\n      hideOnClick: false,\n      ref: deleteButtonRef,\n      render: (props) => <button {...props} />,\n    },\n  ];\n\n  const menuId = useId();\n\n  return (\n    <>\n      <DropdownPopup\n        isOpen={isPopoverActive}\n        setIsOpen={setIsPopoverActive}\n        trigger={\n          <Menu.MenuButton\n            id={`conversation-menu-${conversationId}`}\n            aria-label={localize('com_nav_convo_menu_options')}\n            className={cn(\n              'z-30 inline-flex h-7 w-7 items-center justify-center gap-2 rounded-md border-none p-0 text-sm font-medium ring-ring-primary transition-all duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n              isActiveConvo === true\n                ? 'opacity-100'\n                : 'opacity-0 focus:opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 data-[open]:opacity-100',\n            )}\n          >\n            <Ellipsis className=\"icon-md text-text-secondary\" aria-hidden={true} />\n          </Menu.MenuButton>\n        }\n        items={dropdownItems}\n        menuId={menuId}\n      />\n      {showShareDialog && (\n        <ShareButton\n          conversationId={conversationId ?? ''}\n          open={showShareDialog}\n          onOpenChange={setShowShareDialog}\n          triggerRef={shareButtonRef}\n        />\n      )}\n      {showDeleteDialog && (\n        <DeleteButton\n          title={title ?? ''}\n          retainView={retainView}\n          conversationId={conversationId ?? ''}\n          showDeleteDialog={showDeleteDialog}\n          setShowDeleteDialog={setShowDeleteDialog}\n          triggerRef={deleteButtonRef}\n        />\n      )}\n    </>\n  );\n}\n\nexport default memo(ConvoOptions);\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ConvoOptions/DeleteButton.tsx",
    "content": "import React, { useCallback } from 'react';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useDeleteConversationMutation } from '~/data-provider';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useNewConvo } from '~/hooks';\nimport { OGDialog, Label } from '~/components';\n\ntype DeleteButtonProps = {\n  conversationId: string;\n  retainView: () => void;\n  title: string;\n  showDeleteDialog?: boolean;\n  setShowDeleteDialog?: (value: boolean) => void;\n  triggerRef?: React.RefObject<HTMLButtonElement>;\n};\n\nexport function DeleteConversationDialog({\n  conversationId,\n  retainView,\n  title,\n}: {\n  conversationId: string;\n  retainView: () => void;\n  title: string;\n}) {\n  const localize = useLocalize();\n  const navigate = useNavigate();\n  const queryClient = useQueryClient();\n  const { newConversation } = useNewConvo();\n  const { conversationId: currentConvoId } = useParams();\n\n  const deleteConvoMutation = useDeleteConversationMutation({\n    onSuccess: () => {\n      if (currentConvoId === conversationId || currentConvoId === 'new') {\n        newConversation();\n        navigate('/c/new', { replace: true });\n      }\n      retainView();\n    },\n  });\n\n  const confirmDelete = useCallback(() => {\n    const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, conversationId]);\n    const thread_id = messages?.[messages.length - 1]?.thread_id;\n    const endpoint = messages?.[messages.length - 1]?.endpoint;\n\n    deleteConvoMutation.mutate({ conversationId, thread_id, endpoint, source: 'button' });\n  }, [conversationId, deleteConvoMutation, queryClient]);\n\n  return (\n    <OGDialogTemplate\n      showCloseButton={false}\n      title={localize('com_ui_delete_conversation')}\n      className=\"max-w-[450px]\"\n      main={\n        <>\n          <div className=\"flex w-full flex-col items-center gap-2\">\n            <div className=\"grid w-full items-center gap-2\">\n              <Label htmlFor=\"dialog-confirm-delete\" className=\"text-left text-sm font-medium\">\n                {localize('com_ui_delete_confirm')} <strong>{title}</strong>\n              </Label>\n            </div>\n          </div>\n        </>\n      }\n      selection={{\n        selectHandler: confirmDelete,\n        selectClasses:\n          'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 text-white',\n        selectText: localize('com_ui_delete'),\n      }}\n    />\n  );\n}\n\nexport default function DeleteButton({\n  conversationId,\n  retainView,\n  title,\n  showDeleteDialog,\n  setShowDeleteDialog,\n  triggerRef,\n}: DeleteButtonProps) {\n  if (showDeleteDialog === undefined && setShowDeleteDialog === undefined) {\n    return null;\n  }\n\n  if (!conversationId) {\n    return null;\n  }\n\n  return (\n    <OGDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog} triggerRef={triggerRef}>\n      <DeleteConversationDialog\n        conversationId={conversationId}\n        retainView={retainView}\n        title={title}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ConvoOptions/ShareButton.tsx",
    "content": "import React, { useState, useEffect } from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\nimport { Copy, CopyCheck } from 'lucide-react';\nimport { useGetSharedLinkQuery } from '~/data-provider/data-provider/src/react-query';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useCopyToClipboard } from '~/hooks';\nimport { Button, Spinner, OGDialog } from '~/components';\nimport SharedLinkButton from './SharedLinkButton';\nimport { cn } from '~/utils';\n\nexport default function ShareButton({\n  conversationId,\n  open,\n  onOpenChange,\n  triggerRef,\n  children,\n}: {\n  conversationId: string;\n  open: boolean;\n  onOpenChange: React.Dispatch<React.SetStateAction<boolean>>;\n  triggerRef?: React.RefObject<HTMLButtonElement>;\n  children?: React.ReactNode;\n}) {\n  const localize = useLocalize();\n  const [showQR, setShowQR] = useState(false);\n  const [sharedLink, setSharedLink] = useState('');\n  const [isCopying, setIsCopying] = useState(false);\n  const { data: share, isLoading } = useGetSharedLinkQuery(conversationId);\n  const copyLink = useCopyToClipboard({ text: sharedLink });\n\n  useEffect(() => {\n    if (share?.shareId !== undefined) {\n      const link = `${window.location.protocol}//${window.location.host}/share/${share.shareId}`;\n      setSharedLink(link);\n    }\n  }, [share]);\n\n  const button =\n    isLoading === true ? null : (\n      <SharedLinkButton\n        share={share}\n        conversationId={conversationId}\n        setShareDialogOpen={onOpenChange}\n        showQR={showQR}\n        setShowQR={setShowQR}\n        setSharedLink={setSharedLink}\n      />\n    );\n\n  const shareId = share?.shareId ?? '';\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange} triggerRef={triggerRef}>\n      {children}\n      <OGDialogTemplate\n        buttons={button}\n        showCloseButton={true}\n        showCancelButton={false}\n        title={localize('com_ui_share_link_to_chat')}\n        className=\"max-w-[550px]\"\n        main={\n          <div>\n            <div className=\"h-full py-2 text-text-primary\">\n              {(() => {\n                if (isLoading === true) {\n                  return <Spinner className=\"m-auto h-14 animate-spin\" />;\n                }\n\n                return share?.success === true\n                  ? localize('com_ui_share_update_message')\n                  : localize('com_ui_share_create_message');\n              })()}\n            </div>\n            <div className=\"relative items-center rounded-lg p-2\">\n              {showQR && (\n                <div className=\"mb-4 flex flex-col items-center\">\n                  <QRCodeSVG value={sharedLink} size={200} marginSize={2} className=\"rounded-2xl\" />\n                </div>\n              )}\n\n              {shareId && (\n                <div className=\"flex items-center gap-2 rounded-md bg-surface-secondary p-2\">\n                  <div className=\"flex-1 break-all text-sm text-text-secondary\">{sharedLink}</div>\n                  <Button\n                    size=\"sm\"\n                    variant=\"outline\"\n                    onClick={() => {\n                      if (isCopying) {\n                        return;\n                      }\n                      copyLink(setIsCopying);\n                    }}\n                    className={cn('shrink-0', isCopying ? 'cursor-default' : '')}\n                  >\n                    {isCopying ? <CopyCheck className=\"size-4\" /> : <Copy className=\"size-4\" />}\n                  </Button>\n                </div>\n              )}\n            </div>\n          </div>\n        }\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ConvoOptions/SharedLinkButton.tsx",
    "content": "import { useState, useCallback } from 'react';\nimport { QrCode, RotateCw, Trash2 } from 'lucide-react';\nimport type { TSharedLinkGetResponse } from '~/data-provider/data-provider/src';\nimport {\n  useCreateSharedLinkMutation,\n  useUpdateSharedLinkMutation,\n  useDeleteSharedLinkMutation,\n} from '~/data-provider';\nimport { Button, OGDialog, Spinner, TooltipAnchor, Label } from '~/components';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\nexport default function SharedLinkButton({\n  share,\n  conversationId,\n  setShareDialogOpen,\n  showQR,\n  setShowQR,\n  setSharedLink,\n}: {\n  share: TSharedLinkGetResponse | undefined;\n  conversationId: string;\n  setShareDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n  showQR: boolean;\n  setShowQR: (showQR: boolean) => void;\n  setSharedLink: (sharedLink: string) => void;\n}) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n  const shareId = share?.shareId ?? '';\n\n  const { mutateAsync: mutate, isLoading: isCreateLoading } = useCreateSharedLinkMutation({\n    onError: () => {\n      showToast({\n        message: localize('com_ui_share_error'),\n        severity: NotificationSeverity.ERROR,\n        showIcon: true,\n      });\n    },\n  });\n\n  const { mutateAsync, isLoading: isUpdateLoading } = useUpdateSharedLinkMutation({\n    onError: () => {\n      showToast({\n        message: localize('com_ui_share_error'),\n        severity: NotificationSeverity.ERROR,\n        showIcon: true,\n      });\n    },\n  });\n\n  const deleteMutation = useDeleteSharedLinkMutation({\n    onSuccess: async () => {\n      setShowDeleteDialog(false);\n      setShareDialogOpen(false);\n    },\n    onError: (error) => {\n      console.error('Delete error:', error);\n      showToast({\n        message: localize('com_ui_share_delete_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n  });\n\n  const generateShareLink = useCallback((shareId: string) => {\n    return `${window.location.protocol}//${window.location.host}/share/${shareId}`;\n  }, []);\n\n  const updateSharedLink = async () => {\n    if (!shareId) {\n      return;\n    }\n    const updateShare = await mutateAsync({ shareId });\n    const newLink = generateShareLink(updateShare.shareId);\n    setSharedLink(newLink);\n  };\n\n  const createShareLink = async () => {\n    const share = await mutate({ conversationId });\n    const newLink = generateShareLink(share.shareId);\n    setSharedLink(newLink);\n  };\n\n  const handleDelete = async () => {\n    if (!shareId) {\n      return;\n    }\n\n    try {\n      await deleteMutation.mutateAsync({ shareId });\n      showToast({\n        message: localize('com_ui_shared_link_delete_success'),\n        severity: NotificationSeverity.SUCCESS,\n      });\n    } catch (error) {\n      console.error('Failed to delete shared link:', error);\n      showToast({\n        message: localize('com_ui_share_delete_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    }\n  };\n\n  return (\n    <>\n      <div className=\"flex gap-2\">\n        {!shareId && (\n          <Button disabled={isCreateLoading} variant=\"submit\" onClick={createShareLink}>\n            {!isCreateLoading && localize('com_ui_create_link')}\n            {isCreateLoading && <Spinner className=\"size-4\" />}\n          </Button>\n        )}\n        {shareId && (\n          <div className=\"flex items-center gap-2\">\n            <TooltipAnchor\n              description={localize('com_ui_refresh_link')}\n              render={(props) => (\n                <Button\n                  {...props}\n                  onClick={() => updateSharedLink()}\n                  variant=\"outline\"\n                  disabled={isUpdateLoading}\n                >\n                  {isUpdateLoading ? (\n                    <Spinner className=\"size-4\" />\n                  ) : (\n                    <RotateCw className=\"size-4\" />\n                  )}\n                </Button>\n              )}\n            />\n\n            <TooltipAnchor\n              description={showQR ? localize('com_ui_hide_qr') : localize('com_ui_show_qr')}\n              render={(props) => (\n                <Button {...props} onClick={() => setShowQR(!showQR)} variant=\"outline\">\n                  <QrCode className=\"size-4\" />\n                </Button>\n              )}\n            />\n\n            <TooltipAnchor\n              description={localize('com_ui_delete')}\n              render={(props) => (\n                <Button {...props} onClick={() => setShowDeleteDialog(true)} variant=\"destructive\">\n                  <Trash2 className=\"size-4\" />\n                </Button>\n              )}\n            />\n          </div>\n        )}\n        <OGDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n          <OGDialogTemplate\n            showCloseButton={false}\n            title={localize('com_ui_delete_shared_link')}\n            className=\"max-w-[450px]\"\n            main={\n              <>\n                <div className=\"flex w-full flex-col items-center gap-2\">\n                  <div className=\"grid w-full items-center gap-2\">\n                    <Label\n                      htmlFor=\"dialog-confirm-delete\"\n                      className=\"text-left text-sm font-medium\"\n                    >\n                      {localize('com_ui_delete_confirm')} <strong>&quot;{shareId}&quot;</strong>\n                    </Label>\n                  </div>\n                </div>\n              </>\n            }\n            selection={{\n              selectHandler: handleDelete,\n              selectClasses:\n                'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 text-white',\n              selectText: localize('com_ui_delete'),\n            }}\n          />\n        </OGDialog>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ConvoOptions/index.ts",
    "content": "export * from './DeleteButton';\nexport { default as ShareButton } from './ShareButton';\nexport { default as SharedLinkButton } from './SharedLinkButton';\nexport { default as ConvoOptions } from './ConvoOptions';\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/Fork.tsx",
    "content": "import React, { useState, useRef } from 'react';\nimport { useRecoilState } from 'recoil';\nimport { GitFork, InfoIcon } from 'lucide-react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { ForkOptions } from '~/data-provider/data-provider/src';\nimport { GitCommit, GitBranchPlus, ListTree } from 'lucide-react';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardTrigger,\n  HoverCardPortal,\n  HoverCardContent,\n} from '~/components/ui';\nimport OptionHover from '~/components/SidePanel/Parameters/OptionHover';\nimport { TranslationKeys, useLocalize, useNavigateToConvo } from '~/hooks';\nimport { useForkConvoMutation } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\ninterface PopoverButtonProps {\n  children: React.ReactNode;\n  setting: ForkOptions;\n  onClick: (setting: ForkOptions) => void;\n  setActiveSetting: React.Dispatch<React.SetStateAction<TranslationKeys>>;\n  sideOffset?: number;\n  timeoutRef: React.MutableRefObject<NodeJS.Timeout | null>;\n  hoverInfo?: React.ReactNode | string;\n  hoverTitle?: React.ReactNode | string;\n  hoverDescription?: React.ReactNode | string;\n}\n\nconst optionLabels: Record<ForkOptions, TranslationKeys> = {\n  [ForkOptions.DIRECT_PATH]: 'com_ui_fork_visible',\n  [ForkOptions.INCLUDE_BRANCHES]: 'com_ui_fork_branches',\n  [ForkOptions.TARGET_LEVEL]: 'com_ui_fork_all_target',\n  [ForkOptions.DEFAULT]: 'com_ui_fork_from_message',\n};\n\nconst PopoverButton: React.FC<PopoverButtonProps> = ({\n  children,\n  setting,\n  onClick,\n  setActiveSetting,\n  sideOffset = 30,\n  timeoutRef,\n  hoverInfo,\n  hoverTitle,\n  hoverDescription,\n}) => {\n  return (\n    <HoverCard openDelay={200}>\n      <Popover.Close\n        onClick={() => onClick(setting)}\n        onMouseEnter={() => {\n          if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n            timeoutRef.current = null;\n          }\n          setActiveSetting(optionLabels[setting]);\n        }}\n        onMouseLeave={() => {\n          if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n          }\n          timeoutRef.current = setTimeout(() => {\n            setActiveSetting(optionLabels[ForkOptions.DEFAULT]);\n          }, 175);\n        }}\n        className=\"mx-1 max-w-14 flex-1 rounded-lg border-2 bg-white text-gray-700 transition duration-300 ease-in-out hover:bg-gray-200 hover:text-gray-900 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600 dark:hover:text-gray-100\"\n        type=\"button\"\n      >\n        {children}\n      </Popover.Close>\n      {((hoverInfo != null && hoverInfo !== '') ||\n        (hoverTitle != null && hoverTitle !== '') ||\n        (hoverDescription != null && hoverDescription !== '')) && (\n        <HoverCardPortal>\n          <HoverCardContent side=\"right\" className=\"z-[999] w-80 dark:bg-gray-700\" sideOffset={sideOffset}>\n            <div className=\"space-y-2\">\n              <p className=\"flex flex-col gap-2 text-sm text-gray-600 dark:text-gray-300\">\n                {hoverInfo && hoverInfo}\n                {hoverTitle && <span className=\"flex flex-wrap gap-1 font-bold\">{hoverTitle}</span>}\n                {hoverDescription && hoverDescription}\n              </p>\n            </div>\n          </HoverCardContent>\n        </HoverCardPortal>\n      )}\n    </HoverCard>\n  );\n};\n\nexport default function Fork({\n  isLast = false,\n  messageId,\n  conversationId: _convoId,\n  forkingSupported = false,\n  latestMessageId,\n}: {\n  isLast?: boolean;\n  messageId: string;\n  conversationId: string | null;\n  forkingSupported?: boolean;\n  latestMessageId?: string;\n}) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const [remember, setRemember] = useState(false);\n  const { navigateToConvo } = useNavigateToConvo();\n  const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n  const [forkSetting, setForkSetting] = useRecoilState(store.forkSetting);\n  const [activeSetting, setActiveSetting] = useState(optionLabels.default);\n  const [splitAtTarget, setSplitAtTarget] = useRecoilState(store.splitAtTarget);\n  const [rememberGlobal, setRememberGlobal] = useRecoilState(store.rememberDefaultFork);\n  const forkConvo = useForkConvoMutation({\n    onSuccess: (data) => {\n      navigateToConvo(data.conversation);\n      showToast({\n        message: localize('com_ui_fork_success'),\n        status: 'success',\n      });\n    },\n    onMutate: () => {\n      showToast({\n        message: localize('com_ui_fork_processing'),\n        status: 'info',\n      });\n    },\n    onError: () => {\n      showToast({\n        message: localize('com_ui_fork_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const conversationId = _convoId ?? '';\n  if (!forkingSupported || !conversationId || !messageId) {\n    return null;\n  }\n\n  const onClick = (option: string) => {\n    if (remember) {\n      setRememberGlobal(true);\n      setForkSetting(option);\n    }\n\n    forkConvo.mutate({\n      messageId,\n      conversationId,\n      option,\n      splitAtTarget,\n      latestMessageId,\n    });\n  };\n\n  return (\n    <Popover.Root>\n      <Popover.Trigger asChild>\n        <button\n          className={cn(\n            'hover-button active rounded-md p-1 text-gray-500 hover:bg-gray-100 hover:text-gray-500 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:invisible md:group-hover:visible ',\n            'data-[state=open]:active focus:opacity-100 data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500 data-[state=open]:dark:bg-gray-700  data-[state=open]:dark:text-gray-200',\n            !isLast ? 'data-[state=open]:opacity-100 md:opacity-0 md:group-hover:opacity-100' : '',\n          )}\n          onClick={(e) => {\n            if (rememberGlobal) {\n              e.preventDefault();\n              forkConvo.mutate({\n                messageId,\n                splitAtTarget,\n                conversationId,\n                option: forkSetting,\n                latestMessageId,\n              });\n            }\n          }}\n          type=\"button\"\n          title={localize('com_ui_fork')}\n        >\n          <GitFork className=\"h-4 w-4 hover:text-gray-500 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400\" />\n        </button>\n      </Popover.Trigger>\n      <Popover.Portal>\n        <div dir=\"ltr\">\n          <Popover.Content\n            side=\"top\"\n            role=\"menu\"\n            className=\"bg-token-surface-primary flex min-h-[120px] min-w-[215px] flex-col gap-3 overflow-hidden rounded-lg bg-white p-2 px-3 shadow-lg dark:bg-gray-700\"\n            style={{ outline: 'none', pointerEvents: 'auto', boxSizing: 'border-box' }}\n            tabIndex={-1}\n            sideOffset={5}\n            align=\"center\"\n          >\n            <div className=\"flex h-6 w-full items-center justify-center text-sm dark:text-gray-200\">\n              {localize(activeSetting )}\n              <HoverCard openDelay={50}>\n                <HoverCardTrigger asChild>\n                  <InfoIcon className=\"ml-auto flex h-4 w-4 gap-2 text-gray-500 dark:text-white/50\" />\n                </HoverCardTrigger>\n                <HoverCardPortal>\n                  <HoverCardContent\n                    side=\"right\"\n                    className=\"z-[999] w-80 dark:bg-gray-700\"\n                    sideOffset={19}\n                  >\n                    <div className=\"flex flex-col gap-2 space-y-2 text-sm text-gray-600 dark:text-gray-300\">\n                      <span>{localize('com_ui_fork_info_1')}</span>\n                      <span>{localize('com_ui_fork_info_2')}</span>\n                      <span>\n                        {localize('com_ui_fork_info_3', {\n                          0: localize('com_ui_fork_split_target'),\n                        })}\n                      </span>\n                    </div>\n                  </HoverCardContent>\n                </HoverCardPortal>\n              </HoverCard>\n            </div>\n            <div className=\"flex h-full w-full items-center justify-center gap-1\">\n              <PopoverButton\n                sideOffset={155}\n                setActiveSetting={setActiveSetting}\n                timeoutRef={timeoutRef}\n                onClick={onClick}\n                setting={ForkOptions.DIRECT_PATH}\n                hoverTitle={\n                  <>\n                    <GitCommit className=\"h-5 w-5 rotate-90\" />\n                    {localize(optionLabels[ForkOptions.DIRECT_PATH])}\n                  </>\n                }\n                hoverDescription={localize('com_ui_fork_info_visible')}\n              >\n                <HoverCardTrigger asChild>\n                  <GitCommit className=\"h-full w-full rotate-90 p-2\" />\n                </HoverCardTrigger>\n              </PopoverButton>\n              <PopoverButton\n                sideOffset={90}\n                setActiveSetting={setActiveSetting}\n                timeoutRef={timeoutRef}\n                onClick={onClick}\n                setting={ForkOptions.INCLUDE_BRANCHES}\n                hoverTitle={\n                  <>\n                    <GitBranchPlus className=\"h-4 w-4 rotate-180\" />\n                    {localize(optionLabels[ForkOptions.INCLUDE_BRANCHES])}\n                  </>\n                }\n                hoverDescription={localize('com_ui_fork_info_branches')}\n              >\n                <HoverCardTrigger asChild>\n                  <GitBranchPlus className=\"h-full w-full rotate-180 p-2\" />\n                </HoverCardTrigger>\n              </PopoverButton>\n              <PopoverButton\n                sideOffset={25}\n                setActiveSetting={setActiveSetting}\n                timeoutRef={timeoutRef}\n                onClick={onClick}\n                setting={ForkOptions.TARGET_LEVEL}\n                hoverTitle={\n                  <>\n                    <ListTree className=\"h-5 w-5\" />\n                    {`${localize(\n                      optionLabels[ForkOptions.TARGET_LEVEL],\n                    )} (${localize('com_endpoint_default')})`}\n                  </>\n                }\n                hoverDescription={localize('com_ui_fork_info_target')}\n              >\n                <HoverCardTrigger asChild>\n                  <ListTree className=\"h-full w-full p-2\" />\n                </HoverCardTrigger>\n              </PopoverButton>\n            </div>\n            <HoverCard openDelay={50}>\n              <HoverCardTrigger asChild>\n                <div className=\"flex h-6 w-full items-center justify-start text-sm dark:text-gray-300 dark:hover:text-gray-200\">\n                  <Checkbox\n                    checked={splitAtTarget}\n                    onCheckedChange={(checked: boolean) => setSplitAtTarget(checked)}\n                    className=\"m-2 transition duration-300 ease-in-out\"\n                  />\n                  {localize('com_ui_fork_split_target')}\n                </div>\n              </HoverCardTrigger>\n              <OptionHover\n                side={ESide.Right}\n                description=\"com_ui_fork_info_start\"\n                langCode={true}\n                sideOffset={20}\n              />\n            </HoverCard>\n            <HoverCard openDelay={50}>\n              <HoverCardTrigger asChild>\n                <div className=\"flex h-6 w-full items-center justify-start text-sm dark:text-gray-300 dark:hover:text-gray-200\">\n                  <Checkbox\n                    checked={remember}\n                    onCheckedChange={(checked: boolean) => {\n                      if (checked) {\n                        showToast({\n                          message: localize('com_ui_fork_remember_checked'),\n                          status: 'info',\n                        });\n                      }\n                      setRemember(checked);\n                    }}\n                    className=\"m-2 transition duration-300 ease-in-out\"\n                  />\n                  {localize('com_ui_fork_remember')}\n                </div>\n              </HoverCardTrigger>\n              <OptionHover\n                side={ESide.Right}\n                description=\"com_ui_fork_info_remember\"\n                langCode={true}\n                sideOffset={20}\n              />\n            </HoverCard>\n          </Popover.Content>\n        </div>\n      </Popover.Portal>\n    </Popover.Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/HoverToggle.tsx",
    "content": "import React from 'react';\nimport { ToggleContext } from './ToggleContext';\nimport { cn } from '~/utils';\n\nconst HoverToggle = ({\n  children,\n  isActiveConvo,\n  isPopoverActive,\n  setIsPopoverActive,\n  className = 'absolute bottom-0 right-0 top-0',\n  onClick,\n}: {\n  children: React.ReactNode;\n  isActiveConvo: boolean;\n  isPopoverActive: boolean;\n  setIsPopoverActive: (isActive: boolean) => void;\n  className?: string;\n  onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n}) => {\n  const setPopoverActive = (value: boolean) => setIsPopoverActive(value);\n  return (\n    <ToggleContext.Provider value={{ isPopoverActive, setPopoverActive }}>\n      <div\n        onClick={onClick}\n        className={cn(\n          'peer items-center gap-1.5 rounded-r-lg from-gray-900 pl-2 pr-2 dark:text-white',\n          isPopoverActive || isActiveConvo ? 'flex' : 'hidden group-hover:flex',\n          isActiveConvo\n            ? 'from-gray-50 from-85% to-transparent group-hover:bg-gradient-to-l group-hover:from-gray-200 dark:from-gray-800 dark:group-hover:from-gray-800'\n            : 'z-50 from-gray-50 from-0% to-transparent hover:bg-gradient-to-l hover:from-gray-200 dark:from-gray-800 dark:hover:from-gray-800',\n          isPopoverActive && !isActiveConvo ? 'from-gray-50 dark:from-gray-800' : '',\n          className,\n        )}\n      >\n        {children}\n      </div>\n    </ToggleContext.Provider>\n  );\n};\n\nexport default HoverToggle;\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/Pages.tsx",
    "content": "import React from 'react';\n\ntype TPagesProps = {\n  pages: number;\n  pageNumber: number;\n  setPageNumber: (pageNumber: number) => void;\n  nextPage: () => Promise<void>;\n  previousPage: () => Promise<void>;\n};\n\nexport default function Pages({\n  pageNumber,\n  pages,\n  nextPage,\n  previousPage,\n  setPageNumber,\n}: TPagesProps) {\n  const clickHandler =\n    (func: () => Promise<void>) => async (e: React.MouseEvent<HTMLButtonElement>) => {\n      e.preventDefault();\n      await func();\n    };\n\n  if (pageNumber > pages) {\n    setPageNumber(pages);\n  }\n\n  return pageNumber == 1 && pages == 1 ? null : (\n    <div className=\"m-auto mb-2 mt-4 flex items-center justify-center gap-2\">\n      <button\n        onClick={clickHandler(previousPage)}\n        className={\n          'btn btn-small bg-transition m-auto flex gap-2 transition hover:bg-gray-800 disabled:text-gray-300 dark:text-white dark:disabled:text-gray-400' +\n          (pageNumber <= 1 ? ' hidden-visibility' : '')\n        }\n        disabled={pageNumber <= 1}\n      >\n        &lt;\n      </button>\n      <span className=\"flex-none text-gray-400\">\n        {pageNumber} / {pages}\n      </span>\n      <button\n        onClick={clickHandler(nextPage)}\n        className={\n          'btn btn-small bg-transition m-auto flex gap-2 transition hover:bg-gray-800 disabled:text-gray-300 dark:text-white dark:disabled:text-gray-400' +\n          (pageNumber >= pages ? ' hidden-visibility' : '')\n        }\n        disabled={pageNumber >= pages}\n      >\n        &gt;\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/ToggleContext.ts",
    "content": "import { createContext, useContext } from 'react';\n\nconst defaultFunction: (value: boolean) => void = () => ({});\nexport const ToggleContext = createContext({\n  setPopoverActive: defaultFunction,\n  isPopoverActive: false,\n});\n\nexport const useToggle = () => useContext(ToggleContext);\n"
  },
  {
    "path": "src/frontend/client/src/components/Conversations/index.ts",
    "content": "export { default as Fork } from './Fork';\nexport { default as Pages } from './Pages';\nexport { default as Conversations } from './Conversations';\nexport * from './ConvoOptions';\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/AlternativeSettings.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { SettingsViews } from '~/data-provider/data-provider/src';\nimport type { TSettingsProps } from '~/common';\nimport { Advanced } from './Settings';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function AlternativeSettings({\n  conversation,\n  setOption,\n  isPreset = false,\n  className = '',\n}: TSettingsProps) {\n  const currentSettingsView = useRecoilValue(store.currentSettingsView);\n  if (!conversation?.endpoint || currentSettingsView === SettingsViews.default) {\n    return null;\n  }\n\n  return (\n    <div className={cn('hide-scrollbar h-[500px] overflow-y-auto md:mb-2 md:h-[350px]', className)}>\n      <Advanced conversation={conversation} setOption={setOption} isPreset={isPreset} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/ConvoIcon.tsx",
    "content": "import React, { useMemo } from 'react';\nimport type * as t from '~/data-provider/data-provider/src';\nimport { getEndpointField, getIconKey, getEntity, getIconEndpoint } from '~/utils';\nimport { icons } from '~/components/Chat/Menus/Endpoints/Icons';\nimport ConvoIconURL from '~/components/Endpoints/ConvoIconURL';\n\nexport default function ConvoIcon({\n  conversation,\n  endpointsConfig,\n  assistantMap,\n  agentsMap,\n  className = '',\n  containerClassName = '',\n  context,\n  size,\n}: {\n  conversation: t.TConversation | t.TPreset | null;\n  endpointsConfig: t.TEndpointsConfig;\n  assistantMap: t.TAssistantsMap | undefined;\n  agentsMap: t.TAgentsMap | undefined;\n  containerClassName?: string;\n  context?: 'message' | 'nav' | 'landing' | 'menu-item';\n  className?: string;\n  size?: number;\n}) {\n  const iconURL = conversation?.iconURL ?? '';\n  let endpoint = conversation?.endpoint;\n  endpoint = getIconEndpoint({ endpointsConfig, iconURL, endpoint });\n\n  const { entity, isAgent } = useMemo(\n    () =>\n      getEntity({\n        endpoint,\n        agentsMap,\n        assistantMap,\n        agent_id: conversation?.agent_id,\n        assistant_id: conversation?.assistant_id,\n      }),\n    [endpoint, conversation?.agent_id, conversation?.assistant_id, agentsMap, assistantMap],\n  );\n\n  const name = entity?.name ?? '';\n  const avatar = isAgent\n    ? (entity as t.Agent | undefined)?.avatar?.filepath\n    : ((entity as t.Assistant | undefined)?.metadata?.avatar as string);\n\n  const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL');\n  const iconKey = getIconKey({ endpoint, endpointsConfig, endpointIconURL });\n  const Icon = icons[iconKey] ?? null;\n\n  return (\n    <>\n      {iconURL && iconURL.includes('http') ? (\n        <ConvoIconURL\n          iconURL={iconURL}\n          modelLabel={conversation?.chatGptLabel ?? conversation?.modelLabel ?? ''}\n          endpointIconURL={endpointIconURL}\n          assistantAvatar={avatar}\n          assistantName={name}\n          agentAvatar={avatar}\n          agentName={name}\n          context={context}\n        />\n      ) : (\n        <div className={containerClassName}>\n          {endpoint && Icon != null && (\n            <Icon\n              size={size}\n              context={context}\n              endpoint={endpoint}\n              className={className}\n              iconURL={endpointIconURL}\n              assistantName={name}\n              agentName={name}\n              avatar={avatar}\n            />\n          )}\n        </div>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/ConvoIconURL.tsx",
    "content": "import { memo, useMemo } from 'react';\nimport type { IconMapProps } from '~/common';\nimport { icons } from '~/components/Chat/Menus/Endpoints/Icons';\nimport { URLIcon } from '~/components/Endpoints/URLIcon';\n\ninterface ConvoIconURLProps {\n  iconURL?: string;\n  modelLabel?: string | null;\n  endpointIconURL?: string;\n  assistantName?: string;\n  agentName?: string;\n  context?: 'landing' | 'menu-item' | 'nav' | 'message';\n  assistantAvatar?: string;\n  agentAvatar?: string;\n}\n\nconst classMap = {\n  'menu-item': 'relative flex h-full items-center justify-center overflow-hidden rounded-full',\n  message: 'icon-md',\n  default: 'icon-xl relative flex h-full overflow-hidden rounded-full',\n};\n\nconst styleMap = {\n  'menu-item': { width: '20px', height: '20px' },\n  default: { width: '100%', height: '100%' },\n};\n\nconst styleImageMap = {\n  default: { width: '100%', height: '100%' },\n};\n\nconst ConvoIconURL: React.FC<ConvoIconURLProps> = ({\n  iconURL = '',\n  modelLabel = '',\n  endpointIconURL,\n  assistantAvatar,\n  assistantName,\n  agentAvatar,\n  agentName,\n  context,\n}) => {\n  const Icon: (\n    props: IconMapProps & {\n      context?: string;\n      iconURL?: string;\n    },\n  ) => React.JSX.Element = useMemo(() => icons[iconURL] ?? icons.unknown, [iconURL]);\n  const isURL = useMemo(\n    // () => !!(iconURL && (iconURL.includes('http') || iconURL.startsWith('/images/'))),\n    () => !!(iconURL),\n    [iconURL],\n  );\n  if (isURL) {\n    return (\n      <URLIcon\n        iconURL={iconURL}\n        altName={modelLabel}\n        className={classMap[context ?? 'default'] ?? classMap.default}\n        containerStyle={styleMap[context ?? 'default'] ?? styleMap.default}\n        imageStyle={styleImageMap[context ?? 'default'] ?? styleImageMap.default}\n      />\n    );\n  }\n\n  return (\n    <div className=\"shadow-stroke min-w-6 min-h-6 relative flex h-full items-center justify-center rounded-full bg-white text-black\">\n      <Icon\n        size={41}\n        context={context}\n        className=\"h-2/3 w-2/3\"\n        agentName={agentName}\n        iconURL={endpointIconURL}\n        assistantName={assistantName}\n        avatar={assistantAvatar ?? agentAvatar}\n      />\n    </div>\n  );\n};\n\nexport default memo(ConvoIconURL);\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/EndpointIcon.tsx",
    "content": "import { isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type {\n  TConversation,\n  TEndpointsConfig,\n  TPreset,\n  TAssistantsMap,\n} from '~/data-provider/data-provider/src';\nimport ConvoIconURL from '~/components/Endpoints/ConvoIconURL';\nimport MinimalIcon from '~/components/Endpoints/MinimalIcon';\nimport { getEndpointField, getIconEndpoint } from '~/utils';\n\nexport default function EndpointIcon({\n  conversation,\n  endpointsConfig,\n  className = 'mr-0',\n  assistantMap,\n  context,\n}: {\n  conversation: TConversation | TPreset | null;\n  endpointsConfig: TEndpointsConfig;\n  containerClassName?: string;\n  context?: 'message' | 'nav' | 'landing' | 'menu-item';\n  assistantMap?: TAssistantsMap;\n  className?: string;\n  size?: number;\n}) {\n  const convoIconURL = conversation?.iconURL ?? '';\n  let endpoint = conversation?.endpoint;\n  endpoint = getIconEndpoint({ endpointsConfig, iconURL: convoIconURL, endpoint });\n\n  const endpointType = getEndpointField(endpointsConfig, endpoint, 'type');\n  const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL');\n\n  const assistant = isAssistantsEndpoint(endpoint)\n    ? assistantMap?.[endpoint]?.[conversation?.assistant_id ?? '']\n    : null;\n  const assistantAvatar = (assistant && (assistant.metadata?.avatar as string)) || '';\n  const assistantName = assistant && (assistant.name ?? '');\n\n  const iconURL = assistantAvatar || convoIconURL;\n\n  if (iconURL && (iconURL.includes('http') || iconURL.startsWith('/images/'))) {\n    return (\n      <ConvoIconURL\n        iconURL={iconURL}\n        modelLabel={conversation?.chatGptLabel ?? conversation?.modelLabel ?? ''}\n        context={context}\n        endpointIconURL={endpointIconURL}\n        assistantAvatar={assistantAvatar}\n        assistantName={assistantName ?? ''}\n      />\n    );\n  } else {\n    return (\n      <MinimalIcon\n        size={20}\n        iconURL={endpointIconURL}\n        endpoint={endpoint}\n        endpointType={endpointType}\n        model={conversation?.model}\n        error={false}\n        className={className}\n        isCreatedByUser={false}\n        chatGptLabel={undefined}\n        modelLabel={undefined}\n        jailbreak={undefined}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/EndpointSettings.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { SettingsViews, TConversation } from '~/data-provider/data-provider/src';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TSettingsProps } from '~/common';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { cn, getEndpointField } from '~/utils';\nimport { getSettings } from './Settings';\nimport store from '~/store';\n\nexport default function Settings({\n  conversation,\n  setOption,\n  isPreset = false,\n  className = '',\n}: TSettingsProps) {\n  const modelsQuery = useGetModelsQuery();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const currentSettingsView = useRecoilValue(store.currentSettingsView);\n  const endpointType = getEndpointField(endpointsConfig, conversation?.endpoint ?? '', 'type');\n  const endpoint = endpointType ?? conversation?.endpoint ?? '';\n  if (!endpoint || currentSettingsView !== SettingsViews.default) {\n    return null;\n  }\n\n  const { settings, multiViewSettings } = getSettings();\n  const { endpoint: _endpoint } = conversation as TConversation;\n  const models = modelsQuery.data?.[_endpoint ?? ''] ?? [];\n  const OptionComponent = settings[endpoint];\n\n  if (OptionComponent) {\n    return (\n      <div className={cn('h-[500px] overflow-y-auto md:mb-2 md:h-[350px]', className)}>\n        <OptionComponent\n          conversation={conversation}\n          setOption={setOption}\n          models={models}\n          isPreset={isPreset}\n        />\n      </div>\n    );\n  }\n\n  const MultiViewComponent = multiViewSettings[endpoint];\n\n  if (MultiViewComponent == null) {\n    return null;\n  }\n\n  return (\n    <div className={cn('hide-scrollbar h-[500px] overflow-y-auto md:mb-2 md:h-[350px]', className)}>\n      <MultiViewComponent conversation={conversation} models={models} isPreset={isPreset} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Icon.tsx",
    "content": "import React, { memo, useMemo } from 'react';\nimport type { TUser } from '~/data-provider/data-provider/src';\nimport type { IconProps } from '~/common';\nimport MessageEndpointIcon from './MessageEndpointIcon';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport useAvatar from '~/hooks/Messages/useAvatar';\nimport useLocalize from '~/hooks/useLocalize';\nimport { UserIcon } from '~/components/svg';\nimport { cn } from '~/utils';\n\ntype UserAvatarProps = {\n  size: number;\n  user?: TUser;\n  avatarSrc: string;\n  username: string;\n  className?: string;\n};\n\nconst UserAvatar = memo(({ size, user, avatarSrc, username, className }: UserAvatarProps) => (\n  <div\n    title={username}\n    style={{\n      width: size,\n      height: size,\n    }}\n    className={cn('relative flex items-center justify-center', className ?? '')}\n  >\n    {!(user?.avatar ?? '') && (!(user?.username ?? '') || user?.username.trim() === '') ? (\n      <div\n        style={{\n          backgroundColor: 'rgb(121, 137, 255)',\n          width: '20px',\n          height: '20px',\n          boxShadow: 'rgba(240, 246, 252, 0.1) 0px 0px 0px 1px',\n        }}\n        className=\"relative flex h-9 w-9 items-center justify-center rounded-sm p-1 text-white\"\n      >\n        <UserIcon />\n      </div>\n    ) : (\n      <img className=\"rounded-full\" src={(user?.avatar ?? '') || avatarSrc} alt=\"avatar\" />\n    )}\n  </div>\n));\n\nUserAvatar.displayName = 'UserAvatar';\n\nconst Icon: React.FC<IconProps> = memo((props) => {\n  const { user: oldUser } = useAuthContext();\n  // Use the incoming avatar \n  const user = useMemo(() => {\n    return { ...oldUser, username: props.name };\n  }, [oldUser, props.name]);\n  const { size = 30, isCreatedByUser } = props;\n\n  const avatarSrc = useAvatar(user);\n  const localize = useLocalize();\n\n  if (isCreatedByUser) {\n    const username = user?.name ?? user?.username ?? localize('com_nav_user');\n    return (\n      <UserAvatar\n        size={size}\n        user={user}\n        avatarSrc={avatarSrc}\n        username={username}\n        className={props.className}\n      />\n    );\n  }\n  return <MessageEndpointIcon {...props} />;\n});\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/MessageEndpointIcon.tsx",
    "content": "import { memo } from 'react';\nimport { Feather } from 'lucide-react';\nimport { EModelEndpoint, isAssistantsEndpoint, alternateName } from '~/data-provider/data-provider/src';\nimport {\n  Plugin,\n  GPTIcon,\n  PaLMIcon,\n  CodeyIcon,\n  GeminiIcon,\n  BedrockIcon,\n  AssistantIcon,\n  AnthropicIcon,\n  AzureMinimalIcon,\n  CustomMinimalIcon,\n} from '~/components/svg';\nimport UnknownIcon from '~/components/Chat/Menus/Endpoints/UnknownIcon';\nimport { IconProps } from '~/common';\nimport { cn } from '~/utils';\n\ntype EndpointIcon = {\n  icon: React.ReactNode | React.JSX.Element;\n  bg?: string;\n  name?: string | null;\n};\n\nfunction getOpenAIColor(_model: string | null | undefined) {\n  const model = _model?.toLowerCase() ?? '';\n  if (model && /\\b(o1|o3)\\b/i.test(model)) {\n    return '#000000';\n  }\n  return model.includes('gpt-4') ? '#AB68FF' : '#19C37D';\n}\n\nfunction getGoogleIcon(model: string | null | undefined, size: number) {\n  if (model?.toLowerCase().includes('code') === true) {\n    return <CodeyIcon size={size * 0.75} />;\n  } else if (\n    model?.toLowerCase().includes('gemini') === true ||\n    model?.toLowerCase().includes('learnlm') === true\n  ) {\n    return <GeminiIcon size={size * 0.7} />;\n  } else {\n    return <PaLMIcon size={size * 0.7} />;\n  }\n}\n\nfunction getGoogleModelName(model: string | null | undefined) {\n  if (model?.toLowerCase().includes('code') === true) {\n    return 'Codey';\n  } else if (\n    model?.toLowerCase().includes('gemini') === true ||\n    model?.toLowerCase().includes('learnlm') === true\n  ) {\n    return 'Gemini';\n  } else {\n    return 'PaLM2';\n  }\n}\n\nconst MessageEndpointIcon: React.FC<IconProps> = (props) => {\n  const {\n    error,\n    button,\n    iconURL = '',\n    endpoint,\n    size = 30,\n    model = '',\n    assistantName,\n    agentName,\n  } = props;\n\n  const assistantsIcon = {\n    icon: iconURL ? (\n      <div className=\"relative flex h-6 w-6 items-center justify-center\">\n        <div\n          title={assistantName}\n          style={{\n            width: size,\n            height: size,\n          }}\n          className={cn('overflow-hidden rounded-full', props.className ?? '')}\n        >\n          <img\n            className=\"shadow-stroke h-full w-full object-cover\"\n            src={iconURL}\n            alt={assistantName}\n            style={{ height: '80', width: '80' }}\n          />\n        </div>\n      </div>\n    ) : (\n      <div className=\"h-6 w-6\">\n        <div className=\"shadow-stroke flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n          <AssistantIcon className=\"h-2/3 w-2/3 text-gray-400\" />\n        </div>\n      </div>\n    ),\n    name: endpoint,\n  };\n\n  const agentsIcon = {\n    icon: iconURL ? (\n      <div className=\"relative flex h-6 w-6 items-center justify-center\">\n        <div\n          title={agentName}\n          style={{\n            width: size,\n            height: size,\n          }}\n          className={cn('overflow-hidden rounded-full', props.className ?? '')}\n        >\n          <img\n            className=\"shadow-stroke h-full w-full object-cover\"\n            src={iconURL}\n            alt={agentName}\n            style={{ height: '80', width: '80' }}\n          />\n        </div>\n      </div>\n    ) : (\n      <div className=\"h-6 w-6\">\n        <div className=\"shadow-stroke flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n          <Feather className=\"h-2/3 w-2/3 text-gray-400\" />\n        </div>\n      </div>\n    ),\n    name: endpoint,\n  };\n\n  const endpointIcons: {\n    [key: string]: EndpointIcon | undefined;\n  } = {\n    [EModelEndpoint.assistants]: assistantsIcon,\n    [EModelEndpoint.agents]: agentsIcon,\n    [EModelEndpoint.azureAssistants]: assistantsIcon,\n    [EModelEndpoint.azureOpenAI]: {\n      icon: <AzureMinimalIcon size={size * 0.5555555555555556} />,\n      bg: 'linear-gradient(0.375turn, #61bde2, #4389d0)',\n      name: 'ChatGPT',\n    },\n    [EModelEndpoint.openAI]: {\n      icon: <GPTIcon size={size * 0.5555555555555556} />,\n      bg: getOpenAIColor(model),\n      name: 'ChatGPT',\n    },\n    [EModelEndpoint.gptPlugins]: {\n      icon: <Plugin size={size * 0.7} />,\n      bg: `rgba(69, 89, 164, ${button === true ? 0.75 : 1})`,\n      name: 'Plugins',\n    },\n    [EModelEndpoint.google]: {\n      icon: getGoogleIcon(model, size),\n      name: getGoogleModelName(model),\n    },\n    [EModelEndpoint.anthropic]: {\n      icon: <AnthropicIcon size={size * 0.5555555555555556} />,\n      bg: '#d09a74',\n      name: 'Claude',\n    },\n    [EModelEndpoint.bedrock]: {\n      icon: <BedrockIcon className=\"icon-xl text-white\" />,\n      bg: '#268672',\n      name: alternateName[EModelEndpoint.bedrock],\n    },\n    [EModelEndpoint.custom]: {\n      icon: <CustomMinimalIcon size={size * 0.7} />,\n      name: 'Custom',\n    },\n    null: { icon: <GPTIcon size={size * 0.7} />, bg: 'grey', name: 'N/A' },\n    default: {\n      icon: (\n        <div className=\"h-6 w-6\">\n          <div className=\"overflow-hidden rounded-full\">\n            <UnknownIcon\n              iconURL={iconURL}\n              endpoint={endpoint ?? ''}\n              className=\"h-full w-full object-contain\"\n              context=\"message\"\n            />\n          </div>\n        </div>\n      ),\n      name: endpoint,\n    },\n  };\n\n  let { icon, bg, name } =\n    endpoint != null && endpoint && endpointIcons[endpoint]\n      ? endpointIcons[endpoint] ?? {}\n      : (endpointIcons.default as EndpointIcon);\n\n  if (iconURL && endpointIcons[iconURL]) {\n    ({ icon, bg, name } = endpointIcons[iconURL]);\n  }\n\n  if (isAssistantsEndpoint(endpoint)) {\n    return icon;\n  }\n\n  return (\n    <div\n      title={name ?? ''}\n      style={{\n        background: bg != null ? bg || 'transparent' : 'transparent',\n        width: size,\n        height: size,\n      }}\n      className={cn(\n        'relative flex h-9 w-9 items-center justify-center rounded-sm p-1 text-white',\n        props.className ?? '',\n      )}\n    >\n      {icon}\n      {error === true && (\n        <span className=\"absolute right-0 top-[20px] -mr-2 flex h-3 w-3 items-center justify-center rounded-full border border-white bg-red-500 text-[10px] text-white\">\n          !\n        </span>\n      )}\n    </div>\n  );\n};\n\nexport default memo(MessageEndpointIcon);\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/MinimalIcon.tsx",
    "content": "import { Feather } from 'lucide-react';\nimport { EModelEndpoint, alternateName } from '~/data-provider/data-provider/src';\nimport {\n  AzureMinimalIcon,\n  OpenAIMinimalIcon,\n  LightningIcon,\n  MinimalPlugin,\n  GoogleMinimalIcon,\n  CustomMinimalIcon,\n  AnthropicIcon,\n  BedrockIcon,\n  Sparkles,\n} from '~/components/svg';\nimport UnknownIcon from '~/components/Chat/Menus/Endpoints/UnknownIcon';\nimport { IconProps } from '~/common';\nimport { cn } from '~/utils';\n\nconst MinimalIcon: React.FC<IconProps> = (props) => {\n  const { size = 30, iconURL = '', iconClassName, error } = props;\n\n  let endpoint = 'default'; // Default value for endpoint\n\n  if (typeof props.endpoint === 'string') {\n    endpoint = props.endpoint;\n  }\n\n  const endpointIcons = {\n    [EModelEndpoint.azureOpenAI]: {\n      icon: <AzureMinimalIcon className={iconClassName} />,\n      name: props.chatGptLabel ?? 'ChatGPT',\n    },\n    [EModelEndpoint.openAI]: {\n      icon: <OpenAIMinimalIcon className={iconClassName} />,\n      name: props.chatGptLabel ?? 'ChatGPT',\n    },\n    [EModelEndpoint.gptPlugins]: { icon: <MinimalPlugin />, name: 'Plugins' },\n    [EModelEndpoint.google]: { icon: <GoogleMinimalIcon />, name: props.modelLabel ?? 'Google' },\n    [EModelEndpoint.anthropic]: {\n      icon: <AnthropicIcon className=\"icon-md shrink-0 dark:text-white\" />,\n      name: props.modelLabel ?? 'Claude',\n    },\n    [EModelEndpoint.custom]: {\n      icon: <CustomMinimalIcon />,\n      name: 'Custom',\n    },\n    [EModelEndpoint.chatGPTBrowser]: { icon: <LightningIcon />, name: 'ChatGPT' },\n    [EModelEndpoint.assistants]: { icon: <Sparkles className=\"icon-sm\" />, name: 'Assistant' },\n    [EModelEndpoint.azureAssistants]: { icon: <Sparkles className=\"icon-sm\" />, name: 'Assistant' },\n    [EModelEndpoint.agents]: {\n      icon: <Feather className=\"icon-sm\" />,\n      name: props.modelLabel ?? alternateName[EModelEndpoint.agents],\n    },\n    [EModelEndpoint.bedrock]: {\n      icon: <BedrockIcon className=\"icon-xl text-text-primary\" />,\n      name: props.modelLabel ?? alternateName[EModelEndpoint.bedrock],\n    },\n    default: {\n      icon: <UnknownIcon iconURL={iconURL} endpoint={endpoint} className=\"icon-sm\" context=\"nav\" />,\n      name: endpoint,\n    },\n  };\n\n  let { icon, name } = endpointIcons[endpoint] ?? endpointIcons.default;\n  if (iconURL && endpointIcons[iconURL] != null) {\n    ({ icon, name } = endpointIcons[iconURL]);\n  }\n\n  return (\n    <div\n      data-testid=\"convo-icon\"\n      title={name}\n      aria-hidden=\"true\"\n      style={{\n        height: size,\n      }}\n      className={cn(\n        'relative flex items-center justify-center rounded-sm text-text-secondary',\n        props.className ?? '',\n      )}\n    >\n      {error === true && (\n        <span className=\"absolute right-0 top-[20px] -mr-2 flex h-4 w-4 items-center justify-center rounded-full border border-white bg-red-500 text-[10px] text-text-secondary\">\n          !\n        </span>\n      )}\n    </div>\n  );\n};\n\nexport default MinimalIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/SaveAsPresetDialog.tsx",
    "content": "import React, { useEffect, useState } from 'react';\nimport { useCreatePresetMutation } from '~/data-provider/data-provider/src/react-query';\nimport type { TEditPresetProps } from '~/common';\nimport { cn, removeFocusOutlines, cleanupPreset, defaultTextProps } from '~/utils/';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { OGDialog, Input, Label } from '~/components/ui/';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\nconst SaveAsPresetDialog = ({ open, onOpenChange, preset }: TEditPresetProps) => {\n  const [title, setTitle] = useState<string>(preset.title ?? 'My Preset');\n  const createPresetMutation = useCreatePresetMutation();\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const submitPreset = () => {\n    const _preset = cleanupPreset({\n      preset: {\n        ...preset,\n        title,\n      },\n    });\n\n    const toastTitle =\n      _preset.title ?? '' ? `\\`${_preset.title}\\`` : localize('com_endpoint_preset_title');\n\n    createPresetMutation.mutate(_preset, {\n      onSuccess: () => {\n        showToast({\n          message: `${toastTitle} ${localize('com_ui_saved')}`,\n        });\n        onOpenChange(false); // Close the dialog on success\n      },\n      onError: () => {\n        showToast({\n          message: localize('com_endpoint_preset_save_error'),\n          severity: NotificationSeverity.ERROR,\n        });\n      },\n    });\n  };\n\n  useEffect(() => {\n    setTitle(preset.title ?? localize('com_endpoint_my_preset'));\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n\n  // Handle Enter key press\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    if (event.key === 'Enter') {\n      event.preventDefault();\n      submitPreset();\n    }\n  };\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange}>\n      <OGDialogTemplate\n        title={localize('com_endpoint_save_as_preset')}\n        className=\"z-[90] w-11/12 sm:w-1/4\"\n        overlayClassName=\"z-[80]\"\n        showCloseButton={false}\n        main={\n          <div className=\"flex w-full flex-col items-center gap-2\">\n            <div className=\"grid w-full items-center gap-2\">\n              <Label htmlFor=\"preset-custom-name\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_preset_name')}\n              </Label>\n              <Input\n                id=\"preset-custom-name\"\n                value={title || ''}\n                onChange={(e) => setTitle(e.target.value || '')}\n                onKeyDown={handleKeyDown}\n                placeholder={localize('com_endpoint_preset_custom_name_placeholder')}\n                aria-label={localize('com_endpoint_preset_name')}\n                className={cn(\n                  defaultTextProps,\n                  'flex h-10 max-h-10 w-full resize-none border-border-medium px-3 py-2 ',\n                  removeFocusOutlines,\n                )}\n              />\n            </div>\n          </div>\n        }\n        selection={{\n          selectHandler: submitPreset,\n          selectClasses: 'bg-green-500 hover:bg-green-600 dark:hover:bg-green-600 text-white',\n          selectText: localize('com_ui_save'),\n        }}\n      />\n    </OGDialog>\n  );\n};\n\nexport default SaveAsPresetDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Advanced.tsx",
    "content": "import TextareaAutosize from 'react-textarea-autosize';\nimport { ImageDetail, imageDetailNumeric, imageDetailValue } from '~/data-provider/data-provider/src';\nimport type { ValueType } from '@rc-component/mini-decimal';\nimport type { TModelSelectProps } from '~/common';\nimport {\n  Input,\n  Label,\n  Switch,\n  Slider,\n  HoverCard,\n  InputNumber,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { cn, defaultTextProps, optionText, removeFocusOutlines } from '~/utils/';\nimport { useLocalize, useDebouncedInput } from '~/hooks';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nexport default function Settings({\n  conversation,\n  setOption,\n  readonly,\n}: Omit<TModelSelectProps, 'models'>) {\n  /* This is an unfinished component for future update */\n  const localize = useLocalize();\n  const {\n    endpoint,\n    endpointType,\n    chatGptLabel,\n    promptPrefix,\n    temperature,\n    top_p: topP,\n    frequency_penalty: freqP,\n    presence_penalty: presP,\n    resendFiles,\n    imageDetail,\n  } = conversation ?? {};\n  const [setChatGptLabel, chatGptLabelValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'chatGptLabel',\n    initialValue: chatGptLabel,\n  });\n  const [setPromptPrefix, promptPrefixValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'promptPrefix',\n    initialValue: promptPrefix,\n  });\n  const [setTemperature, temperatureValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'temperature',\n    initialValue: temperature,\n  });\n  const [setTopP, topPValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'top_p',\n    initialValue: topP,\n  });\n  const [setFreqP, freqPValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'frequency_penalty',\n    initialValue: freqP,\n  });\n  const [setPresP, presPValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'presence_penalty',\n    initialValue: presP,\n  });\n\n  if (!conversation) {\n    return null;\n  }\n\n  const setResendFiles = setOption('resendFiles');\n  const setImageDetail = setOption('imageDetail');\n\n  const optionEndpoint = endpointType ?? endpoint;\n\n  return (\n    <div className=\"grid grid-cols-5 gap-6\">\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 sm:col-span-3\">\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"chatGptLabel\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_custom_name')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <Input\n            id=\"chatGptLabel\"\n            disabled={readonly}\n            value={(chatGptLabelValue as string) || ''}\n            onChange={setChatGptLabel}\n            placeholder={localize('com_endpoint_openai_custom_name_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex h-10 max-h-10 w-full resize-none px-3 py-2',\n              removeFocusOutlines,\n            )}\n          />\n        </div>\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"promptPrefix\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_prompt_prefix')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <TextareaAutosize\n            id=\"promptPrefix\"\n            disabled={readonly}\n            value={(promptPrefixValue as string) || ''}\n            onChange={setPromptPrefix}\n            placeholder={localize('com_endpoint_openai_prompt_prefix_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex max-h-[138px] min-h-[100px] w-full resize-none px-3 py-2 ',\n            )}\n          />\n        </div>\n      </div>\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 px-3 sm:col-span-2\">\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"temp-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_temperature')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: '1' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"temp-int\"\n                disabled={readonly}\n                value={temperatureValue as number}\n                onChange={setTemperature as (value: ValueType | null) => void}\n                max={2}\n                min={0}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[(temperatureValue as number) ?? 1]}\n              onValueChange={(value) => setTemperature(value[0])}\n              onDoubleClick={() => setTemperature(1)}\n              max={2}\n              min={0}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={optionEndpoint ?? ''} type=\"temp\" side={ESide.Left} />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"top-p-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_top_p')}{' '}\n                <small className=\"opacity-40\">({localize('com_endpoint_default')}: 1)</small>\n              </Label>\n              <InputNumber\n                id=\"top-p-int\"\n                disabled={readonly}\n                value={topPValue as number}\n                onChange={(value) => setTopP(Number(value))}\n                max={1}\n                min={0}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[(topPValue as number) ?? 1]}\n              onValueChange={(value) => setTopP(value[0])}\n              onDoubleClick={() => setTopP(1)}\n              max={1}\n              min={0}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={optionEndpoint ?? ''} type=\"topp\" side={ESide.Left} />\n        </HoverCard>\n\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"freq-penalty-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_frequency_penalty')}{' '}\n                <small className=\"opacity-40\">({localize('com_endpoint_default')}: 0)</small>\n              </Label>\n              <InputNumber\n                id=\"freq-penalty-int\"\n                disabled={readonly}\n                value={freqPValue as number}\n                onChange={(value) => setFreqP(Number(value))}\n                max={2}\n                min={-2}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[(freqPValue as number) ?? 0]}\n              onValueChange={(value) => setFreqP(value[0])}\n              onDoubleClick={() => setFreqP(0)}\n              max={2}\n              min={-2}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={optionEndpoint ?? ''} type=\"freq\" side={ESide.Left} />\n        </HoverCard>\n\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"pres-penalty-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_presence_penalty')}{' '}\n                <small className=\"opacity-40\">({localize('com_endpoint_default')}: 0)</small>\n              </Label>\n              <InputNumber\n                id=\"pres-penalty-int\"\n                disabled={readonly}\n                value={presPValue as number}\n                onChange={(value) => setPresP(Number(value))}\n                max={2}\n                min={-2}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[(presPValue as number) ?? 0]}\n              onValueChange={(value) => setPresP(value[0])}\n              onDoubleClick={() => setPresP(0)}\n              max={2}\n              min={-2}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={optionEndpoint ?? ''} type=\"pres\" side={ESide.Left} />\n        </HoverCard>\n        <div className=\"w-full\">\n          <div className=\"mb-2 flex w-full justify-between gap-2\">\n            <label\n              htmlFor=\"resend-files\"\n              className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n            >\n              <small>{localize('com_endpoint_plug_resend_files')}</small>\n            </label>\n            <label\n              htmlFor=\"image-detail-value\"\n              className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n            >\n              <small>{localize('com_endpoint_plug_image_detail')}</small>\n            </label>\n            <Input\n              id=\"image-detail-value\"\n              disabled={true}\n              value={imageDetail ?? ImageDetail.auto}\n              className={cn(\n                defaultTextProps,\n                optionText,\n                'flex rounded-md bg-transparent py-2 text-xs focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 dark:border-gray-700',\n                'pointer-events-none max-h-5 w-12 border-0 group-hover/temp:border-gray-200',\n              )}\n            />\n          </div>\n          <div className=\"flex w-full justify-between gap-2\">\n            <HoverCard openDelay={500}>\n              <HoverCardTrigger>\n                <Switch\n                  id=\"resend-files\"\n                  checked={resendFiles ?? true}\n                  onCheckedChange={(checked: boolean) => setResendFiles(checked)}\n                  disabled={readonly}\n                  className=\"flex\"\n                />\n                <OptionHover endpoint={optionEndpoint ?? ''} type=\"resend\" side={ESide.Bottom} />\n              </HoverCardTrigger>\n            </HoverCard>\n            <HoverCard openDelay={500}>\n              <HoverCardTrigger className=\"flex w-[52%] md:w-[125px]\">\n                <Slider\n                  id=\"image-detail-slider\"\n                  disabled={readonly}\n                  value={[\n                    imageDetailNumeric[imageDetail ?? ''] ?? imageDetailNumeric[ImageDetail.auto],\n                  ]}\n                  onValueChange={(value) => setImageDetail(imageDetailValue[value[0]])}\n                  onDoubleClick={() => setImageDetail(ImageDetail.auto)}\n                  max={2}\n                  min={0}\n                  step={1}\n                />\n                <OptionHover endpoint={optionEndpoint ?? ''} type=\"detail\" side={ESide.Bottom} />\n              </HoverCardTrigger>\n            </HoverCard>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/AgentSettings.tsx",
    "content": "import type { TModelSelectProps } from '~/common';\nimport {\n  Switch,\n  Label,\n  Slider,\n  HoverCard,\n  InputNumber,\n  SelectDropDown,\n  HoverCardTrigger,\n} from '~/components';\nimport { cn, optionText, defaultTextProps, removeFocusRings } from '~/utils';\nimport OptionHover from './OptionHover';\nimport { useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\n\nexport default function Settings({ conversation, setOption, models, readonly }: TModelSelectProps) {\n  const localize = useLocalize();\n  if (!conversation) {\n    return null;\n  }\n  const { agent, skipCompletion, model, temperature } = conversation.agentOptions ?? {};\n\n  const setModel = setOption('model');\n  const setTemperature = setOption('temperature');\n  const setAgent = setOption('agent');\n  const setSkipCompletion = setOption('skipCompletion');\n  const onCheckedChangeAgent = (checked: boolean) => {\n    setAgent(checked ? 'functions' : 'classic');\n  };\n\n  const onCheckedChangeSkip = (checked: boolean) => {\n    setSkipCompletion(checked);\n  };\n\n  return (\n    <div className=\"grid grid-cols-5 gap-6\">\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 sm:col-span-3\">\n        <div className=\"grid w-full items-center gap-2\">\n          <SelectDropDown\n            title={localize('com_endpoint_agent_model')}\n            value={model ?? ''}\n            setValue={setModel}\n            availableValues={models}\n            disabled={readonly}\n            className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusRings)}\n            containerClassName=\"flex w-full resize-none\"\n          />\n        </div>\n      </div>\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 px-3 sm:col-span-2\">\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"temp-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_temperature')}{' '}\n                <small className=\"opacity-40\">({localize('com_endpoint_default')}: 0)</small>\n              </Label>\n              <InputNumber\n                id=\"temp-int\"\n                disabled={readonly}\n                value={temperature}\n                onChange={(value) => setTemperature(Number(value))}\n                max={2}\n                min={0}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[temperature ?? 0]}\n              onValueChange={(value: number[]) => setTemperature(value[0])}\n              onDoubleClick={() => setTemperature(1)}\n              max={2}\n              min={0}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"temp\" side={ESide.Left} />\n        </HoverCard>\n        <div className=\"grid w-full grid-cols-2 items-center gap-10\">\n          <HoverCard openDelay={500}>\n            <HoverCardTrigger className=\"flex w-[100px] flex-col items-center space-y-4 text-center\">\n              <label\n                htmlFor=\"functions-agent\"\n                className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n              >\n                <small>{localize('com_endpoint_plug_use_functions')}</small>\n              </label>\n              <Switch\n                id=\"functions-agent\"\n                checked={agent === 'functions'}\n                onCheckedChange={onCheckedChangeAgent}\n                disabled={readonly}\n                className=\"ml-4 mt-2\"\n              />\n            </HoverCardTrigger>\n            <OptionHover endpoint={conversation.endpoint ?? ''} type=\"func\" side={ESide.Bottom} />\n          </HoverCard>\n          <HoverCard openDelay={500}>\n            <HoverCardTrigger className=\"ml-[-60px] flex w-[100px] flex-col items-center space-y-4 text-center\">\n              <label\n                htmlFor=\"skip-completion\"\n                className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n              >\n                <small>{localize('com_endpoint_plug_skip_completion')}</small>\n              </label>\n              <Switch\n                id=\"skip-completion\"\n                checked={skipCompletion === true}\n                onCheckedChange={onCheckedChangeSkip}\n                disabled={readonly}\n                className=\"ml-4 mt-2\"\n              />\n            </HoverCardTrigger>\n            <OptionHover endpoint={conversation.endpoint ?? ''} type=\"skip\" side={ESide.Bottom} />\n          </HoverCard>\n        </div>\n        {/* <HoverCard openDelay={300}>\n            <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n              <div className=\"flex justify-between\">\n                <Label htmlFor=\"top-p-int\" className=\"text-left text-sm font-medium\">\n                  Top P <small className=\"opacity-40\">(default: 1)</small>\n                </Label>\n                <InputNumber\n                  id=\"top-p-int\"\n                  disabled={readonly}\n                  value={topP}\n                  onChange={(value) => setTopP(value)}\n                  max={1}\n                  min={0}\n                  step={0.01}\n                  controls={false}\n                  className={cn(\n                    defaultTextProps,\n                    cn(\n                      optionText,\n                      'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200'\n                    )\n                  )}\n                />\n              </div>\n              <Slider\n                disabled={readonly}\n                value={[topP]}\n                onValueChange={(value) => setTopP(value[0])}\n                doubleClickHandler={() => setTopP(1)}\n                max={1}\n                min={0}\n                step={0.01}\n                className=\"flex h-4 w-full\"\n              />\n            </HoverCardTrigger>\n            <OptionHover type=\"topp\" side=\"left\" />\n          </HoverCard>\n\n          <HoverCard openDelay={300}>\n            <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n              <div className=\"flex justify-between\">\n                <Label htmlFor=\"freq-penalty-int\" className=\"text-left text-sm font-medium\">\n                  Frequency Penalty <small className=\"opacity-40\">(default: 0)</small>\n                </Label>\n                <InputNumber\n                  id=\"freq-penalty-int\"\n                  disabled={readonly}\n                  value={freqP}\n                  onChange={(value) => setFreqP(value)}\n                  max={2}\n                  min={-2}\n                  step={0.01}\n                  controls={false}\n                  className={cn(\n                    defaultTextProps,\n                    cn(\n                      optionText,\n                      'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200'\n                    )\n                  )}\n                />\n              </div>\n              <Slider\n                disabled={readonly}\n                value={[freqP]}\n                onValueChange={(value) => setFreqP(value[0])}\n                doubleClickHandler={() => setFreqP(0)}\n                max={2}\n                min={-2}\n                step={0.01}\n                className=\"flex h-4 w-full\"\n              />\n            </HoverCardTrigger>\n            <OptionHover type=\"freq\" side=\"left\" />\n          </HoverCard>\n\n          <HoverCard openDelay={300}>\n            <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n              <div className=\"flex justify-between\">\n                <Label htmlFor=\"pres-penalty-int\" className=\"text-left text-sm font-medium\">\n                  Presence Penalty <small className=\"opacity-40\">(default: 0)</small>\n                </Label>\n                <InputNumber\n                  id=\"pres-penalty-int\"\n                  disabled={readonly}\n                  value={presP}\n                  onChange={(value) => setPresP(value)}\n                  max={2}\n                  min={-2}\n                  step={0.01}\n                  controls={false}\n                  className={cn(\n                    defaultTextProps,\n                    cn(\n                      optionText,\n                      'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200'\n                    )\n                  )}\n                />\n              </div>\n              <Slider\n                disabled={readonly}\n                value={[presP]}\n                onValueChange={(value) => setPresP(value[0])}\n                doubleClickHandler={() => setPresP(0)}\n                max={2}\n                min={-2}\n                step={0.01}\n                className=\"flex h-4 w-full\"\n              />\n            </HoverCardTrigger>\n            <OptionHover type=\"pres\" side=\"left\" />\n          </HoverCard> */}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Anthropic.tsx",
    "content": "import { useMemo } from 'react';\nimport { getSettingsKeys } from '~/data-provider/data-provider/src';\nimport type { SettingDefinition } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps } from '~/common';\nimport { componentMapping } from '~/components/SidePanel/Parameters/components';\nimport { presetSettings } from '~/components/SidePanel/Parameters/settings';\n\nexport default function AnthropicSettings({\n  conversation,\n  setOption,\n  models,\n  readonly,\n}: TModelSelectProps) {\n  const parameters = useMemo(() => {\n    const [combinedKey, endpointKey] = getSettingsKeys(\n      conversation?.endpointType ?? conversation?.endpoint ?? '',\n      conversation?.model ?? '',\n    );\n    return presetSettings[combinedKey] ?? presetSettings[endpointKey];\n  }, [conversation]);\n\n  if (!parameters) {\n    return null;\n  }\n\n  const renderComponent = (setting: SettingDefinition | undefined) => {\n    if (!setting) {\n      return null;\n    }\n    const Component = componentMapping[setting.component];\n    if (!Component) {\n      return null;\n    }\n    const { key, default: defaultValue, ...rest } = setting;\n\n    const props = {\n      key,\n      settingKey: key,\n      defaultValue,\n      ...rest,\n      readonly,\n      setOption,\n      conversation,\n    };\n\n    if (key === 'model') {\n      return <Component {...props} options={models} />;\n    }\n\n    return <Component {...props} />;\n  };\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden p-3\">\n      <div className=\"grid grid-cols-1 gap-6 md:grid-cols-5\">\n        <div className=\"flex flex-col gap-6 md:col-span-3\">\n          {parameters.col1.map(renderComponent)}\n        </div>\n        <div className=\"flex flex-col gap-6 md:col-span-2\">\n          {parameters.col2.map(renderComponent)}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Assistants.tsx",
    "content": "import { useState, useMemo, useEffect } from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport type { Assistant, TPreset } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps, Option } from '~/common';\nimport {\n  cn,\n  defaultTextProps,\n  removeFocusRings,\n  mapAssistants,\n  createDropdownSetter,\n} from '~/utils';\nimport { Label, HoverCard, SelectDropDown, HoverCardTrigger } from '~/components/ui';\nimport { useLocalize, useDebouncedInput, useAssistantListMap } from '~/hooks';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nexport default function Settings({ conversation, setOption, models, readonly }: TModelSelectProps) {\n  const localize = useLocalize();\n  const defaultOption = useMemo(\n    () => ({ label: localize('com_endpoint_use_active_assistant'), value: '' }),\n    [localize],\n  );\n\n  const assistantListMap = useAssistantListMap((res) => mapAssistants(res.data));\n\n  const { model, endpoint, assistant_id, endpointType, promptPrefix, instructions } =\n    conversation ?? {};\n\n  const currentList = useMemo(\n    () => Object.values(assistantListMap[endpoint ?? ''] ?? {}) as Assistant[],\n    [assistantListMap, endpoint],\n  );\n\n  const assistants = useMemo(() => {\n    const currentAssistants = currentList.map(({ id, name }) => ({\n      label: name,\n      value: id,\n    }));\n\n    return [defaultOption, ...currentAssistants].filter(Boolean);\n  }, [currentList, defaultOption]);\n\n  const [onPromptPrefixChange, promptPrefixValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'promptPrefix',\n    initialValue: promptPrefix,\n  });\n  const [onInstructionsChange, instructionsValue] = useDebouncedInput({\n    setOption,\n    optionKey: 'instructions',\n    initialValue: instructions,\n  });\n\n  const activeAssistant = useMemo(() => {\n    if (assistant_id != null && assistant_id) {\n      return assistantListMap[endpoint ?? '']?.[assistant_id] as Assistant | null;\n    }\n\n    return null;\n  }, [assistant_id, assistantListMap, endpoint]);\n\n  const modelOptions = useMemo(() => {\n    return models.map((model) => ({\n      label:\n        model === activeAssistant?.model\n          ? `${model} (${localize('com_endpoint_assistant_model')})`\n          : model,\n      value: model,\n    }));\n  }, [models, activeAssistant, localize]);\n\n  const [assistantValue, setAssistantValue] = useState<Option>(\n    activeAssistant != null\n      ? { label: activeAssistant.name ?? '', value: activeAssistant.id }\n      : defaultOption,\n  );\n\n  useEffect(() => {\n    if (assistantValue.value === '') {\n      setOption('presetOverride')({\n        assistant_id: assistantValue.value,\n      } as Partial<TPreset>);\n    }\n\n    // Reason: `setOption` causes a re-render on every update\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [assistantValue]);\n\n  if (!conversation) {\n    return null;\n  }\n\n  const setModel = setOption('model');\n  const setAssistant = (value: string) => {\n    if (!value) {\n      setAssistantValue(defaultOption);\n      return;\n    }\n\n    const assistant = assistantListMap[endpoint ?? '']?.[value] as Assistant | null;\n    if (!assistant) {\n      setAssistantValue(defaultOption);\n      return;\n    }\n\n    setAssistantValue({\n      label: assistant.name ?? '',\n      value: assistant.id || '',\n    });\n    setOption('assistant_id')(assistant.id);\n    if (assistant.model) {\n      setModel(assistant.model);\n    }\n  };\n\n  const optionEndpoint = endpointType ?? endpoint;\n\n  return (\n    <div className=\"grid grid-cols-6 gap-6\">\n      <div className=\"col-span-6 flex flex-col items-center justify-start gap-6 sm:col-span-3\">\n        <div className=\"grid w-full items-center gap-2\">\n          <SelectDropDown\n            value={model ?? ''}\n            setValue={createDropdownSetter(setModel)}\n            availableValues={modelOptions}\n            disabled={readonly}\n            className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusRings)}\n            containerClassName=\"flex w-full resize-none\"\n          />\n        </div>\n      </div>\n      <div className=\"col-span-6 flex flex-col items-center justify-start gap-6 px-3 sm:col-span-3\">\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"grid w-full items-center gap-2\">\n              <SelectDropDown\n                title={localize('com_endpoint_assistant')}\n                value={assistantValue}\n                setValue={createDropdownSetter(setAssistant)}\n                availableValues={assistants as Option[]}\n                disabled={readonly}\n                className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusRings)}\n                containerClassName=\"flex w-full resize-none\"\n              />\n            </div>\n          </HoverCardTrigger>\n          <OptionHover endpoint={optionEndpoint ?? ''} type=\"temp\" side={ESide.Left} />\n        </HoverCard>\n      </div>\n      <div className=\"col-span-6 flex flex-col items-center justify-start gap-6\">\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"promptPrefix\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_prompt_prefix_assistants')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <TextareaAutosize\n            id=\"promptPrefix\"\n            disabled={readonly}\n            value={(promptPrefixValue as string | null | undefined) ?? ''}\n            onChange={onPromptPrefixChange}\n            placeholder={localize('com_endpoint_prompt_prefix_assistants_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex max-h-[240px] min-h-[80px] w-full resize-none px-3 py-2 ',\n            )}\n          />\n        </div>\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"instructions\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_instructions_assistants')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <TextareaAutosize\n            id=\"instructions\"\n            disabled={readonly}\n            value={(instructionsValue as string | null | undefined) ?? ''}\n            onChange={onInstructionsChange}\n            placeholder={localize('com_endpoint_instructions_assistants_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex max-h-[240px] min-h-[80px] w-full resize-none px-3 py-2 ',\n            )}\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Bedrock.tsx",
    "content": "import { useMemo } from 'react';\nimport { getSettingsKeys } from '~/data-provider/data-provider/src';\nimport type { SettingDefinition } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps } from '~/common';\nimport { componentMapping } from '~/components/SidePanel/Parameters/components';\nimport { presetSettings } from '~/components/SidePanel/Parameters/settings';\n\nexport default function BedrockSettings({\n  conversation,\n  setOption,\n  models,\n  readonly,\n}: TModelSelectProps) {\n  const parameters = useMemo(() => {\n    const [combinedKey, endpointKey] = getSettingsKeys(\n      conversation?.endpointType ?? conversation?.endpoint ?? '',\n      conversation?.model ?? '',\n    );\n    return presetSettings[combinedKey] ?? presetSettings[endpointKey];\n  }, [conversation]);\n\n  if (!parameters) {\n    return null;\n  }\n\n  const renderComponent = (setting: SettingDefinition | undefined) => {\n    if (!setting) {\n      return null;\n    }\n    const Component = componentMapping[setting.component];\n    if (!Component) {\n      return null;\n    }\n    const { key, default: defaultValue, ...rest } = setting;\n\n    const props = {\n      key,\n      settingKey: key,\n      defaultValue,\n      ...rest,\n      readonly,\n      setOption,\n      conversation,\n    };\n\n    if (key === 'model') {\n      return <Component {...props} options={models} />;\n    }\n\n    return <Component {...props} />;\n  };\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden p-3\">\n      <div className=\"grid grid-cols-1 gap-6 md:grid-cols-5\">\n        <div className=\"flex flex-col gap-6 md:col-span-3\">\n          {parameters.col1.map(renderComponent)}\n        </div>\n        <div className=\"flex flex-col gap-6 md:col-span-2\">\n          {parameters.col2.map(renderComponent)}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Examples.tsx",
    "content": "import React from 'react';\nimport { Plus, Minus } from 'lucide-react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport type { TExample } from '~/data-provider/data-provider/src';\nimport type { TSetExample } from '~/common';\nimport { Button, Label } from '~/components/ui';\nimport { cn, defaultTextProps } from '~/utils/';\nimport { useLocalize } from '~/hooks';\n\ntype TExamplesProps = {\n  readonly?: boolean;\n  className?: string;\n  examples: TExample[];\n  setExample: TSetExample;\n  addExample: () => void;\n  removeExample: () => void;\n};\n\nfunction Examples({ readonly, examples, setExample, addExample, removeExample }: TExamplesProps) {\n  const localize = useLocalize();\n  return (\n    <>\n      <div id=\"examples-grid\" className=\"grid gap-6 sm:grid-cols-2\">\n        {examples.map((example, idx) => (\n          <React.Fragment key={idx}>\n            {/* Input */}\n            <div\n              className={`col-span-${\n                examples.length === 1 ? '1' : 'full'\n              } flex flex-col items-center justify-start gap-6 sm:col-span-1`}\n            >\n              <div className=\"grid w-full items-center gap-2\">\n                <Label htmlFor={`input-${idx}`} className=\"text-left text-sm font-medium\">\n                  {localize('com_ui_input')}{' '}\n                  <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n                </Label>\n                <TextareaAutosize\n                  id={`input-${idx}`}\n                  disabled={readonly}\n                  value={example.input.content || ''}\n                  onChange={(e) => setExample(idx, 'input', e.target.value ?? null)}\n                  placeholder=\"Set example input. Example is ignored if empty.\"\n                  className={cn(\n                    defaultTextProps,\n                    'flex max-h-[138px] min-h-[75px] w-full resize-none px-3 py-2 ',\n                  )}\n                />\n              </div>\n            </div>\n\n            {/* Output */}\n            <div\n              className={`col-span-${\n                examples.length === 1 ? '1' : 'full'\n              } flex flex-col items-center justify-start gap-6 sm:col-span-1`}\n            >\n              <div className=\"grid w-full items-center gap-2\">\n                <Label htmlFor={`output-${idx}`} className=\"text-left text-sm font-medium\">\n                  {localize('com_endpoint_output')}{' '}\n                  <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n                </Label>\n                <TextareaAutosize\n                  id={`output-${idx}`}\n                  disabled={readonly}\n                  value={example.output.content || ''}\n                  onChange={(e) => setExample(idx, 'output', e.target.value ?? null)}\n                  placeholder={'Set example output. Example is ignored if empty.'}\n                  className={cn(\n                    defaultTextProps,\n                    'flex max-h-[300px] min-h-[75px] w-full resize-none px-3 py-2 ',\n                  )}\n                />\n              </div>\n            </div>\n          </React.Fragment>\n        ))}\n      </div>\n      <div className=\"flex justify-center\">\n        <Button\n          type=\"button\"\n          className=\"mr-2 mt-1 h-auto items-center justify-center bg-transparent px-3 py-2 text-xs font-medium font-normal text-black hover:bg-gray-100 hover:text-black focus:ring-0 focus:ring-offset-0 dark:bg-transparent dark:text-white dark:hover:bg-gray-700 dark:hover:text-white dark:focus:outline-none dark:focus:ring-offset-0\"\n          onClick={removeExample}\n        >\n          <Minus className=\"w-[16px]\" />\n        </Button>\n        <Button\n          type=\"button\"\n          className=\"mt-1 h-auto items-center justify-center bg-transparent px-3 py-2 text-xs font-medium font-normal text-black hover:bg-gray-100 hover:text-black focus:ring-0 focus:ring-offset-0 dark:bg-transparent dark:text-white dark:hover:bg-gray-700 dark:hover:text-white dark:focus:outline-none dark:focus:ring-offset-0\"\n          onClick={addExample}\n        >\n          <Plus className=\"w-[16px]\" />\n        </Button>\n      </div>\n    </>\n  );\n}\n\nexport default Examples;\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Google.tsx",
    "content": "import TextareaAutosize from 'react-textarea-autosize';\nimport { EModelEndpoint, endpointSettings } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps, OnInputNumberChange } from '~/common';\nimport {\n  Input,\n  Label,\n  Slider,\n  HoverCard,\n  InputNumber,\n  SelectDropDown,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { cn, defaultTextProps, optionText, removeFocusOutlines, removeFocusRings } from '~/utils';\nimport OptionHoverAlt from '~/components/SidePanel/Parameters/OptionHover';\nimport { useLocalize, useDebouncedInput } from '~/hooks';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nexport default function Settings({ conversation, setOption, models, readonly }: TModelSelectProps) {\n  const localize = useLocalize();\n  const google = endpointSettings[EModelEndpoint.google];\n  const {\n    model,\n    modelLabel,\n    promptPrefix,\n    temperature,\n    topP,\n    topK,\n    maxContextTokens,\n    maxOutputTokens,\n  } = conversation ?? {};\n\n  const [setMaxContextTokens, maxContextTokensValue] = useDebouncedInput<number | null | undefined>(\n    {\n      setOption,\n      optionKey: 'maxContextTokens',\n      initialValue: maxContextTokens,\n    },\n  );\n\n  if (!conversation) {\n    return null;\n  }\n\n  const setModel = setOption('model');\n  const setModelLabel = setOption('modelLabel');\n  const setPromptPrefix = setOption('promptPrefix');\n  const setTemperature = setOption('temperature');\n  const setTopP = setOption('topP');\n  const setTopK = setOption('topK');\n  const setMaxOutputTokens = setOption('maxOutputTokens');\n\n  return (\n    <div className=\"grid grid-cols-5 gap-6\">\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 sm:col-span-3\">\n        <div className=\"grid w-full items-center gap-2\">\n          <SelectDropDown\n            value={model ?? ''}\n            setValue={setModel}\n            availableValues={models}\n            disabled={readonly}\n            className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusRings)}\n            containerClassName=\"flex w-full resize-none\"\n          />\n        </div>\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"modelLabel\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_custom_name')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <Input\n            id=\"modelLabel\"\n            disabled={readonly}\n            value={modelLabel || ''}\n            onChange={(e) => setModelLabel(e.target.value ?? null)}\n            placeholder={localize('com_endpoint_google_custom_name_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex h-10 max-h-10 w-full resize-none px-3 py-2',\n              removeFocusOutlines,\n            )}\n          />\n        </div>\n        <div className=\"grid w-full items-center gap-2\">\n          <Label htmlFor=\"promptPrefix\" className=\"text-left text-sm font-medium\">\n            {localize('com_endpoint_prompt_prefix')}{' '}\n            <small className=\"opacity-40\">({localize('com_endpoint_default_blank')})</small>\n          </Label>\n          <TextareaAutosize\n            id=\"promptPrefix\"\n            disabled={readonly}\n            value={promptPrefix || ''}\n            onChange={(e) => setPromptPrefix(e.target.value ?? null)}\n            placeholder={localize('com_endpoint_prompt_prefix_placeholder')}\n            className={cn(\n              defaultTextProps,\n              'flex max-h-[138px] min-h-[100px] w-full resize-none px-3 py-2 ',\n            )}\n          />\n        </div>\n      </div>\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 px-3 sm:col-span-2\">\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"mt-1 flex w-full justify-between\">\n              <Label htmlFor=\"max-context-tokens\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_context_tokens')}{' '}\n              </Label>\n              <InputNumber\n                id=\"max-context-tokens\"\n                stringMode={false}\n                disabled={readonly}\n                value={maxContextTokensValue as number}\n                onChange={setMaxContextTokens as OnInputNumberChange}\n                placeholder={localize('com_nav_theme_system')}\n                min={10}\n                max={2000000}\n                step={1000}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                    'w-1/3',\n                  ),\n                )}\n              />\n            </div>\n          </HoverCardTrigger>\n          <OptionHoverAlt\n            description=\"com_endpoint_context_info\"\n            langCode={true}\n            side={ESide.Left}\n          />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"temp-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_temperature')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default')}: {google.temperature.default})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"temp-int\"\n                disabled={readonly}\n                value={temperature}\n                onChange={(value) => setTemperature(value ?? google.temperature.default)}\n                max={google.temperature.max}\n                min={google.temperature.min}\n                step={google.temperature.step}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[temperature ?? google.temperature.default]}\n              onValueChange={(value) => setTemperature(value[0])}\n              onDoubleClick={() => setTemperature(google.temperature.default)}\n              max={google.temperature.max}\n              min={google.temperature.min}\n              step={google.temperature.step}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"temp\" side={ESide.Left} />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"top-p-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_top_p')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: google.topP.default + '' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"top-p-int\"\n                disabled={readonly}\n                value={topP}\n                onChange={(value) => setTopP(value ?? google.topP.default)}\n                max={google.topP.max}\n                min={google.topP.min}\n                step={google.topP.step}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[topP ?? google.topP.default]}\n              onValueChange={(value) => setTopP(value[0])}\n              onDoubleClick={() => setTopP(google.topP.default)}\n              max={google.topP.max}\n              min={google.topP.min}\n              step={google.topP.step}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"topp\" side={ESide.Left} />\n        </HoverCard>\n\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"top-k-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_top_k')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num',{ 0: google.topK.default + '' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"top-k-int\"\n                disabled={readonly}\n                value={topK}\n                onChange={(value) => setTopK(value ?? google.topK.default)}\n                max={google.topK.max}\n                min={google.topK.min}\n                step={google.topK.step}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[topK ?? google.topK.default]}\n              onValueChange={(value) => setTopK(value[0])}\n              onDoubleClick={() => setTopK(google.topK.default)}\n              max={google.topK.max}\n              min={google.topK.min}\n              step={google.topK.step}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"topk\" side={ESide.Left} />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"max-tokens-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_max_output_tokens')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: google.maxOutputTokens.default + '' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"max-tokens-int\"\n                disabled={readonly}\n                value={maxOutputTokens}\n                onChange={(value) => setMaxOutputTokens(Number(value))}\n                max={google.maxOutputTokens.max}\n                min={google.maxOutputTokens.min}\n                step={google.maxOutputTokens.step}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[maxOutputTokens ?? google.maxOutputTokens.default]}\n              onValueChange={(value) => setMaxOutputTokens(value[0])}\n              onDoubleClick={() => setMaxOutputTokens(google.maxOutputTokens.default)}\n              max={google.maxOutputTokens.max}\n              min={google.maxOutputTokens.min}\n              step={google.maxOutputTokens.step}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover\n            endpoint={conversation.endpoint ?? ''}\n            type=\"maxoutputtokens\"\n            side={ESide.Left}\n          />\n        </HoverCard>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/MultiView/GoogleSettings.tsx",
    "content": "import Settings from '../Google';\nimport Examples from '../Examples';\nimport { useSetIndexOptions } from '~/hooks';\nimport { useChatContext } from '~/Providers';\n\nexport default function GoogleView({ conversation, models, isPreset = false }) {\n  const { optionSettings } = useChatContext();\n  const { setOption, setExample, addExample, removeExample } = useSetIndexOptions(\n    isPreset ? conversation : null,\n  );\n  if (!conversation) {\n    return null;\n  }\n\n  const { examples, model } = conversation;\n  const isGenerativeModel = model?.toLowerCase()?.includes('gemini');\n  const isChatModel = !isGenerativeModel && model?.toLowerCase()?.includes('chat');\n  const isTextModel = !isGenerativeModel && !isChatModel && /code|text/.test(model ?? '');\n  const { showExamples } = optionSettings;\n  return showExamples && isChatModel && !isTextModel ? (\n    <Examples\n      examples={examples ?? [{ input: { content: '' }, output: { content: '' } }]}\n      setExample={setExample}\n      addExample={addExample}\n      removeExample={removeExample}\n    />\n  ) : (\n    <Settings conversation={conversation} setOption={setOption} models={models} />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/MultiView/PluginSettings.tsx",
    "content": "import Settings from '../Plugins';\nimport AgentSettings from '../AgentSettings';\nimport { useSetIndexOptions } from '~/hooks';\nimport { useChatContext } from '~/Providers';\n\nexport default function PluginsView({ conversation, models, isPreset = false }) {\n  const { showAgentSettings } = useChatContext();\n  const { setOption, setTools, setAgentOption, checkPluginSelection } = useSetIndexOptions(\n    isPreset ? conversation : null,\n  );\n  if (!conversation) {\n    return null;\n  }\n\n  return showAgentSettings ? (\n    <AgentSettings conversation={conversation} setOption={setAgentOption} models={models} />\n  ) : (\n    <Settings\n      conversation={conversation}\n      setOption={setOption}\n      setTools={setTools}\n      checkPluginSelection={checkPluginSelection}\n      models={models}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/MultiView/index.ts",
    "content": "export { default as GoogleSettings } from './GoogleSettings';\nexport { default as PluginSettings } from './PluginSettings';\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/OpenAI.tsx",
    "content": "import { useMemo } from 'react';\nimport { getSettingsKeys } from '~/data-provider/data-provider/src';\nimport type { SettingDefinition, DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps } from '~/common';\nimport { componentMapping } from '~/components/SidePanel/Parameters/components';\nimport { presetSettings } from '~/components/SidePanel/Parameters/settings';\n\nexport default function OpenAISettings({\n  conversation,\n  setOption,\n  models,\n  readonly,\n}: TModelSelectProps) {\n  const parameters = useMemo(() => {\n    const [combinedKey, endpointKey] = getSettingsKeys(\n      conversation?.endpointType ?? conversation?.endpoint ?? '',\n      conversation?.model ?? '',\n    );\n    return presetSettings[combinedKey] ?? presetSettings[endpointKey];\n  }, [conversation]);\n\n  if (!parameters) {\n    return null;\n  }\n\n  const renderComponent = (setting: SettingDefinition | undefined) => {\n    if (!setting) {\n      return null;\n    }\n    const Component = componentMapping[setting.component];\n    if (!Component) {\n      return null;\n    }\n    const { key, default: defaultValue, ...rest } = setting;\n\n    const props = {\n      key,\n      settingKey: key,\n      defaultValue,\n      ...rest,\n      readonly,\n      setOption,\n      conversation,\n    };\n\n    if (key === 'model') {\n      return <Component {...props} options={models} />;\n    }\n\n    return <Component {...props} />;\n  };\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden p-3\">\n      <div className=\"grid grid-cols-1 gap-6 md:grid-cols-5\">\n        <div className=\"flex flex-col gap-6 md:col-span-3\">\n          {parameters.col1.map(renderComponent)}\n        </div>\n        <div className=\"flex flex-col gap-6 md:col-span-2\">\n          {parameters.col2.map(renderComponent)}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/OptionHover.tsx",
    "content": "import React from 'react';\nimport { HoverCardPortal, HoverCardContent } from '~/components/ui';\nimport { ESide } from '~/common';\nimport { useLocalize } from '~/hooks';\n\ntype TOptionHoverProps = {\n  endpoint: string;\n  type: string;\n  side: ESide;\n};\n\nconst openAI = {\n  max: 'com_endpoint_openai_max',\n  temp: 'com_endpoint_openai_temp',\n  topp: 'com_endpoint_openai_topp',\n  freq: 'com_endpoint_openai_freq',\n  pres: 'com_endpoint_openai_pres',\n  resend: 'com_endpoint_openai_resend_files',\n  detail: 'com_endpoint_openai_detail',\n};\n\nconst types = {\n  anthropic: {\n    temp: 'com_endpoint_anthropic_temp',\n    topp: 'com_endpoint_anthropic_topp',\n    topk: 'com_endpoint_anthropic_topk',\n    maxoutputtokens: 'com_endpoint_anthropic_maxoutputtokens',\n    resend: openAI.resend,\n    promptcache: 'com_endpoint_anthropic_prompt_cache',\n  },\n  google: {\n    temp: 'com_endpoint_google_temp',\n    topp: 'com_endpoint_google_topp',\n    topk: 'com_endpoint_google_topk',\n    maxoutputtokens: 'com_endpoint_google_maxoutputtokens',\n  },\n  openAI,\n  azureOpenAI: openAI,\n  gptPlugins: {\n    func: 'com_endpoint_func_hover',\n    skip: 'com_endpoint_skip_hover',\n    ...openAI,\n  },\n};\n\nfunction OptionHover({ endpoint, type, side }: TOptionHoverProps) {\n  const localize = useLocalize();\n  const text = types[endpoint]?.[type];\n  if (!text) {\n    return null;\n  }\n  return (\n    <HoverCardPortal>\n      <HoverCardContent side={side} className=\"z-[999] w-80\">\n        <div className=\"space-y-2\">\n          <p className=\"text-sm text-gray-600 dark:text-gray-300\">{localize(text)}</p>\n        </div>\n      </HoverCardContent>\n    </HoverCardPortal>\n  );\n}\n\nexport default OptionHover;\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/Plugins.tsx",
    "content": "import { useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport { useAvailablePluginsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps, OnInputNumberChange } from '~/common';\nimport {\n  Input,\n  Label,\n  Slider,\n  HoverCard,\n  InputNumber,\n  SelectDropDown,\n  HoverCardTrigger,\n  MultiSelectDropDown,\n} from '~/components/ui';\nimport {\n  removeFocusOutlines,\n  defaultTextProps,\n  removeFocusRings,\n  processPlugins,\n  selectPlugins,\n  optionText,\n  cn,\n} from '~/utils';\nimport OptionHoverAlt from '~/components/SidePanel/Parameters/OptionHover';\nimport { useLocalize, useDebouncedInput } from '~/hooks';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\nimport store from '~/store';\n\nexport default function Settings({\n  conversation,\n  setOption,\n  setTools,\n  checkPluginSelection,\n  models,\n  readonly,\n}: TModelSelectProps & {\n  setTools: (newValue: string, remove?: boolean | undefined) => void;\n  checkPluginSelection: (value: string) => boolean;\n}) {\n  const localize = useLocalize();\n  const availableTools = useRecoilValue(store.availableTools);\n  const { data: allPlugins } = useAvailablePluginsQuery({\n    select: selectPlugins,\n  });\n\n  const conversationTools: TPlugin[] = useMemo(() => {\n    if (!conversation?.tools) {\n      return [];\n    }\n    return processPlugins(conversation.tools, allPlugins?.map);\n  }, [conversation, allPlugins]);\n\n  const availablePlugins = useMemo(() => {\n    if (!availableTools) {\n      return [];\n    }\n\n    return Object.values(availableTools);\n  }, [availableTools]);\n\n  const {\n    model,\n    modelLabel,\n    chatGptLabel,\n    promptPrefix,\n    temperature,\n    top_p: topP,\n    frequency_penalty: freqP,\n    presence_penalty: presP,\n    maxContextTokens,\n  } = conversation ?? {};\n\n  const [setChatGptLabel, chatGptLabelValue] = useDebouncedInput<string | null | undefined>({\n    setOption,\n    optionKey: 'chatGptLabel',\n    initialValue: modelLabel ?? chatGptLabel,\n  });\n  const [setPromptPrefix, promptPrefixValue] = useDebouncedInput<string | null | undefined>({\n    setOption,\n    optionKey: 'promptPrefix',\n    initialValue: promptPrefix,\n  });\n  const [setTemperature, temperatureValue] = useDebouncedInput<number | null | undefined>({\n    setOption,\n    optionKey: 'temperature',\n    initialValue: temperature,\n  });\n  const [setTopP, topPValue] = useDebouncedInput<number | null | undefined>({\n    setOption,\n    optionKey: 'top_p',\n    initialValue: topP,\n  });\n  const [setFreqP, freqPValue] = useDebouncedInput<number | null | undefined>({\n    setOption,\n    optionKey: 'frequency_penalty',\n    initialValue: freqP,\n  });\n  const [setPresP, presPValue] = useDebouncedInput<number | null | undefined>({\n    setOption,\n    optionKey: 'presence_penalty',\n    initialValue: presP,\n  });\n  const [setMaxContextTokens, maxContextTokensValue] = useDebouncedInput<number | null | undefined>(\n    {\n      setOption,\n      optionKey: 'maxContextTokens',\n      initialValue: maxContextTokens,\n    },\n  );\n\n  const setModel = setOption('model');\n\n  if (!conversation) {\n    return null;\n  }\n\n  return (\n    <div className=\"grid grid-cols-5 gap-6\">\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 sm:col-span-3\">\n        <div className=\"grid w-full items-center gap-2\">\n          <SelectDropDown\n            title={localize('com_endpoint_completion_model')}\n            value={model ?? ''}\n            setValue={setModel}\n            availableValues={models}\n            disabled={readonly}\n            className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusRings)}\n            containerClassName=\"flex w-full resize-none\"\n          />\n        </div>\n        <>\n          <div className=\"grid w-full items-center gap-2\">\n            <Label htmlFor=\"chatGptLabel\" className=\"text-left text-sm font-medium\">\n              {localize('com_endpoint_custom_name')}{' '}\n              <small className=\"opacity-40\">{localize('com_endpoint_default_empty')}</small>\n            </Label>\n            <Input\n              id=\"chatGptLabel\"\n              disabled={readonly}\n              value={chatGptLabelValue || ''}\n              onChange={(e) => setChatGptLabel(e.target.value ?? null)}\n              placeholder={localize('com_endpoint_openai_custom_name_placeholder')}\n              className={cn(\n                defaultTextProps,\n                'flex h-10 max-h-10 w-full resize-none px-3 py-2',\n                removeFocusOutlines,\n              )}\n            />\n          </div>\n          <div className=\"grid w-full items-center gap-2\">\n            <Label htmlFor=\"promptPrefix\" className=\"text-left text-sm font-medium\">\n              {localize('com_endpoint_prompt_prefix')}{' '}\n              <small className=\"opacity-40\">{localize('com_endpoint_default_empty')}</small>\n            </Label>\n            <TextareaAutosize\n              id=\"promptPrefix\"\n              disabled={readonly}\n              value={promptPrefixValue || ''}\n              onChange={(e) => setPromptPrefix(e.target.value ?? null)}\n              placeholder={localize(\n                'com_endpoint_plug_set_custom_instructions_for_gpt_placeholder',\n              )}\n              className={cn(\n                defaultTextProps,\n                'flex max-h-[138px] min-h-[100px] w-full resize-none px-3 py-2 ',\n              )}\n            />\n          </div>\n        </>\n      </div>\n      <div className=\"col-span-5 flex flex-col items-center justify-start gap-6 px-3 sm:col-span-2\">\n        <MultiSelectDropDown\n          showAbove={false}\n          showLabel={false}\n          setSelected={setTools}\n          value={conversationTools}\n          optionValueKey=\"pluginKey\"\n          availableValues={availablePlugins}\n          isSelected={checkPluginSelection}\n          searchPlaceholder={localize('com_ui_select_search_plugin')}\n          className={cn(defaultTextProps, 'flex w-full resize-none', removeFocusOutlines)}\n          optionsClassName=\"w-full max-h-[275px] dark:bg-gray-700 z-10 border dark:border-gray-600\"\n          containerClassName=\"flex w-full resize-none border border-transparent\"\n          labelClassName=\"dark:text-white\"\n        />\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"mt-1 flex w-full justify-between\">\n              <Label htmlFor=\"max-context-tokens\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_context_tokens')}{' '}\n              </Label>\n              <InputNumber\n                id=\"max-context-tokens\"\n                stringMode={false}\n                disabled={readonly}\n                value={maxContextTokensValue as number}\n                onChange={setMaxContextTokens as OnInputNumberChange}\n                placeholder={localize('com_nav_theme_system')}\n                min={10}\n                max={2000000}\n                step={1000}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                    'w-1/3',\n                  ),\n                )}\n              />\n            </div>\n          </HoverCardTrigger>\n          <OptionHoverAlt\n            description=\"com_endpoint_context_info\"\n            langCode={true}\n            side={ESide.Left}\n          />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"temp-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_temperature')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: '0.8' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"temp-int\"\n                disabled={readonly}\n                value={temperatureValue}\n                onChange={(value) => setTemperature(Number(value))}\n                max={2}\n                min={0}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[temperatureValue ?? 0.8]}\n              onValueChange={(value) => setTemperature(value[0])}\n              onDoubleClick={() => setTemperature(0.8)}\n              max={2}\n              min={0}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"temp\" side={ESide.Left} />\n        </HoverCard>\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"top-p-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_top_p')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: '1' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"top-p-int\"\n                disabled={readonly}\n                value={topPValue}\n                onChange={(value) => setTopP(Number(value))}\n                max={1}\n                min={0}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[topPValue ?? 1]}\n              onValueChange={(value) => setTopP(value[0])}\n              onDoubleClick={() => setTopP(1)}\n              max={1}\n              min={0}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"topp\" side={ESide.Left} />\n        </HoverCard>\n\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"freq-penalty-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_frequency_penalty')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: '0' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"freq-penalty-int\"\n                disabled={readonly}\n                value={freqPValue}\n                onChange={(value) => setFreqP(Number(value))}\n                max={2}\n                min={-2}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[freqPValue ?? 0]}\n              onValueChange={(value) => setFreqP(value[0])}\n              onDoubleClick={() => setFreqP(0)}\n              max={2}\n              min={-2}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"freq\" side={ESide.Left} />\n        </HoverCard>\n\n        <HoverCard openDelay={300}>\n          <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n            <div className=\"flex justify-between\">\n              <Label htmlFor=\"pres-penalty-int\" className=\"text-left text-sm font-medium\">\n                {localize('com_endpoint_presence_penalty')}{' '}\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default_with_num', { 0: '0' })})\n                </small>\n              </Label>\n              <InputNumber\n                id=\"pres-penalty-int\"\n                disabled={readonly}\n                value={presPValue}\n                onChange={(value) => setPresP(Number(value))}\n                max={2}\n                min={-2}\n                step={0.01}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            </div>\n            <Slider\n              disabled={readonly}\n              value={[presPValue ?? 0]}\n              onValueChange={(value) => setPresP(value[0])}\n              onDoubleClick={() => setPresP(0)}\n              max={2}\n              min={-2}\n              step={0.01}\n              className=\"flex h-4 w-full\"\n            />\n          </HoverCardTrigger>\n          <OptionHover endpoint={conversation.endpoint ?? ''} type=\"pres\" side={ESide.Left} />\n        </HoverCard>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/index.ts",
    "content": "export { default as Advanced } from './Advanced';\nexport { default as AssistantsSettings } from './Assistants';\nexport { default as BedrockSettings } from './Bedrock';\nexport { default as OpenAISettings } from './OpenAI';\nexport { default as GoogleSettings } from './Google';\nexport { default as PluginsSettings } from './Plugins';\nexport { default as Examples } from './Examples';\nexport { default as AgentSettings } from './AgentSettings';\nexport { default as AnthropicSettings } from './Anthropic';\nexport * from './settings';\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/Settings/settings.ts",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { FC } from 'react';\nimport type { TModelSelectProps } from '~/common';\nimport { GoogleSettings, PluginSettings } from './MultiView';\nimport AssistantsSettings from './Assistants';\nimport AnthropicSettings from './Anthropic';\nimport BedrockSettings from './Bedrock';\nimport OpenAISettings from './OpenAI';\n\nconst settings: { [key: string]: FC<TModelSelectProps> | undefined } = {\n  [EModelEndpoint.assistants]: AssistantsSettings,\n  [EModelEndpoint.azureAssistants]: AssistantsSettings,\n  [EModelEndpoint.agents]: OpenAISettings,\n  [EModelEndpoint.openAI]: OpenAISettings,\n  [EModelEndpoint.custom]: OpenAISettings,\n  [EModelEndpoint.azureOpenAI]: OpenAISettings,\n  [EModelEndpoint.anthropic]: AnthropicSettings,\n  [EModelEndpoint.bedrock]: BedrockSettings,\n};\n\nexport const getSettings = () => {\n  return {\n    settings,\n    multiViewSettings: {\n      [EModelEndpoint.google]: GoogleSettings,\n      [EModelEndpoint.gptPlugins]: PluginSettings,\n    },\n  };\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/URLIcon.tsx",
    "content": "import React, { memo } from 'react';\n\nexport const URLIcon = memo(\n  ({\n    iconURL,\n    altName,\n    containerStyle = { width: '20', height: '20' },\n    imageStyle = { width: '100%', height: '100%' },\n    className = 'icon-xl mr-1 shrink-0 overflow-hidden rounded-full',\n  }: {\n    iconURL: string;\n    altName?: string | null;\n    className?: string;\n    containerStyle?: React.CSSProperties;\n    imageStyle?: React.CSSProperties;\n  }) => (\n    <div className={className} style={containerStyle}>\n      <img src={iconURL} alt={altName ?? ''} style={imageStyle} className=\"object-cover\" />\n    </div>\n  ),\n);\n"
  },
  {
    "path": "src/frontend/client/src/components/Endpoints/index.ts",
    "content": "export { default as Icon } from './Icon';\nexport { default as MinimalIcon } from './MinimalIcon';\nexport { default as ConvoIcon } from './ConvoIcon';\nexport { default as EndpointIcon } from './EndpointIcon';\nexport { default as ConvoIconURL } from './ConvoIconURL';\nexport { default as EndpointSettings } from './EndpointSettings';\nexport { default as SaveAsPresetDialog } from './SaveAsPresetDialog';\nexport { default as AlternativeSettings } from './AlternativeSettings';\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/ActionButton.tsx",
    "content": "import React from 'react';\nimport { CrossIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype ActionButtonProps = {\n  onClick: () => void;\n};\n\nexport default function ActionButton({ onClick }: ActionButtonProps) {\n  return (\n    <div className=\"w-32\">\n      <Button\n        className=\"w-full rounded-md border border-black bg-white p-0 text-black hover:bg-black hover:text-white\"\n        onClick={onClick}\n      >\n        Action Button\n      </Button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/DeleteIconButton.tsx",
    "content": "import React from 'react';\nimport { CrossIcon, TrashIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype DeleteIconButtonProps = {\n  onClick: () => void;\n};\n\nexport default function DeleteIconButton({ onClick }: DeleteIconButtonProps) {\n  return (\n    <div className=\"w-fit\">\n      <Button className=\"bg-red-400 p-3\" onClick={onClick}>\n        <TrashIcon />\n      </Button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileDashboardView.tsx",
    "content": "import React from 'react';\nimport VectorStoreSidePanel from './VectorStore/VectorStoreSidePanel';\nimport { Outlet, useNavigate, useParams } from 'react-router-dom';\nimport { Button } from '../ui';\n\nconst FileDashboardView = () => {\n  const params = useParams();\n  const navigate = useNavigate();\n  return (\n    <div className=\"bg-[#f9f9f9] p-0 lg:p-7\">\n      <div className=\"ml-3 mt-3 flex flex-row justify-between\">\n        {params.vectorStoreId && (\n          <Button\n            className=\"block lg:hidden\"\n            variant={'outline'}\n            size={'sm'}\n            onClick={() => {\n              navigate('/d');\n            }}\n          >\n            Go back\n          </Button>\n        )}\n      </div>\n      <div className=\"flex h-screen max-w-full flex-row divide-x bg-[#f9f9f9]\">\n        <div className={`w-full lg:w-1/3 ${params.vectorStoreId ? 'hidden lg:block' : ''}`}>\n          <VectorStoreSidePanel />\n        </div>\n        <div className={`w-full lg:w-2/3 ${params.vectorStoreId ? '' : 'hidden lg:block'}`}>\n          <div className=\"m-2 overflow-x-auto\">\n            <Outlet />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default FileDashboardView;\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/DataTableFile.tsx",
    "content": "import * as React from 'react';\nimport { ListFilter } from 'lucide-react';\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n} from '@tanstack/react-table';\nimport type {\n  ColumnDef,\n  SortingState,\n  VisibilityState,\n  ColumnFiltersState,\n} from '@tanstack/react-table';\nimport { FileContext } from '~/data-provider/data-provider/src';\nimport type { AugmentedColumnDef } from '~/common';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport {\n  Button,\n  Input,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n  DropdownMenu,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n} from '~/components/ui';\nimport { useDeleteFilesFromTable } from '~/hooks/Files';\nimport { TrashIcon, Spinner } from '~/components/svg';\nimport useLocalize from '~/hooks/useLocalize';\nimport ActionButton from '../ActionButton';\nimport UploadFileButton from './UploadFileButton';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nconst contextMap = {\n  [FileContext.filename]: 'com_ui_name',\n  [FileContext.updatedAt]: 'com_ui_date',\n  [FileContext.filterSource]: 'com_ui_storage',\n  [FileContext.context]: 'com_ui_context',\n  [FileContext.bytes]: 'com_ui_size',\n};\n\ntype Style = { width?: number | string; maxWidth?: number | string; minWidth?: number | string };\n\nexport default function DataTableFile<TData, TValue>({\n  columns,\n  data,\n}: DataTableProps<TData, TValue>) {\n  const localize = useLocalize();\n  const [isDeleting, setIsDeleting] = React.useState(false);\n  const [rowSelection, setRowSelection] = React.useState({});\n  const [sorting, setSorting] = React.useState<SortingState>([]);\n  const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);\n  const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});\n  const { deleteFiles } = useDeleteFilesFromTable(() => setIsDeleting(false));\n\n  const table = useReactTable({\n    data,\n    columns,\n    onSortingChange: setSorting,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    getPaginationRowModel: getPaginationRowModel(),\n    onRowSelectionChange: setRowSelection,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n  });\n\n  return (\n    <>\n      <div className=\"mt-2 flex flex-col items-start\">\n        <h2 className=\"text-lg\">\n          <strong>Files</strong>\n        </h2>\n        <div className=\"mt-3 flex w-full flex-col-reverse justify-between md:flex-row\">\n          <div className=\"mt-3 flex w-full flex-row justify-center gap-x-3 md:m-0 md:justify-start\">\n            <ActionButton\n              onClick={() => {\n                console.log('click');\n              }}\n            />\n            <Button\n              variant=\"ghost\"\n              onClick={() => {\n                setIsDeleting(true);\n                const filesToDelete = table\n                  .getFilteredSelectedRowModel()\n                  .rows.map((row) => row.original);\n                deleteFiles({ files: filesToDelete as TFile[] });\n                setRowSelection({});\n              }}\n              className=\"ml-1 gap-2 dark:hover:bg-gray-850/25 sm:ml-0\"\n              disabled={!table.getFilteredSelectedRowModel().rows.length || isDeleting}\n            >\n              {isDeleting ? (\n                <Spinner className=\"h-4 w-4\" />\n              ) : (\n                <TrashIcon className=\"h-4 w-4 text-red-400\" />\n              )}\n              {localize('com_ui_delete')}\n            </Button>\n          </div>\n          <div className=\"flex w-full flex-row gap-x-3\">\n            {' '}\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button variant=\"outline\" className=\"ml-auto border border-border-medium\">\n                  <ListFilter className=\"h-4 w-4\" />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent\n                align=\"end\"\n                className=\"z-[1001] dark:border-gray-700 dark:bg-gray-850\"\n              >\n                {table\n                  .getAllColumns()\n                  .filter((column) => column.getCanHide())\n                  .map((column) => {\n                    return (\n                      <DropdownMenuCheckboxItem\n                        key={column.id}\n                        className=\"cursor-pointer capitalize dark:text-white dark:hover:bg-gray-800\"\n                        checked={column.getIsVisible()}\n                        onCheckedChange={(value) => column.toggleVisibility(Boolean(value))}\n                      >\n                        {localize(contextMap[column.id])}\n                      </DropdownMenuCheckboxItem>\n                    );\n                  })}\n              </DropdownMenuContent>\n            </DropdownMenu>\n            <Input\n              placeholder={localize('com_files_filter')}\n              value={(table.getColumn('filename')?.getFilterValue() as string | undefined) ?? ''}\n              onChange={(event) => table.getColumn('filename')?.setFilterValue(event.target.value)}\n              className=\"max-w-sm border-border-medium placeholder:text-text-secondary\"\n            />\n            <UploadFileButton onClick={() => console.log('click')} />\n          </div>\n        </div>\n      </div>\n      <div className=\"relative mt-3 max-h-[25rem] min-h-0 overflow-y-auto rounded-md border border-black/10 pb-4 dark:border-white/10 sm:min-h-[28rem]\">\n        <Table className=\"w-full min-w-[600px] border-separate border-spacing-0\">\n          <TableHeader>\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id}>\n                {headerGroup.headers.map((header, index) => {\n                  const style: Style = { maxWidth: '32px', minWidth: '125px' };\n                  if (header.id === 'filename') {\n                    style.maxWidth = '25%';\n                    style.width = '25%';\n                    style.minWidth = '150px';\n                  }\n                  if (header.id === 'icon') {\n                    style.width = '25px';\n                    style.maxWidth = '25px';\n                    style.minWidth = '35px';\n                  }\n                  if (header.id === 'vectorStores') {\n                    style.maxWidth = '50%';\n                    style.width = '50%';\n                    style.minWidth = '300px';\n                  }\n\n                  if (index === 0 && header.id === 'select') {\n                    style.width = '25px';\n                    style.maxWidth = '25px';\n                    style.minWidth = '35px';\n                  }\n                  return (\n                    <TableHead\n                      key={header.id}\n                      className=\"align-start sticky top-0 rounded-t border-b border-black/10 bg-white px-2 py-1 text-left font-medium text-gray-700 dark:border-white/10 dark:bg-gray-700 dark:text-gray-100 sm:px-4 sm:py-2\"\n                      style={style}\n                    >\n                      {header.isPlaceholder\n                        ? null\n                        : flexRender(header.column.columnDef.header, header.getContext())}\n                    </TableHead>\n                  );\n                })}\n              </TableRow>\n            ))}\n          </TableHeader>\n          <TableBody>\n            {table.getRowModel().rows.length ? (\n              table.getRowModel().rows.map((row) => (\n                <TableRow\n                  key={row.id}\n                  data-state={row.getIsSelected() && 'selected'}\n                  className=\"border-b border-black/10 text-left text-gray-600 dark:border-white/10 dark:text-gray-300 [tr:last-child_&]:border-b-0\"\n                >\n                  {row.getVisibleCells().map((cell, index) => {\n                    const maxWidth =\n                      (cell.column.columnDef as AugmentedColumnDef<TData, TValue>).meta?.size ??\n                      'auto';\n\n                    const style: Style = {};\n                    if (cell.column.id === 'filename') {\n                      style.maxWidth = maxWidth;\n                    } else if (index === 0) {\n                      style.maxWidth = '20px';\n                    }\n\n                    return (\n                      <TableCell\n                        key={cell.id}\n                        className=\"align-start overflow-x-auto px-2 py-1 text-xs sm:px-4 sm:py-2 sm:text-sm [tr[data-disabled=true]_&]:opacity-50\"\n                        style={style}\n                      >\n                        {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                      </TableCell>\n                    );\n                  })}\n                </TableRow>\n              ))\n            ) : (\n              <TableRow>\n                <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                  {localize('com_files_no_results')}\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n      <div className=\"ml-4 mr-4 mt-4 flex h-auto items-center justify-end space-x-2 py-4 sm:ml-0 sm:mr-0 sm:h-0\">\n        <div className=\"text-muted-foreground ml-2 flex-1 text-sm\">\n          {localize(\n            'com_files_number_selected', {\n              0: `${table.getFilteredSelectedRowModel().rows.length}`,\n              1: `${table.getFilteredRowModel().rows.length}`,\n            },\n          )}\n        </div>\n        <Button\n          className=\"dark:border-gray-500 dark:hover:bg-gray-600\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.previousPage()}\n          disabled={!table.getCanPreviousPage()}\n        >\n          {localize('com_ui_prev')}\n        </Button>\n        <Button\n          className=\"dark:border-gray-500 dark:hover:bg-gray-600\"\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => table.nextPage()}\n          disabled={!table.getCanNextPage()}\n        >\n          {localize('com_ui_next')}\n        </Button>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/DataTableFilePreview.tsx",
    "content": "import React from 'react';\nimport DataTableFile from './DataTableFile';\nimport { TVectorStore } from '~/common';\nimport { files } from '../../Chat/Input/Files/Table';\nimport { fileTableColumns } from './../FileList/FileTableColumns';\n\nconst vectorStoresAttached: TVectorStore[] = [\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n  {\n    name: 'vector 1 vector 1',\n    created_at: '2022-01-01T10:00:00',\n    _id: 'id',\n    object: 'vector_store',\n  },\n];\n\nfiles.forEach((file) => {\n  file['vectorsAttached'] = vectorStoresAttached;\n});\n\nexport default function DataTableFilePreview() {\n  return (\n    <div>\n      <DataTableFile columns={fileTableColumns} data={files} />\n      <div className=\"mt-5 sm:mt-4\" />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/EmptyFilePreview.tsx",
    "content": "import React from 'react';\n\nexport default function EmptyFilePreview() {\n  return (\n    <div className=\"h-full w-full content-center text-center font-bold\">\n      Select a file to view details.\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FileList.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport React from 'react';\nimport FileListItem from './FileListItem';\nimport FileListItem2 from './FileListItem2';\n\ntype FileListProps = {\n  files: TFile[];\n  deleteFile: (id: string | undefined) => void;\n  attachedVectorStores: { name: string }[];\n};\n\nexport default function FileList({ files, deleteFile, attachedVectorStores }: FileListProps) {\n  return (\n    <div className=\"h-[85vh] overflow-y-auto\">\n      {files.map((file) => (\n        // <FileListItem key={file._id} file={file} deleteFile={deleteFile} width=\"100%\" />\n        <FileListItem2\n          key={file._id}\n          file={file}\n          deleteFile={deleteFile}\n          attachedVectorStores={attachedVectorStores}\n        />\n      ))}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FileListItem.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport React from 'react';\nimport { TrashIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype FileListItemProps = {\n  file: TFile;\n  deleteFile: (id: string | undefined) => void;\n  width?: string;\n};\n\nexport default function FileListItem({ file, deleteFile, width = '400px' }: FileListItemProps) {\n  return (\n    <div className=\"w-100 my-3 mr-2 flex cursor-pointer flex-row rounded-md border border-0 bg-white p-4 transition duration-300 ease-in-out hover:bg-slate-200\">\n      <div className=\"flex w-1/2 flex-col justify-around align-middle\">\n        <strong>{file.filename}</strong>\n        <p className=\"text-sm text-gray-500\">{file.object}</p>\n      </div>\n      <div className=\"w-2/6 text-gray-500\">\n        <p>({file.bytes / 1000}KB)</p>\n        <p className=\"text-sm\">{file.createdAt?.toString()}</p>\n      </div>\n      <div className=\"flex w-1/6 justify-around\">\n        <Button\n          className=\"my-0 ml-3 bg-transparent p-0 text-[#666666] hover:bg-slate-200\"\n          onClick={() => deleteFile(file._id)}\n        >\n          <TrashIcon className=\"m-0 p-0\" />\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FileListItem2.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport { FileIcon, PlusIcon } from 'lucide-react';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { DotsIcon, TrashIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype FileListItemProps = {\n  file: TFile;\n  deleteFile: (id: string | undefined) => void;\n  attachedVectorStores: { name: string }[];\n};\n\nexport default function FileListItem2({\n  file,\n  deleteFile,\n  attachedVectorStores,\n}: FileListItemProps) {\n  const navigate = useNavigate();\n\n  return (\n    <div\n      onClick={() => {\n        navigate('file_id_abcdef');\n      }}\n      className=\"w-100 mt-2 flex h-fit cursor-pointer flex-row rounded-md border border-0 bg-white p-4 transition duration-300 ease-in-out hover:bg-slate-200\"\n    >\n      <div className=\"flex w-10/12 flex-col justify-around md:flex-row\">\n        <div className=\"flex w-2/5 flex-row\">\n          <div className=\"w-1/4 content-center\">\n            <FileIcon className=\"m-0 size-5 p-0\" />\n          </div>\n          <div className=\"w-3/4 content-center\">{file.filename}</div>\n        </div>\n        <div className=\"flex w-fit flex-row flex-wrap text-gray-500 md:w-3/5\">\n          {attachedVectorStores.map((vectorStore, index) => {\n            if (index === 4) {\n              return (\n                <span\n                  key={index}\n                  className=\"ml-2 mt-1 flex flex-row items-center rounded-full bg-[#f5f5f5] px-2 text-xs\"\n                >\n                  <PlusIcon className=\"h-3 w-3\" />\n                  &nbsp;\n                  {attachedVectorStores.length - index} more\n                </span>\n              );\n            }\n            if (index > 4) {\n              return null;\n            }\n            return (\n              <span\n                key={index}\n                className=\"ml-2 mt-1 content-center rounded-full bg-[#f2f8ec] px-2 text-xs text-[#91c561]\"\n              >\n                {vectorStore.name}\n              </span>\n            );\n          })}\n        </div>\n      </div>\n      <div className=\"mr-0 flex w-2/12 flex-col items-center justify-evenly sm:mr-4 md:flex-row\">\n        <Button className=\"w-min content-center bg-transparent text-gray-500 hover:bg-slate-200\">\n          <DotsIcon className=\"text-grey-100\" />\n        </Button>\n        <Button\n          className=\"w-min bg-transparent text-[#666666] hover:bg-slate-200\"\n          onClick={() => deleteFile(file._id)}\n        >\n          <TrashIcon className=\"\" />\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FilePreview.tsx",
    "content": "import { TFile } from '~/data-provider/data-provider/src/dist/types';\nimport React, { useState } from 'react';\nimport { TThread, TVectorStore } from '~/common';\nimport { CheckMark, TrashIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\nimport DeleteIconButton from '../DeleteIconButton';\nimport VectorStoreButton from '../VectorStore/VectorStoreButton';\nimport { CircleIcon, Clock3Icon, InfoIcon } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\n\nconst tempFile: TFile = {\n  filename: 'File1.jpg',\n  object: 'file',\n  bytes: 10000,\n  createdAt: '2022-01-01T10:00:00',\n  _id: '1',\n  type: 'image',\n  usage: 12,\n  user: 'abc',\n  file_id: 'file_id',\n  embedded: true,\n  filepath: 'filepath',\n};\n\nconst tempThreads: TThread[] = [\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n  { id: 'thead_id', createdAt: '2022-01-01T10:00:00' },\n];\n\nconst tempVectorStoresAttached: TVectorStore[] = [\n  { name: 'vector 1', created_at: '2022-01-01T10:00:00', _id: 'id', object: 'vector_store' },\n  { name: 'vector 1', created_at: '2022-01-01T10:00:00', _id: 'id', object: 'vector_store' },\n  { name: 'vector 1', created_at: '2022-01-01T10:00:00', _id: 'id', object: 'vector_store' },\n];\n\nexport default function FilePreview() {\n  const [file, setFile] = useState(tempFile);\n  const [threads, setThreads] = useState(tempThreads);\n  const [vectorStoresAttached, setVectorStoresAttached] = useState(tempVectorStoresAttached);\n  const params = useParams();\n\n  return (\n    <div className=\"m-3 bg-white p-2 sm:p-4 md:p-6 lg:p-10\">\n      <div className=\"flex flex-col justify-between md:flex-row\">\n        <div className=\"flex flex-col\">\n          <b className=\"hidden text-sm md:text-base lg:block lg:text-lg\">FILE</b>\n          <b className=\"text-center text-xl md:text-2xl lg:text-left lg:text-3xl\">\n            {file.filename}\n          </b>\n        </div>\n        <div className=\"mt-3 flex flex-row gap-x-3 md:mt-0\">\n          <div>\n            <DeleteIconButton\n              onClick={() => {\n                console.log('click');\n              }}\n            />\n          </div>\n          <div className=\"w-40\">\n            <VectorStoreButton\n              onClick={() => {\n                console.log('click');\n              }}\n            />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"mt-3 flex flex-col\">\n        <div className=\"flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center sm:w-1/4 md:w-2/5\">\n            <InfoIcon className=\"size-4 text-gray-500\" />\n            &nbsp; File ID\n          </span>\n          <span className=\"w-1/2 text-gray-500 sm:w-3/4 md:w-3/5\">{file._id}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center sm:w-1/4 md:w-2/5\">\n            <CircleIcon className=\"m-0 size-4 p-0 text-gray-500\" />\n            &nbsp; Status\n          </span>\n          <div className=\"w-1/2 sm:w-3/4 md:w-3/5\">\n            <span className=\"flex w-20 flex-row items-center justify-evenly rounded-full bg-[#f2f8ec] p-1 text-[#91c561]\">\n              <CheckMark className=\"m-0 p-0\" />\n              <div>{file.object}</div>\n            </span>\n          </div>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center sm:w-1/4 md:w-2/5\">\n            <Clock3Icon className=\"m-0 size-4 p-0 text-gray-500\" />\n            &nbsp; Purpose\n          </span>\n          <span className=\"w-1/2 text-gray-500 sm:w-3/4 md:w-3/5\">{file.message}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center sm:w-1/4 md:w-2/5\">\n            <Clock3Icon className=\"m-0 size-4 p-0 text-gray-500\" />\n            &nbsp; Size\n          </span>\n          <span className=\"w-1/2 text-gray-500 sm:w-3/4 md:w-3/5\">{file.bytes}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center sm:w-1/4 md:w-2/5\">\n            <Clock3Icon className=\"m-0 size-4 p-0 text-gray-500\" />\n            &nbsp; Created At\n          </span>\n          <span className=\"w-1/2 text-gray-500 sm:w-3/4 md:w-3/5\">\n            {file.createdAt?.toString()}\n          </span>\n        </div>\n      </div>\n\n      <div className=\"mt-10 flex flex-col\">\n        <div>\n          <b className=\"text-sm md:text-base lg:text-lg\">Attached To</b>\n        </div>\n        <div className=\"flex flex-col divide-y\">\n          <div className=\"mt-2 flex flex-row\">\n            <div className=\"w-2/5 text-sm md:w-1/2 md:text-base lg:text-lg xl:w-2/3\">\n              Vector Stores\n            </div>\n            <div className=\"w-3/5 text-sm md:w-1/2 md:text-base lg:text-lg xl:w-1/3\">Uploaded</div>\n          </div>\n          <div>\n            {vectorStoresAttached.map((vectors, index) => (\n              <div key={index} className=\"mt-2 flex flex-row\">\n                <div className=\"ml-4 w-2/5 content-center md:w-1/2 xl:w-2/3\">{vectors.name}</div>\n                <div className=\"flex w-3/5 flex-row md:w-1/2 xl:w-1/3\">\n                  <div className=\"content-center text-nowrap\">{vectors.created_at.toString()}</div>\n                  <Button\n                    className=\"m-0 ml-3 h-full bg-transparent p-0 text-[#666666] hover:bg-slate-200\"\n                    onClick={() => {\n                      console.log('Remove from vector store');\n                    }}\n                    variant={'ghost'}\n                  >\n                    <TrashIcon className=\"m-0 p-0\" />\n                  </Button>\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n\n      <div className=\"mt-10 flex flex-col\">\n        <div className=\"flex flex-col divide-y\">\n          <div className=\"flex flex-row\">\n            <div className=\"w-2/5 text-sm md:w-1/2 md:text-base lg:text-lg xl:w-2/3\">Threads</div>\n            <div className=\"w-3/5 text-sm md:w-1/2 md:text-base lg:text-lg xl:w-1/3\">Uploaded</div>\n          </div>\n          <div>\n            {threads.map((thread, index) => (\n              <div key={index} className=\"mt-2 flex flex-row\">\n                <div className=\"ml-4 w-2/5 content-center md:w-1/2 xl:w-2/3\">ID: {thread.id}</div>\n                <div className=\"flex w-3/5 flex-row md:w-1/2 xl:w-1/3\">\n                  <div className=\"content-center text-nowrap\">{thread.createdAt}</div>\n                  <Button\n                    className=\"m-0 ml-3 h-full bg-transparent p-0 text-[#666666] hover:bg-slate-200\"\n                    onClick={() => {\n                      console.log('Remove from thread');\n                    }}\n                  >\n                    <TrashIcon className=\"m-0 p-0\" />\n                  </Button>\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FileSidePanel.tsx",
    "content": "import React from 'react';\nimport FileList from './FileList';\nimport { TFile } from '~/data-provider/data-provider/src/dist/types';\nimport FilesSectionSelector from '../FilesSectionSelector';\nimport { Button, Input } from '~/components/ui';\nimport { ListFilter } from 'lucide-react';\nimport UploadFileButton from './UploadFileButton';\nimport { useLocalize } from '~/hooks';\n\nconst fakeFiles = [\n  {\n    filename: 'File1.jpg',\n    object: 'Description 1',\n    bytes: 10000,\n    createdAt: '2022-01-01T10:00:00',\n    _id: '1',\n  },\n  {\n    filename: 'File2.jpg',\n    object: 'Description 2',\n    bytes: 15000,\n    createdAt: '2022-01-02T15:30:00',\n    _id: '2',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n  {\n    filename: 'File3.jpg',\n    object: 'Description 3',\n    bytes: 20000,\n    createdAt: '2022-01-03T09:45:00',\n    _id: '3',\n  },\n];\n\nconst attachedVectorStores = [\n  { name: 'VectorStore1' },\n  { name: 'VectorStore2' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n  { name: 'VectorStore3' },\n];\n\nexport default function FileSidePanel() {\n  const localize = useLocalize();\n  const deleteFile = (id: string | undefined) => {\n    // Define delete functionality here\n    console.log(`Deleting File with id: ${id}`);\n  };\n\n  return (\n    <div className=\"w-30\">\n      <h2 className=\"m-3 text-lg\">\n        <strong>Files</strong>\n      </h2>\n      <div className=\"m-3 mt-2 flex w-full flex-row justify-between gap-x-2 lg:m-0\">\n        <div className=\"flex w-2/3 flex-row\">\n          <Button variant=\"ghost\" className=\"m-0 mr-2 p-0\">\n            <ListFilter className=\"h-4 w-4\" />\n          </Button>\n          <Input\n            placeholder={localize('com_files_filter')}\n            value={''}\n            onChange={() => {\n              console.log('changed');\n            }}\n            className=\"max-w-sm border-border-light placeholder:text-text-secondary\"\n          />\n        </div>\n        <div className=\"w-1/3\">\n          <UploadFileButton\n            onClick={() => {\n              console.log('Upload');\n            }}\n          />\n        </div>\n      </div>\n      <div className=\"mt-3\">\n        <FileList\n          files={fakeFiles as TFile[]}\n          deleteFile={deleteFile}\n          attachedVectorStores={attachedVectorStores}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/FileTableColumns.tsx",
    "content": "/* eslint-disable react-hooks/rules-of-hooks */\nimport { FileSources, FileContext } from '~/data-provider/data-provider/src';\nimport type { ColumnDef } from '@tanstack/react-table';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport { CrossIcon, DotsIcon } from '~/components/svg';\nimport { Button, Checkbox } from '~/components/ui';\nimport { formatDate, getFileType } from '~/utils';\nimport useLocalize from '~/hooks/useLocalize';\nimport FileIcon from '~/components/svg/Files/FileIcon';\nimport { PlusIcon } from 'lucide-react';\n\nexport const fileTableColumns: ColumnDef<TFile>[] = [\n  {\n    id: 'select',\n    header: ({ table }) => {\n      return (\n        <Checkbox\n          checked={\n            table.getIsAllPageRowsSelected() ||\n            (table.getIsSomePageRowsSelected() && 'indeterminate')\n          }\n          onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n          aria-label=\"Select all\"\n          className=\"flex\"\n        />\n      );\n    },\n    cell: ({ row }) => {\n      return (\n        <Checkbox\n          checked={row.getIsSelected()}\n          onCheckedChange={(value) => row.toggleSelected(!!value)}\n          aria-label=\"Select row\"\n          className=\"flex\"\n        />\n      );\n    },\n    enableSorting: false,\n    enableHiding: false,\n  },\n  {\n    meta: {\n      size: '50px',\n    },\n    accessorKey: 'icon',\n    header: () => {\n      return 'Icon';\n    },\n    cell: ({ row }) => {\n      const file = row.original;\n      return <FileIcon file={file} fileType={getFileType(file.type)} />;\n    },\n  },\n  {\n    meta: {\n      size: '150px',\n    },\n    accessorKey: 'filename',\n    header: ({ column }) => {\n      const localize = useLocalize();\n      return <>{localize('com_ui_name')}</>;\n    },\n    cell: ({ row }) => {\n      const file = row.original;\n      return <span className=\"self-center truncate\">{file.filename}</span>;\n    },\n  },\n  {\n    accessorKey: 'vectorStores',\n    header: () => {\n      return 'Vector Stores';\n    },\n    cell: ({ row }) => {\n      const { vectorsAttached: attachedVectorStores } = row.original;\n      return (\n        <>\n          {attachedVectorStores.map((vectorStore, index) => {\n            if (index === 4) {\n              return (\n                <span\n                  key={index}\n                  className=\"ml-2 mt-2 flex w-fit flex-row items-center rounded-full bg-[#f5f5f5] px-2 text-gray-500\"\n                >\n                  <PlusIcon className=\"h-3 w-3\" />\n                  &nbsp;\n                  {attachedVectorStores.length - index} more\n                </span>\n              );\n            }\n            if (index > 4) {\n              return null;\n            }\n            return (\n              <span key={index} className=\"ml-2 mt-2 rounded-full bg-[#f2f8ec] px-2 text-[#91c561]\">\n                {vectorStore.name}\n              </span>\n            );\n          })}\n        </>\n      );\n    },\n  },\n  {\n    accessorKey: 'updatedAt',\n    header: () => {\n      const localize = useLocalize();\n      return 'Modified';\n    },\n    cell: ({ row }) => formatDate(row.original.updatedAt),\n  },\n  {\n    accessorKey: 'actions',\n    header: () => {\n      return 'Actions';\n    },\n    cell: ({ row }) => {\n      return (\n        <>\n          <Button className=\"w-min content-center bg-transparent text-gray-500 hover:bg-slate-200\">\n            <DotsIcon className=\"text-grey-100 m-0 size-5 p-0\" />\n          </Button>\n        </>\n      );\n    },\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/UploadFileButton.tsx",
    "content": "import { PlusIcon } from 'lucide-react';\nimport React from 'react';\nimport { Button } from '~/components/ui';\n\ntype UploadFileProps = {\n  onClick: () => void;\n};\n\nexport default function UploadFileButton({ onClick }: UploadFileProps) {\n  return (\n    <div className=\"w-full\">\n      <Button className=\"w-full bg-black px-3 text-white\" onClick={onClick}>\n        <PlusIcon className=\"h-4 w-4 font-bold\" />\n        &nbsp; <span className=\"text-nowrap\">Upload New File</span>\n      </Button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FileList/UploadFileModal.tsx",
    "content": "import React, { useState, ChangeEvent } from 'react';\nimport AttachFile from '~/components/Chat/Input/Files/AttachFile';\nimport { Button, Dialog, DialogContent, DialogHeader, DialogTitle, Input } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nconst UploadFileModal = ({ open, onOpenChange }) => {\n  const localize = useLocalize();\n  const [file, setFile] = useState<File | null>(null);\n\n  const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (e.target.files && e.target.files.length > 0) {\n      const selectedFile = e.target.files[0];\n      setFile(selectedFile);\n    }\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent\n        className={cn(\n          'w-11/12 overflow-x-auto p-3 shadow-2xl dark:bg-gray-700 dark:text-white lg:w-2/3 xl:w-2/5',\n        )}\n      >\n        <DialogHeader>\n          <DialogTitle className=\"text-lg font-medium leading-6 text-gray-900 dark:text-gray-200\">\n            Upoad a File\n          </DialogTitle>\n        </DialogHeader>\n        <div className=\"flex w-full flex-col p-0 sm:p-6 sm:pb-0 sm:pt-4\">\n          <div className=\"flex w-full flex-row\">\n            <div className=\"hidden w-1/5 sm:block\">\n              <img />\n            </div>\n            <div className=\"flex w-full flex-col text-center sm:w-4/5 sm:text-left\">\n              <div className=\"italic\">Please upload square file, size less than 100KB</div>\n              <div className=\"mt-4 flex w-full flex-row items-center bg-[#f9f9f9] p-2\">\n                <div className=\"w-1/2 sm:w-1/3\">\n                  <Button>Choose File</Button>\n                </div>\n                <div className=\"w-1/2 sm:w-1/3\"> No File Chosen</div>\n              </div>\n            </div>\n          </div>\n          <div className=\"mt-3 flex w-full flex-col\">\n            <label htmlFor=\"name\">Name</label>\n            <label className=\"hidden text-[#808080] sm:block\">The name of the uploaded file</label>\n            <Input type=\"text\" id=\"name\" name=\"name\" placeholder=\"Name\" />\n          </div>\n\n          <div className=\"mt-3 flex w-full flex-col\">\n            <label htmlFor=\"purpose\">Purpose</label>\n            <label className=\"hidden text-[#808080] sm:block\">\n              The purpose of the uploaded file\n            </label>\n            <Input type=\"text\" id=\"purpose\" name=\"purpose\" placeholder=\"Purpose\" />\n          </div>\n\n          <div className=\"mt-3 flex w-full flex-row justify-between\">\n            <div className=\"hidden w-1/3 sm:block\">\n              <span className=\"font-bold\">Learn about file purpose</span>\n            </div>\n            <div className=\"flex w-full flex-row justify-evenly sm:w-1/3\">\n              <Button\n                className=\"mr-3 w-full rounded-md border border-black bg-white p-0 text-black hover:bg-white\"\n                onClick={() => {\n                  onOpenChange(false);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button\n                className=\"w-full rounded-md border border-black bg-black p-0 text-white\"\n                onClick={() => {\n                  console.log('upload file');\n                }}\n              >\n                Upload\n              </Button>\n            </div>\n          </div>\n        </div>\n      </DialogContent>\n    </Dialog>\n  );\n};\n\nexport default UploadFileModal;\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FilesListView.tsx",
    "content": "import React from 'react';\nimport FileSidePanel from './FileList/FileSidePanel';\nimport { Outlet, useNavigate, useParams } from 'react-router-dom';\nimport FilesSectionSelector from './FilesSectionSelector';\nimport { useLocalize } from '~/hooks';\nimport { Button } from '../ui';\n\nexport default function FilesListView() {\n  const params = useParams();\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  return (\n    <div className=\"bg-[#f9f9f9] p-0 lg:p-7\">\n      <div className=\"m-4 flex w-full flex-row justify-between md:m-2\">\n        <FilesSectionSelector />\n        {params.fileId != null && params.fileId && (\n          <Button\n            className=\"block lg:hidden\"\n            variant={'outline'}\n            size={'sm'}\n            onClick={() => {\n              navigate('/d/files');\n            }}\n          >\n            {localize('com_ui_go_back')}\n          </Button>\n        )}\n      </div>\n      <div className=\"flex w-full flex-row divide-x\">\n        <div\n          className={`mr-2 w-full xl:w-1/3 ${\n            params.fileId != null && params.fileId ? 'hidden w-1/2 lg:block lg:w-1/2' : 'md:w-full'\n          }`}\n        >\n          <FileSidePanel />\n        </div>\n        <div\n          className={`h-[85vh] w-full overflow-y-auto xl:w-2/3 ${\n            params.fileId != null && params.fileId ? 'lg:w-1/2' : 'hidden md:w-1/2 lg:block'\n          }`}\n        >\n          <Outlet />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/FilesSectionSelector.tsx",
    "content": "import React, { useState } from 'react';\nimport { Button } from '../ui';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport default function FilesSectionSelector() {\n  const navigate = useNavigate();\n  const location = useLocation();\n  let selectedPage = '/vector-stores';\n\n  if (location.pathname.includes('vector-stores')) {\n    selectedPage = '/vector-stores';\n  }\n  if (location.pathname.includes('files')) {\n    selectedPage = '/files';\n  }\n\n  const darkButton = { backgroundColor: 'black', color: 'white' };\n  const lightButton = { backgroundColor: '#f9f9f9', color: 'black' };\n\n  return (\n    <div className=\"flex h-12 w-52 flex-row justify-center rounded border bg-white p-1\">\n      <div className=\"flex w-2/3 items-center pr-1\">\n        <Button\n          className=\"w-full rounded rounded-lg border\"\n          style={selectedPage === '/vector-stores' ? darkButton : lightButton}\n          onClick={() => {\n            selectedPage = '/vector-stores';\n            navigate('/d/vector-stores');\n          }}\n        >\n          Vector Stores\n        </Button>\n      </div>\n      <div className=\"flex w-1/3 items-center\">\n        <Button\n          className=\"w-full rounded rounded-lg border\"\n          style={selectedPage === '/files' ? darkButton : lightButton}\n          onClick={() => {\n            selectedPage = '/files';\n            navigate('/d/files');\n          }}\n        >\n          Files\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/EmptyVectorStorePreview.tsx",
    "content": "import React from 'react';\n\nexport default function EmptyVectorStorePreview() {\n  return (\n    <div className=\"h-full w-full content-center text-center font-bold\">\n      Select a vector store to view details.\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStoreButton.tsx",
    "content": "import { PlusIcon } from 'lucide-react';\nimport React from 'react';\nimport { Button } from '~/components/ui';\n\ntype VectorStoreButtonProps = {\n  onClick: () => void;\n};\n\nexport default function VectorStoreButton({ onClick }: VectorStoreButtonProps) {\n  return (\n    <div className=\"w-full\">\n      <Button className=\"w-full bg-black p-0 text-white\" onClick={onClick}>\n        <PlusIcon className=\"h-4 w-4 font-bold\" />\n        &nbsp; <span className=\"text-nowrap\">Add Store</span>\n      </Button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStoreFilter.tsx",
    "content": "import React from 'react';\n\nconst VectorStoreFilter = () => {\n  return <div>VectorStoreFilter</div>;\n};\n\nexport default VectorStoreFilter;\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStoreList.tsx",
    "content": "import React from 'react';\nimport VectorStoreListItem from './VectorStoreListItem';\nimport { TVectorStore } from '~/common';\n\ntype VectorStoreListProps = {\n  vectorStores: TVectorStore[];\n  deleteVectorStore: (id: string | undefined) => void;\n};\n\nexport default function VectorStoreList({ vectorStores, deleteVectorStore }: VectorStoreListProps) {\n  return (\n    <div>\n      {vectorStores.map((vectorStore, index) => (\n        <VectorStoreListItem\n          key={index}\n          vectorStore={vectorStore}\n          deleteVectorStore={deleteVectorStore}\n        />\n      ))}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStoreListItem.tsx",
    "content": "import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { TVectorStore } from '~/common';\nimport { DotsIcon, TrashIcon } from '~/components/svg';\nimport { Button } from '~/components/ui';\n\ntype VectorStoreListItemProps = {\n  vectorStore: TVectorStore;\n  deleteVectorStore: (id: string) => void;\n};\n\nexport default function VectorStoreListItem({\n  vectorStore,\n  deleteVectorStore,\n}: VectorStoreListItemProps) {\n  const navigate = useNavigate();\n  return (\n    <div\n      onClick={() => {\n        navigate('vs_id_abcdef');\n      }}\n      className=\"w-100 mt-2 flex cursor-pointer flex-row justify-around rounded-md border border-0 bg-white p-4 transition duration-300 ease-in-out hover:bg-slate-200\"\n    >\n      <div className=\"flex w-1/2 flex-col justify-around align-middle\">\n        <strong>{vectorStore.name}</strong>\n        <p className=\"text-sm text-gray-500\">{vectorStore.object}</p>\n      </div>\n      <div className=\"w-2/6 text-gray-500\">\n        <p>\n          {vectorStore.file_counts.total} Files ({vectorStore.bytes / 1000}KB)\n        </p>\n        <p className=\"text-sm\">{vectorStore.created_at.toString()}</p>\n      </div>\n      <div className=\"flex w-1/6 flex-col justify-around sm:flex-row\">\n        <Button className=\"m-0 w-full content-center bg-transparent p-0 text-gray-500 hover:bg-slate-200 sm:w-min\">\n          <DotsIcon className=\"text-grey-100 m-0 p-0\" />\n        </Button>\n        <Button\n          className=\"m-0 w-full bg-transparent p-0 text-[#666666] hover:bg-slate-200 sm:w-fit\"\n          onClick={() => deleteVectorStore(vectorStore._id)}\n        >\n          <TrashIcon className=\"m-0 p-0\" />\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStorePreview.tsx",
    "content": "import React, { useState } from 'react';\nimport DeleteIconButton from '../DeleteIconButton';\nimport { Button } from '~/components/ui';\nimport { TrashIcon } from '~/components/svg';\nimport { TFile } from '~/data-provider/data-provider/src/dist/types';\nimport UploadFileButton from '../FileList/UploadFileButton';\nimport UploadFileModal from '../FileList/UploadFileModal';\nimport { BarChart4Icon, Clock3, FileClock, FileIcon, InfoIcon, PlusIcon } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\n\nconst tempVectorStore = {\n  _id: 'vs_NeHK4JidLKJ2qo23dKLLK',\n  name: 'Vector Store 1',\n  usageThisMonth: '1,000,000',\n  bytes: 1000000,\n  lastActive: '2022-01-01T10:00:00',\n  expirationPolicy: 'Never',\n  expires: 'Never',\n  createdAt: '2022-01-01T10:00:00',\n};\nconst tempFilesAttached: TFile[] = [\n  {\n    filename: 'File1.jpg',\n    object: 'file',\n    bytes: 10000,\n    createdAt: '2022-01-01T10:00:00',\n    _id: '1',\n    type: 'image',\n    usage: 12,\n    user: 'abc',\n    file_id: 'file_id',\n    embedded: true,\n    filepath: 'filepath',\n  },\n  {\n    filename: 'File1.jpg',\n    object: 'file',\n    bytes: 10000,\n    createdAt: '2022-01-01T10:00:00',\n    _id: '1',\n    type: 'image',\n    usage: 12,\n    user: 'abc',\n    file_id: 'file_id',\n    embedded: true,\n    filepath: 'filepath',\n  },\n  {\n    filename: 'File1.jpg',\n    object: 'file',\n    bytes: 10000,\n    createdAt: '2022-01-01T10:00:00',\n    _id: '1',\n    type: 'image',\n    usage: 12,\n    user: 'abc',\n    file_id: 'file_id',\n    embedded: true,\n    filepath: 'filepath',\n  },\n  {\n    filename: 'File1.jpg',\n    object: 'file',\n    bytes: 10000,\n    createdAt: '2022-01-01T10:00:00',\n    _id: '1',\n    type: 'image',\n    usage: 12,\n    user: 'abc',\n    file_id: 'file_id',\n    embedded: true,\n    filepath: 'filepath',\n  },\n];\nconst tempAssistants = [\n  {\n    id: 'Lorum Ipsum',\n    resource: 'Lorum Ipsum',\n  },\n  {\n    id: 'Lorum Ipsum',\n    resource: 'Lorum Ipsum',\n  },\n  {\n    id: 'Lorum Ipsum',\n    resource: 'Lorum Ipsum',\n  },\n  {\n    id: 'Lorum Ipsum',\n    resource: 'Lorum Ipsum',\n  },\n];\n\nexport default function VectorStorePreview() {\n  const [open, setOpen] = useState(false);\n  const [vectorStore, setVectorStore] = useState(tempVectorStore);\n  const [filesAttached, setFilesAttached] = useState(tempFilesAttached);\n  const [assistants, setAssistants] = useState(tempAssistants);\n  const params = useParams();\n\n  return (\n    <div className=\"m-3 ml-1 mr-7 bg-white p-2 sm:p-4 md:p-6  lg:p-10\">\n      <div className=\"flex flex-col justify-between md:flex-row\">\n        <div className=\"flex flex-col\">\n          <b className=\"hidden text-base md:text-lg lg:block lg:text-xl\">VECTOR STORE</b>\n          <b className=\"text-center text-xl md:text-2xl lg:text-left lg:text-3xl\">\n            {vectorStore.name}\n          </b>\n        </div>\n        <div className=\"mt-3 flex flex-row gap-x-3 md:mt-0\">\n          <div>\n            <DeleteIconButton\n              onClick={() => {\n                console.log('click');\n              }}\n            />\n          </div>\n          <div>\n            <UploadFileButton\n              onClick={() => {\n                setOpen(true);\n              }}\n            />\n          </div>\n        </div>\n      </div>\n\n      <div className=\"mt-3 flex flex-col\">\n        <div className=\"flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <InfoIcon className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp; ID\n          </span>\n          <span className=\"w-1/2 break-words text-gray-500 md:w-3/5\">{vectorStore._id}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <BarChart4Icon className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Usage this &nbsp;month\n          </span>\n          <div className=\"w-1/2 md:w-3/5\">\n            <p className=\"text-gray-500\">\n              <span className=\"text-[#91c561]\">0 KB hours</span>\n              &nbsp; Free until end of 2024\n            </p>\n          </div>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <InfoIcon className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Size\n          </span>\n          <span className=\"w-1/2 text-gray-500 md:w-3/5\">{vectorStore.bytes} bytes</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <Clock3 className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Last active\n          </span>\n          <span className=\"w-1/2 text-gray-500 md:w-3/5\">{vectorStore.lastActive}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <InfoIcon className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Expiration policy\n          </span>\n          <span className=\"w-1/2 text-gray-500 md:w-3/5\">{vectorStore.expirationPolicy}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <FileClock className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Expires\n          </span>\n          <span className=\"w-1/2 text-gray-500 md:w-3/5\">{vectorStore.expires}</span>\n        </div>\n        <div className=\"mt-3 flex flex-row\">\n          <span className=\"flex w-1/2 flex-row items-center md:w-2/5\">\n            <Clock3 className=\"text-base text-gray-500 md:text-lg lg:text-xl\" />\n            &nbsp;Created At\n          </span>\n          <span className=\"w-1/2 text-gray-500 md:w-3/5\">{vectorStore.createdAt.toString()}</span>\n        </div>\n      </div>\n\n      <div className=\"mt-10 flex flex-col\">\n        <div>\n          <b className=\"text-base md:text-lg lg:text-xl\">Files attached</b>\n        </div>\n        <div className=\"flex flex-col divide-y\">\n          <div className=\"mt-2 flex flex-row\">\n            <div className=\"w-1/2 text-base md:text-lg lg:w-2/3 lg:text-xl\">File</div>\n            <div className=\"w-1/2 text-base md:text-lg lg:w-1/3 lg:text-xl\">Uploaded</div>\n          </div>\n          <div>\n            {filesAttached.map((file, index) => (\n              <div key={index} className=\"my-2 flex h-5 flex-row\">\n                <div className=\"lg:w flex w-1/2 flex-row content-center lg:w-2/3\">\n                  <FileIcon className=\"m-0 size-5 p-0\" />\n                  <div className=\"ml-2 content-center\">{file.filename}</div>\n                </div>\n                <div className=\"flex w-1/2 flex-row lg:w-1/3\">\n                  <div className=\"content-center text-nowrap\">{file.createdAt?.toString()}</div>\n                  <Button\n                    className=\"my-0 ml-3 h-min bg-transparent p-0 text-[#666666] hover:bg-slate-200\"\n                    onClick={() => console.log('click')}\n                  >\n                    <TrashIcon className=\"m-0 p-0\" />\n                  </Button>\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n\n      <div className=\"mt-10 flex flex-col\">\n        <div className=\"flex flex-row justify-between\">\n          <b className=\"text-base md:text-lg lg:text-xl\">Used by</b>\n          <Button variant={'default'}>\n            <PlusIcon className=\"h-4 w-4 font-bold\" />\n            &nbsp; Create Assistant\n          </Button>\n        </div>\n        <div className=\"flex flex-col divide-y\">\n          <div className=\"mt-2 flex flex-row\">\n            <div className=\"w-1/2 text-base md:text-lg lg:w-2/3 lg:text-xl\">Resource</div>\n            <div className=\"w-1/2 text-base md:text-lg lg:w-1/3 lg:text-xl\">ID</div>\n          </div>\n          <div>\n            {assistants.map((assistant, index) => (\n              <div key={index} className=\"flex flex-row\">\n                <div className=\"w-1/2 content-center lg:w-2/3\">{assistant.resource}</div>\n                <div className=\"flex w-1/2 flex-row lg:w-1/3\">\n                  <div className=\"content-center\">{assistant.id}</div>\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n      {open && <UploadFileModal open={open} onOpenChange={setOpen} />}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStore/VectorStoreSidePanel.tsx",
    "content": "import React from 'react';\nimport VectorStoreList from './VectorStoreList';\nimport { TVectorStore } from '~/common';\nimport VectorStoreButton from './VectorStoreButton';\nimport { Button, Input } from '~/components/ui';\nimport FilesSectionSelector from '../FilesSectionSelector';\nimport ActionButton from '../ActionButton';\nimport DeleteIconButton from '../DeleteIconButton';\nimport { ListFilter } from 'lucide-react';\nimport { useLocalize } from '~/hooks';\n\nconst fakeVectorStores: TVectorStore[] = [\n  {\n    name: 'VectorStore 1',\n    bytes: 10000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '1',\n  },\n  {\n    name: 'VectorStore 2',\n    bytes: 10000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '2',\n  },\n  {\n    name: 'VectorStore 3',\n    bytes: 10000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '3',\n  },\n  {\n    name: 'VectorStore 4',\n    bytes: 10000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '4',\n  },\n  {\n    name: 'VectorStore 5',\n    bytes: 10000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '5',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n  {\n    name: 'VectorStore 6',\n    bytes: 2000,\n    file_counts: {\n      total: 10,\n      in_progress: 0,\n      completed: 0,\n      failed: 0,\n      cancelled: 0,\n    },\n    created_at: '2022-01-01T10:00:00',\n    object: 'vector_store',\n    _id: '6',\n  },\n];\n\nexport default function VectorStoreSidePanel() {\n  const localize = useLocalize();\n  const deleteVectorStore = (id: string | undefined) => {\n    // Define delete functionality here\n    console.log(`Deleting VectorStore with id: ${id}`);\n  };\n\n  return (\n    <div className=\"flex flex-col\">\n      <div className=\"m-3 flex max-h-[10vh] flex-col\">\n        <h2 className=\"text-lg\">\n          <strong>Vector Stores</strong>\n        </h2>\n        <div className=\"m-1 mt-2 flex w-full flex-row justify-between gap-x-2 lg:m-0\">\n          <div className=\"flex w-2/3 flex-row\">\n            <Button variant=\"ghost\" className=\"m-0 mr-2 p-0\">\n              <ListFilter className=\"h-4 w-4\" />\n            </Button>\n            <Input\n              placeholder={localize('com_files_filter')}\n              value={''}\n              onChange={() => {\n                console.log('changed');\n              }}\n              className=\"max-w-sm border-border-light placeholder:text-text-secondary\"\n            />\n          </div>\n          <div className=\"w-1/3\">\n            <VectorStoreButton\n              onClick={() => {\n                console.log('Add Vector Store');\n              }}\n            />\n          </div>\n        </div>\n      </div>\n      <div className=\"mr-2 mt-2 max-h-[80vh] w-full overflow-y-auto\">\n        <VectorStoreList vectorStores={fakeVectorStores} deleteVectorStore={deleteVectorStore} />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Files/VectorStoreView.tsx",
    "content": "import React from 'react';\nimport VectorStoreSidePanel from './VectorStore/VectorStoreSidePanel';\nimport FilesSectionSelector from './FilesSectionSelector';\nimport { Button } from '../ui';\nimport { Outlet, useNavigate, useParams } from 'react-router-dom';\n\nexport default function VectorStoreView() {\n  const params = useParams();\n  const navigate = useNavigate();\n  return (\n    <div className=\"max-h-[100vh] bg-[#f9f9f9] p-0 lg:p-7\">\n      <div className=\"m-4 flex max-h-[10vh] w-full flex-row justify-between md:m-2\">\n        <FilesSectionSelector />\n        <Button\n          className=\"block lg:hidden\"\n          variant={'outline'}\n          size={'sm'}\n          onClick={() => {\n            navigate('/d/vector-stores');\n          }}\n        >\n          Go back\n        </Button>\n      </div>\n      <div className=\"flex max-h-[90vh] w-full flex-row divide-x\">\n        <div\n          className={`max-h-full w-full xl:w-1/3 ${\n            params.vectorStoreId ? 'hidden w-1/2 lg:block lg:w-1/2' : 'md:w-full'\n          }`}\n        >\n          <VectorStoreSidePanel />\n        </div>\n        <div\n          className={`max-h-full w-full overflow-y-auto xl:w-2/3 ${\n            params.vectorStoreId ? 'lg:w-1/2' : 'hidden md:w-1/2 lg:block'\n          }`}\n        >\n          <Outlet />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/Button.tsx",
    "content": "import { cn, removeFocusOutlines } from '~/utils/';\n\nexport default function Button({\n  type = 'regenerate',\n  children,\n  onClick,\n  className = '',\n}: {\n  type?: 'regenerate' | 'continue' | 'stop';\n  children: React.ReactNode;\n  onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n  className?: string;\n}) {\n  return (\n    <button\n      data-testid={`${type}-generation-button`}\n      className={cn(\n        'custom-btn btn-neutral relative -z-0 whitespace-nowrap border-0 md:border',\n        removeFocusOutlines,\n        className,\n      )}\n      onClick={onClick}\n    >\n      <div className=\"flex w-full items-center justify-center gap-2\">{children}</div>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/Continue.tsx",
    "content": "import type { TGenButtonProps } from '~/common';\nimport { ContinueIcon } from '~/components/svg';\nimport Button from './Button';\nimport { useLocalize } from '~/hooks';\n\nexport default function Continue({ onClick }: TGenButtonProps) {\n  const localize = useLocalize();\n\n  return (\n    <Button type=\"continue\" onClick={onClick}>\n      <ContinueIcon className=\"text-gray-600/90 dark:text-gray-400 \" />\n      {localize('com_ui_continue')}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/Regenerate.tsx",
    "content": "import type { TGenButtonProps } from '~/common';\nimport { RegenerateIcon } from '~/components/svg';\nimport Button from './Button';\nimport { useLocalize } from '~/hooks';\n\nexport default function Regenerate({ onClick }: TGenButtonProps) {\n  const localize = useLocalize();\n\n  return (\n    <Button onClick={onClick}>\n      <RegenerateIcon className=\"h-3 w-3 flex-shrink-0 text-gray-600/90 dark:text-gray-400\" />\n      {localize('com_ui_regenerate')}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/Stop.tsx",
    "content": "import type { TGenButtonProps } from '~/common';\nimport { StopGeneratingIcon } from '~/components/svg';\nimport Button from './Button';\nimport { useLocalize } from '~/hooks';\n\nexport default function Stop({ onClick }: TGenButtonProps) {\n  const localize = useLocalize();\n\n  return (\n    <Button type=\"stop\" onClick={onClick}>\n      <StopGeneratingIcon className=\"text-gray-600/90 dark:text-gray-400 \" />\n      {localize('com_ui_stop')}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/__tests__/Button.spec.tsx",
    "content": "import { render, fireEvent } from '@testing-library/react';\nimport Button from '../Button';\n\ndescribe('Button', () => {\n  it('renders with the correct type and children', () => {\n    const { getByTestId, getByText } = render(\n      <Button\n        type=\"regenerate\"\n        onClick={() => {\n          ('');\n        }}\n      >\n        Regenerate\n      </Button>,\n    );\n    expect(getByTestId('regenerate-generation-button')).toBeInTheDocument();\n    expect(getByText('Regenerate')).toBeInTheDocument();\n  });\n\n  it('calls onClick when clicked', () => {\n    const handleClick = jest.fn();\n    const { getByText } = render(\n      <Button type=\"continue\" onClick={handleClick}>\n        Continue\n      </Button>,\n    );\n    fireEvent.click(getByText('Continue'));\n    expect(handleClick).toHaveBeenCalledTimes(1);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/__tests__/Continue.spec.tsx",
    "content": "import { render, fireEvent } from 'test/layout-test-utils';\nimport Continue from '../Continue';\n\ndescribe('Continue', () => {\n  it('should render the Continue button', () => {\n    const { getByText } = render(\n      <Continue\n        onClick={() => {\n          ('');\n        }}\n      />,\n    );\n    expect(getByText('Continue')).toBeInTheDocument();\n  });\n\n  it('should call onClick when the button is clicked', () => {\n    const handleClick = jest.fn();\n    const { getByText } = render(<Continue onClick={handleClick} />);\n    fireEvent.click(getByText('Continue'));\n    expect(handleClick).toHaveBeenCalledTimes(1);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/__tests__/Regenerate.spec.tsx",
    "content": "import { render, fireEvent } from 'test/layout-test-utils';\nimport Regenerate from '../Regenerate';\n\ndescribe('Regenerate', () => {\n  it('should render the Regenerate button', () => {\n    const { getByText } = render(\n      <Regenerate\n        onClick={() => {\n          ('');\n        }}\n      />,\n    );\n    expect(getByText('Regenerate')).toBeInTheDocument();\n  });\n\n  it('should call onClick when the button is clicked', () => {\n    const handleClick = jest.fn();\n    const { getByText } = render(<Regenerate onClick={handleClick} />);\n    fireEvent.click(getByText('Regenerate'));\n    expect(handleClick).toHaveBeenCalledTimes(1);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/Generations/__tests__/Stop.spec.tsx",
    "content": "import { render, fireEvent } from 'test/layout-test-utils';\nimport Stop from '../Stop';\n\ndescribe('Stop', () => {\n  it('should render the Stop button', () => {\n    const { getByText } = render(\n      <Stop\n        onClick={() => {\n          ('');\n        }}\n      />,\n    );\n    expect(getByText('Stop')).toBeInTheDocument();\n  });\n\n  it('should call onClick when the button is clicked', () => {\n    const handleClick = jest.fn();\n    const { getByText } = render(<Stop onClick={handleClick} />);\n    fireEvent.click(getByText('Stop'));\n    expect(handleClick).toHaveBeenCalledTimes(1);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/Anthropic.tsx",
    "content": "import { SelectDropDown, SelectDropDownPop } from '~/components/ui';\nimport type { TModelSelectProps } from '~/common';\nimport { cn, cardStyle } from '~/utils/';\nimport { TemporaryChat } from './TemporaryChat';\n\nexport default function Anthropic({\n  conversation,\n  setOption,\n  models,\n  showAbove,\n  popover = false,\n}: TModelSelectProps) {\n  const Menu = popover ? SelectDropDownPop : SelectDropDown;\n  return (\n    <Menu\n      value={conversation?.model ?? ''}\n      setValue={setOption('model')}\n      availableValues={models}\n      showAbove={showAbove}\n      showLabel={false}\n      className={cn(\n        cardStyle,\n        'z-50 flex h-[40px] w-48 min-w-48 flex-none items-center justify-center px-4 ring-0 hover:cursor-pointer',\n      )}\n      footer={<TemporaryChat />}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/ChatGPT.tsx",
    "content": "import { SelectDropDown, SelectDropDownPop } from '~/components/ui';\nimport type { TModelSelectProps } from '~/common';\nimport { TemporaryChat } from './TemporaryChat';\nimport { cn, cardStyle } from '~/utils/';\n\nexport default function ChatGPT({\n  conversation,\n  setOption,\n  models,\n  showAbove,\n  popover = false,\n}: TModelSelectProps) {\n  if (!conversation) {\n    return null;\n  }\n  const { conversationId, model } = conversation;\n  if (conversationId !== 'new') {\n    return null;\n  }\n  const Menu = popover ? SelectDropDownPop : SelectDropDown;\n  return (\n    <Menu\n      value={model ?? ''}\n      setValue={setOption('model')}\n      availableValues={models}\n      showAbove={showAbove}\n      showLabel={false}\n      className={cn(\n        cardStyle,\n        'z-50 flex h-[40px] w-60 min-w-48 flex-none items-center justify-center px-4 ring-0 hover:cursor-pointer',\n      )}\n      footer={<TemporaryChat />}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/Google.tsx",
    "content": "import { SelectDropDown, SelectDropDownPop } from '~/components/ui';\nimport type { TModelSelectProps } from '~/common';\nimport { TemporaryChat } from './TemporaryChat';\nimport { cn, cardStyle } from '~/utils/';\n\nexport default function Google({\n  conversation,\n  setOption,\n  models,\n  showAbove,\n  popover = false,\n}: TModelSelectProps) {\n  const Menu = popover ? SelectDropDownPop : SelectDropDown;\n  return (\n    <Menu\n      value={conversation?.model ?? ''}\n      setValue={setOption('model')}\n      availableValues={models}\n      showAbove={showAbove}\n      showLabel={false}\n      className={cn(\n        cardStyle,\n        'z-50 flex h-[40px] w-48 min-w-48 flex-none items-center justify-center px-4 ring-0 hover:cursor-pointer',\n      )}\n      footer={<TemporaryChat />}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/ModelSelect.tsx",
    "content": "import { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport type { TSetOption } from '~/common';\nimport { multiChatOptions } from './options';\n\ntype TGoogleProps = {\n  showExamples: boolean;\n  isCodeChat: boolean;\n};\n\ntype TSelectProps = {\n  conversation: TConversation | null;\n  setOption: TSetOption;\n  extraProps?: TGoogleProps;\n  showAbove?: boolean;\n  popover?: boolean;\n};\n\nexport default function ModelSelect({\n  conversation,\n  setOption,\n  popover = false,\n  showAbove = true,\n}: TSelectProps) {\n  const modelsQuery = useGetModelsQuery();\n\n  if (!conversation?.endpoint) {\n    return null;\n  }\n\n  const { endpoint: _endpoint, endpointType } = conversation;\n  const models = modelsQuery.data?.[_endpoint] ?? [];\n  const endpoint = endpointType ?? _endpoint;\n\n  const OptionComponent = multiChatOptions[endpoint];\n\n  if (!OptionComponent) {\n    return null;\n  }\n\n  return (\n    <OptionComponent\n      conversation={conversation}\n      setOption={setOption}\n      models={models}\n      showAbove={showAbove}\n      popover={popover}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/OpenAI.tsx",
    "content": "import { SelectDropDown, SelectDropDownPop } from '~/components/ui';\nimport type { TModelSelectProps } from '~/common';\nimport { TemporaryChat } from './TemporaryChat';\nimport { cn, cardStyle } from '~/utils/';\n\nexport default function OpenAI({\n  conversation,\n  setOption,\n  models,\n  showAbove = true,\n  popover = false,\n}: TModelSelectProps) {\n  const Menu = popover ? SelectDropDownPop : SelectDropDown;\n  return (\n    <Menu\n      value={conversation?.model ?? ''}\n      setValue={setOption('model')}\n      availableValues={models}\n      showAbove={showAbove}\n      showLabel={false}\n      className={cn(\n        cardStyle,\n        'z-50 flex h-[40px] w-48 min-w-48 flex-none items-center justify-center px-4 hover:cursor-pointer',\n      )}\n      footer={<TemporaryChat />}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/PluginsByIndex.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { ChevronDownIcon } from 'lucide-react';\nimport { useState, useEffect, useMemo } from 'react';\nimport { useAvailablePluginsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps } from '~/common';\nimport {\n  Button,\n  MultiSelectPop,\n  SelectDropDown,\n  SelectDropDownPop,\n  MultiSelectDropDown,\n} from '~/components/ui';\nimport { useSetIndexOptions, useAuthContext, useMediaQuery, useLocalize } from '~/hooks';\nimport { cn, cardStyle, selectPlugins, processPlugins } from '~/utils';\nimport store from '~/store';\n\nexport default function PluginsByIndex({\n  conversation,\n  setOption,\n  models,\n  showAbove,\n  popover = false,\n}: TModelSelectProps) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const [visible, setVisibility] = useState<boolean>(true);\n  const isSmallScreen = useMediaQuery('(max-width: 640px)');\n  const availableTools = useRecoilValue(store.availableTools);\n  const { checkPluginSelection, setTools } = useSetIndexOptions();\n\n  const { data: allPlugins } = useAvailablePluginsQuery({\n    enabled: !!user?.plugins,\n    select: selectPlugins,\n  });\n\n  useEffect(() => {\n    if (isSmallScreen) {\n      setVisibility(false);\n    }\n  }, [isSmallScreen]);\n\n  const conversationTools: TPlugin[] = useMemo(() => {\n    if (!conversation?.tools) {\n      return [];\n    }\n    return processPlugins(conversation.tools, allPlugins?.map);\n  }, [conversation, allPlugins]);\n\n  const availablePlugins = useMemo(() => {\n    if (!availableTools) {\n      return [];\n    }\n\n    return Object.values(availableTools);\n  }, [availableTools]);\n\n  if (!conversation) {\n    return null;\n  }\n\n  const Menu = popover ? SelectDropDownPop : SelectDropDown;\n  const PluginsMenu = popover ? MultiSelectPop : MultiSelectDropDown;\n\n  return (\n    <>\n      <Button\n        type=\"button\"\n        className={cn(\n          cardStyle,\n          'z-40 flex h-[40px] min-w-4 flex-none items-center justify-center px-3 hover:bg-white focus:ring-0 focus:ring-offset-0 dark:hover:bg-gray-700',\n        )}\n        onClick={() => setVisibility((prev) => !prev)}\n      >\n        <ChevronDownIcon\n          className={cn(\n            !visible ? '' : 'rotate-180 transform',\n            'w-4 text-gray-600 dark:text-white',\n          )}\n        />\n      </Button>\n      {visible && (\n        <>\n          <Menu\n            value={conversation.model ?? ''}\n            setValue={setOption('model')}\n            availableValues={models}\n            showAbove={showAbove}\n            showLabel={false}\n            className={cn(\n              cardStyle,\n              'z-50 flex h-[40px] w-48 min-w-48 flex-none items-center justify-center px-4 hover:cursor-pointer',\n            )}\n          />\n          <PluginsMenu\n            showAbove={false}\n            showLabel={false}\n            setSelected={setTools}\n            value={conversationTools}\n            optionValueKey=\"pluginKey\"\n            availableValues={availablePlugins}\n            isSelected={checkPluginSelection}\n            searchPlaceholder={localize('com_ui_select_search_plugin')}\n          />\n        </>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/TemporaryChat.tsx",
    "content": "import { useMemo } from 'react';\n\nimport { MessageCircleDashed } from 'lucide-react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { Constants, getConfigDefaults } from '~/data-provider/data-provider/src';\nimport { useGetStartupConfig } from '~/data-provider';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport const TemporaryChat = () => {\n  const localize = useLocalize();\n  const { data: startupConfig } = useGetStartupConfig();\n  const defaultInterface = getConfigDefaults().interface;\n  const [isTemporary, setIsTemporary] = useRecoilState(store.isTemporary);\n  const conversation = useRecoilValue(store.conversationByIndex(0)) || undefined;\n  const conversationId = conversation?.conversationId ?? '';\n  const interfaceConfig = useMemo(\n    () => startupConfig?.interface ?? defaultInterface,\n    [startupConfig],\n  );\n\n  if (interfaceConfig.temporaryChat === false) {\n    return null;\n  }\n\n  const isActiveConvo = Boolean(\n    conversation &&\n      conversationId &&\n      conversationId !== Constants.NEW_CONVO &&\n      conversationId !== 'search',\n  );\n\n  const onClick = () => {\n    if (isActiveConvo) {\n      return;\n    }\n    setIsTemporary(!isTemporary);\n  };\n\n  return (\n    <div className=\"sticky bottom-0 mt-auto w-full border-none bg-surface-tertiary px-6 py-4\">\n      <div className=\"flex items-center justify-between\">\n        <div className={cn('flex items-center gap-2', isActiveConvo && 'opacity-40')}>\n          <MessageCircleDashed className=\"icon-sm\" aria-hidden=\"true\" />\n          <span className=\"truncate text-sm text-text-primary\">\n            {localize('com_ui_temporary_chat')}\n          </span>\n        </div>\n        <div className=\"flex flex-shrink-0 items-center\">\n          <Switch\n            id=\"temporary-chat-switch\"\n            checked={isTemporary}\n            onCheckedChange={onClick}\n            disabled={isActiveConvo}\n            className=\"ml-4\"\n            aria-label=\"Toggle temporary chat\"\n            data-testid=\"temporary-chat-switch\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/index.ts",
    "content": "export { default as ModelSelect } from './ModelSelect';\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/ModelSelect/options.ts",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { TModelSelectProps } from '~/common';\nimport type { FC } from 'react';\n\nimport OpenAI from './OpenAI';\nimport Google from './Google';\nimport ChatGPT from './ChatGPT';\nimport Anthropic from './Anthropic';\nimport PluginsByIndex from './PluginsByIndex';\n\nexport const options: { [key: string]: FC<TModelSelectProps> } = {\n  [EModelEndpoint.openAI]: OpenAI,\n  [EModelEndpoint.custom]: OpenAI,\n  [EModelEndpoint.bedrock]: OpenAI,\n  [EModelEndpoint.azureOpenAI]: OpenAI,\n  [EModelEndpoint.google]: Google,\n  [EModelEndpoint.anthropic]: Anthropic,\n  [EModelEndpoint.chatGPTBrowser]: ChatGPT,\n};\n\nexport const multiChatOptions = {\n  ...options,\n  [EModelEndpoint.gptPlugins]: PluginsByIndex,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/CustomEndpoint.tsx",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport InputWithLabel from './InputWithLabel';\n\nconst CustomEndpoint = ({\n  endpoint,\n  userProvideURL,\n}: {\n  endpoint: EModelEndpoint | string;\n  userProvideURL?: boolean | null;\n}) => {\n  const { control } = useFormContext();\n  return (\n    <form className=\"flex-wrap\">\n      <Controller\n        name=\"apiKey\"\n        control={control}\n        render={({ field }) => (\n          <InputWithLabel\n            id=\"apiKey\"\n            {...field}\n            label={`${endpoint} API Key`}\n            labelClassName=\"mb-1\"\n            inputClassName=\"mb-2\"\n          />\n        )}\n      />\n      {userProvideURL && (\n        <Controller\n          name=\"baseURL\"\n          control={control}\n          render={({ field }) => (\n            <InputWithLabel\n              id=\"baseURL\"\n              {...field}\n              label={`${endpoint} API URL`}\n              labelClassName=\"mb-1\"\n            />\n          )}\n        />\n      )}\n    </form>\n  );\n};\n\nexport default CustomEndpoint;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/GoogleConfig.tsx",
    "content": "import React from 'react';\nimport { object, string } from 'zod';\nimport { AuthKeys } from '~/data-provider/data-provider/src';\nimport type { TConfigProps } from '~/common';\nimport FileUpload from '~/components/Chat/Input/Files/FileUpload';\nimport { useLocalize, useMultipleKeys } from '~/hooks';\nimport InputWithLabel from './InputWithLabel';\nimport { Label } from '~/components/ui';\n\nconst CredentialsSchema = object({\n  client_email: string().email().min(3),\n  project_id: string().min(3),\n  private_key: string().min(601),\n});\n\nconst validateCredentials = (credentials: Record<string, unknown>) => {\n  const result = CredentialsSchema.safeParse(credentials);\n  return result.success;\n};\n\nconst GoogleConfig = ({ userKey, setUserKey }: Pick<TConfigProps, 'userKey' | 'setUserKey'>) => {\n  const localize = useLocalize();\n  const { getMultiKey, setMultiKey } = useMultipleKeys(setUserKey);\n\n  return (\n    <>\n      <div className=\"flex flex-row\">\n        <Label htmlFor={AuthKeys.GOOGLE_SERVICE_KEY} className=\"text-left text-sm font-medium\">\n          {localize('com_endpoint_config_google_service_key')}\n        </Label>\n        <Label className=\"mx-1 text-right text-sm text-text-secondary\">\n          {localize('com_endpoint_config_google_cloud_platform')}\n        </Label>\n        <br />\n      </div>\n      <FileUpload\n        id={AuthKeys.GOOGLE_SERVICE_KEY}\n        className=\"w-full\"\n        containerClassName=\"dark:bg-gray-700 h-10 max-h-10 w-full resize-none py-2 dark:ring-1 dark:ring-gray-600\"\n        text={localize('com_endpoint_config_key_import_json_key')}\n        successText={localize('com_endpoint_config_key_import_json_key_success')}\n        invalidText={localize('com_endpoint_config_key_import_json_key_invalid')}\n        validator={validateCredentials}\n        onFileSelected={(data) => {\n          setMultiKey(AuthKeys.GOOGLE_SERVICE_KEY, JSON.stringify(data), userKey);\n        }}\n      />\n      <InputWithLabel\n        id={AuthKeys.GOOGLE_API_KEY}\n        value={getMultiKey(AuthKeys.GOOGLE_API_KEY, userKey) ?? ''}\n        onChange={(e: { target: { value: string } }) =>\n          setMultiKey(AuthKeys.GOOGLE_API_KEY, e.target.value ?? '', userKey)\n        }\n        label={localize('com_endpoint_config_google_api_key')}\n        subLabel={localize('com_endpoint_config_google_gemini_api')}\n      />\n    </>\n  );\n};\n\nexport default GoogleConfig;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/HelpText.tsx",
    "content": "import { memo } from 'react';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useLocalize } from '~/hooks';\n\nfunction HelpText({ endpoint }: { endpoint: string }) {\n  const localize = useLocalize();\n  const textMap = {\n    [EModelEndpoint.google]: (\n      <>\n        <small className=\"mt-4 break-all text-text-secondary\">\n          {localize('com_endpoint_config_google_service_key')}\n          {': '}\n          {localize('com_endpoint_config_key_google_need_to')}{' '}\n          <a\n            target=\"_blank\"\n            href=\"https://console.cloud.google.com/vertex-ai\"\n            rel=\"noreferrer\"\n            className=\"text-blue-700 underline dark:text-blue-400\"\n          >\n            {localize('com_endpoint_config_key_google_vertex_ai')}\n          </a>{' '}\n          {localize('com_endpoint_config_key_google_vertex_api')}{' '}\n          <a\n            target=\"_blank\"\n            href=\"https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create?walkthrough_id=iam--create-service-account#step_index=1\"\n            rel=\"noreferrer\"\n            className=\"text-blue-700 underline dark:text-blue-400\"\n          >\n            {localize('com_endpoint_config_key_google_service_account')}\n          </a>\n          {'. '}\n          {localize('com_endpoint_config_key_google_vertex_api_role')}\n        </small>\n        <small className=\"break-all text-text-secondary\">\n          {localize('com_endpoint_config_google_api_key')}\n          {': '}\n          {localize('com_endpoint_config_google_api_info')}{' '}\n          <a\n            target=\"_blank\"\n            href=\"https://makersuite.google.com/app/apikey\"\n            rel=\"noreferrer\"\n            className=\"text-blue-700 underline dark:text-blue-400\"\n          >\n            {localize('com_endpoint_config_click_here')}\n          </a>{' '}\n        </small>\n      </>\n    ),\n  };\n\n  return textMap[endpoint] || null;\n}\n\nexport default memo(HelpText);\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/InputWithLabel.tsx",
    "content": "import { forwardRef } from 'react';\nimport type { ChangeEvent, FC, Ref } from 'react';\nimport { cn, defaultTextPropsLabel, removeFocusOutlines, defaultTextProps } from '~/utils/';\nimport { Input, Label } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\ninterface InputWithLabelProps {\n  id: string;\n  value: string;\n  label: string;\n  subLabel?: string;\n  onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n  labelClassName?: string;\n  inputClassName?: string;\n  ref?: Ref<HTMLInputElement>;\n}\n\nconst InputWithLabel: FC<InputWithLabelProps> = forwardRef((props, ref) => {\n  const { id, value, label, subLabel, onChange, labelClassName = '', inputClassName = '' } = props;\n  const localize = useLocalize();\n  return (\n    <>\n      <div className={cn('mt-4 flex flex-row', labelClassName)}>\n        <Label htmlFor={id} className=\"text-left text-sm font-medium\">\n          {label}\n        </Label>\n        {Label && <Label className=\"mx-1 text-right text-sm text-text-secondary\">{subLabel}</Label>}\n        <br />\n      </div>\n      <div className=\"h-1\" />\n      <Input\n        id={id}\n        data-testid={`input-${id}`}\n        value={value ?? ''}\n        onChange={onChange}\n        ref={ref}\n        placeholder={`${localize('com_endpoint_config_value')} ${label}`}\n        className={cn('flex h-10 max-h-10 w-full resize-none px-3 py-2')}\n      />\n    </>\n  );\n});\n\nexport default InputWithLabel;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/OpenAIConfig.tsx",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport InputWithLabel from './InputWithLabel';\n\nconst OpenAIConfig = ({\n  endpoint,\n  userProvideURL,\n}: {\n  endpoint: EModelEndpoint | string;\n  userProvideURL?: boolean | null;\n}) => {\n  const { control } = useFormContext();\n  const isAzure = endpoint === EModelEndpoint.azureOpenAI;\n  return (\n    <form className=\"flex-wrap\">\n      {!isAzure && (\n        <Controller\n          name=\"apiKey\"\n          control={control}\n          render={({ field }) => (\n            <InputWithLabel\n              id=\"apiKey\"\n              {...field}\n              label={`${isAzure ? 'Azure q' : ''}OpenAI API Key`}\n              labelClassName=\"mb-1\"\n              inputClassName=\"mb-2\"\n            />\n          )}\n        />\n      )}\n      {isAzure && (\n        <>\n          <Controller\n            name=\"azureOpenAIApiKey\"\n            control={control}\n            render={({ field }) => (\n              <InputWithLabel\n                id=\"azureOpenAIApiKey\"\n                {...field}\n                label={'Azure OpenAI API Key'}\n                labelClassName=\"mb-1\"\n              />\n            )}\n          />\n          <div className=\"mt-3\"></div>\n          <Controller\n            name=\"azureOpenAIApiInstanceName\"\n            control={control}\n            render={({ field }) => (\n              <InputWithLabel\n                id=\"azureOpenAIApiInstanceName\"\n                {...field}\n                label={'Azure OpenAI Instance Name'}\n                labelClassName=\"mb-1\"\n              />\n            )}\n          />\n          <div className=\"mt-3\"></div>\n          <Controller\n            name=\"azureOpenAIApiDeploymentName\"\n            control={control}\n            render={({ field }) => (\n              <InputWithLabel\n                id=\"azureOpenAIApiDeploymentName\"\n                {...field}\n                label={'Azure OpenAI Deployment Name'}\n                labelClassName=\"mb-1\"\n              />\n            )}\n          />\n          <div className=\"mt-3\"></div>\n          <Controller\n            name=\"azureOpenAIApiVersion\"\n            control={control}\n            render={({ field }) => (\n              <InputWithLabel\n                id=\"azureOpenAIApiVersion\"\n                {...field}\n                label={'Azure OpenAI API Version'}\n                labelClassName=\"mb-1\"\n              />\n            )}\n          />\n        </>\n      )}\n      {userProvideURL && (\n        <div className=\"mt-3\">\n          <Controller\n            name=\"baseURL\"\n            control={control}\n            render={({ field }) => (\n              <InputWithLabel\n                id=\"baseURL\"\n                {...field}\n                label={'API Base URL'}\n                subLabel={'(Optional)'}\n                labelClassName=\"mb-1\"\n              />\n            )}\n          />\n        </div>\n      )}\n    </form>\n  );\n};\n\nexport default OpenAIConfig;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/OtherConfig.tsx",
    "content": "import React from 'react';\nimport InputWithLabel from './InputWithLabel';\nimport type { TConfigProps } from '~/common';\nimport { useLocalize } from '~/hooks';\n\nconst OtherConfig = ({ userKey, setUserKey, endpoint }: TConfigProps) => {\n  const localize = useLocalize();\n  return (\n    <InputWithLabel\n      id={endpoint}\n      value={userKey ?? ''}\n      onChange={(e: React.ChangeEvent<HTMLInputElement>) => setUserKey(e.target.value ?? '')}\n      label={localize('com_endpoint_config_key_name')}\n    />\n  );\n};\n\nexport default OtherConfig;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/SetKeyDialog.tsx",
    "content": "import React, { useState } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { EModelEndpoint, alternateName, isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TDialogProps } from '~/common';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { OGDialog, Dropdown } from '~/components/ui';\nimport { RevokeKeysButton } from '~/components/Nav';\nimport { useUserKey, useLocalize } from '~/hooks';\nimport { useToastContext } from '~/Providers';\nimport CustomConfig from './CustomEndpoint';\nimport GoogleConfig from './GoogleConfig';\nimport OpenAIConfig from './OpenAIConfig';\nimport OtherConfig from './OtherConfig';\nimport HelpText from './HelpText';\n\nconst endpointComponents = {\n  [EModelEndpoint.google]: GoogleConfig,\n  [EModelEndpoint.openAI]: OpenAIConfig,\n  [EModelEndpoint.custom]: CustomConfig,\n  [EModelEndpoint.azureOpenAI]: OpenAIConfig,\n  [EModelEndpoint.gptPlugins]: OpenAIConfig,\n  [EModelEndpoint.assistants]: OpenAIConfig,\n  [EModelEndpoint.azureAssistants]: OpenAIConfig,\n  default: OtherConfig,\n};\n\nconst formSet: Set<string> = new Set([\n  EModelEndpoint.openAI,\n  EModelEndpoint.custom,\n  EModelEndpoint.azureOpenAI,\n  EModelEndpoint.gptPlugins,\n  EModelEndpoint.assistants,\n  EModelEndpoint.azureAssistants,\n]);\n\nconst EXPIRY = {\n  THIRTY_MINUTES: { label: 'in 30 minutes', value: 30 * 60 * 1000 },\n  TWO_HOURS: { label: 'in 2 hours', value: 2 * 60 * 60 * 1000 },\n  TWELVE_HOURS: { label: 'in 12 hours', value: 12 * 60 * 60 * 1000 },\n  ONE_DAY: { label: 'in 1 day', value: 24 * 60 * 60 * 1000 },\n  ONE_WEEK: { label: 'in 7 days', value: 7 * 24 * 60 * 60 * 1000 },\n  ONE_MONTH: { label: 'in 30 days', value: 30 * 24 * 60 * 60 * 1000 },\n  NEVER: { label: 'never', value: 0 },\n};\n\nconst SetKeyDialog = ({\n  open,\n  onOpenChange,\n  endpoint,\n  endpointType,\n  userProvideURL,\n}: Pick<TDialogProps, 'open' | 'onOpenChange'> & {\n  endpoint: EModelEndpoint | string;\n  endpointType?: EModelEndpoint;\n  userProvideURL?: boolean | null;\n}) => {\n  const methods = useForm({\n    defaultValues: {\n      apiKey: '',\n      baseURL: '',\n      azureOpenAIApiKey: '',\n      azureOpenAIApiInstanceName: '',\n      azureOpenAIApiDeploymentName: '',\n      azureOpenAIApiVersion: '',\n      // TODO: allow endpoint definitions from user\n      // name: '',\n      // TODO: add custom endpoint models defined by user\n      // models: '',\n    },\n  });\n\n  const [userKey, setUserKey] = useState('');\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const [expiresAtLabel, setExpiresAtLabel] = useState(EXPIRY.TWELVE_HOURS.label);\n  const { getExpiry, saveUserKey } = useUserKey(endpoint);\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const expirationOptions = Object.values(EXPIRY);\n\n  const handleExpirationChange = (label: string) => {\n    setExpiresAtLabel(label);\n  };\n\n  const submit = () => {\n    const selectedOption = expirationOptions.find((option) => option.label === expiresAtLabel);\n    let expiresAt;\n\n    if (selectedOption?.value === 0) {\n      expiresAt = null;\n    } else {\n      expiresAt = Date.now() + (selectedOption ? selectedOption.value : 0);\n    }\n\n    const saveKey = (key: string) => {\n      saveUserKey(key, expiresAt);\n      onOpenChange(false);\n    };\n\n    if (formSet.has(endpoint) || formSet.has(endpointType ?? '')) {\n      // TODO: handle other user provided options besides baseURL and apiKey\n      methods.handleSubmit((data) => {\n        const isAzure = endpoint === EModelEndpoint.azureOpenAI;\n        const isOpenAIBase =\n          isAzure ||\n          endpoint === EModelEndpoint.openAI ||\n          endpoint === EModelEndpoint.gptPlugins ||\n          isAssistantsEndpoint(endpoint);\n        if (isAzure) {\n          data.apiKey = 'n/a';\n        }\n\n        const emptyValues = Object.keys(data).filter((key) => {\n          if (!isAzure && key.startsWith('azure')) {\n            return false;\n          }\n          if (isOpenAIBase && key === 'baseURL') {\n            return false;\n          }\n          if (key === 'baseURL' && !(userProvideURL ?? false)) {\n            return false;\n          }\n          return data[key] === '';\n        });\n\n        if (emptyValues.length > 0) {\n          showToast({\n            message: 'The following fields are required: ' + emptyValues.join(', '),\n            status: 'error',\n          });\n          onOpenChange(true);\n          return;\n        }\n\n        const { apiKey, baseURL, ...azureOptions } = data;\n        const userProvidedData = { apiKey, baseURL };\n        if (isAzure) {\n          userProvidedData.apiKey = JSON.stringify({\n            azureOpenAIApiKey: azureOptions.azureOpenAIApiKey,\n            azureOpenAIApiInstanceName: azureOptions.azureOpenAIApiInstanceName,\n            azureOpenAIApiDeploymentName: azureOptions.azureOpenAIApiDeploymentName,\n            azureOpenAIApiVersion: azureOptions.azureOpenAIApiVersion,\n          });\n        }\n\n        saveKey(JSON.stringify(userProvidedData));\n        methods.reset();\n      })();\n      return;\n    }\n\n    saveKey(userKey);\n    setUserKey('');\n  };\n\n  const EndpointComponent =\n    endpointComponents[endpointType ?? endpoint] ?? endpointComponents['default'];\n  const expiryTime = getExpiry();\n  const config = endpointsConfig?.[endpoint];\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange}>\n      <OGDialogTemplate\n        title={`${localize('com_endpoint_config_key_for')} ${alternateName[endpoint] ?? endpoint}`}\n        className=\"w-11/12 max-w-2xl\"\n        showCancelButton={false}\n        main={\n          <div className=\"grid w-full items-center gap-2\">\n            <small className=\"text-red-600\">\n              {expiryTime === 'never'\n                ? localize('com_endpoint_config_key_never_expires')\n                : `${localize('com_endpoint_config_key_encryption')} ${new Date(\n                  expiryTime ?? 0,\n                ).toLocaleString()}`}\n            </small>\n            <Dropdown\n              label=\"Expires \"\n              value={expiresAtLabel}\n              onChange={handleExpirationChange}\n              options={expirationOptions.map((option) => option.label)}\n              sizeClasses=\"w-[185px]\"\n              portal={false}\n            />\n            <div className=\"mt-2\" />\n            <FormProvider {...methods}>\n              <EndpointComponent\n                userKey={userKey}\n                setUserKey={setUserKey}\n                endpoint={\n                  endpoint === EModelEndpoint.gptPlugins && (config?.azure ?? false)\n                    ? EModelEndpoint.azureOpenAI\n                    : endpoint\n                }\n                userProvideURL={userProvideURL}\n              />\n            </FormProvider>\n            <HelpText endpoint={endpoint} />\n          </div>\n        }\n        selection={{\n          selectHandler: submit,\n          selectClasses: 'btn btn-primary',\n          selectText: localize('com_ui_submit'),\n        }}\n        leftButtons={\n          <RevokeKeysButton\n            endpoint={endpoint}\n            disabled={!(expiryTime ?? '')}\n            setDialogOpen={onOpenChange}\n          />\n        }\n      />\n    </OGDialog>\n  );\n};\n\nexport default SetKeyDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Input/SetKeyDialog/index.ts",
    "content": "export { default as SetKeyDialog } from './SetKeyDialog';\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/CodeBlock.tsx",
    "content": "import copy from 'copy-to-clipboard';\nimport { InfoIcon } from 'lucide-react';\nimport { Tools } from '~/data-provider/data-provider/src';\nimport React, { useRef, useState, useMemo, useEffect } from 'react';\nimport type { CodeBarProps } from '~/common';\nimport LogContent from '~/components/Chat/Messages/Content/Parts/LogContent';\nimport ResultSwitcher from '~/components/Messages/Content/ResultSwitcher';\nimport { useToolCallsMapContext, useMessageContext } from '~/Providers';\nimport RunCode from '~/components/Messages/Content/RunCode';\nimport Clipboard from '~/components/svg/Clipboard';\nimport CheckMark from '~/components/svg/CheckMark';\nimport useLocalize from '~/hooks/useLocalize';\nimport cn from '~/utils/cn';\n\ntype CodeBlockProps = Pick<\n  CodeBarProps,\n  'lang' | 'plugin' | 'error' | 'allowExecution' | 'blockIndex'\n> & {\n  codeChildren: React.ReactNode;\n  classProp?: string;\n};\n\nconst CodeBar: React.FC<CodeBarProps> = React.memo(\n  ({ lang, error, codeRef, blockIndex, plugin = null, allowExecution = true }) => {\n    const localize = useLocalize();\n    const [isCopied, setIsCopied] = useState(false);\n    return (\n      <div className=\"relative flex items-center justify-between rounded-tl-md rounded-tr-md bg-gray-700 px-4 py-2 font-sans text-xs text-gray-200 dark:bg-gray-700\">\n        <span className=\"\">{lang}</span>\n        {plugin === true ? (\n          <InfoIcon className=\"ml-auto flex h-4 w-4 gap-2 text-white/50\" />\n        ) : (\n          <div className=\"flex items-center justify-center gap-4\">\n            {allowExecution === true && (\n              <RunCode lang={lang} codeRef={codeRef} blockIndex={blockIndex} />\n            )}\n            <button\n              type=\"button\"\n              className={cn(\n                'ml-auto flex gap-2',\n                error === true ? 'h-4 w-4 items-start text-white/50' : '',\n              )}\n              onClick={async () => {\n                const codeString = codeRef.current?.textContent;\n                if (codeString != null) {\n                  setIsCopied(true);\n                  copy(codeString.trim(), { format: 'text/plain' });\n\n                  setTimeout(() => {\n                    setIsCopied(false);\n                  }, 3000);\n                }\n              }}\n            >\n              {isCopied ? (\n                <>\n                  <CheckMark className=\"h-[18px] w-[18px]\" />\n                  {error === true ? '' : localize('com_ui_copied')}\n                </>\n              ) : (\n                <>\n                  <Clipboard />\n                  {error === true ? '' : localize('com_ui_copy_code')}\n                </>\n              )}\n            </button>\n          </div>\n        )}\n      </div>\n    );\n  },\n);\n\nconst CodeBlock: React.FC<CodeBlockProps> = ({\n  lang,\n  blockIndex,\n  codeChildren,\n  classProp = '',\n  allowExecution = true,\n  plugin = null,\n  error,\n}) => {\n  const codeRef = useRef<HTMLElement>(null);\n  const toolCallsMap = useToolCallsMapContext();\n  const { messageId, partIndex } = useMessageContext();\n  const key = allowExecution\n    ? `${messageId}_${partIndex ?? 0}_${blockIndex ?? 0}_${Tools.execute_code}`\n    : '';\n  const [currentIndex, setCurrentIndex] = useState(0);\n\n  const fetchedToolCalls = toolCallsMap?.[key];\n  const [toolCalls, setToolCalls] = useState(toolCallsMap?.[key] ?? null);\n\n  useEffect(() => {\n    if (fetchedToolCalls) {\n      setToolCalls(fetchedToolCalls);\n      setCurrentIndex(fetchedToolCalls.length - 1);\n    }\n  }, [fetchedToolCalls]);\n\n  const currentToolCall = useMemo(() => toolCalls?.[currentIndex], [toolCalls, currentIndex]);\n\n  const next = () => {\n    if (!toolCalls) {\n      return;\n    }\n    if (currentIndex < toolCalls.length - 1) {\n      setCurrentIndex(currentIndex + 1);\n    }\n  };\n\n  const previous = () => {\n    if (currentIndex > 0) {\n      setCurrentIndex(currentIndex - 1);\n    }\n  };\n\n  const isNonCode = !!(plugin === true || error === true);\n  const language = isNonCode ? 'json' : lang;\n\n  return (\n    <div className=\"w-full rounded-md bg-gray-900 text-xs text-white/80\">\n      <CodeBar\n        lang={lang}\n        error={error}\n        codeRef={codeRef}\n        blockIndex={blockIndex}\n        plugin={plugin === true}\n        allowExecution={allowExecution}\n      />\n      <div className={cn(classProp, 'overflow-y-auto p-4')}>\n        <code\n          ref={codeRef}\n          className={cn(\n            isNonCode ? '!whitespace-pre-wrap' : `hljs language-${language} !whitespace-pre`,\n          )}\n        >\n          {codeChildren}\n        </code>\n      </div>\n      {allowExecution === true && toolCalls && toolCalls.length > 0 && (\n        <>\n          <div className=\"bg-gray-700 p-4 text-xs\">\n            <div\n              className=\"prose flex flex-col-reverse text-white\"\n              style={{\n                color: 'white',\n              }}\n            >\n              <pre className=\"shrink-0\">\n                <LogContent\n                  output={(currentToolCall?.result as string | undefined) ?? ''}\n                  attachments={currentToolCall?.attachments ?? []}\n                  renderImages={true}\n                />\n              </pre>\n            </div>\n          </div>\n          {toolCalls.length > 1 && (\n            <ResultSwitcher\n              currentIndex={currentIndex}\n              totalCount={toolCalls.length}\n              onPrevious={previous}\n              onNext={next}\n            />\n          )}\n        </>\n      )}\n    </div>\n  );\n};\n\nexport default CodeBlock;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/Container.tsx",
    "content": "// Container Component\nconst Container = ({ children }: { children: React.ReactNode }) => (\n  <div className=\"flex min-h-[20px] flex-grow flex-col items-start gap-4\">{children}</div>\n);\n\nexport default Container;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/Error.tsx",
    "content": "// file deepcode ignore HardcodedNonCryptoSecret: No hardcoded secrets\nimport { ViolationTypes, ErrorTypes } from '~/data-provider/data-provider/src';\nimport type { TOpenAIMessage } from '~/data-provider/data-provider/src';\nimport type { LocalizeFunction } from '~/common';\nimport { formatJSON, extractJson, isJson } from '~/utils/json';\nimport useLocalize from '~/hooks/useLocalize';\nimport CodeBlock from './CodeBlock';\n\nconst localizedErrorPrefix = 'com_error';\n\ntype TConcurrent = {\n  limit: number;\n};\n\ntype TMessageLimit = {\n  max: number;\n  windowInMinutes: number;\n};\n\ntype TTokenBalance = {\n  type: ViolationTypes | ErrorTypes;\n  balance: number;\n  tokenCost: number;\n  promptTokens: number;\n  prev_count: number;\n  violation_count: number;\n  date: Date;\n  generations?: TOpenAIMessage[];\n};\n\ntype TExpiredKey = {\n  expiredAt: string;\n  endpoint: string;\n};\n\ntype TGenericError = {\n  info: string;\n};\n\nconst errorMessages = {\n  [ErrorTypes.MODERATION]: 'com_error_moderation',\n  [ErrorTypes.NO_USER_KEY]: 'com_error_no_user_key',\n  [ErrorTypes.INVALID_USER_KEY]: 'com_error_invalid_user_key',\n  [ErrorTypes.NO_BASE_URL]: 'com_error_no_base_url',\n  [ErrorTypes.INVALID_ACTION]: `com_error_${ErrorTypes.INVALID_ACTION}`,\n  [ErrorTypes.INVALID_REQUEST]: `com_error_${ErrorTypes.INVALID_REQUEST}`,\n  [ErrorTypes.NO_SYSTEM_MESSAGES]: `com_error_${ErrorTypes.NO_SYSTEM_MESSAGES}`,\n  [ErrorTypes.EXPIRED_USER_KEY]: (json: TExpiredKey, localize: LocalizeFunction) => {\n    const { expiredAt, endpoint } = json;\n    return localize('com_error_expired_user_key', { 0: endpoint, 1: expiredAt });\n  },\n  [ErrorTypes.INPUT_LENGTH]: (json: TGenericError, localize: LocalizeFunction) => {\n    const { info } = json;\n    return localize('com_error_input_length', { 0: info });\n  },\n  [ErrorTypes.GOOGLE_ERROR]: (json: TGenericError) => {\n    const { info } = json;\n    return info;\n  },\n  [ViolationTypes.BAN]:\n    'Your account has been temporarily banned due to violations of our service.',\n  invalid_api_key:\n    'Invalid API key. Please check your API key and try again. You can do this by clicking on the model logo in the left corner of the textbox and selecting \"Set Token\" for the current selected endpoint. Thank you for your understanding.',\n  insufficient_quota:\n    'We apologize for any inconvenience caused. The default API key has reached its limit. To continue using this service, please set up your own API key. You can do this by clicking on the model logo in the left corner of the textbox and selecting \"Set Token\" for the current selected endpoint. Thank you for your understanding.',\n  concurrent: (json: TConcurrent) => {\n    const { limit } = json;\n    const plural = limit > 1 ? 's' : '';\n    return `Only ${limit} message${plural} at a time. Please allow any other responses to complete before sending another message, or wait one minute.`;\n  },\n  message_limit: (json: TMessageLimit) => {\n    const { max, windowInMinutes } = json;\n    const plural = max > 1 ? 's' : '';\n    return `You hit the message limit. You have a cap of ${max} message${plural} per ${\n      windowInMinutes > 1 ? `${windowInMinutes} minutes` : 'minute'\n    }.`;\n  },\n  token_balance: (json: TTokenBalance) => {\n    const { balance, tokenCost, promptTokens, generations } = json;\n    const message = `Insufficient Funds! Balance: ${balance}. Prompt tokens: ${promptTokens}. Cost: ${tokenCost}.`;\n    return (\n      <>\n        {message}\n        {generations && (\n          <>\n            <br />\n            <br />\n          </>\n        )}\n        {generations && (\n          <CodeBlock\n            lang=\"Generations\"\n            error={true}\n            codeChildren={formatJSON(JSON.stringify(generations))}\n          />\n        )}\n      </>\n    );\n  },\n};\n\nconst Error = ({ text }: { text: string }) => {\n  const localize = useLocalize();\n  const jsonString = extractJson(text);\n  const errorMessage = text.length > 512 && !jsonString ? text.slice(0, 512) + '...' : text;\n  const defaultResponse = `${errorMessage}`;\n\n  if (!isJson(jsonString)) {\n    return defaultResponse;\n  }\n\n  const json = JSON.parse(jsonString);\n  const errorKey = json.code || json.type;\n  const keyExists = errorKey && errorMessages[errorKey];\n\n  if (keyExists && typeof errorMessages[errorKey] === 'function') {\n    return errorMessages[errorKey](json, localize);\n  } else if (keyExists && keyExists.startsWith(localizedErrorPrefix)) {\n    return localize(errorMessages[errorKey]);\n  } else if (keyExists) {\n    return errorMessages[errorKey];\n  } else {\n    return defaultResponse;\n  }\n};\n\nexport default Error;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/Plugin.tsx",
    "content": "import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/react';\nimport { useCallback, memo, ReactNode } from 'react';\nimport { ChevronDownIcon, LucideProps } from 'lucide-react';\nimport type { TResPlugin, TInput } from '~/data-provider/data-provider/src';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { useShareContext } from '~/Providers';\nimport { cn, formatJSON } from '~/utils';\nimport { Spinner } from '~/components';\nimport CodeBlock from './CodeBlock';\n\ntype PluginIconProps = LucideProps & {\n  className?: string;\n};\n\nfunction formatInputs(inputs: TInput[]) {\n  let output = '';\n\n  for (let i = 0; i < inputs.length; i++) {\n    const input = formatJSON(`${inputs[i]?.inputStr ?? inputs[i]}`);\n    output += input;\n\n    if (inputs.length > 1 && i !== inputs.length - 1) {\n      output += ',\\n';\n    }\n  }\n\n  return output;\n}\n\ntype PluginProps = {\n  plugin: TResPlugin;\n};\n\nconst Plugin: React.FC<PluginProps> = ({ plugin }) => {\n  const { isSharedConvo } = useShareContext();\n  const { data: plugins = {} } = useGetEndpointsQuery({\n    enabled: !isSharedConvo,\n    select: (data) => data?.gptPlugins?.plugins,\n  });\n\n  const getPluginName = useCallback(\n    (pluginKey: string) => {\n      if (!pluginKey) {\n        return null;\n      }\n\n      if (pluginKey === 'n/a' || pluginKey === 'self reflection') {\n        return pluginKey;\n      }\n      return plugins[pluginKey] ?? 'self reflection';\n    },\n    [plugins],\n  );\n\n  if (!plugin || !plugin.latest) {\n    return null;\n  }\n\n  const latestPlugin = getPluginName(plugin.latest);\n\n  if (!latestPlugin || (latestPlugin && latestPlugin === 'n/a')) {\n    return null;\n  }\n\n  const generateStatus = (): ReactNode => {\n    if (!plugin.loading && latestPlugin === 'self reflection') {\n      return 'Finished';\n    } else if (latestPlugin === 'self reflection') {\n      return 'I\\'m  thinking...';\n    } else {\n      return (\n        <>\n          {plugin.loading ? 'Using' : 'Used'} <b>{latestPlugin}</b>\n          {plugin.loading ? '...' : ''}\n        </>\n      );\n    }\n  };\n\n  return (\n    <div className=\"my-2 flex flex-col items-start\">\n      <Disclosure>\n        {({ open }) => {\n          const iconProps: PluginIconProps = {\n            className: cn(open ? 'rotate-180 transform' : '', 'h-4 w-4'),\n          };\n          return (\n            <>\n              <div\n                className={cn(\n                  plugin.loading ? 'bg-green-100' : 'bg-gray-20',\n                  'my-1 flex items-center rounded p-3 text-xs text-gray-800',\n                )}\n              >\n                <div>\n                  <div className=\"flex items-center gap-3\">\n                    <div>{generateStatus()}</div>\n                  </div>\n                </div>\n                {plugin.loading && <Spinner className=\"ml-1 text-black\" />}\n                <DisclosureButton className=\"ml-12 flex items-center gap-2\">\n                  <ChevronDownIcon {...iconProps} />\n                </DisclosureButton>\n              </div>\n\n              <DisclosurePanel className=\"mt-3 flex max-w-full flex-col gap-3\">\n                <CodeBlock\n                  lang={latestPlugin ? `REQUEST TO ${latestPlugin.toUpperCase()}` : 'REQUEST'}\n                  codeChildren={formatInputs(plugin.inputs ?? [])}\n                  plugin={true}\n                  classProp=\"max-h-[450px]\"\n                />\n                {plugin.outputs && plugin.outputs.length > 0 && (\n                  <CodeBlock\n                    lang={\n                      latestPlugin ? `RESPONSE FROM ${latestPlugin.toUpperCase()}` : 'RESPONSE'\n                    }\n                    codeChildren={formatJSON(plugin.outputs ?? '')}\n                    plugin={true}\n                    classProp=\"max-h-[450px]\"\n                  />\n                )}\n              </DisclosurePanel>\n            </>\n          );\n        }}\n      </Disclosure>\n    </div>\n  );\n};\n\nexport default memo(Plugin);\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/ResultSwitcher.tsx",
    "content": "interface ResultSwitcherProps {\n  currentIndex: number;\n  totalCount: number;\n  onPrevious: () => void;\n  onNext: () => void;\n}\n\nconst ResultSwitcher: React.FC<ResultSwitcherProps> = ({\n  currentIndex,\n  totalCount,\n  onPrevious,\n  onNext,\n}) => {\n  if (totalCount <= 1) {\n    return null;\n  }\n\n  return (\n    <div className=\"flex items-center justify-start gap-1 self-center bg-gray-700 pb-2 text-xs\">\n      <button\n        className=\"hover-button rounded-md p-1 text-gray-400 hover:bg-gray-700 hover:text-gray-200 disabled:hover:text-gray-400\"\n        type=\"button\"\n        onClick={onPrevious}\n        disabled={currentIndex === 0}\n      >\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"1.5\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"15 18 9 12 15 6\" />\n        </svg>\n      </button>\n      <span className=\"flex-shrink-0 tabular-nums\">\n        {currentIndex + 1} / {totalCount}\n      </span>\n      <button\n        className=\"hover-button rounded-md p-1 text-gray-400 hover:bg-gray-700 hover:text-gray-200 disabled:hover:text-gray-400\"\n        type=\"button\"\n        onClick={onNext}\n        disabled={currentIndex === totalCount - 1}\n      >\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"1.5\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"9 18 15 12 9 6\" />\n        </svg>\n      </button>\n    </div>\n  );\n};\n\nexport default ResultSwitcher;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/RunCode.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport { Tools, AuthType } from '~/data-provider/data-provider/src';\nimport { TerminalSquareIcon, Loader } from 'lucide-react';\nimport React, { useMemo, useCallback, useEffect } from 'react';\nimport type { CodeBarProps } from '~/common';\nimport { useVerifyAgentToolAuth, useToolCallMutation } from '~/data-provider';\nimport ApiKeyDialog from '~/components/SidePanel/Agents/Code/ApiKeyDialog';\nimport { useLocalize, useCodeApiKeyForm } from '~/hooks';\nimport { useMessageContext } from '~/Providers';\nimport { cn, normalizeLanguage } from '~/utils';\nimport { useToastContext } from '~/Providers';\n\nconst RunCode: React.FC<CodeBarProps> = React.memo(({ lang, codeRef, blockIndex }) => {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const execute = useToolCallMutation(Tools.execute_code, {\n    onError: () => {\n      showToast({ message: localize('com_ui_run_code_error'), status: 'error' });\n    },\n  });\n\n  const { messageId, conversationId, partIndex } = useMessageContext();\n  const normalizedLang = useMemo(() => normalizeLanguage(lang), [lang]);\n  const { data } = useVerifyAgentToolAuth(\n    { toolId: Tools.execute_code },\n    {\n      retry: 1,\n    },\n  );\n  const authType = useMemo(() => data?.message ?? false, [data?.message]);\n  const isAuthenticated = useMemo(() => data?.authenticated ?? false, [data?.authenticated]);\n  const { methods, onSubmit, isDialogOpen, setIsDialogOpen, handleRevokeApiKey } =\n    useCodeApiKeyForm({});\n\n  const handleExecute = useCallback(async () => {\n    if (!isAuthenticated) {\n      setIsDialogOpen(true);\n      return;\n    }\n    const codeString: string = codeRef.current?.textContent ?? '';\n    if (\n      typeof codeString !== 'string' ||\n      codeString.length === 0 ||\n      typeof normalizedLang !== 'string' ||\n      normalizedLang.length === 0\n    ) {\n      return;\n    }\n\n    execute.mutate({\n      partIndex,\n      messageId,\n      blockIndex,\n      conversationId: conversationId ?? '',\n      lang: normalizedLang,\n      code: codeString,\n    });\n  }, [\n    codeRef,\n    execute,\n    partIndex,\n    messageId,\n    blockIndex,\n    conversationId,\n    normalizedLang,\n    setIsDialogOpen,\n    isAuthenticated,\n  ]);\n\n  const debouncedExecute = useMemo(\n    () => debounce(handleExecute, 1000, { leading: true }),\n    [handleExecute],\n  );\n\n  useEffect(() => {\n    return () => {\n      debouncedExecute.cancel();\n    };\n  }, [debouncedExecute]);\n\n  if (typeof normalizedLang !== 'string' || normalizedLang.length === 0) {\n    return null;\n  }\n\n  return (\n    <>\n      <button\n        type=\"button\"\n        className={cn('ml-auto flex gap-2')}\n        onClick={debouncedExecute}\n        disabled={execute.isLoading}\n      >\n        {execute.isLoading ? (\n          <Loader className=\"animate-spin\" size={18} />\n        ) : (\n          <TerminalSquareIcon size={18} />\n        )}\n        {localize('com_ui_run_code')}\n      </button>\n      <ApiKeyDialog\n        onSubmit={onSubmit}\n        isOpen={isDialogOpen}\n        register={methods.register}\n        onRevoke={handleRevokeApiKey}\n        onOpenChange={setIsDialogOpen}\n        handleSubmit={methods.handleSubmit}\n        isToolAuthenticated={isAuthenticated}\n        isUserProvided={authType === AuthType.USER_PROVIDED}\n      />\n    </>\n  );\n});\n\nexport default RunCode;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/SubRow.tsx",
    "content": "type TSubRowProps = {\n  children: React.ReactNode;\n  classes?: string;\n  subclasses?: string;\n  onClick?: () => void;\n};\n\nexport default function SubRow({ children, classes = '', subclasses = '', onClick }: TSubRowProps) {\n  return (\n    <div className={`flex justify-between ${classes}`} onClick={onClick}>\n      <div\n        className={`flex items-center justify-center gap-1 self-center pt-2 text-xs ${subclasses}`}\n      >\n        {children}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/Content/index.ts",
    "content": "export { default as SubRow } from './SubRow';\nexport { default as Plugin } from './Plugin';\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/ContentRender.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useCallback, useMemo, memo } from 'react';\nimport type { TMessage, TMessageContentParts } from '~/data-provider/data-provider/src';\nimport type { TMessageProps, TMessageIcon } from '~/common';\nimport ContentParts from '~/components/Chat/Messages/Content/ContentParts';\nimport PlaceholderRow from '~/components/Chat/Messages/ui/PlaceholderRow';\nimport SiblingSwitch from '~/components/Chat/Messages/SiblingSwitch';\nimport HoverButtons from '~/components/Chat/Messages/HoverButtons';\nimport MessageIcon from '~/components/Chat/Messages/MessageIcon';\nimport SubRow from '~/components/Chat/Messages/SubRow';\nimport { useMessageActions } from '~/hooks';\nimport { cn, logger } from '~/utils';\nimport store from '~/store';\n\ntype ContentRenderProps = {\n  message?: TMessage;\n  isCard?: boolean;\n  isMultiMessage?: boolean;\n  isSubmittingFamily?: boolean;\n  iconURL?: string;\n} & Pick<\n  TMessageProps,\n  'currentEditId' | 'setCurrentEditId' | 'siblingIdx' | 'setSiblingIdx' | 'siblingCount'\n>;\n\nconst ContentRender = memo(\n  ({\n    isCard,\n    siblingIdx,\n    siblingCount,\n    message: msg,\n    setSiblingIdx,\n    currentEditId,\n    isMultiMessage,\n    setCurrentEditId,\n    isSubmittingFamily,\n    iconURL =''\n  }: ContentRenderProps) => {\n    const {\n      // ask,\n      edit,\n      index,\n      agent,\n      assistant,\n      enterEdit,\n      conversation,\n      messageLabel,\n      isSubmitting,\n      latestMessage,\n      handleContinue,\n      copyToClipboard,\n      setLatestMessage,\n      regenerateMessage,\n    } = useMessageActions({\n      message: msg,\n      currentEditId,\n      isMultiMessage,\n      setCurrentEditId,\n    });\n\n    const maximizeChatSpace = useRecoilValue(store.maximizeChatSpace);\n    const fontSize = useRecoilValue(store.fontSize);\n    const handleRegenerateMessage = useCallback(() => regenerateMessage(), [regenerateMessage]);\n    // const { isCreatedByUser, error, unfinished } = msg ?? {};\n    const isLast = useMemo(\n      () =>\n        !(msg?.children?.length ?? 0) && (msg?.depth === latestMessage?.depth || msg?.depth === -1),\n      [msg?.children, msg?.depth, latestMessage?.depth],\n    );\n\n    const iconData: TMessageIcon = useMemo(\n      () => ({\n        endpoint: msg?.endpoint ?? conversation?.endpoint,\n        model: msg?.model ?? conversation?.model,\n        iconURL: msg?.iconURL ?? conversation?.iconURL ?? iconURL,\n        modelLabel: messageLabel,\n        isCreatedByUser: msg?.isCreatedByUser,\n      }),\n      [\n        messageLabel,\n        conversation?.endpoint,\n        conversation?.iconURL,\n        conversation?.model,\n        msg?.model,\n        msg?.iconURL,\n        msg?.endpoint,\n        msg?.isCreatedByUser,\n      ],\n    );\n\n    if (!msg) {\n      return null;\n    }\n\n    const isLatestMessage = msg.messageId === latestMessage?.messageId;\n    const showCardRender = isLast && !(isSubmittingFamily === true) && isCard === true;\n    const isLatestCard = isCard === true && !(isSubmittingFamily === true) && isLatestMessage;\n    const clickHandler =\n      showCardRender && !isLatestMessage\n        ? () => {\n          logger.log(`Message Card click: Setting ${msg.messageId} as latest message`);\n          logger.dir(msg);\n          setLatestMessage(msg);\n        }\n        : undefined;\n\n    const baseClasses =\n      'final-completion group mx-auto flex flex-1 gap-3 transition-all duration-300 transform-gpu';\n\n    const cardClasses =\n      'relative w-full gap-1 rounded-lg border border-border-medium bg-surface-primary-alt p-2 md:w-1/2 md:gap-3 md:p-4';\n\n    const chatSpaceClasses = maximizeChatSpace\n      ? 'w-full max-w-full md:px-5 lg:px-1 xl:px-5'\n      : 'md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5';\n\n    const conditionalClasses = {\n      latestCard: isLatestCard ? 'bg-surface-secondary' : '',\n      cardRender: showCardRender ? 'cursor-pointer transition-colors duration-300' : '',\n      focus: 'focus:outline-none focus:ring-2 focus:ring-border-xheavy',\n    };\n\n    return (\n      <div\n        id={msg.messageId}\n        aria-label={`message-${msg.depth}-${msg.messageId}`}\n        className={cn(\n          baseClasses,\n          isCard === true ? cardClasses : chatSpaceClasses,\n          conditionalClasses.latestCard,\n          conditionalClasses.cardRender,\n          conditionalClasses.focus,\n          'message-render',\n        )}\n        onClick={clickHandler}\n        onKeyDown={(e) => {\n          if ((e.key === 'Enter' || e.key === ' ') && clickHandler) {\n            clickHandler();\n          }\n        }}\n        role={showCardRender ? 'button' : undefined}\n        tabIndex={showCardRender ? 0 : undefined}\n      >\n        {isLatestCard === true && (\n          <div className=\"absolute right-0 top-0 m-2 h-3 w-3 rounded-full bg-text-primary\" />\n        )}\n        <div className=\"relative flex flex-shrink-0 flex-col items-end\">\n          <div>\n            <div className=\"pt-0.5\">\n              <div className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n                <MessageIcon iconData={iconData} assistant={assistant} agent={agent} />\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className={cn(\n            'relative flex w-11/12 flex-col',\n            msg.isCreatedByUser === true ? '' : 'agent-turn',\n          )}\n        >\n          <h2 className={cn('select-none font-semibold', fontSize)}>{messageLabel}</h2>\n          <div className=\"flex-col gap-1 md:gap-3\">\n            <div className=\"flex max-w-full flex-grow flex-col gap-0\">\n              <ContentParts\n                edit={edit}\n                isLast={isLast}\n                enterEdit={enterEdit}\n                siblingIdx={siblingIdx}\n                messageId={msg.messageId}\n                isSubmitting={isSubmitting}\n                setSiblingIdx={setSiblingIdx}\n                attachments={msg.attachments}\n                isCreatedByUser={msg.isCreatedByUser}\n                conversationId={conversation?.conversationId}\n                content={msg.content as Array<TMessageContentParts | undefined>}\n              />\n            </div>\n          </div>\n          {!(msg.children?.length ?? 0) && (isSubmittingFamily === true || isSubmitting) ? (\n            <PlaceholderRow isCard={isCard} />\n          ) : (\n            <SubRow classes=\"text-xs\">\n              <SiblingSwitch\n                siblingIdx={siblingIdx}\n                siblingCount={siblingCount}\n                setSiblingIdx={setSiblingIdx}\n              />\n              <HoverButtons\n                index={index}\n                isEditing={edit}\n                message={msg}\n                enterEdit={enterEdit}\n                isSubmitting={isSubmitting}\n                conversation={conversation ?? null}\n                regenerate={handleRegenerateMessage}\n                copyToClipboard={copyToClipboard}\n                handleContinue={handleContinue}\n                latestMessage={latestMessage}\n                isLast={isLast}\n              />\n            </SubRow>\n          )}\n        </div>\n      </div>\n    );\n  },\n);\n\nexport default ContentRender;\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/MessageContent.tsx",
    "content": "import React from 'react';\nimport { useMessageProcess } from '~/hooks';\nimport type { TMessageProps } from '~/common';\n// eslint-disable-next-line import/no-cycle\nimport MultiMessage from '~/components/Chat/Messages/MultiMessage';\nimport ContentRender from './ContentRender';\nimport { useGetBsConfig } from '~/data-provider';\n\nconst MessageContainer = React.memo(\n  ({\n    handleScroll,\n    children,\n  }: {\n    handleScroll: (event?: unknown) => void;\n    children: React.ReactNode;\n  }) => {\n    return (\n      <div\n        className=\"text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent\"\n        onWheel={handleScroll}\n        onTouchMove={handleScroll}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n\nexport default function MessageContent(props: TMessageProps) {\n  const {\n    showSibling,\n    conversation,\n    handleScroll,\n    siblingMessage,\n    latestMultiMessage,\n    isSubmittingFamily,\n  } = useMessageProcess({ message: props.message });\n  const { message, currentEditId, setCurrentEditId } = props;\n  const { data: bsConfig } = useGetBsConfig()\n\n  if (!message || typeof message !== 'object') {\n    return null;\n  }\n\n  const { children, messageId = null } = message;\n\n  return (\n    <>\n      <MessageContainer handleScroll={handleScroll}>\n        {showSibling ? (\n          <div className=\"m-auto my-2 flex justify-center p-4 py-2 md:gap-6\">\n            <div className=\"flex w-full flex-row flex-wrap justify-between gap-1 md:max-w-5xl md:flex-nowrap md:gap-2 lg:max-w-5xl xl:max-w-6xl\">\n              <ContentRender\n                {...props}\n                message={message}\n                isSubmittingFamily={isSubmittingFamily}\n                isCard\n              />\n              <ContentRender\n                {...props}\n                isMultiMessage\n                isCard\n                message={siblingMessage ?? latestMultiMessage ?? undefined}\n                isSubmittingFamily={isSubmittingFamily}\n              />\n            </div>\n          </div>\n        ) : (\n          <div className=\"m-auto justify-center p-4 py-2 md:gap-6 \">\n            <ContentRender iconURL={bsConfig?.assistantIcon.image ? __APP_ENV__.BASE_URL + bsConfig?.assistantIcon.image : ''} {...props} />\n          </div>\n        )}\n      </MessageContainer>\n      <MultiMessage\n        key={messageId}\n        messageId={messageId}\n        conversation={conversation}\n        messagesTree={children ?? []}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Messages/ScrollToBottom.tsx",
    "content": "import React from 'react';\n\ntype Props = {\n  scrollHandler: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nexport default function ScrollToBottom({ scrollHandler }: Props) {\n  return (\n    <div className='final-completion group mx-auto flex flex-1 gap-3 transition-all duration-300 transform-gpu md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5 message-render focus:outline-none focus:ring-2 focus:ring-border-xheavy'>\n      <button\n        onClick={scrollHandler}\n        className=\"absolute bottom-5 right-2 cursor-pointer rounded-full border border-gray-200 bg-white bg-clip-padding text-gray-600 dark:border-white/10 dark:bg-gray-850/90 dark:text-gray-200\"\n        aria-label=\"Scroll to bottom\"\n      >\n        <svg\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          className=\"m-1 text-black dark:text-white\"\n        >\n          <path\n            d=\"M17 13L12 18L7 13M12 6L12 17\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          ></path>\n        </svg>\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/AccountSettings.tsx",
    "content": "import Cookies from 'js-cookie';\nimport { Check, FileText, GanttChartIcon, Globe, LogOut } from 'lucide-react';\nimport { memo, useCallback, useState } from 'react';\nimport { useRecoilState } from 'recoil';\nimport { GearIcon, UserIcon } from '~/components/svg';\nimport { useGetStartupConfig, useGetUserBalance } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport useAvatar from '~/hooks/Messages/useAvatar';\nimport store from '~/store';\nimport MyKnowledgeView from '../Chat/Input/Files/MyKnowledgeView';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../ui';\nimport Settings from './Settings';\n\nfunction AccountSettings() {\n  const localize = useLocalize();\n  const [langcode, setLangcode] = useRecoilState(store.lang);\n  const changeLang = useCallback(\n    (value: string) => {\n      let userLang = value;\n      if (value === 'auto') {\n        userLang = navigator.language || navigator.languages[0];\n      }\n\n      requestAnimationFrame(() => {\n        document.documentElement.lang = userLang;\n      });\n      setLangcode(userLang);\n      Cookies.set('lang', userLang, { expires: 365 });\n    },\n    [setLangcode],\n  );\n\n  const { user, isAuthenticated, logout } = useAuthContext();\n  const { data: startupConfig } = useGetStartupConfig();\n  const balanceQuery = useGetUserBalance({\n    enabled: !!isAuthenticated && startupConfig?.checkBalance,\n  });\n  const [showSettings, setShowSettings] = useState(false);\n  const [showFiles, setShowFiles] = useRecoilState(store.showFiles);\n  const [showKnowledge, setShowKnowledge] = useRecoilState(store.showKnowledge);\n\n  const avatarSrc = useAvatar(user);\n  const name = user?.avatar ?? user?.username ?? '';\n\n  return (\n    <div className='mt-text-sm h-auto w-full items-center gap-2 rounded-xl p-2 text-sm'>\n      <div\n        className=\"flex gap-2 text-sm px-3 py-2 mb-2 items-center rounded-xl cursor-pointer hover:bg-[#EBEFF8]\"\n        onClick={() => setShowKnowledge(true)}\n      >\n        <FileText className=\"icon-md\" />\n        <div>{localize('com_nav_personal_knowledge')}</div>\n      </div>\n      <div className='h-[1px] bg-gray-200'></div>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <div className='cursor-pointer mt-text-sm mt-2 flex h-auto w-full items-center gap-2 rounded-xl p-2 text-sm transition-all duration-200 ease-in-out hover:bg-[#EBEFF8]'>\n            <div className=\"-ml-0.9 -mt-0.8 h-8 w-8 flex-shrink-0\">\n              <div className=\"relative flex\">\n                {name.length === 0 ? (\n                  <div\n                    style={{\n                      backgroundColor: 'rgb(121, 137, 255)',\n                      width: '32px',\n                      height: '32px',\n                      boxShadow: 'rgba(240, 246, 252, 0.1) 0px 0px 0px 1px',\n                    }}\n                    className=\"relative flex items-center justify-center rounded-full p-1 text-text-primary\"\n                    aria-hidden=\"true\"\n                  >\n                    <UserIcon />\n                  </div>\n                ) : (\n                  <div className=\"w-8 h-8 min-w-6 text-white bg-primary rounded-full flex justify-center items-center text-xs\">{(user?.name ?? user?.username ?? localize('com_nav_user')).substring(0, 2).toUpperCase()}</div>\n                  // <img\n                  //   className=\"rounded-full\"\n                  //   src={(user?.avatar ?? '') || avatarSrc}\n                  //   alt={`${name}'s avatar`}\n                  // />\n                )}\n              </div>\n            </div>\n            <div\n              className=\"mt-2 grow overflow-hidden text-ellipsis whitespace-nowrap text-left text-text-primary\"\n              style={{ marginTop: '0', marginLeft: '0' }}\n            >\n              {user?.name ?? user?.username ?? localize('com_nav_user')}\n            </div>\n          </div>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent className='w-60 rounded-2xl'>\n          {user?.plugins?.includes('backend') && <a href={__APP_ENV__.BISHENG_HOST} target='_blank'>\n            <DropdownMenuItem className='select-item text-sm font-normal'>\n              <GanttChartIcon className=\"icon-md\" />\n              {localize('com_nav_admin_panel')}\n            </DropdownMenuItem>\n          </a>}\n          <DropdownMenuSub>\n            <DropdownMenuSubTrigger className='select-item text-sm font-normal'>\n              <Globe className=\"icon-md\" />\n              {localize('com_nav_language')}\n            </DropdownMenuSubTrigger>\n            <DropdownMenuSubContent className='w-40 rounded-2xl'>\n              <span className='text-xs text-gray-400 pl-2'>{localize('com_nav_language_label')}</span>\n              <DropdownMenuItem className='font-normal justify-between' onClick={() => changeLang('zh-Hans')}>\n                {localize('com_nav_lang_chinese')}\n                {langcode === 'zh-Hans' && <Check size={16} />}\n              </DropdownMenuItem>\n              <DropdownMenuItem className='font-normal justify-between' onClick={() => changeLang('en-US')}>\n                {localize('com_nav_lang_english')}\n                {langcode === 'en-US' && <Check size={16} />}\n              </DropdownMenuItem>\n              <DropdownMenuItem className='font-normal justify-between' onClick={() => changeLang('ja')}>\n                {localize('com_nav_lang_japanese')}\n                {langcode === 'ja' && <Check size={16} />}\n              </DropdownMenuItem>\n            </DropdownMenuSubContent>\n          </DropdownMenuSub>\n          {/* <DropdownMenuItem className='select-item text-sm font-normal'>\n            <div className='w-full flex gap-2 items-center' onClick={() => setShowSettings(true)} >\n              <GearIcon className=\"icon-md\" aria-hidden=\"true\" />\n              {localize('com_nav_settings')}\n            </div>\n          </DropdownMenuItem> */}\n          <DropdownMenuItem className='select-item text-sm font-normal'>\n            <div className='w-full flex gap-2 items-center' onClick={logout} >\n              <LogOut className=\"icon-md\" />\n              {localize('com_nav_log_out')}\n            </div>\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n      {/* {showFiles && <FilesView open={showFiles} onOpenChange={setShowFiles} />} */}\n      {showKnowledge && <MyKnowledgeView open={showKnowledge} onOpenChange={setShowKnowledge} />}\n      {showSettings && <Settings open={showSettings} onOpenChange={setShowSettings} />}\n    </div>\n  );\n}\n\nexport default memo(AccountSettings);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/Bookmarks/BookmarkNav.tsx",
    "content": "import { type FC } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { Menu, MenuButton, MenuItems } from '@headlessui/react';\nimport { BookmarkFilledIcon, BookmarkIcon } from '@radix-ui/react-icons';\nimport { BookmarkContext } from '~/Providers/BookmarkContext';\nimport { useGetConversationTags } from '~/data-provider';\nimport BookmarkNavItems from './BookmarkNavItems';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\ntype BookmarkNavProps = {\n  tags: string[];\n  setTags: (tags: string[]) => void;\n  isSmallScreen: boolean;\n};\n\nconst BookmarkNav: FC<BookmarkNavProps> = ({ tags, setTags, isSmallScreen }: BookmarkNavProps) => {\n  const localize = useLocalize();\n  const { data } = useGetConversationTags();\n  const conversation = useRecoilValue(store.conversationByIndex(0));\n\n  return (\n    <Menu as=\"div\" className=\"group relative\">\n      {({ open }) => (\n        <>\n          <MenuButton\n            className={cn(\n              'mt-text-sm flex h-10 w-full items-center gap-2 rounded-lg p-2 text-sm transition-colors duration-200 hover:bg-surface-active-alt',\n              open ? 'bg-surface-active-alt' : '',\n              isSmallScreen ? 'h-12' : '',\n            )}\n            data-testid=\"bookmark-menu\"\n          >\n            <div className=\"h-7 w-7 flex-shrink-0\">\n              <div className=\"relative flex h-full items-center justify-center rounded-full border border-border-medium bg-surface-primary-alt text-text-primary\">\n                {tags.length > 0 ? (\n                  <BookmarkFilledIcon className=\"h-4 w-4\" aria-hidden=\"true\" />\n                ) : (\n                  <BookmarkIcon className=\"h-4 w-4\" aria-hidden=\"true\" />\n                )}\n              </div>\n            </div>\n            <div className=\"grow overflow-hidden whitespace-nowrap text-left text-sm font-medium text-text-primary\">\n              {tags.length > 0 ? tags.join(', ') : localize('com_ui_bookmarks')}\n            </div>\n          </MenuButton>\n          <MenuItems className=\"absolute left-0 top-full z-[100] mt-1 w-full translate-y-0 overflow-hidden rounded-lg bg-surface-active-alt  p-1.5 shadow-lg outline-none\">\n            {data && conversation && (\n              <BookmarkContext.Provider value={{ bookmarks: data.filter((tag) => tag.count > 0) }}>\n                <BookmarkNavItems\n                  // Currently selected conversation\n                  conversation={conversation}\n                  // List of selected tags(string)\n                  tags={tags}\n                  // When a user selects a tag, this `setTags` function is called to refetch the list of conversations for the selected tag\n                  setTags={setTags}\n                />\n              </BookmarkContext.Provider>\n            )}\n          </MenuItems>\n        </>\n      )}\n    </Menu>\n  );\n};\n\nexport default BookmarkNav;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/Bookmarks/BookmarkNavItems.tsx",
    "content": "import { useEffect, useState, type FC } from 'react';\nimport { CrossCircledIcon } from '@radix-ui/react-icons';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport { useBookmarkContext } from '~/Providers/BookmarkContext';\nimport { BookmarkItems, BookmarkItem } from '~/components/Bookmarks';\nimport { useLocalize } from '~/hooks';\n\nconst BookmarkNavItems: FC<{\n  conversation: TConversation;\n  tags: string[];\n  setTags: (tags: string[]) => void;\n}> = ({ conversation, tags = [], setTags }) => {\n  const [currentConversation, setCurrentConversation] = useState<TConversation>();\n  const { bookmarks } = useBookmarkContext();\n  const localize = useLocalize();\n\n  useEffect(() => {\n    if (!currentConversation) {\n      setCurrentConversation(conversation);\n    }\n  }, [conversation, currentConversation]);\n\n  const getUpdatedSelected = (tag: string) => {\n    if (tags.some((selectedTag) => selectedTag === tag)) {\n      return tags.filter((selectedTag) => selectedTag !== tag);\n    } else {\n      return [...tags, tag];\n    }\n  };\n\n  const handleSubmit = (tag?: string) => {\n    if (tag === undefined) {\n      return;\n    }\n    const updatedSelected = getUpdatedSelected(tag);\n    setTags(updatedSelected);\n    return;\n  };\n\n  const clear = () => {\n    setTags([]);\n    return;\n  };\n\n  if (bookmarks.length === 0) {\n    return (\n      <div className=\"flex flex-col\">\n        <BookmarkItem\n          tag={localize('com_ui_clear_all')}\n          data-testid=\"bookmark-item-clear\"\n          handleSubmit={clear}\n          selected={false}\n          icon={<CrossCircledIcon className=\"size-4\" />}\n        />\n        <BookmarkItem\n          tag={localize('com_ui_no_bookmarks')}\n          data-testid=\"bookmark-item-no-bookmarks\"\n          handleSubmit={() => Promise.resolve()}\n          selected={false}\n          icon={'🤔'}\n        />\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"flex flex-col\">\n      <BookmarkItems\n        tags={tags}\n        handleSubmit={handleSubmit}\n        header={\n          <BookmarkItem\n            tag={localize('com_ui_clear_all')}\n            data-testid=\"bookmark-item-clear\"\n            handleSubmit={clear}\n            selected={false}\n            icon={<CrossCircledIcon className=\"size-4\" />}\n          />\n        }\n      />\n    </div>\n  );\n};\n\nexport default BookmarkNavItems;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/ExportConversation/ExportModal.tsx",
    "content": "import filenamify from 'filenamify';\nimport { useEffect, useState } from 'react';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport { OGDialog, Button, Input, Label, Checkbox, Dropdown } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useExportConversation } from '~/hooks';\n\nexport default function ExportModal({\n  open,\n  onOpenChange,\n  conversation,\n  triggerRef,\n  children,\n}: {\n  open: boolean;\n  conversation: TConversation | null;\n  onOpenChange: React.Dispatch<React.SetStateAction<boolean>>;\n  triggerRef?: React.RefObject<HTMLButtonElement>;\n  children?: React.ReactNode;\n}) {\n  const localize = useLocalize();\n\n  const [filename, setFileName] = useState('');\n  const [type, setType] = useState('Select a file type');\n\n  const [includeOptions, setIncludeOptions] = useState<boolean | 'indeterminate'>(true);\n  const [exportBranches, setExportBranches] = useState<boolean | 'indeterminate'>(false);\n  const [recursive, setRecursive] = useState<boolean | 'indeterminate'>(true);\n\n  const typeOptions = [\n    { value: 'screenshot', label: 'screenshot (.png)' },\n    { value: 'text', label: 'text (.txt)' },\n    { value: 'markdown', label: 'markdown (.md)' },\n    { value: 'json', label: 'json (.json)' },\n    { value: 'csv', label: 'csv (.csv)' },\n  ];\n\n  useEffect(() => {\n    if (!open && triggerRef && triggerRef.current) {\n      triggerRef.current.focus();\n    }\n  }, [open, triggerRef]);\n\n  useEffect(() => {\n    setFileName(filenamify(String(conversation?.title ?? 'file')));\n    setType('screenshot');\n    setIncludeOptions(true);\n    setExportBranches(false);\n    setRecursive(true);\n  }, [conversation?.title, open]);\n\n  const _setType = (newType: string) => {\n    const exportBranchesSupport = newType === 'json' || newType === 'csv' || newType === 'webpage';\n    const exportOptionsSupport = newType !== 'csv' && newType !== 'screenshot';\n\n    setExportBranches(exportBranchesSupport);\n    setIncludeOptions(exportOptionsSupport);\n    setType(newType);\n  };\n\n  const exportBranchesSupport = type === 'json' || type === 'csv' || type === 'webpage';\n  const exportOptionsSupport = type !== 'csv' && type !== 'screenshot';\n\n  const { exportConversation } = useExportConversation({\n    conversation,\n    filename,\n    type,\n    includeOptions,\n    exportBranches,\n    recursive,\n  });\n\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange} triggerRef={triggerRef}>\n      {children}\n      <OGDialogTemplate\n        title={localize('com_nav_export_conversation')}\n        className=\"max-w-full sm:max-w-2xl\"\n        main={\n          <div className=\"flex w-full flex-col items-center gap-6\">\n            <div className=\"grid w-full gap-6 sm:grid-cols-2\">\n              <div className=\"col-span-1 flex flex-col items-start justify-start gap-2\">\n                <Label htmlFor=\"filename\" className=\"text-left text-sm font-medium\">\n                  {localize('com_nav_export_filename')}\n                </Label>\n                <Input\n                  id=\"filename\"\n                  value={filename}\n                  onChange={(e) => setFileName(filenamify(e.target.value || ''))}\n                  placeholder={localize('com_nav_export_filename_placeholder')}\n                />\n              </div>\n              <div className=\"col-span-1 flex w-full flex-col items-start justify-start gap-2\">\n                <Label htmlFor=\"type\" className=\"text-left text-sm font-medium\">\n                  {localize('com_nav_export_type')}\n                </Label>\n                <Dropdown value={type} onChange={_setType} options={typeOptions} portal={false} />\n              </div>\n            </div>\n            <div className=\"grid w-full gap-6 sm:grid-cols-2\">\n              <div className=\"col-span-1 flex flex-col items-start justify-start gap-2\">\n                <div className=\"grid w-full items-center gap-2\">\n                  <Label htmlFor=\"includeOptions\" className=\"text-left text-sm font-medium\">\n                    {localize('com_nav_export_include_endpoint_options')}\n                  </Label>\n                  <div className=\"flex h-[40px] w-full items-center space-x-3\">\n                    <Checkbox\n                      id=\"includeOptions\"\n                      disabled={!exportOptionsSupport}\n                      checked={includeOptions}\n                      className=\"focus:ring-opacity-20 dark:border-gray-500 dark:bg-gray-700 dark:text-gray-50 dark:focus:ring-gray-600 dark:focus:ring-opacity-50 dark:focus:ring-offset-0\"\n                      onCheckedChange={setIncludeOptions}\n                    />\n                    <label\n                      htmlFor=\"includeOptions\"\n                      className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n                    >\n                      {exportOptionsSupport\n                        ? localize('com_nav_enabled')\n                        : localize('com_nav_not_supported')}\n                    </label>\n                  </div>\n                </div>\n              </div>\n              <div className=\"grid w-full items-center gap-2\">\n                <Label htmlFor=\"exportBranches\" className=\"text-left text-sm font-medium\">\n                  {localize('com_nav_export_all_message_branches')}\n                </Label>\n                <div className=\"flex h-[40px] w-full items-center space-x-3\">\n                  <Checkbox\n                    id=\"exportBranches\"\n                    disabled={!exportBranchesSupport}\n                    checked={exportBranches}\n                    className=\"focus:ring-opacity-20 dark:border-gray-500 dark:bg-gray-700 dark:text-gray-50 dark:focus:ring-gray-600 dark:focus:ring-opacity-50 dark:focus:ring-offset-0\"\n                    onCheckedChange={setExportBranches}\n                  />\n                  <label\n                    htmlFor=\"exportBranches\"\n                    className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n                  >\n                    {exportBranchesSupport\n                      ? localize('com_nav_enabled')\n                      : localize('com_nav_not_supported')}\n                  </label>\n                </div>\n              </div>\n              {type === 'json' ? (\n                <div className=\"grid w-full items-center gap-2\">\n                  <Label htmlFor=\"recursive\" className=\"text-left text-sm font-medium\">\n                    {localize('com_nav_export_recursive_or_sequential')}\n                  </Label>\n                  <div className=\"flex h-[40px] w-full items-center space-x-3\">\n                    <Checkbox\n                      id=\"recursive\"\n                      checked={recursive}\n                      className=\"focus:ring-opacity-20 dark:border-gray-500 dark:bg-gray-700 dark:text-gray-50 dark:focus:ring-gray-600 dark:focus:ring-opacity-50 dark:focus:ring-offset-0\"\n                      onCheckedChange={setRecursive}\n                    />\n                    <label\n                      htmlFor=\"recursive\"\n                      className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-50\"\n                    >\n                      {localize('com_nav_export_recursive')}\n                    </label>\n                  </div>\n                </div>\n              ) : null}\n            </div>\n          </div>\n        }\n        buttons={\n          <>\n            <Button onClick={exportConversation} variant=\"submit\">\n              {localize('com_endpoint_export')}\n            </Button>\n          </>\n        }\n        selection={undefined}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/ExportConversation/index.ts",
    "content": "export { default as ExportModal } from './ExportModal';\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/MobileNav.tsx",
    "content": "import React from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys, Constants } from '~/data-provider/data-provider/src';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport type { Dispatch, SetStateAction } from 'react';\nimport { useLocalize, useNewConvo } from '~/hooks';\nimport store from '~/store';\n\nexport default function MobileNav({\n  setNavVisible,\n}: {\n  setNavVisible: Dispatch<SetStateAction<boolean>>;\n}) {\n  const localize = useLocalize();\n  const queryClient = useQueryClient();\n  const { newConversation } = useNewConvo();\n  const conversation = useRecoilValue(store.conversationByIndex(0));\n  const { title = 'New Chat' } = conversation || {};\n\n  return (\n    <div className=\"bg-token-main-surface-primary sticky top-0 z-10 flex min-h-[40px] items-center justify-center bg-white pl-1 dark:bg-gray-800 dark:text-white md:hidden\">\n      <button\n        type=\"button\"\n        data-testid=\"mobile-header-new-chat-button\"\n        aria-label={localize('com_nav_open_sidebar')}\n        className=\"m-1 inline-flex size-10 items-center justify-center rounded-full hover:bg-surface-hover\"\n        onClick={() =>\n          setNavVisible((prev) => {\n            localStorage.setItem('navVisible', JSON.stringify(!prev));\n            return !prev;\n          })\n        }\n      >\n        <span className=\"sr-only\">{localize('com_nav_open_sidebar')}</span>\n        <svg\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"icon-md\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M3 8C3 7.44772 3.44772 7 4 7H20C20.5523 7 21 7.44772 21 8C21 8.55228 20.5523 9 20 9H4C3.44772 9 3 8.55228 3 8ZM3 16C3 15.4477 3.44772 15 4 15H14C14.5523 15 15 15.4477 15 16C15 16.5523 14.5523 17 14 17H4C3.44772 17 3 16.5523 3 16Z\"\n            fill=\"currentColor\"\n          />\n        </svg>\n      </button>\n      <h1 className=\"flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-center text-sm font-normal\">\n        {title ?? localize('com_ui_new_chat')}\n      </h1>\n      <button\n        type=\"button\"\n        aria-label={localize('com_ui_new_chat')}\n        className=\"m-1 inline-flex size-10 items-center justify-center rounded-full hover:bg-surface-hover\"\n        onClick={() => {\n          queryClient.setQueryData<TMessage[]>(\n            [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],\n            [],\n          );\n          newConversation();\n        }}\n      >\n        <svg\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"icon-md\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M16.7929 2.79289C18.0118 1.57394 19.9882 1.57394 21.2071 2.79289C22.4261 4.01184 22.4261 5.98815 21.2071 7.20711L12.7071 15.7071C12.5196 15.8946 12.2652 16 12 16H9C8.44772 16 8 15.5523 8 15V12C8 11.7348 8.10536 11.4804 8.29289 11.2929L16.7929 2.79289ZM19.7929 4.20711C19.355 3.7692 18.645 3.7692 18.2071 4.2071L10 12.4142V14H11.5858L19.7929 5.79289C20.2308 5.35499 20.2308 4.64501 19.7929 4.20711ZM6 5C5.44772 5 5 5.44771 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V14C19 13.4477 19.4477 13 20 13C20.5523 13 21 13.4477 21 14V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34314 4.34315 3 6 3H10C10.5523 3 11 3.44771 11 4C11 4.55228 10.5523 5 10 5H6Z\"\n            fill=\"currentColor\"\n          />\n        </svg>\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/Nav.spec.tsx",
    "content": "import 'test/resizeObserver.mock';\nimport 'test/matchMedia.mock';\nimport 'test/localStorage.mock';\n\nimport React from 'react';\nimport { BrowserRouter } from 'react-router-dom';\nimport { RecoilRoot } from 'recoil';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { render } from '@testing-library/react';\nimport '@testing-library/jest-dom/extend-expect';\n\nimport { AuthContextProvider } from '~/hooks/AuthContext';\nimport { SearchContext } from '~/Providers';\nimport Nav from './Nav';\n\nconst renderNav = ({ search, navVisible, setNavVisible }) => {\n  const queryClient = new QueryClient({\n    defaultOptions: {\n      queries: {\n        retry: false,\n      },\n    },\n  });\n\n  return render(\n    <RecoilRoot>\n      <BrowserRouter>\n        <QueryClientProvider client={queryClient}>\n          <AuthContextProvider>\n            <SearchContext.Provider value={search}>\n              <Nav navVisible={navVisible} setNavVisible={setNavVisible} />\n            </SearchContext.Provider>\n          </AuthContextProvider>\n        </QueryClientProvider>\n      </BrowserRouter>\n    </RecoilRoot>,\n  );\n};\n\nconst mockMatchMedia = (mediaQueryList?: string[]) => {\n  mediaQueryList = mediaQueryList || [];\n\n  Object.defineProperty(window, 'matchMedia', {\n    writable: true,\n    value: jest.fn().mockImplementation((query) => ({\n      matches: mediaQueryList.includes(query),\n      media: query,\n      onchange: null,\n      addEventListener: jest.fn(),\n      removeEventListener: jest.fn(),\n      dispatchEvent: jest.fn(),\n    })),\n  });\n};\n\ndescribe('Nav', () => {\n  beforeEach(() => {\n    mockMatchMedia();\n  });\n\n  it('renders visible', () => {\n    const { getByTestId } = renderNav({\n      search: { data: [], pageNumber: 1 },\n      navVisible: true,\n      setNavVisible: jest.fn(),\n    });\n\n    expect(getByTestId('nav')).toBeVisible();\n  });\n\n  it('renders hidden', async () => {\n    const { getByTestId } = renderNav({\n      search: { data: [], pageNumber: 1 },\n      navVisible: false,\n      setNavVisible: jest.fn(),\n    });\n\n    expect(getByTestId('nav')).not.toBeVisible();\n  });\n\n  it('renders hidden when small screen is detected', async () => {\n    mockMatchMedia(['(max-width: 768px)']);\n\n    const navVisible = true;\n    const mockSetNavVisible = jest.fn();\n\n    const { getByTestId } = renderNav({\n      search: { data: [], pageNumber: 1 },\n      navVisible: navVisible,\n      setNavVisible: mockSetNavVisible,\n    });\n\n    // nav is initially visible\n    expect(getByTestId('nav')).toBeVisible();\n\n    // when small screen is detected, the nav is hidden\n    expect(mockSetNavVisible.mock.calls).toHaveLength(1);\n    const updatedNavVisible = mockSetNavVisible.mock.calls[0][0](navVisible);\n    expect(updatedNavVisible).not.toEqual(navVisible);\n    expect(updatedNavVisible).toBeFalsy();\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/Nav.tsx",
    "content": "import type { ConversationListResponse } from '~/data-provider/data-provider/src';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useSearchContext } from '~/Providers';\nimport { Conversations } from '~/components/Conversations';\nimport { Spinner } from '~/components/svg';\nimport { useConversationsInfiniteQuery } from '~/data-provider';\nimport {\n  useAuthContext,\n  useHasAccess,\n  useLocalStorage,\n  useLocalize,\n  useMediaQuery,\n  useNavScrolling,\n} from '~/hooks';\nimport { cn } from '~/utils';\nimport AccountSettings from './AccountSettings';\nimport NavToggle from './NavToggle';\nimport NewChat from './NewChat';\n\nconst Nav = ({\n  navVisible,\n  setNavVisible,\n}: {\n  navVisible: boolean;\n  setNavVisible: React.Dispatch<React.SetStateAction<boolean>>;\n}) => {\n  const localize = useLocalize();\n  const { isAuthenticated } = useAuthContext();\n\n  const [navWidth, setNavWidth] = useState('260px');\n  const [isHovering, setIsHovering] = useState(false);\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const [newUser, setNewUser] = useLocalStorage('newUser', true);\n  const [isToggleHovering, setIsToggleHovering] = useState(false);\n\n  const hasAccessToBookmarks = useHasAccess({\n    permissionType: PermissionTypes.BOOKMARKS,\n    permission: Permissions.USE,\n  });\n\n  const handleMouseEnter = useCallback(() => {\n    setIsHovering(true);\n  }, []);\n\n  const handleMouseLeave = useCallback(() => {\n    setIsHovering(false);\n  }, []);\n\n  useEffect(() => {\n    if (isSmallScreen) {\n      const savedNavVisible = localStorage.getItem('navVisible');\n      if (savedNavVisible === null) {\n        toggleNavVisible();\n      }\n      setNavWidth('320px');\n    } else {\n      setNavWidth('260px');\n    }\n  }, [isSmallScreen]);\n\n  const [showLoading, setShowLoading] = useState(false);\n\n  const { pageNumber, searchQuery, setPageNumber, searchQueryRes } = useSearchContext();\n  const [tags, setTags] = useState<string[]>([]);\n  const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } =\n    useConversationsInfiniteQuery(\n      {\n        pageNumber: pageNumber.toString(),\n        isArchived: false,\n        tags: tags.length === 0 ? undefined : tags,\n      },\n      { enabled: isAuthenticated },\n    );\n\n  useEffect(() => {\n    // When a tag is selected, refetch the list of conversations related to that tag\n    refetch();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [tags]);\n  const { containerRef, moveToTop } = useNavScrolling<ConversationListResponse>({\n    setShowLoading,\n    hasNextPage: searchQuery ? searchQueryRes?.hasNextPage : hasNextPage,\n    fetchNextPage: searchQuery ? searchQueryRes?.fetchNextPage : fetchNextPage,\n    isFetchingNextPage: searchQuery\n      ? searchQueryRes?.isFetchingNextPage ?? false\n      : isFetchingNextPage,\n  });\n\n  const conversations = useMemo(\n    () =>\n      // 初始化列表or搜索数据获取\n      (searchQuery ? searchQueryRes?.data : data)?.pages.flatMap((page) => page.conversations) ||\n      [],\n    [data, searchQuery, searchQueryRes?.data],\n  );\n\n  const toggleNavVisible = () => {\n    setNavVisible((prev: boolean) => {\n      localStorage.setItem('navVisible', JSON.stringify(!prev));\n      return !prev;\n    });\n    if (newUser) {\n      setNewUser(false);\n    }\n  };\n\n  const itemToggleNav = () => {\n    if (isSmallScreen) {\n      toggleNavVisible();\n    }\n  };\n\n  return (\n    <>\n      <div\n        data-testid=\"nav\"\n        className={\n          'nav active max-w-[320px] flex-shrink-0 overflow-x-hidden md:max-w-[260px] bg-[#F9FBFF]'\n        }\n        style={{\n          width: navVisible ? navWidth : '0px',\n          visibility: navVisible ? 'visible' : 'hidden',\n          transition: 'width 0.2s, visibility 0.2s',\n        }}\n      >\n        <div className=\"h-full w-[320px] md:w-[260px]\">\n          <div className=\"flex h-full min-h-0 flex-col\">\n            <div\n              className={cn(\n                'flex h-full min-h-0 flex-col transition-opacity',\n                isToggleHovering && !isSmallScreen ? 'opacity-50' : 'opacity-100',\n              )}\n            >\n              <div\n                className={cn(\n                  'scrollbar-trigger relative h-full w-full flex-1 items-start border-white/20',\n                )}\n              >\n                <nav\n                  id=\"chat-history-nav\"\n                  aria-label={localize('com_ui_chat_history')}\n                  className=\"flex h-full w-full flex-col px-3 pb-3.5\"\n                >\n                  {/* 新建 */}\n                  <NewChat\n                    toggleNav={itemToggleNav}\n                    isSmallScreen={isSmallScreen}\n                  />\n                  <div\n                    className={cn(\n                      '-mr-2 flex-1 flex-col overflow-y-auto pr-2 transition-opacity duration-500',\n                      isHovering ? '' : 'scrollbar-transparent',\n                    )}\n                    onMouseEnter={handleMouseEnter}\n                    onMouseLeave={handleMouseLeave}\n                    ref={containerRef}\n                  >\n                    {/* 会话列表 */}\n                    <Conversations\n                      conversations={conversations}\n                      moveToTop={moveToTop}\n                      toggleNav={itemToggleNav}\n                    />\n                    {(isFetchingNextPage || showLoading) && (\n                      <Spinner className={cn('m-1 mx-auto mb-4 h-4 w-4 text-text-primary')} />\n                    )}\n                  </div>\n                  {/* 左下角设置 */}\n                  <AccountSettings />\n                </nav>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      {/* 展开 */}\n      <NavToggle\n        isHovering={isToggleHovering}\n        setIsHovering={setIsToggleHovering}\n        onToggle={toggleNavVisible}\n        navVisible={navVisible}\n        className=\"fixed left-0 top-1/2 z-40 hidden md:flex\"\n      />\n      {isSmallScreen && (\n        <div\n          id=\"mobile-nav-mask-toggle\"\n          role=\"button\"\n          tabIndex={0}\n          className={`nav-mask ${navVisible ? 'active' : ''}`}\n          onClick={toggleNavVisible}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              toggleNavVisible();\n            }\n          }}\n          aria-label=\"Toggle navigation\"\n        />\n      )}\n    </>\n  );\n};\n\nexport default memo(Nav);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/NavLink.tsx",
    "content": "import React, { FC, forwardRef } from 'react';\nimport { cn } from '~/utils/';\n\ninterface Props {\n  svg: () => JSX.Element;\n  text: string;\n  clickHandler?: React.MouseEventHandler<HTMLButtonElement>;\n  className?: string;\n  disabled?: boolean;\n}\n\nconst NavLink: FC<Props> = forwardRef<HTMLButtonElement, Props>((props, ref) => {\n  const { svg, text, clickHandler, disabled, className = '' } = props;\n  const defaultProps: {\n    className: string;\n    onClick?: React.MouseEventHandler<HTMLButtonElement>;\n  } = {\n    className: cn(\n      'w-full flex gap-2 rounded p-2.5 text-sm cursor-pointer group items-center transition-colors duration-200 text-text-primary',\n      className,\n      {\n        'opacity-50 pointer-events-none': disabled,\n      },\n    ),\n  };\n\n  if (clickHandler) {\n    defaultProps.onClick = clickHandler;\n  }\n\n  return (\n    <button {...defaultProps} ref={ref}>\n      {svg()}\n      {text}\n    </button>\n  );\n});\n\nexport default NavLink;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/NavToggle.tsx",
    "content": "import { useLocalize } from '~/hooks';\nimport { TooltipAnchor } from '~/components/ui';\nimport { cn } from '~/utils';\n\nexport default function NavToggle({\n  onToggle,\n  navVisible,\n  isHovering,\n  setIsHovering,\n  side = 'left',\n  className = '',\n  translateX = true,\n}: {\n  onToggle: () => void;\n  navVisible: boolean;\n  isHovering: boolean;\n  setIsHovering: (isHovering: boolean) => void;\n  side?: 'left' | 'right';\n  className?: string;\n  translateX?: boolean;\n}) {\n  const localize = useLocalize();\n  const transition = {\n    transition: 'transform 0.3s ease, opacity 0.2s ease',\n  };\n\n  const rotationDegree = 15;\n  const rotation = isHovering || !navVisible ? `${rotationDegree}deg` : '0deg';\n  const topBarRotation = side === 'right' ? `-${rotation}` : rotation;\n  const bottomBarRotation = side === 'right' ? rotation : `-${rotation}`;\n\n  return (\n    <div\n      className={cn(\n        className,\n        '-translate-y-1/2 transition-transform',\n        navVisible ? 'rotate-0' : 'rotate-180',\n        navVisible && translateX ? 'translate-x-[260px]' : 'translate-x-0 ',\n      )}\n      onMouseEnter={() => setIsHovering(true)}\n      onMouseLeave={() => setIsHovering(false)}\n    >\n      <TooltipAnchor\n        side={side === 'right' ? 'left' : 'right'}\n        aria-label={side === 'left' ? localize('com_ui_chat_history') : localize('com_ui_controls')}\n        aria-expanded={navVisible}\n        aria-controls={side === 'left' ? 'chat-history-nav' : 'controls-nav'}\n        id={`toggle-${side}-nav`}\n        onClick={(e) => {\n          onToggle(e);\n          setIsHovering(false)\n        }}\n        role=\"button\"\n        description={\n          navVisible ? localize('com_nav_close_sidebar') : localize('com_nav_open_sidebar')\n        }\n        className=\"flex items-center justify-center\"\n        tabIndex={0}\n      >\n        <span className=\"\" data-state=\"closed\">\n          <div\n            className=\"flex h-[72px] w-8 items-center justify-center\"\n            style={{ ...transition, opacity: isHovering ? 1 : 0.25 }}\n          >\n            <div className=\"flex h-6 w-6 flex-col items-center\">\n              {/* Top bar */}\n              <div\n                className=\"h-3 w-1 rounded-full bg-black dark:bg-white\"\n                style={{\n                  ...transition,\n                  transform: `translateY(0.15rem) rotate(${topBarRotation}) translateZ(0px)`,\n                }}\n              />\n              {/* Bottom bar */}\n              <div\n                className=\"h-3 w-1 rounded-full bg-black dark:bg-white\"\n                style={{\n                  ...transition,\n                  transform: `translateY(-0.15rem) rotate(${bottomBarRotation}) translateZ(0px)`,\n                }}\n              />\n            </div>\n          </div>\n        </span>\n      </TooltipAnchor>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/NewChat.tsx",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { Search } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useRecoilValue } from 'recoil';\nimport { icons } from '~/components/Chat/Menus/Endpoints/Icons';\nimport ConvoIconURL from '~/components/Endpoints/ConvoIconURL';\nimport { useGetBsConfig, useGetEndpointsQuery } from '~/data-provider';\nimport type { TConversation, TMessage } from '~/data-provider/data-provider/src';\nimport { Constants, QueryKeys } from '~/data-provider/data-provider/src';\nimport { useLocalize, useNewConvo } from '~/hooks';\nimport store from '~/store';\nimport { getEndpointField, getIconEndpoint, getIconKey } from '~/utils';\nimport { Button } from '../ui';\nimport AppsIcon from '../ui/icon/Apps';\n\nconst NewChatButtonIcon = ({ conversation }: { conversation: TConversation | null }) => {\n  const searchQuery = useRecoilValue(store.searchQuery);\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n\n  if (searchQuery) {\n    return (\n      <div className=\"shadow-stroke relative flex h-7 w-7 items-center justify-center rounded-full bg-white text-black dark:bg-white\">\n        <Search className=\"h-5 w-5\" />\n      </div>\n    );\n  }\n\n  let { endpoint = '' } = conversation ?? {};\n  const iconURL = conversation?.iconURL ?? '';\n  endpoint = getIconEndpoint({ endpointsConfig, iconURL, endpoint });\n\n  const endpointType = getEndpointField(endpointsConfig, endpoint, 'type');\n  const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL');\n  const iconKey = getIconKey({ endpoint, endpointsConfig, endpointType, endpointIconURL });\n  const Icon = icons[iconKey];\n\n  return (\n    <div className=\"h-7 w-7 flex-shrink-0\">\n      {iconURL && iconURL.includes('http') ? (\n        <ConvoIconURL\n          iconURL={iconURL}\n          modelLabel={conversation?.chatGptLabel ?? conversation?.modelLabel ?? ''}\n          endpointIconURL={iconURL}\n          context=\"nav\"\n        />\n      ) : (\n        <div className=\"shadow-stroke relative flex h-full items-center justify-center rounded-full bg-white text-black\">\n          {endpoint && Icon != null && (\n            <Icon\n              size={41}\n              context=\"nav\"\n              className=\"h-2/3 w-2/3\"\n              endpoint={endpoint}\n              endpointType={endpointType}\n              iconURL={endpointIconURL}\n            />\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default function NewChat({\n  index = 0,\n  toggleNav,\n  subHeaders,\n  isSmallScreen,\n}: {\n  index?: number;\n  toggleNav: () => void;\n  subHeaders?: React.ReactNode;\n  isSmallScreen: boolean;\n}) {\n  const queryClient = useQueryClient();\n  /** Note: this component needs an explicit index passed if using more than one */\n  const { newConversation: newConvo } = useNewConvo(index);\n  const { data: bsConfig } = useGetBsConfig()\n\n  const navigate = useNavigate();\n  const localize = useLocalize();\n\n  const { conversation } = store.useCreateConversationAtom(index);\n\n  const clickHandler = (event: React.MouseEvent<HTMLAnchorElement>) => {\n    if (event.button === 0 && !(event.ctrlKey || event.metaKey)) {\n      event.preventDefault();\n      newConvo();\n      navigate('/c/new');\n      toggleNav();\n      queryClient.setQueryData<TMessage[]>(\n        [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],\n        [],\n      );\n    }\n  };\n\n  return (\n    <div className=\"sticky left-0 right-0 top-0 z-50 bg-[#F9FBFF]\">\n      <div className=\"pb-0.5 last:pb-0\" style={{ transform: 'none' }}>\n        <div className=\"mb-3 flex justify-between gap-3 px-3 py-2\">\n          <div className=\"flex items-center gap-2\">\n            {bsConfig?.sidebarIcon.image && <img className='w-10 overflow' src={__APP_ENV__.BASE_URL + bsConfig?.sidebarIcon.image} />}\n            <div className='dark:text-gray-50'>{bsConfig?.sidebarSlogan}</div>\n          </div>\n          <div className=\"cursor-pointer rounded-md p-1 hover:bg-slate-100\">\n            {/* <CloseToggleIcon className=\"size-5\" /> */}\n          </div>\n        </div>\n        <div className='flex gap-1 w-full'>\n          <Button variant=\"outline\" className='shadow-sm h-10 rounded-xl px-3 flex-shrink-0'\n            onClick={() => {\n              navigate('/apps');\n            }}>\n            <AppsIcon />\n            <span className=\"text-sm font-normal whitespace-nowrap ml-0.5\">{localize('com_nav_app_center')}</span>\n          </Button>\n          {/* 新建btn */}\n          <Button\n            variant=\"outline\"\n            className=\"shadow-sm h-10 rounded-xl px-3 flex-shrink-0\"\n            aria-label={localize('com_ui_new_chat')}\n            onClick={() => {\n              document.getElementById(\"create-convo-btn\")?.click();\n              // hack\n              setTimeout(() => {\n                document.getElementById(\"create-convo-btn\")?.click();\n              }, 300);\n            }}\n          >\n            <img className='size-[18px] grayscale' src={__APP_ENV__.BASE_URL + '/assets/chat2.png'} alt=\"\" />\n            <span className=\"text-sm font-normal whitespace-nowrap ml-0.5\">{localize('com_nav_start_new_chat')}</span>\n          </Button>\n        </div>\n      </div>\n      <div id=\"create-convo-btn\" className='opacity-0' onClick={clickHandler}></div>\n      {subHeaders != null ? subHeaders : null}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SearchBar.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport { Search, X } from 'lucide-react';\nimport { useSetRecoilState } from 'recoil';\nimport { useLocation } from 'react-router-dom';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { forwardRef, useState, useCallback, useMemo, Ref } from 'react';\nimport { useLocalize, useNewConvo } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\ntype SearchBarProps = {\n  isSmallScreen?: boolean;\n  setPageNumber: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst SearchBar = forwardRef((props: SearchBarProps, ref: Ref<HTMLDivElement>) => {\n  const localize = useLocalize();\n  const location = useLocation();\n  const queryClient = useQueryClient();\n  const { setPageNumber, isSmallScreen } = props;\n\n  const [text, setText] = useState('');\n  const [showClearIcon, setShowClearIcon] = useState(false);\n\n  const { newConversation } = useNewConvo();\n  const clearConvoState = store.useClearConvoState();\n  const setSearchQuery = useSetRecoilState(store.searchQuery);\n  const setIsSearching = useSetRecoilState(store.isSearching);\n\n  const clearSearch = useCallback(() => {\n    setPageNumber(1);\n    if (location.pathname.includes('/search')) {\n      newConversation({ disableFocus: true });\n    }\n  }, [newConversation, setPageNumber, location.pathname]);\n\n  const clearText = useCallback(() => {\n    setShowClearIcon(false);\n    setSearchQuery('');\n    clearSearch();\n    setText('');\n  }, [setSearchQuery, clearSearch]);\n\n  const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    const { value } = e.target as HTMLInputElement;\n    if (e.key === 'Backspace' && value === '') {\n      clearText();\n    }\n  };\n\n  const sendRequest = useCallback(\n    (value: string) => {\n      setSearchQuery(value);\n      if (!value) {\n        return;\n      }\n      queryClient.invalidateQueries([QueryKeys.messages]);\n      clearConvoState();\n    },\n    [queryClient, clearConvoState, setSearchQuery],\n  );\n\n  // TODO: make the debounce time configurable via yaml\n  const debouncedSendRequest = useMemo(() => debounce(sendRequest, 350), [sendRequest]);\n\n  const onChange = (e: React.FormEvent<HTMLInputElement>) => {\n    const { value } = e.target as HTMLInputElement;\n    setShowClearIcon(value.length > 0);\n    setText(value);\n    debouncedSendRequest(value);\n    setIsSearching(true);\n  };\n\n  return (\n    <div\n      ref={ref}\n      className={cn(\n        'group relative mt-1 flex h-10 cursor-pointer items-center gap-3 rounded-lg border-border-medium px-3 py-2 text-text-primary transition-colors duration-200 focus-within:bg-surface-hover hover:bg-surface-hover',\n        isSmallScreen === true ? 'mb-2 h-14 rounded-2xl' : '',\n      )}\n    >\n      {\n        <Search className=\"absolute left-3 h-4 w-4 text-text-secondary group-focus-within:text-text-primary group-hover:text-text-primary\" />\n      }\n      <input\n        type=\"text\"\n        className=\"m-0 mr-0 w-full border-none bg-transparent p-0 pl-7 text-sm leading-tight placeholder-text-secondary placeholder-opacity-100 focus-visible:outline-none group-focus-within:placeholder-text-primary group-hover:placeholder-text-primary\"\n        value={text}\n        onChange={onChange}\n        onKeyDown={(e) => {\n          e.code === 'Space' ? e.stopPropagation() : null;\n        }}\n        aria-label={localize('com_nav_search_placeholder')}\n        placeholder={localize('com_nav_search_placeholder')}\n        onKeyUp={handleKeyUp}\n        onFocus={() => setIsSearching(true)}\n        onBlur={() => setIsSearching(true)}\n        autoComplete=\"off\"\n        dir=\"auto\"\n      />\n      <X\n        className={cn(\n          'absolute right-[7px] h-5 w-5 cursor-pointer transition-opacity duration-200',\n          showClearIcon ? 'opacity-100' : 'opacity-0',\n          isSmallScreen === true ? 'right-[16px]' : '',\n        )}\n        onClick={clearText}\n      />\n    </div>\n  );\n});\n\nexport default SearchBar;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/Settings.tsx",
    "content": "import React, { useState, useRef } from 'react';\nimport * as Tabs from '@radix-ui/react-tabs';\nimport { MessageSquare, Command } from 'lucide-react';\nimport { SettingsTabValues } from '~/data-provider/data-provider/src';\nimport type { TDialogProps } from '~/common';\nimport { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from '@headlessui/react';\nimport { GearIcon, DataIcon, SpeechIcon, UserIcon, ExperimentIcon } from '~/components/svg';\nimport { General, Chat, Speech, Beta, Commands, Data, Account } from './SettingsTabs';\nimport { useMediaQuery, useLocalize, TranslationKeys } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function Settings({ open, onOpenChange }: TDialogProps) {\n  const isSmallScreen = useMediaQuery('(max-width: 767px)');\n  const localize = useLocalize();\n  const [activeTab, setActiveTab] = useState(SettingsTabValues.GENERAL);\n  const tabRefs = useRef({});\n\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    const tabs = [\n      SettingsTabValues.GENERAL,\n      SettingsTabValues.CHAT,\n      SettingsTabValues.BETA,\n      SettingsTabValues.COMMANDS,\n      SettingsTabValues.SPEECH,\n      SettingsTabValues.DATA,\n      SettingsTabValues.ACCOUNT,\n    ];\n    const currentIndex = tabs.indexOf(activeTab);\n\n    switch (event.key) {\n      case 'ArrowDown':\n        event.preventDefault();\n        setActiveTab(tabs[(currentIndex + 1) % tabs.length]);\n        break;\n      case 'ArrowUp':\n        event.preventDefault();\n        setActiveTab(tabs[(currentIndex - 1 + tabs.length) % tabs.length]);\n        break;\n      case 'Home':\n        event.preventDefault();\n        setActiveTab(tabs[0]);\n        break;\n      case 'End':\n        event.preventDefault();\n        setActiveTab(tabs[tabs.length - 1]);\n        break;\n    }\n  };\n\n  const settingsTabs: { value: SettingsTabValues; icon:  React.JSX.Element; label: TranslationKeys }[] = [\n    {\n      value: SettingsTabValues.GENERAL,\n      icon: <GearIcon />,\n      label: 'com_nav_setting_general',\n    },\n    {\n      value: SettingsTabValues.CHAT,\n      icon: <MessageSquare className=\"icon-sm\" />,\n      label: 'com_nav_setting_chat',\n    },\n    // {\n    //   value: SettingsTabValues.BETA,\n    //   icon: <ExperimentIcon />,\n    //   label: 'com_nav_setting_beta',\n    // },\n    // {\n    //   value: SettingsTabValues.COMMANDS,\n    //   icon: <Command className=\"icon-sm\" />,\n    //   label: 'com_nav_commands',\n    // },\n    // {\n    //   value: SettingsTabValues.SPEECH,\n    //   icon: <SpeechIcon className=\"icon-sm\" />,\n    //   label: 'com_nav_setting_speech',\n    // },\n    // {\n    //   value: SettingsTabValues.DATA,\n    //   icon: <DataIcon />,\n    //   label: 'com_nav_setting_data',\n    // },\n    {\n      value: SettingsTabValues.ACCOUNT,\n      icon: <UserIcon />,\n      label: 'com_nav_setting_account',\n    },\n  ];\n\n  const handleTabChange = (value: string) => {\n    setActiveTab(value as SettingsTabValues);\n  };\n\n  return (\n    <Transition appear show={open}>\n      <Dialog as=\"div\" className=\"relative z-50\" onClose={onOpenChange}>\n        <TransitionChild\n          enter=\"ease-out duration-200\"\n          enterFrom=\"opacity-0\"\n          enterTo=\"opacity-100\"\n          leave=\"ease-in duration-200\"\n          leaveFrom=\"opacity-100\"\n          leaveTo=\"opacity-0\"\n        >\n          <div className=\"fixed inset-0 bg-black opacity-50 dark:opacity-80\" aria-hidden=\"true\" />\n        </TransitionChild>\n\n        <TransitionChild\n          enter=\"ease-out duration-200\"\n          enterFrom=\"opacity-0 scale-95\"\n          enterTo=\"opacity-100 scale-100\"\n          leave=\"ease-in duration-100\"\n          leaveFrom=\"opacity-100 scale-100\"\n          leaveTo=\"opacity-0 scale-95\"\n        >\n          <div className={cn('fixed inset-0 flex w-screen items-center justify-center p-4')}>\n            <DialogPanel\n              className={cn(\n                'min-h-[600px] overflow-hidden rounded-xl rounded-b-lg bg-background pb-6 shadow-2xl backdrop-blur-2xl animate-in sm:rounded-2xl md:min-h-[373px] md:w-[680px]',\n              )}\n            >\n              <DialogTitle\n                className=\"mb-1 flex items-center justify-between p-6 pb-5 text-left\"\n                as=\"div\"\n              >\n                <h2 className=\"text-lg font-medium leading-6 text-text-primary\">\n                  {localize('com_nav_settings')}\n                </h2>\n                <button\n                  type=\"button\"\n                  className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-border-xheavy focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-surface-primary dark:focus:ring-offset-surface-primary\"\n                  onClick={() => onOpenChange(false)}\n                >\n                  <svg\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    width=\"24\"\n                    height=\"24\"\n                    viewBox=\"0 0 24 24\"\n                    fill=\"none\"\n                    stroke=\"currentColor\"\n                    strokeWidth=\"2\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    className=\"h-5 w-5 text-text-primary\"\n                  >\n                    <line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\"></line>\n                    <line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\"></line>\n                  </svg>\n                  <span className=\"sr-only\">Close</span>\n                </button>\n              </DialogTitle>\n              <div className=\"max-h-[550px] overflow-auto px-6 md:max-h-[400px] md:min-h-[400px] md:w-[680px]\">\n                <Tabs.Root\n                  value={activeTab}\n                  onValueChange={handleTabChange}\n                  className=\"flex flex-col gap-10 md:flex-row\"\n                  orientation=\"vertical\"\n                >\n                  <Tabs.List\n                    aria-label=\"Settings\"\n                    className={cn(\n                      'min-w-auto max-w-auto relative -ml-[8px] flex flex-shrink-0 flex-col flex-nowrap overflow-auto sm:max-w-none',\n                      isSmallScreen\n                        ? 'flex-row rounded-xl bg-surface-secondary'\n                        : 'sticky top-0 h-full',\n                    )}\n                    onKeyDown={handleKeyDown}\n                  >\n                    {settingsTabs.map(({ value, icon, label }) => (\n                      <Tabs.Trigger\n                        key={value}\n                        className={cn(\n                          'group relative z-10 m-1 flex items-center justify-start gap-2 px-2 py-1.5 transition-all duration-200 ease-in-out',\n                          isSmallScreen\n                            ? 'flex-1 justify-center text-nowrap rounded-xl p-1 px-3 text-sm text-text-secondary radix-state-active:bg-surface-hover radix-state-active:text-text-primary'\n                            : 'rounded-md bg-transparent text-text-primary radix-state-active:bg-surface-tertiary',\n                        )}\n                        value={value}\n                        ref={(el) => (tabRefs.current[value] = el)}\n                      >\n                        {icon}\n                        {localize(label)}\n                      </Tabs.Trigger>\n                    ))}\n                  </Tabs.List>\n                  <div className=\"overflow-auto sm:w-full sm:max-w-none md:pr-0.5 md:pt-0.5\">\n                    <Tabs.Content value={SettingsTabValues.GENERAL}>\n                      <General />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.CHAT}>\n                      <Chat />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.BETA}>\n                      <Beta />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.COMMANDS}>\n                      <Commands />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.SPEECH}>\n                      <Speech />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.DATA}>\n                      <Data />\n                    </Tabs.Content>\n                    <Tabs.Content value={SettingsTabValues.ACCOUNT}>\n                      <Account />\n                    </Tabs.Content>\n                  </div>\n                </Tabs.Root>\n              </div>\n            </DialogPanel>\n          </div>\n        </TransitionChild>\n      </Dialog>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/Account.tsx",
    "content": "import React from 'react';\nimport DisplayUsernameMessages from './DisplayUsernameMessages';\nimport DeleteAccount from './DeleteAccount';\nimport Avatar from './Avatar';\nimport EnableTwoFactorItem from './TwoFactorAuthentication';\nimport BackupCodesItem from './BackupCodesItem';\nimport { useAuthContext } from '~/hooks';\n\nfunction Account() {\n  const user = useAuthContext();\n\n  return (\n    <div className=\"flex flex-col gap-3 p-1 text-sm text-text-primary\">\n      <div className=\"pb-3\">\n        <DisplayUsernameMessages />\n      </div>\n      <div className=\"pb-3\">\n        <Avatar />\n      </div>\n      {user?.user?.provider === 'local' && (\n        <>\n          <div className=\"pb-3\">\n            <EnableTwoFactorItem />\n          </div>\n          {Array.isArray(user.user?.backupCodes) && user.user?.backupCodes.length > 0 && (\n            <div className=\"pb-3\">\n              <BackupCodesItem />\n            </div>\n          )}\n        </>\n      )}\n      <div className=\"pb-3\">\n        <DeleteAccount />\n      </div>\n    </div>\n  );\n}\n\nexport default React.memo(Account);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/Avatar.tsx",
    "content": "import React, { useState, useRef, useCallback } from 'react';\nimport { useSetRecoilState } from 'recoil';\nimport AvatarEditor from 'react-avatar-editor';\nimport { FileImage, RotateCw, Upload } from 'lucide-react';\nimport { fileConfig as defaultFileConfig, mergeFileConfig } from '~/data-provider/data-provider/src';\nimport type { TUser } from '~/data-provider/data-provider/src';\nimport {\n  Slider,\n  Button,\n  Spinner,\n  OGDialog,\n  OGDialogContent,\n  OGDialogHeader,\n  OGDialogTitle,\n  OGDialogTrigger,\n} from '~/components';\nimport { useUploadAvatarMutation, useGetFileConfig } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { cn, formatBytes } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\ninterface AvatarEditorRef {\n  getImageScaledToCanvas: () => HTMLCanvasElement;\n  getImage: () => HTMLImageElement;\n}\n\nfunction Avatar() {\n  const setUser = useSetRecoilState(store.user);\n\n  const [scale, setScale] = useState<number>(1);\n  const [rotation, setRotation] = useState<number>(0);\n  const editorRef = useRef<AvatarEditorRef | null>(null);\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const openButtonRef = useRef<HTMLButtonElement>(null);\n\n  const [image, setImage] = useState<string | File | null>(null);\n  const [isDialogOpen, setDialogOpen] = useState<boolean>(false);\n\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const { mutate: uploadAvatar, isLoading: isUploading } = useUploadAvatarMutation({\n    onSuccess: (data) => {\n      showToast({ message: localize('com_ui_upload_success') });\n      setUser((prev) => ({ ...prev, avatar: data.url }) as TUser);\n      openButtonRef.current?.click();\n    },\n    onError: (error) => {\n      console.error('Error:', error);\n      showToast({ message: localize('com_ui_upload_error'), status: 'error' });\n    },\n  });\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n    const file = event.target.files?.[0];\n    handleFile(file);\n  };\n\n  const handleFile = (file: File | undefined) => {\n    if (fileConfig.avatarSizeLimit != null && file && file.size <= fileConfig.avatarSizeLimit) {\n      setImage(file);\n      setScale(1);\n      setRotation(0);\n    } else {\n      const megabytes =\n        fileConfig.avatarSizeLimit != null ? formatBytes(fileConfig.avatarSizeLimit) : 2;\n      showToast({\n        message: localize('com_ui_upload_invalid_var', { 0: megabytes + '' }),\n        status: 'error',\n      });\n    }\n  };\n\n  const handleScaleChange = (value: number[]) => {\n    setScale(value[0]);\n  };\n\n  const handleRotate = () => {\n    setRotation((prev) => (prev + 90) % 360);\n  };\n\n  const handleUpload = () => {\n    if (editorRef.current) {\n      const canvas = editorRef.current.getImageScaledToCanvas();\n      canvas.toBlob((blob) => {\n        if (blob) {\n          const formData = new FormData();\n          formData.append('file', blob, 'avatar.png');\n          formData.append('manual', 'true');\n          uploadAvatar(formData);\n        }\n      }, 'image/png');\n    }\n  };\n\n  const handleDrop = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n    e.preventDefault();\n    const file = e.dataTransfer.files[0];\n    handleFile(file);\n  }, []);\n\n  const handleDragOver = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n    e.preventDefault();\n  }, []);\n\n  const openFileDialog = () => {\n    fileInputRef.current?.click();\n  };\n\n  const resetImage = useCallback(() => {\n    setImage(null);\n    setScale(1);\n    setRotation(0);\n  }, []);\n\n  return (\n    <OGDialog\n      open={isDialogOpen}\n      onOpenChange={(open) => {\n        setDialogOpen(open);\n        if (!open) {\n          resetImage();\n          setTimeout(() => {\n            openButtonRef.current?.focus();\n          }, 0);\n        }\n      }}\n    >\n      <div className=\"flex items-center justify-between\">\n        <span>{localize('com_nav_profile_picture')}</span>\n        <OGDialogTrigger ref={openButtonRef}>\n          <Button variant=\"outline\">\n            <FileImage className=\"mr-2 flex w-[22px] items-center stroke-1\" />\n            <span>{localize('com_nav_change_picture')}</span>\n          </Button>\n        </OGDialogTrigger>\n      </div>\n\n      <OGDialogContent className=\"w-11/12 max-w-sm\" style={{ borderRadius: '12px' }}>\n        <OGDialogHeader>\n          <OGDialogTitle className=\"text-lg font-medium leading-6 text-text-primary\">\n            {image != null ? localize('com_ui_preview') : localize('com_ui_upload_image')}\n          </OGDialogTitle>\n        </OGDialogHeader>\n        <div className=\"flex flex-col items-center justify-center\">\n          {image != null ? (\n            <>\n              <div className=\"relative overflow-hidden rounded-full\">\n                <AvatarEditor\n                  ref={editorRef}\n                  image={image}\n                  width={250}\n                  height={250}\n                  border={0}\n                  borderRadius={125}\n                  color={[255, 255, 255, 0.6]}\n                  scale={scale}\n                  rotate={rotation}\n                />\n              </div>\n              <div className=\"mt-4 flex w-full flex-col items-center space-y-4\">\n                <div className=\"flex w-full items-center justify-center space-x-4\">\n                  <span className=\"text-sm\">{localize('com_ui_zoom')}</span>\n                  <Slider\n                    value={[scale]}\n                    min={1}\n                    max={5}\n                    step={0.001}\n                    onValueChange={handleScaleChange}\n                    className=\"w-2/3 max-w-xs\"\n                  />\n                </div>\n                <button\n                  onClick={handleRotate}\n                  className=\"rounded-full bg-gray-200 p-2 transition-colors hover:bg-gray-300 dark:bg-gray-600 dark:hover:bg-gray-500\"\n                >\n                  <RotateCw className=\"h-5 w-5\" />\n                </button>\n              </div>\n              <Button\n                className={cn(\n                  'btn btn-primary mt-4 flex w-full hover:bg-green-600',\n                  isUploading ? 'cursor-not-allowed opacity-90' : '',\n                )}\n                onClick={handleUpload}\n                disabled={isUploading}\n              >\n                {isUploading ? (\n                  <Spinner className=\"icon-sm mr-2\" />\n                ) : (\n                  <Upload className=\"mr-2 h-5 w-5\" />\n                )}\n                {localize('com_ui_upload')}\n              </Button>\n            </>\n          ) : (\n            <div\n              className=\"flex h-64 w-11/12 flex-col items-center justify-center rounded-lg border-2 border-dashed border-gray-300 bg-transparent dark:border-gray-600\"\n              onDrop={handleDrop}\n              onDragOver={handleDragOver}\n            >\n              <FileImage className=\"mb-4 size-12 text-gray-400\" />\n              <p className=\"mb-2 text-center text-sm text-gray-500 dark:text-gray-400\">\n                {localize('com_ui_drag_drop')}\n              </p>\n              <Button variant=\"secondary\" onClick={openFileDialog}>\n                {localize('com_ui_select_file')}\n              </Button>\n              <input\n                ref={fileInputRef}\n                type=\"file\"\n                className=\"hidden\"\n                accept=\".png, .jpg, .jpeg\"\n                onChange={handleFileChange}\n              />\n            </div>\n          )}\n        </div>\n      </OGDialogContent>\n    </OGDialog>\n  );\n}\n\nexport default Avatar;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/BackupCodesItem.tsx",
    "content": "import React, { useState } from 'react';\nimport { RefreshCcw, ShieldX } from 'lucide-react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { TBackupCode, TRegenerateBackupCodesResponse, type TUser } from '~/data-provider/data-provider/src';\nimport {\n  OGDialog,\n  OGDialogContent,\n  OGDialogTitle,\n  OGDialogTrigger,\n  Button,\n  Label,\n  Spinner,\n  TooltipAnchor,\n} from '~/components';\nimport { useRegenerateBackupCodesMutation } from '~/data-provider';\nimport { useAuthContext, useLocalize } from '~/hooks';\nimport { useToastContext } from '~/Providers';\nimport { useSetRecoilState } from 'recoil';\nimport store from '~/store';\n\nconst BackupCodesItem: React.FC = () => {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const { showToast } = useToastContext();\n  const setUser = useSetRecoilState(store.user);\n  const [isDialogOpen, setDialogOpen] = useState<boolean>(false);\n\n  const { mutate: regenerateBackupCodes, isLoading } = useRegenerateBackupCodesMutation();\n\n  const fetchBackupCodes = (auto: boolean = false) => {\n    regenerateBackupCodes(undefined, {\n      onSuccess: (data: TRegenerateBackupCodesResponse) => {\n        const newBackupCodes: TBackupCode[] = data.backupCodesHash.map((codeHash) => ({\n          codeHash,\n          used: false,\n          usedAt: null,\n        }));\n\n        setUser((prev) => ({ ...prev, backupCodes: newBackupCodes }) as TUser);\n        showToast({\n          message: localize('com_ui_backup_codes_regenerated'),\n          status: 'success',\n        });\n\n        // Trigger file download only when user explicitly clicks the button.\n        if (!auto && newBackupCodes.length) {\n          const codesString = data.backupCodes.join('\\n');\n          const blob = new Blob([codesString], { type: 'text/plain;charset=utf-8' });\n          const url = URL.createObjectURL(blob);\n          const a = document.createElement('a');\n          a.href = url;\n          a.download = 'backup-codes.txt';\n          a.click();\n          URL.revokeObjectURL(url);\n        }\n      },\n      onError: () =>\n        showToast({\n          message: localize('com_ui_backup_codes_regenerate_error'),\n          status: 'error',\n        }),\n    });\n  };\n\n  const handleRegenerate = () => {\n    fetchBackupCodes(false);\n  };\n\n  return (\n    <OGDialog open={isDialogOpen} onOpenChange={setDialogOpen}>\n      <div className=\"flex items-center justify-between\">\n        <div className=\"flex items-center space-x-3\">\n          <Label className=\"font-light\">{localize('com_ui_backup_codes')}</Label>\n        </div>\n        <OGDialogTrigger asChild>\n          <Button aria-label=\"Show Backup Codes\" variant=\"outline\">\n            {localize('com_ui_show')}\n          </Button>\n        </OGDialogTrigger>\n      </div>\n\n      <OGDialogContent className=\"w-11/12 max-w-lg\">\n        <OGDialogTitle className=\"mb-6 text-2xl font-semibold\">\n          {localize('com_ui_backup_codes')}\n        </OGDialogTitle>\n\n        <AnimatePresence>\n          <motion.div\n            initial={{ opacity: 0, y: 20 }}\n            animate={{ opacity: 1, y: 0 }}\n            exit={{ opacity: 0, y: -20 }}\n            className=\"mt-4\"\n          >\n            {Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 ? (\n              <>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  {user?.backupCodes.map((code, index) => {\n                    const isUsed = code.used;\n                    const description = `Backup code number ${index + 1}, ${\n                      isUsed\n                        ? `used on ${code.usedAt ? new Date(code.usedAt).toLocaleDateString() : 'an unknown date'}`\n                        : 'not used yet'\n                    }`;\n\n                    return (\n                      <motion.div\n                        key={code.codeHash}\n                        role=\"listitem\"\n                        tabIndex={0}\n                        aria-label={description}\n                        initial={{ opacity: 0, y: 20 }}\n                        animate={{ opacity: 1, y: 0 }}\n                        transition={{ delay: index * 0.1 }}\n                        onFocus={() => {\n                          const announcement = new CustomEvent('announce', {\n                            detail: { message: description },\n                          });\n                          document.dispatchEvent(announcement);\n                        }}\n                        className={`flex flex-col rounded-xl border p-4 backdrop-blur-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary ${\n                          isUsed\n                            ? 'border-red-200 bg-red-50/80 dark:border-red-800 dark:bg-red-900/20'\n                            : 'border-green-200 bg-green-50/80 dark:border-green-800 dark:bg-green-900/20'\n                        } `}\n                      >\n                        <div className=\"flex items-center justify-between\" aria-hidden=\"true\">\n                          <span className=\"text-sm font-medium text-text-secondary\">\n                            #{index + 1}\n                          </span>\n                          <TooltipAnchor\n                            description={\n                              code.usedAt ? new Date(code.usedAt).toLocaleDateString() : ''\n                            }\n                            disabled={!isUsed}\n                            focusable={false}\n                            className={isUsed ? 'cursor-pointer' : 'cursor-default'}\n                            render={\n                              <span\n                                className={`rounded-full px-3 py-1 text-sm font-medium ${\n                                  isUsed\n                                    ? 'bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300'\n                                    : 'bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300'\n                                }`}\n                              >\n                                {isUsed ? localize('com_ui_used') : localize('com_ui_not_used')}\n                              </span>\n                            }\n                          />\n                        </div>\n                      </motion.div>\n                    );\n                  })}\n                </div>\n                <div className=\"mt-12 flex justify-center\">\n                  <Button\n                    onClick={handleRegenerate}\n                    disabled={isLoading}\n                    variant=\"default\"\n                    className=\"px-8 py-3 transition-all disabled:opacity-50\"\n                  >\n                    {isLoading ? (\n                      <Spinner className=\"mr-2\" />\n                    ) : (\n                      <RefreshCcw className=\"mr-2 h-4 w-4\" />\n                    )}\n                    {isLoading\n                      ? localize('com_ui_regenerating')\n                      : localize('com_ui_regenerate_backup')}\n                  </Button>\n                </div>\n              </>\n            ) : (\n              <div className=\"flex flex-col items-center gap-4 p-6 text-center\">\n                <ShieldX className=\"h-12 w-12 text-text-primary\" />\n                <p className=\"text-lg text-text-secondary\">{localize('com_ui_no_backup_codes')}</p>\n                <Button\n                  onClick={handleRegenerate}\n                  disabled={isLoading}\n                  variant=\"default\"\n                  className=\"px-8 py-3 transition-all disabled:opacity-50\"\n                >\n                  {isLoading && <Spinner className=\"mr-2\" />}\n                  {localize('com_ui_generate_backup')}\n                </Button>\n              </div>\n            )}\n          </motion.div>\n        </AnimatePresence>\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default React.memo(BackupCodesItem);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/DeleteAccount.tsx",
    "content": "import { LockIcon, Trash } from 'lucide-react';\nimport React, { useState, useCallback } from 'react';\nimport {\n  Input,\n  Button,\n  Spinner,\n  OGDialog,\n  OGDialogContent,\n  OGDialogTrigger,\n  OGDialogHeader,\n  OGDialogTitle,\n} from '~/components';\nimport { useDeleteUserMutation } from '~/data-provider';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport { LocalizeFunction } from '~/common';\n\nconst DeleteAccount = ({ disabled = false }: { title?: string; disabled?: boolean }) => {\n  const localize = useLocalize();\n  const { user, logout } = useAuthContext();\n  const { mutate: deleteUser, isLoading: isDeleting } = useDeleteUserMutation({\n    onMutate: () => logout(),\n  });\n\n  const [isDialogOpen, setDialogOpen] = useState<boolean>(false);\n  const [isLocked, setIsLocked] = useState(true);\n\n  const handleDeleteUser = () => {\n    if (!isLocked) {\n      deleteUser(undefined);\n    }\n  };\n\n  const handleInputChange = useCallback(\n    (newEmailInput: string) => {\n      const isEmailCorrect =\n        newEmailInput.trim().toLowerCase() === user?.email.trim().toLowerCase();\n      setIsLocked(!isEmailCorrect);\n    },\n    [user?.email],\n  );\n\n  return (\n    <>\n      <OGDialog open={isDialogOpen} onOpenChange={setDialogOpen}>\n        <div className=\"flex items-center justify-between\">\n          <span>{localize('com_nav_delete_account')}</span>\n          <OGDialogTrigger asChild>\n            <Button\n              variant=\"destructive\"\n              className=\"flex items-center justify-center rounded-lg transition-colors duration-200\"\n              onClick={() => setDialogOpen(true)}\n              disabled={disabled}\n            >\n              {localize('com_ui_delete')}\n            </Button>\n          </OGDialogTrigger>\n        </div>\n        <OGDialogContent className=\"w-11/12 max-w-md\">\n          <OGDialogHeader>\n            <OGDialogTitle className=\"text-lg font-medium leading-6\">\n              {localize('com_nav_delete_account_confirm')}\n            </OGDialogTitle>\n          </OGDialogHeader>\n          <div className=\"mb-8 text-sm text-black dark:text-white\">\n            <ul className=\"font-semibold text-amber-600\">\n              <li>{localize('com_nav_delete_warning')}</li>\n              <li>{localize('com_nav_delete_data_info')}</li>\n            </ul>\n          </div>\n          <div className=\"flex-col items-center justify-center\">\n            <div className=\"mb-4\">\n              {renderInput(\n                localize('com_nav_delete_account_email_placeholder'),\n                'email-confirm-input',\n                user?.email ?? '',\n                (e) => handleInputChange(e.target.value),\n              )}\n            </div>\n            {renderDeleteButton(handleDeleteUser, isDeleting, isLocked, localize)}\n          </div>\n        </OGDialogContent>\n      </OGDialog>\n    </>\n  );\n};\n\nconst renderInput = (\n  label: string,\n  id: string,\n  value: string,\n  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n) => (\n  <div className=\"mb-4\">\n    <label className=\"mb-1 block text-sm font-medium text-black dark:text-white\" htmlFor={id}>\n      {label}\n    </label>\n    <Input id={id} onChange={onChange} placeholder={value} />\n  </div>\n);\n\nconst renderDeleteButton = (\n  handleDeleteUser: () => void,\n  isDeleting: boolean,\n  isLocked: boolean,\n  localize: LocalizeFunction,\n) => (\n  <button\n    className={cn(\n      'mt-4 flex w-full items-center justify-center rounded-lg bg-surface-tertiary px-4 py-2 transition-all duration-200',\n      isLocked ? 'cursor-not-allowed opacity-30' : 'bg-destructive text-destructive-foreground',\n    )}\n    onClick={handleDeleteUser}\n    disabled={isDeleting || isLocked}\n  >\n    {isDeleting ? (\n      <div className=\"flex h-6 justify-center\">\n        <Spinner className=\"icon-sm m-auto\" />\n      </div>\n    ) : (\n      <>\n        {isLocked ? (\n          <>\n            <LockIcon className=\"size-5\" />\n            <span className=\"ml-2\">{localize('com_ui_locked')}</span>\n          </>\n        ) : (\n          <>\n            <Trash className=\"size-5\" />\n            <span className=\"ml-2\">{localize('com_nav_delete_account_button')}</span>\n          </>\n        )}\n      </>\n    )}\n  </button>\n);\n\nexport default DeleteAccount;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/DisableTwoFactorToggle.tsx",
    "content": "import React from 'react';\nimport { motion } from 'framer-motion';\nimport { LockIcon, UnlockIcon } from 'lucide-react';\nimport { Label, Button } from '~/components';\nimport { useLocalize } from '~/hooks';\n\ninterface DisableTwoFactorToggleProps {\n  enabled: boolean;\n  onChange: () => void;\n  disabled?: boolean;\n}\n\nexport const DisableTwoFactorToggle: React.FC<DisableTwoFactorToggleProps> = ({\n  enabled,\n  onChange,\n  disabled,\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <Label className=\"font-light\"> {localize('com_nav_2fa')}</Label>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <Button\n          variant={enabled ? 'destructive' : 'outline'}\n          onClick={onChange}\n          disabled={disabled}\n        >\n          {enabled ? localize('com_ui_2fa_disable') : localize('com_ui_2fa_enable')}\n        </Button>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/DisplayUsernameMessages.tsx",
    "content": "import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { Switch, Label } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function DisplayUsernameMessages() {\n  const localize = useLocalize();\n  const [UsernameDisplay, setUsernameDisplay] = useRecoilState(store.UsernameDisplay);\n\n  const handleCheckedChange = (checked: boolean) => {\n    setUsernameDisplay(checked);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <Label className=\"font-light\">{localize('com_nav_user_name_display')}</Label>\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_info_user_name_display\" />\n      </div>\n      <Switch\n        id=\"UsernameDisplay\"\n        checked={UsernameDisplay}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"UsernameDisplay\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorAuthentication.tsx",
    "content": "import React, { useCallback, useState } from 'react';\nimport { useSetRecoilState } from 'recoil';\nimport { SmartphoneIcon } from 'lucide-react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport type { TUser, TVerify2FARequest } from '~/data-provider/data-provider/src';\nimport { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle, Progress } from '~/components';\nimport { SetupPhase, QRPhase, VerifyPhase, BackupPhase, DisablePhase } from './TwoFactorPhases';\nimport { DisableTwoFactorToggle } from './DisableTwoFactorToggle';\nimport { useAuthContext, useLocalize } from '~/hooks';\nimport { useToastContext } from '~/Providers';\nimport store from '~/store';\nimport {\n  useConfirmTwoFactorMutation,\n  useDisableTwoFactorMutation,\n  useEnableTwoFactorMutation,\n  useVerifyTwoFactorMutation,\n} from '~/data-provider';\n\nexport type Phase = 'setup' | 'qr' | 'verify' | 'backup' | 'disable';\n\nconst phaseVariants = {\n  initial: { opacity: 0, scale: 0.95 },\n  animate: { opacity: 1, scale: 1, transition: { duration: 0.3, ease: 'easeOut' } },\n  exit: { opacity: 0, scale: 0.95, transition: { duration: 0.3, ease: 'easeIn' } },\n};\n\nconst TwoFactorAuthentication: React.FC = () => {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const setUser = useSetRecoilState(store.user);\n  const { showToast } = useToastContext();\n\n  const [secret, setSecret] = useState<string>('');\n  const [otpauthUrl, setOtpauthUrl] = useState<string>('');\n  const [downloaded, setDownloaded] = useState<boolean>(false);\n  const [disableToken, setDisableToken] = useState<string>('');\n  const [backupCodes, setBackupCodes] = useState<string[]>([]);\n  const [isDialogOpen, setDialogOpen] = useState<boolean>(false);\n  const [verificationToken, setVerificationToken] = useState<string>('');\n  const [phase, setPhase] = useState<Phase>(Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 ? 'disable' : 'setup');\n\n  const { mutate: confirm2FAMutate } = useConfirmTwoFactorMutation();\n  const { mutate: enable2FAMutate, isLoading: isGenerating } = useEnableTwoFactorMutation();\n  const { mutate: verify2FAMutate, isLoading: isVerifying } = useVerifyTwoFactorMutation();\n  const { mutate: disable2FAMutate, isLoading: isDisabling } = useDisableTwoFactorMutation();\n\n  const steps = ['Setup', 'Scan QR', 'Verify', 'Backup'];\n  const phasesLabel: Record<Phase, string> = {\n    setup: 'Setup',\n    qr: 'Scan QR',\n    verify: 'Verify',\n    backup: 'Backup',\n    disable: '',\n  };\n\n  const currentStep = steps.indexOf(phasesLabel[phase]);\n\n  const resetState = useCallback(() => {\n    if (Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 && otpauthUrl) {\n      disable2FAMutate(undefined, {\n        onError: () =>\n          showToast({ message: localize('com_ui_2fa_disable_error'), status: 'error' }),\n      });\n    }\n\n    setOtpauthUrl('');\n    setSecret('');\n    setBackupCodes([]);\n    setVerificationToken('');\n    setDisableToken('');\n    setPhase(Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 ? 'disable' : 'setup');\n    setDownloaded(false);\n  }, [user, otpauthUrl, disable2FAMutate, localize, showToast]);\n\n  const handleGenerateQRCode = useCallback(() => {\n    enable2FAMutate(undefined, {\n      onSuccess: ({ otpauthUrl, backupCodes }) => {\n        setOtpauthUrl(otpauthUrl);\n        setSecret(otpauthUrl.split('secret=')[1].split('&')[0]);\n        setBackupCodes(backupCodes);\n        setPhase('qr');\n      },\n      onError: () => showToast({ message: localize('com_ui_2fa_generate_error'), status: 'error' }),\n    });\n  }, [enable2FAMutate, localize, showToast]);\n\n  const handleVerify = useCallback(() => {\n    if (!verificationToken) {\n      return;\n    }\n\n    verify2FAMutate(\n      { token: verificationToken },\n      {\n        onSuccess: () => {\n          showToast({ message: localize('com_ui_2fa_verified') });\n          confirm2FAMutate(\n            { token: verificationToken },\n            {\n              onSuccess: () => setPhase('backup'),\n              onError: () =>\n                showToast({ message: localize('com_ui_2fa_invalid'), status: 'error' }),\n            },\n          );\n        },\n        onError: () => showToast({ message: localize('com_ui_2fa_invalid'), status: 'error' }),\n      },\n    );\n  }, [verificationToken, verify2FAMutate, confirm2FAMutate, localize, showToast]);\n\n  const handleDownload = useCallback(() => {\n    if (!backupCodes.length) {\n      return;\n    }\n    const blob = new Blob([backupCodes.join('\\n')], { type: 'text/plain;charset=utf-8' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'backup-codes.txt';\n    a.click();\n    URL.revokeObjectURL(url);\n    setDownloaded(true);\n  }, [backupCodes]);\n\n  const handleConfirm = useCallback(() => {\n    setDialogOpen(false);\n    setPhase('disable');\n    showToast({ message: localize('com_ui_2fa_enabled') });\n    setUser(\n      (prev) =>\n        ({\n          ...prev,\n          backupCodes: backupCodes.map((code) => ({\n            code,\n            codeHash: code,\n            used: false,\n            usedAt: null,\n          })),\n        }) as TUser,\n    );\n  }, [setUser, localize, showToast, backupCodes]);\n\n  const handleDisableVerify = useCallback(\n    (token: string, useBackup: boolean) => {\n      // Validate: if not using backup, ensure token has at least 6 digits;\n      // if using backup, ensure backup code has at least 8 characters.\n      if (!useBackup && token.trim().length < 6) {\n        return;\n      }\n\n      if (useBackup && token.trim().length < 8) {\n        return;\n      }\n\n      const payload: TVerify2FARequest = {};\n      if (useBackup) {\n        payload.backupCode = token.trim();\n      } else {\n        payload.token = token.trim();\n      }\n\n      verify2FAMutate(payload, {\n        onSuccess: () => {\n          disable2FAMutate(undefined, {\n            onSuccess: () => {\n              showToast({ message: localize('com_ui_2fa_disabled') });\n              setDialogOpen(false);\n              setUser(\n                (prev) =>\n                  ({\n                    ...prev,\n                    totpSecret: '',\n                    backupCodes: [],\n                  }) as TUser,\n              );\n              setPhase('setup');\n              setOtpauthUrl('');\n            },\n            onError: () =>\n              showToast({ message: localize('com_ui_2fa_disable_error'), status: 'error' }),\n          });\n        },\n        onError: () => showToast({ message: localize('com_ui_2fa_invalid'), status: 'error' }),\n      });\n    },\n    [disableToken, verify2FAMutate, disable2FAMutate, showToast, localize, setUser],\n  );\n\n  return (\n    <OGDialog\n      open={isDialogOpen}\n      onOpenChange={(open) => {\n        setDialogOpen(open);\n        if (!open) {\n          resetState();\n        }\n      }}\n    >\n      <DisableTwoFactorToggle\n        enabled={Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0}\n        onChange={() => setDialogOpen(true)}\n        disabled={isVerifying || isDisabling || isGenerating}\n      />\n\n      <OGDialogContent className=\"w-11/12 max-w-lg p-6\">\n        <AnimatePresence mode=\"wait\">\n          <motion.div\n            key={phase}\n            variants={phaseVariants}\n            initial=\"initial\"\n            animate=\"animate\"\n            exit=\"exit\"\n            className=\"space-y-6\"\n          >\n            <OGDialogHeader>\n              <OGDialogTitle className=\"mb-2 flex items-center gap-3 text-2xl font-bold\">\n                <SmartphoneIcon className=\"h-6 w-6 text-primary\" />\n                {Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 ? localize('com_ui_2fa_disable') : localize('com_ui_2fa_setup')}\n              </OGDialogTitle>\n              {Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0 && phase !== 'disable' && (\n                <div className=\"mt-4 space-y-3\">\n                  <Progress\n                    value={(steps.indexOf(phasesLabel[phase]) / (steps.length - 1)) * 100}\n                    className=\"h-2 rounded-full\"\n                  />\n                  <div className=\"flex justify-between text-sm\">\n                    {steps.map((step, index) => (\n                      <motion.span\n                        key={step}\n                        animate={{\n                          color:\n                            currentStep >= index ? 'var(--text-primary)' : 'var(--text-tertiary)',\n                        }}\n                        className=\"font-medium\"\n                      >\n                        {step}\n                      </motion.span>\n                    ))}\n                  </div>\n                </div>\n              )}\n            </OGDialogHeader>\n\n            <AnimatePresence mode=\"wait\">\n              {phase === 'setup' && (\n                <SetupPhase\n                  isGenerating={isGenerating}\n                  onGenerate={handleGenerateQRCode}\n                  onNext={() => setPhase('qr')}\n                  onError={(error) => showToast({ message: error.message, status: 'error' })}\n                />\n              )}\n\n              {phase === 'qr' && (\n                <QRPhase\n                  secret={secret}\n                  otpauthUrl={otpauthUrl}\n                  onNext={() => setPhase('verify')}\n                  onError={(error) => showToast({ message: error.message, status: 'error' })}\n                />\n              )}\n\n              {phase === 'verify' && (\n                <VerifyPhase\n                  token={verificationToken}\n                  onTokenChange={setVerificationToken}\n                  isVerifying={isVerifying}\n                  onNext={handleVerify}\n                  onError={(error) => showToast({ message: error.message, status: 'error' })}\n                />\n              )}\n\n              {phase === 'backup' && (\n                <BackupPhase\n                  backupCodes={backupCodes}\n                  onDownload={handleDownload}\n                  downloaded={downloaded}\n                  onNext={handleConfirm}\n                  onError={(error) => showToast({ message: error.message, status: 'error' })}\n                />\n              )}\n\n              {phase === 'disable' && (\n                <DisablePhase\n                  onDisable={handleDisableVerify}\n                  isDisabling={isDisabling}\n                  onError={(error) => showToast({ message: error.message, status: 'error' })}\n                />\n              )}\n            </AnimatePresence>\n          </motion.div>\n        </AnimatePresence>\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default React.memo(TwoFactorAuthentication);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/BackupPhase.tsx",
    "content": "import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Download } from 'lucide-react';\nimport { Button, Label } from '~/components';\nimport { useLocalize } from '~/hooks';\n\nconst fadeAnimation = {\n  initial: { opacity: 0, y: 20 },\n  animate: { opacity: 1, y: 0 },\n  exit: { opacity: 0, y: -20 },\n  transition: { duration: 0.2 },\n};\n\ninterface BackupPhaseProps {\n  onNext: () => void;\n  onError: (error: Error) => void;\n  backupCodes: string[];\n  onDownload: () => void;\n  downloaded: boolean;\n}\n\nexport const BackupPhase: React.FC<BackupPhaseProps> = ({\n  backupCodes,\n  onDownload,\n  downloaded,\n  onNext,\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <motion.div {...fadeAnimation} className=\"space-y-6\">\n      <Label className=\"break-keep text-sm\">{localize('com_ui_download_backup_tooltip')}</Label>\n      <div className=\"grid grid-cols-2 gap-4 rounded-xl bg-surface-secondary p-6\">\n        {backupCodes.map((code, index) => (\n          <motion.div\n            key={code}\n            initial={{ opacity: 0, y: 20 }}\n            animate={{ opacity: 1, y: 0 }}\n            transition={{ delay: index * 0.1 }}\n            className=\"rounded-lg bg-surface-tertiary p-3\"\n          >\n            <div className=\"flex items-center justify-between\">\n              <span className=\"hidden text-sm text-text-secondary sm:inline\">#{index + 1}</span>\n              <span className=\"font-mono text-lg\">{code}</span>\n            </div>\n          </motion.div>\n        ))}\n      </div>\n      <div className=\"flex gap-4\">\n        <Button variant=\"outline\" onClick={onDownload} className=\"flex-1 gap-2\">\n          <Download className=\"h-4 w-4\" />\n          <span className=\"hidden sm:inline\">{localize('com_ui_download_backup')}</span>\n        </Button>\n        <Button onClick={onNext} disabled={!downloaded} className=\"flex-1\">\n          {localize('com_ui_complete_setup')}\n        </Button>\n      </div>\n    </motion.div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/DisablePhase.tsx",
    "content": "import React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from 'input-otp';\nimport {\n  Button,\n  InputOTP,\n  InputOTPGroup,\n  InputOTPSlot,\n  InputOTPSeparator,\n  Spinner,\n} from '~/components';\nimport { useLocalize } from '~/hooks';\n\nconst fadeAnimation = {\n  initial: { opacity: 0, y: 20 },\n  animate: { opacity: 1, y: 0 },\n  exit: { opacity: 0, y: -20 },\n  transition: { duration: 0.2 },\n};\n\ninterface DisablePhaseProps {\n  onSuccess?: () => void;\n  onError?: (error: Error) => void;\n  onDisable: (token: string, useBackup: boolean) => void;\n  isDisabling: boolean;\n}\n\nexport const DisablePhase: React.FC<DisablePhaseProps> = ({ onDisable, isDisabling }) => {\n  const localize = useLocalize();\n  const [token, setToken] = useState('');\n  const [useBackup, setUseBackup] = useState(false);\n\n  return (\n    <motion.div {...fadeAnimation} className=\"space-y-8\">\n      <div className=\"flex justify-center\">\n        <InputOTP\n          value={token}\n          onChange={setToken}\n          maxLength={useBackup ? 8 : 6}\n          pattern={useBackup ? REGEXP_ONLY_DIGITS_AND_CHARS : REGEXP_ONLY_DIGITS}\n          className=\"gap-2\"\n        >\n          {useBackup ? (\n            <InputOTPGroup>\n              <InputOTPSlot index={0} />\n              <InputOTPSlot index={1} />\n              <InputOTPSlot index={2} />\n              <InputOTPSlot index={3} />\n              <InputOTPSlot index={4} />\n              <InputOTPSlot index={5} />\n              <InputOTPSlot index={6} />\n              <InputOTPSlot index={7} />\n            </InputOTPGroup>\n          ) : (\n            <>\n              <InputOTPGroup>\n                <InputOTPSlot index={0} />\n                <InputOTPSlot index={1} />\n                <InputOTPSlot index={2} />\n              </InputOTPGroup>\n              <InputOTPSeparator />\n              <InputOTPGroup>\n                <InputOTPSlot index={3} />\n                <InputOTPSlot index={4} />\n                <InputOTPSlot index={5} />\n              </InputOTPGroup>\n            </>\n          )}\n        </InputOTP>\n      </div>\n      <Button\n        variant=\"destructive\"\n        onClick={() => onDisable(token, useBackup)}\n        disabled={isDisabling || token.length !== (useBackup ? 8 : 6)}\n        className=\"w-full rounded-xl px-6 py-3 transition-all disabled:opacity-50\"\n      >\n        {isDisabling === true && <Spinner className=\"mr-2\" />}\n        {isDisabling ? localize('com_ui_disabling') : localize('com_ui_2fa_disable')}\n      </Button>\n      <button\n        onClick={() => setUseBackup(!useBackup)}\n        className=\"text-sm text-primary hover:underline\"\n      >\n        {useBackup ? localize('com_ui_use_2fa_code') : localize('com_ui_use_backup_code')}\n      </button>\n    </motion.div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/QRPhase.tsx",
    "content": "import React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { QRCodeSVG } from 'qrcode.react';\nimport { Copy, Check } from 'lucide-react';\nimport { Input, Button, Label } from '~/components';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nconst fadeAnimation = {\n  initial: { opacity: 0, y: 20 },\n  animate: { opacity: 1, y: 0 },\n  exit: { opacity: 0, y: -20 },\n  transition: { duration: 0.2 },\n};\n\ninterface QRPhaseProps {\n  secret: string;\n  otpauthUrl: string;\n  onNext: () => void;\n  onSuccess?: () => void;\n  onError?: (error: Error) => void;\n}\n\nexport const QRPhase: React.FC<QRPhaseProps> = ({ secret, otpauthUrl, onNext }) => {\n  const localize = useLocalize();\n  const [isCopying, setIsCopying] = useState(false);\n\n  const handleCopy = async () => {\n    await navigator.clipboard.writeText(secret);\n    setIsCopying(true);\n    setTimeout(() => setIsCopying(false), 2000);\n  };\n\n  return (\n    <motion.div {...fadeAnimation} className=\"space-y-6\">\n      <div className=\"flex flex-col items-center space-y-6\">\n        <motion.div\n          initial={{ scale: 0.8, opacity: 0 }}\n          animate={{ scale: 1, opacity: 1 }}\n          className=\"rounded-2xl bg-white p-4 shadow-lg\"\n        >\n          <QRCodeSVG value={otpauthUrl} size={240} />\n        </motion.div>\n        <div className=\"w-full space-y-3\">\n          <Label className=\"text-sm font-medium text-text-secondary\">\n            {localize('com_ui_secret_key')}\n          </Label>\n          <div className=\"flex gap-2\">\n            <Input value={secret} readOnly className=\"font-mono text-lg tracking-wider\" />\n            <Button\n              size=\"sm\"\n              variant=\"outline\"\n              onClick={handleCopy}\n              className={cn('h-auto shrink-0', isCopying ? 'cursor-default' : '')}\n            >\n              {isCopying ? <Check className=\"size-4\" /> : <Copy className=\"size-4\" />}\n            </Button>\n          </div>\n        </div>\n      </div>\n      <Button onClick={onNext} className=\"w-full\">\n        {localize('com_ui_continue')}\n      </Button>\n    </motion.div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/SetupPhase.tsx",
    "content": "import React from 'react';\nimport { QrCode } from 'lucide-react';\nimport { motion } from 'framer-motion';\nimport { Button, Spinner } from '~/components';\nimport { useLocalize } from '~/hooks';\n\nconst fadeAnimation = {\n  initial: { opacity: 0, y: 20 },\n  animate: { opacity: 1, y: 0 },\n  exit: { opacity: 0, y: -20 },\n  transition: { duration: 0.2 },\n};\n\ninterface SetupPhaseProps {\n  onNext: () => void;\n  onError: (error: Error) => void;\n  isGenerating: boolean;\n  onGenerate: () => void;\n}\n\nexport const SetupPhase: React.FC<SetupPhaseProps> = ({ isGenerating, onGenerate, onNext }) => {\n  const localize = useLocalize();\n\n  return (\n    <motion.div {...fadeAnimation} className=\"space-y-6\">\n      <div className=\"rounded-xl bg-surface-secondary p-6\">\n        <h3 className=\"mb-4 flex justify-center text-lg font-medium\">\n          {localize('com_ui_2fa_account_security')}\n        </h3>\n        <Button\n          variant=\"default\"\n          onClick={onGenerate}\n          className=\"flex w-full\"\n          disabled={isGenerating}\n        >\n          {isGenerating ? <Spinner className=\"size-5\" /> : <QrCode className=\"size-5\" />}\n          {isGenerating ? localize('com_ui_generating') : localize('com_ui_generate_qrcode')}\n        </Button>\n      </div>\n    </motion.div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/VerifyPhase.tsx",
    "content": "import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Button, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from '~/components';\nimport { REGEXP_ONLY_DIGITS } from 'input-otp';\nimport { useLocalize } from '~/hooks';\n\nconst fadeAnimation = {\n  initial: { opacity: 0, y: 20 },\n  animate: { opacity: 1, y: 0 },\n  exit: { opacity: 0, y: -20 },\n  transition: { duration: 0.2 },\n};\n\ninterface VerifyPhaseProps {\n  token: string;\n  onTokenChange: (value: string) => void;\n  isVerifying: boolean;\n  onNext: () => void;\n  onError: (error: Error) => void;\n}\n\nexport const VerifyPhase: React.FC<VerifyPhaseProps> = ({\n  token,\n  onTokenChange,\n  isVerifying,\n  onNext,\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <motion.div {...fadeAnimation} className=\"space-y-8\">\n      <div className=\"flex justify-center\">\n        <InputOTP\n          value={token}\n          onChange={onTokenChange}\n          maxLength={6}\n          pattern={REGEXP_ONLY_DIGITS}\n          className=\"gap-2\"\n        >\n          <InputOTPGroup>\n            {Array.from({ length: 3 }).map((_, i) => (\n              <InputOTPSlot key={i} index={i} />\n            ))}\n          </InputOTPGroup>\n          <InputOTPSeparator />\n          <InputOTPGroup>\n            {Array.from({ length: 3 }).map((_, i) => (\n              <InputOTPSlot key={i + 3} index={i + 3} />\n            ))}\n          </InputOTPGroup>\n        </InputOTP>\n      </div>\n      <Button onClick={onNext} disabled={isVerifying || token.length !== 6} className=\"w-full\">\n        {localize('com_ui_verify')}\n      </Button>\n    </motion.div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Account/TwoFactorPhases/index.ts",
    "content": "export * from './BackupPhase';\nexport * from './QRPhase';\nexport * from './VerifyPhase';\nexport * from './SetupPhase';\nexport * from './DisablePhase';\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Beta/Beta.tsx",
    "content": "import { memo } from 'react';\nimport CodeArtifacts from './CodeArtifacts';\n\nfunction Beta() {\n  return (\n    <div className=\"flex flex-col gap-3 p-1 text-sm text-text-primary\">\n      <div className=\"pb-3\">\n        <CodeArtifacts />\n      </div>\n    </div>\n  );\n}\n\nexport default memo(Beta);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Beta/CodeArtifacts.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '~/components/Nav/SettingsTabs/HoverCardSettings';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function CodeArtifacts() {\n  const [codeArtifacts, setCodeArtifacts] = useRecoilState<boolean>(store.codeArtifacts);\n  const [includeShadcnui, setIncludeShadcnui] = useRecoilState<boolean>(store.includeShadcnui);\n  const [customPromptMode, setCustomPromptMode] = useRecoilState<boolean>(store.customPromptMode);\n  const localize = useLocalize();\n\n  const handleCodeArtifactsChange = (value: boolean) => {\n    setCodeArtifacts(value);\n    if (!value) {\n      setIncludeShadcnui(false);\n      setCustomPromptMode(false);\n    }\n  };\n\n  const handleIncludeShadcnuiChange = (value: boolean) => {\n    setIncludeShadcnui(value);\n  };\n\n  const handleCustomPromptModeChange = (value: boolean) => {\n    setCustomPromptMode(value);\n    if (value) {\n      setIncludeShadcnui(false);\n    }\n  };\n\n  return (\n    <div className=\"space-y-4\">\n      <h3 className=\"text-lg font-medium\">{localize('com_ui_artifacts')}</h3>\n      <div className=\"space-y-2\">\n        <SwitchItem\n          id=\"codeArtifacts\"\n          label={localize('com_ui_artifacts_toggle')}\n          checked={codeArtifacts}\n          onCheckedChange={handleCodeArtifactsChange}\n          hoverCardText=\"com_nav_info_code_artifacts\"\n        />\n        <SwitchItem\n          id=\"includeShadcnui\"\n          label={localize('com_ui_include_shadcnui')}\n          checked={includeShadcnui}\n          onCheckedChange={handleIncludeShadcnuiChange}\n          hoverCardText=\"com_nav_info_include_shadcnui\"\n          disabled={!codeArtifacts || customPromptMode}\n        />\n        <SwitchItem\n          id=\"customPromptMode\"\n          label={localize('com_ui_custom_prompt_mode')}\n          checked={customPromptMode}\n          onCheckedChange={handleCustomPromptModeChange}\n          hoverCardText=\"com_nav_info_custom_prompt_mode\"\n          disabled={!codeArtifacts}\n        />\n      </div>\n    </div>\n  );\n}\n\nfunction SwitchItem({\n  id,\n  label,\n  checked,\n  onCheckedChange,\n  hoverCardText,\n  disabled = false,\n}: {\n  id: string;\n  label: string;\n  checked: boolean;\n  onCheckedChange: (value: boolean) => void;\n  hoverCardText: string;\n  disabled?: boolean;\n}) {\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div className={disabled ? 'text-gray-400' : ''}>{label}</div>\n        <HoverCardSettings side=\"bottom\" text={hoverCardText} />\n      </div>\n      <Switch\n        id={id}\n        checked={checked}\n        onCheckedChange={onCheckedChange}\n        className=\"ml-4\"\n        data-testid={id}\n        disabled={disabled}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/Chat.tsx",
    "content": "import { memo } from 'react';\nimport MaximizeChatSpace from './MaximizeChatSpace';\nimport FontSizeSelector from './FontSizeSelector';\nimport SendMessageKeyEnter from './EnterToSend';\nimport ShowCodeSwitch from './ShowCodeSwitch';\nimport { ForkSettings } from './ForkSettings';\nimport ChatDirection from './ChatDirection';\nimport ShowThinking from './ShowThinking';\nimport LaTeXParsing from './LaTeXParsing';\nimport ScrollButton from './ScrollButton';\nimport ModularChat from './ModularChat';\nimport SaveDraft from './SaveDraft';\n\nfunction Chat() {\n  return (\n    <div className=\"flex flex-col gap-3 p-1 text-sm text-text-primary\">\n      <div className=\"pb-3\">\n        <FontSizeSelector />\n      </div>\n      <div className=\"pb-3\">\n        <ChatDirection />\n      </div>\n      <div className=\"pb-3\">\n        <SendMessageKeyEnter />\n      </div>\n      <div className=\"pb-3\">\n        <MaximizeChatSpace />\n      </div>\n      <div className=\"pb-3\">\n        <ShowCodeSwitch />\n      </div>\n      <div className=\"pb-3\">\n        <SaveDraft />\n      </div>\n      <div className=\"pb-3\">\n        <ScrollButton />\n      </div>\n      <ForkSettings />\n      <div className=\"pb-3\">\n        <ModularChat />\n      </div>\n      <div className=\"pb-3\">\n        <LaTeXParsing />\n      </div>\n      <div className=\"pb-3\">\n        <ShowThinking />\n      </div>\n    </div>\n  );\n}\n\nexport default memo(Chat);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ChatDirection.tsx",
    "content": "import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport { useLocalize } from '~/hooks';\nimport { Button } from '~/components';\nimport store from '~/store';\n\nconst ChatDirection = () => {\n  const [direction, setDirection] = useRecoilState(store.chatDirection);\n  const localize = useLocalize();\n\n  const toggleChatDirection = () => {\n    setDirection((prev) => (prev === 'LTR' ? 'RTL' : 'LTR'));\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <span id=\"chat-direction-label\">{localize('com_nav_chat_direction')}</span>\n      </div>\n      <Button\n        variant=\"outline\"\n        aria-label=\"Toggle chat direction\"\n        onClick={toggleChatDirection}\n        data-testid=\"chatDirection\"\n      >\n        <span aria-hidden=\"true\">{direction.toLowerCase()}</span>\n        <span id=\"chat-direction-status\" className=\"sr-only\">\n          {direction === 'LTR'\n            ? localize('chat_direction_left_to_right')\n            : localize('chat_direction_right_to_left')}\n        </span>\n      </Button>\n    </div>\n  );\n};\n\nexport default ChatDirection;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/EnterToSend.tsx",
    "content": "import { useRecoilState } from 'recoil';\r\nimport HoverCardSettings from '../HoverCardSettings';\r\nimport { Switch } from '~/components/ui/Switch';\r\nimport useLocalize from '~/hooks/useLocalize';\r\nimport store from '~/store';\r\n\r\nexport default function SendMessageKeyEnter({\r\n  onCheckedChange,\r\n}: {\r\n  onCheckedChange?: (value: boolean) => void;\r\n}) {\r\n  const [enterToSend, setEnterToSend] = useRecoilState<boolean>(store.enterToSend);\r\n  const localize = useLocalize();\r\n\r\n  const handleCheckedChange = (value: boolean) => {\r\n    setEnterToSend(value);\r\n    if (onCheckedChange) {\r\n      onCheckedChange(value);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"flex items-center justify-between\">\r\n      <div className=\"flex items-center space-x-2\">\r\n        <div>{localize('com_nav_enter_to_send')}</div>\r\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_info_enter_to_send\" />\r\n      </div>\r\n      <Switch\r\n        id=\"enterToSend\"\r\n        checked={enterToSend}\r\n        onCheckedChange={handleCheckedChange}\r\n        className=\"ml-4\"\r\n        data-testid=\"enterToSend\"\r\n      />\r\n    </div>\r\n  );\r\n}\r\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/FontSizeSelector.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Dropdown } from '~/components/ui';\nimport { applyFontSize } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function FontSizeSelector() {\n  const [fontSize, setFontSize] = useRecoilState(store.fontSize);\n  const localize = useLocalize();\n\n  const handleChange = (val: string) => {\n    setFontSize(val);\n    applyFontSize(val);\n  };\n\n  const options = [\n    { value: 'text-xs', label: localize('com_nav_font_size_xs') },\n    { value: 'text-sm', label: localize('com_nav_font_size_sm') },\n    { value: 'text-base', label: localize('com_nav_font_size_base') },\n    { value: 'text-lg', label: localize('com_nav_font_size_lg') },\n    { value: 'text-xl', label: localize('com_nav_font_size_xl') },\n  ];\n\n  return (\n    <div className=\"flex w-full items-center justify-between\">\n      <div>{localize('com_nav_font_size')}</div>\n      <Dropdown\n        value={fontSize}\n        options={options}\n        onChange={handleChange}\n        testId=\"font-size-selector\"\n        sizeClasses=\"w-[150px]\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ForkSettings.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { ForkOptions } from '~/data-provider/data-provider/src';\nimport { Dropdown, Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport const ForkSettings = () => {\n  const localize = useLocalize();\n  const [forkSetting, setForkSetting] = useRecoilState(store.forkSetting);\n  const [splitAtTarget, setSplitAtTarget] = useRecoilState(store.splitAtTarget);\n  const [remember, setRemember] = useRecoilState<boolean>(store.rememberDefaultFork);\n\n  const forkOptions = [\n    { value: ForkOptions.DIRECT_PATH, label: localize('com_ui_fork_visible') },\n    { value: ForkOptions.INCLUDE_BRANCHES, label: localize('com_ui_fork_branches') },\n    { value: ForkOptions.TARGET_LEVEL, label: localize('com_ui_fork_all_target') },\n  ];\n\n  return (\n    <>\n      <div className=\"pb-3\">\n        <div className=\"flex items-center justify-between\">\n          <div> {localize('com_ui_fork_default')} </div>\n          <Switch\n            id=\"rememberDefaultFork\"\n            checked={remember}\n            onCheckedChange={setRemember}\n            className=\"ml-4\"\n            data-testid=\"rememberDefaultFork\"\n          />\n        </div>\n      </div>\n      {remember && (\n        <div className=\"pb-3\">\n          <div className=\"flex items-center justify-between\">\n            <div className=\"flex items-center space-x-2\">\n              <div>{localize('com_ui_fork_change_default')}</div>\n              <HoverCardSettings side=\"bottom\" text=\"com_nav_info_fork_change_default\" />\n            </div>\n            <Dropdown\n              value={forkSetting}\n              onChange={setForkSetting}\n              options={forkOptions}\n              sizeClasses=\"w-[200px]\"\n              testId=\"fork-setting-dropdown\"\n            />\n          </div>\n        </div>\n      )}\n      <div className=\"pb-3\">\n        <div className=\"flex items-center justify-between\">\n          <div className=\"flex items-center space-x-2\">\n            <div>{localize('com_ui_fork_split_target_setting')}</div>\n            <HoverCardSettings side=\"bottom\" text=\"com_nav_info_fork_split_target_setting\" />\n          </div>\n          <Switch\n            id=\"splitAtTarget\"\n            checked={splitAtTarget}\n            onCheckedChange={setSplitAtTarget}\n            className=\"ml-4\"\n            data-testid=\"splitAtTarget\"\n          />\n        </div>\n      </div>\n    </>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/LaTeXParsing.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function LaTeXParsingSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [LaTeXParsing, setLaTeXParsing] = useRecoilState<boolean>(store.LaTeXParsing);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setLaTeXParsing(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div>{localize('com_nav_latex_parsing')}</div>\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_info_latex_parsing\" />\n      </div>\n      <Switch\n        id=\"LaTeXParsing\"\n        checked={LaTeXParsing}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"LaTeXParsing\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/MaximizeChatSpace.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui/Switch';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nexport default function MaximizeChatSpace({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [maximizeChatSpace, setmaximizeChatSpace] = useRecoilState<boolean>(\n    store.maximizeChatSpace,\n  );\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setmaximizeChatSpace(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div>{localize('com_nav_maximize_chat_space')}</div>\n      </div>\n      <Switch\n        id=\"maximizeChatSpace\"\n        checked={maximizeChatSpace}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"maximizeChatSpace\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ModularChat.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function ModularChatSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [modularChat, setModularChat] = useRecoilState<boolean>(store.modularChat);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setModularChat(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div> {localize('com_nav_modular_chat')} </div>\n      <Switch\n        id=\"modularChat\"\n        checked={modularChat}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"modularChat\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/SaveDraft.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { Switch } from '~/components/ui';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nexport default function SaveDraft({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [saveDrafts, setSaveDrafts] = useRecoilState<boolean>(store.saveDrafts);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setSaveDrafts(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div>{localize('com_nav_save_drafts')}</div>\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_info_save_draft\" />\n      </div>\n      <Switch\n        id=\"saveDrafts\"\n        checked={saveDrafts}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"saveDrafts\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ScrollButton.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui/Switch';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nexport default function ScrollButton({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [showScrollButton, setShowScrollButton] = useRecoilState<boolean>(store.showScrollButton);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setShowScrollButton(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div>{localize('com_nav_scroll_button')}</div>\n      </div>\n      <Switch\n        id=\"scrollButton\"\n        checked={showScrollButton}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"scrollButton\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ShowCodeSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function ShowCodeSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [showCode, setShowCode] = useRecoilState<boolean>(store.showCode);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setShowCode(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div> {localize('com_nav_show_code')} </div>\n      <Switch\n        id=\"showCode\"\n        checked={showCode}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"showCode\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Chat/ShowThinking.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport HoverCardSettings from '../HoverCardSettings';\nimport { Switch } from '~/components/ui';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nexport default function SaveDraft({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [showThinking, setSaveDrafts] = useRecoilState<boolean>(store.showThinking);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setSaveDrafts(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center space-x-2\">\n        <div>{localize('com_nav_show_thinking')}</div>\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_info_show_thinking\" />\n      </div>\n      <Switch\n        id=\"showThinking\"\n        checked={showThinking}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"showThinking\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Commands/AtCommandSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function AtCommandSwitch() {\n  const [atCommand, setAtCommand] = useRecoilState<boolean>(store.atCommand);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setAtCommand(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_at_command_description')}</div>\n      <Switch\n        id=\"atCommand\"\n        checked={atCommand}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"atCommand\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Commands/Commands.tsx",
    "content": "import { memo } from 'react';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport HoverCardSettings from '~/components/Nav/SettingsTabs/HoverCardSettings';\nimport { useLocalize, useHasAccess } from '~/hooks';\nimport SlashCommandSwitch from './SlashCommandSwitch';\nimport PlusCommandSwitch from './PlusCommandSwitch';\nimport AtCommandSwitch from './AtCommandSwitch';\n\nfunction Commands() {\n  const localize = useLocalize();\n\n  const hasAccessToPrompts = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.USE,\n  });\n\n  const hasAccessToMultiConvo = useHasAccess({\n    permissionType: PermissionTypes.MULTI_CONVO,\n    permission: Permissions.USE,\n  });\n\n  return (\n    <div className=\"space-y-4 p-1\">\n      <div className=\"flex items-center gap-2\">\n        <h3 className=\"text-lg font-medium text-text-primary\">\n          {localize('com_nav_chat_commands')}\n        </h3>\n        <HoverCardSettings side=\"bottom\" text=\"com_nav_chat_commands_info\" />\n      </div>\n      <div className=\"flex flex-col gap-3 text-sm text-text-primary\">\n        <div className=\"pb-3\">\n          <AtCommandSwitch />\n        </div>\n        {hasAccessToMultiConvo === true && (\n          <div className=\"pb-3\">\n            <PlusCommandSwitch />\n          </div>\n        )}\n        {hasAccessToPrompts === true && (\n          <div className=\"pb-3\">\n            <SlashCommandSwitch />\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n\nexport default memo(Commands);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Commands/PlusCommandSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function PlusCommandSwitch() {\n  const [plusCommand, setPlusCommand] = useRecoilState<boolean>(store.plusCommand);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setPlusCommand(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_plus_command_description')}</div>\n      <Switch\n        id=\"plusCommand\"\n        checked={plusCommand}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"plusCommand\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Commands/SlashCommandSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function SlashCommandSwitch() {\n  const [slashCommand, setSlashCommand] = useRecoilState<boolean>(store.slashCommand);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setSlashCommand(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_slash_command_description')}</div>\n      <Switch\n        id=\"slashCommand\"\n        checked={slashCommand}\n        onCheckedChange={handleCheckedChange}\n        data-testid=\"slashCommand\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/DangerButton.tsx",
    "content": "import { forwardRef } from 'react';\nimport type { ForwardedRef } from 'react';\nimport { CheckIcon } from 'lucide-react';\nimport { DialogButton } from '~/components/ui';\nimport { Spinner } from '~/components/svg';\nimport type { TDangerButtonProps } from '~/common';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport HoverCardSettings from './HoverCardSettings';\n\nconst DangerButton = (props: TDangerButtonProps, ref: ForwardedRef<HTMLButtonElement>) => {\n  const {\n    id,\n    onClick,\n    mutation,\n    disabled,\n    confirmClear,\n    infoTextCode,\n    actionTextCode,\n    className = '',\n    showText = true,\n    dataTestIdInitial,\n    dataTestIdConfirm,\n    infoDescriptionCode,\n    confirmActionTextCode = 'com_ui_confirm_action',\n  } = props;\n  const localize = useLocalize();\n\n  const renderMutation = (node: React.ReactNode | string) => {\n    if (mutation && mutation.isLoading) {\n      return <Spinner className=\"h-5 w-5\" />;\n    }\n    return node;\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      {showText && (\n        <div className={`flex items-center ${infoDescriptionCode ? 'space-x-2' : ''}`}>\n          <div>{localize(infoTextCode)}</div>\n          {infoDescriptionCode && <HoverCardSettings side=\"bottom\" text={infoDescriptionCode} />}\n        </div>\n      )}\n      <DialogButton\n        id={id}\n        ref={ref}\n        disabled={disabled}\n        onClick={onClick}\n        className={cn(\n          'btn relative border-none bg-red-500 text-white hover:bg-red-700 dark:hover:bg-red-700',\n          className,\n        )}\n      >\n        {confirmClear ? (\n          <div\n            className=\"flex w-full items-center justify-center gap-2\"\n            id={`${id}-text`}\n            data-testid={dataTestIdConfirm}\n          >\n            {renderMutation(<CheckIcon className=\"h-5 w-5\" />)}\n            {mutation && mutation.isLoading ? null : localize(confirmActionTextCode)}\n          </div>\n        ) : (\n          <div\n            className=\"flex w-full items-center justify-center gap-2\"\n            id={`${id}-text`}\n            data-testid={dataTestIdInitial}\n          >\n            {renderMutation(localize(actionTextCode))}\n          </div>\n        )}\n      </DialogButton>\n    </div>\n  );\n};\n\nexport default forwardRef(DangerButton);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/ClearChats.tsx",
    "content": "import React, { useState } from 'react';\nimport { useClearConversationsMutation } from '~/data-provider/data-provider/src/react-query';\nimport { Label, Button, OGDialog, OGDialogTrigger, Spinner } from '~/components';\nimport { useLocalize, useNewConvo } from '~/hooks';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\n\nexport const ClearChats = () => {\n  const localize = useLocalize();\n  const [open, setOpen] = useState(false);\n  const { newConversation } = useNewConvo();\n  const clearConvosMutation = useClearConversationsMutation();\n\n  const clearConvos = () => {\n    clearConvosMutation.mutate(\n      {},\n      {\n        onSuccess: () => {\n          newConversation();\n        },\n      },\n    );\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <Label className=\"font-light\">{localize('com_nav_clear_all_chats')}</Label>\n      <OGDialog open={open} onOpenChange={setOpen}>\n        <OGDialogTrigger asChild>\n          <Button\n            variant=\"destructive\"\n            className=\"flex items-center justify-center rounded-lg transition-colors duration-200\"\n            onClick={() => setOpen(true)}\n          >\n            {localize('com_ui_delete')}\n          </Button>\n        </OGDialogTrigger>\n        <OGDialogTemplate\n          showCloseButton={false}\n          title={localize('com_nav_confirm_clear')}\n          className=\"max-w-[450px]\"\n          main={\n            <Label className=\"text-left text-sm font-medium\">\n              {localize('com_nav_clear_conversation_confirm_message')}\n            </Label>\n          }\n          selection={{\n            selectHandler: clearConvos,\n            selectClasses:\n              'bg-destructive text-white transition-all duration-200 hover:bg-destructive/80',\n            selectText: clearConvosMutation.isLoading ? <Spinner /> : localize('com_ui_delete'),\n          }}\n        />\n      </OGDialog>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/Data.tsx",
    "content": "import React, { useState, useRef } from 'react';\nimport ImportConversations from './ImportConversations';\nimport { RevokeAllKeys } from './RevokeAllKeys';\nimport { DeleteCache } from './DeleteCache';\nimport { useOnClickOutside } from '~/hooks';\nimport { ClearChats } from './ClearChats';\nimport SharedLinks from './SharedLinks';\n\nfunction Data() {\n  const dataTabRef = useRef(null);\n  const [confirmClearConvos, setConfirmClearConvos] = useState(false);\n  useOnClickOutside(dataTabRef, () => confirmClearConvos && setConfirmClearConvos(false), []);\n\n  return (\n    <div className=\"flex flex-col gap-3 p-1 text-sm text-text-primary\">\n      <div className=\"pb-3\">\n        <ImportConversations />\n      </div>\n      <div className=\"pb-3\">\n        <SharedLinks />\n      </div>\n      <div className=\"pb-3\">\n        <RevokeAllKeys />\n      </div>\n      <div className=\"pb-3\">\n        <DeleteCache />\n      </div>\n      <div className=\"pb-3\">\n        <ClearChats />\n      </div>\n    </div>\n  );\n}\n\nexport default React.memo(Data);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/DeleteCache.tsx",
    "content": "import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { Label, Button, OGDialog, OGDialogTrigger, Spinner } from '~/components';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useOnClickOutside, useLocalize } from '~/hooks';\n\nexport const DeleteCache = ({ disabled = false }: { disabled?: boolean }) => {\n  const localize = useLocalize();\n  const [open, setOpen] = useState(false);\n  const [isCacheEmpty, setIsCacheEmpty] = useState(true);\n  const [confirmClear, setConfirmClear] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const contentRef = useRef(null);\n  useOnClickOutside(contentRef, () => confirmClear && setConfirmClear(false), []);\n\n  const checkCache = useCallback(async () => {\n    const cache = await caches.open('tts-responses');\n    const keys = await cache.keys();\n    setIsCacheEmpty(keys.length === 0);\n  }, []);\n\n  useEffect(() => {\n    checkCache();\n  }, [checkCache]);\n\n  const revokeAllUserKeys = useCallback(async () => {\n    setIsLoading(true);\n    const cache = await caches.open('tts-responses');\n    await cache.keys().then((keys) => Promise.all(keys.map((key) => cache.delete(key))));\n    setIsLoading(false);\n  }, []);\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <Label className=\"font-light\">{localize('com_nav_delete_cache_storage')}</Label>\n      <OGDialog open={open} onOpenChange={setOpen}>\n        <OGDialogTrigger asChild>\n          <Button\n            variant=\"destructive\"\n            className=\"flex items-center justify-center rounded-lg transition-colors duration-200\"\n            onClick={() => setOpen(true)}\n            disabled={disabled || isCacheEmpty}\n          >\n            {localize('com_ui_delete')}\n          </Button>\n        </OGDialogTrigger>\n        <OGDialogTemplate\n          showCloseButton={false}\n          title={localize('com_nav_confirm_clear')}\n          className=\"max-w-[450px]\"\n          main={\n            <Label className=\"text-left text-sm font-medium\">\n              {localize('com_nav_clear_cache_confirm_message')}\n            </Label>\n          }\n          selection={{\n            selectHandler: revokeAllUserKeys,\n            selectClasses:\n              'bg-destructive text-white transition-all duration-200 hover:bg-destructive/80',\n            selectText: isLoading ? <Spinner /> : localize('com_ui_delete'),\n          }}\n        />\n      </OGDialog>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/ImportConversations.tsx",
    "content": "import { useState, useRef } from 'react';\nimport { Import } from 'lucide-react';\nimport type { TError } from '~/data-provider/data-provider/src';\nimport { useUploadConversationsMutation } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { Spinner } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nfunction ImportConversations() {\n  const localize = useLocalize();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n\n  const { showToast } = useToastContext();\n  const [, setErrors] = useState<string[]>([]);\n  const [allowImport, setAllowImport] = useState(true);\n  const setError = (error: string) => setErrors((prevErrors) => [...prevErrors, error]);\n\n  const uploadFile = useUploadConversationsMutation({\n    onSuccess: () => {\n      showToast({ message: localize('com_ui_import_conversation_success') });\n      setAllowImport(true);\n    },\n    onError: (error) => {\n      console.error('Error: ', error);\n      setAllowImport(true);\n      setError(\n        (error as TError).response?.data?.message ?? 'An error occurred while uploading the file.',\n      );\n      if (error?.toString().includes('Unsupported import type') === true) {\n        showToast({\n          message: localize('com_ui_import_conversation_file_type_error'),\n          status: 'error',\n        });\n      } else {\n        showToast({ message: localize('com_ui_import_conversation_error'), status: 'error' });\n      }\n    },\n    onMutate: () => {\n      setAllowImport(false);\n    },\n  });\n\n  const startUpload = async (file: File) => {\n    const formData = new FormData();\n    formData.append('file', file, encodeURIComponent(file.name || 'File'));\n\n    uploadFile.mutate(formData);\n  };\n\n  const handleFiles = async (_file: File) => {\n    try {\n      await startUpload(_file);\n    } catch (error) {\n      console.log('file handling error', error);\n      setError('An error occurred while processing the file.');\n    }\n  };\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const file = event.target.files?.[0];\n    if (file) {\n      handleFiles(file);\n    }\n  };\n\n  const handleImportClick = () => {\n    fileInputRef.current?.click();\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      handleImportClick();\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_ui_import_conversation_info')}</div>\n      <button\n        onClick={handleImportClick}\n        onKeyDown={handleKeyDown}\n        disabled={!allowImport}\n        aria-label={localize('com_ui_import')}\n        className=\"btn btn-neutral relative\"\n      >\n        {allowImport ? (\n          <Import className=\"mr-1 flex h-4 w-4 items-center stroke-1\" />\n        ) : (\n          <Spinner className=\"mr-1 w-4\" />\n        )}\n        <span>{localize('com_ui_import')}</span>\n      </button>\n      <input\n        ref={fileInputRef}\n        type=\"file\"\n        className={cn('hidden')}\n        accept=\".json\"\n        onChange={handleFileChange}\n        aria-hidden=\"true\"\n      />\n    </div>\n  );\n}\n\nexport default ImportConversations;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/RevokeAllKeys.tsx",
    "content": "import React from 'react';\nimport { RevokeKeysButton } from './RevokeKeysButton';\nimport { Label } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport const RevokeAllKeys = () => {\n  const localize = useLocalize();\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <Label className=\"font-light\">{localize('com_ui_revoke_info')}</Label>\n      <RevokeKeysButton all={true} />\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/RevokeKeysButton.tsx",
    "content": "import {\n  useRevokeAllUserKeysMutation,\n  useRevokeUserKeyMutation,\n} from '~/data-provider/data-provider/src/react-query';\nimport React, { useState } from 'react';\nimport { Button, Label, OGDialog, OGDialogTrigger, Spinner } from '~/components';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize } from '~/hooks';\n\nexport const RevokeKeysButton = ({\n  endpoint = '',\n  all = false,\n  disabled = false,\n  setDialogOpen,\n}: {\n  endpoint?: string;\n  all?: boolean;\n  disabled?: boolean;\n  setDialogOpen?: (open: boolean) => void;\n}) => {\n  const localize = useLocalize();\n  const [open, setOpen] = useState(false);\n  const revokeKeyMutation = useRevokeUserKeyMutation(endpoint);\n  const revokeKeysMutation = useRevokeAllUserKeysMutation();\n\n  const handleSuccess = () => {\n    if (!setDialogOpen) {\n      return;\n    }\n\n    setDialogOpen(false);\n  };\n\n  const onClick = () => {\n    if (all) {\n      revokeKeysMutation.mutate({});\n    } else {\n      revokeKeyMutation.mutate({}, { onSuccess: handleSuccess });\n    }\n  };\n\n  const dialogTitle = all\n    ? localize('com_ui_revoke_keys')\n    : localize('com_ui_revoke_key_endpoint', { 0: endpoint });\n\n  const dialogMessage = all\n    ? localize('com_ui_revoke_keys_confirm')\n    : localize('com_ui_revoke_key_confirm');\n\n  const isLoading = revokeKeyMutation.isLoading || revokeKeysMutation.isLoading;\n\n  return (\n    <OGDialog open={open} onOpenChange={setOpen}>\n      <OGDialogTrigger asChild>\n        <Button\n          variant=\"destructive\"\n          className=\"flex items-center justify-center rounded-lg transition-colors duration-200\"\n          onClick={() => setOpen(true)}\n          disabled={disabled}\n        >\n          {localize('com_ui_revoke')}\n        </Button>\n      </OGDialogTrigger>\n      <OGDialogTemplate\n        showCloseButton={false}\n        title={dialogTitle}\n        className=\"max-w-[450px]\"\n        main={<Label className=\"text-left text-sm font-medium\">{dialogMessage}</Label>}\n        selection={{\n          selectHandler: onClick,\n          selectClasses:\n            'bg-destructive text-white transition-all duration-200 hover:bg-destructive/80',\n          selectText: isLoading ? <Spinner /> : localize('com_ui_revoke'),\n        }}\n      />\n    </OGDialog>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Data/SharedLinks.tsx",
    "content": "import { useCallback, useState, useMemo, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport debounce from 'lodash/debounce';\nimport { TrashIcon, MessageSquare, ArrowUpDown } from 'lucide-react';\nimport type { SharedLinkItem, SharedLinksListParams } from '~/data-provider/data-provider/src';\nimport {\n  OGDialog,\n  OGDialogTrigger,\n  OGDialogContent,\n  OGDialogHeader,\n  OGDialogTitle,\n  Button,\n  TooltipAnchor,\n  Label,\n} from '~/components/ui';\nimport { useDeleteSharedLinkMutation, useSharedLinksQuery } from '~/data-provider';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useMediaQuery } from '~/hooks';\nimport DataTable from '~/components/ui/DataTable';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { formatDate } from '~/utils';\nimport { Spinner } from '~/components/svg';\n\nconst PAGE_SIZE = 25;\n\nconst DEFAULT_PARAMS: SharedLinksListParams = {\n  pageSize: PAGE_SIZE,\n  isPublic: true,\n  sortBy: 'createdAt',\n  sortDirection: 'desc',\n  search: '',\n};\n\nexport default function SharedLinks() {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const [queryParams, setQueryParams] = useState<SharedLinksListParams>(DEFAULT_PARAMS);\n  const [isDeleteOpen, setIsDeleteOpen] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const { data, fetchNextPage, hasNextPage, isFetchingNextPage, refetch, isLoading } =\n    useSharedLinksQuery(queryParams, {\n      enabled: isOpen,\n      staleTime: 0,\n      cacheTime: 5 * 60 * 1000,\n      refetchOnWindowFocus: false,\n      refetchOnMount: false,\n    });\n\n  const handleSort = useCallback((sortField: string, sortOrder: 'asc' | 'desc') => {\n    setQueryParams((prev) => ({\n      ...prev,\n      sortBy: sortField as 'title' | 'createdAt',\n      sortDirection: sortOrder,\n    }));\n  }, []);\n\n  const handleFilterChange = useCallback((value: string) => {\n    const encodedValue = encodeURIComponent(value.trim());\n    setQueryParams((prev) => ({\n      ...prev,\n      search: encodedValue,\n    }));\n  }, []);\n\n  const debouncedFilterChange = useMemo(\n    () => debounce(handleFilterChange, 300),\n    [handleFilterChange],\n  );\n\n  useEffect(() => {\n    return () => {\n      debouncedFilterChange.cancel();\n    };\n  }, [debouncedFilterChange]);\n\n  const allLinks = useMemo(() => {\n    if (!data?.pages) {\n      return [];\n    }\n\n    return data.pages.flatMap((page) => page.links.filter(Boolean));\n  }, [data?.pages]);\n\n  const deleteMutation = useDeleteSharedLinkMutation({\n    onSuccess: async () => {\n      setIsDeleteOpen(false);\n      setDeleteRow(null);\n      await refetch();\n    },\n    onError: (error) => {\n      console.error('Delete error:', error);\n      showToast({\n        message: localize('com_ui_share_delete_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n  });\n\n  const handleDelete = useCallback(\n    async (selectedRows: SharedLinkItem[]) => {\n      const validRows = selectedRows.filter(\n        (row) => typeof row.shareId === 'string' && row.shareId.length > 0,\n      );\n\n      if (validRows.length === 0) {\n        showToast({\n          message: localize('com_ui_no_valid_items'),\n          severity: NotificationSeverity.WARNING,\n        });\n        return;\n      }\n\n      try {\n        for (const row of validRows) {\n          await deleteMutation.mutateAsync({ shareId: row.shareId });\n        }\n\n        showToast({\n          message: localize(\n            validRows.length === 1\n              ? 'com_ui_shared_link_delete_success'\n              : 'com_ui_shared_link_bulk_delete_success',\n          ),\n          severity: NotificationSeverity.SUCCESS,\n        });\n      } catch (error) {\n        console.error('Failed to delete shared links:', error);\n        showToast({\n          message: localize('com_ui_bulk_delete_error'),\n          severity: NotificationSeverity.ERROR,\n        });\n      }\n    },\n    [deleteMutation, showToast, localize],\n  );\n\n  const handleFetchNextPage = useCallback(async () => {\n    if (hasNextPage !== true || isFetchingNextPage) {\n      return;\n    }\n    await fetchNextPage();\n  }, [fetchNextPage, hasNextPage, isFetchingNextPage]);\n\n  const [deleteRow, setDeleteRow] = useState<SharedLinkItem | null>(null);\n\n  const confirmDelete = useCallback(() => {\n    if (deleteRow) {\n      handleDelete([deleteRow]);\n    }\n    setIsDeleteOpen(false);\n  }, [deleteRow, handleDelete]);\n\n  const columns = useMemo(\n    () => [\n      {\n        accessorKey: 'title',\n        header: ({ column }) => {\n          return (\n            <Button\n              variant=\"ghost\"\n              className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n              onClick={() => handleSort('title', column.getIsSorted() === 'asc' ? 'desc' : 'asc')}\n            >\n              {localize('com_ui_name')}\n              <ArrowUpDown className=\"ml-2 h-3 w-4 sm:h-4 sm:w-4\" />\n            </Button>\n          );\n        },\n        cell: ({ row }) => {\n          const { title, shareId } = row.original;\n\n          return (\n            <div className=\"flex items-center gap-2\">\n              <Link\n                to={`/share/${shareId}`}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"block truncate text-blue-500 hover:underline\"\n                title={title}\n              >\n                {title}\n              </Link>\n            </div>\n          );\n        },\n        meta: {\n          size: '35%',\n          mobileSize: '50%',\n        },\n      },\n      {\n        accessorKey: 'createdAt',\n        header: ({ column }) => {\n          return (\n            <Button\n              variant=\"ghost\"\n              className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\"\n              onClick={() =>\n                handleSort('createdAt', column.getIsSorted() === 'asc' ? 'desc' : 'asc')\n              }\n            >\n              {localize('com_ui_date')}\n              <ArrowUpDown className=\"ml-2 h-3 w-4 sm:h-4 sm:w-4\" />\n            </Button>\n          );\n        },\n        cell: ({ row }) => formatDate(row.original.createdAt?.toString() ?? '', isSmallScreen),\n        meta: {\n          size: '10%',\n          mobileSize: '20%',\n        },\n      },\n      {\n        accessorKey: 'actions',\n        header: () => (\n          <Label className=\"px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm\">\n            {localize('com_assistants_actions')}\n          </Label>\n        ),\n        meta: {\n          size: '7%',\n          mobileSize: '25%',\n        },\n        cell: ({ row }) => (\n          <div className=\"flex items-center gap-2\">\n            <TooltipAnchor\n              description={localize('com_ui_view_source')}\n              render={\n                <Button\n                  variant=\"ghost\"\n                  className=\"h-8 w-8 p-0 hover:bg-surface-hover\"\n                  onClick={() => {\n                    window.open(`/c/${row.original.conversationId}`, '_blank');\n                  }}\n                  title={localize('com_ui_view_source')}\n                >\n                  <MessageSquare className=\"size-4\" />\n                </Button>\n              }\n            ></TooltipAnchor>\n            <TooltipAnchor\n              description={localize('com_ui_delete')}\n              render={\n                <Button\n                  variant=\"ghost\"\n                  className=\"h-8 w-8 p-0 hover:bg-surface-hover\"\n                  onClick={() => {\n                    setDeleteRow(row.original);\n                    setIsDeleteOpen(true);\n                  }}\n                  title={localize('com_ui_delete')}\n                >\n                  <TrashIcon className=\"size-4\" />\n                </Button>\n              }\n            ></TooltipAnchor>\n          </div>\n        ),\n      },\n    ],\n    [isSmallScreen, localize],\n  );\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_shared_links')}</div>\n\n      <OGDialog open={isOpen} onOpenChange={setIsOpen}>\n        <OGDialogTrigger asChild onClick={() => setIsOpen(true)}>\n          <Button variant=\"outline\">{localize('com_ui_manage')}</Button>\n        </OGDialogTrigger>\n\n        <OGDialogContent\n          title={localize('com_nav_my_files')}\n          className=\"w-11/12 max-w-5xl bg-background text-text-primary shadow-2xl\"\n        >\n          <OGDialogHeader>\n            <OGDialogTitle>{localize('com_nav_shared_links')}</OGDialogTitle>\n          </OGDialogHeader>\n          <DataTable\n            columns={columns}\n            data={allLinks}\n            onDelete={handleDelete}\n            filterColumn=\"title\"\n            hasNextPage={hasNextPage}\n            isFetchingNextPage={isFetchingNextPage}\n            fetchNextPage={handleFetchNextPage}\n            showCheckboxes={false}\n            onFilterChange={debouncedFilterChange}\n            filterValue={queryParams.search}\n          />\n        </OGDialogContent>\n      </OGDialog>\n      <OGDialog open={isDeleteOpen} onOpenChange={setIsDeleteOpen}>\n        <OGDialogTemplate\n          showCloseButton={false}\n          title={localize('com_ui_delete_shared_link')}\n          className=\"max-w-[450px]\"\n          main={\n            <>\n              <div className=\"flex w-full flex-col items-center gap-2\">\n                <div className=\"grid w-full items-center gap-2\">\n                  <Label htmlFor=\"dialog-confirm-delete\" className=\"text-left text-sm font-medium\">\n                    {localize('com_ui_delete_confirm')} <strong>{deleteRow?.title}</strong>\n                  </Label>\n                </div>\n              </div>\n            </>\n          }\n          selection={{\n            selectHandler: confirmDelete,\n            selectClasses: `bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 text-white ${\n              deleteMutation.isLoading ? 'cursor-not-allowed opacity-80' : ''\n            }`,\n            selectText: deleteMutation.isLoading ? <Spinner /> : localize('com_ui_delete'),\n          }}\n        />\n      </OGDialog>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChats.tsx",
    "content": "import { useLocalize } from '~/hooks';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { OGDialog, OGDialogTrigger, Button } from '~/components';\nimport ArchivedChatsTable from './ArchivedChatsTable';\n\nexport default function ArchivedChats() {\n  const localize = useLocalize();\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_archived_chats')}</div>\n      <OGDialog>\n        <OGDialogTrigger asChild>\n          <Button variant=\"outline\" aria-label=\"Archived chats\">\n            {localize('com_ui_manage')}\n          </Button>\n        </OGDialogTrigger>\n        <OGDialogTemplate\n          title={localize('com_nav_archived_chats')}\n          className=\"max-w-[1000px]\"\n          showCancelButton={false}\n          main={<ArchivedChatsTable />}\n        />\n      </OGDialog>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChatsTable.tsx",
    "content": "import { useState, useCallback, useMemo } from 'react';\nimport {\n  Search,\n  TrashIcon,\n  ChevronLeft,\n  ChevronRight,\n  // ChevronsLeft,\n  // ChevronsRight,\n  MessageCircle,\n  ArchiveRestore,\n} from 'lucide-react';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport {\n  Table,\n  Input,\n  Button,\n  TableRow,\n  Skeleton,\n  OGDialog,\n  Separator,\n  TableCell,\n  TableBody,\n  TableHead,\n  TableHeader,\n  TooltipAnchor,\n  OGDialogTrigger,\n} from '~/components';\nimport { useConversationsInfiniteQuery, useArchiveConvoMutation } from '~/data-provider';\nimport { DeleteConversationDialog } from '~/components/Conversations/ConvoOptions';\nimport { useAuthContext, useLocalize, useMediaQuery } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function ArchivedChatsTable() {\n  const localize = useLocalize();\n  const { isAuthenticated } = useAuthContext();\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const [isOpened, setIsOpened] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [searchQuery, setSearchQuery] = useState('');\n\n  const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage, refetch } =\n    useConversationsInfiniteQuery(\n      { pageNumber: currentPage.toString(), isArchived: true },\n      { enabled: isAuthenticated && isOpened },\n    );\n  const mutation = useArchiveConvoMutation();\n  const handleUnarchive = useCallback(\n    (conversationId: string) => {\n      mutation.mutate({ conversationId, isArchived: false });\n    },\n    [mutation],\n  );\n\n  const conversations = useMemo(\n    () => data?.pages[currentPage - 1]?.conversations ?? [],\n    [data, currentPage],\n  );\n  const totalPages = useMemo(() => Math.ceil(Number(data?.pages[0].pages ?? 1)) ?? 1, [data]);\n\n  const handleChatClick = useCallback((conversationId: string) => {\n    if (!conversationId) {\n      return;\n    }\n    window.open(`/c/${conversationId}`, '_blank');\n  }, []);\n\n  const handlePageChange = useCallback(\n    (newPage: number) => {\n      setCurrentPage(newPage);\n      if (!(hasNextPage ?? false)) {\n        return;\n      }\n      fetchNextPage({ pageParam: newPage });\n    },\n    [fetchNextPage, hasNextPage],\n  );\n\n  const handleSearch = useCallback((query: string) => {\n    setSearchQuery(query);\n    setCurrentPage(1);\n  }, []);\n\n  const getRandomWidth = () => Math.floor(Math.random() * (400 - 170 + 1)) + 170;\n\n  const skeletons = Array.from({ length: 11 }, (_, index) => {\n    const randomWidth = getRandomWidth();\n    return (\n      <div key={index} className=\"flex h-10 w-full items-center\">\n        <div className=\"flex w-[410px] items-center\">\n          <Skeleton className=\"h-4\" style={{ width: `${randomWidth}px` }} />\n        </div>\n        <div className=\"flex flex-grow justify-center\">\n          <Skeleton className=\"h-4 w-28\" />\n        </div>\n        <div className=\"mr-2 flex justify-end\">\n          <Skeleton className=\"h-4 w-12\" />\n        </div>\n      </div>\n    );\n  });\n\n  if (isLoading || isFetchingNextPage) {\n    return <div className=\"text-text-secondary\">{skeletons}</div>;\n  }\n\n  if (!data || (conversations.length === 0 && totalPages === 0)) {\n    return <div className=\"text-text-secondary\">{localize('com_nav_archived_chats_empty')}</div>;\n  }\n\n  return (\n    <div\n      className={cn(\n        'grid w-full gap-2',\n        'flex-1 flex-col overflow-y-auto pr-2 transition-opacity duration-500',\n        'max-h-[629px]',\n      )}\n      onMouseEnter={() => setIsOpened(true)}\n    >\n      <div className=\"flex items-center\">\n        <Search className=\"size-4 text-text-secondary\" />\n        <Input\n          type=\"text\"\n          placeholder={localize('com_nav_search_placeholder')}\n          value={searchQuery}\n          onChange={(e) => handleSearch(e.target.value)}\n          className=\"w-full border-none placeholder:text-text-secondary\"\n        />\n      </div>\n      <Separator />\n      {conversations.length === 0 ? (\n        <div className=\"mt-4 text-text-secondary\">{localize('com_nav_no_search_results')}</div>\n      ) : (\n        <>\n          <Table>\n            <TableHeader>\n              <TableRow>\n                <TableHead className={cn('p-4', isSmallScreen ? 'w-[70%]' : 'w-[50%]')}>\n                  {localize('com_nav_archive_name')}\n                </TableHead>\n                {!isSmallScreen && (\n                  <TableHead className=\"w-[35%] p-1\">\n                    {localize('com_nav_archive_created_at')}\n                  </TableHead>\n                )}\n                <TableHead className={cn('p-1 text-right', isSmallScreen ? 'w-[30%]' : 'w-[15%]')}>\n                  {localize('com_assistants_actions')}\n                </TableHead>\n              </TableRow>\n            </TableHeader>\n            <TableBody>\n              {conversations.map((conversation: TConversation) => (\n                <TableRow key={conversation.conversationId} className=\"hover:bg-transparent\">\n                  <TableCell className=\"py-3 text-text-primary\">\n                    <button\n                      type=\"button\"\n                      className=\"flex max-w-full\"\n                      aria-label=\"Open conversation in a new tab\"\n                      onClick={() => {\n                        const conversationId = conversation.conversationId ?? '';\n                        if (!conversationId) {\n                          return;\n                        }\n                        handleChatClick(conversationId);\n                      }}\n                    >\n                      <MessageCircle className=\"mr-1 h-5 min-w-[20px]\" />\n                      <u className=\"truncate\">{conversation.title}</u>\n                    </button>\n                  </TableCell>\n                  {!isSmallScreen && (\n                    <TableCell className=\"p-1\">\n                      <div className=\"flex justify-between\">\n                        <div className=\"flex justify-start text-text-secondary\">\n                          {new Date(conversation.createdAt).toLocaleDateString('en-US', {\n                            month: 'short',\n                            day: 'numeric',\n                            year: 'numeric',\n                          })}\n                        </div>\n                      </div>\n                    </TableCell>\n                  )}\n                  <TableCell\n                    className={cn(\n                      'flex items-center gap-1 p-1',\n                      isSmallScreen ? 'justify-end' : 'justify-end gap-2',\n                    )}\n                  >\n                    <TooltipAnchor\n                      description={localize('com_ui_unarchive')}\n                      render={\n                        <Button\n                          type=\"button\"\n                          aria-label=\"Unarchive conversation\"\n                          variant=\"ghost\"\n                          size=\"icon\"\n                          className={cn('size-8', isSmallScreen && 'size-7')}\n                          onClick={() => {\n                            const conversationId = conversation.conversationId ?? '';\n                            if (!conversationId) {\n                              return;\n                            }\n                            handleUnarchive(conversationId);\n                          }}\n                        >\n                          <ArchiveRestore className={cn('size-4', isSmallScreen && 'size-3.5')} />\n                        </Button>\n                      }\n                    />\n\n                    <OGDialog>\n                      <OGDialogTrigger asChild>\n                        <TooltipAnchor\n                          description={localize('com_ui_delete')}\n                          render={\n                            <Button\n                              type=\"button\"\n                              aria-label=\"Delete archived conversation\"\n                              variant=\"ghost\"\n                              size=\"icon\"\n                              className={cn('size-8', isSmallScreen && 'size-7')}\n                            >\n                              <TrashIcon className={cn('size-4', isSmallScreen && 'size-3.5')} />\n                            </Button>\n                          }\n                        />\n                      </OGDialogTrigger>\n                      <DeleteConversationDialog\n                        conversationId={conversation.conversationId ?? ''}\n                        retainView={refetch}\n                        title={conversation.title ?? ''}\n                      />\n                    </OGDialog>\n                  </TableCell>\n                </TableRow>\n              ))}\n            </TableBody>\n          </Table>\n\n          <div className=\"flex items-center justify-end gap-6 px-2 py-4\">\n            <div className=\"text-sm font-bold text-text-primary\">\n              {localize('com_ui_page')} {currentPage} {localize('com_ui_of')} {totalPages}\n            </div>\n            <div className=\"flex space-x-2\">\n              {/* <Button\n                variant=\"outline\"\n                size=\"icon\"\n                aria-label=\"Go to the previous 10 pages\"\n                onClick={() => handlePageChange(Math.max(currentPage - 10, 1))}\n                disabled={currentPage === 1}\n              >\n                <ChevronsLeft className=\"size-4\" />\n              </Button> */}\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                aria-label=\"Go to the previous page\"\n                onClick={() => handlePageChange(Math.max(currentPage - 1, 1))}\n                disabled={currentPage === 1}\n              >\n                <ChevronLeft className=\"size-4\" />\n              </Button>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                aria-label=\"Go to the next page\"\n                onClick={() => handlePageChange(Math.min(currentPage + 1, totalPages))}\n                disabled={currentPage === totalPages}\n              >\n                <ChevronRight className=\"size-4\" />\n              </Button>\n              {/* <Button\n                variant=\"outline\"\n                size=\"icon\"\n                aria-label=\"Go to the next 10 pages\"\n                onClick={() => handlePageChange(Math.min(currentPage + 10, totalPages))}\n                disabled={currentPage === totalPages}\n              >\n                <ChevronsRight className=\"size-4\" />\n              </Button> */}\n            </div>\n          </div>\n        </>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/AutoScrollSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport AutoScrollSwitch from './AutoScrollSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('AutoScrollSwitch', () => {\n  /**\n   * Mock function to set the auto-scroll state.\n   */\n  let mockSetAutoScroll: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetAutoScroll = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutoScrollSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('autoScroll')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutoScrollSwitch onCheckedChange={mockSetAutoScroll} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('autoScroll');\n    fireEvent.click(switchElement);\n\n    expect(mockSetAutoScroll).toHaveBeenCalledWith(true);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/AutoScrollSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function AutoScrollSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [autoScroll, setAutoScroll] = useRecoilState<boolean>(store.autoScroll);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setAutoScroll(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div> {localize('com_nav_auto_scroll')} </div>\n      <Switch\n        id=\"autoScroll\"\n        checked={autoScroll}\n        aria-label=\"Auto-Scroll to latest message on chat open\"\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"autoScroll\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/General.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport Cookies from 'js-cookie';\nimport React, { useContext, useCallback } from 'react';\nimport UserMsgMarkdownSwitch from './UserMsgMarkdownSwitch';\nimport HideSidePanelSwitch from './HideSidePanelSwitch';\nimport { ThemeContext, useLocalize } from '~/hooks';\nimport AutoScrollSwitch from './AutoScrollSwitch';\nimport ArchivedChats from './ArchivedChats';\nimport { Dropdown } from '~/components/ui';\nimport store from '~/store';\n\nexport const ThemeSelector = ({\n  theme,\n  onChange,\n}: {\n  theme: string;\n  onChange: (value: string) => void;\n}) => {\n  const localize = useLocalize();\n\n  const themeOptions = [\n    { value: 'system', label: localize('com_nav_theme_system') },\n    { value: 'dark', label: localize('com_nav_theme_dark') },\n    { value: 'light', label: localize('com_nav_theme_light') },\n  ];\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_theme')}</div>\n\n      <Dropdown\n        value={theme}\n        onChange={onChange}\n        options={themeOptions}\n        sizeClasses=\"w-[180px]\"\n        testId=\"theme-selector\"\n      />\n    </div>\n  );\n};\n\nexport const LangSelector = ({\n  langcode,\n  onChange,\n}: {\n  langcode: string;\n  onChange: (value: string) => void;\n}) => {\n  const localize = useLocalize();\n\n  const languageOptions = [\n    { value: 'auto', label: localize('com_nav_lang_auto') },\n    { value: 'en-US', label: localize('com_nav_lang_english') },\n    { value: 'zh-Hans', label: localize('com_nav_lang_chinese') },\n    { value: 'zh-Hant', label: localize('com_nav_lang_traditional_chinese') },\n    { value: 'ar-EG', label: localize('com_nav_lang_arabic') },\n    { value: 'de-DE', label: localize('com_nav_lang_german') },\n    { value: 'es-ES', label: localize('com_nav_lang_spanish') },\n    { value: 'et-EE', label: localize('com_nav_lang_estonian') },\n    { value: 'fr-FR', label: localize('com_nav_lang_french') },\n    { value: 'it-IT', label: localize('com_nav_lang_italian') },\n    { value: 'pl-PL', label: localize('com_nav_lang_polish') },\n    { value: 'pt-BR', label: localize('com_nav_lang_brazilian_portuguese') },\n    { value: 'pt-PT', label: localize('com_nav_lang_portuguese') },\n    { value: 'ru-RU', label: localize('com_nav_lang_russian') },\n    { value: 'ja-JP', label: localize('com_nav_lang_japanese') },\n    { value: 'ka-GE', label: localize('com_nav_lang_georgian') },\n    { value: 'sv-SE', label: localize('com_nav_lang_swedish') },\n    { value: 'ko-KR', label: localize('com_nav_lang_korean') },\n    { value: 'vi-VN', label: localize('com_nav_lang_vietnamese') },\n    { value: 'tr-TR', label: localize('com_nav_lang_turkish') },\n    { value: 'nl-NL', label: localize('com_nav_lang_dutch') },\n    { value: 'id-ID', label: localize('com_nav_lang_indonesia') },\n    { value: 'he-HE', label: localize('com_nav_lang_hebrew') },\n    { value: 'fi-FI', label: localize('com_nav_lang_finnish') },\n  ];\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_language')}</div>\n\n      <Dropdown\n        value={langcode}\n        onChange={onChange}\n        sizeClasses=\"[--anchor-max-height:256px]\"\n        options={languageOptions}\n      />\n    </div>\n  );\n};\n\nfunction General() {\n  const { theme, setTheme } = useContext(ThemeContext);\n\n  const [langcode, setLangcode] = useRecoilState(store.lang);\n\n  const changeTheme = useCallback(\n    (value: string) => {\n      setTheme(value);\n    },\n    [setTheme],\n  );\n\n  const changeLang = useCallback(\n    (value: string) => {\n      let userLang = value;\n      if (value === 'auto') {\n        userLang = navigator.language || navigator.languages[0];\n      }\n\n      requestAnimationFrame(() => {\n        document.documentElement.lang = userLang;\n      });\n      setLangcode(userLang);\n      Cookies.set('lang', userLang, { expires: 365 });\n    },\n    [setLangcode],\n  );\n\n  return (\n    <div className=\"flex flex-col gap-3 p-1 text-sm text-text-primary\">\n      <div className=\"pb-3\">\n        <ThemeSelector theme={theme} onChange={changeTheme} />\n      </div>\n      <div className=\"pb-3\">\n        <LangSelector langcode={langcode} onChange={changeLang} />\n      </div>\n      <div className=\"pb-3\">\n        <UserMsgMarkdownSwitch />\n      </div>\n      <div className=\"pb-3\">\n        <AutoScrollSwitch />\n      </div>\n      <div className=\"pb-3\">\n        <HideSidePanelSwitch />\n      </div>\n      <div className=\"pb-3\">\n        <ArchivedChats />\n      </div>\n    </div>\n  );\n}\n\nexport default React.memo(General);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/HideSidePanelSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function HideSidePanelSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const [hideSidePanel, setHideSidePanel] = useRecoilState<boolean>(store.hideSidePanel);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setHideSidePanel(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_hide_panel')}</div>\n\n      <Switch\n        id=\"hideSidePanel\"\n        checked={hideSidePanel}\n        aria-label=\"Hide right-most side panel\"\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"hideSidePanel\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/LangSelector.spec.tsx",
    "content": "import 'test/matchMedia.mock';\nimport React from 'react';\nimport { render, fireEvent, waitFor } from '@testing-library/react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { LangSelector } from './General';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('LangSelector', () => {\n  let mockOnChange;\n\n  beforeEach(() => {\n    mockOnChange = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    global.ResizeObserver = class MockedResizeObserver {\n      observe = jest.fn();\n      unobserve = jest.fn();\n      disconnect = jest.fn();\n    };\n    const { getByText, getByRole } = render(\n      <RecoilRoot>\n        <LangSelector langcode=\"en-US\" onChange={mockOnChange} />\n      </RecoilRoot>,\n    );\n\n    expect(getByText('Language')).toBeInTheDocument();\n    const dropdownButton = getByRole('combobox');\n    expect(dropdownButton).toHaveTextContent('English');\n  });\n\n  it('calls onChange when the select value changes', async () => {\n    global.ResizeObserver = class MockedResizeObserver {\n      observe = jest.fn();\n      unobserve = jest.fn();\n      disconnect = jest.fn();\n    };\n    const { getByRole, getByTestId } = render(\n      <RecoilRoot>\n        <LangSelector langcode=\"en-US\" onChange={mockOnChange} />\n      </RecoilRoot>,\n    );\n\n    expect(getByRole('combobox')).toHaveTextContent('English');\n\n    const dropdownButton = getByTestId('dropdown-menu');\n\n    fireEvent.click(dropdownButton);\n\n    const italianOption = getByRole('option', { name: 'Italiano' });\n    fireEvent.click(italianOption);\n\n    await waitFor(() => {\n      expect(mockOnChange).toHaveBeenCalledWith('it-IT');\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/ThemeSelector.spec.tsx",
    "content": "// ThemeSelector.spec.tsx\nimport 'test/matchMedia.mock';\n\nimport React from 'react';\nimport { render, fireEvent, waitFor } from '@testing-library/react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { ThemeSelector } from './General';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('ThemeSelector', () => {\n  let mockOnChange;\n\n  beforeEach(() => {\n    mockOnChange = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    global.ResizeObserver = class MockedResizeObserver {\n      observe = jest.fn();\n      unobserve = jest.fn();\n      disconnect = jest.fn();\n    };\n    const { getByText, getByRole } = render(\n      <RecoilRoot>\n        <ThemeSelector theme=\"system\" onChange={mockOnChange} />\n      </RecoilRoot>,\n    );\n\n    expect(getByText('Theme')).toBeInTheDocument();\n    const dropdownButton = getByRole('combobox');\n    expect(dropdownButton).toHaveTextContent('System');\n  });\n\n  it('calls onChange when the select value changes', async () => {\n    global.ResizeObserver = class MockedResizeObserver {\n      observe = jest.fn();\n      unobserve = jest.fn();\n      disconnect = jest.fn();\n    };\n    const { getByText, getByTestId } = render(\n      <RecoilRoot>\n        <ThemeSelector theme=\"system\" onChange={mockOnChange} />\n      </RecoilRoot>,\n    );\n\n    expect(getByText('Theme')).toBeInTheDocument();\n\n    const dropdownButton = getByTestId('theme-selector');\n\n    fireEvent.click(dropdownButton);\n\n    const darkOption = getByText('Dark');\n    fireEvent.click(darkOption);\n\n    await waitFor(() => {\n      expect(mockOnChange).toHaveBeenCalledWith('dark');\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/General/UserMsgMarkdownSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function UserMsgMarkdownSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [enableUserMsgMarkdown, setEnableUserMsgMarkdown] = useRecoilState<boolean>(\n    store.enableUserMsgMarkdown,\n  );\n\n  const handleCheckedChange = (value: boolean) => {\n    setEnableUserMsgMarkdown(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div> {localize('com_nav_user_msg_markdown')} </div>\n      <Switch\n        id=\"enableUserMsgMarkdown\"\n        checked={enableUserMsgMarkdown}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"enableUserMsgMarkdown\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/HoverCardSettings.tsx",
    "content": "import React from 'react';\nimport { HoverCard, HoverCardTrigger, HoverCardPortal, HoverCardContent } from '~/components/ui';\nimport { CircleHelpIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\n\nconst HoverCardSettings = ({ side, text }) => {\n  const localize = useLocalize();\n\n  return (\n    <HoverCard openDelay={500}>\n      <HoverCardTrigger>\n        <CircleHelpIcon className=\"h-5 w-5 text-text-tertiary\" />{' '}\n      </HoverCardTrigger>\n      <HoverCardPortal>\n        <HoverCardContent side={side} className=\"z-[999] w-80\">\n          <div className=\"space-y-2\">\n            <p className=\"text-sm text-text-secondary\">{localize(text)}</p>\n          </div>\n        </HoverCardContent>\n      </HoverCardPortal>\n    </HoverCard>\n  );\n};\n\nexport default HoverCardSettings;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/ConversationModeSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport ConversationModeSwitch from './ConversationModeSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('ConversationModeSwitch', () => {\n  /**\n   * Mock function to set the auto-send-text state.\n   */\n  let mockSetConversationMode: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetConversationMode = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <ConversationModeSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('ConversationMode')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <ConversationModeSwitch onCheckedChange={mockSetConversationMode} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('ConversationMode');\n    fireEvent.click(switchElement);\n\n    expect(mockSetConversationMode).toHaveBeenCalledWith(true);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/ConversationModeSwitch.tsx",
    "content": "import { useRecoilState, useRecoilValue } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function ConversationModeSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [conversationMode, setConversationMode] = useRecoilState<boolean>(store.conversationMode);\n  const speechToText = useRecoilValue(store.speechToText);\n  const textToSpeech = useRecoilValue(store.textToSpeech);\n  const [, setAutoSendText] = useRecoilState(store.autoSendText);\n  const [, setDecibelValue] = useRecoilState(store.decibelValue);\n  const [, setAutoTranscribeAudio] = useRecoilState<boolean>(store.autoTranscribeAudio);\n\n  const handleCheckedChange = (value: boolean) => {\n    setAutoTranscribeAudio(value);\n    setAutoSendText(3);\n    setDecibelValue(-45);\n    setConversationMode(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>\n        <strong>{localize('com_nav_conversation_mode')}</strong>\n      </div>\n      <div className=\"flex items-center justify-between\">\n        <Switch\n          id=\"ConversationMode\"\n          checked={conversationMode}\n          onCheckedChange={handleCheckedChange}\n          className=\"ml-4\"\n          data-testid=\"ConversationMode\"\n          disabled={!textToSpeech || !speechToText}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/AutoSendTextSelector.tsx",
    "content": "import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { cn, defaultTextProps, optionText } from '~/utils/';\nimport { Slider, InputNumber } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function AutoSendTextSelector() {\n  const localize = useLocalize();\n\n  const speechToText = useRecoilValue(store.speechToText);\n  const [autoSendText, setAutoSendText] = useRecoilState(store.autoSendText);\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center justify-between\">\n        <div>{localize('com_nav_auto_send_text')}</div>\n        <div className=\"w-2\" />\n        <small className=\"opacity-40\">({localize('com_nav_auto_send_text_disabled')})</small>\n      </div>\n      <div className=\"flex items-center justify-between\">\n        <Slider\n          value={[autoSendText ?? -1]}\n          onValueChange={(value) => setAutoSendText(value[0])}\n          onDoubleClick={() => setAutoSendText(-1)}\n          min={-1}\n          max={60}\n          step={1}\n          className=\"ml-4 flex h-4 w-24\"\n          disabled={!speechToText}\n        />\n        <div className=\"w-2\" />\n        <InputNumber\n          value={`${autoSendText} s`}\n          disabled={!speechToText}\n          onChange={(value) => setAutoSendText(value ? value[0] : 0)}\n          min={-1}\n          max={60}\n          className={cn(\n            defaultTextProps,\n            cn(\n              optionText,\n              'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n            ),\n          )}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/AutoTranscribeAudioSwitch.tsx",
    "content": "import { useRecoilState, useRecoilValue } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function AutoTranscribeAudioSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [autoTranscribeAudio, setAutoTranscribeAudio] = useRecoilState<boolean>(\n    store.autoTranscribeAudio,\n  );\n  const speechToText = useRecoilValue(store.speechToText);\n\n  const handleCheckedChange = (value: boolean) => {\n    setAutoTranscribeAudio(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_auto_transcribe_audio')}</div>\n      <Switch\n        id=\"AutoTranscribeAudio\"\n        checked={autoTranscribeAudio}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"AutoTranscribeAudio\"\n        disabled={!speechToText}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/DecibelSelector.tsx",
    "content": "import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { Slider, InputNumber } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\nimport { cn, defaultTextProps, optionText } from '~/utils/';\n\nexport default function DecibelSelector() {\n  const localize = useLocalize();\n  const speechToText = useRecoilValue(store.speechToText);\n  const [decibelValue, setDecibelValue] = useRecoilState(store.decibelValue);\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center justify-between\">\n        <div>{localize('com_nav_db_sensitivity')}</div>\n        <div className=\"w-2\" />\n        <small className=\"opacity-40\">({localize('com_endpoint_default_with_num', { 0: '-45' })})</small>\n      </div>\n      <div className=\"flex items-center justify-between\">\n        <Slider\n          value={[decibelValue ?? -45]}\n          onValueChange={(value) => setDecibelValue(value[0])}\n          onDoubleClick={() => setDecibelValue(-45)}\n          min={-100}\n          max={-30}\n          step={1}\n          className=\"ml-4 flex h-4 w-24\"\n          disabled={!speechToText}\n        />\n        <div className=\"w-2\" />\n        <InputNumber\n          value={decibelValue}\n          disabled={!speechToText}\n          onChange={(value) => setDecibelValue(value ? value[0] : 0)}\n          min={-100}\n          max={-30}\n          className={cn(\n            defaultTextProps,\n            cn(\n              optionText,\n              'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n            ),\n          )}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/EngineSTTDropdown.tsx",
    "content": "import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport { Dropdown } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\ninterface EngineSTTDropdownProps {\n  external: boolean;\n}\n\nconst EngineSTTDropdown: React.FC<EngineSTTDropdownProps> = ({ external }) => {\n  const localize = useLocalize();\n  const [engineSTT, setEngineSTT] = useRecoilState<string>(store.engineSTT);\n\n  const endpointOptions = external\n    ? [\n      { value: 'browser', label: localize('com_nav_browser') },\n      { value: 'external', label: localize('com_nav_external') },\n    ]\n    : [{ value: 'browser', label: localize('com_nav_browser') }];\n\n  const handleSelect = (value: string) => {\n    setEngineSTT(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_engine')}</div>\n      <Dropdown\n        value={engineSTT}\n        onChange={handleSelect}\n        options={endpointOptions}\n        sizeClasses=\"w-[180px]\"\n        testId=\"EngineSTTDropdown\"\n      />\n    </div>\n  );\n};\n\nexport default EngineSTTDropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/LanguageSTTDropdown.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Dropdown } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function LanguageSTTDropdown() {\n  const localize = useLocalize();\n  const [languageSTT, setLanguageSTT] = useRecoilState<string>(store.languageSTT);\n\n  const languageOptions = [\n    { value: 'af', label: 'Afrikaans' },\n    { value: 'eu', label: 'Basque' },\n    { value: 'bg', label: 'Bulgarian' },\n    { value: 'ca', label: 'Catalan' },\n    { value: 'ar-EG', label: 'Arabic (Egypt)' },\n    { value: 'ar-JO', label: 'Arabic (Jordan)' },\n    { value: 'ar-KW', label: 'Arabic (Kuwait)' },\n    { value: 'ar-LB', label: 'Arabic (Lebanon)' },\n    { value: 'ar-QA', label: 'Arabic (Qatar)' },\n    { value: 'ar-AE', label: 'Arabic (UAE)' },\n    { value: 'ar-MA', label: 'Arabic (Morocco)' },\n    { value: 'ar-IQ', label: 'Arabic (Iraq)' },\n    { value: 'ar-DZ', label: 'Arabic (Algeria)' },\n    { value: 'ar-BH', label: 'Arabic (Bahrain)' },\n    { value: 'ar-LY', label: 'Arabic (Libya)' },\n    { value: 'ar-OM', label: 'Arabic (Oman)' },\n    { value: 'ar-SA', label: 'Arabic (Saudi Arabia)' },\n    { value: 'ar-TN', label: 'Arabic (Tunisia)' },\n    { value: 'ar-YE', label: 'Arabic (Yemen)' },\n    { value: 'cs', label: 'Czech' },\n    { value: 'nl-NL', label: 'Dutch' },\n    { value: 'en-AU', label: 'English (Australia)' },\n    { value: 'en-CA', label: 'English (Canada)' },\n    { value: 'en-IN', label: 'English (India)' },\n    { value: 'en-NZ', label: 'English (New Zealand)' },\n    { value: 'en-ZA', label: 'English (South Africa)' },\n    { value: 'en-GB', label: 'English (UK)' },\n    { value: 'en-US', label: 'English (US)' },\n    { value: 'et-EE', label: 'Estonian' },\n    { value: 'fi', label: 'Finnish' },\n    { value: 'fr-FR', label: 'French' },\n    { value: 'gl', label: 'Galician' },\n    { value: 'de-DE', label: 'German' },\n    { value: 'el-GR', label: 'Greek' },\n    { value: 'he', label: 'Hebrew' },\n    { value: 'hu', label: 'Hungarian' },\n    { value: 'is', label: 'Icelandic' },\n    { value: 'it-IT', label: 'Italian' },\n    { value: 'id', label: 'Indonesian' },\n    { value: 'ja', label: 'Japanese' },\n    { value: 'ko', label: 'Korean' },\n    { value: 'la', label: 'Latin' },\n    { value: 'lv-LV', label: 'Latvian' },\n    { value: 'lt-LT', label: 'Lithuanian' },\n    { value: 'zh-CN', label: 'Mandarin Chinese' },\n    { value: 'zh-TW', label: 'Taiwanese' },\n    { value: 'zh-HK', label: 'Cantonese' },\n    { value: 'ms-MY', label: 'Malaysian' },\n    { value: 'no-NO', label: 'Norwegian' },\n    { value: 'pl', label: 'Polish' },\n    { value: 'xx-piglatin', label: 'Pig Latin' },\n    { value: 'pt-PT', label: 'Portuguese' },\n    { value: 'pt-br', label: 'Portuguese (Brasil)' },\n    { value: 'ro-RO', label: 'Romanian' },\n    { value: 'ru', label: 'Russian' },\n    { value: 'sr-SP', label: 'Serbian' },\n    { value: 'sk', label: 'Slovak' },\n    { value: 'es-AR', label: 'Spanish (Argentina)' },\n    { value: 'es-BO', label: 'Spanish (Bolivia)' },\n    { value: 'es-CL', label: 'Spanish (Chile)' },\n    { value: 'es-CO', label: 'Spanish (Colombia)' },\n    { value: 'es-CR', label: 'Spanish (Costa Rica)' },\n    { value: 'es-DO', label: 'Spanish (Dominican Republic)' },\n    { value: 'es-EC', label: 'Spanish (Ecuador)' },\n    { value: 'es-SV', label: 'Spanish (El Salvador)' },\n    { value: 'es-GT', label: 'Spanish (Guatemala)' },\n    { value: 'es-HN', label: 'Spanish (Honduras)' },\n    { value: 'es-MX', label: 'Spanish (Mexico)' },\n    { value: 'es-NI', label: 'Spanish (Nicaragua)' },\n    { value: 'es-PA', label: 'Spanish (Panama)' },\n    { value: 'es-PY', label: 'Spanish (Paraguay)' },\n    { value: 'es-PE', label: 'Spanish (Peru)' },\n    { value: 'es-PR', label: 'Spanish (Puerto Rico)' },\n    { value: 'es-ES', label: 'Spanish (Spain)' },\n    { value: 'es-US', label: 'Spanish (US)' },\n    { value: 'es-UY', label: 'Spanish (Uruguay)' },\n    { value: 'es-VE', label: 'Spanish (Venezuela)' },\n    { value: 'sv-SE', label: 'Swedish' },\n    { value: 'tr', label: 'Turkish' },\n    { value: 'zu', label: 'Zulu' },\n  ];\n\n  const handleSelect = (value: string) => {\n    setLanguageSTT(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_language')}</div>\n      <Dropdown\n        value={languageSTT}\n        onChange={handleSelect}\n        options={languageOptions}\n        sizeClasses=\"[--anchor-max-height:256px]\"\n        anchor=\"bottom start\"\n        testId=\"LanguageSTTDropdown\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/SpeechToTextSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function SpeechToTextSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [speechToText, setSpeechToText] = useRecoilState<boolean>(store.speechToText);\n\n  const handleCheckedChange = (value: boolean) => {\n    setSpeechToText(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>\n        <strong>{localize('com_nav_speech_to_text')}</strong>\n      </div>\n      <Switch\n        id=\"SpeechToText\"\n        checked={speechToText}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"SpeechToText\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/__tests__/AutoTranscribeAudioSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport AutoTranscribeAudioSwitch from '../AutoTranscribeAudioSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('AutoTranscribeAudioSwitch', () => {\n  /**\n   * Mock function to set the auto-send-text state.\n   */\n  let mockSetAutoTranscribeAudio:\n    | jest.Mock<void, [boolean]>\n    | ((value: boolean) => void)\n    | undefined;\n\n  beforeEach(() => {\n    mockSetAutoTranscribeAudio = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutoTranscribeAudioSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('AutoTranscribeAudio')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutoTranscribeAudioSwitch onCheckedChange={mockSetAutoTranscribeAudio} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('AutoTranscribeAudio');\n    fireEvent.click(switchElement);\n\n    expect(mockSetAutoTranscribeAudio).toHaveBeenCalledWith(true);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/__tests__/SpeechToTextSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport SpeechToTextSwitch from '../SpeechToTextSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('SpeechToTextSwitch', () => {\n  /**\n   * Mock function to set the speech-to-text state.\n   */\n  let mockSetSpeechToText: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetSpeechToText = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <SpeechToTextSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('SpeechToText')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <SpeechToTextSwitch onCheckedChange={mockSetSpeechToText} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('SpeechToText');\n    fireEvent.click(switchElement);\n\n    expect(mockSetSpeechToText).toHaveBeenCalledWith(false);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/index.ts",
    "content": "export { default as AutoSendTextSelector } from './AutoSendTextSelector';\nexport { default as SpeechToTextSwitch } from './SpeechToTextSwitch';\nexport { default as EngineSTTDropdown } from './EngineSTTDropdown';\nexport { default as DecibelSelector } from './DecibelSelector';\nexport { default as AutoTranscribeAudioSwitch } from './AutoTranscribeAudioSwitch';\nexport { default as LanguageSTTDropdown } from './LanguageSTTDropdown';\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/Speech.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport * as Tabs from '@radix-ui/react-tabs';\nimport { Lightbulb, Cog } from 'lucide-react';\nimport React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { useGetCustomConfigSpeechQuery } from '~/data-provider/data-provider/src/react-query';\nimport {\n  CloudBrowserVoicesSwitch,\n  AutomaticPlaybackSwitch,\n  TextToSpeechSwitch,\n  EngineTTSDropdown,\n  CacheTTSSwitch,\n  VoiceDropdown,\n  PlaybackRate,\n} from './TTS';\nimport {\n  AutoTranscribeAudioSwitch,\n  LanguageSTTDropdown,\n  SpeechToTextSwitch,\n  AutoSendTextSelector,\n  EngineSTTDropdown,\n  DecibelSelector,\n} from './STT';\nimport ConversationModeSwitch from './ConversationModeSwitch';\nimport { useOnClickOutside, useMediaQuery } from '~/hooks';\nimport { cn, logger } from '~/utils';\nimport store from '~/store';\n\nfunction Speech() {\n  const [confirmClear, setConfirmClear] = useState(false);\n  const { data } = useGetCustomConfigSpeechQuery();\n  const isSmallScreen = useMediaQuery('(max-width: 767px)');\n\n  const [sttExternal, setSttExternal] = useState(false);\n  const [ttsExternal, setTtsExternal] = useState(false);\n  const [advancedMode, setAdvancedMode] = useRecoilState(store.advancedMode);\n  const [autoTranscribeAudio, setAutoTranscribeAudio] = useRecoilState(store.autoTranscribeAudio);\n  const [conversationMode, setConversationMode] = useRecoilState(store.conversationMode);\n  const [speechToText, setSpeechToText] = useRecoilState(store.speechToText);\n  const [textToSpeech, setTextToSpeech] = useRecoilState(store.textToSpeech);\n  const [cacheTTS, setCacheTTS] = useRecoilState(store.cacheTTS);\n  const [engineSTT, setEngineSTT] = useRecoilState<string>(store.engineSTT);\n  const [languageSTT, setLanguageSTT] = useRecoilState<string>(store.languageSTT);\n  const [decibelValue, setDecibelValue] = useRecoilState(store.decibelValue);\n  const [autoSendText, setAutoSendText] = useRecoilState(store.autoSendText);\n  const [engineTTS, setEngineTTS] = useRecoilState<string>(store.engineTTS);\n  const [voice, setVoice] = useRecoilState(store.voice);\n  const [cloudBrowserVoices, setCloudBrowserVoices] = useRecoilState<boolean>(\n    store.cloudBrowserVoices,\n  );\n  const [languageTTS, setLanguageTTS] = useRecoilState<string>(store.languageTTS);\n  const [automaticPlayback, setAutomaticPlayback] = useRecoilState(store.automaticPlayback);\n  const [playbackRate, setPlaybackRate] = useRecoilState(store.playbackRate);\n\n  const updateSetting = useCallback(\n    (key: string, newValue: string | number) => {\n      const settings = {\n        sttExternal: { value: sttExternal, setFunc: setSttExternal },\n        ttsExternal: { value: ttsExternal, setFunc: setTtsExternal },\n        conversationMode: { value: conversationMode, setFunc: setConversationMode },\n        advancedMode: { value: advancedMode, setFunc: setAdvancedMode },\n        speechToText: { value: speechToText, setFunc: setSpeechToText },\n        textToSpeech: { value: textToSpeech, setFunc: setTextToSpeech },\n        cacheTTS: { value: cacheTTS, setFunc: setCacheTTS },\n        engineSTT: { value: engineSTT, setFunc: setEngineSTT },\n        languageSTT: { value: languageSTT, setFunc: setLanguageSTT },\n        autoTranscribeAudio: { value: autoTranscribeAudio, setFunc: setAutoTranscribeAudio },\n        decibelValue: { value: decibelValue, setFunc: setDecibelValue },\n        autoSendText: { value: autoSendText, setFunc: setAutoSendText },\n        engineTTS: { value: engineTTS, setFunc: setEngineTTS },\n        voice: { value: voice, setFunc: setVoice },\n        cloudBrowserVoices: { value: cloudBrowserVoices, setFunc: setCloudBrowserVoices },\n        languageTTS: { value: languageTTS, setFunc: setLanguageTTS },\n        automaticPlayback: { value: automaticPlayback, setFunc: setAutomaticPlayback },\n        playbackRate: { value: playbackRate, setFunc: setPlaybackRate },\n      };\n\n      if (\n        (settings[key].value !== newValue || settings[key].value === newValue || !settings[key]) &&\n        settings[key].value === 'sttExternal' &&\n        settings[key].value === 'ttsExternal'\n      ) {\n        return;\n      }\n\n      const setting = settings[key];\n      setting.setFunc(newValue);\n    },\n    [\n      sttExternal,\n      ttsExternal,\n      conversationMode,\n      advancedMode,\n      speechToText,\n      textToSpeech,\n      cacheTTS,\n      engineSTT,\n      languageSTT,\n      autoTranscribeAudio,\n      decibelValue,\n      autoSendText,\n      engineTTS,\n      voice,\n      cloudBrowserVoices,\n      languageTTS,\n      automaticPlayback,\n      playbackRate,\n      setSttExternal,\n      setTtsExternal,\n      setConversationMode,\n      setAdvancedMode,\n      setSpeechToText,\n      setTextToSpeech,\n      setCacheTTS,\n      setEngineSTT,\n      setLanguageSTT,\n      setAutoTranscribeAudio,\n      setDecibelValue,\n      setAutoSendText,\n      setEngineTTS,\n      setVoice,\n      setCloudBrowserVoices,\n      setLanguageTTS,\n      setAutomaticPlayback,\n      setPlaybackRate,\n    ],\n  );\n\n  useEffect(() => {\n    if (data && data.message !== 'not_found') {\n      Object.entries(data).forEach(([key, value]) => {\n        updateSetting(key, value);\n      });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [data]);\n\n  logger.log({ sttExternal, ttsExternal });\n\n  const contentRef = useRef(null);\n  useOnClickOutside(contentRef, () => confirmClear && setConfirmClear(false), []);\n\n  return (\n    <Tabs.Root\n      defaultValue={'simple'}\n      orientation=\"horizontal\"\n      value={advancedMode ? 'advanced' : 'simple'}\n    >\n      <div className=\"sticky -top-1 z-50 mb-4 bg-white dark:bg-gray-700\">\n        <Tabs.List className=\"flex justify-center bg-background\">\n          <Tabs.Trigger\n            onClick={() => setAdvancedMode(false)}\n            className={cn(\n              'group m-1 flex items-center justify-center gap-2 bg-transparent px-4 py-2 text-sm text-text-secondary transition-all duration-200 ease-in-out radix-state-active:bg-secondary radix-state-active:text-foreground radix-state-active:shadow-lg',\n              isSmallScreen ? 'flex-row rounded-lg' : 'rounded-xl',\n              'w-full',\n            )}\n            value=\"simple\"\n            style={{ userSelect: 'none' }}\n          >\n            <Lightbulb />\n            Simple\n          </Tabs.Trigger>\n          <Tabs.Trigger\n            onClick={() => setAdvancedMode(true)}\n            className={cn(\n              'group m-1 flex items-center justify-center gap-2 bg-transparent px-4 py-2 text-sm text-text-secondary transition-all duration-200 ease-in-out radix-state-active:bg-secondary radix-state-active:text-foreground radix-state-active:shadow-lg',\n              isSmallScreen ? 'flex-row rounded-lg' : 'rounded-xl',\n              'w-full',\n            )}\n            value=\"advanced\"\n            style={{ userSelect: 'none' }}\n          >\n            <Cog />\n            Advanced\n          </Tabs.Trigger>\n        </Tabs.List>\n      </div>\n\n      <Tabs.Content value={'simple'}>\n        <div className=\"flex flex-col gap-3 text-sm text-text-primary\">\n          <SpeechToTextSwitch />\n          <EngineSTTDropdown external={sttExternal} />\n          <LanguageSTTDropdown />\n          <div className=\"h-px bg-border-medium\" role=\"none\" />\n          <TextToSpeechSwitch />\n          <EngineTTSDropdown external={ttsExternal} />\n          <VoiceDropdown />\n        </div>\n      </Tabs.Content>\n\n      <Tabs.Content value={'advanced'}>\n        <div className=\"flex flex-col gap-3 text-sm text-text-primary\">\n          <ConversationModeSwitch />\n          <div className=\"mt-2 h-px bg-border-medium\" role=\"none\" />\n          <SpeechToTextSwitch />\n\n          <EngineSTTDropdown external={sttExternal} />\n\n          <LanguageSTTDropdown />\n          <div className=\"pb-2\">\n            <AutoTranscribeAudioSwitch />\n          </div>\n          {autoTranscribeAudio && (\n            <div className=\"pb-2\">\n              <DecibelSelector />\n            </div>\n          )}\n          <div className=\"pb-2\">\n            <AutoSendTextSelector />\n          </div>\n          <div className=\"h-px bg-border-medium\" role=\"none\" />\n          <div className=\"pb-3\">\n            <TextToSpeechSwitch />\n          </div>\n          <AutomaticPlaybackSwitch />\n          <EngineTTSDropdown external={ttsExternal} />\n          <VoiceDropdown />\n          {engineTTS === 'browser' && (\n            <div className=\"pb-2\">\n              <CloudBrowserVoicesSwitch />\n            </div>\n          )}\n          <div className=\"pb-2\">\n            <PlaybackRate />\n          </div>\n          <CacheTTSSwitch />\n        </div>\n      </Tabs.Content>\n    </Tabs.Root>\n  );\n}\n\nexport default React.memo(Speech);\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/AutomaticPlaybackSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function AutomaticPlaybackSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [automaticPlayback, setAutomaticPlayback] = useRecoilState(store.automaticPlayback);\n\n  const handleCheckedChange = (value: boolean) => {\n    setAutomaticPlayback(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_automatic_playback')}</div>\n      <Switch\n        id=\"AutomaticPlayback\"\n        checked={automaticPlayback}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"AutomaticPlayback\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/CacheTTSSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function CacheTTSSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [cacheTTS, setCacheTTS] = useRecoilState<boolean>(store.cacheTTS);\n  const [textToSpeech] = useRecoilState<boolean>(store.textToSpeech);\n\n  const handleCheckedChange = (value: boolean) => {\n    setCacheTTS(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_enable_cache_tts')}</div>\n      <Switch\n        id=\"CacheTTS\"\n        checked={cacheTTS}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"CacheTTS\"\n        disabled={!textToSpeech}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/CloudBrowserVoicesSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function CloudBrowserVoicesSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [cloudBrowserVoices, setCloudBrowserVoices] = useRecoilState<boolean>(\n    store.cloudBrowserVoices,\n  );\n  const [textToSpeech] = useRecoilState<boolean>(store.textToSpeech);\n\n  const handleCheckedChange = (value: boolean) => {\n    setCloudBrowserVoices(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_enable_cloud_browser_voice')}</div>\n      <Switch\n        id=\"CloudBrowserVoices\"\n        checked={cloudBrowserVoices}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"CloudBrowserVoices\"\n        disabled={!textToSpeech}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/EngineTTSDropdown.tsx",
    "content": "import React from 'react';\nimport { useRecoilState } from 'recoil';\nimport { Dropdown } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\ninterface EngineTTSDropdownProps {\n  external: boolean;\n}\n\nconst EngineTTSDropdown: React.FC<EngineTTSDropdownProps> = ({ external }) => {\n  const localize = useLocalize();\n  const [engineTTS, setEngineTTS] = useRecoilState<string>(store.engineTTS);\n\n  const endpointOptions = external\n    ? [\n      { value: 'browser', label: localize('com_nav_browser') },\n      { value: 'edge', label: localize('com_nav_edge') },\n      { value: 'external', label: localize('com_nav_external') },\n    ]\n    : [\n      { value: 'browser', label: localize('com_nav_browser') },\n      { value: 'edge', label: localize('com_nav_edge') },\n    ];\n\n  const handleSelect = (value: string) => {\n    setEngineTTS(value);\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>{localize('com_nav_engine')}</div>\n      <Dropdown\n        value={engineTTS}\n        onChange={handleSelect}\n        options={endpointOptions}\n        sizeClasses=\"w-[180px]\"\n        anchor=\"bottom start\"\n        testId=\"EngineTTSDropdown\"\n      />\n    </div>\n  );\n};\n\nexport default EngineTTSDropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/PlaybackRate.tsx",
    "content": "import React from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { Slider, InputNumber } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\nimport { cn, defaultTextProps, optionText } from '~/utils/';\n\nexport default function DecibelSelector() {\n  const localize = useLocalize();\n  const textToSpeech = useRecoilValue(store.textToSpeech);\n  const [playbackRate, setPlaybackRate] = useRecoilState(store.playbackRate);\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center justify-between\">\n        <div>{localize('com_nav_playback_rate')}</div>\n        <div className=\"w-2\" />\n        <small className=\"opacity-40\">({localize('com_endpoint_default_with_num', { 0: '1' })})</small>\n      </div>\n      <div className=\"flex items-center justify-between\">\n        <Slider\n          value={[playbackRate ?? 1]}\n          onValueChange={(value) => setPlaybackRate(value[0])}\n          onDoubleClick={() => setPlaybackRate(null)}\n          min={0.1}\n          max={2}\n          step={0.1}\n          className=\"ml-4 flex h-4 w-24\"\n          disabled={!textToSpeech}\n        />\n        <div className=\"w-2\" />\n        <InputNumber\n          value={playbackRate ?? 1}\n          disabled={!textToSpeech}\n          onChange={(value) => setPlaybackRate(value ? value[0] : 0)}\n          min={0.1}\n          max={2}\n          className={cn(\n            defaultTextProps,\n            cn(\n              optionText,\n              'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n            ),\n          )}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/TextToSpeechSwitch.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nexport default function TextToSpeechSwitch({\n  onCheckedChange,\n}: {\n  onCheckedChange?: (value: boolean) => void;\n}) {\n  const localize = useLocalize();\n  const [TextToSpeech, setTextToSpeech] = useRecoilState<boolean>(store.textToSpeech);\n\n  const handleCheckedChange = (value: boolean) => {\n    setTextToSpeech(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className=\"flex items-center justify-between\">\n      <div>\n        <strong>{localize('com_nav_text_to_speech')}</strong>\n      </div>\n      <Switch\n        id=\"TextToSpeech\"\n        checked={TextToSpeech}\n        onCheckedChange={handleCheckedChange}\n        className=\"ml-4\"\n        data-testid=\"TextToSpeech\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/VoiceDropdown.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport {\n  EdgeVoiceDropdown,\n  BrowserVoiceDropdown,\n  ExternalVoiceDropdown,\n} from '~/components/Audio/Voices';\nimport store from '~/store';\nimport { TTSEndpoints } from '~/common';\n\nconst voiceDropdownComponentsMap = {\n  [TTSEndpoints.edge]: EdgeVoiceDropdown,\n  [TTSEndpoints.browser]: BrowserVoiceDropdown,\n  [TTSEndpoints.external]: ExternalVoiceDropdown,\n};\n\nexport default function VoiceDropdown() {\n  const engineTTS = useRecoilValue<string>(store.engineTTS);\n  const VoiceDropdownComponent = voiceDropdownComponentsMap[engineTTS];\n\n  return <VoiceDropdownComponent />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/__tests__/AutomaticPlaybackSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport AutomaticPlaybackSwitch from '../AutomaticPlaybackSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('AutomaticPlaybackSwitch', () => {\n  /**\n   * Mock function to set the text-to-speech state.\n   */\n  let mockSetAutomaticPlayback: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetAutomaticPlayback = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutomaticPlaybackSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('AutomaticPlayback')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <AutomaticPlaybackSwitch onCheckedChange={mockSetAutomaticPlayback} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('AutomaticPlayback');\n    fireEvent.click(switchElement);\n\n    expect(mockSetAutomaticPlayback).toHaveBeenCalledWith(true);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/__tests__/CacheTTSSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport CacheTTSSwitch from '../CacheTTSSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('CacheTTSSwitch', () => {\n  /**\n   * Mock function to set the cache-tts state.\n   */\n  let mockSetCacheTTS: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetCacheTTS = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <CacheTTSSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('CacheTTS')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <CacheTTSSwitch onCheckedChange={mockSetCacheTTS} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('CacheTTS');\n    fireEvent.click(switchElement);\n\n    expect(mockSetCacheTTS).toHaveBeenCalledWith(false);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/__tests__/CloudBrowserVoicesSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport CloudBrowserVoicesSwitch from '../CloudBrowserVoicesSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('CloudBrowserVoicesSwitch', () => {\n  /**\n   * Mock function to set the cache-tts state.\n   */\n  let mockSetCloudBrowserVoices:\n    | jest.Mock<void, [boolean]>\n    | ((value: boolean) => void)\n    | undefined;\n\n  beforeEach(() => {\n    mockSetCloudBrowserVoices = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <CloudBrowserVoicesSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('CloudBrowserVoices')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <CloudBrowserVoicesSwitch onCheckedChange={mockSetCloudBrowserVoices} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('CloudBrowserVoices');\n    fireEvent.click(switchElement);\n\n    expect(mockSetCloudBrowserVoices).toHaveBeenCalledWith(true);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/__tests__/TextToSpeechSwitch.spec.tsx",
    "content": "import React from 'react';\nimport '@testing-library/jest-dom/extend-expect';\nimport { render, fireEvent } from 'test/layout-test-utils';\nimport TextToSpeechSwitch from '../TextToSpeechSwitch';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('TextToSpeechSwitch', () => {\n  /**\n   * Mock function to set the text-to-speech state.\n   */\n  let mockSetTextToSpeech: jest.Mock<void, [boolean]> | ((value: boolean) => void) | undefined;\n\n  beforeEach(() => {\n    mockSetTextToSpeech = jest.fn();\n  });\n\n  it('renders correctly', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <TextToSpeechSwitch />\n      </RecoilRoot>,\n    );\n\n    expect(getByTestId('TextToSpeech')).toBeInTheDocument();\n  });\n\n  it('calls onCheckedChange when the switch is toggled', () => {\n    const { getByTestId } = render(\n      <RecoilRoot>\n        <TextToSpeechSwitch onCheckedChange={mockSetTextToSpeech} />\n      </RecoilRoot>,\n    );\n    const switchElement = getByTestId('TextToSpeech');\n    fireEvent.click(switchElement);\n\n    expect(mockSetTextToSpeech).toHaveBeenCalledWith(false);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/index.ts",
    "content": "export { default as CloudBrowserVoicesSwitch } from './CloudBrowserVoicesSwitch';\nexport { default as AutomaticPlaybackSwitch } from './AutomaticPlaybackSwitch';\nexport { default as TextToSpeechSwitch } from './TextToSpeechSwitch';\nexport { default as EngineTTSDropdown } from './EngineTTSDropdown';\nexport { default as CacheTTSSwitch } from './CacheTTSSwitch';\nexport { default as VoiceDropdown } from './VoiceDropdown';\nexport { default as PlaybackRate } from './PlaybackRate';\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/SettingsTabs/index.ts",
    "content": "export { default as General } from './General/General';\nexport { default as Chat } from './Chat/Chat';\nexport { default as Data } from './Data/Data';\nexport { default as Beta } from './Beta/Beta';\nexport { default as Commands } from './Commands/Commands';\nexport { RevokeKeysButton } from './Data/RevokeKeysButton';\nexport { default as Account } from './Account/Account';\nexport { default as Speech } from './Speech/Speech';\n"
  },
  {
    "path": "src/frontend/client/src/components/Nav/index.ts",
    "content": "export * from './ExportConversation';\nexport * from './SettingsTabs/';\nexport { default as MobileNav } from './MobileNav';\nexport { default as Nav } from './Nav';\nexport { default as NavLink } from './NavLink';\nexport { default as NewChat } from './NewChat';\nexport { default as SearchBar } from './SearchBar';\nexport { default as Settings } from './Settings';\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginAuthForm.tsx",
    "content": "import { Save } from 'lucide-react';\nimport { useForm } from 'react-hook-form';\nimport { TPlugin, TPluginAuthConfig, TPluginAction } from '~/data-provider/data-provider/src';\nimport { HoverCard, HoverCardTrigger } from '~/components/ui';\nimport PluginTooltip from './PluginTooltip';\nimport { useLocalize } from '~/hooks';\n\ntype TPluginAuthFormProps = {\n  plugin: TPlugin | undefined;\n  onSubmit: (installActionData: TPluginAction) => void;\n  isEntityTool?: boolean;\n};\n\nfunction PluginAuthForm({ plugin, onSubmit, isEntityTool }: TPluginAuthFormProps) {\n  const {\n    register,\n    handleSubmit,\n    formState: { errors, isDirty, isValid, isSubmitting },\n  } = useForm();\n\n  const localize = useLocalize();\n  const authConfig = plugin?.authConfig ?? [];\n\n  return (\n    <div className=\"flex w-full flex-col items-center gap-2\">\n      <div className=\"grid w-full gap-6 sm:grid-cols-2\">\n        <form\n          className=\"col-span-1 flex w-full flex-col items-start justify-start gap-2\"\n          method=\"POST\"\n          onSubmit={handleSubmit((auth) =>\n            onSubmit({\n              pluginKey: plugin?.pluginKey ?? '',\n              action: 'install',\n              auth,\n              isEntityTool,\n            }),\n          )}\n        >\n          {authConfig.map((config: TPluginAuthConfig, i: number) => {\n            const authField = config.authField.split('||')[0];\n            return (\n              <div key={`${authField}-${i}`} className=\"flex w-full flex-col gap-1\">\n                <label\n                  htmlFor={authField}\n                  className=\"mb-1 text-left text-sm font-medium text-gray-700/70 dark:text-gray-50/70\"\n                >\n                  {config.label}\n                </label>\n                <HoverCard openDelay={300}>\n                  <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n                    <input\n                      type=\"text\"\n                      autoComplete=\"off\"\n                      id={authField}\n                      aria-invalid={!!errors[authField]}\n                      aria-describedby={`${authField}-error`}\n                      aria-label={config.label}\n                      aria-required=\"true\"\n                      {...register(authField, {\n                        required: `${config.label} is required.`,\n                        minLength: {\n                          value: 10,\n                          message: `${config.label} must be at least 10 characters long`,\n                        },\n                      })}\n                      className=\"flex h-10 max-h-10 w-full resize-none rounded-md border border-gray-200 bg-transparent px-3 py-2 text-sm text-gray-700 shadow-[0_0_10px_rgba(0,0,0,0.05)] outline-none placeholder:text-gray-400 focus:border-gray-400 focus:bg-gray-50 focus:outline-none focus:ring-0 focus:ring-gray-400 focus:ring-opacity-0 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-500 dark:bg-gray-700 dark:text-gray-50 dark:shadow-[0_0_15px_rgba(0,0,0,0.10)] dark:focus:border-gray-400 focus:dark:bg-gray-600 dark:focus:outline-none dark:focus:ring-0 dark:focus:ring-gray-400 dark:focus:ring-offset-0\"\n                    />\n                  </HoverCardTrigger>\n                  <PluginTooltip content={config.description} position=\"right\" />\n                </HoverCard>\n                {errors[authField] && (\n                  <span role=\"alert\" className=\"mt-1 text-sm text-red-400\">\n                    {errors[authField].message as string}\n                  </span>\n                )}\n              </div>\n            );\n          })}\n          <button\n            disabled={!isDirty || !isValid || isSubmitting}\n            type=\"button\"\n            className=\"btn btn-primary relative\"\n            onClick={() => {\n              handleSubmit((auth) =>\n                onSubmit({\n                  pluginKey: plugin?.pluginKey ?? '',\n                  action: 'install',\n                  auth,\n                  isEntityTool,\n                }),\n              )();\n            }}\n          >\n            <div className=\"flex items-center justify-center gap-2\">\n              {localize('com_ui_save')}\n              <Save className=\"flex h-4 w-4 items-center stroke-2\" />\n            </div>\n          </button>\n        </form>\n      </div>\n    </div>\n  );\n}\n\nexport default PluginAuthForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginPagination.tsx",
    "content": "import React from 'react';\nimport { useLocalize } from '~/hooks';\n\ntype TPluginPaginationProps = {\n  currentPage: number;\n  maxPage: number;\n  onChangePage: (page: number) => void;\n};\n\nconst PluginPagination: React.FC<TPluginPaginationProps> = ({\n  currentPage,\n  maxPage,\n  onChangePage,\n}) => {\n  const localize = useLocalize();\n  const pages = [...Array(maxPage).keys()].map((i) => i + 1);\n\n  const handlePageChange = (page: number) => {\n    if (page < 1 || page > maxPage) {\n      return;\n    }\n    onChangePage(page);\n  };\n\n  return (\n    <div className=\"flex gap-2 text-sm text-black/60 dark:text-white/70\">\n      <div\n        role=\"button\"\n        tabIndex={0}\n        aria-label=\"Previous page\"\n        onClick={() => handlePageChange(currentPage - 1)}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter' || e.key === ' ') {\n            onChangePage(currentPage - 1);\n          }\n        }}\n        className={`flex cursor-default items-center text-sm ${\n          currentPage === 1\n            ? 'text-black/70 opacity-50 dark:text-white/70'\n            : 'text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50'\n        }`}\n        style={{ userSelect: 'none' }}\n      >\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"15 18 9 12 15 6\" />\n        </svg>\n        {localize('com_ui_prev')}\n      </div>\n      {pages.map((page) => (\n        <div\n          role=\"button\"\n          key={page}\n          tabIndex={0}\n          className={`flex h-5 w-5 items-center justify-center text-sm ${\n            currentPage === page\n              ? 'text-blue-600 hover:text-blue-600 dark:text-blue-600 dark:hover:text-blue-600'\n              : 'text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50'\n          }`}\n          style={{ userSelect: 'none' }}\n          onClick={() => onChangePage(page)}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              onChangePage(page);\n            }\n          }}\n        >\n          {page}\n        </div>\n      ))}\n      <div\n        role=\"button\"\n        aria-label=\"Next page\"\n        tabIndex={0}\n        onClick={() => handlePageChange(currentPage + 1)}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter' || e.key === ' ') {\n            onChangePage(currentPage + 1);\n          }\n        }}\n        className={`flex cursor-default items-center text-sm ${\n          currentPage === maxPage\n            ? 'text-black/70 opacity-50 dark:text-white/70'\n            : 'text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50'\n        }`}\n        style={{ userSelect: 'none' }}\n      >\n        {localize('com_ui_next')}\n        <svg\n          stroke=\"currentColor\"\n          fill=\"none\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          className=\"h-4 w-4\"\n          height=\"1em\"\n          width=\"1em\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"9 18 15 12 9 6\" />\n        </svg>\n      </div>\n    </div>\n  );\n};\n\nexport default PluginPagination;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginStoreDialog.tsx",
    "content": "import { Search, X } from 'lucide-react';\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/react';\nimport { useState, useEffect, useCallback } from 'react';\nimport { useAvailablePluginsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TError, TPlugin, TPluginAction } from '~/data-provider/data-provider/src';\nimport type { TPluginStoreDialogProps } from '~/common/types';\nimport {\n  usePluginDialogHelpers,\n  useSetIndexOptions,\n  usePluginInstall,\n  useAuthContext,\n  useLocalize,\n} from '~/hooks';\nimport PluginPagination from './PluginPagination';\nimport PluginStoreItem from './PluginStoreItem';\nimport PluginAuthForm from './PluginAuthForm';\n\nfunction PluginStoreDialog({ isOpen, setIsOpen }: TPluginStoreDialogProps) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const { data: availablePlugins } = useAvailablePluginsQuery();\n  const { setTools } = useSetIndexOptions();\n\n  const [userPlugins, setUserPlugins] = useState<string[]>([]);\n\n  const {\n    maxPage,\n    setMaxPage,\n    currentPage,\n    setCurrentPage,\n    itemsPerPage,\n    searchChanged,\n    setSearchChanged,\n    searchValue,\n    setSearchValue,\n    gridRef,\n    handleSearch,\n    handleChangePage,\n    error,\n    setError,\n    errorMessage,\n    setErrorMessage,\n    showPluginAuthForm,\n    setShowPluginAuthForm,\n    selectedPlugin,\n    setSelectedPlugin,\n  } = usePluginDialogHelpers();\n\n  const handleInstallError = useCallback(\n    (error: TError) => {\n      setError(true);\n      if (error.response?.data?.message) {\n        setErrorMessage(error.response.data.message);\n      }\n      setTimeout(() => {\n        setError(false);\n        setErrorMessage('');\n      }, 5000);\n    },\n    [setError, setErrorMessage],\n  );\n\n  const { installPlugin, uninstallPlugin } = usePluginInstall({\n    onInstallError: handleInstallError,\n    onUninstallError: handleInstallError,\n    onUninstallSuccess: (_data, variables) => {\n      setTools(variables.pluginKey, true);\n    },\n  });\n\n  const handleInstall = (pluginAction: TPluginAction, plugin?: TPlugin) => {\n    if (!plugin) {\n      return;\n    }\n    installPlugin(pluginAction, plugin);\n    setShowPluginAuthForm(false);\n  };\n\n  const onPluginInstall = (pluginKey: string) => {\n    const plugin = availablePlugins?.find((p) => p.pluginKey === pluginKey);\n    if (!plugin) {\n      return;\n    }\n    setSelectedPlugin(plugin);\n\n    const { authConfig, authenticated } = plugin ?? {};\n\n    if (authConfig && authConfig.length > 0 && !authenticated) {\n      setShowPluginAuthForm(true);\n    } else {\n      handleInstall({ pluginKey, action: 'install', auth: null }, plugin);\n    }\n  };\n\n  const filteredPlugins = availablePlugins?.filter((plugin) =>\n    plugin.name.toLowerCase().includes(searchValue.toLowerCase()),\n  );\n\n  useEffect(() => {\n    if (user && user.plugins) {\n      setUserPlugins(user.plugins);\n    }\n\n    if (filteredPlugins) {\n      setMaxPage(Math.ceil(filteredPlugins.length / itemsPerPage));\n      if (searchChanged) {\n        setCurrentPage(1);\n        setSearchChanged(false);\n      }\n    }\n  }, [\n    availablePlugins,\n    itemsPerPage,\n    user,\n    searchValue,\n    filteredPlugins,\n    searchChanged,\n    setMaxPage,\n    setCurrentPage,\n    setSearchChanged,\n  ]);\n\n  return (\n    <Dialog\n      open={isOpen}\n      onClose={() => {\n        setIsOpen(false);\n        setCurrentPage(1);\n        setSearchValue('');\n      }}\n      className=\"relative z-[102]\"\n    >\n      {/* The backdrop, rendered as a fixed sibling to the panel container */}\n      <div className=\"fixed inset-0 bg-gray-600/65 transition-opacity dark:bg-black/80\" />\n      {/* Full-screen container to center the panel */}\n      <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n        <DialogPanel\n          className=\"relative w-full transform overflow-hidden overflow-y-auto rounded-lg bg-white text-left shadow-xl transition-all dark:bg-gray-700 max-sm:h-full sm:mx-7 sm:my-8 sm:max-w-2xl lg:max-w-5xl xl:max-w-7xl\"\n          style={{ minHeight: '610px' }}\n        >\n          <div className=\"flex items-center justify-between border-b-[1px] border-black/10 p-6 pb-4 dark:border-white/10\">\n            <div className=\"flex items-center\">\n              <div className=\"text-center sm:text-left\">\n                <DialogTitle className=\"text-lg font-medium leading-6 text-gray-800 dark:text-gray-200\">\n                  {localize('com_nav_plugin_store')}\n                </DialogTitle>\n              </div>\n            </div>\n            <div>\n              <div className=\"sm:mt-0\">\n                <button\n                  onClick={() => {\n                    setIsOpen(false);\n                    setCurrentPage(1);\n                  }}\n                  className=\"inline-block text-gray-500 hover:text-gray-200\"\n                  tabIndex={0}\n                >\n                  <X />\n                </button>\n              </div>\n            </div>\n          </div>\n          {error && (\n            <div\n              className=\"relative m-4 rounded border border-red-400 bg-red-100 px-4 py-3 text-red-700\"\n              role=\"alert\"\n            >\n              {localize('com_nav_plugin_auth_error')} {errorMessage}\n            </div>\n          )}\n          {showPluginAuthForm && (\n            <div className=\"p-4 sm:p-6 sm:pt-4\">\n              <PluginAuthForm\n                plugin={selectedPlugin}\n                onSubmit={(action: TPluginAction) => handleInstall(action, selectedPlugin)}\n              />\n            </div>\n          )}\n          <div className=\"p-4 sm:p-6 sm:pt-4\">\n            <div className=\"mt-4 flex flex-col gap-4\">\n              <div className=\"flex items-center\">\n                <div className=\"relative flex items-center\">\n                  <Search className=\"absolute left-2 h-6 w-6 text-gray-500\" />\n                  <input\n                    type=\"text\"\n                    value={searchValue}\n                    onChange={handleSearch}\n                    placeholder={localize('com_nav_plugin_search')}\n                    className=\"\n                    text-token-text-primary flex rounded-md border border-border-heavy bg-surface-tertiary py-2 pl-10 pr-2\"\n                  />\n                </div>\n              </div>\n              <div\n                ref={gridRef}\n                className=\"grid grid-cols-1 grid-rows-2 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n                style={{ minHeight: '410px' }}\n              >\n                {filteredPlugins &&\n                  filteredPlugins\n                    .slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage)\n                    .map((plugin, index) => (\n                      <PluginStoreItem\n                        key={index}\n                        plugin={plugin}\n                        isInstalled={userPlugins.includes(plugin.pluginKey)}\n                        onInstall={() => onPluginInstall(plugin.pluginKey)}\n                        onUninstall={() => uninstallPlugin(plugin.pluginKey)}\n                      />\n                    ))}\n              </div>\n            </div>\n            <div className=\"mt-2 flex flex-col items-center gap-2 sm:flex-row sm:justify-between\">\n              {maxPage > 0 ? (\n                <PluginPagination\n                  currentPage={currentPage}\n                  maxPage={maxPage}\n                  onChangePage={handleChangePage}\n                />\n              ) : (\n                <div style={{ height: '21px' }}></div>\n              )}\n              {/* API not yet implemented: */}\n              {/* <div className=\"flex flex-col items-center gap-2 sm:flex-row\">\n                <PluginStoreLinkButton\n                  label=\"Install an unverified plugin\"\n                  onClick={onInstallUnverifiedPlugin}\n                />\n                <div className=\"hidden h-4 border-l border-black/30 dark:border-white/30 sm:block\"></div>\n                <PluginStoreLinkButton\n                  label=\"Develop your own plugin\"\n                  onClick={onDevelopPluginClick}\n                />\n                <div className=\"hidden h-4 border-l border-black/30 dark:border-white/30 sm:block\"></div>\n                <PluginStoreLinkButton label=\"About plugins\" onClick={onAboutPluginsClick} />\n              </div> */}\n            </div>\n          </div>\n        </DialogPanel>\n      </div>\n    </Dialog>\n  );\n}\n\nexport default PluginStoreDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginStoreItem.tsx",
    "content": "import { TPlugin } from '~/data-provider/data-provider/src';\nimport { XCircle, DownloadCloud } from 'lucide-react';\nimport { useLocalize } from '~/hooks';\n\ntype TPluginStoreItemProps = {\n  plugin: TPlugin;\n  onInstall: () => void;\n  onUninstall: () => void;\n  isInstalled?: boolean;\n};\n\nfunction PluginStoreItem({ plugin, onInstall, onUninstall, isInstalled }: TPluginStoreItemProps) {\n  const localize = useLocalize();\n  const handleClick = () => {\n    if (isInstalled) {\n      onUninstall();\n    } else {\n      onInstall();\n    }\n  };\n\n  return (\n    <>\n      <div className=\"flex flex-col gap-4 rounded border border-black/10 bg-white p-6 dark:border-gray-500 dark:bg-gray-700\">\n        <div className=\"flex gap-4\">\n          <div className=\"h-[70px] w-[70px] shrink-0\">\n            <div className=\"relative h-full w-full\">\n              <img\n                src={plugin.icon}\n                alt={`${plugin.name} logo`}\n                className=\"h-full w-full rounded-[5px]\"\n              />\n              <div className=\"absolute inset-0 rounded-[5px] ring-1 ring-inset ring-black/10\"></div>\n            </div>\n          </div>\n          <div className=\"flex min-w-0 flex-col items-start justify-between\">\n            <div className=\"mb-2 line-clamp-1 max-w-full text-lg leading-5 text-gray-700/80 dark:text-gray-50\">\n              {plugin.name}\n            </div>\n            {!isInstalled ? (\n              <button\n                className=\"btn btn-primary relative\"\n                aria-label={`${localize('com_nav_plugin_install')} ${plugin.name}`}\n                onClick={handleClick}\n              >\n                <div className=\"flex w-full items-center justify-center gap-2\">\n                  {localize('com_nav_plugin_install')}\n                  <DownloadCloud className=\"flex h-4 w-4 items-center stroke-2\" />\n                </div>\n              </button>\n            ) : (\n              <button\n                className=\"btn relative bg-gray-300 hover:bg-gray-400 dark:bg-gray-50 dark:hover:bg-gray-200\"\n                onClick={handleClick}\n                aria-label={`${localize('com_nav_plugin_uninstall')} ${plugin.name}`}\n              >\n                <div className=\"flex w-full items-center justify-center gap-2\">\n                  {localize('com_nav_plugin_uninstall')}\n                  <XCircle className=\"flex h-4 w-4 items-center stroke-2\" />\n                </div>\n              </button>\n            )}\n          </div>\n        </div>\n        <div className=\"line-clamp-3 h-[60px] text-sm text-gray-700/70 dark:text-gray-50/70\">\n          {plugin.description}\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default PluginStoreItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginStoreLinkButton.tsx",
    "content": "type TPluginStoreLinkButtonProps = {\n  onClick: () => void;\n  label: string;\n};\n\nfunction PluginStoreLinkButton({ onClick, label }: TPluginStoreLinkButtonProps) {\n  return (\n    <div\n      role=\"button\"\n      onClick={onClick}\n      className=\"text-sm text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50\"\n    >\n      {label}\n    </div>\n  );\n}\n\nexport default PluginStoreLinkButton;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/PluginTooltip.tsx",
    "content": "import { HoverCardPortal, HoverCardContent } from '~/components/ui';\nimport './styles.module.css';\n\ntype TPluginTooltipProps = {\n  content: string;\n  position: 'top' | 'bottom' | 'left' | 'right';\n};\n\nfunction PluginTooltip({ content, position }: TPluginTooltipProps) {\n  return (\n    <HoverCardPortal>\n      <HoverCardContent side={position} className=\"w-80 \">\n        <div className=\"space-y-2\">\n          <div className=\"text-sm text-gray-600 dark:text-gray-300\">\n            <div dangerouslySetInnerHTML={{ __html: content }} />\n          </div>\n        </div>\n      </HoverCardContent>\n    </HoverCardPortal>\n  );\n}\n\nexport default PluginTooltip;\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/__tests__/PluginAuthForm.spec.tsx",
    "content": "import { render, screen } from 'test/layout-test-utils';\nimport userEvent from '@testing-library/user-event';\nimport PluginAuthForm from '../PluginAuthForm';\n\ndescribe('PluginAuthForm', () => {\n  const plugin = {\n    pluginKey: 'test-plugin',\n    authConfig: [\n      {\n        authField: 'key',\n        label: 'Key',\n      },\n      {\n        authField: 'secret',\n        label: 'Secret',\n      },\n    ],\n  };\n\n  const onSubmit = jest.fn();\n\n  it('renders the form with the correct fields', () => {\n    //@ts-ignore - dont need all props of plugin\n    render(<PluginAuthForm plugin={plugin} onSubmit={onSubmit} />);\n\n    expect(screen.getByLabelText('Key')).toBeInTheDocument();\n    expect(screen.getByLabelText('Secret')).toBeInTheDocument();\n  });\n\n  it('calls the onSubmit function with the form data when submitted', async () => {\n    //@ts-ignore - dont need all props of plugin\n    render(<PluginAuthForm plugin={plugin} onSubmit={onSubmit} />);\n\n    await userEvent.type(screen.getByLabelText('Key'), '1234567890');\n    await userEvent.type(screen.getByLabelText('Secret'), '1234567890');\n    await userEvent.click(screen.getByRole('button', { name: 'Save' }));\n    expect(onSubmit).toHaveBeenCalledWith({\n      pluginKey: 'test-plugin',\n      action: 'install',\n      auth: {\n        key: '1234567890',\n        // file deepcode ignore HardcodedNonCryptoSecret/test: test\n        secret: '1234567890',\n      },\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/__tests__/PluginPagination.spec.tsx",
    "content": "import 'test/matchMedia.mock';\nimport React from 'react';\nimport { render, screen } from 'test/layout-test-utils';\nimport userEvent from '@testing-library/user-event';\nimport PluginPagination from '../PluginPagination';\n\ndescribe('PluginPagination', () => {\n  const onChangePage = jest.fn();\n\n  beforeEach(() => {\n    onChangePage.mockClear();\n  });\n\n  it('should render the previous button as enabled when not on the first page', () => {\n    render(<PluginPagination currentPage={2} maxPage={5} onChangePage={onChangePage} />);\n    const prevButton = screen.getByRole('button', { name: /prev/i });\n    expect(prevButton).toBeEnabled();\n  });\n\n  it('should call onChangePage with the previous page number when the previous button is clicked', async () => {\n    render(<PluginPagination currentPage={2} maxPage={5} onChangePage={onChangePage} />);\n    const prevButton = screen.getByRole('button', { name: /prev/i });\n    await userEvent.click(prevButton);\n    expect(onChangePage).toHaveBeenCalledWith(1);\n  });\n\n  it('should call onChangePage with the next page number when the next button is clicked', async () => {\n    render(<PluginPagination currentPage={2} maxPage={5} onChangePage={onChangePage} />);\n    const nextButton = screen.getByRole('button', { name: /next/i });\n    await userEvent.click(nextButton);\n    expect(onChangePage).toHaveBeenCalledWith(3);\n  });\n\n  it('should render the page numbers', () => {\n    render(<PluginPagination currentPage={2} maxPage={5} onChangePage={onChangePage} />);\n    const pageNumbers = screen.getAllByRole('button', { name: /\\d+/ });\n    expect(pageNumbers).toHaveLength(5);\n    expect(pageNumbers[0]).toHaveTextContent('1');\n    expect(pageNumbers[1]).toHaveTextContent('2');\n    expect(pageNumbers[2]).toHaveTextContent('3');\n    expect(pageNumbers[3]).toHaveTextContent('4');\n    expect(pageNumbers[4]).toHaveTextContent('5');\n  });\n\n  it('should call onChangePage with the correct page number when a page number button is clicked', async () => {\n    render(<PluginPagination currentPage={2} maxPage={5} onChangePage={onChangePage} />);\n    const pageNumbers = screen.getAllByRole('button', { name: /\\d+/ });\n    await userEvent.click(pageNumbers[3]);\n    expect(onChangePage).toHaveBeenCalledWith(4);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/__tests__/PluginStoreDialog.spec.tsx",
    "content": "import { render, screen, fireEvent } from 'test/layout-test-utils';\nimport PluginStoreDialog from '../PluginStoreDialog';\nimport userEvent from '@testing-library/user-event';\nimport * as mockDataProvider from '~/data-provider/data-provider/src/react-query';\nimport * as authMutations from '~/data-provider/Auth/mutations';\nimport * as authQueries from '~/data-provider/Auth/queries';\n\njest.mock('~/data-provider/data-provider/src/react-query');\n\nclass ResizeObserver {\n  observe() {\n    // do nothing\n  }\n  unobserve() {\n    // do nothing\n  }\n  disconnect() {\n    // do nothing\n  }\n}\n\nwindow.ResizeObserver = ResizeObserver;\n\nconst pluginsQueryResult = [\n  {\n    name: 'Google',\n    pluginKey: 'google',\n    description: 'Use Google Search to find information',\n    icon: 'https://i.imgur.com/SMmVkNB.png',\n    authConfig: [\n      {\n        authField: 'GOOGLE_CSE_ID',\n        label: 'Google CSE ID',\n        description: 'This is your Google Custom Search Engine ID.',\n      },\n    ],\n  },\n  {\n    name: 'Wolfram',\n    pluginKey: 'wolfram',\n    description:\n      'Access computation, math, curated knowledge & real-time data through Wolfram|Alpha and Wolfram Language.',\n    icon: 'https://www.wolframcdn.com/images/icons/Wolfram.png',\n    authConfig: [\n      {\n        authField: 'WOLFRAM_APP_ID',\n        label: 'Wolfram App ID',\n        description: 'An AppID must be supplied in all calls to the Wolfram|Alpha API.',\n      },\n    ],\n  },\n  {\n    name: 'Calculator',\n    pluginKey: 'calculator',\n    description: 'A simple calculator plugin',\n    icon: 'https://i.imgur.com/SMmVkNB.png',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 1',\n    pluginKey: 'plugin1',\n    description: 'description for Plugin 1.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 2',\n    pluginKey: 'plugin2',\n    description: 'description for Plugin 2.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 3',\n    pluginKey: 'plugin3',\n    description: 'description for Plugin 3.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 4',\n    pluginKey: 'plugin4',\n    description: 'description for Plugin 4.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 5',\n    pluginKey: 'plugin5',\n    description: 'description for Plugin 5.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 6',\n    pluginKey: 'plugin6',\n    description: 'description for Plugin 6.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n  {\n    name: 'Plugin 7',\n    pluginKey: 'plugin7',\n    description: 'description for Plugin 7.',\n    icon: 'mock-icon',\n    authConfig: [],\n  },\n];\n\nconst setup = ({\n  useGetUserQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: {\n      plugins: ['wolfram'],\n    },\n  },\n  useRefreshTokenMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {\n      token: 'mock-token',\n      user: {},\n    },\n  },\n  useAvailablePluginsQueryReturnValue = {\n    isLoading: false,\n    isError: false,\n    data: pluginsQueryResult,\n  },\n  useUpdateUserPluginsMutationReturnValue = {\n    isLoading: false,\n    isError: false,\n    mutate: jest.fn(),\n    data: {},\n  },\n} = {}) => {\n  const mockUseAvailablePluginsQuery = jest\n    .spyOn(mockDataProvider, 'useAvailablePluginsQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useAvailablePluginsQueryReturnValue);\n  const mockUseUpdateUserPluginsMutation = jest\n    .spyOn(mockDataProvider, 'useUpdateUserPluginsMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useUpdateUserPluginsMutationReturnValue);\n  const mockUseGetUserQuery = jest\n    .spyOn(authQueries, 'useGetUserQuery')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useGetUserQueryReturnValue);\n  const mockUseRefreshTokenMutation = jest\n    .spyOn(authMutations, 'useRefreshTokenMutation')\n    //@ts-ignore - we don't need all parameters of the QueryObserverSuccessResult\n    .mockReturnValue(useRefreshTokenMutationReturnValue);\n  const mockSetIsOpen = jest.fn();\n  const renderResult = render(<PluginStoreDialog isOpen={true} setIsOpen={mockSetIsOpen} />);\n\n  return {\n    ...renderResult,\n    mockUseGetUserQuery,\n    mockUseAvailablePluginsQuery,\n    mockUseUpdateUserPluginsMutation,\n    mockUseRefreshTokenMutation,\n    mockSetIsOpen,\n  };\n};\n\ntest('renders plugin store dialog with plugins from the available plugins query and shows install/uninstall buttons based on user plugins', () => {\n  const { getByText, getByRole } = setup();\n  expect(getByText(/Plugin Store/i)).toBeInTheDocument();\n  expect(getByText(/Use Google Search to find information/i)).toBeInTheDocument();\n  expect(getByRole('button', { name: 'Install Google' })).toBeInTheDocument();\n  expect(getByRole('button', { name: 'Uninstall Wolfram' })).toBeInTheDocument();\n});\n\ntest('Displays the plugin auth form when installing a plugin with auth', async () => {\n  const { getByRole, getByText } = setup();\n  const googleButton = getByRole('button', { name: 'Install Google' });\n  await userEvent.click(googleButton);\n  expect(getByText(/Google CSE ID/i)).toBeInTheDocument();\n  expect(getByRole('button', { name: 'Save' })).toBeInTheDocument();\n});\n\ntest('allows the user to navigate between pages', async () => {\n  const { getByRole, getByText } = setup();\n\n  expect(getByText('Google')).toBeInTheDocument();\n  expect(getByText('Wolfram')).toBeInTheDocument();\n  expect(getByText('Plugin 1')).toBeInTheDocument();\n\n  const nextPageButton = getByRole('button', { name: 'Next page' });\n  await userEvent.click(nextPageButton);\n\n  expect(getByText('Plugin 6')).toBeInTheDocument();\n  expect(getByText('Plugin 7')).toBeInTheDocument();\n  // expect(getByText('Plugin 3')).toBeInTheDocument();\n  // expect(getByText('Plugin 4')).toBeInTheDocument();\n  // expect(getByText('Plugin 5')).toBeInTheDocument();\n\n  const previousPageButton = getByRole('button', { name: 'Previous page' });\n  await userEvent.click(previousPageButton);\n\n  expect(getByText('Google')).toBeInTheDocument();\n  expect(getByText('Wolfram')).toBeInTheDocument();\n  expect(getByText('Plugin 1')).toBeInTheDocument();\n});\n\ntest('allows the user to search for plugins', async () => {\n  setup();\n\n  const searchInput = screen.getByPlaceholderText('Search plugins');\n  fireEvent.change(searchInput, { target: { value: 'Google' } });\n\n  expect(screen.getByText('Google')).toBeInTheDocument();\n  expect(screen.queryByText('Wolfram')).not.toBeInTheDocument();\n  expect(screen.queryByText('Plugin 1')).not.toBeInTheDocument();\n\n  fireEvent.change(searchInput, { target: { value: 'Plugin 1' } });\n\n  expect(screen.getByText('Plugin 1')).toBeInTheDocument();\n  expect(screen.queryByText('Google')).not.toBeInTheDocument();\n  expect(screen.queryByText('Wolfram')).not.toBeInTheDocument();\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/__tests__/PluginStoreItem.spec.tsx",
    "content": "import 'test/matchMedia.mock';\nimport { render, screen } from 'test/layout-test-utils';\nimport userEvent from '@testing-library/user-event';\nimport { TPlugin } from '~/data-provider/data-provider/src';\nimport PluginStoreItem from '../PluginStoreItem';\n\nconst mockPlugin = {\n  name: 'Test Plugin',\n  description: 'This is a test plugin',\n  icon: 'test-icon.png',\n};\n\ndescribe('PluginStoreItem', () => {\n  it('renders the plugin name and description', () => {\n    render(\n      <PluginStoreItem\n        plugin={mockPlugin as TPlugin}\n        onInstall={() => {\n          return;\n        }}\n        onUninstall={() => {\n          return;\n        }}\n      />,\n    );\n    expect(screen.getByText('Test Plugin')).toBeInTheDocument();\n    expect(screen.getByText('This is a test plugin')).toBeInTheDocument();\n  });\n\n  it('calls onInstall when the install button is clicked', async () => {\n    const onInstall = jest.fn();\n    render(\n      <PluginStoreItem\n        plugin={mockPlugin as TPlugin}\n        onInstall={onInstall}\n        onUninstall={() => {\n          return;\n        }}\n      />,\n    );\n    await userEvent.click(screen.getByText('Install'));\n    expect(onInstall).toHaveBeenCalled();\n  });\n\n  it('calls onUninstall when the uninstall button is clicked', async () => {\n    const onUninstall = jest.fn();\n    render(\n      <PluginStoreItem\n        plugin={mockPlugin as TPlugin}\n        onInstall={() => {\n          return;\n        }}\n        onUninstall={onUninstall}\n        isInstalled\n      />,\n    );\n    await userEvent.click(screen.getByText('Uninstall'));\n    expect(onUninstall).toHaveBeenCalled();\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/index.ts",
    "content": "export { default as PluginStoreDialog } from './PluginStoreDialog';\nexport { default as PluginStoreItem } from './PluginStoreItem';\nexport { default as PluginPagination } from './PluginPagination';\nexport { default as PluginStoreLinkButton } from './PluginStoreLinkButton';\nexport { default as PluginAuthForm } from './PluginAuthForm';\nexport { default as PluginTooltip } from './PluginTooltip';\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/Store/styles.module.css",
    "content": "a {\n  text-decoration: underline;\n  color: white;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Plugins/index.ts",
    "content": "export * from './Store';\n"
  },
  {
    "path": "src/frontend/client/src/components/PreviewFile/DocxFileViewer.tsx",
    "content": "import * as mammoth from \"mammoth\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { LoadingIcon } from \"../ui/icon/Loading\";\n\nconst DocxPreview = ({ filePath }) => {\n    const [htmlContent, setHtmlContent] = useState(\"\");\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n    const previewRef = useRef(null);\n\n    useEffect(() => {\n        const fetchAndConvertDocx = async () => {\n            try {\n                setLoading(true);\n                // 1. 下载 DOCX 文件\n                const response = await fetch(filePath.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL));\n                if (!response.ok) throw new Error(`Failed to fetch file: ${response.status}`);\n\n                // 2. 获取文件 ArrayBuffer\n                const arrayBuffer = await response.arrayBuffer();\n\n                // 3. 使用 Mammoth 转换为 HTML\n                const result = await mammoth.convertToHtml({ arrayBuffer });\n\n                // 4. 设置生成的 HTML\n                setHtmlContent(result.value);\n                setError(null);\n            } catch (err) {\n                setError(err.message);\n                setHtmlContent(`<p class=\"error\">Failed to load DOCX file: ${err.message}</p>`);\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchAndConvertDocx();\n    }, [filePath]);\n\n    // 自定义样式（可选）\n    const docxStyles = `\n    .docx-wrapper {\n      font-family: Arial, sans-serif;\n      line-height: 1.5;\n      padding: 20px;\n      font-size: 14px;\n    }\n    .docx-wrapper p {\n      margin: 0 0 1em 0;\n    }\n    .docx-wrapper table {\n      border-collapse: collapse;\n      width: 100%;\n      margin: 1em 0;\n    }\n    .docx-wrapper table td {\n      border: 1px solid #ddd;\n      padding: 8px;\n    }\n    .error {\n      color: red;\n    }\n  `;\n\n    if (loading) {\n        return <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <LoadingIcon />\n        </div>\n    }\n\n    return (\n        <div className=\"border rounded-lg overflow-hidden bg-white\">\n            {/* 注入自定义样式 */}\n            <style dangerouslySetInnerHTML={{ __html: docxStyles }} />\n\n            {/* 渲染转换后的 HTML */}\n            <div\n                ref={previewRef}\n                className=\"docx-wrapper h-full p-4\"\n                dangerouslySetInnerHTML={{ __html: htmlContent }}\n            />\n\n            {/* 错误提示 */}\n            {error && (\n                <div className=\"p-4 bg-red-50 text-red-600\">\n                    Preview failed: {error}. <a href={filePath} download className=\"underline\">Download original file</a>\n                </div>\n            )}\n        </div>\n    );\n};\n\nexport default DocxPreview;"
  },
  {
    "path": "src/frontend/client/src/components/PreviewFile/FileView.tsx",
    "content": "import throttle from 'lodash/throttle';\nimport * as pdfjsLib from 'pdfjs-dist';\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FixedSizeList as List, areEqual } from 'react-window';\nimport { LoadingIcon } from '../ui/icon/Loading';\n\n// A4 比例(itemSize：item的高度)\n// 595.32 * 841.92 采用宽高比0.70约束\nlet pageScale = 0.7\nlet pdfPageCache = {}\n\ninterface RowProps {\n    drawfont: boolean\n    index: number\n    style: any\n    size: number\n    labels?: { id: string, label: number[], active: boolean }[]\n    pdf: any\n    onLoad: (w: number) => void\n    onSelectLabel: (data: { id: string, active: boolean }) => void\n}\n// 绘制一页pdf\nconst Row = React.memo(({ drawfont, index, style, size, labels, pdf, onLoad, onSelectLabel }: RowProps) => {\n    const wrapRef = useRef(null);\n    const txtRef = useRef(null);\n    const annotRef = useRef(null);\n    // 绘制\n    const [scaleState, setScaleState] = useState(1)\n    // 清晰度倍数\n    const clarity = 2.5;\n    const draw = async () => {\n        const page = pdfPageCache[index + 1] || await pdf.getPage(index + 1);\n        pdfPageCache[index + 1] = page\n        const viewport = page.getViewport({ scale: clarity });\n        const scale = size / viewport.width;\n        const canvas = document.createElement('canvas')\n        const context = canvas.getContext('2d')\n        const outputScale = window.devicePixelRatio || 1;\n        canvas.width = Math.floor(viewport.width);\n        canvas.height = Math.floor(viewport.height);\n        canvas.style.width = size + \"px\";\n        canvas.style.height = Math.floor(viewport.height * scale) + \"px\";\n        wrapRef.current.append(canvas)\n        const transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale,\n            0, 0\n        ] : null;\n\n        const baseViewport = page.getViewport({ scale: 1 });\n        const baseScale = size / baseViewport.width;\n        setScaleState(baseScale)\n        onLoad?.(baseViewport.width)\n\n        // 渲染批注层\n        await renderAnnotations(page, baseScale);\n        // 渲染页面\n        page.render({\n            canvasContext: context,\n            viewport: page.getViewport({ scale: clarity }),\n            // transform\n        });\n        // 渲染文本层（如果需要）\n        { drawfont && drawText(page, page.getViewport({ baseScale })) }\n    }\n\n    const drawText = async (page, viewport) => {\n        page.getTextContent().then(function (textContent) {\n            return pdfjsLib.renderTextLayer({\n                textContentSource: textContent,\n                container: txtRef.current,\n                viewport: viewport,\n                textDivs: []\n            });\n        })\n    }\n\n    const renderAnnotations = async (page, scale) => {\n        // 创建注释层实例\n        // const annotationLayer = new pdfjsLib.AnnotationLayer({\n        //     div: annotRef.current,\n        //     accessibilityManager: null,\n        //     annotationCanvasMap: new Map(),\n        //     l10n: {\n        //         async translate(element: HTMLElement) {\n        //             return Promise.resolve();\n        //         },\n        //         async get(key: string, args?: any) {\n        //             return Promise.resolve(key);\n        //         }\n        //     },\n        //     page,\n        //     viewport\n        // });\n        // console.log('viewport :>> ', viewport);\n\n        page.getAnnotations().then((annotations) => {\n            const viewport = page.getViewport({ scale: 1 });\n            // 自定义方式处理批注\n            annotations.forEach(annotation => {\n                if (annotation.subtype === 'FreeText') {\n                    const { richText, rect } = annotation\n                    const rootHtml = createElementFromJSON(richText.html);\n                    rootHtml.style.position = 'absolute';\n                    rootHtml.style.left = `${rect[0] * scale}px`;\n                    rootHtml.style.top = `${(viewport.height - rect[3]) * scale - 4}px`;\n                    // rootHtml.style.width = `${rect[2] * scale}px`;\n                    // rootHtml.style.height = `${rect[3] * scale}px`;\n                    rootHtml.style.transform = `scale(${viewport.scale})`;\n                    annotRef.current.appendChild(rootHtml);\n                }\n            });\n            // annotationLayer.render({\n            //     viewport,\n            //     div: annotRef.current,\n            //     annotations,\n            //     page,\n            //     renderForms: true,\n            //     linkService: null,  // 根据需要提供链接服务\n            //     downloadManager: null,  // 下载管理\n            // }).then(() => {\n            //     console.log('Annotation layer rendered.', annotations);\n            // });\n        })\n    };\n\n    useEffect(() => {\n        draw()\n        // return () => {};\n    }, [])\n\n    // 去重\n    const bboxMap = {}\n    const areEqualFn = (bbox) => {\n        if (bboxMap[bbox.join('-')]) {\n            return true\n        } else {\n            bboxMap[bbox.join('-')] = true\n            return false\n        }\n    }\n\n    return <div className=\"bg-[#fff] border-b-2 overflow-hidden\" style={style}>\n        {/* <span className=\"absolute\">{index + 1}</span> */}\n        {/* canvas  */}\n        <div ref={wrapRef} className=\"canvasWrapper\"></div>\n        {/* label */}\n        {labels && <svg className=\"absolute top-0 w-full h-full z-30\">\n            {labels.map(box =>\n                !areEqualFn(box.label) && <rect\n                    key={box.id}\n                    x={box.label[0] * scaleState}\n                    y={box.label[1] * scaleState}\n                    width={(box.label[2] - box.label[0]) * scaleState}\n                    height={(box.label[3] - box.label[1]) * scaleState}\n                    style={box.active ?\n                        { fill: 'rgba(255, 236, 61, 0.2)', strokeWidth: 1, stroke: '#ffec3d', cursor: 'pointer' }\n                        : { fill: 'transparent', strokeWidth: 1, stroke: '#666', strokeDasharray: 4, cursor: 'pointer' }}\n                    onClick={() => onSelectLabel({ id: box.id, active: !box.active })}\n                />\n            )}\n        </svg>}\n        {/* text  */}\n        <div ref={txtRef} className=\"textLayer absolute inset-0 overflow-hidden opacity-25 origin-top-left z-20 leading-none\"></div>\n        {/* annotaions */}\n        <div ref={annotRef} className='absolute inset-0 overflow-hidden origin-top-left z-20'></div>\n    </div>\n}, areEqual)\n\n// 拖拽面板\nconst DragPanne = ({ onMouseEnd }) => {\n    const [isDragging, setIsDragging] = useState(false);\n    const [startPos, setStartPos] = useState({ x: 0, y: 0 });\n    const [currentPos, setCurrentPos] = useState({ x: 0, y: 0 });\n    // const [isShiftPressed, setIsShiftPressed] = useState(false);\n    const boxRef = useRef(null);\n\n    useEffect(() => {\n        const handleMouseDown = (e) => {\n            const rect = boxRef.current.getBoundingClientRect();\n            setIsDragging(true);\n            setStartPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n            setCurrentPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n        };\n\n        const handleMouseMove = (e) => {\n            if (isDragging) {\n                const rect = boxRef.current.getBoundingClientRect();\n                setCurrentPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n            }\n        };\n\n        const handleMouseUp = () => {\n            if (isDragging) {\n                setIsDragging(false);\n                onMouseEnd(startPos, currentPos)\n                // console.log('Selection coordinates:', {\n                //     topLeft: startPos,\n                //     bottomRight: currentPos,\n                // });\n            }\n        };\n\n        window.addEventListener('mousedown', handleMouseDown);\n        window.addEventListener('mousemove', handleMouseMove);\n        window.addEventListener('mouseup', handleMouseUp);\n\n        return () => {\n            window.removeEventListener('mousedown', handleMouseDown);\n            window.removeEventListener('mousemove', handleMouseMove);\n            window.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, [isDragging, startPos, currentPos, onMouseEnd]);\n\n    return (\n        <div\n            ref={boxRef}\n            className=\"absolute inset-x-2 inset-y-4 overflow-hidden z-10\"\n            style={{ pointerEvents: 'none' }}\n        >\n            {isDragging && (\n                <div\n                    className=\"absolute border-2 border-blue-500 bg-blue-100 bg-opacity-25\"\n                    style={{\n                        opacity: Math.abs(currentPos.x - startPos.x) + Math.abs(currentPos.y - startPos.y) > 2 ? 1 : 0,\n                        left: Math.min(startPos.x, currentPos.x),\n                        top: Math.min(startPos.y, currentPos.y),\n                        width: Math.abs(currentPos.x - startPos.x),\n                        height: Math.abs(currentPos.y - startPos.y),\n                    }}\n                />\n            )}\n        </div>\n    );\n};\nexport default function FileView({\n    startIndex = 1,\n    drawfont = false,\n    select = false,\n    scrollTo,\n    fileUrl,\n    labels,\n    onPageChange = (offset, h, paperSize, scale) => { },\n    onSelectLabel = () => { }\n}) {\n    const paneRef = useRef(null)\n    const listRef = useRef(null)\n    const [boxSize, setBoxSize] = useState({ width: 0, height: 0 })\n    const [loading, setLoading] = useState(false)\n    const [notFound, setNotFound] = useState(false)\n\n    // 视口\n    useEffect(() => {\n        const panneDom = paneRef.current;\n\n        const throttledResizeHandler = throttle(entries => {\n            if (panneDom) {\n                for (let entry of entries) {\n                    const [width, height] = [entry.contentRect.width, entry.contentRect.height];\n                    setBoxSize({ width, height });\n                    const warpDom = document.getElementById('warp-pdf');\n                    warpDom.style.setProperty(\"--scale-factor\", width / fileWidthRef.current + '');\n                }\n            }\n        }, 300);\n\n        const resizeObserver = new ResizeObserver(throttledResizeHandler);\n\n        if (panneDom) {\n            resizeObserver.observe(panneDom);\n        }\n\n        return () => resizeObserver.unobserve(panneDom)\n    }, []);\n    // 加载文件\n    const [pdf, setPdf] = useState(null)\n    useEffect(() => {\n        // loding\n        setLoading(true)\n\n        // sass环境使用sass地址\n        const pdfUrl = fileUrl.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL);  // '/doc.pdf';\n        pdfjsLib.GlobalWorkerOptions.workerSrc = __APP_ENV__.BASE_URL + '/pdf.worker.min.js';\n        pdfjsLib.getDocument(pdfUrl).promise.then(async (pdfDocument) => {\n            pdfPageCache = {}\n            const page = pdfPageCache[1] || await pdfDocument.getPage(1);\n            pdfPageCache[1] = page\n\n            const viewport = page.getViewport({ scale: 1 });\n            // 计算是否A4纸\n            pageScale = Math.min(pageScale, viewport.width / viewport.height)\n            setPdf(pdfDocument)\n            setLoading(false)\n            setNotFound(false)\n        }).catch(e => {\n            console.log('e :>> ', e);\n            setNotFound(true)\n        })\n    }, [fileUrl])\n\n    const scrollToFunc = (() => {\n        const pageY = (scrollTo[0] - startIndex) * (boxSize.width / pageScale)\n        const offsetY = scrollTo[1] * (boxSize.width / fileWidthRef.current) - 100\n        listRef.current.scrollTo(pageY + offsetY);\n    })\n    useEffect(() => {\n        listRef.current && scrollToFunc()\n    }, [scrollTo])\n\n    const fileWidthRef = useRef(1)\n    const loadedRef = useRef(false)\n    const handleLoadPage = (w: number) => {\n        // 文档宽度变化时 初始化样式、宽度、定位等信息\n        if (loadedRef.current) return\n        // if (Math.abs(fileWidthRef.current - w) < 1) return\n        const warpDom = document.getElementById('warp-pdf')\n        warpDom.style.setProperty(\"--scale-factor\", boxSize.width / w + '')\n        fileWidthRef.current = w\n        loadedRef.current = true\n        scrollToFunc()\n    }\n\n    const scrollOffsetRef = useRef(0)\n    const hanleDragSelectLabel = useCallback((start, end) => {\n        let { x, y } = start\n        let { x: x1, y: y1 } = end\n        const scale = fileWidthRef.current / boxSize.width\n        const scroll = scrollOffsetRef.current\n        x *= scale\n        y = (y + scroll) * scale\n        x1 *= scale\n        y1 = (y1 + scroll) * scale\n\n        const selects = []\n        Object.keys(labels).forEach(key => {\n            const pagelabels = labels[key]\n            pagelabels.forEach(item => {\n                const [sx, sy, ex, ey] = item.label\n                const pageH = (key - startIndex) * (boxSize.width / pageScale * scale)\n                if (x <= sx && y <= sy + pageH && x1 >= ex && y1 >= ey + pageH) {\n                    console.log('item.id :>> ', item.id);\n                    selects.push({ id: item.id, active: !item.active })\n                }\n            })\n        })\n        selects.length && onSelectLabel(selects)\n    }, [boxSize, labels])\n\n    const handleScroll = ({ scrollOffset }) => {\n        scrollOffsetRef.current = scrollOffset\n        onPageChange?.(scrollOffset, boxSize.height, boxSize.width / pageScale, fileWidthRef.current / boxSize.width)\n        // console.log('object :>> ', scrollOffset, boxSize.height, boxSize.width / 0.7);\n    }\n\n    const itemRenderer = useCallback((props) => <Row\n        {...props}\n        key={props.index}\n        drawfont={drawfont}\n        pdf={pdf}\n        size={boxSize.width}\n        labels={labels[props.index + startIndex]}\n        onLoad={handleLoadPage}\n        onSelectLabel={val => select && onSelectLabel([val])}\n    ></Row>, [pdf, drawfont, select, labels, boxSize]);\n\n    return <div ref={paneRef} className=\"flex-1 h-full bg-gray-100 rounded-md py-4 px-2 relative\"\n        onContextMenu={(e) => e.preventDefault()}\n    >\n        {\n            notFound\n                ? <div className=\"flex h-full items-center justify-center text-gray-500 dark:text-gray-400 text-lg\">源文件不存在</div> :\n                loading\n                    ? <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                        <LoadingIcon />\n                    </div>\n                    : <div id=\"warp-pdf\" className=\"file-view absolute\">\n                        <List\n                            ref={listRef}\n                            itemCount={pdf?.numPages || 100}\n                            itemSize={boxSize.width / pageScale}\n                            // 滚动区盒子大小\n                            width={boxSize.width}\n                            height={boxSize.height}\n                            onScroll={handleScroll}\n                        >\n                            {itemRenderer}\n                        </List>\n                    </div>\n        }\n        {select && <DragPanne onMouseEnd={hanleDragSelectLabel} />}\n    </div>\n};\n\n/**\n * 根据给定的 JSON 结构创建 HTML 元素\n * @param {Object} node - JSON 节点\n * @returns {HTMLElement} - 创建的 HTML 元素\n */\nfunction createElementFromJSON(node) {\n    if (!node || !node.name) return null;\n\n    // 创建元素\n    const element = document.createElement(node.name);\n\n    // 设置属性\n    if (node.attributes) {\n        for (const [attr, value] of Object.entries(node.attributes)) {\n            if (attr === 'style' && typeof value === 'object') {\n                for (const [styleName, styleValue] of Object.entries(value)) {\n                    // 将驼峰式属性名转换为CSS属性名\n                    const cssProperty = styleName.replace(/([A-Z])/g, '-$1').toLowerCase();\n                    element.style[cssProperty] = styleValue;\n                }\n            } else if (attr === 'class' && Array.isArray(value)) {\n                element.classList.add(...value);\n            } else if (attr !== 'value') { // 确保 'value' 不是一个属性\n                if (value !== undefined && value !== null) { // 避免设置 undefined 或 null\n                    element.setAttribute(attr, value);\n                }\n            }\n        }\n    }\n\n    // 添加子元素或文本内容\n    if (node.children && Array.isArray(node.children)) {\n        node.children.forEach(child => {\n            const childElement = createElementFromJSON(child);\n            if (childElement) {\n                element.appendChild(childElement);\n            }\n        });\n    }\n\n    // 如果存在文本值，将其作为文本节点添加\n    if (node.value && typeof node.value === 'string') {\n        const textNode = document.createTextNode(node.value);\n        element.appendChild(textNode);\n    }\n\n    return element;\n}"
  },
  {
    "path": "src/frontend/client/src/components/PreviewFile/TxtFileViewer.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport Markdown from '../Chat/Messages/Content/Markdown';\n\nconst TxtFileViewer = ({ html = false, markdown = false, filePath }) => {\n    const [content, setContent] = useState('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n\n    useEffect(() => {\n        const fetchTextFile = async () => {\n            try {\n                setLoading(true);\n                const response = await fetch(filePath.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL));\n\n                if (!response.ok) {\n                    throw new Error(`Failed to fetch file: ${response.status} ${response.statusText}`);\n                }\n\n                const text = await response.text();\n                setContent(text);\n                setError(null);\n            } catch (err) {\n                setError(err.message);\n                setContent('');\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchTextFile();\n    }, [filePath]);\n\n    if (loading) {\n        return (\n            <div className=\"p-4 text-sm text-gray-500\">\n                Loading text file...\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"p-4 text-sm text-red-500\">\n                Error loading file: {error}\n            </div>\n        );\n    }\n\n    if (markdown) return <div className='bs-mkdown'>\n        <Markdown content={content} isLatestMessage={false} webContent={undefined} />\n    </div>\n\n    if (html) return <iframe\n        className=\"w-full h-full border\"\n        srcDoc={content}  // 使用srcdoc直接嵌入HTML内容\n        sandbox=\"allow-scripts\"\n    />\n\n    return (\n        <div className=\"p-4 text-sm whitespace-pre-wrap bg-gray-50 rounded border border-gray-200 h-full overflow-y-auto\">\n            {content || <span className=\"text-gray-400\">(Empty file)</span>}\n        </div>\n    );\n};\n\nexport default TxtFileViewer;"
  },
  {
    "path": "src/frontend/client/src/components/PreviewFile/index.tsx",
    "content": "\nimport React, { useMemo, useState } from \"react\";\nimport { generateUUID } from \"~/utils\";\nimport DocxPreview from \"./DocxFileViewer\";\nimport FileView from \"./FileView\";\nimport TxtFileViewer from \"./TxtFileViewer\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\nexport default function FileViewPanne({ file }) {\n    const t = useLocalize()\n    const MemoizedFileView = React.memo(FileView);\n    const [postion, setPositon] = useState(null)\n    const [currentIndex, setCurrentIndex] = useState(0)\n    const [showP, setShowP] = useState(true) // 展示来源段落menu\n\n    const labels = useMemo(() => {\n        const map = {}\n        if (!file.chunks[0].box?.[0]) {\n            setPositon([0, 0])\n            setShowP(false)\n            return map\n        } else {\n            setShowP(true)\n        }\n        file.chunks.forEach(chunk => {\n            chunk.box.forEach(el => {\n                if (!map[el.page]) {\n                    map[el.page] = []\n                }\n                map[el.page].push({ id: generateUUID(8), label: el.bbox, active: true, txt: '' })\n            })\n        })\n        console.log('file.chunks[0].box[0].page :>> ', file.chunks);\n        setPositon([file.chunks[0].box[0].page, file.chunks[0].box[0].bbox[1] || 0])\n        setCurrentIndex(0)\n        return map\n    }, [file.chunks])\n\n    const handleJump = (i: number, chunk: typeof file.chunks[number]) => {\n        setCurrentIndex(i)\n        //postion: [page, label[1] + random] : null\n        const random = Math.random() / 100 // 随机偏移量\n        setPositon([chunk.box[0].page, chunk.box[0].bbox[1] || 0 + random])\n    }\n\n    const fileView = () => {\n        const previewFileUrl = file.fileUrl\n        if (!file.isNew) {\n            if (file.suffix === 'pdf' || file.parse_type === 'uns') {\n                return previewFileUrl && <MemoizedFileView scrollTo={postion} fileUrl={file.fileUrl} labels={labels} />\n            } else {\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">{t('com_preview_old_version_unsupported')}</div>\n            }\n        }\n        switch (file.suffix) {\n            case 'ppt':\n            case 'pptx':\n            case 'pdf':\n                return previewFileUrl && <MemoizedFileView startIndex={0} scrollTo={postion} fileUrl={file.fileUrl} labels={labels} />\n            case 'csv': return <TxtFileViewer filePath={previewFileUrl} />\n            case 'txt': return <TxtFileViewer filePath={previewFileUrl} />\n            case 'md': return <TxtFileViewer markdown filePath={previewFileUrl} />\n            case 'html': return <TxtFileViewer html filePath={previewFileUrl} />\n            case 'doc':\n            case 'docx': return <DocxPreview filePath={previewFileUrl} />\n            case 'png':\n            case 'jpg':\n            case 'jpeg':\n            case 'bmp': return <img\n                className=\"border\"\n                src={previewFileUrl.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)} alt=\"\" />\n            default:\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">{t('com_preview_type_unsupported')}</div>\n        }\n    }\n\n    return <div className=\"flex-1 bg-gray-100 rounded-md py-4 px-2 relative\" onContextMenu={(e) => e.preventDefault()}>\n        <div className=\"h-full overflow-auto\">\n            {fileView()}\n        </div>\n        {/* chunk menu */}\n        {showP && <div className=\"absolute left-[0px] rounded-sm p-4 px-0 top-[50%] translate-y-[-50%] max-2xl:scale-75 origin-top-left\">\n            <p className=\"mb-1 text-sm font-bold text-center rounded-sm bg-[rgb(186,210,249)] text-blue-600\">{t('com_preview_source_paragraph')}</p>\n            <div className=\"flex flex-col gap-2 \">\n                {file.chunks.map((chunk, i) =>\n                    <div key={i}\n                        onClick={() => handleJump(i, chunk)}\n                        className={`flag h-[38px] leading-[38px] px-6 pl-4 border-2 border-l-0 border-r-0 border-[rgba(53,126,249,.60)] bg-[rgba(255,255,255,0.2)]  text-blue-600 ${currentIndex === i && 'font-bold active'} cursor-pointer relative`}\n                    >\n                        <span>{chunk.score}</span>\n                    </div>\n                )}\n            </div>\n        </div>}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/AdminSettings.tsx",
    "content": "import * as Ariakit from '@ariakit/react';\nimport { ExternalLink } from 'lucide-react';\nimport { useMemo, useEffect, useState } from 'react';\nimport { ShieldEllipsis } from 'lucide-react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { Permissions, SystemRoles, roleDefaults, PermissionTypes } from '~/data-provider/data-provider/src';\nimport type { Control, UseFormSetValue, UseFormGetValues } from 'react-hook-form';\nimport {\n  OGDialog,\n  OGDialogTitle,\n  OGDialogContent,\n  OGDialogTrigger,\n  Button,\n  Switch,\n  DropdownPopup,\n} from '~/components/ui';\nimport { useUpdatePromptPermissionsMutation } from '~/data-provider';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useAuthContext } from '~/hooks';\nimport { useToastContext } from '~/Providers';\n\ntype FormValues = Record<Permissions, boolean>;\n\ntype LabelControllerProps = {\n  label: string;\n  promptPerm: Permissions;\n  control: Control<FormValues, unknown, FormValues>;\n  setValue: UseFormSetValue<FormValues>;\n  getValues: UseFormGetValues<FormValues>;\n  confirmChange?: (newValue: boolean, onChange: (value: boolean) => void) => void;\n};\n\nconst LabelController: React.FC<LabelControllerProps> = ({\n  control,\n  promptPerm,\n  label,\n  confirmChange,\n}) => (\n  <div className=\"mb-4 flex items-center justify-between gap-2\">\n    {label}\n    <Controller\n      name={promptPerm}\n      control={control}\n      render={({ field }) => (\n        <Switch\n          {...field}\n          checked={field.value}\n          onCheckedChange={(val) => {\n            if (val === false && confirmChange) {\n              confirmChange(val, field.onChange);\n            } else {\n              field.onChange(val);\n            }\n          }}\n          value={field.value.toString()}\n        />\n      )}\n    />\n  </div>\n);\n\nconst AdminSettings = () => {\n  const localize = useLocalize();\n  const { user, roles } = useAuthContext();\n  const { showToast } = useToastContext();\n  const [confirmAdminUseChange, setConfirmAdminUseChange] = useState<{\n    newValue: boolean;\n    callback: (value: boolean) => void;\n      } | null>(null);\n  const { mutate, isLoading } = useUpdatePromptPermissionsMutation({\n    onSuccess: () => {\n      showToast({ status: 'success', message: localize('com_ui_saved') });\n    },\n    onError: () => {\n      showToast({ status: 'error', message: localize('com_ui_error_save_admin_settings') });\n    },\n  });\n\n  const [isRoleMenuOpen, setIsRoleMenuOpen] = useState(false);\n  const [selectedRole, setSelectedRole] = useState<SystemRoles>(SystemRoles.USER);\n\n  const defaultValues = useMemo(() => {\n    if (roles?.[selectedRole]) {\n      return roles[selectedRole][PermissionTypes.PROMPTS];\n    }\n    return roleDefaults[selectedRole][PermissionTypes.PROMPTS];\n  }, [roles, selectedRole]);\n\n  const {\n    reset,\n    control,\n    setValue,\n    getValues,\n    handleSubmit,\n    formState: { isSubmitting },\n  } = useForm<FormValues>({\n    mode: 'onChange',\n    defaultValues,\n  });\n\n  useEffect(() => {\n    if (roles?.[selectedRole]?.[PermissionTypes.PROMPTS]) {\n      reset(roles[selectedRole][PermissionTypes.PROMPTS]);\n    } else {\n      reset(roleDefaults[selectedRole][PermissionTypes.PROMPTS]);\n    }\n  }, [roles, selectedRole, reset]);\n\n  if (user?.role !== SystemRoles.ADMIN) {\n    return null;\n  }\n\n  const labelControllerData = [\n    {\n      promptPerm: Permissions.SHARED_GLOBAL,\n      label: localize('com_ui_prompts_allow_share_global'),\n    },\n    {\n      promptPerm: Permissions.CREATE,\n      label: localize('com_ui_prompts_allow_create'),\n    },\n    {\n      promptPerm: Permissions.USE,\n      label: localize('com_ui_prompts_allow_use'),\n    },\n  ];\n\n  const onSubmit = (data: FormValues) => {\n    mutate({ roleName: selectedRole, updates: data });\n  };\n\n  const roleDropdownItems = [\n    {\n      label: SystemRoles.USER,\n      onClick: () => {\n        setSelectedRole(SystemRoles.USER);\n      },\n    },\n    {\n      label: SystemRoles.ADMIN,\n      onClick: () => {\n        setSelectedRole(SystemRoles.ADMIN);\n      },\n    },\n  ];\n\n  return (\n    <>\n      <OGDialog>\n        <OGDialogTrigger asChild>\n          <Button\n            size=\"sm\"\n            variant=\"outline\"\n            className=\"mr-2 h-10 w-fit gap-1 border transition-all dark:bg-transparent dark:hover:bg-surface-tertiary sm:m-0\"\n          >\n            <ShieldEllipsis className=\"cursor-pointer\" aria-hidden=\"true\" />\n            <span className=\"hidden sm:flex\">{localize('com_ui_admin')}</span>\n          </Button>\n        </OGDialogTrigger>\n        <OGDialogContent className=\"w-11/12 max-w-lg border-border-light bg-surface-primary text-text-primary\">\n          <OGDialogTitle>\n            {`${localize('com_ui_admin_settings')} - ${localize('com_ui_prompts')}`}\n          </OGDialogTitle>\n          <div className=\"p-2\">\n            {/* Role selection dropdown */}\n            <div className=\"flex items-center gap-2\">\n              <span className=\"font-medium\">{localize('com_ui_role_select')}:</span>\n              <DropdownPopup\n                menuId=\"prompt-role-dropdown\"\n                isOpen={isRoleMenuOpen}\n                setIsOpen={setIsRoleMenuOpen}\n                trigger={\n                  <Ariakit.MenuButton className=\"inline-flex w-1/5 items-center justify-center rounded-lg border border-border-light bg-transparent px-2 py-1 text-text-primary transition-all ease-in-out hover:bg-surface-tertiary\">\n                    {selectedRole}\n                  </Ariakit.MenuButton>\n                }\n                items={roleDropdownItems}\n                itemClassName=\"items-center justify-center\"\n                sameWidth={true}\n              />\n            </div>\n            <form onSubmit={handleSubmit(onSubmit)}>\n              <div className=\"py-5\">\n                {labelControllerData.map(({ promptPerm, label }) => (\n                  <div key={promptPerm}>\n                    <LabelController\n                      control={control}\n                      promptPerm={promptPerm}\n                      label={label}\n                      getValues={getValues}\n                      setValue={setValue}\n                      {...(selectedRole === SystemRoles.ADMIN && promptPerm === Permissions.USE\n                        ? {\n                          confirmChange: (\n                            newValue: boolean,\n                            onChange: (value: boolean) => void,\n                          ) => setConfirmAdminUseChange({ newValue, callback: onChange }),\n                        }\n                        : {})}\n                    />\n                    {selectedRole === SystemRoles.ADMIN && promptPerm === Permissions.USE && (\n                      <>\n                        <div className=\"mb-2 max-w-full whitespace-normal break-words text-sm text-red-600\">\n                          <span>{localize('com_ui_admin_access_warning')}</span>\n                          {'\\n'}\n                          <a\n                            href=\"https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/interface\"\n                            target=\"_blank\"\n                            rel=\"noreferrer\"\n                            className=\"inline-flex items-center text-blue-500 underline\"\n                          >\n                            {localize('com_ui_more_info')}\n                            <ExternalLink size={16} className=\"ml-1\" />\n                          </a>\n                        </div>\n                      </>\n                    )}\n                  </div>\n                ))}\n              </div>\n              <div className=\"flex justify-end\">\n                <Button type=\"submit\" disabled={isSubmitting || isLoading} variant=\"submit\">\n                  {localize('com_ui_save')}\n                </Button>\n              </div>\n            </form>\n          </div>\n        </OGDialogContent>\n      </OGDialog>\n\n      <OGDialog\n        open={confirmAdminUseChange !== null}\n        onOpenChange={(open) => {\n          if (!open) {\n            setConfirmAdminUseChange(null);\n          }\n        }}\n      >\n        <OGDialogTemplate\n          showCloseButton={true}\n          title={localize('com_ui_confirm_change')}\n          className=\"w-11/12 max-w-lg\"\n          main={<p className=\"mb-4\">{localize('com_ui_confirm_admin_use_change')}</p>}\n          selection={{\n            selectHandler: () => {\n              if (confirmAdminUseChange) {\n                confirmAdminUseChange.callback(confirmAdminUseChange.newValue);\n              }\n              setConfirmAdminUseChange(null);\n            },\n            selectClasses:\n              'bg-surface-destructive hover:bg-surface-destructive-hover text-white transition-colors duration-200',\n            selectText: localize('com_ui_confirm_action'),\n            isLoading: false,\n          }}\n        />\n      </OGDialog>\n    </>\n  );\n};\n\nexport default AdminSettings;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/AdvancedSwitch.tsx",
    "content": "import { useRecoilState, useSetRecoilState } from 'recoil';\nimport { PromptsEditorMode } from '~/common';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nconst { promptsEditorMode, alwaysMakeProd } = store;\n\nconst AdvancedSwitch = () => {\n  const localize = useLocalize();\n  const [mode, setMode] = useRecoilState(promptsEditorMode);\n  const setAlwaysMakeProd = useSetRecoilState(alwaysMakeProd);\n\n  return (\n    <div className=\"relative flex h-10 items-center justify-center rounded-xl border border-border-light bg-surface-primary transition-all duration-300\">\n      <div className=\"relative flex w-48 items-stretch md:w-64\">\n        <div\n          className=\"absolute rounded-lg bg-surface-hover shadow-lg transition-all duration-300 ease-in-out\"\n          style={{\n            top: '1px',\n            left: mode === PromptsEditorMode.SIMPLE ? '2px' : 'calc(50% + 2px)',\n            width: 'calc(50% - 4px)',\n            height: 'calc(100% - 2px)',\n          }}\n        />\n\n        {/* Simple Mode Button */}\n        <button\n          type=\"button\"\n          onClick={() => {\n            setAlwaysMakeProd(true);\n            setMode(PromptsEditorMode.SIMPLE);\n          }}\n          className={`relative z-10 flex-1 rounded-xl px-3 py-2 text-sm font-medium transition-all duration-300 md:px-6 ${\n            mode === PromptsEditorMode.SIMPLE\n              ? 'text-text-primary'\n              : 'text-text-secondary hover:text-text-primary'\n          }`}\n        >\n          <span className=\"relative\">{localize('com_ui_simple')}</span>\n        </button>\n\n        {/* Advanced Mode Button */}\n        <button\n          type=\"button\"\n          onClick={() => setMode(PromptsEditorMode.ADVANCED)}\n          className={`relative z-10 flex-1 rounded-xl px-3 py-2 text-sm font-medium transition-all duration-300 md:px-6 ${\n            mode === PromptsEditorMode.ADVANCED\n              ? 'text-text-primary'\n              : 'text-text-secondary hover:text-text-primary'\n          }`}\n        >\n          <span className=\"relative\">{localize('com_ui_advanced')}</span>\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default AdvancedSwitch;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/BackToChat.tsx",
    "content": "import { useNavigate } from 'react-router-dom';\nimport { ArrowLeft } from 'lucide-react';\nimport { buttonVariants } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function BackToChat({ className }: { className?: string }) {\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const clickHandler = (event: React.MouseEvent<HTMLAnchorElement>) => {\n    if (event.button === 0 && !(event.ctrlKey || event.metaKey)) {\n      event.preventDefault();\n      navigate('/c/new');\n    }\n  };\n  return (\n    <a\n      className={cn(buttonVariants({ variant: 'outline' }), className)}\n      href=\"/\"\n      onClick={clickHandler}\n    >\n      <ArrowLeft className=\"icon-xs mr-2\" />\n      {localize('com_ui_back_to_chat')}\n    </a>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Command.tsx",
    "content": "import { SquareSlash } from 'lucide-react';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useState, useEffect } from 'react';\nimport { Input } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nconst Command = ({\n  initialValue,\n  onValueChange,\n  disabled,\n  tabIndex,\n}: {\n  initialValue?: string;\n  onValueChange?: (value: string) => void;\n  disabled?: boolean;\n  tabIndex?: number;\n}) => {\n  const localize = useLocalize();\n  const [command, setCommand] = useState(initialValue || '');\n  const [charCount, setCharCount] = useState(initialValue?.length || 0);\n\n  useEffect(() => {\n    setCommand(initialValue || '');\n    setCharCount(initialValue?.length || 0);\n  }, [initialValue]);\n\n  useEffect(() => {\n    setCharCount(command.length);\n  }, [command]);\n\n  const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n    let newValue = e.target.value.toLowerCase();\n\n    newValue = newValue.replace(/\\s/g, '-').replace(/[^a-z0-9-]/g, '');\n\n    if (newValue.length <= Constants.COMMANDS_MAX_LENGTH) {\n      setCommand(newValue);\n      onValueChange?.(newValue);\n    }\n  };\n\n  if (disabled === true && !command) {\n    return null;\n  }\n\n  return (\n    <div className=\"rounded-xl border border-border-light shadow-md\">\n      <h3 className=\"flex h-10 items-center gap-1 pl-4 text-sm text-text-secondary\">\n        <SquareSlash className=\"icon-sm\" aria-hidden=\"true\" />\n        <Input\n          type=\"text\"\n          tabIndex={tabIndex}\n          disabled={disabled}\n          placeholder={localize('com_ui_command_placeholder')}\n          value={command}\n          onChange={handleInputChange}\n          className=\"border-none\"\n        />\n        {disabled !== true && (\n          <span className=\"mr-4 w-10 text-xs text-text-secondary md:text-sm\">{`${charCount}/${Constants.COMMANDS_MAX_LENGTH}`}</span>\n        )}\n      </h3>\n    </div>\n  );\n};\n\nexport default Command;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/DeleteVersion.tsx",
    "content": "import { Trash2 } from 'lucide-react';\nimport { Button, OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize } from '~/hooks';\n\nconst DeleteVersion = ({\n  name,\n  disabled,\n  selectHandler,\n}: {\n  name: string;\n  disabled?: boolean;\n  selectHandler: () => void;\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <OGDialog>\n      <OGDialogTrigger asChild>\n        <Button\n          variant=\"destructive\"\n          size=\"sm\"\n          aria-label=\"Delete version\"\n          className=\"h-10 w-10 p-0.5\"\n          disabled={disabled}\n          onClick={(e) => {\n            e.stopPropagation();\n          }}\n        >\n          <Trash2 className=\"size-5 cursor-pointer text-white\" />\n        </Button>\n      </OGDialogTrigger>\n      <OGDialogTemplate\n        showCloseButton={false}\n        title={localize('com_ui_delete_prompt')}\n        className=\"max-w-[450px]\"\n        main={\n          <>\n            <div className=\"flex w-full flex-col items-center gap-2\">\n              <div className=\"grid w-full items-center gap-2\">\n                <Label\n                  htmlFor=\"dialog-delete-confirm-prompt\"\n                  className=\"text-left text-sm font-medium\"\n                >\n                  {localize('com_ui_delete_confirm_prompt_version_var', { 0: name })}\n                </Label>\n              </div>\n            </div>\n          </>\n        }\n        selection={{\n          selectHandler,\n          selectClasses:\n            'bg-surface-destructive hover:bg-surface-destructive-hover transition-colors duration-200 text-white',\n          selectText: localize('com_ui_delete'),\n        }}\n      />\n    </OGDialog>\n  );\n};\n\nexport default DeleteVersion;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Description.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { Input } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { Info } from 'lucide-react';\n\nconst MAX_LENGTH = 120;\n\nconst Description = ({\n  initialValue,\n  onValueChange,\n  disabled,\n  tabIndex,\n}: {\n  initialValue?: string;\n  onValueChange?: (value: string) => void;\n  disabled?: boolean;\n  tabIndex?: number;\n}) => {\n  const localize = useLocalize();\n  const [description, setDescription] = useState(initialValue || '');\n  const [charCount, setCharCount] = useState(initialValue?.length || 0);\n\n  useEffect(() => {\n    setDescription(initialValue || '');\n    setCharCount(initialValue?.length || 0);\n  }, [initialValue]);\n\n  useEffect(() => {\n    setCharCount(description.length);\n  }, [description]);\n\n  const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n    if (e.target.value.length <= MAX_LENGTH) {\n      setDescription(e.target.value);\n      onValueChange?.(e.target.value);\n    }\n  };\n\n  if (disabled && !description) {\n    return null;\n  }\n\n  return (\n    <div className=\"rounded-xl border border-border-light shadow-md\">\n      <h3 className=\"flex h-10 items-center gap-1 pl-4 text-sm text-text-secondary\">\n        <Info className=\"icon-sm\" aria-hidden=\"true\" />\n        <Input\n          type=\"text\"\n          tabIndex={tabIndex}\n          disabled={disabled}\n          placeholder={localize('com_ui_description_placeholder')}\n          value={description}\n          onChange={handleInputChange}\n          className=\"border-none\"\n        />\n        {!disabled && (\n          <span className=\"mr-4 w-10 text-xs text-text-secondary md:text-sm\">{`${charCount}/${MAX_LENGTH}`}</span>\n        )}\n      </h3>\n    </div>\n  );\n};\n\nexport default Description;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/EmptyPromptPreview.tsx",
    "content": "import React from 'react';\n\nexport default function EmptyPromptPreview() {\n  return (\n    <div className=\"h-full w-full content-center text-center font-bold dark:text-gray-200\">\n      Select or Create a Prompt\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/AlwaysMakeProd.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function AlwaysMakeProd({\n  onCheckedChange,\n  className = '',\n}: {\n  onCheckedChange?: (value: boolean) => void;\n  className?: string;\n}) {\n  const [alwaysMakeProd, setAlwaysMakeProd] = useRecoilState<boolean>(store.alwaysMakeProd);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setAlwaysMakeProd(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div className={cn('flex select-none items-center justify-end gap-2 text-xs', className)}>\n      <Switch\n        id=\"alwaysMakeProd\"\n        checked={alwaysMakeProd}\n        onCheckedChange={handleCheckedChange}\n        data-testid=\"alwaysMakeProd\"\n        aria-label=\"Always make prompt production\"\n      />\n      <div>{localize('com_nav_always_make_prod')} </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/AutoSendPrompt.tsx",
    "content": "import { useRecoilState } from 'recoil';\nimport { Switch } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function AutoSendPrompt({\n  onCheckedChange,\n  className = '',\n}: {\n  onCheckedChange?: (value: boolean) => void;\n  className?: string;\n}) {\n  const [autoSendPrompts, setAutoSendPrompts] = useRecoilState<boolean>(store.autoSendPrompts);\n  const localize = useLocalize();\n\n  const handleCheckedChange = (value: boolean) => {\n    setAutoSendPrompts(value);\n    if (onCheckedChange) {\n      onCheckedChange(value);\n    }\n  };\n\n  return (\n    <div\n      className={cn(\n        'flex select-none items-center justify-end gap-2 text-right text-sm',\n        className,\n      )}\n    >\n      <div> {localize('com_nav_auto_send_prompts')} </div>\n      <Switch\n        aria-label=\"toggle-auto-send-prompts\"\n        id=\"autoSendPrompts\"\n        checked={autoSendPrompts}\n        onCheckedChange={handleCheckedChange}\n        data-testid=\"autoSendPrompts\"\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/CategoryIcon.tsx",
    "content": "import React from 'react';\nimport {\n  Dices,\n  BoxIcon,\n  PenLineIcon,\n  LightbulbIcon,\n  LineChartIcon,\n  ShoppingBagIcon,\n  PlaneTakeoffIcon,\n  GraduationCapIcon,\n  TerminalSquareIcon,\n} from 'lucide-react';\nimport { cn } from '~/utils';\n\nconst categoryIconMap: Record<string, React.ElementType> = {\n  misc: BoxIcon,\n  roleplay: Dices,\n  write: PenLineIcon,\n  idea: LightbulbIcon,\n  shop: ShoppingBagIcon,\n  finance: LineChartIcon,\n  code: TerminalSquareIcon,\n  travel: PlaneTakeoffIcon,\n  teach_or_explain: GraduationCapIcon,\n};\n\nconst categoryColorMap: Record<string, string> = {\n  code: 'text-red-500',\n  misc: 'text-blue-300',\n  shop: 'text-purple-400',\n  idea: 'text-yellow-300',\n  write: 'text-purple-400',\n  travel: 'text-yellow-300',\n  finance: 'text-orange-400',\n  roleplay: 'text-orange-400',\n  teach_or_explain: 'text-blue-300',\n};\n\nexport default function CategoryIcon({\n  category,\n  className = '',\n}: {\n  category: string;\n  className?: string;\n}) {\n  const IconComponent = categoryIconMap[category];\n  const colorClass = categoryColorMap[category] + ' ' + className;\n  if (!IconComponent) {\n    return null;\n  }\n  return <IconComponent className={cn(colorClass, className)} aria-hidden=\"true\" />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/CategorySelector.tsx",
    "content": "import React, { useMemo } from 'react';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport { LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport { Dropdown } from '~/components/ui';\nimport { useCategories } from '~/hooks';\n\ninterface CategorySelectorProps {\n  currentCategory?: string;\n  onValueChange?: (value: string) => void;\n  className?: string;\n}\n\nconst CategorySelector: React.FC<CategorySelectorProps> = ({\n  currentCategory,\n  onValueChange,\n  className = '',\n}) => {\n  const formContext = useFormContext();\n  const { categories, emptyCategory } = useCategories();\n\n  const control = formContext.control;\n  const watch = formContext.watch;\n  const setValue = formContext.setValue;\n\n  const watchedCategory = watch ? watch('category') : currentCategory;\n\n  const categoryOption = useMemo(\n    () =>\n      (categories ?? []).find(\n        (category) => category.value === (watchedCategory ?? currentCategory),\n      ) ?? emptyCategory,\n    [watchedCategory, categories, currentCategory, emptyCategory],\n  );\n\n  return formContext ? (\n    <Controller\n      name=\"category\"\n      control={control}\n      render={() => (\n        <Dropdown\n          value={categoryOption.value ?? ''}\n          onChange={(value: string) => {\n            setValue('category', value, { shouldDirty: false });\n            localStorage.setItem(LocalStorageKeys.LAST_PROMPT_CATEGORY, value);\n            onValueChange?.(value);\n          }}\n          aria-labelledby=\"category-selector-label\"\n          ariaLabel=\"Prompt's category selector\"\n          className={className}\n          options={categories || []}\n          renderValue={(option) => (\n            <div className=\"flex items-center space-x-2\">\n              {option.icon != null && <span>{option.icon as React.ReactNode}</span>}\n              <span>{option.label}</span>\n            </div>\n          )}\n        />\n      )}\n    />\n  ) : (\n    <Dropdown\n      value={currentCategory ?? ''}\n      onChange={(value: string) => {\n        localStorage.setItem(LocalStorageKeys.LAST_PROMPT_CATEGORY, value);\n        onValueChange?.(value);\n      }}\n      aria-labelledby=\"category-selector-label\"\n      ariaLabel=\"Prompt's category selector\"\n      className={className}\n      options={categories || []}\n      renderValue={(option) => (\n        <div className=\"flex items-center space-x-2\">\n          {option.icon != null && <span>{option.icon as React.ReactNode}</span>}\n          <span>{option.label}</span>\n        </div>\n      )}\n    />\n  );\n};\n\nexport default CategorySelector;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/ChatGroupItem.tsx",
    "content": "import { useState, useMemo, memo } from 'react';\nimport { Menu as MenuIcon, Edit as EditIcon, EarthIcon, TextSearch } from 'lucide-react';\nimport type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport {\n  DropdownMenu,\n  DropdownMenuItem,\n  DropdownMenuGroup,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n} from '~/components/ui';\nimport { useLocalize, useSubmitMessage, useCustomLink, useAuthContext } from '~/hooks';\nimport VariableDialog from '~/components/Prompts/Groups/VariableDialog';\nimport PreviewPrompt from '~/components/Prompts/PreviewPrompt';\nimport ListCard from '~/components/Prompts/Groups/ListCard';\nimport { detectVariables } from '~/utils';\n\nfunction ChatGroupItem({\n  group,\n  instanceProjectId,\n}: {\n  group: TPromptGroup;\n  instanceProjectId?: string;\n}) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const { submitPrompt } = useSubmitMessage();\n  const [isPreviewDialogOpen, setPreviewDialogOpen] = useState(false);\n  const [isVariableDialogOpen, setVariableDialogOpen] = useState(false);\n  const onEditClick = useCustomLink<HTMLDivElement>(`/d/prompts/${group._id}`);\n\n  const groupIsGlobal = useMemo(\n    () => instanceProjectId != null && group.projectIds?.includes(instanceProjectId),\n    [group, instanceProjectId],\n  );\n  const isOwner = useMemo(() => user?.id === group.author, [user, group]);\n\n  const onCardClick: React.MouseEventHandler<HTMLButtonElement> = () => {\n    const text = group.productionPrompt?.prompt;\n    if (!text?.trim()) {\n      return;\n    }\n\n    if (detectVariables(text)) {\n      setVariableDialogOpen(true);\n      return;\n    }\n\n    submitPrompt(text);\n  };\n\n  return (\n    <>\n      <ListCard\n        name={group.name}\n        category={group.category ?? ''}\n        onClick={onCardClick}\n        snippet={\n          typeof group.oneliner === 'string' && group.oneliner.length > 0\n            ? group.oneliner\n            : group.productionPrompt?.prompt ?? ''\n        }\n      >\n        <div className=\"flex flex-row items-center gap-2\">\n          {groupIsGlobal === true && (\n            <EarthIcon className=\"icon-md text-green-400\" aria-label=\"Global prompt group\" />\n          )}\n          <DropdownMenu modal={false}>\n            <DropdownMenuTrigger asChild>\n              <button\n                id={`prompt-actions-${group._id}`}\n                aria-label={`${group.name} - Actions Menu`}\n                aria-expanded=\"false\"\n                aria-controls={`prompt-menu-${group._id}`}\n                aria-haspopup=\"menu\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                }}\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter' || e.key === ' ') {\n                    e.stopPropagation();\n                  }\n                }}\n                className=\"z-50 inline-flex h-8 w-8 items-center justify-center rounded-lg border border-border-medium bg-transparent p-0 text-sm font-medium transition-all duration-300 ease-in-out hover:border-border-heavy hover:bg-surface-hover focus:border-border-heavy focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\"\n              >\n                <MenuIcon className=\"icon-md text-text-secondary\" aria-hidden=\"true\" />\n                <span className=\"sr-only\">Open actions menu for {group.name}</span>\n              </button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent\n              id={`prompt-menu-${group._id}`}\n              aria-label={`Available actions for ${group.name}`}\n              className=\"z-50 w-fit rounded-xl\"\n              collisionPadding={2}\n              align=\"end\"\n            >\n              <DropdownMenuItem\n                role=\"menuitem\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                  setPreviewDialogOpen(true);\n                }}\n                className=\"w-full cursor-pointer rounded-lg text-text-secondary hover:bg-surface-hover focus:bg-surface-hover disabled:cursor-not-allowed\"\n              >\n                <TextSearch className=\"mr-2 h-4 w-4\" aria-hidden=\"true\" />\n                <span>{localize('com_ui_preview')}</span>\n              </DropdownMenuItem>\n              {isOwner && (\n                <DropdownMenuGroup>\n                  <DropdownMenuItem\n                    disabled={!isOwner}\n                    className=\"cursor-pointer rounded-lg text-text-secondary hover:bg-surface-hover focus:bg-surface-hover disabled:cursor-not-allowed\"\n                    onClick={(e) => {\n                      e.stopPropagation();\n                      onEditClick(e);\n                    }}\n                  >\n                    <EditIcon className=\"mr-2 h-4 w-4\" aria-hidden=\"true\" />\n                    <span>{localize('com_ui_edit')}</span>\n                  </DropdownMenuItem>\n                </DropdownMenuGroup>\n              )}\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </div>\n      </ListCard>\n      <PreviewPrompt group={group} open={isPreviewDialogOpen} onOpenChange={setPreviewDialogOpen} />\n      <VariableDialog\n        open={isVariableDialogOpen}\n        onClose={() => setVariableDialogOpen(false)}\n        group={group}\n      />\n    </>\n  );\n}\n\nexport default memo(ChatGroupItem);\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/CreatePromptForm.tsx",
    "content": "import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useForm, Controller, FormProvider } from 'react-hook-form';\nimport { LocalStorageKeys, PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport CategorySelector from '~/components/Prompts/Groups/CategorySelector';\nimport PromptVariables from '~/components/Prompts/PromptVariables';\nimport { Button, TextareaAutosize, Input } from '~/components/ui';\nimport Description from '~/components/Prompts/Description';\nimport { useLocalize, useHasAccess } from '~/hooks';\nimport Command from '~/components/Prompts/Command';\nimport { useCreatePrompt } from '~/data-provider';\nimport { cn } from '~/utils';\n\ntype CreateFormValues = {\n  name: string;\n  prompt: string;\n  type: 'text' | 'chat';\n  category: string;\n  oneliner?: string;\n  command?: string;\n};\n\nconst defaultPrompt: CreateFormValues = {\n  name: '',\n  prompt: '',\n  type: 'text',\n  category: '',\n  oneliner: undefined,\n  command: undefined,\n};\n\nconst CreatePromptForm = ({\n  defaultValues = defaultPrompt,\n}: {\n  defaultValues?: CreateFormValues;\n}) => {\n  const localize = useLocalize();\n  const navigate = useNavigate();\n  const hasAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.CREATE,\n  });\n\n  useEffect(() => {\n    let timeoutId: ReturnType<typeof setTimeout>;\n    if (!hasAccess) {\n      timeoutId = setTimeout(() => {\n        navigate('/c/new');\n      }, 1000);\n    }\n    return () => {\n      clearTimeout(timeoutId);\n    };\n  }, [hasAccess, navigate]);\n\n  const methods = useForm({\n    defaultValues: {\n      ...defaultValues,\n      category: localStorage.getItem(LocalStorageKeys.LAST_PROMPT_CATEGORY) ?? '',\n    },\n  });\n\n  const {\n    watch,\n    control,\n    handleSubmit,\n    formState: { isDirty, isSubmitting, errors, isValid },\n  } = methods;\n\n  const createPromptMutation = useCreatePrompt({\n    onSuccess: (response) => {\n      navigate(`/d/prompts/${response.prompt.groupId}`, { replace: true });\n    },\n  });\n\n  const promptText = watch('prompt');\n\n  const onSubmit = (data: CreateFormValues) => {\n    const { name, category, oneliner, command, ...rest } = data;\n    const groupData = { name, category } as Pick<\n      CreateFormValues,\n      'name' | 'category' | 'oneliner' | 'command'\n    >;\n    if ((oneliner?.length ?? 0) > 0) {\n      groupData.oneliner = oneliner;\n    }\n    if ((command?.length ?? 0) > 0) {\n      groupData.command = command;\n    }\n    createPromptMutation.mutate({\n      prompt: rest,\n      group: groupData,\n    });\n  };\n\n  if (!hasAccess) {\n    return null;\n  }\n\n  return (\n    <FormProvider {...methods}>\n      <form onSubmit={handleSubmit(onSubmit)} className=\"w-full px-4 py-2\">\n        <div className=\"mb-1 flex flex-col items-center justify-between font-bold sm:text-xl md:mb-0 md:text-2xl\">\n          <div className=\"flex w-full flex-col items-center justify-between sm:flex-row\">\n            <Controller\n              name=\"name\"\n              control={control}\n              rules={{ required: localize('com_ui_prompt_name_required') }}\n              render={({ field }) => (\n                <div className=\"mb-1 flex items-center md:mb-0\">\n                  <Input\n                    {...field}\n                    type=\"text\"\n                    className=\"mr-2 w-full border border-border-medium p-2 text-2xl text-text-primary placeholder:text-text-tertiary dark:placeholder:text-text-secondary\"\n                    placeholder={`${localize('com_ui_prompt_name')}*`}\n                    tabIndex={0}\n                  />\n                  <div\n                    className={cn(\n                      'mt-1 w-56 text-sm text-red-500',\n                      errors.name ? 'visible h-auto' : 'invisible h-0',\n                    )}\n                  >\n                    {errors.name ? errors.name.message : ' '}\n                  </div>\n                </div>\n              )}\n            />\n            <CategorySelector />\n          </div>\n        </div>\n        <div className=\"flex w-full flex-col gap-4 md:mt-[1.075rem]\">\n          <div>\n            <h2 className=\"flex items-center justify-between rounded-t-lg border border-border-medium py-2 pl-4 pr-1 text-base font-semibold dark:text-gray-200\">\n              {localize('com_ui_prompt_text')}*\n            </h2>\n            <div className=\"min-h-32 rounded-b-lg border border-border-medium p-4 transition-all duration-150\">\n              <Controller\n                name=\"prompt\"\n                control={control}\n                rules={{ required: localize('com_ui_prompt_text_required') }}\n                render={({ field }) => (\n                  <div>\n                    <TextareaAutosize\n                      {...field}\n                      className=\"w-full rounded border border-border-medium px-2 py-1 focus:outline-none dark:bg-transparent dark:text-gray-200\"\n                      minRows={6}\n                      tabIndex={0}\n                    />\n                    <div\n                      className={`mt-1 text-sm text-red-500 ${\n                        errors.prompt ? 'visible h-auto' : 'invisible h-0'\n                      }`}\n                    >\n                      {errors.prompt ? errors.prompt.message : ' '}\n                    </div>\n                  </div>\n                )}\n              />\n            </div>\n          </div>\n          <PromptVariables promptText={promptText} />\n          <Description\n            onValueChange={(value) => methods.setValue('oneliner', value)}\n            tabIndex={0}\n          />\n          <Command onValueChange={(value) => methods.setValue('command', value)} tabIndex={0} />\n          <div className=\"mt-4 flex justify-end\">\n            <Button\n              aria-label={localize('com_ui_create_prompt')}\n              tabIndex={0}\n              type=\"submit\"\n              disabled={!isDirty || isSubmitting || !isValid}\n            >\n              {localize('com_ui_create_prompt')}\n            </Button>\n          </div>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default CreatePromptForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/DashGroupItem.tsx",
    "content": "import { memo, useState, useRef, useMemo, useCallback, KeyboardEvent } from 'react';\nimport { EarthIcon, Pen } from 'lucide-react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { SystemRoles, type TPromptGroup } from '~/data-provider/data-provider/src';\nimport { useDeletePromptGroup, useUpdatePromptGroup } from '~/data-provider';\nimport { Input, Label, Button, OGDialog, OGDialogTrigger } from '~/components/ui';\nimport CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useAuthContext } from '~/hooks';\nimport { TrashIcon } from '~/components/svg';\nimport { cn } from '~/utils/';\n\ninterface DashGroupItemProps {\n  group: TPromptGroup;\n  instanceProjectId?: string;\n}\n\nfunction DashGroupItemComponent({ group, instanceProjectId }: DashGroupItemProps) {\n  const params = useParams();\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n\n  const blurTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n  const [nameInputValue, setNameInputValue] = useState(group.name);\n\n  const isOwner = useMemo(() => user?.id === group.author, [user?.id, group.author]);\n  const isGlobalGroup = useMemo(\n    () => instanceProjectId && group.projectIds?.includes(instanceProjectId),\n    [group.projectIds, instanceProjectId],\n  );\n\n  const updateGroup = useUpdatePromptGroup({\n    onMutate: () => {\n      if (blurTimeoutRef.current) {\n        clearTimeout(blurTimeoutRef.current);\n      }\n    },\n  });\n\n  const deleteGroup = useDeletePromptGroup({\n    onSuccess: (_response, variables) => {\n      if (variables.id === group._id) {\n        navigate('/d/prompts');\n      }\n    },\n  });\n\n  const { isLoading } = updateGroup;\n\n  const handleSaveRename = useCallback(() => {\n    console.log(group._id ?? '', { name: nameInputValue });\n    updateGroup.mutate({ id: group._id ?? '', payload: { name: nameInputValue } });\n  }, [group._id, nameInputValue, updateGroup]);\n\n  const handleKeyDown = useCallback(\n    (e: KeyboardEvent<HTMLDivElement>) => {\n      if (e.key === 'Enter') {\n        e.preventDefault();\n        navigate(`/d/prompts/${group._id}`, { replace: true });\n      }\n    },\n    [group._id, navigate],\n  );\n\n  const triggerDelete = useCallback(() => {\n    deleteGroup.mutate({ id: group._id ?? '' });\n  }, [group._id, deleteGroup]);\n\n  const handleContainerClick = useCallback(() => {\n    navigate(`/d/prompts/${group._id}`, { replace: true });\n  }, [group._id, navigate]);\n\n  return (\n    <div\n      className={cn(\n        'mx-2 my-2 flex cursor-pointer rounded-lg border border-border-light bg-surface-primary p-3 shadow-sm transition-all duration-300 ease-in-out hover:bg-surface-secondary',\n        params.promptId === group._id && 'bg-surface-hover',\n      )}\n      onClick={handleContainerClick}\n      onKeyDown={handleKeyDown}\n      role=\"button\"\n      tabIndex={0}\n      aria-label={`${group.name} prompt group`}\n    >\n      <div className=\"flex w-full items-center justify-between\">\n        <div className=\"flex items-center gap-2 truncate pr-2\">\n          <CategoryIcon category={group.category ?? ''} className=\"icon-lg\" aria-hidden=\"true\" />\n\n          <Label className=\"text-md cursor-pointer truncate font-semibold text-text-primary\">\n            {group.name}\n          </Label>\n        </div>\n\n        <div className=\"flex h-full items-center gap-2\">\n          {isGlobalGroup && (\n            <EarthIcon\n              className=\"icon-md text-green-500\"\n              aria-label={localize('com_ui_global_group')}\n            />\n          )}\n          {(isOwner || user?.role === SystemRoles.ADMIN) && (\n            <>\n              <OGDialog>\n                <OGDialogTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    onClick={(e) => e.stopPropagation()}\n                    className=\"h-8 w-8 p-0 hover:bg-surface-hover\"\n                    aria-label={localize('com_ui_rename_prompt') + ' ' + group.name}\n                  >\n                    <Pen className=\"icon-sm text-text-primary\" aria-hidden=\"true\" />\n                  </Button>\n                </OGDialogTrigger>\n                <OGDialogTemplate\n                  showCloseButton={false}\n                  title={localize('com_ui_rename_prompt')}\n                  className=\"w-11/12 max-w-lg\"\n                  main={\n                    <div className=\"flex w-full flex-col items-center gap-2\">\n                      <div className=\"grid w-full items-center gap-2\">\n                        <Input\n                          value={nameInputValue}\n                          onChange={(e) => setNameInputValue(e.target.value)}\n                          className=\"w-full\"\n                          aria-label={localize('com_ui_rename_prompt') + ' ' + group.name}\n                        />\n                      </div>\n                    </div>\n                  }\n                  selection={{\n                    selectHandler: handleSaveRename,\n                    selectClasses:\n                      'bg-surface-submit hover:bg-surface-submit-hover text-white disabled:hover:bg-surface-submit',\n                    selectText: localize('com_ui_save'),\n                    isLoading,\n                  }}\n                />\n              </OGDialog>\n\n              <OGDialog>\n                <OGDialogTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    className=\"h-8 w-8 p-0 hover:bg-surface-hover\"\n                    onClick={(e) => e.stopPropagation()}\n                    aria-label={localize('com_ui_delete_prompt') + ' ' + group.name}\n                  >\n                    <TrashIcon className=\"icon-sm text-text-primary\" aria-hidden=\"true\" />\n                  </Button>\n                </OGDialogTrigger>\n                <OGDialogTemplate\n                  showCloseButton={false}\n                  title={localize('com_ui_delete_prompt')}\n                  className=\"w-11/12 max-w-lg\"\n                  main={\n                    <div className=\"flex w-full flex-col items-center gap-2\">\n                      <div className=\"grid w-full items-center gap-2\">\n                        <Label htmlFor=\"confirm-delete\" className=\"text-left text-sm font-medium\">\n                          {localize('com_ui_delete_confirm')} <strong>{group.name}</strong>\n                        </Label>\n                      </div>\n                    </div>\n                  }\n                  selection={{\n                    selectHandler: triggerDelete,\n                    selectClasses:\n                      'bg-red-600 dark:bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white',\n                    selectText: localize('com_ui_delete'),\n                  }}\n                />\n              </OGDialog>\n            </>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default memo(DashGroupItemComponent);\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/FilterPrompts.tsx",
    "content": "import { ListFilter, User, Share2 } from 'lucide-react';\nimport React, { useState, useCallback, useMemo, useEffect } from 'react';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { SystemCategories } from '~/data-provider/data-provider/src';\nimport { usePromptGroupsNav, useLocalize, useCategories } from '~/hooks';\nimport { Dropdown, AnimatedSearchInput } from '~/components/ui';\nimport type { Option } from '~/common';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function FilterPrompts({\n  setName,\n  className = '',\n}: Pick<ReturnType<typeof usePromptGroupsNav>, 'setName'> & {\n  className?: string;\n}) {\n  const localize = useLocalize();\n  const [displayName, setDisplayName] = useState('');\n  const setCategory = useSetRecoilState(store.promptsCategory);\n  const categoryFilter = useRecoilValue(store.promptsCategory);\n  const { categories } = useCategories('h-4 w-4');\n  const [isSearching, setIsSearching] = useState(false);\n\n  const filterOptions = useMemo(() => {\n    const baseOptions: Option[] = [\n      {\n        value: SystemCategories.ALL,\n        label: localize('com_ui_all_proper'),\n        icon: <ListFilter className=\"h-4 w-4 text-text-primary\" />,\n      },\n      {\n        value: SystemCategories.MY_PROMPTS,\n        label: localize('com_ui_my_prompts'),\n        icon: <User className=\"h-4 w-4 text-text-primary\" />,\n      },\n      {\n        value: SystemCategories.SHARED_PROMPTS,\n        label: localize('com_ui_shared_prompts'),\n        icon: <Share2 className=\"h-4 w-4 text-text-primary\" />,\n      },\n      { divider: true, value: null },\n    ];\n\n    const categoryOptions = categories\n      ? [...categories]\n      : [\n        {\n          value: SystemCategories.NO_CATEGORY,\n          label: localize('com_ui_no_category'),\n        },\n      ];\n\n    return [...baseOptions, ...categoryOptions];\n  }, [categories, localize]);\n\n  const onSelect = useCallback(\n    (value: string) => {\n      if (value === SystemCategories.ALL) {\n        setCategory('');\n      } else {\n        setCategory(value);\n      }\n    },\n    [setCategory],\n  );\n\n  useEffect(() => {\n    setIsSearching(true);\n    const timeout = setTimeout(() => {\n      setIsSearching(false);\n    }, 500);\n    return () => clearTimeout(timeout);\n  }, [displayName]);\n\n  return (\n    <div className={cn('flex w-full gap-2 text-text-primary', className)}>\n      <Dropdown\n        value={categoryFilter || SystemCategories.ALL}\n        onChange={onSelect}\n        options={filterOptions}\n        className=\"bg-transparent\"\n        icon={<ListFilter className=\"h-4 w-4\" />}\n        label=\"Filter: \"\n        ariaLabel={localize('com_ui_filter_prompts')}\n        iconOnly\n      />\n      <AnimatedSearchInput\n        value={displayName}\n        onChange={(e) => {\n          setDisplayName(e.target.value);\n          setName(e.target.value);\n        }}\n        isSearching={isSearching}\n        placeholder={localize('com_ui_filter_prompts_name')}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/GroupSidePanel.tsx",
    "content": "import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport PanelNavigation from '~/components/Prompts/Groups/PanelNavigation';\nimport { useMediaQuery, usePromptGroupsNav } from '~/hooks';\nimport List from '~/components/Prompts/Groups/List';\nimport { cn } from '~/utils';\n\nexport default function GroupSidePanel({\n  children,\n  isDetailView,\n  className = '',\n  /* usePromptGroupsNav */\n  nextPage,\n  prevPage,\n  isFetching,\n  hasNextPage,\n  groupsQuery,\n  promptGroups,\n  hasPreviousPage,\n}: {\n  children?: React.ReactNode;\n  isDetailView?: boolean;\n  className?: string;\n} & ReturnType<typeof usePromptGroupsNav>) {\n  const location = useLocation();\n  const isSmallerScreen = useMediaQuery('(max-width: 1024px)');\n  const isChatRoute = useMemo(() => location.pathname.startsWith('/c/'), [location.pathname]);\n\n  return (\n    <div\n      className={cn(\n        'mr-2 flex h-auto w-auto min-w-72 flex-col gap-2 lg:w-1/4 xl:w-1/4',\n        isDetailView === true && isSmallerScreen ? 'hidden' : '',\n        className,\n      )}\n    >\n      {children}\n      <div className=\"flex-grow overflow-y-auto\">\n        <List groups={promptGroups} isChatRoute={isChatRoute} isLoading={!!groupsQuery.isLoading} />\n      </div>\n      <PanelNavigation\n        nextPage={nextPage}\n        prevPage={prevPage}\n        isFetching={isFetching}\n        hasNextPage={hasNextPage}\n        isChatRoute={isChatRoute}\n        hasPreviousPage={hasPreviousPage}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/List.tsx",
    "content": "import { Plus } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport type { TPromptGroup, TStartupConfig } from '~/data-provider/data-provider/src';\nimport DashGroupItem from '~/components/Prompts/Groups/DashGroupItem';\nimport ChatGroupItem from '~/components/Prompts/Groups/ChatGroupItem';\nimport { useGetStartupConfig } from '~/data-provider';\nimport { useLocalize, useHasAccess } from '~/hooks';\nimport { Button, Skeleton } from '~/components/ui';\n\nexport default function List({\n  groups = [],\n  isChatRoute,\n  isLoading,\n}: {\n  groups?: TPromptGroup[];\n  isChatRoute: boolean;\n  isLoading: boolean;\n}) {\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  const { data: startupConfig = {} as Partial<TStartupConfig> } = useGetStartupConfig();\n  const { instanceProjectId } = startupConfig;\n  const hasCreateAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.CREATE,\n  });\n\n  return (\n    <div className=\"flex h-full flex-col\">\n      {hasCreateAccess && (\n        <div className=\"flex w-full justify-end\">\n          <Button\n            variant=\"outline\"\n            className={`w-full bg-transparent ${isChatRoute ? '' : 'mx-2'}`}\n            onClick={() => navigate('/d/prompts/new')}\n          >\n            <Plus className=\"size-4\" aria-hidden />\n            {localize('com_ui_create_prompt')}\n          </Button>\n        </div>\n      )}\n      <div className=\"flex-grow overflow-y-auto\">\n        <div className=\"overflow-y-auto overflow-x-hidden\">\n          {isLoading && isChatRoute && (\n            <Skeleton className=\"my-2 flex h-[84px] w-full rounded-2xl border-0 px-3 pb-4 pt-3\" />\n          )}\n          {isLoading &&\n            !isChatRoute &&\n            Array.from({ length: 10 }).map((_, index: number) => (\n              <Skeleton key={index} className=\"w-100 mx-2 my-2 flex h-14 rounded-lg border-0 p-4\" />\n            ))}\n          {!isLoading && groups.length === 0 && isChatRoute && (\n            <div className=\"my-2 flex h-[84px] w-full items-center justify-center rounded-2xl border border-border-light bg-transparent px-3 pb-4 pt-3 text-text-primary\">\n              {localize('com_ui_nothing_found')}\n            </div>\n          )}\n          {!isLoading && groups.length === 0 && !isChatRoute && (\n            <div className=\"my-12 flex w-full items-center justify-center text-lg font-semibold text-text-primary\">\n              {localize('com_ui_nothing_found')}\n            </div>\n          )}\n          {groups.map((group) => {\n            if (isChatRoute) {\n              return (\n                <ChatGroupItem\n                  key={group._id}\n                  group={group}\n                  instanceProjectId={instanceProjectId}\n                />\n              );\n            }\n            return (\n              <DashGroupItem key={group._id} group={group} instanceProjectId={instanceProjectId} />\n            );\n          })}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/ListCard.tsx",
    "content": "import React from 'react';\nimport CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';\nimport { Label } from '~/components/ui';\n\nexport default function ListCard({\n  category,\n  name,\n  snippet,\n  onClick,\n  children,\n}: {\n  category: string;\n  name: string;\n  snippet: string;\n  onClick?: React.MouseEventHandler<HTMLDivElement | HTMLButtonElement>;\n  children?: React.ReactNode;\n}) {\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement | HTMLButtonElement>) => {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      onClick?.(event as unknown as React.MouseEvent<HTMLDivElement | HTMLButtonElement>);\n    }\n  };\n\n  return (\n    <div\n      onClick={onClick}\n      onKeyDown={handleKeyDown}\n      className=\"relative my-2 flex w-full cursor-pointer flex-col gap-2 rounded-xl border border-border-light px-3 pb-4 pt-3 text-start\n          align-top text-[15px] shadow-sm transition-all duration-300 ease-in-out hover:bg-surface-tertiary hover:shadow-lg\"\n      role=\"button\"\n      tabIndex={0}\n      aria-labelledby={`card-title-${name}`}\n      aria-describedby={`card-snippet-${name}`}\n      aria-label={`Card for ${name}`}\n    >\n      <div className=\"flex w-full justify-between gap-2\">\n        <div className=\"flex flex-row gap-2\">\n          <CategoryIcon category={category} className=\"icon-md\" aria-hidden=\"true\" />\n          <Label\n            id={`card-title-${name}`}\n            className=\"break-word select-none text-balance text-sm font-semibold text-text-primary\"\n            title={name}\n          >\n            {name}\n          </Label>\n        </div>\n        <div>{children}</div>\n      </div>\n      <div\n        id={`card-snippet-${name}`}\n        className=\"ellipsis max-w-full select-none text-balance text-sm text-text-secondary\"\n      >\n        {snippet}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/NoPromptGroup.tsx",
    "content": "import { useNavigate } from 'react-router-dom';\nimport { Button } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport default function NoPromptGroup() {\n  const navigate = useNavigate();\n  const localize = useLocalize();\n  return (\n    <div className=\"relative min-h-full w-full px-4\">\n      <div className=\"absolute inset-0 flex items-center justify-center\">\n        <div className=\"text-center font-bold dark:text-gray-200\">\n          <h1 className=\"text-lg font-bold dark:text-gray-200 md:text-2xl\">\n            {localize('com_ui_prompt_preview_not_shared')}\n          </h1>\n          <Button\n            className=\"mt-4\"\n            onClick={() => {\n              navigate('/d/prompts');\n            }}\n          >\n            {localize('com_ui_back_to_prompts')}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/PanelNavigation.tsx",
    "content": "import { memo } from 'react';\nimport { Button, ThemeSelector } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nfunction PanelNavigation({\n  prevPage,\n  nextPage,\n  hasPreviousPage,\n  hasNextPage,\n  isFetching,\n  isChatRoute,\n}: {\n  prevPage: () => void;\n  nextPage: () => void;\n  hasNextPage: boolean;\n  hasPreviousPage: boolean;\n  isFetching: boolean;\n  isChatRoute: boolean;\n}) {\n  const localize = useLocalize();\n  return (\n    <div className=\"my-1 flex justify-between\">\n      <div className=\"mb-2 flex gap-2\">\n        {!isChatRoute && <ThemeSelector returnThemeOnly={true} />}\n      </div>\n      <div className=\"mb-2 flex gap-2\">\n        <Button variant=\"outline\" size=\"sm\" onClick={() => prevPage()} disabled={!hasPreviousPage}>\n          {localize('com_ui_prev')}\n        </Button>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => nextPage()}\n          disabled={!hasNextPage || isFetching}\n        >\n          {localize('com_ui_next')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n\nexport default memo(PanelNavigation);\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/VariableDialog.tsx",
    "content": "import React, { useMemo } from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport { OGDialog, OGDialogTitle, OGDialogContent } from '~/components/ui';\nimport { detectVariables } from '~/utils';\nimport VariableForm from './VariableForm';\n\ninterface VariableDialogProps extends Omit<DialogPrimitive.DialogProps, 'onOpenChange'> {\n  onClose: () => void;\n  group: TPromptGroup | null;\n}\n\nconst VariableDialog: React.FC<VariableDialogProps> = ({ open, onClose, group }) => {\n  const handleOpenChange = (open: boolean) => {\n    if (!open) {\n      onClose();\n    }\n  };\n\n  const hasVariables = useMemo(\n    () => detectVariables(group?.productionPrompt?.prompt ?? ''),\n    [group?.productionPrompt?.prompt],\n  );\n  if (!group) {\n    return null;\n  }\n\n  if (!hasVariables) {\n    return null;\n  }\n\n  return (\n    <OGDialog open={open} onOpenChange={handleOpenChange}>\n      <OGDialogContent className=\"max-w-full bg-white dark:border-gray-700 dark:bg-gray-850 dark:text-gray-300 md:max-w-3xl\">\n        <OGDialogTitle>{group.name}</OGDialogTitle>\n        <VariableForm group={group} onClose={onClose} />\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default VariableDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Groups/VariableForm.tsx",
    "content": "import { useMemo } from 'react';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport supersub from 'remark-supersub';\nimport rehypeKatex from 'rehype-katex';\nimport ReactMarkdown from 'react-markdown';\nimport rehypeHighlight from 'rehype-highlight';\nimport { useForm, useFieldArray, Controller, useWatch } from 'react-hook-form';\nimport type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport {\n  cn,\n  wrapVariable,\n  defaultTextProps,\n  replaceSpecialVars,\n  extractVariableInfo,\n} from '~/utils';\nimport { codeNoExecution } from '~/components/Chat/Messages/Content/Markdown';\nimport { TextareaAutosize, InputCombobox, Button } from '~/components/ui';\nimport { useAuthContext, useLocalize, useSubmitMessage } from '~/hooks';\n\ntype FieldType = 'text' | 'select';\n\ntype FieldConfig = {\n  variable: string;\n  type: FieldType;\n  options?: string[];\n};\n\ntype FormValues = {\n  fields: { variable: string; value: string; config: FieldConfig }[];\n};\n\n/**\n * Variable Format Guide:\n *\n * Variables in prompts should be enclosed in double curly braces: {{variable}}\n *\n * Simple text input:\n * {{variable_name}}\n *\n * Dropdown select with predefined options:\n * {{variable_name:option1|option2|option3}}\n *\n * All dropdown selects allow custom input in addition to predefined options.\n *\n * Examples:\n * {{name}} - Simple text input for a name\n * {{tone:formal|casual|business casual}} - Dropdown for tone selection with custom input option\n *\n * Note: The order of variables in the prompt will be preserved in the input form.\n */\n\nconst parseFieldConfig = (variable: string): FieldConfig => {\n  const content = variable.trim();\n  if (content.includes(':')) {\n    const [name, options] = content.split(':');\n    if (options && options.includes('|')) {\n      return {\n        variable: name.trim(),\n        type: 'select',\n        options: options.split('|').map((opt) => opt.trim()),\n      };\n    }\n  }\n  return { variable: content, type: 'text' };\n};\n\nexport default function VariableForm({\n  group,\n  onClose,\n}: {\n  group: TPromptGroup;\n  onClose: () => void;\n}) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n\n  const mainText = useMemo(() => {\n    const initialText = group.productionPrompt?.prompt ?? '';\n    return replaceSpecialVars({ text: initialText, user });\n  }, [group.productionPrompt?.prompt, user]);\n\n  const { allVariables, uniqueVariables, variableIndexMap } = useMemo(\n    () => extractVariableInfo(mainText),\n    [mainText],\n  );\n\n  const { submitPrompt } = useSubmitMessage();\n  const { control, handleSubmit } = useForm<FormValues>({\n    defaultValues: {\n      fields: uniqueVariables.map((variable) => ({\n        variable: wrapVariable(variable),\n        value: '',\n        config: parseFieldConfig(variable),\n      })),\n    },\n  });\n\n  const { fields } = useFieldArray({\n    control,\n    name: 'fields',\n  });\n\n  const fieldValues = useWatch({\n    control,\n    name: 'fields',\n  });\n\n  if (!uniqueVariables.length) {\n    return null;\n  }\n\n  const generateHighlightedMarkdown = () => {\n    let tempText = mainText;\n    allVariables.forEach((variable) => {\n      const placeholder = `{{${variable}}}`;\n      const fieldIndex = variableIndexMap.get(variable) as string | number;\n      const fieldValue = fieldValues[fieldIndex].value as string;\n      const highlightText = fieldValue !== '' ? fieldValue : placeholder;\n      tempText = tempText.replaceAll(placeholder, `**${highlightText}**`);\n    });\n    return tempText;\n  };\n\n  const onSubmit = (data: FormValues) => {\n    let text = mainText;\n    data.fields.forEach(({ variable, value }) => {\n      if (!value) {\n        return;\n      }\n\n      const escapedVariable = variable.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n      const regex = new RegExp(escapedVariable, 'g');\n      text = text.replace(regex, value);\n    });\n\n    submitPrompt(text);\n    onClose();\n  };\n\n  return (\n    <div className=\"mx-auto p-1 md:container\">\n      <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n        <div className=\"mb-6 max-h-screen max-w-[90vw] overflow-auto rounded-md bg-gray-100 p-4 text-text-secondary dark:bg-gray-700/50 sm:max-w-full md:max-h-80\">\n          <ReactMarkdown\n            /** @ts-ignore */\n            remarkPlugins={[supersub, remarkGfm, [remarkMath, { singleDollarTextMath: true }]]}\n            rehypePlugins={[\n              /** @ts-ignore */\n              [rehypeKatex, { output: 'mathml' }],\n              /** @ts-ignore */\n              [rehypeHighlight, { ignoreMissing: true }],\n            ]}\n            /** @ts-ignore */\n            components={{ code: codeNoExecution }}\n            className=\"prose dark:prose-invert light dark:text-gray-70 my-1 max-h-[50vh] break-words\"\n          >\n            {generateHighlightedMarkdown()}\n          </ReactMarkdown>\n        </div>\n        <div className=\"space-y-4\">\n          {fields.map((field, index) => (\n            <div key={field.id} className=\"flex flex-col space-y-2\">\n              <Controller\n                name={`fields.${index}.value`}\n                control={control}\n                render={({ field: { onChange, onBlur, value, ref } }) => {\n                  if (field.config.type === 'select') {\n                    return (\n                      <InputCombobox\n                        options={field.config.options || []}\n                        placeholder={localize('com_ui_enter_var', { 0: field.config.variable })}\n                        className={cn(\n                          defaultTextProps,\n                          'rounded px-3 py-2 focus:bg-surface-tertiary',\n                        )}\n                        value={value}\n                        onChange={onChange}\n                        onBlur={onBlur}\n                      />\n                    );\n                  }\n\n                  return (\n                    <TextareaAutosize\n                      ref={ref}\n                      value={value}\n                      onChange={onChange}\n                      onBlur={onBlur}\n                      id={`fields.${index}.value`}\n                      className={cn(\n                        defaultTextProps,\n                        'rounded px-3 py-2 focus:bg-surface-tertiary',\n                      )}\n                      placeholder={localize('com_ui_enter_var', { 0: field.config.variable })}\n                      maxRows={8}\n                    />\n                  );\n                }}\n              />\n            </div>\n          ))}\n        </div>\n        <div className=\"flex justify-end\">\n          <Button type=\"submit\" variant=\"submit\">\n            {localize('com_ui_submit')}\n          </Button>\n        </div>\n      </form>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/ManagePrompts.tsx",
    "content": "import { useCallback } from 'react';\nimport { useSetRecoilState } from 'recoil';\nimport { useLocalize, useCustomLink } from '~/hooks';\nimport { Button } from '~/components/ui';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nexport default function ManagePrompts({ className }: { className?: string }) {\n  const localize = useLocalize();\n  const setPromptsName = useSetRecoilState(store.promptsName);\n  const setPromptsCategory = useSetRecoilState(store.promptsCategory);\n  const clickCallback = useCallback(() => {\n    setPromptsName('');\n    setPromptsCategory('');\n  }, [setPromptsName, setPromptsCategory]);\n\n  const customLink = useCustomLink('/d/prompts', clickCallback);\n  const clickHandler = (e: React.MouseEvent<HTMLButtonElement>) => {\n    customLink(e as unknown as React.MouseEvent<HTMLAnchorElement>);\n  };\n\n  return (\n    <Button\n      variant=\"outline\"\n      className={cn(className, 'bg-transparent')}\n      onClick={clickHandler}\n      aria-label=\"Manage Prompts\"\n      role=\"button\"\n    >\n      {localize('com_ui_manage')}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/Markdown.tsx",
    "content": "import React from 'react';\nimport { handleDoubleClick } from '~/utils';\n\nexport const CodeVariableGfm = ({ children }: { children: React.ReactNode }) => {\n  return (\n    <code\n      onDoubleClick={handleDoubleClick}\n      className=\"rounded-md bg-surface-primary-alt p-1 text-xs text-text-secondary md:text-sm\"\n    >\n      {children}\n    </code>\n  );\n};\n\nconst regex = /{{(.*?)}}/g;\nexport const PromptVariableGfm = ({\n  children,\n}: {\n  children: React.ReactNode & React.ReactNode[];\n}) => {\n  const renderContent = (child: React.ReactNode) => {\n    if (typeof child === 'object' && child !== null) {\n      return child;\n    }\n    if (typeof child !== 'string') {\n      return child;\n    }\n\n    const parts = child.split(regex);\n    return parts.map((part, index) =>\n      index % 2 === 1 ? (\n        <b key={index} className=\"rounded-md bg-yellow-100/90 p-1 text-gray-700\">\n          {`{{${part}}}`}\n        </b>\n      ) : (\n        part\n      ),\n    );\n  };\n\n  return <p>{React.Children.map(children, (child) => renderContent(child))}</p>;\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PreviewLabels.tsx",
    "content": "import { useState } from 'react';\nimport { Cross1Icon } from '@radix-ui/react-icons';\nimport type { TPrompt } from '~/data-provider/data-provider/src';\nimport { useUpdatePromptLabels } from '~/data-provider';\nimport { Input } from '~/components/ui';\n\nconst PromptForm = ({ selectedPrompt }: { selectedPrompt?: TPrompt }) => {\n  const [labelInput, setLabelInput] = useState<string>('');\n  const [labels, setLabels] = useState<string[]>([]);\n  const updatePromptLabelsMutation = useUpdatePromptLabels();\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setLabelInput(e.target.value);\n  };\n\n  const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'Enter' && labelInput.trim()) {\n      const newLabels = [...labels, labelInput.trim()];\n      setLabels(newLabels);\n      setLabelInput('');\n      updatePromptLabelsMutation.mutate({\n        id: selectedPrompt?._id || '',\n        payload: { labels: newLabels },\n      });\n    }\n  };\n\n  return (\n    <>\n      <Input\n        type=\"text\"\n        className=\"mb-4\"\n        placeholder=\"+ Add Labels\"\n        // defaultValue={selectedPrompt?.labels.join(', ')}\n        value={labelInput}\n        onChange={handleInputChange}\n        onKeyPress={handleKeyPress}\n      />\n      <h3 className=\"rounded-t-lg border border-gray-300 px-4 text-base font-semibold\">Labels</h3>\n      <div className=\"mb-4 flex w-full flex-row flex-wrap rounded-b-lg border border-gray-300 p-4\">\n        {labels.length ? (\n          labels.map((label, index) => (\n            <label\n              className=\"mb-1 mr-1 flex items-center gap-x-2 rounded-full border px-2\"\n              key={index}\n            >\n              {label}\n              <Cross1Icon\n                onClick={() => {\n                  const newLabels = labels.filter((l) => l !== label);\n                  setLabels(newLabels);\n                  updatePromptLabelsMutation.mutate({\n                    id: selectedPrompt?._id || '',\n                    payload: { labels: newLabels },\n                  });\n                }}\n                className=\"cursor-pointer\"\n              />\n            </label>\n          ))\n        ) : (\n          <label className=\"rounded-full border px-2\">No Labels</label>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport default PromptForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PreviewPrompt.tsx",
    "content": "import type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport { OGDialogContent, OGDialog } from '~/components/ui';\nimport PromptDetails from './PromptDetails';\n\nconst PreviewPrompt = ({\n  group,\n  open,\n  onOpenChange,\n}: {\n  group: TPromptGroup;\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n}) => {\n  return (\n    <OGDialog open={open} onOpenChange={onOpenChange}>\n      <OGDialogContent className=\"w-11/12 max-w-5xl\">\n        <div className=\"p-2\">\n          <PromptDetails group={group} />\n        </div>\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default PreviewPrompt;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptDetails.tsx",
    "content": "import React, { useMemo } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport rehypeKatex from 'rehype-katex';\nimport remarkMath from 'remark-math';\nimport supersub from 'remark-supersub';\nimport rehypeHighlight from 'rehype-highlight';\nimport type { TPromptGroup } from '~/data-provider/data-provider/src';\nimport { codeNoExecution } from '~/components/Chat/Messages/Content/Markdown';\nimport { useLocalize, useAuthContext } from '~/hooks';\nimport CategoryIcon from './Groups/CategoryIcon';\nimport PromptVariables from './PromptVariables';\nimport { PromptVariableGfm } from './Markdown';\nimport { replaceSpecialVars } from '~/utils';\nimport { Label } from '~/components/ui';\nimport Description from './Description';\nimport Command from './Command';\n\nconst PromptDetails = ({ group }: { group?: TPromptGroup }) => {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n\n  const mainText = useMemo(() => {\n    const initialText = group?.productionPrompt?.prompt ?? '';\n    return replaceSpecialVars({ text: initialText, user });\n  }, [group?.productionPrompt?.prompt, user]);\n\n  if (!group) {\n    return null;\n  }\n\n  return (\n    <div>\n      <div className=\"flex flex-col items-center justify-between p-4 text-text-primary sm:flex-row\">\n        <div className=\"mb-1 flex flex-row items-center font-bold sm:text-xl md:mb-0 md:text-2xl\">\n          <div className=\"mb-1 flex items-center md:mb-0\">\n            <div className=\"rounded pr-2\">\n              {(group.category?.length ?? 0) > 0 ? (\n                <CategoryIcon category={group.category ?? ''} />\n              ) : null}\n            </div>\n            <Label className=\"text-2xl font-bold\">{group.name}</Label>\n          </div>\n        </div>\n      </div>\n      <div className=\"flex h-full max-h-screen flex-col overflow-y-auto md:flex-row\">\n        <div className=\"flex flex-1 flex-col gap-4 p-0 md:max-h-[calc(100vh-150px)] md:p-2\">\n          <div>\n            <h2 className=\"flex items-center justify-between rounded-t-lg border border-border-light py-2 pl-4 text-base font-semibold text-text-primary \">\n              {localize('com_ui_prompt_text')}\n            </h2>\n            <div className=\"group relative min-h-32 rounded-b-lg border border-border-light p-4 transition-all duration-150\">\n              <ReactMarkdown\n                remarkPlugins={[\n                  /** @ts-ignore */\n                  supersub,\n                  remarkGfm,\n                  [remarkMath, { singleDollarTextMath: true }],\n                ]}\n                rehypePlugins={[\n                  /** @ts-ignore */\n                  [rehypeKatex, { output: 'mathml' }],\n                  /** @ts-ignore */\n                  [rehypeHighlight, { ignoreMissing: true }],\n                ]}\n                /** @ts-ignore */\n                components={{ p: PromptVariableGfm, code: codeNoExecution }}\n                className=\"prose dark:prose-invert light dark:text-gray-70 my-1\"\n              >\n                {mainText}\n              </ReactMarkdown>\n            </div>\n          </div>\n          <PromptVariables promptText={mainText} showInfo={false} />\n          <Description initialValue={group.oneliner} disabled={true} />\n          <Command initialValue={group.command} disabled={true} />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default PromptDetails;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptEditor.tsx",
    "content": "import { useMemo, memo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { EditIcon } from 'lucide-react';\nimport type { PluggableList } from 'unified';\nimport rehypeHighlight from 'rehype-highlight';\nimport { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport remarkGfm from 'remark-gfm';\nimport rehypeKatex from 'rehype-katex';\nimport remarkMath from 'remark-math';\nimport supersub from 'remark-supersub';\nimport ReactMarkdown from 'react-markdown';\nimport { codeNoExecution } from '~/components/Chat/Messages/Content/Markdown';\nimport AlwaysMakeProd from '~/components/Prompts/Groups/AlwaysMakeProd';\nimport { SaveIcon, CrossIcon } from '~/components/svg';\nimport { TextareaAutosize } from '~/components/ui';\nimport { PromptVariableGfm } from './Markdown';\nimport { PromptsEditorMode } from '~/common';\nimport { cn, langSubset } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\n\nconst { promptsEditorMode } = store;\n\ntype Props = {\n  name: string;\n  isEditing: boolean;\n  setIsEditing: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst PromptEditor: React.FC<Props> = ({ name, isEditing, setIsEditing }) => {\n  const localize = useLocalize();\n  const { control } = useFormContext();\n  const editorMode = useRecoilValue(promptsEditorMode);\n  const { dirtyFields } = useFormState({ control: control });\n  const { prompt } = dirtyFields as { prompt?: string };\n\n  const EditorIcon = useMemo(() => {\n    if (isEditing && prompt?.length == null) {\n      return CrossIcon;\n    }\n    return isEditing ? SaveIcon : EditIcon;\n  }, [isEditing, prompt]);\n\n  const rehypePlugins: PluggableList = [\n    [rehypeKatex, { output: 'mathml' }],\n    [\n      rehypeHighlight,\n      {\n        detect: true,\n        ignoreMissing: true,\n        subset: langSubset,\n      },\n    ],\n  ];\n\n  return (\n    <div className=\"flex max-h-[85vh] flex-col sm:max-h-[85vh]\">\n      <h2 className=\"flex items-center justify-between rounded-t-xl border border-border-light py-1.5 pl-3 text-sm font-semibold text-text-primary sm:py-2 sm:pl-4 sm:text-base\">\n        <span className=\"max-w-[200px] truncate sm:max-w-none\">\n          {localize('com_ui_prompt_text')}\n        </span>\n        <div className=\"flex flex-shrink-0 flex-row gap-3 sm:gap-6\">\n          {editorMode === PromptsEditorMode.ADVANCED && (\n            <AlwaysMakeProd className=\"hidden sm:flex\" />\n          )}\n          <button\n            type=\"button\"\n            onClick={() => setIsEditing((prev) => !prev)}\n            aria-label={isEditing ? localize('com_ui_save') : localize('com_ui_edit')}\n            className=\"mr-1 rounded-lg p-1.5 sm:mr-2 sm:p-1\"\n          >\n            <EditorIcon\n              className={cn(\n                'h-5 w-5 sm:h-6 sm:w-6',\n                isEditing ? 'p-[0.05rem]' : 'text-secondary-alt hover:text-text-primary',\n              )}\n            />\n          </button>\n        </div>\n      </h2>\n      <div\n        role=\"button\"\n        className={cn(\n          'w-full flex-1 overflow-auto rounded-b-xl border border-border-light p-2 shadow-md transition-all duration-150 sm:p-4',\n          {\n            'cursor-pointer bg-surface-primary hover:bg-surface-secondary active:bg-surface-tertiary':\n              !isEditing,\n          },\n        )}\n        onClick={() => !isEditing && setIsEditing(true)}\n        onKeyDown={(e) => {\n          if (e.key === 'Enter' || e.key === ' ') {\n            !isEditing && setIsEditing(true);\n          }\n        }}\n        tabIndex={0}\n      >\n        {!isEditing && (\n          <EditIcon className=\"icon-xl absolute inset-0 m-auto hidden h-6 w-6 text-text-primary opacity-25 group-hover:block sm:h-8 sm:w-8\" />\n        )}\n        <Controller\n          name={name}\n          control={control}\n          render={({ field }) =>\n            isEditing ? (\n              <TextareaAutosize\n                {...field}\n                autoFocus\n                className=\"w-full resize-none overflow-y-auto rounded bg-transparent text-sm text-text-primary focus:outline-none sm:text-base\"\n                minRows={3}\n                maxRows={14}\n                onBlur={() => setIsEditing(false)}\n                onKeyDown={(e) => {\n                  if (e.key === 'Escape') {\n                    e.preventDefault();\n                    setIsEditing(false);\n                  }\n                }}\n              />\n            ) : (\n              <div\n                className={cn('overflow-y-auto text-sm sm:text-base')}\n                style={{ minHeight: '4.5em', maxHeight: '21em', overflow: 'auto' }}\n              >\n                <ReactMarkdown\n                  /** @ts-ignore */\n                  remarkPlugins={[\n                    supersub,\n                    remarkGfm,\n                    [remarkMath, { singleDollarTextMath: true }],\n                  ]}\n                  /** @ts-ignore */\n                  rehypePlugins={rehypePlugins}\n                  /** @ts-ignore */\n                  components={{ p: PromptVariableGfm, code: codeNoExecution }}\n                  className=\"markdown prose dark:prose-invert light my-1 w-full break-words text-text-primary\"\n                >\n                  {field.value}\n                </ReactMarkdown>\n              </div>\n            )\n          }\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default memo(PromptEditor);\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptForm.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport { useRecoilValue } from 'recoil';\nimport { Menu, Rocket } from 'lucide-react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useParams, useOutletContext } from 'react-router-dom';\nimport { useEffect, useState, useMemo, useCallback, useRef } from 'react';\nimport type { TCreatePrompt } from '~/data-provider/data-provider/src';\nimport { SystemRoles, PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport {\n  useCreatePrompt,\n  useGetPrompts,\n  useGetPromptGroup,\n  useUpdatePromptGroup,\n  useMakePromptProduction,\n  useDeletePrompt,\n} from '~/data-provider';\nimport { useAuthContext, usePromptGroupsNav, useHasAccess, useLocalize } from '~/hooks';\nimport CategorySelector from './Groups/CategorySelector';\nimport NoPromptGroup from './Groups/NoPromptGroup';\nimport { Button, Skeleton } from '~/components/ui';\nimport PromptVariables from './PromptVariables';\nimport { cn, findPromptGroup } from '~/utils';\nimport { useToastContext } from '~/Providers';\nimport PromptVersions from './PromptVersions';\nimport { PromptsEditorMode } from '~/common';\nimport DeleteConfirm from './DeleteVersion';\nimport PromptDetails from './PromptDetails';\nimport PromptEditor from './PromptEditor';\nimport SkeletonForm from './SkeletonForm';\nimport Description from './Description';\nimport SharePrompt from './SharePrompt';\nimport PromptName from './PromptName';\nimport Command from './Command';\nimport store from '~/store';\n\nconst PromptForm = () => {\n  const params = useParams();\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const alwaysMakeProd = useRecoilValue(store.alwaysMakeProd);\n  const { showToast } = useToastContext();\n  const promptId = params.promptId || '';\n\n  const [selectionIndex, setSelectionIndex] = useState<number>(0);\n  const editorMode = useRecoilValue(store.promptsEditorMode);\n  const prevIsEditingRef = useRef(false);\n  const [isEditing, setIsEditing] = useState(false);\n  const [initialLoad, setInitialLoad] = useState(true);\n  const [showSidePanel, setShowSidePanel] = useState(false);\n  const sidePanelWidth = '320px';\n\n  // Fetch group early so it is available for later hooks.\n  const { data: group, isLoading: isLoadingGroup } = useGetPromptGroup(promptId);\n  const { data: prompts = [], isLoading: isLoadingPrompts } = useGetPrompts(\n    { groupId: promptId },\n    { enabled: !!promptId },\n  );\n\n  const isOwner = useMemo(() => (user && group ? user.id === group.author : false), [user, group]);\n\n  const methods = useForm({\n    defaultValues: {\n      prompt: '',\n      promptName: group ? group.name : '',\n      category: group ? group.category : '',\n    },\n  });\n  const { handleSubmit, setValue, reset, watch } = methods;\n  const promptText = watch('prompt');\n\n  const selectedPrompt = useMemo(\n    () => (prompts.length > 0 ? prompts[selectionIndex] : undefined),\n    [prompts, selectionIndex],\n  );\n\n  const { groupsQuery } = useOutletContext<ReturnType<typeof usePromptGroupsNav>>();\n  const hasShareAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.SHARED_GLOBAL,\n  });\n\n  const updateGroupMutation = useUpdatePromptGroup({\n    onError: () => {\n      showToast({\n        status: 'error',\n        message: localize('com_ui_prompt_update_error'),\n      });\n    },\n  });\n\n  const makeProductionMutation = useMakePromptProduction();\n  const deletePromptMutation = useDeletePrompt();\n\n  const createPromptMutation = useCreatePrompt({\n    onMutate: (variables) => {\n      reset(\n        {\n          prompt: variables.prompt.prompt,\n          category: variables.group ? variables.group.category : '',\n        },\n        { keepDirtyValues: true },\n      );\n    },\n    onSuccess(data) {\n      if (alwaysMakeProd && data.prompt._id != null && data.prompt._id && data.prompt.groupId) {\n        makeProductionMutation.mutate({\n          id: data.prompt._id,\n          groupId: data.prompt.groupId,\n          productionPrompt: { prompt: data.prompt.prompt },\n        });\n      }\n\n      reset({\n        prompt: data.prompt.prompt,\n        promptName: data.group ? data.group.name : '',\n        category: data.group ? data.group.category : '',\n      });\n    },\n  });\n\n  const onSave = useCallback(\n    (value: string) => {\n      if (!value) {\n        // TODO: show toast, cannot be empty.\n        return;\n      }\n      if (!selectedPrompt) {\n        return;\n      }\n      const tempPrompt: TCreatePrompt = {\n        prompt: {\n          type: selectedPrompt.type ?? 'text',\n          groupId: selectedPrompt.groupId ?? '',\n          prompt: value,\n        },\n      };\n\n      if (value === selectedPrompt.prompt) {\n        return;\n      }\n\n      createPromptMutation.mutate(tempPrompt);\n    },\n    [selectedPrompt, createPromptMutation],\n  );\n\n  const handleLoadingComplete = useCallback(() => {\n    if (isLoadingGroup || isLoadingPrompts) {\n      return;\n    }\n    setInitialLoad(false);\n  }, [isLoadingGroup, isLoadingPrompts]);\n\n  useEffect(() => {\n    if (prevIsEditingRef.current && !isEditing) {\n      handleSubmit((data) => onSave(data.prompt))();\n    }\n    prevIsEditingRef.current = isEditing;\n  }, [isEditing, onSave, handleSubmit]);\n\n  useEffect(() => {\n    handleLoadingComplete();\n  }, [params.promptId, editorMode, group?.productionId, prompts, handleLoadingComplete]);\n\n  useEffect(() => {\n    setValue('prompt', selectedPrompt ? selectedPrompt.prompt : '', { shouldDirty: false });\n    setValue('category', group ? group.category : '', { shouldDirty: false });\n  }, [selectedPrompt, group, setValue]);\n\n  useEffect(() => {\n    const handleResize = () => {\n      if (window.matchMedia('(min-width: 1022px)').matches) {\n        setShowSidePanel(false);\n      }\n    };\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  const debouncedUpdateOneliner = useCallback(\n    debounce((oneliner: string) => {\n      if (!group || !group._id) {\n        return console.warn('Group not found');\n      }\n      updateGroupMutation.mutate({ id: group._id, payload: { oneliner } });\n    }, 950),\n    [updateGroupMutation, group],\n  );\n\n  const debouncedUpdateCommand = useCallback(\n    debounce((command: string) => {\n      if (!group || !group._id) {\n        return console.warn('Group not found');\n      }\n      updateGroupMutation.mutate({ id: group._id, payload: { command } });\n    }, 950),\n    [updateGroupMutation, group],\n  );\n\n  if (initialLoad) {\n    return <SkeletonForm />;\n  }\n\n  if (!isOwner && groupsQuery.data && user?.role !== SystemRoles.ADMIN) {\n    const fetchedPrompt = findPromptGroup(\n      groupsQuery.data,\n      (group) => group._id === params.promptId,\n    );\n    if (!fetchedPrompt) {\n      return <NoPromptGroup />;\n    }\n\n    return <PromptDetails group={fetchedPrompt} />;\n  }\n\n  if (!group || group._id == null) {\n    return null;\n  }\n\n  const groupId = group._id;\n\n  const groupName = group.name;\n  const groupCategory = group.category;\n\n  const RightPanel = () => (\n    <div\n      className=\"h-full w-full overflow-y-auto bg-surface-primary px-4\"\n      style={{ maxHeight: 'calc(100vh - 100px)' }}\n    >\n      <div className=\"mb-2 flex flex-col lg:flex-row lg:items-center lg:justify-center lg:gap-x-2 xl:flex-row xl:space-y-0\">\n        <CategorySelector\n          currentCategory={groupCategory}\n          onValueChange={(value) =>\n            updateGroupMutation.mutate({\n              id: groupId,\n              payload: { name: groupName, category: value },\n            })\n          }\n        />\n        <div className=\"mt-2 flex flex-row items-center justify-center gap-x-2 lg:mt-0\">\n          {hasShareAccess && <SharePrompt group={group} disabled={isLoadingGroup} />}\n          {editorMode === PromptsEditorMode.ADVANCED && (\n            <Button\n              variant=\"submit\"\n              size=\"sm\"\n              aria-label=\"Make prompt production\"\n              className=\"h-10 w-10 border border-transparent p-0.5 transition-all\"\n              onClick={() => {\n                if (!selectedPrompt) {\n                  console.warn('No prompt is selected');\n                  return;\n                }\n                const { _id: promptVersionId = '', prompt } = selectedPrompt;\n                makeProductionMutation.mutate({\n                  id: promptVersionId,\n                  groupId,\n                  productionPrompt: { prompt },\n                });\n              }}\n              disabled={\n                isLoadingGroup ||\n                !selectedPrompt ||\n                selectedPrompt._id === group.productionId ||\n                makeProductionMutation.isLoading\n              }\n            >\n              <Rocket className=\"size-5 cursor-pointer text-white\" />\n            </Button>\n          )}\n          <DeleteConfirm\n            name={groupName}\n            disabled={isLoadingGroup}\n            selectHandler={() => {\n              if (!selectedPrompt || !selectedPrompt._id) {\n                console.warn('No prompt is selected or prompt _id is missing');\n                return;\n              }\n              deletePromptMutation.mutate({\n                _id: selectedPrompt._id,\n                groupId,\n              });\n            }}\n          />\n        </div>\n      </div>\n      {editorMode === PromptsEditorMode.ADVANCED &&\n        (isLoadingPrompts\n          ? Array.from({ length: 6 }).map((_, index: number) => (\n            <div key={index} className=\"my-2\">\n              <Skeleton className=\"h-[72px] w-full\" />\n            </div>\n          ))\n          : prompts.length > 0 && (\n            <PromptVersions\n              group={group}\n              prompts={prompts}\n              selectionIndex={selectionIndex}\n              setSelectionIndex={setSelectionIndex}\n            />\n          ))}\n    </div>\n  );\n\n  return (\n    <FormProvider {...methods}>\n      <form className=\"mt-4 flex w-full\" onSubmit={handleSubmit((data) => onSave(data.prompt))}>\n        <div className=\"relative w-full\">\n          <div\n            className=\"h-full w-full\"\n            style={{\n              transform: `translateX(${showSidePanel ? `-${sidePanelWidth}` : '0'})`,\n              transition: 'transform 0.3s ease-in-out',\n            }}\n          >\n            <div className=\"flex h-full\">\n              <div className=\"flex-1 overflow-hidden px-4\">\n                <div className=\"mb-4 flex items-center gap-2 text-text-primary\">\n                  {isLoadingGroup ? (\n                    <Skeleton className=\"mb-1 flex h-10 w-32 font-bold sm:text-xl md:mb-0 md:h-12 md:text-2xl\" />\n                  ) : (\n                    <>\n                      <PromptName\n                        name={groupName}\n                        onSave={(value) => {\n                          if (!group._id) {\n                            return;\n                          }\n                          updateGroupMutation.mutate({ id: group._id, payload: { name: value } });\n                        }}\n                      />\n                      <div className=\"flex-1\" />\n                      <Button\n                        type=\"button\"\n                        variant=\"ghost\"\n                        className=\"h-10 w-10 border border-border-light p-0 lg:hidden\"\n                        onClick={() => setShowSidePanel(true)}\n                        aria-label={localize('com_endpoint_open_menu')}\n                      >\n                        <Menu className=\"size-5\" />\n                      </Button>\n                      <div className=\"hidden lg:block\">\n                        {editorMode === PromptsEditorMode.SIMPLE && <RightPanel />}\n                      </div>\n                    </>\n                  )}\n                </div>\n                {isLoadingPrompts ? (\n                  <Skeleton className=\"h-96\" aria-live=\"polite\" />\n                ) : (\n                  <div className=\"mb-2 flex h-full flex-col gap-4\">\n                    <PromptEditor name=\"prompt\" isEditing={isEditing} setIsEditing={setIsEditing} />\n                    <PromptVariables promptText={promptText} />\n                    <Description\n                      initialValue={group.oneliner ?? ''}\n                      onValueChange={debouncedUpdateOneliner}\n                    />\n                    <Command\n                      initialValue={group.command ?? ''}\n                      onValueChange={debouncedUpdateCommand}\n                    />\n                  </div>\n                )}\n              </div>\n\n              {editorMode === PromptsEditorMode.ADVANCED && (\n                <div className=\"hidden w-1/4 border-l border-border-light lg:block\">\n                  <RightPanel />\n                </div>\n              )}\n            </div>\n          </div>\n\n          <button\n            type=\"button\"\n            className={cn(\n              'absolute inset-0 z-40 cursor-default',\n              showSidePanel ? 'opacity-100' : 'pointer-events-none opacity-0',\n            )}\n            style={{ transition: 'opacity 0.3s ease-in-out' }}\n            onClick={() => setShowSidePanel(false)}\n            aria-hidden={!showSidePanel}\n            tabIndex={showSidePanel ? 0 : -1}\n            aria-label={localize('com_ui_close_menu')}\n          />\n          <div\n            className=\"absolute inset-y-0 right-0 z-50 lg:hidden\"\n            style={{\n              width: sidePanelWidth,\n              transform: `translateX(${showSidePanel ? '0' : '100%'})`,\n              transition: 'transform 0.3s ease-in-out',\n            }}\n            role=\"dialog\"\n            aria-modal=\"true\"\n            aria-label=\"Mobile navigation panel\"\n          >\n            <div className=\"h-full\">\n              <div className=\"h-full overflow-auto\">\n                <RightPanel />\n              </div>\n            </div>\n          </div>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default PromptForm;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptName.tsx",
    "content": "import React, { useEffect, useState, useRef } from 'react';\nimport { Button, Label, Input, EditIcon, SaveIcon } from '~/components';\n\ntype Props = {\n  name?: string;\n  onSave: (newName: string) => void;\n};\n\nconst PromptName: React.FC<Props> = ({ name, onSave }) => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const blurTimeoutRef = useRef<NodeJS.Timeout>();\n  const [isEditing, setIsEditing] = useState(false);\n  const [newName, setNewName] = useState(name);\n\n  const handleEditClick = () => {\n    setIsEditing(true);\n  };\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setNewName(e.target.value);\n  };\n\n  const saveName = () => {\n    const savedName = newName?.trim();\n    onSave(savedName || '');\n    setIsEditing(false);\n  };\n\n  const handleSaveClick: React.MouseEventHandler<HTMLButtonElement> = () => {\n    saveName();\n    clearTimeout(blurTimeoutRef.current);\n  };\n\n  const handleKeyDown = (e: React.KeyboardEvent) => {\n    if (e.key === 'Escape') {\n      setIsEditing(false);\n      setNewName(name);\n    }\n    if (e.key === 'Enter') {\n      saveName();\n    }\n  };\n\n  useEffect(() => {\n    if (isEditing) {\n      inputRef.current?.focus();\n    }\n  }, [isEditing]);\n\n  useEffect(() => {\n    setNewName(name);\n  }, [name]);\n\n  return (\n    <div className=\"flex items-center\">\n      <div\n        style={{\n          display: 'grid',\n          gridTemplateColumns: '1fr auto',\n          alignItems: 'center',\n        }}\n        className=\"gap-2\"\n      >\n        {isEditing ? (\n          <>\n            <Input\n              type=\"text\"\n              value={newName ?? ''}\n              onChange={handleInputChange}\n              onKeyDown={handleKeyDown}\n              ref={inputRef}\n              className=\"flex w-full max-w-none rounded-lg text-2xl font-bold transition duration-200\"\n              style={{\n                whiteSpace: 'nowrap',\n                textOverflow: 'ellipsis',\n              }}\n            />\n\n            <Button\n              onClick={handleSaveClick}\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"h-10 flex-shrink-0\"\n              aria-label=\"Save prompt name\"\n            >\n              <SaveIcon className=\"icon-md\" />\n            </Button>\n          </>\n        ) : (\n          <>\n            <Label\n              className=\"text-2xl font-bold\"\n              style={{\n                overflow: 'hidden',\n                whiteSpace: 'nowrap',\n                textOverflow: 'ellipsis',\n              }}\n            >\n              {newName}\n            </Label>\n            <Button\n              onClick={handleEditClick}\n              variant=\"ghost\"\n              size=\"sm\"\n              aria-label=\"Edit prompt name\"\n              className=\"h-10 flex-shrink-0\"\n            >\n              <EditIcon className=\"icon-md\" />\n            </Button>\n          </>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default PromptName;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptVariables.tsx",
    "content": "import React, { useMemo } from 'react';\nimport { Variable } from 'lucide-react';\nimport ReactMarkdown from 'react-markdown';\nimport { cn, extractUniqueVariables } from '~/utils';\nimport { CodeVariableGfm } from './Markdown';\nimport { Separator } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nconst specialVariables = {\n  current_date: true,\n  current_user: true,\n};\n\nconst specialVariableClasses =\n  'bg-yellow-500/25 text-yellow-600 dark:border-yellow-500/50 dark:bg-transparent dark:text-yellow-500/90';\n\nconst PromptVariables = ({\n  promptText,\n  showInfo = true,\n}: {\n  promptText: string;\n  showInfo?: boolean;\n}) => {\n  const localize = useLocalize();\n\n  const variables = useMemo(() => {\n    return extractUniqueVariables(promptText || '');\n  }, [promptText]);\n\n  return (\n    <div className=\"rounded-xl border border-border-light bg-transparent p-4 shadow-md\">\n      <h3 className=\"flex items-center gap-2 py-2 text-lg font-semibold text-text-primary\">\n        <Variable className=\"icon-sm\" aria-hidden=\"true\" />\n        {localize('com_ui_variables')}\n      </h3>\n      <div className=\"flex flex-col space-y-4\">\n        {variables.length ? (\n          <div className=\"flex flex-wrap gap-2\">\n            {variables.map((variable, index) => (\n              <span\n                className={cn(\n                  'rounded-full border border-border-light px-3 py-1 text-text-primary',\n                  specialVariables[variable.toLowerCase()] != null ? specialVariableClasses : '',\n                )}\n                key={index}\n              >\n                {specialVariables[variable.toLowerCase()] != null\n                  ? variable.toLowerCase()\n                  : variable}\n              </span>\n            ))}\n          </div>\n        ) : (\n          <div className=\"text-sm text-text-secondary\">\n            <ReactMarkdown components={{ code: CodeVariableGfm }}>\n              {localize('com_ui_variables_info')}\n            </ReactMarkdown>\n          </div>\n        )}\n        <Separator className=\"my-3 text-text-primary\" />\n        {showInfo && (\n          <div className=\"space-y-4\">\n            <div>\n              <span className=\"text-sm font-medium text-text-primary\">\n                {localize('com_ui_special_variables')}\n              </span>\n              <span className=\"text-sm text-text-secondary\">\n                <ReactMarkdown components={{ code: CodeVariableGfm }}>\n                  {localize('com_ui_special_variables_info')}\n                </ReactMarkdown>\n              </span>\n            </div>\n            <div>\n              <span className=\"text-sm font-medium text-text-primary\">\n                {localize('com_ui_dropdown_variables')}\n              </span>\n              <span className=\"text-sm text-text-secondary\">\n                <ReactMarkdown components={{ code: CodeVariableGfm }}>\n                  {localize('com_ui_dropdown_variables_info')}\n                </ReactMarkdown>\n              </span>\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default PromptVariables;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptVersions.tsx",
    "content": "import React from 'react';\nimport { format } from 'date-fns';\nimport { Layers3, Crown, Zap } from 'lucide-react';\nimport type { TPrompt, TPromptGroup } from '~/data-provider/data-provider/src';\nimport { Tag, TooltipAnchor, Label } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nconst CombinedStatusIcon = ({ description }: { description: string }) => (\n  <TooltipAnchor\n    description={description}\n    aria-label={description}\n    render={\n      <div className=\"flex items-center justify-center\">\n        <Crown className=\"h-4 w-4 text-amber-500\" />\n      </div>\n    }\n  ></TooltipAnchor>\n);\n\nconst VersionTags = ({ tags }: { tags: string[] }) => {\n  const localize = useLocalize();\n  const isLatestAndProduction = tags.includes('latest') && tags.includes('production');\n\n  if (isLatestAndProduction) {\n    return (\n      <span className=\"absolute bottom-3 right-3\">\n        <CombinedStatusIcon description={localize('com_ui_latest_production_version')} />\n      </span>\n    );\n  }\n\n  return (\n    <span className=\"flex gap-1 text-sm\">\n      {tags.map((tag, i) => (\n        <TooltipAnchor\n          description={\n            tag === 'production'\n              ? localize('com_ui_currently_production')\n              : localize('com_ui_latest_version')\n          }\n          key={`${tag}-${i}`}\n          aria-label={\n            tag === 'production'\n              ? localize('com_ui_currently_production')\n              : localize('com_ui_latest_version')\n          }\n          render={\n            <Tag\n              label={tag}\n              className={cn(\n                'w-24 justify-center border border-transparent',\n                tag === 'production'\n                  ? 'bg-green-100 text-green-500 dark:border-green-500 dark:bg-transparent dark:text-green-500'\n                  : 'bg-blue-100 text-blue-500 dark:border-blue-500 dark:bg-transparent dark:text-blue-500',\n              )}\n              labelClassName=\"flex items-center m-0 justify-center gap-1\"\n              LabelNode={(() => {\n                if (tag === 'production') {\n                  return (\n                    <div className=\"flex items-center\">\n                      <span className=\"slow-pulse size-2 rounded-full bg-green-400\" />\n                    </div>\n                  );\n                }\n                if (tag === 'latest') {\n                  return (\n                    <div className=\"flex items-center\">\n                      <Zap className=\"size-4\" />\n                    </div>\n                  );\n                }\n                return null;\n              })()}\n            />\n          }\n        ></TooltipAnchor>\n      ))}\n    </span>\n  );\n};\n\nconst VersionCard = ({\n  prompt,\n  index,\n  isSelected,\n  totalVersions,\n  onClick,\n  authorName,\n  tags,\n}: {\n  prompt: TPrompt;\n  index: number;\n  isSelected: boolean;\n  totalVersions: number;\n  onClick: () => void;\n  authorName?: string;\n  tags: string[];\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <button\n      type=\"button\"\n      className={cn(\n        'group relative w-full rounded-lg border border-border-light p-4 transition-all duration-300',\n        isSelected\n          ? 'bg-surface-hover shadow-xl'\n          : 'bg-surface-primary shadow-sm hover:bg-surface-secondary',\n      )}\n      onClick={onClick}\n      aria-selected={isSelected}\n      role=\"tab\"\n      aria-label={localize('com_ui_version_var', { 0: `${totalVersions - index}` })}\n    >\n      <div className=\"flex flex-col gap-2\">\n        <div className=\"flex items-start justify-between lg:flex-col xl:flex-row\">\n          <h3 className=\"font-bold text-text-primary\">\n            {localize('com_ui_version_var', { 0: `${totalVersions - index}` })}\n          </h3>\n          <time className=\"text-xs text-text-secondary\" dateTime={prompt.createdAt}>\n            {format(new Date(prompt.createdAt), 'yyyy-MM-dd HH:mm')}\n          </time>\n        </div>\n\n        <div className=\"flex items-center gap-1 lg:flex-col xl:flex-row\">\n          {authorName && (\n            <Label className=\"text-left text-xs text-text-secondary\">by {authorName}</Label>\n          )}\n\n          {tags.length > 0 && <VersionTags tags={tags} />}\n        </div>\n      </div>\n    </button>\n  );\n};\n\nconst PromptVersions = ({\n  prompts,\n  group,\n  selectionIndex,\n  setSelectionIndex,\n}: {\n  prompts: TPrompt[];\n  group?: TPromptGroup;\n  selectionIndex: number;\n  setSelectionIndex: React.Dispatch<React.SetStateAction<number>>;\n}) => {\n  const localize = useLocalize();\n\n  return (\n    <section className=\"my-6\" aria-label=\"Prompt Versions\">\n      <header className=\"mb-6\">\n        <h2 className=\"flex items-center gap-2 text-base font-semibold text-text-primary\">\n          <Layers3 className=\"h-5 w-5 text-green-500\" />\n          {localize('com_ui_versions')}\n        </h2>\n      </header>\n\n      <div className=\"flex flex-col gap-3\" role=\"tablist\" aria-label=\"Version history\">\n        {prompts.map((prompt: TPrompt, index: number) => {\n          const tags: string[] = [];\n\n          if (index === 0) {\n            tags.push('latest');\n          }\n\n          if (prompt._id === group?.productionId) {\n            tags.push('production');\n          }\n\n          return (\n            <VersionCard\n              key={prompt._id}\n              prompt={prompt}\n              index={index}\n              isSelected={index === selectionIndex}\n              totalVersions={prompts.length}\n              onClick={() => setSelectionIndex(index)}\n              authorName={group?.authorName}\n              tags={tags}\n            />\n          );\n        })}\n      </div>\n    </section>\n  );\n};\n\nexport default PromptVersions;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptsAccordion.tsx",
    "content": "import PromptSidePanel from '~/components/Prompts/Groups/GroupSidePanel';\nimport AutoSendPrompt from '~/components/Prompts/Groups/AutoSendPrompt';\nimport FilterPrompts from '~/components/Prompts/Groups/FilterPrompts';\nimport ManagePrompts from '~/components/Prompts/ManagePrompts';\nimport { usePromptGroupsNav } from '~/hooks';\n\nexport default function PromptsAccordion() {\n  const groupsNav = usePromptGroupsNav();\n  return (\n    <div className=\"flex h-full w-full flex-col\">\n      <PromptSidePanel className=\"lg:w-full xl:w-full\" {...groupsNav}>\n        <div className=\"flex w-full flex-row items-center justify-between pt-2\">\n          <ManagePrompts className=\"select-none\" />\n          <AutoSendPrompt className=\"text-xs dark:text-white\" />\n        </div>\n        <FilterPrompts setName={groupsNav.setName} className=\"items-center justify-center\" />\n      </PromptSidePanel>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/PromptsView.tsx",
    "content": "import { useMemo, useEffect } from 'react';\nimport { Outlet, useParams, useNavigate } from 'react-router-dom';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport FilterPrompts from '~/components/Prompts/Groups/FilterPrompts';\nimport DashBreadcrumb from '~/routes/Layouts/DashBreadcrumb';\nimport { usePromptGroupsNav, useHasAccess } from '~/hooks';\nimport GroupSidePanel from './Groups/GroupSidePanel';\nimport { cn } from '~/utils';\n\nexport default function PromptsView() {\n  const params = useParams();\n  const navigate = useNavigate();\n  const groupsNav = usePromptGroupsNav();\n  const isDetailView = useMemo(() => !!(params.promptId || params['*'] === 'new'), [params]);\n  const hasAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.USE,\n  });\n\n  useEffect(() => {\n    let timeoutId: ReturnType<typeof setTimeout>;\n    if (!hasAccess) {\n      timeoutId = setTimeout(() => {\n        navigate('/c/new');\n      }, 1000);\n    }\n    return () => {\n      clearTimeout(timeoutId);\n    };\n  }, [hasAccess, navigate]);\n\n  if (!hasAccess) {\n    return null;\n  }\n\n  return (\n    <div className=\"flex h-screen w-full flex-col bg-surface-primary p-0 lg:p-2\">\n      <DashBreadcrumb />\n      <div className=\"flex w-full flex-grow flex-row divide-x overflow-hidden dark:divide-gray-600\">\n        <GroupSidePanel isDetailView={isDetailView} {...groupsNav}>\n          <div className=\"mx-2 mt-1 flex flex-row items-center justify-between\">\n            <FilterPrompts setName={groupsNav.setName} />\n          </div>\n        </GroupSidePanel>\n        <div\n          className={cn(\n            'scrollbar-gutter-stable w-full overflow-y-auto lg:w-3/4 xl:w-3/4',\n            isDetailView ? 'block' : 'hidden md:block',\n          )}\n        >\n          <Outlet context={groupsNav} />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/SharePrompt.tsx",
    "content": "import React, { useEffect, useMemo } from 'react';\nimport { Share2Icon } from 'lucide-react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { Permissions } from '~/data-provider/data-provider/src';\nimport type {\n  TPromptGroup,\n  TStartupConfig,\n  TUpdatePromptGroupPayload,\n} from '~/data-provider/data-provider/src';\nimport {\n  Button,\n  Switch,\n  OGDialog,\n  OGDialogTitle,\n  OGDialogClose,\n  OGDialogContent,\n  OGDialogTrigger,\n} from '~/components/ui';\nimport { useUpdatePromptGroup, useGetStartupConfig } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\ntype FormValues = {\n  [Permissions.SHARED_GLOBAL]: boolean;\n};\n\nconst SharePrompt = ({ group, disabled }: { group?: TPromptGroup; disabled: boolean }) => {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const updateGroup = useUpdatePromptGroup();\n  const { data: startupConfig = {} as TStartupConfig, isFetching } = useGetStartupConfig();\n  const { instanceProjectId } = startupConfig;\n  const groupIsGlobal = useMemo(\n    () => ((group?.projectIds ?? []) as string[]).includes(instanceProjectId as string),\n    [group, instanceProjectId],\n  );\n\n  const {\n    control,\n    setValue,\n    handleSubmit,\n    formState: { isSubmitting },\n  } = useForm<FormValues>({\n    mode: 'onChange',\n    defaultValues: {\n      [Permissions.SHARED_GLOBAL]: groupIsGlobal,\n    },\n  });\n\n  useEffect(() => {\n    setValue(Permissions.SHARED_GLOBAL, groupIsGlobal);\n  }, [groupIsGlobal, setValue]);\n\n  if (group == null || !instanceProjectId) {\n    return null;\n  }\n\n  const onSubmit = (data: FormValues) => {\n    const groupId = group._id ?? '';\n    if (groupId === '' || !instanceProjectId) {\n      return;\n    }\n\n    if (data[Permissions.SHARED_GLOBAL] === true && groupIsGlobal) {\n      showToast({\n        message: localize('com_ui_prompt_already_shared_to_all'),\n        status: 'info',\n      });\n      return;\n    }\n\n    const payload = {} as TUpdatePromptGroupPayload;\n    if (data[Permissions.SHARED_GLOBAL] === true) {\n      payload.projectIds = [startupConfig.instanceProjectId];\n    } else {\n      payload.removeProjectIds = [startupConfig.instanceProjectId];\n    }\n\n    updateGroup.mutate({\n      id: groupId,\n      payload,\n    });\n  };\n\n  return (\n    <OGDialog>\n      <OGDialogTrigger asChild>\n        <Button\n          variant=\"default\"\n          size=\"sm\"\n          aria-label=\"Share prompt\"\n          className=\"h-10 w-10 border border-transparent bg-blue-500/90 p-0.5 transition-all hover:bg-blue-600 dark:bg-blue-600 dark:hover:bg-blue-800\"\n          disabled={disabled}\n        >\n          <Share2Icon className=\"size-5 cursor-pointer text-white\" />\n        </Button>\n      </OGDialogTrigger>\n      <OGDialogContent className=\"w-11/12 max-w-lg\" role=\"dialog\" aria-labelledby=\"dialog-title\">\n        <OGDialogTitle id=\"dialog-title\" className=\"truncate pr-2\" title={group.name}>\n          {localize('com_ui_share_var', { 0: `\"${group.name}\"` })}\n        </OGDialogTitle>\n        <form className=\"p-2\" onSubmit={handleSubmit(onSubmit)} aria-describedby=\"form-description\">\n          <div id=\"form-description\" className=\"sr-only\">\n            {localize('com_ui_share_form_description')}\n          </div>\n          <div className=\"mb-4 flex items-center justify-between gap-2 py-4\">\n            <div className=\"flex items-center\" id=\"share-to-all-users\">\n              {localize('com_ui_share_to_all_users')}\n            </div>\n            <Controller\n              name={Permissions.SHARED_GLOBAL}\n              control={control}\n              disabled={isFetching === true || updateGroup.isLoading || !instanceProjectId}\n              render={({ field }) => (\n                <Switch\n                  {...field}\n                  checked={field.value}\n                  onCheckedChange={field.onChange}\n                  value={field.value.toString()}\n                  aria-labelledby=\"share-to-all-users\"\n                />\n              )}\n            />\n          </div>\n          <div className=\"flex justify-end\">\n            <OGDialogClose asChild>\n              <Button\n                type=\"submit\"\n                disabled={isSubmitting || isFetching}\n                variant=\"submit\"\n                aria-label={localize('com_ui_save')}\n              >\n                {localize('com_ui_save')}\n              </Button>\n            </OGDialogClose>\n          </div>\n        </form>\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default SharePrompt;\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/SkeletonForm.tsx",
    "content": "import { Skeleton } from '~/components/ui';\n\nexport default function SkeletonForm() {\n  return (\n    <div>\n      <div className=\"flex flex-col items-center justify-between px-4 dark:text-gray-200 sm:flex-row\">\n        <Skeleton className=\"mb-1 flex h-10 w-32 flex-row items-center font-bold sm:text-xl md:mb-0 md:h-12 md:text-2xl\" />\n      </div>\n      <div className=\"flex h-full w-full flex-col md:flex-row\">\n        {/* Left Section */}\n        <div className=\"flex-1 overflow-y-auto border-border-medium-alt p-4 md:max-h-[calc(100vh-150px)] md:border-r\">\n          <Skeleton className=\"h-96\" />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Prompts/index.ts",
    "content": "export { default as PromptName } from './PromptName';\nexport { default as PromptsView } from './PromptsView';\nexport { default as PromptEditor } from './PromptEditor';\nexport { default as PromptForm } from './PromptForm';\nexport { default as PreviewLabels } from './PreviewLabels';\nexport { default as PromptGroupsList } from './Groups/List';\nexport { default as DashGroupItem } from './Groups/DashGroupItem';\nexport { default as EmptyPromptPreview } from './EmptyPromptPreview';\nexport { default as PromptSidePanel } from './Groups/GroupSidePanel';\nexport { default as CreatePromptForm } from './Groups/CreatePromptForm';\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/Message.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport type { TMessageProps } from '~/common';\nimport MinimalHoverButtons from '~/components/Chat/Messages/MinimalHoverButtons';\nimport MessageContent from '~/components/Chat/Messages/Content/MessageContent';\nimport SearchContent from '~/components/Chat/Messages/Content/SearchContent';\nimport SiblingSwitch from '~/components/Chat/Messages/SiblingSwitch';\nimport { Plugin } from '~/components/Messages/Content';\nimport SubRow from '~/components/Chat/Messages/SubRow';\nimport { MessageContext } from '~/Providers';\n// eslint-disable-next-line import/no-cycle\nimport MultiMessage from './MultiMessage';\nimport { cn } from '~/utils';\nimport store from '~/store';\n\nimport Icon from './MessageIcon';\nexport default function Message(props: TMessageProps) {\n  const fontSize = useRecoilValue(store.fontSize);\n  const {\n    message,\n    siblingIdx,\n    siblingCount,\n    conversation,\n    setSiblingIdx,\n    currentEditId,\n    setCurrentEditId,\n  } = props;\n\n  if (!message) {\n    return null;\n  }\n\n  const {\n    text = '',\n    children,\n    error = false,\n    messageId = '',\n    unfinished = false,\n    isCreatedByUser = true,\n  } = message;\n\n  let messageLabel = '';\n  if (isCreatedByUser) {\n    messageLabel = 'anonymous';\n  } else {\n    messageLabel = message.sender ?? '';\n  }\n\n  return (\n    <>\n      <div className=\"text-token-text-primary w-full border-0 bg-transparent dark:border-0 dark:bg-transparent\">\n        <div className=\"m-auto justify-center p-4 py-2 md:gap-6 \">\n          <div className=\"final-completion group mx-auto flex flex-1 gap-3 md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5\">\n            <div className=\"relative flex flex-shrink-0 flex-col items-end\">\n              <div>\n                <div className=\"pt-0.5\">\n                  <div className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full\">\n                    <Icon message={message} conversation={conversation} />\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div\n              className={cn('relative flex w-11/12 flex-col', isCreatedByUser ? '' : 'agent-turn')}\n            >\n              <div className={cn('select-none font-semibold', fontSize)}>{messageLabel}</div>\n              <div className=\"flex-col gap-1 md:gap-3\">\n                <div className=\"flex max-w-full flex-grow flex-col gap-0\">\n                  <MessageContext.Provider\n                    value={{\n                      messageId,\n                      conversationId: conversation?.conversationId,\n                    }}\n                  >\n                    {/* Legacy Plugins */}\n                    {message.plugin && <Plugin plugin={message.plugin} />}\n                    {message.content ? (\n                      <SearchContent message={message} />\n                    ) : (\n                      <MessageContent\n                        edit={false}\n                        error={error}\n                        isLast={false}\n                        ask={() => ({})}\n                        text={text || ''}\n                        message={message}\n                        isSubmitting={false}\n                        enterEdit={() => ({})}\n                        unfinished={unfinished}\n                        siblingIdx={siblingIdx ?? 0}\n                        isCreatedByUser={isCreatedByUser}\n                        setSiblingIdx={setSiblingIdx ?? (() => ({}))}\n                      />\n                    )}\n                  </MessageContext.Provider>\n                </div>\n              </div>\n              <SubRow classes=\"text-xs\">\n                <SiblingSwitch\n                  siblingIdx={siblingIdx}\n                  siblingCount={siblingCount}\n                  setSiblingIdx={setSiblingIdx}\n                />\n                <MinimalHoverButtons message={message} />\n              </SubRow>\n            </div>\n          </div>\n        </div>\n      </div>\n      <MultiMessage\n        key={messageId}\n        messageId={messageId}\n        messagesTree={children ?? []}\n        currentEditId={currentEditId}\n        setCurrentEditId={setCurrentEditId}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/MessageIcon.tsx",
    "content": "import { useMemo } from 'react';\nimport type { TMessage, TPreset, Assistant, Agent } from '~/data-provider/data-provider/src';\nimport type { TMessageProps } from '~/common';\nimport MessageEndpointIcon from '../Endpoints/MessageEndpointIcon';\nimport ConvoIconURL from '~/components/Endpoints/ConvoIconURL';\nimport { getIconEndpoint } from '~/utils';\nimport { UserIcon } from '../svg';\n\nexport default function MessageIcon(\n  props: Pick<TMessageProps, 'message' | 'conversation'> & {\n    assistant?: false | Assistant;\n    agent?: false | Agent;\n  },\n) {\n  const { message, conversation, assistant, agent } = props;\n\n  const assistantName = assistant ? (assistant.name as string | undefined) : '';\n  const assistantAvatar = assistant ? (assistant.metadata?.avatar as string | undefined) : '';\n  const agentName = agent ? (agent.name as string | undefined) : '';\n  const agentAvatar = agent ? (agent.metadata?.avatar as string | undefined) : '';\n\n  const messageSettings = useMemo(\n    () => ({\n      ...(conversation ?? {}),\n      ...({\n        ...message,\n        iconURL: message?.iconURL ?? '',\n      } as TMessage),\n    }),\n    [conversation, message],\n  );\n\n  const iconURL = messageSettings.iconURL ?? '';\n  let endpoint = messageSettings.endpoint;\n  endpoint = getIconEndpoint({ endpointsConfig: undefined, iconURL, endpoint });\n\n  if (message?.isCreatedByUser !== true && iconURL && iconURL.includes('http')) {\n    return (\n      <ConvoIconURL\n        iconURL={iconURL}\n        modelLabel={messageSettings.chatGptLabel ?? messageSettings.modelLabel ?? ''}\n        context=\"message\"\n        assistantAvatar={assistantAvatar}\n        assistantName={assistantName}\n        agentAvatar={agentAvatar}\n        agentName={agentName}\n      />\n    );\n  }\n\n  if (message?.isCreatedByUser === true) {\n    return (\n      <div\n        style={{\n          backgroundColor: 'rgb(121, 137, 255)',\n          width: '20px',\n          height: '20px',\n          boxShadow: 'rgba(240, 246, 252, 0.1) 0px 0px 0px 1px',\n        }}\n        className=\"relative flex h-9 w-9 items-center justify-center rounded-sm p-1 text-white\"\n      >\n        <UserIcon />\n      </div>\n    );\n  }\n\n  return (\n    <MessageEndpointIcon\n      {...messageSettings}\n      endpoint={endpoint}\n      iconURL={assistant == null ? undefined : assistantAvatar}\n      model={message?.model ?? conversation?.model}\n      assistantName={assistantName}\n      agentName={agentName}\n      size={28.8}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/MessagesView.tsx",
    "content": "import { useState } from 'react';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport MultiMessage from './MultiMessage';\n\nexport default function MessagesView({\n  messagesTree: _messagesTree,\n  conversationId,\n}: {\n  messagesTree?: TMessage[] | null;\n  conversationId: string;\n}) {\n  const [currentEditId, setCurrentEditId] = useState<number | string | null>(-1);\n  return (\n    <div className=\"flex-1 pb-[50px]\">\n      <div className=\"dark:gpt-dark-gray relative h-full\">\n        <div\n          style={{\n            height: '100%',\n            overflowY: 'auto',\n            width: '100%',\n          }}\n        >\n          <div className=\"flex flex-col pb-9 text-sm dark:bg-transparent\">\n            {(_messagesTree && _messagesTree.length == 0) || _messagesTree === null ? (\n              <div className=\"flex w-full items-center justify-center gap-1 bg-gray-50 p-3 text-sm text-gray-500 dark:border-gray-800/50 dark:bg-gray-800 dark:text-gray-300\">\n                Nothing found\n              </div>\n            ) : (\n              <>\n                <div>\n                  <MultiMessage\n                    key={conversationId} // avoid internal state mixture\n                    messagesTree={_messagesTree}\n                    messageId={conversationId ?? null}\n                    setCurrentEditId={setCurrentEditId}\n                    currentEditId={currentEditId ?? null}\n                  />\n                </div>\n              </>\n            )}\n            <div className=\"dark:gpt-dark-gray group h-0 w-full flex-shrink-0 dark:border-gray-800/50\" />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/MultiMessage.tsx",
    "content": "import { useEffect } from 'react';\nimport { useRecoilState } from 'recoil';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport type { TMessageProps } from '~/common';\n// eslint-disable-next-line import/no-cycle\nimport Message from './Message';\nimport store from '~/store';\n\nexport default function MultiMessage({\n  // messageId is used recursively here\n  messageId,\n  messagesTree,\n  currentEditId,\n  setCurrentEditId,\n}: TMessageProps) {\n  const [siblingIdx, setSiblingIdx] = useRecoilState(store.messagesSiblingIdxFamily(messageId));\n\n  const setSiblingIdxRev = (value: number) => {\n    setSiblingIdx((messagesTree?.length ?? 0) - value - 1);\n  };\n\n  useEffect(() => {\n    // reset siblingIdx when the tree changes, mostly when a new message is submitting.\n    setSiblingIdx(0);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [messagesTree?.length]);\n\n  useEffect(() => {\n    if (messagesTree?.length != null && siblingIdx >= messagesTree.length) {\n      setSiblingIdx(0);\n    }\n  }, [siblingIdx, messagesTree?.length, setSiblingIdx]);\n\n  if (!(messagesTree && messagesTree.length)) {\n    return null;\n  }\n\n  const message = messagesTree[messagesTree.length - siblingIdx - 1] as TMessage | null;\n  if (!message) {\n    return null;\n  }\n\n  return (\n    <Message\n      key={message.messageId}\n      message={message}\n      currentEditId={currentEditId}\n      setCurrentEditId={setCurrentEditId}\n      siblingIdx={messagesTree.length - siblingIdx - 1}\n      siblingCount={messagesTree.length}\n      setSiblingIdx={setSiblingIdxRev}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/ShareChat.tsx",
    "content": "import { Share2Icon } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useToastContext } from \"~/Providers\";\nimport { getShareLinkApi } from \"~/api\";\nimport { useLocalize } from \"~/hooks\";\nimport { copyText } from \"~/utils\";\nimport { Button, Dialog, DialogContent, DialogHeader, DialogTitle, Input } from \"../ui\";\n\ninterface ShareDialogProps {\n    type: 'linsight_session' | 'workbench_chat' | 'workflow' | 'skill' | 'assistant'\n    chatId: string\n    flowId?: string\n    versionId?: string\n}\n\nexport default function ShareChat({ type, chatId, flowId, versionId }: ShareDialogProps) {\n    const [isOpen, setIsOpen] = useState(false)\n    const [copied, setCopied] = useState(false)\n    const { showToast } = useToastContext()\n\n    const [shareUrl, setShareUrl] = useState('')\n    const localize = useLocalize()\n\n    const handleCopy = async () => {\n        try {\n            await copyText(shareUrl)\n            setCopied(true)\n            setTimeout(() => {\n                setCopied(false)\n                setIsOpen(false)\n                showToast({\n                    message: localize('com_ui_duplicated'),\n                    status: 'success',\n                })\n            }, 1000)\n        } catch (err) {\n            console.error(\"Failed to copy:\", err)\n        }\n    }\n\n    useEffect(() => {\n        isOpen ? getShareLinkApi(type, chatId, {\n            flowId,\n            versionId\n        }).then(res => {\n            const shareUrl = `${location.origin}${__APP_ENV__.BASE_URL}/share/${res.data.share_token}${versionId ? '/' + versionId : ''}`;\n            setShareUrl(shareUrl);\n        }) : setShareUrl('');\n    }, [isOpen])\n\n    return <div>\n        <Button variant=\"outline\" className=\"h-7 px-3 text-xs\" onClick={() => setIsOpen(true)}>\n            <Share2Icon size={16} />\n            {localize('com_ui_share')}\n        </Button>\n\n        <Dialog open={isOpen} onOpenChange={setIsOpen}>\n            <DialogContent className=\"sm:max-w-xl\">\n                <DialogHeader>\n                    <DialogTitle className=\"text-lg font-medium\">\n                        {localize('com_share_title')}\n                    </DialogTitle>\n                </DialogHeader>\n\n                <div className=\"space-y-2 pt-2\">\n                    <p className=\"text-sm text-muted-foreground\">\n                        {localize('com_share_desc')}\n                    </p>\n\n                    <div className=\"flex items-center gap-2 w-full\">\n                        <Input\n                            readOnly\n                            value={shareUrl}\n                            className=\"flex-1 bg-muted/50 select-none\"\n                            onMouseDown={(e) => {\n                                e.preventDefault();\n                            }} />\n                        <Button onClick={handleCopy}>\n                            {copied ? localize('com_ui_duplicated') : localize('com_ui_copy_link')}\n                        </Button>\n                    </div>\n                </div>\n            </DialogContent>\n        </Dialog>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Share/ShareView.tsx",
    "content": "import { memo } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useGetSharedMessages } from '~/data-provider/data-provider/src/react-query';\nimport { useLocalize, useDocumentTitle } from '~/hooks';\nimport { useGetStartupConfig } from '~/data-provider';\nimport { ShareContext } from '~/Providers';\nimport { Spinner } from '~/components/svg';\nimport MessagesView from './MessagesView';\nimport { buildTree } from '~/utils';\nimport Footer from '../Chat/Footer';\n\nfunction SharedView() {\n  const localize = useLocalize();\n  const { data: config } = useGetStartupConfig();\n  const { shareId } = useParams();\n  const { data, isLoading } = useGetSharedMessages(shareId ?? '');\n  const dataTree = data && buildTree({ messages: data.messages });\n  const messagesTree = dataTree?.length === 0 ? null : dataTree ?? null;\n\n  // configure document title\n  let docTitle = '';\n  if (config?.appTitle != null && data?.title != null) {\n    docTitle = `${data.title} | ${config.appTitle}`;\n  } else {\n    docTitle = data?.title ?? config?.appTitle ?? document.title;\n  }\n\n  useDocumentTitle(docTitle);\n\n  let content: JSX.Element;\n  if (isLoading) {\n    content = (\n      <div className=\"flex h-screen items-center justify-center\">\n        <Spinner className=\"\" />\n      </div>\n    );\n  } else if (data && messagesTree && messagesTree.length !== 0) {\n    content = (\n      <>\n        <div className=\"final-completion group mx-auto flex min-w-[40rem] flex-col gap-3 pb-6 pt-4 md:max-w-3xl md:px-5 lg:max-w-[40rem] lg:px-1 xl:max-w-[48rem] xl:px-5\">\n          <h1 className=\"text-4xl font-bold\">{data.title}</h1>\n          <div className=\"border-b border-border-medium pb-6 text-base text-text-secondary\">\n            {new Date(data.createdAt).toLocaleDateString('en-US', {\n              month: 'long',\n              day: 'numeric',\n              year: 'numeric',\n            })}\n          </div>\n        </div>\n\n        <MessagesView messagesTree={messagesTree} conversationId={data.conversationId} />\n      </>\n    );\n  } else {\n    content = (\n      <div className=\"flex h-screen items-center justify-center \">\n        {localize('com_ui_shared_link_not_found')}\n      </div>\n    );\n  }\n\n  return (\n    <ShareContext.Provider value={{ isSharedConvo: true }}>\n      <main\n        className=\"relative flex w-full grow overflow-hidden dark:bg-surface-secondary\"\n        style={{ paddingBottom: '50px' }}\n      >\n        <div className=\"transition-width relative flex h-full w-full flex-1 flex-col items-stretch overflow-hidden pt-0 dark:bg-surface-secondary\">\n          <div className=\"flex h-full flex-col text-text-primary\" role=\"presentation\">\n            {content}\n            <div className=\"w-full border-t-0 pl-0 pt-2 md:w-[calc(100%-.5rem)] md:border-t-0 md:border-transparent md:pl-0 md:pt-0 md:dark:border-transparent\">\n              <Footer className=\"fixed bottom-0 left-0 right-0 z-50 flex items-center justify-center gap-2 bg-gradient-to-t from-surface-secondary to-transparent px-2 pb-2 pt-8 text-xs text-text-secondary md:px-[60px]\" />\n            </div>\n          </div>\n        </div>\n      </main>\n    </ShareContext.Provider>\n  );\n}\n\nexport default memo(SharedView);\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/AgentSwitcher.tsx",
    "content": "import { useEffect, useMemo } from 'react';\nimport { EModelEndpoint, isAgentsEndpoint, LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport type { Agent } from '~/data-provider/data-provider/src';\nimport type { SwitcherProps, OptionWithIcon } from '~/common';\nimport { useSetIndexOptions, useSelectAgent, useLocalize } from '~/hooks';\nimport { useChatContext, useAgentsMapContext } from '~/Providers';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport Icon from '~/components/Endpoints/Icon';\n\nexport default function AgentSwitcher({ isCollapsed }: SwitcherProps) {\n  const localize = useLocalize();\n  const { setOption } = useSetIndexOptions();\n  const { index, conversation } = useChatContext();\n  const { agent_id: selectedAgentId = null, endpoint } = conversation ?? {};\n\n  const agentsMapResult = useAgentsMapContext();\n\n  const agentsMap = useMemo(() => {\n    return agentsMapResult ?? {};\n  }, [agentsMapResult]);\n\n  const { onSelect } = useSelectAgent();\n\n  const agents: Agent[] = useMemo(() => {\n    return Object.values(agentsMap) as Agent[];\n  }, [agentsMap]);\n\n  useEffect(() => {\n    if (selectedAgentId == null && agents.length > 0) {\n      let agent_id = localStorage.getItem(`${LocalStorageKeys.AGENT_ID_PREFIX}${index}`);\n      if (agent_id == null) {\n        agent_id = agents[0].id;\n      }\n      const agent = agentsMap[agent_id];\n\n      if (agent !== undefined && isAgentsEndpoint(endpoint as string) === true) {\n        setOption('model')('');\n        setOption('agent_id')(agent_id);\n      }\n    }\n  }, [index, agents, selectedAgentId, agentsMap, endpoint, setOption]);\n\n  const currentAgent = agentsMap[selectedAgentId ?? ''];\n\n  const agentOptions: OptionWithIcon[] = useMemo(\n    () =>\n      agents.map((agent: Agent) => {\n        return {\n          label: agent.name ?? '',\n          value: agent.id,\n          icon: (\n            <Icon\n              isCreatedByUser={false}\n              endpoint={EModelEndpoint.agents}\n              agentName={agent.name ?? ''}\n              iconURL={agent.avatar?.filepath}\n            />\n          ),\n        };\n      }),\n    [agents],\n  );\n\n  return (\n    <ControlCombobox\n      selectedValue={currentAgent?.id ?? ''}\n      displayValue={\n        agents.find((agent: Agent) => agent.id === selectedAgentId)?.name ??\n        localize('com_sidepanel_select_agent')\n      }\n      selectPlaceholder={localize('com_sidepanel_select_agent')}\n      searchPlaceholder={localize('com_agents_search_name')}\n      isCollapsed={isCollapsed}\n      ariaLabel={'agent'}\n      setValue={onSelect}\n      items={agentOptions}\n      iconClassName=\"assistant-item\"\n      SelectIcon={\n        <Icon\n          isCreatedByUser={false}\n          endpoint={endpoint}\n          agentName={currentAgent?.name ?? ''}\n          iconURL={currentAgent?.avatar?.filepath ?? ''}\n        />\n      }\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ActionsInput.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport { useState, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n  validateAndParseOpenAPISpec,\n  openapiToFunction,\n  AuthTypeEnum,\n} from '~/data-provider/data-provider/src';\nimport type {\n  Action,\n  FunctionTool,\n  ActionMetadata,\n  ValidationResult,\n} from '~/data-provider/data-provider/src';\nimport type { ActionAuthForm } from '~/common';\nimport type { Spec } from './ActionsTable';\nimport ActionCallback from '~/components/SidePanel/Builder/ActionCallback';\nimport { ActionsTable, columns } from './ActionsTable';\nimport { useUpdateAgentAction } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport useLocalize from '~/hooks/useLocalize';\nimport { Spinner } from '~/components/svg';\nimport { logger } from '~/utils';\n\nconst debouncedValidation = debounce(\n  (input: string, callback: (result: ValidationResult) => void) => {\n    const result = validateAndParseOpenAPISpec(input);\n    callback(result);\n  },\n  800,\n);\n\nexport default function ActionsInput({\n  action,\n  agent_id,\n  setAction,\n}: {\n  action?: Action;\n  agent_id?: string;\n  setAction: React.Dispatch<React.SetStateAction<Action | undefined>>;\n}) {\n  const handleResult = (result: ValidationResult) => {\n    if (!result.status) {\n      setData(null);\n      setFunctions(null);\n    }\n    setValidationResult(result);\n  };\n\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const { handleSubmit, reset } = useFormContext<ActionAuthForm>();\n  const [validationResult, setValidationResult] = useState<null | ValidationResult>(null);\n  const [inputValue, setInputValue] = useState('');\n\n  const [data, setData] = useState<Spec[] | null>(null);\n  const [functions, setFunctions] = useState<FunctionTool[] | null>(null);\n\n  useEffect(() => {\n    const rawSpec = action?.metadata.raw_spec ?? '';\n    if (!rawSpec) {\n      return;\n    }\n    setInputValue(rawSpec);\n    debouncedValidation(rawSpec, handleResult);\n  }, [action?.metadata.raw_spec]);\n\n  useEffect(() => {\n    if (!validationResult || !validationResult.status || !validationResult.spec) {\n      return;\n    }\n\n    const { functionSignatures, requestBuilders } = openapiToFunction(validationResult.spec);\n    const specs = Object.entries(requestBuilders).map(([name, props]) => {\n      return {\n        name,\n        method: props.method,\n        path: props.path,\n        domain: props.domain,\n      };\n    });\n\n    setData(specs);\n    setValidationResult(null);\n    setFunctions(functionSignatures.map((f) => f.toObjectTool()));\n  }, [validationResult]);\n\n  const updateAgentAction = useUpdateAgentAction({\n    onSuccess(data) {\n      showToast({\n        message: localize('com_assistants_update_actions_success'),\n        status: 'success',\n      });\n      reset();\n      setAction(data[1]);\n    },\n    onError(error) {\n      showToast({\n        message: (error as Error).message || localize('com_assistants_update_actions_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const saveAction = handleSubmit((authFormData) => {\n    logger.log('actions', 'saving action', authFormData);\n    const currentAgentId = agent_id ?? '';\n    if (!currentAgentId) {\n      // alert user?\n      return;\n    }\n\n    if (!functions) {\n      return;\n    }\n\n    if (!data) {\n      return;\n    }\n\n    let { metadata = {} } = action ?? {};\n    const action_id = action?.action_id;\n    metadata.raw_spec = inputValue;\n    const parsedUrl = new URL(data[0].domain);\n    const domain = parsedUrl.hostname;\n    if (!domain) {\n      // alert user?\n      return;\n    }\n    metadata.domain = domain;\n\n    const { type, saved_auth_fields } = authFormData;\n\n    const removeSensitiveFields = (obj: ActionMetadata) => {\n      delete obj.auth;\n      delete obj.api_key;\n      delete obj.oauth_client_id;\n      delete obj.oauth_client_secret;\n    };\n\n    if (saved_auth_fields && type === AuthTypeEnum.ServiceHttp) {\n      metadata = {\n        ...metadata,\n        api_key: authFormData.api_key,\n        auth: {\n          type,\n          authorization_type: authFormData.authorization_type,\n          custom_auth_header: authFormData.custom_auth_header,\n        },\n      };\n    } else if (saved_auth_fields && type === AuthTypeEnum.OAuth) {\n      metadata = {\n        ...metadata,\n        auth: {\n          type,\n          authorization_url: authFormData.authorization_url,\n          client_url: authFormData.client_url,\n          scope: authFormData.scope,\n          token_exchange_method: authFormData.token_exchange_method,\n        },\n        oauth_client_id: authFormData.oauth_client_id,\n        oauth_client_secret: authFormData.oauth_client_secret,\n      };\n    } else if (saved_auth_fields) {\n      removeSensitiveFields(metadata);\n      metadata.auth = {\n        type,\n      };\n    } else {\n      removeSensitiveFields(metadata);\n    }\n\n    updateAgentAction.mutate({\n      action_id,\n      metadata,\n      functions,\n      agent_id: currentAgentId,\n    });\n  });\n\n  const handleInputChange: React.ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n    const newValue = event.target.value;\n    setInputValue(newValue);\n    if (!newValue) {\n      setData(null);\n      setFunctions(null);\n      return setValidationResult(null);\n    }\n    debouncedValidation(newValue, handleResult);\n  };\n\n  const getButtonContent = () => {\n    if (updateAgentAction.isLoading) {\n      return <Spinner className=\"icon-md\" />;\n    }\n\n    if (action?.action_id != null && action.action_id) {\n      return localize('com_ui_update');\n    }\n\n    return localize('com_ui_create');\n  };\n\n  return (\n    <>\n      <div className=\"\">\n        <div className=\"mb-1 flex flex-wrap items-center justify-between gap-4\">\n          <label\n            htmlFor=\"schemaInput\"\n            className=\"text-token-text-primary whitespace-nowrap font-medium\"\n          >\n            Schema\n          </label>\n          <div className=\"flex items-center gap-2\">\n            {/* <button className=\"btn btn-neutral border-token-border-light relative h-8 min-w-[100px] rounded-lg font-medium\">\n              <div className=\"flex w-full items-center justify-center text-xs\">Import from URL</div>\n            </button> */}\n            <select\n              onChange={(e) => logger.log('actions', 'selecting example action', e.target.value)}\n              className=\"border-token-border-medium h-8 min-w-[100px] rounded-lg border bg-transparent px-2 py-0 text-sm\"\n            >\n              <option value=\"label\">{localize('com_ui_examples')}</option>\n              {/* TODO: make these appear and function correctly */}\n              <option value=\"0\">Weather (JSON)</option>\n              <option value=\"1\">Pet Store (YAML)</option>\n              <option value=\"2\">Blank Template</option>\n            </select>\n          </div>\n        </div>\n        <div className=\"border-token-border-medium bg-token-surface-primary hover:border-token-border-hover mb-4 w-full overflow-hidden rounded-lg border ring-0\">\n          <div className=\"relative\">\n            <textarea\n              id=\"schemaInput\"\n              value={inputValue}\n              onChange={handleInputChange}\n              spellCheck=\"false\"\n              placeholder={localize('com_ui_enter_openapi_schema')}\n              className=\"text-token-text-primary block h-96 w-full bg-transparent p-2 font-mono text-xs outline-none focus:ring-1 focus:ring-border-light\"\n            />\n            {/* TODO: format input button */}\n          </div>\n          {validationResult && validationResult.message !== 'OpenAPI spec is valid.' && (\n            <div className=\"border-token-border-light border-t p-2 text-red-500\">\n              {validationResult.message.split('\\n').map((line: string, i: number) => (\n                <div key={i}>{line}</div>\n              ))}\n            </div>\n          )}\n        </div>\n      </div>\n      {!!data && (\n        <div className=\"my-2\">\n          <div className=\"flex items-center\">\n            <label className=\"text-token-text-primary block font-medium\">\n              {localize('com_assistants_available_actions')}\n            </label>\n          </div>\n          <ActionsTable columns={columns} data={data} />\n        </div>\n      )}\n      <div className=\"relative my-1\">\n        <ActionCallback action_id={action?.action_id} />\n        <div className=\"mb-1.5 flex items-center\">\n          <label className=\"text-token-text-primary block font-medium\">\n            {localize('com_ui_privacy_policy_url')}\n          </label>\n        </div>\n        <div className=\"border-token-border-medium bg-token-surface-primary hover:border-token-border-hover flex h-9 w-full rounded-lg border\">\n          <input\n            type=\"text\"\n            placeholder=\"https://api.example-weather-app.com/privacy\"\n            className=\"flex-1 rounded-lg bg-transparent px-3 py-1.5 text-sm outline-none placeholder:text-text-secondary-alt focus:ring-1 focus:ring-border-light\"\n          />\n        </div>\n      </div>\n      <div className=\"flex items-center justify-end\">\n        <button\n          disabled={!functions || !functions.length}\n          onClick={saveAction}\n          className=\"focus:shadow-outline mt-1 flex min-w-[100px] items-center justify-center rounded bg-green-500 px-4 py-2 font-semibold text-white hover:bg-green-400 focus:border-green-500 focus:outline-none focus:ring-0 disabled:bg-green-400\"\n          type=\"button\"\n        >\n          {getButtonContent()}\n        </button>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ActionsPanel.tsx",
    "content": "import { useEffect } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport {\n  AuthTypeEnum,\n  AuthorizationTypeEnum,\n  TokenExchangeMethodEnum,\n} from '~/data-provider/data-provider/src';\nimport { ChevronLeft } from 'lucide-react';\nimport type { AgentPanelProps, ActionAuthForm } from '~/common';\nimport ActionsAuth from '~/components/SidePanel/Builder/ActionsAuth';\nimport { OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useDeleteAgentAction } from '~/data-provider';\nimport useLocalize from '~/hooks/useLocalize';\nimport { useToastContext } from '~/Providers';\nimport { TrashIcon } from '~/components/svg';\nimport ActionsInput from './ActionsInput';\nimport { Panel } from '~/common';\n\nexport default function ActionsPanel({\n  // activePanel,\n  action,\n  setAction,\n  agent_id,\n  setActivePanel,\n}: AgentPanelProps) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const deleteAgentAction = useDeleteAgentAction({\n    onSuccess: () => {\n      showToast({\n        message: localize('com_assistants_delete_actions_success'),\n        status: 'success',\n      });\n      setActivePanel(Panel.builder);\n      setAction(undefined);\n    },\n    onError(error) {\n      showToast({\n        message: (error as Error).message ?? localize('com_assistants_delete_actions_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const methods = useForm<ActionAuthForm>({\n    defaultValues: {\n      /* General */\n      type: AuthTypeEnum.None,\n      saved_auth_fields: false,\n      /* API key */\n      api_key: '',\n      authorization_type: AuthorizationTypeEnum.Basic,\n      custom_auth_header: '',\n      /* OAuth */\n      oauth_client_id: '',\n      oauth_client_secret: '',\n      authorization_url: '',\n      client_url: '',\n      scope: '',\n      token_exchange_method: TokenExchangeMethodEnum.DefaultPost,\n    },\n  });\n\n  const { reset, watch } = methods;\n\n  useEffect(() => {\n    if (action?.metadata.auth) {\n      reset({\n        type: action.metadata.auth.type || AuthTypeEnum.None,\n        saved_auth_fields: false,\n        api_key: action.metadata.api_key ?? '',\n        authorization_type: action.metadata.auth.authorization_type || AuthorizationTypeEnum.Basic,\n        oauth_client_id: action.metadata.oauth_client_id ?? '',\n        oauth_client_secret: action.metadata.oauth_client_secret ?? '',\n        authorization_url: action.metadata.auth.authorization_url ?? '',\n        client_url: action.metadata.auth.client_url ?? '',\n        scope: action.metadata.auth.scope ?? '',\n        token_exchange_method:\n          action.metadata.auth.token_exchange_method ?? TokenExchangeMethodEnum.DefaultPost,\n      });\n    }\n  }, [action, reset]);\n\n  return (\n    <FormProvider {...methods}>\n      <form className=\"h-full grow overflow-hidden\">\n        <div className=\"h-full overflow-auto px-2 pb-12 text-sm\">\n          <div className=\"relative flex flex-col items-center px-16 py-6 text-center\">\n            <div className=\"absolute left-0 top-6\">\n              <button\n                type=\"button\"\n                className=\"btn btn-neutral relative\"\n                onClick={() => {\n                  setActivePanel(Panel.builder);\n                  setAction(undefined);\n                }}\n              >\n                <div className=\"flex w-full items-center justify-center gap-2\">\n                  <ChevronLeft />\n                </div>\n              </button>\n            </div>\n\n            {!!action && (\n              <OGDialog>\n                <OGDialogTrigger asChild>\n                  <div className=\"absolute right-0 top-6\">\n                    <button\n                      type=\"button\"\n                      disabled={!agent_id || !action.action_id}\n                      className=\"btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium\"\n                    >\n                      <TrashIcon className=\"text-red-500\" />\n                    </button>\n                  </div>\n                </OGDialogTrigger>\n                <OGDialogTemplate\n                  showCloseButton={false}\n                  title={localize('com_ui_delete_action')}\n                  className=\"max-w-[450px]\"\n                  main={\n                    <Label className=\"text-left text-sm font-medium\">\n                      {localize('com_ui_delete_action_confirm')}\n                    </Label>\n                  }\n                  selection={{\n                    selectHandler: () => {\n                      if (!agent_id) {\n                        return showToast({\n                          message: 'No agent_id found, is the agent created?',\n                          status: 'error',\n                        });\n                      }\n                      deleteAgentAction.mutate({\n                        action_id: action.action_id,\n                        agent_id,\n                      });\n                    },\n                    selectClasses:\n                      'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 transition-color duration-200 text-white',\n                    selectText: localize('com_ui_delete'),\n                  }}\n                />\n              </OGDialog>\n            )}\n\n            <div className=\"text-xl font-medium\">{(action ? 'Edit' : 'Add') + ' ' + 'actions'}</div>\n            <div className=\"text-xs text-text-secondary\">\n              {localize('com_assistants_actions_info')}\n            </div>\n            {/* <div className=\"text-sm text-text-secondary\">\n            <a href=\"https://help.openai.com/en/articles/8554397-creating-a-gpt\" target=\"_blank\" rel=\"noreferrer\" className=\"font-medium\">Learn more.</a>\n          </div> */}\n          </div>\n          <ActionsAuth />\n          <ActionsInput action={action} agent_id={agent_id} setAction={setAction} />\n        </div>\n      </form>\n    </FormProvider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ActionsTable/Columns.tsx",
    "content": "import type { ColumnDef } from '@tanstack/react-table';\n\nexport type Spec = {\n  name: string;\n  method: string;\n  path: string;\n  domain: string;\n};\n\nexport const fakeData: Spec[] = [\n  {\n    name: 'listPets',\n    method: 'get',\n    path: '/pets',\n    domain: 'petstore.swagger.io',\n  },\n  {\n    name: 'createPets',\n    method: 'post',\n    path: '/pets',\n    domain: 'petstore.swagger.io',\n  },\n  {\n    name: 'showPetById',\n    method: 'get',\n    path: '/pets/{petId}',\n    domain: 'petstore.swagger.io',\n  },\n];\n\nexport const columns: ColumnDef<Spec>[] = [\n  {\n    header: 'Name',\n    accessorKey: 'name',\n  },\n  {\n    header: 'Method',\n    accessorKey: 'method',\n  },\n  {\n    header: 'Path',\n    accessorKey: 'path',\n  },\n  // {\n  //   header: '',\n  //   accessorKey: 'action',\n  //   // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  //   cell: ({ row: _row }) => (\n  //     <button className=\"btn relative btn-neutral h-8 rounded-lg border-token-border-light font-medium\">\n  //       <div className=\"flex w-full gap-2 items-center justify-center\">Test</div>\n  //     </button>\n  //   ),\n  // },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ActionsTable/Table.tsx",
    "content": "import { useReactTable, flexRender, getCoreRowModel } from '@tanstack/react-table';\nimport type { ColumnDef } from '@tanstack/react-table';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nexport default function DataTable<TData, TValue>({ columns, data }: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    columns,\n    data,\n    getCoreRowModel: getCoreRowModel(),\n  });\n\n  return (\n    <table className=\"w-full text-sm\">\n      <thead>\n        {table.getHeaderGroups().map((headerGroup, i) => (\n          <tr\n            key={i}\n            className=\"border-token-border-light text-token-text-tertiary border-b text-left text-xs\"\n          >\n            {headerGroup.headers.map((header, j) => (\n              <th key={j} className=\"py-1 font-normal text-text-secondary-alt\">\n                {header.isPlaceholder\n                  ? null\n                  : flexRender(header.column.columnDef.header, header.getContext())}\n              </th>\n            ))}\n          </tr>\n        ))}\n      </thead>\n      <tbody>\n        {table.getRowModel().rows.map((row, i) => (\n          <tr key={i} className=\"border-token-border-light border-b\">\n            {row.getVisibleCells().map((cell, j) => (\n              <td key={j} className=\"py-2\">\n                {flexRender(cell.column.columnDef.cell, cell.getContext())}\n              </td>\n            ))}\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ActionsTable/index.ts",
    "content": "export { default as ActionsTable } from './Table';\nexport * from './Columns';\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AdminSettings.tsx",
    "content": "import * as Ariakit from '@ariakit/react';\nimport { useMemo, useEffect, useState } from 'react';\nimport { ShieldEllipsis } from 'lucide-react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { Permissions, SystemRoles, roleDefaults, PermissionTypes } from '~/data-provider/data-provider/src';\nimport type { Control, UseFormSetValue, UseFormGetValues } from 'react-hook-form';\nimport { OGDialog, OGDialogTitle, OGDialogContent, OGDialogTrigger } from '~/components/ui';\nimport { useUpdateAgentPermissionsMutation } from '~/data-provider';\nimport { Button, Switch, DropdownPopup } from '~/components/ui';\nimport { useLocalize, useAuthContext } from '~/hooks';\nimport { useToastContext } from '~/Providers';\n\ntype FormValues = Record<Permissions, boolean>;\n\ntype LabelControllerProps = {\n  label: string;\n  agentPerm: Permissions;\n  control: Control<FormValues, unknown, FormValues>;\n  setValue: UseFormSetValue<FormValues>;\n  getValues: UseFormGetValues<FormValues>;\n};\n\nconst LabelController: React.FC<LabelControllerProps> = ({\n  control,\n  agentPerm,\n  label,\n  getValues,\n  setValue,\n}) => (\n  <div className=\"mb-4 flex items-center justify-between gap-2\">\n    <button\n      className=\"cursor-pointer select-none\"\n      type=\"button\"\n      onClick={() =>\n        setValue(agentPerm, !getValues(agentPerm), {\n          shouldDirty: true,\n        })\n      }\n      tabIndex={0}\n    >\n      {label}\n    </button>\n    <Controller\n      name={agentPerm}\n      control={control}\n      render={({ field }) => (\n        <Switch\n          {...field}\n          checked={field.value}\n          onCheckedChange={field.onChange}\n          value={field.value.toString()}\n        />\n      )}\n    />\n  </div>\n);\n\nconst AdminSettings = () => {\n  const localize = useLocalize();\n  const { user, roles } = useAuthContext();\n  const { showToast } = useToastContext();\n  const { mutate, isLoading } = useUpdateAgentPermissionsMutation({\n    onSuccess: () => {\n      showToast({ status: 'success', message: localize('com_ui_saved') });\n    },\n    onError: () => {\n      showToast({ status: 'error', message: localize('com_ui_error_save_admin_settings') });\n    },\n  });\n\n  const [isRoleMenuOpen, setIsRoleMenuOpen] = useState(false);\n  const [selectedRole, setSelectedRole] = useState<SystemRoles>(SystemRoles.USER);\n\n  const defaultValues = useMemo(() => {\n    if (roles?.[selectedRole]) {\n      return roles[selectedRole][PermissionTypes.AGENTS];\n    }\n    return roleDefaults[selectedRole][PermissionTypes.AGENTS];\n  }, [roles, selectedRole]);\n\n  const {\n    reset,\n    control,\n    setValue,\n    getValues,\n    handleSubmit,\n    formState: { isSubmitting },\n  } = useForm<FormValues>({\n    mode: 'onChange',\n    defaultValues,\n  });\n\n  useEffect(() => {\n    if (roles?.[selectedRole]?.[PermissionTypes.AGENTS]) {\n      reset(roles[selectedRole][PermissionTypes.AGENTS]);\n    } else {\n      reset(roleDefaults[selectedRole][PermissionTypes.AGENTS]);\n    }\n  }, [roles, selectedRole, reset]);\n\n  if (user?.role !== SystemRoles.ADMIN) {\n    return null;\n  }\n\n  const labelControllerData = [\n    {\n      agentPerm: Permissions.SHARED_GLOBAL,\n      label: localize('com_ui_agents_allow_share_global'),\n    },\n    {\n      agentPerm: Permissions.CREATE,\n      label: localize('com_ui_agents_allow_create'),\n    },\n    {\n      agentPerm: Permissions.USE,\n      label: localize('com_ui_agents_allow_use'),\n    },\n  ];\n\n  const onSubmit = (data: FormValues) => {\n    mutate({ roleName: selectedRole, updates: data });\n  };\n\n  const roleDropdownItems = [\n    {\n      label: SystemRoles.USER,\n      onClick: () => {\n        setSelectedRole(SystemRoles.USER);\n      },\n    },\n    {\n      label: SystemRoles.ADMIN,\n      onClick: () => {\n        setSelectedRole(SystemRoles.ADMIN);\n      },\n    },\n  ];\n\n  return (\n    <OGDialog>\n      <OGDialogTrigger asChild>\n        <Button\n          size={'sm'}\n          variant={'outline'}\n          className=\"btn btn-neutral border-token-border-light relative mb-4 h-9 w-full gap-1 rounded-lg font-medium\"\n        >\n          <ShieldEllipsis className=\"cursor-pointer\" aria-hidden=\"true\" />\n          {localize('com_ui_admin_settings')}\n        </Button>\n      </OGDialogTrigger>\n      <OGDialogContent className=\"w-1/4 border-border-light bg-surface-primary text-text-primary\">\n        <OGDialogTitle>{`${localize('com_ui_admin_settings')} - ${localize(\n          'com_ui_agents',\n        )}`}</OGDialogTitle>\n        <div className=\"p-2\">\n          {/* Role selection dropdown */}\n          <div className=\"flex items-center gap-2\">\n            <span className=\"font-medium\">{localize('com_ui_role_select')}:</span>\n            <DropdownPopup\n              menuId=\"role-dropdown\"\n              isOpen={isRoleMenuOpen}\n              setIsOpen={setIsRoleMenuOpen}\n              trigger={\n                <Ariakit.MenuButton className=\"inline-flex w-1/4 items-center justify-center rounded-lg border border-border-light bg-transparent px-2 py-1 text-text-primary transition-all ease-in-out hover:bg-surface-tertiary\">\n                  {selectedRole}\n                </Ariakit.MenuButton>\n              }\n              items={roleDropdownItems}\n              itemClassName=\"items-center justify-center\"\n              sameWidth={true}\n            />\n          </div>\n          {/* Permissions form */}\n          <form onSubmit={handleSubmit(onSubmit)}>\n            <div className=\"py-5\">\n              {labelControllerData.map(({ agentPerm, label }) => (\n                <div key={agentPerm}>\n                  <LabelController\n                    control={control}\n                    agentPerm={agentPerm}\n                    label={label}\n                    getValues={getValues}\n                    setValue={setValue}\n                  />\n                  {selectedRole === SystemRoles.ADMIN && agentPerm === Permissions.USE && (\n                    <>\n                      <div className=\"mb-2 max-w-full whitespace-normal break-words text-sm text-red-600\">\n                        <span>{localize('com_ui_admin_access_warning')}</span>\n                        {'\\n'}\n                        <a\n                          href=\"https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/interface\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                          className=\"text-blue-500 underline\"\n                        >\n                          {localize('com_ui_more_info')}\n                        </a>\n                      </div>\n                    </>\n                  )}\n                </div>\n              ))}\n            </div>\n            <div className=\"flex justify-end\">\n              <button\n                type=\"submit\"\n                disabled={isSubmitting || isLoading}\n                className=\"btn rounded bg-green-500 font-bold text-white transition-all hover:bg-green-600\"\n              >\n                {localize('com_ui_save')}\n              </button>\n            </div>\n          </form>\n        </div>\n      </OGDialogContent>\n    </OGDialog>\n  );\n};\n\nexport default AdminSettings;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentAvatar.tsx",
    "content": "import * as Popover from '@radix-ui/react-popover';\nimport { useState, useEffect, useRef } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  fileConfig as defaultFileConfig,\n  QueryKeys,\n  defaultOrderQuery,\n  mergeFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type {\n  Agent,\n  AgentAvatar,\n  AgentCreateParams,\n  AgentListResponse,\n} from '~/data-provider/data-provider/src';\nimport { useUploadAgentAvatarMutation, useGetFileConfig } from '~/data-provider';\nimport { AgentAvatarRender, NoImage, AvatarMenu } from './Images';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\nimport { formatBytes } from '~/utils';\n\nfunction Avatar({\n  agent_id = '',\n  avatar,\n  createMutation,\n}: {\n  agent_id: string | null;\n  avatar: null | AgentAvatar;\n  createMutation: UseMutationResult<Agent, Error, AgentCreateParams>;\n}) {\n  const queryClient = useQueryClient();\n  const [menuOpen, setMenuOpen] = useState(false);\n  const [previewUrl, setPreviewUrl] = useState('');\n  const [progress, setProgress] = useState<number>(1);\n  const [input, setInput] = useState<File | null>(null);\n  const lastSeenCreatedId = useRef<string | null>(null);\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const { mutate: uploadAvatar } = useUploadAgentAvatarMutation({\n    onMutate: () => {\n      setProgress(0.4);\n    },\n    onSuccess: (data, vars) => {\n      if (vars.postCreation === false) {\n        showToast({ message: localize('com_ui_upload_success') });\n      } else if (lastSeenCreatedId.current !== createMutation.data?.id) {\n        lastSeenCreatedId.current = createMutation.data?.id ?? '';\n      }\n\n      setInput(null);\n      const newUrl = data.avatar?.filepath ?? '';\n      setPreviewUrl(newUrl);\n\n      const res = queryClient.getQueryData<AgentListResponse>([\n        QueryKeys.agents,\n        defaultOrderQuery,\n      ]);\n\n      if (!res?.data) {\n        return;\n      }\n\n      const agents = res.data.map((agent) => {\n        if (agent.id === agent_id) {\n          return {\n            ...agent,\n            ...data,\n          };\n        }\n        return agent;\n      });\n\n      queryClient.setQueryData<AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n        ...res,\n        data: agents,\n      });\n\n      setProgress(1);\n    },\n    onError: (error) => {\n      console.error('Error:', error);\n      setInput(null);\n      setPreviewUrl('');\n      showToast({ message: localize('com_ui_upload_error'), status: 'error' });\n      setProgress(1);\n    },\n  });\n\n  useEffect(() => {\n    if (input) {\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        setPreviewUrl(reader.result as string);\n      };\n      reader.readAsDataURL(input);\n    }\n  }, [input]);\n\n  useEffect(() => {\n    if (avatar && avatar.filepath) {\n      setPreviewUrl(avatar.filepath);\n    } else {\n      setPreviewUrl('');\n    }\n  }, [avatar]);\n\n  useEffect(() => {\n    /** Experimental: Condition to prime avatar upload before Agent Creation\n     * - If the createMutation state Id was last seen (current) and the createMutation is successful\n     * we can assume that the avatar upload has already been initiated and we can skip the upload\n     *\n     * The mutation state is not reset until the user deliberately selects a new agent or an agent is deleted\n     *\n     * This prevents the avatar from being uploaded multiple times before the user selects a new agent\n     * while allowing the user to upload to prime the avatar and other values before the agent is created.\n     */\n    const sharedUploadCondition = !!(\n      createMutation.isSuccess &&\n      input &&\n      previewUrl &&\n      previewUrl.includes('base64')\n    );\n    if (sharedUploadCondition && lastSeenCreatedId.current === createMutation.data.id) {\n      return;\n    }\n\n    if (sharedUploadCondition && createMutation.data.id) {\n      const formData = new FormData();\n      formData.append('file', input, input.name);\n      formData.append('agent_id', createMutation.data.id);\n\n      uploadAvatar({\n        agent_id: createMutation.data.id,\n        postCreation: true,\n        formData,\n      });\n    }\n  }, [createMutation.data, createMutation.isSuccess, input, previewUrl, uploadAvatar]);\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n    const file = event.target.files?.[0];\n    const sizeLimit = fileConfig.avatarSizeLimit ?? 0;\n\n    if (sizeLimit && file && file.size <= sizeLimit) {\n      setInput(file);\n      setMenuOpen(false);\n\n      const currentId = agent_id ?? '';\n      if (!currentId) {\n        return;\n      }\n\n      const formData = new FormData();\n      formData.append('file', file, file.name);\n      formData.append('agent_id', currentId);\n\n      if (typeof avatar === 'object') {\n        formData.append('avatar', JSON.stringify(avatar));\n      }\n\n      uploadAvatar({\n        agent_id: currentId,\n        formData,\n      });\n    } else {\n      const megabytes = sizeLimit ? formatBytes(sizeLimit) : 2;\n      showToast({\n        message: localize('com_ui_upload_invalid_var', { 0: megabytes + '' }),\n        status: 'error',\n      });\n    }\n\n    setMenuOpen(false);\n  };\n\n  return (\n    <Popover.Root open={menuOpen} onOpenChange={setMenuOpen}>\n      <div className=\"flex w-full items-center justify-center gap-4\">\n        <Popover.Trigger asChild>\n          <button type=\"button\" className=\"h-20 w-20\">\n            {previewUrl ? <AgentAvatarRender url={previewUrl} progress={progress} /> : <NoImage />}\n          </button>\n        </Popover.Trigger>\n      </div>\n      {<AvatarMenu handleFileChange={handleFileChange} />}\n    </Popover.Root>\n  );\n}\n\nexport default Avatar;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentConfig.tsx",
    "content": "import React, { useState, useMemo, useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Controller, useWatch, useFormContext } from 'react-hook-form';\nimport {\n  QueryKeys,\n  SystemRoles,\n  Permissions,\n  EModelEndpoint,\n  PermissionTypes,\n  AgentCapabilities,\n} from '~/data-provider/data-provider/src';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport type { AgentForm, AgentPanelProps, IconComponentTypes } from '~/common';\nimport { cn, defaultTextProps, removeFocusOutlines, getEndpointField, getIconKey } from '~/utils';\nimport { useCreateAgentMutation, useUpdateAgentMutation } from '~/data-provider';\nimport { useLocalize, useAuthContext, useHasAccess } from '~/hooks';\nimport { useToastContext, useFileMapContext } from '~/Providers';\nimport { icons } from '~/components/Chat/Menus/Endpoints/Icons';\nimport Action from '~/components/SidePanel/Builder/Action';\nimport { ToolSelectDialog } from '~/components/Tools';\nimport DuplicateAgent from './DuplicateAgent';\nimport { processAgentOption } from '~/utils';\nimport AdminSettings from './AdminSettings';\nimport DeleteButton from './DeleteButton';\nimport AgentAvatar from './AgentAvatar';\nimport { Spinner } from '~/components';\nimport FileSearch from './FileSearch';\nimport ShareAgent from './ShareAgent';\nimport Artifacts from './Artifacts';\nimport AgentTool from './AgentTool';\nimport CodeForm from './Code/Form';\nimport { Panel } from '~/common';\n\nconst labelClass = 'mb-2 text-token-text-primary block font-medium';\nconst inputClass = cn(\n  defaultTextProps,\n  'flex w-full px-3 py-2 border-border-light bg-surface-secondary focus-visible:ring-2 focus-visible:ring-ring-primary',\n  removeFocusOutlines,\n);\n\nexport default function AgentConfig({\n  setAction,\n  actions = [],\n  agentsConfig,\n  endpointsConfig,\n  setActivePanel,\n  setCurrentAgentId,\n}: AgentPanelProps) {\n  const { user } = useAuthContext();\n  const fileMap = useFileMapContext();\n  const queryClient = useQueryClient();\n\n  const allTools = queryClient.getQueryData<TPlugin[]>([QueryKeys.tools]) ?? [];\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const [showToolDialog, setShowToolDialog] = useState(false);\n\n  const methods = useFormContext<AgentForm>();\n\n  const { control } = methods;\n  const provider = useWatch({ control, name: 'provider' });\n  const model = useWatch({ control, name: 'model' });\n  const agent = useWatch({ control, name: 'agent' });\n  const tools = useWatch({ control, name: 'tools' });\n  const agent_id = useWatch({ control, name: 'id' });\n\n  const hasAccessToShareAgents = useHasAccess({\n    permissionType: PermissionTypes.AGENTS,\n    permission: Permissions.SHARED_GLOBAL,\n  });\n\n  const toolsEnabled = useMemo(\n    () => agentsConfig?.capabilities.includes(AgentCapabilities.tools),\n    [agentsConfig],\n  );\n  const actionsEnabled = useMemo(\n    () => agentsConfig?.capabilities.includes(AgentCapabilities.actions),\n    [agentsConfig],\n  );\n  const artifactsEnabled = useMemo(\n    () => agentsConfig?.capabilities.includes(AgentCapabilities.artifacts) ?? false,\n    [agentsConfig],\n  );\n  const fileSearchEnabled = useMemo(\n    () => agentsConfig?.capabilities.includes(AgentCapabilities.file_search) ?? false,\n    [agentsConfig],\n  );\n  const codeEnabled = useMemo(\n    () => agentsConfig?.capabilities.includes(AgentCapabilities.execute_code) ?? false,\n    [agentsConfig],\n  );\n\n  const knowledge_files = useMemo(() => {\n    if (typeof agent === 'string') {\n      return [];\n    }\n\n    if (agent?.id !== agent_id) {\n      return [];\n    }\n\n    if (agent.knowledge_files) {\n      return agent.knowledge_files;\n    }\n\n    const _agent = processAgentOption({\n      agent,\n      fileMap,\n    });\n    return _agent.knowledge_files ?? [];\n  }, [agent, agent_id, fileMap]);\n\n  const code_files = useMemo(() => {\n    if (typeof agent === 'string') {\n      return [];\n    }\n\n    if (agent?.id !== agent_id) {\n      return [];\n    }\n\n    if (agent.code_files) {\n      return agent.code_files;\n    }\n\n    const _agent = processAgentOption({\n      agent,\n      fileMap,\n    });\n    return _agent.code_files ?? [];\n  }, [agent, agent_id, fileMap]);\n\n  /* Mutations */\n  const update = useUpdateAgentMutation({\n    onSuccess: (data) => {\n      showToast({\n        message: `${localize('com_assistants_update_success')} ${\n          data.name ?? localize('com_ui_agent')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_agents_update_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const create = useCreateAgentMutation({\n    onSuccess: (data) => {\n      setCurrentAgentId(data.id);\n      showToast({\n        message: `${localize('com_assistants_create_success')} ${\n          data.name ?? localize('com_ui_agent')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_agents_create_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const handleAddActions = useCallback(() => {\n    if (!agent_id) {\n      showToast({\n        message: localize('com_assistants_actions_disabled'),\n        status: 'warning',\n      });\n      return;\n    }\n    setActivePanel(Panel.actions);\n  }, [agent_id, setActivePanel, showToast, localize]);\n\n  const providerValue = typeof provider === 'string' ? provider : provider?.value;\n  let Icon: IconComponentTypes | null | undefined;\n  let endpointType: EModelEndpoint | undefined;\n  let endpointIconURL: string | undefined;\n  let iconKey: string | undefined;\n\n  if (providerValue !== undefined) {\n    endpointType = getEndpointField(endpointsConfig, providerValue as string, 'type');\n    endpointIconURL = getEndpointField(endpointsConfig, providerValue as string, 'iconURL');\n    iconKey = getIconKey({\n      endpoint: providerValue as string,\n      endpointsConfig,\n      endpointType,\n      endpointIconURL,\n    });\n    Icon = icons[iconKey];\n  }\n\n  const renderSaveButton = () => {\n    if (create.isLoading || update.isLoading) {\n      return <Spinner className=\"icon-md\" aria-hidden=\"true\" />;\n    }\n\n    if (agent_id) {\n      return localize('com_ui_save');\n    }\n\n    return localize('com_ui_create');\n  };\n\n  return (\n    <>\n      <div className=\"h-auto bg-white px-4 pb-8 pt-3 dark:bg-transparent\">\n        {/* Avatar & Name */}\n        <div className=\"mb-4\">\n          <AgentAvatar\n            createMutation={create}\n            agent_id={agent_id}\n            avatar={agent?.['avatar'] ?? null}\n          />\n          <label className={labelClass} htmlFor=\"name\">\n            {localize('com_ui_name')}\n          </label>\n          <Controller\n            name=\"name\"\n            control={control}\n            render={({ field }) => (\n              <input\n                {...field}\n                value={field.value ?? ''}\n                maxLength={256}\n                className={inputClass}\n                id=\"name\"\n                type=\"text\"\n                placeholder={localize('com_agents_name_placeholder')}\n                aria-label=\"Agent name\"\n              />\n            )}\n          />\n          <Controller\n            name=\"id\"\n            control={control}\n            render={({ field }) => (\n              <p className=\"h-3 text-xs italic text-text-secondary\" aria-live=\"polite\">\n                {field.value}\n              </p>\n            )}\n          />\n        </div>\n        {/* Description */}\n        <div className=\"mb-4\">\n          <label className={labelClass} htmlFor=\"description\">\n            {localize('com_ui_description')}\n          </label>\n          <Controller\n            name=\"description\"\n            control={control}\n            render={({ field }) => (\n              <input\n                {...field}\n                value={field.value ?? ''}\n                maxLength={512}\n                className={inputClass}\n                id=\"description\"\n                type=\"text\"\n                placeholder={localize('com_agents_description_placeholder')}\n                aria-label=\"Agent description\"\n              />\n            )}\n          />\n        </div>\n        {/* Instructions */}\n        <div className=\"mb-4\">\n          <label className={labelClass} htmlFor=\"instructions\">\n            {localize('com_ui_instructions')}\n          </label>\n          <Controller\n            name=\"instructions\"\n            control={control}\n            render={({ field, fieldState: { error } }) => (\n              <>\n                <textarea\n                  {...field}\n                  value={field.value ?? ''}\n                  // maxLength={32768}\n                  className={cn(inputClass, 'min-h-[100px] resize-y')}\n                  id=\"instructions\"\n                  placeholder={localize('com_agents_instructions_placeholder')}\n                  rows={3}\n                  aria-label=\"Agent instructions\"\n                  aria-required=\"true\"\n                  aria-invalid={error ? 'true' : 'false'}\n                />\n                {error && (\n                  <span\n                    className=\"text-sm text-red-500 transition duration-300 ease-in-out\"\n                    role=\"alert\"\n                  >\n                    {localize('com_ui_field_required')}\n                  </span>\n                )}\n              </>\n            )}\n          />\n        </div>\n        {/* Model and Provider */}\n        <div className=\"mb-4\">\n          <label className={labelClass} htmlFor=\"provider\">\n            {localize('com_ui_model')} <span className=\"text-red-500\">*</span>\n          </label>\n          <button\n            type=\"button\"\n            onClick={() => setActivePanel(Panel.model)}\n            className=\"btn btn-neutral border-token-border-light relative h-10 w-full rounded-lg font-medium\"\n            aria-haspopup=\"true\"\n            aria-expanded=\"false\"\n          >\n            <div className=\"flex w-full items-center gap-2\">\n              {Icon && (\n                <div className=\"shadow-stroke relative flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-white text-black dark:bg-white\">\n                  <Icon\n                    className=\"h-2/3 w-2/3\"\n                    endpoint={providerValue as string}\n                    endpointType={endpointType}\n                    iconURL={endpointIconURL}\n                  />\n                </div>\n              )}\n              <span>{model != null && model ? model : localize('com_ui_select_model')}</span>\n            </div>\n          </button>\n        </div>\n        {(codeEnabled || fileSearchEnabled || artifactsEnabled) && (\n          <div className=\"mb-4 flex w-full flex-col items-start gap-3\">\n            <label className=\"text-token-text-primary block font-medium\">\n              {localize('com_assistants_capabilities')}\n            </label>\n            {/* Code Execution */}\n            {codeEnabled && <CodeForm agent_id={agent_id} files={code_files} />}\n            {/* File Search */}\n            {fileSearchEnabled && <FileSearch agent_id={agent_id} files={knowledge_files} />}\n            {/* Artifacts */}\n            {artifactsEnabled && <Artifacts />}\n          </div>\n        )}\n        {/* Agent Tools & Actions */}\n        <div className=\"mb-4\">\n          <label className={labelClass}>\n            {`${toolsEnabled === true ? localize('com_ui_tools') : ''}\n              ${toolsEnabled === true && actionsEnabled === true ? ' + ' : ''}\n              ${actionsEnabled === true ? localize('com_assistants_actions') : ''}`}\n          </label>\n          <div className=\"space-y-2\">\n            {tools?.map((func, i) => (\n              <AgentTool\n                key={`${func}-${i}-${agent_id}`}\n                tool={func}\n                allTools={allTools}\n                agent_id={agent_id}\n              />\n            ))}\n            {actions\n              .filter((action) => action.agent_id === agent_id)\n              .map((action, i) => (\n                <Action\n                  key={i}\n                  action={action}\n                  onClick={() => {\n                    setAction(action);\n                    setActivePanel(Panel.actions);\n                  }}\n                />\n              ))}\n            <div className=\"flex space-x-2\">\n              {(toolsEnabled ?? false) && (\n                <button\n                  type=\"button\"\n                  onClick={() => setShowToolDialog(true)}\n                  className=\"btn btn-neutral border-token-border-light relative h-9 w-full rounded-lg font-medium\"\n                  aria-haspopup=\"dialog\"\n                >\n                  <div className=\"flex w-full items-center justify-center gap-2\">\n                    {localize('com_assistants_add_tools')}\n                  </div>\n                </button>\n              )}\n              {(actionsEnabled ?? false) && (\n                <button\n                  type=\"button\"\n                  disabled={!agent_id}\n                  onClick={handleAddActions}\n                  className=\"btn btn-neutral border-token-border-light relative h-9 w-full rounded-lg font-medium\"\n                  aria-haspopup=\"dialog\"\n                >\n                  <div className=\"flex w-full items-center justify-center gap-2\">\n                    {localize('com_assistants_add_actions')}\n                  </div>\n                </button>\n              )}\n            </div>\n          </div>\n        </div>\n        {user?.role === SystemRoles.ADMIN && <AdminSettings />}\n        {/* Context Button */}\n        <div className=\"flex items-center justify-end gap-2\">\n          <DeleteButton\n            agent_id={agent_id}\n            setCurrentAgentId={setCurrentAgentId}\n            createMutation={create}\n          />\n          {(agent?.author === user?.id || user?.role === SystemRoles.ADMIN) &&\n            hasAccessToShareAgents && (\n            <ShareAgent\n              agent_id={agent_id}\n              agentName={agent?.name ?? ''}\n              projectIds={agent?.projectIds ?? []}\n              isCollaborative={agent?.isCollaborative}\n            />\n          )}\n          {agent && agent.author === user?.id && <DuplicateAgent agent_id={agent_id} />}\n          {/* Submit Button */}\n          <button\n            className=\"btn btn-primary focus:shadow-outline flex h-9 w-full items-center justify-center px-4 py-2 font-semibold text-white hover:bg-green-600 focus:border-green-500\"\n            type=\"submit\"\n            disabled={create.isLoading || update.isLoading}\n            aria-busy={create.isLoading || update.isLoading}\n          >\n            {renderSaveButton()}\n          </button>\n        </div>\n      </div>\n      <ToolSelectDialog\n        isOpen={showToolDialog}\n        setIsOpen={setShowToolDialog}\n        toolsFormKey=\"tools\"\n        endpoint={EModelEndpoint.agents}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentPanel.tsx",
    "content": "import { Plus } from 'lucide-react';\nimport React, { useMemo, useCallback } from 'react';\nimport { useWatch, useForm, FormProvider } from 'react-hook-form';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport {\n  Tools,\n  SystemRoles,\n  EModelEndpoint,\n  isAssistantsEndpoint,\n  defaultAgentFormValues,\n} from '~/data-provider/data-provider/src';\nimport type { AgentForm, AgentPanelProps, StringOption } from '~/common';\nimport {\n  useCreateAgentMutation,\n  useUpdateAgentMutation,\n  useGetAgentByIdQuery,\n} from '~/data-provider';\nimport { useSelectAgent, useLocalize, useAuthContext } from '~/hooks';\nimport AgentPanelSkeleton from './AgentPanelSkeleton';\nimport { createProviderOption } from '~/utils';\nimport { useToastContext } from '~/Providers';\nimport AgentConfig from './AgentConfig';\nimport AgentSelect from './AgentSelect';\nimport { Button } from '~/components';\nimport ModelPanel from './ModelPanel';\nimport { Panel } from '~/common';\n\nexport default function AgentPanel({\n  setAction,\n  activePanel,\n  actions = [],\n  setActivePanel,\n  agent_id: current_agent_id,\n  setCurrentAgentId,\n  agentsConfig,\n  endpointsConfig,\n}: AgentPanelProps) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const { showToast } = useToastContext();\n\n  const { onSelect: onSelectAgent } = useSelectAgent();\n\n  const modelsQuery = useGetModelsQuery();\n  const agentQuery = useGetAgentByIdQuery(current_agent_id ?? '', {\n    enabled: !!(current_agent_id ?? ''),\n  });\n\n  const models = useMemo(() => modelsQuery.data ?? {}, [modelsQuery.data]);\n  const methods = useForm<AgentForm>({\n    defaultValues: defaultAgentFormValues,\n  });\n\n  const { control, handleSubmit, reset } = methods;\n  const agent_id = useWatch({ control, name: 'id' });\n\n  const providers = useMemo(\n    () =>\n      Object.keys(endpointsConfig ?? {})\n        .filter(\n          (key) =>\n            !isAssistantsEndpoint(key) &&\n            key !== EModelEndpoint.agents &&\n            key !== EModelEndpoint.chatGPTBrowser &&\n            key !== EModelEndpoint.gptPlugins,\n        )\n        .map((provider) => createProviderOption(provider)),\n    [endpointsConfig],\n  );\n\n  /* Mutations */\n  const update = useUpdateAgentMutation({\n    onSuccess: (data) => {\n      showToast({\n        message: `${localize('com_assistants_update_success')} ${\n          data.name ?? localize('com_ui_agent')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_agents_update_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const create = useCreateAgentMutation({\n    onSuccess: (data) => {\n      setCurrentAgentId(data.id);\n      showToast({\n        message: `${localize('com_assistants_create_success')} ${\n          data.name ?? localize('com_ui_agent')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_agents_create_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const onSubmit = useCallback(\n    (data: AgentForm) => {\n      const tools = data.tools ?? [];\n\n      if (data.execute_code === true) {\n        tools.push(Tools.execute_code);\n      }\n      if (data.file_search === true) {\n        tools.push(Tools.file_search);\n      }\n\n      const {\n        name,\n        artifacts,\n        description,\n        instructions,\n        model: _model,\n        model_parameters,\n        provider: _provider,\n        agent_ids,\n        end_after_tools,\n        hide_sequential_outputs,\n      } = data;\n\n      const model = _model ?? '';\n      const provider =\n        (typeof _provider === 'string' ? _provider : (_provider as StringOption).value) ?? '';\n\n      if (agent_id) {\n        update.mutate({\n          agent_id,\n          data: {\n            name,\n            artifacts,\n            description,\n            instructions,\n            model,\n            tools,\n            provider,\n            model_parameters,\n            agent_ids,\n            end_after_tools,\n            hide_sequential_outputs,\n          },\n        });\n        return;\n      }\n\n      if (!provider || !model) {\n        return showToast({\n          message: localize('com_agents_missing_provider_model'),\n          status: 'error',\n        });\n      }\n\n      create.mutate({\n        name,\n        artifacts,\n        description,\n        instructions,\n        model,\n        tools,\n        provider,\n        model_parameters,\n        agent_ids,\n        end_after_tools,\n        hide_sequential_outputs,\n      });\n    },\n    [agent_id, create, update, showToast, localize],\n  );\n\n  const handleSelectAgent = useCallback(() => {\n    if (agent_id) {\n      onSelectAgent(agent_id);\n    }\n  }, [agent_id, onSelectAgent]);\n\n  const canEditAgent = useMemo(() => {\n    const canEdit =\n      (agentQuery.data?.isCollaborative ?? false)\n        ? true\n        : agentQuery.data?.author === user?.id || user?.role === SystemRoles.ADMIN;\n\n    return agentQuery.data?.id != null && agentQuery.data.id ? canEdit : true;\n  }, [\n    agentQuery.data?.isCollaborative,\n    agentQuery.data?.author,\n    agentQuery.data?.id,\n    user?.id,\n    user?.role,\n  ]);\n\n  return (\n    <FormProvider {...methods}>\n      <form\n        onSubmit={handleSubmit(onSubmit)}\n        className=\"scrollbar-gutter-stable h-auto w-full flex-shrink-0 overflow-x-hidden\"\n        aria-label=\"Agent configuration form\"\n      >\n        <div className=\"mx-1 mt-2 flex w-full flex-wrap gap-2\">\n          <div className=\"w-full\">\n            <AgentSelect\n              createMutation={create}\n              agentQuery={agentQuery}\n              setCurrentAgentId={setCurrentAgentId}\n              // The following is required to force re-render the component when the form's agent ID changes\n              // Also maintains ComboBox Focus for Accessibility\n              selectedAgentId={agentQuery.isInitialLoading ? null : (current_agent_id ?? null)}\n            />\n          </div>\n          {/* Create + Select Button */}\n          {agent_id && (\n            <div className=\"flex w-full gap-2\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                className=\"w-full justify-center\"\n                onClick={() => {\n                  reset(defaultAgentFormValues);\n                  setCurrentAgentId(undefined);\n                }}\n                disabled={agentQuery.isInitialLoading}\n              >\n                <Plus className=\"mr-1 h-4 w-4\" />\n                {localize('com_ui_create') +\n                  ' ' +\n                  localize('com_ui_new') +\n                  ' ' +\n                  localize('com_ui_agent')}\n              </Button>\n              <Button\n                variant=\"submit\"\n                disabled={!agent_id || agentQuery.isInitialLoading}\n                onClick={(e) => {\n                  e.preventDefault();\n                  handleSelectAgent();\n                }}\n                aria-label={localize('com_ui_select') + ' ' + localize('com_ui_agent')}\n              >\n                {localize('com_ui_select')}\n              </Button>\n            </div>\n          )}\n        </div>\n        {agentQuery.isInitialLoading && <AgentPanelSkeleton />}\n        {!canEditAgent && !agentQuery.isInitialLoading && (\n          <div className=\"flex h-[30vh] w-full items-center justify-center\">\n            <div className=\"text-center\">\n              <h2 className=\"text-token-text-primary m-2 text-xl font-semibold\">\n                {localize('com_agents_not_available')}\n              </h2>\n              <p className=\"text-token-text-secondary\">{localize('com_agents_no_access')}</p>\n            </div>\n          </div>\n        )}\n        {canEditAgent && !agentQuery.isInitialLoading && activePanel === Panel.model && (\n          <ModelPanel\n            setActivePanel={setActivePanel}\n            agent_id={agent_id}\n            providers={providers}\n            models={models}\n          />\n        )}\n        {canEditAgent && !agentQuery.isInitialLoading && activePanel === Panel.builder && (\n          <AgentConfig\n            actions={actions}\n            setAction={setAction}\n            agentsConfig={agentsConfig}\n            setActivePanel={setActivePanel}\n            endpointsConfig={endpointsConfig}\n            setCurrentAgentId={setCurrentAgentId}\n          />\n        )}\n      </form>\n    </FormProvider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentPanelSkeleton.tsx",
    "content": "import React from 'react';\nimport { Skeleton } from '~/components/ui';\n\nexport default function AgentPanelSkeleton() {\n  return (\n    <div className=\"h-auto bg-white px-4 pb-8 pt-3 dark:bg-transparent\">\n      {/* Avatar */}\n      <div className=\"mb-4\">\n        <div className=\"flex w-full items-center justify-center gap-4\">\n          <Skeleton className=\"relative h-20 w-20 rounded-full\" />\n        </div>\n        {/* Name */}\n        <Skeleton className=\"mb-2 h-5 w-1/5 rounded-lg\" />\n        <Skeleton className=\"mb-1 h-[40px] w-full rounded-lg\" />\n        <Skeleton className=\"h-3 w-1/4 rounded-lg\" />\n      </div>\n\n      {/* Description */}\n      <div className=\"mb-4\">\n        <Skeleton className=\"mb-2 h-5 w-1/4 rounded-lg\" />\n        <Skeleton className=\"h-[40px] w-full rounded-lg\" />\n      </div>\n\n      {/* Instructions */}\n      <div className=\"mb-6\">\n        <Skeleton className=\"mb-2 h-5 w-1/4 rounded-lg\" />\n        <Skeleton className=\"h-[100px] w-full rounded-lg\" />\n      </div>\n\n      {/* Model and Provider */}\n      <div className=\"mb-6\">\n        <Skeleton className=\"mb-2 h-5 w-1/4 rounded-lg\" />\n        <Skeleton className=\"h-[40px] w-full rounded-lg\" />\n      </div>\n\n      {/* Capabilities */}\n      <div className=\"mb-6\">\n        <Skeleton className=\"mb-2 h-5 w-1/4 rounded-lg\" />\n        <Skeleton className=\"mb-2 h-5 w-36 rounded-lg\" />\n        <Skeleton className=\"mb-4 h-[35px] w-full rounded-lg\" />\n        <Skeleton className=\"mb-2 h-5 w-24 rounded-lg\" />\n        <Skeleton className=\"h-[35px] w-full rounded-lg\" />\n      </div>\n\n      {/* Tools & Actions */}\n      <div className=\"mb-6\">\n        <Skeleton className=\"mb-2 h-5 w-1/4 rounded-lg\" />\n        <Skeleton className=\"mb-2 h-[35px] w-full rounded-lg\" />\n        <Skeleton className=\"mb-2 h-[35px] w-full rounded-lg\" />\n        <div className=\"flex space-x-2\">\n          <Skeleton className=\"h-8 w-1/2 rounded-lg\" />\n          <Skeleton className=\"h-8 w-1/2 rounded-lg\" />\n        </div>\n      </div>\n\n      {/* Admin Settings */}\n      <div className=\"mb-6\">\n        <Skeleton className=\"h-[35px] w-full rounded-lg\" />\n      </div>\n\n      {/* Bottom Buttons */}\n      <div className=\"flex items-center justify-end gap-2\">\n        <Skeleton className=\"h-[35px] w-16 rounded-lg\" />\n        <Skeleton className=\"h-[35px] w-16 rounded-lg\" />\n        <Skeleton className=\"h-[35px] w-16 rounded-lg\" />\n        <Skeleton className=\"h-[35px] w-full rounded-lg\" />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentPanelSwitch.tsx",
    "content": "import { useState, useEffect, useMemo } from 'react';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { ActionsEndpoint } from '~/common';\nimport type { Action, TConfig, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport { useGetActionsQuery, useGetEndpointsQuery } from '~/data-provider';\nimport { useChatContext } from '~/Providers';\nimport ActionsPanel from './ActionsPanel';\nimport AgentPanel from './AgentPanel';\nimport { Panel } from '~/common';\n\nexport default function AgentPanelSwitch() {\n  const { conversation, index } = useChatContext();\n  const [activePanel, setActivePanel] = useState(Panel.builder);\n  const [action, setAction] = useState<Action | undefined>(undefined);\n  const [currentAgentId, setCurrentAgentId] = useState<string | undefined>(conversation?.agent_id);\n  const { data: actions = [] } = useGetActionsQuery(conversation?.endpoint as ActionsEndpoint);\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n\n  const agentsConfig = useMemo(\n    () => endpointsConfig?.[EModelEndpoint.agents] ?? ({} as TConfig | null),\n    [endpointsConfig],\n  );\n\n  useEffect(() => {\n    const agent_id = conversation?.agent_id ?? '';\n    if (agent_id) {\n      setCurrentAgentId(agent_id);\n    }\n  }, [conversation?.agent_id]);\n\n  if (!conversation?.endpoint) {\n    return null;\n  }\n\n  const commonProps = {\n    index,\n    action,\n    actions,\n    setAction,\n    activePanel,\n    setActivePanel,\n    setCurrentAgentId,\n    agent_id: currentAgentId,\n  };\n\n  if (activePanel === Panel.actions) {\n    return <ActionsPanel {...commonProps} />;\n  }\n\n  return (\n    <AgentPanel {...commonProps} agentsConfig={agentsConfig} endpointsConfig={endpointsConfig} />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentSelect.tsx",
    "content": "import { EarthIcon } from 'lucide-react';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport { AgentCapabilities, defaultAgentFormValues } from '~/data-provider/data-provider/src';\nimport type { UseMutationResult, QueryObserverResult } from '@tanstack/react-query';\nimport type { Agent, AgentCreateParams } from '~/data-provider/data-provider/src';\nimport type { TAgentCapabilities, AgentForm } from '~/common';\nimport { useListAgentsQuery, useGetStartupConfig } from '~/data-provider';\nimport { cn, createProviderOption, processAgentOption } from '~/utils';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport { useLocalize } from '~/hooks';\n\nconst keys = new Set(Object.keys(defaultAgentFormValues));\n\nexport default function AgentSelect({\n  agentQuery,\n  selectedAgentId = null,\n  setCurrentAgentId,\n  createMutation,\n}: {\n  selectedAgentId: string | null;\n  agentQuery: QueryObserverResult<Agent>;\n  setCurrentAgentId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  createMutation: UseMutationResult<Agent, Error, AgentCreateParams>;\n}) {\n  const localize = useLocalize();\n  const lastSelectedAgent = useRef<string | null>(null);\n  const { control, reset } = useFormContext();\n\n  const { data: startupConfig } = useGetStartupConfig();\n  const { data: agents = null } = useListAgentsQuery(undefined, {\n    select: (res) =>\n      res.data.map((agent) =>\n        processAgentOption({\n          agent,\n          instanceProjectId: startupConfig?.instanceProjectId,\n        }),\n      ),\n  });\n\n  const resetAgentForm = useCallback(\n    (fullAgent: Agent) => {\n      const { instanceProjectId } = startupConfig ?? {};\n      const isGlobal =\n        (instanceProjectId != null && fullAgent.projectIds?.includes(instanceProjectId)) ?? false;\n      const update = {\n        ...fullAgent,\n        provider: createProviderOption(fullAgent.provider),\n        label: fullAgent.name ?? '',\n        value: fullAgent.id || '',\n        icon: isGlobal ? <EarthIcon className={'icon-lg text-green-400'} /> : null,\n      };\n\n      const capabilities: TAgentCapabilities = {\n        [AgentCapabilities.file_search]: false,\n        [AgentCapabilities.execute_code]: false,\n        [AgentCapabilities.end_after_tools]: false,\n        [AgentCapabilities.hide_sequential_outputs]: false,\n      };\n\n      const agentTools: string[] = [];\n      (fullAgent.tools ?? []).forEach((tool) => {\n        if (capabilities[tool] !== undefined) {\n          capabilities[tool] = true;\n          return;\n        }\n\n        agentTools.push(tool);\n      });\n\n      const formValues: Partial<AgentForm & TAgentCapabilities> = {\n        ...capabilities,\n        agent: update,\n        model: update.model,\n        tools: agentTools,\n      };\n\n      Object.entries(fullAgent).forEach(([name, value]) => {\n        if (name === 'model_parameters') {\n          formValues[name] = value;\n          return;\n        }\n\n        if (!keys.has(name)) {\n          return;\n        }\n\n        if (typeof value !== 'number' && typeof value !== 'object') {\n          formValues[name] = value;\n        }\n      });\n\n      reset(formValues);\n    },\n    [reset, startupConfig],\n  );\n\n  const onSelect = useCallback(\n    (selectedId: string) => {\n      const agentExists = !!(selectedId\n        ? (agents ?? []).find((agent) => agent.id === selectedId)\n        : undefined);\n\n      createMutation.reset();\n      if (!agentExists) {\n        setCurrentAgentId(undefined);\n        return reset({\n          ...defaultAgentFormValues,\n        });\n      }\n\n      setCurrentAgentId(selectedId);\n      const agent = agentQuery.data;\n      if (!agent) {\n        console.warn('Agent not found');\n        return;\n      }\n\n      resetAgentForm(agent);\n    },\n    [agents, createMutation, setCurrentAgentId, agentQuery.data, resetAgentForm, reset],\n  );\n\n  useEffect(() => {\n    if (agentQuery.data && agentQuery.isSuccess) {\n      resetAgentForm(agentQuery.data);\n    }\n  }, [agentQuery.data, agentQuery.isSuccess, resetAgentForm]);\n\n  useEffect(() => {\n    let timerId: NodeJS.Timeout | null = null;\n\n    if (selectedAgentId === lastSelectedAgent.current) {\n      return;\n    }\n\n    if (selectedAgentId != null && selectedAgentId !== '' && agents) {\n      timerId = setTimeout(() => {\n        lastSelectedAgent.current = selectedAgentId;\n        onSelect(selectedAgentId);\n      }, 5);\n    }\n\n    return () => {\n      if (timerId) {\n        clearTimeout(timerId);\n      }\n    };\n  }, [selectedAgentId, agents, onSelect]);\n\n  const createAgent = localize('com_ui_create') + ' ' + localize('com_ui_agent');\n\n  return (\n    <Controller\n      name=\"agent\"\n      control={control}\n      render={({ field }) => (\n        <ControlCombobox\n          containerClassName=\"px-0\"\n          selectedValue={(field?.value?.value ?? '') + ''}\n          displayValue={field?.value?.label ?? ''}\n          selectPlaceholder={createAgent}\n          iconSide=\"right\"\n          searchPlaceholder={localize('com_agents_search_name')}\n          SelectIcon={field?.value?.icon}\n          setValue={onSelect}\n          items={\n            agents?.map((agent) => ({\n              label: agent.name ?? '',\n              value: agent.id ?? '',\n              icon: agent.icon,\n            })) ?? [\n              {\n                label: 'Loading...',\n                value: '',\n              },\n            ]\n          }\n          className={cn(\n            'z-50 flex h-[40px] w-full flex-none items-center justify-center truncate rounded-md bg-transparent font-bold',\n          )}\n          ariaLabel={localize('com_ui_agent')}\n          isCollapsed={false}\n          showCarat={true}\n        />\n      )}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/AgentTool.tsx",
    "content": "import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport { useUpdateUserPluginsMutation } from '~/data-provider/data-provider/src/react-query';\nimport { OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useToastContext } from '~/Providers';\nimport { TrashIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function AgentTool({\n  tool,\n  allTools,\n  agent_id = '',\n}: {\n  tool: string;\n  allTools: TPlugin[];\n  agent_id?: string;\n}) {\n  const [isHovering, setIsHovering] = useState(false);\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const updateUserPlugins = useUpdateUserPluginsMutation();\n  const { getValues, setValue } = useFormContext();\n  const currentTool = allTools.find((t) => t.pluginKey === tool);\n\n  const removeTool = (tool: string) => {\n    if (tool) {\n      updateUserPlugins.mutate(\n        { pluginKey: tool, action: 'uninstall', auth: null, isEntityTool: true },\n        {\n          onError: (error: unknown) => {\n            showToast({ message: `Error while deleting the tool: ${error}`, status: 'error' });\n          },\n          onSuccess: () => {\n            const tools = getValues('tools').filter((fn: string) => fn !== tool);\n            setValue('tools', tools);\n            showToast({ message: 'Tool deleted successfully', status: 'success' });\n          },\n        },\n      );\n    }\n  };\n\n  if (!currentTool) {\n    return null;\n  }\n\n  return (\n    <OGDialog>\n      <div\n        className={cn('flex w-full items-center rounded-lg text-sm', !agent_id ? 'opacity-40' : '')}\n        onMouseEnter={() => setIsHovering(true)}\n        onMouseLeave={() => setIsHovering(false)}\n      >\n        <div className=\"flex grow items-center\">\n          {currentTool.icon && (\n            <div className=\"flex h-9 w-9 items-center justify-center overflow-hidden rounded-full\">\n              <div\n                className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-center bg-no-repeat dark:bg-white/20\"\n                style={{ backgroundImage: `url(${currentTool.icon})`, backgroundSize: 'cover' }}\n              />\n            </div>\n          )}\n          <div\n            className=\"h-9 grow px-3 py-2\"\n            style={{ textOverflow: 'ellipsis', wordBreak: 'break-all', overflow: 'hidden' }}\n          >\n            {currentTool.name}\n          </div>\n        </div>\n\n        {isHovering && (\n          <OGDialogTrigger asChild>\n            <button\n              type=\"button\"\n              className=\"transition-color flex h-9 w-9 min-w-9 items-center justify-center rounded-lg duration-200 hover:bg-gray-200 dark:hover:bg-gray-700\"\n            >\n              <TrashIcon />\n            </button>\n          </OGDialogTrigger>\n        )}\n      </div>\n      <OGDialogTemplate\n        showCloseButton={false}\n        title={localize('com_ui_delete_tool')}\n        mainClassName=\"px-0\"\n        className=\"max-w-[450px]\"\n        main={\n          <Label className=\"text-left text-sm font-medium\">\n            {localize('com_ui_delete_tool_confirm')}\n          </Label>\n        }\n        selection={{\n          selectHandler: () => removeTool(currentTool.pluginKey),\n          selectClasses:\n            'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 transition-color duration-200 text-white',\n          selectText: localize('com_ui_delete'),\n        }}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Artifacts.tsx",
    "content": "import { useFormContext } from 'react-hook-form';\nimport { ArtifactModes, AgentCapabilities } from '~/data-provider/data-provider/src';\nimport type { AgentForm } from '~/common';\nimport {\n  Switch,\n  HoverCard,\n  HoverCardPortal,\n  HoverCardContent,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { useLocalize } from '~/hooks';\nimport { CircleHelpIcon } from '~/components/svg';\nimport { ESide } from '~/common';\n\nexport default function Artifacts() {\n  const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { setValue, watch } = methods;\n\n  const artifactsMode = watch(AgentCapabilities.artifacts);\n\n  const handleArtifactsChange = (value: boolean) => {\n    setValue(AgentCapabilities.artifacts, value ? ArtifactModes.DEFAULT : '', {\n      shouldDirty: true,\n    });\n  };\n\n  const handleShadcnuiChange = (value: boolean) => {\n    setValue(AgentCapabilities.artifacts, value ? ArtifactModes.SHADCNUI : ArtifactModes.DEFAULT, {\n      shouldDirty: true,\n    });\n  };\n\n  const handleCustomModeChange = (value: boolean) => {\n    setValue(AgentCapabilities.artifacts, value ? ArtifactModes.CUSTOM : ArtifactModes.DEFAULT, {\n      shouldDirty: true,\n    });\n  };\n\n  const isEnabled = artifactsMode !== undefined && artifactsMode !== '';\n  const isCustomEnabled = artifactsMode === ArtifactModes.CUSTOM;\n  const isShadcnEnabled = artifactsMode === ArtifactModes.SHADCNUI;\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"mb-1.5 flex items-center gap-2\">\n        <span>\n          <label className=\"text-token-text-primary block font-medium\">\n            {localize('com_ui_artifacts')}\n          </label>\n        </span>\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <SwitchItem\n          id=\"artifacts\"\n          label={localize('com_ui_artifacts_toggle_agent')}\n          checked={isEnabled}\n          onCheckedChange={handleArtifactsChange}\n          hoverCardText={localize('com_nav_info_code_artifacts_agent')}\n        />\n        <SwitchItem\n          id=\"includeShadcnui\"\n          label={localize('com_ui_include_shadcnui_agent')}\n          checked={isShadcnEnabled}\n          onCheckedChange={handleShadcnuiChange}\n          hoverCardText={localize('com_nav_info_include_shadcnui')}\n          disabled={!isEnabled || isCustomEnabled}\n        />\n        <SwitchItem\n          id=\"customPromptMode\"\n          label={localize('com_ui_custom_prompt_mode')}\n          checked={isCustomEnabled}\n          onCheckedChange={handleCustomModeChange}\n          hoverCardText={localize('com_nav_info_custom_prompt_mode')}\n          disabled={!isEnabled}\n        />\n      </div>\n    </div>\n  );\n}\n\nfunction SwitchItem({\n  id,\n  label,\n  checked,\n  onCheckedChange,\n  hoverCardText,\n  disabled = false,\n}: {\n  id: string;\n  label: string;\n  checked: boolean;\n  onCheckedChange: (value: boolean) => void;\n  hoverCardText: string;\n  disabled?: boolean;\n}) {\n  return (\n    <HoverCard openDelay={50}>\n      <div className=\"flex items-center justify-between\">\n        <div className=\"flex items-center space-x-2\">\n          <div className={disabled ? 'text-text-tertiary' : ''}>{label}</div>\n          <HoverCardTrigger>\n            <CircleHelpIcon className=\"h-4 w-4 text-text-tertiary\" />\n          </HoverCardTrigger>\n        </div>\n        <HoverCardPortal>\n          <HoverCardContent side={ESide.Top} className=\"w-80\">\n            <div className=\"space-y-2\">\n              <p className=\"text-sm text-text-secondary\">{hoverCardText}</p>\n            </div>\n          </HoverCardContent>\n        </HoverCardPortal>\n        <Switch\n          id={id}\n          checked={checked}\n          onCheckedChange={onCheckedChange}\n          className=\"ml-4\"\n          data-testid={id}\n          disabled={disabled}\n        />\n      </div>\n    </HoverCard>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Code/Action.tsx",
    "content": "import { KeyRoundIcon } from 'lucide-react';\nimport { AuthType, AgentCapabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller, useWatch } from 'react-hook-form';\nimport type { AgentForm } from '~/common';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { useLocalize, useCodeApiKeyForm } from '~/hooks';\nimport { CircleHelpIcon } from '~/components/svg';\nimport ApiKeyDialog from './ApiKeyDialog';\nimport { ESide } from '~/common';\n\nexport default function Action({ authType = '', isToolAuthenticated = false }) {\n  const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { control, setValue, getValues } = methods;\n  const {\n    onSubmit,\n    isDialogOpen,\n    setIsDialogOpen,\n    handleRevokeApiKey,\n    methods: keyFormMethods,\n  } = useCodeApiKeyForm({\n    onSubmit: () => {\n      setValue(AgentCapabilities.execute_code, true, { shouldDirty: true });\n    },\n    onRevoke: () => {\n      setValue(AgentCapabilities.execute_code, false, { shouldDirty: true });\n    },\n  });\n\n  const runCodeIsEnabled = useWatch({ control, name: AgentCapabilities.execute_code });\n  const isUserProvided = authType === AuthType.USER_PROVIDED;\n\n  const handleCheckboxChange = (checked: boolean) => {\n    if (isToolAuthenticated) {\n      setValue(AgentCapabilities.execute_code, checked, { shouldDirty: true });\n    } else if (runCodeIsEnabled) {\n      setValue(AgentCapabilities.execute_code, false, { shouldDirty: true });\n    } else {\n      setIsDialogOpen(true);\n    }\n  };\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"flex items-center\">\n          <Controller\n            name={AgentCapabilities.execute_code}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={runCodeIsEnabled ? runCodeIsEnabled : isToolAuthenticated && field.value}\n                onCheckedChange={handleCheckboxChange}\n                className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value.toString()}\n                disabled={runCodeIsEnabled ? false : !isToolAuthenticated}\n              />\n            )}\n          />\n          <button\n            type=\"button\"\n            className=\"flex items-center space-x-2\"\n            onClick={() => {\n              const value = !getValues(AgentCapabilities.execute_code);\n              handleCheckboxChange(value);\n            }}\n          >\n            <label\n              className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n              htmlFor={AgentCapabilities.execute_code}\n            >\n              {localize('com_ui_run_code')}\n            </label>\n          </button>\n          <div className=\"ml-2 flex gap-2\">\n            {isUserProvided && (isToolAuthenticated || runCodeIsEnabled) && (\n              <button type=\"button\" onClick={() => setIsDialogOpen(true)}>\n                <KeyRoundIcon className=\"h-5 w-5 text-text-primary\" />\n              </button>\n            )}\n            <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-4 w-4 text-text-tertiary\" />\n            </HoverCardTrigger>\n          </div>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} className=\"w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-text-secondary\">\n                  {localize('com_agents_code_interpreter')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n        </div>\n      </HoverCard>\n      <ApiKeyDialog\n        isOpen={isDialogOpen}\n        onSubmit={onSubmit}\n        onRevoke={handleRevokeApiKey}\n        onOpenChange={setIsDialogOpen}\n        register={keyFormMethods.register}\n        isToolAuthenticated={isToolAuthenticated}\n        handleSubmit={keyFormMethods.handleSubmit}\n        isUserProvided={authType === AuthType.USER_PROVIDED}\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Code/ApiKeyDialog.tsx",
    "content": "import type { UseFormRegister, UseFormHandleSubmit } from 'react-hook-form';\nimport type { ApiKeyFormData } from '~/common';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { Input, Button, OGDialog } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport default function ApiKeyDialog({\n  isOpen,\n  onSubmit,\n  onRevoke,\n  onOpenChange,\n  isUserProvided,\n  isToolAuthenticated,\n  register,\n  handleSubmit,\n}: {\n  isOpen: boolean;\n  onOpenChange: (open: boolean) => void;\n  onSubmit: (data: { apiKey: string }) => void;\n  onRevoke: () => void;\n  isUserProvided: boolean;\n  isToolAuthenticated: boolean;\n  register: UseFormRegister<ApiKeyFormData>;\n  handleSubmit: UseFormHandleSubmit<ApiKeyFormData>;\n}) {\n  const localize = useLocalize();\n  const languageIcons = [\n    'python.svg',\n    'nodedotjs.svg',\n    'tsnode.svg',\n    'rust.svg',\n    'go.svg',\n    'c.svg',\n    'cplusplus.svg',\n    'php.svg',\n    'fortran.svg',\n    'r.svg',\n  ];\n\n  return (\n    <OGDialog open={isOpen} onOpenChange={onOpenChange}>\n      <OGDialogTemplate\n        className=\"w-11/12 sm:w-[450px]\"\n        title=\"\"\n        main={\n          <>\n            <div className=\"mb-4 text-center font-medium\">\n              {localize('com_ui_librechat_code_api_title')}\n            </div>\n            <div className=\"mb-4 text-center text-sm\">\n              {localize('com_ui_librechat_code_api_subtitle')}\n            </div>\n            {/* Language Icons Stack */}\n            <div className=\"mb-6\">\n              <div className=\"mx-auto mb-4 flex max-w-[400px] flex-wrap justify-center gap-3\">\n                {languageIcons.map((icon) => (\n                  <div key={icon} className=\"h-6 w-6\">\n                    <img\n                      src={`/assets/${icon}`}\n                      alt=\"\"\n                      className=\"h-full w-full object-contain opacity-[0.85] dark:invert\"\n                    />\n                  </div>\n                ))}\n              </div>\n              <a\n                href=\"https://code.librechat.ai/pricing\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"block text-center text-[15px] font-medium text-blue-500 underline decoration-1 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300\"\n              >\n                {localize('com_ui_librechat_code_api_key')}\n              </a>\n            </div>\n            <form onSubmit={handleSubmit(onSubmit)}>\n              <Input\n                type=\"password\"\n                placeholder={localize('com_ui_enter_api_key')}\n                autoComplete=\"one-time-code\"\n                readOnly={true}\n                onFocus={(e) => (e.target.readOnly = false)}\n                {...register('apiKey', { required: true })}\n              />\n            </form>\n          </>\n        }\n        selection={{\n          selectHandler: handleSubmit(onSubmit),\n          selectClasses: 'bg-green-500 hover:bg-green-600 text-white',\n          selectText: localize('com_ui_save'),\n        }}\n        buttons={\n          isUserProvided &&\n          isToolAuthenticated && (\n            <Button\n              onClick={onRevoke}\n              className=\"bg-destructive text-white transition-all duration-200 hover:bg-destructive/80\"\n            >\n              {localize('com_ui_revoke')}\n            </Button>\n          )\n        }\n        showCancelButton={true}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Code/Files.tsx",
    "content": "import { useState, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n  EToolResources,\n  EModelEndpoint,\n  mergeFileConfig,\n  AgentCapabilities,\n  fileConfig as defaultFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { EndpointFileConfig } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile, AgentForm } from '~/common';\nimport { useFileHandling, useLocalize, useLazyEffect } from '~/hooks';\nimport FileRow from '~/components/Chat/Input/Files/FileRow';\nimport { useGetFileConfig } from '~/data-provider';\nimport { AttachmentIcon } from '~/components/svg';\nimport { useChatContext } from '~/Providers';\n\nconst tool_resource = EToolResources.execute_code;\n\nexport default function Files({\n  agent_id,\n  files: _files,\n}: {\n  agent_id: string;\n  files?: [string, ExtendedFile][];\n}) {\n  const localize = useLocalize();\n  const { setFilesLoading } = useChatContext();\n  const { watch } = useFormContext<AgentForm>();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const [files, setFiles] = useState<Map<string, ExtendedFile>>(new Map());\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n  const { abortUpload, handleFileChange } = useFileHandling({\n    fileSetter: setFiles,\n    overrideEndpoint: EModelEndpoint.agents,\n    additionalMetadata: { agent_id, tool_resource },\n  });\n\n  useLazyEffect(\n    () => {\n      if (_files) {\n        setFiles(new Map(_files));\n      }\n    },\n    [_files],\n    750,\n  );\n\n  const codeChecked = watch(AgentCapabilities.execute_code);\n\n  const endpointFileConfig = fileConfig.endpoints[EModelEndpoint.agents] as\n    | EndpointFileConfig\n    | undefined;\n  const isUploadDisabled = endpointFileConfig?.disabled ?? false;\n\n  if (isUploadDisabled) {\n    return null;\n  }\n\n  const handleButtonClick = () => {\n    // necessary to reset the input\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <div className=\"mb-2 w-full\">\n      <div className=\"flex flex-col gap-3\">\n        <div className=\"rounded-lg text-xs text-text-secondary\">\n          {localize('com_assistants_code_interpreter_files')}\n        </div>\n        <FileRow\n          files={files}\n          setFiles={setFiles}\n          agent_id={agent_id}\n          abortUpload={abortUpload}\n          tool_resource={tool_resource}\n          setFilesLoading={setFilesLoading}\n          Wrapper={({ children }) => <div className=\"flex flex-wrap gap-2\">{children}</div>}\n        />\n        <div>\n          <button\n            type=\"button\"\n            disabled={!agent_id || codeChecked === false}\n            className=\"btn btn-neutral border-token-border-light relative h-9 w-full rounded-lg font-medium\"\n            onClick={handleButtonClick}\n          >\n            <div className=\"flex w-full items-center justify-center gap-1\">\n              <input\n                multiple={true}\n                type=\"file\"\n                style={{ display: 'none' }}\n                tabIndex={-1}\n                ref={fileInputRef}\n                disabled={!agent_id || codeChecked === false}\n                onChange={handleFileChange}\n              />\n              <AttachmentIcon className=\"text-token-text-primary h-4 w-4\" />\n              {localize('com_ui_upload_code_files')}\n            </div>\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Code/Form.tsx",
    "content": "import { Tools } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport { useVerifyAgentToolAuth } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\nimport Action from './Action';\nimport Files from './Files';\n\nexport default function CodeForm({\n  agent_id,\n  files,\n}: {\n  agent_id: string;\n  files?: [string, ExtendedFile][];\n}) {\n  const localize = useLocalize();\n  const { data } = useVerifyAgentToolAuth({ toolId: Tools.execute_code });\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"mb-1.5 flex items-center gap-2\">\n        <div className=\"flex flex-row items-center gap-1\">\n          <div className=\"flex items-center gap-1\">\n            <span className=\"text-token-text-primary block font-medium\">\n              {localize('com_agents_code_interpreter_title')}\n            </span>\n            <span className=\"text-xs text-text-secondary\">\n              {localize('com_agents_by_librechat')}\n            </span>\n          </div>\n        </div>\n      </div>\n      <div className=\"flex flex-col items-start gap-2\">\n        <Action authType={data?.message} isToolAuthenticated={data?.authenticated} />\n        <Files agent_id={agent_id} files={files} />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/DeleteButton.tsx",
    "content": "import type { Agent, AgentCreateParams } from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport { OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport { useChatContext, useToastContext } from '~/Providers';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useLocalize, useSetIndexOptions } from '~/hooks';\nimport { cn, removeFocusOutlines, logger } from '~/utils';\nimport { useDeleteAgentMutation } from '~/data-provider';\nimport { TrashIcon } from '~/components/svg';\n\nexport default function DeleteButton({\n  agent_id,\n  setCurrentAgentId,\n  createMutation,\n}: {\n  agent_id: string;\n  setCurrentAgentId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  createMutation: UseMutationResult<Agent, Error, AgentCreateParams>;\n}) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const { conversation } = useChatContext();\n  const { setOption } = useSetIndexOptions();\n\n  const deleteAgent = useDeleteAgentMutation({\n    onSuccess: (_, vars, context) => {\n      const updatedList = context as Agent[] | undefined;\n      if (!updatedList) {\n        return;\n      }\n\n      showToast({\n        message: localize('com_ui_agent_deleted'),\n        status: 'success',\n      });\n\n      if (createMutation.data?.id ?? '') {\n        logger.log('agents', 'resetting createMutation');\n        createMutation.reset();\n      }\n\n      const firstAgent = updatedList[0] as Agent | undefined;\n      if (!firstAgent) {\n        return setOption('agent_id')('');\n      }\n\n      if (vars.agent_id === conversation?.agent_id) {\n        setOption('model')('');\n        return setOption('agent_id')(firstAgent.id);\n      }\n\n      const currentAgent = updatedList.find((agent) => agent.id === conversation?.agent_id);\n\n      if (currentAgent) {\n        setCurrentAgentId(currentAgent.id);\n      }\n\n      setCurrentAgentId(firstAgent.id);\n    },\n    onError: (error) => {\n      console.error(error);\n      showToast({\n        message: localize('com_ui_agent_delete_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  if (!agent_id) {\n    return null;\n  }\n\n  return (\n    <OGDialog>\n      <OGDialogTrigger asChild>\n        <button\n          className={cn(\n            'btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium',\n            removeFocusOutlines,\n          )}\n          aria-label={localize('com_ui_delete') + ' ' + localize('com_ui_agent')}\n          type=\"button\"\n        >\n          <div className=\"flex w-full items-center justify-center gap-2 text-red-500\">\n            <TrashIcon />\n          </div>\n        </button>\n      </OGDialogTrigger>\n      <OGDialogTemplate\n        title={localize('com_ui_delete') + ' ' + localize('com_ui_agent')}\n        className=\"max-w-[450px]\"\n        main={\n          <>\n            <div className=\"flex w-full flex-col items-center gap-2\">\n              <div className=\"grid w-full items-center gap-2\">\n                <Label htmlFor=\"delete-agent\" className=\"text-left text-sm font-medium\">\n                  {localize('com_ui_delete_agent_confirm')}\n                </Label>\n              </div>\n            </div>\n          </>\n        }\n        selection={{\n          selectHandler: () => deleteAgent.mutate({ agent_id }),\n          selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white',\n          selectText: localize('com_ui_delete'),\n        }}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/DuplicateAgent.tsx",
    "content": "import { CopyIcon } from 'lucide-react';\nimport { useDuplicateAgentMutation } from '~/data-provider';\nimport { cn, removeFocusOutlines } from '~/utils';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\nexport default function DuplicateAgent({ agent_id }: { agent_id: string }) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const duplicateAgent = useDuplicateAgentMutation({\n    onSuccess: () => {\n      showToast({\n        message: localize('com_ui_agent_duplicated'),\n        status: 'success',\n      });\n    },\n    onError: (error) => {\n      console.error(error);\n      showToast({\n        message: localize('com_ui_agent_duplicate_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  if (!agent_id) {\n    return null;\n  }\n\n  const handleDuplicate = () => {\n    duplicateAgent.mutate({ agent_id });\n  };\n\n  return (\n    <button\n      className={cn(\n        'btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium',\n        removeFocusOutlines,\n      )}\n      aria-label={localize('com_ui_duplicate') + ' ' + localize('com_ui_agent')}\n      type=\"button\"\n      onClick={handleDuplicate}\n    >\n      <div className=\"flex w-full items-center justify-center gap-2 text-primary\">\n        <CopyIcon className=\"size-4\" />\n      </div>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/FileSearch.tsx",
    "content": "import { useState, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n  EModelEndpoint,\n  EToolResources,\n  mergeFileConfig,\n  AgentCapabilities,\n  fileConfig as defaultFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { ExtendedFile, AgentForm } from '~/common';\nimport { useFileHandling, useLocalize, useLazyEffect } from '~/hooks';\nimport FileRow from '~/components/Chat/Input/Files/FileRow';\nimport FileSearchCheckbox from './FileSearchCheckbox';\nimport { useGetFileConfig } from '~/data-provider';\nimport { AttachmentIcon } from '~/components/svg';\nimport { useChatContext } from '~/Providers';\n\nexport default function FileSearch({\n  agent_id,\n  files: _files,\n}: {\n  agent_id: string;\n  files?: [string, ExtendedFile][];\n}) {\n  const localize = useLocalize();\n  const { setFilesLoading } = useChatContext();\n  const { watch } = useFormContext<AgentForm>();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const [files, setFiles] = useState<Map<string, ExtendedFile>>(new Map());\n\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const { handleFileChange } = useFileHandling({\n    overrideEndpoint: EModelEndpoint.agents,\n    additionalMetadata: { agent_id, tool_resource: EToolResources.file_search },\n    fileSetter: setFiles,\n  });\n\n  useLazyEffect(\n    () => {\n      if (_files) {\n        setFiles(new Map(_files));\n      }\n    },\n    [_files],\n    750,\n  );\n\n  const fileSearchChecked = watch(AgentCapabilities.file_search);\n\n  const endpointFileConfig = fileConfig.endpoints[EModelEndpoint.agents];\n  const isUploadDisabled = endpointFileConfig.disabled ?? false;\n\n  if (isUploadDisabled) {\n    return null;\n  }\n\n  const handleButtonClick = () => {\n    // necessary to reset the input\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"mb-1.5 flex items-center gap-2\">\n        <span>\n          <label className=\"text-token-text-primary block font-medium\">\n            {localize('com_assistants_file_search')}\n          </label>\n        </span>\n      </div>\n      <FileSearchCheckbox />\n      <div className=\"flex flex-col gap-3\">\n        {/* File Search (RAG API) Files */}\n        <FileRow\n          files={files}\n          setFiles={setFiles}\n          setFilesLoading={setFilesLoading}\n          agent_id={agent_id}\n          tool_resource={EToolResources.file_search}\n          Wrapper={({ children }) => <div className=\"flex flex-wrap gap-2\">{children}</div>}\n        />\n        <div>\n          <button\n            type=\"button\"\n            disabled={!agent_id || fileSearchChecked === false}\n            className=\"btn btn-neutral border-token-border-light relative h-9 w-full rounded-lg font-medium\"\n            onClick={handleButtonClick}\n          >\n            <div className=\"flex w-full items-center justify-center gap-1\">\n              <AttachmentIcon className=\"text-token-text-primary h-4 w-4\" />\n              <input\n                multiple={true}\n                type=\"file\"\n                style={{ display: 'none' }}\n                tabIndex={-1}\n                ref={fileInputRef}\n                disabled={!agent_id || fileSearchChecked === false}\n                onChange={handleFileChange}\n              />\n              {localize('com_ui_upload_file_search')}\n            </div>\n          </button>\n        </div>\n        {/* Disabled Message */}\n        {agent_id ? null : (\n          <div className=\"text-xs text-text-secondary\">\n            {localize('com_agents_file_search_disabled')}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/FileSearchCheckbox.tsx",
    "content": "import { AgentCapabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport type { AgentForm } from '~/common';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { CircleHelpIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\n\nexport default function FileSearchCheckbox() {\n  const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { control, setValue, getValues } = methods;\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"my-2 flex items-center\">\n          <Controller\n            name={AgentCapabilities.file_search}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={field.value}\n                onCheckedChange={field.onChange}\n                className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value.toString()}\n              />\n            )}\n          />\n          <button\n            type=\"button\"\n            className=\"flex items-center space-x-2\"\n            onClick={() =>\n              setValue(AgentCapabilities.file_search, !getValues(AgentCapabilities.file_search), {\n                shouldDirty: true,\n              })\n            }\n          >\n            <label\n              className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n              htmlFor={AgentCapabilities.file_search}\n            >\n              {localize('com_agents_enable_file_search')}\n            </label>\n            <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-4 w-4 text-text-tertiary\" />\n            </HoverCardTrigger>\n          </button>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} className=\"w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-text-secondary\">\n                  {localize('com_agents_file_search_info')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n        </div>\n      </HoverCard>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ImageVision.tsx",
    "content": "import { useFormContext, Controller } from 'react-hook-form';\nimport { Capabilities } from '~/data-provider/data-provider/src';\nimport type { AgentForm } from '~/common';\nimport { Checkbox } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport default function ImageVision() {\n  const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { control, setValue, getValues } = methods;\n\n  return (\n    <div className=\"flex items-center\">\n      <Controller\n        name={Capabilities.image_vision}\n        control={control}\n        render={({ field }) => (\n          <Checkbox\n            {...field}\n            checked={field.value}\n            onCheckedChange={field.onChange}\n            className=\"relative float-left  mr-2 inline-flex h-4 w-4 cursor-pointer\"\n            value={field.value?.toString()}\n          />\n        )}\n      />\n      <label\n        className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n        htmlFor={Capabilities.image_vision}\n        onClick={() =>\n          setValue(Capabilities.image_vision, !getValues(Capabilities.image_vision), {\n            shouldDirty: true,\n          })\n        }\n      >\n        <div className=\"flex items-center\">{localize('com_assistants_image_vision')}</div>\n      </label>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Images.tsx",
    "content": "import { useRef } from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { useLocalize } from '~/hooks';\n\nexport function NoImage() {\n  return (\n    <div className=\"border-token-border-medium flex h-full w-full items-center justify-center rounded-full border-2 border-dashed border-black\">\n      <svg\n        stroke=\"currentColor\"\n        fill=\"none\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"text-4xl\"\n        height=\"1em\"\n        width=\"1em\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n      </svg>\n    </div>\n  );\n}\n\nexport const AgentAvatarRender = ({\n  url,\n  progress = 1,\n}: {\n  url?: string;\n  progress: number; // between 0 and 1\n}) => {\n  const radius = 55; // Radius of the SVG circle\n  const circumference = 2 * Math.PI * radius;\n\n  // Calculate the offset based on the loading progress\n  const offset = circumference - progress * circumference;\n  const circleCSSProperties = {\n    transition: 'stroke-dashoffset 0.3s linear',\n  };\n\n  return (\n    <div>\n      <div className=\"relative h-20 w-20 overflow-hidden rounded-full\">\n        <img\n          src={url}\n          className=\"bg-token-surface-secondary dark:bg-token-surface-tertiary h-full w-full rounded-full object-cover\"\n          alt=\"GPT\"\n          width=\"80\"\n          height=\"80\"\n          style={{ opacity: progress < 1 ? 0.4 : 1 }}\n        />\n        {progress < 1 && (\n          <div className=\"absolute inset-0 flex items-center justify-center bg-black/5 text-white\">\n            <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" className=\"h-6 w-6\">\n              <circle\n                className=\"origin-[50%_50%] -rotate-90 stroke-gray-400\"\n                strokeWidth=\"10\"\n                fill=\"transparent\"\n                r=\"55\"\n                cx=\"60\"\n                cy=\"60\"\n              />\n              <circle\n                className=\"origin-[50%_50%] -rotate-90 transition-[stroke-dashoffset]\"\n                stroke=\"currentColor\"\n                strokeWidth=\"10\"\n                strokeDasharray={`${circumference} ${circumference}`}\n                strokeDashoffset={offset}\n                fill=\"transparent\"\n                r=\"55\"\n                cx=\"60\"\n                cy=\"60\"\n                style={circleCSSProperties}\n              />\n            </svg>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport function AvatarMenu({\n  handleFileChange,\n}: {\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n  const localize = useLocalize();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n\n  const onItemClick = () => {\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <Popover.Portal>\n      <Popover.Content\n        className=\"flex min-w-[100px] max-w-xs flex-col rounded-xl border border-gray-400 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-850 dark:text-white\"\n        sideOffset={5}\n      >\n        <div\n          role=\"menuitem\"\n          className=\"group m-1.5 flex cursor-pointer gap-2 rounded p-2.5 text-sm hover:bg-gray-100 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-gray-800 dark:hover:bg-white/5\"\n          tabIndex={-1}\n          data-orientation=\"vertical\"\n          onClick={onItemClick}\n        >\n          {localize('com_ui_upload_image')}\n        </div>\n        {/* <Popover.Close\n          role=\"menuitem\"\n          className=\"group m-1.5 flex cursor-pointer gap-2 rounded p-2.5 text-sm hover:bg-black/5 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-white/5\"\n          tabIndex={-1}\n          data-orientation=\"vertical\"\n        >\n          Use DALL·E\n        </Popover.Close> */}\n        <input\n          accept=\"image/png,.png,image/jpeg,.jpg,.jpeg,image/gif,.gif,image/webp,.webp\"\n          multiple={false}\n          type=\"file\"\n          style={{ display: 'none' }}\n          onChange={handleFileChange}\n          ref={fileInputRef}\n          tabIndex={-1}\n        />\n      </Popover.Content>\n    </Popover.Portal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ModelPanel.tsx",
    "content": "import React, { useMemo, useEffect } from 'react';\nimport { ChevronLeft, RotateCcw } from 'lucide-react';\nimport { useFormContext, useWatch, Controller } from 'react-hook-form';\nimport { getSettingsKeys, alternateName } from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { AgentForm, AgentModelPanelProps, StringOption } from '~/common';\nimport { componentMapping } from '~/components/SidePanel/Parameters/components';\nimport { agentSettings } from '~/components/SidePanel/Parameters/settings';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { getEndpointField, cn } from '~/utils';\nimport { useLocalize } from '~/hooks';\nimport { Panel } from '~/common';\n\nexport default function Parameters({\n  setActivePanel,\n  providers,\n  models: modelsData,\n}: AgentModelPanelProps) {\n  const localize = useLocalize();\n\n  const { control, setValue } = useFormContext<AgentForm>();\n\n  const model = useWatch({ control, name: 'model' });\n  const providerOption = useWatch({ control, name: 'provider' });\n  const modelParameters = useWatch({ control, name: 'model_parameters' });\n\n  const provider = useMemo(() => {\n    const value =\n      typeof providerOption === 'string'\n        ? providerOption\n        : (providerOption as StringOption | undefined)?.value;\n    return value ?? '';\n  }, [providerOption]);\n  const models = useMemo(\n    () => (provider ? (modelsData[provider] ?? []) : []),\n    [modelsData, provider],\n  );\n\n  useEffect(() => {\n    const _model = model ?? '';\n    if (provider && _model) {\n      const modelExists = models.includes(_model);\n      if (!modelExists) {\n        const newModels = modelsData[provider] ?? [];\n        setValue('model', newModels[0] ?? '');\n      }\n    }\n\n    if (provider && !_model) {\n      setValue('model', models[0] ?? '');\n    }\n  }, [provider, models, modelsData, setValue, model]);\n\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n\n  const bedrockRegions = useMemo(() => {\n    return endpointsConfig?.[provider]?.availableRegions ?? [];\n  }, [endpointsConfig, provider]);\n\n  const endpointType = useMemo(\n    () => getEndpointField(endpointsConfig, provider, 'type'),\n    [provider, endpointsConfig],\n  );\n\n  const parameters = useMemo(() => {\n    const [combinedKey, endpointKey] = getSettingsKeys(endpointType ?? provider, model ?? '');\n    return agentSettings[combinedKey] ?? agentSettings[endpointKey];\n  }, [endpointType, model, provider]);\n\n  const setOption = (optionKey: keyof t.AgentModelParameters) => (value: t.AgentParameterValue) => {\n    setValue(`model_parameters.${optionKey}`, value);\n  };\n\n  const handleResetParameters = () => {\n    setValue('model_parameters', {} as t.AgentModelParameters);\n  };\n\n  return (\n    <div className=\"scrollbar-gutter-stable h-full min-h-[50vh] overflow-auto pb-12 text-sm\">\n      <div className=\"model-panel relative flex flex-col items-center px-16 py-4 text-center\">\n        <div className=\"absolute left-0 top-4\">\n          <button\n            type=\"button\"\n            className=\"btn btn-neutral relative\"\n            onClick={() => {\n              setActivePanel(Panel.builder);\n            }}\n          >\n            <div className=\"model-panel-content flex w-full items-center justify-center gap-2\">\n              <ChevronLeft />\n            </div>\n          </button>\n        </div>\n\n        <div className=\"mb-2 mt-2 text-xl font-medium\">{localize('com_ui_model_parameters')}</div>\n      </div>\n      <div className=\"p-2\">\n        {/* Endpoint aka Provider for Agents */}\n        <div className=\"mb-4\">\n          <label\n            id=\"provider-label\"\n            className=\"text-token-text-primary model-panel-label mb-2 block font-medium\"\n            htmlFor=\"provider\"\n          >\n            {localize('com_ui_provider')} <span className=\"text-red-500\">*</span>\n          </label>\n          <Controller\n            name=\"provider\"\n            control={control}\n            rules={{ required: true, minLength: 1 }}\n            render={({ field, fieldState: { error } }) => {\n              const value =\n                typeof field.value === 'string'\n                  ? field.value\n                  : ((field.value as StringOption)?.value ?? '');\n              const display =\n                typeof field.value === 'string'\n                  ? field.value\n                  : ((field.value as StringOption)?.label ?? '');\n\n              return (\n                <>\n                  <ControlCombobox\n                    selectedValue={value}\n                    displayValue={alternateName[display] ?? display}\n                    selectPlaceholder={localize('com_ui_select_provider')}\n                    searchPlaceholder={localize('com_ui_select_search_provider')}\n                    setValue={field.onChange}\n                    items={providers.map((provider) => ({\n                      label: typeof provider === 'string' ? provider : provider.label,\n                      value: typeof provider === 'string' ? provider : provider.value,\n                    }))}\n                    className={cn(error ? 'border-2 border-red-500' : '')}\n                    ariaLabel={localize('com_ui_provider')}\n                    isCollapsed={false}\n                    showCarat={true}\n                  />\n                  {error && (\n                    <span className=\"model-panel-error text-sm text-red-500 transition duration-300 ease-in-out\">\n                      {localize('com_ui_field_required')}\n                    </span>\n                  )}\n                </>\n              );\n            }}\n          />\n        </div>\n        {/* Model */}\n        <div className=\"model-panel-section mb-4\">\n          <label\n            id=\"model-label\"\n            className={cn(\n              'text-token-text-primary model-panel-label mb-2 block font-medium',\n              !provider && 'text-gray-500 dark:text-gray-400',\n            )}\n            htmlFor=\"model\"\n          >\n            {localize('com_ui_model')} <span className=\"text-red-500\">*</span>\n          </label>\n          <Controller\n            name=\"model\"\n            control={control}\n            rules={{ required: true, minLength: 1 }}\n            render={({ field, fieldState: { error } }) => {\n              return (\n                <>\n                  <ControlCombobox\n                    selectedValue={field.value || ''}\n                    selectPlaceholder={\n                      provider\n                        ? localize('com_ui_select_model')\n                        : localize('com_ui_select_provider_first')\n                    }\n                    searchPlaceholder={localize('com_ui_select_model')}\n                    setValue={field.onChange}\n                    items={models.map((model) => ({\n                      label: model,\n                      value: model,\n                    }))}\n                    disabled={!provider}\n                    className={cn('disabled:opacity-50', error ? 'border-2 border-red-500' : '')}\n                    ariaLabel={localize('com_ui_model')}\n                    isCollapsed={false}\n                    showCarat={true}\n                  />\n                  {provider && error && (\n                    <span className=\"text-sm text-red-500 transition duration-300 ease-in-out\">\n                      {localize('com_ui_field_required')}\n                    </span>\n                  )}\n                </>\n              );\n            }}\n          />\n        </div>\n      </div>\n      {/* Model Parameters */}\n      {parameters && (\n        <div className=\"h-auto max-w-full overflow-x-hidden p-2\">\n          <div className=\"grid grid-cols-4 gap-6\">\n            {/* This is the parent element containing all settings */}\n            {/* Below is an example of an applied dynamic setting, each be contained by a div with the column span specified */}\n            {parameters.map((setting) => {\n              const Component = componentMapping[setting.component];\n              if (!Component) {\n                return null;\n              }\n              const { key, default: defaultValue, ...rest } = setting;\n\n              if (key === 'region' && bedrockRegions.length) {\n                rest.options = bedrockRegions;\n              }\n\n              return (\n                <Component\n                  key={key}\n                  settingKey={key}\n                  defaultValue={defaultValue}\n                  {...rest}\n                  setOption={setOption as t.TSetOption}\n                  conversation={modelParameters as Partial<t.TConversation>}\n                />\n              );\n            })}\n          </div>\n          {/* Reset Parameters Button */}\n          <div className=\"mt-6 flex justify-center\">\n            <button\n              type=\"button\"\n              onClick={handleResetParameters}\n              className=\"btn btn-neutral flex w-full items-center justify-center gap-2 px-4 py-2 text-sm\"\n            >\n              <RotateCcw className=\"h-4 w-4\" aria-hidden=\"true\" />\n              {localize('com_ui_reset_var', { 0: localize('com_ui_model_parameters') })}\n            </button>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Retrieval.tsx",
    "content": "import { useEffect, useMemo } from 'react';\nimport { Capabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller, useWatch } from 'react-hook-form';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport OptionHover from '~/components/SidePanel/Parameters/OptionHover';\nimport { CircleHelpIcon } from '~/components/svg';\nimport type { AgentForm } from '~/common';\nimport { useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils/';\n\nexport default function Retrieval({ retrievalModels }: { retrievalModels: Set<string> }) {\n  const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { control, setValue, getValues } = methods;\n  const model = useWatch({ control, name: 'model' });\n\n  const isDisabled = useMemo(() => !retrievalModels.has(model), [model, retrievalModels]);\n\n  useEffect(() => {\n    if (model && isDisabled) {\n      setValue(Capabilities.retrieval, false);\n    }\n  }, [model, setValue, isDisabled]);\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"flex items-center\">\n          <Controller\n            name={Capabilities.retrieval}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={field.value}\n                disabled={isDisabled}\n                onCheckedChange={field.onChange}\n                className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value?.toString()}\n              />\n            )}\n          />\n          <div className=\"flex items-center space-x-2\">\n            <label\n              className={cn(\n                'form-check-label text-token-text-primary w-full select-none',\n                isDisabled ? 'cursor-no-drop opacity-50' : 'cursor-pointer',\n              )}\n              htmlFor={Capabilities.retrieval}\n              onClick={() =>\n                retrievalModels.has(model) &&\n                setValue(Capabilities.retrieval, !getValues(Capabilities.retrieval), {\n                  shouldDirty: true,\n                })\n              }\n            >\n              {localize('com_assistants_file_search')}\n            </label>\n            <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-5 w-5 text-gray-500\" />\n            </HoverCardTrigger>\n          </div>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} disabled={isDisabled} className=\"ml-16 w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-gray-600 dark:text-gray-300\">\n                  {/* // TODO: Add description for file search */}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n          <OptionHover\n            side={ESide.Top}\n            disabled={!isDisabled}\n            description=\"com_assistants_non_retrieval_model\"\n            langCode={true}\n            sideOffset={20}\n            className=\"ml-16\"\n          />\n        </div>\n      </HoverCard>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Sequential/HideSequential.tsx",
    "content": "import { AgentCapabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport type { AgentForm } from '~/common';\nimport {\n  Checkbox,\n  HoverCard,\n  // HoverCardContent,\n  // HoverCardPortal,\n  // HoverCardTrigger,\n} from '~/components/ui';\n// import { CircleHelpIcon } from '~/components/svg';\n// import { useLocalize } from '~/hooks';\n// import { ESide } from '~/common';\n\nexport default function HideSequential() {\n  // const localize = useLocalize();\n  const methods = useFormContext<AgentForm>();\n  const { control, setValue, getValues } = methods;\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"my-2 flex items-center\">\n          <Controller\n            name={AgentCapabilities.hide_sequential_outputs}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={field.value}\n                onCheckedChange={field.onChange}\n                className=\"relative float-left  mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value?.toString()}\n              />\n            )}\n          />\n          <button\n            type=\"button\"\n            className=\"flex items-center space-x-2\"\n            onClick={() =>\n\n              setValue(\n                AgentCapabilities.hide_sequential_outputs,\n                !getValues(AgentCapabilities.hide_sequential_outputs),\n                {\n                  shouldDirty: true,\n                },\n              )\n            }\n          >\n            <label\n              className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n              htmlFor={AgentCapabilities.hide_sequential_outputs}\n            >\n              Hide Sequential Agent Outputs except the last agent&apos;s\n            </label>\n            {/* <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-5 w-5 text-gray-500\" />\n            </HoverCardTrigger> */}\n          </button>\n          {/* <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} className=\"w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-text-secondary\">\n                  {localize('com_agents_ttg_info')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal> */}\n        </div>\n      </HoverCard>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/Sequential/SequentialAgents.tsx",
    "content": "import { Plus, X } from 'lucide-react';\nimport React, { useRef, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { cn, defaultTextProps, removeFocusOutlines } from '~/utils';\nimport { TooltipAnchor } from '~/components/ui';\nimport HideSequential from './HideSequential';\n\ninterface SequentialAgentsProps {\n  field: {\n    value: string[];\n    onChange: (value: string[]) => void;\n  };\n}\n\nconst labelClass = 'mb-2 text-token-text-primary block font-medium';\nconst inputClass = cn(\n  defaultTextProps,\n  'flex w-full px-3 py-2 dark:border-gray-800 dark:bg-gray-800 rounded-xl mb-2',\n  removeFocusOutlines,\n);\n\nconst maxAgents = 5;\n\nconst SequentialAgents: React.FC<SequentialAgentsProps> = ({ field }) => {\n  const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n  const nodeRef = useRef(null);\n  const [newAgentId, setNewAgentId] = useState('');\n\n  const handleAddAgentId = () => {\n    if (newAgentId.trim() && field.value.length < maxAgents) {\n      const newValues = [...field.value, newAgentId];\n      field.onChange(newValues);\n      setNewAgentId('');\n    }\n  };\n\n  const handleDeleteAgentId = (index: number) => {\n    const newValues = field.value.filter((_, i) => i !== index);\n    field.onChange(newValues);\n  };\n\n  const defaultStyle = {\n    transition: 'opacity 200ms ease-in-out',\n    opacity: 0,\n  };\n\n  const triggerShake = (element: HTMLElement) => {\n    element.classList.remove('shake');\n    void element.offsetWidth;\n    element.classList.add('shake');\n    setTimeout(() => {\n      element.classList.remove('shake');\n    }, 200);\n  };\n\n  const transitionStyles = {\n    entering: { opacity: 1 },\n    entered: { opacity: 1 },\n    exiting: { opacity: 0 },\n    exited: { opacity: 0 },\n  };\n\n  const hasReachedMax = field.value.length >= Constants.MAX_CONVO_STARTERS;\n\n  return (\n    <div className=\"relative\">\n      <label className={labelClass} htmlFor=\"agent_ids\">\n        Sequential Agents\n      </label>\n      <div className=\"mt-4 space-y-2\">\n        <HideSequential />\n        {/* Display existing agents first */}\n        {field.value.map((agentId, index) => (\n          <div key={index} className=\"relative\">\n            <input\n              ref={(el) => (inputRefs.current[index] = el)}\n              value={agentId}\n              onChange={(e) => {\n                const newValue = [...field.value];\n                newValue[index] = e.target.value;\n                field.onChange(newValue);\n              }}\n              className={`${inputClass} pr-10`}\n              type=\"text\"\n              maxLength={64}\n            />\n            <TooltipAnchor\n              side=\"top\"\n              description={'Remove agent ID'}\n              className=\"absolute right-1 top-1 flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n              onClick={() => handleDeleteAgentId(index)}\n            >\n              <X className=\"size-4\" />\n            </TooltipAnchor>\n          </div>\n        ))}\n        {/* Input for new agent at the bottom */}\n        <div className=\"relative\">\n          <input\n            ref={(el) => (inputRefs.current[field.value.length] = el)}\n            value={newAgentId}\n            maxLength={64}\n            className={`${inputClass} pr-10`}\n            type=\"text\"\n            placeholder={hasReachedMax ? 'Max agents reached' : 'Enter agent ID (e.g. agent_1234)'}\n            onChange={(e) => setNewAgentId(e.target.value)}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter') {\n                e.preventDefault();\n                if (hasReachedMax) {\n                  triggerShake(e.currentTarget);\n                } else {\n                  handleAddAgentId();\n                }\n              }\n            }}\n          />\n          <Transition\n            nodeRef={nodeRef}\n            in={field.value.length < Constants.MAX_CONVO_STARTERS}\n            timeout={200}\n            unmountOnExit\n          >\n            {(state: string) => (\n              <div\n                ref={nodeRef}\n                style={{\n                  ...defaultStyle,\n                  ...transitionStyles[state as keyof typeof transitionStyles],\n                  transition: state === 'entering' ? 'none' : defaultStyle.transition,\n                }}\n                className=\"absolute right-1 top-1\"\n              >\n                <TooltipAnchor\n                  side=\"top\"\n                  description={hasReachedMax ? 'Max agents reached' : 'Add agent ID'}\n                  className=\"flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n                  onClick={handleAddAgentId}\n                  disabled={hasReachedMax}\n                >\n                  <Plus className=\"size-4\" />\n                </TooltipAnchor>\n              </div>\n            )}\n          </Transition>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SequentialAgents;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Agents/ShareAgent.tsx",
    "content": "import React, { useEffect, useMemo } from 'react';\nimport { Share2Icon } from 'lucide-react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { Permissions } from '~/data-provider/data-provider/src';\nimport type { TStartupConfig, AgentUpdateParams } from '~/data-provider/data-provider/src';\nimport {\n  Button,\n  Switch,\n  OGDialog,\n  OGDialogTitle,\n  OGDialogClose,\n  OGDialogContent,\n  OGDialogTrigger,\n} from '~/components/ui';\nimport { useUpdateAgentMutation, useGetStartupConfig } from '~/data-provider';\nimport { cn, removeFocusOutlines } from '~/utils';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\ntype FormValues = {\n  [Permissions.SHARED_GLOBAL]: boolean;\n  [Permissions.UPDATE]: boolean;\n};\n\nexport default function ShareAgent({\n  agent_id = '',\n  agentName,\n  projectIds = [],\n  isCollaborative = false,\n}: {\n  agent_id?: string;\n  agentName?: string;\n  projectIds?: string[];\n  isCollaborative?: boolean;\n}) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const { data: startupConfig = {} as TStartupConfig, isFetching } = useGetStartupConfig();\n  const { instanceProjectId } = startupConfig;\n  const agentIsGlobal = useMemo(\n    () => !!projectIds.includes(instanceProjectId),\n    [projectIds, instanceProjectId],\n  );\n\n  const {\n    watch,\n    control,\n    setValue,\n    getValues,\n    handleSubmit,\n    formState: { isSubmitting },\n  } = useForm<FormValues>({\n    mode: 'onChange',\n    defaultValues: {\n      [Permissions.SHARED_GLOBAL]: agentIsGlobal,\n      [Permissions.UPDATE]: isCollaborative,\n    },\n  });\n\n  const sharedGlobalValue = watch(Permissions.SHARED_GLOBAL);\n\n  useEffect(() => {\n    if (!sharedGlobalValue) {\n      setValue(Permissions.UPDATE, false);\n    }\n  }, [sharedGlobalValue, setValue]);\n\n  useEffect(() => {\n    setValue(Permissions.SHARED_GLOBAL, agentIsGlobal);\n    setValue(Permissions.UPDATE, isCollaborative);\n  }, [agentIsGlobal, isCollaborative, setValue]);\n\n  const updateAgent = useUpdateAgentMutation({\n    onSuccess: (data) => {\n      showToast({\n        message: `${localize('com_assistants_update_success')} ${\n          data.name ?? localize('com_ui_agent')\n        }`,\n        status: 'success',\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_agents_update_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  if (!agent_id || !instanceProjectId) {\n    return null;\n  }\n\n  const onSubmit = (data: FormValues) => {\n    if (!agent_id || !instanceProjectId) {\n      return;\n    }\n\n    const payload = {} as AgentUpdateParams;\n\n    if (data[Permissions.UPDATE] !== isCollaborative) {\n      payload.isCollaborative = data[Permissions.UPDATE];\n    }\n\n    if (data[Permissions.SHARED_GLOBAL] !== agentIsGlobal) {\n      if (data[Permissions.SHARED_GLOBAL]) {\n        payload.projectIds = [startupConfig.instanceProjectId];\n      } else {\n        payload.removeProjectIds = [startupConfig.instanceProjectId];\n        payload.isCollaborative = false;\n      }\n    }\n\n    if (Object.keys(payload).length > 0) {\n      updateAgent.mutate({\n        agent_id,\n        data: payload,\n      });\n    } else {\n      showToast({\n        message: localize('com_ui_no_changes'),\n        status: 'info',\n      });\n    }\n  };\n\n  return (\n    <OGDialog>\n      <OGDialogTrigger asChild>\n        <button\n          className={cn(\n            'btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium',\n            removeFocusOutlines,\n          )}\n          aria-label={localize(\n            'com_ui_share_var',\n            { 0: agentName != null && agentName !== '' ? `\"${agentName}\"` : localize('com_ui_agent') },\n          )}\n          type=\"button\"\n        >\n          <div className=\"flex items-center justify-center gap-2 text-blue-500\">\n            <Share2Icon className=\"icon-md h-4 w-4\" />\n          </div>\n        </button>\n      </OGDialogTrigger>\n      <OGDialogContent className=\"w-11/12 md:max-w-xl\">\n        <OGDialogTitle>\n          {localize(\n            'com_ui_share_var',\n            { 0: agentName != null && agentName !== '' ? `\"${agentName}\"` : localize('com_ui_agent') },\n          )}\n        </OGDialogTitle>\n        <form\n          className=\"p-2\"\n          onSubmit={(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            handleSubmit(onSubmit)(e);\n          }}\n        >\n          <div className=\"flex items-center justify-between gap-2 py-2\">\n            <div className=\"flex items-center\">\n              <button\n                type=\"button\"\n                className=\"mr-2 cursor-pointer\"\n                disabled={isFetching || updateAgent.isLoading || !instanceProjectId}\n                onClick={() =>\n                  setValue(Permissions.SHARED_GLOBAL, !getValues(Permissions.SHARED_GLOBAL), {\n                    shouldDirty: true,\n                  })\n                }\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter' || e.key === ' ') {\n                    e.preventDefault();\n                    setValue(Permissions.SHARED_GLOBAL, !getValues(Permissions.SHARED_GLOBAL), {\n                      shouldDirty: true,\n                    });\n                  }\n                }}\n                aria-checked={getValues(Permissions.SHARED_GLOBAL)}\n                role=\"checkbox\"\n              >\n                {localize('com_ui_share_to_all_users')}\n              </button>\n              <label htmlFor={Permissions.SHARED_GLOBAL} className=\"select-none\">\n                {agentIsGlobal && (\n                  <span className=\"ml-2 text-xs\">{localize('com_ui_agent_shared_to_all')}</span>\n                )}\n              </label>\n            </div>\n            <Controller\n              name={Permissions.SHARED_GLOBAL}\n              control={control}\n              disabled={isFetching || updateAgent.isLoading || !instanceProjectId}\n              render={({ field }) => (\n                <Switch\n                  {...field}\n                  checked={field.value}\n                  onCheckedChange={field.onChange}\n                  value={field.value.toString()}\n                />\n              )}\n            />\n          </div>\n          <div className=\"mb-4 flex items-center justify-between gap-2 py-2\">\n            <div className=\"flex items-center\">\n              <button\n                type=\"button\"\n                className=\"mr-2 cursor-pointer\"\n                disabled={\n                  isFetching || updateAgent.isLoading || !instanceProjectId || !sharedGlobalValue\n                }\n                onClick={() =>\n                  setValue(Permissions.UPDATE, !getValues(Permissions.UPDATE), {\n                    shouldDirty: true,\n                  })\n                }\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter' || e.key === ' ') {\n                    e.preventDefault();\n                    setValue(Permissions.UPDATE, !getValues(Permissions.UPDATE), {\n                      shouldDirty: true,\n                    });\n                  }\n                }}\n                aria-checked={getValues(Permissions.UPDATE)}\n                role=\"checkbox\"\n              >\n                {localize('com_agents_allow_editing')}\n              </button>\n              {/* <label htmlFor={Permissions.UPDATE} className=\"select-none\">\n                {agentIsGlobal && (\n                  <span className=\"ml-2 text-xs\">{localize('com_ui_agent_editing_allowed')}</span>\n                )}\n              </label> */}\n            </div>\n            <Controller\n              name={Permissions.UPDATE}\n              control={control}\n              disabled={\n                isFetching || updateAgent.isLoading || !instanceProjectId || !sharedGlobalValue\n              }\n              render={({ field }) => (\n                <Switch\n                  {...field}\n                  checked={field.value}\n                  onCheckedChange={field.onChange}\n                  value={field.value.toString()}\n                />\n              )}\n            />\n          </div>\n          <div className=\"flex justify-end\">\n            <OGDialogClose asChild>\n              <Button\n                variant=\"submit\"\n                size=\"sm\"\n                type=\"submit\"\n                disabled={isSubmitting || isFetching}\n              >\n                {localize('com_ui_save')}\n              </Button>\n            </OGDialogClose>\n          </div>\n        </form>\n      </OGDialogContent>\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/AssistantSwitcher.tsx",
    "content": "import { useEffect, useMemo } from 'react';\nimport { isAssistantsEndpoint, LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport type { AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { SwitcherProps, AssistantListItem } from '~/common';\nimport { useSetIndexOptions, useSelectAssistant, useLocalize, useAssistantListMap } from '~/hooks';\nimport { useChatContext, useAssistantsMapContext } from '~/Providers';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport Icon from '~/components/Endpoints/Icon';\n\nexport default function AssistantSwitcher({ isCollapsed }: SwitcherProps) {\n  const localize = useLocalize();\n  const { setOption } = useSetIndexOptions();\n  const { index, conversation } = useChatContext();\n\n  /* `selectedAssistant` must be defined with `null` to cause re-render on update */\n  const { assistant_id: selectedAssistant = null, endpoint } = conversation ?? {};\n\n  const assistantListMap = useAssistantListMap((res) =>\n    res.data.map(({ id, name, metadata }) => ({ id, name, metadata })),\n  );\n  const assistants: Omit<AssistantListItem, 'model'>[] = useMemo(\n    () => assistantListMap[endpoint ?? ''] ?? [],\n    [endpoint, assistantListMap],\n  );\n  const assistantMap = useAssistantsMapContext();\n  const { onSelect } = useSelectAssistant(endpoint as AssistantsEndpoint);\n\n  useEffect(() => {\n    if (!selectedAssistant && assistants && assistants.length && assistantMap) {\n      const assistant_id =\n        localStorage.getItem(`${LocalStorageKeys.ASST_ID_PREFIX}${index}${endpoint}`) ??\n        assistants[0]?.id ??\n        '';\n      const assistant = assistantMap[endpoint ?? ''][assistant_id];\n\n      if (!assistant) {\n        return;\n      }\n\n      if (!isAssistantsEndpoint(endpoint)) {\n        return;\n      }\n\n      setOption('model')(assistant.model);\n      setOption('assistant_id')(assistant_id);\n    }\n  }, [index, assistants, selectedAssistant, assistantMap, endpoint, setOption]);\n\n  const currentAssistant = assistantMap?.[endpoint ?? '']?.[selectedAssistant ?? ''];\n\n  const assistantOptions = useMemo(() => {\n    return assistants.map((assistant) => {\n      return {\n        label: (assistant.name as string | null) ?? '',\n        value: assistant.id,\n        icon: (\n          <Icon\n            isCreatedByUser={false}\n            endpoint={endpoint}\n            assistantName={(assistant.name as string | null) ?? ''}\n            iconURL={assistant.metadata?.avatar ?? ''}\n          />\n        ),\n      };\n    });\n  }, [assistants, endpoint]);\n\n  return (\n    <ControlCombobox\n      selectedValue={currentAssistant?.id ?? ''}\n      displayValue={\n        assistants.find((assistant) => assistant.id === selectedAssistant)?.name ??\n        localize('com_sidepanel_select_assistant')\n      }\n      selectPlaceholder={localize('com_sidepanel_select_assistant')}\n      searchPlaceholder={localize('com_assistants_search_name')}\n      isCollapsed={isCollapsed}\n      ariaLabel={'assistant'}\n      setValue={onSelect}\n      items={assistantOptions}\n      iconClassName=\"assistant-item\"\n      SelectIcon={\n        <Icon\n          isCreatedByUser={false}\n          endpoint={endpoint}\n          assistantName={currentAssistant?.name ?? ''}\n          iconURL={currentAssistant?.metadata?.avatar ?? ''}\n        />\n      }\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Bookmarks/BookmarkPanel.tsx",
    "content": "import { useConversationTagsQuery } from '~/data-provider';\nimport { BookmarkContext } from '~/Providers/BookmarkContext';\nimport BookmarkTable from './BookmarkTable';\n\nconst BookmarkPanel = () => {\n  const { data } = useConversationTagsQuery();\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden\">\n      <BookmarkContext.Provider value={{ bookmarks: data || [] }}>\n        <BookmarkTable />\n      </BookmarkContext.Provider>\n    </div>\n  );\n};\nexport default BookmarkPanel;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Bookmarks/BookmarkTable.tsx",
    "content": "import React, { useCallback, useEffect, useState } from 'react';\nimport { BookmarkPlusIcon } from 'lucide-react';\nimport type { ConversationTagsResponse, TConversationTag } from '~/data-provider/data-provider/src';\nimport {\n  Table,\n  Input,\n  Button,\n  TableRow,\n  TableHead,\n  TableBody,\n  TableCell,\n  TableHeader,\n  OGDialogTrigger,\n} from '~/components/ui';\nimport { BookmarkContext, useBookmarkContext } from '~/Providers/BookmarkContext';\nimport { BookmarkEditDialog } from '~/components/Bookmarks';\nimport BookmarkTableRow from './BookmarkTableRow';\nimport { useLocalize } from '~/hooks';\n\nconst removeDuplicates = (bookmarks: TConversationTag[]) => {\n  const seen = new Set();\n  return bookmarks.filter((bookmark) => {\n    const duplicate = seen.has(bookmark._id);\n    seen.add(bookmark._id);\n    return !duplicate;\n  });\n};\n\nconst BookmarkTable = () => {\n  const localize = useLocalize();\n  const [rows, setRows] = useState<ConversationTagsResponse>([]);\n  const [pageIndex, setPageIndex] = useState(0);\n  const [searchQuery, setSearchQuery] = useState('');\n  const [open, setOpen] = useState(false);\n  const pageSize = 10;\n\n  const { bookmarks = [] } = useBookmarkContext();\n\n  useEffect(() => {\n    const _bookmarks = removeDuplicates(bookmarks).sort((a, b) => a.position - b.position);\n    setRows(_bookmarks);\n  }, [bookmarks]);\n\n  const moveRow = useCallback((dragIndex: number, hoverIndex: number) => {\n    setRows((prevTags: TConversationTag[]) => {\n      const updatedRows = [...prevTags];\n      const [movedRow] = updatedRows.splice(dragIndex, 1);\n      updatedRows.splice(hoverIndex, 0, movedRow);\n      return updatedRows.map((row, index) => ({ ...row, position: index }));\n    });\n  }, []);\n\n  const renderRow = useCallback(\n    (row: TConversationTag) => (\n      <BookmarkTableRow key={row._id} moveRow={moveRow} row={row} position={row.position} />\n    ),\n    [moveRow],\n  );\n\n  const filteredRows = rows.filter(\n    (row) => row.tag && row.tag.toLowerCase().includes(searchQuery.toLowerCase()),\n  );\n\n  const currentRows = filteredRows.slice(pageIndex * pageSize, (pageIndex + 1) * pageSize);\n\n  return (\n    <BookmarkContext.Provider value={{ bookmarks }}>\n      <div role=\"region\" aria-label={localize('com_ui_bookmarks')} className=\"mt-2 space-y-2\">\n        <div className=\"flex items-center gap-4\">\n          <Input\n            placeholder={localize('com_ui_bookmarks_filter')}\n            value={searchQuery}\n            onChange={(e) => setSearchQuery(e.target.value)}\n            aria-label={localize('com_ui_bookmarks_filter')}\n          />\n        </div>\n\n        <div className=\"rounded-lg border border-border-light bg-transparent shadow-sm transition-colors\">\n          <Table className=\"w-full table-fixed\">\n            <TableHeader>\n              <TableRow className=\"border-b border-border-light\">\n                <TableHead className=\"w-[70%] bg-surface-secondary py-3 text-left text-sm font-medium text-text-secondary\">\n                  <div className=\"px-4\">{localize('com_ui_bookmarks_title')}</div>\n                </TableHead>\n                <TableHead className=\"w-[30%] bg-surface-secondary py-3 text-left text-sm font-medium text-text-secondary\">\n                  <div className=\"px-4\">{localize('com_ui_bookmarks_count')}</div>\n                </TableHead>\n                <TableHead className=\"w-[40%] bg-surface-secondary py-3 text-left text-sm font-medium text-text-secondary\">\n                  <div className=\"px-4\">{localize('com_assistants_actions')}</div>\n                </TableHead>\n              </TableRow>\n            </TableHeader>\n            <TableBody>\n              {currentRows.length ? (\n                currentRows.map(renderRow)\n              ) : (\n                <TableRow>\n                  <TableCell colSpan={3} className=\"h-24 text-center text-sm text-text-secondary\">\n                    {localize('com_ui_no_bookmarks')}\n                  </TableCell>\n                </TableRow>\n              )}\n            </TableBody>\n          </Table>\n        </div>\n\n        <div className=\"flex items-center justify-between\">\n          <div className=\"flex justify-between gap-2\">\n            <BookmarkEditDialog context=\"BookmarkPanel\" open={open} setOpen={setOpen}>\n              <OGDialogTrigger asChild>\n                <Button\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className=\"w-full gap-2 text-sm\"\n                  onClick={() => setOpen(!open)}\n                >\n                  <BookmarkPlusIcon className=\"size-4\" />\n                  <div className=\"break-all\">{localize('com_ui_bookmarks_new')}</div>\n                </Button>\n              </OGDialogTrigger>\n            </BookmarkEditDialog>\n          </div>\n          <div className=\"flex items-center gap-2\" role=\"navigation\" aria-label=\"Pagination\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => setPageIndex((prev) => Math.max(prev - 1, 0))}\n              disabled={pageIndex === 0}\n              aria-label={localize('com_ui_prev')}\n            >\n              {localize('com_ui_prev')}\n            </Button>\n            <div aria-live=\"polite\" className=\"text-sm\">\n              {`${pageIndex + 1} / ${Math.ceil(filteredRows.length / pageSize)}`}\n            </div>\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() =>\n                setPageIndex((prev) =>\n                  (prev + 1) * pageSize < filteredRows.length ? prev + 1 : prev,\n                )\n              }\n              disabled={(pageIndex + 1) * pageSize >= filteredRows.length}\n              aria-label={localize('com_ui_next')}\n            >\n              {localize('com_ui_next')}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </BookmarkContext.Provider>\n  );\n};\n\nexport default BookmarkTable;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Bookmarks/BookmarkTableRow.tsx",
    "content": "import React, { useRef } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport type { TConversationTag } from '~/data-provider/data-provider/src';\nimport { DeleteBookmarkButton, EditBookmarkButton } from '~/components/Bookmarks';\nimport { useConversationTagMutation } from '~/data-provider';\nimport { TableRow, TableCell } from '~/components/ui';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\n\ninterface BookmarkTableRowProps {\n  row: TConversationTag;\n  moveRow: (dragIndex: number, hoverIndex: number) => void;\n  position: number;\n}\n\ninterface DragItem {\n  index: number;\n  id: string;\n  type: string;\n}\n\nconst BookmarkTableRow: React.FC<BookmarkTableRowProps> = ({ row, moveRow, position }) => {\n  const ref = useRef<HTMLTableRowElement>(null);\n  const mutation = useConversationTagMutation({ context: 'BookmarkTableRow', tag: row.tag });\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const handleDrop = (item: DragItem) => {\n    mutation.mutate(\n      { ...row, position: item.index },\n      {\n        onError: () => {\n          showToast({\n            message: localize('com_ui_bookmarks_update_error'),\n            severity: NotificationSeverity.ERROR,\n          });\n        },\n      },\n    );\n  };\n\n  const [, drop] = useDrop({\n    accept: 'bookmark',\n    drop: handleDrop,\n    hover(item: DragItem) {\n      if (!ref.current || item.index === position) {return;}\n      moveRow(item.index, position);\n      item.index = position;\n    },\n  });\n\n  const [{ isDragging }, drag] = useDrag({\n    type: 'bookmark',\n    item: { index: position },\n    collect: (monitor) => ({\n      isDragging: monitor.isDragging(),\n    }),\n  });\n\n  drag(drop(ref));\n\n  return (\n    <TableRow\n      ref={ref}\n      className=\"cursor-move hover:bg-surface-secondary\"\n      style={{ opacity: isDragging ? 0.5 : 1 }}\n    >\n      <TableCell className=\"w-[70%] px-4 py-4\">\n        <div className=\"overflow-hidden text-ellipsis whitespace-nowrap\">{row.tag}</div>\n      </TableCell>\n      <TableCell className=\"w-[10%] px-12 py-4\">{row.count}</TableCell>\n      <TableCell className=\"w-[20%] px-4 py-4\">\n        <div className=\"flex gap-2\">\n          <EditBookmarkButton bookmark={row} tabIndex={0} />\n          <DeleteBookmarkButton bookmark={row.tag} tabIndex={0} />\n        </div>\n      </TableCell>\n    </TableRow>\n  );\n};\n\nexport default BookmarkTableRow;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/Action.tsx",
    "content": "import { useState } from 'react';\nimport type { Action } from '~/data-provider/data-provider/src';\nimport GearIcon from '~/components/svg/GearIcon';\nimport { cn } from '~/utils';\n\nexport default function Action({ action, onClick }: { action: Action; onClick: () => void }) {\n  const [isHovering, setIsHovering] = useState(false);\n\n  return (\n    <div\n      role=\"button\"\n      tabIndex={0}\n      onClick={onClick}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          onClick();\n        }\n      }}\n      className=\"group flex w-full rounded-lg border border-border-medium text-sm hover:cursor-pointer focus:outline-none focus:ring-2 focus:ring-text-primary\"\n      onMouseEnter={() => setIsHovering(true)}\n      onMouseLeave={() => setIsHovering(false)}\n      aria-label={`Action for ${action.metadata.domain}`}\n    >\n      <div\n        className=\"h-9 grow overflow-hidden text-ellipsis whitespace-nowrap px-3 py-2\"\n        style={{ wordBreak: 'break-all' }}\n      >\n        {action.metadata.domain}\n      </div>\n      <div\n        className={cn(\n          'h-9 w-9 min-w-9 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-tertiary focus:outline-none focus:ring-2 focus:ring-text-primary group-focus:flex',\n          isHovering ? 'flex' : 'hidden',\n        )}\n        aria-label=\"Settings\"\n      >\n        <GearIcon className=\"icon-sm\" aria-hidden=\"true\" />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionCallback.tsx",
    "content": "import { useState } from 'react';\nimport { Copy, CopyCheck } from 'lucide-react';\nimport { useFormContext } from 'react-hook-form';\nimport { AuthTypeEnum } from '~/data-provider/data-provider/src';\nimport { useLocalize, useCopyToClipboard } from '~/hooks';\nimport { useToastContext } from '~/Providers';\nimport { Button } from '~/components/ui';\nimport { cn } from '~/utils';\n\nexport default function ActionCallback({ action_id }: { action_id?: string }) {\n  const localize = useLocalize();\n  const { watch } = useFormContext();\n  const { showToast } = useToastContext();\n  const [isCopying, setIsCopying] = useState(false);\n  const callbackURL = `${window.location.protocol}//${window.location.host}/api/actions/${action_id}/oauth/callback`;\n  const copyLink = useCopyToClipboard({ text: callbackURL });\n\n  if (!action_id) {\n    return null;\n  }\n  const type = watch('type');\n  if (type !== AuthTypeEnum.OAuth) {\n    return null;\n  }\n  return (\n    <div className=\"mb-1.5 flex flex-col space-y-2\">\n      <label className=\"font-semibold\">{localize('com_ui_callback_url')}</label>\n      <div className=\"relative flex items-center\">\n        <div className=\"border-token-border-medium bg-token-surface-primary hover:border-token-border-hover flex h-10 w-full rounded-lg border\">\n          <div className=\"flex-1 overflow-hidden\">\n            <div className=\"relative w-full\">\n              <input\n                type=\"text\"\n                readOnly\n                value={callbackURL}\n                className=\"w-full border-0 bg-transparent px-3 py-2 pr-12 text-sm text-text-secondary-alt focus:outline-none\"\n                style={{ direction: 'rtl' }}\n              />\n            </div>\n          </div>\n          <div className=\"absolute right-0 flex h-full items-center pr-1\">\n            <Button\n              size=\"sm\"\n              variant=\"ghost\"\n              type=\"button\"\n              onClick={() => {\n                if (isCopying) {\n                  return;\n                }\n                showToast({ message: localize('com_ui_copied_to_clipboard') });\n                copyLink(setIsCopying);\n              }}\n              className={cn('h-8 rounded-md px-2', isCopying ? 'cursor-default' : '')}\n              aria-label={localize('com_ui_copy_link')}\n            >\n              {isCopying ? <CopyCheck className=\"size-4\" /> : <Copy className=\"size-4\" />}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsAuth.tsx",
    "content": "import { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport * as RadioGroup from '@radix-ui/react-radio-group';\nimport {\n  AuthTypeEnum,\n  AuthorizationTypeEnum,\n  TokenExchangeMethodEnum,\n} from '~/data-provider/data-provider/src';\nimport {\n  OGDialog,\n  OGDialogClose,\n  OGDialogTitle,\n  OGDialogHeader,\n  OGDialogContent,\n  OGDialogTrigger,\n} from '~/components/ui';\nimport { TranslationKeys, useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function ActionsAuth({ disableOAuth }: { disableOAuth?: boolean }) {\n  const localize = useLocalize();\n  const [openAuthDialog, setOpenAuthDialog] = useState(false);\n  const { watch, setValue, trigger } = useFormContext();\n  const type = watch('type');\n\n  return (\n    <OGDialog open={openAuthDialog} onOpenChange={setOpenAuthDialog}>\n      <OGDialogTrigger asChild>\n        <div className=\"relative mb-4\">\n          <div className=\"mb-1.5 flex items-center\">\n            <label className=\"text-token-text-primary block font-medium\">\n              {localize('com_ui_authentication')}\n            </label>\n          </div>\n          <div className=\"border-token-border-medium flex rounded-lg border text-sm hover:cursor-pointer\">\n            <div className=\"h-9 grow px-3 py-2\">\n              {localize(getAuthLocalizationKey(type))}\n            </div>\n            <div className=\"bg-token-border-medium w-px\"></div>\n            <button type=\"button\" color=\"neutral\" className=\"flex items-center gap-2 px-3\">\n              <svg\n                width=\"24\"\n                height=\"24\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                className=\"icon-sm\"\n              >\n                <path\n                  d=\"M11.6439 3C10.9352 3 10.2794 3.37508 9.92002 3.98596L9.49644 4.70605C8.96184 5.61487 7.98938 6.17632 6.93501 6.18489L6.09967 6.19168C5.39096 6.19744 4.73823 6.57783 4.38386 7.19161L4.02776 7.80841C3.67339 8.42219 3.67032 9.17767 4.01969 9.7943L4.43151 10.5212C4.95127 11.4386 4.95127 12.5615 4.43151 13.4788L4.01969 14.2057C3.67032 14.8224 3.67339 15.5778 4.02776 16.1916L4.38386 16.8084C4.73823 17.4222 5.39096 17.8026 6.09966 17.8083L6.93502 17.8151C7.98939 17.8237 8.96185 18.3851 9.49645 19.294L9.92002 20.014C10.2794 20.6249 10.9352 21 11.6439 21H12.3561C13.0648 21 13.7206 20.6249 14.08 20.014L14.5035 19.294C15.0381 18.3851 16.0106 17.8237 17.065 17.8151L17.9004 17.8083C18.6091 17.8026 19.2618 17.4222 19.6162 16.8084L19.9723 16.1916C20.3267 15.5778 20.3298 14.8224 19.9804 14.2057L19.5686 13.4788C19.0488 12.5615 19.0488 11.4386 19.5686 10.5212L19.9804 9.7943C20.3298 9.17767 20.3267 8.42219 19.9723 7.80841L19.6162 7.19161C19.2618 6.57783 18.6091 6.19744 17.9004 6.19168L17.065 6.18489C16.0106 6.17632 15.0382 5.61487 14.5036 4.70605L14.08 3.98596C13.7206 3.37508 13.0648 3 12.3561 3H11.6439Z\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"2\"\n                  strokeLinejoin=\"round\"\n                />\n                <circle cx=\"12\" cy=\"12\" r=\"2.5\" stroke=\"currentColor\" strokeWidth=\"2\" />\n              </svg>\n            </button>\n          </div>\n        </div>\n      </OGDialogTrigger>\n      <OGDialogContent className=\"w-full max-w-md border-none bg-surface-primary text-text-primary\">\n        <OGDialogHeader className=\"border-b border-border-light sm:p-3\">\n          <OGDialogTitle>{localize('com_ui_authentication')}</OGDialogTitle>\n        </OGDialogHeader>\n        <div className=\"p-4 sm:p-6 sm:pt-0\">\n          <div className=\"mb-4\">\n            <label className=\"mb-1 block text-sm font-medium\">\n              {localize('com_ui_authentication_type')}\n            </label>\n            <RadioGroup.Root\n              defaultValue={AuthTypeEnum.None}\n              onValueChange={(value) => setValue('type', value)}\n              value={type}\n              role=\"radiogroup\"\n              aria-required=\"false\"\n              dir=\"ltr\"\n              className=\"flex gap-4\"\n              style={{ outline: 'none' }}\n            >\n              <div className=\"flex items-center gap-2\">\n                <label htmlFor=\":rf8:\" className=\"flex cursor-pointer items-center gap-1\">\n                  <RadioGroup.Item\n                    type=\"button\"\n                    role=\"radio\"\n                    value={AuthTypeEnum.None}\n                    id=\":rf8:\"\n                    className={cn(\n                      'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                      'border-border-heavy bg-surface-primary',\n                    )}\n                  >\n                    <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n                  </RadioGroup.Item>\n                  {localize('com_ui_none')}\n                </label>\n              </div>\n              <div className=\"flex items-center gap-2\">\n                <label htmlFor=\":rfa:\" className=\"flex cursor-pointer items-center gap-1\">\n                  <RadioGroup.Item\n                    type=\"button\"\n                    role=\"radio\"\n                    value={AuthTypeEnum.ServiceHttp}\n                    id=\":rfa:\"\n                    className={cn(\n                      'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                      'border-border-heavy bg-surface-primary',\n                    )}\n                  >\n                    <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n                  </RadioGroup.Item>\n                  {localize('com_ui_api_key')}\n                </label>\n              </div>\n              <div className=\"flex items-center gap-2\">\n                <label\n                  htmlFor=\":rfc:\"\n                  className={cn(\n                    'flex items-center gap-1',\n                    disableOAuth === true ? 'cursor-not-allowed' : 'cursor-pointer',\n                  )}\n                >\n                  <RadioGroup.Item\n                    type=\"button\"\n                    role=\"radio\"\n                    disabled={disableOAuth}\n                    value={AuthTypeEnum.OAuth}\n                    id=\":rfc:\"\n                    className={cn(\n                      'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                      'border-border-heavy bg-surface-primary',\n                      disableOAuth === true ? 'cursor-not-allowed' : '',\n                    )}\n                  >\n                    <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n                  </RadioGroup.Item>\n                  {localize('com_ui_oauth')}\n                </label>\n              </div>\n            </RadioGroup.Root>\n          </div>\n          {type === 'none' ? null : type === 'service_http' ? <ApiKey /> : <OAuth />}\n          {/* Cancel/Save */}\n          <div className=\"mt-5 flex flex-col gap-3 sm:mt-4 sm:flex-row-reverse\">\n            <button\n              className=\"btn relative bg-surface-submit text-primary-foreground hover:bg-surface-submit-hover\"\n              onClick={async () => {\n                const result = await trigger(undefined, { shouldFocus: true });\n                setValue('saved_auth_fields', result);\n                setOpenAuthDialog(!result);\n              }}\n            >\n              <div className=\"flex w-full items-center justify-center gap-2 text-white\">\n                {localize('com_ui_save')}\n              </div>\n            </button>\n            <OGDialogClose className=\"btn btn-neutral relative\">\n              <div className=\"flex w-full items-center justify-center gap-2\">\n                {localize('com_ui_cancel')}\n              </div>\n            </OGDialogClose>\n          </div>\n        </div>\n      </OGDialogContent>\n    </OGDialog>\n  );\n}\n\nconst ApiKey = () => {\n  const localize = useLocalize();\n  const { register, watch, setValue } = useFormContext();\n  const authorization_type = watch('authorization_type');\n  const type = watch('type');\n  return (\n    <>\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_api_key')}</label>\n      <input\n        placeholder=\"<HIDDEN>\"\n        type=\"new-password\"\n        autoComplete=\"new-password\"\n        className={cn(\n          'mb-2 h-9 w-full resize-none overflow-y-auto rounded-lg border px-3 py-2 text-sm',\n          'border-border-medium bg-surface-primary outline-none',\n          'focus:ring-2 focus:ring-ring',\n        )}\n        {...register('api_key', { required: type === AuthTypeEnum.ServiceHttp })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_auth_type')}</label>\n      <RadioGroup.Root\n        defaultValue={AuthorizationTypeEnum.Basic}\n        onValueChange={(value) => setValue('authorization_type', value)}\n        value={authorization_type}\n        role=\"radiogroup\"\n        aria-required=\"true\"\n        dir=\"ltr\"\n        className=\"mb-2 flex gap-6 overflow-hidden rounded-lg\"\n        style={{ outline: 'none' }}\n      >\n        <div className=\"flex items-center gap-2\">\n          <label htmlFor=\":rfu:\" className=\"flex cursor-pointer items-center gap-1\">\n            <RadioGroup.Item\n              type=\"button\"\n              role=\"radio\"\n              value={AuthorizationTypeEnum.Basic}\n              id=\":rfu:\"\n              className={cn(\n                'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                'border-border-heavy bg-surface-primary',\n              )}\n            >\n              <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n            </RadioGroup.Item>\n            {localize('com_ui_basic')}\n          </label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <label htmlFor=\":rg0:\" className=\"flex cursor-pointer items-center gap-1\">\n            <RadioGroup.Item\n              type=\"button\"\n              role=\"radio\"\n              value={AuthorizationTypeEnum.Bearer}\n              id=\":rg0:\"\n              className={cn(\n                'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                'border-border-heavy bg-surface-primary',\n              )}\n            >\n              <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n            </RadioGroup.Item>\n            {localize('com_ui_bearer')}\n          </label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <label htmlFor=\":rg2:\" className=\"flex cursor-pointer items-center gap-1\">\n            <RadioGroup.Item\n              type=\"button\"\n              role=\"radio\"\n              value={AuthorizationTypeEnum.Custom}\n              id=\":rg2:\"\n              className={cn(\n                'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                'border-border-heavy bg-surface-primary',\n              )}\n            >\n              <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n            </RadioGroup.Item>\n            {localize('com_ui_custom')}\n          </label>\n        </div>\n      </RadioGroup.Root>\n      {authorization_type === AuthorizationTypeEnum.Custom && (\n        <div className=\"mt-2\">\n          <label className=\"mb-1 block text-sm font-medium\">\n            {localize('com_ui_custom_header_name')}\n          </label>\n          <input\n            className={cn(\n              'mb-2 h-9 w-full resize-none overflow-y-auto rounded-lg border px-3 py-2 text-sm',\n              'border-border-medium bg-surface-primary outline-none',\n              'focus:ring-2 focus:ring-ring',\n            )}\n            placeholder=\"X-Api-Key\"\n            {...register('custom_auth_header', {\n              required: authorization_type === AuthorizationTypeEnum.Custom,\n            })}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\n/** Returns the appropriate localization key for authentication type */\nfunction getAuthLocalizationKey(type: AuthTypeEnum): TranslationKeys {\n  switch (type) {\n    case AuthTypeEnum.ServiceHttp:\n      return 'com_ui_api_key';\n    case AuthTypeEnum.OAuth:\n      return 'com_ui_oauth';\n    default:\n      return 'com_ui_none';\n  }\n}\n\nconst OAuth = () => {\n  const localize = useLocalize();\n  const { register, watch, setValue } = useFormContext();\n  const token_exchange_method = watch('token_exchange_method');\n  const type = watch('type');\n\n  const inputClasses = cn(\n    'mb-2 h-9 w-full resize-none overflow-y-auto rounded-lg border px-3 py-2 text-sm',\n    'border-border-medium bg-surface-primary outline-none',\n    'focus:ring-2 focus:ring-ring',\n  );\n\n  return (\n    <>\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_client_id')}</label>\n      <input\n        placeholder=\"<HIDDEN>\"\n        type=\"password\"\n        autoComplete=\"new-password\"\n        className={inputClasses}\n        {...register('oauth_client_id', { required: false })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_client_secret')}</label>\n      <input\n        placeholder=\"<HIDDEN>\"\n        type=\"password\"\n        autoComplete=\"new-password\"\n        className={inputClasses}\n        {...register('oauth_client_secret', { required: false })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_auth_url')}</label>\n      <input\n        className={inputClasses}\n        {...register('authorization_url', { required: type === AuthTypeEnum.OAuth })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_token_url')}</label>\n      <input\n        className={inputClasses}\n        {...register('client_url', { required: type === AuthTypeEnum.OAuth })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">{localize('com_ui_scope')}</label>\n      <input\n        className={inputClasses}\n        {...register('scope', { required: type === AuthTypeEnum.OAuth })}\n      />\n      <label className=\"mb-1 block text-sm font-medium\">\n        {localize('com_ui_token_exchange_method')}\n      </label>\n      <RadioGroup.Root\n        defaultValue={AuthorizationTypeEnum.Basic}\n        onValueChange={(value) => setValue('token_exchange_method', value)}\n        value={token_exchange_method}\n        role=\"radiogroup\"\n        aria-required=\"true\"\n        dir=\"ltr\"\n        style={{ outline: 'none' }}\n      >\n        <div className=\"flex items-center gap-2\">\n          <label htmlFor=\":rj1:\" className=\"flex cursor-pointer items-center gap-1\">\n            <RadioGroup.Item\n              type=\"button\"\n              role=\"radio\"\n              value={TokenExchangeMethodEnum.DefaultPost}\n              id=\":rj1:\"\n              className={cn(\n                'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                'border-border-heavy bg-surface-primary',\n              )}\n            >\n              <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n            </RadioGroup.Item>\n            {localize('com_ui_default_post_request')}\n          </label>\n        </div>\n        <div className=\"flex items-center gap-2\">\n          <label htmlFor=\":rj3:\" className=\"flex cursor-pointer items-center gap-1\">\n            <RadioGroup.Item\n              type=\"button\"\n              role=\"radio\"\n              value={TokenExchangeMethodEnum.BasicAuthHeader}\n              id=\":rj3:\"\n              className={cn(\n                'mr-1 flex h-5 w-5 items-center justify-center rounded-full border',\n                'border-border-heavy bg-surface-primary',\n              )}\n            >\n              <RadioGroup.Indicator className=\"h-2 w-2 rounded-full bg-text-primary\" />\n            </RadioGroup.Item>\n            {localize('com_ui_basic_auth_header')}\n          </label>\n        </div>\n      </RadioGroup.Root>\n    </>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsInput.tsx",
    "content": "import debounce from 'lodash/debounce';\nimport { useState, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n  validateAndParseOpenAPISpec,\n  openapiToFunction,\n  AuthTypeEnum,\n} from '~/data-provider/data-provider/src';\nimport type {\n  Action,\n  FunctionTool,\n  ActionMetadata,\n  ValidationResult,\n  AssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type { ActionAuthForm, ActionWithNullableMetadata } from '~/common';\nimport type { Spec } from './ActionsTable';\nimport ActionCallback from '~/components/SidePanel/Builder/ActionCallback';\nimport { useAssistantsMapContext, useToastContext } from '~/Providers';\nimport { ActionsTable, columns } from './ActionsTable';\nimport { useUpdateAction } from '~/data-provider';\nimport useLocalize from '~/hooks/useLocalize';\nimport { Spinner } from '~/components/svg';\n\nconst debouncedValidation = debounce(\n  (input: string, callback: (result: ValidationResult) => void) => {\n    const result = validateAndParseOpenAPISpec(input);\n    callback(result);\n  },\n  800,\n);\n\nexport default function ActionsInput({\n  action,\n  assistant_id,\n  endpoint,\n  version,\n  setAction,\n}: {\n  action?: ActionWithNullableMetadata;\n  assistant_id?: string;\n  endpoint: AssistantsEndpoint;\n  version: number | string;\n  setAction: React.Dispatch<React.SetStateAction<Action | undefined>>;\n}) {\n  const handleResult = (result: ValidationResult) => {\n    if (!result.status) {\n      setData(null);\n      setFunctions(null);\n    }\n    setValidationResult(result);\n  };\n\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const assistantMap = useAssistantsMapContext();\n  const { handleSubmit, reset } = useFormContext<ActionAuthForm>();\n  const [validationResult, setValidationResult] = useState<null | ValidationResult>(null);\n  const [inputValue, setInputValue] = useState('');\n\n  const [data, setData] = useState<Spec[] | null>(null);\n  const [functions, setFunctions] = useState<FunctionTool[] | null>(null);\n\n  useEffect(() => {\n    const rawSpec = action?.metadata?.raw_spec ?? '';\n    if (!rawSpec) {\n      return;\n    }\n    setInputValue(rawSpec);\n    debouncedValidation(rawSpec, handleResult);\n  }, [action?.metadata?.raw_spec]);\n\n  useEffect(() => {\n    if (!validationResult || !validationResult.status || !validationResult.spec) {\n      return;\n    }\n\n    const { functionSignatures, requestBuilders } = openapiToFunction(validationResult.spec);\n    const specs = Object.entries(requestBuilders).map(([name, props]) => {\n      return {\n        name,\n        method: props.method,\n        path: props.path,\n        domain: props.domain,\n      };\n    });\n\n    setData(specs);\n    setValidationResult(null);\n    setFunctions(functionSignatures.map((f) => f.toObjectTool()));\n  }, [validationResult]);\n\n  const updateAction = useUpdateAction({\n    onSuccess(data) {\n      showToast({\n        message: localize('com_assistants_update_actions_success'),\n        status: 'success',\n      });\n      reset();\n      setAction(data[2]);\n    },\n    onError(error) {\n      showToast({\n        message:\n          (error as Error | undefined)?.message ?? localize('com_assistants_update_actions_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const saveAction = handleSubmit((authFormData) => {\n    console.log('authFormData', authFormData);\n    const currentAssistantId = assistant_id ?? '';\n    if (!currentAssistantId) {\n      // alert user?\n      return;\n    }\n\n    if (!functions) {\n      return;\n    }\n\n    if (!data) {\n      return;\n    }\n\n    let { metadata } = action ?? {};\n    if (!metadata) {\n      metadata = {};\n    }\n    const action_id = action?.action_id;\n    metadata.raw_spec = inputValue;\n    const parsedUrl = new URL(data[0].domain);\n    const domain = parsedUrl.hostname;\n    if (!domain) {\n      // alert user?\n      return;\n    }\n    metadata.domain = domain;\n\n    const { type, saved_auth_fields } = authFormData;\n\n    const removeSensitiveFields = (obj: ActionMetadata) => {\n      delete obj.auth;\n      delete obj.api_key;\n      delete obj.oauth_client_id;\n      delete obj.oauth_client_secret;\n    };\n\n    if (saved_auth_fields && type === AuthTypeEnum.ServiceHttp) {\n      metadata = {\n        ...metadata,\n        api_key: authFormData.api_key,\n        auth: {\n          type,\n          authorization_type: authFormData.authorization_type,\n          custom_auth_header: authFormData.custom_auth_header,\n        },\n      };\n    } else if (saved_auth_fields && type === AuthTypeEnum.OAuth) {\n      metadata = {\n        ...metadata,\n        auth: {\n          type,\n          authorization_url: authFormData.authorization_url,\n          client_url: authFormData.client_url,\n          scope: authFormData.scope,\n          token_exchange_method: authFormData.token_exchange_method,\n        },\n        oauth_client_id: authFormData.oauth_client_id,\n        oauth_client_secret: authFormData.oauth_client_secret,\n      };\n    } else if (saved_auth_fields) {\n      removeSensitiveFields(metadata);\n      metadata.auth = {\n        type,\n      };\n    } else {\n      removeSensitiveFields(metadata);\n    }\n\n    updateAction.mutate({\n      action_id,\n      metadata,\n      functions,\n      assistant_id: currentAssistantId,\n      endpoint,\n      version,\n      model: assistantMap?.[endpoint][currentAssistantId].model ?? '',\n    });\n  });\n\n  const handleInputChange: React.ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n    const newValue = event.target.value;\n    setInputValue(newValue);\n    if (!newValue) {\n      setData(null);\n      setFunctions(null);\n      return setValidationResult(null);\n    }\n    debouncedValidation(newValue, handleResult);\n  };\n\n  const submitContext = () => {\n    if (updateAction.isLoading) {\n      return <Spinner className=\"icon-md\" />;\n    } else if (action?.action_id.length ?? 0) {\n      return localize('com_ui_update');\n    } else {\n      return localize('com_ui_create');\n    }\n  };\n\n  return (\n    <>\n      <div className=\"\">\n        <div className=\"mb-1 flex flex-wrap items-center justify-between gap-4\">\n          <label\n            htmlFor=\"example-schema\"\n            className=\"text-token-text-primary whitespace-nowrap font-medium\"\n          >\n            {localize('com_ui_schema')}\n          </label>\n          <div className=\"flex items-center gap-2\">\n            {/* <button className=\"btn btn-neutral border-token-border-light relative h-8 min-w-[100px] rounded-lg font-medium\">\n              <div className=\"flex w-full items-center justify-center text-xs\">Import from URL</div>\n            </button> */}\n            <select\n              id=\"example-schema\"\n              onChange={(e) => console.log(e.target.value)}\n              className=\"border-token-border-medium h-8 min-w-[100px] rounded-lg border bg-transparent px-2 py-0 text-sm\"\n            >\n              <option value=\"label\">{localize('com_ui_examples')}</option>\n              {/* TODO: make these appear and function correctly */}\n              <option value=\"0\">Weather (JSON)</option>\n              <option value=\"1\">Pet Store (YAML)</option>\n              <option value=\"2\">Blank Template</option>\n            </select>\n          </div>\n        </div>\n        <div className=\"border-token-border-medium bg-token-surface-primary hover:border-token-border-hover mb-4 w-full overflow-hidden rounded-lg border ring-0\">\n          <div className=\"relative\">\n            <textarea\n              id=\"schemaInput\"\n              value={inputValue}\n              onChange={handleInputChange}\n              spellCheck=\"false\"\n              placeholder={localize('com_ui_enter_openapi_schema')}\n              className=\"text-token-text-primary block h-96 w-full bg-transparent p-2 font-mono text-xs outline-none focus:ring-1 focus:ring-border-light\"\n            />\n            {/* TODO: format input button */}\n          </div>\n          {validationResult && validationResult.message !== 'OpenAPI spec is valid.' && (\n            <div className=\"border-token-border-light border-t p-2 text-red-500\">\n              {validationResult.message.split('\\n').map((line: string, i: number) => (\n                <div key={i}>{line}</div>\n              ))}\n            </div>\n          )}\n        </div>\n      </div>\n      {!!data && (\n        <div className=\"my-2\">\n          <div className=\"flex items-center\">\n            <label className=\"text-token-text-primary block font-medium\">\n              {localize('com_assistants_available_actions')}\n            </label>\n          </div>\n          <ActionsTable columns={columns} data={data} />\n        </div>\n      )}\n      <div className=\"relative my-1\">\n        <ActionCallback action_id={action?.action_id} />\n        <div className=\"mb-1.5 flex items-center\">\n          <label className=\"text-token-text-primary block font-medium\">\n            {localize('com_ui_privacy_policy_url')}\n          </label>\n        </div>\n        <div className=\"border-token-border-medium bg-token-surface-primary hover:border-token-border-hover flex h-9 w-full rounded-lg border\">\n          <input\n            type=\"text\"\n            placeholder=\"https://api.example-weather-app.com/privacy\"\n            className=\"flex-1 rounded-lg bg-transparent px-3 py-1.5 text-sm outline-none placeholder:text-text-secondary-alt focus:ring-1 focus:ring-border-light\"\n          />\n        </div>\n      </div>\n      <div className=\"flex items-center justify-end\">\n        <button\n          disabled={!functions || !functions.length}\n          onClick={saveAction}\n          className=\"focus:shadow-outline mt-1 flex min-w-[100px] items-center justify-center rounded bg-green-500 px-4 py-2 font-semibold text-white hover:bg-green-400 focus:border-green-500 focus:outline-none focus:ring-0 disabled:bg-green-400\"\n          type=\"button\"\n        >\n          {submitContext()}\n        </button>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsPanel.tsx",
    "content": "import { useEffect } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport {\n  AuthTypeEnum,\n  AuthorizationTypeEnum,\n  TokenExchangeMethodEnum,\n} from '~/data-provider/data-provider/src';\nimport { ChevronLeft } from 'lucide-react';\nimport type { AssistantPanelProps, ActionAuthForm } from '~/common';\nimport { useAssistantsMapContext, useToastContext } from '~/Providers';\nimport { OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useDeleteAction } from '~/data-provider';\nimport { TrashIcon } from '~/components/svg';\nimport useLocalize from '~/hooks/useLocalize';\nimport ActionsInput from './ActionsInput';\nimport ActionsAuth from './ActionsAuth';\nimport { Panel } from '~/common';\n\nexport default function ActionsPanel({\n  // activePanel,\n  action,\n  endpoint,\n  version,\n  setAction,\n  assistant_id,\n  setActivePanel,\n}: AssistantPanelProps) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const assistantMap = useAssistantsMapContext();\n  const deleteAction = useDeleteAction({\n    onSuccess: () => {\n      showToast({\n        message: localize('com_assistants_delete_actions_success'),\n        status: 'success',\n      });\n      setActivePanel(Panel.builder);\n      setAction(undefined);\n    },\n    onError(error) {\n      showToast({\n        message:\n          (error as Error | undefined)?.message ?? localize('com_assistants_delete_actions_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  const methods = useForm<ActionAuthForm>({\n    defaultValues: {\n      /* General */\n      type: AuthTypeEnum.None,\n      saved_auth_fields: false,\n      /* API key */\n      api_key: '',\n      authorization_type: AuthorizationTypeEnum.Basic,\n      custom_auth_header: '',\n      /* OAuth */\n      oauth_client_id: '',\n      oauth_client_secret: '',\n      authorization_url: '',\n      client_url: '',\n      scope: '',\n      token_exchange_method: TokenExchangeMethodEnum.DefaultPost,\n    },\n  });\n\n  const { reset, watch } = methods;\n\n  useEffect(() => {\n    if (action?.metadata?.auth) {\n      reset({\n        type: action.metadata.auth.type || AuthTypeEnum.None,\n        saved_auth_fields: false,\n        api_key: action.metadata.api_key ?? '',\n        authorization_type: action.metadata.auth.authorization_type || AuthorizationTypeEnum.Basic,\n        oauth_client_id: action.metadata.oauth_client_id ?? '',\n        oauth_client_secret: action.metadata.oauth_client_secret ?? '',\n        authorization_url: action.metadata.auth.authorization_url ?? '',\n        client_url: action.metadata.auth.client_url ?? '',\n        scope: action.metadata.auth.scope ?? '',\n        token_exchange_method:\n          action.metadata.auth.token_exchange_method ?? TokenExchangeMethodEnum.DefaultPost,\n      });\n    }\n  }, [action, reset]);\n\n  return (\n    <FormProvider {...methods}>\n      <form className=\"h-full grow overflow-hidden\">\n        <div className=\"h-full overflow-auto px-2 pb-12 text-sm\">\n          <div className=\"relative flex flex-col items-center px-16 py-6 text-center\">\n            <div className=\"absolute left-0 top-6\">\n              <button\n                type=\"button\"\n                className=\"btn btn-neutral relative\"\n                onClick={() => {\n                  setActivePanel(Panel.builder);\n                  setAction(undefined);\n                }}\n              >\n                <div className=\"flex w-full items-center justify-center gap-2\">\n                  <ChevronLeft />\n                </div>\n              </button>\n            </div>\n\n            {!!action && (\n              <OGDialog>\n                <OGDialogTrigger asChild>\n                  <div className=\"absolute right-0 top-6\">\n                    <button\n                      type=\"button\"\n                      disabled={!(assistant_id ?? '') || !action.action_id}\n                      className=\"btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium\"\n                    >\n                      <TrashIcon className=\"text-red-500\" />\n                    </button>\n                  </div>\n                </OGDialogTrigger>\n                <OGDialogTemplate\n                  showCloseButton={false}\n                  title={localize('com_ui_delete_action')}\n                  className=\"max-w-[450px]\"\n                  main={\n                    <Label className=\"text-left text-sm font-medium\">\n                      {localize('com_ui_delete_action_confirm')}\n                    </Label>\n                  }\n                  selection={{\n                    selectHandler: () => {\n                      const currentId = assistant_id ?? '';\n                      if (!currentId) {\n                        return showToast({\n                          message: 'No assistant_id found, is the assistant created?',\n                          status: 'error',\n                        });\n                      }\n                      deleteAction.mutate({\n                        model: assistantMap?.[endpoint][currentId].model ?? '',\n                        action_id: action.action_id,\n                        assistant_id: currentId,\n                        endpoint,\n                      });\n                    },\n                    selectClasses:\n                      'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 transition-color duration-200 text-white',\n                    selectText: localize('com_ui_delete'),\n                  }}\n                />\n              </OGDialog>\n            )}\n\n            <div className=\"text-xl font-medium\">{(action ? 'Edit' : 'Add') + ' ' + 'actions'}</div>\n            <div className=\"text-xs text-text-secondary\">\n              {localize('com_assistants_actions_info')}\n            </div>\n            {/* <div className=\"text-sm text-text-secondary\">\n            <a href=\"https://help.openai.com/en/articles/8554397-creating-a-gpt\" target=\"_blank\" rel=\"noreferrer\" className=\"font-medium\">Learn more.</a>\n          </div> */}\n          </div>\n          <ActionsAuth disableOAuth={true} />\n          <ActionsInput\n            action={action}\n            assistant_id={assistant_id}\n            setAction={setAction}\n            endpoint={endpoint}\n            version={version}\n          />\n        </div>\n      </form>\n    </FormProvider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsTable/Columns.tsx",
    "content": "import type { ColumnDef } from '@tanstack/react-table';\n\nexport type Spec = {\n  name: string;\n  method: string;\n  path: string;\n  domain: string;\n};\n\nexport const fakeData: Spec[] = [\n  {\n    name: 'listPets',\n    method: 'get',\n    path: '/pets',\n    domain: 'petstore.swagger.io',\n  },\n  {\n    name: 'createPets',\n    method: 'post',\n    path: '/pets',\n    domain: 'petstore.swagger.io',\n  },\n  {\n    name: 'showPetById',\n    method: 'get',\n    path: '/pets/{petId}',\n    domain: 'petstore.swagger.io',\n  },\n];\n\nexport const columns: ColumnDef<Spec>[] = [\n  {\n    header: 'Name',\n    accessorKey: 'name',\n  },\n  {\n    header: 'Method',\n    accessorKey: 'method',\n  },\n  {\n    header: 'Path',\n    accessorKey: 'path',\n  },\n  // {\n  //   header: '',\n  //   accessorKey: 'action',\n  //   // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  //   cell: ({ row: _row }) => (\n  //     <button className=\"btn relative btn-neutral h-8 rounded-lg border-token-border-light font-medium\">\n  //       <div className=\"flex w-full gap-2 items-center justify-center\">Test</div>\n  //     </button>\n  //   ),\n  // },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsTable/Table.tsx",
    "content": "import { useReactTable, flexRender, getCoreRowModel } from '@tanstack/react-table';\nimport type { ColumnDef } from '@tanstack/react-table';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nexport default function DataTable<TData, TValue>({ columns, data }: DataTableProps<TData, TValue>) {\n  const table = useReactTable({\n    columns,\n    data,\n    getCoreRowModel: getCoreRowModel(),\n  });\n\n  return (\n    <table className=\"w-full text-sm\">\n      <thead>\n        {table.getHeaderGroups().map((headerGroup, i) => (\n          <tr\n            key={i}\n            className=\"border-token-border-light text-token-text-tertiary border-b text-left text-xs\"\n          >\n            {headerGroup.headers.map((header, j) => (\n              <th key={j} className=\"py-1 font-normal\">\n                {header.isPlaceholder\n                  ? null\n                  : flexRender(header.column.columnDef.header, header.getContext())}\n              </th>\n            ))}\n          </tr>\n        ))}\n      </thead>\n      <tbody>\n        {table.getRowModel().rows.map((row, i) => (\n          <tr key={i} className=\"border-token-border-light border-b\">\n            {row.getVisibleCells().map((cell, j) => (\n              <td key={j} className=\"py-2\">\n                {flexRender(cell.column.columnDef.cell, cell.getContext())}\n              </td>\n            ))}\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ActionsTable/index.ts",
    "content": "export { default as ActionsTable } from './Table';\nexport * from './Columns';\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AppendDateCheckbox.tsx",
    "content": "import { Control, Controller, UseFormSetValue, UseFormGetValues } from 'react-hook-form';\nimport { CircleHelpIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport {\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n  Checkbox,\n} from '~/components/ui';\nimport { ESide } from '~/common';\nimport type { AssistantForm } from '~/common';\n\ninterface AppendDateCheckboxProps {\n  control: Control<AssistantForm>;\n  setValue: UseFormSetValue<AssistantForm>;\n  getValues: UseFormGetValues<AssistantForm>;\n}\n\nexport default function AppendDateCheckbox({ control, setValue }: AppendDateCheckboxProps) {\n  const localize = useLocalize();\n\n  const handleChange = (checked: boolean) => {\n    setValue('append_current_datetime', checked, {\n      shouldDirty: true,\n    });\n  };\n\n  return (\n    <div className=\"mb-6\">\n      <HoverCard openDelay={50}>\n        <div className=\"flex items-center\">\n          <Controller\n            name=\"append_current_datetime\"\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                id=\"append_current_datetime\"\n                checked={field.value}\n                onCheckedChange={handleChange}\n                className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value.toString()}\n                aria-labelledby=\"append-date-label\"\n              />\n            )}\n          />\n          <div className=\"flex items-center space-x-2\">\n            <label\n              id=\"append-date-label\"\n              htmlFor=\"append_current_datetime\"\n              className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n            >\n              {localize('com_assistants_append_date')}\n            </label>\n            <HoverCardTrigger>\n              <CircleHelpIcon\n                className=\"h-5 w-5 text-gray-500\"\n                aria-label={localize('com_assistants_append_date_tooltip')}\n              />\n            </HoverCardTrigger>\n          </div>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} className=\"w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-gray-600 dark:text-gray-300\">\n                  {localize('com_assistants_append_date_tooltip')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n        </div>\n      </HoverCard>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AssistantAvatar.tsx",
    "content": "import * as Popover from '@radix-ui/react-popover';\nimport { useState, useEffect, useRef, useMemo } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  fileConfig as defaultFileConfig,\n  QueryKeys,\n  defaultOrderQuery,\n  mergeFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type {\n  Metadata,\n  Assistant,\n  AssistantsEndpoint,\n  AssistantCreateParams,\n  AssistantListResponse,\n} from '~/data-provider/data-provider/src';\nimport { useUploadAssistantAvatarMutation, useGetFileConfig } from '~/data-provider';\nimport { useToastContext, useAssistantsMapContext } from '~/Providers';\nimport { AssistantAvatar, NoImage, AvatarMenu } from './Images';\n// import { Spinner } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { formatBytes } from '~/utils';\n\nfunction Avatar({\n  endpoint,\n  version,\n  assistant_id,\n  metadata,\n  createMutation,\n}: {\n  endpoint: AssistantsEndpoint;\n  version: number | string;\n  assistant_id: string | null;\n  metadata: null | Metadata;\n  createMutation: UseMutationResult<Assistant, Error, AssistantCreateParams>;\n}) {\n  // console.log('Avatar', assistant_id, metadata, createMutation);\n  const queryClient = useQueryClient();\n  const assistantsMap = useAssistantsMapContext();\n  const [menuOpen, setMenuOpen] = useState(false);\n  const [progress, setProgress] = useState<number>(1);\n  const [input, setInput] = useState<File | null>(null);\n  const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n  const lastSeenCreatedId = useRef<string | null>(null);\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n\n  const activeModel = useMemo(() => {\n    return assistantsMap?.[endpoint][assistant_id ?? '']?.model ?? '';\n  }, [assistantsMap, endpoint, assistant_id]);\n\n  const { mutate: uploadAvatar } = useUploadAssistantAvatarMutation({\n    onMutate: () => {\n      setProgress(0.4);\n    },\n    onSuccess: (data, vars) => {\n      if (vars.postCreation !== true) {\n        showToast({ message: localize('com_ui_upload_success') });\n      } else if (lastSeenCreatedId.current !== createMutation.data?.id) {\n        lastSeenCreatedId.current = createMutation.data?.id ?? '';\n      }\n\n      setInput(null);\n      setPreviewUrl(data.metadata?.avatar as string | null);\n\n      const res = queryClient.getQueryData<AssistantListResponse | undefined>([\n        QueryKeys.assistants,\n        endpoint,\n        defaultOrderQuery,\n      ]);\n\n      if (!res?.data || !res) {\n        return;\n      }\n\n      const assistants = res.data.map((assistant) => {\n        if (assistant.id === assistant_id) {\n          return {\n            ...assistant,\n            ...data,\n          };\n        }\n        return assistant;\n      });\n\n      queryClient.setQueryData<AssistantListResponse>(\n        [QueryKeys.assistants, endpoint, defaultOrderQuery],\n        {\n          ...res,\n          data: assistants,\n        },\n      );\n\n      setProgress(1);\n    },\n    onError: (error) => {\n      console.error('Error:', error);\n      setInput(null);\n      setPreviewUrl(null);\n      showToast({ message: localize('com_ui_upload_error'), status: 'error' });\n      setProgress(1);\n    },\n  });\n\n  useEffect(() => {\n    if (input) {\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        setPreviewUrl(reader.result as string);\n      };\n      reader.readAsDataURL(input);\n    }\n  }, [input]);\n\n  useEffect(() => {\n    setPreviewUrl((metadata?.avatar as string | undefined) ?? null);\n  }, [metadata]);\n\n  useEffect(() => {\n    /** Experimental: Condition to prime avatar upload before Assistant Creation\n     * - If the createMutation state Id was last seen (current) and the createMutation is successful\n     * we can assume that the avatar upload has already been initiated and we can skip the upload\n     *\n     * The mutation state is not reset until the user deliberately selects a new assistant or an assistant is deleted\n     *\n     * This prevents the avatar from being uploaded multiple times before the user selects a new assistant\n     * while allowing the user to upload to prime the avatar and other values before the assistant is created.\n     */\n    const sharedUploadCondition = !!(\n      createMutation.isSuccess &&\n      input &&\n      previewUrl &&\n      previewUrl.includes('base64')\n    );\n    if (sharedUploadCondition && lastSeenCreatedId.current === createMutation.data.id) {\n      return;\n    }\n\n    if (sharedUploadCondition && createMutation.data.id) {\n      console.log('[AssistantAvatar] Uploading Avatar after Assistant Creation');\n\n      const formData = new FormData();\n      formData.append('file', input, input.name);\n      formData.append('assistant_id', createMutation.data.id);\n\n      uploadAvatar({\n        assistant_id: createMutation.data.id,\n        model: activeModel,\n        postCreation: true,\n        formData,\n        endpoint,\n        version,\n      });\n    }\n  }, [\n    createMutation.data,\n    createMutation.isSuccess,\n    input,\n    previewUrl,\n    uploadAvatar,\n    activeModel,\n    endpoint,\n    version,\n  ]);\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n    const file = event.target.files?.[0];\n\n    if (fileConfig.avatarSizeLimit && file && file.size <= fileConfig.avatarSizeLimit) {\n      if (!file) {\n        console.error('No file selected');\n        return;\n      }\n\n      setInput(file);\n      setMenuOpen(false);\n\n      if (!assistant_id) {\n        // wait for successful form submission before uploading avatar\n        console.log('[AssistantAvatar] No assistant_id, will wait until form submission + upload');\n        return;\n      }\n\n      const formData = new FormData();\n      formData.append('file', file, file.name);\n      formData.append('assistant_id', assistant_id);\n\n      uploadAvatar({\n        assistant_id,\n        model: activeModel,\n        formData,\n        endpoint,\n        version,\n      });\n    } else {\n      const megabytes = fileConfig.avatarSizeLimit ? formatBytes(fileConfig.avatarSizeLimit) : 2;\n      showToast({\n        message: localize('com_ui_upload_invalid_var', { 0: megabytes + '' }),\n        status: 'error',\n      });\n    }\n\n    setMenuOpen(false);\n  };\n\n  return (\n    <Popover.Root open={menuOpen} onOpenChange={setMenuOpen}>\n      <div className=\"flex w-full items-center justify-center gap-4\">\n        <Popover.Trigger asChild>\n          <button type=\"button\" className=\"h-20 w-20\">\n            {previewUrl ? <AssistantAvatar url={previewUrl} progress={progress} /> : <NoImage />}\n          </button>\n        </Popover.Trigger>\n      </div>\n      {<AvatarMenu handleFileChange={handleFileChange} />}\n    </Popover.Root>\n  );\n}\n\nexport default Avatar;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AssistantConversationStarters.tsx",
    "content": "import React, { useRef, useState } from 'react';\nimport { Plus, X } from 'lucide-react';\nimport { Transition } from 'react-transition-group';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { TooltipAnchor } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\ninterface AssistantConversationStartersProps {\n  field: {\n    value: string[];\n    onChange: (value: string[]) => void;\n  };\n  inputClass: string;\n  labelClass: string;\n}\n\nconst AssistantConversationStarters: React.FC<AssistantConversationStartersProps> = ({\n  field,\n  inputClass,\n  labelClass,\n}) => {\n  const localize = useLocalize();\n  const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n  const nodeRef = useRef(null);\n  const [newStarter, setNewStarter] = useState('');\n\n  const handleAddStarter = () => {\n    if (newStarter.trim() && field.value.length < Constants.MAX_CONVO_STARTERS) {\n      const newValues = [newStarter, ...field.value];\n      field.onChange(newValues);\n      setNewStarter('');\n    }\n  };\n\n  const handleDeleteStarter = (index: number) => {\n    const newValues = field.value.filter((_, i) => i !== index);\n    field.onChange(newValues);\n  };\n  const defaultStyle = {\n    transition: 'opacity 200ms ease-in-out',\n    opacity: 0,\n  };\n\n  const triggerShake = (element: HTMLElement) => {\n    element.classList.remove('shake');\n    void element.offsetWidth;\n    element.classList.add('shake');\n    setTimeout(() => {\n      element.classList.remove('shake');\n    }, 200);\n  };\n\n  const transitionStyles = {\n    entering: { opacity: 1 },\n    entered: { opacity: 1 },\n    exiting: { opacity: 0 },\n    exited: { opacity: 0 },\n  };\n\n  const hasReachedMax = field.value.length >= Constants.MAX_CONVO_STARTERS;\n\n  return (\n    <div className=\"relative\">\n      <label className={labelClass} htmlFor=\"conversation_starters\">\n        {localize('com_assistants_conversation_starters')}\n      </label>\n      <div className=\"mt-4 space-y-2\">\n        {/* Persistent starter, used for creating only */}\n        <div className=\"relative\">\n          <input\n            ref={(el) => (inputRefs.current[0] = el)}\n            value={newStarter}\n            maxLength={64}\n            className={`${inputClass} pr-10`}\n            type=\"text\"\n            placeholder={\n              hasReachedMax\n                ? localize('com_assistants_max_starters_reached')\n                : localize('com_assistants_conversation_starters_placeholder')\n            }\n            onChange={(e) => setNewStarter(e.target.value)}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter') {\n                e.preventDefault();\n                if (hasReachedMax) {\n                  triggerShake(e.currentTarget);\n                } else {\n                  handleAddStarter();\n                }\n              }\n            }}\n          />\n          <Transition\n            nodeRef={nodeRef}\n            in={field.value.length < Constants.MAX_CONVO_STARTERS}\n            timeout={200}\n            unmountOnExit\n          >\n            {(state: string) => (\n              <div\n                ref={nodeRef}\n                style={{\n                  ...defaultStyle,\n                  ...transitionStyles[state as keyof typeof transitionStyles],\n                  transition: state === 'entering' ? 'none' : defaultStyle.transition,\n                }}\n                className=\"absolute right-1 top-1\"\n              >\n                <TooltipAnchor\n                  side=\"top\"\n                  description={\n                    hasReachedMax\n                      ? localize('com_assistants_max_starters_reached')\n                      : localize('com_ui_add')\n                  }\n                  className=\"flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n                  onClick={handleAddStarter}\n                  disabled={hasReachedMax}\n                >\n                  <Plus className=\"size-4\" />\n                </TooltipAnchor>\n              </div>\n            )}\n          </Transition>\n        </div>\n        {field.value.map((starter, index) => (\n          <div key={index} className=\"relative\">\n            <input\n              ref={(el) => (inputRefs.current[index + 1] = el)}\n              value={starter}\n              onChange={(e) => {\n                const newValue = [...field.value];\n                newValue[index] = e.target.value;\n                field.onChange(newValue);\n              }}\n              className={`${inputClass} pr-10`}\n              type=\"text\"\n              maxLength={64}\n            />\n            <TooltipAnchor\n              side=\"top\"\n              description={localize('com_ui_delete')}\n              className=\"absolute right-1 top-1 flex size-7 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-surface-hover\"\n              onClick={() => handleDeleteStarter(index)}\n            >\n              <X className=\"size-4\" />\n            </TooltipAnchor>\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default AssistantConversationStarters;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AssistantPanel.tsx",
    "content": "import { useState, useMemo } from 'react';\nimport { useForm, FormProvider, Controller, useWatch } from 'react-hook-form';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport {\n  Tools,\n  Capabilities,\n  actionDelimiter,\n  ImageVisionTool,\n  defaultAssistantFormValues,\n} from '~/data-provider/data-provider/src';\nimport type { FunctionTool, TConfig } from '~/data-provider/data-provider/src';\nimport type { AssistantForm, AssistantPanelProps } from '~/common';\nimport {\n  useCreateAssistantMutation,\n  useUpdateAssistantMutation,\n  useAvailableAgentToolsQuery,\n} from '~/data-provider';\nimport { cn, cardStyle, defaultTextProps, removeFocusOutlines } from '~/utils';\nimport AssistantConversationStarters from './AssistantConversationStarters';\nimport { useAssistantsMapContext, useToastContext } from '~/Providers';\nimport { useSelectAssistant, useLocalize } from '~/hooks';\nimport { ToolSelectDialog } from '~/components/Tools';\nimport AppendDateCheckbox from './AppendDateCheckbox';\nimport CapabilitiesForm from './CapabilitiesForm';\nimport { SelectDropDown } from '~/components/ui';\nimport AssistantAvatar from './AssistantAvatar';\nimport AssistantSelect from './AssistantSelect';\nimport ContextButton from './ContextButton';\nimport AssistantTool from './AssistantTool';\nimport { Spinner } from '~/components/svg';\nimport Knowledge from './Knowledge';\nimport { Panel } from '~/common';\nimport Action from './Action';\n\nconst labelClass = 'mb-2 text-token-text-primary block font-medium';\nconst inputClass = cn(\n  defaultTextProps,\n  'flex w-full px-3 py-2 dark:border-gray-800 dark:bg-gray-800 rounded-xl mb-2',\n  removeFocusOutlines,\n);\n\nexport default function AssistantPanel({\n  // index = 0,\n  setAction,\n  endpoint,\n  actions = [],\n  setActivePanel,\n  documentsMap,\n  assistant_id: current_assistant_id,\n  setCurrentAssistantId,\n  assistantsConfig,\n  version,\n}: AssistantPanelProps & { assistantsConfig?: TConfig | null }) {\n  const modelsQuery = useGetModelsQuery();\n  const assistantMap = useAssistantsMapContext();\n\n  const { data: allTools = [] } = useAvailableAgentToolsQuery();\n  const { onSelect: onSelectAssistant } = useSelectAssistant(endpoint);\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const methods = useForm<AssistantForm>({\n    defaultValues: defaultAssistantFormValues,\n  });\n\n  const [showToolDialog, setShowToolDialog] = useState(false);\n\n  const { control, handleSubmit, reset, setValue, getValues } = methods;\n  const assistant = useWatch({ control, name: 'assistant' });\n  const functions = useWatch({ control, name: 'functions' });\n  const assistant_id = useWatch({ control, name: 'id' });\n\n  const activeModel = useMemo(() => {\n    return assistantMap?.[endpoint]?.[assistant_id]?.model;\n  }, [assistantMap, endpoint, assistant_id]);\n\n  const toolsEnabled = useMemo(\n    () => assistantsConfig?.capabilities?.includes(Capabilities.tools),\n    [assistantsConfig],\n  );\n  const actionsEnabled = useMemo(\n    () => assistantsConfig?.capabilities?.includes(Capabilities.actions),\n    [assistantsConfig],\n  );\n  const retrievalEnabled = useMemo(\n    () => assistantsConfig?.capabilities?.includes(Capabilities.retrieval),\n    [assistantsConfig],\n  );\n  const codeEnabled = useMemo(\n    () => assistantsConfig?.capabilities?.includes(Capabilities.code_interpreter),\n    [assistantsConfig],\n  );\n\n  /* Mutations */\n  const update = useUpdateAssistantMutation({\n    onSuccess: (data) => {\n      showToast({\n        message: `${localize('com_assistants_update_success')} ${\n          data.name ?? localize('com_ui_assistant')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_assistants_update_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const create = useCreateAssistantMutation({\n    onSuccess: (data) => {\n      setCurrentAssistantId(data.id);\n      showToast({\n        message: `${localize('com_assistants_create_success')} ${\n          data.name ?? localize('com_ui_assistant')\n        }`,\n      });\n    },\n    onError: (err) => {\n      const error = err as Error;\n      showToast({\n        message: `${localize('com_assistants_create_error')}${\n          error.message ? ` ${localize('com_ui_error')}: ${error.message}` : ''\n        }`,\n        status: 'error',\n      });\n    },\n  });\n\n  const files = useMemo(() => {\n    if (typeof assistant === 'string') {\n      return [];\n    }\n    return assistant.files;\n  }, [assistant]);\n\n  const onSubmit = (data: AssistantForm) => {\n    const tools: Array<FunctionTool | string> = [...functions].map((functionName) => {\n      if (!functionName.includes(actionDelimiter)) {\n        return functionName;\n      } else {\n        const assistant = assistantMap?.[endpoint]?.[assistant_id];\n        const tool = assistant?.tools?.find((tool) => tool.function?.name === functionName);\n        if (assistant && tool) {\n          return tool;\n        }\n      }\n\n      return functionName;\n    });\n\n    if (data.code_interpreter) {\n      tools.push({ type: Tools.code_interpreter });\n    }\n    if (data.retrieval) {\n      tools.push({ type: version == 2 ? Tools.file_search : Tools.retrieval });\n    }\n    if (data.image_vision) {\n      tools.push(ImageVisionTool);\n    }\n\n    const {\n      name,\n      description,\n      instructions,\n      conversation_starters: starters,\n      model,\n      append_current_datetime,\n    } = data;\n\n    if (assistant_id) {\n      update.mutate({\n        assistant_id,\n        data: {\n          name,\n          description,\n          instructions,\n          conversation_starters: starters.filter((starter) => starter.trim() !== ''),\n          model,\n          tools,\n          endpoint,\n          append_current_datetime,\n        },\n      });\n      return;\n    }\n\n    create.mutate({\n      name,\n      description,\n      instructions,\n      conversation_starters: starters.filter((starter) => starter.trim() !== ''),\n      model,\n      tools,\n      endpoint,\n      version,\n      append_current_datetime,\n    });\n  };\n\n  let submitContext: string | JSX.Element;\n\n  if (create.isLoading || update.isLoading) {\n    submitContext = <Spinner className=\"icon-md\" />;\n  } else if (assistant_id) {\n    submitContext = localize('com_ui_save');\n  } else {\n    submitContext = localize('com_ui_create');\n  }\n\n  return (\n    <FormProvider {...methods}>\n      <form\n        onSubmit={handleSubmit(onSubmit)}\n        className=\"h-auto w-full flex-shrink-0 overflow-x-hidden\"\n      >\n        <div className=\"flex w-full flex-wrap\">\n          <Controller\n            name=\"assistant\"\n            control={control}\n            render={({ field }) => (\n              <AssistantSelect\n                reset={reset}\n                value={field.value}\n                endpoint={endpoint}\n                documentsMap={documentsMap}\n                allTools={allTools}\n                setCurrentAssistantId={setCurrentAssistantId}\n                selectedAssistant={current_assistant_id ?? null}\n                createMutation={create}\n              />\n            )}\n          />\n          {/* Select Button */}\n          {assistant_id && (\n            <button\n              className=\"btn btn-primary focus:shadow-outline mx-2 mt-1 h-[40px] rounded bg-green-500 px-4 py-2 font-semibold text-white hover:bg-green-400 focus:border-green-500 focus:outline-none focus:ring-0\"\n              type=\"button\"\n              disabled={!assistant_id}\n              onClick={(e) => {\n                e.preventDefault();\n                onSelectAssistant(assistant_id);\n              }}\n            >\n              {localize('com_ui_select')}\n            </button>\n          )}\n        </div>\n        <div className=\"bg-surface-50 h-auto px-4 pb-8 pt-3 dark:bg-transparent\">\n          {/* Avatar & Name */}\n          <div className=\"mb-4\">\n            <AssistantAvatar\n              createMutation={create}\n              assistant_id={assistant_id}\n              metadata={assistant['metadata'] ?? null}\n              endpoint={endpoint}\n              version={version}\n            />\n            <label className={labelClass} htmlFor=\"name\">\n              {localize('com_ui_name')}\n            </label>\n            <Controller\n              name=\"name\"\n              control={control}\n              render={({ field }) => (\n                <input\n                  {...field}\n                  value={field.value ?? ''}\n                  {...{ max: 256 }}\n                  className={inputClass}\n                  id=\"name\"\n                  type=\"text\"\n                  placeholder={localize('com_assistants_name_placeholder')}\n                />\n              )}\n            />\n            <Controller\n              name=\"id\"\n              control={control}\n              render={({ field }) => (\n                <p className=\"h-3 text-xs italic text-text-secondary\">{field.value}</p>\n              )}\n            />\n          </div>\n          {/* Description */}\n          <div className=\"mb-4\">\n            <label className={labelClass} htmlFor=\"description\">\n              {localize('com_ui_description')}\n            </label>\n            <Controller\n              name=\"description\"\n              control={control}\n              render={({ field }) => (\n                <input\n                  {...field}\n                  value={field.value ?? ''}\n                  {...{ max: 512 }}\n                  className={inputClass}\n                  id=\"description\"\n                  type=\"text\"\n                  placeholder={localize('com_assistants_description_placeholder')}\n                />\n              )}\n            />\n          </div>\n\n          {/* Instructions */}\n          <div className=\"mb-6\">\n            <label className={labelClass} htmlFor=\"instructions\">\n              {localize('com_ui_instructions')}\n            </label>\n            <Controller\n              name=\"instructions\"\n              control={control}\n              render={({ field }) => (\n                <textarea\n                  {...field}\n                  value={field.value ?? ''}\n                  {...{ max: 32768 }}\n                  className={cn(inputClass, 'min-h-[100px] resize-y')}\n                  id=\"instructions\"\n                  placeholder={localize('com_assistants_instructions_placeholder')}\n                  rows={3}\n                />\n              )}\n            />\n          </div>\n\n          {/* Append Today's Date */}\n          <AppendDateCheckbox control={control} setValue={setValue} getValues={getValues} />\n\n          {/* Conversation Starters */}\n          <div className=\"relative mb-6\">\n            {/* the label of conversation starters is in the component */}\n            <Controller\n              name=\"conversation_starters\"\n              control={control}\n              defaultValue={[]}\n              render={({ field }) => (\n                <AssistantConversationStarters\n                  field={field}\n                  inputClass={inputClass}\n                  labelClass={labelClass}\n                />\n              )}\n            />\n          </div>\n          {/* Model */}\n          <div className=\"mb-6\">\n            <label className={labelClass} htmlFor=\"model\">\n              {localize('com_ui_model')}\n            </label>\n            <Controller\n              name=\"model\"\n              control={control}\n              rules={{ required: true, minLength: 1 }}\n              render={({ field, fieldState: { error } }) => (\n                <>\n                  <SelectDropDown\n                    emptyTitle={true}\n                    value={field.value}\n                    setValue={field.onChange}\n                    availableValues={modelsQuery.data?.[endpoint] ?? []}\n                    showAbove={false}\n                    showLabel={false}\n                    className={cn(\n                      cardStyle,\n                      'flex h-[40px] w-full flex-none items-center justify-center px-4 hover:cursor-pointer',\n                    )}\n                    containerClassName={cn('rounded-md', error ? 'border-red-500 border-2' : '')}\n                  />\n                  {error && (\n                    <span className=\"text-sm text-red-500 transition duration-300 ease-in-out\">\n                      {localize('com_ui_field_required')}\n                    </span>\n                  )}\n                </>\n              )}\n            />\n          </div>\n          {/* Knowledge */}\n          {(codeEnabled === true || retrievalEnabled === true) && version == 1 && (\n            <Knowledge assistant_id={assistant_id} files={files} endpoint={endpoint} />\n          )}\n          {/* Capabilities */}\n          <CapabilitiesForm\n            version={version}\n            endpoint={endpoint}\n            codeEnabled={codeEnabled}\n            assistantsConfig={assistantsConfig}\n            retrievalEnabled={retrievalEnabled}\n          />\n          {/* Tools */}\n          <div className=\"mb-6\">\n            <label className={labelClass}>\n              {`${toolsEnabled === true ? localize('com_ui_tools') : ''}\n              ${toolsEnabled === true && actionsEnabled === true ? ' + ' : ''}\n              ${actionsEnabled === true ? localize('com_assistants_actions') : ''}`}\n            </label>\n            <div className=\"space-y-2\">\n              {functions.map((func, i) => (\n                <AssistantTool\n                  key={`${func}-${i}-${assistant_id}`}\n                  tool={func}\n                  allTools={allTools}\n                  assistant_id={assistant_id}\n                />\n              ))}\n              {actions\n                .filter((action) => action.assistant_id === assistant_id)\n                .map((action, i) => {\n                  return <Action key={i} action={action} onClick={() => setAction(action)} />;\n                })}\n              <div className=\"flex space-x-2\">\n                {toolsEnabled === true && (\n                  <button\n                    type=\"button\"\n                    onClick={() => setShowToolDialog(true)}\n                    className=\"btn btn-neutral border-token-border-light relative h-8 w-full rounded-lg font-medium\"\n                  >\n                    <div className=\"flex w-full items-center justify-center gap-2\">\n                      {localize('com_assistants_add_tools')}\n                    </div>\n                  </button>\n                )}\n                {actionsEnabled === true && (\n                  <button\n                    type=\"button\"\n                    disabled={!assistant_id}\n                    onClick={() => {\n                      if (!assistant_id) {\n                        return showToast({\n                          message: localize('com_assistants_actions_disabled'),\n                          status: 'warning',\n                        });\n                      }\n                      setActivePanel(Panel.actions);\n                    }}\n                    className=\"btn btn-neutral border-token-border-light relative h-8 w-full rounded-lg font-medium\"\n                  >\n                    <div className=\"flex w-full items-center justify-center gap-2\">\n                      {localize('com_assistants_add_actions')}\n                    </div>\n                  </button>\n                )}\n              </div>\n            </div>\n          </div>\n          <div className=\"flex items-center justify-end gap-2\">\n            {/* Context Button */}\n            <ContextButton\n              assistant_id={assistant_id}\n              activeModel={activeModel}\n              setCurrentAssistantId={setCurrentAssistantId}\n              createMutation={create}\n              endpoint={endpoint}\n            />\n            {/* Submit Button */}\n            <button\n              className=\"btn btn-primary focus:shadow-outline flex w-full items-center justify-center px-4 py-2 font-semibold text-white hover:bg-green-600 focus:border-green-500\"\n              type=\"submit\"\n            >\n              {submitContext}\n            </button>\n          </div>\n        </div>\n        <ToolSelectDialog\n          isOpen={showToolDialog}\n          setIsOpen={setShowToolDialog}\n          toolsFormKey=\"functions\"\n          endpoint={endpoint}\n        />\n      </form>\n    </FormProvider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AssistantSelect.tsx",
    "content": "import { Plus } from 'lucide-react';\nimport { useMemo, useCallback, useEffect, useRef } from 'react';\nimport {\n  Tools,\n  FileSources,\n  Capabilities,\n  EModelEndpoint,\n  LocalStorageKeys,\n  isImageVisionTool,\n  defaultAssistantFormValues,\n} from '~/data-provider/data-provider/src';\nimport type { UseFormReset } from 'react-hook-form';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type {\n  TPlugin,\n  Assistant,\n  AssistantDocument,\n  AssistantsEndpoint,\n  AssistantCreateParams,\n} from '~/data-provider/data-provider/src';\nimport type {\n  Actions,\n  ExtendedFile,\n  AssistantForm,\n  TAssistantOption,\n  LastSelectedModels,\n} from '~/common';\nimport SelectDropDown from '~/components/ui/SelectDropDown';\nimport { useListAssistantsQuery } from '~/data-provider';\nimport { useLocalize, useLocalStorage } from '~/hooks';\nimport { cn, createDropdownSetter } from '~/utils';\nimport { useFileMapContext } from '~/Providers';\n\nconst keys = new Set([\n  'name',\n  'id',\n  'description',\n  'instructions',\n  'conversation_starters',\n  'model',\n  'append_current_datetime',\n]);\n\nexport default function AssistantSelect({\n  reset,\n  value,\n  endpoint,\n  documentsMap,\n  selectedAssistant,\n  setCurrentAssistantId,\n  createMutation,\n  allTools,\n}: {\n  reset: UseFormReset<AssistantForm>;\n  value: TAssistantOption;\n  endpoint: AssistantsEndpoint;\n  selectedAssistant: string | null;\n  documentsMap: Map<string, AssistantDocument> | null;\n  setCurrentAssistantId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  createMutation: UseMutationResult<Assistant, Error, AssistantCreateParams>;\n  allTools?: TPlugin[];\n}) {\n  const localize = useLocalize();\n  const fileMap = useFileMapContext();\n  const lastSelectedAssistant = useRef<string | null>(null);\n  const [lastSelectedModels] = useLocalStorage<LastSelectedModels | undefined>(\n    LocalStorageKeys.LAST_MODEL,\n    {} as LastSelectedModels,\n  );\n\n  const toolkits = useMemo(\n    () => new Set(allTools?.filter((tool) => tool.toolkit === true).map((tool) => tool.pluginKey)),\n    [allTools],\n  );\n\n  const query = useListAssistantsQuery(endpoint, undefined, {\n    select: (res) =>\n      res.data.map((_assistant) => {\n        const source =\n          endpoint === EModelEndpoint.assistants ? FileSources.openai : FileSources.azure;\n        const assistant: TAssistantOption = {\n          ..._assistant,\n          label: _assistant.name ?? '',\n          value: _assistant.id,\n          files: _assistant.file_ids ? ([] as Array<[string, ExtendedFile]>) : undefined,\n          code_files: _assistant.tool_resources?.code_interpreter?.file_ids\n            ? ([] as Array<[string, ExtendedFile]>)\n            : undefined,\n        };\n\n        const handleFile = (file_id: string, list?: Array<[string, ExtendedFile]>) => {\n          const file = fileMap?.[file_id];\n          if (file) {\n            list?.push([\n              file_id,\n              {\n                file_id: file.file_id,\n                type: file.type,\n                filepath: file.filepath,\n                filename: file.filename,\n                width: file.width,\n                height: file.height,\n                size: file.bytes,\n                preview: file.filepath,\n                progress: 1,\n                source,\n              },\n            ]);\n          } else {\n            list?.push([\n              file_id,\n              {\n                file_id,\n                type: '',\n                filename: '',\n                size: 1,\n                progress: 1,\n                filepath: endpoint,\n                source,\n              },\n            ]);\n          }\n        };\n\n        if (assistant.files && _assistant.file_ids) {\n          _assistant.file_ids.forEach((file_id) => handleFile(file_id, assistant.files));\n        }\n\n        if (assistant.code_files && _assistant.tool_resources?.code_interpreter?.file_ids) {\n          _assistant.tool_resources.code_interpreter.file_ids.forEach((file_id) =>\n            handleFile(file_id, assistant.code_files),\n          );\n        }\n\n        const assistantDoc = documentsMap?.get(_assistant.id);\n        /* If no user updates, use the latest assistant docs */\n        if (assistantDoc) {\n          if (!assistant.conversation_starters) {\n            assistant.conversation_starters = assistantDoc.conversation_starters;\n          }\n          assistant.append_current_datetime = assistantDoc.append_current_datetime ?? false;\n        }\n\n        return assistant;\n      }),\n  });\n\n  const onSelect = useCallback(\n    (value: string) => {\n      const assistant = query.data?.find((assistant) => assistant.id === value);\n\n      createMutation.reset();\n      if (!assistant) {\n        setCurrentAssistantId(undefined);\n        return reset({\n          ...defaultAssistantFormValues,\n          model: lastSelectedModels?.[endpoint] ?? '',\n        });\n      }\n\n      const update = {\n        ...assistant,\n        label: assistant.name ?? '',\n        value: assistant.id || '',\n      };\n\n      const actions: Actions = {\n        [Capabilities.code_interpreter]: false,\n        [Capabilities.image_vision]: false,\n        [Capabilities.retrieval]: false,\n      };\n\n      (assistant.tools ?? [])\n        .filter((tool) => tool.type !== 'function' || isImageVisionTool(tool))\n        .map((tool) => (tool.function?.name ?? '') || tool.type)\n        .forEach((tool) => {\n          if (tool === Tools.file_search) {\n            actions[Capabilities.retrieval] = true;\n          }\n          actions[tool] = true;\n        });\n\n      const seenToolkits = new Set<string>();\n      const functions = (assistant.tools ?? [])\n        .filter((tool) => tool.type === 'function' && !isImageVisionTool(tool))\n        .map((tool) => tool.function?.name ?? '')\n        .filter((fnName) => {\n          const fnPrefix = fnName.split('_')[0];\n          const seenToolkit = toolkits.has(fnPrefix);\n          if (seenToolkit) {\n            seenToolkits.add(fnPrefix);\n          }\n          return !seenToolkit;\n        });\n\n      if (seenToolkits.size > 0) {\n        functions.push(...Array.from(seenToolkits));\n      }\n\n      const formValues: Partial<AssistantForm & Actions> = {\n        functions,\n        ...actions,\n        assistant: update,\n        model: update.model,\n      };\n\n      Object.entries(assistant).forEach(([name, value]) => {\n        if (!keys.has(name)) {\n          return;\n        }\n\n        if (name === 'append_current_datetime') {\n          formValues[name] = !!value;\n          return;\n        }\n\n        if (\n          name === 'conversation_starters' &&\n          Array.isArray(value) &&\n          value.every((item) => typeof item === 'string')\n        ) {\n          formValues[name] = value;\n          return;\n        }\n\n        if (typeof value !== 'number' && typeof value !== 'object') {\n          formValues[name] = value;\n        }\n      });\n\n      reset(formValues);\n      setCurrentAssistantId(assistant.id);\n    },\n    [\n      query.data,\n      reset,\n      setCurrentAssistantId,\n      createMutation,\n      endpoint,\n      lastSelectedModels,\n      toolkits,\n    ],\n  );\n\n  useEffect(() => {\n    let timerId: NodeJS.Timeout | null = null;\n\n    if (selectedAssistant === lastSelectedAssistant.current) {\n      return;\n    }\n\n    if (selectedAssistant !== '' && selectedAssistant != null && query.data) {\n      timerId = setTimeout(() => {\n        lastSelectedAssistant.current = selectedAssistant;\n        onSelect(selectedAssistant);\n      }, 5);\n    }\n\n    return () => {\n      if (timerId) {\n        clearTimeout(timerId);\n      }\n    };\n  }, [selectedAssistant, query.data, onSelect]);\n\n  const createAssistant = localize('com_ui_create') + ' ' + localize('com_ui_assistant');\n  return (\n    <SelectDropDown\n      value={!value ? createAssistant : value}\n      setValue={createDropdownSetter(onSelect)}\n      availableValues={\n        query.data ?? [\n          {\n            label: 'Loading...',\n            value: '',\n          },\n        ]\n      }\n      iconSide=\"left\"\n      showAbove={false}\n      showLabel={false}\n      emptyTitle={true}\n      containerClassName=\"flex-grow\"\n      searchClassName=\"dark:from-gray-850\"\n      searchPlaceholder={localize('com_assistants_search_name')}\n      optionsClass=\"hover:bg-gray-20/50 dark:border-gray-700\"\n      optionsListClass=\"rounded-lg shadow-lg dark:bg-gray-850 dark:border-gray-700 dark:last:border\"\n      currentValueClass={cn(\n        'text-md font-semibold text-gray-900 dark:text-white',\n        value === '' ? 'text-gray-500' : '',\n      )}\n      className={cn(\n        'mt-1 rounded-md dark:border-gray-700 dark:bg-gray-850',\n        'z-50 flex h-[40px] w-full flex-none items-center justify-center px-4 hover:cursor-pointer hover:border-green-500 focus:border-gray-400',\n      )}\n      renderOption={() => (\n        <span className=\"flex items-center gap-1.5 truncate\">\n          <span className=\"absolute inset-y-0 left-0 flex items-center pl-2 text-gray-800 dark:text-gray-100\">\n            <Plus className=\"w-[16px]\" />\n          </span>\n          <span className={cn('ml-4 flex h-6 items-center gap-1 text-gray-800 dark:text-gray-100')}>\n            {createAssistant}\n          </span>\n        </span>\n      )}\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/AssistantTool.tsx",
    "content": "import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport { useUpdateUserPluginsMutation } from '~/data-provider/data-provider/src/react-query';\nimport { OGDialog, OGDialogTrigger, Label } from '~/components/ui';\nimport OGDialogTemplate from '~/components/ui/OGDialogTemplate';\nimport { useToastContext } from '~/Providers';\nimport { TrashIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function AssistantTool({\n  tool,\n  allTools,\n  assistant_id = '',\n}: {\n  tool: string;\n  allTools: TPlugin[];\n  assistant_id?: string;\n}) {\n  const [isHovering, setIsHovering] = useState(false);\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const updateUserPlugins = useUpdateUserPluginsMutation();\n  const { getValues, setValue } = useFormContext();\n  const currentTool = allTools.find((t) => t.pluginKey === tool);\n\n  const removeTool = (tool: string) => {\n    if (tool) {\n      updateUserPlugins.mutate(\n        { pluginKey: tool, action: 'uninstall', auth: null, isEntityTool: true },\n        {\n          onError: (error: unknown) => {\n            showToast({ message: `Error while deleting the tool: ${error}`, status: 'error' });\n          },\n          onSuccess: () => {\n            const fns = getValues('functions').filter((fn) => fn !== tool);\n            setValue('functions', fns);\n            showToast({ message: 'Tool deleted successfully', status: 'success' });\n          },\n        },\n      );\n    }\n  };\n\n  if (!currentTool) {\n    return null;\n  }\n\n  return (\n    <OGDialog>\n      <div\n        className={cn(\n          'flex w-full items-center rounded-lg text-sm',\n          !assistant_id ? 'opacity-40' : '',\n        )}\n        onMouseEnter={() => setIsHovering(true)}\n        onMouseLeave={() => setIsHovering(false)}\n      >\n        <div className=\"flex grow items-center\">\n          {currentTool.icon && (\n            <div className=\"flex h-9 w-9 items-center justify-center overflow-hidden rounded-full\">\n              <div\n                className=\"flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-center bg-no-repeat dark:bg-white/20\"\n                style={{ backgroundImage: `url(${currentTool.icon})`, backgroundSize: 'cover' }}\n              />\n            </div>\n          )}\n          <div\n            className=\"h-9 grow px-3 py-2\"\n            style={{ textOverflow: 'ellipsis', wordBreak: 'break-all', overflow: 'hidden' }}\n          >\n            {currentTool.name}\n          </div>\n        </div>\n\n        {isHovering && (\n          <OGDialogTrigger asChild>\n            <button\n              type=\"button\"\n              className=\"flex h-9 w-9 min-w-9 items-center justify-center rounded-lg transition-colors duration-200 hover:bg-gray-200 dark:hover:bg-gray-700\"\n            >\n              <TrashIcon />\n            </button>\n          </OGDialogTrigger>\n        )}\n      </div>\n      <OGDialogTemplate\n        showCloseButton={false}\n        title={localize('com_ui_delete_tool')}\n        className=\"max-w-[450px]\"\n        main={\n          <Label className=\"text-left text-sm font-medium\">\n            {localize('com_ui_delete_tool_confirm')}\n          </Label>\n        }\n        selection={{\n          selectHandler: () => removeTool(currentTool.pluginKey),\n          selectClasses:\n            'bg-red-700 dark:bg-red-600 hover:bg-red-800 dark:hover:bg-red-800 transition-colors duration-200 text-white',\n          selectText: localize('com_ui_delete'),\n        }}\n      />\n    </OGDialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/CapabilitiesForm.tsx",
    "content": "import { useMemo } from 'react';\nimport { Capabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport type { TConfig, AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { AssistantForm } from '~/common';\nimport ImageVision from './ImageVision';\nimport { useLocalize } from '~/hooks';\nimport Retrieval from './Retrieval';\nimport CodeFiles from './CodeFiles';\nimport Code from './Code';\n\nexport default function CapabilitiesForm({\n  version,\n  endpoint,\n  codeEnabled,\n  retrievalEnabled,\n  assistantsConfig,\n}: {\n  version: number | string;\n  codeEnabled?: boolean;\n  retrievalEnabled?: boolean;\n  endpoint: AssistantsEndpoint;\n  assistantsConfig?: TConfig | null;\n}) {\n  const localize = useLocalize();\n\n  const methods = useFormContext<AssistantForm>();\n  const { control } = methods;\n  const assistant = useWatch({ control, name: 'assistant' });\n  const assistant_id = useWatch({ control, name: 'id' });\n  const files = useMemo(() => {\n    if (typeof assistant === 'string') {\n      return [];\n    }\n    return assistant.code_files;\n  }, [assistant]);\n\n  const retrievalModels = useMemo(\n    () => new Set(assistantsConfig?.retrievalModels ?? []),\n    [assistantsConfig],\n  );\n  const imageVisionEnabled = useMemo(\n    () => assistantsConfig?.capabilities?.includes(Capabilities.image_vision),\n    [assistantsConfig],\n  );\n\n  return (\n    <div className=\"mb-4\">\n      <div className=\"mb-1.5 flex items-center\">\n        <span>\n          <label className=\"text-token-text-primary block font-medium\">\n            {localize('com_assistants_capabilities')}\n          </label>\n        </span>\n      </div>\n      <div className=\"flex flex-col items-start gap-2\">\n        {codeEnabled && <Code version={version} />}\n        {retrievalEnabled && (\n          <Retrieval endpoint={endpoint} version={version} retrievalModels={retrievalModels} />\n        )}\n        {imageVisionEnabled && version == 1 && <ImageVision />}\n        {codeEnabled && version && (\n          <CodeFiles\n            assistant_id={assistant_id}\n            version={version}\n            endpoint={endpoint}\n            files={files}\n          />\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/Code.tsx",
    "content": "import { Capabilities } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller } from 'react-hook-form';\nimport type { AssistantForm } from '~/common';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport { CircleHelpIcon } from '~/components/svg';\nimport { useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\n\nexport default function Code({ version }: { version: number | string }) {\n  const localize = useLocalize();\n  const methods = useFormContext<AssistantForm>();\n  const { control, setValue, getValues } = methods;\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"flex items-center\">\n          <Controller\n            name={Capabilities.code_interpreter}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={field.value}\n                onCheckedChange={field.onChange}\n                className=\"relative float-left  mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value.toString()}\n              />\n            )}\n          />\n          <button\n            type=\"button\"\n            className=\"flex items-center space-x-2\"\n            onClick={() =>\n              setValue(Capabilities.code_interpreter, !getValues(Capabilities.code_interpreter), {\n                shouldDirty: true,\n              })\n            }\n          >\n            <label\n              className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n              htmlFor={Capabilities.code_interpreter}\n            >\n              {localize('com_assistants_code_interpreter')}\n            </label>\n            <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-5 w-5 text-gray-500\" />\n            </HoverCardTrigger>\n          </button>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} className=\"w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-gray-600 dark:text-gray-300\">\n                  {version == 2 && localize('com_assistants_code_interpreter_info')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n        </div>\n      </HoverCard>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/CodeFiles.tsx",
    "content": "import { useState, useRef, useEffect } from 'react';\nimport {\n  EToolResources,\n  mergeFileConfig,\n  fileConfig as defaultFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { AssistantsEndpoint, EndpointFileConfig } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport FileRow from '~/components/Chat/Input/Files/FileRow';\nimport { useGetFileConfig } from '~/data-provider';\nimport { useFileHandling } from '~/hooks/Files';\nimport useLocalize from '~/hooks/useLocalize';\nimport { useChatContext } from '~/Providers';\n\nconst tool_resource = EToolResources.code_interpreter;\n\nexport default function CodeFiles({\n  endpoint,\n  assistant_id,\n  files: _files,\n}: {\n  version: number | string;\n  endpoint: AssistantsEndpoint;\n  assistant_id: string;\n  files?: [string, ExtendedFile][];\n}) {\n  const localize = useLocalize();\n  const { setFilesLoading } = useChatContext();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const [files, setFiles] = useState<Map<string, ExtendedFile>>(new Map());\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n  const { handleFileChange } = useFileHandling({\n    overrideEndpoint: endpoint,\n    additionalMetadata: { assistant_id, tool_resource },\n    fileSetter: setFiles,\n  });\n\n  useEffect(() => {\n    if (_files) {\n      setFiles(new Map(_files));\n    }\n  }, [_files]);\n\n  const endpointFileConfig = fileConfig.endpoints[endpoint] as EndpointFileConfig | undefined;\n  const isUploadDisabled = endpointFileConfig?.disabled ?? false;\n\n  if (isUploadDisabled) {\n    return null;\n  }\n\n  const handleButtonClick = () => {\n    // necessary to reset the input\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <div className=\"mb-2 w-full\">\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"rounded-lg text-xs text-text-secondary\">\n          {localize('com_assistants_code_interpreter_files')}\n        </div>\n        <FileRow\n          files={files}\n          setFiles={setFiles}\n          assistant_id={assistant_id}\n          tool_resource={tool_resource}\n          setFilesLoading={setFilesLoading}\n          Wrapper={({ children }) => <div className=\"flex flex-wrap gap-2\">{children}</div>}\n        />\n        <div>\n          <button\n            type=\"button\"\n            disabled={!assistant_id}\n            className=\"btn btn-neutral border-token-border-light relative h-9 w-full rounded-lg font-medium\"\n            onClick={handleButtonClick}\n          >\n            <div className=\"flex w-full items-center justify-center gap-2\">\n              <input\n                multiple={true}\n                type=\"file\"\n                style={{ display: 'none' }}\n                tabIndex={-1}\n                ref={fileInputRef}\n                disabled={!assistant_id}\n                onChange={handleFileChange}\n              />\n              {localize('com_ui_upload_files')}\n            </div>\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ContextButton.tsx",
    "content": "import type { Assistant, AssistantCreateParams, AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport { Dialog, DialogTrigger, Label } from '~/components/ui';\nimport { useChatContext, useToastContext } from '~/Providers';\nimport { useDeleteAssistantMutation } from '~/data-provider';\nimport DialogTemplate from '~/components/ui/DialogTemplate';\nimport { useLocalize, useSetIndexOptions } from '~/hooks';\nimport { cn, removeFocusOutlines } from '~/utils/';\nimport { TrashIcon } from '~/components/svg';\n\nexport default function ContextButton({\n  activeModel,\n  assistant_id,\n  setCurrentAssistantId,\n  createMutation,\n  endpoint,\n}: {\n  activeModel?: string;\n  assistant_id: string;\n  setCurrentAssistantId: React.Dispatch<React.SetStateAction<string | undefined>>;\n  createMutation: UseMutationResult<Assistant, Error, AssistantCreateParams>;\n  endpoint: AssistantsEndpoint;\n}) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const { conversation } = useChatContext();\n  const { setOption } = useSetIndexOptions();\n\n  const deleteAssistant = useDeleteAssistantMutation({\n    onSuccess: (_, vars, context) => {\n      const updatedList = context as Assistant[] | undefined;\n      if (!updatedList) {\n        return;\n      }\n\n      showToast({\n        message: localize('com_ui_assistant_deleted'),\n        status: 'success',\n      });\n\n      if (createMutation.data?.id !== undefined) {\n        console.log('[deleteAssistant] resetting createMutation');\n        createMutation.reset();\n      }\n\n      const firstAssistant = updatedList[0] as Assistant | undefined;\n      if (!firstAssistant) {\n        return setOption('assistant_id')('');\n      }\n\n      if (vars.assistant_id === conversation?.assistant_id) {\n        return setOption('assistant_id')(firstAssistant.id);\n      }\n\n      const currentAssistant = updatedList.find(\n        (assistant) => assistant.id === conversation?.assistant_id,\n      );\n\n      if (currentAssistant) {\n        setCurrentAssistantId(currentAssistant.id);\n      }\n\n      setCurrentAssistantId(firstAssistant.id);\n    },\n    onError: (error) => {\n      console.error(error);\n      showToast({\n        message: localize('com_ui_assistant_delete_error'),\n        status: 'error',\n      });\n    },\n  });\n\n  if (!assistant_id) {\n    return null;\n  }\n\n  if (activeModel?.length === 0 || activeModel === undefined) {\n    return null;\n  }\n\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <button\n          className={cn(\n            'btn btn-neutral border-token-border-light relative h-9 rounded-lg font-medium',\n            removeFocusOutlines,\n          )}\n          type=\"button\"\n        >\n          <div className=\"flex w-full items-center justify-center gap-2 text-red-500\">\n            <TrashIcon />\n          </div>\n        </button>\n      </DialogTrigger>\n      <DialogTemplate\n        title={localize('com_ui_delete') + ' ' + localize('com_ui_assistant')}\n        className=\"max-w-[450px]\"\n        main={\n          <>\n            <div className=\"flex w-full flex-col items-center gap-2\">\n              <div className=\"grid w-full items-center gap-2\">\n                <Label htmlFor=\"delete-assistant\" className=\"text-left text-sm font-medium\">\n                  {localize('com_ui_delete_assistant_confirm')}\n                </Label>\n              </div>\n            </div>\n          </>\n        }\n        selection={{\n          selectHandler: () =>\n            deleteAssistant.mutate({ assistant_id, model: activeModel, endpoint }),\n          selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white',\n          selectText: localize('com_ui_delete'),\n        }}\n      />\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/ImageVision.tsx",
    "content": "import { useFormContext, Controller } from 'react-hook-form';\nimport { Capabilities } from '~/data-provider/data-provider/src';\nimport type { AssistantForm } from '~/common';\nimport { Checkbox, QuestionMark } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nexport default function ImageVision() {\n  const localize = useLocalize();\n  const methods = useFormContext<AssistantForm>();\n  const { control, setValue, getValues } = methods;\n\n  return (\n    <div className=\"flex items-center\">\n      <Controller\n        name={Capabilities.image_vision}\n        control={control}\n        render={({ field }) => (\n          <Checkbox\n            {...field}\n            checked={field.value}\n            onCheckedChange={field.onChange}\n            className=\"relative float-left  mr-2 inline-flex h-4 w-4 cursor-pointer\"\n            value={field.value.toString()}\n          />\n        )}\n      />\n      <label\n        className=\"form-check-label text-token-text-primary w-full cursor-pointer\"\n        htmlFor={Capabilities.image_vision}\n        onClick={() =>\n          setValue(Capabilities.image_vision, !getValues(Capabilities.image_vision), {\n            shouldDirty: true,\n          })\n        }\n      >\n        <div className=\"flex items-center\">{localize('com_assistants_image_vision')}</div>\n      </label>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/Images.tsx",
    "content": "import { useRef } from 'react';\nimport * as Popover from '@radix-ui/react-popover';\n\nexport function NoImage() {\n  return (\n    <div className=\"border-token-border-medium flex h-full w-full items-center justify-center rounded-full border-2 border-dashed border-black\">\n      <svg\n        stroke=\"currentColor\"\n        fill=\"none\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className=\"text-4xl\"\n        height=\"1em\"\n        width=\"1em\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n      </svg>\n    </div>\n  );\n}\n\nexport const AssistantAvatar = ({\n  url,\n  progress = 1,\n}: {\n  url?: string;\n  progress: number; // between 0 and 1\n}) => {\n  const radius = 55; // Radius of the SVG circle\n  const circumference = 2 * Math.PI * radius;\n\n  // Calculate the offset based on the loading progress\n  const offset = circumference - progress * circumference;\n  const circleCSSProperties = {\n    transition: 'stroke-dashoffset 0.3s linear',\n  };\n\n  return (\n    <div>\n      <div className=\"relative h-20 w-20 overflow-hidden rounded-full\">\n        <img\n          src={url}\n          className=\"bg-token-surface-secondary dark:bg-token-surface-tertiary h-full w-full rounded-full object-cover\"\n          alt=\"GPT\"\n          width=\"80\"\n          height=\"80\"\n          style={{ opacity: progress < 1 ? 0.4 : 1 }}\n        />\n        {progress < 1 && (\n          <div className=\"absolute inset-0 flex items-center justify-center bg-black/5 text-white\">\n            <svg width=\"120\" height=\"120\" viewBox=\"0 0 120 120\" className=\"h-6 w-6\">\n              <circle\n                className=\"origin-[50%_50%] -rotate-90 stroke-gray-400\"\n                strokeWidth=\"10\"\n                fill=\"transparent\"\n                r=\"55\"\n                cx=\"60\"\n                cy=\"60\"\n              />\n              <circle\n                className=\"origin-[50%_50%] -rotate-90 transition-[stroke-dashoffset]\"\n                stroke=\"currentColor\"\n                strokeWidth=\"10\"\n                strokeDasharray={`${circumference} ${circumference}`}\n                strokeDashoffset={offset}\n                fill=\"transparent\"\n                r=\"55\"\n                cx=\"60\"\n                cy=\"60\"\n                style={circleCSSProperties}\n              />\n            </svg>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport function AvatarMenu({\n  handleFileChange,\n}: {\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n  const fileInputRef = useRef<HTMLInputElement>(null);\n\n  const onItemClick = () => {\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <Popover.Portal>\n      <Popover.Content\n        className=\"flex min-w-[100px] max-w-xs flex-col rounded-xl border border-gray-400 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-850 dark:text-white\"\n        sideOffset={5}\n      >\n        <div\n          role=\"menuitem\"\n          className=\"group m-1.5 flex cursor-pointer gap-2 rounded p-2.5 text-sm hover:bg-gray-100 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-gray-800 dark:hover:bg-white/5\"\n          tabIndex={-1}\n          data-orientation=\"vertical\"\n          onClick={onItemClick}\n        >\n          Upload Photo\n        </div>\n        {/* <Popover.Close\n          role=\"menuitem\"\n          className=\"group m-1.5 flex cursor-pointer gap-2 rounded p-2.5 text-sm hover:bg-black/5 focus:ring-0 radix-disabled:pointer-events-none radix-disabled:opacity-50 dark:hover:bg-white/5\"\n          tabIndex={-1}\n          data-orientation=\"vertical\"\n        >\n          Use DALL·E\n        </Popover.Close> */}\n        <input\n          accept=\"image/png,.png,image/jpeg,.jpg,.jpeg,image/gif,.gif,image/webp,.webp\"\n          multiple={false}\n          type=\"file\"\n          style={{ display: 'none' }}\n          onChange={handleFileChange}\n          ref={fileInputRef}\n          tabIndex={-1}\n        />\n      </Popover.Content>\n    </Popover.Portal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/Knowledge.tsx",
    "content": "import { useState, useRef, useEffect } from 'react';\nimport {\n  mergeFileConfig,\n  retrievalMimeTypes,\n  fileConfig as defaultFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { AssistantsEndpoint, EndpointFileConfig } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport FileRow from '~/components/Chat/Input/Files/FileRow';\nimport { useGetFileConfig } from '~/data-provider';\nimport { useFileHandling } from '~/hooks/Files';\nimport useLocalize from '~/hooks/useLocalize';\nimport { useChatContext } from '~/Providers';\n\nconst CodeInterpreterFiles = ({ children }: { children: React.ReactNode }) => {\n  const localize = useLocalize();\n  return (\n    <div>\n      <div className=\"text-token-text-tertiary mb-2 text-xs\">\n        {localize('com_assistants_code_interpreter_files')}\n      </div>\n      {/* Files available to Code Interpreter only */}\n      <div className=\"flex flex-wrap gap-2\">{children}</div>\n    </div>\n  );\n};\n\nexport default function Knowledge({\n  endpoint,\n  assistant_id,\n  files: _files,\n}: {\n  endpoint: AssistantsEndpoint;\n  assistant_id: string;\n  files?: [string, ExtendedFile][];\n}) {\n  const localize = useLocalize();\n  const { setFilesLoading } = useChatContext();\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const [files, setFiles] = useState<Map<string, ExtendedFile>>(new Map());\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n  const { handleFileChange } = useFileHandling({\n    overrideEndpoint: endpoint,\n    additionalMetadata: { assistant_id },\n    fileSetter: setFiles,\n  });\n\n  useEffect(() => {\n    if (_files) {\n      setFiles(new Map(_files));\n    }\n  }, [_files]);\n\n  const endpointFileConfig = fileConfig.endpoints[endpoint] as EndpointFileConfig | undefined;\n  const isUploadDisabled = endpointFileConfig?.disabled ?? false;\n\n  if (isUploadDisabled) {\n    return null;\n  }\n\n  const handleButtonClick = () => {\n    // necessary to reset the input\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n    fileInputRef.current?.click();\n  };\n\n  return (\n    <div className=\"mb-6\">\n      <div className=\"mb-1.5 flex items-center\">\n        <span>\n          <label className=\"text-token-text-primary block font-medium\">\n            {assistant_id\n              ? localize('com_assistants_knowledge')\n              : localize('com_assistants_knowledge_disabled')}\n          </label>\n        </span>\n      </div>\n      <div className=\"flex flex-col gap-4\">\n        <div className=\"text-token-text-tertiary rounded-lg\">\n          {assistant_id ? localize('com_assistants_knowledge_info') : ''}\n        </div>\n        {/* Files available to both tools */}\n        <FileRow\n          files={files}\n          setFiles={setFiles}\n          setFilesLoading={setFilesLoading}\n          assistant_id={assistant_id}\n          fileFilter={(file: ExtendedFile) =>\n            retrievalMimeTypes.some((regex) => regex.test(file.type ?? ''))\n          }\n          Wrapper={({ children }) => <div className=\"flex flex-wrap gap-2\">{children}</div>}\n        />\n        <FileRow\n          files={files}\n          setFiles={setFiles}\n          setFilesLoading={setFilesLoading}\n          assistant_id={assistant_id}\n          fileFilter={(file: ExtendedFile) =>\n            !retrievalMimeTypes.some((regex) => regex.test(file.type ?? ''))\n          }\n          Wrapper={CodeInterpreterFiles}\n        />\n        <div>\n          <button\n            type=\"button\"\n            disabled={!assistant_id}\n            className=\"btn btn-neutral border-token-border-light relative h-8 rounded-lg font-medium\"\n            onClick={handleButtonClick}\n          >\n            <div className=\"flex w-full items-center justify-center gap-2\">\n              <input\n                multiple={true}\n                type=\"file\"\n                style={{ display: 'none' }}\n                tabIndex={-1}\n                ref={fileInputRef}\n                disabled={!assistant_id}\n                onChange={handleFileChange}\n              />\n              {localize('com_ui_upload_files')}\n            </div>\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/PanelSwitch.tsx",
    "content": "import { useState, useEffect, useMemo } from 'react';\nimport { defaultAssistantsVersion } from '~/data-provider/data-provider/src';\nimport type { Action, TEndpointsConfig, AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { ActionsEndpoint } from '~/common';\nimport {\n  useGetActionsQuery,\n  useGetEndpointsQuery,\n  useGetAssistantDocsQuery,\n} from '~/data-provider';\nimport AssistantPanel from './AssistantPanel';\nimport { useChatContext } from '~/Providers';\nimport ActionsPanel from './ActionsPanel';\nimport { Panel } from '~/common';\n\nexport default function PanelSwitch() {\n  const { conversation, index } = useChatContext();\n  const [activePanel, setActivePanel] = useState(Panel.builder);\n  const [action, setAction] = useState<Action | undefined>(undefined);\n  const [currentAssistantId, setCurrentAssistantId] = useState<string | undefined>(\n    conversation?.assistant_id,\n  );\n\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n  const { data: actions = [] } = useGetActionsQuery(conversation?.endpoint as ActionsEndpoint);\n  const { data: documentsMap = null } = useGetAssistantDocsQuery(conversation?.endpoint ?? '', {\n    select: (data) => new Map(data.map((dbA) => [dbA.assistant_id, dbA])),\n  });\n\n  const assistantsConfig = useMemo(\n    () => endpointsConfig?.[conversation?.endpoint ?? ''],\n    [conversation?.endpoint, endpointsConfig],\n  );\n\n  useEffect(() => {\n    const currentId = conversation?.assistant_id ?? '';\n    if (currentId) {\n      setCurrentAssistantId(currentId);\n    }\n  }, [conversation?.assistant_id]);\n\n  if (!conversation?.endpoint) {\n    return null;\n  }\n\n  const version = assistantsConfig?.version ?? defaultAssistantsVersion[conversation.endpoint];\n\n  if (activePanel === Panel.actions || action) {\n    return (\n      <ActionsPanel\n        index={index}\n        action={action}\n        actions={actions}\n        setAction={setAction}\n        activePanel={activePanel}\n        documentsMap={documentsMap}\n        setActivePanel={setActivePanel}\n        assistant_id={currentAssistantId}\n        setCurrentAssistantId={setCurrentAssistantId}\n        endpoint={conversation.endpoint as AssistantsEndpoint}\n        version={version}\n      />\n    );\n  } else if (activePanel === Panel.builder) {\n    return (\n      <AssistantPanel\n        index={index}\n        activePanel={activePanel}\n        action={action}\n        actions={actions}\n        setAction={setAction}\n        documentsMap={documentsMap}\n        setActivePanel={setActivePanel}\n        assistant_id={currentAssistantId}\n        setCurrentAssistantId={setCurrentAssistantId}\n        endpoint={conversation.endpoint as AssistantsEndpoint}\n        assistantsConfig={assistantsConfig}\n        version={version}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Builder/Retrieval.tsx",
    "content": "import { useEffect, useMemo } from 'react';\nimport { Capabilities } from '~/data-provider/data-provider/src';\nimport type { AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport { useFormContext, Controller, useWatch } from 'react-hook-form';\nimport {\n  Checkbox,\n  HoverCard,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n} from '~/components/ui';\nimport OptionHover from '~/components/SidePanel/Parameters/OptionHover';\nimport { CircleHelpIcon } from '~/components/svg';\nimport type { AssistantForm } from '~/common';\nimport { useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils/';\n\nexport default function Retrieval({\n  version,\n  retrievalModels,\n}: {\n  version: number | string;\n  retrievalModels: Set<string>;\n  endpoint: AssistantsEndpoint;\n}) {\n  const localize = useLocalize();\n  const methods = useFormContext<AssistantForm>();\n  const { control, setValue, getValues } = methods;\n  const model = useWatch({ control, name: 'model' });\n  const assistant = useWatch({ control, name: 'assistant' });\n\n  const vectorStores = useMemo(() => {\n    if (typeof assistant === 'string') {\n      return [];\n    }\n    return assistant.tool_resources?.file_search;\n  }, [assistant]);\n\n  const isDisabled = useMemo(() => !retrievalModels.has(model), [model, retrievalModels]);\n\n  useEffect(() => {\n    if (model && isDisabled) {\n      setValue(Capabilities.retrieval, false);\n    }\n  }, [model, setValue, isDisabled]);\n\n  return (\n    <>\n      <HoverCard openDelay={50}>\n        <div className=\"flex items-center\">\n          <Controller\n            name={Capabilities.retrieval}\n            control={control}\n            render={({ field }) => (\n              <Checkbox\n                {...field}\n                checked={field.value}\n                disabled={isDisabled}\n                onCheckedChange={field.onChange}\n                className=\"relative float-left mr-2 inline-flex h-4 w-4 cursor-pointer\"\n                value={field.value.toString()}\n              />\n            )}\n          />\n          <div className=\"flex items-center space-x-2\">\n            <label\n              className={cn(\n                'form-check-label text-token-text-primary w-full select-none',\n                isDisabled ? 'cursor-no-drop opacity-50' : 'cursor-pointer',\n              )}\n              htmlFor={Capabilities.retrieval}\n              onClick={() =>\n                retrievalModels.has(model) &&\n                setValue(Capabilities.retrieval, !getValues(Capabilities.retrieval), {\n                  shouldDirty: true,\n                })\n              }\n            >\n              {version == 1\n                ? localize('com_assistants_retrieval')\n                : localize('com_assistants_file_search')}\n            </label>\n            <HoverCardTrigger>\n              <CircleHelpIcon className=\"h-5 w-5 text-gray-500\" />\n            </HoverCardTrigger>\n          </div>\n          <HoverCardPortal>\n            <HoverCardContent side={ESide.Top} disabled={isDisabled} className=\"ml-16 w-80\">\n              <div className=\"space-y-2\">\n                <p className=\"text-sm text-gray-600 dark:text-gray-300\">\n                  {version == 2 && localize('com_assistants_file_search_info')}\n                </p>\n              </div>\n            </HoverCardContent>\n          </HoverCardPortal>\n          <OptionHover\n            side={ESide.Top}\n            disabled={!isDisabled}\n            description=\"com_assistants_non_retrieval_model\"\n            langCode={true}\n            sideOffset={20}\n            className=\"ml-16\"\n          />\n        </div>\n      </HoverCard>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Files/Panel.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport { useGetFiles } from '~/data-provider';\nimport { columns } from './PanelColumns';\nimport DataTable from './PanelTable';\n\nexport default function FilesPanel() {\n  const { data: files = [] } = useGetFiles<TFile[]>();\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden\">\n      <DataTable columns={columns} data={files} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Files/PanelColumns.tsx",
    "content": "import { ArrowUpDown } from 'lucide-react';\nimport type { ColumnDef } from '@tanstack/react-table';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport PanelFileCell from './PanelFileCell';\nimport { Button } from '~/components/ui';\nimport { formatDate } from '~/utils';\n\nexport const columns: ColumnDef<TFile>[] = [\n  {\n    accessorKey: 'filename',\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          className=\"hover:bg-surface-hover\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}\n        >\n          Name\n          <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n        </Button>\n      );\n    },\n    meta: {\n      size: '150px',\n    },\n    cell: ({ row }) => <PanelFileCell row={row} />,\n  },\n  {\n    accessorKey: 'updatedAt',\n    meta: {\n      size: '10%',\n    },\n    header: ({ column }) => {\n      return (\n        <Button\n          variant=\"ghost\"\n          className=\"hover:bg-surface-hover\"\n          onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}\n        >\n          Date\n          <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n        </Button>\n      );\n    },\n    cell: ({ row }) => (\n      <span className=\"flex justify-end text-xs\">\n        {formatDate(row.original.updatedAt?.toString() ?? '')}\n      </span>\n    ),\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Files/PanelFileCell.tsx",
    "content": "import type { Row } from '@tanstack/react-table';\nimport type { TFile } from '~/data-provider/data-provider/src';\nimport ImagePreview from '~/components/Chat/Input/Files/ImagePreview';\nimport FilePreview from '~/components/Chat/Input/Files/FilePreview';\nimport { getFileType } from '~/utils';\n\nexport default function PanelFileCell({ row }: { row: Row<TFile | undefined> }) {\n  const file = row.original;\n\n  return (\n    <div className=\"flex w-full items-center gap-2\">\n      {file?.type.startsWith('image') === true ? (\n        <ImagePreview\n          url={file.filepath}\n          className=\"h-10 w-10 flex-shrink-0\"\n          source={file.source}\n          alt={file.filename}\n        />\n      ) : (\n        <FilePreview fileType={getFileType(file?.type)} file={file} />\n      )}\n      <div className=\"min-w-0 flex-1 overflow-hidden\">\n        <span className=\"block w-full overflow-hidden truncate text-ellipsis whitespace-nowrap text-xs\">\n          {file?.filename}\n        </span>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Files/PanelTable.tsx",
    "content": "import { useState, useCallback, useMemo } from 'react';\nimport { ArrowUpLeft } from 'lucide-react';\nimport { useSetRecoilState } from 'recoil';\nimport {\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  useReactTable,\n  type ColumnDef,\n  type SortingState,\n  type VisibilityState,\n  type ColumnFiltersState,\n} from '@tanstack/react-table';\nimport {\n  fileConfig as defaultFileConfig,\n  checkOpenAIStorage,\n  mergeFileConfig,\n  megabyte,\n  isAssistantsEndpoint,\n  type TFile,\n} from '~/data-provider/data-provider/src';\n\nimport {\n  Button,\n  Input,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from '~/components/ui';\nimport { useFileMapContext, useChatContext, useToastContext } from '~/Providers';\nimport { useLocalize, useUpdateFiles } from '~/hooks';\nimport { useGetFileConfig } from '~/data-provider';\nimport store from '~/store';\n\ninterface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nexport default function DataTable<TData, TValue>({ columns, data }: DataTableProps<TData, TValue>) {\n  const localize = useLocalize();\n  const [sorting, setSorting] = useState<SortingState>([]);\n  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n  const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n  const [{ pageIndex, pageSize }, setPagination] = useState({ pageIndex: 0, pageSize: 10 });\n  const setShowFiles = useSetRecoilState(store.showFiles);\n\n  const pagination = useMemo(\n    () => ({\n      pageIndex,\n      pageSize,\n    }),\n    [pageIndex, pageSize],\n  );\n\n  const table = useReactTable({\n    data,\n    columns,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      pagination,\n    },\n    onSortingChange: setSorting,\n    onPaginationChange: setPagination,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    onColumnFiltersChange: setColumnFilters,\n    getFilteredRowModel: getFilteredRowModel(),\n    onColumnVisibilityChange: setColumnVisibility,\n    getPaginationRowModel: getPaginationRowModel(),\n    defaultColumn: {\n      minSize: 0,\n      size: 10,\n      maxSize: 10,\n      enableResizing: true,\n    },\n  });\n\n  const fileMap = useFileMapContext();\n  const { showToast } = useToastContext();\n  const { setFiles, conversation } = useChatContext();\n  const { data: fileConfig = defaultFileConfig } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n  const { addFile } = useUpdateFiles(setFiles);\n\n  const handleFileClick = useCallback(\n    (file: TFile) => {\n      if (!fileMap?.[file.file_id] || !conversation?.endpoint) {\n        showToast({\n          message: localize('com_ui_attach_error'),\n          status: 'error',\n        });\n        return;\n      }\n\n      const fileData = fileMap[file.file_id];\n      const endpoint = conversation.endpoint;\n\n      if (!fileData.source) {\n        return;\n      }\n\n      const isOpenAIStorage = checkOpenAIStorage(fileData.source);\n      const isAssistants = isAssistantsEndpoint(endpoint);\n\n      if (isOpenAIStorage && !isAssistants) {\n        showToast({\n          message: localize('com_ui_attach_error_openai'),\n          status: 'error',\n        });\n        return;\n      }\n\n      if (!isOpenAIStorage && isAssistants) {\n        showToast({\n          message: localize('com_ui_attach_warn_endpoint'),\n          status: 'warning',\n        });\n      }\n\n      const { fileSizeLimit, supportedMimeTypes } =\n        fileConfig.endpoints[endpoint] ?? fileConfig.endpoints.default;\n\n      if (fileData.bytes > fileSizeLimit) {\n        showToast({\n          message: `${localize('com_ui_attach_error_size')} ${\n            fileSizeLimit / megabyte\n          } MB (${endpoint})`,\n          status: 'error',\n        });\n        return;\n      }\n\n      if (!defaultFileConfig.checkType(file.type, supportedMimeTypes)) {\n        showToast({\n          message: `${localize('com_ui_attach_error_type')} ${file.type} (${endpoint})`,\n          status: 'error',\n        });\n        return;\n      }\n\n      addFile({\n        progress: 1,\n        attached: true,\n        file_id: fileData.file_id,\n        filepath: fileData.filepath,\n        preview: fileData.filepath,\n        type: fileData.type,\n        height: fileData.height,\n        width: fileData.width,\n        filename: fileData.filename,\n        source: fileData.source,\n        size: fileData.bytes,\n      });\n    },\n    [addFile, fileMap, conversation, localize, showToast, fileConfig.endpoints],\n  );\n\n  const filenameFilter = table.getColumn('filename')?.getFilterValue() as string;\n\n  return (\n    <div role=\"region\" aria-label={localize('com_files_table')} className=\"mt-2 space-y-2\">\n      <div className=\"flex items-center gap-4\">\n        <Input\n          placeholder={localize('com_files_filter')}\n          value={filenameFilter ?? ''}\n          onChange={(event) => table.getColumn('filename')?.setFilterValue(event.target.value)}\n          aria-label={localize('com_files_filter')}\n        />\n      </div>\n\n      <div className=\"rounded-lg border border-border-light bg-transparent shadow-sm transition-colors\">\n        <div className=\"overflow-x-auto\">\n          <Table>\n            <TableHeader>\n              {table.getHeaderGroups().map((headerGroup) => (\n                <TableRow key={headerGroup.id} className=\"border-b border-border-light\">\n                  {headerGroup.headers.map((header, index) => (\n                    <TableHead\n                      key={header.id}\n                      style={{ width: index === 0 ? '75%' : '25%' }}\n                      className=\"bg-surface-secondary py-3 text-left text-sm font-medium text-text-secondary\"\n                    >\n                      <div className=\"px-4\">\n                        {header.isPlaceholder\n                          ? null\n                          : flexRender(header.column.columnDef.header, header.getContext())}\n                      </div>\n                    </TableHead>\n                  ))}\n                </TableRow>\n              ))}\n            </TableHeader>\n            <TableBody>\n              {table.getRowModel().rows.length ? (\n                table.getRowModel().rows.map((row) => (\n                  <TableRow\n                    key={row.id}\n                    data-state={row.getIsSelected() && 'selected'}\n                    className=\"border-b border-border-light transition-colors hover:bg-surface-secondary [&:last-child]:border-0\"\n                  >\n                    {row.getVisibleCells().map((cell) => {\n                      const isFilenameCell = cell.column.id === 'filename';\n\n                      return (\n                        <TableCell\n                          style={{\n                            width: '150px',\n                            maxWidth: '150px',\n                            overflow: 'hidden',\n                            textOverflow: 'ellipsis',\n                            whiteSpace: 'nowrap',\n                          }}\n                          data-skip-refocus=\"true\"\n                          key={cell.id}\n                          role={isFilenameCell ? 'button' : undefined}\n                          tabIndex={isFilenameCell ? 0 : undefined}\n                          onClick={(e) => {\n                            if (isFilenameCell) {\n                              const clickedElement = e.target as HTMLElement;\n                              // Check if clicked element is within cell and not a button/link\n                              if (\n                                clickedElement.closest('td') &&\n                                !clickedElement.closest('button, a')\n                              ) {\n                                e.preventDefault();\n                                e.stopPropagation();\n                                handleFileClick(row.original as TFile);\n                              }\n                            }\n                          }}\n                          onKeyDown={(e) => {\n                            if (isFilenameCell && (e.key === 'Enter' || e.key === ' ')) {\n                              const clickedElement = e.target as HTMLElement;\n                              if (\n                                clickedElement.closest('td') &&\n                                !clickedElement.closest('button, a')\n                              ) {\n                                e.preventDefault();\n                                e.stopPropagation();\n                                handleFileClick(row.original as TFile);\n                              }\n                            }\n                          }}\n                        >\n                          {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                        </TableCell>\n                      );\n                    })}\n                  </TableRow>\n                ))\n              ) : (\n                <TableRow>\n                  <TableCell\n                    colSpan={columns.length}\n                    className=\"h-24 text-center text-sm text-text-secondary\"\n                  >\n                    {localize('com_files_no_results')}\n                  </TableCell>\n                </TableRow>\n              )}\n            </TableBody>\n          </Table>\n        </div>\n      </div>\n\n      <div className=\"flex items-center justify-between\">\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          onClick={() => setShowFiles(true)}\n          aria-label={localize('com_sidepanel_manage_files')}\n        >\n          <ArrowUpLeft className=\"h-4 w-4\" aria-hidden=\"true\" />\n          <span className=\"ml-2\">{localize('com_sidepanel_manage_files')}</span>\n        </Button>\n\n        <div className=\"flex items-center gap-2\" role=\"navigation\" aria-label=\"Pagination\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.previousPage()}\n            disabled={!table.getCanPreviousPage()}\n            aria-label={localize('com_ui_prev')}\n          >\n            {localize('com_ui_prev')}\n          </Button>\n          <div aria-live=\"polite\" className=\"text-sm\">\n            {`${pageIndex + 1} / ${table.getPageCount()}`}\n          </div>\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => table.nextPage()}\n            disabled={!table.getCanNextPage()}\n            aria-label={localize('com_ui_next')}\n          >\n            {localize('com_ui_next')}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/ModelSwitcher.tsx",
    "content": "import { useMemo, useRef, useCallback } from 'react';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { SwitcherProps } from '~/common';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport MinimalIcon from '~/components/Endpoints/MinimalIcon';\nimport { useSetIndexOptions, useLocalize } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport { mainTextareaId } from '~/common';\n\nexport default function ModelSwitcher({ isCollapsed }: SwitcherProps) {\n  const localize = useLocalize();\n  const modelsQuery = useGetModelsQuery();\n  const { conversation } = useChatContext();\n  const { setOption } = useSetIndexOptions();\n  const timeoutIdRef = useRef<NodeJS.Timeout>();\n\n  const { endpoint, model = null } = conversation ?? {};\n  const models = useMemo(() => {\n    return (modelsQuery.data?.[endpoint ?? ''] ?? []).map((model) => ({\n      label: model,\n      value: model,\n    }));\n  }, [modelsQuery, endpoint]);\n\n  const setModel = useCallback(\n    (model: string) => {\n      setOption('model')(model);\n      clearTimeout(timeoutIdRef.current);\n      timeoutIdRef.current = setTimeout(() => {\n        const textarea = document.getElementById(mainTextareaId);\n        if (textarea) {\n          textarea.focus();\n        }\n      }, 150);\n    },\n    [setOption],\n  );\n\n  return (\n    <ControlCombobox\n      displayValue={model ?? ''}\n      selectPlaceholder={localize('com_ui_select_model')}\n      searchPlaceholder={localize('com_ui_select_search_model')}\n      isCollapsed={isCollapsed}\n      ariaLabel={'model'}\n      selectedValue={model ?? ''}\n      setValue={setModel}\n      items={models}\n      SelectIcon={\n        <MinimalIcon\n          isCreatedByUser={false}\n          endpoint={endpoint}\n          // iconURL={} // for future preset icons\n        />\n      }\n    />\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Nav.tsx",
    "content": "import { useState } from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport type { NavLink, NavProps } from '~/common';\nimport { Accordion, AccordionItem, AccordionContent } from '~/components/ui/Accordion';\nimport { TooltipAnchor, Button } from '~/components';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\nexport default function Nav({ links, isCollapsed, resize, defaultActive }: NavProps) {\n  const localize = useLocalize();\n  const [active, _setActive] = useState<string | undefined>(defaultActive);\n  const getVariant = (link: NavLink) => (link.id === active ? 'default' : 'ghost');\n\n  const setActive = (id: string) => {\n    localStorage.setItem('side:active-panel', id + '');\n    _setActive(id);\n  };\n\n  return (\n    <div\n      data-collapsed={isCollapsed}\n      className=\"bg-token-sidebar-surface-primary hide-scrollbar group flex-shrink-0 overflow-x-hidden\"\n    >\n      <div className=\"h-full\">\n        <div className=\"flex h-full min-h-0 flex-col\">\n          <div className=\"flex h-full min-h-0 flex-col opacity-100 transition-opacity\">\n            <div className=\"scrollbar-trigger relative h-full w-full flex-1 items-start border-white/20\">\n              <div className=\"flex h-full w-full flex-col gap-1 px-3 pb-3.5 group-[[data-collapsed=true]]:items-center group-[[data-collapsed=true]]:justify-center group-[[data-collapsed=true]]:px-2\">\n                {links.map((link, index) => {\n                  const variant = getVariant(link);\n                  return isCollapsed ? (\n                    <TooltipAnchor\n                      description={localize(link.title)}\n                      side=\"left\"\n                      key={`nav-link-${index}`}\n                      render={\n                        <Button\n                          variant=\"ghost\"\n                          size=\"icon\"\n                          onClick={(e) => {\n                            if (link.onClick) {\n                              link.onClick(e);\n                              setActive('');\n                              return;\n                            }\n                            setActive(link.id);\n                            resize && resize(25);\n                          }}\n                        >\n                          <link.icon className=\"h-4 w-4 text-text-secondary\" />\n                          <span className=\"sr-only\">{localize(link.title)}</span>\n                        </Button>\n                      }\n                    />\n                  ) : (\n                    <Accordion\n                      key={index}\n                      type=\"single\"\n                      value={active}\n                      onValueChange={setActive}\n                      collapsible\n                    >\n                      <AccordionItem value={link.id} className=\"w-full border-none\">\n                        <AccordionPrimitive.Header asChild>\n                          <AccordionPrimitive.Trigger asChild>\n                            <Button\n                              variant=\"outline\"\n                              size=\"sm\"\n                              className=\"w-full justify-start bg-transparent text-text-secondary data-[state=open]:bg-surface-secondary data-[state=open]:text-text-primary\"\n                              onClick={(e) => {\n                                if (link.onClick) {\n                                  link.onClick(e);\n                                  setActive('');\n                                }\n                              }}\n                            >\n                              <link.icon className=\"mr-2 h-4 w-4\" />\n                              {localize(link.title)}\n                              {link.label != null && link.label && (\n                                <span\n                                  className={cn(\n                                    'ml-auto opacity-100 transition-all duration-300 ease-in-out',\n                                    variant === 'default' ? 'text-text-primary' : '',\n                                  )}\n                                >\n                                  {link.label}\n                                </span>\n                              )}\n                            </Button>\n                          </AccordionPrimitive.Trigger>\n                        </AccordionPrimitive.Header>\n\n                        <AccordionContent className=\"w-full text-text-primary\">\n                          {link.Component && <link.Component />}\n                        </AccordionContent>\n                      </AccordionItem>\n                    </Accordion>\n                  );\n                })}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicCheckbox.tsx",
    "content": "import { useMemo, useState } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, Checkbox, HoverCard, HoverCardTrigger } from '~/components/ui';\nimport { TranslationKeys, useLocalize, useParameterEffects } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nfunction DynamicCheckbox({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  readonly = false,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const [inputValue, setInputValue] = useState<boolean>(!!(defaultValue as boolean | undefined));\n\n  const selectedValue = useMemo(() => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      return inputValue;\n    }\n\n    return conversation?.[settingKey] ?? defaultValue;\n  }, [conversation, defaultValue, optionType, settingKey, inputValue]);\n\n  const handleCheckedChange = (checked: boolean) => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      setInputValue(checked);\n      return;\n    }\n    setOption(settingKey)(checked);\n  };\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue,\n    conversation,\n    inputValue,\n    setInputValue,\n    preventDelayedUpdate: true,\n  });\n\n  return (\n    <div\n      className={`flex flex-col items-center justify-start gap-6 ${\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full'\n      }`}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center\">\n          <div className=\"flex justify-start gap-4\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-checkbox`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default')}:{' '}\n                  {defaultValue != null ? localize('com_ui_yes') : localize('com_ui_no')})\n                </small>\n              )}\n            </Label>\n            <Checkbox\n              id={`${settingKey}-dynamic-checkbox`}\n              disabled={readonly}\n              checked={selectedValue}\n              onCheckedChange={handleCheckedChange}\n              className=\"mt-[2px] focus:ring-opacity-20 dark:border-gray-500 dark:bg-gray-700 dark:text-gray-50 dark:focus:ring-gray-600 dark:focus:ring-opacity-50 dark:focus:ring-offset-0\"\n            />\n          </div>\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicCheckbox;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicCombobox.tsx",
    "content": "import { useMemo, useState, useCallback } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, HoverCard, HoverCardTrigger } from '~/components/ui';\nimport ControlCombobox from '~/components/ui/ControlCombobox';\nimport { TranslationKeys, useLocalize, useParameterEffects } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils';\n\nfunction DynamicCombobox({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  options: _options,\n  items: _items,\n  showLabel = true,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  searchPlaceholderCode = false,\n  selectPlaceholderCode = false,\n  conversation,\n  isCollapsed = false,\n  SelectIcon = null,\n  selectPlaceholder = '',\n  searchPlaceholder = '',\n}: DynamicSettingProps & { isCollapsed?: boolean; SelectIcon?: React.ReactNode }) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const [inputValue, setInputValue] = useState<string | null>(null);\n\n  const selectedValue = useMemo(() => {\n    if (optionType === OptionTypes.Custom) {\n      return inputValue;\n    }\n    return conversation?.[settingKey] ?? defaultValue;\n  }, [conversation, defaultValue, optionType, settingKey, inputValue]);\n\n  const items = useMemo(() => {\n    if (_items != null) {\n      return _items;\n    }\n    return (_options ?? []).map((option) => ({\n      label: option,\n      value: option,\n    }));\n  }, [_options, _items]);\n\n  const handleChange = useCallback(\n    (value: string) => {\n      if (optionType === OptionTypes.Custom) {\n        setInputValue(value);\n      } else {\n        setOption(settingKey)(value);\n      }\n    },\n    [optionType, setOption, settingKey],\n  );\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue,\n    conversation,\n    inputValue,\n    setInputValue,\n    preventDelayedUpdate: true,\n  });\n\n  const options = items ?? _options ?? [];\n  if (options.length === 0) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'flex flex-col items-center justify-start gap-6',\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full',\n      )}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          {showLabel === true && (\n            <div className=\"flex w-full justify-between\">\n              <Label\n                htmlFor={`${settingKey}-dynamic-combobox`}\n                className=\"text-left text-sm font-medium\"\n              >\n                {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}\n                {showDefault && (\n                  <small className=\"opacity-40\">\n                    ({localize('com_endpoint_default')}: {defaultValue})\n                  </small>\n                )}\n              </Label>\n            </div>\n          )}\n          <ControlCombobox\n            displayValue={selectedValue}\n            selectPlaceholder={\n              selectPlaceholderCode === true ? localize(selectPlaceholder as TranslationKeys) : selectPlaceholder\n            }\n            searchPlaceholder={\n              searchPlaceholderCode === true ? localize(searchPlaceholder as TranslationKeys) : searchPlaceholder\n            }\n            isCollapsed={isCollapsed}\n            ariaLabel={settingKey}\n            selectedValue={selectedValue ?? ''}\n            setValue={handleChange}\n            items={items}\n            SelectIcon={SelectIcon}\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicCombobox;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicDropdown.tsx",
    "content": "import { useMemo, useState } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, HoverCard, HoverCardTrigger, SelectDropDown } from '~/components/ui';\nimport { TranslationKeys, useLocalize, useParameterEffects } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils';\n\nfunction DynamicDropdown({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  options,\n  // type: _type,\n  readonly = false,\n  showLabel = true,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  placeholder = '',\n  placeholderCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const [inputValue, setInputValue] = useState<string | null>(null);\n\n  const selectedValue = useMemo(() => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      return inputValue;\n    }\n\n    return conversation?.[settingKey] ?? defaultValue;\n  }, [conversation, defaultValue, optionType, settingKey, inputValue]);\n\n  const handleChange = (value: string) => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      setInputValue(value);\n      return;\n    }\n    setOption(settingKey)(value);\n  };\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue,\n    conversation,\n    inputValue,\n    setInputValue,\n    preventDelayedUpdate: true,\n  });\n\n  if (!options || options.length === 0) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'flex flex-col items-center justify-start gap-6',\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full',\n      )}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          {showLabel === true && (\n            <div className=\"flex w-full justify-between\">\n              <Label\n                htmlFor={`${settingKey}-dynamic-dropdown`}\n                className=\"text-left text-sm font-medium\"\n              >\n                {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}\n                {showDefault && (\n                  <small className=\"opacity-40\">\n                    ({localize('com_endpoint_default')}: {defaultValue})\n                  </small>\n                )}\n              </Label>\n            </div>\n          )}\n          <SelectDropDown\n            showLabel={false}\n            emptyTitle={true}\n            disabled={readonly}\n            value={selectedValue}\n            setValue={handleChange}\n            availableValues={options}\n            containerClassName=\"w-full\"\n            id={`${settingKey}-dynamic-dropdown`}\n            placeholder={placeholderCode ? localize(placeholder as TranslationKeys) ?? placeholder : placeholder}\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicDropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicInput.tsx",
    "content": "import { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { useLocalize, useDebouncedInput, useParameterEffects, TranslationKeys } from '~/hooks';\nimport { Label, Input, HoverCard, HoverCardTrigger } from '~/components/ui';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\nimport { cn } from '~/utils';\n\nfunction DynamicInput({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  type = 'string',\n  columnSpan,\n  setOption,\n  optionType,\n  placeholder = '',\n  readonly = false,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  placeholderCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n\n  const [setInputValue, inputValue, setLocalValue] = useDebouncedInput<string | number>({\n    optionKey: optionType !== OptionTypes.Custom ? settingKey : undefined,\n    initialValue: optionType !== OptionTypes.Custom ? conversation?.[settingKey] : defaultValue,\n    setter: () => ({}),\n    setOption,\n  });\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue: typeof defaultValue === 'undefined' ? '' : defaultValue,\n    conversation,\n    inputValue,\n    setInputValue: setLocalValue,\n  });\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value;\n    if (type !== 'number') {\n      setInputValue(e);\n      return;\n    }\n\n    if (value === '') {\n      setInputValue(e);\n    } else if (!isNaN(Number(value))) {\n      setInputValue(e, true);\n    }\n  };\n\n  return (\n    <div\n      className={`flex flex-col items-center justify-start gap-6 ${\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full'\n      }`}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          <div className=\"flex w-full justify-between\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-input`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) || label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  (\n                  {typeof defaultValue === 'undefined' || !(defaultValue as string).length\n                    ? localize('com_endpoint_default_blank')\n                    : `${localize('com_endpoint_default')}: ${defaultValue}`}\n                  )\n                </small>\n              )}\n            </Label>\n          </div>\n          <Input\n            id={`${settingKey}-dynamic-input`}\n            disabled={readonly}\n            value={inputValue ?? defaultValue ?? ''}\n            onChange={handleInputChange}\n            placeholder={\n              placeholderCode\n                ? localize(placeholder as TranslationKeys) || placeholder\n                : placeholder\n            }\n            className={cn(\n              'flex h-10 max-h-10 w-full resize-none border-none bg-surface-secondary px-3 py-2',\n            )}\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={\n              descriptionCode\n                ? localize(description as TranslationKeys) || description\n                : description\n            }\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicInput;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicSlider.tsx",
    "content": "import { useMemo, useCallback } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, Slider, HoverCard, Input, InputNumber, HoverCardTrigger } from '~/components/ui';\nimport { useLocalize, useDebouncedInput, useParameterEffects, TranslationKeys } from '~/hooks';\nimport { cn, defaultTextProps, optionText } from '~/utils';\nimport { ESide, defaultDebouncedDelay } from '~/common';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\n\nfunction DynamicSlider({\n  label = '',\n  settingKey,\n  defaultValue,\n  range,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  options,\n  readonly = false,\n  showDefault = false,\n  includeInput = true,\n  labelCode = false,\n  descriptionCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const isEnum = useMemo(\n    () => (!range && options && options.length > 0) ?? false,\n    [options, range],\n  );\n\n  const [setInputValue, inputValue, setLocalValue] = useDebouncedInput<string | number>({\n    optionKey: optionType !== OptionTypes.Custom ? settingKey : undefined,\n    initialValue: optionType !== OptionTypes.Custom ? conversation?.[settingKey] : defaultValue,\n    setter: () => ({}),\n    setOption,\n    delay: isEnum ? 0 : defaultDebouncedDelay,\n  });\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue,\n    conversation,\n    inputValue,\n    setInputValue: setLocalValue,\n  });\n\n  const selectedValue = useMemo(() => {\n    if (isEnum) {\n      return conversation?.[settingKey] ?? defaultValue;\n    }\n    // TODO: custom logic, add to payload but not to conversation\n\n    return inputValue;\n  }, [conversation, defaultValue, settingKey, inputValue, isEnum]);\n\n  const enumToNumeric = useMemo(() => {\n    if (isEnum && options) {\n      return options.reduce((acc, mapping, index) => {\n        acc[mapping] = index;\n        return acc;\n      }, {} as Record<string, number>);\n    }\n    return {};\n  }, [isEnum, options]);\n\n  const valueToEnumOption = useMemo(() => {\n    if (isEnum && options) {\n      return options.reduce((acc, option, index) => {\n        acc[index] = option;\n        return acc;\n      }, {} as Record<number, string>);\n    }\n    return {};\n  }, [isEnum, options]);\n\n  const handleValueChange = useCallback(\n    (value: number) => {\n      if (isEnum) {\n        setInputValue(valueToEnumOption[value]);\n      } else {\n        setInputValue(value);\n      }\n    },\n    [isEnum, setInputValue, valueToEnumOption],\n  );\n\n  const max = useMemo(() => {\n    if (isEnum && options) {\n      return options.length - 1;\n    } else if (range) {\n      return range.max;\n    } else {\n      return 0;\n    }\n  }, [isEnum, options, range]);\n\n  if (!range && !isEnum) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'flex flex-col items-center justify-start gap-2',\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full',\n      )}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          <div className=\"flex w-full items-center justify-between\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-setting`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default')}: {defaultValue})\n                </small>\n              )}\n            </Label>\n            {includeInput && !isEnum ? (\n              <InputNumber\n                id={`${settingKey}-dynamic-setting-input-number`}\n                disabled={readonly}\n                value={inputValue ?? defaultValue}\n                onChange={(value) => setInputValue(Number(value))}\n                max={range ? range.max : (options?.length ?? 0) - 1}\n                min={range ? range.min : 0}\n                step={range ? range.step ?? 1 : 1}\n                controls={false}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            ) : (\n              <Input\n                id={`${settingKey}-dynamic-setting-input`}\n                disabled={readonly}\n                value={selectedValue ?? defaultValue}\n                onChange={() => ({})}\n                className={cn(\n                  defaultTextProps,\n                  cn(\n                    optionText,\n                    'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200',\n                  ),\n                )}\n              />\n            )}\n          </div>\n          <Slider\n            id={`${settingKey}-dynamic-setting-slider`}\n            disabled={readonly}\n            value={[\n              isEnum\n                ? enumToNumeric[(selectedValue as number) ?? '']\n                : (inputValue as number) ?? (defaultValue as number),\n            ]}\n            onValueChange={(value) => handleValueChange(value[0])}\n            onDoubleClick={() => setInputValue(defaultValue as string | number)}\n            max={max}\n            min={range ? range.min : 0}\n            step={range ? range.step ?? 1 : 1}\n            className=\"flex h-4 w-full\"\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicSlider;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicSwitch.tsx",
    "content": "import { useState, useMemo } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, Switch, HoverCard, HoverCardTrigger } from '~/components/ui';\nimport { TranslationKeys, useLocalize, useParameterEffects } from '~/hooks';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nfunction DynamicSwitch({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  readonly = false,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const [inputValue, setInputValue] = useState<boolean>(!!(defaultValue as boolean | undefined));\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue,\n    conversation,\n    inputValue,\n    setInputValue,\n    preventDelayedUpdate: true,\n  });\n\n  const selectedValue = useMemo(() => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      return inputValue;\n    }\n\n    return conversation?.[settingKey] ?? defaultValue;\n  }, [conversation, defaultValue, optionType, settingKey, inputValue]);\n\n  const handleCheckedChange = (checked: boolean) => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      setInputValue(checked);\n      return;\n    }\n    setOption(settingKey)(checked);\n  };\n\n  return (\n    <div\n      className={`flex flex-col items-center justify-start gap-6 ${\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full'\n      }`}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          <div className=\"flex justify-between\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-switch`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  ({localize('com_endpoint_default')}:{' '}\n                  {defaultValue != null ? 'com_ui_on' : 'com_ui_off'})\n                </small>\n              )}\n            </Label>\n          </div>\n          <Switch\n            id={`${settingKey}-dynamic-switch`}\n            checked={selectedValue}\n            onCheckedChange={handleCheckedChange}\n            disabled={readonly}\n            className=\"flex\"\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicSwitch;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicTags.tsx",
    "content": "import { useState, useMemo, useCallback, useRef } from 'react';\nimport { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, Input, HoverCard, HoverCardTrigger, Tag } from '~/components/ui';\nimport { useChatContext, useToastContext } from '~/Providers';\nimport { TranslationKeys, useLocalize, useParameterEffects } from '~/hooks';\nimport { cn, defaultTextProps } from '~/utils';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nfunction DynamicTags({\n  label = '',\n  settingKey,\n  defaultValue = [],\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  placeholder = '',\n  readonly = false,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  placeholderCode = false,\n  descriptionSide = ESide.Left,\n  conversation,\n  minTags,\n  maxTags,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n  const { showToast } = useToastContext();\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [tagText, setTagText] = useState<string>('');\n  const [tags, setTags] = useState<string[] | undefined>(\n    (defaultValue as string[] | undefined) ?? [],\n  );\n\n  const updateState = useCallback(\n    (update: string[]) => {\n      if (optionType === OptionTypes.Custom) {\n        // TODO: custom logic, add to payload but not to conversation\n        setTags(update);\n        return;\n      }\n      setOption(settingKey)(update);\n    },\n    [optionType, setOption, settingKey],\n  );\n\n  const onTagClick = useCallback(() => {\n    if (inputRef.current) {\n      inputRef.current.focus();\n    }\n  }, [inputRef]);\n\n  const currentTags: string[] | undefined = useMemo(() => {\n    if (optionType === OptionTypes.Custom) {\n      // TODO: custom logic, add to payload but not to conversation\n      return tags;\n    }\n\n    if (!conversation?.[settingKey]) {\n      return defaultValue ?? [];\n    }\n\n    return conversation[settingKey];\n  }, [conversation, defaultValue, optionType, settingKey, tags]);\n\n  const onTagRemove = useCallback(\n    (indexToRemove: number) => {\n      if (!currentTags) {\n        return;\n      }\n\n      if (minTags != null && currentTags.length <= minTags) {\n        showToast({\n          message: localize('com_ui_min_tags',{ 0: minTags + '' }),\n          status: 'warning',\n        });\n        return;\n      }\n      const update = currentTags.filter((_, index) => index !== indexToRemove);\n      updateState(update);\n    },\n    [localize, minTags, currentTags, showToast, updateState],\n  );\n\n  const onTagAdd = useCallback(() => {\n    if (!tagText) {\n      return;\n    }\n\n    let update = [...(currentTags ?? []), tagText];\n    if (maxTags != null && update.length > maxTags) {\n      showToast({\n        message: localize('com_ui_max_tags', { 0: maxTags + '' }),\n        status: 'warning',\n      });\n      update = update.slice(-maxTags);\n    }\n    updateState(update);\n    setTagText('');\n  }, [tagText, currentTags, updateState, maxTags, showToast, localize]);\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue: typeof defaultValue === 'undefined' ? [] : defaultValue,\n    inputValue: tags,\n    setInputValue: setTags,\n    preventDelayedUpdate: true,\n    conversation,\n  });\n\n  return (\n    <div\n      className={`flex flex-col items-center justify-start gap-6 ${\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full'\n      }`}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          <div className=\"flex w-full justify-between\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-input`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  (\n                  {typeof defaultValue === 'undefined' || !(defaultValue as string).length\n                    ? localize('com_endpoint_default_blank')\n                    : `${localize('com_endpoint_default')}: ${defaultValue}`}\n                  )\n                </small>\n              )}\n            </Label>\n          </div>\n          <div>\n            <div className=\"mb-2 flex flex-wrap break-all rounded-lg bg-surface-secondary\">\n              {currentTags && currentTags.length > 0 && (\n                <div className=\"flex w-full gap-1 p-1\">\n                  {currentTags.map((tag: string, index: number) => (\n                    <Tag\n                      key={`${tag}-${index}`}\n                      label={tag}\n                      onClick={onTagClick}\n                      onRemove={() => {\n                        onTagRemove(index);\n                        if (inputRef.current) {\n                          inputRef.current.focus();\n                        }\n                      }}\n                    />\n                  ))}\n                </div>\n              )}\n              <Input\n                ref={inputRef}\n                id={`${settingKey}-dynamic-input`}\n                disabled={readonly}\n                value={tagText}\n                onKeyDown={(e) => {\n                  if (!currentTags) {\n                    return;\n                  }\n                  if (e.key === 'Backspace' && !tagText) {\n                    onTagRemove(currentTags.length - 1);\n                  }\n                  if (e.key === 'Enter') {\n                    onTagAdd();\n                  }\n                }}\n                onChange={(e) => setTagText(e.target.value)}\n                placeholder={placeholderCode ? localize(placeholder as TranslationKeys) ?? placeholder : placeholder}\n                className={cn('flex h-10 max-h-10 border-none bg-surface-secondary px-3 py-2')}\n              />\n            </div>\n          </div>\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={descriptionSide as ESide}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicTags;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/DynamicTextarea.tsx",
    "content": "import { OptionTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport { Label, TextareaAutosize, HoverCard, HoverCardTrigger } from '~/components/ui';\nimport { useLocalize, useDebouncedInput, useParameterEffects, TranslationKeys } from '~/hooks';\nimport { cn, defaultTextProps } from '~/utils';\nimport { useChatContext } from '~/Providers';\nimport OptionHover from './OptionHover';\nimport { ESide } from '~/common';\n\nfunction DynamicTextarea({\n  label = '',\n  settingKey,\n  defaultValue,\n  description = '',\n  columnSpan,\n  setOption,\n  optionType,\n  placeholder = '',\n  readonly = false,\n  showDefault = false,\n  labelCode = false,\n  descriptionCode = false,\n  placeholderCode = false,\n  conversation,\n}: DynamicSettingProps) {\n  const localize = useLocalize();\n  const { preset } = useChatContext();\n\n  const [setInputValue, inputValue, setLocalValue] = useDebouncedInput<string | null>({\n    optionKey: optionType !== OptionTypes.Custom ? settingKey : undefined,\n    initialValue:\n      optionType !== OptionTypes.Custom\n        ? (conversation?.[settingKey] as string)\n        : (defaultValue as string),\n    setter: () => ({}),\n    setOption,\n  });\n\n  useParameterEffects({\n    preset,\n    settingKey,\n    defaultValue: typeof defaultValue === 'undefined' ? '' : defaultValue,\n    conversation,\n    inputValue,\n    setInputValue: setLocalValue,\n  });\n\n  return (\n    <div\n      className={`flex flex-col items-center justify-start gap-6 ${\n        columnSpan != null ? `col-span-${columnSpan}` : 'col-span-full'\n      }`}\n    >\n      <HoverCard openDelay={300}>\n        <HoverCardTrigger className=\"grid w-full items-center gap-2\">\n          <div className=\"flex w-full justify-between\">\n            <Label\n              htmlFor={`${settingKey}-dynamic-textarea`}\n              className=\"text-left text-sm font-medium\"\n            >\n              {labelCode ? localize(label as TranslationKeys) ?? label : label || settingKey}{' '}\n              {showDefault && (\n                <small className=\"opacity-40\">\n                  (\n                  {typeof defaultValue === 'undefined' || !(defaultValue as string).length\n                    ? localize('com_endpoint_default_blank')\n                    : `${localize('com_endpoint_default')}: ${defaultValue}`}\n                  )\n                </small>\n              )}\n            </Label>\n          </div>\n          <TextareaAutosize\n            id={`${settingKey}-dynamic-textarea`}\n            disabled={readonly}\n            value={inputValue ?? ''}\n            onChange={setInputValue}\n            placeholder={placeholderCode ? localize(placeholder as TranslationKeys) ?? placeholder : placeholder}\n            className={cn(\n              // TODO: configurable max height\n              'flex max-h-[138px] min-h-[100px] w-full resize-none rounded-lg bg-surface-secondary px-3 py-2 focus:outline-none',\n            )}\n          />\n        </HoverCardTrigger>\n        {description && (\n          <OptionHover\n            description={descriptionCode ? localize(description as TranslationKeys) ?? description : description}\n            side={ESide.Left}\n          />\n        )}\n      </HoverCard>\n    </div>\n  );\n}\n\nexport default DynamicTextarea;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/OptionHover.tsx",
    "content": "import React from 'react';\nimport { HoverCardPortal, HoverCardContent } from '~/components/ui';\nimport { TranslationKeys, useLocalize } from '~/hooks';\nimport { ESide } from '~/common';\n\ntype TOptionHoverProps = {\n  description: string;\n  langCode?: boolean;\n  sideOffset?: number;\n  disabled?: boolean;\n  side: ESide;\n  className?: string;\n};\n\nfunction OptionHover({\n  side,\n  description,\n  disabled,\n  langCode,\n  sideOffset = 30,\n  className,\n}: TOptionHoverProps) {\n  const localize = useLocalize();\n  if (disabled) {\n    return null;\n  }\n  const text = langCode ? localize(description as TranslationKeys) : description;\n  return (\n    <HoverCardPortal>\n      <HoverCardContent side={side} className={`z-[999] w-80 ${className}`} sideOffset={sideOffset}>\n        <div className=\"space-y-2\">\n          <p className=\"text-sm text-gray-600 dark:text-gray-300\">{text}</p>\n        </div>\n      </HoverCardContent>\n    </HoverCardPortal>\n  );\n}\n\nexport default OptionHover;\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/Panel.tsx",
    "content": "import { RotateCcw } from 'lucide-react';\nimport React, { useMemo, useState, useEffect, useCallback } from 'react';\nimport { excludedKeys, getSettingsKeys, tConvoUpdateSchema } from '~/data-provider/data-provider/src';\nimport type { TPreset } from '~/data-provider/data-provider/src';\nimport { SaveAsPresetDialog } from '~/components/Endpoints';\nimport { useSetIndexOptions, useLocalize } from '~/hooks';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { getEndpointField, logger } from '~/utils';\nimport { componentMapping } from './components';\nimport { useChatContext } from '~/Providers';\nimport { settings } from './settings';\n\nexport default function Parameters() {\n  const localize = useLocalize();\n  const { conversation, setConversation } = useChatContext();\n  const { setOption } = useSetIndexOptions();\n\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [preset, setPreset] = useState<TPreset | null>(null);\n\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n\n  const bedrockRegions = useMemo(() => {\n    return endpointsConfig?.[conversation?.endpoint ?? '']?.availableRegions ?? [];\n  }, [endpointsConfig, conversation?.endpoint]);\n\n  const endpointType = useMemo(\n    () => getEndpointField(endpointsConfig, conversation?.endpoint, 'type'),\n    [conversation?.endpoint, endpointsConfig],\n  );\n\n  const parameters = useMemo(() => {\n    const [combinedKey, endpointKey] = getSettingsKeys(\n      endpointType ?? conversation?.endpoint ?? '',\n      conversation?.model ?? '',\n    );\n    return settings[combinedKey] ?? settings[endpointKey];\n  }, [conversation, endpointType]);\n\n  useEffect(() => {\n    if (!parameters) {\n      return;\n    }\n\n    // const defaultValueMap = new Map();\n    // const paramKeys = new Set(\n    //   parameters.map((setting) => {\n    //     if (setting.default != null) {\n    //       defaultValueMap.set(setting.key, setting.default);\n    //     }\n    //     return setting.key;\n    //   }),\n    // );\n    const paramKeys = new Set(parameters.map((setting) => setting.key));\n    setConversation((prev) => {\n      if (!prev) {\n        return prev;\n      }\n\n      const updatedConversation = { ...prev };\n\n      const conversationKeys = Object.keys(updatedConversation);\n      const updatedKeys: string[] = [];\n      conversationKeys.forEach((key) => {\n        // const defaultValue = defaultValueMap.get(key);\n        // if (paramKeys.has(key) && defaultValue != null && prev[key] != null) {\n        //   updatedKeys.push(key);\n        //   updatedConversation[key] = defaultValue;\n        //   return;\n        // }\n\n        if (paramKeys.has(key)) {\n          return;\n        }\n\n        if (excludedKeys.has(key)) {\n          return;\n        }\n\n        if (prev[key] != null) {\n          updatedKeys.push(key);\n          delete updatedConversation[key];\n        }\n      });\n\n      logger.log('parameters', 'parameters effect, updated keys:', updatedKeys);\n\n      return updatedConversation;\n    });\n  }, [parameters, setConversation]);\n\n  const resetParameters = useCallback(() => {\n    setConversation((prev) => {\n      if (!prev) {\n        return prev;\n      }\n\n      const updatedConversation = { ...prev };\n      const resetKeys: string[] = [];\n\n      Object.keys(updatedConversation).forEach((key) => {\n        if (excludedKeys.has(key)) {\n          return;\n        }\n\n        if (updatedConversation[key] !== undefined) {\n          resetKeys.push(key);\n          delete updatedConversation[key];\n        }\n      });\n\n      logger.log('parameters', 'parameters reset, affected keys:', resetKeys);\n      return updatedConversation;\n    });\n  }, [setConversation]);\n\n  const openDialog = useCallback(() => {\n    const newPreset = tConvoUpdateSchema.parse({\n      ...conversation,\n    }) as TPreset;\n    setPreset(newPreset);\n    setIsDialogOpen(true);\n  }, [conversation]);\n\n  if (!parameters) {\n    return null;\n  }\n\n  return (\n    <div className=\"h-auto max-w-full overflow-x-hidden p-3\">\n      <div className=\"grid grid-cols-4 gap-6\">\n        {' '}\n        {/* This is the parent element containing all settings */}\n        {/* Below is an example of an applied dynamic setting, each be contained by a div with the column span specified */}\n        {parameters.map((setting) => {\n          const Component = componentMapping[setting.component];\n          if (!Component) {\n            return null;\n          }\n          const { key, default: defaultValue, ...rest } = setting;\n\n          if (key === 'region' && bedrockRegions.length) {\n            rest.options = bedrockRegions;\n          }\n\n          return (\n            <Component\n              key={key}\n              settingKey={key}\n              defaultValue={defaultValue}\n              {...rest}\n              setOption={setOption}\n              conversation={conversation}\n            />\n          );\n        })}\n      </div>\n      <div className=\"mt-4 flex justify-center\">\n        <button\n          type=\"button\"\n          onClick={resetParameters}\n          className=\"btn btn-neutral flex w-full items-center justify-center gap-2 px-4 py-2 text-sm\"\n        >\n          <RotateCcw className=\"h-4 w-4\" aria-hidden=\"true\" />\n          {localize('com_ui_reset_var', { 0: localize('com_ui_model_parameters') })}\n        </button>\n      </div>\n      <div className=\"mt-2 flex justify-center\">\n        <button\n          onClick={openDialog}\n          className=\"btn btn-primary focus:shadow-outline flex w-full items-center justify-center px-4 py-2 font-semibold text-white hover:bg-green-600 focus:border-green-500\"\n          type=\"button\"\n        >\n          {localize('com_endpoint_save_as_preset')}\n        </button>\n      </div>\n      {preset && (\n        <SaveAsPresetDialog open={isDialogOpen} onOpenChange={setIsDialogOpen} preset={preset} />\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/components.tsx",
    "content": "import { ComponentTypes } from '~/data-provider/data-provider/src';\nimport type { DynamicSettingProps } from '~/data-provider/data-provider/src';\nimport {\n  DynamicCombobox,\n  DynamicDropdown,\n  DynamicCheckbox,\n  DynamicTextarea,\n  DynamicSlider,\n  DynamicSwitch,\n  DynamicInput,\n  DynamicTags,\n} from './';\n\nexport const componentMapping: Record<\n  ComponentTypes,\n  React.ComponentType<DynamicSettingProps> | undefined\n> = {\n  [ComponentTypes.Slider]: DynamicSlider,\n  [ComponentTypes.Dropdown]: DynamicDropdown,\n  [ComponentTypes.Switch]: DynamicSwitch,\n  [ComponentTypes.Textarea]: DynamicTextarea,\n  [ComponentTypes.Input]: DynamicInput,\n  [ComponentTypes.Checkbox]: DynamicCheckbox,\n  [ComponentTypes.Tags]: DynamicTags,\n  [ComponentTypes.Combobox]: DynamicCombobox,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/index.ts",
    "content": "export { default as DynamicCombobox } from './DynamicCombobox';\nexport { default as DynamicDropdown } from './DynamicDropdown';\nexport { default as DynamicCheckbox } from './DynamicCheckbox';\nexport { default as DynamicTextarea } from './DynamicTextarea';\nexport { default as DynamicSlider } from './DynamicSlider';\nexport { default as DynamicSwitch } from './DynamicSwitch';\nexport { default as DynamicInput } from './DynamicInput';\nexport { default as DynamicTags } from './DynamicTags';\nexport { default as OptionHoverAlt } from './OptionHover';\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Parameters/settings.ts",
    "content": "import {\n  ImageDetail,\n  EModelEndpoint,\n  openAISettings,\n  googleSettings,\n  ReasoningEffort,\n  BedrockProviders,\n  anthropicSettings,\n} from '~/data-provider/data-provider/src';\nimport type { SettingsConfiguration, SettingDefinition } from '~/data-provider/data-provider/src';\n\n// Base definitions\nconst baseDefinitions: Record<string, SettingDefinition> = {\n  model: {\n    key: 'model',\n    label: 'com_ui_model',\n    labelCode: true,\n    type: 'string',\n    component: 'dropdown',\n    optionType: 'model',\n    selectPlaceholder: 'com_ui_select_model',\n    searchPlaceholder: 'com_ui_select_search_model',\n    searchPlaceholderCode: true,\n    selectPlaceholderCode: true,\n    columnSpan: 4,\n  },\n  temperature: {\n    key: 'temperature',\n    label: 'com_endpoint_temperature',\n    labelCode: true,\n    description: 'com_endpoint_openai_temp',\n    descriptionCode: true,\n    type: 'number',\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  topP: {\n    key: 'topP',\n    label: 'com_endpoint_top_p',\n    labelCode: true,\n    description: 'com_endpoint_anthropic_topp',\n    descriptionCode: true,\n    type: 'number',\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  stop: {\n    key: 'stop',\n    label: 'com_endpoint_stop',\n    labelCode: true,\n    description: 'com_endpoint_openai_stop',\n    descriptionCode: true,\n    placeholder: 'com_endpoint_stop_placeholder',\n    placeholderCode: true,\n    type: 'array',\n    default: [],\n    component: 'tags',\n    optionType: 'conversation',\n    minTags: 0,\n    maxTags: 4,\n  },\n  imageDetail: {\n    key: 'imageDetail',\n    label: 'com_endpoint_plug_image_detail',\n    labelCode: true,\n    description: 'com_endpoint_openai_detail',\n    descriptionCode: true,\n    type: 'enum',\n    default: ImageDetail.auto,\n    component: 'slider',\n    options: [ImageDetail.low, ImageDetail.auto, ImageDetail.high],\n    optionType: 'conversation',\n    columnSpan: 2,\n  },\n};\n\nconst createDefinition = (\n  base: Partial<SettingDefinition>,\n  overrides: Partial<SettingDefinition>,\n): SettingDefinition => {\n  return { ...base, ...overrides } as SettingDefinition;\n};\n\nconst librechat: Record<string, SettingDefinition> = {\n  modelLabel: {\n    key: 'modelLabel',\n    label: 'com_endpoint_custom_name',\n    labelCode: true,\n    type: 'string',\n    default: '',\n    component: 'input',\n    placeholder: 'com_endpoint_openai_custom_name_placeholder',\n    placeholderCode: true,\n    optionType: 'conversation',\n  },\n  maxContextTokens: {\n    key: 'maxContextTokens',\n    label: 'com_endpoint_context_tokens',\n    labelCode: true,\n    type: 'number',\n    component: 'input',\n    placeholder: 'com_nav_theme_system',\n    placeholderCode: true,\n    description: 'com_endpoint_context_info',\n    descriptionCode: true,\n    optionType: 'model',\n    columnSpan: 2,\n  },\n  resendFiles: {\n    key: 'resendFiles',\n    label: 'com_endpoint_plug_resend_files',\n    labelCode: true,\n    description: 'com_endpoint_openai_resend_files',\n    descriptionCode: true,\n    type: 'boolean',\n    default: true,\n    component: 'switch',\n    optionType: 'conversation',\n    showDefault: false,\n    columnSpan: 2,\n  },\n  promptPrefix: {\n    key: 'promptPrefix',\n    label: 'com_endpoint_prompt_prefix',\n    labelCode: true,\n    type: 'string',\n    default: '',\n    component: 'textarea',\n    placeholder: 'com_endpoint_openai_prompt_prefix_placeholder',\n    placeholderCode: true,\n    optionType: 'model',\n  },\n};\n\nconst openAIParams: Record<string, SettingDefinition> = {\n  chatGptLabel: {\n    ...librechat.modelLabel,\n    key: 'chatGptLabel',\n  },\n  promptPrefix: librechat.promptPrefix,\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: openAISettings.temperature.default,\n    range: {\n      min: openAISettings.temperature.min,\n      max: openAISettings.temperature.max,\n      step: openAISettings.temperature.step,\n    },\n  }),\n  top_p: createDefinition(baseDefinitions.topP, {\n    key: 'top_p',\n    default: openAISettings.top_p.default,\n    range: {\n      min: openAISettings.top_p.min,\n      max: openAISettings.top_p.max,\n      step: openAISettings.top_p.step,\n    },\n  }),\n  frequency_penalty: {\n    key: 'frequency_penalty',\n    label: 'com_endpoint_frequency_penalty',\n    labelCode: true,\n    description: 'com_endpoint_openai_freq',\n    descriptionCode: true,\n    type: 'number',\n    default: openAISettings.frequency_penalty.default,\n    range: {\n      min: openAISettings.frequency_penalty.min,\n      max: openAISettings.frequency_penalty.max,\n      step: openAISettings.frequency_penalty.step,\n    },\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  presence_penalty: {\n    key: 'presence_penalty',\n    label: 'com_endpoint_presence_penalty',\n    labelCode: true,\n    description: 'com_endpoint_openai_pres',\n    descriptionCode: true,\n    type: 'number',\n    default: openAISettings.presence_penalty.default,\n    range: {\n      min: openAISettings.presence_penalty.min,\n      max: openAISettings.presence_penalty.max,\n      step: openAISettings.presence_penalty.step,\n    },\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  max_tokens: {\n    key: 'max_tokens',\n    label: 'com_endpoint_max_output_tokens',\n    labelCode: true,\n    type: 'number',\n    component: 'input',\n    description: 'com_endpoint_openai_max_tokens',\n    descriptionCode: true,\n    placeholder: 'com_nav_theme_system',\n    placeholderCode: true,\n    optionType: 'model',\n    columnSpan: 2,\n  },\n  reasoning_effort: {\n    key: 'reasoning_effort',\n    label: 'com_endpoint_reasoning_effort',\n    labelCode: true,\n    description: 'com_endpoint_openai_reasoning_effort',\n    descriptionCode: true,\n    type: 'enum',\n    default: ReasoningEffort.medium,\n    component: 'slider',\n    options: [ReasoningEffort.low, ReasoningEffort.medium, ReasoningEffort.high],\n    optionType: 'model',\n    columnSpan: 4,\n  },\n};\n\nconst anthropic: Record<string, SettingDefinition> = {\n  maxOutputTokens: {\n    key: 'maxOutputTokens',\n    label: 'com_endpoint_max_output_tokens',\n    labelCode: true,\n    type: 'number',\n    component: 'input',\n    description: 'com_endpoint_anthropic_maxoutputtokens',\n    descriptionCode: true,\n    placeholder: 'com_nav_theme_system',\n    placeholderCode: true,\n    range: {\n      min: anthropicSettings.maxOutputTokens.min,\n      max: anthropicSettings.maxOutputTokens.max,\n      step: anthropicSettings.maxOutputTokens.step,\n    },\n    optionType: 'model',\n    columnSpan: 2,\n  },\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: anthropicSettings.temperature.default,\n    range: {\n      min: anthropicSettings.temperature.min,\n      max: anthropicSettings.temperature.max,\n      step: anthropicSettings.temperature.step,\n    },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    default: anthropicSettings.topP.default,\n    range: {\n      min: anthropicSettings.topP.min,\n      max: anthropicSettings.topP.max,\n      step: anthropicSettings.topP.step,\n    },\n  }),\n  topK: {\n    key: 'topK',\n    label: 'com_endpoint_top_k',\n    labelCode: true,\n    description: 'com_endpoint_anthropic_topk',\n    descriptionCode: true,\n    type: 'number',\n    default: anthropicSettings.topK.default,\n    range: {\n      min: anthropicSettings.topK.min,\n      max: anthropicSettings.topK.max,\n      step: anthropicSettings.topK.step,\n    },\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  promptCache: {\n    key: 'promptCache',\n    label: 'com_endpoint_prompt_cache',\n    labelCode: true,\n    description: 'com_endpoint_anthropic_prompt_cache',\n    descriptionCode: true,\n    type: 'boolean',\n    default: anthropicSettings.promptCache.default,\n    component: 'switch',\n    optionType: 'conversation',\n    showDefault: false,\n    columnSpan: 2,\n  },\n  thinking: {\n    key: 'thinking',\n    label: 'com_endpoint_thinking',\n    labelCode: true,\n    description: 'com_endpoint_anthropic_thinking',\n    descriptionCode: true,\n    type: 'boolean',\n    default: anthropicSettings.thinking.default,\n    component: 'switch',\n    optionType: 'conversation',\n    showDefault: false,\n    columnSpan: 2,\n  },\n  thinkingBudget: {\n    key: 'thinkingBudget',\n    label: 'com_endpoint_thinking_budget',\n    labelCode: true,\n    description: 'com_endpoint_anthropic_thinking_budget',\n    descriptionCode: true,\n    type: 'number',\n    component: 'input',\n    default: anthropicSettings.thinkingBudget.default,\n    range: {\n      min: anthropicSettings.thinkingBudget.min,\n      max: anthropicSettings.thinkingBudget.max,\n      step: anthropicSettings.thinkingBudget.step,\n    },\n    optionType: 'conversation',\n    columnSpan: 2,\n  },\n};\n\nconst bedrock: Record<string, SettingDefinition> = {\n  system: {\n    key: 'system',\n    label: 'com_endpoint_prompt_prefix',\n    labelCode: true,\n    type: 'string',\n    default: '',\n    component: 'textarea',\n    placeholder: 'com_endpoint_openai_prompt_prefix_placeholder',\n    placeholderCode: true,\n    optionType: 'model',\n  },\n  region: {\n    key: 'region',\n    type: 'string',\n    label: 'com_ui_region',\n    labelCode: true,\n    component: 'combobox',\n    optionType: 'conversation',\n    selectPlaceholder: 'com_ui_select_region',\n    searchPlaceholder: 'com_ui_select_search_region',\n    searchPlaceholderCode: true,\n    selectPlaceholderCode: true,\n    columnSpan: 2,\n  },\n  maxTokens: {\n    key: 'maxTokens',\n    label: 'com_endpoint_max_output_tokens',\n    labelCode: true,\n    type: 'number',\n    component: 'input',\n    placeholder: 'com_endpoint_anthropic_maxoutputtokens',\n    placeholderCode: true,\n    optionType: 'model',\n    columnSpan: 2,\n  },\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: 1,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n  topK: createDefinition(anthropic.topK, {\n    range: { min: 0, max: 500, step: 1 },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    default: 0.999,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n};\n\nconst mistral: Record<string, SettingDefinition> = {\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: 0.7,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n};\n\nconst cohere: Record<string, SettingDefinition> = {\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: 0.3,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    default: 0.75,\n    range: { min: 0.01, max: 0.99, step: 0.01 },\n  }),\n};\n\nconst meta: Record<string, SettingDefinition> = {\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: 0.5,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    default: 0.9,\n    range: { min: 0, max: 1, step: 0.01 },\n  }),\n};\n\nconst google: Record<string, SettingDefinition> = {\n  temperature: createDefinition(baseDefinitions.temperature, {\n    default: googleSettings.temperature.default,\n    range: {\n      min: googleSettings.temperature.min,\n      max: googleSettings.temperature.max,\n      step: googleSettings.temperature.step,\n    },\n  }),\n  topP: createDefinition(baseDefinitions.topP, {\n    default: googleSettings.topP.default,\n    range: {\n      min: googleSettings.topP.min,\n      max: googleSettings.topP.max,\n      step: googleSettings.topP.step,\n    },\n  }),\n  topK: {\n    key: 'topK',\n    label: 'com_endpoint_top_k',\n    labelCode: true,\n    description: 'com_endpoint_google_topk',\n    descriptionCode: true,\n    type: 'number',\n    default: googleSettings.topK.default,\n    range: {\n      min: googleSettings.topK.min,\n      max: googleSettings.topK.max,\n      step: googleSettings.topK.step,\n    },\n    component: 'slider',\n    optionType: 'model',\n    columnSpan: 4,\n  },\n  maxOutputTokens: {\n    key: 'maxOutputTokens',\n    label: 'com_endpoint_max_output_tokens',\n    labelCode: true,\n    type: 'number',\n    component: 'input',\n    description: 'com_endpoint_google_maxoutputtokens',\n    descriptionCode: true,\n    placeholder: 'com_nav_theme_system',\n    placeholderCode: true,\n    default: googleSettings.maxOutputTokens.default,\n    range: {\n      min: googleSettings.maxOutputTokens.min,\n      max: googleSettings.maxOutputTokens.max,\n      step: googleSettings.maxOutputTokens.step,\n    },\n    optionType: 'model',\n    columnSpan: 2,\n  },\n};\n\nconst googleConfig: SettingsConfiguration = [\n  librechat.modelLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  google.maxOutputTokens,\n  google.temperature,\n  google.topP,\n  google.topK,\n  librechat.resendFiles,\n];\n\nconst googleCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  librechat.promptPrefix,\n];\n\nconst googleCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  google.maxOutputTokens,\n  google.temperature,\n  google.topP,\n  google.topK,\n  librechat.resendFiles,\n];\n\nconst openAI: SettingsConfiguration = [\n  openAIParams.chatGptLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  openAIParams.max_tokens,\n  openAIParams.temperature,\n  openAIParams.top_p,\n  openAIParams.frequency_penalty,\n  openAIParams.presence_penalty,\n  baseDefinitions.stop,\n  librechat.resendFiles,\n  baseDefinitions.imageDetail,\n  openAIParams.reasoning_effort,\n];\n\nconst openAICol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  openAIParams.chatGptLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n];\n\nconst openAICol2: SettingsConfiguration = [\n  openAIParams.max_tokens,\n  openAIParams.temperature,\n  openAIParams.top_p,\n  openAIParams.frequency_penalty,\n  openAIParams.presence_penalty,\n  baseDefinitions.stop,\n  openAIParams.reasoning_effort,\n  librechat.resendFiles,\n  baseDefinitions.imageDetail,\n];\n\nconst anthropicConfig: SettingsConfiguration = [\n  librechat.modelLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  anthropic.maxOutputTokens,\n  anthropic.temperature,\n  anthropic.topP,\n  anthropic.topK,\n  librechat.resendFiles,\n  anthropic.promptCache,\n  anthropic.thinking,\n  anthropic.thinkingBudget,\n];\n\nconst anthropicCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  librechat.promptPrefix,\n];\n\nconst anthropicCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  anthropic.maxOutputTokens,\n  anthropic.temperature,\n  anthropic.topP,\n  anthropic.topK,\n  librechat.resendFiles,\n  anthropic.promptCache,\n  anthropic.thinking,\n  anthropic.thinkingBudget,\n];\n\nconst bedrockAnthropic: SettingsConfiguration = [\n  librechat.modelLabel,\n  bedrock.system,\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  bedrock.temperature,\n  bedrock.topP,\n  bedrock.topK,\n  baseDefinitions.stop,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockMistral: SettingsConfiguration = [\n  librechat.modelLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  mistral.temperature,\n  mistral.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockCohere: SettingsConfiguration = [\n  librechat.modelLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  cohere.temperature,\n  cohere.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockGeneral: SettingsConfiguration = [\n  librechat.modelLabel,\n  librechat.promptPrefix,\n  librechat.maxContextTokens,\n  meta.temperature,\n  meta.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockAnthropicCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  bedrock.system,\n  baseDefinitions.stop,\n];\n\nconst bedrockAnthropicCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  bedrock.temperature,\n  bedrock.topP,\n  bedrock.topK,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockMistralCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  librechat.promptPrefix,\n];\n\nconst bedrockMistralCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  mistral.temperature,\n  mistral.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockCohereCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  librechat.promptPrefix,\n];\n\nconst bedrockCohereCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  bedrock.maxTokens,\n  cohere.temperature,\n  cohere.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nconst bedrockGeneralCol1: SettingsConfiguration = [\n  baseDefinitions.model as SettingDefinition,\n  librechat.modelLabel,\n  librechat.promptPrefix,\n];\n\nconst bedrockGeneralCol2: SettingsConfiguration = [\n  librechat.maxContextTokens,\n  meta.temperature,\n  meta.topP,\n  bedrock.region,\n  librechat.resendFiles,\n];\n\nexport const settings: Record<string, SettingsConfiguration | undefined> = {\n  [EModelEndpoint.openAI]: openAI,\n  [EModelEndpoint.azureOpenAI]: openAI,\n  [EModelEndpoint.custom]: openAI,\n  [EModelEndpoint.anthropic]: anthropicConfig,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Anthropic}`]: bedrockAnthropic,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.MistralAI}`]: bedrockMistral,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Cohere}`]: bedrockCohere,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Meta}`]: bedrockGeneral,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.AI21}`]: bedrockGeneral,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Amazon}`]: bedrockGeneral,\n  [EModelEndpoint.google]: googleConfig,\n};\n\nconst openAIColumns = {\n  col1: openAICol1,\n  col2: openAICol2,\n};\n\nconst bedrockGeneralColumns = {\n  col1: bedrockGeneralCol1,\n  col2: bedrockGeneralCol2,\n};\n\nexport const presetSettings: Record<\n  string,\n  | {\n      col1: SettingsConfiguration;\n      col2: SettingsConfiguration;\n    }\n  | undefined\n> = {\n  [EModelEndpoint.openAI]: openAIColumns,\n  [EModelEndpoint.azureOpenAI]: openAIColumns,\n  [EModelEndpoint.custom]: openAIColumns,\n  [EModelEndpoint.anthropic]: {\n    col1: anthropicCol1,\n    col2: anthropicCol2,\n  },\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Anthropic}`]: {\n    col1: bedrockAnthropicCol1,\n    col2: bedrockAnthropicCol2,\n  },\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.MistralAI}`]: {\n    col1: bedrockMistralCol1,\n    col2: bedrockMistralCol2,\n  },\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Cohere}`]: {\n    col1: bedrockCohereCol1,\n    col2: bedrockCohereCol2,\n  },\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Meta}`]: bedrockGeneralColumns,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.AI21}`]: bedrockGeneralColumns,\n  [`${EModelEndpoint.bedrock}-${BedrockProviders.Amazon}`]: bedrockGeneralColumns,\n  [EModelEndpoint.google]: {\n    col1: googleCol1,\n    col2: googleCol2,\n  },\n};\n\nexport const agentSettings: Record<string, SettingsConfiguration | undefined> = Object.entries(\n  presetSettings,\n).reduce((acc, [key, value]) => {\n  if (value) {\n    acc[key] = value.col2;\n  }\n  return acc;\n}, {});\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/SidePanel.tsx",
    "content": "import { useState, useCallback, useMemo, memo } from 'react';\nimport { useUserKeyQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TEndpointsConfig, TInterfaceConfig } from '~/data-provider/data-provider/src';\nimport type { ImperativePanelHandle } from 'react-resizable-panels';\nimport { ResizableHandleAlt, ResizablePanel } from '~/components/ui/Resizable';\nimport { useMediaQuery, useLocalStorage, useLocalize } from '~/hooks';\nimport useSideNavLinks from '~/hooks/Nav/useSideNavLinks';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport NavToggle from '~/components/Nav/NavToggle';\nimport { cn, getEndpointField } from '~/utils';\nimport { useChatContext } from '~/Providers';\nimport Switcher from './Switcher';\nimport Nav from './Nav';\n\nconst defaultMinSize = 20;\n\nconst SidePanel = ({\n  defaultSize,\n  panelRef,\n  navCollapsedSize = 3,\n  hasArtifacts,\n  minSize,\n  setMinSize,\n  collapsedSize,\n  setCollapsedSize,\n  isCollapsed,\n  setIsCollapsed,\n  fullCollapse,\n  setFullCollapse,\n  interfaceConfig,\n}: {\n  defaultSize?: number;\n  hasArtifacts: boolean;\n  navCollapsedSize?: number;\n  minSize: number;\n  setMinSize: React.Dispatch<React.SetStateAction<number>>;\n  collapsedSize: number;\n  setCollapsedSize: React.Dispatch<React.SetStateAction<number>>;\n  isCollapsed: boolean;\n  setIsCollapsed: React.Dispatch<React.SetStateAction<boolean>>;\n  fullCollapse: boolean;\n  setFullCollapse: React.Dispatch<React.SetStateAction<boolean>>;\n  panelRef: React.RefObject<ImperativePanelHandle>;\n  interfaceConfig: TInterfaceConfig;\n}) => {\n  const localize = useLocalize();\n  const [isHovering, setIsHovering] = useState(false);\n  const [newUser, setNewUser] = useLocalStorage('newUser', true);\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n\n  const isSmallScreen = useMediaQuery('(max-width: 767px)');\n  const { conversation } = useChatContext();\n  const { endpoint } = conversation ?? {};\n  const { data: keyExpiry = { expiresAt: undefined } } = useUserKeyQuery(endpoint ?? '');\n\n  const defaultActive = useMemo(() => {\n    const activePanel = localStorage.getItem('side:active-panel');\n    return typeof activePanel === 'string' ? activePanel : undefined;\n  }, []);\n\n  const endpointType = useMemo(\n    () => getEndpointField(endpointsConfig, endpoint, 'type'),\n    [endpoint, endpointsConfig],\n  );\n  const assistants = useMemo(() => endpointsConfig?.[endpoint ?? ''], [endpoint, endpointsConfig]);\n  const agents = useMemo(() => endpointsConfig?.[endpoint ?? ''], [endpoint, endpointsConfig]);\n\n  const userProvidesKey = useMemo(\n    () => !!(endpointsConfig?.[endpoint ?? '']?.userProvide ?? false),\n    [endpointsConfig, endpoint],\n  );\n  const keyProvided = useMemo(\n    () => (userProvidesKey ? !!(keyExpiry.expiresAt ?? '') : true),\n    [keyExpiry.expiresAt, userProvidesKey],\n  );\n\n  const hidePanel = useCallback(() => {\n    setIsCollapsed(true);\n    setCollapsedSize(0);\n    setMinSize(defaultMinSize);\n    setFullCollapse(true);\n    localStorage.setItem('fullPanelCollapse', 'true');\n    panelRef.current?.collapse();\n  }, []);\n\n  const Links = useSideNavLinks({\n    agents,\n    endpoint,\n    hidePanel,\n    assistants,\n    keyProvided,\n    endpointType,\n    interfaceConfig,\n  });\n\n  const toggleNavVisible = useCallback(() => {\n    if (newUser) {\n      setNewUser(false);\n    }\n    setIsCollapsed((prev: boolean) => {\n      if (prev) {\n        setMinSize(defaultMinSize);\n        setCollapsedSize(navCollapsedSize);\n        setFullCollapse(false);\n        localStorage.setItem('fullPanelCollapse', 'false');\n      }\n      return !prev;\n    });\n    if (!isCollapsed) {\n      panelRef.current?.collapse();\n    } else {\n      panelRef.current?.expand();\n    }\n  }, [isCollapsed, newUser, setNewUser, navCollapsedSize]);\n\n  return (\n    <>\n      <div\n        onMouseEnter={() => setIsHovering(true)}\n        onMouseLeave={() => setIsHovering(false)}\n        className=\"relative flex w-px items-center justify-center\"\n      >\n        <NavToggle\n          navVisible={!isCollapsed}\n          isHovering={isHovering}\n          onToggle={toggleNavVisible}\n          setIsHovering={setIsHovering}\n          className={cn(\n            'fixed top-1/2',\n            (isCollapsed && (minSize === 0 || collapsedSize === 0)) || fullCollapse\n              ? 'mr-9'\n              : 'mr-16',\n          )}\n          translateX={false}\n          side=\"right\"\n        />\n      </div>\n      {(!isCollapsed || minSize > 0) && !isSmallScreen && !fullCollapse && (\n        <ResizableHandleAlt withHandle className=\"bg-transparent text-text-primary\" />\n      )}\n      <ResizablePanel\n        tagName=\"nav\"\n        id=\"controls-nav\"\n        order={hasArtifacts != null ? 3 : 2}\n        aria-label={localize('com_ui_controls')}\n        role=\"navigation\"\n        collapsedSize={collapsedSize}\n        defaultSize={defaultSize}\n        collapsible={true}\n        minSize={minSize}\n        maxSize={40}\n        ref={panelRef}\n        style={{\n          overflowY: 'auto',\n          transition: 'width 0.2s ease, visibility 0s linear 0.2s',\n        }}\n        onExpand={() => {\n          setIsCollapsed(false);\n          localStorage.setItem('react-resizable-panels:collapsed', 'false');\n        }}\n        onCollapse={() => {\n          setIsCollapsed(true);\n          localStorage.setItem('react-resizable-panels:collapsed', 'true');\n        }}\n        className={cn(\n          'sidenav hide-scrollbar border-l border-border-light bg-background transition-opacity',\n          isCollapsed ? 'min-w-[50px]' : 'min-w-[340px] sm:min-w-[352px]',\n          (isSmallScreen && isCollapsed && (minSize === 0 || collapsedSize === 0)) || fullCollapse\n            ? 'hidden min-w-0'\n            : 'opacity-100',\n        )}\n      >\n        {interfaceConfig.modelSelect === true && (\n          <div\n            className={cn(\n              'sticky left-0 right-0 top-0 z-[100] flex h-[52px] flex-wrap items-center justify-center bg-background',\n              isCollapsed ? 'h-[52px]' : 'px-2',\n            )}\n          >\n            <Switcher\n              isCollapsed={isCollapsed}\n              endpointKeyProvided={keyProvided}\n              endpoint={endpoint}\n            />\n          </div>\n        )}\n        <Nav\n          resize={panelRef.current?.resize}\n          isCollapsed={isCollapsed}\n          defaultActive={defaultActive}\n          links={Links}\n        />\n      </ResizablePanel>\n    </>\n  );\n};\n\nexport default memo(SidePanel);\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/SidePanelGroup.tsx",
    "content": "import { useState, useRef, useCallback, useEffect, useMemo, memo } from 'react';\nimport throttle from 'lodash/throttle';\nimport { useRecoilValue } from 'recoil';\nimport { getConfigDefaults } from '~/data-provider/data-provider/src';\nimport type { ImperativePanelHandle } from 'react-resizable-panels';\nimport { ResizableHandleAlt, ResizablePanel, ResizablePanelGroup } from '~/components/ui/Resizable';\nimport { useGetStartupConfig } from '~/data-provider';\nimport { normalizeLayout } from '~/utils';\nimport { useMediaQuery } from '~/hooks';\nimport SidePanel from './SidePanel';\nimport store from '~/store';\n\ninterface SidePanelProps {\n  defaultLayout?: number[] | undefined;\n  defaultCollapsed?: boolean;\n  navCollapsedSize?: number;\n  fullPanelCollapse?: boolean;\n  artifacts?: React.ReactNode;\n  children: React.ReactNode;\n}\n\nconst defaultMinSize = 20;\nconst defaultInterface = getConfigDefaults().interface;\n\nconst SidePanelGroup = ({\n  defaultLayout = [97, 3],\n  defaultCollapsed = false,\n  fullPanelCollapse = false,\n  navCollapsedSize = 3,\n  artifacts,\n  children,\n}: SidePanelProps) => {\n  const { data: startupConfig } = useGetStartupConfig();\n  const interfaceConfig = useMemo(\n    () => startupConfig?.interface ?? defaultInterface,\n    [startupConfig],\n  );\n\n  const panelRef = useRef<ImperativePanelHandle>(null);\n  const [minSize, setMinSize] = useState(defaultMinSize);\n  const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);\n  const [fullCollapse, setFullCollapse] = useState(fullPanelCollapse);\n  const [collapsedSize, setCollapsedSize] = useState(navCollapsedSize);\n\n  const isSmallScreen = useMediaQuery('(max-width: 767px)');\n  const hideSidePanel = useRecoilValue(store.hideSidePanel);\n\n  const calculateLayout = useCallback(() => {\n    if (artifacts == null) {\n      const navSize = defaultLayout.length === 2 ? defaultLayout[1] : defaultLayout[2];\n      return [100 - navSize, navSize];\n    } else {\n      const navSize = 0;\n      const remainingSpace = 100 - navSize;\n      const newMainSize = Math.floor(remainingSpace / 2);\n      const artifactsSize = remainingSpace - newMainSize;\n      return [newMainSize, artifactsSize, navSize];\n    }\n  }, [artifacts, defaultLayout]);\n\n  const currentLayout = useMemo(() => normalizeLayout(calculateLayout()), [calculateLayout]);\n\n  const throttledSaveLayout = useCallback(\n    throttle((sizes: number[]) => {\n      const normalizedSizes = normalizeLayout(sizes);\n      localStorage.setItem('react-resizable-panels:layout', JSON.stringify(normalizedSizes));\n    }, 350),\n    [],\n  );\n\n  useEffect(() => {\n    if (isSmallScreen) {\n      setIsCollapsed(true);\n      setCollapsedSize(0);\n      setMinSize(defaultMinSize);\n      setFullCollapse(true);\n      localStorage.setItem('fullPanelCollapse', 'true');\n      panelRef.current?.collapse();\n      return;\n    } else {\n      setIsCollapsed(defaultCollapsed);\n      setCollapsedSize(navCollapsedSize);\n      setMinSize(defaultMinSize);\n    }\n  }, [isSmallScreen, defaultCollapsed, navCollapsedSize, fullPanelCollapse]);\n\n  const minSizeMain = useMemo(() => (artifacts != null ? 15 : 30), [artifacts]);\n\n  return (\n    <>\n      <ResizablePanelGroup\n        direction=\"horizontal\"\n        onLayout={(sizes) => throttledSaveLayout(sizes)}\n        className=\"transition-width relative h-full w-full flex-1 overflow-auto bg-presentation\"\n      >\n        <ResizablePanel\n          defaultSize={currentLayout[0]}\n          minSize={minSizeMain}\n          order={1}\n          id=\"messages-view\"\n        >\n          {children}\n        </ResizablePanel>\n        {artifacts != null && (\n          <>\n            <ResizableHandleAlt withHandle className=\"ml-3 bg-border-medium text-text-primary\" />\n            <ResizablePanel\n              defaultSize={currentLayout[1]}\n              minSize={minSizeMain}\n              order={2}\n              id=\"artifacts-panel\"\n            >\n              {artifacts}\n            </ResizablePanel>\n          </>\n        )}\n        {/* {!hideSidePanel && interfaceConfig.sidePanel === true && (\n          <SidePanel\n            panelRef={panelRef}\n            minSize={minSize}\n            setMinSize={setMinSize}\n            isCollapsed={isCollapsed}\n            setIsCollapsed={setIsCollapsed}\n            collapsedSize={collapsedSize}\n            setCollapsedSize={setCollapsedSize}\n            fullCollapse={fullCollapse}\n            setFullCollapse={setFullCollapse}\n            defaultSize={currentLayout[currentLayout.length - 1]}\n            hasArtifacts={artifacts != null}\n            interfaceConfig={interfaceConfig}\n          />\n        )} */}\n      </ResizablePanelGroup>\n      <button\n        aria-label=\"Close right side panel\"\n        className={`nav-mask ${!isCollapsed ? 'active' : ''}`}\n        onClick={() => {\n          setIsCollapsed(() => {\n            localStorage.setItem('fullPanelCollapse', 'true');\n            setFullCollapse(true);\n            setCollapsedSize(0);\n            setMinSize(0);\n            return false;\n          });\n          panelRef.current?.collapse();\n        }}\n      />\n    </>\n  );\n};\n\nexport default memo(SidePanelGroup);\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/Switcher.tsx",
    "content": "import { isAssistantsEndpoint, isAgentsEndpoint } from '~/data-provider/data-provider/src';\nimport type { SwitcherProps } from '~/common';\nimport AssistantSwitcher from './AssistantSwitcher';\nimport AgentSwitcher from './AgentSwitcher';\nimport ModelSwitcher from './ModelSwitcher';\n\nexport default function Switcher(props: SwitcherProps) {\n  if (isAssistantsEndpoint(props.endpoint) && props.endpointKeyProvided) {\n    return <AssistantSwitcher {...props} />;\n  } else if (isAgentsEndpoint(props.endpoint) && props.endpointKeyProvided) {\n    return <AgentSwitcher {...props} />;\n  } else if (isAssistantsEndpoint(props.endpoint)) {\n    return null;\n  }\n\n  return <ModelSwitcher {...props} />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/data.tsx",
    "content": "export const accounts = [\n  {\n    label: 'Alicia Koch',\n    email: 'alicia@example.com',\n    icon: (\n      <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <title>Vercel</title>\n        <path d=\"M24 22.525H0l12-21.05 12 21.05z\" fill=\"currentColor\" />\n      </svg>\n    ),\n  },\n  {\n    label: 'Alicia Koch',\n    email: 'alicia@gmail.com',\n    icon: (\n      <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <title>Gmail</title>\n        <path\n          d=\"M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n    ),\n  },\n  {\n    label: 'Alicia Koch',\n    email: 'alicia@me.com',\n    icon: (\n      <svg role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <title>iCloud</title>\n        <path\n          d=\"M13.762 4.29a6.51 6.51 0 0 0-5.669 3.332 3.571 3.571 0 0 0-1.558-.36 3.571 3.571 0 0 0-3.516 3A4.918 4.918 0 0 0 0 14.796a4.918 4.918 0 0 0 4.92 4.914 4.93 4.93 0 0 0 .617-.045h14.42c2.305-.272 4.041-2.258 4.043-4.589v-.009a4.594 4.594 0 0 0-3.727-4.508 6.51 6.51 0 0 0-6.511-6.27z\"\n          fill=\"currentColor\"\n        />\n      </svg>\n    ),\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/components/SidePanel/index.ts",
    "content": "export { default as SidePanelGroup } from './SidePanelGroup';\nexport { default as SideNav } from './Nav';\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/FilePreview.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\";\nimport '../../markdown.css';\nimport Markdown from '../Chat/Messages/Content/Markdown';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../ui\";\nimport { useLocalize } from \"~/hooks\";\nimport { Input, Button, Label } from '~/components';\nimport FileIcon from \"../ui/icon/File\"\nimport { getLinsightFileDownloadApi } from \"~/data-provider/data-provider/src/data-service\";\n\n\n\ninterface FilePreviewProps {\n    // 原有方式：通过 fileId 查找文件\n    files?: any[]\n    fileId?: string\n    // 新增方式：直接传入文件对象\n    currentDisplayFile?: any\n    vid: string\n}\n\nexport default function FilePreview({ files, fileId, currentDisplayFile, onDownloadFile, vid }: FilePreviewProps) {\n    const localize = useLocalize();\n    // 获取当前文件信息\n    const currentFile = useMemo(() => {\n        if (currentDisplayFile) {\n            return currentDisplayFile\n        }\n\n        if (files && fileId) {\n            const currentFile = files.find(file => file.file_id === fileId)\n            return currentFile\n        }\n\n        return null\n    }, [files, fileId, currentDisplayFile])\n\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return (lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\").toLowerCase()\n    }\n\n    const render = () => {\n        if (!currentFile && !currentFile?.file_url) {\n            return <div className=\"flex justify-center items-center h-full text-gray-400\">{localize('com_sop_preview_failed')}</div>\n        }\n\n        const { file_url, file_name } = currentFile\n        const type = getFileExtension(file_name)\n\n        // 对于直接文件模式，不需要 URL\n        const url = `${location.origin}${file_url}`\n        const handleClick = (e, url) => {\n            e.stopPropagation();\n            onDownloadFile({\n                file_name: currentFile.file_name,\n                file_url: url\n            })\n        }\n        switch (type) {\n            case 'xls':\n            case 'xlsx':\n            case 'doc':\n            case 'docx':\n                return <div className=\"flex flex-col items-center justify-center h-full\">\n                    <FileIcon\n                        type={type}\n                        className=\"w-20 h-20\"\n                    />\n                    <div className=\"text-lg font-bold mt-2\">{file_name}</div>\n                    <div className=\"text-sm text-gray-500 m-4\">{localize('com_preview_type_unsupported')}</div>\n                    <Button variant=\"outline\" onClick={(e) => handleClick(e, file_url)}>{localize('com_ui_download')}</Button>\n                </div>\n            case 'md':\n                return <TxtFileViewer\n                    vid={vid}\n                    markdown\n                    filePath={file_url}\n                />\n            case 'csv':\n                return <TxtFileViewer\n                    vid={vid}\n                    csv\n                    filePath={file_url}\n                />\n            case 'txt':\n                return <TxtFileViewer\n                    vid={vid}\n                    filePath={file_url}\n                />\n            case 'html':\n                return <TxtFileViewer\n                    vid={vid}\n                    html\n                    filePath={file_url}\n                />\n            case 'svg':\n                return (\n                    <SvgViewer\n                        fileUrl={file_url}\n                        fileName={file_name}\n                        onDownload={(url) => handleClick(null, url)}\n                    />\n                );\n            case 'png':\n            case 'jpg':\n            case 'jpeg':\n            case 'bmp':\n                return <ImageFileViewer filePath={file_url} vid={vid} fileName={file_name} />\n            default:\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">{localize('com_sop_preview_failed')}</div>\n        }\n    }\n\n    return <div className=\"relative h-[calc(100vh-84px)] overflow-y-auto\">{render()}</div>\n}\n\ninterface TxtFileViewerProps {\n    html?: boolean\n    markdown?: boolean\n    csv?: boolean\n    filePath?: string\n    directContent?: string // 新增：直接传入的内容\n}\nconst SvgViewer = ({ fileUrl, fileName, onDownload }: SvgViewerProps) => {\n    const [svgContent, setSvgContent] = useState('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState<string | null>(null);\n    const localize = useLocalize();\n\n    // 构建完整的后端URL\n    const fullUrl = `${__APP_ENV__.BASE_URL}${fileUrl}`;\n\n    useEffect(() => {\n        // 用于清理请求的AbortController\n        const abortController = new AbortController();\n\n        const fetchSvgContent = async () => {\n            try {\n                setLoading(true);\n                setError(null);\n\n                const response = await fetch(fullUrl, {\n                    signal: abortController.signal,\n                    headers: {\n                        'Accept': 'image/svg+xml' // 明确请求SVG类型\n                    }\n                });\n\n                if (!response.ok) {\n                    throw new Error(`HTTP ${response.status} - ${response.statusText}`);\n                }\n\n                // 直接获取SVG文本内容\n                const content = await response.text();\n\n                setSvgContent(content);\n            } catch (err) {\n                if (!abortController.signal.aborted) { // 排除手动取消的情况\n                    setError(err instanceof Error ? err.message : '加载SVG失败');\n                    console.error('SVG加载错误:', err);\n                }\n            } finally {\n                if (!abortController.signal.aborted) {\n                    setLoading(false);\n                }\n            }\n        };\n\n        fetchSvgContent();\n\n        // 组件卸载时取消请求\n        return () => abortController.abort();\n    }, [fullUrl]);\n\n    if (loading) {\n        return (\n            <div className=\"flex justify-center items-center h-full\">\n                <img\n                    className=\"size-8 animate-spin\"\n                    src={`${__APP_ENV__.BASE_URL}/assets/load.webp`}\n                    alt=\"加载中\"\n                />\n                <span className=\"ml-2 text-sm text-gray-500\">加载SVG文件...</span>\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"flex flex-col items-center justify-center h-full p-6\">\n                <FileIcon type=\"svg\" className=\"w-16 h-16 mb-4 text-gray-400\" />\n                <div className=\"text-red-500 text-sm mb-4\">\n                    {localize('com_sop_file_load_error')}: {error}\n                </div>\n                <Button\n                    variant=\"outline\"\n                    onClick={() => onDownload(fullUrl)}\n                >\n                    {localize('com_ui_download')} {fileName}\n                </Button>\n            </div>\n        );\n    }\n\n    return (\n        <div className=\"relative h-full flex justify-center items-center p-4 overflow-hidden\">\n            {/* 直接渲染SVG内容，绕过标签限制 */}\n            <div\n                className=\"max-w-full max-h-[calc(100vh-200px)]\"\n                dangerouslySetInnerHTML={{ __html: svgContent }}\n                onClick={(e) => e.stopPropagation()}\n            />\n        </div>\n    );\n};\nconst TxtFileViewer = ({ html = false, markdown = false, csv = false, filePath, vid }: TxtFileViewerProps) => {\n    const [content, setContent] = useState('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState<string | null>(null);\n    const localize = useLocalize();\n\n    useEffect(() => {\n        if (!filePath) {\n            setError('No file path or direct content provided');\n            setLoading(false);\n            return;\n        }\n\n        const fetchTextFile = async () => {\n            try {\n                setLoading(true);\n                const res = await getLinsightFileDownloadApi(filePath, vid)\n                const url = __APP_ENV__.BASE_URL + res.data.file_path\n                const response = await fetch(url);\n                if (!response.ok) {\n                    throw new Error(`Failed to fetch file: ${response.status} ${response.statusText}`);\n                }\n                const text = await response.text();\n                setContent(text);\n                setError(null);\n            } catch (err) {\n                setError(err instanceof Error ? err.message : 'Unknown error');\n                setContent('');\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchTextFile();\n    }, [filePath]);\n\n    if (loading) {\n        return (\n            <div className=\"p-4 text-sm text-gray-500\">\n                <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"p-4 text-sm text-red-500\">\n                {localize('com_sop_file_load_error')}: {error}\n            </div>\n        );\n    }\n\n    if (html) return <iframe\n        className=\"w-full h-full border\"\n        srcDoc={content}\n        sandbox=\"allow-scripts\"\n    />\n\n    if (markdown) return <div className=\"bs-mkdown p-10\">\n        <Markdown content={content} isLatestMessage={true} webContent={false} />\n    </div>\n\n    if (csv) return <CsvTableViewer csvText={content} />\n\n    return (\n        <div className=\"p-4 text-sm whitespace-pre-wrap bg-gray-50 rounded border border-gray-200 h-full overflow-y-auto\">\n            {content || <span className=\"text-gray-400\">({localize('com_sop_empty_file')})</span>}\n        </div>\n    );\n};\n\ninterface ImageFileViewerProps {\n    filePath: string;\n    vid?: string | number;\n    fileName?: string;\n    className?: string;\n}\n\nconst ImageFileViewer = ({ filePath, vid, fileName = 'image', className = \"\" }: ImageFileViewerProps) => {\n    const [imageUrl, setImageUrl] = useState<string>('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState<string | null>(null);\n    const localize = useLocalize(); // 假设你已有这个 hook\n\n    useEffect(() => {\n        if (!filePath) {\n            setError('No file path provided');\n            setLoading(false);\n            return;\n        }\n\n        const fetchImageSource = async () => {\n            try {\n                setLoading(true);\n                const res = await getLinsightFileDownloadApi(filePath, vid);\n                const url = __APP_ENV__.BASE_URL + res.data.file_path;\n\n                setImageUrl(url);\n                setError(null);\n            } catch (err) {\n                setError(err instanceof Error ? err.message : 'Unknown error');\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchImageSource();\n    }, [filePath, vid]);\n\n    if (loading) {\n        return (\n            <div className=\"p-4 text-sm text-gray-500\">\n                <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"p-4 text-sm text-red-500\">\n                {localize('com_sop_file_load_error')}: {error}\n            </div>\n        );\n    }\n\n    return (\n        <div className={`flex justify-center items-center overflow-hidden ${className}`}>\n            <img\n                className=\"max-w-full h-auto border object-contain\"\n                src={imageUrl || \"/placeholder.svg\"}\n                alt={fileName}\n                onError={(e) => {\n                    (e.target as HTMLImageElement).src = \"/placeholder.svg\";\n                }}\n            />\n        </div>\n    );\n};\n\ninterface CsvTableViewerProps {\n    csvText: string;\n}\n\nexport function CsvTableViewer({ csvText }: CsvTableViewerProps) {\n    // 改进的CSV解析：只有逗号后无空格才分割\n    const parseCsv = (text: string) => {\n        const rows = text.split('\\n').filter(row => row.trim() !== '');\n        return rows.map(row => {\n            // 关键修改：使用负向零宽断言 (?<!\\s) 确保逗号前没有空格\n            const cells = row.split(/,(?!\\s)/);\n            return cells.map(cell => cell.trim());\n        });\n    };\n\n    const parsedData = parseCsv(csvText);\n    const headers = parsedData[0] || [];\n    const rows = parsedData.slice(1);\n\n    const isUrl = (str: string) => {\n        try {\n            new URL(str);\n            return true;\n        } catch {\n            return false;\n        }\n    };\n\n    return (\n        <div className=\"rounded-md border mx-4\">\n            <Table>\n                <TableHeader>\n                    <TableRow>\n                        {headers.map((header, index) => (\n                            <TableHead key={index} className=\"font-medium\">\n                                {header}\n                            </TableHead>\n                        ))}\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {rows.map((row, rowIndex) => (\n                        <TableRow key={rowIndex}>\n                            {row.map((cell, cellIndex) => (\n                                <TableCell key={cellIndex}>\n                                    {isUrl(cell) ? (\n                                        <a\n                                            href={cell}\n                                            target=\"_blank\"\n                                            rel=\"noopener noreferrer\"\n                                            className=\"text-blue-600 hover:underline break-all\"\n                                        >\n                                            {cell.length > 30 ? `${cell.substring(0, 30)}...` : cell}\n                                        </a>\n                                    ) : (\n                                        cell\n                                    )}\n                                </TableCell>\n                            ))}\n                        </TableRow>\n                    ))}\n                </TableBody>\n            </Table>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/FilePreviewDrawer.tsx",
    "content": "\"use client\"\nimport { ChevronLeft } from 'lucide-react'\nimport type React from \"react\"\nimport { useMemo } from \"react\"\nimport { useLocalize } from \"~/hooks\"\nimport { Button, TooltipAnchor } from \"../ui\"\nimport FileIcon from \"../ui/icon/File\"\nimport { Sheet, SheetContent, SheetHeader } from \"../ui/Sheet\"\nimport DownloadResultFileBtn from './components/DownloadResultFileBtn'\nimport FilePreview from \"./FilePreview\"\n\ninterface FileItem {\n    file_id: string\n    file_md5: string\n    file_name: string\n    file_path: string\n    file_url: string\n}\n\ninterface FilePreviewDrawerProps {\n    // 原有方式的 props\n    files?: FileItem[]\n    currentFileId?: string\n    onFileChange?: (fileId: string) => void\n    downloadFile?: (file: any) => void\n\n    // 新增：直接文件预览方式的 props\n    directFile?: { name: string, url: string }\n\n    // 通用 props\n    isOpen: boolean\n    onOpenChange: (open: boolean) => void\n    onBack?: () => void\n    children?: React.ReactNode\n    vid?: string\n}\n\nexport default function FilePreviewDrawer({\n    files,\n    isOpen,\n    vid,\n    onOpenChange,\n    currentFileId,\n    onFileChange,\n    downloadFile,\n    directFile,\n    onBack,\n}: FilePreviewDrawerProps) {\n    const localize = useLocalize()\n    // const [selectedFileId, setSelectedFileId] = useState(currentFileId || files?.[0]?.file_id || \"\")\n\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\"\n    }\n\n    // 处理文件切换\n    const handleFileChange = (fileId: string) => {\n        // setSelectedFileId(fileId)\n        onFileChange?.(fileId)\n    }\n\n    // 获取当前显示的文件信息\n    const currentDisplayFile = useMemo(() => {\n        if (directFile) {\n            return {\n                file_id: 'direct-file',\n                ...directFile\n            }\n        }\n\n        if (files && currentFileId) {\n            return files.find((file) => file.file_id === currentFileId)\n        }\n\n        return null\n    }, [files, currentFileId, directFile])\n\n    if (!isOpen) return null\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onOpenChange}>\n            <SheetContent className=\"w-[800px] sm:max-w-[800px] p-0\">\n                <SheetHeader className=\"px-6 py-4\">\n                    <div className=\"flex items-center justify-between\">\n                        <div className=\"flex items-center space-x-3 flex-1\">\n                            {/* 返回按钮 */}\n                            {onBack && (\n                                <Button variant=\"outline\" size=\"icon\" onClick={() => onBack()} className=\"h-8 w-8\">\n                                    <ChevronLeft className=\"h-4 w-4\" />\n                                </Button>\n                            )}\n                            {/* 文件信息显示 */}\n                            <div className=\"flex items-center space-x-3 flex-1\">\n                                <div className=\"flex items-center space-x-3\">\n\n                                    {currentDisplayFile && (\n                                        <FileIcon\n                                            type={getFileExtension(currentDisplayFile.file_name)}\n                                            className=\"w-4 h-4\"\n                                        />\n                                    )}\n                                    <TooltipAnchor side=\"bottom\" description={currentDisplayFile?.file_name || localize('com_sop_select_file')}>\n                                        <p className=\"font-medium text-gray-900 truncate max-w-96\">\n                                            {currentDisplayFile?.file_name || localize('com_sop_select_file')}\n                                        </p>\n                                    </TooltipAnchor>\n                                </div>\n\n                                {/* 下载按钮 */}\n                                <TooltipAnchor side=\"bottom\" showSide >\n                                    <DownloadResultFileBtn file={currentDisplayFile} onDownloadFile={downloadFile} />\n                                    {/* <Button\n                                        variant=\"ghost\"\n                                        size=\"icon\"\n                                        onClick={() => downloadFile?.(currentDisplayFile)}\n                                        className=\"h-8 w-8\"\n                                        disabled={!currentDisplayFile}\n                                    >\n                                        <Download size={14} />\n                                    </Button> */}\n                                </TooltipAnchor>\n                            </div>\n                        </div>\n                    </div>\n                </SheetHeader>\n\n                {/* 预览内容区域 */}\n                <div className=\"flex-1 overflow-auto\">\n                    <FilePreview\n                        files={files}\n                        fileId={currentFileId}\n                        vid={vid}\n                        currentDisplayFile={currentDisplayFile}\n                        onDownloadFile={downloadFile}\n                    />\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/Header.tsx",
    "content": "import { FileText, MessageCircleMoreIcon } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '~/components/ui/Select';\nimport { useConversationsInfiniteQuery } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\nimport { useLinsightManager } from '~/hooks/useLinsightManager';\nimport { getFileExtension } from '~/utils';\nimport ShareChat from '../Share/ShareChat';\nimport { Button, Skeleton } from '../ui';\nimport FileIcon from '../ui/icon/File';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/Popover';\n\nexport const Header = ({ isLoading, chatId, isSharePage, setVersionId, versionId, versions }) => {\n    const { getLinsight } = useLinsightManager()\n    const localize = useLocalize()\n    const linsight = useMemo(() => {\n        return getLinsight(versionId)\n    }, [getLinsight, versionId])\n\n    console.log('linsight :>> ', linsight);\n    const title = useCurrentTitle()\n\n    return (\n        <div className=\"flex items-center justify-between p-4\">\n            {isLoading ?\n                <Skeleton className=\"h-7 w-[250px] rounded-lg bg-gray-100 opacity-100\" />\n                : <div className=\"flex items-center gap-3\">\n                    <FileText className=\"size-4\" />\n                    <span className=\"text-base font-medium text-gray-900\">\n                        {title || linsight?.title}\n                    </span>\n                </div>\n            }\n\n            <div className=\"flex items-center gap-3\">\n                {!isSharePage && <ShareChat type='linsight_session' chatId={linsight?.session_id} versionId={versionId} />}\n\n                <Popover>\n                    <PopoverTrigger asChild>\n                        <Button\n                            variant=\"outline\"\n                            size=\"sm\"\n                            className=\"h-7 px-3 rounded-lg shadow-sm focus-visible:outline-0\"\n                        >\n                            <MessageCircleMoreIcon className=\"size-4\" />\n                            <span className=\"text-xs\">{localize('com_sop_task_description')}</span>\n                        </Button>\n                    </PopoverTrigger>\n                    <PopoverContent hideWhenDetached className=\"w-96 border bg-white rounded-xl\">\n                        <p className='text-sm font-bold mb-2 flex gap-1.5 items-center'>\n                            <div className='size-5 rounded-sm overflow-hidden'>\n                                <div className='size-full rounded-full rounded-br-2xl bg-primary text-white text-center scale-75'>\n                                    <span className='relative -top-1 '>...</span>\n                                </div>\n                            </div>\n                            {localize('com_sop_task_description')}\n                        </p>\n                        <div\n                            className=\"text-sm overflow-y-auto max-h-[calc(1.25rem*8)]\" // 1.25rem 是单行文本高度，8行总高度\n                            style={{\n                                lineHeight: '1.25',\n                                scrollbarWidth: 'thin'\n                            }}\n                        >\n                            <p className=\"mb-3\"\n                                style={{\n                                    display: '-webkit-box',\n                                    WebkitLineClamp: 'unset',\n                                    WebkitBoxOrient: 'vertical',\n                                    marginBottom: linsight?.files.length ? '0.75rem' : '0'\n                                }}\n                            >\n                                {linsight?.question || localize('com_sop_no_task_description')}\n                            </p>\n\n                            {linsight?.files.length > 0 && (\n                                <div className=\"space-y-2\">\n                                    {linsight?.files.map(file => (\n                                        <div key={file.file_id} className=\"flex items-center space-x-3\">\n                                            <FileIcon className='size-5 min-w-4' type={getFileExtension(file.file_name)} />\n                                            <span className=\"text-sm text-gray-900 flex-1 truncate\">\n                                                {file.file_name}\n                                            </span>\n                                        </div>\n                                    ))}\n                                </div>\n                            )}\n                        </div>\n                    </PopoverContent>\n                </Popover>\n\n                {\n                    versions.length > 0 && <Select value={versionId} disabled={isSharePage} onValueChange={setVersionId}>\n                        <SelectTrigger className=\"h-7 rounded-lg px-3 border bg-white hover:bg-gray-50 data-[state=open]:border-blue-500\">\n                            <div className=\"flex items-center gap-2\">\n                                <span className=\"text-xs font-normal text-gray-600\">{localize('com_sop_task_version')} {versions.find(task => task.id === versionId)?.name}</span>\n                            </div>\n                        </SelectTrigger>\n                        <SelectContent className=\"bg-white rounded-lg p-2 w-52 shadow-md\">\n                            {\n                                versions.map(task => <SelectItem key={task.id} value={task.id} className=\"text-xs px-3 py-2 hover:bg-gray-50\">\n                                    {task.name}\n                                </SelectItem>)\n                            }\n                        </SelectContent>\n                    </Select>\n                }\n            </div>\n        </div>\n    );\n};\n\n\nconst useCurrentTitle = () => {\n    const { conversationId } = useParams();\n\n    const { data } =\n        useConversationsInfiniteQuery(\n            {\n                pageNumber: '1',\n                isArchived: false,\n            },\n        );\n\n    const title = useMemo(() => {\n        // 初始化列表or搜索数据获取\n        const conversations = data?.pages.flatMap((page) => page.conversations) ||\n            [];\n        const conversation = conversations.find((vo) => vo.conversationId === conversationId);\n        return conversation?.title\n    }, [conversationId, data]);\n\n    return title\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/SOPEditor.tsx",
    "content": "import { AnimatePresence, motion } from 'framer-motion';\nimport { PencilLineIcon } from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { saveSop, startLinsight } from '~/api/linsight';\nimport { useLinsightManager, useLinsightSessionManager } from '~/hooks/useLinsightManager';\nimport { useLocalize } from '~/hooks';\nimport { Button, Textarea } from '../ui';\nimport SopMarkdown from './SopMarkdown';\nimport ErrorDisplay from './components/ErrorDisplay';\nimport { ShareSameSopControls } from '.';\n\nexport const enum SopStatus {\n    /* 未开始 */\n    NotStarted = 'not_started',\n    /* SOP生成中 */\n    SopGenerating = 'sopGenerating',\n    /* SOP生成完成 */\n    SopGenerated = 'sopGenerated',\n    /* 开始执行 */\n    Running = 'running',\n    /* 执行完成 */\n    completed = 'completed',\n    /* 反馈完成 */\n    FeedbackCompleted = 'feedbackCompleted',\n    /* stop */\n    Stoped = 'stoped'\n}\n\nconst slideDownAnimation = {\n    initial: { y: 100, opacity: 0 },\n    animate: { y: 0, opacity: 1 },\n    exit: { y: 0, opacity: 1 },\n    transition: { duration: 0.3, ease: \"easeInOut\" }\n};\n\n// 重新规划\nconst SOPEditorArea = ({ setOpenAreaText, onsubmit }) => {\n    const [value, setValue] = useState('');\n    const localize = useLocalize();\n\n    const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n        if (e.key === 'Enter' && !e.shiftKey) {\n            e.preventDefault(); // 阻止默认换行行为\n            if (value.trim() !== '') {\n                submit()\n            }\n        }\n    };\n\n    const submit = () => {\n        onsubmit(value);\n        setValue('');\n        setOpenAreaText(false);\n    }\n\n    return <div className='linsight-card w-10/12 mx-auto relative'>\n        <Textarea\n            value={value}\n            onChange={(e) => setValue(e.target.value)}\n            onKeyDown={handleKeyDown}\n            placeholder={localize('com_sop_replan_placeholder')}\n            className='border-none ![box-shadow:initial]' />\n        <div className='flex justify-end gap-2'>\n            <Button variant=\"outline\" className=\"px-6\" onClick={() => setOpenAreaText(false)}>\n                {localize('com_ui_cancel')}\n            </Button>\n            <Button disabled={value === ''} className=\"px-6\" onClick={submit}>{localize('com_sop_confirm_replan')}</Button>\n        </div>\n    </div>\n}\n\nexport const SOPEditor = ({ versionId, isSharePage, sopError, onRun }) => {\n    const [openAreaText, setOpenAreaText] = useState(false)\n    const { getLinsight, updateLinsight } = useLinsightManager()\n    const markdownRef = useRef(null)\n    const localize = useLocalize()\n\n    const linsight = useMemo(() => {\n        const linsight = getLinsight(versionId)\n        return linsight || { sop: '', question: '', tools: [], status: '' }\n    }, [getLinsight, versionId])\n\n    // start\n    const handleRun = () => {\n        const sop = markdownRef.current.getValue()\n\n        saveSop({\n            sop_content: sop,\n            linsight_session_version_id: versionId\n        }).then(res => {\n            if (res.status_code === 200) {\n                startLinsight(versionId).then(res => {\n                    if (res.status_code === 200) {\n                        updateLinsight(versionId, { sop, status: SopStatus.Running })\n                    }\n\n                    onRun()\n                })\n            }\n        }).catch(err => {\n            console.error('err :>> ', err);\n        })\n    }\n\n\n    const { setLinsightSubmission } = useLinsightSessionManager(versionId)\n    const handleReExcute = (prompt) => {\n        setLinsightSubmission(versionId, {\n            isNew: false,\n            files: [],\n            question: linsight.question,\n            feedback: prompt,\n            tools: [],\n            model: 'gpt-4',\n            enableWebSearch: false,\n            useKnowledgeBase: true\n        });\n    }\n\n    const showSopEdit = [SopStatus.Running, SopStatus.completed, SopStatus.FeedbackCompleted, SopStatus.Stoped].includes(linsight.status)\n\n    // auto save\n    const sopValueFuncRef = useRef<null | ((id) => void)>(null)\n    const [disabled, setDisabled] = useStartDisable(linsight.status, linsight.sop)\n    const handleChange = (val) => {\n        console.log('sop input :>> ');\n        sopValueFuncRef.current = (_v) => {\n            saveSop({\n                sop_content: val,\n                linsight_session_version_id: _v\n            }).then(res => {\n                if (res.status_code === 200) {\n                    updateLinsight(_v, { sop: val, inputSop: true })\n                }\n            }).catch(err => {\n                console.error('err :>> ', err);\n            })\n        }\n\n        setDisabled(val.trim() === '')\n    }\n    useEffect(() => {\n        const timer = setInterval(() => {\n            if (sopValueFuncRef.current) {\n                sopValueFuncRef.current(versionId)\n                sopValueFuncRef.current = null\n            }\n        }, 2000);\n\n        return () => {\n            clearInterval(timer)\n            sopValueFuncRef.current?.(versionId)\n            sopValueFuncRef.current = null\n        }\n    }, [versionId])\n\n    return (\n        <motion.div\n            className={`${showSopEdit ? 'w-[30%]' : 'w-[70%]'} flex flex-col h-full relative rounded-2xl border border-[#E8E9ED] bg-white`}\n            initial={{ width: showSopEdit ? '30%' : '30%' }}\n            animate={{ width: showSopEdit ? '30%' : '70%' }}\n            transition={{ duration: 0.3, ease: \"easeInOut\" }}\n        >\n            <div className='flex items-center justify-between border-b border-b-[#E8E9ED] bg-[#FDFEFF] p-2 px-4 text-[13px] text-[#737780] rounded-t-2xl'>\n                <div className='flex items-center gap-2'>\n                    <PencilLineIcon size={14} />\n                    {localize('com_sop_editor_title')}\n                </div>\n                {/* <CopyButton text={linsight.sop} /> */}\n            </div>\n\n            {linsight.status === SopStatus.SopGenerating && !linsight.sop?.trim() && <p className='p-6 text-sm flex gap-2'>\n                <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n            </p>}\n            {linsight.sopError &&\n                <div className='p-2 m-2'>\n                    <ErrorDisplay title={localize('com_sop_sop_generation_failed')} taskError={linsight.sopError} />\n                </div>\n            }\n            <div className={`p-8 linsight-markdown flex-1 min-h-0 ${linsight.sopError && 'visible-none'}`}>\n                <SopMarkdown ref={markdownRef} linsight={linsight} hidden={linsight.sopError} disable={showSopEdit || isSharePage} onChange={handleChange} />\n            </div>\n\n            {linsight.status === SopStatus.SopGenerated && !isSharePage && (\n                <AnimatePresence>\n                    <motion.div\n                        className='absolute bottom-6 w-full'\n                        {...slideDownAnimation}\n                    >\n                        {!openAreaText ? (\n                            <div className='linsight-card w-10/12 mx-auto relative'>\n                                {/* <span className='text-lg'>SOP</span> */}\n                                <p className='mt-0.5 text-sm flex gap-2'>\n                                    <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n                                    {localize('com_sop_confirm_execution')}\n                                </p>\n                                <div className='absolute right-4 bottom-3 flex gap-2'>\n                                    <Button variant=\"outline\" className=\"px-3\" onClick={() => {\n                                        const sop = markdownRef.current.getValue()\n                                        sop?.trim() === '' ? handleReExcute('') : setOpenAreaText(true)\n                                    }}>\n                                        {localize('com_sop_regenerate_manual')}\n                                    </Button>\n                                    <Button className=\"px-6\" disabled={sopError || disabled} onClick={handleRun}>\n                                        {localize('com_sop_start_execution')}\n                                    </Button>\n                                </div>\n                            </div>\n                        ) : (\n                            <SOPEditorArea setOpenAreaText={setOpenAreaText} onsubmit={handleReExcute} />\n                        )}\n                    </motion.div>\n                </AnimatePresence>\n            )}\n\n            {\n                linsight.status === SopStatus.SopGenerated && isSharePage && <ShareSameSopControls name={linsight.title} />\n            }\n        </motion.div>\n    );\n};\n\n\nconst useStartDisable = (status: SopStatus, sop: string) => {\n    const [disabled, setDisabled] = useState(false)\n    const _sop = sop.trim()\n    useEffect(() => {\n        if (status === SopStatus.SopGenerating) {\n            setDisabled(false)\n        }\n    }, [status])\n\n    useEffect(() => {\n        setDisabled(_sop === '')\n    }, [sop])\n\n    return [disabled, setDisabled]\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/SopMarkdown.tsx",
    "content": "import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useRecoilValue } from 'recoil';\nimport Vditor from \"vditor\";\nimport \"vditor/dist/index.css\";\nimport { useGetBsConfig, useGetLinsightToolList, useGetOrgToolList, useGetPersonalToolList } from '~/data-provider';\nimport { useLocalize } from '~/hooks';\nimport store from '~/store';\nimport { LinsightInfo } from \"~/store/linsight\";\nimport { SopStatus } from \"./SOPEditor\";\nimport SopToolsDown from \"./SopToolsDown\";\n\n// 错误工具toolip提示\nconst ToolErrorTip = () => {\n    const localize = useLocalize();\n    const [tooltipState, setTooltipState] = useState({\n        show: false,\n        message: localize('com_sop_tool_error'),\n        position: { left: 0, top: 0 }\n    });\n    const currentElementRef = useRef<HTMLElement | null>(null);\n    const tooltipRef = useRef<HTMLDivElement>(null);\n\n    // 处理鼠标移入事件\n    const handleMouseOver = (e: MouseEvent) => {\n        const target = (e.target as HTMLElement).closest?.('.linsi-error');\n        if (!(target instanceof HTMLElement)) return;\n\n        currentElementRef.current = target;\n        const rect = target.getBoundingClientRect();\n        setTooltipState({\n            show: true,\n            message: localize('com_sop_tool_not_found'),\n            position: {\n                left: rect.left + rect.width / 2,\n                top: rect.top - 4\n            }\n        });\n    };\n\n    // 处理鼠标移出事件\n    const handleMouseOut = (e: MouseEvent) => {\n        const relatedTarget = e.relatedTarget as HTMLElement;\n        if (\n            !relatedTarget ||\n            !currentElementRef.current?.contains(relatedTarget) &&\n            !tooltipRef.current?.contains(relatedTarget)\n        ) {\n            setTooltipState(prev => ({ ...prev, show: false }));\n        }\n    };\n\n    // 处理滚动事件\n    const handleScroll = () => {\n        if (currentElementRef.current && tooltipState.show) {\n            const rect = currentElementRef.current.getBoundingClientRect();\n            setTooltipState(prev => ({\n                ...prev,\n                position: {\n                    left: rect.left + rect.width / 2,\n                    top: rect.top - 4\n                }\n            }));\n        }\n    };\n\n    useEffect(() => {\n        const container = document.getElementById('vditor');\n        if (!container) return\n\n        container.addEventListener('mouseover', handleMouseOver as EventListener);\n        container.addEventListener('mouseout', handleMouseOut as EventListener);\n        window.addEventListener('scroll', handleScroll, true);\n\n        return () => {\n            container.removeEventListener('mouseover', handleMouseOver as EventListener);\n            container.removeEventListener('mouseout', handleMouseOut as EventListener);\n            window.removeEventListener('scroll', handleScroll, true);\n        };\n    }, []);\n\n    return (\n        <div\n            ref={tooltipRef}\n            className={`pointer-events-none fixed transition-opacity ${tooltipState.show ? 'opacity-100' : 'opacity-0'\n                }`}\n            style={{\n                left: tooltipState.position.left,\n                top: tooltipState.position.top,\n                transform: 'translateX(-50%) translateY(-100%)'\n            }}\n        >\n            <div className=\"bg-red-100 text-red-500 text-xs px-2 py-1 rounded shadow-lg\">\n                {tooltipState.message}\n                <div className=\"absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-full w-0 h-0 border-l-4 border-r-4 border-t-4 border-l-transparent border-r-transparent border-t-red-100\" />\n            </div>\n        </div>\n    );\n};\n\ninterface MarkdownProps {\n    linsight: LinsightInfo,\n    disable?: boolean;\n    hidden?: boolean;\n}\n\ninterface MarkdownRef {\n    getValue: () => string;\n}\n\nconst SopMarkdown = forwardRef<MarkdownRef, MarkdownProps>((props, ref) => {\n    const { linsight, disable, hidden = false, onChange } = props;\n    const { sop: value = '', inputSop, files, tools } = linsight\n    const localize = useLocalize()\n\n    const veditorRef = useRef<any>(null);\n    const inserRef = useRef<any>(null);\n    const boxRef = useRef<any>(null);\n    const scrollBoxRef = useRef<any>(null);\n    useAutoHeight(boxRef)\n\n    const { nameToValueRef, valueToNameRef, buildTreeData: toolOptions } = useSopTools(linsight)\n    const [RenderingCompleted, setRenderingCompleted] = useState(false);\n\n    const currentLang = useRecoilValue(store.lang);\n\n    // 将应用语言映射为 Vditor 支持的语言\n    const mapLangToVditor = (lang: string) => {\n        const lower = (lang || 'en').toLowerCase();\n        if (lower.startsWith('zh')) return 'zh_CN';\n        if (lower.startsWith('ja')) return 'ja_JP';\n        if (lower.startsWith('ko')) return 'ko_KR';\n        return 'en_US';\n    };\n\n    useEffect(() => {\n        const vditorDom = document.getElementById('vditor');\n        if (!vditorDom) return\n\n        const vditor = new Vditor(\"vditor\", {\n            value,\n            cdn: location.origin + __APP_ENV__.BASE_URL + '/vditor',\n            toolbar: [],\n            cache: {\n                enable: false\n            },\n            height: boxRef.current.clientHeight,\n            mode: \"wysiwyg\",\n            placeholder: \"\",\n            lang: mapLangToVditor(currentLang),\n            after() {\n                setRenderingCompleted(true);\n                veditorRef.current = vditor;\n                scrollBoxRef.current = vditorDom.querySelector('.vditor-reset');\n                // 拦截粘贴\n                const editorElement = vditor.vditor[vditor.vditor.currentMode].element\n                getMarkdownPaste(editorElement, (text) => {\n                    const value = replaceBracesToMarkers(text, nameToValueRef.current)\n                    const name = replaceMarkersToBraces(value, valueToNameRef.current, nameToValueRef.current)\n                    // inset方法可及时渲染；update可覆盖选区； 只有包含变量使用inset，尽量使用update\n                    const regex = /\\{\\{[@#](.*?)[@#]\\}\\}/g;\n                    regex.test(name) ? vditor.insertValue(name) : vditor.updateValue(name)\n                })\n            },\n            input: (val) => onChange(replaceBracesToMarkers(val, nameToValueRef.current)),\n            hint: {\n                parse: false, // 必须\n                placeholder: hidden ? {} : {\n                    delay: 2000,\n                    text: localize('com_agent_input_knowledge_tool'),\n                },\n                extend: [{\n                    key: '@',\n                    callback(open, insert) {\n                        const pos = vditor.getCursorPosition()\n                        // console.log('pos :>> ', open, pos);\n                        setMenuPosition({ left: pos.left, top: pos.top + 28 });\n                        setMenuOpen(open);\n\n                        inserRef.current = insert;\n                    }\n                }]\n            },\n            preview: {\n                delay: 500,\n                markdown: {\n                    toc: true,\n                    mark: true,\n                    footnotes: true,\n                    autoSpace: true,\n                },\n                math: {\n                    inlineDigit: true,\n                }\n            },\n            tab: \"\\t\",\n            offPaste: true\n        });\n\n        return () => {\n            veditorRef.current?.destroy();\n            veditorRef.current = null\n        };\n    }, [currentLang]);\n\n    useEffect(() => {\n        // 用户手动输入不再更新setValue markdown\n        if (!inputSop && (value === '' || value)) {\n            // 回显值\n            veditorRef.current?.setValue(replaceMarkersToBraces(value, valueToNameRef.current, nameToValueRef.current))\n        }\n\n        if (scrollBoxRef.current && linsight.status !== SopStatus.SopGenerated) {\n            scrollBoxRef.current.scrollTop = scrollBoxRef.current.scrollHeight\n        }\n    }, [value, linsight.status, inputSop, RenderingCompleted])\n\n    // 开启/禁用\n    useEffect(() => {\n        if (disable) {\n            veditorRef.current?.disabled()\n        } else {\n            veditorRef.current?.enable()\n        }\n    }, [disable, RenderingCompleted])\n\n    // 暴露方法给父组件\n    useImperativeHandle(ref, () => ({\n        getValue: () => {\n            return replaceBracesToMarkers(veditorRef.current?.getValue(), nameToValueRef.current)\n        },\n    }));\n\n    const [menuOpen, setMenuOpen] = useState(false);\n    const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 });\n\n    console.log('toolOptions :>> ', toolOptions);\n\n    const handleChange = (val) => {\n        inserRef.current(`{{@${val.label}@}}`);\n        setMenuOpen(false)\n    }\n\n    useAtTip(scrollBoxRef)\n\n    return <div ref={boxRef} className=\"relative h-full\">\n        <div id=\"vditor\" className=\"linsight-vditor border-none\" />\n        {/* 工具选择 */}\n        <SopToolsDown\n            open={menuOpen}\n            parentRef={boxRef}\n            position={menuPosition}\n            options={toolOptions}\n            onChange={handleChange}\n            onClose={() => setMenuOpen(false)}\n        />\n        <ToolErrorTip />\n    </div >;\n});\n\n\nexport default SopMarkdown;\n\n\n// 工具整合\nconst useSopTools = (linsight) => {\n    const { id, files, file_list, tools, org_knowledge_enabled, personal_knowledge_enabled } = linsight\n    const { data: bsConfig } = useGetBsConfig()\n    const localize = useLocalize()\n\n    const { data: linsightTools } = useGetLinsightToolList();\n    const { data: personalTool } = useGetPersonalToolList();\n    const { data: orgTools } = useGetOrgToolList({ page: 1 });\n\n    const nameToValueRef = useRef({});\n    const valueToNameRef = useRef({});\n    // 整合数据为二级树结构\n    const buildTreeData = useMemo(() => {\n        nameToValueRef.current = {};\n        valueToNameRef.current = {};\n        const tree: { label: string; value: string; desc: string; children: any[] }[] = [];\n\n        // 1. 转换files数据\n        if (files?.length > 0) {\n            const fileNode: any = {\n                label: localize('com_sop_upload_file'),\n                value: \"\",\n                desc: '',\n                children: []\n            };\n            const _name = localize('com_sop_upload_file_directory');\n            const _value = `${localize('com_sop_upload_file_directory')}:${bsConfig?.linsight_cache_dir}/${id?.substring(0, 8)}`;\n            nameToValueRef.current[_name] = _value;\n            valueToNameRef.current[_value] = _name;\n\n            fileNode.children = [{\n                label: _name,\n                value: _value,\n                desc: '',\n            }, ...files?.map(file => {\n                const name = file.file_name;\n                const value = `${file.file_name}的文件储存信息:{'文件储存在语义检索库中的id':'${file.file_id}','文件储存地址':'./${decodeURIComponent(file.markdown_filename)}'}`;\n                nameToValueRef.current[name] = value;\n                valueToNameRef.current[value] = name;\n                return {\n                    label: file.file_name,\n                    value: file.file_id,\n                    desc: '',\n                    children: []\n                }\n            }) || []];\n            tree.push(fileNode);\n\n            // 补充结果文件到 ref映射\n            if (file_list?.length) {\n                file_list.forEach(file => {\n                    const name = file.file_name;\n                    const value = `${file.file_name}的文件储存信息:{'文件储存在语义检索库中的id':'${file.file_id}','文件储存地址':'./${decodeURIComponent(file.markdown_filename)}'}`;\n                    nameToValueRef.current[name] = value;\n                    valueToNameRef.current[value] = name;\n                });\n            }\n        }\n\n        // 2. 转换orgTools数据\n        if (org_knowledge_enabled && orgTools && orgTools.length > 0) {\n            tree.push({\n                label: localize('com_sop_organize_knowledge_base'),\n                value: \"org_knowledge_base\", // 使用特殊标识避免ID冲突\n                desc: '',\n                children: orgTools.map(tool => {\n                    const name = tool.name;\n                    const value = `${tool.name}的储存信息:{'知识库储存在语义检索库中的id':'${tool.id}'}`\n                    nameToValueRef.current[name] = value;\n                    valueToNameRef.current[value] = name;\n                    return {\n                        label: tool.name,\n                        value: tool.id,\n                        desc: tool.description,\n                        children: []\n                    }\n                })\n            });\n        }\n\n        // 3. 转换PersonalTool数据（单对象转数组）\n        if (personal_knowledge_enabled && personalTool && personalTool[0]) {\n            tree.push({\n                // label: personalTool[0].name,\n                label: localize('com_sop_personal_knowledge_base'),\n                value: personalTool[0].id,\n                desc: '',\n                children: [] // 个人知识库没有子节点\n            });\n            const name = personalTool[0].name;\n            const value = `${personalTool[0].name}的储存信息:{'知识库储存在语义检索库中的id':'${personalTool[0].id}'}`\n            nameToValueRef.current[name] = value;\n            valueToNameRef.current[value] = name;\n        }\n\n        // 4. 转换linsightTools数据\n        if (linsightTools && linsightTools.length > 0) {\n            linsightTools.forEach(toolGroup => {\n                tree.push({\n                    label: toolGroup.name,\n                    value: toolGroup.id,\n                    desc: toolGroup.description,\n                    children: (toolGroup.children || []).map(child => {\n                        const name = child.name;\n                        const value = `${child.tool_key}`\n                        nameToValueRef.current[name] = value;\n                        valueToNameRef.current[value] = name;\n                        return {\n                            label: child.name,\n                            value: child.tool_key,\n                            desc: child.desc,\n                            children: [] // 二级节点无子节点\n                        }\n                    })\n                });\n            });\n        }\n        // 5. 转换tools数据\n        if (tools && tools.length > 0) {\n            tools.forEach(toolGroup => {\n                tree.push({\n                    label: toolGroup.name,\n                    value: toolGroup.id,\n                    desc: toolGroup.description,\n                    children: (toolGroup.children || []).map(child => {\n                        const name = child.name;\n                        const value = `${child.tool_key}`\n                        nameToValueRef.current[name] = value;\n                        valueToNameRef.current[value] = name;\n                        return {\n                            label: child.name,\n                            value: child.tool_key,\n                            desc: child.desc,\n                            children: []\n                        }\n                    })\n                });\n            });\n        }\n\n        return tree;\n    }, [linsightTools, personalTool, orgTools, files, tools, localize]);\n\n    console.log('整合后的树结构:', buildTreeData);\n    return { nameToValueRef, valueToNameRef, buildTreeData };\n};\n\n// 滚动、resize隐藏@标记\nconst useAtTip = (scrollBoxRef) => {\n    useEffect(() => {\n\n        const handleHideAtDom = () => {\n            const atDom = document.querySelector('#vditor-placeholder-at');\n            if (atDom) {\n                atDom.style.display = 'none';\n            }\n        };\n        let resizeObserver;\n        if (scrollBoxRef.current) {\n            scrollBoxRef.current.addEventListener('scroll', handleHideAtDom);\n            // Set up ResizeObserver for width changes\n            resizeObserver = new ResizeObserver(handleHideAtDom);\n            resizeObserver.observe(scrollBoxRef.current);\n        }\n\n        return () => {\n            if (scrollBoxRef.current) {\n                scrollBoxRef.current.removeEventListener('scroll', handleHideAtDom);\n            }\n            if (resizeObserver) {\n                resizeObserver.disconnect();\n            }\n        };\n    }, [scrollBoxRef.current])\n}\n\n// 自适应高度\nconst useAutoHeight = (boxRef) => {\n    useEffect(() => {\n        if (!boxRef.current) return;\n\n        const vditorDom = document.getElementById(\"vditor\");\n        if (!vditorDom) return;\n\n        // 监听 boxRef 的高度变化\n        const resizeObserver = new ResizeObserver((entries) => {\n            for (const entry of entries) {\n                const { height } = entry.contentRect;\n                vditorDom.style.height = `${height}px`;\n            }\n        });\n\n        resizeObserver.observe(boxRef.current);\n\n        // 组件卸载时取消监听\n        return () => {\n            resizeObserver.disconnect();\n        };\n    }, []);\n}\n\n// markdown粘贴逻辑\nconst getMarkdownPaste = async (editorElement, callBack) => {\n    // 监听粘贴事件\n    editorElement.addEventListener('paste', async (event) => {\n        // 1. 阻止默认粘贴行为\n        event.preventDefault();\n\n        // 2. 获取剪贴板数据\n        const clipboardData = event.clipboardData || window.clipboardData;\n\n        // 3. 处理不同类型的数据\n        let processedContent = '';\n\n        // 情况1: 纯文本处理\n        if (clipboardData.types.includes('text/plain')) {\n            const text = clipboardData.getData('text/plain');\n            processedContent = await processText(text); // 自定义文本处理函数\n        }\n\n        // 情况2: HTML内容处理 (如从网页复制)\n        // else if (clipboardData.types.includes('text/html')) {\n        //     const html = clipboardData.getData('text/html');\n        //     processedContent = await processHTML(html); // 自定义HTML处理函数\n        // }\n\n        // 情况3: 图片处理\n        // else if ([...clipboardData.items].some(item => item.type.includes('image'))) {\n        //     processedContent = await processImage(clipboardData); // 自定义图片处理\n        // }\n\n        // 4. 插入处理后的内容\n        if (processedContent) {\n            // 使用 Vditor API 插入内容\n\n            callBack(processedContent);\n            // 或者直接操作 DOM (适用于复杂插入)\n            // document.execCommand('insertHTML', false, processedContent);\n        }\n    });\n\n    // 示例处理函数\n    async function processText(text) {\n        // 在这里实现你的文本处理逻辑\n        return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    }\n\n    async function processHTML(html) {\n        // 示例：移除所有HTML标签只保留纯文本\n        const doc = new DOMParser().parseFromString(html, 'text/html');\n        return doc.body.textContent || \"\";\n    }\n\n    async function processImage(clipboardData) {\n        // 获取图片文件\n        const imageItem = [...clipboardData.items].find(item =>\n            item.type.includes('image')\n        );\n\n        if (!imageItem) return '';\n\n        const blob = imageItem.getAsFile();\n        const base64 = await convertBlobToBase64(blob);\n\n        // 返回 Markdown 图片格式\n        return `![粘贴图片](${base64})`;\n    }\n\n    function convertBlobToBase64(blob) {\n        return new Promise((resolve) => {\n            const reader = new FileReader();\n            reader.onloadend = () => resolve(reader.result);\n            reader.readAsDataURL(blob);\n        });\n    }\n}\n\n/**\n * 正向替换：将 @标记@ 替换为 {{value}} 格式\n * @param {string} inputStr - 输入字符串\n * @param {Object} valueToNameMap - 映射对象 {id: value}\n * @returns {string} - 替换后的字符串\n */\nfunction replaceMarkersToBraces(inputStr, valueToNameMap, nameToValueMap) {\n    const regex = /@([^@\\r\\n]+)@/g;\n    return inputStr.replace(regex, (match, id) => {\n        // 检查映射中是否存在该ID\n        if (Object.prototype.hasOwnProperty.call(valueToNameMap, id)) {\n            return `{{@${valueToNameMap[id]}@}}`;\n        }\n        // 反推回原始值\n        if (Object.prototype.hasOwnProperty.call(nameToValueMap, id)) {\n            return `{{@${id}@}}`;\n        }\n        // 文件不校验\n        const pattern = /([^@{}'\\.]+?\\.[^@{}'\\s]+)的文件储存信息:\\{(['\"])[^'\"]+\\2:\\s*(['\"])[^'\"]*\\3,\\s*(['\"])[^'\"]+\\4:\\s*(['\"])[^'\"]*\\5\\}/g\n        const _match = pattern.exec(id);\n        if (_match?.[1]) {\n            // 特殊关系记录\n            const name = _match[1];\n            const value = id;\n            valueToNameMap[value] = name;\n            nameToValueMap[name] = value;\n\n            return `{{@${_match[1]}@}}`;\n        }\n        // 只要包含 .md .html .csv .txt 这四种格式后缀的，都不校验\n        if (/(\\.md)|(\\.html)|(\\.csv)|(\\.txt)/g.test(id.toLowerCase())) {\n            return `{{@${id}@}}`;\n        }\n\n        console.warn('转换ui时未找到对应的ID  :>> ', valueToNameMap, id);\n        return `{{#${id}#}}`; // 未找到时标记红色\n    });\n}\n\n/**\n * 反向替换：将 {{value}} 替换为 @id@ 格式\n * @param {string} inputStr - 输入字符串\n * @param {Object} nameToValueMap - 映射对象 {value: id}\n * @returns {string} - 替换后的字符串\n */\nfunction replaceBracesToMarkers(inputStr, nameToValueMap) {\n    const regex = /\\{\\{[@#](.*?)[@#]\\}\\}/g;\n    return inputStr.replace(regex, (match, value) => {\n        // 检查映射中是否存在该值\n        if (Object.prototype.hasOwnProperty.call(nameToValueMap, value)) {\n            return `@${nameToValueMap[value]}@`;\n        }\n        console.warn('转换sop时未找到对应的工具  :>> ', nameToValueMap, value);\n        return `@${value}@`; // 未找到时保留原始值\n    });\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/SopToolsDown.tsx",
    "content": "import { ChevronRightIcon } from \"lucide-react\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/Tooltip2\";\n\nexport default function SopToolsDown({\n    open,\n    position = { top: 0, left: 0 },\n    value,\n    options,\n    onChange,\n    onClose,\n    parentRef\n}: {\n    open: boolean;\n    position?: { top: number; left: number };\n    value?: string;\n    options: {\n        label: string;\n        value?: string;\n        desc: string;\n        children?: {\n            label: string;\n            value: string;\n            desc: string;\n        }[];\n    }[];\n    onChange: (value: any) => void;\n    onClose: () => void;\n    parentRef?: React.RefObject<HTMLElement>;\n}) {\n    const [hoverIndex, setHoverIndex] = useState<number | null>(null);\n    const [adjustedPosition, setAdjustedPosition] = useState(position);\n    const popupRef = useRef<HTMLDivElement>(null);\n\n    // 初始化状态\n    useEffect(() => {\n        if (!open) {\n            setHoverIndex(null);\n            return;\n        }\n\n        // 根据当前值查找激活的菜单项\n        let foundActiveIndex: any = null;\n        options.forEach((option, index) => {\n            if (option.value === value) foundActiveIndex = index;\n            if (option.children) {\n                option.children.forEach(child => {\n                    if (child.value === value) foundActiveIndex = index;\n                });\n            }\n        });\n\n        setHoverIndex(foundActiveIndex);\n    }, [open, value, options]);\n\n    // 精确位置调整逻辑\n    useLayoutEffect(() => {\n        if (!open || !popupRef.current) return;\n\n        const popup = popupRef.current;\n        const popupRect = popup.getBoundingClientRect();\n\n        // 获取父容器边界（默认为视口）\n        const parentRect = parentRef?.current?.getBoundingClientRect() || {\n            top: 0,\n            left: 0,\n            right: window.innerWidth,\n            bottom: window.innerHeight,\n            width: window.innerWidth,\n            height: window.innerHeight\n        };\n\n        // 计算修正后的位置（考虑父元素偏移）\n        let adjustedTop = position.top;\n        let adjustedLeft = position.left;\n\n        // 1. 右侧超出 - 向左调整\n        if (adjustedLeft + popupRect.width > parentRect.right) {\n            adjustedLeft = parentRect.right - popupRect.width;\n        }\n\n        // 2. 底部超出 - 向上调整\n        if (adjustedTop + popupRect.height > parentRect.bottom) {\n            adjustedTop = parentRect.bottom - popupRect.height;\n        }\n\n        // 3. 左侧超出 - 向右调整\n        if (adjustedLeft < parentRect.left) {\n            adjustedLeft = parentRect.left;\n        }\n\n        // 4. 顶部超出 - 向下调整\n        if (adjustedTop < parentRect.top) {\n            adjustedTop = parentRect.top;\n        }\n\n        // 5. 添加安全边距（确保不贴边）\n        const SAFE_MARGIN = 5;\n        adjustedTop = Math.max(parentRect.top + SAFE_MARGIN, Math.min(adjustedTop, parentRect.bottom - popupRect.height - SAFE_MARGIN));\n        adjustedLeft = Math.max(parentRect.left + SAFE_MARGIN, Math.min(adjustedLeft, parentRect.right - popupRect.width - SAFE_MARGIN));\n\n        setAdjustedPosition({ top: adjustedTop, left: adjustedLeft });\n    }, [open, position, parentRef]);\n\n    // 处理菜单交互\n    const handleParentHover = (index: number) => setHoverIndex(index);\n\n    const handleParentClick = (index: number, e: React.MouseEvent) => {\n        e.stopPropagation();\n        const option = options[index];\n\n        if (!option.children?.length && option.value) {\n            onChange(option);\n            onClose();\n            return;\n        }\n\n    };\n\n    const handleChildClick = (obj: any, e: React.MouseEvent) => {\n        e.stopPropagation();\n        onChange(obj);\n        onClose();\n    };\n\n    // 阻止背景滚动\n    useEffect(() => {\n        if (open) {\n            document.body.style.overflow = 'hidden';\n            return () => {\n                document.body.style.overflow = '';\n            };\n        }\n    }, [open]);\n\n    if (!open) return null;\n\n    return ReactDOM.createPortal(\n        <>\n            {/* 半透明蒙层 */}\n            <div\n                className=\"fixed inset-0 z-10\"\n                onClick={onClose}\n            />\n\n            {/* 下拉弹窗 */}\n            <div\n                ref={popupRef}\n                className=\"fixed z-10 bg-white shadow-lg rounded-md border border-gray-200\"\n                style={{\n                    top: adjustedPosition.top,\n                    left: adjustedPosition.left,\n                    transform: 'translateZ(0)' // 确保精确渲染\n                }}\n                onClick={(e) => e.stopPropagation()}\n            >\n                <div className=\"flex text-sm\">\n                    {/* 一级菜单 */}\n                    <div className=\"w-48 border-r border-gray-100 overflow-auto max-h-96\">\n                        {options.map((option, index) => {\n                            const hasChildren = option.children && option.children.length > 0;\n                            const isHovered = hoverIndex === index;\n\n                            return (\n                                <div\n                                    key={option.label}\n                                    className={`\n                                        relative flex items-center justify-between px-3 py-2 cursor-pointer\n                                        transition-colors\n                                        ${isHovered ? \"bg-blue-50 font-medium\" : \"\"}\n                                    `}\n                                    onMouseEnter={() => handleParentHover(index)}\n                                    onClick={(e) => handleParentClick(index, e)}\n                                >\n                                    {option.desc ? (\n                                        <Tooltip disableHoverableContent>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"truncate\">{option.label}</div>\n                                            </TooltipTrigger>\n                                            <TooltipContent>\n                                                <p>{option.desc}</p>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    ) : (\n                                        <div className=\"truncate\">{option.label}</div>\n                                    )}\n                                    {hasChildren && (\n                                        <ChevronRightIcon className=\"w-3.5 h-3.5 text-gray-400 flex-shrink-0\" />\n                                    )}\n                                </div>\n                            );\n                        })}\n                    </div>\n\n                    {/* 二级菜单 */}\n                    {hoverIndex !== null && options[hoverIndex]?.children?.length > 0 && (\n                        <div className=\"w-[178px] max-h-96 overflow-y-auto\">\n                            {options[hoverIndex].children?.map((child, childIndex) => (\n                                <div\n                                    key={childIndex}\n                                    className=\"px-3 py-2 cursor-pointer transition-colors hover:bg-blue-50\"\n                                    onClick={(e) => handleChildClick(child, e)}\n                                >\n                                    {child.desc ? (\n                                        <Tooltip disableHoverableContent>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"truncate\">{child.label}</div>\n                                            </TooltipTrigger>\n                                            <TooltipContent>\n                                                <p className=\"break-all max-w-96\">{child.desc}</p>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    ) : (\n                                        <div className=\"truncate\">{child.label}</div>\n                                    )}\n                                </div>\n                            ))}\n                        </div>\n                    )}\n                </div>\n            </div>\n        </>,\n        document.body\n    );\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/TaskControls.tsx",
    "content": "import { AnimatePresence, motion } from 'framer-motion';\nimport { CheckIcon, MousePointerClick } from 'lucide-react';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useLocalize } from '~/hooks';\nimport { Button, Switch, Textarea } from '../ui';\nimport StarIcon from '../ui/icon/Star';\nimport { SopStatus } from './SOPEditor';\n\ninterface Task {\n    id: string;\n    name: string;\n}\n\ninterface TaskControlsProps {\n    onStop: () => void;\n    onFeedback: (rating: number, comment: string, restart: boolean, cancel?: boolean) => void;\n    current: Task | null;\n    tasks: Task[];\n    status: SopStatus;\n    queueCount: number;\n    feedbackProvided: boolean;\n}\n\nconst slideUpAnimation = {\n    initial: { y: 100, opacity: 0 },\n    animate: { y: 0, opacity: 1 },\n    exit: { y: 0, opacity: 1 },\n    transition: { duration: 0.3, ease: \"easeInOut\" }\n};\n\n\nexport const TaskControls = ({\n    onStop,\n    onFeedback,\n    current,\n    tasks,\n    queueCount,\n    status,\n    feedbackProvided\n}: TaskControlsProps) => {\n    const [showOverview, setShowOverview] = useState(false);\n    const localize = useLocalize();\n    const { sopId } = useParams();\n\n    const isRunning = status === SopStatus.Running;\n    const isCompleted = [SopStatus.completed, SopStatus.Stoped].includes(status);\n    const userRequestedStop = status === SopStatus.Stoped && !feedbackProvided;\n    const showTask = isRunning || isCompleted || userRequestedStop;\n\n    const currentStep = useMemo(() => (\n        current ? tasks.findIndex(t => t.id === current.id) + 1 : 1\n    ), [current, tasks]);\n\n    const handleStopClick = () => {\n        onStop()\n    }\n\n    const feedback = (rating: number, comment: string, restart: boolean, cancel?: boolean) => {\n        onFeedback(rating, comment, restart, cancel)\n    }\n\n    if (sopId) return <SameSopControls sopId={sopId} />;\n    if (queueCount) return null\n\n    return (\n        <AnimatePresence>\n            {showTask && (\n                <motion.div\n                    className='absolute bottom-6 w-full'\n                    {...slideUpAnimation}\n                >\n                    <div className='relative w-10/12 mx-auto'>\n                        {\n                            !isCompleted && <div className={`${!showOverview && 'hidden'} absolute bottom-10 p-6 pb-14 w-full border rounded-2xl bg-white transition-all overflow-hidden`}>\n                                <h1 className='font-bold mb-3'>{localize('com_sop_task_planning')}</h1>\n                                {tasks.map((task, i) => (\n                                    <p key={task.id} className='text-sm leading-7'>{i + 1}. {task.name}</p>\n                                ))}\n                            </div>\n                        }\n\n                        {(isRunning) && (\n                            <div className='linsight-card w-full relative'>\n                                <div className='flex justify-between'>\n                                    <div className='flex items-center'>\n                                        {tasks.length > 0 && (\n                                            <span className='whitespace-nowrap bg-[#EEF3FF] border border-[#9EAEFF] px-2 py-1 rounded-md text-primary text-xs'>\n                                                {localize('com_sop_task_stage')} {currentStep}/{tasks.length}\n                                            </span>\n                                        )}\n                                        <span className=\"pl-4 text-sm\">{current?.name || ''}</span>\n                                    </div>\n\n                                    <div className='flex gap-2 items-center'>\n                                        <span className='whitespace-nowrap text-sm text-gray-600'>{localize('com_sop_show_overview')}</span>\n                                        <Switch onCheckedChange={setShowOverview} />\n                                        {\n                                            !userRequestedStop && !userRequestedStop && <Button\n                                                className='ml-4 text-primary border-primary'\n                                                variant=\"outline\"\n                                                onClick={handleStopClick}\n                                            >\n                                                {localize('com_sop_stop_task')}\n                                            </Button>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n                        {isCompleted && !feedbackProvided && (\n                            <FeedbackComponent stop={userRequestedStop} onFeedback={feedback} />\n                        )}\n                    </div>\n                </motion.div>\n            )}\n        </AnimatePresence>\n    );\n};\n\n\ninterface FeedbackComponentProps {\n    stop: boolean\n    onFeedback: (rating: number, comment: string, shouldRestart: boolean, cancelled?: boolean) => void\n}\n\nexport default function FeedbackComponent({ stop, onFeedback }: FeedbackComponentProps) {\n    const [rating, setRating] = useState(0)\n    const [hoveredRating, setHoveredRating] = useState(0)\n    const [comment, setComment] = useState(\"\")\n    const [loading, setLoading] = useState(false)\n    const localize = useLocalize();\n\n    const handleStarClick = useCallback((star: number) => {\n        setRating(star)\n        // Record rating to backend here\n        // You can call your API to save the rating to SOP execution record\n    }, [])\n\n    const handleStarHover = useCallback((star: number) => {\n        setHoveredRating(star)\n    }, [])\n\n    const handleStarLeave = useCallback(() => {\n        setHoveredRating(0)\n    }, [])\n\n    const handleRestart = useCallback((restart: boolean) => {\n        if (!comment.trim()) return\n\n        setLoading(true)\n        onFeedback(rating, comment, restart)\n\n        // Simulate API call\n        setTimeout(() => {\n            setLoading(false)\n        }, 2000)\n    }, [rating, comment, onFeedback])\n\n    const getStarColor = (starIndex: number) => {\n        const activeRating = hoveredRating || rating\n        return starIndex <= activeRating ? \"text-yellow-400\" : \"text-gray-300\"\n    }\n\n    return (\n        <div className=\"bg-gray-50 rounded-3xl border border-gray-100\">\n            {/* Task Completed Header */}\n            <div className=\"flex items-center gap-2 p-4\">\n                {stop ?\n                    <div className=\"w-5 h-5 bg-primary rounded-full text-white font-bold flex items-center justify-center\">i</div>\n                    : <div className=\"w-5 h-5 bg-[#05B353] rounded-full p-1\" >\n                        <CheckIcon size={14} className='text-white' />\n                    </div>\n                }\n                <span className=\"text-sm font-medium text-gray-700\">{localize('com_sop_task')}{stop ? localize('com_sop_terminated') : localize('com_sop_completed')}</span>\n\n                {/* Star Rating */}\n                <div className=\"flex items-center gap-1 ml-auto\">\n                    <span className=\"text-xs text-gray-500 mr-2 pt-0.5\">{localize('com_sop_rate_task')}</span>\n                    <div className=\"flex gap-1\">\n                        {[1, 2, 3, 4, 5].map((star) => (\n                            <div\n                                key={star}\n                                onClick={() => handleStarClick(star)}\n                                onMouseEnter={() => handleStarHover(star)}\n                                onMouseLeave={handleStarLeave}\n                            >\n                                <StarIcon\n                                    className={`size-4 cursor-pointer ${getStarColor(star)}`}\n                                />\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </div>\n\n            {/* Feedback Input and Restart Button */}\n            <div className=\"flex gap-3 bg-white rounded-3xl border border-gray-100 relative -bottom-1 p-4 -left-[1px] w-[calc(100%+2px)]\">\n                <div className=\"flex-1\">\n                    <Textarea\n                        placeholder={localize('com_agent_unsatisfied_feedback')}\n                        value={comment}\n                        onChange={(e) => setComment(e.target.value)}\n                        className=\"resize-none min-h-[40px] bg-transparenttext-sm border-none shadow-none focus:ring-0 focus:outline-none\"\n                        rows={2}\n                    />\n                </div>\n                <Button\n                    variant={\"outline\"}\n                    onClick={() => handleRestart(false)}\n                    disabled={!comment.trim() || loading}\n                    className=\"px-6 self-end\"\n                >\n                    {localize('com_sop_feedback_only')}\n                </Button>\n                <Button\n                    onClick={() => handleRestart(true)}\n                    disabled={!comment.trim() || loading}\n                    className=\"px-6 self-end\"\n                >\n                    {loading ? localize('com_sop_running') : localize('com_sop_rerun')}\n                </Button>\n            </div>\n        </div>\n    )\n}\n\n\n\nconst SameSopControls = ({ sopId }: { sopId: string }) => {\n    const localize = useLocalize();\n\n    return <div className=\"px-4 pb-6\">\n        <div className=\"flex gap-3 p-4 px-6 justify-between items-center bg-white rounded-3xl border border-gray-100 relative\">\n            <div className=\"flex items-center gap-2\">\n                <div className=\"w-5 h-5 bg-[#05B353] rounded-full p-1\" >\n                    <CheckIcon size={14} className='text-white' />\n                </div>\n                <span className=\"text-sm font-medium text-gray-700\">{localize('com_sop_task')}{localize('com_sop_terminated')}</span>\n            </div>\n            <Button className=\"px-6\" onClick={() => window.open(`${__APP_ENV__.BASE_URL}/c/new?sopid=${sopId}`)}>\n                <MousePointerClick className=\"w-3.5 h-3.5\" />\n                {localize('com_make_samestyle')}\n            </Button>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/TaskFiles.tsx",
    "content": "\"use client\"\n\nimport { Eye } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { batchDownload } from \"~/api/linsight\"\nimport { useLocalize } from \"~/hooks\"\nimport { Button, Checkbox } from \"../ui\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from \"../ui/Sheet\"\nimport FileIcon from \"../ui/icon/File\"\nimport DownloadResultFileBtn from \"./components/DownloadResultFileBtn\"\n\ninterface FileItem {\n    file_id: string\n    file_md5: string\n    file_name: string\n    file_path: string\n    file_url: string\n}\n\ninterface FileDrawerProps {\n    title: string\n    files: FileItem[]\n    isOpen: boolean\n    onOpenChange: (open: boolean) => void\n    downloadFile: (file: any) => void\n    onBatchDownload?: (urls: string[]) => Promise<void>\n    onPreview?: (fileId: string) => void\n}\n\nexport default function TaskFiles({ title, files, isOpen, onOpenChange, downloadFile, onPreview }: FileDrawerProps) {\n    const [selectedFiles, setSelectedFiles] = useState<Set<string>>(new Set())\n    const [isDownloading, setIsDownloading] = useState(false)\n    const localize = useLocalize()\n\n    // 新增：记录鼠标hover的文件ID和弹窗打开的文件ID\n    const [hoveredId, setHoveredId] = useState<string | null>(null)\n    const [tooltipOpenIds, setTooltipOpenIds] = useState<Set<string>>(new Set())\n\n    // 图标显示条件：鼠标移入 或 弹窗打开\n    const shouldShowIcon = (fileId: string) => {\n        return hoveredId === fileId || tooltipOpenIds.has(fileId)\n    }\n\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\"\n    }\n\n    // 处理全选/取消全选\n    const handleSelectAll = (checked: boolean) => {\n        if (checked) {\n            setSelectedFiles(new Set(files.map((file) => file.file_id)))\n        } else {\n            setSelectedFiles(new Set())\n        }\n    }\n\n    // 处理单个文件选择\n    const handleFileSelect = (fileId: string, checked: boolean) => {\n        const newSelected = new Set(selectedFiles)\n        if (checked) {\n            newSelected.add(fileId)\n        } else {\n            newSelected.delete(fileId)\n        }\n        setSelectedFiles(newSelected)\n    }\n\n    // 处理批量下载\n    const handleBatchDownload = async () => {\n        if (selectedFiles.size === 0) return\n\n        setIsDownloading(true)\n\n        const downloadFiles = files.filter((file) => selectedFiles.has(file.file_id)).map((file) => ({\n            file_url: file.file_url,\n            file_name: file.file_name\n        }))\n        batchDownload({ fileName: (title || 'downloadFile') + '.zip', files: downloadFiles })\n        setTimeout(() => {\n            setIsDownloading(false)\n        }, 2000);\n    }\n\n    const isAllSelected = selectedFiles.size === files.length && files.length > 0\n    const isIndeterminate = selectedFiles.size > 0 && selectedFiles.size < files.length\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onOpenChange}>\n            <SheetContent className=\"w-[600px] sm:max-w-[600px] px-2\">\n                <SheetHeader className=\"p-3\">\n                    <div className=\"flex items-center justify-between\">\n                        <SheetTitle>{localize('com_sop_view_all_files')}</SheetTitle>\n                    </div>\n\n                    {/* 全选和批量下载控制栏 */}\n                    <div className=\"flex items-center justify-between pt-4 h-10\">\n                        <div className=\"flex items-center space-x-2\">\n                            <Checkbox\n                                id=\"select-all\"\n                                checked={isAllSelected}\n                                onCheckedChange={handleSelectAll}\n                                tabIndex=\"-1\"\n                                className=\"rounded-full\"\n                                ref={(ref) => {\n                                    if (ref) {\n                                        ref.indeterminate = isIndeterminate\n                                    }\n                                }}\n                            />\n                            <label htmlFor=\"select-all\" className=\"text-sm font-medium cursor-pointer\">\n                                {localize('com_sop_select_all')}\n                            </label>\n                        </div>\n\n                        {selectedFiles.size > 0 && (\n                            <Button\n                                size=\"sm\"\n                                onClick={handleBatchDownload}\n                                disabled={isDownloading}\n                                className=\"h-8 px-3 text-xs\"\n                            >\n                                {localize('com_sop_batch_download')} ↓\n                            </Button>\n                        )}\n                    </div>\n                </SheetHeader>\n\n                {/* 文件列表 */}\n                <div className=\"space-y-1 h-[calc(100vh-100px)] overflow-auto pb-10\">\n                    {files.map((file) => (\n                        <div\n                            key={file.file_id}\n                            className=\"flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-50\"\n                            // 鼠标移入：记录当前文件ID\n                            onMouseEnter={() => setHoveredId(file.file_id)}\n                            // 鼠标离开：清除hover记录\n                            onMouseLeave={() => {\n                                setHoveredId(null);\n                                // 弹窗关闭且鼠标离开，才清理ID\n                                if (!tooltipOpenIds.has(file.file_id)) return;\n                                const newIds = new Set(tooltipOpenIds);\n                                newIds.delete(file.file_id);\n                                setTooltipOpenIds(newIds);\n                            }}\n                        >\n                            <Checkbox\n                                id={`file-${file.file_id}`}\n                                checked={selectedFiles.has(file.file_id)}\n                                onCheckedChange={(checked) => handleFileSelect(file.file_id, checked as boolean)}\n                                className=\"rounded-full \"\n                                tabIndex=\"-1\"\n                            />\n\n                            <div className=\"flex items-center space-x-3 flex-1\">\n                                <FileIcon className='size-5 min-w-4' type={getFileExtension(file.file_name)} />\n                                <span className=\"text-sm text-gray-900 flex-1\">{file.file_name}</span>\n                            </div>\n\n                            <div className=\"flex items-center space-x-2\">\n                                {/* Eye图标：鼠标移入或弹窗打开显示 */}\n                                <Button\n                                    variant=\"ghost\"\n                                    size=\"icon\"\n                                    className=\"h-8 w-8\"\n                                    style={{ visibility: shouldShowIcon(file.file_id) ? 'visible' : 'hidden' }}\n                                    onClick={() => {\n                                        if (file.file_name.split('.').pop() === 'html') {\n                                            return window.open(`${__APP_ENV__.BASE_URL}/html?url=${encodeURIComponent(file.file_url)}`, '_blank')\n                                        }\n                                        onPreview?.(file.file_id)\n                                    }}\n                                >\n                                    <Eye className=\"h-4 w-4 text-gray-500\" />\n                                </Button>\n\n                                {/* Download图标：与Eye图标显示逻辑完全一致 */}\n                                <span style={{ visibility: shouldShowIcon(file.file_id) ? 'visible' : 'hidden' }}>\n                                    <DownloadResultFileBtn\n                                        file={file}\n                                        onDownloadFile={downloadFile}\n\n                                        // 接收弹窗状态，控制是否保持显示\n                                        onTooltipOpenChange={(isOpen) => {\n                                            const newIds = new Set(tooltipOpenIds);\n                                            if (isOpen) {\n                                                newIds.add(file.file_id);\n                                            } else {\n                                                // 弹窗关闭，立即移除ID（关键修复）\n                                                newIds.delete(file.file_id);\n                                            }\n                                            setTooltipOpenIds(newIds);\n                                        }}\n                                    />\n                                </span>\n                            </div>\n                        </div>\n                    ))}\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/TaskFlow.tsx",
    "content": "import { motion } from 'framer-motion';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { submitLinsightFeedback } from '~/api/linsight';\nimport { useGetBsConfig } from '~/data-provider';\nimport { useLinsightManager, useLinsightSessionManager } from '~/hooks/useLinsightManager';\nimport { useLinsightWebSocket } from '~/hooks/Websocket';\nimport { useToastContext } from '~/Providers';\nimport { useLocalize } from '~/hooks';\nimport { SopStatus } from './SOPEditor';\nimport { TaskControls } from './TaskControls';\nimport { TaskFlowContent } from './TaskFlowContent';\nimport { formatTime } from '~/utils';\nimport { useAutoScroll } from '~/hooks/useAutoScroll';\nimport { ShareSameSopControls } from '.';\n\nexport const TaskFlow = ({ versionId, isSharePage, setVersions, setVersionId }) => {\n    const { data: bsConfig } = useGetBsConfig();\n    const { createLinsight, getLinsight, updateLinsight } = useLinsightManager()\n    const { showToast } = useToastContext();\n    const { stop, sendInput } = useLinsightWebSocket(versionId)\n    const localize = useLocalize()\n\n    const linsight = useMemo(() => {\n        const linsight = getLinsight(versionId)\n        return linsight || { sop: '', tools: [], tasks: [], status: '', queueCount: 0 }\n    }, [getLinsight, versionId])\n\n    const showTask = [SopStatus.Running, SopStatus.completed, SopStatus.FeedbackCompleted, SopStatus.Stoped].includes(linsight.status)\n\n    const currentTask = useMemo(() => {\n        const runningTask = linsight.tasks.find(task => task.status !== 'success')\n\n        if (runningTask) {\n            return runningTask; // 返回第一个未完成的任务\n        }\n\n        //  如果没有未完成子任务的任务，则返回最后一个任务\n        return linsight.tasks[linsight.tasks.length - 1];\n    }, [linsight.tasks]);\n\n    const { setLinsightSubmission } = useLinsightSessionManager(versionId)\n    // 提交反馈\n    const handleFeedback = (rating, comment, check, cancel) => {\n        submitLinsightFeedback(versionId, {\n            feedback: comment,\n            score: rating,\n            is_reexecute: check,\n            cancel_feedback: cancel\n        }).then(res => {\n            if (res.status_code !== 200) {\n                return\n            }\n\n            const newVersionId = res.data.id\n            updateLinsight(versionId, { status: SopStatus.FeedbackCompleted })\n            if (!check) return showToast({ status: 'success', message: localize('com_sop_submit_success') })\n            if (res.data === true) return\n\n            // 克隆当前版本\n            const cloneLinsight = cloneDeep(linsight)\n            createLinsight(newVersionId, {\n                ...cloneLinsight,\n                id: newVersionId,\n                version: res.data.version,\n                tasks: [],\n                summary: '',\n                file_list: [],\n                status: SopStatus.NotStarted,\n                output_result: {\n                    all_from_session_files: [],\n                    final_files: [],\n                    answer: ''\n                }\n            })\n\n            setVersions((prve) => [{\n                id: newVersionId,\n                name: formatTime(res.data.version, true)\n            }, ...prve])\n            setVersionId(newVersionId)\n            // 切换版本\n            check && !cancel && setLinsightSubmission(newVersionId, {\n                prevVersionId: versionId,\n                isNew: false,\n                files: [],\n                question: linsight.question,\n                feedback: comment,\n                tools: [],\n                model: 'gpt-4',\n                enableWebSearch: false,\n                useKnowledgeBase: true\n            });\n        })\n    }\n\n    // 自动滚动到底部\n    const flowScrollRef = useRef(null)\n    useEffect(() => {\n        if ([SopStatus.completed, SopStatus.FeedbackCompleted, SopStatus.Stoped].includes(linsight.status) && flowScrollRef.current) {\n            flowScrollRef.current.scrollTop = flowScrollRef.current.scrollHeight;\n        }\n    }, [linsight.status, versionId])\n\n    useAutoScroll(flowScrollRef, linsight.tasks)\n\n    return (\n        <motion.div\n            className={`${showTask ? 'w-[70%]' : 'flex-1'} relative flex flex-col h-full rounded-2xl border border-[#E8E9ED] bg-white overflow-hidden`}\n            initial={{ width: showTask ? 'flex-1' : 'flex-1' }}\n            animate={{ width: showTask ? '70%' : 'flex-1' }}\n            transition={{ duration: 0.3, ease: \"easeInOut\" }}\n        >\n            <div className='flex items-center gap-2 border-b border-b-[#E8E9ED] bg-[#FDFEFF] p-2 px-4 text-[13px] text-[#737780]'>\n                {localize('com_sop_task_flow')}\n            </div>\n\n            <div ref={flowScrollRef} className='relative flex-1 pb-80 min-h-0 scroll-hover'>\n                {!showTask && (\n                    <div className='flex flex-col h-full justify-center text-center bg-gradient-to-b from-[#F4F8FF] to-white'>\n                        <div className='size-10 mx-auto'>\n                            <img\n                                className='size-full grayscale opacity-20'\n                                src={__APP_ENV__.BASE_URL + bsConfig?.sidebarIcon.image}\n                                alt=\"Loading\"\n                            />\n                        </div>\n                        <p className='text-sm text-gray-400 mt-7'>{localize('com_sop_waiting_message')}</p>\n                    </div>\n                )}\n                {\n                    showTask && <TaskFlowContent\n                        key={versionId}\n                        versionId={versionId}\n                        linsight={linsight}\n                        sendInput={sendInput}\n                    />\n                }\n            </div>\n\n            {\n                isSharePage ?\n                    [SopStatus.completed, SopStatus.Stoped].includes(linsight.status) && <ShareSameSopControls name={linsight.title} />\n                    : <TaskControls\n                        key={versionId}\n                        current={currentTask}\n                        tasks={linsight.tasks}\n                        status={linsight.status}\n                        queueCount={linsight.queueCount}\n                        feedbackProvided={!!linsight.execute_feedback}\n                        onStop={stop}\n                        onFeedback={handleFeedback}\n                    />\n            }\n        </motion.div>\n    );\n};"
  },
  {
    "path": "src/frontend/client/src/components/Sop/TaskFlowContent.tsx",
    "content": "import axios from 'axios';\nimport {\n    ArrowRight,\n    BookOpen,\n    Check, ChevronDown,\n    FileText,\n    LucideLoaderCircle, Pause,\n    Search,\n    WrenchIcon\n} from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useToastContext } from '~/Providers';\nimport { getLinsightFileDownloadApi } from '~/data-provider/data-provider/src/data-service';\nimport { useLocalize } from '~/hooks';\nimport { formatStrTime, playDing } from '~/utils';\nimport Markdown from '../Chat/Messages/Content/Markdown';\nimport DownIcon from '../svg/DownIcon';\nimport { Button } from '../ui';\nimport FileIcon from '../ui/icon/File';\nimport FilePreviewDrawer from './FilePreviewDrawer';\nimport { SopStatus } from './SOPEditor';\nimport FileDrawer from './TaskFiles';\nimport DownloadResultFileBtn from './components/DownloadResultFileBtn';\nimport ErrorDisplay from './components/ErrorDisplay';\nimport { SearchKnowledgeSheet } from './components/SearchKnowledgeSheet';\nimport { SvgImage } from './components/SvgImage';\nimport UserInput from './components/UserInput';\nimport { WebSearchSheet } from './components/WebSearchSheet';\n\nconst ToolButtonLink = ({ params, setCurrentDirectFile }) => {\n    if (!params) return null\n    return <Button\n        variant=\"link\"\n        className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n        onClick={() => setCurrentDirectFile(params.file_info)}\n    >{params.file_info?.file_name}</Button>\n}\n\nconst Tool = ({ data, setCurrentDirectFile, onSearchKnowledge, onWebSearch }) => {\n    const { name, step_type, params, extra_info, output, timestamp } = data;\n\n    const localize = useLocalize();\n    const { showToast } = useToastContext();\n    // 过滤尾部hash值\n    const toolName = useMemo(() => {\n        const lastUnderscoreIndex = name.lastIndexOf('_');\n        if (lastUnderscoreIndex === -1) return name;\n\n        const afterLastUnderscore = name.slice(lastUnderscoreIndex + 1);\n\n        const isHash = afterLastUnderscore.length >= 8 &&\n            /^[a-z0-9]+$/.test(afterLastUnderscore) &&\n            !/^\\d+$/.test(afterLastUnderscore);\n\n        return isHash ? name.slice(0, lastUnderscoreIndex) : name;\n    }, [name])\n\n    // 工具名称映射\n    const nameMap = {\n        web_search: localize('com_sop_web_search'),\n        search_knowledge_base: localize('com_sop_search_knowledge_base'),\n        list_files: localize('com_sop_list_files'),\n        get_file_details: localize('com_sop_get_file_details'),\n        search_files: localize('com_sop_search_files'),\n        read_text_file: localize('com_sop_read_text_file'),\n        add_text_to_file: localize('com_sop_add_text_to_file'),\n        replace_file_lines: localize('com_sop_replace_file_lines'),\n        default: localize('com_sop_using_tool', { 0: toolName })\n    };\n\n    // search knowledge\n    const handleKnowledgeClick = () => {\n        if (!output || !output.length) return\n        try {\n            const upRes = JSON.parse(output)['结果']\n            const resData = upRes.map(res => {\n                let titleRegex, contentRegex;\n                if (res.startsWith('{')) {\n                    titleRegex = /<file_title>(.*?)<\\/file_title>/;\n                    contentRegex = /<paragraph_content>(.*?)<\\/paragraph_content>/s;\n                } else {\n                    // 兼容旧格式\n                    titleRegex = /^(.*?)\\\\n/;\n                    contentRegex = /\\\\n--------\\\\n(.*?)$/;\n                }\n                const titleMatch = res.match(titleRegex);\n                const contentMatch = res.match(contentRegex);\n                const title = titleMatch ? titleMatch[1] : '';\n\n                return {\n                    title,\n                    suffix: title.split('.').pop().toLowerCase(),\n                    content: contentMatch ? contentMatch[1] : ''\n                };\n            })\n            onSearchKnowledge({\n                query: params.query,\n                data: resData\n            })\n        } catch (error) {\n            console.log('knowledge parse error :>> ', error);\n            showToast({ message: output, status: 'error' });\n        }\n    }\n\n    const handleWebSearchClick = () => {\n        if (!output || !output.length) return\n        try {\n            const res = JSON.parse(output)\n            if (Array.isArray(res)) {\n                onWebSearch({\n                    query: params.query,\n                    data: res.map(item => ({\n                        ...item,\n                        thumbnail: item.thumbnail || '',\n                        host: item.url.replace(/^https?:\\/\\/([^\\/]+).*$/, '$1'),\n                        title: item.title,\n                        content: item.snippet\n                    }))\n                })\n            } else {\n                const text = JSON.parse(output)['content'][0].text\n                const resData = JSON.parse(text)\n                onWebSearch({\n                    query: params.query,\n                    data: resData['搜索结果'].map(item => ({\n                        thumbnail: item['缩略图'] || '',\n                        host: item['链接'].replace(/^https?:\\/\\/([^\\/]+).*$/, '$1'),\n                        title: item['标题'],\n                        content: item['摘要'],\n                        url: item['链接'],\n                    }))\n                })\n            }\n        } catch (error) {\n            console.log('websearch parse error :>> ', error);\n\n            onWebSearch({\n                query: params.query,\n                data: [{\n                    thumbnail: '',\n                    host: '',\n                    title: output.split(/[.!?，。,！？；：]/)[0] + '...',\n                    content: output,\n                    url: ''\n                }]\n            })\n        }\n    }\n\n    function extractAllUrls(text) {\n        const urlRegex = /https?:\\/\\/[a-zA-Z0-9-._~:/?#[\\]@!$&'()*+,;=]+/g;\n        return text.match(urlRegex) || [];\n    }\n\n    // 参数键名映射\n    const paramKeyMap = {\n        web_search: () => <Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n            onClick={handleWebSearchClick}\n        >{params.query}</Button>,\n        search_knowledge_base: () => <Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n            onClick={handleKnowledgeClick}\n        >{params.query}</Button>,\n        list_files: () => params.directory_path,\n        get_file_details: () => params.file_path.split('/').pop(),\n        search_files: () => params.pattern,\n        read_text_file: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        add_text_to_file: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        replace_file_lines: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        web_content_to_markdown_llm: () => <a href={extractAllUrls(params.url)[0]} target='_blank'><Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n        >{params.url}</Button></a>,\n        default: () => '',\n    };\n\n    // 图标映射 - 使用组件形式\n    const iconMap = {\n        web_search: Search,\n        search_knowledge_base: BookOpen,\n        list_files: FileText,\n        get_file_details: FileText,\n        search_files: FileText,\n        read_text_file: FileText,\n        add_text_to_file: FileText,\n        replace_file_lines: FileText,\n        default: WrenchIcon\n    };\n\n    if (step_type !== 'tool_call') {\n        return null\n    }\n\n    // 获取显示名称\n    const displayName = nameMap[toolName] || nameMap.default;\n\n    // 获取参数键名\n    const paramValue = params && paramKeyMap[toolName] || paramKeyMap.default;\n\n    // 获取图标\n    const Icon = iconMap[toolName] || iconMap.default;\n\n    return (<div className='group relative mt-4 mb-3 '>\n        <div className='relative inline-flex items-center gap-2 bg-[#F9FAFD] border rounded-full px-3 py-1.5 text-muted-foreground'>\n            <Icon size={16} />\n            <div className='flex gap-4 items-center'>\n                <span className='text-xs text-gray-600 truncate'>{displayName}</span>\n                <span className='text-xs text-[#82868C] truncate max-w-72'>{paramValue()}</span>\n            </div>\n        </div>\n        {timestamp && <span className='absolute right-2 top-2 text-xs text-[#82868C] truncate max-w-72 opacity-0 group-hover:opacity-100 transition-opacity'>{formatStrTime(timestamp * 1000, 'yy-MM-dd HH:mm')}</span>}\n    </div>\n    )\n}\n\nconst Task = ({\n    task,\n    lvl1 = false,\n    que,\n    hasSubTask,\n    sendInput,\n    setCurrentDirectFile,\n    onSearchKnowledge,\n    onWebSearch,\n    children = null\n}) => {\n    const [isExpanded, setIsExpanded] = useState(true);\n    const localize = useLocalize();\n\n    // 根据状态选择对应的图标\n    const renderStatusIcon = () => {\n        const status = (task.children?.some(child => child.status === 'user_input') && 'user_input') || task.status;\n        switch (status) {\n            case \"failed\":\n            case \"user_input\":\n            case \"terminated\":\n                return <Pause size={18} className='min-w-4 p-0.5 rounded-full mr-2' />;\n            // case \"user_input\":\n            // case \"user_input_completed\":\n            // case \"in_progress\":\n            //     return <Hourglass size={16} className='min-w-4 [#BAC1CD] p-0.5 rounded-full text-white mr-2 animate-pulse' />;\n            case \"success\":\n                return <Check size={16} className='min-w-4 bg-[#BAC1CD] p-0.5 rounded-full text-white mr-2' />;\n            default:\n                return <LucideLoaderCircle size={16} className='min-w-4 text-primary mr-2 animate-spin' />;\n        }\n    };\n\n    useEffect(() => {\n        if (task.event_type === \"user_input\") {\n            console.log('ding :>> ', task.event_type, task);\n            playDing()\n        }\n    }, [task.status])\n\n    const history = useMemo(() => {\n        const result: any = [];\n        const startMap = new Map(); // 存储未匹配的 start 消息: call_id -> message\n\n        for (const msg of task.history) {\n            if (msg.status === 'start') {\n                // 存储或覆盖同 call_id 的 start\n                startMap.set(msg.call_id, msg);\n            } else if (msg.status === 'end') {\n                // 检查是否有匹配的 start\n                if (startMap.has(msg.call_id)) {\n                    // 移除对应的 start\n                    startMap.delete(msg.call_id);\n                }\n                // 总是添加 end 消息\n                if (msg.call_reason) {\n                    result.push(msg);\n                }\n            } else if (msg.step_type === 'call_user_input') {\n                result.push(msg);\n                // startMap.set(msg.timestamp, msg);\n            }\n        }\n\n        // 添加所有未匹配的 start 消息\n        for (const startMsg of startMap.values()) {\n            if (startMsg.call_reason) {\n                result.push(startMsg);\n            }\n        }\n\n        // 返回保持原始顺序的 result\n        return result;\n    }, [task.history]);\n\n    // 未开始执行的任务不展示\n    if (task.status === 'not_started') {\n        return null;\n    }\n\n    return (\n        <div className={`${lvl1 ? '' : 'pl-6'}`}>\n            <div className={`flex items-start relative`}>\n                <div className={`absolute right-full flex gap-2 pr-2 items-center top-0 h-6`}>\n                    {/* 折叠 */}\n                    {lvl1 ? (history.length > 0 || hasSubTask) && <DownIcon\n                        className={`text-gray-500 mt-0.5 cursor-pointer size-3 transition-transform \n                                ${isExpanded ? 'rotate-180' : ''}\n                            `}\n                        onClick={() => setIsExpanded(!isExpanded)}\n                    />\n                        : history.length > 0 && <ChevronDown\n                            size={18}\n                            className={`text-gray-500 mt-0.5 cursor-pointer transition-transform \n                                ${isExpanded ? 'rotate-180' : ''} \n                            `}\n                            onClick={() => setIsExpanded(!isExpanded)}\n                        />\n                    }\n                </div>\n                {lvl1 && <div className='mt-[5px]'>{renderStatusIcon()}</div>}\n                {\n                    lvl1 ? <h2 className=\"font-semibold mb-4\">{que}.{task.name}</h2> :\n                        <span className='text-sm mb-3'>{task.name}</span>\n                }\n            </div>\n\n            {/* 历史记录部分 - 可折叠 */}\n            {history?.length !== 0 && (\n                <div className='mb-2'>\n                    <div className='flex'>\n                        <div className={`${lvl1 ? 'pl-6' : 'pl-0'} ${isExpanded ? 'block' : 'hidden'} w-full text-sm text-gray-400 leading-6 scroll-hover`}>\n                            {history.map((_history, index) =>\n                                _history.step_type === \"call_user_input\"\n                                    ? <UserInput\n                                        key={index}\n                                        disable={_history.is_completed}\n                                        taskId={task.id}\n                                        history={_history}\n                                        onSendInput={sendInput}\n                                    ></UserInput>\n                                    : <div>\n                                        <p key={index}>{_history.call_reason}</p>\n                                        <Tool\n                                            data={_history}\n                                            setCurrentDirectFile={setCurrentDirectFile}\n                                            onSearchKnowledge={onSearchKnowledge}\n                                            onWebSearch={onWebSearch}\n                                        />\n                                    </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            )}\n\n            {/* 等待输入部分  */}\n            {/* {task.event_type === \"user_input\" && <UserInput taskId={task.id} history={task} onSendInput={sendInput} />} */}\n            <div className={isExpanded ? 'block' : 'hidden'}>\n                {children}\n                {/* 任务总结 */}\n                {task.status !== 'failed' && task.errorMsg && <div className='bs-mkdown relative mb-6 text-sm px-4 py-3 rounded-lg bg-[#F8F9FB] text-[#303133] leading-6 break-all'>\n                    <Markdown content={task.errorMsg} isLatestMessage={true} webContent={false} />\n                    <div className='bg-gradient-to-t w-full h-10 from-[#F8F9FB] from-0% to-transparent to-100% absolute bottom-0'></div>\n                </div>}\n            </div>\n            {/* error */}\n            {task.status === 'failed' && task.errorMsg && <ErrorDisplay title={localize('com_sop_task_execution_interrupted')} taskError={task.errorMsg} />}\n        </div>\n    );\n};\n\n\nexport const TaskFlowContent = ({ versionId, linsight, sendInput, onSearchKnowledge }) => {\n    const { status, sop, title, tasks, taskError, summary, file_list: files, queueCount = 0 } = linsight\n    const allFiles = linsight?.output_result?.all_from_session_files || []\n\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const [isPreviewOpen, setIsPreviewOpen] = useState(false)\n    const [currentPreviewFileId, setCurrentPreviewFileId] = useState<string>(\"\")\n    const [currentDirectFile, setCurrentDirectFile] = useState<any>(null)\n    const localize = useLocalize();\n\n    // knowledge search\n    const [knowledgeInfo, setKnowledgeInfo] = useState(null)\n    // web search\n    const [webSearchInfo, setWebSearchInfo] = useState(null)\n    // 由卡片触发抽屉展开\n    const [triggerDrawerFromCard, setTriggerDrawerFromCard] = useState(false)\n    useFoucsInput(tasks);\n\n    const mergeFiles = useMemo(() => {\n        const mergedFiles = [...files, ...allFiles];\n        return mergedFiles;\n    }, [files, allFiles]);\n\n    const downloadFile = async (file) => {\n        const { file_name, file_url } = file;\n        const res = await getLinsightFileDownloadApi(file_url, versionId)\n        const url = `${__APP_ENV__.BASE_URL}${res.data.file_path}`;\n\n        return axios.get(url, { responseType: \"blob\" }).then((res: any) => {\n            let blob: any = null\n            if (file_url.endsWith(\".csv\")) {\n                // 添加 UTF-8 BOM（\\uFEFF）\n                const bom = new Uint8Array([0xEF, 0xBB, 0xBF]); // UTF-8 BOM\n                blob = new Blob([bom, res.data], { type: \"text/csv;charset=utf-8;\" });\n            } else {\n                blob = new Blob([res.data]);\n            }\n\n            const link = document.createElement(\"a\");\n            link.href = URL.createObjectURL(blob);\n            link.download = file_name;\n            link.click();\n            URL.revokeObjectURL(link.href);\n        }).catch(console.error);\n    };\n\n    if (queueCount) {\n        const totalMinutes = queueCount * 8;\n        const hours = Math.floor(totalMinutes / 60);\n        const minutes = totalMinutes % 60;\n\n        let timeText;\n        if (hours > 0) {\n            timeText = `${hours} ${localize('com_sop_hours')} ${minutes} ${localize('com_sop_minutes')}`;\n        } else {\n            timeText = `${minutes} ${localize('com_sop_minutes')}`;\n        }\n\n        return (\n            <div className='size-full flex flex-col items-center justify-center text-sm'>\n                <img src={__APP_ENV__.BASE_URL + '/assets/queue.png'} alt=\"\" />\n                <p className='mt-9'>{localize('com_sop_queue_message')}</p>\n                <p className='mt-4 font-bold'>{localize('com_sop_estimated_wait')} {timeText}</p>\n            </div>\n        );\n    }\n\n    console.log('tasks :>> ', tasks);\n    return (\n        <div className=\"w-[80%] mx-auto p-5 text-gray-800 leading-relaxed\">\n            {/* load */}\n            {!tasks?.length && status === SopStatus.Running && <p className='mt-0.5 text-sm flex gap-2'>\n                <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n                {localize('com_sop_organizing_content')}\n            </p>}\n            {/* {!tasks?.length && <PlaySop content={sop} />} */}\n            {/* 任务 */}\n            {!!tasks?.length && <div className='pl-6'>\n                <p className='text-sm text-gray-400 mt-6 mb-4'>{localize('com_sop_plan_task_path')}</p>\n                {tasks.map((task, i) => (\n                    <p key={task.id} className='leading-7'>{i + 1}. {task.name}</p>\n                ))}\n                <p className='text-sm text-gray-400 mt-6 mb-4'>{localize('com_sop_execute_tasks')}</p>\n            </div>}\n            {\n                tasks?.map((task, i) => <Task\n                    key={task.id}\n                    que={i + 1}\n                    lvl1\n                    task={task}\n                    hasSubTask={!!task.children?.length}\n                    setCurrentDirectFile={(file) => {\n                        setIsPreviewOpen(true);\n                        setCurrentDirectFile(file)\n                    }}\n                    onSearchKnowledge={setKnowledgeInfo}\n                    onWebSearch={setWebSearchInfo}\n                    sendInput={sendInput} >\n                    {\n                        task.children?.map((_task, i) => <Task\n                            key={_task.id}\n                            que={i + 1}\n                            task={_task}\n                            sendInput={sendInput}\n                            setCurrentDirectFile={(file) => {\n                                setIsPreviewOpen(true);\n                                setCurrentDirectFile(file)\n                            }}\n                            onSearchKnowledge={setKnowledgeInfo}\n                            onWebSearch={setWebSearchInfo}\n                        />)\n                    }\n                </Task>\n                )\n            }\n            {/* error */}\n            {taskError && <ErrorDisplay title={localize('com_sop_task_execution_interrupted')} taskError={taskError} />}\n            {/* 总结 */}\n            {\n                summary && <div className='relative mb-6 text-sm px-4 py-3 rounded-lg bg-[#F8F9FB] text-[#303133] leading-6 break-all'>\n                    <Markdown content={summary} isLatestMessage={true} webContent={false} />\n                    <div className='bg-gradient-to-t w-full h-10 from-[#F8F9FB] from-0% to-transparent to-100% absolute bottom-0'></div>\n                </div>\n            }\n            {/* 结果文件 */}\n            {files && files.filter(file =>\n                /\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i.test(file.file_name)\n            ).length > 0 && (\n                    <div className=\"mb-5\">\n                        {files\n                            .filter(file => /\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i.test(file.file_name))\n                            .map(file => {\n                                const fileExt = file.file_name.split('.').pop()?.toLowerCase() || '';\n                                const isSvg = fileExt === 'svg';\n\n                                return (\n                                    <div\n                                        key={file.file_id}\n                                        className=\"mb-3 p-2 rounded-2xl border border-[#ebeef2] cursor-pointer\"\n                                        onClick={() => {\n                                            setCurrentDirectFile(null);\n                                            setCurrentPreviewFileId(file.file_id);\n                                            setIsPreviewOpen(true);\n                                            setTriggerDrawerFromCard(true);\n                                        }}\n                                    >\n                                        {/* 固定容器尺寸 */}\n                                        <div className=\"w-full min-h-[200px] overflow-hidden rounded-lg bg-[#F4F6FB]\">\n                                            {/* SVG用专用组件 */}\n                                            {isSvg ? (\n                                                <SvgImage\n                                                    fileUrl={file.file_url}\n                                                />\n                                            ) : (\n                                                // 其他图片用img标签\n                                                <img\n                                                    src={`${__APP_ENV__.BASE_URL}${file.file_url}`}\n                                                    alt={file.file_name}\n                                                    className=\"w-full h-full object-cover\"\n                                                    onError={(e) => {\n                                                        e.target.src = `${__APP_ENV__.BASE_URL}/assets/image-placeholder.png`;\n                                                    }}\n                                                />\n                                            )}\n                                        </div>\n                                        {/* 显示文件名 */}\n                                        <div className=\"mt-2 text-sm text-center truncate\">{file.file_name}</div>\n                                    </div>\n                                );\n                            })}\n                    </div>\n                )}\n            {files &&\n                <div>\n                    {/* <p className='text-sm text-gray-500'></p> */}\n                    <div className='mt-5 flex flex-wrap gap-3'>\n                        {files.filter(file => {\n                            // 定义需要排除的图片格式（和你之前匹配的格式一致）\n                            const excludedImageExts = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'svg'];\n                            // 获取当前文件扩展名（转小写，避免大小写问题）\n                            const fileExt = file.file_name.split('.').pop()?.toLowerCase() || '';\n                            // 保留“扩展名不在排除列表中”的文件（即非图片文件）\n                            return !excludedImageExts.includes(fileExt);\n                        }).map((file) => (\n                            <>\n                                <div\n                                    key={file.file_id}\n                                    onClick={() => {\n                                        if (file.file_name.split('.').pop() === 'html') {\n                                            return window.open(`${__APP_ENV__.BASE_URL}/html?url=${encodeURIComponent(file.file_url)}`, '_blank')\n                                        }\n                                        setCurrentDirectFile(null);\n                                        setCurrentPreviewFileId(file.file_id);\n                                        setIsPreviewOpen(true);\n                                        setTriggerDrawerFromCard(true);\n                                    }}\n                                    className='w-[calc(50%-6px)] p-2 rounded-2xl border border-[#ebeef2] cursor-pointer'\n                                >\n                                    <div className='bg-[#F4F6FB] h-24 p-4 rounded-lg overflow-hidden'>\n                                        <FileIcon type={file.file_name.split('.').pop().toLowerCase()} className='size-24 mx-auto opacity-20' />\n                                    </div>\n                                    <div className='relative flex pt-3 gap-2 items-center'>\n                                        <FileIcon type={file.file_name.split('.').pop().toLowerCase()} className='size-4 min-w-4' />\n                                        <span className='text-sm truncate pr-6'>{file.file_name}</span>\n                                        {/* Multi-file type download */}\n                                        <DownloadResultFileBtn file={file} onDownloadFile={downloadFile} />\n                                    </div>\n                                </div>\n                            </>\n\n                        ))}\n                    </div>\n                    {/*  预览所有文件列表 */}\n                    {\n                        allFiles.length > files.length && <div className='mt-2.5'>\n                            <div\n                                onClick={() => setIsDrawerOpen(true)}\n                                className='w-[calc(50%-6px)] p-2 rounded-2xl border border-[#ebeef2] cursor-pointer'\n                            >\n                                <div className='bg-[#F4F6FB] h-24 p-6 rounded-lg overflow-hidden'>\n                                    <FileIcon type=\"dir\" className='size-24 mx-auto opacity-20' />\n                                </div>\n                                <div className='relative flex pt-3 gap-2 items-center'>\n                                    <FileIcon type=\"dir\" className='size-4 min-w-4' />\n                                    <span className='text-sm truncate pr-6'>{localize('com_sop_view_all_files')}</span>\n                                    <Button variant=\"ghost\" className='absolute right-1 -bottom-1 w-6 h-6 p-0'>\n                                        <ArrowRight size={16} />\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                    }\n                </div>\n            }\n            {/* running */}\n            {\n                tasks?.length > 0 && status === SopStatus.Running && <p className='text-sm flex gap-2 mt-10'>\n                    <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n                </p>\n            }\n\n            {/* search knowledge */}\n            <SearchKnowledgeSheet\n                isOpen={!!knowledgeInfo}\n                onClose={() => setKnowledgeInfo(null)}\n                data={knowledgeInfo?.data}\n                searchQuery={knowledgeInfo?.query} />\n            {/* web search */}\n            <WebSearchSheet\n                isOpen={!!webSearchInfo}\n                onClose={() => setWebSearchInfo(null)}\n                data={webSearchInfo?.data}\n                searchQuery={webSearchInfo?.query} />\n            {/* 文件列表抽屉 */}\n            <FileDrawer\n                title={title}\n                files={allFiles}\n                isOpen={isDrawerOpen}\n                onOpenChange={setIsDrawerOpen}\n                downloadFile={downloadFile}\n                onPreview={(id) => {\n                    setCurrentDirectFile(null);\n                    setCurrentPreviewFileId(id);\n                    setIsDrawerOpen(false)\n                    setIsPreviewOpen(true)\n                    setTriggerDrawerFromCard(false)\n                }}\n            />\n            {/* 文件预览抽屉 */}\n            <FilePreviewDrawer\n                files={mergeFiles}\n                isOpen={isPreviewOpen}\n                onOpenChange={setIsPreviewOpen}\n                downloadFile={downloadFile}\n                directFile={currentDirectFile}\n                currentFileId={currentPreviewFileId}\n                onFileChange={(fileId) => setCurrentPreviewFileId(fileId)}\n                vid={versionId}\n                onBack={currentDirectFile || triggerDrawerFromCard ? undefined : (() => {\n                    setIsDrawerOpen(true);\n                    setIsPreviewOpen(false);\n                })}\n            >\n            </FilePreviewDrawer>\n        </div >\n    );\n};\n\n\n/**\n * 自动定位用户输入框\n * @param tasks \n */\nconst useFoucsInput = (tasks: any) => {\n    const [inputQueue, setInputQueue] = useState<string[]>([]); // 待处理的输入任务队列\n    const [currentFocusId, setCurrentFocusId] = useState(''); // 当前聚焦的任务ID\n    console.log('inputQueue :>> ', inputQueue);\n    // 当任务变化时更新输入队列\n    useEffect(() => {\n        // 找出所有需要输入的新任务\n        const newInputTasks = tasks\n            .filter((task: any) => task.status === 'user_input' && !inputQueue.includes(task.id))\n            .map(task => task.id);\n\n        // 二级任务(同时只有一个二级任务下有待输入input)\n        const hasUserInputTask = tasks.find((task: any) => task.children?.find((_task: any) => _task.status === 'user_input'));\n        if (hasUserInputTask) {\n            hasUserInputTask.children\n                .filter((_task: any) => _task.status === 'user_input' && !inputQueue.includes(_task.id))\n                .forEach(_task => newInputTasks.push(_task.id));\n        }\n\n        if (newInputTasks.length > 0) {\n            // 将新任务添加到队列末尾\n            setInputQueue((prev) => {\n                const res = [...newInputTasks]\n                setCurrentFocusId(res[0] || '')\n                return res;\n            });\n\n        } else {\n            setCurrentFocusId(newInputTasks[0] || '');\n        }\n    }, [tasks]);\n\n    // 当输入队列变化时自动聚焦\n    useEffect(() => {\n        if (currentFocusId) {\n            const dom = document.getElementById(currentFocusId);\n            console.log('dom :>> ', dom);\n            if (dom) {\n                dom?.focus();\n                // 平滑滚动到输入框位置\n                dom.scrollIntoView({\n                    behavior: 'smooth',\n                    block: 'center'\n                });\n            }\n        }\n    }, [currentFocusId]);\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/CopyButton.tsx",
    "content": "import { useState, useRef, useEffect } from \"react\";\nimport { Button } from \"~/components/ui\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../ui/Tooltip2\";\nimport { Copy, CopyCheck } from \"lucide-react\";\nimport { useLocalize } from \"~/hooks\";\n\nexport default function CopyButton({ text }: { text: string }) {\n    const [copied, setCopied] = useState(false);\n    const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n    const localize = useLocalize();\n\n    // 清理定时器\n    useEffect(() => {\n        return () => {\n            if (timeoutRef.current) {\n                clearTimeout(timeoutRef.current);\n            }\n        };\n    }, []);\n\n    const handleCopy = () => {\n        try {\n            // 方法1: 使用现代 Clipboard API\n            if (navigator.clipboard && navigator.clipboard.writeText) {\n                navigator.clipboard.writeText(text).then(() => {\n                    setCopiedState();\n                }).catch(() => {\n                    fallbackCopyText(text);\n                });\n            }\n            // 方法2: 使用旧版 document.execCommand\n            else {\n                fallbackCopyText(text);\n            }\n        } catch (err) {\n            console.error(localize('com_copy_failed'), err);\n        }\n    };\n\n    const fallbackCopyText = (textToCopy: string) => {\n        // 创建临时 textarea 元素作为复制后备方案\n        const textArea = document.createElement(\"textarea\");\n        textArea.value = textToCopy;\n        textArea.style.position = \"fixed\";\n        textArea.style.top = \"0\";\n        textArea.style.left = \"0\";\n        textArea.style.opacity = \"0\";\n\n        document.body.appendChild(textArea);\n        textArea.focus();\n        textArea.select();\n\n        try {\n            const successful = document.execCommand(\"copy\");\n            if (successful) {\n                setCopiedState();\n            } else {\n                console.error(localize('com_copy_command_failed'));\n            }\n        } catch (err) {\n            console.error(localize('com_copy_failed'), err);\n        } finally {\n            document.body.removeChild(textArea);\n        }\n    };\n\n    const setCopiedState = () => {\n        setCopied(true);\n        if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n        }\n        timeoutRef.current = setTimeout(() => setCopied(false), 2000);\n    };\n\n    return (\n        <Tooltip disableHoverableContent>\n            <TooltipTrigger asChild>\n                <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    className=\"size-8 p-1.5 hover:bg-accent/50\"\n                    onClick={handleCopy}\n                    aria-label={copied ? localize('com_copied') : localize('com_copy_to_clipboard')}\n                >\n                    {copied ? (\n                        <CopyCheck size={16} className=\"text-primary\" />\n                    ) : (\n                        <Copy size={16} />\n                    )}\n                </Button>\n            </TooltipTrigger>\n            <TooltipContent side=\"top\" align=\"center\">\n                <p>{copied ? localize('com_copied') : localize('com_copy_to_clipboard')}</p>\n            </TooltipContent>\n        </Tooltip>\n    );\n}"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/DownloadResultFileBtn.tsx",
    "content": "import { CheckCircle, CircleX, Download, Loader2 } from 'lucide-react';\nimport FileIcon from '~/components/ui/icon/File';\nimport { Button } from '../../ui';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '~/components/ui/Tooltip2';\nimport { useState, useRef, useEffect } from \"react\";\nimport { getMdDownload } from '~/api/linsight';\nimport { useToastContext } from '~/Providers';\nimport { createPortal } from 'react-dom';\n\nexport default function DownloadResultFileBtn({ file, onDownloadFile, onTooltipOpenChange }) {\n    const isMd = /md$/i.test(file?.file_name || '')\n    const [isLoading, setIsLoading] = useState(false)\n    const [title, setTitle] = useState('PDF')\n    const [isSuccess, setIsSuccess] = useState(false)\n    const [isError, setIsError] = useState(false)\n    const { showToast } = useToastContext();\n    const [tooltipOpen, setTooltipOpen] = useState(false);\n    const timerRef = useRef(null);\n    const portalContainerRef = useRef(null);\n\n    //初始化容器时增加存在性校验，卸载时确保容器是body子节点再删除\n    useEffect(() => {\n        let container = document.getElementById('download-toast-portal');\n        // 避免重复创建容器\n        if (!container) {\n            container = document.createElement('div');\n            container.id = 'download-toast-portal';\n            container.style.position = 'fixed';\n            container.style.top = '0';\n            container.style.right = '0';\n            container.style.zIndex = '9999';\n            document.body.appendChild(container);\n        }\n        portalContainerRef.current = container;\n\n        // 组件卸载时：先判断容器是否存在且是body的子节点，再执行删除\n        return () => {\n            const targetContainer = portalContainerRef.current;\n            if (targetContainer && document.body.contains(targetContainer)) {\n                document.body.removeChild(targetContainer);\n            }\n            // 清空ref，避免后续引用无效容器\n            portalContainerRef.current = null;\n        };\n    }, []);\n\n    useEffect(() => {\n        onTooltipOpenChange?.(tooltipOpen);\n    }, [tooltipOpen, onTooltipOpenChange]);\n\n    useEffect(() => {\n        return () => {\n            if (timerRef.current) clearTimeout(timerRef.current);\n        };\n    }, []);\n\n    const handleClick = (e) => {\n        e.stopPropagation();\n        e.nativeEvent.stopImmediatePropagation()\n        onDownloadFile({\n            file_name: file.file_name,\n            file_url: file.file_url\n        })\n        setTooltipOpen(false)\n    }\n\n    const handleDownLoad = async (e, type) => {\n        e.stopPropagation();\n        e.nativeEvent.stopImmediatePropagation()\n        setIsLoading(true);\n        setTooltipOpen(false)\n        setTitle(type === 'docx' ? 'Docx' : type);\n        setIsSuccess(false);\n        setIsError(false);\n        let apiErrorMsg = `${type}导出失败，请稍后重试`;\n\n        if (timerRef.current) clearTimeout(timerRef.current);\n\n        try {\n            const response = await getMdDownload(\n                { file_url: file.file_url, file_name: file.file_name },\n                type\n            );\n\n            let isErrorResponse = false;\n            let validFileData = response;\n\n            if (response instanceof Blob && response.type.includes('application/json')) {\n                const errorText = await new Promise((resolve) => {\n                    const reader = new FileReader();\n                    reader.onloadend = () => resolve(reader.result);\n                    reader.readAsText(response);\n                });\n                try {\n                    const errorData = JSON.parse(errorText);\n                    if (errorData.status_code && errorData.status_code !== 200) {\n                        apiErrorMsg = errorData.status_message || apiErrorMsg;\n                        isErrorResponse = true;\n                    }\n                } catch (parseErr) {\n                    isErrorResponse = false;\n                }\n                // } else if (typeof response === 'object' && response !== null && response.status_code !== 200) {\n                //     apiErrorMsg = response.status_message || apiErrorMsg;\n                //     isErrorResponse = true;\n            }\n\n            if (isErrorResponse) throw new Error(apiErrorMsg);\n\n            let blob;\n            if (validFileData instanceof Blob) {\n                blob = validFileData;\n            } else if (typeof validFileData === 'string' && validFileData.startsWith('%PDF-')) {\n                blob = new Blob([validFileData], { type: 'application/pdf' });\n            } else {\n                const mimeType = type === 'pdf' ? 'application/pdf' : 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n                blob = new Blob([validFileData], { type: mimeType });\n            }\n\n            const url = window.URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = `${file.file_name.replace(/\\.md$/i, '')}.${type}`;\n            document.body.appendChild(a);\n            a.click();\n            window.URL.revokeObjectURL(url);\n            document.body.removeChild(a);\n\n            setIsSuccess(true);\n            setIsLoading(false);\n            timerRef.current = setTimeout(() => {\n                setIsSuccess(false);\n            }, 3000);\n\n        } catch (error) {\n            console.error(`${type}下载失败:`, error);\n            setIsError(true);\n            setIsLoading(false);\n            timerRef.current = setTimeout(() => {\n                setIsError(false);\n            }, 3000);\n        }\n    };\n\n    const GlobalToast = () => {\n        // 增加ref有效性校验，避免引用已清空的容器\n        if (!portalContainerRef.current) return null;\n\n        return createPortal(\n            <>\n                {isLoading && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-50\">\n                        <Loader2 className=\"size-5 animate-spin text-blue-500\" />\n                        <div className=\"text-sm text-gray-800\">{title}&nbsp;正在导出，请稍后...&nbsp;&nbsp;</div>\n                    </div>\n                )}\n                {isSuccess && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-50\">\n                        <CheckCircle className=\"size-5 text-green-500\" />\n                        <div className=\"text-sm text-gray-800\">{title}&nbsp;文件下载成功</div>\n                    </div>\n                )}\n                {isError && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-50\">\n                        <CircleX className=\"size-5 text-red-500\" />\n                        <div className=\"text-sm text-gray-800\">导出失败</div>\n                    </div>\n                )}\n            </>,\n            portalContainerRef.current\n        );\n    };\n\n    if (!isMd) return (\n        <>\n            <Button variant=\"ghost\" className='w-6 h-6 p-0' onClick={(e) => {\n                e.stopPropagation();\n                onDownloadFile({ file_name: file.file_name, file_url: file.file_url });\n            }}>\n                <Download size={16} />\n            </Button>\n            {GlobalToast()}\n        </>\n    );\n\n    return (\n        <>\n            <Tooltip open={tooltipOpen} onOpenChange={setTooltipOpen}>\n                <TooltipTrigger asChild>\n                    <span onClick={(e) => e.stopPropagation()}>\n                        <Download size={16} className='text-gray-500' onClick={() => setTooltipOpen(true)} />\n                    </span>\n                </TooltipTrigger>\n                <TooltipContent side='bottom' align='center' noArrow className='bg-white text-gray-800 border border-gray-200'>\n                    <div className='flex flex-col gap-2'>\n                        <div className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1' onClick={handleClick}>\n                            <FileIcon type={'md'} className='size-5' />\n                            <span>Markdown</span>\n                        </div>\n                        <div className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1' onClick={(e) => handleDownLoad(e, 'pdf')}>\n                            <FileIcon type={'pdf'} className='size-5' />\n                            <span>PDF</span>\n                        </div>\n                        <div className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1' onClick={(e) => handleDownLoad(e, 'docx')}>\n                            <FileIcon type={'docx'} className='size-5' />\n                            <span>Docx</span>\n                        </div>\n                    </div>\n                </TooltipContent>\n            </Tooltip>\n            {GlobalToast()}\n        </>\n    );\n};"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/ErrorDisplay.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { ChevronDown, ChevronUp } from 'lucide-react'\nimport { useLocalize } from '~/hooks'\n\ninterface TaskErrorDisplayProps {\n    title: string\n    taskError: string\n}\n\nexport default function ErrorDisplay({ title, taskError }: TaskErrorDisplayProps) {\n    const localize = useLocalize()\n    const [isExpanded, setIsExpanded] = useState(false)\n\n    const toggleExpanded = () => {\n        setIsExpanded(!isExpanded)\n    }\n\n    return (\n        <div className=\"bg-red-100 p-2 rounded-md text-sm text-red-500 mb-2\">\n            <div\n                className={`cursor-pointer ${!isExpanded ? \"line-clamp-3\" : \"\"\n                    }`}\n                onClick={toggleExpanded}\n            >\n                <span className=\"\">{title}：</span>\n                {taskError}\n            </div>\n            {taskError.length > 150 && (\n                <div className=\"flex items-center justify-center mt-1\">\n                    <button\n                        onClick={toggleExpanded}\n                        className=\"flex items-center gap-1 text-xs text-red-400 hover:text-red-600 transition-colors\"\n                    >\n                        {isExpanded ? (\n                            <>\n                                {localize('com_ui_collapse')} <ChevronUp className=\"w-3 h-3\" />\n                            </>\n                        ) : (\n                            <>\n                                {localize('com_ui_expand')} <ChevronDown className=\"w-3 h-3\" />\n                            </>\n                        )}\n                    </button>\n                </div>\n            )}\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/SearchKnowledgeSheet.tsx",
    "content": "\"use client\"\n\nimport { FileSearchIcon } from \"lucide-react\"\nimport Markdown from \"~/components/Chat/Messages/Content/Markdown\"\nimport MarkdownLite from \"~/components/Chat/Messages/Content/MarkdownLite\"\nimport FileIcon from \"~/components/ui/icon/File\"\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"~/components/ui/Sheet\"\nimport { useLocalize } from \"~/hooks\"\n\ninterface SearchResultItem {\n    content: string\n    suffix: string\n    title: string\n}\n\ninterface SearchResultsSheetProps {\n    isOpen: boolean\n    onClose: () => void\n    data: SearchResultItem[]\n    searchQuery: string\n}\n\nexport function SearchKnowledgeSheet({ isOpen, onClose, data = [], searchQuery }: SearchResultsSheetProps) {\n    const localize = useLocalize();\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onClose}>\n            <SheetContent side=\"right\" className=\"w-[600px] sm:w-[700px] sm:max-w-[700px] p-0\">\n                <SheetHeader className=\"p-4 border-b border-border\">\n                    <div className=\"flex items-center gap-3\">\n                        <FileSearchIcon className=\"w-5 h-5 text-muted-foreground\" />\n                        <SheetTitle className=\"text-lg font-semibold text-foreground\">{localize('com_searchResults')}</SheetTitle>\n                    </div>\n                    <SheetDescription className=\"text-left\">\n                        <div className=\"flex items-center gap-2 text-sm text-muted-foreground mt-2\">\n                            <span className=\"whitespace-nowrap\">🔍{localize('com_searchQueryLabel')}</span>\n                            <span className=\"font-medium text-foreground\">“{searchQuery}”</span>\n                        </div>\n                    </SheetDescription>\n                </SheetHeader>\n\n                {/* Results Content */}\n                <div className=\"flex-1 h-[calc(100vh-120px)] overflow-y-auto\">\n                    <div className=\"p-4 space-y-4\">\n                        {data.map((item, index) => (\n                            <div\n                                key={index}\n                                className=\"border border-border rounded-lg overflow-hidden hover:border-blue-500 transition-colors duration-200 cursor-pointer\"\n                            >\n                                {/* Content - always expanded as per design */}\n                                <div className=\"p-4 bg-card\">\n                                    <div className=\"mb-3 flex items-center gap-2\">\n                                        <FileIcon className='size-5 min-w-4' type={item.suffix} />\n                                        <h4 className=\"text-sm font-medium text-foreground\">{item.title}</h4>\n                                    </div>\n                                    <div className=\"font-normal text-sm text-[#303133] leading-6 break-all\">\n                                        <Markdown content={item.content} isLatestMessage={false} webContent={undefined} />\n                                    </div>\n                                </div>\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/SopLoading.tsx",
    "content": "import { motion, AnimatePresence } from \"framer-motion\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport { cn } from \"~/utils\";\nimport { useLocalize } from \"~/hooks\";\n\n// LoadingBox组件\nexport const LoadingBox = () => {\n    const localize = useLocalize();\n    return (\n        <div className='h-full bg-white border border-[#E8E9ED] rounded-xl flex flex-col justify-center text-center'>\n            <div className=\"lingsi-border-box mx-auto\">\n                <div className='w-[194px] h-[102px] bg-no-repeat mx-auto rounded-md bg-white'\n                    style={{ backgroundImage: `url(${__APP_ENV__.BASE_URL}/assets/linsi-load.png)` }}></div>\n            </div>\n            <h1 className='text-2xl mt-10'>{localize('com_sop_loading_title')}</h1>\n            <p className='mt-5'>{localize('com_sop_loading_desc')}</p>\n        </div>\n    );\n};\n\n\ninterface PlaySopProps {\n    content: string[]\n    className?: string\n}\n\n\nexport const PlaySop = ({ content: _content, className }: PlaySopProps) => {\n    const [currentIndex, setCurrentIndex] = useState(0)\n    const [isVisible, setIsVisible] = useState(true)\n    const content = useMemo(() => _content.split('\\n').filter((item) => item.trim() !== ''), [_content])\n\n    useEffect(() => {\n        if (!content || content.length === 0) return\n\n        const interval = setInterval(() => {\n            setIsVisible(false)\n\n            setTimeout(() => {\n                setCurrentIndex((prev) => (prev + 1) % content.length)\n                setIsVisible(true)\n            }, 500)\n        }, 1400)\n\n        return () => clearInterval(interval)\n    }, [content])\n\n    if (!content || content.length === 0) return null\n\n    return (\n        <div className={cn(\"relative h-32 shadow-2xl rounded-xl overflow-hidden mt-6\", className)}>\n            {/* Video Background */}\n            <video\n                autoPlay\n                loop\n                muted\n                playsInline\n                preload=\"auto\"\n                className={cn(\n                    \"absolute size-full object-fill object-center\",\n                    \"transition-opacity duration-500 ease-out\",\n                )}\n            // src={`${__APP_ENV__.BASE_URL}/assets/linsi-bg.mp4`}\n            >\n                <source\n                    src={`${__APP_ENV__.BASE_URL}/assets/linsi-bg.mp4`}\n                    type=\"video/mp4\"\n                />\n                <img\n                    src={`${__APP_ENV__.BASE_URL}/assets/lingsi-bg.png`}\n                    alt=\"\"\n                />\n            </video>\n\n            {/* Overlay for better text visibility */}\n            {/* <div className=\"absolute inset-0 bg-black/10\" /> */}\n\n            {/* Animated Text Content */}\n            <div className=\"absolute inset-0 flex items-center justify-center\">\n                <AnimatePresence mode=\"wait\">\n                    {isVisible && (\n                        <motion.div\n                            key={currentIndex}\n                            initial={{\n                                y: 100,\n                                opacity: 0,\n                                scale: 0.8,\n                            }}\n                            animate={{\n                                y: 0,\n                                opacity: 1,\n                                scale: 1,\n                            }}\n                            exit={{\n                                y: -20,\n                                opacity: 0,\n                                scale: 0.3,\n                                filter: \"blur(4px)\",\n                            }}\n                            transition={{\n                                duration: 0.2,\n                                ease: [0.25, 0.46, 0.45, 0.94],\n                                exit: {\n                                    duration: 0,\n                                    ease: [0.55, 0.085, 0.68, 0.53],\n                                },\n                            }}\n                            className=\"text-center px-4\"\n                        >\n                            <motion.p\n                                className=\"text-#666 text-lg font-medium drop-shadow-lg\"\n                                initial={{ letterSpacing: \"0.1em\" }}\n                                animate={{ letterSpacing: \"0.05em\" }}\n                                exit={{ letterSpacing: \"0.2em\" }}\n                                transition={{ duration: 0.4 }}\n                            >\n                                {content[currentIndex]}\n                            </motion.p>\n                        </motion.div>\n                    )}\n                </AnimatePresence>\n            </div>\n\n            {/* Subtle vignette effect */}\n            <div className=\"absolute inset-0 bg-gradient-radial from-transparent via-transparent to-black/10\" />\n        </div>\n    )\n}\n\n\n\ninterface LoadingDotsProps {\n    className?: string\n    size?: \"sm\" | \"md\" | \"lg\"\n}\n\nexport function LoadingDots({ className, size = \"md\" }: LoadingDotsProps) {\n    const sizeClasses = {\n        sm: \"w-1 h-1\",\n        md: \"w-2 h-2\",\n        lg: \"w-3 h-3\",\n    }\n\n    const gapClasses = {\n        sm: \"gap-1\",\n        md: \"gap-2\",\n        lg: \"gap-3\",\n    }\n\n    return (\n        <div className={cn(\"flex items-center m-4\", gapClasses[size], className)}>\n            <div\n                className={cn(\"rounded-full bg-black animate-pulse\", sizeClasses[size])}\n                style={{\n                    animation: \"loadingDots 1.5s ease-in-out infinite\",\n                    animationDelay: \"0s\",\n                }}\n            />\n            <div\n                className={cn(\"rounded-full bg-black animate-pulse\", sizeClasses[size])}\n                style={{\n                    animation: \"loadingDots 1.5s ease-in-out infinite\",\n                    animationDelay: \"0.3s\",\n                }}\n            />\n            <div\n                className={cn(\"rounded-full bg-black animate-pulse\", sizeClasses[size])}\n                style={{\n                    animation: \"loadingDots 1.5s ease-in-out infinite\",\n                    animationDelay: \"0.6s\",\n                }}\n            />\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/SvgImage.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport FileIcon from '~/components/ui/icon/File';\nimport { useLocalize } from '~/hooks';\n\ninterface SvgImageProps {\n  fileUrl: string;\n  alt: string;\n  className?: string;\n}\n\nexport const SvgImage = ({ fileUrl, alt, className = \"\" }: SvgImageProps) => {\n  const [svgContent, setSvgContent] = useState<string | null>(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(false);\n  const localize = useLocalize();\n\n  const fullUrl = `${__APP_ENV__.BASE_URL}${fileUrl}`;\n\n  // 核心：给SVG添加 width:100% 和 height:auto 样式，保持比例自适应\n  const addSvgResponsiveStyles = (svgText: string) => {\n    const svgRegex = /<svg([^>]*?)>/i; // 匹配SVG根节点\n    return svgText.replace(\n      svgRegex,\n      (match, attributes) => {\n        // 目标样式：宽度100%，高度自适应\n        const targetStyles = 'width: 100%; height: auto;';\n        \n        if (attributes.includes('style=')) {\n          // 已有style属性，合并样式（去重）\n          return `<svg${attributes.replace(\n            /style=([\"'])(.*?)\\1/,\n            (styleMatch, quote, styles) => {\n              // 过滤掉已有的width和height样式\n              const filteredStyles = styles\n                .split(';')\n                .filter(style => \n                  !style.trim().startsWith('width:') && \n                  !style.trim().startsWith('height:')\n                )\n                .join(';');\n              // 拼接新样式\n              const newStyles = filteredStyles \n                ? `${filteredStyles}; ${targetStyles}` \n                : targetStyles;\n              return `style=${quote}${newStyles}${quote}`;\n            }\n          )}>`;\n        } else {\n          // 无style属性，直接添加\n          return `<svg${attributes} style=\"${targetStyles}\">`;\n        }\n      }\n    );\n  };\n\n  useEffect(() => {\n    const abortController = new AbortController();\n\n    const fetchSvg = async () => {\n      try {\n        setLoading(true);\n        setError(false);\n        \n        const response = await fetch(fullUrl, {\n          signal: abortController.signal,\n          headers: { 'Accept': 'image/svg+xml, text/plain' }\n        });\n\n        if (!response.ok) throw new Error(`HTTP ${response.status}`);\n\n        const text = await response.text();\n        // 处理SVG文本，添加响应式样式\n        const processedSvg = addSvgResponsiveStyles(text);\n        setSvgContent(processedSvg);\n      } catch (err) {\n        if (!abortController.signal.aborted) {\n          setError(true);\n          console.error('SVG加载失败:', err);\n        }\n      } finally {\n        if (!abortController.signal.aborted) setLoading(false);\n      }\n    };\n\n    fetchSvg();\n    return () => abortController.abort();\n  }, [fullUrl]);\n\n  if (loading) {\n    return (\n      <div className={`flex items-center justify-center ${className}`}>\n        <FileIcon type=\"svg\" className=\"size-10 opacity-50 animate-pulse\" />\n      </div>\n    );\n  }\n\n  if (error || !svgContent) {\n    return (\n      <div className={`flex flex-col items-center justify-center ${className}`}>\n        <FileIcon type=\"svg\" className=\"size-10 text-gray-400\" />\n        <span className=\"text-xs text-red-500 mt-2\">{localize('com_sop_svg_load_failed')}</span>\n      </div>\n    );\n  }\n\n  return (\n    <div \n      className={className}\n      dangerouslySetInnerHTML={{ __html: svgContent }}\n    />\n  );\n};"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/UserInput.tsx",
    "content": "import { ChevronDown, ChevronUp, X } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useRecoilState } from \"recoil\";\nimport { checkFileParseStatus } from \"~/api/linsight\";\nimport { File_Accept } from \"~/common\";\nimport { DragDropOverlayIcon } from \"~/components/Chat/Input/Files/DragDropOverlay\";\nimport { AttachmentIcon } from \"~/components/svg\";\nimport SendIcon from \"~/components/svg/SendIcon\";\nimport { Button, Textarea } from \"~/components/ui\";\nimport { FileIcon } from \"~/components/ui/icon/File/FileIcon\";\nimport { useGetBsConfig, useUploadFileMutation } from \"~/data-provider\";\nimport { useLocalize } from \"~/hooks\";\nimport { bishengConfState } from \"~/pages/appChat/store/atoms\";\nimport { useToastContext } from \"~/Providers\";\nimport { getFileExtension } from \"~/utils\";\n\ninterface UploadingFile {\n    id: string\n    file: File\n    progress: number\n    abortController: AbortController\n    status: \"uploading\" | \"success\" | \"error\"\n    result?: any\n}\n\nexport default function UserInput({ taskId, history = {}, disable = false, onSendInput }) {\n    const localize = useLocalize()\n    const [inputValue, setInputValue] = useState(history.user_input || \"\")\n    const [uploadingFiles, setUploadingFiles] = useState<UploadingFile[]>(history?.files?.map(file => ({\n        id: file.file_id,\n        file: file.file || new File([], file.original_filename),\n        progress: 100,\n        abortController: null,\n        status: '',\n        result: {\n            name: file.original_filename,\n            size: 0\n        }\n    })) || [])\n    const [isDragOver, setIsDragOver] = useState(false)\n    const [collapsed, setCollapsed] = useState(false)\n    const [isInput, setIsInput] = useState(disable)\n    const fileInputRef = useRef<HTMLInputElement>(null)\n    // 新增：用于动画的容器Ref（获取折叠区域真实高度）\n    const collapseContainerRef = useRef<HTMLDivElement>(null)\n    // 解析中\n    console.log('uploadingFiles :>> ', history, uploadingFiles);\n    const { showToast } = useToastContext();\n    const isParsing = useMemo(() => {\n        return uploadingFiles.some((file) => file.status === \"success\")\n    }, [uploadingFiles])\n    // 更新文件上传解析状态\n    useEffect(() => {\n        const files = uploadingFiles.filter((file) => file.status === \"success\");\n        if (files.length > 0) {\n            const intervalId = setInterval(async () => {\n                const res = await checkFileParseStatus(files.map((f) => f.result.file_id));\n                const statusMap = new Map(res.data.map(item => [item.file_id, item.parsing_status]));\n\n                setUploadingFiles((prev) => {\n                    return prev.reduce((result, file) => {\n                        const fileId = file.result?.file_id;\n                        if (statusMap.has(fileId)) {\n                            const status = statusMap.get(fileId);\n                            if (status === 'completed' && file.status !== '') {\n                                // 将解析状态更新为空，并保留文件\n                                result.push({ ...file, status: '', result: { ...file.result, parsing_status: 'completed' } });\n                            } else if (status === 'failed') {\n                                // 失败文件，显示错误消息，且不加入结果数组\n                                showToast({ message: localize('com_file_parse_failed_auto_removed', { 0: file.result.filename }), status: 'error' });\n                            } else {\n                                // 其他状态保持文件不变\n                                result.push(file);\n                            }\n                        } else {\n                            result.push(file);\n                        }\n                        return result;\n                    }, []);\n                });\n            }, 2000);\n\n            // 清理定时器\n            return () => clearInterval(intervalId);\n        }\n    }, [uploadingFiles]);\n\n\n\n    const uploadFile = useUploadFileMutation({\n        onSuccess: (data, variables) => {\n            console.log(\"upload success\", data)\n            const tempFileId = data.temp_file_id\n\n            setUploadingFiles((prev) =>\n                prev.map((file) => (file.id === tempFileId ? { ...file, status: \"success\", progress: 100, result: data } : file)),\n            )\n        },\n        onError: (_error, variables) => {\n            const error = _error\n            console.log(\"upload error\", error)\n            const formData = variables.body as FormData\n            const fileId = formData.get(\"file_id\") as string\n\n            setUploadingFiles((prev) =>\n                prev.map((file) => (file.id === fileId ? { ...file, status: \"error\", progress: 0 } : file)),\n            )\n        },\n    })\n\n    const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n        const files = event.target.files\n        if (!files) return\n\n        handleFiles(Array.from(files))\n\n        // 清空input\n        if (fileInputRef.current) {\n            fileInputRef.current.value = \"\"\n        }\n    }\n\n    const [config] = useRecoilState(bishengConfState)\n    const handleFiles = (files: File[]) => {\n        const maxSize = (config?.uploaded_files_maximum_size || 200) * 1024 * 1024\n        const oversizeFiles = files.filter((file) => file.size > maxSize)\n        if (oversizeFiles.length > 0) {\n            showToast({\n                message: localize('com_file_size_exceed_limit', { name: oversizeFiles.map(f => f.name).join(', '), size: config?.uploaded_files_maximum_size }),\n                status: 'error'\n            })\n            files = files.filter((file) => file.size <= maxSize)\n        }\n        files.forEach((file) => {\n            const fileId = `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n            const abortController = new AbortController()\n\n            // 添加到上传列表\n            const uploadingFile: UploadingFile = {\n                id: fileId,\n                file,\n                progress: 0,\n                abortController,\n                status: \"uploading\",\n            }\n\n            setUploadingFiles((prev) => [...prev, uploadingFile])\n\n            // 创建FormData并开始上传\n            const formData = new FormData()\n            formData.append(\"file\", file)\n            formData.append(\"file_id\", fileId)\n            formData.append(\"file_name\", file.name)\n\n            window.isLinsight = true // TODO: 临时方案，后续需要优化\n            uploadFile.mutate({\n                body: formData,\n                signal: abortController.signal,\n            })\n        })\n    }\n\n    const handleDragEnter = (e: React.DragEvent) => {\n        e.preventDefault()\n        e.stopPropagation()\n        setIsDragOver(true)\n    }\n\n    const handleDragLeave = (e: React.DragEvent) => {\n        e.preventDefault()\n        e.stopPropagation()\n        // 只有当离开整个容器时才设置为false\n        if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n            setIsDragOver(false)\n        }\n    }\n\n    const handleDragOver = (e: React.DragEvent) => {\n        e.preventDefault()\n        e.stopPropagation()\n    }\n\n    const handleDrop = (e: React.DragEvent) => {\n        e.preventDefault()\n        e.stopPropagation()\n        setIsDragOver(false)\n\n        const files = Array.from(e.dataTransfer.files)\n        if (files.length > 0) {\n            handleFiles(files)\n        }\n    }\n\n    const handleCancelUpload = (fileId: string) => {\n        setUploadingFiles((prev) => {\n            const file = prev.find((f) => f.id === fileId)\n            if (file && file.status === \"uploading\") {\n                file.abortController.abort()\n            }\n            return prev.filter((f) => f.id !== fileId)\n        })\n    }\n\n    const getFileType = (fileName: string) => {\n        return fileName.split(\".\").pop()?.toLowerCase()\n    }\n\n    // Process the sent input\n    const handleSendInput = () => {\n        if (inputValue.trim()) {\n            setCollapsed(true)\n            setIsInput(true)\n            // console.log('object :>> ', {\n            //     task_id: taskId,\n            //     user_input: inputValue,\n            //     files: uploadingFiles.map((file) => file.result)\n            // });\n            onSendInput({\n                task_id: taskId,\n                user_input: inputValue,\n                files: uploadingFiles\n            })\n            // setUploadingFiles([])\n            // setInputValue(\"\")\n        }\n    }\n\n    // Handle Enter key to send\n    const handleKeyDown = (e) => {\n        if (e.key === \"Enter\" && !e.shiftKey) {\n            e.preventDefault()\n            handleSendInput()\n        }\n    }\n\n    const { data: bsConfig } = useGetBsConfig()\n    const accept = useMemo(() => {\n        return bsConfig?.enable_etl4lm\n            ? File_Accept.Linsight_Etl4lm\n            : File_Accept.Linsight\n    }, [bsConfig])\n\n    return (\n        <div\n            className={`border rounded-lg my-2 relative transition-all duration-200 ${isDragOver ? \"border-blue-400 border-2 bg-blue-50\" : \"border-[#dfdede]\"\n                }`}\n            onDragEnter={handleDragEnter}\n            onDragLeave={handleDragLeave}\n            onDragOver={handleDragOver}\n            onDrop={handleDrop}\n        >\n            {isDragOver && (\n                <div className=\"absolute inset-0 bg-blue-50/90 border-2 border-dashed border-blue-400 rounded-2xl flex items-center justify-center z-10\">\n                    <div className=\"text-blue-600 text-center flex flex-col items-center gap-2\">\n                        <DragDropOverlayIcon />\n                        <div className=\"text-lg font-medium\">{localize('com_addAnything')}</div>\n                        <div className=\"text-sm opacity-75\">{localize('com_dropAnyFileToAdd')}</div>\n                    </div>\n                </div>\n            )}\n\n            <div className=\"border-b flex items-center justify-between\">\n                <div className=\"flex items-center\">\n                    {!isInput ? <span className=\"bg-[#D5E3FF] m-2 ml-3 p-1 px-3 text-xs text-primary rounded-md\">\n                        {localize(\"com_sop_waiting_input\")}\n                    </span> :\n                        <span className=\"bg-green-100 m-2 ml-3 p-1 px-3 text-xs text-green-800 rounded-md text-bold\">\n                            {localize(\"com_sop_input\")}\n                        </span>\n                    }\n                    <p className=\"m-2\">{history.params?.call_title}</p>\n                </div>\n                <button\n                    type=\"button\"\n                    className=\"m-2 mr-3 p-1 rounded-md hover:bg-gray-100 text-gray-700 transition-colors\"\n                    aria-label={collapsed ? localize(\"com_action_expand\") : localize(\"com_action_collapse\")}\n                    onClick={() => setCollapsed((v) => !v)}\n                >\n                    {collapsed ? <ChevronDown size={18} /> : <ChevronUp size={18} />}\n                </button>\n            </div>\n            <div\n                ref={collapseContainerRef}\n                className=\"overflow-hidden transition-all duration-500\"\n                style={{\n                    maxHeight: collapsed ? 0 : '9999px',\n                    opacity: collapsed ? 0 : 1, // 配合透明度增强动画效果\n                    padding: collapsed ? 0 : \"0 2px\", // 折叠时清除内边距\n                }}\n            >\n                <div className=\"m-2\">\n                    <span className=\"pl-3 text-sm \">{history.params?.call_content}</span>\n                </div>\n\n                {uploadingFiles.length > 0 && (\n                    <div className=\"flex flex-wrap gap-2 mt-2 px-3\">\n                        {uploadingFiles.map((uploadingFile) => (\n                            <div\n                                key={uploadingFile.id}\n                                className=\"group min-w-52 relative flex items-center gap-2 border bg-white p-2 rounded-2xl cursor-default\"\n                            >\n                                {!isInput && <span\n                                    className=\"opacity-0 group-hover:opacity-100 absolute p-0.5 right-1.5 top-1.5 bg-black text-white rounded-full cursor-pointer transition-opacity hover:bg-gray-800\"\n                                    onClick={() => handleCancelUpload(uploadingFile.id)}\n                                >\n                                    <X size={14} />\n                                </span>\n                                }\n                                <FileIcon loading={uploadingFile.status !== \"\"} type={getFileType(uploadingFile.file.name)} />\n                                <div className=\"flex-1\">\n                                    <div className=\"max-w-48 text-sm font-medium text-gray-700 truncate\">{uploadingFile.file.name}</div>\n                                    {['uploading', 'success'].includes(uploadingFile.status) ? null\n                                        // <div className=\"text-xs text-gray-500\">\n                                        //     {localize(\"com_inputfiles_uploading\")} {uploadingFile.progress}%\n                                        // </div>\n                                        // ) : uploadingFile.status === \"success\" ? (\n                                        //     <div className=\"text-xs text-green-600\">{localize(\"com_inputfiles_parsing\")}</div>\n                                        : uploadingFile.status === \"error\" ? (\n                                            <div className=\"text-xs text-red-500\">上传失败</div>\n                                        ) : (\n                                            <div className=\"text-xs text-gray-500\">{getFileExtension(uploadingFile.file.name)?.toLowerCase()}</div>\n                                        )}\n                                </div>\n                            </div>\n                        ))}\n                    </div>\n                )}\n\n                <div className=\"bg-gray-50 rounded-lg pl-2 m-2 pb-10\"> {/* 增加底部内边距，避免按钮被遮挡 */}\n                    <Textarea\n                        id={taskId}\n                        placeholder={localize(\"com_sop_please_input\")}\n                        className=\"border-none bg-transparent ![box-shadow:initial] pl-0 pr-2 pt-2 h-auto resize-none\"\n                        rows={1}\n                        value={inputValue}\n                        maxLength={10000}\n                        onChange={(e) => setInputValue(e.target.value)}\n                        onKeyDown={handleKeyDown}\n                        disabled={isInput}\n                    />\n\n                    <input\n                        ref={fileInputRef}\n                        type=\"file\"\n                        multiple\n                        className=\"hidden\"\n                        onChange={handleFileSelect}\n                        accept={accept}\n                    />\n\n                    <Button\n                        variant={\"ghost\"}\n                        className=\"absolute bottom-4 right-14 size-9 rounded-full p-0 hover:bg-gray-200 transition-colors\"\n                        onClick={() => fileInputRef.current?.click()}\n                        disabled={isInput}\n                    >\n                        <AttachmentIcon />\n                    </Button>\n                    <Button\n                        className=\"absolute bottom-4 right-4 size-9 rounded-full p-0 bg-black hover:bg-black/80 transition-colors\"\n                        onClick={handleSendInput}\n                        disabled={!inputValue.trim() || isInput || isParsing}\n                    >\n                        <SendIcon size={24} />\n                    </Button>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/components/WebSearchSheet.tsx",
    "content": "\"use client\"\n\nimport { Chromium, Earth } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"~/components/ui/Sheet\"\nimport { useLocalize } from \"~/hooks\"\n\ninterface SearchResultItem {\n    content: string\n    suffix: string\n    title: string\n}\n\ninterface SearchResultsSheetProps {\n    isOpen: boolean\n    onClose: () => void\n    data: SearchResultItem[]\n    searchQuery: string\n}\n\nexport function WebSearchSheet({ isOpen, onClose, data = [], searchQuery }: SearchResultsSheetProps) {\n    const localize = useLocalize();\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onClose}>\n            <SheetContent side=\"right\" className=\"w-[600px] sm:w-[700px] sm:max-w-[700px] p-0\">\n                <SheetHeader className=\"p-4 border-b border-border\">\n                    <div className=\"flex items-center gap-3\">\n                        <Earth className=\"w-5 h-5 text-muted-foreground\" />\n                        <SheetTitle className=\"text-lg font-semibold text-foreground\">{localize('com_webSearch')}</SheetTitle>\n                    </div>\n                    <SheetDescription className=\"text-left\">\n                        <div className=\"flex items-center gap-2 text-sm text-muted-foreground mt-2\">\n                            <span className=\"whitespace-nowrap\">🔍{localize('com_searchQueryLabel')}</span>\n                            <span className=\"font-medium text-foreground\">“{searchQuery}”</span>\n                        </div>\n                    </SheetDescription>\n                </SheetHeader>\n\n                {/* Results Content */}\n                <div className=\"flex-1 h-[calc(100vh-120px)] overflow-y-auto\">\n                    <div className=\"p-4 space-y-4\">\n                        {data.map((item, index) => (\n                            <div\n                                key={index}\n                                className=\"border-b overflow-hidden hover:border-blue-500 transition-colors duration-200 cursor-pointer\"\n                            >\n                                <a href={item.url || '#'} target={item.url ? \"_blank\" : undefined} rel=\"noopener noreferrer\">\n                                    {/* Content - always expanded as per design */}\n                                    <div className=\"p-4 bg-card\">\n                                        <div className=\"mb-3 flex items-center gap-2\">\n                                            <ImageWithFallback\n                                                src={item.thumbnail}\n                                                alt=\"\"\n                                                className=\"\"\n                                            />\n                                            <p>{item.host}</p>\n                                        </div>\n                                        <h4 className=\"text-base font-medium text-foreground\">{item.title}</h4>\n                                        <div className=\"font-normal text-sm text-[#303133] leading-6 break-all\">\n                                            <p className=\"line-clamp-2 overflow-hidden text-ellipsis\">{item.content}</p>\n                                        </div>\n                                    </div>\n                                </a>\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n\n\n\nconst ImageWithFallback = ({ src, alt, className }) => {\n    const [hasError, setHasError] = useState(false);\n\n    const handleError = () => {\n        setHasError(true);\n    };\n\n    return (\n        <div className={className}>\n            {!hasError && src ? (\n                <img\n                    src={src}\n                    alt={alt}\n                    className=\"max-w-12 max-h-12\"\n                    onError={handleError}\n                />\n            ) : (\n                <Chromium size={20} />\n            )}\n        </div>\n    );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/Sop/index.tsx",
    "content": "import { useEffect, useRef, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { checkSopQueueStatus, getCaseDetail, getLinsightSessionVersionList, getLinsightTaskList } from '~/api/linsight';\nimport { useGetLinsightToolList, useGetOrgToolList, useGetPersonalToolList } from '~/data-provider';\nimport { useGenerateSop, useLinsightManager } from '~/hooks/useLinsightManager';\nimport { formatTime } from '~/utils';\nimport { LoadingIcon } from '../ui/icon/Loading';\nimport { LoadingBox } from './components/SopLoading';\nimport { Header } from './Header';\nimport { SOPEditor, SopStatus } from './SOPEditor';\nimport { TaskFlow } from './TaskFlow';\nimport { useLocalize } from '~/hooks';\nimport { CheckIcon, MousePointerClick } from 'lucide-react';\nimport { Button } from '../ui';\n\nexport default function index({ id = '', vid = '', shareToken = '' }) {\n    // 获取url参数\n    const { conversationId: cid, sopId: sid } = useParams();\n    const conversationId = cid || id;\n    const [isSharePage] = useState(!!vid);\n    // 兼容历史链接 case开头\n    const sopId = conversationId ? (conversationId.match(/case(\\d+)/)?.[1] || '') : sid; // Compatible with historical cases \n\n    const { loading, versionId, setVersionId, switchVersion, versions, setVersions, checkQueueStatus } = useLinsightData({ conversationId, sopId, vid, shareToken });\n    const [isLoading, error] = useGenerateSop(versionId, setVersionId, setVersions)\n\n    return (\n        <div className='relative h-full bg-gradient-to-b from-[#F4F8FF] to-white'>\n            {\n                loading && <div className='absolute z-10 size-full flex justify-center items-center bg-white/50'>\n                    <LoadingIcon />\n                </div>\n            }\n            <Header\n                isLoading={isLoading}\n                chatId={conversationId}\n                setVersionId={switchVersion}\n                versionId={versionId}\n                isSharePage={isSharePage || sid} // when case sharebutton is hide \n                versions={versions}\n            />\n\n            {isLoading ? <LoadingBox /> : <div className='w-full h-[calc(100vh-68px)] p-2 pt-0'>\n                <div className='h-full flex gap-2'>\n                    <SOPEditor\n                        sopError={error}\n                        isSharePage={isSharePage}\n                        versionId={versionId}\n                        onRun={checkQueueStatus}\n                    />\n\n                    <TaskFlow\n                        isSharePage={isSharePage}\n                        versionId={versionId}\n                        setVersions={setVersions}\n                        setVersionId={setVersionId}\n                    />\n                </div>\n            </div>}\n        </div>\n    );\n}\n\n// 分享页做同款\nexport const ShareSameSopControls = ({ name }) => {\n    const localize = useLocalize();\n\n    return <div className=\"px-4 pb-6\">\n        <div className=\"flex gap-3 p-4 px-6 justify-between items-center bg-white rounded-3xl border border-gray-100 relative\">\n            <div className=\"flex items-center gap-2\">\n            </div>\n            <Button className=\"px-6\" onClick={() => window.open(`${__APP_ENV__.BASE_URL}/c/new?name=${encodeURIComponent(name)}&path=${encodeURIComponent(location.pathname)}`)} >\n                <MousePointerClick className=\"w-3.5 h-3.5\" />\n                {localize('com_make_samestyle')}\n            </Button>\n        </div>\n    </div >\n}\n\n\nexport const useLinsightData = ({ vid, sopId, conversationId, shareToken }\n    : { conversationId: string | undefined, sopId?: string, vid?: string, shareToken?: string }) => {\n    // 获取工具列表\n    const { data: linsightTools } = useGetLinsightToolList();\n    const { data: PersonalTool } = useGetPersonalToolList();\n    const { data: orgTools } = useGetOrgToolList({ page: 1 });\n\n    const [loading, setLoading] = useState(false);\n\n    // 状态管理\n    const [versions, setVersions] = useState<{ id: string, name: string }[]>([]);\n    const [versionId, setVersionId] = useState('new')\n    const { getLinsight, updateLinsight, switchAndUpdateLinsight } = useLinsightManager();\n    // 检查排队情况\n    const checkQueueStatus = useQueueStatus(versionId, updateLinsight)\n\n    const loadSessionVersionsAndTasks = async (_conversationId: string, versionId?: string) => {\n        setLoading(true);\n        try {\n            // 1. 获取会话版本列表\n            const data = await getLinsightSessionVersionList(_conversationId, shareToken);\n            if (!versionId) {\n                const formattedVersions = data.map((item) => ({\n                    id: item.id,\n                    name: formatTime(item.version, true)\n                }));\n                setVersions(formattedVersions);\n            }\n\n            // 2. 默认选中第一个版本，并加载其任务\n            const _versionId = vid || versionId;\n            const firstVersion = _versionId ? data.find(el => el.id === (_versionId)) : data[0];\n            if (firstVersion) {\n                const taskRes = await getLinsightTaskList(firstVersion.id, firstVersion, shareToken);\n                setVersionId(vid || firstVersion.id);\n                console.log('firstVersion :>> ', firstVersion, taskRes);\n                switchAndUpdateLinsight(firstVersion.id, { ...firstVersion, tasks: taskRes });\n            }\n            setLoading(false);\n        } catch (error) {\n            setLoading(false);\n            console.error('Failed to load session versions or tasks:', error);\n        }\n    };\n\n    // 加载会话版本和任务\n    useEffect(() => {\n        if (!conversationId || conversationId === 'new' || !(linsightTools && PersonalTool && orgTools)) {\n            return;\n        }\n\n        loadSessionVersionsAndTasks(conversationId);\n    }, [conversationId, linsightTools, PersonalTool, orgTools]);\n\n    // Get details using sop ID\n    useEffect(() => {\n        if (sopId) {\n            setLoading(true);\n            getCaseDetail(sopId).then(res => {\n                const { version_info, execute_tasks } = res.data\n                setVersions([])\n                setVersionId(version_info.id);\n                switchAndUpdateLinsight(version_info.id, { ...version_info, tasks: execute_tasks });\n                setLoading(false);\n            })\n        }\n    }, [sopId])\n\n    const switchVersion = async (versionId: string) => {\n        const linsight = getLinsight(versionId)\n        if (linsight) return setVersionId(versionId);\n        // 缓存无信息从接口读取\n        loadSessionVersionsAndTasks(conversationId!, versionId);\n    }\n\n    return {\n        loading,\n        linsightTools,\n        PersonalTool,\n        orgTools,\n        versions,\n        versionId,\n        setVersionId,\n        switchVersion,\n        setVersions,\n        checkQueueStatus\n    };\n};\n\n\nconst useQueueStatus = (vid, updateLinsight) => {\n    const timerRef = useRef<any>(null)\n\n    const checkQueueStatus = async (vid: string) => {\n        const res = await checkSopQueueStatus(vid);\n        const count = res.data.index\n        const params = { queueCount: count }\n        if (count > 0) {\n            params.status = SopStatus.Running\n        }\n        updateLinsight(vid, params);\n        if (count > 0) {\n            timerRef.current = setTimeout(() => {\n                checkQueueStatus(vid)\n            }, 60000)\n        } else {\n            clearTimeout(timerRef.current)\n        }\n    }\n\n    useEffect(() => {\n        if (vid === 'new') return;\n        checkQueueStatus(vid)\n\n        return () => {\n            clearTimeout(timerRef.current)\n        }\n    }, [vid])\n\n    return () => checkQueueStatus(vid)\n}"
  },
  {
    "path": "src/frontend/client/src/components/Tools/ToolItem.tsx",
    "content": "import { TPlugin } from '~/data-provider/data-provider/src';\nimport { XCircle, PlusCircleIcon, Wrench } from 'lucide-react';\nimport { useLocalize } from '~/hooks';\n\ntype ToolItemProps = {\n  tool: TPlugin;\n  onAddTool: () => void;\n  onRemoveTool: () => void;\n  isInstalled?: boolean;\n};\n\nfunction ToolItem({ tool, onAddTool, onRemoveTool, isInstalled = false }: ToolItemProps) {\n  const localize = useLocalize();\n  const handleClick = () => {\n    if (isInstalled) {\n      onRemoveTool();\n    } else {\n      onAddTool();\n    }\n  };\n\n  return (\n    <div className=\"flex flex-col gap-4 rounded border border-border-medium bg-transparent p-6\">\n      <div className=\"flex gap-4\">\n        <div className=\"h-[70px] w-[70px] shrink-0\">\n          <div className=\"relative h-full w-full\">\n            {tool.icon != null && tool.icon ? (\n              <img\n                src={tool.icon}\n                alt={localize('com_ui_logo', { 0: tool.name })}\n                className=\"h-full w-full rounded-[5px] bg-white\"\n              />\n            ) : (\n              <div className=\"flex h-full w-full items-center justify-center rounded-[5px] border border-border-medium bg-transparent\">\n                <Wrench className=\"h-8 w-8 text-text-secondary\" />\n              </div>\n            )}\n            <div className=\"absolute inset-0 rounded-[5px] ring-1 ring-inset ring-black/10\"></div>\n          </div>\n        </div>\n        <div className=\"flex min-w-0 flex-col items-start justify-between\">\n          <div className=\"mb-2 line-clamp-1 max-w-full text-lg leading-5 text-text-primary\">\n            {tool.name}\n          </div>\n          {!isInstalled ? (\n            <button\n              className=\"btn btn-primary relative\"\n              aria-label={`${localize('com_ui_add')} ${tool.name}`}\n              onClick={handleClick}\n            >\n              <div className=\"flex w-full items-center justify-center gap-2\">\n                {localize('com_ui_add')}\n                <PlusCircleIcon className=\"flex h-4 w-4 items-center stroke-2\" />\n              </div>\n            </button>\n          ) : (\n            <button\n              className=\"btn relative bg-gray-300 hover:bg-gray-400 dark:bg-gray-50 dark:hover:bg-gray-200\"\n              onClick={handleClick}\n              aria-label={`${localize('com_nav_tool_remove')} ${tool.name}`}\n            >\n              <div className=\"flex w-full items-center justify-center gap-2\">\n                {localize('com_nav_tool_remove')}\n                <XCircle className=\"flex h-4 w-4 items-center stroke-2\" />\n              </div>\n            </button>\n          )}\n        </div>\n      </div>\n      <div className=\"line-clamp-3 h-[60px] text-sm text-text-secondary\">{tool.description}</div>\n    </div>\n  );\n}\n\nexport default ToolItem;\n"
  },
  {
    "path": "src/frontend/client/src/components/Tools/ToolSelectDialog.tsx",
    "content": "import { useEffect } from 'react';\nimport { Search, X } from 'lucide-react';\nimport { Dialog, DialogPanel, DialogTitle, Description } from '@headlessui/react';\nimport { useFormContext } from 'react-hook-form';\nimport { isAgentsEndpoint } from '~/data-provider/data-provider/src';\nimport { useUpdateUserPluginsMutation } from '~/data-provider/data-provider/src/react-query';\nimport type {\n  AssistantsEndpoint,\n  EModelEndpoint,\n  TPluginAction,\n  TError,\n} from '~/data-provider/data-provider/src';\nimport type { TPluginStoreDialogProps } from '~/common/types';\nimport { PluginPagination, PluginAuthForm } from '~/components/Plugins/Store';\nimport { useLocalize, usePluginDialogHelpers } from '~/hooks';\nimport { useAvailableToolsQuery } from '~/data-provider';\nimport ToolItem from './ToolItem';\n\nfunction ToolSelectDialog({\n  isOpen,\n  endpoint,\n  setIsOpen,\n  toolsFormKey,\n}: TPluginStoreDialogProps & {\n  toolsFormKey: string;\n  endpoint: AssistantsEndpoint | EModelEndpoint.agents;\n}) {\n  const localize = useLocalize();\n  const { getValues, setValue } = useFormContext();\n  const { data: tools } = useAvailableToolsQuery(endpoint);\n  const isAgentTools = isAgentsEndpoint(endpoint);\n\n  const {\n    maxPage,\n    setMaxPage,\n    currentPage,\n    setCurrentPage,\n    itemsPerPage,\n    searchChanged,\n    setSearchChanged,\n    searchValue,\n    setSearchValue,\n    gridRef,\n    handleSearch,\n    handleChangePage,\n    error,\n    setError,\n    errorMessage,\n    setErrorMessage,\n    showPluginAuthForm,\n    setShowPluginAuthForm,\n    selectedPlugin,\n    setSelectedPlugin,\n  } = usePluginDialogHelpers();\n\n  const updateUserPlugins = useUpdateUserPluginsMutation();\n  const handleInstallError = (error: TError) => {\n    setError(true);\n    const errorMessage = error.response?.data?.message ?? '';\n    if (errorMessage) {\n      setErrorMessage(errorMessage);\n    }\n    setTimeout(() => {\n      setError(false);\n      setErrorMessage('');\n    }, 5000);\n  };\n\n  const handleInstall = (pluginAction: TPluginAction) => {\n    const addFunction = () => {\n      const fns = getValues(toolsFormKey).slice();\n      fns.push(pluginAction.pluginKey);\n      setValue(toolsFormKey, fns);\n    };\n\n    if (!pluginAction.auth) {\n      return addFunction();\n    }\n\n    updateUserPlugins.mutate(pluginAction, {\n      onError: (error: unknown) => {\n        handleInstallError(error as TError);\n      },\n      onSuccess: addFunction,\n    });\n\n    setShowPluginAuthForm(false);\n  };\n\n  const onRemoveTool = (tool: string) => {\n    setShowPluginAuthForm(false);\n    updateUserPlugins.mutate(\n      { pluginKey: tool, action: 'uninstall', auth: null, isEntityTool: true },\n      {\n        onError: (error: unknown) => {\n          handleInstallError(error as TError);\n        },\n        onSuccess: () => {\n          const fns = getValues(toolsFormKey).filter((fn: string) => fn !== tool);\n          setValue(toolsFormKey, fns);\n        },\n      },\n    );\n  };\n\n  const onAddTool = (pluginKey: string) => {\n    setShowPluginAuthForm(false);\n    const getAvailablePluginFromKey = tools?.find((p) => p.pluginKey === pluginKey);\n    setSelectedPlugin(getAvailablePluginFromKey);\n\n    const { authConfig, authenticated = false } = getAvailablePluginFromKey ?? {};\n\n    if (authConfig && authConfig.length > 0 && !authenticated) {\n      setShowPluginAuthForm(true);\n    } else {\n      handleInstall({ pluginKey, action: 'install', auth: null });\n    }\n  };\n\n  const filteredTools = tools?.filter((tool) =>\n    tool.name.toLowerCase().includes(searchValue.toLowerCase()),\n  );\n\n  useEffect(() => {\n    if (filteredTools) {\n      setMaxPage(Math.ceil(filteredTools.length / itemsPerPage));\n      if (searchChanged) {\n        setCurrentPage(1);\n        setSearchChanged(false);\n      }\n    }\n  }, [\n    tools,\n    itemsPerPage,\n    searchValue,\n    filteredTools,\n    searchChanged,\n    setMaxPage,\n    setCurrentPage,\n    setSearchChanged,\n  ]);\n\n  return (\n    <Dialog\n      open={isOpen}\n      onClose={() => {\n        setIsOpen(false);\n        setCurrentPage(1);\n        setSearchValue('');\n      }}\n      className=\"relative z-[102]\"\n    >\n      {/* The backdrop, rendered as a fixed sibling to the panel container */}\n      <div className=\"fixed inset-0 bg-surface-primary opacity-60 transition-opacity dark:opacity-80\" />\n      {/* Full-screen container to center the panel */}\n      <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n        <DialogPanel\n          className=\"relative w-full transform overflow-hidden overflow-y-auto rounded-lg bg-surface-secondary text-left shadow-xl transition-all max-sm:h-full sm:mx-7 sm:my-8 sm:max-w-2xl lg:max-w-5xl xl:max-w-7xl\"\n          style={{ minHeight: '610px' }}\n        >\n          <div className=\"flex items-center justify-between border-b-[1px] border-border-medium px-4 pb-4 pt-5 sm:p-6\">\n            <div className=\"flex items-center\">\n              <div className=\"text-center sm:text-left\">\n                <DialogTitle className=\"text-lg font-medium leading-6 text-text-primary\">\n                  {isAgentTools\n                    ? localize('com_nav_tool_dialog_agents')\n                    : localize('com_nav_tool_dialog')}\n                </DialogTitle>\n                <Description className=\"text-sm text-text-secondary\">\n                  {localize('com_nav_tool_dialog_description')}\n                </Description>\n              </div>\n            </div>\n            <div>\n              <div className=\"sm:mt-0\">\n                <button\n                  onClick={() => {\n                    setIsOpen(false);\n                    setCurrentPage(1);\n                  }}\n                  className=\"inline-block rounded-full text-text-secondary transition-colors hover:text-text-primary\"\n                  aria-label=\"Close dialog\"\n                  type=\"button\"\n                >\n                  <X aria-hidden=\"true\" />\n                </button>\n              </div>\n            </div>\n          </div>\n          {error && (\n            <div\n              className=\"relative m-4 rounded border border-red-400 bg-red-100 px-4 py-3 text-red-700\"\n              role=\"alert\"\n            >\n              {localize('com_nav_plugin_auth_error')} {errorMessage}\n            </div>\n          )}\n          {showPluginAuthForm && (\n            <div className=\"p-4 sm:p-6 sm:pt-4\">\n              <PluginAuthForm\n                plugin={selectedPlugin}\n                onSubmit={(installActionData: TPluginAction) => handleInstall(installActionData)}\n                isEntityTool={true}\n              />\n            </div>\n          )}\n          <div className=\"p-4 sm:p-6 sm:pt-4\">\n            <div className=\"mt-4 flex flex-col gap-4\">\n              <div className=\"flex items-center justify-center space-x-4\">\n                <Search className=\"h-6 w-6 text-text-tertiary\" />\n                <input\n                  type=\"text\"\n                  value={searchValue}\n                  onChange={handleSearch}\n                  placeholder={localize('com_nav_tool_search')}\n                  className=\"w-64 rounded border border-border-medium bg-transparent px-2 py-1 text-text-primary focus:outline-none\"\n                />\n              </div>\n              <div\n                ref={gridRef}\n                className=\"grid grid-cols-1 grid-rows-2 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n                style={{ minHeight: '410px' }}\n              >\n                {filteredTools &&\n                  filteredTools\n                    .slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage)\n                    .map((tool, index) => (\n                      <ToolItem\n                        key={index}\n                        tool={tool}\n                        isInstalled={getValues(toolsFormKey).includes(tool.pluginKey)}\n                        onAddTool={() => onAddTool(tool.pluginKey)}\n                        onRemoveTool={() => onRemoveTool(tool.pluginKey)}\n                      />\n                    ))}\n              </div>\n            </div>\n            <div className=\"mt-2 flex flex-col items-center gap-2 sm:flex-row sm:justify-between\">\n              {maxPage > 0 ? (\n                <PluginPagination\n                  currentPage={currentPage}\n                  maxPage={maxPage}\n                  onChangePage={handleChangePage}\n                />\n              ) : (\n                <div style={{ height: '21px' }}></div>\n              )}\n            </div>\n          </div>\n        </DialogPanel>\n      </div>\n    </Dialog>\n  );\n}\n\nexport default ToolSelectDialog;\n"
  },
  {
    "path": "src/frontend/client/src/components/Tools/index.ts",
    "content": "export { default as ToolSelectDialog } from './ToolSelectDialog';\nexport { default as ToolItem } from './ToolItem';\n"
  },
  {
    "path": "src/frontend/client/src/components/Voice/SpeechToText.tsx",
    "content": "\"use client\"\n\nimport { LoaderCircle, Mic } from \"lucide-react\"\nimport PropTypes from \"prop-types\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useRecoilState } from \"recoil\"\nimport { getVoice2TextApi } from \"~/api\"\nimport { useLocalize } from \"~/hooks\"\nimport { useToastContext } from \"~/Providers\"\nimport { Button } from \"..\"\nimport VoiceRecordingIcon from \"../ui/icon/Voice\"\nimport { interruptAudioAtom, useRecordingAudioLoading } from \"./textToSpeechStore\"\n\n// --- Core Audio Processing Logic ---\n\n/**\n * Encodes an AudioBuffer to WAV format\n * Converts multi-channel audio to mono to reduce noise\n */\nconst encodeWAV = (audioBuffer: AudioBuffer): Blob => {\n    const sampleRate = audioBuffer.sampleRate\n    const channels = audioBuffer.numberOfChannels\n    let samples = audioBuffer.getChannelData(0)\n\n    // Convert multi-channel to mono (reduces noise)\n    if (channels > 1) {\n        const monoSamples = new Float32Array(samples.length)\n        for (let i = 0; i < samples.length; i++) {\n            let sum = 0\n            for (let c = 0; c < channels; c++) {\n                sum += audioBuffer.getChannelData(c)[i]\n            }\n            monoSamples[i] = sum / channels\n        }\n        samples = monoSamples\n    }\n\n    // Encode WAV file header\n    const buffer = new ArrayBuffer(44 + samples.length * 2)\n    const view = new DataView(buffer)\n\n    const writeString = (view: DataView, offset: number, string: string) => {\n        for (let i = 0; i < string.length; i++) {\n            view.setUint8(offset + i, string.charCodeAt(i))\n        }\n    }\n\n    // RIFF Chunk\n    writeString(view, 0, \"RIFF\")\n    view.setUint32(4, 36 + samples.length * 2, true)\n    writeString(view, 8, \"WAVE\")\n\n    // fmt Chunk\n    writeString(view, 12, \"fmt \")\n    view.setUint32(16, 16, true)\n    view.setUint16(20, 1, true) // PCM format\n    view.setUint16(22, 1, true) // Mono channel\n    view.setUint32(24, sampleRate, true)\n    view.setUint32(28, sampleRate * 2, true)\n    view.setUint16(32, 2, true)\n    view.setUint16(34, 16, true) // 16-bit\n\n    // data Chunk\n    writeString(view, 36, \"data\")\n    view.setUint32(40, samples.length * 2, true)\n\n    // Write PCM data\n    let offset = 44\n    for (let i = 0; i < samples.length; i++) {\n        const s = Math.max(-1, Math.min(1, samples[i]))\n        view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true)\n        offset += 2\n    }\n\n    return new Blob([view], { type: \"audio/wav\" })\n}\n\n/**\n * Converts a Blob to WAV format using Web Audio API\n */\nconst convertBlobToWav = async (blob: Blob): Promise<Blob> => {\n    return new Promise((resolve, reject) => {\n        const audioContext = new (window.AudioContext || (window as any).webkitAudioContext)({\n            sampleRate: 44100,\n        })\n        const fileReader = new FileReader()\n\n        fileReader.onload = async () => {\n            try {\n                const audioBuffer = await audioContext.decodeAudioData(fileReader.result as ArrayBuffer)\n                const wavBlob = encodeWAV(audioBuffer)\n                resolve(wavBlob)\n                audioContext.close()\n            } catch (err) {\n                reject(new Error(\"Audio decoding failed: \" + (err as Error).message))\n                audioContext.close()\n            }\n        }\n\n        fileReader.onerror = () => {\n            reject(new Error(\"Failed to read audio file\"))\n        }\n\n        fileReader.readAsArrayBuffer(blob)\n    })\n}\n\n// --- Main Component ---\n\ninterface SpeechToTextComponentProps {\n    disabled?: boolean\n    onChange: (text: string) => void\n}\n\nconst SpeechToTextComponent = ({ disabled, onChange }: SpeechToTextComponentProps) => {\n    const { showToast } = useToastContext()\n    const [isRecording, _setIsRecording] = useState(false)\n    const isRecordingRef = useRef(false)\n    const setIsRecording = useCallback((value: boolean) => {\n        isRecordingRef.current = value\n        _setIsRecording(value)\n    }, [_setIsRecording])\n    const [isProcessing, setIsProcessing] = useState(false)\n    const localize = useLocalize();\n\n\n    const mediaRecorderRef = useRef<MediaRecorder | null>(null)\n    const audioChunksRef = useRef<Blob[]>([])\n    const audioContextRef = useRef<AudioContext | null>(null)\n    const streamRef = useRef<MediaStream | null>(null)\n\n    const [interruptAudio] = useRecoilState(interruptAudioAtom)\n    const [_, setAudioOpening] = useRecordingAudioLoading()\n\n    useEffect(() => {\n        stopRecording(null)\n    }, [interruptAudio])\n\n    /**\n     * Cleans up all audio resources\n     */\n    const cleanupResources = useCallback(async () => {\n        // Stop all media tracks\n        if (streamRef.current) {\n            streamRef.current.getTracks().forEach((track) => track.stop())\n            streamRef.current = null\n        }\n\n        // Close audio context\n        if (audioContextRef.current && audioContextRef.current.state !== \"closed\") {\n            await audioContextRef.current.close()\n            audioContextRef.current = null\n        }\n\n        // Clear media recorder\n        mediaRecorderRef.current = null\n        setAudioOpening(false)\n    }, [])\n\n    /**\n     * Sends audio to speech-to-text API\n     */\n    const convertSpeechToText = useCallback(\n        async (audioBlob: Blob) => {\n            try {\n                const formData = new FormData()\n                formData.append(\"file\", audioBlob, \"recording.wav\")\n                const res = await getVoice2TextApi(formData)\n                const responseData = res.data\n                const transcript = responseData || \"\"\n\n                // Pass recognized text to parent component\n                // if (!transcript) {\n                //     return showToast({ message: localize('no_text_recognized'), status: \"info\" })\n                // }\n                onChange(transcript)\n            } catch (err) {\n                console.error(\"Speech recognition error:\", err)\n                showToast({ message: localize('no_text_recognized'), status: \"error\" })\n            } finally {\n                setIsProcessing(false)\n            }\n        },\n        [onChange, showToast],\n    )\n\n    /**\n     * Starts audio recording with optimized settings\n     */\n    const startRecording = useCallback(async (e) => {\n        try {\n            setAudioOpening(true)\n            e.preventDefault();\n            audioChunksRef.current = []\n            setIsProcessing(false)\n            // Ten minute recording limit\n            setTimeout(() => {\n                if (!isRecordingRef.current) return\n                setIsProcessing(true)\n                mediaRecorderRef.current?.stop()\n                setIsRecording(false)\n            }, 600000)\n\n            // Request microphone access with noise reduction settings\n            const stream = await navigator.mediaDevices.getUserMedia({\n                audio: {\n                    sampleRate: 44100,\n                    channelCount: 1,\n                    echoCancellation: true,\n                    noiseSuppression: true,\n                    autoGainControl: true,\n                },\n            })\n\n            streamRef.current = stream\n\n            // Initialize AudioContext for optimized encoding\n            const audioContext = new (window.AudioContext || (window as any).webkitAudioContext)({\n                sampleRate: 44100,\n            })\n            audioContextRef.current = audioContext\n\n            // Initialize MediaRecorder with optimal codec\n            const options = { mimeType: \"audio/webm; codecs=opus\" }\n            const mediaRecorder = new MediaRecorder(stream, options)\n            mediaRecorderRef.current = mediaRecorder\n\n            // Collect audio data chunks\n            mediaRecorder.ondataavailable = (event) => {\n                if (event.data.size > 0) {\n                    audioChunksRef.current.push(event.data)\n                }\n            }\n\n            // Handle recording stop\n            mediaRecorder.onstop = async () => {\n                if (window.interruptAudio) {\n                    setIsProcessing(false)\n                    return cleanupResources()\n                }\n                try {\n                    setIsProcessing(true)\n\n                    // Convert recorded audio to WAV format\n                    const rawBlob = new Blob(audioChunksRef.current, { type: \"audio/webm\" })\n                    const wavBlob = await convertBlobToWav(rawBlob)\n\n                    // Send to speech-to-text API\n                    await convertSpeechToText(wavBlob)\n                } catch (conversionError) {\n                    console.error(\"Audio conversion failed:\", conversionError)\n                    showToast({ message: \"Audio format conversion failed, please try again\", status: \"error\" })\n                    setIsProcessing(false)\n                } finally {\n                    await cleanupResources()\n                    setIsProcessing(false)\n                }\n            }\n\n            // Start recording\n            mediaRecorder.start()\n            setIsRecording(true)\n        } catch (err) {\n            console.error(\"Microphone access error:\", err)\n            showToast({ message: \"Microphone access denied\", status: \"error\" })\n            await cleanupResources()\n        }\n    }, [convertSpeechToText, showToast, cleanupResources, interruptAudio])\n\n    /**\n     * Stops the current recording\n     */\n    const stopRecording = useCallback((e) => {\n        e?.preventDefault();\n        if (isProcessing) return\n\n        if (mediaRecorderRef.current && isRecording) {\n            setIsProcessing(true)\n            mediaRecorderRef.current.stop()\n            setIsRecording(false)\n        }\n    }, [isRecording, isProcessing])\n\n    return (\n        <div className=\"relative z-10\">\n            {/* Recording control button */}\n            <div className={disabled ? 'cursor-not-allowed' : ''}>\n                {isProcessing && <LoaderCircle size={30} className=\"animate-spin p-1\" />}\n                {!isProcessing && isRecording && (\n                    <Button size={'icon'} variant='outline' onClick={stopRecording} className=\"rounded-full w-8 h-8\">\n                        {/* <AudioLines size={18} className=\"animate-pulse\" /> */}\n                        <VoiceRecordingIcon onClick={() => { }} />\n                    </Button>\n                )}\n                {!isProcessing && !isRecording && (\n                    <Button size={'icon'} disabled={disabled} onClick={startRecording} className=\"rounded-full w-8 h-8\">\n                        <Mic size={18} className=\"\" />\n                    </Button>\n                )}\n            </div>\n\n            {/* Recording pulse animation */}\n            {isRecording && <div className=\"pulse-ring\"></div>}\n        </div>\n    )\n}\n\n// PropTypes for runtime validation\nSpeechToTextComponent.propTypes = {\n    onChange: PropTypes.func.isRequired,\n}\n\nexport default SpeechToTextComponent\n"
  },
  {
    "path": "src/frontend/client/src/components/Voice/TextToSpeechButton.tsx",
    "content": "\"use client\"\n\nimport { Loader2, Pause, Volume2 } from \"lucide-react\"\nimport { textToSpeech } from \"~/api\"\nimport { useGetWorkbenchModelsQuery } from \"~/data-provider\"\nimport { useToastContext } from \"~/Providers\"\nimport { cn } from \"~/utils\"\nimport {\n    useAudioPlayer\n} from \"./textToSpeechStore\"\n\n\ninterface TextToSpeechButtonProps {\n    messageId: string\n    text: string\n    className?: string\n}\n\nexport const TextToSpeechButton = ({ messageId, text, className }: TextToSpeechButtonProps) => {\n    const { activeMessageId, isLoadingAudio, isPlaying, playAudio, setActiveMessageId, pauseAudio, resumeAudio, stopAudio, setIsLoadingAudio } = useAudioPlayer()\n    const { showToast } = useToastContext()\n\n    // Check current message playback state\n    const isCurrentMessage = activeMessageId === messageId\n    const isCurrentLoading = isCurrentMessage && isLoadingAudio\n    const isCurrentPlaying = isCurrentMessage && isPlaying\n\n    // Fetch audio URL from API\n    const fetchAudioUrl = async (content: string): Promise<string> => {\n        try {\n            const response = await textToSpeech(content)\n\n            // Parse API response to get audio path\n            let audioPath = \"\"\n            if (typeof response === \"string\") {\n                audioPath = response\n            } else if (response?.data) {\n                audioPath = typeof response.data === \"string\" ? response.data : response.data?.data || \"\"\n            }\n\n            if (!audioPath) {\n                throw new Error(\"Failed to parse audio path from response\")\n            }\n\n            // Construct full URL\n            return `${__APP_ENV__.BASE_URL}${audioPath}`\n        } catch (error) {\n            console.error(\"Failed to fetch audio URL:\", error)\n            throw new Error(\"Audio generation failed\")\n        }\n    }\n\n    // Handle play/pause action\n    const handlePlayPause = async () => {\n        try {\n            // If this is the current message\n            if (isCurrentMessage) {\n                if (isPlaying) {\n                    pauseAudio()\n                } else {\n                    resumeAudio()\n                }\n                return\n            }\n\n            setActiveMessageId(messageId)\n            setIsLoadingAudio(true)\n            // If this is a new message, fetch audio and play\n            const audioUrl = await fetchAudioUrl(text)\n            playAudio(messageId, audioUrl)\n        } catch (error) {\n            console.error(\"Failed to play audio:\", error)\n            showToast({ message: \"播放功能不可用，请联系管理员\", status: \"error\" })\n\n            // Clean up state on error\n            if (isCurrentMessage) {\n                stopAudio()\n            }\n        }\n    }\n\n    // Render icon based on state\n    const renderIcon = () => {\n        if (isCurrentLoading) {\n            return <Loader2 size={20} strokeWidth={1.8} className=\"animate-spin text-gray-400\" />\n        }\n\n        if (isCurrentPlaying) {\n            return (\n                <Pause\n                    size={20}\n                    strokeWidth={1.8}\n                    className=\"text-gray-400 hover:text-primary transition-colors cursor-pointer\"\n                />\n            )\n        }\n\n        return (\n            <Volume2\n                size={20}\n                strokeWidth={1.8}\n                className=\"text-gray-400 hover:text-primary transition-colors cursor-pointer\"\n            />\n        )\n    }\n\n    // Disabled when tts_model is not configured\n    const { data: modelData } = useGetWorkbenchModelsQuery()\n    if (!modelData?.tts_model.id) return null\n\n    return (\n        <button\n            onClick={handlePlayPause}\n            disabled={isCurrentLoading}\n            aria-label={isCurrentPlaying ? \"Pause\" : \"Play\"}\n            className={cn(\"inline-flex items-center justify-center disabled:opacity-50 disabled:cursor-not-allowed\", className)}\n        >\n            {renderIcon()}\n        </button>\n    )\n}\n\n\n\n"
  },
  {
    "path": "src/frontend/client/src/components/Voice/textToSpeechStore.tsx",
    "content": "\"use client\"\n\nimport { Howl } from \"howler\"\nimport { useCallback } from \"react\"\nimport { atom, useRecoilState, useRecoilValue, useSetRecoilState } from \"recoil\"\n\nlet progressAnimationId: number | null = null\n\n// Active message ID being played\nexport const activeMessageIdAtom = atom<string | null>({\n  key: \"audioPlayer_activeMessageId\",\n  default: null,\n})\n\n// Audio instance (Howl object)\nexport const audioInstanceAtom = atom<Howl | null>({\n  key: \"audioPlayer_audioInstance\",\n  default: null,\n  dangerouslyAllowMutability: true, // Howl instance is mutable\n})\n\n// Playing state\nexport const isPlayingAtom = atom<boolean>({\n  key: \"audioPlayer_isPlaying\",\n  default: false,\n})\n\n// Loading state\nexport const isLoadingAudioAtom = atom<boolean>({\n  key: \"audioPlayer_isLoading\",\n  default: false,\n})\n\n// Playback progress (0-100)\nexport const playbackProgressAtom = atom<number>({\n  key: \"audioPlayer_playbackProgress\",\n  default: 0,\n})\n\nexport function useAudioPlayer() {\n  const [activeMessageId, setActiveMessageId] = useRecoilState(activeMessageIdAtom)\n  const [audioInstance, setAudioInstance] = useRecoilState(audioInstanceAtom)\n  const [isPlaying, setIsPlaying] = useRecoilState(isPlayingAtom)\n  const [isLoadingAudio, setIsLoadingAudio] = useRecoilState(isLoadingAudioAtom)\n  const setPlaybackProgress = useSetRecoilState(playbackProgressAtom)\n\n  // Clean up audio resources\n  const cleanupAudio = useCallback(() => {\n    if (progressAnimationId !== null) {\n      cancelAnimationFrame(progressAnimationId)\n      progressAnimationId = null\n    }\n\n    if (audioInstance) {\n      audioInstance.unload()\n      setAudioInstance(null)\n    }\n\n    setIsPlaying(false)\n    setPlaybackProgress(0)\n  }, [audioInstance, setAudioInstance, setIsPlaying, setPlaybackProgress])\n\n  // Update playback progress\n  const updateProgress = useCallback(\n    (sound: Howl) => {\n      if (!sound.playing()) {\n        return\n      }\n\n      const seek = sound.seek() as number\n      const duration = sound.duration()\n      const progress = duration > 0 ? (seek / duration) * 100 : 0\n\n      setPlaybackProgress(progress)\n\n      progressAnimationId = requestAnimationFrame(() => updateProgress(sound))\n    },\n    [setPlaybackProgress],\n  )\n\n  // Play audio from URL\n  const playAudio = useCallback(\n    (messageId: string, audioUrl: string) => {\n      // Stop current audio if playing\n      if (audioInstance) {\n        cleanupAudio()\n      }\n\n      setActiveMessageId(messageId)\n      setIsLoadingAudio(true)\n\n      const sound = new Howl({\n        src: [audioUrl],\n        html5: true,\n        onload: () => {\n          // Check if this is still the active message\n          setIsLoadingAudio(false)\n          sound.play()\n          setIsPlaying(true)\n          updateProgress(sound)\n        },\n        onplay: () => {\n          setIsPlaying(true)\n          updateProgress(sound)\n        },\n        onpause: () => {\n          setIsPlaying(false)\n          if (progressAnimationId !== null) {\n            cancelAnimationFrame(progressAnimationId)\n            progressAnimationId = null\n          }\n        },\n        onend: () => {\n          cleanupAudio()\n          setActiveMessageId(null)\n        },\n        onstop: () => {\n          cleanupAudio()\n        },\n        onloaderror: (_id, error) => {\n          console.error(\"[v0] Audio load error:\", error)\n          setIsLoadingAudio(false)\n          cleanupAudio()\n          setActiveMessageId(null)\n        },\n        onplayerror: (_id, error) => {\n          console.error(\"[v0] Audio play error:\", error)\n          cleanupAudio()\n          setActiveMessageId(null)\n        },\n      })\n\n      setAudioInstance(sound)\n    },\n    [\n      audioInstance,\n      cleanupAudio,\n      setActiveMessageId,\n      setIsLoadingAudio,\n      setAudioInstance,\n      setIsPlaying,\n      updateProgress,\n    ],\n  )\n\n  // Pause current audio\n  const pauseAudio = useCallback(() => {\n    if (audioInstance && isPlaying) {\n      audioInstance.pause()\n      setIsPlaying(false)\n    }\n  }, [audioInstance, isPlaying, setIsPlaying])\n\n  // Resume current audio\n  const resumeAudio = useCallback(() => {\n    if (audioInstance && !isPlaying) {\n      audioInstance.play()\n      setIsPlaying(true)\n    }\n  }, [audioInstance, isPlaying, setIsPlaying])\n\n  // Stop and cleanup\n  const stopAudio = useCallback(() => {\n    if (audioInstance) {\n      audioInstance.stop()\n    }\n    cleanupAudio()\n    setActiveMessageId(null)\n  }, [audioInstance, cleanupAudio, setActiveMessageId])\n\n  return {\n    activeMessageId,\n    isPlaying,\n    isLoadingAudio,\n    playAudio,\n    pauseAudio,\n    resumeAudio,\n    stopAudio,\n    setIsLoadingAudio,\n    setActiveMessageId\n  }\n}\n\n// Hook to get progress for a specific message\nexport function useAudioProgress(messageId: string) {\n  const activeMessageId = useRecoilValue(activeMessageIdAtom)\n  const progress = useRecoilValue(playbackProgressAtom)\n\n  return activeMessageId === messageId ? progress : 0\n}\n\n\n/**\n * Interrupt audio playback\n * Control the atomic state and hook for interrupting audio playback\n */\nexport const interruptAudioAtom = atom<boolean>({\n  key: \"audioPlayer_interruptAudio\",\n  default: false,\n})\nexport function useInterruptAudio() {\n  const setInterruptAudio = useSetRecoilState(interruptAudioAtom)\n\n  const interruptAudio = useCallback(() => {\n    setInterruptAudio(true)\n    window.interruptAudio = true\n\n    setTimeout(() => {\n      setInterruptAudio(false)\n      delete window.interruptAudio\n    }, 500)\n  }, [setInterruptAudio])\n\n  return interruptAudio\n}\n\n/**\n * 录音loading\n * Atomic state and hook for recording audio loading state\n * */\nexport const recordingAudioLoadingAtom = atom<boolean>({\n  key: \"audioPlayer_recordingAudioLoading\",\n  default: false,\n})\n\nexport function useRecordingAudioLoading() {\n  const [isLoading, setIsLoading] = useRecoilState(recordingAudioLoadingAtom)\n  return [isLoading, setIsLoading] as const\n}"
  },
  {
    "path": "src/frontend/client/src/components/WebView.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useParams, useSearchParams } from \"react-router-dom\";\n\nexport default function WebView() {\n    const [searchParams] = useSearchParams();\n    const url = searchParams.get('url');\n\n    const [content, setContent] = useState('');\n\n    useEffect(() => {\n        const baseUrl = `${__APP_ENV__.BASE_URL}${decodeURIComponent(url || '')}`\n        const fetchTextFile = async () => {\n            try {\n                const response = await fetch(baseUrl);\n\n                if (!response.ok) {\n                    throw new Error(`Failed to fetch file: ${response.status} ${response.statusText}`);\n                }\n\n                const text = await response.text();\n                setContent(text);\n            } catch (err) {\n                setContent('');\n            }\n        };\n\n        fetchTextFile();\n    }, [url]);\n\n    return <iframe srcDoc={content} sandbox=\"allow-scripts\" width=\"100%\" height=\"100%\" style={{ border: \"none\" }}></iframe>;\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/index.ts",
    "content": "export * from './ui';\nexport * from './Plugins';\nexport * from './svg';\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AnthropicIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function AnthropicIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      viewBox=\"0 0 24 16\"\n      overflow=\"visible\"\n      width={size}\n      height={size}\n      className={cn('fill-current text-black', className)}\n    >\n      <g\n        style={{\n          transform: 'translateX(13px) rotateZ(0deg)',\n          transformOrigin: '4.775px 7.73501px',\n        }}\n      >\n        <path\n          shapeRendering=\"geometricPrecision\"\n          // fill=\"rgb(24,24,24)\"\n          fillOpacity=\"1\"\n          d=\" M0,0 C0,0 6.1677093505859375,15.470022201538086 6.1677093505859375,15.470022201538086 C6.1677093505859375,15.470022201538086 9.550004005432129,15.470022201538086 9.550004005432129,15.470022201538086 C9.550004005432129,15.470022201538086 3.382294178009033,0 3.382294178009033,0 C3.382294178009033,0 0,0 0,0 C0,0 0,0 0,0z\"\n        ></path>\n      </g>\n      <g\n        style={{\n          transform: 'none',\n          transformOrigin: '7.935px 7.73501px',\n        }}\n        opacity=\"1\"\n      >\n        <path\n          shapeRendering=\"geometricPrecision\"\n          // fill=\"rgb(24,24,24)\"\n          fillOpacity=\"1\"\n          d=\" M5.824605464935303,9.348296165466309 C5.824605464935303,9.348296165466309 7.93500280380249,3.911694288253784 7.93500280380249,3.911694288253784 C7.93500280380249,3.911694288253784 10.045400619506836,9.348296165466309 10.045400619506836,9.348296165466309 C10.045400619506836,9.348296165466309 5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309 C5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309z M6.166755199432373,0 C6.166755199432373,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.4480772018432617,15.470022201538086 3.4480772018432617,15.470022201538086 C3.4480772018432617,15.470022201538086 4.709278583526611,12.22130012512207 4.709278583526611,12.22130012512207 C4.709278583526611,12.22130012512207 11.16093635559082,12.22130012512207 11.16093635559082,12.22130012512207 C11.16093635559082,12.22130012512207 12.421928405761719,15.470022201538086 12.421928405761719,15.470022201538086 C12.421928405761719,15.470022201538086 15.87000560760498,15.470022201538086 15.87000560760498,15.470022201538086 C15.87000560760498,15.470022201538086 9.703250885009766,0 9.703250885009766,0 C9.703250885009766,0 6.166755199432373,0 6.166755199432373,0 C6.166755199432373,0 6.166755199432373,0 6.166755199432373,0z\"\n        ></path>\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AnthropicMinimalIcon.tsx",
    "content": "import React from 'react';\n\nexport default function AzureMinimalistIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"1\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"m17.304 3.5472h-3.6718l6.6959 16.906h3.6718zm-10.608 0-6.6959 16.906h3.7442l1.3693-3.5502h7.0052l1.3693 3.5502h3.7442l-6.6959-16.906zm-0.37114 10.216 2.2914-5.9413 2.2914 5.9413z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AppleIcon.tsx",
    "content": "import React from 'react';\n\nexport default function AppleIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlSpace=\"preserve\"\n      viewBox=\"0 0 814 1000\"\n      id=\"apple\"\n      className=\"h-6 w-6\"\n    >\n      <path\n        d=\"M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76.5 0-103.7 40.8-165.9 40.8s-105.6-57-155.5-127C46.7 790.7 0 663 0 541.8c0-194.4 126.4-297.5 250.8-297.5 66.1 0 121.2 43.4 162.7 43.4 39.5 0 101.1-46 176.3-46 28.5 0 130.9 2.6 198.3 99.2zm-234-181.5c31.1-36.9 53.1-88.1 53.1-139.3 0-7.1-.6-14.3-1.9-20.1-50.6 1.9-110.8 33.7-147.1 75.8-28.5 32.4-55.1 83.6-55.1 135.5 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 45.4 0 102.5-30.4 135.5-71.3z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}"
  },
  {
    "path": "src/frontend/client/src/components/svg/ArchiveIcon.tsx",
    "content": "export default function ArchiveIcon({ className = 'icon-md' }) {\n  return (\n    <svg\n      width=\"18\"\n      height=\"18\"\n      viewBox=\"0 0 18 18\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={className}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M3.62188 3.07918C3.87597 2.571 4.39537 2.25 4.96353 2.25H13.0365C13.6046 2.25 14.124 2.571 14.3781 3.07918L15.75 5.82295V13.5C15.75 14.7426 14.7426 15.75 13.5 15.75H4.5C3.25736 15.75 2.25 14.7426 2.25 13.5V5.82295L3.62188 3.07918ZM13.0365 3.75H4.96353L4.21353 5.25H13.7865L13.0365 3.75ZM14.25 6.75H3.75V13.5C3.75 13.9142 4.08579 14.25 4.5 14.25H13.5C13.9142 14.25 14.25 13.9142 14.25 13.5V6.75ZM6.75 9C6.75 8.58579 7.08579 8.25 7.5 8.25H10.5C10.9142 8.25 11.25 8.58579 11.25 9C11.25 9.41421 10.9142 9.75 10.5 9.75H7.5C7.08579 9.75 6.75 9.41421 6.75 9Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AssistantIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function AssistantIcon({\n  className = '',\n  size = '1em',\n}: {\n  className?: string;\n  size?: string | number;\n}) {\n  const unit = 24;\n  const height = size;\n  const width = size;\n  return (\n    <svg\n      width={width}\n      height={height}\n      viewBox={`0 0 ${unit} ${unit}`}\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('text-token-secondary h-2/3 w-2/3', className)}\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\" />\n      <polyline points=\"3.27 6.96 12 12.01 20.73 6.96\" />\n      <line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AttachmentIcon.tsx",
    "content": "export default function AttachmentIcon({ className = '' }) {\n  return (\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={className}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M9 7C9 4.23858 11.2386 2 14 2C16.7614 2 19 4.23858 19 7V15C19 18.866 15.866 22 12 22C8.13401 22 5 18.866 5 15V9C5 8.44772 5.44772 8 6 8C6.55228 8 7 8.44772 7 9V15C7 17.7614 9.23858 20 12 20C14.7614 20 17 17.7614 17 15V7C17 5.34315 15.6569 4 14 4C12.3431 4 11 5.34315 11 7V15C11 15.5523 11.4477 16 12 16C12.5523 16 13 15.5523 13 15V9C13 8.44772 13.4477 8 14 8C14.5523 8 15 8.44772 15 9V15C15 16.6569 13.6569 18 12 18C10.3431 18 9 16.6569 9 15V7Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/AzureMinimalIcon.tsx",
    "content": "\nimport { cn } from '~/utils/';\n\nexport default function AzureMinimalIcon({\n  size = 25,\n  className = 'h-4 w-4',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  const height = size;\n  const width = size;\n\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className, '')}\n      width={width}\n      height={height}\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"m8.0458 0.81981a1.1197 1.1197 0 0 0-1.0608 0.76184l-6.7912 20.123a1.1178 1.1178 0 0 0 1.0592 1.4751h5.4647a1.1197 1.1197 0 0 0 1.0608-0.7615l1.3528-4.0084-2.3684-2.2107a0.51536 0.51536 0 0 1 0.35193-0.8923h3.0639l1.8213-5.3966-2.8111-8.3294a1.1181 1.1181 0 0 0-1.0595-0.76049h-0.0836z\" />\n      <path d=\"m7.1147 15.307a0.51536 0.51536 0 0 0-0.35193 0.8923l7.1552 6.6782a1.1248 1.1248 0 0 0 0.76724 0.30238h0.2417a1.1181 1.1181 0 0 0 1.0534-1.4755l-2.1591-6.3974z\" />\n      <path d=\"m17.015 1.5807a1.1178 1.1178 0 0 0-1.0593-0.76049h-7.8258a1.1181 1.1181 0 0 1 1.0593 0.76049l6.7916 20.123a1.1181 1.1181 0 0 1-1.0593 1.4757h7.8261a1.1181 1.1181 0 0 0 1.059-1.4757z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/BedrockIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function BedrockIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={cn('fill-current text-black', className)}\n    >\n      <g fill=\"currentColor\">\n        <path d=\"M12,18.1397014 L9.574,18.9487014 L8.628,18.3177014 L9.658,17.9737014 L9.342,17.0257014 L7.574,17.6147014 L7,17.2327014 L7,14.4997014 C7,14.3107014 6.893,14.1377014 6.724,14.0527014 L5,13.1907014 L5,10.8087014 L6.5,10.0587014 L8,10.8087014 L8,12.4997014 C8,12.6897014 8.107,12.8627014 8.276,12.9477014 L10.276,13.9477014 L10.724,13.0527014 L9,12.1907014 L9,10.8087014 L10.724,9.94770136 C10.893,9.86270136 11,9.68970136 11,9.49970136 L11,7.99970136 L10,7.99970136 L10,9.19070136 L8.5,9.94070136 L7,9.19070136 L7,6.76770136 L8,6.10070136 L8,7.99970136 L9,7.99970136 L9,5.43470136 L9.574,5.05170136 L12,5.86070136 L12,18.1397014 Z M17.5,16.9997014 C17.775,16.9997014 18,17.2237014 18,17.4997014 C18,17.7757014 17.775,17.9997014 17.5,17.9997014 C17.225,17.9997014 17,17.7757014 17,17.4997014 C17,17.2237014 17.225,16.9997014 17.5,16.9997014 L17.5,16.9997014 Z M16.5,5.99970136 C16.775,5.99970136 17,6.22370136 17,6.49970136 C17,6.77570136 16.775,6.99970136 16.5,6.99970136 C16.225,6.99970136 16,6.77570136 16,6.49970136 C16,6.22370136 16.225,5.99970136 16.5,5.99970136 L16.5,5.99970136 Z M18.5,11.9997014 C18.775,11.9997014 19,12.2237014 19,12.4997014 C19,12.7757014 18.775,12.9997014 18.5,12.9997014 C18.225,12.9997014 18,12.7757014 18,12.4997014 C18,12.2237014 18.225,11.9997014 18.5,11.9997014 L18.5,11.9997014 Z M17.092,12.9997014 C17.299,13.5807014 17.849,13.9997014 18.5,13.9997014 C19.327,13.9997014 20,13.3277014 20,12.4997014 C20,11.6727014 19.327,10.9997014 18.5,10.9997014 C17.849,10.9997014 17.299,11.4197014 17.092,11.9997014 L13,11.9997014 L13,9.99970136 L16.5,9.99970136 C16.776,9.99970136 17,9.77670136 17,9.49970136 L17,7.90770136 C17.581,7.70070136 18,7.15070136 18,6.49970136 C18,5.67270136 17.327,4.99970136 16.5,4.99970136 C15.673,4.99970136 15,5.67270136 15,6.49970136 C15,7.15070136 15.419,7.70070136 16,7.90770136 L16,8.99970136 L13,8.99970136 L13,5.49970136 C13,5.28470136 12.862,5.09370136 12.658,5.02570136 L9.658,4.02570136 C9.511,3.97670136 9.351,3.99870136 9.223,4.08370136 L6.223,6.08370136 C6.084,6.17670136 6,6.33270136 6,6.49970136 L6,9.19070136 L4.276,10.0527014 C4.107,10.1377014 4,10.3107014 4,10.4997014 L4,13.4997014 C4,13.6897014 4.107,13.8627014 4.276,13.9477014 L6,14.8087014 L6,17.4997014 C6,17.6667014 6.084,17.8237014 6.223,17.9157014 L9.223,19.9157014 C9.306,19.9717014 9.402,19.9997014 9.5,19.9997014 C9.553,19.9997014 9.606,19.9917014 9.658,19.9737014 L12.658,18.9737014 C12.862,18.9067014 13,18.7157014 13,18.4997014 L13,15.9997014 L15.293,15.9997014 L16.146,16.8537014 L16.159,16.8407014 C16.061,17.0407014 16,17.2627014 16,17.4997014 C16,18.3267014 16.673,18.9997014 17.5,18.9997014 C18.327,18.9997014 19,18.3267014 19,17.4997014 C19,16.6727014 18.327,15.9997014 17.5,15.9997014 C17.262,15.9997014 17.04,16.0607014 16.841,16.1597014 L16.854,16.1467014 L15.854,15.1467014 C15.76,15.0527014 15.633,14.9997014 15.5,14.9997014 L13,14.9997014 L13,12.9997014 L17.092,12.9997014 Z\" />\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/BirthdayIcon.tsx",
    "content": "import React from 'react';\nimport { cn } from '~/utils/';\n\nexport default function BirthdayIcon({ className = '' }) {\n  return (\n    <svg\n      version=\"1.1\"\n      viewBox=\"0 0 233.33 290\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      className={cn('h-11 w-11', className)}\n    >\n      <defs>\n        <linearGradient\n          id=\"linearGradient1842\"\n          x1=\"163.92\"\n          x2=\"173.66\"\n          y1=\"22.212\"\n          y2=\"-6.5784\"\n          gradientTransform=\"translate(.10391 .050143)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#640a62\" offset=\"0\" />\n          <stop stopColor=\"#852283\" offset=\".49917\" />\n          <stop stopColor=\"#640a62\" offset=\"1\" />\n        </linearGradient>\n      </defs>\n      <g>\n        <path\n          transform=\"matrix(.43416 .90084 -.89966 .4366 0 0)\"\n          d=\"m259.29-126.03a232.2 237.56 0 0 1-17.412 231.34l-193.32-131.59z\"\n          fill=\"url(#linearGradient1842)\"\n        />\n        <path\n          transform=\"matrix(.6967 .051926 -.051926 .6967 35.578 23.196)\"\n          d=\"m50.818 31.415c-1.4654 2.4749-10.838 2.4195-12.997 4.3204-2.1584 1.9009-3.288 11.206-5.9282 12.347-2.6402 1.1409-10.191-4.4132-13.054-4.1441-2.8636 0.26917-9.2466 7.133-12.053 6.5041-2.8066-0.62889-5.6503-9.5602-8.1252-11.026-2.4749-1.4654-11.673 0.33572-13.574-1.8227s1.0482-11.056-0.0927-13.696c-1.1409-2.6402-9.6412-6.5898-9.9104-9.4533-0.26917-2.8636 7.3463-8.328 7.9752-11.135 0.62889-2.8066-3.9265-10.998-2.4612-13.473 1.4654-2.4749 10.838-2.4195 12.997-4.3204 2.1584-1.9009 3.288-11.206 5.9282-12.347 2.6402-1.1409 10.191 4.4132 13.054 4.1441 2.8636-0.26917 9.2466-7.133 12.053-6.5041 2.8066 0.62889 5.6503 9.5602 8.1252 11.026s11.673-0.33572 13.574 1.8227c1.9009 2.1584-1.0482 11.056 0.0927 13.696 1.1409 2.6402 9.6412 6.5898 9.9104 9.4533 0.26917 2.8635-7.3463 8.328-7.9752 11.135-0.62889 2.8066 3.9265 10.998 2.4612 13.473z\"\n          fill=\"#ff9d78\"\n          stroke=\"#f29472\"\n          strokeWidth=\"4.7877\"\n        />\n        <circle cx=\"170.36\" cy=\"215.76\" r=\"12.903\" fill=\"#cfffff\" />\n        <path\n          d=\"m220.77 174.77c-88.526 101.03-191.21 85.731-209.5 82.142-2.2101-2e-5 -2.6686 0.42426-3.437 2.0021l-1.7042 7.5028c0.056197 2.3603 0.37544 2.6428 1.9121 3.5409 18.396 3.3746 130.27 19.488 223.46-86.881 0.64011-1.5095 0.46653-3.1324-0.59137-4.7337l-5.1558-3.6482c-1.586-0.8743-3.9524-0.94332-4.9837 0.0751z\"\n          color=\"#000000\"\n          fill=\"#ff9d78\"\n          stroke=\"#f29472\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2.8913\"\n        />\n        <g fill=\"#cfffff\">\n          <circle cx=\"72.684\" cy=\"99.47\" r=\"12.903\" />\n          <circle cx=\"99.144\" cy=\"172.32\" r=\"12.903\" />\n          <circle cx=\"59.617\" cy=\"214.78\" r=\"12.903\" />\n          <circle cx=\"135.4\" cy=\"118.42\" r=\"12.903\" />\n          <path\n            transform=\"rotate(38.66)\"\n            d=\"m254.21-1.9608a12.903 12.903 0 0 1-6.4852 11.194 12.903 12.903 0 0 1-12.937-0.0582 12.903 12.903 0 0 1-6.3843-11.252l12.903 0.1161z\"\n          />\n          <path d=\"m29.476 158.16a12.903 12.903 0 0 0-3.6562 0.5293l-3.3691 23.189a12.903 12.903 0 0 0 7.0254 2.0879 12.903 12.903 0 0 0 12.904-12.904 12.903 12.903 0 0 0-12.904-12.902z\" />\n        </g>\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Blocks.tsx",
    "content": "import { cn } from '~/utils';\nexport default function Blocks({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={cn('lucide lucide-blocks', className)}\n    >\n      <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\" />\n      <path d=\"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CautionIcon.tsx",
    "content": "import React from 'react';\n\nexport default function CautionIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"1.5\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-6 w-6\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n      <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n      <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ChatGPTMinimalIcon.tsx",
    "content": "import React from 'react';\n\nexport default function ChatGPTMinimalIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      className=\"lucide lucide-bot\"\n    >\n      <rect width=\"18\" height=\"10\" x=\"3\" y=\"11\" rx=\"2\" />\n      <circle cx=\"12\" cy=\"5\" r=\"2\" />\n      <path d=\"M12 7v4\" />\n      <line x1=\"8\" x2=\"8\" y1=\"16\" y2=\"16\" />\n      <line x1=\"16\" x2=\"16\" y1=\"16\" y2=\"16\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ChatIcon.tsx",
    "content": "import React from 'react';\n\nexport default function ChatIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"1.5\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"m-auto h-6 w-6\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CheckMark.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function CheckMark({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('h-4 w-4', className)}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M18.0633 5.67375C18.5196 5.98487 18.6374 6.607 18.3262 7.06331L10.8262 18.0633C10.6585 18.3093 10.3898 18.4678 10.0934 18.4956C9.79688 18.5234 9.50345 18.4176 9.29289 18.2071L4.79289 13.7071C4.40237 13.3166 4.40237 12.6834 4.79289 12.2929C5.18342 11.9023 5.81658 11.9023 6.20711 12.2929L9.85368 15.9394L16.6738 5.93664C16.9849 5.48033 17.607 5.36263 18.0633 5.67375Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CircleHelpIcon.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function CircleHelpIcon({ className = 'icon-md-heavy', size = '1em' }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      height={size}\n      width={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className)}\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n      <path d=\"M12 17h.01\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Clipboard.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function Clipboard({ className = 'icon-md-heavy', size = '1em' }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      height={size}\n      width={size}\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className)}\n    >\n      <path\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n        d=\"M7 5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-2v2a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3v-9a3 3 0 0 1 3-3h2zm2 2h5a3 3 0 0 1 3 3v5h2a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1zM5 9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-9a1 1 0 0 0-1-1z\"\n        clipRule=\"evenodd\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CodeyIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function CodeyIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      // width=\"100%\"\n      // height=\"100%\"\n      width={size}\n      height={size}\n      className={cn('dark:fill-white', className)}\n      viewBox=\"0 0 18 18\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      focusable=\"false\"\n    >\n      <path\n        d=\"M2 4.006C2 2.898 2.897 2 4.006 2h9.988C15.102 2 16 2.897 16 4.006v9.988A2.005 2.005 0 0 1 13.994 16H4.006A2.005 2.005 0 0 1 2 13.994V4.006zM13.992 9l.003-.003L10.997 6 9.75 7.247 11.503 9 9.75 10.753 10.997 12l2.997-2.997L13.992 9zm-9.99 0L4 8.997 6.997 6l1.247 1.247L6.492 9l1.753 1.753L6.997 12 4 9.003 4.003 9z\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ContinueIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function ContinueIcon({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('h-3 w-3 -rotate-180', className)}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <polygon points=\"11 19 2 12 11 5 11 19\" />\n      <polygon points=\"22 19 13 12 22 5 22 19\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ConvoIcon.tsx",
    "content": "import React from 'react';\n\nexport default function ConvoIcon() {\n  return (\n    <svg\n      data-testid=\"convo-icon\"\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CrossIcon.tsx",
    "content": "import React from 'react';\nimport { cn } from '~/utils/';\n\nexport default function CrossIcon({ className = '' }) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className, 'h-4 w-4')}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n      <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/CustomMinimalIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function CustomMinimalIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('lucide lucide-bot', className)}\n    >\n      <path d=\"M12 8V4H8\" />\n      <rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\" />\n      <path d=\"M2 14h2\" />\n      <path d=\"M20 14h2\" />\n      <path d=\"M15 13v2\" />\n      <path d=\"M9 13v2\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DarkModeIcon.tsx",
    "content": "import React from 'react';\n\nexport default function DarkModeIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DataIcon.tsx",
    "content": "export default function DataIcon({ className = 'icon-sm' }: { className?: string }) {\n  return (\n    <svg\n      width=\"18\"\n      height=\"18\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={className}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M6.00633 5.5C6.02321 5.53319 6.07042 5.60366 6.19525 5.70906C6.42458 5.9027 6.81573 6.12215 7.38659 6.32603C8.5196 6.73067 10.1506 7 12 7C13.8494 7 15.4804 6.73067 16.6134 6.32603C17.1843 6.12215 17.5754 5.9027 17.8048 5.70906C17.9296 5.60366 17.9768 5.53319 17.9937 5.5C17.9768 5.46681 17.9296 5.39634 17.8048 5.29094C17.5754 5.0973 17.1843 4.87785 16.6134 4.67397C15.4804 4.26933 13.8494 4 12 4C10.1506 4 8.5196 4.26933 7.38659 4.67397C6.81573 4.87785 6.42458 5.0973 6.19525 5.29094C6.07042 5.39634 6.02321 5.46681 6.00633 5.5ZM18 7.91726C17.7726 8.02403 17.5333 8.12123 17.2861 8.20951C15.8856 8.70968 14.0166 9 12 9C9.98341 9 8.1144 8.70968 6.71392 8.20951C6.46674 8.12123 6.22738 8.02403 6 7.91726V11.9866C6.00813 12.0073 6.03931 12.0661 6.14259 12.1624C6.31976 12.3277 6.63181 12.5252 7.10609 12.7189C8.04837 13.1039 9.43027 13.3932 11.051 13.476C11.6026 13.5042 12.0269 13.9741 11.9987 14.5257C11.9705 15.0773 11.5005 15.5016 10.949 15.4734C9.17744 15.3829 7.55934 15.0646 6.34969 14.5704C6.23097 14.5219 6.11419 14.4709 6 14.4173V18.4866C6.00813 18.5073 6.03931 18.5661 6.14259 18.6624C6.31976 18.8277 6.63181 19.0252 7.10609 19.2189C8.04837 19.6039 9.43027 19.8932 11.051 19.976C11.6026 20.0042 12.0269 20.4741 11.9987 21.0257C11.9705 21.5773 11.5005 22.0016 10.949 21.9734C9.17744 21.8829 7.55934 21.5646 6.34969 21.0704C5.74801 20.8246 5.19611 20.5146 4.77833 20.1249C4.35948 19.7341 4 19.1866 4 18.5V5.5C4 4.74631 4.43048 4.16346 4.90494 3.76283C5.38405 3.35829 6.01803 3.03902 6.71392 2.79049C8.1144 2.29032 9.98341 2 12 2C14.0166 2 15.8856 2.29032 17.2861 2.79049C17.982 3.03902 18.616 3.35829 19.0951 3.76283C19.5695 4.16346 20 4.74631 20 5.5V10C20 10.5523 19.5523 11 19 11C18.4477 11 18 10.5523 18 10V7.91726ZM17.5 13C18.0523 13 18.5 13.4477 18.5 14V14.6707C18.851 14.7948 19.172 14.9823 19.4492 15.2195L20.0308 14.8837C20.5091 14.6075 21.1207 14.7714 21.3968 15.2497C21.673 15.728 21.5091 16.3396 21.0308 16.6157L20.4499 16.9511C20.4828 17.1291 20.5 17.3125 20.5 17.5C20.5 17.6873 20.4828 17.8707 20.45 18.0485L21.0308 18.3838C21.5091 18.6599 21.6729 19.2715 21.3968 19.7498C21.1206 20.2281 20.5091 20.392 20.0308 20.1158L19.4495 19.7803C19.1722 20.0176 18.8511 20.2052 18.5 20.3293V21C18.5 21.5523 18.0523 22 17.5 22C16.9477 22 16.5 21.5523 16.5 21V20.3293C16.1489 20.2052 15.8277 20.0176 15.5504 19.7802L14.969 20.1159C14.4907 20.392 13.8791 20.2282 13.603 19.7499C13.3269 19.2716 13.4907 18.66 13.969 18.3839L14.55 18.0484C14.5172 17.8706 14.5 17.6873 14.5 17.5C14.5 17.3127 14.5172 17.1294 14.55 16.9515L13.9691 16.6161C13.4908 16.34 13.3269 15.7284 13.6031 15.2501C13.8792 14.7718 14.4908 14.608 14.9691 14.8841L15.5504 15.2197C15.8278 14.9824 16.1489 14.7948 16.5 14.6707V14C16.5 13.4477 16.9477 13 17.5 13ZM16.624 17.0174C16.6274 17.0117 16.6308 17.0059 16.6342 17.0001C16.6374 16.9946 16.6405 16.989 16.6436 16.9834C16.8187 16.6937 17.1367 16.5 17.5 16.5C17.8645 16.5 18.1835 16.6951 18.3583 16.9865C18.3607 16.9909 18.3632 16.9953 18.3658 16.9997C18.3685 17.0044 18.3713 17.0091 18.3741 17.0138C18.4543 17.1577 18.5 17.3235 18.5 17.5C18.5 17.6737 18.4557 17.8371 18.3778 17.9794C18.3737 17.9861 18.3697 17.9929 18.3657 17.9998C18.3619 18.0064 18.3581 18.0131 18.3545 18.0198C18.1789 18.3077 17.8619 18.5 17.5 18.5C17.1362 18.5 16.8178 18.3058 16.6428 18.0154C16.64 18.0102 16.6371 18.005 16.6341 17.9999C16.631 17.9945 16.6278 17.9891 16.6246 17.9838C16.5452 17.8404 16.5 17.6755 16.5 17.5C16.5 17.325 16.545 17.1605 16.624 17.0174Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DiscordIcon.tsx",
    "content": "import React from 'react';\n\nexport default function DiscordIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 1024 1024\"\n      id=\"discord\"\n      className=\"h-6 w-6\"\n    >\n      <circle cx=\"512\" cy=\"512\" r=\"512\" fill=\"#5865f2\" />\n      <path\n        fill=\"#fff\"\n        d=\"M689.43 349a422.21 422.21 0 0 0-104.22-32.32 1.58 1.58 0 0 0-1.68.79 294.11 294.11 0 0 0-13 26.66 389.78 389.78 0 0 0-117.05 0 269.75 269.75 0 0 0-13.18-26.66 1.64 1.64 0 0 0-1.68-.79A421 421 0 0 0 334.44 349a1.49 1.49 0 0 0-.69.59c-66.37 99.17-84.55 195.9-75.63 291.41a1.76 1.76 0 0 0 .67 1.2 424.58 424.58 0 0 0 127.85 64.63 1.66 1.66 0 0 0 1.8-.59 303.45 303.45 0 0 0 26.15-42.54 1.62 1.62 0 0 0-.89-2.25 279.6 279.6 0 0 1-39.94-19 1.64 1.64 0 0 1-.16-2.72c2.68-2 5.37-4.1 7.93-6.22a1.58 1.58 0 0 1 1.65-.22c83.79 38.26 174.51 38.26 257.31 0a1.58 1.58 0 0 1 1.68.2c2.56 2.11 5.25 4.23 8 6.24a1.64 1.64 0 0 1-.14 2.72 262.37 262.37 0 0 1-40 19 1.63 1.63 0 0 0-.87 2.28 340.72 340.72 0 0 0 26.13 42.52 1.62 1.62 0 0 0 1.8.61 423.17 423.17 0 0 0 128-64.63 1.64 1.64 0 0 0 .67-1.18c10.68-110.44-17.88-206.38-75.7-291.42a1.3 1.3 0 0 0-.63-.63zM427.09 582.85c-25.23 0-46-23.16-46-51.6s20.38-51.6 46-51.6c25.83 0 46.42 23.36 46 51.6.02 28.44-20.37 51.6-46 51.6zm170.13 0c-25.23 0-46-23.16-46-51.6s20.38-51.6 46-51.6c25.83 0 46.42 23.36 46 51.6.01 28.44-20.17 51.6-46 51.6z\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DislikeIcon.tsx",
    "content": "import React from 'react';\n\nexport default function DislikeIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DotsIcon.tsx",
    "content": "import React from 'react';\n\nexport default function DotsIcon({\n  className = 'h-4 w-4 flex-shrink-0 text-gray-500',\n}: {\n  className?: string;\n}) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={className}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"19\" cy=\"12\" r=\"1\" />\n      <circle cx=\"5\" cy=\"12\" r=\"1\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/DownIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function DownIcon({ className = '', ...props }) {\n    return (\n        <svg t=\"1753723248175\" className={className} {...props} viewBox=\"0 0 1394 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5047\" width=\"48\" height=\"48\"><path d=\"M808.665066 968.123525a139.174837 139.174837 0 0 1-222.989114 0L28.061551 224.448838A140.525626 140.525626 0 0 1 0 140.133462C0 62.746326 62.484883 0 139.567002 0h1115.228801c30.283817 0 59.739731 9.891261 83.944998 28.192273 61.569833 46.558646 73.901229 134.425289 27.538666 196.256565L808.665066 968.123525z\" fill=\"#000000\" p-id=\"5048\"></path></svg>\n    );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/EditIcon.tsx",
    "content": "import React from 'react';\nimport { cn } from '~/utils';\n\ntype IconProps = {\n  className?: string;\n  size?: string;\n};\n\nconst EditIcon = React.forwardRef<SVGSVGElement, IconProps>((props: IconProps, ref) => {\n  const { className = 'icon-md', size = '1.2em' } = props;\n  return (\n    <svg\n      ref={ref}\n      fill=\"none\"\n      strokeWidth=\"2\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      height={size}\n      width={size}\n      className={cn(className)}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M13.2929 4.29291C15.0641 2.52167 17.9359 2.52167 19.7071 4.2929C21.4783 6.06414 21.4783 8.93588 19.7071 10.7071L18.7073 11.7069L11.1603 19.2539C10.7182 19.696 10.1489 19.989 9.53219 20.0918L4.1644 20.9864C3.84584 21.0395 3.52125 20.9355 3.29289 20.7071C3.06453 20.4788 2.96051 20.1542 3.0136 19.8356L3.90824 14.4678C4.01103 13.8511 4.30396 13.2818 4.7461 12.8397L13.2929 4.29291ZM13 7.41422L6.16031 14.2539C6.01293 14.4013 5.91529 14.591 5.88102 14.7966L5.21655 18.7835L9.20339 18.119C9.40898 18.0847 9.59872 17.9871 9.7461 17.8397L16.5858 11L13 7.41422ZM18 9.5858L14.4142 6.00001L14.7071 5.70712C15.6973 4.71693 17.3027 4.71693 18.2929 5.70712C19.2831 6.69731 19.2831 8.30272 18.2929 9.29291L18 9.5858Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n});\n\nexport default EditIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ExperimentIcon.tsx",
    "content": "export default function ExperimentIcon() {\n  return (\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"icon-sm\"\n    >\n      <path\n        d=\"M9 3H15M9 3V9.2759C9 9.74377 8.83597 10.1968 8.53644 10.5563L4.85085 14.979C4.30108 15.6387 4 16.4703 4 17.3291V17.3291C4 19.3565 5.64353 21 7.67094 21H16.3291C18.3565 21 20 19.3565 20 17.3291V17.3291C20 16.4703 19.6989 15.6387 19.1492 14.979L15.4636 10.5563C15.164 10.1968 15 9.74377 15 9.2759V3M9 3H8M15 3H16\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      ></path>\n      <path\n        d=\"M5 14.774C11.5 12.839 12.15 16.7089 18 14\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/FacebookIcon.tsx",
    "content": "import React from 'react';\n\nexport default function FacebookIcon() {\n  return (\n    <svg viewBox=\"0 0 40 40\" width=\"25\" height=\"25\">\n      <linearGradient\n        id=\"a\"\n        x1={-277.375}\n        x2={-277.375}\n        y1={406.602}\n        y2={407.573}\n        gradientTransform=\"matrix(40 0 0 -39.7778 11115.001 16212.334)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#0062e0\" />\n        <stop offset={1} stopColor=\"#19afff\" />\n      </linearGradient>\n      <path\n        fill=\"url(#a)\"\n        d=\"M16.7 39.8C7.2 38.1 0 29.9 0 20 0 9 9 0 20 0s20 9 20 20c0 9.9-7.2 18.1-16.7 19.8l-1.1-.9h-4.4l-1.1.9z\"\n      />\n      <path\n        fill=\"#fff\"\n        d=\"m27.8 25.6.9-5.6h-5.3v-3.9c0-1.6.6-2.8 3-2.8H29V8.2c-1.4-.2-3-.4-4.4-.4-4.6 0-7.8 2.8-7.8 7.8V20h-5v5.6h5v14.1c1.1.2 2.2.3 3.3.3 1.1 0 2.2-.1 3.3-.3V25.6h4.4z\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Files/CodePaths.tsx",
    "content": "export default function CodePaths() {\n  return (\n    <>\n      <path\n        d=\"M21.333 23L26.333 18L21.333 13\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M14.667 13L9.66699 18L14.667 23\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Files/FileIcon.tsx",
    "content": "import type { TFile } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\n\nexport default function FileIcon({\n  file,\n  fileType,\n}: {\n  file?: ExtendedFile | TFile;\n  fileType: {\n    fill: string;\n    paths: React.FC;\n    title: string;\n  };\n}) {\n\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 36 36\"\n      fill=\"none\"\n      className=\"h-10 w-10 flex-shrink-0\"\n      width=\"36\"\n      height=\"36\"\n    >\n      <rect width=\"36\" height=\"36\" rx=\"6\" fill={fileType.fill} />\n      {(file?.['progress'] ?? 1) >= 1 && <>{<fileType.paths />}</>}\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Files/FilePaths.tsx",
    "content": "export default function FilePaths() {\n  return (\n    <>\n      <path\n        d=\"M18.833 9.66663H12.9997C12.5576 9.66663 12.1337 9.84222 11.8212 10.1548C11.5086 10.4673 11.333 10.8913 11.333 11.3333V24.6666C11.333 25.1087 11.5086 25.5326 11.8212 25.8451C12.1337 26.1577 12.5576 26.3333 12.9997 26.3333H22.9997C23.4417 26.3333 23.8656 26.1577 24.1782 25.8451C24.4907 25.5326 24.6663 25.1087 24.6663 24.6666V15.5L18.833 9.66663Z\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M18.833 9.66663V15.5H24.6663\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Files/SheetPaths.tsx",
    "content": "export default function SheetPaths() {\n  return (\n    <>\n      <path\n        d=\"M15.5 10.5H12.1667C11.2462 10.5 10.5 11.2462 10.5 12.1667V13.5V18M15.5 10.5H23.8333C24.7538 10.5 25.5 11.2462 25.5 12.1667V13.5V18M15.5 10.5V25.5M15.5 25.5H18H23.8333C24.7538 25.5 25.5 24.7538 25.5 23.8333V18M15.5 25.5H12.1667C11.2462 25.5 10.5 24.7538 10.5 23.8333V18M10.5 18H25.5\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Files/TextPaths.tsx",
    "content": "export default function TextPaths() {\n  return (\n    <>\n      <path\n        d=\"M19.6663 9.66663H12.9997C12.5576 9.66663 12.1337 9.84222 11.8212 10.1548C11.5086 10.4673 11.333 10.8913 11.333 11.3333V24.6666C11.333 25.1087 11.5086 25.5326 11.8212 25.8451C12.1337 26.1577 12.5576 26.3333 12.9997 26.3333H22.9997C23.4417 26.3333 23.8656 26.1577 24.1782 25.8451C24.4907 25.5326 24.6663 25.1087 24.6663 24.6666V14.6666L19.6663 9.66663Z\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M19.667 9.66663V14.6666H24.667\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M21.3337 18.8334H14.667\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M21.3337 22.1666H14.667\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M16.3337 15.5H15.5003H14.667\"\n        stroke=\"white\"\n        strokeWidth=\"1.66667\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GPTIcon.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function GPTIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  const unit = '41';\n  const height = size;\n  const width = size;\n\n  return (\n    <svg\n      width={width}\n      height={height}\n      viewBox={`0 0 ${unit} ${unit}`}\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      strokeWidth=\"1.5\"\n      className={cn(className, '')}\n    >\n      <path\n        d=\"M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GearIcon.tsx",
    "content": "import React from 'react';\n\ninterface GearIconProps {\n  className?: string;\n}\n\nconst GearIcon: React.FC<GearIconProps> = ({ className = '' }) => {\n  return (\n    <svg\n      className={className}\n      width=\"17\"\n      height=\"16\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M11.6439 3C10.9352 3 10.2794 3.37508 9.92002 3.98596L9.49644 4.70605C8.96184 5.61487 7.98938 6.17632 6.93501 6.18489L6.09967 6.19168C5.39096 6.19744 4.73823 6.57783 4.38386 7.19161L4.02776 7.80841C3.67339 8.42219 3.67032 9.17767 4.01969 9.7943L4.43151 10.5212C4.95127 11.4386 4.95127 12.5615 4.43151 13.4788L4.01969 14.2057C3.67032 14.8224 3.67339 15.5778 4.02776 16.1916L4.38386 16.8084C4.73823 17.4222 5.39096 17.8026 6.09966 17.8083L6.93502 17.8151C7.98939 17.8237 8.96185 18.3851 9.49645 19.294L9.92002 20.014C10.2794 20.6249 10.9352 21 11.6439 21H12.3561C13.0648 21 13.7206 20.6249 14.08 20.014L14.5035 19.294C15.0381 18.3851 16.0106 17.8237 17.065 17.8151L17.9004 17.8083C18.6091 17.8026 19.2618 17.4222 19.6162 16.8084L19.9723 16.1916C20.3267 15.5778 20.3298 14.8224 19.9804 14.2057L19.5686 13.4788C19.0488 12.5615 19.0488 11.4386 19.5686 10.5212L19.9804 9.7943C20.3298 9.17767 20.3267 8.42219 19.9723 7.80841L19.6162 7.19161C19.2618 6.57783 18.6091 6.19744 17.9004 6.19168L17.065 6.18489C16.0106 6.17632 15.0382 5.61487 14.5036 4.70605L14.08 3.98596C13.7206 3.37508 13.0648 3 12.3561 3H11.6439Z\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinejoin=\"round\"\n      ></path>\n      <circle cx=\"12\" cy=\"12\" r=\"2.5\" stroke=\"currentColor\" strokeWidth=\"2\"></circle>\n    </svg>\n  );\n};\n\nexport default GearIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GeminiIcon.tsx",
    "content": "export default function GeminiIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      width={size}\n      height={size}\n      className={className}\n      viewBox=\"0 0 18 18\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      focusable=\"false\"\n    >\n      <path\n        fill=\"url(#_4rif_paint0_radial_897_42)\"\n        d=\"M9 18c0-1.245-.24-2.415-.72-3.51a8.934 8.934 0 00-1.912-2.857A8.934 8.934 0 003.51 9.72 8.646 8.646 0 000 9a8.886 8.886 0 003.51-.697 9.247 9.247 0 002.857-1.936A8.934 8.934 0 008.28 3.51C8.76 2.415 9 1.245 9 0c0 1.245.232 2.415.697 3.51a9.247 9.247 0 001.936 2.857 9.247 9.247 0 002.857 1.936A8.886 8.886 0 0018 9c-1.245 0-2.415.24-3.51.72a8.934 8.934 0 00-2.857 1.912 9.247 9.247 0 00-1.935 2.858A8.886 8.886 0 009 18z\"\n      />\n      <defs>\n        <radialGradient\n          id=\"_4rif_paint0_radial_897_42\"\n          cx=\"0\"\n          cy=\"0\"\n          r=\"1\"\n          gradientUnits=\"userSpaceOnUse\"\n          gradientTransform=\"rotate(135 9 3.728) scale(25.4558 12.7279)\"\n        >\n          <stop offset=\".325\" stopColor=\"#FFDDB7\"></stop>\n          <stop offset=\".706\" stopColor=\"#076EFF\"></stop>\n        </radialGradient>\n      </defs>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GithubIcon.tsx",
    "content": "import React from 'react';\n\nexport default function GithubIcon() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"25\" fill=\"none\">\n      <path\n        fill=\"currentColor\"\n        d=\"M12 0a12 12 0 0 0-3.84 23.399c.608.112.832-.256.832-.576v-2.015c-3.395.736-4.115-1.632-4.115-1.632a3.241 3.241 0 0 0-1.359-1.792c-1.104-.736.064-.736.064-.736a2.566 2.566 0 0 1 1.824 1.216a2.638 2.638 0 0 0 3.616 1.024a2.607 2.607 0 0 1 .768-1.6c-2.688-.32-5.504-1.344-5.504-5.984a4.677 4.677 0 0 1 1.216-3.168a4.383 4.383 0 0 1 .128-3.136s1.024-.32 3.36 1.216a11.66 11.66 0 0 1 6.112 0c2.336-1.536 3.36-1.216 3.36-1.216a4.354 4.354 0 0 1 .128 3.136a4.628 4.628 0 0 1 1.216 3.168c0 4.672-2.848 5.664-5.536 5.952a2.881 2.881 0 0 1 .832 2.24v3.36c0 .32.224.672.832.576A12 12 0 0 0 12 0z\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GoogleIcon.tsx",
    "content": "import React from 'react';\n\nexport default function GoogleIcon() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" id=\"google\" className=\"h-5 w-5\">\n      <path\n        fill=\"#fbbb00\"\n        d=\"M113.47 309.408 95.648 375.94l-65.139 1.378C11.042 341.211 0 299.9 0 256c0-42.451 10.324-82.483 28.624-117.732h.014L86.63 148.9l25.404 57.644c-5.317 15.501-8.215 32.141-8.215 49.456.002 18.792 3.406 36.797 9.651 53.408z\"\n      ></path>\n      <path\n        fill=\"#518ef8\"\n        d=\"M507.527 208.176C510.467 223.662 512 239.655 512 256c0 18.328-1.927 36.206-5.598 53.451-12.462 58.683-45.025 109.925-90.134 146.187l-.014-.014-73.044-3.727-10.338-64.535c29.932-17.554 53.324-45.025 65.646-77.911h-136.89V208.176h245.899z\"\n      ></path>\n      <path\n        fill=\"#28b446\"\n        d=\"m416.253 455.624.014.014C372.396 490.901 316.666 512 256 512c-97.491 0-182.252-54.491-225.491-134.681l82.961-67.91c21.619 57.698 77.278 98.771 142.53 98.771 28.047 0 54.323-7.582 76.87-20.818l83.383 68.262z\"\n      ></path>\n      <path\n        fill=\"#f14336\"\n        d=\"m419.404 58.936-82.933 67.896C313.136 112.246 285.552 103.82 256 103.82c-66.729 0-123.429 42.957-143.965 102.724l-83.397-68.276h-.014C71.23 56.123 157.06 0 256 0c62.115 0 119.068 22.126 163.404 58.936z\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GoogleIconChat.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function Google({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  const unit = '41';\n  const height = size;\n  const width = size;\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"currentColor\"\n      width=\"24px\"\n      height=\"24px\"\n      viewBox=\"0 0 512 512\"\n      strokeWidth=\"1.5\"\n      className={cn(className, '')}\n    >\n      <path d=\"M473.16,221.48l-2.26-9.59H262.46v88.22H387c-12.93,61.4-72.93,93.72-121.94,93.72-35.66,0-73.25-15-98.13-39.11a140.08,140.08,0,0,1-41.8-98.88c0-37.16,16.7-74.33,41-98.78s61-38.13,97.49-38.13c41.79,0,71.74,22.19,82.94,32.31l62.69-62.36C390.86,72.72,340.34,32,261.6,32h0c-60.75,0-119,23.27-161.58,65.71C58,139.5,36.25,199.93,36.25,256S56.83,369.48,97.55,411.6C141.06,456.52,202.68,480,266.13,480c57.73,0,112.45-22.62,151.45-63.66,38.34-40.4,58.17-96.3,58.17-154.9C475.75,236.77,473.27,222.12,473.16,221.48Z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/GoogleMinimalIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function GoogleMinimalIcon({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"currentColor\"\n      width=\"800px\"\n      height=\"800px\"\n      viewBox=\"0 0 512 512\"\n      className={cn('h-4 w-4', className)}\n    >\n      <path d=\"M473.16,221.48l-2.26-9.59H262.46v88.22H387c-12.93,61.4-72.93,93.72-121.94,93.72-35.66,0-73.25-15-98.13-39.11a140.08,140.08,0,0,1-41.8-98.88c0-37.16,16.7-74.33,41-98.78s61-38.13,97.49-38.13c41.79,0,71.74,22.19,82.94,32.31l62.69-62.36C390.86,72.72,340.34,32,261.6,32h0c-60.75,0-119,23.27-161.58,65.71C58,139.5,36.25,199.93,36.25,256S56.83,369.48,97.55,411.6C141.06,456.52,202.68,480,266.13,480c57.73,0,112.45-22.62,151.45-63.66,38.34-40.4,58.17-96.3,58.17-154.9C475.75,236.77,473.27,222.12,473.16,221.48Z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LightModeIcon.tsx",
    "content": "import React from 'react';\n\nexport default function LightModeIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"5\" />\n      <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n      <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n      <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n      <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n      <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n      <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n      <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n      <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LightningIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function LightningIcon({ className = '' }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth=\"1.5\"\n      stroke=\"currentColor\"\n      aria-hidden=\"true\"\n      className={cn('h-6 w-6', className)}\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LikeIcon.tsx",
    "content": "import React from 'react';\n\nexport default function LikeIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LinkIcon.tsx",
    "content": "export default function LinkIcon() {\n  return (\n    <svg\n      width=\"18\"\n      height=\"18\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"icon-md\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M15 5C14.4477 5 14 4.55228 14 4C14 3.44772 14.4477 3 15 3H20C20.5523 3 21 3.44772 21 4V9C21 9.55228 20.5523 10 20 10C19.4477 10 19 9.55228 19 9V6.41421L13.7071 11.7071C13.3166 12.0976 12.6834 12.0976 12.2929 11.7071C11.9024 11.3166 11.9024 10.6834 12.2929 10.2929L17.5858 5H15ZM4 7C4 5.34315 5.34315 4 7 4H10C10.5523 4 11 4.44772 11 5C11 5.55228 10.5523 6 10 6H7C6.44772 6 6 6.44772 6 7V17C6 17.5523 6.44772 18 7 18H17C17.5523 18 18 17.5523 18 17V14C18 13.4477 18.4477 13 19 13C19.5523 13 20 13.4477 20 14V17C20 18.6569 18.6569 20 17 20H7C5.34315 20 4 18.6569 4 17V7Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/ListeningIcon.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function ListeningIcon({ className }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      className={cn(className)}\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n      <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n      <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LockIcon.tsx",
    "content": "export default function LockIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"lucide lucide-lock\"\n    >\n      <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" />\n      <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/LogOutIcon.tsx",
    "content": "import React from 'react';\n\nexport default function LogOutIcon() {\n  return (\n    <svg\n      width=\"18\"\n      height=\"18\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"icon-md\"\n    >\n      <path\n        d=\"M11 3H7C5.89543 3 5 3.89543 5 5V19C5 20.1046 5.89543 21 7 21H11\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n      ></path>\n      <path\n        d=\"M20 12H11M20 12L16 16M20 12L16 8\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/MessagesSquared.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function MessagesSquared({ className }: { className?: string }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className ?? '', 'lucide lucide-messages-square')}\n    >\n      <path d=\"M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v5Z\" />\n      <path d=\"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/MinimalPlugin.tsx",
    "content": "export default function MinimalPlugin({\n  size,\n  className = 'icon-md',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={className}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M15.4646 19C15.2219 20.6961 13.7632 22 12 22C10.2368 22 8.77806 20.6961 8.53544 19H6C4.34315 19 3 17.6569 3 16V13.5C3 12.9477 3.44772 12.5 4 12.5H4.5C5.32843 12.5 6 11.8284 6 11C6 10.1716 5.32843 9.5 4.5 9.5H4C3.44772 9.5 3 9.05229 3 8.5L3 6C3 4.34315 4.34315 3 6 3L18 3C19.6569 3 21 4.34315 21 6L21 16C21 17.6569 19.6569 19 18 19H15.4646ZM12 20C12.8284 20 13.5 19.3284 13.5 18.5V18C13.5 17.4477 13.9477 17 14.5 17H18C18.5523 17 19 16.5523 19 16L19 6C19 5.44772 18.5523 5 18 5L6 5C5.44772 5 5 5.44772 5 6V7.53544C6.69615 7.77806 8 9.23676 8 11C8 12.7632 6.69615 14.2219 5 14.4646L5 16C5 16.5523 5.44771 17 6 17H9.5C10.0523 17 10.5 17.4477 10.5 18V18.5C10.5 19.3284 11.1716 20 12 20Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/NewChatIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function NewChatIcon({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={cn('text-black dark:text-white', className)}\n      aria-hidden={true}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M16.7929 2.79289C18.0118 1.57394 19.9882 1.57394 21.2071 2.79289C22.4261 4.01184 22.4261 5.98815 21.2071 7.20711L12.7071 15.7071C12.5196 15.8946 12.2652 16 12 16H9C8.44772 16 8 15.5523 8 15V12C8 11.7348 8.10536 11.4804 8.29289 11.2929L16.7929 2.79289ZM19.7929 4.20711C19.355 3.7692 18.645 3.7692 18.2071 4.2071L10 12.4142V14H11.5858L19.7929 5.79289C20.2308 5.35499 20.2308 4.64501 19.7929 4.20711ZM6 5C5.44772 5 5 5.44771 5 6V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V14C19 13.4477 19.4477 13 20 13C20.5523 13 21 13.4477 21 14V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18V6C3 4.34314 4.34315 3 6 3H10C10.5523 3 11 3.44771 11 4C11 4.55228 10.5523 5 10 5H6Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/OpenAIMinimalIcon.tsx",
    "content": "export default function OpenAIMinimalIcon({ className = 'h-4 w-4' }) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"currentColor\"\n      strokeWidth=\"1\"\n      viewBox=\"0 0 40 40\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={className}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M37.5324 16.8707C37.9808 15.5241 38.1363 14.0974 37.9886 12.6859C37.8409 11.2744 37.3934 9.91076 36.676 8.68622C35.6126 6.83404 33.9882 5.3676 32.0373 4.4985C30.0864 3.62941 27.9098 3.40259 25.8215 3.85078C24.8796 2.7893 23.7219 1.94125 22.4257 1.36341C21.1295 0.785575 19.7249 0.491269 18.3058 0.500197C16.1708 0.495044 14.0893 1.16803 12.3614 2.42214C10.6335 3.67624 9.34853 5.44666 8.6917 7.47815C7.30085 7.76286 5.98686 8.3414 4.8377 9.17505C3.68854 10.0087 2.73073 11.0782 2.02839 12.312C0.956464 14.1591 0.498905 16.2988 0.721698 18.4228C0.944492 20.5467 1.83612 22.5449 3.268 24.1293C2.81966 25.4759 2.66413 26.9026 2.81182 28.3141C2.95951 29.7256 3.40701 31.0892 4.12437 32.3138C5.18791 34.1659 6.8123 35.6322 8.76321 36.5013C10.7141 37.3704 12.8907 37.5973 14.9789 37.1492C15.9208 38.2107 17.0786 39.0587 18.3747 39.6366C19.6709 40.2144 21.0755 40.5087 22.4946 40.4998C24.6307 40.5054 26.7133 39.8321 28.4418 38.5772C30.1704 37.3223 31.4556 35.5506 32.1119 33.5179C33.5027 33.2332 34.8167 32.6547 35.9659 31.821C37.115 30.9874 38.0728 29.9178 38.7752 28.684C39.8458 26.8371 40.3023 24.6979 40.0789 22.5748C39.8556 20.4517 38.9639 18.4544 37.5324 16.8707ZM22.4978 37.8849C20.7443 37.8874 19.0459 37.2733 17.6994 36.1501C17.7601 36.117 17.8666 36.0586 17.936 36.0161L25.9004 31.4156C26.1003 31.3019 26.2663 31.137 26.3813 30.9378C26.4964 30.7386 26.5563 30.5124 26.5549 30.2825V19.0542L29.9213 20.998C29.9389 21.0068 29.9541 21.0198 29.9656 21.0359C29.977 21.052 29.9842 21.0707 29.9867 21.0902V30.3889C29.9842 32.375 29.1946 34.2791 27.7909 35.6841C26.3872 37.0892 24.4838 37.8806 22.4978 37.8849ZM6.39227 31.0064C5.51397 29.4888 5.19742 27.7107 5.49804 25.9832C5.55718 26.0187 5.66048 26.0818 5.73461 26.1244L13.699 30.7248C13.8975 30.8408 14.1233 30.902 14.3532 30.902C14.583 30.902 14.8088 30.8408 15.0073 30.7248L24.731 25.1103V28.9979C24.7321 29.0177 24.7283 29.0376 24.7199 29.0556C24.7115 29.0736 24.6988 29.0893 24.6829 29.1012L16.6317 33.7497C14.9096 34.7416 12.8643 35.0097 10.9447 34.4954C9.02506 33.9811 7.38785 32.7263 6.39227 31.0064ZM4.29707 13.6194C5.17156 12.0998 6.55279 10.9364 8.19885 10.3327C8.19885 10.4013 8.19491 10.5228 8.19491 10.6071V19.808C8.19351 20.0378 8.25334 20.2638 8.36823 20.4629C8.48312 20.6619 8.64893 20.8267 8.84863 20.9404L18.5723 26.5542L15.206 28.4979C15.1894 28.5089 15.1703 28.5155 15.1505 28.5173C15.1307 28.5191 15.1107 28.516 15.0924 28.5082L7.04046 23.8557C5.32135 22.8601 4.06716 21.2235 3.55289 19.3046C3.03862 17.3858 3.30624 15.3413 4.29707 13.6194ZM31.955 20.0556L22.2312 14.4411L25.5976 12.4981C25.6142 12.4872 25.6333 12.4805 25.6531 12.4787C25.6729 12.4769 25.6928 12.4801 25.7111 12.4879L33.7631 17.1364C34.9967 17.849 36.0017 18.8982 36.6606 20.1613C37.3194 21.4244 37.6047 22.849 37.4832 24.2684C37.3617 25.6878 36.8382 27.0432 35.9743 28.1759C35.1103 29.3086 33.9415 30.1717 32.6047 30.6641C32.6047 30.5947 32.6047 30.4733 32.6047 30.3889V21.188C32.6066 20.9586 32.5474 20.7328 32.4332 20.5338C32.319 20.3348 32.154 20.1698 31.955 20.0556ZM35.3055 15.0128C35.2464 14.9765 35.1431 14.9142 35.069 14.8717L27.1045 10.2712C26.906 10.1554 26.6803 10.0943 26.4504 10.0943C26.2206 10.0943 25.9948 10.1554 25.7963 10.2712L16.0726 15.8858V11.9982C16.0715 11.9783 16.0753 11.9585 16.0837 11.9405C16.0921 11.9225 16.1048 11.9068 16.1207 11.8949L24.1719 7.25025C25.4053 6.53903 26.8158 6.19376 28.2383 6.25482C29.6608 6.31589 31.0364 6.78077 32.2044 7.59508C33.3723 8.40939 34.2842 9.53945 34.8334 10.8531C35.3826 12.1667 35.5464 13.6095 35.3055 15.0128ZM14.2424 21.9419L10.8752 19.9981C10.8576 19.9893 10.8423 19.9763 10.8309 19.9602C10.8195 19.9441 10.8122 19.9254 10.8098 19.9058V10.6071C10.8107 9.18295 11.2173 7.78848 11.9819 6.58696C12.7466 5.38544 13.8377 4.42659 15.1275 3.82264C16.4173 3.21869 17.8524 2.99464 19.2649 3.1767C20.6775 3.35876 22.0089 3.93941 23.1034 4.85067C23.0427 4.88379 22.937 4.94215 22.8668 4.98473L14.9024 9.58517C14.7025 9.69878 14.5366 9.86356 14.4215 10.0626C14.3065 10.2616 14.2466 10.4877 14.2479 10.7175L14.2424 21.9419ZM16.071 17.9991L20.4018 15.4978L24.7325 17.9975V22.9985L20.4018 25.4983L16.071 22.9985V17.9991Z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/OpenIDIcon.tsx",
    "content": "import React from 'react';\n\nexport default function OpenIDIcon() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" id=\"openid\" className=\"h-5 w-5\">\n      <path\n        fill=\"currentColor\"\n        d=\"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/PaLMIcon.tsx",
    "content": "export default function PaLMIcon({\n  size = 25,\n  className = '',\n}: {\n  size?: number;\n  className?: string;\n}) {\n  return (\n    <svg\n      // width=\"100%\"\n      // height=\"100%\"\n      width={size}\n      height={size}\n      className={className}\n      viewBox=\"0 0 19 17\"\n      fill=\"none\"\n      preserveAspectRatio=\"xMidYMid meet\"\n      focusable=\"false\"\n    >\n      <path\n        d=\"M9.62674 16.2202H9.7049C10.4225 16.2202 11.0016 15.6412 11.0016 14.9236V4.04224H8.33008V14.92C8.33008 15.6376 8.90914 16.2202 9.62674 16.2202Z\"\n        fill=\"#F9AB00\"\n      />\n      <path\n        d=\"M14.6819 8.02813C13.3249 6.66752 11.2964 6.39398 9.66577 7.2004L15.0585 12.5931C15.2823 12.8169 15.6624 12.7281 15.7583 12.4297C16.2308 10.927 15.8756 9.21822 14.6819 8.02813Z\"\n        fill=\"#5BB974\"\n      />\n      <path\n        d=\"M4.64953 8.02813C6.00659 6.66752 8.03507 6.39398 9.66567 7.2004L4.27297 12.5931C4.04916 12.8169 3.66904 12.7281 3.57312 12.4297C3.10064 10.927 3.45589 9.21822 4.64953 8.02813Z\"\n        fill=\"#129EAF\"\n      />\n      <path\n        d=\"M14.284 3.84326C12.1383 3.84326 10.3159 5.25005 9.66577 7.20038H18.1918C18.5399 7.20038 18.7744 6.83092 18.6145 6.5183C17.8081 4.93033 16.1704 3.84326 14.284 3.84326Z\"\n        fill=\"#AF5CF7\"\n      />\n      <path\n        d=\"M10.5574 1.55901C9.04053 3.07593 8.74567 5.36019 9.66577 7.20039L15.6944 1.17179C15.943 0.923113 15.8436 0.496814 15.5132 0.390239C13.8151 -0.1604 11.8896 0.226822 10.5574 1.55901Z\"\n        fill=\"#FF8BCB\"\n      />\n      <path\n        d=\"M8.77408 1.55901C10.291 3.07593 10.5859 5.36019 9.66576 7.20039L3.63716 1.17179C3.38848 0.923113 3.48795 0.496814 3.81833 0.390239C5.51643 -0.1604 7.44189 0.226822 8.77408 1.55901Z\"\n        fill=\"#FA7B17\"\n      />\n      <path\n        d=\"M5.04752 3.84326C7.19323 3.84326 9.01566 5.25005 9.66577 7.20038H1.13976C0.791616 7.20038 0.55715 6.83092 0.717013 6.5183C1.52343 4.93033 3.16114 3.84326 5.04752 3.84326Z\"\n        fill=\"#4285F4\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/PaLMinimalIcon.tsx",
    "content": "import { cn } from '~/utils';\nexport default function PaLMinimalIcon({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"1\"\n      viewBox=\"0 0 32 32\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('h-4 w-4', className)}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"m16 30.238c1.2298 0 2.2259-0.99608 2.2259-2.2259v-11.46c-0.63513-0.56429-1.6553-1.6805-2.2259-2.251-0.79858 0.83793-1.3599 1.3599-2.2259 2.251v11.46c0 1.2298 0.99608 2.2259 2.2259 2.2259z\" />\n      <path d=\"m24.868 15.761c-0.61691-0.61643-1.3121-1.1065-2.0536-1.4703-6.8147 0.010467 0.13304 0.031026-6.8147 0.010467l9.5286 9.5286c0.39324 0.39324 1.0703 0.23743 1.2372-0.29122 0.83841-2.6544 0.20589-5.6723-1.8976-7.7776z\" />\n      <path d=\"m7.1318 15.761c0.5902-0.58975 1.2521-1.0639 1.9575-1.4224 6.9107-0.037427-0.11812-0.057288 6.9107-0.037427l-9.5286 9.5286c-0.39324 0.39324-1.0703 0.23743-1.2372-0.29122-0.83841-2.6543-0.20589-5.6723 1.8976-7.7776z\" />\n      <path d=\"m24.162 8.3655c-0.93169 0-1.8288 0.15009-2.6691 0.42772-5.4924 5.5079 0 0-5.4924 5.5079h15.069c0.61767 0 1.0295-0.65292 0.74938-1.2038-1.432-2.8102-4.3219-4.7318-7.657-4.7318z\" />\n      <path d=\"m17.575 4.333c-0.62613 0.62613-1.1343 1.3257-1.5248 2.0718 1.6767 4.1174 0.53518 6.3909-0.05003 7.8964l10.656-10.656c0.43775-0.43775 0.2671-1.1908-0.3209-1.3819-3.0012-0.97382-6.4031-0.28751-8.7607 2.0701z\" />\n      <path d=\"m14.425 4.333c2.6822 2.6822 3.1997 6.7129 1.5748 9.9682l-10.656-10.656c-0.43775-0.43775-0.2671-1.1908 0.3209-1.3819 3.0012-0.97382 6.4031-0.28751 8.7607 2.0701z\" />\n      <path d=\"m7.8385 8.3655c0.9121 0 1.791 0.14385 2.616 0.41037 5.5455 5.5253-0.061773 0.011675 5.5455 5.5253h-15.069c-0.61768 0-1.0295-0.65292-0.74938-1.2038 1.432-2.8102 4.3219-4.7318 7.657-4.7318z\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Panel.tsx",
    "content": "export default function Panel({ open = false }) {\n  const openPanel = (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n      <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\n    </svg>\n  );\n\n  const closePanel = (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n      <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\n    </svg>\n  );\n\n  if (open) {\n    return openPanel;\n  } else {\n    return closePanel;\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/PinIcon.tsx",
    "content": "export default function PinIcon({ unpin = false }: { unpin?: boolean }) {\n  if (unpin) {\n    return (\n      <svg\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"icon-sm\"\n      >\n        <path\n          d=\"M15 15V17.5585C15 18.4193 14.4491 19.1836 13.6325 19.4558L13.1726 19.6091C12.454 19.8487 11.6616 19.6616 11.126 19.126L4.87403 12.874C4.33837 12.3384 4.15132 11.546 4.39088 10.8274L4.54415 10.3675C4.81638 9.55086 5.58066 9 6.44152 9H9M12 6.2L13.6277 3.92116C14.3461 2.91549 15.7955 2.79552 16.6694 3.66942L20.3306 7.33058C21.2045 8.20448 21.0845 9.65392 20.0788 10.3723L18 11.8571\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M8 16L3 21\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n        <path\n          d=\"M4 4L20 20\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </svg>\n    );\n  }\n  return (\n    <svg\n      className=\"icon-sm\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M17.4845 2.8798C16.1773 1.57258 14.0107 1.74534 12.9272 3.24318L9.79772 7.56923C9.60945 7.82948 9.30775 7.9836 8.98654 7.9836H6.44673C3.74061 7.9836 2.27414 11.6759 4.16948 13.5713L6.59116 15.993L2.29324 20.2909C1.90225 20.6819 1.90225 21.3158 2.29324 21.7068C2.68422 22.0977 3.31812 22.0977 3.70911 21.7068L8.00703 17.4088L10.4287 19.8305C12.3241 21.7259 16.0164 20.2594 16.0164 17.5533V15.0135C16.0164 14.6923 16.1705 14.3906 16.4308 14.2023L20.7568 11.0728C22.2547 9.98926 22.4274 7.8227 21.1202 6.51549L17.4845 2.8798ZM11.8446 18.4147C12.4994 19.0694 14.0141 18.4928 14.0141 17.5533V15.0135C14.0141 14.0499 14.4764 13.1447 15.2572 12.58L19.5832 9.45047C20.0825 9.08928 20.1401 8.3671 19.7043 7.93136L16.0686 4.29567C15.6329 3.85993 14.9107 3.91751 14.5495 4.4168L11.4201 8.74285C10.8553 9.52359 9.95016 9.98594 8.98654 9.98594H6.44673C5.5072 9.98594 4.93059 11.5006 5.58535 12.1554L11.8446 18.4147Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Plugin.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function Plugin({ className = '', ...props }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      className={cn('h-4 w-4', className)}\n      width=\"16\"\n      height=\"16\"\n      strokeWidth=\"2\"\n      {...props}\n    >\n      <g fill=\"currentColor\">\n        <path d=\"M13.164.98a.7.7 0 0 0-1.328 0l-.478 1.435a.7.7 0 0 1-.443.443l-1.436.478a.7.7 0 0 0 0 1.328l1.436.479a.7.7 0 0 1 .443.442l.478 1.436a.7.7 0 0 0 1.328 0l.478-1.436a.7.7 0 0 1 .443-.443l1.436-.478a.7.7 0 0 0 0-1.328l-1.436-.478a.7.7 0 0 1-.443-.443L13.164.979Z\" />\n        <path d=\"M13.237 10.534c-.228-.245-.513-.46-.847-.46a.823.823 0 0 0-.828.849c.04 1.04.128 2.067.263 3.08a.619.619 0 0 1-.528.695c-.872.121-1.748.208-2.626.262a.8.8 0 0 1-.845-.805c0-.325.21-.602.45-.82.235-.215.375-.488.375-.787 0-.683-.738-1.237-1.65-1.237-.911 0-1.65.554-1.65 1.237 0 .294.137.563.364.775.245.229.461.513.461.848a.823.823 0 0 1-.85.829 33.809 33.809 0 0 1-3.266-.278.619.619 0 0 1-.532-.532 34.099 34.099 0 0 1-.278-3.267.823.823 0 0 1 .83-.85c.333 0 .619.216.846.461.212.228.482.364.776.364.683 0 1.237-.738 1.237-1.65 0-.91-.554-1.65-1.237-1.65-.299 0-.572.142-.786.376-.219.24-.496.45-.821.45a.8.8 0 0 1-.805-.845c.054-.885.142-1.76.262-2.626a.619.619 0 0 1 .695-.528c1.022.136 2.05.224 3.08.263a.822.822 0 0 0 .85-.828c0-.334-.217-.62-.462-.847-.227-.212-.363-.482-.363-.776C5.352 1.554 6.09 1 7.002 1c.91 0 1.649.554 1.649 1.237 0 .173-.012.327-.029.473C8.258 3 8 3.41 8 4c0 1.5 1.667 1.833 2.5 2 .167.833.5 2.5 2 2.5.732 0 1.186-.397 1.479-.9l.034-.001c.683 0 1.237.738 1.237 1.65 0 .911-.554 1.65-1.237 1.65-.294 0-.564-.137-.776-.364Z\" />\n      </g>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/RegenerateIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function RegenerateIcon({ className = '', size = '1em' }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      height={size}\n      width={size}\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('icon-md-heavy', className)}\n    >\n      <path\n        fill=\"currentColor\"\n        d=\"M3.07 10.876C3.623 6.436 7.41 3 12 3a9.15 9.15 0 0 1 6.012 2.254V4a1 1 0 1 1 2 0v4a1 1 0 0 1-1 1H15a1 1 0 1 1 0-2h1.957A7.15 7.15 0 0 0 12 5a7 7 0 0 0-6.946 6.124 1 1 0 1 1-1.984-.248m16.992 1.132a1 1 0 0 1 .868 1.116C20.377 17.564 16.59 21 12 21a9.15 9.15 0 0 1-6-2.244V20a1 1 0 1 1-2 0v-4a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H7.043A7.15 7.15 0 0 0 12 19a7 7 0 0 0 6.946-6.124 1 1 0 0 1 1.116-.868\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/RenameIcon.tsx",
    "content": "export default function RenameIcon() {\n  return (\n    <svg\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-4 w-4\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M13.2929 4.29291C15.0641 2.52167 17.9359 2.52167 19.7071 4.2929C21.4783 6.06414 21.4783 8.93588 19.7071 10.7071L18.7073 11.7069L11.1603 19.2539C10.7182 19.696 10.1489 19.989 9.53219 20.0918L4.1644 20.9864C3.84584 21.0395 3.52125 20.9355 3.29289 20.7071C3.06453 20.4788 2.96051 20.1542 3.0136 19.8356L3.90824 14.4678C4.01103 13.8511 4.30396 13.2818 4.7461 12.8397L13.2929 4.29291ZM13 7.41422L6.16031 14.2539C6.01293 14.4013 5.91529 14.591 5.88102 14.7966L5.21655 18.7835L9.20339 18.119C9.40898 18.0847 9.59872 17.9871 9.7461 17.8397L16.5858 11L13 7.41422ZM18 9.5858L14.4142 6.00001L14.7071 5.70712C15.6973 4.71693 17.3027 4.71693 18.2929 5.70712C19.2831 6.69731 19.2831 8.30272 18.2929 9.29291L18 9.5858Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SaveIcon.tsx",
    "content": "import React from 'react';\n\nexport default function SaveIcon({ size = '1em', className }) {\n  return (\n    <svg\n      viewBox=\"64 64 896 896\"\n      strokeWidth=\"2.5\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={className}\n      width={size}\n      height={size}\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SendIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function SendIcon({ size = 24, className = '' }) {\n  return (\n    <svg\n      width={size}\n      height={size}\n      viewBox={'0 0 24 24'}\n      fill=\"none\"\n      className={cn('text-white dark:text-black', className)}\n    >\n      <path\n        d=\"M7 11L12 6L17 11M12 18V7\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SendMessageIcon.tsx",
    "content": "import React from 'react';\n\nexport default function SendMessageIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      className=\"icon-sm m-1 md:m-0\"\n      style={{ width: '1em', height: '1em', verticalAlign: 'middle' }}\n    >\n      <path\n        d=\"M.5 1.163A1 1 0 0 1 1.97.28l12.868 6.837a1 1 0 0 1 0 1.766L1.969 15.72A1 1 0 0 1 .5 14.836V10.33a1 1 0 0 1 .816-.983L8.5 8 1.316 6.653A1 1 0 0 1 .5 5.67V1.163Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Sparkles.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function Sparkles({ className = '', size = 24 }) {\n  return (\n    <svg\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={cn('icon-md shrink-0', className)}\n    >\n      <path\n        d=\"M19.3975 1.35498C19.3746 1.15293 19.2037 1.00021 19.0004 1C18.7971 0.999793 18.6259 1.15217 18.6026 1.35417C18.4798 2.41894 18.1627 3.15692 17.6598 3.65983C17.1569 4.16274 16.4189 4.47983 15.3542 4.60264C15.1522 4.62593 14.9998 4.79707 15 5.00041C15.0002 5.20375 15.1529 5.37457 15.355 5.39746C16.4019 5.51605 17.1562 5.83304 17.6716 6.33906C18.1845 6.84269 18.5078 7.57998 18.6016 8.63539C18.6199 8.84195 18.7931 9.00023 19.0005 9C19.2078 8.99977 19.3806 8.84109 19.3985 8.6345C19.4883 7.59673 19.8114 6.84328 20.3273 6.32735C20.8433 5.81142 21.5967 5.48834 22.6345 5.39851C22.8411 5.38063 22.9998 5.20782 23 5.00045C23.0002 4.79308 22.842 4.61992 22.6354 4.60157C21.58 4.50782 20.8427 4.18447 20.3391 3.67157C19.833 3.15623 19.516 2.40192 19.3975 1.35498Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M11 3C11.4833 3 11.8974 3.34562 11.9839 3.82111C12.4637 6.46043 13.279 8.23983 14.5196 9.48039C15.7602 10.721 17.5396 11.5363 20.1789 12.0161C20.6544 12.1026 21 12.5167 21 13C21 13.4833 20.6544 13.8974 20.1789 13.9839C17.5396 14.4637 15.7602 15.279 14.5196 16.5196C13.279 17.7602 12.4637 19.5396 11.9839 22.1789C11.8974 22.6544 11.4833 23 11 23C10.5167 23 10.1026 22.6544 10.0161 22.1789C9.53625 19.5396 8.72096 17.7602 7.48039 16.5196C6.23983 15.279 4.46043 14.4637 1.82111 13.9839C1.34562 13.8974 1 13.4833 1 13C1 12.5167 1.34562 12.1026 1.82111 12.0161C4.46043 11.5363 6.23983 10.721 7.48039 9.48039C8.72096 8.23983 9.53625 6.46043 10.0161 3.82111C10.1026 3.34562 10.5167 3 11 3ZM5.66618 13C6.9247 13.5226 7.99788 14.2087 8.89461 15.1054C9.79134 16.0021 10.4774 17.0753 11 18.3338C11.5226 17.0753 12.2087 16.0021 13.1054 15.1054C14.0021 14.2087 15.0753 13.5226 16.3338 13C15.0753 12.4774 14.0021 11.7913 13.1054 10.8946C12.2087 9.99788 11.5226 8.9247 11 7.66618C10.4774 8.9247 9.79134 9.99788 8.89461 10.8946C7.99788 11.7913 6.9247 12.4774 5.66618 13Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SpeechIcon.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function SpeechIcon({ className }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn(className)}\n    >\n      <path d=\"M2 10v3\" />\n      <path d=\"M6 6v11\" />\n      <path d=\"M10 3v18\" />\n      <path d=\"M14 8v7\" />\n      <path d=\"M18 5v13\" />\n      <path d=\"M22 10v3\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/Spinner.tsx",
    "content": "import { cn } from '~/utils/';\n\nexport default function Spinner({ className = 'm-auto', size = '1em' }) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('animate-spin', className)}\n    >\n      <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/StopGeneratingIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function StopGeneratingIcon({ className = '' }: { className?: string }) {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"2.5\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('h-3 w-3 text-gray-600 dark:text-gray-400', className)}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SunIcon.tsx",
    "content": "import React from 'react';\n\nexport default function SunIcon() {\n  return (\n    <svg\n      stroke=\"currentColor\"\n      fill=\"none\"\n      strokeWidth=\"1.5\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className=\"h-6 w-6\"\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"5\" />\n      <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n      <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n      <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n      <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n      <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n      <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n      <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n      <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/SwitchIcon.tsx",
    "content": "import React from 'react';\n\nexport default function SwitchIcon({ size = '1em', className }) {\n  return (\n    <svg\n      viewBox=\"64 64 896 896\"\n      strokeWidth=\"2.5\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={className}\n      width={size}\n      height={size}\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/TrashIcon.tsx",
    "content": "import { cn } from '~/utils';\n\ntype TrashIconProps = {\n  className?: string;\n};\n\nexport default function TrashIcon({ className = '' }: TrashIconProps) {\n  return (\n    <svg\n      fill=\"none\"\n      strokeWidth=\"2\"\n      viewBox=\"0 0 24 24\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      className={cn('icon-md h-4 w-4', className)}\n      height=\"1em\"\n      width=\"1em\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M10.5555 4C10.099 4 9.70052 4.30906 9.58693 4.75114L9.29382 5.8919H14.715L14.4219 4.75114C14.3083 4.30906 13.9098 4 13.4533 4H10.5555ZM16.7799 5.8919L16.3589 4.25342C16.0182 2.92719 14.8226 2 13.4533 2H10.5555C9.18616 2 7.99062 2.92719 7.64985 4.25342L7.22886 5.8919H4C3.44772 5.8919 3 6.33961 3 6.8919C3 7.44418 3.44772 7.8919 4 7.8919H4.10069L5.31544 19.3172C5.47763 20.8427 6.76455 22 8.29863 22H15.7014C17.2354 22 18.5224 20.8427 18.6846 19.3172L19.8993 7.8919H20C20.5523 7.8919 21 7.44418 21 6.8919C21 6.33961 20.5523 5.8919 20 5.8919H16.7799ZM17.888 7.8919H6.11196L7.30423 19.1057C7.3583 19.6142 7.78727 20 8.29863 20H15.7014C16.2127 20 16.6417 19.6142 16.6958 19.1057L17.888 7.8919ZM10 10C10.5523 10 11 10.4477 11 11V16C11 16.5523 10.5523 17 10 17C9.44772 17 9 16.5523 9 16V11C9 10.4477 9.44772 10 10 10ZM14 10C14.5523 10 15 10.4477 15 11V16C15 16.5523 14.5523 17 14 17C13.4477 17 13 16.5523 13 16V11C13 10.4477 13.4477 10 14 10Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/UserIcon.tsx",
    "content": "export default function UserIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"18\"\n      height=\"18\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n      <circle cx=\"12\" cy=\"7\" r=\"4\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/VolumeIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function VolumeIcon({ className = '', size = '1em' }) {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      height={size}\n      width={size}\n      className={cn(className)}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M11 4.9099C11 4.47485 10.4828 4.24734 10.1621 4.54132L6.67572 7.7372C6.49129 7.90626 6.25019 8.00005 6 8.00005H4C3.44772 8.00005 3 8.44776 3 9.00005V15C3 15.5523 3.44772 16 4 16H6C6.25019 16 6.49129 16.0938 6.67572 16.2629L10.1621 19.4588C10.4828 19.7527 11 19.5252 11 19.0902V4.9099ZM8.81069 3.06701C10.4142 1.59714 13 2.73463 13 4.9099V19.0902C13 21.2655 10.4142 22.403 8.81069 20.9331L5.61102 18H4C2.34315 18 1 16.6569 1 15V9.00005C1 7.34319 2.34315 6.00005 4 6.00005H5.61102L8.81069 3.06701ZM20.3166 6.35665C20.8019 6.09313 21.409 6.27296 21.6725 6.75833C22.5191 8.3176 22.9996 10.1042 22.9996 12.0001C22.9996 13.8507 22.5418 15.5974 21.7323 17.1302C21.4744 17.6185 20.8695 17.8054 20.3811 17.5475C19.8927 17.2896 19.7059 16.6846 19.9638 16.1962C20.6249 14.9444 20.9996 13.5175 20.9996 12.0001C20.9996 10.4458 20.6064 8.98627 19.9149 7.71262C19.6514 7.22726 19.8312 6.62017 20.3166 6.35665ZM15.7994 7.90049C16.241 7.5688 16.8679 7.65789 17.1995 8.09947C18.0156 9.18593 18.4996 10.5379 18.4996 12.0001C18.4996 13.3127 18.1094 14.5372 17.4385 15.5604C17.1357 16.0222 16.5158 16.1511 16.0539 15.8483C15.5921 15.5455 15.4632 14.9255 15.766 14.4637C16.2298 13.7564 16.4996 12.9113 16.4996 12.0001C16.4996 10.9859 16.1653 10.0526 15.6004 9.30063C15.2687 8.85905 15.3578 8.23218 15.7994 7.90049Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/VolumeMuteIcon.tsx",
    "content": "import { cn } from '~/utils';\n\nexport default function VolumeMuteIcon({ className = '', size = '1em' }) {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      height={size}\n      width={size}\n      className={cn(className)}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM9.5 8.5C8.94772 8.5 8.5 8.94772 8.5 9.5V14.5C8.5 15.0523 8.94772 15.5 9.5 15.5H14.5C15.0523 15.5 15.5 15.0523 15.5 14.5V9.5C15.5 8.94772 15.0523 8.5 14.5 8.5H9.5Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/svg/index.ts",
    "content": "export { default as ArchiveIcon } from './ArchiveIcon';\nexport { default as Blocks } from './Blocks';\nexport { default as Plugin } from './Plugin';\nexport { default as GPTIcon } from './GPTIcon';\nexport { default as EditIcon } from './EditIcon';\nexport { default as DataIcon } from './DataIcon';\nexport { default as Panel } from './Panel';\nexport { default as Spinner } from './Spinner';\nexport { default as Clipboard } from './Clipboard';\nexport { default as CheckMark } from './CheckMark';\nexport { default as CrossIcon } from './CrossIcon';\nexport { default as LogOutIcon } from './LogOutIcon';\nexport { default as CustomMinimalIcon } from './CustomMinimalIcon';\nexport { default as LightningIcon } from './LightningIcon';\nexport { default as AttachmentIcon } from './AttachmentIcon';\nexport { default as MessagesSquared } from './MessagesSquared';\nexport { default as StopGeneratingIcon } from './StopGeneratingIcon';\nexport { default as RegenerateIcon } from './RegenerateIcon';\nexport { default as ContinueIcon } from './ContinueIcon';\nexport { default as GoogleIcon } from './GoogleIcon';\nexport { default as FacebookIcon } from './FacebookIcon';\nexport { default as OpenIDIcon } from './OpenIDIcon';\nexport { default as GithubIcon } from './GithubIcon';\nexport { default as DiscordIcon } from './DiscordIcon';\nexport { default as AppleIcon } from './AppleIcon';\nexport { default as AnthropicIcon } from './AnthropicIcon';\nexport { default as SendIcon } from './SendIcon';\nexport { default as LinkIcon } from './LinkIcon';\nexport { default as DotsIcon } from './DotsIcon';\nexport { default as GearIcon } from './GearIcon';\nexport { default as PinIcon } from './PinIcon';\nexport { default as TrashIcon } from './TrashIcon';\nexport { default as MinimalPlugin } from './MinimalPlugin';\nexport { default as AzureMinimalIcon } from './AzureMinimalIcon';\nexport { default as OpenAIMinimalIcon } from './OpenAIMinimalIcon';\nexport { default as ChatGPTMinimalIcon } from './ChatGPTMinimalIcon';\nexport { default as PaLMinimalIcon } from './PaLMinimalIcon';\nexport { default as PaLMIcon } from './PaLMIcon';\nexport { default as CodeyIcon } from './CodeyIcon';\nexport { default as GeminiIcon } from './GeminiIcon';\nexport { default as GoogleMinimalIcon } from './GoogleMinimalIcon';\nexport { default as AnthropicMinimalIcon } from './AnthropicMinimalIcon';\nexport { default as ListeningIcon } from './ListeningIcon';\nexport { default as VolumeIcon } from './VolumeIcon';\nexport { default as VolumeMuteIcon } from './VolumeMuteIcon';\nexport { default as SendMessageIcon } from './SendMessageIcon';\nexport { default as UserIcon } from './UserIcon';\nexport { default as LockIcon } from './LockIcon';\nexport { default as NewChatIcon } from './NewChatIcon';\nexport { default as ExperimentIcon } from './ExperimentIcon';\nexport { default as GoogleIconChat } from './GoogleIconChat';\nexport { default as BirthdayIcon } from './BirthdayIcon';\nexport { default as AssistantIcon } from './AssistantIcon';\nexport { default as Sparkles } from './Sparkles';\nexport { default as SpeechIcon } from './SpeechIcon';\nexport { default as SaveIcon } from './SaveIcon';\nexport { default as CircleHelpIcon } from './CircleHelpIcon';\nexport { default as BedrockIcon } from './BedrockIcon';\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Accordion.tsx",
    "content": "import * as React from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '~/utils';\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className = '', ...props }, ref) => (\n  <AccordionPrimitive.Item ref={ref} className={cn('border-b', className)} {...props} />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className = '', children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDownIcon className=\"text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-200\" />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className = '', children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn('pb-4 pt-0', className)}>{children}</div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/AlertDialog.tsx",
    "content": "import * as React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../../utils';\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\ntype AlertPortalProps = AlertDialogPrimitive.AlertDialogPortalProps & { className?: string };\n\nconst AlertDialogPortal = ({ className = '', children, ...props }: AlertPortalProps) => (\n  <AlertDialogPrimitive.Portal className={cn(className)} {...(props as AlertPortalProps)}>\n    <div className=\"fixed inset-0 z-50 flex items-end justify-center sm:items-center\">\n      {children}\n    </div>\n  </AlertDialogPrimitive.Portal>\n);\nAlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName;\n\nconst AlertDialogOverlay = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPrimitive.Overlay\n    className={cn(\n      'fixed inset-0 z-50 bg-gray-500/90 transition-opacity animate-in fade-in dark:bg-gray-800/90',\n      className,\n    )}\n    {...props}\n    ref={ref}\n  />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPortal>\n    <AlertDialogOverlay />\n    <AlertDialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        'fixed z-50 grid w-full max-w-lg scale-100 gap-4 bg-white p-6 opacity-100 animate-in fade-in-90 slide-in-from-bottom-10 sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0 md:w-full',\n        'dark:bg-gray-900',\n        className,\n      )}\n      {...props}\n    />\n  </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className = '', ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className = '', ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n    {...props}\n  />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPrimitive.Title\n    ref={ref}\n    className={cn('text-lg font-semibold text-gray-900', 'dark:text-gray-50', className)}\n    {...props}\n  />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPrimitive.Description\n    ref={ref}\n    className={cn('text-sm text-gray-500', 'dark:text-gray-400', className)}\n    {...props}\n  />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Action>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPrimitive.Action\n    ref={ref}\n    className={cn(\n      'inline-flex h-10 items-center justify-center rounded-md bg-gray-900 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-100 dark:text-gray-900 dark:hover:bg-gray-100 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',\n      className,\n    )}\n    {...props}\n  />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className = '', ...props }, ref) => (\n  <AlertDialogPrimitive.Cancel\n    ref={ref}\n    className={cn(\n      'mt-2 inline-flex h-10 items-center justify-center rounded-md border border-gray-200 bg-transparent px-4 py-2 text-sm font-semibold text-gray-900 transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-100 dark:hover:bg-gray-800 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900 sm:mt-0',\n      className,\n    )}\n    {...props}\n  />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n  AlertDialog,\n  AlertDialogTrigger,\n  AlertDialogContent,\n  AlertDialogHeader,\n  AlertDialogFooter,\n  AlertDialogTitle,\n  AlertDialogDescription,\n  AlertDialogAction,\n  AlertDialogCancel,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/AnimatedSearchInput.tsx",
    "content": "import React from 'react';\nimport { Search } from 'lucide-react';\nimport { cn } from '~/utils';\n\nconst AnimatedSearchInput = ({\n  value,\n  onChange,\n  isSearching: searching,\n  placeholder,\n}: {\n  value?: string;\n  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n  isSearching?: boolean;\n  placeholder: string;\n}) => {\n  const isSearching = searching === true;\n  const hasValue = value != null && value.length > 0;\n\n  return (\n    <div className=\"relative w-full\">\n      <div className=\"relative rounded-lg transition-all duration-500 ease-in-out\">\n        <div className=\"relative\">\n          {/* Icon on the left */}\n          <div className=\"absolute left-3 top-1/2 z-50 -translate-y-1/2\">\n            <Search\n              className={cn(\n                `\n                h-4 w-4 transition-all duration-500 ease-in-out`,\n                isSearching && hasValue ? 'text-blue-400' : 'text-gray-400',\n              )}\n            />\n          </div>\n\n          {/* Input field */}\n          <input\n            type=\"text\"\n            value={value}\n            onChange={onChange}\n            placeholder={placeholder}\n            className={`\n              peer relative z-20 w-full rounded-lg bg-surface-secondary px-10\n              py-2 outline-none ring-0 backdrop-blur-sm transition-all\n              duration-500 ease-in-out placeholder:text-gray-400\n              focus:outline-none focus:ring-0\n            `}\n          />\n\n          {/* Gradient overlay */}\n          <div\n            className={`\n              pointer-events-none absolute inset-0 z-20 rounded-lg\n              bg-gradient-to-r from-blue-500/20 via-purple-500/20 to-blue-500/20\n              transition-all duration-500 ease-in-out\n              ${isSearching && hasValue ? 'opacity-100 blur-sm' : 'opacity-0 blur-none'}\n            `}\n          />\n\n          {/* Animated loading indicator */}\n          <div\n            className={`\n              absolute right-3 top-1/2 z-20 -translate-y-1/2\n              transition-all duration-500 ease-in-out\n              ${isSearching && hasValue ? 'scale-100 opacity-100' : 'scale-0 opacity-0'}\n            `}\n          >\n            <div className=\"relative h-2 w-2\">\n              <div className=\"absolute inset-0 animate-ping rounded-full bg-blue-500/60\" />\n              <div className=\"absolute inset-0 rounded-full bg-blue-500\" />\n            </div>\n          </div>\n        </div>\n      </div>\n\n      {/* Outer glow effect */}\n      <div\n        className={`\n          absolute -inset-8 -z-10\n          transition-all duration-700 ease-in-out\n          ${isSearching && hasValue ? 'scale-105 opacity-100' : 'scale-100 opacity-0'}\n        `}\n      >\n        <div className=\"absolute inset-0\">\n          <div\n            className={`\n              bg-gradient-radial absolute inset-0 from-blue-500/10 to-transparent\n              transition-opacity duration-700 ease-in-out\n              ${isSearching && hasValue ? 'animate-pulse-slow opacity-100' : 'opacity-0'}\n            `}\n          />\n          <div\n            className={`\n              absolute inset-0 bg-gradient-to-r from-purple-500/5 via-blue-500/5 to-purple-500/5\n              blur-xl transition-all duration-700 ease-in-out\n              ${isSearching && hasValue ? 'animate-gradient-x opacity-100' : 'opacity-0'}\n            `}\n          />\n        </div>\n      </div>\n      <div\n        className={`\n          absolute inset-0 -z-20 scale-100 bg-gradient-to-r from-blue-500/10 \n          via-purple-500/10 to-blue-500/10 opacity-0 blur-xl\n          transition-all duration-500 ease-in-out\n          peer-focus:scale-105 peer-focus:opacity-100\n        `}\n      />\n    </div>\n  );\n};\n\nexport default AnimatedSearchInput;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Badge.tsx",
    "content": "import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\nimport { cn } from \"~/utils\"\n\nconst badgeVariants = cva(\n    \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n    {\n        variants: {\n            variant: {\n                default:\n                    \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n                secondary:\n                    \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n                destructive:\n                    \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n                outline: \"text-foreground\",\n                gray: \"bg-[#E8EBF2] text-[#61646D] px-1 py-[1px]\"\n            },\n        },\n        defaultVariants: {\n            variant: \"default\",\n        },\n    }\n)\n\nexport interface BadgeProps\n    extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> { }\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n    return (\n        <div className={cn(badgeVariants({ variant }), className)} {...props} />\n    )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Breadcrumb.tsx",
    "content": "import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\n\nimport { cn } from '~/utils';\n\nconst Breadcrumb = React.forwardRef<\n  HTMLElement,\n  React.ComponentPropsWithoutRef<'nav'> & {\n    separator?: React.ReactNode;\n  }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = 'Breadcrumb';\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n  ({ className, ...props }, ref) => (\n    <ol\n      ref={ref}\n      className={cn(\n        'text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm sm:gap-2.5',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nBreadcrumbList.displayName = 'BreadcrumbList';\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n  ({ className, ...props }, ref) => (\n    <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />\n  ),\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\nconst BreadcrumbLink = React.forwardRef<\n  HTMLAnchorElement,\n  React.ComponentPropsWithoutRef<'a'> & {\n    asChild?: boolean;\n  }\n>(({ asChild, className, ...props }, ref) => {\n  const Comp = asChild ? Slot : 'a';\n\n  return (\n    <Comp\n      ref={ref}\n      className={cn('hover:text-foreground transition-colors', className)}\n      {...props}\n    />\n  );\n});\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n  ({ className, ...props }, ref) => (\n    <span\n      ref={ref}\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      className={cn('text-foreground font-normal', className)}\n      {...props}\n    />\n  ),\n);\nBreadcrumbPage.displayName = 'BreadcrumbPage';\n\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n  <li\n    role=\"presentation\"\n    aria-hidden=\"true\"\n    className={cn('[&>svg]:size-3.5', className)}\n    {...props}\n  >\n    {children ?? <ChevronRight />}\n  </li>\n);\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n  <span\n    role=\"presentation\"\n    aria-hidden=\"true\"\n    className={cn('flex h-9 w-9 items-center justify-center', className)}\n    {...props}\n  >\n    <MoreHorizontal className=\"h-4 w-4\" />\n    <span className=\"sr-only\">More</span>\n  </span>\n);\nBreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Button.tsx",
    "content": "import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '~/utils';\n\nconst buttonVariants = cva(\n  'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n        destructive:\n          'bg-surface-destructive text-destructive-foreground hover:bg-surface-destructive-hover',\n        outline:\n          'text-text-primary border border-border-light bg-background hover:bg-accent hover:text-accent-foreground',\n        secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n        ghost: 'hover:bg-accent hover:text-accent-foreground',\n        link: 'text-primary underline-offset-4 hover:underline',\n        // hardcoded text color because of WCAG contrast issues (text-white)\n        submit: 'bg-surface-submit text-white hover:bg-surface-submit-hover',\n      },\n      size: {\n        default: 'h-9 px-4 py-2',\n        sm: 'h-9 rounded-lg px-3',\n        lg: 'h-11 rounded-lg px-8',\n        icon: 'size-9',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'button';\n    return (\n      <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n    );\n  },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Card.tsx",
    "content": "import * as React from \"react\"\nimport { cn } from \"~/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card\"\n            className={cn(\n                \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-header\"\n            className={cn(\n                \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-title\"\n            className={cn(\"leading-none font-semibold\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-description\"\n            className={cn(\"text-muted-foreground text-sm\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-action\"\n            className={cn(\n                \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-content\"\n            className={cn(\"px-6\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"card-footer\"\n            className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n            {...props}\n        />\n    )\n}\n\nexport {\n    Card,\n    CardHeader,\n    CardFooter,\n    CardTitle,\n    CardAction,\n    CardDescription,\n    CardContent,\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Checkbox.tsx",
    "content": "import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils';\n\nconst Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className = '', ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      'peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n      className,\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center')}>\n      <Check className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Collapsible.tsx",
    "content": "import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Combobox.tsx",
    "content": "import { startTransition } from 'react';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as RadixSelect from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon } from '@radix-ui/react-icons';\nimport {\n  Combobox,\n  ComboboxItem,\n  ComboboxList,\n  ComboboxProvider,\n  ComboboxCancel,\n} from '@ariakit/react';\nimport type { OptionWithIcon } from '~/common';\nimport { SelectTrigger, SelectValue, SelectScrollDownButton } from './Select';\nimport useCombobox from '~/hooks/Input/useCombobox';\nimport { cn } from '~/utils';\n\nexport default function ComboboxComponent({\n  selectedValue,\n  displayValue,\n  items,\n  setValue,\n  ariaLabel,\n  searchPlaceholder,\n  selectPlaceholder,\n  isCollapsed,\n  SelectIcon,\n}: {\n  ariaLabel: string;\n  displayValue?: string;\n  selectedValue: string;\n  searchPlaceholder?: string;\n  selectPlaceholder?: string;\n  items: OptionWithIcon[] | string[];\n  setValue: (value: string) => void;\n  isCollapsed: boolean;\n  SelectIcon?: React.ReactNode;\n}) {\n  const options: OptionWithIcon[] = (items ?? []).map((option: string | OptionWithIcon) => {\n    if (typeof option === 'string') {\n      return { label: option, value: option };\n    }\n    return option;\n  });\n\n  const { open, setOpen, setSearchValue, matches } = useCombobox({\n    value: selectedValue,\n    options,\n  });\n\n  return (\n    <RadixSelect.Root\n      value={selectedValue}\n      onValueChange={setValue}\n      open={open}\n      /** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658  */\n      onOpenChange={() => {\n        if (open === true) {\n          setOpen(false);\n          return;\n        }\n        setTimeout(() => {\n          setOpen(!open);\n        }, 75);\n      }}\n    >\n      <ComboboxProvider\n        open={open}\n        setOpen={setOpen}\n        resetValueOnHide\n        includesBaseElement={false}\n        setValue={(value) => {\n          startTransition(() => {\n            setSearchValue(value);\n          });\n        }}\n      >\n        <SelectTrigger\n          aria-label={ariaLabel}\n          className={cn(\n            'flex items-center gap-2 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0',\n            isCollapsed\n              ? 'flex h-9 w-9 shrink-0 items-center justify-center p-0 [&>span]:w-auto [&>svg]:hidden'\n              : '',\n            'bg-white text-black hover:bg-gray-50 focus-visible:ring-2 focus-visible:ring-gray-500 dark:bg-gray-850 dark:text-white ',\n          )}\n        >\n          <SelectValue placeholder={selectPlaceholder}>\n            <div className=\"assistant-item flex items-center justify-center overflow-hidden rounded-full\">\n              {SelectIcon ? SelectIcon : <ChevronDownIcon />}\n            </div>\n            <span\n              className={cn('ml-2', isCollapsed ? 'hidden' : '')}\n              style={{ userSelect: 'none' }}\n            >\n              {selectedValue\n                ? displayValue ?? selectedValue\n                : selectPlaceholder && selectPlaceholder}\n            </span>\n          </SelectValue>\n        </SelectTrigger>\n        <RadixSelect.Portal>\n          <RadixSelect.Content\n            role=\"dialog\"\n            aria-label={ariaLabel + 's'}\n            position=\"popper\"\n            className={cn(\n              'bg-popover text-popover-foreground relative z-50 max-h-[52vh] min-w-[8rem] overflow-hidden rounded-md border border-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-600',\n              'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n              'bg-white dark:bg-gray-700',\n            )}\n          >\n            <RadixSelect.Viewport className=\"mb-5 h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\">\n              <div className=\"group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-white px-2 px-3 py-2 text-black duration-300 dark:bg-gray-700 dark:text-white\">\n                <SearchIcon className=\"h-4 w-4 text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300\" />\n                <Combobox\n                  autoSelect\n                  placeholder={searchPlaceholder}\n                  className=\"flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-gray-700/10 dark:focus:ring-gray-200/10\"\n                  // Ariakit's Combobox manually triggers a blur event on virtually\n                  // blurred items, making them work as if they had actual DOM\n                  // focus. These blur events might happen after the corresponding\n                  // focus events in the capture phase, leading Radix Select to\n                  // close the popover. This happens because Radix Select relies on\n                  // the order of these captured events to discern if the focus was\n                  // outside the element. Since we don't have access to the\n                  // onInteractOutside prop in the Radix SelectContent component to\n                  // stop this behavior, we can turn off Ariakit's behavior here.\n                  onBlurCapture={(event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                  }}\n                />\n                <ComboboxCancel\n                  hideWhenEmpty={true}\n                  className=\"relative flex h-5 w-5 items-center justify-end text-gray-500 transition-colors duration-300 dark:group-focus-within:text-gray-300 dark:group-hover:text-gray-300\"\n                />\n              </div>\n              <ComboboxList className=\"overflow-y-auto p-1 py-2\">\n                {matches.map(({ label, value, icon }) => (\n                  <RadixSelect.Item key={value} value={`${value ?? ''}`} asChild>\n                    <ComboboxItem\n                      className={cn(\n                        'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n                        'rounded-lg hover:bg-gray-100/50 hover:bg-gray-50 dark:text-white dark:hover:bg-gray-600',\n                      )}\n                      /** Hacky fix for radix-ui Android issue: https://github.com/radix-ui/primitives/issues/1658  */\n                      onTouchEnd={() => {\n                        setValue(`${value ?? ''}`);\n                        setOpen(false);\n                      }}\n                    >\n                      <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n                        <RadixSelect.ItemIndicator>\n                          <CheckIcon className=\"h-4 w-4\" />\n                        </RadixSelect.ItemIndicator>\n                      </span>\n                      <RadixSelect.ItemText>\n                        <div className=\"[&_svg]:text-foreground flex items-center justify-center gap-3 dark:text-white [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0\">\n                          <div className=\"assistant-item overflow-hidden rounded-full \">\n                            {icon && icon}\n                          </div>\n                          {label}\n                        </div>\n                      </RadixSelect.ItemText>\n                    </ComboboxItem>\n                  </RadixSelect.Item>\n                ))}\n              </ComboboxList>\n            </RadixSelect.Viewport>\n            <SelectScrollDownButton className=\"absolute bottom-0 left-0 right-0\" />\n          </RadixSelect.Content>\n        </RadixSelect.Portal>\n      </ComboboxProvider>\n    </RadixSelect.Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/ControlCombobox.tsx",
    "content": "import * as Ariakit from '@ariakit/react';\nimport { matchSorter } from 'match-sorter';\nimport { Search, ChevronDown } from 'lucide-react';\nimport { useMemo, useState, useRef, memo, useEffect } from 'react';\nimport { SelectRenderer } from '@ariakit/react-core/select/select-renderer';\nimport type { OptionWithIcon } from '~/common';\nimport { cn } from '~/utils';\n\ninterface ControlComboboxProps {\n  selectedValue: string;\n  displayValue?: string;\n  items: OptionWithIcon[];\n  setValue: (value: string) => void;\n  ariaLabel: string;\n  searchPlaceholder?: string;\n  selectPlaceholder?: string;\n  isCollapsed: boolean;\n  SelectIcon?: React.ReactNode;\n  containerClassName?: string;\n  iconClassName?: string;\n  showCarat?: boolean;\n  className?: string;\n  disabled?: boolean;\n  iconSide?: 'left' | 'right';\n  selectId?: string;\n}\n\nconst ROW_HEIGHT = 36;\n\nfunction ControlCombobox({\n  selectedValue,\n  displayValue,\n  items,\n  setValue,\n  ariaLabel,\n  searchPlaceholder,\n  selectPlaceholder,\n  containerClassName,\n  isCollapsed,\n  SelectIcon,\n  showCarat,\n  className,\n  disabled,\n  iconClassName,\n  iconSide = 'left',\n  selectId,\n}: ControlComboboxProps) {\n  const [searchValue, setSearchValue] = useState('');\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const [buttonWidth, setButtonWidth] = useState<number | null>(null);\n\n  const getItem = (option: OptionWithIcon) => ({\n    id: `item-${option.value}`,\n    value: option.value as string | undefined,\n    label: option.label,\n    icon: option.icon,\n  });\n\n  const combobox = Ariakit.useComboboxStore({\n    defaultItems: items.map(getItem),\n    resetValueOnHide: true,\n    value: searchValue,\n    setValue: setSearchValue,\n  });\n\n  const select = Ariakit.useSelectStore({\n    combobox,\n    defaultItems: items.map(getItem),\n    value: selectedValue,\n    setValue,\n  });\n\n  const matches = useMemo(() => {\n    const filteredItems = matchSorter(items, searchValue, {\n      keys: ['value', 'label'],\n      baseSort: (a, b) => (a.index < b.index ? -1 : 1),\n    });\n    return filteredItems.map(getItem);\n  }, [searchValue, items]);\n\n  useEffect(() => {\n    if (buttonRef.current && !isCollapsed) {\n      setButtonWidth(buttonRef.current.offsetWidth);\n    }\n  }, [isCollapsed]);\n\n  const selectIconClassName = cn(\n    'flex h-5 w-5 items-center justify-center overflow-hidden rounded-full',\n    iconClassName,\n  );\n  const optionIconClassName = cn(\n    'mr-2 flex h-5 w-5 items-center justify-center overflow-hidden rounded-full',\n    iconClassName,\n  );\n\n  return (\n    <div className={cn('flex w-full items-center justify-center px-1', containerClassName)}>\n      <Ariakit.SelectLabel store={select} className=\"sr-only\">\n        {ariaLabel}\n      </Ariakit.SelectLabel>\n      <Ariakit.Select\n        ref={buttonRef}\n        store={select}\n        id={selectId}\n        disabled={disabled}\n        className={cn(\n          'flex items-center justify-center gap-2 rounded-full bg-surface-secondary',\n          'text-text-primary hover:bg-surface-tertiary',\n          'border border-border-light',\n          isCollapsed ? 'h-10 w-10' : 'h-10 w-full rounded-md px-3 py-2 text-sm',\n          className,\n        )}\n      >\n        {SelectIcon != null && iconSide === 'left' && (\n          <div className={selectIconClassName}>{SelectIcon}</div>\n        )}\n        {!isCollapsed && (\n          <>\n            <span className=\"flex-grow truncate text-left\">\n              {displayValue != null\n                ? displayValue || selectPlaceholder\n                : selectedValue || selectPlaceholder}\n            </span>\n            {SelectIcon != null && iconSide === 'right' && (\n              <div className={selectIconClassName}>{SelectIcon}</div>\n            )}\n            {showCarat && <ChevronDown className=\"h-4 w-4 text-text-secondary\" />}\n          </>\n        )}\n      </Ariakit.Select>\n      <Ariakit.SelectPopover\n        store={select}\n        gutter={4}\n        portal\n        className=\"z-50 overflow-hidden rounded-md border border-border-light bg-surface-secondary shadow-lg\"\n        style={{ width: isCollapsed ? '300px' : (buttonWidth ?? '300px') }}\n      >\n        <div className=\"p-2\">\n          <div className=\"relative\">\n            <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-primary\" />\n            <Ariakit.Combobox\n              store={combobox}\n              autoSelect\n              placeholder={searchPlaceholder}\n              className=\"w-full rounded-md border border-border-light bg-surface-tertiary py-2 pl-9 pr-3 text-sm text-text-primary focus:outline-none\"\n            />\n          </div>\n        </div>\n        <div className=\"max-h-[300px] overflow-auto\">\n          <Ariakit.ComboboxList store={combobox}>\n            <SelectRenderer store={select} items={matches} itemSize={ROW_HEIGHT} overscan={5}>\n              {({ value, icon, label, ...item }) => (\n                <Ariakit.ComboboxItem\n                  key={item.id}\n                  {...item}\n                  className={cn(\n                    'flex w-full cursor-pointer items-center px-3 text-sm',\n                    'text-text-primary hover:bg-surface-tertiary',\n                    'data-[active-item]:bg-surface-tertiary',\n                  )}\n                  render={<Ariakit.SelectItem value={value} />}\n                >\n                  {icon != null && iconSide === 'left' && (\n                    <div className={optionIconClassName}>{icon}</div>\n                  )}\n                  <span className=\"flex-grow truncate text-left\">{label}</span>\n                  {icon != null && iconSide === 'right' && (\n                    <div className={optionIconClassName}>{icon}</div>\n                  )}\n                </Ariakit.ComboboxItem>\n              )}\n            </SelectRenderer>\n          </Ariakit.ComboboxList>\n        </div>\n      </Ariakit.SelectPopover>\n    </div>\n  );\n}\n\nexport default memo(ControlCombobox);\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DataTable.tsx",
    "content": "import React, { useCallback, useEffect, useRef, useState, memo, useMemo } from 'react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n  Row,\n  ColumnDef,\n  flexRender,\n  SortingState,\n  useReactTable,\n  getCoreRowModel,\n  VisibilityState,\n  getSortedRowModel,\n  ColumnFiltersState,\n  getFilteredRowModel,\n} from '@tanstack/react-table';\nimport type { Table as TTable } from '@tanstack/react-table';\nimport {\n  Button,\n  Table,\n  Checkbox,\n  TableRow,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  AnimatedSearchInput,\n} from './';\nimport { TrashIcon, Spinner } from '~/components/svg';\nimport { useLocalize, useMediaQuery } from '~/hooks';\nimport { cn } from '~/utils';\nimport { LocalizeFunction } from '~/common';\n\ntype TableColumn<TData, TValue> = ColumnDef<TData, TValue> & {\n  meta?: {\n    size?: string | number;\n    mobileSize?: string | number;\n    minWidth?: string | number;\n  };\n};\n\nconst SelectionCheckbox = memo(\n  ({\n    checked,\n    onChange,\n    ariaLabel,\n  }: {\n    checked: boolean;\n    onChange: (value: boolean) => void;\n    ariaLabel: string;\n  }) => (\n    <div\n      role=\"button\"\n      tabIndex={0}\n      onKeyDown={(e) => e.stopPropagation()}\n      className=\"flex h-full w-[30px] items-center justify-center\"\n      onClick={(e) => e.stopPropagation()}\n    >\n      <Checkbox checked={checked} onCheckedChange={onChange} aria-label={ariaLabel} />\n    </div>\n  ),\n);\n\nSelectionCheckbox.displayName = 'SelectionCheckbox';\n\ninterface DataTableProps<TData, TValue> {\n  columns: TableColumn<TData, TValue>[];\n  data: TData[];\n  onDelete?: (selectedRows: TData[]) => Promise<void>;\n  filterColumn?: string;\n  defaultSort?: SortingState;\n  columnVisibilityMap?: Record<string, string>;\n  className?: string;\n  pageSize?: number;\n  isFetchingNextPage?: boolean;\n  hasNextPage?: boolean;\n  fetchNextPage?: (options?: unknown) => Promise<unknown>;\n  enableRowSelection?: boolean;\n  showCheckboxes?: boolean;\n  onFilterChange?: (value: string) => void;\n  filterValue?: string;\n}\n\nconst TableRowComponent = <TData, TValue>({\n  row,\n  isSmallScreen,\n  onSelectionChange,\n  index,\n  isSearching,\n}: {\n  row: Row<TData>;\n  isSmallScreen: boolean;\n  onSelectionChange?: (rowId: string, selected: boolean) => void;\n  index: number;\n  isSearching: boolean;\n}) => {\n  const handleSelection = useCallback(\n    (value: boolean) => {\n      row.toggleSelected(value);\n      onSelectionChange?.(row.id, value);\n    },\n    [row, onSelectionChange],\n  );\n\n  return (\n    <TableRow\n      data-state={row.getIsSelected() ? 'selected' : undefined}\n      className={`\n        motion-safe:animate-fadeIn border-b\n        border-border-light transition-all duration-300\n        ease-out\n        hover:bg-surface-secondary\n        ${isSearching ? 'opacity-50' : 'opacity-100'}\n        ${isSearching ? 'scale-98' : 'scale-100'}\n      `}\n      style={{\n        animationDelay: `${index * 20}ms`,\n        transform: `translateY(${isSearching ? '4px' : '0'})`,\n      }}\n    >\n      {row.getVisibleCells().map((cell) => {\n        if (cell.column.id === 'select') {\n          return (\n            <TableCell key={cell.id} className=\"px-2 py-1 transition-all duration-300\">\n              <SelectionCheckbox\n                checked={row.getIsSelected()}\n                onChange={handleSelection}\n                ariaLabel=\"Select row\"\n              />\n            </TableCell>\n          );\n        }\n\n        return (\n          <TableCell\n            key={cell.id}\n            className={`\n              w-0 max-w-0 px-2 py-1 align-middle text-xs\n              transition-all duration-300 sm:px-4\n              sm:py-2 sm:text-sm\n              ${isSearching ? 'blur-[0.3px]' : 'blur-0'}\n            `}\n            style={getColumnStyle(\n              cell.column.columnDef as TableColumn<TData, TValue>,\n              isSmallScreen,\n            )}\n          >\n            <div className=\"overflow-hidden text-ellipsis\">\n              {flexRender(cell.column.columnDef.cell, cell.getContext())}\n            </div>\n          </TableCell>\n        );\n      })}\n    </TableRow>\n  );\n};\n\nconst MemoizedTableRow = memo(TableRowComponent) as typeof TableRowComponent;\n\nfunction getColumnStyle<TData, TValue>(\n  column: TableColumn<TData, TValue>,\n  isSmallScreen: boolean,\n): React.CSSProperties {\n  return {\n    width: isSmallScreen ? column.meta?.mobileSize : column.meta?.size,\n    minWidth: column.meta?.minWidth,\n    maxWidth: column.meta?.size,\n  };\n}\n\nconst DeleteButton = memo(\n  ({\n    onDelete,\n    isDeleting,\n    disabled,\n    isSmallScreen,\n    localize,\n  }: {\n    onDelete?: () => Promise<void>;\n    isDeleting: boolean;\n    disabled: boolean;\n    isSmallScreen: boolean;\n    localize:LocalizeFunction;\n  }) => {\n    if (!onDelete) {\n      return null;\n    }\n    return (\n      <Button\n        variant=\"outline\"\n        onClick={onDelete}\n        disabled={disabled}\n        className={cn('min-w-[40px] transition-all duration-200', isSmallScreen && 'px-2 py-1')}\n      >\n        {isDeleting ? (\n          <Spinner className=\"size-4\" />\n        ) : (\n          <>\n            <TrashIcon className=\"size-3.5 text-red-400 sm:size-4\" />\n            {!isSmallScreen && <span className=\"ml-2\">{localize('com_ui_delete')}</span>}\n          </>\n        )}\n      </Button>\n    );\n  },\n);\n\nexport default function DataTable<TData, TValue>({\n  columns,\n  data,\n  onDelete,\n  filterColumn,\n  defaultSort = [],\n  className = '',\n  isFetchingNextPage = false,\n  hasNextPage = false,\n  fetchNextPage,\n  enableRowSelection = true,\n  showCheckboxes = true,\n  onFilterChange,\n  filterValue,\n}: DataTableProps<TData, TValue>) {\n  const localize = useLocalize();\n  const isSmallScreen = useMediaQuery('(max-width: 768px)');\n  const tableContainerRef = useRef<HTMLDivElement>(null);\n  const [isDeleting, setIsDeleting] = useState(false);\n\n  const [rowSelection, setRowSelection] = useState<Record<string, boolean>>({});\n  const [sorting, setSorting] = useState<SortingState>(defaultSort);\n  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n  const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n  const [searchTerm, setSearchTerm] = useState(filterValue ?? '');\n  const [isSearching, setIsSearching] = useState(false);\n\n  const tableColumns = useMemo(() => {\n    if (!enableRowSelection || !showCheckboxes) {\n      return columns;\n    }\n    const selectColumn = {\n      id: 'select',\n      header: ({ table }: { table: TTable<TData> }) => (\n        <div className=\"flex h-full w-[30px] items-center justify-center\">\n          <Checkbox\n            checked={table.getIsAllPageRowsSelected()}\n            onCheckedChange={(value) => table.toggleAllPageRowsSelected(Boolean(value))}\n            aria-label=\"Select all\"\n          />\n        </div>\n      ),\n      cell: ({ row }: { row: Row<TData> }) => (\n        <SelectionCheckbox\n          checked={row.getIsSelected()}\n          onChange={(value) => row.toggleSelected(value)}\n          ariaLabel=\"Select row\"\n        />\n      ),\n      meta: { size: '50px' },\n    };\n    return [selectColumn, ...columns];\n  }, [columns, enableRowSelection, showCheckboxes]);\n\n  const table = useReactTable({\n    data,\n    columns: tableColumns,\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    enableRowSelection,\n    enableMultiRowSelection: true,\n    state: {\n      sorting,\n      columnFilters,\n      columnVisibility,\n      rowSelection,\n    },\n    onSortingChange: setSorting,\n    onColumnFiltersChange: setColumnFilters,\n    onColumnVisibilityChange: setColumnVisibility,\n    onRowSelectionChange: setRowSelection,\n  });\n\n  const { rows } = table.getRowModel();\n\n  const rowVirtualizer = useVirtualizer({\n    count: rows.length,\n    getScrollElement: () => tableContainerRef.current,\n    estimateSize: useCallback(() => 48, []),\n    overscan: 10,\n  });\n\n  const virtualRows = rowVirtualizer.getVirtualItems();\n  const totalSize = rowVirtualizer.getTotalSize();\n  const paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n  const paddingBottom =\n    virtualRows.length > 0 ? totalSize - virtualRows[virtualRows.length - 1].end : 0;\n\n  useEffect(() => {\n    const scrollElement = tableContainerRef.current;\n    if (!scrollElement) {\n      return;\n    }\n\n    const handleScroll = async () => {\n      if (!hasNextPage || isFetchingNextPage) {\n        return;\n      }\n      const { scrollTop, scrollHeight, clientHeight } = scrollElement;\n      if (scrollHeight - scrollTop <= clientHeight * 1.5) {\n        try {\n          // Safely fetch next page without breaking if lastPage is undefined\n          await fetchNextPage?.();\n        } catch (error) {\n          console.error('Unable to fetch next page:', error);\n        }\n      }\n    };\n\n    scrollElement.addEventListener('scroll', handleScroll, { passive: true });\n    return () => scrollElement.removeEventListener('scroll', handleScroll);\n  }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n  useEffect(() => {\n    setIsSearching(true);\n    const timeout = setTimeout(() => {\n      onFilterChange?.(searchTerm);\n      setIsSearching(false);\n    }, 300);\n    return () => clearTimeout(timeout);\n  }, [searchTerm, onFilterChange]);\n\n  const handleDelete = useCallback(async () => {\n    if (!onDelete) {\n      return;\n    }\n\n    setIsDeleting(true);\n    try {\n      const itemsToDelete = table.getFilteredSelectedRowModel().rows.map((r) => r.original);\n      await onDelete(itemsToDelete);\n      setRowSelection({});\n      // await fetchNextPage?.({ pageParam: lastPage?.nextCursor });\n    } finally {\n      setIsDeleting(false);\n    }\n  }, [onDelete, table]);\n\n  return (\n    <div className={cn('flex h-full flex-col gap-4', className)}>\n      {/* Table controls */}\n      <div className=\"flex flex-wrap items-center gap-2 py-2 sm:gap-4 sm:py-4\">\n        {enableRowSelection && showCheckboxes && (\n          <DeleteButton\n            onDelete={handleDelete}\n            isDeleting={isDeleting}\n            disabled={!table.getFilteredSelectedRowModel().rows.length || isDeleting}\n            isSmallScreen={isSmallScreen}\n            localize={localize}\n          />\n        )}\n        {filterColumn !== undefined && table.getColumn(filterColumn) && (\n          <div className=\"relative flex-1\">\n            <AnimatedSearchInput\n              value={searchTerm}\n              onChange={(e) => setSearchTerm(e.target.value)}\n              isSearching={isSearching}\n              placeholder={`${localize('com_ui_search')}...`}\n            />\n          </div>\n        )}\n      </div>\n\n      {/* Virtualized table */}\n      <div\n        ref={tableContainerRef}\n        className={cn(\n          'relative h-[calc(100vh-20rem)] max-w-full overflow-x-auto overflow-y-auto rounded-md border border-black/10 dark:border-white/10',\n          'transition-all duration-300 ease-out',\n          isSearching && 'bg-surface-secondary/50',\n          className,\n        )}\n      >\n        <Table className=\"w-full min-w-[300px] table-fixed border-separate border-spacing-0\">\n          <TableHeader className=\"sticky top-0 z-50 bg-surface-secondary\">\n            {table.getHeaderGroups().map((headerGroup) => (\n              <TableRow key={headerGroup.id} className=\"border-b border-border-light\">\n                {headerGroup.headers.map((header) => (\n                  <TableHead\n                    key={header.id}\n                    className=\"whitespace-nowrap bg-surface-secondary px-2 py-2 text-left text-sm font-medium text-text-secondary sm:px-4\"\n                    style={getColumnStyle(\n                      header.column.columnDef as TableColumn<TData, TValue>,\n                      isSmallScreen,\n                    )}\n                    onClick={\n                      header.column.getCanSort()\n                        ? header.column.getToggleSortingHandler()\n                        : undefined\n                    }\n                  >\n                    {header.isPlaceholder\n                      ? null\n                      : flexRender(header.column.columnDef.header, header.getContext())}\n                  </TableHead>\n                ))}\n              </TableRow>\n            ))}\n          </TableHeader>\n\n          <TableBody>\n            {paddingTop > 0 && (\n              <tr>\n                <td style={{ height: `${paddingTop}px` }} />\n              </tr>\n            )}\n\n            {virtualRows.map((virtualRow) => {\n              const row = rows[virtualRow.index];\n              return (\n                <MemoizedTableRow\n                  key={row.id}\n                  row={row}\n                  isSmallScreen={isSmallScreen}\n                  index={virtualRow.index}\n                  isSearching={isSearching}\n                />\n              );\n            })}\n\n            {!virtualRows.length && (\n              <TableRow className=\"hover:bg-transparent\">\n                <TableCell colSpan={columns.length} className=\"p-4 text-center\">\n                  {localize('com_ui_no_data')}\n                </TableCell>\n              </TableRow>\n            )}\n\n            {paddingBottom > 0 && (\n              <tr>\n                <td style={{ height: `${paddingBottom}px` }} />\n              </tr>\n            )}\n\n            {/* Loading indicator */}\n            {(isFetchingNextPage || hasNextPage) && (\n              <TableRow className=\"hover:bg-transparent\">\n                <TableCell colSpan={columns.length} className=\"p-4\">\n                  <div className=\"flex h-full items-center justify-center\">\n                    {isFetchingNextPage ? (\n                      <Spinner className=\"size-4\" />\n                    ) : (\n                      hasNextPage && <div className=\"h-6\" />\n                    )}\n                  </div>\n                </TableCell>\n              </TableRow>\n            )}\n          </TableBody>\n        </Table>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DataTableColumnHeader.tsx",
    "content": "import { ArrowDownIcon, ArrowUpIcon, CaretSortIcon, EyeNoneIcon } from '@radix-ui/react-icons';\nimport { Column } from '@tanstack/react-table';\n\nimport { cn } from '~/utils';\nimport { Button } from './Button';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from './DropdownMenu';\n\ninterface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n  column: Column<TData, TValue>;\n  title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n  column,\n  title,\n  className = '',\n}: DataTableColumnHeaderProps<TData, TValue>) {\n  if (!column.getCanSort()) {\n    return <div className={cn(className)}>{title}</div>;\n  }\n\n  return (\n    <div className={cn('flex items-center space-x-2', className)}>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"ghost\" size=\"sm\" className=\"data-[state=open]:bg-accent -ml-3 h-8\">\n            <span>{title}</span>\n            {column.getIsSorted() === 'desc' ? (\n              <ArrowDownIcon className=\"ml-2 h-4 w-4\" />\n            ) : column.getIsSorted() === 'asc' ? (\n              <ArrowUpIcon className=\"ml-2 h-4 w-4\" />\n            ) : (\n              <CaretSortIcon className=\"ml-2 h-4 w-4\" />\n            )}\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"start\" className=\"z-[1001]\">\n          <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n            <ArrowUpIcon className=\"text-muted-foreground/70 mr-2 h-3.5 w-3.5\" />\n            Asc\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n            <ArrowDownIcon className=\"text-muted-foreground/70 mr-2 h-3.5 w-3.5\" />\n            Desc\n          </DropdownMenuItem>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n            <EyeNoneIcon className=\"text-muted-foreground/70 mr-2 h-3.5 w-3.5\" />\n            Hide\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DelayedRender.tsx",
    "content": "import { useDelayedRender } from '~/hooks';\n\nconst DelayedRender = ({ delay, children }) => useDelayedRender(delay)(() => children);\n\nexport default DelayedRender;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Dialog.tsx",
    "content": "\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cn } from \"~/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/40  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, close = true, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background dark:bg-[#303134] p-5 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      {close && <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>}\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-base font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog, DialogClose,\n  DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger\n}\n\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DialogTemplate.spec.tsx",
    "content": "import 'test/matchMedia.mock';\nimport React from 'react';\nimport { render, fireEvent } from '@testing-library/react';\nimport '@testing-library/jest-dom/extend-expect';\nimport DialogTemplate from './DialogTemplate';\nimport { Dialog } from '@radix-ui/react-dialog';\nimport { RecoilRoot } from 'recoil';\n\ndescribe('DialogTemplate', () => {\n  let mockSelectHandler;\n\n  beforeEach(() => {\n    mockSelectHandler = jest.fn();\n  });\n\n  it('renders correctly with all props', () => {\n    const { getByText } = render(\n      <RecoilRoot>\n        <Dialog\n          open\n          data-testid=\"test-dialog\"\n          onOpenChange={() => {\n            return;\n          }}\n        >\n          <DialogTemplate\n            title=\"Test Dialog\"\n            description=\"Test Description\"\n            main={<div>Main Content</div>}\n            buttons={<button>Button</button>}\n            leftButtons={<button>Left Button</button>}\n            selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }}\n          />\n        </Dialog>\n      </RecoilRoot>,\n    );\n\n    expect(getByText('Test Dialog')).toBeInTheDocument();\n    expect(getByText('Test Description')).toBeInTheDocument();\n    expect(getByText('Main Content')).toBeInTheDocument();\n    expect(getByText('Button')).toBeInTheDocument();\n    expect(getByText('Left Button')).toBeInTheDocument();\n    expect(getByText('Cancel')).toBeInTheDocument();\n    expect(getByText('Select')).toBeInTheDocument();\n  });\n\n  it('renders correctly without optional props', () => {\n    const { queryByText } = render(\n      <RecoilRoot>\n        <Dialog\n          open\n          onOpenChange={() => {\n            return;\n          }}\n        ></Dialog>\n      </RecoilRoot>,\n    );\n\n    expect(queryByText('Test Dialog')).toBeNull();\n    expect(queryByText('Test Description')).not.toBeInTheDocument();\n    expect(queryByText('Main Content')).not.toBeInTheDocument();\n    expect(queryByText('Button')).not.toBeInTheDocument();\n    expect(queryByText('Left Button')).not.toBeInTheDocument();\n    expect(queryByText('Cancel')).not.toBeInTheDocument();\n    expect(queryByText('Select')).not.toBeInTheDocument();\n  });\n\n  it('calls selectHandler when the select button is clicked', () => {\n    const { getByText } = render(\n      <RecoilRoot>\n        <Dialog\n          open\n          onOpenChange={() => {\n            return;\n          }}\n        >\n          <DialogTemplate\n            title=\"Test Dialog\"\n            selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }}\n          />\n        </Dialog>\n      </RecoilRoot>,\n    );\n\n    fireEvent.click(getByText('Select'));\n\n    expect(mockSelectHandler).toHaveBeenCalled();\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DialogTemplate.tsx",
    "content": "import { forwardRef, ReactNode, Ref } from 'react';\nimport {\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from './';\nimport { cn } from '~/utils/';\nimport { useLocalize } from '~/hooks';\n\ntype SelectionProps = {\n  selectHandler?: () => void;\n  selectClasses?: string;\n  selectText?: string;\n};\n\ntype DialogTemplateProps = {\n  title: string;\n  description?: string;\n  main?: ReactNode;\n  buttons?: ReactNode;\n  leftButtons?: ReactNode;\n  selection?: SelectionProps;\n  className?: string;\n  headerClassName?: string;\n  footerClassName?: string;\n  showCloseButton?: boolean;\n  showCancelButton?: boolean;\n};\n\nconst DialogTemplate = forwardRef((props: DialogTemplateProps, ref: Ref<HTMLDivElement>) => {\n  const localize = useLocalize();\n  const {\n    title,\n    description,\n    main,\n    buttons,\n    leftButtons,\n    selection,\n    className,\n    headerClassName,\n    footerClassName,\n    showCloseButton,\n    showCancelButton = true,\n  } = props;\n  const { selectHandler, selectClasses, selectText } = selection || {};\n  const Cancel = localize('com_ui_cancel');\n\n  const defaultSelect =\n    'bg-gray-800 text-white transition-colors hover:bg-gray-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-gray-200';\n  return (\n    <DialogContent\n      showCloseButton={showCloseButton}\n      ref={ref}\n      className={cn('shadow-2xl dark:bg-gray-700', className || '')}\n      onClick={(e) => e.stopPropagation()}\n    >\n      <DialogHeader className={cn(headerClassName ?? '')}>\n        <DialogTitle className=\"text-lg font-medium leading-6 text-gray-800 dark:text-gray-200\">\n          {title}\n        </DialogTitle>\n        {description && (\n          <DialogDescription className=\"text-gray-600 dark:text-gray-300\">\n            {description}\n          </DialogDescription>\n        )}\n      </DialogHeader>\n      <div className=\"px-6\">{main ? main : null}</div>\n      <DialogFooter className={footerClassName}>\n        <div>{leftButtons ? leftButtons : null}</div>\n        <div className=\"flex h-auto gap-3\">\n          {showCancelButton && (\n            <DialogClose className=\"border-gray-100 hover:bg-gray-100 dark:border-gray-600 dark:hover:bg-gray-600\">\n              {Cancel}\n            </DialogClose>\n          )}\n          {buttons ? buttons : null}\n          {selection ? (\n            <DialogClose\n              onClick={selectHandler}\n              className={`${\n                selectClasses || defaultSelect\n              } inline-flex h-10 items-center justify-center rounded-lg border-none px-4 py-2 text-sm`}\n            >\n              {selectText}\n            </DialogClose>\n          ) : null}\n        </div>\n      </DialogFooter>\n    </DialogContent>\n  );\n});\n\nexport default DialogTemplate;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Dropdown.tsx",
    "content": "import React from 'react';\nimport * as Select from '@ariakit/react/select';\nimport type { Option } from '~/common';\nimport { cn } from '~/utils/';\n\ninterface DropdownProps {\n  value?: string;\n  label?: string;\n  onChange: (value: string) => void;\n  options: (string | Option | { divider: true })[];\n  className?: string;\n  sizeClasses?: string;\n  testId?: string;\n  icon?: React.ReactNode;\n  iconOnly?: boolean;\n  renderValue?: (option: Option) => React.ReactNode;\n  ariaLabel?: string;\n  portal?: boolean;\n}\n\nconst isDivider = (item: string | Option | { divider: true }): item is { divider: true } =>\n  typeof item === 'object' && 'divider' in item;\n\nconst isOption = (item: string | Option | { divider: true }): item is Option =>\n  typeof item === 'object' && 'value' in item && 'label' in item;\n\nconst Dropdown: React.FC<DropdownProps> = ({\n  value: selectedValue,\n  label = '',\n  onChange,\n  options,\n  className = '',\n  sizeClasses,\n  testId = 'dropdown-menu',\n  icon,\n  iconOnly = false,\n  renderValue,\n  ariaLabel,\n  portal = true,\n}) => {\n  const handleChange = (value: string) => {\n    onChange(value);\n  };\n\n  const selectProps = Select.useSelectStore({\n    value: selectedValue,\n    setValue: handleChange,\n  });\n\n  const getOptionObject = (val: string | undefined): Option | undefined => {\n    if (val == null || val === '') {\n      return undefined;\n    }\n    return options\n      .filter((o) => !isDivider(o))\n      .map((o) => (typeof o === 'string' ? { value: o, label: o } : o))\n      .find((o) => isOption(o) && o.value === val) as Option | undefined;\n  };\n\n  const getOptionLabel = (currentValue: string | undefined) => {\n    if (currentValue == null || currentValue === '') {\n      return '';\n    }\n    const option = getOptionObject(currentValue);\n    return option ? option.label : currentValue;\n  };\n\n  return (\n    <div className={cn('relative', className)}>\n      <Select.Select\n        store={selectProps}\n        className={cn(\n          'focus:ring-offset-ring-offset relative inline-flex items-center justify-between rounded-lg border border-input bg-background px-3 py-2 text-sm text-text-primary transition-all duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus:ring-ring-primary',\n          iconOnly ? 'h-full w-10' : 'w-fit gap-2',\n          className,\n        )}\n        data-testid={testId}\n        aria-label={ariaLabel}\n      >\n        <div className=\"flex w-full items-center gap-2\">\n          {icon}\n          {!iconOnly && (\n            <span className=\"block truncate\">\n              {label}\n              {(() => {\n                const matchedOption = getOptionObject(selectedValue);\n                if (matchedOption && renderValue) {\n                  return renderValue(matchedOption);\n                }\n                return getOptionLabel(selectedValue);\n              })()}\n            </span>\n          )}\n        </div>\n        {!iconOnly && <Select.SelectArrow />}\n      </Select.Select>\n      <Select.SelectPopover\n        portal={portal}\n        store={selectProps}\n        className={cn('popover-ui', sizeClasses, className, 'max-h-[80vh] overflow-y-auto')}\n      >\n        {options.map((item, index) => {\n          if (isDivider(item)) {\n            return <div key={`divider-${index}`} className=\"my-1 border-t border-border-heavy\" />;\n          }\n\n          const option = typeof item === 'string' ? { value: item, label: item } : item;\n          if (!isOption(option)) {\n            return null;\n          }\n\n          return (\n            <Select.SelectItem\n              key={`option-${index}`}\n              value={String(option.value)}\n              className=\"select-item\"\n              data-theme={option.value}\n            >\n              <div className=\"flex w-full items-center gap-2\">\n                {option.icon != null && <span>{option.icon as React.ReactNode}</span>}\n                <span className=\"block truncate\">{option.label}</span>\n                {selectedValue === option.value && (\n                  <span className=\"ml-auto pl-2\">\n                    <svg\n                      width=\"24\"\n                      height=\"24\"\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      className=\"icon-md block group-hover:hidden\"\n                    >\n                      <path\n                        fillRule=\"evenodd\"\n                        clipRule=\"evenodd\"\n                        d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z\"\n                        fill=\"currentColor\"\n                      />\n                    </svg>\n                  </span>\n                )}\n              </div>\n            </Select.SelectItem>\n          );\n        })}\n      </Select.SelectPopover>\n    </div>\n  );\n};\n\nexport default Dropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DropdownMenu.tsx",
    "content": "import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\nimport { cn } from '~/utils';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean;\n  }\n>(({ className = '', inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-900 dark:data-[state=open]:bg-gray-900',\n      inset ? 'pl-8' : '',\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className = '', ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      'z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-100 bg-white p-1 text-gray-700 shadow-md animate-in slide-in-from-left-1 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400',\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className = '', sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        'z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-100 bg-white p-1 text-gray-700 shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400',\n        className,\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean;\n  }\n>(({ className = '', inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-900',\n      inset ? 'pl-8' : '',\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className = '', children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-900',\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className = '', children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      className,\n      'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm font-medium outline-none focus:bg-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800',\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean;\n  }\n>(({ className = '', inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      'px-2 py-1.5 text-sm font-semibold text-gray-900 dark:text-gray-300',\n      inset ? 'pl-8' : '',\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className = '', ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn('-mx-1 my-1 h-px bg-border-medium', className)}\n    {...props}\n  />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n  className = '',\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span className={cn('ml-auto text-xs tracking-widest text-gray-500', className)} {...props} />\n  );\n};\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DropdownNoState.tsx",
    "content": "import React, { FC } from 'react';\nimport {\n  Listbox,\n  ListboxButton,\n  ListboxOption,\n  ListboxOptions,\n  Transition,\n} from '@headlessui/react';\nimport { AnchorPropsWithSelection } from '@headlessui/react/dist/internal/floating';\nimport type { Option } from '~/common';\nimport { cn } from '~/utils/';\n\ninterface DropdownProps {\n  value?: string | Option;\n  label?: string;\n  onChange: (value: string | Option) => void;\n  options: (string | Option)[];\n  className?: string;\n  anchor?: AnchorPropsWithSelection;\n  sizeClasses?: string;\n  testId?: string;\n}\n\n/*\n * Mainly used for the Speech Voice Selection Dropdown\n */\n\nconst Dropdown: FC<DropdownProps> = ({\n  value,\n  label = '',\n  onChange,\n  options,\n  className = '',\n  anchor,\n  sizeClasses,\n  testId = 'dropdown-menu',\n}) => {\n  const getValue = (option?: string | Option) =>\n    typeof option === 'string' ? option : option?.value;\n\n  const getDisplay = (option?: string | Option) =>\n    typeof option === 'string' ? option : option?.label ?? option?.value;\n\n  const isEqual = (a: string | Option, b: string | Option): boolean => getValue(a) === getValue(b);\n\n  const selectedOption = options.find((option) => isEqual(option, value ?? '')) ?? value;\n\n  const handleChange = (newValue: string | Option) => {\n    onChange(newValue);\n  };\n\n  return (\n    <div className={cn('relative', className)}>\n      <Listbox value={selectedOption} onChange={handleChange}>\n        <div className={cn('relative', className)}>\n          <ListboxButton\n            data-testid={testId}\n            className={cn(\n              'relative inline-flex items-center justify-between rounded-md border-gray-50 bg-white py-2 pl-3 pr-8 text-black transition-all duration-100 ease-in-out hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:focus:ring-white dark:focus:ring-offset-gray-700',\n              'w-auto',\n              className,\n            )}\n            aria-label=\"Select an option\"\n          >\n            <span className=\"block truncate\">\n              {label}\n              {getDisplay(selectedOption)}\n            </span>\n            <span className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\">\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                fill=\"none\"\n                viewBox=\"0 0 24 24\"\n                strokeWidth=\"2\"\n                stroke=\"currentColor\"\n                className=\"h-4 w-5 rotate-0 transform text-black transition-transform duration-300 ease-in-out dark:text-gray-50\"\n              >\n                <polyline points=\"6 9 12 15 18 9\"></polyline>\n              </svg>\n            </span>\n          </ListboxButton>\n          <Transition\n            leave=\"transition ease-in duration-50\"\n            leaveFrom=\"opacity-100\"\n            leaveTo=\"opacity-0\"\n          >\n            <ListboxOptions\n              className={cn(\n                'absolute z-50 mt-1 flex flex-col items-start gap-1 overflow-auto rounded-lg border border-gray-300 bg-white p-1.5 text-gray-700 shadow-lg transition-opacity focus:outline-none dark:border-gray-600 dark:bg-gray-700 dark:text-white',\n                sizeClasses,\n                className,\n              )}\n              anchor={anchor}\n              aria-label=\"List of options\"\n            >\n              {options.map((item, index) => (\n                <ListboxOption\n                  key={index}\n                  value={item}\n                  className={cn(\n                    'relative cursor-pointer select-none rounded border-gray-300 bg-white py-2.5 pl-3 pr-3 text-sm text-gray-700 hover:bg-gray-100 dark:border-gray-300 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600',\n                  )}\n                  style={{ width: '100%' }}\n                  data-theme={getValue(item)}\n                >\n                  {({ selected }) => (\n                    <div className=\"flex w-full items-center justify-between\">\n                      <span className=\"block truncate\">{getDisplay(item)}</span>\n                      {selected && (\n                        <span className=\"ml-auto pl-2\">\n                          <svg\n                            width=\"24\"\n                            height=\"24\"\n                            viewBox=\"0 0 24 24\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                            className=\"icon-md block group-hover:hidden\"\n                          >\n                            <path\n                              fillRule=\"evenodd\"\n                              clipRule=\"evenodd\"\n                              d=\"M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM16.0755 7.93219C16.5272 8.25003 16.6356 8.87383 16.3178 9.32549L11.5678 16.0755C11.3931 16.3237 11.1152 16.4792 10.8123 16.4981C10.5093 16.517 10.2142 16.3973 10.0101 16.1727L7.51006 13.4227C7.13855 13.014 7.16867 12.3816 7.57733 12.0101C7.98598 11.6386 8.61843 11.6687 8.98994 12.0773L10.6504 13.9039L14.6822 8.17451C15 7.72284 15.6238 7.61436 16.0755 7.93219Z\"\n                              fill=\"currentColor\"\n                            />\n                          </svg>\n                        </span>\n                      )}\n                    </div>\n                  )}\n                </ListboxOption>\n              ))}\n            </ListboxOptions>\n          </Transition>\n        </div>\n      </Listbox>\n    </div>\n  );\n};\n\nexport default Dropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/DropdownPopup.tsx",
    "content": "import React from 'react';\nimport * as Ariakit from '@ariakit/react';\nimport type * as t from '~/common';\nimport { cn } from '~/utils';\n\ninterface DropdownProps {\n  keyPrefix?: string;\n  trigger: React.ReactNode;\n  items: t.MenuItemProps[];\n  isOpen: boolean;\n  setIsOpen: (isOpen: boolean) => void;\n  className?: string;\n  iconClassName?: string;\n  itemClassName?: string;\n  sameWidth?: boolean;\n  anchor?: { x: string; y: string };\n  gutter?: number;\n  modal?: boolean;\n  focusLoop?: boolean;\n  menuId: string;\n}\n\nconst DropdownPopup: React.FC<DropdownProps> = ({\n  keyPrefix,\n  trigger,\n  items,\n  isOpen,\n  setIsOpen,\n  menuId,\n  modal,\n  gutter = 8,\n  sameWidth,\n  className,\n  focusLoop,\n  iconClassName,\n  itemClassName,\n}) => {\n  const menu = Ariakit.useMenuStore({ open: isOpen, setOpen: setIsOpen, focusLoop });\n\n  return (\n    <Ariakit.MenuProvider store={menu}>\n      {trigger}\n      <Ariakit.Menu\n        id={menuId}\n        className={cn('popover-ui z-50', className)}\n        gutter={gutter}\n        modal={modal}\n        sameWidth={sameWidth}\n      >\n        {items\n          .filter((item) => item.show !== false)\n          .map((item, index) => {\n            if (item.separate === true) {\n              return <Ariakit.MenuSeparator key={index} className=\"my-1 h-px bg-white/10\" />;\n            }\n            return (\n              <Ariakit.MenuItem\n                key={`${keyPrefix ?? ''}${index}`}\n                id={item.id}\n                className={cn(\n                  'group flex w-full cursor-pointer items-center gap-2 rounded-lg px-3 py-3.5 text-sm text-text-primary outline-none transition-colors duration-200 hover:bg-surface-hover focus:bg-surface-hover md:px-2.5 md:py-2',\n                  itemClassName,\n                )}\n                disabled={item.disabled}\n                render={item.render}\n                ref={item.ref}\n                hideOnClick={item.hideOnClick}\n                onClick={(event) => {\n                  event.preventDefault();\n                  if (item.onClick) {\n                    item.onClick(event);\n                  }\n                  if (item.hideOnClick === false) {\n                    return;\n                  }\n                  menu.hide();\n                }}\n              >\n                {item.icon != null && (\n                  <span className={cn('mr-2 size-4', iconClassName)} aria-hidden=\"true\">\n                    {item.icon}\n                  </span>\n                )}\n                {item.label}\n                {item.kbd != null && (\n                  <kbd className=\"ml-auto hidden font-sans text-xs text-black/50 group-hover:inline group-focus:inline dark:text-white/50\">\n                    ⌘{item.kbd}\n                  </kbd>\n                )}\n              </Ariakit.MenuItem>\n            );\n          })}\n      </Ariakit.Menu>\n    </Ariakit.MenuProvider>\n  );\n};\n\nexport default DropdownPopup;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/FileUpload.tsx",
    "content": "import React, { forwardRef, useMemo } from 'react';\nimport { File_Accept } from '~/common';\n\ntype FileUploadProps = {\n  className?: string;\n  onClick?: () => void;\n  accept?: string;\n  children: React.ReactNode;\n  handleFileChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nconst FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(\n  ({ children, accept = '', handleFileChange }, ref) => {\n\n    const _accept = useMemo(() => {\n      return accept || File_Accept.Default\n    }, [accept])\n\n    return (\n      <>\n        {children}\n        <input\n          ref={ref}\n          // pdf、txt、docx、pptx、md、html、xls、xlsx、doc、ppt、png、jgp、jpeg、bmp\n          accept={_accept}\n          multiple\n          type=\"file\"\n          style={{ display: 'none' }}\n          onChange={handleFileChange}\n        />\n      </>\n    );\n  },\n);\n\nFileUpload.displayName = 'FileUpload';\n\nexport default FileUpload;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/HoverCard.tsx",
    "content": "import * as React from 'react';\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\n\nimport { cn } from '../../utils';\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardPortal = HoverCardPrimitive.Portal;\n\nconst HoverCardContent = React.forwardRef<\n  React.ElementRef<typeof HoverCardPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> & { disabled?: boolean }\n>(({ className = '', align = 'center', sideOffset = 6, disabled = false, ...props }, ref) => {\n  if (disabled) {\n    return null;\n  }\n\n  return (\n    <HoverCardPrimitive.Content\n      ref={ref}\n      align={align}\n      sideOffset={sideOffset}\n      className={cn(\n        'z-50 w-64 rounded-md border border-none bg-surface-tertiary p-4 shadow-md outline-none animate-in fade-in-0',\n        className,\n      )}\n      {...props}\n    />\n  );\n});\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent, HoverCardPortal };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Input.tsx",
    "content": "import { SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"~/utils\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ className, ...props }, ref) => {\n    return (\n      <input\n        className={cn(\n          \"flex h-10 w-full rounded-lg border border-input bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n          className ?? \"\"\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\n\nInput.displayName = \"Input\";\n\nconst SearchInput = React.forwardRef<\n  HTMLInputElement,\n  InputProps & { inputClassName?: string; iconClassName?: string }\n>(({ className, inputClassName, iconClassName, ...props }, ref) => {\n  return (\n    <div className={cn(\"relative\", className)}>\n      <SearchIcon\n        className={cn(\n          \"h-5 w-5 absolute left-2 top-2 text-gray-950 dark:text-gray-500 z-10\",\n          iconClassName\n        )}\n      />\n      <Input\n        type=\"text\"\n        ref={ref}\n        className={cn(\"pl-8 bg-search-input\", inputClassName)}\n        {...props}\n      ></Input>\n    </div>\n  );\n});\n\nSearchInput.displayName = \"SearchInput\";\n\nexport { Input, SearchInput };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/InputCombobox.tsx",
    "content": "import React from 'react';\nimport * as Ariakit from '@ariakit/react';\nimport type { OptionWithIcon } from '~/common';\nimport { cn } from '~/utils';\n\ntype ComboboxProps = {\n  label?: string;\n  placeholder?: string;\n  options: OptionWithIcon[] | string[];\n  className?: string;\n  labelClassName?: string;\n  value: string;\n  onChange: (value: string) => void;\n  onBlur: () => void;\n};\n\nexport const InputCombobox: React.FC<ComboboxProps> = ({\n  label,\n  labelClassName,\n  placeholder = 'Select an option',\n  options,\n  className,\n  value,\n  onChange,\n  onBlur,\n}) => {\n  const isOptionObject = (option: unknown): option is OptionWithIcon => {\n    return option != null && typeof option === 'object' && 'value' in option;\n  };\n\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [inputValue, setInputValue] = React.useState(value);\n  const [isKeyboardFocus, setIsKeyboardFocus] = React.useState(false);\n\n  React.useEffect(() => {\n    setInputValue(value);\n  }, [value]);\n\n  const handleChange = (newValue: string) => {\n    setInputValue(newValue);\n    onChange(newValue);\n  };\n\n  return (\n    <Ariakit.ComboboxProvider value={inputValue} setValue={handleChange}>\n      {label != null && (\n        <Ariakit.ComboboxLabel\n          className={cn('mb-2 block text-sm font-medium text-text-primary', labelClassName ?? '')}\n        >\n          {label}\n        </Ariakit.ComboboxLabel>\n      )}\n      <div className={cn('relative', isKeyboardFocus ? 'rounded-md ring-2 ring-ring-primary' : '')}>\n        <Ariakit.Combobox\n          placeholder={placeholder}\n          className={cn(\n            'h-10 w-full rounded-md border border-border-light bg-surface-primary px-3 py-2 text-sm',\n            'placeholder-text-secondary hover:bg-surface-hover',\n            'focus:outline-none',\n            className,\n          )}\n          onChange={(event) => handleChange(event.target.value)}\n          onBlur={() => {\n            setIsKeyboardFocus(false);\n            onBlur();\n          }}\n          onFocusVisible={() => {\n            setIsKeyboardFocus(true);\n            setIsOpen(true);\n          }}\n          onMouseDown={() => {\n            setIsKeyboardFocus(false);\n          }}\n        />\n      </div>\n      <Ariakit.ComboboxPopover\n        gutter={4}\n        sameWidth\n        open={isOpen}\n        onClose={() => setIsOpen(false)}\n        className={cn(\n          'z-50 max-h-60 w-full overflow-auto rounded-md bg-surface-primary p-1 shadow-lg',\n          'animate-in fade-in-0 zoom-in-95',\n        )}\n      >\n        {options.map((option: string | OptionWithIcon, index: number) => (\n          <Ariakit.ComboboxItem\n            key={index}\n            className={cn(\n              'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n              'cursor-pointer hover:bg-surface-tertiary hover:text-text-primary',\n              'data-[active-item]:bg-surface-tertiary data-[active-item]:text-text-primary',\n            )}\n            value={isOptionObject(option) ? `${option.value ?? ''}` : option}\n          >\n            {isOptionObject(option) && option.icon != null && (\n              <span className=\"mr-2 flex-shrink-0\">{option.icon}</span>\n            )}\n            {isOptionObject(option) ? option.label : option}\n          </Ariakit.ComboboxItem>\n        ))}\n      </Ariakit.ComboboxPopover>\n    </Ariakit.ComboboxProvider>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/InputNumber.tsx",
    "content": "import * as React from 'react';\n\n// import { NumericFormat } from 'react-number-format';\n\nimport RCInputNumber from 'rc-input-number';\nimport * as InputNumberPrimitive from 'rc-input-number';\nimport { cn } from '~/utils';\n\n// TODO help needed\n// React.ElementRef<typeof LabelPrimitive.Root>,\n// React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n\nconst InputNumber = React.forwardRef<\n  React.ElementRef<typeof RCInputNumber>,\n  InputNumberPrimitive.InputNumberProps\n>(({ className, ...props }, ref) => {\n  return (\n    <RCInputNumber\n      className={cn(\n        'flex max-h-5 w-full rounded-md border border-gray-300 bg-transparent px-3 py-2 text-sm placeholder:text-gray-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-50',\n        className ?? '',\n      )}\n      ref={ref}\n      {...props}\n    />\n  );\n});\nInputNumber.displayName = 'Input';\n\n// console.log(_InputNumber);\n\n// const InputNumber = React.forwardRef(({ className, ...props }, ref) => {\n//   return (\n//     <NumericFormat\n//       className={cn(\n//         'flex h-10 w-full rounded-md border border-gray-300 bg-transparent py-2 px-3 text-sm placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:text-gray-50 dark:focus:ring-gray-400 dark:focus:ring-offset-gray-900',\n//         className\n//       )}\n//       ref={ref}\n//       {...props}\n//     />\n//   );\n// });\n\nexport { InputNumber };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/InputOTP.tsx",
    "content": "import * as React from 'react';\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport { Minus } from 'lucide-react';\nimport { cn } from '~/utils';\n\nconst InputOTP = React.forwardRef<\n  React.ElementRef<typeof OTPInput>,\n  React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n  <OTPInput\n    ref={ref}\n    containerClassName={cn(\n      'flex items-center gap-2 has-[:disabled]:opacity-50',\n      containerClassName,\n    )}\n    className={cn('disabled:cursor-not-allowed', className)}\n    {...props}\n  />\n));\nInputOTP.displayName = 'InputOTP';\n\nconst InputOTPGroup = React.forwardRef<\n  React.ElementRef<'div'>,\n  React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn('flex items-center', className)} {...props} />\n));\nInputOTPGroup.displayName = 'InputOTPGroup';\n\nconst InputOTPSlot = React.forwardRef<\n  React.ElementRef<'div'>,\n  React.ComponentPropsWithoutRef<'div'> & { index: number }\n>(({ index, className, ...props }, ref) => {\n  const inputOTPContext = React.useContext(OTPInputContext);\n  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];\n\n  return (\n    <div\n      ref={ref}\n      className={cn(\n        'text-md relative flex h-11 w-11 items-center justify-center border-y border-r border-input shadow-sm transition-all first:rounded-l-xl first:border-l last:rounded-r-xl',\n        isActive && 'z-10 ring-1 ring-ring',\n        className,\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"animate-caret-blink h-4 w-px bg-foreground duration-1000\" />\n        </div>\n      )}\n    </div>\n  );\n});\nInputOTPSlot.displayName = 'InputOTPSlot';\n\nconst InputOTPSeparator = React.forwardRef<\n  React.ElementRef<'div'>,\n  React.ComponentPropsWithoutRef<'div'>\n>(({ ...props }, ref) => (\n  <div ref={ref} role=\"separator\" {...props}>\n    <Minus />\n  </div>\n));\nInputOTPSeparator.displayName = 'InputOTPSeparator';\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/InputWithDropDown.tsx",
    "content": "import * as React from 'react';\nimport { Input } from '~/components/ui/Input';\nimport { cn } from '~/utils';\n\nexport type InputWithDropdownProps = React.InputHTMLAttributes<HTMLInputElement> & {\n  options: string[];\n  onSelect?: (value: string) => void;\n};\n\nconst InputWithDropdown = React.forwardRef<HTMLInputElement, InputWithDropdownProps>(\n  ({ className, options, onSelect, ...props }, ref) => {\n    const [isOpen, setIsOpen] = React.useState(false);\n    const [inputValue, setInputValue] = React.useState((props.value as string) || '');\n    const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n    const inputRef = React.useRef<HTMLInputElement>(null);\n\n    const handleSelect = (value: string) => {\n      setInputValue(value);\n      setIsOpen(false);\n      setHighlightedIndex(-1);\n      if (onSelect) {\n        onSelect(value);\n      }\n      if (props.onChange) {\n        props.onChange({ target: { value } } as React.ChangeEvent<HTMLInputElement>);\n      }\n    };\n\n    const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n      setInputValue(e.target.value);\n      if (props.onChange) {\n        props.onChange(e);\n      }\n    };\n\n    const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n      switch (e.key) {\n        case 'ArrowDown':\n          e.preventDefault();\n          if (!isOpen) {\n            setIsOpen(true);\n          } else {\n            setHighlightedIndex((prevIndex) =>\n              prevIndex < options.length - 1 ? prevIndex + 1 : prevIndex,\n            );\n          }\n          break;\n        case 'ArrowUp':\n          e.preventDefault();\n          setHighlightedIndex((prevIndex) => (prevIndex > 0 ? prevIndex - 1 : 0));\n          break;\n        case 'Enter':\n          e.preventDefault();\n          if (isOpen && highlightedIndex !== -1) {\n            handleSelect(options[highlightedIndex]);\n          }\n          setIsOpen(false);\n          break;\n        case 'Escape':\n          setIsOpen(false);\n          setHighlightedIndex(-1);\n          break;\n      }\n    };\n\n    React.useEffect(() => {\n      const handleClickOutside = (event: MouseEvent) => {\n        if (inputRef.current && !inputRef.current.contains(event.target as Node)) {\n          setIsOpen(false);\n          setHighlightedIndex(-1);\n        }\n      };\n\n      document.addEventListener('mousedown', handleClickOutside);\n      return () => {\n        document.removeEventListener('mousedown', handleClickOutside);\n      };\n    }, []);\n\n    return (\n      <div className=\"relative\" ref={inputRef}>\n        <div className=\"relative\">\n          <Input\n            {...props}\n            value={inputValue}\n            onChange={handleInputChange}\n            onKeyDown={handleKeyDown}\n            aria-haspopup=\"listbox\"\n            aria-controls=\"dropdown-list\"\n            className={cn('bg-surface-secondary', className ?? '')}\n            ref={ref}\n          />\n          <button\n            type=\"button\"\n            className=\"text-tertiary hover:text-secondary absolute inset-y-0 right-0 flex items-center rounded-md px-2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring-primary\"\n            onClick={() => setIsOpen(!isOpen)}\n            aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}\n          >\n            <svg\n              className=\"h-5 w-5\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              viewBox=\"0 0 24 24\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                strokeWidth={2}\n                d=\"M19 9l-7 7-7-7\"\n              />\n            </svg>\n          </button>\n        </div>\n        {isOpen && (\n          <ul\n            id=\"dropdown-list\"\n            role=\"listbox\"\n            className=\"absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md border border-border-medium bg-surface-secondary shadow-lg focus:ring-1 focus:ring-inset focus:ring-ring-primary\"\n          >\n            {options.map((option, index) => (\n              <li\n                key={index}\n                role=\"option\"\n                aria-selected={index === highlightedIndex}\n                className={cn(\n                  'cursor-pointer rounded-md px-3 py-2',\n                  'focus:bg-surface-tertiary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-ring-primary',\n                  index === highlightedIndex\n                    ? 'text-primary bg-surface-active'\n                    : 'text-secondary hover:bg-surface-tertiary',\n                )}\n                onClick={() => handleSelect(option)}\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter' || e.key === ' ') {\n                    e.preventDefault();\n                    handleSelect(option);\n                  }\n                }}\n                tabIndex={0}\n              >\n                {option}\n              </li>\n            ))}\n          </ul>\n        )}\n      </div>\n    );\n  },\n);\n\nInputWithDropdown.displayName = 'InputWithDropdown';\n\nexport default InputWithDropdown;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Label.tsx",
    "content": "import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '../../utils';\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className = '', ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(\n      'block w-full break-all text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-gray-200',\n      className,\n    )}\n    {...props}\n  />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/ModelParameters.tsx",
    "content": "import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport { TranslationKeys, useLocalize } from '~/hooks';\nimport { Minus, Plus } from 'lucide-react';\n\ninterface ModelParametersProps {\n  label?: string;\n  ariaLabel?: string;\n  min?: number;\n  max?: number;\n  step?: number;\n  stepClick?: number;\n  initialValue?: number;\n  showButtons?: boolean;\n  onChange?: (value: number) => void;\n  disabled?: boolean;\n}\n\nconst ModelParameters: React.FC<ModelParametersProps> = ({\n  label = 'Value',\n  ariaLabel = 'Value',\n  min = 0,\n  max = 100,\n  step = 1,\n  stepClick = 1,\n  initialValue = 0,\n  showButtons = true,\n  onChange,\n  disabled = false,\n}) => {\n  const localize = useLocalize();\n  const [value, setValue] = useState(initialValue);\n  const [isHovering, setIsHovering] = useState(false);\n  const rangeRef = useRef<HTMLInputElement>(null);\n\n  const id = `model-parameter-${ariaLabel.toLowerCase().replace(/\\s+/g, '-')}`;\n  const displayLabel = label.startsWith('com_') ? localize(label as TranslationKeys) : label;\n\n  const getDecimalPlaces = (num: number) => {\n    const match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n    if (!match) {\n      return 0;\n    }\n    return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\n  };\n\n  const decimalPlaces = getDecimalPlaces(step);\n\n  const handleChange = useCallback(\n    (newValue: number) => {\n      const clampedValue = Math.min(Math.max(newValue, min), max);\n      const finalValue = Object.is(clampedValue, -0) ? 0 : clampedValue;\n      setValue(finalValue);\n      onChange?.(finalValue);\n    },\n    [min, max, onChange],\n  );\n\n  const handleInputChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      handleChange(parseFloat(e.target.value));\n    },\n    [handleChange],\n  );\n\n  const handleIncrement = useCallback(() => {\n    handleChange(value + stepClick);\n  }, [value, stepClick, handleChange]);\n\n  const handleDecrement = useCallback(() => {\n    handleChange(value - stepClick);\n  }, [value, stepClick, handleChange]);\n\n  const handleKeyDown = useCallback(\n    (e: React.KeyboardEvent<HTMLInputElement>) => {\n      if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n        e.preventDefault();\n        handleIncrement();\n      } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n        e.preventDefault();\n        handleDecrement();\n      }\n    },\n    [handleIncrement, handleDecrement],\n  );\n\n  useEffect(() => {\n    const rangeElement = rangeRef.current;\n    if (rangeElement) {\n      const percentage = ((value - min) / (max - min)) * 100;\n      rangeElement.style.backgroundSize = `${percentage}% 100%`;\n    }\n  }, [value, min, max]);\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"mb-2 flex items-center justify-between\">\n        <label\n          htmlFor={id}\n          className={`text-sm font-medium ${disabled ? 'text-gray-400 dark:text-gray-400' : ''}`}\n        >\n          {displayLabel}\n        </label>\n        <div className=\"flex items-center gap-2\">\n          <output\n            htmlFor={id}\n            className={`select-none text-sm font-medium ${\n              disabled ? 'text-gray-400 dark:text-gray-400' : ''\n            }`}\n            aria-live=\"polite\"\n          >\n            {value.toFixed(decimalPlaces).replace('-0.00', '0.00')}\n          </output>\n          {showButtons && (\n            <div className=\"flex items-center gap-1\">\n              <button\n                type=\"button\"\n                onClick={handleDecrement}\n                className={`rounded-md p-1 transition-colors ${\n                  disabled\n                    ? 'cursor-not-allowed text-gray-400 dark:text-gray-400'\n                    : 'hover:bg-gray-200 dark:hover:bg-gray-700'\n                }`}\n                aria-label={`Decrease ${label}`}\n                disabled={disabled}\n              >\n                <Minus size={16} />\n              </button>\n              <button\n                type=\"button\"\n                onClick={handleIncrement}\n                className={`rounded-md p-1 transition-colors ${\n                  disabled\n                    ? 'cursor-not-allowed text-gray-400 dark:text-gray-400'\n                    : 'hover:bg-gray-200 dark:hover:bg-gray-700'\n                }`}\n                aria-label={`Increase ${label}`}\n                disabled={disabled}\n              >\n                <Plus size={16} />\n              </button>\n            </div>\n          )}\n        </div>\n      </div>\n      <div className=\"relative w-full\">\n        <input\n          ref={rangeRef}\n          type=\"range\"\n          id={id}\n          min={min}\n          max={max}\n          step={step}\n          value={value}\n          onChange={handleInputChange}\n          onKeyDown={handleKeyDown}\n          onMouseEnter={() => setIsHovering(true)}\n          onMouseLeave={() => setIsHovering(false)}\n          className={`slider-thumb h-2 w-full appearance-none rounded-lg bg-gradient-to-r from-gray-500 to-gray-500 bg-no-repeat focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${\n            disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\n          }`}\n          tabIndex={0}\n          style={{\n            backgroundSize: '50% 100%',\n            backgroundPosition: 'left',\n          }}\n          aria-valuemin={min}\n          aria-valuemax={max}\n          aria-valuenow={value}\n          aria-valuetext={`${value.toFixed(decimalPlaces).replace('-0.00', '0.00')}`}\n          disabled={disabled}\n        />\n        {isHovering ? (\n          <div className=\"trab mt-1 flex justify-between\">\n            <span className=\"text-xs text-gray-500\">{min}</span>\n            <span className=\"text-xs text-gray-500\">{max}</span>\n          </div>\n        ) : (\n          <div className=\"mt-1\" style={{ height: '1rem' }}></div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default React.memo(ModelParameters);\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/MultiSearch.tsx",
    "content": "import { Search, X } from 'lucide-react';\nimport React, { useState, useMemo, useCallback, useRef } from 'react';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils';\n\n/** This is a generic that can be added to Menu and Select components */\nexport default function MultiSearch({\n  value,\n  onChange,\n  placeholder,\n  className = '',\n}: {\n  value: string | null;\n  onChange: (filter: string) => void;\n  placeholder?: string;\n  className?: string;\n}) {\n  const localize = useLocalize();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n    (e) => onChange(e.target.value),\n    [onChange],\n  );\n\n  const clearSearch = () => {\n    onChange('');\n    setTimeout(() => {\n      inputRef.current?.focus();\n    }, 0);\n  };\n\n  return (\n    <div\n      className={cn(\n        'focus:to-surface-primary/50 group sticky left-0 top-0 z-10 flex h-12 items-center gap-2 bg-gradient-to-b from-surface-tertiary-alt from-65% to-transparent px-3 py-2 text-text-primary transition-colors duration-300 focus:bg-gradient-to-b focus:from-surface-primary',\n        className,\n      )}\n    >\n      <Search\n        className=\"h-4 w-4 text-text-secondary-alt transition-colors duration-300\"\n        aria-hidden={'true'}\n      />\n      <input\n        ref={inputRef}\n        type=\"text\"\n        value={value ?? ''}\n        onChange={onChangeHandler}\n        placeholder={placeholder ?? localize('com_ui_select_search_model')}\n        aria-label=\"Search Model\"\n        className=\"flex-1 rounded-md border-none bg-transparent px-2.5 py-2 text-sm placeholder-text-secondary focus:outline-none focus:ring-1 focus:ring-ring-primary\"\n      />\n      <button\n        className={cn(\n          'relative flex h-5 w-5 items-center justify-end rounded-md text-text-secondary-alt',\n          value?.length ?? 0 ? 'cursor-pointer opacity-100' : 'hidden',\n        )}\n        aria-label={'Clear search'}\n        onClick={clearSearch}\n        tabIndex={0}\n      >\n        <X\n          aria-hidden={'true'}\n          className={cn(\n            'text-text-secondary-alt',\n            value?.length ?? 0 ? 'cursor-pointer opacity-100' : 'opacity-0',\n          )}\n        />\n      </button>\n    </div>\n  );\n}\n\n/**\n * Helper function that will take a multiSearch input\n * @param node\n */\nfunction defaultGetStringKey(node: unknown): string {\n  if (typeof node === 'string') {\n    // BUGFIX: Detect psedeo separators and make sure they don't appear in the list when filtering items\n    // it makes sure (for the most part) that the model name starts and ends with dashes\n    // The long-term fix here would be to enable seperators (model groupings) but there's no\n    // feature mocks for such a thing yet\n    if (node.startsWith('---') && node.endsWith('---')) {\n      return '';\n    }\n\n    return node.toUpperCase();\n  }\n  // This should be a noop, but it's here for redundancy\n  return '';\n}\n\n/**\n * Hook for conditionally making a multi-element list component into a sortable component\n * Returns a RenderNode for search input when search functionality is available\n * @param availableOptions\n * @param placeholder\n * @param getTextKeyOverride\n * @param className - Additional classnames to add to the search container\n * @param disabled - If the search should be disabled\n * @returns\n */\nexport function useMultiSearch<OptionsType extends unknown[]>({\n  availableOptions = [] as unknown as OptionsType,\n  placeholder,\n  getTextKeyOverride,\n  className,\n  disabled = false,\n}: {\n  availableOptions?: OptionsType;\n  placeholder?: string;\n  getTextKeyOverride?: (node: OptionsType[0]) => string;\n  className?: string;\n  disabled?: boolean;\n}): [OptionsType, React.ReactNode] {\n  const [filterValue, setFilterValue] = useState<string | null>(null);\n\n  // We conditionally show the search when there's more than 10 elements in the menu\n  const shouldShowSearch = availableOptions.length > 10 && !disabled;\n\n  // Define the helper function used to enable search\n  // If this is invalidly described, we will assume developer error - tf. avoid rendering\n  const getTextKeyHelper = getTextKeyOverride || defaultGetStringKey;\n\n  // Iterate said options\n  const filteredOptions = useMemo(() => {\n    const currentFilter = filterValue ?? '';\n    if (!shouldShowSearch || !currentFilter || !availableOptions.length) {\n      // Don't render if available options aren't present, there's no filter active\n      return availableOptions;\n    }\n    // Filter through the values, using a simple text-based search\n    // nothing too fancy, but we can add a better search algo later if we need\n    const upperFilterValue = currentFilter.toUpperCase();\n\n    return availableOptions.filter((value) =>\n      getTextKeyHelper(value).includes(upperFilterValue),\n    ) as OptionsType;\n  }, [availableOptions, getTextKeyHelper, filterValue, shouldShowSearch]);\n\n  const onSearchChange = useCallback(\n    (nextFilterValue: string) => setFilterValue(nextFilterValue),\n    [],\n  );\n\n  const searchRender = shouldShowSearch ? (\n    <MultiSearch\n      value={filterValue}\n      className={className}\n      onChange={onSearchChange}\n      placeholder={placeholder}\n    />\n  ) : null;\n\n  return [filteredOptions, searchRender];\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/MultiSelect.tsx",
    "content": "import { Check, X } from \"lucide-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"~/utils\";\nimport { Badge } from \"./Badge\";\nimport { SearchInput } from \"./Input\";\nimport { Select, SelectContent, SelectTrigger } from \"./Select\";\n\nexport function useDebounce(func: any, wait: number, immediate: boolean, callback?: any,): (any?: any) => any {\n    let timer = useRef<NodeJS.Timeout | null>();\n    const fnRef = useRef<any>(func);\n    useEffect(() => { fnRef.current = func; }, [func]);\n    const timerCancel = function () { if (timer.current) clearTimeout(timer.current); };\n\n    function debounced(...args: any[]) {\n        const runFunction = () => {\n            return callback\n                ? callback(fnRef.current.apply(fnRef.current, args))\n                : fnRef.current.apply(fnRef.current, args);\n        };\n        timerCancel();\n        if (immediate) {\n            let runNow = !timer.current;\n            timer.current = setTimeout(() => { timer.current = null; }, wait);\n            if (runNow) {\n                runFunction();\n            }\n        } else {\n            timer.current = setTimeout(() => { runFunction(); }, wait);\n        }\n    }\n    debounced.cancel = function () { timerCancel(); timer.current = null; };\n    return useCallback(debounced, [wait, immediate, timerCancel, func]);\n}\n\nconst MultiItem: React.FC<\n    { active: boolean; children: React.ReactNode; value: string; onClick: (value: string, label: string) => void }\n> = ({ active, children, value, onClick }) => {\n\n    return <div\n        key={value}\n        className={`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 mb-1 text-sm outline-none hover:bg-[#EBF0FF] dark:hover:bg-gray-700 hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 break-all \n    ${active && 'bg-[#EBF0FF] dark:bg-gray-700'}`}\n        onClick={() => { onClick(value, children as string) }}\n    >\n        <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n            {active && <Check className=\"h-4 w-4\"></Check>}\n        </span>\n        {children}\n    </div>\n}\ninterface Option {\n    label: string;\n    value: string;\n}\n\ninterface BaseProps<T> {\n    /** 多选 */\n    id?: string;\n    multiple?: boolean;\n    error?: boolean;\n    errorKeys?: string[];\n    /** 高度不变，内部滚动 */\n    scroll?: boolean;\n    disabled?: boolean;\n    className?: string;\n    contentClassName?: string;\n    options: Option[];\n    children?: React.ReactNode;\n    placeholder?: string;\n    searchPlaceholder?: string;\n    tabs?: React.ReactNode;\n    hideSearch?: boolean;\n    /** 锁定不可修改的值 */\n    lockedValues?: string[];\n    close?: boolean;\n    onLoad?: () => void;\n    onSearch?: (name: string) => void;\n    onChange?: (value: T) => void;\n}\n\n// onScrollLoad有值表示开启分页、异步检索\ninterface ScrollLoadProps extends BaseProps<Option[]> {\n    onScrollLoad: (name: string) => void;\n    value?: Option[];\n    defaultValue?: Option[];\n}\n\ninterface NonScrollLoadProps extends BaseProps<string[]> {\n    onScrollLoad?: undefined;\n    value?: string[];\n    defaultValue?: string[];\n}\n\ntype IProps = ScrollLoadProps | NonScrollLoadProps;\n\nconst MultiSelect = ({\n    id = `${Date.now()}`,\n    error = false,\n    errorKeys = [],\n    multiple = false,\n    className,\n    contentClassName,\n    value = [],\n    scroll = false,\n    close = false,\n    defaultValue = [],\n    options = [],\n    children = null,\n    placeholder = '',\n    searchPlaceholder = '',\n    lockedValues = [],\n    tabs = null,\n    hideSearch = false,\n    onSearch,\n    onLoad,\n    onScrollLoad,\n    onChange, ...props\n}: IProps) => {\n\n    const [values, setValues] = React.useState(defaultValue)\n    const [optionFilter, setOptionFilter] = React.useState(options)\n    const [created, creatInput] = useState(false)\n    const inputRef = useRef(null)\n\n    useEffect(() => {\n        setValues(value)\n    }, [value])\n\n    useEffect(() => {\n        // if (onScrollLoad) {\n        setOptionFilter(options);\n        // }\n    }, [options]);\n\n    // delete \n    const handleDelete = (value: string) => {\n        const newValues = (values as any[]).filter((item) => {\n            const _value = onScrollLoad ? (item as Option).value : item;\n            return _value !== value\n        })\n        setValues(newValues)\n        onChange?.(newValues)\n    }\n    // add\n    const triggerRef = useRef(null)\n    const handleSwitch = (value: string, label: string) => {\n        if (lockedValues.includes(value)) {\n            return\n        }\n\n        const updateValues = (newValues: any) => {\n            setValues(newValues);\n            onChange?.(newValues);\n        };\n\n        // 单选\n        if (!multiple) {\n            const newValues = onScrollLoad ? [{ label, value }] : [value]\n            updateValues(newValues);\n            // 关闭弹窗\n            const element = triggerRef.current;\n            if (element) {\n                // 创建 PointerEvent\n                const event = new PointerEvent('pointerdown', {\n                    bubbles: true,\n                    cancelable: true,\n                    pointerId: 1,\n                    pointerType: 'mouse'\n                });\n                element.dispatchEvent(event);\n            }\n            return\n        }\n\n        if (onScrollLoad) {\n            const newValues = (values as Option[]).some(item => item.value === value)\n                ? (values as Option[]).filter(item => item.value !== value)\n                : [...(values as Option[]), { label, value }];\n            updateValues(newValues);\n        } else {\n            const newValues = (values as string[]).includes(value)\n                ? (values as string[]).filter(item => item !== value)\n                : [...(values as string[]), value];\n            updateValues(newValues);\n        }\n    }\n\n    // search\n    const handleSearch = useDebounce((e) => {\n        const newValues = options.filter((item) => {\n            return item.label.toLowerCase().indexOf(e.target.value.trim().toLowerCase()) !== -1\n        })\n        setOptionFilter(newValues)\n        onSearch?.(inputRef.current?.value || '')\n    }, 500, false)\n\n    // scroll laod\n    const footerRef = useRef(null)\n    useEffect(function () {\n        if (!created) return\n        if (!footerRef.current) return\n        if (!onScrollLoad) return // 不绑定滚动事件\n\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting) {\n                    // console.log('div is in the viewport!');\n                    onScrollLoad?.(inputRef.current?.value || '')\n                }\n            });\n        }, {\n            // root: null, // 视口\n            rootMargin: '0px', // 视口的边距\n            threshold: 0.1 // 目标元素超过视口的10%即触发回调\n        });\n\n        // 开始观察目标元素\n        observer.observe(footerRef.current);\n\n        return () => observer.unobserve(footerRef.current);\n    }, [created])\n\n    const handleClearClick = () => {\n        setValues([])\n        onChange?.([])\n    }\n\n    return <Select\n        {...props}\n        required\n        onOpenChange={(e) => {\n            creatInput(e);\n            if (e) {\n                onLoad?.();\n                setOptionFilter(options);\n            }\n        }}\n    >\n        <SelectTrigger className={cn(`group min-h-9 py-1 ${error && 'border-red-500'} ${scroll ? 'h-9 overflow-y-auto items-start pt-1.5' : 'h-auto'}`, className)} ref={triggerRef}>\n            {\n                !multiple && (values.length ? <span className=\"text-foreground\">{onScrollLoad ? (values[0] as Option).label : options.find(op => op.value === values[0])?.label}</span> : placeholder)\n            }\n            {\n                multiple && (values.length ? (\n                    onScrollLoad ? <div className=\"flex flex-wrap w-full\">\n                        {\n                            values.map(item =>\n                                <Badge onPointerDown={(e) => e.stopPropagation()} key={item.value}\n                                    className={`flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] ${errorKeys.includes(item.value) && 'bg-red-100 border-red-600'}`}>\n                                    {item.label}\n                                    {lockedValues.includes(item.value) || <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(item.value)}></X>}\n                                </Badge>\n                            )\n                        }\n                    </div> : <div className=\"flex flex-wrap w-full\">\n                        {\n                            // 使用key反推label\n                            options.filter(option => (values as string[]).includes(option.value)).map(option =>\n                                <Badge onPointerDown={(e) => e.stopPropagation()} key={option.value} className=\"flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] break-all\">\n                                    {option.label}\n                                    {lockedValues.includes(option.value) || <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(option.value)}></X>}\n                                </Badge>\n                            )\n                        }\n                    </div>)\n                    : placeholder)\n            }\n            {close && values.length !== 0 && <X\n                className=\"group-hover:block hidden bg-border text-[#666] rounded-full p-0.5 min-w-[14px] mt-1\"\n                width={14}\n                height={14}\n                onPointerDown={(e) => e.stopPropagation()}\n                onClick={handleClearClick}\n            />}\n        </SelectTrigger>\n        <SelectContent\n            className={contentClassName + ' overflow-visible bg-white'}\n            headNode={\n                <div className=\"p-2\">\n                    {tabs}\n                    {!hideSearch && <SearchInput id={id} ref={inputRef} inputClassName=\"h-8 dark:border-gray-700\" placeholder={searchPlaceholder} onChange={handleSearch} iconClassName=\"w-4 h-4\" />}\n                </div>\n            }\n            footerNode={children}\n        >\n            <div className=\"mt-2\">\n                {\n                    optionFilter.map((item) => (\n                        <MultiItem\n                            active={values.some(val => val === item.value || val.value === item.value)}\n                            value={item.value}\n                            onClick={handleSwitch}\n                        >{item.label}</MultiItem>\n                    ))\n                }\n                <div ref={footerRef} style={{ height: 20 }}></div>\n            </div>\n        </SelectContent>\n    </Select>\n}\n\nMultiSelect.displayName = 'MultiSelect'\n\nexport default MultiSelect"
  },
  {
    "path": "src/frontend/client/src/components/ui/MultiSelectDropDown.tsx",
    "content": "import React, { useState, useRef } from 'react';\nimport {\n  Listbox,\n  ListboxButton,\n  Label,\n  ListboxOptions,\n  ListboxOption,\n  Transition,\n} from '@headlessui/react';\nimport { Wrench, ArrowRight } from 'lucide-react';\nimport { CheckMark } from '~/components/svg';\nimport useOnClickOutside from '~/hooks/useOnClickOutside';\nimport { useMultiSearch } from './MultiSearch';\nimport { cn } from '~/utils/';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\n\nexport type TMultiSelectDropDownProps = {\n  title?: string;\n  value: Array<{ icon?: string; name?: string; isButton?: boolean }>;\n  disabled?: boolean;\n  setSelected: (option: string) => void;\n  availableValues: TPlugin[];\n  showAbove?: boolean;\n  showLabel?: boolean;\n  containerClassName?: string;\n  optionsClassName?: string;\n  labelClassName?: string;\n  isSelected: (value: string) => boolean;\n  className?: string;\n  searchPlaceholder?: string;\n  optionValueKey?: string;\n};\n\nfunction MultiSelectDropDown({\n  title = 'Plugins',\n  value,\n  disabled,\n  setSelected,\n  availableValues,\n  showAbove = false,\n  showLabel = true,\n  containerClassName,\n  optionsClassName = '',\n  labelClassName = '',\n  isSelected,\n  className,\n  searchPlaceholder,\n  optionValueKey = 'value',\n}: TMultiSelectDropDownProps) {\n  const [isOpen, setIsOpen] = useState(false);\n  const menuRef = useRef(null);\n  const excludeIds = ['select-plugin', 'plugins-label', 'selected-plugins'];\n  useOnClickOutside(menuRef, () => setIsOpen(false), excludeIds);\n\n  const handleSelect: (value: string) => void = (option) => {\n    setSelected(option);\n    setIsOpen(true);\n  };\n\n  // input will appear near the top of the menu, allowing correct filtering of different model menu items. This will\n  // reset once the component is unmounted (as per a normal search)\n  const [filteredValues, searchRender] = useMultiSearch<TPlugin[]>({\n    availableOptions: availableValues,\n    placeholder: searchPlaceholder,\n    getTextKeyOverride: (option) => (option.name || '').toUpperCase(),\n  });\n\n  const hasSearchRender = Boolean(searchRender);\n  const options = hasSearchRender ? filteredValues : availableValues;\n\n  const transitionProps = { className: 'top-full mt-3' };\n  if (showAbove) {\n    transitionProps.className = 'bottom-full mb-3';\n  }\n  const openProps = { open: isOpen };\n  return (\n    <div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>\n      <div className=\"relative w-full\">\n        {/* the function typing is correct but there's still an issue here */}\n        {/* @ts-ignore */}\n        <Listbox value={value} onChange={handleSelect} disabled={disabled}>\n          {() => (\n            <>\n              <ListboxButton\n                className={cn(\n                  'relative flex w-full cursor-default flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus:outline-none focus:ring-0 focus:ring-offset-0 dark:border-gray-600 dark:border-white/20 dark:bg-gray-800 sm:text-sm',\n                  className ?? '',\n                )}\n                id={excludeIds[0]}\n                onClick={() => setIsOpen((prev) => !prev)}\n                {...openProps}\n              >\n                {' '}\n                {showLabel && (\n                  <Label\n                    className={cn('block text-xs text-gray-700 dark:text-gray-500', labelClassName)}\n                    id={excludeIds[1]}\n                    data-headlessui-state=\"\"\n                  >\n                    {title}\n                  </Label>\n                )}\n                <span className=\"inline-flex w-full truncate\" id={excludeIds[2]}>\n                  <span\n                    className={cn(\n                      'flex h-6 items-center gap-1 truncate text-sm text-gray-800 dark:text-white',\n                      !showLabel ? 'text-xs' : '',\n                    )}\n                  >\n                    {!showLabel && title.length > 0 && (\n                      <span className=\"text-xs text-gray-700 dark:text-gray-500\">{title}:</span>\n                    )}\n                    <span className=\"flex h-6 items-center gap-1 truncate\">\n                      <div className=\"flex gap-1\">\n                        {value.map((v, i) => (\n                          <div\n                            key={i}\n                            className=\"relative\"\n                            style={{ width: '16px', height: '16px' }}\n                          >\n                            {v.icon ? (\n                              <img\n                                src={v.icon}\n                                alt={`${v} logo`}\n                                className=\"h-full w-full rounded-sm bg-white\"\n                              />\n                            ) : (\n                              <Wrench className=\"h-full w-full rounded-sm bg-white\" />\n                            )}\n                            <div className=\"absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10\" />\n                          </div>\n                        ))}\n                      </div>\n                    </span>\n                  </span>\n                </span>\n                <span className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\">\n                  <svg\n                    stroke=\"currentColor\"\n                    fill=\"none\"\n                    strokeWidth=\"2\"\n                    viewBox=\"0 0 24 24\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    className=\"h-4 w-4  text-gray-400\"\n                    height=\"1em\"\n                    width=\"1em\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    style={showAbove ? { transform: 'scaleY(-1)' } : {}}\n                  >\n                    <polyline points=\"6 9 12 15 18 9\"></polyline>\n                  </svg>\n                </span>\n              </ListboxButton>\n              <Transition\n                show={isOpen}\n                as={React.Fragment}\n                leave=\"transition ease-in duration-150\"\n                leaveFrom=\"opacity-100\"\n                leaveTo=\"opacity-0\"\n                {...transitionProps}\n              >\n                <ListboxOptions\n                  ref={menuRef}\n                  className={cn(\n                    'absolute z-50 mt-2 max-h-60 w-full overflow-auto rounded bg-white text-base text-xs ring-1 ring-black/10 focus:outline-none dark:bg-gray-800 dark:ring-white/20 dark:last:border-0 md:w-[100%]',\n                    optionsClassName,\n                  )}\n                >\n                  {searchRender}\n                  {options.map((option, i: number) => {\n                    if (!option) {\n                      return null;\n                    }\n                    const selected = isSelected(option[optionValueKey]);\n                    return (\n                      <ListboxOption\n                        key={i}\n                        value={option[optionValueKey]}\n                        className=\"group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden border-b border-black/10 pl-3 pr-9 text-gray-800 last:border-0 hover:bg-gray-20 dark:border-white/20 dark:text-white dark:hover:bg-gray-700\"\n                      >\n                        <span className=\"flex items-center gap-1.5 truncate\">\n                          {!option.isButton && (\n                            <span className=\"h-6 w-6 shrink-0\">\n                              <div className=\"relative\" style={{ width: '100%', height: '100%' }}>\n                                {option.icon ? (\n                                  <img\n                                    src={option.icon}\n                                    alt={`${option.name} logo`}\n                                    className=\"h-full w-full rounded-sm bg-white\"\n                                  />\n                                ) : (\n                                  <Wrench className=\"h-full w-full rounded-sm bg-white\" />\n                                )}\n                                <div className=\"absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10\"></div>\n                              </div>\n                            </span>\n                          )}\n                          <span\n                            className={cn(\n                              'flex h-6 items-center gap-1 text-gray-800 dark:text-gray-200',\n                              selected ? 'font-semibold' : '',\n                            )}\n                          >\n                            {option.name}\n                          </span>\n                          {option.isButton && (\n                            <span className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-800 dark:text-gray-200\">\n                              <ArrowRight />\n                            </span>\n                          )}\n                          {selected && !option.isButton && (\n                            <span className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-800 dark:text-gray-200\">\n                              <CheckMark />\n                            </span>\n                          )}\n                        </span>\n                      </ListboxOption>\n                    );\n                  })}\n                </ListboxOptions>\n              </Transition>\n            </>\n          )}\n        </Listbox>\n      </div>\n    </div>\n  );\n}\n\nexport default MultiSelectDropDown;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/MultiSelectPop.tsx",
    "content": "import { Wrench } from 'lucide-react';\nimport { Root, Trigger, Content, Portal } from '@radix-ui/react-popover';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\nimport MenuItem from '~/components/Chat/Menus/UI/MenuItem';\nimport { useMultiSearch } from './MultiSearch';\nimport { cn } from '~/utils/';\n\ntype SelectDropDownProps = {\n  title?: string;\n  value: Array<{ icon?: string; name?: string; isButton?: boolean }>;\n  disabled?: boolean;\n  setSelected: (option: string) => void;\n  availableValues: TPlugin[];\n  showAbove?: boolean;\n  showLabel?: boolean;\n  containerClassName?: string;\n  isSelected: (value: string) => boolean;\n  className?: string;\n  optionValueKey?: string;\n  searchPlaceholder?: string;\n};\n\nfunction MultiSelectPop({\n  title: _title = 'Plugins',\n  value,\n  setSelected,\n  availableValues,\n  showAbove = false,\n  showLabel = true,\n  containerClassName,\n  isSelected,\n  optionValueKey = 'value',\n  searchPlaceholder,\n}: SelectDropDownProps) {\n  // const localize = useLocalize();\n\n  const title = _title;\n  const excludeIds = ['select-plugin', 'plugins-label', 'selected-plugins'];\n\n  // Detemine if we should to convert this component into a searchable select\n  const [filteredValues, searchRender] = useMultiSearch<TPlugin[]>({\n    availableOptions: availableValues,\n    placeholder: searchPlaceholder,\n    getTextKeyOverride: (option) => (option.name || '').toUpperCase(),\n  });\n  const hasSearchRender = Boolean(searchRender);\n  const options = hasSearchRender ? filteredValues : availableValues;\n\n  return (\n    <Root>\n      <div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>\n        <div className=\"relative\">\n          <Trigger asChild>\n            <button\n              data-testid=\"select-dropdown-button\"\n              className={cn(\n                'relative flex flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus:outline-none focus:ring-0 focus:ring-offset-0 dark:border-gray-700 dark:bg-gray-800 dark:bg-gray-800 sm:text-sm',\n                'pointer-cursor font-normal',\n                'hover:bg-gray-50 radix-state-open:bg-gray-50 dark:hover:bg-gray-700 dark:radix-state-open:bg-gray-700',\n              )}\n            >\n              {' '}\n              {showLabel && (\n                <label className=\"block text-xs text-gray-700 dark:text-gray-500 \">{title}</label>\n              )}\n              <span className=\"inline-flex\" id={excludeIds[2]}>\n                <span\n                  className={cn(\n                    'flex h-6 items-center gap-1 text-sm text-gray-800 dark:text-white',\n                    !showLabel ? 'text-xs' : '',\n                  )}\n                >\n                  {/* {!showLabel && title.length > 0 && (\n                    <span className=\"text-xs text-gray-700 dark:text-gray-500\">{title}:</span>\n                  )} */}\n                  <span className=\"flex items-center gap-1 \">\n                    <div className=\"flex gap-1\">\n                      {value.length === 0 && 'None selected'}\n                      {value.map((v, i) => (\n                        <div key={i} className=\"relative\">\n                          {v.icon ? (\n                            <img src={v.icon} alt={`${v} logo`} className=\"icon-lg rounded-sm\" />\n                          ) : (\n                            <Wrench className=\"icon-lg rounded-sm bg-white\" />\n                          )}\n                          <div className=\"absolute inset-0 rounded-sm ring-1 ring-inset ring-black/10\" />\n                        </div>\n                      ))}\n                    </div>\n                  </span>\n                </span>\n              </span>\n              <span className=\"absolute inset-y-0 right-0 flex items-center pr-2\">\n                <svg\n                  stroke=\"currentColor\"\n                  fill=\"none\"\n                  strokeWidth=\"2\"\n                  viewBox=\"0 0 24 24\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  className=\"h-4 w-4  text-gray-400\"\n                  height=\"1em\"\n                  width=\"1em\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  style={showAbove ? { transform: 'scaleY(-1)' } : {}}\n                >\n                  <polyline points=\"6 9 12 15 18 9\"></polyline>\n                </svg>\n              </span>\n            </button>\n          </Trigger>\n          <Portal>\n            <Content\n              side=\"bottom\"\n              align=\"center\"\n              className={cn(\n                'mt-2 max-h-[52vh] min-w-full overflow-hidden overflow-y-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-700 dark:text-white',\n                hasSearchRender && 'relative',\n              )}\n            >\n              {searchRender}\n              {options.map((option) => {\n                if (!option) {\n                  return null;\n                }\n                const selected = isSelected(option[optionValueKey]);\n                return (\n                  <MenuItem\n                    key={`${option[optionValueKey]}`}\n                    title={option.name}\n                    value={option[optionValueKey]}\n                    selected={selected}\n                    onClick={() => setSelected(option.pluginKey)}\n                    icon={\n                      option.icon ? (\n                        <img\n                          src={option.icon}\n                          alt={`${option.name} logo`}\n                          className=\"icon-sm mr-1 rounded-sm bg-cover\"\n                        />\n                      ) : (\n                        <Wrench className=\"icon-sm mr-1 rounded-sm bg-white bg-cover dark:bg-gray-800\" />\n                      )\n                    }\n                  />\n                );\n              })}\n            </Content>\n          </Portal>\n        </div>\n      </div>\n    </Root>\n  );\n}\n\nexport default MultiSelectPop;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/OGDialogTemplate.tsx",
    "content": "import { forwardRef, ReactNode, Ref } from 'react';\nimport {\n  OGDialogTitle,\n  OGDialogClose,\n  OGDialogFooter,\n  OGDialogHeader,\n  OGDialogContent,\n  OGDialogDescription,\n} from './OriginalDialog';\nimport { useLocalize } from '~/hooks';\nimport { Spinner } from '../svg';\nimport { cn } from '~/utils/';\n\ntype SelectionProps = {\n  selectHandler?: () => void;\n  selectClasses?: string;\n  selectText?: string | ReactNode;\n  isLoading?: boolean;\n};\n\ntype DialogTemplateProps = {\n  title: string;\n  description?: string;\n  main?: ReactNode;\n  buttons?: ReactNode;\n  leftButtons?: ReactNode;\n  selection?: SelectionProps;\n  className?: string;\n  overlayClassName?: string;\n  headerClassName?: string;\n  mainClassName?: string;\n  footerClassName?: string;\n  showCloseButton?: boolean;\n  showCancelButton?: boolean;\n  onClose?: () => void;\n};\n\nconst OGDialogTemplate = forwardRef((props: DialogTemplateProps, ref: Ref<HTMLDivElement>) => {\n  const localize = useLocalize();\n  const {\n    title,\n    main,\n    buttons,\n    selection,\n    className,\n    leftButtons,\n    description = '',\n    mainClassName,\n    headerClassName,\n    footerClassName,\n    showCloseButton,\n    overlayClassName,\n    showCancelButton = true,\n  } = props;\n  const { selectHandler, selectClasses, selectText, isLoading } = selection || {};\n  const Cancel = localize('com_ui_cancel');\n\n  const defaultSelect =\n    'bg-gray-800 text-white transition-colors hover:bg-gray-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-gray-200';\n  return (\n    <OGDialogContent\n      overlayClassName={overlayClassName}\n      showCloseButton={showCloseButton}\n      ref={ref}\n      className={cn('w-11/12 border-none bg-background text-foreground', className ?? '')}\n      onClick={(e) => e.stopPropagation()}\n    >\n      <OGDialogHeader className={cn(headerClassName ?? '')}>\n        <OGDialogTitle>{title}</OGDialogTitle>\n        {description && (\n          <OGDialogDescription className=\"items-center justify-center\">\n            {description}\n          </OGDialogDescription>\n        )}\n      </OGDialogHeader>\n      <div className={cn('px-0 py-2', mainClassName)}>{main != null ? main : null}</div>\n      <OGDialogFooter className={footerClassName}>\n        <div>\n          {leftButtons != null ? (\n            <div className=\"mt-3 flex h-auto gap-3 max-sm:w-full max-sm:flex-col sm:mt-0 sm:flex-row\">\n              {leftButtons}\n            </div>\n          ) : null}\n        </div>\n        <div className=\"flex h-auto gap-3 max-sm:w-full max-sm:flex-col sm:flex-row\">\n          {buttons != null ? buttons : null}\n          {showCancelButton && (\n            <OGDialogClose className=\"btn btn-neutral border-token-border-light relative justify-center rounded-lg text-sm ring-offset-2 focus:ring-2 focus:ring-black dark:ring-offset-0 max-sm:order-last max-sm:w-full sm:order-first\">\n              {Cancel}\n            </OGDialogClose>\n          )}\n          {selection ? (\n            <OGDialogClose\n              onClick={selectHandler}\n              disabled={isLoading}\n              className={`${\n                selectClasses ?? defaultSelect\n              } flex h-10 items-center justify-center rounded-lg border-none px-4 py-2 text-sm disabled:opacity-80 max-sm:order-first max-sm:w-full sm:order-none`}\n            >\n              {isLoading === true ? <Spinner className=\"size-4 text-white\" /> : selectText}\n            </OGDialogClose>\n          ) : null}\n        </div>\n      </OGDialogFooter>\n    </OGDialogContent>\n  );\n});\n\nexport default OGDialogTemplate;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/OriginalDialog.tsx",
    "content": "import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cn } from '~/utils';\n\ninterface OGDialogProps extends DialogPrimitive.DialogProps {\n  triggerRef?: React.RefObject<HTMLButtonElement>;\n}\n\nconst Dialog = React.forwardRef<HTMLDivElement, OGDialogProps>(\n  ({ children, triggerRef, onOpenChange, ...props }) => {\n    const handleOpenChange = (open: boolean) => {\n      if (!open && triggerRef?.current) {\n        setTimeout(() => {\n          triggerRef.current?.focus();\n        }, 0);\n      }\n      onOpenChange?.(open);\n    };\n\n    return (\n      <DialogPrimitive.Root {...props} onOpenChange={handleOpenChange}>\n        {children}\n      </DialogPrimitive.Root>\n    );\n  },\n);\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n      className,\n    )}\n    {...props}\n  />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\ntype DialogContentProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean;\n  disableScroll?: boolean;\n  overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  DialogContentProps\n>(({ className, overlayClassName, showCloseButton = true, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay className={overlayClassName} />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        'max-w-11/12 fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl bg-background p-6 text-text-primary shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-ring-primary ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n          <X className=\"h-4 w-4\" />\n          <span className=\"sr-only\">Close</span>\n        </DialogPrimitive.Close>\n      )}\n    </DialogPrimitive.Content>\n  </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n    {...props}\n  />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n    {...props}\n  />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn('text-sm text-muted-foreground', className)}\n    {...props}\n  />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Dialog as OGDialog,\n  DialogPortal as OGDialogPortal,\n  DialogOverlay as OGDialogOverlay,\n  DialogClose as OGDialogClose,\n  DialogTrigger as OGDialogTrigger,\n  DialogContent as OGDialogContent,\n  DialogHeader as OGDialogHeader,\n  DialogFooter as OGDialogFooter,\n  DialogTitle as OGDialogTitle,\n  DialogDescription as OGDialogDescription,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Pagination.tsx",
    "content": "import * as React from 'react';\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\nimport { ButtonProps, buttonVariants } from './Button';\nimport { cn } from '~/utils';\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<'nav'>) => (\n  <nav\n    role=\"navigation\"\n    aria-label=\"pagination\"\n    className={cn('mx-auto flex w-full justify-center', className)}\n    {...props}\n  />\n);\nPagination.displayName = 'Pagination';\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n  ({ className, ...props }, ref) => (\n    <ul ref={ref} className={cn('flex flex-row items-center gap-1', className)} {...props} />\n  ),\n);\nPaginationContent.displayName = 'PaginationContent';\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n  ({ className, ...props }, ref) => <li ref={ref} className={cn('', className)} {...props} />,\n);\nPaginationItem.displayName = 'PaginationItem';\n\ntype PaginationLinkProps = {\n  isActive?: boolean;\n} & Pick<ButtonProps, 'size'> &\n  React.ComponentProps<'a'>;\n\nconst PaginationLink = ({\n  className,\n  isActive = false,\n  size = 'icon',\n  children,\n  ...props\n}: PaginationLinkProps) => (\n  <a\n    aria-current={isActive ? 'page' : undefined}\n    className={cn(\n      buttonVariants({\n        variant: isActive ? 'outline' : 'ghost',\n        size,\n      }),\n      className,\n    )}\n    {...props}\n  >\n    {children || <span className=\"sr-only\">Page link</span>}\n  </a>\n);\nPaginationLink.displayName = 'PaginationLink';\n\nconst PaginationPrevious = ({\n  className,\n  ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n  <PaginationLink\n    aria-label=\"Go to previous page\"\n    size=\"default\"\n    className={cn('gap-1 pl-2.5', className)}\n    {...props}\n  >\n    <ChevronLeft className=\"h-4 w-4\" />\n    <span>Previous</span>\n  </PaginationLink>\n);\nPaginationPrevious.displayName = 'PaginationPrevious';\n\nconst PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (\n  <PaginationLink\n    aria-label=\"Go to next page\"\n    size=\"default\"\n    className={cn('gap-1 pr-2.5', className)}\n    {...props}\n  >\n    <span>Next</span>\n    <ChevronRight className=\"h-4 w-4\" />\n  </PaginationLink>\n);\nPaginationNext.displayName = 'PaginationNext';\n\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n  <span\n    aria-hidden\n    className={cn('flex h-9 w-9 items-center justify-center', className)}\n    {...props}\n  >\n    <MoreHorizontal className=\"h-4 w-4\" />\n    <span className=\"sr-only\">More pages</span>\n  </span>\n);\nPaginationEllipsis.displayName = 'PaginationEllipsis';\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { cn } from \"~/utils\"\n\nfunction Popover({\n    ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n    return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n    ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n    return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n    className,\n    align = \"center\",\n    sideOffset = 4,\n    ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n    return (\n        <PopoverPrimitive.Portal>\n            <PopoverPrimitive.Content\n                data-slot=\"popover-content\"\n                align={align}\n                sideOffset={sideOffset}\n                className={cn(\n                    \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n                    className\n                )}\n                {...props}\n            />\n        </PopoverPrimitive.Portal>\n    )\n}\n\nfunction PopoverAnchor({\n    ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n    return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Progress.tsx",
    "content": "import * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport { cn } from '~/utils';\n\nconst Progress = React.forwardRef<\n  React.ElementRef<typeof ProgressPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n  <ProgressPrimitive.Root\n    ref={ref}\n    className={cn('relative h-2 w-full overflow-hidden rounded-full bg-primary/20', className)}\n    {...props}\n  >\n    <ProgressPrimitive.Indicator\n      className=\"h-full w-full flex-1 bg-primary transition-all\"\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n    />\n  </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Prompt.tsx",
    "content": "import { useLocalize } from '~/hooks';\n\nexport default function Prompt({ title, prompt }: { title: string; prompt: string }) {\n  const localize = useLocalize();\n\n  return (\n    <div\n      // onclick=\"selectPromptTemplate(0)\"\n      className=\"flex w-full flex-col gap-2 rounded-md bg-gray-50 p-4 text-left hover:bg-gray-200 dark:bg-white/5 \"\n    >\n      <h2 className=\"m-auto flex items-center gap-3 text-lg font-normal md:flex-col md:gap-2\">\n        {title}\n      </h2>\n      <button>\n        <p className=\"w-full rounded-md bg-gray-50 p-3 hover:bg-gray-200 dark:bg-white/5 dark:hover:bg-gray-800\">\n          {prompt}\n        </p>\n      </button>\n      <span className=\"font-medium\">{localize('com_ui_use_prompt')} →</span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/QuestionMark.tsx",
    "content": "import { cn } from '~/utils';\nexport const QuestionMark = ({ className = '' }) => {\n  return (\n    <span>\n      <div\n        className={cn(\n          'border-token-border-medium text-token-text-tertiary ml-2 flex h-3.5 w-3.5 cursor-default items-center justify-center rounded-full border text-[0.5rem] font-medium leading-none',\n          className,\n        )}\n      >\n        ?\n      </div>\n    </span>\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Resizable.tsx",
    "content": "import { GripVertical } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { cn } from '~/utils';\n\nconst ResizablePanelGroup = ({\n  className = '',\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n  <ResizablePrimitive.PanelGroup\n    className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n    {...props}\n  />\n);\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nconst ResizableHandle = ({\n  withHandle,\n  className = '',\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n  withHandle?: boolean;\n}) => (\n  <ResizablePrimitive.PanelResizeHandle\n    className={cn(\n      'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n      className,\n    )}\n    {...props}\n  >\n    {withHandle && (\n      <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border\">\n        <GripVertical className=\"h-2.5 w-2.5\" />\n      </div>\n    )}\n  </ResizablePrimitive.PanelResizeHandle>\n);\n\nconst ResizableHandleAlt = ({\n  withHandle,\n  className = '',\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n  withHandle?: boolean;\n}) => (\n  <ResizablePrimitive.PanelResizeHandle\n    className={cn(\n      'bg-border focus-visible:ring-ring group relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n      className,\n    )}\n    {...props}\n  >\n    {withHandle && (\n      <div className=\"bg-border invisible z-10 flex h-4 w-3 items-center justify-center rounded-sm border group-hover:visible group-active:visible\">\n        <GripVertical className=\"h-2.5 w-2.5\" />\n      </div>\n    )}\n  </ResizablePrimitive.PanelResizeHandle>\n);\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle, ResizableHandleAlt };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Select.tsx",
    "content": "\"use client\"\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cn } from \"~/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, showIcon = true, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"group flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-500\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    {\n      showIcon && <SelectPrimitive.Icon asChild>\n        <ChevronDown className=\"h-4 w-4 min-w-4 opacity-80 group-data-[state=open]:rotate-180\" />\n      </SelectPrimitive.Icon>\n    }\n  </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp />\n  </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown />\n  </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, headNode = null, footerNode = null, auto, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-[#DEE3EF] dark:border-[#484B57] bg-popover text-popover-foreground dark:text-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        position === \"popper\" &&\n        \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      {headNode}\n      {/* <SelectScrollUpButton /> */}\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" && !auto &&\n          \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      {/* <SelectScrollDownButton /> */}\n      {footerNode}\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n    {...props}\n  />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-[#EBF0FF] dark:focus:bg-gray-700 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n  Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue\n}\n\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/SelectDropDown.tsx",
    "content": "import React, { useRef } from 'react';\nimport {\n  Label,\n  Listbox,\n  Transition,\n  ListboxButton,\n  ListboxOption,\n  ListboxOptions,\n} from '@headlessui/react';\nimport type { Option, OptionWithIcon, DropdownValueSetter } from '~/common';\nimport CheckMark from '~/components/svg/CheckMark';\nimport { useMultiSearch } from './MultiSearch';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils/';\n\ntype SelectDropDownProps = {\n  id?: string;\n  title?: string;\n  disabled?: boolean;\n  value: string | null | Option | OptionWithIcon;\n  setValue: DropdownValueSetter | ((value: string) => void);\n  tabIndex?: number;\n  availableValues?: string[] | Option[] | OptionWithIcon[];\n  emptyTitle?: boolean;\n  showAbove?: boolean;\n  showLabel?: boolean;\n  iconSide?: 'left' | 'right';\n  optionIconSide?: 'left' | 'right';\n  renderOption?: () => React.ReactNode;\n  containerClassName?: string;\n  currentValueClass?: string;\n  optionsListClass?: string;\n  optionsClass?: string;\n  subContainerClassName?: string;\n  className?: string;\n  placeholder?: string;\n  searchClassName?: string;\n  searchPlaceholder?: string;\n  showOptionIcon?: boolean;\n};\n\nfunction getOptionText(option: string | Option | OptionWithIcon): string {\n  if (typeof option === 'string') {\n    return option;\n  }\n  if ('label' in option) {\n    return option.label ?? '';\n  }\n  if ('value' in option) {\n    return (option.value ?? '') + '';\n  }\n  return '';\n}\n\nfunction SelectDropDown({\n  title: _title,\n  value,\n  disabled,\n  setValue,\n  availableValues,\n  showAbove = false,\n  showLabel = true,\n  emptyTitle = false,\n  iconSide = 'right',\n  optionIconSide = 'left',\n  placeholder,\n  containerClassName,\n  optionsListClass,\n  optionsClass,\n  currentValueClass,\n  subContainerClassName,\n  className,\n  renderOption,\n  searchClassName,\n  searchPlaceholder,\n  showOptionIcon = false,\n}: SelectDropDownProps) {\n  const localize = useLocalize();\n  const transitionProps = { className: 'top-full mt-3' };\n  if (showAbove) {\n    transitionProps.className = 'bottom-full mb-3';\n  }\n\n  let title = _title;\n  if (emptyTitle) {\n    title = '';\n  } else if (!(title ?? '')) {\n    title = localize('com_ui_model');\n  }\n  const values = availableValues ?? [];\n\n  // Enable searchable select if enough items are provided.\n  const [filteredValues, searchRender] = useMultiSearch<string[] | Option[]>({\n    availableOptions: values,\n    placeholder: searchPlaceholder,\n    getTextKeyOverride: (option) => getOptionText(option).toUpperCase(),\n    className: searchClassName,\n    disabled,\n  });\n  const hasSearchRender = searchRender != null;\n  const options = hasSearchRender ? filteredValues : values;\n  const renderIcon = showOptionIcon && value != null && (value as OptionWithIcon).icon != null;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  return (\n    <div className={cn('flex items-center justify-center gap-2', containerClassName ?? '')}>\n      <div className={cn('relative w-full', subContainerClassName ?? '')}>\n        <Listbox value={value} onChange={setValue} disabled={disabled}>\n          {({ open }) => (\n            <>\n              <ListboxButton\n                ref={buttonRef}\n                data-testid=\"select-dropdown-button\"\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter') {\n                    e.preventDefault();\n                    if (!open && buttonRef.current) {\n                      buttonRef.current.click();\n                    }\n                  }\n                }}\n                className={cn(\n                  'relative flex w-full cursor-default flex-col rounded-md border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:bg-white dark:border-gray-600 dark:bg-gray-700 sm:text-sm',\n                  className ?? '',\n                )}\n              >\n                {showLabel && (\n                  <Label\n                    className=\"block text-xs text-gray-700 dark:text-gray-500\"\n                    id=\"headlessui-listbox-label-:r1:\"\n                    data-headlessui-state=\"\"\n                  >\n                    {title}\n                  </Label>\n                )}\n                <span className=\"inline-flex w-full truncate\">\n                  <span\n                    className={cn(\n                      'flex h-6 items-center gap-1 truncate text-sm text-gray-800 dark:text-white',\n                      !showLabel ? 'text-xs' : '',\n                      currentValueClass ?? '',\n                    )}\n                  >\n                    {!showLabel && !emptyTitle && (\n                      <span className=\"text-xs text-gray-700 dark:text-gray-500\">{title}:</span>\n                    )}\n                    {renderIcon && optionIconSide !== 'right' && (\n                      <span className=\"icon-md flex items-center\">\n                        {(value as OptionWithIcon).icon}\n                      </span>\n                    )}\n                    {renderIcon && (\n                      <span className=\"icon-md absolute right-0 mr-8 flex items-center\">\n                        {(value as OptionWithIcon).icon}\n                      </span>\n                    )}\n                    {(() => {\n                      if (!value) {\n                        return <span className=\"text-text-secondary\">{placeholder}</span>;\n                      }\n                      if (typeof value !== 'string') {\n                        return value.label ?? '';\n                      }\n                      return value;\n                    })()}\n                  </span>\n                </span>\n                <span className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\">\n                  <svg\n                    stroke=\"currentColor\"\n                    fill=\"none\"\n                    strokeWidth=\"2\"\n                    viewBox=\"0 0 24 24\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    className=\"h-4 w-4 text-gray-400\"\n                    height=\"1em\"\n                    width=\"1em\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    style={showAbove ? { transform: 'scaleY(-1)' } : {}}\n                  >\n                    <polyline points=\"6 9 12 15 18 9\"></polyline>\n                  </svg>\n                </span>\n              </ListboxButton>\n              <Transition\n                show={open}\n                as={React.Fragment}\n                leave=\"transition ease-in duration-100\"\n                leaveFrom=\"opacity-100\"\n                leaveTo=\"opacity-0\"\n                {...transitionProps}\n              >\n                <ListboxOptions\n                  className={cn(\n                    'absolute z-10 mt-2 max-h-60 w-full overflow-auto rounded border bg-white text-xs ring-black/10 dark:border-gray-600 dark:bg-gray-700 dark:ring-white/20 md:w-[100%]',\n                    optionsListClass ?? '',\n                  )}\n                >\n                  {renderOption && (\n                    <ListboxOption\n                      key={'listbox-render-option'}\n                      value={null}\n                      className={cn(\n                        'group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden pl-3 pr-9 text-gray-800 hover:bg-gray-20 dark:text-white dark:hover:bg-gray-700',\n                        optionsClass ?? '',\n                      )}\n                    >\n                      {renderOption()}\n                    </ListboxOption>\n                  )}\n                  {searchRender}\n                  {options.map((option: string | Option, i: number) => {\n                    if (!option) {\n                      return null;\n                    }\n                    const currentLabel =\n                      typeof option === 'string' ? option : (option.label ?? option.value ?? '');\n                    const currentValue = typeof option === 'string' ? option : (option.value ?? '');\n                    const currentIcon =\n                      typeof option === 'string'\n                        ? null\n                        : ((option.icon as React.ReactNode) ?? null);\n                    let activeValue: string | number | null | Option = value;\n                    if (typeof activeValue !== 'string') {\n                      activeValue = activeValue?.value ?? '';\n                    }\n                    return (\n                      <ListboxOption\n                        key={i}\n                        value={option}\n                        className={({ active }) =>\n                          cn(\n                            'group relative flex h-[42px] cursor-pointer select-none items-center overflow-hidden pl-3 pr-9 text-gray-800 hover:bg-gray-20 dark:text-white dark:hover:bg-gray-600',\n                            active ? 'bg-surface-active text-text-primary' : '',\n                            optionsClass ?? '',\n                          )\n                        }\n                      >\n                        <span className=\"flex items-center gap-1.5 truncate\">\n                          <span\n                            className={cn(\n                              'flex h-6 items-center gap-1 text-gray-800 dark:text-gray-200',\n                              option === value ? 'font-semibold' : '',\n                              iconSide === 'left' ? 'ml-4' : '',\n                            )}\n                          >\n                            {currentIcon != null && (\n                              <span\n                                className={cn(\n                                  'mr-1',\n                                  optionIconSide === 'right' ? 'absolute right-0 pr-2' : '',\n                                )}\n                              >\n                                {currentIcon}\n                              </span>\n                            )}\n                            {currentLabel}\n                          </span>\n                          {currentValue === activeValue && (\n                            <span\n                              className={cn(\n                                'absolute inset-y-0 flex items-center text-gray-800 dark:text-gray-200',\n                                iconSide === 'left' ? 'left-0 pl-2' : 'right-0 pr-3',\n                              )}\n                            >\n                              <CheckMark />\n                            </span>\n                          )}\n                        </span>\n                      </ListboxOption>\n                    );\n                  })}\n                </ListboxOptions>\n              </Transition>\n            </>\n          )}\n        </Listbox>\n      </div>\n    </div>\n  );\n}\n\nexport default SelectDropDown;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/SelectDropDownPop.tsx",
    "content": "import React from 'react';\nimport { Root, Trigger, Content, Portal } from '@radix-ui/react-popover';\nimport MenuItem from '~/components/Chat/Menus/UI/MenuItem';\nimport type { Option } from '~/common';\nimport { useLocalize } from '~/hooks';\nimport { cn } from '~/utils/';\nimport { useMultiSearch } from './MultiSearch';\n\ntype SelectDropDownProps = {\n  id?: string;\n  title?: string;\n  value: string | null | Option;\n  disabled?: boolean;\n  setValue: (value: string) => void;\n  availableValues: string[] | Option[];\n  emptyTitle?: boolean;\n  showAbove?: boolean;\n  showLabel?: boolean;\n  iconSide?: 'left' | 'right';\n  renderOption?: () => React.ReactNode;\n  footer?: React.ReactNode;\n};\n\nfunction SelectDropDownPop({\n  title: _title,\n  value,\n  availableValues,\n  setValue,\n  showAbove = false,\n  showLabel = true,\n  emptyTitle = false,\n  footer,\n}: SelectDropDownProps) {\n  const localize = useLocalize();\n  const transitionProps = { className: 'top-full mt-3' };\n  if (showAbove) {\n    transitionProps.className = 'bottom-full mb-3';\n  }\n\n  let title = _title;\n\n  if (emptyTitle) {\n    title = '';\n  } else if (!title) {\n    title = localize('com_ui_model');\n  }\n\n  // Detemine if we should to convert this component into a searchable select.  If we have enough elements, a search\n  // input will appear near the top of the menu, allowing correct filtering of different model menu items. This will\n  // reset once the component is unmounted (as per a normal search)\n  const [filteredValues, searchRender] = useMultiSearch<string[] | Option[]>({\n    availableOptions: availableValues,\n  });\n  const hasSearchRender = Boolean(searchRender);\n  const options = hasSearchRender ? filteredValues : availableValues;\n\n  return (\n    <Root>\n      <div className={'flex items-center justify-center gap-2'}>\n        <div className={'relative w-full'}>\n          <Trigger asChild>\n            <button\n              data-testid=\"select-dropdown-button\"\n              className={cn(\n                'pointer-cursor relative flex flex-col rounded-lg border border-black/10 bg-white py-2 pl-3 pr-10 text-left focus:ring-0 focus:ring-offset-0 dark:border-gray-700 dark:bg-gray-800 sm:text-sm',\n                'hover:bg-gray-50 radix-state-open:bg-gray-50 dark:hover:bg-gray-700 dark:radix-state-open:bg-gray-700',\n                'min-w-[200px] max-w-[215px] sm:min-w-full sm:max-w-full',\n              )}\n              aria-label={`Select ${title}`}\n              aria-haspopup=\"false\"\n            >\n              {' '}\n              {showLabel && (\n                <label className=\"block text-xs text-gray-700 dark:text-gray-500\">{title}</label>\n              )}\n              <span className=\"inline-flex w-full\">\n                <span\n                  className={cn(\n                    'flex h-6 items-center gap-1 text-sm text-text-primary',\n                    !showLabel ? 'text-xs' : '',\n                    'min-w-[75px] font-normal',\n                  )}\n                >\n                  {typeof value !== 'string' && value ? (value.label ?? '') : (value ?? '')}\n                </span>\n              </span>\n              <span className=\"absolute inset-y-0 right-0 flex items-center pr-2\">\n                <svg\n                  stroke=\"currentColor\"\n                  fill=\"none\"\n                  strokeWidth=\"2\"\n                  viewBox=\"0 0 24 24\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  className=\"h-4 w-4 text-gray-400\"\n                  height=\"1em\"\n                  width=\"1em\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  style={showAbove ? { transform: 'scaleY(-1)' } : {}}\n                >\n                  <polyline points=\"6 9 12 15 18 9\"></polyline>\n                </svg>\n              </span>\n            </button>\n          </Trigger>\n          <Portal>\n            <Content\n              side=\"bottom\"\n              align=\"start\"\n              className={cn(\n                'mr-3 mt-2 max-h-[52vh] w-full max-w-[85vw] overflow-hidden overflow-y-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-700 dark:text-white sm:max-w-full lg:max-h-[52vh]',\n                hasSearchRender && 'relative',\n              )}\n            >\n              {searchRender}\n              {options.map((option) => {\n                return (\n                  <MenuItem\n                    key={option}\n                    title={option}\n                    value={option}\n                    selected={!!(value && value === option)}\n                    onClick={() => setValue(option)}\n                  />\n                );\n              })}\n              {footer}\n            </Content>\n          </Portal>\n        </div>\n      </div>\n    </Root>\n  );\n}\n\nexport default SelectDropDownPop;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Separator.tsx",
    "content": "import * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '~/utils';\n\nconst Separator = React.forwardRef<\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className = '', orientation = 'horizontal', decorative = true, ...props }, ref) => (\n  <SeparatorPrimitive.Root\n    ref={ref}\n    decorative={decorative}\n    orientation={orientation}\n    className={cn(\n      'shrink-0 bg-border-light',\n      orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n      className,\n    )}\n    {...props}\n  />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"~/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n    return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n    return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n    return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n    return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n    className,\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n    return (\n        <SheetPrimitive.Overlay\n            data-slot=\"sheet-overlay\"\n            className={cn(\n                \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction SheetContent({\n    className,\n    children,\n    side = \"right\",\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n    side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n    return (\n        <SheetPortal>\n            <SheetOverlay />\n            <SheetPrimitive.Content\n                data-slot=\"sheet-content\"\n                className={cn(\n                    \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n                    side === \"right\" &&\n                    \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n                    side === \"left\" &&\n                    \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n                    side === \"top\" &&\n                    \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n                    side === \"bottom\" &&\n                    \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n                    className\n                )}\n                {...props}\n            >\n                {children}\n                <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 disabled:pointer-events-none\">\n                    <XIcon className=\"size-4\" />\n                    <span className=\"sr-only\">Close</span>\n                </SheetPrimitive.Close>\n            </SheetPrimitive.Content>\n        </SheetPortal>\n    )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"sheet-header\"\n            className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n    return (\n        <div\n            data-slot=\"sheet-footer\"\n            className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction SheetTitle({\n    className,\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n    return (\n        <SheetPrimitive.Title\n            data-slot=\"sheet-title\"\n            className={cn(\"text-foreground font-semibold\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction SheetDescription({\n    className,\n    ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n    return (\n        <SheetPrimitive.Description\n            data-slot=\"sheet-description\"\n            className={cn(\"text-muted-foreground text-sm\", className)}\n            {...props}\n        />\n    )\n}\n\nexport {\n    Sheet,\n    SheetTrigger,\n    SheetClose,\n    SheetContent,\n    SheetHeader,\n    SheetFooter,\n    SheetTitle,\n    SheetDescription,\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Skeleton.tsx",
    "content": "import { cn } from '~/utils';\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\n        'animate-pulse rounded-md bg-surface-tertiary opacity-50 dark:opacity-25',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Skeleton };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Slider.tsx",
    "content": "import * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '~/utils';\n\nconst Slider = React.forwardRef<\n  React.ElementRef<typeof SliderPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> & { onDoubleClick?: () => void }\n    >(({ className, onDoubleClick, ...props }, ref) => (\n      <SliderPrimitive.Root\n        ref={ref}\n        className={cn(\n          'relative flex w-full cursor-pointer touch-none select-none items-center',\n          className,\n        )}\n        onDoubleClick={onDoubleClick}\n        {...props}\n      >\n        <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\n          <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n        </SliderPrimitive.Track>\n        <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\n      </SliderPrimitive.Root>\n    ));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Steps.tsx",
    "content": "import { Check } from \"lucide-react\";\nimport React from \"react\";\n/**\n * \n组件参数说明：\n \n    参数名\t类型\t默认值\t说明\n    steps\tnumber\t2\t总步骤数\n    currentStep\tnumber\t1\t当前所在步骤（从1开始）\n    align\tstring\t\"left\"\t对齐方式，可选值：\"left\", \"center\", \"right\"\n    labels\tstring[]\t[]\t自定义步骤文字，数组长度需与steps一致，未提供时显示\"第 x 步\"\n */\ninterface StepProgressProps {\n    steps?: number;\n    currentStep?: number;\n    align?: \"left\" | \"center\" | \"right\";\n    labels?: string[];\n}\n\n/**\n使用示例：\n    // 三步流程，当前在第二步，居中布局\n    <StepProgress\n        steps={3}\n        currentStep={2}\n        align=\"center\"\n        labels={[\"填写信息\", \"验证身份\", \"完成注册\"]}\n    />\n*/\nexport default function StepProgress({\n    steps = 2,\n    currentStep = 1,\n    align = \"left\",\n    labels = []\n}: StepProgressProps) {\n    steps = labels.length || steps;\n    // 处理边界情况\n    const validatedStep = Math.min(Math.max(currentStep, 1), steps);\n    const alignmentClasses = {\n        left: \"justify-start\",\n        center: \"justify-center\",\n        right: \"justify-end\"\n    };\n\n    return (\n        <div className={`flex items-center gap-6 my-6 px-12 text-md font-bold ${alignmentClasses[align]}`}>\n            {Array.from({ length: steps }).map((_, index) => {\n                const isCompleted = index < validatedStep - 1;\n                const isCurrent = index === validatedStep - 1;\n\n                return (\n                    <React.Fragment key={index}>\n                        <div className=\"flex items-center gap-2\">\n                            {/* 圆形指示器 */}\n                            <div\n                                className={`size-[26px] rounded-full flex items-center justify-center text-[#fff] transition-colors\n                    ${isCompleted || isCurrent ? \"bg-primary \" : \"bg-primary/30\"}`}\n                            >\n                                {isCompleted ? <Check size={16} /> : <span>{index + 1}</span>}\n                            </div>\n                            {/* 步骤文字 */}\n                            <span\n                                className={`transition-colors ${isCompleted || isCurrent ? \"text-primary\" : \"text-gray-600\"}`}\n                            >\n                                {labels[index] || `第 ${index + 1} 步`}\n                            </span>\n                        </div>\n                        {/* 步骤连接线 */}\n                        {index !== steps - 1 && (\n                            <div\n                                className={`h-[1px] flex-grow transition-colors max-w-10 ${isCompleted ? \"bg-primary\" : \"bg-gray-300\"}`}\n                            />\n                        )}\n                    </React.Fragment>\n                );\n            })}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/client/src/components/ui/Switch.tsx",
    "content": "import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport { cn } from '~/utils';\n\nconst Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitives.Root\n    className={cn(\n      'peer inline-flex h-5 w-10 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-unchecked',\n      className,\n    )}\n    {...props}\n    ref={ref}\n  >\n    <SwitchPrimitives.Thumb\n      className={cn(\n        'pointer-events-none block h-4 w-[22px] rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-3.5 data-[state=unchecked]:translate-x-0',\n      )}\n    />\n  </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Table.tsx",
    "content": "import * as React from 'react';\nimport { cn } from '~/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n  ({ className, ...props }, ref) => (\n    <div className=\"relative w-full overflow-auto\">\n      <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n    </div>\n  ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n    {...props}\n  />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n  ({ className, ...props }, ref) => (\n    <tr\n      ref={ref}\n      className={cn(\n        'hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border-light transition-colors',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      'text-muted-foreground h-12 px-4 text-left align-middle font-medium [&:has([role=checkbox])]:pr-0',\n      className,\n    )}\n    {...props}\n  />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n    {...props}\n  />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption ref={ref} className={cn('text-muted-foreground mt-4 text-sm', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Tabs.tsx",
    "content": "import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cn } from '~/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className = '', ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      'inline-flex items-center justify-center rounded-md bg-surface-primary',\n      className,\n    )}\n    {...props}\n  />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className = '', ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    className={cn(\n      'inline-flex min-w-[100px] items-center justify-center rounded-[0.185rem] px-3 py-1.5 text-sm font-medium text-gray-700 transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-white data-[state=active]:text-gray-800 data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-700 dark:data-[state=active]:text-gray-200',\n      className,\n    )}\n    {...props}\n    ref={ref}\n  />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className = '', ...props }, ref) => (\n  <TabsPrimitive.Content className={cn('mt-2 rounded-md p-6', className)} {...props} ref={ref} />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Tag.tsx",
    "content": "import * as React from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '~/utils';\n\ntype TagProps = React.ComponentPropsWithoutRef<'div'> & {\n  label: string;\n  labelClassName?: string;\n  CancelButton?: React.ReactNode;\n  LabelNode?: React.ReactNode;\n  onRemove?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nconst TagPrimitiveRoot = React.forwardRef<HTMLDivElement, TagProps>(\n  (\n    { CancelButton, LabelNode, label, onRemove, className = '', labelClassName = '', ...props },\n    ref,\n  ) => (\n    <div\n      ref={ref}\n      {...props}\n      className={cn(\n        'flex max-h-8 items-center overflow-y-hidden rounded-3xl border-2 border-green-600 bg-green-600/20 text-xs text-green-600 dark:text-white',\n        className,\n      )}\n    >\n      <div className={cn('ml-1 whitespace-pre-wrap px-2 py-1', labelClassName)}>\n        {LabelNode ? <>{LabelNode} </> : null}\n        {label}\n      </div>\n      {CancelButton\n        ? CancelButton\n        : onRemove && (\n          <button\n            onClick={(e) => {\n              e.stopPropagation();\n              onRemove(e);\n            }}\n            className=\"rounded-full bg-green-600/50\"\n            aria-label={`Remove ${label}`}\n          >\n            <X className=\"m-[1.5px] p-1\" />\n          </button>\n        )}\n    </div>\n  ),\n);\n\nTagPrimitiveRoot.displayName = 'Tag';\n\nexport const Tag = React.memo(TagPrimitiveRoot);\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/TermsAndConditionsModal.tsx",
    "content": "import { useMemo } from 'react';\nimport type { TTermsOfService } from '~/data-provider/data-provider/src';\nimport MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite';\nimport DialogTemplate from '~/components/ui/DialogTemplate';\nimport { useAcceptTermsMutation } from '~/data-provider';\nimport { useToastContext } from '~/Providers';\nimport { OGDialog } from '~/components/ui';\nimport { useLocalize } from '~/hooks';\n\nconst TermsAndConditionsModal = ({\n  open,\n  onOpenChange,\n  onAccept,\n  onDecline,\n  title,\n  modalContent,\n}: {\n  open: boolean;\n  onOpenChange: (isOpen: boolean) => void;\n  onAccept: () => void;\n  onDecline: () => void;\n  title?: string;\n  contentUrl?: string;\n  modalContent?: TTermsOfService['modalContent'];\n}) => {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const acceptTermsMutation = useAcceptTermsMutation({\n    onSuccess: () => {\n      onAccept();\n      onOpenChange(false);\n    },\n    onError: () => {\n      showToast({ message: 'Failed to accept terms' });\n    },\n  });\n\n  const handleAccept = () => {\n    acceptTermsMutation.mutate();\n  };\n\n  const handleDecline = () => {\n    onDecline();\n    onOpenChange(false);\n  };\n\n  const handleOpenChange = (isOpen: boolean) => {\n    if (open && !isOpen) {\n      return;\n    }\n    onOpenChange(isOpen);\n  };\n\n  const content = useMemo(() => {\n    if (typeof modalContent === 'string') {\n      return modalContent;\n    }\n\n    if (Array.isArray(modalContent)) {\n      return modalContent.join('\\n');\n    }\n\n    return '';\n  }, [modalContent]);\n\n  return (\n    <OGDialog open={open} onOpenChange={handleOpenChange}>\n      <DialogTemplate\n        title={title ?? localize('com_ui_terms_and_conditions')}\n        className=\"w-11/12 max-w-3xl sm:w-3/4 md:w-1/2 lg:w-2/5\"\n        showCloseButton={false}\n        showCancelButton={false}\n        main={\n          <section\n            // Motivation: This is a dialog, so its content should be focusable\n            // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n            tabIndex={0}\n            className=\"max-h-[60vh] overflow-y-auto p-4\"\n            aria-label={localize('com_ui_terms_and_conditions')}\n          >\n            <div className=\"prose dark:prose-invert w-full max-w-none !text-text-primary\">\n              {content !== '' ? (\n                <MarkdownLite content={content} />\n              ) : (\n                <p>{localize('com_ui_no_terms_content')}</p>\n              )}\n            </div>\n          </section>\n        }\n        buttons={\n          <>\n            <button\n              onClick={handleDecline}\n              className=\"inline-flex h-10 items-center justify-center rounded-lg border border-border-heavy bg-surface-secondary px-4 py-2 text-sm text-text-primary hover:bg-surface-active\"\n            >\n              {localize('com_ui_decline')}\n            </button>\n            <button\n              onClick={handleAccept}\n              className=\"inline-flex h-10 items-center justify-center rounded-lg border border-border-heavy bg-surface-secondary px-4 py-2 text-sm text-text-primary hover:bg-green-500 hover:text-white focus:bg-green-500 focus:text-white dark:hover:bg-green-600 dark:focus:bg-green-600\"\n            >\n              {localize('com_ui_accept')}\n            </button>\n          </>\n        }\n      />\n    </OGDialog>\n  );\n};\n\nexport default TermsAndConditionsModal;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Textarea.tsx",
    "content": "/* eslint-disable */\nimport * as React from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nimport { cn } from '../../utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> { }\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n  ({ className = '', ...props }, ref) => {\n    return (\n      <textarea\n        className={cn(\n          \"flex min-h-[80px] w-full rounded-md border bg-search-input px-3 py-2 text-sm text-[#111] dark:text-gray-50 shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n          className,\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  },\n);\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/TextareaAutosize.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { forwardRef, useLayoutEffect, useState } from 'react';\nimport ReactTextareaAutosize from 'react-textarea-autosize';\nimport type { TextareaAutosizeProps } from 'react-textarea-autosize';\nimport store from '~/store';\n\nexport const TextareaAutosize = forwardRef<HTMLTextAreaElement, TextareaAutosizeProps>(\n  (props, ref) => {\n    const [, setIsRerendered] = useState(false);\n    const chatDirection = useRecoilValue(store.chatDirection).toLowerCase();\n    useLayoutEffect(() => setIsRerendered(true), []);\n    return <ReactTextareaAutosize dir={chatDirection} {...props} ref={ref} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/ThemeSelector.tsx",
    "content": "import React, { useContext, useCallback, useEffect, useState } from 'react';\nimport { Sun, Moon, Monitor } from 'lucide-react';\nimport { ThemeContext } from '~/hooks';\n\ndeclare global {\n  interface Window {\n    lastThemeChange?: number;\n  }\n}\n\nconst Theme = ({ theme, onChange }: { theme: string; onChange: (value: string) => void }) => {\n  const themeIcons = {\n    system: <Monitor />,\n    dark: <Moon color=\"white\" />,\n    light: <Sun />,\n  };\n\n  const nextTheme = theme === 'dark' ? 'light' : 'dark';\n  const label = `Switch to ${nextTheme} theme`;\n\n  useEffect(() => {\n    const handleKeyPress = (e: KeyboardEvent) => {\n      if (e.ctrlKey && e.shiftKey && e.key.toLowerCase() === 't') {\n        e.preventDefault();\n        onChange(nextTheme);\n      }\n    };\n    window.addEventListener('keydown', handleKeyPress);\n    return () => window.removeEventListener('keydown', handleKeyPress);\n  }, [nextTheme, onChange]);\n\n  return (\n    <button\n      className=\"flex items-center gap-2 rounded-lg p-2 transition-colors hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\"\n      aria-label={label}\n      aria-keyshortcuts=\"Ctrl+Shift+T\"\n      onClick={(e) => {\n        e.preventDefault();\n        onChange(nextTheme);\n      }}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          onChange(nextTheme);\n        }\n      }}\n    >\n      {themeIcons[theme]}\n    </button>\n  );\n};\n\nconst ThemeSelector = ({ returnThemeOnly }: { returnThemeOnly?: boolean }) => {\n  const { theme, setTheme } = useContext(ThemeContext);\n  const [announcement, setAnnouncement] = useState('');\n\n  const changeTheme = useCallback(\n    (value: string) => {\n      const now = Date.now();\n      if (typeof window.lastThemeChange === 'number' && now - window.lastThemeChange < 500) {\n        return;\n      }\n      window.lastThemeChange = now;\n\n      setTheme(value);\n      setAnnouncement(value === 'dark' ? 'Dark theme enabled' : 'Light theme enabled');\n    },\n    [setTheme],\n  );\n\n  useEffect(() => {\n    if (theme === 'system') {\n      const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;\n      setTheme(prefersDarkScheme ? 'dark' : 'light');\n    }\n  }, [theme, setTheme]);\n\n  useEffect(() => {\n    if (announcement) {\n      const timeout = setTimeout(() => setAnnouncement(''), 1000);\n      return () => clearTimeout(timeout);\n    }\n  }, [announcement]);\n\n  if (returnThemeOnly === true) {\n    return <Theme theme={theme} onChange={changeTheme} />;\n  }\n\n  return (\n    <div className=\"flex flex-col items-center justify-center bg-white pt-6 dark:bg-gray-900 sm:pt-0\">\n      {/* <div className=\"absolute bottom-0 left-0 m-4\">\n        <Theme theme={theme} onChange={changeTheme} />\n      </div> */}\n      {announcement && (\n        <div aria-live=\"polite\" className=\"sr-only\">\n          {announcement}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ThemeSelector;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Toast.tsx",
    "content": "import * as RadixToast from '@radix-ui/react-toast';\nimport { NotificationSeverity } from '~/common/types';\nimport { useToast } from '~/hooks';\n\nexport default function Toast() {\n  const { toast, onOpenChange } = useToast();\n  const severityClassName = {\n    [NotificationSeverity.INFO]: 'border-gray-500 bg-gray-500',\n    [NotificationSeverity.SUCCESS]: 'border-green-500 bg-green-500',\n    [NotificationSeverity.WARNING]: 'border-orange-500 bg-orange-500',\n    [NotificationSeverity.ERROR]: 'border-red-500 bg-red-500',\n  };\n\n  return (\n    <RadixToast.Root\n      open={toast.open}\n      onOpenChange={onOpenChange}\n      className=\"toast-root\"\n      style={{\n        height: '74px',\n        marginBottom: '0px',\n      }}\n    >\n      <div className=\"w-full p-1 text-center md:w-auto md:text-justify\">\n        <div\n          className={`alert-root pointer-events-auto inline-flex flex-row gap-2 rounded-md border px-3 py-2 text-white ${\n            severityClassName[toast.severity]\n          }`}\n        >\n          {toast.showIcon && (\n            <div className=\"mt-1 flex-shrink-0 flex-grow-0\">\n              <svg\n                stroke=\"currentColor\"\n                fill=\"none\"\n                strokeWidth=\"2\"\n                viewBox=\"0 0 24 24\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                className=\"icon-sm\"\n                height=\"1em\"\n                width=\"1em\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\" />\n                <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n                <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n              </svg>\n            </div>\n          )}\n          <RadixToast.Description className=\"flex-1 justify-center gap-2\">\n            <div className=\"whitespace-pre-wrap text-left\">{toast.message}</div>\n          </RadixToast.Description>\n        </div>\n      </div>\n    </RadixToast.Root>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Tooltip.tsx",
    "content": "import * as Ariakit from '@ariakit/react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { forwardRef, useMemo } from 'react';\nimport { cn } from '~/utils';\n\ninterface TooltipAnchorProps extends Ariakit.TooltipAnchorProps {\n  description?: string | React.ReactNode;\n  side?: 'top' | 'bottom' | 'left' | 'right';\n  className?: string;\n  focusable?: boolean;\n  role?: string;\n  showSide?:boolean;\n}\n\nexport const TooltipAnchor = forwardRef<HTMLDivElement, TooltipAnchorProps>(function TooltipAnchor(\n  { description,showSide, side = 'top', className, role, ...props },\n  ref,\n) {\n  const tooltip = Ariakit.useTooltipStore({ placement: side });\n  const mounted = Ariakit.useStoreState(tooltip, (state) => state.mounted);\n  const placement = Ariakit.useStoreState(tooltip, (state) => state.placement);\n\n  const { x, y } = useMemo(() => {\n    const dir = placement.split('-')[0];\n    switch (dir) {\n      case 'top':\n        return { x: 0, y: -8 };\n      case 'bottom':\n        return { x: 0, y: 8 };\n      case 'left':\n        return { x: -8, y: 0 };\n      case 'right':\n        return { x: 8, y: 0 };\n      default:\n        return { x: 0, y: 0 };\n    }\n  }, [placement]);\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (role === 'button' && event.key === 'Enter') {\n      event.preventDefault();\n      (event.target as HTMLDivElement).click();\n    }\n  };\n\n  return (\n    <Ariakit.TooltipProvider store={tooltip} hideTimeout={0}>\n      <Ariakit.TooltipAnchor\n        {...props}\n        ref={ref}\n        role={role}\n        onKeyDown={handleKeyDown}\n        className={cn('cursor-pointer', className)}\n      />\n      {!showSide && (\n              <AnimatePresence>\n              {mounted === true && (\n                <Ariakit.Tooltip\n                  gutter={4}\n                  alwaysVisible\n                  className=\"tooltip\"\n                  render={\n                    <motion.div\n                      initial={{ opacity: 0, x, y }}\n                      animate={{ opacity: 1, x: 0, y: 0 }}\n                      exit={{ opacity: 0, x, y }}\n                    />\n                  }\n                >\n                  <Ariakit.TooltipArrow />\n                  <span className='text-sm'>{description}</span>\n                </Ariakit.Tooltip>\n              )}\n            </AnimatePresence>\n      )\n      }\n    </Ariakit.TooltipProvider>\n  );\n});\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/Tooltip2.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { cn } from \"~/utils\"\n\nfunction TooltipProvider({\n    delayDuration = 0,\n    ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n    return (\n        <TooltipPrimitive.Provider\n            data-slot=\"tooltip-provider\"\n            delayDuration={delayDuration}\n            {...props}\n        />\n    )\n}\n\nfunction Tooltip({\n    ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n    return (\n        <TooltipProvider>\n            <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n        </TooltipProvider>\n    )\n}\n\nfunction TooltipTrigger({\n    ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n    return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n    className,\n    sideOffset = 0,\n    children,\n    noArrow = false,\n    ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n    return (\n        <TooltipPrimitive.Portal>\n            <TooltipPrimitive.Content\n                data-slot=\"tooltip-content\"\n                sideOffset={sideOffset}\n                className={cn(\n                    \"bg-black text-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs\",\n                    className\n                )}\n                {...props}\n            >\n                {children}\n                {!noArrow && <TooltipPrimitive.Arrow className=\"bg-black fill-black z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />}\n            </TooltipPrimitive.Content>\n        </TooltipPrimitive.Portal>\n    )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/Apps.tsx",
    "content": "\nimport React from 'react';\n\ninterface FileIconProps {\n    className?: string;\n}\n\nconst AppsIcon: React.FC<FileIconProps> = ({ className = '' }) => {\n\n    return <svg className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"15257\" width=\"16\" height=\"16\"><path d=\"M387.4816 83.7632H119.6032c-37.888 0-68.4032 31.1296-68.4032 69.632v267.0592c0 38.5024 31.1296 69.632 68.4032 69.632h267.8784c37.888 0 68.4032-31.1296 68.4032-69.632V153.3952c0-19.2512-7.168-36.2496-20.2752-49.7664-12.9024-13.1072-29.9008-19.8656-48.128-19.8656z m-14.9504 84.7872v236.544H134.7584V168.5504h237.7728z m14.9504 409.1904H119.6032c-37.888 0-68.4032 31.1296-68.4032 69.632v267.0592c0 38.5024 31.1296 69.632 68.4032 69.632h267.8784c37.888 0 68.4032-31.1296 68.4032-69.632V647.168c0-18.6368-7.168-36.2496-20.2752-49.7664-12.9024-12.6976-29.9008-19.6608-48.128-19.6608z m-14.9504 84.7872v236.9536H134.7584V662.528h237.7728z m504.832-84.7872H609.6896c-37.888 0-68.4032 31.1296-68.4032 69.632v267.0592c0 38.5024 31.1296 69.632 68.4032 69.632h268.0832c37.2736 0 67.7888-31.1296 67.7888-69.632V647.168c0-18.6368-6.9632-35.84-19.8656-49.152-13.1072-12.6976-30.1056-20.2752-48.3328-20.2752z m-14.7456 84.7872v236.9536H624.8448V662.528h237.7728z m131.2768-432.5376L808.96 41.3696C795.648 28.0576 778.4448 20.48 760.4224 20.48c-18.6368 0-35.84 7.168-48.7424 20.2752l-189.6448 193.3312c-26.2144 26.624-26.2144 70.4512 0 97.8944l184.9344 188.6208c13.312 12.6976 30.5152 20.2752 48.7424 20.2752 18.0224 0 35.4304-7.3728 48.7424-19.8656L993.8944 327.68c26.0096-26.4192 26.0096-70.8608 0-97.6896z m-65.1264 47.7184l-173.2608 176.9472-168.96-172.032 173.2608-176.9472 168.96 172.032z m0 0\"\n        fill=\"currentColor\" ></path></svg>\n};\n\nexport default AppsIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/File/FileIcon.tsx",
    "content": "import { BookType, File, FileMinus, Heading, Image, Loader2, Table2 } from \"lucide-react\";\nimport React from \"react\";\n\nexport type FileType =\n    | 'pdf'\n    | 'doc'\n    | 'docx'\n    | 'ppt'\n    | 'pptx'\n    | 'md' | 'html' | 'txt'\n    | 'jpg'\n    | 'jpeg'\n    | 'png'\n    | 'bmp'\n    | 'csv'\n    | 'xls'\n    | 'xlsx';\n\nconst fileTypeColors: Record<FileType, string> = {\n    pdf: 'bg-[#FA423E]',\n    txt: 'bg-gray-500',\n    doc: 'bg-[#0285FF]',\n    docx: 'bg-[#0285FF]',\n    ppt: 'bg-[#FF9800]',\n    pptx: 'bg-[#FF9800]',\n    md: 'bg-gray-400',\n    html: 'bg-red-500',\n    jpg: 'bg-primary',\n    jpeg: 'bg-primary',\n    png: 'bg-primary',\n    bmp: 'bg-primary',\n    csv: 'bg-[#06B84C]',\n    xls: 'bg-[#06B84C]',\n    xlsx: 'bg-[#06B84C]'\n};\n\n// 文件扩展名到图标组件的映射\nconst baseClassName = 'size-10 p-3 text-white flex items-center justify-center rounded-[10px]'\nconst iconComponents: Record<FileType, any> = {\n    pdf: <div className={`${baseClassName} ${fileTypeColors.pdf}`}>\n        <FileMinus />\n    </div>,\n    txt: <div className={`${baseClassName} ${fileTypeColors.txt}`}>\n        <FileMinus />\n    </div>,\n    doc: <div className={`${baseClassName} ${fileTypeColors.doc}`}>\n        <BookType />\n    </div>,\n    docx: <div className={`${baseClassName} ${fileTypeColors.docx}`}>\n        <BookType />\n    </div>,\n    ppt: <div className={`${baseClassName} ${fileTypeColors.ppt}`}>\n        <FileMinus />\n    </div>,\n    pptx: <div className={`${baseClassName} ${fileTypeColors.pptx}`}>\n        <FileMinus />\n    </div>,\n    md: <div className={`${baseClassName} ${fileTypeColors.md}`}>\n        <FileMinus />\n    </div>,\n    html: <div className={`${baseClassName} ${fileTypeColors.html}`}>\n        <Heading />\n    </div>,\n    jpg: <div className={`${baseClassName} ${fileTypeColors.jpg}`}>\n        <Image />\n    </div>,\n    jpeg: <div className={`${baseClassName} ${fileTypeColors.jpeg}`}>\n        <Image />\n    </div>,\n    png: <div className={`${baseClassName} ${fileTypeColors.png}`}>\n        <Image />\n    </div>,\n    bmp: <div className={`${baseClassName} ${fileTypeColors.bmp}`}>\n        <Image />\n    </div>,\n    csv: <div className={`${baseClassName} ${fileTypeColors.csv}`}>\n        <Table2 />\n    </div>,\n    xls: <div className={`${baseClassName} ${fileTypeColors.xls}`}>\n        <Table2 />\n    </div>,\n    xlsx: <div className={`${baseClassName} ${fileTypeColors.xlsx}`}>\n        <Table2 />\n    </div>\n};\n\ninterface FileIconProps extends React.PropsWithChildren<{\n    className?: string;\n    type: FileType;\n    loading?: boolean\n}> { }\n\nexport const FileIcon: React.FC<FileIconProps> = ({ loading = false, type, className }: FileIconProps) => {\n\n    if (loading) {\n        const bgColor = fileTypeColors[type] || 'bg-gray-500';\n\n        return (\n            <div className={`size-10 min-w-10 flex items-center justify-center rounded-[10px] text-white ${bgColor} ${className}`}>\n                <Loader2 size={28} className=\"animate-spin\" />\n            </div>\n        );\n    }\n\n    const baseIcon = iconComponents[type] || iconComponents.txt;\n\n    return React.cloneElement(baseIcon, {\n        className: `${baseIcon.props.className} ${className}`\n    });\n};\n\nconst getSizeClass = (size: 'sm' | 'md' | 'lg') => {\n    switch (size) {\n        case 'sm': return 'size-8';\n        case 'lg': return 'size-12';\n        default: return 'size-10';\n    }\n};\n\nexport const getFileTypebyFileName = (fileName: string) => {\n    return fileName ? fileName.split('.').pop()?.toLocaleLowerCase() as FileType : '';\n}"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/File/index.tsx",
    "content": "\nimport React from 'react';\n// 废弃\ntype FileType = 'md' | 'txt' | 'html' | 'csv' | 'dir' | 'pdf' | 'doc' | 'docx';\n\ninterface FileIconProps {\n    className?: string;\n    type: FileType;\n}\n\nconst FileIcon: React.FC<FileIconProps> = ({ className = '', type: _type }) => {\n    const type = _type.toLowerCase();\n    const icons = {\n        md: (\n            <svg t=\"1750996380342\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"13662\" width=\"200\" height=\"200\">\n                <path d=\"M722.261333 0H191.786667A161.578667 161.578667 0 0 0 30.208 161.578667V862.293333a161.578667 161.578667 0 0 0 161.578667 161.578667h640.426666a161.578667 161.578667 0 0 0 161.578667-161.578667V271.530667a137.173333 137.173333 0 0 0-40.192-97.024L819.242667 40.149333A137.216 137.216 0 0 0 722.261333 0z\" fill=\"#53B7F4\" p-id=\"13663\"></path>\n                <path d=\"M953.642667 174.506667L819.285333 40.149333a137.216 137.216 0 0 0-70.613333-37.632v150.784a86.656 86.656 0 0 0 86.698667 86.698667h154.794666a137.173333 137.173333 0 0 0-36.522666-65.493333z\" fill=\"#29A3D3\" p-id=\"13664\"></path>\n                <path d=\"M667.093333 717.269333a27.434667 27.434667 0 0 1-27.434666-27.434666v-258.688l-107.861334 106.666666a27.434667 27.434667 0 0 1-38.4 0l-108.928-107.008v259.754667a27.434667 27.434667 0 0 1-54.869333 0V365.397333a27.434667 27.434667 0 0 1 46.677333-19.584l136.32 133.930667 135.381334-133.845333a27.434667 27.434667 0 0 1 46.933333 19.498666v324.266667a27.434667 27.434667 0 0 1-27.818667 27.605333z\" fill=\"#29A3D3\" p-id=\"13665\"></path>\n                <path d=\"M667.136 324.266667a27.434667 27.434667 0 0 0-19.285333 7.936l-135.381334 133.845333-136.32-133.888a27.434667 27.434667 0 0 0-46.677333 19.584v325.162667a27.434667 27.434667 0 0 0 54.869333 0V417.152l108.928 107.008a27.434667 27.434667 0 0 0 38.4 0l107.861334-106.666667v258.688a27.434667 27.434667 0 1 0 54.869333 0v-324.266666a27.434667 27.434667 0 0 0-27.434667-27.434667z\" fill=\"#FFFFFF\" p-id=\"13666\"></path>\n            </svg>\n        ),\n        txt: (\n            <svg t=\"1752503045187\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4517\" width=\"200\" height=\"200\"><path d=\"M204.8 0h477.866667l273.066666 273.066667v614.4c0 75.093333-61.44 136.533333-136.533333 136.533333H204.8c-75.093333 0-136.533333-61.44-136.533333-136.533333V136.533333C68.266667 61.44 129.706667 0 204.8 0z m341.333333 512h136.533334c20.48 0 34.133333-13.653333 34.133333-34.133333s-13.653333-34.133333-34.133333-34.133334H341.333333c-20.48 0-34.133333 13.653333-34.133333 34.133334s13.653333 34.133333 34.133333 34.133333h136.533334V819.2c0 20.48 13.653333 34.133333 34.133333 34.133333s34.133333-13.653333 34.133333-34.133333V512z\" fill=\"#777777\" p-id=\"4518\"></path><path d=\"M682.666667 0l273.066666 273.066667h-204.8c-40.96 0-68.266667-27.306667-68.266666-68.266667V0z\" fill=\"#E0E0E0\" opacity=\".619\" p-id=\"4519\"></path></svg>\n        ),\n        html: (\n            <svg t=\"1752549781044\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"24387\" width=\"200\" height=\"200\"><path d=\"M677.504 64a64 64 0 0 1 45.248 18.752l154.496 154.496a64 64 0 0 1 18.752 45.248V832a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192a128 128 0 0 1 128-128h421.504zM640 377.6a38.4 38.4 0 0 0-38.4 38.4v121.6H422.4V416a38.4 38.4 0 0 0-76.8 0v320a38.4 38.4 0 1 0 76.8 0V614.4h179.2v121.6a38.4 38.4 0 1 0 76.8 0v-320a38.4 38.4 0 0 0-38.4-38.4z\" p-id=\"24388\" fill=\"#d81e06\"></path></svg>\n        ),\n        csv: (\n            <svg t=\"1752549656391\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"11216\" width=\"200\" height=\"200\"><path d=\"M134.4 64m153.6 0l448 0q153.6 0 153.6 153.6l0 588.8q0 153.6-153.6 153.6l-448 0q-153.6 0-153.6-153.6l0-588.8q0-153.6 153.6-153.6Z\" fill=\"#3EC757\" p-id=\"11217\"></path><path d=\"M240.0256 513.1776c0-14.9504 2.1504-29.184 6.4512-42.8544 4.352-13.6192 10.752-25.6 19.3536-35.9424 8.4992-10.3424 19.1488-18.6368 31.8976-24.9344s27.4944-9.472 44.3392-9.472c13.3632 0 25.6512 2.4064 36.864 7.1168 11.1104 4.7104 19.6096 9.9328 25.3952 15.7184 2.048 2.048 4.096 4.7104 6.0928 7.8336a35.2768 35.2768 0 0 1 4.3008 10.24 31.232 31.232 0 0 1 0.8192 11.008 18.8928 18.8928 0 0 1-4.5568 10.24 26.3168 26.3168 0 0 1-4.7104 4.3008 21.1456 21.1456 0 0 1-16.5376 3.328 17.92 17.92 0 0 1-9.472-6.5024 66.304 66.304 0 0 0-16.384-14.5408 40.192 40.192 0 0 0-21.0432-5.12 46.336 46.336 0 0 0-21.6576 5.12 49.5616 49.5616 0 0 0-16.7424 14.1824c-4.608 5.9904-8.192 13.312-10.8544 22.016a98.4064 98.4064 0 0 0-3.9424 28.672c0 11.008 1.536 20.6336 4.5568 28.8768 3.0208 8.2432 7.0144 15.2064 11.9808 20.8384 5.0176 5.632 10.6496 9.8816 16.9472 12.8a45.9776 45.9776 0 0 0 19.3024 4.3008c5.0176 0 9.1648-0.3072 12.4416-0.8192a28.2112 28.2112 0 0 0 13.568-5.6832 537.5488 537.5488 0 0 1 12.2368-9.4208 27.8528 27.8528 0 0 1 8.2432-4.352 20.5824 20.5824 0 0 1 9.472-0.5632c3.4304 0.512 7.1168 2.048 11.0592 4.7104 5.7344 3.9424 9.216 8.0384 10.24 12.3904 1.024 4.3008-0.4096 9.8816-4.352 16.6912-5.2736 9.1648-14.0288 16.5376-26.4192 22.1696-12.288 5.632-27.5456 8.4992-45.6704 8.4992a116.224 116.224 0 0 1-44.1344-7.8848 88.0128 88.0128 0 0 1-32.512-22.4256 95.5392 95.5392 0 0 1-19.9168-34.9696 145.8176 145.8176 0 0 1-6.656-45.568zM512.4096 576.4096c8.6016 0 15.872-1.9968 21.76-5.888a18.7392 18.7392 0 0 0 8.8064-16.5376 19.5072 19.5072 0 0 0-1.7408-8.448 18.6368 18.6368 0 0 0-6.656-7.0656 69.7344 69.7344 0 0 0-13.3632-6.656 262.144 262.144 0 0 0-21.76-7.2704 232.0896 232.0896 0 0 1-28.2624-9.8304 68.4544 68.4544 0 0 1-19.4048-12.1856 43.8784 43.8784 0 0 1-11.3664-16.896 66.56 66.56 0 0 1-3.7376-23.552c0-9.728 1.9968-18.432 5.888-26.112 3.9424-7.7312 9.3696-14.336 16.2816-19.6608 6.912-5.376 14.9504-9.4208 24.1152-12.1856 9.1648-2.7648 18.8416-4.096 29.0304-4.096 10.752 0 20.5824 1.1776 29.5936 3.5328 9.0112 2.3552 16.7424 5.3248 23.1424 9.0112s11.4688 7.5776 15.104 11.776c3.6864 4.1984 5.4784 7.9872 5.4784 11.4176 0 7.8336-1.28 15.104-3.8912 21.8112-2.6112 6.656-6.8096 9.984-12.544 9.984a8.8576 8.8576 0 0 1-5.5296-2.1504 303.2064 303.2064 0 0 1-7.8336-6.5024 98.048 98.048 0 0 0-18.0224-11.3664 62.8736 62.8736 0 0 0-25.088-4.7104 37.0176 37.0176 0 0 0-18.6368 3.9424c-5.632 2.8672-8.448 7.68-8.448 14.4896 0 3.1744 0.6656 5.7856 1.9456 7.8848 1.3312 2.048 3.6864 3.9936 7.0656 5.6832 3.4304 1.6896 7.7824 3.4816 13.1584 5.3248 5.376 1.8432 12.2368 3.9424 20.5824 6.2976 8.9088 2.56 17.2544 5.632 25.088 9.0112 7.8336 3.4304 14.6432 7.5776 20.4288 12.5952 5.7344 4.9664 10.24 11.0592 13.5168 18.2272 3.2768 7.2192 4.9152 15.9232 4.9152 26.112 0 10.496-2.3552 19.968-7.0656 28.3136a67.3792 67.3792 0 0 1-18.6368 21.1968 94.6176 94.6176 0 0 1-55.5008 18.0736 107.6736 107.6736 0 0 1-57.2416-15.872 67.2256 67.2256 0 0 1-15.872-13.3632c-3.7888-4.608-5.7344-8.448-5.7344-11.6224 0-3.1232 0.3072-6.4512 0.8192-9.984a38.8096 38.8096 0 0 1 2.7136-9.8304 26.5728 26.5728 0 0 1 4.9152-7.68 9.984 9.984 0 0 1 7.68-3.1232c2.56 0 5.3248 1.4336 8.192 4.3008 2.9184 2.9184 6.656 6.144 11.2128 9.6256 4.5568 3.584 10.4448 6.7584 17.6128 9.6256 7.168 2.9184 16.2816 4.352 27.2896 4.352zM715.6224 601.9584c-3.4304 7.0656-6.8608 11.776-10.4448 14.336a18.6368 18.6368 0 0 1-10.752 3.6864 23.296 23.296 0 0 1-10.8544-2.7136c-3.584-1.8432-7.2704-6.9632-11.264-15.36l-66.048-164.9152a26.5728 26.5728 0 0 1-2.1504-12.8 23.1424 23.1424 0 0 1 3.584-10.5472 20.1728 20.1728 0 0 1 8.0384-7.1168 26.112 26.112 0 0 1 11.776-2.56c4.4544 0 8.9088 1.2288 13.3632 3.584 4.4544 2.3552 7.8848 6.656 10.24 12.9536l44.032 119.808c7.3728-20.48 14.6944-40.448 22.016-59.904 7.3728-19.5072 14.7456-39.4752 22.0672-59.904a31.0784 31.0784 0 0 1 7.8848-11.776 16.896 16.896 0 0 1 11.776-4.7104c3.4304 0 6.912 0.7168 10.4448 2.1504 3.5328 1.4336 6.656 3.4816 9.216 6.0928a18.688 18.688 0 0 1 5.12 9.7792 22.8352 22.8352 0 0 1-1.9456 13.3632l-66.0992 166.5536z\" fill=\"#FFFFFF\" p-id=\"11218\"></path></svg>\n        ),\n        doc: (\n            <svg t=\"1753084925585\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"7814\" width=\"200\" height=\"200\"><path d=\"M910.2336 1024H113.7664C51.2 1024 0 972.8 0 910.2336V113.7664C0 51.2 51.2 0 113.7664 0h796.4672C972.8 0 1024 51.2 1024 113.7664v796.4672C1024 972.8 972.8 1024 910.2336 1024zM850.5088 253.824h-71.68l-101.3248 391.68c-5.3504 19.328-8.576 36.224-9.6768 50.688h-1.3312c-2.2272-20.0192-5.0944-36.4544-8.6528-49.3824L551.168 253.8496h-65.664L373.8368 643.84c-6.2464 21.9904-9.8816 39.6544-11.008 52.992h-1.9968a254.976 254.976 0 0 0-8.3456-52.992L247.168 253.824H173.4912l149.6832 516.352h77.0048l104.96-372.6592a249.0112 249.0112 0 0 0 9.344-52.6848h1.3312c0.9216 18.6624 3.6864 36.4288 8.3456 53.3248l104.0128 371.9936h77.6704l144.64-516.3264z\" fill=\"#3A80FC\" p-id=\"7815\"></path></svg>\n        ),\n        pdf: (\n            <svg t=\"1759028839714\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8091\" width=\"200\" height=\"200\"><path d=\"M493.638 493.51s-8.708 33.015-27.352 66.942c-18.642 33.926-35.184 53.195-35.184 53.195s49.792-12.326 69.113-16.335c22.2-4.609 51.88-7.261 63.14-7.857 0 0-23.912-26.782-33.696-39.819-9.833-13.102-36.02-56.125-36.02-56.125zM259.37 760.667c11.729 6.702 36.442-6.284 51.94-24.293 12.558-14.594 39.372-54.87 39.372-54.87s-49.845 14.66-72.463 36.02c-22.617 21.362-25.834 39.15-18.848 43.143zM507.695 340.69c0.654-17.592 11.652-69.81-15.715-77.071 0 0-29.04 1.116-26.96 46.936 1.428 31.481 23.61 92.685 23.61 92.685s18.414-44.959 19.065-62.55zM696.942 619.931c-26.387-2.512-52.938-3.7-52.938-3.7s52.075 49.653 70.809 64.018c16.754 12.845 45.796 8.935 51.94-8.936 10.864-31.605-43.424-48.87-69.811-51.382z\" fill=\"#F85555\" p-id=\"8092\"></path><path d=\"M855.733 63.84H168.266c-57.673 0-104.426 46.753-104.426 104.426v687.469c0 57.672 46.753 104.425 104.426 104.425h687.467c57.673 0 104.425-46.753 104.425-104.425V168.266c0-57.673-46.751-104.426-104.425-104.426zM724.308 727.158c-82.098-18.43-132.852-106.275-132.852-106.275s-30.923 0.723-82.024 8.682c-48.25 7.513-104.43 30.461-104.43 30.461S345.656 774.071 288.69 792.502c-56.966 18.43-101.266-30.51-50.263-88.8 43.98-50.262 139.223-69.579 139.223-69.579s38.374-46.864 58.479-86.655c20.105-39.794 38.535-91.732 38.535-91.732s-38.535-88.799-41.888-139.063c-3.35-50.262 26.808-85.448 56.966-88.798 38.3-4.256 82.815 31.833 17.951 217.809 0 0 18.91 43.56 45.717 73.72 26.807 30.159 58.083 61.434 58.083 61.434s95.427-10.399 158.82 21.977c69.599 35.547 36.09 142.773-46.006 124.343z\" fill=\"#F85555\" p-id=\"8093\"></path></svg>\n        ),\n        dir: (\n            <svg t=\"1753254956028\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"6260\" width=\"200\" height=\"200\"><path d=\"M529.664 213.333333H896a42.666667 42.666667 0 0 1 42.666667 42.666667v597.333333a42.666667 42.666667 0 0 1-42.666667 42.666667H128a42.666667 42.666667 0 0 1-42.666667-42.666667V170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h316.330667l85.333333 85.333333z\" fill=\"#bfbfbf\" p-id=\"6261\"></path></svg>\n        ),\n    };\n\n    const findIcon = (type: string) => {\n        switch (type) {\n            case 'md':\n                return icons.md;\n            case 'txt':\n                return icons.txt;\n            case 'html':\n                return icons.html;\n            case 'csv':\n            case 'xlsx':\n                return icons.csv;\n            case 'doc':\n            case 'docx':\n                return icons.doc;\n            case 'pdf':\n                return icons.pdf;\n            case 'dir':\n                return icons.dir;\n            default:\n                return icons.txt;\n        }\n    }\n\n    return findIcon(type);\n};\n\nexport default FileIcon;\n"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/Loading/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport { cn } from \"~/utils\";\n\nexport const LoadingIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <svg ref={ref} {...props} className={cn('text-primary', className)} viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" width=\"80\" height=\"80\">\n        <rect x=\"10\" y=\"8\" width=\"3\" height=\"2\" rx=\"1\" fill=\"currentColor\"></rect>\n        <rect x=\"14\" y=\"8\" width=\"10\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"12;7;12\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.3s\" />\n        </rect>\n        <rect x=\"11\" y=\"11.5\" width=\"16\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"18;14;18\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.6s\" />\n        </rect>\n        <rect x=\"11\" y=\"15\" width=\"12\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"14;10;14\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.9s\" />\n        </rect>\n        <rect x=\"11\" y=\"18.5\" width=\"14\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"16;12;16\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.2s\" />\n        </rect>\n        <rect x=\"11\" y=\"22\" width=\"16\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"18;14;18\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-1.5s\" />\n        </rect>\n        <rect x=\"10\" y=\"25.5\" width=\"10\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"width\" values=\"12;9;12\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.1s\" />\n        </rect>\n        <rect x=\"21\" y=\"25.5\" width=\"3\" height=\"2\" rx=\"1\" fill=\"currentColor\">\n            <animate attributeName=\"x\" values=\"23;20;23\" dur=\"1s\" repeatCount=\"indefinite\" begin=\"-0.1s\" />\n        </rect>\n    </svg>\n});"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/Message/index.tsx",
    "content": "import React from 'react'\nimport { cn } from '~/utils';\ntype BtnType = 'copy' | 'like' | 'unLike' | 'create';\n\ninterface MessageIconProps {\n    className?: string;\n    type: BtnType;\n    onClick?: (e: any) => void;\n}\n\nconst MessageIcon: React.FC<MessageIconProps> = ({ className = '', type, onClick }) => {\n    const icons = {\n        copy: (\n            <svg className={cn('transition text-gray-400 hover:text-gray-500', className)} onClick={onClick} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g id=\"Group 488\">\n                    <rect id=\"Rectangle 231\" x=\"5.75\" y=\"5.75\" width=\"12.5\" height=\"13.5\" rx=\"2.25\" fill=\"transparent\"\n                        stroke=\"currentColor\" stroke-width=\"1.5\" />\n                    <rect id=\"Rectangle 232\" x=\"8.75\" y=\"4.75\" width=\"6.5\" height=\"3.5\" rx=\"1.25\" fill=\"transparent\"\n                        stroke=\"currentColor\" stroke-width=\"1.5\" />\n                </g>\n            </svg>\n        ),\n        like: (\n            <svg className={cn('transition text-gray-400 hover:text-gray-500', className)} onClick={onClick} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g id=\"Group 489\">\n                    <rect id=\"Rectangle 231\" x=\"4.75\" y=\"9.75\" width=\"3.5\" height=\"8.5\" rx=\"1.75\" fill=\"transparent\"\n                        stroke=\"currentColor\" stroke-width=\"1.5\" />\n                    <g id=\"Union\">\n                        <mask id=\"path-2-inside-1_399_44\" fill=\"#fff\">\n                            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                                d=\"M13.2231 4C12.1561 4 11.1694 4.56673 10.6318 5.48839L8.89567 8.46456C8.05682 8.99647 7.5 9.93321 7.5 11V16C7.5 17.6569 8.84315 19 10.5 19H14.6983C16.3803 19 17.8826 17.9477 18.4575 16.367L20.2802 11.3544C20.8731 9.7239 19.6657 8 17.9307 8H14.5V5C14.5 4.44772 14.0523 4 13.5 4H13.2231Z\" />\n                        </mask>\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                            d=\"M13.2231 4C12.1561 4 11.1694 4.56673 10.6318 5.48839L8.89567 8.46456C8.05682 8.99647 7.5 9.93321 7.5 11V16C7.5 17.6569 8.84315 19 10.5 19H14.6983C16.3803 19 17.8826 17.9477 18.4575 16.367L20.2802 11.3544C20.8731 9.7239 19.6657 8 17.9307 8H14.5V5C14.5 4.44772 14.0523 4 13.5 4H13.2231Z\"\n                            fill=\"transparent\" />\n                        <path\n                            d=\"M10.6318 5.48839L9.33611 4.73258V4.73258L10.6318 5.48839ZM8.89567 8.46456L9.69893 9.73136L10.0073 9.5358L10.1913 9.22037L8.89567 8.46456ZM18.4575 16.367L19.8672 16.8796V16.8796L18.4575 16.367ZM20.2802 11.3544L21.6899 11.867L20.2802 11.3544ZM14.5 8H13V9.5H14.5V8ZM11.9274 6.24419C12.1963 5.78337 12.6896 5.5 13.2231 5.5V2.5C11.6226 2.5 10.1426 3.3501 9.33611 4.73258L11.9274 6.24419ZM10.1913 9.22037L11.9274 6.24419L9.33611 4.73258L7.6 7.70876L10.1913 9.22037ZM9 11C9 10.4682 9.27563 9.99977 9.69893 9.73136L8.09241 7.19777C6.83801 7.99317 6 9.3982 6 11H9ZM9 16V11H6V16H9ZM10.5 17.5C9.67157 17.5 9 16.8284 9 16H6C6 18.4853 8.01472 20.5 10.5 20.5V17.5ZM14.6983 17.5H10.5V20.5H14.6983V17.5ZM17.0478 15.8544C16.6885 16.8423 15.7496 17.5 14.6983 17.5V20.5C17.0111 20.5 19.0768 19.0531 19.8672 16.8796L17.0478 15.8544ZM18.8705 10.8417L17.0478 15.8544L19.8672 16.8796L21.6899 11.867L18.8705 10.8417ZM17.9307 9.5C18.6247 9.5 19.1077 10.1896 18.8705 10.8417L21.6899 11.867C22.6386 9.25824 20.7066 6.5 17.9307 6.5V9.5ZM14.5 9.5H17.9307V6.5H14.5V9.5ZM13 5V8H16V5H13ZM13.5 5.5C13.2239 5.5 13 5.27614 13 5H16C16 3.61929 14.8807 2.5 13.5 2.5V5.5ZM13.2231 5.5H13.5V2.5H13.2231V5.5Z\"\n                            fill=\"currentColor\" mask=\"url(#path-2-inside-1_399_44)\" />\n                    </g>\n                </g>\n            </svg>\n        ),\n        unLike: (\n            <svg className={cn('transition text-gray-400 hover:text-gray-500', className)} onClick={onClick} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <g id=\"Group 490\">\n                    <g id=\"Group 491\">\n                        <rect id=\"Rectangle 231\" x=\"19.25\" y=\"14.25\" width=\"3.5\" height=\"8.5\" rx=\"1.75\"\n                            transform=\"rotate(-180 19.25 14.25)\" fill=\"transparent\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n                        <g id=\"Union\">\n                            <mask id=\"path-2-inside-1_399_50\" fill=\"#fff\">\n                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                                    d=\"M10.0061 20C10.9504 20 11.8395 19.5554 12.4061 18.8L14.6872 15.7586C15.7568 15.3 16.5061 14.2375 16.5061 13L16.5061 8C16.5061 6.34315 15.163 5 13.5061 5L9.30781 5C7.62579 5 6.12346 6.05227 5.54864 7.63302L3.72587 12.6456C3.13298 14.2761 4.34044 16 6.07535 16L9.17277 16L8.70017 18.8356C8.59858 19.4451 9.06862 20 9.68656 20L10.0061 20Z\" />\n                            </mask>\n                            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                                d=\"M10.0061 20C10.9504 20 11.8395 19.5554 12.4061 18.8L14.6872 15.7586C15.7568 15.3 16.5061 14.2375 16.5061 13L16.5061 8C16.5061 6.34315 15.163 5 13.5061 5L9.30781 5C7.62579 5 6.12346 6.05227 5.54864 7.63302L3.72587 12.6456C3.13298 14.2761 4.34044 16 6.07535 16L9.17277 16L8.70017 18.8356C8.59858 19.4451 9.06862 20 9.68656 20L10.0061 20Z\"\n                                fill=\"transparent\" />\n                            <path\n                                d=\"M12.4061 18.8L13.6061 19.7L13.6061 19.7L12.4061 18.8ZM14.6872 15.7586L14.0961 14.3799L13.7277 14.5379L13.4872 14.8586L14.6872 15.7586ZM5.54864 7.63302L4.13895 7.12041L4.13895 7.12041L5.54864 7.63302ZM3.72587 12.6456L2.31618 12.133L3.72587 12.6456ZM9.17277 16L10.6524 16.2466L10.9435 14.5L9.17277 14.5L9.17277 16ZM8.70017 18.8356L10.1798 19.0822L10.1798 19.0822L8.70017 18.8356ZM11.2061 17.9C10.9228 18.2777 10.4782 18.5 10.0061 18.5L10.0061 21.5C11.4225 21.5 12.7563 20.8331 13.6061 19.7L11.2061 17.9ZM13.4872 14.8586L11.2061 17.9L13.6061 19.7L15.8872 16.6586L13.4872 14.8586ZM15.0061 13C15.0061 13.6164 14.634 14.1493 14.0961 14.3799L15.2782 17.1372C16.8796 16.4507 18.0061 14.8586 18.0061 13L15.0061 13ZM15.0061 8L15.0061 13L18.0061 13L18.0061 8L15.0061 8ZM13.5061 6.5C14.3345 6.5 15.0061 7.17157 15.0061 8L18.0061 8C18.0061 5.51472 15.9914 3.5 13.5061 3.5L13.5061 6.5ZM9.30781 6.5L13.5061 6.5L13.5061 3.5L9.30781 3.5L9.30781 6.5ZM6.95833 8.14564C7.31759 7.15767 8.25655 6.5 9.30781 6.5L9.30781 3.5C6.99503 3.5 4.92933 4.94687 4.13895 7.12041L6.95833 8.14564ZM5.13556 13.1583L6.95833 8.14564L4.13895 7.12041L2.31618 12.133L5.13556 13.1583ZM6.07535 14.5C5.38139 14.5 4.8984 13.8104 5.13556 13.1583L2.31618 12.133C1.36755 14.7418 3.29949 17.5 6.07535 17.5L6.07535 14.5ZM9.17277 14.5L6.07535 14.5L6.07535 17.5L9.17277 17.5L9.17277 14.5ZM10.1798 19.0822L10.6524 16.2466L7.69318 15.7534L7.22058 18.589L10.1798 19.0822ZM9.68656 18.5C9.99553 18.5 10.2306 18.7774 10.1798 19.0822L7.22058 18.589C6.96661 20.1128 8.14171 21.5 9.68656 21.5L9.68656 18.5ZM10.0061 18.5L9.68656 18.5L9.68656 21.5L10.0061 21.5L10.0061 18.5Z\"\n                                fill=\"currentColor\" mask=\"url(#path-2-inside-1_399_50)\" />\n                        </g>\n                    </g>\n                </g>\n            </svg>\n        ),\n        create: (\n            <svg className={cn('transition text-gray-400 hover:text-gray-500', className)} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"23591\" width=\"32\" height=\"32\"><path d=\"M512 64c244.906667 0 443.946667 196.544 447.936 440.533333L960 512a42.666667 42.666667 0 0 1-85.226667 3.2L874.666667 512c0-200.298667-162.368-362.666667-362.666667-362.666667S149.333333 311.701333 149.333333 512c0 65.066667 17.088 127.488 49.109334 182.378667l17.024 29.184-31.872 116.842666 116.842666-31.872 29.184 17.024a360.256 360.256 0 0 0 172.117334 48.96L512 874.666667a42.666667 42.666667 0 0 1 3.2 85.226666L512 960c-82.154667 0-159.146667-22.122667-225.365333-60.714667L132.757333 941.226667a40.746667 40.746667 0 0 1-50.005333-50.005334l41.962667-153.877333A445.930667 445.930667 0 0 1 64 512C64 264.576 264.576 64 512 64z m256 512a42.666667 42.666667 0 0 1 42.666667 42.666667v106.666666h106.666666a42.666667 42.666667 0 1 1 0 85.333334h-106.688L810.666667 917.333333a42.666667 42.666667 0 1 1-85.333334 0l-0.021333-106.666666H618.666667a42.666667 42.666667 0 1 1 0-85.333334h106.666666v-106.666666a42.666667 42.666667 0 0 1 42.666667-42.666667z\" fill=\"currentColor\" fill-opacity=\".85\" p-id=\"23592\"></path></svg>\n        )\n    };\n\n    const Icons = (type: string) => {\n        switch (type) {\n            case 'copy':\n                return icons.copy;\n            case 'like':\n                return icons.like;\n            case 'unLike':\n                return icons.unLike;\n            case 'create':\n                return icons.create;\n            default:\n                return null;\n        }\n    }\n\n    return Icons(type);\n};\n\n\nexport default MessageIcon"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/Star/index.tsx",
    "content": "import React from \"react\";\n\nconst StarIcon = ({ className = \"\" }) => (\n    <svg\n        width=\"19\"\n        height=\"19\"\n        viewBox=\"0 0 19 19\"\n        fill=\"none\"\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M8.09316 1.30337C8.5763 -0.00279069 10.4237 -0.0027914 10.9068 1.30337L12.2168 4.84472C12.4269 5.41286 12.9582 5.79883 13.5634 5.82313L17.3363 5.97461C18.7278 6.03047 19.2987 7.78746 18.2057 8.65058L15.2425 10.9907C14.7671 11.3662 14.5642 11.9907 14.7281 12.5738L15.7499 16.2088C16.1268 17.5495 14.6322 18.6354 13.4736 17.8626L10.3323 15.7676C9.82833 15.4315 9.17167 15.4315 8.66771 15.7676L5.52641 17.8626C4.3678 18.6354 2.87322 17.5495 3.25009 16.2088L4.27189 12.5738C4.43582 11.9907 4.2329 11.3662 3.75751 10.9907L0.794272 8.65058C-0.298659 7.78746 0.272219 6.03047 1.66375 5.97461L5.43657 5.82313C6.04184 5.79883 6.57308 5.41286 6.78323 4.84472L8.09316 1.30337Z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n);\n\nexport default StarIcon;"
  },
  {
    "path": "src/frontend/client/src/components/ui/icon/Voice/index.tsx",
    "content": "import React, { useState, useEffect, useRef } from 'react';\n\nconst VoiceRecordingIcon = ({\n    size = 28,\n    onClick,\n    circleColor = '#f0f0f0',\n    barColor = 'black'\n}) => {\n    const [bars, setBars] = useState([0, 0, 0, 0, 0]);\n    const animationRef = useRef<any>(null);\n\n    // 生成明显的随机波形\n    const generateWave = () => {\n        // 强制每条竖线有明显高度差异（0.2-1.0范围）\n        return [\n            0.2 + Math.random() * 0.5,  // 第一条：低幅度波动\n            0.3 + Math.random() * 0.7,  // 第二条：中幅度\n            0.5 + Math.random() * 0.5,  // 第三条：高幅度（最明显）\n            0.3 + Math.random() * 0.7,  // 第四条：中幅度\n            0.2 + Math.random() * 0.5   // 第五条：低幅度\n        ];\n    };\n\n    // 动画循环（每100ms强制更新一次，确保肉眼可见）\n    const animate = () => {\n        setBars(generateWave());\n        animationRef.current = setTimeout(animate, 200); // 改用setTimeout确保固定间隔\n    };\n\n    // 组件挂载时启动动画，卸载时清理\n    useEffect(() => {\n        animate();\n        return () => clearTimeout(animationRef.current);\n    }, []);\n\n    const innerSize = size * 0.6;\n\n    return (\n        <div\n            style={{\n                width: size,\n                height: size,\n                borderRadius: '50%',\n                // backgroundColor: circleColor,\n                // border: '1px solid #e0e0e0',\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center',\n                cursor: 'pointer',\n            }}\n            onClick={onClick}\n        >\n            <div\n                style={{\n                    width: innerSize,\n                    height: innerSize * 0.9, // 增加高度占比，让波动更明显\n                    display: 'flex',\n                    alignItems: 'center',\n                    justifyContent: 'center',\n                }}\n            >\n                {bars.map((height, i) => (\n                    <div\n                        key={i}\n                        style={{\n                            width: innerSize * 0.07, // 加宽竖线，增强视觉效果\n                            height: height * innerSize * 0.9,\n                            backgroundColor: barColor,\n                            margin: `0 ${innerSize * 0.06}px`,\n                            borderRadius: 1,\n                        }}\n                    />\n                ))}\n            </div>\n        </div>\n    );\n};\n\nexport default VoiceRecordingIcon;"
  },
  {
    "path": "src/frontend/client/src/components/ui/index.ts",
    "content": "export * from './AlertDialog';\nexport * from './Breadcrumb';\nexport * from './Button';\nexport * from './Checkbox';\nexport * from './DataTableColumnHeader';\nexport * from './Dialog';\nexport * from './DropdownMenu';\nexport * from './HoverCard';\nexport * from './Input';\nexport * from './InputNumber';\nexport * from './Label';\nexport * from './OriginalDialog';\nexport * from './Prompt';\nexport * from './QuestionMark';\nexport * from './Slider';\nexport * from './Separator';\nexport * from './InputCombobox';\nexport * from './Skeleton';\nexport * from './Switch';\nexport * from './Table';\nexport * from './Tabs';\nexport * from './Tag';\nexport * from './Textarea';\nexport * from './TextareaAutosize';\nexport * from './Tooltip';\nexport * from './Pagination';\nexport * from './Progress';\nexport * from './InputOTP';\nexport { default as Combobox } from './Combobox';\nexport { default as Dropdown } from './Dropdown';\nexport { default as FileUpload } from './FileUpload';\nexport { default as DropdownPopup } from './DropdownPopup';\nexport { default as DelayedRender } from './DelayedRender';\nexport { default as ThemeSelector } from './ThemeSelector';\nexport { default as SelectDropDown } from './SelectDropDown';\nexport { default as MultiSelectPop } from './MultiSelectPop';\nexport { default as ModelParameters } from './ModelParameters';\nexport { default as OGDialogTemplate } from './OGDialogTemplate';\nexport { default as InputWithDropdown } from './InputWithDropDown';\nexport { default as SelectDropDownPop } from './SelectDropDownPop';\nexport { default as AnimatedSearchInput } from './AnimatedSearchInput';\nexport { default as MultiSelectDropDown } from './MultiSelectDropDown';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Agents/index.ts",
    "content": "export * from './queries';\nexport * from './mutations';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Agents/mutations.ts",
    "content": "import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { dataService, MutationKeys, QueryKeys, defaultOrderQuery } from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\n\n/**\n * AGENTS\n */\n\n/**\n * Create a new agent\n */\nexport const useCreateAgentMutation = (\n  options?: t.CreateAgentMutationOptions,\n): UseMutationResult<t.Agent, Error, t.AgentCreateParams> => {\n  const queryClient = useQueryClient();\n  return useMutation((newAgentData: t.AgentCreateParams) => dataService.createAgent(newAgentData), {\n    onMutate: (variables) => options?.onMutate?.(variables),\n    onError: (error, variables, context) => options?.onError?.(error, variables, context),\n    onSuccess: (newAgent, variables, context) => {\n      const listRes = queryClient.getQueryData<t.AgentListResponse>([\n        QueryKeys.agents,\n        defaultOrderQuery,\n      ]);\n\n      if (!listRes) {\n        return options?.onSuccess?.(newAgent, variables, context);\n      }\n\n      const currentAgents = [newAgent, ...JSON.parse(JSON.stringify(listRes.data))];\n\n      queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n        ...listRes,\n        data: currentAgents,\n      });\n      return options?.onSuccess?.(newAgent, variables, context);\n    },\n  });\n};\n\n/**\n * Hook for updating an agent\n */\nexport const useUpdateAgentMutation = (\n  options?: t.UpdateAgentMutationOptions,\n): UseMutationResult<t.Agent, Error, { agent_id: string; data: t.AgentUpdateParams }> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    ({ agent_id, data }: { agent_id: string; data: t.AgentUpdateParams }) => {\n      return dataService.updateAgent({\n        data,\n        agent_id,\n      });\n    },\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (updatedAgent, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AgentListResponse>([\n          QueryKeys.agents,\n          defaultOrderQuery,\n        ]);\n\n        if (!listRes) {\n          return options?.onSuccess?.(updatedAgent, variables, context);\n        }\n\n        queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n          ...listRes,\n          data: listRes.data.map((agent) => {\n            if (agent.id === variables.agent_id) {\n              return updatedAgent;\n            }\n            return agent;\n          }),\n        });\n\n        queryClient.setQueryData<t.Agent>([QueryKeys.agent, variables.agent_id], updatedAgent);\n        return options?.onSuccess?.(updatedAgent, variables, context);\n      },\n    },\n  );\n};\n\n/**\n * Hook for deleting an agent\n */\nexport const useDeleteAgentMutation = (\n  options?: t.DeleteAgentMutationOptions,\n): UseMutationResult<void, Error, t.DeleteAgentBody> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    ({ agent_id }: t.DeleteAgentBody) => {\n      return dataService.deleteAgent({ agent_id });\n    },\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (_data, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AgentListResponse>([\n          QueryKeys.agents,\n          defaultOrderQuery,\n        ]);\n\n        if (!listRes) {\n          return options?.onSuccess?.(_data, variables, context);\n        }\n\n        const data = listRes.data.filter((agent) => agent.id !== variables.agent_id);\n\n        queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n          ...listRes,\n          data,\n        });\n\n        queryClient.removeQueries([QueryKeys.agent, variables.agent_id]);\n\n        return options?.onSuccess?.(_data, variables, data);\n      },\n    },\n  );\n};\n\n/**\n * Hook for duplicating an agent\n */\nexport const useDuplicateAgentMutation = (\n  options?: t.DuplicateAgentMutationOptions,\n): UseMutationResult<{ agent: t.Agent; actions: t.Action[] }, Error, t.DuplicateAgentBody> => {\n  const queryClient = useQueryClient();\n\n  return useMutation<{ agent: t.Agent; actions: t.Action[] }, Error, t.DuplicateAgentBody>(\n    (params: t.DuplicateAgentBody) => dataService.duplicateAgent(params),\n    {\n      onMutate: options?.onMutate,\n      onError: options?.onError,\n      onSuccess: ({ agent, actions }, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AgentListResponse>([\n          QueryKeys.agents,\n          defaultOrderQuery,\n        ]);\n\n        if (listRes) {\n          const currentAgents = [agent, ...listRes.data];\n          queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n            ...listRes,\n            data: currentAgents,\n          });\n        }\n\n        const existingActions = queryClient.getQueryData<t.Action[]>([QueryKeys.actions]) || [];\n\n        queryClient.setQueryData<t.Action[]>([QueryKeys.actions], existingActions.concat(actions));\n\n        return options?.onSuccess?.({ agent, actions }, variables, context);\n      },\n    },\n  );\n};\n\n/**\n * Hook for uploading an agent avatar\n */\nexport const useUploadAgentAvatarMutation = (\n  options?: t.UploadAgentAvatarOptions,\n): UseMutationResult<\n  t.Agent, // response data\n  unknown, // error\n  t.AgentAvatarVariables, // request\n  unknown // context\n> => {\n  return useMutation([MutationKeys.agentAvatarUpload], {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    mutationFn: ({ postCreation, ...variables }: t.AgentAvatarVariables) =>\n      dataService.uploadAgentAvatar(variables),\n    ...(options || {}),\n  });\n};\n\n/**\n * Hook for updating Agent Actions\n */\nexport const useUpdateAgentAction = (\n  options?: t.UpdateAgentActionOptions,\n): UseMutationResult<\n  t.UpdateAgentActionResponse, // response data\n  unknown, // error\n  t.UpdateAgentActionVariables, // request\n  unknown // context\n> => {\n  const queryClient = useQueryClient();\n  return useMutation([MutationKeys.updateAgentAction], {\n    mutationFn: (variables: t.UpdateAgentActionVariables) =>\n      dataService.updateAgentAction(variables),\n\n    onMutate: (variables) => options?.onMutate?.(variables),\n    onError: (error, variables, context) => options?.onError?.(error, variables, context),\n    onSuccess: (updateAgentActionResponse, variables, context) => {\n      const listRes = queryClient.getQueryData<t.AgentListResponse>([\n        QueryKeys.agents,\n        defaultOrderQuery,\n      ]);\n\n      if (!listRes) {\n        return options?.onSuccess?.(updateAgentActionResponse, variables, context);\n      }\n\n      const updatedAgent = updateAgentActionResponse[0];\n\n      queryClient.setQueryData<t.AgentListResponse>([QueryKeys.agents, defaultOrderQuery], {\n        ...listRes,\n        data: listRes.data.map((agent) => {\n          if (agent.id === variables.agent_id) {\n            return updatedAgent;\n          }\n          return agent;\n        }),\n      });\n\n      queryClient.setQueryData<t.Action[]>([QueryKeys.actions], (prev) => {\n        return prev\n          ?.map((action) => {\n            if (action.action_id === variables.action_id) {\n              return updateAgentActionResponse[1];\n            }\n            return action;\n          })\n          .concat(\n            variables.action_id != null && variables.action_id\n              ? []\n              : [updateAgentActionResponse[1]],\n          );\n      });\n\n      queryClient.setQueryData<t.Agent>([QueryKeys.agent, variables.agent_id], updatedAgent);\n      return options?.onSuccess?.(updateAgentActionResponse, variables, context);\n    },\n  });\n};\n\n/**\n * Hook for deleting an Agent Action\n */\n\nexport const useDeleteAgentAction = (\n  options?: t.DeleteAgentActionOptions,\n): UseMutationResult<void, Error, t.DeleteAgentActionVariables, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation([MutationKeys.deleteAgentAction], {\n    mutationFn: (variables: t.DeleteAgentActionVariables) => {\n      return dataService.deleteAgentAction({\n        ...variables,\n      });\n    },\n\n    onMutate: (variables) => options?.onMutate?.(variables),\n    onError: (error, variables, context) => options?.onError?.(error, variables, context),\n    onSuccess: (_data, variables, context) => {\n      let domain: string | undefined = '';\n      queryClient.setQueryData<t.Action[]>([QueryKeys.actions], (prev) => {\n        return prev?.filter((action) => {\n          domain = action.metadata.domain;\n          return action.action_id !== variables.action_id;\n        });\n      });\n\n      queryClient.setQueryData<t.AgentListResponse>(\n        [QueryKeys.agents, defaultOrderQuery],\n        (prev) => {\n          if (!prev) {\n            return prev;\n          }\n\n          return {\n            ...prev,\n            data: prev.data.map((agent) => {\n              if (agent.id === variables.agent_id) {\n                return {\n                  ...agent,\n                  tools: agent.tools?.filter((tool) => !tool.includes(domain ?? '')),\n                };\n              }\n              return agent;\n            }),\n          };\n        },\n      );\n\n      queryClient.setQueryData<t.Agent>([QueryKeys.agent, variables.agent_id], (prev) => {\n        if (!prev) {\n          return prev;\n        }\n\n        return {\n          ...prev,\n          tools: prev.tools?.filter((tool) => !tool.includes(domain ?? '')),\n        };\n      });\n      return options?.onSuccess?.(_data, variables, context);\n    },\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Agents/queries.ts",
    "content": "import { QueryKeys, dataService, EModelEndpoint, defaultOrderQuery } from '~/data-provider/data-provider/src';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\n\n/**\n * AGENTS\n */\n\n/**\n * Hook for getting all available tools for A\n */\nexport const useAvailableAgentToolsQuery = (): QueryObserverResult<t.TPlugin[]> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n\n  const enabled = !!endpointsConfig?.[EModelEndpoint.agents];\n  return useQuery<t.TPlugin[]>([QueryKeys.tools], () => dataService.getAvailableAgentTools(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    enabled,\n  });\n};\n\n/**\n * Hook for listing all Agents, with optional parameters provided for pagination and sorting\n */\nexport const useListAgentsQuery = <TData = t.AgentListResponse>(\n  params: t.AgentListParams = defaultOrderQuery,\n  config?: UseQueryOptions<t.AgentListResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n\n  const enabled = !!endpointsConfig?.[EModelEndpoint.agents];\n  return useQuery<t.AgentListResponse, unknown, TData>(\n    [QueryKeys.agents, params],\n    () => dataService.listAgents(params),\n    {\n      // Example selector to sort them by created_at\n      // select: (res) => {\n      //   return res.data.sort((a, b) => a.created_at - b.created_at);\n      // },\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,\n    },\n  );\n};\n\n/**\n * Hook for retrieving details about a single agent\n */\nexport const useGetAgentByIdQuery = (\n  agent_id: string,\n  config?: UseQueryOptions<t.Agent>,\n): QueryObserverResult<t.Agent> => {\n  return useQuery<t.Agent>(\n    [QueryKeys.agent, agent_id],\n    () =>\n      dataService.getAgentById({\n        agent_id,\n      }),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Auth/index.ts",
    "content": "export * from './queries';\nexport * from './mutations';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Auth/mutations.ts",
    "content": "import { useResetRecoilState, useSetRecoilState } from 'recoil';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { MutationKeys, QueryKeys, dataService, request } from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type * as t from '~/data-provider/data-provider/src';\nimport useClearStates from '~/hooks/Config/useClearStates';\nimport store from '~/store';\n\n/* login/logout */\nexport const useLogoutUserMutation = (\n  options?: t.LogoutOptions,\n): UseMutationResult<t.TLogoutResponse, unknown, undefined, unknown> => {\n  const queryClient = useQueryClient();\n  const clearStates = useClearStates();\n  const resetDefaultPreset = useResetRecoilState(store.defaultPreset);\n  const setQueriesEnabled = useSetRecoilState<boolean>(store.queriesEnabled);\n\n  return useMutation([MutationKeys.logoutUser], {\n    mutationFn: () => dataService.logout(),\n    ...(options || {}),\n    onSuccess: (...args) => {\n      setQueriesEnabled(false);\n      resetDefaultPreset();\n      clearStates();\n      queryClient.removeQueries();\n      options?.onSuccess?.(...args);\n    },\n  });\n};\n\nexport const useLoginUserMutation = (\n  options?: t.MutationOptions<t.TLoginResponse, t.TLoginUser, unknown, unknown>,\n): UseMutationResult<t.TLoginResponse, unknown, t.TLoginUser, unknown> => {\n  const queryClient = useQueryClient();\n  const clearStates = useClearStates();\n  const resetDefaultPreset = useResetRecoilState(store.defaultPreset);\n  const setQueriesEnabled = useSetRecoilState<boolean>(store.queriesEnabled);\n  return useMutation([MutationKeys.loginUser], {\n    mutationFn: (payload: t.TLoginUser) => dataService.login(payload),\n    ...(options || {}),\n    onMutate: (vars) => {\n      resetDefaultPreset();\n      clearStates();\n      queryClient.removeQueries();\n      options?.onMutate?.(vars);\n    },\n    onSuccess: (...args) => {\n      setQueriesEnabled(true);\n      options?.onSuccess?.(...args);\n    },\n  });\n};\n\nexport const useRefreshTokenMutation = (\n  options?: t.MutationOptions<t.TRefreshTokenResponse | undefined, undefined, unknown, unknown>,\n): UseMutationResult<t.TRefreshTokenResponse | undefined, unknown, undefined, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation([MutationKeys.refreshToken], {\n    mutationFn: () => request.refreshToken(),\n    ...(options || {}),\n    onMutate: (vars) => {\n      queryClient.removeQueries();\n      options?.onMutate?.(vars);\n    },\n  });\n};\n\n/* User */\nexport const useDeleteUserMutation = (\n  options?: t.MutationOptions<unknown, undefined>,\n): UseMutationResult<unknown, unknown, undefined, unknown> => {\n  const queryClient = useQueryClient();\n  const clearStates = useClearStates();\n  const resetDefaultPreset = useResetRecoilState(store.defaultPreset);\n\n  return useMutation([MutationKeys.deleteUser], {\n    mutationFn: () => dataService.deleteUser(),\n    ...(options || {}),\n    onSuccess: (...args) => {\n      resetDefaultPreset();\n      clearStates();\n      queryClient.removeQueries();\n      options?.onSuccess?.(...args);\n    },\n  });\n};\n\n// Array.isArray(user?.backupCodes) && user?.backupCodes.length > 0\n\nexport const useEnableTwoFactorMutation = (): UseMutationResult<\n  t.TEnable2FAResponse,\n  unknown,\n  void,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.enableTwoFactor(), {\n    onSuccess: (data) => {\n      queryClient.setQueryData([QueryKeys.user, '2fa'], data);\n    },\n  });\n};\n\nexport const useVerifyTwoFactorMutation = (): UseMutationResult<\n  t.TVerify2FAResponse,\n  unknown,\n  t.TVerify2FARequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: t.TVerify2FARequest) => dataService.verifyTwoFactor(payload), {\n    onSuccess: (data) => {\n      queryClient.setQueryData([QueryKeys.user, '2fa'], data);\n    },\n  });\n};\n\nexport const useConfirmTwoFactorMutation = (): UseMutationResult<\n  t.TVerify2FAResponse,\n  unknown,\n  t.TVerify2FARequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: t.TVerify2FARequest) => dataService.confirmTwoFactor(payload), {\n    onSuccess: (data) => {\n      queryClient.setQueryData([QueryKeys.user, '2fa'], data);\n    },\n  });\n};\n\nexport const useDisableTwoFactorMutation = (): UseMutationResult<\n  t.TDisable2FAResponse,\n  unknown,\n  void,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.disableTwoFactor(), {\n    onSuccess: (data) => {\n      queryClient.setQueryData([QueryKeys.user, '2fa'], null);\n    },\n  });\n};\n\nexport const useRegenerateBackupCodesMutation = (): UseMutationResult<\n  t.TRegenerateBackupCodesResponse,\n  unknown,\n  void,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.regenerateBackupCodes(), {\n    onSuccess: (data) => {\n      queryClient.setQueryData([QueryKeys.user, '2fa', 'backup'], data);\n    },\n  });\n};\n\nexport const useVerifyTwoFactorTempMutation = (\n  options?: t.MutationOptions<t.TVerify2FATempResponse, t.TVerify2FATempRequest, unknown, unknown>,\n): UseMutationResult<t.TVerify2FATempResponse, unknown, t.TVerify2FATempRequest, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (payload: t.TVerify2FATempRequest) => dataService.verifyTwoFactorTemp(payload),\n    {\n      ...(options || {}),\n      onSuccess: (data, ...args) => {\n        queryClient.setQueryData([QueryKeys.user, '2fa'], data);\n        options?.onSuccess?.(data, ...args);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Auth/queries.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { QueryKeys, dataService } from '~/data-provider/data-provider/src';\nimport { useQuery } from '@tanstack/react-query';\nimport type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\nexport const useGetUserQuery = (\n  config?: UseQueryOptions<t.TUser>,\n): QueryObserverResult<t.TUser> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    retry: false,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Endpoints/index.ts",
    "content": "export * from './queries';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Endpoints/queries.ts",
    "content": "import type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { getKnowledgeStatusApi } from '~/api';\nimport { BsConfig, QueryKeys, TEndpointsConfig, TStartupConfig, dataService } from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\nexport const useGetEndpointsQuery = <TData = TEndpointsConfig>(\n  config?: UseQueryOptions<TEndpointsConfig, unknown, TData>,\n): QueryObserverResult<TData> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<TEndpointsConfig, unknown, TData>(\n    [QueryKeys.endpoints],\n    () => dataService.getAIEndpoints(),\n    {\n      staleTime: Infinity,\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n      enabled: (config?.enabled ?? true) === true && queriesEnabled,\n    },\n  );\n};\n\nexport const useGetStartupConfig = (\n  config?: UseQueryOptions<TStartupConfig>,\n): QueryObserverResult<TStartupConfig> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<TStartupConfig>(\n    [QueryKeys.startupConfig],\n    () => dataService.getStartupConfig(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n      enabled: (config?.enabled ?? true) === true && queriesEnabled,\n    },\n  );\n};\n\n\nexport const useGetBsConfig = (\n  config?: UseQueryOptions<BsConfig>,\n): QueryObserverResult<BsConfig> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<BsConfig>(\n    [QueryKeys.bishengConfig],\n    () => dataService.getBishengConfig().then(data => {\n      // 更新favicon\n      const favicon = document.createElement('link');\n      favicon.type = 'image/x-icon';\n      favicon.rel = 'shortcut icon';\n      favicon.href = __APP_ENV__.BASE_URL + data.assistantIcon.image;\n      document.head.appendChild(favicon);\n      return data;\n    }),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: 'always',\n      ...config,\n      enabled: (config?.enabled ?? true) === true && queriesEnabled,\n    },\n  );\n};\n\nexport const useModelBuilding = () => {\n  const [shouldPoll, setShouldPoll] = useState(true);\n\n  const { data, refetch } = useQuery({\n    queryKey: ['knowledgeStatus'],\n    queryFn: async () => {\n      const res = await getKnowledgeStatusApi();\n\n      if (res.data?.status === 'success') {\n        setShouldPoll(false);\n        return false\n      }\n      return true\n    },\n    refetchOnWindowFocus: false,\n    enabled: shouldPoll, // 由状态控制是否启用查询\n    refetchInterval: shouldPoll ? 3000 : false, // 轮询间隔3秒，停止时设为false\n  });\n\n  return [data === undefined ? true : data, refetch] as const;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Files/index.ts",
    "content": "export * from './queries';\nexport * from './mutations';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Files/mutations.ts",
    "content": "import { EToolResources } from '~/data-provider/data-provider/src';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n  QueryKeys,\n  dataService,\n  MutationKeys,\n  defaultOrderQuery,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\n\nexport const useUploadFileMutation = (\n  _options?: t.UploadMutationOptions,\n): UseMutationResult<\n  t.TFileUpload, // response data\n  unknown, // error\n  FormData, // request\n  unknown // context\n> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...options } = _options || {};\n  return useMutation([MutationKeys.fileUpload], {\n    mutationFn: ({ body, signal }: { body: FormData, signal: AbortSignal | null }) => {\n      const width = body.get('width') ?? '';\n      const height = body.get('height') ?? '';\n      const version = body.get('version') ?? '';\n      const endpoint = (body.get('endpoint') ?? '') as string;\n      if (isAssistantsEndpoint(endpoint) && version === '2') {\n        return dataService.uploadFile(body, signal);\n      }\n\n      if (width !== '' && height !== '') {\n        return dataService.uploadImage(body, signal);\n      }\n\n      return dataService.uploadFile(body, signal);\n    },\n    ...options,\n    onSuccess: (data, { body: formData }, context) => {\n      queryClient.setQueryData<t.TFile[] | undefined>([QueryKeys.files], (_files) => [\n        data,\n        ...(_files ?? []),\n      ]);\n\n      const endpoint = formData.get('endpoint');\n      const message_file = formData.get('message_file');\n      const agent_id = (formData.get('agent_id') as string | undefined) ?? '';\n      const assistant_id = (formData.get('assistant_id') as string | undefined) ?? '';\n      const tool_resource = (formData.get('tool_resource') as string | undefined) ?? '';\n\n      if (message_file === 'true') {\n        onSuccess?.(data, formData, context);\n        return;\n      }\n\n      if (agent_id && tool_resource) {\n        queryClient.setQueryData<t.Agent>([QueryKeys.agent, agent_id], (agent) => {\n          if (!agent) {\n            return agent;\n          }\n\n          const update = {};\n          const prevResources = agent.tool_resources ?? {};\n          const prevResource: t.ExecuteCodeResource | t.AgentFileSearchResource = agent\n            .tool_resources?.[tool_resource] ?? {\n            file_ids: [],\n          };\n          if (!prevResource.file_ids) {\n            prevResource.file_ids = [];\n          }\n          prevResource.file_ids.push(data.file_id);\n          update['tool_resources'] = {\n            ...prevResources,\n            [tool_resource]: prevResource,\n          };\n          return {\n            ...agent,\n            ...update,\n          };\n        });\n      }\n\n      if (!assistant_id) {\n        onSuccess?.(data, formData, context);\n        return;\n      }\n\n      queryClient.setQueryData<t.AssistantListResponse>(\n        [QueryKeys.assistants, endpoint, defaultOrderQuery],\n        (prev) => {\n          if (!prev) {\n            return prev;\n          }\n\n          return {\n            ...prev,\n            data: prev.data.map((assistant) => {\n              if (assistant.id !== assistant_id) {\n                return assistant;\n              }\n\n              const update = {};\n              if (!tool_resource) {\n                update['file_ids'] = [...(assistant.file_ids ?? []), data.file_id];\n              }\n              if (tool_resource === EToolResources.code_interpreter) {\n                const prevResources = assistant.tool_resources ?? {};\n                const prevResource = assistant.tool_resources?.[tool_resource] ?? {\n                  file_ids: [],\n                };\n                if (!prevResource.file_ids) {\n                  prevResource.file_ids = [];\n                }\n                prevResource.file_ids.push(data.file_id);\n                update['tool_resources'] = {\n                  ...prevResources,\n                  [tool_resource]: prevResource,\n                };\n              }\n              return {\n                ...assistant,\n                ...update,\n              };\n            }),\n          };\n        },\n      );\n      onSuccess?.(data, formData, context);\n    },\n  });\n};\n\nexport const useDeleteFilesMutation = (\n  _options?: t.DeleteMutationOptions,\n): UseMutationResult<\n  t.DeleteFilesResponse, // response data\n  unknown, // error\n  t.DeleteFilesBody, // request\n  unknown // context\n> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...options } = _options || {};\n  return useMutation([MutationKeys.fileDelete], {\n    mutationFn: (body: t.DeleteFilesBody) => dataService.deleteFiles(body),\n    ...options,\n    onSuccess: (data, vars, context) => {\n      queryClient.setQueryData<t.TFile[] | undefined>([QueryKeys.files], (cachefiles) => {\n        const { files: filesDeleted } = vars;\n\n        const fileMap = filesDeleted.reduce((acc, file) => {\n          acc.set(file.file_id, file);\n          return acc;\n        }, new Map<string, t.BatchFile>());\n\n        return (cachefiles ?? []).filter((file) => !fileMap.has(file.file_id));\n      });\n      onSuccess?.(data, vars, context);\n      if (vars.agent_id != null && vars.agent_id) {\n        queryClient.refetchQueries([QueryKeys.agent, vars.agent_id]);\n      }\n    },\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Files/queries.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { QueryKeys, dataService } from '~/data-provider/data-provider/src';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport { addFileToCache } from '~/utils';\nimport store from '~/store';\n\nexport const useGetFiles = <TData = t.TFile[] | boolean>(\n  config?: UseQueryOptions<t.TFile[], unknown, TData>,\n): QueryObserverResult<TData, unknown> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<t.TFile[], unknown, TData>([QueryKeys.files], () => dataService.getFiles(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n\nexport const useGetFileConfig = <TData = t.FileConfig>(\n  config?: UseQueryOptions<t.FileConfig, unknown, TData>,\n): QueryObserverResult<TData, unknown> => {\n  return useQuery<t.FileConfig, unknown, TData>(\n    [QueryKeys.fileConfig],\n    () => dataService.getFileConfig(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useFileDownload = (userId?: string, file_id?: string): QueryObserverResult<string> => {\n  const queryClient = useQueryClient();\n  return useQuery(\n    [QueryKeys.fileDownload, file_id],\n    async () => {\n      if (!userId || !file_id) {\n        console.warn('No user ID provided for file download');\n        return;\n      }\n      const response = await dataService.getFileDownload(userId, file_id);\n      const blob = response.data;\n      const downloadURL = window.URL.createObjectURL(blob);\n      try {\n        const metadata: t.TFile | undefined = JSON.parse(response.headers['x-file-metadata']);\n        if (!metadata) {\n          console.warn('No metadata found for file download', response.headers);\n          return downloadURL;\n        }\n\n        addFileToCache(queryClient, metadata);\n      } catch (e) {\n        console.error('Error parsing file metadata, skipped updating file query cache', e);\n      }\n\n      return downloadURL;\n    },\n    {\n      enabled: false,\n      retry: false,\n    },\n  );\n};\n\nexport const useCodeOutputDownload = (url = ''): QueryObserverResult<string> => {\n  return useQuery(\n    [QueryKeys.fileDownload, url],\n    async () => {\n      if (!url) {\n        console.warn('No user ID provided for file download');\n        return;\n      }\n      const response = await dataService.getCodeOutputDownload(url);\n      const blob = response.data;\n      const downloadURL = window.URL.createObjectURL(blob);\n      return downloadURL;\n    },\n    {\n      enabled: false,\n      retry: false,\n    },\n  );\n};\n\nexport const useGetKnowledgeFiles = <TData = t.TFile[] | boolean>(\n  queryKey: any[],\n  config?: UseQueryOptions<t.TFile[], unknown, TData>,\n): QueryObserverResult<TData, unknown> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<t.TFile[], unknown, TData>(['knowledgeFile', ...queryKey], () => dataService.queryKnowledge({ keyword: queryKey[1], page: queryKey[0], size: 20 }), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n\n// 获取下载链接\nexport const useGetDownloadUrl = (object_id: string) => {\n  return dataService.getFilePathApi(object_id);\n};"
  },
  {
    "path": "src/frontend/client/src/data-provider/Messages/index.ts",
    "content": "// export * from './queries';\nexport * from './mutations';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Messages/mutations.ts",
    "content": "import { dataService, QueryKeys } from '~/data-provider/data-provider/src';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\n\nexport const useEditArtifact = (\n  _options?: t.EditArtifactOptions,\n): UseMutationResult<t.TEditArtifactResponse, Error, t.TEditArtifactRequest> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...options } = _options ?? {};\n  return useMutation({\n    mutationFn: (variables: t.TEditArtifactRequest) => dataService.editArtifact(variables),\n    onSuccess: (data, vars, context) => {\n      queryClient.setQueryData<t.TMessage[]>([QueryKeys.messages, data.conversationId], (prev) => {\n        if (!prev) {\n          return prev;\n        }\n\n        const newArray = [...prev];\n        let targetIndex: number | undefined;\n\n        for (let i = newArray.length - 1; i >= 0; i--) {\n          if (newArray[i].messageId === vars.messageId) {\n            targetIndex = i;\n            break;\n          }\n        }\n\n        if (targetIndex == null) {\n          return prev;\n        }\n\n        newArray[targetIndex] = {\n          ...newArray[targetIndex],\n          content: data.content,\n          text: data.text,\n        };\n\n        return newArray;\n      });\n\n      onSuccess?.(data, vars, context);\n    },\n    ...options,\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Misc/index.ts",
    "content": "export * from './queries';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Misc/queries.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { QueryKeys, dataService } from '~/data-provider/data-provider/src';\nimport { useQuery } from '@tanstack/react-query';\nimport type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\nexport const useGetBannerQuery = (\n  config?: UseQueryOptions<t.TBannerResponse>,\n): QueryObserverResult<t.TBannerResponse> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<t.TBannerResponse>([QueryKeys.banner], () => dataService.getBanner(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n\nexport const useGetUserBalance = (\n  config?: UseQueryOptions<string>,\n): QueryObserverResult<string> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<string>([QueryKeys.balance], () => dataService.getUserBalance(), {\n    refetchOnWindowFocus: true,\n    refetchOnReconnect: true,\n    refetchOnMount: true,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n\nexport const useGetSearchEnabledQuery = (\n  config?: UseQueryOptions<boolean>,\n): QueryObserverResult<boolean> => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useQuery<boolean>([QueryKeys.searchEnabled], () => dataService.getSearchEnabled(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n    enabled: (config?.enabled ?? true) === true && queriesEnabled,\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Tools/index.ts",
    "content": "export * from './queries';\nexport * from './mutations';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Tools/mutations.ts",
    "content": "import { dataService, QueryKeys, Tools } from '~/data-provider/data-provider/src';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type * as t from '~/data-provider/data-provider/src';\n\nexport const useToolCallMutation = <T extends t.ToolId>(\n  toolId: T,\n  options?: t.ToolCallMutationOptions<T>,\n): UseMutationResult<t.ToolCallResponse, Error, t.ToolParams<T>> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (toolParams: t.ToolParams<T>) => {\n      return dataService.callTool({\n        toolId,\n        toolParams,\n      });\n    },\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (response, variables, context) => {\n        queryClient.setQueryData<t.ToolCallResults>(\n          [QueryKeys.toolCalls, variables.conversationId],\n          (prev) => [\n            ...(prev ?? []),\n            {\n              user: '',\n              toolId: Tools.execute_code,\n              partIndex: variables.partIndex,\n              messageId: variables.messageId,\n              blockIndex: variables.blockIndex,\n              conversationId: variables.conversationId,\n              result: response.result,\n              attachments: response.attachments,\n            },\n          ],\n        );\n        return options?.onSuccess?.(response, variables, context);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/Tools/queries.ts",
    "content": "import { useQuery } from '@tanstack/react-query';\nimport { Constants, QueryKeys, dataService } from '~/data-provider/data-provider/src';\nimport type { QueryObserverResult, UseQueryOptions } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport { getKnowledgeInfo, getLinsightTools, getPersonalKnowledgeInfo } from '~/api/linsight';\n\nexport const useVerifyAgentToolAuth = (\n  params: t.VerifyToolAuthParams,\n  config?: UseQueryOptions<t.VerifyToolAuthResponse>,\n): QueryObserverResult<t.VerifyToolAuthResponse> => {\n  return useQuery<t.VerifyToolAuthResponse>(\n    [QueryKeys.toolAuth, params.toolId],\n    () => dataService.getVerifyAgentToolAuth(params),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetToolCalls = <TData = t.ToolCallResults>(\n  params: t.GetToolCallParams,\n  config?: UseQueryOptions<t.ToolCallResults, unknown, TData>,\n): QueryObserverResult<TData, unknown> => {\n  const { conversationId = '' } = params;\n  return useQuery<t.ToolCallResults, unknown, TData>({\n    queryKey: [QueryKeys.toolCalls, conversationId],\n    queryFn: () => dataService.getToolCalls(params),\n    ...{\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      enabled:\n        conversationId.length > 0 &&\n        conversationId !== Constants.NEW_CONVO &&\n        conversationId !== Constants.SEARCH,\n      ...config,\n    },\n  });\n};\n\n\n// 灵思内置工具列表\nexport const useGetLinsightToolList = () => {\n  return useQuery({\n    queryKey: ['LinsightTools'],\n    queryFn: getLinsightTools,\n    select(data) {\n      return data?.data;\n    },\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n  });\n}\n\n// 获取个人知识库工具\nexport const useGetPersonalToolList = () => {\n  return useQuery({\n    queryKey: ['PersonalTools'],\n    queryFn: () => getPersonalKnowledgeInfo(),\n    select(data) {\n      return data?.data;\n    },\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n  });\n}\n\n// 获取组织知识库\nexport const useGetOrgToolList = (query: { page, page_size?, name?}) => {\n  return useQuery({\n    queryKey: ['OrgTools', query.page, query.name],\n    queryFn: () => getKnowledgeInfo(query),\n    select(data) {\n      return data?.data.data;\n    },\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n  });\n}"
  },
  {
    "path": "src/frontend/client/src/data-provider/connection.ts",
    "content": "import { useCallback, useRef } from 'react';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys, Time, dataService } from '~/data-provider/data-provider/src';\nimport { logger } from '~/utils';\n\nexport const useHealthCheck = () => {\n  useQuery([QueryKeys.health], () => dataService.healthCheck(), {\n    refetchInterval: Time.TEN_MINUTES,\n    retry: false,\n    onError: (error) => {\n      console.error('Health check failed:', error);\n    },\n    cacheTime: 0,\n    staleTime: 0,\n    refetchOnWindowFocus: (query) => {\n      if (!query.state.dataUpdatedAt) {\n        return true;\n      }\n\n      const lastUpdated = new Date(query.state.dataUpdatedAt);\n      const tenMinutesAgo = new Date(Date.now() - Time.TEN_MINUTES);\n\n      logger.log(`Last health check: ${lastUpdated.toISOString()}`);\n      logger.log(`Ten minutes ago: ${tenMinutesAgo.toISOString()}`);\n\n      return lastUpdated < tenMinutesAgo;\n    },\n  });\n};\n\nexport const useInteractionHealthCheck = () => {\n  const queryClient = useQueryClient();\n  const lastInteractionTimeRef = useRef(Date.now());\n\n  const checkHealthOnInteraction = useCallback(() => {\n    const currentTime = Date.now();\n    if (currentTime - lastInteractionTimeRef.current > Time.FIVE_MINUTES) {\n      logger.log(\n        'Checking health on interaction. Time elapsed:',\n        currentTime - lastInteractionTimeRef.current,\n      );\n      queryClient.invalidateQueries([QueryKeys.health]);\n      lastInteractionTimeRef.current = currentTime;\n    }\n  }, [queryClient]);\n\n  return checkHealthOnInteraction;\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/.gitignore",
    "content": "node_modules/\ntest_bundle/\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/babel.config.js",
    "content": "module.exports = {\n  presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'],\n  plugins: ['babel-plugin-replace-ts-export-assignment'],\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/check_updates.sh",
    "content": "#!/bin/bash\n# SCRIPT USED TO DETERMINE WHICH PACKAGE HAD CHANGES\n\n# Set the directory containing the package.json file\ndir=${1:-.}\n\n# Today's date and the date 3 days ago in seconds since the Unix epoch\ntoday=$(date +%s)\nthree_days_ago=$(date -d \"3 days ago\" +%s)\n\n# Read dependencies and devDependencies from package.json\ndependencies=$(jq -r '.dependencies,.devDependencies|keys[]' \"$dir/package.json\")\npackages=($dependencies) # Convert JSON array to bash array\n\n# Array to hold update messages\ndeclare -a updates\n\n# Loop over each package\nfor pkg in \"${packages[@]}\"\ndo\n    echo \"Checking $pkg...\"\n    # Retrieve the version time information as JSON\n    times=$(npm view \"$pkg\" time --json)\n\n    # Loop through dates from the JSON object and check if any are within the last 3 days\n    echo $times | jq -r '. | to_entries[] | select(.key as $k | $k|test(\"^[0-9]\")) | [.key, .value] | @csv' | while IFS=\",\" read -r version date\n    do\n        # Format the date to remove quotes and trim it\n        date=$(echo $date | tr -d '\"' | xargs)\n        # Convert date to seconds since the Unix epoch\n        version_date=$(date -d \"$date\" +%s)\n\n        # Check if this date is within the last three days\n        if (( version_date > three_days_ago && version_date <= today ))\n        then\n            # Convert UTC to Eastern Time (ET), ensuring compatibility\n            et_date=$(date -u -d \"$date\" +\"%Y-%m-%d %H:%M:%S UTC\")\n            et_date=$(date -d \"$et_date -4 hours\" +\"%Y-%m-%d %H:%M:%S ET\")\n            update_message=\"Version $version of $pkg was released on $et_date\"\n            echo \"$update_message\"\n            updates+=(\"$update_message\")\n        fi\n    done\ndone\n\n# Display all collected updates\nif [ ${#updates[@]} -eq 0 ]; then\n    echo \"No recent updates found within the last three days.\"\nelse\n    echo \"Recent updates within the last three days:\"\n    printf \"%s\\n\" \"${updates[@]}\"\nfi\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/jest.config.js",
    "content": "module.exports = {\n  collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}', '!<rootDir>/node_modules/'],\n  coveragePathIgnorePatterns: ['/node_modules/', '/dist/'],\n  coverageReporters: ['text', 'cobertura'],\n  testResultsProcessor: 'jest-junit',\n  moduleNameMapper: {\n    '^@src/(.*)$': '<rootDir>/src/$1',\n  },\n  // coverageThreshold: {\n  //   global: {\n  //     statements: 58,\n  //     branches: 49,\n  //     functions: 50,\n  //     lines: 57,\n  //   },\n  // },\n  restoreMocks: true,\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/package.json",
    "content": "{\n  \"name\": \"librechat-data-provider\",\n  \"version\": \"0.7.6995\",\n  \"description\": \"data services for librechat apps\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"./dist/types/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.es.js\",\n      \"require\": \"./dist/index.js\",\n      \"types\": \"./dist/types/index.d.ts\"\n    },\n    \"./react-query\": {\n      \"import\": \"./dist/react-query/index.es.js\",\n      \"require\": \"./dist/react-query/index.js\",\n      \"types\": \"./dist/types/react-query/index.d.ts\"\n    }\n  },\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"npm run clean && rollup -c --silent --bundleConfigAsCjs\",\n    \"build:watch\": \"rollup -c -w\",\n    \"rollup:api\": \"npx rollup -c server-rollup.config.js --bundleConfigAsCjs\",\n    \"test\": \"jest --coverage --watch\",\n    \"test:ci\": \"jest --coverage --ci\",\n    \"verify\": \"npm run test:ci\",\n    \"b:clean\": \"bun run rimraf dist\",\n    \"b:build\": \"bun run b:clean && bun run rollup -c --silent --bundleConfigAsCjs\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/danny-avila/LibreChat.git\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"bugs\": {\n    \"url\": \"https://github.com/danny-avila/LibreChat/issues\"\n  },\n  \"homepage\": \"https://librechat.ai\",\n  \"dependencies\": {\n    \"axios\": \"^1.7.7\",\n    \"js-yaml\": \"^4.1.0\",\n    \"zod\": \"^3.22.4\"\n  },\n  \"devDependencies\": {\n    \"@babel/preset-env\": \"^7.21.5\",\n    \"@babel/preset-react\": \"^7.18.6\",\n    \"@babel/preset-typescript\": \"^7.21.0\",\n    \"@rollup/plugin-alias\": \"^5.1.0\",\n    \"@rollup/plugin-commonjs\": \"^25.0.2\",\n    \"@rollup/plugin-json\": \"^6.1.0\",\n    \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n    \"@rollup/plugin-replace\": \"^5.0.5\",\n    \"@rollup/plugin-terser\": \"^0.4.4\",\n    \"@types/jest\": \"^29.5.2\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^20.3.0\",\n    \"@types/react\": \"^18.2.18\",\n    \"jest\": \"^29.5.0\",\n    \"jest-junit\": \"^16.0.0\",\n    \"openai\": \"^4.76.3\",\n    \"openapi-types\": \"^12.1.3\",\n    \"rimraf\": \"^5.0.1\",\n    \"rollup\": \"^4.22.4\",\n    \"rollup-plugin-generate-package-json\": \"^3.2.0\",\n    \"rollup-plugin-peer-deps-external\": \"^2.2.4\",\n    \"rollup-plugin-typescript2\": \"^0.35.0\",\n    \"typescript\": \"^5.0.4\"\n  },\n  \"peerDependencies\": {\n    \"@tanstack/react-query\": \"^4.28.0\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.org/\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/react-query/package.json",
    "content": "{\n  \"name\": \"librechat-query\",\n  \"private\": true,\n  \"main\": \"../index.js\",\n  \"module\": \"./index.es.js\",\n  \"types\": \"../dist/types/react-query/index.d.ts\",\n  \"dependencies\": {\n    \"axios\": \"^1.7.7\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/rollup.config.js",
    "content": "import typescript from 'rollup-plugin-typescript2';\nimport resolve from '@rollup/plugin-node-resolve';\nimport pkg from './package.json';\nimport peerDepsExternal from 'rollup-plugin-peer-deps-external';\nimport commonjs from '@rollup/plugin-commonjs';\nimport replace from '@rollup/plugin-replace';\nimport terser from '@rollup/plugin-terser';\nimport generatePackageJson from 'rollup-plugin-generate-package-json';\n\nconst plugins = [\n  peerDepsExternal(),\n  resolve(),\n  replace({\n    __IS_DEV__: process.env.NODE_ENV === 'development',\n  }),\n  commonjs(),\n  typescript({\n    tsconfig: './tsconfig.json',\n    useTsconfigDeclarationDir: true,\n  }),\n  terser(),\n];\n\nconst subfolderPlugins = (folderName) => [\n  ...plugins,\n  generatePackageJson({\n    baseContents: {\n      name: `${pkg.name}/${folderName}`,\n      private: true,\n      main: '../index.js',\n      module: './index.es.js', // Adjust to match the output file\n      types: `../types/${folderName}/index.d.ts`, // Point to correct types file\n    },\n  }),\n];\n\nexport default [\n  {\n    input: 'src/index.ts',\n    output: [\n      {\n        file: pkg.main,\n        format: 'cjs',\n        sourcemap: true,\n        exports: 'named',\n      },\n      {\n        file: pkg.module,\n        format: 'esm',\n        sourcemap: true,\n        exports: 'named',\n      },\n    ],\n    ...{\n      external: [\n        ...Object.keys(pkg.dependencies || {}),\n        ...Object.keys(pkg.devDependencies || {}),\n        ...Object.keys(pkg.peerDependencies || {}),\n        'react',\n        'react-dom',\n      ],\n      preserveSymlinks: true,\n      plugins,\n    },\n  },\n  // Separate bundle for react-query related part\n  {\n    input: 'src/react-query/index.ts',\n    output: [\n      {\n        file: 'dist/react-query/index.es.js',\n        format: 'esm',\n        exports: 'named',\n        sourcemap: true,\n      },\n    ],\n    external: [\n      ...Object.keys(pkg.dependencies || {}),\n      ...Object.keys(pkg.devDependencies || {}),\n      ...Object.keys(pkg.peerDependencies || {}),\n      'react',\n      'react-dom',\n    ],\n    preserveSymlinks: true,\n    plugins: subfolderPlugins('react-query'),\n  },\n];\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/server-rollup.config.js",
    "content": "import path from 'path';\nimport resolve from '@rollup/plugin-node-resolve';\nimport commonjs from '@rollup/plugin-commonjs';\nimport alias from '@rollup/plugin-alias';\nimport json from '@rollup/plugin-json';\n\nconst rootPath = path.resolve(__dirname, '../../');\nconst rootServerPath = path.resolve(__dirname, '../../api');\nconst entryPath = path.resolve(rootPath, 'api/server/index.js');\n\nconsole.log('entryPath', entryPath);\n\n// Define custom aliases here\nconst customAliases = {\n  entries: [{ find: '~', replacement: rootServerPath }],\n};\n\nexport default {\n  input: entryPath,\n  output: {\n    dir: 'test_bundle',\n    format: 'cjs',\n  },\n  plugins: [\n    alias(customAliases),\n    resolve({\n      preferBuiltins: true,\n      extensions: ['.js', '.json', '.node'],\n    }),\n    commonjs(),\n    json(),\n  ],\n  external: (id) => {\n    // More selective external function\n    if (/node_modules/.test(id)) {\n      return !id.startsWith('langchain/');\n    }\n    return false;\n  },\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/actions.spec.ts",
    "content": "import axios from 'axios';\nimport { z } from 'zod';\nimport { OpenAPIV3 } from 'openapi-types';\nimport {\n  createURL,\n  resolveRef,\n  ActionRequest,\n  openapiToFunction,\n  FunctionSignature,\n  validateAndParseOpenAPISpec,\n} from '../src/actions';\nimport {\n  getWeatherOpenapiSpec,\n  whimsicalOpenapiSpec,\n  scholarAIOpenapiSpec,\n  swapidev,\n} from './openapiSpecs';\nimport { AuthorizationTypeEnum, AuthTypeEnum } from '../src/types/assistants';\nimport type { FlowchartSchema } from './openapiSpecs';\nimport type { ParametersSchema } from '../src/actions';\n\njest.mock('axios');\nconst mockedAxios = axios as jest.Mocked<typeof axios>;\nmockedAxios.create.mockReturnValue(mockedAxios);\n\ndescribe('FunctionSignature', () => {\n  it('creates a function signature and converts to JSON tool', () => {\n    const signature = new FunctionSignature('testFunction', 'A test function', {\n      param1: { type: 'string' },\n    } as unknown as ParametersSchema);\n    expect(signature.name).toBe('testFunction');\n    expect(signature.description).toBe('A test function');\n    expect(signature.toObjectTool()).toEqual({\n      type: 'function',\n      function: {\n        name: 'testFunction',\n        description: 'A test function',\n        parameters: {\n          param1: { type: 'string' },\n        },\n      },\n    });\n  });\n});\n\ndescribe('ActionRequest', () => {\n  // Mocking responses for each method\n  beforeEach(() => {\n    mockedAxios.get.mockResolvedValue({ data: { success: true, method: 'GET' } });\n    mockedAxios.post.mockResolvedValue({ data: { success: true, method: 'POST' } });\n    mockedAxios.put.mockResolvedValue({ data: { success: true, method: 'PUT' } });\n    mockedAxios.delete.mockResolvedValue({ data: { success: true, method: 'DELETE' } });\n    mockedAxios.patch.mockResolvedValue({ data: { success: true, method: 'PATCH' } });\n  });\n\n  afterEach(() => {\n    jest.clearAllMocks();\n  });\n\n  it('should make a GET request', async () => {\n    const actionRequest = new ActionRequest(\n      'https://example.com',\n      '/test',\n      'GET',\n      'testOp',\n      false,\n      'application/json',\n    );\n    actionRequest.setParams({ param1: 'value1' });\n    const response = await actionRequest.execute();\n    expect(mockedAxios.get).toHaveBeenCalledWith('https://example.com/test', expect.anything());\n    expect(response.data).toEqual({ success: true, method: 'GET' });\n  });\n\n  describe('ActionRequest', () => {\n    beforeEach(() => {\n      mockedAxios.get.mockClear();\n      mockedAxios.post.mockClear();\n      mockedAxios.put.mockClear();\n      mockedAxios.delete.mockClear();\n      mockedAxios.patch.mockClear();\n    });\n\n    it('handles GET requests', async () => {\n      mockedAxios.get.mockResolvedValue({ data: { success: true } });\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/get',\n        'GET',\n        'testGet',\n        false,\n        'application/json',\n      );\n      actionRequest.setParams({ param: 'test' });\n      const response = await actionRequest.execute();\n      expect(mockedAxios.get).toHaveBeenCalled();\n      expect(response.data.success).toBe(true);\n    });\n\n    it('handles POST requests', async () => {\n      mockedAxios.post.mockResolvedValue({ data: { success: true } });\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/post',\n        'POST',\n        'testPost',\n        false,\n        'application/json',\n      );\n      actionRequest.setParams({ param: 'test' });\n      const response = await actionRequest.execute();\n      expect(mockedAxios.post).toHaveBeenCalled();\n      expect(response.data.success).toBe(true);\n    });\n\n    it('handles PUT requests', async () => {\n      mockedAxios.put.mockResolvedValue({ data: { success: true } });\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/put',\n        'PUT',\n        'testPut',\n        false,\n        'application/json',\n      );\n      actionRequest.setParams({ param: 'test' });\n      const response = await actionRequest.execute();\n      expect(mockedAxios.put).toHaveBeenCalled();\n      expect(response.data.success).toBe(true);\n    });\n\n    it('handles DELETE requests', async () => {\n      mockedAxios.delete.mockResolvedValue({ data: { success: true } });\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/delete',\n        'DELETE',\n        'testDelete',\n        false,\n        'application/json',\n      );\n      actionRequest.setParams({ param: 'test' });\n      const response = await actionRequest.execute();\n      expect(mockedAxios.delete).toHaveBeenCalled();\n      expect(response.data.success).toBe(true);\n    });\n\n    it('handles PATCH requests', async () => {\n      mockedAxios.patch.mockResolvedValue({ data: { success: true } });\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/patch',\n        'PATCH',\n        'testPatch',\n        false,\n        'application/json',\n      );\n      actionRequest.setParams({ param: 'test' });\n      const response = await actionRequest.execute();\n      expect(mockedAxios.patch).toHaveBeenCalled();\n      expect(response.data.success).toBe(true);\n    });\n\n    it('throws an error for unsupported HTTP methods', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/invalid',\n        'INVALID',\n        'testInvalid',\n        false,\n        'application/json',\n      );\n      await expect(actionRequest.execute()).rejects.toThrow('Unsupported HTTP method: invalid');\n    });\n\n    it('replaces path parameters with values from toolInput', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/stocks/{stocksTicker}/bars/{multiplier}',\n        'GET',\n        'getAggregateBars',\n        false,\n        'application/json',\n      );\n\n      const executor = actionRequest.createExecutor();\n      executor.setParams({\n        stocksTicker: 'AAPL',\n        multiplier: 5,\n        startDate: '2023-01-01',\n        endDate: '2023-12-31',\n      });\n\n      expect(executor.path).toBe('/stocks/AAPL/bars/5');\n      expect(executor.params).toEqual({\n        startDate: '2023-01-01',\n        endDate: '2023-12-31',\n      });\n\n      await executor.execute();\n      expect(mockedAxios.get).toHaveBeenCalledWith('https://example.com/stocks/AAPL/bars/5', {\n        headers: expect.anything(),\n        params: {\n          startDate: '2023-01-01',\n          endDate: '2023-12-31',\n        },\n      });\n    });\n  });\n\n  it('throws an error for unsupported HTTP method', async () => {\n    const actionRequest = new ActionRequest(\n      'https://example.com',\n      '/test',\n      'INVALID',\n      'testOp',\n      false,\n      'application/json',\n    );\n    await expect(actionRequest.execute()).rejects.toThrow('Unsupported HTTP method: invalid');\n  });\n\n  describe('ActionRequest Concurrent Execution', () => {\n    beforeEach(() => {\n      jest.clearAllMocks();\n      mockedAxios.get.mockImplementation(async (url, config) => ({\n        data: { url, params: config?.params, headers: config?.headers },\n      }));\n    });\n\n    it('maintains isolated state between concurrent executions with different parameters', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/math/sqrt/{number}',\n        'GET',\n        'getSqrt',\n        false,\n        'application/json',\n      );\n\n      // Simulate concurrent requests with different numbers\n      const numbers = [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];\n      const requests = numbers.map((num) => ({\n        number: num.toString(),\n        precision: '2',\n      }));\n\n      const responses = await Promise.all(\n        requests.map((params) => {\n          const executor = actionRequest.createExecutor();\n          return executor.setParams(params).execute();\n        }),\n      );\n\n      // Verify each response used the correct path parameter\n      responses.forEach((response, index) => {\n        const expectedUrl = `https://example.com/math/sqrt/${numbers[index]}`;\n        expect(response.data.url).toBe(expectedUrl);\n        expect(response.data.params).toEqual({ precision: '2' });\n      });\n\n      // Verify the correct number of calls were made\n      expect(mockedAxios.get).toHaveBeenCalledTimes(numbers.length);\n    });\n\n    it('maintains isolated authentication state between concurrent executions', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/secure/resource/{id}',\n        'GET',\n        'getResource',\n        false,\n        'application/json',\n      );\n\n      const requests = [\n        {\n          params: { id: '1' },\n          auth: {\n            auth: {\n              type: AuthTypeEnum.ServiceHttp,\n              authorization_type: AuthorizationTypeEnum.Bearer,\n            },\n            api_key: 'token1',\n          },\n        },\n        {\n          params: { id: '2' },\n          auth: {\n            auth: {\n              type: AuthTypeEnum.ServiceHttp,\n              authorization_type: AuthorizationTypeEnum.Bearer,\n            },\n            api_key: 'token2',\n          },\n        },\n      ];\n\n      const responses = await Promise.all(\n        requests.map(async ({ params, auth }) => {\n          const executor = actionRequest.createExecutor();\n          return (await executor.setParams(params).setAuth(auth)).execute();\n        }),\n      );\n\n      // Verify each response had its own auth token\n      responses.forEach((response, index) => {\n        const expectedUrl = `https://example.com/secure/resource/${index + 1}`;\n        expect(response.data.url).toBe(expectedUrl);\n        expect(response.data.headers).toMatchObject({\n          Authorization: `Bearer token${index + 1}`,\n        });\n      });\n    });\n\n    it('handles mixed authentication types concurrently', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/api/{version}/data',\n        'GET',\n        'getData',\n        false,\n        'application/json',\n      );\n\n      const requests = [\n        {\n          params: { version: 'v1' },\n          auth: {\n            auth: {\n              type: AuthTypeEnum.ServiceHttp,\n              authorization_type: AuthorizationTypeEnum.Bearer,\n            },\n            api_key: 'bearer_token',\n          },\n        },\n        {\n          params: { version: 'v2' },\n          auth: {\n            auth: {\n              type: AuthTypeEnum.ServiceHttp,\n              authorization_type: AuthorizationTypeEnum.Basic,\n            },\n            api_key: 'basic:auth',\n          },\n        },\n        {\n          params: { version: 'v3' },\n          auth: {\n            auth: {\n              type: AuthTypeEnum.ServiceHttp,\n              authorization_type: AuthorizationTypeEnum.Custom,\n              custom_auth_header: 'X-API-Key',\n            },\n            api_key: 'custom_key',\n          },\n        },\n      ];\n\n      const responses = await Promise.all(\n        requests.map(async ({ params, auth }) => {\n          const executor = actionRequest.createExecutor();\n          return (await executor.setParams(params).setAuth(auth)).execute();\n        }),\n      );\n\n      // Verify each response had the correct auth type and headers\n      expect(responses[0].data.headers).toMatchObject({\n        Authorization: 'Bearer bearer_token',\n      });\n\n      expect(responses[1].data.headers).toMatchObject({\n        Authorization: `Basic ${Buffer.from('basic:auth').toString('base64')}`,\n      });\n\n      expect(responses[2].data.headers).toMatchObject({\n        'X-API-Key': 'custom_key',\n      });\n    });\n\n    it('maintains parameter integrity during concurrent path parameter replacement', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/users/{userId}/posts/{postId}',\n        'GET',\n        'getUserPost',\n        false,\n        'application/json',\n      );\n\n      const requests = [\n        { userId: '1', postId: 'a', filter: 'recent' },\n        { userId: '2', postId: 'b', filter: 'popular' },\n        { userId: '3', postId: 'c', filter: 'trending' },\n      ];\n\n      const responses = await Promise.all(\n        requests.map((params) => {\n          const executor = actionRequest.createExecutor();\n          return executor.setParams(params).execute();\n        }),\n      );\n\n      responses.forEach((response, index) => {\n        const expectedUrl = `https://example.com/users/${requests[index].userId}/posts/${requests[index].postId}`;\n        expect(response.data.url).toBe(expectedUrl);\n        expect(response.data.params).toEqual({ filter: requests[index].filter });\n      });\n    });\n\n    it('preserves original ActionRequest state after multiple executions', async () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/original/{param}',\n        'GET',\n        'testOp',\n        false,\n        'application/json',\n      );\n\n      // Store original values\n      const originalPath = actionRequest.path;\n      const originalDomain = actionRequest.domain;\n      const originalMethod = actionRequest.method;\n\n      // Perform multiple concurrent executions\n      await Promise.all([\n        actionRequest.createExecutor().setParams({ param: '1' }).execute(),\n        actionRequest.createExecutor().setParams({ param: '2' }).execute(),\n        actionRequest.createExecutor().setParams({ param: '3' }).execute(),\n      ]);\n\n      // Verify original ActionRequest remains unchanged\n      expect(actionRequest.path).toBe(originalPath);\n      expect(actionRequest.domain).toBe(originalDomain);\n      expect(actionRequest.method).toBe(originalMethod);\n    });\n\n    it('shares immutable configuration between executors from the same ActionRequest', () => {\n      const actionRequest = new ActionRequest(\n        'https://example.com',\n        '/api/{version}/data',\n        'GET',\n        'getData',\n        false,\n        'application/json',\n      );\n\n      // Create multiple executors\n      const executor1 = actionRequest.createExecutor();\n      const executor2 = actionRequest.createExecutor();\n      const executor3 = actionRequest.createExecutor();\n\n      // Test that the configuration properties are shared\n      [executor1, executor2, executor3].forEach((executor) => {\n        expect(executor.getConfig()).toBeDefined();\n        expect(executor.getConfig()).toEqual({\n          domain: 'https://example.com',\n          basePath: '/api/{version}/data',\n          method: 'GET',\n          operation: 'getData',\n          isConsequential: false,\n          contentType: 'application/json',\n        });\n      });\n\n      // Verify that config objects are the exact same instance (shared reference)\n      expect(executor1.getConfig()).toBe(executor2.getConfig());\n      expect(executor2.getConfig()).toBe(executor3.getConfig());\n\n      // Verify that modifying mutable state doesn't affect other executors\n      executor1.setParams({ version: 'v1' });\n      executor2.setParams({ version: 'v2' });\n      executor3.setParams({ version: 'v3' });\n\n      expect(executor1.path).toBe('/api/v1/data');\n      expect(executor2.path).toBe('/api/v2/data');\n      expect(executor3.path).toBe('/api/v3/data');\n\n      // Verify that the original config remains unchanged\n      expect(executor1.getConfig().basePath).toBe('/api/{version}/data');\n      expect(executor2.getConfig().basePath).toBe('/api/{version}/data');\n      expect(executor3.getConfig().basePath).toBe('/api/{version}/data');\n    });\n  });\n});\n\ndescribe('Authentication Handling', () => {\n  it('correctly sets Basic Auth header', async () => {\n    const actionRequest = new ActionRequest(\n      'https://example.com',\n      '/test',\n      'GET',\n      'testOp',\n      false,\n      'application/json',\n    );\n\n    const api_key = 'user:pass';\n    const encodedCredentials = Buffer.from('user:pass').toString('base64');\n\n    const executor = actionRequest.createExecutor();\n    await executor.setParams({ param1: 'value1' }).setAuth({\n      auth: {\n        type: AuthTypeEnum.ServiceHttp,\n        authorization_type: AuthorizationTypeEnum.Basic,\n      },\n      api_key,\n    });\n\n    await executor.execute();\n    expect(mockedAxios.get).toHaveBeenCalledWith('https://example.com/test', {\n      headers: expect.objectContaining({\n        Authorization: `Basic ${encodedCredentials}`,\n        'Content-Type': 'application/json',\n      }),\n      params: { param1: 'value1' },\n    });\n  });\n\n  it('correctly sets Bearer token', async () => {\n    const actionRequest = new ActionRequest(\n      'https://example.com',\n      '/test',\n      'GET',\n      'testOp',\n      false,\n      'application/json',\n    );\n\n    const executor = actionRequest.createExecutor();\n    await executor.setParams({ param1: 'value1' }).setAuth({\n      auth: {\n        type: AuthTypeEnum.ServiceHttp,\n        authorization_type: AuthorizationTypeEnum.Bearer,\n      },\n      api_key: 'token123',\n    });\n\n    await executor.execute();\n    expect(mockedAxios.get).toHaveBeenCalledWith('https://example.com/test', {\n      headers: expect.objectContaining({\n        Authorization: 'Bearer token123',\n        'Content-Type': 'application/json',\n      }),\n      params: { param1: 'value1' },\n    });\n  });\n\n  it('correctly sets API Key', async () => {\n    const actionRequest = new ActionRequest(\n      'https://example.com',\n      '/test',\n      'GET',\n      'testOp',\n      false,\n      'application/json',\n    );\n\n    const executor = actionRequest.createExecutor();\n    await executor.setParams({ param1: 'value1' }).setAuth({\n      auth: {\n        type: AuthTypeEnum.ServiceHttp,\n        authorization_type: AuthorizationTypeEnum.Custom,\n        custom_auth_header: 'X-API-KEY',\n      },\n      api_key: 'abc123',\n    });\n\n    await executor.execute();\n    expect(mockedAxios.get).toHaveBeenCalledWith('https://example.com/test', {\n      headers: expect.objectContaining({\n        'X-API-KEY': 'abc123',\n        'Content-Type': 'application/json',\n      }),\n      params: { param1: 'value1' },\n    });\n  });\n});\n\ndescribe('resolveRef', () => {\n  it('correctly resolves $ref references in the OpenAPI spec', () => {\n    const openapiSpec = whimsicalOpenapiSpec;\n    const flowchartRequestRef = (\n      openapiSpec.paths['/ai.chatgpt.render-flowchart']?.post\n        ?.requestBody as OpenAPIV3.RequestBodyObject\n    ).content['application/json'].schema;\n\n    expect(flowchartRequestRef).toBeDefined();\n\n    const resolvedSchemaObject = resolveRef(\n      flowchartRequestRef as OpenAPIV3.ReferenceObject,\n      openapiSpec.components,\n    ) as OpenAPIV3.SchemaObject;\n\n    expect(resolvedSchemaObject).toBeDefined();\n    expect(resolvedSchemaObject.type).toBe('object');\n    expect(resolvedSchemaObject.properties).toBeDefined();\n\n    const properties = resolvedSchemaObject.properties as FlowchartSchema;\n    expect(properties.mermaid).toBeDefined();\n    expect(properties.mermaid.type).toBe('string');\n  });\n});\n\ndescribe('resolveRef general cases', () => {\n  const spec = {\n    openapi: '3.0.0',\n    info: { title: 'TestSpec', version: '1.0.0' },\n    paths: {},\n    components: {\n      schemas: {\n        TestSchema: { type: 'string' },\n      },\n      parameters: {\n        TestParam: {\n          name: 'myParam',\n          in: 'query',\n          required: false,\n          schema: { $ref: '#/components/schemas/TestSchema' },\n        },\n      },\n      requestBodies: {\n        TestRequestBody: {\n          content: {\n            'application/json': {\n              schema: { $ref: '#/components/schemas/TestSchema' },\n            },\n          },\n        },\n      },\n    },\n  } satisfies OpenAPIV3.Document;\n\n  it('resolves schema refs correctly', () => {\n    const schemaRef: OpenAPIV3.ReferenceObject = { $ref: '#/components/schemas/TestSchema' };\n    const resolvedSchema = resolveRef<OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>(\n      schemaRef,\n      spec.components,\n    );\n    expect(resolvedSchema.type).toEqual('string');\n  });\n\n  it('resolves parameter refs correctly, then schema within parameter', () => {\n    const paramRef: OpenAPIV3.ReferenceObject = { $ref: '#/components/parameters/TestParam' };\n    const resolvedParam = resolveRef<OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject>(\n      paramRef,\n      spec.components,\n    );\n    expect(resolvedParam.name).toEqual('myParam');\n    expect(resolvedParam.in).toEqual('query');\n    expect(resolvedParam.required).toBe(false);\n\n    const paramSchema = resolveRef<OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>(\n      resolvedParam.schema as OpenAPIV3.ReferenceObject,\n      spec.components,\n    );\n    expect(paramSchema.type).toEqual('string');\n  });\n\n  it('resolves requestBody refs correctly, then schema within requestBody', () => {\n    const requestBodyRef: OpenAPIV3.ReferenceObject = {\n      $ref: '#/components/requestBodies/TestRequestBody',\n    };\n    const resolvedRequestBody = resolveRef<OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject>(\n      requestBodyRef,\n      spec.components,\n    );\n\n    expect(resolvedRequestBody.content['application/json']).toBeDefined();\n\n    const schemaInRequestBody = resolveRef<OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject>(\n      resolvedRequestBody.content['application/json'].schema as OpenAPIV3.ReferenceObject,\n      spec.components,\n    );\n\n    expect(schemaInRequestBody.type).toEqual('string');\n  });\n});\n\ndescribe('openapiToFunction', () => {\n  it('converts OpenAPI spec to function signatures and request builders', () => {\n    const { functionSignatures, requestBuilders } = openapiToFunction(getWeatherOpenapiSpec);\n    expect(functionSignatures.length).toBe(1);\n    expect(functionSignatures[0].name).toBe('GetCurrentWeather');\n\n    const parameters = functionSignatures[0].parameters as ParametersSchema & {\n      properties: {\n        location: {\n          type: 'string';\n        };\n        locations: {\n          type: 'array';\n          items: {\n            type: 'object';\n            properties: {\n              city: {\n                type: 'string';\n              };\n              state: {\n                type: 'string';\n              };\n              countryCode: {\n                type: 'string';\n              };\n              time: {\n                type: 'string';\n              };\n            };\n          };\n        };\n      };\n    };\n\n    expect(parameters).toBeDefined();\n    expect(parameters.properties.locations).toBeDefined();\n    expect(parameters.properties.locations.type).toBe('array');\n    expect(parameters.properties.locations.items.type).toBe('object');\n\n    expect(parameters.properties.locations.items.properties.city.type).toBe('string');\n    expect(parameters.properties.locations.items.properties.state.type).toBe('string');\n    expect(parameters.properties.locations.items.properties.countryCode.type).toBe('string');\n    expect(parameters.properties.locations.items.properties.time.type).toBe('string');\n\n    expect(requestBuilders).toHaveProperty('GetCurrentWeather');\n    expect(requestBuilders.GetCurrentWeather).toBeInstanceOf(ActionRequest);\n  });\n\n  describe('openapiToFunction with $ref resolution', () => {\n    it('correctly converts OpenAPI spec to function signatures and request builders, resolving $ref references', () => {\n      const { functionSignatures, requestBuilders } = openapiToFunction(whimsicalOpenapiSpec);\n\n      expect(functionSignatures.length).toBeGreaterThan(0);\n\n      const postRenderFlowchartSignature = functionSignatures.find(\n        (sig) => sig.name === 'postRenderFlowchart',\n      );\n      expect(postRenderFlowchartSignature).toBeDefined();\n      expect(postRenderFlowchartSignature?.name).toBe('postRenderFlowchart');\n      expect(postRenderFlowchartSignature?.parameters).toBeDefined();\n\n      expect(requestBuilders).toHaveProperty('postRenderFlowchart');\n      const postRenderFlowchartRequestBuilder = requestBuilders['postRenderFlowchart'];\n      expect(postRenderFlowchartRequestBuilder).toBeDefined();\n      expect(postRenderFlowchartRequestBuilder.method).toBe('post');\n      expect(postRenderFlowchartRequestBuilder.path).toBe('/ai.chatgpt.render-flowchart');\n    });\n  });\n});\n\nconst invalidServerURL = 'Could not find a valid URL in `servers`';\n\ndescribe('validateAndParseOpenAPISpec', () => {\n  it('validates a correct OpenAPI spec successfully', () => {\n    const validSpec = JSON.stringify({\n      openapi: '3.0.0',\n      info: { title: 'Test API', version: '1.0.0' },\n      servers: [{ url: 'https://test.api' }],\n      paths: { '/test': {} },\n      components: { schemas: {} },\n    });\n\n    const result = validateAndParseOpenAPISpec(validSpec);\n    expect(result.status).toBe(true);\n    expect(result.message).toBe('OpenAPI spec is valid.');\n  });\n\n  it('returns an error for spec with no servers', () => {\n    const noServerSpec = JSON.stringify({\n      openapi: '3.0.0',\n      info: { title: 'Test API', version: '1.0.0' },\n      paths: { '/test': {} },\n      components: { schemas: {} },\n    });\n\n    const result = validateAndParseOpenAPISpec(noServerSpec);\n    expect(result.status).toBe(false);\n    expect(result.message).toBe(invalidServerURL);\n  });\n\n  it('returns an error for spec with empty server URL', () => {\n    const emptyURLSpec = `{\n      \"openapi\": \"3.1.0\",\n      \"info\": {\n        \"title\": \"Untitled\",\n        \"description\": \"Your OpenAPI specification\",\n        \"version\": \"v1.0.0\"\n      },\n      \"servers\": [\n        {\n          \"url\": \"\"\n        }\n      ],\n      \"paths\": {},\n      \"components\": {\n        \"schemas\": {}\n      }\n    }`;\n\n    const result = validateAndParseOpenAPISpec(emptyURLSpec);\n    expect(result.status).toBe(false);\n    expect(result.message).toBe(invalidServerURL);\n  });\n\n  it('returns an error for spec with no paths', () => {\n    const noPathsSpec = JSON.stringify({\n      openapi: '3.0.0',\n      info: { title: 'Test API', version: '1.0.0' },\n      servers: [{ url: 'https://test.api' }],\n      components: { schemas: {} },\n    });\n\n    const result = validateAndParseOpenAPISpec(noPathsSpec);\n    expect(result.status).toBe(false);\n    expect(result.message).toBe('No paths found in the OpenAPI spec.');\n  });\n\n  it('detects missing components in spec', () => {\n    const missingComponentSpec = JSON.stringify({\n      openapi: '3.0.0',\n      info: { title: 'Test API', version: '1.0.0' },\n      servers: [{ url: 'https://test.api' }],\n      paths: {\n        '/test': {\n          get: {\n            responses: {\n              '200': {\n                content: {\n                  'application/json': { schema: { $ref: '#/components/schemas/Missing' } },\n                },\n              },\n            },\n          },\n        },\n      },\n    });\n\n    const result = validateAndParseOpenAPISpec(missingComponentSpec);\n    expect(result.status).toBe(true);\n    expect(result.message).toContain('reference to unknown component Missing');\n    expect(result.spec).toBeDefined();\n  });\n\n  it('handles invalid spec formats', () => {\n    const invalidSpec = 'not a valid spec';\n\n    const result = validateAndParseOpenAPISpec(invalidSpec);\n    expect(result.status).toBe(false);\n    expect(result.message).toBe(invalidServerURL);\n  });\n\n  it('handles YAML spec and correctly converts to Function Signatures', () => {\n    const result = validateAndParseOpenAPISpec(scholarAIOpenapiSpec);\n    expect(result.status).toBe(true);\n\n    const spec = result.spec;\n    expect(spec).toBeDefined();\n\n    const { functionSignatures, requestBuilders } = openapiToFunction(spec as OpenAPIV3.Document);\n    expect(functionSignatures.length).toBe(3);\n    expect(requestBuilders).toHaveProperty('searchAbstracts');\n    expect(requestBuilders).toHaveProperty('getFullText');\n    expect(requestBuilders).toHaveProperty('saveCitation');\n  });\n});\n\ndescribe('createURL', () => {\n  it('correctly combines domain and path', () => {\n    expect(createURL('https://example.com', '/api/v1/users')).toBe(\n      'https://example.com/api/v1/users',\n    );\n  });\n\n  it('handles domain with trailing slash', () => {\n    expect(createURL('https://example.com/', '/api/v1/users')).toBe(\n      'https://example.com/api/v1/users',\n    );\n  });\n\n  it('handles path with leading slash', () => {\n    expect(createURL('https://example.com', 'api/v1/users')).toBe(\n      'https://example.com/api/v1/users',\n    );\n  });\n\n  it('handles domain with trailing slash and path with leading slash', () => {\n    expect(createURL('https://example.com/', '/api/v1/users')).toBe(\n      'https://example.com/api/v1/users',\n    );\n  });\n\n  it('handles domain without trailing slash and path without leading slash', () => {\n    expect(createURL('https://example.com', 'api/v1/users')).toBe(\n      'https://example.com/api/v1/users',\n    );\n  });\n\n  it('handles empty path', () => {\n    expect(createURL('https://example.com', '')).toBe('https://example.com/');\n  });\n\n  it('handles domain with subdirectory', () => {\n    expect(createURL('https://example.com/subdirectory', '/api/v1/users')).toBe(\n      'https://example.com/subdirectory/api/v1/users',\n    );\n  });\n\n  describe('openapiToFunction zodSchemas', () => {\n    describe('getWeatherOpenapiSpec', () => {\n      const { zodSchemas } = openapiToFunction(getWeatherOpenapiSpec, true);\n\n      it('generates correct Zod schema for GetCurrentWeather', () => {\n        expect(zodSchemas).toBeDefined();\n        expect(zodSchemas?.GetCurrentWeather).toBeDefined();\n\n        const GetCurrentWeatherSchema = zodSchemas?.GetCurrentWeather;\n\n        expect(GetCurrentWeatherSchema instanceof z.ZodObject).toBe(true);\n\n        if (!(GetCurrentWeatherSchema instanceof z.ZodObject)) {\n          throw new Error('GetCurrentWeatherSchema is not a ZodObject');\n        }\n\n        const shape = GetCurrentWeatherSchema.shape;\n        expect(shape.location instanceof z.ZodString).toBe(true);\n\n        // Check locations property\n        expect(shape.locations).toBeDefined();\n        expect(shape.locations instanceof z.ZodOptional).toBe(true);\n\n        if (!(shape.locations instanceof z.ZodOptional)) {\n          throw new Error('locations is not a ZodOptional');\n        }\n\n        const locationsInnerType = shape.locations._def.innerType;\n        expect(locationsInnerType instanceof z.ZodArray).toBe(true);\n\n        if (!(locationsInnerType instanceof z.ZodArray)) {\n          throw new Error('locationsInnerType is not a ZodArray');\n        }\n\n        const locationsItemSchema = locationsInnerType.element;\n        expect(locationsItemSchema instanceof z.ZodObject).toBe(true);\n\n        if (!(locationsItemSchema instanceof z.ZodObject)) {\n          throw new Error('locationsItemSchema is not a ZodObject');\n        }\n\n        // Validate the structure of locationsItemSchema\n        expect(locationsItemSchema.shape.city instanceof z.ZodString).toBe(true);\n        expect(locationsItemSchema.shape.state instanceof z.ZodString).toBe(true);\n        expect(locationsItemSchema.shape.countryCode instanceof z.ZodString).toBe(true);\n\n        // Check if time is optional\n        const timeSchema = locationsItemSchema.shape.time;\n        expect(timeSchema instanceof z.ZodOptional).toBe(true);\n\n        if (!(timeSchema instanceof z.ZodOptional)) {\n          throw new Error('timeSchema is not a ZodOptional');\n        }\n\n        expect(timeSchema._def.innerType instanceof z.ZodString).toBe(true);\n\n        // Check the description\n        expect(shape.locations._def.description).toBe(\n          'A list of locations to retrieve the weather for.',\n        );\n      });\n\n      it('validates correct data for GetCurrentWeather', () => {\n        const GetCurrentWeatherSchema = zodSchemas?.GetCurrentWeather as z.ZodTypeAny;\n        const validData = {\n          location: 'New York',\n          locations: [\n            { city: 'New York', state: 'NY', countryCode: 'US', time: '2023-12-04T14:00:00Z' },\n          ],\n        };\n        expect(() => GetCurrentWeatherSchema.parse(validData)).not.toThrow();\n      });\n\n      it('throws error for invalid data for GetCurrentWeather', () => {\n        const GetCurrentWeatherSchema = zodSchemas?.GetCurrentWeather as z.ZodTypeAny;\n        const invalidData = {\n          location: 123,\n          locations: [{ city: 'New York', state: 'NY', countryCode: 'US', time: 'invalid-time' }],\n        };\n        expect(() => GetCurrentWeatherSchema.parse(invalidData)).toThrow();\n      });\n    });\n\n    describe('whimsicalOpenapiSpec', () => {\n      const { zodSchemas } = openapiToFunction(whimsicalOpenapiSpec, true);\n\n      it('generates correct Zod schema for postRenderFlowchart', () => {\n        expect(zodSchemas).toBeDefined();\n        expect(zodSchemas?.postRenderFlowchart).toBeDefined();\n\n        const PostRenderFlowchartSchema = zodSchemas?.postRenderFlowchart;\n        expect(PostRenderFlowchartSchema).toBeInstanceOf(z.ZodObject);\n\n        if (!(PostRenderFlowchartSchema instanceof z.ZodObject)) {\n          return;\n        }\n\n        const shape = PostRenderFlowchartSchema.shape;\n        expect(shape.mermaid).toBeInstanceOf(z.ZodString);\n        expect(shape.title).toBeInstanceOf(z.ZodOptional);\n        expect((shape.title as z.ZodOptional<z.ZodString>)._def.innerType).toBeInstanceOf(\n          z.ZodString,\n        );\n      });\n\n      it('validates correct data for postRenderFlowchart', () => {\n        const PostRenderFlowchartSchema = zodSchemas?.postRenderFlowchart;\n        const validData = {\n          mermaid: 'graph TD; A-->B; B-->C; C-->D;',\n          title: 'Test Flowchart',\n        };\n        expect(() => PostRenderFlowchartSchema?.parse(validData)).not.toThrow();\n      });\n\n      it('throws error for invalid data for postRenderFlowchart', () => {\n        const PostRenderFlowchartSchema = zodSchemas?.postRenderFlowchart;\n        const invalidData = {\n          mermaid: 123,\n          title: 42,\n        };\n        expect(() => PostRenderFlowchartSchema?.parse(invalidData)).toThrow();\n      });\n    });\n\n    describe('scholarAIOpenapiSpec', () => {\n      const result = validateAndParseOpenAPISpec(scholarAIOpenapiSpec);\n      const spec = result.spec as OpenAPIV3.Document;\n      const { zodSchemas } = openapiToFunction(spec, true);\n\n      it('generates correct Zod schema for searchAbstracts', () => {\n        expect(zodSchemas).toBeDefined();\n        expect(zodSchemas?.searchAbstracts).toBeDefined();\n\n        const SearchAbstractsSchema = zodSchemas?.searchAbstracts;\n        expect(SearchAbstractsSchema).toBeInstanceOf(z.ZodObject);\n\n        if (!(SearchAbstractsSchema instanceof z.ZodObject)) {\n          return;\n        }\n\n        const shape = SearchAbstractsSchema.shape;\n        expect(shape.keywords).toBeInstanceOf(z.ZodString);\n        expect(shape.sort).toBeInstanceOf(z.ZodOptional);\n        expect(\n          (shape.sort as z.ZodOptional<z.ZodEnum<[string, ...string[]]>>)._def.innerType,\n        ).toBeInstanceOf(z.ZodEnum);\n        expect(shape.query).toBeInstanceOf(z.ZodString);\n        expect(shape.peer_reviewed_only).toBeInstanceOf(z.ZodOptional);\n        expect(shape.start_year).toBeInstanceOf(z.ZodOptional);\n        expect(shape.end_year).toBeInstanceOf(z.ZodOptional);\n        expect(shape.offset).toBeInstanceOf(z.ZodOptional);\n      });\n\n      it('validates correct data for searchAbstracts', () => {\n        const SearchAbstractsSchema = zodSchemas?.searchAbstracts;\n        const validData = {\n          keywords: 'machine learning',\n          sort: 'cited_by_count',\n          query: 'AI applications',\n          peer_reviewed_only: 'true',\n          start_year: '2020',\n          end_year: '2023',\n          offset: '0',\n        };\n        expect(() => SearchAbstractsSchema?.parse(validData)).not.toThrow();\n      });\n\n      it('throws error for invalid data for searchAbstracts', () => {\n        const SearchAbstractsSchema = zodSchemas?.searchAbstracts;\n        const invalidData = {\n          keywords: 123,\n          sort: 'invalid_sort',\n          query: 42,\n          peer_reviewed_only: 'maybe',\n          start_year: 2020,\n          end_year: 2023,\n          offset: 0,\n        };\n        expect(() => SearchAbstractsSchema?.parse(invalidData)).toThrow();\n      });\n\n      it('generates correct Zod schema for getFullText', () => {\n        expect(zodSchemas?.getFullText).toBeDefined();\n\n        const GetFullTextSchema = zodSchemas?.getFullText;\n        expect(GetFullTextSchema).toBeInstanceOf(z.ZodObject);\n\n        if (!(GetFullTextSchema instanceof z.ZodObject)) {\n          return;\n        }\n\n        const shape = GetFullTextSchema.shape;\n        expect(shape.pdf_url).toBeInstanceOf(z.ZodString);\n        expect(shape.chunk).toBeInstanceOf(z.ZodOptional);\n        expect((shape.chunk as z.ZodOptional<z.ZodNumber>)._def.innerType).toBeInstanceOf(\n          z.ZodNumber,\n        );\n      });\n\n      it('generates correct Zod schema for saveCitation', () => {\n        expect(zodSchemas?.saveCitation).toBeDefined();\n\n        const SaveCitationSchema = zodSchemas?.saveCitation;\n        expect(SaveCitationSchema).toBeInstanceOf(z.ZodObject);\n\n        if (!(SaveCitationSchema instanceof z.ZodObject)) {\n          return;\n        }\n\n        const shape = SaveCitationSchema.shape;\n        expect(shape.doi).toBeInstanceOf(z.ZodString);\n        expect(shape.zotero_user_id).toBeInstanceOf(z.ZodString);\n        expect(shape.zotero_api_key).toBeInstanceOf(z.ZodString);\n      });\n    });\n  });\n\n  describe('openapiToFunction zodSchemas for SWAPI', () => {\n    const result = validateAndParseOpenAPISpec(swapidev);\n    const spec = result.spec as OpenAPIV3.Document;\n    const { zodSchemas } = openapiToFunction(spec, true);\n\n    describe('getPeople schema', () => {\n      it('does not generate Zod schema for getPeople (no parameters)', () => {\n        expect(zodSchemas).toBeDefined();\n        expect(zodSchemas?.getPeople).toBeUndefined();\n      });\n\n      it('validates correct data for getPeople', () => {\n        const GetPeopleSchema = zodSchemas?.getPeople;\n        expect(GetPeopleSchema).toBeUndefined();\n      });\n\n      it('does not throw for invalid data for getPeople', () => {\n        const GetPeopleSchema = zodSchemas?.getPeople;\n        expect(GetPeopleSchema).toBeUndefined();\n      });\n    });\n\n    describe('getPersonById schema', () => {\n      it('generates correct Zod schema for getPersonById', () => {\n        expect(zodSchemas).toBeDefined();\n        expect(zodSchemas?.getPersonById).toBeDefined();\n\n        const GetPersonByIdSchema = zodSchemas?.getPersonById;\n        expect(GetPersonByIdSchema).toBeInstanceOf(z.ZodObject);\n\n        if (!(GetPersonByIdSchema instanceof z.ZodObject)) {\n          return;\n        }\n\n        const shape = GetPersonByIdSchema.shape;\n        expect(shape.id).toBeInstanceOf(z.ZodString);\n      });\n\n      it('validates correct data for getPersonById', () => {\n        const GetPersonByIdSchema = zodSchemas?.getPersonById;\n        const validData = { id: '1' };\n        expect(() => GetPersonByIdSchema?.parse(validData)).not.toThrow();\n      });\n\n      it('throws error for invalid data for getPersonById', () => {\n        const GetPersonByIdSchema = zodSchemas?.getPersonById;\n        const invalidData = { id: 1 }; // should be string\n        expect(() => GetPersonByIdSchema?.parse(invalidData)).toThrow();\n      });\n    });\n  });\n\n  describe('openapiToFunction parameter refs resolution', () => {\n    const weatherSpec = {\n      openapi: '3.0.0',\n      info: { title: 'Weather', version: '1.0.0' },\n      servers: [{ url: 'https://api.weather.gov' }],\n      paths: {\n        '/points/{point}': {\n          get: {\n            operationId: 'getPoint',\n            parameters: [{ $ref: '#/components/parameters/PathPoint' }],\n            responses: { '200': { description: 'ok' } },\n          },\n        },\n      },\n      components: {\n        parameters: {\n          PathPoint: {\n            name: 'point',\n            in: 'path',\n            required: true,\n            schema: { type: 'string', pattern: '^(-?\\\\d+(?:\\\\.\\\\d+)?),(-?\\\\d+(?:\\\\.\\\\d+)?)$' },\n          },\n        },\n      },\n    } satisfies OpenAPIV3.Document;\n\n    it('correctly resolves $ref for parameters', () => {\n      const { functionSignatures } = openapiToFunction(weatherSpec, true);\n      const func = functionSignatures.find((sig) => sig.name === 'getPoint');\n      expect(func).toBeDefined();\n      expect(func?.parameters.properties).toHaveProperty('point');\n      expect(func?.parameters.required).toContain('point');\n\n      const paramSchema = func?.parameters.properties['point'] as OpenAPIV3.SchemaObject;\n      expect(paramSchema.type).toEqual('string');\n      expect(paramSchema.pattern).toEqual('^(-?\\\\d+(?:\\\\.\\\\d+)?),(-?\\\\d+(?:\\\\.\\\\d+)?)$');\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/azure.spec.ts",
    "content": "import type { TAzureGroups } from '../src/config';\nimport { validateAzureGroups, mapModelToAzureConfig, mapGroupToAzureConfig } from '../src/azure';\n\ndescribe('validateAzureGroups', () => {\n  it('should validate a correct configuration', () => {\n    const configs = [\n      {\n        group: 'us-east',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-4-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n    ];\n    const { isValid, modelNames, modelGroupMap, groupMap } = validateAzureGroups(configs);\n    expect(isValid).toBe(true);\n    expect(modelNames).toEqual(['gpt-4-turbo']);\n\n    const { azureOptions, baseURL, headers } = mapModelToAzureConfig({\n      modelName: 'gpt-4-turbo',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions).toEqual({\n      azureOpenAIApiKey: 'prod-1234',\n      azureOpenAIApiInstanceName: 'prod-instance',\n      azureOpenAIApiDeploymentName: 'gpt-4-turbo-deployment',\n      azureOpenAIApiVersion: '2023-11-06',\n    });\n    expect(baseURL).toBe('https://prod.example.com');\n    expect(headers).toEqual({\n      'X-Custom-Header': 'value',\n    });\n  });\n\n  it('should return invalid for a configuration missing deploymentName at the model level where required', () => {\n    const configs = [\n      {\n        group: 'us-west',\n        apiKey: 'us-west-key-5678',\n        instanceName: 'us-west-instance',\n        models: {\n          'gpt-5': {\n            version: '2023-12-01', // Missing deploymentName\n          },\n        },\n      },\n    ];\n    const { isValid, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(errors.length).toBe(1);\n  });\n\n  it('should return invalid for a configuration with a boolean model where group lacks deploymentName and version', () => {\n    const configs = [\n      {\n        group: 'sweden-central',\n        apiKey: 'sweden-central-9012',\n        instanceName: 'sweden-central-instance',\n        models: {\n          'gpt-35-turbo': true, // The group lacks deploymentName and version\n        },\n      },\n    ];\n    const { isValid, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(errors.length).toBe(1);\n  });\n\n  it('should allow a boolean model when group has both deploymentName and version', () => {\n    const configs = [\n      {\n        group: 'japan-east',\n        apiKey: 'japan-east-3456',\n        instanceName: 'japan-east-instance',\n        deploymentName: 'default-deployment',\n        version: '2023-04-01',\n        models: {\n          'gpt-5-turbo': true,\n        },\n      },\n    ];\n    const { isValid, modelNames, modelGroupMap, groupMap } = validateAzureGroups(configs);\n    expect(isValid).toBe(true);\n    const modelGroup = modelGroupMap['gpt-5-turbo'];\n    expect(modelGroup).toBeDefined();\n    expect(modelGroup?.group).toBe('japan-east');\n    expect(groupMap[modelGroup?.group ?? '']).toBeDefined();\n    expect(modelNames).toContain('gpt-5-turbo');\n    const { azureOptions } = mapModelToAzureConfig({\n      modelName: 'gpt-5-turbo',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions).toEqual({\n      azureOpenAIApiKey: 'japan-east-3456',\n      azureOpenAIApiInstanceName: 'japan-east-instance',\n      azureOpenAIApiDeploymentName: 'default-deployment',\n      azureOpenAIApiVersion: '2023-04-01',\n    });\n  });\n\n  it('should validate correctly when optional fields are missing', () => {\n    const configs = [\n      {\n        group: 'canada-central',\n        apiKey: 'canada-key',\n        instanceName: 'canada-instance',\n        models: {\n          'gpt-6': {\n            deploymentName: 'gpt-6-deployment',\n            version: '2023-01-01',\n          },\n        },\n      },\n    ];\n    const { isValid, modelNames, modelGroupMap, groupMap } = validateAzureGroups(configs);\n    expect(isValid).toBe(true);\n    expect(modelNames).toEqual(['gpt-6']);\n    const { azureOptions } = mapModelToAzureConfig({ modelName: 'gpt-6', modelGroupMap, groupMap });\n    expect(azureOptions).toEqual({\n      azureOpenAIApiKey: 'canada-key',\n      azureOpenAIApiInstanceName: 'canada-instance',\n      azureOpenAIApiDeploymentName: 'gpt-6-deployment',\n      azureOpenAIApiVersion: '2023-01-01',\n    });\n  });\n\n  it('should return invalid for configurations with incorrect types', () => {\n    const configs = [\n      {\n        group: 123, // incorrect type\n        apiKey: 'key123',\n        instanceName: 'instance123',\n        models: {\n          'gpt-7': true,\n        },\n      },\n    ];\n    // @ts-expect-error This error is expected because the 'group' property should be a string.\n    const { isValid, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(errors.length).toBe(1);\n  });\n\n  it('should correctly handle a mix of valid and invalid model configurations', () => {\n    const configs = [\n      {\n        group: 'australia-southeast',\n        apiKey: 'australia-key',\n        instanceName: 'australia-instance',\n        models: {\n          'valid-model': {\n            deploymentName: 'valid-deployment',\n            version: '2023-02-02',\n          },\n          'invalid-model': true, // Invalid because the group lacks deploymentName and version\n        },\n      },\n    ];\n    const { isValid, modelNames, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(modelNames).toEqual(expect.arrayContaining(['valid-model', 'invalid-model']));\n    expect(errors.length).toBe(1);\n  });\n\n  it('should return invalid for configuration missing required fields at the group level', () => {\n    const configs = [\n      {\n        group: 'brazil-south',\n        apiKey: 'brazil-key',\n        // Missing instanceName\n        models: {\n          'gpt-8': {\n            deploymentName: 'gpt-8-deployment',\n            version: '2023-03-03',\n          },\n        },\n      },\n    ];\n    const { isValid, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(errors.length).toBe(1);\n  });\n});\n\ndescribe('validateAzureGroups for Serverless Configurations', () => {\n  const originalEnv = process.env;\n\n  beforeEach(() => {\n    jest.resetModules();\n    process.env = { ...originalEnv };\n  });\n\n  afterAll(() => {\n    process.env = originalEnv;\n  });\n\n  it('should validate a correct serverless configuration', () => {\n    const configs = [\n      {\n        group: 'serverless-group',\n        apiKey: '${SERVERLESS_API_KEY}',\n        baseURL: 'https://serverless.example.com/v1/completions',\n        serverless: true,\n        models: {\n          'model-serverless': true,\n        },\n      },\n    ];\n\n    const { isValid, errors } = validateAzureGroups(configs);\n\n    expect(isValid).toBe(true);\n    expect(errors.length).toBe(0);\n  });\n\n  it('should return invalid for a serverless configuration missing baseURL', () => {\n    const configs = [\n      {\n        group: 'serverless-group',\n        apiKey: '${SERVERLESS_API_KEY}',\n        serverless: true,\n        models: {\n          'model-serverless': true,\n        },\n      },\n    ];\n\n    const { isValid, errors } = validateAzureGroups(configs);\n    expect(isValid).toBe(false);\n    expect(errors).toEqual(\n      expect.arrayContaining([\n        expect.stringContaining(\n          'Group \"serverless-group\" is serverless but missing mandatory \"baseURL.\"',\n        ),\n      ]),\n    );\n  });\n\n  it('should throw an error when environment variable for apiKey is not set', () => {\n    process.env.SERVERLESS_API_KEY = '';\n\n    expect(() => {\n      mapModelToAzureConfig({\n        modelName: 'model-serverless',\n        modelGroupMap: {\n          'model-serverless': {\n            group: 'serverless-group',\n          },\n        },\n        groupMap: {\n          'serverless-group': {\n            apiKey: '${SERVERLESS_API_KEY}',\n            baseURL: 'https://serverless.example.com/v1/completions',\n            serverless: true,\n            models: { 'model-serverless': true },\n          },\n        },\n      });\n    }).toThrow('Azure configuration environment variable \"${SERVERLESS_API_KEY}\" was not found.');\n  });\n\n  it('should correctly extract environment variables and prepare serverless config', () => {\n    process.env.SERVERLESS_API_KEY = 'abc123';\n\n    const { azureOptions, baseURL, serverless } = mapModelToAzureConfig({\n      modelName: 'model-serverless',\n      modelGroupMap: {\n        'model-serverless': {\n          group: 'serverless-group',\n        },\n      },\n      groupMap: {\n        'serverless-group': {\n          apiKey: '${SERVERLESS_API_KEY}',\n          baseURL: 'https://serverless.example.com/v1/completions',\n          serverless: true,\n          models: { 'model-serverless': true },\n        },\n      },\n    });\n\n    expect(azureOptions.azureOpenAIApiKey).toEqual('abc123');\n    expect(baseURL).toEqual('https://serverless.example.com/v1/completions');\n    expect(serverless).toBe(true);\n  });\n\n  it('should ensure serverless flag triggers appropriate validations and mappings', () => {\n    const configs = [\n      {\n        group: 'serverless-group-2',\n        apiKey: '${NEW_SERVERLESS_API_KEY}',\n        baseURL: 'https://new-serverless.example.com/v1/completions',\n        serverless: true,\n        models: {\n          'new-model-serverless': true,\n        },\n      },\n    ];\n\n    process.env.NEW_SERVERLESS_API_KEY = 'def456';\n\n    const { isValid, errors, modelGroupMap, groupMap } = validateAzureGroups(configs);\n    expect(isValid).toBe(true);\n    expect(errors.length).toBe(0);\n\n    const { azureOptions, baseURL, serverless } = mapModelToAzureConfig({\n      modelName: 'new-model-serverless',\n      modelGroupMap,\n      groupMap,\n    });\n\n    expect(azureOptions).toEqual({\n      azureOpenAIApiKey: 'def456',\n      azureOpenAIApiVersion: '',\n    });\n    expect(baseURL).toEqual('https://new-serverless.example.com/v1/completions');\n    expect(serverless).toBe(true);\n  });\n});\n\ndescribe('validateAzureGroups with modelGroupMap and groupMap', () => {\n  const originalEnv = process.env;\n\n  beforeEach(() => {\n    jest.resetModules();\n    process.env = { ...originalEnv };\n  });\n\n  afterAll(() => {\n    process.env = originalEnv;\n  });\n\n  it('should provide a valid modelGroupMap and groupMap for a correct configuration', () => {\n    const validConfigs: TAzureGroups = [\n      {\n        group: 'us-east',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-4-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n      {\n        group: 'us-west',\n        apiKey: 'prod-12345',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-5-turbo': {\n            deploymentName: 'gpt-5-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n    ];\n    const { isValid, modelGroupMap, groupMap } = validateAzureGroups(validConfigs);\n    expect(isValid).toBe(true);\n    expect(modelGroupMap['gpt-4-turbo']).toBeDefined();\n    expect(modelGroupMap['gpt-4-turbo']?.group).toBe('us-east');\n    expect(groupMap['us-east']).toBeDefined();\n    expect(groupMap['us-east']?.apiKey).toBe('prod-1234');\n    expect(groupMap['us-east']?.models['gpt-4-turbo']).toBeDefined();\n    const { azureOptions, baseURL, headers } = mapModelToAzureConfig({\n      modelName: 'gpt-4-turbo',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions).toEqual({\n      azureOpenAIApiKey: 'prod-1234',\n      azureOpenAIApiInstanceName: 'prod-instance',\n      azureOpenAIApiDeploymentName: 'gpt-4-turbo-deployment',\n      azureOpenAIApiVersion: '2023-11-06',\n    });\n    expect(baseURL).toBe('https://prod.example.com');\n    expect(headers).toEqual({\n      'X-Custom-Header': 'value',\n    });\n  });\n\n  it('should not allow duplicate group names', () => {\n    const duplicateGroups: TAzureGroups = [\n      {\n        group: 'us-east',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-4-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n      {\n        group: 'us-east',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-5-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n    ];\n    const { isValid } = validateAzureGroups(duplicateGroups);\n    expect(isValid).toBe(false);\n  });\n  it('should not allow duplicate models across groups', () => {\n    const duplicateGroups: TAzureGroups = [\n      {\n        group: 'us-east',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-4-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n      {\n        group: 'us-west',\n        apiKey: 'prod-1234',\n        instanceName: 'prod-instance',\n        deploymentName: 'v1-deployment',\n        version: '2023-12-31',\n        baseURL: 'https://prod.example.com',\n        additionalHeaders: {\n          'X-Custom-Header': 'value',\n        },\n        models: {\n          'gpt-4-turbo': {\n            deploymentName: 'gpt-4-turbo-deployment',\n            version: '2023-11-06',\n          },\n        },\n      },\n    ];\n    const { isValid } = validateAzureGroups(duplicateGroups);\n    expect(isValid).toBe(false);\n  });\n\n  it('should throw an error if environment variables are set but not configured', () => {\n    const validConfigs: TAzureGroups = [\n      {\n        group: 'librechat-westus',\n        apiKey: '${WESTUS_API_KEY}',\n        instanceName: 'librechat-westus',\n        version: '2023-12-01-preview',\n        models: {\n          'gpt-4-vision-preview': {\n            deploymentName: 'gpt-4-vision-preview',\n            version: '2024-02-15-preview',\n          },\n          'gpt-3.5-turbo': {\n            deploymentName: 'gpt-35-turbo',\n          },\n          'gpt-3.5-turbo-1106': {\n            deploymentName: 'gpt-35-turbo-1106',\n          },\n          'gpt-4': {\n            deploymentName: 'gpt-4',\n          },\n          'gpt-4-1106-preview': {\n            deploymentName: 'gpt-4-1106-preview',\n          },\n        },\n      },\n      {\n        group: 'librechat-eastus',\n        apiKey: '${EASTUS_API_KEY}',\n        instanceName: 'librechat-eastus',\n        deploymentName: 'gpt-4-turbo',\n        version: '2024-02-15-preview',\n        models: {\n          'gpt-4-turbo': true,\n        },\n      },\n    ];\n    const { isValid, modelGroupMap, groupMap } = validateAzureGroups(validConfigs);\n    expect(isValid).toBe(true);\n    expect(() =>\n      mapModelToAzureConfig({ modelName: 'gpt-4-turbo', modelGroupMap, groupMap }),\n    ).toThrow();\n  });\n\n  it('should list all expected models in both modelGroupMap and groupMap', () => {\n    process.env.WESTUS_API_KEY = 'westus-key';\n    process.env.EASTUS_API_KEY = 'eastus-key';\n    process.env.AZURE_MISTRAL_API_KEY = 'mistral-key';\n    process.env.AZURE_LLAMA2_70B_API_KEY = 'llama-key';\n\n    const validConfigs: TAzureGroups = [\n      {\n        group: 'librechat-westus',\n        apiKey: '${WESTUS_API_KEY}',\n        instanceName: 'librechat-westus',\n        version: '2023-12-01-preview',\n        models: {\n          'gpt-4-vision-preview': {\n            deploymentName: 'gpt-4-vision-preview',\n            version: '2024-02-15-preview',\n          },\n          'gpt-3.5-turbo': {\n            deploymentName: 'gpt-35-turbo',\n          },\n          'gpt-3.5-turbo-1106': {\n            deploymentName: 'gpt-35-turbo-1106',\n          },\n          'gpt-4': {\n            deploymentName: 'gpt-4',\n          },\n          'gpt-4-1106-preview': {\n            deploymentName: 'gpt-4-1106-preview',\n          },\n        },\n      },\n      {\n        group: 'librechat-eastus',\n        apiKey: '${EASTUS_API_KEY}',\n        instanceName: 'librechat-eastus',\n        deploymentName: 'gpt-4-turbo',\n        version: '2024-02-15-preview',\n        models: {\n          'gpt-4-turbo': true,\n        },\n        baseURL: 'https://eastus.example.com',\n        additionalHeaders: {\n          'x-api-key': 'x-api-key-value',\n        },\n      },\n      {\n        group: 'mistral-inference',\n        apiKey: '${AZURE_MISTRAL_API_KEY}',\n        baseURL:\n          'https://Mistral-large-vnpet-serverless.region.inference.ai.azure.com/v1/chat/completions',\n        serverless: true,\n        models: {\n          'mistral-large': true,\n        },\n      },\n      {\n        group: 'llama-70b-chat',\n        apiKey: '${AZURE_LLAMA2_70B_API_KEY}',\n        baseURL:\n          'https://Llama-2-70b-chat-qmvyb-serverless.region.inference.ai.azure.com/v1/chat/completions',\n        serverless: true,\n        models: {\n          'llama-70b-chat': true,\n        },\n      },\n    ];\n    const { isValid, modelGroupMap, groupMap, modelNames } = validateAzureGroups(validConfigs);\n    expect(isValid).toBe(true);\n    expect(modelNames).toEqual([\n      'gpt-4-vision-preview',\n      'gpt-3.5-turbo',\n      'gpt-3.5-turbo-1106',\n      'gpt-4',\n      'gpt-4-1106-preview',\n      'gpt-4-turbo',\n      'mistral-large',\n      'llama-70b-chat',\n    ]);\n\n    // Check modelGroupMap\n    modelNames.forEach((modelName) => {\n      expect(modelGroupMap[modelName]).toBeDefined();\n    });\n\n    // Check groupMap for 'librechat-westus'\n    expect(groupMap).toHaveProperty('librechat-westus');\n    expect(groupMap['librechat-westus']).toEqual(\n      expect.objectContaining({\n        apiKey: '${WESTUS_API_KEY}',\n        instanceName: 'librechat-westus',\n        version: '2023-12-01-preview',\n        models: expect.objectContaining({\n          'gpt-4-vision-preview': expect.any(Object),\n          'gpt-3.5-turbo': expect.any(Object),\n          'gpt-3.5-turbo-1106': expect.any(Object),\n          'gpt-4': expect.any(Object),\n          'gpt-4-1106-preview': expect.any(Object),\n        }),\n      }),\n    );\n\n    // Check groupMap for 'librechat-eastus'\n    expect(groupMap).toHaveProperty('librechat-eastus');\n    expect(groupMap['librechat-eastus']).toEqual(\n      expect.objectContaining({\n        apiKey: '${EASTUS_API_KEY}',\n        instanceName: 'librechat-eastus',\n        deploymentName: 'gpt-4-turbo',\n        version: '2024-02-15-preview',\n        models: expect.objectContaining({\n          'gpt-4-turbo': true,\n        }),\n      }),\n    );\n\n    // Check groupMap for 'mistral-inference'\n    expect(groupMap).toHaveProperty('mistral-inference');\n    expect(groupMap['mistral-inference']).toEqual(\n      expect.objectContaining({\n        apiKey: '${AZURE_MISTRAL_API_KEY}',\n        baseURL:\n          'https://Mistral-large-vnpet-serverless.region.inference.ai.azure.com/v1/chat/completions',\n        serverless: true,\n        models: expect.objectContaining({\n          'mistral-large': true,\n        }),\n      }),\n    );\n\n    // Check groupMap for 'llama-70b-chat'\n    expect(groupMap).toHaveProperty('llama-70b-chat');\n    expect(groupMap['llama-70b-chat']).toEqual(\n      expect.objectContaining({\n        apiKey: '${AZURE_LLAMA2_70B_API_KEY}',\n        baseURL:\n          'https://Llama-2-70b-chat-qmvyb-serverless.region.inference.ai.azure.com/v1/chat/completions',\n        serverless: true,\n        models: expect.objectContaining({\n          'llama-70b-chat': true,\n        }),\n      }),\n    );\n\n    const { azureOptions: azureOptions1 } = mapModelToAzureConfig({\n      modelName: 'gpt-4-vision-preview',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions1).toEqual({\n      azureOpenAIApiKey: 'westus-key',\n      azureOpenAIApiInstanceName: 'librechat-westus',\n      azureOpenAIApiDeploymentName: 'gpt-4-vision-preview',\n      azureOpenAIApiVersion: '2024-02-15-preview',\n    });\n\n    const {\n      azureOptions: azureOptions2,\n      baseURL,\n      headers,\n    } = mapModelToAzureConfig({\n      modelName: 'gpt-4-turbo',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions2).toEqual({\n      azureOpenAIApiKey: 'eastus-key',\n      azureOpenAIApiInstanceName: 'librechat-eastus',\n      azureOpenAIApiDeploymentName: 'gpt-4-turbo',\n      azureOpenAIApiVersion: '2024-02-15-preview',\n    });\n    expect(baseURL).toBe('https://eastus.example.com');\n    expect(headers).toEqual({\n      'x-api-key': 'x-api-key-value',\n    });\n\n    const { azureOptions: azureOptions3 } = mapModelToAzureConfig({\n      modelName: 'gpt-4',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions3).toEqual({\n      azureOpenAIApiKey: 'westus-key',\n      azureOpenAIApiInstanceName: 'librechat-westus',\n      azureOpenAIApiDeploymentName: 'gpt-4',\n      azureOpenAIApiVersion: '2023-12-01-preview',\n    });\n\n    const { azureOptions: azureOptions4 } = mapModelToAzureConfig({\n      modelName: 'gpt-3.5-turbo',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions4).toEqual({\n      azureOpenAIApiKey: 'westus-key',\n      azureOpenAIApiInstanceName: 'librechat-westus',\n      azureOpenAIApiDeploymentName: 'gpt-35-turbo',\n      azureOpenAIApiVersion: '2023-12-01-preview',\n    });\n\n    const { azureOptions: azureOptions5 } = mapModelToAzureConfig({\n      modelName: 'gpt-3.5-turbo-1106',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions5).toEqual({\n      azureOpenAIApiKey: 'westus-key',\n      azureOpenAIApiInstanceName: 'librechat-westus',\n      azureOpenAIApiDeploymentName: 'gpt-35-turbo-1106',\n      azureOpenAIApiVersion: '2023-12-01-preview',\n    });\n\n    const { azureOptions: azureOptions6 } = mapModelToAzureConfig({\n      modelName: 'gpt-4-1106-preview',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(azureOptions6).toEqual({\n      azureOpenAIApiKey: 'westus-key',\n      azureOpenAIApiInstanceName: 'librechat-westus',\n      azureOpenAIApiDeploymentName: 'gpt-4-1106-preview',\n      azureOpenAIApiVersion: '2023-12-01-preview',\n    });\n\n    const {\n      azureOptions: azureOptions7,\n      serverless: serverlessMistral,\n      baseURL: mistralEndpoint,\n    } = mapModelToAzureConfig({\n      modelName: 'mistral-large',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(serverlessMistral).toBe(true);\n    expect(mistralEndpoint).toBe(\n      'https://Mistral-large-vnpet-serverless.region.inference.ai.azure.com/v1/chat/completions',\n    );\n    expect(azureOptions7).toEqual({\n      azureOpenAIApiKey: 'mistral-key',\n      azureOpenAIApiVersion: '',\n    });\n\n    const {\n      azureOptions: azureOptions8,\n      serverless: serverlessLlama,\n      baseURL: llamaEndpoint,\n    } = mapModelToAzureConfig({\n      modelName: 'llama-70b-chat',\n      modelGroupMap,\n      groupMap,\n    });\n    expect(serverlessLlama).toBe(true);\n    expect(llamaEndpoint).toBe(\n      'https://Llama-2-70b-chat-qmvyb-serverless.region.inference.ai.azure.com/v1/chat/completions',\n    );\n    expect(azureOptions8).toEqual({\n      azureOpenAIApiKey: 'llama-key',\n      azureOpenAIApiVersion: '',\n    });\n  });\n});\n\ndescribe('mapGroupToAzureConfig', () => {\n  // Test setup for a basic config with 2 groups\n  const groupMap = {\n    group1: {\n      apiKey: 'key-for-group1',\n      instanceName: 'instance-group1',\n      models: {\n        model1: { deploymentName: 'deployment1', version: '1.0' },\n      },\n    },\n    group2: {\n      apiKey: 'key-for-group2',\n      instanceName: 'instance-group2',\n      serverless: true,\n      baseURL: 'https://group2.example.com',\n      models: {\n        model2: true, // demonstrating a boolean style model configuration\n      },\n    },\n  };\n\n  it('should successfully map non-serverless group configuration', () => {\n    const groupName = 'group1';\n    const result = mapGroupToAzureConfig({ groupName, groupMap });\n    expect(result).toEqual({\n      azureOptions: expect.objectContaining({\n        azureOpenAIApiKey: 'key-for-group1',\n        azureOpenAIApiInstanceName: 'instance-group1',\n        azureOpenAIApiDeploymentName: expect.any(String),\n        azureOpenAIApiVersion: expect.any(String),\n      }),\n    });\n  });\n\n  it('should successfully map serverless group configuration', () => {\n    const groupName = 'group2';\n    const result = mapGroupToAzureConfig({ groupName, groupMap });\n    expect(result).toEqual({\n      azureOptions: expect.objectContaining({\n        azureOpenAIApiKey: 'key-for-group2',\n      }),\n      baseURL: 'https://group2.example.com',\n      serverless: true,\n    });\n  });\n\n  it('should throw error for nonexistent group name', () => {\n    const groupName = 'nonexistent-group';\n    expect(() => {\n      mapGroupToAzureConfig({ groupName, groupMap });\n    }).toThrow(`Group named \"${groupName}\" not found in configuration.`);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/filetypes.spec.ts",
    "content": "import {\n  fileConfig,\n  fullMimeTypesList,\n  codeInterpreterMimeTypesList,\n  retrievalMimeTypesList,\n  supportedMimeTypes,\n  codeInterpreterMimeTypes,\n  retrievalMimeTypes,\n  excelFileTypes,\n  excelMimeTypes,\n  fileConfigSchema,\n  mergeFileConfig,\n  mbToBytes,\n} from '../src/file-config';\n\ndescribe('MIME Type Regex Patterns', () => {\n  const unsupportedMimeTypes = ['text/x-unknown', 'application/unknown', 'image/bmp', 'audio/mp3'];\n\n  // Testing general supported MIME types\n  fullMimeTypesList.forEach((mimeType) => {\n    test(`\"${mimeType}\" should match one of the supported regex patterns in supportedMimeTypes`, () => {\n      const matches = supportedMimeTypes.some((regex) => regex.test(mimeType));\n      expect(matches).toBeTruthy();\n    });\n  });\n\n  // Testing unsupported MIME types\n  unsupportedMimeTypes.forEach((mimeType) => {\n    test(`\"${mimeType}\" should not match any of the supported regex patterns in supportedMimeTypes`, () => {\n      const matches = supportedMimeTypes.some((regex) => regex.test(mimeType));\n      expect(matches).toBeFalsy();\n    });\n  });\n\n  // Testing MIME types for Code Interpreter support\n  codeInterpreterMimeTypesList.forEach((mimeType) => {\n    test(`\"${mimeType}\" should be supported by codeInterpreterMimeTypes`, () => {\n      const matches = codeInterpreterMimeTypes.some((regex) => regex.test(mimeType));\n      expect(matches).toBeTruthy();\n    });\n  });\n\n  // Testing MIME types for Retrieval support\n  retrievalMimeTypesList.forEach((mimeType) => {\n    test(`\"${mimeType}\" should be supported by retrievalMimeTypes`, () => {\n      const matches = retrievalMimeTypes.some((regex) => regex.test(mimeType));\n      expect(matches).toBeTruthy();\n    });\n  });\n});\n\ndescribe('MIME Types Exclusive to Code Interpreter', () => {\n  const exclusiveCodeInterpreterMimeTypes = codeInterpreterMimeTypesList.filter(\n    (mimeType) => !retrievalMimeTypesList.includes(mimeType),\n  );\n\n  exclusiveCodeInterpreterMimeTypes.forEach((mimeType) => {\n    test(`\"${mimeType}\" should not be supported by retrievalMimeTypes`, () => {\n      const isSupportedByRetrieval = retrievalMimeTypes.some((regex) => regex.test(mimeType));\n      expect(isSupportedByRetrieval).toBeFalsy();\n    });\n  });\n});\n\ndescribe('Testing Excel MIME types', () => {\n  excelFileTypes.forEach((mimeType) => {\n    test(`\"${mimeType}\" should match one of the supported regex patterns in supportedMimeTypes`, () => {\n      const matches = supportedMimeTypes.some((regex) => regex.test(mimeType));\n      expect(matches).toBeTruthy();\n    });\n  });\n\n  test('Excel MIME types should match the regex pattern in excelMimeTypes', () => {\n    const matches = excelFileTypes.every((mimeType) => excelMimeTypes.test(mimeType));\n    expect(matches).toBeTruthy();\n  });\n});\n\ndescribe('Testing `fileConfig`', () => {\n  describe('checkType function', () => {\n    test('should return true for supported MIME types', () => {\n      const fileTypes = ['text/csv', 'application/json', 'application/pdf', 'image/jpeg'];\n      fileTypes.forEach((fileType) => {\n        const isSupported = fileConfig.checkType(fileType);\n        expect(isSupported).toBe(true);\n      });\n    });\n\n    test('should return false for unsupported MIME types', () => {\n      const fileTypes = ['text/mamba', 'application/exe', 'no-image', ''];\n      fileTypes.forEach((fileType) => {\n        const isSupported = fileConfig.checkType(fileType);\n        expect(isSupported).toBe(false);\n      });\n    });\n  });\n});\n\nconst dynamicConfigs = {\n  minimalUpdate: {\n    serverFileSizeLimit: 1024, // Increasing server file size limit\n  },\n  fullOverrideDefaultEndpoint: {\n    endpoints: {\n      default: {\n        fileLimit: 15,\n        fileSizeLimit: 30,\n        totalSizeLimit: 60,\n        supportedMimeTypes: ['^video/.*$'], // Changing to support video files\n      },\n    },\n  },\n  newEndpointAddition: {\n    endpoints: {\n      newEndpoint: {\n        fileLimit: 5,\n        fileSizeLimit: 10,\n        totalSizeLimit: 20,\n        supportedMimeTypes: ['^application/json$', '^application/xml$'],\n      },\n    },\n  },\n};\n\ndescribe('mergeFileConfig', () => {\n  test('merges minimal update correctly', () => {\n    const result = mergeFileConfig(dynamicConfigs.minimalUpdate);\n    expect(result.serverFileSizeLimit).toEqual(mbToBytes(1024));\n    const parsedResult = fileConfigSchema.safeParse(result);\n    expect(parsedResult.success).toBeTruthy();\n  });\n\n  test('overrides default endpoint with full new configuration', () => {\n    const result = mergeFileConfig(dynamicConfigs.fullOverrideDefaultEndpoint);\n    expect(result.endpoints.default.fileLimit).toEqual(15);\n    expect(result.endpoints.default.supportedMimeTypes).toEqual(\n      expect.arrayContaining([new RegExp('^video/.*$')]),\n    );\n    const parsedResult = fileConfigSchema.safeParse(result);\n    expect(parsedResult.success).toBeTruthy();\n  });\n\n  test('adds new endpoint configuration correctly', () => {\n    const result = mergeFileConfig(dynamicConfigs.newEndpointAddition);\n    expect(result.endpoints.newEndpoint).toBeDefined();\n    expect(result.endpoints.newEndpoint.fileLimit).toEqual(5);\n    expect(result.endpoints.newEndpoint.supportedMimeTypes).toEqual(\n      expect.arrayContaining([new RegExp('^application/json$')]),\n    );\n    const parsedResult = fileConfigSchema.safeParse(result);\n    expect(parsedResult.success).toBeTruthy();\n  });\n\n  test('disables an endpoint and sets numeric fields to 0 and empties supportedMimeTypes', () => {\n    const configWithDisabledEndpoint = {\n      endpoints: {\n        disabledEndpoint: {\n          disabled: true,\n          fileLimit: 15,\n          fileSizeLimit: 30,\n          totalSizeLimit: 60,\n          supportedMimeTypes: ['^video/.*$'],\n        },\n      },\n    };\n\n    const result = mergeFileConfig(configWithDisabledEndpoint);\n    expect(result.endpoints.disabledEndpoint).toBeDefined();\n    expect(result.endpoints.disabledEndpoint.disabled).toEqual(true);\n    expect(result.endpoints.disabledEndpoint.fileLimit).toEqual(0);\n    expect(result.endpoints.disabledEndpoint.fileSizeLimit).toEqual(0);\n    expect(result.endpoints.disabledEndpoint.totalSizeLimit).toEqual(0);\n    expect(result.endpoints.disabledEndpoint.supportedMimeTypes).toEqual([]);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/generate.spec.ts",
    "content": "/* eslint-disable jest/no-conditional-expect */\nimport { ZodError, z } from 'zod';\nimport { generateDynamicSchema, validateSettingDefinitions, OptionTypes } from '../src/generate';\nimport type { SettingsConfiguration } from '../src/generate';\n\ndescribe('generateDynamicSchema', () => {\n  it('should generate a schema for number settings with range', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testNumber',\n        description: 'A test number setting',\n        type: 'number',\n        default: 5,\n        range: { min: 1, max: 10, step: 1 },\n        component: 'slider',\n        optionType: 'conversation',\n        columnSpan: 2,\n        label: 'Test Number Slider',\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    const result = schema.safeParse({ testNumber: 6 });\n\n    expect(result.success).toBeTruthy();\n    expect(result['data']).toEqual({ testNumber: 6 });\n  });\n\n  it('should generate a schema for boolean settings', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testBoolean',\n        description: 'A test boolean setting',\n        type: 'boolean',\n        default: true,\n        component: 'switch',\n        optionType: 'model', // Only if relevant to your application's context\n        columnSpan: 1,\n        label: 'Test Boolean Switch',\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    const result = schema.safeParse({ testBoolean: false });\n\n    expect(result.success).toBeTruthy();\n    expect(result['data']).toEqual({ testBoolean: false });\n  });\n\n  it('should generate a schema for string settings', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testString',\n        description: 'A test string setting',\n        type: 'string',\n        default: 'default value',\n        component: 'input',\n        optionType: 'model', // Optional and only if relevant\n        columnSpan: 3,\n        label: 'Test String Input',\n        placeholder: 'Enter text here...',\n        minText: 0, // Optional\n        maxText: 100, // Optional\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    const result = schema.safeParse({ testString: 'custom value' });\n\n    expect(result.success).toBeTruthy();\n    expect(result['data']).toEqual({ testString: 'custom value' });\n  });\n\n  it('should generate a schema for enum settings', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testEnum',\n        description: 'A test enum setting',\n        type: 'enum',\n        default: 'option1',\n        options: ['option1', 'option2', 'option3'],\n        enumMappings: {\n          option1: 'First Option',\n          option2: 'Second Option',\n          option3: 'Third Option',\n        },\n        component: 'dropdown',\n        columnSpan: 2,\n        label: 'Test Enum Dropdown',\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    const result = schema.safeParse({ testEnum: 'option2' });\n\n    expect(result.success).toBeTruthy();\n    expect(result['data']).toEqual({ testEnum: 'option2' });\n  });\n\n  it('should fail for incorrect enum value', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testEnum',\n        description: 'A test enum setting',\n        type: 'enum',\n        default: 'option1',\n        options: ['option1', 'option2', 'option3'],\n        component: 'dropdown',\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    const result = schema.safeParse({ testEnum: 'option4' }); // This option does not exist\n\n    expect(result.success).toBeFalsy();\n  });\n\n  it('should generate a schema for array settings', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'testArray',\n        description: 'A test array setting',\n        type: 'array',\n        default: ['default', 'values'],\n        component: 'tags', // Assuming 'tags' imply an array of strings\n        optionType: OptionTypes.Custom,\n        columnSpan: 3,\n        label: 'Test Array Tags',\n        minTags: 1, // Minimum number of tags\n        maxTags: 5, // Maximum number of tags\n      },\n    ];\n\n    const schema = generateDynamicSchema(settings);\n    // Testing with right number of tags\n    let result = schema.safeParse({ testArray: ['value1', 'value2', 'value3'] });\n\n    expect(result.success).toBeTruthy();\n    expect(result?.['data']).toEqual({ testArray: ['value1', 'value2', 'value3'] });\n\n    // Testing with too few tags (should fail)\n    result = schema.safeParse({ testArray: [] }); // Assuming minTags is 1, empty array should fail\n    expect(result.success).toBeFalsy();\n    if (!result.success) {\n      // Additional check to ensure the failure is because of the minTags condition\n      const issues = result.error.issues.filter(\n        (issue) => issue.path.includes('testArray') && issue.code === 'too_small',\n      );\n      expect(issues.length).toBeGreaterThan(0); // Ensure there is at least one issue related to 'testArray' being too small\n    }\n\n    // Testing with too many tags (should fail)\n    result = schema.safeParse({\n      testArray: ['value1', 'value2', 'value3', 'value4', 'value5', 'value6'],\n    }); // Assuming maxTags is 5, this should fail\n    expect(result.success).toBeFalsy();\n    if (!result.success) {\n      // Additional check to ensure the failure is because of the maxTags condition\n      const issues = result.error.issues.filter(\n        (issue) => issue.path.includes('testArray') && issue.code === 'too_big',\n      );\n      expect(issues.length).toBeGreaterThan(0); // Ensure there is at least one issue related to 'testArray' being too big\n    }\n  });\n});\n\ndescribe('validateSettingDefinitions', () => {\n  test('should throw error for Conversation optionType', () => {\n    const validSettings: SettingsConfiguration = [\n      {\n        key: 'themeColor',\n        component: 'input',\n        type: 'string',\n        default: '#ffffff',\n        label: 'Theme Color',\n        columns: 2,\n        columnSpan: 1,\n        optionType: OptionTypes.Conversation,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(validSettings)).toThrow();\n  });\n\n  test('should throw error for Model optionType', () => {\n    const validSettings: SettingsConfiguration = [\n      {\n        key: 'themeColor',\n        component: 'input',\n        type: 'string',\n        default: '#ffffff',\n        label: 'Theme Color',\n        columns: 2,\n        columnSpan: 1,\n        optionType: OptionTypes.Model,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(validSettings)).toThrow();\n  });\n\n  test('should not throw error for valid settings', () => {\n    const validSettings: SettingsConfiguration = [\n      {\n        key: 'themeColor',\n        component: 'input',\n        type: 'string',\n        default: '#ffffff',\n        label: 'Theme Color',\n        columns: 2,\n        columnSpan: 1,\n        optionType: OptionTypes.Custom,\n      },\n      {\n        key: 'fontSize',\n        component: 'slider',\n        type: 'number',\n        range: { min: 8, max: 36 },\n        default: 14,\n        columnSpan: 2,\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(validSettings)).not.toThrow();\n  });\n\n  // Test for incorrectly configured columns\n  test('should throw error for invalid columns configuration', () => {\n    const invalidSettings: SettingsConfiguration = [\n      {\n        key: 'themeColor',\n        component: 'input',\n        type: 'string',\n        columns: 5,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(invalidSettings)).toThrow(ZodError);\n  });\n\n  test('should correctly handle columnSpan defaulting based on columns', () => {\n    const settingsWithColumnAdjustment: SettingsConfiguration = [\n      {\n        key: 'fontSize',\n        component: 'slider',\n        type: 'number',\n        columns: 4,\n        range: { min: 8, max: 14 },\n        default: 11,\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithColumnAdjustment)).not.toThrow();\n  });\n\n  // Test for label defaulting to key if not provided\n  test('label should default to key if not explicitly set', () => {\n    const settingsWithDefaultLabel: SettingsConfiguration = [\n      {\n        key: 'fontWeight',\n        component: 'dropdown',\n        type: 'string',\n        options: ['normal', 'bold'],\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithDefaultLabel)).not.toThrow();\n    expect(settingsWithDefaultLabel[0].label).toBe('fontWeight');\n  });\n\n  // Test for minText and maxText in input/textarea component\n  test('should throw error for negative minText or maxText', () => {\n    const settingsWithNegativeTextLimits: SettingsConfiguration = [\n      { key: 'biography', component: 'textarea', type: 'string', minText: -1 },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithNegativeTextLimits)).toThrow(ZodError);\n  });\n\n  // Validate optionType with tConversationSchema\n  test('should throw error for optionType \"conversation\" not matching schema', () => {\n    const settingsWithInvalidConversationOptionType: SettingsConfiguration = [\n      { key: 'userAge', component: 'input', type: 'number', optionType: 'conversation' },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithInvalidConversationOptionType)).toThrow(\n      ZodError,\n    );\n  });\n\n  // Test for columnSpan defaulting and label defaulting to key\n  test('columnSpan defaults based on columns and label defaults to key if not set', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'textSize',\n        type: 'number',\n        component: 'slider',\n        range: { min: 10, max: 20 },\n        columns: 4,\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    validateSettingDefinitions(settings); // Perform validation which also mutates settings with default values\n\n    expect(settings[0].columnSpan).toBe(2); // Expects columnSpan to default based on columns\n    expect(settings[0].label).toBe('textSize'); // Expects label to default to key\n  });\n\n  // Test for errors thrown due to invalid columns value\n  test('throws error if columns value is out of range', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'themeMode',\n        type: 'string',\n        component: 'dropdown',\n        options: ['dark', 'light'],\n        columns: 5,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Test range validation for slider component\n  test('slider component range validation', () => {\n    const settings: SettingsConfiguration = [\n      { key: 'volume', type: 'number', component: 'slider' }, // Missing range\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Test options validation for enum type in slider component\n  test('slider component with enum type requires at least 2 options', () => {\n    const settings: SettingsConfiguration = [\n      { key: 'color', type: 'enum', component: 'slider', options: ['red'] }, // Not enough options\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Test checkbox component options validation\n  test('checkbox component must have 1-2 options if options are provided', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'agreeToTerms',\n        type: 'boolean',\n        component: 'checkbox',\n        options: ['Yes', 'No', 'Maybe'],\n      }, // Too many options\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Test dropdown component options validation\n  test('dropdown component requires at least 2 options', () => {\n    const settings: SettingsConfiguration = [\n      { key: 'country', type: 'enum', component: 'dropdown', options: ['USA'] }, // Not enough options\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Validate minText and maxText constraints in input and textarea\n  test('validate minText and maxText constraints', () => {\n    const settings: SettingsConfiguration = [\n      { key: 'biography', type: 'string', component: 'textarea', minText: 10, maxText: 5 }, // Incorrect minText and maxText\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Validate optionType constraint with tConversationSchema\n  test('validate optionType constraint with tConversationSchema', () => {\n    const settings: SettingsConfiguration = [\n      { key: 'userAge', type: 'number', component: 'input', optionType: 'conversation' }, // No corresponding schema in tConversationSchema\n    ];\n\n    expect(() => validateSettingDefinitions(settings)).toThrow(ZodError);\n  });\n\n  // Validate correct handling of boolean settings with default values\n  test('correct handling of boolean settings with defaults', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'enableFeatureX',\n        type: 'boolean',\n        component: 'switch',\n        optionType: OptionTypes.Custom,\n      }, // Missing default, should default to false\n    ];\n\n    validateSettingDefinitions(settings); // This would populate default values where missing\n\n    expect(settings[0].default).toBe(false); // Expects default to be false for boolean without explicit default\n  });\n\n  // Validate that number slider without default uses middle of range\n  test('number slider without default uses middle of range', () => {\n    const settings: SettingsConfiguration = [\n      {\n        key: 'brightness',\n        type: 'number',\n        component: 'slider',\n        range: { min: 0, max: 100 },\n        optionType: OptionTypes.Custom,\n      }, // Missing default\n    ];\n\n    validateSettingDefinitions(settings); // This would populate default values where missing\n\n    expect(settings[0].default).toBe(50); // Expects default to be midpoint of range\n  });\n\n  // Test for validating minTags and maxTags constraints\n  test('should validate minTags and maxTags constraints', () => {\n    const settingsWithTagsConstraints: SettingsConfiguration = [\n      {\n        key: 'selectedTags',\n        component: 'tags',\n        type: 'array',\n        default: ['tag1'], // Only one tag by default\n        minTags: 2, // Requires at least 2 tags, which should cause validation to fail\n        maxTags: 4,\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithTagsConstraints)).toThrow(ZodError);\n  });\n\n  // Test for ensuring default values for tags are arrays\n  test('should ensure default values for tags are arrays', () => {\n    const settingsWithInvalidDefaultForTags: SettingsConfiguration = [\n      {\n        key: 'favoriteTags',\n        component: 'tags',\n        type: 'array',\n        default: 'notAnArray', // Incorrect default type\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsWithInvalidDefaultForTags)).toThrow(ZodError);\n  });\n\n  // Test for array settings without default values should not throw if constraints are satisfied\n  test('array settings without defaults should not throw if constraints are met', () => {\n    const settingsWithNoDefaultButValidTags: SettingsConfiguration = [\n      {\n        key: 'userTags',\n        component: 'tags',\n        type: 'array',\n        minTags: 1, // Requires at least 1 tag\n        maxTags: 5, // Allows up to 5 tags\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    // No default is set, but since the constraints are potentially met (depends on user input), this should not throw\n    expect(() => validateSettingDefinitions(settingsWithNoDefaultButValidTags)).not.toThrow();\n  });\n\n  // Test for ensuring maxTags is respected in default array values\n  test('should ensure maxTags is respected for default array values', () => {\n    const settingsExceedingMaxTags: SettingsConfiguration = [\n      {\n        key: 'interestTags',\n        component: 'tags',\n        type: 'array',\n        default: ['music', 'movies', 'books', 'travel', 'cooking', 'sports'], // 6 tags\n        maxTags: 5, // Exceeds the maxTags limit\n        optionType: OptionTypes.Custom,\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsExceedingMaxTags)).toThrow(ZodError);\n  });\n});\n\nconst settingsConfiguration: SettingsConfiguration = [\n  {\n    key: 'temperature',\n    description:\n      'Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.',\n    type: 'number',\n    default: 1,\n    range: {\n      min: 0,\n      max: 2,\n      step: 0.01,\n    },\n    component: 'slider',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'top_p',\n    description:\n      'An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We recommend altering this or temperature but not both.',\n    type: 'number',\n    default: 1,\n    range: {\n      min: 0,\n      max: 1,\n      step: 0.01,\n    },\n    component: 'slider',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'presence_penalty',\n    description:\n      'Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model\\'s likelihood to talk about new topics.',\n    type: 'number',\n    default: 0,\n    range: {\n      min: -2,\n      max: 2,\n      step: 0.01,\n    },\n    component: 'slider',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'frequency_penalty',\n    description:\n      'Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model\\'s likelihood to repeat the same line verbatim.',\n    type: 'number',\n    default: 0,\n    range: {\n      min: -2,\n      max: 2,\n      step: 0.01,\n    },\n    component: 'slider',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'resendFiles',\n    description:\n      'Resend all previously attached files. Note: this will increase token cost and you may experience errors with many attachments.',\n    type: 'boolean',\n    default: true,\n    component: 'switch',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'imageDetail',\n    description:\n      'The resolution for Vision requests. \"Low\" is cheaper and faster, \"High\" is more detailed and expensive, and \"Auto\" will automatically choose between the two based on the image resolution.',\n    type: 'enum',\n    default: 'auto',\n    options: ['low', 'high', 'auto'],\n    component: 'slider',\n    optionType: OptionTypes.Custom,\n  },\n  {\n    key: 'promptPrefix',\n    type: 'string',\n    default: '',\n    component: 'input',\n    optionType: OptionTypes.Custom,\n    placeholder: 'Set custom instructions to include in System Message. Default: none',\n  },\n  {\n    key: 'chatGptLabel',\n    type: 'string',\n    default: '',\n    component: 'input',\n    optionType: OptionTypes.Custom,\n    placeholder: 'Set a custom name for your AI',\n  },\n];\n\ndescribe('Settings Validation and Schema Generation', () => {\n  // Test 1: Validate settings definitions do not throw for valid configuration\n  test('validateSettingDefinitions does not throw for valid configuration', () => {\n    expect(() => validateSettingDefinitions(settingsConfiguration)).not.toThrow();\n  });\n\n  test('validateSettingDefinitions throws for invalid type in settings', () => {\n    const settingsWithInvalidType = [\n      ...settingsConfiguration,\n      {\n        key: 'newSetting',\n        description: 'A setting with an unsupported type',\n        type: 'unsupportedType', // Assuming 'unsupportedType' is not supported\n        component: 'input',\n      },\n    ];\n\n    expect(() =>\n      validateSettingDefinitions(settingsWithInvalidType as SettingsConfiguration),\n    ).toThrow();\n  });\n\n  test('validateSettingDefinitions throws for missing required fields', () => {\n    const settingsMissingRequiredField = [\n      ...settingsConfiguration,\n      {\n        key: 'incompleteSetting',\n        type: 'number',\n        // Missing 'component',\n      },\n    ];\n\n    expect(() =>\n      validateSettingDefinitions(settingsMissingRequiredField as SettingsConfiguration),\n    ).toThrow();\n  });\n\n  test('validateSettingDefinitions throws for default value out of range', () => {\n    const settingsOutOfRange = [\n      ...settingsConfiguration,\n      {\n        key: 'rangeTestSetting',\n        description: 'A setting with default value out of specified range',\n        type: 'number',\n        default: 5,\n        range: {\n          min: 0,\n          max: 1,\n        },\n        component: 'slider',\n      },\n    ];\n\n    expect(() => validateSettingDefinitions(settingsOutOfRange as SettingsConfiguration)).toThrow();\n  });\n\n  test('validateSettingDefinitions throws for enum setting with incorrect default', () => {\n    const settingsWithIncorrectEnumDefault = [\n      ...settingsConfiguration,\n      {\n        key: 'enumSetting',\n        description: 'Enum setting with a default not in options',\n        type: 'enum',\n        default: 'unlistedOption',\n        options: ['option1', 'option2'],\n        component: 'dropdown',\n      },\n    ];\n\n    expect(() =>\n      validateSettingDefinitions(settingsWithIncorrectEnumDefault as SettingsConfiguration),\n    ).toThrow();\n  });\n\n  // Test 2: Generate dynamic schema and validate correct input\n  test('generateDynamicSchema generates a schema that validates correct input', () => {\n    const schema = generateDynamicSchema(settingsConfiguration);\n    const validInput = {\n      temperature: 0.5,\n      top_p: 0.8,\n      presence_penalty: 1,\n      frequency_penalty: -1,\n      resendFiles: true,\n      imageDetail: 'high',\n      promptPrefix: 'Hello, AI.',\n      chatGptLabel: 'My Custom AI',\n    };\n\n    expect(schema.parse(validInput)).toEqual(validInput);\n  });\n\n  // Test 3: Generate dynamic schema and catch invalid input\n  test('generateDynamicSchema generates a schema that catches invalid input and provides detailed errors', async () => {\n    const schema = generateDynamicSchema(settingsConfiguration);\n    const invalidInput: z.infer<typeof schema> = {\n      temperature: 2.5, // Out of range\n      top_p: -0.5, // Out of range\n      presence_penalty: 3, // Out of range\n      frequency_penalty: -3, // Out of range\n      resendFiles: 'yes', // Wrong type\n      imageDetail: 'ultra', // Invalid option\n      promptPrefix: 123, // Wrong type\n      chatGptLabel: true, // Wrong type\n    };\n\n    const result = schema.safeParse(invalidInput);\n    expect(result.success).toBeFalsy();\n    if (!result.success) {\n      const errorPaths = result.error.issues.map((issue) => issue.path.join('.'));\n      expect(errorPaths).toContain('temperature');\n      expect(errorPaths).toContain('top_p');\n      expect(errorPaths).toContain('presence_penalty');\n      expect(errorPaths).toContain('frequency_penalty');\n      expect(errorPaths).toContain('resendFiles');\n      expect(errorPaths).toContain('imageDetail');\n      expect(errorPaths).toContain('promptPrefix');\n      expect(errorPaths).toContain('chatGptLabel');\n    }\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/mcp.spec.ts",
    "content": "import { StdioOptionsSchema } from '../src/mcp';\n\ndescribe('Environment Variable Extraction (MCP)', () => {\n  const originalEnv = process.env;\n\n  beforeEach(() => {\n    process.env = {\n      ...originalEnv,\n      TEST_API_KEY: 'test-api-key-value',\n      ANOTHER_SECRET: 'another-secret-value',\n    };\n  });\n\n  afterEach(() => {\n    process.env = originalEnv;\n  });\n\n  describe('StdioOptionsSchema', () => {\n    it('should transform environment variables in the env field', () => {\n      const options = {\n        command: 'node',\n        args: ['server.js'],\n        env: {\n          API_KEY: '${TEST_API_KEY}',\n          ANOTHER_KEY: '${ANOTHER_SECRET}',\n          PLAIN_VALUE: 'plain-value',\n          NON_EXISTENT: '${NON_EXISTENT_VAR}',\n        },\n      };\n\n      const result = StdioOptionsSchema.parse(options);\n\n      expect(result.env).toEqual({\n        API_KEY: 'test-api-key-value',\n        ANOTHER_KEY: 'another-secret-value',\n        PLAIN_VALUE: 'plain-value',\n        NON_EXISTENT: '${NON_EXISTENT_VAR}',\n      });\n    });\n\n    it('should handle undefined env field', () => {\n      const options = {\n        command: 'node',\n        args: ['server.js'],\n      };\n\n      const result = StdioOptionsSchema.parse(options);\n\n      expect(result.env).toBeUndefined();\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/openapiSpecs.ts",
    "content": "import { OpenAPIV3 } from 'openapi-types';\n\nexport type FlowchartSchema = {\n  mermaid: {\n    type: 'string';\n    description: 'Flowchart to be rendered, in Mermaid syntax';\n  };\n  title: {\n    type: 'string';\n    description: 'Title of the flowchart';\n  };\n};\n\nexport const getWeatherOpenapiSpec: OpenAPIV3.Document = {\n  openapi: '3.1.0',\n  info: {\n    title: 'Get weather data',\n    description: 'Retrieves current weather data for a location.',\n    version: 'v1.0.0',\n  },\n  servers: [\n    {\n      url: 'https://weather.example.com',\n    },\n  ],\n  paths: {\n    '/location': {\n      get: {\n        description: 'Get temperature for a specific location',\n        operationId: 'GetCurrentWeather',\n        parameters: [\n          {\n            name: 'location',\n            in: 'query',\n            description: 'The city and state to retrieve the weather for',\n            required: true,\n            schema: {\n              type: 'string',\n            },\n          },\n        ],\n        requestBody: {\n          required: true,\n          content: {\n            'application/json': {\n              schema: {\n                type: 'object',\n                properties: {\n                  locations: {\n                    type: 'array',\n                    items: {\n                      type: 'object',\n                      properties: {\n                        city: {\n                          type: 'string',\n                          example: 'San Francisco',\n                        },\n                        state: {\n                          type: 'string',\n                          example: 'CA',\n                        },\n                        countryCode: {\n                          type: 'string',\n                          description: 'ISO 3166-1 alpha-2 country code',\n                          example: 'US',\n                        },\n                        time: {\n                          type: 'string',\n                          description:\n                            'Optional time for which the weather is requested, in ISO 8601 format.',\n                          example: '2023-12-04T14:00:00Z',\n                        },\n                      },\n                      required: ['city', 'state', 'countryCode'],\n                      description:\n                        'Details of the location for which the weather data is requested.',\n                    },\n                    description: 'A list of locations to retrieve the weather for.',\n                  },\n                },\n              },\n            },\n          },\n        },\n        deprecated: false,\n        responses: {},\n      },\n    },\n  },\n  components: {\n    schemas: {},\n  },\n};\n\nexport const whimsicalOpenapiSpec: OpenAPIV3.Document = {\n  openapi: '3.0.0',\n  info: {\n    version: '1.0.0',\n    title: 'Diagram to Image API',\n    description: 'A simple API to generate flowchart, mindmap, or sequence diagram images.',\n  },\n  servers: [{ url: 'https://whimsical.com/api' }],\n  paths: {\n    '/ai.chatgpt.render-flowchart': {\n      post: {\n        operationId: 'postRenderFlowchart',\n        // 'x-openai-isConsequential': false,\n        summary: 'Renders a flowchart',\n        description:\n          'Accepts a string describing a flowchart and returns a URL to a rendered image',\n        requestBody: {\n          content: {\n            'application/json': {\n              schema: {\n                $ref: '#/components/schemas/FlowchartRequest',\n              },\n            },\n          },\n          required: true,\n        },\n        responses: {\n          '200': {\n            description: 'URL to the rendered image',\n            content: {\n              'application/json': {\n                schema: {\n                  $ref: '#/components/schemas/FlowchartResponse',\n                },\n              },\n            },\n          },\n        },\n      },\n    },\n  },\n  components: {\n    schemas: {\n      FlowchartRequest: {\n        type: 'object',\n        properties: {\n          mermaid: {\n            type: 'string',\n            description: 'Flowchart to be rendered, in Mermaid syntax',\n          },\n          title: {\n            type: 'string',\n            description: 'Title of the flowchart',\n          },\n        },\n        required: ['mermaid'],\n      },\n      FlowchartResponse: {\n        type: 'object',\n        properties: {\n          imageURL: {\n            type: 'string',\n            description: 'URL of the rendered image',\n          },\n        },\n      },\n    },\n  },\n};\n\nexport const scholarAIOpenapiSpec = `\nopenapi: 3.0.1\ninfo:\n  title: ScholarAI\n  description: Allows the user to search facts and findings from scientific articles\n  version: 'v1'\nservers:\n  - url: https://scholar-ai.net\npaths:\n  /api/abstracts:\n    get:\n      operationId: searchAbstracts\n      summary: Get relevant paper abstracts by keywords search\n      parameters:\n        - name: keywords\n          in: query\n          description: Keywords of inquiry which should appear in article. Must be in English.\n          required: true\n          schema:\n            type: string\n        - name: sort\n          in: query\n          description: The sort order for results. Valid values are cited_by_count or publication_date. Excluding this value does a relevance based search.\n          required: false\n          schema:\n            type: string\n            enum:\n              - cited_by_count\n              - publication_date\n        - name: query\n          in: query\n          description: The user query\n          required: true\n          schema:\n            type: string\n        - name: peer_reviewed_only\n          in: query\n          description: Whether to only return peer reviewed articles. Defaults to true, ChatGPT should cautiously suggest this value can be set to false\n          required: false\n          schema:\n            type: string\n        - name: start_year\n          in: query\n          description: The first year, inclusive, to include in the search range. Excluding this value will include all years.\n          required: false\n          schema:\n            type: string\n        - name: end_year\n          in: query\n          description: The last year, inclusive, to include in the search range. Excluding this value will include all years.\n          required: false\n          schema:\n            type: string\n        - name: offset\n          in: query\n          description: The offset of the first result to return. Defaults to 0.\n          required: false\n          schema:\n            type: string\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/searchAbstractsResponse'\n  /api/fulltext:\n    get:\n      operationId: getFullText\n      summary: Get full text of a paper by URL for PDF\n      parameters:\n        - name: pdf_url\n          in: query\n          description: URL for PDF\n          required: true\n          schema:\n            type: string\n        - name: chunk\n          in: query\n          description: chunk number to retrieve, defaults to 1\n          required: false\n          schema:\n            type: number\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/getFullTextResponse'\n  /api/save-citation:\n    get:\n      operationId: saveCitation\n      summary: Save citation to reference manager\n      parameters:\n        - name: doi\n          in: query\n          description: Digital Object Identifier (DOI) of article\n          required: true\n          schema:\n            type: string\n        - name: zotero_user_id\n          in: query\n          description: Zotero User ID\n          required: true\n          schema:\n            type: string\n        - name: zotero_api_key\n          in: query\n          description: Zotero API Key\n          required: true\n          schema:\n            type: string\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/saveCitationResponse'\ncomponents:\n  schemas:\n    searchAbstractsResponse:\n      type: object\n      properties:\n        next_offset:\n          type: number\n          description: The offset of the next page of results.\n        total_num_results:\n          type: number\n          description: The total number of results. \n        abstracts:\n          type: array\n          items:\n            type: object\n            properties:\n              title:\n                type: string\n              abstract:\n                type: string\n                description: Summary of the context, methods, results, and conclusions of the paper.\n              doi:\n                type: string\n                description: The DOI of the paper.\n              landing_page_url:\n                type: string\n                description: Link to the paper on its open-access host.\n              pdf_url:\n                type: string\n                description: Link to the paper PDF.\n              publicationDate:\n                type: string\n                description: The date the paper was published in YYYY-MM-DD format.\n              relevance:\n                type: number\n                description: The relevance of the paper to the search query. 1 is the most relevant.\n              creators:\n                type: array\n                items:\n                  type: string\n                  description: The name of the creator.\n              cited_by_count:\n                type: number\n                description: The number of citations of the article.\n          description: The list of relevant abstracts.\n    getFullTextResponse:\n      type: object\n      properties:\n        full_text:\n          type: string\n          description: The full text of the paper.\n        pdf_url:\n          type: string\n          description: The PDF URL of the paper.\n        chunk:\n          type: number\n          description: The chunk of the paper.\n        total_chunk_num:\n          type: number\n          description: The total chunks of the paper.\n    saveCitationResponse:\n      type: object\n      properties:\n        message:\n          type: string\n          description: Confirmation of successful save or error message.`;\n\nexport const swapidev = `\nopenapi: 3.0.3\ninfo:\n  title: Star Wars API\n  description: This is a simple API that provides information about the Star Wars universe.\n  version: 1.0.0\nservers:\n  - url: https://swapi.dev\n\npaths:\n  /api/people:\n    get:\n      summary: List all people\n      operationId: getPeople\n      tags:\n        - People\n      responses:\n        '200':\n          description: A list of people\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  count:\n                    type: integer\n                    example: 82\n                  next:\n                    type: string\n                    nullable: true\n                    example: https://swapi.dev/api/people/?page=2\n                  previous:\n                    type: string\n                    nullable: true\n                    example: null\n                  results:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Person'\n\n  /api/people/{id}:\n    get:\n      summary: Get a person by ID\n      operationId: getPersonById\n      tags:\n        - People\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: The ID of the person to retrieve\n          schema:\n            type: string\n      responses:\n        '200':\n          description: A single person\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Person'\n        '404':\n          description: Person not found\n\ncomponents:\n  schemas:\n    Person:\n      type: object\n      properties:\n        name:\n          type: string\n          example: Luke Skywalker\n        height:\n          type: string\n          example: \"172\"\n        mass:\n          type: string\n          example: \"77\"\n        hair_color:\n          type: string\n          example: blond\n        skin_color:\n          type: string\n          example: fair\n        eye_color:\n          type: string\n          example: blue\n        birth_year:\n          type: string\n          example: \"19BBY\"\n        gender:\n          type: string\n          example: male\n        homeworld:\n          type: string\n          example: https://swapi.dev/api/planets/1/\n        films:\n          type: array\n          items:\n            type: string\n            example: https://swapi.dev/api/films/1/\n        species:\n          type: array\n          items:\n            type: string\n            example: https://swapi.dev/api/species/1/\n        vehicles:\n          type: array\n          items:\n            type: string\n            example: https://swapi.dev/api/vehicles/14/\n        starships:\n          type: array\n          items:\n            type: string\n            example: https://swapi.dev/api/starships/12/\n        created:\n          type: string\n          format: date-time\n          example: 2014-12-09T13:50:51.644000Z\n        edited:\n          type: string\n          format: date-time\n          example: 2014-12-20T21:17:56.891000Z\n        url:\n          type: string\n          example: https://swapi.dev/api/people/1/`;\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/specs/utils.spec.ts",
    "content": "import { extractEnvVariable } from '../src/utils';\n\ndescribe('Environment Variable Extraction', () => {\n  const originalEnv = process.env;\n\n  beforeEach(() => {\n    process.env = {\n      ...originalEnv,\n      TEST_API_KEY: 'test-api-key-value',\n      ANOTHER_SECRET: 'another-secret-value',\n    };\n  });\n\n  afterEach(() => {\n    process.env = originalEnv;\n  });\n\n  describe('extractEnvVariable (original tests)', () => {\n    test('should return the value of the environment variable', () => {\n      process.env.TEST_VAR = 'test_value';\n      expect(extractEnvVariable('${TEST_VAR}')).toBe('test_value');\n    });\n\n    test('should return the original string if the envrionment variable is not defined correctly', () => {\n      process.env.TEST_VAR = 'test_value';\n      expect(extractEnvVariable('${ TEST_VAR }')).toBe('${ TEST_VAR }');\n    });\n\n    test('should return the original string if environment variable is not set', () => {\n      expect(extractEnvVariable('${NON_EXISTENT_VAR}')).toBe('${NON_EXISTENT_VAR}');\n    });\n\n    test('should return the original string if it does not contain an environment variable', () => {\n      expect(extractEnvVariable('some_string')).toBe('some_string');\n    });\n\n    test('should handle empty strings', () => {\n      expect(extractEnvVariable('')).toBe('');\n    });\n\n    test('should handle strings without variable format', () => {\n      expect(extractEnvVariable('no_var_here')).toBe('no_var_here');\n    });\n\n    /** No longer the expected behavior; keeping for reference */\n    test.skip('should not process multiple variable formats', () => {\n      process.env.FIRST_VAR = 'first';\n      process.env.SECOND_VAR = 'second';\n      expect(extractEnvVariable('${FIRST_VAR} and ${SECOND_VAR}')).toBe(\n        '${FIRST_VAR} and ${SECOND_VAR}',\n      );\n    });\n  });\n\n  describe('extractEnvVariable function', () => {\n    it('should extract environment variables from exact matches', () => {\n      expect(extractEnvVariable('${TEST_API_KEY}')).toBe('test-api-key-value');\n      expect(extractEnvVariable('${ANOTHER_SECRET}')).toBe('another-secret-value');\n    });\n\n    it('should extract environment variables from strings with prefixes', () => {\n      expect(extractEnvVariable('prefix-${TEST_API_KEY}')).toBe('prefix-test-api-key-value');\n    });\n\n    it('should extract environment variables from strings with suffixes', () => {\n      expect(extractEnvVariable('${TEST_API_KEY}-suffix')).toBe('test-api-key-value-suffix');\n    });\n\n    it('should extract environment variables from strings with both prefixes and suffixes', () => {\n      expect(extractEnvVariable('prefix-${TEST_API_KEY}-suffix')).toBe(\n        'prefix-test-api-key-value-suffix',\n      );\n    });\n\n    it('should not match invalid patterns', () => {\n      expect(extractEnvVariable('$TEST_API_KEY')).toBe('$TEST_API_KEY');\n      expect(extractEnvVariable('{TEST_API_KEY}')).toBe('{TEST_API_KEY}');\n      expect(extractEnvVariable('TEST_API_KEY')).toBe('TEST_API_KEY');\n    });\n  });\n\n  describe('extractEnvVariable', () => {\n    it('should extract environment variable values', () => {\n      expect(extractEnvVariable('${TEST_API_KEY}')).toBe('test-api-key-value');\n      expect(extractEnvVariable('${ANOTHER_SECRET}')).toBe('another-secret-value');\n    });\n\n    it('should return the original string if environment variable is not found', () => {\n      expect(extractEnvVariable('${NON_EXISTENT_VAR}')).toBe('${NON_EXISTENT_VAR}');\n    });\n\n    it('should return the original string if no environment variable pattern is found', () => {\n      expect(extractEnvVariable('plain-string')).toBe('plain-string');\n    });\n  });\n\n  describe('extractEnvVariable space trimming', () => {\n    beforeEach(() => {\n      process.env.HELLO = 'world';\n      process.env.USER = 'testuser';\n    });\n\n    it('should extract the value when string contains only an environment variable with surrounding whitespace', () => {\n      expect(extractEnvVariable('        ${HELLO}        ')).toBe('world');\n      expect(extractEnvVariable('  ${HELLO}  ')).toBe('world');\n      expect(extractEnvVariable('\\t${HELLO}\\n')).toBe('world');\n    });\n\n    it('should preserve content when variable is part of a larger string', () => {\n      expect(extractEnvVariable('Hello ${USER}!')).toBe('Hello testuser!');\n      expect(extractEnvVariable('  Hello ${USER}!  ')).toBe('Hello testuser!');\n    });\n\n    it('should not handle multiple variables', () => {\n      expect(extractEnvVariable('${HELLO} ${USER}')).toBe('${HELLO} ${USER}');\n      expect(extractEnvVariable('  ${HELLO}   ${USER}  ')).toBe('${HELLO}   ${USER}');\n    });\n\n    it('should handle undefined variables', () => {\n      expect(extractEnvVariable('        ${UNDEFINED_VAR}        ')).toBe('${UNDEFINED_VAR}');\n    });\n\n    it('should handle mixed content correctly', () => {\n      expect(extractEnvVariable('Welcome, ${USER}!\\nYour message: ${HELLO}')).toBe(\n        'Welcome, testuser!\\nYour message: world',\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/actions.ts",
    "content": "import { z } from 'zod';\nimport _axios from 'axios';\nimport { URL } from 'url';\nimport crypto from 'crypto';\nimport { load } from 'js-yaml';\nimport type {\n  FunctionTool,\n  Schema,\n  Reference,\n  ActionMetadata,\n  ActionMetadataRuntime,\n} from './types/assistants';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport { Tools, AuthTypeEnum, AuthorizationTypeEnum } from './types/assistants';\n\nexport type ParametersSchema = {\n  type: string;\n  properties: Record<string, Reference | Schema>;\n  required: string[];\n  additionalProperties?: boolean;\n};\n\nexport type OpenAPISchema = OpenAPIV3.SchemaObject &\n  ParametersSchema & {\n    items?: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject;\n  };\n\nexport type ApiKeyCredentials = {\n  api_key: string;\n  custom_auth_header?: string;\n  authorization_type?: AuthorizationTypeEnum;\n};\n\nexport type OAuthCredentials = {\n  tokenUrl: string;\n  clientId: string;\n  clientSecret: string;\n  scope: string;\n};\n\nexport type Credentials = ApiKeyCredentials | OAuthCredentials;\n\ntype MediaTypeObject =\n  | undefined\n  | {\n    [media: string]: OpenAPIV3.MediaTypeObject | undefined;\n  };\n\ntype RequestBodyObject = Omit<OpenAPIV3.RequestBodyObject, 'content'> & {\n  content: MediaTypeObject;\n};\n\nexport function sha1(input: string) {\n  return crypto.createHash('sha1').update(input).digest('hex');\n}\n\nexport function createURL(domain: string, path: string) {\n  const cleanDomain = domain.replace(/\\/$/, '');\n  const cleanPath = path.replace(/^\\//, '');\n  const fullURL = `${cleanDomain}/${cleanPath}`;\n  return new URL(fullURL).toString();\n}\n\nconst schemaTypeHandlers: Record<string, (schema: OpenAPISchema) => z.ZodTypeAny> = {\n  string: (schema) => {\n    if (schema.enum) {\n      return z.enum(schema.enum as [string, ...string[]]);\n    }\n\n    let stringSchema = z.string();\n    if (schema.minLength !== undefined) {\n      stringSchema = stringSchema.min(schema.minLength);\n    }\n    if (schema.maxLength !== undefined) {\n      stringSchema = stringSchema.max(schema.maxLength);\n    }\n    return stringSchema;\n  },\n  number: (schema) => {\n    let numberSchema = z.number();\n    if (schema.minimum !== undefined) {\n      numberSchema = numberSchema.min(schema.minimum);\n    }\n    if (schema.maximum !== undefined) {\n      numberSchema = numberSchema.max(schema.maximum);\n    }\n    return numberSchema;\n  },\n  integer: (schema) => (schemaTypeHandlers.number(schema) as z.ZodNumber).int(),\n  boolean: () => z.boolean(),\n  array: (schema) => {\n    if (schema.items) {\n      const zodSchema = openAPISchemaToZod(schema.items as OpenAPISchema);\n      if (zodSchema) {\n        return z.array(zodSchema);\n      }\n\n      return z.array(z.unknown());\n    }\n    return z.array(z.unknown());\n  },\n  object: (schema) => {\n    const shape: { [key: string]: z.ZodTypeAny } = {};\n    if (schema.properties) {\n      Object.entries(schema.properties).forEach(([key, value]) => {\n        const zodSchema = openAPISchemaToZod(value as OpenAPISchema);\n        shape[key] = zodSchema || z.unknown();\n        if (schema.required && schema.required.includes(key)) {\n          shape[key] = shape[key].describe(value.description || '');\n        } else {\n          shape[key] = shape[key].optional().describe(value.description || '');\n        }\n      });\n    }\n    return z.object(shape);\n  },\n};\n\nfunction openAPISchemaToZod(schema: OpenAPISchema): z.ZodTypeAny | undefined {\n  if (schema.type === 'object' && Object.keys(schema.properties || {}).length === 0) {\n    return undefined;\n  }\n\n  const handler = schemaTypeHandlers[schema.type as string] || (() => z.unknown());\n  return handler(schema);\n}\n\n/**\n * Class representing a function signature.\n */\nexport class FunctionSignature {\n  name: string;\n  description: string;\n  parameters: ParametersSchema;\n  strict: boolean;\n\n  constructor(name: string, description: string, parameters: ParametersSchema, strict?: boolean) {\n    this.name = name;\n    this.description = description;\n    this.parameters = parameters;\n    this.strict = strict ?? false;\n  }\n\n  toObjectTool(): FunctionTool {\n    const parameters = {\n      ...this.parameters,\n      additionalProperties: this.strict ? false : undefined,\n    };\n\n    return {\n      type: Tools.function,\n      function: {\n        name: this.name,\n        description: this.description,\n        parameters,\n        ...(this.strict ? { strict: this.strict } : {}),\n      },\n    };\n  }\n}\n\nclass RequestConfig {\n  constructor(\n    readonly domain: string,\n    readonly basePath: string,\n    readonly method: string,\n    readonly operation: string,\n    readonly isConsequential: boolean,\n    readonly contentType: string,\n  ) { }\n}\n\nclass RequestExecutor {\n  path: string;\n  params?: object;\n  private operationHash?: string;\n  private authHeaders: Record<string, string> = {};\n  private authToken?: string;\n\n  constructor(private config: RequestConfig) {\n    this.path = config.basePath;\n  }\n\n  setParams(params: object) {\n    this.operationHash = sha1(JSON.stringify(params));\n    this.params = Object.assign({}, params);\n\n    for (const [key, value] of Object.entries(params)) {\n      const paramPattern = `{${key}}`;\n      if (this.path.includes(paramPattern)) {\n        this.path = this.path.replace(paramPattern, encodeURIComponent(value as string));\n        delete (this.params as Record<string, unknown>)[key];\n      }\n    }\n    return this;\n  }\n\n  async setAuth(metadata: ActionMetadataRuntime) {\n    if (!metadata.auth) {\n      return this;\n    }\n\n    const {\n      type,\n      /* API Key */\n      authorization_type,\n      custom_auth_header,\n      /* OAuth */\n      authorization_url,\n      client_url,\n      scope,\n      token_exchange_method,\n    } = metadata.auth;\n\n    const {\n      /* API Key */\n      api_key,\n      /* OAuth */\n      oauth_client_id,\n      oauth_client_secret,\n      oauth_token_expires_at,\n      oauth_access_token = '',\n    } = metadata;\n\n    const isApiKey = api_key != null && api_key.length > 0 && type === AuthTypeEnum.ServiceHttp;\n    const isOAuth = !!(\n      oauth_client_id != null &&\n      oauth_client_id &&\n      oauth_client_secret != null &&\n      oauth_client_secret &&\n      type === AuthTypeEnum.OAuth &&\n      authorization_url != null &&\n      authorization_url &&\n      client_url != null &&\n      client_url &&\n      scope != null &&\n      scope &&\n      token_exchange_method\n    );\n\n    if (isApiKey && authorization_type === AuthorizationTypeEnum.Basic) {\n      const basicToken = Buffer.from(api_key).toString('base64');\n      this.authHeaders['Authorization'] = `Basic ${basicToken}`;\n    } else if (isApiKey && authorization_type === AuthorizationTypeEnum.Bearer) {\n      // this.authHeaders['Authorization'] = `Bearer ${api_key}`;\n    } else if (\n      isApiKey &&\n      authorization_type === AuthorizationTypeEnum.Custom &&\n      custom_auth_header != null &&\n      custom_auth_header\n    ) {\n      this.authHeaders[custom_auth_header] = api_key;\n    } else if (isOAuth) {\n      // TODO: maybe doing it in a different way later on. but we want that the user needs to folllow the oauth flow.\n      // If we do not have a valid token, bail or ask user to sign in\n      const now = new Date();\n\n      // 1. Check if token is set\n      if (!oauth_access_token) {\n        throw new Error('No access token found. Please log in first.');\n      }\n\n      // 2. Check if token is expired\n      if (oauth_token_expires_at && now >= new Date(oauth_token_expires_at)) {\n        // Optionally check refresh_token logic, or just prompt user to re-login\n        throw new Error('Access token is expired. Please re-login.');\n      }\n\n      // If valid, use it\n      this.authToken = oauth_access_token;\n      // this.authHeaders['Authorization'] = `Bearer ${this.authToken}`;\n    }\n    return this;\n  }\n\n  async execute() {\n    const url = createURL(this.config.domain, this.path);\n    const headers = {\n      ...this.authHeaders,\n      'Content-Type': this.config.contentType,\n    };\n\n    const method = this.config.method.toLowerCase();\n    const axios = _axios.create({\n      baseURL: import.meta.env.BASE_URL\n    });\n    if (method === 'get') {\n      return axios.get(url, { headers, params: this.params });\n    } else if (method === 'post') {\n      return axios.post(url, this.params, { headers });\n    } else if (method === 'put') {\n      return axios.put(url, this.params, { headers });\n    } else if (method === 'delete') {\n      return axios.delete(url, { headers, data: this.params });\n    } else if (method === 'patch') {\n      return axios.patch(url, this.params, { headers });\n    } else {\n      throw new Error(`Unsupported HTTP method: ${method}`);\n    }\n  }\n\n  getConfig() {\n    return this.config;\n  }\n}\n\nexport class ActionRequest {\n  private config: RequestConfig;\n\n  constructor(\n    domain: string,\n    path: string,\n    method: string,\n    operation: string,\n    isConsequential: boolean,\n    contentType: string,\n  ) {\n    this.config = new RequestConfig(domain, path, method, operation, isConsequential, contentType);\n  }\n\n  // Add getters to maintain backward compatibility\n  get domain() {\n    return this.config.domain;\n  }\n  get path() {\n    return this.config.basePath;\n  }\n  get method() {\n    return this.config.method;\n  }\n  get operation() {\n    return this.config.operation;\n  }\n  get isConsequential() {\n    return this.config.isConsequential;\n  }\n  get contentType() {\n    return this.config.contentType;\n  }\n\n  createExecutor() {\n    return new RequestExecutor(this.config);\n  }\n\n  // Maintain backward compatibility by delegating to a new executor\n  setParams(params: object) {\n    const executor = this.createExecutor();\n    executor.setParams(params);\n    return executor;\n  }\n\n  async setAuth(metadata: ActionMetadata) {\n    const executor = this.createExecutor();\n    return executor.setAuth(metadata);\n  }\n\n  async execute() {\n    const executor = this.createExecutor();\n    return executor.execute();\n  }\n}\n\nexport function resolveRef<\n  T extends\n  | OpenAPIV3.ReferenceObject\n  | OpenAPIV3.SchemaObject\n  | OpenAPIV3.ParameterObject\n  | OpenAPIV3.RequestBodyObject,\n>(obj: T, components?: OpenAPIV3.ComponentsObject): Exclude<T, OpenAPIV3.ReferenceObject> {\n  if ('$ref' in obj && components) {\n    const refPath = obj.$ref.replace(/^#\\/components\\//, '').split('/');\n\n    let resolved: unknown = components as Record<string, unknown>;\n    for (const segment of refPath) {\n      if (typeof resolved === 'object' && resolved !== null && segment in resolved) {\n        resolved = (resolved as Record<string, unknown>)[segment];\n      } else {\n        throw new Error(`Could not resolve reference: ${obj.$ref}`);\n      }\n    }\n\n    return resolveRef(resolved as typeof obj, components) as Exclude<T, OpenAPIV3.ReferenceObject>;\n  }\n\n  return obj as Exclude<T, OpenAPIV3.ReferenceObject>;\n}\n\nfunction sanitizeOperationId(input: string) {\n  return input.replace(/[^a-zA-Z0-9_-]/g, '');\n}\n\n/**\n * Converts an OpenAPI spec to function signatures and request builders.\n */\nexport function openapiToFunction(\n  openapiSpec: OpenAPIV3.Document,\n  generateZodSchemas = false,\n): {\n  functionSignatures: FunctionSignature[];\n  requestBuilders: Record<string, ActionRequest>;\n  zodSchemas?: Record<string, z.ZodTypeAny>;\n} {\n  const functionSignatures: FunctionSignature[] = [];\n  const requestBuilders: Record<string, ActionRequest> = {};\n  const zodSchemas: Record<string, z.ZodTypeAny> = {};\n  const baseUrl = openapiSpec.servers?.[0]?.url ?? '';\n\n  // Iterate over each path and method in the OpenAPI spec\n  for (const [path, methods] of Object.entries(openapiSpec.paths)) {\n    for (const [method, operation] of Object.entries(methods as OpenAPIV3.PathsObject)) {\n      const operationObj = operation as OpenAPIV3.OperationObject & {\n        'x-openai-isConsequential'?: boolean;\n      } & {\n        'x-strict'?: boolean;\n      };\n\n      // Operation ID is used as the function name\n      const defaultOperationId = `${method}_${path}`;\n      const operationId = operationObj.operationId || sanitizeOperationId(defaultOperationId);\n      const description = operationObj.summary || operationObj.description || '';\n      const isStrict = operationObj['x-strict'] ?? false;\n\n      const parametersSchema: OpenAPISchema = {\n        type: 'object',\n        properties: {},\n        required: [],\n      };\n\n      if (operationObj.parameters) {\n        for (const param of operationObj.parameters ?? []) {\n          const resolvedParam = resolveRef(\n            param,\n            openapiSpec.components,\n          ) as OpenAPIV3.ParameterObject;\n\n          const paramName = resolvedParam.name;\n          if (!paramName || !resolvedParam.schema) {\n            continue;\n          }\n\n          const paramSchema = resolveRef(\n            resolvedParam.schema,\n            openapiSpec.components,\n          ) as OpenAPIV3.SchemaObject;\n\n          parametersSchema.properties[paramName] = paramSchema;\n          if (resolvedParam.required) {\n            parametersSchema.required.push(paramName);\n          }\n        }\n      }\n\n      if (operationObj.requestBody) {\n        const requestBody = operationObj.requestBody as RequestBodyObject;\n        const content = requestBody.content;\n        const contentType = Object.keys(content ?? {})[0];\n        const schema = content?.[contentType]?.schema;\n        const resolvedSchema = resolveRef(\n          schema as OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject,\n          openapiSpec.components,\n        );\n        parametersSchema.properties = {\n          ...parametersSchema.properties,\n          ...resolvedSchema.properties,\n        };\n        if (resolvedSchema.required) {\n          parametersSchema.required.push(...resolvedSchema.required);\n        }\n      }\n\n      const functionSignature = new FunctionSignature(\n        operationId,\n        description,\n        parametersSchema,\n        isStrict,\n      );\n      functionSignatures.push(functionSignature);\n\n      const actionRequest = new ActionRequest(\n        baseUrl,\n        path,\n        method,\n        operationId,\n        !!(operationObj['x-openai-isConsequential'] ?? false),\n        operationObj.requestBody ? 'application/json' : '',\n      );\n\n      requestBuilders[operationId] = actionRequest;\n\n      if (generateZodSchemas && Object.keys(parametersSchema.properties).length > 0) {\n        const schema = openAPISchemaToZod(parametersSchema);\n        if (schema) {\n          zodSchemas[operationId] = schema;\n        }\n      }\n    }\n  }\n\n  return { functionSignatures, requestBuilders, zodSchemas };\n}\n\nexport type ValidationResult = {\n  status: boolean;\n  message: string;\n  spec?: OpenAPIV3.Document;\n};\n\n/**\n * Validates and parses an OpenAPI spec.\n */\nexport function validateAndParseOpenAPISpec(specString: string): ValidationResult {\n  try {\n    let parsedSpec;\n    try {\n      parsedSpec = JSON.parse(specString);\n    } catch {\n      parsedSpec = load(specString);\n    }\n\n    // Check for servers\n    if (\n      !parsedSpec.servers ||\n      !Array.isArray(parsedSpec.servers) ||\n      parsedSpec.servers.length === 0\n    ) {\n      return { status: false, message: 'Could not find a valid URL in `servers`' };\n    }\n\n    if (!parsedSpec.servers[0].url) {\n      return { status: false, message: 'Could not find a valid URL in `servers`' };\n    }\n\n    // Check for paths\n    const paths = parsedSpec.paths;\n    if (!paths || typeof paths !== 'object' || Object.keys(paths).length === 0) {\n      return { status: false, message: 'No paths found in the OpenAPI spec.' };\n    }\n\n    const components = parsedSpec.components?.schemas || {};\n    const messages = [];\n\n    for (const [path, methods] of Object.entries(paths)) {\n      for (const [httpMethod, operation] of Object.entries(methods as OpenAPIV3.PathItemObject)) {\n        // Ensure operation is a valid operation object\n        const { responses } = operation as OpenAPIV3.OperationObject | { responses: undefined };\n        if (typeof operation === 'object' && responses) {\n          for (const [statusCode, response] of Object.entries(responses)) {\n            const content = (response as OpenAPIV3.ResponseObject).content as MediaTypeObject;\n            if (content && content['application/json'] && content['application/json'].schema) {\n              const schema = content['application/json'].schema;\n              if ('$ref' in schema && typeof schema.$ref === 'string') {\n                const refName = schema.$ref.split('/').pop();\n                if (refName && !components[refName]) {\n                  messages.push(\n                    `In context=('paths', '${path}', '${httpMethod}', '${statusCode}', 'response', 'content', 'application/json', 'schema'), reference to unknown component ${refName}; using empty schema`,\n                  );\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return {\n      status: true,\n      message: messages.join('\\n') || 'OpenAPI spec is valid.',\n      spec: parsedSpec,\n    };\n  } catch (error) {\n    console.error(error);\n    return { status: false, message: 'Error parsing OpenAPI spec.' };\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/api-endpoints.ts",
    "content": "import type { AssistantsEndpoint } from './schemas';\n\nexport const health = () => '/health';\nexport const user = () => '/api/v1/user/info';\n\nexport const balance = () => '/api/balance';\n\nexport const userPlugins = () => '/api/user/plugins';\n\nexport const deleteUser = () => '/api/user/delete';\n\nexport const messages = (conversationId: string, messageId?: string) =>\n  `/api/v1/workstation/messages/${conversationId}${messageId != null && messageId ? `/${messageId}` : ''}`;\n\nconst shareRoot = '/api/share';\nexport const shareMessages = (shareId: string) => `${shareRoot}/${shareId}`;\nexport const getSharedLink = (conversationId: string) => `${shareRoot}/link/${conversationId}`;\nexport const getSharedLinks = (\n  pageSize: number,\n  isPublic: boolean,\n  sortBy: 'title' | 'createdAt',\n  sortDirection: 'asc' | 'desc',\n  search?: string,\n  cursor?: string,\n) =>\n  `${shareRoot}?pageSize=${pageSize}&isPublic=${isPublic}&sortBy=${sortBy}&sortDirection=${sortDirection}${search ? `&search=${search}` : ''\n  }${cursor ? `&cursor=${cursor}` : ''}`;\nexport const createSharedLink = (conversationId: string) => `${shareRoot}/${conversationId}`;\nexport const updateSharedLink = (shareId: string) => `${shareRoot}/${shareId}`;\n\nconst keysEndpoint = '/api/keys';\n\nexport const keys = () => keysEndpoint;\n\nexport const userKeyQuery = (name: string) => `${keysEndpoint}?name=${name}`;\n\nexport const revokeUserKey = (name: string) => `${keysEndpoint}/${name}`;\n\nexport const revokeAllUserKeys = () => `${keysEndpoint}?all=true`;\n\nexport const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;\n\nexport const conversationsRoot = '/api/convos';\n\nexport const conversations = (pageNumber: string, isArchived?: boolean, tags?: string[]) =>\n  `/api/v1/chat/list?page=${pageNumber}&limit=40${tags?.map((tag) => `&tags=${tag}`).join('')}`;\n\nexport const conversationById = (id: string) => `${conversationsRoot}/${id}`;\n\nexport const genTitle = () => `/api/v1/workstation/gen_title`;\n\nexport const updateConversation = () => `/api/v1/chat/conversation/rename`;\n\nexport const deleteConversation = () => `/api/v1/chat/`;\n\nexport const importConversation = () => `${conversationsRoot}/import`;\n\nexport const forkConversation = () => `${conversationsRoot}/fork`;\n\nexport const duplicateConversation = () => `/api/v1/chat/conversation/copy`;\n\nexport const search = (q: string, pageNumber: string) =>\n  `/api/search?q=${q}&pageNumber=${pageNumber}`;\n\nexport const searchEnabled = () => '/api/search/enable';\n\nexport const presets = () => '/api/presets';\n\nexport const deletePreset = () => '/api/presets/delete';\n\nexport const aiEndpoints = () => '/api/endpoints';\n\nexport const endpointsConfigOverride = () => '/api/endpoints/config/override';\n\nexport const models = () => '/api/models';\n\nexport const tokenizer = () => '/api/tokenizer';\n\nexport const login = () => '/api/auth/login';\n\nexport const logout = () => '/api/v1/user/logout';\n\nexport const register = () => '/api/auth/register';\n\nexport const loginFacebook = () => '/api/auth/facebook';\n\nexport const loginGoogle = () => '/api/auth/google';\n\nexport const refreshToken = (retry?: boolean) =>\n  `/api/auth/refresh${retry === true ? '?retry=true' : ''}`;\n\nexport const requestPasswordReset = () => '/api/auth/requestPasswordReset';\n\nexport const resetPassword = () => '/api/auth/resetPassword';\n\nexport const verifyEmail = () => '/api/user/verify';\n\nexport const resendVerificationEmail = () => '/api/user/verify/resend';\n\nexport const plugins = () => '/api/plugins';\n\nexport const config = () => '/api/config';\nexport const bsConfig = () => '/api/v1/workstation/config';\n\nexport const prompts = () => '/api/prompts';\n\nexport const assistants = ({\n  path = '',\n  options,\n  version,\n  endpoint,\n  isAvatar,\n}: {\n  path?: string;\n  options?: object;\n  endpoint?: AssistantsEndpoint;\n  version: number | string;\n  isAvatar?: boolean;\n}) => {\n  let url = isAvatar === true ? `${images()}/assistants` : `/api/assistants/v${version}`;\n\n  if (path && path !== '') {\n    url += `/${path}`;\n  }\n\n  if (endpoint) {\n    options = {\n      ...(options ?? {}),\n      endpoint,\n    };\n  }\n\n  if (options && Object.keys(options).length > 0) {\n    const queryParams = new URLSearchParams(options as Record<string, string>).toString();\n    url += `?${queryParams}`;\n  }\n\n  return url;\n};\n\nexport const agents = ({ path = '', options }: { path?: string; options?: object }) => {\n  let url = '/api/agents';\n\n  if (path && path !== '') {\n    url += `/${path}`;\n  }\n\n  if (options && Object.keys(options).length > 0) {\n    const queryParams = new URLSearchParams(options as Record<string, string>).toString();\n    url += `?${queryParams}`;\n  }\n\n  return url;\n};\n\nexport const files = () => '/api/files';\n\nexport const images = () => window.isLinsight ? '/api/v1/linsight/workbench/upload-file' : `/api/v1/workstation/files`;\n\nexport const avatar = () => `${images()}/avatar`;\n\nexport const speech = () => `${files()}/speech`;\n\nexport const speechToText = () => `${speech()}/stt`;\n\nexport const textToSpeech = () => `${speech()}/tts`;\n\nexport const textToSpeechManual = () => `${textToSpeech()}/manual`;\n\nexport const textToSpeechVoices = () => `${textToSpeech()}/voices`;\n\nexport const getCustomConfigSpeech = () => `${speech()}/config/get`;\n\nexport const getPromptGroup = (_id: string) => `${prompts()}/groups/${_id}`;\n\nexport const getPromptGroupsWithFilters = (filter: object) => {\n  let url = `${prompts()}/groups`;\n  if (Object.keys(filter).length > 0) {\n    const queryParams = new URLSearchParams(filter as Record<string, string>).toString();\n    url += `?${queryParams}`;\n  }\n  return url;\n};\n\nexport const getPromptsWithFilters = (filter: object) => {\n  let url = prompts();\n  if (Object.keys(filter).length > 0) {\n    const queryParams = new URLSearchParams(filter as Record<string, string>).toString();\n    url += `?${queryParams}`;\n  }\n  return url;\n};\n\nexport const getPrompt = (_id: string) => `${prompts()}/${_id}`;\n\nexport const getRandomPrompts = (limit: number, skip: number) =>\n  `${prompts()}/random?limit=${limit}&skip=${skip}`;\n\nexport const postPrompt = prompts;\n\nexport const updatePromptGroup = getPromptGroup;\n\nexport const updatePromptLabels = (_id: string) => `${getPrompt(_id)}/labels`;\n\nexport const updatePromptTag = (_id: string) => `${getPrompt(_id)}/tags/production`;\n\nexport const deletePromptGroup = getPromptGroup;\n\nexport const deletePrompt = ({ _id, groupId }: { _id: string; groupId: string }) => {\n  return `${prompts()}/${_id}?groupId=${groupId}`;\n};\n\nexport const getCategories = () => '/api/categories';\n\nexport const getAllPromptGroups = () => `${prompts()}/all`;\n\n/* Roles */\nexport const roles = () => '/api/roles';\nexport const getRole = (roleName: string) => `${roles()}/${roleName.toLowerCase()}`;\nexport const updatePromptPermissions = (roleName: string) => `${getRole(roleName)}/prompts`;\nexport const updateAgentPermissions = (roleName: string) => `${getRole(roleName)}/agents`;\n\n/* Conversation Tags */\nexport const conversationTags = (tag?: string) =>\n  `/api/tags${tag != null && tag ? `/${encodeURIComponent(tag)}` : ''}`;\n\nexport const conversationTagsList = (pageNumber: string, sort?: string, order?: string) =>\n  `${conversationTags()}/list?pageNumber=${pageNumber}${sort ? `&sort=${sort}` : ''}${order ? `&order=${order}` : ''\n  }`;\n\nexport const addTagToConversation = (conversationId: string) =>\n  `${conversationTags()}/convo/${conversationId}`;\n\nexport const userTerms = () => '/api/user/terms';\nexport const acceptUserTerms = () => '/api/user/terms/accept';\nexport const banner = () => '/api/banner';\n\n// Two-Factor Endpoints\nexport const enableTwoFactor = () => '/api/auth/2fa/enable';\nexport const verifyTwoFactor = () => '/api/auth/2fa/verify';\nexport const confirmTwoFactor = () => '/api/auth/2fa/confirm';\nexport const disableTwoFactor = () => '/api/auth/2fa/disable';\nexport const regenerateBackupCodes = () => '/api/auth/2fa/backup/regenerate';\nexport const verifyTwoFactorTemp = () => '/api/auth/2fa/verify-temp';\n\n// 知识库模块\nexport const knowledgeUpload = () => '/api/v1/workstation/knowledgeUpload';\nexport const queryKnowledge = () => '/api/v1/workstation/queryKnowledge';\n// export const queryKnowledge = () => '/api/knowledge/query';\nexport const deleteKnowledge = (_id: string) => `/api/v1/workstation/deleteKnowledge?file_id=${_id}`;\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/artifacts.ts",
    "content": "export enum ArtifactModes {\n  DEFAULT = 'default',\n  SHADCNUI = 'shadcnui',\n  CUSTOM = 'custom',\n}\n\nexport const utils = `\nimport { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n`;\nexport const accordian = `import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b\", className)}\n    {...props}\n  />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n  </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n`;\nexport const alertDialog = `import * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { buttonVariants } from \"./button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Overlay\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n    ref={ref}\n  />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPortal>\n    <AlertDialogOverlay />\n    <AlertDialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-gray-800 dark:bg-gray-950\",\n        className\n      )}\n      {...props}\n    />\n  </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-2 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Title\n    ref={ref}\n    className={cn(\"text-lg font-semibold\", className)}\n    {...props}\n  />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n    {...props}\n  />\n))\nAlertDialogDescription.displayName =\n  AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Action>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Action\n    ref={ref}\n    className={cn(buttonVariants(), className)}\n    {...props}\n  />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n  <AlertDialogPrimitive.Cancel\n    ref={ref}\n    className={cn(\n      buttonVariants({ variant: \"outline\" }),\n      \"mt-2 sm:mt-0\",\n      className\n    )}\n    {...props}\n  />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n  AlertDialog,\n  AlertDialogPortal,\n  AlertDialogOverlay,\n  AlertDialogTrigger,\n  AlertDialogContent,\n  AlertDialogHeader,\n  AlertDialogFooter,\n  AlertDialogTitle,\n  AlertDialogDescription,\n  AlertDialogAction,\n  AlertDialogCancel,\n}\n`;\nexport const alert = `import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border border-gray-200 p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-gray-950 dark:border-gray-800 dark:[&>svg]:text-gray-50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-white text-gray-950 dark:bg-gray-950 dark:text-gray-50\",\n        destructive:\n          \"border-red-500/50 text-red-500 dark:border-red-500 [&>svg]:text-red-500 dark:border-red-900/50 dark:text-red-900 dark:dark:border-red-900 dark:[&>svg]:text-red-900\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Alert = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n  <div\n    ref={ref}\n    role=\"alert\"\n    className={cn(alertVariants({ variant }), className)}\n    {...props}\n  />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n  <h5\n    ref={ref}\n    className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n    {...props}\n  />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n\n`;\nexport const avatar = `import * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Avatar = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n      className\n    )}\n    {...props}\n  />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Image>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Image\n    ref={ref}\n    className={cn(\"aspect-square h-full w-full\", className)}\n    {...props}\n  />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Fallback>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Fallback\n    ref={ref}\n    className={cn(\n      \"flex h-full w-full items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800\",\n      className\n    )}\n    {...props}\n  />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n\n`;\nexport const badge = `import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-full border border-gray-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 dark:border-gray-800 dark:focus:ring-gray-300\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-gray-900 text-gray-50 hover:bg-gray-900/80 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/80\",\n        secondary:\n          \"border-transparent bg-gray-100 text-gray-900 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80\",\n        destructive:\n          \"border-transparent bg-red-500 text-gray-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/80\",\n        outline: \"text-gray-950 dark:text-gray-50\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  )\n}\n\nexport { Badge, badgeVariants }\n\n`;\nexport const breadcrumb = `import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Breadcrumb = React.forwardRef<\n  HTMLElement,\n  React.ComponentPropsWithoutRef<\"nav\"> & {\n    separator?: React.ReactNode\n  }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n  HTMLOListElement,\n  React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n  <ol\n    ref={ref}\n    className={cn(\n      \"flex flex-wrap items-center gap-1.5 break-words text-sm text-gray-500 sm:gap-2.5 dark:text-gray-400\",\n      className\n    )}\n    {...props}\n  />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n  HTMLLIElement,\n  React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n  <li\n    ref={ref}\n    className={cn(\"inline-flex items-center gap-1.5\", className)}\n    {...props}\n  />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n  HTMLAnchorElement,\n  React.ComponentPropsWithoutRef<\"a\"> & {\n    asChild?: boolean\n  }\n>(({ asChild, className, ...props }, ref) => {\n  const Comp = asChild ? Slot : \"a\"\n\n  return (\n    <Comp\n      ref={ref}\n      className={cn(\"transition-colors hover:text-gray-950 dark:hover:text-gray-50\", className)}\n      {...props}\n    />\n  )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n  HTMLSpanElement,\n  React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n  <span\n    ref={ref}\n    role=\"link\"\n    aria-disabled=\"true\"\n    aria-current=\"page\"\n    className={cn(\"font-normal text-gray-950 dark:text-gray-50\", className)}\n    {...props}\n  />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<\"li\">) => (\n  <li\n    role=\"presentation\"\n    aria-hidden=\"true\"\n    className={cn(\"[&>svg]:size-3.5\", className)}\n    {...props}\n  >\n    {children ?? <ChevronRight />}\n  </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) => (\n  <span\n    role=\"presentation\"\n    aria-hidden=\"true\"\n    className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n    {...props}\n  >\n    <MoreHorizontal className=\"h-4 w-4\" />\n    <span className=\"sr-only\">More</span>\n  </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n}\n\n`;\nexport const button = `import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-gray-900 text-gray-50 hover:bg-gray-900/90 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50/90\",\n        destructive:\n          \"bg-red-500 text-gray-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-gray-50 dark:hover:bg-red-900/90\",\n        outline:\n          \"border border-gray-200 bg-white hover:bg-gray-100 hover:text-gray-900 dark:border-gray-800 dark:bg-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-50\",\n        secondary:\n          \"bg-gray-100 text-gray-900 hover:bg-gray-100/80 dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-800/80\",\n        ghost: \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-50\",\n        link: \"text-gray-900 underline-offset-4 hover:underline dark:text-gray-50\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-md px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n`;\nexport const calendar = `import * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { buttonVariants } from \"./button\"\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  ...props\n}: CalendarProps) {\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn(\"p-3\", className)}\n      classNames={{\n        months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n        month: \"space-y-4\",\n        caption: \"flex justify-center pt-1 relative items-center\",\n        caption_label: \"text-sm font-medium\",\n        nav: \"space-x-1 flex items-center\",\n        nav_button: cn(\n          buttonVariants({ variant: \"outline\" }),\n          \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n        ),\n        nav_button_previous: \"absolute left-1\",\n        nav_button_next: \"absolute right-1\",\n        table: \"w-full border-collapse space-y-1\",\n        head_row: \"flex\",\n        head_cell:\n          \"text-gray-500 rounded-md w-9 font-normal text-[0.8rem] dark:text-gray-400\",\n        row: \"flex w-full mt-2\",\n        cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-gray-100/50 [&:has([aria-selected])]:bg-gray-100 first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20 dark:[&:has([aria-selected].day-outside)]:bg-gray-800/50 dark:[&:has([aria-selected])]:bg-gray-800\",\n        day: cn(\n          buttonVariants({ variant: \"ghost\" }),\n          \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\n        ),\n        day_range_end: \"day-range-end\",\n        day_selected:\n          \"bg-gray-900 text-gray-50 hover:bg-gray-900 hover:text-gray-50 focus:bg-gray-900 focus:text-gray-50 dark:bg-gray-50 dark:text-gray-900 dark:hover:bg-gray-50 dark:hover:text-gray-900 dark:focus:bg-gray-50 dark:focus:text-gray-900\",\n        day_today: \"bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-gray-50\",\n        day_outside:\n          \"day-outside text-gray-500 opacity-50 aria-selected:bg-gray-100/50 aria-selected:text-gray-500 aria-selected:opacity-30 dark:text-gray-400 dark:aria-selected:bg-gray-800/50 dark:aria-selected:text-gray-400\",\n        day_disabled: \"text-gray-500 opacity-50 dark:text-gray-400\",\n        day_range_middle:\n          \"aria-selected:bg-gray-100 aria-selected:text-gray-900 dark:aria-selected:bg-gray-800 dark:aria-selected:text-gray-50\",\n        day_hidden: \"invisible\",\n        ...classNames,\n      }}\n      components={{\n        IconLeft: ({ ...props }) => <ChevronLeft className=\"h-4 w-4\" />,\n        IconRight: ({ ...props }) => <ChevronRight className=\"h-4 w-4\" />,\n      }}\n      {...props}\n    />\n  )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n\n`;\nexport const card = `import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-lg border border-gray-200 bg-white text-gray-950 shadow-sm dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n  <h3\n    ref={ref}\n    className={cn(\n      \"text-2xl font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n  <p\n    ref={ref}\n    className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n`;\nexport const carousel = `import * as React from \"react\"\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n  opts?: CarouselOptions\n  plugins?: CarouselPlugin\n  orientation?: \"horizontal\" | \"vertical\"\n  setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n  api: ReturnType<typeof useEmblaCarousel>[1]\n  scrollPrev: () => void\n  scrollNext: () => void\n  canScrollPrev: boolean\n  canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n  const context = React.useContext(CarouselContext)\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\")\n  }\n\n  return context\n}\n\nconst Carousel = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n  (\n    {\n      orientation = \"horizontal\",\n      opts,\n      setApi,\n      plugins,\n      className,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const [carouselRef, api] = useEmblaCarousel(\n      {\n        ...opts,\n        axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n      },\n      plugins\n    )\n    const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n    const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n    const onSelect = React.useCallback((api: CarouselApi) => {\n      if (!api) {\n        return\n      }\n\n      setCanScrollPrev(api.canScrollPrev())\n      setCanScrollNext(api.canScrollNext())\n    }, [])\n\n    const scrollPrev = React.useCallback(() => {\n      api?.scrollPrev()\n    }, [api])\n\n    const scrollNext = React.useCallback(() => {\n      api?.scrollNext()\n    }, [api])\n\n    const handleKeyDown = React.useCallback(\n      (event: React.KeyboardEvent<HTMLDivElement>) => {\n        if (event.key === \"ArrowLeft\") {\n          event.preventDefault()\n          scrollPrev()\n        } else if (event.key === \"ArrowRight\") {\n          event.preventDefault()\n          scrollNext()\n        }\n      },\n      [scrollPrev, scrollNext]\n    )\n\n    React.useEffect(() => {\n      if (!api || !setApi) {\n        return\n      }\n\n      setApi(api)\n    }, [api, setApi])\n\n    React.useEffect(() => {\n      if (!api) {\n        return\n      }\n\n      onSelect(api)\n      api.on(\"reInit\", onSelect)\n      api.on(\"select\", onSelect)\n\n      return () => {\n        api?.off(\"select\", onSelect)\n      }\n    }, [api, onSelect])\n\n    return (\n      <CarouselContext.Provider\n        value={{\n          carouselRef,\n          api: api,\n          opts,\n          orientation:\n            orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n          scrollPrev,\n          scrollNext,\n          canScrollPrev,\n          canScrollNext,\n        }}\n      >\n        <div\n          ref={ref}\n          onKeyDownCapture={handleKeyDown}\n          className={cn(\"relative\", className)}\n          role=\"region\"\n          aria-roledescription=\"carousel\"\n          {...props}\n        >\n          {children}\n        </div>\n      </CarouselContext.Provider>\n    )\n  }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { carouselRef, orientation } = useCarousel()\n\n  return (\n    <div ref={carouselRef} className=\"overflow-hidden\">\n      <div\n        ref={ref}\n        className={cn(\n          \"flex\",\n          orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { orientation } = useCarousel()\n\n  return (\n    <div\n      ref={ref}\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      className={cn(\n        \"min-w-0 shrink-0 grow-0 basis-full\",\n        orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n  return (\n    <Button\n      ref={ref}\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute  h-8 w-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-left-12 top-1/2 -translate-y-1/2\"\n          : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      <ArrowLeft className=\"h-4 w-4\" />\n      <span className=\"sr-only\">Previous slide</span>\n    </Button>\n  )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n  return (\n    <Button\n      ref={ref}\n      variant={variant}\n      size={size}\n      className={cn(\n        \"absolute h-8 w-8 rounded-full\",\n        orientation === \"horizontal\"\n          ? \"-right-12 top-1/2 -translate-y-1/2\"\n          : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      <ArrowRight className=\"h-4 w-4\" />\n      <span className=\"sr-only\">Next slide</span>\n    </Button>\n  )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n}\n\n`;\nexport const checkbox = `import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer h-4 w-4 shrink-0 rounded-sm border border-gray-200 dark:border-gray-900 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-gray-900 data-[state=checked]:text-gray-50  dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300 dark:data-[state=checked]:bg-gray-50 dark:data-[state=checked]:text-gray-900\",\n      className\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator\n      className={cn(\"flex items-center justify-center text-current\")}\n    >\n      <Check className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n\n`;\nexport const collapsible = `import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n\n`;\nexport const dialog = `import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-gray-800 dark:bg-gray-950\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500 dark:ring-offset-gray-950 dark:focus:ring-gray-300 dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-400\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogClose,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n\n`;\nexport const drawer = `import * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Drawer = ({\n  shouldScaleBackground = true,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n  <DrawerPrimitive.Root\n    shouldScaleBackground={shouldScaleBackground}\n    {...props}\n  />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Overlay\n    ref={ref}\n    className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n    {...props}\n  />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DrawerPortal>\n    <DrawerOverlay />\n    <DrawerPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border border-gray-200 bg-white dark:border-gray-800 dark:bg-gray-950\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-gray-100 dark:bg-gray-800\" />\n      {children}\n    </DrawerPrimitive.Content>\n  </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n    {...props}\n  />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n    {...props}\n  />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n    {...props}\n  />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n\n`;\nexport const dropdownMenu = `import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-800 dark:data-[state=open]:bg-gray-800\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-950 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-950 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-gray-100 dark:bg-gray-800\", className)}\n    {...props}\n  />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n\n`;\nexport const hoverCard = `import * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n  React.ElementRef<typeof HoverCardPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n  <HoverCardPrimitive.Content\n    ref={ref}\n    align={align}\n    sideOffset={sideOffset}\n    className={cn(\n      \"z-50 w-64 rounded-md border border-gray-200 bg-white p-4 text-gray-950 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n\n`;\nexport const input = `import * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface InputProps\n  extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-10 w-full rounded-md border border-gray-200 bg-white px-3 py-2 text-sm ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-800 dark:bg-gray-950 dark:ring-offset-gray-950 dark:placeholder:text-gray-400 dark:focus-visible:ring-gray-300\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n`;\nexport const label = `import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n`;\nexport const menuBar = `\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst MenubarMenu = MenubarPrimitive.Menu\n\nconst MenubarGroup = MenubarPrimitive.Group\n\nconst MenubarPortal = MenubarPrimitive.Portal\n\nconst MenubarSub = MenubarPrimitive.Sub\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst Menubar = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"flex h-10 items-center space-x-1 rounded-md border border-gray-200 bg-white p-1 dark:border-gray-800 dark:bg-gray-950\",\n      className\n    )}\n    {...props}\n  />\n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 focus:text-gray-900 data-[state=open]:bg-gray-100 data-[state=open]:text-gray-900 dark:focus:bg-gray-800 dark:focus:text-gray-50 dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <MenubarPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[state=open]:bg-gray-100 data-[state=open]:text-gray-900 dark:focus:bg-gray-800 dark:focus:text-gray-50 dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-50\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </MenubarPrimitive.SubTrigger>\n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-950 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n  (\n    { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n    ref\n  ) => (\n    <MenubarPrimitive.Portal>\n      <MenubarPrimitive.Content\n        ref={ref}\n        align={align}\n        alignOffset={alignOffset}\n        sideOffset={sideOffset}\n        className={cn(\n          \"z-50 min-w-[12rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-950 shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n          className\n        )}\n        {...props}\n      />\n    </MenubarPrimitive.Portal>\n  )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <MenubarPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <MenubarPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.CheckboxItem>\n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <MenubarPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <MenubarPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </MenubarPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </MenubarPrimitive.RadioItem>\n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <MenubarPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n  React.ElementRef<typeof MenubarPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <MenubarPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-gray-100 dark:bg-gray-800\", className)}\n    {...props}\n  />\n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-gray-500 dark:text-gray-400\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n  Menubar,\n  MenubarMenu,\n  MenubarTrigger,\n  MenubarContent,\n  MenubarItem,\n  MenubarSeparator,\n  MenubarLabel,\n  MenubarCheckboxItem,\n  MenubarRadioGroup,\n  MenubarRadioItem,\n  MenubarPortal,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarGroup,\n  MenubarSub,\n  MenubarShortcut,\n}\n\n`;\nexport const navigationMenu = `import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst NavigationMenu = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <NavigationMenuViewport />\n  </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.List\n    ref={ref}\n    className={cn(\n      \"group flex flex-1 list-none items-center justify-center space-x-1\",\n      className\n    )}\n    {...props}\n  />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n  \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-white px-4 py-2 text-sm font-medium transition-colors hover:bg-gray-100 hover:text-gray-900 focus:bg-gray-100 focus:text-gray-900 focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-gray-100/50 data-[state=open]:bg-gray-100/50 dark:bg-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-50 dark:focus:bg-gray-800 dark:focus:text-gray-50 dark:data-[active]:bg-gray-800/50 dark:data-[state=open]:bg-gray-800/50\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Trigger\n    ref={ref}\n    className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n    {...props}\n  >\n    {children}{\"\"}\n    <ChevronDown\n      className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n      aria-hidden=\"true\"\n    />\n  </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n      className\n    )}\n    {...props}\n  />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n  <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n    <NavigationMenuPrimitive.Viewport\n      className={cn(\n        \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-gray-200 bg-white text-gray-950 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)] dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  </div>\n))\nNavigationMenuViewport.displayName =\n  NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Indicator\n    ref={ref}\n    className={cn(\n      \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n      className\n    )}\n    {...props}\n  >\n    <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-gray-200 shadow-md dark:bg-gray-800\" />\n  </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n  NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n  navigationMenuTriggerStyle,\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n}\n\n`;\nexport const pagination = `import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ButtonProps, buttonVariants } from \"./button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n  <nav\n    role=\"navigation\"\n    aria-label=\"pagination\"\n    className={cn(\"mx-auto flex w-full justify-center\", className)}\n    {...props}\n  />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n  HTMLUListElement,\n  React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n  <ul\n    ref={ref}\n    className={cn(\"flex flex-row items-center gap-1\", className)}\n    {...props}\n  />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n  HTMLLIElement,\n  React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n  <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n  isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n  React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n  className,\n  isActive,\n  size = \"icon\",\n  ...props\n}: PaginationLinkProps) => (\n  <a\n    aria-current={isActive ? \"page\" : undefined}\n    className={cn(\n      buttonVariants({\n        variant: isActive ? \"outline\" : \"ghost\",\n        size,\n      }),\n      className\n    )}\n    {...props}\n  />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n  className,\n  ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n  <PaginationLink\n    aria-label=\"Go to previous page\"\n    size=\"default\"\n    className={cn(\"gap-1 pl-2.5\", className)}\n    {...props}\n  >\n    <ChevronLeft className=\"h-4 w-4\" />\n    <span>Previous</span>\n  </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n  className,\n  ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n  <PaginationLink\n    aria-label=\"Go to next page\"\n    size=\"default\"\n    className={cn(\"gap-1 pr-2.5\", className)}\n    {...props}\n  >\n    <span>Next</span>\n    <ChevronRight className=\"h-4 w-4\" />\n  </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) => (\n  <span\n    aria-hidden\n    className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n    {...props}\n  >\n    <MoreHorizontal className=\"h-4 w-4\" />\n    <span className=\"sr-only\">More pages</span>\n  </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n}\n\n`;\nexport const popover = `import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n  React.ElementRef<typeof PopoverPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n  <PopoverPrimitive.Portal>\n    <PopoverPrimitive.Content\n      ref={ref}\n      align={align}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 w-72 rounded-md border border-gray-200 bg-white p-4 text-gray-950 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n        className\n      )}\n      {...props}\n    />\n  </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n\n`;\nexport const progress = `import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Progress = React.forwardRef<\n  React.ElementRef<typeof ProgressPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n  <ProgressPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative h-4 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800\",\n      className\n    )}\n    {...props}\n  >\n    <ProgressPrimitive.Indicator\n      className=\"h-full w-full flex-1 bg-gray-900 transition-all dark:bg-gray-50\"\n      style={{ transform: \\`translateX(-\\${100 - (value || 0)}%)\\` }}\n    />\n  </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n`;\nexport const radioGroup = `import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Root\n      className={cn(\"grid gap-2\", className)}\n      {...props}\n      ref={ref}\n    />\n  )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        \"aspect-square h-4 w-4 rounded-full border border-gray-200 dark:border-gray-900 text-gray-900 ring-offset-white focus:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50  dark:text-gray-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n        <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n\n`;\nexport const select = `import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-10 w-full items-center justify-between rounded-md border border-gray-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 dark:border-gray-800 dark:bg-gray-950 dark:ring-offset-gray-950 dark:placeholder:text-gray-400 dark:focus:ring-gray-300\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 opacity-50\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white text-gray-950 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <SelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n    {...props}\n  />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-gray-100 dark:bg-gray-800\", className)}\n    {...props}\n  />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n}\n\n`;\nexport const separator = `import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Separator = React.forwardRef<\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n  (\n    { className, orientation = \"horizontal\", decorative = true, ...props },\n    ref\n  ) => (\n    <SeparatorPrimitive.Root\n      ref={ref}\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-gray-200 dark:bg-gray-800\",\n        orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n\n`;\nexport const skeleton = `import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"animate-pulse rounded-md bg-gray-100 dark:bg-gray-800\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n`;\nexport const slider = `import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Slider = React.forwardRef<\n  React.ElementRef<typeof SliderPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SliderPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative flex w-full touch-none select-none items-center\",\n      className\n    )}\n    {...props}\n  >\n    <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800\">\n      <SliderPrimitive.Range className=\"absolute h-full bg-gray-900 dark:bg-gray-50\" />\n    </SliderPrimitive.Track>\n    <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-gray-900 bg-white ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:border-gray-50 dark:bg-gray-950 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300\" />\n  </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n\n`;\nexport const switchComponent = `import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitives.Root\n    className={cn(\n      \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-gray-900 data-[state=unchecked]:bg-gray-200 dark:focus-visible:ring-gray-300 dark:focus-visible:ring-offset-gray-950 dark:data-[state=checked]:bg-gray-50 dark:data-[state=unchecked]:bg-gray-800\",\n      className\n    )}\n    {...props}\n    ref={ref}\n  >\n    <SwitchPrimitives.Thumb\n      className={cn(\n        \"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 dark:bg-gray-950\"\n      )}\n    />\n  </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n\n`;\nexport const table = `import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Table = React.forwardRef<\n  HTMLTableElement,\n  React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n  <div className=\"relative w-full overflow-auto\">\n    <table\n      ref={ref}\n      className={cn(\"w-full caption-bottom text-sm\", className)}\n      {...props}\n    />\n  </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody\n    ref={ref}\n    className={cn(\"[&_tr:last-child]:border-0\", className)}\n    {...props}\n  />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      \"border-t bg-gray-100/50 font-medium [&>tr]:last:border-b-0 dark:bg-gray-800/50\",\n      className\n    )}\n    {...props}\n  />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n  HTMLTableRowElement,\n  React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n  <tr\n    ref={ref}\n    className={cn(\n      \"border-b transition-colors hover:bg-gray-100/50 data-[state=selected]:bg-gray-100 dark:hover:bg-gray-800/50 dark:data-[state=selected]:bg-gray-800\",\n      className\n    )}\n    {...props}\n  />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      \"h-12 px-4 text-left align-middle font-medium text-gray-500 [&:has([role=checkbox])]:pr-0 dark:text-gray-400\",\n      className\n    )}\n    {...props}\n  />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n    {...props}\n  />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption\n    ref={ref}\n    className={cn(\"mt-4 text-sm text-gray-500 dark:text-gray-400\", className)}\n    {...props}\n  />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n\n`;\nexport const tabs = `import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-10 items-center justify-center rounded-md bg-gray-100 p-1 text-gray-500 dark:bg-gray-800 dark:text-gray-400\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-white data-[state=active]:text-gray-950 data-[state=active]:shadow-sm dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300 dark:data-[state=active]:bg-gray-950 dark:data-[state=active]:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n\n`;\nexport const textarea = `import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface TextareaProps\n  extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n  ({ className, ...props }, ref) => {\n    return (\n      <textarea\n        className={cn(\n          \"flex min-h-[80px] w-full rounded-md border border-gray-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-800 dark:bg-gray-950 dark:ring-offset-gray-950 dark:placeholder:text-gray-400 dark:focus-visible:ring-gray-300\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n\n`;\nexport const toast = `import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border border-gray-200 p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full dark:border-gray-800\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-white text-gray-950 dark:bg-gray-950 dark:text-gray-50\",\n        destructive:\n          \"destructive group border-red-500 bg-red-500 text-gray-50 dark:border-red-900 dark:bg-red-900 dark:text-gray-50\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border border-gray-200 bg-transparent px-3 text-sm font-medium ring-offset-white transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-gray-100/40 group-[.destructive]:hover:border-red-500/30 group-[.destructive]:hover:bg-red-500 group-[.destructive]:hover:text-gray-50 group-[.destructive]:focus:ring-red-500 dark:border-gray-800 dark:ring-offset-gray-950 dark:hover:bg-gray-800 dark:focus:ring-gray-300 dark:group-[.destructive]:border-gray-800/40 dark:group-[.destructive]:hover:border-red-900/30 dark:group-[.destructive]:hover:bg-red-900 dark:group-[.destructive]:hover:text-gray-50 dark:group-[.destructive]:focus:ring-red-900\",\n      className\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-2 top-2 rounded-md p-1 text-gray-950/50 opacity-0 transition-opacity hover:text-gray-950 focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 dark:text-gray-50/50 dark:hover:text-gray-50\",\n      className\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold\", className)}\n    {...props}\n  />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90\", className)}\n    {...props}\n  />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n\n`;\nexport const toaster = `import {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"./toast\"\nimport { useToast } from \"./use-toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        )\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n\n`;\nexport const toggleGroup = `import * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants>\n>({\n  size: \"default\",\n  variant: \"default\",\n})\n\nconst ToggleGroup = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n  <ToggleGroupPrimitive.Root\n    ref={ref}\n    className={cn(\"flex items-center justify-center gap-1\", className)}\n    {...props}\n  >\n    <ToggleGroupContext.Provider value={{ variant, size }}>\n      {children}\n    </ToggleGroupContext.Provider>\n  </ToggleGroupPrimitive.Root>\n))\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n    VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n  const context = React.useContext(ToggleGroupContext)\n\n  return (\n    <ToggleGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  )\n})\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n\n`;\nexport const toggle = `import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n  \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-white transition-colors hover:bg-gray-100 hover:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-gray-100 data-[state=on]:text-gray-900 dark:ring-offset-gray-950 dark:hover:bg-gray-800 dark:hover:text-gray-400 dark:focus-visible:ring-gray-300 dark:data-[state=on]:bg-gray-800 dark:data-[state=on]:text-gray-50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline:\n          \"border border-gray-200 bg-transparent hover:bg-gray-100 hover:text-gray-900 dark:border-gray-800 dark:hover:bg-gray-800 dark:hover:text-gray-50\",\n      },\n      size: {\n        default: \"h-10 px-3\",\n        sm: \"h-9 px-2.5\",\n        lg: \"h-11 px-5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nconst Toggle = React.forwardRef<\n  React.ElementRef<typeof TogglePrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n  <TogglePrimitive.Root\n    ref={ref}\n    className={cn(toggleVariants({ variant, size, className }))}\n    {...props}\n  />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n\n`;\nexport const tooltip = `import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Content\n    ref={ref}\n    sideOffset={sideOffset}\n    className={cn(\n      \"z-50 overflow-hidden rounded-md border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-950 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50\",\n      className\n    )}\n    {...props}\n  />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n\n`;\nexport const useToast = `import * as React from \"react\"\n\nimport type {\n  ToastActionElement,\n  ToastProps,\n} from \"./toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n  id: string\n  title?: React.ReactNode\n  description?: React.ReactNode\n  action?: ToastActionElement\n}\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\n  return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"]\n      toast: ToasterToast\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"]\n      toast: Partial<ToasterToast>\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n  toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId)\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    })\n  }, TOAST_REMOVE_DELAY)\n\n  toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      }\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      }\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId)\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id)\n        })\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t\n        ),\n      }\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        }\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      }\n  }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action)\n  listeners.forEach((listener) => {\n    listener(memoryState)\n  })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n  const id = genId()\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    })\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss()\n      },\n    },\n  })\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  }\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState)\n\n  React.useEffect(() => {\n    listeners.push(setState)\n    return () => {\n      const index = listeners.indexOf(setState)\n      if (index > -1) {\n        listeners.splice(index, 1)\n      }\n    }\n  }, [state])\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  }\n}\n\nexport { useToast, toast }\n`;\n\nexport const shadcnComponents = {\n  utils: utils,\n  accordian: accordian,\n  alertDialog: alertDialog,\n  alert: alert,\n  avatar: avatar,\n  badge: badge,\n  breadcrumb: breadcrumb,\n  button: button,\n  calendar: calendar,\n  card: card,\n  carousel: carousel,\n  checkbox: checkbox,\n  collapsible: collapsible,\n  dialog: dialog,\n  drawer: drawer,\n  dropdownMenu: dropdownMenu,\n  hoverCard: hoverCard,\n  input: input,\n  label: label,\n  menuBar: menuBar,\n  navigationMenu: navigationMenu,\n  pagination: pagination,\n  popover: popover,\n  progress: progress,\n  radioGroup: radioGroup,\n  select: select,\n  separator: separator,\n  skeleton: skeleton,\n  slider: slider,\n  switchComponent: switchComponent,\n  table: table,\n  tabs: tabs,\n  textarea: textarea,\n  toast: toast,\n  toaster: toaster,\n  toggleGroup: toggleGroup,\n  toggle: toggle,\n  tooltip: tooltip,\n  useToast: useToast,\n};\n\nexport const essentialShadcnComponents = {\n  utils: utils,\n  avatar: avatar,\n  button: button,\n  card: card,\n  checkbox: checkbox,\n  input: input,\n  label: label,\n  radioGroup: radioGroup,\n  select: select,\n  textarea: textarea,\n  // badge: badge,\n  // dialog: dialog,\n  // table: table,\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/azure.ts",
    "content": "import type { ZodError } from 'zod';\nimport type {\n  TAzureGroups,\n  TAzureGroupMap,\n  TAzureModelGroupMap,\n  TValidatedAzureConfig,\n  TAzureConfigValidationResult,\n} from '../src/config';\nimport { extractEnvVariable, envVarRegex } from '../src/utils';\nimport { azureGroupConfigsSchema } from '../src/config';\nimport { errorsToString } from '../src/parsers';\n\nexport const deprecatedAzureVariables = [\n  /* \"related to\" precedes description text */\n  { key: 'AZURE_OPENAI_DEFAULT_MODEL', description: 'setting a default model' },\n  { key: 'AZURE_OPENAI_MODELS', description: 'setting models' },\n  {\n    key: 'AZURE_USE_MODEL_AS_DEPLOYMENT_NAME',\n    description: 'using model names as deployment names',\n  },\n  { key: 'AZURE_API_KEY', description: 'setting a single Azure API key' },\n  { key: 'AZURE_OPENAI_API_INSTANCE_NAME', description: 'setting a single Azure instance name' },\n  {\n    key: 'AZURE_OPENAI_API_DEPLOYMENT_NAME',\n    description: 'setting a single Azure deployment name',\n  },\n  { key: 'AZURE_OPENAI_API_VERSION', description: 'setting a single Azure API version' },\n  {\n    key: 'AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME',\n    description: 'setting a single Azure completions deployment name',\n  },\n  {\n    key: 'AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME',\n    description: 'setting a single Azure embeddings deployment name',\n  },\n  {\n    key: 'PLUGINS_USE_AZURE',\n    description: 'using Azure for Plugins',\n  },\n];\n\nexport const conflictingAzureVariables = [\n  {\n    key: 'INSTANCE_NAME',\n  },\n  {\n    key: 'DEPLOYMENT_NAME',\n  },\n];\n\nexport function validateAzureGroups(configs: TAzureGroups): TAzureConfigValidationResult {\n  let isValid = true;\n  const modelNames: string[] = [];\n  const modelGroupMap: TAzureModelGroupMap = {};\n  const groupMap: TAzureGroupMap = {};\n  const errors: (ZodError | string)[] = [];\n\n  const result = azureGroupConfigsSchema.safeParse(configs);\n  if (!result.success) {\n    isValid = false;\n    errors.push(errorsToString(result.error.errors));\n  } else {\n    for (const group of result.data) {\n      const {\n        group: groupName,\n        apiKey,\n        instanceName = '',\n        deploymentName = '',\n        version = '',\n        baseURL = '',\n        additionalHeaders,\n        models,\n        serverless = false,\n        ...rest\n      } = group;\n\n      if (groupMap[groupName]) {\n        errors.push(`Duplicate group name detected: \"${groupName}\". Group names must be unique.`);\n        return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n      }\n\n      if (serverless && !baseURL) {\n        errors.push(`Group \"${groupName}\" is serverless but missing mandatory \"baseURL.\"`);\n        return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n      }\n\n      if (!instanceName && !serverless) {\n        errors.push(\n          `Group \"${groupName}\" is missing an \"instanceName\" for non-serverless configuration.`,\n        );\n        return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n      }\n\n      groupMap[groupName] = {\n        apiKey,\n        instanceName,\n        deploymentName,\n        version,\n        baseURL,\n        additionalHeaders,\n        models,\n        serverless,\n        ...rest,\n      };\n\n      for (const modelName in group.models) {\n        modelNames.push(modelName);\n        const model = group.models[modelName];\n\n        if (modelGroupMap[modelName]) {\n          errors.push(\n            `Duplicate model name detected: \"${modelName}\". Model names must be unique across groups.`,\n          );\n          return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n        }\n\n        if (serverless) {\n          modelGroupMap[modelName] = {\n            group: groupName,\n          };\n          continue;\n        }\n\n        const groupDeploymentName = group.deploymentName ?? '';\n        const groupVersion = group.version ?? '';\n        if (typeof model === 'boolean') {\n          // For boolean models, check if group-level deploymentName and version are present.\n          if (!groupDeploymentName || !groupVersion) {\n            errors.push(\n              `Model \"${modelName}\" in group \"${groupName}\" is missing a deploymentName or version.`,\n            );\n            return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n          }\n\n          modelGroupMap[modelName] = {\n            group: groupName,\n          };\n        } else {\n          const modelDeploymentName = model.deploymentName ?? '';\n          const modelVersion = model.version ?? '';\n          // For object models, check if deploymentName and version are required but missing.\n          if ((!modelDeploymentName && !groupDeploymentName) || (!modelVersion && !groupVersion)) {\n            errors.push(\n              `Model \"${modelName}\" in group \"${groupName}\" is missing a required deploymentName or version.`,\n            );\n            return { isValid: false, modelNames, modelGroupMap, groupMap, errors };\n          }\n\n          modelGroupMap[modelName] = {\n            group: groupName,\n            // deploymentName: modelDeploymentName || groupDeploymentName,\n            // version: modelVersion || groupVersion,\n          };\n        }\n      }\n    }\n  }\n\n  return { isValid, modelNames, modelGroupMap, groupMap, errors };\n}\n\ntype AzureOptions = {\n  azureOpenAIApiKey: string;\n  azureOpenAIApiInstanceName?: string;\n  azureOpenAIApiDeploymentName?: string;\n  azureOpenAIApiVersion?: string;\n};\n\ntype MappedAzureConfig = {\n  azureOptions: AzureOptions;\n  baseURL?: string;\n  headers?: Record<string, string>;\n  serverless?: boolean;\n};\n\nexport function mapModelToAzureConfig({\n  modelName,\n  modelGroupMap,\n  groupMap,\n}: Omit<TValidatedAzureConfig, 'modelNames'> & {\n  modelName: string;\n}): MappedAzureConfig {\n  const modelConfig = modelGroupMap[modelName];\n  if (!modelConfig) {\n    throw new Error(`Model named \"${modelName}\" not found in configuration.`);\n  }\n\n  const groupConfig = groupMap[modelConfig.group];\n  if (!groupConfig) {\n    throw new Error(\n      `Group \"${modelConfig.group}\" for model \"${modelName}\" not found in configuration.`,\n    );\n  }\n\n  const instanceName = groupConfig.instanceName ?? '';\n\n  if (!instanceName && groupConfig.serverless !== true) {\n    throw new Error(\n      `Group \"${modelConfig.group}\" is missing an instanceName for non-serverless configuration.`,\n    );\n  }\n\n  const baseURL = groupConfig.baseURL ?? '';\n  if (groupConfig.serverless === true && !baseURL) {\n    throw new Error(\n      `Group \"${modelConfig.group}\" is missing the required base URL for serverless configuration.`,\n    );\n  }\n\n  if (groupConfig.serverless === true) {\n    const result: MappedAzureConfig = {\n      azureOptions: {\n        azureOpenAIApiVersion: extractEnvVariable(groupConfig.version ?? ''),\n        azureOpenAIApiKey: extractEnvVariable(groupConfig.apiKey),\n      },\n      baseURL: extractEnvVariable(baseURL),\n      serverless: true,\n    };\n\n    const apiKeyValue = result.azureOptions.azureOpenAIApiKey;\n    if (typeof apiKeyValue === 'string' && envVarRegex.test(apiKeyValue)) {\n      throw new Error(`Azure configuration environment variable \"${apiKeyValue}\" was not found.`);\n    }\n\n    if (groupConfig.additionalHeaders) {\n      result.headers = groupConfig.additionalHeaders;\n    }\n\n    return result;\n  }\n\n  if (!instanceName) {\n    throw new Error(\n      `Group \"${modelConfig.group}\" is missing an instanceName for non-serverless configuration.`,\n    );\n  }\n\n  const modelDetails = groupConfig.models[modelName];\n  const { deploymentName = '', version = '' } =\n    typeof modelDetails === 'object'\n      ? {\n        deploymentName: modelDetails.deploymentName ?? groupConfig.deploymentName,\n        version: modelDetails.version ?? groupConfig.version,\n      }\n      : {\n        deploymentName: groupConfig.deploymentName,\n        version: groupConfig.version,\n      };\n\n  if (!deploymentName || !version) {\n    throw new Error(\n      `Model \"${modelName}\" in group \"${modelConfig.group}\" is missing a deploymentName (\"${deploymentName}\") or version (\"${version}\").`,\n    );\n  }\n\n  const azureOptions: AzureOptions = {\n    azureOpenAIApiKey: extractEnvVariable(groupConfig.apiKey),\n    azureOpenAIApiInstanceName: extractEnvVariable(instanceName),\n    azureOpenAIApiDeploymentName: extractEnvVariable(deploymentName),\n    azureOpenAIApiVersion: extractEnvVariable(version),\n  };\n\n  for (const value of Object.values(azureOptions)) {\n    if (typeof value === 'string' && envVarRegex.test(value)) {\n      throw new Error(`Azure configuration environment variable \"${value}\" was not found.`);\n    }\n  }\n\n  const result: MappedAzureConfig = { azureOptions };\n\n  if (baseURL) {\n    result.baseURL = extractEnvVariable(baseURL);\n  }\n\n  if (groupConfig.additionalHeaders) {\n    result.headers = groupConfig.additionalHeaders;\n  }\n\n  return result;\n}\n\nexport function mapGroupToAzureConfig({\n  groupName,\n  groupMap,\n}: {\n  groupName: string;\n  groupMap: TAzureGroupMap;\n}): MappedAzureConfig {\n  const groupConfig = groupMap[groupName];\n  if (!groupConfig) {\n    throw new Error(`Group named \"${groupName}\" not found in configuration.`);\n  }\n\n  const instanceName = groupConfig.instanceName ?? '';\n  const serverless = groupConfig.serverless ?? false;\n  const baseURL = groupConfig.baseURL ?? '';\n\n  if (!instanceName && !serverless) {\n    throw new Error(\n      `Group \"${groupName}\" is missing an instanceName for non-serverless configuration.`,\n    );\n  }\n\n  if (serverless && !baseURL) {\n    throw new Error(\n      `Group \"${groupName}\" is missing the required base URL for serverless configuration.`,\n    );\n  }\n\n  const models = Object.keys(groupConfig.models);\n  if (models.length === 0) {\n    throw new Error(`Group \"${groupName}\" does not have any models configured.`);\n  }\n\n  // Use the first available model in the group\n  const firstModelName = models[0];\n  const modelDetails = groupConfig.models[firstModelName];\n\n  const azureOptions: AzureOptions = {\n    azureOpenAIApiVersion: extractEnvVariable(groupConfig.version ?? ''),\n    azureOpenAIApiKey: extractEnvVariable(groupConfig.apiKey),\n    azureOpenAIApiInstanceName: extractEnvVariable(instanceName),\n    // DeploymentName and Version set below\n  };\n\n  if (serverless) {\n    return {\n      azureOptions,\n      baseURL: extractEnvVariable(baseURL),\n      serverless: true,\n      ...(groupConfig.additionalHeaders && { headers: groupConfig.additionalHeaders }),\n    };\n  }\n\n  const { deploymentName = '', version = '' } =\n    typeof modelDetails === 'object'\n      ? {\n        deploymentName: modelDetails.deploymentName ?? groupConfig.deploymentName,\n        version: modelDetails.version ?? groupConfig.version,\n      }\n      : {\n        deploymentName: groupConfig.deploymentName,\n        version: groupConfig.version,\n      };\n\n  if (!deploymentName || !version) {\n    throw new Error(\n      `Model \"${firstModelName}\" in group \"${groupName}\" or the group itself is missing a deploymentName (\"${deploymentName}\") or version (\"${version}\").`,\n    );\n  }\n\n  azureOptions.azureOpenAIApiDeploymentName = extractEnvVariable(deploymentName);\n  azureOptions.azureOpenAIApiVersion = extractEnvVariable(version);\n\n  const result: MappedAzureConfig = { azureOptions };\n\n  if (baseURL) {\n    result.baseURL = extractEnvVariable(baseURL);\n  }\n\n  if (groupConfig.additionalHeaders) {\n    result.headers = groupConfig.additionalHeaders;\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/bedrock.ts",
    "content": "import { z } from 'zod';\nimport * as s from './schemas';\n\nexport const bedrockInputSchema = s.tConversationSchema\n  .pick({\n    /* LibreChat params; optionType: 'conversation' */\n    modelLabel: true,\n    promptPrefix: true,\n    resendFiles: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxOutputTokens: true,\n    maxContextTokens: true,\n    artifacts: true,\n    /* Bedrock params; optionType: 'model' */\n    region: true,\n    system: true,\n    model: true,\n    maxTokens: true,\n    temperature: true,\n    topP: true,\n    stop: true,\n    /* Catch-all fields */\n    topK: true,\n    additionalModelRequestFields: true,\n  })\n  .transform((obj) => s.removeNullishValues(obj))\n  .catch(() => ({}));\n\nexport type BedrockConverseInput = z.infer<typeof bedrockInputSchema>;\n\nexport const bedrockInputParser = s.tConversationSchema\n  .pick({\n    /* LibreChat params; optionType: 'conversation' */\n    modelLabel: true,\n    promptPrefix: true,\n    resendFiles: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    artifacts: true,\n    maxOutputTokens: true,\n    maxContextTokens: true,\n    /* Bedrock params; optionType: 'model' */\n    region: true,\n    model: true,\n    maxTokens: true,\n    temperature: true,\n    topP: true,\n    stop: true,\n    /* Catch-all fields */\n    topK: true,\n    additionalModelRequestFields: true,\n  })\n  .catchall(z.any())\n  .transform((data) => {\n    const knownKeys = [\n      'modelLabel',\n      'promptPrefix',\n      'resendFiles',\n      'iconURL',\n      'greeting',\n      'spec',\n      'maxOutputTokens',\n      'artifacts',\n      'additionalModelRequestFields',\n      'region',\n      'model',\n      'maxTokens',\n      'temperature',\n      'topP',\n      'stop',\n    ];\n\n    const additionalFields: Record<string, unknown> = {};\n    const typedData = data as Record<string, unknown>;\n\n    Object.entries(typedData).forEach(([key, value]) => {\n      if (!knownKeys.includes(key)) {\n        if (key === 'topK') {\n          additionalFields['top_k'] = value;\n        } else {\n          additionalFields[key] = value;\n        }\n        delete typedData[key];\n      }\n    });\n\n    if (Object.keys(additionalFields).length > 0) {\n      typedData.additionalModelRequestFields = {\n        ...((typedData.additionalModelRequestFields as Record<string, unknown> | undefined) || {}),\n        ...additionalFields,\n      };\n    }\n\n    if (typedData.maxOutputTokens !== undefined) {\n      typedData.maxTokens = typedData.maxOutputTokens;\n    } else if (typedData.maxTokens !== undefined) {\n      typedData.maxOutputTokens = typedData.maxTokens;\n    }\n\n    return s.removeNullishValues(typedData) as BedrockConverseInput;\n  })\n  .catch(() => ({}));\n\nexport const bedrockOutputParser = (data: Record<string, unknown>) => {\n  const knownKeys = [...Object.keys(s.tConversationSchema.shape), 'topK', 'top_k'];\n  const result: Record<string, unknown> = {};\n\n  // Extract known fields from the root level\n  Object.entries(data).forEach(([key, value]) => {\n    if (knownKeys.includes(key)) {\n      result[key] = value;\n    }\n  });\n\n  // Extract known fields from additionalModelRequestFields\n  if (\n    typeof data.additionalModelRequestFields === 'object' &&\n    data.additionalModelRequestFields !== null\n  ) {\n    Object.entries(data.additionalModelRequestFields as Record<string, unknown>).forEach(\n      ([key, value]) => {\n        if (knownKeys.includes(key)) {\n          if (key === 'top_k') {\n            result['topK'] = value;\n          } else {\n            result[key] = value;\n          }\n        }\n      },\n    );\n  }\n\n  // Handle maxTokens and maxOutputTokens\n  if (result.maxTokens !== undefined && result.maxOutputTokens === undefined) {\n    result.maxOutputTokens = result.maxTokens;\n  } else if (result.maxOutputTokens !== undefined && result.maxTokens === undefined) {\n    result.maxTokens = result.maxOutputTokens;\n  }\n\n  // Remove additionalModelRequestFields from the result\n  delete result.additionalModelRequestFields;\n\n  return result;\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/config.ts",
    "content": "import { z } from 'zod';\nimport type { ZodError } from 'zod';\nimport type { TModelsConfig } from './types';\nimport { EModelEndpoint, eModelEndpointSchema } from './schemas';\nimport { specsConfigSchema, TSpecsConfig } from './models';\nimport { fileConfigSchema } from './file-config';\nimport { FileSources } from './types/files';\nimport { MCPServersSchema } from './mcp';\n\nexport const defaultSocialLogins = ['google', 'facebook', 'openid', 'github', 'discord'];\n\nexport const defaultRetrievalModels = [\n  'gpt-4o',\n  'o1-preview-2024-09-12',\n  'o1-preview',\n  'o1-mini-2024-09-12',\n  'o1-mini',\n  'o3-mini',\n  'chatgpt-4o-latest',\n  'gpt-4o-2024-05-13',\n  'gpt-4o-2024-08-06',\n  'gpt-4o-mini',\n  'gpt-4o-mini-2024-07-18',\n  'gpt-4-turbo-preview',\n  'gpt-3.5-turbo-0125',\n  'gpt-4-0125-preview',\n  'gpt-4-1106-preview',\n  'gpt-3.5-turbo-1106',\n  'gpt-3.5-turbo-0125',\n  'gpt-4-turbo',\n  'gpt-4-0125',\n  'gpt-4-1106',\n];\n\nexport const excludedKeys = new Set([\n  'conversationId',\n  'title',\n  'iconURL',\n  'greeting',\n  'endpoint',\n  'endpointType',\n  'createdAt',\n  'updatedAt',\n  'expiredAt',\n  'messages',\n  'isArchived',\n  'tags',\n  'user',\n  '__v',\n  '_id',\n  'tools',\n  'model',\n  'files',\n]);\n\nexport enum SettingsViews {\n  default = 'default',\n  advanced = 'advanced',\n}\n\nexport const fileSourceSchema = z.nativeEnum(FileSources);\n\n// Helper type to extract the shape of the Zod object schema\ntype SchemaShape<T> = T extends z.ZodObject<infer U> ? U : never;\n\n// Helper type to determine the default value or undefined based on whether the field has a default\ntype DefaultValue<T> =\n  T extends z.ZodDefault<z.ZodTypeAny> ? ReturnType<T['_def']['defaultValue']> : undefined;\n\n// Extract default values or undefined from the schema shape\ntype ExtractDefaults<T> = {\n  [P in keyof T]: DefaultValue<T[P]>;\n};\n\nexport type SchemaDefaults<T> = ExtractDefaults<SchemaShape<T>>;\n\nexport type TConfigDefaults = SchemaDefaults<typeof configSchema>;\n\nexport function getSchemaDefaults<Schema extends z.AnyZodObject>(\n  schema: Schema,\n): ExtractDefaults<SchemaShape<Schema>> {\n  const shape = schema.shape;\n  const entries = Object.entries(shape).map(([key, value]) => {\n    if (value instanceof z.ZodDefault) {\n      // Extract default value if it exists\n      return [key, value._def.defaultValue()];\n    }\n    return [key, undefined];\n  });\n\n  // Create the object with the right types\n  return Object.fromEntries(entries) as ExtractDefaults<SchemaShape<Schema>>;\n}\n\nexport const modelConfigSchema = z\n  .object({\n    deploymentName: z.string().optional(),\n    version: z.string().optional(),\n    assistants: z.boolean().optional(),\n  })\n  .or(z.boolean());\n\nexport type TAzureModelConfig = z.infer<typeof modelConfigSchema>;\n\nexport const azureBaseSchema = z.object({\n  apiKey: z.string(),\n  serverless: z.boolean().optional(),\n  instanceName: z.string().optional(),\n  deploymentName: z.string().optional(),\n  assistants: z.boolean().optional(),\n  addParams: z.record(z.any()).optional(),\n  dropParams: z.array(z.string()).optional(),\n  forcePrompt: z.boolean().optional(),\n  version: z.string().optional(),\n  baseURL: z.string().optional(),\n  additionalHeaders: z.record(z.any()).optional(),\n});\n\nexport type TAzureBaseSchema = z.infer<typeof azureBaseSchema>;\n\nexport const azureGroupSchema = z\n  .object({\n    group: z.string(),\n    models: z.record(z.string(), modelConfigSchema),\n  })\n  .required()\n  .and(azureBaseSchema);\n\nexport const azureGroupConfigsSchema = z.array(azureGroupSchema).min(1);\nexport type TAzureGroup = z.infer<typeof azureGroupSchema>;\nexport type TAzureGroups = z.infer<typeof azureGroupConfigsSchema>;\nexport type TAzureModelMapSchema = {\n  // deploymentName?: string;\n  // version?: string;\n  group: string;\n};\n\nexport type TAzureModelGroupMap = Record<string, TAzureModelMapSchema | undefined>;\nexport type TAzureGroupMap = Record<\n  string,\n  (TAzureBaseSchema & { models: Record<string, TAzureModelConfig | undefined> }) | undefined\n>;\n\nexport type TValidatedAzureConfig = {\n  modelNames: string[];\n  modelGroupMap: TAzureModelGroupMap;\n  groupMap: TAzureGroupMap;\n};\n\nexport type TAzureConfigValidationResult = TValidatedAzureConfig & {\n  isValid: boolean;\n  errors: (ZodError | string)[];\n};\n\nexport enum Capabilities {\n  code_interpreter = 'code_interpreter',\n  image_vision = 'image_vision',\n  retrieval = 'retrieval',\n  actions = 'actions',\n  tools = 'tools',\n}\n\nexport enum AgentCapabilities {\n  hide_sequential_outputs = 'hide_sequential_outputs',\n  end_after_tools = 'end_after_tools',\n  execute_code = 'execute_code',\n  file_search = 'file_search',\n  artifacts = 'artifacts',\n  actions = 'actions',\n  tools = 'tools',\n}\n\nexport const defaultAssistantsVersion = {\n  [EModelEndpoint.assistants]: 2,\n  [EModelEndpoint.azureAssistants]: 1,\n};\n\nexport const baseEndpointSchema = z.object({\n  streamRate: z.number().optional(),\n  baseURL: z.string().optional(),\n  titlePrompt: z.string().optional(),\n  titleModel: z.string().optional(),\n});\n\nexport type TBaseEndpoint = z.infer<typeof baseEndpointSchema>;\n\nexport const bedrockEndpointSchema = baseEndpointSchema.merge(\n  z.object({\n    availableRegions: z.array(z.string()).optional(),\n  }),\n);\n\nexport const assistantEndpointSchema = baseEndpointSchema.merge(\n  z.object({\n    /* assistants specific */\n    disableBuilder: z.boolean().optional(),\n    pollIntervalMs: z.number().optional(),\n    timeoutMs: z.number().optional(),\n    version: z.union([z.string(), z.number()]).default(2),\n    supportedIds: z.array(z.string()).min(1).optional(),\n    excludedIds: z.array(z.string()).min(1).optional(),\n    privateAssistants: z.boolean().optional(),\n    retrievalModels: z.array(z.string()).min(1).optional().default(defaultRetrievalModels),\n    capabilities: z\n      .array(z.nativeEnum(Capabilities))\n      .optional()\n      .default([\n        Capabilities.code_interpreter,\n        Capabilities.image_vision,\n        Capabilities.retrieval,\n        Capabilities.actions,\n        Capabilities.tools,\n      ]),\n    /* general */\n    apiKey: z.string().optional(),\n    models: z\n      .object({\n        default: z.array(z.string()).min(1),\n        fetch: z.boolean().optional(),\n        userIdQuery: z.boolean().optional(),\n      })\n      .optional(),\n    titleConvo: z.boolean().optional(),\n    titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n    headers: z.record(z.any()).optional(),\n  }),\n);\n\nexport type TAssistantEndpoint = z.infer<typeof assistantEndpointSchema>;\n\nexport const agentsEndpointSChema = baseEndpointSchema.merge(\n  z.object({\n    /* agents specific */\n    recursionLimit: z.number().optional(),\n    disableBuilder: z.boolean().optional(),\n    capabilities: z\n      .array(z.nativeEnum(AgentCapabilities))\n      .optional()\n      .default([\n        AgentCapabilities.execute_code,\n        AgentCapabilities.file_search,\n        AgentCapabilities.artifacts,\n        AgentCapabilities.actions,\n        AgentCapabilities.tools,\n      ]),\n  }),\n);\n\nexport type TAgentsEndpoint = z.infer<typeof agentsEndpointSChema>;\n\nexport const endpointSchema = baseEndpointSchema.merge(\n  z.object({\n    name: z.string().refine((value) => !eModelEndpointSchema.safeParse(value).success, {\n      message: `Value cannot be one of the default endpoint (EModelEndpoint) values: ${Object.values(\n        EModelEndpoint,\n      ).join(', ')}`,\n    }),\n    apiKey: z.string(),\n    baseURL: z.string(),\n    models: z.object({\n      default: z.array(z.string()).min(1),\n      fetch: z.boolean().optional(),\n      userIdQuery: z.boolean().optional(),\n    }),\n    titleConvo: z.boolean().optional(),\n    titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),\n    summarize: z.boolean().optional(),\n    summaryModel: z.string().optional(),\n    forcePrompt: z.boolean().optional(),\n    modelDisplayLabel: z.string().optional(),\n    headers: z.record(z.any()).optional(),\n    addParams: z.record(z.any()).optional(),\n    dropParams: z.array(z.string()).optional(),\n    customOrder: z.number().optional(),\n    directEndpoint: z.boolean().optional(),\n    titleMessageRole: z.string().optional(),\n  }),\n);\n\nexport type TEndpoint = z.infer<typeof endpointSchema>;\n\nexport const azureEndpointSchema = z\n  .object({\n    groups: azureGroupConfigsSchema,\n    plugins: z.boolean().optional(),\n    assistants: z.boolean().optional(),\n  })\n  .and(\n    endpointSchema\n      .pick({\n        streamRate: true,\n        titleConvo: true,\n        titleMethod: true,\n        titleModel: true,\n        summarize: true,\n        summaryModel: true,\n        customOrder: true,\n      })\n      .partial(),\n  );\n\nexport type TAzureConfig = Omit<z.infer<typeof azureEndpointSchema>, 'groups'> &\n  TAzureConfigValidationResult;\n\nconst ttsOpenaiSchema = z.object({\n  url: z.string().optional(),\n  apiKey: z.string(),\n  model: z.string(),\n  voices: z.array(z.string()),\n});\n\nconst ttsAzureOpenAISchema = z.object({\n  instanceName: z.string(),\n  apiKey: z.string(),\n  deploymentName: z.string(),\n  apiVersion: z.string(),\n  model: z.string(),\n  voices: z.array(z.string()),\n});\n\nconst ttsElevenLabsSchema = z.object({\n  url: z.string().optional(),\n  websocketUrl: z.string().optional(),\n  apiKey: z.string(),\n  model: z.string(),\n  voices: z.array(z.string()),\n  voice_settings: z\n    .object({\n      similarity_boost: z.number().optional(),\n      stability: z.number().optional(),\n      style: z.number().optional(),\n      use_speaker_boost: z.boolean().optional(),\n    })\n    .optional(),\n  pronunciation_dictionary_locators: z.array(z.string()).optional(),\n});\n\nconst ttsLocalaiSchema = z.object({\n  url: z.string(),\n  apiKey: z.string().optional(),\n  voices: z.array(z.string()),\n  backend: z.string(),\n});\n\nconst ttsSchema = z.object({\n  openai: ttsOpenaiSchema.optional(),\n  azureOpenAI: ttsAzureOpenAISchema.optional(),\n  elevenlabs: ttsElevenLabsSchema.optional(),\n  localai: ttsLocalaiSchema.optional(),\n});\n\nconst sttOpenaiSchema = z.object({\n  url: z.string().optional(),\n  apiKey: z.string(),\n  model: z.string(),\n});\n\nconst sttAzureOpenAISchema = z.object({\n  instanceName: z.string(),\n  apiKey: z.string(),\n  deploymentName: z.string(),\n  apiVersion: z.string(),\n});\n\nconst sttSchema = z.object({\n  openai: sttOpenaiSchema.optional(),\n  azureOpenAI: sttAzureOpenAISchema.optional(),\n});\n\nconst speechTab = z\n  .object({\n    conversationMode: z.boolean().optional(),\n    advancedMode: z.boolean().optional(),\n    speechToText: z\n      .boolean()\n      .optional()\n      .or(\n        z.object({\n          engineSTT: z.string().optional(),\n          languageSTT: z.string().optional(),\n          autoTranscribeAudio: z.boolean().optional(),\n          decibelValue: z.number().optional(),\n          autoSendText: z.number().optional(),\n        }),\n      )\n      .optional(),\n    textToSpeech: z\n      .boolean()\n      .optional()\n      .or(\n        z.object({\n          engineTTS: z.string().optional(),\n          voice: z.string().optional(),\n          languageTTS: z.string().optional(),\n          automaticPlayback: z.boolean().optional(),\n          playbackRate: z.number().optional(),\n          cacheTTS: z.boolean().optional(),\n        }),\n      )\n      .optional(),\n  })\n  .optional();\n\nexport enum RateLimitPrefix {\n  FILE_UPLOAD = 'FILE_UPLOAD',\n  IMPORT = 'IMPORT',\n  TTS = 'TTS',\n  STT = 'STT',\n}\n\nexport const rateLimitSchema = z.object({\n  fileUploads: z\n    .object({\n      ipMax: z.number().optional(),\n      ipWindowInMinutes: z.number().optional(),\n      userMax: z.number().optional(),\n      userWindowInMinutes: z.number().optional(),\n    })\n    .optional(),\n  conversationsImport: z\n    .object({\n      ipMax: z.number().optional(),\n      ipWindowInMinutes: z.number().optional(),\n      userMax: z.number().optional(),\n      userWindowInMinutes: z.number().optional(),\n    })\n    .optional(),\n  tts: z\n    .object({\n      ipMax: z.number().optional(),\n      ipWindowInMinutes: z.number().optional(),\n      userMax: z.number().optional(),\n      userWindowInMinutes: z.number().optional(),\n    })\n    .optional(),\n  stt: z\n    .object({\n      ipMax: z.number().optional(),\n      ipWindowInMinutes: z.number().optional(),\n      userMax: z.number().optional(),\n      userWindowInMinutes: z.number().optional(),\n    })\n    .optional(),\n});\n\nexport enum EImageOutputType {\n  PNG = 'png',\n  WEBP = 'webp',\n  JPEG = 'jpeg',\n}\n\nconst termsOfServiceSchema = z.object({\n  externalUrl: z.string().optional(),\n  openNewTab: z.boolean().optional(),\n  modalAcceptance: z.boolean().optional(),\n  modalTitle: z.string().optional(),\n  modalContent: z.string().or(z.array(z.string())).optional(),\n});\n\nexport type TTermsOfService = z.infer<typeof termsOfServiceSchema>;\n\nexport const intefaceSchema = z\n  .object({\n    privacyPolicy: z\n      .object({\n        externalUrl: z.string().optional(),\n        openNewTab: z.boolean().optional(),\n      })\n      .optional(),\n    termsOfService: termsOfServiceSchema.optional(),\n    customWelcome: z.string().optional(),\n    endpointsMenu: z.boolean().optional(),\n    modelSelect: z.boolean().optional(),\n    parameters: z.boolean().optional(),\n    sidePanel: z.boolean().optional(),\n    multiConvo: z.boolean().optional(),\n    bookmarks: z.boolean().optional(),\n    presets: z.boolean().optional(),\n    prompts: z.boolean().optional(),\n    agents: z.boolean().optional(),\n    temporaryChat: z.boolean().optional(),\n    runCode: z.boolean().optional(),\n  })\n  .default({\n    endpointsMenu: true,\n    modelSelect: true,\n    parameters: true,\n    sidePanel: true,\n    presets: true,\n    multiConvo: true,\n    bookmarks: true,\n    prompts: true,\n    agents: true,\n    temporaryChat: true,\n    runCode: true,\n  });\n\nexport type TInterfaceConfig = z.infer<typeof intefaceSchema>;\n\nexport type TStartupConfig = {\n  appTitle: string;\n  socialLogins?: string[];\n  interface?: TInterfaceConfig;\n  discordLoginEnabled: boolean;\n  facebookLoginEnabled: boolean;\n  githubLoginEnabled: boolean;\n  googleLoginEnabled: boolean;\n  openidLoginEnabled: boolean;\n  appleLoginEnabled: boolean;\n  openidLabel: string;\n  openidImageUrl: string;\n  /** LDAP Auth Configuration */\n  ldap?: {\n    /** LDAP enabled */\n    enabled: boolean;\n    /** Whether LDAP uses username vs. email */\n    username?: boolean;\n  };\n  serverDomain: string;\n  emailLoginEnabled: boolean;\n  registrationEnabled: boolean;\n  socialLoginEnabled: boolean;\n  passwordResetEnabled: boolean;\n  emailEnabled: boolean;\n  checkBalance: boolean;\n  showBirthdayIcon: boolean;\n  helpAndFaqURL: string;\n  customFooter?: string;\n  modelSpecs?: TSpecsConfig;\n  sharedLinksEnabled: boolean;\n  publicSharedLinksEnabled: boolean;\n  analyticsGtmId?: string;\n  instanceProjectId: string;\n};\n\nexport type BsConfig = {\n  applicationCenterWelcomeMessage: string;\n  applicationCenterDescription: string;\n  enable_etl4lm: boolean;\n  sidebarIcon: {\n    enabled: boolean;\n    image: string;\n  };\n  assistantIcon: {\n    enabled: boolean;\n    image: string;\n  };\n  sidebarSlogan: string;\n  welcomeMessage: string;\n  functionDescription: string;\n  inputPlaceholder: string;\n  models: Array<{\n    key: string;\n    id: string;\n    name: string;\n    displayName: string;\n  }>;\n  voiceInput: {\n    enabled: boolean;\n    model: string;\n  };\n  webSearch: {\n    enabled: boolean;\n    tool: string;\n    bingKey: string;\n    bingUrl: string;\n    prompt: string;\n  };\n  knowledgeBase: {\n    enabled: boolean;\n    prompt: string;\n  };\n  fileUpload: {\n    enabled: boolean;\n    prompt: string;\n  };\n  host: '',\n  linsight_invitation_code: boolean\n  linsight_cache_dir: string\n  waiting_list_url: string\n};\n\nexport const configSchema = z.object({\n  version: z.string(),\n  cache: z.boolean().default(true),\n  secureImageLinks: z.boolean().optional(),\n  imageOutputType: z.nativeEnum(EImageOutputType).default(EImageOutputType.PNG),\n  includedTools: z.array(z.string()).optional(),\n  filteredTools: z.array(z.string()).optional(),\n  mcpServers: MCPServersSchema.optional(),\n  interface: intefaceSchema,\n  fileStrategy: fileSourceSchema.default(FileSources.local),\n  actions: z\n    .object({\n      allowedDomains: z.array(z.string()).optional(),\n    })\n    .optional(),\n  registration: z\n    .object({\n      socialLogins: z.array(z.string()).optional(),\n      allowedDomains: z.array(z.string()).optional(),\n    })\n    .default({ socialLogins: defaultSocialLogins }),\n  speech: z\n    .object({\n      tts: ttsSchema.optional(),\n      stt: sttSchema.optional(),\n      speechTab: speechTab.optional(),\n    })\n    .optional(),\n  rateLimits: rateLimitSchema.optional(),\n  fileConfig: fileConfigSchema.optional(),\n  modelSpecs: specsConfigSchema.optional(),\n  endpoints: z\n    .object({\n      all: baseEndpointSchema.optional(),\n      [EModelEndpoint.openAI]: baseEndpointSchema.optional(),\n      [EModelEndpoint.google]: baseEndpointSchema.optional(),\n      [EModelEndpoint.anthropic]: baseEndpointSchema.optional(),\n      [EModelEndpoint.gptPlugins]: baseEndpointSchema.optional(),\n      [EModelEndpoint.azureOpenAI]: azureEndpointSchema.optional(),\n      [EModelEndpoint.azureAssistants]: assistantEndpointSchema.optional(),\n      [EModelEndpoint.assistants]: assistantEndpointSchema.optional(),\n      [EModelEndpoint.agents]: agentsEndpointSChema.optional(),\n      [EModelEndpoint.custom]: z.array(endpointSchema.partial()).optional(),\n      [EModelEndpoint.bedrock]: baseEndpointSchema.optional(),\n    })\n    .strict()\n    .refine((data) => Object.keys(data).length > 0, {\n      message: 'At least one `endpoints` field must be provided.',\n    })\n    .optional(),\n});\n\nexport const getConfigDefaults = () => getSchemaDefaults(configSchema);\n\nexport type TCustomConfig = z.infer<typeof configSchema>;\n\nexport type TProviderSchema =\n  | z.infer<typeof ttsOpenaiSchema>\n  | z.infer<typeof ttsElevenLabsSchema>\n  | z.infer<typeof ttsLocalaiSchema>\n  | undefined;\n\nexport enum KnownEndpoints {\n  anyscale = 'anyscale',\n  apipie = 'apipie',\n  cohere = 'cohere',\n  fireworks = 'fireworks',\n  deepseek = 'deepseek',\n  groq = 'groq',\n  huggingface = 'huggingface',\n  mistral = 'mistral',\n  mlx = 'mlx',\n  ollama = 'ollama',\n  openrouter = 'openrouter',\n  perplexity = 'perplexity',\n  shuttleai = 'shuttleai',\n  'together.ai' = 'together.ai',\n  unify = 'unify',\n  xai = 'xai',\n}\n\nexport enum FetchTokenConfig {\n  openrouter = KnownEndpoints.openrouter,\n}\n\nexport const defaultEndpoints: EModelEndpoint[] = [\n  EModelEndpoint.openAI,\n  EModelEndpoint.assistants,\n  EModelEndpoint.azureAssistants,\n  EModelEndpoint.azureOpenAI,\n  EModelEndpoint.agents,\n  EModelEndpoint.chatGPTBrowser,\n  EModelEndpoint.gptPlugins,\n  EModelEndpoint.google,\n  EModelEndpoint.anthropic,\n  EModelEndpoint.custom,\n  EModelEndpoint.bedrock,\n];\n\nexport const alternateName = {\n  [EModelEndpoint.openAI]: 'OpenAI',\n  [EModelEndpoint.assistants]: 'Assistants',\n  [EModelEndpoint.agents]: 'Agents',\n  [EModelEndpoint.azureAssistants]: 'Azure Assistants',\n  [EModelEndpoint.azureOpenAI]: 'Azure OpenAI',\n  [EModelEndpoint.chatGPTBrowser]: 'ChatGPT',\n  [EModelEndpoint.gptPlugins]: 'Plugins',\n  [EModelEndpoint.google]: 'Google',\n  [EModelEndpoint.anthropic]: 'Anthropic',\n  [EModelEndpoint.custom]: 'Custom',\n  [EModelEndpoint.bedrock]: 'AWS Bedrock',\n  [KnownEndpoints.ollama]: 'Ollama',\n  [KnownEndpoints.deepseek]: 'DeepSeek',\n  [KnownEndpoints.xai]: 'xAI',\n};\n\nconst sharedOpenAIModels = [\n  'gpt-4o-mini',\n  'gpt-4o',\n  'gpt-4.5-preview',\n  'gpt-4.5-preview-2025-02-27',\n  'gpt-3.5-turbo',\n  'gpt-3.5-turbo-0125',\n  'gpt-4-turbo',\n  'gpt-4-turbo-2024-04-09',\n  'gpt-4-0125-preview',\n  'gpt-4-turbo-preview',\n  'gpt-4-1106-preview',\n  'gpt-3.5-turbo-1106',\n  'gpt-3.5-turbo-16k-0613',\n  'gpt-3.5-turbo-16k',\n  'gpt-4',\n  'gpt-4-0314',\n  'gpt-4-32k-0314',\n  'gpt-4-0613',\n  'gpt-3.5-turbo-0613',\n];\n\nconst sharedAnthropicModels = [\n  'claude-3-7-sonnet-latest',\n  'claude-3-7-sonnet-20250219',\n  'claude-3-5-haiku-20241022',\n  'claude-3-5-sonnet-20241022',\n  'claude-3-5-sonnet-20240620',\n  'claude-3-5-sonnet-latest',\n  'claude-3-opus-20240229',\n  'claude-3-sonnet-20240229',\n  'claude-3-haiku-20240307',\n  'claude-2.1',\n  'claude-2',\n  'claude-1.2',\n  'claude-1',\n  'claude-1-100k',\n  'claude-instant-1',\n  'claude-instant-1-100k',\n];\n\nexport const bedrockModels = [\n  'anthropic.claude-3-5-sonnet-20241022-v2:0',\n  'anthropic.claude-3-5-sonnet-20240620-v1:0',\n  'anthropic.claude-3-5-haiku-20241022-v1:0',\n  'anthropic.claude-3-haiku-20240307-v1:0',\n  'anthropic.claude-3-opus-20240229-v1:0',\n  'anthropic.claude-3-sonnet-20240229-v1:0',\n  'anthropic.claude-v2',\n  'anthropic.claude-v2:1',\n  'anthropic.claude-instant-v1',\n  // 'cohere.command-text-v14', // no conversation history\n  // 'cohere.command-light-text-v14', // no conversation history\n  'cohere.command-r-v1:0',\n  'cohere.command-r-plus-v1:0',\n  'meta.llama2-13b-chat-v1',\n  'meta.llama2-70b-chat-v1',\n  'meta.llama3-8b-instruct-v1:0',\n  'meta.llama3-70b-instruct-v1:0',\n  'meta.llama3-1-8b-instruct-v1:0',\n  'meta.llama3-1-70b-instruct-v1:0',\n  'meta.llama3-1-405b-instruct-v1:0',\n  'mistral.mistral-7b-instruct-v0:2',\n  'mistral.mixtral-8x7b-instruct-v0:1',\n  'mistral.mistral-large-2402-v1:0',\n  'mistral.mistral-large-2407-v1:0',\n  'mistral.mistral-small-2402-v1:0',\n  'ai21.jamba-instruct-v1:0',\n  // 'ai21.j2-mid-v1', // no streaming\n  // 'ai21.j2-ultra-v1', no conversation history\n  'amazon.titan-text-lite-v1',\n  'amazon.titan-text-express-v1',\n  'amazon.titan-text-premier-v1:0',\n];\n\nexport const defaultModels = {\n  [EModelEndpoint.azureAssistants]: sharedOpenAIModels,\n  [EModelEndpoint.assistants]: [...sharedOpenAIModels, 'chatgpt-4o-latest'],\n  [EModelEndpoint.agents]: sharedOpenAIModels, // TODO: Add agent models (agentsModels)\n  [EModelEndpoint.google]: [\n    // Shared Google Models between Vertex AI & Gen AI\n    // Gemini 2.0 Models\n    'gemini-2.0-flash-001',\n    'gemini-2.0-flash-exp',\n    'gemini-2.0-flash-lite',\n    'gemini-2.0-pro-exp-02-05',\n    // Gemini 1.5 Models\n    'gemini-1.5-flash-001',\n    'gemini-1.5-flash-002',\n    'gemini-1.5-pro-001',\n    'gemini-1.5-pro-002',\n    // Gemini 1.0 Models\n    'gemini-1.0-pro-001',\n  ],\n  [EModelEndpoint.anthropic]: sharedAnthropicModels,\n  [EModelEndpoint.openAI]: [\n    ...sharedOpenAIModels,\n    'chatgpt-4o-latest',\n    'gpt-4-vision-preview',\n    'gpt-3.5-turbo-instruct-0914',\n    'gpt-3.5-turbo-instruct',\n  ],\n  [EModelEndpoint.bedrock]: bedrockModels,\n};\n\nconst fitlerAssistantModels = (str: string) => {\n  return /gpt-4|gpt-3\\\\.5/i.test(str) && !/vision|instruct/i.test(str);\n};\n\nconst openAIModels = defaultModels[EModelEndpoint.openAI];\n\nexport const initialModelsConfig: TModelsConfig = {\n  initial: [],\n  [EModelEndpoint.openAI]: openAIModels,\n  [EModelEndpoint.assistants]: openAIModels.filter(fitlerAssistantModels),\n  [EModelEndpoint.agents]: openAIModels, // TODO: Add agent models (agentsModels)\n  [EModelEndpoint.gptPlugins]: openAIModels,\n  [EModelEndpoint.azureOpenAI]: openAIModels,\n  [EModelEndpoint.chatGPTBrowser]: ['text-davinci-002-render-sha'],\n  [EModelEndpoint.google]: defaultModels[EModelEndpoint.google],\n  [EModelEndpoint.anthropic]: defaultModels[EModelEndpoint.anthropic],\n  [EModelEndpoint.bedrock]: defaultModels[EModelEndpoint.bedrock],\n};\n\nexport const EndpointURLs: { [key in EModelEndpoint]: string } = {\n  [EModelEndpoint.openAI]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.openAI}`,\n  [EModelEndpoint.google]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.google}`,\n  [EModelEndpoint.custom]: `${__APP_ENV__.BASE_URL}/api/v1/workstation/chat/completions`,\n  [EModelEndpoint.anthropic]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.anthropic}`,\n  [EModelEndpoint.gptPlugins]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.gptPlugins}`,\n  [EModelEndpoint.azureOpenAI]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.azureOpenAI}`,\n  [EModelEndpoint.chatGPTBrowser]: `${__APP_ENV__.BASE_URL}/api/ask/${EModelEndpoint.chatGPTBrowser}`,\n  [EModelEndpoint.azureAssistants]: `${__APP_ENV__.BASE_URL}/api/assistants/v1/chat`,\n  [EModelEndpoint.assistants]: `${__APP_ENV__.BASE_URL}/api/assistants/v2/chat`,\n  [EModelEndpoint.agents]: `${__APP_ENV__.BASE_URL}/api/${EModelEndpoint.agents}/chat`,\n  [EModelEndpoint.bedrock]: `${__APP_ENV__.BASE_URL}/api/${EModelEndpoint.bedrock}/chat`,\n};\n\nexport const modularEndpoints = new Set<EModelEndpoint | string>([\n  EModelEndpoint.gptPlugins,\n  EModelEndpoint.anthropic,\n  EModelEndpoint.google,\n  EModelEndpoint.openAI,\n  EModelEndpoint.azureOpenAI,\n  EModelEndpoint.custom,\n  EModelEndpoint.agents,\n  EModelEndpoint.bedrock,\n]);\n\nexport const supportsBalanceCheck = {\n  [EModelEndpoint.custom]: true,\n  [EModelEndpoint.openAI]: true,\n  [EModelEndpoint.anthropic]: true,\n  [EModelEndpoint.gptPlugins]: true,\n  [EModelEndpoint.assistants]: true,\n  [EModelEndpoint.agents]: true,\n  [EModelEndpoint.azureAssistants]: true,\n  [EModelEndpoint.azureOpenAI]: true,\n  [EModelEndpoint.bedrock]: true,\n};\n\nexport const visionModels = [\n  'gpt-4.5',\n  'gpt-4o',\n  'gpt-4o-mini',\n  'o1',\n  'gpt-4-turbo',\n  'gpt-4-vision',\n  'llava',\n  'llava-13b',\n  'gemini-pro-vision',\n  'claude-3',\n  'gemini-2.0',\n  'gemini-1.5',\n  'gemini-exp',\n  'moondream',\n  'llama3.2-vision',\n  'llama-3.2-90b-vision',\n  'llama-3.2-11b-vision',\n  'llama-3-2-90b-vision',\n  'llama-3-2-11b-vision',\n];\nexport enum VisionModes {\n  generative = 'generative',\n  agents = 'agents',\n}\n\nexport function validateVisionModel({\n  model,\n  additionalModels = [],\n  availableModels,\n}: {\n  model: string;\n  additionalModels?: string[];\n  availableModels?: string[];\n}) {\n  if (!model) {\n    return false;\n  }\n\n  if (model.includes('gpt-4-turbo-preview') || model.includes('o1-mini')) {\n    return false;\n  }\n\n  if (availableModels && !availableModels.includes(model)) {\n    return false;\n  }\n\n  return visionModels.concat(additionalModels).some((visionModel) => model.includes(visionModel));\n}\n\nexport const imageGenTools = new Set(['dalle', 'dall-e', 'stable-diffusion']);\n\n/**\n * Enum for collections using infinite queries\n */\nexport enum InfiniteCollections {\n  /**\n   * Collection for Prompt Groups\n   */\n  PROMPT_GROUPS = 'promptGroups',\n  /**\n   * Collection for Shared Links\n   */\n  SHARED_LINKS = 'sharedLinks',\n}\n\n/**\n * Enum for time intervals\n */\nexport enum Time {\n  ONE_HOUR = 3600000,\n  THIRTY_MINUTES = 1800000,\n  TEN_MINUTES = 600000,\n  FIVE_MINUTES = 300000,\n  TWO_MINUTES = 120000,\n  ONE_MINUTE = 60000,\n  THIRTY_SECONDS = 30000,\n}\n\n/**\n * Enum for cache keys.\n */\nexport enum CacheKeys {\n  /**\n   * Key for the config store namespace.\n   */\n  CONFIG_STORE = 'configStore',\n  /**\n   * Key for the config store namespace.\n   */\n  ROLES = 'roles',\n  /**\n   * Key for the plugins cache.\n   */\n  PLUGINS = 'plugins',\n  /**\n   * Key for the title generation cache.\n   */\n  GEN_TITLE = 'genTitle',\n  /**\n  /**\n   * Key for the tools cache.\n   */\n  TOOLS = 'tools',\n  /**\n   * Key for the model config cache.\n   */\n  MODELS_CONFIG = 'modelsConfig',\n  /**\n   * Key for the model queries cache.\n   */\n  MODEL_QUERIES = 'modelQueries',\n  /**\n   * Key for the default startup config cache.\n   */\n  STARTUP_CONFIG = 'startupConfig',\n  /**\n   * Key for the default endpoint config cache.\n   */\n  ENDPOINT_CONFIG = 'endpointsConfig',\n  /**\n   * Key for accessing the model token config cache.\n   */\n  TOKEN_CONFIG = 'tokenConfig',\n  /**\n   * Key for the custom config cache.\n   */\n  CUSTOM_CONFIG = 'customConfig',\n  /**\n   * Key for accessing Abort Keys\n   */\n  ABORT_KEYS = 'abortKeys',\n  /**\n   * Key for the override config cache.\n   */\n  OVERRIDE_CONFIG = 'overrideConfig',\n  /**\n   * Key for the bans cache.\n   */\n  BANS = 'bans',\n  /**\n   * Key for the encoded domains cache.\n   * Used by Azure OpenAI Assistants.\n   */\n  ENCODED_DOMAINS = 'encoded_domains',\n  /**\n   * Key for the cached audio run Ids.\n   */\n  AUDIO_RUNS = 'audioRuns',\n  /**\n   * Key for in-progress messages.\n   */\n  MESSAGES = 'messages',\n  /**\n   * Key for in-progress flow states.\n   */\n  FLOWS = 'flows',\n}\n\n/**\n * Enum for violation types, used to identify, log, and cache violations.\n */\nexport enum ViolationTypes {\n  /**\n   * File Upload Violations (exceeding limit).\n   */\n  FILE_UPLOAD_LIMIT = 'file_upload_limit',\n  /**\n   * Illegal Model Request (not available).\n   */\n  ILLEGAL_MODEL_REQUEST = 'illegal_model_request',\n  /**\n   * Token Limit Violation.\n   */\n  TOKEN_BALANCE = 'token_balance',\n  /**\n   * An issued ban.\n   */\n  BAN = 'ban',\n  /**\n   * TTS Request Limit Violation.\n   */\n  TTS_LIMIT = 'tts_limit',\n  /**\n   * STT Request Limit Violation.\n   */\n  STT_LIMIT = 'stt_limit',\n  /**\n   * Reset Password Limit Violation.\n   */\n  RESET_PASSWORD_LIMIT = 'reset_password_limit',\n  /**\n   * Verify Email Limit Violation.\n   */\n  VERIFY_EMAIL_LIMIT = 'verify_email_limit',\n  /**\n   * Verify Conversation Access violation.\n   */\n  CONVO_ACCESS = 'convo_access',\n  /**\n   * Tool Call Limit Violation.\n   */\n  TOOL_CALL_LIMIT = 'tool_call_limit',\n}\n\n/**\n * Enum for error message types that are not \"violations\" as above, used to identify client-facing errors.\n */\nexport enum ErrorTypes {\n  /**\n   * No User-provided Key.\n   */\n  NO_USER_KEY = 'no_user_key',\n  /**\n   * Expired User-provided Key.\n   */\n  EXPIRED_USER_KEY = 'expired_user_key',\n  /**\n   * Invalid User-provided Key.\n   */\n  INVALID_USER_KEY = 'invalid_user_key',\n  /**\n   * No Base URL Provided.\n   */\n  NO_BASE_URL = 'no_base_url',\n  /**\n   * Moderation error\n   */\n  MODERATION = 'moderation',\n  /**\n   * Prompt exceeds max length\n   */\n  INPUT_LENGTH = 'INPUT_LENGTH',\n  /**\n   * Invalid request error, API rejected request\n   */\n  INVALID_REQUEST = 'invalid_request_error',\n  /**\n   * Invalid action request error, likely not on list of allowed domains\n   */\n  INVALID_ACTION = 'invalid_action_error',\n  /**\n   * Invalid request error, API rejected request\n   */\n  NO_SYSTEM_MESSAGES = 'no_system_messages',\n  /**\n   * Google provider returned an error\n   */\n  GOOGLE_ERROR = 'google_error',\n}\n\n/**\n * Enum for authentication keys.\n */\nexport enum AuthKeys {\n  /**\n   * Key for the Service Account to use Vertex AI.\n   */\n  GOOGLE_SERVICE_KEY = 'GOOGLE_SERVICE_KEY',\n  /**\n   * API key to use Google Generative AI.\n   *\n   * Note: this is not for Environment Variables, but to access encrypted object values.\n   */\n  GOOGLE_API_KEY = 'GOOGLE_API_KEY',\n}\n\n/**\n * Enum for Image Detail Cost.\n *\n * **Low Res Fixed Cost:** `85`\n *\n * **High Res Calculation:**\n *\n * Number of `512px` Tiles * `170` + `85` (Additional Cost)\n */\nexport enum ImageDetailCost {\n  /**\n   * Low resolution is a fixed value.\n   */\n  LOW = 85,\n  /**\n   * High resolution Cost Per Tile\n   */\n  HIGH = 170,\n  /**\n   * Additional Cost added to High Resolution Total Cost\n   */\n  // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n  ADDITIONAL = 85,\n}\n\n/**\n * Tab values for Settings Dialog\n */\nexport enum SettingsTabValues {\n  /**\n   * Tab for General Settings\n   */\n  GENERAL = 'general',\n  /**\n   * Tab for Chat Settings\n   */\n  CHAT = 'chat',\n  /**\n   * Tab for Speech Settings\n   */\n  SPEECH = 'speech',\n  /**\n   * Tab for Beta Features\n   */\n  BETA = 'beta',\n  /**\n   * Tab for Data Controls\n   */\n  DATA = 'data',\n  /**\n   * Tab for Account Settings\n   */\n  ACCOUNT = 'account',\n  /**\n   * Chat input commands\n   */\n  COMMANDS = 'commands',\n}\n\nexport enum STTProviders {\n  /**\n   * Provider for OpenAI STT\n   */\n  OPENAI = 'openai',\n  /**\n   * Provider for Microsoft Azure STT\n   */\n  AZURE_OPENAI = 'azureOpenAI',\n}\n\nexport enum TTSProviders {\n  /**\n   * Provider for OpenAI TTS\n   */\n  OPENAI = 'openai',\n  /**\n   * Provider for Microsoft Azure OpenAI TTS\n   */\n  AZURE_OPENAI = 'azureOpenAI',\n  /**\n   * Provider for ElevenLabs TTS\n   */\n  ELEVENLABS = 'elevenlabs',\n  /**\n   * Provider for LocalAI TTS\n   */\n  LOCALAI = 'localai',\n}\n\n/** Enum for app-wide constants */\nexport enum Constants {\n  /** Key for the app's version. */\n  VERSION = 'v0.7.7-rc1',\n  /** Key for the Custom Config's version (librechat.yaml). */\n  CONFIG_VERSION = '1.2.1',\n  /** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */\n  NO_PARENT = '00000000-0000-0000-0000-000000000000',\n  /** Standard value for the initial conversationId before a request is sent */\n  NEW_CONVO = 'new',\n  /** Standard value for the conversationId used for search queries */\n  SEARCH = 'search',\n  /** Fixed, encoded domain length for Azure OpenAI Assistants Function name parsing. */\n  ENCODED_DOMAIN_LENGTH = 10,\n  /** Identifier for using current_model in multi-model requests. */\n  CURRENT_MODEL = 'current_model',\n  /** Common divider for text values */\n  COMMON_DIVIDER = '__',\n  /** Max length for commands */\n  COMMANDS_MAX_LENGTH = 56,\n  /** Default Stream Rate (ms) */\n  DEFAULT_STREAM_RATE = 1,\n  /** Saved Tag */\n  SAVED_TAG = 'Saved',\n  /** Max number of Conversation starters for Agents/Assistants */\n  MAX_CONVO_STARTERS = 4,\n  /** Global/instance Project Name */\n  GLOBAL_PROJECT_NAME = 'instance',\n  /** Delimiter for MCP tools */\n  mcp_delimiter = '_mcp_',\n}\n\nexport enum LocalStorageKeys {\n  /** Key for the admin defined App Title */\n  APP_TITLE = 'appTitle',\n  /** Key for the last conversation setup. */\n  LAST_CONVO_SETUP = 'lastConversationSetup',\n  /** Key for the last selected model. */\n  LAST_MODEL = 'lastSelectedModel',\n  /** Key for the last selected tools. */\n  LAST_TOOLS = 'lastSelectedTools',\n  /** Key for the last selected spec by name*/\n  LAST_SPEC = 'lastSelectedSpec',\n  /** Key for temporary files to delete */\n  FILES_TO_DELETE = 'filesToDelete',\n  /** Prefix key for the last selected assistant ID by index */\n  ASST_ID_PREFIX = 'assistant_id__',\n  /** Prefix key for the last selected agent ID by index */\n  AGENT_ID_PREFIX = 'agent_id__',\n  /** Key for the last selected fork setting */\n  FORK_SETTING = 'forkSetting',\n  /** Key for remembering the last selected option, instead of manually selecting */\n  REMEMBER_FORK_OPTION = 'rememberDefaultFork',\n  /** Key for remembering the split at target fork option modifier */\n  FORK_SPLIT_AT_TARGET = 'splitAtTarget',\n  /** Key for saving text drafts */\n  TEXT_DRAFT = 'textDraft_',\n  /** Key for saving file drafts */\n  FILES_DRAFT = 'filesDraft_',\n  /** Key for last Selected Prompt Category */\n  LAST_PROMPT_CATEGORY = 'lastPromptCategory',\n  /** Key for rendering User Messages as Markdown */\n  ENABLE_USER_MSG_MARKDOWN = 'enableUserMsgMarkdown',\n  /** Key for displaying analysis tool code input */\n  SHOW_ANALYSIS_CODE = 'showAnalysisCode',\n}\n\nexport enum ForkOptions {\n  /** Key for direct path option */\n  DIRECT_PATH = 'directPath',\n  /** Key for including branches */\n  INCLUDE_BRANCHES = 'includeBranches',\n  /** Key for target level fork (default) */\n  TARGET_LEVEL = 'targetLevel',\n  /** Default option */\n  DEFAULT = 'default',\n}\n\n/**\n * Enum for Cohere related constants\n */\nexport enum CohereConstants {\n  /**\n   * Cohere API Endpoint, for special handling\n   */\n  API_URL = 'https://api.cohere.ai/v1',\n  /**\n   * Role for \"USER\" messages\n   */\n  ROLE_USER = 'USER',\n  /**\n   * Role for \"SYSTEM\" messages\n   */\n  ROLE_SYSTEM = 'SYSTEM',\n  /**\n   * Role for \"CHATBOT\" messages\n   */\n  ROLE_CHATBOT = 'CHATBOT',\n  /**\n   * Title message as required by Cohere\n   */\n  TITLE_MESSAGE = 'TITLE:',\n}\n\nexport enum SystemCategories {\n  ALL = 'sys__all__sys',\n  MY_PROMPTS = 'sys__my__prompts__sys',\n  NO_CATEGORY = 'sys__no__category__sys',\n  SHARED_PROMPTS = 'sys__shared__prompts__sys',\n}\n\nexport const providerEndpointMap = {\n  [EModelEndpoint.openAI]: EModelEndpoint.openAI,\n  [EModelEndpoint.bedrock]: EModelEndpoint.bedrock,\n  [EModelEndpoint.anthropic]: EModelEndpoint.anthropic,\n  [EModelEndpoint.azureOpenAI]: EModelEndpoint.azureOpenAI,\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/createPayload.ts",
    "content": "import type * as t from './types';\nimport { EndpointURLs } from './config';\nimport * as s from './schemas';\n\nexport default function createPayload(submission: t.TSubmission) {\n  const { conversation, userMessage, endpointOption, isEdited, isContinued, isTemporary } =\n    submission;\n  // const { conversationId } = s.tConvoUpdateSchema.parse(conversation);\n  const { conversationId } = conversation;\n  const { endpoint, endpointType } = endpointOption as {\n    endpoint: s.EModelEndpoint;\n    endpointType?: s.EModelEndpoint;\n  };\n\n  let server = EndpointURLs[endpointType ?? endpoint];\n\n  if (isEdited && s.isAssistantsEndpoint(endpoint)) {\n    server += '/modify';\n  } else if (isEdited) {\n    server = server.replace('/ask/', '/edit/');\n  }\n\n  const payload: t.TPayload = {\n    ...userMessage,\n    ...endpointOption,\n    isContinued: !!(isEdited && isContinued),\n    conversationId,\n    isTemporary,\n  };\n\n  return { server, payload };\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/data-service.ts",
    "content": "import type { AxiosResponse } from 'axios';\nimport * as endpoints from './api-endpoints';\nimport * as config from './config';\nimport request from './request';\nimport * as r from './roles';\nimport * as s from './schemas';\nimport type * as t from './types';\nimport * as a from './types/assistants';\nimport * as f from './types/files';\nimport * as m from './types/mutations';\nimport * as q from './types/queries';\n\nexport function abortRequestWithMessage(\n  endpoint: string,\n  abortKey: string,\n  message: string,\n): Promise<void> {\n  return request.post(endpoints.abortRequest(endpoint), { arg: { abortKey, message } });\n}\n\nexport function revokeUserKey(name: string): Promise<unknown> {\n  return request.delete(endpoints.revokeUserKey(name));\n}\n\nexport function revokeAllUserKeys(): Promise<unknown> {\n  return request.delete(endpoints.revokeAllUserKeys());\n}\n\nexport function deleteUser(): Promise<s.TPreset> {\n  return request.delete(endpoints.deleteUser());\n}\n\nexport function getMessagesByConvoId(conversationId: string, shareToken: string): Promise<s.TMessage[]> {\n  if (conversationId === 'new') {\n    return Promise.resolve([]);\n  }\n  const headers = shareToken ? { 'share-token': shareToken } : {}\n  return request.get(endpoints.messages(conversationId), { headers }).then(res => res.data);\n}\n\nexport function getSharedMessages(shareId: string): Promise<t.TSharedMessagesResponse> {\n  return request.get(endpoints.shareMessages(shareId));\n}\n\nexport const listSharedLinks = async (\n  params: q.SharedLinksListParams,\n): Promise<q.SharedLinksResponse> => {\n  const { pageSize, isPublic, sortBy, sortDirection, search, cursor } = params;\n\n  return request.get(\n    endpoints.getSharedLinks(pageSize, isPublic, sortBy, sortDirection, search, cursor),\n  );\n};\n\nexport function getSharedLink(conversationId: string): Promise<t.TSharedLinkGetResponse> {\n  return request.get(endpoints.getSharedLink(conversationId));\n}\n\nexport function createSharedLink(conversationId: string): Promise<t.TSharedLinkResponse> {\n  return request.post(endpoints.createSharedLink(conversationId));\n}\n\nexport function updateSharedLink(shareId: string): Promise<t.TSharedLinkResponse> {\n  return request.patch(endpoints.updateSharedLink(shareId));\n}\n\nexport function deleteSharedLink(shareId: string): Promise<m.TDeleteSharedLinkResponse> {\n  return request.delete(endpoints.shareMessages(shareId));\n}\n\nexport function updateMessage(payload: t.TUpdateMessageRequest): Promise<unknown> {\n  const { conversationId, messageId, text } = payload;\n  if (!conversationId) {\n    throw new Error('conversationId is required');\n  }\n\n  return request.put(endpoints.messages(conversationId, messageId), { text });\n}\n\nexport const editArtifact = async ({\n  messageId,\n  ...params\n}: m.TEditArtifactRequest): Promise<m.TEditArtifactResponse> => {\n  return request.post(`/api/messages/artifact/${messageId}`, params);\n};\n\nexport function updateMessageContent(payload: t.TUpdateMessageContent): Promise<unknown> {\n  const { conversationId, messageId, index, text } = payload;\n  if (!conversationId) {\n    throw new Error('conversationId is required');\n  }\n\n  return request.put(endpoints.messages(conversationId, messageId), { text, index });\n}\n\nexport function updateUserKey(payload: t.TUpdateUserKeyRequest) {\n  const { value } = payload;\n  if (!value) {\n    throw new Error('value is required');\n  }\n\n  return request.put(endpoints.keys(), payload);\n}\n\nexport function getPresets(): Promise<s.TPreset[]> {\n  return request.get(endpoints.presets());\n}\n\nexport function createPreset(payload: s.TPreset): Promise<s.TPreset> {\n  return request.post(endpoints.presets(), payload);\n}\n\nexport function updatePreset(payload: s.TPreset): Promise<s.TPreset> {\n  return request.post(endpoints.presets(), payload);\n}\n\nexport function deletePreset(arg: s.TPreset | undefined): Promise<m.PresetDeleteResponse> {\n  return request.post(endpoints.deletePreset(), arg);\n}\n\nexport function getSearchEnabled(): Promise<boolean> {\n  return Promise.resolve(true);\n  return request.get(endpoints.searchEnabled());\n}\n\nexport function getUser(): Promise<t.TUser> {\n  return request.get(endpoints.user()).then(res => {\n    const { user_id, user_name, create_time, update_time, role, web_menu } = res.data;\n    if (role !== 'admin' && !web_menu.includes('frontend')) {\n      location.href = `${location.origin}${__APP_ENV__.BISHENG_HOST}?error=90002`  // workspace useErrorPrompt\n    }\n    return {\n      \"_id\": user_id,\n      \"name\": user_name,\n      \"username\": user_name,\n      \"email\": user_name,\n      \"emailVerified\": true,\n      \"avatar\": null,\n      \"provider\": \"local\",\n      \"role\": role,\n      \"plugins\": web_menu,\n      \"termsAccepted\": false,\n      \"backupCodes\": [],\n      \"refreshToken\": [],\n      \"createdAt\": create_time,\n      \"updatedAt\": update_time,\n      \"id\": user_id\n    }\n  });\n}\n\nexport function getUserBalance(): Promise<string> {\n  return Promise.resolve('');\n  return request.get(endpoints.balance());\n}\n\nexport const updateTokenCount = (text: string) => {\n  return request.post(endpoints.tokenizer(), { arg: text });\n};\n\nexport const login = (payload: t.TLoginUser): Promise<t.TLoginResponse> => {\n  return request.post(endpoints.login(), payload);\n};\n\nexport const logout = (): Promise<m.TLogoutResponse> => {\n  return request.post(endpoints.logout());\n};\n\nexport const register = (payload: t.TRegisterUser) => {\n  return request.post(endpoints.register(), payload);\n};\n\nexport const userKeyQuery = (name: string): Promise<t.TCheckUserKeyResponse> =>\n  Promise.resolve({\n    expiresAt: null\n  });\n// request.get(endpoints.userKeyQuery(name));\n\nexport const getLoginGoogle = () => {\n  return request.get(endpoints.loginGoogle());\n};\n\nexport const requestPasswordReset = (\n  payload: t.TRequestPasswordReset,\n): Promise<t.TRequestPasswordResetResponse> => {\n  return request.post(endpoints.requestPasswordReset(), payload);\n};\n\nexport const resetPassword = (payload: t.TResetPassword) => {\n  return request.post(endpoints.resetPassword(), payload);\n};\n\nexport const verifyEmail = (payload: t.TVerifyEmail): Promise<t.VerifyEmailResponse> => {\n  return request.post(endpoints.verifyEmail(), payload);\n};\n\nexport const resendVerificationEmail = (\n  payload: t.TResendVerificationEmail,\n): Promise<t.VerifyEmailResponse> => {\n  return request.post(endpoints.resendVerificationEmail(), payload);\n};\n\nexport const getAvailablePlugins = (): Promise<s.TPlugin[]> => {\n  return Promise.resolve([])\n  return request.get(endpoints.plugins());\n};\n\nexport const updateUserPlugins = (payload: t.TUpdateUserPlugins) => {\n  return request.post(endpoints.userPlugins(), payload);\n};\n\n/* Config */\n\nexport const getStartupConfig = (): Promise<config.TStartupConfig> => {\n  // return request.get(endpoints.config());\n  return Promise.resolve({\n    \"appTitle\": \"LibreChat\",\n    \"socialLogins\": [\n      \"github\",\n      \"google\",\n      \"discord\",\n      \"openid\",\n      \"facebook\",\n      \"apple\"\n    ],\n    \"discordLoginEnabled\": false,\n    \"facebookLoginEnabled\": false,\n    \"githubLoginEnabled\": false,\n    \"googleLoginEnabled\": false,\n    \"appleLoginEnabled\": false,\n    \"openidLoginEnabled\": false,\n    \"openidLabel\": \"Continue with OpenID\",\n    \"openidImageUrl\": \"\",\n    \"serverDomain\": \"http://localhost:3080\",\n    \"emailLoginEnabled\": true,\n    \"registrationEnabled\": true,\n    \"socialLoginEnabled\": false,\n    \"emailEnabled\": false,\n    \"passwordResetEnabled\": false,\n    \"checkBalance\": false,\n    \"showBirthdayIcon\": false,\n    \"helpAndFaqURL\": \"https://librechat.ai\",\n    \"interface\": {\n      \"endpointsMenu\": true,\n      \"modelSelect\": true,\n      \"parameters\": true,\n      \"presets\": true,\n      \"sidePanel\": true,\n      \"privacyPolicy\": {\n        \"externalUrl\": \"https://librechat.ai/privacy-policy\",\n        \"openNewTab\": true\n      },\n      \"termsOfService\": {\n        \"externalUrl\": \"https://librechat.ai/tos\",\n        \"openNewTab\": true,\n        \"modalAcceptance\": true,\n        \"modalTitle\": \"Terms of Service for LibreChat\",\n        \"modalContent\": \"# Terms and Conditions for LibreChat\\n\\n*Effective Date: February 18, 2024*\\n\\nWelcome to LibreChat, the informational website for the open-source AI chat platform, available at https://librechat.ai. These Terms of Service (\\\"Terms\\\") govern your use of our website and the services we offer. By accessing or using the Website, you agree to be bound by these Terms and our Privacy Policy, accessible at https://librechat.ai//privacy.\\n\\n## 1. Ownership\\n\\nUpon purchasing a package from LibreChat, you are granted the right to download and use the code for accessing an admin panel for LibreChat. While you own the downloaded code, you are expressly prohibited from reselling, redistributing, or otherwise transferring the code to third parties without explicit permission from LibreChat.\\n\\n## 2. User Data\\n\\nWe collect personal data, such as your name, email address, and payment information, as described in our Privacy Policy. This information is collected to provide and improve our services, process transactions, and communicate with you.\\n\\n## 3. Non-Personal Data Collection\\n\\nThe Website uses cookies to enhance user experience, analyze site usage, and facilitate certain functionalities. By using the Website, you consent to the use of cookies in accordance with our Privacy Policy.\\n\\n## 4. Use of the Website\\n\\nYou agree to use the Website only for lawful purposes and in a manner that does not infringe the rights of, restrict, or inhibit anyone else's use and enjoyment of the Website. Prohibited behavior includes harassing or causing distress or inconvenience to any person, transmitting obscene or offensive content, or disrupting the normal flow of dialogue within the Website.\\n\\n## 5. Governing Law\\n\\nThese Terms shall be governed by and construed in accordance with the laws of the United States, without giving effect to any principles of conflicts of law.\\n\\n## 6. Changes to the Terms\\n\\nWe reserve the right to modify these Terms at any time. We will notify users of any changes by email. Your continued use of the Website after such changes have been notified will constitute your consent to such changes.\\n\\n## 7. Contact Information\\n\\nIf you have any questions about these Terms, please contact us at contact@librechat.ai.\\n\\nBy using the Website, you acknowledge that you have read these Terms of Service and agree to be bound by them.\\n\"\n      },\n      \"bookmarks\": true,\n      \"prompts\": true,\n      \"multiConvo\": true,\n      \"agents\": true,\n      \"temporaryChat\": true,\n      \"runCode\": true,\n      \"customWelcome\": \"Welcome to LibreChat! Enjoy your experience.\"\n    },\n    \"sharedLinksEnabled\": true,\n    \"publicSharedLinksEnabled\": true,\n    \"instanceProjectId\": \"67c96484a4e95437007d43eb\",\n    \"ldap\": {\n      \"enabled\": false\n    }\n  })\n};\n\nexport const getBishengConfig = (): Promise<config.BsConfig> => {\n  return request.get(endpoints.bsConfig()).then(res => res.data);\n};\n\nexport const getAIEndpoints = (): Promise<t.TEndpointsConfig> => {\n  // return request.get(endpoints.aiEndpoints());\n  return Promise.resolve({\n    Deepseek: {\n      \"order\": 9999,\n      \"type\": \"custom\",\n      \"userProvide\": false,\n      \"userProvideURL\": false,\n      \"modelDisplayLabel\": \"Deepseek\"\n    }\n  })\n};\n\nexport const getModels = async (): Promise<t.TModelsConfig> => {\n  return Promise.resolve({\n    Deepseek: [\"deepseek-chat\", \"deepseek-coder\", \"deepseek-reasoner\"]\n  })\n  return request.get(endpoints.models());\n};\n\nexport const getEndpointsConfigOverride = (): Promise<unknown | boolean> => {\n  return request.get(endpoints.endpointsConfigOverride());\n};\n\n/* Assistants */\n\nexport const createAssistant = ({\n  version,\n  ...data\n}: a.AssistantCreateParams): Promise<a.Assistant> => {\n  return request.post(endpoints.assistants({ version }), data);\n};\n\nexport const getAssistantById = ({\n  endpoint,\n  assistant_id,\n  version,\n}: {\n  endpoint: s.AssistantsEndpoint;\n  assistant_id: string;\n  version: number | string | number;\n}): Promise<a.Assistant> => {\n  return request.get(\n    endpoints.assistants({\n      path: assistant_id,\n      endpoint,\n      version,\n    }),\n  );\n};\n\nexport const updateAssistant = ({\n  assistant_id,\n  data,\n  version,\n}: {\n  assistant_id: string;\n  data: a.AssistantUpdateParams;\n  version: number | string;\n}): Promise<a.Assistant> => {\n  return request.patch(\n    endpoints.assistants({\n      path: assistant_id,\n      version,\n    }),\n    data,\n  );\n};\n\nexport const deleteAssistant = ({\n  assistant_id,\n  model,\n  endpoint,\n  version,\n}: m.DeleteAssistantBody & { version: number | string }): Promise<void> => {\n  return request.delete(\n    endpoints.assistants({\n      path: assistant_id,\n      options: { model, endpoint },\n      version,\n    }),\n  );\n};\n\nexport const listAssistants = (\n  params: a.AssistantListParams,\n  version: number | string,\n): Promise<a.AssistantListResponse> => {\n  return request.get(\n    endpoints.assistants({\n      version,\n      options: params,\n    }),\n  );\n};\n\nexport function getAssistantDocs({\n  endpoint,\n  version,\n}: {\n  endpoint: s.AssistantsEndpoint | string;\n  version: number | string;\n}): Promise<a.AssistantDocument[]> {\n  if (!s.isAssistantsEndpoint(endpoint)) {\n    return Promise.resolve([]);\n  }\n  return request.get(\n    endpoints.assistants({\n      path: 'documents',\n      version,\n      options: { endpoint },\n      endpoint: endpoint as s.AssistantsEndpoint,\n    }),\n  );\n}\n\n/* Tools */\n\nexport const getAvailableTools = (\n  _endpoint: s.AssistantsEndpoint | s.EModelEndpoint.agents,\n  version?: number | string,\n): Promise<s.TPlugin[]> => {\n  let path = '';\n  if (s.isAssistantsEndpoint(_endpoint)) {\n    const endpoint = _endpoint as s.AssistantsEndpoint;\n    path = endpoints.assistants({\n      path: 'tools',\n      endpoint: endpoint,\n      version: version ?? config.defaultAssistantsVersion[endpoint],\n    });\n  } else {\n    path = endpoints.agents({\n      path: 'tools',\n    });\n  }\n\n  return request.get(path);\n};\n\nexport const getVerifyAgentToolAuth = (\n  params: q.VerifyToolAuthParams,\n): Promise<q.VerifyToolAuthResponse> => {\n  return request.get(\n    endpoints.agents({\n      path: `tools/${params.toolId}/auth`,\n    }),\n  );\n};\n\nexport const callTool = <T extends m.ToolId>({\n  toolId,\n  toolParams,\n}: {\n  toolId: T;\n  toolParams: m.ToolParams<T>;\n}): Promise<m.ToolCallResponse> => {\n  return request.post(\n    endpoints.agents({\n      path: `tools/${toolId}/call`,\n    }),\n    toolParams,\n  );\n};\n\nexport const getToolCalls = (params: q.GetToolCallParams): Promise<q.ToolCallResults> => {\n  return Promise.resolve([]);\n  return request.get(\n    endpoints.agents({\n      path: 'tools/calls',\n      options: params,\n    }),\n  );\n};\n\n/* Files */\n\nexport const getFiles = (): Promise<f.TFile[]> => {\n  return Promise.resolve([]);\n  return request.get(endpoints.files());\n};\n\nexport const getFileConfig = (): Promise<f.FileConfig> => {\n  return Promise.resolve({});\n  return request.get(`${endpoints.files()}/config`);\n};\n\nexport const uploadImage = (\n  data: FormData,\n  signal?: AbortSignal | null,\n): Promise<f.TFileUpload> => {\n  const requestConfig = signal ? { signal } : undefined;\n  return request.postMultiPart(endpoints.images(), data, requestConfig).then(res => {\n    if (!res.data.temp_file_id) {\n      res.data.temp_file_id = data.get('file_id')\n      res.data.type = res.data.type || \"image\"\n      res.data.filename = decodeURIComponent(res.data.file_name)\n    }\n    return res.data\n  });\n};\n\nexport const uploadFile = (data: FormData, signal?: AbortSignal | null): Promise<f.TFileUpload> => {\n  const requestConfig = signal ? { signal } : undefined;\n  return request.postMultiPart(endpoints.images(), data, requestConfig).then(res => {\n    if (!res.data.temp_file_id) {\n      res.data.temp_file_id = data.get('file_id')\n      res.data.filename = decodeURIComponent(res.data.file_name)\n    }\n    return res.data\n  });\n};\n\n/* actions */\n\nexport const updateAction = (data: m.UpdateActionVariables): Promise<m.UpdateActionResponse> => {\n  const { assistant_id, version, ...body } = data;\n  return request.post(\n    endpoints.assistants({\n      path: `actions/${assistant_id}`,\n      version,\n    }),\n    body,\n  );\n};\n\nexport function getActions(): Promise<a.Action[]> {\n  return request.get(\n    endpoints.agents({\n      path: 'actions',\n    }),\n  );\n}\n\nexport const deleteAction = async ({\n  assistant_id,\n  action_id,\n  model,\n  version,\n  endpoint,\n}: m.DeleteActionVariables & { version: number | string }): Promise<void> =>\n  request.delete(\n    endpoints.assistants({\n      path: `actions/${assistant_id}/${action_id}/${model}`,\n      version,\n      endpoint,\n    }),\n  );\n\n/**\n * Agents\n */\n\nexport const createAgent = ({ ...data }: a.AgentCreateParams): Promise<a.Agent> => {\n  return request.post(endpoints.agents({}), data);\n};\n\nexport const getAgentById = ({ agent_id }: { agent_id: string }): Promise<a.Agent> => {\n  return request.get(\n    endpoints.agents({\n      path: agent_id,\n    }),\n  );\n};\n\nexport const updateAgent = ({\n  agent_id,\n  data,\n}: {\n  agent_id: string;\n  data: a.AgentUpdateParams;\n}): Promise<a.Agent> => {\n  return request.patch(\n    endpoints.agents({\n      path: agent_id,\n    }),\n    data,\n  );\n};\n\nexport const duplicateAgent = ({\n  agent_id,\n}: m.DuplicateAgentBody): Promise<{ agent: a.Agent; actions: a.Action[] }> => {\n  return request.post(\n    endpoints.agents({\n      path: `${agent_id}/duplicate`,\n    }),\n  );\n};\n\nexport const deleteAgent = ({ agent_id }: m.DeleteAgentBody): Promise<void> => {\n  return request.delete(\n    endpoints.agents({\n      path: agent_id,\n    }),\n  );\n};\n\nexport const listAgents = (params: a.AgentListParams): Promise<a.AgentListResponse> => {\n  return request.get(\n    endpoints.agents({\n      options: params,\n    }),\n  );\n};\n\n/* Tools */\n\nexport const getAvailableAgentTools = (): Promise<s.TPlugin[]> => {\n  return request.get(\n    endpoints.agents({\n      path: 'tools',\n    }),\n  );\n};\n\n/* Actions */\n\nexport const updateAgentAction = (\n  data: m.UpdateAgentActionVariables,\n): Promise<m.UpdateAgentActionResponse> => {\n  const { agent_id, ...body } = data;\n  return request.post(\n    endpoints.agents({\n      path: `actions/${agent_id}`,\n    }),\n    body,\n  );\n};\n\nexport const deleteAgentAction = async ({\n  agent_id,\n  action_id,\n}: m.DeleteAgentActionVariables): Promise<void> =>\n  request.delete(\n    endpoints.agents({\n      path: `actions/${agent_id}/${action_id}`,\n    }),\n  );\n\n/**\n * Imports a conversations file.\n *\n * @param data - The FormData containing the file to import.\n * @returns A Promise that resolves to the import start response.\n */\nexport const importConversationsFile = (data: FormData): Promise<t.TImportResponse> => {\n  return request.postMultiPart(endpoints.importConversation(), data);\n};\n\nexport const uploadAvatar = (data: FormData): Promise<f.AvatarUploadResponse> => {\n  return request.postMultiPart(endpoints.avatar(), data);\n};\n\nexport const uploadAssistantAvatar = (data: m.AssistantAvatarVariables): Promise<a.Assistant> => {\n  return request.postMultiPart(\n    endpoints.assistants({\n      isAvatar: true,\n      path: `${data.assistant_id}/avatar`,\n      options: { model: data.model, endpoint: data.endpoint },\n      version: data.version,\n    }),\n    data.formData,\n  );\n};\n\nexport const uploadAgentAvatar = (data: m.AgentAvatarVariables): Promise<a.Agent> => {\n  return request.postMultiPart(\n    `${endpoints.images()}/agents/${data.agent_id}/avatar`,\n    data.formData,\n  );\n};\n\nexport const getFileDownload = async (userId: string, file_id: string): Promise<AxiosResponse> => {\n  return request.getResponse(`${endpoints.files()}/download/${userId}/${file_id}`, {\n    responseType: 'blob',\n    headers: {\n      Accept: 'application/octet-stream',\n    },\n  });\n};\n\nexport const getCodeOutputDownload = async (url: string): Promise<AxiosResponse> => {\n  return request.getResponse(url, {\n    responseType: 'blob',\n    headers: {\n      Accept: 'application/octet-stream',\n    },\n  });\n};\n\nexport const deleteFiles = async (payload: {\n  files: f.BatchFile[];\n  agent_id?: string;\n  assistant_id?: string;\n  tool_resource?: a.EToolResources;\n}): Promise<f.DeleteFilesResponse> => new Promise((resolve, reject) => {\n  resolve({\n    message: '',\n    result: {}\n  })\n})\n// request.deleteWithOptions(endpoints.files(), {\n//   data: payload,\n// });\n\n/* Speech */\n\nexport const speechToText = (data: FormData): Promise<f.SpeechToTextResponse> => {\n  return request.postMultiPart(endpoints.speechToText(), data);\n};\n\nexport const textToSpeech = (data: FormData): Promise<ArrayBuffer> => {\n  return request.postTTS(endpoints.textToSpeechManual(), data);\n};\n\nexport const getVoices = (): Promise<f.VoiceResponse> => {\n  return request.get(endpoints.textToSpeechVoices());\n};\n\nexport const getCustomConfigSpeech = (): Promise<t.TCustomConfigSpeechResponse> => {\n  return request.get(endpoints.getCustomConfigSpeech());\n};\n\n/* conversations */\n\nexport function duplicateConversation(\n  payload: t.TDuplicateConvoRequest,\n): Promise<t.TDuplicateConvoResponse> {\n  return request.post(endpoints.duplicateConversation(), payload);\n}\n\nexport function forkConversation(payload: t.TForkConvoRequest): Promise<t.TForkConvoResponse> {\n  return request.post(endpoints.forkConversation(), payload);\n}\n\nexport function deleteConversation(payload: t.TDeleteConversationRequest) {\n  //todo: this should be a DELETE request\n  return request.delete(endpoints.deleteConversation() + payload.conversationId);\n}\n\nexport function clearAllConversations(): Promise<unknown> {\n  return request.post(endpoints.deleteConversation(), { arg: {} });\n}\n\nexport const listConversations = (\n  params?: q.ConversationListParams,\n): Promise<q.ConversationListResponse> => {\n  // Assuming params has a pageNumber property\n  const pageNumber = (params?.pageNumber ?? '1') || '1'; // Default to page 1 if not provided\n  const isArchived = params?.isArchived ?? false; // Default to false if not provided\n  const tags = params?.tags || []; // Default to an empty array if not provided\n  return request.get(endpoints.conversations(pageNumber, isArchived, tags)).then(res => {\n    const list = res.data\n    return {\n      conversations: list.map(conv => ({\n        \"conversationId\": conv.chat_id,\n        \"createdAt\": conv.create_time,\n        \"endpoint\": \"\",\n        \"endpointType\": \"\",\n        \"expiredAt\": null,\n        \"files\": [],\n        \"isArchived\": false,\n        \"messages\": [],\n        \"model\": \"\",\n        \"resendFiles\": true,\n        \"tags\": [],\n        \"title\": conv.flow_name,\n        \"updatedAt\": conv.create_time,\n        \"user\": conv.user_id,\n        \"__v\": 0,\n        \"_id\": conv.chat_id,\n        \"flowId\": conv.flow_id,\n        \"flowType\": conv.flow_type\n      })),\n      pageNumber: pageNumber,\n      pageSize: 40,\n      pages: list.length === 40 ? Number(pageNumber) + 1 : pageNumber // Math.round(total / 40)\n    }\n  });\n};\n\nexport const listConversationsByQuery = (\n  params?: q.ConversationListParams & { searchQuery?: string },\n): Promise<q.ConversationListResponse> => {\n  const pageNumber = (params?.pageNumber ?? '1') || '1'; // Default to page 1 if not provided\n  const searchQuery = params?.searchQuery ?? ''; // If no search query is provided, default to an empty string\n  // Update the endpoint to handle a search query\n  if (searchQuery !== '') {\n    return request.get(endpoints.search(searchQuery, pageNumber));\n  } else {\n    return request.get(endpoints.conversations(pageNumber));\n  }\n};\n\nexport const searchConversations = async (\n  q: string,\n  pageNumber: string,\n): Promise<t.TSearchResults> => {\n  return request.get(endpoints.search(q, pageNumber));\n};\n\nexport function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {\n  return request.get(endpoints.conversations(pageNumber));\n}\n\nexport function getConversationById(id: string): Promise<s.TConversation> {\n  return Promise.resolve({\n\n  })\n  // return request.get(endpoints.conversationById(id));\n}\n\nexport function updateConversation(\n  payload: t.TUpdateConversationRequest,\n): Promise<t.TUpdateConversationResponse> {\n  return request.post(endpoints.updateConversation(), {\n    conversationId: payload.conversationId,\n    flow_type: payload.flowType,\n    name: payload.title\n  });\n}\n\nexport function archiveConversation(\n  payload: t.TArchiveConversationRequest,\n): Promise<t.TArchiveConversationResponse> {\n  return request.post(endpoints.updateConversation(), { arg: payload });\n}\n\nexport function genTitle(payload: m.TGenTitleRequest): Promise<m.TGenTitleResponse> {\n  return request.post(endpoints.genTitle(), payload).then(res => res.data);\n}\n\nexport function getPrompt(id: string): Promise<{ prompt: t.TPrompt }> {\n  return request.get(endpoints.getPrompt(id));\n}\n\nexport function getPrompts(filter: t.TPromptsWithFilterRequest): Promise<t.TPrompt[]> {\n  return request.get(endpoints.getPromptsWithFilters(filter));\n}\n\nexport function getAllPromptGroups(): Promise<q.AllPromptGroupsResponse> {\n  return request.get(endpoints.getAllPromptGroups());\n}\n\nexport function getPromptGroups(\n  filter: t.TPromptGroupsWithFilterRequest,\n): Promise<t.PromptGroupListResponse> {\n  return request.get(endpoints.getPromptGroupsWithFilters(filter));\n}\n\nexport function getPromptGroup(id: string): Promise<t.TPromptGroup> {\n  return request.get(endpoints.getPromptGroup(id));\n}\n\nexport function createPrompt(payload: t.TCreatePrompt): Promise<t.TCreatePromptResponse> {\n  return request.post(endpoints.postPrompt(), payload);\n}\n\nexport function updatePromptGroup(\n  variables: t.TUpdatePromptGroupVariables,\n): Promise<t.TUpdatePromptGroupResponse> {\n  return request.patch(endpoints.updatePromptGroup(variables.id), variables.payload);\n}\n\nexport function deletePrompt(payload: t.TDeletePromptVariables): Promise<t.TDeletePromptResponse> {\n  return request.delete(endpoints.deletePrompt(payload));\n}\n\nexport function makePromptProduction(id: string): Promise<t.TMakePromptProductionResponse> {\n  return request.patch(endpoints.updatePromptTag(id));\n}\n\nexport function updatePromptLabels(\n  variables: t.TUpdatePromptLabelsRequest,\n): Promise<t.TUpdatePromptLabelsResponse> {\n  return request.patch(endpoints.updatePromptLabels(variables.id), variables.payload);\n}\n\nexport function deletePromptGroup(id: string): Promise<t.TDeletePromptGroupResponse> {\n  return request.delete(endpoints.deletePromptGroup(id));\n}\n\nexport function getCategories(): Promise<t.TGetCategoriesResponse> {\n  return request.get(endpoints.getCategories());\n}\n\nexport function getRandomPrompts(\n  variables: t.TGetRandomPromptsRequest,\n): Promise<t.TGetRandomPromptsResponse> {\n  return request.get(endpoints.getRandomPrompts(variables.limit, variables.skip));\n}\n\n/* Roles */\nexport function getRole(roleName: string): Promise<r.TRole> {\n  if (roleName === 'USER') return Promise.resolve({\n    \"_id\": \"67c9645671e602aa6aece753\",\n    \"name\": \"USER\",\n    \"BOOKMARKS\": {\n      \"USE\": true\n    },\n    \"PROMPTS\": {\n      \"SHARED_GLOBAL\": false,\n      \"USE\": true,\n      \"CREATE\": true\n    },\n    \"AGENTS\": {\n      \"SHARED_GLOBAL\": false,\n      \"USE\": true,\n      \"CREATE\": true\n    },\n    \"MULTI_CONVO\": {\n      \"USE\": true\n    },\n    \"TEMPORARY_CHAT\": {\n      \"USE\": true\n    },\n    \"RUN_CODE\": {\n      \"USE\": true\n    },\n    \"__v\": 0\n  });\n  return request.get(endpoints.getRole(roleName));\n}\n\nexport function updatePromptPermissions(\n  variables: m.UpdatePromptPermVars,\n): Promise<m.UpdatePermResponse> {\n  return request.put(endpoints.updatePromptPermissions(variables.roleName), variables.updates);\n}\n\nexport function updateAgentPermissions(\n  variables: m.UpdateAgentPermVars,\n): Promise<m.UpdatePermResponse> {\n  return request.put(endpoints.updateAgentPermissions(variables.roleName), variables.updates);\n}\n\n/* Tags */\nexport function getConversationTags(): Promise<t.TConversationTagsResponse> {\n  return request.get(endpoints.conversationTags());\n}\n\nexport function createConversationTag(\n  payload: t.TConversationTagRequest,\n): Promise<t.TConversationTagResponse> {\n  return request.post(endpoints.conversationTags(), payload);\n}\n\nexport function updateConversationTag(\n  tag: string,\n  payload: t.TConversationTagRequest,\n): Promise<t.TConversationTagResponse> {\n  return request.put(endpoints.conversationTags(tag), payload);\n}\nexport function deleteConversationTag(tag: string): Promise<t.TConversationTagResponse> {\n  return request.delete(endpoints.conversationTags(tag));\n}\n\nexport function addTagToConversation(\n  conversationId: string,\n  payload: t.TTagConversationRequest,\n): Promise<t.TTagConversationResponse> {\n  return request.put(endpoints.addTagToConversation(conversationId), payload);\n}\nexport function rebuildConversationTags(): Promise<t.TConversationTagsResponse> {\n  return request.post(endpoints.conversationTags('rebuild'));\n}\n\nexport function healthCheck(): Promise<string> {\n  return request.get(endpoints.health());\n}\n\nexport function getUserTerms(): Promise<t.TUserTermsResponse> {\n  return request.get(endpoints.userTerms());\n}\n\nexport function acceptTerms(): Promise<t.TAcceptTermsResponse> {\n  return request.post(endpoints.acceptUserTerms());\n}\n\nexport function getBanner(): Promise<t.TBannerResponse> {\n  return request.get(endpoints.banner());\n}\n\nexport function enableTwoFactor(): Promise<t.TEnable2FAResponse> {\n  return request.get(endpoints.enableTwoFactor());\n}\n\nexport function verifyTwoFactor(payload: t.TVerify2FARequest): Promise<t.TVerify2FAResponse> {\n  return request.post(endpoints.verifyTwoFactor(), payload);\n}\n\nexport function confirmTwoFactor(payload: t.TVerify2FARequest): Promise<t.TVerify2FAResponse> {\n  return request.post(endpoints.confirmTwoFactor(), payload);\n}\n\nexport function disableTwoFactor(): Promise<t.TDisable2FAResponse> {\n  return request.post(endpoints.disableTwoFactor());\n}\n\nexport function regenerateBackupCodes(): Promise<t.TRegenerateBackupCodesResponse> {\n  return request.post(endpoints.regenerateBackupCodes());\n}\n\nexport function verifyTwoFactorTemp(\n  payload: t.TVerify2FATempRequest,\n): Promise<t.TVerify2FATempResponse> {\n  return request.post(endpoints.verifyTwoFactorTemp(), payload);\n}\n\n// 知识库模块\nexport function knowledgeUpload(data: any): Promise<t.TRegenerateBackupCodesResponse> {\n  return request.postMultiPart(endpoints.knowledgeUpload(), data);\n}\nexport async function getUserInfo() {\n  return await request.get(`/api/v1/knowledge/personal_knowledge_info`);\n}\nexport async function repeatUpload(data: any, id: string) {\n  return await request.postMultiPart(`/api/v1/knowledge/upload/${id}`, data);\n}\nexport async function subUploadLibFile(data: any) {\n  return await request.post(`/api/v1/knowledge/process`, data);\n}\nexport async function retryUpload(data: any) {\n  return await request.post(`/api/v1/knowledge/retry`, data);\n}\n\n\nexport function queryKnowledge(payload: t.TVerify2FARequest): Promise<f.TFile[]> {\n  return request.get(endpoints.queryKnowledge(), { params: payload });\n}\nexport function deleteKnowledge(id: string): Promise<t.TConversationTagResponse> {\n  return request.delete(endpoints.deleteKnowledge(id));\n}\nexport async function getFilePathApi(file_id: string) {\n  return request.get(`/api/v1/knowledge/file_share`, { params: { file_id } });\n}\nexport function getLinsightFileDownloadApi(fileUrl: string, vid: string): Promise<f.TFile> {\n  return request.post('/api/v1/linsight/workbench/file_download', { file_url: fileUrl, session_version_id: vid });\n}"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/file-config.ts",
    "content": "/* eslint-disable max-len */\nimport { z } from 'zod';\nimport { EModelEndpoint } from './schemas';\nimport type { FileConfig, EndpointFileConfig } from './types/files';\n\nexport const supportsFiles = {\n  [EModelEndpoint.openAI]: true,\n  [EModelEndpoint.google]: true,\n  [EModelEndpoint.assistants]: true,\n  [EModelEndpoint.azureAssistants]: true,\n  [EModelEndpoint.agents]: true,\n  [EModelEndpoint.azureOpenAI]: true,\n  [EModelEndpoint.anthropic]: true,\n  [EModelEndpoint.custom]: true,\n  [EModelEndpoint.bedrock]: true,\n};\n\nexport const excelFileTypes = [\n  'application/vnd.ms-excel',\n  'application/msexcel',\n  'application/x-msexcel',\n  'application/x-ms-excel',\n  'application/x-excel',\n  'application/x-dos_ms_excel',\n  'application/xls',\n  'application/x-xls',\n  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n];\n\nexport const fullMimeTypesList = [\n  'text/x-c',\n  'text/x-c++',\n  'application/csv',\n  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  'text/html',\n  'text/x-java',\n  'application/json',\n  'text/markdown',\n  'application/pdf',\n  'text/x-php',\n  'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n  'text/x-python',\n  'text/x-script.python',\n  'text/x-ruby',\n  'text/x-tex',\n  'text/plain',\n  'text/css',\n  'text/vtt',\n  'image/jpeg',\n  'text/javascript',\n  'image/gif',\n  'image/png',\n  'application/x-tar',\n  'application/typescript',\n  'application/xml',\n  'application/zip',\n  'image/svg',\n  'image/svg+xml',\n  ...excelFileTypes,\n];\n\nexport const codeInterpreterMimeTypesList = [\n  'text/x-c',\n  'text/x-c++',\n  'application/csv',\n  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  'text/html',\n  'text/x-java',\n  'application/json',\n  'text/markdown',\n  'application/pdf',\n  'text/x-php',\n  'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n  'text/x-python',\n  'text/x-script.python',\n  'text/x-ruby',\n  'text/x-tex',\n  'text/plain',\n  'text/css',\n  'image/jpeg',\n  'text/javascript',\n  'image/gif',\n  'image/png',\n  'application/x-tar',\n  'application/typescript',\n  'application/xml',\n  'application/zip',\n  ...excelFileTypes,\n];\n\nexport const retrievalMimeTypesList = [\n  'text/x-c',\n  'text/x-c++',\n  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  'text/html',\n  'text/x-java',\n  'application/json',\n  'text/markdown',\n  'application/pdf',\n  'text/x-php',\n  'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n  'text/x-python',\n  'text/x-script.python',\n  'text/x-ruby',\n  'text/x-tex',\n  'text/plain',\n];\n\nexport const imageExtRegex = /\\.(jpg|jpeg|png|gif|webp)$/i;\n\nexport const excelMimeTypes =\n  /^application\\/(vnd\\.ms-excel|msexcel|x-msexcel|x-ms-excel|x-excel|x-dos_ms_excel|xls|x-xls|vnd\\.openxmlformats-officedocument\\.spreadsheetml\\.sheet)$/;\n\nexport const textMimeTypes =\n  /^(text\\/(x-c|x-csharp|x-c\\+\\+|x-java|html|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain|css|vtt|javascript|csv))$/;\n\n  export const applicationMimeTypes =\n  /^(application\\/(epub\\+zip|csv|json|pdf|x-tar|typescript|msword|vnd\\.ms-powerpoint|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation|spreadsheetml\\.sheet)|xml|zip))$/;\nexport const imageMimeTypes = /^image\\/(jpeg|gif|png|webp|bmp)$/;\n// 默认上传文件类型\nexport const supportedMimeTypes = [\n  textMimeTypes,\n  excelMimeTypes,\n  applicationMimeTypes,\n  imageMimeTypes,\n  /** Supported by LC Code Interpreter PAI */\n  /^image\\/(svg|svg\\+xml)$/,\n];\n\nexport const codeInterpreterMimeTypes = [\n  textMimeTypes,\n  excelMimeTypes,\n  applicationMimeTypes,\n  imageMimeTypes,\n];\n\nexport const codeTypeMapping: { [key: string]: string } = {\n  c: 'text/x-c',\n  cs: 'text/x-csharp',\n  cpp: 'text/x-c++',\n  md: 'text/markdown',\n  php: 'text/x-php',\n  py: 'text/x-python',\n  rb: 'text/x-ruby',\n  tex: 'text/x-tex',\n  js: 'text/javascript',\n  sh: 'application/x-sh',\n  ts: 'application/typescript',\n  tar: 'application/x-tar',\n  zip: 'application/zip',\n  yml: 'application/x-yaml',\n  yaml: 'application/x-yaml',\n  log: 'text/plain',\n};\n\nexport const retrievalMimeTypes = [\n  /^(text\\/(x-c|x-c\\+\\+|html|x-java|markdown|x-php|x-python|x-script\\.python|x-ruby|x-tex|plain|vtt|xml))$/,\n  /^(application\\/(json|pdf|vnd\\.openxmlformats-officedocument\\.(wordprocessingml\\.document|presentationml\\.presentation)))$/,\n];\n\nexport const megabyte = 1024 * 1024;\n/** Helper function to get megabytes value */\nexport const mbToBytes = (mb: number): number => mb * megabyte;\n\nconst defaultSizeLimit = mbToBytes(512);\nconst assistantsFileConfig = {\n  fileLimit: 10,\n  fileSizeLimit: defaultSizeLimit,\n  totalSizeLimit: defaultSizeLimit,\n  supportedMimeTypes,\n  disabled: false,\n};\n\nexport const fileConfig = {\n  endpoints: {\n    [EModelEndpoint.assistants]: assistantsFileConfig,\n    [EModelEndpoint.azureAssistants]: assistantsFileConfig,\n    [EModelEndpoint.agents]: assistantsFileConfig,\n    default: {\n      fileLimit: 10,\n      fileSizeLimit: defaultSizeLimit,\n      totalSizeLimit: defaultSizeLimit,\n      supportedMimeTypes,\n      disabled: false,\n    },\n  },\n  serverFileSizeLimit: defaultSizeLimit,\n  avatarSizeLimit: mbToBytes(2),\n  checkType: function (fileType: string, supportedTypes: RegExp[] = supportedMimeTypes) {\n    return supportedTypes.some((regex) => regex.test(fileType));\n  },\n};\n\nconst supportedMimeTypesSchema = z\n  .array(z.any())\n  .optional()\n  .refine(\n    (mimeTypes) => {\n      if (!mimeTypes) {\n        return true;\n      }\n      return mimeTypes.every(\n        (mimeType) => mimeType instanceof RegExp || typeof mimeType === 'string',\n      );\n    },\n    {\n      message: 'Each mimeType must be a string or a RegExp object.',\n    },\n  );\n\nexport const endpointFileConfigSchema = z.object({\n  disabled: z.boolean().optional(),\n  fileLimit: z.number().min(0).optional(),\n  fileSizeLimit: z.number().min(0).optional(),\n  totalSizeLimit: z.number().min(0).optional(),\n  supportedMimeTypes: supportedMimeTypesSchema.optional(),\n});\n\nexport const fileConfigSchema = z.object({\n  endpoints: z.record(endpointFileConfigSchema).optional(),\n  serverFileSizeLimit: z.number().min(0).optional(),\n  avatarSizeLimit: z.number().min(0).optional(),\n});\n\n/** Helper function to safely convert string patterns to RegExp objects */\nexport const convertStringsToRegex = (patterns: string[]): RegExp[] =>\n  patterns.reduce((acc: RegExp[], pattern) => {\n    try {\n      const regex = new RegExp(pattern);\n      acc.push(regex);\n    } catch (error) {\n      console.error(`Invalid regex pattern \"${pattern}\" skipped.`);\n    }\n    return acc;\n  }, []);\n\nexport function mergeFileConfig(dynamic: z.infer<typeof fileConfigSchema> | undefined): FileConfig {\n  const mergedConfig = fileConfig as FileConfig;\n  if (!dynamic) {\n    return mergedConfig;\n  }\n\n  if (dynamic.serverFileSizeLimit !== undefined) {\n    mergedConfig.serverFileSizeLimit = mbToBytes(dynamic.serverFileSizeLimit);\n  }\n\n  if (dynamic.avatarSizeLimit !== undefined) {\n    mergedConfig.avatarSizeLimit = mbToBytes(dynamic.avatarSizeLimit);\n  }\n\n  if (!dynamic.endpoints) {\n    return mergedConfig;\n  }\n\n  for (const key in dynamic.endpoints) {\n    const dynamicEndpoint = (dynamic.endpoints as Record<string, EndpointFileConfig>)[key];\n\n    if (!mergedConfig.endpoints[key]) {\n      mergedConfig.endpoints[key] = {};\n    }\n\n    const mergedEndpoint = mergedConfig.endpoints[key];\n\n    if (dynamicEndpoint.disabled === true) {\n      mergedEndpoint.disabled = true;\n      mergedEndpoint.fileLimit = 0;\n      mergedEndpoint.fileSizeLimit = 0;\n      mergedEndpoint.totalSizeLimit = 0;\n      mergedEndpoint.supportedMimeTypes = [];\n      continue;\n    }\n\n    if (dynamicEndpoint.fileSizeLimit !== undefined) {\n      mergedEndpoint.fileSizeLimit = mbToBytes(dynamicEndpoint.fileSizeLimit);\n    }\n\n    if (dynamicEndpoint.totalSizeLimit !== undefined) {\n      mergedEndpoint.totalSizeLimit = mbToBytes(dynamicEndpoint.totalSizeLimit);\n    }\n\n    const configKeys = ['fileLimit'] as const;\n    configKeys.forEach((field) => {\n      if (dynamicEndpoint[field] !== undefined) {\n        mergedEndpoint[field] = dynamicEndpoint[field];\n      }\n    });\n\n    if (dynamicEndpoint.supportedMimeTypes) {\n      mergedEndpoint.supportedMimeTypes = convertStringsToRegex(\n        dynamicEndpoint.supportedMimeTypes as unknown as string[],\n      );\n    }\n  }\n\n  return mergedConfig;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/generate.ts",
    "content": "import { z, ZodArray, ZodError, ZodIssueCode } from 'zod';\nimport { tConversationSchema, googleSettings as google, openAISettings as openAI } from './schemas';\nimport type { ZodIssue } from 'zod';\nimport type { TConversation, TSetOption, TPreset } from './schemas';\n\nexport type GoogleSettings = Partial<typeof google>;\nexport type OpenAISettings = Partial<typeof google>;\n\nexport type ComponentType =\n  | 'input'\n  | 'textarea'\n  | 'slider'\n  | 'checkbox'\n  | 'switch'\n  | 'dropdown'\n  | 'combobox'\n  | 'tags';\n\nexport type OptionType = 'conversation' | 'model' | 'custom';\n\nexport type Option = Record<string, unknown> & {\n  label?: string;\n  value: string | number | null;\n};\n\nexport type OptionWithIcon = Option & { icon?: React.ReactNode };\n\nexport enum ComponentTypes {\n  Input = 'input',\n  Textarea = 'textarea',\n  Slider = 'slider',\n  Checkbox = 'checkbox',\n  Switch = 'switch',\n  Dropdown = 'dropdown',\n  Combobox = 'combobox',\n  Tags = 'tags',\n}\n\nexport enum SettingTypes {\n  Number = 'number',\n  Boolean = 'boolean',\n  String = 'string',\n  Enum = 'enum',\n  Array = 'array',\n}\n\nexport enum OptionTypes {\n  Conversation = 'conversation',\n  Model = 'model',\n  Custom = 'custom',\n}\nexport interface SettingDefinition {\n  key: string;\n  description?: string;\n  type: 'number' | 'boolean' | 'string' | 'enum' | 'array';\n  default?: number | boolean | string | string[];\n  showLabel?: boolean;\n  showDefault?: boolean;\n  options?: string[];\n  range?: SettingRange;\n  enumMappings?: Record<string, number | boolean | string>;\n  component: ComponentType;\n  optionType?: OptionType;\n  columnSpan?: number;\n  columns?: number;\n  label?: string;\n  placeholder?: string;\n  labelCode?: boolean;\n  placeholderCode?: boolean;\n  descriptionCode?: boolean;\n  minText?: number;\n  maxText?: number;\n  minTags?: number; // Specific to tags component\n  maxTags?: number; // Specific to tags component\n  includeInput?: boolean; // Specific to slider component\n  descriptionSide?: 'top' | 'right' | 'bottom' | 'left';\n  items?: OptionWithIcon[]; // Specific to combobox component\n  searchPlaceholder?: string; // Specific to combobox component\n  selectPlaceholder?: string; // Specific to combobox component\n  searchPlaceholderCode?: boolean; // Specific to combobox component\n  selectPlaceholderCode?: boolean; // Specific to combobox component\n}\n\nexport type DynamicSettingProps = Partial<SettingDefinition> & {\n  readonly?: boolean;\n  settingKey: string;\n  setOption: TSetOption;\n  conversation: Partial<TConversation> | Partial<TPreset> | null;\n  defaultValue?: number | boolean | string | string[];\n  className?: string;\n  inputClassName?: string;\n};\n\nconst requiredSettingFields = ['key', 'type', 'component'];\n\nexport interface SettingRange {\n  min: number;\n  max: number;\n  step?: number;\n}\n\nexport type SettingsConfiguration = SettingDefinition[];\n\nexport function generateDynamicSchema(settings: SettingsConfiguration) {\n  const schemaFields: { [key: string]: z.ZodTypeAny } = {};\n\n  for (const setting of settings) {\n    const {\n      key,\n      type,\n      default: defaultValue,\n      range,\n      options,\n      minText,\n      maxText,\n      minTags,\n      maxTags,\n    } = setting;\n\n    if (type === SettingTypes.Number) {\n      let schema = z.number();\n      if (range) {\n        schema = schema.min(range.min);\n        schema = schema.max(range.max);\n      }\n      if (typeof defaultValue === 'number') {\n        schemaFields[key] = schema.default(defaultValue);\n      } else {\n        schemaFields[key] = schema;\n      }\n      continue;\n    }\n\n    if (type === SettingTypes.Boolean) {\n      const schema = z.boolean();\n      if (typeof defaultValue === 'boolean') {\n        schemaFields[key] = schema.default(defaultValue);\n      } else {\n        schemaFields[key] = schema;\n      }\n      continue;\n    }\n\n    if (type === SettingTypes.String) {\n      let schema = z.string();\n      if (minText) {\n        schema = schema.min(minText);\n      }\n      if (maxText) {\n        schema = schema.max(maxText);\n      }\n      if (typeof defaultValue === 'string') {\n        schemaFields[key] = schema.default(defaultValue);\n      } else {\n        schemaFields[key] = schema;\n      }\n      continue;\n    }\n\n    if (type === SettingTypes.Enum) {\n      if (!options || options.length === 0) {\n        console.warn(`Missing or empty 'options' for enum setting '${key}'.`);\n        continue;\n      }\n\n      const schema = z.enum(options as [string, ...string[]]);\n      if (typeof defaultValue === 'string') {\n        schemaFields[key] = schema.default(defaultValue);\n      } else {\n        schemaFields[key] = schema;\n      }\n      continue;\n    }\n\n    if (type === SettingTypes.Array) {\n      let schema: z.ZodSchema = z.array(z.string().or(z.number()));\n      if (minTags && schema instanceof ZodArray) {\n        schema = schema.min(minTags);\n      }\n      if (maxTags && schema instanceof ZodArray) {\n        schema = schema.max(maxTags);\n      }\n\n      if (defaultValue && Array.isArray(defaultValue)) {\n        schema = schema.default(defaultValue);\n      }\n\n      schemaFields[key] = schema;\n      continue;\n    }\n\n    console.warn(`Unsupported setting type: ${type}`);\n  }\n\n  return z.object(schemaFields);\n}\n\nconst ZodTypeToSettingType: Record<string, string | undefined> = {\n  ZodString: 'string',\n  ZodNumber: 'number',\n  ZodBoolean: 'boolean',\n};\n\nconst minColumns = 1;\nconst maxColumns = 4;\nconst minSliderOptions = 2;\nconst minDropdownOptions = 2;\nconst minComboboxOptions = 2;\n\n/**\n * Validates the provided setting using the constraints unique to each component type.\n * @throws {ZodError} Throws a ZodError if any validation fails.\n */\nexport function validateSettingDefinitions(settings: SettingsConfiguration): void {\n  const errors: ZodIssue[] = [];\n  // Validate columns\n  const columnsSet = new Set<number>();\n  for (const setting of settings) {\n    if (setting.columns !== undefined) {\n      if (setting.columns < minColumns || setting.columns > maxColumns) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid columns value for setting ${setting.key}. Must be between ${minColumns} and ${maxColumns}.`,\n          path: ['columns'],\n        });\n      } else {\n        columnsSet.add(setting.columns);\n      }\n    }\n  }\n\n  const columns = columnsSet.size === 1 ? columnsSet.values().next().value : 2;\n\n  for (const setting of settings) {\n    for (const field of requiredSettingFields) {\n      if (setting[field as keyof SettingDefinition] === undefined) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Missing required field ${field} for setting ${setting.key}.`,\n          path: [field],\n        });\n      }\n    }\n\n    // check accepted types\n    const settingTypes = Object.values(SettingTypes);\n    if (!settingTypes.includes(setting.type as SettingTypes)) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid type for setting ${setting.key}. Must be one of ${settingTypes.join(\n          ', ',\n        )}.`,\n        path: ['type'],\n      });\n    }\n\n    // Predefined constraints based on components\n    if (\n      (setting.component === ComponentTypes.Tags && setting.type !== SettingTypes.Array) ||\n      (setting.component !== ComponentTypes.Tags && setting.type === SettingTypes.Array)\n    ) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Tags component for setting ${setting.key} must have type array.`,\n        path: ['type'],\n      });\n    }\n\n    if (setting.component === ComponentTypes.Tags) {\n      if (setting.minTags !== undefined && setting.minTags < 0) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid minTags value for setting ${setting.key}. Must be non-negative.`,\n          path: ['minTags'],\n        });\n      }\n      if (setting.maxTags !== undefined && setting.maxTags < 0) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid maxTags value for setting ${setting.key}. Must be non-negative.`,\n          path: ['maxTags'],\n        });\n      }\n      if (setting.default && !Array.isArray(setting.default)) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid default value for setting ${setting.key}. Must be an array.`,\n          path: ['default'],\n        });\n      }\n      if (setting.default && setting.maxTags && (setting.default as []).length > setting.maxTags) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid default value for setting ${setting.key}. Must have at most ${setting.maxTags} tags.`,\n          path: ['default'],\n        });\n      }\n      if (setting.default && setting.minTags && (setting.default as []).length < setting.minTags) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid default value for setting ${setting.key}. Must have at least ${setting.minTags} tags.`,\n          path: ['default'],\n        });\n      }\n      if (!setting.default) {\n        setting.default = [];\n      }\n    }\n\n    if (\n      setting.component === ComponentTypes.Input ||\n      setting.component === ComponentTypes.Textarea\n    ) {\n      if (setting.type === SettingTypes.Number && setting.component === ComponentTypes.Textarea) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Textarea component for setting ${setting.key} must have type string.`,\n          path: ['type'],\n        });\n        // continue;\n      }\n\n      if (\n        setting.minText !== undefined &&\n        setting.maxText !== undefined &&\n        setting.minText > setting.maxText\n      ) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `For setting ${setting.key}, minText cannot be greater than maxText.`,\n          path: [setting.key, 'minText', 'maxText'],\n        });\n        // continue;\n      }\n      if (!setting.placeholder) {\n        setting.placeholder = '';\n      } // Default placeholder\n    }\n\n    if (setting.component === ComponentTypes.Slider) {\n      if (setting.type === SettingTypes.Number && !setting.range) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Slider component for setting ${setting.key} must have a range if type is number.`,\n          path: ['range'],\n        });\n        // continue;\n      }\n      if (\n        setting.type === SettingTypes.Enum &&\n        (!setting.options || setting.options.length < minSliderOptions)\n      ) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Slider component for setting ${setting.key} requires at least ${minSliderOptions} options for enum type.`,\n          path: ['options'],\n        });\n        // continue;\n      }\n      setting.includeInput =\n        setting.type === SettingTypes.Number ? setting.includeInput ?? true : false; // Default to true if type is number\n    }\n\n    if (setting.component === ComponentTypes.Slider && setting.type === SettingTypes.Number) {\n      if (setting.default === undefined && setting.range) {\n        // Set default to the middle of the range if unspecified\n        setting.default = Math.round((setting.range.min + setting.range.max) / 2);\n      }\n    }\n\n    if (\n      setting.component === ComponentTypes.Checkbox ||\n      setting.component === ComponentTypes.Switch\n    ) {\n      if (setting.options && setting.options.length > 2) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Checkbox/Switch component for setting ${setting.key} must have 1-2 options.`,\n          path: ['options'],\n        });\n        // continue;\n      }\n      if (!setting.default && setting.type === SettingTypes.Boolean) {\n        setting.default = false; // Default to false if type is boolean\n      }\n    }\n\n    if (setting.component === ComponentTypes.Dropdown) {\n      if (!setting.options || setting.options.length < minDropdownOptions) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Dropdown component for setting ${setting.key} requires at least ${minDropdownOptions} options.`,\n          path: ['options'],\n        });\n        // continue;\n      }\n      if (!setting.default && setting.options && setting.options.length > 0) {\n        setting.default = setting.options[0]; // Default to first option if not specified\n      }\n    }\n\n    if (setting.component === ComponentTypes.Combobox) {\n      if (!setting.options || setting.options.length < minComboboxOptions) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Combobox component for setting ${setting.key} requires at least ${minComboboxOptions} options.`,\n          path: ['options'],\n        });\n      }\n      if (!setting.default && setting.options && setting.options.length > 0) {\n        setting.default = setting.options[0];\n      }\n    }\n\n    // Default columnSpan\n    if (!setting.columnSpan) {\n      setting.columnSpan = Math.floor((columns ?? 0) / 2);\n    }\n\n    // Default label to key\n    if (!setting.label) {\n      setting.label = setting.key;\n    }\n\n    // Validate minText and maxText for input/textarea\n    if (\n      setting.component === ComponentTypes.Input ||\n      setting.component === ComponentTypes.Textarea\n    ) {\n      if (setting.minText !== undefined && setting.minText < 0) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid minText value for setting ${setting.key}. Must be non-negative.`,\n          path: ['minText'],\n        });\n      }\n      if (setting.maxText !== undefined && setting.maxText < 0) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Invalid maxText value for setting ${setting.key}. Must be non-negative.`,\n          path: ['maxText'],\n        });\n      }\n    }\n\n    // Validate optionType and conversation schema\n    if (setting.optionType !== OptionTypes.Custom) {\n      const conversationSchema = tConversationSchema.shape[setting.key as keyof TConversation];\n      if (!conversationSchema) {\n        errors.push({\n          code: ZodIssueCode.custom,\n          message: `Setting ${setting.key} with optionType \"${setting.optionType}\" must be defined in tConversationSchema.`,\n          path: ['optionType'],\n        });\n      } else {\n        const zodType = conversationSchema._def.typeName;\n        const settingTypeEquivalent = ZodTypeToSettingType[zodType] || null;\n        if (settingTypeEquivalent !== setting.type) {\n          errors.push({\n            code: ZodIssueCode.custom,\n            message: `Setting ${setting.key} with optionType \"${setting.optionType}\" must match the type defined in tConversationSchema.`,\n            path: ['optionType'],\n          });\n        }\n      }\n    }\n\n    /* Default value checks */\n    if (setting.type === SettingTypes.Number && isNaN(setting.default as number)) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid default value for setting ${setting.key}. Must be a number.`,\n        path: ['default'],\n      });\n    }\n\n    if (setting.type === SettingTypes.Boolean && typeof setting.default !== 'boolean') {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid default value for setting ${setting.key}. Must be a boolean.`,\n        path: ['default'],\n      });\n    }\n\n    if (\n      (setting.type === SettingTypes.String || setting.type === SettingTypes.Enum) &&\n      typeof setting.default !== 'string'\n    ) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid default value for setting ${setting.key}. Must be a string.`,\n        path: ['default'],\n      });\n    }\n\n    if (\n      setting.type === SettingTypes.Enum &&\n      setting.options &&\n      !setting.options.includes(setting.default as string)\n    ) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid default value for setting ${\n          setting.key\n        }. Must be one of the options: [${setting.options.join(', ')}].`,\n        path: ['default'],\n      });\n    }\n\n    if (\n      setting.type === SettingTypes.Number &&\n      setting.range &&\n      typeof setting.default === 'number' &&\n      (setting.default < setting.range.min || setting.default > setting.range.max)\n    ) {\n      errors.push({\n        code: ZodIssueCode.custom,\n        message: `Invalid default value for setting ${setting.key}. Must be within the range [${setting.range.min}, ${setting.range.max}].`,\n        path: ['default'],\n      });\n    }\n  }\n\n  if (errors.length > 0) {\n    throw new ZodError(errors);\n  }\n}\n\nexport const generateOpenAISchema = (customOpenAI: OpenAISettings) => {\n  const defaults = { ...openAI, ...customOpenAI };\n  return tConversationSchema\n    .pick({\n      model: true,\n      chatGptLabel: true,\n      promptPrefix: true,\n      temperature: true,\n      top_p: true,\n      presence_penalty: true,\n      frequency_penalty: true,\n      resendFiles: true,\n      imageDetail: true,\n      maxContextTokens: true,\n    })\n    .transform((obj) => ({\n      ...obj,\n      model: obj.model ?? defaults.model.default,\n      chatGptLabel: obj.chatGptLabel ?? null,\n      promptPrefix: obj.promptPrefix ?? null,\n      temperature: obj.temperature ?? defaults.temperature.default,\n      top_p: obj.top_p ?? defaults.top_p.default,\n      presence_penalty: obj.presence_penalty ?? defaults.presence_penalty.default,\n      frequency_penalty: obj.frequency_penalty ?? defaults.frequency_penalty.default,\n      resendFiles:\n        typeof obj.resendFiles === 'boolean' ? obj.resendFiles : defaults.resendFiles.default,\n      imageDetail: obj.imageDetail ?? defaults.imageDetail.default,\n      maxContextTokens: obj.maxContextTokens ?? undefined,\n    }))\n    .catch(() => ({\n      model: defaults.model.default,\n      chatGptLabel: null,\n      promptPrefix: null,\n      temperature: defaults.temperature.default,\n      top_p: defaults.top_p.default,\n      presence_penalty: defaults.presence_penalty.default,\n      frequency_penalty: defaults.frequency_penalty.default,\n      resendFiles: defaults.resendFiles.default,\n      imageDetail: defaults.imageDetail.default,\n      maxContextTokens: undefined,\n    }));\n};\n\nexport const generateGoogleSchema = (customGoogle: GoogleSettings) => {\n  const defaults = { ...google, ...customGoogle };\n  return tConversationSchema\n    .pick({\n      model: true,\n      modelLabel: true,\n      promptPrefix: true,\n      examples: true,\n      temperature: true,\n      maxOutputTokens: true,\n      topP: true,\n      topK: true,\n      maxContextTokens: true,\n    })\n    .transform((obj) => {\n      return {\n        ...obj,\n        model: obj.model ?? defaults.model.default,\n        modelLabel: obj.modelLabel ?? null,\n        promptPrefix: obj.promptPrefix ?? null,\n        examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }],\n        temperature: obj.temperature ?? defaults.temperature.default,\n        maxOutputTokens: obj.maxOutputTokens ?? defaults.maxOutputTokens.default,\n        topP: obj.topP ?? defaults.topP.default,\n        topK: obj.topK ?? defaults.topK.default,\n        maxContextTokens: obj.maxContextTokens ?? undefined,\n      };\n    })\n    .catch(() => ({\n      model: defaults.model.default,\n      modelLabel: null,\n      promptPrefix: null,\n      examples: [{ input: { content: '' }, output: { content: '' } }],\n      temperature: defaults.temperature.default,\n      maxOutputTokens: defaults.maxOutputTokens.default,\n      topP: defaults.topP.default,\n      topK: defaults.topK.default,\n      maxContextTokens: undefined,\n    }));\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/headers-helpers.ts",
    "content": "import axios from 'axios';\n\nexport function setAcceptLanguageHeader(value: string): void {\n  axios.defaults.headers.common['Accept-Language'] = value;\n}\n\nexport function setTokenHeader(token: string) {\n  // axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/index.ts",
    "content": "/* config */\nexport * from './azure';\nexport * from './bedrock';\nexport * from './config';\nexport * from './file-config';\n/* artifacts  */\nexport * from './artifacts';\n/* schema helpers  */\nexport * from './parsers';\nexport * from './zod';\n/* custom/dynamic configurations  */\nexport * from './generate';\nexport * from './models';\n/* mcp */\nexport * from './mcp';\n/* RBAC */\nexport * from './roles';\n/* types (exports schemas from `./types` as they contain needed in other defs) */\nexport * from './types';\nexport * from './types/agents';\nexport * from './types/assistants';\nexport * from './types/files';\nexport * from './types/mutations';\nexport * from './types/queries';\nexport * from './types/runs';\n/* query/mutation keys */\nexport * from './keys';\n/* api call helpers */\nexport * from './headers-helpers';\nexport { default as request } from './request';\nexport { dataService };\nimport * as dataService from './data-service';\n/* general helpers */\nexport * from './utils';\nexport * from './actions';\nexport { default as createPayload } from './createPayload';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/keys.ts",
    "content": "export enum QueryKeys {\n  messages = 'rcmessages',\n  sharedMessages = 'sharedMessages',\n  sharedLinks = 'sharedLinks',\n  allConversations = 'allConversations',\n  archivedConversations = 'archivedConversations',\n  searchConversations = 'searchConversations',\n  conversation = 'conversation',\n  searchEnabled = 'searchEnabled',\n  user = 'user',\n  name = 'name', // user key name\n  models = 'models',\n  balance = 'balance',\n  endpoints = 'endpoints',\n  presets = 'presets',\n  searchResults = 'searchResults',\n  tokenCount = 'tokenCount',\n  availablePlugins = 'availablePlugins',\n  startupConfig = 'startupConfig',\n  bishengConfig = 'bishengConfig',\n  assistants = 'assistants',\n  assistant = 'assistant',\n  agents = 'agents',\n  agent = 'agent',\n  endpointsConfigOverride = 'endpointsConfigOverride',\n  files = 'files',\n  fileConfig = 'fileConfig',\n  tools = 'tools',\n  toolAuth = 'toolAuth',\n  toolCalls = 'toolCalls',\n  agentTools = 'agentTools',\n  actions = 'actions',\n  assistantDocs = 'assistantDocs',\n  agentDocs = 'agentDocs',\n  fileDownload = 'fileDownload',\n  voices = 'voices',\n  customConfigSpeech = 'customConfigSpeech',\n  prompts = 'prompts',\n  prompt = 'prompt',\n  promptGroups = 'promptGroups',\n  allPromptGroups = 'allPromptGroups',\n  promptGroup = 'promptGroup',\n  categories = 'categories',\n  randomPrompts = 'randomPrompts',\n  roles = 'roles',\n  conversationTags = 'conversationTags',\n  health = 'health',\n  userTerms = 'userTerms',\n  getLinsightCount = 'getLinsightCount',\n  getWorkspaceModel = 'getWorkspaceModel',\n  banner = 'banner',\n}\n\nexport enum MutationKeys {\n  fileUpload = 'fileUpload',\n  fileDelete = 'fileDelete',\n  updatePreset = 'updatePreset',\n  deletePreset = 'deletePreset',\n  loginUser = 'loginUser',\n  logoutUser = 'logoutUser',\n  refreshToken = 'refreshToken',\n  avatarUpload = 'avatarUpload',\n  speechToText = 'speechToText',\n  textToSpeech = 'textToSpeech',\n  assistantAvatarUpload = 'assistantAvatarUpload',\n  agentAvatarUpload = 'agentAvatarUpload',\n  updateAction = 'updateAction',\n  updateAgentAction = 'updateAgentAction',\n  deleteAction = 'deleteAction',\n  deleteAgentAction = 'deleteAgentAction',\n  deleteUser = 'deleteUser',\n  updateRole = 'updateRole',\n  enableTwoFactor = 'enableTwoFactor',\n  verifyTwoFactor = 'verifyTwoFactor'\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/mcp.ts",
    "content": "import { z } from 'zod';\nimport { extractEnvVariable } from './utils';\n\nconst BaseOptionsSchema = z.object({\n  iconPath: z.string().optional(),\n});\n\nexport const StdioOptionsSchema = BaseOptionsSchema.extend({\n  type: z.literal('stdio').optional(),\n  /**\n   * The executable to run to start the server.\n   */\n  command: z.string(),\n  /**\n   * Command line arguments to pass to the executable.\n   */\n  args: z.array(z.string()),\n  /**\n   * The environment to use when spawning the process.\n   *\n   * If not specified, the result of getDefaultEnvironment() will be used.\n   * Environment variables can be referenced using ${VAR_NAME} syntax.\n   */\n  env: z\n    .record(z.string(), z.string())\n    .optional()\n    .transform((env) => {\n      if (!env) {\n        return env;\n      }\n\n      const processedEnv: Record<string, string> = {};\n      for (const [key, value] of Object.entries(env)) {\n        processedEnv[key] = extractEnvVariable(value);\n      }\n      return processedEnv;\n    }),\n  /**\n   * How to handle stderr of the child process. This matches the semantics of Node's `child_process.spawn`.\n   *\n   * @type {import('node:child_process').IOType | import('node:stream').Stream | number}\n   *\n   * The default is \"inherit\", meaning messages to stderr will be printed to the parent process's stderr.\n   */\n  stderr: z.any().optional(),\n});\n\nexport const WebSocketOptionsSchema = BaseOptionsSchema.extend({\n  type: z.literal('websocket').optional(),\n  url: z\n    .string()\n    .url()\n    .refine(\n      (val) => {\n        const protocol = new URL(val).protocol;\n        return protocol === 'ws:' || protocol === 'wss:';\n      },\n      {\n        message: 'WebSocket URL must start with ws:// or wss://',\n      },\n    ),\n});\n\nexport const SSEOptionsSchema = BaseOptionsSchema.extend({\n  type: z.literal('sse').optional(),\n  url: z\n    .string()\n    .url()\n    .refine(\n      (val) => {\n        const protocol = new URL(val).protocol;\n        return protocol !== 'ws:' && protocol !== 'wss:';\n      },\n      {\n        message: 'SSE URL must not start with ws:// or wss://',\n      },\n    ),\n});\n\nexport const MCPOptionsSchema = z.union([\n  StdioOptionsSchema,\n  WebSocketOptionsSchema,\n  SSEOptionsSchema,\n]);\n\nexport const MCPServersSchema = z.record(z.string(), MCPOptionsSchema);\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/models.ts",
    "content": "import { z } from 'zod';\nimport type { TPreset } from './schemas';\nimport {\n  EModelEndpoint,\n  tPresetSchema,\n  eModelEndpointSchema,\n  AuthType,\n  authTypeSchema,\n} from './schemas';\n\nexport type TModelSpec = {\n  name: string;\n  label: string;\n  preset: TPreset;\n  order?: number;\n  default?: boolean;\n  description?: string;\n  showIconInMenu?: boolean;\n  showIconInHeader?: boolean;\n  iconURL?: string | EModelEndpoint; // Allow using project-included icons\n  authType?: AuthType;\n};\n\nexport const tModelSpecSchema = z.object({\n  name: z.string(),\n  label: z.string(),\n  preset: tPresetSchema,\n  order: z.number().optional(),\n  default: z.boolean().optional(),\n  description: z.string().optional(),\n  showIconInMenu: z.boolean().optional(),\n  showIconInHeader: z.boolean().optional(),\n  iconURL: z.union([z.string(), eModelEndpointSchema]).optional(),\n  authType: authTypeSchema.optional(),\n});\n\nexport const specsConfigSchema = z.object({\n  enforce: z.boolean().default(false),\n  prioritize: z.boolean().default(true),\n  list: z.array(tModelSpecSchema).min(1),\n});\n\nexport type TSpecsConfig = z.infer<typeof specsConfigSchema>;\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/parsers.ts",
    "content": "import type { ZodIssue } from 'zod';\nimport type * as a from './types/assistants';\nimport type * as s from './schemas';\nimport type * as t from './types';\nimport { ContentTypes } from './types/runs';\nimport {\n  openAISchema,\n  googleSchema,\n  EModelEndpoint,\n  anthropicSchema,\n  assistantSchema,\n  gptPluginsSchema,\n  // agentsSchema,\n  compactAgentsSchema,\n  compactGoogleSchema,\n  compactChatGPTSchema,\n  chatGPTBrowserSchema,\n  compactPluginsSchema,\n  compactAssistantSchema,\n} from './schemas';\nimport { bedrockInputSchema } from './bedrock';\nimport { extractEnvVariable } from './utils';\nimport { alternateName } from './config';\n\ntype EndpointSchema =\n  | typeof openAISchema\n  | typeof googleSchema\n  | typeof anthropicSchema\n  | typeof chatGPTBrowserSchema\n  | typeof gptPluginsSchema\n  | typeof assistantSchema\n  | typeof compactAgentsSchema\n  | typeof bedrockInputSchema;\n\nconst endpointSchemas: Record<EModelEndpoint, EndpointSchema> = {\n  [EModelEndpoint.openAI]: openAISchema,\n  [EModelEndpoint.azureOpenAI]: openAISchema,\n  [EModelEndpoint.custom]: openAISchema,\n  [EModelEndpoint.google]: googleSchema,\n  [EModelEndpoint.anthropic]: anthropicSchema,\n  [EModelEndpoint.chatGPTBrowser]: chatGPTBrowserSchema,\n  [EModelEndpoint.gptPlugins]: gptPluginsSchema,\n  [EModelEndpoint.assistants]: assistantSchema,\n  [EModelEndpoint.azureAssistants]: assistantSchema,\n  [EModelEndpoint.agents]: compactAgentsSchema,\n  [EModelEndpoint.bedrock]: bedrockInputSchema,\n};\n\n// const schemaCreators: Record<EModelEndpoint, (customSchema: DefaultSchemaValues) => EndpointSchema> = {\n//   [EModelEndpoint.google]: createGoogleSchema,\n// };\n\n/** Get the enabled endpoints from the `ENDPOINTS` environment variable */\nexport function getEnabledEndpoints() {\n  const defaultEndpoints: string[] = [\n    EModelEndpoint.openAI,\n    EModelEndpoint.agents,\n    EModelEndpoint.assistants,\n    EModelEndpoint.azureAssistants,\n    EModelEndpoint.azureOpenAI,\n    EModelEndpoint.google,\n    EModelEndpoint.chatGPTBrowser,\n    EModelEndpoint.gptPlugins,\n    EModelEndpoint.anthropic,\n    EModelEndpoint.bedrock,\n  ];\n\n  const endpointsEnv = process.env.ENDPOINTS ?? '';\n  let enabledEndpoints = defaultEndpoints;\n  if (endpointsEnv) {\n    enabledEndpoints = endpointsEnv\n      .split(',')\n      .filter((endpoint) => endpoint.trim())\n      .map((endpoint) => endpoint.trim());\n  }\n  return enabledEndpoints;\n}\n\n/** Orders an existing EndpointsConfig object based on enabled endpoint/custom ordering */\nexport function orderEndpointsConfig(endpointsConfig: t.TEndpointsConfig) {\n  if (!endpointsConfig) {\n    return {};\n  }\n  const enabledEndpoints = getEnabledEndpoints();\n  const endpointKeys = Object.keys(endpointsConfig);\n  const defaultCustomIndex = enabledEndpoints.indexOf(EModelEndpoint.custom);\n  return endpointKeys.reduce(\n    (accumulatedConfig: Record<string, t.TConfig | null | undefined>, currentEndpointKey) => {\n      const isCustom = !(currentEndpointKey in EModelEndpoint);\n      const isEnabled = enabledEndpoints.includes(currentEndpointKey);\n      if (!isEnabled && !isCustom) {\n        return accumulatedConfig;\n      }\n\n      const index = enabledEndpoints.indexOf(currentEndpointKey);\n\n      if (isCustom) {\n        accumulatedConfig[currentEndpointKey] = {\n          order: defaultCustomIndex >= 0 ? defaultCustomIndex : 9999,\n          ...(endpointsConfig[currentEndpointKey] as Omit<t.TConfig, 'order'> & { order?: number }),\n        };\n      } else if (endpointsConfig[currentEndpointKey]) {\n        accumulatedConfig[currentEndpointKey] = {\n          ...endpointsConfig[currentEndpointKey],\n          order: index,\n        };\n      }\n      return accumulatedConfig;\n    },\n    {},\n  );\n}\n\n/** Converts an array of Zod issues into a string. */\nexport function errorsToString(errors: ZodIssue[]) {\n  return errors\n    .map((error) => {\n      const field = error.path.join('.');\n      const message = error.message;\n\n      return `${field}: ${message}`;\n    })\n    .join(' ');\n}\n\n/** Resolves header values to env variables if detected */\nexport function resolveHeaders(headers: Record<string, string> | undefined) {\n  const resolvedHeaders = { ...(headers ?? {}) };\n\n  if (headers && typeof headers === 'object' && !Array.isArray(headers)) {\n    Object.keys(headers).forEach((key) => {\n      resolvedHeaders[key] = extractEnvVariable(headers[key]);\n    });\n  }\n\n  return resolvedHeaders;\n}\n\nexport function getFirstDefinedValue(possibleValues: string[]) {\n  let returnValue;\n  for (const value of possibleValues) {\n    if (value) {\n      returnValue = value;\n      break;\n    }\n  }\n  return returnValue;\n}\n\nexport function getNonEmptyValue(possibleValues: string[]) {\n  for (const value of possibleValues) {\n    if (value && value.trim() !== '') {\n      return value;\n    }\n  }\n  return undefined;\n}\n\nexport type TPossibleValues = {\n  models: string[];\n  secondaryModels?: string[];\n};\n\nexport const parseConvo = ({\n  endpoint,\n  endpointType,\n  conversation,\n  possibleValues,\n}: {\n  endpoint: EModelEndpoint;\n  endpointType?: EModelEndpoint | null;\n  conversation: Partial<s.TConversation | s.TPreset> | null;\n  possibleValues?: TPossibleValues;\n  // TODO: POC for default schema\n  // defaultSchema?: Partial<EndpointSchema>,\n}) => {\n  let schema = endpointSchemas[endpoint] as EndpointSchema | undefined;\n\n  if (!schema && !endpointType) {\n    throw new Error(`Unknown endpoint: ${endpoint}`);\n  } else if (!schema && endpointType) {\n    schema = endpointSchemas[endpointType];\n  }\n\n  // if (defaultSchema && schemaCreators[endpoint]) {\n  //   schema = schemaCreators[endpoint](defaultSchema);\n  // }\n\n  const convo = schema?.parse(conversation) as s.TConversation | undefined;\n  const { models, secondaryModels } = possibleValues ?? {};\n\n  if (models && convo) {\n    convo.model = getFirstDefinedValue(models) ?? convo.model;\n  }\n\n  if (secondaryModels && convo?.agentOptions) {\n    convo.agentOptions.model = getFirstDefinedValue(secondaryModels) ?? convo.agentOptions.model;\n  }\n\n  return convo;\n};\n\n/** Match GPT followed by digit, optional decimal, and optional suffix\n *\n * Examples: gpt-4, gpt-4o, gpt-4.5, gpt-5a, etc. */\nconst extractGPTVersion = (modelStr: string): string => {\n  const gptMatch = modelStr.match(/gpt-(\\d+(?:\\.\\d+)?)([a-z])?/i);\n  if (gptMatch) {\n    const version = gptMatch[1];\n    const suffix = gptMatch[2] || '';\n    return `GPT-${version}${suffix}`;\n  }\n  return '';\n};\n\n/** Match omni models (o1, o3, etc.), \"o\" followed by a digit, possibly with decimal */\nconst extractOmniVersion = (modelStr: string): string => {\n  const omniMatch = modelStr.match(/\\bo(\\d+(?:\\.\\d+)?)\\b/i);\n  if (omniMatch) {\n    const version = omniMatch[1];\n    return `o${version}`;\n  }\n  return '';\n};\n\nexport const getResponseSender = (endpointOption: t.TEndpointOption): string => {\n  const {\n    model: _m,\n    endpoint,\n    endpointType,\n    modelDisplayLabel: _mdl,\n    chatGptLabel: _cgl,\n    modelLabel: _ml,\n  } = endpointOption;\n\n  const model = _m ?? '';\n  const modelDisplayLabel = _mdl ?? '';\n  const chatGptLabel = _cgl ?? '';\n  const modelLabel = _ml ?? '';\n  if (\n    [\n      EModelEndpoint.openAI,\n      EModelEndpoint.bedrock,\n      EModelEndpoint.gptPlugins,\n      EModelEndpoint.azureOpenAI,\n      EModelEndpoint.chatGPTBrowser,\n    ].includes(endpoint)\n  ) {\n    if (chatGptLabel) {\n      return chatGptLabel;\n    } else if (modelLabel) {\n      return modelLabel;\n    } else if (model && extractOmniVersion(model)) {\n      return extractOmniVersion(model);\n    } else if (model && model.includes('mistral')) {\n      return 'Mistral';\n    } else if (model && model.includes('gpt-')) {\n      const gptVersion = extractGPTVersion(model);\n      return gptVersion || 'GPT';\n    }\n    return (alternateName[endpoint] as string | undefined) ?? 'ChatGPT';\n  }\n\n  if (endpoint === EModelEndpoint.anthropic) {\n    return modelLabel || 'Claude';\n  }\n\n  if (endpoint === EModelEndpoint.bedrock) {\n    return modelLabel || alternateName[endpoint];\n  }\n\n  if (endpoint === EModelEndpoint.google) {\n    if (modelLabel) {\n      return modelLabel;\n    } else if (model && (model.includes('gemini') || model.includes('learnlm'))) {\n      return 'Gemini';\n    } else if (model && model.includes('code')) {\n      return 'Codey';\n    }\n\n    return 'PaLM2';\n  }\n\n  if (endpoint === EModelEndpoint.custom || endpointType === EModelEndpoint.custom) {\n    if (modelLabel) {\n      return modelLabel;\n    } else if (chatGptLabel) {\n      return chatGptLabel;\n    } else if (model && extractOmniVersion(model)) {\n      return extractOmniVersion(model);\n    } else if (model && model.includes('mistral')) {\n      return 'Mistral';\n    } else if (model && model.includes('gpt-')) {\n      const gptVersion = extractGPTVersion(model);\n      return gptVersion || 'GPT';\n    } else if (modelDisplayLabel) {\n      return modelDisplayLabel;\n    }\n\n    return '';\n  }\n\n  return '';\n};\n\ntype CompactEndpointSchema =\n  | typeof openAISchema\n  | typeof compactAssistantSchema\n  | typeof compactAgentsSchema\n  | typeof compactGoogleSchema\n  | typeof anthropicSchema\n  | typeof compactChatGPTSchema\n  | typeof bedrockInputSchema\n  | typeof compactPluginsSchema;\n\nconst compactEndpointSchemas: Record<string, CompactEndpointSchema> = {\n  [EModelEndpoint.openAI]: openAISchema,\n  [EModelEndpoint.azureOpenAI]: openAISchema,\n  [EModelEndpoint.custom]: openAISchema,\n  [EModelEndpoint.assistants]: compactAssistantSchema,\n  [EModelEndpoint.azureAssistants]: compactAssistantSchema,\n  [EModelEndpoint.agents]: compactAgentsSchema,\n  [EModelEndpoint.google]: compactGoogleSchema,\n  [EModelEndpoint.bedrock]: bedrockInputSchema,\n  [EModelEndpoint.anthropic]: anthropicSchema,\n  [EModelEndpoint.chatGPTBrowser]: compactChatGPTSchema,\n  [EModelEndpoint.gptPlugins]: compactPluginsSchema,\n};\n\nexport const parseCompactConvo = ({\n  endpoint,\n  endpointType,\n  conversation,\n  possibleValues,\n}: {\n  endpoint?: EModelEndpoint;\n  endpointType?: EModelEndpoint | null;\n  conversation: Partial<s.TConversation | s.TPreset>;\n  possibleValues?: TPossibleValues;\n  // TODO: POC for default schema\n  // defaultSchema?: Partial<EndpointSchema>,\n}) => {\n  if (!endpoint) {\n    throw new Error(`undefined endpoint: ${endpoint}`);\n  }\n\n  let schema = compactEndpointSchemas[endpoint] as CompactEndpointSchema | undefined;\n\n  if (!schema && !endpointType) {\n    throw new Error(`Unknown endpoint: ${endpoint}`);\n  } else if (!schema && endpointType) {\n    schema = compactEndpointSchemas[endpointType];\n  }\n\n  if (!schema) {\n    throw new Error(`Unknown endpointType: ${endpointType}`);\n  }\n\n  const convo = schema.parse(conversation) as s.TConversation | null;\n  // const { models, secondaryModels } = possibleValues ?? {};\n  const { models } = possibleValues ?? {};\n\n  if (models && convo) {\n    convo.model = getFirstDefinedValue(models) ?? convo.model;\n  }\n\n  // if (secondaryModels && convo.agentOptions) {\n  //   convo.agentOptionmodel = getFirstDefinedValue(secondaryModels) ?? convo.agentOptionmodel;\n  // }\n\n  return convo;\n};\n\nexport function parseTextParts(contentParts: a.TMessageContentParts[]): string {\n  let result = '';\n\n  for (const part of contentParts) {\n    if (part.type === ContentTypes.TEXT) {\n      const textValue = typeof part.text === 'string' ? part.text : part.text.value;\n\n      if (\n        result.length > 0 &&\n        textValue.length > 0 &&\n        result[result.length - 1] !== ' ' &&\n        textValue[0] !== ' '\n      ) {\n        result += ' ';\n      }\n      result += textValue;\n    }\n  }\n\n  return result;\n}\n\nexport const SEPARATORS = ['.', '?', '!', '۔', '。', '‥', ';', '¡', '¿', '\\n', '```'];\n\nexport function findLastSeparatorIndex(text: string, separators = SEPARATORS): number {\n  let lastIndex = -1;\n  for (const separator of separators) {\n    const index = text.lastIndexOf(separator);\n    if (index > lastIndex) {\n      lastIndex = index;\n    }\n  }\n  return lastIndex;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/react-query/index.ts",
    "content": "export * from './react-query-service';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/react-query/react-query-service.ts",
    "content": "import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport type {\n  UseQueryOptions,\n  UseMutationResult,\n  QueryObserverResult,\n} from '@tanstack/react-query';\nimport { initialModelsConfig } from '../config';\nimport { defaultOrderQuery } from '../types/assistants';\nimport * as dataService from '../data-service';\nimport * as m from '../types/mutations';\nimport { QueryKeys } from '../keys';\nimport * as s from '../schemas';\nimport * as t from '../types';\n\nexport const useAbortRequestWithMessage = (): UseMutationResult<\n  void,\n  Error,\n  { endpoint: string; abortKey: string; message: string }\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    ({ endpoint, abortKey, message }) =>\n      dataService.abortRequestWithMessage(endpoint, abortKey, message),\n    {\n      onSuccess: () => {\n        queryClient.invalidateQueries([QueryKeys.balance]);\n      },\n    },\n  );\n};\n\nexport const useGetMessagesByConvoId = <TData = s.TMessage[]>(\n  id: string,\n  shareToken: string,\n  config?: UseQueryOptions<s.TMessage[], unknown, TData>,\n): QueryObserverResult<TData> => {\n  return useQuery<s.TMessage[], unknown, TData>(\n    [QueryKeys.messages, id],\n    () => dataService.getMessagesByConvoId(id, shareToken),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetSharedMessages = (\n  shareId: string,\n  config?: UseQueryOptions<t.TSharedMessagesResponse>,\n): QueryObserverResult<t.TSharedMessagesResponse> => {\n  return useQuery<t.TSharedMessagesResponse>(\n    [QueryKeys.sharedMessages, shareId],\n    () => dataService.getSharedMessages(shareId),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetSharedLinkQuery = (\n  conversationId: string,\n  config?: UseQueryOptions<t.TSharedLinkGetResponse>,\n): QueryObserverResult<t.TSharedLinkGetResponse> => {\n  const queryClient = useQueryClient();\n  return useQuery<t.TSharedLinkGetResponse>(\n    [QueryKeys.sharedLinks, conversationId],\n    () => dataService.getSharedLink(conversationId),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      onSuccess: (data) => {\n        queryClient.setQueryData([QueryKeys.sharedLinks, conversationId], {\n          conversationId: data.conversationId,\n          shareId: data.shareId,\n        });\n      },\n      ...config,\n    },\n  );\n};\n\nexport const useGetConversationByIdQuery = (\n  id: string,\n  config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n  return useQuery<s.TConversation>(\n    [QueryKeys.conversation, id],\n    () => dataService.getConversationById(id),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\n//This isn't ideal because its just a query and we're using mutation, but it was the only way\n//to make it work with how the Chat component is structured\nexport const useGetConversationByIdMutation = (id: string): UseMutationResult<s.TConversation> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.getConversationById(id), {\n    // onSuccess: (res: s.TConversation) => {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.conversation, id]);\n    },\n  });\n};\n\nexport const useUpdateMessageMutation = (\n  id: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageRequest, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: t.TUpdateMessageRequest) => dataService.updateMessage(payload), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.messages, id]);\n    },\n  });\n};\n\nexport const useUpdateMessageContentMutation = (\n  conversationId: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageContent, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (payload: t.TUpdateMessageContent) => dataService.updateMessageContent(payload),\n    {\n      onSuccess: () => {\n        queryClient.invalidateQueries([QueryKeys.messages, conversationId]);\n      },\n    },\n  );\n};\n\nexport const useUpdateUserKeysMutation = (): UseMutationResult<\n  t.TUser,\n  unknown,\n  t.TUpdateUserKeyRequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: t.TUpdateUserKeyRequest) => dataService.updateUserKey(payload), {\n    onSuccess: (data, variables) => {\n      queryClient.invalidateQueries([QueryKeys.name, variables.name]);\n    },\n  });\n};\n\nexport const useClearConversationsMutation = (): UseMutationResult<unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.clearAllConversations(), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.allConversations]);\n    },\n  });\n};\n\nexport const useRevokeUserKeyMutation = (name: string): UseMutationResult<unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.revokeUserKey(name), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.name, name]);\n      if (s.isAssistantsEndpoint(name)) {\n        queryClient.invalidateQueries([QueryKeys.assistants, name, defaultOrderQuery]);\n        queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n        queryClient.invalidateQueries([QueryKeys.assistants]);\n        queryClient.invalidateQueries([QueryKeys.assistant]);\n        queryClient.invalidateQueries([QueryKeys.actions]);\n        queryClient.invalidateQueries([QueryKeys.tools]);\n      }\n    },\n  });\n};\n\nexport const useRevokeAllUserKeysMutation = (): UseMutationResult<unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.revokeAllUserKeys(), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.name]);\n      queryClient.invalidateQueries([\n        QueryKeys.assistants,\n        s.EModelEndpoint.assistants,\n        defaultOrderQuery,\n      ]);\n      queryClient.invalidateQueries([\n        QueryKeys.assistants,\n        s.EModelEndpoint.azureAssistants,\n        defaultOrderQuery,\n      ]);\n      queryClient.invalidateQueries([QueryKeys.assistantDocs]);\n      queryClient.invalidateQueries([QueryKeys.assistants]);\n      queryClient.invalidateQueries([QueryKeys.assistant]);\n      queryClient.invalidateQueries([QueryKeys.actions]);\n      queryClient.invalidateQueries([QueryKeys.tools]);\n    },\n  });\n};\n\nexport const useGetModelsQuery = (\n  config?: UseQueryOptions<t.TModelsConfig>,\n): QueryObserverResult<t.TModelsConfig> => {\n  return useQuery<t.TModelsConfig>([QueryKeys.models], () => dataService.getModels(), {\n    initialData: initialModelsConfig,\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    staleTime: Infinity,\n    ...config,\n  });\n};\n\nexport const useCreatePresetMutation = (): UseMutationResult<\n  s.TPreset,\n  unknown,\n  s.TPreset,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: s.TPreset) => dataService.createPreset(payload), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.presets]);\n    },\n  });\n};\n\nexport const useDeletePresetMutation = (): UseMutationResult<\n  m.PresetDeleteResponse,\n  unknown,\n  s.TPreset | undefined,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: s.TPreset | undefined) => dataService.deletePreset(payload), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.presets]);\n    },\n  });\n};\n\nexport const useSearchQuery = (\n  searchQuery: string,\n  pageNumber: string,\n  config?: UseQueryOptions<t.TSearchResults>,\n): QueryObserverResult<t.TSearchResults> => {\n  return useQuery<t.TSearchResults>(\n    [QueryKeys.searchResults, pageNumber, searchQuery],\n    () => dataService.searchConversations(searchQuery, pageNumber),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useUpdateTokenCountMutation = (): UseMutationResult<\n  t.TUpdateTokenCountResponse,\n  unknown,\n  { text: string },\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(({ text }: { text: string }) => dataService.updateTokenCount(text), {\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.tokenCount]);\n    },\n  });\n};\n\nexport const useRegisterUserMutation = (\n  options?: m.RegistrationOptions,\n): UseMutationResult<t.TError, unknown, t.TRegisterUser, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation<t.TRegisterUserResponse, t.TError, t.TRegisterUser>(\n    (payload: t.TRegisterUser) => dataService.register(payload),\n    {\n      ...options,\n      onSuccess: (...args) => {\n        queryClient.invalidateQueries([QueryKeys.user]);\n        if (options?.onSuccess) {\n          options.onSuccess(...args);\n        }\n      },\n    },\n  );\n};\n\nexport const useUserKeyQuery = (\n  name: string,\n  config?: UseQueryOptions<t.TCheckUserKeyResponse>,\n): QueryObserverResult<t.TCheckUserKeyResponse> => {\n  return useQuery<t.TCheckUserKeyResponse>(\n    [QueryKeys.name, name],\n    () => {\n      if (!name) {\n        return Promise.resolve({ expiresAt: '' });\n      }\n      return dataService.userKeyQuery(name);\n    },\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n    },\n  );\n};\n\nexport const useRequestPasswordResetMutation = (): UseMutationResult<\n  t.TRequestPasswordResetResponse,\n  unknown,\n  t.TRequestPasswordReset,\n  unknown\n> => {\n  return useMutation((payload: t.TRequestPasswordReset) =>\n    dataService.requestPasswordReset(payload),\n  );\n};\n\nexport const useResetPasswordMutation = (): UseMutationResult<\n  unknown,\n  unknown,\n  t.TResetPassword,\n  unknown\n> => {\n  return useMutation((payload: t.TResetPassword) => dataService.resetPassword(payload));\n};\n\nexport const useAvailablePluginsQuery = <TData = s.TPlugin[]>(\n  config?: UseQueryOptions<s.TPlugin[], unknown, TData>,\n): QueryObserverResult<TData> => {\n  return useQuery<s.TPlugin[], unknown, TData>(\n    [QueryKeys.availablePlugins],\n    () => dataService.getAvailablePlugins(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useUpdateUserPluginsMutation = (\n  _options?: m.UpdatePluginAuthOptions,\n): UseMutationResult<t.TUser, unknown, t.TUpdateUserPlugins, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...options } = _options ?? {};\n  return useMutation((payload: t.TUpdateUserPlugins) => dataService.updateUserPlugins(payload), {\n    ...options,\n    onSuccess: (...args) => {\n      queryClient.invalidateQueries([QueryKeys.user]);\n      onSuccess?.(...args);\n    },\n  });\n};\n\nexport const useGetCustomConfigSpeechQuery = (\n  config?: UseQueryOptions<t.TCustomConfigSpeechResponse>,\n): QueryObserverResult<t.TCustomConfigSpeechResponse> => {\n  return useQuery<t.TCustomConfigSpeechResponse>(\n    [QueryKeys.customConfigSpeech],\n    () => dataService.getCustomConfigSpeech(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/request.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosError, AxiosRequestConfig } from 'axios';\nimport * as endpoints from './api-endpoints';\nimport { setTokenHeader } from './headers-helpers';\nimport type * as t from './types';\n\n\nconst customAxios = axios.create({\n  baseURL: import.meta.env.BASE_URL\n  // 配置\n});\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  const response = await customAxios.get(url, { ...options });\n  return response.data;\n}\n\nasync function _getResponse<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  return await customAxios.get(url, { ...options });\n}\n\nasync function _post(url: string, data?: any) {\n  const response = await customAxios.post(url, JSON.stringify(data), {\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n  const response = await customAxios.post(url, formData, {\n    ...options,\n    headers: { 'Content-Type': 'multipart/form-data' },\n  });\n  return response.data;\n}\n\nasync function _postTTS(url: string, formData: FormData, options?: AxiosRequestConfig) {\n  const response = await customAxios.post(url, formData, {\n    ...options,\n    headers: { 'Content-Type': 'multipart/form-data' },\n    responseType: 'arraybuffer',\n  });\n  return response.data;\n}\n\nasync function _put(url: string, data?: any) {\n  const response = await customAxios.put(url, JSON.stringify(data), {\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return response.data;\n}\n\nasync function _delete<T>(url: string): Promise<T> {\n  const response = await customAxios.delete(url);\n  return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n  const response = await customAxios.delete(url, { ...options });\n  return response.data;\n}\n\nasync function _patch(url: string, data?: any) {\n  const response = await customAxios.patch(url, JSON.stringify(data), {\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\nconst refreshToken = (retry?: boolean): Promise<t.TRefreshTokenResponse | undefined> =>\n  _post(endpoints.refreshToken(retry));\n\nconst dispatchTokenUpdatedEvent = (token: string) => {\n  setTokenHeader(token);\n  window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n};\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n  failedQueue.forEach((prom) => {\n    if (error) {\n      prom.reject(error);\n    } else {\n      prom.resolve(token);\n    }\n  });\n  failedQueue = [];\n};\n\ncustomAxios.interceptors.response.use(\n  (response) => {\n    if (response.data.status_code === 403) {\n      localStorage.setItem('ERROR_REQUEST_PATH', response.config.url || '')\n      location.href = `${__APP_ENV__.BASE_URL}/c/new?error=11403`;\n    }\n    return response;\n  },\n  async (error) => {\n    const originalRequest = error.config;\n    if (!error.response) {\n      return Promise.reject(error);\n    }\n\n    if (originalRequest.url?.includes('/api/auth/2fa') === true) {\n      return Promise.reject(error);\n    }\n    if (originalRequest.url?.includes('/api/auth/logout') === true) {\n      return Promise.reject(error);\n    }\n\n    if (error.response.status === 401 && !originalRequest._retry) {\n      console.warn('401 error, refreshing token');\n      originalRequest._retry = true;\n\n      if (import.meta.env.MODE === 'production') {\n        localStorage.setItem('LOGIN_PATHNAME', location.pathname)\n        location.href = `${location.origin}${__APP_ENV__.BISHENG_HOST}`\n      }\n      // } else {\n      //   if (location.pathname.indexOf('login') === -1) {\n      //     // location.href = '/workspace/login';\n      //   }\n      // }\n      // location.href = '/'\n\n      // if (isRefreshing) {\n      //   try {\n      //     const token = await new Promise((resolve, reject) => {\n      //       failedQueue.push({ resolve, reject });\n      //     });\n      //     // originalRequest.headers['Authorization'] = 'Bearer ' + token;\n      //     return await customAxios(originalRequest);\n      //   } catch (err) {\n      //     return Promise.reject(err);\n      //   }\n      // }\n\n      // isRefreshing = true;\n\n      try {\n        // const response = await refreshToken(\n        //   // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n        //   originalRequest.url?.includes('api/auth/refresh') === true ? true : false,\n        // );\n\n        // const token = response?.token ?? '';\n\n        // if (token) {\n        //   originalRequest.headers['Authorization'] = 'Bearer ' + token;\n        //   dispatchTokenUpdatedEvent(token);\n        //   processQueue(null, token);\n        //   return await customAxios(originalRequest);\n        // } else if (window.location.href.includes('share/')) {\n        //   console.log(\n        //     `Refresh token failed from shared link, attempting request to ${originalRequest.url}`,\n        //   );\n        // } else {\n        //   window.location.href = '/login';\n        // }\n      } catch (err) {\n        processQueue(err as AxiosError, null);\n        return Promise.reject(err);\n      } finally {\n        isRefreshing = false;\n      }\n    }\n\n    return Promise.reject(error);\n  },\n);\n\nexport default {\n  get: _get,\n  getResponse: _getResponse,\n  post: _post,\n  postMultiPart: _postMultiPart,\n  postTTS: _postTTS,\n  put: _put,\n  delete: _delete,\n  deleteWithOptions: _deleteWithOptions,\n  patch: _patch,\n  refreshToken,\n  dispatchTokenUpdatedEvent,\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/roles.ts",
    "content": "import { z } from 'zod';\n\n/**\n * Enum for System Defined Roles\n */\nexport enum SystemRoles {\n  /**\n   * The Admin role\n   */\n  ADMIN = 'ADMIN',\n  /**\n   * The default user role\n   */\n  USER = 'USER',\n}\n\n/**\n * Enum for Permission Types\n */\nexport enum PermissionTypes {\n  /**\n   * Type for Prompt Permissions\n   */\n  PROMPTS = 'PROMPTS',\n  /**\n   * Type for Bookmark Permissions\n   */\n  BOOKMARKS = 'BOOKMARKS',\n  /**\n   * Type for Agent Permissions\n   */\n  AGENTS = 'AGENTS',\n  /**\n   * Type for Multi-Conversation Permissions\n   */\n  MULTI_CONVO = 'MULTI_CONVO',\n  /**\n   * Type for Temporary Chat\n   */\n  TEMPORARY_CHAT = 'TEMPORARY_CHAT',\n  /**\n   * Type for using the \"Run Code\" LC Code Interpreter API feature\n   */\n  RUN_CODE = 'RUN_CODE',\n}\n\n/**\n * Enum for Role-Based Access Control Constants\n */\nexport enum Permissions {\n  SHARED_GLOBAL = 'SHARED_GLOBAL',\n  USE = 'USE',\n  CREATE = 'CREATE',\n  UPDATE = 'UPDATE',\n  READ = 'READ',\n  READ_AUTHOR = 'READ_AUTHOR',\n  SHARE = 'SHARE',\n}\n\nexport const promptPermissionsSchema = z.object({\n  [Permissions.SHARED_GLOBAL]: z.boolean().default(false),\n  [Permissions.USE]: z.boolean().default(true),\n  [Permissions.CREATE]: z.boolean().default(true),\n  // [Permissions.SHARE]: z.boolean().default(false),\n});\n\nexport const bookmarkPermissionsSchema = z.object({\n  [Permissions.USE]: z.boolean().default(true),\n});\n\nexport const agentPermissionsSchema = z.object({\n  [Permissions.SHARED_GLOBAL]: z.boolean().default(false),\n  [Permissions.USE]: z.boolean().default(true),\n  [Permissions.CREATE]: z.boolean().default(true),\n  // [Permissions.SHARE]: z.boolean().default(false),\n});\n\nexport const multiConvoPermissionsSchema = z.object({\n  [Permissions.USE]: z.boolean().default(true),\n});\n\nexport const temporaryChatPermissionsSchema = z.object({\n  [Permissions.USE]: z.boolean().default(true),\n});\n\nexport const runCodePermissionsSchema = z.object({\n  [Permissions.USE]: z.boolean().default(true),\n});\n\nexport const roleSchema = z.object({\n  name: z.string(),\n  [PermissionTypes.PROMPTS]: promptPermissionsSchema,\n  [PermissionTypes.BOOKMARKS]: bookmarkPermissionsSchema,\n  [PermissionTypes.AGENTS]: agentPermissionsSchema,\n  [PermissionTypes.MULTI_CONVO]: multiConvoPermissionsSchema,\n  [PermissionTypes.TEMPORARY_CHAT]: temporaryChatPermissionsSchema,\n  [PermissionTypes.RUN_CODE]: runCodePermissionsSchema,\n});\n\nexport type TRole = z.infer<typeof roleSchema>;\nexport type TAgentPermissions = z.infer<typeof agentPermissionsSchema>;\nexport type TPromptPermissions = z.infer<typeof promptPermissionsSchema>;\nexport type TBookmarkPermissions = z.infer<typeof bookmarkPermissionsSchema>;\nexport type TMultiConvoPermissions = z.infer<typeof multiConvoPermissionsSchema>;\nexport type TTemporaryChatPermissions = z.infer<typeof temporaryChatPermissionsSchema>;\nexport type TRunCodePermissions = z.infer<typeof runCodePermissionsSchema>;\n\nconst defaultRolesSchema = z.object({\n  [SystemRoles.ADMIN]: roleSchema.extend({\n    name: z.literal(SystemRoles.ADMIN),\n    [PermissionTypes.PROMPTS]: promptPermissionsSchema.extend({\n      [Permissions.SHARED_GLOBAL]: z.boolean().default(true),\n      [Permissions.USE]: z.boolean().default(true),\n      [Permissions.CREATE]: z.boolean().default(true),\n      // [Permissions.SHARE]: z.boolean().default(true),\n    }),\n    [PermissionTypes.BOOKMARKS]: bookmarkPermissionsSchema.extend({\n      [Permissions.USE]: z.boolean().default(true),\n    }),\n    [PermissionTypes.AGENTS]: agentPermissionsSchema.extend({\n      [Permissions.SHARED_GLOBAL]: z.boolean().default(true),\n      [Permissions.USE]: z.boolean().default(true),\n      [Permissions.CREATE]: z.boolean().default(true),\n      // [Permissions.SHARE]: z.boolean().default(true),\n    }),\n    [PermissionTypes.MULTI_CONVO]: multiConvoPermissionsSchema.extend({\n      [Permissions.USE]: z.boolean().default(true),\n    }),\n    [PermissionTypes.TEMPORARY_CHAT]: temporaryChatPermissionsSchema.extend({\n      [Permissions.USE]: z.boolean().default(true),\n    }),\n    [PermissionTypes.RUN_CODE]: runCodePermissionsSchema.extend({\n      [Permissions.USE]: z.boolean().default(true),\n    }),\n  }),\n  [SystemRoles.USER]: roleSchema.extend({\n    name: z.literal(SystemRoles.USER),\n    [PermissionTypes.PROMPTS]: promptPermissionsSchema,\n    [PermissionTypes.BOOKMARKS]: bookmarkPermissionsSchema,\n    [PermissionTypes.AGENTS]: agentPermissionsSchema,\n    [PermissionTypes.MULTI_CONVO]: multiConvoPermissionsSchema,\n    [PermissionTypes.TEMPORARY_CHAT]: temporaryChatPermissionsSchema,\n    [PermissionTypes.RUN_CODE]: runCodePermissionsSchema,\n  }),\n});\n\nexport const roleDefaults = defaultRolesSchema.parse({\n  [SystemRoles.ADMIN]: {\n    name: SystemRoles.ADMIN,\n    [PermissionTypes.PROMPTS]: {},\n    [PermissionTypes.BOOKMARKS]: {},\n    [PermissionTypes.AGENTS]: {},\n    [PermissionTypes.MULTI_CONVO]: {},\n    [PermissionTypes.TEMPORARY_CHAT]: {},\n    [PermissionTypes.RUN_CODE]: {},\n  },\n  [SystemRoles.USER]: {\n    name: SystemRoles.USER,\n    [PermissionTypes.PROMPTS]: {},\n    [PermissionTypes.BOOKMARKS]: {},\n    [PermissionTypes.AGENTS]: {},\n    [PermissionTypes.MULTI_CONVO]: {},\n    [PermissionTypes.TEMPORARY_CHAT]: {},\n    [PermissionTypes.RUN_CODE]: {},\n  },\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/schemas.ts",
    "content": "import { z } from 'zod';\nimport { Tools } from './types/assistants';\nimport type { TMessageContentParts, FunctionTool, FunctionToolCall } from './types/assistants';\nimport type { TFile } from './types/files';\n\nexport const isUUID = z.string().uuid();\n\nexport enum AuthType {\n  OVERRIDE_AUTH = 'override_auth',\n  USER_PROVIDED = 'user_provided',\n  SYSTEM_DEFINED = 'system_defined',\n}\n\nexport const authTypeSchema = z.nativeEnum(AuthType);\n\nexport enum EModelEndpoint {\n  azureOpenAI = 'azureOpenAI',\n  openAI = 'openAI',\n  google = 'google',\n  anthropic = 'anthropic',\n  assistants = 'assistants',\n  azureAssistants = 'azureAssistants',\n  agents = 'agents',\n  custom = 'custom',\n  bedrock = 'bedrock',\n  /** @deprecated */\n  chatGPTBrowser = 'chatGPTBrowser',\n  /** @deprecated */\n  gptPlugins = 'gptPlugins',\n}\n\nexport const paramEndpoints = new Set<EModelEndpoint | string>([\n  EModelEndpoint.agents,\n  EModelEndpoint.openAI,\n  EModelEndpoint.bedrock,\n  EModelEndpoint.azureOpenAI,\n  EModelEndpoint.anthropic,\n  EModelEndpoint.custom,\n  EModelEndpoint.google,\n]);\n\nexport enum BedrockProviders {\n  AI21 = 'ai21',\n  Amazon = 'amazon',\n  Anthropic = 'anthropic',\n  Cohere = 'cohere',\n  Meta = 'meta',\n  MistralAI = 'mistral',\n  StabilityAI = 'stability',\n}\n\nexport const getModelKey = (endpoint: EModelEndpoint | string, model: string) => {\n  if (endpoint === EModelEndpoint.bedrock) {\n    const parts = model.split('.');\n    const provider = [parts[0], parts[1]].find((part) =>\n      Object.values(BedrockProviders).includes(part as BedrockProviders),\n    );\n    return (provider ?? parts[0]) as BedrockProviders;\n  }\n  return model;\n};\n\nexport const getSettingsKeys = (endpoint: EModelEndpoint | string, model: string) => {\n  const endpointKey = endpoint;\n  const modelKey = getModelKey(endpointKey, model);\n  const combinedKey = `${endpointKey}-${modelKey}`;\n  return [combinedKey, endpointKey];\n};\n\nexport type AssistantsEndpoint = EModelEndpoint.assistants | EModelEndpoint.azureAssistants;\n\nexport const isAssistantsEndpoint = (_endpoint?: AssistantsEndpoint | null | string): boolean => {\n  const endpoint = _endpoint ?? '';\n  if (!endpoint) {\n    return false;\n  }\n  return endpoint.toLowerCase().endsWith(EModelEndpoint.assistants);\n};\n\nexport type AgentProvider = Exclude<keyof typeof EModelEndpoint, EModelEndpoint.agents> | string;\n\nexport const isAgentsEndpoint = (_endpoint?: EModelEndpoint.agents | null | string): boolean => {\n  const endpoint = _endpoint ?? '';\n  if (!endpoint) {\n    return false;\n  }\n  return endpoint === EModelEndpoint.agents;\n};\n\nexport const isParamEndpoint = (\n  endpoint: EModelEndpoint | string,\n  endpointType?: EModelEndpoint | string,\n): boolean => {\n  if (paramEndpoints.has(endpoint)) {\n    return true;\n  }\n\n  if (endpointType != null) {\n    return paramEndpoints.has(endpointType);\n  }\n\n  return false;\n};\n\nexport enum ImageDetail {\n  low = 'low',\n  auto = 'auto',\n  high = 'high',\n}\n\nexport enum ReasoningEffort {\n  low = 'low',\n  medium = 'medium',\n  high = 'high',\n}\n\nexport const imageDetailNumeric = {\n  [ImageDetail.low]: 0,\n  [ImageDetail.auto]: 1,\n  [ImageDetail.high]: 2,\n};\n\nexport const imageDetailValue = {\n  0: ImageDetail.low,\n  1: ImageDetail.auto,\n  2: ImageDetail.high,\n};\n\nexport const eImageDetailSchema = z.nativeEnum(ImageDetail);\nexport const eReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const defaultAssistantFormValues = {\n  assistant: '',\n  id: '',\n  name: '',\n  description: '',\n  instructions: '',\n  conversation_starters: [],\n  model: '',\n  functions: [],\n  code_interpreter: false,\n  image_vision: false,\n  retrieval: false,\n  append_current_datetime: false,\n};\n\nexport const defaultAgentFormValues = {\n  agent: {},\n  id: '',\n  name: '',\n  description: '',\n  instructions: '',\n  model: '',\n  model_parameters: {},\n  tools: [],\n  provider: {},\n  projectIds: [],\n  artifacts: '',\n  isCollaborative: false,\n  [Tools.execute_code]: false,\n  [Tools.file_search]: false,\n};\n\nexport const ImageVisionTool: FunctionTool = {\n  type: Tools.function,\n  [Tools.function]: {\n    name: 'image_vision',\n    description: 'Get detailed text descriptions for all current image attachments.',\n    parameters: {\n      type: 'object',\n      properties: {},\n      required: [],\n    },\n  },\n};\n\nexport const isImageVisionTool = (tool: FunctionTool | FunctionToolCall) =>\n  tool.type === 'function' && tool.function?.name === ImageVisionTool.function?.name;\n\nexport const openAISettings = {\n  model: {\n    default: 'gpt-4o-mini' as const,\n  },\n  temperature: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  top_p: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  presence_penalty: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 0 as const,\n  },\n  frequency_penalty: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 0 as const,\n  },\n  resendFiles: {\n    default: true as const,\n  },\n  maxContextTokens: {\n    default: undefined,\n  },\n  max_tokens: {\n    default: undefined,\n  },\n  imageDetail: {\n    default: ImageDetail.auto as const,\n    min: 0 as const,\n    max: 2 as const,\n    step: 1 as const,\n  },\n};\n\nexport const googleSettings = {\n  model: {\n    default: 'gemini-1.5-flash-latest' as const,\n  },\n  maxOutputTokens: {\n    min: 1 as const,\n    max: 8192 as const,\n    step: 1 as const,\n    default: 8192 as const,\n  },\n  temperature: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  topP: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 0.95 as const,\n  },\n  topK: {\n    min: 1 as const,\n    max: 40 as const,\n    step: 1 as const,\n    default: 40 as const,\n  },\n};\n\nconst ANTHROPIC_MAX_OUTPUT = 128000 as const;\nconst DEFAULT_MAX_OUTPUT = 8192 as const;\nconst LEGACY_ANTHROPIC_MAX_OUTPUT = 4096 as const;\nexport const anthropicSettings = {\n  model: {\n    default: 'claude-3-5-sonnet-latest' as const,\n  },\n  temperature: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  promptCache: {\n    default: true as const,\n  },\n  thinking: {\n    default: true as const,\n  },\n  thinkingBudget: {\n    min: 1024 as const,\n    step: 100 as const,\n    max: 200000 as const,\n    default: 2000 as const,\n  },\n  maxOutputTokens: {\n    min: 1 as const,\n    max: ANTHROPIC_MAX_OUTPUT,\n    step: 1 as const,\n    default: DEFAULT_MAX_OUTPUT,\n    reset: (modelName: string) => {\n      if (/claude-3[-.]5-sonnet/.test(modelName) || /claude-3[-.]7/.test(modelName)) {\n        return DEFAULT_MAX_OUTPUT;\n      }\n\n      return 4096;\n    },\n    set: (value: number, modelName: string) => {\n      if (\n        !(/claude-3[-.]5-sonnet/.test(modelName) || /claude-3[-.]7/.test(modelName)) &&\n        value > LEGACY_ANTHROPIC_MAX_OUTPUT\n      ) {\n        return LEGACY_ANTHROPIC_MAX_OUTPUT;\n      }\n\n      return value;\n    },\n  },\n  topP: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 0.7 as const,\n  },\n  topK: {\n    min: 1 as const,\n    max: 40 as const,\n    step: 1 as const,\n    default: 5 as const,\n  },\n  resendFiles: {\n    default: true as const,\n  },\n  maxContextTokens: {\n    default: undefined,\n  },\n  legacy: {\n    maxOutputTokens: {\n      min: 1 as const,\n      max: LEGACY_ANTHROPIC_MAX_OUTPUT,\n      step: 1 as const,\n      default: LEGACY_ANTHROPIC_MAX_OUTPUT,\n    },\n  },\n};\n\nexport const agentsSettings = {\n  model: {\n    default: 'gpt-3.5-turbo-test' as const,\n  },\n  temperature: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  top_p: {\n    min: 0 as const,\n    max: 1 as const,\n    step: 0.01 as const,\n    default: 1 as const,\n  },\n  presence_penalty: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 0 as const,\n  },\n  frequency_penalty: {\n    min: 0 as const,\n    max: 2 as const,\n    step: 0.01 as const,\n    default: 0 as const,\n  },\n  resendFiles: {\n    default: true as const,\n  },\n  maxContextTokens: {\n    default: undefined,\n  },\n  max_tokens: {\n    default: undefined,\n  },\n  imageDetail: {\n    default: ImageDetail.auto as const,\n  },\n};\n\nexport const endpointSettings = {\n  [EModelEndpoint.openAI]: openAISettings,\n  [EModelEndpoint.google]: googleSettings,\n  [EModelEndpoint.anthropic]: anthropicSettings,\n  [EModelEndpoint.agents]: agentsSettings,\n  [EModelEndpoint.bedrock]: agentsSettings,\n};\n\nconst google = endpointSettings[EModelEndpoint.google];\n\nexport const eModelEndpointSchema = z.nativeEnum(EModelEndpoint);\n\nexport const extendedModelEndpointSchema = z.union([eModelEndpointSchema, z.string()]);\n\nexport const tPluginAuthConfigSchema = z.object({\n  authField: z.string(),\n  label: z.string(),\n  description: z.string(),\n});\n\nexport type TPluginAuthConfig = z.infer<typeof tPluginAuthConfigSchema>;\n\nexport const tPluginSchema = z.object({\n  name: z.string(),\n  pluginKey: z.string(),\n  description: z.string(),\n  icon: z.string().optional(),\n  authConfig: z.array(tPluginAuthConfigSchema).optional(),\n  authenticated: z.boolean().optional(),\n  isButton: z.boolean().optional(),\n  toolkit: z.boolean().optional(),\n});\n\nexport type TPlugin = z.infer<typeof tPluginSchema>;\n\nexport type TInput = {\n  inputStr: string;\n};\n\nexport type TResPlugin = {\n  plugin: string;\n  input: string;\n  thought: string;\n  loading?: boolean;\n  outputs?: string;\n  latest?: string;\n  inputs?: TInput[];\n};\n\nexport const tExampleSchema = z.object({\n  input: z.object({\n    content: z.string(),\n  }),\n  output: z.object({\n    content: z.string(),\n  }),\n});\n\nexport type TExample = z.infer<typeof tExampleSchema>;\n\nexport enum EAgent {\n  functions = 'functions',\n  classic = 'classic',\n}\n\nexport const agentOptionSettings = {\n  model: {\n    default: 'gpt-4o-mini',\n  },\n  temperature: {\n    min: 0,\n    max: 1,\n    step: 0.01,\n    default: 0,\n  },\n  agent: {\n    default: EAgent.functions,\n    options: [EAgent.functions, EAgent.classic],\n  },\n  skipCompletion: {\n    default: true,\n  },\n};\n\nexport const eAgentOptionsSchema = z.nativeEnum(EAgent);\n\nexport const tAgentOptionsSchema = z.object({\n  agent: z.string().default(EAgent.functions),\n  skipCompletion: z.boolean().default(agentOptionSettings.skipCompletion.default),\n  model: z.string(),\n  temperature: z.number().default(agentOptionSettings.temperature.default),\n});\n\nexport const tMessageSchema = z.object({\n  messageId: z.string(),\n  endpoint: z.string().optional(),\n  clientId: z.string().nullable().optional(),\n  conversationId: z.string().nullable(),\n  parentMessageId: z.string().nullable(),\n  responseMessageId: z.string().nullable().optional(),\n  overrideParentMessageId: z.string().nullable().optional(),\n  bg: z.string().nullable().optional(),\n  model: z.string().nullable().optional(),\n  title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n  sender: z.string().optional(),\n  text: z.string(),\n  generation: z.string().nullable().optional(),\n  isCreatedByUser: z.boolean(),\n  error: z.boolean().optional(),\n  clientTimestamp: z.string().optional(),\n  createdAt: z\n    .string()\n    .optional()\n    .default(() => new Date().toISOString()),\n  updatedAt: z\n    .string()\n    .optional()\n    .default(() => new Date().toISOString()),\n  current: z.boolean().optional(),\n  unfinished: z.boolean().optional(),\n  searchResult: z.boolean().optional(),\n  finish_reason: z.string().optional(),\n  /* assistant */\n  thread_id: z.string().optional(),\n  /* frontend components */\n  iconURL: z.string().nullable().optional(),\n});\n\nexport type TAttachmentMetadata = { messageId: string; toolCallId: string };\nexport type TAttachment =\n  | (TFile & TAttachmentMetadata)\n  | (Pick<TFile, 'filename' | 'filepath' | 'conversationId'> & {\n      expiresAt: number;\n    } & TAttachmentMetadata);\n\nexport type TMessage = z.input<typeof tMessageSchema> & {\n  children?: TMessage[];\n  plugin?: TResPlugin | null;\n  plugins?: TResPlugin[];\n  content?: TMessageContentParts[];\n  files?: Partial<TFile>[];\n  depth?: number;\n  siblingIndex?: number;\n  attachments?: TAttachment[];\n  clientTimestamp?: string;\n};\n\nexport const coerceNumber = z.union([z.number(), z.string()]).transform((val) => {\n  if (typeof val === 'string') {\n    return val.trim() === '' ? undefined : parseFloat(val);\n  }\n  return val;\n});\n\ntype DocumentTypeValue =\n  | null\n  | boolean\n  | number\n  | string\n  | DocumentTypeValue[]\n  | { [key: string]: DocumentTypeValue };\n\nconst DocumentType: z.ZodType<DocumentTypeValue> = z.lazy(() =>\n  z.union([\n    z.null(),\n    z.boolean(),\n    z.number(),\n    z.string(),\n    z.array(z.lazy(() => DocumentType)),\n    z.record(z.lazy(() => DocumentType)),\n  ]),\n);\n\nexport const tConversationSchema = z.object({\n  conversationId: z.string().nullable(),\n  endpoint: eModelEndpointSchema.nullable(),\n  endpointType: eModelEndpointSchema.nullable().optional(),\n  isArchived: z.boolean().optional(),\n  title: z.string().nullable().or(z.literal('New Chat')).default('New Chat'),\n  user: z.string().optional(),\n  messages: z.array(z.string()).optional(),\n  tools: z.union([z.array(tPluginSchema), z.array(z.string())]).optional(),\n  modelLabel: z.string().nullable().optional(),\n  userLabel: z.string().optional(),\n  model: z.string().nullable().optional(),\n  promptPrefix: z.string().nullable().optional(),\n  temperature: z.number().optional(),\n  topP: z.number().optional(),\n  topK: z.number().optional(),\n  top_p: z.number().optional(),\n  frequency_penalty: z.number().optional(),\n  presence_penalty: z.number().optional(),\n  parentMessageId: z.string().optional(),\n  maxOutputTokens: coerceNumber.optional(),\n  maxContextTokens: coerceNumber.optional(),\n  max_tokens: coerceNumber.optional(),\n  /* Anthropic */\n  promptCache: z.boolean().optional(),\n  system: z.string().optional(),\n  thinking: z.boolean().optional(),\n  thinkingBudget: coerceNumber.optional(),\n  /* artifacts */\n  artifacts: z.string().optional(),\n  /* google */\n  context: z.string().nullable().optional(),\n  examples: z.array(tExampleSchema).optional(),\n  /* DB */\n  tags: z.array(z.string()).optional(),\n  createdAt: z.string(),\n  updatedAt: z.string(),\n  /* Files */\n  resendFiles: z.boolean().optional(),\n  file_ids: z.array(z.string()).optional(),\n  /* vision */\n  imageDetail: eImageDetailSchema.optional(),\n  /* OpenAI: o1 only */\n  reasoning_effort: eReasoningEffortSchema.optional(),\n  /* assistant */\n  assistant_id: z.string().optional(),\n  /* agents */\n  agent_id: z.string().optional(),\n  /* AWS Bedrock */\n  region: z.string().optional(),\n  maxTokens: coerceNumber.optional(),\n  additionalModelRequestFields: DocumentType.optional(),\n  /* assistants */\n  instructions: z.string().optional(),\n  additional_instructions: z.string().optional(),\n  append_current_datetime: z.boolean().optional(),\n  /** Used to overwrite active conversation settings when saving a Preset */\n  presetOverride: z.record(z.unknown()).optional(),\n  stop: z.array(z.string()).optional(),\n  /* frontend components */\n  greeting: z.string().optional(),\n  spec: z.string().nullable().optional(),\n  iconURL: z.string().nullable().optional(),\n  /* temporary chat */\n  expiredAt: z.string().nullable().optional(),\n  /** @deprecated */\n  resendImages: z.boolean().optional(),\n  /** @deprecated */\n  agentOptions: tAgentOptionsSchema.nullable().optional(),\n  /** @deprecated Prefer `modelLabel` over `chatGptLabel` */\n  chatGptLabel: z.string().nullable().optional(),\n});\n\nexport const tPresetSchema = tConversationSchema\n  .omit({\n    conversationId: true,\n    createdAt: true,\n    updatedAt: true,\n    title: true,\n  })\n  .merge(\n    z.object({\n      conversationId: z.string().nullable().optional(),\n      presetId: z.string().nullable().optional(),\n      title: z.string().nullable().optional(),\n      defaultPreset: z.boolean().optional(),\n      order: z.number().optional(),\n      endpoint: extendedModelEndpointSchema.nullable(),\n    }),\n  );\n\nexport const tConvoUpdateSchema = tConversationSchema.merge(\n  z.object({\n    endpoint: extendedModelEndpointSchema.nullable(),\n  }),\n);\n\nexport const tQueryParamsSchema = tConversationSchema\n  .pick({\n    // librechat settings\n    /** The AI context window, overrides the system-defined window as determined by `model` value */\n    maxContextTokens: true,\n    /**\n     * Whether or not to re-submit files from previous messages on subsequent messages\n     * */\n    resendFiles: true,\n    /**\n     * @endpoints openAI, custom, azureOpenAI\n     *\n     * System parameter that only affects the above endpoints.\n     * Image detail for re-sizing according to OpenAI spec, defaults to `auto`\n     * */\n    imageDetail: true,\n    /**\n     * AKA Custom Instructions, dynamically added to chat history as a system message;\n     * for `bedrock` endpoint, this is used as the `system` model param if the provider uses it;\n     * for `assistants` endpoint, this is used as the `additional_instructions` model param:\n     * https://platform.openai.com/docs/api-reference/runs/createRun#runs-createrun-additional_instructions\n     * ; otherwise, a message with `system` role is added to the chat history\n     */\n    promptPrefix: true,\n    // Model parameters\n    /** @endpoints openAI, custom, azureOpenAI, google, anthropic, assistants, azureAssistants, bedrock */\n    model: true,\n    /** @endpoints openAI, custom, azureOpenAI, google, anthropic, bedrock */\n    temperature: true,\n    /** @endpoints openAI, custom, azureOpenAI */\n    presence_penalty: true,\n    /** @endpoints openAI, custom, azureOpenAI */\n    frequency_penalty: true,\n    /** @endpoints openAI, custom, azureOpenAI */\n    stop: true,\n    /** @endpoints openAI, custom, azureOpenAI */\n    top_p: true,\n    /** @endpoints openAI, custom, azureOpenAI */\n    max_tokens: true,\n    /** @endpoints google, anthropic, bedrock */\n    topP: true,\n    /** @endpoints google, anthropic */\n    topK: true,\n    /** @endpoints google, anthropic */\n    maxOutputTokens: true,\n    /** @endpoints anthropic */\n    promptCache: true,\n    thinking: true,\n    thinkingBudget: true,\n    /** @endpoints bedrock */\n    region: true,\n    /** @endpoints bedrock */\n    maxTokens: true,\n    /** @endpoints agents */\n    agent_id: true,\n    /** @endpoints assistants, azureAssistants */\n    assistant_id: true,\n    /** @endpoints assistants, azureAssistants */\n    append_current_datetime: true,\n    /**\n     * @endpoints assistants, azureAssistants\n     *\n     * Overrides existing assistant instructions, only used for the current run:\n     * https://platform.openai.com/docs/api-reference/runs/createRun#runs-createrun-instructions\n     * */\n    instructions: true,\n  })\n  .merge(\n    z.object({\n      /** @endpoints openAI, custom, azureOpenAI, google, anthropic, assistants, azureAssistants, bedrock, agents */\n      endpoint: extendedModelEndpointSchema.nullable(),\n    }),\n  );\n\nexport type TPreset = z.infer<typeof tPresetSchema>;\n\nexport type TSetOption = (\n  param: number | string,\n) => (newValue: number | string | boolean | string[] | Partial<TPreset>) => void;\n\nexport type TConversation = z.infer<typeof tConversationSchema> & {\n  presetOverride?: Partial<TPreset>;\n};\n\nexport const tSharedLinkSchema = z.object({\n  conversationId: z.string(),\n  shareId: z.string(),\n  messages: z.array(z.string()),\n  isPublic: z.boolean(),\n  title: z.string(),\n  createdAt: z.string(),\n  updatedAt: z.string(),\n});\n\nexport type TSharedLink = z.infer<typeof tSharedLinkSchema>;\n\nexport const tConversationTagSchema = z.object({\n  _id: z.string(),\n  user: z.string(),\n  tag: z.string(),\n  description: z.string().optional(),\n  createdAt: z.string(),\n  updatedAt: z.string(),\n  count: z.number(),\n  position: z.number(),\n});\nexport type TConversationTag = z.infer<typeof tConversationTagSchema>;\n\nexport const googleSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    promptPrefix: true,\n    examples: true,\n    temperature: true,\n    maxOutputTokens: true,\n    artifacts: true,\n    topP: true,\n    topK: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n  })\n  .transform((obj: Partial<TConversation>) => removeNullishValues(obj))\n  .catch(() => ({}));\n\n/**\n   * TODO: Map the following fields:\n  - presence_penalty -> presencePenalty\n  - frequency_penalty -> frequencyPenalty\n  - stop -> stopSequences\n   */\nexport const googleGenConfigSchema = z\n  .object({\n    maxOutputTokens: coerceNumber.optional(),\n    temperature: coerceNumber.optional(),\n    topP: coerceNumber.optional(),\n    topK: coerceNumber.optional(),\n    presencePenalty: coerceNumber.optional(),\n    frequencyPenalty: coerceNumber.optional(),\n    stopSequences: z.array(z.string()).optional(),\n  })\n  .strip()\n  .optional();\n\nexport const chatGPTBrowserSchema = tConversationSchema\n  .pick({\n    model: true,\n  })\n  .transform((obj) => ({\n    ...obj,\n    model: obj.model ?? 'text-davinci-002-render-sha',\n  }))\n  .catch(() => ({\n    model: 'text-davinci-002-render-sha',\n  }));\n\nexport const gptPluginsSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    chatGptLabel: true,\n    promptPrefix: true,\n    temperature: true,\n    artifacts: true,\n    top_p: true,\n    presence_penalty: true,\n    frequency_penalty: true,\n    tools: true,\n    agentOptions: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n  })\n  .transform((obj) => {\n    const result = {\n      ...obj,\n      model: obj.model ?? 'gpt-3.5-turbo',\n      chatGptLabel: obj.chatGptLabel ?? obj.modelLabel ?? null,\n      promptPrefix: obj.promptPrefix ?? null,\n      temperature: obj.temperature ?? 0.8,\n      top_p: obj.top_p ?? 1,\n      presence_penalty: obj.presence_penalty ?? 0,\n      frequency_penalty: obj.frequency_penalty ?? 0,\n      tools: obj.tools ?? [],\n      agentOptions: obj.agentOptions ?? {\n        agent: EAgent.functions,\n        skipCompletion: true,\n        model: 'gpt-3.5-turbo',\n        temperature: 0,\n      },\n      iconURL: obj.iconURL ?? undefined,\n      greeting: obj.greeting ?? undefined,\n      spec: obj.spec ?? undefined,\n      maxContextTokens: obj.maxContextTokens ?? undefined,\n    };\n\n    if (obj.modelLabel != null && obj.modelLabel !== '') {\n      result.modelLabel = null;\n    }\n\n    return result;\n  })\n  .catch(() => ({\n    model: 'gpt-3.5-turbo',\n    chatGptLabel: null,\n    promptPrefix: null,\n    temperature: 0.8,\n    top_p: 1,\n    presence_penalty: 0,\n    frequency_penalty: 0,\n    tools: [],\n    agentOptions: {\n      agent: EAgent.functions,\n      skipCompletion: true,\n      model: 'gpt-3.5-turbo',\n      temperature: 0,\n    },\n    iconURL: undefined,\n    greeting: undefined,\n    spec: undefined,\n    maxContextTokens: undefined,\n  }));\n\nexport function removeNullishValues<T extends Record<string, unknown>>(\n  obj: T,\n  removeEmptyStrings?: boolean,\n): Partial<T> {\n  const newObj: Partial<T> = { ...obj };\n\n  (Object.keys(newObj) as Array<keyof T>).forEach((key) => {\n    const value = newObj[key];\n    if (value === undefined || value === null) {\n      delete newObj[key];\n    }\n    if (removeEmptyStrings && typeof value === 'string' && value === '') {\n      delete newObj[key];\n    }\n  });\n\n  return newObj;\n}\n\nexport const assistantSchema = tConversationSchema\n  .pick({\n    model: true,\n    assistant_id: true,\n    instructions: true,\n    artifacts: true,\n    promptPrefix: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    append_current_datetime: true,\n  })\n  .transform((obj) => ({\n    ...obj,\n    model: obj.model ?? openAISettings.model.default,\n    assistant_id: obj.assistant_id ?? undefined,\n    instructions: obj.instructions ?? undefined,\n    promptPrefix: obj.promptPrefix ?? null,\n    iconURL: obj.iconURL ?? undefined,\n    greeting: obj.greeting ?? undefined,\n    spec: obj.spec ?? undefined,\n    append_current_datetime: obj.append_current_datetime ?? false,\n  }))\n  .catch(() => ({\n    model: openAISettings.model.default,\n    assistant_id: undefined,\n    instructions: undefined,\n    promptPrefix: null,\n    iconURL: undefined,\n    greeting: undefined,\n    spec: undefined,\n    append_current_datetime: false,\n  }));\n\nexport const compactAssistantSchema = tConversationSchema\n  .pick({\n    model: true,\n    assistant_id: true,\n    instructions: true,\n    promptPrefix: true,\n    artifacts: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n  })\n  .transform((obj) => removeNullishValues(obj))\n  .catch(() => ({}));\n\nexport const agentsSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    temperature: true,\n    top_p: true,\n    presence_penalty: true,\n    frequency_penalty: true,\n    resendFiles: true,\n    imageDetail: true,\n    agent_id: true,\n    instructions: true,\n    promptPrefix: true,\n    iconURL: true,\n    greeting: true,\n    maxContextTokens: true,\n  })\n  .transform((obj) => ({\n    ...obj,\n    model: obj.model ?? agentsSettings.model.default,\n    modelLabel: obj.modelLabel ?? null,\n    temperature: obj.temperature ?? 1,\n    top_p: obj.top_p ?? 1,\n    presence_penalty: obj.presence_penalty ?? 0,\n    frequency_penalty: obj.frequency_penalty ?? 0,\n    resendFiles:\n      typeof obj.resendFiles === 'boolean' ? obj.resendFiles : agentsSettings.resendFiles.default,\n    imageDetail: obj.imageDetail ?? ImageDetail.auto,\n    agent_id: obj.agent_id ?? undefined,\n    instructions: obj.instructions ?? undefined,\n    promptPrefix: obj.promptPrefix ?? null,\n    iconURL: obj.iconURL ?? undefined,\n    greeting: obj.greeting ?? undefined,\n    maxContextTokens: obj.maxContextTokens ?? undefined,\n  }))\n  .catch(() => ({\n    model: agentsSettings.model.default,\n    modelLabel: null,\n    temperature: 1,\n    top_p: 1,\n    presence_penalty: 0,\n    frequency_penalty: 0,\n    resendFiles: agentsSettings.resendFiles.default,\n    imageDetail: ImageDetail.auto,\n    agent_id: undefined,\n    instructions: undefined,\n    promptPrefix: null,\n    iconURL: undefined,\n    greeting: undefined,\n    maxContextTokens: undefined,\n  }));\n\nexport const openAISchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    chatGptLabel: true,\n    promptPrefix: true,\n    temperature: true,\n    top_p: true,\n    presence_penalty: true,\n    frequency_penalty: true,\n    resendFiles: true,\n    artifacts: true,\n    imageDetail: true,\n    stop: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n    max_tokens: true,\n    reasoning_effort: true,\n  })\n  .transform((obj: Partial<TConversation>) => removeNullishValues(obj))\n  .catch(() => ({}));\n\nexport const compactGoogleSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    promptPrefix: true,\n    examples: true,\n    temperature: true,\n    maxOutputTokens: true,\n    artifacts: true,\n    topP: true,\n    topK: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n  })\n  .transform((obj) => {\n    const newObj: Partial<TConversation> = { ...obj };\n    if (newObj.temperature === google.temperature.default) {\n      delete newObj.temperature;\n    }\n    if (newObj.maxOutputTokens === google.maxOutputTokens.default) {\n      delete newObj.maxOutputTokens;\n    }\n    if (newObj.topP === google.topP.default) {\n      delete newObj.topP;\n    }\n    if (newObj.topK === google.topK.default) {\n      delete newObj.topK;\n    }\n\n    return removeNullishValues(newObj);\n  })\n  .catch(() => ({}));\n\nexport const anthropicSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    promptPrefix: true,\n    temperature: true,\n    maxOutputTokens: true,\n    topP: true,\n    topK: true,\n    resendFiles: true,\n    promptCache: true,\n    thinking: true,\n    thinkingBudget: true,\n    artifacts: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n  })\n  .transform((obj) => removeNullishValues(obj))\n  .catch(() => ({}));\n\nexport const compactChatGPTSchema = tConversationSchema\n  .pick({\n    model: true,\n  })\n  .transform((obj) => {\n    const newObj: Partial<TConversation> = { ...obj };\n    return removeNullishValues(newObj);\n  })\n  .catch(() => ({}));\n\nexport const compactPluginsSchema = tConversationSchema\n  .pick({\n    model: true,\n    modelLabel: true,\n    chatGptLabel: true,\n    promptPrefix: true,\n    temperature: true,\n    top_p: true,\n    presence_penalty: true,\n    frequency_penalty: true,\n    tools: true,\n    agentOptions: true,\n    iconURL: true,\n    greeting: true,\n    spec: true,\n    maxContextTokens: true,\n  })\n  .transform((obj) => {\n    const newObj: Partial<TConversation> = { ...obj };\n    if (newObj.modelLabel === null) {\n      delete newObj.modelLabel;\n    }\n    if (newObj.chatGptLabel === null) {\n      delete newObj.chatGptLabel;\n    }\n    if (newObj.promptPrefix === null) {\n      delete newObj.promptPrefix;\n    }\n    if (newObj.temperature === 0.8) {\n      delete newObj.temperature;\n    }\n    if (newObj.top_p === 1) {\n      delete newObj.top_p;\n    }\n    if (newObj.presence_penalty === 0) {\n      delete newObj.presence_penalty;\n    }\n    if (newObj.frequency_penalty === 0) {\n      delete newObj.frequency_penalty;\n    }\n    if (newObj.tools?.length === 0) {\n      delete newObj.tools;\n    }\n\n    if (\n      newObj.agentOptions &&\n      newObj.agentOptions.agent === EAgent.functions &&\n      newObj.agentOptions.skipCompletion === true &&\n      newObj.agentOptions.model === 'gpt-3.5-turbo' &&\n      newObj.agentOptions.temperature === 0\n    ) {\n      delete newObj.agentOptions;\n    }\n\n    return removeNullishValues(newObj);\n  })\n  .catch(() => ({}));\n\nexport const tBannerSchema = z.object({\n  bannerId: z.string(),\n  message: z.string(),\n  displayFrom: z.string(),\n  displayTo: z.string(),\n  createdAt: z.string(),\n  updatedAt: z.string(),\n  isPublic: z.boolean(),\n});\nexport type TBanner = z.infer<typeof tBannerSchema>;\n\nexport const compactAgentsSchema = tConversationSchema\n  .pick({\n    spec: true,\n    // model: true,\n    iconURL: true,\n    greeting: true,\n    agent_id: true,\n    resendFiles: true,\n    instructions: true,\n    additional_instructions: true,\n  })\n  .transform((obj) => removeNullishValues(obj))\n  .catch(() => ({}));\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/agents.ts",
    "content": "/* eslint-disable @typescript-eslint/no-namespace */\nimport { StepTypes, ContentTypes, ToolCallTypes } from './runs';\nimport type { FunctionToolCall } from './assistants';\nimport type { TAttachment } from 'src/schemas';\n\nexport namespace Agents {\n  export type MessageType = 'human' | 'ai' | 'generic' | 'system' | 'function' | 'tool' | 'remove';\n\n  export type ImageDetail = 'auto' | 'low' | 'high';\n\n  export type ReasoningContentText = {\n    type: ContentTypes.THINK;\n    think: string;\n  };\n\n  export type MessageContentText = {\n    type: ContentTypes.TEXT;\n    text: string;\n    tool_call_ids?: string[];\n  };\n\n  export type MessageContentImageUrl = {\n    type: ContentTypes.IMAGE_URL;\n    image_url: string | { url: string; detail?: ImageDetail };\n  };\n\n  export type MessageContentComplex =\n    | ReasoningContentText\n    | MessageContentText\n    | MessageContentImageUrl\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    | (Record<string, any> & { type?: ContentTypes | string })\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    | (Record<string, any> & { type?: never });\n\n  export type MessageContent = string | MessageContentComplex[];\n\n  /**\n   * A call to a tool.\n   */\n  export type ToolCall = {\n    /** Type (\"tool_call\") according to Assistants Tool Call Structure */\n    type: ToolCallTypes.TOOL_CALL;\n    /** The name of the tool to be called */\n    name: string;\n\n    /** The arguments to the tool call */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    args?: string | Record<string, any>;\n\n    /** If provided, an identifier associated with the tool call */\n    id?: string;\n    /** If provided, the output of the tool call */\n    output?: string;\n    /** Auth URL */\n    auth?: string;\n    /** Expiration time */\n    expires_at?: number;\n  };\n\n  export type ToolEndEvent = {\n    /** The Step Id of the Tool Call */\n    id: string;\n    /** The Completed Tool Call */\n    tool_call?: ToolCall;\n    /** The content index of the tool call */\n    index: number;\n  };\n\n  export type ToolCallContent = {\n    type: ContentTypes.TOOL_CALL;\n    tool_call?: ToolCall;\n  };\n\n  /**\n   * A chunk of a tool call (e.g., as part of a stream).\n   * When merging ToolCallChunks (e.g., via AIMessageChunk.__add__),\n   * all string attributes are concatenated. Chunks are only merged if their\n   * values of `index` are equal and not None.\n   *\n   * @example\n   * ```ts\n   * const leftChunks = [\n   *   {\n   *     name: \"foo\",\n   *     args: '{\"a\":',\n   *     index: 0\n   *   }\n   * ];\n   *\n   * const leftAIMessageChunk = new AIMessageChunk({\n   *   content: \"\",\n   *   tool_call_chunks: leftChunks\n   * });\n   *\n   * const rightChunks = [\n   *   {\n   *     name: undefined,\n   *     args: '1}',\n   *     index: 0\n   *   }\n   * ];\n   *\n   * const rightAIMessageChunk = new AIMessageChunk({\n   *   content: \"\",\n   *   tool_call_chunks: rightChunks\n   * });\n   *\n   * const result = leftAIMessageChunk.concat(rightAIMessageChunk);\n   * // result.tool_call_chunks is equal to:\n   * // [\n   * //   {\n   * //     name: \"foo\",\n   * //     args: '{\"a\":1}'\n   * //     index: 0\n   * //   }\n   * // ]\n   * ```\n   *\n   * @property {string} [name] - If provided, a substring of the name of the tool to be called\n   * @property {string} [args] - If provided, a JSON substring of the arguments to the tool call\n   * @property {string} [id] - If provided, a substring of an identifier for the tool call\n   * @property {number} [index] - If provided, the index of the tool call in a sequence\n   */\n  export type ToolCallChunk = {\n    name?: string;\n\n    args?: string;\n\n    id?: string;\n\n    index?: number;\n\n    type?: 'tool_call_chunk';\n  };\n\n  /** Event names are of the format: on_[runnable_type]_(start|stream|end).\n\n  Runnable types are one of:\n\n  llm - used by non chat models\n  chat_model - used by chat models\n  prompt -- e.g., ChatPromptTemplate\n  tool -- LangChain tools\n  chain - most Runnables are of this type\n  Further, the events are categorized as one of:\n\n  start - when the runnable starts\n  stream - when the runnable is streaming\n  end - when the runnable ends\n  start, stream and end are associated with slightly different data payload.\n\n  Please see the documentation for EventData for more details. */\n  export type EventName = string;\n  export type RunStep = {\n    type: StepTypes;\n    id: string; // #new\n    runId?: string; // #new\n    index: number; // #new\n    stepIndex?: number; // #new\n    stepDetails: StepDetails;\n    usage: null | {\n      // Define usage structure if it's ever non-null\n      // prompt_tokens: number; // #new\n      // completion_tokens: number; // #new\n      // total_tokens: number; // #new\n    };\n  };\n  /**\n   * Represents a run step delta i.e. any changed fields on a run step during\n   * streaming.\n   */\n  export interface RunStepDeltaEvent {\n    /**\n     * The identifier of the run step, which can be referenced in API endpoints.\n     */\n    id: string;\n    /**\n     * The delta containing the fields that have changed on the run step.\n     */\n    delta: ToolCallDelta;\n  }\n  export type StepDetails = MessageCreationDetails | ToolCallsDetails;\n  export type MessageCreationDetails = {\n    type: StepTypes.MESSAGE_CREATION;\n    message_creation: {\n      message_id: string;\n    };\n  };\n  export type ToolCallsDetails = {\n    type: StepTypes.TOOL_CALLS;\n    tool_calls: AgentToolCall[];\n  };\n  export type ToolCallDelta = {\n    type: StepTypes.TOOL_CALLS | string;\n    tool_calls?: ToolCallChunk[];\n    auth?: string;\n    expires_at?: number;\n  };\n  export type AgentToolCall = FunctionToolCall | ToolCall;\n  export interface ExtendedMessageContent {\n    type?: string;\n    text?: string;\n    input?: string;\n    index?: number;\n    id?: string;\n    name?: string;\n  }\n  /**\n   * Represents a message delta i.e. any changed fields on a message during\n   * streaming.\n   */\n  export interface MessageDeltaEvent {\n    /**\n     * The identifier of the message, which can be referenced in API endpoints.\n     */\n    id: string;\n    /**\n     * The delta containing the fields that have changed on the Message.\n     */\n    delta: MessageDelta;\n  }\n  /**\n   * The delta containing the fields that have changed on the Message.\n   */\n  export interface MessageDelta {\n    /**\n     * The content of the message in array of text and/or images.\n     */\n    content?: Agents.MessageContentComplex[];\n  }\n\n  /**\n   * Represents a reasoning delta i.e. any changed fields on a message during\n   * streaming.\n   */\n  export interface ReasoningDeltaEvent {\n    /**\n     * The identifier of the message, which can be referenced in API endpoints.\n     */\n    id: string;\n\n    /**\n     * The delta containing the fields that have changed.\n     */\n    delta: ReasoningDelta;\n  }\n\n  /**\n   * The reasoning delta containing the fields that have changed on the Message.\n   */\n  export interface ReasoningDelta {\n    /**\n     * The content of the message in array of text and/or images.\n     */\n    content?: MessageContentComplex[];\n  }\n\n  export type ReasoningDeltaUpdate = { type: ContentTypes.THINK; think: string };\n  export type ContentType =\n    | ContentTypes.THINK\n    | ContentTypes.TEXT\n    | ContentTypes.IMAGE_URL\n    | string;\n}\n\nexport type ToolCallResult = {\n  user: string;\n  toolId: string;\n  result?: unknown;\n  messageId: string;\n  partIndex?: number;\n  blockIndex?: number;\n  conversationId: string;\n  attachments?: TAttachment[];\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/assistants.ts",
    "content": "import type { OpenAPIV3 } from 'openapi-types';\nimport type { AssistantsEndpoint, AgentProvider } from 'src/schemas';\nimport type { ContentTypes } from './runs';\nimport type { Agents } from './agents';\nimport type { TFile } from './files';\nimport { ArtifactModes } from 'src/artifacts';\n\nexport type Schema = OpenAPIV3.SchemaObject & { description?: string };\nexport type Reference = OpenAPIV3.ReferenceObject & { description?: string };\n\nexport type Metadata = {\n  avatar?: string;\n  author?: string;\n} & {\n  [key: string]: unknown;\n};\n\nexport enum Tools {\n  execute_code = 'execute_code',\n  code_interpreter = 'code_interpreter',\n  file_search = 'file_search',\n  retrieval = 'retrieval',\n  function = 'function',\n}\n\nexport enum EToolResources {\n  code_interpreter = 'code_interpreter',\n  execute_code = 'execute_code',\n  file_search = 'file_search',\n}\n\nexport type Tool = {\n  [type: string]: Tools;\n};\n\nexport type FunctionTool = {\n  type: Tools;\n  function?: {\n    description: string;\n    name: string;\n    parameters: Record<string, unknown>;\n    strict?: boolean;\n    additionalProperties?: boolean; // must be false if strict is true https://platform.openai.com/docs/guides/structured-outputs/some-type-specific-keywords-are-not-yet-supported\n  };\n};\n\n/**\n * A set of resources that are used by the assistant's tools. The resources are\n * specific to the type of tool. For example, the `code_interpreter` tool requires\n * a list of file IDs, while the `file_search` tool requires a list of vector store\n * IDs.\n */\nexport interface ToolResources {\n  code_interpreter?: CodeInterpreterResource;\n  file_search?: FileSearchResource;\n}\nexport interface CodeInterpreterResource {\n  /**\n   * A list of [file](https://platform.openai.com/docs/api-reference/files) IDs made\n   * available to the `code_interpreter`` tool. There can be a maximum of 20 files\n   * associated with the tool.\n   */\n  file_ids?: Array<string>;\n}\n\nexport interface FileSearchResource {\n  /**\n   * The ID of the\n   * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object)\n   * attached to this assistant. There can be a maximum of 1 vector store attached to\n   * the assistant.\n   */\n  vector_store_ids?: Array<string>;\n}\n\n/* Assistant types */\n\nexport type Assistant = {\n  id: string;\n  created_at: number;\n  description: string | null;\n  file_ids?: string[];\n  instructions: string | null;\n  conversation_starters?: string[];\n  metadata: Metadata | null;\n  model: string;\n  name: string | null;\n  object: string;\n  tools?: FunctionTool[];\n  tool_resources?: ToolResources;\n};\n\nexport type TAssistantsMap = Record<AssistantsEndpoint, Record<string, Assistant>>;\n\nexport type AssistantCreateParams = {\n  model: string;\n  description?: string | null;\n  file_ids?: string[];\n  instructions?: string | null;\n  conversation_starters?: string[];\n  metadata?: Metadata | null;\n  name?: string | null;\n  tools?: Array<FunctionTool | string>;\n  endpoint: AssistantsEndpoint;\n  version: number | string;\n  append_current_datetime?: boolean;\n};\n\nexport type AssistantUpdateParams = {\n  model?: string;\n  description?: string | null;\n  file_ids?: string[];\n  instructions?: string | null;\n  conversation_starters?: string[] | null;\n  metadata?: Metadata | null;\n  name?: string | null;\n  tools?: Array<FunctionTool | string>;\n  tool_resources?: ToolResources;\n  endpoint: AssistantsEndpoint;\n  append_current_datetime?: boolean;\n};\n\nexport type AssistantListParams = {\n  limit?: number;\n  before?: string | null;\n  after?: string | null;\n  order?: 'asc' | 'desc';\n  endpoint: AssistantsEndpoint;\n};\n\nexport type AssistantListResponse = {\n  object: string;\n  data: Assistant[];\n  first_id: string;\n  last_id: string;\n  has_more: boolean;\n};\n\nexport type File = {\n  file_id: string;\n  id?: string;\n  temp_file_id?: string;\n  bytes: number;\n  created_at: number;\n  filename: string;\n  object: string;\n  purpose: 'fine-tune' | 'fine-tune-results' | 'assistants' | 'assistants_output';\n};\n\n/* Agent types */\n\nexport type AgentParameterValue = number | null;\n\nexport type AgentModelParameters = {\n  model?: string;\n  temperature: AgentParameterValue;\n  max_context_tokens: AgentParameterValue;\n  max_output_tokens: AgentParameterValue;\n  top_p: AgentParameterValue;\n  frequency_penalty: AgentParameterValue;\n  presence_penalty: AgentParameterValue;\n};\n\nexport interface AgentToolResources {\n  execute_code?: ExecuteCodeResource;\n  file_search?: AgentFileSearchResource;\n}\nexport interface ExecuteCodeResource {\n  /**\n   * A list of file IDs made available to the `execute_code` tool.\n   * There can be a maximum of 20 files associated with the tool.\n   */\n  file_ids?: Array<string>;\n  /**\n   * A list of files already fetched.\n   */\n  files?: Array<TFile>;\n}\n\nexport interface AgentFileSearchResource {\n  /**\n   * The ID of the vector store attached to this agent. There\n   * can be a maximum of 1 vector store attached to the agent.\n   */\n  vector_store_ids?: Array<string>;\n  /**\n   * A list of file IDs made available to the `file_search` tool.\n   * To be used before vector stores are implemented.\n   */\n  file_ids?: Array<string>;\n  /**\n   * A list of files already fetched.\n   */\n  files?: Array<TFile>;\n}\n\nexport type Agent = {\n  id: string;\n  name: string | null;\n  author?: string | null;\n  /** The original custom endpoint name, lowercased */\n  endpoint?: string | null;\n  authorName?: string | null;\n  description: string | null;\n  created_at: number;\n  avatar: AgentAvatar | null;\n  instructions: string | null;\n  additional_instructions?: string | null;\n  tools?: string[];\n  projectIds?: string[];\n  tool_kwargs?: Record<string, unknown>;\n  metadata?: Record<string, unknown>;\n  provider: AgentProvider;\n  model: string | null;\n  model_parameters: AgentModelParameters;\n  conversation_starters?: string[];\n  isCollaborative?: boolean;\n  tool_resources?: AgentToolResources;\n  agent_ids?: string[];\n  end_after_tools?: boolean;\n  hide_sequential_outputs?: boolean;\n  artifacts?: ArtifactModes;\n};\n\nexport type TAgentsMap = Record<string, Agent | undefined>;\n\nexport type AgentCreateParams = {\n  name?: string | null;\n  description?: string | null;\n  avatar?: AgentAvatar | null;\n  file_ids?: string[];\n  instructions?: string | null;\n  tools?: Array<FunctionTool | string>;\n  provider: AgentProvider;\n  model: string | null;\n  model_parameters: AgentModelParameters;\n} & Pick<Agent, 'agent_ids' | 'end_after_tools' | 'hide_sequential_outputs' | 'artifacts'>;\n\nexport type AgentUpdateParams = {\n  name?: string | null;\n  description?: string | null;\n  avatar?: AgentAvatar | null;\n  file_ids?: string[];\n  instructions?: string | null;\n  tools?: Array<FunctionTool | string>;\n  tool_resources?: ToolResources;\n  provider?: AgentProvider;\n  model?: string | null;\n  model_parameters?: AgentModelParameters;\n  projectIds?: string[];\n  removeProjectIds?: string[];\n  isCollaborative?: boolean;\n} & Pick<Agent, 'agent_ids' | 'end_after_tools' | 'hide_sequential_outputs' | 'artifacts'>;\n\nexport type AgentListParams = {\n  limit?: number;\n  before?: string | null;\n  after?: string | null;\n  order?: 'asc' | 'desc';\n  provider?: AgentProvider;\n};\n\nexport type AgentListResponse = {\n  object: string;\n  data: Agent[];\n  first_id: string;\n  last_id: string;\n  has_more: boolean;\n};\n\nexport type AgentFile = {\n  file_id: string;\n  id?: string;\n  temp_file_id?: string;\n  bytes: number;\n  created_at: number;\n  filename: string;\n  object: string;\n  purpose: 'fine-tune' | 'fine-tune-results' | 'agents' | 'agents_output';\n};\n\n/**\n * Details of the Code Interpreter tool call the run step was involved in.\n * Includes the tool call ID, the code interpreter definition, and the type of tool call.\n */\nexport type CodeToolCall = {\n  id: string; // The ID of the tool call.\n  code_interpreter: {\n    input: string; // The input to the Code Interpreter tool call.\n    outputs: Array<Record<string, unknown>>; // The outputs from the Code Interpreter tool call.\n  };\n  type: 'code_interpreter'; // The type of tool call, always 'code_interpreter'.\n};\n\n/**\n * Details of a Function tool call the run step was involved in.\n * Includes the tool call ID, the function definition, and the type of tool call.\n */\nexport type FunctionToolCall = {\n  id: string; // The ID of the tool call object.\n  function: {\n    arguments: string; // The arguments passed to the function.\n    name: string; // The name of the function.\n    output: string | null; // The output of the function, null if not submitted.\n  };\n  type: 'function'; // The type of tool call, always 'function'.\n};\n\n/**\n * Details of a Retrieval tool call the run step was involved in.\n * Includes the tool call ID and the type of tool call.\n */\nexport type RetrievalToolCall = {\n  id: string; // The ID of the tool call object.\n  retrieval: unknown; // An empty object for now.\n  type: 'retrieval'; // The type of tool call, always 'retrieval'.\n};\n\n/**\n * Details of a Retrieval tool call the run step was involved in.\n * Includes the tool call ID and the type of tool call.\n */\nexport type FileSearchToolCall = {\n  id: string; // The ID of the tool call object.\n  file_search: unknown; // An empty object for now.\n  type: 'file_search'; // The type of tool call, always 'retrieval'.\n};\n\n/**\n * Details of the tool calls involved in a run step.\n * Can be associated with one of three types of tools: `code_interpreter`, `retrieval`, or `function`.\n */\nexport type ToolCallsStepDetails = {\n  tool_calls: Array<CodeToolCall | RetrievalToolCall | FileSearchToolCall | FunctionToolCall>; // An array of tool calls the run step was involved in.\n  type: 'tool_calls'; // Always 'tool_calls'.\n};\n\nexport type ImageFile = TFile & {\n  /**\n   * The [File](https://platform.openai.com/docs/api-reference/files) ID of the image\n   * in the message content.\n   */\n  file_id: string;\n  filename: string;\n  filepath: string;\n  height: number;\n  width: number;\n  /**\n   * Prompt used to generate the image if applicable.\n   */\n  prompt?: string;\n  /**\n   * Additional metadata used to generate or about the image/tool_call.\n   */\n  metadata?: Record<string, unknown>;\n};\n\n// FileCitation.ts\nexport type FileCitation = {\n  end_index: number;\n  file_citation: FileCitationDetails;\n  start_index: number;\n  text: string;\n  type: 'file_citation';\n};\n\nexport type FileCitationDetails = {\n  file_id: string;\n  quote: string;\n};\n\nexport type FilePath = {\n  end_index: number;\n  file_path: FilePathDetails;\n  start_index: number;\n  text: string;\n  type: 'file_path';\n};\n\nexport type FilePathDetails = {\n  file_id: string;\n};\n\nexport type Text = {\n  annotations?: Array<FileCitation | FilePath>;\n  value: string;\n};\n\nexport enum AnnotationTypes {\n  FILE_CITATION = 'file_citation',\n  FILE_PATH = 'file_path',\n}\n\nexport enum StepStatus {\n  IN_PROGRESS = 'in_progress',\n  CANCELLED = 'cancelled',\n  FAILED = 'failed',\n  COMPLETED = 'completed',\n  EXPIRED = 'expired',\n}\n\nexport enum MessageContentTypes {\n  TEXT = 'text',\n  IMAGE_FILE = 'image_file',\n}\n\n//enum for RunStatus\n// The status of the run: queued, in_progress, requires_action, cancelling, cancelled, failed, completed, or expired.\nexport enum RunStatus {\n  QUEUED = 'queued',\n  IN_PROGRESS = 'in_progress',\n  REQUIRES_ACTION = 'requires_action',\n  CANCELLING = 'cancelling',\n  CANCELLED = 'cancelled',\n  FAILED = 'failed',\n  COMPLETED = 'completed',\n  EXPIRED = 'expired',\n}\n\nexport type PartMetadata = {\n  progress?: number;\n  asset_pointer?: string;\n  status?: string;\n  action?: boolean;\n  auth?: string;\n  expires_at?: number;\n};\n\nexport type ContentPart = (\n  | CodeToolCall\n  | RetrievalToolCall\n  | FileSearchToolCall\n  | FunctionToolCall\n  | Agents.AgentToolCall\n  | ImageFile\n  | Text\n) &\n  PartMetadata;\n\nexport type TMessageContentParts =\n  | { type: ContentTypes.ERROR; text: Text & PartMetadata }\n  | { type: ContentTypes.THINK; think: string | (Text & PartMetadata) }\n  | { type: ContentTypes.TEXT; text: string | (Text & PartMetadata); tool_call_ids?: string[] }\n  | {\n      type: ContentTypes.TOOL_CALL;\n      tool_call: (\n        | CodeToolCall\n        | RetrievalToolCall\n        | FileSearchToolCall\n        | FunctionToolCall\n        | Agents.AgentToolCall\n      ) &\n        PartMetadata;\n    }\n  | { type: ContentTypes.IMAGE_FILE; image_file: ImageFile & PartMetadata }\n  | Agents.MessageContentImageUrl;\n\nexport type StreamContentData = TMessageContentParts & {\n  /** The index of the current content part */\n  index: number;\n  /** The current text content was already served but edited to replace elements therein */\n  edited?: boolean;\n};\n\nexport type TContentData = StreamContentData & {\n  messageId: string;\n  conversationId: string;\n  userMessageId: string;\n  thread_id: string;\n  stream?: boolean;\n};\n\nexport const actionDelimiter = '_action_';\nexport const actionDomainSeparator = '---';\nexport const hostImageIdSuffix = '_host_copy';\nexport const hostImageNamePrefix = 'host_copy_';\n\nexport enum AuthTypeEnum {\n  ServiceHttp = 'service_http',\n  OAuth = 'oauth',\n  None = 'none',\n}\n\nexport enum AuthorizationTypeEnum {\n  Bearer = 'bearer',\n  Basic = 'basic',\n  Custom = 'custom',\n}\n\nexport enum TokenExchangeMethodEnum {\n  DefaultPost = 'default_post',\n  BasicAuthHeader = 'basic_auth_header',\n}\n\nexport type ActionAuth = {\n  authorization_type?: AuthorizationTypeEnum;\n  custom_auth_header?: string;\n  type?: AuthTypeEnum;\n  authorization_content_type?: string;\n  authorization_url?: string;\n  client_url?: string;\n  scope?: string;\n  token_exchange_method?: TokenExchangeMethodEnum;\n};\n\nexport type ActionMetadata = {\n  api_key?: string;\n  auth?: ActionAuth;\n  domain?: string;\n  privacy_policy_url?: string;\n  raw_spec?: string;\n  oauth_client_id?: string;\n  oauth_client_secret?: string;\n};\n\nexport type ActionMetadataRuntime = ActionMetadata & {\n  oauth_access_token?: string;\n  oauth_refresh_token?: string;\n  oauth_token_expires_at?: Date;\n};\n\n/* Assistant types */\n\nexport type Action = {\n  action_id: string;\n  type?: string;\n  settings?: Record<string, unknown>;\n  metadata: ActionMetadata;\n  version: number | string;\n} & ({ assistant_id: string; agent_id?: never } | { assistant_id?: never; agent_id: string });\n\nexport type AssistantAvatar = {\n  filepath: string;\n  source: string;\n};\n\nexport type AssistantDocument = {\n  user: string;\n  assistant_id: string;\n  conversation_starters?: string[];\n  avatar?: AssistantAvatar;\n  access_level?: number;\n  file_ids?: string[];\n  actions?: string[];\n  createdAt?: Date;\n  updatedAt?: Date;\n  append_current_datetime?: boolean;\n};\n\n/* Agent types */\n\nexport type AgentAvatar = {\n  filepath: string;\n  source: string;\n};\n\nexport enum FilePurpose {\n  Vision = 'vision',\n  FineTune = 'fine-tune',\n  FineTuneResults = 'fine-tune-results',\n  Assistants = 'assistants',\n  AssistantsOutput = 'assistants_output',\n}\n\nexport const defaultOrderQuery: {\n  order: 'desc';\n  limit: 100;\n} = {\n  order: 'desc',\n  limit: 100,\n};\n\nexport enum AssistantStreamEvents {\n  ThreadCreated = 'thread.created',\n  ThreadRunCreated = 'thread.run.created',\n  ThreadRunQueued = 'thread.run.queued',\n  ThreadRunInProgress = 'thread.run.in_progress',\n  ThreadRunRequiresAction = 'thread.run.requires_action',\n  ThreadRunCompleted = 'thread.run.completed',\n  ThreadRunFailed = 'thread.run.failed',\n  ThreadRunCancelling = 'thread.run.cancelling',\n  ThreadRunCancelled = 'thread.run.cancelled',\n  ThreadRunExpired = 'thread.run.expired',\n  ThreadRunStepCreated = 'thread.run.step.created',\n  ThreadRunStepInProgress = 'thread.run.step.in_progress',\n  ThreadRunStepCompleted = 'thread.run.step.completed',\n  ThreadRunStepFailed = 'thread.run.step.failed',\n  ThreadRunStepCancelled = 'thread.run.step.cancelled',\n  ThreadRunStepExpired = 'thread.run.step.expired',\n  ThreadRunStepDelta = 'thread.run.step.delta',\n  ThreadMessageCreated = 'thread.message.created',\n  ThreadMessageInProgress = 'thread.message.in_progress',\n  ThreadMessageCompleted = 'thread.message.completed',\n  ThreadMessageIncomplete = 'thread.message.incomplete',\n  ThreadMessageDelta = 'thread.message.delta',\n  ErrorEvent = 'error',\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/files.ts",
    "content": "import { EToolResources } from './assistants';\n\nexport enum FileSources {\n  local = 'local',\n  firebase = 'firebase',\n  azure = 'azure',\n  openai = 'openai',\n  s3 = 's3',\n  vectordb = 'vectordb',\n  execute_code = 'execute_code',\n  bisheng = 'bisheng',\n}\n\nexport const checkOpenAIStorage = (source: string) =>\n  source === FileSources.openai || source === FileSources.azure;\n\nexport enum FileContext {\n  avatar = 'avatar',\n  unknown = 'unknown',\n  agents = 'agents',\n  assistants = 'assistants',\n  execute_code = 'execute_code',\n  image_generation = 'image_generation',\n  assistants_output = 'assistants_output',\n  message_attachment = 'message_attachment',\n  filename = 'filename',\n  updatedAt = 'updatedAt',\n  source = 'source',\n  filterSource = 'filterSource',\n  context = 'context',\n  bytes = 'bytes',\n}\n\nexport type EndpointFileConfig = {\n  disabled?: boolean;\n  fileLimit?: number;\n  fileSizeLimit?: number;\n  totalSizeLimit?: number;\n  supportedMimeTypes?: RegExp[];\n};\n\nexport type FileConfig = {\n  endpoints: {\n    [key: string]: EndpointFileConfig;\n  };\n  serverFileSizeLimit?: number;\n  avatarSizeLimit?: number;\n  checkType?: (fileType: string, supportedTypes: RegExp[]) => boolean;\n};\n\nexport type TFile = {\n  _id?: string;\n  __v?: number;\n  user: string;\n  conversationId?: string;\n  message?: string;\n  file_id: string;\n  temp_file_id?: string;\n  bytes: number;\n  embedded: boolean;\n  filename: string;\n  filepath: string;\n  object: 'file';\n  type: string;\n  usage: number;\n  context?: FileContext;\n  source?: FileSources;\n  filterSource?: FileSources;\n  width?: number;\n  height?: number;\n  expiresAt?: string | Date;\n  preview?: string;\n  metadata?: { fileIdentifier?: string };\n  createdAt?: string | Date;\n  updatedAt?: string | Date;\n};\n\nexport type TFileUpload = TFile & {\n  temp_file_id: string;\n};\n\nexport type AvatarUploadResponse = {\n  url: string;\n};\n\nexport type SpeechToTextResponse = {\n  text: string;\n};\n\nexport type VoiceResponse = string[];\n\nexport type UploadMutationOptions = {\n  onSuccess?: (data: TFileUpload, variables: FormData, context?: unknown) => void;\n  onMutate?: (variables: FormData) => void | Promise<unknown>;\n  onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type UploadAvatarOptions = {\n  onSuccess?: (data: AvatarUploadResponse, variables: FormData, context?: unknown) => void;\n  onMutate?: (variables: FormData) => void | Promise<unknown>;\n  onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type SpeechToTextOptions = {\n  onSuccess?: (data: SpeechToTextResponse, variables: FormData, context?: unknown) => void;\n  onMutate?: (variables: FormData) => void | Promise<unknown>;\n  onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type TextToSpeechOptions = {\n  onSuccess?: (data: ArrayBuffer, variables: FormData, context?: unknown) => void;\n  onMutate?: (variables: FormData) => void | Promise<unknown>;\n  onError?: (error: unknown, variables: FormData, context?: unknown) => void;\n};\n\nexport type VoiceOptions = {\n  onSuccess?: (data: VoiceResponse, variables: unknown, context?: unknown) => void;\n  onMutate?: () => void | Promise<unknown>;\n  onError?: (error: unknown, variables: unknown, context?: unknown) => void;\n};\n\nexport type DeleteFilesResponse = {\n  message: string;\n  result: Record<string, unknown>;\n};\n\nexport type BatchFile = {\n  file_id: string;\n  filepath: string;\n  embedded: boolean;\n  source: FileSources;\n};\n\nexport type DeleteFilesBody = {\n  files: BatchFile[];\n  agent_id?: string;\n  assistant_id?: string;\n  tool_resource?: EToolResources;\n};\n\nexport type DeleteMutationOptions = {\n  onSuccess?: (data: DeleteFilesResponse, variables: DeleteFilesBody, context?: unknown) => void;\n  onMutate?: (variables: DeleteFilesBody) => void | Promise<unknown>;\n  onError?: (error: unknown, variables: DeleteFilesBody, context?: unknown) => void;\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/mutations.ts",
    "content": "import * as types from '../types';\nimport * as r from '../roles';\nimport {\n  Tools,\n  Assistant,\n  AssistantCreateParams,\n  AssistantUpdateParams,\n  ActionMetadata,\n  FunctionTool,\n  AssistantDocument,\n  Action,\n  Agent,\n  AgentCreateParams,\n  AgentUpdateParams,\n} from './assistants';\n\nexport type MutationOptions<\n  Response,\n  Request,\n  Context = unknown,\n  Error = unknown,\n  Snapshot = void,\n> = {\n  onSuccess?: (data: Response, variables: Request, context?: Context) => void;\n  onMutate?: (variables: Request) => Snapshot | Promise<Snapshot>;\n  onError?: (error: Error, variables: Request, context?: Context, snapshot?: Snapshot) => void;\n  onSettled?: (\n    data: Response | undefined,\n    error: Error | null,\n    variables: Request,\n    context?: Context,\n  ) => void;\n};\n\nexport type TGenTitleRequest = {\n  conversationId: string;\n};\n\nexport type TGenTitleResponse = {\n  title: string;\n};\n\nexport type PresetDeleteResponse = {\n  acknowledged: boolean;\n  deletedCount: number;\n};\n\nexport type UpdatePresetOptions = MutationOptions<types.TPreset, types.TPreset>;\n\nexport type DeletePresetOptions = MutationOptions<PresetDeleteResponse, types.TPreset | undefined>;\n\n/* Assistant mutations */\n\nexport type AssistantAvatarVariables = {\n  assistant_id: string;\n  model: string;\n  formData: FormData;\n  postCreation?: boolean;\n  endpoint: types.AssistantsEndpoint;\n  version: number | string;\n};\n\nexport type UpdateActionVariables = {\n  assistant_id: string;\n  functions: FunctionTool[];\n  metadata: ActionMetadata;\n  action_id?: string;\n  model: string;\n  endpoint: types.AssistantsEndpoint;\n  version: number | string;\n};\n\nexport type UploadAssistantAvatarOptions = MutationOptions<Assistant, AssistantAvatarVariables>;\n\nexport type CreateAssistantMutationOptions = MutationOptions<Assistant, AssistantCreateParams>;\n\nexport type UpdateAssistantVariables = {\n  assistant_id: string;\n  data: AssistantUpdateParams;\n};\n\nexport type UpdateAssistantMutationOptions = MutationOptions<Assistant, UpdateAssistantVariables>;\n\nexport type DeleteAssistantBody = {\n  assistant_id: string;\n  model: string;\n  endpoint: types.AssistantsEndpoint;\n};\n\nexport type DeleteAssistantMutationOptions = MutationOptions<\n  void,\n  Pick<DeleteAssistantBody, 'assistant_id'>\n>;\n\nexport type UpdateActionResponse = [AssistantDocument, Assistant, Action];\nexport type UpdateActionOptions = MutationOptions<UpdateActionResponse, UpdateActionVariables>;\n\nexport type DeleteActionVariables = {\n  endpoint: types.AssistantsEndpoint;\n  assistant_id: string;\n  action_id: string;\n  model: string;\n};\n\nexport type DeleteActionOptions = MutationOptions<void, DeleteActionVariables>;\n\n/* Agent mutations */\n\nexport type AgentAvatarVariables = {\n  agent_id: string;\n  formData: FormData;\n  postCreation?: boolean;\n};\n\nexport type UpdateAgentActionVariables = {\n  agent_id: string;\n  action_id?: string;\n  metadata: ActionMetadata;\n  functions: FunctionTool[];\n};\n\nexport type UploadAgentAvatarOptions = MutationOptions<Agent, AgentAvatarVariables>;\n\nexport type CreateAgentMutationOptions = MutationOptions<Agent, AgentCreateParams>;\n\nexport type UpdateAgentVariables = {\n  agent_id: string;\n  data: AgentUpdateParams;\n};\n\nexport type UpdateAgentMutationOptions = MutationOptions<Agent, UpdateAgentVariables>;\n\nexport type DuplicateAgentBody = {\n  agent_id: string;\n};\n\nexport type DuplicateAgentMutationOptions = MutationOptions<\n  { agent: Agent; actions: Action[] },\n  Pick<DuplicateAgentBody, 'agent_id'>\n>;\n\nexport type DeleteAgentBody = {\n  agent_id: string;\n};\n\nexport type DeleteAgentMutationOptions = MutationOptions<void, Pick<DeleteAgentBody, 'agent_id'>>;\n\nexport type UpdateAgentActionResponse = [Agent, Action];\nexport type UpdateAgentActionOptions = MutationOptions<\n  UpdateAgentActionResponse,\n  UpdateAgentActionVariables\n>;\n\nexport type DeleteAgentActionVariables = {\n  agent_id: string;\n  action_id: string;\n};\n\nexport type DeleteAgentActionOptions = MutationOptions<void, DeleteAgentActionVariables>;\n\nexport type DeleteConversationOptions = MutationOptions<\n  types.TDeleteConversationResponse,\n  types.TDeleteConversationRequest\n>;\n\nexport type DuplicateConvoOptions = MutationOptions<\n  types.TDuplicateConvoResponse,\n  types.TDuplicateConvoRequest\n>;\n\nexport type ForkConvoOptions = MutationOptions<types.TForkConvoResponse, types.TForkConvoRequest>;\n\nexport type CreateSharedLinkOptions = MutationOptions<\n  types.TSharedLink,\n  Partial<types.TSharedLink>\n>;\n\nexport type updateTagsInConvoOptions = MutationOptions<\n  types.TTagConversationResponse,\n  types.TTagConversationRequest\n>;\n\nexport type UpdateSharedLinkOptions = MutationOptions<\n  types.TSharedLink,\n  Partial<types.TSharedLink>\n>;\n\nexport type ArchiveConvoOptions = MutationOptions<\n  types.TArchiveConversationResponse,\n  types.TArchiveConversationRequest\n>;\n\nexport type DeleteSharedLinkContext = { previousQueries?: Map<string, TDeleteSharedLinkResponse> };\nexport type DeleteSharedLinkOptions = MutationOptions<\n  TDeleteSharedLinkResponse,\n  { shareId: string },\n  DeleteSharedLinkContext\n>;\n\nexport type TUpdatePromptContext =\n  | {\n      group?: types.TPromptGroup;\n      previousListData?: types.PromptGroupListData;\n    }\n  | undefined;\n\nexport type UpdatePromptGroupOptions = MutationOptions<\n  types.TUpdatePromptGroupResponse,\n  types.TUpdatePromptGroupVariables,\n  TUpdatePromptContext\n>;\n\nexport type CreatePromptOptions = MutationOptions<types.TCreatePromptResponse, types.TCreatePrompt>;\n\nexport type DeletePromptOptions = MutationOptions<\n  types.TDeletePromptResponse,\n  types.TDeletePromptVariables\n>;\n\nexport type DeletePromptGroupOptions = MutationOptions<\n  types.TDeletePromptGroupResponse,\n  types.TDeletePromptGroupRequest\n>;\n\nexport type UpdatePromptLabelOptions = MutationOptions<\n  types.TUpdatePromptLabelsResponse,\n  types.TUpdatePromptLabelsRequest\n>;\n\nexport type MakePromptProductionOptions = MutationOptions<\n  types.TMakePromptProductionResponse,\n  types.TMakePromptProductionRequest,\n  TUpdatePromptContext\n>;\n\n/* Auth mutations */\nexport type VerifyEmailOptions = MutationOptions<types.VerifyEmailResponse, types.TVerifyEmail>;\nexport type ResendVerifcationOptions = MutationOptions<\n  types.VerifyEmailResponse,\n  types.TResendVerificationEmail\n>;\nexport type RegistrationOptions = MutationOptions<\n  types.TRegisterUserResponse,\n  types.TRegisterUser,\n  unknown,\n  types.TError\n>;\n\nexport type UpdatePermVars<T> = {\n  roleName: string;\n  updates: Partial<T>;\n};\n\nexport type UpdatePromptPermVars = UpdatePermVars<r.TPromptPermissions>;\n\nexport type UpdateAgentPermVars = UpdatePermVars<r.TAgentPermissions>;\n\nexport type UpdatePermResponse = r.TRole;\n\nexport type UpdatePromptPermOptions = MutationOptions<\n  UpdatePermResponse,\n  UpdatePromptPermVars,\n  unknown,\n  types.TError | null | undefined\n>;\n\nexport type UpdateAgentPermOptions = MutationOptions<\n  UpdatePermResponse,\n  UpdateAgentPermVars,\n  unknown,\n  types.TError | null | undefined\n>;\n\nexport type UpdateConversationTagOptions = MutationOptions<\n  types.TConversationTag,\n  types.TConversationTagRequest\n>;\nexport type DeleteConversationTagOptions = MutationOptions<types.TConversationTag, string>;\n\nexport type AcceptTermsMutationOptions = MutationOptions<\n  types.TAcceptTermsResponse,\n  void,\n  unknown,\n  void\n>;\n\n/* Tools */\nexport type UpdatePluginAuthOptions = MutationOptions<types.TUser, types.TUpdateUserPlugins>;\n\nexport type ToolParamsMap = {\n  [Tools.execute_code]: {\n    lang: string;\n    code: string;\n  };\n};\n\nexport type ToolId = keyof ToolParamsMap;\n\nexport type ToolParams<T extends ToolId> = ToolParamsMap[T] & {\n  messageId: string;\n  partIndex?: number;\n  blockIndex?: number;\n  conversationId: string;\n};\nexport type ToolCallResponse = { result: unknown; attachments?: types.TAttachment[] };\nexport type ToolCallMutationOptions<T extends ToolId> = MutationOptions<\n  ToolCallResponse,\n  ToolParams<T>\n>;\n\nexport type TDeleteSharedLinkResponse = {\n  success: boolean;\n  shareId: string;\n  message: string;\n};\n\nexport type TEditArtifactRequest = {\n  index: number;\n  messageId: string;\n  original: string;\n  updated: string;\n};\n\nexport type TEditArtifactResponse = Pick<types.TMessage, 'content' | 'text' | 'conversationId'>;\n\nexport type EditArtifactOptions = MutationOptions<\n  TEditArtifactResponse,\n  TEditArtifactRequest,\n  unknown,\n  Error\n>;\n\nexport type TLogoutResponse = {\n  message: string;\n  redirect?: string;\n};\n\nexport type LogoutOptions = MutationOptions<TLogoutResponse, undefined>;\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/queries.ts",
    "content": "import type { InfiniteData } from '@tanstack/react-query';\nimport type * as a from '../types/agents';\nimport type * as s from '../schemas';\nimport type * as t from '../types';\n\nexport type Conversation = {\n  id: string;\n  createdAt: number;\n  participants: string[];\n  lastMessage: string;\n  conversations: s.TConversation[];\n};\n\n// Parameters for listing conversations (e.g., for pagination)\nexport type ConversationListParams = {\n  limit?: number;\n  before?: string | null;\n  after?: string | null;\n  order?: 'asc' | 'desc';\n  pageNumber: string;\n  conversationId?: string;\n  isArchived?: boolean;\n  tags?: string[];\n};\n\n// Type for the response from the conversation list API\nexport type ConversationListResponse = {\n  conversations: s.TConversation[];\n  pageNumber: string;\n  pageSize: string | number;\n  pages: string | number;\n  messages: s.TMessage[];\n};\n\nexport type ConversationData = InfiniteData<ConversationListResponse>;\nexport type ConversationUpdater = (\n  data: ConversationData,\n  conversation: s.TConversation,\n) => ConversationData;\n\nexport type SharedMessagesResponse = Omit<s.TSharedLink, 'messages'> & {\n  messages: s.TMessage[];\n};\n\nexport interface SharedLinksListParams {\n  pageSize: number;\n  isPublic: boolean;\n  sortBy: 'title' | 'createdAt';\n  sortDirection: 'asc' | 'desc';\n  search?: string;\n  cursor?: string;\n}\n\nexport type SharedLinkItem = {\n  shareId: string;\n  title: string;\n  isPublic: boolean;\n  createdAt: Date;\n  conversationId: string;\n};\n\nexport interface SharedLinksResponse {\n  links: SharedLinkItem[];\n  nextCursor: string | null;\n  hasNextPage: boolean;\n}\n\nexport interface SharedLinkQueryData {\n  pages: SharedLinksResponse[];\n  pageParams: (string | null)[];\n}\n\nexport type AllPromptGroupsFilterRequest = {\n  category: string;\n  pageNumber: string;\n  pageSize: string | number;\n  before?: string | null;\n  after?: string | null;\n  order?: 'asc' | 'desc';\n  name?: string;\n  author?: string;\n};\n\nexport type AllPromptGroupsResponse = t.TPromptGroup[];\n\nexport type ConversationTagsResponse = s.TConversationTag[];\n\nexport type VerifyToolAuthParams = { toolId: string };\nexport type VerifyToolAuthResponse = { authenticated: boolean; message?: string | s.AuthType };\n\nexport type GetToolCallParams = { conversationId: string };\nexport type ToolCallResults = a.ToolCallResult[];\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types/runs.ts",
    "content": "export enum ContentTypes {\n  TEXT = 'text',\n  THINK = 'think',\n  TEXT_DELTA = 'text_delta',\n  TOOL_CALL = 'tool_call',\n  IMAGE_FILE = 'image_file',\n  IMAGE_URL = 'image_url',\n  ERROR = 'error',\n}\n\nexport enum StepTypes {\n  TOOL_CALLS = 'tool_calls',\n  MESSAGE_CREATION = 'message_creation',\n}\n\nexport enum ToolCallTypes {\n  FUNCTION = 'function',\n  RETRIEVAL = 'retrieval',\n  FILE_SEARCH = 'file_search',\n  CODE_INTERPRETER = 'code_interpreter',\n  /* Agents Tool Call */\n  TOOL_CALL = 'tool_call',\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/types.ts",
    "content": "import type OpenAI from 'openai';\nimport type { InfiniteData } from '@tanstack/react-query';\nimport type {\n  TMessage,\n  TResPlugin,\n  ImageDetail,\n  TSharedLink,\n  TConversation,\n  EModelEndpoint,\n  TConversationTag,\n  TBanner,\n} from './schemas';\nexport type TOpenAIMessage = OpenAI.Chat.ChatCompletionMessageParam;\n\nexport * from './schemas';\n\nexport type TMessages = TMessage[];\n\n/* TODO: Cleanup EndpointOption types */\nexport type TEndpointOption = {\n  endpoint: EModelEndpoint;\n  endpointType?: EModelEndpoint;\n  modelDisplayLabel?: string;\n  resendFiles?: boolean;\n  promptCache?: boolean;\n  maxContextTokens?: number;\n  imageDetail?: ImageDetail;\n  model?: string | null;\n  promptPrefix?: string;\n  temperature?: number;\n  chatGptLabel?: string | null;\n  modelLabel?: string | null;\n  jailbreak?: boolean;\n  key?: string | null;\n  /* assistant */\n  thread_id?: string;\n  /* multi-response stream */\n  overrideConvoId?: string;\n  overrideUserMessageId?: string;\n};\n\nexport type TPayload = Partial<TMessage> &\n  Partial<TEndpointOption> & {\n    isContinued: boolean;\n    conversationId: string | null;\n    messages?: TMessages;\n    isTemporary: boolean;\n  };\n\nexport type TSubmission = {\n  artifacts?: string;\n  plugin?: TResPlugin;\n  plugins?: TResPlugin[];\n  userMessage: TMessage;\n  isEdited?: boolean;\n  isContinued?: boolean;\n  isTemporary: boolean;\n  messages: TMessage[];\n  isRegenerate?: boolean;\n  conversationId?: string;\n  initialResponse?: TMessage;\n  conversation: Partial<TConversation>;\n  endpointOption: TEndpointOption;\n  clientTimestamp?: string;\n};\n\nexport type EventSubmission = Omit<TSubmission, 'initialResponse'> & { initialResponse: TMessage };\n\nexport type TPluginAction = {\n  pluginKey: string;\n  action: 'install' | 'uninstall';\n  auth?: unknown;\n  isEntityTool?: boolean;\n};\n\nexport type GroupedConversations = [key: string, TConversation[]][];\n\nexport type TUpdateUserPlugins = {\n  isEntityTool?: boolean;\n  pluginKey: string;\n  action: string;\n  auth?: unknown;\n};\n\n// TODO `label` needs to be changed to the proper `TranslationKeys`\nexport type TCategory = {\n  id?: string;\n  value: string;\n  label: string;\n};\n\nexport type TError = {\n  message: string;\n  code?: number | string;\n  response?: {\n    data?: {\n      message?: string;\n    };\n    status?: number;\n  };\n};\n\nexport type TBackupCode = {\n  codeHash: string;\n  used: boolean;\n  usedAt: Date | null;\n};\n\nexport type TUser = {\n  id: string;\n  username: string;\n  email: string;\n  name: string;\n  avatar: string;\n  role: string;\n  provider: string;\n  plugins?: string[];\n  backupCodes?: TBackupCode[];\n  createdAt: string;\n  updatedAt: string;\n};\n\nexport type TGetConversationsResponse = {\n  conversations: TConversation[];\n  pageNumber: string;\n  pageSize: string | number;\n  pages: string | number;\n};\n\nexport type TUpdateMessageRequest = {\n  conversationId: string;\n  messageId: string;\n  model: string;\n  text: string;\n};\n\nexport type TUpdateMessageContent = {\n  conversationId: string;\n  messageId: string;\n  index: number;\n  text: string;\n};\n\nexport type TUpdateUserKeyRequest = {\n  name: string;\n  value: string;\n  expiresAt: string;\n};\n\nexport type TUpdateConversationRequest = {\n  conversationId: string;\n  title: string;\n  flowType: number\n};\n\nexport type TUpdateConversationResponse = TConversation;\n\nexport type TDeleteConversationRequest = {\n  conversationId?: string;\n  thread_id?: string;\n  endpoint?: string;\n  source?: string;\n};\n\nexport type TDeleteConversationResponse = {\n  acknowledged: boolean;\n  deletedCount: number;\n  messages: {\n    acknowledged: boolean;\n    deletedCount: number;\n  };\n};\n\nexport type TArchiveConversationRequest = {\n  conversationId: string;\n  isArchived: boolean;\n};\n\nexport type TArchiveConversationResponse = TConversation;\n\nexport type TSharedMessagesResponse = Omit<TSharedLink, 'messages'> & {\n  messages: TMessage[];\n};\n\nexport type TCreateShareLinkRequest = Pick<TConversation, 'conversationId'>;\n\nexport type TUpdateShareLinkRequest = Pick<TSharedLink, 'shareId'>;\n\nexport type TSharedLinkResponse = Pick<TSharedLink, 'shareId'> &\n  Pick<TConversation, 'conversationId'>;\n\nexport type TSharedLinkGetResponse = TSharedLinkResponse & {\n  success: boolean;\n};\n\n// type for getting conversation tags\nexport type TConversationTagsResponse = TConversationTag[];\n// type for creating conversation tag\nexport type TConversationTagRequest = Partial<\n  Omit<TConversationTag, 'createdAt' | 'updatedAt' | 'count' | 'user'>\n> & {\n  conversationId?: string;\n  addToConversation?: boolean;\n};\n\nexport type TConversationTagResponse = TConversationTag;\n\nexport type TTagConversationRequest = {\n  tags: string[];\n  tag: string;\n};\n\nexport type TTagConversationResponse = string[];\n\nexport type TDuplicateConvoRequest = {\n  conversationId?: string;\n};\n\nexport type TDuplicateConvoResponse = {\n  conversation: TConversation;\n  messages: TMessage[];\n};\n\nexport type TForkConvoRequest = {\n  messageId: string;\n  conversationId: string;\n  option?: string;\n  splitAtTarget?: boolean;\n  latestMessageId?: string;\n};\n\nexport type TForkConvoResponse = {\n  conversation: TConversation;\n  messages: TMessage[];\n};\n\nexport type TSearchResults = {\n  conversations: TConversation[];\n  messages: TMessage[];\n  pageNumber: string;\n  pageSize: string | number;\n  pages: string | number;\n  filter: object;\n};\n\nexport type TConfig = {\n  order: number;\n  type?: EModelEndpoint;\n  azure?: boolean;\n  availableTools?: [];\n  availableRegions?: string[];\n  plugins?: Record<string, string>;\n  name?: string;\n  iconURL?: string;\n  version?: string;\n  modelDisplayLabel?: string;\n  userProvide?: boolean | null;\n  userProvideURL?: boolean | null;\n  disableBuilder?: boolean;\n  retrievalModels?: string[];\n  capabilities?: string[];\n};\n\nexport type TEndpointsConfig =\n  | Record<EModelEndpoint | string, TConfig | null | undefined>\n  | undefined;\n\nexport type TModelsConfig = Record<string, string[]>;\n\nexport type TUpdateTokenCountResponse = {\n  count: number;\n};\n\nexport type TMessageTreeNode = object;\n\nexport type TSearchMessage = object;\n\nexport type TSearchMessageTreeNode = object;\n\nexport type TRegisterUserResponse = {\n  message: string;\n};\n\nexport type TRegisterUser = {\n  name: string;\n  email: string;\n  username: string;\n  password: string;\n  confirm_password?: string;\n  token?: string;\n};\n\nexport type TLoginUser = {\n  email: string;\n  password: string;\n  token?: string;\n  backupCode?: string;\n};\n\nexport type TLoginResponse = {\n  token?: string;\n  user?: TUser;\n  twoFAPending?: boolean;\n  tempToken?: string;\n};\n\nexport type TEnable2FAResponse = {\n  otpauthUrl: string;\n  backupCodes: string[];\n  message?: string;\n};\n\nexport type TVerify2FARequest = {\n  token?: string;\n  backupCode?: string;\n};\n\nexport type TVerify2FAResponse = {\n  message: string;\n};\n\n/**\n * For verifying 2FA during login with a temporary token.\n */\nexport type TVerify2FATempRequest = {\n  tempToken: string;\n  token?: string;\n  backupCode?: string;\n};\n\nexport type TVerify2FATempResponse = {\n  token?: string;\n  user?: TUser;\n  message?: string;\n};\n\n/**\n * Response from disabling 2FA.\n */\nexport type TDisable2FAResponse = {\n  message: string;\n};\n\n/**\n * Response from regenerating backup codes.\n */\nexport type TRegenerateBackupCodesResponse = {\n  message: string;\n  backupCodes: string[];\n  backupCodesHash: string[];\n};\n\nexport type TRequestPasswordReset = {\n  email: string;\n};\n\nexport type TResetPassword = {\n  userId: string;\n  token: string;\n  password: string;\n  confirm_password?: string;\n};\n\nexport type VerifyEmailResponse = { message: string };\n\nexport type TVerifyEmail = {\n  email: string;\n  token: string;\n};\n\nexport type TResendVerificationEmail = Omit<TVerifyEmail, 'token'>;\n\nexport type TRefreshTokenResponse = {\n  token: string;\n  user: TUser;\n};\n\nexport type TCheckUserKeyResponse = {\n  expiresAt: string;\n};\n\nexport type TRequestPasswordResetResponse = {\n  link?: string;\n  message?: string;\n};\n\n/**\n * Represents the response from the import endpoint.\n */\nexport type TImportResponse = {\n  /**\n   * The message associated with the response.\n   */\n  message: string;\n};\n\n/** Prompts */\n\nexport type TPrompt = {\n  groupId: string;\n  author: string;\n  prompt: string;\n  type: 'text' | 'chat';\n  createdAt: string;\n  updatedAt: string;\n  _id?: string;\n};\n\nexport type TPromptGroup = {\n  name: string;\n  numberOfGenerations?: number;\n  command?: string;\n  oneliner?: string;\n  category?: string;\n  projectIds?: string[];\n  productionId?: string | null;\n  productionPrompt?: Pick<TPrompt, 'prompt'> | null;\n  author: string;\n  authorName: string;\n  createdAt?: Date;\n  updatedAt?: Date;\n  _id?: string;\n};\n\nexport type TCreatePrompt = {\n  prompt: Pick<TPrompt, 'prompt' | 'type'> & { groupId?: string };\n  group?: { name: string; category?: string; oneliner?: string; command?: string };\n};\n\nexport type TCreatePromptRecord = TCreatePrompt & Pick<TPromptGroup, 'author' | 'authorName'>;\n\nexport type TPromptsWithFilterRequest = {\n  groupId: string;\n  tags?: string[];\n  projectId?: string;\n  version?: number;\n};\n\nexport type TPromptGroupsWithFilterRequest = {\n  category: string;\n  pageNumber: string;\n  pageSize: string | number;\n  before?: string | null;\n  after?: string | null;\n  order?: 'asc' | 'desc';\n  name?: string;\n  author?: string;\n};\n\nexport type PromptGroupListResponse = {\n  promptGroups: TPromptGroup[];\n  pageNumber: string;\n  pageSize: string | number;\n  pages: string | number;\n};\n\nexport type PromptGroupListData = InfiniteData<PromptGroupListResponse>;\n\nexport type TCreatePromptResponse = {\n  prompt: TPrompt;\n  group?: TPromptGroup;\n};\n\nexport type TUpdatePromptGroupPayload = Partial<TPromptGroup> & {\n  removeProjectIds?: string[];\n};\n\nexport type TUpdatePromptGroupVariables = {\n  id: string;\n  payload: TUpdatePromptGroupPayload;\n};\n\nexport type TUpdatePromptGroupResponse = TPromptGroup;\n\nexport type TDeletePromptResponse = {\n  prompt: string;\n  promptGroup?: { message: string; id: string };\n};\n\nexport type TDeletePromptVariables = {\n  _id: string;\n  groupId: string;\n};\n\nexport type TMakePromptProductionResponse = {\n  message: string;\n};\n\nexport type TMakePromptProductionRequest = {\n  id: string;\n  groupId: string;\n  productionPrompt: Pick<TPrompt, 'prompt'>;\n};\n\nexport type TUpdatePromptLabelsRequest = {\n  id: string;\n  payload: {\n    labels: string[];\n  };\n};\n\nexport type TUpdatePromptLabelsResponse = {\n  message: string;\n};\n\nexport type TDeletePromptGroupResponse = TUpdatePromptLabelsResponse;\n\nexport type TDeletePromptGroupRequest = {\n  id: string;\n};\n\nexport type TGetCategoriesResponse = TCategory[];\n\nexport type TGetRandomPromptsResponse = {\n  prompts: TPromptGroup[];\n};\n\nexport type TGetRandomPromptsRequest = {\n  limit: number;\n  skip: number;\n};\n\nexport type TCustomConfigSpeechResponse = { [key: string]: string };\n\nexport type TUserTermsResponse = {\n  termsAccepted: boolean;\n};\n\nexport type TAcceptTermsResponse = {\n  success: boolean;\n};\n\nexport type TBannerResponse = TBanner | null;\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/utils.ts",
    "content": "export const envVarRegex = /^\\${(.+)}$/;\n\n/** Extracts the value of an environment variable from a string. */\nexport function extractEnvVariable(value: string) {\n  if (!value) {\n    return value;\n  }\n\n  // Trim the input\n  const trimmed = value.trim();\n\n  // Special case: if it's just a single environment variable\n  const singleMatch = trimmed.match(envVarRegex);\n  if (singleMatch) {\n    const varName = singleMatch[1];\n    return process.env[varName] || trimmed;\n  }\n\n  // For multiple variables, process them using a regex loop\n  const regex = /\\${([^}]+)}/g;\n  let result = trimmed;\n\n  // First collect all matches and their positions\n  const matches = [];\n  let match;\n  while ((match = regex.exec(trimmed)) !== null) {\n    matches.push({\n      fullMatch: match[0],\n      varName: match[1],\n      index: match.index,\n    });\n  }\n\n  // Process matches in reverse order to avoid position shifts\n  for (let i = matches.length - 1; i >= 0; i--) {\n    const { fullMatch, varName, index } = matches[i];\n    const envValue = process.env[varName] || fullMatch;\n\n    // Replace at exact position\n    result = result.substring(0, index) + envValue + result.substring(index + fullMatch.length);\n  }\n\n  return result;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/zod.spec.ts",
    "content": "/* eslint-disable jest/no-conditional-expect */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// zod.spec.ts\nimport { z } from 'zod';\nimport { convertJsonSchemaToZod } from './zod';\nimport type { JsonSchemaType } from './zod';\n\ndescribe('convertJsonSchemaToZod', () => {\n  describe('primitive types', () => {\n    it('should convert string schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'string',\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse('test')).toBe('test');\n      expect(() => zodSchema?.parse(123)).toThrow();\n    });\n\n    it('should convert string enum schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'string',\n        enum: ['foo', 'bar', 'baz'],\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse('foo')).toBe('foo');\n      expect(() => zodSchema?.parse('invalid')).toThrow();\n    });\n\n    it('should convert number schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'number',\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse(123)).toBe(123);\n      expect(() => zodSchema?.parse('123')).toThrow();\n    });\n\n    it('should convert boolean schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'boolean',\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse(true)).toBe(true);\n      expect(() => zodSchema?.parse('true')).toThrow();\n    });\n  });\n\n  describe('array types', () => {\n    it('should convert array of strings schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'array',\n        items: { type: 'string' },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse(['a', 'b', 'c'])).toEqual(['a', 'b', 'c']);\n      expect(() => zodSchema?.parse(['a', 123, 'c'])).toThrow();\n    });\n\n    it('should convert array of numbers schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'array',\n        items: { type: 'number' },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse([1, 2, 3])).toEqual([1, 2, 3]);\n      expect(() => zodSchema?.parse([1, '2', 3])).toThrow();\n    });\n  });\n\n  describe('object types', () => {\n    it('should convert simple object schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          name: { type: 'string' },\n          age: { type: 'number' },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse({ name: 'John', age: 30 })).toEqual({ name: 'John', age: 30 });\n      expect(() => zodSchema?.parse({ name: 123, age: 30 })).toThrow();\n    });\n\n    it('should handle required fields', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          name: { type: 'string' },\n          age: { type: 'number' },\n        },\n        required: ['name'],\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse({ name: 'John' })).toEqual({ name: 'John' });\n      expect(() => zodSchema?.parse({})).toThrow();\n    });\n\n    it('should handle nested objects', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          user: {\n            type: 'object',\n            properties: {\n              name: { type: 'string' },\n              age: { type: 'number' },\n            },\n            required: ['name'],\n          },\n        },\n        required: ['user'],\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse({ user: { name: 'John', age: 30 } })).toEqual({\n        user: { name: 'John', age: 30 },\n      });\n      expect(() => zodSchema?.parse({ user: { age: 30 } })).toThrow();\n    });\n\n    it('should handle objects with arrays', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          names: {\n            type: 'array',\n            items: { type: 'string' },\n          },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse({ names: ['John', 'Jane'] })).toEqual({ names: ['John', 'Jane'] });\n      expect(() => zodSchema?.parse({ names: ['John', 123] })).toThrow();\n    });\n  });\n\n  describe('edge cases', () => {\n    it('should handle empty object schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {},\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse({})).toEqual({});\n    });\n\n    it('should handle unknown types as unknown', () => {\n      const schema = {\n        type: 'invalid',\n      } as unknown as JsonSchemaType;\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse('anything')).toBe('anything');\n      expect(zodSchema?.parse(123)).toBe(123);\n    });\n\n    it('should handle empty enum arrays as regular strings', () => {\n      const schema: JsonSchemaType = {\n        type: 'string',\n        enum: [],\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      expect(zodSchema?.parse('test')).toBe('test');\n    });\n  });\n\n  describe('complex schemas', () => {\n    it('should handle complex nested schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          id: { type: 'number' },\n          user: {\n            type: 'object',\n            properties: {\n              name: { type: 'string' },\n              roles: {\n                type: 'array',\n                items: {\n                  type: 'object',\n                  properties: {\n                    name: { type: 'string' },\n                    permissions: {\n                      type: 'array',\n                      items: {\n                        type: 'string',\n                        enum: ['read', 'write', 'admin'],\n                      },\n                    },\n                  },\n                  required: ['name', 'permissions'],\n                },\n              },\n            },\n            required: ['name', 'roles'],\n          },\n        },\n        required: ['id', 'user'],\n      };\n\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      const validData = {\n        id: 1,\n        user: {\n          name: 'John',\n          roles: [\n            {\n              name: 'moderator',\n              permissions: ['read', 'write'],\n            },\n          ],\n        },\n      };\n      if (zodSchema == null) {\n        throw new Error('Zod schema is null');\n      }\n\n      expect(zodSchema.parse(validData)).toEqual(validData);\n      expect(() =>\n        zodSchema.parse({\n          id: 1,\n          user: {\n            name: 'John',\n            roles: [\n              {\n                name: 'moderator',\n                permissions: ['invalid'],\n              },\n            ],\n          },\n        }),\n      ).toThrow();\n    });\n  });\n\n  // zod.spec.ts\n  describe('schema descriptions', () => {\n    it('should preserve top-level description', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        description: 'A test schema description',\n        properties: {\n          name: { type: 'string' },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n      expect(zodSchema?.description).toBe('A test schema description');\n    });\n\n    it('should preserve field descriptions', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          name: {\n            type: 'string',\n            description: 'The user\\'s name',\n          },\n          age: {\n            type: 'number',\n            description: 'The user\\'s age',\n          },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      const shape = (zodSchema as z.ZodObject<any>).shape;\n      expect(shape.name.description).toBe('The user\\'s name');\n      expect(shape.age.description).toBe('The user\\'s age');\n    });\n\n    it('should preserve descriptions in nested objects', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        description: 'User record',\n        properties: {\n          user: {\n            type: 'object',\n            description: 'User details',\n            properties: {\n              name: {\n                type: 'string',\n                description: 'The user\\'s name',\n              },\n              settings: {\n                type: 'object',\n                description: 'User preferences',\n                properties: {\n                  theme: {\n                    type: 'string',\n                    description: 'UI theme preference',\n                    enum: ['light', 'dark'],\n                  },\n                },\n              },\n            },\n          },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      // Type assertions for better type safety\n      const shape = zodSchema instanceof z.ZodObject ? zodSchema.shape : {};\n      expect(zodSchema?.description).toBe('User record');\n\n      if ('user' in shape) {\n        expect(shape.user.description).toBe('User details');\n\n        const userShape = shape.user instanceof z.ZodObject ? shape.user.shape : {};\n        if ('name' in userShape && 'settings' in userShape) {\n          expect(userShape.name.description).toBe('The user\\'s name');\n          expect(userShape.settings.description).toBe('User preferences');\n\n          const settingsShape =\n            userShape.settings instanceof z.ZodObject ? userShape.settings.shape : {};\n          if ('theme' in settingsShape) {\n            expect(settingsShape.theme.description).toBe('UI theme preference');\n          }\n        }\n      }\n    });\n\n    it('should preserve descriptions in arrays', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          tags: {\n            type: 'array',\n            description: 'User tags',\n            items: {\n              type: 'string',\n              description: 'Individual tag',\n            },\n          },\n          scores: {\n            type: 'array',\n            description: 'Test scores',\n            items: {\n              type: 'number',\n              description: 'Individual score',\n            },\n          },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      const shape = (zodSchema as z.ZodObject<any>).shape;\n      expect(shape.tags.description).toBe('User tags');\n      expect(shape.scores.description).toBe('Test scores');\n    });\n\n    it('should preserve descriptions in enums', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          role: {\n            type: 'string',\n            description: 'User role in the system',\n            enum: ['admin', 'user', 'guest'],\n          },\n          status: {\n            type: 'string',\n            description: 'Account status',\n            enum: ['active', 'suspended', 'deleted'],\n          },\n        },\n      };\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      const shape = (zodSchema as z.ZodObject<any>).shape;\n      expect(shape.role.description).toBe('User role in the system');\n      expect(shape.status.description).toBe('Account status');\n    });\n\n    it('should preserve descriptions in a complex schema', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        description: 'User profile configuration',\n        properties: {\n          basicInfo: {\n            type: 'object',\n            description: 'Basic user information',\n            properties: {\n              name: {\n                type: 'string',\n                description: 'Full name of the user',\n              },\n              age: {\n                type: 'number',\n                description: 'User age in years',\n              },\n            },\n            required: ['name'],\n          },\n          preferences: {\n            type: 'object',\n            description: 'User preferences',\n            properties: {\n              notifications: {\n                type: 'array',\n                description: 'Notification settings',\n                items: {\n                  type: 'object',\n                  description: 'Individual notification preference',\n                  properties: {\n                    type: {\n                      type: 'string',\n                      description: 'Type of notification',\n                      enum: ['email', 'sms', 'push'],\n                    },\n                    enabled: {\n                      type: 'boolean',\n                      description: 'Whether this notification is enabled',\n                    },\n                  },\n                },\n              },\n              theme: {\n                type: 'string',\n                description: 'UI theme preference',\n                enum: ['light', 'dark', 'system'],\n              },\n            },\n          },\n        },\n      };\n\n      const zodSchema = convertJsonSchemaToZod(schema);\n\n      // Test top-level description\n      expect(zodSchema?.description).toBe('User profile configuration');\n\n      const shape = zodSchema instanceof z.ZodObject ? zodSchema.shape : {};\n\n      // Test basic info descriptions\n      if ('basicInfo' in shape) {\n        expect(shape.basicInfo.description).toBe('Basic user information');\n        const basicInfoShape = shape.basicInfo instanceof z.ZodObject ? shape.basicInfo.shape : {};\n\n        if ('name' in basicInfoShape && 'age' in basicInfoShape) {\n          expect(basicInfoShape.name.description).toBe('Full name of the user');\n          expect(basicInfoShape.age.description).toBe('User age in years');\n        }\n      }\n\n      // Test preferences descriptions\n      if ('preferences' in shape) {\n        expect(shape.preferences.description).toBe('User preferences');\n        const preferencesShape =\n          shape.preferences instanceof z.ZodObject ? shape.preferences.shape : {};\n\n        if ('notifications' in preferencesShape && 'theme' in preferencesShape) {\n          expect(preferencesShape.notifications.description).toBe('Notification settings');\n          expect(preferencesShape.theme.description).toBe('UI theme preference');\n        }\n      }\n    });\n  });\n\n  describe('empty object handling', () => {\n    it('should return undefined for empty object schemas when allowEmptyObject is false', () => {\n      const emptyObjectSchemas = [\n        { type: 'object' as const },\n        { type: 'object' as const, properties: {} },\n      ];\n\n      emptyObjectSchemas.forEach((schema) => {\n        expect(convertJsonSchemaToZod(schema, { allowEmptyObject: false })).toBeUndefined();\n      });\n    });\n\n    it('should return zod schema for empty object schemas when allowEmptyObject is true', () => {\n      const emptyObjectSchemas = [\n        { type: 'object' as const },\n        { type: 'object' as const, properties: {} },\n      ];\n\n      emptyObjectSchemas.forEach((schema) => {\n        const result = convertJsonSchemaToZod(schema, { allowEmptyObject: true });\n        expect(result).toBeDefined();\n        expect(result instanceof z.ZodObject).toBeTruthy();\n      });\n    });\n\n    it('should return zod schema for empty object schemas by default', () => {\n      const emptyObjectSchemas = [\n        { type: 'object' as const },\n        { type: 'object' as const, properties: {} },\n      ];\n\n      emptyObjectSchemas.forEach((schema) => {\n        const result = convertJsonSchemaToZod(schema);\n        expect(result).toBeDefined();\n        expect(result instanceof z.ZodObject).toBeTruthy();\n      });\n    });\n\n    it('should still convert non-empty object schemas regardless of allowEmptyObject setting', () => {\n      const schema: JsonSchemaType = {\n        type: 'object',\n        properties: {\n          name: { type: 'string' },\n        },\n      };\n\n      const resultWithFlag = convertJsonSchemaToZod(schema, { allowEmptyObject: false });\n      const resultWithoutFlag = convertJsonSchemaToZod(schema);\n\n      expect(resultWithFlag).toBeDefined();\n      expect(resultWithoutFlag).toBeDefined();\n      expect(resultWithFlag instanceof z.ZodObject).toBeTruthy();\n      expect(resultWithoutFlag instanceof z.ZodObject).toBeTruthy();\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/src/zod.ts",
    "content": "import { z } from 'zod';\n\nexport type JsonSchemaType = {\n  type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n  enum?: string[];\n  items?: JsonSchemaType;\n  properties?: Record<string, JsonSchemaType>;\n  required?: string[];\n  description?: string;\n};\n\nfunction isEmptyObjectSchema(jsonSchema?: JsonSchemaType): boolean {\n  return (\n    jsonSchema != null &&\n    typeof jsonSchema === 'object' &&\n    jsonSchema.type === 'object' &&\n    (jsonSchema.properties == null || Object.keys(jsonSchema.properties).length === 0)\n  );\n}\n\nexport function convertJsonSchemaToZod(\n  schema: JsonSchemaType,\n  options: { allowEmptyObject?: boolean } = {},\n): z.ZodType | undefined {\n  const { allowEmptyObject = true } = options;\n  if (!allowEmptyObject && isEmptyObjectSchema(schema)) {\n    return undefined;\n  }\n\n  let zodSchema: z.ZodType;\n\n  // Handle primitive types\n  if (schema.type === 'string') {\n    if (Array.isArray(schema.enum) && schema.enum.length > 0) {\n      const [first, ...rest] = schema.enum;\n      zodSchema = z.enum([first, ...rest] as [string, ...string[]]);\n    } else {\n      zodSchema = z.string();\n    }\n  } else if (schema.type === 'number') {\n    zodSchema = z.number();\n  } else if (schema.type === 'boolean') {\n    zodSchema = z.boolean();\n  } else if (schema.type === 'array' && schema.items !== undefined) {\n    const itemSchema = convertJsonSchemaToZod(schema.items);\n    zodSchema = z.array(itemSchema as z.ZodType);\n  } else if (schema.type === 'object') {\n    const shape: Record<string, z.ZodType> = {};\n    const properties = schema.properties ?? {};\n\n    for (const [key, value] of Object.entries(properties)) {\n      let fieldSchema = convertJsonSchemaToZod(value);\n      if (!fieldSchema) {\n        continue;\n      }\n      if (value.description != null && value.description !== '') {\n        fieldSchema = fieldSchema.describe(value.description);\n      }\n      shape[key] = fieldSchema;\n    }\n\n    let objectSchema = z.object(shape);\n\n    if (Array.isArray(schema.required) && schema.required.length > 0) {\n      const partial = Object.fromEntries(\n        Object.entries(shape).map(([key, value]) => [\n          key,\n          schema.required?.includes(key) === true ? value : value.optional(),\n        ]),\n      );\n      objectSchema = z.object(partial);\n    } else {\n      objectSchema = objectSchema.partial();\n    }\n    zodSchema = objectSchema;\n  } else {\n    zodSchema = z.unknown();\n  }\n\n  // Add description if present\n  if (schema.description != null && schema.description !== '') {\n    zodSchema = zodSchema.describe(schema.description);\n  }\n\n  return zodSchema;\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \"./dist/types\",\n    \"module\": \"esnext\",\n    \"noImplicitAny\": true,\n    \"outDir\": \"./types\",\n    \"target\": \"es5\",\n    \"moduleResolution\": \"node\",\n    \"allowSyntheticDefaultImports\": true,\n    \"lib\": [\"es2017\", \"dom\", \"ES2021.String\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"sourceMap\": true,\n    \"baseUrl\": \".\",\n  },\n  \"exclude\": [\"node_modules\", \"dist\", \"types\"],\n  \"include\": [\"src/**/*\", \"types/index.d.ts\", \"types/react-query/index.d.ts\"]\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/data-provider/tsconfig.spec.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"noEmit\": true,\n    \"outDir\": \"./dist/tests\",\n    \"baseUrl\": \".\"\n  },\n  \"include\": [\"specs/**/*\", \"src/**/*\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/index.ts",
    "content": "export * from './Auth';\nexport * from './Agents';\nexport * from './Endpoints';\nexport * from './Files';\nexport * from './Messages';\nexport * from './Misc';\nexport * from './Tools';\nexport * from './connection';\nexport * from './mutations';\nexport * from './prompts';\nexport * from './queries';\nexport * from './roles';\nexport * from './tags';\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/mutations.ts",
    "content": "import type { InfiniteData, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport type * as t from '~/data-provider/data-provider/src';\nimport {\n  Constants,\n  ConversationListResponse,\n  MutationKeys, QueryKeys,\n  dataService,\n  defaultAssistantsVersion,\n  defaultOrderQuery,\n} from '~/data-provider/data-provider/src';\nimport useUpdateTagsInConvo from '~/hooks/Conversations/useUpdateTagsInConvo';\nimport {\n  /* Conversations */\n  addConversation,\n  deleteConversation,\n  logger,\n  updateConversation,\n  updateConvoFields,\n} from '~/utils';\nimport { normalizeData } from '~/utils/collection';\nimport { updateConversationTag } from '~/utils/conversationTags';\nimport { useConversationTagsQuery, useConversationsInfiniteQuery } from './queries';\n\nexport type TGenTitleMutation = UseMutationResult<\n  t.TGenTitleResponse,\n  unknown,\n  t.TGenTitleRequest,\n  unknown\n>;\n\n/** Conversations */\nexport const useGenTitleMutation = (): TGenTitleMutation => {\n  const queryClient = useQueryClient();\n  return useMutation((payload: t.TGenTitleRequest) => dataService.genTitle(payload), {\n    onSuccess: (response, vars) => {\n      if (!response.title) return\n      queryClient.setQueryData(\n        [QueryKeys.conversation, vars.conversationId],\n        (convo: t.TConversation | undefined) => {\n          if (!convo) {\n            return convo;\n          }\n          return { ...convo, title: response.title };\n        },\n      );\n      queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n        if (!convoData) {\n          return convoData;\n        }\n        return updateConvoFields(convoData, {\n          conversationId: vars.conversationId,\n          title: response.title,\n        } as t.TConversation);\n      });\n      // document.title = response.title;\n    },\n  });\n};\n\nexport const useUpdateConversationMutation = (\n  id: string,\n): UseMutationResult<\n  t.TUpdateConversationResponse,\n  unknown,\n  t.TUpdateConversationRequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (payload: t.TUpdateConversationRequest) => dataService.updateConversation(payload),\n    {\n      onSuccess: (updatedConvo, payload) => {\n        const convo = {\n          ...payload,\n          \"_id\": \"67f7b0911047906c64090ac9\",\n          \"user\": \"\",\n          \"__v\": 0,\n          \"createdAt\": \"2025-04-10T11:50:41.882Z\",\n          \"endpoint\": \"Deepseek\",\n          \"endpointType\": \"custom\",\n          \"expiredAt\": null,\n          \"files\": [],\n          \"isArchived\": false,\n          \"messages\": [\n            \"67f7b0911047906c64090ac8\",\n            \"67f7b0951047906c64090aca\",\n            \"67f7cf011047906c64090ad3\",\n            \"67f7cf091047906c64090ad4\",\n            \"67f7cf0e1047906c64090ad5\",\n            \"67f7cfea1047906c64090ad8\",\n            \"67f7cff01047906c64090ad9\"\n          ],\n          \"model\": \"deepseek-chat\",\n          \"resendFiles\": true,\n          \"tags\": [],\n          \"updatedAt\": \"2025-04-11T06:15:00.445Z\"\n        }\n        queryClient.setQueryData([QueryKeys.conversation, id], convo);\n        queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          return updateConversation(convoData, convo);\n        });\n      },\n    },\n  );\n};\n\n/**\n * Add or remove tags for a conversation\n */\nexport const useTagConversationMutation = (\n  conversationId: string,\n  options?: t.updateTagsInConvoOptions,\n): UseMutationResult<t.TTagConversationResponse, unknown, t.TTagConversationRequest, unknown> => {\n  const query = useConversationTagsQuery();\n  const { updateTagsInConversation } = useUpdateTagsInConvo();\n  return useMutation(\n    (payload: t.TTagConversationRequest) =>\n      dataService.addTagToConversation(conversationId, payload),\n    {\n      onSuccess: (updatedTags, ...rest) => {\n        // Because the logic for calculating the bookmark count is complex,\n        // the client does not perform the calculation,\n        // but instead refetch the data from the API.\n        query.refetch();\n        updateTagsInConversation(conversationId, updatedTags);\n\n        options?.onSuccess?.(updatedTags, ...rest);\n      },\n      onError: options?.onError,\n      onMutate: options?.onMutate,\n    },\n  );\n};\n\nexport const useArchiveConversationMutation = (\n  id: string,\n): UseMutationResult<\n  t.TArchiveConversationResponse,\n  unknown,\n  t.TArchiveConversationRequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  const { refetch } = useConversationsInfiniteQuery();\n  const { refetch: archiveRefetch } = useConversationsInfiniteQuery({\n    pageNumber: '1', // dummy value not used to refetch\n    isArchived: true,\n  });\n  return useMutation(\n    (payload: t.TArchiveConversationRequest) => dataService.archiveConversation(payload),\n    {\n      onSuccess: (_data, vars) => {\n        const isArchived = vars.isArchived === true;\n        if (isArchived) {\n          queryClient.setQueryData([QueryKeys.conversation, id], null);\n        } else {\n          queryClient.setQueryData([QueryKeys.conversation, id], _data);\n        }\n\n        queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          const pageSize = convoData.pages[0].pageSize as number;\n\n          return normalizeData(\n            isArchived ? deleteConversation(convoData, id) : addConversation(convoData, _data),\n            'conversations',\n            pageSize,\n          );\n        });\n\n        if (isArchived) {\n          const current = queryClient.getQueryData<t.ConversationData>([\n            QueryKeys.allConversations,\n          ]);\n          refetch({ refetchPage: (page, index) => index === (current?.pages.length ?? 1) - 1 });\n        }\n\n        queryClient.setQueryData<t.ConversationData>(\n          [QueryKeys.archivedConversations],\n          (convoData) => {\n            if (!convoData) {\n              return convoData;\n            }\n            const pageSize = convoData.pages[0].pageSize as number;\n            return normalizeData(\n              isArchived ? addConversation(convoData, _data) : deleteConversation(convoData, id),\n              'conversations',\n              pageSize,\n            );\n          },\n        );\n\n        if (!isArchived) {\n          const currentArchive = queryClient.getQueryData<t.ConversationData>([\n            QueryKeys.archivedConversations,\n          ]);\n          archiveRefetch({\n            refetchPage: (page, index) => index === (currentArchive?.pages.length ?? 1) - 1,\n          });\n        }\n      },\n    },\n  );\n};\n\nexport const useArchiveConvoMutation = (options?: t.ArchiveConvoOptions) => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ..._options } = options ?? {};\n\n  return useMutation<t.TArchiveConversationResponse, unknown, t.TArchiveConversationRequest>(\n    (payload: t.TArchiveConversationRequest) => dataService.archiveConversation(payload),\n    {\n      onSuccess: (_data, vars) => {\n        const { conversationId } = vars;\n        const isArchived = vars.isArchived === true;\n        if (isArchived) {\n          queryClient.setQueryData([QueryKeys.conversation, conversationId], null);\n        } else {\n          queryClient.setQueryData([QueryKeys.conversation, conversationId], _data);\n        }\n\n        queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          const pageSize = convoData.pages[0].pageSize as number;\n          return normalizeData(\n            isArchived\n              ? deleteConversation(convoData, conversationId)\n              : addConversation(convoData, _data),\n            'conversations',\n            pageSize,\n          );\n        });\n\n        queryClient.setQueryData<t.ConversationData>(\n          [QueryKeys.archivedConversations],\n          (convoData) => {\n            if (!convoData) {\n              return convoData;\n            }\n            const pageSize = convoData.pages[0].pageSize as number;\n            return normalizeData(\n              isArchived\n                ? addConversation(convoData, _data)\n                : deleteConversation(convoData, conversationId),\n              'conversations',\n              pageSize,\n            );\n          },\n        );\n\n        onSuccess?.(_data, vars);\n      },\n      ..._options,\n    },\n  );\n};\n\nexport const useCreateSharedLinkMutation = (\n  options?: t.MutationOptions<t.TCreateShareLinkRequest, { conversationId: string }>,\n): UseMutationResult<t.TSharedLinkResponse, unknown, { conversationId: string }, unknown> => {\n  const queryClient = useQueryClient();\n\n  const { onSuccess, ..._options } = options || {};\n  return useMutation(\n    ({ conversationId }: { conversationId: string }) => {\n      if (!conversationId) {\n        throw new Error('Conversation ID is required');\n      }\n\n      return dataService.createSharedLink(conversationId);\n    },\n    {\n      onSuccess: (_data: t.TSharedLinkResponse, vars, context) => {\n        queryClient.setQueryData([QueryKeys.sharedLinks, _data.conversationId], _data);\n\n        onSuccess?.(_data, vars, context);\n      },\n      ..._options,\n    },\n  );\n};\n\nexport const useUpdateSharedLinkMutation = (\n  options?: t.MutationOptions<t.TUpdateShareLinkRequest, { shareId: string }>,\n): UseMutationResult<t.TSharedLinkResponse, unknown, { shareId: string }, unknown> => {\n  const queryClient = useQueryClient();\n\n  const { onSuccess, ..._options } = options || {};\n  return useMutation(\n    ({ shareId }) => {\n      if (!shareId) {\n        throw new Error('Share ID is required');\n      }\n      return dataService.updateSharedLink(shareId);\n    },\n    {\n      onSuccess: (_data: t.TSharedLinkResponse, vars, context) => {\n        queryClient.setQueryData([QueryKeys.sharedLinks, _data.conversationId], _data);\n\n        onSuccess?.(_data, vars, context);\n      },\n      ..._options,\n    },\n  );\n};\n\nexport const useDeleteSharedLinkMutation = (\n  options?: t.DeleteSharedLinkOptions,\n): UseMutationResult<\n  t.TDeleteSharedLinkResponse,\n  unknown,\n  { shareId: string },\n  t.DeleteSharedLinkContext\n> => {\n  const queryClient = useQueryClient();\n  const { onSuccess } = options || {};\n\n  return useMutation((vars) => dataService.deleteSharedLink(vars.shareId), {\n    onMutate: async (vars) => {\n      await queryClient.cancelQueries({\n        queryKey: [QueryKeys.sharedLinks],\n        exact: false,\n      });\n\n      const previousQueries = new Map();\n      const queryKeys = queryClient.getQueryCache().findAll([QueryKeys.sharedLinks]);\n\n      queryKeys.forEach((query) => {\n        const previousData = queryClient.getQueryData(query.queryKey);\n        previousQueries.set(query.queryKey, previousData);\n\n        queryClient.setQueryData<t.SharedLinkQueryData>(query.queryKey, (old) => {\n          if (!old?.pages) {\n            return old;\n          }\n\n          const updatedPages = old.pages.map((page) => ({\n            ...page,\n            links: page.links.filter((link) => link.shareId !== vars.shareId),\n          }));\n\n          const nonEmptyPages = updatedPages.filter((page) => page.links.length > 0);\n\n          return {\n            ...old,\n            pages: nonEmptyPages,\n          };\n        });\n      });\n\n      return { previousQueries };\n    },\n\n    onError: (_err, _vars, context) => {\n      if (context?.previousQueries) {\n        context.previousQueries.forEach((prevData: unknown, prevQueryKey: unknown) => {\n          queryClient.setQueryData(prevQueryKey as string[], prevData);\n        });\n      }\n    },\n\n    onSettled: () => {\n      queryClient.invalidateQueries({\n        queryKey: [QueryKeys.sharedLinks],\n        exact: false,\n      });\n    },\n\n    onSuccess: (data, variables) => {\n      if (onSuccess) {\n        onSuccess(data, variables);\n      }\n\n      queryClient.refetchQueries({\n        queryKey: [QueryKeys.sharedLinks],\n        exact: true,\n      });\n    },\n  });\n};\n\n// Add a tag or update tag information (tag, description, position, etc.)\nexport const useConversationTagMutation = ({\n  context,\n  tag,\n  options,\n}: {\n  context: string;\n  tag?: string;\n  options?: t.UpdateConversationTagOptions;\n}): UseMutationResult<t.TConversationTagResponse, unknown, t.TConversationTagRequest, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ..._options } = options || {};\n  const onMutationSuccess: typeof onSuccess = (_data, vars) => {\n    queryClient.setQueryData<t.TConversationTag[]>([QueryKeys.conversationTags], (queryData) => {\n      if (!queryData) {\n        return [\n          {\n            count: 1,\n            position: 0,\n            tag: Constants.SAVED_TAG,\n            createdAt: new Date().toISOString(),\n            updatedAt: new Date().toISOString(),\n          },\n        ] as t.TConversationTag[];\n      }\n      if (tag === undefined || !tag.length) {\n        // Check if the tag already exists\n        const existingTagIndex = queryData.findIndex((item) => item.tag === _data.tag);\n        if (existingTagIndex !== -1) {\n          logger.log(\n            'tag_mutation',\n            `\"Created\" tag exists, updating from ${context}`,\n            queryData,\n            _data,\n          );\n          // If the tag exists, update it\n          const updatedData = [...queryData];\n          updatedData[existingTagIndex] = { ...updatedData[existingTagIndex], ..._data };\n          return updatedData.sort((a, b) => a.position - b.position);\n        } else {\n          // If the tag doesn't exist, add it\n          logger.log(\n            'tag_mutation',\n            `\"Created\" tag is new, adding from ${context}`,\n            queryData,\n            _data,\n          );\n          return [...queryData, _data].sort((a, b) => a.position - b.position);\n        }\n      }\n      logger.log('tag_mutation', `Updating tag from ${context}`, queryData, _data);\n      return updateConversationTag(queryData, vars, _data, tag);\n    });\n    if (vars.addToConversation === true && vars.conversationId != null && _data.tag) {\n      const currentConvo = queryClient.getQueryData<t.TConversation>([\n        QueryKeys.conversation,\n        vars.conversationId,\n      ]);\n      if (!currentConvo) {\n        return;\n      }\n      logger.log(\n        'tag_mutation',\n        `\\`updateTagsInConversation\\` Update from ${context}`,\n        currentConvo,\n      );\n      updateTagsInConversation(vars.conversationId, [...(currentConvo.tags || []), _data.tag]);\n    }\n    // Change the tag title to the new title\n    if (tag != null) {\n      replaceTagsInAllConversations(tag, _data.tag);\n    }\n  };\n  const { updateTagsInConversation, replaceTagsInAllConversations } = useUpdateTagsInConvo();\n  return useMutation(\n    (payload: t.TConversationTagRequest) =>\n      tag != null\n        ? dataService.updateConversationTag(tag, payload)\n        : dataService.createConversationTag(payload),\n    {\n      onSuccess: (...args) => {\n        onMutationSuccess(...args);\n        onSuccess?.(...args);\n      },\n      ..._options,\n    },\n  );\n};\n\n// When a bookmark is deleted, remove that bookmark(tag) from all conversations associated with it\nexport const useDeleteTagInConversations = () => {\n  const queryClient = useQueryClient();\n  const deleteTagInAllConversation = (deletedTag: string) => {\n    const data = queryClient.getQueryData<InfiniteData<ConversationListResponse>>([\n      QueryKeys.allConversations,\n    ]);\n\n    const conversationIdsWithTag = [] as string[];\n\n    // remove deleted tag from conversations\n    const newData = JSON.parse(JSON.stringify(data)) as InfiniteData<ConversationListResponse>;\n    for (let pageIndex = 0; pageIndex < newData.pages.length; pageIndex++) {\n      const page = newData.pages[pageIndex];\n      page.conversations = page.conversations.map((conversation) => {\n        if (\n          conversation.conversationId != null &&\n          conversation.conversationId &&\n          conversation.tags?.includes(deletedTag) === true\n        ) {\n          conversationIdsWithTag.push(conversation.conversationId);\n          conversation.tags = conversation.tags.filter((t) => t !== deletedTag);\n        }\n        return conversation;\n      });\n    }\n    queryClient.setQueryData<InfiniteData<ConversationListResponse>>(\n      [QueryKeys.allConversations],\n      newData,\n    );\n\n    // Remove the deleted tag from the cache of each conversation\n    for (let i = 0; i < conversationIdsWithTag.length; i++) {\n      const conversationId = conversationIdsWithTag[i];\n      const conversationData = queryClient.getQueryData<t.TConversation>([\n        QueryKeys.conversation,\n        conversationId,\n      ]);\n      if (conversationData && conversationData.tags) {\n        conversationData.tags = conversationData.tags.filter((t) => t !== deletedTag);\n        queryClient.setQueryData<t.TConversation>(\n          [QueryKeys.conversation, conversationId],\n          conversationData,\n        );\n      }\n    }\n  };\n  return deleteTagInAllConversation;\n};\n// Delete a tag\nexport const useDeleteConversationTagMutation = (\n  options?: t.DeleteConversationTagOptions,\n): UseMutationResult<t.TConversationTagResponse, unknown, string, void> => {\n  const queryClient = useQueryClient();\n  const deleteTagInAllConversations = useDeleteTagInConversations();\n\n  const { onSuccess, ..._options } = options || {};\n\n  return useMutation((tag: string) => dataService.deleteConversationTag(tag), {\n    onSuccess: (_data, tagToDelete, context) => {\n      queryClient.setQueryData<t.TConversationTag[]>([QueryKeys.conversationTags], (data) => {\n        if (!data) {\n          return data;\n        }\n        return data.filter((t) => t.tag !== tagToDelete);\n      });\n\n      deleteTagInAllConversations(tagToDelete);\n      onSuccess?.(_data, tagToDelete, context);\n    },\n    ..._options,\n  });\n};\n\nexport const useDeleteConversationMutation = (\n  options?: t.DeleteConversationOptions,\n): UseMutationResult<\n  t.TDeleteConversationResponse,\n  unknown,\n  t.TDeleteConversationRequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  const { refetch } = useConversationsInfiniteQuery();\n  const { onSuccess, ..._options } = options || {};\n  return useMutation(\n    (payload: t.TDeleteConversationRequest) => dataService.deleteConversation(payload),\n    {\n      onSuccess: (_data, vars, context) => {\n        const conversationId = vars.conversationId ?? '';\n        if (!conversationId) {\n          return;\n        }\n\n        const handleDelete = (convoData: t.ConversationData | undefined) => {\n          if (!convoData) {\n            return convoData;\n          }\n          return normalizeData(\n            deleteConversation(convoData, conversationId),\n            'conversations',\n            Number(convoData.pages[0].pageSize),\n          );\n        };\n\n        queryClient.setQueryData([QueryKeys.conversation, conversationId], null);\n        queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], handleDelete);\n        queryClient.setQueryData<t.ConversationData>(\n          [QueryKeys.archivedConversations],\n          handleDelete,\n        );\n        const current = queryClient.getQueryData<t.ConversationData>([QueryKeys.allConversations]);\n        refetch({ refetchPage: (page, index) => index === (current?.pages.length ?? 1) - 1 });\n        onSuccess?.(_data, vars, context);\n      },\n      ..._options,\n    },\n  );\n};\n\nexport const useDuplicateConversationMutation = (\n  options?: t.DuplicateConvoOptions,\n): UseMutationResult<t.TDuplicateConvoResponse, unknown, t.TDuplicateConvoRequest, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ..._options } = options ?? {};\n  return useMutation((payload) => dataService.duplicateConversation(payload), {\n    onSuccess: (data, vars, context) => {\n      const originalId = vars.conversationId ?? '';\n      if (originalId.length === 0) {\n        return;\n      }\n      queryClient.setQueryData(\n        [QueryKeys.conversation, data.conversation.conversationId],\n        data.conversation,\n      );\n      queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n        if (!convoData) {\n          return convoData;\n        }\n        return addConversation(convoData, data.conversation);\n      });\n      queryClient.setQueryData<t.TMessage[]>(\n        [QueryKeys.messages, data.conversation.conversationId],\n        data.messages,\n      );\n      onSuccess?.(data, vars, context);\n    },\n    ..._options,\n  });\n};\n\nexport const useForkConvoMutation = (\n  options?: t.ForkConvoOptions,\n): UseMutationResult<t.TForkConvoResponse, unknown, t.TForkConvoRequest, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ..._options } = options || {};\n  return useMutation((payload: t.TForkConvoRequest) => dataService.forkConversation(payload), {\n    onSuccess: (data, vars, context) => {\n      if (!vars.conversationId) {\n        return;\n      }\n      queryClient.setQueryData(\n        [QueryKeys.conversation, data.conversation.conversationId],\n        data.conversation,\n      );\n      queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n        if (!convoData) {\n          return convoData;\n        }\n        return addConversation(convoData, data.conversation);\n      });\n      queryClient.setQueryData<t.TMessage[]>(\n        [QueryKeys.messages, data.conversation.conversationId],\n        data.messages,\n      );\n      onSuccess?.(data, vars, context);\n    },\n    ..._options,\n  });\n};\n\nexport const useUploadConversationsMutation = (\n  _options?: t.MutationOptions<t.TImportResponse, FormData>,\n) => {\n  const queryClient = useQueryClient();\n  const { onSuccess, onError, onMutate } = _options || {};\n\n  return useMutation<t.TImportResponse, unknown, FormData>({\n    mutationFn: (formData: FormData) => dataService.importConversationsFile(formData),\n    onSuccess: (data, variables, context) => {\n      /* TODO: optimize to return imported conversations and add manually */\n      queryClient.invalidateQueries([QueryKeys.allConversations]);\n      if (onSuccess) {\n        onSuccess(data, variables, context);\n      }\n    },\n    onError: (err, variables, context) => {\n      if (onError) {\n        onError(err, variables, context);\n      }\n    },\n    onMutate,\n  });\n};\n\nexport const useUpdatePresetMutation = (\n  options?: t.UpdatePresetOptions,\n): UseMutationResult<\n  t.TPreset, // response data\n  unknown,\n  t.TPreset,\n  unknown\n> => {\n  return useMutation([MutationKeys.updatePreset], {\n    mutationFn: (preset: t.TPreset) => dataService.updatePreset(preset),\n    ...(options || {}),\n  });\n};\n\nexport const useDeletePresetMutation = (\n  options?: t.DeletePresetOptions,\n): UseMutationResult<\n  t.PresetDeleteResponse, // response data\n  unknown,\n  t.TPreset | undefined,\n  unknown\n> => {\n  return useMutation([MutationKeys.deletePreset], {\n    mutationFn: (preset: t.TPreset | undefined) => dataService.deletePreset(preset),\n    ...(options || {}),\n  });\n};\n\n/* Avatar upload */\nexport const useUploadAvatarMutation = (\n  options?: t.UploadAvatarOptions,\n): UseMutationResult<\n  t.AvatarUploadResponse, // response data\n  unknown, // error\n  FormData, // request\n  unknown // context\n> => {\n  return useMutation([MutationKeys.avatarUpload], {\n    mutationFn: (variables: FormData) => dataService.uploadAvatar(variables),\n    ...(options || {}),\n  });\n};\n\n/* Speech to text */\nexport const useSpeechToTextMutation = (\n  options?: t.SpeechToTextOptions,\n): UseMutationResult<\n  t.SpeechToTextResponse, // response data\n  unknown, // error\n  FormData, // request\n  unknown // context\n> => {\n  return useMutation([MutationKeys.speechToText], {\n    mutationFn: (variables: FormData) => dataService.speechToText(variables),\n    ...(options || {}),\n  });\n};\n\n/* Text to speech */\nexport const useTextToSpeechMutation = (\n  options?: t.TextToSpeechOptions,\n): UseMutationResult<\n  ArrayBuffer, // response data\n  unknown, // error\n  FormData, // request\n  unknown // context\n> => {\n  return useMutation([MutationKeys.textToSpeech], {\n    mutationFn: (variables: FormData) => dataService.textToSpeech(variables),\n    ...(options || {}),\n  });\n};\n\n/**\n * ASSISTANTS\n */\n\n/**\n * Create a new assistant\n */\nexport const useCreateAssistantMutation = (\n  options?: t.CreateAssistantMutationOptions,\n): UseMutationResult<t.Assistant, Error, t.AssistantCreateParams> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (newAssistantData: t.AssistantCreateParams) => dataService.createAssistant(newAssistantData),\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (newAssistant, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AssistantListResponse>([\n          QueryKeys.assistants,\n          variables.endpoint,\n          defaultOrderQuery,\n        ]);\n\n        if (!listRes) {\n          return options?.onSuccess?.(newAssistant, variables, context);\n        }\n\n        const currentAssistants = [newAssistant, ...JSON.parse(JSON.stringify(listRes.data))];\n\n        queryClient.setQueryData<t.AssistantListResponse>(\n          [QueryKeys.assistants, variables.endpoint, defaultOrderQuery],\n          {\n            ...listRes,\n            data: currentAssistants,\n          },\n        );\n        return options?.onSuccess?.(newAssistant, variables, context);\n      },\n    },\n  );\n};\n\n/**\n * Hook for updating an assistant\n */\nexport const useUpdateAssistantMutation = (\n  options?: t.UpdateAssistantMutationOptions,\n): UseMutationResult<\n  t.Assistant,\n  Error,\n  { assistant_id: string; data: t.AssistantUpdateParams }\n> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    ({ assistant_id, data }: { assistant_id: string; data: t.AssistantUpdateParams }) => {\n      const { endpoint } = data;\n      const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n      const endpointConfig = endpointsConfig?.[endpoint];\n      const version = endpointConfig?.version ?? defaultAssistantsVersion[endpoint];\n      return dataService.updateAssistant({\n        data,\n        version,\n        assistant_id,\n      });\n    },\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (updatedAssistant, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AssistantListResponse>([\n          QueryKeys.assistants,\n          variables.data.endpoint,\n          defaultOrderQuery,\n        ]);\n\n        if (!listRes) {\n          return options?.onSuccess?.(updatedAssistant, variables, context);\n        }\n\n        queryClient.setQueryData<t.AssistantDocument[]>(\n          [QueryKeys.assistantDocs, variables.data.endpoint],\n          (prev) => {\n            if (!prev) {\n              return prev;\n            }\n            return prev.map((doc) => {\n              if (doc.assistant_id === variables.assistant_id) {\n                return {\n                  ...doc,\n                  conversation_starters: updatedAssistant.conversation_starters,\n                  append_current_datetime: variables.data.append_current_datetime,\n                };\n              }\n              return doc;\n            });\n          },\n        );\n\n        queryClient.setQueryData<t.AssistantListResponse>(\n          [QueryKeys.assistants, variables.data.endpoint, defaultOrderQuery],\n          {\n            ...listRes,\n            data: listRes.data.map((assistant) => {\n              if (assistant.id === variables.assistant_id) {\n                return updatedAssistant;\n              }\n              return assistant;\n            }),\n          },\n        );\n        return options?.onSuccess?.(updatedAssistant, variables, context);\n      },\n    },\n  );\n};\n\n/**\n * Hook for deleting an assistant\n */\nexport const useDeleteAssistantMutation = (\n  options?: t.DeleteAssistantMutationOptions,\n): UseMutationResult<void, Error, t.DeleteAssistantBody> => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    ({ assistant_id, model, endpoint }: t.DeleteAssistantBody) => {\n      const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n      const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n      return dataService.deleteAssistant({ assistant_id, model, version, endpoint });\n    },\n    {\n      onMutate: (variables) => options?.onMutate?.(variables),\n      onError: (error, variables, context) => options?.onError?.(error, variables, context),\n      onSuccess: (_data, variables, context) => {\n        const listRes = queryClient.getQueryData<t.AssistantListResponse>([\n          QueryKeys.assistants,\n          variables.endpoint,\n          defaultOrderQuery,\n        ]);\n\n        if (!listRes) {\n          return options?.onSuccess?.(_data, variables, context);\n        }\n\n        const data = listRes.data.filter((assistant) => assistant.id !== variables.assistant_id);\n\n        queryClient.setQueryData<t.AssistantListResponse>(\n          [QueryKeys.assistants, variables.endpoint, defaultOrderQuery],\n          {\n            ...listRes,\n            data,\n          },\n        );\n\n        return options?.onSuccess?.(_data, variables, data);\n      },\n    },\n  );\n};\n\n/**\n * Hook for uploading an assistant avatar\n */\nexport const useUploadAssistantAvatarMutation = (\n  options?: t.UploadAssistantAvatarOptions,\n): UseMutationResult<\n  t.Assistant, // response data\n  unknown, // error\n  t.AssistantAvatarVariables, // request\n  unknown // context\n> => {\n  return useMutation([MutationKeys.assistantAvatarUpload], {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    mutationFn: ({ postCreation, ...variables }: t.AssistantAvatarVariables) =>\n      dataService.uploadAssistantAvatar(variables),\n    ...(options || {}),\n  });\n};\n\n/**\n * Hook for updating Assistant Actions\n */\nexport const useUpdateAction = (\n  options?: t.UpdateActionOptions,\n): UseMutationResult<\n  t.UpdateActionResponse, // response data\n  unknown, // error\n  t.UpdateActionVariables, // request\n  unknown // context\n> => {\n  const queryClient = useQueryClient();\n  return useMutation([MutationKeys.updateAction], {\n    mutationFn: (variables: t.UpdateActionVariables) => dataService.updateAction(variables),\n\n    onMutate: (variables) => options?.onMutate?.(variables),\n    onError: (error, variables, context) => options?.onError?.(error, variables, context),\n    onSuccess: (updateActionResponse, variables, context) => {\n      const listRes = queryClient.getQueryData<t.AssistantListResponse>([\n        QueryKeys.assistants,\n        variables.endpoint,\n        defaultOrderQuery,\n      ]);\n\n      if (!listRes) {\n        return options?.onSuccess?.(updateActionResponse, variables, context);\n      }\n\n      const updatedAssistant = updateActionResponse[1];\n\n      queryClient.setQueryData<t.AssistantListResponse>(\n        [QueryKeys.assistants, variables.endpoint, defaultOrderQuery],\n        {\n          ...listRes,\n          data: listRes.data.map((assistant) => {\n            if (assistant.id === variables.assistant_id) {\n              return updatedAssistant;\n            }\n            return assistant;\n          }),\n        },\n      );\n\n      queryClient.setQueryData<t.Action[]>([QueryKeys.actions], (prev) => {\n        return prev\n          ?.map((action) => {\n            if (action.action_id === variables.action_id) {\n              return updateActionResponse[2];\n            }\n            return action;\n          })\n          .concat(\n            variables.action_id != null && variables.action_id ? [] : [updateActionResponse[2]],\n          );\n      });\n\n      return options?.onSuccess?.(updateActionResponse, variables, context);\n    },\n  });\n};\n\n/**\n * Hook for deleting an Assistant Action\n */\nexport const useDeleteAction = (\n  options?: t.DeleteActionOptions,\n): UseMutationResult<\n  void, // response data for a delete operation is typically void\n  Error, // error type\n  t.DeleteActionVariables, // request variables\n  unknown // context\n> => {\n  const queryClient = useQueryClient();\n  return useMutation([MutationKeys.deleteAction], {\n    mutationFn: (variables: t.DeleteActionVariables) => {\n      const { endpoint } = variables;\n      const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n      const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n      return dataService.deleteAction({\n        ...variables,\n        version,\n      });\n    },\n\n    onMutate: (variables) => options?.onMutate?.(variables),\n    onError: (error, variables, context) => options?.onError?.(error, variables, context),\n    onSuccess: (_data, variables, context) => {\n      let domain: string | undefined = '';\n      queryClient.setQueryData<t.Action[]>([QueryKeys.actions], (prev) => {\n        return prev?.filter((action) => {\n          domain = action.metadata.domain;\n          return action.action_id !== variables.action_id;\n        });\n      });\n\n      queryClient.setQueryData<t.AssistantListResponse>(\n        [QueryKeys.assistants, variables.endpoint, defaultOrderQuery],\n        (prev) => {\n          if (!prev) {\n            return prev;\n          }\n\n          return {\n            ...prev,\n            data: prev.data.map((assistant) => {\n              if (assistant.id === variables.assistant_id) {\n                return {\n                  ...assistant,\n                  tools: (assistant.tools ?? []).filter(\n                    (tool) => !(tool.function?.name.includes(domain ?? '') ?? false),\n                  ),\n                };\n              }\n              return assistant;\n            }),\n          };\n        },\n      );\n\n      return options?.onSuccess?.(_data, variables, context);\n    },\n  });\n};\n\n/**\n * Hook for verifying email address\n */\nexport const useVerifyEmailMutation = (\n  options?: t.VerifyEmailOptions,\n): UseMutationResult<t.VerifyEmailResponse, unknown, t.TVerifyEmail, unknown> => {\n  return useMutation({\n    mutationFn: (variables: t.TVerifyEmail) => dataService.verifyEmail(variables),\n    ...(options || {}),\n  });\n};\n\n/**\n * Hook for resending verficiation email\n */\nexport const useResendVerificationEmail = (\n  options?: t.ResendVerifcationOptions,\n): UseMutationResult<t.VerifyEmailResponse, unknown, t.TResendVerificationEmail, unknown> => {\n  return useMutation({\n    mutationFn: (variables: t.TResendVerificationEmail) =>\n      dataService.resendVerificationEmail(variables),\n    ...(options || {}),\n  });\n};\n\nexport const useAcceptTermsMutation = (\n  options?: t.AcceptTermsMutationOptions,\n): UseMutationResult<t.TAcceptTermsResponse, unknown, void, unknown> => {\n  const queryClient = useQueryClient();\n  return useMutation(() => dataService.acceptTerms(), {\n    onSuccess: (data, variables, context) => {\n      queryClient.setQueryData<t.TUserTermsResponse>([QueryKeys.userTerms], {\n        termsAccepted: true,\n      });\n      options?.onSuccess?.(data, variables, context);\n    },\n    onError: options?.onError,\n    onMutate: options?.onMutate,\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/prompts.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { dataService, QueryKeys } from '~/data-provider/data-provider/src';\nimport type { UseMutationResult } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport {\n  /* Prompts */\n  addGroupToAll,\n  addPromptGroup,\n  updateGroupInAll,\n  updateGroupFields,\n  deletePromptGroup,\n  removeGroupFromAll,\n} from '~/utils';\nimport store from '~/store';\n\nexport const useUpdatePromptGroup = (\n  options?: t.UpdatePromptGroupOptions,\n): UseMutationResult<\n  t.TUpdatePromptGroupResponse,\n  unknown,\n  t.TUpdatePromptGroupVariables,\n  unknown\n> => {\n  const { onMutate, onError, onSuccess } = options || {};\n  const queryClient = useQueryClient();\n  const name = useRecoilValue(store.promptsName);\n  const pageSize = useRecoilValue(store.promptsPageSize);\n  const category = useRecoilValue(store.promptsCategory);\n\n  return useMutation({\n    mutationFn: (variables: t.TUpdatePromptGroupVariables) =>\n      dataService.updatePromptGroup(variables),\n    onMutate: (variables: t.TUpdatePromptGroupVariables) => {\n      const groupData = queryClient.getQueryData<t.TPromptGroup>([\n        QueryKeys.promptGroup,\n        variables.id,\n      ]);\n      const group = groupData ? structuredClone(groupData) : undefined;\n\n      const groupListData = queryClient.getQueryData<t.PromptGroupListData>([\n        QueryKeys.promptGroups,\n        name,\n        category,\n        pageSize,\n      ]);\n      const previousListData = groupListData ? structuredClone(groupListData) : undefined;\n\n      let update = variables.payload;\n      if (update.removeProjectIds && group?.projectIds) {\n        update = structuredClone(update);\n        update.projectIds = group.projectIds.filter((id) => !update.removeProjectIds?.includes(id));\n        delete update.removeProjectIds;\n      }\n\n      if (groupListData) {\n        const newData = updateGroupFields(\n          /* Paginated Data */\n          groupListData,\n          /* Update */\n          { _id: variables.id, ...update },\n          /* Callback */\n          (group) => queryClient.setQueryData([QueryKeys.promptGroup, variables.id], group),\n        );\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          newData,\n        );\n      }\n\n      if (onMutate) {\n        onMutate(variables);\n      }\n\n      return { group, previousListData };\n    },\n    onError: (err, variables, context) => {\n      if (context?.group) {\n        queryClient.setQueryData([QueryKeys.promptGroups, variables.id], context.group);\n      }\n      if (context?.previousListData) {\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          context.previousListData,\n        );\n      }\n      if (onError) {\n        onError(err, variables, context);\n      }\n    },\n    onSuccess: (response, variables, context) => {\n      updateGroupInAll(queryClient, { _id: variables.id, ...response });\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n\nexport const useCreatePrompt = (\n  options?: t.CreatePromptOptions,\n): UseMutationResult<t.TCreatePromptResponse, unknown, t.TCreatePrompt, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...rest } = options || {};\n  const name = useRecoilValue(store.promptsName);\n  const pageSize = useRecoilValue(store.promptsPageSize);\n  const category = useRecoilValue(store.promptsCategory);\n\n  return useMutation({\n    mutationFn: (payload: t.TCreatePrompt) => dataService.createPrompt(payload),\n    ...rest,\n    onSuccess: (response, variables, context) => {\n      const { prompt, group } = response;\n      queryClient.setQueryData(\n        [QueryKeys.prompts, variables.prompt.groupId],\n        (oldData: t.TPrompt[] | undefined) => {\n          return [prompt, ...(oldData ?? [])];\n        },\n      );\n\n      if (group) {\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          (data) => {\n            if (!data) {\n              return data;\n            }\n            return addPromptGroup(data, group);\n          },\n        );\n\n        addGroupToAll(queryClient, group);\n      }\n\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n\nexport const useDeletePrompt = (\n  options?: t.DeletePromptOptions,\n): UseMutationResult<t.TDeletePromptResponse, unknown, t.TDeletePromptVariables, unknown> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...rest } = options || {};\n  const name = useRecoilValue(store.promptsName);\n  const pageSize = useRecoilValue(store.promptsPageSize);\n  const category = useRecoilValue(store.promptsCategory);\n\n  return useMutation({\n    mutationFn: (payload: t.TDeletePromptVariables) => dataService.deletePrompt(payload),\n    ...rest,\n    onSuccess: (response, variables, context) => {\n      if (response.promptGroup) {\n        const promptGroupId = response.promptGroup.id;\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          (data) => {\n            if (!data) {\n              return data;\n            }\n            return deletePromptGroup(data, promptGroupId);\n          },\n        );\n\n        removeGroupFromAll(queryClient, promptGroupId);\n      } else {\n        queryClient.setQueryData<t.TPrompt[]>(\n          [QueryKeys.prompts, variables.groupId],\n          (oldData?: t.TPrompt[]) => {\n            const prompts = oldData ? oldData.filter((prompt) => prompt._id !== variables._id) : [];\n            queryClient.setQueryData<t.TPromptGroup>(\n              [QueryKeys.promptGroup, variables.groupId],\n              (data) => {\n                if (!data) {\n                  return data;\n                }\n                if (data.productionId === variables._id) {\n                  data.productionId = prompts[0]._id;\n                  data.productionPrompt = prompts[0];\n                }\n              },\n            );\n            return prompts;\n          },\n        );\n      }\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n\nexport const useDeletePromptGroup = (\n  options?: t.DeletePromptGroupOptions,\n): UseMutationResult<\n  t.TDeletePromptGroupResponse,\n  unknown,\n  t.TDeletePromptGroupRequest,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  const { onSuccess, ...rest } = options || {};\n  const name = useRecoilValue(store.promptsName);\n  const pageSize = useRecoilValue(store.promptsPageSize);\n  const category = useRecoilValue(store.promptsCategory);\n\n  return useMutation({\n    mutationFn: (variables: t.TDeletePromptGroupRequest) =>\n      dataService.deletePromptGroup(variables.id),\n    ...rest,\n    onSuccess: (response, variables, context) => {\n      queryClient.setQueryData<t.PromptGroupListData>(\n        [QueryKeys.promptGroups, name, category, pageSize],\n        (data) => {\n          if (!data) {\n            return data;\n          }\n\n          return deletePromptGroup(data, variables.id);\n        },\n      );\n\n      removeGroupFromAll(queryClient, variables.id);\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n\nexport const useUpdatePromptLabels = (\n  options?: t.UpdatePromptLabelOptions,\n): UseMutationResult<\n  t.TUpdatePromptLabelsResponse,\n  unknown,\n  t.TUpdatePromptLabelsRequest,\n  unknown\n> => {\n  const { onSuccess, ...rest } = options || {};\n  return useMutation({\n    mutationFn: (variables: t.TUpdatePromptLabelsRequest) =>\n      dataService.updatePromptLabels(variables),\n    ...rest,\n    onSuccess: (response, variables, context) => {\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n\nexport const useMakePromptProduction = (options?: t.MakePromptProductionOptions) => {\n  const queryClient = useQueryClient();\n  const { onSuccess, onError, onMutate } = options || {};\n  const name = useRecoilValue(store.promptsName);\n  const pageSize = useRecoilValue(store.promptsPageSize);\n  const category = useRecoilValue(store.promptsCategory);\n\n  return useMutation({\n    mutationFn: (variables: t.TMakePromptProductionRequest) =>\n      dataService.makePromptProduction(variables.id),\n    onMutate: (variables: t.TMakePromptProductionRequest) => {\n      const group = JSON.parse(\n        JSON.stringify(\n          queryClient.getQueryData<t.TPromptGroup>([QueryKeys.promptGroup, variables.groupId]),\n        ),\n      ) as t.TPromptGroup;\n      const groupData = queryClient.getQueryData<t.PromptGroupListData>([\n        QueryKeys.promptGroups,\n        name,\n        category,\n        pageSize,\n      ]);\n      const previousListData = JSON.parse(JSON.stringify(groupData)) as t.PromptGroupListData;\n\n      if (groupData) {\n        const newData = updateGroupFields(\n          /* Paginated Data */\n          groupData,\n          /* Update */\n          {\n            _id: variables.groupId,\n            productionId: variables.id,\n            productionPrompt: variables.productionPrompt,\n          },\n          /* Callback */\n          (group) => queryClient.setQueryData([QueryKeys.promptGroup, variables.groupId], group),\n        );\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          newData,\n        );\n      }\n\n      if (onMutate) {\n        onMutate(variables);\n      }\n\n      return { group, previousListData };\n    },\n    onError: (err, variables, context) => {\n      if (context?.group) {\n        queryClient.setQueryData([QueryKeys.promptGroups, variables.groupId], context.group);\n      }\n      if (context?.previousListData) {\n        queryClient.setQueryData<t.PromptGroupListData>(\n          [QueryKeys.promptGroups, name, category, pageSize],\n          context.previousListData,\n        );\n      }\n      if (onError) {\n        onError(err, variables, context);\n      }\n    },\n    onSuccess: (response, variables, context) => {\n      updateGroupInAll(queryClient, {\n        _id: variables.groupId,\n        productionId: variables.id,\n        productionPrompt: variables.productionPrompt,\n      });\n      if (onSuccess) {\n        onSuccess(response, variables, context);\n      }\n    },\n  });\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/queries.ts",
    "content": "import type {\n  QueryObserverResult,\n  UseInfiniteQueryOptions,\n  UseQueryOptions,\n  UseQueryResult,\n} from '@tanstack/react-query';\nimport { useInfiniteQuery, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useRecoilValue } from 'recoil';\nimport { getWorkbenchModelListApi } from '~/api';\nimport { inviteCode } from '~/api/linsight';\nimport type t from '~/data-provider/data-provider/src';\nimport type {\n  Action,\n  Assistant,\n  AssistantDocument,\n  AssistantListParams,\n  AssistantListResponse,\n  ConversationListParams,\n  ConversationListResponse,\n  SharedLinksListParams,\n  SharedLinksResponse,\n  TCheckUserKeyResponse,\n  TEndpointsConfig,\n  TPlugin,\n  TPreset,\n} from '~/data-provider/data-provider/src';\nimport {\n  EModelEndpoint,\n  QueryKeys,\n  dataService,\n  defaultAssistantsVersion,\n  defaultOrderQuery,\n} from '~/data-provider/data-provider/src';\nimport store from '~/store';\nimport { findPageForConversation } from '~/utils';\n\nexport const useGetPresetsQuery = (\n  config?: UseQueryOptions<TPreset[]>,\n): QueryObserverResult<TPreset[], unknown> => {\n  return useQuery<TPreset[]>([QueryKeys.presets], () => dataService.getPresets(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n  });\n};\n\nexport const useGetEndpointsConfigOverride = <TData = unknown | boolean>(\n  config?: UseQueryOptions<unknown | boolean, unknown, TData>,\n): QueryObserverResult<TData> => {\n  return useQuery<unknown | boolean, unknown, TData>(\n    [QueryKeys.endpointsConfigOverride],\n    () => dataService.getEndpointsConfigOverride(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetConvoIdQuery = (\n  id: string,\n  config?: UseQueryOptions<t.TConversation>,\n): QueryObserverResult<t.TConversation> => {\n  const queryClient = useQueryClient();\n  return useQuery<t.TConversation>(\n    [QueryKeys.conversation, id],\n    () => {\n      const defaultQuery = () => dataService.getConversationById(id);\n      const convosQuery = queryClient.getQueryData<t.ConversationData>([\n        QueryKeys.allConversations,\n      ]);\n\n      if (!convosQuery) {\n        return defaultQuery();\n      }\n\n      const { pageIndex, index } = findPageForConversation(convosQuery, { conversationId: id });\n\n      if (pageIndex > -1 && index > -1) {\n        return convosQuery.pages[pageIndex].conversations[index];\n      }\n\n      return defaultQuery();\n    },\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useSearchInfiniteQuery = (\n  params?: ConversationListParams & { searchQuery?: string },\n  config?: UseInfiniteQueryOptions<ConversationListResponse, unknown>,\n) => {\n  return useInfiniteQuery<ConversationListResponse, unknown>(\n    [QueryKeys.searchConversations, params], // Include the searchQuery in the query key\n    ({ pageParam = '1' }) =>\n      dataService.listConversationsByQuery({ ...params, pageNumber: pageParam }),\n    {\n      getNextPageParam: (lastPage) => {\n        const currentPageNumber = Number(lastPage.pageNumber);\n        const totalPages = Number(lastPage.pages);\n        return currentPageNumber < totalPages ? currentPageNumber + 1 : undefined;\n      },\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useConversationsInfiniteQuery = (\n  params?: ConversationListParams,\n  config?: UseInfiniteQueryOptions<ConversationListResponse, unknown>,\n) => {\n  const queriesEnabled = useRecoilValue<boolean>(store.queriesEnabled);\n  return useInfiniteQuery<ConversationListResponse, unknown>(\n    params?.isArchived === true ? [QueryKeys.archivedConversations] : [QueryKeys.allConversations],\n    ({ pageParam = '' }) =>\n      dataService.listConversations({\n        ...params,\n        pageNumber: pageParam?.toString(),\n        isArchived: params?.isArchived ?? false,\n        tags: params?.tags || [],\n      }),\n    {\n      getNextPageParam: (lastPage) => {\n        const currentPageNumber = Number(lastPage.pageNumber);\n        const totalPages = Number(lastPage.pages); // Convert totalPages to a number\n        // If the current page number is less than total pages, return the next page number\n        return currentPageNumber < totalPages ? currentPageNumber + 1 : undefined;\n      },\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n      enabled: (config?.enabled ?? true) === true && queriesEnabled,\n    },\n  );\n};\n\nexport const useSharedLinksQuery = (\n  params: SharedLinksListParams,\n  config?: UseInfiniteQueryOptions<SharedLinksResponse, unknown>,\n) => {\n  const { pageSize, isPublic, search, sortBy, sortDirection } = params;\n\n  return useInfiniteQuery<SharedLinksResponse>({\n    queryKey: [QueryKeys.sharedLinks, { pageSize, isPublic, search, sortBy, sortDirection }],\n    queryFn: ({ pageParam }) =>\n      dataService.listSharedLinks({\n        cursor: pageParam?.toString(),\n        pageSize,\n        isPublic,\n        search,\n        sortBy,\n        sortDirection,\n      }),\n    getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n    keepPreviousData: true,\n    staleTime: 5 * 60 * 1000, // 5 minutes\n    cacheTime: 30 * 60 * 1000, // 30 minutes\n    ...config,\n  });\n};\n\nexport const useConversationTagsQuery = (\n  config?: UseQueryOptions<t.TConversationTagsResponse>,\n): QueryObserverResult<t.TConversationTagsResponse> => {\n  return useQuery<t.TConversationTag[]>(\n    [QueryKeys.conversationTags],\n    () => dataService.getConversationTags(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\n/**\n * ASSISTANTS\n */\n\n/**\n * Hook for getting all available tools for Assistants\n */\nexport const useAvailableToolsQuery = (\n  endpoint: t.AssistantsEndpoint | EModelEndpoint.agents,\n): QueryObserverResult<TPlugin[]> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([QueryKeys.name, endpoint]);\n  const userProvidesKey = !!endpointsConfig?.[endpoint]?.userProvide;\n  const keyProvided = userProvidesKey ? !!keyExpiry?.expiresAt : true;\n  const enabled = !!endpointsConfig?.[endpoint] && keyProvided;\n  const version: string | number | undefined =\n    endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n  return useQuery<TPlugin[]>(\n    [QueryKeys.tools],\n    () => dataService.getAvailableTools(endpoint, version),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      enabled,\n    },\n  );\n};\n\n/**\n * Hook for listing all assistants, with optional parameters provided for pagination and sorting\n */\nexport const useListAssistantsQuery = <TData = AssistantListResponse>(\n  endpoint: t.AssistantsEndpoint,\n  params: Omit<AssistantListParams, 'endpoint'> = defaultOrderQuery,\n  config?: UseQueryOptions<AssistantListResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([QueryKeys.name, endpoint]);\n  const userProvidesKey = !!(endpointsConfig?.[endpoint]?.userProvide ?? false);\n  const keyProvided = userProvidesKey ? !!(keyExpiry?.expiresAt ?? '') : true;\n  const enabled = !!endpointsConfig?.[endpoint] && keyProvided;\n  const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n  return useQuery<AssistantListResponse, unknown, TData>(\n    [QueryKeys.assistants, endpoint, params],\n    () => dataService.listAssistants({ ...params, endpoint }, version),\n    {\n      // Example selector to sort them by created_at\n      // select: (res) => {\n      //   return res.data.sort((a, b) => a.created_at - b.created_at);\n      // },\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,\n    },\n  );\n};\n\n/*\nexport const useListAssistantsInfiniteQuery = (\n  params?: AssistantListParams,\n  config?: UseInfiniteQueryOptions<AssistantListResponse, Error>,\n) => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([\n    QueryKeys.name,\n    EModelEndpoint.assistants,\n  ]);\n  const userProvidesKey = !!endpointsConfig?.[EModelEndpoint.assistants]?.userProvide;\n  const keyProvided = userProvidesKey ? !!keyExpiry?.expiresAt : true;\n  const enabled = !!endpointsConfig?.[EModelEndpoint.assistants] && keyProvided;\n  return useInfiniteQuery<AssistantListResponse, Error>(\n    ['assistantsList', params],\n    ({ pageParam = '' }) => dataService.listAssistants({ ...params, after: pageParam }),\n    {\n      getNextPageParam: (lastPage) => {\n        // lastPage is of type AssistantListResponse, you can use the has_more and last_id from it directly\n        if (lastPage.has_more) {\n          return lastPage.last_id;\n        }\n        return undefined;\n      },\n      ...config,\n      enabled: config?.enabled !== undefined ? config?.enabled && enabled : enabled,\n    },\n  );\n};\n*/\n\n/**\n * Hook for retrieving details about a single assistant\n */\nexport const useGetAssistantByIdQuery = (\n  endpoint: t.AssistantsEndpoint,\n  assistant_id: string,\n  config?: UseQueryOptions<Assistant>,\n): QueryObserverResult<Assistant> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([QueryKeys.name, endpoint]);\n  const userProvidesKey = endpointsConfig?.[endpoint]?.userProvide ?? false;\n  const keyProvided = userProvidesKey ? !!keyExpiry?.expiresAt : true;\n  const enabled = !!endpointsConfig?.[endpoint] && keyProvided;\n  const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n  return useQuery<Assistant>(\n    [QueryKeys.assistant, assistant_id],\n    () =>\n      dataService.getAssistantById({\n        endpoint,\n        assistant_id,\n        version,\n      }),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      // Query will not execute until the assistant_id exists\n      enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,\n    },\n  );\n};\n\n/**\n * Hook for retrieving user's saved Assistant Actions\n */\nexport const useGetActionsQuery = <TData = Action[]>(\n  endpoint: t.AssistantsEndpoint | EModelEndpoint.agents,\n  config?: UseQueryOptions<Action[], unknown, TData>,\n): QueryObserverResult<TData> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([QueryKeys.name, endpoint]);\n  const userProvidesKey = !!endpointsConfig?.[endpoint]?.userProvide;\n  const keyProvided = userProvidesKey ? !!keyExpiry?.expiresAt : true;\n  const enabled =\n    (!!endpointsConfig?.[endpoint] && keyProvided) || endpoint === EModelEndpoint.agents;\n\n  return useQuery<Action[], unknown, TData>([QueryKeys.actions], () => dataService.getActions(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n    enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,\n  });\n};\n\n/**\n * Hook for retrieving user's saved Assistant Documents (metadata saved to Database)\n */\nexport const useGetAssistantDocsQuery = <TData = AssistantDocument[]>(\n  endpoint: t.AssistantsEndpoint | string,\n  config?: UseQueryOptions<AssistantDocument[], unknown, TData>,\n): QueryObserverResult<TData> => {\n  const queryClient = useQueryClient();\n  const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n  const keyExpiry = queryClient.getQueryData<TCheckUserKeyResponse>([QueryKeys.name, endpoint]);\n  const userProvidesKey = !!(endpointsConfig?.[endpoint]?.userProvide ?? false);\n  const keyProvided = userProvidesKey ? !!(keyExpiry?.expiresAt ?? '') : true;\n  const enabled = !!endpointsConfig?.[endpoint] && keyProvided;\n  const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n\n  return useQuery<AssistantDocument[], unknown, TData>(\n    [QueryKeys.assistantDocs, endpoint],\n    () =>\n      dataService.getAssistantDocs({\n        endpoint,\n        version,\n      }),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled && enabled : enabled,\n    },\n  );\n};\n\n/** STT/TTS */\n\n/* Text to speech voices */\nexport const useVoicesQuery = (\n  config?: UseQueryOptions<t.VoiceResponse>,\n): QueryObserverResult<t.VoiceResponse> => {\n  return useQuery<t.VoiceResponse>([QueryKeys.voices], () => dataService.getVoices(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    retry: false,\n    ...config,\n  });\n};\n\n/* Custom config speech */\nexport const useCustomConfigSpeechQuery = (\n  config?: UseQueryOptions<t.TCustomConfigSpeechResponse>,\n): QueryObserverResult<t.TCustomConfigSpeechResponse> => {\n  return useQuery<t.TCustomConfigSpeechResponse>(\n    [QueryKeys.customConfigSpeech],\n    () => dataService.getCustomConfigSpeech(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n    },\n  );\n};\n\n/** Prompt */\n\nexport const usePromptGroupsInfiniteQuery = (\n  params?: t.TPromptGroupsWithFilterRequest,\n  config?: UseInfiniteQueryOptions<t.PromptGroupListResponse, unknown>,\n) => {\n  const { name, pageSize, category, ...rest } = params || {};\n  return useInfiniteQuery<t.PromptGroupListResponse, unknown>(\n    [QueryKeys.promptGroups, name, category, pageSize],\n    ({ pageParam = '1' }) =>\n      dataService.getPromptGroups({\n        ...rest,\n        name,\n        category: category || '',\n        pageNumber: pageParam?.toString(),\n        pageSize: (pageSize || 10).toString(),\n      }),\n    {\n      getNextPageParam: (lastPage) => {\n        const currentPageNumber = Number(lastPage.pageNumber);\n        const totalPages = Number(lastPage.pages);\n        return currentPageNumber < totalPages ? currentPageNumber + 1 : undefined;\n      },\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetPromptGroup = (\n  id: string,\n  config?: UseQueryOptions<t.TPromptGroup>,\n): QueryObserverResult<t.TPromptGroup> => {\n  return useQuery<t.TPromptGroup>(\n    [QueryKeys.promptGroup, id],\n    () => dataService.getPromptGroup(id),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled : true,\n    },\n  );\n};\n\nexport const useGetPrompts = (\n  filter: t.TPromptsWithFilterRequest,\n  config?: UseQueryOptions<t.TPrompt[]>,\n): QueryObserverResult<t.TPrompt[]> => {\n  return useQuery<t.TPrompt[]>(\n    [QueryKeys.prompts, filter.groupId ?? ''],\n    () => dataService.getPrompts(filter),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled : true,\n    },\n  );\n};\n\nexport const useGetAllPromptGroups = <TData = t.AllPromptGroupsResponse>(\n  filter?: t.AllPromptGroupsFilterRequest,\n  config?: UseQueryOptions<t.AllPromptGroupsResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n  return useQuery<t.AllPromptGroupsResponse, unknown, TData>(\n    [QueryKeys.allPromptGroups],\n    () => dataService.getAllPromptGroups(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n    },\n  );\n};\n\nexport const useGetCategories = <TData = t.TGetCategoriesResponse>(\n  config?: UseQueryOptions<t.TGetCategoriesResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n  return useQuery<t.TGetCategoriesResponse, unknown, TData>(\n    [QueryKeys.categories],\n    () => dataService.getCategories(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled : true,\n    },\n  );\n};\n\nexport const useGetRandomPrompts = (\n  filter: t.TGetRandomPromptsRequest,\n  config?: UseQueryOptions<t.TGetRandomPromptsResponse>,\n): QueryObserverResult<t.TGetRandomPromptsResponse> => {\n  return useQuery<t.TGetRandomPromptsResponse>(\n    [QueryKeys.randomPrompts],\n    () => dataService.getRandomPrompts(filter),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      retry: false,\n      ...config,\n      enabled: config?.enabled !== undefined ? config.enabled : true,\n    },\n  );\n};\n\nexport const useUserTermsQuery = (\n  config?: UseQueryOptions<t.TUserTermsResponse>,\n): QueryObserverResult<t.TUserTermsResponse> => {\n  return useQuery<t.TUserTermsResponse>([QueryKeys.userTerms], () => dataService.getUserTerms(), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    ...config,\n  });\n};\n\n// 获取灵思剩余剩余使用次数\nexport const useGetUserLinsightCountQuery = (): UseQueryResult<t.TGetUserPromptCountResponse> => {\n  return useQuery<t.TGetUserPromptCountResponse>({\n    queryKey: [QueryKeys.getLinsightCount],\n    queryFn: () => inviteCode(),\n    select(data) {\n      return data?.data;\n    },\n    enabled: false,\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n  });\n};\n\n// 获取工作台使用的模型列表\nexport const useGetWorkbenchModelsQuery = () => {\n  return useQuery({\n    queryKey: [QueryKeys.getWorkspaceModel],\n    queryFn: () => getWorkbenchModelListApi(),\n    select(data) {\n      if (data && !data.data.asr_model) {\n        // Compatible with historical data \n        data.data.asr_model = {}\n      } else if (data && !data.data.tts_model) {\n        data.data.tts_model = {}\n      }\n      return data?.data;\n    },\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n  });\n}"
  },
  {
    "path": "src/frontend/client/src/data-provider/roles.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport type {\n  UseMutationResult,\n  QueryObserverResult,\n  UseQueryOptions,\n} from '@tanstack/react-query';\nimport { QueryKeys, dataService, promptPermissionsSchema } from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\n\nexport const useGetRole = (\n  roleName: string,\n  config?: UseQueryOptions<t.TRole>,\n): QueryObserverResult<t.TRole> => {\n  return useQuery<t.TRole>([QueryKeys.roles, roleName], () => dataService.getRole(roleName), {\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    refetchOnMount: false,\n    retry: false,\n    ...config,\n  });\n};\n\nexport const useUpdatePromptPermissionsMutation = (\n  options?: t.UpdatePromptPermOptions,\n): UseMutationResult<\n  t.UpdatePermResponse,\n  t.TError | undefined,\n  t.UpdatePromptPermVars,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  const { onMutate, onSuccess, onError } = options ?? {};\n  return useMutation(\n    (variables) => {\n      promptPermissionsSchema.partial().parse(variables.updates);\n      return dataService.updatePromptPermissions(variables);\n    },\n    {\n      onSuccess: (data, variables, context) => {\n        queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]);\n        if (onSuccess) {\n          onSuccess(data, variables, context);\n        }\n      },\n      onError: (...args) => {\n        const error = args[0];\n        if (error != null) {\n          console.error('Failed to update prompt permissions:', error);\n        }\n        if (onError) {\n          onError(...args);\n        }\n      },\n      onMutate,\n    },\n  );\n};\n\nexport const useUpdateAgentPermissionsMutation = (\n  options?: t.UpdateAgentPermOptions,\n): UseMutationResult<\n  t.UpdatePermResponse,\n  t.TError | undefined,\n  t.UpdateAgentPermVars,\n  unknown\n> => {\n  const queryClient = useQueryClient();\n  const { onMutate, onSuccess, onError } = options ?? {};\n  return useMutation(\n    (variables) => {\n      promptPermissionsSchema.partial().parse(variables.updates);\n      return dataService.updateAgentPermissions(variables);\n    },\n    {\n      onSuccess: (data, variables, context) => {\n        queryClient.invalidateQueries([QueryKeys.roles, variables.roleName]);\n        if (onSuccess != null) {\n          onSuccess(data, variables, context);\n        }\n      },\n      onError: (...args) => {\n        const error = args[0];\n        if (error != null) {\n          console.error('Failed to update prompt permissions:', error);\n        }\n        if (onError != null) {\n          onError(...args);\n        }\n      },\n      onMutate,\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/data-provider/tags.ts",
    "content": "import { useQuery } from '@tanstack/react-query';\nimport type { UseQueryOptions, QueryObserverResult } from '@tanstack/react-query';\nimport type { TConversationTagsResponse } from '~/data-provider/data-provider/src';\nimport { QueryKeys, dataService } from '~/data-provider/data-provider/src';\n\nexport const useGetConversationTags = (\n  config?: UseQueryOptions<TConversationTagsResponse>,\n): QueryObserverResult<TConversationTagsResponse> => {\n  return useQuery<TConversationTagsResponse>(\n    [QueryKeys.conversationTags],\n    () => dataService.getConversationTags(),\n    {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      refetchOnMount: false,\n      ...config,\n    },\n  );\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Agents/index.ts",
    "content": "export { default as useAgentsMap } from './useAgentsMap';\nexport { default as useSelectAgent } from './useSelectAgent';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Agents/useAgentsMap.ts",
    "content": "import { TAgentsMap } from '~/data-provider/data-provider/src';\nimport { useMemo } from 'react';\nimport { useListAgentsQuery } from '~/data-provider';\nimport { mapAgents } from '~/utils';\n\nexport default function useAgentsMap({\n  isAuthenticated,\n}: {\n  isAuthenticated: boolean;\n}): TAgentsMap | undefined {\n  const { data: agentsList = null } = useListAgentsQuery(undefined, {\n    select: (res) => mapAgents(res.data),\n    enabled: isAuthenticated,\n  });\n\n  const agents = useMemo<TAgentsMap | undefined>(() => {\n    return agentsList !== null ? agentsList : undefined;\n  }, [agentsList]);\n\n  return agents;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Agents/useSelectAgent.ts",
    "content": "import { useCallback, useState } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { EModelEndpoint, isAgentsEndpoint, Constants, QueryKeys } from '~/data-provider/data-provider/src';\nimport type { TConversation, TPreset, Agent } from '~/data-provider/data-provider/src';\nimport useDefaultConvo from '~/hooks/Conversations/useDefaultConvo';\nimport { useAgentsMapContext } from '~/Providers/AgentsMapContext';\nimport { useGetAgentByIdQuery } from '~/data-provider';\nimport { useChatContext } from '~/Providers/ChatContext';\n\nexport default function useSelectAgent() {\n  const queryClient = useQueryClient();\n  const getDefaultConversation = useDefaultConvo();\n  const { conversation, newConversation } = useChatContext();\n  const agentsMap = useAgentsMapContext();\n  const [selectedAgentId, setSelectedAgentId] = useState<string | null>(\n    conversation?.agent_id ?? null,\n  );\n\n  const agentQuery = useGetAgentByIdQuery(selectedAgentId ?? '', {\n    enabled: !!(selectedAgentId ?? ''),\n  });\n\n  const updateConversation = useCallback(\n    (agent: Partial<Agent>, template: Partial<TPreset | TConversation>) => {\n      if (isAgentsEndpoint(conversation?.endpoint)) {\n        const currentConvo = getDefaultConversation({\n          conversation: { ...(conversation ?? {}), agent_id: agent.id },\n          preset: template,\n        });\n        newConversation({\n          template: currentConvo,\n          preset: template as Partial<TPreset>,\n          keepLatestMessage: true,\n        });\n      } else {\n        newConversation({\n          template: { ...(template as Partial<TConversation>) },\n          preset: template as Partial<TPreset>,\n        });\n      }\n    },\n    [conversation, getDefaultConversation, newConversation],\n  );\n\n  const onSelect = useCallback(\n    async (value: string) => {\n      const agent = agentsMap?.[value];\n      if (!agent) {\n        return;\n      }\n\n      setSelectedAgentId(agent.id);\n\n      const template: Partial<TPreset | TConversation> = {\n        endpoint: EModelEndpoint.agents,\n        agent_id: agent.id,\n        conversationId: Constants.NEW_CONVO as string,\n      };\n\n      updateConversation({ id: agent.id }, template);\n\n      // Fetch full agent data in the background\n      try {\n        await queryClient.invalidateQueries(\n          {\n            queryKey: [QueryKeys.agent, agent.id],\n            exact: true,\n            refetchType: 'active',\n          },\n          { throwOnError: true },\n        );\n\n        const { data: fullAgent } = await agentQuery.refetch();\n        if (fullAgent) {\n          updateConversation(fullAgent, { ...template, agent_id: fullAgent.id });\n        }\n      } catch (error) {\n        if ((error as { silent: boolean } | undefined)?.silent) {\n          console.warn('Current fetch was cancelled');\n          return;\n        }\n        console.error('Error fetching full agent data:', error);\n        updateConversation({}, { ...template, agent_id: undefined });\n      }\n    },\n    [agentsMap, updateConversation, queryClient, agentQuery],\n  );\n\n  return { onSelect };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/ApiErrorBoundaryContext.tsx",
    "content": "import React, { useState } from 'react';\nimport { TError } from '~/data-provider/data-provider/src';\n\ntype ProviderValue = {\n  error?: TError;\n  setError: React.Dispatch<React.SetStateAction<boolean>>;\n};\nconst ApiErrorBoundaryContext = React.createContext<ProviderValue | undefined>(undefined);\n\nexport const ApiErrorBoundaryProvider = ({\n  value,\n  children,\n}: {\n  value: ProviderValue;\n  children: React.ReactNode;\n}) => {\n  const [error, setError] = useState(false);\n  return (\n    <ApiErrorBoundaryContext.Provider value={value ?? { error, setError }}>\n      {children}\n    </ApiErrorBoundaryContext.Provider>\n  );\n};\n\nexport const useApiErrorBoundary = () => {\n  const context = React.useContext(ApiErrorBoundaryContext);\n\n  if (context === undefined) {\n    throw new Error('useApiErrorBoundary must be used inside ApiErrorBoundaryProvider');\n  }\n\n  return context;\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Artifacts/useArtifactProps.ts",
    "content": "import { useMemo } from 'react';\nimport { removeNullishValues } from '~/data-provider/data-provider/src';\nimport type { Artifact } from '~/common';\nimport { getKey, getProps, getTemplate, getArtifactFilename } from '~/utils/artifacts';\nimport { getMermaidFiles } from '~/utils/mermaid';\n\nexport default function useArtifactProps({ artifact }: { artifact: Artifact }) {\n  const [fileKey, files] = useMemo(() => {\n    if (getKey(artifact.type ?? '', artifact.language).includes('mermaid')) {\n      return ['App.tsx', getMermaidFiles(artifact.content ?? '')];\n    }\n\n    const fileKey = getArtifactFilename(artifact.type ?? '', artifact.language);\n    const files = removeNullishValues({\n      [fileKey]: artifact.content,\n    });\n    return [fileKey, files];\n  }, [artifact.type, artifact.content, artifact.language]);\n\n  const template = useMemo(\n    () => getTemplate(artifact.type ?? '', artifact.language),\n    [artifact.type, artifact.language],\n  );\n\n  const sharedProps = useMemo(() => getProps(artifact.type ?? ''), [artifact.type]);\n\n  return {\n    files,\n    fileKey,\n    template,\n    sharedProps,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Artifacts/useArtifacts.ts",
    "content": "import { useMemo, useState, useEffect, useRef } from 'react';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil';\nimport { useChatContext } from '~/Providers';\nimport { getKey } from '~/utils/artifacts';\nimport { getLatestText } from '~/utils';\nimport store from '~/store';\n\nexport default function useArtifacts() {\n  const [activeTab, setActiveTab] = useState('preview');\n  const { isSubmitting, latestMessage, conversation } = useChatContext();\n\n  const artifacts = useRecoilValue(store.artifactsState);\n  const resetArtifacts = useResetRecoilState(store.artifactsState);\n  const resetCurrentArtifactId = useResetRecoilState(store.currentArtifactId);\n  const [currentArtifactId, setCurrentArtifactId] = useRecoilState(store.currentArtifactId);\n\n  const orderedArtifactIds = useMemo(() => {\n    return Object.keys(artifacts ?? {}).sort(\n      (a, b) => (artifacts?.[a]?.lastUpdateTime ?? 0) - (artifacts?.[b]?.lastUpdateTime ?? 0),\n    );\n  }, [artifacts]);\n\n  const lastContentRef = useRef<string | null>(null);\n  const hasEnclosedArtifactRef = useRef<boolean>(false);\n  const hasAutoSwitchedToCodeRef = useRef<boolean>(false);\n  const lastRunMessageIdRef = useRef<string | null>(null);\n  const prevConversationIdRef = useRef<string | null>(null);\n\n  useEffect(() => {\n    const resetState = () => {\n      resetArtifacts();\n      resetCurrentArtifactId();\n      prevConversationIdRef.current = conversation?.conversationId ?? null;\n      lastRunMessageIdRef.current = null;\n      lastContentRef.current = null;\n      hasEnclosedArtifactRef.current = false;\n    };\n    if (\n      conversation &&\n      conversation.conversationId !== prevConversationIdRef.current &&\n      prevConversationIdRef.current != null\n    ) {\n      resetState();\n    } else if (conversation && conversation.conversationId === Constants.NEW_CONVO) {\n      resetState();\n    }\n    prevConversationIdRef.current = conversation?.conversationId ?? null;\n  }, [conversation, resetArtifacts, resetCurrentArtifactId]);\n\n  useEffect(() => {\n    if (orderedArtifactIds.length > 0) {\n      const latestArtifactId = orderedArtifactIds[orderedArtifactIds.length - 1];\n      setCurrentArtifactId(latestArtifactId);\n    }\n  }, [setCurrentArtifactId, orderedArtifactIds]);\n\n  useEffect(() => {\n    if (isSubmitting && orderedArtifactIds.length > 0 && latestMessage) {\n      const latestArtifactId = orderedArtifactIds[orderedArtifactIds.length - 1];\n      const latestArtifact = artifacts?.[latestArtifactId];\n\n      if (latestArtifact?.content !== lastContentRef.current) {\n        setCurrentArtifactId(latestArtifactId);\n        lastContentRef.current = latestArtifact?.content ?? null;\n\n        const latestMessageText = getLatestText(latestMessage);\n        const hasEnclosedArtifact = /:::artifact[\\s\\S]*?(```|:::)\\s*$/.test(\n          latestMessageText.trim(),\n        );\n\n        if (hasEnclosedArtifact && !hasEnclosedArtifactRef.current) {\n          setActiveTab('preview');\n          hasEnclosedArtifactRef.current = true;\n          hasAutoSwitchedToCodeRef.current = false;\n        } else if (!hasEnclosedArtifactRef.current && !hasAutoSwitchedToCodeRef.current) {\n          const artifactStartContent = latestArtifact?.content?.slice(0, 50) ?? '';\n          if (artifactStartContent.length > 0 && latestMessageText.includes(artifactStartContent)) {\n            setActiveTab('code');\n            hasAutoSwitchedToCodeRef.current = true;\n          }\n        }\n      }\n    }\n  }, [setCurrentArtifactId, isSubmitting, orderedArtifactIds, artifacts, latestMessage]);\n\n  useEffect(() => {\n    if (latestMessage?.messageId !== lastRunMessageIdRef.current) {\n      lastRunMessageIdRef.current = latestMessage?.messageId ?? null;\n      hasEnclosedArtifactRef.current = false;\n      hasAutoSwitchedToCodeRef.current = false;\n    }\n  }, [latestMessage]);\n\n  const currentArtifact = currentArtifactId != null ? artifacts?.[currentArtifactId] : null;\n\n  const currentIndex = orderedArtifactIds.indexOf(currentArtifactId ?? '');\n  const cycleArtifact = (direction: 'next' | 'prev') => {\n    let newIndex: number;\n    if (direction === 'next') {\n      newIndex = (currentIndex + 1) % orderedArtifactIds.length;\n    } else {\n      newIndex = (currentIndex - 1 + orderedArtifactIds.length) % orderedArtifactIds.length;\n    }\n    setCurrentArtifactId(orderedArtifactIds[newIndex]);\n  };\n\n  const isMermaid = useMemo(() => {\n    if (currentArtifact?.type == null) {\n      return false;\n    }\n    const key = getKey(currentArtifact.type, currentArtifact.language);\n    return key.includes('mermaid');\n  }, [currentArtifact?.type, currentArtifact?.language]);\n\n  return {\n    activeTab,\n    isMermaid,\n    setActiveTab,\n    currentIndex,\n    isSubmitting,\n    cycleArtifact,\n    currentArtifact,\n    orderedArtifactIds,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Artifacts/useAutoScroll.ts",
    "content": "// hooks/useAutoScroll.ts\nimport { useEffect, useState } from 'react';\n\ninterface UseAutoScrollProps {\n  ref: React.RefObject<HTMLElement>;\n  content: string;\n  isSubmitting: boolean;\n}\n\nexport const useAutoScroll = ({ ref, content, isSubmitting }: UseAutoScrollProps) => {\n  const [userScrolled, setUserScrolled] = useState(false);\n\n  useEffect(() => {\n    const scrollContainer = ref.current;\n    if (!scrollContainer) {\n      return;\n    }\n\n    const handleScroll = () => {\n      const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n      const isNearBottom = scrollHeight - scrollTop - clientHeight < 50;\n\n      if (!isNearBottom) {\n        setUserScrolled(true);\n      } else {\n        setUserScrolled(false);\n      }\n    };\n\n    scrollContainer.addEventListener('scroll', handleScroll);\n\n    return () => {\n      scrollContainer.removeEventListener('scroll', handleScroll);\n    };\n  }, [ref]);\n\n  useEffect(() => {\n    const scrollContainer = ref.current;\n    if (!scrollContainer || !isSubmitting || userScrolled) {\n      return;\n    }\n\n    scrollContainer.scrollTop = scrollContainer.scrollHeight;\n  }, [content, isSubmitting, userScrolled, ref]);\n\n  return { userScrolled };\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Assistants/index.ts",
    "content": "export { default as useAssistantsMap } from './useAssistantsMap';\nexport { default as useSelectAssistant } from './useSelectAssistant';\nexport { default as useAssistantListMap } from './useAssistantListMap';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Assistants/useAssistantListMap.ts",
    "content": "import { useMemo } from 'react';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { AssistantListResponse, AssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { AssistantListItem } from '~/common';\nimport { useListAssistantsQuery } from '~/data-provider';\n\nconst selectAssistantsResponse = (res: AssistantListResponse): AssistantListItem[] =>\n  res.data.map(({ id, name, metadata, model }) => ({\n    id,\n    name: name ?? '',\n    metadata,\n    model,\n  }));\n\nexport default function useAssistantListMap<T = AssistantListItem[] | null>(\n  selector: (res: AssistantListResponse) => T = selectAssistantsResponse as (\n    res: AssistantListResponse,\n  ) => T,\n): Record<AssistantsEndpoint, T | null> {\n  const { data: assistantsList = null } = useListAssistantsQuery(\n    EModelEndpoint.assistants,\n    undefined,\n    {\n      select: selector,\n    },\n  );\n\n  const { data: azureAssistants = null } = useListAssistantsQuery(\n    EModelEndpoint.azureAssistants,\n    undefined,\n    {\n      select: selector,\n    },\n  );\n\n  const assistantListMap = useMemo(() => {\n    return {\n      [EModelEndpoint.assistants]: assistantsList as T,\n      [EModelEndpoint.azureAssistants]: azureAssistants as T,\n    };\n  }, [assistantsList, azureAssistants]);\n\n  return assistantListMap;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Assistants/useAssistantsMap.ts",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { TAssistantsMap } from '~/data-provider/data-provider/src';\nimport { useListAssistantsQuery } from '~/data-provider';\nimport { mapAssistants } from '~/utils';\n\nexport default function useAssistantsMap({\n  isAuthenticated,\n}: {\n  isAuthenticated: boolean;\n}): TAssistantsMap | undefined {\n  const { data: assistants = {} } = useListAssistantsQuery(EModelEndpoint.assistants, undefined, {\n    select: (res) => mapAssistants(res.data),\n    enabled: isAuthenticated,\n  });\n  const { data: azureAssistants = {} } = useListAssistantsQuery(\n    EModelEndpoint.azureAssistants,\n    undefined,\n    {\n      select: (res) => mapAssistants(res.data),\n      enabled: isAuthenticated,\n    },\n  );\n\n  return {\n    [EModelEndpoint.assistants]: assistants,\n    [EModelEndpoint.azureAssistants]: azureAssistants,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Assistants/useSelectAssistant.ts",
    "content": "import { useCallback } from 'react';\nimport { isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type { AssistantsEndpoint, TConversation, TPreset } from '~/data-provider/data-provider/src';\nimport useDefaultConvo from '~/hooks/Conversations/useDefaultConvo';\nimport { useChatContext } from '~/Providers/ChatContext';\nimport useAssistantListMap from './useAssistantListMap';\nimport { mapAssistants } from '~/utils';\n\nexport default function useSelectAssistant(endpoint: AssistantsEndpoint) {\n  const getDefaultConversation = useDefaultConvo();\n  const { conversation, newConversation } = useChatContext();\n  const assistantMap = useAssistantListMap((res) => mapAssistants(res.data));\n\n  const onSelect = useCallback(\n    (value: string) => {\n      const assistant = assistantMap[endpoint]?.[value];\n      if (!assistant) {\n        return;\n      }\n      const template: Partial<TPreset | TConversation> = {\n        endpoint,\n        assistant_id: assistant.id,\n        model: assistant.model,\n        conversationId: 'new',\n      };\n\n      if (isAssistantsEndpoint(conversation?.endpoint)) {\n        const currentConvo = getDefaultConversation({\n          conversation: { ...(conversation ?? {}) },\n          preset: template,\n        });\n        newConversation({\n          template: currentConvo,\n          preset: template as Partial<TPreset>,\n          keepLatestMessage: true,\n        });\n        return;\n      }\n\n      newConversation({\n        template: { ...(template as Partial<TConversation>) },\n        preset: template as Partial<TPreset>,\n      });\n    },\n    [endpoint, assistantMap, conversation, getDefaultConversation, newConversation],\n  );\n\n  return { onSelect };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/MediaSourceAppender.ts",
    "content": "export class MediaSourceAppender {\n  private readonly mediaSource = new MediaSource();\n  private readonly audioChunks: ArrayBuffer[] = [];\n\n  private sourceBuffer?: SourceBuffer;\n\n  constructor(type: string) {\n    this.mediaSource.addEventListener('sourceopen', async () => {\n      this.sourceBuffer = this.mediaSource.addSourceBuffer(type);\n\n      this.sourceBuffer.addEventListener('updateend', () => {\n        this.tryAppendNextChunk();\n      });\n    });\n  }\n\n  private tryAppendNextChunk() {\n    if (this.sourceBuffer != null && !this.sourceBuffer.updating && this.audioChunks.length > 0) {\n      this.sourceBuffer.appendBuffer(this.audioChunks.shift()!);\n    }\n  }\n\n  public addBase64Data(base64Data: string) {\n    this.addData(Uint8Array.from(atob(base64Data), (char) => char.charCodeAt(0)).buffer);\n  }\n\n  public addData(data: ArrayBuffer) {\n    this.audioChunks.push(data);\n    this.tryAppendNextChunk();\n  }\n\n  public close() {\n    if (this.mediaSource.readyState === 'open') {\n      this.mediaSource.endOfStream();\n    }\n  }\n\n  public get mediaSourceUrl() {\n    return URL.createObjectURL(this.mediaSource);\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/index.ts",
    "content": "export * from './MediaSourceAppender';\nexport { default as useCustomAudioRef } from './useCustomAudioRef';\nexport { default as usePauseGlobalAudio } from './usePauseGlobalAudio';\nexport { default as useTTSExternal } from './useTTSExternal';\nexport { default as useTTSBrowser } from './useTTSBrowser';\nexport { default as useTTSEdge } from './useTTSEdge';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/useAudioRef.ts",
    "content": "import { useEffect, useRef } from 'react';\n\nexport default function useCustomAudioRef({\n  setIsPlaying,\n}: {\n  setIsPlaying: (isPlaying: boolean) => void;\n}) {\n  const audioRef = useRef<HTMLAudioElement | null>(null);\n  useEffect(() => {\n    const handleEnded = () => {\n      setIsPlaying(false);\n      console.log('message audio ended');\n      if (audioRef.current) {\n        URL.revokeObjectURL(audioRef.current.src);\n      }\n    };\n\n    const handleStart = () => {\n      setIsPlaying(true);\n      console.log('message audio started');\n    };\n\n    const handlePause = () => {\n      setIsPlaying(false);\n      console.log('message audio paused');\n    };\n\n    const audioElement = audioRef.current;\n\n    if (audioRef.current) {\n      audioRef.current.muted = true;\n      audioRef.current.addEventListener('ended', handleEnded);\n      audioRef.current.addEventListener('play', handleStart);\n      audioRef.current.addEventListener('pause', handlePause);\n    }\n\n    return () => {\n      if (audioElement) {\n        audioElement.removeEventListener('ended', handleEnded);\n        audioElement.removeEventListener('play', handleStart);\n        audioElement.removeEventListener('pause', handlePause);\n        URL.revokeObjectURL(audioElement.src);\n      }\n    };\n  }, [setIsPlaying]);\n\n  return { audioRef };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/useCustomAudioRef.ts",
    "content": "import { useEffect, useRef } from 'react';\n\ninterface CustomAudioElement extends HTMLAudioElement {\n  customStarted?: boolean;\n  customEnded?: boolean;\n  customPaused?: boolean;\n  customProps?: {\n    customStarted?: boolean;\n    customEnded?: boolean;\n    customPaused?: boolean;\n  };\n}\n\ntype TCustomAudioResult = { audioRef: React.MutableRefObject<CustomAudioElement | null> };\n\nexport default function useCustomAudioRef({\n  setIsPlaying,\n}: {\n  setIsPlaying: (isPlaying: boolean) => void;\n}): TCustomAudioResult {\n  const audioRef = useRef<CustomAudioElement | null>(null);\n  useEffect(() => {\n    let lastTimeUpdate: number | null = null;\n    let sameTimeUpdateCount = 0;\n\n    const handleEnded = () => {\n      setIsPlaying(false);\n      console.log('global audio ended');\n      if (audioRef.current) {\n        audioRef.current.customEnded = true;\n        URL.revokeObjectURL(audioRef.current.src);\n      }\n    };\n\n    const handleStart = () => {\n      setIsPlaying(true);\n      console.log('global audio started');\n      if (audioRef.current) {\n        audioRef.current.customStarted = true;\n      }\n    };\n\n    const handlePause = () => {\n      console.log('global audio paused');\n      if (audioRef.current) {\n        audioRef.current.customPaused = true;\n      }\n    };\n\n    const handleTimeUpdate = () => {\n      if (audioRef.current) {\n        const currentTime = audioRef.current.currentTime;\n        // console.log('Current time: ', currentTime);\n\n        if (currentTime === lastTimeUpdate) {\n          sameTimeUpdateCount += 1;\n        } else {\n          sameTimeUpdateCount = 0;\n        }\n\n        lastTimeUpdate = currentTime;\n\n        if (sameTimeUpdateCount >= 1) {\n          console.log('Detected end of audio based on time update');\n          audioRef.current.pause();\n          handleEnded();\n        }\n      }\n    };\n\n    const audioElement = audioRef.current;\n\n    if (audioRef.current) {\n      audioRef.current.addEventListener('ended', handleEnded);\n      audioRef.current.addEventListener('play', handleStart);\n      audioRef.current.addEventListener('pause', handlePause);\n      audioRef.current.addEventListener('timeupdate', handleTimeUpdate);\n\n      audioRef.current.customProps = {\n        customStarted: false,\n        customEnded: false,\n        customPaused: false,\n      };\n    }\n\n    return () => {\n      if (audioElement) {\n        audioElement.removeEventListener('ended', handleEnded);\n        audioElement.removeEventListener('play', handleStart);\n        audioElement.removeEventListener('pause', handlePause);\n        audioElement.removeEventListener('timeupdate', handleTimeUpdate);\n        URL.revokeObjectURL(audioElement.src);\n      }\n    };\n  }, [setIsPlaying]);\n\n  return { audioRef };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/usePauseGlobalAudio.ts",
    "content": "import { useCallback } from 'react';\nimport { useRecoilState, useSetRecoilState } from 'recoil';\nimport { globalAudioId } from '~/common';\nimport store from '~/store';\n\nfunction usePauseGlobalAudio(index = 0) {\n  /* Global Audio Variables */\n  const setAudioRunId = useSetRecoilState(store.audioRunFamily(index));\n  const setActiveRunId = useSetRecoilState(store.activeRunFamily(index));\n  const setGlobalIsPlaying = useSetRecoilState(store.globalAudioPlayingFamily(index));\n  const setIsGlobalAudioFetching = useSetRecoilState(store.globalAudioFetchingFamily(index));\n  const [globalAudioURL, setGlobalAudioURL] = useRecoilState(store.globalAudioURLFamily(index));\n\n  const pauseGlobalAudio = useCallback(() => {\n    if (globalAudioURL != null && globalAudioURL !== '') {\n      const globalAudio = document.getElementById(globalAudioId);\n      if (globalAudio) {\n        console.log('Pausing global audio', globalAudioURL);\n        (globalAudio as HTMLAudioElement).pause();\n        setGlobalIsPlaying(false);\n      }\n      URL.revokeObjectURL(globalAudioURL);\n      setIsGlobalAudioFetching(false);\n      setGlobalAudioURL(null);\n      setActiveRunId(null);\n      setAudioRunId(null);\n    }\n  }, [\n    setAudioRunId,\n    setActiveRunId,\n    globalAudioURL,\n    setGlobalAudioURL,\n    setGlobalIsPlaying,\n    setIsGlobalAudioFetching,\n  ]);\n\n  return { pauseGlobalAudio };\n}\n\nexport default usePauseGlobalAudio;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/useTTSBrowser.ts",
    "content": "// client/src/hooks/Audio/useTTSBrowser.ts\nimport { useRef, useEffect, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { parseTextParts } from '~/data-provider/data-provider/src';\nimport type { TMessageContentParts } from '~/data-provider/data-provider/src';\nimport useTextToSpeechBrowser from '~/hooks/Input/useTextToSpeechBrowser';\nimport usePauseGlobalAudio from '~/hooks/Audio/usePauseGlobalAudio';\nimport useAudioRef from '~/hooks/Audio/useAudioRef';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\ntype TUseTextToSpeech = {\n  messageId?: string;\n  content?: TMessageContentParts[] | string;\n  isLast?: boolean;\n  index?: number;\n};\n\nconst useTTSBrowser = (props?: TUseTextToSpeech) => {\n  const { content, isLast = false, index = 0 } = props ?? {};\n\n  const isMouseDownRef = useRef(false);\n  const timerRef = useRef<number | undefined>(undefined);\n  const [isSpeakingState, setIsSpeaking] = useState(false);\n  const { audioRef } = useAudioRef({ setIsPlaying: setIsSpeaking });\n\n  const { pauseGlobalAudio } = usePauseGlobalAudio(index);\n  const [voice, setVoice] = useRecoilState(store.voice);\n  const globalIsPlaying = useRecoilValue(store.globalAudioPlayingFamily(index));\n\n  const isSpeaking = isSpeakingState || (isLast && globalIsPlaying);\n\n  const {\n    generateSpeechLocal: generateSpeech,\n    cancelSpeechLocal: cancelSpeech,\n    voices,\n  } = useTextToSpeechBrowser({ setIsSpeaking });\n\n  useEffect(() => {\n    const firstVoice = voices[0];\n    if (voices.length && typeof firstVoice === 'object') {\n      const lastSelectedVoice = voices.find((v) =>\n        typeof v === 'object' ? v.value === voice : v === voice,\n      );\n      if (lastSelectedVoice != null) {\n        const currentVoice =\n          typeof lastSelectedVoice === 'object' ? lastSelectedVoice.value : lastSelectedVoice;\n        logger.log('useTextToSpeech.ts - Effect:', { voices, voice: currentVoice });\n        setVoice(currentVoice);\n        return;\n      }\n\n      logger.log('useTextToSpeech.ts - Effect:', { voices, voice: firstVoice.value });\n      setVoice(firstVoice.value);\n    }\n  }, [setVoice, voice, voices]);\n\n  const handleMouseDown = () => {\n    isMouseDownRef.current = true;\n    timerRef.current = window.setTimeout(() => {\n      if (isMouseDownRef.current) {\n        const messageContent = content ?? '';\n        const parsedMessage =\n          typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n        generateSpeech(parsedMessage);\n      }\n    }, 1000);\n  };\n\n  const handleMouseUp = () => {\n    isMouseDownRef.current = false;\n    if (timerRef.current != null) {\n      window.clearTimeout(timerRef.current);\n    }\n  };\n\n  const toggleSpeech = () => {\n    if (isSpeaking === true) {\n      cancelSpeech();\n      pauseGlobalAudio();\n    } else {\n      const messageContent = content ?? '';\n      const parsedMessage =\n        typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n      generateSpeech(parsedMessage);\n    }\n  };\n\n  return {\n    handleMouseDown,\n    handleMouseUp,\n    toggleSpeech,\n    isSpeaking,\n    isLoading: false,\n    audioRef,\n    voices,\n  };\n};\n\nexport default useTTSBrowser;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/useTTSEdge.ts",
    "content": "// client/src/hooks/Audio/useTTSEdge.ts\nimport { useRef, useEffect, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { parseTextParts } from '~/data-provider/data-provider/src';\nimport type { TMessageContentParts } from '~/data-provider/data-provider/src';\nimport usePauseGlobalAudio from '~/hooks/Audio/usePauseGlobalAudio';\nimport useTextToSpeechEdge from '~/hooks/Input/useTextToSpeechEdge';\nimport useAudioRef from '~/hooks/Audio/useAudioRef';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\ntype TUseTextToSpeech = {\n  messageId?: string;\n  content?: TMessageContentParts[] | string;\n  isLast?: boolean;\n  index?: number;\n};\n\nconst useTTSEdge = (props?: TUseTextToSpeech) => {\n  const { content, isLast = false, index = 0 } = props ?? {};\n\n  const isMouseDownRef = useRef(false);\n  const timerRef = useRef<number | undefined>(undefined);\n  const [isSpeakingState, setIsSpeaking] = useState(false);\n  const { audioRef } = useAudioRef({ setIsPlaying: setIsSpeaking });\n\n  const { pauseGlobalAudio } = usePauseGlobalAudio(index);\n  const [voice, setVoice] = useRecoilState(store.voice);\n  const globalIsPlaying = useRecoilValue(store.globalAudioPlayingFamily(index));\n\n  const isSpeaking = isSpeakingState || (isLast && globalIsPlaying);\n\n  const {\n    generateSpeechEdge: generateSpeech,\n    cancelSpeechEdge: cancelSpeech,\n    voices,\n  } = useTextToSpeechEdge({ setIsSpeaking });\n\n  useEffect(() => {\n    const firstVoice = voices[0];\n    if (voices.length && typeof firstVoice === 'object') {\n      const lastSelectedVoice = voices.find((v) =>\n        typeof v === 'object' ? v.value === voice : v === voice,\n      );\n      if (lastSelectedVoice != null) {\n        const currentVoice =\n          typeof lastSelectedVoice === 'object' ? lastSelectedVoice.value : lastSelectedVoice;\n        logger.log('useTextToSpeech.ts - Effect:', { voices, voice: currentVoice });\n        setVoice(currentVoice);\n        return;\n      }\n\n      logger.log('useTextToSpeech.ts - Effect:', { voices, voice: firstVoice.value });\n      setVoice(firstVoice.value);\n    }\n  }, [setVoice, voice, voices]);\n\n  const handleMouseDown = () => {\n    isMouseDownRef.current = true;\n    timerRef.current = window.setTimeout(() => {\n      if (isMouseDownRef.current) {\n        const messageContent = content ?? '';\n        const parsedMessage =\n          typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n        generateSpeech(parsedMessage);\n      }\n    }, 1000);\n  };\n\n  const handleMouseUp = () => {\n    isMouseDownRef.current = false;\n    if (timerRef.current != null) {\n      window.clearTimeout(timerRef.current);\n    }\n  };\n\n  const toggleSpeech = () => {\n    if (isSpeaking === true) {\n      cancelSpeech();\n      pauseGlobalAudio();\n    } else {\n      const messageContent = content ?? '';\n      const parsedMessage =\n        typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n      generateSpeech(parsedMessage);\n    }\n  };\n\n  return {\n    handleMouseDown,\n    handleMouseUp,\n    toggleSpeech,\n    isSpeaking,\n    isLoading: false,\n    audioRef,\n    voices,\n  };\n};\n\nexport default useTTSEdge;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Audio/useTTSExternal.ts",
    "content": "// client/src/hooks/Audio/useTTSExternal.ts\nimport { useRef, useEffect, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { parseTextParts } from '~/data-provider/data-provider/src';\nimport type { TMessageContentParts } from '~/data-provider/data-provider/src';\nimport useTextToSpeechExternal from '~/hooks/Input/useTextToSpeechExternal';\nimport usePauseGlobalAudio from '~/hooks/Audio/usePauseGlobalAudio';\nimport useAudioRef from '~/hooks/Audio/useAudioRef';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\ntype TUseTextToSpeech = {\n  messageId?: string;\n  content?: TMessageContentParts[] | string;\n  isLast?: boolean;\n  index?: number;\n};\n\nconst useTTSExternal = (props?: TUseTextToSpeech) => {\n  const { messageId, content, isLast = false, index = 0 } = props ?? {};\n\n  const isMouseDownRef = useRef(false);\n  const timerRef = useRef<number | undefined>(undefined);\n  const [isSpeakingState, setIsSpeaking] = useState(false);\n  const { audioRef } = useAudioRef({ setIsPlaying: setIsSpeaking });\n\n  const { pauseGlobalAudio } = usePauseGlobalAudio(index);\n  const [voice, setVoice] = useRecoilState(store.voice);\n  const globalIsPlaying = useRecoilValue(store.globalAudioPlayingFamily(index));\n\n  const isSpeaking = isSpeakingState || (isLast && globalIsPlaying);\n  const {\n    cancelSpeech,\n    generateSpeechExternal: generateSpeech,\n    isLoading,\n    voices,\n  } = useTextToSpeechExternal({\n    setIsSpeaking,\n    audioRef,\n    messageId,\n    isLast,\n    index,\n  });\n\n  useEffect(() => {\n    const firstVoice = voices[0];\n    if (voices.length) {\n      const lastSelectedVoice = voices.find((v) => v === voice);\n      if (lastSelectedVoice != null) {\n        logger.log('useTextToSpeech.ts - Effect:', { voices, voice: lastSelectedVoice });\n        setVoice(lastSelectedVoice.toString());\n        return;\n      }\n      logger.log('useTextToSpeech.ts - Effect:', { voices, voice: firstVoice });\n      setVoice(firstVoice.toString());\n    }\n  }, [setVoice, voice, voices]);\n\n  const handleMouseDown = () => {\n    isMouseDownRef.current = true;\n    timerRef.current = window.setTimeout(() => {\n      if (isMouseDownRef.current) {\n        const messageContent = content ?? '';\n        const parsedMessage =\n          typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n        generateSpeech(parsedMessage, false);\n      }\n    }, 1000);\n  };\n\n  const handleMouseUp = () => {\n    isMouseDownRef.current = false;\n    if (timerRef.current != null) {\n      window.clearTimeout(timerRef.current);\n    }\n  };\n\n  const toggleSpeech = () => {\n    if (isSpeaking === true) {\n      cancelSpeech();\n      pauseGlobalAudio();\n    } else {\n      const messageContent = content ?? '';\n      const parsedMessage =\n        typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n      generateSpeech(parsedMessage, false);\n    }\n  };\n\n  return {\n    handleMouseDown,\n    handleMouseUp,\n    toggleSpeech,\n    isSpeaking,\n    isLoading,\n    audioRef,\n    voices,\n  };\n};\n\nexport default useTTSExternal;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/AuthContext.tsx",
    "content": "import {\n  useMemo,\n  useState,\n  useEffect,\n  ReactNode,\n  useContext,\n  useCallback,\n  createContext,\n} from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useRecoilState } from 'recoil';\nimport { setTokenHeader, SystemRoles } from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\nimport {\n  useGetBsConfig,\n  useGetRole,\n  useGetUserQuery,\n  useLoginUserMutation,\n  useLogoutUserMutation,\n  useRefreshTokenMutation,\n} from '~/data-provider';\nimport { TAuthConfig, TUserContext, TAuthContext, TResError } from '~/common';\nimport useTimeout from './useTimeout';\nimport store from '~/store';\n\nconst AuthContext = createContext<TAuthContext | undefined>(undefined);\n\nconst AuthContextProvider = ({\n  authConfig,\n  children,\n}: {\n  authConfig?: TAuthConfig;\n  children: ReactNode;\n}) => {\n  const [user, setUser] = useRecoilState(store.user);\n  const [token, setToken] = useState<string | undefined>(undefined);\n  const [error, setError] = useState<string | undefined>(undefined);\n  const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);\n  const { data: userRole = null } = useGetRole(SystemRoles.USER, {\n    enabled: !!(isAuthenticated && (user?.role ?? '')),\n  });\n  const { data: adminRole = null } = useGetRole(SystemRoles.ADMIN, {\n    enabled: !!(isAuthenticated && user?.role === SystemRoles.ADMIN),\n  });\n  useEffect(() => {\n    setUserContext({ token, isAuthenticated: !!user, user });\n  }, [user])\n\n  const navigate = useNavigate();\n  const { data: bsConfig } = useGetBsConfig()\n\n  const setUserContext = useCallback(\n    (userContext: TUserContext) => {\n      const { token, isAuthenticated, user, redirect } = userContext;\n      setUser(user);\n      setToken(token);\n      //@ts-ignore - ok for token to be undefined initially\n      setTokenHeader(token);\n      setIsAuthenticated(isAuthenticated);\n      if (redirect == null) {\n        return;\n      }\n      if (redirect.startsWith('http://') || redirect.startsWith('https://')) {\n        // For external links, use window.location\n        window.location.href = redirect;\n        // Or if you want to open in a new tab:\n        // window.open(redirect, '_blank');\n      } else {\n        navigate(redirect, { replace: true });\n      }\n    },\n    [navigate, setUser],\n  );\n  const doSetError = useTimeout({ callback: (error) => setError(error as string | undefined) });\n\n  const loginUser = useLoginUserMutation({\n    onSuccess: (data: t.TLoginResponse) => {\n      const { user, token, twoFAPending, tempToken } = data;\n      if (twoFAPending) {\n        // Redirect to the two-factor authentication route.\n        navigate(`/login/2fa?tempToken=${tempToken}`, { replace: true });\n        return;\n      }\n      setError(undefined);\n      setUserContext({ token, isAuthenticated: true, user });\n    },\n    onError: (error: TResError | unknown) => {\n      const resError = error as TResError;\n      doSetError(resError.message);\n      navigate('/login', { replace: true });\n    },\n  });\n  const logoutUser = useLogoutUserMutation({\n    onSuccess: (data) => {\n      setUserContext({\n        token: undefined,\n        isAuthenticated: false,\n        // user: undefined,\n        redirect: `${location.origin}${__APP_ENV__.BISHENG_HOST}` // data.redirect ?? bsConfig?.host,\n      });\n    },\n    onError: (error) => {\n      doSetError((error as Error).message);\n      setUserContext({\n        token: undefined,\n        isAuthenticated: false,\n        user: undefined,\n        redirect: bsConfig?.host,\n      });\n    },\n  });\n  // const refreshToken = useRefreshTokenMutation();\n\n  const logout = useCallback(() => logoutUser.mutate(undefined), [logoutUser]);\n  const userQuery = useGetUserQuery();\n  // const userQuery = useGetUserQuery({ enabled: !!(token ?? '') });\n\n  const login = (data: t.TLoginUser) => {\n    loginUser.mutate(data);\n  };\n\n  const silentRefresh = useCallback(() => {\n    if (authConfig?.test === true) {\n      console.log('Test mode. Skipping silent refresh.');\n      return;\n    }\n    // refreshToken.mutate(undefined, {\n    //   onSuccess: (data: t.TRefreshTokenResponse | undefined) => {\n    //     const { user, token = '' } = data ?? {};\n    //     if (token) {\n    //       setUserContext({ token, isAuthenticated: true, user });\n    //     } else {\n    //       console.log('Token is not present. User is not authenticated.');\n    //       if (authConfig?.test === true) {\n    //         return;\n    //       }\n    //       navigate('/login');\n    //     }\n    //   },\n    //   onError: (error) => {\n    //     console.log('refreshToken mutation error:', error);\n    //     if (authConfig?.test === true) {\n    //       return;\n    //     }\n    //     navigate('/login');\n    //   },\n    // });\n  }, []);\n\n  useEffect(() => {\n    if (userQuery.data) {\n      setUser(userQuery.data);\n    } else if (userQuery.isError) {\n      doSetError((userQuery.error as Error).message);\n      // navigate(`/${__APP_ENV__.BISHENG_HOST}`, { replace: true });\n    }\n    if (error != null && error && isAuthenticated) {\n      doSetError(undefined);\n    }\n    if (token == null || !token || !isAuthenticated) {\n      silentRefresh();\n    }\n  }, [\n    token,\n    isAuthenticated,\n    userQuery.data,\n    userQuery.isError,\n    userQuery.error,\n    error,\n    setUser,\n    navigate,\n    silentRefresh,\n    setUserContext,\n  ]);\n\n  useEffect(() => {\n    const handleTokenUpdate = (event) => {\n      console.log('tokenUpdated event received event');\n      const newToken = event.detail;\n      setUserContext({\n        token: newToken,\n        isAuthenticated: true,\n        user: user,\n      });\n    };\n\n    window.addEventListener('tokenUpdated', handleTokenUpdate);\n\n    return () => {\n      window.removeEventListener('tokenUpdated', handleTokenUpdate);\n    };\n  }, [setUserContext, user]);\n\n  // Make the provider update only when it should\n  const memoedValue = useMemo(\n    () => ({\n      user,\n      token,\n      error,\n      login,\n      logout,\n      setError,\n      roles: {\n        [SystemRoles.USER]: userRole,\n        [SystemRoles.ADMIN]: adminRole,\n      },\n      isAuthenticated,\n    }),\n\n    [user, error, isAuthenticated, token, userRole, adminRole],\n  );\n\n  return <AuthContext.Provider value={memoedValue}>{children}</AuthContext.Provider>;\n};\n\nconst useAuthContext = () => {\n  const context = useContext(AuthContext);\n\n  if (context === undefined) {\n    throw new Error('useAuthContext should be used inside AuthProvider');\n  }\n\n  return context;\n};\n\nexport { AuthContextProvider, useAuthContext, AuthContext };\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Chat/index.ts",
    "content": "export { default as useChatHelpers } from './useChatHelpers';\nexport { default as useAddedHelpers } from './useAddedHelpers';\nexport { default as useAddedResponse } from './useAddedResponse';\nexport { default as useChatFunctions } from './useChatFunctions';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Chat/useAddedHelpers.ts",
    "content": "import { useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport useChatFunctions from '~/hooks/Chat/useChatFunctions';\nimport store from '~/store';\n\n// this to be set somewhere else\nexport default function useAddedHelpers({\n  rootIndex = 0,\n  currentIndex,\n  paramId,\n}: {\n  rootIndex?: number;\n  currentIndex: number;\n  paramId?: string;\n}) {\n  const queryClient = useQueryClient();\n\n  const clearAllSubmissions = store.useClearSubmissionState();\n  const [files, setFiles] = useRecoilState(store.filesByIndex(rootIndex));\n  const latestMessage = useRecoilValue(store.latestMessageFamily(rootIndex));\n  const setLatestMultiMessage = useSetRecoilState(store.latestMessageFamily(currentIndex));\n\n  const { useCreateConversationAtom } = store;\n  const { conversation, setConversation } = useCreateConversationAtom(currentIndex);\n  const [isSubmitting, setIsSubmitting] = useRecoilState(store.isSubmittingFamily(currentIndex));\n\n  const setSiblingIdx = useSetRecoilState(\n    store.messagesSiblingIdxFamily(latestMessage?.parentMessageId ?? null),\n  );\n\n  const queryParam = paramId === 'new' ? paramId : conversation?.conversationId ?? paramId ?? '';\n\n  const setMessages = useCallback(\n    (messages: TMessage[]) => {\n      queryClient.setQueryData<TMessage[]>(\n        [QueryKeys.messages, queryParam, currentIndex],\n        messages,\n      );\n      const latestMultiMessage = messages[messages.length - 1];\n      if (latestMultiMessage) {\n        setLatestMultiMessage({ ...latestMultiMessage, depth: -1 });\n      }\n    },\n    [queryParam, queryClient, currentIndex, setLatestMultiMessage],\n  );\n\n  const getMessages = useCallback(() => {\n    return queryClient.getQueryData<TMessage[]>([QueryKeys.messages, queryParam, currentIndex]);\n  }, [queryParam, queryClient, currentIndex]);\n\n  const setSubmission = useSetRecoilState(store.submissionByIndex(currentIndex));\n\n  const { ask, regenerate } = useChatFunctions({\n    index: currentIndex,\n    files,\n    setFiles,\n    getMessages,\n    setMessages,\n    isSubmitting,\n    conversation,\n    setSubmission,\n    latestMessage,\n  });\n\n  const continueGeneration = () => {\n    if (!latestMessage) {\n      console.error('Failed to regenerate the message: latestMessage not found.');\n      return;\n    }\n\n    const messages = getMessages();\n\n    const parentMessage = messages?.find(\n      (element) => element.messageId == latestMessage.parentMessageId,\n    );\n\n    if (parentMessage && parentMessage.isCreatedByUser) {\n      ask({ ...parentMessage }, { isContinued: true, isRegenerate: true, isEdited: true });\n    } else {\n      console.error(\n        'Failed to regenerate the message: parentMessage not found, or not created by user.',\n      );\n    }\n  };\n\n  const stopGenerating = () => clearAllSubmissions();\n\n  const handleStopGenerating = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    stopGenerating();\n  };\n\n  const handleRegenerate = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    const parentMessageId = latestMessage?.parentMessageId;\n    if (!parentMessageId) {\n      console.error('Failed to regenerate the message: parentMessageId not found.');\n      return;\n    }\n    regenerate({ parentMessageId });\n  };\n\n  const handleContinue = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    continueGeneration();\n    setSiblingIdx(0);\n  };\n\n  return {\n    ask,\n    regenerate,\n    getMessages,\n    setMessages,\n    conversation,\n    isSubmitting,\n    setSiblingIdx,\n    latestMessage,\n    stopGenerating,\n    handleContinue,\n    setConversation,\n    setIsSubmitting,\n    handleRegenerate,\n    handleStopGenerating,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Chat/useAddedResponse.ts",
    "content": "import { useMemo } from 'react';\nimport useGenerateConvo from '~/hooks/Conversations/useGenerateConvo';\nimport useAddedHelpers from '~/hooks/Chat/useAddedHelpers';\n\nexport default function useAddedResponse({ rootIndex }: { rootIndex: number }) {\n  const currentIndex = useMemo(() => rootIndex + 1, [rootIndex]);\n  const {\n    ask,\n    regenerate,\n    setMessages,\n    getMessages,\n    conversation,\n    isSubmitting,\n    setConversation,\n    setIsSubmitting,\n  } = useAddedHelpers({\n    rootIndex,\n    currentIndex,\n  });\n\n  const { generateConversation } = useGenerateConvo({\n    index: currentIndex,\n    rootIndex,\n    setConversation,\n  });\n\n  return {\n    ask,\n    regenerate,\n    getMessages,\n    setMessages,\n    conversation,\n    isSubmitting,\n    setConversation,\n    setIsSubmitting,\n    generateConversation,\n    addedIndex: currentIndex,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Chat/useChatFunctions.ts",
    "content": "import { v4 } from 'uuid';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  Constants,\n  QueryKeys,\n  ContentTypes,\n  EModelEndpoint,\n  parseCompactConvo,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport { useSetRecoilState, useResetRecoilState, useRecoilValue } from 'recoil';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type {\n  TMessage,\n  TSubmission,\n  TConversation,\n  TEndpointOption,\n  TEndpointsConfig,\n} from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport type { TAskFunction, ExtendedFile } from '~/common';\nimport useSetFilesToDelete from '~/hooks/Files/useSetFilesToDelete';\nimport useGetSender from '~/hooks/Conversations/useGetSender';\nimport { getArtifactsMode } from '~/utils/artifacts';\nimport { getEndpointField, logger } from '~/utils';\nimport useUserKey from '~/hooks/Input/useUserKey';\nimport store from '~/store';\nimport { useEffect, useState } from 'react';\n\nconst logChatRequest = (request: Record<string, unknown>) => {\n  logger.log('=====================================\\nAsk function called with:');\n  logger.dir(request);\n  logger.log('=====================================');\n};\n\nconst usesContentStream = (endpoint: EModelEndpoint | undefined, endpointType?: string) => {\n  if (endpointType === EModelEndpoint.custom) {\n    return true;\n  }\n  if (endpoint === EModelEndpoint.openAI || endpoint === EModelEndpoint.azureOpenAI) {\n    return true;\n  }\n};\n\nexport default function useChatFunctions({\n  index = 0,\n  files,\n  setFiles,\n  getMessages,\n  setMessages,\n  isSubmitting,\n  conversation,\n  latestMessage,\n  setSubmission,\n  setLatestMessage,\n}: {\n  index?: number;\n  isSubmitting: boolean;\n  paramId?: string | undefined;\n  conversation: TConversation | null;\n  latestMessage: TMessage | null;\n  getMessages: () => TMessage[] | undefined;\n  setMessages: (messages: TMessage[]) => void;\n  files?: Map<string, ExtendedFile>;\n  setFiles?: SetterOrUpdater<Map<string, ExtendedFile>>;\n  setSubmission: SetterOrUpdater<TSubmission | null>;\n  setLatestMessage?: SetterOrUpdater<TMessage | null>;\n}) {\n  const codeArtifacts = useRecoilValue(store.codeArtifacts);\n  const includeShadcnui = useRecoilValue(store.includeShadcnui);\n  const customPromptMode = useRecoilValue(store.customPromptMode);\n  const resetLatestMultiMessage = useResetRecoilState(store.latestMessageFamily(index + 1));\n  const setShowStopButton = useSetRecoilState(store.showStopButtonByIndex(index));\n  const setFilesToDelete = useSetFilesToDelete();\n  const getSender = useGetSender();\n  const isTemporary = useRecoilValue(store.isTemporary);\n  const modelType = useRecoilValue(store.modelType);\n  const chatModel = useRecoilValue(store.chatModel);\n  const searchType = useRecoilValue(store.searchType);\n  // const netSearch = useRecoilValue(store.netSearch);\n  const selectedOrgKbs = useRecoilValue(store.selectedOrgKbs);\n  const enableOrgKb = useRecoilValue(store.enableOrgKb);\n  const queryClient = useQueryClient();\n  const { getExpiry } = useUserKey(conversation?.endpoint ?? '');\n  // const model = useShouGangModel()\n\n  const ask: TAskFunction = (\n    {\n      text,\n      overrideConvoId,\n      overrideUserMessageId,\n      parentMessageId = null,\n      conversationId = null,\n      messageId = null,\n    },\n    {\n      editedText = null,\n      editedMessageId = null,\n      resubmitFiles = false,\n      isRegenerate = false,\n      isContinued = false,\n      isEdited = false,\n      overrideMessages,\n    } = {},\n  ) => {\n    setShowStopButton(false);\n    resetLatestMultiMessage();\n    if (!!isSubmitting || text === '') {\n      return;\n    }\n\n    const endpoint = 'Deepseek';\n    const custom_model = modelType || 'deepseek-chat';\n    const search_enabled = searchType && searchType === 'netSearch' || false;\n    const knowledge_enabled = searchType && searchType === 'knowledgeSearch' || false;\n\n    const use_knowledge_base = {\n      personal_knowledge_enabled: knowledge_enabled,\n\n      // 是否用组织知识库\n      // enableOrgKb: enableOrgKb,\n      organization_knowledge_ids:\n        enableOrgKb\n          ? selectedOrgKbs.map(kb => kb.id).filter(kb => kb !== 'personal_knowledge_base')\n          : [],\n    };\n\n    // const endpoint = conversation?.endpoint;\n    if (endpoint === null) {\n      console.error('No endpoint available');\n      return;\n    }\n\n    conversationId = conversationId ?? conversation?.conversationId ?? null;\n    if (conversationId == 'search') {\n      console.error('cannot send any message under search view!');\n      return;\n    }\n\n    if (isContinued && !latestMessage) {\n      console.error('cannot continue AI message without latestMessage!');\n      return;\n    }\n\n    const isEditOrContinue = isEdited || isContinued;\n\n    let currentMessages: TMessage[] | null = overrideMessages ?? getMessages() ?? [];\n\n    // construct the query message\n    // this is not a real messageId, it is used as placeholder before real messageId returned\n    text = text.trim();\n    const intermediateId = overrideUserMessageId ?? v4();\n    parentMessageId = parentMessageId ?? latestMessage?.messageId ?? Constants.NO_PARENT;\n\n    logChatRequest({\n      index,\n      conversation,\n      latestMessage,\n      conversationId,\n      intermediateId,\n      parentMessageId,\n      currentMessages,\n    });\n\n    if (conversationId == Constants.NEW_CONVO) {\n      parentMessageId = Constants.NO_PARENT;\n      currentMessages = [];\n      conversationId = null;\n    }\n\n    const parentMessage = currentMessages.find(\n      (msg) => msg.messageId === latestMessage?.parentMessageId,\n    );\n\n    let thread_id = parentMessage?.thread_id ?? latestMessage?.thread_id;\n    if (thread_id == null) {\n      thread_id = currentMessages.find((message) => message.thread_id)?.thread_id;\n    }\n\n    // const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n    // const endpointType = getEndpointField(endpointsConfig, endpoint, 'type');\n\n    // set the endpoint option\n    // const convo = parseCompactConvo({\n    //   endpoint,\n    //   endpointType,\n    //   conversation: conversation ?? {},\n    // });\n\n    // const { modelDisplayLabel } = endpointsConfig?.[endpoint ?? ''] ?? {};\n    // const endpointOption = Object.assign(\n    //   {\n    //     endpoint,\n    //     endpointType,\n    //     overrideConvoId,\n    //     overrideUserMessageId,\n    //     artifacts:\n    //       endpoint !== EModelEndpoint.agents\n    //         ? getArtifactsMode({ codeArtifacts, includeShadcnui, customPromptMode })\n    //         : undefined,\n    //   },\n    //   convo,\n    // ) as TEndpointOption;\n    // if (endpoint !== EModelEndpoint.agents) {\n    //   endpointOption.key = getExpiry();\n    //   endpointOption.thread_id = thread_id;\n    //   endpointOption.modelDisplayLabel = modelDisplayLabel;\n    // } else {\n    //   endpointOption.key = new Date(Date.now() + 60 * 60 * 1000).toISOString();\n    // }\n\n    const endpointOption = Object.assign({\n      endpoint: '', // 临时修改\n      endpointType: 'custom',\n      model: chatModel.id + '',\n      search_enabled,\n      use_knowledge_base,\n    });\n    const responseSender = chatModel.name // getSender({ ...endpointOption });\n\n    const currentMsg: TMessage = {\n      text,\n      sender: 'User',\n      clientTimestamp: new Date().toLocaleString('sv').replace(' ', 'T'),\n      isCreatedByUser: true,\n      parentMessageId,\n      conversationId,\n      messageId: isContinued && messageId != null && messageId ? messageId : intermediateId,\n      thread_id,\n      error: false,\n    };\n\n    const reuseFiles =\n      (isRegenerate || resubmitFiles) && parentMessage?.files && parentMessage.files.length > 0;\n    if (setFiles && reuseFiles === true) {\n      currentMsg.files = parentMessage.files;\n      setFiles(new Map());\n      setFilesToDelete({});\n    } else if (setFiles && files && files.size > 0) {\n      currentMsg.files = Array.from(files.values()).map((file) => ({\n        file_id: file.file_id,\n        filepath: file.filepath,\n        type: file.type ?? '', // Ensure type is not undefined\n        height: file.height,\n        width: file.width,\n      }));\n      setFiles(new Map());\n      setFilesToDelete({});\n    }\n\n    // construct the placeholder response message\n    const generation = editedText ?? latestMessage?.text ?? '';\n    const responseText = isEditOrContinue ? generation : '';\n\n    const responseMessageId = editedMessageId ?? latestMessage?.messageId ?? null;\n    const initialResponse: TMessage = {\n      sender: responseSender,\n      text: responseText,\n      endpoint: endpoint ?? '',\n      parentMessageId: isRegenerate ? messageId : intermediateId,\n      messageId: responseMessageId ?? `${isRegenerate ? messageId : intermediateId}_`,\n      thread_id,\n      conversationId,\n      unfinished: false,\n      isCreatedByUser: false,\n      iconURL: undefined,\n      model: custom_model,\n      error: false,\n    };\n\n    // if (isAssistantsEndpoint(endpoint)) {\n    //   initialResponse.model = conversation?.assistant_id ?? '';\n    //   initialResponse.text = '';\n    //   initialResponse.content = [\n    //     {\n    //       type: ContentTypes.TEXT,\n    //       [ContentTypes.TEXT]: {\n    //         value: responseText,\n    //       },\n    //     },\n    //   ];\n    // } else if (endpoint === EModelEndpoint.agents) {\n    //   initialResponse.model = conversation?.agent_id ?? '';\n    //   initialResponse.text = '';\n    //   initialResponse.content = [\n    //     {\n    //       type: ContentTypes.TEXT,\n    //       [ContentTypes.TEXT]: {\n    //         value: responseText,\n    //       },\n    //     },\n    //   ];\n    //   setShowStopButton(true);\n    // } else if (usesContentStream(endpoint, endpointType)) {\n    //   initialResponse.text = '';\n    //   initialResponse.content = [\n    //     {\n    //       type: ContentTypes.TEXT,\n    //       [ContentTypes.TEXT]: {\n    //         value: responseText,\n    //       },\n    //     },\n    //   ];\n    //   setShowStopButton(true);\n    // } else {\n    //   setShowStopButton(true);\n    // }\n    setShowStopButton(true);\n\n    if (isContinued) {\n      currentMessages = currentMessages.filter((msg) => msg.messageId !== responseMessageId);\n    }\n\n    const submission: TSubmission = {\n      conversation: {\n        ...conversation,\n        conversationId,\n      },\n      endpointOption,\n      userMessage: {\n        ...currentMsg,\n        generation,\n        responseMessageId,\n        overrideParentMessageId: isRegenerate ? messageId : null,\n      },\n      messages: currentMessages,\n      isEdited: isEditOrContinue,\n      isContinued,\n      isRegenerate,\n      //1\n      initialResponse,\n      isTemporary,\n    };\n\n    if (isRegenerate) {\n      setMessages([...submission.messages, initialResponse]);\n    } else {\n      setMessages([...submission.messages, currentMsg, initialResponse]);\n    }\n    if (index === 0 && setLatestMessage) {\n      setLatestMessage(initialResponse);\n    }\n\n    setSubmission(submission);\n    logger.dir('message_stream', submission, { depth: null });\n  };\n\n  const regenerate = ({ parentMessageId }) => {\n    const messages = getMessages();\n    const parentMessage = messages?.find((element) => element.messageId == parentMessageId);\n\n    if (parentMessage && parentMessage.isCreatedByUser) {\n      ask({ ...parentMessage }, { isRegenerate: true });\n    } else {\n      console.error(\n        'Failed to regenerate the message: parentMessage not found or not created by user.',\n      );\n    }\n  };\n\n  return {\n    ask,\n    regenerate,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Chat/useChatHelpers.ts",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useRecoilState, useResetRecoilState, useSetRecoilState } from 'recoil';\nimport { checkFileParseStatus } from '~/api/linsight';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useLocalize } from '~/hooks';\nimport useChatFunctions from '~/hooks/Chat/useChatFunctions';\nimport useNewConvo from '~/hooks/useNewConvo';\nimport { useToastContext } from '~/Providers';\nimport store from '~/store';\nimport { filesByIndex } from '~/store/linsight';\n\n// this to be set somewhere else\nexport default function useChatHelpers(index = 0, paramId?: string, isLingsight = false) {\n  const clearAllSubmissions = store.useClearSubmissionState();\n  const [files, setFiles] = useRecoilState(store.filesByIndex(index));\n  const [linsightFiles, setLinsightFiles] = useLinsighFiles(index);\n\n  const [filesLoading, setFilesLoading] = useState(false);\n\n  const queryClient = useQueryClient();\n\n  const { newConversation } = useNewConvo(index);\n  const { useCreateConversationAtom } = store;\n  const { conversation, setConversation } = useCreateConversationAtom(index);\n  const { conversationId } = conversation ?? {};\n\n  const queryParam = paramId === 'new' ? paramId : conversationId ?? paramId ?? '';\n\n  const resetLatestMessage = useResetRecoilState(store.latestMessageFamily(index));\n  const [isSubmitting, setIsSubmitting] = useRecoilState(store.isSubmittingFamily(index));\n  const [latestMessage, setLatestMessage] = useRecoilState(store.latestMessageFamily(index));\n  const setSiblingIdx = useSetRecoilState(\n    store.messagesSiblingIdxFamily(latestMessage?.parentMessageId ?? null),\n  );\n\n  const setMessages = useCallback(\n    (messages: TMessage[]) => {\n      queryClient.setQueryData<TMessage[]>([QueryKeys.messages, queryParam], messages);\n      if (queryParam === 'new') {\n        queryClient.setQueryData<TMessage[]>([QueryKeys.messages, conversationId], messages);\n      }\n    },\n    [queryParam, queryClient, conversationId],\n  );\n\n  const getMessages = useCallback(() => {\n    return queryClient.getQueryData<TMessage[]>([QueryKeys.messages, queryParam]);\n  }, [queryParam, queryClient]);\n\n  /* Conversation */\n  // const setActiveConvos = useSetRecoilState(store.activeConversations);\n\n  // const setConversation = useCallback(\n  //   (convoUpdate: TConversation) => {\n  //     _setConversation(prev => {\n  //       const { conversationId: convoId } = prev ?? { conversationId: null };\n  //       const { conversationId: currentId } = convoUpdate;\n  //       if (currentId && convoId && convoId !== 'new' && convoId !== currentId) {\n  //         // for now, we delete the prev convoId from activeConversations\n  //         const newActiveConvos = { [currentId]: true };\n  //         setActiveConvos(newActiveConvos);\n  //       }\n  //       return convoUpdate;\n  //     });\n  //   },\n  //   [_setConversation, setActiveConvos],\n  // );\n\n  const setSubmission = useSetRecoilState(store.submissionByIndex(index));\n\n  const { ask, regenerate } = useChatFunctions({\n    index,\n    files: isLingsight ? linsightFiles : files,\n    setFiles: isLingsight ? setLinsightFiles : setFiles,\n    getMessages,\n    setMessages,\n    isSubmitting,\n    conversation,\n    latestMessage,\n    setSubmission,\n    setLatestMessage,\n  });\n\n  const continueGeneration = () => {\n    if (!latestMessage) {\n      console.error('Failed to regenerate the message: latestMessage not found.');\n      return;\n    }\n\n    const messages = getMessages();\n\n    const parentMessage = messages?.find(\n      (element) => element.messageId == latestMessage.parentMessageId,\n    );\n\n    if (parentMessage && parentMessage.isCreatedByUser) {\n      ask({ ...parentMessage }, { isContinued: true, isRegenerate: true, isEdited: true });\n    } else {\n      console.error(\n        'Failed to regenerate the message: parentMessage not found, or not created by user.',\n      );\n    }\n  };\n\n  const stopGenerating = () => clearAllSubmissions();\n\n  const handleStopGenerating = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    stopGenerating();\n  };\n\n  const handleRegenerate = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    const parentMessageId = latestMessage?.parentMessageId ?? '';\n    if (!parentMessageId) {\n      console.error('Failed to regenerate the message: parentMessageId not found.');\n      return;\n    }\n    regenerate({ parentMessageId });\n  };\n\n  const handleContinue = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.preventDefault();\n    continueGeneration();\n    setSiblingIdx(0);\n  };\n\n  const [showPopover, setShowPopover] = useRecoilState(store.showPopoverFamily(index));\n  const [abortScroll, setAbortScroll] = useRecoilState(store.abortScrollFamily(index));\n  const [preset, setPreset] = useRecoilState(store.presetByIndex(index));\n  const [optionSettings, setOptionSettings] = useRecoilState(store.optionSettingsFamily(index));\n  const [showAgentSettings, setShowAgentSettings] = useRecoilState(\n    store.showAgentSettingsFamily(index),\n  );\n\n  return {\n    newConversation,\n    conversation,\n    setConversation,\n    // getConvos,\n    // setConvos,\n    isSubmitting,\n    setIsSubmitting,\n    getMessages,\n    setMessages,\n    setSiblingIdx,\n    latestMessage,\n    setLatestMessage,\n    resetLatestMessage,\n    ask,\n    index,\n    regenerate,\n    stopGenerating,\n    handleStopGenerating,\n    handleRegenerate,\n    handleContinue,\n    showPopover,\n    setShowPopover,\n    abortScroll,\n    setAbortScroll,\n    preset,\n    setPreset,\n    optionSettings,\n    setOptionSettings,\n    showAgentSettings,\n    setShowAgentSettings,\n    files: isLingsight ? linsightFiles : files,\n    setFiles: isLingsight ? setLinsightFiles : setFiles,\n    dailyFiles: files,\n    setDailyFiles: setFiles,\n    filesLoading,\n    setFilesLoading\n  };\n}\n\n\n\nconst useLinsighFiles = (index) => {\n  const [files, setLinsightFiles] = useRecoilState(filesByIndex(index));\n  const filesRef = useRef(new Map()); // 用于跟踪文件状态\n\n  const { showToast } = useToastContext();\n  const localize = useLocalize();\n\n  const newFiles = useMemo(() => {\n    const newFiles = new Map(files);\n\n    newFiles.forEach((value, key) => {\n      newFiles.set(key, {\n        ...value,\n        progress: value.parsing_status === 'completed' ? 1 : 0.9,\n        parsing_status: value.parsing_status ?? 'pending'\n      });\n    });\n\n    filesRef.current = newFiles;\n    return newFiles;\n  }, [files]);\n\n\n  // 解析状态检查定时器\n  useEffect(() => {\n    const intervalId = setInterval(async () => {\n      const currentFiles = new Map(filesRef.current);\n      const filesToCheck = [];\n\n      // 收集需要检查的文件：上传完成但未解析完成的文件\n      currentFiles.forEach(file => {\n        if (!['failed', 'completed'].includes(file.parsing_status)) {\n          file.file_id.indexOf('-') === -1 && filesToCheck.push(file.file_id);\n        }\n      });\n\n      if (filesToCheck.length === 0) return;\n\n      try {\n        const res = await checkFileParseStatus(filesToCheck);\n        const statusMap = new Map(res.data.map(item => [item.file_id, item.parsing_status]));\n\n        setLinsightFiles(_updatedFiles => {\n          const updatedFiles = new Map(_updatedFiles);\n          // 遍历 updatedFiles，找到匹配 fileId 的文件\n          updatedFiles.forEach((file, key) => {\n            const fileId = file.file_id; // 假设 file 对象中有 file_id 字段\n            if (statusMap.has(fileId)) {\n              const status = statusMap.get(fileId);\n              if (status === 'completed' && file.parsing_status !== 'completed') {\n                updatedFiles.set(key, {\n                  ...file,\n                  parsing_status: 'completed',\n                  // 可添加其他解析完成后的元数据\n                });\n              } else if (status === 'failed') {\n                updatedFiles.delete(key);\n                showToast({ message: localize('com_file_parse_failed_auto_removed', { 0: file.filename }), status: 'error' });\n              }\n            }\n          });\n\n          return updatedFiles\n        })\n      } catch (error) {\n        console.error('文件解析状态检查失败:', error);\n      }\n    }, 2000)\n    return () => clearInterval(intervalId);\n  }, []);\n\n  return [newFiles, setLinsightFiles]\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Config/index.ts",
    "content": "export { default as useAppStartup } from './useAppStartup';\nexport { default as useClearStates } from './useClearStates';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Config/useAppStartup.ts",
    "content": "import { useEffect } from 'react';\nimport TagManager from 'react-gtm-module';\nimport { useRecoilState, useSetRecoilState } from 'recoil';\nimport { LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport { useAvailablePluginsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TStartupConfig, TPlugin, TUser } from '~/data-provider/data-provider/src';\nimport { mapPlugins, selectPlugins, processPlugins } from '~/utils';\nimport store from '~/store';\n\nconst pluginStore: TPlugin = {\n  name: 'Plugin store',\n  pluginKey: 'pluginStore',\n  isButton: true,\n  description: '',\n  icon: '',\n  authConfig: [],\n  authenticated: false,\n};\n\nexport default function useAppStartup({\n  startupConfig,\n  user,\n}: {\n  startupConfig?: TStartupConfig;\n  user?: TUser;\n}) {\n  const setAvailableTools = useSetRecoilState(store.availableTools);\n  const [defaultPreset, setDefaultPreset] = useRecoilState(store.defaultPreset);\n  const { data: allPlugins } = useAvailablePluginsQuery({\n    enabled: !!user?.plugins,\n    select: selectPlugins,\n  });\n\n  /** Set the app title */\n  useEffect(() => {\n    const appTitle = startupConfig?.appTitle ?? '';\n    if (!appTitle) {\n      return;\n    }\n    // document.title = appTitle;\n    localStorage.setItem(LocalStorageKeys.APP_TITLE, appTitle);\n  }, [startupConfig]);\n\n  /** Set the default spec's preset as default */\n  useEffect(() => {\n    if (defaultPreset && defaultPreset.spec != null) {\n      return;\n    }\n\n    const modelSpecs = startupConfig?.modelSpecs?.list;\n\n    if (!modelSpecs || !modelSpecs.length) {\n      return;\n    }\n\n    const defaultSpec = modelSpecs.find((spec) => spec.default);\n\n    if (!defaultSpec) {\n      return;\n    }\n\n    setDefaultPreset({\n      ...defaultSpec.preset,\n      iconURL: defaultSpec.iconURL,\n      spec: defaultSpec.name,\n    });\n  }, [defaultPreset, setDefaultPreset, startupConfig?.modelSpecs?.list]);\n\n  /** Set the available Plugins */\n  useEffect(() => {\n    if (!user) {\n      return;\n    }\n\n    if (!allPlugins) {\n      return;\n    }\n\n    const userPlugins = user.plugins ?? [];\n\n    if (userPlugins.length === 0) {\n      setAvailableTools({ pluginStore });\n      return;\n    }\n\n    const tools = [...userPlugins]\n      .map((el) => allPlugins.map[el])\n      .filter((el: TPlugin | undefined): el is TPlugin => el !== undefined);\n\n    /* Filter Last Selected Tools */\n    const localStorageItem = localStorage.getItem(LocalStorageKeys.LAST_TOOLS) ?? '';\n    if (!localStorageItem) {\n      return setAvailableTools({ pluginStore, ...mapPlugins(tools) });\n    }\n    const lastSelectedTools = processPlugins(JSON.parse(localStorageItem) ?? [], allPlugins.map);\n    const filteredTools = lastSelectedTools\n      .filter((tool: TPlugin) =>\n        tools.some((existingTool) => existingTool.pluginKey === tool.pluginKey),\n      )\n      .filter((tool: TPlugin | undefined) => !!tool);\n    localStorage.setItem(LocalStorageKeys.LAST_TOOLS, JSON.stringify(filteredTools));\n\n    setAvailableTools({ pluginStore, ...mapPlugins(tools) });\n  }, [allPlugins, user, setAvailableTools]);\n\n  useEffect(() => {\n    if (startupConfig?.analyticsGtmId != null && typeof window.google_tag_manager === 'undefined') {\n      const tagManagerArgs = {\n        gtmId: startupConfig.analyticsGtmId,\n      };\n      TagManager.initialize(tagManagerArgs);\n    }\n  }, [startupConfig?.analyticsGtmId]);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Config/useClearStates.ts",
    "content": "import { useRecoilCallback } from 'recoil';\nimport { clearLocalStorage } from '~/utils/localStorage';\nimport store from '~/store';\n\nexport default function useClearStates() {\n  const clearConversations = store.useClearConvoState();\n  const clearSubmissions = store.useClearSubmissionState();\n  const clearLatestMessages = store.useClearLatestMessages();\n\n  const clearStates = useRecoilCallback(\n    ({ reset, snapshot }) =>\n      async (skipFirst?: boolean) => {\n        await clearSubmissions(skipFirst);\n        await clearConversations(skipFirst);\n        await clearLatestMessages(skipFirst);\n\n        const keys = await snapshot.getPromise(store.conversationKeysAtom);\n\n        for (const key of keys) {\n          if (skipFirst === true && key === 0) {\n            continue;\n          }\n\n          reset(store.filesByIndex(key));\n          reset(store.presetByIndex(key));\n          reset(store.textByIndex(key));\n          reset(store.showStopButtonByIndex(key));\n          reset(store.abortScrollFamily(key));\n          reset(store.isSubmittingFamily(key));\n          reset(store.optionSettingsFamily(key));\n          reset(store.showAgentSettingsFamily(key));\n          reset(store.showPopoverFamily(key));\n          reset(store.showMentionPopoverFamily(key));\n          reset(store.showPlusPopoverFamily(key));\n          reset(store.showPromptsPopoverFamily(key));\n          reset(store.activePromptByIndex(key));\n          reset(store.globalAudioURLFamily(key));\n          reset(store.globalAudioFetchingFamily(key));\n          reset(store.globalAudioPlayingFamily(key));\n          reset(store.activeRunFamily(key));\n          reset(store.audioRunFamily(key));\n          reset(store.messagesSiblingIdxFamily(key.toString()));\n        }\n\n        clearLocalStorage(skipFirst);\n      },\n    [],\n  );\n\n  return clearStates;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Config/useConfigOverride.ts",
    "content": "import { useSetRecoilState } from 'recoil';\nimport { useEffect, useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { TEndpointsConfig, TModelsConfig } from '~/data-provider/data-provider/src';\nimport { useGetEndpointsConfigOverride } from '~/data-provider';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\ntype TempOverrideType = Record<string, unknown> & {\n  endpointsConfig: TEndpointsConfig;\n  modelsConfig?: TModelsConfig;\n  combinedOptions: unknown[];\n  combined: boolean;\n};\n\nexport default function useConfigOverride() {\n  const setEndpointsQueryEnabled = useSetRecoilState(store.endpointsQueryEnabled);\n  const overrideQuery = useGetEndpointsConfigOverride({\n    staleTime: Infinity,\n  });\n\n  const queryClient = useQueryClient();\n\n  const handleOverride = useCallback(\n    async (data: unknown | boolean) => {\n      const { endpointsConfig, modelsConfig } = data as TempOverrideType;\n      if (endpointsConfig) {\n        setEndpointsQueryEnabled(false);\n        await queryClient.cancelQueries([QueryKeys.endpoints]);\n        queryClient.setQueryData([QueryKeys.endpoints], endpointsConfig);\n      }\n      if (modelsConfig) {\n        await queryClient.cancelQueries([QueryKeys.models]);\n        queryClient.setQueryData([QueryKeys.models], modelsConfig);\n      }\n    },\n    [queryClient, setEndpointsQueryEnabled],\n  );\n\n  useEffect(() => {\n    if (overrideQuery.data != null) {\n      handleOverride(overrideQuery.data);\n    }\n  }, [overrideQuery.data, handleOverride]);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/index.ts",
    "content": "export { default as useSearch } from './useSearch';\nexport { default as usePresets } from './usePresets';\nexport { default as useGetSender } from './useGetSender';\nexport { default as useDefaultConvo } from './useDefaultConvo';\nexport { default as useGenerateConvo } from './useGenerateConvo';\nexport { default as useArchiveHandler } from './useArchiveHandler';\nexport { default as useDebouncedInput } from './useDebouncedInput';\nexport { default as useBookmarkSuccess } from './useBookmarkSuccess';\nexport { default as useNavigateToConvo } from './useNavigateToConvo';\nexport { default as useSetIndexOptions } from './useSetIndexOptions';\nexport { default as useParameterEffects } from './useParameterEffects';\nexport { default as useUpdateTagsInConvo } from './useUpdateTagsInConvo';\nexport { default as useExportConversation } from './useExportConversation';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useArchiveHandler.ts",
    "content": "import { useParams, useNavigate } from 'react-router-dom';\nimport type { MouseEvent, FocusEvent, KeyboardEvent } from 'react';\nimport { useArchiveConversationMutation } from '~/data-provider';\nimport { NotificationSeverity } from '~/common';\nimport { useToastContext } from '~/Providers';\nimport useLocalize, { TranslationKeys } from '../useLocalize';\nimport useNewConvo from '../useNewConvo';\n\nexport default function useArchiveHandler(\n  conversationId: string | null,\n  shouldArchive: boolean,\n  retainView: () => void,\n) {\n  const localize = useLocalize();\n  const navigate = useNavigate();\n  const { showToast } = useToastContext();\n  const { newConversation } = useNewConvo();\n  const { conversationId: currentConvoId } = useParams();\n\n  const archiveConvoMutation = useArchiveConversationMutation(conversationId ?? '');\n\n  return async (e?: MouseEvent | FocusEvent | KeyboardEvent) => {\n    if (e) {\n      e.preventDefault();\n    }\n    const convoId = conversationId ?? '';\n    if (!convoId) {\n      return;\n    }\n    const label: TranslationKeys = shouldArchive ? 'com_ui_archive_error' : 'com_ui_unarchive_error';\n    archiveConvoMutation.mutate(\n      { conversationId: convoId, isArchived: shouldArchive },\n      {\n        onSuccess: () => {\n          if (currentConvoId === convoId || currentConvoId === 'new') {\n            newConversation();\n            navigate('/c/new', { replace: true });\n          }\n          retainView();\n        },\n        onError: () => {\n          showToast({\n            message: localize(label),\n            severity: NotificationSeverity.ERROR,\n            showIcon: true,\n          });\n        },\n      },\n    );\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useBookmarkSuccess.ts",
    "content": "import { useSetRecoilState } from 'recoil';\nimport useUpdateTagsInConvo from './useUpdateTagsInConvo';\nimport store from '~/store';\n\nconst useBookmarkSuccess = (conversationId: string) => {\n  const updateConversation = useSetRecoilState(store.updateConversationSelector(conversationId));\n  const { updateTagsInConversation } = useUpdateTagsInConvo();\n\n  return (newTags: string[]) => {\n    if (!conversationId) {\n      return;\n    }\n    updateTagsInConversation(conversationId, newTags);\n    updateConversation({ tags: newTags });\n  };\n};\n\nexport default useBookmarkSuccess;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useDebouncedInput.ts",
    "content": "import debounce from 'lodash/debounce';\nimport React, { useState, useCallback } from 'react';\nimport type { SetterOrUpdater } from 'recoil';\nimport type { TSetOption } from '~/common';\nimport { defaultDebouncedDelay } from '~/common';\n\n/** A custom hook that accepts a setOption function and an option key (e.g., 'title').\nIt manages a local state for the option value, a debounced setter function for that value,\nand returns the local state value, its setter, and an onChange handler suitable for inputs. */\nfunction useDebouncedInput<T = unknown>({\n  setOption,\n  setter,\n  optionKey,\n  initialValue,\n  delay = defaultDebouncedDelay,\n}: {\n  setOption?: TSetOption;\n  setter?: SetterOrUpdater<T>;\n  optionKey?: string | number;\n  initialValue: T;\n  delay?: number;\n}): [\n  (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | T, numeric?: boolean) => void,\n  T,\n  SetterOrUpdater<T>,\n  // (newValue: string) => void,\n] {\n  const [value, setValue] = useState<T>(initialValue);\n\n  /** A debounced function to call the passed setOption with the optionKey and new value.\n   *\n  Note: We use useCallback to ensure our debounced function is stable across renders. */\n  const setDebouncedOption = useCallback(\n    debounce(setOption && optionKey ? setOption(optionKey) : setter, delay),\n    [],\n  );\n\n  /** An onChange handler that updates the local state and the debounced option */\n  const onChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | T, numeric?: boolean) => {\n      let newValue: T =\n        typeof e !== 'object'\n          ? e\n          : ((e as React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>).target\n            .value as unknown as T);\n      if (numeric === true) {\n        newValue = Number(newValue) as unknown as T;\n      }\n      setValue(newValue);\n      setDebouncedOption(newValue);\n    },\n    [setDebouncedOption],\n  );\n  return [onChange, value, setValue];\n}\n\nexport default useDebouncedInput;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useDefaultConvo.ts",
    "content": "import { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type {\n  TEndpointsConfig,\n  TModelsConfig,\n  TConversation,\n  TPreset,\n} from '~/data-provider/data-provider/src';\nimport { getDefaultEndpoint, buildDefaultConvo } from '~/utils';\nimport { useGetEndpointsQuery } from '~/data-provider';\n\ntype TDefaultConvo = { conversation: Partial<TConversation>; preset?: Partial<TPreset> | null };\n\nconst useDefaultConvo = () => {\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n  const { data: modelsConfig = {} as TModelsConfig } = useGetModelsQuery();\n\n  const getDefaultConversation = ({ conversation, preset }: TDefaultConvo) => {\n    const endpoint = getDefaultEndpoint({\n      convoSetup: preset as TPreset,\n      endpointsConfig,\n    });\n\n    const models = modelsConfig[endpoint] || [];\n\n    return buildDefaultConvo({\n      conversation: conversation as TConversation,\n      endpoint,\n      lastConversationSetup: preset as TConversation,\n      models,\n    });\n  };\n\n  return getDefaultConversation;\n};\n\nexport default useDefaultConvo;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useExportConversation.ts",
    "content": "import download from 'downloadjs';\nimport { useCallback } from 'react';\nimport exportFromJSON from 'export-from-json';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  QueryKeys,\n  ContentTypes,\n  ToolCallTypes,\n  imageGenTools,\n  isImageVisionTool,\n} from '~/data-provider/data-provider/src';\nimport type {\n  TMessage,\n  TPreset,\n  TConversation,\n  TMessageContentParts,\n} from '~/data-provider/data-provider/src';\nimport useBuildMessageTree from '~/hooks/Messages/useBuildMessageTree';\nimport { useScreenshot } from '~/hooks/ScreenshotContext';\nimport { cleanupPreset, buildTree } from '~/utils';\nimport { useParams } from 'react-router-dom';\n\ntype ExportValues = {\n  fieldName: string;\n  fieldValues: string[];\n};\ntype ExportEntries = ExportValues[];\n\nexport default function useExportConversation({\n  conversation,\n  filename,\n  type,\n  includeOptions,\n  exportBranches,\n  recursive,\n}: {\n  conversation: TConversation | null;\n  filename: string;\n  type: string;\n  includeOptions: boolean | 'indeterminate';\n  exportBranches: boolean | 'indeterminate';\n  recursive: boolean | 'indeterminate';\n}) {\n  const queryClient = useQueryClient();\n  const { captureScreenshot } = useScreenshot();\n  const buildMessageTree = useBuildMessageTree();\n\n  const { conversationId: paramId } = useParams();\n\n  const getMessageTree = useCallback(() => {\n    const queryParam = paramId === 'new' ? paramId : conversation?.conversationId ?? paramId ?? '';\n    const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, queryParam]) ?? [];\n    const dataTree = buildTree({ messages });\n    return dataTree?.length === 0 ? null : dataTree ?? null;\n  }, [paramId, conversation?.conversationId, queryClient]);\n\n  const getMessageText = (message: TMessage | undefined, format = 'text') => {\n    if (!message) {\n      return '';\n    }\n\n    const formatText = (sender: string, text: string) => {\n      if (format === 'text') {\n        return `>> ${sender}:\\n${text}`;\n      }\n      return `**${sender}**\\n${text}`;\n    };\n\n    if (!message.content) {\n      return formatText(message.sender || '', message.text);\n    }\n\n    return message.content\n      .map((content) => getMessageContent(message.sender || '', content))\n      .map((text) => {\n        return formatText(text[0], text[1]);\n      })\n      .join('\\n\\n\\n');\n  };\n\n  /**\n   * Format and return message texts according to the type of content.\n   * Currently, content whose type is `TOOL_CALL` basically returns JSON as is.\n   * In the future, different formatted text may be returned for each type.\n   */\n  const getMessageContent = (sender: string, content?: TMessageContentParts): string[] => {\n    if (!content) {\n      return [];\n    }\n\n    if (content.type === ContentTypes.ERROR) {\n      // ERROR\n      return [sender, content[ContentTypes.TEXT].value];\n    }\n\n    if (content.type === ContentTypes.TEXT) {\n      // TEXT\n      const textPart = content[ContentTypes.TEXT];\n      const text = typeof textPart === 'string' ? textPart : textPart.value;\n      return [sender, text];\n    }\n\n    if (content.type === ContentTypes.TOOL_CALL) {\n      const type = content[ContentTypes.TOOL_CALL].type;\n\n      if (type === ToolCallTypes.CODE_INTERPRETER) {\n        // CODE_INTERPRETER\n        const toolCall = content[ContentTypes.TOOL_CALL];\n        const code_interpreter = toolCall[ToolCallTypes.CODE_INTERPRETER];\n        return ['Code Interpreter', JSON.stringify(code_interpreter)];\n      }\n\n      if (type === ToolCallTypes.RETRIEVAL) {\n        // RETRIEVAL\n        const toolCall = content[ContentTypes.TOOL_CALL];\n        return ['Retrieval', JSON.stringify(toolCall)];\n      }\n\n      if (\n        type === ToolCallTypes.FUNCTION &&\n        imageGenTools.has(content[ContentTypes.TOOL_CALL].function.name)\n      ) {\n        // IMAGE_GENERATION\n        const toolCall = content[ContentTypes.TOOL_CALL];\n        return ['Tool', JSON.stringify(toolCall)];\n      }\n\n      if (type === ToolCallTypes.FUNCTION) {\n        // IMAGE_VISION\n        const toolCall = content[ContentTypes.TOOL_CALL];\n        if (isImageVisionTool(toolCall)) {\n          return ['Tool', JSON.stringify(toolCall)];\n        }\n        return ['Tool', JSON.stringify(toolCall)];\n      }\n    }\n\n    if (content.type === ContentTypes.IMAGE_FILE) {\n      // IMAGE\n      const imageFile = content[ContentTypes.IMAGE_FILE];\n      return ['Image', JSON.stringify(imageFile)];\n    }\n\n    return [sender, JSON.stringify(content)];\n  };\n\n  const exportScreenshot = async () => {\n    let data;\n    try {\n      data = await captureScreenshot();\n    } catch (err) {\n      console.error('Failed to capture screenshot');\n      return console.error(err);\n    }\n    download(data, `${filename}.png`, 'image/png');\n  };\n\n  const exportCSV = async () => {\n    const data: TMessage[] = [];\n\n    const messages = await buildMessageTree({\n      messageId: conversation?.conversationId,\n      message: null,\n      messages: getMessageTree(),\n      branches: Boolean(exportBranches),\n      recursive: false,\n    });\n\n    if (Array.isArray(messages)) {\n      for (const message of messages) {\n        data.push(message);\n      }\n    } else {\n      data.push(messages);\n    }\n\n    exportFromJSON({\n      data: data,\n      fileName: filename,\n      extension: 'csv',\n      exportType: exportFromJSON.types.csv,\n      beforeTableEncode: (entries: ExportEntries | undefined) => [\n        {\n          fieldName: 'sender',\n          fieldValues: entries?.find((e) => e.fieldName == 'sender')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'text',\n          fieldValues: entries?.find((e) => e.fieldName == 'text')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'isCreatedByUser',\n          fieldValues: entries?.find((e) => e.fieldName == 'isCreatedByUser')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'error',\n          fieldValues: entries?.find((e) => e.fieldName == 'error')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'unfinished',\n          fieldValues: entries?.find((e) => e.fieldName == 'unfinished')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'messageId',\n          fieldValues: entries?.find((e) => e.fieldName == 'messageId')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'parentMessageId',\n          fieldValues: entries?.find((e) => e.fieldName == 'parentMessageId')?.fieldValues ?? [],\n        },\n        {\n          fieldName: 'createdAt',\n          fieldValues: entries?.find((e) => e.fieldName == 'createdAt')?.fieldValues ?? [],\n        },\n      ],\n    });\n  };\n\n  const exportMarkdown = async () => {\n    let data =\n      '# Conversation\\n' +\n      `- conversationId: ${conversation?.conversationId}\\n` +\n      `- endpoint: ${conversation?.endpoint}\\n` +\n      `- title: ${conversation?.title}\\n` +\n      `- exportAt: ${new Date().toTimeString()}\\n`;\n\n    if (includeOptions === true) {\n      data += '\\n## Options\\n';\n      const options = cleanupPreset({ preset: conversation as TPreset });\n\n      for (const key of Object.keys(options)) {\n        data += `- ${key}: ${options[key]}\\n`;\n      }\n    }\n\n    const messages = await buildMessageTree({\n      messageId: conversation?.conversationId,\n      message: null,\n      messages: getMessageTree(),\n      branches: false,\n      recursive: false,\n    });\n\n    data += '\\n## History\\n';\n    if (Array.isArray(messages)) {\n      for (const message of messages) {\n        data += `${getMessageText(message, 'md')}\\n`;\n        if (message.error) {\n          data += '*(This is an error message)*\\n';\n        }\n        if (message.unfinished === true) {\n          data += '*(This is an unfinished message)*\\n';\n        }\n        data += '\\n\\n';\n      }\n    } else {\n      data += `${getMessageText(messages, 'md')}\\n`;\n      if (messages.error) {\n        data += '*(This is an error message)*\\n';\n      }\n      if (messages.unfinished === true) {\n        data += '*(This is an unfinished message)*\\n';\n      }\n    }\n\n    exportFromJSON({\n      data: data,\n      fileName: filename,\n      extension: 'md',\n      exportType: exportFromJSON.types.txt,\n    });\n  };\n\n  const exportText = async () => {\n    let data =\n      'Conversation\\n' +\n      '########################\\n' +\n      `conversationId: ${conversation?.conversationId}\\n` +\n      `endpoint: ${conversation?.endpoint}\\n` +\n      `title: ${conversation?.title}\\n` +\n      `exportAt: ${new Date().toTimeString()}\\n`;\n\n    if (includeOptions === true) {\n      data += '\\nOptions\\n########################\\n';\n      const options = cleanupPreset({ preset: conversation as TPreset });\n\n      for (const key of Object.keys(options)) {\n        data += `${key}: ${options[key]}\\n`;\n      }\n    }\n\n    const messages = await buildMessageTree({\n      messageId: conversation?.conversationId,\n      message: null,\n      messages: getMessageTree(),\n      branches: false,\n      recursive: false,\n    });\n\n    data += '\\nHistory\\n########################\\n';\n    if (Array.isArray(messages)) {\n      for (const message of messages) {\n        data += `${getMessageText(message)}\\n`;\n        if (message.error) {\n          data += '(This is an error message)\\n';\n        }\n        if (message.unfinished === true) {\n          data += '(This is an unfinished message)\\n';\n        }\n        data += '\\n\\n';\n      }\n    } else {\n      data += `${getMessageText(messages)}\\n`;\n      if (messages.error) {\n        data += '(This is an error message)\\n';\n      }\n      if (messages.unfinished === true) {\n        data += '(This is an unfinished message)\\n';\n      }\n    }\n\n    exportFromJSON({\n      data: data,\n      fileName: filename,\n      extension: 'txt',\n      exportType: exportFromJSON.types.txt,\n    });\n  };\n\n  const exportJSON = async () => {\n    const data = {\n      conversationId: conversation?.conversationId,\n      endpoint: conversation?.endpoint,\n      title: conversation?.title,\n      exportAt: new Date().toTimeString(),\n      branches: exportBranches,\n      recursive: recursive,\n    };\n\n    if (includeOptions === true) {\n      data['options'] = cleanupPreset({ preset: conversation as TPreset });\n    }\n\n    const messages = await buildMessageTree({\n      messageId: conversation?.conversationId,\n      message: null,\n      messages: getMessageTree(),\n      branches: Boolean(exportBranches),\n      recursive: Boolean(recursive),\n    });\n\n    if (recursive === true && !Array.isArray(messages)) {\n      data['messagesTree'] = messages.children;\n    } else {\n      data['messages'] = messages;\n    }\n\n    exportFromJSON({\n      data: data,\n      fileName: filename,\n      extension: 'json',\n      exportType: exportFromJSON.types.json,\n    });\n  };\n\n  const exportConversation = () => {\n    if (type === 'json') {\n      exportJSON();\n    } else if (type == 'text') {\n      exportText();\n    } else if (type == 'markdown') {\n      exportMarkdown();\n    } else if (type == 'csv') {\n      exportCSV();\n    } else if (type == 'screenshot') {\n      exportScreenshot();\n    }\n  };\n\n  return { exportConversation };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useGenerateConvo.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useCallback, useRef, useEffect } from 'react';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport { LocalStorageKeys, isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type {\n  TPreset,\n  TModelsConfig,\n  TConversation,\n  TEndpointsConfig,\n  EModelEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport type { AssistantListItem } from '~/common';\nimport { getEndpointField, buildDefaultConvo, getDefaultEndpoint } from '~/utils';\nimport useAssistantListMap from '~/hooks/Assistants/useAssistantListMap';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { mainTextareaId } from '~/common';\nimport store from '~/store';\n\nconst useGenerateConvo = ({\n  index = 0,\n  rootIndex,\n  setConversation,\n}: {\n  index?: number;\n  rootIndex: number;\n  setConversation?: SetterOrUpdater<TConversation | null>;\n}) => {\n  const modelsQuery = useGetModelsQuery();\n  const assistantsListMap = useAssistantListMap();\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n\n  const timeoutIdRef = useRef<NodeJS.Timeout>();\n  const rootConvo = useRecoilValue(store.conversationByKeySelector(rootIndex));\n\n  useEffect(() => {\n    if (rootConvo?.conversationId != null && setConversation) {\n      setConversation((prevState) => {\n        if (!prevState) {\n          return prevState;\n        }\n        const update = {\n          ...prevState,\n          conversationId: rootConvo.conversationId,\n        } as TConversation;\n\n        return update;\n      });\n    }\n  }, [rootConvo?.conversationId, setConversation]);\n\n  const generateConversation = useCallback(\n    ({\n      template = {},\n      preset,\n      modelsData,\n    }: {\n      template?: Partial<TConversation>;\n      preset?: Partial<TPreset>;\n      modelsData?: TModelsConfig;\n    } = {}) => {\n      let conversation = {\n        conversationId: 'new',\n        title: 'New Chat',\n        endpoint: null,\n        ...template,\n        createdAt: '',\n        updatedAt: '',\n      };\n\n      if (rootConvo?.conversationId) {\n        conversation.conversationId = rootConvo.conversationId;\n      }\n\n      const modelsConfig = modelsData ?? modelsQuery.data;\n\n      const defaultEndpoint = getDefaultEndpoint({\n        convoSetup: preset ?? conversation,\n        endpointsConfig,\n      });\n\n      const endpointType = getEndpointField(endpointsConfig, defaultEndpoint, 'type');\n      if (!conversation.endpointType && endpointType) {\n        conversation.endpointType = endpointType;\n      } else if (conversation.endpointType && !endpointType) {\n        conversation.endpointType = undefined;\n      }\n\n      const isAssistantEndpoint = isAssistantsEndpoint(defaultEndpoint);\n      const assistants: AssistantListItem[] = assistantsListMap[defaultEndpoint ?? ''] ?? [];\n\n      if (\n        conversation.assistant_id &&\n        !assistantsListMap[defaultEndpoint ?? '']?.[conversation.assistant_id]\n      ) {\n        conversation.assistant_id = undefined;\n      }\n\n      if (!conversation.assistant_id && isAssistantEndpoint) {\n        conversation.assistant_id =\n          localStorage.getItem(`${LocalStorageKeys.ASST_ID_PREFIX}${index}${defaultEndpoint}`) ??\n          assistants[0]?.id;\n      }\n\n      if (\n        conversation.assistant_id != null &&\n        isAssistantEndpoint &&\n        conversation.conversationId === 'new'\n      ) {\n        const assistant = assistants.find((asst) => asst.id === conversation.assistant_id);\n        conversation.model = assistant?.model;\n      }\n\n      if (conversation.assistant_id != null && !isAssistantEndpoint) {\n        conversation.assistant_id = undefined;\n      }\n\n      const models = modelsConfig?.[defaultEndpoint ?? ''] ?? [];\n      conversation = buildDefaultConvo({\n        conversation,\n        lastConversationSetup: preset as TConversation,\n        endpoint: defaultEndpoint ?? ('' as EModelEndpoint),\n        models,\n      });\n\n      if (preset?.title != null && preset.title !== '') {\n        conversation.title = preset.title;\n      }\n\n      if (setConversation) {\n        setConversation(conversation);\n      }\n\n      clearTimeout(timeoutIdRef.current);\n      timeoutIdRef.current = setTimeout(() => {\n        const textarea = document.getElementById(mainTextareaId);\n        if (textarea) {\n          textarea.focus();\n        }\n      }, 150);\n      return conversation;\n    },\n    [assistantsListMap, endpointsConfig, index, modelsQuery.data, rootConvo, setConversation],\n  );\n\n  return { generateConversation };\n};\n\nexport default useGenerateConvo;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useGetSender.ts",
    "content": "import { useCallback } from 'react';\nimport { getResponseSender } from '~/data-provider/data-provider/src';\nimport type { TEndpointOption, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport { useGetEndpointsQuery } from '~/data-provider';\n\nexport default function useGetSender() {\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n  return useCallback(\n    (endpointOption: TEndpointOption) => {\n      const { modelDisplayLabel } = endpointsConfig?.[endpointOption.endpoint ?? ''] ?? {};\n      return getResponseSender({ ...endpointOption, modelDisplayLabel });\n    },\n    [endpointsConfig],\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useNavigateToConvo.tsx",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { useNavigate } from 'react-router-dom';\nimport { useSetRecoilState } from 'recoil';\nimport type { TConversation, TEndpointsConfig, TModelsConfig } from '~/data-provider/data-provider/src';\nimport { Constants, EModelEndpoint, LocalStorageKeys, QueryKeys } from '~/data-provider/data-provider/src';\nimport store from '~/store';\nimport { buildDefaultConvo, getDefaultEndpoint, getEndpointField, logger } from '~/utils';\n\nconst useNavigateToConvo = (index = 0) => {\n  const navigate = useNavigate();\n  const queryClient = useQueryClient();\n  const clearAllConversations = store.useClearConvoState();\n  const clearAllLatestMessages = store.useClearLatestMessages(`useNavigateToConvo ${index}`);\n  const setSubmission = useSetRecoilState(store.submissionByIndex(index));\n  const { hasSetConversation, setConversation } = store.useCreateConversationAtom(index);\n\n  const navigateToConvo = (\n    conversation?: TConversation | null,\n    _resetLatestMessage = true,\n    invalidateMessages = false,\n  ) => {\n    if (!conversation) {\n      logger.warn('conversation', 'Conversation not provided to `navigateToConvo`');\n      return;\n    }\n    hasSetConversation.current = true;\n    setSubmission(null);\n    if (_resetLatestMessage) {\n      clearAllLatestMessages();\n    }\n    if (invalidateMessages && conversation.conversationId != null && conversation.conversationId) {\n      queryClient.setQueryData([QueryKeys.messages, Constants.NEW_CONVO], []);\n      queryClient.invalidateQueries([QueryKeys.messages, conversation.conversationId]);\n    }\n\n    let convo = { ...conversation };\n    const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n    if (!convo.endpoint || !endpointsConfig?.[convo.endpoint]) {\n      /* undefined/removed endpoint edge case */\n      const modelsConfig = queryClient.getQueryData<TModelsConfig>([QueryKeys.models]);\n      const defaultEndpoint = getDefaultEndpoint({\n        convoSetup: conversation,\n        endpointsConfig,\n      });\n\n      const endpointType = getEndpointField(endpointsConfig, defaultEndpoint, 'type');\n      if (!conversation.endpointType && endpointType) {\n        conversation.endpointType = endpointType;\n      }\n\n      const models = modelsConfig?.[defaultEndpoint ?? ''] ?? [];\n\n      convo = buildDefaultConvo({\n        models,\n        conversation,\n        endpoint: defaultEndpoint,\n        lastConversationSetup: conversation,\n      });\n    }\n    clearAllConversations(true);\n    setConversation(convo);\n    if (conversation.flowType === 20) {\n      // 灵思\n      navigate(`/linsight/${conversation.conversationId}`);\n    } else if ([1, 5, 10].includes(conversation.flowType)) {\n      navigate(`/chat/${conversation.conversationId}/${conversation.flowId}/${conversation.flowType}`);\n    } else {\n      navigate(`/c/${convo.conversationId ?? Constants.NEW_CONVO}`);\n    }\n  };\n\n  const navigateWithLastTools = (\n    conversation?: TConversation | null,\n    _resetLatestMessage?: boolean,\n    invalidateMessages?: boolean,\n  ) => {\n    if (!conversation) {\n      logger.warn('conversation', 'Conversation not provided to `navigateToConvo`');\n      return;\n    }\n    // set conversation to the new conversation\n    if (conversation.endpoint === EModelEndpoint.gptPlugins) {\n      let lastSelectedTools = [];\n      try {\n        lastSelectedTools =\n          JSON.parse(localStorage.getItem(LocalStorageKeys.LAST_TOOLS) ?? '') ?? [];\n      } catch (e) {\n        logger.error('conversation', 'Error parsing last selected tools', e);\n      }\n      const hasTools = (conversation.tools?.length ?? 0) > 0;\n      navigateToConvo(\n        {\n          ...conversation,\n          tools: hasTools ? conversation.tools : lastSelectedTools,\n        },\n        _resetLatestMessage,\n        invalidateMessages,\n      );\n    } else {\n      navigateToConvo(conversation, _resetLatestMessage, invalidateMessages);\n    }\n  };\n\n  return {\n    navigateToConvo,\n    navigateWithLastTools,\n  };\n};\n\nexport default useNavigateToConvo;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useParameterEffects.ts",
    "content": "import { useEffect, useRef } from 'react';\nimport type { DynamicSettingProps, TPreset } from '~/data-provider/data-provider/src';\nimport { defaultDebouncedDelay } from '~/common';\n\nfunction useParameterEffects<T = unknown>({\n  preset,\n  settingKey,\n  defaultValue,\n  conversation,\n  inputValue,\n  setInputValue,\n  preventDelayedUpdate = false,\n}: Pick<DynamicSettingProps, 'settingKey' | 'defaultValue' | 'conversation'> & {\n  preset: TPreset | null;\n  inputValue: T;\n  setInputValue: (inputValue: T) => void;\n  preventDelayedUpdate?: boolean;\n}) {\n  const idRef = useRef<string | null>(null);\n  const presetIdRef = useRef<string | null>(null);\n\n  /** Updates the local state inputValue if global (conversation) is updated elsewhere */\n  useEffect(() => {\n    if (preventDelayedUpdate) {\n      return;\n    }\n\n    const timeout = setTimeout(() => {\n      if (conversation?.[settingKey] === inputValue) {\n        return;\n      }\n      setInputValue(conversation?.[settingKey]);\n    }, defaultDebouncedDelay * 1.25);\n\n    return () => clearTimeout(timeout);\n  }, [setInputValue, preventDelayedUpdate, conversation, inputValue, settingKey]);\n\n  /** Resets the local state if conversationId changed */\n  useEffect(() => {\n    const conversationId = conversation?.conversationId ?? '';\n    if (!conversationId) {\n      return;\n    }\n\n    if (idRef.current === conversationId) {\n      return;\n    }\n\n    idRef.current = conversationId;\n    setInputValue(defaultValue as T);\n  }, [setInputValue, conversation?.conversationId, defaultValue]);\n\n  /** Resets the local state if presetId changed */\n  useEffect(() => {\n    const presetId = preset?.presetId ?? '';\n    if (!presetId) {\n      return;\n    }\n\n    if (presetIdRef.current === presetId) {\n      return;\n    }\n\n    presetIdRef.current = presetId;\n    setInputValue(defaultValue as T);\n  }, [setInputValue, preset?.presetId, defaultValue]);\n}\n\nexport default useParameterEffects;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/usePresetIndexOptions.ts",
    "content": "import { useRecoilValue, useSetRecoilState } from 'recoil';\nimport type { TPreset, TPlugin } from '~/data-provider/data-provider/src';\nimport type { TSetOptionsPayload, TSetExample, TSetOption, TSetOptions } from '~/common';\nimport { useChatContext } from '~/Providers/ChatContext';\nimport { cleanupPreset } from '~/utils';\nimport store from '~/store';\n\ntype TUsePresetOptions = (preset?: TPreset | boolean | null) => TSetOptionsPayload | boolean;\n\nconst usePresetIndexOptions: TUsePresetOptions = (_preset) => {\n  const setShowPluginStoreDialog = useSetRecoilState(store.showPluginStoreDialog);\n  const availableTools = useRecoilValue(store.availableTools);\n  const { preset, setPreset } = useChatContext();\n\n  if (!_preset) {\n    return false;\n  }\n  const getConversation: () => TPreset | null = () => preset;\n\n  const setOptions: TSetOptions = (options) => {\n    const update = { ...options };\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  const setOption: TSetOption = (param) => (newValue) => {\n    const update = {};\n    update[param] = newValue;\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  const setExample: TSetExample = (i, type, newValue = null) => {\n    const update = {};\n    const current = preset?.examples?.slice() || [];\n    const currentExample = { ...current[i] } || {};\n    currentExample[type] = { content: newValue };\n    current[i] = currentExample;\n    update['examples'] = current;\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  const addExample: () => void = () => {\n    const update = {};\n    const current = preset?.examples?.slice() || [];\n    current.push({ input: { content: '' }, output: { content: '' } });\n    update['examples'] = current;\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  const removeExample: () => void = () => {\n    const update = {};\n    const current = preset?.examples?.slice() || [];\n    if (current.length <= 1) {\n      update['examples'] = [{ input: { content: '' }, output: { content: '' } }];\n      setPreset((prevState) =>\n        cleanupPreset({\n          preset: {\n            ...prevState,\n            ...update,\n          },\n        }),\n      );\n      return;\n    }\n    current.pop();\n    update['examples'] = current;\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  const setAgentOption: TSetOption = (param) => (newValue) => {\n    const editablePreset = JSON.parse(JSON.stringify(_preset));\n    const { agentOptions } = editablePreset;\n    agentOptions[param] = newValue;\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          agentOptions,\n        },\n      }),\n    );\n  };\n\n  function checkPluginSelection(value: string) {\n    if (!preset?.tools) {\n      return false;\n    }\n    return preset.tools.find((el) => {\n      if (typeof el === 'string') {\n        return el === value;\n      }\n      return el.pluginKey === value;\n    })\n      ? true\n      : false;\n  }\n\n  const setTools: (newValue: string, remove?: boolean) => void = (newValue, remove) => {\n    if (newValue === 'pluginStore') {\n      setShowPluginStoreDialog(true);\n      return;\n    }\n\n    const update = {};\n    const current =\n      preset?.tools\n        ?.map((tool: string | TPlugin) => {\n          if (typeof tool === 'string') {\n            return availableTools[tool];\n          }\n          return tool;\n        })\n        .filter((el) => !!el) || [];\n    const isSelected = checkPluginSelection(newValue);\n    const tool = availableTools[newValue];\n    if (isSelected || remove) {\n      update['tools'] = current.filter((el) => el.pluginKey !== newValue);\n    } else {\n      update['tools'] = [...current, tool];\n    }\n\n    setPreset((prevState) =>\n      cleanupPreset({\n        preset: {\n          ...prevState,\n          ...update,\n        },\n      }),\n    );\n  };\n\n  return {\n    setOption,\n    setExample,\n    addExample,\n    setOptions,\n    removeExample,\n    getConversation,\n    checkPluginSelection,\n    setAgentOption,\n    setTools,\n  };\n};\n\nexport default usePresetIndexOptions;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/usePresets.ts",
    "content": "import filenamify from 'filenamify';\nimport exportFromJSON from 'export-from-json';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useRecoilState, useSetRecoilState, useRecoilValue } from 'recoil';\nimport { useCreatePresetMutation, useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport type { TPreset, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport {\n  useUpdatePresetMutation,\n  useDeletePresetMutation,\n  useGetPresetsQuery,\n} from '~/data-provider';\nimport { cleanupPreset, removeUnavailableTools, getConvoSwitchLogic } from '~/utils';\nimport useDefaultConvo from '~/hooks/Conversations/useDefaultConvo';\nimport { useChatContext, useToastContext } from '~/Providers';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport { NotificationSeverity } from '~/common';\nimport useLocalize from '~/hooks/useLocalize';\nimport useNewConvo from '~/hooks/useNewConvo';\nimport store from '~/store';\n\nexport default function usePresets() {\n  const localize = useLocalize();\n  const hasLoaded = useRef(false);\n  const queryClient = useQueryClient();\n  const { showToast } = useToastContext();\n  const { user, isAuthenticated } = useAuthContext();\n\n  const modularChat = useRecoilValue(store.modularChat);\n  const availableTools = useRecoilValue(store.availableTools);\n  const setPresetModalVisible = useSetRecoilState(store.presetModalVisible);\n  const [_defaultPreset, setDefaultPreset] = useRecoilState(store.defaultPreset);\n  const presetsQuery = useGetPresetsQuery({ enabled: !!user && isAuthenticated });\n  const { preset, conversation, index, setPreset } = useChatContext();\n  const { data: modelsData } = useGetModelsQuery();\n  const { newConversation } = useNewConvo(index);\n\n  useEffect(() => {\n    if (modelsData?.initial) {\n      return;\n    }\n\n    const { data: presets } = presetsQuery;\n    if (_defaultPreset || !presets || hasLoaded.current) {\n      return;\n    }\n\n    if (presets && presets.length > 0 && user && presets[0].user !== user.id) {\n      presetsQuery.refetch();\n      return;\n    }\n\n    const defaultPreset = presets.find((p) => p.defaultPreset);\n    if (!defaultPreset) {\n      hasLoaded.current = true;\n      return;\n    }\n    setDefaultPreset(defaultPreset);\n    if (!conversation?.conversationId || conversation.conversationId === 'new') {\n      newConversation({ preset: defaultPreset, modelsData });\n    }\n    hasLoaded.current = true;\n    // dependencies are stable and only needed once\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [presetsQuery.data, user, modelsData]);\n\n  const setPresets = useCallback(\n    (presets: TPreset[]) => {\n      queryClient.setQueryData<TPreset[]>([QueryKeys.presets], presets);\n    },\n    [queryClient],\n  );\n\n  const deletePresetsMutation = useDeletePresetMutation({\n    onMutate: (preset) => {\n      if (!preset) {\n        setPresets([]);\n        return;\n      }\n      const previousPresets = presetsQuery.data ?? [];\n      if (previousPresets) {\n        setPresets(previousPresets.filter((p) => p.presetId !== preset.presetId));\n      }\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.presets]);\n    },\n    onError: (error) => {\n      queryClient.invalidateQueries([QueryKeys.presets]);\n      console.error('Error deleting the preset:', error);\n      showToast({\n        message: localize('com_endpoint_preset_delete_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n  });\n  const createPresetMutation = useCreatePresetMutation();\n  const updatePreset = useUpdatePresetMutation({\n    onSuccess: (data, preset) => {\n      const toastTitle = data.title ? `\"${data.title}\"` : localize('com_endpoint_preset_title');\n      let message = `${toastTitle} ${localize('com_ui_saved')}`;\n      if (data.defaultPreset && data.presetId !== _defaultPreset?.presetId) {\n        message = `${toastTitle} ${localize('com_endpoint_preset_default')}`;\n        setDefaultPreset(data);\n        newConversation({ preset: data });\n      } else if (preset.defaultPreset === false) {\n        setDefaultPreset(null);\n        message = `${toastTitle} ${localize('com_endpoint_preset_default_removed')}`;\n      }\n      showToast({\n        message,\n      });\n      queryClient.invalidateQueries([QueryKeys.presets]);\n    },\n    onError: (error) => {\n      console.error('Error updating the preset:', error);\n      showToast({\n        message: localize('com_endpoint_preset_save_error'),\n        severity: NotificationSeverity.ERROR,\n      });\n    },\n  });\n\n  const getDefaultConversation = useDefaultConvo();\n\n  const importPreset = (jsonPreset: TPreset) => {\n    createPresetMutation.mutate(\n      { ...jsonPreset },\n      {\n        onSuccess: () => {\n          showToast({\n            message: localize('com_endpoint_preset_import'),\n          });\n          queryClient.invalidateQueries([QueryKeys.presets]);\n        },\n        onError: (error) => {\n          console.error('Error uploading the preset:', error);\n          showToast({\n            message: localize('com_endpoint_preset_import_error'),\n            severity: NotificationSeverity.ERROR,\n          });\n        },\n      },\n    );\n  };\n\n  const onFileSelected = (jsonData: Record<string, unknown>) => {\n    const jsonPreset = { ...cleanupPreset({ preset: jsonData }), presetId: null };\n    importPreset(jsonPreset);\n  };\n\n  const onSelectPreset = (_newPreset: TPreset) => {\n    if (!_newPreset) {\n      return;\n    }\n\n    const newPreset = removeUnavailableTools(_newPreset, availableTools);\n\n    const toastTitle = newPreset.title\n      ? `\"${newPreset.title}\"`\n      : localize('com_endpoint_preset_title');\n\n    showToast({\n      message: `${toastTitle} ${localize('com_endpoint_preset_selected_title')}`,\n      showIcon: false,\n      duration: 750,\n    });\n\n    const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n\n    const {\n      shouldSwitch,\n      isNewModular,\n      newEndpointType,\n      isCurrentModular,\n      isExistingConversation,\n    } = getConvoSwitchLogic({\n      newEndpoint: newPreset.endpoint ?? '',\n      modularChat,\n      conversation,\n      endpointsConfig,\n    });\n\n    const isModular = isCurrentModular && isNewModular && shouldSwitch;\n    if (isExistingConversation && isModular) {\n      const currentConvo = getDefaultConversation({\n        /* target endpointType is necessary to avoid endpoint mixing */\n        conversation: { ...(conversation ?? {}), endpointType: newEndpointType },\n        preset: { ...newPreset, endpointType: newEndpointType },\n      });\n\n      /* We don't reset the latest message, only when changing settings mid-converstion */\n      newConversation({\n        template: currentConvo,\n        preset: currentConvo,\n        keepLatestMessage: true,\n        keepAddedConvos: true,\n      });\n      return;\n    }\n\n    newConversation({ preset: newPreset, keepAddedConvos: isModular });\n  };\n\n  const onChangePreset = (preset: TPreset) => {\n    setPreset(preset);\n    setPresetModalVisible(true);\n  };\n\n  const clearAllPresets = () => deletePresetsMutation.mutate(undefined);\n\n  const onDeletePreset = (preset: TPreset) => {\n    if (!confirm(localize('com_endpoint_preset_delete_confirm'))) {\n      return;\n    }\n    deletePresetsMutation.mutate(preset);\n  };\n\n  const submitPreset = () => {\n    if (!preset) {\n      return;\n    }\n\n    updatePreset.mutate(cleanupPreset({ preset }));\n  };\n\n  const onSetDefaultPreset = (preset: TPreset, remove = false) => {\n    updatePreset.mutate({ ...preset, defaultPreset: !remove });\n  };\n\n  const exportPreset = () => {\n    if (!preset) {\n      return;\n    }\n    const fileName = filenamify(preset.title || 'preset');\n    exportFromJSON({\n      data: cleanupPreset({ preset }),\n      fileName,\n      exportType: exportFromJSON.types.json,\n    });\n  };\n\n  return {\n    presetsQuery,\n    onSetDefaultPreset,\n    onFileSelected,\n    onSelectPreset,\n    onChangePreset,\n    clearAllPresets,\n    onDeletePreset,\n    submitPreset,\n    exportPreset,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useSearch.ts",
    "content": "import { useEffect, useState, useCallback } from 'react';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport type { UseInfiniteQueryResult } from '@tanstack/react-query';\nimport type { ConversationListResponse } from '~/data-provider/data-provider/src';\nimport { useSearchInfiniteQuery, useGetSearchEnabledQuery } from '~/data-provider';\nimport useNewConvo from '~/hooks/useNewConvo';\nimport store from '~/store';\n\nexport default function useSearchMessages({ isAuthenticated }: { isAuthenticated: boolean }) {\n  const navigate = useNavigate();\n  const location = useLocation();\n  const [pageNumber, setPageNumber] = useState(1);\n  const { switchToConversation } = useNewConvo();\n  const searchPlaceholderConversation = useCallback(() => {\n    switchToConversation({\n      conversationId: 'search',\n      title: 'Search',\n      endpoint: null,\n      createdAt: '',\n      updatedAt: '',\n    });\n  }, [switchToConversation]);\n\n  const searchQuery = useRecoilValue(store.searchQuery);\n  const setIsSearchEnabled = useSetRecoilState(store.isSearchEnabled);\n\n  const searchEnabledQuery = useGetSearchEnabledQuery({ enabled: isAuthenticated });\n  const searchQueryRes = useSearchInfiniteQuery(\n    { pageNumber: pageNumber.toString(), searchQuery: searchQuery, isArchived: false },\n    { enabled: isAuthenticated && !!searchQuery.length },\n  ) as UseInfiniteQueryResult<ConversationListResponse, unknown> | undefined;\n\n  useEffect(() => {\n    if (searchQuery && searchQuery.length > 0) {\n      navigate('/search', { replace: true });\n      return;\n    }\n\n    if (location.pathname && location.pathname.includes('/c/')) {\n      return;\n    }\n    // navigate('/c/new', { replace: true });  // 自动跳转新建会话\n    /* Disabled eslint rule because we don't want to run this effect when location changes */\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [navigate, searchQuery]);\n\n  useEffect(() => {\n    if (searchEnabledQuery.data === true) {\n      setIsSearchEnabled(searchEnabledQuery.data);\n    } else if (searchEnabledQuery.isError) {\n      console.error('Failed to get search enabled', searchEnabledQuery.error);\n    }\n  }, [\n    searchEnabledQuery.data,\n    searchEnabledQuery.error,\n    searchEnabledQuery.isError,\n    setIsSearchEnabled,\n  ]);\n\n  const onSearchSuccess = useCallback(\n    () => searchPlaceholderConversation(),\n    [searchPlaceholderConversation],\n  );\n\n  useEffect(() => {\n    //we use isInitialLoading here instead of isLoading because query is disabled by default\n    if (searchQueryRes?.data) {\n      onSearchSuccess();\n    }\n  }, [searchQueryRes?.data, searchQueryRes?.isInitialLoading, onSearchSuccess]);\n\n  return {\n    pageNumber,\n    searchQuery,\n    setPageNumber,\n    searchQueryRes,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useSetIndexOptions.ts",
    "content": "import { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { TPreset, TPlugin, TConversation, tConvoUpdateSchema } from '~/data-provider/data-provider/src';\nimport type { TSetExample, TSetOption, TSetOptionsPayload } from '~/common';\nimport usePresetIndexOptions from './usePresetIndexOptions';\nimport { useChatContext } from '~/Providers/ChatContext';\nimport store from '~/store';\n\ntype TUseSetOptions = (preset?: TPreset | boolean | null) => TSetOptionsPayload;\n\nconst useSetIndexOptions: TUseSetOptions = (preset = false) => {\n  const setShowPluginStoreDialog = useSetRecoilState(store.showPluginStoreDialog);\n  const availableTools = useRecoilValue(store.availableTools);\n  const { conversation, setConversation } = useChatContext();\n\n  const result = usePresetIndexOptions(preset);\n\n  if (result && typeof result !== 'boolean') {\n    return result;\n  }\n\n  const setOption: TSetOption = (param) => (newValue) => {\n    const update = {};\n    update[param] = newValue;\n\n    if (param === 'presetOverride') {\n      const currentOverride = conversation?.presetOverride || {};\n      update['presetOverride'] = {\n        ...currentOverride,\n        ...(newValue as unknown as Partial<TPreset>),\n      };\n    }\n\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          ...update,\n        }) as TConversation,\n    );\n  };\n\n  const setExample: TSetExample = (i, type, newValue = null) => {\n    const update = {};\n    const current = conversation?.examples?.slice() || [];\n    const currentExample = { ...current[i] } || {};\n    currentExample[type] = { content: newValue };\n    current[i] = currentExample;\n    update['examples'] = current;\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          ...update,\n        }) as TConversation,\n    );\n  };\n\n  const addExample: () => void = () => {\n    const update = {};\n    const current = conversation?.examples?.slice() || [];\n    current.push({ input: { content: '' }, output: { content: '' } });\n    update['examples'] = current;\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          ...update,\n        }) as TConversation,\n    );\n  };\n\n  const removeExample: () => void = () => {\n    const update = {};\n    const current = conversation?.examples?.slice() || [];\n    if (current.length <= 1) {\n      update['examples'] = [{ input: { content: '' }, output: { content: '' } }];\n      setConversation(\n        (prevState) =>\n          tConvoUpdateSchema.parse({\n            ...prevState,\n            ...update,\n          }) as TConversation,\n      );\n      return;\n    }\n    current.pop();\n    update['examples'] = current;\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          ...update,\n        }) as TConversation,\n    );\n  };\n\n  function checkPluginSelection(value: string) {\n    if (!conversation?.tools) {\n      return false;\n    }\n    return conversation.tools.find((el) => {\n      if (typeof el === 'string') {\n        return el === value;\n      }\n      return el.pluginKey === value;\n    })\n      ? true\n      : false;\n  }\n\n  const setAgentOption: TSetOption = (param) => (newValue) => {\n    const editableConvo = JSON.stringify(conversation);\n    const convo = JSON.parse(editableConvo);\n    const { agentOptions } = convo;\n    agentOptions[param] = newValue;\n\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          agentOptions,\n        }) as TConversation,\n    );\n  };\n\n  const setTools: (newValue: string, remove?: boolean) => void = (newValue, remove) => {\n    if (newValue === 'pluginStore') {\n      setShowPluginStoreDialog(true);\n      return;\n    }\n\n    const update = {};\n    const current =\n      conversation?.tools\n        ?.map((tool: string | TPlugin) => {\n          if (typeof tool === 'string') {\n            return availableTools[tool];\n          }\n          return tool;\n        })\n        .filter((el) => !!el) || [];\n    const isSelected = checkPluginSelection(newValue);\n    const tool = availableTools[newValue];\n    if (isSelected || remove) {\n      update['tools'] = current.filter((el) => el.pluginKey !== newValue);\n    } else {\n      update['tools'] = [...current, tool];\n    }\n\n    setConversation(\n      (prevState) =>\n        tConvoUpdateSchema.parse({\n          ...prevState,\n          ...update,\n        }) as TConversation,\n    );\n  };\n\n  return {\n    setTools,\n    setOption,\n    setExample,\n    addExample,\n    removeExample,\n    setAgentOption,\n    checkPluginSelection,\n  };\n};\n\nexport default useSetIndexOptions;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Conversations/useUpdateTagsInConvo.ts",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport type { ConversationListResponse } from '~/data-provider/data-provider/src';\nimport type { InfiniteData } from '@tanstack/react-query';\nimport type t from '~/data-provider/data-provider/src';\nimport { updateConvoFields } from '~/utils/convos';\n\nconst useUpdateTagsInConvo = () => {\n  const queryClient = useQueryClient();\n\n  // Update the queryClient cache with the new tag when a new tag is added/removed to a conversation\n  const updateTagsInConversation = (conversationId: string, tags: string[]) => {\n    // Update the tags for the current conversation\n    const currentConvo = queryClient.getQueryData<t.TConversation>([\n      QueryKeys.conversation,\n      conversationId,\n    ]);\n    if (!currentConvo) {\n      return;\n    }\n\n    const updatedConvo = {\n      ...currentConvo,\n      tags,\n    } as t.TConversation;\n    queryClient.setQueryData([QueryKeys.conversation, conversationId], updatedConvo);\n    queryClient.setQueryData<t.ConversationData>([QueryKeys.allConversations], (convoData) => {\n      if (!convoData) {\n        return convoData;\n      }\n      return updateConvoFields(\n        convoData,\n        {\n          conversationId: currentConvo.conversationId,\n          tags: updatedConvo.tags,\n        } as t.TConversation,\n        true,\n      );\n    });\n  };\n\n  // update the tag to newTag in all conversations when a tag is updated to a newTag\n  // The difference with updateTagsInConversation is that it adds or removes tags for a specific conversation,\n  // whereas this function is for changing the title of a specific tag.\n  const replaceTagsInAllConversations = (tag: string, newTag: string) => {\n    const data = queryClient.getQueryData<InfiniteData<ConversationListResponse>>([\n      QueryKeys.allConversations,\n    ]);\n\n    const conversationIdsWithTag = [] as string[];\n\n    // update tag to newTag in all conversations\n    const newData = JSON.parse(JSON.stringify(data)) as InfiniteData<ConversationListResponse>;\n    for (let pageIndex = 0; pageIndex < newData.pages.length; pageIndex++) {\n      const page = newData.pages[pageIndex];\n      page.conversations = page.conversations.map((conversation) => {\n        if (conversation.conversationId && conversation.tags?.includes(tag)) {\n          conversationIdsWithTag.push(conversation.conversationId);\n          conversation.tags = conversation.tags.map((t) => (t === tag ? newTag : t));\n        }\n        return conversation;\n      });\n    }\n    queryClient.setQueryData<InfiniteData<ConversationListResponse>>(\n      [QueryKeys.allConversations],\n      newData,\n    );\n\n    // update the tag to newTag from the cache of each conversation\n    for (let i = 0; i < conversationIdsWithTag.length; i++) {\n      const conversationId = conversationIdsWithTag[i];\n      const conversation = queryClient.getQueryData<t.TConversation>([\n        QueryKeys.conversation,\n        conversationId,\n      ]);\n      if (conversation && conversation.tags) {\n        const updatedConvo = {\n          ...conversation,\n          tags: conversation.tags.map((t) => (t === tag ? newTag : t)),\n        } as t.TConversation;\n        queryClient.setQueryData<t.TConversation>(\n          [QueryKeys.conversation, conversationId],\n          updatedConvo,\n        );\n      }\n    }\n  };\n\n  return { updateTagsInConversation, replaceTagsInAllConversations };\n};\n\nexport default useUpdateTagsInConvo;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/index.ts",
    "content": "export { default as useDeleteFilesFromTable } from './useDeleteFilesFromTable';\nexport { default as useSetFilesToDelete } from './useSetFilesToDelete';\nexport { default as useFileHandling } from './useFileHandling';\nexport { default as useFileDeletion } from './useFileDeletion';\nexport { default as useUpdateFiles } from './useUpdateFiles';\nexport { default as useDragHelpers } from './useDragHelpers';\nexport { default as useFileMap } from './useFileMap';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useDelayedUploadToast.ts",
    "content": "import { useState } from 'react';\nimport { useToastContext } from '~/Providers/ToastContext';\nimport useLocalize from '~/hooks/useLocalize';\n\nexport const useDelayedUploadToast = () => {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const [uploadTimers, setUploadTimers] = useState<Record<string, NodeJS.Timeout>>({});\n\n  const determineDelay = (fileSize: number): number => {\n    const baseDelay = 5000;\n    const additionalDelay = Math.floor(fileSize / 1000000) * 2000;\n    return baseDelay + additionalDelay;\n  };\n\n  const startUploadTimer = (fileId: string, fileName: string, fileSize: number) => {\n    const delay = determineDelay(fileSize);\n\n    if (uploadTimers[fileId]) {\n      clearTimeout(uploadTimers[fileId]);\n    }\n\n    const timer = setTimeout(() => {\n      const message = localize('com_ui_upload_delay', { 0: fileName });\n      // showToast({\n      //   message,\n      //   status: 'warning',\n      //   duration: 10000,\n      // });\n    }, delay);\n\n    setUploadTimers((prev) => ({ ...prev, [fileId]: timer }));\n  };\n\n  const clearUploadTimer = (fileId: string) => {\n    if (uploadTimers[fileId]) {\n      clearTimeout(uploadTimers[fileId]);\n      setUploadTimers((prev) => {\n        const { [fileId]: _, ...rest } = prev;\n        return rest;\n      });\n    }\n  };\n\n  return { startUploadTimer, clearUploadTimer };\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useDeleteFilesFromTable.tsx",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport type { BatchFile, TFile } from '~/data-provider/data-provider/src';\nimport { useDeleteFilesMutation } from '~/data-provider';\nimport useFileDeletion from './useFileDeletion';\n\nexport default function useDeleteFilesFromTable(callback?: () => void) {\n  const queryClient = useQueryClient();\n  const deletionMutation = useDeleteFilesMutation({\n    onMutate: async (variables) => {\n      const { files } = variables;\n      if (!files.length) {\n        return new Map<string, BatchFile>();\n      }\n\n      const filesToDeleteMap = files.reduce((map, file) => {\n        map.set(file.file_id, file);\n        return map;\n      }, new Map<string, BatchFile>());\n\n      return { filesToDeleteMap };\n    },\n    onSuccess: (data, variables, context) => {\n      console.log('Files deleted');\n      const { filesToDeleteMap } = context as { filesToDeleteMap: Map<string, BatchFile> };\n\n      queryClient.setQueryData([QueryKeys.files], (oldFiles: TFile[] | undefined) => {\n        const { files } = variables;\n        return files.length\n          ? oldFiles?.filter((file) => !filesToDeleteMap.has(file.file_id))\n          : oldFiles;\n      });\n      callback?.();\n    },\n    onError: (error) => {\n      console.log('Error deleting files:', error);\n      callback?.();\n    },\n  });\n\n  return useFileDeletion({ mutateAsync: deletionMutation.mutateAsync });\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useDragHelpers.ts",
    "content": "import { useQueryClient } from '@tanstack/react-query';\nimport { useMemo, useState } from 'react';\nimport type { DropTargetMonitor } from 'react-dnd';\nimport { useDrop } from 'react-dnd';\nimport { NativeTypes } from 'react-dnd-html5-backend';\nimport { useRecoilValue } from 'recoil';\nimport { File_Accept } from '~/common';\nimport { useGetBsConfig } from '~/data-provider';\nimport type * as t from '~/data-provider/data-provider/src';\nimport {\n  AgentCapabilities,\n  EModelEndpoint,\n  isAgentsEndpoint,\n  QueryKeys,\n} from '~/data-provider/data-provider/src';\nimport store from '~/store';\nimport useFileHandling from './useFileHandling';\nimport { useToastContext } from '~/Providers';\nimport useLocalize from '../useLocalize';\n\nexport default function useDragHelpers(isLingsi) {\n  const queryClient = useQueryClient();\n  const { handleFiles } = useFileHandling();\n  const [showModal, setShowModal] = useState(false);\n  const [draggedFiles, setDraggedFiles] = useState<File[]>([]);\n  const conversation = useRecoilValue(store.conversationByIndex(0)) || undefined;\n  const localize = useLocalize();\n\n  const handleOptionSelect = (toolResource: string | undefined) => {\n    handleFiles(draggedFiles, toolResource);\n    setShowModal(false);\n    setDraggedFiles([]);\n  };\n\n  const { data: bsConfig } = useGetBsConfig()\n  const accept = useMemo(() => {\n    return bsConfig?.enable_etl4lm\n      ? File_Accept.Linsight_Etl4lm\n      : File_Accept.Linsight\n  }, [bsConfig])\n\n  const isAgents = useMemo(\n    () => isAgentsEndpoint(conversation?.endpoint),\n    [conversation?.endpoint],\n  );\n\n  const { showToast } = useToastContext();\n  const [{ canDrop, isOver }, drop] = useDrop(\n    () => ({\n      accept: [NativeTypes.FILE],\n      drop(item: { files: File[] }) {\n        console.log('drop', item.files);\n        // Split the accepted file extensions\n        const acceptedExtensions = accept\n          ? accept.split(',')\n            .map(ext => ext.trim().toLowerCase().replace(/^\\./, ''))  // Normalize extensions (remove leading dots)\n          : [];\n\n        // Check if any file has an invalid extension  // TODO 迁移到src/utils/files.ts（267行）\n        const invalidFiles = item.files.filter(file => {\n          const fileExtension = file.name.split('.').pop()?.toLowerCase();\n          return fileExtension && !acceptedExtensions.includes(fileExtension);\n        });\n\n        if (invalidFiles.length > 0) {\n          const uniqueExtensions = [...new Set(\n            invalidFiles\n              .map(f => f.name.split('.').pop()?.toLowerCase())\n              .filter(Boolean)\n          )];\n          showToast({ message: localize('com_unsupported_file_type') + uniqueExtensions.join(','), status: 'error' });\n          return;\n        }\n        if (!isAgents) {\n          handleFiles(item.files);\n          return;\n        }\n\n        const endpointsConfig = queryClient.getQueryData<t.TEndpointsConfig>([QueryKeys.endpoints]);\n        const agentsConfig = endpointsConfig?.[EModelEndpoint.agents];\n        const codeEnabled =\n          agentsConfig?.capabilities?.includes(AgentCapabilities.execute_code) === true;\n        const fileSearchEnabled =\n          agentsConfig?.capabilities?.includes(AgentCapabilities.file_search) === true;\n        if (!codeEnabled && !fileSearchEnabled) {\n          handleFiles(item.files);\n          return;\n        }\n        setDraggedFiles(item.files);\n        setShowModal(true);\n      },\n      canDrop: () => true,\n      collect: (monitor: DropTargetMonitor) => ({\n        isOver: monitor.isOver(),\n        canDrop: monitor.canDrop(),\n      }),\n    }),\n    [isLingsi],\n  );\n\n  return {\n    canDrop,\n    isOver,\n    drop,\n    showModal,\n    setShowModal,\n    draggedFiles,\n    handleOptionSelect,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useFileDeletion.ts",
    "content": "import debounce from 'lodash/debounce';\nimport { FileSources, EToolResources, removeNullishValues } from '~/data-provider/data-provider/src';\nimport { useCallback, useState, useEffect } from 'react';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { UseMutateAsyncFunction } from '@tanstack/react-query';\nimport type { ExtendedFile, GenericSetter } from '~/common';\nimport useSetFilesToDelete from './useSetFilesToDelete';\n\ntype FileMapSetter = GenericSetter<Map<string, ExtendedFile>>;\n\nconst useFileDeletion = ({\n  mutateAsync,\n  agent_id,\n  assistant_id,\n  tool_resource,\n}: {\n  mutateAsync: UseMutateAsyncFunction<t.DeleteFilesResponse, unknown, t.DeleteFilesBody, unknown>;\n  agent_id?: string;\n  assistant_id?: string;\n  tool_resource?: EToolResources;\n}) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const [_batch, setFileDeleteBatch] = useState<t.BatchFile[]>([]);\n  const setFilesToDelete = useSetFilesToDelete();\n\n  const executeBatchDelete = useCallback(\n    ({\n      filesToDelete,\n      agent_id,\n      assistant_id,\n      tool_resource,\n    }: {\n      filesToDelete: t.BatchFile[];\n      agent_id?: string;\n      assistant_id?: string;\n      tool_resource?: EToolResources;\n    }) => {\n      const payload = removeNullishValues({\n        agent_id,\n        assistant_id,\n        tool_resource,\n      });\n      console.log('Deleting files:', filesToDelete, payload);\n      mutateAsync({ files: filesToDelete, ...payload });\n      setFileDeleteBatch([]);\n    },\n    [mutateAsync],\n  );\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const debouncedDelete = useCallback(debounce(executeBatchDelete, 1000), []);\n\n  useEffect(() => {\n    // Cleanup function for debouncedDelete when component unmounts or before re-render\n    return () => debouncedDelete.cancel();\n  }, [debouncedDelete]);\n\n  const deleteFile = useCallback(\n    ({ file: _file, setFiles }: { file: ExtendedFile | t.TFile; setFiles?: FileMapSetter }) => {\n      const {\n        file_id,\n        temp_file_id = '',\n        filepath = '',\n        source = FileSources.local,\n        embedded,\n        attached = false,\n      } = _file as t.TFile & { attached?: boolean };\n\n      // const progress = _file['progress'] ?? 1;\n\n      // if (progress < 1) {\n      //   return;\n      // }\n      const file: t.BatchFile = {\n        file_id,\n        embedded,\n        filepath,\n        source,\n      };\n\n      if (setFiles) {\n        setFiles((currentFiles) => {\n          const updatedFiles = new Map(currentFiles);\n          updatedFiles.delete(file_id);\n          updatedFiles.delete(temp_file_id);\n          const files = Object.fromEntries(updatedFiles);\n          setFilesToDelete(files);\n          return updatedFiles;\n        });\n      }\n\n      if (attached) {\n        return;\n      }\n\n      setFileDeleteBatch((prevBatch) => {\n        const newBatch = [...prevBatch, file];\n        debouncedDelete({\n          filesToDelete: newBatch,\n          agent_id,\n          assistant_id,\n          tool_resource,\n        });\n        return newBatch;\n      });\n    },\n    [debouncedDelete, setFilesToDelete, agent_id, assistant_id, tool_resource],\n  );\n\n  const deleteFiles = useCallback(\n    ({ files, setFiles }: { files: ExtendedFile[] | t.TFile[]; setFiles?: FileMapSetter }) => {\n      const batchFiles = files.map((_file) => {\n        const { file_id, embedded, filepath = '', source = FileSources.local } = _file;\n\n        return {\n          source,\n          file_id,\n          filepath,\n          embedded,\n        };\n      });\n\n      if (setFiles) {\n        setFiles((currentFiles) => {\n          const updatedFiles = new Map(currentFiles);\n          batchFiles.forEach((file) => {\n            updatedFiles.delete(file.file_id);\n          });\n          const filesToUpdate = Object.fromEntries(updatedFiles);\n          setFilesToDelete(filesToUpdate);\n          return updatedFiles;\n        });\n      }\n\n      setFileDeleteBatch((prevBatch) => {\n        const newBatch = [...prevBatch, ...batchFiles];\n        debouncedDelete({\n          filesToDelete: newBatch,\n          agent_id,\n          assistant_id,\n        });\n        return newBatch;\n      });\n    },\n    [debouncedDelete, setFilesToDelete, agent_id, assistant_id],\n  );\n\n  return { deleteFile, deleteFiles };\n};\n\nexport default useFileDeletion;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useFileHandling.ts",
    "content": "import { v4 } from 'uuid';\nimport debounce from 'lodash/debounce';\nimport { useQueryClient } from '@tanstack/react-query';\nimport React, { useState, useEffect, useCallback, useRef, useMemo } from 'react';\nimport {\n  QueryKeys,\n  EModelEndpoint,\n  mergeFileConfig,\n  isAgentsEndpoint,\n  isAssistantsEndpoint,\n  defaultAssistantsVersion,\n  fileConfig as defaultFileConfig,\n} from '~/data-provider/data-provider/src';\nimport type { TEndpointsConfig, TError } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile, FileSetter } from '~/common';\nimport { useUploadFileMutation, useGetFileConfig } from '~/data-provider';\nimport useLocalize, { TranslationKeys } from '~/hooks/useLocalize';\nimport { useDelayedUploadToast } from './useDelayedUploadToast';\nimport { useToastContext } from '~/Providers/ToastContext';\nimport { useChatContext } from '~/Providers/ChatContext';\nimport { logger, validateFiles } from '~/utils';\nimport useUpdateFiles from './useUpdateFiles';\nimport { bishengConfState } from '~/pages/appChat/store/atoms';\nimport { useRecoilState } from 'recoil';\n\ntype UseFileHandling = {\n  overrideEndpoint?: EModelEndpoint;\n  fileSetter?: FileSetter;\n  fileFilter?: (file: File) => boolean;\n  additionalMetadata?: Record<string, string | undefined>;\n};\n\nconst useFileHandling = (params?: UseFileHandling) => {\n  const localize = useLocalize();\n  const queryClient = useQueryClient();\n  const { showToast } = useToastContext();\n  const [errors, setErrors] = useState<string[]>([]);\n  const abortControllerRef = useRef<AbortController | null>(null);\n  const { startUploadTimer, clearUploadTimer } = useDelayedUploadToast();\n  const { files, setFiles, setFilesLoading, conversation } = useChatContext();\n  const setError = (error: string) => setErrors((prevErrors) => [...prevErrors, error]);\n  const { addFile, replaceFile, updateFileById, deleteFileById } = useUpdateFiles(\n    params?.fileSetter ?? setFiles,\n  );\n\n  const agent_id = params?.additionalMetadata?.agent_id ?? '';\n  const assistant_id = params?.additionalMetadata?.assistant_id ?? '';\n\n  const { data: fileConfig = null } = useGetFileConfig({\n    select: (data) => mergeFileConfig(data),\n  });\n\n  const endpoint = useMemo(\n    () =>\n      params?.overrideEndpoint ?? conversation?.endpointType ?? conversation?.endpoint ?? 'default',\n    [params?.overrideEndpoint, conversation?.endpointType, conversation?.endpoint],\n  );\n\n  const displayToast = useCallback(() => {\n    if (errors.length > 1) {\n      // TODO: this should not be a dynamic localize input!!\n      const errorList = Array.from(new Set(errors))\n        .map((e, i) => `${i > 0 ? '• ' : ''}${localize(e as TranslationKeys) || e}\\n`)\n        .join('');\n      showToast({\n        message: errorList,\n        status: 'error',\n        duration: 5000,\n      });\n    } else if (errors.length === 1) {\n      // TODO: this should not be a dynamic localize input!!\n      const message = localize(errors[0] as TranslationKeys) || errors[0];\n      showToast({\n        message,\n        status: 'error',\n        duration: 5000,\n      });\n    }\n\n    setErrors([]);\n  }, [errors, showToast, localize]);\n\n  const debouncedDisplayToast = debounce(displayToast, 250);\n\n  useEffect(() => {\n    if (errors.length > 0) {\n      debouncedDisplayToast();\n    }\n\n    return () => debouncedDisplayToast.cancel();\n  }, [errors, debouncedDisplayToast]);\n\n  const uploadFile = useUploadFileMutation(\n    {\n      onSuccess: (data) => {\n        clearUploadTimer(data.temp_file_id);\n        console.log('upload success', data);\n        if (agent_id) {\n          queryClient.refetchQueries([QueryKeys.agent, agent_id]);\n          return;\n        }\n        updateFileById(\n          data.temp_file_id,\n          {\n            progress: 0.9,\n            filepath: data.filepath,\n          },\n          assistant_id ? true : false,\n        );\n\n        setTimeout(() => {\n          updateFileById(\n            data.temp_file_id,\n            {\n              progress: 1,\n              file_id: data.file_id,\n              temp_file_id: data.temp_file_id,\n              filepath: data.filepath,\n              type: data.type,\n              height: data.height,\n              width: data.width,\n              filename: data.filename,\n              source: data.source,\n              embedded: data.embedded,\n            },\n            assistant_id ? true : false,\n          );\n        }, 300);\n      },\n      onError: (_error, body) => {\n        const error = _error as TError | undefined;\n        console.log('upload error', error);\n        const file_id = body.get('file_id');\n        const file_name = body.get('file_name');\n        clearUploadTimer(file_id as string);\n        deleteFileById(file_id as string);\n        if (error?.code !== 'ERR_CANCELED') {\n          setError(file_name + ' 解析失败');\n        }\n        // const errorMessage =\n        //   error?.code === 'ERR_CANCELED'\n        //     ? 'com_error_files_upload_canceled'\n        //     : file_name + ' 解析失败';\n        // // : (error?.response?.data?.message ?? 'com_error_files_upload');\n        // setError(errorMessage);\n      },\n    }\n  );\n\n  const startUpload = async (extendedFile: ExtendedFile) => {\n    const filename = extendedFile.file?.name ?? 'File';\n    startUploadTimer(extendedFile.file_id, filename, extendedFile.size);\n\n    const formData = new FormData();\n    formData.append('endpoint', endpoint);\n    formData.append('file', extendedFile.file as File, encodeURIComponent(filename));\n    formData.append('file_id', extendedFile.file_id);\n    formData.append('file_name', extendedFile.file?.name ?? '');\n\n    const width = extendedFile.width ?? 0;\n    const height = extendedFile.height ?? 0;\n    if (width) {\n      formData.append('width', width.toString());\n    }\n    if (height) {\n      formData.append('height', height.toString());\n    }\n\n    const metadata = params?.additionalMetadata ?? {};\n    if (params?.additionalMetadata) {\n      for (const [key, value = ''] of Object.entries(metadata)) {\n        if (value) {\n          formData.append(key, value);\n        }\n      }\n    }\n\n    if (isAgentsEndpoint(endpoint)) {\n      if (!agent_id) {\n        formData.append('message_file', 'true');\n      }\n      const tool_resource = extendedFile.tool_resource;\n      if (tool_resource != null) {\n        formData.append('tool_resource', tool_resource);\n      }\n      if (conversation?.agent_id != null && formData.get('agent_id') == null) {\n        formData.append('agent_id', conversation.agent_id);\n      }\n    }\n\n    if (!isAssistantsEndpoint(endpoint)) {\n      uploadFile.mutate({ body: formData, signal: extendedFile.abortController.signal });\n      return;\n    }\n\n    const convoModel = conversation?.model ?? '';\n    const convoAssistantId = conversation?.assistant_id ?? '';\n\n    if (!assistant_id) {\n      formData.append('message_file', 'true');\n    }\n\n    const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n    const version = endpointsConfig?.[endpoint]?.version ?? defaultAssistantsVersion[endpoint];\n\n    if (!assistant_id && convoAssistantId) {\n      formData.append('version', version);\n      formData.append('model', convoModel);\n      formData.append('assistant_id', convoAssistantId);\n    }\n\n    const formVersion = (formData.get('version') ?? '') as string;\n    if (!formVersion) {\n      formData.append('version', version);\n    }\n\n    const formModel = (formData.get('model') ?? '') as string;\n    if (!formModel) {\n      formData.append('model', convoModel);\n    }\n\n    uploadFile.mutate(formData);\n  };\n\n  const loadImage = (extendedFile: ExtendedFile, preview: string) => {\n    const img = new Image();\n    img.onload = async () => {\n      extendedFile.width = img.width;\n      extendedFile.height = img.height;\n      extendedFile = {\n        ...extendedFile,\n        progress: 0.6,\n      };\n      replaceFile(extendedFile);\n\n      await startUpload(extendedFile);\n      // URL.revokeObjectURL(preview);\n    };\n    img.src = preview;\n  };\n\n  const [config] = useRecoilState(bishengConfState)\n  const handleFiles = async (_files: FileList | File[], _toolResource?: string) => {\n    // abortControllerRef.current = new AbortController();\n    const fileList = Array.from(_files);\n    /* Validate files */\n    let filesAreValid: boolean;\n\n    try {\n      filesAreValid = validateFiles({\n        files,\n        fileList,\n        setError,\n        showToast,\n        localize,\n        size: config?.uploaded_files_maximum_size || 200,\n        endpointFileConfig:\n          fileConfig?.endpoints[endpoint] ??\n          fileConfig?.endpoints.default ??\n          defaultFileConfig.endpoints[endpoint] ??\n          defaultFileConfig.endpoints.default,\n      });\n    } catch (error) {\n      console.error('file validation error', error);\n      setError('com_error_files_validation');\n      return;\n    }\n    if (!filesAreValid) {\n      setFilesLoading(false);\n      return;\n    }\n\n    /* Process files */\n    for (const originalFile of fileList) {\n      const file_id = v4();\n      try {\n        const preview = URL.createObjectURL(originalFile);\n        const extendedFile: ExtendedFile = {\n          file_id,\n          file: originalFile,\n          type: originalFile.type,\n          preview,\n          progress: 0.2,\n          size: originalFile.size,\n          abortController: new AbortController()\n        };\n\n        if (_toolResource != null && _toolResource !== '') {\n          extendedFile.tool_resource = _toolResource;\n        }\n\n        const isImage = originalFile.type.split('/')[0] === 'image';\n        const tool_resource =\n          extendedFile.tool_resource ?? params?.additionalMetadata?.tool_resource;\n        if (isAgentsEndpoint(endpoint) && !isImage && tool_resource == null) {\n          /** Note: this needs to be removed when we can support files to providers */\n          setError('com_error_files_unsupported_capability');\n          continue;\n        }\n\n        addFile(extendedFile);\n\n        if (isImage) {\n          loadImage(extendedFile, preview);\n          continue;\n        }\n\n        await startUpload(extendedFile);\n      } catch (error) {\n        deleteFileById(file_id);\n        console.log('file handling error', error);\n        setError('com_error_files_process');\n      }\n    }\n  };\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>, _toolResource?: string) => {\n    event.stopPropagation();\n    if (event.target.files) {\n      setFilesLoading(true);\n      handleFiles(event.target.files, _toolResource);\n      // reset the input\n      event.target.value = '';\n    }\n  };\n\n  const abortUpload = (file) => {\n    if (file.abortController) {\n      logger.log('files', 'Aborting upload');\n      file.abortController.abort('User aborted upload');\n      file.abortController = null;\n    } else if (abortControllerRef.current) {\n      logger.log('files', 'Aborting upload');\n      abortControllerRef.current.abort('User aborted upload');\n      abortControllerRef.current = null;\n    }\n  };\n\n  return {\n    handleFileChange,\n    handleFiles,\n    abortUpload,\n    setFiles,\n    files,\n  };\n};\n\nexport default useFileHandling;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useFileMap.ts",
    "content": "import { useGetFiles } from '~/data-provider';\nimport { mapFiles } from '~/utils';\n\nexport default function useFileMap({ isAuthenticated }: { isAuthenticated: boolean }) {\n  const { data: fileMap } = useGetFiles({\n    select: mapFiles,\n    enabled: isAuthenticated,\n  });\n\n  return fileMap;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useSetFilesToDelete.ts",
    "content": "import { LocalStorageKeys } from '~/data-provider/data-provider/src';\n\nexport default function useSetFilesToDelete() {\n  const setFilesToDelete = (files: Record<string, unknown>) =>\n    localStorage.setItem(LocalStorageKeys.FILES_TO_DELETE, JSON.stringify(files));\n  return setFilesToDelete;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Files/useUpdateFiles.ts",
    "content": "import type { ExtendedFile, FileSetter } from '~/common';\nimport useSetFilesToDelete from './useSetFilesToDelete';\n\nexport default function useUpdateFiles(setFiles: FileSetter) {\n  const setFilesToDelete = useSetFilesToDelete();\n\n  const addFile = (newFile: ExtendedFile) => {\n    setFiles((currentFiles) => {\n      const updatedFiles = new Map(currentFiles);\n      updatedFiles.set(newFile.file_id, newFile);\n      return updatedFiles;\n    });\n  };\n\n  const replaceFile = (newFile: ExtendedFile) => {\n    setFiles((currentFiles) => {\n      const updatedFiles = new Map(currentFiles);\n      updatedFiles.set(newFile.file_id, newFile);\n      return updatedFiles;\n    });\n  };\n\n  const updateFileById = (fileId: string, updates: Partial<ExtendedFile>, isEntityFile = false) => {\n    setFiles((currentFiles) => {\n      if (!currentFiles.has(fileId)) {\n        console.warn(`File with id ${fileId} not found.`);\n        return currentFiles;\n      }\n\n      const updatedFiles = new Map(currentFiles);\n      const currentFile = updatedFiles.get(fileId);\n      if (!currentFile) {\n        console.warn(`File with id ${fileId} not found.`);\n        return currentFiles;\n      }\n      updatedFiles.set(fileId, { ...currentFile, ...updates });\n      const filepath = updates['filepath'] ?? '';\n      if (filepath && updates['progress'] !== 1 && !isEntityFile) {\n        const files = Object.fromEntries(updatedFiles);\n        setFilesToDelete(files);\n      }\n\n      return updatedFiles;\n    });\n  };\n\n  const deleteFileById = (fileId: string) => {\n    setFiles((currentFiles) => {\n      const updatedFiles = new Map(currentFiles);\n      if (updatedFiles.has(fileId)) {\n        updatedFiles.delete(fileId);\n      } else {\n        console.warn(`File with id ${fileId} not found.`);\n      }\n\n      const files = Object.fromEntries(updatedFiles);\n      setFilesToDelete(files);\n      return updatedFiles;\n    });\n  };\n\n  return {\n    addFile,\n    replaceFile,\n    updateFileById,\n    deleteFileById,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Generic/index.ts",
    "content": "export * from './useLazyEffect';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Generic/useLazyEffect.ts",
    "content": "/* eslint-disable react-hooks/exhaustive-deps */\n// https://stackoverflow.com/a/67504622/51500\nimport { DependencyList, EffectCallback, useCallback, useEffect, useRef } from 'react';\nimport debounce from 'lodash/debounce';\n\nexport function useLazyEffect(effect: EffectCallback, deps: DependencyList = [], wait = 300) {\n  const cleanUp = useRef<void | (() => void)>();\n  const effectRef = useRef<EffectCallback>();\n  effectRef.current = useCallback(effect, deps);\n  const lazyEffect = useCallback(\n    debounce(() => (cleanUp.current = effectRef.current?.()), wait),\n    [],\n  );\n  useEffect(lazyEffect, deps);\n  useEffect(() => {\n    return () => (cleanUp.current instanceof Function ? cleanUp.current() : undefined);\n  }, []);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/index.ts",
    "content": "export * from './useAutoSave';\nexport { default as useUserKey } from './useUserKey';\nexport { default as useDebounce } from './useDebounce';\nexport { default as useTextarea } from './useTextarea';\nexport { default as useCombobox } from './useCombobox';\nexport { default as useQueryParams } from './useQueryParams';\nexport { default as useHandleKeyUp } from './useHandleKeyUp';\nexport { default as useRequiresKey } from './useRequiresKey';\nexport { default as useMultipleKeys } from './useMultipleKeys';\nexport { default as useSpeechToText } from './useSpeechToText';\nexport { default as useTextToSpeech } from './useTextToSpeech';\nexport { default as useGetAudioSettings } from './useGetAudioSettings';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useAutoSave.ts",
    "content": "import debounce from 'lodash/debounce';\nimport { SetterOrUpdater, useRecoilValue } from 'recoil';\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { LocalStorageKeys, TFile } from '~/data-provider/data-provider/src';\nimport type { ExtendedFile } from '~/common';\nimport { useChatFormContext } from '~/Providers';\nimport { useGetFiles } from '~/data-provider';\nimport store from '~/store';\n\nexport const useAutoSave = ({\n  conversationId,\n  textAreaRef,\n  files,\n  dailyFiles,\n  setDailyFiles,\n}: {\n  conversationId?: string | null;\n  textAreaRef?: React.RefObject<HTMLTextAreaElement>;\n  files: Map<string, ExtendedFile>;\n  dailyFiles: Map<string, ExtendedFile>;\n  setDailyFiles: SetterOrUpdater<Map<string, ExtendedFile>>;\n}) => {\n  // setting for auto-save\n  const { setValue } = useChatFormContext();\n  const saveDrafts = useRecoilValue<boolean>(store.saveDrafts);\n\n  const [currentConversationId, setCurrentConversationId] = useState<string | null>(null);\n  const fileIds = useMemo(() => Array.from(dailyFiles.keys()), [dailyFiles]);\n  const { data: fileList } = useGetFiles<TFile[]>();\n\n  const encodeBase64 = (plainText: string): string => {\n    try {\n      const textBytes = new TextEncoder().encode(plainText);\n      return btoa(String.fromCharCode(...textBytes));\n    } catch (e) {\n      return '';\n    }\n  };\n\n  const decodeBase64 = (base64String: string): string => {\n    try {\n      const bytes = atob(base64String);\n      const uint8Array = new Uint8Array(bytes.length);\n      for (let i = 0; i < bytes.length; i++) {\n        uint8Array[i] = bytes.charCodeAt(i);\n      }\n      return new TextDecoder().decode(uint8Array);\n    } catch (e) {\n      return '';\n    }\n  };\n\n  const restoreFiles = useCallback(\n    (id: string) => {\n      const filesDraft = JSON.parse(\n        (localStorage.getItem(`${LocalStorageKeys.FILES_DRAFT}${id}`) ?? '') || '[]',\n      ) as string[];\n\n      if (filesDraft.length === 0) {\n        setDailyFiles(new Map());\n        return;\n      }\n\n      // Retrieve files stored in localStorage from files in fileList and set them to `setFiles`\n      // If a file is found with `temp_file_id`, use `temp_file_id` as a key in `setFiles`\n      filesDraft.forEach((fileId) => {\n        const fileData = fileList?.find((f) => f.file_id === fileId);\n        const tempFileData = fileList?.find((f) => f.temp_file_id === fileId);\n        const { fileToRecover, fileIdToRecover } = fileData\n          ? { fileToRecover: fileData, fileIdToRecover: fileId }\n          : {\n            fileToRecover: tempFileData,\n            fileIdToRecover: (tempFileData?.temp_file_id ?? '') || fileId,\n          };\n\n        if (fileToRecover) {\n          setDailyFiles((currentFiles) => {\n            const updatedFiles = new Map(currentFiles);\n            updatedFiles.set(fileIdToRecover, {\n              ...fileToRecover,\n              progress: 1,\n              attached: true,\n              size: fileToRecover.bytes,\n            });\n            return updatedFiles;\n          });\n        }\n      });\n    },\n    [fileList, setDailyFiles],\n  );\n\n  const restoreText = useCallback(\n    (id: string) => {\n      const savedDraft = (localStorage.getItem(`${LocalStorageKeys.TEXT_DRAFT}${id}`) ?? '') || '';\n      setValue('text', decodeBase64(savedDraft));\n    },\n    [setValue],\n  );\n\n  const saveText = useCallback(\n    (id: string) => {\n      if (!textAreaRef?.current) {\n        return;\n      }\n      // Save the draft of the current conversation before switching\n      if (textAreaRef.current.value === '') {\n        localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${id}`);\n      } else {\n        localStorage.setItem(\n          `${LocalStorageKeys.TEXT_DRAFT}${id}`,\n          encodeBase64(textAreaRef.current.value),\n        );\n      }\n    },\n    [textAreaRef],\n  );\n\n  useEffect(() => {\n    // This useEffect is responsible for setting up and cleaning up the auto-save functionality\n    // for the text area input. It saves the text to localStorage with a debounce to prevent\n    // excessive writes.\n    if (!saveDrafts || conversationId == null || conversationId === '') {\n      return;\n    }\n\n    const handleInput = debounce(() => {\n      if (textAreaRef?.current && textAreaRef.current.value) {\n        localStorage.setItem(\n          `${LocalStorageKeys.TEXT_DRAFT}${conversationId}`,\n          encodeBase64(textAreaRef.current.value),\n        );\n      } else {\n        localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${conversationId}`);\n      }\n    }, 1000);\n\n    const textArea = textAreaRef?.current;\n    if (textArea) {\n      textArea.addEventListener('input', handleInput);\n    }\n\n    return () => {\n      if (textArea) {\n        textArea.removeEventListener('input', handleInput);\n      }\n      handleInput.cancel();\n    };\n  }, [conversationId, saveDrafts, textAreaRef]);\n\n  useEffect(() => {\n    // This useEffect is responsible for saving the current conversation's draft and\n    // restoring the new conversation's draft when switching between conversations.\n    // It handles both text and file drafts, ensuring that the user's input is preserved\n    // across different conversations.\n\n    if (!saveDrafts || conversationId == null || conversationId === '') {\n      return;\n    }\n    if (conversationId === currentConversationId) {\n      return;\n    }\n\n    // clear attachment files when switching conversation\n    setDailyFiles(new Map());\n\n    try {\n      if (currentConversationId != null && currentConversationId) {\n        saveText(currentConversationId);\n      }\n\n      restoreText(conversationId);\n      restoreFiles(conversationId);\n    } catch (e) {\n      console.error(e);\n    }\n\n    setCurrentConversationId(conversationId);\n  }, [\n    conversationId,\n    currentConversationId,\n    restoreFiles,\n    restoreText,\n    saveDrafts,\n    saveText,\n    setDailyFiles,\n  ]);\n\n  useEffect(() => {\n    // This useEffect is responsible for saving or removing the current conversation's file drafts\n    // in localStorage whenever the file attachments change.\n    // It ensures that the file drafts are kept up-to-date and can be restored\n    // when the conversation is revisited.\n\n    if (\n      !saveDrafts ||\n      conversationId == null ||\n      conversationId === '' ||\n      currentConversationId !== conversationId\n    ) {\n      return;\n    }\n\n    if (fileIds.length === 0) {\n      localStorage.removeItem(`${LocalStorageKeys.FILES_DRAFT}${conversationId}`);\n    } else {\n      localStorage.setItem(\n        `${LocalStorageKeys.FILES_DRAFT}${conversationId}`,\n        JSON.stringify(fileIds),\n      );\n    }\n  }, [dailyFiles, conversationId, saveDrafts, currentConversationId, fileIds]);\n\n  const clearDraft = useCallback(() => {\n    if (conversationId != null && conversationId) {\n      localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${conversationId}`);\n      localStorage.removeItem(`${LocalStorageKeys.FILES_DRAFT}${conversationId}`);\n    }\n  }, [conversationId]);\n\n  return { clearDraft };\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useCombobox.ts",
    "content": "import { useMemo, useState } from 'react';\nimport { matchSorter } from 'match-sorter';\nimport type { OptionWithIcon, MentionOption } from '~/common';\n\nexport default function useCombobox({\n  value,\n  options,\n}: {\n  value: string;\n  options: Array<OptionWithIcon | MentionOption>;\n}) {\n  const [open, setOpen] = useState(false);\n  const [searchValue, setSearchValue] = useState('');\n\n  const matches = useMemo(() => {\n    if (!searchValue) {\n      return options;\n    }\n    const keys = ['label', 'value'];\n    const matches = matchSorter(options, searchValue, { keys });\n    // Radix Select does not work if we don't render the selected item, so we\n    // make sure to include it in the list of matches.\n    const selectedItem = options.find((currentItem) => currentItem.value === value);\n    if (selectedItem && !matches.includes(selectedItem)) {\n      matches.push(selectedItem);\n    }\n    return matches;\n  }, [searchValue, value, options]);\n\n  return {\n    open,\n    setOpen,\n    searchValue,\n    setSearchValue,\n    matches,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useDebounce.ts",
    "content": "import { useState, useEffect } from 'react';\n\nfunction useDebounce(value: string, delay: number) {\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  useEffect(() => {\n    const handler = setTimeout(() => {\n      setDebouncedValue(value);\n    }, delay);\n\n    return () => {\n      clearTimeout(handler);\n    };\n  }, [value, delay]);\n\n  return debouncedValue;\n}\n\nexport default useDebounce;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useGetAudioSettings.ts",
    "content": "import { useMemo } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport store from '~/store';\n\nconst useGetAudioSettings = () => {\n  const engineSTT = useRecoilValue<string>(store.engineSTT);\n  const engineTTS = useRecoilValue<string>(store.engineTTS);\n\n  const speechToTextEndpoint = engineSTT;\n  const textToSpeechEndpoint = engineTTS;\n\n  return useMemo(\n    () => ({ speechToTextEndpoint, textToSpeechEndpoint }),\n    [speechToTextEndpoint, textToSpeechEndpoint],\n  );\n};\n\nexport default useGetAudioSettings;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useHandleKeyUp.ts",
    "content": "import { useCallback, useMemo } from 'react';\nimport { useSetRecoilState, useRecoilValue } from 'recoil';\nimport { PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport useHasAccess from '~/hooks/Roles/useHasAccess';\nimport store from '~/store';\n\n/** Event Keys that shouldn't trigger a command */\nconst invalidKeys = {\n  Escape: true,\n  Backspace: true,\n  Enter: true,\n};\n\n/**\n * Utility function to determine if a command should trigger.\n */\nconst shouldTriggerCommand = (\n  textAreaRef: React.RefObject<HTMLTextAreaElement>,\n  commandChar: string,\n) => {\n  const text = textAreaRef.current?.value;\n  if (typeof text !== 'string' || text.length === 0 || text[0] !== commandChar) {\n    return false;\n  }\n\n  const startPos = textAreaRef.current?.selectionStart;\n  if (typeof startPos !== 'number') {\n    return false;\n  }\n\n  return startPos === 1;\n};\n\n/**\n * Custom hook for handling key up events with command triggers.\n */\nconst useHandleKeyUp = ({\n  index,\n  textAreaRef,\n  setShowPlusPopover,\n  setShowMentionPopover,\n}: {\n  index: number;\n  textAreaRef: React.RefObject<HTMLTextAreaElement>;\n  setShowPlusPopover: SetterOrUpdater<boolean>;\n  setShowMentionPopover: SetterOrUpdater<boolean>;\n}) => {\n  const hasPromptsAccess = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.USE,\n  });\n  const hasMultiConvoAccess = useHasAccess({\n    permissionType: PermissionTypes.MULTI_CONVO,\n    permission: Permissions.USE,\n  });\n  const latestMessage = useRecoilValue(store.latestMessageFamily(index));\n  const setShowPromptsPopover = useSetRecoilState(store.showPromptsPopoverFamily(index));\n\n  // Get the current state of command toggles\n  const atCommandEnabled = useRecoilValue(store.atCommand);\n  const plusCommandEnabled = useRecoilValue(store.plusCommand);\n  const slashCommandEnabled = useRecoilValue(store.slashCommand);\n\n  const handleAtCommand = useCallback(() => {\n    if (atCommandEnabled && shouldTriggerCommand(textAreaRef, '@')) {\n      setShowMentionPopover(true);\n    }\n  }, [textAreaRef, setShowMentionPopover, atCommandEnabled]);\n\n  const handlePlusCommand = useCallback(() => {\n    if (!hasMultiConvoAccess || !plusCommandEnabled) {\n      return;\n    }\n    if (shouldTriggerCommand(textAreaRef, '+')) {\n      setShowPlusPopover(true);\n    }\n  }, [textAreaRef, setShowPlusPopover, plusCommandEnabled, hasMultiConvoAccess]);\n\n  const handlePromptsCommand = useCallback(() => {\n    if (!hasPromptsAccess || !slashCommandEnabled) {\n      return;\n    }\n    if (shouldTriggerCommand(textAreaRef, '/')) {\n      setShowPromptsPopover(true);\n    }\n  }, [textAreaRef, hasPromptsAccess, setShowPromptsPopover, slashCommandEnabled]);\n\n  const commandHandlers = useMemo(\n    () => ({\n      '@': handleAtCommand,\n      '+': handlePlusCommand,\n      '/': handlePromptsCommand,\n    }),\n    [handleAtCommand, handlePlusCommand, handlePromptsCommand],\n  );\n\n  const handleUpArrow = useCallback(\n    (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n      if (!latestMessage) {\n        return;\n      }\n\n      const element = document.getElementById(`edit-${latestMessage.parentMessageId}`);\n      if (!element) {\n        return;\n      }\n      event.preventDefault();\n      element.click();\n    },\n    [latestMessage],\n  );\n\n  /**\n   * Main key up handler.\n   */\n  const handleKeyUp = useCallback(\n    (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n      const text = textAreaRef.current?.value;\n      if (event.key === 'ArrowUp' && text?.length === 0) {\n        handleUpArrow(event);\n        return;\n      }\n      if (typeof text !== 'string' || text.length === 0) {\n        return;\n      }\n\n      if (invalidKeys[event.key as keyof typeof invalidKeys]) {\n        return;\n      }\n\n      const firstChar = text[0];\n      const handler = commandHandlers[firstChar as keyof typeof commandHandlers];\n\n      if (typeof handler === 'function') {\n        handler();\n      }\n    },\n    [textAreaRef, commandHandlers, handleUpArrow],\n  );\n\n  return handleKeyUp;\n};\n\nexport default useHandleKeyUp;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useMentions.ts",
    "content": "import { useMemo } from 'react';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport {\n  alternateName,\n  EModelEndpoint,\n  isAgentsEndpoint,\n  getConfigDefaults,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type { TAssistantsMap, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport type { MentionOption } from '~/common';\nimport {\n  useGetPresetsQuery,\n  useGetEndpointsQuery,\n  useListAgentsQuery,\n  useGetStartupConfig,\n} from '~/data-provider';\nimport useAssistantListMap from '~/hooks/Assistants/useAssistantListMap';\nimport { mapEndpoints, getPresetTitle } from '~/utils';\nimport { EndpointIcon } from '~/components/Endpoints';\n\nconst defaultInterface = getConfigDefaults().interface;\n\nconst assistantMapFn =\n  ({\n    endpoint,\n    assistantMap,\n    endpointsConfig,\n  }: {\n    endpoint: EModelEndpoint | string;\n    assistantMap: TAssistantsMap;\n    endpointsConfig: TEndpointsConfig;\n  }) =>\n    ({ id, name, description }) => ({\n      type: endpoint,\n      label: name ?? '',\n      value: id,\n      description: description ?? '',\n      icon: EndpointIcon({\n        conversation: { assistant_id: id, endpoint },\n        containerClassName: 'shadow-stroke overflow-hidden rounded-full',\n        endpointsConfig: endpointsConfig,\n        context: 'menu-item',\n        assistantMap,\n        size: 20,\n      }),\n    });\n\nexport default function useMentions({\n  assistantMap,\n  includeAssistants,\n}: {\n  assistantMap: TAssistantsMap;\n  includeAssistants: boolean;\n}) {\n  const { data: presets } = useGetPresetsQuery();\n  const { data: modelsConfig } = useGetModelsQuery();\n  const { data: startupConfig } = useGetStartupConfig();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const { data: endpoints = [] } = useGetEndpointsQuery({\n    select: mapEndpoints,\n  });\n  const listMap = useAssistantListMap((res) =>\n    res.data.map(({ id, name, description }) => ({\n      id,\n      name,\n      description,\n    })),\n  );\n  const { data: agentsList = null } = useListAgentsQuery(undefined, {\n    select: (res) => {\n      const { data } = res;\n      return data.map(({ id, name, avatar }) => ({\n        value: id,\n        label: name ?? '',\n        type: EModelEndpoint.agents,\n        icon: EndpointIcon({\n          conversation: {\n            agent_id: id,\n            endpoint: EModelEndpoint.agents,\n            iconURL: avatar?.filepath,\n          },\n          containerClassName: 'shadow-stroke overflow-hidden rounded-full',\n          endpointsConfig: endpointsConfig,\n          context: 'menu-item',\n          size: 20,\n        }),\n      }));\n    },\n  });\n  const assistantListMap = useMemo(\n    () => ({\n      [EModelEndpoint.assistants]: listMap[EModelEndpoint.assistants]\n        ?.map(\n          assistantMapFn({\n            endpoint: EModelEndpoint.assistants,\n            assistantMap,\n            endpointsConfig,\n          }),\n        )\n        .filter(Boolean),\n      [EModelEndpoint.azureAssistants]: listMap[EModelEndpoint.azureAssistants]\n        ?.map(\n          assistantMapFn({\n            endpoint: EModelEndpoint.azureAssistants,\n            assistantMap,\n            endpointsConfig,\n          }),\n        )\n        .filter(Boolean),\n    }),\n    [listMap, assistantMap, endpointsConfig],\n  );\n\n  const modelSpecs = useMemo(() => startupConfig?.modelSpecs?.list ?? [], [startupConfig]);\n  const interfaceConfig = useMemo(\n    () => startupConfig?.interface ?? defaultInterface,\n    [startupConfig],\n  );\n\n  const options: MentionOption[] = useMemo(() => {\n    let validEndpoints = endpoints;\n    if (!includeAssistants) {\n      validEndpoints = endpoints.filter((endpoint) => !isAssistantsEndpoint(endpoint));\n    }\n\n    const modelOptions = validEndpoints.flatMap((endpoint) => {\n      if (isAssistantsEndpoint(endpoint) || isAgentsEndpoint(endpoint)) {\n        return [];\n      }\n\n      const models = (modelsConfig?.[endpoint] ?? []).map((model) => ({\n        value: endpoint,\n        label: model,\n        type: 'model' as const,\n        icon: EndpointIcon({\n          conversation: { endpoint, model },\n          endpointsConfig,\n          context: 'menu-item',\n          size: 20,\n        }),\n      }));\n      return models;\n    });\n\n    const mentions = [\n      ...(modelSpecs.length > 0 ? modelSpecs : []).map((modelSpec) => ({\n        value: modelSpec.name,\n        label: modelSpec.label,\n        description: modelSpec.description,\n        icon: EndpointIcon({\n          conversation: {\n            ...modelSpec.preset,\n            iconURL: modelSpec.iconURL,\n          },\n          endpointsConfig,\n          context: 'menu-item',\n          size: 20,\n        }),\n        type: 'modelSpec' as const,\n      })),\n      ...(interfaceConfig.endpointsMenu === true ? validEndpoints : []).map((endpoint) => ({\n        value: endpoint,\n        label: alternateName[endpoint as string] ?? endpoint ?? '',\n        type: 'endpoint' as const,\n        icon: EndpointIcon({\n          conversation: { endpoint },\n          endpointsConfig,\n          context: 'menu-item',\n          size: 20,\n        }),\n      })),\n      ...(agentsList ?? []),\n      ...(endpointsConfig?.[EModelEndpoint.assistants] && includeAssistants\n        ? assistantListMap[EModelEndpoint.assistants] || []\n        : []),\n      ...(endpointsConfig?.[EModelEndpoint.azureAssistants] && includeAssistants\n        ? assistantListMap[EModelEndpoint.azureAssistants] || []\n        : []),\n      ...((interfaceConfig.presets === true ? presets : [])?.map((preset, index) => ({\n        value: preset.presetId ?? `preset-${index}`,\n        label: preset.title ?? preset.modelLabel ?? preset.chatGptLabel ?? '',\n        description: getPresetTitle(preset, true),\n        icon: EndpointIcon({\n          conversation: preset,\n          containerClassName: 'shadow-stroke overflow-hidden rounded-full',\n          endpointsConfig: endpointsConfig,\n          context: 'menu-item',\n          assistantMap,\n          size: 20,\n        }),\n        type: 'preset' as const,\n      })) ?? []),\n      ...modelOptions,\n    ];\n\n    return mentions;\n  }, [\n    presets,\n    endpoints,\n    modelSpecs,\n    agentsList,\n    assistantMap,\n    modelsConfig,\n    endpointsConfig,\n    assistantListMap,\n    includeAssistants,\n    interfaceConfig.presets,\n    interfaceConfig.endpointsMenu,\n  ]);\n\n  return {\n    options,\n    presets,\n    modelSpecs,\n    agentsList,\n    modelsConfig,\n    endpointsConfig,\n    assistantListMap,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useMultipleKeys.ts",
    "content": "import { isJson } from '~/utils/json';\n\nexport default function useMultipleKeys(setUserKey: React.Dispatch<React.SetStateAction<string>>) {\n  function getMultiKey(name: string, userKey: string) {\n    if (isJson(userKey)) {\n      const newKey = JSON.parse(userKey);\n      return newKey[name];\n    } else {\n      return '';\n    }\n  }\n\n  function setMultiKey(name: string, value: number | string | boolean, userKey: string) {\n    let newKey = {};\n    if (isJson(userKey)) {\n      newKey = JSON.parse(userKey);\n    }\n    newKey[name] = value;\n\n    setUserKey(JSON.stringify(newKey));\n  }\n\n  return { getMultiKey, setMultiKey };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useQueryParams.ts",
    "content": "import { useEffect, useCallback, useRef } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  QueryKeys,\n  EModelEndpoint,\n  isAgentsEndpoint,\n  tQueryParamsSchema,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type { TPreset, TEndpointsConfig } from '~/data-provider/data-provider/src';\nimport type { ZodAny } from 'zod';\nimport { getConvoSwitchLogic, removeUnavailableTools } from '~/utils';\nimport useDefaultConvo from '~/hooks/Conversations/useDefaultConvo';\nimport { useChatContext, useChatFormContext } from '~/Providers';\nimport store from '~/store';\n\nconst parseQueryValue = (value: string) => {\n  if (value === 'true') {\n    return true;\n  }\n  if (value === 'false') {\n    return false;\n  }\n  if (!isNaN(Number(value))) {\n    return Number(value);\n  }\n  return value;\n};\n\nconst processValidSettings = (queryParams: Record<string, string>) => {\n  const validSettings = {} as TPreset;\n\n  Object.entries(queryParams).forEach(([key, value]) => {\n    try {\n      const schema = tQueryParamsSchema.shape[key] as ZodAny | undefined;\n      if (schema) {\n        const parsedValue = parseQueryValue(value);\n        const validValue = schema.parse(parsedValue);\n        validSettings[key] = validValue;\n      }\n    } catch (error) {\n      console.warn(`Invalid value for setting ${key}:`, error);\n    }\n  });\n\n  if (\n    validSettings.assistant_id != null &&\n    validSettings.assistant_id &&\n    !isAssistantsEndpoint(validSettings.endpoint)\n  ) {\n    validSettings.endpoint = EModelEndpoint.assistants;\n  }\n  if (\n    validSettings.agent_id != null &&\n    validSettings.agent_id &&\n    !isAgentsEndpoint(validSettings.endpoint)\n  ) {\n    validSettings.endpoint = EModelEndpoint.agents;\n  }\n\n  return validSettings;\n};\n\nexport default function useQueryParams({\n  textAreaRef,\n}: {\n  textAreaRef: React.RefObject<HTMLTextAreaElement>;\n}) {\n  const maxAttempts = 50;\n  const attemptsRef = useRef(0);\n  const processedRef = useRef(false);\n  const methods = useChatFormContext();\n  const [searchParams] = useSearchParams();\n  const getDefaultConversation = useDefaultConvo();\n  const modularChat = useRecoilValue(store.modularChat);\n  const availableTools = useRecoilValue(store.availableTools);\n\n  const queryClient = useQueryClient();\n  const { conversation, newConversation } = useChatContext();\n\n  const newQueryConvo = useCallback(\n    (_newPreset?: TPreset) => {\n      if (!_newPreset) {\n        return;\n      }\n\n      const newPreset = removeUnavailableTools(_newPreset, availableTools);\n      let newEndpoint = newPreset.endpoint ?? '';\n      const endpointsConfig = queryClient.getQueryData<TEndpointsConfig>([QueryKeys.endpoints]);\n\n      if (newEndpoint && endpointsConfig && !endpointsConfig[newEndpoint]) {\n        const normalizedNewEndpoint = newEndpoint.toLowerCase();\n        for (const [key, value] of Object.entries(endpointsConfig)) {\n          if (\n            value &&\n            value.type === EModelEndpoint.custom &&\n            key.toLowerCase() === normalizedNewEndpoint\n          ) {\n            newEndpoint = key;\n            newPreset.endpoint = key;\n            newPreset.endpointType = EModelEndpoint.custom;\n            break;\n          }\n        }\n      }\n\n      const {\n        template,\n        shouldSwitch,\n        isNewModular,\n        newEndpointType,\n        isCurrentModular,\n        isExistingConversation,\n      } = getConvoSwitchLogic({\n        newEndpoint,\n        modularChat,\n        conversation,\n        endpointsConfig,\n      });\n\n      const isModular = isCurrentModular && isNewModular && shouldSwitch;\n      if (isExistingConversation && isModular) {\n        template.endpointType = newEndpointType as EModelEndpoint | undefined;\n\n        const currentConvo = getDefaultConversation({\n          /* target endpointType is necessary to avoid endpoint mixing */\n          conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n          preset: template,\n        });\n\n        /* We don't reset the latest message, only when changing settings mid-converstion */\n        newConversation({\n          template: currentConvo,\n          preset: newPreset,\n          keepLatestMessage: true,\n          keepAddedConvos: true,\n        });\n        return;\n      }\n\n      newConversation({ preset: newPreset, keepAddedConvos: true });\n    },\n    [\n      queryClient,\n      modularChat,\n      conversation,\n      availableTools,\n      newConversation,\n      getDefaultConversation,\n    ],\n  );\n\n  useEffect(() => {\n    const processQueryParams = () => {\n      const queryParams: Record<string, string> = {};\n      searchParams.forEach((value, key) => {\n        queryParams[key] = value;\n      });\n\n      const decodedPrompt = queryParams.prompt || '';\n      delete queryParams.prompt;\n      const validSettings = processValidSettings(queryParams);\n\n      return { decodedPrompt, validSettings };\n    };\n\n    const intervalId = setInterval(() => {\n      if (processedRef.current || attemptsRef.current >= maxAttempts) {\n        clearInterval(intervalId);\n        if (attemptsRef.current >= maxAttempts) {\n          console.warn('Max attempts reached, failed to process parameters');\n        }\n        return;\n      }\n\n      attemptsRef.current += 1;\n\n      if (!textAreaRef.current) {\n        return;\n      }\n      const { decodedPrompt, validSettings } = processQueryParams();\n      const currentText = methods.getValues('text');\n\n      /** Clean up URL parameters after successful processing */\n      const success = () => {\n        const newUrl = window.location.pathname;\n        window.history.replaceState({}, '', newUrl);\n        processedRef.current = true;\n        console.log('Parameters processed successfully');\n        clearInterval(intervalId);\n      };\n\n      if (!currentText && decodedPrompt) {\n        methods.setValue('text', decodedPrompt, { shouldValidate: true });\n        textAreaRef.current.focus();\n        textAreaRef.current.setSelectionRange(decodedPrompt.length, decodedPrompt.length);\n      }\n\n      if (Object.keys(validSettings).length > 0) {\n        newQueryConvo(validSettings);\n      }\n\n      success();\n    }, 100);\n\n    return () => {\n      clearInterval(intervalId);\n    };\n  }, [searchParams, methods, textAreaRef, newQueryConvo, newConversation]);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useRequiresKey.ts",
    "content": "import { useChatContext } from '~/Providers/ChatContext';\nimport { useGetEndpointsQuery } from '~/data-provider';\nimport { getEndpointField } from '~/utils';\nimport useUserKey from './useUserKey';\n\nexport default function useRequiresKey() {\n  const { conversation } = useChatContext();\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const { endpoint } = conversation || {};\n  const userProvidesKey: boolean | null | undefined = getEndpointField(\n    endpointsConfig,\n    endpoint,\n    'userProvide',\n  );\n  const { getExpiry } = useUserKey(endpoint ?? '');\n  const expiryTime = getExpiry();\n  const requiresKey = !expiryTime && userProvidesKey;\n  return { requiresKey };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useSelectMention.ts",
    "content": "import { useCallback } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { EModelEndpoint, isAgentsEndpoint, isAssistantsEndpoint } from '~/data-provider/data-provider/src';\nimport type {\n  TPreset,\n  TModelSpec,\n  TConversation,\n  TAssistantsMap,\n  TEndpointsConfig,\n} from '~/data-provider/data-provider/src';\nimport type { MentionOption, ConvoGenerator } from '~/common';\nimport { getConvoSwitchLogic, getModelSpecIconURL, removeUnavailableTools } from '~/utils';\nimport { useChatContext } from '~/Providers';\nimport { useDefaultConvo } from '~/hooks';\nimport store from '~/store';\n\nexport default function useSelectMention({\n  presets,\n  modelSpecs,\n  assistantMap,\n  endpointsConfig,\n  newConversation,\n}: {\n  presets?: TPreset[];\n  modelSpecs: TModelSpec[];\n  assistantMap?: TAssistantsMap;\n  newConversation: ConvoGenerator;\n  endpointsConfig: TEndpointsConfig;\n}) {\n  const { conversation } = useChatContext();\n  const getDefaultConversation = useDefaultConvo();\n  const modularChat = useRecoilValue(store.modularChat);\n  const availableTools = useRecoilValue(store.availableTools);\n\n  const onSelectSpec = useCallback(\n    (spec?: TModelSpec) => {\n      if (!spec) {\n        return;\n      }\n      const { preset } = spec;\n      preset.iconURL = getModelSpecIconURL(spec);\n      preset.spec = spec.name;\n      const { endpoint } = preset;\n      const newEndpoint = endpoint ?? '';\n      if (!newEndpoint) {\n        return;\n      }\n\n      const {\n        template,\n        shouldSwitch,\n        isNewModular,\n        newEndpointType,\n        isCurrentModular,\n        isExistingConversation,\n      } = getConvoSwitchLogic({\n        newEndpoint,\n        modularChat,\n        conversation,\n        endpointsConfig,\n      });\n\n      if (newEndpointType) {\n        preset.endpointType = newEndpointType;\n      }\n\n      if (\n        isAssistantsEndpoint(newEndpoint) &&\n        preset.assistant_id != null &&\n        !(preset.model ?? '')\n      ) {\n        preset.model = assistantMap?.[newEndpoint]?.[preset.assistant_id]?.model;\n      }\n\n      const isModular = isCurrentModular && isNewModular && shouldSwitch;\n      if (isExistingConversation && isModular) {\n        template.endpointType = newEndpointType as EModelEndpoint | undefined;\n\n        const currentConvo = getDefaultConversation({\n          /* target endpointType is necessary to avoid endpoint mixing */\n          conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n          preset: template,\n        });\n\n        /* We don't reset the latest message, only when changing settings mid-converstion */\n        newConversation({\n          template: currentConvo,\n          preset,\n          keepLatestMessage: true,\n          keepAddedConvos: true,\n        });\n        return;\n      }\n\n      newConversation({\n        template: { ...(template as Partial<TConversation>) },\n        preset,\n        keepAddedConvos: isModular,\n      });\n    },\n    [\n      conversation,\n      getDefaultConversation,\n      modularChat,\n      newConversation,\n      endpointsConfig,\n      assistantMap,\n    ],\n  );\n\n  type Kwargs = {\n    model?: string;\n    agent_id?: string;\n    assistant_id?: string;\n  };\n\n  const onSelectEndpoint = useCallback(\n    (_newEndpoint?: EModelEndpoint | string | null, kwargs: Kwargs = {}) => {\n      const newEndpoint = _newEndpoint ?? '';\n      if (!newEndpoint) {\n        return;\n      }\n\n      const {\n        shouldSwitch,\n        isNewModular,\n        isCurrentModular,\n        isExistingConversation,\n        newEndpointType,\n        template,\n      } = getConvoSwitchLogic({\n        newEndpoint,\n        modularChat,\n        conversation,\n        endpointsConfig,\n      });\n\n      const model = kwargs.model ?? '';\n      if (model) {\n        template.model = model;\n      }\n\n      const assistant_id = kwargs.assistant_id ?? '';\n      if (assistant_id) {\n        template.assistant_id = assistant_id;\n      }\n      const agent_id = kwargs.agent_id ?? '';\n      if (agent_id) {\n        template.agent_id = agent_id;\n      }\n\n      if (isExistingConversation && isCurrentModular && isNewModular && shouldSwitch) {\n        template.endpointType = newEndpointType;\n\n        const currentConvo = getDefaultConversation({\n          /* target endpointType is necessary to avoid endpoint mixing */\n          conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n          preset: template,\n        });\n\n        /* We don't reset the latest message, only when changing settings mid-converstion */\n        newConversation({ template: currentConvo, preset: currentConvo, keepLatestMessage: true });\n        return;\n      }\n\n      newConversation({\n        template: { ...(template as Partial<TConversation>) },\n        preset: { ...kwargs, endpoint: newEndpoint },\n      });\n    },\n    [conversation, getDefaultConversation, modularChat, newConversation, endpointsConfig],\n  );\n\n  const onSelectPreset = useCallback(\n    (_newPreset?: TPreset) => {\n      if (!_newPreset) {\n        return;\n      }\n\n      const newPreset = removeUnavailableTools(_newPreset, availableTools);\n      const newEndpoint = newPreset.endpoint ?? '';\n\n      const {\n        template,\n        shouldSwitch,\n        isNewModular,\n        newEndpointType,\n        isCurrentModular,\n        isExistingConversation,\n      } = getConvoSwitchLogic({\n        newEndpoint,\n        modularChat,\n        conversation,\n        endpointsConfig,\n      });\n\n      const isModular = isCurrentModular && isNewModular && shouldSwitch;\n      if (isExistingConversation && isModular) {\n        template.endpointType = newEndpointType as EModelEndpoint | undefined;\n\n        const currentConvo = getDefaultConversation({\n          /* target endpointType is necessary to avoid endpoint mixing */\n          conversation: { ...(conversation ?? {}), endpointType: template.endpointType },\n          preset: template,\n        });\n\n        /* We don't reset the latest message, only when changing settings mid-converstion */\n        newConversation({\n          template: currentConvo,\n          preset: newPreset,\n          keepLatestMessage: true,\n          keepAddedConvos: true,\n        });\n        return;\n      }\n\n      newConversation({ preset: newPreset, keepAddedConvos: true });\n    },\n    [\n      modularChat,\n      conversation,\n      availableTools,\n      newConversation,\n      endpointsConfig,\n      getDefaultConversation,\n    ],\n  );\n\n  const onSelectMention = useCallback(\n    (option: MentionOption) => {\n      const key = option.value;\n      if (option.type === 'preset') {\n        const preset = presets?.find((p) => p.presetId === key);\n        onSelectPreset(preset);\n      } else if (option.type === 'modelSpec') {\n        const modelSpec = modelSpecs.find((spec) => spec.name === key);\n        onSelectSpec(modelSpec);\n      } else if (option.type === 'model') {\n        onSelectEndpoint(key, { model: option.label });\n      } else if (option.type === 'endpoint') {\n        onSelectEndpoint(key);\n      } else if (isAssistantsEndpoint(option.type)) {\n        onSelectEndpoint(option.type, {\n          assistant_id: key,\n          model: assistantMap?.[option.type]?.[key]?.model ?? '',\n        });\n      } else if (isAgentsEndpoint(option.type)) {\n        onSelectEndpoint(option.type, {\n          agent_id: key,\n        });\n      }\n    },\n    [modelSpecs, onSelectEndpoint, onSelectPreset, onSelectSpec, presets, assistantMap],\n  );\n\n  return {\n    onSelectMention,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useSpeechToText.ts",
    "content": "import useSpeechToTextBrowser from './useSpeechToTextBrowser';\nimport useSpeechToTextExternal from './useSpeechToTextExternal';\nimport useGetAudioSettings from './useGetAudioSettings';\n\nconst useSpeechToText = (\n  setText: (text: string) => void,\n  onTranscriptionComplete: (text: string) => void,\n): {\n  isLoading?: boolean;\n  isListening?: boolean;\n  stopRecording: () => void | (() => Promise<void>);\n  startRecording: () => void | (() => Promise<void>);\n} => {\n  const { speechToTextEndpoint } = useGetAudioSettings();\n  const externalSpeechToText = speechToTextEndpoint === 'external';\n\n  const {\n    isListening: speechIsListeningBrowser,\n    isLoading: speechIsLoadingBrowser,\n    startRecording: startSpeechRecordingBrowser,\n    stopRecording: stopSpeechRecordingBrowser,\n  } = useSpeechToTextBrowser(setText, onTranscriptionComplete);\n\n  const {\n    isListening: speechIsListeningExternal,\n    isLoading: speechIsLoadingExternal,\n    externalStartRecording: startSpeechRecordingExternal,\n    externalStopRecording: stopSpeechRecordingExternal,\n  } = useSpeechToTextExternal(setText, onTranscriptionComplete);\n\n  const isListening = externalSpeechToText ? speechIsListeningExternal : speechIsListeningBrowser;\n  const isLoading = externalSpeechToText ? speechIsLoadingExternal : speechIsLoadingBrowser;\n\n  const startRecording = externalSpeechToText\n    ? startSpeechRecordingExternal\n    : startSpeechRecordingBrowser;\n  const stopRecording = externalSpeechToText\n    ? stopSpeechRecordingExternal\n    : stopSpeechRecordingBrowser;\n\n  return {\n    isLoading,\n    isListening,\n    stopRecording,\n    startRecording,\n  };\n};\n\nexport default useSpeechToText;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useSpeechToTextBrowser.ts",
    "content": "import { useEffect, useRef, useMemo } from 'react';\nimport { useRecoilState } from 'recoil';\nimport SpeechRecognition, { useSpeechRecognition } from 'react-speech-recognition';\nimport useGetAudioSettings from './useGetAudioSettings';\nimport { useToastContext } from '~/Providers';\nimport store from '~/store';\n\nconst useSpeechToTextBrowser = (\n  setText: (text: string) => void,\n  onTranscriptionComplete: (text: string) => void,\n) => {\n  const { showToast } = useToastContext();\n  const { speechToTextEndpoint } = useGetAudioSettings();\n  const isBrowserSTTEnabled = speechToTextEndpoint === 'browser';\n\n  const lastTranscript = useRef<string | null>(null);\n  const lastInterim = useRef<string | null>(null);\n  const timeoutRef = useRef<NodeJS.Timeout | null>();\n  const [autoSendText] = useRecoilState(store.autoSendText);\n  const [languageSTT] = useRecoilState<string>(store.languageSTT);\n  const [autoTranscribeAudio] = useRecoilState<boolean>(store.autoTranscribeAudio);\n\n  const {\n    listening,\n    finalTranscript,\n    resetTranscript,\n    interimTranscript,\n    isMicrophoneAvailable,\n    browserSupportsSpeechRecognition,\n  } = useSpeechRecognition();\n  const isListening = useMemo(() => listening, [listening]);\n\n  useEffect(() => {\n    if (interimTranscript == null || interimTranscript === '') {\n      return;\n    }\n\n    if (lastInterim.current === interimTranscript) {\n      return;\n    }\n\n    setText(interimTranscript);\n    lastInterim.current = interimTranscript;\n  }, [setText, interimTranscript]);\n\n  useEffect(() => {\n    if (finalTranscript == null || finalTranscript === '') {\n      return;\n    }\n\n    if (lastTranscript.current === finalTranscript) {\n      return;\n    }\n\n    setText(finalTranscript);\n    lastTranscript.current = finalTranscript;\n    if (autoSendText > -1 && finalTranscript.length > 0) {\n      timeoutRef.current = setTimeout(() => {\n        onTranscriptionComplete(finalTranscript);\n        resetTranscript();\n      }, autoSendText * 1000);\n    }\n\n    return () => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n    };\n  }, [setText, onTranscriptionComplete, resetTranscript, finalTranscript, autoSendText]);\n\n  const toggleListening = () => {\n    if (!browserSupportsSpeechRecognition) {\n      showToast({\n        message: 'Browser does not support SpeechRecognition',\n        status: 'error',\n      });\n      return;\n    }\n\n    if (!isMicrophoneAvailable) {\n      showToast({\n        message: 'Microphone is not available',\n        status: 'error',\n      });\n      return;\n    }\n\n    if (isListening === true) {\n      SpeechRecognition.stopListening();\n    } else {\n      SpeechRecognition.startListening({\n        language: languageSTT,\n        continuous: autoTranscribeAudio,\n      });\n    }\n  };\n\n  useEffect(() => {\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.shiftKey && e.altKey && e.code === 'KeyL' && !isBrowserSTTEnabled) {\n        toggleListening();\n      }\n    };\n\n    window.addEventListener('keydown', handleKeyDown);\n    return () => window.removeEventListener('keydown', handleKeyDown);\n  }, []);\n\n  return {\n    isListening,\n    isLoading: false,\n    startRecording: toggleListening,\n    stopRecording: toggleListening,\n  };\n};\n\nexport default useSpeechToTextBrowser;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useSpeechToTextExternal.ts",
    "content": "import { useState, useEffect, useRef } from 'react';\nimport { useRecoilState } from 'recoil';\nimport { useSpeechToTextMutation } from '~/data-provider';\nimport useGetAudioSettings from './useGetAudioSettings';\nimport { useToastContext } from '~/Providers';\nimport store from '~/store';\n\nconst useSpeechToTextExternal = (\n  setText: (text: string) => void,\n  onTranscriptionComplete: (text: string) => void,\n) => {\n  const { showToast } = useToastContext();\n  const { speechToTextEndpoint } = useGetAudioSettings();\n  const isExternalSTTEnabled = speechToTextEndpoint === 'external';\n  const audioStream = useRef<MediaStream | null>(null);\n  const animationFrameIdRef = useRef<number | null>(null);\n  const audioContextRef = useRef<AudioContext | null>(null);\n  const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n\n  const [permission, setPermission] = useState(false);\n  const [isListening, setIsListening] = useState(false);\n  const [audioChunks, setAudioChunks] = useState<Blob[]>([]);\n  const [isRequestBeingMade, setIsRequestBeingMade] = useState(false);\n\n  const [minDecibels] = useRecoilState(store.decibelValue);\n  const [autoSendText] = useRecoilState(store.autoSendText);\n  const [speechToText] = useRecoilState<boolean>(store.speechToText);\n  const [autoTranscribeAudio] = useRecoilState<boolean>(store.autoTranscribeAudio);\n\n  const { mutate: processAudio, isLoading: isProcessing } = useSpeechToTextMutation({\n    onSuccess: (data) => {\n      const extractedText = data.text;\n      setText(extractedText);\n      setIsRequestBeingMade(false);\n\n      if (autoSendText > -1 && speechToText && extractedText.length > 0) {\n        setTimeout(() => {\n          onTranscriptionComplete(extractedText);\n        }, autoSendText * 1000);\n      }\n    },\n    onError: () => {\n      showToast({\n        message: 'An error occurred while processing the audio, maybe the audio was too short',\n        status: 'error',\n      });\n      setIsRequestBeingMade(false);\n    },\n  });\n\n  const cleanup = () => {\n    if (mediaRecorderRef.current) {\n      mediaRecorderRef.current.removeEventListener('dataavailable', (event: BlobEvent) => {\n        audioChunks.push(event.data);\n      });\n      mediaRecorderRef.current.removeEventListener('stop', handleStop);\n      mediaRecorderRef.current = null;\n    }\n  };\n\n  const getMicrophonePermission = async () => {\n    try {\n      const streamData = await navigator.mediaDevices.getUserMedia({\n        audio: true,\n        video: false,\n      });\n      setPermission(true);\n      audioStream.current = streamData ?? null;\n    } catch (err) {\n      setPermission(false);\n    }\n  };\n\n  const handleStop = () => {\n    if (audioChunks.length > 0) {\n      const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });\n\n      setAudioChunks([]);\n\n      const formData = new FormData();\n      formData.append('audio', audioBlob, 'audio.wav');\n      setIsRequestBeingMade(true);\n      cleanup();\n      processAudio(formData);\n    } else {\n      showToast({ message: 'The audio was too short', status: 'warning' });\n    }\n  };\n\n  const monitorSilence = (stream: MediaStream, stopRecording: () => void) => {\n    const audioContext = new AudioContext();\n    const audioStreamSource = audioContext.createMediaStreamSource(stream);\n    const analyser = audioContext.createAnalyser();\n    analyser.minDecibels = minDecibels;\n    audioStreamSource.connect(analyser);\n\n    const bufferLength = analyser.frequencyBinCount;\n    const domainData = new Uint8Array(bufferLength);\n    let lastSoundTime = Date.now();\n\n    const detectSound = () => {\n      analyser.getByteFrequencyData(domainData);\n      const isSoundDetected = domainData.some((value) => value > 0);\n\n      if (isSoundDetected) {\n        lastSoundTime = Date.now();\n      }\n\n      const timeSinceLastSound = Date.now() - lastSoundTime;\n      const isOverSilenceThreshold = timeSinceLastSound > 3000;\n\n      if (isOverSilenceThreshold) {\n        stopRecording();\n        return;\n      }\n\n      animationFrameIdRef.current = window.requestAnimationFrame(detectSound);\n    };\n\n    animationFrameIdRef.current = window.requestAnimationFrame(detectSound);\n  };\n\n  const startRecording = async () => {\n    if (isRequestBeingMade) {\n      showToast({ message: 'A request is already being made. Please wait.', status: 'warning' });\n      return;\n    }\n\n    if (!audioStream.current) {\n      await getMicrophonePermission();\n    }\n\n    if (audioStream.current) {\n      try {\n        setAudioChunks([]);\n        mediaRecorderRef.current = new MediaRecorder(audioStream.current);\n        mediaRecorderRef.current.addEventListener('dataavailable', (event: BlobEvent) => {\n          audioChunks.push(event.data);\n        });\n        mediaRecorderRef.current.addEventListener('stop', handleStop);\n        mediaRecorderRef.current.start(100);\n        if (!audioContextRef.current && autoTranscribeAudio && speechToText) {\n          monitorSilence(audioStream.current, stopRecording);\n        }\n        setIsListening(true);\n      } catch (error) {\n        showToast({ message: `Error starting recording: ${error}`, status: 'error' });\n      }\n    } else {\n      showToast({ message: 'Microphone permission not granted', status: 'error' });\n    }\n  };\n\n  const stopRecording = () => {\n    if (!mediaRecorderRef.current) {\n      return;\n    }\n\n    if (mediaRecorderRef.current.state === 'recording') {\n      mediaRecorderRef.current.stop();\n\n      audioStream.current?.getTracks().forEach((track) => track.stop());\n      audioStream.current = null;\n\n      if (animationFrameIdRef.current !== null) {\n        window.cancelAnimationFrame(animationFrameIdRef.current);\n        animationFrameIdRef.current = null;\n      }\n\n      setIsListening(false);\n    } else {\n      showToast({ message: 'MediaRecorder is not recording', status: 'error' });\n    }\n  };\n\n  const externalStartRecording = () => {\n    if (isListening) {\n      showToast({ message: 'Already listening. Please stop recording first.', status: 'warning' });\n      return;\n    }\n\n    startRecording();\n  };\n\n  const externalStopRecording = () => {\n    if (!isListening) {\n      showToast({\n        message: 'Not currently recording. Please start recording first.',\n        status: 'warning',\n      });\n      return;\n    }\n\n    stopRecording();\n  };\n\n  const handleKeyDown = async (e: KeyboardEvent) => {\n    if (e.shiftKey && e.altKey && e.code === 'KeyL' && isExternalSTTEnabled) {\n      if (!window.MediaRecorder) {\n        showToast({ message: 'MediaRecorder is not supported in this browser', status: 'error' });\n        return;\n      }\n\n      if (permission === false) {\n        await getMicrophonePermission();\n      }\n\n      if (isListening) {\n        stopRecording();\n      } else {\n        startRecording();\n      }\n\n      e.preventDefault();\n    }\n  };\n\n  useEffect(() => {\n    window.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isListening]);\n\n  return {\n    isListening,\n    externalStopRecording,\n    externalStartRecording,\n    isLoading: isProcessing,\n  };\n};\n\nexport default useSpeechToTextExternal;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useTextToSpeech.ts",
    "content": "import { useRecoilState, useRecoilValue } from 'recoil';\nimport { useRef, useMemo, useEffect, useState } from 'react';\nimport { parseTextParts } from '~/data-provider/data-provider/src';\nimport type { TMessageContentParts } from '~/data-provider/data-provider/src';\nimport type { Option } from '~/common';\nimport useTextToSpeechExternal from '~/hooks/Input/useTextToSpeechExternal';\nimport useTextToSpeechBrowser from '~/hooks/Input/useTextToSpeechBrowser';\nimport useGetAudioSettings from '~/hooks/Input/useGetAudioSettings';\nimport useTextToSpeechEdge from '~/hooks/Input/useTextToSpeechEdge';\nimport useAudioRef from '~/hooks/Audio/useAudioRef';\nimport { usePauseGlobalAudio } from '../Audio';\nimport { logger } from '~/utils';\nimport store from '~/store';\n\ntype TUseTextToSpeech = {\n  messageId?: string;\n  content?: TMessageContentParts[] | string;\n  isLast?: boolean;\n  index?: number;\n};\n\nconst useTextToSpeech = (props?: TUseTextToSpeech) => {\n  const { messageId, content, isLast = false, index = 0 } = props ?? {};\n\n  const isMouseDownRef = useRef(false);\n  const timerRef = useRef<number | undefined>(undefined);\n  const [isSpeakingState, setIsSpeaking] = useState(false);\n  const { audioRef } = useAudioRef({ setIsPlaying: setIsSpeaking });\n\n  const { textToSpeechEndpoint } = useGetAudioSettings();\n  const { pauseGlobalAudio } = usePauseGlobalAudio(index);\n  const [voice, setVoice] = useRecoilState(store.voice);\n  const globalIsPlaying = useRecoilValue(store.globalAudioPlayingFamily(index));\n\n  const isSpeaking = isSpeakingState || (isLast && globalIsPlaying);\n\n  const {\n    generateSpeechLocal,\n    cancelSpeechLocal,\n    voices: voicesLocal,\n  } = useTextToSpeechBrowser({ setIsSpeaking });\n\n  const {\n    generateSpeechEdge,\n    cancelSpeechEdge,\n    voices: voicesEdge,\n  } = useTextToSpeechEdge({ setIsSpeaking });\n\n  const {\n    generateSpeechExternal,\n    cancelSpeech: cancelSpeechExternal,\n    isLoading: isLoadingExternal,\n    voices: voicesExternal,\n  } = useTextToSpeechExternal({\n    setIsSpeaking,\n    audioRef,\n    messageId,\n    isLast,\n    index,\n  });\n\n  const generateSpeech = useMemo(() => {\n    const map = {\n      edge: generateSpeechEdge,\n      browser: generateSpeechLocal,\n      external: generateSpeechExternal,\n    };\n\n    return map[textToSpeechEndpoint];\n  }, [generateSpeechEdge, generateSpeechExternal, generateSpeechLocal, textToSpeechEndpoint]);\n\n  const cancelSpeech = useMemo(() => {\n    const map = {\n      edge: cancelSpeechEdge,\n      browser: cancelSpeechLocal,\n      external: cancelSpeechExternal,\n    };\n    return map[textToSpeechEndpoint];\n  }, [cancelSpeechEdge, cancelSpeechExternal, cancelSpeechLocal, textToSpeechEndpoint]);\n\n  const isLoading = useMemo(() => {\n    const map = {\n      edge: false,\n      browser: false,\n      external: isLoadingExternal,\n    };\n    return map[textToSpeechEndpoint];\n  }, [isLoadingExternal, textToSpeechEndpoint]);\n\n  const voices: Option[] | string[] = useMemo(() => {\n    const voiceMap = {\n      edge: voicesEdge,\n      browser: voicesLocal,\n      external: voicesExternal,\n    };\n\n    return voiceMap[textToSpeechEndpoint];\n  }, [textToSpeechEndpoint, voicesEdge, voicesExternal, voicesLocal]);\n\n  useEffect(() => {\n    const firstVoice = voices[0];\n    if (voices.length && typeof firstVoice === 'object') {\n      const lastSelectedVoice = voices.find((v) =>\n        typeof v === 'object' ? v.value === voice : v === voice,\n      );\n      if (lastSelectedVoice != null) {\n        const currentVoice =\n          typeof lastSelectedVoice === 'object' ? lastSelectedVoice.value : lastSelectedVoice;\n        logger.log('useTextToSpeech.ts - Effect:', { voices, voice: currentVoice });\n        setVoice(currentVoice?.toString() ?? undefined);\n        return;\n      }\n\n      logger.log('useTextToSpeech.ts - Effect:', { voices, voice: firstVoice.value });\n      setVoice(firstVoice.value?.toString() ?? undefined);\n    } else if (voices.length) {\n      const lastSelectedVoice = voices.find((v) => v === voice);\n      if (lastSelectedVoice != null) {\n        logger.log('useTextToSpeech.ts - Effect:', { voices, voice: lastSelectedVoice });\n        setVoice(lastSelectedVoice.toString());\n        return;\n      }\n      logger.log('useTextToSpeech.ts - Effect:', { voices, voice: firstVoice });\n      setVoice(firstVoice.toString());\n    }\n  }, [setVoice, textToSpeechEndpoint, voice, voices]);\n\n  const handleMouseDown = () => {\n    isMouseDownRef.current = true;\n    timerRef.current = window.setTimeout(() => {\n      if (isMouseDownRef.current) {\n        const messageContent = content ?? '';\n        const parsedMessage =\n          typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n        generateSpeech(parsedMessage, false);\n      }\n    }, 1000);\n  };\n\n  const handleMouseUp = () => {\n    isMouseDownRef.current = false;\n    if (timerRef.current != null) {\n      window.clearTimeout(timerRef.current);\n    }\n  };\n\n  const toggleSpeech = () => {\n    if (isSpeaking === true) {\n      cancelSpeech();\n      pauseGlobalAudio();\n    } else {\n      const messageContent = content ?? '';\n      const parsedMessage =\n        typeof messageContent === 'string' ? messageContent : parseTextParts(messageContent);\n      generateSpeech(parsedMessage, false);\n    }\n  };\n\n  return {\n    handleMouseDown,\n    handleMouseUp,\n    toggleSpeech,\n    isSpeaking,\n    isLoading,\n    audioRef,\n    voices,\n  };\n};\n\nexport default useTextToSpeech;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useTextToSpeechBrowser.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useState, useEffect, useCallback } from 'react';\nimport type { VoiceOption } from '~/common';\nimport store from '~/store';\n\nfunction useTextToSpeechBrowser({\n  setIsSpeaking,\n}: {\n  setIsSpeaking: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n  const voiceName = useRecoilValue(store.voice);\n  const [voices, setVoices] = useState<VoiceOption[]>([]);\n  const cloudBrowserVoices = useRecoilValue(store.cloudBrowserVoices);\n  const [isSpeechSynthesisSupported, setIsSpeechSynthesisSupported] = useState(true);\n\n  const updateVoices = useCallback(() => {\n    const synth = window.speechSynthesis as SpeechSynthesis | undefined;\n    if (!synth) {\n      setIsSpeechSynthesisSupported(false);\n      return;\n    }\n\n    try {\n      const availableVoices = synth.getVoices();\n      if (!Array.isArray(availableVoices)) {\n        console.error('getVoices() did not return an array');\n        return;\n      }\n\n      const filteredVoices = availableVoices.filter(\n        (v) => cloudBrowserVoices || v.localService === true,\n      );\n      const voiceOptions: VoiceOption[] = filteredVoices.map((v) => ({\n        value: v.name,\n        label: v.name,\n      }));\n\n      setVoices(voiceOptions);\n    } catch (error) {\n      console.error('Error updating voices:', error);\n      setIsSpeechSynthesisSupported(false);\n    }\n  }, [cloudBrowserVoices]);\n\n  useEffect(() => {\n    const synth = window.speechSynthesis as SpeechSynthesis | undefined;\n    if (!synth) {\n      setIsSpeechSynthesisSupported(false);\n      return;\n    }\n\n    try {\n      if (synth.getVoices().length) {\n        updateVoices();\n      } else {\n        synth.onvoiceschanged = updateVoices;\n      }\n    } catch (error) {\n      console.error('Error in useEffect:', error);\n      setIsSpeechSynthesisSupported(false);\n    }\n\n    return () => {\n      if (synth.onvoiceschanged) {\n        synth.onvoiceschanged = null;\n      }\n    };\n  }, [updateVoices]);\n\n  const generateSpeechLocal = (text: string) => {\n    if (!isSpeechSynthesisSupported) {\n      console.warn('Speech synthesis is not supported');\n      return;\n    }\n\n    const synth = window.speechSynthesis;\n    const voice = voices.find((v) => v.value === voiceName);\n\n    if (!voice) {\n      console.warn('Selected voice not found');\n      return;\n    }\n\n    try {\n      synth.cancel();\n      const utterance = new SpeechSynthesisUtterance(text);\n      utterance.voice = synth.getVoices().find((v) => v.name === voice.value) || null;\n      utterance.onend = () => {\n        setIsSpeaking(false);\n      };\n      utterance.onerror = (event) => {\n        console.error('Speech synthesis error:', event);\n        setIsSpeaking(false);\n      };\n      setIsSpeaking(true);\n      synth.speak(utterance);\n    } catch (error) {\n      console.error('Error generating speech:', error);\n      setIsSpeaking(false);\n    }\n  };\n\n  const cancelSpeechLocal = () => {\n    if (!isSpeechSynthesisSupported) {\n      return;\n    }\n\n    try {\n      window.speechSynthesis.cancel();\n    } catch (error) {\n      console.error('Error cancelling speech:', error);\n    } finally {\n      setIsSpeaking(false);\n    }\n  };\n\n  return { generateSpeechLocal, cancelSpeechLocal, voices, isSpeechSynthesisSupported };\n}\n\nexport default useTextToSpeechBrowser;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useTextToSpeechEdge.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { MsEdgeTTS, OUTPUT_FORMAT } from 'msedge-tts';\nimport { useState, useCallback, useRef, useEffect, useMemo } from 'react';\nimport type { VoiceOption } from '~/common';\nimport { useToastContext } from '~/Providers/ToastContext';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\ninterface UseTextToSpeechEdgeReturn {\n  generateSpeechEdge: (text: string) => void;\n  cancelSpeechEdge: () => void;\n  voices: VoiceOption[];\n}\n\nfunction useTextToSpeechEdge({\n  setIsSpeaking,\n}: {\n  setIsSpeaking: React.Dispatch<React.SetStateAction<boolean>>;\n}): UseTextToSpeechEdgeReturn {\n  const localize = useLocalize();\n  const [voices, setVoices] = useState<VoiceOption[]>([]);\n  const voiceName = useRecoilValue(store.voice);\n  const ttsRef = useRef<MsEdgeTTS | null>(null);\n  const audioElementRef = useRef<HTMLAudioElement | null>(null);\n  const mediaSourceRef = useRef<MediaSource | null>(null);\n  const sourceBufferRef = useRef<SourceBuffer | null>(null);\n  const pendingBuffers = useRef<Uint8Array[]>([]);\n  const { showToast } = useToastContext();\n\n  const isBrowserSupported = useMemo(\n    () => typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported('audio/mpeg'),\n    [],\n  );\n\n  const fetchVoices = useCallback(() => {\n    if (!ttsRef.current) {\n      ttsRef.current = new MsEdgeTTS();\n    }\n    ttsRef.current\n      .getVoices()\n      .then((voicesList) => {\n        setVoices(\n          voicesList.map((v) => ({\n            value: v.ShortName,\n            label: v.FriendlyName,\n          })),\n        );\n      })\n      .catch((error) => {\n        console.error('Error fetching voices:', error);\n        showToast({\n          message: localize('com_nav_voices_fetch_error'),\n          status: 'error',\n        });\n      });\n  }, [showToast, localize]);\n\n  const initializeTTS = useCallback(() => {\n    if (!ttsRef.current) {\n      ttsRef.current = new MsEdgeTTS();\n    }\n    const availableVoice: VoiceOption | undefined = voices.find((v) => v.value === voiceName);\n\n    if (availableVoice) {\n      ttsRef.current\n        .setMetadata(availableVoice.value, OUTPUT_FORMAT.AUDIO_24KHZ_48KBITRATE_MONO_MP3)\n        .catch((error) => {\n          console.error('Error initializing TTS:', error);\n          showToast({\n            message: localize('com_nav_tts_init_error', { 0: (error as Error).message }),\n            status: 'error',\n          });\n        });\n    } else if (voices.length > 0) {\n      ttsRef.current\n        .setMetadata(voices[0].value, OUTPUT_FORMAT.AUDIO_24KHZ_48KBITRATE_MONO_MP3)\n        .catch((error) => {\n          console.error('Error initializing TTS:', error);\n          showToast({\n            message: localize('com_nav_tts_init_error', { 0: (error as Error).message }),\n            status: 'error',\n          });\n        });\n    }\n  }, [voiceName, showToast, localize, voices]);\n\n  const appendNextBuffer = useCallback(() => {\n    if (\n      sourceBufferRef.current &&\n      !sourceBufferRef.current.updating &&\n      pendingBuffers.current.length > 0\n    ) {\n      const nextBuffer = pendingBuffers.current.shift();\n      if (nextBuffer) {\n        try {\n          sourceBufferRef.current.appendBuffer(nextBuffer);\n        } catch (error) {\n          console.error('Error appending buffer:', error);\n          showToast({\n            message: localize('com_nav_buffer_append_error'),\n            status: 'error',\n          });\n          pendingBuffers.current.unshift(nextBuffer);\n        }\n      }\n    }\n  }, [showToast, localize]);\n\n  const onSourceOpen = useCallback(() => {\n    if (!sourceBufferRef.current && mediaSourceRef.current) {\n      try {\n        sourceBufferRef.current = mediaSourceRef.current.addSourceBuffer('audio/mpeg');\n        sourceBufferRef.current.addEventListener('updateend', appendNextBuffer);\n      } catch (error) {\n        console.error('Error adding source buffer:', error);\n        showToast({\n          message: localize('com_nav_source_buffer_error'),\n          status: 'error',\n        });\n      }\n    }\n  }, [showToast, localize, appendNextBuffer]);\n\n  const initializeMediaSource = useCallback(() => {\n    if (!mediaSourceRef.current) {\n      mediaSourceRef.current = new MediaSource();\n      audioElementRef.current = new Audio();\n      audioElementRef.current.src = URL.createObjectURL(mediaSourceRef.current);\n    }\n\n    const mediaSource = mediaSourceRef.current;\n    if (mediaSource.readyState === 'open') {\n      onSourceOpen();\n    } else {\n      mediaSource.addEventListener('sourceopen', onSourceOpen);\n    }\n  }, [onSourceOpen]);\n\n  const generateSpeechEdge = useCallback(\n    (text: string) => {\n      const generate = async () => {\n        try {\n          if (!ttsRef.current || !audioElementRef.current) {\n            throw new Error('TTS or Audio element not initialized');\n          }\n\n          setIsSpeaking(true);\n          pendingBuffers.current = [];\n\n          const readable = ttsRef.current.toStream(text);\n\n          readable.on('data', (chunk: Buffer) => {\n            pendingBuffers.current.push(new Uint8Array(chunk));\n            appendNextBuffer();\n          });\n\n          readable.on('end', () => {\n            if (mediaSourceRef.current && mediaSourceRef.current.readyState === 'open') {\n              mediaSourceRef.current.endOfStream();\n            }\n          });\n\n          audioElementRef.current.onended = () => {\n            setIsSpeaking(false);\n          };\n\n          await audioElementRef.current.play();\n        } catch (error) {\n          console.error('Error generating speech:', error);\n          showToast({\n            message: localize('com_nav_audio_play_error', { 0: (error as Error).message }),\n            status: 'error',\n          });\n          setIsSpeaking(false);\n        }\n      };\n\n      generate();\n    },\n    [setIsSpeaking, appendNextBuffer, showToast, localize],\n  );\n\n  const cancelSpeechEdge = useCallback(() => {\n    try {\n      if (audioElementRef.current) {\n        audioElementRef.current.pause();\n        audioElementRef.current.currentTime = 0;\n      }\n      if (mediaSourceRef.current && mediaSourceRef.current.readyState === 'open') {\n        mediaSourceRef.current.endOfStream();\n      }\n      pendingBuffers.current = [];\n      setIsSpeaking(false);\n    } catch (error) {\n      console.error('Error cancelling speech:', error);\n      showToast({\n        message: localize('com_nav_speech_cancel_error'),\n        status: 'error',\n      });\n    }\n  }, [setIsSpeaking, showToast, localize]);\n\n  useEffect(() => {\n    if (!isBrowserSupported) {\n      return;\n    }\n    fetchVoices();\n  }, [fetchVoices, isBrowserSupported]);\n\n  useEffect(() => {\n    if (!isBrowserSupported) {\n      return;\n    }\n    initializeTTS();\n  }, [voiceName, initializeTTS, isBrowserSupported]);\n\n  useEffect(() => {\n    if (!isBrowserSupported) {\n      return;\n    }\n    initializeMediaSource();\n    return () => {\n      if (mediaSourceRef.current) {\n        URL.revokeObjectURL(audioElementRef.current?.src ?? '');\n      }\n    };\n  }, [initializeMediaSource, isBrowserSupported]);\n\n  if (!isBrowserSupported) {\n    return {\n      generateSpeechEdge: () => ({}),\n      cancelSpeechEdge: () => ({}),\n      voices: [],\n    };\n  }\n\n  return { generateSpeechEdge, cancelSpeechEdge, voices };\n}\n\nexport default useTextToSpeechEdge;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useTextToSpeechExternal.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useState, useMemo, useRef, useCallback, useEffect } from 'react';\nimport { useTextToSpeechMutation, useVoicesQuery } from '~/data-provider';\nimport { useToastContext } from '~/Providers/ToastContext';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nconst createFormData = (text: string, voice: string) => {\n  const formData = new FormData();\n  formData.append('input', text);\n  formData.append('voice', voice);\n  return formData;\n};\n\ntype TUseTTSExternal = {\n  setIsSpeaking: React.Dispatch<React.SetStateAction<boolean>>;\n  audioRef: React.MutableRefObject<HTMLAudioElement | null>;\n  messageId?: string;\n  isLast: boolean;\n  index?: number;\n};\n\nfunction useTextToSpeechExternal({\n  setIsSpeaking,\n  audioRef,\n  messageId,\n  isLast,\n  index = 0,\n}: TUseTTSExternal) {\n  const localize = useLocalize();\n  const { showToast } = useToastContext();\n  const voice = useRecoilValue(store.voice);\n  const cacheTTS = useRecoilValue(store.cacheTTS);\n  const playbackRate = useRecoilValue(store.playbackRate);\n\n  const [downloadFile, setDownloadFile] = useState(false);\n\n  const promiseAudioRef = useRef<HTMLAudioElement | null>(null);\n\n  /* Global Audio Variables */\n  const globalIsFetching = useRecoilValue(store.globalAudioFetchingFamily(index));\n  const globalIsPlaying = useRecoilValue(store.globalAudioPlayingFamily(index));\n\n  const autoPlayAudio = (blobUrl: string) => {\n    const newAudio = new Audio(blobUrl);\n    audioRef.current = newAudio;\n  };\n\n  const playAudioPromise = (blobUrl: string) => {\n    const newAudio = new Audio(blobUrl);\n    const initializeAudio = () => {\n      if (playbackRate != null && playbackRate !== 1 && playbackRate > 0) {\n        newAudio.playbackRate = playbackRate;\n      }\n    };\n\n    initializeAudio();\n    const playPromise = () => newAudio.play().then(() => setIsSpeaking(true));\n\n    playPromise().catch((error: Error) => {\n      if (\n        error.message &&\n        error.message.includes('The play() request was interrupted by a call to pause()')\n      ) {\n        console.log('Play request was interrupted by a call to pause()');\n        initializeAudio();\n        return playPromise().catch(console.error);\n      }\n      console.error(error);\n      showToast({ message: localize('com_nav_audio_play_error', { 0: error.message }), status: 'error' });\n    });\n\n    newAudio.onended = () => {\n      console.log('Cached message audio ended');\n      URL.revokeObjectURL(blobUrl);\n      setIsSpeaking(false);\n    };\n\n    promiseAudioRef.current = newAudio;\n  };\n\n  const downloadAudio = (blobUrl: string) => {\n    const a = document.createElement('a');\n    a.href = blobUrl;\n    a.download = 'audio.mp3';\n    a.click();\n    setDownloadFile(false);\n  };\n\n  const { mutate: processAudio } = useTextToSpeechMutation({\n    onMutate: (variables) => {\n      const inputText = (variables.get('input') ?? '') as string;\n      if (inputText.length >= 4096) {\n        showToast({\n          message: localize('com_nav_long_audio_warning'),\n          status: 'warning',\n        });\n      }\n    },\n    onSuccess: async (data: ArrayBuffer, variables) => {\n      try {\n        const inputText = (variables.get('input') ?? '') as string;\n        const audioBlob = new Blob([data], { type: 'audio/mpeg' });\n\n        if (cacheTTS && inputText) {\n          const cache = await caches.open('tts-responses');\n          const request = new Request(inputText);\n          const response = new Response(audioBlob);\n          cache.put(request, response);\n        }\n\n        const blobUrl = URL.createObjectURL(audioBlob);\n        if (downloadFile) {\n          downloadAudio(blobUrl);\n        }\n        autoPlayAudio(blobUrl);\n      } catch (error) {\n        showToast({\n          message: `Error processing audio: ${(error as Error).message}`,\n          status: 'error',\n        });\n      }\n    },\n    onError: (error: unknown) => {\n      showToast({\n        message: localize('com_nav_audio_process_error', { 0: (error as Error).message }),\n        status: 'error',\n      });\n    },\n  });\n\n  const startMutation = (text: string, download: boolean) => {\n    const formData = createFormData(text, voice ?? '');\n    setDownloadFile(download);\n    processAudio(formData);\n  };\n\n  const generateSpeechExternal = (text: string, download: boolean) => {\n    if (cacheTTS) {\n      handleCachedResponse(text, download);\n    } else {\n      startMutation(text, download);\n    }\n  };\n\n  const handleCachedResponse = async (text: string, download: boolean) => {\n    const cachedResponse = await caches.match(text);\n    if (!cachedResponse) {\n      return startMutation(text, download);\n    }\n    const audioBlob = await cachedResponse.blob();\n    const blobUrl = URL.createObjectURL(audioBlob);\n    if (download) {\n      downloadAudio(blobUrl);\n    } else {\n      playAudioPromise(blobUrl);\n    }\n  };\n\n  const cancelSpeech = () => {\n    const messageAudio = document.getElementById(`audio-${messageId}`) as HTMLAudioElement | null;\n    const pauseAudio = (currentElement: HTMLAudioElement | null) => {\n      if (currentElement) {\n        currentElement.pause();\n        currentElement.src && URL.revokeObjectURL(currentElement.src);\n        audioRef.current = null;\n      }\n    };\n    pauseAudio(messageAudio);\n    pauseAudio(promiseAudioRef.current);\n    setIsSpeaking(false);\n  };\n\n  const cancelPromiseSpeech = useCallback(() => {\n    if (promiseAudioRef.current) {\n      promiseAudioRef.current.pause();\n      promiseAudioRef.current.src && URL.revokeObjectURL(promiseAudioRef.current.src);\n      promiseAudioRef.current = null;\n      setIsSpeaking(false);\n    }\n  }, [setIsSpeaking]);\n\n  useEffect(() => cancelPromiseSpeech, [cancelPromiseSpeech]);\n\n  const isLoading = useMemo(\n    () => isLast && globalIsFetching && !globalIsPlaying,\n    [globalIsFetching, globalIsPlaying, isLast],\n  );\n\n  const { data: voicesData = [] } = useVoicesQuery();\n\n  return {\n    generateSpeechExternal,\n    cancelSpeech,\n    isLoading,\n    audioRef,\n    voices: voicesData,\n  };\n}\n\nexport default useTextToSpeechExternal;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useTextarea.ts",
    "content": "import debounce from 'lodash/debounce';\nimport { useEffect, useRef, useCallback } from 'react';\nimport { useRecoilValue, useRecoilState } from 'recoil';\nimport type { TEndpointOption } from '~/data-provider/data-provider/src';\nimport type { KeyboardEvent } from 'react';\nimport {\n  forceResize,\n  insertTextAtCursor,\n  getEntityName,\n  getEntity,\n  checkIfScrollable,\n} from '~/utils';\nimport { useAssistantsMapContext } from '~/Providers/AssistantsMapContext';\nimport { useAgentsMapContext } from '~/Providers/AgentsMapContext';\nimport useGetSender from '~/hooks/Conversations/useGetSender';\nimport useFileHandling from '~/hooks/Files/useFileHandling';\nimport { useInteractionHealthCheck } from '~/data-provider';\nimport { useChatContext } from '~/Providers/ChatContext';\nimport useLocalize from '~/hooks/useLocalize';\nimport { globalAudioId } from '~/common';\nimport store from '~/store';\n\ntype KeyEvent = KeyboardEvent<HTMLTextAreaElement>;\n\nexport default function useTextarea({\n  textAreaRef,\n  submitButtonRef,\n  setIsScrollable,\n  disabled = false,\n  placeholder = ''\n}: {\n  textAreaRef: React.RefObject<HTMLTextAreaElement>;\n  submitButtonRef: React.RefObject<HTMLButtonElement>;\n  setIsScrollable: React.Dispatch<React.SetStateAction<boolean>>;\n  disabled?: boolean;\n  placeholder?: string;\n}) {\n  const localize = useLocalize();\n  const getSender = useGetSender();\n  const isComposing = useRef(false);\n  const agentsMap = useAgentsMapContext();\n  const { handleFiles } = useFileHandling();\n  const assistantMap = useAssistantsMapContext();\n  const checkHealth = useInteractionHealthCheck();\n  const enterToSend = useRecoilValue(store.enterToSend);\n\n  const { index, conversation, isSubmitting, filesLoading, latestMessage, setFilesLoading } =\n    useChatContext();\n  const [activePrompt, setActivePrompt] = useRecoilState(store.activePromptByIndex(index));\n\n  const { endpoint = '' } = conversation || {};\n  const { entity, isAgent, isAssistant } = getEntity({\n    endpoint,\n    agentsMap,\n    assistantMap,\n    agent_id: conversation?.agent_id,\n    assistant_id: conversation?.assistant_id,\n  });\n  const entityName = entity?.name ?? '';\n\n  const isNotAppendable =\n    (((latestMessage?.unfinished ?? false) && !isSubmitting) || (latestMessage?.error ?? false)) &&\n    !isAssistant;\n  // && (conversationId?.length ?? 0) > 6; // also ensures that we don't show the wrong placeholder\n\n  useEffect(() => {\n    const prompt = activePrompt ?? '';\n    if (prompt && textAreaRef.current) {\n      insertTextAtCursor(textAreaRef.current, prompt);\n      forceResize(textAreaRef.current);\n      setActivePrompt(undefined);\n    }\n  }, [activePrompt, setActivePrompt, textAreaRef]);\n\n  useEffect(() => {\n    const currentValue = textAreaRef.current?.value ?? '';\n    if (currentValue) {\n      return;\n    }\n\n    const getPlaceholderText = () => {\n      return placeholder || '发送消息内容...'\n      if (disabled) {\n        return localize('com_endpoint_config_placeholder');\n      }\n      const currentEndpoint = conversation?.endpoint ?? '';\n      const currentAgentId = conversation?.agent_id ?? '';\n      const currentAssistantId = conversation?.assistant_id ?? '';\n      if (isAgent && (!currentAgentId || !agentsMap?.[currentAgentId])) {\n        return localize('com_endpoint_agent_placeholder');\n      } else if (\n        isAssistant &&\n        (!currentAssistantId || !assistantMap?.[currentEndpoint]?.[currentAssistantId])\n      ) {\n        return localize('com_endpoint_assistant_placeholder');\n      }\n\n      if (isNotAppendable) {\n        return localize('com_endpoint_message_not_appendable');\n      }\n\n      const sender = isAssistant || isAgent\n        ? getEntityName({ name: entityName, isAgent, localize })\n        : getSender(conversation as TEndpointOption);\n\n      return `${localize(\n        'com_endpoint_message_new', { 0: sender ? sender : localize('com_endpoint_ai') },\n      )}`;\n    };\n\n    const _placeholder = getPlaceholderText();\n\n    if (textAreaRef.current?.getAttribute('placeholder') === _placeholder) {\n      return;\n    }\n\n    const setPlaceholder = () => {\n      const _placeholder = getPlaceholderText();\n\n      if (textAreaRef.current?.getAttribute('placeholder') !== _placeholder) {\n        textAreaRef.current?.setAttribute('placeholder', _placeholder);\n        forceResize(textAreaRef.current);\n      }\n    };\n\n    const debouncedSetPlaceholder = debounce(setPlaceholder, 80);\n    debouncedSetPlaceholder();\n\n    return () => debouncedSetPlaceholder.cancel();\n  }, [\n    isAgent,\n    localize,\n    disabled,\n    getSender,\n    agentsMap,\n    entityName,\n    textAreaRef,\n    isAssistant,\n    assistantMap,\n    conversation,\n    latestMessage,\n    isNotAppendable,\n  ]);\n\n  const handleKeyDown = useCallback(\n    (e: KeyEvent) => {\n      if (textAreaRef.current && checkIfScrollable(textAreaRef.current)) {\n        const scrollable = checkIfScrollable(textAreaRef.current);\n        scrollable && setIsScrollable(scrollable);\n      }\n      if (e.key === 'Enter' && isSubmitting) {\n        return;\n      }\n\n      checkHealth();\n\n      const isNonShiftEnter = e.key === 'Enter' && !e.shiftKey;\n      const isCtrlEnter = e.key === 'Enter' && (e.ctrlKey || e.metaKey);\n\n      // NOTE: isComposing and e.key behave differently in Safari compared to other browsers, forcing us to use e.keyCode instead\n      const isComposingInput = isComposing.current || e.key === 'Process' || e.keyCode === 229;\n\n      if (isNonShiftEnter && filesLoading) {\n        e.preventDefault();\n      }\n\n      if (isNonShiftEnter) {\n        e.preventDefault();\n      }\n\n      if (\n        e.key === 'Enter' &&\n        !enterToSend &&\n        !isCtrlEnter &&\n        textAreaRef.current &&\n        !isComposingInput\n      ) {\n        e.preventDefault();\n        insertTextAtCursor(textAreaRef.current, '\\n');\n        forceResize(textAreaRef.current);\n        return;\n      }\n\n      if ((isNonShiftEnter || isCtrlEnter) && !isComposingInput) {\n        const globalAudio = document.getElementById(globalAudioId) as HTMLAudioElement | undefined;\n        if (globalAudio) {\n          console.log('Unmuting global audio');\n          globalAudio.muted = false;\n        }\n        submitButtonRef.current?.click();\n      }\n    },\n    [\n      isSubmitting,\n      checkHealth,\n      filesLoading,\n      enterToSend,\n      setIsScrollable,\n      textAreaRef,\n      submitButtonRef,\n    ],\n  );\n\n  const handleCompositionStart = () => {\n    isComposing.current = true;\n  };\n\n  const handleCompositionEnd = () => {\n    isComposing.current = false;\n  };\n\n  const handlePaste = useCallback(\n    (e: React.ClipboardEvent<HTMLTextAreaElement>) => {\n      const textArea = textAreaRef.current;\n      if (!textArea) {\n        return;\n      }\n\n      const clipboardData = e.clipboardData as DataTransfer | undefined;\n      if (!clipboardData) {\n        return;\n      }\n\n      if (clipboardData.files.length > 0) {\n        setFilesLoading(true);\n        const timestampedFiles: File[] = [];\n        for (const file of clipboardData.files) {\n          const newFile = new File([file], `clipboard_${+new Date()}_${file.name}`, {\n            type: file.type,\n          });\n          timestampedFiles.push(newFile);\n        }\n        handleFiles(timestampedFiles);\n      }\n    },\n    [handleFiles, setFilesLoading, textAreaRef],\n  );\n\n  return {\n    textAreaRef,\n    handlePaste,\n    handleKeyDown,\n    handleCompositionStart,\n    handleCompositionEnd,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Input/useUserKey.ts",
    "content": "import { useMemo, useCallback } from 'react';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useUserKeyQuery, useUpdateUserKeysMutation } from '~/data-provider/data-provider/src/react-query';\nimport { useGetEndpointsQuery } from '~/data-provider';\n\nconst useUserKey = (endpoint: string) => {\n  const { data: endpointsConfig } = useGetEndpointsQuery();\n  const config = endpointsConfig?.[endpoint ?? ''];\n\n  const { azure } = config ?? {};\n  let keyName = endpoint;\n\n  if (azure) {\n    keyName = EModelEndpoint.azureOpenAI;\n  } else if (keyName === EModelEndpoint.gptPlugins) {\n    keyName = EModelEndpoint.openAI;\n  }\n\n  const updateKey = useUpdateUserKeysMutation();\n  const checkUserKey = useUserKeyQuery(keyName);\n\n  const getExpiry = useCallback(() => {\n    if (checkUserKey.data) {\n      return checkUserKey.data.expiresAt || 'never';\n    }\n  }, [checkUserKey.data]);\n\n  const checkExpiry = useCallback(() => {\n    const expiresAt = getExpiry();\n    if (!expiresAt) {\n      return true;\n    }\n\n    const expiresAtDate = new Date(expiresAt);\n    if (expiresAtDate < new Date()) {\n      return false;\n    }\n    return true;\n  }, [getExpiry]);\n\n  const saveUserKey = useCallback(\n    (userKey: string, expiresAt: number | null) => {\n      const dateStr = expiresAt ? new Date(expiresAt).toISOString() : '';\n      updateKey.mutate({\n        name: keyName,\n        value: userKey,\n        expiresAt: dateStr,\n      });\n    },\n    [updateKey, keyName],\n  );\n\n  return useMemo(\n    () => ({ getExpiry, checkExpiry, saveUserKey }),\n    [getExpiry, checkExpiry, saveUserKey],\n  );\n};\n\nexport default useUserKey;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/index.ts",
    "content": "export { default as useAvatar } from './useAvatar';\nexport { default as useProgress } from './useProgress';\nexport { default as useSubmitMessage } from './useSubmitMessage';\nexport { default as useMessageActions } from './useMessageActions';\nexport { default as useMessageProcess } from './useMessageProcess';\nexport { default as useMessageHelpers } from './useMessageHelpers';\nexport { default as useCopyToClipboard } from './useCopyToClipboard';\nexport { default as useMessageScrolling } from './useMessageScrolling';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useAvatar.ts",
    "content": "import { initials } from '@dicebear/collection';\nimport { createAvatar } from '@dicebear/core';\nimport { useEffect, useState } from 'react';\nimport type { TUser } from '~/data-provider/data-provider/src';\n\nconst avatarCache: Record<string, string> = {};\nconst useAvatar = (user: TUser | undefined) => {\n  const [avatarUri, setAvatarUri] = useState('');\n\n  useEffect(() => {\n    if (!user?.username) {\n      setAvatarUri('');\n      return;\n    }\n\n    // 如果已有头像或缓存，直接使用\n    if (user.avatar) {\n      setAvatarUri(user.avatar);\n      return;\n    }\n\n    if (avatarCache[user.username]) {\n      setAvatarUri(avatarCache[user.username]);\n      return;\n    }\n\n    // 生成新头像\n    const avatar = createAvatar(initials, {\n      seed: user.username,\n      fontFamily: ['Verdana'],\n      fontSize: 36,\n    });\n\n    avatar\n      .toDataUri()\n      .then((dataUri) => {\n        avatarCache[user.username] = dataUri; // 更新缓存\n        setAvatarUri(dataUri); // 触发重新渲染\n      })\n      .catch(console.error);\n\n  }, [user?.username, user?.avatar]); // 依赖项优化\n\n  return avatarUri;\n};\n\nexport default useAvatar;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useBuildMessageTree.ts",
    "content": "import { useRecoilCallback } from 'recoil';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\nexport default function useBuildMessageTree() {\n  const getSiblingIdx = useRecoilCallback(\n    ({ snapshot }) =>\n      async (messageId: string | null | undefined) =>\n        await snapshot.getPromise(store.messagesSiblingIdxFamily(messageId)),\n    [],\n  );\n\n  // return an object or an array based on branches and recursive option\n  // messageId is used to get siblindIdx from recoil snapshot\n  const buildMessageTree = async ({\n    messageId,\n    message,\n    messages,\n    branches = false,\n    recursive = false,\n  }: {\n    messageId: string | null | undefined;\n    message: Partial<TMessage> | null;\n    messages: Array<Partial<TMessage> | undefined> | null;\n    branches?: boolean;\n    recursive?: boolean;\n  }): Promise<TMessage | Array<Partial<TMessage> | undefined>> => {\n    let children: Array<Partial<TMessage> | undefined> = [];\n    if (messages?.length != null && messages.length > 0) {\n      if (branches) {\n        for (const message of messages) {\n          children.push(\n            (await buildMessageTree({\n              messageId: message?.messageId,\n              message: message as TMessage,\n              messages: message?.children || [],\n              branches,\n              recursive,\n            })) as TMessage,\n          );\n        }\n      } else {\n        let message = messages[0];\n        if (messages.length > 1) {\n          const siblingIdx = await getSiblingIdx(messageId);\n          message = messages[messages.length - siblingIdx - 1];\n        }\n\n        children = [\n          (await buildMessageTree({\n            messageId: message?.messageId,\n            message: message as TMessage,\n            messages: message?.children || [],\n            branches,\n            recursive,\n          })) as TMessage,\n        ];\n      }\n    }\n\n    if (recursive && message) {\n      return { ...(message as TMessage), children: children as TMessage[] };\n    } else {\n      let ret: TMessage[] = [];\n      if (message) {\n        const _message = { ...message };\n        delete _message.children;\n        ret = [_message as TMessage];\n      }\n      for (const child of children) {\n        ret = ret.concat(child as TMessage);\n      }\n      return ret;\n    }\n  };\n\n  return buildMessageTree;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useCopyToClipboard.ts",
    "content": "import { useCallback, useEffect, useRef } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { ContentTypes } from '~/data-provider/data-provider/src';\nimport type { TMessage } from '~/data-provider/data-provider/src';\n\nexport default function useCopyToClipboard({\n  text,\n  content,\n}: Partial<Pick<TMessage, 'text' | 'content'>>) {\n  const copyTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n  useEffect(() => {\n    return () => {\n      if (copyTimeoutRef.current) {\n        clearTimeout(copyTimeoutRef.current);\n      }\n    };\n  }, []);\n\n  const copyToClipboard = useCallback(\n    (setIsCopied: React.Dispatch<React.SetStateAction<boolean>>) => {\n      if (copyTimeoutRef.current) {\n        clearTimeout(copyTimeoutRef.current);\n      }\n      setIsCopied(true);\n      let messageText = text ?? '';\n      if (content) {\n        messageText = content.reduce((acc, curr, i) => {\n          if (curr.type === ContentTypes.TEXT) {\n            const text = typeof curr.text === 'string' ? curr.text : curr.text.value;\n            return acc + text + (i === content.length - 1 ? '' : '\\n');\n          }\n          return acc;\n        }, '');\n      }\n      copy(messageText, { format: 'text/plain' });\n\n      copyTimeoutRef.current = setTimeout(() => {\n        setIsCopied(false);\n      }, 3000);\n    },\n    [text, content],\n  );\n\n  return copyToClipboard;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useMessageActions.tsx",
    "content": "import { useRecoilValue } from 'recoil';\nimport { useCallback, useMemo } from 'react';\nimport { isAssistantsEndpoint, isAgentsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TMessageProps } from '~/common';\nimport {\n  useChatContext,\n  useAddedChatContext,\n  useAssistantsMapContext,\n  useAgentsMapContext,\n} from '~/Providers';\nimport useCopyToClipboard from './useCopyToClipboard';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport useLocalize from '~/hooks/useLocalize';\nimport store from '~/store';\n\nexport type TMessageActions = Pick<\n  TMessageProps,\n  'message' | 'currentEditId' | 'setCurrentEditId'\n> & {\n  isMultiMessage?: boolean;\n};\nexport default function useMessageActions(props: TMessageActions) {\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const UsernameDisplay = useRecoilValue<boolean>(store.UsernameDisplay);\n  const { message, currentEditId, setCurrentEditId, isMultiMessage } = props;\n\n  const {\n    ask,\n    index,\n    regenerate,\n    latestMessage,\n    handleContinue,\n    setLatestMessage,\n    conversation: rootConvo,\n    isSubmitting: isSubmittingRoot,\n  } = useChatContext();\n  const { conversation: addedConvo, isSubmitting: isSubmittingAdditional } = useAddedChatContext();\n  const conversation = useMemo(\n    () => (isMultiMessage === true ? addedConvo : rootConvo),\n    [isMultiMessage, addedConvo, rootConvo],\n  );\n\n  const agentsMap = useAgentsMapContext();\n  const assistantMap = useAssistantsMapContext();\n\n  const { text, content, messageId = null, isCreatedByUser } = message ?? {};\n  const edit = useMemo(() => messageId === currentEditId, [messageId, currentEditId]);\n\n  const enterEdit = useCallback(\n    (cancel?: boolean) => setCurrentEditId && setCurrentEditId(cancel === true ? -1 : messageId),\n    [messageId, setCurrentEditId],\n  );\n\n  const assistant = useMemo(() => {\n    if (!isAssistantsEndpoint(conversation?.endpoint)) {\n      return undefined;\n    }\n\n    const endpointKey = conversation?.endpoint ?? '';\n    const modelKey = message?.model ?? '';\n\n    return assistantMap?.[endpointKey] ? assistantMap[endpointKey][modelKey] : undefined;\n  }, [conversation?.endpoint, message?.model, assistantMap]);\n\n  const agent = useMemo(() => {\n    if (!isAgentsEndpoint(conversation?.endpoint)) {\n      return undefined;\n    }\n\n    if (!agentsMap) {\n      return undefined;\n    }\n\n    const modelKey = message?.model ?? '';\n    if (modelKey) {\n      return agentsMap[modelKey];\n    }\n\n    const agentId = conversation?.agent_id ?? '';\n    if (agentId) {\n      return agentsMap[agentId];\n    }\n  }, [agentsMap, conversation?.agent_id, conversation?.endpoint, message?.model]);\n\n  const isSubmitting = useMemo(\n    () => (isMultiMessage === true ? isSubmittingAdditional : isSubmittingRoot),\n    [isMultiMessage, isSubmittingAdditional, isSubmittingRoot],\n  );\n\n  const regenerateMessage = useCallback(() => {\n    if ((isSubmitting && isCreatedByUser === true) || !message) {\n      return;\n    }\n\n    regenerate(message);\n  }, [isSubmitting, isCreatedByUser, message, regenerate]);\n\n  const copyToClipboard = useCopyToClipboard({ text, content });\n\n  const messageLabel = useMemo(() => {\n    if (message?.isCreatedByUser === true) {\n      if (message?.user_name) return message.user_name\n      return UsernameDisplay ? (user?.name ?? '') || user?.username : localize('com_user_message');\n    } else if (agent) {\n      return agent.name ?? 'Assistant';\n    } else if (assistant) {\n      return assistant.name ?? 'Assistant';\n    } else {\n      return message?.sender;\n    }\n  }, [message, agent, assistant, UsernameDisplay, user, localize]);\n\n  return {\n    ask,\n    edit,\n    index,\n    agent,\n    assistant,\n    enterEdit,\n    conversation,\n    messageLabel,\n    isSubmitting,\n    latestMessage,\n    handleContinue,\n    copyToClipboard,\n    setLatestMessage,\n    regenerateMessage,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useMessageHelpers.tsx",
    "content": "import throttle from 'lodash/throttle';\nimport { useEffect, useRef, useCallback, useMemo } from 'react';\nimport { Constants, isAssistantsEndpoint, isAgentsEndpoint } from '~/data-provider/data-provider/src';\nimport type { TMessageProps } from '~/common';\nimport { useChatContext, useAssistantsMapContext, useAgentsMapContext } from '~/Providers';\nimport useCopyToClipboard from './useCopyToClipboard';\nimport { getTextKey, logger } from '~/utils';\n\nexport default function useMessageHelpers(props: TMessageProps) {\n  const latestText = useRef<string | number>('');\n  const { message, currentEditId, setCurrentEditId } = props;\n\n  const {\n    ask,\n    index,\n    regenerate,\n    isSubmitting,\n    conversation,\n    latestMessage,\n    setAbortScroll,\n    handleContinue,\n    setLatestMessage,\n  } = useChatContext();\n  const assistantMap = useAssistantsMapContext();\n  const agentsMap = useAgentsMapContext();\n\n  const { text, content, children, messageId = null, isCreatedByUser } = message ?? {};\n  const edit = messageId === currentEditId;\n  const isLast = children?.length === 0 || children?.length === undefined;\n\n  useEffect(() => {\n    const convoId = conversation?.conversationId;\n    if (convoId === Constants.NEW_CONVO) {\n      return;\n    }\n    if (!message) {\n      return;\n    }\n    if (!isLast) {\n      return;\n    }\n\n    const textKey = getTextKey(message, convoId);\n\n    // Check for text/conversation change\n    const logInfo = {\n      textKey,\n      'latestText.current': latestText.current,\n      messageId: message.messageId,\n      convoId,\n    };\n    if (\n      textKey !== latestText.current ||\n      (latestText.current && convoId !== latestText.current.split(Constants.COMMON_DIVIDER)[2])\n    ) {\n      logger.log('[useMessageHelpers] Setting latest message: ', logInfo);\n      latestText.current = textKey;\n      setLatestMessage({ ...message });\n    } else {\n      logger.log('No change in latest message', logInfo);\n    }\n  }, [isLast, message, setLatestMessage, conversation?.conversationId]);\n\n  const enterEdit = useCallback(\n    (cancel?: boolean) => setCurrentEditId && setCurrentEditId(cancel === true ? -1 : messageId),\n    [messageId, setCurrentEditId],\n  );\n\n  const handleScroll = useCallback(\n    (event: unknown) => {\n      throttle(() => {\n        logger.log(\n          'message_scrolling',\n          `useMessageHelpers: setting abort scroll to ${isSubmitting}, handleScroll event`,\n          event,\n        );\n        if (isSubmitting) {\n          setAbortScroll(true);\n        } else {\n          setAbortScroll(false);\n        }\n      }, 500)();\n    },\n    [isSubmitting, setAbortScroll],\n  );\n\n  const assistant = useMemo(() => {\n    if (!isAssistantsEndpoint(conversation?.endpoint)) {\n      return undefined;\n    }\n\n    const endpointKey = conversation?.endpoint ?? '';\n    const modelKey = message?.model ?? '';\n\n    return assistantMap?.[endpointKey] ? assistantMap[endpointKey][modelKey] : undefined;\n  }, [conversation?.endpoint, message?.model, assistantMap]);\n\n  const agent = useMemo(() => {\n    if (!isAgentsEndpoint(conversation?.endpoint)) {\n      return undefined;\n    }\n\n    const modelKey = message?.model ?? '';\n\n    return agentsMap ? agentsMap[modelKey] : undefined;\n  }, [agentsMap, conversation?.endpoint, message?.model]);\n\n  const regenerateMessage = () => {\n    if ((isSubmitting && isCreatedByUser === true) || !message) {\n      return;\n    }\n\n    regenerate(message);\n  };\n\n  const copyToClipboard = useCopyToClipboard({ text, content });\n\n  return {\n    ask,\n    edit,\n    agent,\n    index,\n    isLast,\n    assistant,\n    enterEdit,\n    conversation,\n    isSubmitting,\n    handleScroll,\n    latestMessage,\n    handleContinue,\n    copyToClipboard,\n    regenerateMessage,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useMessageProcess.tsx",
    "content": "import throttle from 'lodash/throttle';\nimport { useRecoilValue } from 'recoil';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useEffect, useRef, useCallback, useMemo, useState } from 'react';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport { useChatContext, useAddedChatContext } from '~/Providers';\nimport { getTextKey, logger } from '~/utils';\nimport store from '~/store';\n\nexport default function useMessageProcess({ message }: { message?: TMessage | null }) {\n  const latestText = useRef<string | number>('');\n  const [siblingMessage, setSiblingMessage] = useState<TMessage | null>(null);\n  const hasNoChildren = useMemo(() => (message?.children?.length ?? 0) === 0, [message]);\n\n  const {\n    index,\n    conversation,\n    latestMessage,\n    setAbortScroll,\n    setLatestMessage,\n    isSubmitting: isSubmittingRoot,\n  } = useChatContext();\n  const { isSubmitting: isSubmittingAdditional } = useAddedChatContext();\n  const latestMultiMessage = useRecoilValue(store.latestMessageFamily(index + 1));\n  const isSubmittingFamily = useMemo(\n    () => isSubmittingRoot || isSubmittingAdditional,\n    [isSubmittingRoot, isSubmittingAdditional],\n  );\n\n  useEffect(() => {\n    const convoId = conversation?.conversationId;\n    if (convoId === Constants.NEW_CONVO) {\n      return;\n    }\n    if (!message) {\n      return;\n    }\n    if (!hasNoChildren) {\n      return;\n    }\n\n    const textKey = getTextKey(message, convoId);\n\n    // Check for text/conversation change\n    const logInfo = {\n      textKey,\n      'latestText.current': latestText.current,\n      messageId: message.messageId,\n      convoId,\n    };\n    if (\n      textKey !== latestText.current ||\n      (convoId != null &&\n        latestText.current &&\n        convoId !== latestText.current.split(Constants.COMMON_DIVIDER)[2])\n    ) {\n      logger.log('latest_message', '[useMessageProcess] Setting latest message; logInfo:', logInfo);\n      latestText.current = textKey;\n      setLatestMessage({ ...message });\n    } else {\n      logger.log('latest_message', 'No change in latest message; logInfo', logInfo);\n    }\n  }, [hasNoChildren, message, setLatestMessage, conversation?.conversationId]);\n\n  const handleScroll = useCallback(\n    (event: unknown | TouchEvent | WheelEvent) => {\n      throttle(() => {\n        logger.log(\n          'message_scrolling',\n          `useMessageProcess: setting abort scroll to ${isSubmittingFamily}, handleScroll event`,\n          event,\n        );\n        if (isSubmittingFamily) {\n          setAbortScroll(true);\n        } else {\n          setAbortScroll(false);\n        }\n      }, 500)();\n    },\n    [isSubmittingFamily, setAbortScroll],\n  );\n\n  const showSibling = useMemo(\n    () =>\n      (hasNoChildren && latestMultiMessage && (latestMultiMessage.children?.length ?? 0) === 0) ||\n      !!siblingMessage,\n    [hasNoChildren, latestMultiMessage, siblingMessage],\n  );\n\n  useEffect(() => {\n    if (\n      hasNoChildren &&\n      latestMultiMessage &&\n      latestMultiMessage.conversationId === message?.conversationId\n    ) {\n      const newSibling = Object.assign({}, latestMultiMessage, {\n        parentMessageId: message.parentMessageId,\n        depth: message.depth,\n      });\n      setSiblingMessage(newSibling);\n    }\n  }, [hasNoChildren, latestMultiMessage, message, setSiblingMessage, latestMessage]);\n\n  return {\n    showSibling,\n    handleScroll,\n    conversation,\n    siblingMessage,\n    setSiblingMessage,\n    isSubmittingFamily,\n    latestMultiMessage,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useMessageScrolling.ts",
    "content": "import { useRecoilValue } from 'recoil';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useState, useRef, useCallback, useEffect } from 'react';\nimport type { TMessage } from '~/data-provider/data-provider/src';\nimport useScrollToRef from '~/hooks/useScrollToRef';\nimport { useChatContext } from '~/Providers';\nimport store from '~/store';\n\nconst threshold = 0.85;\nconst debounceRate = 150;\n\nexport default function useMessageScrolling(messagesTree?: TMessage[] | null) {\n  const autoScroll = useRecoilValue(store.autoScroll);\n\n  const scrollableRef = useRef<HTMLDivElement | null>(null);\n  const messagesEndRef = useRef<HTMLDivElement | null>(null);\n  const [showScrollButton, setShowScrollButton] = useState(false);\n  const { conversation, setAbortScroll, isSubmitting, abortScroll } = useChatContext();\n  const { conversationId } = conversation ?? {};\n\n  const timeoutIdRef = useRef<NodeJS.Timeout>();\n\n  const debouncedSetShowScrollButton = useCallback((value: boolean) => {\n    clearTimeout(timeoutIdRef.current);\n    timeoutIdRef.current = setTimeout(() => {\n      setShowScrollButton(value);\n    }, debounceRate);\n  }, []);\n\n  useEffect(() => {\n    if (!messagesEndRef.current || !scrollableRef.current) {\n      return;\n    }\n\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        debouncedSetShowScrollButton(!entry.isIntersecting);\n      },\n      { root: scrollableRef.current, threshold },\n    );\n\n    observer.observe(messagesEndRef.current);\n\n    return () => {\n      observer.disconnect();\n      clearTimeout(timeoutIdRef.current);\n    };\n  }, [messagesEndRef, scrollableRef, debouncedSetShowScrollButton]);\n\n  const debouncedHandleScroll = useCallback(() => {\n    if (messagesEndRef.current && scrollableRef.current) {\n      const observer = new IntersectionObserver(\n        ([entry]) => {\n          debouncedSetShowScrollButton(!entry.isIntersecting);\n        },\n        { root: scrollableRef.current, threshold },\n      );\n      observer.observe(messagesEndRef.current);\n      return () => observer.disconnect();\n    }\n  }, [debouncedSetShowScrollButton]);\n\n  const scrollCallback = () => debouncedSetShowScrollButton(false);\n\n  const { scrollToRef: scrollToBottom, handleSmoothToRef } = useScrollToRef({\n    targetRef: messagesEndRef,\n    callback: scrollCallback,\n    smoothCallback: () => {\n      scrollCallback();\n      setAbortScroll(false);\n    },\n  });\n\n  useEffect(() => {\n    if (!messagesTree || messagesTree.length === 0) {\n      return;\n    }\n\n    if (!messagesEndRef.current || !scrollableRef.current) {\n      return;\n    }\n\n    if (isSubmitting && scrollToBottom && abortScroll !== true) {\n      scrollToBottom();\n    }\n\n    return () => {\n      if (abortScroll === true) {\n        scrollToBottom && scrollToBottom.cancel();\n      }\n    };\n  }, [isSubmitting, messagesTree, scrollToBottom, abortScroll]);\n\n  useEffect(() => {\n    if (!messagesEndRef.current || !scrollableRef.current) {\n      return;\n    }\n\n    if (scrollToBottom && autoScroll && conversationId !== Constants.NEW_CONVO) {\n      scrollToBottom();\n    }\n  }, [autoScroll, conversationId, scrollToBottom]);\n\n  return {\n    conversation,\n    scrollableRef,\n    messagesEndRef,\n    scrollToBottom,\n    showScrollButton,\n    handleSmoothToRef,\n    debouncedHandleScroll,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useProgress.ts",
    "content": "import { useState, useEffect, useMemo, useCallback } from 'react';\n\nexport default function useProgress(initialProgress = 0.01, increment = 0.007, fileSize?: number) {\n  const calculateIncrement = useCallback(\n    (size?: number) => {\n      const baseRate = 0.05;\n      const minRate = 0.002;\n      const sizeMB = size ? size / (1024 * 1024) : 0;\n\n      if (!size) {\n        return increment;\n      }\n\n      if (sizeMB <= 1) {\n        return baseRate * 2;\n      } else {\n        return Math.max(baseRate / Math.sqrt(sizeMB), minRate);\n      }\n    },\n    [increment],\n  );\n\n  const incrementValue = useMemo(\n    () => calculateIncrement(fileSize),\n    [fileSize, calculateIncrement],\n  );\n  const [progress, setProgress] = useState(initialProgress);\n\n  const getDynamicIncrement = useCallback(\n    (currentProgress: number) => {\n      if (!fileSize) {\n        return incrementValue;\n      }\n      if (currentProgress < 0.7) {\n        return incrementValue;\n      } else {\n        return Math.max(0.0005, incrementValue * (1 - currentProgress));\n      }\n    },\n    [incrementValue, fileSize],\n  );\n\n  useEffect(() => {\n    let timeout: ReturnType<typeof setTimeout>;\n    let timer: ReturnType<typeof setInterval>;\n    if (initialProgress >= 1 && progress >= 1) {\n      return;\n    } else if (initialProgress >= 1 && progress < 1) {\n      setProgress(0.99);\n      timeout = setTimeout(() => {\n        setProgress(1);\n      }, 200);\n    } else {\n      timer = setInterval(() => {\n        setProgress((prevProgress) => {\n          if (prevProgress >= 1) {\n            clearInterval(timer);\n            return 1;\n          }\n          const currentIncrement = getDynamicIncrement(prevProgress);\n          return Math.min(prevProgress + currentIncrement, 0.95);\n        });\n      }, 200);\n    }\n\n    return () => {\n      clearInterval(timer);\n      clearTimeout(timeout);\n    };\n  }, [progress, initialProgress, incrementValue, fileSize, getDynamicIncrement]);\n\n  return progress;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Messages/useSubmitMessage.ts",
    "content": "import { useCallback } from 'react';\nimport { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil';\nimport { v4 } from 'uuid';\nimport { useAddedChatContext, useChatContext, useChatFormContext } from '~/Providers';\nimport { sameSopLabelState } from '~/components/Chat/Input/SameSopSpan';\nimport { Constants } from '~/data-provider/data-provider/src';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport store from '~/store';\nimport { replaceSpecialVars } from '~/utils';\nimport { useSetFilesToDelete } from '../Files';\nimport { useLinsightSessionManager } from '../useLinsightManager';\n\nconst appendIndex = (index: number, value?: string) => {\n  if (!value) {\n    return value;\n  }\n  return `${value}${Constants.COMMON_DIVIDER}${index}`;\n};\n\nexport default function useSubmitMessage(helpers?: { clearDraft?: () => void }) {\n  const { user } = useAuthContext();\n  const methods = useChatFormContext();\n  const { files, setFiles, ask, index, getMessages, setMessages, latestMessage } = useChatContext();\n  const { addedIndex, ask: askAdditional, conversation: addedConvo } = useAddedChatContext();\n\n  const autoSendPrompts = useRecoilValue(store.autoSendPrompts);\n  const activeConvos = useRecoilValue(store.allConversationsSelector);\n  const setActivePrompt = useSetRecoilState(store.activePromptByIndex(index));\n  const { setLinsightSubmission } = useLinsightSessionManager('new')\n  const setFilesToDelete = useSetFilesToDelete();\n  const [sameSopLabel, setSameSopLabel] = useRecoilState(sameSopLabelState)\n\n  const submitMessage = useCallback(\n    (data?: { text: string, linsight?: boolean, tools?: any[],knowledge?: {\n    personal?: boolean;\n    orgKbIds?: string[];\n  }; }) => {\n      if (!data) {\n        return console.warn('No data provided to submitMessage');\n      }\n\n      if (data?.linsight) {\n        setLinsightSubmission('new', {\n          sameSopId: sameSopLabel?.id || undefined,\n          isNew: true,\n          files: Array.from(files.values()).map(item => ({\n            file_id: item.file_id,\n            file_name: item.filename,\n            parsing_status: 'completed'\n          })),\n          question: data?.text,\n          // feedback: '',\n          tools: data.tools,\n          model: 'gpt-4',\n          enableWebSearch: false,\n          useKnowledgeBase: true,\n          orgKnowledgeBaseIds: data.knowledge?.orgKbIds ?? [],\n        });\n        // 重置表单和清理草稿\n        methods.reset();\n        setFiles(new Map())\n        setFilesToDelete({});\n        helpers?.clearDraft && helpers.clearDraft();\n        return setSameSopLabel(null);\n      }\n      // 检查最新消息是否在会话中\n      const rootMessages = getMessages();\n      const isLatestInRootMessages = rootMessages?.some(\n        (message) => message.messageId === latestMessage?.messageId,\n      );\n      if (!isLatestInRootMessages && latestMessage) {\n        setMessages([...(rootMessages || []), latestMessage]);\n      }\n      // 处理会话 ID 和消息 ID 的逻辑\n      const hasAdded = addedIndex && activeConvos[addedIndex] && addedConvo;\n      const isNewMultiConvo =\n        hasAdded &&\n        activeConvos.every((convoId) => convoId === Constants.NEW_CONVO) &&\n        !rootMessages?.length;\n      const overrideConvoId = isNewMultiConvo ? v4() : undefined;\n      const overrideUserMessageId = hasAdded ? v4() : undefined;\n      const rootIndex = addedIndex - 1;\n      const clientTimestamp = new Date().toISOString();\n      // 发送消息\n      ask({\n        text: data.text,\n        overrideConvoId: appendIndex(rootIndex, overrideConvoId),\n        overrideUserMessageId: appendIndex(rootIndex, overrideUserMessageId),\n        clientTimestamp,\n      });\n\n      // 处理附加消息（如果有）\n      if (hasAdded) {\n        askAdditional(\n          {\n            text: data.text,\n            overrideConvoId: appendIndex(addedIndex, overrideConvoId),\n            overrideUserMessageId: appendIndex(addedIndex, overrideUserMessageId),\n            clientTimestamp,\n          },\n          { overrideMessages: rootMessages },\n        );\n      }\n      // 重置表单和清理草稿\n      methods.reset();\n      helpers?.clearDraft && helpers.clearDraft();\n    },\n    [\n      ask,\n      methods,\n      helpers,\n      addedIndex,\n      addedConvo,\n      setMessages,\n      getMessages,\n      activeConvos,\n      askAdditional,\n      latestMessage,\n    ],\n  );\n\n  const submitPrompt = useCallback(\n    (text: string) => {\n      const parsedText = replaceSpecialVars({ text, user });\n      if (autoSendPrompts) {\n        submitMessage({ text: parsedText });\n        return;\n      }\n\n      const currentText = methods.getValues('text');\n      const newText = currentText.trim().length > 1 ? `\\n${parsedText}` : parsedText;\n      setActivePrompt(newText);\n    },\n    [autoSendPrompts, submitMessage, setActivePrompt, methods, user],\n  );\n\n  return { submitMessage, submitPrompt };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Nav/index.ts",
    "content": "export { default as useNavScrolling } from './useNavScrolling';\nexport * from './useNavHelpers';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Nav/useNavHelpers.ts",
    "content": "import { useCallback, useEffect, useRef } from 'react';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport type { Location } from 'react-router-dom';\n\nexport function useCustomLink<T = HTMLAnchorElement>(\n  route: string,\n  callback?: (event: React.MouseEvent<T>) => void,\n) {\n  const navigate = useNavigate();\n  const location = useLocation();\n  const clickHandler = useCallback(\n    (event: React.MouseEvent<T>) => {\n      if (callback) {\n        callback(event);\n      }\n      if (event.button === 0 && !(event.ctrlKey || event.metaKey)) {\n        event.preventDefault();\n        navigate(route, { state: { prevLocation: location } });\n      }\n    },\n    [navigate, route, callback, location],\n  );\n  return clickHandler;\n}\n\nexport const usePreviousLocation = () => {\n  const location = useLocation();\n  const previousLocationRef: React.MutableRefObject<Location<unknown> | undefined> = useRef();\n\n  useEffect(() => {\n    previousLocationRef.current = location.state?.prevLocation;\n  }, [location]);\n\n  return previousLocationRef;\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Nav/useNavScrolling.ts",
    "content": "import throttle from 'lodash/throttle';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport type { FetchNextPageOptions, InfiniteQueryObserverResult } from '@tanstack/react-query';\n\nexport default function useNavScrolling<TData>({\n  hasNextPage,\n  isFetchingNextPage,\n  setShowLoading,\n  fetchNextPage,\n}: {\n  hasNextPage?: boolean;\n  isFetchingNextPage: boolean;\n  setShowLoading: React.Dispatch<React.SetStateAction<boolean>>;\n  fetchNextPage:\n    | ((\n        options?: FetchNextPageOptions | undefined,\n      ) => Promise<InfiniteQueryObserverResult<TData, unknown>>)\n    | undefined;\n}) {\n  const scrollPositionRef = useRef<number | null>(null);\n  const containerRef = useRef<HTMLDivElement | null>(null);\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const fetchNext = useCallback(\n    throttle(() => (fetchNextPage != null ? fetchNextPage() : () => ({})), 750, { leading: true }),\n    [fetchNextPage],\n  );\n\n  const handleScroll = useCallback(() => {\n    if (containerRef.current) {\n      const { scrollTop, clientHeight, scrollHeight } = containerRef.current;\n      const nearBottomOfList = scrollTop + clientHeight >= scrollHeight * 0.97;\n\n      if (nearBottomOfList && hasNextPage === true && !isFetchingNextPage) {\n        setShowLoading(true);\n        fetchNext();\n      } else {\n        setShowLoading(false);\n      }\n    }\n  }, [hasNextPage, isFetchingNextPage, fetchNext, setShowLoading]);\n\n  useEffect(() => {\n    const container = containerRef.current;\n    if (container) {\n      container.addEventListener('scroll', handleScroll);\n    }\n\n    return () => {\n      container?.removeEventListener('scroll', handleScroll);\n    };\n  }, [handleScroll, fetchNext]);\n\n  const moveToTop = useCallback(() => {\n    const container = containerRef.current;\n    if (container) {\n      scrollPositionRef.current = container.scrollTop;\n    }\n  }, [containerRef, scrollPositionRef]);\n\n  return {\n    containerRef,\n    moveToTop,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Nav/useSideNavLinks.ts",
    "content": "import { useMemo } from 'react';\nimport { MessageSquareQuote, ArrowRightToLine, Settings2, Bookmark } from 'lucide-react';\nimport {\n  isAssistantsEndpoint,\n  isAgentsEndpoint,\n  PermissionTypes,\n  isParamEndpoint,\n  EModelEndpoint,\n  Permissions,\n} from '~/data-provider/data-provider/src';\nimport type { TConfig, TInterfaceConfig } from '~/data-provider/data-provider/src';\nimport type { NavLink } from '~/common';\nimport AgentPanelSwitch from '~/components/SidePanel/Agents/AgentPanelSwitch';\nimport BookmarkPanel from '~/components/SidePanel/Bookmarks/BookmarkPanel';\nimport PanelSwitch from '~/components/SidePanel/Builder/PanelSwitch';\nimport PromptsAccordion from '~/components/Prompts/PromptsAccordion';\nimport Parameters from '~/components/SidePanel/Parameters/Panel';\nimport FilesPanel from '~/components/SidePanel/Files/Panel';\nimport { Blocks, AttachmentIcon } from '~/components/svg';\nimport { useHasAccess } from '~/hooks';\n\nexport default function useSideNavLinks({\n  hidePanel,\n  assistants,\n  agents,\n  keyProvided,\n  endpoint,\n  endpointType,\n  interfaceConfig,\n}: {\n  hidePanel: () => void;\n  assistants?: TConfig | null;\n  agents?: TConfig | null;\n  keyProvided: boolean;\n  endpoint?: EModelEndpoint | null;\n  endpointType?: EModelEndpoint | null;\n  interfaceConfig: Partial<TInterfaceConfig>;\n}) {\n  const hasAccessToPrompts = useHasAccess({\n    permissionType: PermissionTypes.PROMPTS,\n    permission: Permissions.USE,\n  });\n  const hasAccessToBookmarks = useHasAccess({\n    permissionType: PermissionTypes.BOOKMARKS,\n    permission: Permissions.USE,\n  });\n  const hasAccessToAgents = useHasAccess({\n    permissionType: PermissionTypes.AGENTS,\n    permission: Permissions.USE,\n  });\n  const hasAccessToCreateAgents = useHasAccess({\n    permissionType: PermissionTypes.AGENTS,\n    permission: Permissions.CREATE,\n  });\n\n  const Links = useMemo(() => {\n    const links: NavLink[] = [];\n    if (\n      isAssistantsEndpoint(endpoint) &&\n      assistants &&\n      assistants.disableBuilder !== true &&\n      keyProvided\n    ) {\n      links.push({\n        title: 'com_sidepanel_assistant_builder',\n        label: '',\n        icon: Blocks,\n        id: 'assistants',\n        Component: PanelSwitch,\n      });\n    }\n\n    if (\n      hasAccessToAgents &&\n      hasAccessToCreateAgents &&\n      isAgentsEndpoint(endpoint) &&\n      agents &&\n      agents.disableBuilder !== true\n    ) {\n      links.push({\n        title: 'com_sidepanel_agent_builder',\n        label: '',\n        icon: Blocks,\n        id: 'agents',\n        Component: AgentPanelSwitch,\n      });\n    }\n\n    if (hasAccessToPrompts) {\n      links.push({\n        title: 'com_ui_prompts',\n        label: '',\n        icon: MessageSquareQuote,\n        id: 'prompts',\n        Component: PromptsAccordion,\n      });\n    }\n\n    if (\n      interfaceConfig.parameters === true &&\n      isParamEndpoint(endpoint ?? '', endpointType ?? '') === true &&\n      !isAgentsEndpoint(endpoint) &&\n      keyProvided\n    ) {\n      links.push({\n        title: 'com_sidepanel_parameters',\n        label: '',\n        icon: Settings2,\n        id: 'parameters',\n        Component: Parameters,\n      });\n    }\n\n    links.push({\n      title: 'com_sidepanel_attach_files',\n      label: '',\n      icon: AttachmentIcon,\n      id: 'files',\n      Component: FilesPanel,\n    });\n\n    if (hasAccessToBookmarks) {\n      links.push({\n        title: 'com_sidepanel_conversation_tags',\n        label: '',\n        icon: Bookmark,\n        id: 'bookmarks',\n        Component: BookmarkPanel,\n      });\n    }\n\n    links.push({\n      title: 'com_sidepanel_hide_panel',\n      label: '',\n      icon: ArrowRightToLine,\n      onClick: hidePanel,\n      id: 'hide-panel',\n    });\n\n    return links;\n  }, [\n    interfaceConfig.parameters,\n    keyProvided,\n    assistants,\n    endpointType,\n    endpoint,\n    agents,\n    hasAccessToAgents,\n    hasAccessToPrompts,\n    hasAccessToBookmarks,\n    hasAccessToCreateAgents,\n    hidePanel,\n  ]);\n\n  return Links;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/index.ts",
    "content": "export { default as useAuthCodeTool } from './useAuthCodeTool';\nexport { default as usePluginInstall } from './usePluginInstall';\nexport { default as useCodeApiKeyForm } from './useCodeApiKeyForm';\nexport { default as usePluginDialogHelpers } from './usePluginDialogHelpers';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/useAuthCodeTool.ts",
    "content": "import { useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { AuthType, Tools, QueryKeys } from '~/data-provider/data-provider/src';\nimport { useUpdateUserPluginsMutation } from '~/data-provider/data-provider/src/react-query';\n// import { useToastContext } from '~/Providers';\n\nconst useAuthCodeTool = (options?: { isEntityTool: boolean }) => {\n  // const { showToast } = useToastContext();\n  const queryClient = useQueryClient();\n  const isEntityTool = options?.isEntityTool ?? true;\n  const updateUserPlugins = useUpdateUserPluginsMutation({\n    onMutate: (vars) => {\n      queryClient.setQueryData([QueryKeys.toolAuth, Tools.execute_code], () => ({\n        authenticated: vars.action === 'install',\n        message: AuthType.USER_PROVIDED,\n      }));\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries([QueryKeys.toolAuth, Tools.execute_code]);\n    },\n    onError: () => {\n      queryClient.invalidateQueries([QueryKeys.toolAuth, Tools.execute_code]);\n    },\n  });\n\n  const installTool = useCallback(\n    (apiKey: string) => {\n      updateUserPlugins.mutate({\n        pluginKey: Tools.execute_code,\n        action: 'install',\n        auth: { LIBRECHAT_CODE_API_KEY: apiKey },\n        isEntityTool,\n      });\n    },\n    [updateUserPlugins, isEntityTool],\n  );\n\n  const removeTool = useCallback(() => {\n    updateUserPlugins.mutate({\n      pluginKey: Tools.execute_code,\n      action: 'uninstall',\n      auth: { LIBRECHAT_CODE_API_KEY: null },\n      isEntityTool,\n    });\n  }, [updateUserPlugins, isEntityTool]);\n\n  return {\n    removeTool,\n    installTool,\n  };\n};\n\nexport default useAuthCodeTool;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/useCodeApiKeyForm.ts",
    "content": "// client/src/hooks/Plugins/useCodeApiKeyForm.ts\nimport { useState, useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\nimport type { ApiKeyFormData } from '~/common';\nimport useAuthCodeTool from '~/hooks/Plugins/useAuthCodeTool';\n\nexport default function useCodeApiKeyForm({\n  onSubmit,\n  onRevoke,\n}: {\n  onSubmit?: () => void;\n  onRevoke?: () => void;\n}) {\n  const methods = useForm<ApiKeyFormData>();\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const { installTool, removeTool } = useAuthCodeTool({ isEntityTool: true });\n  const { reset } = methods;\n\n  const onSubmitHandler = useCallback(\n    (data: { apiKey: string }) => {\n      reset();\n      installTool(data.apiKey);\n      setIsDialogOpen(false);\n      onSubmit?.();\n    },\n    [onSubmit, reset, installTool],\n  );\n\n  const handleRevokeApiKey = useCallback(() => {\n    reset();\n    removeTool();\n    setIsDialogOpen(false);\n    onRevoke?.();\n  }, [reset, onRevoke, removeTool]);\n\n  return {\n    methods,\n    isDialogOpen,\n    setIsDialogOpen,\n    handleRevokeApiKey,\n    onSubmit: onSubmitHandler,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/usePluginDialogHelpers.ts",
    "content": "import { useState, useCallback } from 'react';\nimport type { TPlugin } from '~/data-provider/data-provider/src';\n\nfunction usePluginDialogHelpers() {\n  const [maxPage, setMaxPage] = useState(1);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [itemsPerPage, setItemsPerPage] = useState(1);\n  const [searchChanged, setSearchChanged] = useState(false);\n\n  const [searchValue, setSearchValue] = useState('');\n  const [error, setError] = useState<boolean>(false);\n  const [errorMessage, setErrorMessage] = useState<string>('');\n  const [showPluginAuthForm, setShowPluginAuthForm] = useState<boolean>(false);\n  const [selectedPlugin, setSelectedPlugin] = useState<TPlugin | undefined>(undefined);\n\n  const calculateColumns = (node: HTMLElement) => {\n    const width = node.offsetWidth;\n    let columns: number;\n    if (width < 501) {\n      setItemsPerPage(8);\n      return;\n    } else if (width < 640) {\n      columns = 2;\n    } else if (width < 1024) {\n      columns = 3;\n    } else {\n      columns = 4;\n    }\n    setItemsPerPage(columns * 2); // 2 rows\n  };\n\n  const gridRef: (instance: HTMLDivElement | null) => void = useCallback(\n    (node) => {\n      if (node !== null) {\n        if (itemsPerPage === 1) {\n          calculateColumns(node);\n        }\n        const resizeObserver = new ResizeObserver(() => calculateColumns(node));\n        resizeObserver.observe(node);\n      }\n    },\n    [itemsPerPage],\n  );\n\n  const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setSearchValue(e.target.value);\n    setSearchChanged(true);\n  };\n\n  const handleChangePage = (page: number) => {\n    setCurrentPage(page);\n  };\n\n  return {\n    maxPage,\n    setMaxPage,\n    currentPage,\n    setCurrentPage,\n    itemsPerPage,\n    setItemsPerPage,\n    searchChanged,\n    setSearchChanged,\n    searchValue,\n    setSearchValue,\n    gridRef,\n    handleSearch,\n    handleChangePage,\n    error,\n    setError,\n    errorMessage,\n    setErrorMessage,\n    showPluginAuthForm,\n    setShowPluginAuthForm,\n    selectedPlugin,\n    setSelectedPlugin,\n  };\n}\n\nexport default usePluginDialogHelpers;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/usePluginInstall.ts",
    "content": "// hooks/Plugins/usePluginInstall.ts\nimport { useCallback } from 'react';\nimport { useUpdateUserPluginsMutation } from '~/data-provider/data-provider/src/react-query';\nimport type {\n  TError,\n  TUser,\n  TUpdateUserPlugins,\n  TPlugin,\n  TPluginAction,\n} from '~/data-provider/data-provider/src';\nimport { useSetRecoilState } from 'recoil';\nimport store from '~/store';\n\ninterface PluginStoreHandlers {\n  onInstallError?: (error: TError) => void;\n  onUninstallError?: (error: TError) => void;\n  onInstallSuccess?: (data: TUser, variables: TUpdateUserPlugins, context: unknown) => void;\n  onUninstallSuccess?: (data: TUser, variables: TUpdateUserPlugins, context: unknown) => void;\n}\n\nexport default function usePluginInstall(handlers: PluginStoreHandlers = {}) {\n  const setAvailableTools = useSetRecoilState(store.availableTools);\n  const { onInstallError, onInstallSuccess, onUninstallError, onUninstallSuccess } = handlers;\n  const updateUserPlugins = useUpdateUserPluginsMutation();\n\n  const installPlugin = useCallback(\n    (pluginAction: TPluginAction, plugin: TPlugin) => {\n      updateUserPlugins.mutate(pluginAction, {\n        onError: (error: unknown) => {\n          if (onInstallError) {\n            onInstallError(error as TError);\n          }\n        },\n        onSuccess: (...rest) => {\n          setAvailableTools((prev) => {\n            return { ...prev, [plugin.pluginKey]: plugin };\n          });\n          if (onInstallSuccess) {\n            onInstallSuccess(...rest);\n          }\n        },\n      });\n    },\n    [updateUserPlugins, onInstallError, onInstallSuccess, setAvailableTools],\n  );\n\n  const uninstallPlugin = useCallback(\n    (plugin: string) => {\n      updateUserPlugins.mutate(\n        { pluginKey: plugin, action: 'uninstall', auth: null },\n        {\n          onError: (error: unknown) => {\n            if (onUninstallError) {\n              onUninstallError(error as TError);\n            }\n          },\n          onSuccess: (...rest) => {\n            setAvailableTools((prev) => {\n              const newAvailableTools = { ...prev };\n              delete newAvailableTools[plugin];\n              return newAvailableTools;\n            });\n            if (onUninstallSuccess) {\n              onUninstallSuccess(...rest);\n            }\n          },\n        },\n      );\n    },\n    [updateUserPlugins, onUninstallError, onUninstallSuccess, setAvailableTools],\n  );\n\n  return {\n    installPlugin,\n    uninstallPlugin,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Plugins/useToolCallsMap.ts",
    "content": "import { ToolCallResult } from '~/data-provider/data-provider/src';\nimport { useMemo } from 'react';\nimport { useGetToolCalls } from '~/data-provider';\nimport { mapToolCalls, logger } from '~/utils';\n\ntype ToolCallsMap = {\n  [x: string]: ToolCallResult[] | undefined;\n};\n\nexport default function useToolCallsMap({\n  conversationId,\n}: {\n  conversationId: string;\n}): ToolCallsMap | undefined {\n  const { data: toolCallsMap = null } = useGetToolCalls(\n    { conversationId },\n    {\n      select: (res) => mapToolCalls(res),\n    },\n  );\n\n  const result = useMemo<ToolCallsMap | undefined>(() => {\n    return toolCallsMap !== null ? toolCallsMap : undefined;\n  }, [toolCallsMap]);\n\n  logger.log('tools', 'tool calls map:', result);\n  return result;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Prompts/index.ts",
    "content": "export { default as useCategories } from './useCategories';\nexport { default as usePromptGroupsNav } from './usePromptGroupsNav';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Prompts/useCategories.tsx",
    "content": "import { useGetCategories } from '~/data-provider';\nimport CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';\nimport useLocalize, { TranslationKeys } from '~/hooks/useLocalize';\n\nconst loadingCategories: { label: TranslationKeys; value: string }[] = [\n  {\n    label: 'com_ui_loading',\n    value: '',\n  },\n];\n\nconst emptyCategory: { label: TranslationKeys; value: string } = {\n  label: 'com_ui_empty_category',\n  value: '',\n};\n\nconst useCategories = (className = '') => {\n  const localize = useLocalize();\n  const { data: categories = loadingCategories } = useGetCategories({\n    select: (data) =>\n      data.map((category) => ({\n        label: localize(category.label as TranslationKeys),\n        value: category.value,\n        icon: category.value ? (\n          <CategoryIcon category={category.value} className={className} />\n        ) : null,\n      })),\n  });\n\n  return { categories, emptyCategory };\n};\n\nexport default useCategories;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Prompts/usePromptGroupsNav.ts",
    "content": "import { useRecoilState, useRecoilValue } from 'recoil';\nimport { useMemo, useRef, useEffect, useCallback } from 'react';\nimport { usePromptGroupsInfiniteQuery } from '~/data-provider';\nimport debounce from 'lodash/debounce';\nimport store from '~/store';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\n\nexport default function usePromptGroupsNav() {\n  const queryClient = useQueryClient();\n  const category = useRecoilValue(store.promptsCategory);\n  const [name, setName] = useRecoilState(store.promptsName);\n  const [pageSize, setPageSize] = useRecoilState(store.promptsPageSize);\n  const [pageNumber, setPageNumber] = useRecoilState(store.promptsPageNumber);\n\n  const maxPageNumberReached = useRef(1);\n\n  useEffect(() => {\n    if (pageNumber > 1 && pageNumber > maxPageNumberReached.current) {\n      maxPageNumberReached.current = pageNumber;\n    }\n  }, [pageNumber]);\n\n  const groupsQuery = usePromptGroupsInfiniteQuery({\n    name,\n    pageSize,\n    category,\n    pageNumber: pageNumber + '',\n  });\n\n  useEffect(() => {\n    maxPageNumberReached.current = 1;\n    setPageNumber(1);\n    queryClient.resetQueries([QueryKeys.promptGroups, name, category, pageSize]);\n  }, [pageSize, name, category, setPageNumber]);\n\n  const promptGroups = useMemo(() => {\n    return groupsQuery.data?.pages[pageNumber - 1 + '']?.promptGroups || [];\n  }, [groupsQuery.data, pageNumber]);\n\n  const nextPage = () => {\n    setPageNumber((prev) => prev + 1);\n    groupsQuery.hasNextPage && groupsQuery.fetchNextPage();\n  };\n\n  const prevPage = () => {\n    setPageNumber((prev) => prev - 1);\n    groupsQuery.hasPreviousPage && groupsQuery.fetchPreviousPage();\n  };\n\n  const isFetching = groupsQuery.isFetchingNextPage;\n  const hasNextPage = !!groupsQuery.hasNextPage || maxPageNumberReached.current > pageNumber;\n  const hasPreviousPage = !!groupsQuery.hasPreviousPage || pageNumber > 1;\n\n  const debouncedSetName = useCallback(\n    debounce((nextValue: string) => {\n      setName(nextValue);\n    }, 850),\n    [setName],\n  );\n\n  return {\n    name,\n    setName: debouncedSetName,\n    nextPage,\n    prevPage,\n    isFetching,\n    pageSize,\n    setPageSize,\n    hasNextPage,\n    groupsQuery,\n    promptGroups,\n    hasPreviousPage,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Roles/index.ts",
    "content": "export { default as useHasAccess } from './useHasAccess';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Roles/useHasAccess.ts",
    "content": "import { useMemo, useCallback, useContext } from 'react';\nimport type { TUser, PermissionTypes, Permissions } from '~/data-provider/data-provider/src';\nimport { AuthContext } from '~/hooks/AuthContext';\n\nconst useHasAccess = ({\n  permissionType,\n  permission,\n}: {\n  permissionType: PermissionTypes;\n  permission: Permissions;\n}) => {\n  const authContext = useContext(AuthContext);\n  const user = authContext?.user;\n  const roles = authContext?.roles;\n  const isAuthenticated = authContext?.isAuthenticated || false;\n\n  const checkAccess = useCallback(\n    ({\n      user,\n      permissionType,\n      permission,\n    }: {\n      user?: TUser | null;\n      permissionType: PermissionTypes;\n      permission: Permissions;\n    }) => {\n      if (!authContext) {\n        return false;\n      }\n\n      if (isAuthenticated && user?.role != null && roles && roles[user.role]) {\n        return roles[user.role]?.[permissionType]?.[permission] === true;\n      }\n      return false;\n    },\n    [authContext, isAuthenticated, roles],\n  );\n\n  const hasAccess = useMemo(\n    () => checkAccess({ user, permissionType, permission }),\n    [user, permissionType, permission, checkAccess],\n  );\n\n  return hasAccess;\n};\n\nexport default useHasAccess;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/index.ts",
    "content": "export { default as useSSE } from './useSSE';\nexport { default as useStepHandler } from './useStepHandler';\nexport { default as useContentHandler } from './useContentHandler';\nexport { default as useAttachmentHandler } from './useAttachmentHandler';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/useAttachmentHandler.ts",
    "content": "import { useSetRecoilState } from 'recoil';\nimport type { TAttachment, EventSubmission } from '~/data-provider/data-provider/src';\nimport store from '~/store';\n\nexport default function useAttachmentHandler() {\n  const setAttachmentsMap = useSetRecoilState(store.messageAttachmentsMap);\n\n  return ({ data }: { data: TAttachment; submission: EventSubmission }) => {\n    const { messageId } = data;\n\n    setAttachmentsMap((prevMap) => {\n      const messageAttachments =\n        (prevMap as Record<string, TAttachment[] | undefined>)[messageId] || [];\n      return {\n        ...prevMap,\n        [messageId]: [...messageAttachments, data],\n      };\n    });\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/useContentHandler.ts",
    "content": "import { useCallback, useMemo } from 'react';\nimport { ContentTypes } from '~/data-provider/data-provider/src';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type {\n  Text,\n  TMessage,\n  ImageFile,\n  ContentPart,\n  PartMetadata,\n  TContentData,\n  EventSubmission,\n  TMessageContentParts,\n} from '~/data-provider/data-provider/src';\nimport { addFileToCache } from '~/utils';\n\ntype TUseContentHandler = {\n  setMessages: (messages: TMessage[]) => void;\n  getMessages: () => TMessage[] | undefined;\n};\n\ntype TContentHandler = {\n  data: TContentData;\n  submission: EventSubmission;\n};\n\nexport default function useContentHandler({ setMessages, getMessages }: TUseContentHandler) {\n  const queryClient = useQueryClient();\n  const messageMap = useMemo(() => new Map<string, TMessage>(), []);\n  return useCallback(\n    ({ data, submission }: TContentHandler) => {\n      const { type, messageId, thread_id, conversationId, index } = data;\n\n      const _messages = getMessages();\n      const messages =\n        _messages\n          ?.filter((m) => m.messageId !== messageId)\n          .map((msg) => ({ ...msg, thread_id })) ?? [];\n      const userMessage = messages[messages.length - 1] as TMessage | undefined;\n\n      const { initialResponse } = submission;\n\n      let response = messageMap.get(messageId);\n      if (!response) {\n        response = {\n          ...(initialResponse as TMessage),\n          parentMessageId: userMessage?.messageId ?? '',\n          conversationId,\n          messageId,\n          thread_id,\n        };\n        messageMap.set(messageId, response);\n      }\n\n      // TODO: handle streaming for non-text\n      const textPart: Text | string | undefined = data[ContentTypes.TEXT];\n      const part: ContentPart =\n        textPart != null && typeof textPart === 'string' ? { value: textPart } : data[type];\n\n      if (type === ContentTypes.IMAGE_FILE) {\n        addFileToCache(queryClient, part as ImageFile & PartMetadata);\n      }\n\n      /* spreading the content array to avoid mutation */\n      response.content = [...(response.content ?? [])];\n\n      response.content[index] = { type, [type]: part } as TMessageContentParts;\n\n      if (\n        type !== ContentTypes.TEXT &&\n        initialResponse.content &&\n        ((response.content[response.content.length - 1].type === ContentTypes.TOOL_CALL &&\n          response.content[response.content.length - 1][ContentTypes.TOOL_CALL].progress === 1) ||\n          response.content[response.content.length - 1].type === ContentTypes.IMAGE_FILE)\n      ) {\n        response.content.push(initialResponse.content[0]);\n      }\n\n      setMessages([...messages, response]);\n    },\n    [queryClient, getMessages, messageMap, setMessages],\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/useEventHandlers.ts",
    "content": "import { v4 } from 'uuid';\nimport { useCallback, useRef } from 'react';\nimport { useSetRecoilState } from 'recoil';\nimport { useParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n  QueryKeys,\n  Constants,\n  EndpointURLs,\n  tPresetSchema,\n  tMessageSchema,\n  tConvoUpdateSchema,\n} from '~/data-provider/data-provider/src';\nimport type {\n  TMessage,\n  TConversation,\n  EventSubmission,\n  ConversationData,\n} from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater, Resetter } from 'recoil';\nimport type { TResData, TFinalResData, ConvoGenerator } from '~/common';\nimport type { TGenTitleMutation } from '~/data-provider';\nimport {\n  scrollToEnd,\n  addConversation,\n  getAllContentText,\n  deleteConversation,\n  updateConversation,\n  getConversationById,\n} from '~/utils';\nimport useAttachmentHandler from '~/hooks/SSE/useAttachmentHandler';\nimport useContentHandler from '~/hooks/SSE/useContentHandler';\nimport useStepHandler from '~/hooks/SSE/useStepHandler';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport { MESSAGE_UPDATE_INTERVAL } from '~/common';\nimport { useLiveAnnouncer } from '~/Providers';\nimport store from '~/store';\n\ntype TSyncData = {\n  sync: boolean;\n  thread_id: string;\n  messages?: TMessage[];\n  requestMessage: TMessage;\n  responseMessage: TMessage;\n  conversationId: string;\n};\n\nexport type EventHandlerParams = {\n  isAddedRequest?: boolean;\n  genTitle?: TGenTitleMutation;\n  setCompleted: React.Dispatch<React.SetStateAction<Set<unknown>>>;\n  setMessages: (messages: TMessage[]) => void;\n  getMessages: () => TMessage[] | undefined;\n  setIsSubmitting: SetterOrUpdater<boolean>;\n  setConversation?: SetterOrUpdater<TConversation | null>;\n  newConversation?: ConvoGenerator;\n  setShowStopButton: SetterOrUpdater<boolean>;\n  resetLatestMessage?: Resetter;\n};\n\nexport default function useEventHandlers({\n  genTitle,\n  setMessages,\n  getMessages,\n  setCompleted,\n  isAddedRequest = false,\n  setConversation,\n  setIsSubmitting,\n  newConversation,\n  setShowStopButton,\n  resetLatestMessage,\n}: EventHandlerParams) {\n  const queryClient = useQueryClient();\n  const setAbortScroll = useSetRecoilState(store.abortScroll);\n  const { announcePolite } = useLiveAnnouncer();\n\n  const lastAnnouncementTimeRef = useRef(Date.now());\n  const { conversationId: paramId } = useParams();\n  const { token } = useAuthContext();\n\n  const contentHandler = useContentHandler({ setMessages, getMessages });\n  const stepHandler = useStepHandler({\n    setMessages,\n    getMessages,\n    announcePolite,\n    setIsSubmitting,\n    lastAnnouncementTimeRef,\n  });\n  const attachmentHandler = useAttachmentHandler();\n\n  const messageHandler = useCallback(\n    (data: string | undefined, submission: EventSubmission) => {\n      const {\n        messages,\n        userMessage,\n        plugin,\n        plugins,\n        initialResponse,\n        isRegenerate = false,\n      } = submission;\n      const text = data ?? '';\n      setIsSubmitting(true);\n\n      const currentTime = Date.now();\n      if (currentTime - lastAnnouncementTimeRef.current > MESSAGE_UPDATE_INTERVAL) {\n        announcePolite({ message: 'composing', isStatus: true });\n        lastAnnouncementTimeRef.current = currentTime;\n      }\n\n      if (isRegenerate) {\n        setMessages([\n          ...messages,\n          {\n            ...initialResponse,\n            text,\n            plugin: plugin ?? null,\n            plugins: plugins ?? [],\n            // unfinished: true\n          },\n        ]);\n      } else {\n        setMessages([\n          ...messages,\n          userMessage,\n          {\n            ...initialResponse,\n            text,\n            plugin: plugin ?? null,\n            plugins: plugins ?? [],\n            // unfinished: true\n          },\n        ]);\n      }\n    },\n    [setMessages, announcePolite, setIsSubmitting],\n  );\n\n  const cancelHandler = useCallback(\n    (data: TResData, submission: EventSubmission) => {\n      const { requestMessage, responseMessage, conversation } = data;\n      const { messages, isRegenerate = false } = submission;\n\n      const convoUpdate =\n        (conversation as TConversation | null) ?? (submission.conversation as TConversation);\n\n      // update the messages\n      if (isRegenerate) {\n        const messagesUpdate = (\n          [...messages, responseMessage] as Array<TMessage | undefined>\n        ).filter((msg) => msg);\n        setMessages(messagesUpdate as TMessage[]);\n      } else {\n        const messagesUpdate = (\n          [...messages, requestMessage, responseMessage] as Array<TMessage | undefined>\n        ).filter((msg) => msg);\n        setMessages(messagesUpdate as TMessage[]);\n      }\n\n      const isNewConvo = conversation.conversationId !== submission.conversation.conversationId;\n      if (isNewConvo) {\n        queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          return deleteConversation(convoData, submission.conversation.conversationId as string);\n        });\n      }\n\n      // refresh title\n      if (genTitle && isNewConvo && requestMessage.parentMessageId === Constants.NO_PARENT) {\n        setTimeout(() => {\n          genTitle.mutate({ conversationId: convoUpdate.conversationId as string });\n        }, 2500);\n      }\n\n      if (setConversation && !isAddedRequest) {\n        setConversation((prevState) => {\n          const update = {\n            ...prevState,\n            ...convoUpdate,\n          };\n\n          return update;\n        });\n      }\n\n      setIsSubmitting(false);\n    },\n    [setMessages, setConversation, genTitle, isAddedRequest, queryClient, setIsSubmitting],\n  );\n\n  const syncHandler = useCallback(\n    (data: TSyncData, submission: EventSubmission) => {\n      const { conversationId, thread_id, responseMessage, requestMessage } = data;\n      const { initialResponse, messages: _messages, userMessage } = submission;\n\n      const messages = _messages.filter((msg) => msg.messageId !== userMessage.messageId);\n\n      setMessages([\n        ...messages,\n        requestMessage,\n        {\n          ...initialResponse,\n          ...responseMessage,\n        },\n      ]);\n\n      announcePolite({\n        message: 'start',\n        isStatus: true,\n      });\n\n      let update = {} as TConversation;\n      if (setConversation && !isAddedRequest) {\n        setConversation((prevState) => {\n          let title = prevState?.title;\n          const parentId = requestMessage.parentMessageId;\n          if (\n            parentId !== Constants.NO_PARENT &&\n            (title?.toLowerCase().includes('new chat') ?? false)\n          ) {\n            const convos = queryClient.getQueryData<ConversationData>([QueryKeys.allConversations]);\n            const cachedConvo = getConversationById(convos, conversationId);\n            title = cachedConvo?.title;\n          }\n\n          update = tConvoUpdateSchema.parse({\n            ...prevState,\n            conversationId,\n            thread_id,\n            title,\n            messages: [requestMessage.messageId, responseMessage.messageId],\n          }) as TConversation;\n\n          return update;\n        });\n\n        queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          if (requestMessage.parentMessageId === Constants.NO_PARENT) {\n            return addConversation(convoData, update);\n          } else {\n            return updateConversation(convoData, update);\n          }\n        });\n      } else if (setConversation) {\n        setConversation((prevState) => {\n          update = tConvoUpdateSchema.parse({\n            ...prevState,\n            conversationId,\n            thread_id,\n            messages: [requestMessage.messageId, responseMessage.messageId],\n          }) as TConversation;\n          return update;\n        });\n      }\n\n      setShowStopButton(true);\n      if (resetLatestMessage) {\n        resetLatestMessage();\n      }\n    },\n    [\n      queryClient,\n      setMessages,\n      isAddedRequest,\n      announcePolite,\n      setConversation,\n      setShowStopButton,\n      resetLatestMessage,\n    ],\n  );\n\n  const createdHandler = useCallback(\n    (data: TResData, submission: EventSubmission) => {\n      const { messages, userMessage, isRegenerate = false, isTemporary = false } = submission;\n      const initialResponse = {\n        ...submission.initialResponse,\n        parentMessageId: userMessage.messageId,\n        messageId: userMessage.messageId + '_',\n      };\n      if (isRegenerate) {\n        setMessages([...messages, initialResponse]);\n      } else {\n        setMessages([...messages, userMessage, initialResponse]);\n      }\n\n      const { conversationId, parentMessageId } = userMessage;\n      lastAnnouncementTimeRef.current = Date.now();\n      announcePolite({\n        message: 'start',\n        isStatus: true,\n      });\n\n      let update = {} as TConversation;\n      if (setConversation && !isAddedRequest) {\n        setConversation((prevState) => {\n          let title = prevState?.title;\n          const parentId = isRegenerate ? userMessage.overrideParentMessageId : parentMessageId;\n          if (\n            parentId !== Constants.NO_PARENT &&\n            (title?.toLowerCase().includes('new chat') ?? false)\n          ) {\n            const convos = queryClient.getQueryData<ConversationData>([QueryKeys.allConversations]);\n            const cachedConvo = getConversationById(convos, conversationId);\n            title = cachedConvo?.title;\n          }\n\n          update = tConvoUpdateSchema.parse({\n            ...prevState,\n            conversationId,\n            title,\n          }) as TConversation;\n\n          // hack\n          update.flowType = submission.conversation?.flowType;\n          return update;\n        });\n\n        if (isTemporary) {\n          return;\n        }\n        queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          if (parentMessageId === Constants.NO_PARENT) {\n            return addConversation(convoData, update);\n          } else {\n            return updateConversation(convoData, update);\n          }\n        });\n      } else if (setConversation) {\n        setConversation((prevState) => {\n          update = tConvoUpdateSchema.parse({\n            ...prevState,\n            conversationId,\n          }) as TConversation;\n          return update;\n        });\n      }\n\n      if (resetLatestMessage) {\n        resetLatestMessage();\n      }\n\n      scrollToEnd(() => setAbortScroll(false));\n    },\n    [\n      setMessages,\n      queryClient,\n      setAbortScroll,\n      isAddedRequest,\n      announcePolite,\n      setConversation,\n      resetLatestMessage,\n    ],\n  );\n\n  const finalHandler = useCallback(\n    (data: TFinalResData, submission: EventSubmission) => {\n      const { requestMessage, responseMessage, conversation, runMessages } = data;\n      const {\n        messages,\n        conversation: submissionConvo,\n        isRegenerate = false,\n        isTemporary = false,\n      } = submission;\n\n      setShowStopButton(false);\n      setCompleted((prev) => new Set(prev.add(submission.initialResponse.messageId)));\n\n      const currentMessages = getMessages();\n      /* Early return if messages are empty; i.e., the user navigated away */\n      if (!currentMessages || currentMessages.length === 0) {\n        return setIsSubmitting(false);\n      }\n\n      /* a11y announcements */\n      announcePolite({\n        message: 'end',\n        isStatus: true,\n      });\n\n      announcePolite({\n        message: getAllContentText(responseMessage),\n      });\n\n      /* Update messages; if assistants endpoint, client doesn't receive responseMessage */\n      if (runMessages) {\n        setMessages([...runMessages]);\n      } else if (isRegenerate && responseMessage) {\n        setMessages([...messages, responseMessage]);\n      } else if (requestMessage != null && responseMessage != null) {\n        setMessages([...messages, requestMessage, responseMessage]);\n      }\n\n      const isNewConvo = conversation.conversationId !== submissionConvo.conversationId;\n      if (isNewConvo) {\n        queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n          if (!convoData) {\n            return convoData;\n          }\n          return deleteConversation(convoData, submissionConvo.conversationId as string);\n        });\n      }\n\n      /* Refresh title */\n      if (\n        genTitle &&\n        isNewConvo &&\n        !isTemporary &&\n        requestMessage &&\n        requestMessage.parentMessageId === Constants.NO_PARENT\n      ) {\n        setTimeout(() => {\n          genTitle.mutate({ conversationId: conversation.conversationId as string });\n        }, 2500);\n      }\n\n      if (setConversation && isAddedRequest !== true) {\n        if (window.location.pathname === '/c/new') {\n          window.history.pushState({}, '', '/c/' + conversation.conversationId);\n        }\n\n        setConversation((prevState) => {\n          const update = {\n            ...prevState,\n            ...conversation,\n          };\n\n          if (prevState?.model != null && prevState.model !== submissionConvo.model) {\n            update.model = prevState.model;\n          }\n\n          return update;\n        });\n      }\n\n      setIsSubmitting(false);\n    },\n    [\n      genTitle,\n      queryClient,\n      getMessages,\n      setMessages,\n      setCompleted,\n      isAddedRequest,\n      announcePolite,\n      setConversation,\n      setIsSubmitting,\n      setShowStopButton,\n    ],\n  );\n\n  const errorHandler = useCallback(\n    ({ data, submission }: { data?: TResData; submission: EventSubmission }) => {\n      const { messages, userMessage, initialResponse } = submission;\n\n      setCompleted((prev) => new Set(prev.add(initialResponse.messageId)));\n\n      const conversationId = userMessage.conversationId ?? submission.conversationId ?? '';\n\n      const parseErrorResponse = (data: TResData | Partial<TMessage>) => {\n        const metadata = data['responseMessage'] ?? data;\n        const errorMessage: Partial<TMessage> = {\n          ...initialResponse,\n          ...metadata,\n          error: true,\n          parentMessageId: userMessage.messageId,\n        };\n\n        if (errorMessage.messageId === undefined || errorMessage.messageId === '') {\n          errorMessage.messageId = v4();\n        }\n\n        return tMessageSchema.parse(errorMessage);\n      };\n\n      if (!data) {\n        const convoId = conversationId || v4();\n        const errorResponse = parseErrorResponse({\n          text: 'Error connecting to server, try refreshing the page.',\n          ...submission,\n          conversationId: convoId,\n        });\n        setMessages([...messages, userMessage, errorResponse]);\n        if (newConversation) {\n          newConversation({\n            template: { conversationId: convoId },\n            preset: tPresetSchema.parse(submission.conversation),\n          });\n        }\n        setIsSubmitting(false);\n        return;\n      }\n\n      const receivedConvoId = data.conversationId ?? '';\n      if (!conversationId && !receivedConvoId) {\n        const convoId = v4();\n        const errorResponse = parseErrorResponse(data);\n        setMessages([...messages, userMessage, errorResponse]);\n        if (newConversation) {\n          newConversation({\n            template: { conversationId: convoId },\n            preset: tPresetSchema.parse(submission.conversation),\n          });\n        }\n        setIsSubmitting(false);\n        return;\n      } else if (!receivedConvoId) {\n        const errorResponse = parseErrorResponse(data);\n        setMessages([...messages, userMessage, errorResponse]);\n        setIsSubmitting(false);\n        return;\n      }\n\n      console.log('Error:', data);\n      const errorResponse = tMessageSchema.parse({\n        ...data,\n        error: true,\n        parentMessageId: userMessage.messageId,\n      });\n\n      setMessages([...messages, userMessage, errorResponse]);\n      if (receivedConvoId && paramId === 'new' && newConversation) {\n        newConversation({\n          template: { conversationId: receivedConvoId },\n          preset: tPresetSchema.parse(submission.conversation),\n        });\n      }\n\n      setIsSubmitting(false);\n      return;\n    },\n    [setMessages, paramId, setIsSubmitting, setCompleted, newConversation],\n  );\n\n  const abortConversation = useCallback(\n    async (conversationId = '', submission: EventSubmission, messages?: TMessage[]) => {\n      const runAbortKey = `${conversationId}:${messages?.[messages.length - 1]?.messageId ?? ''}`;\n      console.log({ conversationId, submission, messages, runAbortKey });\n      const { endpoint: _endpoint, endpointType } =\n        (submission.conversation as TConversation | null) ?? {};\n      const endpoint = endpointType ?? _endpoint;\n      try {\n        const response = await fetch(`${EndpointURLs[endpoint ?? '']}/abort`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            // Authorization: `Bearer ${token}`,\n          },\n          body: JSON.stringify({\n            abortKey: runAbortKey,\n            endpoint,\n          }),\n        });\n\n        // Check if the response is JSON\n        const contentType = response.headers.get('content-type');\n        if (contentType != null && contentType.includes('application/json')) {\n          const data = await response.json();\n          console.log(`[aborted] RESPONSE STATUS: ${response.status}`, data);\n          if (response.status === 404) {\n            setIsSubmitting(false);\n            return;\n          }\n          if (data.final === true) {\n            finalHandler(data, submission);\n          } else {\n            cancelHandler(data, submission);\n          }\n        } else if (response.status === 204) {\n          const responseMessage = {\n            ...submission.initialResponse,\n          };\n\n          const data = {\n            requestMessage: submission.userMessage,\n            responseMessage: responseMessage,\n            conversation: submission.conversation,\n          };\n          console.log(`[aborted] RESPONSE STATUS: ${response.status}`, data);\n          setIsSubmitting(false);\n        } else {\n          throw new Error(\n            'Unexpected response from server; Status: ' +\n            response.status +\n            ' ' +\n            response.statusText,\n          );\n        }\n      } catch (error) {\n        console.error('Error cancelling request');\n        console.error(error);\n        const convoId = conversationId || v4();\n        const text =\n          submission.initialResponse.text.length > 45 ? submission.initialResponse.text : '';\n        const errorMessage = {\n          ...submission,\n          ...submission.initialResponse,\n          text: (text || (error as Error | undefined)?.message) ?? 'Error cancelling request',\n          unfinished: !!text.length,\n          error: true,\n        };\n        const errorResponse = tMessageSchema.parse(errorMessage);\n        setMessages([...submission.messages, submission.userMessage, errorResponse]);\n        if (newConversation) {\n          newConversation({\n            template: { conversationId: convoId },\n            preset: tPresetSchema.parse(submission.conversation),\n          });\n        }\n        setIsSubmitting(false);\n      }\n    },\n    [token, setIsSubmitting, finalHandler, cancelHandler, setMessages, newConversation],\n  );\n\n  return {\n    stepHandler,\n    syncHandler,\n    finalHandler,\n    errorHandler,\n    messageHandler,\n    contentHandler,\n    createdHandler,\n    attachmentHandler,\n    abortConversation,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/useSSE.ts",
    "content": "import { useEffect, useState } from 'react';\nimport { useSetRecoilState } from 'recoil';\nimport { SSE } from 'sse.js';\nimport { v4 } from 'uuid';\nimport type { TResData } from '~/common';\nimport { useGenTitleMutation, useGetStartupConfig, useGetUserBalance } from '~/data-provider';\nimport type { EventSubmission, TMessage, TPayload, TSubmission } from '~/data-provider/data-provider/src';\nimport {\n  /* @ts-ignore */\n  createPayload,\n  isAgentsEndpoint,\n  isAssistantsEndpoint,\n  removeNullishValues\n} from '~/data-provider/data-provider/src';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport store from '~/store';\nimport useLocalize from '../useLocalize';\nimport type { EventHandlerParams } from './useEventHandlers';\nimport useEventHandlers from './useEventHandlers';\n\ntype ChatHelpers = Pick<\n  EventHandlerParams,\n  | 'setMessages'\n  | 'getMessages'\n  | 'setConversation'\n  | 'setIsSubmitting'\n  | 'newConversation'\n  | 'resetLatestMessage'\n>;\n\nexport default function useSSE(\n  submission: TSubmission | null,\n  chatHelpers: ChatHelpers,\n  isAddedRequest = false,\n  runIndex = 0,\n) {\n  const genTitle = useGenTitleMutation();\n  const setActiveRunId = useSetRecoilState(store.activeRunFamily(runIndex));\n\n  const { token, isAuthenticated } = useAuthContext();\n  const [completed, setCompleted] = useState(new Set());\n  const setAbortScroll = useSetRecoilState(store.abortScrollFamily(runIndex));\n  const setShowStopButton = useSetRecoilState(store.showStopButtonByIndex(runIndex));\n\n  const {\n    setMessages,\n    getMessages,\n    setConversation,\n    setIsSubmitting,\n    newConversation,\n    resetLatestMessage,\n  } = chatHelpers;\n\n  const {\n    stepHandler,\n    syncHandler,\n    finalHandler,\n    errorHandler,\n    messageHandler,\n    contentHandler,\n    createdHandler,\n    attachmentHandler,\n    abortConversation,\n  } = useEventHandlers({\n    genTitle,\n    setMessages,\n    getMessages,\n    setCompleted,\n    isAddedRequest,\n    setConversation,\n    setIsSubmitting,\n    newConversation,\n    setShowStopButton,\n    resetLatestMessage,\n  });\n\n  const { data: startupConfig } = useGetStartupConfig();\n  const balanceQuery = useGetUserBalance({\n    enabled: !!isAuthenticated && startupConfig?.checkBalance,\n  });\n  const localize = useLocalize();\n\n  useEffect(() => {\n    if (submission == null || Object.keys(submission).length === 0) {\n      return setIsSubmitting(false);\n    }\n\n    let { userMessage } = submission;\n\n    const payloadData = createPayload(submission);\n    let { payload } = payloadData;\n    if (isAssistantsEndpoint(payload.endpoint) || isAgentsEndpoint(payload.endpoint)) {\n      payload = removeNullishValues(payload) as TPayload;\n    }\n\n    let textIndex = null;\n\n    const sse = new SSE(payloadData.server, {\n      payload: JSON.stringify(payload),\n      headers: {\n        'Content-Type': 'application/json',\n        // Authorization: `Bearer ${token}`\n      },\n    });\n\n    sse.addEventListener('attachment', (e: MessageEvent) => {\n      try {\n        const data = JSON.parse(e.data);\n        attachmentHandler({ data, submission: submission as EventSubmission });\n      } catch (error) {\n        console.error(error);\n      }\n    });\n\n    sse.addEventListener('message', (e: MessageEvent) => {\n      const data = JSON.parse(e.data);\n      console.log('data :>> ', data);\n\n      if (data.final != null) { // end\n        const { plugins } = data;\n        finalHandler(data, { ...submission, plugins } as EventSubmission);\n        (startupConfig?.checkBalance ?? false) && balanceQuery.refetch(); // 更新余额?\n        console.log('final', data);\n        return;\n      } else if (data.created != null) {\n        const runId = v4();\n        setActiveRunId(runId);\n        userMessage = {\n          ...userMessage,\n          ...data.message,\n          overrideParentMessageId: userMessage.overrideParentMessageId,\n        };\n\n        createdHandler(data, { ...submission, userMessage } as EventSubmission);\n      } else if (data.event != null) {\n        stepHandler(data, { ...submission, userMessage } as EventSubmission);\n      } else if (data.sync != null) {\n        const runId = v4();\n        setActiveRunId(runId);\n        /* synchronize messages to Assistants API as well as with real DB ID's */\n        syncHandler(data, { ...submission, userMessage } as EventSubmission);\n      } else if (data.type != null) {\n        const { text, index } = data;\n        if (text != null && index !== textIndex) {\n          textIndex = index;\n        }\n\n        contentHandler({ data, submission: submission as EventSubmission });\n      } else {\n        const text = data.text ?? data.response;\n        const { plugin, plugins } = data;\n\n        const initialResponse = {\n          ...(submission.initialResponse as TMessage),\n          parentMessageId: data.parentMessageId,\n          messageId: data.messageId,\n        };\n\n        if (data.message != null) {\n          messageHandler(text, { ...submission, plugin, plugins, userMessage, initialResponse });\n        }\n      }\n    });\n\n    sse.addEventListener('open', () => {\n      setAbortScroll(false);\n      console.log('connection is opened');\n    });\n\n    sse.addEventListener('cancel', async () => {\n      const streamKey = (submission as TSubmission | null)?.['initialResponse']?.messageId;\n      if (completed.has(streamKey)) {\n        setIsSubmitting(false);\n        setCompleted((prev) => {\n          prev.delete(streamKey);\n          return new Set(prev);\n        });\n        return;\n      }\n\n      setCompleted((prev) => new Set(prev.add(streamKey)));\n      const latestMessages = getMessages();\n      const conversationId = latestMessages?.[latestMessages.length - 1]?.conversationId;\n      return await abortConversation(\n        conversationId ?? userMessage.conversationId ?? submission.conversationId,\n        submission as EventSubmission,\n        latestMessages,\n      );\n    });\n\n    sse.addEventListener('error', async (e: MessageEvent) => {\n      /* @ts-ignore */\n      if (e.responseCode === 401) {\n        /* token expired, refresh and retry */\n        try {\n          // const refreshResponse = await request.refreshToken();\n          // const token = refreshResponse?.token ?? '';\n          // if (!token) {\n          //   throw new Error('Token refresh failed.');\n          // }\n          sse.headers = {\n            'Content-Type': 'application/json',\n            // Authorization: `Bearer ${token}`,\n          };\n\n          // request.dispatchTokenUpdatedEvent(token);\n          sse.stream();\n          return;\n        } catch (error) {\n          /* token refresh failed, continue handling the original 401 */\n          console.log(error);\n        }\n      }\n\n      console.log('error in server stream.');\n      (startupConfig?.checkBalance ?? false) && balanceQuery.refetch();\n\n      let data: TResData | undefined = undefined;\n      try {\n        data = JSON.parse(e.data) as TResData;\n      } catch (error) {\n        console.error(error);\n        console.log(e);\n        setIsSubmitting(false);\n      }\n\n      // localize\n      const _data = {\n        text: localize(`api_errors.${data?.status_code}`, data?.data),\n      }\n      errorHandler({ data: _data, submission: { ...submission, userMessage } as EventSubmission });\n    });\n\n    setIsSubmitting(true);\n    sse.stream();\n\n    return () => {\n      const isCancelled = sse.readyState <= 1;\n      sse.close();\n      if (isCancelled) {\n        const e = new Event('cancel');\n        /* @ts-ignore */\n        sse.dispatchEvent(e);\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [submission]);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/SSE/useStepHandler.ts",
    "content": "import { useCallback, useRef } from 'react';\nimport { StepTypes, ContentTypes, ToolCallTypes, getNonEmptyValue } from '~/data-provider/data-provider/src';\nimport type {\n  Agents,\n  TMessage,\n  PartMetadata,\n  EventSubmission,\n  TMessageContentParts,\n} from '~/data-provider/data-provider/src';\nimport type { SetterOrUpdater } from 'recoil';\nimport type { AnnounceOptions } from '~/common';\nimport { MESSAGE_UPDATE_INTERVAL } from '~/common';\n\n// useStepHandler hook的参数类型定义\ntype TUseStepHandler = {\n  announcePolite: (options: AnnounceOptions) => void; // 提示消息的函数（例如“正在撰写”）\n  setMessages: (messages: TMessage[]) => void; // 设置/更新消息列表的函数\n  getMessages: () => TMessage[] | undefined; // 获取当前消息列表的函数\n  setIsSubmitting: SetterOrUpdater<boolean>; // 设置提交状态（是否正在提交）\n  lastAnnouncementTimeRef: React.MutableRefObject<number>; // 用于存储上次提示时间的引用\n};\n\n// 事件传递给处理函数的类型定义\ntype TStepEvent = {\n  event: string; // 事件类型（例如 'on_run_step'，'on_message_delta'）\n  data:\n    | Agents.MessageDeltaEvent\n    | Agents.RunStep\n    | Agents.ToolEndEvent\n    | { runId?: string; message: string }; // 事件相关的数据\n};\n\n// 消息内容更新的类型定义\ntype MessageDeltaUpdate = { type: ContentTypes.TEXT; text: string; tool_call_ids?: string[] };\ntype ReasoningDeltaUpdate = { type: ContentTypes.THINK; think: string };\n\n// 消息内容的所有可能类型\ntype AllContentTypes =\n  | ContentTypes.TEXT\n  | ContentTypes.THINK\n  | ContentTypes.TOOL_CALL\n  | ContentTypes.IMAGE_FILE\n  | ContentTypes.IMAGE_URL\n  | ContentTypes.ERROR;\n\nexport default function useStepHandler({\n  setMessages,\n  getMessages,\n  setIsSubmitting,\n  announcePolite,\n  lastAnnouncementTimeRef,\n}: TUseStepHandler) {\n  // 用于存储工具调用ID、消息对象和步骤数据的引用\n  const toolCallIdMap = useRef(new Map<string, string | undefined>());\n  const messageMap = useRef(new Map<string, TMessage>());\n  const stepMap = useRef(new Map<string, Agents.RunStep>());\n\n  // 根据新的内容更新消息的函数\n  const updateContent = (\n    message: TMessage,\n    index: number,\n    contentPart: Agents.MessageContentComplex,\n    finalUpdate = false,\n  ) => {\n    const contentType = contentPart.type ?? ''; // 获取内容类型\n    if (!contentType) {\n      console.warn('No content type found in content part');\n      return message;\n    }\n\n    const updatedContent = [...(message.content || [])] as Array<\n      Partial<TMessageContentParts> | undefined\n    >;\n    if (!updatedContent[index]) {\n      updatedContent[index] = { type: contentPart.type as AllContentTypes };\n    }\n\n    // 处理不同的内容类型，并根据内容类型更新消息\n    if (\n      contentType.startsWith(ContentTypes.TEXT) &&\n      ContentTypes.TEXT in contentPart &&\n      typeof contentPart.text === 'string'\n    ) {\n      const currentContent = updatedContent[index] as MessageDeltaUpdate;\n      const update: MessageDeltaUpdate = {\n        type: ContentTypes.TEXT,\n        text: (currentContent.text || '') + contentPart.text, // 拼接文本\n      };\n\n      if (contentPart.tool_call_ids != null) {\n        update.tool_call_ids = contentPart.tool_call_ids; // 存储工具调用ID（如果存在）\n      }\n      updatedContent[index] = update;\n    } else if (\n      contentType.startsWith(ContentTypes.THINK) &&\n      ContentTypes.THINK in contentPart &&\n      typeof contentPart.think === 'string'\n    ) {\n      const currentContent = updatedContent[index] as ReasoningDeltaUpdate;\n      const update: ReasoningDeltaUpdate = {\n        type: ContentTypes.THINK,\n        think: (currentContent.think || '') + contentPart.think, // 拼接推理内容\n      };\n\n      updatedContent[index] = update;\n    } else if (contentType === ContentTypes.IMAGE_URL && 'image_url' in contentPart) {\n      const currentContent = updatedContent[index] as {\n        type: ContentTypes.IMAGE_URL;\n        image_url: string;\n      };\n      updatedContent[index] = {\n        ...currentContent,\n      };\n    } else if (contentType === ContentTypes.TOOL_CALL && 'tool_call' in contentPart) {\n      const existingContent = updatedContent[index] as Agents.ToolCallContent | undefined;\n      const existingToolCall = existingContent?.tool_call;\n      const toolCallArgs = (contentPart.tool_call.args as unknown as string | undefined) ?? '';\n\n      const args = finalUpdate\n        ? contentPart.tool_call.args\n        : (existingToolCall?.args ?? '') + toolCallArgs; // 如果不是最后更新，则拼接参数\n\n      const id = getNonEmptyValue([contentPart.tool_call.id, existingToolCall?.id]) ?? '';\n      const name = getNonEmptyValue([contentPart.tool_call.name, existingToolCall?.name]) ?? '';\n\n      const newToolCall: Agents.ToolCall & PartMetadata = {\n        id,\n        name,\n        args,\n        type: ToolCallTypes.TOOL_CALL,\n        auth: contentPart.tool_call.auth,\n        expires_at: contentPart.tool_call.expires_at,\n      };\n\n      if (finalUpdate) {\n        newToolCall.progress = 1; // 如果是最终更新，则设置进度为100%\n        newToolCall.output = contentPart.tool_call.output; // 存储工具调用的输出（如果是最终更新）\n      }\n\n      updatedContent[index] = {\n        type: ContentTypes.TOOL_CALL,\n        tool_call: newToolCall,\n      };\n    }\n\n    return { ...message, content: updatedContent as TMessageContentParts[] }; // 返回更新后的消息\n  };\n\n  return useCallback(\n    // 接受step的事件处理回调\n    ({ event, data }: TStepEvent, submission: EventSubmission) => {\n      const messages = getMessages() || []; // 获取当前的消息列表\n      const { userMessage } = submission;\n      setIsSubmitting(true); // 设置提交状态为正在提交\n\n      const currentTime = Date.now();\n      if (currentTime - lastAnnouncementTimeRef.current > MESSAGE_UPDATE_INTERVAL) {\n        announcePolite({ message: 'composing', isStatus: true }); // 提示“正在撰写”状态\n        lastAnnouncementTimeRef.current = currentTime;\n      }\n\n      // 处理不同的事件类型\n      if (event === 'on_run_step') {\n        // 处理'on_run_step'事件\n        const runStep = data as Agents.RunStep;\n        const responseMessageId = runStep.runId ?? '';\n        if (!responseMessageId) {\n          console.warn('未找到消息ID');\n          return;\n        }\n\n        stepMap.current.set(runStep.id, runStep); // 存储步骤数据\n        let response = messageMap.current.get(responseMessageId);\n\n        // 如果响应消息不存在，则创建一个新的响应消息\n        if (!response) {\n          const responseMessage = messages[messages.length - 1] as TMessage;\n\n          response = {\n            ...responseMessage,\n            parentMessageId: userMessage.messageId,\n            conversationId: userMessage.conversationId,\n            messageId: responseMessageId,\n            content: [],\n          };\n\n          messageMap.current.set(responseMessageId, response);\n          setMessages([...messages.slice(0, -1), response]);\n        }\n\n        // 如果步骤涉及到工具调用，存储工具调用ID\n        if (runStep.stepDetails.type === StepTypes.TOOL_CALLS) {\n          runStep.stepDetails.tool_calls.forEach((toolCall) => {\n            const toolCallId = toolCall.id ?? '';\n            if ('id' in toolCall && toolCallId) {\n              toolCallIdMap.current.set(runStep.id, toolCallId);\n            }\n          });\n        }\n      } else if (event === 'on_agent_update') {\n        // 处理'on_agent_update'事件（代理更新）\n        const { runId, message } = data as { runId?: string; message: string };\n        const responseMessageId = runId ?? '';\n        if (!responseMessageId) {\n          console.warn('No message id found in agent update event');\n          return;\n        }\n\n        const responseMessage = messages[messages.length - 1] as TMessage;\n\n        const response = {\n          ...responseMessage,\n          parentMessageId: userMessage.messageId,\n          conversationId: userMessage.conversationId,\n          messageId: responseMessageId,\n          content: [\n            {\n              type: ContentTypes.TEXT,\n              text: message,\n            },\n          ],\n        } as TMessage;\n\n        setMessages([...messages.slice(0, -1), response]); // 更新消息\n      } else if (event === 'on_message_delta') {\n        // 处理'on_message_delta'事件（消息增量更新）\n        const messageDelta = data as Agents.MessageDeltaEvent;\n        const runStep = stepMap.current.get(messageDelta.id);\n        const responseMessageId = runStep?.runId ?? '';\n\n        if (!runStep || !responseMessageId) {\n          console.warn('未找到运行步骤或消息ID');\n          return;\n        }\n\n        const response = messageMap.current.get(responseMessageId);\n        if (response && messageDelta.delta.content) {\n          const contentPart = Array.isArray(messageDelta.delta.content)\n            ? messageDelta.delta.content[0]\n            : messageDelta.delta.content;\n\n          const updatedResponse = updateContent(response, runStep.index, contentPart);\n\n          messageMap.current.set(responseMessageId, updatedResponse); // 更新响应消息\n          const currentMessages = getMessages() || [];\n          setMessages([...currentMessages.slice(0, -1), updatedResponse]); // 更新消息状态\n        }\n      } else if (event === 'on_reasoning_delta') {\n        // 处理'on_reasoning_delta'事件（推理增量更新）\n        const reasoningDelta = data as Agents.ReasoningDeltaEvent;\n        const runStep = stepMap.current.get(reasoningDelta.id);\n        const responseMessageId = runStep?.runId ?? '';\n\n        if (!runStep || !responseMessageId) {\n          console.warn('No run step or runId found for reasoning delta event');\n          return;\n        }\n\n        const response = messageMap.current.get(responseMessageId);\n        if (response && reasoningDelta.delta.content != null) {\n          const contentPart = Array.isArray(reasoningDelta.delta.content)\n            ? reasoningDelta.delta.content[0]\n            : reasoningDelta.delta.content;\n\n          const updatedResponse = updateContent(response, runStep.index, contentPart);\n\n          messageMap.current.set(responseMessageId, updatedResponse); // 更新响应消息\n          const currentMessages = getMessages() || [];\n          setMessages([...currentMessages.slice(0, -1), updatedResponse]); // 更新消息状态\n        }\n      } else if (event === 'on_run_step_delta') {\n        // 处理'on_run_step_delta'事件（步骤增量更新）\n        const runStepDelta = data as Agents.RunStepDeltaEvent;\n        const runStep = stepMap.current.get(runStepDelta.id);\n        const responseMessageId = runStep?.runId ?? '';\n\n        if (!runStep || !responseMessageId) {\n          console.warn('No run step or runId found for run step delta event');\n          return;\n        }\n\n        const response = messageMap.current.get(responseMessageId);\n        if (\n          response &&\n          runStepDelta.delta.type === StepTypes.TOOL_CALLS &&\n          runStepDelta.delta.tool_calls\n        ) {\n          let updatedResponse = { ...response };\n\n          // 更新响应消息中的工具调用增量\n          runStepDelta.delta.tool_calls.forEach((toolCallDelta) => {\n            const toolCallId = toolCallIdMap.current.get(runStepDelta.id) ?? '';\n\n            const contentPart: Agents.MessageContentComplex = {\n              type: ContentTypes.TOOL_CALL,\n              tool_call: {\n                name: toolCallDelta.name ?? '',\n                args: toolCallDelta.args ?? '',\n                id: toolCallId,\n              },\n            };\n\n            if (runStepDelta.delta.auth != null) {\n              contentPart.tool_call.auth = runStepDelta.delta.auth;\n              contentPart.tool_call.expires_at = runStepDelta.delta.expires_at;\n            }\n\n            updatedResponse = updateContent(updatedResponse, runStep.index, contentPart);\n          });\n\n          messageMap.current.set(responseMessageId, updatedResponse); // 更新响应消息\n          const updatedMessages = messages.map((msg) =>\n            msg.messageId === runStep.runId ? updatedResponse : msg,\n          );\n\n          setMessages(updatedMessages); // 更新消息状态\n        }\n      } else if (event === 'on_run_step_completed') {\n        // 处理'on_run_step_completed'事件（工具调用完成）\n        const { result } = data as unknown as { result: Agents.ToolEndEvent };\n\n        const { id: stepId } = result;\n\n        const runStep = stepMap.current.get(stepId);\n        const responseMessageId = runStep?.runId ?? '';\n\n        if (!runStep || !responseMessageId) {\n          console.warn('No run step or runId found for completed tool call event');\n          return;\n        }\n\n        const response = messageMap.current.get(responseMessageId);\n        if (response) {\n          let updatedResponse = { ...response };\n\n          // 更新响应消息中的工具调用结果\n          const contentPart: Agents.MessageContentComplex = {\n            type: ContentTypes.TOOL_CALL,\n            tool_call: result.tool_call,\n          };\n\n          updatedResponse = updateContent(updatedResponse, runStep.index, contentPart, true);\n\n          messageMap.current.set(responseMessageId, updatedResponse); // 更新响应消息\n          const updatedMessages = messages.map((msg) =>\n            msg.messageId === runStep.runId ? updatedResponse : msg,\n          );\n\n          setMessages(updatedMessages); // 更新消息状态\n        }\n      }\n\n      // 清理：清除存储的工具调用、消息和步骤数据\n      return () => {\n        toolCallIdMap.current.clear();\n        messageMap.current.clear();\n        stepMap.current.clear();\n      };\n    },\n    [getMessages, setIsSubmitting, lastAnnouncementTimeRef, announcePolite, setMessages],\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/ScreenshotContext.tsx",
    "content": "import { createContext, useRef, useContext, RefObject } from 'react';\nimport { toCanvas } from 'html-to-image';\nimport { ThemeContext } from '~/hooks/ThemeContext';\n\ntype ScreenshotContextType = {\n  ref?: RefObject<HTMLDivElement>;\n};\n\nconst ScreenshotContext = createContext<ScreenshotContextType>({});\n\nexport const useScreenshot = () => {\n  const { ref } = useContext(ScreenshotContext);\n  const { theme } = useContext(ThemeContext);\n\n  const takeScreenShot = async (node?: HTMLElement) => {\n    if (!node) {\n      throw new Error('You should provide correct html node.');\n    }\n\n    let isDark = theme === 'dark';\n    if (theme === 'system') {\n      isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n    }\n    const backgroundColor = isDark ? '#171717' : 'white';\n\n    const canvas = await toCanvas(node, {\n      backgroundColor,\n      imagePlaceholder:\n        'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=',\n    });\n\n    const croppedCanvas = document.createElement('canvas');\n    const croppedCanvasContext = croppedCanvas.getContext('2d') as CanvasRenderingContext2D;\n    // init data\n    const cropPositionTop = 0;\n    const cropPositionLeft = 0;\n    const cropWidth = canvas.width;\n    const cropHeight = canvas.height;\n\n    croppedCanvas.width = cropWidth;\n    croppedCanvas.height = cropHeight;\n\n    croppedCanvasContext.fillStyle = backgroundColor;\n    croppedCanvasContext.fillRect(0, 0, cropWidth, cropHeight);\n\n    croppedCanvasContext.drawImage(canvas, cropPositionLeft, cropPositionTop);\n\n    const base64Image = croppedCanvas.toDataURL('image/png', 1);\n\n    return base64Image;\n  };\n\n  const captureScreenshot = async () => {\n    if (ref instanceof Function) {\n      throw new Error('Ref callback is not supported.');\n    }\n    if (ref?.current) {\n      return takeScreenShot(ref.current);\n    }\n    throw new Error('Ref is not attached to any element.');\n  };\n\n  return { screenshotTargetRef: ref, captureScreenshot };\n};\n\nexport const ScreenshotProvider = ({ children }) => {\n  const ref = useRef(null);\n\n  return <ScreenshotContext.Provider value={{ ref }}>{children}</ScreenshotContext.Provider>;\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/ThemeContext.tsx",
    "content": "//ThemeContext.js\n// source: https://plainenglish.io/blog/light-and-dark-mode-in-react-web-application-with-tailwind-css-89674496b942\nimport { useSetRecoilState } from 'recoil';\nimport React, { createContext, useState, useEffect } from 'react';\nimport { getInitialTheme, applyFontSize } from '~/utils';\nimport store from '~/store';\n\ntype ProviderValue = {\n  theme: string;\n  setTheme: React.Dispatch<React.SetStateAction<string>>;\n};\n\nconst defaultContextValue: ProviderValue = {\n  theme: getInitialTheme(),\n  setTheme: () => {\n    return;\n  },\n};\n\nexport const isDark = (theme: string): boolean => {\n  if (theme === 'system') {\n    return window.matchMedia('(prefers-color-scheme: dark)').matches;\n  }\n  return theme === 'dark';\n};\n\nexport const ThemeContext = createContext<ProviderValue>(defaultContextValue);\n\nexport const ThemeProvider = ({ initialTheme, children }) => {\n  const [theme, setTheme] = useState(getInitialTheme);\n  const setFontSize = useSetRecoilState(store.fontSize);\n\n  const rawSetTheme = (rawTheme: string) => {\n    const root = window.document.documentElement;\n    const darkMode = false // isDark(rawTheme);\n\n    root.classList.remove(darkMode ? 'light' : 'dark');\n    root.classList.add(darkMode ? 'dark' : 'light');\n\n    localStorage.setItem('color-theme', rawTheme);\n  };\n\n  useEffect(() => {\n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    const changeThemeOnSystemChange = () => {\n      // rawSetTheme(mediaQuery.matches ? 'dark' : 'light');\n      rawSetTheme('light');\n    };\n\n    mediaQuery.addEventListener('change', changeThemeOnSystemChange);\n\n    return () => {\n      mediaQuery.removeEventListener('change', changeThemeOnSystemChange);\n    };\n  }, []);\n\n  useEffect(() => {\n    const fontSize = localStorage.getItem('fontSize');\n    if (fontSize == null) {\n      setFontSize('text-base');\n      applyFontSize('text-base');\n      localStorage.setItem('fontSize', 'text-base');\n      return;\n    }\n    applyFontSize(JSON.parse(fontSize));\n    // Reason: This effect should only run once, and `setFontSize` is a stable function\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  if (initialTheme) {\n    rawSetTheme(initialTheme);\n  }\n\n  useEffect(() => {\n    rawSetTheme(theme);\n  }, [theme]);\n\n  return <ThemeContext.Provider value={{ theme, setTheme }}>{children}</ThemeContext.Provider>;\n};\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Websocket/index.tsx",
    "content": "import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { userInputLinsightEvent, userStopLinsightEvent } from \"~/api/linsight\";\nimport { SopStatus } from \"~/components/Sop/SOPEditor\";\nimport { useToastContext } from \"~/Providers\";\nimport { toggleNav } from \"~/utils\";\nimport { useLinsightManager } from \"../useLinsightManager\";\nimport { MockWebSocket } from \"./mock\";\nconst MOCK = false\n\n// 每个会话单独分配一个 WebSocket实例\nconst connections: Record<string, WebSocket> = {};\n\nexport const useLinsightWebSocket = (versionId) => {\n    const { getLinsight, updateLinsight } = useLinsightManager()\n    const { showToast } = useToastContext();\n    const maxRetryCountRef = useRef(5);\n\n    const linsight = getLinsight(versionId);\n    const task = useMemo(() => {\n        const linsight = getLinsight(versionId);\n        return linsight\n            ? { versionId, running: linsight.status === SopStatus.Running }\n            : { versionId, running: false };\n    }, [linsight?.status, versionId]);\n\n    // 使用 ref 存储当前活跃版本 ID\n    const activeVersionIdRef = useRef(versionId);\n\n    // 同步最新活跃版本 ID\n    useEffect(() => {\n        activeVersionIdRef.current = versionId;\n    }, [versionId]);\n\n\n    const connect = useCallback((id: string, msg: any) => {\n        // 清理可能存在的旧连接\n        if (connections[id]) {\n            connections[id].close();\n        }\n\n        function getWebSocketUrl(path) {\n            // Use environment variable if available, otherwise fallback to current origin\n            const baseUrl = window.location.origin;\n\n            // Ensure proper protocol (convert http -> ws, https -> wss)\n            let url;\n            if (baseUrl.startsWith('https://')) {\n                url = `wss://${baseUrl.replace('https://', '')}`;\n            } else if (baseUrl.startsWith('http://')) {\n                url = `ws://${baseUrl.replace('http://', '')}`;\n            } else {\n                // If no protocol specified, use current page's protocol\n                const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n                url = `${protocol}${baseUrl}`;\n            }\n\n            // Ensure path starts with slash\n            const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n\n            return `${url}${normalizedPath}`;\n        }\n\n        const websocket = MOCK ? new MockWebSocket(`xx`)\n            : new WebSocket(getWebSocketUrl(`${__APP_ENV__.BASE_URL}/api/v1/linsight/workbench/task-message-stream?session_version_id=${id}`));\n        connections[id] = websocket;\n\n        websocket.onopen = () => {\n            console.log(\"WebSocket connection established!\");\n            // websocket.send(JSON.stringify(msg));\n        };\n\n        websocket.onmessage = (event) => {\n            const taskData = JSON.parse(event.data);\n            console.log('ws data :>> ', taskData);\n            /**\n             * 生成一级任务list\n             * 生成当前一级任务下的二级任务list\n             * 更新生成的任务信息\n             */\n            switch (taskData.event_type) {\n                case 'task_generate':\n                    // 生成一级任务\n                    updateLinsight(id, (prev) => {\n                        // 创建顶级任务的浅拷贝\n                        const updatedTasks = [...prev.tasks];\n\n                        // 用于记录需要更新的父任务\n                        const parentsToUpdate = new Map();\n\n                        taskData.data.tasks.forEach(_task => {\n                            if (_task.parent_task_id) {\n                                // 处理子任务 - 收集到对应的父任务\n                                const parentId = _task.parent_task_id;\n                                if (!parentsToUpdate.has(parentId)) {\n                                    parentsToUpdate.set(parentId, []);\n                                }\n                                parentsToUpdate.get(parentId).push({\n                                    id: _task.id,\n                                    name: _task.task_data.display_target,\n                                    status: _task.status,\n                                    history: [],\n                                });\n                            } else {\n                                // 处理顶级任务 - 检查是否已存在\n                                const exists = updatedTasks.some(t => t.id === _task.id);\n                                if (!exists) {\n                                    updatedTasks.push({\n                                        id: _task.id,\n                                        name: _task.task_data.display_target,\n                                        status: _task.status,\n                                        history: [],\n                                        children: [],\n                                    });\n                                }\n                            }\n                        });\n\n                        // 更新有子任务的父任务\n                        parentsToUpdate.forEach((newChildren, parentId) => {\n                            const parentIndex = updatedTasks.findIndex(t => t.id === parentId);\n                            if (parentIndex === -1) return; // 父任务不存在\n\n                            const parent = updatedTasks[parentIndex];\n                            const existingChildIds = new Set(parent.children.map(c => c.id));\n\n                            // 过滤掉已存在的子任务\n                            const childrenToAdd = newChildren.filter(\n                                child => !existingChildIds.has(child.id)\n                            );\n\n                            if (childrenToAdd.length > 0) {\n                                // 创建新的父任务对象\n                                updatedTasks[parentIndex] = {\n                                    ...parent,\n                                    children: [\n                                        ...parent.children,\n                                        ...childrenToAdd\n                                    ]\n                                };\n                            }\n                        });\n\n                        // 返回全新的状态对象\n                        return { tasks: updatedTasks };\n                    });\n                    break;\n                case 'user_input':\n                    const { task_id, call_reason, params } = taskData.data;\n                    updateLinsight(id, (prev) => {\n                        const newTasks = prev.tasks.map(task => {\n                            if (task.id === task_id) {\n                                // 更新父任务\n                                return {\n                                    ...task,\n                                    status: taskData.event_type,\n                                    event_type: taskData.event_type,\n                                    params,\n                                    call_reason,\n                                    history: [...(task.history || []), {\n                                        ...taskData.data\n                                    }]\n                                };\n                            } else {\n                                return {\n                                    ...task,\n                                    // status: taskData.event_type,\n                                    children: task.children.map(child => {\n                                        if (child.id === task_id) {\n                                            // 更新子任务\n                                            return {\n                                                ...child, // 关键修复：使用 child 而不是 task\n                                                status: taskData.event_type,\n                                                event_type: taskData.event_type,\n                                                params,\n                                                call_reason,\n                                                history: [...(child.history || []), {\n                                                    ...taskData.data\n                                                }]\n                                            };\n                                        }\n                                        return child;\n                                    })\n                                };\n                            }\n                        });\n                        return { tasks: newTasks };\n                    });\n                    break;\n                case 'user_input_completed':\n                case 'task_start':\n                case 'task_end':\n                    updateLinsight(id, (prev) => {\n                        const newStatus = taskData.data.status\n                        const errorMsg = taskData.data.result?.answer\n                        if (!taskData.data.parent_task_id) {\n                            // 更新一级任务\n                            const newTasks = prev.tasks.map(task =>\n                                task.id === taskData.data.id\n                                    ? { ...task, status: newStatus, errorMsg, event_type: taskData.event_type }\n                                    : task\n                            );\n                            return { tasks: newTasks };\n                        }\n\n                        // 处理二级任务\n                        const parentIndex = prev.tasks.findIndex(t => t.id === taskData.data.parent_task_id);\n                        if (parentIndex === -1) return prev; // 父任务不存在\n\n                        const parent = prev.tasks[parentIndex];\n                        // const childIndex = parent.children.findIndex(c => c.id === taskData.data.id);\n\n                        //  更新现有子任务\n                        const newTasks = [...prev.tasks];\n                        newTasks[parentIndex] = {\n                            ...parent,\n                            children: parent.children.map(child =>\n                                child.id === taskData.data.id\n                                    ? { ...child, status: newStatus, errorMsg: newStatus === 'failed' ? errorMsg : '', event_type: taskData.event_type }\n                                    : child\n                            )\n                        };\n                        return { tasks: newTasks };\n                    });\n                    break;\n                case 'task_execute_step':\n                    updateLinsight(id, (prev) => {\n                        const newTasks = prev.tasks.map(task => {\n                            if (task.id === taskData.data.task_id) {\n                                return {\n                                    ...task,\n                                    history: [...task.history, taskData.data]\n                                };\n                            } else {\n                                return {\n                                    ...task,\n                                    children: task.children.map(child => {\n                                        if (child.id === taskData.data.task_id) {\n                                            return {\n                                                ...child,\n                                                history: [...child.history, taskData.data]\n                                            };\n                                        }\n                                        return child;\n                                    })\n                                };\n                            }\n                        });\n\n                        return {\n                            tasks: newTasks\n                        };\n                    });\n                    break;\n                case 'final_result':\n                    updateLinsight(id, {\n                        output_result: taskData.data.output_result,\n                        // summary: taskData.data.output_result.answer,\n                        file_list: taskData.data.output_result.final_files || [],\n                        status: SopStatus.completed\n                    })\n                    toggleNav(true)\n                    break;\n                case 'task_terminated':\n\n                    updateLinsight(id, {\n                        status: SopStatus.Stoped\n                    })\n                    break;\n                case 'error_message':\n                    console.error(taskData.data.error, id, activeVersionIdRef.current)\n                    if (id === activeVersionIdRef.current) {\n                        updateLinsight(id, {\n                            taskError: taskData.data.error,\n                            status: SopStatus.Stoped\n                        })\n                        // showToast({ message: taskData.data.error, status: 'error' });\n                    }\n            }\n        };\n\n        websocket.onclose = () => {\n            console.log(`WebSocket closed for session ${id}`);\n            if (connections[id] === websocket) {\n                delete connections[id];\n                if (maxRetryCountRef.current > 0) {\n                    setTimeout(() => {\n                        connect(id, { type: 'relink' })\n                        maxRetryCountRef.current--;\n                    }, 1000);\n                }\n            } else {\n            }\n        };\n\n        websocket.onerror = (error) => {\n            console.error(`WebSocket error for session ${id}:`, error);\n        };\n    }, [])\n\n\n    useEffect(() => {\n        if (!task.running) return;\n\n        // 当没有连接或连接已关闭时创建新连接\n        if (!connections[task.versionId] ||\n            connections[task.versionId].readyState !== WebSocket.OPEN) {\n            connect(task.versionId, { type: 'init' });\n            maxRetryCountRef.current = 3;\n        }\n    }, [task])\n\n    const stop = useCallback(() => {\n        if (MOCK) {\n            const ws = connections[versionId];\n            if (ws && ws.readyState === WebSocket.OPEN) {\n                ws.send(JSON.stringify({ action: 'stop' }));\n            }\n        } else {\n            userStopLinsightEvent(versionId)\n            updateLinsight(versionId, (prev) => ({\n                ...prev,\n                status: SopStatus.Stoped,\n                tasks: prev.tasks.map(task => ({\n                    ...task,\n                    status: task.status === \"in_progress\" ? \"terminated\" : task.status,\n                    children: task.children\n                        ? task.children.map(child => ({\n                            ...child,\n                            status: child.status === \"in_progress\" ? \"terminated\" : child.status,\n                        }))\n                        : [],\n                })),\n            }));\n        }\n        toggleNav(true)\n    }, [versionId])\n\n    const sendInput = useCallback(({ task_id, user_input, files }) => {\n        if (MOCK) {\n            const ws = connections[versionId];\n            if (ws && ws.readyState === WebSocket.OPEN) {\n                ws.send(JSON.stringify({ user_input }));\n            }\n        } else {\n            userInputLinsightEvent(versionId, task_id, user_input, files.map((file) => file.result))\n            // update is_completed user_input files\n            // @ts-ignore\n            updateLinsight(versionId, (prev) => ({\n                ...prev,\n                tasks: prev.tasks.map(task => ({\n                    ...task,\n                    status: task_id === task.id ? \"success\" : task.status,\n                    history: task.history?.map(h => ({\n                        ...h,\n                        is_completed: true,\n                        user_input: h.user_input || user_input,\n                        files: h.files || files\n                    })),\n                    children: task.children\n                        ? task.children.map(child => ({\n                            ...child,\n                            status: task_id === child.id ? \"success\" : child.status,\n                            history: child.history?.map(h => ({\n                                ...h,\n                                is_completed: true,\n                                user_input: h.user_input || user_input,\n                                files: h.files || files\n                            })),\n                        }))\n                        : [],\n                })),\n            }));\n        }\n    }, [versionId]);\n\n    return { stop, sendInput };\n};\n\n"
  },
  {
    "path": "src/frontend/client/src/hooks/Websocket/mock.js",
    "content": "export class MockWebSocket {\n    constructor(url) {\n        this.url = url;\n        this.readyState = WebSocket.CONNECTING;\n        this.onopen = null;\n        this.onmessage = null;\n        this.onclose = null;\n        this.onerror = null;\n        this.sessionId = url.split('/').pop();\n        this.currentTaskIndex = 0;\n        this.userInputCallback = null;\n        this.stopped = false;\n        this.tasks = []; // 存储所有任务\n        this.lastUserInput = null;\n\n        // 初始化任务\n        this.initTasks();\n\n        // 模拟连接成功\n        setTimeout(() => {\n            this.readyState = WebSocket.OPEN;\n            if (this.onopen) this.onopen();\n            this.startTasks();\n        }, 100);\n    }\n\n    initTasks() {\n        // 基于实际数据结构创建任务\n        this.tasks = [{\n                id: \"46393f07e99149dea490576706288d2e\",\n                step_id: \"step_1\",\n                description: \"检查冰箱是否处于良好状态，并确保其内部清洁无杂物。\",\n                profile: \"准备机器人\",\n                target: \"确保冰箱适合大象进入\",\n                sop: \"检查冰箱状态并清洁\",\n                prompt: \"请检查冰箱的状态并确保其内部清洁无杂物。\",\n                input: [\"query\"],\n                next_id: [\"123ab3ea6ef042f4b6a5ef81774e8285\"],\n                requiresUserInput: true // 标记需要用户输入\n            },\n            {\n                id: \"123ab3ea6ef042f4b6a5ef81774e8285\",\n                step_id: \"step_2\",\n                description: \"联系专业搬运团队到达现场；利用起重设备平稳地将大象从当前位置转移至冰箱附近。\",\n                profile: \"搬运机器人\",\n                target: \"将大象移动到冰箱附近\",\n                sop: \"联系搬运团队并使用起重设备搬运大象\",\n                prompt: \"请联系专业搬运团队到达现场，并利用起重设备平稳地将大象从当前位置转移至冰箱附近。\",\n                input: [\"step_1\"],\n                next_id: [\"d86b23da4e344098bde846bcfd444d04\"]\n            },\n            {\n                id: \"d86b23da4e344098bde846bcfd444d04\",\n                step_id: \"step_3\",\n                description: \"如果必要，拆卸冰箱门以便于大象进入；确保周围环境安全，避免任何可能对大象造成伤害的因素。\",\n                profile: \"调整机器人\",\n                target: \"调整冰箱门以方便大象进入\",\n                sop: \"拆卸冰箱门并确保环境安全\",\n                prompt: \"如果必要，请拆卸冰箱门以便于大象进入，并确保周围环境安全，避免任何可能对大象造成伤害的因素。\",\n                input: [\"step_2\"],\n                next_id: [\"12cbe4bc49884c42a92e27952e59ea86\"]\n            },\n            {\n                id: \"12cbe4bc49884c42a92e27952e59ea86\",\n                step_id: \"step_4\",\n                description: \"在专业人士指导下，温和地引导大象走进冰箱；一旦大象完全进入冰箱后，重新安装冰箱门并关闭。\",\n                profile: \"引导机器人\",\n                target: \"引导大象进入冰箱并关闭冰箱门\",\n                sop: \"引导大象进入冰箱并关闭冰箱门\",\n                prompt: \"请在专业人士指导下，温和地引导大象走进冰箱。一旦大象完全进入冰箱后，重新安装冰箱门并关闭。\",\n                input: [\"step_3\"],\n                next_id: [\"c7a2f1a0932d4c709675dcb1eaa6dd68\"]\n            },\n            {\n                id: \"c7a2f1a0932d4c709675dcb1eaa6dd68\",\n                step_id: \"step_5\",\n                description: \"清理现场，确保所有使用的设备归位。\",\n                profile: \"收尾机器人\",\n                target: \"清理现场并归位设备\",\n                sop: \"清理现场并归位设备\",\n                prompt: \"请清理现场，确保所有使用的设备归位。\",\n                input: [\"step_4\"],\n                next_id: null\n            }\n        ];\n    }\n\n    startTasks() {\n        if (this.stopped) return;\n\n        // 1. 发送任务生成事件\n        this.sendTaskGenerate();\n\n        // 2. 开始执行第一个任务\n        setTimeout(() => this.executeTask(this.tasks[0]), 300);\n    }\n\n    sendTaskGenerate() {\n        this.sendMessage({\n            event_type: \"task_generate\",\n            data: {\n                tasks: this.tasks.map(task => ({\n                    session_version_id: this.sessionId,\n                    parent_task_id: null,\n                    previous_task_id: null,\n                    next_task_id: task.next_id ? task.next_id[0] : null,\n                    task_type: \"single\",\n                    task_data: {\n                        step_id: task.step_id,\n                        description: task.description,\n                        profile: task.profile,\n                        target: task.target,\n                        sop: task.sop,\n                        prompt: task.prompt,\n                        input: task.input,\n                        node_loop: false,\n                        id: task.id,\n                        next_id: task.next_id\n                    },\n                    id: task.id,\n                    input_prompt: null,\n                    user_input: null,\n                    history: null,\n                    status: \"not_started\",\n                    result: null,\n                    create_time: new Date().toISOString()\n                })),\n                timestamp: Date.now() / 1000\n            }\n        });\n    }\n\n    async executeTask(task) {\n        if (this.stopped || !task) return;\n\n        // 发送任务开始事件\n        this.sendTaskStart(task);\n\n        // 模拟任务执行时间\n        await this.delay(800);\n\n        // 检查是否需要用户输入\n        if (task.requiresUserInput && !this.stopped) {\n            // 发送用户输入请求\n            this.sendUserInputRequest(task);\n\n            // 等待用户输入\n            await new Promise(resolve => {\n                this.userInputCallback = resolve;\n            });\n\n            if (this.stopped) return;\n\n            // 发送用户输入完成事件\n            this.sendUserInputCompleted(task);\n\n            // 模拟用户输入后处理时间\n            await this.delay(600);\n        }\n\n        // 发送任务结束事件\n        this.sendTaskEnd(task);\n\n        // 如果有下一个任务，继续执行\n        if (task.next_id && task.next_id.length > 0 && !this.stopped) {\n            const nextTaskId = task.next_id[0];\n            const nextTask = this.tasks.find(t => t.id === nextTaskId);\n            if (nextTask) {\n                setTimeout(() => this.executeTask(nextTask), 300);\n            }\n        } else if (!this.stopped) {\n            // 所有任务完成后发送最终结果\n            this.sendFinalResult();\n        }\n    }\n\n    sendTaskStart(task) {\n        this.sendMessage({\n            event_type: \"task_start\",\n            data: {\n                parent_task_id: null,\n                previous_task_id: null,\n                task_type: \"single\",\n                input_prompt: null,\n                history: null,\n                result: null,\n                create_time: new Date().toISOString(),\n                session_version_id: this.sessionId,\n                next_task_id: task.next_id ? task.next_id[0] : null,\n                task_data: {\n                    id: task.id,\n                    sop: task.sop,\n                    input: task.input,\n                    prompt: task.prompt,\n                    target: task.target,\n                    next_id: task.next_id,\n                    profile: task.profile,\n                    step_id: task.step_id,\n                    node_loop: false,\n                    description: task.description\n                },\n                user_input: null,\n                status: \"in_progress\",\n                id: task.id,\n                update_time: new Date().toISOString()\n            },\n            timestamp: Date.now() / 1000\n        });\n    }\n\n    sendUserInputRequest(task) {\n        this.sendMessage({\n            event_type: \"user_input\",\n            data: {\n                task_id: task.id,\n                call_reason: \"我需要确认冰箱的状态和清洁情况。请检查冰箱是否处于良好状态，并且内部已经清洁无杂物。可以的话，请告诉我冰箱的尺寸以及它当前的状态。\"\n            },\n            timestamp: Date.now() / 1000\n        });\n    }\n\n    sendUserInputCompleted(task) {\n        this.sendMessage({\n            event_type: \"user_input_completed\",\n            data: {\n                session_version_id: this.sessionId,\n                parent_task_id: null,\n                previous_task_id: null,\n                next_task_id: task.next_id ? task.next_id[0] : null,\n                task_type: \"single\",\n                task_data: {\n                    id: task.id,\n                    sop: task.sop,\n                    input: task.input,\n                    prompt: task.prompt,\n                    target: task.target,\n                    next_id: task.next_id,\n                    profile: task.profile,\n                    step_id: task.step_id,\n                    node_loop: false,\n                    description: task.description\n                },\n                input_prompt: \"我需要确认冰箱的状态和清洁情况。请检查冰箱是否处于良好状态，并且内部已经清洁无杂物。可以的话，请告诉我冰箱的尺寸以及它当前的状态。\",\n                user_input: this.lastUserInput || \"确认\",\n                history: null,\n                status: \"user_input_completed\",\n                result: null,\n                id: task.id,\n                create_time: new Date().toISOString(),\n                update_time: new Date().toISOString()\n            },\n            timestamp: Date.now() / 1000\n        });\n    }\n\n    sendTaskEnd(task) {\n        this.sendMessage({\n            event_type: \"task_end\",\n            data: {\n                parent_task_id: null,\n                previous_task_id: null,\n                task_type: \"single\",\n                input_prompt: task.id === \"c7a2f1a0932d4c709675dcb1eaa6dd68\" ?\n                    \"确认现场清理和设备归位情况\" : `确认${task.target}步骤是否完成`,\n                history: null,\n                result: {\n                    answer: `好的，${task.target}已完成。\\n\\n任务总结:\\n${this.generateTaskSummary()}`\n                },\n                create_time: new Date().toISOString(),\n                session_version_id: this.sessionId,\n                next_task_id: task.next_id ? task.next_id[0] : null,\n                task_data: {\n                    id: task.id,\n                    sop: task.sop,\n                    input: task.input,\n                    prompt: task.prompt,\n                    target: task.target,\n                    next_id: task.next_id,\n                    profile: task.profile,\n                    step_id: task.step_id,\n                    node_loop: false,\n                    description: task.description\n                },\n                user_input: this.lastUserInput || \"确认\",\n                status: \"success\",\n                id: task.id,\n                update_time: new Date().toISOString()\n            },\n            timestamp: Date.now() / 1000\n        });\n    }\n\n    generateTaskSummary() {\n        return this.tasks.map((task, index) =>\n            `${index + 1}. **${task.profile}**: ${task.description}`\n        ).join('\\n');\n    }\n\n    sendFinalResult() {\n        this.sendMessage({\n            event_type: \"final_result\",\n            data: {\n                user_id: 3,\n                question: \"# 把大象装进冰箱的标准操作流程 (SOP)\\n\\n## 问题概述\\n\\n本SOP旨在提供一个清晰的步骤指南，用于将大型物体（以大象为例）安全地安置到指定空间内（如冰箱）。此过程假设所有物理限制已被解决，例如冰箱大小足够容纳大象。适用范围包括但不限于需要将大体积物品移动并妥善存放的情况。\\n\\n## 所需工具和资源\\n\\n- **超大尺寸冰箱** - 确保冰箱内部空间足以容纳大象。\\n- **起重设备** - 如起重机或叉车，用于搬运大象。\\n- **专业搬运团队** - 具备处理大型动物经验的专业人员。\\n- **安全装备** - 包括但不限于手套、护目镜等个人防护装备。\\n\\n## 步骤说明\\n\\n1. **准备阶段**\\n\\n   - 检查冰箱是否处于良好状态，并确保其内部清洁无杂物。\\n2. **搬运大象**\\n\\n   - 联系专业搬运团队到达现场。\\n   - 利用起重设备平稳地将大象从当前位置转移至冰箱附近。\\n3. **调整冰箱门**\\n\\n   - 如果必要，拆卸冰箱门以便于大象进入。\\n   - 确保周围环境安全，避免任何可能对大象造成伤害的因素。\\n4. **引导大象进入冰箱**\\n\\n   - 在专业人士指导下，温和地引导大象走进冰箱。\\n   - 一旦大象完全进入冰箱后，重新安装冰箱门并关闭。\\n5. **完成与确认**\\n\\n   - 清理现场，确保所有使用的设备归位。\\n\\n以上步骤完成后，即完成了将大象装入冰箱的过程。请注意，在实际操作中应始终遵循当地法律法规以及动物保护原则。\",\n                personal_knowledge_enabled: false,\n                files: [],\n                output_result: {\n                    answer: \"所有步骤已完成，大象已成功装入冰箱。\"\n                },\n                score: null,\n                has_reexecute: false,\n                id: this.sessionId,\n                update_time: new Date().toISOString(),\n                session_id: \"7671de26445c408c89a8060dfb52a30b\",\n                tools: [],\n                org_knowledge_enabled: false,\n                sop: \"# 把大象装进冰箱的标准操作流程 (SOP)\\n\\n## 问题概述\\n\\n本SOP旨在提供一个清晰的步骤指南，用于将大型物体（以大象为例）安全地安置到指定空间内（如冰箱）。此过程假设所有物理限制已被解决，例如冰箱大小足够容纳大象。适用范围包括但不限于需要将大体积物品移动并妥善存放的情况。\\n\\n## 所需工具和资源\\n\\n- **超大尺寸冰箱** - 确保冰箱内部空间足以容纳大象。\\n- **起重设备** - 如起重机或叉车，用于搬运大象。\\n- **专业搬运团队** - 具备处理大型动物经验的专业人员。\\n- **安全装备** - 包括但不限于手套、护目镜等个人防护装备。\\n\\n## 步骤说明\\n\\n1. **准备阶段**\\n\\n   - 检查冰箱是否处于良好状态，并确保其内部清洁无杂物。\\n2. **搬运大象**\\n\\n   - 联系专业搬运团队到达现场。\\n   - 利用起重设备平稳地将大象从当前位置转移至冰箱附近。\\n3. **调整冰箱门**\\n\\n   - 如果必要，拆卸冰箱门以便于大象进入。\\n   - 确保周围环境安全，避免任何可能对大象造成伤害的因素。\\n4. **引导大象进入冰箱**\\n\\n   - 在专业人士指导下，温和地引导大象走进冰箱。\\n   - 一旦大象完全进入冰箱后，重新安装冰箱门并关闭。\\n5. **完成与确认**\\n\\n   - 清理现场，确保所有使用的设备归位。\\n\\n以上步骤完成后，即完成了将大象装入冰箱的过程。请注意，在实际操作中应始终遵循当地法律法规以及动物保护原则。\\n\",\n                status: \"completed\",\n                execute_feedback: null,\n                version: new Date().toISOString(),\n                create_time: new Date().toISOString()\n            },\n            timestamp: Date.now() / 1000\n        });\n    }\n\n    sendMessage(data) {\n        if (this.onmessage && !this.stopped) {\n            this.onmessage({\n                data: JSON.stringify(data)\n            });\n        }\n    }\n\n    send(data) {\n        if (this.stopped) return;\n\n        try {\n            const message = JSON.parse(data);\n\n            // 处理用户输入\n            if (message.user_input) {\n                this.lastUserInput = message.user_input;\n                if (this.userInputCallback) {\n                    this.userInputCallback();\n                    this.userInputCallback = null;\n                }\n            }\n\n            // 处理停止请求\n            if (message.action === 'stop') {\n                this.close(1000, \"Stopped by user\");\n            }\n        } catch (e) {\n            console.error(\"Error parsing message:\", e);\n        }\n    }\n\n    close(code = 1000, reason = \"Completed\") {\n        this.readyState = WebSocket.CLOSED;\n        this.stopped = true;\n        if (this.onclose) this.onclose({\n            code,\n            reason\n        });\n    }\n\n    delay(ms) {\n        return new Promise(resolve => setTimeout(resolve, ms));\n    }\n}"
  },
  {
    "path": "src/frontend/client/src/hooks/index.ts",
    "content": "export * from './Audio';\nexport * from './Assistants';\nexport * from './Agents';\nexport * from './Chat';\nexport * from './Config';\nexport * from './Conversations';\nexport * from './Nav';\nexport * from './Files';\nexport * from './Generic';\nexport * from './Input';\nexport * from './Messages';\nexport * from './Plugins';\nexport * from './Prompts';\nexport * from './Roles';\nexport * from './SSE';\n\nexport * from './AuthContext';\nexport * from './ThemeContext';\nexport * from './ScreenshotContext';\nexport * from './ApiErrorBoundaryContext';\nexport { default as useToast } from './useToast';\nexport { default as useTimeout } from './useTimeout';\nexport { default as useNewConvo } from './useNewConvo';\nexport { default as useLocalize } from './useLocalize';\nexport type { TranslationKeys } from './useLocalize';\nexport { default as useMediaQuery } from './useMediaQuery';\nexport { default as useScrollToRef } from './useScrollToRef';\nexport { default as useLocalStorage } from './useLocalStorage';\nexport { default as useDelayedRender } from './useDelayedRender';\nexport { default as useOnClickOutside } from './useOnClickOutside';\nexport { default as useSpeechToText } from './Input/useSpeechToText';\nexport { default as useTextToSpeech } from './Input/useTextToSpeech';\nexport { default as useGenerationsByLatest } from './useGenerationsByLatest';\nexport { default as useDocumentTitle } from './useDocumentTitle';\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useAutoScroll.ts",
    "content": "import { useRef, useEffect, useCallback } from 'react'\n\ninterface UseAutoScrollOptions {\n    /**\n     * 自动滚动的阈值距离（像素）\n     * 当滚动位置距离底部小于等于此距离时，才会自动滚动\n     */\n    threshold?: number\n    /**\n     * 滚动行为配置\n     */\n    scrollBehavior?: ScrollBehavior\n}\n\nexport function useAutoScroll(\n    scrollRef: React.RefObject<HTMLElement>,\n    effect: any,\n    options: UseAutoScrollOptions = {}\n) {\n    const {\n        threshold = 250,\n        scrollBehavior = 'smooth'\n    } = options\n\n    // 是否正在自动滚动（防止滚动事件干扰）\n    const isAutoScrolling = useRef(false)\n\n    // 检查是否接近底部\n    const isNearBottom = useCallback(() => {\n        if (!scrollRef.current) return false\n\n        const element = scrollRef.current\n        const { scrollTop, scrollHeight, clientHeight } = element\n        const distanceFromBottom = scrollHeight - scrollTop - clientHeight\n\n        return distanceFromBottom <= threshold\n    }, [scrollRef, threshold])\n\n    // 滚动到底部\n    const scrollToBottom = useCallback(() => {\n        if (!scrollRef.current) return\n\n        isAutoScrolling.current = true\n        const element = scrollRef.current\n\n        element.scrollTo({\n            top: element.scrollHeight,\n            behavior: scrollBehavior\n        })\n\n        // 延迟重置标志，避免触发滚动事件处理\n        setTimeout(() => {\n            isAutoScrolling.current = false\n        }, 100)\n    }, [scrollRef, scrollBehavior])\n\n    // 当依赖变化时，检查是否需要自动滚动\n    useEffect(() => {\n        if (effect !== undefined && !isAutoScrolling.current) {\n            // 只有当前位置接近底部时才自动滚动\n            if (isNearBottom()) {\n                scrollToBottom()\n            }\n        }\n    }, [effect, isNearBottom, scrollToBottom])\n\n    return {\n        isNearBottom,\n        scrollToBottom\n    }\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useDelayedRender.tsx",
    "content": "import { useState, useRef, useEffect } from 'react';\nimport type { ReactNode } from 'react';\n\nconst useDelayedRender = (delay: number) => {\n  const [delayed, setDelayed] = useState(true);\n  const timerPromiseRef = useRef<Promise<void> | null>(null);\n\n  useEffect(() => {\n    if (delayed) {\n      const timerPromise = new Promise<void>((resolve) => {\n        const timeout = setTimeout(() => {\n          setDelayed(false);\n          resolve();\n        }, delay);\n\n        return () => {\n          clearTimeout(timeout);\n        };\n      });\n\n      timerPromiseRef.current = timerPromise;\n    }\n\n    return () => {\n      timerPromiseRef.current = null;\n    };\n  }, [delay, delayed]);\n\n  return (fn: () => ReactNode) => {\n    if (delayed && timerPromiseRef.current) {\n      throw timerPromiseRef.current;\n    }\n    return fn();\n  };\n};\n\nexport default useDelayedRender;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useDocumentTitle.ts",
    "content": "// useDocumentTitle.js\nimport { useEffect } from 'react';\n\n// function useDocumentTitle(title, prevailOnUnmount = false) {\n// const defaultTitle = useRef(document.title);\nfunction useDocumentTitle(title: string) {\n  useEffect(() => {\n    // document.title = title;\n  }, [title]);\n\n  // useEffect(\n  //   () => () => {\n  //     if (!prevailOnUnmount) {\n  //       document.title = defaultTitle.current;\n  //     }\n  //   }, []\n  // );\n}\n\nexport default useDocumentTitle;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useGenerationsByLatest.ts",
    "content": "import { EModelEndpoint, isAssistantsEndpoint } from '~/data-provider/data-provider/src';\n\ntype TUseGenerations = {\n  error?: boolean;\n  endpoint?: string;\n  messageId?: string;\n  isEditing?: boolean;\n  isSubmitting: boolean;\n  searchResult?: boolean;\n  finish_reason?: string;\n  latestMessageId?: string;\n  isCreatedByUser?: boolean;\n};\n\nexport default function useGenerationsByLatest({\n  error = false,\n  endpoint,\n  messageId,\n  isEditing = false,\n  isSubmitting,\n  searchResult = false,\n  finish_reason = '',\n  latestMessageId,\n  isCreatedByUser = false,\n}: TUseGenerations) {\n  const isEditableEndpoint = Boolean(\n    [\n      EModelEndpoint.openAI,\n      EModelEndpoint.custom,\n      EModelEndpoint.google,\n      EModelEndpoint.agents,\n      EModelEndpoint.bedrock,\n      EModelEndpoint.anthropic,\n      EModelEndpoint.gptPlugins,\n      EModelEndpoint.azureOpenAI,\n    ].find((e) => e === endpoint),\n  );\n\n  const continueSupported =\n    latestMessageId === messageId &&\n    finish_reason &&\n    finish_reason !== 'stop' &&\n    !isEditing &&\n    !searchResult &&\n    isEditableEndpoint;\n\n  const branchingSupported = Boolean(\n    [\n      EModelEndpoint.azureOpenAI,\n      EModelEndpoint.openAI,\n      EModelEndpoint.custom,\n      EModelEndpoint.agents,\n      EModelEndpoint.bedrock,\n      EModelEndpoint.chatGPTBrowser,\n      EModelEndpoint.google,\n      EModelEndpoint.gptPlugins,\n      EModelEndpoint.anthropic,\n    ].find((e) => e === endpoint),\n  );\n\n  const regenerateEnabled =\n    !isCreatedByUser && !searchResult && !isEditing && !isSubmitting && branchingSupported;\n\n  const hideEditButton =\n    isSubmitting ||\n    error ||\n    searchResult ||\n    !branchingSupported ||\n    (!isEditableEndpoint && !isCreatedByUser);\n\n  const forkingSupported = !isAssistantsEndpoint(endpoint) && !searchResult;\n\n  return {\n    forkingSupported,\n    continueSupported,\n    regenerateEnabled,\n    isEditableEndpoint,\n    hideEditButton,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useLinsightManager.tsx",
    "content": "// src/hooks/useLinsightManager.ts\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n    useRecoilCallback,\n    useRecoilState,\n    useRecoilValue,\n    useSetRecoilState\n} from 'recoil';\nimport { SSE } from 'sse.js';\nimport { SopStatus } from '~/components/Sop/SOPEditor';\nimport { ConversationData, QueryKeys } from '~/data-provider/data-provider/src';\nimport { useToastContext } from '~/Providers';\nimport store from '~/store';\nimport { activeSessionIdState, LinsightInfo, linsightMapState, submissionState, SubmissionState } from '~/store/linsight';\nimport {\n    addConversation,\n    formatTime,\n    toggleNav\n} from '~/utils';\n\n\nexport const useLinsightManager = () => {\n    const [linsightMap, setLinsightMap] = useRecoilState(linsightMapState);\n    const setActiveSessionId = useSetRecoilState(activeSessionIdState);\n\n    // 创建新会话信息\n    const createLinsight = useCallback((versionId: string, initialData: Omit<LinsightInfo, 'id'>) => {\n        const newLinsight: LinsightInfo = {\n            id: versionId,\n            ...initialData\n        };\n\n        setLinsightMap(prevMap => {\n            const newMap = new Map(prevMap);\n            newMap.set(versionId, newLinsight);\n            return newMap;\n        });\n\n        setActiveSessionId(versionId);\n        return versionId;\n    }, [setLinsightMap, setActiveSessionId]);\n\n    // 更新会话信息\n    const updateLinsight = useCallback((versionId: string, update: Partial<LinsightInfo> | ((current: LinsightInfo) => Partial<LinsightInfo>)) => {\n        setLinsightMap(prevMap => {\n            if (!prevMap.has(versionId)) return prevMap;\n\n            const newMap = new Map(prevMap);\n            const current = newMap.get(versionId)!;\n\n            // 处理update为函数的情况\n            const updatedValue = typeof update === 'function'\n                ? update(current)\n                : update;\n\n            newMap.set(versionId, {\n                ...current,\n                ...updatedValue\n            });\n            return newMap;\n        });\n    }, [setLinsightMap]);\n\n    // 获取会话信息\n    const getLinsight = (versionId: string) => {\n        return linsightMap.get(versionId) || null;\n    };\n\n    // 切换当前会话\n    const switchSession = useCallback((versionId: string) => {\n        setActiveSessionId(versionId);\n    }, [setActiveSessionId]);\n\n    // 切换会话，更新会话信息\n    const switchAndUpdateLinsight = useCallback((versionId: string, update: any, customTask?: boolean) => {\n        const linsight = getLinsight(versionId)\n        if (linsight) return updateLinsight(versionId, { inputSop: false }); // 恢复用户未输入状态\n\n        const { status, sop, execute_feedback, output_result, tasks, files, ...params } = update\n        let newStatus = ''\n        switch (status) {\n            case 'not_started':\n            case 'sop_generation_failed':\n                newStatus = SopStatus.SopGenerated;\n                break;\n            case 'in_progress':\n                newStatus = SopStatus.Running;\n                break;\n            case 'completed':\n                newStatus = execute_feedback ? SopStatus.FeedbackCompleted : SopStatus.completed;\n                break;\n            case 'terminated':\n            case 'failed':\n                newStatus = SopStatus.Stoped;\n                break;\n            default:\n                newStatus = status; // 或设置默认值\n                break;\n        }\n        const data = {\n            ...params,\n            output_result,\n            execute_feedback,\n            // summary: output_result?.answer,\n            status: newStatus,\n            files: files?.map(file => ({ ...file, file_name: decodeURIComponent(file.original_filename) })) || [],\n            tasks: customTask ? tasks : buildTaskTree(tasks),\n            taskError: 'failed' === status ? output_result?.error_message : '',\n            file_list: output_result?.final_files || [],\n            sop: 'sop_generation_failed' === status ? '' : sop,\n            sopError: 'sop_generation_failed' === status ? sop : '',\n            queueCount: 0\n        }\n\n        createLinsight(versionId, data);\n    }, [linsightMap])\n\n    return {\n        createLinsight,\n        updateLinsight,\n        getLinsight,\n        switchSession,\n        switchAndUpdateLinsight,\n        linsightMap\n    };\n};\n\n// 获取当前活动会话的Hook\nexport const useActiveLinsight = () => {\n    const activeSessionId = useRecoilValue(activeSessionIdState);\n    const linsightMap = useRecoilValue(linsightMapState);\n\n    return activeSessionId\n        ? linsightMap.get(activeSessionId) || null\n        : null;\n};\n\n\nexport const useLinsightSessionManager = (versionId: string) => {\n    const linsightSubmission = useRecoilValue(submissionState(versionId));\n    // 添加或更新会话状态\n    const setLinsightSubmission = useRecoilCallback(({ set }) =>\n        (versionId: string, state: SubmissionState) => {\n            set(submissionState(versionId), state);\n        },\n        []\n    );\n\n    // 清空指定会话状态\n    const clearLinsightSubmission = useRecoilCallback(({ set }) =>\n        (versionId: string) => {\n            set(submissionState(versionId), null);\n        },\n        []\n    );\n\n    return {\n        linsightSubmission,\n        setLinsightSubmission,\n        clearLinsightSubmission\n    };\n};\n\n\n/**\n * 生成sop\n * @param versionId \n * sessionId规则说明\n * 新建会话 [new]\n * 重新执行 [会话id-版本id]\n */\nexport const useGenerateSop = (versionId, setVersionId, setVersions) => {\n    const [loading, setLoading] = useState(false); // 多会话共用\n    const { linsightSubmission, clearLinsightSubmission } = useLinsightSessionManager(versionId)\n    const { createLinsight, updateLinsight } = useLinsightManager()\n    const queryClient = useQueryClient();\n    const { showToast } = useToastContext();\n    const [error, setError] = useState(false);\n    const { setConversation } = store.useCreateConversationAtom(0);\n    // 使用 ref 存储当前活跃版本 ID\n    const activeVersionIdRef = useRef(versionId);\n    // 同步最新活跃版本 ID\n    useEffect(() => {\n        activeVersionIdRef.current = versionId;\n    }, [versionId]);\n\n    // 切换非新建会话不展示loading\n    useEffect(() => {\n        if (versionId !== 'new') setTimeout(() => {\n            setLoading(false)\n        }, 2000);\n    }, [versionId])\n\n    // 生成会话\n    const generateSop = (_versionId, sameSopId, linsightSubmission?: any) => {\n        const payload = {\n            linsight_session_version_id: _versionId,\n            feedback_content: linsightSubmission?.feedback,\n            reexecute: false\n        }\n        if (linsightSubmission) {\n            payload.previous_session_version_id = linsightSubmission.prevVersionId\n            payload.reexecute = true\n        }\n\n        if (sameSopId) {\n            payload.sop_id = sameSopId\n        }\n\n        const sse = new SSE(`${__APP_ENV__.BASE_URL}/api/v1/linsight/workbench/generate-sop`, {\n            payload: JSON.stringify(payload),\n            headers: {\n                'Content-Type': 'application/json'\n            },\n        });\n\n        let content = ''\n        sse.addEventListener('generate_sop_content', (e: MessageEvent) => {\n            const data = JSON.parse(e.data);\n            content += data.content\n            updateLinsight(_versionId, {\n                sopError: '',\n                sop: content.replace(/^---/, '').replace('```markdown\\n', '```'),\n                inputSop: false\n            })\n        })\n\n        sse.addEventListener('sop_generate_complete', (e: MessageEvent) => {\n            // const data = JSON.parse(e.data);\n            updateLinsight(_versionId, {\n                status: SopStatus.SopGenerated,\n            })\n        })\n\n        sse.addEventListener('search_sop_error', (e: MessageEvent) => {\n            // const data = JSON.parse(e.data);\n            showToast({\n                message: e.data,\n                status: 'warning',\n            });\n            updateLinsight(_versionId, {\n                sopError: e.data\n            })\n        })\n\n        sse.addEventListener('open', () => {\n            console.log('connection is opened');\n            // setLoading(false)\n        });\n\n        sse.addEventListener('error', async (e: MessageEvent) => {\n            console.error('object :>> ', e);\n            if (_versionId === activeVersionIdRef.current) { // 只有当前活跃会话才展示错误\n                showToast({\n                    message: 'SOP 生成失败，请联系管理员检查灵思任务执行模型状态',\n                    status: 'error',\n                });\n                setError(true)\n                setLoading(false)\n            }\n            updateLinsight(_versionId, {\n                sopError: e.data,\n                status: SopStatus.SopGenerated,\n            })\n        })\n        sse.stream();\n    }\n\n\n    useEffect(() => {\n        if (linsightSubmission) {\n            console.log('linsightSubmission :>> ', linsightSubmission);\n\n            // 新建会话获取详情\n            if (linsightSubmission.isNew) {\n                setLoading(true)\n                toggleNav(false)\n\n                const { org_knowledge_enabled, personal_knowledge_enabled, tools } = convertTools(linsightSubmission.tools)\n                const payload = {\n                    question: linsightSubmission.question,\n                    org_knowledge_enabled,\n                    personal_knowledge_enabled,\n                    files: linsightSubmission.files,\n                    tools,\n                }\n\n                const sse = new SSE(`${__APP_ENV__.BASE_URL}/api/v1/linsight/workbench/submit`, {\n                    payload: JSON.stringify(payload),\n                    headers: {\n                        'Content-Type': 'application/json'\n                    },\n                });\n\n                let versionId = ''\n                sse.addEventListener('linsight_workbench_submit', (e: MessageEvent) => {\n                    const data = JSON.parse(e.data);\n                    const { linsight_session_version, message_session } = data;\n\n                    versionId = linsight_session_version.id\n                    setVersionId(versionId)\n                    setVersions((prevVersions) => [{\n                        id: versionId,\n                        name: formatTime(linsight_session_version.version, true)\n                    }, ...prevVersions])\n\n                    // replaceUrl\n                    window.history.replaceState({}, '', `${__APP_ENV__.BASE_URL}/linsight/${linsight_session_version.session_id}`);\n\n                    createLinsight(versionId, {\n                        status: SopStatus.SopGenerating, //linsight_session_version.status,\n                        tools: tools,\n                        files: linsight_session_version.files?.map(file => ({ ...file, file_name: decodeURIComponent(file.original_filename) })) || [],\n                        user_id: linsight_session_version.user_id,\n                        question: linsightSubmission.question,\n                        org_knowledge_enabled,\n                        personal_knowledge_enabled,\n                        sop: '',\n                        execute_feedback: null,\n                        version: versionId,\n                        create_time: linsight_session_version.create_time.rep,\n                        session_id: linsight_session_version.session_id,\n                        output_result: null,\n                        score: null,\n                        has_reexecute: false,\n                        update_time: linsight_session_version.update_time,\n                        title: message_session.flow_name,\n                        tasks: [],\n                        summary: '',\n                        file_list: [],\n                        inputSop: false,\n                        sopError: '',\n                        taskError: '',\n                        queueCount: 0\n                    })\n                })\n\n                sse.addEventListener('linsight_workbench_title_generate', (e: MessageEvent) => {\n                    const data = JSON.parse(e.data);\n                    // 新建会话\n                    queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n                        if (!convoData) {\n                            return convoData;\n                        }\n                        updateLinsight(versionId, {\n                            title: data.task_title\n                        })\n                        setConversation((prevState: any) => {\n                            return {\n                                ...prevState,\n                                conversationId: data.chat_id\n                            }\n                        })\n                        return addConversation(convoData, {\n                            conversationId: data.chat_id,\n                            createdAt: \"\",\n                            endpoint: null,\n                            endpointType: null,\n                            model: \"\",\n                            flowType: 20,\n                            title: data.task_title,\n                            tools: [],\n                            updatedAt: \"\"\n                        });\n                    });\n                    // 开启生成sop\n                    generateSop(versionId, linsightSubmission.sameSopId)\n                })\n\n                sse.addEventListener('open', () => {\n                    console.log('connection is opened');\n                });\n\n                sse.addEventListener('error', async (e: MessageEvent) => {\n                    console.error('object :>> ', e);\n                    if (versionId === activeVersionIdRef.current) { // 只有当前活跃会话才展示错误\n                        showToast({\n                            message: 'SOP 生成失败，请联系管理员检查灵思任务执行模型状态',\n                            status: 'error',\n                        });\n                        setError(true)\n                        setLoading(false)\n                    }\n                    updateLinsight(versionId, {\n                        sopError: e.data,\n                        status: SopStatus.SopGenerated,\n                    })\n                })\n                sse.stream();\n            } else {\n                generateSop(versionId, linsightSubmission.sameSopId, linsightSubmission)\n            }\n\n            updateLinsight(versionId, {\n                status: SopStatus.SopGenerating,\n                taskError: '',\n                sopError: '',\n                sop: ''\n            })\n            clearLinsightSubmission(versionId)\n            setError(false)\n        }\n    }, [linsightSubmission])\n\n    return [loading, error]\n}\n\n\n\n// 工具转换数据结构  筛选 -> sop二级列表\nconst convertTools = (tools) => {\n    let org_knowledge_enabled = false\n    let personal_knowledge_enabled = false\n\n    const sopTools: any = []\n    tools.forEach(tool => {\n        if (tool.checked && tool.id === 'pro_knowledge') {\n            org_knowledge_enabled = true\n        } else if (tool.checked && tool.id === 'knowledge') {\n            personal_knowledge_enabled = true\n        } else if (tool.checked) {\n            const { id, name, is_preset, description, children } = tool.data\n            sopTools.push({\n                id,\n                name,\n                is_preset,\n                description,\n                children: children.map(api => {\n                    return {\n                        id: api.id,\n                        name: api.name,\n                        tool_key: api.tool_key,\n                        desc: api.desc\n                    }\n                })\n            })\n        }\n    });\n\n    return {\n        org_knowledge_enabled,\n        personal_knowledge_enabled,\n        tools: sopTools\n    }\n}\n\n\nfunction buildTaskTree(tasks) {\n    let hasTerminated = false\n    const newTasks = tasks.map(task => {\n        const taskTree = {\n            id: task.id,\n            name: task.task_data?.display_target || '',\n            status: hasTerminated ? 'not_started' : task.status === 'waiting_for_user_input' ? 'user_input' : task.status,\n            history: task.history || [],\n            event_type: task.status === 'waiting_for_user_input' ? 'user_input' : '',\n            call_reason: task.input_prompt || '',\n            errorMsg: task.result?.answer || '',\n            children: task.children?.map(child => {\n                return {\n                    id: child.id,\n                    name: child.task_data?.display_target || '',\n                    status: child.status === 'waiting_for_user_input' ? 'user_input' : child.status,\n                    history: child.history || [],\n                    event_type: child.status === 'waiting_for_user_input' ? 'user_input' : '',\n                    call_reason: ''\n                }\n            }) || []\n        }\n\n        // 处理终止后的任务全部为not_started（隐藏）\n        if (['terminated', 'failed'].includes(task.status)) {\n            hasTerminated = true\n        }\n\n        return taskTree\n    })\n    return newTasks\n\n    // 创建任务ID到任务的映射\n    // const taskMap = new Map();\n    // tasks.forEach(task => taskMap.set(task.id, task));\n\n    // // 存储根任务（一级任务）\n    // const rootTasks: any[] = [];\n    // // 存储二级任务（按parent_task_id分组）\n    // const childTasksMap = new Map();\n\n    // // 第一次遍历：分离一级和二级任务\n    // tasks.forEach(task => {\n    //     if (task.parent_task_id === null) {\n    //         // 一级任务\n    //         rootTasks.push({\n    //             id: task.id,\n    //             name: task.task_data?.target || '',\n    //             status: task.status,\n    //             history: task.history || [],\n    //             event_type: task.status === 'waiting_for_user_input' ? 'user_input' : '',\n    //             call_reason: '',\n    //             children: []  // 初始化子任务数组\n    //         });\n    //     } else {\n    //         // 二级任务（按父ID分组）\n    //         const parentId = task.parent_task_id;\n    //         if (!childTasksMap.has(parentId)) {\n    //             childTasksMap.set(parentId, []);\n    //         }\n    //         childTasksMap.get(parentId).push({\n    //             id: task.id,\n    //             name: task.task_data?.target || '',\n    //             status: task.status,\n    //             history: task.history || [],\n    //             event_type: task.status === 'waiting_for_user_input' ? 'user_input' : '',\n    //             call_reason: ''\n    //             // 二级任务没有children字段\n    //         });\n    //     }\n    // });\n\n    // // 第二次遍历：将二级任务挂载到一级任务\n    // rootTasks.forEach(rootTask => {\n    //     const children = childTasksMap.get(rootTask.id) || [];\n    //     rootTask.children = children;\n    // });\n\n    // return rootTasks;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useLocalStorage.tsx",
    "content": "/* `useLocalStorage`\n *\n * Features:\n *  - JSON Serializing\n *  - Also value will be updated everywhere, when value updated (via `storage` event)\n */\n\nimport { useEffect, useState } from 'react';\n\nexport default function useLocalStorage<T>(key: string, defaultValue: T): [T, (value: T) => void] {\n  const [value, setValue] = useState(defaultValue);\n\n  useEffect(() => {\n    const item = localStorage.getItem(key);\n\n    if (!item) {\n      localStorage.setItem(key, JSON.stringify(defaultValue));\n    }\n\n    setValue(item ? JSON.parse(item) : defaultValue);\n\n    function handler(e: StorageEvent) {\n      if (e.key !== key) {\n        return;\n      }\n\n      const lsi = localStorage.getItem(key);\n      setValue(JSON.parse(lsi ?? ''));\n    }\n\n    window.addEventListener('storage', handler);\n\n    return () => {\n      window.removeEventListener('storage', handler);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const setValueWrap = (value: T) => {\n    try {\n      setValue(value);\n\n      localStorage.setItem(key, JSON.stringify(value));\n      if (typeof window !== 'undefined') {\n        window.dispatchEvent(new StorageEvent('storage', { key }));\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  };\n\n  return [value, setValueWrap];\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useLocalize.ts",
    "content": "import { useEffect } from 'react';\nimport { TOptions } from 'i18next';\nimport { useRecoilValue } from 'recoil';\nimport { useTranslation } from 'react-i18next';\nimport { resources } from '~/locales/i18n';\nimport store from '~/store';\n\nexport type TranslationKeys = keyof typeof resources.en.translation | any;\n\nexport default function useLocalize() {\n  const lang = useRecoilValue(store.lang);\n  const { t, i18n } = useTranslation();\n\n  useEffect(() => {\n    if (i18n.language !== lang) {\n      i18n.changeLanguage(lang);\n    }\n  }, [lang, i18n]);\n\n  return (phraseKey: TranslationKeys, options?: TOptions) => t(phraseKey, options);\n}"
  },
  {
    "path": "src/frontend/client/src/hooks/useMediaQuery.tsx",
    "content": "import { useEffect, useState } from 'react';\n\nexport default function useMediaQuery(query: string) {\n  const [matches, setMatches] = useState(false);\n\n  useEffect(() => {\n    const media = window.matchMedia(query);\n    if (media.matches !== matches) {\n      setMatches(media.matches);\n    }\n    const listener = () => setMatches(media.matches);\n    media.addEventListener('change', listener);\n    return () => media.removeEventListener('change', listener);\n  }, [matches, query]);\n\n  return matches;\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useNewConvo.ts",
    "content": "import { useCallback, useRef } from 'react';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport { useNavigate } from 'react-router-dom';\nimport {\n  Constants,\n  FileSources,\n  EModelEndpoint,\n  isParamEndpoint,\n  LocalStorageKeys,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport { useRecoilState, useRecoilValue, useSetRecoilState, useRecoilCallback } from 'recoil';\nimport type {\n  TPreset,\n  TSubmission,\n  TModelsConfig,\n  TConversation,\n  TEndpointsConfig,\n} from '~/data-provider/data-provider/src';\nimport type { AssistantListItem } from '~/common';\nimport {\n  getEndpointField,\n  buildDefaultConvo,\n  getDefaultEndpoint,\n  getDefaultModelSpec,\n  getModelSpecIconURL,\n  updateLastSelectedModel,\n} from '~/utils';\nimport { useDeleteFilesMutation, useGetEndpointsQuery, useGetStartupConfig } from '~/data-provider';\nimport useAssistantListMap from './Assistants/useAssistantListMap';\nimport { usePauseGlobalAudio } from './Audio';\nimport { mainTextareaId } from '~/common';\nimport store from '~/store';\n\nconst useNewConvo = (index = 0) => {\n  const navigate = useNavigate();\n  const { data: startupConfig } = useGetStartupConfig();\n  const clearAllConversations = store.useClearConvoState();\n  const defaultPreset = useRecoilValue(store.defaultPreset);\n  const { setConversation } = store.useCreateConversationAtom(index);\n  const [isTemporary, setIsTemporary] = useRecoilState(store.isTemporary);\n  const [files, setFiles] = useRecoilState(store.filesByIndex(index));\n  const clearAllLatestMessages = store.useClearLatestMessages(`useNewConvo ${index}`);\n  const setSubmission = useSetRecoilState<TSubmission | null>(store.submissionByIndex(index));\n  const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();\n\n  const modelsQuery = useGetModelsQuery();\n  const timeoutIdRef = useRef<NodeJS.Timeout>();\n  const assistantsListMap = useAssistantListMap();\n  const { pauseGlobalAudio } = usePauseGlobalAudio(index);\n  const saveDrafts = useRecoilValue<boolean>(store.saveDrafts);\n\n  const { mutateAsync } = useDeleteFilesMutation({\n    onSuccess: () => {\n      console.log('Files deleted');\n    },\n    onError: (error) => {\n      console.log('Error deleting files:', error);\n    },\n  });\n\n  const switchToConversation = useRecoilCallback(\n    () =>\n      async (\n        conversation: TConversation,\n        preset: Partial<TPreset> | null = null,\n        modelsData?: TModelsConfig,\n        buildDefault?: boolean,\n        keepLatestMessage?: boolean,\n        keepAddedConvos?: boolean,\n        disableFocus?: boolean,\n      ) => {\n        const modelsConfig = modelsData ?? modelsQuery.data;\n        const { endpoint = null } = conversation;\n        const buildDefaultConversation = (endpoint === null || buildDefault) ?? false;\n        const activePreset =\n          // use default preset only when it's defined,\n          // preset is not provided,\n          // endpoint matches or is null (to allow endpoint change),\n          // and buildDefaultConversation is true\n          defaultPreset &&\n          !preset &&\n          (defaultPreset.endpoint === endpoint || !endpoint) &&\n          buildDefaultConversation\n            ? defaultPreset\n            : preset;\n\n        if (buildDefaultConversation) {\n          let defaultEndpoint = getDefaultEndpoint({\n            convoSetup: activePreset ?? conversation,\n            endpointsConfig,\n          });\n\n          if (!defaultEndpoint) {\n            defaultEndpoint = Object.keys(endpointsConfig ?? {})[0] as EModelEndpoint;\n          }\n\n          const endpointType = getEndpointField(endpointsConfig, defaultEndpoint, 'type');\n          if (!conversation.endpointType && endpointType) {\n            conversation.endpointType = endpointType;\n          } else if (conversation.endpointType && !endpointType) {\n            conversation.endpointType = undefined;\n          }\n\n          const isAssistantEndpoint = isAssistantsEndpoint(defaultEndpoint);\n          const assistants: AssistantListItem[] = assistantsListMap[defaultEndpoint] ?? [];\n          const currentAssistantId = conversation.assistant_id ?? '';\n          const currentAssistant = assistantsListMap[defaultEndpoint]?.[currentAssistantId] as\n            | AssistantListItem\n            | undefined;\n\n          if (currentAssistantId && !currentAssistant) {\n            conversation.assistant_id = undefined;\n          }\n\n          if (!currentAssistantId && isAssistantEndpoint) {\n            conversation.assistant_id =\n              localStorage.getItem(\n                `${LocalStorageKeys.ASST_ID_PREFIX}${index}${defaultEndpoint}`,\n              ) ?? assistants[0]?.id;\n          }\n\n          if (\n            currentAssistantId &&\n            isAssistantEndpoint &&\n            conversation.conversationId === Constants.NEW_CONVO\n          ) {\n            const assistant = assistants.find((asst) => asst.id === currentAssistantId);\n            conversation.model = assistant?.model;\n            updateLastSelectedModel({ // to storeage\n              endpoint: defaultEndpoint,\n              model: conversation.model,\n            });\n          }\n\n          if (currentAssistantId && !isAssistantEndpoint) {\n            conversation.assistant_id = undefined;\n          }\n\n          const models = modelsConfig?.[defaultEndpoint] ?? [];\n          conversation = buildDefaultConvo({\n            conversation,\n            lastConversationSetup: activePreset as TConversation,\n            endpoint: defaultEndpoint,\n            models,\n          });\n        }\n\n        if (!(keepAddedConvos ?? false)) {\n          clearAllConversations(true);\n        }\n        setConversation(conversation);\n        setSubmission({} as TSubmission);\n        if (!(keepLatestMessage ?? false)) {\n          clearAllLatestMessages();\n        }\n\n        if (conversation.conversationId === Constants.NEW_CONVO && !modelsData) {\n          const appTitle = localStorage.getItem(LocalStorageKeys.APP_TITLE) ?? '';\n          if (appTitle) {\n            // document.title = appTitle;\n          }\n          navigate(`/c/${Constants.NEW_CONVO}`);\n        }\n\n        clearTimeout(timeoutIdRef.current);\n        if (disableFocus === true) {\n          return;\n        }\n        timeoutIdRef.current = setTimeout(() => {\n          const textarea = document.getElementById(mainTextareaId);\n          if (textarea) {\n            textarea.focus();\n          }\n        }, 150);\n      },\n    [endpointsConfig, defaultPreset, assistantsListMap, modelsQuery.data],\n  );\n\n  // 切换新会话\n  const newConversation = useCallback(\n    function createNewConvo({\n      template: _template = {},\n      preset: _preset,\n      modelsData,\n      disableFocus,\n      buildDefault = true,\n      keepLatestMessage = false,\n      keepAddedConvos = false,\n    }: {\n      template?: Partial<TConversation>;\n      preset?: Partial<TPreset>;\n      modelsData?: TModelsConfig;\n      buildDefault?: boolean;\n      disableFocus?: boolean;\n      keepLatestMessage?: boolean;\n      keepAddedConvos?: boolean;\n    } = {}) {\n      // 全局音乐?\n      pauseGlobalAudio();\n      if (isTemporary) {\n        setIsTemporary(false);\n      }\n\n      const templateConvoId = _template.conversationId ?? '';\n      const paramEndpoint =\n        isParamEndpoint(_template.endpoint ?? '', _template.endpointType ?? '') === true ||\n        isParamEndpoint(_preset?.endpoint ?? '', _preset?.endpointType ?? '');\n      const template =\n        paramEndpoint === true && templateConvoId && templateConvoId === Constants.NEW_CONVO\n          ? { endpoint: _template.endpoint }\n          : _template;\n\n      const conversation = {\n        conversationId: Constants.NEW_CONVO as string,\n        title: 'New Chat',\n        endpoint: null,\n        ...template,\n        flowType: 15,\n        createdAt: '',\n        updatedAt: '',\n      };\n\n      let preset = _preset;\n      const defaultModelSpec = getDefaultModelSpec(startupConfig?.modelSpecs?.list);\n      if (\n        !preset &&\n        startupConfig &&\n        startupConfig.modelSpecs?.prioritize === true &&\n        defaultModelSpec\n      ) {\n        preset = {\n          ...defaultModelSpec.preset,\n          iconURL: getModelSpecIconURL(defaultModelSpec),\n          spec: defaultModelSpec.name,\n        } as TConversation;\n      }\n\n      if (conversation.conversationId === 'new' && !modelsData) {\n        const filesToDelete = Array.from(files.values())\n          .filter(\n            (file) =>\n              file.filepath != null &&\n              file.filepath !== '' &&\n              file.source &&\n              !(file.embedded ?? false) &&\n              file.temp_file_id,\n          )\n          .map((file) => ({\n            file_id: file.file_id,\n            embedded: !!(file.embedded ?? false),\n            filepath: file.filepath as string,\n            source: file.source as FileSources, // Ensure that the source is of type FileSources\n          }));\n\n        setFiles(new Map());\n        localStorage.setItem(LocalStorageKeys.FILES_TO_DELETE, JSON.stringify({}));\n\n        if (!saveDrafts && filesToDelete.length > 0) {\n          mutateAsync({ files: filesToDelete });\n        }\n      }\n\n      switchToConversation(\n        conversation,\n        preset,\n        modelsData,\n        buildDefault,\n        keepLatestMessage,\n        keepAddedConvos,\n        disableFocus,\n      );\n    },\n    [\n      pauseGlobalAudio,\n      startupConfig,\n      saveDrafts,\n      switchToConversation,\n      files,\n      setFiles,\n      mutateAsync,\n    ],\n  );\n\n  return {\n    switchToConversation,\n    newConversation,\n  };\n};\n\nexport default useNewConvo;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useOnClickOutside.ts",
    "content": "import { useEffect, RefObject } from 'react';\ntype Handler = () => void;\n\nexport default function useOnClickOutside(\n  ref: RefObject<HTMLElement>,\n  handler: Handler,\n  excludeIds: string[],\n  customCondition?: (target: EventTarget | Element | null) => boolean,\n): void {\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      const target = event.target as Node | null;\n\n      if (target && 'id' in target && excludeIds.includes((target as HTMLElement).id)) {\n        return;\n      }\n\n      if (\n        target?.parentNode &&\n        'id' in target.parentNode &&\n        excludeIds.includes((target.parentNode as HTMLElement).id)\n      ) {\n        return;\n      }\n\n      if (customCondition && customCondition(target)) {\n        return;\n      }\n\n      if (ref.current && !ref.current.contains(target)) {\n        handler();\n      }\n    };\n\n    document.addEventListener('mousedown', handleClickOutside);\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [ref, handler]);\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useScrollToRef.ts",
    "content": "import { RefObject, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\n\ntype TUseScrollToRef = {\n  targetRef: RefObject<HTMLDivElement>;\n  callback: () => void;\n  smoothCallback: () => void;\n};\n\ntype ThrottledFunction = (() => void) & {\n  cancel: () => void;\n  flush: () => void;\n};\n\ntype ScrollToRefReturn = {\n  scrollToRef?: ThrottledFunction;\n  handleSmoothToRef: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nexport default function useScrollToRef({\n  targetRef,\n  callback,\n  smoothCallback,\n}: TUseScrollToRef): ScrollToRefReturn {\n  const logAndScroll = (behavior: 'instant' | 'smooth', callbackFn: () => void) => {\n    // Debugging:\n    // console.log(`Scrolling with behavior: ${behavior}, Time: ${new Date().toISOString()}`);\n    targetRef.current?.scrollIntoView({\n      behavior,\n      block: 'nearest', // 垂直方向：不强制滚动到顶部/底部\n      inline: 'nearest' // 水平方向：同上\n    });\n    callbackFn();\n  };\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const scrollToRef = useCallback(\n    throttle(() => logAndScroll('instant', callback), 145, { leading: true }),\n    [targetRef],\n  );\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const scrollToRefSmooth = useCallback(\n    throttle(() => logAndScroll('smooth', smoothCallback), 750, { leading: true }),\n    [targetRef],\n  );\n\n  const handleSmoothToRef: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n    e.preventDefault();\n    scrollToRefSmooth();\n  };\n\n  return {\n    scrollToRef,\n    handleSmoothToRef,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useTimeout.tsx",
    "content": "import { useEffect, useRef } from 'react';\n\ntype TUseTimeoutParams = {\n  callback: (error: string | number | boolean | null) => void;\n  delay?: number;\n};\ntype TTimeout = ReturnType<typeof setTimeout> | null;\n\nfunction useTimeout({ callback, delay = 400 }: TUseTimeoutParams) {\n  const timeout = useRef<TTimeout>(null);\n\n  const callOnTimeout = (value?: string) => {\n    // Clear existing timeout\n    if (timeout.current !== null) {\n      clearTimeout(timeout.current);\n    }\n\n    // Set new timeout\n    if (value != null && value) {\n      console.log(value);\n      timeout.current = setTimeout(() => {\n        callback(value);\n      }, delay);\n    }\n  };\n\n  // Clear timeout when the component unmounts\n  useEffect(() => {\n    return () => {\n      if (timeout.current !== null) {\n        clearTimeout(timeout.current);\n      }\n    };\n  }, []);\n\n  return callOnTimeout;\n}\n\nexport default useTimeout;\n"
  },
  {
    "path": "src/frontend/client/src/hooks/useToast.ts",
    "content": "import { useRecoilState } from 'recoil';\nimport { useRef, useEffect } from 'react';\nimport type { TShowToast } from '~/common';\nimport { NotificationSeverity } from '~/common';\nimport store from '~/store';\n\nexport default function useToast(showDelay = 100) {\n  const [toast, setToast] = useRecoilState(store.toastState);\n  const showTimerRef = useRef<number | null>(null);\n  const hideTimerRef = useRef<number | null>(null);\n\n  useEffect(() => {\n    return () => {\n      if (showTimerRef.current !== null) {\n        clearTimeout(showTimerRef.current);\n      }\n      if (hideTimerRef.current !== null) {\n        clearTimeout(hideTimerRef.current);\n      }\n    };\n  }, []);\n\n  const showToast = ({\n    message,\n    severity = NotificationSeverity.SUCCESS,\n    showIcon = true,\n    duration = 3000, // default duration for the toast to be visible\n    status,\n  }: TShowToast) => {\n    // Clear existing timeouts\n    if (showTimerRef.current !== null) {\n      clearTimeout(showTimerRef.current);\n    }\n    if (hideTimerRef.current !== null) {\n      clearTimeout(hideTimerRef.current);\n    }\n\n    // Timeout to show the toast\n    showTimerRef.current = window.setTimeout(() => {\n      setToast({\n        open: true,\n        message,\n        severity: (status as NotificationSeverity) ?? severity,\n        showIcon,\n      });\n      // Hides the toast after the specified duration\n      hideTimerRef.current = window.setTimeout(() => {\n        setToast((prevToast) => ({ ...prevToast, open: false }));\n      }, duration);\n    }, showDelay);\n  };\n\n  // 快捷方式在全局调用 toast\n  useEffect(() => {\n    window.showToast = showToast;\n  }, [])\n\n  return {\n    toast,\n    onOpenChange: (open: boolean) => setToast({ ...toast, open }),\n    showToast,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/locales/Translation.spec.ts",
    "content": "// Translation.spec.ts\n\nimport i18n from './i18n';\nimport English from './en/translation.json';\nimport French from './fr/translation.json';\nimport Spanish from './es/translation.json';\n\ndescribe('i18next translation tests', () => {\n  // Ensure i18next is initialized before any tests run\n  beforeAll(async () => {\n    if (!i18n.isInitialized) {\n      await i18n.init();\n    }\n  });\n\n  it('should return the correct translation for a valid key in English', () => {\n    i18n.changeLanguage('en');\n    expect(i18n.t('com_ui_examples')).toBe(English.com_ui_examples);\n  });\n\n  it('should return the correct translation for a valid key in French', () => {\n    i18n.changeLanguage('fr');\n    expect(i18n.t('com_ui_examples')).toBe(French.com_ui_examples);\n  });\n\n  it('should return the correct translation for a valid key in Spanish', () => {\n    i18n.changeLanguage('es');\n    expect(i18n.t('com_ui_examples')).toBe(Spanish.com_ui_examples);\n  });\n\n  it('should fallback to English for an invalid language code', () => {\n    // When an invalid language is provided, i18next should fallback to English\n    i18n.changeLanguage('invalid-code');\n    expect(i18n.t('com_ui_examples')).toBe(English.com_ui_examples);\n  });\n\n  it('should return the key itself for an invalid key', () => {\n    i18n.changeLanguage('en');\n    expect(i18n.t('invalid-key')).toBe('invalid-key'); // Returns the key itself\n  });\n\n  it('should correctly format placeholders in the translation', () => {\n    i18n.changeLanguage('en');\n    expect(i18n.t('com_endpoint_default_with_num', { 0: 'John' })).toBe('default: John');\n\n    i18n.changeLanguage('fr');\n    expect(i18n.t('com_endpoint_default_with_num', { 0: 'Marie' })).toBe('par défaut : Marie');\n  });\n});"
  },
  {
    "path": "src/frontend/client/src/locales/ar/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"الذكاء الاصطناعي ما زال يكتب\",\n  \"com_a11y_end\": \"انتهى الذكاء الاصطناعي من الرد\",\n  \"com_a11y_start\": \"بدأ الذكاء الاصطناعي بالرد\",\n  \"com_agents_allow_editing\": \"السماح للمستخدمين الآخرين بتعديل الوكيل الخاص بك\",\n  \"com_agents_by_librechat\": \"بواسطة LibreChat\",\n  \"com_agents_code_interpreter\": \"عند التمكين، يسمح للوكيل الخاص بك باستخدام واجهة برمجة التطبيقات لمفسر الشفرة LibreChat لتشغيل الشفرة المُنشأة، بما في ذلك معالجة الملفات، بشكل آمن. يتطلب مفتاح API صالح.\",\n  \"com_agents_code_interpreter_title\": \"واجهة برمجة مُفسِّر الشفرة\",\n  \"com_agents_create_error\": \"حدث خطأ أثناء إنشاء الوكيل الخاص بك\",\n  \"com_agents_description_placeholder\": \"اختياري: اشرح عميلك هنا\",\n  \"com_agents_enable_file_search\": \"تمكين البحث عن الملفات\",\n  \"com_agents_file_search_disabled\": \"يجب إنشاء الوكيل قبل تحميل الملفات للبحث في الملفات.\",\n  \"com_agents_file_search_info\": \"عند التمكين، سيتم إعلام الوكيل بأسماء الملفات المدرجة أدناه بالضبط، مما يتيح له استرجاع السياق ذي الصلة من هذه الملفات.\",\n  \"com_agents_instructions_placeholder\": \"التعليمات النظامية التي يستخدمها الوكيل\",\n  \"com_agents_missing_provider_model\": \"يرجى تحديد المزود والنموذج قبل إنشاء الوكيل\",\n  \"com_agents_name_placeholder\": \"اختياري: اسم العميل\",\n  \"com_agents_no_access\": \"ليس لديك صلاحية تعديل هذا الوكيل.\",\n  \"com_agents_not_available\": \"المساعد غير متوفر\",\n  \"com_agents_search_name\": \"البحث عن الوكلاء بالاسم\",\n  \"com_agents_update_error\": \"حدث خطأ أثناء تحديث الوكيل الخاص بك.\",\n  \"com_assistants_actions\": \"إجراءات\",\n  \"com_assistants_actions_disabled\": \"يجب عليك إنشاء مساعد قبل إضافة إجراءات.\",\n  \"com_assistants_actions_info\": \"اسمح لمساعدك باسترداد المعلومات أو اتخاذ إجراءات عبر واجهات برمجة التطبيقات\",\n  \"com_assistants_add_actions\": \"إضافة إجراءات\",\n  \"com_assistants_add_tools\": \"إضافة أدوات\",\n  \"com_assistants_append_date\": \"إضافة التاريخ والوقت الحالي\",\n  \"com_assistants_append_date_tooltip\": \"عند التفعيل، سيتم إضافة التاريخ والوقت الحالي للعميل إلى تعليمات نظام المساعد.\",\n  \"com_assistants_available_actions\": \"الإجراءات المتاحة\",\n  \"com_assistants_capabilities\": \"قدرات\",\n  \"com_assistants_code_interpreter\": \"مُفسِّر الشفرة\",\n  \"com_assistants_code_interpreter_files\": \"الملفات التالية متاحة فقط لمفسر الشفرة:\",\n  \"com_assistants_code_interpreter_info\": \"يُمكّن مُفسِّر الشفرة المساعد من كتابة وتشغيل الشفرة البرمجية. يمكن لهذه الأداة معالجة الملفات ذات البيانات والتنسيقات المتنوعة، وإنشاء ملفات مثل الرسوم البيانية\",\n  \"com_assistants_completed_action\": \"تحدث إلى {{0}}\",\n  \"com_assistants_completed_function\": \"تم تشغيل {{0}}\",\n  \"com_assistants_conversation_starters\": \"بدء المحادثات\",\n  \"com_assistants_conversation_starters_placeholder\": \"أدخل بداية المحادثة\",\n  \"com_assistants_create_error\": \"حدث خطأ أثناء إنشاء المساعد الخاص بك.\",\n  \"com_assistants_create_success\": \"تم إنشاؤه بنجاح\",\n  \"com_assistants_delete_actions_error\": \"حدث خطأ أثناء حذف الإجراء.\",\n  \"com_assistants_delete_actions_success\": \"تم حذف الإجراء من المساعد بنجاح\",\n  \"com_assistants_description_placeholder\": \"اختياري: اشرح مساعدك هنا\",\n  \"com_assistants_domain_info\": \"أرسل المساعد هذه المعلومات إلى {{0}}\",\n  \"com_assistants_file_search\": \"بحث الملفات\",\n  \"com_assistants_file_search_info\": \"لا يتم دعم إرفاق مخازن الكتل الرقمية لميزة البحث في الملفات بعد. يمكنك إرفاقها من ملعب المزود أو إرفاق ملفات إلى الرسائل للبحث في الملفات على أساس المحادثة.\",\n  \"com_assistants_function_use\": \"المساعد استخدم {{0}}\",\n  \"com_assistants_image_vision\": \"رؤية الصورة\",\n  \"com_assistants_instructions_placeholder\": \"التعليمات النظامية التي يستخدمها المساعد\",\n  \"com_assistants_knowledge\": \"المعرفة\",\n  \"com_assistants_knowledge_disabled\": \"يجب إنشاء المساعد وتمكين المفسر البرمجي أو الاسترجاع وحفظهما قبل تحميل الملفات كمعرفة.\",\n  \"com_assistants_knowledge_info\": \"إذا قمت بتحميل ملفات تحت معلومات، فقد تتضمن المحادثات مع المساعد الخاص بك محتويات الملف.\",\n  \"com_assistants_max_starters_reached\": \"تم الوصول إلى الحد الأقصى لبادئات المحادثة\",\n  \"com_assistants_name_placeholder\": \"اختياري: اسم المساعد\",\n  \"com_assistants_non_retrieval_model\": \"البحث في الملفات غير مُمكّن على هذا النموذج. يرجى تحديد نموذج آخر.\",\n  \"com_assistants_retrieval\": \"استرداد\",\n  \"com_assistants_running_action\": \"جارٍ تنفيذ الإجراء\",\n  \"com_assistants_search_name\": \"البحث عن المساعدين بالاسم\",\n  \"com_assistants_update_actions_error\": \"حدث خطأ أثناء إنشاء أو تحديث الإجراء.\",\n  \"com_assistants_update_actions_success\": \"تم إنشاء أو تحديث الإجراء بنجاح\",\n  \"com_assistants_update_error\": \"حدث خطأ أثناء تحديث المساعد الافتراضي الخاص بك.\",\n  \"com_assistants_update_success\": \"تم التحديث بنجاح\",\n  \"com_auth_already_have_account\": \"هل لديك حساب بالفعل؟\",\n  \"com_auth_back_to_login\": \"العودة إلى تسجيل الدخول\",\n  \"com_auth_click\": \"انقر\",\n  \"com_auth_click_here\": \"انقر هنا\",\n  \"com_auth_continue\": \"استمر\",\n  \"com_auth_create_account\": \"أنشئ حسابك\",\n  \"com_auth_discord_login\": \"تسجيل الدخول بواسطة Discord\",\n  \"com_auth_email\": \"البريد الإلكتروني\",\n  \"com_auth_email_address\": \"عنوان البريد الإلكتروني\",\n  \"com_auth_email_max_length\": \"يجب ألا يزيد البريد الإلكتروني عن 120 حرفًا\",\n  \"com_auth_email_min_length\": \"يجب أن يكون البريد الإلكتروني على الأقل 6 أحرف\",\n  \"com_auth_email_pattern\": \"يجب أن تدخل عنوان بريد إلكتروني صالح\",\n  \"com_auth_email_required\": \"البريد الإلكتروني مطلوب\",\n  \"com_auth_email_resend_link\": \"إعادة إرسال البريد الإلكتروني\",\n  \"com_auth_email_resent_failed\": \"فشل في إعادة إرسال البريد الإلكتروني للتحقق\",\n  \"com_auth_email_resent_success\": \"تم إعادة إرسال البريد الإلكتروني للتحقق بنجاح\",\n  \"com_auth_email_verification_failed\": \"فشل التحقق من البريد الإلكتروني\",\n  \"com_auth_email_verification_failed_token_missing\": \"فشل التحقق، الرمز مفقود\",\n  \"com_auth_email_verification_in_progress\": \"جارٍ التحقق من بريدك الإلكتروني، يرجى الانتظار\",\n  \"com_auth_email_verification_invalid\": \"التحقق من البريد الإلكتروني غير صالح\",\n  \"com_auth_email_verification_redirecting\": \"جارٍ إعادة التوجيه خلال {{0}} ثوانٍ...\",\n  \"com_auth_email_verification_resend_prompt\": \"لم يصلك البريد الإلكتروني؟\",\n  \"com_auth_email_verification_success\": \"تم التحقق من البريد الإلكتروني بنجاح\",\n  \"com_auth_error_create\": \"كان هناك خطأ في محاولة تسجيل حسابك. يرجى المحاولة مرة أخرى.\",\n  \"com_auth_error_invalid_reset_token\": \"رمز إعادة تعيين كلمة المرور هذا لم يعد صالحًا.\",\n  \"com_auth_error_login\": \"تعذر تسجيل الدخول باستخدام المعلومات المقدمة. يرجى التحقق من بيانات الاعتماد الخاصة بك والمحاولة مرة أخرى.\",\n  \"com_auth_error_login_ban\": \"تم حظر حسابك مؤقتًا بسبب انتهاكات لخدمتنا.\",\n  \"com_auth_error_login_rl\": \"محاولات تسجيل الدخول الكثيرة في فترة زمنية قصيرة. يرجى المحاولة مرة أخرى لاحقًا.\",\n  \"com_auth_error_login_server\": \"كان هناك خطأ في الخادم الداخلي. يرجى الانتظار بضع لحظات وحاول مرة أخرى.\",\n  \"com_auth_error_login_unverified\": \"لم يتم التحقق من حسابك بعد. يرجى التحقق من بريدك الإلكتروني للحصول على رابط التحقق.\",\n  \"com_auth_facebook_login\": \"تسجيل الدخول بواسطة Facebook\",\n  \"com_auth_full_name\": \"الاسم الكامل\",\n  \"com_auth_github_login\": \"تسجيل الدخول بواسطة Github\",\n  \"com_auth_google_login\": \"تسجيل الدخول بواسطة Google\",\n  \"com_auth_here\": \"هنا\",\n  \"com_auth_login\": \"تسجيل الدخول\",\n  \"com_auth_login_with_new_password\": \"يمكنك الآن تسجيل الدخول باستخدام كلمة المرور الجديدة الخاصة بك.\",\n  \"com_auth_name_max_length\": \"يجب أن يكون الاسم أقل من 80 حرفًا\",\n  \"com_auth_name_min_length\": \"يجب أن يكون الاسم على الأقل 3 أحرف\",\n  \"com_auth_name_required\": \"الاسم مطلوب\",\n  \"com_auth_no_account\": \"ليس لديك حساب؟\",\n  \"com_auth_password\": \"كلمة المرور\",\n  \"com_auth_password_confirm\": \"تأكيد كلمة المرور\",\n  \"com_auth_password_forgot\": \"نسيت كلمة المرور؟\",\n  \"com_auth_password_max_length\": \"يجب أن تكون كلمة المرور أقل من 128 حرفًا\",\n  \"com_auth_password_min_length\": \"يجب أن تكون كلمة المرور على الأقل 8 أحرف\",\n  \"com_auth_password_not_match\": \"كلمات المرور لا تتطابق\",\n  \"com_auth_password_required\": \"كلمة المرور مطلوبة\",\n  \"com_auth_registration_success_generic\": \"يرجى التحقق من بريدك الإلكتروني لتأكيد عنوان البريد الإلكتروني الخاص بك.\",\n  \"com_auth_registration_success_insecure\": \"تم التسجيل بنجاح.\",\n  \"com_auth_reset_password\": \"إعادة تعيين كلمة المرور\",\n  \"com_auth_reset_password_if_email_exists\": \"إذا كان هناك حساب مرتبط بهذا البريد الإلكتروني، فقد تم إرسال بريد إلكتروني يحتوي على تعليمات إعادة تعيين كلمة المرور. يرجى التحقق من مجلد البريد غير المرغوب فيه.\",\n  \"com_auth_reset_password_link_sent\": \"تم إرسال البريد الإلكتروني\",\n  \"com_auth_reset_password_success\": \"نجاح إعادة تعيين كلمة المرور\",\n  \"com_auth_sign_in\": \"تسجيل الدخول\",\n  \"com_auth_sign_up\": \"سجل الان\",\n  \"com_auth_submit_registration\": \"إرسال التسجيل\",\n  \"com_auth_to_reset_your_password\": \"لإعادة تعيين كلمة المرور الخاصة بك.\",\n  \"com_auth_to_try_again\": \"للمحاولة مرة أخرى.\",\n  \"com_auth_username\": \"اسم المستخدم (اختياري)\",\n  \"com_auth_username_max_length\": \"يجب أن يكون اسم المستخدم أقل من 20 حرفًا\",\n  \"com_auth_username_min_length\": \"يجب أن يكون اسم المستخدم على الأقل 2 أحرف\",\n  \"com_auth_welcome_back\": \"مرحبا بك مرة أخرى\",\n  \"com_click_to_download\": \"(انقر هنا للتنزيل)\",\n  \"com_download_expired\": \"انتهت صلاحية التنزيل\",\n  \"com_download_expires\": \"انقر هنا للتنزيل - تنتهي الصلاحية في {{0}}\",\n  \"com_endpoint\": \"نقطة النهاية\",\n  \"com_endpoint_agent\": \"الوكيل\",\n  \"com_endpoint_agent_model\": \"نموذج الوكيل (موصى به: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"يرجى تحديد الوكيل\",\n  \"com_endpoint_ai\": \"الذكاء الاصطناعي\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"العدد الأقصى من الرموز التي يمكن إنشاؤها في الرد. حدد قيمة أقل للحصول على ردود أقصر وقيمة أعلى للحصول على ردود أطول.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"يتيح تخزين الموجهات المؤقت إعادة استخدام السياق أو التعليمات الكبيرة عبر استدعاءات API، مما يقلل التكاليف ووقت الاستجابة\",\n  \"com_endpoint_anthropic_temp\": \"المدى من 0 إلى 1. استخدم درجة الحرارة الأقرب إلى 0 للمهام التحليلية / اختيارية متعددة، وأقرب إلى 1 للمهام الإبداعية والإنشائية. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.\",\n  \"com_endpoint_anthropic_topk\": \"يغير top-k الطريقة التي يختار فيها النموذج الرموز للإخراج. يعني top-k 1 أن الرمز المحدد هو الأكثر احتمالية من بين جميع الرموز في المفردات النموذجية (يسمى أيضا الترميز الطمع)، بينما يعني top-k من 3 أن الرمز القادم محدد من بين الرموز الثلاثة الأكثر احتمالية (باستخدام درجة الحرارة).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p يغير الطريقة التي يختار فيها النموذج الرموز للإخراج. يتم اختيار الرموز من الأكثر احتمالية k (انظر المعلمة topK) إلى الأقل حتى يساوي مجموع احتمالاتهم قيمة top-p.\",\n  \"com_endpoint_assistant\": \"المساعد\",\n  \"com_endpoint_assistant_model\": \"نموذج المساعد\",\n  \"com_endpoint_assistant_placeholder\": \"يرجى تحديد مساعد من اللوحة الجانبية اليمنى\",\n  \"com_endpoint_completion\": \"إكمال\",\n  \"com_endpoint_completion_model\": \"نموذج الإكمال (موصى به: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"انقر هنا\",\n  \"com_endpoint_config_google_api_info\": \"للحصول على مفتاح Generative Language API الخاص بك (لـ Gemini)،\",\n  \"com_endpoint_config_google_api_key\": \"مفتاح Google API\",\n  \"com_endpoint_config_google_cloud_platform\": \"تكوين نقطة نهاية Google Cloud Platform\",\n  \"com_endpoint_config_google_gemini_api\": \"تكوين نقطة نهاية Gemini API\",\n  \"com_endpoint_config_google_service_key\": \"مفتاح حساب خدمة Google\",\n  \"com_endpoint_config_key\": \"تعيين مفتاح API\",\n  \"com_endpoint_config_key_encryption\": \"سيتم تشفير مفتاحك وحذفه في\",\n  \"com_endpoint_config_key_for\": \"ضع API Key لـ\",\n  \"com_endpoint_config_key_google_need_to\": \"أنت بحاجة إلى\",\n  \"com_endpoint_config_key_google_service_account\": \"أنشئ حساب خدمة\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"تمكين Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API على Google Cloud، ثم\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"تأكد من النقر على إنشاء ومتابعة\\\" لمنح الدور \\\"Vertex AI User\\\" على الأقل. أخيرًا، قم بإنشاء مفتاح JSON للعمل على استيراده هنا.\",\n  \"com_endpoint_config_key_import_json_key\": \"استيراد مفتاح حساب الخدمة JSON.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"مفتاح حساب الخدمة JSON غير صالح، هل قمت باستيراد الملف الصحيح؟\",\n  \"com_endpoint_config_key_import_json_key_success\": \"تم استيراد مفتاح حساب الخدمة JSON بنجاح\",\n  \"com_endpoint_config_key_name\": \"مفتـاح\",\n  \"com_endpoint_config_key_never_expires\": \"لن ينتهي مفتاحك أبداً\",\n  \"com_endpoint_config_placeholder\": \"اضبط مفتاحك في قائمة الرأس للدردشة.\",\n  \"com_endpoint_config_value\": \"أدخل القيمة لـ\",\n  \"com_endpoint_context\": \"السياق\",\n  \"com_endpoint_context_info\": \"الحد الأقصى لعدد الرموز التي يمكن استخدامها للسياق. استخدم هذا للتحكم في عدد الرموز المرسلة لكل طلب. إذا لم يتم تحديده، سيتم استخدام الإعدادات الافتراضية للنظام بناءً على حجم سياق نماذج معروفة. قد يؤدي تعيين قيم أعلى إلى حدوث أخطاء و/أو تكلفة رموز أعلى.\",\n  \"com_endpoint_context_tokens\": \"الحد الأقصى لرموز السياق\",\n  \"com_endpoint_custom_name\": \"اسم مخصص\",\n  \"com_endpoint_default\": \"الافتراضي\",\n  \"com_endpoint_default_blank\": \"الافتراضي: فارغ\",\n  \"com_endpoint_default_empty\": \"الافتراضي: فارغ\",\n  \"com_endpoint_default_with_num\": \"الافتراضي: {{0}}\",\n  \"com_endpoint_examples\": \"الإعدادات المسبقة \",\n  \"com_endpoint_export\": \"تصدير\",\n  \"com_endpoint_export_share\": \"تصدير/مشاركة\",\n  \"com_endpoint_frequency_penalty\": \"عقوبة التكرار\",\n  \"com_endpoint_func_hover\": \"تمكين استخدام الإضافات كوظائف OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"قم بتعيين اسم مخصص لـ Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"الحد الأقصى لعدد الرموز التي يمكن إنشاؤها في الرد. حدد قيمة أقل للردود الأقصر وقيمة أعلى للردود الأطول.\",\n  \"com_endpoint_google_temp\": \"القيم الأعلى = أكثر عشوائية، بينما القيم الأقل = أكثر تركيزًا وحتمية. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.\",\n  \"com_endpoint_google_topk\": \"Top-k يغير كيفية اختيار النموذج للرموز للإخراج. top-k من 1 يعني أن الرمز المحدد هو الأكثر احتمالية بين جميع   الرموز في مفردات النموذج (يسمى أيضًا الترميز الجشعي)، بينما top-k من 3 يعني أن الرمز التالي يتم اختياره من بين الرموز الثلاثة الأكثر احتمالية (باستخدام الحرارة).\",\n  \"com_endpoint_google_topp\": \"Top-p يغير كيفية اختيار النموذج للرموز للإخراج. يتم اختيار الرموز من الأكثر K (انظر معلمة topK) احتمالًا إلى   الأقل حتى يصبح مجموع احتمالاتهم يساوي قيمة top-p.\",\n  \"com_endpoint_instructions_assistants\": \"تعليمات التجاوز\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"يتجاوز التعليمات الخاصة بالمساعد. هذا مفيد لتعديل السلوك على أساس كل مرة.\",\n  \"com_endpoint_max_output_tokens\": \"الحد الأقصى لعدد الرموز المنتجة\",\n  \"com_endpoint_message\": \"رسالة\",\n  \"com_endpoint_message_new\": \"رسالة {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"عدّل رسالتك أو أعد إنشاءها.\",\n  \"com_endpoint_my_preset\": \"الإعداد المسبق الخاص بي\",\n  \"com_endpoint_no_presets\": \"لا يوجد إعداد مسبق بعد\",\n  \"com_endpoint_open_menu\": \"افتح القائمة\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"قم بتعيين اسم مخصص لـ ChatGPT\",\n  \"com_endpoint_openai_detail\": \"دقة الطلبات للرؤية. \\\"منخفضة\\\" أرخص وأسرع، \\\"عالية\\\" أكثر تفصيلاً وتكلفة، و\\\"تلقائي\\\" سيختار تلقائيًا بين الاثنين بناءً على دقة الصورة.\",\n  \"com_endpoint_openai_freq\": \"رقم بين -2.0 و 2.0. القيم الموجبة تعاقب الرموز الجديدة بناءً على تكرارها الحالي في النص حتى الآن، مما يقلل من احتمالية تكرار النموذج لنفس السطر حرفيًا.\",\n  \"com_endpoint_openai_max\": \"الحد الأقصى للرموز لتوليد. إجمالي طول الرموز المدخلة والرموز المولدة محدود بطول سياق النموذج.\",\n  \"com_endpoint_openai_max_tokens\": \"حقل `max_tokens` الاختياري، يمثل الحد الأقصى لعدد الرموز التي يمكن توليدها في إكمال المحادثة.\\n\\nإجمالي طول رموز الإدخال والرموز المولدة محدود بطول سياق النموذج. قد تواجه أخطاء إذا تجاوز هذا العدد الحد الأقصى لرموز السياق.\",\n  \"com_endpoint_openai_pres\": \"رقم بين -2.0 و 2.0. القيم الموجبة تعاقب الرموز الجديدة بناءً على ما إذا كانت تظهر في النص حتى الآن، مما يزيد احتمالية النموذج للحديث عن مواضيع جديدة.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"قم بتعيين تعليمات مخصصة لتضمينها في رسالة النظام. الافتراضي: لا شيء\",\n  \"com_endpoint_openai_resend\": \"إعادة إرسال جميع الصور المرفقة مسبقًا. ملاحظة: قد يؤدي هذا إلى زيادة كبيرة في تكلفة الرموز وقد تواجه أخطاء مع العديد من مرفقات الصور.\",\n  \"com_endpoint_openai_resend_files\": \"إعادة إرسال جميع الملفات المرفقة مسبقًا. ملاحظة: سيؤدي هذا إلى زيادة تكلفة الرموز وقد تواجه أخطاء مع العديد من المرفقات.\",\n  \"com_endpoint_openai_stop\": \"حتى 4 تسلسلات حيث ستتوقف الواجهة البرمجية عن توليد المزيد من الرموز.\",\n  \"com_endpoint_openai_temp\": \"القيم الأعلى = أكثر عشوائية ، بينما القيم الأقل = أكثر تركيزًا وتحديدًا. نوصي بتغيير هذا أو Top P ولكن ليس كلاهما.\",\n  \"com_endpoint_openai_topp\": \"بديل للعينة مع درجة الحرارة، يسمى العينة النووية، حيث ينظر النموذج في نتائج الرموز مع كتلة احتمال top_p. لذا 0.1 يعني أن الرموز التي تشكل فقط 10% من كتلة الاحتمال تعتبر. نوصي بتغيير هذا أو درجة الحرارة ولكن ليس كلاهما.\",\n  \"com_endpoint_output\": \"الإخراج\",\n  \"com_endpoint_plug_image_detail\": \"تفاصيل الصورة\",\n  \"com_endpoint_plug_resend_files\": \"إعادة إرسال الملفات\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"قم بتعيين تعليمات مخصصة لتضمينها في رسالة النظام. الافتراضي: لا شيء\",\n  \"com_endpoint_plug_skip_completion\": \"تجاوز الإكمال\",\n  \"com_endpoint_plug_use_functions\": \"استخدام الوظائف\",\n  \"com_endpoint_presence_penalty\": \"عقوبة الوجود\",\n  \"com_endpoint_preset\": \"إعداد مسبق\",\n  \"com_endpoint_preset_default\": \"أصبح الإعداد المسبق الافتراضي الآن.\",\n  \"com_endpoint_preset_default_item\": \"الافتراضي:\",\n  \"com_endpoint_preset_default_none\": \"لا يوجد إعداد مسبق افتراضي نشط.\",\n  \"com_endpoint_preset_default_removed\": \"لم يعد الإعداد المسبق الافتراضي\",\n  \"com_endpoint_preset_delete_confirm\": \"هل أنت متأكد من أنك تريد حذف هذا الإعداد المسبق؟\",\n  \"com_endpoint_preset_delete_error\": \"حدث خطأ أثناء حذف الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.\",\n  \"com_endpoint_preset_import\": \"تم استيراد الإعداد المسبق!\",\n  \"com_endpoint_preset_import_error\": \"حدث خطأ أثناء استيراد الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.\",\n  \"com_endpoint_preset_name\": \"اسم الإعداد المسبق\",\n  \"com_endpoint_preset_save_error\": \"حدث خطأ أثناء حفظ الإعداد المسبق الخاص بك. يرجى المحاولة مرة أخرى.\",\n  \"com_endpoint_preset_selected\": \"الإعداد المسبق نشط!\",\n  \"com_endpoint_preset_selected_title\": \"مُحدَّد!\",\n  \"com_endpoint_preset_title\": \"إعداد مسبق\",\n  \"com_endpoint_presets\": \"إعدادات مسبقة\",\n  \"com_endpoint_presets_clear_warning\": \"هل أنت متأكد أنك تريد مسح جميع الإعدادات المسبقة؟ هذا لا يمكن التراجع عنه.\",\n  \"com_endpoint_prompt_cache\": \"استخدام التخزين المؤقت للأوامر\",\n  \"com_endpoint_prompt_prefix\": \"بادئة الأمر\",\n  \"com_endpoint_prompt_prefix_assistants\": \"التعليمات الإضافية\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"ضع تعليمات أو سياق إضافي فوق التعليمات الرئيسية للمساعد. يتم تجاهله إذا كان فارغًا.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"قم بتعيين تعليمات مخصصة أو سياق. يتم تجاهله إذا كان فارغًا.\",\n  \"com_endpoint_save_as_preset\": \"حفظ كإعداد مسبق\",\n  \"com_endpoint_search\": \"البحث عن نقطة النهاية بالاسم\",\n  \"com_endpoint_set_custom_name\": \"قم بتعيين اسم مخصص، في حالة إمكانية العثور على هذا الإعداد المسبق\",\n  \"com_endpoint_skip_hover\": \"تمكين تجاوز خطوة الإكمال التي تقوم بمراجعة الإجابة النهائية والخطوات المولدة\",\n  \"com_endpoint_stop\": \"توقف التسلسلات\",\n  \"com_endpoint_stop_placeholder\": \"اضغط على 'Enter' لفصل القيم\",\n  \"com_endpoint_temperature\": \"درجة الحرارة\",\n  \"com_endpoint_top_k\": \"أعلى K\",\n  \"com_endpoint_top_p\": \"أعلى P\",\n  \"com_endpoint_use_active_assistant\": \"استخدام المساعد النشط\",\n  \"com_error_expired_user_key\": \"انتهت صلاحية المفتاح المقدم لـ {{0}} في {{1}}. يرجى تقديم مفتاح وحاول مرة أخرى.\",\n  \"com_error_files_dupe\": \"تم اكتشاف ملف مكرر.\",\n  \"com_error_files_empty\": \"الملفات الفارغة غير مسموح بها\",\n  \"com_error_files_process\": \"حدث خطأ أثناء معالجة الملف.\",\n  \"com_error_files_unsupported_capability\": \"لا توجد قدرات مفعّلة تدعم هذا النوع من الملفات.\",\n  \"com_error_files_upload\": \"حدث خطأ أثناء رفع الملف.\",\n  \"com_error_files_upload_canceled\": \"تم إلغاء طلب تحميل الملف. ملاحظة: قد تكون عملية تحميل الملف لا تزال قيد المعالجة وستحتاج إلى حذفها يدويًا.\",\n  \"com_error_files_validation\": \"حدث خطأ أثناء التحقق من صحة الملف.\",\n  \"com_error_input_length\": \"عدد الرموز في آخر رسالة طويل جداً، ويتجاوز الحد المسموح به ({{0}}). يرجى تقصير رسالتك، أو تعديل الحد الأقصى للسياق من معلمات المحادثة، أو تفريع المحادثة للمتابعة.\",\n  \"com_error_invalid_user_key\": \"مفتاح غير صالح. يرجى تقديم مفتاح صالح والمحاولة مرة أخرى.\",\n  \"com_error_moderation\": \"يبدو أن المحتوى المقدم قد تم وضع علامة عليه من قبل نظام الرقابة لدينا لعدم توافقه مع إرشادات مجتمعنا. لا نستطيع المضي قدمًا في هذا الموضوع المحدد. إذا كانت لديك أسئلة أخرى أو مواضيع ترغب في استكشافها، يرجى تحرير رسالتك، أو إنشاء محادثة جديدة.\",\n  \"com_error_no_base_url\": \"لم يتم العثور على رابط أساسي. يرجى تقديم واحد والمحاولة مرة أخرى.\",\n  \"com_error_no_user_key\": \"لم يتم العثور على مفتاح. يرجى تقديم مفتاح والمحاولة مرة أخرى.\",\n  \"com_files_filter\": \"فلترة الملفات...\",\n  \"com_files_no_results\": \"لا توجد نتائج.\",\n  \"com_files_number_selected\": \"تم اختيار {{0}} من أصل {{1}} ملف(ملفات)\",\n  \"com_generated_files\": \"الملفات المُنشأة:\",\n  \"com_hide_examples\": \"إخفاء الأمثلة\",\n  \"com_nav_account_settings\": \"إعدادات الحساب\",\n  \"com_nav_always_make_prod\": \"جعل الإصدارات الجديدة للإنتاج دائماً\",\n  \"com_nav_archive_created_at\": \"تاريخ الإنشاء\",\n  \"com_nav_archive_name\": \"الاسم\",\n  \"com_nav_archived_chats\": \"الدردشات المؤرشفة\",\n  \"com_nav_archived_chats_empty\": \"ليس لديك أي دردشات مؤرشفة.\",\n  \"com_nav_at_command\": \"أمر-@\",\n  \"com_nav_at_command_description\": \"تبديل الأمر \\\"@\\\" للتنقل بين نقاط النهاية والنماذج والإعدادات المسبقة وغيرها\",\n  \"com_nav_audio_play_error\": \"خطأ في تشغيل الصوت: {{0}}\",\n  \"com_nav_audio_process_error\": \"خطأ في معالجة الصوت: {{0}}\",\n  \"com_nav_auto_scroll\": \"التمرير التلقائي إلى أحدث عند الفتح\",\n  \"com_nav_auto_send_prompts\": \"إرسال تلقائي للموجهات\",\n  \"com_nav_auto_send_text\": \"إرسال النص تلقائيًا\",\n  \"com_nav_auto_send_text_disabled\": \"اضبط القيمة على -1 للتعطيل\",\n  \"com_nav_auto_transcribe_audio\": \"النسخ التلقائي للصوت\",\n  \"com_nav_automatic_playback\": \"تشغيل تلقائي لآخر رسالة\",\n  \"com_nav_balance\": \"توازن\",\n  \"com_nav_browser\": \"المتصفح\",\n  \"com_nav_buffer_append_error\": \"مشكلة في تدفق الصوت. قد يتم مقاطعة التشغيل.\",\n  \"com_nav_change_picture\": \"تغيير الصورة\",\n  \"com_nav_chat_commands\": \"أوامر الدردشة\",\n  \"com_nav_chat_commands_info\": \"يتم تفعيل هذه الأوامر عن طريق كتابة رموز محددة في بداية رسالتك. يتم تشغيل كل أمر بواسطة البادئة المخصصة له. يمكنك تعطيلها إذا كنت تستخدم هذه الرموز بشكل متكرر في بداية رسائلك.\",\n  \"com_nav_chat_direction\": \"اتجاه الدردشة\",\n  \"com_nav_clear_all_chats\": \"مسح كل الدردشات\",\n  \"com_nav_clear_cache_confirm_message\": \"هل أنت متأكد أنك تريد مسح ذاكرة التخزين المؤقت؟\",\n  \"com_nav_clear_conversation\": \"مسح المحادثات\",\n  \"com_nav_clear_conversation_confirm_message\": \"هل أنت متأكد أنك تريد مسح جميع المحادثات؟ هذا لا يمكن التراجع عنه.\",\n  \"com_nav_close_sidebar\": \"إغلاق القائمة الجانبية\",\n  \"com_nav_commands\": \"الأوامر\",\n  \"com_nav_confirm_clear\": \"تأكيد المسح\",\n  \"com_nav_conversation_mode\": \"وضع المحادثة\",\n  \"com_nav_convo_menu_options\": \"خيارات قائمة المحادثة\",\n  \"com_nav_db_sensitivity\": \"حساسية الديسيبل\",\n  \"com_nav_delete_account\": \"حذف الحساب\",\n  \"com_nav_delete_account_button\": \"حذف حسابي نهائياً\",\n  \"com_nav_delete_account_confirm\": \"حذف الحساب - هل أنت متأكد؟\",\n  \"com_nav_delete_account_email_placeholder\": \"الرجاء إدخال البريد الإلكتروني للحساب\",\n  \"com_nav_delete_cache_storage\": \"حذف ذاكرة التخزين المؤقت للنص المنطوق\",\n  \"com_nav_delete_data_info\": \"سيتم حذف جميع بياناتك\",\n  \"com_nav_delete_warning\": \"تحذير: سيؤدي هذا إلى حذف حسابك بشكل نهائي.\",\n  \"com_nav_edge\": \"إيدج\",\n  \"com_nav_enable_cache_tts\": \"تمكين ذاكرة التخزين المؤقت للنص المنطوق\",\n  \"com_nav_enable_cloud_browser_voice\": \"استخدام الأصوات السحابية\",\n  \"com_nav_enabled\": \"تم التمكين\",\n  \"com_nav_engine\": \"المحرك\",\n  \"com_nav_enter_to_send\": \"اضغط على مفتاح الإدخال لإرسال الرسائل\",\n  \"com_nav_export\": \"تصدير\",\n  \"com_nav_export_all_message_branches\": \"تصدير كل فروع الرسائل\",\n  \"com_nav_export_conversation\": \"تصدير المحادثة\",\n  \"com_nav_export_filename\": \"اسم الملف\",\n  \"com_nav_export_filename_placeholder\": \"قم بتعيين اسم الملف\",\n  \"com_nav_export_include_endpoint_options\": \"تضمين خيارات النقاط النهائية\",\n  \"com_nav_export_recursive\": \"تكراري\",\n  \"com_nav_export_recursive_or_sequential\": \"التراجع أو التسلسل؟\",\n  \"com_nav_export_type\": \"النوع\",\n  \"com_nav_external\": \"خارجي\",\n  \"com_nav_font_size\": \"حجم الخط\",\n  \"com_nav_font_size_base\": \"متوسط\",\n  \"com_nav_font_size_lg\": \"كبير\",\n  \"com_nav_font_size_sm\": \"صغير\",\n  \"com_nav_font_size_xl\": \"كبير جداً\",\n  \"com_nav_font_size_xs\": \"صغير جداً\",\n  \"com_nav_help_faq\": \"مساعدة & الأسئلة الشائعة\",\n  \"com_nav_hide_panel\": \"إخفاء اللوحة الجانبية اليمنى\",\n  \"com_nav_info_code_artifacts\": \"تمكين عرض عناصر الكود التجريبية بجانب المحادثة\",\n  \"com_nav_info_custom_prompt_mode\": \"عند التمكين، لن يتم تضمين النص التلقائي للنظام. يجب توفير جميع تعليمات إنشاء العناصر يدويًا في هذا الوضع.\",\n  \"com_nav_info_enter_to_send\": \"عند التفعيل، سيؤدي الضغط على مفتاح `ENTER` إلى إرسال رسالتك. عند التعطيل، سيؤدي الضغط على مفتاح Enter إلى إضافة سطر جديد، وستحتاج إلى الضغط على `CTRL + ENTER` / `⌘ + ENTER` لإرسال رسالتك.\",\n  \"com_nav_info_fork_change_default\": \"\\\"الرسائل المرئية فقط\\\" تتضمن فقط المسار المباشر إلى الرسالة المحددة. \\\"تضمين الفروع ذات الصلة\\\" يضيف الفروع على طول المسار. \\\"تضمين الكل إلى/من هنا\\\" يشمل جميع الرسائل والفروع المتصلة.\",\n  \"com_nav_info_fork_split_target_setting\": \"عند التفعيل، سيبدأ التفريع من الرسالة المستهدفة إلى آخر رسالة في المحادثة، وفقاً للسلوك المحدد.\",\n  \"com_nav_info_include_shadcnui\": \"عند التفعيل، سيتم تضمين تعليمات استخدام مكونات shadcn/ui. تعد shadcn/ui مجموعة من المكونات القابلة لإعادة الاستخدام والمبنية باستخدام Radix UI و Tailwind CSS. ملاحظة: هذه التعليمات مطولة، يجب تفعيلها فقط إذا كان إخبار نموذج اللغة الآلي (LLM) بالاستيرادات والمكونات الصحيحة مهمًا بالنسبة لك. لمزيد من المعلومات حول هذه المكونات، قم بزيارة: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"عند التمكين، سيتم عرض رموز LaTeX في الرسائل كمعادلات رياضية. تعطيل هذه الخاصية قد يحسن الأداء إذا كنت لا تحتاج إلى عرض LaTeX.\",\n  \"com_nav_info_save_draft\": \"عند التمكين، سيتم حفظ النص والمرفقات التي تدخلها في نموذج الدردشة تلقائياً كمسودات محلية. ستظل هذه المسودات متاحة حتى إذا قمت بإعادة تحميل الصفحة أو التبديل إلى محادثة مختلفة. يتم تخزين المسودات محلياً على جهازك ويتم حذفها بمجرد إرسال الرسالة.\",\n  \"com_nav_info_user_name_display\": \"عند التفعيل، سيظهر اسم المستخدم الخاص بك فوق كل رسالة ترسلها. عند التعطيل، سترى فقط كلمة \\\"أنت\\\" فوق رسائلك\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"اكتشاف تلقائي\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"اللغة\",\n  \"com_nav_latex_parsing\": \"تحليل LaTeX في الرسائل (قد يؤثر على الأداء)\",\n  \"com_nav_log_out\": \"تسجيل الخروج\",\n  \"com_nav_long_audio_warning\": \"ستستغرق النصوص الطويلة وقتاً أطول للمعالجة\",\n  \"com_nav_maximize_chat_space\": \"تكبير مساحة الدردشة\",\n  \"com_nav_modular_chat\": \"تمكين تبديل النقاط النهائية أثناء المحادثة\",\n  \"com_nav_my_files\": \"ملفاتي\",\n  \"com_nav_no_search_results\": \"لم يتم العثور على نتائج البحث\",\n  \"com_nav_not_supported\": \"غير مدعوم\",\n  \"com_nav_open_sidebar\": \"افتح القائمة الجانبية\",\n  \"com_nav_playback_rate\": \"سرعة تشغيل الصوت\",\n  \"com_nav_plugin_auth_error\": \"حدث خطأ أثناء محاولة المصادقة على هذا البرنامج المساعد. يرجى المحاولة مرة أخرى.\",\n  \"com_nav_plugin_install\": \"تثبيت\",\n  \"com_nav_plugin_search\": \"ابحث عن الإضافات\",\n  \"com_nav_plugin_store\": \"متجر الإضافات\",\n  \"com_nav_plugin_uninstall\": \"إلغاء تثبيت\",\n  \"com_nav_plus_command\": \"+- الأمر\",\n  \"com_nav_plus_command_description\": \"تبديل الأمر \\\"+\\\" لإضافة إعداد الردود المتعددة\",\n  \"com_nav_profile_picture\": \"صورة الملف الشخصي\",\n  \"com_nav_save_drafts\": \"حفظ المستخدمين\",\n  \"com_nav_search_placeholder\": \"بحث في الرسائل\",\n  \"com_nav_send_message\": \"إرسال رسالة\",\n  \"com_nav_setting_account\": \"الحساب\",\n  \"com_nav_setting_beta\": \"ميزات تجريبية\",\n  \"com_nav_setting_chat\": \"دردشة\",\n  \"com_nav_setting_data\": \"تحكم في البيانات\",\n  \"com_nav_setting_general\": \"عام\",\n  \"com_nav_setting_speech\": \"الكلام\",\n  \"com_nav_settings\": \"الإعدادات\",\n  \"com_nav_shared_links\": \"روابط مشتركة\",\n  \"com_nav_show_code\": \"إظهار الشفرة دائمًا عند استخدام مفسر الشفرة\",\n  \"com_nav_slash_command\": \"/-الأمر\",\n  \"com_nav_slash_command_description\": \"تبديل الأمر \\\"/\\\" لاختيار موجه عبر لوحة المفاتيح\",\n  \"com_nav_source_buffer_error\": \"خطأ في إعداد تشغيل الصوت. يرجى تحديث الصفحة.\",\n  \"com_nav_speech_cancel_error\": \"تعذر إيقاف تشغيل الصوت. قد تحتاج إلى تحديث الصفحة.\",\n  \"com_nav_speech_to_text\": \"تحويل الكلام إلى نص\",\n  \"com_nav_stop_generating\": \"إيقاف التوليد\",\n  \"com_nav_text_to_speech\": \"تحويل النص إلى كلام\",\n  \"com_nav_theme\": \"المظهر\",\n  \"com_nav_theme_dark\": \"داكن\",\n  \"com_nav_theme_light\": \"فاتح\",\n  \"com_nav_theme_system\": \"النظام\",\n  \"com_nav_tool_dialog\": \"أدوات المساعد\",\n  \"com_nav_tool_dialog_agents\": \"أدوات الوكيل\",\n  \"com_nav_tool_dialog_description\": \"يجب حفظ المساعد لإبقاء اختيارات الأدوات.\",\n  \"com_nav_tool_remove\": \"إزالة\",\n  \"com_nav_tool_search\": \"أدوات البحث\",\n  \"com_nav_tts_init_error\": \"فشل في تهيئة تحويل النص إلى كلام: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"تحويل النص إلى كلام للمحرك المحدد غير مدعوم في هذا المتصفح\",\n  \"com_nav_user\": \"المستخدم\",\n  \"com_nav_user_msg_markdown\": \"عرض رسائل المستخدم بتنسيق markdown\",\n  \"com_nav_user_name_display\": \"عرض اسم المستخدم في الرسائل\",\n  \"com_nav_voice_select\": \"الصوت\",\n  \"com_nav_voices_fetch_error\": \"تعذر استرجاع خيارات الصوت. يرجى التحقق من اتصال الإنترنت الخاص بك.\",\n  \"com_nav_welcome_agent\": \"الرجاء اختيار مساعد\",\n  \"com_nav_welcome_assistant\": \"يرجى اختيار مساعد\",\n  \"com_nav_welcome_message\": \"كيف يمكنني مساعدتك اليوم؟\",\n  \"com_show_agent_settings\": \"إظهار إعدادات الوكيل\",\n  \"com_show_completion_settings\": \"إظهار إعدادات الإكمال\",\n  \"com_show_examples\": \"عرض أمثلة\",\n  \"com_sidepanel_agent_builder\": \"بانٍ المساعد\",\n  \"com_sidepanel_assistant_builder\": \"بانٍ المساعد\",\n  \"com_sidepanel_attach_files\": \"إرفاق الملفات\",\n  \"com_sidepanel_conversation_tags\": \"الإشارات المرجعية\",\n  \"com_sidepanel_hide_panel\": \"إخفاء اللوحة\",\n  \"com_sidepanel_manage_files\": \"إدارة الملفات\",\n  \"com_sidepanel_parameters\": \"معلمات\",\n  \"com_sidepanel_select_agent\": \"اختر وكيلاً\",\n  \"com_sidepanel_select_assistant\": \"اختر مساعدًا\",\n  \"com_ui_accept\": \"أوافق\",\n  \"com_ui_add\": \"إضافة\",\n  \"com_ui_add_model_preset\": \"إضافة نموذج أو إعداد مسبق للرد الإضافي\",\n  \"com_ui_add_multi_conversation\": \"إضافة محادثات متعددة\",\n  \"com_ui_admin\": \"مشرف\",\n  \"com_ui_admin_access_warning\": \"قد يؤدي تعطيل وصول المسؤول إلى هذه الميزة إلى مشاكل غير متوقعة في واجهة المستخدم تتطلب تحديث الصفحة. في حالة الحفظ، الطريقة الوحيدة للتراجع هي عبر إعداد الواجهة في ملف librechat.yaml والذي يؤثر على جميع الأدوار.\",\n  \"com_ui_admin_settings\": \"إعدادات المسؤول\",\n  \"com_ui_advanced\": \"متقدم\",\n  \"com_ui_agent\": \"وكيل\",\n  \"com_ui_agent_delete_error\": \"حدث خطأ أثناء حذف المساعد\",\n  \"com_ui_agent_deleted\": \"تم حذف المساعد بنجاح\",\n  \"com_ui_agent_duplicate_error\": \"حدث خطأ أثناء نسخ المساعد\",\n  \"com_ui_agent_duplicated\": \"تم نسخ العميل بنجاح\",\n  \"com_ui_agent_editing_allowed\": \"يمكن للمستخدمين الآخرين تعديل هذا الوكيل بالفعل\",\n  \"com_ui_agents\": \"الوكلاء\",\n  \"com_ui_agents_allow_create\": \"السماح بإنشاء الوكلاء\",\n  \"com_ui_agents_allow_share_global\": \"السماح بمشاركة الوكلاء مع جميع المستخدمين\",\n  \"com_ui_agents_allow_use\": \"السماح باستخدام الوكلاء\",\n  \"com_ui_all\": \"الكل\",\n  \"com_ui_all_proper\": \"الكل\",\n  \"com_ui_archive\": \"أرشفة\",\n  \"com_ui_archive_error\": \"فشل في أرشفة المحادثة\",\n  \"com_ui_artifact_click\": \"انقر للفتح\",\n  \"com_ui_artifacts\": \"المخرجات\",\n  \"com_ui_artifacts_toggle\": \"تبديل واجهة العناصر\",\n  \"com_ui_ascending\": \"تصاعدي\",\n  \"com_ui_assistant\": \"المساعد\",\n  \"com_ui_assistant_delete_error\": \"حدث خطأ أثناء حذف المساعد\",\n  \"com_ui_assistant_deleted\": \"تم حذف المساعد بنجاح\",\n  \"com_ui_assistants\": \"المساعدون\",\n  \"com_ui_assistants_output\": \"إخراج المساعدين\",\n  \"com_ui_attach_error\": \"تعذر إرفاق الملف. يرجى إنشاء أو تحديد محادثة، أو حاول تحديث الصفحة.\",\n  \"com_ui_attach_error_openai\": \"لا يمكن إرفاق ملفات المساعد إلى نقاط نهائية أخرى\",\n  \"com_ui_attach_error_size\": \"تم تجاوز حد حجم الملف للنقطة النهائية\",\n  \"com_ui_attach_error_type\": \"نوع ملف غير مدعوم للنقطة النهائية:\",\n  \"com_ui_attach_warn_endpoint\": \"قد يتم تجاهل الملفات غير المساعدة دون وجود أداة متوافقة\",\n  \"com_ui_attachment\": \"مرفق\",\n  \"com_ui_authentication\": \"المصادقة\",\n  \"com_ui_avatar\": \"الصورة الرمزية\",\n  \"com_ui_back_to_chat\": \"العودة إلى الدردشة\",\n  \"com_ui_back_to_prompts\": \"العودة إلى الأوامر\",\n  \"com_ui_bookmark_delete_confirm\": \"هل أنت متأكد أنك تريد حذف هذه الإشارة المرجعية؟\",\n  \"com_ui_bookmarks\": \"الإشارات المرجعية\",\n  \"com_ui_bookmarks_add\": \"إضافة إشارات مرجعية\",\n  \"com_ui_bookmarks_add_to_conversation\": \"أضف إلى المحادثة الحالية\",\n  \"com_ui_bookmarks_count\": \"العدد\",\n  \"com_ui_bookmarks_create_error\": \"حدث خطأ أثناء إنشاء الإشارة المرجعية\",\n  \"com_ui_bookmarks_create_exists\": \"هذه الإشارة المرجعية موجودة بالفعل\",\n  \"com_ui_bookmarks_create_success\": \"تم إنشاء الإشارة المرجعية بنجاح\",\n  \"com_ui_bookmarks_delete\": \"حذف الإشارة المرجعية\",\n  \"com_ui_bookmarks_delete_error\": \"حدث خطأ أثناء حذف الإشارة المرجعية\",\n  \"com_ui_bookmarks_delete_success\": \"تم حذف الإشارة المرجعية بنجاح\",\n  \"com_ui_bookmarks_description\": \"وصف\",\n  \"com_ui_bookmarks_edit\": \"تعديل الإشارة المرجعية\",\n  \"com_ui_bookmarks_filter\": \"تصفية الإشارات المرجعية...\",\n  \"com_ui_bookmarks_new\": \"إشارة مرجعية جديدة\",\n  \"com_ui_bookmarks_title\": \"عنوان\",\n  \"com_ui_bookmarks_update_error\": \"حدث خطأ أثناء تحديث الإشارة المرجعية\",\n  \"com_ui_bookmarks_update_success\": \"تم تحديث الإشارة المرجعية بنجاح\",\n  \"com_ui_cancel\": \"إلغاء\",\n  \"com_ui_chat\": \"دردشة\",\n  \"com_ui_chat_history\": \"سجل الدردشة\",\n  \"com_ui_clear\": \"مسح\",\n  \"com_ui_clear_all\": \"مسح الكل\",\n  \"com_ui_close\": \"إغلاق\",\n  \"com_ui_code\": \"كود\",\n  \"com_ui_collapse_chat\": \"طي الدردشة\",\n  \"com_ui_command_placeholder\": \"اختياري: أدخل أمرًا للموجه أو سيتم استخدام الاسم.\",\n  \"com_ui_command_usage_placeholder\": \"حدد موجهًا باستخدام الأمر أو الاسم\",\n  \"com_ui_confirm_action\": \"تأكيد الإجراء\",\n  \"com_ui_context\": \"سياق\",\n  \"com_ui_continue\": \"استمر\",\n  \"com_ui_controls\": \"عناصر التحكم\",\n  \"com_ui_copied\": \"تم النسخ\",\n  \"com_ui_copied_to_clipboard\": \"تم النسخ إلى الحافظة\",\n  \"com_ui_copy_code\": \"نسخ الكود\",\n  \"com_ui_copy_link\": \"نسخ الرابط\",\n  \"com_ui_copy_to_clipboard\": \"نسخ إلى الحافظة\",\n  \"com_ui_create\": \"إنشاء\",\n  \"com_ui_create_link\": \"إنشاء رابط\",\n  \"com_ui_create_prompt\": \"إنشاء أمر\",\n  \"com_ui_custom_prompt_mode\": \"وضع الأمر المخصص\",\n  \"com_ui_dashboard\": \"لوحة التحكم\",\n  \"com_ui_date\": \"تاريخ\",\n  \"com_ui_date_april\": \"أبريل\",\n  \"com_ui_date_august\": \"أغسطس\",\n  \"com_ui_date_december\": \"ديسمبر\",\n  \"com_ui_date_february\": \"فبراير\",\n  \"com_ui_date_january\": \"يناير\",\n  \"com_ui_date_july\": \"يوليو\",\n  \"com_ui_date_june\": \"يونيو\",\n  \"com_ui_date_march\": \"مارس\",\n  \"com_ui_date_may\": \"مايو\",\n  \"com_ui_date_november\": \"نوفمبر\",\n  \"com_ui_date_october\": \"أكتوبر\",\n  \"com_ui_date_previous_30_days\": \"الـ 30 يومًا السابقة\",\n  \"com_ui_date_previous_7_days\": \"الأيام السبعة السابقة\",\n  \"com_ui_date_september\": \"سبتمبر\",\n  \"com_ui_date_today\": \"اليوم\",\n  \"com_ui_date_yesterday\": \"أمس\",\n  \"com_ui_decline\": \"لا أوافق\",\n  \"com_ui_delete\": \"حذف\",\n  \"com_ui_delete_action\": \"حذف الإجراء\",\n  \"com_ui_delete_action_confirm\": \"هل أنت متأكد من رغبتك في حذف هذا الإجراء؟\",\n  \"com_ui_delete_agent_confirm\": \"هل أنت متأكد من رغبتك في حذف هذا الوكيل؟\",\n  \"com_ui_delete_assistant_confirm\": \"هل أنت متأكد من رغبتك في حذف هذا المساعد؟ لا يمكن التراجع عن هذا الإجراء.\",\n  \"com_ui_delete_confirm\": \"سيتم حذف هذا\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"سيؤدي هذا إلى حذف النسخة المحددة لـ \\\"{{0}}.\\\" إذا لم تكن هناك نسخ أخرى، سيتم حذف النص التلقائي.\",\n  \"com_ui_delete_conversation\": \"حذف الدردشة؟\",\n  \"com_ui_delete_prompt\": \"حذف المطالبة؟\",\n  \"com_ui_delete_shared_link\": \"حذف الرابط المشترك؟\",\n  \"com_ui_delete_tool\": \"حذف الأداة\",\n  \"com_ui_delete_tool_confirm\": \"هل أنت متأكد من رغبتك في حذف هذه الأداة؟\",\n  \"com_ui_descending\": \"تنازلي\",\n  \"com_ui_description\": \"وصف\",\n  \"com_ui_description_placeholder\": \"اختياري: أدخل وصفاً ليتم عرضه للموجه\",\n  \"com_ui_download_error\": \"حدث خطأ أثناء تنزيل الملف. قد يكون الملف قد تم حذفه.\",\n  \"com_ui_dropdown_variables\": \"متغيرات القائمة المنسدلة:\",\n  \"com_ui_dropdown_variables_info\": \"إنشاء قوائم منسدلة مخصصة لمحادثاتك: `{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"نسخ\",\n  \"com_ui_duplication_error\": \"حدث خطأ أثناء نسخ المحادثة\",\n  \"com_ui_duplication_processing\": \"جارِ نسخ المحادثة...\",\n  \"com_ui_duplication_success\": \"تم نسخ المحادثة بنجاح\",\n  \"com_ui_edit\": \"تعديل\",\n  \"com_ui_endpoint\": \"نقطة النهاية\",\n  \"com_ui_endpoint_menu\": \"قائمة نقطة نهاية LLM\",\n  \"com_ui_endpoints_available\": \"نقاط النهاية المتاحة\",\n  \"com_ui_enter\": \"أدخل\",\n  \"com_ui_enter_api_key\": \"أدخل مفتاح API\",\n  \"com_ui_enter_openapi_schema\": \"أدخل مخطط OpenAPI هنا\",\n  \"com_ui_enter_var\": \"أدخل {{0}}\",\n  \"com_ui_error\": \"خطأ\",\n  \"com_ui_error_connection\": \"خطأ في الاتصال بالخادم، حاول تحديث الصفحة.\",\n  \"com_ui_error_save_admin_settings\": \"حدث خطأ أثناء حفظ إعدادات المسؤول.\",\n  \"com_ui_examples\": \"أمثلة\",\n  \"com_ui_export_convo_modal\": \"نافذة تصدير المحادثة\",\n  \"com_ui_field_required\": \"هذا الحقل مطلوب\",\n  \"com_ui_filter_prompts_name\": \"تصفية الأوامر حسب الاسم\",\n  \"com_ui_fork\": \"تفرع\",\n  \"com_ui_fork_all_target\": \"تضمين الكل إلى/من هنا\",\n  \"com_ui_fork_branches\": \"تضمين الفروع ذات الصلة\",\n  \"com_ui_fork_change_default\": \"خيار التفرع الافتراضي\",\n  \"com_ui_fork_default\": \"استخدم خيار التفريع الافتراضي\",\n  \"com_ui_fork_error\": \"حدث خطأ أثناء تفريع المحادثة\",\n  \"com_ui_fork_from_message\": \"اختر خيار التفرع\",\n  \"com_ui_fork_info_1\": \"استخدم هذا الإعداد لتفريع الرسائل بالسلوك المرغوب.\",\n  \"com_ui_fork_info_2\": \"\\\"التفريع\\\" يشير إلى إنشاء محادثة جديدة تبدأ/تنتهي من رسائل محددة في المحادثة الحالية، وإنشاء نسخة وفقًا للخيارات المحددة.\",\n  \"com_ui_fork_info_3\": \"\\\"الرسالة المستهدفة\\\" تشير إما إلى الرسالة التي تم فتح هذه النافذة المنبثقة منها، أو إذا قمت بتحديد \\\"{{0}}\\\"، آخر رسالة في المحادثة.\",\n  \"com_ui_fork_info_branches\": \"هذا الخيار يقسم الرسائل المرئية، جنبًا إلى جنب مع الفروع ذات الصلة؛ بمعنى آخر، المسار المباشر إلى الرسالة المستهدفة، بما في ذلك الفروع على طول المسار.\",\n  \"com_ui_fork_info_remember\": \"حدد هذا الخيار لتذكر الإعدادات التي اخترتها لاستخدامها مستقبلاً، مما يجعل عملية تفريع المحادثات أسرع وفقًا لتفضيلاتك.\",\n  \"com_ui_fork_info_start\": \"إذا تم تحديده، فسيبدأ التفريع من هذه الرسالة إلى آخر رسالة في المحادثة، وفقًا للسلوك المحدد أعلاه.\",\n  \"com_ui_fork_info_target\": \"هذا الخيار يؤدي إلى تفريع جميع الرسائل التي تؤدي إلى الرسالة المستهدفة، بما في ذلك جيرانها؛ بعبارة أخرى، يتم تضمين جميع فروع الرسائل، سواء كانت مرئية أم لا أو على نفس المسار.\",\n  \"com_ui_fork_info_visible\": \"هذا الخيار يقوم بتفريع الرسائل المرئية فقط؛ بمعنى آخر، المسار المباشر إلى الرسالة المستهدفة، دون أي فروع.\",\n  \"com_ui_fork_processing\": \"تجزئة المحادثة...\",\n  \"com_ui_fork_remember\": \"تذكر\",\n  \"com_ui_fork_remember_checked\": \"سيتم تذكر اختيارك بعد الاستخدام. يمكنك تغيير هذا في أي وقت من إعدادات البرنامج.\",\n  \"com_ui_fork_split_target\": \"ابدأ التفرع هنا\",\n  \"com_ui_fork_split_target_setting\": \"ابدأ التفرع من رسالة الهدف افتراضيًا\",\n  \"com_ui_fork_success\": \"تم تفريع المحادثة بنجاح\",\n  \"com_ui_fork_visible\": \"الرسائل المرئية فقط\",\n  \"com_ui_go_to_conversation\": \"انتقل إلى المحادثة\",\n  \"com_ui_happy_birthday\": \"إنه عيد ميلادي الأول!\",\n  \"com_ui_host\": \"مُضيف\",\n  \"com_ui_image_gen\": \"توليد الصور\",\n  \"com_ui_import_conversation_error\": \"حدث خطأ أثناء استيراد محادثاتك\",\n  \"com_ui_import_conversation_file_type_error\": \"نوع الملف غير مدعوم للاستيراد\",\n  \"com_ui_import_conversation_info\": \"استيراد محادثات من ملف JSON\",\n  \"com_ui_import_conversation_success\": \"تم استيراد المحادثات بنجاح\",\n  \"com_ui_include_shadcnui\": \"تضمين تعليمات مكونات shadcn/ui\",\n  \"com_ui_input\": \"إدخال\",\n  \"com_ui_instructions\": \"تعليمات\",\n  \"com_ui_latest_footer\": \"الذكاء الاصطناعي للجميع.\",\n  \"com_ui_librechat_code_api_key\": \"احصل على مفتاح واجهة برمجة التطبيقات لمترجم الكود LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"آمن. متعدد اللغات. ملفات الإدخال/الإخراج.\",\n  \"com_ui_librechat_code_api_title\": \"تشغيل كود الذكاء الاصطناعي\",\n  \"com_ui_llm_menu\": \"قائمة النماذج اللغوية\",\n  \"com_ui_llms_available\": \"نماذج الذكاء الاصطناعي المتاحة\",\n  \"com_ui_locked\": \"مقفل\",\n  \"com_ui_logo\": \"شعار {{0}}\",\n  \"com_ui_manage\": \"إدارة\",\n  \"com_ui_max_tags\": \"الحد الأقصى المسموح به هو {{0}}، باستخدام أحدث القيم.\",\n  \"com_ui_mention\": \"اذكر نقطة نهاية أو مساعدًا أو إعدادًا مسبقًا للتبديل إليه بسرعة\",\n  \"com_ui_min_tags\": \"لا يمكن إزالة المزيد من القيم، الحد الأدنى المطلوب هو {{0}}.\",\n  \"com_ui_model\": \"النموذج\",\n  \"com_ui_model_parameters\": \"معلمات النموذج\",\n  \"com_ui_more_info\": \"مزيد من المعلومات\",\n  \"com_ui_my_prompts\": \"أوامري\",\n  \"com_ui_name\": \"اسم\",\n  \"com_ui_new_chat\": \"دردشة جديدة\",\n  \"com_ui_next\": \"التالي\",\n  \"com_ui_no\": \"لا\",\n  \"com_ui_no_bookmarks\": \"يبدو أنه لا توجد لديك إشارات مرجعية بعد. انقر على محادثة وأضف واحدة جديدة\",\n  \"com_ui_no_category\": \"لا يوجد تصنيف\",\n  \"com_ui_no_changes\": \"لا توجد تغييرات للتحديث\",\n  \"com_ui_no_terms_content\": \"لا يوجد محتوى لشروط الخدمة\",\n  \"com_ui_none_selected\": \"لم يتم اختيار أي شيء\",\n  \"com_ui_nothing_found\": \"لم يتم العثور على أي شيء\",\n  \"com_ui_of\": \"من\",\n  \"com_ui_off\": \"إيقاف\",\n  \"com_ui_on\": \"مفعل\",\n  \"com_ui_page\": \"صفحة\",\n  \"com_ui_prev\": \"السابق\",\n  \"com_ui_preview\": \"معاينة\",\n  \"com_ui_privacy_policy\": \"سياسة الخصوصية\",\n  \"com_ui_privacy_policy_url\": \"رابط سياسة الخصوصية\",\n  \"com_ui_prompt\": \"موجه\",\n  \"com_ui_prompt_already_shared_to_all\": \"تم مشاركة هذا المحتوى مع جميع المستخدمين بالفعل\",\n  \"com_ui_prompt_name\": \"اسم الأمر\",\n  \"com_ui_prompt_name_required\": \"اسم الأمر مطلوب\",\n  \"com_ui_prompt_preview_not_shared\": \"لم يسمح المؤلف بالمشاركة لهذا الإجراء\",\n  \"com_ui_prompt_text\": \"نص\",\n  \"com_ui_prompt_text_required\": \"النص مطلوب\",\n  \"com_ui_prompt_update_error\": \"حدث خطأ أثناء تحديث المطالبة\",\n  \"com_ui_prompts\": \"الأوامر\",\n  \"com_ui_prompts_allow_create\": \"السماح بإنشاء الأوامر\",\n  \"com_ui_prompts_allow_share_global\": \"السماح بمشاركة الأوامر مع جميع المستخدمين\",\n  \"com_ui_prompts_allow_use\": \"السماح باستخدام الأوامر\",\n  \"com_ui_provider\": \"مزود\",\n  \"com_ui_read_aloud\": \"قراءة بصوت عالٍ\",\n  \"com_ui_regenerate\": \"إعادة توليد\",\n  \"com_ui_region\": \"المنطقة\",\n  \"com_ui_rename\": \"إعادة تسمية\",\n  \"com_ui_reset_var\": \"إعادة تعيين {{0}}\",\n  \"com_ui_result\": \"النتيجة\",\n  \"com_ui_revoke\": \"إلغاء\",\n  \"com_ui_revoke_info\": \"إلغاء جميع بيانات الاعتماد المقدمة من المستخدم.\",\n  \"com_ui_revoke_key_confirm\": \"هل أنت متأكد من إلغاء هذا المفتاح؟\",\n  \"com_ui_revoke_key_endpoint\": \"إلغاء المفتاح لـ {{0}}\",\n  \"com_ui_revoke_keys\": \"إلغاء المفاتيح\",\n  \"com_ui_revoke_keys_confirm\": \"هل أنت متأكد من أنك تريد إلغاء جميع المفاتيح؟\",\n  \"com_ui_role_select\": \"الدور\",\n  \"com_ui_run_code\": \"تنفيذ الشفرة\",\n  \"com_ui_run_code_error\": \"حدث خطأ أثناء تشغيل الكود\",\n  \"com_ui_save\": \"حفظ\",\n  \"com_ui_save_submit\": \"حفظ وإرسال\",\n  \"com_ui_saved\": \"تم الحفظ!\",\n  \"com_ui_schema\": \"المخطط\",\n  \"com_ui_select\": \"اختر\",\n  \"com_ui_select_file\": \"اختر ملفًا\",\n  \"com_ui_select_model\": \"اختر نموذجًا\",\n  \"com_ui_select_provider\": \"اختر مزودًا\",\n  \"com_ui_select_provider_first\": \"اختر مزود الخدمة أولاً\",\n  \"com_ui_select_region\": \"اختر المنطقة\",\n  \"com_ui_select_search_model\": \"ابحث عن نموذج باسمه\",\n  \"com_ui_select_search_plugin\": \"إضافة البحث عن الإضافات حسب الاسم\",\n  \"com_ui_select_search_provider\": \"ابحث عن مزود الخدمة باسمه\",\n  \"com_ui_select_search_region\": \"ابحث عن المنطقة بالاسم\",\n  \"com_ui_share\": \"مشاركة\",\n  \"no_text_recognized\": \"التعرف على الصوت غير متوفر. يرجى الاتصال بالمسؤول.\",\n  \"com_ui_share_create_message\": \"سيظل اسمك وأي رسائل تضيفها بعد المشاركة خاصة.\",\n  \"com_ui_share_delete_error\": \"حدث خطأ أثناء حذف الرابط المشترك.\",\n  \"com_ui_share_error\": \"حدث خطأ أثناء مشاركة رابط الدردشة\",\n  \"com_ui_share_link_to_chat\": \"شارك الرابط في الدردشة\",\n  \"com_ui_share_to_all_users\": \"مشاركة مع جميع المستخدمين\",\n  \"com_ui_share_update_message\": \"سيظل اسمك والتعليمات المخصصة وأي رسائل تضيفها بعد المشاركة خاصة.\",\n  \"com_ui_share_var\": \"مشاركة {{0}}\",\n  \"com_ui_shared_link_not_found\": \"الرابط المشترك غير موجود\",\n  \"com_ui_shared_prompts\": \"المطالبات المشتركة\",\n  \"com_ui_show_all\": \"عرض الكل\",\n  \"com_ui_simple\": \"بسيط\",\n  \"com_ui_size\": \"الحجم\",\n  \"com_ui_special_variables\": \"المتغيرات الخاصة:\",\n  \"com_ui_special_variables_info\": \"استخدم `{{current_date}}` للتاريخ الحالي، و `{{current_user}}` لاسم حسابك المحدد.\",\n  \"com_ui_speech_while_submitting\": \"لا يمكن إرسال الكلام أثناء إنشاء الرد\",\n  \"com_ui_stop\": \"توقف\",\n  \"com_ui_storage\": \"التخزين\",\n  \"com_ui_submit\": \"إرسال\",\n  \"com_ui_terms_and_conditions\": \"شروط الخدمة\",\n  \"com_ui_terms_of_service\": \"شروط الخدمة\",\n  \"com_ui_tools\": \"أدوات المساعدين\",\n  \"com_ui_unarchive\": \"إلغاء الأرشفة\",\n  \"com_ui_unarchive_error\": \"فشل في إلغاء الأرشفة\",\n  \"com_ui_unknown\": \"غير معروف\",\n  \"com_ui_update\": \"تحديث\",\n  \"com_ui_upload\": \"تحميل\",\n  \"com_ui_upload_code_files\": \"تحميل لمفسر الكود\",\n  \"com_ui_upload_delay\": \"تحميل \\\"{{0}}\\\" يستغرق وقتًا أطول من المتوقع. يرجى الانتظار حتى ينتهي فهرسة الملف للاسترجاع.\",\n  \"com_ui_upload_error\": \"حدث خطأ أثناء تحميل ملفك\",\n  \"com_ui_upload_file_search\": \"تحميل للبحث في الملفات\",\n  \"com_ui_upload_files\": \"تحميل الملفات\",\n  \"com_ui_upload_image\": \"تحميل صورة\",\n  \"com_ui_upload_image_input\": \"تحميل صورة\",\n  \"com_ui_upload_invalid\": \"ملف غير صالح للتحميل. يجب أن يكون صورة لا تتجاوز الحد المسموح به\",\n  \"com_ui_upload_invalid_var\": \"ملف غير صالح للتحميل. يجب أن يكون صورة لا يتجاوز حجمها {{0}} ميجابايت\",\n  \"com_ui_upload_success\": \"تم تحميل الملف بنجاح\",\n  \"com_ui_upload_type\": \"اختر نوع التحميل\",\n  \"com_ui_use_micrphone\": \"استخدام الميكروفون\",\n  \"com_ui_use_prompt\": \"استخدم الأمر\",\n  \"com_ui_variables\": \"متغيرات\",\n  \"com_ui_variables_info\": \"استخدم أقواس مزدوجة في نصك لإنشاء متغيرات، مثل `{{متغير كمثال}}`، لملئها لاحقاً عند استخدام النص البرمجي.\",\n  \"com_ui_version_var\": \"الإصدار {{0}}\",\n  \"com_ui_versions\": \"الإصدارات\",\n  \"com_ui_yes\": \"نعم\",\n  \"com_ui_zoom\": \"تكبير\",\n  \"com_user_message\": \"أنت\",\n  \"com_warning_resubmit_unsupported\": \"إعادة إرسال رسالة الذكاء الاصطناعي غير مدعومة لنقطة النهاية هذه\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/de/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"Die KI erstellt noch ihre Antwort.\",\n  \"com_a11y_end\": \"Die KI hat ihre Antwort beendet.\",\n  \"com_a11y_start\": \"Die KI hat mit ihrer Antwort begonnen.\",\n  \"com_agents_allow_editing\": \"Anderen Nutzenden die Bearbeitung deines Agenten erlauben\",\n  \"com_agents_by_librechat\": \"von LibreChat\",\n  \"com_agents_code_interpreter\": \"Wenn aktiviert, ermöglicht es deinem Agenten, die LibreChat Code Interpreter API zu nutzen, um generierten Code sicher auszuführen, einschließlich der Verarbeitung von Dateien. Erfordert einen gültigen API-Schlüssel.\",\n  \"com_agents_code_interpreter_title\": \"Code-Interpreter-API\",\n  \"com_agents_create_error\": \"Bei der Erstellung deines Agenten ist ein Fehler aufgetreten.\",\n  \"com_agents_description_placeholder\": \"Optional: Beschreibe hier deinen Agenten\",\n  \"com_agents_enable_file_search\": \"Dateisuche aktivieren\",\n  \"com_agents_file_search_disabled\": \"Der Agent muss erstellt werden, bevor Dateien für die Dateisuche hochgeladen werden können.\",\n  \"com_agents_file_search_info\": \"Wenn aktiviert, wird der Agent über die unten aufgelisteten exakten Dateinamen informiert und kann dadurch relevante Informationen aus diesen Dateien abrufen\",\n  \"com_agents_instructions_placeholder\": \"Die Systemanweisungen, die der Agent verwendet\",\n  \"com_agents_missing_provider_model\": \"Bitte wählen Sie einen Anbieter und ein Modell aus, bevor Sie einen Agenten erstellen.\",\n  \"com_agents_name_placeholder\": \"Optional: Der Name des Agenten\",\n  \"com_agents_no_access\": \"Du hast keine Berechtigung, diesen Agenten zu bearbeiten.\",\n  \"com_agents_not_available\": \"Agent nicht verfügbar\",\n  \"com_agents_search_name\": \"Agenten nach Namen suchen\",\n  \"com_agents_update_error\": \"Beim Aktualisieren deines Agenten ist ein Fehler aufgetreten.\",\n  \"com_assistants_action_attempt\": \"Assistent möchte kommunizieren mit {{0}}\",\n  \"com_assistants_actions\": \"Aktionen\",\n  \"com_assistants_actions_disabled\": \"Du müsst einen Assistenten erstellen, bevor du Aktionen hinzufügen kannst.\",\n  \"com_assistants_actions_info\": \"Lasse deinen Assistenten Informationen abrufen oder Aktionen über APIs ausführen\",\n  \"com_assistants_add_actions\": \"Aktionen hinzufügen\",\n  \"com_assistants_add_tools\": \"Werkzeuge hinzufügen\",\n  \"com_assistants_allow_sites_you_trust\": \"Erlaube nur Webseiten, denen du vertraust.\",\n  \"com_assistants_append_date\": \"Aktuelles Datum & Uhrzeit anhängen\",\n  \"com_assistants_append_date_tooltip\": \"Wenn aktiviert, werden das aktuelle Client-Datum und die Uhrzeit an die Systemanweisungen des Assistenten angehängt.\",\n  \"com_assistants_attempt_info\": \"Assistent möchte Folgendes senden:\",\n  \"com_assistants_available_actions\": \"Verfügbare Aktionen\",\n  \"com_assistants_capabilities\": \"Fähigkeiten\",\n  \"com_assistants_code_interpreter\": \"Code-Interpreter\",\n  \"com_assistants_code_interpreter_files\": \"Die folgenden Dateien sind nur für den Code-Interpreter:\",\n  \"com_assistants_code_interpreter_info\": \"Der Code-Interpreter ermöglicht es dem Assistenten, Code zu schreiben und auszuführen. Dieses Tool kann Dateien mit verschiedenen Daten und Formatierungen verarbeiten und Dateien wie Grafiken generieren.\",\n  \"com_assistants_completed_action\": \"Mit {{0}} gesprochen\",\n  \"com_assistants_completed_function\": \"{{0}} ausgeführt\",\n  \"com_assistants_conversation_starters\": \"Gesprächseinstiege\",\n  \"com_assistants_conversation_starters_placeholder\": \"Gib einen Gesprächseinstieg ein\",\n  \"com_assistants_create_error\": \"Bei der Erstellung deines Assistenten ist ein Fehler aufgetreten.\",\n  \"com_assistants_create_success\": \"Erfolgreich erstellt\",\n  \"com_assistants_delete_actions_error\": \"Beim Löschen der Aktion ist ein Fehler aufgetreten.\",\n  \"com_assistants_delete_actions_success\": \"Aktion erfolgreich vom Assistenten gelöscht\",\n  \"com_assistants_description_placeholder\": \"Optional: Beschreibe deinen Assistenten hier\",\n  \"com_assistants_domain_info\": \"Assistent hat diese Information an {{0}} gesendet\",\n  \"com_assistants_file_search\": \"Dateisuche\",\n  \"com_assistants_file_search_info\": \"Die Dateisuche ermöglicht dem Assistenten, Wissen aus Dateien zu nutzen, die du oder deine Benutzer hochladen. Sobald eine Datei hochgeladen wurde, entscheidet der Assistent automatisch, wann er basierend auf Benutzeranfragen Inhalte abruft. Das Anhängen von Vektor-Speichern für die Dateisuche wird noch nicht unterstützt. Sie können sie vom Provider-Playground aus anhängen oder Dateien für die Dateisuche auf Thread-Basis an Nachrichten anhängen.\",\n  \"com_assistants_function_use\": \"Assistent hat {{0}} verwendet\",\n  \"com_assistants_image_vision\": \"Bildanalyse\",\n  \"com_assistants_instructions_placeholder\": \"Die Systemanweisungen, die der Assistent verwendet\",\n  \"com_assistants_knowledge\": \"Wissen\",\n  \"com_assistants_knowledge_disabled\": \"Der Assistent muss erstellt und Code-Interpreter oder Abruf müssen aktiviert und gespeichert werden, bevor Dateien als Wissen hochgeladen werden können.\",\n  \"com_assistants_knowledge_info\": \"Wenn du Dateien unter Wissen hochlädst, kannst du bei Gesprächen mit deinem Assistenten Dateiinhalte einbeziehen.\",\n  \"com_assistants_max_starters_reached\": \"Maximale Anzahl an Gesprächseinstiegen erreicht\",\n  \"com_assistants_name_placeholder\": \"Optional: Der Name des Assistenten\",\n  \"com_assistants_non_retrieval_model\": \"Die Dateisuche ist für dieses KI-Modell nicht aktiviert. Bitte wähle ein anderes Modell aus.\",\n  \"com_assistants_retrieval\": \"Abruf\",\n  \"com_assistants_running_action\": \"Aktion wird ausgeführt\",\n  \"com_assistants_search_name\": \"Assistenten nach Namen suchen\",\n  \"com_assistants_update_actions_error\": \"Bei der Erstellung oder Aktualisierung der Aktion ist ein Fehler aufgetreten.\",\n  \"com_assistants_update_actions_success\": \"Aktion erfolgreich erstellt oder aktualisiert\",\n  \"com_assistants_update_error\": \"Bei der Aktualisierung deines Assistenten ist ein Fehler aufgetreten.\",\n  \"com_assistants_update_success\": \"Erfolgreich aktualisiert\",\n  \"com_auth_already_have_account\": \"Hast du bereits ein Konto?\",\n  \"com_auth_apple_login\": \"Mit Apple anmelden\",\n  \"com_auth_back_to_login\": \"Zurück zur Anmeldung\",\n  \"com_auth_click\": \"Klicke\",\n  \"com_auth_click_here\": \"Klicke hier\",\n  \"com_auth_continue\": \"Fortfahren\",\n  \"com_auth_create_account\": \"Erstelle dein Konto\",\n  \"com_auth_discord_login\": \"Mit Discord fortfahren\",\n  \"com_auth_email\": \"E-Mail\",\n  \"com_auth_email_address\": \"E-Mail-Adresse\",\n  \"com_auth_email_max_length\": \"E-Mail sollte nicht länger als 120 Zeichen sein\",\n  \"com_auth_email_min_length\": \"E-Mail muss mindestens 6 Zeichen lang sein\",\n  \"com_auth_email_pattern\": \"Du musst eine gültige E-Mail-Adresse eingeben\",\n  \"com_auth_email_required\": \"E-Mail ist erforderlich\",\n  \"com_auth_email_resend_link\": \"E-Mail erneut senden\",\n  \"com_auth_email_resent_failed\": \"Erneutes Senden der Verifizierungs-E-Mail fehlgeschlagen\",\n  \"com_auth_email_resent_success\": \"Verifizierungs-E-Mail erfolgreich erneut gesendet\",\n  \"com_auth_email_verification_failed\": \"E-Mail-Verifizierung fehlgeschlagen\",\n  \"com_auth_email_verification_failed_token_missing\": \"Verifizierung fehlgeschlagen, Token fehlt\",\n  \"com_auth_email_verification_in_progress\": \"Ihre E-Mail wird verifiziert, bitte warten\",\n  \"com_auth_email_verification_invalid\": \"Ungültige E-Mail-Verifizierung\",\n  \"com_auth_email_verification_redirecting\": \"Weiterleitung in {{0}} Sekunden...\",\n  \"com_auth_email_verification_resend_prompt\": \"Keine E-Mail erhalten?\",\n  \"com_auth_email_verification_success\": \"E-Mail erfolgreich verifiziert\",\n  \"com_auth_email_verifying_ellipsis\": \"Überprüfe …\",\n  \"com_auth_error_create\": \"Bei der Registrierung deines Kontos ist ein Fehler aufgetreten. Bitte versuche es erneut.\",\n  \"com_auth_error_invalid_reset_token\": \"Dieser Passwort-Reset-Token ist nicht mehr gültig.\",\n  \"com_auth_error_login\": \"Anmeldung mit den angegebenen Informationen nicht möglich. Bitte überprüfe deine Anmeldedaten und versuche es erneut.\",\n  \"com_auth_error_login_ban\": \"Dein Konto wurde aufgrund von Verstößen gegen unseren Dienst vorübergehend gesperrt.\",\n  \"com_auth_error_login_rl\": \"Zu viele Anmeldeversuche in kurzer Zeit. Bitte versuche es später erneut.\",\n  \"com_auth_error_login_server\": \"Es gab einen internen Serverfehler. Bitte warte einen Moment und versuche es erneut.\",\n  \"com_auth_error_login_unverified\": \"Dein Konto wurde nicht verifiziert. Bitte überprüfe deine E-Mail auf einen Verifizierungslink.\",\n  \"com_auth_facebook_login\": \"Mit Facebook fortfahren\",\n  \"com_auth_full_name\": \"Vollständiger Name\",\n  \"com_auth_github_login\": \"Mit Github fortfahren\",\n  \"com_auth_google_login\": \"Mit Google fortfahren\",\n  \"com_auth_here\": \"HIER\",\n  \"com_auth_login\": \"Anmelden\",\n  \"com_auth_login_with_new_password\": \"Du kannst dich jetzt mit deinem neuen Passwort anmelden.\",\n  \"com_auth_name_max_length\": \"Name darf nicht länger als 80 Zeichen sein\",\n  \"com_auth_name_min_length\": \"Name muss mindestens 3 Zeichen lang sein\",\n  \"com_auth_name_required\": \"Name ist erforderlich\",\n  \"com_auth_no_account\": \"Du hast noch kein Konto?\",\n  \"com_auth_password\": \"Passwort\",\n  \"com_auth_password_confirm\": \"Passwort bestätigen\",\n  \"com_auth_password_forgot\": \"Passwort vergessen?\",\n  \"com_auth_password_max_length\": \"Passwort muss weniger als 128 Zeichen lang sein\",\n  \"com_auth_password_min_length\": \"Passwort muss mindestens 8 Zeichen lang sein\",\n  \"com_auth_password_not_match\": \"Passwörter stimmen nicht überein\",\n  \"com_auth_password_required\": \"Passwort ist erforderlich\",\n  \"com_auth_registration_success_generic\": \"Bitte überprüfe deine E-Mail, um deine E-Mail-Adresse zu verifizieren.\",\n  \"com_auth_registration_success_insecure\": \"Registrierung erfolgreich.\",\n  \"com_auth_reset_password\": \"Setze dein Passwort zurück\",\n  \"com_auth_reset_password_if_email_exists\": \"Wenn ein Konto mit dieser E-Mail-Adresse existiert, wurde eine E-Mail mit Anweisungen zum Zurücksetzen des Passworts gesendet. Bitte überprüfe auch deinen Spam-Ordner.\",\n  \"com_auth_reset_password_link_sent\": \"E-Mail gesendet\",\n  \"com_auth_reset_password_success\": \"Passwort erfolgreich zurückgesetzt\",\n  \"com_auth_sign_in\": \"Anmelden\",\n  \"com_auth_sign_up\": \"Registrieren\",\n  \"com_auth_submit_registration\": \"Registrierung absenden\",\n  \"com_auth_to_reset_your_password\": \"um Ihr Passwort zurückzusetzen.\",\n  \"com_auth_to_try_again\": \"um es erneut zu versuchen.\",\n  \"com_auth_two_factor\": \"Prüfe deine bevorzugte Einmalkennwort-App auf einen Code.\",\n  \"com_auth_username\": \"Benutzername (optional)\",\n  \"com_auth_username_max_length\": \"Benutzername darf nicht länger als 20 Zeichen sein\",\n  \"com_auth_username_min_length\": \"Benutzername muss mindestens 2 Zeichen lang sein\",\n  \"com_auth_verify_your_identity\": \"Bestätige deine Identität\",\n  \"com_auth_welcome_back\": \"Willkommen zurück\",\n  \"com_click_to_download\": \"(hier klicken zum Herunterladen)\",\n  \"com_download_expired\": \"Download abgelaufen\",\n  \"com_download_expires\": \"(hier klicken zum Herunterladen - läuft ab am {{0}})\",\n  \"com_endpoint\": \"Endpunkt\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Agentenmodell (Empfohlen: GPT-4o-mini)\",\n  \"com_endpoint_agent_placeholder\": \"Bitte wähle einen Agenten aus\",\n  \"com_endpoint_ai\": \"KI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maximale Anzahl von Token, die in der Antwort erzeugt werden können. Gib einen niedrigeren Wert für kürzere Antworten und einen höheren Wert für längere Antworten an. Hinweis: Die Modelle können auch vor Erreichen dieses Maximums stoppen.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"Prompt-Caching ermöglicht die Wiederverwendung von umfangreichen Kontexten oder Anweisungen über mehrere API-Aufrufe hinweg, wodurch Kosten und Latenzzeiten reduziert werden\",\n  \"com_endpoint_anthropic_temp\": \"Reicht von 0 bis 1. Verwende Temperaturen näher an 0 für analytische / Multiple-Choice-Aufgaben und näher an 1 für kreative und generative Aufgaben. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k ändert, wie das Modell Token für die Ausgabe auswählt. Ein Top-k von 1 bedeutet, dass das ausgewählte Token das wahrscheinlichste unter allen Token im Vokabular des Modells ist (auch \\\"Greedy Decoding\\\" genannt), während ein Top-k von 3 bedeutet, dass das nächste Token aus den 3 wahrscheinlichsten Token ausgewählt wird (unter Verwendung der Temperatur).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p ändert, wie das Modell Token für die Ausgabe auswählt. Token werden von den wahrscheinlichsten K (siehe topK-Parameter) bis zu den am wenigsten wahrscheinlichen ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Top-p-Wert entspricht.\",\n  \"com_endpoint_assistant\": \"Assistent\",\n  \"com_endpoint_assistant_model\": \"Assistentenmodell\",\n  \"com_endpoint_assistant_placeholder\": \"Bitte wähle einen Assistenten aus dem rechten Seitenpanel aus\",\n  \"com_endpoint_completion\": \"Vervollständigung\",\n  \"com_endpoint_completion_model\": \"Vervollständigungsmodell (Empfohlen: GPT-4o)\",\n  \"com_endpoint_config_click_here\": \"Klicke hier\",\n  \"com_endpoint_config_google_api_info\": \"Um deinen Generative Language API-Key (für Gemini) zu erhalten,\",\n  \"com_endpoint_config_google_api_key\": \"Google API-Key\",\n  \"com_endpoint_config_google_cloud_platform\": \"(von Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google Service Account Key\",\n  \"com_endpoint_config_key\": \"API-Key festlegen\",\n  \"com_endpoint_config_key_encryption\": \"Dein API-Key wird verschlüsselt und gelöscht um\",\n  \"com_endpoint_config_key_for\": \"API-Key festlegen für\",\n  \"com_endpoint_config_key_google_need_to\": \"Du musst\",\n  \"com_endpoint_config_key_google_service_account\": \"Ein Service-Konto erstellen\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Vertex AI aktivieren\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API auf Google Cloud, dann\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Stelle sicher, dass du auf \\\"Erstellen und Fortfahren\\\" klickst, um mindestens die Rolle \\\"Vertex AI User\\\" zu vergeben. Erstelle zuletzt einen JSON-Key zum Importieren hier.\",\n  \"com_endpoint_config_key_import_json_key\": \"Service Account JSON-Key importieren.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Ungültiger Service Account JSON-Key. Hast du die richtige Datei importiert?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Service Account JSON-Key erfolgreich importiert\",\n  \"com_endpoint_config_key_name\": \"API-Key\",\n  \"com_endpoint_config_key_never_expires\": \"Dein API-Key läuft nie ab\",\n  \"com_endpoint_config_placeholder\": \"Lege deinen API-Key im Kopfzeilenmenü fest, um zu chatten.\",\n  \"com_endpoint_config_value\": \"Wert eingeben für\",\n  \"com_endpoint_context\": \"Kontext\",\n  \"com_endpoint_context_info\": \"Die maximale Anzahl von Token, die für den Kontext verwendet werden können. Verwende dies zur Kontrolle, wie viele Token pro Anfrage gesendet werden. Wenn nicht angegeben, werden Systemstandards basierend auf der bekannten Kontextgröße der Modelle verwendet. Das Setzen höherer Werte kann zu Fehlern und/oder höheren Token-Kosten führen.\",\n  \"com_endpoint_context_tokens\": \"Max. Kontext-Token\",\n  \"com_endpoint_custom_name\": \"Benutzerdefinierter Name\",\n  \"com_endpoint_default\": \"Standard\",\n  \"com_endpoint_default_blank\": \"Standard: leer\",\n  \"com_endpoint_default_empty\": \"Standard: leer\",\n  \"com_endpoint_default_with_num\": \"Standard: {{0}}\",\n  \"com_endpoint_examples\": \" Voreinstellungen\",\n  \"com_endpoint_export\": \"Exportieren\",\n  \"com_endpoint_export_share\": \"Exportieren/Teilen\",\n  \"com_endpoint_frequency_penalty\": \"Frequency Penalty\",\n  \"com_endpoint_func_hover\": \"Verwendung von Plugins als OpenAI-Funktionen aktivieren\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Lege einen benutzerdefinierten Namen für Google fest\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maximale Anzahl von Token, die in der Antwort generiert werden können. Gib einen niedrigeren Wert für kürzere Antworten und einen höheren Wert für längere Antworten an. Hinweis: Modelle können möglicherweise vor Erreichen dieses Maximums stoppen.\",\n  \"com_endpoint_google_temp\": \"Höhere Werte = zufälliger, während niedrigere Werte = fokussierter und deterministischer. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides.\",\n  \"com_endpoint_google_topk\": \"Top-k ändert, wie das Modell Token für die Antwort auswählt. Ein Top-k von 1 bedeutet, dass das ausgewählte Token das wahrscheinlichste unter allen Token im Vokabular des Modells ist (auch Greedy-Decoding genannt), während ein Top-k von 3 bedeutet, dass das nächste Token aus den 3 wahrscheinlichsten Token ausgewählt wird (unter Verwendung der Temperatur).\",\n  \"com_endpoint_google_topp\": \"Top-p ändert, wie das Modell Token für die Antwort auswählt. Token werden von den wahrscheinlichsten K (siehe topK-Parameter) bis zu den am wenigsten wahrscheinlichen ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Top-p-Wert entspricht.\",\n  \"com_endpoint_instructions_assistants\": \"Anweisungen überschreiben\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Überschreibt die Anweisungen des Assistenten. Dies ist nützlich, um das Verhalten auf Basis einzelner Ausführungen zu modifizieren.\",\n  \"com_endpoint_max_output_tokens\": \"Max. Antwort-Token\",\n  \"com_endpoint_message\": \"Nachricht an\",\n  \"com_endpoint_message_new\": \"Nachricht {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Bearbeite deine Nachricht oder generiere neu.\",\n  \"com_endpoint_my_preset\": \"Meine Voreinstellung\",\n  \"com_endpoint_no_presets\": \"Noch keine Voreinstellungen, verwende die KI-Einstellungsschaltfläche, um eine zu erstellen\",\n  \"com_endpoint_open_menu\": \"Menü öffnen\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Lege einen benutzerdefinierten Namen für die KI fest.\",\n  \"com_endpoint_openai_detail\": \"Die Auflösung für Bilderkennungs-Anfragen. \\\"Niedrig\\\" ist günstiger und schneller, \\\"Hoch\\\" ist detaillierter und teurer, und \\\"Auto\\\" wählt automatisch zwischen den beiden basierend auf der Bildauflösung.\",\n  \"com_endpoint_openai_freq\": \"Zahl zwischen -2,0 und 2,0. Positive Werte bestrafen neue Token basierend auf ihrer bestehenden Häufigkeit im Text, wodurch die Wahrscheinlichkeit des Modells verringert wird, dieselbe Zeile wörtlich zu wiederholen.\",\n  \"com_endpoint_openai_max\": \"Die maximale Anzahl zu generierender Token. Die Gesamtlänge der Eingabe-Token und der generierten Token ist durch die Kontextlänge des Modells begrenzt.\",\n  \"com_endpoint_openai_max_tokens\": \"Optionales 'max_tokens'-Feld, das die maximale Anzahl von Token darstellt, die in der Chat-Vervollständigung generiert werden können. Die Gesamtlänge der Eingabe-Token und der generierten Token ist durch die Kontextlänge des Modells begrenzt. Du kannst Fehler erleben, wenn diese Zahl die maximalen Kontext-Token überschreitet.\",\n  \"com_endpoint_openai_pres\": \"Zahl zwischen -2,0 und 2,0. Positive Werte bestrafen neue Token basierend darauf, ob sie im bisherigen Text vorkommen, wodurch die Wahrscheinlichkeit des Modells erhöht wird, über neue Themen zu sprechen.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Lege benutzerdefinierte Anweisungen fest, die in die Systemnachricht an die KI aufgenommen werden sollen. Standard: keine\",\n  \"com_endpoint_openai_reasoning_effort\": \"Nur für o1-Modelle: Begrenzt den Aufwand des Nachdenkens bei Schlussfolgerungsmodellen. Die Reduzierung des Nachdenkeaufwands kann zu schnelleren Antworten und weniger Token führen, die für das Überlegen vor einer Antwort verwendet werden.\",\n  \"com_endpoint_openai_resend\": \"Alle im Chat zuvor angehängten Bilder mit jeder neuen Nachricht erneut senden. Hinweis: Dies kann die Kosten der Anfrage  aufgrund höherer Token-Anzahl erheblich erhöhen und du kannst bei vielen Bildanhängen Fehler erleben.\",\n  \"com_endpoint_openai_resend_files\": \"Alle im Chat zuvor angehängten Dateien mit jeder neuen Nachricht erneut senden. Hinweis: Dies wird die Kosten der Anfrage aufgrund höherer Token-Anzahl erheblich erhöhen und du kannst bei vielen Anhängen Fehler erleben.\",\n  \"com_endpoint_openai_stop\": \"Bis zu 4 Sequenzen, bei denen die API keine weiteren Token generiert.\",\n  \"com_endpoint_openai_temp\": \"Entspricht der Kreativität der KI. Höhere Werte = zufälliger und kreativer, während niedrigere Werte = unkreativer und deterministischer. Wir empfehlen, entweder dies oder Top P zu ändern, aber nicht beides. Temperaturen über 1 sind nicht empfehlenswert.\",\n  \"com_endpoint_openai_topp\": \"Eine Alternative zum Sampling mit Temperatur, genannt Nucleus-Sampling, bei dem das Modell die Ergebnisse der Token mit Top-p-Wahrscheinlichkeitsmasse berücksichtigt. So bedeutet 0,1, dass nur die Token betrachtet werden, die die Top 10% der Wahrscheinlichkeitsmasse ausmachen. Wir empfehlen, entweder dies oder die Temperatur zu ändern, aber nicht beides.\",\n  \"com_endpoint_output\": \"Antwort\",\n  \"com_endpoint_plug_image_detail\": \"Bild-Detail\",\n  \"com_endpoint_plug_resend_files\": \"Anhänge erneut senden\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Lege benutzerdefinierte Anweisungen fest, die in die Systemnachricht aufgenommen werden sollen. Standard: keine\",\n  \"com_endpoint_plug_skip_completion\": \"Fertigstellung überspringen\",\n  \"com_endpoint_plug_use_functions\": \"Funktionen verwenden\",\n  \"com_endpoint_presence_penalty\": \"Presence Penalty\",\n  \"com_endpoint_preset\": \"Voreinstellung\",\n  \"com_endpoint_preset_default\": \"ist jetzt die Standardvoreinstellung.\",\n  \"com_endpoint_preset_default_item\": \"Standard:\",\n  \"com_endpoint_preset_default_none\": \"Keine Standardvoreinstellung aktiv.\",\n  \"com_endpoint_preset_default_removed\": \"ist nicht mehr die Standardvoreinstellung.\",\n  \"com_endpoint_preset_delete_confirm\": \"Bist du sicher, dass du diese Voreinstellung löschen möchtest?\",\n  \"com_endpoint_preset_delete_error\": \"Beim Löschen deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.\",\n  \"com_endpoint_preset_import\": \"Voreinstellung erfolgreich importiert!\",\n  \"com_endpoint_preset_import_error\": \"Beim Importieren deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.\",\n  \"com_endpoint_preset_name\": \"Voreinstellungsname\",\n  \"com_endpoint_preset_save_error\": \"Beim Speichern deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.\",\n  \"com_endpoint_preset_selected\": \"Voreinstellung aktiv!\",\n  \"com_endpoint_preset_selected_title\": \"Aktiv!\",\n  \"com_endpoint_preset_title\": \"Voreinstellung\",\n  \"com_endpoint_presets\": \"Voreinstellungen\",\n  \"com_endpoint_presets_clear_warning\": \"Bist du sicher, dass du alle Voreinstellungen löschen möchtest? Dies ist nicht rückgängig zu machen.\",\n  \"com_endpoint_prompt_cache\": \"Prompt-Zwischenspeicherung verwenden\",\n  \"com_endpoint_prompt_prefix\": \"Benutzerdefinierte Anweisungen\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Zusätzliche Anweisungen\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Lege zusätzliche Anweisungen oder Kontext zusätzlich zu den Hauptanweisungen des Assistenten fest. Wird ignoriert, wenn leer.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Lege benutzerdefinierte Anweisungen oder Kontext fest. Wird ignoriert, wenn leer.\",\n  \"com_endpoint_reasoning_effort\": \"Denkaufwand\",\n  \"com_endpoint_save_as_preset\": \"Voreinstellung speichern\",\n  \"com_endpoint_search\": \"Endpunkt nach Namen suchen\",\n  \"com_endpoint_set_custom_name\": \"Lege einen benutzerdefinierten Namen fest, falls du diese Voreinstellung wiederfinden möchtest\",\n  \"com_endpoint_skip_hover\": \"Aktiviere das Überspringen des Vervollständigungsschritts, der die endgültige Antwort und die generierten Schritte überprüft\",\n  \"com_endpoint_stop\": \"Stop-Sequenzen\",\n  \"com_endpoint_stop_placeholder\": \"Trenne Stoppwörter durch Drücken der `Enter`-Taste\",\n  \"com_endpoint_temperature\": \"Temperatur\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Aktiven Assistenten verwenden\",\n  \"com_error_expired_user_key\": \"Der angegebene API-Key für {{0}} ist am {{1}} abgelaufen. Bitte gebe einen neuen API-Key ein und versuche es erneut.\",\n  \"com_error_files_dupe\": \"Doppelte Datei erkannt.\",\n  \"com_error_files_empty\": \"Leere Dateien sind nicht zulässig\",\n  \"com_error_files_process\": \"Bei der Verarbeitung der Datei ist ein Fehler aufgetreten.\",\n  \"com_error_files_unsupported_capability\": \"Keine aktivierten Funktionen unterstützen diesen Dateityp\",\n  \"com_error_files_upload\": \"Beim Hochladen der Datei ist ein Fehler aufgetreten\",\n  \"com_error_files_upload_canceled\": \"Die Datei-Upload-Anfrage wurde abgebrochen. Hinweis: Der Upload-Vorgang könnte noch im Hintergrund laufen und die Datei muss möglicherweise manuell gelöscht werden.\",\n  \"com_error_files_validation\": \"Bei der Validierung der Datei ist ein Fehler aufgetreten.\",\n  \"com_error_input_length\": \"Die Token-Anzahl der letzten Nachricht ist zu hoch und überschreitet das Token-Limit ({{0}}). Bitte kürze deine Nachricht, passe die maximale Kontextgröße in den Gesprächsparametern an oder erstelle eine Abzweigung des Gesprächs, um fortzufahren.\",\n  \"com_error_invalid_user_key\": \"Ungültiger API-Key angegeben. Bitte gebe einen gültigen API-Key ein und versuche es erneut.\",\n  \"com_error_moderation\": \"Es scheint, dass der eingereichte Inhalt von unserem Moderationssystem als nicht mit unseren Community-Richtlinien vereinbar gekennzeichnet wurde. Wir können mit diesem spezifischen Thema nicht fortfahren. Wenn Sie andere Fragen oder Themen haben, die Sie erkunden möchten, bearbeiten Sie bitte Ihre Nachricht oder erstellen Sie eine neue Konversation.\",\n  \"com_error_no_base_url\": \"Keine Basis-URL gefunden. Bitte gebe eine ein und versuche es erneut.\",\n  \"com_error_no_user_key\": \"Kein API-Key gefunden. Bitte gebe einen API-Key ein und versuche es erneut.\",\n  \"com_files_filter\": \"Dateien filtern...\",\n  \"com_files_no_results\": \"Keine Ergebnisse.\",\n  \"com_files_number_selected\": \"{{0}} von {{1}} Datei(en) ausgewählt\",\n  \"com_generated_files\": \"Generierte Dateien:\",\n  \"com_hide_examples\": \"Beispiele ausblenden\",\n  \"com_nav_2fa\": \"Zwei-Faktor-Authentifizierung (2FA)\",\n  \"com_nav_account_settings\": \"Kontoeinstellungen\",\n  \"com_nav_always_make_prod\": \"Neue Versionen direkt produktiv nehmen\",\n  \"com_nav_archive_created_at\": \"Archivierungsdatum\",\n  \"com_nav_archive_name\": \"Name\",\n  \"com_nav_archived_chats\": \"Archivierte Chats\",\n  \"com_nav_archived_chats_empty\": \"Du hast keine archivierten Chats.\",\n  \"com_nav_at_command\": \"@-Befehl\",\n  \"com_nav_at_command_description\": \"Schaltet den Befehl \\\"@\\\" zum Wechseln von Endpunkten, Modellen, Voreinstellungen usw. um.\",\n  \"com_nav_audio_play_error\": \"Fehler beim Abspielen des Audios: {{0}}\",\n  \"com_nav_audio_process_error\": \"Fehler bei der Verarbeitung des Audios: {{0}}\",\n  \"com_nav_auto_scroll\": \"Automatisch zur neuesten Nachricht scrollen, wenn der Chat geöffnet wird\",\n  \"com_nav_auto_send_prompts\": \"Prompts automatisch senden\",\n  \"com_nav_auto_send_text\": \"Text automatisch senden\",\n  \"com_nav_auto_send_text_disabled\": \"-1 setzen zum Deaktivieren\",\n  \"com_nav_auto_transcribe_audio\": \"Audio automatisch transkribieren\",\n  \"com_nav_automatic_playback\": \"Automatische Wiedergabe der neuesten Nachricht\",\n  \"com_nav_balance\": \"Guthaben\",\n  \"com_nav_browser\": \"Browser\",\n  \"com_nav_buffer_append_error\": \"Problem beim Audio-Streaming. Die Wiedergabe könnte unterbrochen werden.\",\n  \"com_nav_change_picture\": \"Bild ändern\",\n  \"com_nav_chat_commands\": \"Chat-Befehle\",\n  \"com_nav_chat_commands_info\": \"Diese Befehle werden aktiviert, indem du bestimmte Zeichen am Anfang deiner Nachricht eingibst. Jeder Befehl wird durch sein festgelegtes Präfix ausgelöst. Du kannst sie deaktivieren, wenn du diese Zeichen häufig zum Beginn deiner Nachrichten verwendest.\",\n  \"com_nav_chat_direction\": \"Chat-Richtung\",\n  \"com_nav_clear_all_chats\": \"Alle Chats löschen\",\n  \"com_nav_clear_cache_confirm_message\": \"Bist du sicher, dass du den Cache löschen möchtest?\",\n  \"com_nav_clear_conversation\": \"Konversationen löschen\",\n  \"com_nav_clear_conversation_confirm_message\": \"Bist du sicher, dass du alle Konversationen löschen möchtest? Dies ist nicht rückgängig zu machen.\",\n  \"com_nav_close_sidebar\": \"Seitenleiste schließen\",\n  \"com_nav_commands\": \"Befehle\",\n  \"com_nav_confirm_clear\": \"Löschen bestätigen\",\n  \"com_nav_conversation_mode\": \"Konversationsmodus\",\n  \"com_nav_convo_menu_options\": \"Optionen des Gesprächsmenüs\",\n  \"com_nav_db_sensitivity\": \"Dezibel-Empfindlichkeit\",\n  \"com_nav_delete_account\": \"Konto löschen\",\n  \"com_nav_delete_account_button\": \"Mein Konto dauerhaft löschen\",\n  \"com_nav_delete_account_confirm\": \"Konto löschen - bist du sicher?\",\n  \"com_nav_delete_account_email_placeholder\": \"Bitte gebe deine Konto-E-Mail ein\",\n  \"com_nav_delete_cache_storage\": \"TTS-Cache-Speicher löschen\",\n  \"com_nav_delete_data_info\": \"Alle deine Daten werden gelöscht.\",\n  \"com_nav_delete_warning\": \"WARNUNG: Dies wird dein Konto dauerhaft löschen.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"TTS-Caching aktivieren\",\n  \"com_nav_enable_cloud_browser_voice\": \"Cloud-basierte Stimmen verwenden\",\n  \"com_nav_enabled\": \"Aktiviert\",\n  \"com_nav_engine\": \"Engine\",\n  \"com_nav_enter_to_send\": \"Enter drücken, um Nachrichten zu senden\",\n  \"com_nav_export\": \"Exportieren\",\n  \"com_nav_export_all_message_branches\": \"Alle Nachrichtenzweige exportieren\",\n  \"com_nav_export_conversation\": \"Konversation exportieren\",\n  \"com_nav_export_filename\": \"Dateiname\",\n  \"com_nav_export_filename_placeholder\": \"Lege den Dateinamen fest\",\n  \"com_nav_export_include_endpoint_options\": \"Endpunktoptionen einbeziehen\",\n  \"com_nav_export_recursive\": \"Rekursiv\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekursiv oder sequentiell?\",\n  \"com_nav_export_type\": \"Typ\",\n  \"com_nav_external\": \"Extern\",\n  \"com_nav_font_size\": \"Schriftgröße\",\n  \"com_nav_font_size_base\": \"Mittel\",\n  \"com_nav_font_size_lg\": \"Groß\",\n  \"com_nav_font_size_sm\": \"Klein\",\n  \"com_nav_font_size_xl\": \"Sehr groß\",\n  \"com_nav_font_size_xs\": \"Sehr klein\",\n  \"com_nav_help_faq\": \"Hilfe & FAQ\",\n  \"com_nav_hide_panel\": \"Rechte Seitenleiste verstecken\",\n  \"com_nav_info_code_artifacts\": \"Aktiviert die Anzeige experimenteller Code-Artefakte neben dem Chat\",\n  \"com_nav_info_code_artifacts_agent\": \"Aktiviert die Verwendung von Code-Artefakten für diesen Agenten. Standardmäßig werden zusätzliche, spezielle Anweisungen für die Nutzung von Artefakten hinzugefügt, es sei denn, der \\\"Benutzerdefinierte Prompt-Modus\\\" ist aktiviert.\",\n  \"com_nav_info_custom_prompt_mode\": \"Wenn aktiviert, wird die Standard-Systemaufforderung für Artefakte nicht eingeschlossen. Alle Anweisungen zur Erzeugung von Artefakten müssen in diesem Modus manuell bereitgestellt werden.\",\n  \"com_nav_info_enter_to_send\": \"Wenn aktiviert, sendet das Drücken von `ENTER` Ihre Nachricht. Wenn deaktiviert, fügt das Drücken von Enter eine neue Zeile hinzu, und du musst `STRG + ENTER` drücken, um deine Nachricht zu senden.\",\n  \"com_nav_info_fork_change_default\": \"`Nur sichtbare Nachrichten` umfasst nur den direkten Pfad zur ausgewählten Nachricht. `Zugehörige Verzweigungen einbeziehen` fügt Verzweigungen entlang des Pfades hinzu. `Alle bis/von hier einbeziehen` umfasst alle verbundenen Nachrichten und Verzweigungen.\",\n  \"com_nav_info_fork_split_target_setting\": \"Wenn aktiviert, beginnt das Abzweigen von der Zielnachricht bis zur letzten Nachricht in der Konversation, gemäß dem ausgewählten Verhalten.\",\n  \"com_nav_info_include_shadcnui\": \"Wenn aktiviert, werden Anweisungen zur Verwendung von shadcn/ui-Komponenten eingeschlossen. shadcn/ui ist eine Sammlung wiederverwendbarer Komponenten, die mit Radix UI und Tailwind CSS erstellt wurden. Hinweis: Dies sind umfangreiche Anweisungen, die Sie nur aktivieren sollten, wenn es Ihnen wichtig ist, das KI-Modell über die korrekten Importe und Komponenten zu informieren. Weitere Informationen zu diesen Komponenten finden Sie unter: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Wenn aktiviert, wird LaTeX-Code in Nachrichten als mathematische Gleichungen gerendert. Das Deaktivieren kann die Leistung verbessern, wenn du keine LaTeX-Darstellung benötigst.\",\n  \"com_nav_info_save_draft\": \"Wenn aktiviert, werden der Text und die Anhänge, die du in das Chat-Formular eingibst, automatisch lokal als Entwürfe gespeichert. Diese Entwürfe sind auch verfügbar, wenn du die Seite neu lädst oder zu einer anderen Konversation wechseln. Entwürfe werden lokal auf deinem Gerät gespeichert und werden gelöscht, sobald die Nachricht gesendet wird.\",\n  \"com_nav_info_show_thinking\": \"Wenn aktiviert, sind die Denkprozess-Dropdowns standardmäßig geöffnet, sodass du die Gedankengänge der KI in Echtzeit sehen kannst. Wenn deaktiviert, bleiben sie standardmäßig geschlossen, für eine übersichtlichere Oberfläche.\",\n  \"com_nav_info_user_name_display\": \"Wenn aktiviert, wird der Benutzername des Absenders über jeder Nachricht angezeigt, die du sendest. Wenn deaktiviert, siehst du nur \\\"Du\\\" über deinen Nachrichten.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Automatisch erkennen\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Sprache\",\n  \"com_nav_latex_parsing\": \"LaTeX in Nachrichten parsen (kann die Leistung beeinflussen)\",\n  \"com_nav_log_out\": \"Abmelden\",\n  \"com_nav_long_audio_warning\": \"Längere Texte benötigen mehr Zeit zur Verarbeitung.\",\n  \"com_nav_maximize_chat_space\": \"Chat-Bereich maximieren\",\n  \"com_nav_modular_chat\": \"Ermöglicht das Wechseln der Endpunkte mitten im Gespräch\",\n  \"com_nav_my_files\": \"Meine Dateien\",\n  \"com_nav_no_search_results\": \"Keine Suchergebnisse gefunden\",\n  \"com_nav_not_supported\": \"Nicht unterstützt\",\n  \"com_nav_open_sidebar\": \"Seitenleiste öffnen\",\n  \"com_nav_playback_rate\": \"Audio-Wiedergabegeschwindigkeit\",\n  \"com_nav_plugin_auth_error\": \"Bei dem Versuch, dieses Plugin zu authentifizieren, ist ein Fehler aufgetreten. Bitte versuche es erneut.\",\n  \"com_nav_plugin_install\": \"Installieren\",\n  \"com_nav_plugin_search\": \"Plugins suchen\",\n  \"com_nav_plugin_store\": \"Plugin-Store\",\n  \"com_nav_plugin_uninstall\": \"Deinstallieren\",\n  \"com_nav_plus_command\": \"+-Befehl\",\n  \"com_nav_plus_command_description\": \"Schaltet den Befehl \\\"+\\\" zum Hinzufügen einer Mehrfachantwort-Einstellung um\",\n  \"com_nav_profile_picture\": \"Profilbild\",\n  \"com_nav_save_drafts\": \"Entwürfe lokal speichern\",\n  \"com_nav_scroll_button\": \"Zum Ende scrollen Button\",\n  \"com_nav_search_placeholder\": \"Nachrichten durchsuchen\",\n  \"com_nav_send_message\": \"Nachricht senden\",\n  \"com_nav_setting_account\": \"Konto\",\n  \"com_nav_setting_beta\": \"Beta-Funktionen\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Datensteuerung\",\n  \"com_nav_setting_general\": \"Allgemein\",\n  \"com_nav_setting_speech\": \"Sprache\",\n  \"com_nav_settings\": \"Einstellungen\",\n  \"com_nav_shared_links\": \"Geteilte Links\",\n  \"com_nav_show_code\": \"Code immer anzeigen, wenn der Code-Interpreter verwendet wird\",\n  \"com_nav_show_thinking\": \"Denkprozess-Dropdowns standardmäßig öffnen\",\n  \"com_nav_slash_command\": \"/-Befehl\",\n  \"com_nav_slash_command_description\": \"Schaltet den Befehl \\\"/\\\" zur Auswahl einer Eingabeaufforderung über die Tastatur um\",\n  \"com_nav_source_buffer_error\": \"Fehler beim Einrichten der Audiowiedergabe. Bitte lade die Seite neu.\",\n  \"com_nav_speech_cancel_error\": \"Die Audiowiedergabe konnte nicht gestoppt werden. Bitte lade die Seite neu.\",\n  \"com_nav_speech_to_text\": \"Sprache zu Text\",\n  \"com_nav_stop_generating\": \"Generierung stoppen\",\n  \"com_nav_text_to_speech\": \"Text zu Sprache\",\n  \"com_nav_theme\": \"Design\",\n  \"com_nav_theme_dark\": \"Dunkel\",\n  \"com_nav_theme_light\": \"Hell\",\n  \"com_nav_theme_system\": \"System\",\n  \"com_nav_tool_dialog\": \"Assistenten-Werkzeuge\",\n  \"com_nav_tool_dialog_agents\": \"Agent-Tools\",\n  \"com_nav_tool_dialog_description\": \"Assistent muss gespeichert werden, um Werkzeugauswahlen zu speichern.\",\n  \"com_nav_tool_remove\": \"Entfernen\",\n  \"com_nav_tool_search\": \"Werkzeuge suchen\",\n  \"com_nav_tts_init_error\": \"Text-zu-Sprache-Initialisierung fehlgeschlagen: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Die Text-zu-Sprache-Funktion für die ausgewählte Engine wird in diesem Browser nicht unterstützt\",\n  \"com_nav_user\": \"BENUTZER\",\n  \"com_nav_user_msg_markdown\": \"Benutzernachrichten als Markdown darstellen\",\n  \"com_nav_user_name_display\": \"Benutzernamen in Nachrichten anzeigen\",\n  \"com_nav_voice_select\": \"Stimme\",\n  \"com_nav_voices_fetch_error\": \"Die Sprachoptionen konnten nicht abgerufen werden. Bitte überprüfe deine Internetverbindung.\",\n  \"com_nav_welcome_agent\": \"Bitte wähle einen Agenten\",\n  \"com_nav_welcome_assistant\": \"Bitte wähle einen Assistenten aus\",\n  \"com_nav_welcome_message\": \"Wie kann ich dir heute helfen?\",\n  \"com_show_agent_settings\": \"Agenteneinstellungen anzeigen\",\n  \"com_show_completion_settings\": \"Vervollständigungseinstellungen anzeigen\",\n  \"com_show_examples\": \"Beispiele anzeigen\",\n  \"com_sidepanel_agent_builder\": \"Agenten Ersteller\",\n  \"com_sidepanel_assistant_builder\": \"Assistenten-Ersteller\",\n  \"com_sidepanel_attach_files\": \"Dateien anhängen\",\n  \"com_sidepanel_conversation_tags\": \"Lesezeichen\",\n  \"com_sidepanel_hide_panel\": \"Seitenleiste ausblenden\",\n  \"com_sidepanel_manage_files\": \"Dateien verwalten\",\n  \"com_sidepanel_parameters\": \"KI-Einstellungen\",\n  \"com_sidepanel_select_agent\": \"Wähle einen Agenten\",\n  \"com_sidepanel_select_assistant\": \"Assistenten auswählen\",\n  \"com_ui_2fa_account_security\": \"Die Zwei-Faktor-Authentifizierung bietet deinem Konto eine zusätzliche Sicherheitsebene.\",\n  \"com_ui_2fa_disable\": \"2FA deaktivieren\",\n  \"com_ui_2fa_disable_error\": \"Beim Deaktivieren der Zwei-Faktor-Authentifizierung ist ein Fehler aufgetreten.\",\n  \"com_ui_2fa_disabled\": \"2FA wurde deaktiviert.\",\n  \"com_ui_2fa_enable\": \"2FA aktivieren\",\n  \"com_ui_2fa_enabled\": \"2FA wurde aktiviert.\",\n  \"com_ui_2fa_generate_error\": \"Beim Erstellen der Einstellungen für die Zwei-Faktor-Authentifizierung ist ein Fehler aufgetreten.\",\n  \"com_ui_2fa_invalid\": \"Ungültiger Zwei-Faktor-Authentifizierungscode.\",\n  \"com_ui_2fa_setup\": \"2FA einrichten\",\n  \"com_ui_2fa_verified\": \"Die Zwei-Faktor-Authentifizierung wurde erfolgreich verifiziert.\",\n  \"com_ui_accept\": \"Ich akzeptiere\",\n  \"com_ui_add\": \"Hinzufügen\",\n  \"com_ui_add_model_preset\": \"Ein KI-Modell oder eine Voreinstellung für eine zusätzliche Antwort hinzufügen\",\n  \"com_ui_add_multi_conversation\": \"Mehrere Chats hinzufügen\",\n  \"com_ui_admin\": \"Admin\",\n  \"com_ui_admin_access_warning\": \"Das Deaktivieren des Admin-Zugriffs auf diese Funktion kann zu unerwarteten Problemen in der Benutzeroberfläche führen, die ein Neuladen erfordern. Nach dem Speichern kann dies nur über die Schnittstelleneinstellung in der librechat.yaml-Konfiguration rückgängig gemacht werden, was sich auf alle Rollen auswirkt.\",\n  \"com_ui_admin_settings\": \"Admin-Einstellungen\",\n  \"com_ui_advanced\": \"Erweitert\",\n  \"com_ui_agent\": \"Agent\",\n  \"com_ui_agent_delete_error\": \"Beim Löschen des Assistenten ist ein Fehler aufgetreten\",\n  \"com_ui_agent_deleted\": \"Assistent erfolgreich gelöscht\",\n  \"com_ui_agent_duplicate_error\": \"Beim Duplizieren des Assistenten ist ein Fehler aufgetreten\",\n  \"com_ui_agent_duplicated\": \"Agent wurde erfolgreich dupliziert\",\n  \"com_ui_agent_editing_allowed\": \"Andere Nutzende können diesen Agenten bereits bearbeiten\",\n  \"com_ui_agent_shared_to_all\": \"Hier muss etwas eingegeben werden. War leer.\",\n  \"com_ui_agents\": \"Agenten\",\n  \"com_ui_agents_allow_create\": \"Erstellung von Assistenten erlauben\",\n  \"com_ui_agents_allow_share_global\": \"Assistenten für alle Nutzenden freigeben\",\n  \"com_ui_agents_allow_use\": \"Verwendung von Agenten erlauben\",\n  \"com_ui_all\": \"alle\",\n  \"com_ui_all_proper\": \"Alle\",\n  \"com_ui_analyzing\": \"Analyse läuft\",\n  \"com_ui_analyzing_finished\": \"Analyse abgeschlossen\",\n  \"com_ui_api_key\": \"API-Schlüssel\",\n  \"com_ui_archive\": \"Archivieren\",\n  \"com_ui_archive_error\": \"Konversation konnte nicht archiviert werden\",\n  \"com_ui_artifact_click\": \"Zum Öffnen klicken\",\n  \"com_ui_artifacts\": \"Artefakte\",\n  \"com_ui_artifacts_toggle\": \"Artefakte-Funktion einschalten\",\n  \"com_ui_artifacts_toggle_agent\": \"Artefakte aktivieren\",\n  \"com_ui_ascending\": \"Aufsteigend\",\n  \"com_ui_assistant\": \"Assistent\",\n  \"com_ui_assistant_delete_error\": \"Beim Löschen des Assistenten ist ein Fehler aufgetreten\",\n  \"com_ui_assistant_deleted\": \"Assistent erfolgreich gelöscht\",\n  \"com_ui_assistants\": \"Assistenten\",\n  \"com_ui_assistants_output\": \"Assistenten-Ausgabe\",\n  \"com_ui_attach_error\": \"Datei kann nicht angehängt werden. Erstelle oder wähle einen Chat oder versuche, die Seite zu aktualisieren.\",\n  \"com_ui_attach_error_openai\": \"Assistentendateien können nicht an andere Endpunkte angehängt werden\",\n  \"com_ui_attach_error_size\": \"Dateigrößenlimit für Endpunkt überschritten:\",\n  \"com_ui_attach_error_type\": \"Nicht unterstützter Dateityp für Endpunkt:\",\n  \"com_ui_attach_warn_endpoint\": \"Nicht-Assistentendateien werden möglicherweise ohne kompatibles Werkzeug ignoriert\",\n  \"com_ui_attachment\": \"Anhang\",\n  \"com_ui_auth_type\": \"Authentifizierungstyp\",\n  \"com_ui_auth_url\": \"Autorisierungs-URL\",\n  \"com_ui_authentication\": \"Authentifizierung\",\n  \"com_ui_authentication_type\": \"Authentifizierungstyp\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_azure\": \"Azure\",\n  \"com_ui_back_to_chat\": \"Zurück zum Chat\",\n  \"com_ui_back_to_prompts\": \"Zurück zu den Prompts\",\n  \"com_ui_backup_codes\": \"Backup-Codes\",\n  \"com_ui_backup_codes_regenerate_error\": \"Beim Neuerstellen der Backup-Codes ist ein Fehler aufgetreten.\",\n  \"com_ui_backup_codes_regenerated\": \"Backup-Codes wurden erfolgreich neu erstellt.\",\n  \"com_ui_basic\": \"Basic\",\n  \"com_ui_basic_auth_header\": \"Basic-Authentifizierungsheader\",\n  \"com_ui_bearer\": \"Bearer\",\n  \"com_ui_bookmark_delete_confirm\": \"Bist du sicher, dass du dieses Lesezeichen löschen möchtest?\",\n  \"com_ui_bookmarks\": \"Lesezeichen\",\n  \"com_ui_bookmarks_add\": \"Lesezeichen hinzufügen\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Zur aktuellen Konversation hinzufügen\",\n  \"com_ui_bookmarks_count\": \"Anzahl\",\n  \"com_ui_bookmarks_create_error\": \"Beim Erstellen des Lesezeichens ist ein Fehler aufgetreten\",\n  \"com_ui_bookmarks_create_exists\": \"Dieses Lesezeichen existiert bereits\",\n  \"com_ui_bookmarks_create_success\": \"Lesezeichen erfolgreich erstellt\",\n  \"com_ui_bookmarks_delete\": \"Lesezeichen löschen\",\n  \"com_ui_bookmarks_delete_error\": \"Beim Löschen des Lesezeichens ist ein Fehler aufgetreten\",\n  \"com_ui_bookmarks_delete_success\": \"Lesezeichen erfolgreich gelöscht\",\n  \"com_ui_bookmarks_description\": \"Beschreibung\",\n  \"com_ui_bookmarks_edit\": \"Lesezeichen bearbeiten\",\n  \"com_ui_bookmarks_filter\": \"Lesezeichen filtern...\",\n  \"com_ui_bookmarks_new\": \"Neues Lesezeichen\",\n  \"com_ui_bookmarks_title\": \"Titel\",\n  \"com_ui_bookmarks_update_error\": \"Beim Aktualisieren des Lesezeichens ist ein Fehler aufgetreten\",\n  \"com_ui_bookmarks_update_success\": \"Lesezeichen erfolgreich aktualisiert\",\n  \"com_ui_bulk_delete_error\": \"Geteilte Links konnten nicht gelöscht werden.\",\n  \"com_ui_callback_url\": \"Callback-URL\",\n  \"com_ui_cancel\": \"Abbrechen\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Chatverlauf\",\n  \"com_ui_clear\": \"Löschen\",\n  \"com_ui_clear_all\": \"Auswahl löschen\",\n  \"com_ui_client_secret\": \"Client Secret\",\n  \"com_ui_close\": \"Schließen\",\n  \"com_ui_close_menu\": \"Menü schließen\",\n  \"com_ui_code\": \"Code\",\n  \"com_ui_collapse_chat\": \"Chat einklappen\",\n  \"com_ui_command_placeholder\": \"Optional: Gib einen Promptbefehl ein oder den Namen.\",\n  \"com_ui_command_usage_placeholder\": \"Wähle einen Prompt nach Befehl oder Name aus\",\n  \"com_ui_complete_setup\": \"Einrichtung abschließen\",\n  \"com_ui_confirm_action\": \"Aktion bestätigen\",\n  \"com_ui_confirm_admin_use_change\": \"Wenn du diese Einstellung änderst, wird der Zugriff für Administratoren, einschließlich dir selbst, gesperrt. Bist du sicher, dass du fortfahren möchtest?\",\n  \"com_ui_confirm_change\": \"Änderung bestätigen\",\n  \"com_ui_context\": \"Kontext\",\n  \"com_ui_continue\": \"Fortfahren\",\n  \"com_ui_controls\": \"Steuerung\",\n  \"com_ui_copied\": \"Kopiert!\",\n  \"com_ui_copied_to_clipboard\": \"In die Zwischenablage kopiert\",\n  \"com_ui_copy_code\": \"Code kopieren\",\n  \"com_ui_copy_link\": \"Link kopieren\",\n  \"com_ui_copy_to_clipboard\": \"In die Zwischenablage kopieren\",\n  \"com_ui_create\": \"Erstellen\",\n  \"com_ui_create_link\": \"Link erstellen\",\n  \"com_ui_create_prompt\": \"Prompt erstellen\",\n  \"com_ui_currently_production\": \"Aktuell im Produktivbetrieb\",\n  \"com_ui_custom\": \"Benutzerdefiniert\",\n  \"com_ui_custom_header_name\": \"Benutzerdefinierter Headername\",\n  \"com_ui_custom_prompt_mode\": \"Benutzerdefinierter Promptmodus für Artefakte\",\n  \"com_ui_dashboard\": \"Dashboard\",\n  \"com_ui_date\": \"Datum\",\n  \"com_ui_date_april\": \"April\",\n  \"com_ui_date_august\": \"August\",\n  \"com_ui_date_december\": \"Dezember\",\n  \"com_ui_date_february\": \"Februar\",\n  \"com_ui_date_january\": \"Januar\",\n  \"com_ui_date_july\": \"Juli\",\n  \"com_ui_date_june\": \"Juni\",\n  \"com_ui_date_march\": \"März\",\n  \"com_ui_date_may\": \"Mai\",\n  \"com_ui_date_november\": \"November\",\n  \"com_ui_date_october\": \"Oktober\",\n  \"com_ui_date_previous_30_days\": \"Letzte 30 Tage\",\n  \"com_ui_date_previous_7_days\": \"Letzte 7 Tage\",\n  \"com_ui_date_september\": \"September\",\n  \"com_ui_date_today\": \"Heute\",\n  \"com_ui_date_yesterday\": \"Gestern\",\n  \"com_ui_decline\": \"Ich akzeptiere nicht\",\n  \"com_ui_default_post_request\": \"Standard (POST-Anfrage)\",\n  \"com_ui_delete\": \"Löschen\",\n  \"com_ui_delete_action\": \"Aktion löschen\",\n  \"com_ui_delete_action_confirm\": \"Bist du sicher, dass du diese Aktion löschen möchtest?\",\n  \"com_ui_delete_agent_confirm\": \"Bist du sicher, dass du diesen Agenten löschen möchtest?\",\n  \"com_ui_delete_assistant_confirm\": \"Bist du sicher, dass du diesen Assistenten löschen möchtest? Dies kann nicht rückgängig gemacht werden.\",\n  \"com_ui_delete_confirm\": \"Dies wird löschen:\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Dies wird die ausgewählte Version für \\\"{{0}}\\\" löschen. Wenn keine anderen Versionen existieren, wird der Prompt gelöscht.\",\n  \"com_ui_delete_conversation\": \"Chat löschen?\",\n  \"com_ui_delete_prompt\": \"Prompt löschen?\",\n  \"com_ui_delete_shared_link\": \"Geteilten Link löschen?\",\n  \"com_ui_delete_tool\": \"Werkzeug löschen\",\n  \"com_ui_delete_tool_confirm\": \"Bist du sicher, dass du dieses Werkzeug löschen möchtest?\",\n  \"com_ui_descending\": \"Absteigend\",\n  \"com_ui_description\": \"Beschreibung\",\n  \"com_ui_description_placeholder\": \"Optional: Gib eine Beschreibung für den Prompt ein\",\n  \"com_ui_disabling\": \"Deaktiviere …\",\n  \"com_ui_download\": \"Herunterladen\",\n  \"com_ui_download_artifact\": \"Artefakt herunterladen\",\n  \"com_ui_download_backup\": \"Backup-Codes herunterladen\",\n  \"com_ui_download_backup_tooltip\": \"Bevor du fortfährst, lade bitte deine Backup-Codes herunter. Du benötigst sie, um den Zugang wiederherzustellen, falls du dein Authentifizierungsgerät verlierst.\",\n  \"com_ui_download_error\": \"Fehler beim Herunterladen der Datei. Die Datei wurde möglicherweise gelöscht.\",\n  \"com_ui_dropdown_variables\": \"Dropdown-Variablen:\",\n  \"com_ui_dropdown_variables_info\": \"Erstellen Sie benutzerdefinierte Dropdown-Menüs für Ihre Eingabeaufforderungen: `{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"Duplizieren\",\n  \"com_ui_duplication_error\": \"Beim Duplizieren der Konversation ist ein Fehler aufgetreten\",\n  \"com_ui_duplication_processing\": \"Konversation wird dupliziert...\",\n  \"com_ui_duplication_success\": \"Unterhaltung erfolgreich dupliziert\",\n  \"com_ui_edit\": \"Bearbeiten\",\n  \"com_ui_endpoint\": \"Endpunkt\",\n  \"com_ui_endpoint_menu\": \"LLM-Endpunkt-Menü\",\n  \"com_ui_endpoints_available\": \"Verfügbare Endpunkte\",\n  \"com_ui_enter\": \"Eingabe\",\n  \"com_ui_enter_api_key\": \"API-Schlüssel eingeben\",\n  \"com_ui_enter_openapi_schema\": \"Gib hier dein OpenAPI-Schema ein\",\n  \"com_ui_enter_var\": \"{{0}} eingeben\",\n  \"com_ui_error\": \"Fehler\",\n  \"com_ui_error_connection\": \"Verbindungsfehler zum Server. Versuche, die Seite zu aktualisieren.\",\n  \"com_ui_error_save_admin_settings\": \"Beim Speichern Ihrer Admin-Einstellungen ist ein Fehler aufgetreten.\",\n  \"com_ui_examples\": \"Beispiele\",\n  \"com_ui_export_convo_modal\": \"Konversation exportieren\",\n  \"com_ui_field_required\": \"Dieses Feld ist erforderlich\",\n  \"com_ui_filter_prompts\": \"Prompts filtern\",\n  \"com_ui_filter_prompts_name\": \"Prompts nach Namen filtern\",\n  \"com_ui_finance\": \"Finanzen\",\n  \"com_ui_fork\": \"Abzweigen\",\n  \"com_ui_fork_all_target\": \"Alle bis/von hier einbeziehen\",\n  \"com_ui_fork_branches\": \"Zugehörige Verzweigungen einbeziehen\",\n  \"com_ui_fork_change_default\": \"Standard-Abzweigungsoption\",\n  \"com_ui_fork_default\": \"Standard-Abzweigungsoption verwenden\",\n  \"com_ui_fork_error\": \"Beim Abzweigen der Konversation ist ein Fehler aufgetreten\",\n  \"com_ui_fork_from_message\": \"Wähle eine Abzweigungsoption\",\n  \"com_ui_fork_info_1\": \"Verwende diese Einstellung, um Nachrichten mit dem gewünschten Verhalten abzuzweigen.\",\n  \"com_ui_fork_info_2\": \"\\\"Abzweigen\\\" bezieht sich auf das Erstellen einer neuen Konversation, die von bestimmten Nachrichten in der aktuellen Konversation ausgeht/endet und eine Kopie gemäß den ausgewählten Optionen erstellt.\",\n  \"com_ui_fork_info_3\": \"Die \\\"Zielnachricht\\\" bezieht sich entweder auf die Nachricht, von der aus dieses Popup geöffnet wurde, oder, wenn du \\\"{{0}}\\\" aktivierst, auf die letzte Nachricht in der Konversation.\",\n  \"com_ui_fork_info_branches\": \"Diese Option zweigt die sichtbaren Nachrichten zusammen mit zugehörigen Verzweigungen ab; mit anderen Worten, den direkten Pfad zur Zielnachricht, einschließlich der Verzweigungen entlang des Pfades.\",\n  \"com_ui_fork_info_remember\": \"Aktiviere dies, um sich die von dir ausgewählten Optionen für zukünftige Verwendung zu merken, um das Abzweigen von Konversationen nach deinen Vorlieben zu beschleunigen.\",\n  \"com_ui_fork_info_start\": \"Wenn aktiviert, beginnt das Abzweigen von dieser Nachricht bis zur letzten Nachricht in der Konversation, gemäß dem oben ausgewählten Verhalten.\",\n  \"com_ui_fork_info_target\": \"Diese Option zweigt alle Nachrichten ab, die zur Zielnachricht führen, einschließlich ihrer Nachbarn; mit anderen Worten, alle Nachrichtenverzweigungen werden einbezogen, unabhängig davon, ob sie sichtbar sind oder sich auf demselben Pfad befinden.\",\n  \"com_ui_fork_info_visible\": \"Diese Option zweigt nur die sichtbaren Nachrichten ab; mit anderen Worten, den direkten Pfad zur Zielnachricht, ohne jegliche Verzweigungen.\",\n  \"com_ui_fork_processing\": \"Konversation wird abgezweigt...\",\n  \"com_ui_fork_remember\": \"Merken\",\n  \"com_ui_fork_remember_checked\": \"Ihre Auswahl wird nach der Verwendung gespeichert. Du kannst dies jederzeit in den Einstellungen ändern.\",\n  \"com_ui_fork_split_target\": \"Abzweigung hier beginnen\",\n  \"com_ui_fork_split_target_setting\": \"Abzweigung standardmäßig von der Zielnachricht beginnen\",\n  \"com_ui_fork_success\": \"Konversation erfolgreich abgezweigt\",\n  \"com_ui_fork_visible\": \"Nur sichtbare Nachrichten\",\n  \"com_ui_generate_backup\": \"Backup-Codes generieren\",\n  \"com_ui_generate_qrcode\": \"QR-Code generieren\",\n  \"com_ui_generating\": \"Generiere …\",\n  \"com_ui_go_back\": \"Zurück\",\n  \"com_ui_go_to_conversation\": \"Zur Konversation gehen\",\n  \"com_ui_happy_birthday\": \"Es ist mein 1. Geburtstag!\",\n  \"com_ui_hide_qr\": \"QR-Code ausblenden\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_idea\": \"Ideen\",\n  \"com_ui_image_gen\": \"Bildgenerierung\",\n  \"com_ui_import\": \"Importieren\",\n  \"com_ui_import_conversation_error\": \"Beim Importieren Ihrer Konversationen ist ein Fehler aufgetreten\",\n  \"com_ui_import_conversation_file_type_error\": \"Nicht unterstützter Importtyp\",\n  \"com_ui_import_conversation_info\": \"Konversationen aus einer JSON-Datei importieren\",\n  \"com_ui_import_conversation_success\": \"Konversationen erfolgreich importiert\",\n  \"com_ui_include_shadcnui\": \"Anweisungen für shadcn/ui-Komponenten einschließen\",\n  \"com_ui_include_shadcnui_agent\": \"shadcn/ui-Anweisungen einfügen\",\n  \"com_ui_input\": \"Eingabe\",\n  \"com_ui_instructions\": \"Anweisungen\",\n  \"com_ui_latest_footer\": \"Alle KIs für alle.\",\n  \"com_ui_latest_production_version\": \"Neueste Produktiv-Version\",\n  \"com_ui_latest_version\": \"Neueste Version\",\n  \"com_ui_librechat_code_api_key\": \"Hole dir deinen LibreChat Code Interpreter API-Schlüssel\",\n  \"com_ui_librechat_code_api_subtitle\": \"Sicher. Mehrsprachig. Ein-/Ausgabedateien.\",\n  \"com_ui_librechat_code_api_title\": \"KI-Code ausführen\",\n  \"com_ui_llm_menu\": \"LLM-Menü\",\n  \"com_ui_llms_available\": \"Verfügbare LLMs\",\n  \"com_ui_loading\": \"Lade …\",\n  \"com_ui_locked\": \"Gesperrt\",\n  \"com_ui_logo\": \"{{0}} Logo\",\n  \"com_ui_manage\": \"Verwalten\",\n  \"com_ui_max_tags\": \"Die maximale Anzahl ist {{0}}, es werden die neuesten Werte verwendet.\",\n  \"com_ui_mention\": \"Erwähne einen Endpunkt, Assistenten oder eine Voreinstellung, um schnell dorthin zu wechseln\",\n  \"com_ui_min_tags\": \"Es können nicht mehr Werte entfernt werden, mindestens {{0}} sind erforderlich.\",\n  \"com_ui_misc\": \"Verschiedenes\",\n  \"com_ui_model\": \"KI-Modell\",\n  \"com_ui_model_parameters\": \"Modell-Parameter\",\n  \"com_ui_more_info\": \"Mehr Infos\",\n  \"com_ui_my_prompts\": \"Meine Prompts\",\n  \"com_ui_name\": \"Name\",\n  \"com_ui_new_chat\": \"Neuer Chat\",\n  \"com_ui_next\": \"Weiter\",\n  \"com_ui_no\": \"Nein\",\n  \"com_ui_no_backup_codes\": \"Keine Backup-Codes verfügbar. Bitte erstelle neue.\",\n  \"com_ui_no_bookmarks\": \"Du hast noch keine Lesezeichen. Klicke auf einen Chat und füge ein neues hinzu\",\n  \"com_ui_no_category\": \"Keine Kategorie\",\n  \"com_ui_no_changes\": \"Keine Änderungen zum Aktualisieren\",\n  \"com_ui_no_terms_content\": \"Keine Inhalte der Allgemeinen Geschäftsbedingungen zum Anzeigen\",\n  \"com_ui_none\": \"Keine\",\n  \"com_ui_none_selected\": \"Nichts ausgewählt\",\n  \"com_ui_not_used\": \"Nicht verwendet\",\n  \"com_ui_nothing_found\": \"Nichts gefunden\",\n  \"com_ui_oauth\": \"OAuth\",\n  \"com_ui_of\": \"von\",\n  \"com_ui_off\": \"Aus\",\n  \"com_ui_on\": \"An\",\n  \"com_ui_openai\": \"OpenAI\",\n  \"com_ui_page\": \"Seite\",\n  \"com_ui_prev\": \"Zurück\",\n  \"com_ui_preview\": \"Vorschau\",\n  \"com_ui_privacy_policy\": \"Datenschutzerklärung\",\n  \"com_ui_privacy_policy_url\": \"Datenschutzrichtlinie-URL\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Dieser Prompt wird bereits mit allen Benutzern geteilt\",\n  \"com_ui_prompt_name\": \"Prompt-Name\",\n  \"com_ui_prompt_name_required\": \"Prompt-Name ist erforderlich\",\n  \"com_ui_prompt_preview_not_shared\": \"Der Autor hat die Zusammenarbeit für diesen Prompt nicht erlaubt.\",\n  \"com_ui_prompt_text\": \"Text\",\n  \"com_ui_prompt_text_required\": \"Text ist erforderlich\",\n  \"com_ui_prompt_update_error\": \"Beim Aktualisieren des Prompts ist ein Fehler aufgetreten\",\n  \"com_ui_prompts\": \"Prompts\",\n  \"com_ui_prompts_allow_create\": \"Erstellung von Prompts erlauben\",\n  \"com_ui_prompts_allow_share_global\": \"Teilen von Prompts mit allen Benutzern erlauben\",\n  \"com_ui_prompts_allow_use\": \"Verwendung von Prompts erlauben\",\n  \"com_ui_provider\": \"Anbieter\",\n  \"com_ui_read_aloud\": \"Vorlesen\",\n  \"com_ui_refresh_link\": \"Link aktualisieren\",\n  \"com_ui_regenerate\": \"Neu generieren\",\n  \"com_ui_regenerate_backup\": \"Backup-Codes neu generieren\",\n  \"com_ui_regenerating\": \"Generiere neu ...\",\n  \"com_ui_region\": \"Region\",\n  \"com_ui_rename\": \"Umbenennen\",\n  \"com_ui_rename_prompt\": \"Prompt umbenennen\",\n  \"com_ui_requires_auth\": \"Authentifizierung erforderlich\",\n  \"com_ui_reset_var\": \"{{0}} zurücksetzen\",\n  \"com_ui_result\": \"Ergebnis\",\n  \"com_ui_revoke\": \"Widerrufen\",\n  \"com_ui_revoke_info\": \"Benutzer-API-Keys widerrufen\",\n  \"com_ui_revoke_key_confirm\": \"Bist du sicher, dass du diesen Schlüssel widerrufen möchtest?\",\n  \"com_ui_revoke_key_endpoint\": \"API-Schlüssel für {{0}} widerrufen\",\n  \"com_ui_revoke_keys\": \"Schlüssel widerrufen\",\n  \"com_ui_revoke_keys_confirm\": \"Bist du sicher, dass du alle Schlüssel widerrufen möchtest?\",\n  \"com_ui_role_select\": \"Rolle auswählen\",\n  \"com_ui_roleplay\": \"Rollenspiel\",\n  \"com_ui_run_code\": \"Code ausführen\",\n  \"com_ui_run_code_error\": \"Bei der Ausführung des Codes ist ein Fehler aufgetreten\",\n  \"com_ui_save\": \"Speichern\",\n  \"com_ui_save_submit\": \"Speichern & Absenden\",\n  \"com_ui_saved\": \"Gespeichert!\",\n  \"com_ui_schema\": \"Schema\",\n  \"com_ui_scope\": \"Umfang\",\n  \"com_ui_search\": \"Suche\",\n  \"com_ui_secret_key\": \"Geheimschlüssel\",\n  \"com_ui_select\": \"Auswählen\",\n  \"com_ui_select_file\": \"Datei auswählen\",\n  \"com_ui_select_model\": \"Ein KI-Modell auswählen\",\n  \"com_ui_select_provider\": \"Wähle einen Anbieter\",\n  \"com_ui_select_provider_first\": \"Wähle zuerst einen Anbieter\",\n  \"com_ui_select_region\": \"Wähle eine Region\",\n  \"com_ui_select_search_model\": \"KI-Modell nach Namen suchen\",\n  \"com_ui_select_search_plugin\": \"Plugin nach Namen suchen\",\n  \"com_ui_select_search_provider\": \"Provider nach Name suchen\",\n  \"com_ui_select_search_region\": \"Region nach Name suchen\",\n  \"com_ui_share\": \"Teilen\",\n   \"no_text_recognized\": \"Spracherkennung ist nicht verfügbar. Bitte kontaktieren Sie den Administrator.\",\n  \"com_ui_share_create_message\": \"Ihr Name und alle Nachrichten, die du nach dem Teilen hinzufügst, bleiben privat.\",\n  \"com_ui_share_delete_error\": \"Beim Löschen des geteilten Links ist ein Fehler aufgetreten\",\n  \"com_ui_share_error\": \"Beim Teilen des Chat-Links ist ein Fehler aufgetreten\",\n  \"com_ui_share_link_to_chat\": \"Link zum Chat teilen\",\n  \"com_ui_share_to_all_users\": \"Mit allen Benutzern teilen\",\n  \"com_ui_share_update_message\": \"Ihr Name, benutzerdefinierte Anweisungen und alle Nachrichten, die du nach dem Teilen hinzufügen, bleiben privat.\",\n  \"com_ui_share_var\": \"{{0}} teilen\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Geteilte Links erfolgreich gelöscht\",\n  \"com_ui_shared_link_delete_success\": \"Geteilter Link erfolgreich gelöscht\",\n  \"com_ui_shared_link_not_found\": \"Geteilter Link nicht gefunden\",\n  \"com_ui_shared_prompts\": \"Geteilte Prompts\",\n  \"com_ui_shop\": \"Einkaufen\",\n  \"com_ui_show\": \"Anzeigen\",\n  \"com_ui_show_all\": \"Alle anzeigen\",\n  \"com_ui_show_qr\": \"QR-Code anzeigen\",\n  \"com_ui_sign_in_to_domain\": \"Anmelden bei {{0}}\",\n  \"com_ui_simple\": \"Einfach\",\n  \"com_ui_size\": \"Größe\",\n  \"com_ui_special_variables\": \"Spezielle Variablen:\",\n  \"com_ui_special_variables_info\": \"Verwende `{{current_date}}` für das aktuelle Datum und `{{current_user}}` für deinen angegebenen Kontonamen.\",\n  \"com_ui_speech_while_submitting\": \"Spracheingabe nicht möglich während eine Antwort generiert wird\",\n  \"com_ui_stop\": \"Stopp\",\n  \"com_ui_storage\": \"Speicher\",\n  \"com_ui_submit\": \"Absenden\",\n  \"com_ui_teach_or_explain\": \"Lernen\",\n  \"com_ui_temporary_chat\": \"Temporärer Chat\",\n  \"com_ui_terms_and_conditions\": \"Allgemeine Geschäftsbedingungen\",\n  \"com_ui_terms_of_service\": \"Nutzungsbedingungen\",\n  \"com_ui_thinking\": \"Nachdenken...\",\n  \"com_ui_thoughts\": \"Gedanken\",\n  \"com_ui_token_exchange_method\": \"Token-Austauschmethode\",\n  \"com_ui_token_url\": \"Token-URL\",\n  \"com_ui_tools\": \"Werkzeuge\",\n  \"com_ui_travel\": \"Reisen\",\n  \"com_ui_unarchive\": \"Aus Archiv holen\",\n  \"com_ui_unarchive_error\": \"Konversation konnte nicht aus dem Archiv geholt werden\",\n  \"com_ui_unknown\": \"Unbekannt\",\n  \"com_ui_update\": \"Aktualisieren\",\n  \"com_ui_upload\": \"Hochladen\",\n  \"com_ui_upload_code_files\": \"Hochladen für Code-Interpreter\",\n  \"com_ui_upload_delay\": \"Das Hochladen von \\\"{{0}}\\\" dauert etwas länger. Bitte warte, während die Datei für den Abruf indexiert wird.\",\n  \"com_ui_upload_error\": \"Beim Hochladen Ihrer Datei ist ein Fehler aufgetreten\",\n  \"com_ui_upload_file_search\": \"Hochladen für Dateisuche\",\n  \"com_ui_upload_files\": \"Dateien hochladen\",\n  \"com_ui_upload_image\": \"Ein Bild hochladen\",\n  \"com_ui_upload_image_input\": \"Bild hochladen\",\n  \"com_ui_upload_invalid\": \"Ungültige Datei zum Hochladen. Muss ein Bild sein und das Limit nicht überschreiten\",\n  \"com_ui_upload_invalid_var\": \"Ungültige Datei zum Hochladen. Muss ein Bild sein und {{0}} MB nicht überschreiten\",\n  \"com_ui_upload_success\": \"Datei erfolgreich hochgeladen\",\n  \"com_ui_upload_type\": \"Upload-Typ auswählen\",\n  \"com_ui_use_2fa_code\": \"Stattdessen 2FA-Code verwenden\",\n  \"com_ui_use_backup_code\": \"Stattdessen Backup-Code verwenden\",\n  \"com_ui_use_micrphone\": \"Mikrofon verwenden\",\n  \"com_ui_use_prompt\": \"Prompt verwenden\",\n  \"com_ui_used\": \"Verwendet\",\n  \"com_ui_variables\": \"Variablen\",\n  \"com_ui_variables_info\": \"Verwende doppelte geschweifte Klammern in Ihrem Text, um Variablen zu erstellen, z.B. {{Beispielvariable}}, die du später beim Verwenden des Prompts ausfüllen kannst.\",\n  \"com_ui_verify\": \"Überprüfen\",\n  \"com_ui_version_var\": \"Version {{0}}\",\n  \"com_ui_versions\": \"Versionen\",\n  \"com_ui_view_source\": \"Quell-Chat anzeigen\",\n  \"com_ui_write\": \"Schreiben\",\n  \"com_ui_yes\": \"Ja\",\n  \"com_ui_zoom\": \"Zoom\",\n  \"com_user_message\": \"Du\",\n  \"com_warning_resubmit_unsupported\": \"Das erneute Senden der KI-Nachricht wird für diesen Endpunkt nicht unterstützt.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/en/translation.json",
    "content": "{\n  \"bisheng\": \"{{bisheng}}\",\n  \"linsight\": \"{{linsight}}\",\n  \"linsightFullName\": \"{{linsightFull}}\",\n  \"chat_direction_left_to_right\": \"something needs to go here. was empty\",\n  \"chat_direction_right_to_left\": \"something needs to go here. was empty\",\n  \"com_a11y_ai_composing\": \"The AI is still composing.\",\n  \"com_a11y_end\": \"The AI has finished their reply.\",\n  \"com_a11y_start\": \"The AI has started their reply.\",\n  \"com_agents_allow_editing\": \"Allow other users to edit your agent\",\n  \"com_agents_by_librechat\": \"by LibreChat\",\n  \"com_agents_code_interpreter\": \"When enabled, allows your agent to leverage the LibreChat Code Interpreter API to run generated code, including file processing, securely. Requires a valid API key.\",\n  \"com_agents_code_interpreter_title\": \"Code Interpreter API\",\n  \"com_agents_create_error\": \"There was an error creating your agent.\",\n  \"com_agents_description_placeholder\": \"Optional: Describe your Agent here\",\n  \"com_agents_enable_file_search\": \"Enable File Search\",\n  \"com_agents_file_search_disabled\": \"Agent must be created before uploading files for File Search.\",\n  \"com_agents_file_search_info\": \"When enabled, the agent will be informed of the exact filenames listed below, allowing it to retrieve relevant context from these files.\",\n  \"com_agents_instructions_placeholder\": \"The system instructions that the agent uses\",\n  \"com_agents_missing_provider_model\": \"Please select a provider and model before creating an agent.\",\n  \"com_agents_name_placeholder\": \"Optional: The name of the agent\",\n  \"com_agents_no_access\": \"You don't have access to edit this agent.\",\n  \"com_agents_not_available\": \"Agent Not Available\",\n  \"com_agents_search_name\": \"Search agents by name\",\n  \"com_agents_update_error\": \"There was an error updating your agent.\",\n  \"com_assistants_action_attempt\": \"Assistant wants to talk to {{0}}\",\n  \"com_assistants_actions\": \"Actions\",\n  \"com_assistants_actions_disabled\": \"You need to create an assistant before adding actions.\",\n  \"com_assistants_actions_info\": \"Let your Assistant retrieve information or take actions via API's\",\n  \"com_assistants_add_actions\": \"Add Actions\",\n  \"com_assistants_add_tools\": \"Add Tools\",\n  \"com_assistants_allow_sites_you_trust\": \"Only allow sites you trust.\",\n  \"com_assistants_append_date\": \"Append Current Date & Time\",\n  \"com_assistants_append_date_tooltip\": \"When enabled, the current client date and time will be appended to the assistant system instructions.\",\n  \"com_assistants_attempt_info\": \"Assistant wants to send the following:\",\n  \"com_assistants_available_actions\": \"Available Actions\",\n  \"com_assistants_capabilities\": \"Capabilities\",\n  \"com_assistants_code_interpreter\": \"Code Interpreter\",\n  \"com_assistants_code_interpreter_files\": \"Files below are for Code Interpreter only:\",\n  \"com_assistants_code_interpreter_info\": \"Code Interpreter enables the assistant to write and run code. This tool can process files with diverse data and formatting, and generate files such as graphs.\",\n  \"com_assistants_completed_action\": \"Talked to {{0}}\",\n  \"com_assistants_completed_function\": \"Ran {{0}}\",\n  \"com_assistants_conversation_starters\": \"Conversation Starters\",\n  \"com_assistants_conversation_starters_placeholder\": \"Enter a conversation starter\",\n  \"com_assistants_create_error\": \"There was an error creating your assistant.\",\n  \"com_assistants_create_success\": \"Successfully created\",\n  \"com_assistants_delete_actions_error\": \"There was an error deleting the action.\",\n  \"com_assistants_delete_actions_success\": \"Successfully deleted Action from Assistant\",\n  \"com_assistants_description_placeholder\": \"Optional: Describe your Assistant here\",\n  \"com_assistants_domain_info\": \"Assistant sent this info to {{0}}\",\n  \"com_assistants_file_search\": \"File Search\",\n  \"com_assistants_file_search_info\": \"File search enables the assistant with knowledge from files that you or your users upload. Once a file is uploaded, the assistant automatically decides when to retrieve content based on user requests. Attaching vector stores for File Search is not yet supported. You can attach them from the Provider Playground or attach files to messages for file search on a thread basis.\",\n  \"com_assistants_function_use\": \"Assistant used {{0}}\",\n  \"com_assistants_image_vision\": \"Image Vision\",\n  \"com_assistants_instructions_placeholder\": \"The system instructions that the assistant uses\",\n  \"com_assistants_knowledge\": \"Knowledge\",\n  \"com_assistants_knowledge_disabled\": \"Assistant must be created, and Code Interpreter or Retrieval must be enabled and saved before uploading files as Knowledge.\",\n  \"com_assistants_knowledge_info\": \"If you upload files under Knowledge, conversations with your Assistant may include file contents.\",\n  \"com_assistants_max_starters_reached\": \"Max number of conversation starters reached\",\n  \"com_assistants_name_placeholder\": \"Optional: The name of the assistant\",\n  \"com_assistants_non_retrieval_model\": \"File search is not enabled on this model. Please select another model.\",\n  \"com_assistants_retrieval\": \"Retrieval\",\n  \"com_assistants_running_action\": \"Running action\",\n  \"com_assistants_search_name\": \"Search assistants by name\",\n  \"com_assistants_update_actions_error\": \"There was an error creating or updating the action.\",\n  \"com_assistants_update_actions_success\": \"Successfully created or updated Action\",\n  \"com_assistants_update_error\": \"There was an error updating your assistant.\",\n  \"com_assistants_update_success\": \"Successfully updated\",\n  \"com_auth_already_have_account\": \"Already have an account?\",\n  \"com_auth_apple_login\": \"Sign in with Apple\",\n  \"com_auth_back_to_login\": \"Back to Login\",\n  \"com_auth_click\": \"Click\",\n  \"com_auth_click_here\": \"Click here\",\n  \"com_auth_continue\": \"Continue\",\n  \"com_auth_create_account\": \"Create your account\",\n  \"com_auth_discord_login\": \"Continue with Discord\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Email address\",\n  \"com_auth_email_max_length\": \"Email should not be longer than 120 characters\",\n  \"com_auth_email_min_length\": \"Email must be at least 6 characters\",\n  \"com_auth_email_pattern\": \"You must enter a valid email address\",\n  \"com_auth_email_required\": \"Email is required\",\n  \"com_auth_email_resend_link\": \"Resend Email\",\n  \"com_auth_email_resent_failed\": \"Failed to resend verification email\",\n  \"com_auth_email_resent_success\": \"Verification email resent successfully\",\n  \"com_auth_email_verification_failed\": \"Email verification failed\",\n  \"com_auth_email_verification_failed_token_missing\": \"Verification failed, token missing\",\n  \"com_auth_email_verification_in_progress\": \"Verifying your email, please wait\",\n  \"com_auth_email_verification_invalid\": \"Invalid email verification\",\n  \"com_auth_email_verification_redirecting\": \"Redirecting in {{0}} seconds...\",\n  \"com_auth_email_verification_resend_prompt\": \"Didn't receive the email?\",\n  \"com_auth_email_verification_success\": \"Email verified successfully\",\n  \"com_auth_email_verifying_ellipsis\": \"Verifying...\",\n  \"com_auth_error_create\": \"There was an error attempting to register your account. Please try again.\",\n  \"com_auth_error_invalid_reset_token\": \"This password reset token is no longer valid.\",\n  \"com_auth_error_login\": \"Unable to login with the information provided. Please check your credentials and try again.\",\n  \"com_auth_error_login_ban\": \"Your account has been temporarily banned due to violations of our service.\",\n  \"com_auth_error_login_rl\": \"Too many login attempts in a short amount of time. Please try again later.\",\n  \"com_auth_error_login_server\": \"There was an internal server error. Please wait a few moments and try again.\",\n  \"com_auth_error_login_unverified\": \"Your account has not been verified. Please check your email for a verification link.\",\n  \"com_auth_facebook_login\": \"Continue with Facebook\",\n  \"com_auth_full_name\": \"Full name\",\n  \"com_auth_github_login\": \"Continue with Github\",\n  \"com_auth_google_login\": \"Continue with Google\",\n  \"com_auth_here\": \"HERE\",\n  \"com_auth_login\": \"Login\",\n  \"com_auth_login_with_new_password\": \"You may now login with your new password.\",\n  \"com_auth_name_max_length\": \"Name must be less than 80 characters\",\n  \"com_auth_name_min_length\": \"Name must be at least 3 characters\",\n  \"com_auth_name_required\": \"Name is required\",\n  \"com_auth_no_account\": \"Don't have an account?\",\n  \"com_auth_password\": \"Password\",\n  \"com_auth_password_confirm\": \"Confirm password\",\n  \"com_auth_password_forgot\": \"Forgot Password?\",\n  \"com_auth_password_max_length\": \"Password must be less than 128 characters\",\n  \"com_auth_password_min_length\": \"Password must be at least 8 characters\",\n  \"com_auth_password_not_match\": \"Passwords do not match\",\n  \"com_auth_password_required\": \"Password is required\",\n  \"com_auth_registration_success_generic\": \"Please check your email to verify your email address.\",\n  \"com_auth_registration_success_insecure\": \"Registration successful.\",\n  \"com_auth_reset_password\": \"Reset your password\",\n  \"com_auth_reset_password_if_email_exists\": \"If an account with that email exists, an email with password reset instructions has been sent. Please make sure to check your spam folder.\",\n  \"com_auth_reset_password_link_sent\": \"Email Sent\",\n  \"com_auth_reset_password_success\": \"Password Reset Success\",\n  \"com_auth_sign_in\": \"Sign in\",\n  \"com_auth_sign_up\": \"Sign up\",\n  \"com_auth_submit_registration\": \"Submit registration\",\n  \"com_auth_to_reset_your_password\": \"to reset your password.\",\n  \"com_auth_to_try_again\": \"to try again.\",\n  \"com_auth_two_factor\": \"Check your preferred one-time password application for a code\",\n  \"com_auth_username\": \"Username (optional)\",\n  \"com_auth_username_max_length\": \"Username must be less than 20 characters\",\n  \"com_auth_username_min_length\": \"Username must be at least 2 characters\",\n  \"com_auth_verify_your_identity\": \"Verify Your Identity\",\n  \"com_auth_welcome_back\": \"Welcome back\",\n  \"com_click_to_download\": \"(click here to download)\",\n  \"com_download_expired\": \"(download expired)\",\n  \"com_download_expires\": \"(click here to download - expires {{0}})\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Agent Model (Recommended: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Please select an Agent\",\n  \"com_endpoint_ai\": \"AI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses. Note: models may stop before reaching this maximum.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"Prompt caching allows reusing large context or instructions across API calls, reducing costs and latency\",\n  \"com_endpoint_anthropic_temp\": \"Ranges from 0 to 1. Use temp closer to 0 for analytical / multiple choice, and closer to 1 for creative and generative tasks. We recommend altering this or Top P but not both.\",\n  \"com_endpoint_anthropic_thinking\": \"Enables internal reasoning for supported Claude models (3.7 Sonnet). Note: requires \\\"Thinking Budget\\\" to be set and lower than \\\"Max Output Tokens\\\"\",\n  \"com_endpoint_anthropic_thinking_budget\": \"Determines the max number of tokens Claude is allowed use for its internal reasoning process. Larger budgets can improve response quality by enabling more thorough analysis for complex problems, although Claude may not use the entire budget allocated, especially at ranges above 32K. This setting must be lower than \\\"Max Output Tokens.\\\"\",\n  \"com_endpoint_anthropic_topk\": \"Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.\",\n  \"com_endpoint_assistant\": \"Assistant\",\n  \"com_endpoint_assistant_model\": \"Assistant Model\",\n  \"com_endpoint_assistant_placeholder\": \"Please select an Assistant from the right-hand Side Panel\",\n  \"com_endpoint_completion\": \"Completion\",\n  \"com_endpoint_completion_model\": \"Completion Model (Recommended: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Click Here\",\n  \"com_endpoint_config_google_api_info\": \"To get your Generative Language API key (for Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Google API Key\",\n  \"com_endpoint_config_google_cloud_platform\": \"(from Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google Service Account Key\",\n  \"com_endpoint_config_key\": \"Set API Key\",\n  \"com_endpoint_config_key_encryption\": \"Your key will be encrypted and deleted at\",\n  \"com_endpoint_config_key_for\": \"Set API Key for\",\n  \"com_endpoint_config_key_google_need_to\": \"You need to\",\n  \"com_endpoint_config_key_google_service_account\": \"Create a Service Account\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Enable Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API on Google Cloud, then\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Make sure to click 'Create and Continue' to give at least the 'Vertex AI User' role. Lastly, create a JSON key to import here.\",\n  \"com_endpoint_config_key_import_json_key\": \"Import Service Account JSON Key.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Invalid Service Account JSON Key, Did you import the correct file?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Successfully Imported Service Account JSON Key\",\n  \"com_endpoint_config_key_name\": \"Key\",\n  \"com_endpoint_config_key_never_expires\": \"Your key will never expire\",\n  \"com_endpoint_config_placeholder\": \"Set your Key in the Header menu to chat.\",\n  \"com_endpoint_config_value\": \"Enter value for\",\n  \"com_endpoint_context\": \"Context\",\n  \"com_endpoint_context_info\": \"The maximum number of tokens that can be used for context. Use this for control of how many tokens are sent per request. If unspecified, will use system defaults based on known models' context size. Setting higher values may result in errors and/or higher token cost.\",\n  \"com_endpoint_context_tokens\": \"Max Context Tokens\",\n  \"com_endpoint_custom_name\": \"Custom Name\",\n  \"com_endpoint_default\": \"default\",\n  \"com_endpoint_default_blank\": \"default: blank\",\n  \"com_endpoint_default_empty\": \"default: empty\",\n  \"com_endpoint_default_with_num\": \"default: {{0}}\",\n  \"com_endpoint_examples\": \" Presets\",\n  \"com_endpoint_export\": \"Export\",\n  \"com_endpoint_export_share\": \"Export/Share\",\n  \"com_endpoint_frequency_penalty\": \"Frequency Penalty\",\n  \"com_endpoint_func_hover\": \"Enable use of Plugins as OpenAI Functions\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Set a custom name for Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maximum number of tokens that can be generated in the response. Specify a lower value for shorter responses and a higher value for longer responses. Note: models may stop before reaching this maximum.\",\n  \"com_endpoint_google_temp\": \"Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.\",\n  \"com_endpoint_google_topk\": \"Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature).\",\n  \"com_endpoint_google_topp\": \"Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value.\",\n  \"com_endpoint_instructions_assistants\": \"Override Instructions\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Overrides the instructions of the assistant. This is useful for modifying the behavior on a per-run basis.\",\n  \"com_endpoint_max_output_tokens\": \"Max Output Tokens\",\n  \"com_endpoint_message\": \"Message\",\n  \"com_endpoint_message_new\": \"Message {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Edit your message or Regenerate.\",\n  \"com_endpoint_my_preset\": \"My Preset\",\n  \"com_endpoint_no_presets\": \"No presets yet, use the settings button to create one\",\n  \"com_endpoint_open_menu\": \"Open Menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Set a custom name for the AI\",\n  \"com_endpoint_openai_detail\": \"The resolution for Vision requests. \\\"Low\\\" is cheaper and faster, \\\"High\\\" is more detailed and expensive, and \\\"Auto\\\" will automatically choose between the two based on the image resolution.\",\n  \"com_endpoint_openai_freq\": \"Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\",\n  \"com_endpoint_openai_max\": \"The max tokens to generate. The total length of input tokens and generated tokens is limited by the model's context length.\",\n  \"com_endpoint_openai_max_tokens\": \"Optional 'max_tokens' field, representing the maximum number of tokens that can be generated in the chat completion. The total length of input tokens and generated tokens is limited by the models context length. You may experience errors if this number exceeds the max context tokens.\",\n  \"com_endpoint_openai_pres\": \"Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Set custom instructions to include in System Message. Default: none\",\n  \"com_endpoint_openai_reasoning_effort\": \"o1 models only: constrains effort on reasoning for reasoning models. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.\",\n  \"com_endpoint_openai_resend\": \"Resend all previously attached images. Note: this can significantly increase token cost and you may experience errors with many image attachments.\",\n  \"com_endpoint_openai_resend_files\": \"Resend all previously attached files. Note: this will increase token cost and you may experience errors with many attachments.\",\n  \"com_endpoint_openai_stop\": \"Up to 4 sequences where the API will stop generating further tokens.\",\n  \"com_endpoint_openai_temp\": \"Higher values = more random, while lower values = more focused and deterministic. We recommend altering this or Top P but not both.\",\n  \"com_endpoint_openai_topp\": \"An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We recommend altering this or temperature but not both.\",\n  \"com_endpoint_output\": \"Output\",\n  \"com_endpoint_plug_image_detail\": \"Image Detail\",\n  \"com_endpoint_plug_resend_files\": \"Resend Files\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Set custom instructions to include in System Message. Default: none\",\n  \"com_endpoint_plug_skip_completion\": \"Skip Completion\",\n  \"com_endpoint_plug_use_functions\": \"Use Functions\",\n  \"com_endpoint_presence_penalty\": \"Presence Penalty\",\n  \"com_endpoint_preset\": \"preset\",\n  \"com_endpoint_preset_custom_name_placeholder\": \"something needs to go here. was empty\",\n  \"com_endpoint_preset_default\": \"is now the default preset.\",\n  \"com_endpoint_preset_default_item\": \"Default:\",\n  \"com_endpoint_preset_default_none\": \"No default preset active.\",\n  \"com_endpoint_preset_default_removed\": \"is no longer the default preset.\",\n  \"com_endpoint_preset_delete_confirm\": \"Are you sure you want to delete this preset?\",\n  \"com_endpoint_preset_delete_error\": \"There was an error deleting your preset. Please try again.\",\n  \"com_endpoint_preset_import\": \"Preset Imported!\",\n  \"com_endpoint_preset_import_error\": \"There was an error importing your preset. Please try again.\",\n  \"com_endpoint_preset_name\": \"Preset Name\",\n  \"com_endpoint_preset_save_error\": \"There was an error saving your preset. Please try again.\",\n  \"com_endpoint_preset_selected\": \"Preset Active!\",\n  \"com_endpoint_preset_selected_title\": \"Active!\",\n  \"com_endpoint_preset_title\": \"Preset\",\n  \"com_endpoint_presets\": \"presets\",\n  \"com_endpoint_presets_clear_warning\": \"Are you sure you want to clear all presets? This is irreversible.\",\n  \"com_endpoint_prompt_cache\": \"Use Prompt Caching\",\n  \"com_endpoint_prompt_prefix\": \"Custom Instructions\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Additional Instructions\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Set additional instructions or context on top of the Assistant's main instructions. Ignored if empty.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Set custom instructions or context. Ignored if empty.\",\n  \"com_endpoint_reasoning_effort\": \"Reasoning Effort\",\n  \"com_endpoint_save_as_preset\": \"Save As Preset\",\n  \"com_endpoint_search\": \"Search endpoint by name\",\n  \"com_endpoint_set_custom_name\": \"Set a custom name, in case you can find this preset\",\n  \"com_endpoint_skip_hover\": \"Enable skipping the completion step, which reviews the final answer and generated steps\",\n  \"com_endpoint_stop\": \"Stop Sequences\",\n  \"com_endpoint_stop_placeholder\": \"Separate values by pressing `Enter`\",\n  \"com_endpoint_temperature\": \"Temperature\",\n  \"com_endpoint_thinking\": \"Thinking\",\n  \"com_endpoint_thinking_budget\": \"Thinking Budget\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Use Active Assistant\",\n  \"com_error_expired_user_key\": \"Provided key for {{0}} expired at {{1}}. Please provide a new key and try again.\",\n  \"com_error_files_dupe\": \"Duplicate file detected.\",\n  \"com_error_files_empty\": \"Empty files are not allowed.\",\n  \"com_error_files_process\": \"An error occurred while processing the file.\",\n  \"com_error_files_unsupported_capability\": \"No capabilities enabled that support this file type.\",\n  \"com_error_files_upload\": \"An error occurred while uploading the file.\",\n  \"com_error_files_upload_canceled\": \"The file upload request was canceled. Note: the file upload may still be processing and will need to be manually deleted.\",\n  \"com_error_files_validation\": \"An error occurred while validating the file.\",\n  \"com_error_input_length\": \"The latest message token count is too long, exceeding the token limit ({{0}} respectively). Please shorten your message, adjust the max context size from the conversation parameters, or fork the conversation to continue.\",\n  \"com_error_invalid_user_key\": \"Invalid key provided. Please provide a valid key and try again.\",\n  \"com_error_moderation\": \"It appears that the content submitted has been flagged by our moderation system for not aligning with our community guidelines. We're unable to proceed with this specific topic. If you have any other questions or topics you'd like to explore, please edit your message, or create a new conversation.\",\n  \"com_error_no_base_url\": \"No base URL found. Please provide one and try again.\",\n  \"com_error_no_user_key\": \"No key found. Please provide a key and try again.\",\n  \"com_files_filter\": \"Filter files...\",\n  \"com_files_no_results\": \"No results.\",\n  \"com_files_number_selected\": \"{{0}} of {{1}} items(s) selected\",\n  \"com_files_table\": \"something needs to go here. was empty\",\n  \"com_generated_files\": \"Generated files:\",\n  \"com_hide_examples\": \"Hide Examples\",\n  \"com_nav_2fa\": \"Two-Factor Authentication (2FA)\",\n  \"com_nav_account_settings\": \"Account Settings\",\n  \"com_nav_always_make_prod\": \"Always make new versions production\",\n  \"com_nav_archive_created_at\": \"Date Archived\",\n  \"com_nav_archive_name\": \"Name\",\n  \"com_nav_archived_chats\": \"Archived chats\",\n  \"com_nav_archived_chats_empty\": \"You have no archived conversations.\",\n  \"com_nav_at_command\": \"@-Command\",\n  \"com_nav_at_command_description\": \"Toggle command \\\"@\\\" for switching endpoints, models, presets, etc.\",\n  \"com_nav_audio_play_error\": \"Error playing audio: {{0}}\",\n  \"com_nav_audio_process_error\": \"Error processing audio: {{0}}\",\n  \"com_nav_auto_scroll\": \"Auto-Scroll to latest message on chat open\",\n  \"com_nav_auto_send_prompts\": \"Auto-send Prompts\",\n  \"com_nav_auto_send_text\": \"Auto send text\",\n  \"com_nav_auto_send_text_disabled\": \"set -1 to disable\",\n  \"com_nav_auto_transcribe_audio\": \"Auto transcribe audio\",\n  \"com_nav_automatic_playback\": \"Autoplay Latest Message\",\n  \"com_nav_balance\": \"Balance\",\n  \"com_nav_browser\": \"Browser\",\n  \"com_nav_buffer_append_error\": \"Problem with audio streaming. The playback may be interrupted.\",\n  \"com_nav_change_picture\": \"Change picture\",\n  \"com_nav_chat_commands\": \"Chat Commands\",\n  \"com_nav_chat_commands_info\": \"These commands are activated by typing specific characters at the beginning of your message. Each command is triggered by its designated prefix. You can disable them if you frequently use these characters to start messages.\",\n  \"com_nav_chat_direction\": \"Chat direction\",\n  \"com_nav_clear_all_chats\": \"Clear all chats\",\n  \"com_nav_clear_cache_confirm_message\": \"Are you sure you want to clear the cache?\",\n  \"com_nav_clear_conversation\": \"Clear conversations\",\n  \"com_nav_clear_conversation_confirm_message\": \"Are you sure you want to clear all conversations? This is irreversible.\",\n  \"com_nav_close_sidebar\": \"Close sidebar\",\n  \"com_nav_commands\": \"Commands\",\n  \"com_nav_confirm_clear\": \"Confirm Clear\",\n  \"com_nav_conversation_mode\": \"Conversation Mode\",\n  \"com_nav_convo_menu_options\": \"Conversation Menu Options\",\n  \"com_nav_db_sensitivity\": \"Decibel sensitivity\",\n  \"com_nav_delete_account\": \"Delete account\",\n  \"com_nav_delete_account_button\": \"Permanently delete my account\",\n  \"com_nav_delete_account_confirm\": \"Delete account - are you sure?\",\n  \"com_nav_delete_account_email_placeholder\": \"Please enter your account email\",\n  \"com_nav_delete_cache_storage\": \"Delete TTS cache storage\",\n  \"com_nav_delete_data_info\": \"All your data will be deleted.\",\n  \"com_nav_delete_warning\": \"WARNING: This will permanently delete your account.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Enable cache TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Use cloud-based voices\",\n  \"com_nav_enabled\": \"Enabled\",\n  \"com_nav_engine\": \"Engine\",\n  \"com_nav_enter_to_send\": \"Press Enter to send messages\",\n  \"com_nav_export\": \"Export\",\n  \"com_nav_export_all_message_branches\": \"Export all message branches\",\n  \"com_nav_export_conversation\": \"Export conversation\",\n  \"com_nav_export_filename\": \"Filename\",\n  \"com_nav_export_filename_placeholder\": \"Set the filename\",\n  \"com_nav_export_include_endpoint_options\": \"Include endpoint options\",\n  \"com_nav_export_recursive\": \"Recursive\",\n  \"com_nav_export_recursive_or_sequential\": \"Recursive or sequential?\",\n  \"com_nav_export_type\": \"Type\",\n  \"com_nav_external\": \"External\",\n  \"com_nav_font_size\": \"Message Font Size\",\n  \"com_nav_font_size_base\": \"Medium\",\n  \"com_nav_font_size_lg\": \"Large\",\n  \"com_nav_font_size_sm\": \"Small\",\n  \"com_nav_font_size_xl\": \"Extra Large\",\n  \"com_nav_font_size_xs\": \"Extra Small\",\n  \"com_nav_help_faq\": \"Help & FAQ\",\n  \"com_nav_hide_panel\": \"Hide right-most side panel\",\n  \"com_nav_info_code_artifacts\": \"Enables the display of experimental code artifacts next to the chat\",\n  \"com_nav_info_code_artifacts_agent\": \"Enables the use of code artifacts for this agent. By default, additional instructions specific to the use of artifacts are added, unless \\\"Custom Prompt Mode\\\" is enabled.\",\n  \"com_nav_info_custom_prompt_mode\": \"When enabled, the default artifacts system prompt will not be included. All artifact-generating instructions must be provided manually in this mode.\",\n  \"com_nav_info_enter_to_send\": \"When enabled, pressing `ENTER` will send your message. When disabled, pressing Enter will add a new line, and you'll need to press `CTRL + ENTER` / `⌘ + ENTER` to send your message.\",\n  \"com_nav_info_fork_change_default\": \"`Visible messages only` includes just the direct path to the selected message. `Include related branches` adds branches along the path. `Include all to/from here` includes all connected messages and branches.\",\n  \"com_nav_info_fork_split_target_setting\": \"When enabled, forking will commence from the target message to the latest message in the conversation, according to the behavior selected.\",\n  \"com_nav_info_include_shadcnui\": \"When enabled, instructions for using shadcn/ui components will be included. shadcn/ui is a collection of re-usable components built using Radix UI and Tailwind CSS. Note: these are lengthy instructions, you should only enable if informing the LLM of the correct imports and components is important to you. For more information about these components, visit: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"When enabled, LaTeX code in messages will be rendered as mathematical equations. Disabling this may improve performance if you don't need LaTeX rendering.\",\n  \"com_nav_info_save_draft\": \"When enabled, the text and attachments you enter in the chat form will be automatically saved locally as drafts. These drafts will be available even if you reload the page or switch to a different conversation. Drafts are stored locally on your device and are deleted once the message is sent.\",\n  \"com_nav_info_show_thinking\": \"When enabled, the chat will display the thinking dropdowns open by default, allowing you to view the AI's reasoning in real-time. When disabled, the thinking dropdowns will remain closed by default for a cleaner and more streamlined interface\",\n  \"com_nav_info_user_name_display\": \"When enabled, the username of the sender will be shown above each message you send. When disabled, you will only see \\\"You\\\" above your messages.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Auto detect\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"简体中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_georgian\": \"ქართული\",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Language\",\n  \"com_nav_latex_parsing\": \"Parsing LaTeX in messages (may affect performance)\",\n  \"com_nav_log_out\": \"Log out\",\n  \"com_nav_long_audio_warning\": \"Longer texts will take longer to process.\",\n  \"com_nav_maximize_chat_space\": \"Maximize chat space\",\n  \"com_nav_modular_chat\": \"Enable switching Endpoints mid-conversation\",\n  \"com_nav_my_files\": \"My Files\",\n  \"com_nav_my_knowledge_files\": \"My Knowledge Lib\",\n  \"com_nav_no_search_results\": \"No search results found\",\n  \"com_nav_not_supported\": \"Not Supported\",\n  \"com_nav_open_sidebar\": \"Open sidebar\",\n  \"com_nav_playback_rate\": \"Audio Playback Rate\",\n  \"com_nav_plugin_auth_error\": \"There was an error attempting to authenticate this plugin. Please try again.\",\n  \"com_nav_plugin_install\": \"Install\",\n  \"com_nav_plugin_search\": \"Search plugins\",\n  \"com_nav_plugin_store\": \"Plugin store\",\n  \"com_nav_plugin_uninstall\": \"Uninstall\",\n  \"com_nav_plus_command\": \"+-Command\",\n  \"com_nav_plus_command_description\": \"Toggle command \\\"+\\\" for adding a multi-response setting\",\n  \"com_nav_profile_picture\": \"Profile Picture\",\n  \"com_nav_save_drafts\": \"Save drafts locally\",\n  \"com_nav_scroll_button\": \"Scroll to the end button\",\n  \"com_nav_search_placeholder\": \"Search messages\",\n  \"com_nav_send_message\": \"Send message\",\n  \"com_nav_setting_account\": \"Account\",\n  \"com_nav_setting_beta\": \"Beta features\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Data controls\",\n  \"com_nav_setting_general\": \"General\",\n  \"com_nav_setting_speech\": \"Speech\",\n  \"com_nav_settings\": \"Settings\",\n  \"com_nav_shared_links\": \"Shared links\",\n  \"com_nav_show_code\": \"Always show code when using code interpreter\",\n  \"com_nav_show_thinking\": \"Open Thinking Dropdowns by Default\",\n  \"com_nav_slash_command\": \"/-Command\",\n  \"com_nav_slash_command_description\": \"Toggle command \\\"/\\\" for selecting a prompt via keyboard\",\n  \"com_nav_source_buffer_error\": \"Error setting up audio playback. Please refresh the page.\",\n  \"com_nav_speech_cancel_error\": \"Unable to stop audio playback. You may need to refresh the page.\",\n  \"com_nav_speech_to_text\": \"Speech to Text\",\n  \"com_nav_stop_generating\": \"Stop generating\",\n  \"com_nav_text_to_speech\": \"Text to Speech\",\n  \"com_nav_theme\": \"Theme\",\n  \"com_nav_theme_dark\": \"Dark\",\n  \"com_nav_theme_light\": \"Light\",\n  \"com_nav_theme_system\": \"System\",\n  \"com_nav_tool_dialog\": \"Assistant Tools\",\n  \"com_nav_tool_dialog_agents\": \"Agent Tools\",\n  \"com_nav_tool_dialog_description\": \"Assistant must be saved to persist tool selections.\",\n  \"com_nav_tool_remove\": \"Remove\",\n  \"com_nav_tool_search\": \"Search tools\",\n  \"com_nav_tts_init_error\": \"Failed to initialize text-to-speech: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Text-to-speech for the selected engine is not supported in this browser.\",\n  \"com_nav_user\": \"USER\",\n  \"com_nav_user_msg_markdown\": \"Render user messages as markdown\",\n  \"com_nav_user_name_display\": \"Display username in messages\",\n  \"com_nav_voice_select\": \"Voice\",\n  \"com_nav_voices_fetch_error\": \"Could not retrieve voice options. Please check your internet connection.\",\n  \"com_nav_welcome_agent\": \"Please Select an Agent\",\n  \"com_nav_welcome_assistant\": \"Please Select an Assistant\",\n  \"com_nav_welcome_message\": \"How can I help you today?\",\n  \"com_show_agent_settings\": \"Show Agent Settings\",\n  \"com_show_completion_settings\": \"Show Completion Settings\",\n  \"com_show_examples\": \"Show Examples\",\n  \"com_sidepanel_agent_builder\": \"Agent Builder\",\n  \"com_sidepanel_assistant_builder\": \"Assistant Builder\",\n  \"com_sidepanel_attach_files\": \"Attach Files\",\n  \"com_sidepanel_conversation_tags\": \"Bookmarks\",\n  \"com_sidepanel_hide_panel\": \"Hide Panel\",\n  \"com_sidepanel_manage_files\": \"Manage Files\",\n  \"com_sidepanel_parameters\": \"Parameters\",\n  \"com_sidepanel_select_agent\": \"Select an Agent\",\n  \"com_sidepanel_select_assistant\": \"Select an Assistant\",\n  \"com_ui_2fa_account_security\": \"Two-factor authentication adds an extra layer of security to your account\",\n  \"com_ui_2fa_disable\": \"Disable 2FA\",\n  \"com_ui_2fa_disable_error\": \"There was an error disabling two-factor authentication\",\n  \"com_ui_2fa_disabled\": \"2FA has been disabled\",\n  \"com_ui_2fa_enable\": \"Enable 2FA\",\n  \"com_ui_2fa_enabled\": \"2FA has been enabled\",\n  \"com_ui_2fa_generate_error\": \"There was an error generating two-factor authentication settings\",\n  \"com_ui_2fa_invalid\": \"Invalid two-factor authentication code\",\n  \"com_ui_2fa_setup\": \"Setup 2FA\",\n  \"com_ui_2fa_verified\": \"Successfully verified Two-Factor Authentication\",\n  \"com_ui_accept\": \"I accept\",\n  \"com_ui_add\": \"Add\",\n  \"com_ui_add_model_preset\": \"Add a model or preset for an additional response\",\n  \"com_ui_add_multi_conversation\": \"Add multi-conversation\",\n  \"com_ui_admin\": \"Admin\",\n  \"com_ui_admin_access_warning\": \"Disabling Admin access to this feature may cause unexpected UI issues requiring refresh. If saved, the only way to revert is via the interface setting in librechat.yaml config which affects all roles.\",\n  \"com_ui_admin_settings\": \"Admin Settings\",\n  \"com_ui_advanced\": \"Advanced\",\n  \"com_ui_agent\": \"Agent\",\n  \"com_ui_agent_delete_error\": \"There was an error deleting the agent\",\n  \"com_ui_agent_deleted\": \"Successfully deleted agent\",\n  \"com_ui_agent_duplicate_error\": \"There was an error duplicating the agent\",\n  \"com_ui_agent_duplicated\": \"Agent copied successfully\",\n  \"com_ui_agent_editing_allowed\": \"Other users can already edit this agent\",\n  \"com_ui_agent_shared_to_all\": \"something needs to go here. was empty\",\n  \"com_ui_agents\": \"Agents\",\n  \"com_ui_agents_allow_create\": \"Allow creating Agents\",\n  \"com_ui_agents_allow_share_global\": \"Allow sharing Agents to all users\",\n  \"com_ui_agents_allow_use\": \"Allow using Agents\",\n  \"com_ui_all\": \"all\",\n  \"com_ui_all_proper\": \"All\",\n  \"com_ui_analyzing\": \"Analyzing\",\n  \"com_ui_analyzing_finished\": \"Finished analyzing\",\n  \"com_ui_api_key\": \"API Key\",\n  \"com_ui_archive\": \"Archive\",\n  \"com_ui_archive_error\": \"Failed to archive conversation\",\n  \"com_ui_artifact_click\": \"Click to open\",\n  \"com_ui_artifacts\": \"Artifacts\",\n  \"com_ui_artifacts_toggle\": \"Toggle Artifacts UI\",\n  \"com_ui_artifacts_toggle_agent\": \"Enable Artifacts\",\n  \"com_ui_ascending\": \"Asc\",\n  \"com_ui_assistant\": \"Assistant\",\n  \"com_ui_assistant_delete_error\": \"There was an error deleting the assistant\",\n  \"com_ui_assistant_deleted\": \"Successfully deleted assistant\",\n  \"com_ui_assistants\": \"Assistants\",\n  \"com_ui_assistants_output\": \"Assistants Output\",\n  \"com_ui_attach_error\": \"Cannot attach file. Create or select a conversation, or try refreshing the page.\",\n  \"com_ui_attach_error_openai\": \"Cannot attach Assistant files to other endpoints\",\n  \"com_ui_attach_error_size\": \"File size limit exceeded for endpoint:\",\n  \"com_ui_attach_error_type\": \"Unsupported file type for endpoint:\",\n  \"com_ui_attach_warn_endpoint\": \"Non-Assistant files may be ignored without a compatible tool\",\n  \"com_ui_attachment\": \"Attachment\",\n  \"com_ui_auth_type\": \"Auth Type\",\n  \"com_ui_auth_url\": \"Authorization URL\",\n  \"com_ui_authentication\": \"Authentication\",\n  \"com_ui_authentication_type\": \"Authentication Type\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_azure\": \"Azure\",\n  \"com_ui_back_to_chat\": \"Back to Chat\",\n  \"com_ui_back_to_prompts\": \"Back to Prompts\",\n  \"com_ui_backup_codes\": \"Backup Codes\",\n  \"com_ui_backup_codes_regenerate_error\": \"There was an error regenerating backup codes\",\n  \"com_ui_backup_codes_regenerated\": \"Backup codes have been regenerated successfully\",\n  \"com_ui_basic\": \"Basic\",\n  \"com_ui_basic_auth_header\": \"Basic authorization header\",\n  \"com_ui_bearer\": \"Bearer\",\n  \"com_ui_bookmark_delete_confirm\": \"Are you sure you want to delete this bookmark?\",\n  \"com_ui_bookmarks\": \"Bookmarks\",\n  \"com_ui_bookmarks_add\": \"Add Bookmarks\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Add to current conversation\",\n  \"com_ui_bookmarks_count\": \"Count\",\n  \"com_ui_bookmarks_create_error\": \"There was an error creating the bookmark\",\n  \"com_ui_bookmarks_create_exists\": \"This bookmark already exists\",\n  \"com_ui_bookmarks_create_success\": \"Bookmark created successfully\",\n  \"com_ui_bookmarks_delete\": \"Delete Bookmark\",\n  \"com_ui_bookmarks_delete_error\": \"There was an error deleting the bookmark\",\n  \"com_ui_bookmarks_delete_success\": \"Bookmark deleted successfully\",\n  \"com_ui_bookmarks_description\": \"Description\",\n  \"com_ui_bookmarks_edit\": \"Edit Bookmark\",\n  \"com_ui_bookmarks_filter\": \"Filter bookmarks...\",\n  \"com_ui_bookmarks_new\": \"New Bookmark\",\n  \"com_ui_bookmarks_title\": \"Title\",\n  \"com_ui_bookmarks_update_error\": \"There was an error updating the bookmark\",\n  \"com_ui_bookmarks_update_success\": \"Bookmark updated successfully\",\n  \"com_ui_bulk_delete_error\": \"Failed to delete shared links\",\n  \"com_ui_callback_url\": \"Callback URL\",\n  \"com_ui_cancel\": \"Cancel\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Chat History\",\n  \"com_ui_clear\": \"Clear\",\n  \"com_ui_clear_all\": \"Clear all\",\n  \"com_ui_client_id\": \"Client ID\",\n  \"com_ui_client_secret\": \"Client Secret\",\n  \"com_ui_close\": \"Close\",\n  \"com_ui_close_menu\": \"Close Menu\",\n  \"com_ui_code\": \"Code\",\n  \"com_ui_chart\": \"Chart\",\n  \"com_ui_collapse_chat\": \"Collapse Chat\",\n  \"com_ui_command_placeholder\": \"Optional: Enter a command for the prompt or name will be used\",\n  \"com_ui_command_usage_placeholder\": \"Select a Prompt by command or name\",\n  \"com_ui_complete_setup\": \"Complete Setup\",\n  \"com_ui_confirm_action\": \"Confirm Action\",\n  \"com_ui_confirm_admin_use_change\": \"Changing this setting will block access for admins, including yourself. Are you sure you want to proceed?\",\n  \"com_ui_confirm_change\": \"Confirm Change\",\n  \"com_ui_context\": \"Context\",\n  \"com_ui_continue\": \"Continue\",\n  \"com_ui_controls\": \"Controls\",\n  \"com_ui_copied\": \"Copied!\",\n  \"com_ui_copied_to_clipboard\": \"Copied to clipboard\",\n  \"com_ui_copy_code\": \"Copy code\",\n  \"com_ui_copy_link\": \"Copy link\",\n  \"com_ui_copy_to_clipboard\": \"Copy to clipboard\",\n  \"com_ui_create\": \"Create\",\n  \"com_ui_create_link\": \"Create link\",\n  \"com_ui_create_prompt\": \"Create Prompt\",\n  \"com_ui_currently_production\": \"Currently in production\",\n  \"com_ui_custom\": \"Custom\",\n  \"com_ui_custom_header_name\": \"Custom Header Name\",\n  \"com_ui_custom_prompt_mode\": \"Custom Prompt Mode\",\n  \"com_ui_dashboard\": \"Dashboard\",\n  \"com_ui_date\": \"Date\",\n  \"com_ui_date_april\": \"April\",\n  \"com_ui_date_august\": \"August\",\n  \"com_ui_date_december\": \"December\",\n  \"com_ui_date_february\": \"February\",\n  \"com_ui_date_january\": \"January\",\n  \"com_ui_date_july\": \"July\",\n  \"com_ui_date_june\": \"June\",\n  \"com_ui_date_march\": \"March\",\n  \"com_ui_date_may\": \"May\",\n  \"com_ui_date_november\": \"November\",\n  \"com_ui_date_october\": \"October\",\n  \"com_ui_date_previous_30_days\": \"Previous 30 days\",\n  \"com_ui_date_previous_7_days\": \"Previous 7 days\",\n  \"com_ui_date_september\": \"September\",\n  \"com_ui_date_today\": \"Today\",\n  \"com_ui_date_yesterday\": \"Yesterday\",\n  \"com_ui_decline\": \"I do not accept\",\n  \"com_ui_default_post_request\": \"Default (POST request)\",\n  \"com_ui_delete\": \"Delete\",\n  \"com_ui_delete_action\": \"Delete Action\",\n  \"com_ui_delete_action_confirm\": \"Are you sure you want to delete this action?\",\n  \"com_ui_delete_agent_confirm\": \"Are you sure you want to delete this agent?\",\n  \"com_ui_delete_assistant_confirm\": \"Are you sure you want to delete this Assistant? This cannot be undone.\",\n  \"com_ui_delete_confirm\": \"This will delete\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"This will delete the selected version for \\\"{{0}}.\\\" If no other versions exist, the prompt will be deleted.\",\n  \"com_ui_delete_conversation\": \"Delete chat?\",\n  \"com_ui_delete_prompt\": \"Delete Prompt?\",\n  \"com_ui_delete_shared_link\": \"Delete shared link?\",\n  \"com_ui_delete_tool\": \"Delete Tool\",\n  \"com_ui_delete_tool_confirm\": \"Are you sure you want to delete this tool?\",\n  \"com_ui_descending\": \"Desc\",\n  \"com_ui_description\": \"Description\",\n  \"com_ui_description_placeholder\": \"Optional: Enter a description to display for the prompt\",\n  \"com_ui_disabling\": \"Disabling...\",\n  \"com_ui_download\": \"Download\",\n  \"com_ui_download_artifact\": \"Download Artifact\",\n  \"com_ui_download_backup\": \"Download Backup Codes\",\n  \"com_ui_download_backup_tooltip\": \"Before you continue, download your backup codes. You will need them to regain access if you lose your authenticator device\",\n  \"com_ui_download_error\": \"Error downloading file. The file may have been deleted.\",\n  \"com_ui_drag_drop\": \"something needs to go here. was empty\",\n  \"com_ui_dropdown_variables\": \"Dropdown variables:\",\n  \"com_ui_dropdown_variables_info\": \"Create custom dropdown menus for your prompts: `{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"Duplicate\",\n  \"com_ui_duplicated\": \"Copied\",\n  \"com_ui_duplication_error\": \"There was an error duplicating the conversation\",\n  \"com_ui_duplication_processing\": \"Duplicating conversation...\",\n  \"com_ui_duplication_success\": \"Successfully copied conversation\",\n  \"com_app_center_welcome\": \"Explore BISHENG's Intelligent Agents\",\n  \"com_app_center_description\": \"You can choose the intelligent agents you need here for production and work~\",\n  \"com_app_frequently_used\": \"Frequently Used Agents\",\n  \"com_app_uncategorized\": \"Uncategorized\",\n  \"com_app_common\": \"Common\",\n  \"com_message_content_copied\": \"Content copied\",\n  \"com_message_month_day_time\": \"MM dd HH:mm\",\n  \"com_nav_app_center\": \"Apps\",\n  \"com_nav_start_new_chat\": \"New Chat\",\n  \"com_sop_web_search\": \"Searching the web\",\n  \"com_sop_search_knowledge_base\": \"Searching knowledge base\",\n  \"com_sop_list_files\": \"Listing files\",\n  \"com_sop_get_file_details\": \"Getting file details\",\n  \"com_sop_search_files\": \"Searching files\",\n  \"com_sop_read_text_file\": \"Reading file\",\n  \"com_sop_add_text_to_file\": \"Adding content to file\",\n  \"com_sop_replace_file_lines\": \"Editing file\",\n  \"com_sop_using_tool\": \"Using {{0}} tool\",\n  \"com_sop_waiting_input\": \"Waiting for input\",\n  \"com_sop_input\": \"Entered\",\n  \"com_file_size_exceed_limit\": \"File: {{name}} exceeds {{size}}MB and has been removed.\",\n  \"com_sop_please_input\": \"Please input\",\n  \"com_sop_task_execution_interrupted\": \"Task execution interrupted\",\n  \"com_sop_running\": \"Running...\",\n  \"com_sop_rerun\": \"Rerun\",\n  \"com_sop_feedback_only\": \"Feedback Only\",\n  \"com_sop_upload_file\": \"Upload File\",\n  \"com_sop_upload_file_directory\": \"Upload file directory\",\n  \"com_sop_organize_knowledge_base\": \"Organize Knowledge Base\",\n  \"com_sop_sop_generation_failed\": \"SOP generation failed\",\n  \"com_sop_replan_placeholder\": \"Please provide suggestions for SOP replanning direction here\",\n  \"com_sop_confirm_replan\": \"Confirm Replanning\",\n  \"com_sop_editor_title\": \"Manual Editor\",\n  \"com_sop_confirm_execution\": \"Execute or not\",\n  \"com_sop_regenerate_manual\": \"Regenerate Manual\",\n  \"com_sop_start_execution\": \"Start Execution\",\n  \"com_sop_personal_knowledge_base\": \"Personal Knowledge Base\",\n  \"com_sop_task_description\": \"Task Description\",\n  \"com_sop_task_version\": \"Task Version\",\n  \"com_sop_submit_success\": \"Submitted successfully\",\n  \"com_sop_task_flow\": \"Task Flow\",\n  \"com_sop_waiting_message\": \"Tasks will start running after confirming the manual planning\",\n  \"com_sop_loading_title\": \"Providing detailed guidance manual to ensure task accuracy\",\n  \"com_sop_loading_desc\": \"$t(linsight) is planning the guidance manual for you...\",\n  \"com_sop_preview_failed\": \"Preview failed\",\n  \"com_sop_file_load_error\": \"File load error\",\n  \"com_sop_empty_file\": \"Empty file\",\n  \"com_sop_tool_not_found\": \"⚠️ Tool or resource not found, please reselect\",\n  \"com_sop_tool_error\": \"Error variable\",\n  \"com_sop_task_planning\": \"Task Planning\",\n  \"com_sop_task_stage\": \"Task Stage\",\n  \"com_sop_show_overview\": \"Show Overview\",\n  \"com_sop_stop_task\": \"Stop Task\",\n  \"com_sop_task\": \"Task \",\n  \"com_sop_terminated\": \"terminated\",\n  \"com_sop_completed\": \"completed\",\n  \"com_sop_rate_task\": \"Rate the task to help $t(linsight) do better next time:\",\n  \"com_sop_view_all_files\": \"View all files in this task\",\n  \"com_sop_select_all\": \"Select All\",\n  \"com_sop_batch_download\": \"Batch Download\",\n  \"com_sop_queue_message\": \"Currently many users are using the service, please wait in queue...\",\n  \"com_sop_estimated_wait\": \"Estimated wait time\",\n  \"com_sop_organizing_content\": \"Organizing content...\",\n  \"com_sop_plan_task_path\": \"Planning task execution path:\",\n  \"com_sop_execute_tasks\": \"Next, I will execute the corresponding tasks for you:\",\n  \"com_sop_select_file\": \"Select File\",\n  \"com_agent_add_to_favorites\": \"Add to Favorites\",\n  \"com_agent_remove_from_favorites\": \"Remove from Favorites\",\n  \"com_agent_search_placeholder\": \"Search for agents you need\",\n  \"com_agent_unsatisfied_feedback\": \"Not satisfied with the result? You can input feedback to restart the task.\",\n  \"com_agent_input_knowledge_tool\": \"Input @ to add knowledge base, files or tools\",\n  \"com_file_current_empty\": \"Current file is empty\",\n  \"com_invite_please_input_code\": \"Please enter invitation code\",\n  \"com_invite_submit_failed\": \"Submission failed\",\n  \"com_invite_title\": \"$t(linsight) Invitation Code\",\n  \"com_invite_desc\": \"Enter the invitation code provided by BISHENG to start your $t(linsight) journey.\",\n  \"com_invite_placeholder\": \"Please enter\",\n  \"com_invite_submit\": \"Submit\",\n  \"com_invite_submitting\": \"Submitting...\",\n  \"com_invite_no_code_tip\": \"No invitation code? \",\n  \"com_invite_apply_access\": \"Click here to apply for access\",\n  \"com_copy_failed\": \"Copy failed\",\n  \"com_copy_command_failed\": \"Copy command failed\",\n  \"com_copied\": \"Copied\",\n  \"com_copy_to_clipboard\": \"Copy to clipboard\",\n  \"com_show_more\": \"Show More\",\n  \"com_agent_added_success\": \"Agent has been added\",\n  \"com_search_searching\": \"Searching...\",\n  \"com_search_loading_more\": \"Loading more...\",\n  \"com_search_no_results\": \"No agents found\",\n  \"com_label_max_selection\": \"Maximum 10 labels can be selected\",\n  \"com_label_operation_tip\": \"Operation tip: Select labels to display on the left, drag and drop to sort on the right\",\n  \"com_label_selected\": \"Selected: {{0}}/10\",\n  \"com_label_cancel\": \"Cancel\",\n  \"com_label_save\": \"Save\",\n  \"com_nav_personal_knowledge\": \"Personal Knowledge Base\",\n  \"com_nav_admin_panel\": \"Admin Panel\",\n  \"com_nav_language_label\": \"Language\",\n  \"com_knowledge_upload_time\": \"Upload Time\",\n  \"com_knowledge_status\": \"Status\",\n  \"com_knowledge_operation\": \"Operation\",\n  \"com_knowledge_processing\": \"Processing\",\n  \"com_knowledge_success\": \"Success\",\n  \"com_knowledge_failed\": \"Failed\",\n  \"com_knowledge_model_switching\": \"Model Vector Switching\",\n  \"com_knowledge_add_file\": \"Add File\",\n  \"com_segment_daily_mode\": \"Daily\",\n  \"com_segment_linsight\": \"$t(linsightFullName)\",\n  \"com_linsight_input_placeholder\": \"Enter your task goal, then leave it to $t(bisheng)$t(linsight)\",\n  \"com_linsight_tagline\": \"The LLM uses your business playbook to plan and complete tasks.\",\n  \"com_linsight_remaining_times\": \"Remaining tasks: {{count}}\",\n  \"com_linsight_activate\": \"Activate\",\n  \"com_tools_title\": \"Tools\",\n  \"com_tools_web_search\": \"Web Search\",\n  \"com_tools_personal_knowledge\": \"Personal Knowledge\",\n  \"com_tools_org_knowledge\": \"Organization Knowledge\",\n  \"com_tools_knowledge_base\": \"Knowledge Base\",\n  \"kbLimitReached\": \"Knowledge base limit reached (maximum 50)\",\n  \"com_tools_knowledge_base_search\": \"Knowledge Base Search\",\n  \"com_tools_knowledge_rebuilding\": \"Personal kowledge base embedding model has been changed, rebuilding knowledge base, please try again later\",\n  \"com_tools_file_upload\": \"File upload successful\",\n  \"com_tools_file_upload_failed\": \"Upload failed\",\n  \"com_tools_file_detected\": \"Duplicate file detected\",\n  \"com_tools_file_following\": \"The following files already exist in the knowledge base. Do you want to overwrite them?\",\n  \"com_tools_file_not_overwrite\": \"Do not overwrite\",\n  \"com_tools_file_overwrite\": \"Overwrite\",\n  \"com_tools_knowledge_upload_remark\": \"Detection of duplicate files, duplicate files are automatically skipped\",\n  \"com_tools_no_more\": \"No more data\",\n  \"com_tools_no_results\": \"No results found\",\n  \"com_ui_edit\": \"Edit\",\n  \"com_ui_empty_category\": \"-\",\n  \"com_ui_endpoint\": \"Endpoint\",\n  \"com_ui_endpoint_menu\": \"LLM Endpoint Menu\",\n  \"com_ui_endpoints_available\": \"Available Endpoints\",\n  \"com_ui_enter\": \"Enter\",\n  \"com_ui_enter_api_key\": \"Enter API Key\",\n  \"com_ui_enter_openapi_schema\": \"Enter your OpenAPI schema here\",\n  \"com_ui_enter_var\": \"Enter {{0}}\",\n  \"com_ui_error\": \"Error\",\n  \"com_ui_error_connection\": \"Error connecting to server, try refreshing the page.\",\n  \"com_ui_error_save_admin_settings\": \"There was an error saving your admin settings.\",\n  \"com_ui_examples\": \"Examples\",\n  \"com_ui_export_convo_modal\": \"Export Conversation Modal\",\n  \"com_ui_field_required\": \"This field is required\",\n  \"com_ui_filter_prompts\": \"Filter Prompts\",\n  \"com_ui_filter_prompts_name\": \"Filter prompts by name\",\n  \"com_ui_finance\": \"Finance\",\n  \"com_ui_fork\": \"Fork\",\n  \"com_ui_fork_all_target\": \"Include all to/from here\",\n  \"com_ui_fork_branches\": \"Include related branches\",\n  \"com_ui_fork_change_default\": \"Default fork option\",\n  \"com_ui_fork_default\": \"Use default fork option\",\n  \"com_ui_fork_error\": \"There was an error forking the conversation\",\n  \"com_ui_fork_from_message\": \"Select a fork option\",\n  \"com_ui_fork_info_1\": \"Use this setting to fork messages with the desired behavior.\",\n  \"com_ui_fork_info_2\": \"\\\"Forking\\\" refers to creating a new conversation that start/end from specific messages in the current conversation, creating a copy according to the options selected.\",\n  \"com_ui_fork_info_3\": \"The \\\"target message\\\" refers to either the message this popup was opened from, or, if you check \\\"{{0}}\\\", the latest message in the conversation.\",\n  \"com_ui_fork_info_branches\": \"This option forks the visible messages, along with related branches; in other words, the direct path to the target message, including branches along the path.\",\n  \"com_ui_fork_info_remember\": \"Check this to remember the options you select for future usage, making it quicker to fork conversations as preferred.\",\n  \"com_ui_fork_info_start\": \"If checked, forking will commence from this message to the latest message in the conversation, according to the behavior selected above.\",\n  \"com_ui_fork_info_target\": \"This option forks all messages leading up to the target message, including its neighbors; in other words, all message branches, whether or not they are visible or along the same path, are included.\",\n  \"com_ui_fork_info_visible\": \"This option forks only the visible messages; in other words, the direct path to the target message, without any branches.\",\n  \"com_ui_fork_processing\": \"Forking conversation...\",\n  \"com_ui_fork_remember\": \"Remember\",\n  \"com_ui_fork_remember_checked\": \"Your selection will be remembered after usage. Change this at any time in the settings.\",\n  \"com_ui_fork_split_target\": \"Start fork here\",\n  \"com_ui_fork_split_target_setting\": \"Start fork from target message by default\",\n  \"com_ui_fork_success\": \"Successfully forked conversation\",\n  \"com_ui_fork_visible\": \"Visible messages only\",\n  \"com_ui_generate_backup\": \"Generate Backup Codes\",\n  \"com_ui_generate_qrcode\": \"Generate QR Code\",\n  \"com_ui_generating\": \"Generating...\",\n  \"com_ui_global_group\": \"something needs to go here. was empty\",\n  \"com_ui_go_back\": \"Go back\",\n  \"com_ui_go_to_conversation\": \"Go to conversation\",\n  \"com_ui_happy_birthday\": \"It's my 1st birthday!\",\n  \"com_ui_hide_qr\": \"Hide QR Code\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_idea\": \"Ideas\",\n  \"com_ui_image_gen\": \"Image Gen\",\n  \"com_ui_import\": \"Import\",\n  \"com_ui_import_conversation_error\": \"There was an error importing your conversations\",\n  \"com_ui_import_conversation_file_type_error\": \"Unsupported import type\",\n  \"com_ui_import_conversation_info\": \"Import conversations from a JSON file\",\n  \"com_ui_import_conversation_success\": \"Conversations imported successfully\",\n  \"com_ui_include_shadcnui\": \"Include shadcn/ui components instructions\",\n  \"com_ui_include_shadcnui_agent\": \"Include shadcn/ui instructions\",\n  \"com_ui_input\": \"Input\",\n  \"com_ui_instructions\": \"Instructions\",\n  \"com_ui_latest_footer\": \"for reference only\",\n  \"com_ui_latest_production_version\": \"Latest production version\",\n  \"com_ui_latest_version\": \"Latest version\",\n  \"com_ui_librechat_code_api_key\": \"Get your LibreChat Code Interpreter API key\",\n  \"com_ui_librechat_code_api_subtitle\": \"Secure. Multi-language. Input/Output Files.\",\n  \"com_ui_librechat_code_api_title\": \"Run AI Code\",\n  \"com_ui_llm_menu\": \"LLM Menu\",\n  \"com_ui_llms_available\": \"Available LLMs\",\n  \"com_ui_loading\": \"Loading...\",\n  \"com_ui_locked\": \"Locked\",\n  \"com_ui_logo\": \"{{0}} Logo\",\n  \"com_ui_manage\": \"Manage\",\n  \"com_ui_max_tags\": \"Maximum number allowed is {{0}}, using latest values.\",\n  \"com_ui_mention\": \"Mention an endpoint, assistant, or preset to quickly switch to it\",\n  \"com_ui_min_tags\": \"Cannot remove more values, a minimum of {{0}} are required.\",\n  \"com_ui_misc\": \"Misc.\",\n  \"com_ui_model\": \"Model\",\n  \"com_ui_model_parameters\": \"Model Parameters\",\n  \"com_ui_more_info\": \"More info\",\n  \"com_ui_my_prompts\": \"My Prompts\",\n  \"com_ui_name\": \"Name\",\n  \"com_ui_new\": \"New\",\n  \"com_ui_new_chat\": \"New chat\",\n  \"com_ui_model_think\": \"DeepThink(R1)\",\n  \"com_ui_model_search\": \"Search\",\n  \"com_ui_knowledge_search\": \"Knowledge Search\",\n  \"com_ui_model_shougang\": \"ShouGangThink(R1)\",\n  \"com_ui_next\": \"Next\",\n  \"com_ui_no\": \"No\",\n  \"com_ui_no_backup_codes\": \"No backup codes available. Please generate new ones\",\n  \"com_ui_no_bookmarks\": \"it seems like you have no bookmarks yet. Click on a chat and add a new one\",\n  \"com_ui_no_category\": \"No category\",\n  \"com_ui_no_changes\": \"No changes to update\",\n  \"com_ui_no_data\": \"something needs to go here. was empty\",\n  \"com_ui_no_terms_content\": \"No terms and conditions content to display\",\n  \"com_ui_no_valid_items\": \"something needs to go here. was empty\",\n  \"com_ui_none\": \"None\",\n  \"com_ui_none_selected\": \"None selected\",\n  \"com_ui_not_used\": \"Not Used\",\n  \"com_ui_nothing_found\": \"Nothing found\",\n  \"com_ui_oauth\": \"OAuth\",\n  \"com_ui_of\": \"of\",\n  \"com_ui_off\": \"Off\",\n  \"com_ui_on\": \"On\",\n  \"com_ui_openai\": \"OpenAI\",\n  \"com_ui_page\": \"Page\",\n  \"com_ui_prev\": \"Prev\",\n  \"com_ui_preview\": \"Preview\",\n  \"com_ui_privacy_policy\": \"Privacy policy\",\n  \"com_ui_privacy_policy_url\": \"Privacy Policy URL\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"This prompt is already shared to all users\",\n  \"com_ui_prompt_name\": \"Prompt Name\",\n  \"com_ui_prompt_name_required\": \"Prompt Name is required\",\n  \"com_ui_prompt_preview_not_shared\": \"The author has not allowed collaboration for this prompt.\",\n  \"com_ui_prompt_text\": \"Text\",\n  \"com_ui_prompt_text_required\": \"Text is required\",\n  \"com_ui_prompt_update_error\": \"There was an error updating the prompt\",\n  \"com_ui_prompts\": \"Prompts\",\n  \"com_ui_prompts_allow_create\": \"Allow creating Prompts\",\n  \"com_ui_prompts_allow_share_global\": \"Allow sharing Prompts to all users\",\n  \"com_ui_prompts_allow_use\": \"Allow using Prompts\",\n  \"com_ui_provider\": \"Provider\",\n  \"com_ui_read_aloud\": \"Read aloud\",\n  \"com_ui_refresh_link\": \"Refresh link\",\n  \"com_ui_regenerate\": \"Regenerate\",\n  \"com_ui_regenerate_backup\": \"Regenerate Backup Codes\",\n  \"com_ui_regenerating\": \"Regenerating...\",\n  \"com_ui_region\": \"Region\",\n  \"com_ui_rename\": \"Rename\",\n  \"com_ui_rename_prompt\": \"Rename Prompt\",\n  \"com_ui_requires_auth\": \"Requires Authentication\",\n  \"com_ui_reset_var\": \"Reset {{0}}\",\n  \"com_ui_result\": \"Result\",\n  \"com_ui_revoke\": \"Revoke\",\n  \"com_ui_revoke_info\": \"Revoke all user provided credentials\",\n  \"com_ui_revoke_key_confirm\": \"Are you sure you want to revoke this key?\",\n  \"com_ui_revoke_key_endpoint\": \"Revoke Key for {{0}}\",\n  \"com_ui_revoke_keys\": \"Revoke Keys\",\n  \"com_ui_revoke_keys_confirm\": \"Are you sure you want to revoke all keys?\",\n  \"com_ui_role_select\": \"Role\",\n  \"com_ui_roleplay\": \"Roleplay\",\n  \"com_ui_run_code\": \"Run Code\",\n  \"com_ui_run_code_error\": \"There was an error running the code\",\n  \"com_ui_save\": \"Save\",\n  \"com_ui_save_submit\": \"Save & Submit\",\n  \"com_ui_saved\": \"Saved!\",\n  \"com_ui_schema\": \"Schema\",\n  \"com_ui_scope\": \"Scope\",\n  \"com_ui_search\": \"Search\",\n  \"com_ui_secret_key\": \"Secret Key\",\n  \"com_ui_select\": \"Select\",\n  \"com_ui_select_file\": \"Select a file\",\n  \"com_ui_select_model\": \"Select a model\",\n  \"com_ui_select_provider\": \"Select a provider\",\n  \"com_ui_select_provider_first\": \"Select a provider first\",\n  \"com_ui_select_region\": \"Select a region\",\n  \"com_ui_select_search_model\": \"Search model by name\",\n  \"com_ui_select_search_plugin\": \"Search plugin by name\",\n  \"com_ui_select_search_provider\": \"Search provider by name\",\n  \"com_ui_select_search_region\": \"Search region by name\",\n  \"com_ui_share\": \"Share\",\n  \"no_text_recognized\": \"Speech recognition is unavailable. Please contact the administrator\",\n  \"com_ui_share_create_message\": \"Your name and any messages you add after sharing stay private.\",\n  \"com_ui_share_delete_error\": \"There was an error deleting the shared link\",\n  \"com_ui_share_error\": \"There was an error sharing the chat link\",\n  \"com_ui_share_form_description\": \"something needs to go here. was empty\",\n  \"com_ui_share_link_to_chat\": \"Share link to chat\",\n  \"com_ui_share_to_all_users\": \"Share to all users\",\n  \"com_ui_share_update_message\": \"Your name, custom instructions, and any messages you add after sharing stay private.\",\n  \"com_ui_share_var\": \"Share {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Successfully deleted shared links\",\n  \"com_ui_shared_link_delete_success\": \"Successfully deleted shared link\",\n  \"com_ui_shared_link_not_found\": \"Shared link not found\",\n  \"com_ui_shared_prompts\": \"Shared Prompts\",\n  \"com_ui_shop\": \"Shopping\",\n  \"com_ui_show\": \"Show\",\n  \"com_ui_show_all\": \"Show All\",\n  \"com_ui_show_qr\": \"Show QR Code\",\n  \"com_ui_sign_in_to_domain\": \"Sign-in to {{0}}\",\n  \"com_ui_simple\": \"Simple\",\n  \"com_ui_size\": \"Size\",\n  \"com_ui_special_variables\": \"Special variables:\",\n  \"com_ui_special_variables_info\": \"Use `{{current_date}}` for the current date, and `{{current_user}}` for your given account name.\",\n  \"com_ui_speech_while_submitting\": \"Can't submit speech while a response is being generated\",\n  \"com_ui_stop\": \"Stop\",\n  \"com_ui_storage\": \"Storage\",\n  \"com_ui_submit\": \"Submit\",\n  \"com_ui_teach_or_explain\": \"Learning\",\n  \"com_ui_temporary_chat\": \"Temporary Chat\",\n  \"com_ui_terms_and_conditions\": \"Terms and Conditions\",\n  \"com_ui_terms_of_service\": \"Terms of service\",\n  \"com_ui_thinking\": \"Thinking...\",\n  \"com_ui_thoughts\": \"Thoughts\",\n  \"com_ui_token_exchange_method\": \"Token Exchange Method\",\n  \"com_ui_token_url\": \"Token URL\",\n  \"com_ui_tools\": \"Tools\",\n  \"com_ui_travel\": \"Travel\",\n  \"com_ui_unarchive\": \"Unarchive\",\n  \"com_ui_unarchive_error\": \"Failed to unarchive conversation\",\n  \"com_ui_unknown\": \"Unknown\",\n  \"com_ui_update\": \"Update\",\n  \"com_ui_upload\": \"Upload\",\n  \"com_ui_upload_code_files\": \"Upload for Code Interpreter\",\n  \"com_ui_upload_delay\": \"Uploading \\\"{{0}}\\\" is taking more time than anticipated. Please wait while the file finishes indexing for retrieval.\",\n  \"com_ui_upload_error\": \"There was an error uploading your file\",\n  \"com_ui_upload_file_search\": \"Upload for File Search\",\n  \"com_ui_upload_files\": \"Upload files\",\n  \"com_ui_upload_image\": \"Upload an image\",\n  \"com_ui_upload_image_input\": \"Upload Image\",\n  \"com_ui_upload_invalid\": \"Invalid file for upload. Must be an image not exceeding the limit\",\n  \"com_ui_upload_invalid_var\": \"Invalid file for upload. Must be an image not exceeding {{0}} MB\",\n  \"com_ui_upload_success\": \"Successfully uploaded file\",\n  \"com_ui_upload_type\": \"Select Upload Type\",\n  \"com_ui_use_2fa_code\": \"Use 2FA Code Instead\",\n  \"com_ui_use_backup_code\": \"Use Backup Code Instead\",\n  \"com_ui_use_micrphone\": \"Use microphone\",\n  \"com_ui_use_prompt\": \"Use prompt\",\n  \"com_ui_used\": \"Used\",\n  \"com_ui_variables\": \"Variables\",\n  \"com_ui_variables_info\": \"Use double braces in your text to create variables, e.g. `{{example variable}}`, to later fill when using the prompt.\",\n  \"com_ui_verify\": \"Verify\",\n  \"com_ui_version_var\": \"Version {{0}}\",\n  \"com_ui_versions\": \"Versions\",\n  \"com_ui_view_source\": \"View source chat\",\n  \"com_ui_write\": \"Writing\",\n  \"com_ui_yes\": \"Yes\",\n  \"com_ui_zoom\": \"Zoom\",\n  \"com_ui_please_enter_question\": \"Please enter your question\",\n  \"com_ui_restart\": \"Restart\",\n  \"com_ui_historical_messages\": \"Above are historical messages\",\n  \"com_ui_unknown_message_type\": \"Unknown message type\",\n  \"com_ui_required_field\": \"{{field}} is required and cannot be empty.\",\n  \"com_ui_field_length_exceeded\": \"{{field}} length cannot exceed {{max}}.\",\n  \"com_ui_please_select\": \"Please select\",\n  \"com_ui_start\": \"Start\",\n  \"com_ui_collapse\": \"Collapse\",\n  \"com_ui_expand\": \"Expand\",\n  \"com_user_message\": \"You\",\n  \"com_warning_resubmit_unsupported\": \"Resubmitting the AI message is not supported for this endpoint.\",\n  \"com_source_modal_collapse\": \"Collapse\",\n  \"com_source_modal_expand\": \"Expand\",\n  \"com_source_modal_close\": \"Close\",\n  \"com_source_modal_filter_labels\": \"Filter Labels\",\n  \"com_source_modal_filter_labels_tip\": \"The system automatically generates key information labels based on the answer. You can also manually add or remove labels. The system calculates the relevance of files and paragraphs based on these labels.\",\n  \"com_source_modal_add_custom\": \"+Custom\",\n  \"com_source_modal_source_docs\": \"Source Documents\",\n  \"com_source_modal_download_layered_pdf\": \"Download layered PDF\",\n  \"com_source_modal_download_original\": \"Download original file\",\n  \"com_source_modal_mask_name\": \"mosaic.msk\",\n  \"com_source_modal_no_files\": \"No matching source files\",\n  \"com_source_modal_file_url_invalid\": \"File URL is invalid!\",\n  \"com_msg_source_reference\": \"Reference\",\n  \"sourceFromQaLibrary\": \"This answer is sourced from the existing Q&A library.\",\n  \"com_msg_source_no_permission\": \"Due to insufficient permissions, content you cannot view has been excluded from this answer\",\n  \"com_runlog_used\": \"Used\",\n  \"com_runlog_using\": \"Using\",\n  \"com_runlog_offline\": \"Offline\",\n  \"com_runlog_flow_deleted\": \"The skill has been deleted and the name cannot be retrieved\",\n  \"com_runlog_tool_deleted\": \"The tool has been deleted and the name cannot be retrieved\",\n  \"com_runlog_searched\": \"Searched\",\n  \"com_runlog_searching\": \"Searching\",\n  \"com_runlog_knowledge_deleted\": \"The knowledge base has been deleted and the name cannot be retrieved\",\n  \"com_runlog_done\": \"Done\",\n  \"com_runlog_thinking\": \"Thinking\",\n  \"com_node_run_node\": \"node\",\n  \"com_feedback_required\": \"Feedback cannot be empty\",\n  \"com_feedback_title\": \"Feedback\",\n  \"com_bschoose_click_to_download\": \"Click to download\",\n  \"com_bschoose_confirmed\": \"Confirmed\",\n  \"com_bschoose_confirm\": \"Confirm\",\n  \"com_bs_reasoning_thinking\": \"Thinking\",\n  \"com_bs_reasoning_done\": \"Deep thinking completed\",\n  \"com_inputfiles_exceed_limit\": \"File: {{0}} exceeds {{1}}M and has been removed\",\n  \"com_ui_upload_file_type_error\": \"This application does not support uploading this file type.\",\n  \"com_inputfiles_upload_failed\": \"File upload failed: {{0}}\",\n  \"com_inputfiles_parsing\": \"Parsing...\",\n  \"com_inputfiles_uploading\": \"Uploading...\",\n  \"com_preview_old_version_unsupported\": \"Preview not supported for old file format\",\n  \"com_preview_type_unsupported\": \"This file type is not supported for preview\",\n  \"com_preview_source_paragraph\": \"Source paragraphs\",\n  \"com_search_found_webs\": \"Found {{0}} web pages\",\n  \"com_search_results\": \"Search Results\",\n  \"com_case_japan_7days\": \"Detailed 7-day Japan travel guide\",\n  \"com_case_prospectus_report\": \"Prospectus and Hejun Seven Steps reading report\",\n  \"com_case_tender_response\": \"Tender response\",\n  \"com_case_ai_products_6m\": \"AI new products in the past 6 months\",\n  \"com_case_aero_site\": \"Create an aerospace science website\",\n  \"com_case_magic_tower\": \"Magic Tower web mini game\",\n  \"com_case_featured\": \"$t(linsight) Featured cases\",\n  \"com_inputfile_exceed_limit\": \"File: {{0}} exceeds {{1}} MB and has been removed\",\n  \"com_inputfile_no_file_selected\": \"No file selected\",\n  \"com_chat_round_finished\": \"This chat round has ended\",\n  \"com_file_tip_text_only\": \"Only text in attachments is recognized\",\n  \"com_file_content_exceed_tokens\": \"File content exceeds 30k tokens\",\n  \"com_file_parse_failed_auto_removed\": \"File {{0}} parsing failed, auto removed\",\n  \"com_sop_minutes\": \"min\",\n  \"com_sop_hours\": \"hr\",\n  \"com_make_samestyle\": \"Make similar\",\n  \"com_searchResults\": \"Search Results\",\n  \"com_webSearch\": \"Web Search\",\n  \"com_searchQueryLabel\": \"Search Query:\",\n  \"com_addAnything\": \"Add anything\",\n  \"com_dropAnyFileToAdd\": \"Drop any file here to add it to the conversation\",\n  \"com_share_title\": \"Share Conversation\",\n  \"com_share_desc\": \"Anyone with the link can view this conversation.\",\n  \"com_unsupported_file_type\": \"Unsupported file type:\",\n  \"api_errors\": {\n    \"403\": \"No permission to perform this action\",\n    \"404\": \"Resource not found\",\n    \"500\": \"Server error\",\n    \"503\": \"System is busy, please wait.\",\n    \"10001\": \"SFT service not found\",\n    \"10002\": \"Invalid operation\",\n    \"10003\": \"Resource download failed\",\n    \"10004\": \"Embedding model not configured. Please set it in Workspace settings\",\n    \"10005\": \"Embedding model does not exist. Please configure it in settings\",\n    \"10006\": \"Incorrect embedding model type. Please update settings\",\n    \"10007\": \"Vector retrieval model error. Contact admin\",\n    \"10008\": \"LLM model configuration not found\",\n    \"10009\": \"LLM model configuration deleted. Please reconfigure\",\n    \"10010\": \"Provider settings removed. Please reconfigure LLM\",\n    \"10011\": \"Only LLM-type models are supported. {{model_type}} is not supported\",\n    \"10012\": \"Model {{model_name}} under {{server_name}} is offline. Contact admin\",\n    \"10013\": \"Failed to initialize LLM. Check settings or contact admin. Error: {{exception}}\",\n    \"10014\": \"ASR configuration not found\",\n    \"10015\": \"ASR configuration deleted. Please reconfigure\",\n    \"10016\": \"Provider settings removed. Please reconfigure ASR\",\n    \"10017\": \"Only ASR-type models are supported. {{model_type}} is not supported\",\n    \"10018\": \"ASR model {{model_name}} under {{server_name}} is offline\",\n    \"10019\": \"Failed to initialize ASR: {{exception}}\",\n    \"10020\": \"TTS configuration not found\",\n    \"10021\": \"TTS configuration deleted. Please reconfigure\",\n    \"10022\": \"Provider settings removed. Please reconfigure TTS\",\n    \"10023\": \"Only TTS-type models are supported. {{model_type}} is not supported\",\n    \"10024\": \"TTS model {{model_name}} under {{server_name}} is offline\",\n    \"10025\": \"Failed to initialize TTS: {{exception}}\",\n    \"10030\": \"System configuration cannot be empty\",\n    \"10031\": \"Invalid system configuration: {{exception}}\",\n    \"10040\": \"Uploaded file cannot be empty\",\n    \"10041\": \"Unsupported file format\",\n    \"10100\": \"Failed to create training task\",\n    \"10101\": \"Select at least one personal or preset dataset\",\n    \"10102\": \"Task not found\",\n    \"10103\": \"Invalid task status\",\n    \"10104\": \"Failed to cancel task\",\n    \"10105\": \"Failed to delete task\",\n    \"10106\": \"Failed to publish task\",\n    \"10107\": \"Failed to update model name\",\n    \"10108\": \"Failed to unpublish\",\n    \"10109\": \"Invalid training parameters\",\n    \"10110\": \"Model name already exists\",\n    \"10120\": \"Training file not found\",\n    \"10125\": \"Failed to obtain GPU information\",\n    \"10126\": \"Failed to fetch model list\",\n    \"10200\": \"Model not found\",\n    \"10300\": \"Component already exists\",\n    \"10301\": \"Component not found\",\n    \"10400\": \"Assistant not found\",\n    \"10401\": \"Assistant online failed: {{exception}}\",\n    \"10402\": \"Assistant name already exists\",\n    \"10403\": \"Assistant is online and cannot be edited\",\n    \"10420\": \"Assistant has been deleted\",\n    \"10421\": \"Assistant is offline and cannot chat\",\n    \"10422\": \"No inference model configured\",\n    \"10423\": \"Inference model not configured\",\n    \"10424\": \"Profile optimization model not configured\",\n    \"10499\": \"Assistant service error\",\n    \"10500\": \"Skill version not found\",\n    \"10501\": \"Cannot delete version in use\",\n    \"10502\": \"Version name already exists\",\n    \"10503\": \"Skill name already exists\",\n    \"10520\": \"Skill not found\",\n    \"10521\": \"Skill is online and cannot be edited\",\n    \"10525\": \"Workflow is online and cannot be edited\",\n    \"10526\": \"Failed to initialize workflow\",\n    \"10527\": \"Workflow input timeout\",\n    \"10528\": \"{{type}} node exceeded maximum execution count\",\n    \"10529\": \"Workflow name already exists\",\n    \"10530\": \"Template name already exists\",\n    \"10531\": \"{{type}} function upgraded. Please delete and re-add\",\n    \"10532\": \"Workflow version upgraded. Contact owner to re-edit\",\n    \"10540\": \"Server thread limit reached. Please try again later\",\n    \"10541\": \"Workflow execution failed: {{exception}}\",\n    \"10599\": \"No permission to view\",\n    \"10600\": \"Incorrect username or password\",\n    \"10601\": \"Password expired. Please update it\",\n    \"10602\": \"Password not set. Contact admin to reset\",\n    \"10603\": \"Incorrect current password\",\n    \"10604\": \"Account logged in from another device. Session ended\",\n    \"10605\": \"Username already exists\",\n    \"10606\": \"User group and role cannot be empty\",\n    \"10607\": \"Verification code error\",\n    \"10610\": \"User group contains users and cannot be deleted\",\n    \"10620\": \"User is disabled. Contact admin\",\n    \"10621\": \"Account disabled due to too many failed login attempts\",\n    \"10630\": \"User group cannot be empty\",\n    \"10640\": \"Cannot modify admin account\",\n    \"10700\": \"Tag already exists\",\n    \"10701\": \"Tag not found\",\n    \"10800\": \"Provider name already exists\",\n    \"10801\": \"Duplicate model\",\n    \"10802\": \"Failed to add provider. All models failed to initialize\",\n    \"10803\": \"Failed to add provider. Some models failed to initialize\",\n    \"10900\": \"Knowledge base name already exists\",\n    \"10901\": \"Embedding model required\",\n    \"10902\": \"Summary model invalid. Reconfigure in system model settings: {{exception}}\",\n    \"10910\": \"This version does not support segmentation changes. Create a new knowledge base\",\n    \"10911\": \"Parsed file is empty\",\n    \"10912\": \"Segments too long. Add more separators (e.g. \\\\n, 、, 。, \\\\\\\\.)\",\n    \"10913\": \"File may be corrupted\",\n    \"10914\": \"Unsupported file type\",\n    \"10915\": \"ETL service busy. Please upgrade capacity\",\n    \"10920\": \"QA similar question model not configured\",\n    \"10930\": \"Question already exists\",\n    \"10940\": \"File parsing in progress. Cannot copy\",\n    \"10941\": \"Knowledge base is empty. Cannot copy\",\n    \"10950\": \"Cannot delete files from multiple KBs at once\",\n    \"10951\": \"KB is rebuilding. Cannot change embedding model\",\n    \"10952\": \"Document parsing failed\",\n    \"10953\": \"File parsing error: {{exception}}\",\n    \"10960\": \"Not a QA knowledge base\",\n    \"10970\": \"Knowledge base not found\",\n    \"10971\": \"Knowledge base file not found\",\n    \"10980\": \"{{field_name}} conflicts with built-in metadata fields\",\n    \"10981\": \"Metadata field {{field_name}} already exists\",\n    \"10982\": \"Metadata field {{field_name}} does not exist\",\n    \"10983\": \"Built-in field {{field_name}} cannot be modified\",\n    \"10984\": \"Metadata value type error: {{error_msg}}\",\n    \"11010\": \"Invalid SOP file format\",\n    \"11011\": \"Failed to set featured SOP case\",\n    \"11020\": \"File upload failed\",\n    \"11030\": \"Usage quota exceeded. Activate with a new invite code\",\n    \"11040\": \"Failed to submit question\",\n    \"11050\": \"Vector retrieval model error. Contact admin\",\n    \"11060\": \"Manual search failed. Both vector and keyword search unavailable\",\n    \"10608\": \"Username must not exceed 30 characters\",\n    \"11070\": \"Manual search failed\",\n    \"11080\": \"Failed to initialize workspace tools\",\n    \"11090\": \"$t(bisheng) LLM error\",\n    \"11100\": \"Failed to generate SOP content\",\n    \"11110\": \"Failed to modify SOP content\",\n    \"11120\": \"Session already completed or running\",\n    \"11130\": \"Failed to start task\",\n    \"11140\": \"Failed to get queue status\",\n    \"11150\": \"Failed to add manual. Vector storage error\",\n    \"11160\": \"Failed to update manual\",\n    \"11170\": \"Failed to delete manual\",\n    \"11171\": \"{{sop_name}} content too long\",\n    \"11180\": \"Invalid invite code\",\n    \"11190\": \"Invite code already bound\",\n    \"11403\": \"No permission to view\",\n    \"12040\": \"web_search tool not found\",\n    \"12041\": \"Session not found\",\n    \"12042\": \"Agent already added\",\n    \"13001\": \"Skill deleted\",\n    \"13002\": \"Skill offline. Cannot chat\",\n    \"13003\": \"Skill compile failed. Cannot chat\",\n    \"13004\": \"Backend service error\",\n    \"13005\": \"LLM skill error: {{error}}\",\n    \"13006\": \"Document parsing error. Please re-upload\\n\\n{{error}}\",\n    \"13007\": \"Input parsing failed: {{error}}\",\n    \"13010\": \"Workflow offline. Cannot chat\",\n    \"14001\": \"Processing… try again later\",\n    \"15000\": \"Tool name already exists\",\n    \"15001\": \"Tool APIs cannot be empty\",\n    \"15002\": \"Tool not found\",\n    \"15003\": \"Invalid name: must be 1–1000 characters\",\n    \"15010\": \"Preset tool category cannot be deleted\",\n    \"15020\": \"Failed to download tool schema\",\n    \"15021\": \"Tool schema cannot be empty\",\n    \"15022\": \"OpenAPI schema parse error: {{exception}}\",\n    \"15023\": \"Server URLs must start with http or https: {{url}}\",\n    \"15024\": \"MCP config parse error: {{exception}}\",\n    \"16000\": \"Dataset name already exists\",\n    \"11111\": \"The application has been deleted\",\n    \"90001\": \"You do not have permission to access the admin backend. Please contact the administrator to request access if needed.\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/locales/es/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"La IA está componiendo la respuesta\",\n  \"com_a11y_end\": \"La IA ha finalizado su respuesta\",\n  \"com_a11y_start\": \"La IA ha comenzado su respuesta\",\n  \"com_agents_allow_editing\": \"Permitir que otros usuarios editen su agente\",\n  \"com_agents_by_librechat\": \"por LibreChat\",\n  \"com_agents_code_interpreter\": \"Cuando está habilitado, permite que su agente utilice la API del Intérprete de Código de LibreChat para ejecutar código generado de manera segura, incluyendo el procesamiento de archivos. Requiere una clave de API válida.\",\n  \"com_agents_code_interpreter_title\": \"API del Intérprete de Código\",\n  \"com_agents_create_error\": \"Hubo un error al crear su agente.\",\n  \"com_agents_description_placeholder\": \"Opcional: Describa su Agente aquí\",\n  \"com_agents_enable_file_search\": \"Habilitar búsqueda de archivos\",\n  \"com_agents_file_search_disabled\": \"Es necesario crear el Agente antes de subir archivos para la Búsqueda de Archivos.\",\n  \"com_agents_file_search_info\": \"Cuando está habilitado, se informará al agente sobre los nombres exactos de los archivos listados a continuación, permitiéndole recuperar el contexto relevante de estos archivos.\",\n  \"com_agents_instructions_placeholder\": \"Las instrucciones del sistema que utiliza el agente\",\n  \"com_agents_missing_provider_model\": \"Por favor, seleccione un proveedor y un modelo antes de crear un agente.\",\n  \"com_agents_name_placeholder\": \"Opcional: El nombre del agente\",\n  \"com_agents_no_access\": \"No tiene acceso para editar este agente\",\n  \"com_agents_not_available\": \"Agente no disponible\",\n  \"com_agents_search_name\": \"Buscar agentes por nombre\",\n  \"com_agents_update_error\": \"Hubo un error al actualizar su agente.\",\n  \"com_assistants_actions\": \"Acciones\",\n  \"com_assistants_actions_disabled\": \"Necesita crear un asistente antes de añadir acciones.\",\n  \"com_assistants_actions_info\": \"Permita que su Asistente recupere información o realice acciones a través de API's\",\n  \"com_assistants_add_actions\": \"Añadir Acciones\",\n  \"com_assistants_add_tools\": \"Añadir Herramientas\",\n  \"com_assistants_append_date\": \"Añadir Fecha y Hora Actual\",\n  \"com_assistants_append_date_tooltip\": \"Cuando está habilitado, la fecha y hora actual del cliente se adjuntarán a las instrucciones del sistema del asistente.\",\n  \"com_assistants_available_actions\": \"Acciones Disponibles\",\n  \"com_assistants_capabilities\": \"Capacidades\",\n  \"com_assistants_code_interpreter\": \"Intérprete de Código\",\n  \"com_assistants_code_interpreter_files\": \"Los siguientes archivos solo están disponibles para el Intérprete de Código:\",\n  \"com_assistants_code_interpreter_info\": \"El Intérprete de Código permite al asistente escribir y ejecutar código. Esta herramienta puede procesar archivos con diversos formatos y datos, y generar archivos como gráficos.\",\n  \"com_assistants_completed_action\": \"Hablé con {{0}}\",\n  \"com_assistants_completed_function\": \"Ejecuté {{0}}\",\n  \"com_assistants_conversation_starters\": \"Iniciadores de Conversación\",\n  \"com_assistants_conversation_starters_placeholder\": \"Ingrese un iniciador de conversación\",\n  \"com_assistants_create_error\": \"Hubo un error al crear su asistente.\",\n  \"com_assistants_create_success\": \"Creado con éxito\",\n  \"com_assistants_delete_actions_error\": \"Hubo un error al eliminar la acción.\",\n  \"com_assistants_delete_actions_success\": \"Acción eliminada del Asistente con éxito\",\n  \"com_assistants_description_placeholder\": \"Opcional: Describa su Asistente aquí\",\n  \"com_assistants_domain_info\": \"El Asistente envió esta información a {{0}}\",\n  \"com_assistants_file_search\": \"Búsqueda de Archivos\",\n  \"com_assistants_file_search_info\": \"Adjuntar almacenes vectoriales para la Búsqueda de Archivos aún no está soportado. Puede adjuntarlos desde el Área de Pruebas del Proveedor o adjuntar archivos a los mensajes para la búsqueda de archivos en una conversación específica.\",\n  \"com_assistants_function_use\": \"El Asistente usó {{0}}\",\n  \"com_assistants_image_vision\": \"Visión de Imagen\",\n  \"com_assistants_instructions_placeholder\": \"Las instrucciones del sistema que utiliza el asistente\",\n  \"com_assistants_knowledge\": \"Conocimiento\",\n  \"com_assistants_knowledge_disabled\": \"El Asistente debe ser creado, y el Intérprete de Código o la Recuperación deben estar habilitados y guardados antes de subir archivos como Conocimiento.\",\n  \"com_assistants_knowledge_info\": \"Si sube archivos en Conocimiento, las conversaciones con su Asistente pueden incluir el contenido de los archivos.\",\n  \"com_assistants_max_starters_reached\": \"Se alcanzó el número máximo de iniciadores de conversación\",\n  \"com_assistants_name_placeholder\": \"Opcional: El nombre del asistente\",\n  \"com_assistants_non_retrieval_model\": \"La búsqueda de archivos no está habilitada en este modelo. Por favor, seleccione otro modelo.\",\n  \"com_assistants_retrieval\": \"Recuperación\",\n  \"com_assistants_running_action\": \"Ejecutando acción\",\n  \"com_assistants_search_name\": \"Buscar asistentes por nombre\",\n  \"com_assistants_update_actions_error\": \"Hubo un error al crear o actualizar la acción.\",\n  \"com_assistants_update_actions_success\": \"Acción creada o actualizada con éxito\",\n  \"com_assistants_update_error\": \"Hubo un error al actualizar su asistente.\",\n  \"com_assistants_update_success\": \"Actualizado con éxito\",\n  \"com_auth_already_have_account\": \"¿Ya tiene una cuenta?\",\n  \"com_auth_back_to_login\": \"Volver al inicio de sesión\",\n  \"com_auth_click\": \"Haga clic\",\n  \"com_auth_click_here\": \"Haz clic aquí\",\n  \"com_auth_continue\": \"Continuar\",\n  \"com_auth_create_account\": \"Crear su cuenta\",\n  \"com_auth_discord_login\": \"Continuar con Discord\",\n  \"com_auth_email\": \"Correo electrónico\",\n  \"com_auth_email_address\": \"Dirección de correo electrónico\",\n  \"com_auth_email_max_length\": \"El correo electrónico no debe tener más de 120 caracteres\",\n  \"com_auth_email_min_length\": \"El correo electrónico debe tener al menos 6 caracteres\",\n  \"com_auth_email_pattern\": \"Debe ingresar una dirección de correo electrónico válida\",\n  \"com_auth_email_required\": \"Se requiere correo electrónico\",\n  \"com_auth_email_resend_link\": \"Reenviar correo electrónico\",\n  \"com_auth_email_resent_failed\": \"No se pudo reenviar el correo electrónico de verificación\",\n  \"com_auth_email_resent_success\": \"El correo electrónico de verificación ha sido reenviado exitosamente\",\n  \"com_auth_email_verification_failed\": \"La verificación del correo electrónico ha fallado\",\n  \"com_auth_email_verification_failed_token_missing\": \"La verificación falló, falta el token de seguridad\",\n  \"com_auth_email_verification_in_progress\": \"Verificando su correo electrónico, por favor espere\",\n  \"com_auth_email_verification_invalid\": \"Verificación de correo electrónico no válida\",\n  \"com_auth_email_verification_redirecting\": \"Redirigiendo en {{0}} segundos...\",\n  \"com_auth_email_verification_resend_prompt\": \"¿No recibió el correo electrónico?\",\n  \"com_auth_email_verification_success\": \"Correo electrónico verificado exitosamente\",\n  \"com_auth_error_create\": \"Hubo un error al intentar registrar su cuenta. Inténtelo de nuevo.\",\n  \"com_auth_error_invalid_reset_token\": \"Este token de restablecimiento de contraseña ya no es válido.\",\n  \"com_auth_error_login\": \"No se puede iniciar sesión con la información proporcionada. Verifique sus credenciales y vuelva a intentarlo.\",\n  \"com_auth_error_login_ban\": \"Su cuenta ha sido bloqueada temporalmente debido a violaciones de nuestro servicio.\",\n  \"com_auth_error_login_rl\": \"Demasiados intentos de inicio de sesión en un corto período de tiempo. Inténtelo de nuevo más tarde.\",\n  \"com_auth_error_login_server\": \"Hubo un error interno del servidor. Espere unos momentos y vuelva a intentarlo.\",\n  \"com_auth_error_login_unverified\": \"Su cuenta no ha sido verificada. Por favor, revise su correo electrónico para encontrar el enlace de verificación.\",\n  \"com_auth_facebook_login\": \"Continuar con Facebook\",\n  \"com_auth_full_name\": \"Nombre completo\",\n  \"com_auth_github_login\": \"Continuar con Github\",\n  \"com_auth_google_login\": \"Continuar con Google\",\n  \"com_auth_here\": \"AQUÍ\",\n  \"com_auth_login\": \"Iniciar sesión\",\n  \"com_auth_login_with_new_password\": \"Ahora puede iniciar sesión con su nueva contraseña.\",\n  \"com_auth_name_max_length\": \"El nombre debe tener menos de 80 caracteres\",\n  \"com_auth_name_min_length\": \"El nombre debe tener al menos 3 caracteres\",\n  \"com_auth_name_required\": \"Se requiere nombre\",\n  \"com_auth_no_account\": \"¿No tiene una cuenta?\",\n  \"com_auth_password\": \"Contraseña\",\n  \"com_auth_password_confirm\": \"Confirmar contraseña\",\n  \"com_auth_password_forgot\": \"¿Olvidó su contraseña?\",\n  \"com_auth_password_max_length\": \"La contraseña debe tener menos de 128 caracteres\",\n  \"com_auth_password_min_length\": \"La contraseña debe tener al menos 8 caracteres\",\n  \"com_auth_password_not_match\": \"Las contraseñas no coinciden\",\n  \"com_auth_password_required\": \"Se requiere contraseña\",\n  \"com_auth_registration_success_generic\": \"Por favor, revise su correo electrónico para verificar su dirección.\",\n  \"com_auth_registration_success_insecure\": \"Registro completado exitosamente.\",\n  \"com_auth_reset_password\": \"Restablecer su contraseña\",\n  \"com_auth_reset_password_if_email_exists\": \"Si existe una cuenta con ese correo electrónico, se le ha enviado un mensaje con instrucciones para restablecer su contraseña. Por favor, asegúrese de revisar su carpeta de correo no deseado.\",\n  \"com_auth_reset_password_link_sent\": \"Correo electrónico enviado\",\n  \"com_auth_reset_password_success\": \"Éxito al restablecer la contraseña\",\n  \"com_auth_sign_in\": \"Iniciar sesión\",\n  \"com_auth_sign_up\": \"Regístrese\",\n  \"com_auth_submit_registration\": \"Enviar registro\",\n  \"com_auth_to_reset_your_password\": \"para restablecer su contraseña.\",\n  \"com_auth_to_try_again\": \"para intentar de nuevo.\",\n  \"com_auth_username\": \"Nombre de usuario (opcional)\",\n  \"com_auth_username_max_length\": \"El nombre de usuario debe tener menos de 20 caracteres\",\n  \"com_auth_username_min_length\": \"El nombre de usuario debe tener al menos 2 caracteres\",\n  \"com_auth_welcome_back\": \"Bienvenido de nuevo\",\n  \"com_click_to_download\": \"(haga clic aquí para descargar)\",\n  \"com_download_expired\": \"Descarga expirada\",\n  \"com_download_expires\": \"(haga clic aquí para descargar - expira el {{0}})\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agente\",\n  \"com_endpoint_agent_model\": \"Modelo de agente (Recomendado: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Por favor seleccione un Agente\",\n  \"com_endpoint_ai\": \"IA\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Número máximo de tokens que se pueden generar en la respuesta. Especifique un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"El almacenamiento en caché de instrucciones permite reutilizar contextos o instrucciones extensas entre llamadas a la API, reduciendo costos y tiempo de respuesta\",\n  \"com_endpoint_anthropic_temp\": \"Rango de 0 a 1. Utilice una temperatura más cercana a 0 para tareas analíticas/de opción múltiple y más cercana a 1 para tareas creativas y generativas. Recomendamos alterar esto o Top P, pero no ambos.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k cambia la forma en que el modelo selecciona tokens para la salida. Un top-k de 1 significa que el token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación codiciosa), mientras que un top-k de 3 significa que el siguiente token se selecciona entre los 3 tokens más probables (usando temperatura).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p cambia la forma en que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde los más K (ver parámetro topK) probables hasta los menos probables hasta que la suma de sus probabilidades sea igual al valor top-p.\",\n  \"com_endpoint_assistant\": \"Asistente\",\n  \"com_endpoint_assistant_model\": \"Modelo de asistente\",\n  \"com_endpoint_assistant_placeholder\": \"Por favor, seleccione un Asistente desde el panel lateral derecho\",\n  \"com_endpoint_completion\": \"Finalización\",\n  \"com_endpoint_completion_model\": \"Modelo de finalización (Recomendado: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Haz clic aquí\",\n  \"com_endpoint_config_google_api_info\": \"Para obtener tu clave de la API de Lenguaje Generativo (para Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Clave API de Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(de Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Clave de cuenta de servicio de Google\",\n  \"com_endpoint_config_key\": \"Establecer clave API\",\n  \"com_endpoint_config_key_encryption\": \"Tu clave será encriptada y eliminada en\",\n  \"com_endpoint_config_key_for\": \"Establecer clave API para\",\n  \"com_endpoint_config_key_google_need_to\": \"Necesitas\",\n  \"com_endpoint_config_key_google_service_account\": \"Crear una Cuenta de Servicio\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Habilitar el Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API en Google Cloud, luego\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Asegúrate de hacer clic en 'Crear y continuar' para otorgar al menos el rol de 'Usuario de Vertex AI'. Por último, crea una clave JSON para importar aquí.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importar clave JSON de cuenta de servicio.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Clave JSON de cuenta de servicio no válida, ¿importaste el archivo correcto?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Clave JSON de cuenta de servicio importada correctamente\",\n  \"com_endpoint_config_key_name\": \"Clave\",\n  \"com_endpoint_config_key_never_expires\": \"Su clave nunca expirará\",\n  \"com_endpoint_config_placeholder\": \"Establezca su clave en el menú del encabezado para chatear.\",\n  \"com_endpoint_config_value\": \"Ingresar valor para\",\n  \"com_endpoint_context\": \"Contexto\",\n  \"com_endpoint_context_info\": \"La cantidad máxima de tokens que se pueden utilizar para el contexto. Utilice esto para controlar cuántos tokens se envían por solicitud. Si no se especifica, se utilizarán los valores predeterminados del sistema basados en el tamaño de contexto conocido de los modelos. Establecer valores más altos puede resultar en errores y/o un mayor costo de tokens.\",\n  \"com_endpoint_context_tokens\": \"Máximo de tokens de contexto\",\n  \"com_endpoint_custom_name\": \"Nombre personalizado\",\n  \"com_endpoint_default\": \"predeterminado\",\n  \"com_endpoint_default_blank\": \"predeterminado: en blanco\",\n  \"com_endpoint_default_empty\": \"predeterminado: vacío\",\n  \"com_endpoint_default_with_num\": \"predeterminado: {{0}}\",\n  \"com_endpoint_examples\": \" Configuraciones preestablecidas\",\n  \"com_endpoint_export\": \"Exportar\",\n  \"com_endpoint_export_share\": \"Exportar/Compartir\",\n  \"com_endpoint_frequency_penalty\": \"Penalización de frecuencia\",\n  \"com_endpoint_func_hover\": \"Habilitar el uso de Plugins como funciones de OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Establecer un nombre personalizado para Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Número máximo de tokens que se pueden generar en la respuesta. Especifique un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas.\",\n  \"com_endpoint_google_temp\": \"Los valores más altos = más aleatorios, mientras que los valores más bajos = más enfocados y deterministas. Recomendamos alterar esto o Top P, pero no ambos.\",\n  \"com_endpoint_google_topk\": \"Top-k cambia la forma en que el modelo selecciona tokens para la salida. Un top-k de 1 significa que el token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación codiciosa), mientras que un top-k de 3 significa que el siguiente token se selecciona entre los 3 tokens más probables (usando temperatura).\",\n  \"com_endpoint_google_topp\": \"Top-p cambia la forma en que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde los más K (ver parámetro topK) probables hasta los menos probables hasta que la suma de sus probabilidades sea igual al valor top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Anular instrucciones\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Anula las instrucciones del asistente. Esto es útil para modificar el comportamiento por ejecución.\",\n  \"com_endpoint_max_output_tokens\": \"Tokens de Salida Máximos\",\n  \"com_endpoint_message\": \"Mensaje\",\n  \"com_endpoint_message_new\": \"Mensaje {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Edita tu mensaje o regénera.\",\n  \"com_endpoint_my_preset\": \"Mi configuración preestablecida\",\n  \"com_endpoint_no_presets\": \"Aún no hay configuraciones preestablecidas, utiliza el botón de configuración para crear una\",\n  \"com_endpoint_open_menu\": \"Abrir menú\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Establecer un nombre personalizado para ChatGPT\",\n  \"com_endpoint_openai_detail\": \"La resolución para las solicitudes de Vision. \\\"Baja\\\" es más económica y rápida, \\\"Alta\\\" es más detallada y costosa, y \\\"Automática\\\" elegirá automáticamente entre las dos en función de la resolución de la imagen.\",\n  \"com_endpoint_openai_freq\": \"Número entre -2.0 y 2.0. Los valores positivos penalizan los nuevos tokens basados en su frecuencia existente en el texto hasta el momento, disminuyendo la probabilidad del modelo de repetir la misma línea textualmente.\",\n  \"com_endpoint_openai_max\": \"Los tokens máximos a generar. La longitud total de los tokens de entrada y los tokens generados está limitada por la longitud del contexto del modelo.\",\n  \"com_endpoint_openai_max_tokens\": \"Campo opcional `max_tokens`, que representa el número máximo de tokens que se pueden generar en la finalización del chat.\\n\\nLa longitud total de los tokens de entrada y los tokens generados está limitada por la longitud del contexto del modelo. Puede experimentar errores si este número excede los tokens máximos de contexto.\",\n  \"com_endpoint_openai_pres\": \"Número entre -2.0 y 2.0. Los valores positivos penalizan los nuevos tokens basados en si aparecen o no en el texto hasta el momento, aumentando la probabilidad del modelo de hablar sobre nuevos temas.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Establecer instrucciones personalizadas para incluir en el Mensaje del sistema. Predeterminado: ninguno\",\n  \"com_endpoint_openai_resend\": \"Reenviar todas las imágenes adjuntas previamente. Nota: esto puede aumentar significativamente el costo de tokens y puede experimentar errores con muchos archivos adjuntos de imágenes.\",\n  \"com_endpoint_openai_resend_files\": \"Reenviar todos los archivos adjuntos anteriormente. Nota: esto aumentará el costo de tokens y puede experimentar errores con muchos archivos adjuntos.\",\n  \"com_endpoint_openai_stop\": \"Hasta 4 secuencias donde la API dejará de generar más tokens.\",\n  \"com_endpoint_openai_temp\": \"Los valores más altos = más aleatorios, mientras que los valores más bajos = más enfocados y deterministas. Recomendamos alterar esto o Top P, pero no ambos.\",\n  \"com_endpoint_openai_topp\": \"Una alternativa al muestreo con temperatura, llamada muestreo de núcleo, donde el modelo considera los resultados de los tokens con la masa de probabilidad superior al top_p. Entonces, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad superior al 10%. Recomendamos alterar esto o la temperatura, pero no ambos.\",\n  \"com_endpoint_output\": \"Salida\",\n  \"com_endpoint_plug_image_detail\": \"Detalle de imagen\",\n  \"com_endpoint_plug_resend_files\": \"Reenviar archivos\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Establecer instrucciones personalizadas para incluir en el Mensaje del sistema. Predeterminado: ninguno\",\n  \"com_endpoint_plug_skip_completion\": \"Omitir finalización\",\n  \"com_endpoint_plug_use_functions\": \"Utilizar funciones\",\n  \"com_endpoint_presence_penalty\": \"Penalización de presencia\",\n  \"com_endpoint_preset\": \"configuración preestablecida\",\n  \"com_endpoint_preset_default\": \"es ahora la configuración preestablecida predeterminada.\",\n  \"com_endpoint_preset_default_item\": \"Predeterminado:\",\n  \"com_endpoint_preset_default_none\": \"No hay configuración preestablecida predeterminada activa.\",\n  \"com_endpoint_preset_default_removed\": \"ya no es la configuración preestablecida predeterminada.\",\n  \"com_endpoint_preset_delete_confirm\": \"¿Estás seguro de que quieres eliminar esta configuración preestablecida?\",\n  \"com_endpoint_preset_delete_error\": \"Hubo un error al eliminar tu configuración preestablecida. Por favor, inténtalo de nuevo.\",\n  \"com_endpoint_preset_import\": \"¡Configuración preestablecida importada!\",\n  \"com_endpoint_preset_import_error\": \"Hubo un error al importar tu configuración preestablecida. Por favor, inténtalo de nuevo.\",\n  \"com_endpoint_preset_name\": \"Nombre de la configuración preestablecida\",\n  \"com_endpoint_preset_save_error\": \"Hubo un error al guardar tu configuración preestablecida. Por favor, inténtalo de nuevo.\",\n  \"com_endpoint_preset_selected\": \"¡Configuración preestablecida activa!\",\n  \"com_endpoint_preset_selected_title\": \"¡Activo!\",\n  \"com_endpoint_preset_title\": \"Configuración preestablecida\",\n  \"com_endpoint_presets\": \"configuraciones preestablecidas\",\n  \"com_endpoint_presets_clear_warning\": \"¿Estás seguro de que quieres borrar todas las configuraciones preestablecidas? Esto es irreversible.\",\n  \"com_endpoint_prompt_cache\": \"Utilizar caché de instrucciones\",\n  \"com_endpoint_prompt_prefix\": \"Instrucciones personalizadas\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Instrucciones adicionales\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Establecer instrucciones o contexto adicionales además de las instrucciones principales del Asistente. Se ignora si está vacío.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Configurar instrucciones personalizadas o contexto. Se ignora si está vacío.\",\n  \"com_endpoint_save_as_preset\": \"Guardar como configuración preestablecida\",\n  \"com_endpoint_search\": \"Buscar punto de conexión por nombre\",\n  \"com_endpoint_set_custom_name\": \"Establece un nombre personalizado, en caso de que puedas encontrar esta configuración preestablecida\",\n  \"com_endpoint_skip_hover\": \"Habilitar omitir el paso de finalización, que revisa la respuesta final y los pasos generados\",\n  \"com_endpoint_stop\": \"Secuencias de detención\",\n  \"com_endpoint_stop_placeholder\": \"Separe los valores presionando `Intro`\",\n  \"com_endpoint_temperature\": \"Temperatura\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Utilizar asistente activo\",\n  \"com_error_expired_user_key\": \"La clave proporcionada para {{0}} expiró en {{1}}. Por favor, proporcione una clave nueva e inténtelo de nuevo.\",\n  \"com_error_files_dupe\": \"Se detectó un archivo duplicado\",\n  \"com_error_files_empty\": \"No se permiten archivos vacíos.\",\n  \"com_error_files_process\": \"Se produjo un error al procesar el archivo.\",\n  \"com_error_files_unsupported_capability\": \"No hay capacidades habilitadas que admitan este tipo de archivo.\",\n  \"com_error_files_upload\": \"Se produjo un error durante la subida del archivo\",\n  \"com_error_files_upload_canceled\": \"La solicitud de carga del archivo fue cancelada. Nota: es posible que la carga del archivo aún esté en proceso y necesite ser eliminada manualmente.\",\n  \"com_error_files_validation\": \"Se produjo un error durante la validación del archivo.\",\n  \"com_error_input_length\": \"El conteo de tokens del último mensaje es demasiado largo y excede el límite permitido ({{0}}). Por favor, acorte su mensaje, ajuste el tamaño máximo del contexto desde los parámetros de conversación, o bifurque la conversación para continuar.\",\n  \"com_error_invalid_user_key\": \"Clave proporcionada no válida. Por favor proporcione una clave válida e inténtelo de nuevo.\",\n  \"com_error_moderation\": \"Parece que el contenido enviado ha sido marcado por nuestro sistema de moderación por no estar alineado con nuestras pautas comunitarias. No podemos proceder con este tema específico. Si tiene alguna otra pregunta o tema que le gustaría explorar, por favor edite su mensaje o cree una nueva conversación.\",\n  \"com_error_no_base_url\": \"No se encontró URL base. Por favor proporcione una y vuelva a intentarlo.\",\n  \"com_error_no_user_key\": \"No se encontró ninguna clave. Por favor, proporcione una clave e inténtelo de nuevo.\",\n  \"com_files_filter\": \"Filtrar archivos...\",\n  \"com_files_no_results\": \"Sin resultados.\",\n  \"com_files_number_selected\": \"{{0}} de {{1}} archivo(s) seleccionado(s)\",\n  \"com_generated_files\": \"Archivos generados:\",\n  \"com_hide_examples\": \"Ocultar ejemplos\",\n  \"com_nav_account_settings\": \"Configuración de la cuenta\",\n  \"com_nav_always_make_prod\": \"Convertir siempre las nuevas versiones en producción\",\n  \"com_nav_archive_created_at\": \"CreadoEn\",\n  \"com_nav_archive_name\": \"Nombre\",\n  \"com_nav_archived_chats\": \"Archivadas\",\n  \"com_nav_archived_chats_empty\": \"No tienes conversaciones archivadas.\",\n  \"com_nav_at_command\": \"Comando @\",\n  \"com_nav_at_command_description\": \"Alternar comando \\\"@\\\" para cambiar entre puntos de conexión, modelos, ajustes predefinidos, etc.\",\n  \"com_nav_audio_play_error\": \"Error al reproducir el audio: {{0}}\",\n  \"com_nav_audio_process_error\": \"Error al procesar el audio: {{0}}\",\n  \"com_nav_auto_scroll\": \"Desplazamiento automático al más reciente al abrir\",\n  \"com_nav_auto_send_prompts\": \"Envío automático de mensajes\",\n  \"com_nav_auto_send_text\": \"Envío automático de texto\",\n  \"com_nav_auto_send_text_disabled\": \"Establecer -1 para deshabilitar\",\n  \"com_nav_auto_transcribe_audio\": \"Transcribir audio automáticamente\",\n  \"com_nav_automatic_playback\": \"Reproducción automática del último mensaje\",\n  \"com_nav_balance\": \"Balance\",\n  \"com_nav_browser\": \"Navegador\",\n  \"com_nav_buffer_append_error\": \"Problema con la transmisión de audio. La reproducción podría interrumpirse.\",\n  \"com_nav_change_picture\": \"Cambiar imagen\",\n  \"com_nav_chat_commands\": \"Comandos de chat\",\n  \"com_nav_chat_commands_info\": \"Estos comandos se activan al escribir caracteres específicos al inicio de su mensaje. Cada comando se activa mediante su prefijo designado. Puede desactivarlos si utiliza frecuentemente estos caracteres para comenzar mensajes.\",\n  \"com_nav_chat_direction\": \"Dirección del chat\",\n  \"com_nav_clear_all_chats\": \"Borrar todos los chats\",\n  \"com_nav_clear_cache_confirm_message\": \"¿Está seguro de que desea borrar el caché?\",\n  \"com_nav_clear_conversation\": \"Borrar conversaciones\",\n  \"com_nav_clear_conversation_confirm_message\": \"¿Estás seguro de que quieres borrar todas las conversaciones? Esta acción es irreversible.\",\n  \"com_nav_close_sidebar\": \"Cerrar barra lateral\",\n  \"com_nav_commands\": \"Comandos\",\n  \"com_nav_confirm_clear\": \"Confirmar borrado\",\n  \"com_nav_conversation_mode\": \"Modo de conversación\",\n  \"com_nav_convo_menu_options\": \"Opciones del menú de conversación\",\n  \"com_nav_db_sensitivity\": \"Sensibilidad en decibelios\",\n  \"com_nav_delete_account\": \"Eliminar cuenta\",\n  \"com_nav_delete_account_button\": \"Eliminar mi cuenta permanentemente\",\n  \"com_nav_delete_account_confirm\": \"Eliminar cuenta - ¿Está seguro?\",\n  \"com_nav_delete_account_email_placeholder\": \"Por favor ingrese el correo electrónico de su cuenta\",\n  \"com_nav_delete_cache_storage\": \"Eliminar almacenamiento caché de TTS\",\n  \"com_nav_delete_data_info\": \"Se eliminarán todos sus datos\",\n  \"com_nav_delete_warning\": \"ADVERTENCIA: Esta acción eliminará su cuenta de forma permanente.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Habilitar caché de texto a voz\",\n  \"com_nav_enable_cloud_browser_voice\": \"Usar voces basadas en la nube\",\n  \"com_nav_enabled\": \"Habilitado\",\n  \"com_nav_engine\": \"Motor\",\n  \"com_nav_enter_to_send\": \"Enviar mensaje con la tecla Enter\",\n  \"com_nav_export\": \"Exportar\",\n  \"com_nav_export_all_message_branches\": \"Exportar todas las ramas de mensajes\",\n  \"com_nav_export_conversation\": \"Exportar conversación\",\n  \"com_nav_export_filename\": \"Nombre de archivo\",\n  \"com_nav_export_filename_placeholder\": \"Establecer el nombre de archivo\",\n  \"com_nav_export_include_endpoint_options\": \"Incluir opciones de punto final\",\n  \"com_nav_export_recursive\": \"Recursivo\",\n  \"com_nav_export_recursive_or_sequential\": \"¿Recursivo o secuencial?\",\n  \"com_nav_export_type\": \"Tipo\",\n  \"com_nav_external\": \"Externo\",\n  \"com_nav_font_size\": \"Tamaño de fuente\",\n  \"com_nav_font_size_base\": \"Mediano\",\n  \"com_nav_font_size_lg\": \"Grande\",\n  \"com_nav_font_size_sm\": \"Pequeño\",\n  \"com_nav_font_size_xl\": \"Extra grande\",\n  \"com_nav_font_size_xs\": \"Extra pequeño\",\n  \"com_nav_help_faq\": \"Ayuda y preguntas frecuentes\",\n  \"com_nav_hide_panel\": \"Ocultar el panel lateral derecho\",\n  \"com_nav_info_code_artifacts\": \"Permite mostrar artefactos de código experimentales junto al chat\",\n  \"com_nav_info_custom_prompt_mode\": \"Cuando está habilitado, no se incluirá el mensaje del sistema predeterminado para artefactos. En este modo, todas las instrucciones para generar artefactos deberán proporcionarse manualmente.\",\n  \"com_nav_info_enter_to_send\": \"Cuando está habilitado, al presionar `ENTER` se enviará su mensaje. Cuando está deshabilitado, al presionar Enter se agregará una nueva línea, y necesitará presionar `CTRL + ENTER` / `⌘ + ENTER` para enviar su mensaje.\",\n  \"com_nav_info_fork_change_default\": \"\\\"Mostrar únicamente mensajes visibles\\\" incluye solo la ruta directa hacia el mensaje seleccionado. \\\"Incluir ramas relacionadas\\\" añade las ramificaciones a lo largo de la ruta. \\\"Incluir todo desde/hacia aquí\\\" incluye todos los mensajes y ramificaciones conectados.\",\n  \"com_nav_info_fork_split_target_setting\": \"Cuando está habilitado, la bifurcación comenzará desde el mensaje objetivo hasta el último mensaje de la conversación, según el comportamiento seleccionado.\",\n  \"com_nav_info_include_shadcnui\": \"Cuando está habilitado, se incluirán instrucciones para el uso de los componentes de shadcn/ui. shadcn/ui es una colección de componentes reutilizables construidos utilizando Radix UI y Tailwind CSS. Nota: estas son instrucciones extensas, debe habilitarlas solo si es importante para usted informar al LLM sobre las importaciones y componentes correctos. Para más información sobre estos componentes, visite: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Cuando está habilitado, el código LaTeX en los mensajes se mostrará como ecuaciones matemáticas. Si usted no necesita el renderizado de LaTeX, puede deshabilitarlo para mejorar el rendimiento.\",\n  \"com_nav_info_save_draft\": \"Cuando está habilitado, el texto y los archivos adjuntos que ingrese en el formulario de chat se guardarán automáticamente como borradores en su dispositivo local. Estos borradores estarán disponibles incluso si recarga la página o cambia a una conversación diferente. Los borradores se almacenan localmente en su dispositivo y se eliminan una vez que el mensaje es enviado.\",\n  \"com_nav_info_user_name_display\": \"Cuando está habilitado, se mostrará su nombre de usuario sobre cada mensaje que envíe. Cuando está deshabilitado, solo verá \\\"Usted\\\" sobre sus mensajes.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Detección automática\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Idioma\",\n  \"com_nav_latex_parsing\": \"Analizar LaTeX en los mensajes (puede afectar el rendimiento)\",\n  \"com_nav_log_out\": \"Cerrar sesión\",\n  \"com_nav_long_audio_warning\": \"Los textos más extensos tomarán más tiempo en procesarse.\",\n  \"com_nav_maximize_chat_space\": \"Maximizar espacio del chat\",\n  \"com_nav_modular_chat\": \"Habilitar el cambio de puntos finales en medio de una conversación\",\n  \"com_nav_my_files\": \"Mis archivos\",\n  \"com_nav_no_search_results\": \"No se encontraron resultados de búsqueda\",\n  \"com_nav_not_supported\": \"No soportado\",\n  \"com_nav_open_sidebar\": \"Abrir barra lateral\",\n  \"com_nav_playback_rate\": \"Velocidad de reproducción de audio\",\n  \"com_nav_plugin_auth_error\": \"Hubo un error al intentar autenticar este plugin. Por favor, inténtalo de nuevo.\",\n  \"com_nav_plugin_install\": \"Instalar\",\n  \"com_nav_plugin_search\": \"Buscar plugins\",\n  \"com_nav_plugin_store\": \"Tienda de plugins\",\n  \"com_nav_plugin_uninstall\": \"Desinstalar\",\n  \"com_nav_plus_command\": \"+ Comando\",\n  \"com_nav_plus_command_description\": \"Alternar comando ' + ' para agregar una configuración de respuestas múltiples\",\n  \"com_nav_profile_picture\": \"Imagen de perfil\",\n  \"com_nav_save_drafts\": \"Guardar borradores localmente\",\n  \"com_nav_search_placeholder\": \"Buscar mensajes\",\n  \"com_nav_send_message\": \"Enviar mensaje\",\n  \"com_nav_setting_account\": \"Cuenta\",\n  \"com_nav_setting_beta\": \"Funciones beta\",\n  \"com_nav_setting_chat\": \"Configuración del chat\",\n  \"com_nav_setting_data\": \"Controles de datos\",\n  \"com_nav_setting_general\": \"General\",\n  \"com_nav_setting_speech\": \"Voz y habla\",\n  \"com_nav_settings\": \"Configuración\",\n  \"com_nav_shared_links\": \"Links Compartidos\",\n  \"com_nav_show_code\": \"Mostrar siempre el código cuando se use el intérprete de código\",\n  \"com_nav_slash_command\": \"Comando /\",\n  \"com_nav_slash_command_description\": \"Alternar comando '/' para seleccionar un mensaje predefinido mediante el teclado\",\n  \"com_nav_source_buffer_error\": \"Error al configurar la reproducción de audio. Por favor, actualice la página.\",\n  \"com_nav_speech_cancel_error\": \"No se pudo detener la reproducción de audio. Es posible que necesite actualizar la página.\",\n  \"com_nav_speech_to_text\": \"Voz a texto\",\n  \"com_nav_stop_generating\": \"Detener generación\",\n  \"com_nav_text_to_speech\": \"Texto a voz\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Oscuro\",\n  \"com_nav_theme_light\": \"Claro\",\n  \"com_nav_theme_system\": \"Sistema\",\n  \"com_nav_tool_dialog\": \"Herramientas del asistente\",\n  \"com_nav_tool_dialog_agents\": \"Herramientas del agente\",\n  \"com_nav_tool_dialog_description\": \"El asistente debe guardarse para que las selecciones de herramientas persistan.\",\n  \"com_nav_tool_remove\": \"Eliminar\",\n  \"com_nav_tool_search\": \"Buscar herramientas\",\n  \"com_nav_tts_init_error\": \"Error al inicializar la conversión de texto a voz: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"La función de texto a voz para el motor seleccionado no es compatible con este navegador.\",\n  \"com_nav_user\": \"USUARIO\",\n  \"com_nav_user_msg_markdown\": \"Mostrar mensajes de usuario en formato markdown\",\n  \"com_nav_user_name_display\": \"Mostrar nombre de usuario en los mensajes\",\n  \"com_nav_voice_select\": \"Voz\",\n  \"com_nav_voices_fetch_error\": \"No se pudieron recuperar las opciones de voz. Por favor, verifique su conexión a Internet.\",\n  \"com_nav_welcome_agent\": \"Seleccione un agente\",\n  \"com_nav_welcome_assistant\": \"Por favor, selecciona un asistente\",\n  \"com_nav_welcome_message\": \"¿En qué puedo ayudarte hoy?\",\n  \"com_show_agent_settings\": \"Mostrar configuración del agente\",\n  \"com_show_completion_settings\": \"Mostrar configuración de completado\",\n  \"com_show_examples\": \"Mostrar ejemplos\",\n  \"com_sidepanel_agent_builder\": \"Constructor de Agentes\",\n  \"com_sidepanel_assistant_builder\": \"Creador de Asistentes\",\n  \"com_sidepanel_attach_files\": \"Adjuntar Archivos\",\n  \"com_sidepanel_conversation_tags\": \"Marcadores\",\n  \"com_sidepanel_hide_panel\": \"Ocultar Panel\",\n  \"com_sidepanel_manage_files\": \"Administrar Archivos\",\n  \"com_sidepanel_parameters\": \"Parámetros\",\n  \"com_sidepanel_select_agent\": \"Seleccione un Agente\",\n  \"com_sidepanel_select_assistant\": \"Seleccionar un Asistente\",\n  \"com_ui_accept\": \"Acepto\",\n  \"com_ui_add\": \"Agregar\",\n  \"com_ui_add_model_preset\": \"Agregar un modelo o configuración preestablecida para una respuesta adicional\",\n  \"com_ui_add_multi_conversation\": \"Agregar múltiples conversaciones\",\n  \"com_ui_admin\": \"Administrador\",\n  \"com_ui_admin_access_warning\": \"Deshabilitar el acceso de Administrador a esta función puede causar problemas inesperados en la interfaz que requieran actualizar la página. Si se guarda este cambio, la única forma de revertirlo es mediante la configuración de interfaz en el archivo librechat.yaml, lo cual afectará a todos los roles.\",\n  \"com_ui_admin_settings\": \"Configuración de Administrador\",\n  \"com_ui_advanced\": \"Avanzado\",\n  \"com_ui_agent\": \"Agente\",\n  \"com_ui_agent_delete_error\": \"Se produjo un error al eliminar el agente\",\n  \"com_ui_agent_deleted\": \"Asistente eliminado exitosamente\",\n  \"com_ui_agent_duplicate_error\": \"Se produjo un error al duplicar el asistente\",\n  \"com_ui_agent_duplicated\": \"Agente duplicado exitosamente\",\n  \"com_ui_agent_editing_allowed\": \"Otros usuarios ya pueden editar este agente\",\n  \"com_ui_agents\": \"Agentes\",\n  \"com_ui_agents_allow_create\": \"Permitir la creación de Agentes\",\n  \"com_ui_agents_allow_share_global\": \"Permitir compartir Agentes con todos los usuarios\",\n  \"com_ui_agents_allow_use\": \"Permitir el uso de Agentes\",\n  \"com_ui_all\": \"todas\",\n  \"com_ui_all_proper\": \"Todos\",\n  \"com_ui_archive\": \"Archivar\",\n  \"com_ui_archive_error\": \"Error al archivar la conversación\",\n  \"com_ui_artifact_click\": \"Haga clic para abrir\",\n  \"com_ui_artifacts\": \"Artefactos\",\n  \"com_ui_artifacts_toggle\": \"Alternar Interfaz de Artefactos\",\n  \"com_ui_ascending\": \"Asc\",\n  \"com_ui_assistant\": \"Asistente\",\n  \"com_ui_assistant_delete_error\": \"Hubo un error al eliminar el asistente\",\n  \"com_ui_assistant_deleted\": \"Asistente eliminado con éxito\",\n  \"com_ui_assistants\": \"Asistentes\",\n  \"com_ui_assistants_output\": \"Salida de Asistentes\",\n  \"com_ui_attach_error\": \"No se puede adjuntar el archivo. Cree o seleccione una conversación, o intente actualizar la página.\",\n  \"com_ui_attach_error_openai\": \"No se pueden adjuntar archivos del Asistente a otros puntos de conexión\",\n  \"com_ui_attach_error_size\": \"Se excedió el límite de tamaño de archivo para el endpoint:\",\n  \"com_ui_attach_error_type\": \"Tipo de archivo no admitido para el endpoint:\",\n  \"com_ui_attach_warn_endpoint\": \"Es posible que los archivos no compatibles con la herramienta sean ignorados\",\n  \"com_ui_attachment\": \"Adjunto\",\n  \"com_ui_authentication\": \"Autenticación\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_back_to_chat\": \"Volver al Chat\",\n  \"com_ui_back_to_prompts\": \"Volver a Prompts\",\n  \"com_ui_bookmark_delete_confirm\": \"¿Está seguro de que desea eliminar este marcador?\",\n  \"com_ui_bookmarks\": \"Marcadores\",\n  \"com_ui_bookmarks_add\": \"Agregar Marcadores\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Agregar a la conversación actual\",\n  \"com_ui_bookmarks_count\": \"Conteo\",\n  \"com_ui_bookmarks_create_error\": \"Hubo un error al crear el marcador\",\n  \"com_ui_bookmarks_create_exists\": \"Este marcador ya existe\",\n  \"com_ui_bookmarks_create_success\": \"Marcador creado con éxito\",\n  \"com_ui_bookmarks_delete\": \"Eliminar Marcador\",\n  \"com_ui_bookmarks_delete_error\": \"Hubo un error al eliminar el marcador\",\n  \"com_ui_bookmarks_delete_success\": \"Marcador eliminado con éxito\",\n  \"com_ui_bookmarks_description\": \"Descripción\",\n  \"com_ui_bookmarks_edit\": \"Editar Marcador\",\n  \"com_ui_bookmarks_filter\": \"Filtrar marcadores...\",\n  \"com_ui_bookmarks_new\": \"Nuevo marcador\",\n  \"com_ui_bookmarks_title\": \"Título\",\n  \"com_ui_bookmarks_update_error\": \"Hubo un error al actualizar el marcador\",\n  \"com_ui_bookmarks_update_success\": \"Marcador actualizado con éxito\",\n  \"com_ui_cancel\": \"Cancelar\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Historial de Chat\",\n  \"com_ui_clear\": \"Limpiar\",\n  \"com_ui_clear_all\": \"Limpiar todo\",\n  \"com_ui_close\": \"Cerrar\",\n  \"com_ui_code\": \"Código\",\n  \"com_ui_collapse_chat\": \"Contraer Chat\",\n  \"com_ui_command_placeholder\": \"Opcional: Ingrese un comando para el prompt o se utilizará el nombre\",\n  \"com_ui_command_usage_placeholder\": \"Seleccione un Prompt por comando o nombre\",\n  \"com_ui_confirm_action\": \"Confirmar Acción\",\n  \"com_ui_context\": \"Contexto\",\n  \"com_ui_continue\": \"Continuar\",\n  \"com_ui_controls\": \"Controles\",\n  \"com_ui_copied\": \"¡Copiado!\",\n  \"com_ui_copied_to_clipboard\": \"Copiado al portapapeles\",\n  \"com_ui_copy_code\": \"Copiar código\",\n  \"com_ui_copy_link\": \"Copiar enlace\",\n  \"com_ui_copy_to_clipboard\": \"Copiar al portapapeles\",\n  \"com_ui_create\": \"Crear\",\n  \"com_ui_create_link\": \"Crear enlace\",\n  \"com_ui_create_prompt\": \"Crear Prompt\",\n  \"com_ui_custom_prompt_mode\": \"Modo de Prompt Personalizado\",\n  \"com_ui_dashboard\": \"Panel de control\",\n  \"com_ui_date\": \"Fecha\",\n  \"com_ui_date_april\": \"Abril\",\n  \"com_ui_date_august\": \"Agosto\",\n  \"com_ui_date_december\": \"Diciembre\",\n  \"com_ui_date_february\": \"Febrero\",\n  \"com_ui_date_january\": \"Enero\",\n  \"com_ui_date_july\": \"Julio\",\n  \"com_ui_date_june\": \"Junio\",\n  \"com_ui_date_march\": \"Marzo\",\n  \"com_ui_date_may\": \"Mayo\",\n  \"com_ui_date_november\": \"Noviembre\",\n  \"com_ui_date_october\": \"Octubre\",\n  \"com_ui_date_previous_30_days\": \"Últimos 30 días\",\n  \"com_ui_date_previous_7_days\": \"Últimos 7 días\",\n  \"com_ui_date_september\": \"Septiembre\",\n  \"com_ui_date_today\": \"Hoy\",\n  \"com_ui_date_yesterday\": \"Ayer\",\n  \"com_ui_decline\": \"No acepto\",\n  \"com_ui_delete\": \"Eliminar\",\n  \"com_ui_delete_action\": \"Eliminar Acción\",\n  \"com_ui_delete_action_confirm\": \"¿Está seguro de que desea eliminar esta acción?\",\n  \"com_ui_delete_agent_confirm\": \"¿Está seguro de que desea eliminar este agente?\",\n  \"com_ui_delete_assistant_confirm\": \"¿Está seguro de que desea eliminar este Asistente? Esta acción no se puede deshacer.\",\n  \"com_ui_delete_confirm\": \"Esto eliminará\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Esto eliminará la versión seleccionada para \\\"{{0}}\\\". Si no existen otras versiones, el prompt será eliminado.\",\n  \"com_ui_delete_conversation\": \"¿Eliminar Chat?\",\n  \"com_ui_delete_prompt\": \"¿Eliminar Prompt?\",\n  \"com_ui_delete_shared_link\": \"¿Eliminar enlace compartido?\",\n  \"com_ui_delete_tool\": \"Eliminar Herramienta\",\n  \"com_ui_delete_tool_confirm\": \"¿Está seguro de que desea eliminar esta herramienta?\",\n  \"com_ui_descending\": \"Desc\",\n  \"com_ui_description\": \"Descripción\",\n  \"com_ui_description_placeholder\": \"Opcional: Ingrese una descripción para mostrar en el prompt\",\n  \"com_ui_download_error\": \"Hubo un error al descargar el archivo. Es posible que el archivo haya sido eliminado.\",\n  \"com_ui_dropdown_variables\": \"Variables desplegables:\",\n  \"com_ui_dropdown_variables_info\": \"Cree menús desplegables personalizados para sus prompts: `{{nombre_variable:opción1|opción2|opción3}}`\",\n  \"com_ui_duplicate\": \"Duplicar\",\n  \"com_ui_duplication_error\": \"Hubo un error al duplicar la conversación\",\n  \"com_ui_duplication_processing\": \"Duplicando conversación...\",\n  \"com_ui_duplication_success\": \"Conversación duplicada exitosamente\",\n  \"com_ui_edit\": \"Editar\",\n  \"com_ui_endpoint\": \"Punto de conexión\",\n  \"com_ui_endpoint_menu\": \"Menú de Punto de Conexión LLM\",\n  \"com_ui_endpoints_available\": \"Puntos de conexión disponibles\",\n  \"com_ui_enter\": \"Intro\",\n  \"com_ui_enter_api_key\": \"Ingrese la clave API\",\n  \"com_ui_enter_openapi_schema\": \"Ingrese su esquema OpenAPI aquí\",\n  \"com_ui_enter_var\": \"Ingrese {{0}}\",\n  \"com_ui_error\": \"Error\",\n  \"com_ui_error_connection\": \"Error al conectarse al servidor. Intente actualizar la página.\",\n  \"com_ui_error_save_admin_settings\": \"Se produjo un error al guardar su configuración de administrador.\",\n  \"com_ui_examples\": \"Ejemplos\",\n  \"com_ui_export_convo_modal\": \"Exportar Conversación\",\n  \"com_ui_field_required\": \"Este campo es obligatorio\",\n  \"com_ui_filter_prompts_name\": \"Filtrar prompts por nombre\",\n  \"com_ui_fork\": \"Bifurcar\",\n  \"com_ui_fork_all_target\": \"Incluir todo desde/hacia aquí\",\n  \"com_ui_fork_branches\": \"Incluir ramas relacionadas\",\n  \"com_ui_fork_change_default\": \"Opción de bifurcación predeterminada\",\n  \"com_ui_fork_default\": \"Utilizar opción de bifurcación predeterminada\",\n  \"com_ui_fork_error\": \"Hubo un error al bifurcar la conversación\",\n  \"com_ui_fork_from_message\": \"Seleccione una opción de bifurcación\",\n  \"com_ui_fork_info_1\": \"com_ui_fork_info_1: 'Utilice esta configuración para bifurcar los mensajes con el comportamiento deseado.'\",\n  \"com_ui_fork_info_2\": \"\\\"Bifurcar\\\" se refiere a crear una nueva conversación que comienza/termina desde mensajes específicos en la conversación actual, creando una copia según las opciones seleccionadas.\",\n  \"com_ui_fork_info_3\": \"El término \\\"mensaje objetivo\\\" se refiere ya sea al mensaje desde el cual se abrió este popup, o, si marca \\\"{{0}}\\\", al último mensaje en la conversación.\",\n  \"com_ui_fork_info_branches\": \"Esta opción bifurca los mensajes visibles, junto con las ramas relacionadas; en otras palabras, la ruta directa hacia el mensaje objetivo, incluyendo las ramas a lo largo de esa ruta.\",\n  \"com_ui_fork_info_remember\": \"Marque esta opción para recordar las preferencias que seleccione para su uso futuro, lo que agilizará la bifurcación de conversaciones según sus preferencias.\",\n  \"com_ui_fork_info_start\": \"Si se marca, la bifurcación comenzará desde este mensaje hasta el último mensaje de la conversación, según el comportamiento seleccionado anteriormente.\",\n  \"com_ui_fork_info_target\": \"Esta opción bifurca todos los mensajes que conducen al mensaje objetivo, incluyendo sus vecinos; en otras palabras, se incluyen todas las ramas de mensajes, ya sean visibles o no, o estén en el mismo camino.\",\n  \"com_ui_fork_info_visible\": \"Esta opción bifurca únicamente los mensajes visibles; es decir, la ruta directa hacia el mensaje objetivo, sin ninguna ramificación.\",\n  \"com_ui_fork_processing\": \"Bifurcando conversación...\",\n  \"com_ui_fork_remember\": \"Recuerde\",\n  \"com_ui_fork_remember_checked\": \"Su selección se recordará después de utilizarla. Puede cambiar esta opción en cualquier momento en la configuración.\",\n  \"com_ui_fork_split_target\": \"Iniciar bifurcación aquí\",\n  \"com_ui_fork_split_target_setting\": \"Iniciar bifurcación desde el mensaje objetivo de forma predeterminada\",\n  \"com_ui_fork_success\": \"Se ha bifurcado la conversación con éxito\",\n  \"com_ui_fork_visible\": \"Mostrar únicamente mensajes visibles\",\n  \"com_ui_go_to_conversation\": \"Ir a la conversación\",\n  \"com_ui_happy_birthday\": \"¡Es mi primer cumpleaños!\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Gen Imágenes\",\n  \"com_ui_import_conversation_error\": \"Hubo un error al importar tus chats\",\n  \"com_ui_import_conversation_file_type_error\": \"com_ui_import_conversation_file_type_error: Tipo de archivo no compatible para importar\",\n  \"com_ui_import_conversation_info\": \"Importar chats de un archivo JSON\",\n  \"com_ui_import_conversation_success\": \"Chats importados exitosamente\",\n  \"com_ui_include_shadcnui\": \"Incluir instrucciones de componentes shadcn/ui\",\n  \"com_ui_input\": \"Entrada\",\n  \"com_ui_instructions\": \"Instrucciones\",\n  \"com_ui_latest_footer\": \"IA para todos.\",\n  \"com_ui_librechat_code_api_key\": \"Obtenga su clave API del Intérprete de Código de LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Seguro. Multilenguaje. Archivos de entrada/salida.\",\n  \"com_ui_librechat_code_api_title\": \"Ejecutar Código IA\",\n  \"com_ui_llm_menu\": \"Menú de LLM\",\n  \"com_ui_llms_available\": \"Modelos LLM disponibles\",\n  \"com_ui_locked\": \"Bloqueado\",\n  \"com_ui_logo\": \"Logotipo de {{0}}\",\n  \"com_ui_manage\": \"Administrar\",\n  \"com_ui_max_tags\": \"El número máximo permitido es {{0}}, utilizando los valores más recientes.\",\n  \"com_ui_mention\": \"Menciona un punto de conexión, asistente o preconfiguración para cambiar rápidamente a él.\",\n  \"com_ui_min_tags\": \"No se pueden eliminar más valores, se requiere un mínimo de {{0}}.\",\n  \"com_ui_model\": \"Modelo\",\n  \"com_ui_model_parameters\": \"Parámetros del Modelo\",\n  \"com_ui_more_info\": \"Más información\",\n  \"com_ui_my_prompts\": \"Mis Prompts\",\n  \"com_ui_name\": \"Nombre\",\n  \"com_ui_new_chat\": \"Nuevo Chat\",\n  \"com_ui_next\": \"Sig\",\n  \"com_ui_no\": \"No\",\n  \"com_ui_no_bookmarks\": \"Parece que aún no tiene marcadores. Haga clic en un chat y agregue uno nuevo\",\n  \"com_ui_no_category\": \"Sin categoría\",\n  \"com_ui_no_changes\": \"No hay cambios para actualizar\",\n  \"com_ui_no_terms_content\": \"No hay contenido de términos y condiciones para mostrar\",\n  \"com_ui_none_selected\": \"No se ha seleccionado ninguno\",\n  \"com_ui_nothing_found\": \"No se encontró nada\",\n  \"com_ui_of\": \"de\",\n  \"com_ui_off\": \"Desactivado\",\n  \"com_ui_on\": \"Encendido\",\n  \"com_ui_page\": \"Página\",\n  \"com_ui_prev\": \"Ant\",\n  \"com_ui_preview\": \"Previsualizar\",\n  \"com_ui_privacy_policy\": \"Política de privacidad\",\n  \"com_ui_privacy_policy_url\": \"URL de la Política de Privacidad\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Este prompt ya está compartido con todos los usuarios\",\n  \"com_ui_prompt_name\": \"Nombre del Prompt\",\n  \"com_ui_prompt_name_required\": \"El nombre del prompt es obligatorio\",\n  \"com_ui_prompt_preview_not_shared\": \"El autor no ha permitido la colaboración para este prompt\",\n  \"com_ui_prompt_text\": \"Texto\",\n  \"com_ui_prompt_text_required\": \"El texto es obligatorio\",\n  \"com_ui_prompt_update_error\": \"Hubo un error al actualizar el prompt\",\n  \"com_ui_prompts\": \"Indicaciones\",\n  \"com_ui_prompts_allow_create\": \"Permitir crear Prompts\",\n  \"com_ui_prompts_allow_share_global\": \"Permitir compartir plantillas con todos los usuarios\",\n  \"com_ui_prompts_allow_use\": \"Permitir uso de Prompts\",\n  \"com_ui_provider\": \"Proveedor\",\n  \"com_ui_read_aloud\": \"Leer en voz alta\",\n  \"com_ui_regenerate\": \"Regenerar\",\n  \"com_ui_region\": \"Región\",\n  \"com_ui_rename\": \"Renombrar\",\n  \"com_ui_reset_var\": \"Restablecer {{0}}\",\n  \"com_ui_result\": \"Resultado\",\n  \"com_ui_revoke\": \"Revocar\",\n  \"com_ui_revoke_info\": \"Revocar todas las credenciales proporcionadas por el usuario\",\n  \"com_ui_revoke_key_confirm\": \"¿Está seguro de que desea revocar esta clave?\",\n  \"com_ui_revoke_key_endpoint\": \"Revocar clave para {{0}}\",\n  \"com_ui_revoke_keys\": \"Revocar Claves\",\n  \"com_ui_revoke_keys_confirm\": \"¿Está seguro de que desea revocar todas las claves?\",\n  \"com_ui_role_select\": \"Rol\",\n  \"com_ui_run_code\": \"Ejecutar código\",\n  \"com_ui_run_code_error\": \"Se produjo un error al ejecutar el código\",\n  \"com_ui_save\": \"Guardar\",\n  \"com_ui_save_submit\": \"Guardar y Enviar\",\n  \"com_ui_saved\": \"¡Guardado!\",\n  \"com_ui_schema\": \"Esquema\",\n  \"com_ui_select\": \"Seleccionar\",\n  \"com_ui_select_file\": \"Seleccionar un archivo\",\n  \"com_ui_select_model\": \"Seleccionar un modelo\",\n  \"com_ui_select_provider\": \"Seleccionar un proveedor\",\n  \"com_ui_select_provider_first\": \"Seleccione un proveedor primero\",\n  \"com_ui_select_region\": \"Seleccionar una región\",\n  \"com_ui_select_search_model\": \"Buscar modelo por nombre\",\n  \"com_ui_select_search_plugin\": \"Buscar plugin por nombre\",\n  \"com_ui_select_search_provider\": \"Buscar proveedor por nombre\",\n  \"com_ui_select_search_region\": \"Buscar región por nombre\",\n  \"com_ui_share\": \"Compartir\",\n  \"no_text_recognized\": \"El reconocimiento de voz no está disponible. Por favor, contacte al administrador.\",\n  \"com_ui_share_create_message\": \"Tu nombre y cualquier mensaje que agregues después de compartir se mantendrán privados.\",\n  \"com_ui_share_delete_error\": \"Hubo un error al eliminar el enlace compartido.\",\n  \"com_ui_share_error\": \"Hubo un error al compartir el enlace del chat\",\n  \"com_ui_share_link_to_chat\": \"Compartir enlace en el chat\",\n  \"com_ui_share_to_all_users\": \"Compartir con todos los usuarios\",\n  \"com_ui_share_update_message\": \"Tu nombre, instrucciones personalizadas y cualquier mensaje que agregues después de compartir se mantendrán privados.\",\n  \"com_ui_share_var\": \"Compartir {{0}}\",\n  \"com_ui_shared_link_not_found\": \"Enlace compartido no encontrado\",\n  \"com_ui_shared_prompts\": \"Prompts Compartidos\",\n  \"com_ui_show_all\": \"Mostrar Todo\",\n  \"com_ui_simple\": \"Simple\",\n  \"com_ui_size\": \"Tamaño\",\n  \"com_ui_special_variables\": \"Variables especiales:\",\n  \"com_ui_special_variables_info\": \"Utilice `{{current_date}}` para la fecha actual y `{{current_user}}` para su nombre de cuenta asignado.\",\n  \"com_ui_speech_while_submitting\": \"No se puede enviar un mensaje de voz mientras se está generando una respuesta\",\n  \"com_ui_stop\": \"Detener\",\n  \"com_ui_storage\": \"Almacenamiento\",\n  \"com_ui_submit\": \"Enviar\",\n  \"com_ui_terms_and_conditions\": \"Términos y Condiciones\",\n  \"com_ui_terms_of_service\": \"Términos de servicio\",\n  \"com_ui_tools\": \"Herramientas\",\n  \"com_ui_unarchive\": \"Desarchivar\",\n  \"com_ui_unarchive_error\": \"Error al desarchivar la conversación\",\n  \"com_ui_unknown\": \"Desconocido\",\n  \"com_ui_update\": \"Actualizar\",\n  \"com_ui_upload\": \"Subir\",\n  \"com_ui_upload_code_files\": \"Subir archivo para el Intérprete de Código\",\n  \"com_ui_upload_delay\": \"La carga de \\\"{{0}}\\\" está tomando más tiempo del esperado. Espere mientras el archivo termina de indexarse para su recuperación.\",\n  \"com_ui_upload_error\": \"Hubo un error al subir su archivo\",\n  \"com_ui_upload_file_search\": \"Subir para búsqueda de archivos\",\n  \"com_ui_upload_files\": \"Subir archivos\",\n  \"com_ui_upload_image\": \"Subir una imagen\",\n  \"com_ui_upload_image_input\": \"Subir imagen\",\n  \"com_ui_upload_invalid\": \"Archivo no válido para subir. Debe ser una imagen que no exceda el límite\",\n  \"com_ui_upload_invalid_var\": \"Archivo inválido para subir. Debe ser una imagen que no exceda los {{0}} MB\",\n  \"com_ui_upload_success\": \"Archivo subido con éxito\",\n  \"com_ui_upload_type\": \"Seleccionar tipo de carga\",\n  \"com_ui_use_micrphone\": \"Usar micrófono\",\n  \"com_ui_use_prompt\": \"Usar prompt\",\n  \"com_ui_variables\": \"Variables\",\n  \"com_ui_variables_info\": \"Utilice llaves dobles en su texto para crear variables, por ejemplo `{{variable de ejemplo}}`, para completarlas posteriormente al usar el prompt.\",\n  \"com_ui_version_var\": \"Versión {{0}}\",\n  \"com_ui_versions\": \"Versiones\",\n  \"com_ui_yes\": \"Sí\",\n  \"com_ui_zoom\": \"Zoom\",\n  \"com_user_message\": \"Usted\",\n  \"com_warning_resubmit_unsupported\": \"No se admite el reenvío del mensaje de IA para este punto de conexión.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/et/translation.json",
    "content": "{\n  \"chat_direction_left_to_right\": \"Joonda vestlus vasakult paremale.\",\n  \"chat_direction_right_to_left\": \"Joonda vestlus paremalt vasakule.\",\n  \"com_a11y_ai_composing\": \"AI genereerib vastust.\",\n  \"com_a11y_end\": \"AI on oma vastuse lõpetanud.\",\n  \"com_a11y_start\": \"AI on oma vastuse andmise alustanud.\",\n  \"com_agents_allow_editing\": \"Luba teistel kasutajatel sinu agenti muuta\",\n  \"com_agents_by_librechat\": \"LibreChatilt\",\n  \"com_agents_code_interpreter\": \"Kui see on lubatud, saab sinu agent kasutada LibreChati koodiinterpreteerimise API-t genereeritud koodi turvaliseks käivitamiseks, sealhulgas failide töötlemiseks. Vajalik on kehtiv API võti.\",\n  \"com_agents_code_interpreter_title\": \"Koodiinterpreteerimise API\",\n  \"com_agents_create_error\": \"Agendi loomisel tekkis viga.\",\n  \"com_agents_description_placeholder\": \"Valikuline: Kirjelda oma agenti siin\",\n  \"com_agents_enable_file_search\": \"Luba failiotsing\",\n  \"com_agents_file_search_disabled\": \"Agent tuleb luua enne failide üleslaadimist failiotsinguks.\",\n  \"com_agents_file_search_info\": \"Kui see on lubatud, teavitatakse agenti täpselt allpool loetletud failinimedest, mis võimaldab tal nendest failidest asjakohast konteksti hankida.\",\n  \"com_agents_instructions_placeholder\": \"Süsteemijuhised, mida agent kasutab\",\n  \"com_agents_missing_provider_model\": \"Enne agendi loomist valige teenusepakkuja ja mudel.\",\n  \"com_agents_name_placeholder\": \"Valikuline: Agendi nimi\",\n  \"com_agents_no_access\": \"Sul pole õigust seda agenti muuta.\",\n  \"com_agents_not_available\": \"Agent pole saadaval\",\n  \"com_agents_search_name\": \"Otsi agente nime järgi\",\n  \"com_agents_update_error\": \"Agendi uuendamisel tekkis viga.\",\n  \"com_assistants_action_attempt\": \"Assistent soovib suhelda: {{0}}\",\n  \"com_assistants_actions\": \"Tegevused\",\n  \"com_assistants_actions_disabled\": \"Enne tegevuste lisamist peate looma assistendi.\",\n  \"com_assistants_actions_info\": \"Lubage oma assistendil API-de kaudu teavet hankida või toiminguid teha\",\n  \"com_assistants_add_actions\": \"Lisa tegevusi\",\n  \"com_assistants_add_tools\": \"Lisa tööriistu\",\n  \"com_assistants_allow_sites_you_trust\": \"Luba ainult usaldusväärseid saite.\",\n  \"com_assistants_append_date\": \"Lisa praegune kuupäev ja kellaaeg\",\n  \"com_assistants_append_date_tooltip\": \"Kui see on lubatud, lisatakse praegune kliendi kuupäev ja kellaaeg assistendi süsteemijuhistele.\",\n  \"com_assistants_attempt_info\": \"Assistent soovib saata järgmist:\",\n  \"com_assistants_available_actions\": \"Saadaolevad tegevused\",\n  \"com_assistants_capabilities\": \"Võimed\",\n  \"com_assistants_code_interpreter\": \"Koodiinterpreteerija\",\n  \"com_assistants_code_interpreter_files\": \"Allpool olevad failid on ainult koodiinterpreteerijale:\",\n  \"com_assistants_code_interpreter_info\": \"Koodiinterpreteerija võimaldab assistendil kirjutada ja käivitada koodi. See tööriist saab töödelda mitmekesise andmestruktuuri ja vorminguga faile ning genereerida faile, näiteks graafikuid.\",\n  \"com_assistants_completed_action\": \"Suhtles {{0}}\",\n  \"com_assistants_completed_function\": \"Käivitas {{0}}\",\n  \"com_assistants_conversation_starters\": \"Vestluse alustajad\",\n  \"com_assistants_conversation_starters_placeholder\": \"Sisesta vestluse alustaja\",\n  \"com_assistants_create_error\": \"Assistendi loomisel tekkis viga.\",\n  \"com_assistants_create_success\": \"Loomine õnnestus\",\n  \"com_assistants_delete_actions_error\": \"Tegevuse kustutamisel tekkis viga.\",\n  \"com_assistants_delete_actions_success\": \"Tegevuse kustutamine assistendilt õnnestus\",\n  \"com_assistants_description_placeholder\": \"Valikuline: Kirjelda oma assistenti siin\",\n  \"com_assistants_domain_info\": \"Assistent saatis selle teabe aadressile {{0}}\",\n  \"com_assistants_file_search\": \"Failiotsing\",\n  \"com_assistants_file_search_info\": \"Failiotsing võimaldab assistendil kasutada teadmisi failidest, mille sina või sinu kasutajad üles laadite. Kui fail on üles laaditud, otsustab assistent automaatselt, millal kasutajate päringute põhjal sisu hankida. Vektorhoidlate lisamine failiotsinguks pole veel toetatud. Saate neid lisada teenusepakkuja mänguväljakult või lisada faile sõnumitele, et neid lõimes failiotsinguks kasutada.\",\n  \"com_assistants_function_use\": \"Assistent kasutas {{0}}\",\n  \"com_assistants_image_vision\": \"Pildi nägemine\",\n  \"com_assistants_instructions_placeholder\": \"Süsteemijuhised, mida assistent kasutab\",\n  \"com_assistants_knowledge\": \"Teadmised\",\n  \"com_assistants_knowledge_disabled\": \"Enne failide teadmistena üleslaadimist tuleb assistent luua ning koodiinterpreteerija või otsing lubada ja salvestada.\",\n  \"com_assistants_knowledge_info\": \"Kui laadite faile üles jaotise Teadmised alla, võivad vestlused teie assistendiga sisaldada failide sisu.\",\n  \"com_assistants_max_starters_reached\": \"Vestluse alustajate maksimaalne arv on saavutatud\",\n  \"com_assistants_name_placeholder\": \"Valikuline: Assistendi nimi\",\n  \"com_assistants_non_retrieval_model\": \"Selles mudelis pole failiotsing lubatud. Valige mõni muu mudel.\",\n  \"com_assistants_retrieval\": \"Otsing\",\n  \"com_assistants_running_action\": \"Käivitatakse tegevust\",\n  \"com_assistants_search_name\": \"Otsi assistente nime järgi\",\n  \"com_assistants_update_actions_error\": \"Tegevuse loomisel või uuendamisel tekkis viga.\",\n  \"com_assistants_update_actions_success\": \"Tegevuse loomine või uuendamine õnnestus\",\n  \"com_assistants_update_error\": \"Assistendi uuendamisel tekkis viga.\",\n  \"com_assistants_update_success\": \"Uuendamine õnnestus\",\n  \"com_auth_already_have_account\": \"Sul on juba konto?\",\n  \"com_auth_apple_login\": \"Logi sisse Apple'iga\",\n  \"com_auth_back_to_login\": \"Tagasi sisselogimisele\",\n  \"com_auth_click\": \"Vajuta\",\n  \"com_auth_click_here\": \"Vajuta siia\",\n  \"com_auth_continue\": \"Jätka\",\n  \"com_auth_create_account\": \"Loo oma konto\",\n  \"com_auth_discord_login\": \"Jätka Discordiga\",\n  \"com_auth_email\": \"E-post\",\n  \"com_auth_email_address\": \"E-posti aadress\",\n  \"com_auth_email_max_length\": \"E-post ei tohiks olla pikem kui 120 tähemärki\",\n  \"com_auth_email_min_length\": \"E-post peab olema vähemalt 6 tähemärki\",\n  \"com_auth_email_pattern\": \"Sa pead sisestama kehtiva e-posti aadressi\",\n  \"com_auth_email_required\": \"E-post on kohustuslik\",\n  \"com_auth_email_resend_link\": \"Saada e-kiri uuesti\",\n  \"com_auth_email_resent_failed\": \"E-kirja uuesti saatmine ebaõnnestus\",\n  \"com_auth_email_resent_success\": \"Kinnituskiri saadeti edukalt uuesti\",\n  \"com_auth_email_verification_failed\": \"E-posti kinnitamine ebaõnnestus\",\n  \"com_auth_email_verification_failed_token_missing\": \"Kinnitamine ebaõnnestus, tunnus puudub\",\n  \"com_auth_email_verification_in_progress\": \"Sinu e-posti kinnitamine, palun oota\",\n  \"com_auth_email_verification_invalid\": \"Vigane e-posti kinnitus\",\n  \"com_auth_email_verification_redirecting\": \"Suunatakse ümber {{0}} sekundi pärast...\",\n  \"com_auth_email_verification_resend_prompt\": \"Kas sa ei saanud e-kirja?\",\n  \"com_auth_email_verification_success\": \"E-post kinnitatud\",\n  \"com_auth_error_create\": \"Konto registreerimisel tekkis viga. Proovige uuesti.\",\n  \"com_auth_error_invalid_reset_token\": \"See parooli lähtestamise tunnus pole enam kehtiv.\",\n  \"com_auth_error_login\": \"Sisselogimine esitatud teabega ei õnnestu. Palun kontrolli oma andmeid ja proovi uuesti.\",\n  \"com_auth_error_login_ban\": \"Sinu konto on ajutiselt blokeeritud meie teenuse rikkumiste tõttu.\",\n  \"com_auth_error_login_rl\": \"Liiga palju sisselogimiskatseid lühikese aja jooksul. Palun proovi hiljem uuesti.\",\n  \"com_auth_error_login_server\": \"Tekkis sisemine serveriviga. Palun oota hetk ja proovi uuesti.\",\n  \"com_auth_error_login_unverified\": \"Sinu kontot pole veel kinnitatud. Palun leia kinnituslink enda e-postist.\",\n  \"com_auth_facebook_login\": \"Jätka Facebookiga\",\n  \"com_auth_full_name\": \"Täisnimi\",\n  \"com_auth_github_login\": \"Jätka Githubiga\",\n  \"com_auth_google_login\": \"Jätka Google'iga\",\n  \"com_auth_here\": \"SIIA\",\n  \"com_auth_login\": \"Logi sisse\",\n  \"com_auth_login_with_new_password\": \"Nüüd saad sisse logida oma uue parooliga.\",\n  \"com_auth_name_max_length\": \"Nimi peab olema vähem kui 80 tähemärki\",\n  \"com_auth_name_min_length\": \"Nimi peab olema vähemalt 3 tähemärki\",\n  \"com_auth_name_required\": \"Nimi on kohustuslik\",\n  \"com_auth_no_account\": \"Sul pole kontot?\",\n  \"com_auth_password\": \"Parool\",\n  \"com_auth_password_confirm\": \"Kinnita parool\",\n  \"com_auth_password_forgot\": \"Unustasid parooli?\",\n  \"com_auth_password_max_length\": \"Parool peab olema vähem kui 128 tähemärki\",\n  \"com_auth_password_min_length\": \"Parool peab olema vähemalt 8 tähemärki\",\n  \"com_auth_password_not_match\": \"Paroolid ei ühti\",\n  \"com_auth_password_required\": \"Parool on kohustuslik\",\n  \"com_auth_registration_success_generic\": \"Palun vaata oma e-posti, et oma e-posti aadress kinnitada.\",\n  \"com_auth_registration_success_insecure\": \"Registreerimine õnnestus.\",\n  \"com_auth_reset_password\": \"Lähtesta oma parool\",\n  \"com_auth_reset_password_if_email_exists\": \"Kui selle e-postiga konto on olemas, on saadetud parooli lähtestamise juhistega e-kiri. Palun kontrolli oma rämpsposti kausta.\",\n  \"com_auth_reset_password_link_sent\": \"E-kiri saadetud\",\n  \"com_auth_reset_password_success\": \"Parooli lähtestamine õnnestus\",\n  \"com_auth_sign_in\": \"Logi sisse\",\n  \"com_auth_sign_up\": \"Registreeru\",\n  \"com_auth_submit_registration\": \"Saada registreerimine\",\n  \"com_auth_to_reset_your_password\": \"parooli lähtestamiseks.\",\n  \"com_auth_to_try_again\": \"uuesti proovimiseks.\",\n  \"com_auth_username\": \"Kasutajanimi (valikuline)\",\n  \"com_auth_username_max_length\": \"Kasutajanimi peab olema vähem kui 20 tähemärki\",\n  \"com_auth_username_min_length\": \"Kasutajanimi peab olema vähemalt 2 tähemärki\",\n  \"com_auth_welcome_back\": \"Teretulemast tagasi\",\n  \"com_click_to_download\": \"(vajuta siia, et alla laadida)\",\n  \"com_download_expired\": \"(allalaadimine aegunud)\",\n  \"com_download_expires\": \"(vajuta siia, et alla laadida - aegub {{0}})\",\n  \"com_endpoint\": \"Otspunkt\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Agendi mudel (soovitatav: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Palun vali agent\",\n  \"com_endpoint_ai\": \"AI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maksimaalne märkide arv, mida vastuses genereerida saab. Lühemate vastuste jaoks määrake madalam väärtus ja pikemate vastuste jaoks kõrgem väärtus. Märkus: mudelid võivad peatuda enne selle maksimumi saavutamist.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"Päringu vahemällu salvestamine võimaldab suurt konteksti või juhiseid API-kõnede vahel uuesti kasutada, vähendades kulusid ja latentsust\",\n  \"com_endpoint_anthropic_temp\": \"Vahemikus 0 kuni 1. Kasutage analüütiliste / valikvastustega küsimuste puhul väärtust, mis on lähemal 0-le, ning loominguliste ja genereerivate ülesannete puhul väärtust, mis on lähemal 1-le. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k muudab seda, kuidas mudel valib väljundi jaoks märgid. Top-k väärtus 1 tähendab, et valitud märk on kõige tõenäolisem kõigi mudeli sõnavaras olevate märkide seas (nimetatakse ka ahneks dekodeerimiseks), samas kui top-k väärtus 3 tähendab, et järgmine märk valitakse 3 kõige tõenäolisema märgi seast (kasutades temperatuuri).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p muudab seda, kuidas mudel valib väljundi jaoks märgid. Märgid valitakse kõige tõenäolisemast K (vt parameetrit topK) kuni vähim tõenäoliseni, kuni nende tõenäosuste summa on võrdne top-p väärtusega.\",\n  \"com_endpoint_assistant\": \"Assistent\",\n  \"com_endpoint_assistant_model\": \"Assistendi mudel\",\n  \"com_endpoint_assistant_placeholder\": \"Palun vali assistent parempoolsest külgpaneelist\",\n  \"com_endpoint_completion\": \"Lõpetamine\",\n  \"com_endpoint_completion_model\": \"Lõpetamise mudel (soovitatav: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Klõpsa siia\",\n  \"com_endpoint_config_google_api_info\": \"Et saada oma Generative Language API võtit (Gemini jaoks),\",\n  \"com_endpoint_config_google_api_key\": \"Google API võti\",\n  \"com_endpoint_config_google_cloud_platform\": \"(Google Cloud Platformilt)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google'i teenusekonto võti\",\n  \"com_endpoint_config_key\": \"Määra API võti\",\n  \"com_endpoint_config_key_encryption\": \"Sinu võti krüpteeritakse ja kustutatakse\",\n  \"com_endpoint_config_key_for\": \"Määra API võti\",\n  \"com_endpoint_config_key_google_need_to\": \"Sa pead\",\n  \"com_endpoint_config_key_google_service_account\": \"Loo teenusekonto\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Luba Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API Google Cloudis, seejärel\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Veenduge, et klõpsate 'Loo ja jätka', et anda vähemalt roll 'Vertex AI kasutaja'. Lõpuks looge siia importimiseks JSON-võti.\",\n  \"com_endpoint_config_key_import_json_key\": \"Impordi teenusekonto JSON-võti.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Vigane teenusekonto JSON-võti, kas importisite õige faili?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Teenusekonto JSON-võtme importimine õnnestus\",\n  \"com_endpoint_config_key_name\": \"Võti\",\n  \"com_endpoint_config_key_never_expires\": \"Sinu võti ei aegu kunagi\",\n  \"com_endpoint_config_placeholder\": \"Määra oma võti päise menüüs vestlemiseks.\",\n  \"com_endpoint_config_value\": \"Sisesta väärtus\",\n  \"com_endpoint_context\": \"Kontekst\",\n  \"com_endpoint_context_info\": \"Maksimaalne märkide arv, mida konteksti jaoks kasutada saab. Kasutage seda selleks, et kontrollida, mitu märki taotluse kohta saadetakse. Kui seda pole määratud, kasutatakse süsteemi vaikesätteid, mis põhinevad teadaolevate mudelite konteksti suurusel. Kõrgemate väärtuste määramine võib põhjustada vigu ja/või suuremaid märgikulusid.\",\n  \"com_endpoint_context_tokens\": \"Maksimum kontekstimärgid\",\n  \"com_endpoint_custom_name\": \"Kohandatud nimi\",\n  \"com_endpoint_default\": \"vaikimisi\",\n  \"com_endpoint_default_blank\": \"vaikimisi: tühi\",\n  \"com_endpoint_default_empty\": \"vaikimisi: tühi\",\n  \"com_endpoint_default_with_num\": \"vaikimisi: {{0}}\",\n  \"com_endpoint_examples\": \"Eelseadistused\",\n  \"com_endpoint_export\": \"Ekspordi\",\n  \"com_endpoint_export_share\": \"Ekspordi/Jaga\",\n  \"com_endpoint_frequency_penalty\": \"Sageduse karistus\",\n  \"com_endpoint_func_hover\": \"Luba pluginate kasutamine OpenAI funktsioonidena\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Määra Google'ile kohandatud nimi\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maksimaalne märkide arv, mida vastuses genereerida saab. Lühemate vastuste jaoks määrake madalam väärtus ja pikemate vastuste jaoks kõrgem väärtus. Märkus: mudelid võivad peatuda enne selle maksimumi saavutamist.\",\n  \"com_endpoint_google_temp\": \"Kõrgemad väärtused = juhuslikum, samas kui madalamad väärtused = keskendunum ja deterministlikum. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.\",\n  \"com_endpoint_google_topk\": \"Top-k muudab seda, kuidas mudel valib väljundi jaoks märgid. Top-k väärtus 1 tähendab, et valitud märk on kõige tõenäolisem kõigi mudeli sõnavaras olevate märkide seas (nimetatakse ka ahneks dekodeerimiseks), samas kui top-k väärtus 3 tähendab, et järgmine märk valitakse 3 kõige tõenäolisema märgi seast (kasutades temperatuuri).\",\n  \"com_endpoint_google_topp\": \"Top-p muudab seda, kuidas mudel valib väljundi jaoks märgid. Märgid valitakse kõige tõenäolisemast K (vt parameetrit topK) kuni vähim tõenäoliseni, kuni nende tõenäosuste summa on võrdne top-p väärtusega.\",\n  \"com_endpoint_instructions_assistants\": \"Tühista juhised\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Tühistab assistendi juhised. See on kasulik käitumise muutmiseks käivituse kohta.\",\n  \"com_endpoint_max_output_tokens\": \"Maksimaalsed väljundmärgid\",\n  \"com_endpoint_message\": \"Sõnum\",\n  \"com_endpoint_message_new\": \"Sõnum {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Muuda oma sõnumit või genereeri uuesti.\",\n  \"com_endpoint_my_preset\": \"Minu eelseadistus\",\n  \"com_endpoint_no_presets\": \"Eelseadistusi pole veel, kasutage ühe loomiseks seadete nuppu\",\n  \"com_endpoint_open_menu\": \"Ava menüü\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Määra AI-le kohandatud nimi\",\n  \"com_endpoint_openai_detail\": \"Visioonitaotluste eraldusvõime. \\\"Madal\\\" on odavam ja kiirem, \\\"Kõrge\\\" on detailsem ja kallim ning \\\"Automaatne\\\" valib automaatselt kahe vahel vastavalt pildi eraldusvõimele.\",\n  \"com_endpoint_openai_freq\": \"Arv vahemikus -2,0 kuni 2,0. Positiivsed väärtused karistavad uusi märke nende senise sageduse alusel tekstis, vähendades mudeli tõenäosust sama rida sõnasõnaliselt korrata.\",\n  \"com_endpoint_openai_max\": \"Maksimaalsed genereeritavad märgid. Sisendmärkide ja genereeritud märkide kogupikkus on piiratud mudeli konteksti pikkusega.\",\n  \"com_endpoint_openai_max_tokens\": \"Valikuline väli 'max_tokens', mis esindab vestluse lõpetamisel genereeritavate märkide maksimaalset arvu. Sisendmärkide ja genereeritud märkide kogupikkus on piiratud mudelite konteksti pikkusega. Kui see arv ületab maksimaalseid kontekstimärke, võivad tekkida vead.\",\n  \"com_endpoint_openai_pres\": \"Arv vahemikus -2,0 kuni 2,0. Positiivsed väärtused karistavad uusi märke selle alusel, kas need esinevad senises tekstis, suurendades mudeli tõenäosust rääkida uutest teemadest.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Määra kohandatud juhised süsteemiteatesse lisamiseks. Vaikimisi: puudub\",\n  \"com_endpoint_openai_reasoning_effort\": \"Ainult o1 mudelid: piirab põhjendusmudelite põhjendustegevust. Põhjendustegevuse vähendamine võib tuua kaasa kiiremad vastused ja vähem põhjendamiseks kasutatud märke vastuses.\",\n  \"com_endpoint_openai_resend\": \"Saada kõik varem lisatud pildid uuesti. Märkus: see võib märgikulusid oluliselt suurendada ja paljude pildimanustega võivad tekkida vead.\",\n  \"com_endpoint_openai_resend_files\": \"Saada kõik varem lisatud failid uuesti. Märkus: see suurendab märgikulusid ja paljude manustega võivad tekkida vead.\",\n  \"com_endpoint_openai_stop\": \"Kuni 4 järjestust, mille korral API lõpetab täiendavate märkide genereerimise.\",\n  \"com_endpoint_openai_temp\": \"Kõrgemad väärtused = juhuslikum, samas kui madalamad väärtused = keskendunum ja deterministlikum. Soovitame muuta kas seda või Top P-d, aga mitte mõlemat.\",\n  \"com_endpoint_openai_topp\": \"Alternatiiviks temperatuuriga näidiste võtmisele on tuumaproovide võtmine, kus mudel arvestab märkide tulemustega, millel on top_p tõenäosuse mass. Seega 0,1 tähendab, et arvesse võetakse ainult märke, mis moodustavad 10% suurima tõenäosusega massi. Soovitame muuta kas seda või temperatuuri, aga mitte mõlemat.\",\n  \"com_endpoint_output\": \"Väljund\",\n  \"com_endpoint_plug_image_detail\": \"Pildi detailid\",\n  \"com_endpoint_plug_resend_files\": \"Saada failid uuesti\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Määra kohandatud juhised süsteemiteatesse lisamiseks. Vaikimisi: puudub\",\n  \"com_endpoint_plug_skip_completion\": \"Jäta lõpetamine vahele\",\n  \"com_endpoint_plug_use_functions\": \"Kasuta funktsioone\",\n  \"com_endpoint_presence_penalty\": \"Olekukaristus\",\n  \"com_endpoint_preset\": \"eelseadistus\",\n  \"com_endpoint_preset_custom_name_placeholder\": \"Otspunkti kohandatud nimi.\",\n  \"com_endpoint_preset_default\": \"on nüüd vaike-eelseadistus.\",\n  \"com_endpoint_preset_default_item\": \"Vaikimisi:\",\n  \"com_endpoint_preset_default_none\": \"Vaikimisi eelseadistus pole aktiivne.\",\n  \"com_endpoint_preset_default_removed\": \"pole enam vaike-eelseadistus.\",\n  \"com_endpoint_preset_delete_confirm\": \"Oled sa kindel, et sa soovid selle eelseadistuse kustutada?\",\n  \"com_endpoint_preset_delete_error\": \"Eelseadistuse kustutamisel tekkis viga. Palun proovi uuesti.\",\n  \"com_endpoint_preset_import\": \"Eelseadistus imporditud!\",\n  \"com_endpoint_preset_import_error\": \"Eelseadistuse importimisel tekkis viga. Palun proovi uuesti.\",\n  \"com_endpoint_preset_name\": \"Eelseadistuse nimi\",\n  \"com_endpoint_preset_save_error\": \"Eelseadistuse salvestamisel tekkis viga. Palun proovi uuesti.\",\n  \"com_endpoint_preset_selected\": \"Eelseadistus aktiivne!\",\n  \"com_endpoint_preset_selected_title\": \"Aktiivne!\",\n  \"com_endpoint_preset_title\": \"Eelseadistus\",\n  \"com_endpoint_presets\": \"eelseadistused\",\n  \"com_endpoint_presets_clear_warning\": \"Oled sa kindel, et sa soovid kõik eelseadistused kustutada? See on pöördumatu.\",\n  \"com_endpoint_prompt_cache\": \"Kasuta päringu vahemällu salvestamist\",\n  \"com_endpoint_prompt_prefix\": \"Kohandatud juhised\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Täiendavad juhised\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Määra täiendavad juhised või kontekst lisaks assistendi peamistele juhistele. Kui see on tühi, ignoreeritakse seda.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Määra kohandatud juhised või kontekst. Kui see on tühi, ignoreeritakse seda.\",\n  \"com_endpoint_reasoning_effort\": \"Põhjendustegevus\",\n  \"com_endpoint_save_as_preset\": \"Salvesta eelseadistusena\",\n  \"com_endpoint_search\": \"Otsi otspunkti nime järgi\",\n  \"com_endpoint_set_custom_name\": \"Määra kohandatud nimi, juhuks kui sa selle eelseadistuse leiad\",\n  \"com_endpoint_skip_hover\": \"Luba lõpetamise etapi vahelejätmine, mis vaatab üle lõpliku vastuse ja genereeritud sammud\",\n  \"com_endpoint_stop\": \"Peatamise järjestused\",\n  \"com_endpoint_stop_placeholder\": \"Eralda väärtused, vajutades `Enter`\",\n  \"com_endpoint_temperature\": \"Temperatuur\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Kasuta aktiivset assistenti\",\n  \"com_error_expired_user_key\": \"Esitatud võti {{0}} aegus {{1}}. Esitage uus võti ja proovige uuesti.\",\n  \"com_error_files_dupe\": \"Leiti duplikaatfail.\",\n  \"com_error_files_empty\": \"Tühjad failid pole lubatud.\",\n  \"com_error_files_process\": \"Faili töötlemisel tekkis viga.\",\n  \"com_error_files_unsupported_capability\": \"Ühtegi seda failitüüpi toetavat võimalust pole lubatud.\",\n  \"com_error_files_upload\": \"Faili üleslaadimisel tekkis viga.\",\n  \"com_error_files_upload_canceled\": \"Faili üleslaadimise taotlus tühistati. Märkus: faili üleslaadimine võib endiselt olla pooleli ja see tuleb käsitsi kustutada.\",\n  \"com_error_files_validation\": \"Faili valideerimisel tekkis viga.\",\n  \"com_error_input_length\": \"Viimase sõnumi märkide arv on liiga pikk, ületades märkide limiidi (vastavalt {{0}}). Palun lühendage oma sõnumit, kohandage vestluse parameetrites maksimaalset konteksti suurust või jätkamiseks hargnege vestlus.\",\n  \"com_error_invalid_user_key\": \"Esitati vigane võti. Esitage kehtiv võti ja proovige uuesti.\",\n  \"com_error_moderation\": \"Tundub, et esitatud sisu on meie modereerimissüsteemi poolt märgistatud kui meie kogukonna juhistega mitte vastav. Me ei saa selle konkreetse teemaga jätkata. Kui teil on muid küsimusi või teemasid, mida soovite uurida, muutke oma sõnumit või looge uus vestlus.\",\n  \"com_error_no_base_url\": \"Baasaadressi ei leitud. Palun lisage see ja proovige uuesti.\",\n  \"com_error_no_user_key\": \"Võtit ei leitud. Palun sisestage võti ja proovige uuesti.\",\n  \"com_files_filter\": \"Filtreeri faile...\",\n  \"com_files_no_results\": \"Tulemusi pole.\",\n  \"com_files_number_selected\": \"{{0}} / {{1}} üksust valitud\",\n  \"com_files_table\": \"Failide tabel\",\n  \"com_generated_files\": \"Genereeritud failid:\",\n  \"com_hide_examples\": \"Peida näited\",\n  \"com_nav_account_settings\": \"Konto seaded\",\n  \"com_nav_always_make_prod\": \"Tee uued versioonid alati toodangusse\",\n  \"com_nav_archive_created_at\": \"Arhiveerimise kuupäev\",\n  \"com_nav_archive_name\": \"Nimi\",\n  \"com_nav_archived_chats\": \"Arhiveeritud vestlused\",\n  \"com_nav_archived_chats_empty\": \"Sul ei ole arhiveeritud vestlusi.\",\n  \"com_nav_at_command\": \"@-käsk\",\n  \"com_nav_at_command_description\": \"Lülita käsk \\\"@\\\" sisse/välja lõpp-punktide, mudelite, eelseadistuste jms vahetamiseks.\",\n  \"com_nav_audio_play_error\": \"Viga heli esitamisel: {{0}}\",\n  \"com_nav_audio_process_error\": \"Viga heli töötlemisel: {{0}}\",\n  \"com_nav_auto_scroll\": \"Automaatne kerimine vestluse avamisel viimase sõnumini\",\n  \"com_nav_auto_send_prompts\": \"Saada vihjed automaatselt\",\n  \"com_nav_auto_send_text\": \"Saada tekst automaatselt\",\n  \"com_nav_auto_send_text_disabled\": \"Keelamiseks määra -1\",\n  \"com_nav_auto_transcribe_audio\": \"Transkribeeri heli automaatselt\",\n  \"com_nav_automatic_playback\": \"Esita viimane sõnum automaatselt\",\n  \"com_nav_balance\": \"Saldo\",\n  \"com_nav_browser\": \"Brauser\",\n  \"com_nav_buffer_append_error\": \"Probleem heli voogedastusega. Taasesitus võib katkeda.\",\n  \"com_nav_change_picture\": \"Muuda pilti\",\n  \"com_nav_chat_commands\": \"Vestluskäsud\",\n  \"com_nav_chat_commands_info\": \"Need käsud aktiveeritakse konkreetsete märkide sisestamisel sõnumi alguses. Iga käsk käivitatakse sellele määratud eesliitega. Saate need keelata, kui kasutate neid märke sageli sõnumite alustamiseks.\",\n  \"com_nav_chat_direction\": \"Vestluse suund\",\n  \"com_nav_clear_all_chats\": \"Tühjenda kõik vestlused\",\n  \"com_nav_clear_cache_confirm_message\": \"Oled sa kindel, et sa soovid vahemälu tühjendada?\",\n  \"com_nav_clear_conversation\": \"Tühjenda vestlused\",\n  \"com_nav_clear_conversation_confirm_message\": \"Oled sa kindel, et sa soovid kõik vestlused tühjendada? See on pöördumatu.\",\n  \"com_nav_close_sidebar\": \"Sulge külgriba\",\n  \"com_nav_commands\": \"Käsud\",\n  \"com_nav_confirm_clear\": \"Kinnita tühjendamine\",\n  \"com_nav_conversation_mode\": \"Vestlusrežiim\",\n  \"com_nav_convo_menu_options\": \"Vestluse menüü valikud\",\n  \"com_nav_db_sensitivity\": \"Detsibelli tundlikkus\",\n  \"com_nav_delete_account\": \"Kustuta konto\",\n  \"com_nav_delete_account_button\": \"Kustuta minu konto jäädavalt\",\n  \"com_nav_delete_account_confirm\": \"Kustuta konto - oled sa kindel?\",\n  \"com_nav_delete_account_email_placeholder\": \"Palun sisesta oma konto e-post\",\n  \"com_nav_delete_cache_storage\": \"Kustuta TTS vahemälu\",\n  \"com_nav_delete_data_info\": \"Kõik sinu andmed kustutatakse.\",\n  \"com_nav_delete_warning\": \"HOIATUS: See kustutab sinu konto jäädavalt.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Luba TTS vahemälu\",\n  \"com_nav_enable_cloud_browser_voice\": \"Kasuta pilvepõhiseid hääli\",\n  \"com_nav_enabled\": \"Lubatud\",\n  \"com_nav_engine\": \"Mootor\",\n  \"com_nav_enter_to_send\": \"Vajuta Enter sõnumite saatmiseks\",\n  \"com_nav_export\": \"Ekspordi\",\n  \"com_nav_export_all_message_branches\": \"Ekspordi kõik sõnumite harud\",\n  \"com_nav_export_conversation\": \"Ekspordi vestlus\",\n  \"com_nav_export_filename\": \"Failinimi\",\n  \"com_nav_export_filename_placeholder\": \"Määra failinimi\",\n  \"com_nav_export_include_endpoint_options\": \"Kaasa otspunkti valikud\",\n  \"com_nav_export_recursive\": \"Rekursiivne\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekursiivne või järjestikune?\",\n  \"com_nav_export_type\": \"Tüüp\",\n  \"com_nav_external\": \"Väline\",\n  \"com_nav_font_size\": \"Sõnumi fondi suurus\",\n  \"com_nav_font_size_base\": \"Keskmine\",\n  \"com_nav_font_size_lg\": \"Suur\",\n  \"com_nav_font_size_sm\": \"Väike\",\n  \"com_nav_font_size_xl\": \"Eriti suur\",\n  \"com_nav_font_size_xs\": \"Eriti väike\",\n  \"com_nav_help_faq\": \"Abi ja KKK\",\n  \"com_nav_hide_panel\": \"Peida kõige parempoolsem külgpaneel\",\n  \"com_nav_info_code_artifacts\": \"Võimaldab katsetuslike koodiartefaktide kuvamist vestluse kõrval\",\n  \"com_nav_info_code_artifacts_agent\": \"Võimaldab selle agendi jaoks koodiartefaktide kasutamist. Vaikimisi lisatakse artefaktide kasutamisele spetsiifilised täiendavad juhised, välja arvatud juhul, kui on lubatud \\\"Kohandatud viiparežiim\\\".\",\n  \"com_nav_info_custom_prompt_mode\": \"Kui see on lubatud, siis vaikimisi artefaktide süsteemiviipa ei lisata. Kõik artefakte genereerivad juhised tuleb selles režiimis käsitsi esitada.\",\n  \"com_nav_info_enter_to_send\": \"Kui see on lubatud, saadab `ENTER` sõnumi. Kui see on keelatud, lisab Enter uue rea ja sõnumi saatmiseks peate vajutama `CTRL + ENTER` / `⌘ + ENTER`.\",\n  \"com_nav_info_fork_change_default\": \"`Ainult nähtavad sõnumid` sisaldab ainult otsest teed valitud sõnumini. `Kaasa seotud harud` lisab harud mööda teed. `Kaasa kõik siia/siit` sisaldab kõiki ühendatud sõnumeid ja harusid.\",\n  \"com_nav_info_fork_split_target_setting\": \"Kui see on lubatud, algab hargnemine sihtsõnumist vestluse viimase sõnumini vastavalt valitud käitumisele.\",\n  \"com_nav_info_include_shadcnui\": \"Kui see on lubatud, siis lisatakse juhised shadcn/ui komponentide kasutamiseks. shadcn/ui on Radix UI ja Tailwind CSS-i abil loodud taaskasutatavate komponentide kogu. Märkus: need on pikad juhised, peaksid lubama ainult siis, kui LLM-i õigete importide ja komponentide teavitamine on sinu jaoks oluline. Nende komponentide kohta lisateabe saamiseks külastage: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Kui see on lubatud, renderdatakse sõnumites olev LaTeX-kood matemaatiliste võrranditena. Selle keelamine võib jõudlust parandada, kui sa LaTeX-i renderdamist ei vaja.\",\n  \"com_nav_info_save_draft\": \"Kui see on lubatud, salvestatakse vestlusvormi sisestatud tekst ja manused automaatselt kohalikult mustanditena. Need mustandid on saadaval ka siis, kui lehe uuesti laadite või teisele vestlusele lülitute. Mustandid salvestatakse lokaalselt sinu seadmesse ja kustutatakse pärast sõnumi saatmist.\",\n  \"com_nav_info_show_thinking\": \"Kui see on lubatud, kuvatakse vestluses vaikimisi avatud mõtlemise rippmenüüd, võimaldades sul AI põhjendusi reaalajas vaadata. Kui see on keelatud, jäävad mõtlemise rippmenüüd vaikimisi suletuks, et saada puhtam ja sujuvam liides\",\n  \"com_nav_info_user_name_display\": \"Kui see on lubatud, kuvatakse saatja kasutajanimi iga sinu saadetud sõnumi kohal. Kui see on keelatud, näed oma sõnumite kohal ainult \\\"Sina\\\".\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Tuvasta automaatselt\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Keel\",\n  \"com_nav_latex_parsing\": \"LaTeXi parsimine sõnumites (võib mõjutada jõudlust)\",\n  \"com_nav_log_out\": \"Logi välja\",\n  \"com_nav_long_audio_warning\": \"Pikemate tekstide töötlemine võtab kauem aega.\",\n  \"com_nav_maximize_chat_space\": \"Maksimeeri vestluse ruumi\",\n  \"com_nav_modular_chat\": \"Luba otspunktide vahetamine vestluse keskel\",\n  \"com_nav_my_files\": \"Minu failid\",\n  \"com_nav_no_search_results\": \"Otsingutulemusi ei leitud\",\n  \"com_nav_not_supported\": \"Pole toetatud\",\n  \"com_nav_open_sidebar\": \"Ava külgriba\",\n  \"com_nav_playback_rate\": \"Heli taasesituse kiirus\",\n  \"com_nav_plugin_auth_error\": \"Selle pistikprogrammi autentimisel tekkis viga. Palun proovi uuesti.\",\n  \"com_nav_plugin_install\": \"Paigalda\",\n  \"com_nav_plugin_search\": \"Otsi pistikprogramme\",\n  \"com_nav_plugin_store\": \"Pistikprogrammide pood\",\n  \"com_nav_plugin_uninstall\": \"Eemalda\",\n  \"com_nav_plus_command\": \"+-käsk\",\n  \"com_nav_plus_command_description\": \"Lülita käsk \\\"+\\\" sisse/välja mitme vastuse seadistuse lisamiseks\",\n  \"com_nav_profile_picture\": \"Profiilipilt\",\n  \"com_nav_save_drafts\": \"Salvesta mustandid kohalikult\",\n  \"com_nav_scroll_button\": \"Keri nupu lõppu\",\n  \"com_nav_search_placeholder\": \"Otsi sõnumeid\",\n  \"com_nav_send_message\": \"Saada sõnum\",\n  \"com_nav_setting_account\": \"Konto\",\n  \"com_nav_setting_beta\": \"Beeta funktsioonid\",\n  \"com_nav_setting_chat\": \"Vestlus\",\n  \"com_nav_setting_data\": \"Andmekontroll\",\n  \"com_nav_setting_general\": \"Üldine\",\n  \"com_nav_setting_speech\": \"Kõne\",\n  \"com_nav_settings\": \"Seaded\",\n  \"com_nav_shared_links\": \"Jagatud lingid\",\n  \"com_nav_show_code\": \"Näita koodi alati, kui kasutatakse koodiinterpreteerijat\",\n  \"com_nav_show_thinking\": \"Ava mõtlemise rippmenüüd vaikimisi\",\n  \"com_nav_slash_command\": \"/-käsk\",\n  \"com_nav_slash_command_description\": \"Lülita käsk \\\"/\\\" sisse/välja, et valida klaviatuuri kaudu viipa\",\n  \"com_nav_source_buffer_error\": \"Viga heli taasesituse seadistamisel. Palun värskenda lehte.\",\n  \"com_nav_speech_cancel_error\": \"Heli taasesitust ei saa peatada. Võib-olla pead lehte värskendama.\",\n  \"com_nav_speech_to_text\": \"Kõnest tekstiks\",\n  \"com_nav_stop_generating\": \"Lõpeta genereerimine\",\n  \"com_nav_text_to_speech\": \"Tekst kõneks\",\n  \"com_nav_theme\": \"Teema\",\n  \"com_nav_theme_dark\": \"Tume\",\n  \"com_nav_theme_light\": \"Hele\",\n  \"com_nav_theme_system\": \"Süsteem\",\n  \"com_nav_tool_dialog\": \"Assistendi tööriistad\",\n  \"com_nav_tool_dialog_agents\": \"Agendi tööriistad\",\n  \"com_nav_tool_dialog_description\": \"Tööriistade valikute säilitamiseks tuleb assistent salvestada.\",\n  \"com_nav_tool_remove\": \"Eemalda\",\n  \"com_nav_tool_search\": \"Otsi tööriistu\",\n  \"com_nav_tts_init_error\": \"Teksti kõneks muutmise initsialiseerimine ebaõnnestus: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Valitud mootori tekst kõneks muutmise funktsioon ei ole selles brauseris toetatud.\",\n  \"com_nav_user\": \"KASUTAJA\",\n  \"com_nav_user_msg_markdown\": \"Renderda kasutajasõnumid markdownina\",\n  \"com_nav_user_name_display\": \"Kuva kasutajanimi sõnumites\",\n  \"com_nav_voice_select\": \"Hääl\",\n  \"com_nav_voices_fetch_error\": \"Hääle valikuid ei saanud hankida. Palun kontrolli oma internetiühendust.\",\n  \"com_nav_welcome_agent\": \"Palun vali agent\",\n  \"com_nav_welcome_assistant\": \"Palun vali assistent\",\n  \"com_nav_welcome_message\": \"Kuidas ma saan täna sind aidata?\",\n  \"com_show_agent_settings\": \"Näita agendi seadeid\",\n  \"com_show_completion_settings\": \"Näita lõpetamise seadeid\",\n  \"com_show_examples\": \"Näita näiteid\",\n  \"com_sidepanel_agent_builder\": \"Agendi ehitaja\",\n  \"com_sidepanel_assistant_builder\": \"Assistendi ehitaja\",\n  \"com_sidepanel_attach_files\": \"Lisa faile\",\n  \"com_sidepanel_conversation_tags\": \"Järjehoidjad\",\n  \"com_sidepanel_hide_panel\": \"Peida paneel\",\n  \"com_sidepanel_manage_files\": \"Halda faile\",\n  \"com_sidepanel_parameters\": \"Parameetrid\",\n  \"com_sidepanel_select_agent\": \"Vali agent\",\n  \"com_sidepanel_select_assistant\": \"Vali assistent\",\n  \"com_ui_accept\": \"Nõustun\",\n  \"com_ui_add\": \"Lisa\",\n  \"com_ui_add_model_preset\": \"Lisa mudel või eelseadistus täiendava vastuse jaoks\",\n  \"com_ui_add_multi_conversation\": \"Lisa mitmevestlus\",\n  \"com_ui_admin\": \"Administraator\",\n  \"com_ui_admin_access_warning\": \"Administraatori juurdepääsu keelamine sellele funktsioonile võib põhjustada ootamatuid kasutajaliidese probleeme, mis nõuavad värskendamist. Kui see on salvestatud, on ainus viis taastada liideseseade kaudu librechat.yaml konfiguratsioonis, mis mõjutab kõiki rolle.\",\n  \"com_ui_admin_settings\": \"Administraatori seaded\",\n  \"com_ui_advanced\": \"Täpsemad\",\n  \"com_ui_agent\": \"Agent\",\n  \"com_ui_agent_delete_error\": \"Agendi kustutamisel tekkis viga\",\n  \"com_ui_agent_deleted\": \"Agendi kustutamine õnnestus\",\n  \"com_ui_agent_duplicate_error\": \"Agendi dubleerimisel tekkis viga\",\n  \"com_ui_agent_duplicated\": \"Agendi dubleerimine õnnestus\",\n  \"com_ui_agent_editing_allowed\": \"Teised kasutajad saavad seda agenti juba muuta\",\n  \"com_ui_agent_shared_to_all\": \"Seda agenti on jagatud kõigi kasutajatega\",\n  \"com_ui_agents\": \"Agendid\",\n  \"com_ui_agents_allow_create\": \"Luba agentide loomine\",\n  \"com_ui_agents_allow_share_global\": \"Luba agentide jagamine kõigile kasutajatele\",\n  \"com_ui_agents_allow_use\": \"Luba agentide kasutamine\",\n  \"com_ui_all\": \"kõik\",\n  \"com_ui_all_proper\": \"Kõik\",\n  \"com_ui_analyzing\": \"Analüüsimine\",\n  \"com_ui_analyzing_finished\": \"Analüüs lõpetatud\",\n  \"com_ui_api_key\": \"API võti\",\n  \"com_ui_archive\": \"Arhiveeri\",\n  \"com_ui_archive_error\": \"Vestluse arhiveerimine ebaõnnestus\",\n  \"com_ui_artifact_click\": \"Klõpsa avamiseks\",\n  \"com_ui_artifacts\": \"Artefaktid\",\n  \"com_ui_artifacts_toggle\": \"Lülita artefaktide kasutajaliides sisse/välja\",\n  \"com_ui_artifacts_toggle_agent\": \"Luba artefaktid\",\n  \"com_ui_ascending\": \"Asc\",\n  \"com_ui_assistant\": \"Assistent\",\n  \"com_ui_assistant_delete_error\": \"Assistendi kustutamisel tekkis viga\",\n  \"com_ui_assistant_deleted\": \"Assistendi kustutamine õnnestus\",\n  \"com_ui_assistants\": \"Assistendid\",\n  \"com_ui_assistants_output\": \"Assistentide väljund\",\n  \"com_ui_attach_error\": \"Faili ei saa lisada. Loo või vali vestlus või proovi lehte värskendada.\",\n  \"com_ui_attach_error_openai\": \"Assistendi faile ei saa teistele otspunktidele lisada\",\n  \"com_ui_attach_error_size\": \"Failisuuruse limiit on otspunkti jaoks ületatud:\",\n  \"com_ui_attach_error_type\": \"Otspunkti jaoks toetamatu failitüüp:\",\n  \"com_ui_attach_warn_endpoint\": \"Sobiva tööriista puudumisel võidakse mitte-assistendi faile ignoreerida\",\n  \"com_ui_attachment\": \"Manus\",\n  \"com_ui_auth_type\": \"Autentimise tüüp\",\n  \"com_ui_auth_url\": \"Autentimise URL\",\n  \"com_ui_authentication\": \"Autentimine\",\n  \"com_ui_authentication_type\": \"Autentimise tüüp\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_azure\": \"Azure\",\n  \"com_ui_back_to_chat\": \"Tagasi vestlusesse\",\n  \"com_ui_back_to_prompts\": \"Tagasi sisendite juurde\",\n  \"com_ui_basic\": \"Põhiline\",\n  \"com_ui_basic_auth_header\": \"Põhiline autentimise päis\",\n  \"com_ui_bearer\": \"Bearer\",\n  \"com_ui_bookmark_delete_confirm\": \"Oled sa kindel, et sa soovid selle järjehoidja kustutada?\",\n  \"com_ui_bookmarks\": \"Järjehoidjad\",\n  \"com_ui_bookmarks_add\": \"Lisa järjehoidjaid\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Lisa praegusesse vestlusse\",\n  \"com_ui_bookmarks_count\": \"Hulk\",\n  \"com_ui_bookmarks_create_error\": \"Järjehoidja loomisel tekkis viga\",\n  \"com_ui_bookmarks_create_exists\": \"See järjehoidja on juba olemas\",\n  \"com_ui_bookmarks_create_success\": \"Järjehoidja loomine õnnestus\",\n  \"com_ui_bookmarks_delete\": \"Kustuta järjehoidja\",\n  \"com_ui_bookmarks_delete_error\": \"Järjehoidja kustutamisel tekkis viga\",\n  \"com_ui_bookmarks_delete_success\": \"Järjehoidja kustutamine õnnestus\",\n  \"com_ui_bookmarks_description\": \"Kirjeldus\",\n  \"com_ui_bookmarks_edit\": \"Muuda järjehoidjat\",\n  \"com_ui_bookmarks_filter\": \"Filtreeri järjehoidjaid...\",\n  \"com_ui_bookmarks_new\": \"Uus järjehoidja\",\n  \"com_ui_bookmarks_title\": \"Pealkiri\",\n  \"com_ui_bookmarks_update_error\": \"Järjehoidja uuendamisel tekkis viga\",\n  \"com_ui_bookmarks_update_success\": \"Järjehoidja uuendamine õnnestus\",\n  \"com_ui_bulk_delete_error\": \"Jagatud linkide kustutamine ebaõnnestus\",\n  \"com_ui_callback_url\": \"Tagasikutsumise URL\",\n  \"com_ui_cancel\": \"Tühista\",\n  \"com_ui_chat\": \"Vestlus\",\n  \"com_ui_chat_history\": \"Vestluse ajalugu\",\n  \"com_ui_clear\": \"Tühjenda\",\n  \"com_ui_clear_all\": \"Tühjenda kõik\",\n  \"com_ui_client_id\": \"Kliendi ID\",\n  \"com_ui_client_secret\": \"Kliendi saladus\",\n  \"com_ui_close\": \"Sulge\",\n  \"com_ui_close_menu\": \"Sulge menüü\",\n  \"com_ui_code\": \"Kood\",\n  \"com_ui_collapse_chat\": \"Ahenda vestlus\",\n  \"com_ui_command_placeholder\": \"Valikuline: sisesta sisendi jaoks käsk või kasutatakse nime\",\n  \"com_ui_command_usage_placeholder\": \"Vali sisend käsu või nime järgi\",\n  \"com_ui_confirm_action\": \"Kinnita tegevus\",\n  \"com_ui_confirm_admin_use_change\": \"Selle seadistuse muutmine blokeerib juurdepääsu administraatoritele, sealhulgas sinule endale. Oled sa kindel, et sa soovid jätkata?\",\n  \"com_ui_confirm_change\": \"Kinnita muudatus\",\n  \"com_ui_context\": \"Kontekst\",\n  \"com_ui_continue\": \"Jätka\",\n  \"com_ui_controls\": \"Juhtelemendid\",\n  \"com_ui_copied\": \"Kopeeritud!\",\n  \"com_ui_copied_to_clipboard\": \"Kopeeritud lõikepuhvrisse\",\n  \"com_ui_copy_code\": \"Kopeeri kood\",\n  \"com_ui_copy_link\": \"Kopeeri link\",\n  \"com_ui_copy_to_clipboard\": \"Kopeeri lõikepuhvrisse\",\n  \"com_ui_create\": \"Loo\",\n  \"com_ui_create_link\": \"Loo link\",\n  \"com_ui_create_prompt\": \"Loo sisend\",\n  \"com_ui_currently_production\": \"Praegu tootmises\",\n  \"com_ui_custom\": \"Kohandatud\",\n  \"com_ui_custom_header_name\": \"Kohandatud päise nimi\",\n  \"com_ui_custom_prompt_mode\": \"Kohandatud viiparežiim\",\n  \"com_ui_dashboard\": \"Armatuurlaud\",\n  \"com_ui_date\": \"Kuupäev\",\n  \"com_ui_date_april\": \"Aprill\",\n  \"com_ui_date_august\": \"August\",\n  \"com_ui_date_december\": \"Detsember\",\n  \"com_ui_date_february\": \"Veebruar\",\n  \"com_ui_date_january\": \"Jaanuar\",\n  \"com_ui_date_july\": \"Juuli\",\n  \"com_ui_date_june\": \"Juuni\",\n  \"com_ui_date_march\": \"Märts\",\n  \"com_ui_date_may\": \"Mai\",\n  \"com_ui_date_november\": \"November\",\n  \"com_ui_date_october\": \"Oktoober\",\n  \"com_ui_date_previous_30_days\": \"Eelmised 30 päeva\",\n  \"com_ui_date_previous_7_days\": \"Eelmised 7 päeva\",\n  \"com_ui_date_september\": \"September\",\n  \"com_ui_date_today\": \"Täna\",\n  \"com_ui_date_yesterday\": \"Eile\",\n  \"com_ui_decline\": \"Ma ei nõustu\",\n  \"com_ui_default_post_request\": \"Vaikimisi (POST päring)\",\n  \"com_ui_delete\": \"Kustuta\",\n  \"com_ui_delete_action\": \"Kustuta tegevus\",\n  \"com_ui_delete_action_confirm\": \"Oled sa kindel, et sa soovid selle tegevuse kustutada?\",\n  \"com_ui_delete_agent_confirm\": \"Oled sa kindel, et sa soovid selle agendi kustutada?\",\n  \"com_ui_delete_assistant_confirm\": \"Oled sa kindel, et sa soovid selle assistendi kustutada? Seda ei saa tagasi võtta.\",\n  \"com_ui_delete_confirm\": \"See kustutab\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"See kustutab valitud versiooni \\\"{{0}}\\\" jaoks. Kui muid versioone ei eksisteeri, kustutatakse sisend.\",\n  \"com_ui_delete_conversation\": \"Kustuta vestlus?\",\n  \"com_ui_delete_prompt\": \"Kustuta sisend?\",\n  \"com_ui_delete_shared_link\": \"Kustuta jagatud link?\",\n  \"com_ui_delete_tool\": \"Kustuta tööriist\",\n  \"com_ui_delete_tool_confirm\": \"Oled sa kindel, et sa soovid selle tööriista kustutada?\",\n  \"com_ui_descending\": \"Desc\",\n  \"com_ui_description\": \"Kirjeldus\",\n  \"com_ui_description_placeholder\": \"Valikuline: sisesta sisendi jaoks kuvatav kirjeldus\",\n  \"com_ui_download\": \"Laadi alla\",\n  \"com_ui_download_artifact\": \"Laadi artefakt alla\",\n  \"com_ui_download_error\": \"Viga faili allalaadimisel. Fail võib olla kustutatud.\",\n  \"com_ui_drag_drop\": \"Lohistage\",\n  \"com_ui_dropdown_variables\": \"Rippmenüü muutujad:\",\n  \"com_ui_dropdown_variables_info\": \"Loo sisendite jaoks kohandatud rippmenüüd: `{{muutuja_nimi:valik1|valik2|valik3}}`\",\n  \"com_ui_duplicate\": \"Dubleeri\",\n  \"com_ui_duplication_error\": \"Vestluse dubleerimisel tekkis viga\",\n  \"com_ui_duplication_processing\": \"Vestlust dubleeritakse...\",\n  \"com_ui_duplication_success\": \"Vestluse dubleerimine õnnestus\",\n  \"com_ui_edit\": \"Muuda\",\n  \"com_ui_empty_category\": \"-\",\n  \"com_ui_endpoint\": \"Otspunkt\",\n  \"com_ui_endpoint_menu\": \"LLM otspunkti menüü\",\n  \"com_ui_endpoints_available\": \"Saadaolevad otspunktid\",\n  \"com_ui_enter\": \"Sisesta\",\n  \"com_ui_enter_api_key\": \"Sisesta API võti\",\n  \"com_ui_enter_openapi_schema\": \"Sisesta siia oma OpenAPI skeem\",\n  \"com_ui_enter_var\": \"Sisesta {{0}}\",\n  \"com_ui_error\": \"Viga\",\n  \"com_ui_error_connection\": \"Viga serveriga ühendamisel, proovi lehte värskendada.\",\n  \"com_ui_error_save_admin_settings\": \"Administraatori seadete salvestamisel tekkis viga.\",\n  \"com_ui_examples\": \"Näited\",\n  \"com_ui_export_convo_modal\": \"Ekspordi vestluse modaal\",\n  \"com_ui_field_required\": \"See väli on kohustuslik\",\n  \"com_ui_filter_prompts\": \"Filtreeri sisendid\",\n  \"com_ui_filter_prompts_name\": \"Filtreeri sisendeid nime järgi\",\n  \"com_ui_finance\": \"Raha\",\n  \"com_ui_fork\": \"Hargne\",\n  \"com_ui_fork_all_target\": \"Kaasa kõik siia/siit\",\n  \"com_ui_fork_branches\": \"Kaasa seotud harud\",\n  \"com_ui_fork_change_default\": \"Vaikimisi hargnemise valik\",\n  \"com_ui_fork_default\": \"Kasuta vaikimisi hargnemise valikut\",\n  \"com_ui_fork_error\": \"Vestluse hargnemisel tekkis viga\",\n  \"com_ui_fork_from_message\": \"Vali hargnemise valik\",\n  \"com_ui_fork_info_1\": \"Kasuta seda seadistust sõnumite hargnemiseks soovitud käitumisega.\",\n  \"com_ui_fork_info_2\": \"\\\"Hargnemine\\\" viitab uue vestluse loomisele, mis algab/lõpeb praeguse vestluse konkreetsetest sõnumitest, luues koopia vastavalt valitud valikutele.\",\n  \"com_ui_fork_info_3\": \"\\\"Sihtsõnum\\\" viitab kas sõnumile, millest see hüpikaken avati, või, kui märgid \\\"{{0}}\\\", vestluse viimasele sõnumile.\",\n  \"com_ui_fork_info_branches\": \"See valik hargneb nähtavad sõnumid koos seotud harudega; teisisõnu, otsene tee sihtsõnumini, sealhulgas harud mööda teed.\",\n  \"com_ui_fork_info_remember\": \"Märgi see, et jätta meelde valitud valikud edaspidiseks kasutamiseks, muutes vestluste hargnemise eelistatud viisil kiiremaks.\",\n  \"com_ui_fork_info_start\": \"Kui see on märgitud, algab hargnemine sellest sõnumist vestluse viimase sõnumini vastavalt ülalvalitud käitumisele.\",\n  \"com_ui_fork_info_target\": \"See valik hargneb kõik sõnumid, mis viivad sihtsõnumini, kaasa arvatud selle naabrid; teisisõnu, kõik sõnumiharud, olenemata sellest, kas need on nähtavad või samal teel, on kaasatud.\",\n  \"com_ui_fork_info_visible\": \"See valik hargneb ainult nähtavad sõnumid; teisisõnu, otsene tee sihtsõnumini, ilma harudeta.\",\n  \"com_ui_fork_processing\": \"Vestlust hargnetakse...\",\n  \"com_ui_fork_remember\": \"Jäta meelde\",\n  \"com_ui_fork_remember_checked\": \"Sinu valik jäetakse pärast kasutamist meelde. Muuda seda igal ajal seadetes.\",\n  \"com_ui_fork_split_target\": \"Alusta hargnemist siit\",\n  \"com_ui_fork_split_target_setting\": \"Alusta vaikimisi sihtsõnumist hargnemist\",\n  \"com_ui_fork_success\": \"Vestluse hargnemine õnnestus\",\n  \"com_ui_fork_visible\": \"Ainult nähtavad sõnumid\",\n  \"com_ui_global_group\": \"Ülene grupp\",\n  \"com_ui_go_back\": \"Mine tagasi\",\n  \"com_ui_go_to_conversation\": \"Mine vestlusesse\",\n  \"com_ui_happy_birthday\": \"Mul on 1. sünnipäev!\",\n  \"com_ui_hide_qr\": \"Peida QR-kood\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_idea\": \"Ideed\",\n  \"com_ui_image_gen\": \"Pildi genereerimine\",\n  \"com_ui_import_conversation_error\": \"Vestluste importimisel tekkis viga\",\n  \"com_ui_import_conversation_file_type_error\": \"Toetamatu imporditüüp\",\n  \"com_ui_import_conversation_info\": \"Impordi vestlused JSON-failist\",\n  \"com_ui_import_conversation_success\": \"Vestluste importimine õnnestus\",\n  \"com_ui_include_shadcnui\": \"Kaasa shadcn/ui komponentide juhised\",\n  \"com_ui_include_shadcnui_agent\": \"Kaasa shadcn/ui juhised\",\n  \"com_ui_input\": \"Sisend\",\n  \"com_ui_instructions\": \"Juhised\",\n  \"com_ui_latest_footer\": \"Igaühele oma AI.\",\n  \"com_ui_latest_production_version\": \"Viimane tootmisversioon\",\n  \"com_ui_latest_version\": \"Viimane versioon\",\n  \"com_ui_librechat_code_api_key\": \"Hangi oma LibreChati koodiinterpreteerimise API võti\",\n  \"com_ui_librechat_code_api_subtitle\": \"Turvaline. Mitmekeelne. Sisend-/väljundfailid.\",\n  \"com_ui_librechat_code_api_title\": \"Käivita AI koodi\",\n  \"com_ui_llm_menu\": \"LLM menüü\",\n  \"com_ui_llms_available\": \"Saadaolevad LLM-id\",\n  \"com_ui_loading\": \"Laeb...\",\n  \"com_ui_locked\": \"Lukus\",\n  \"com_ui_logo\": \"{{0}} logo\",\n  \"com_ui_manage\": \"Halda\",\n  \"com_ui_max_tags\": \"Maksimaalne lubatud arv on {{0}}, kasutades viimaseid väärtusi.\",\n  \"com_ui_mention\": \"Maini otspunkti, assistenti või eelseadistust, et sellele kiiresti üle minna\",\n  \"com_ui_min_tags\": \"Rohkem väärtusi ei saa eemaldada, vaja on vähemalt {{0}}.\",\n  \"com_ui_misc\": \"Muu\",\n  \"com_ui_model\": \"Mudel\",\n  \"com_ui_model_parameters\": \"Mudeli parameetrid\",\n  \"com_ui_more_info\": \"Rohkem infot\",\n  \"com_ui_my_prompts\": \"Minu sisendid\",\n  \"com_ui_name\": \"Nimi\",\n  \"com_ui_new_chat\": \"Uus vestlus\",\n  \"com_ui_next\": \"Järgmine\",\n  \"com_ui_no\": \"Ei\",\n  \"com_ui_no_bookmarks\": \"Tundub, et sul pole veel järjehoidjaid. Klõpsa vestlusele ja lisa uus\",\n  \"com_ui_no_category\": \"Kategooriat pole\",\n  \"com_ui_no_changes\": \"Uuendamiseks pole muudatusi\",\n  \"com_ui_no_data\": \"Andmed puuduvad!\",\n  \"com_ui_no_terms_content\": \"Kuvamiseks puudub kasutustingimuste sisu\",\n  \"com_ui_no_valid_items\": \"Sobivad üksused puuduvad!\",\n  \"com_ui_none\": \"Puudub\",\n  \"com_ui_none_selected\": \"Ühtegi pole valitud\",\n  \"com_ui_nothing_found\": \"Midagi ei leitud\",\n  \"com_ui_oauth\": \"OAuth\",\n  \"com_ui_of\": \"kohta\",\n  \"com_ui_off\": \"Väljas\",\n  \"com_ui_on\": \"Sees\",\n  \"com_ui_openai\": \"OpenAI\",\n  \"com_ui_page\": \"Leht\",\n  \"com_ui_prev\": \"Eelmine\",\n  \"com_ui_preview\": \"Eelvaade\",\n  \"com_ui_privacy_policy\": \"Privaatsuspoliitika\",\n  \"com_ui_privacy_policy_url\": \"Privaatsuspoliitika URL\",\n  \"com_ui_prompt\": \"Sisend\",\n  \"com_ui_prompt_already_shared_to_all\": \"See sisend on juba kõigile kasutajatele jagatud\",\n  \"com_ui_prompt_name\": \"Sisendi nimi\",\n  \"com_ui_prompt_name_required\": \"Sisendi nimi on kohustuslik\",\n  \"com_ui_prompt_preview_not_shared\": \"Autor ei ole selle sisendi jaoks koostööd lubanud.\",\n  \"com_ui_prompt_text\": \"Tekst\",\n  \"com_ui_prompt_text_required\": \"Tekst on kohustuslik\",\n  \"com_ui_prompt_update_error\": \"Sisendi uuendamisel tekkis viga\",\n  \"com_ui_prompts\": \"Sisendid\",\n  \"com_ui_prompts_allow_create\": \"Luba sisendite loomine\",\n  \"com_ui_prompts_allow_share_global\": \"Luba sisendite jagamine kõigile kasutajatele\",\n  \"com_ui_prompts_allow_use\": \"Luba sisendite kasutamine\",\n  \"com_ui_provider\": \"Teenusepakkuja\",\n  \"com_ui_read_aloud\": \"Loe valjusti\",\n  \"com_ui_refresh_link\": \"Värskenda linki\",\n  \"com_ui_regenerate\": \"Genereeri uuesti\",\n  \"com_ui_region\": \"Piirkond\",\n  \"com_ui_rename\": \"Nimeta ümber\",\n  \"com_ui_rename_prompt\": \"Nimeta sisend ümber\",\n  \"com_ui_requires_auth\": \"Vajab autentimist\",\n  \"com_ui_reset_var\": \"Lähtesta {{0}}\",\n  \"com_ui_result\": \"Tulemus\",\n  \"com_ui_revoke\": \"Tühista\",\n  \"com_ui_revoke_info\": \"Tühista kõik kasutaja esitatud mandaadid\",\n  \"com_ui_revoke_key_confirm\": \"Oled sa kindel, et sa soovid selle võtme tühistada?\",\n  \"com_ui_revoke_key_endpoint\": \"Tühista võti {{0}} jaoks\",\n  \"com_ui_revoke_keys\": \"Tühista võtmed\",\n  \"com_ui_revoke_keys_confirm\": \"Oled sa kindel, et sa soovid kõik võtmed tühistada?\",\n  \"com_ui_role_select\": \"Roll\",\n  \"com_ui_roleplay\": \"Rollimäng\",\n  \"com_ui_run_code\": \"Käivita kood\",\n  \"com_ui_run_code_error\": \"Koodi käivitamisel tekkis viga\",\n  \"com_ui_save\": \"Salvesta\",\n  \"com_ui_save_submit\": \"Salvesta ja esita\",\n  \"com_ui_saved\": \"Salvestatud!\",\n  \"com_ui_schema\": \"Skeem\",\n  \"com_ui_scope\": \"Ulatus\",\n  \"com_ui_search\": \"Otsi\",\n  \"com_ui_select\": \"Vali\",\n  \"com_ui_select_file\": \"Vali fail\",\n  \"com_ui_select_model\": \"Vali mudel\",\n  \"com_ui_select_provider\": \"Vali teenusepakkuja\",\n  \"com_ui_select_provider_first\": \"Vali esmalt teenusepakkuja\",\n  \"com_ui_select_region\": \"Vali piirkond\",\n  \"com_ui_select_search_model\": \"Otsi mudelit nime järgi\",\n  \"com_ui_select_search_plugin\": \"Otsi pistikprogrammi nime järgi\",\n  \"com_ui_select_search_provider\": \"Otsi teenusepakkujat nime järgi\",\n  \"com_ui_select_search_region\": \"Otsi piirkonda nime järgi\",\n  \"com_ui_share\": \"Jaga\",\n  \"com_ui_share_create_message\": \"Sinu nimi ja kõik sõnumid, mille sa pärast jagamist lisad, jäävad privaatseks.\",\n  \"com_ui_share_delete_error\": \"Jagatud lingi kustutamisel tekkis viga\",\n  \"com_ui_share_error\": \"Vestluslingi jagamisel tekkis viga\",\n  \"com_ui_share_form_description\": \"Jaga kasutamist.\",\n  \"com_ui_share_link_to_chat\": \"Jaga linki vestlusele\",\n  \"com_ui_share_to_all_users\": \"Jaga kõigile kasutajatele\",\n  \"com_ui_share_update_message\": \"Sinu nimi, kohandatud juhised ja kõik sõnumid, mille sa pärast jagamist lisad, jäävad privaatseks.\",\n  \"com_ui_share_var\": \"Jaga {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Jagatud linkide kustutamine õnnestus\",\n  \"com_ui_shared_link_delete_success\": \"Jagatud lingi kustutamine õnnestus\",\n  \"com_ui_shared_link_not_found\": \"Jagatud linki ei leitud\",\n  \"com_ui_shared_prompts\": \"Jagatud sisendid\",\n  \"com_ui_shop\": \"Ostlemine\",\n  \"com_ui_show_all\": \"Näita kõiki\",\n  \"com_ui_show_qr\": \"Näita QR-koodi\",\n  \"com_ui_sign_in_to_domain\": \"Logi sisse {{0}}\",\n  \"com_ui_simple\": \"Lihtne\",\n  \"com_ui_size\": \"Suurus\",\n  \"com_ui_special_variables\": \"Erilised muutujad:\",\n  \"com_ui_special_variables_info\": \"Kasuta `{{praegune_kuupäev}}` praeguse kuupäeva jaoks ja `{{praegune_kasutaja}}` oma konto nime jaoks.\",\n  \"com_ui_speech_while_submitting\": \"Kõnet ei saa esitada, kui vastust genereeritakse\",\n  \"com_ui_stop\": \"Peata\",\n  \"com_ui_storage\": \"Salvestusruum\",\n  \"com_ui_submit\": \"Esita\",\n  \"com_ui_teach_or_explain\": \"Õppimine\",\n  \"com_ui_temporary_chat\": \"Ajutine vestlus\",\n  \"com_ui_terms_and_conditions\": \"Kasutustingimused\",\n  \"com_ui_terms_of_service\": \"Teenuse tingimused\",\n  \"com_ui_thinking\": \"Mõtleb...\",\n  \"com_ui_thoughts\": \"Mõtted\",\n  \"com_ui_token_exchange_method\": \"Märgi vahetamise meetod\",\n  \"com_ui_token_url\": \"Märgi URL\",\n  \"com_ui_tools\": \"Tööriistad\",\n  \"com_ui_travel\": \"Reisimine\",\n  \"com_ui_unarchive\": \"Arhiveeri lahti\",\n  \"com_ui_unarchive_error\": \"Vestluse arhiveerimine lahti ebaõnnestus\",\n  \"com_ui_unknown\": \"Tundmatu\",\n  \"com_ui_update\": \"Uuenda\",\n  \"com_ui_upload\": \"Laadi üles\",\n  \"com_ui_upload_code_files\": \"Laadi üles koodiinterpreteerija jaoks\",\n  \"com_ui_upload_delay\": \"Faili \\\"{{0}}\\\" üleslaadimine võtab oodatust kauem aega. Palun oota, kuni faili indekseerimine hankimiseks lõpeb.\",\n  \"com_ui_upload_error\": \"Faili üleslaadimisel tekkis viga\",\n  \"com_ui_upload_file_search\": \"Laadi üles failiotsingu jaoks\",\n  \"com_ui_upload_files\": \"Laadi faile üles\",\n  \"com_ui_upload_image\": \"Laadi pilt üles\",\n  \"com_ui_upload_image_input\": \"Laadi pilt üles\",\n  \"com_ui_upload_invalid\": \"Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa piirangut\",\n  \"com_ui_upload_invalid_var\": \"Fail on üleslaadimiseks vigane. Peab olema pilt, mis ei ületa {{0}} MB\",\n  \"com_ui_upload_success\": \"Faili üleslaadimine õnnestus\",\n  \"com_ui_upload_type\": \"Vali üleslaadimise tüüp\",\n  \"com_ui_use_micrphone\": \"Kasuta mikrofoni\",\n  \"com_ui_use_prompt\": \"Kasuta sisendit\",\n  \"com_ui_variables\": \"Muutujad\",\n  \"com_ui_variables_info\": \"Kasuta oma tekstis topelt sulgusid, et luua muutujaid, nt `{{näidismuutuja}}`, et hiljem sisendi kasutamisel täita.\",\n  \"com_ui_version_var\": \"Versioon {{0}}\",\n  \"com_ui_versions\": \"Versioonid\",\n  \"com_ui_view_source\": \"Vaata algset vestlust\",\n  \"com_ui_write\": \"Kirjutamine\",\n  \"com_ui_yes\": \"Jah\",\n  \"com_ui_zoom\": \"Suumi\",\n  \"com_user_message\": \"Sina\",\n  \"com_warning_resubmit_unsupported\": \"AI sõnumi uuesti esitamine pole selle otspunkti jaoks toetatud.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/fi/translation.json",
    "content": "{\n  \"com_assistants_actions\": \"Toiminnot\",\n  \"com_assistants_actions_disabled\": \"Avustaja täytyy luoda ennen toimintojen lisäämistä\",\n  \"com_assistants_actions_info\": \"Salli Avustajalle Tiedonhaku tai Toimintojen suorittaminen API-kutsujen kautta\",\n  \"com_assistants_add_actions\": \"Lisää Toimintoja\",\n  \"com_assistants_add_tools\": \"Lisää Työkaluja\",\n  \"com_assistants_append_date\": \"Lisää nykyinen päivämäärä ja aika\",\n  \"com_assistants_append_date_tooltip\": \"Kun käytössä, nykyinen asiakkaan päivämäärä ja aika lisätään avustajan järjestelmäohjeisiin.\",\n  \"com_assistants_available_actions\": \"Käytettävissä olevat Toiminnot\",\n  \"com_assistants_capabilities\": \"Kyvykkyydet\",\n  \"com_assistants_code_interpreter\": \"Kooditulkki\",\n  \"com_assistants_code_interpreter_files\": \"Seuraavat tiedostot ovat vain Kooditulkin käytettävissä:\",\n  \"com_assistants_completed_action\": \"Puhuttiin {{0}}:lle\",\n  \"com_assistants_completed_function\": \"Suoritettiin {{0}}\",\n  \"com_assistants_create_error\": \"Avustajan luonnissa tapahtui virhe.\",\n  \"com_assistants_create_success\": \"Luonti onnistui\",\n  \"com_assistants_delete_actions_error\": \"Toiminnon poistamisessa tapahtui virhe.\",\n  \"com_assistants_delete_actions_success\": \"Toiminto poistettiin Avustajalta onnistuneesti\",\n  \"com_assistants_description_placeholder\": \"Valinnainen: Kuvaus Avustajasta\",\n  \"com_assistants_domain_info\": \"Avustaja lähetti tiedon tänne: {{0}}\",\n  \"com_assistants_file_search\": \"Tiedostohaku\",\n  \"com_assistants_file_search_info\": \"Vektoritietokannan liittämistä tiedostohakuun ei vielä tueta. Voit liittää ne rajapinnan palveluntarjoajan käyttöliittymän kautta, tai liittää tiedostoja viesteihin keskusteluketjupohjaisesti.\",\n  \"com_assistants_function_use\": \"Avustaja käytti: {{0}}\",\n  \"com_assistants_image_vision\": \"Kuvanäkö\",\n  \"com_assistants_instructions_placeholder\": \"Avustajan käyttämät järjestelmäohjeet\",\n  \"com_assistants_knowledge\": \"Tiedot\",\n  \"com_assistants_knowledge_disabled\": \"Avustaja täytyy ensin luoda, ja Kooditulkki tai Tiedonhaku täytyy olla päällä ja asetukset tallennettuna, ennen kuin tiedostoja voidaan ladata Tietoihin.\",\n  \"com_assistants_knowledge_info\": \"Jos lataat tiedostoja Tietoihin, Avustajasi kanssa käytyihin keskusteluihin voi tulla niiden sisältöä.\",\n  \"com_assistants_name_placeholder\": \"Valinnainen: Avustajan nimi\",\n  \"com_assistants_non_retrieval_model\": \"Tiedostohaku ei ole käytössä tässä mallissa. Valitse toinen malli.\",\n  \"com_assistants_retrieval\": \"Tiedonhaku\",\n  \"com_assistants_running_action\": \"Suoritetaan toimintoa\",\n  \"com_assistants_search_name\": \"Hae Avustajia nimen perusteella\",\n  \"com_assistants_update_actions_error\": \"Toiminnon luomisessa tai päivittämisessä tapahtui virhe.\",\n  \"com_assistants_update_actions_success\": \"Toiminto luotiiin tai päivitettiin onnistuneesti\",\n  \"com_assistants_update_error\": \"Avustajan päivittämisessä tapahtui virhe.\",\n  \"com_assistants_update_success\": \"Päivitys onnistui\",\n  \"com_auth_already_have_account\": \"Käyttäjätilisi on jo luotu?\",\n  \"com_auth_back_to_login\": \"Palaa kirjautumiseen\",\n  \"com_auth_click\": \"Napauta\",\n  \"com_auth_click_here\": \"Napauta tästä\",\n  \"com_auth_continue\": \"Jatka\",\n  \"com_auth_create_account\": \"Luo tili\",\n  \"com_auth_discord_login\": \"Jatka Discordilla\",\n  \"com_auth_email\": \"Sähköposti\",\n  \"com_auth_email_address\": \"Sähköpostiosoite Email address\",\n  \"com_auth_email_max_length\": \"Sähköpostiosoitteen ei pitäisi olla 120 merkkiä pidempi\",\n  \"com_auth_email_min_length\": \"Sähköpostiosoitteen on oltava vähintään 6 merkkiä pitkä\",\n  \"com_auth_email_pattern\": \"Sähköpostiosoite on syötettävä oikeassa muodossa\",\n  \"com_auth_email_required\": \"Sähköposti on pakollinen\",\n  \"com_auth_email_resend_link\": \"Lähetä sähköposti uudestaan\",\n  \"com_auth_email_resent_failed\": \"Varmennussähköpostin uudelleenlähetys epäonnistui\",\n  \"com_auth_email_resent_success\": \"Varmennussähköpostin uudelleenlähetys onnistui\",\n  \"com_auth_email_verification_failed\": \"Sähköpostin varmentaminen epäonnistui\",\n  \"com_auth_email_verification_failed_token_missing\": \"Varmennus epäonnistui tunnisteen puuttumisen vuoksi\",\n  \"com_auth_email_verification_in_progress\": \"Varmennetaan sähköpostia. Ole hyvä ja odota.\",\n  \"com_auth_email_verification_invalid\": \"Sähköpostin varmentaminen ei voimassa\",\n  \"com_auth_email_verification_redirecting\": \"Uudelleenohjataan {{0}} sekunnissa...\",\n  \"com_auth_email_verification_resend_prompt\": \"Sähköposti ei saapunut perille?\",\n  \"com_auth_email_verification_success\": \"Sähköposti varmennettu\",\n  \"com_auth_error_create\": \"Tilin rekisteröinnissä tapahtui virhe. Yritä uudestaan.\",\n  \"com_auth_error_invalid_reset_token\": \"Tämä salasanan uusimistunniste ei ole enää voimassa.\",\n  \"com_auth_error_login\": \"Kirjautuminen annetuilla tiedoilla ei onnistunut. Tarkista kirjautumistiedot, ja yritä uudestaan.\",\n  \"com_auth_error_login_ban\": \"Tilisi on väliaikaisesti suljettu palvelun sääntöjen rikkomisesta.\",\n  \"com_auth_error_login_rl\": \"Liian monta kirjautumisyritystä lyhyen ajan sisällä. Yritä myöhemmin uudestaan.\",\n  \"com_auth_error_login_server\": \"Tapahtui sisäinen palvelinvirhe. Odota hetki, ja yritä uudestaan.\",\n  \"com_auth_error_login_unverified\": \"Tiliäsi ei ole vahvistettu. Vahvistuslinkin pitäisi löytyä sähköposteistasi.\",\n  \"com_auth_facebook_login\": \"Jatka Facebookilla\",\n  \"com_auth_full_name\": \"Koko nimi\",\n  \"com_auth_github_login\": \"Jatka Githubilla\",\n  \"com_auth_google_login\": \"Jatka Googlella\",\n  \"com_auth_here\": \"TÄTÄ\",\n  \"com_auth_login\": \"Kirjaudu\",\n  \"com_auth_login_with_new_password\": \"Voit nyt kirjautua uudella salasanallasi.\",\n  \"com_auth_name_max_length\": \"Nimi voi olla enintään 80 merkkiä pitkä\",\n  \"com_auth_name_min_length\": \"Nimessä on oltava vähintään 3 merkkiä\",\n  \"com_auth_name_required\": \"Nimi on pakollinen\",\n  \"com_auth_no_account\": \"Ei tunnusta?\",\n  \"com_auth_password\": \"Salasana\",\n  \"com_auth_password_confirm\": \"Vahvista salasana\",\n  \"com_auth_password_forgot\": \"Salasana unohtunut?\",\n  \"com_auth_password_max_length\": \"Salasana voi olla enintään 128 merkkiä\",\n  \"com_auth_password_min_length\": \"Salasanan on oltava vähintään 8 merkkiä pitkä\",\n  \"com_auth_password_not_match\": \"Salasanat eivät täsmää\",\n  \"com_auth_password_required\": \"Salasana on pakollinen\",\n  \"com_auth_registration_success_generic\": \"Tarkista sähköpostisi sähköpostiosoitteen vahvistamiseksi.\",\n  \"com_auth_registration_success_insecure\": \"Rekisteröityminen onnistui.\",\n  \"com_auth_reset_password\": \"Aseta uusi salasana\",\n  \"com_auth_reset_password_if_email_exists\": \"Jos kyseiselle sähköpostiosoitteelle löytyy käyttäjätili, siihen lähetetään sähköposti joka sisältää ohjeet salasanan uusimiseen. Tarkistathan myös roskapostikansion.\",\n  \"com_auth_reset_password_link_sent\": \"Sähköposti lähetetty\",\n  \"com_auth_reset_password_success\": \"Salasanan asettaminen onnistui\",\n  \"com_auth_sign_in\": \"Kirjaudu\",\n  \"com_auth_sign_up\": \"Rekisteröidy\",\n  \"com_auth_submit_registration\": \"Lähetä rekisteröityminen\",\n  \"com_auth_to_reset_your_password\": \"asettaaksesi uuden salasanan.\",\n  \"com_auth_to_try_again\": \"kokeillaksesi uudestaan.\",\n  \"com_auth_username\": \"Käyttäjänimi (valinnainen)\",\n  \"com_auth_username_max_length\": \"Käyttäjänimi voi olla enintään 20 merkkiä pitkä\",\n  \"com_auth_username_min_length\": \"Käyttäjänimessä on oltava vähintään 2 merkkiä\",\n  \"com_auth_welcome_back\": \"Tervetuloa takaisin\",\n  \"com_endpoint\": \"Päätepiste\",\n  \"com_endpoint_agent\": \"Agentti\",\n  \"com_endpoint_agent_model\": \"Agenttimalli (Suositus: GPT-3.5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Vastauksen maksimi-tokenmäärä. valitse pienempi arvo, jos haluat lyhyempiä vastauksia, ja korkeampi arvo, jos haluat pidempiä vastauksia.\",\n  \"com_endpoint_anthropic_temp\": \"Vaihteluväli on 0 - 1. Käytä lähempänä nollaa olevaa lämpötilaa analyyttisiin tai monivalintatehtäviin, ja lähempänä yhtä luoviin ja generatiivisiin tehtäviin. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k vaikuttaa siihen, miten malli valitsee tokeineita tulokseen. Jos Top-k on 1, valitaan se token, joka on kaikkien todennäköisen mallin sanastossa (tunnetaan myös nimellä ahne dekoodaus), kun taas top-k 3 tarkoittaisi, että seuraavat token valitaan 3 todennäköisimmän tokenin joukosta, lämpötilaa hyödyntäen.\",\n  \"com_endpoint_anthropic_topp\": \"Top-P vaikuttaa siihen kuinka malli valitsee tokeneita tulokseen. Tokenit valitaan top-k:sta (ks. Top-k -parametri) todennäköisimmistä vähiten todennäköseen, kunnes niiden todennäköisyyksien summa ylittää Top-P -arvon.\",\n  \"com_endpoint_assistant\": \"Avustaja\",\n  \"com_endpoint_assistant_model\": \"Avustajan malli\",\n  \"com_endpoint_assistant_placeholder\": \"Valitse Avustaja oikeanpuoleisesta sivupalkista\",\n  \"com_endpoint_completion\": \"Vastaus\",\n  \"com_endpoint_completion_model\": \"Vastausmalli (Suositus: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Napauta tästä\",\n  \"com_endpoint_config_google_api_info\": \"Saadaksesi Generative Language API -avaimesi (Gemini:a varten),\",\n  \"com_endpoint_config_google_api_key\": \"Google API Key\",\n  \"com_endpoint_config_google_cloud_platform\": \"(Google Cloud Platform:ista)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google Service Account Key\",\n  \"com_endpoint_config_key\": \"Aseta API-avain\",\n  \"com_endpoint_config_key_encryption\": \"Avaimesi salataan ja poistetaan: \",\n  \"com_endpoint_config_key_for\": \"Aseta API-avain:\",\n  \"com_endpoint_config_key_google_need_to\": \"Sinun täytyy\",\n  \"com_endpoint_config_key_google_service_account\": \"Luo Palvelutili (Service Account)\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"sallia Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API Google Cloud:issa, sitten\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Muista napauttaa 'Create and Continue' jotta saat ainakin 'Vertex AI User' -roolin. Lopuksi luo JSON-avain tänne tuotavaksi.\",\n  \"com_endpoint_config_key_import_json_key\": \"Tuo palveluosoitteen JSON-avain.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Virheellinen palveluosoitteen JSON-avain. Toitko oikean tiedoston?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Palveluosoitteetn JSON-avain tuotu onnistuneesti\",\n  \"com_endpoint_config_key_name\": \"Avain\",\n  \"com_endpoint_config_key_never_expires\": \"Avaimesi ei koskaan vanhene\",\n  \"com_endpoint_config_placeholder\": \"Keskustellaksesi aseta avaimesi Ylätunnistevalikossa.\",\n  \"com_endpoint_config_value\": \"Aseta arvo:\",\n  \"com_endpoint_context\": \"Konteksti\",\n  \"com_endpoint_context_info\": \"Kontekstia varten käytettävien tokeneiden maksimimäärä. Käytä tätä pyyntökohtaisten token-määrien hallinnointiin. Jos tätä ei määritetä, käytössä ovat järjestelmän oletusarvot perustuen tiedossa olevien mallien konteksti-ikkunoiden kokoon. Korkeamman arvon asettaminen voi aiheuttaa virheitä tai korkeamman token-hinnan.\",\n  \"com_endpoint_context_tokens\": \"Konteksti-tokenien maksimimäärä\",\n  \"com_endpoint_custom_name\": \"Mukautettu nimi\",\n  \"com_endpoint_default\": \"oletus\",\n  \"com_endpoint_default_blank\": \"oletus: tyhjä\",\n  \"com_endpoint_default_empty\": \"oletus: tyhjä\",\n  \"com_endpoint_default_with_num\": \"oletus: {{0}}\",\n  \"com_endpoint_examples\": \" Esiasetukset\",\n  \"com_endpoint_export\": \"Vie\",\n  \"com_endpoint_export_share\": \"Vie/Jaa\",\n  \"com_endpoint_frequency_penalty\": \"Esiintymistiheysrangaistus\",\n  \"com_endpoint_func_hover\": \"Salli lisäosien käyttö OpenAI-toimintoina\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Aseta Googlelle mukautettu nimi\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maksimimäärä tokeneillre, joita generoidaan tulokseen. Valitse pienempi arvo saadaksesi lyhyempiä vastauksia, ja suurempi arvo pitkiä vastauksia varten.\",\n  \"com_endpoint_google_temp\": \"Korkeampi arvo = satunnaisempi; matalampi arvo = keskittyneempi ja deterministisempi. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.\",\n  \"com_endpoint_google_topk\": \"Top-k vaikuttaa siihen, miten malli valitsee tokeineita tulokseen. Jos Top-k on 1, valitaan se token, joka on kaikkien todennäköisen mallin sanastossa (tunnetaan myös nimellä ahne dekoodaus), kun taas top-k 3 tarkoittaisi, että seuraavat token valitaan 3 todennäköisimmän tokenin joukosta, lämpötilaa hyödyntäen.\",\n  \"com_endpoint_google_topp\": \"Top-P vaikuttaa siihen kuinka malli valitsee tokeneita tulokseen. Tokenit valitaan top-k:sta (ks. Top-k -parametri) todennäköisimmistä vähiten todennäköseen, kunnes niiden todennäköisyyksien summa ylittää Top-P -arvon.\",\n  \"com_endpoint_instructions_assistants\": \"Yliaja ohjeet\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Yliajaa Avustajan ohjeet. Tätä voi hyödyntää käytöksen muuttamiseen keskustelukohtaisesti.\",\n  \"com_endpoint_max_output_tokens\": \"Tulos-tokeneiden maksimimäärä\",\n  \"com_endpoint_message\": \"Vastaanottajana\",\n  \"com_endpoint_message_not_appendable\": \"Muokkaa viestiäsi tai Luo uudestaan.\",\n  \"com_endpoint_my_preset\": \"Esiasetukseni\",\n  \"com_endpoint_no_presets\": \"Ei vielä esiasetuksia. Käytä Asetukset-painiketta luodaksesi esiasetuksen.\",\n  \"com_endpoint_open_menu\": \"Avaa valikko\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Anna tekoälylle mukautettu nimi\",\n  \"com_endpoint_openai_detail\": \"Kuvatarkkuus Vision-pyynnöille. \\\"Matala\\\" on halvempi ja nopeampi, \\\"Korkea\\\" on yksityiskohtaisempi ja kalliimpi, ja \\\"Auto\\\" valitsee näiden välillä automaattisesti kuvan koon perusteella.\",\n  \"com_endpoint_openai_freq\": \"Lukuarvo väliltä -2.0 - 2.0. Positiiviset arvot rankaisevat uusia tokeneita perustuen niiden esiintymistiheyteen siihen mennessä luodussa tekstissä, mikä vähentää todennäköisyyttä, että malli toistaa saman rivin täsmälleen samanlaisena.\",\n  \"com_endpoint_openai_max\": \"Luotavien tokeneiden maksimimäärä. Mallin konteksti-ikkuna rajoittaa syötteiden ja vastausten kokonaispituutta.\",\n  \"com_endpoint_openai_max_tokens\": \"Valinnainen 'max_tokens' -kenttä, joka kuvaa keskustelun vastauksessa generoitujen tokeneiden maksimimäärää. Syötteen ja vastauksen kokonaispituutta rajoittaa mallin konteksti-ikkuna. Konteksti -ikkunan koon ylittämisestä voi seurata virheitä.\",\n  \"com_endpoint_openai_pres\": \"Lukuarvo väliltä -2.0 - 2.0. Positiiviset arvot rankaisevat uusia tokeneita perustuen niiden esiintymiseen siihen mennessä luodussa tekstissä, ja lisäävät todennäköisyyttä että malli aloittaa uuden aiheen.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Aseta mukautetut ohjeet Järjestelmäohjeisiin sisällytettäväksi. Oletus: tyhjä\",\n  \"com_endpoint_openai_resend\": \"Lähetä uudestaan kaikki aiemmin liitetyt kuvat. Huom: tämä voi lisätä token-kustannuksia huomattavasti, ja useiden kuvien käsittelystä kerralla voi seurata virheitä.\",\n  \"com_endpoint_openai_resend_files\": \"Lähetä uudestaan kaikki aiemmin liitetyt tiedostot. Huom: tämä lisää token-kustannuksia, ja useiden tiedostojen käsittelystä kerralla voi seurata virheitä.\",\n  \"com_endpoint_openai_stop\": \"Enintään 4 sekvenssiä, joiden kohdalla API lopettaa tokenien luomisen.\",\n  \"com_endpoint_openai_temp\": \"Korkeampi arvo = satunnaisempi; matalampi arvo = keskittyneempi ja deterministisempi. Suosittelemme, että muokkaat tätä tai Top P:tä, mutta ei molempia.\",\n  \"com_endpoint_openai_topp\": \"Vaihtoehto lämpötilapohjaiselle otannalle, ydinotanta, valitsee tokeneita Top P -todennäköisyysmassasta. Esimerkiksi arvo 0.1 tarkoittaa että vain top 10% tokeneista todennäköisyysmassassa huomioidaan. Suosittelemme, että muokkaat tätä tai lämpötilaa, mutta ei molempia.\",\n  \"com_endpoint_output\": \"Tulos\",\n  \"com_endpoint_plug_image_detail\": \"Kuvan yksityiskohdat\",\n  \"com_endpoint_plug_resend_files\": \"Lähetä tiedostot uudestaan\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Aseta mukautetut ohjeet Järjestelmäohjeisiin liitettäviksi. Oletus: tyhjä\",\n  \"com_endpoint_plug_skip_completion\": \"Ohita Vastaus\",\n  \"com_endpoint_plug_use_functions\": \"Käytä Toimintoja\",\n  \"com_endpoint_presence_penalty\": \"Esiintymisrangaistus\",\n  \"com_endpoint_preset\": \"esiasetus\",\n  \"com_endpoint_preset_default\": \"on nyt oletus-esiasetus.\",\n  \"com_endpoint_preset_default_item\": \"Oletus:\",\n  \"com_endpoint_preset_default_none\": \"Oletus-esiasetusta ei ole käytössä\",\n  \"com_endpoint_preset_default_removed\": \" ei ole enää oletus-esiasetus.\",\n  \"com_endpoint_preset_delete_confirm\": \"Haluatko varmasti poistaa nämä esiasetukset?\",\n  \"com_endpoint_preset_delete_error\": \"Esiasetuksen poistossa tapahtui virhe. Yritä uudestaan.\",\n  \"com_endpoint_preset_import\": \"Esiasetus tuotu!\",\n  \"com_endpoint_preset_import_error\": \"Esiasetuksen tuonnissa tapahtui virhe. Yritä uudestaan.\",\n  \"com_endpoint_preset_name\": \"Esiasetuksen nimi\",\n  \"com_endpoint_preset_save_error\": \"Esiasetuksen tallennuksessa tapahtui virhe. Yritä uudestaan.\",\n  \"com_endpoint_preset_selected\": \"Esiasetus käytössä!\",\n  \"com_endpoint_preset_selected_title\": \"Käytössä!\",\n  \"com_endpoint_preset_title\": \"Esiasetus\",\n  \"com_endpoint_presets\": \"esiasetukset\",\n  \"com_endpoint_presets_clear_warning\": \"Haluatko varmasti tyhjentää kaikki esiasetukset? Tätä toimintoa ei voi perua.\",\n  \"com_endpoint_prompt_prefix\": \"Mukautetut ohjeet\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Lisäohjeet\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Anna lisäohjeita tai kontekstia Avustajan pääohjeiden lisäksi. Set additional instructions or context on top of the Assistant's main instructions. Jätetään huomiotta, jos tyhjä.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Aseta mukautetut ohjeet tai konteksti. Jätetään huomiotta, jos tyhjä.\",\n  \"com_endpoint_save_as_preset\": \"Tallenna esiasetukseksi\",\n  \"com_endpoint_set_custom_name\": \"Aseta mukautettu nimi, jotta esiasetus olisi helpompi löytää\",\n  \"com_endpoint_skip_hover\": \"Mahdollista vastausaskeleen ohitus, joka mahdollistaa lopuulisen vastauksen ja generoitujen askeleiden tarkastelun\",\n  \"com_endpoint_stop\": \"Pysäytyssekvenssit\",\n  \"com_endpoint_stop_placeholder\": \"Erota arvot toisistaan rivinvaihdoilla\",\n  \"com_endpoint_temperature\": \"Lämpötila\",\n  \"com_endpoint_top_k\": \"Top k\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Käytä aktiivista Avustajaa\",\n  \"com_error_expired_user_key\": \"{{0}} varten annettu avain vanheni {{1}}. Syötä uusi avain ja yritä uudestaan.\",\n  \"com_error_invalid_user_key\": \"Avain ei kelpaa. Lisää toimiva avain ja yritä uudestaan.\",\n  \"com_error_moderation\": \"Näyttää siltä, että moderointijärjestelmämme merkitsi lähetetyn sisällön yhteisön sääntöjen vastaisiksi. Emme voi jatkaa tämän aiheen käsittelyä. Jos sinulla on muita kysymyksiä tai aiheita joita haluaisit käsitellä, ole hyvä ja muokkaa viestiäsi, tai aloita uusi keskustelu.\",\n  \"com_error_no_base_url\": \"Base URL puuttuu. Syötä URL ja yritä uudestaan.\",\n  \"com_error_no_user_key\": \"Avainta ei löytynyt. Lisää avain ja yritä uudestaan.\",\n  \"com_files_filter\": \"Suodata tiedostoja...\",\n  \"com_files_no_results\": \"Ei tuloksia.\",\n  \"com_files_number_selected\": \"{{0}}/{{1}} tiedostoa valittu\",\n  \"com_hide_examples\": \"Piilota esimerkit\",\n  \"com_nav_always_make_prod\": \"Tee aina uudet versiot tuotantoon\",\n  \"com_nav_archive_created_at\": \"Arkistointipäivä\",\n  \"com_nav_archive_name\": \"Nimi\",\n  \"com_nav_archived_chats\": \"Arkistoidut keskustelut\",\n  \"com_nav_archived_chats_empty\": \"Sinulla ei ole arkistoituja keskusteluita.\",\n  \"com_nav_audio_play_error\": \"Virhe ääntä toistaessa: {{0}}\",\n  \"com_nav_audio_process_error\": \"Virhe ääntä käsitellessä: {{0}}\",\n  \"com_nav_auto_scroll\": \"Vieritä automaattisesti viimeisimpään viestiin keskustelua avatessa\",\n  \"com_nav_auto_send_prompts\": \"Lähetä syötteet automaattisesti\",\n  \"com_nav_auto_send_text\": \"Lähetä teksti automaattisesti (3 sekunnin kuluttua)\",\n  \"com_nav_auto_transcribe_audio\": \"Automaattinen äänen litterointi\",\n  \"com_nav_automatic_playback\": \"Toista viimeisin viesti automaattisesti\",\n  \"com_nav_balance\": \"Saldo\",\n  \"com_nav_browser\": \"Selain\",\n  \"com_nav_change_picture\": \"Vaihda kuva\",\n  \"com_nav_clear_all_chats\": \"Tyhjennä kaikki keskustelut\",\n  \"com_nav_clear_conversation\": \"Tyhjennä keskustelut\",\n  \"com_nav_clear_conversation_confirm_message\": \"Oletko varma että haluat tyhjentää kaikki keskustelut? Tätä toimintoa ei voi peruuttaa.\",\n  \"com_nav_close_sidebar\": \"Sulje sivupalkki\",\n  \"com_nav_confirm_clear\": \"Vahvista tyhjennys\",\n  \"com_nav_conversation_mode\": \"Keskustelumoodi\",\n  \"com_nav_db_sensitivity\": \"Desibeliherkkyys\",\n  \"com_nav_delete_account\": \"Poista käyttäjätili\",\n  \"com_nav_delete_account_button\": \"Poista käyttäjätilini pysyvästi\",\n  \"com_nav_delete_account_confirm\": \"Poista käyttäjätili - oletko varma?\",\n  \"com_nav_delete_account_email_placeholder\": \"Syötä käyttäjätilisi sähköpostiosoite\",\n  \"com_nav_delete_cache_storage\": \"Tyhjennä TTS (tekstistä ääneksi) -välimuistivarasto\",\n  \"com_nav_delete_data_info\": \"Kaikki tietosi poistetaan.\",\n  \"com_nav_delete_warning\": \"VAROITUS: Tämä poistaa käyttäjätilisi pysyvästi.\",\n  \"com_nav_enable_cache_tts\": \"TTS (tekstistä ääneksi) -välimuisti käyttöön\",\n  \"com_nav_enabled\": \"Päällä\",\n  \"com_nav_engine\": \"Puhemoottori\",\n  \"com_nav_enter_to_send\": \"Lähetä viestit Enter-painikkeella\",\n  \"com_nav_export\": \"Vie\",\n  \"com_nav_export_all_message_branches\": \"Vie kaikki sivupolut\",\n  \"com_nav_export_conversation\": \"Vie keskustelu\",\n  \"com_nav_export_filename\": \"Tiedoston nimi\",\n  \"com_nav_export_filename_placeholder\": \"Aseta tiedoston nimi\",\n  \"com_nav_export_include_endpoint_options\": \"Sisällytä päätepistevaihtoehdot\",\n  \"com_nav_export_recursive\": \"Rekursiivisesti\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekursiivisesti vai sarjassa?\",\n  \"com_nav_export_type\": \"Tyyppi\",\n  \"com_nav_external\": \"Ulkoinen\",\n  \"com_nav_help_faq\": \"Ohjeet & FAQ\",\n  \"com_nav_hide_panel\": \"Piilota oikeanpuoleinen sivupaneeli\",\n  \"com_nav_info_enter_to_send\": \"Jos tämä on päällä, Enter-näppäimen painaminen lähettää viestin. Kun asetus on pois päältä, Enter lisää rivinvaihdon, ja viestin lähettämiseksi on painettava CTRL + ENTER.\",\n  \"com_nav_info_fork_change_default\": \"'Vain näkyvät viestit' sisältää vain suoran polun valittuun viestiin. 'Sisällytä sivupolut' lisää polun varrella olevat sivupolut. 'Lisää kaikki tänne/täältä' sisällyttää kaikki kytköksissä olevat viestit ja sivupolut.\",\n  \"com_nav_info_fork_split_target_setting\": \"Jos tämä on päällä, haara syntyy kohdeviestistä keskustelun viimeiseen viestiin valitun haarautumistavan mukaisesti.\",\n  \"com_nav_info_latex_parsing\": \"Kun tämä on päällä, viesteissä oleva LaTeX-koodi näytetään yhtälöinä. Tämän asetuksen jättäminen pois päältä saattaa parantaa suorituskykyä, jos et tarvitse LaTeX-tulkkia.\",\n  \"com_nav_info_save_draft\": \"Jos tämä on päällä, teksti ja liitteet jotka syötät keskusteluun tallennetaan automaattisesti paikallisina luonnoksina. Nämä luonnokset ovat käytettävissä, vaikka välillä lataisit sivun uudestaan tai vaihtaisit toiseen keskusteluun. Luonnokset on tallettettu paikallisesti omalle laitteellesi, ja ne poistetaan, kun viesti on lähetetty.\",\n  \"com_nav_info_user_name_display\": \"Jos tämä on päällä, lähettäjän käyttäjänimi näytetään jokaisen lähettämäsi viestin päällä. Jos tämä ei ole käytössä, viestien päällä näytetään vain \\\"Sinä\\\".\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Tunnista automaattisesti\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Kieli\",\n  \"com_nav_latex_parsing\": \"Tulkitse LaTeX:ia viesteissä (saattaa vaikuttaa suoritustehoon)\",\n  \"com_nav_log_out\": \"Kirjaudu ulos\",\n  \"com_nav_long_audio_warning\": \"Pidemmän tekstin käsittely kestää kauemmin.\",\n  \"com_nav_modular_chat\": \"Salli päätepisteen vaihto kesken keskustelun\",\n  \"com_nav_my_files\": \"Omat tiedostot\",\n  \"com_nav_not_supported\": \"Ei tuettu\",\n  \"com_nav_open_sidebar\": \"Avaa sivupalkki\",\n  \"com_nav_playback_rate\": \"Äänen toiston nopeus\",\n  \"com_nav_plugin_auth_error\": \"Tämän lisäosan varmentamisessa tapahtui virhe. Yritä uudestaan.\",\n  \"com_nav_plugin_install\": \"Asenna\",\n  \"com_nav_plugin_search\": \"Hae lisäosaa\",\n  \"com_nav_plugin_store\": \"Lisäosakauppa\",\n  \"com_nav_plugin_uninstall\": \"Poista\",\n  \"com_nav_profile_picture\": \"Profiilikuva\",\n  \"com_nav_save_drafts\": \"Tallenna luonnokset paikallisesti\",\n  \"com_nav_search_placeholder\": \"Etsi keskusteluista\",\n  \"com_nav_send_message\": \"Lähetä viesti\",\n  \"com_nav_setting_account\": \"Käyttäjätili\",\n  \"com_nav_setting_beta\": \"Beta-toiminnot\",\n  \"com_nav_setting_data\": \"Datakontrollit\",\n  \"com_nav_setting_general\": \"Yleiset\",\n  \"com_nav_setting_speech\": \"Puhe\",\n  \"com_nav_settings\": \"Asetukset\",\n  \"com_nav_shared_links\": \"Jaetut linkit\",\n  \"com_nav_show_code\": \"Kooditulkkia käyttäessä näytä aina koodi\",\n  \"com_nav_speech_to_text\": \"Puheesta tekstiksi\",\n  \"com_nav_text_to_speech\": \"Tekstistä puheeksi\",\n  \"com_nav_theme\": \"Teema\",\n  \"com_nav_theme_dark\": \"Tumma\",\n  \"com_nav_theme_light\": \"Vaalea\",\n  \"com_nav_theme_system\": \"Oletus\",\n  \"com_nav_tool_dialog\": \"Avustajatyökalut\",\n  \"com_nav_tool_dialog_description\": \"Avustaja täytyy tallentaa, jotta työkaluvalinta säilyisi.\",\n  \"com_nav_tool_remove\": \"Poista\",\n  \"com_nav_tool_search\": \"Hakutyökalut\",\n  \"com_nav_user\": \"KÄYTTÄJÄ\",\n  \"com_nav_user_name_display\": \"Näytä käyttäjänimi viesteissä\",\n  \"com_nav_voice_select\": \"Ääni\",\n  \"com_nav_welcome_assistant\": \"Ole hyvä ja valitse Avustaja\",\n  \"com_nav_welcome_message\": \"Miten voin auttaa tänään?\",\n  \"com_show_agent_settings\": \"Näytä Agentin asetukset\",\n  \"com_show_completion_settings\": \"Näytä Vastausasetukset\",\n  \"com_show_examples\": \"Näytä esimerkit\",\n  \"com_sidepanel_assistant_builder\": \"Avustajan rakentaminen\",\n  \"com_sidepanel_attach_files\": \"Liitä tiedostoja\",\n  \"com_sidepanel_hide_panel\": \"Piilota sivupalkki\",\n  \"com_sidepanel_manage_files\": \"Hallinnoi tiedostoja\",\n  \"com_sidepanel_parameters\": \"Parametrit\",\n  \"com_sidepanel_select_assistant\": \"Valitse Avustaja\",\n  \"com_ui_accept\": \"Hyväksyn\",\n  \"com_ui_add\": \"Lisää\",\n  \"com_ui_add_model_preset\": \"Lisää malli tai esiasetus lisävastausta varten\",\n  \"com_ui_admin\": \"Ylläpito\",\n  \"com_ui_admin_settings\": \"Ylläpitoasetukset\",\n  \"com_ui_advanced\": \"Edistynyt\",\n  \"com_ui_all\": \"kaikki\",\n  \"com_ui_all_proper\": \"Kaikki\",\n  \"com_ui_archive\": \"Arkisto\",\n  \"com_ui_archive_error\": \"Keskustelun arkistointi epäonnistui\",\n  \"com_ui_ascending\": \"Nouseva\",\n  \"com_ui_assistant\": \"Avustaja\",\n  \"com_ui_assistant_delete_error\": \"Avustajan poistossa tapahtui virhe\",\n  \"com_ui_assistant_deleted\": \"Avustajan poisto onnistui\",\n  \"com_ui_assistants\": \"Avustajat\",\n  \"com_ui_assistants_output\": \"Avustajien tuotokset\",\n  \"com_ui_attach_error\": \"Tiedosto ei voi liittää. Luo tai valitse keskustelu, tai kokeile ladata sivu uudestaan.\",\n  \"com_ui_attach_error_openai\": \"Avustajan tiedostoja ei voi liittää muihin päätepisteisiin\",\n  \"com_ui_attach_error_size\": \"Tiedoston koko ylittää päätepisteen rajan:\",\n  \"com_ui_attach_error_type\": \"Päätepiste ei tue tiedostotyyppiä::\",\n  \"com_ui_attach_warn_endpoint\": \"Ilman yhteensopivaa työkalua muut kuin Avustajan tiedostot voidaan jättää huomiotta.\",\n  \"com_ui_attachment\": \"Liitetiedosto\",\n  \"com_ui_authentication\": \"Autentikointi\",\n  \"com_ui_avatar\": \"Profiilikuva\",\n  \"com_ui_back_to_chat\": \"Palaa keskusteluun\",\n  \"com_ui_back_to_prompts\": \"Palaa syötteisiin\",\n  \"com_ui_bookmark_delete_confirm\": \"Oletko varma, että haluat poistaa tämän kirjanmerkin?\",\n  \"com_ui_bookmarks\": \"Kirjanmerkit\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Lisää nykyiseen keskusteluun\",\n  \"com_ui_bookmarks_count\": \"Määrä\",\n  \"com_ui_bookmarks_create_error\": \"Virhe kirjanmerkin luomisessa\",\n  \"com_ui_bookmarks_create_success\": \"Kirjanmerkki luotu onnistuneesti\",\n  \"com_ui_bookmarks_delete_error\": \"Virhe kirjanmerkin poistamisessa\",\n  \"com_ui_bookmarks_delete_success\": \"Kirjanmerkki poistettu onnistuneesti\",\n  \"com_ui_bookmarks_description\": \"Kuvaus\",\n  \"com_ui_bookmarks_new\": \"Uusi kirjanmerkki\",\n  \"com_ui_bookmarks_title\": \"Otsikko\",\n  \"com_ui_bookmarks_update_error\": \"Virhe kirjanmerkin päivittämisessä\",\n  \"com_ui_bookmarks_update_success\": \"Kirjanmerkki päivitetty onnistuneesti\",\n  \"com_ui_cancel\": \"Peruuta\",\n  \"com_ui_chat\": \"Keskustelu\",\n  \"com_ui_clear\": \"Tyhjennä\",\n  \"com_ui_close\": \"Sulje\",\n  \"com_ui_code\": \"Koodi\",\n  \"com_ui_command_placeholder\": \"Valinnainen: Käsky syötteelle. Oletuskäskynä on nimi.\",\n  \"com_ui_command_usage_placeholder\": \"Valitse syöte käskyn tai nimen perusteella\",\n  \"com_ui_confirm_action\": \"Vahvista toiminto\",\n  \"com_ui_context\": \"Konteksti\",\n  \"com_ui_continue\": \"Jatka\",\n  \"com_ui_copied\": \"Kopioitu!\",\n  \"com_ui_copied_to_clipboard\": \"Kopioitu leikepöydältä\",\n  \"com_ui_copy_code\": \"Kopioi koodi\",\n  \"com_ui_copy_link\": \"Kopioi linkki\",\n  \"com_ui_copy_to_clipboard\": \"Kopioi leikepöydälle\",\n  \"com_ui_create\": \"Luo\",\n  \"com_ui_create_link\": \"Luo linkki\",\n  \"com_ui_create_prompt\": \"Luo syöte\",\n  \"com_ui_dashboard\": \"Työpöytä\",\n  \"com_ui_date\": \"Päivämäärä\",\n  \"com_ui_date_april\": \"Huhtikuu\",\n  \"com_ui_date_august\": \"Elokuu\",\n  \"com_ui_date_december\": \"Joulukuu\",\n  \"com_ui_date_february\": \"Helmikuu\",\n  \"com_ui_date_january\": \"Tammikuu\",\n  \"com_ui_date_july\": \"Heinäkuu\",\n  \"com_ui_date_june\": \"Kesäkuu\",\n  \"com_ui_date_march\": \"Maaliskuu\",\n  \"com_ui_date_may\": \"Toukokuu\",\n  \"com_ui_date_november\": \"Marraskuu\",\n  \"com_ui_date_october\": \"Lokakuu\",\n  \"com_ui_date_previous_30_days\": \"Edelliset 30 päivää\",\n  \"com_ui_date_previous_7_days\": \"Edelliset 7 päivää\",\n  \"com_ui_date_september\": \"Syyskuu\",\n  \"com_ui_date_today\": \"Tänään\",\n  \"com_ui_date_yesterday\": \"Eilen\",\n  \"com_ui_decline\": \"En hyväksy\",\n  \"com_ui_delete\": \"Poista\",\n  \"com_ui_delete_assistant_confirm\": \"Haluatko varmasti poistaa tämän Avustajan? Poistoa ei voi perua.\",\n  \"com_ui_delete_confirm\": \"Tämä suorittaa poiston\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Tämä poistaa valitun version \\\"{{0}}\\\":lta. Jos muita versioita ei ole, syöte poistetaan samalla.\",\n  \"com_ui_delete_conversation\": \"Poista keskustelu?\",\n  \"com_ui_delete_prompt\": \"Poista syöte?\",\n  \"com_ui_descending\": \"Laskeva\",\n  \"com_ui_description\": \"Kuvaus\",\n  \"com_ui_description_placeholder\": \"Valinnainen: Lisää kuvaus syötteelle\",\n  \"com_ui_download_error\": \"Virhe tiedoston lataamisesta. Tiedosto on saatettu poistaa.\",\n  \"com_ui_edit\": \"Muokkaa\",\n  \"com_ui_enter\": \"Syötä\",\n  \"com_ui_error\": \"Virhe\",\n  \"com_ui_error_connection\": \"Palvelimeen yhdistäessä tapahtui virhe. Kokeile ladata sivu uudestaan.\",\n  \"com_ui_error_save_admin_settings\": \"Ylläpitoasetusten tallentamisessa tapahtui virhe.\",\n  \"com_ui_examples\": \"Esimerkkejä\",\n  \"com_ui_field_required\": \"Tämä kenttä on pakollinen\",\n  \"com_ui_filter_prompts_name\": \"Syötteiden nimisuodatus\",\n  \"com_ui_fork\": \"Haarauta\",\n  \"com_ui_fork_all_target\": \"Sisällytä kaikki tänne/täältä\",\n  \"com_ui_fork_branches\": \"Sisällytä sivupolut\",\n  \"com_ui_fork_change_default\": \"Oletushaarautustapa\",\n  \"com_ui_fork_default\": \"Käytä oletushaarautustapaa\",\n  \"com_ui_fork_error\": \"Keskustelun haarauttamisessa tapahtui virhe\",\n  \"com_ui_fork_from_message\": \"Valitse haarautustapa\",\n  \"com_ui_fork_info_1\": \"Käytä tätä asetusta viestien haarauttamiseen halutulla tavalla.\",\n  \"com_ui_fork_info_2\": \"\\\"Haarauttaminen\\\" luo uuden keskustelun siten, että se alkaa/päättyy tietyistä tämänhetkisen keskustelun viesteistä, luoden kopion halutulla tavalla.\",\n  \"com_ui_fork_info_3\": \"\\\"Kohdeviesti\\\" tarkoittaa joko viestiä, josta tämä ponnahdusikkuna avattiin, tai, jos rastitat \\\"{{0}}\\\", viimeisintä viestiä keskustelussa.\",\n  \"com_ui_fork_info_branches\": \"Tämä vaihtoehto haarauttaa näkyvissä olevat viestit sekä niihin liittyvät sivupolut; toisin sanoen, suoran polun kohdeviestiin sisällyttäen matkalla olevat sivupolut.\",\n  \"com_ui_fork_info_remember\": \"Jos tämä on valittu, tallentaa tehdyt valinnat tulevaa jatkokäyttöä varten nopeuttaen keskusteluhaarojen luomista samoilla asetuksilla.\",\n  \"com_ui_fork_info_start\": \"Jos tämä on valittu, haarauttaminen alkaa tästä viestistä keskustelun viimeiseen viestiin saakka, yllä valitun toimintatavan mukaisesti.\",\n  \"com_ui_fork_info_target\": \"Tämä vaihtoehto haarauttaa kaikki viestit kohdeviestiin asti, sisällyttäen sen naapurit; toisin sanoen, kaikki sivupolut riippumatta siitä ovatko ne näkyvissä tai samalla polulla tulevat matkaan.\",\n  \"com_ui_fork_info_visible\": \"Tämä vaihtoehto haarauttaa vain näkyvissä olevat viestit; toisin sanoen, suoran polun kohdeviestiin, ilman sivupolkuja.\",\n  \"com_ui_fork_processing\": \"Haarautetaan keskustelua...\",\n  \"com_ui_fork_remember\": \"Muista\",\n  \"com_ui_fork_remember_checked\": \"Valintasi muistetaan käytön jälkeen. Voit muuttaa tätä milloin tahansa asetuksista.\",\n  \"com_ui_fork_split_target\": \"Aloita haara tästä\",\n  \"com_ui_fork_split_target_setting\": \"Aloita haara oletuksena kohdeviestistä\",\n  \"com_ui_fork_success\": \"Keskustelun haarauttaminen onnistui.\",\n  \"com_ui_fork_visible\": \"Vain näkyvät viestit\",\n  \"com_ui_go_to_conversation\": \"Siirry keskusteluun\",\n  \"com_ui_happy_birthday\": \"On 1. syntymäpäiväni!\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Kuvanluonti\",\n  \"com_ui_import_conversation_error\": \"Keskustelujesi tuonnissa tapahtui virhe\",\n  \"com_ui_import_conversation_file_type_error\": \"Tiedostotyyppi ei ole tuettu tuonnissa\",\n  \"com_ui_import_conversation_info\": \"Tuo keskusteluja JSON-tiedostosta\",\n  \"com_ui_import_conversation_success\": \"Keskustelujen tuonti onnistui\",\n  \"com_ui_input\": \"Syöte\",\n  \"com_ui_instructions\": \"Ohjeet\",\n  \"com_ui_latest_footer\": \"Kaikki tekoälyt kaikille.\",\n  \"com_ui_locked\": \"Lukittu\",\n  \"com_ui_manage\": \"Hallinnoi\",\n  \"com_ui_max_tags\": \"Maksimimäärä on {{0}}. käytetään viimeisimpiä arvoja.\",\n  \"com_ui_mention\": \"Mainitse päätepiste, Avustaja tai asetus vaihtaaksesi siihen pikana\",\n  \"com_ui_min_tags\": \"Enempää arvoja ei voida poistaa. Niiden minimimäärä on {{0}}.\",\n  \"com_ui_model\": \"Malli\",\n  \"com_ui_my_prompts\": \"Omat syötteet\",\n  \"com_ui_name\": \"Nimi\",\n  \"com_ui_new_chat\": \"Uusi keskustelu\",\n  \"com_ui_next\": \"Seuraava\",\n  \"com_ui_no\": \"Ei\",\n  \"com_ui_no_category\": \"Ei kategoriaa\",\n  \"com_ui_no_terms_content\": \"Ei käyttöehtoja näytettäväksi\",\n  \"com_ui_none_selected\": \"Ei valintaa\",\n  \"com_ui_nothing_found\": \"Mitään ei löytynyt\",\n  \"com_ui_of\": \"/\",\n  \"com_ui_off\": \"Pois\",\n  \"com_ui_on\": \"Päällä\",\n  \"com_ui_prev\": \"Edellinen\",\n  \"com_ui_preview\": \"Esikatsele\",\n  \"com_ui_privacy_policy\": \"Tietosuojailmoitus\",\n  \"com_ui_prompt\": \"Syöte\",\n  \"com_ui_prompt_already_shared_to_all\": \"Tämä syöte on jo jaettu kaikille käyttäjille\",\n  \"com_ui_prompt_name\": \"Syötteen nimi\",\n  \"com_ui_prompt_name_required\": \"Syötteen nimi on pakollinen\",\n  \"com_ui_prompt_preview_not_shared\": \"Tekijä ei ole sallinut yhteistyötä tälle syötteelle.\",\n  \"com_ui_prompt_text\": \"Teksti\",\n  \"com_ui_prompt_text_required\": \"Teksti on pakollinen\",\n  \"com_ui_prompt_update_error\": \"Syötteen päivityksessä tapahtui virhe\",\n  \"com_ui_prompts\": \"Syötteet\",\n  \"com_ui_prompts_allow_create\": \"Salli syötteiden luominen\",\n  \"com_ui_prompts_allow_share_global\": \"Salli syötteiden jakaminen kaikille käyttäjille\",\n  \"com_ui_prompts_allow_use\": \"Salli syötteiden käyttäminen\",\n  \"com_ui_read_aloud\": \"Lue ääneen\",\n  \"com_ui_regenerate\": \"Luo uudestaan\",\n  \"com_ui_rename\": \"Nimeä uudestaan\",\n  \"com_ui_result\": \"Tulos\",\n  \"com_ui_revoke\": \"Peruuta\",\n  \"com_ui_revoke_info\": \"Peruuta kaikki käyttäjän antamat tunnisteet\",\n  \"com_ui_save\": \"Tallenna\",\n  \"com_ui_save_submit\": \"Tallenna & Lähetä\",\n  \"com_ui_saved\": \"Tallennettu!\",\n  \"com_ui_select\": \"Valitse\",\n  \"com_ui_select_model\": \"Valitse malli\",\n  \"com_ui_select_search_model\": \"Hae mallia nimen perusteella\",\n  \"com_ui_select_search_plugin\": \"Hae lisäosaa nimen perusteella\",\n  \"com_ui_share\": \"Jaa\",\n  \"com_ui_share_create_message\": \"Nimesi ja jakamisen jälkeen lisätäämäsi viestit pysyvät yksityisinä.\",\n  \"com_ui_share_delete_error\": \"Jaetun linkin poistossa tapahtui virhe\",\n  \"com_ui_share_error\": \"Keskustelulinkin jakamisessa tapahtui virhe\",\n  \"com_ui_share_link_to_chat\": \"Jaa linkki keskusteluun\",\n  \"com_ui_share_to_all_users\": \"Jaa kaikille käyttäjille\",\n  \"com_ui_share_update_message\": \"Nimesi, mukautetut ohjeet, ja mahdolliset viestit jotka lisäät jakamisen jälkeen jäävät yksityisiksi.\",\n  \"com_ui_share_var\": \"Jaa {{0}}\",\n  \"com_ui_shared_link_not_found\": \"Jakolinkki ei löytynyt\",\n  \"com_ui_shared_prompts\": \"Jaetut syötteet\",\n  \"com_ui_show_all\": \"Näytä kaikki\",\n  \"com_ui_simple\": \"Yksinkertainen\",\n  \"com_ui_size\": \"Koko\",\n  \"com_ui_special_variables\": \"Erikoismuuttujat: Käytä {{current_date}} kuluvaa päivämäärää varten, ja {{current_user}} käyttäjätunnustasi varten.\",\n  \"com_ui_stop\": \"Pysäytä\",\n  \"com_ui_storage\": \"Varasto\",\n  \"com_ui_submit\": \"Lähetä\",\n  \"com_ui_terms_and_conditions\": \"Käyttöehdot\",\n  \"com_ui_terms_of_service\": \"Käyttöehdot\",\n  \"com_ui_tools\": \"Työkalut\",\n  \"com_ui_unarchive\": \"Palauta arkistosta\",\n  \"com_ui_unarchive_error\": \"Palautus arkistosta epäonnistui\",\n  \"com_ui_unknown\": \"Tuntematon\",\n  \"com_ui_update\": \"Päivitys\",\n  \"com_ui_upload\": \"Lataa\",\n  \"com_ui_upload_delay\": \"\\\"{{0}}\\\" lataaminen kestää odotettua pidempään. Ole hyvä ja odota kunnes tiedosto saadaan indeksoitua tiedonhakua varten.\",\n  \"com_ui_upload_error\": \"Tiedoston lataamisessa tapahtui virhe\",\n  \"com_ui_upload_files\": \"Lataa tiedostoja\",\n  \"com_ui_upload_invalid\": \"Virheellinen ladattava tiedosto. Tiedoston täytyy olla kokorajaan mahtuva kuvatiedosto\",\n  \"com_ui_upload_invalid_var\": \"Virheellinen ladattava tiedosto. Tiedoston täytyy olla enintään {{0}} MB kokoinen kuvatiedosto\",\n  \"com_ui_upload_success\": \"Tiedoston lataus onnistui\",\n  \"com_ui_use_micrphone\": \"Käytä mikrofonia\",\n  \"com_ui_use_prompt\": \"Käytä syötettä\",\n  \"com_ui_variables\": \"Muuttujat\",\n  \"com_ui_variables_info\": \"Käytä kaksoisaaltosulkeita tekstissäsi muuttujien luomiseen, esim. {{esimerkkimuuttuja}}. Muuttujia voi täyttää myöhemmin syötettä käyttäessä.\",\n  \"com_ui_version_var\": \"Versio {{0}}\",\n  \"com_ui_versions\": \"Versiot\",\n  \"com_ui_yes\": \"Kyllä\",\n  \"com_user_message\": \"Sinä\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/fr/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"L'IA est en train de composer\",\n  \"com_a11y_end\": \"L'IA a terminé sa réponse\",\n  \"com_a11y_start\": \"L'IA a commencé sa réponse\",\n  \"com_agents_allow_editing\": \"Autoriser les autres utilisateurs à modifier votre agent\",\n  \"com_agents_by_librechat\": \"par LibreChat\",\n  \"com_agents_code_interpreter\": \"Lorsqu'activé, permet à votre agent d'utiliser l'API d'interpréteur de code LibreChat pour exécuter du code généré de manière sécurisée, y compris le traitement de fichiers. Nécessite une clé API valide.\",\n  \"com_agents_code_interpreter_title\": \"API d'interpréteur de code\",\n  \"com_agents_create_error\": \"Une erreur s'est produite lors de la création de votre agent.\",\n  \"com_agents_description_placeholder\": \"Décrivez votre Agent ici (facultatif)\",\n  \"com_agents_enable_file_search\": \"Activer la recherche de fichiers\",\n  \"com_agents_file_search_disabled\": \"L'agent doit être créé avant de pouvoir télécharger des fichiers pour la Recherche de Fichiers.\",\n  \"com_agents_file_search_info\": \"Lorsque cette option est activée, l'agent sera informé des noms exacts des fichiers listés ci-dessous, lui permettant d'extraire le contexte pertinent de ces fichiers.\",\n  \"com_agents_instructions_placeholder\": \"Les instructions système que l'agent utilise\",\n  \"com_agents_missing_provider_model\": \"Veuillez sélectionner un fournisseur et un modèle avant de créer un agent.\",\n  \"com_agents_name_placeholder\": \"Facultatif : Le nom de l'agent\",\n  \"com_agents_no_access\": \"Vous n'avez pas l'autorisation de modifier cet agent.\",\n  \"com_agents_not_available\": \"Agent non disponible\",\n  \"com_agents_search_name\": \"Rechercher des agents par nom\",\n  \"com_agents_update_error\": \"Une erreur s'est produite lors de la mise à jour de votre agent\",\n  \"com_assistants_actions\": \"Actions\",\n  \"com_assistants_actions_disabled\": \"Vous devez créer un assistant avant d'ajouter des actions.\",\n  \"com_assistants_actions_info\": \"Permettez à votre Assistant de récupérer des informations ou d'effectuer des actions via des API\",\n  \"com_assistants_add_actions\": \"Ajouter des actions\",\n  \"com_assistants_add_tools\": \"Ajouter des outils\",\n  \"com_assistants_append_date\": \"Ajouter la date et l'heure actuelles\",\n  \"com_assistants_append_date_tooltip\": \"Lorsque activé, la date et l'heure actuelles du client seront ajoutées aux instructions du système de l'assistant.\",\n  \"com_assistants_available_actions\": \"Actions disponibles\",\n  \"com_assistants_capabilities\": \"Capacités des assistants\",\n  \"com_assistants_code_interpreter\": \"Interpréteur de code\",\n  \"com_assistants_code_interpreter_files\": \"Les fichiers suivants sont disponibles uniquement pour l'interpréteur de code :\",\n  \"com_assistants_code_interpreter_info\": \"L'interpréteur de code permet à l'assistant d'écrire et d'exécuter du code. Cet outil peut traiter des fichiers avec différents formats de données et générer des fichiers tels que des graphiques.\",\n  \"com_assistants_completed_action\": \"A parlé à {{0}}\",\n  \"com_assistants_completed_function\": \"A exécuté {{0}}\",\n  \"com_assistants_conversation_starters\": \"Suggestions de conversation\",\n  \"com_assistants_conversation_starters_placeholder\": \"Saisissez une amorce de conversation\",\n  \"com_assistants_create_error\": \"Une erreur s'est produite lors de la création de votre assistant.\",\n  \"com_assistants_create_success\": \"Création réussie\",\n  \"com_assistants_delete_actions_error\": \"Une erreur s'est produite lors de la suppression de l'action.\",\n  \"com_assistants_delete_actions_success\": \"Action supprimée avec succès de l'Assistant\",\n  \"com_assistants_description_placeholder\": \"Décrivez votre assistant ici (facultatif)\",\n  \"com_assistants_domain_info\": \"L'assistant a envoyé ces informations à {{0}}\",\n  \"com_assistants_file_search\": \"Recherche de fichiers\",\n  \"com_assistants_file_search_info\": \"L'ajout de vecteurs de stockage pour la recherche de fichiers n'est pas encore pris en charge. Vous pouvez les ajouter depuis le terrain de jeu du fournisseur ou joindre des fichiers aux messages pour une recherche de fichiers au niveau du fil de discussion.\",\n  \"com_assistants_function_use\": \"L'assistant a utilisé {{0}}\",\n  \"com_assistants_image_vision\": \"Vision d'image\",\n  \"com_assistants_instructions_placeholder\": \"Les instructions système que l'assistant utilise\",\n  \"com_assistants_knowledge\": \"Connaissances\",\n  \"com_assistants_knowledge_disabled\": \"L'assistant doit être créé, et l'interpréteur de code ou la récupération doivent être activés et enregistrés avant de pouvoir importer des fichiers en tant que connaissances.\",\n  \"com_assistants_knowledge_info\": \"Si vous téléchargez des fichiers dans la section Connaissances, les conversations avec votre Assistant pourront inclure le contenu de ces fichiers.\",\n  \"com_assistants_max_starters_reached\": \"Nombre maximum de démarreurs de conversation atteint\",\n  \"com_assistants_name_placeholder\": \"Nom de l'assistant (facultatif)\",\n  \"com_assistants_non_retrieval_model\": \"La recherche de fichiers n'est pas activée pour ce modèle. Veuillez sélectionner un autre modèle.\",\n  \"com_assistants_retrieval\": \"Récupération\",\n  \"com_assistants_running_action\": \"Action en cours\",\n  \"com_assistants_search_name\": \"Rechercher des assistants par nom\",\n  \"com_assistants_update_actions_error\": \"Une erreur s'est produite lors de la création ou de la mise à jour de l'action.\",\n  \"com_assistants_update_actions_success\": \"Action créée ou mise à jour avec succès\",\n  \"com_assistants_update_error\": \"Une erreur s'est produite lors de la mise à jour de votre assistant.\",\n  \"com_assistants_update_success\": \"Mise à jour réussie\",\n  \"com_auth_already_have_account\": \"Vous avez déjà un compte ?\",\n  \"com_auth_apple_login\": \"S'identifier avec Apple\",\n  \"com_auth_back_to_login\": \"Retour à la connexion\",\n  \"com_auth_click\": \"Cliquez\",\n  \"com_auth_click_here\": \"Cliquez ici\",\n  \"com_auth_continue\": \"Continuer\",\n  \"com_auth_create_account\": \"Créez votre compte\",\n  \"com_auth_discord_login\": \"Se connecter avec Discord\",\n  \"com_auth_email\": \"Courriel\",\n  \"com_auth_email_address\": \"Adresse courriel\",\n  \"com_auth_email_max_length\": \"Le courriel ne doit pas dépasser 120 caractères\",\n  \"com_auth_email_min_length\": \"Le courriel doit comporter au moins 6 caractères\",\n  \"com_auth_email_pattern\": \"Vous devez entrer une adresse courriel valide\",\n  \"com_auth_email_required\": \"Le courriel est obligatoire\",\n  \"com_auth_email_resend_link\": \"Renvoyer un courriel\",\n  \"com_auth_email_resent_failed\": \"Échec de la réexpédition du courriel de vérification\",\n  \"com_auth_email_resent_success\": \"Courriel de vérification renvoyé avec succès\",\n  \"com_auth_email_verification_failed\": \"Échec de la vérification du courriel\",\n  \"com_auth_email_verification_failed_token_missing\": \"Échec de la vérification, jeton manquant\",\n  \"com_auth_email_verification_in_progress\": \"Vérification de votre courriel, veuillez patienter\",\n  \"com_auth_email_verification_invalid\": \"Vérification du courriel invalide\",\n  \"com_auth_email_verification_redirecting\": \"Redirection dans {{0}} secondes...\",\n  \"com_auth_email_verification_resend_prompt\": \"Vous n'avez pas reçu de courriel ?\",\n  \"com_auth_email_verification_success\": \"Courriel vérifié avec succès\",\n  \"com_auth_error_create\": \"Il y a eu une erreur lors de la tentative d'enregistrement de votre compte. Veuillez réessayer.\",\n  \"com_auth_error_invalid_reset_token\": \"Ce jeton de réinitialisation de mot de passe n'est plus valide.\",\n  \"com_auth_error_login\": \"Impossible de se connecter avec les informations fournies. Veuillez vérifier vos identifiants et réessayer.\",\n  \"com_auth_error_login_ban\": \"Votre compte a été temporairement banni en raison de violations de notre service.\",\n  \"com_auth_error_login_rl\": \"Trop de tentatives de connexion en peu de temps. Veuillez réessayer plus tard.\",\n  \"com_auth_error_login_server\": \"Une erreur interne du serveur s'est produite. Veuillez patienter quelques instants et réessayer.\",\n  \"com_auth_error_login_unverified\": \"Votre compte n'a pas été vérifié. Veuillez vérifier que vous avez reçu un lien de vérification dans votre courriel.\",\n  \"com_auth_facebook_login\": \"Se connecter avec Facebook\",\n  \"com_auth_full_name\": \"Nom complet\",\n  \"com_auth_github_login\": \"Se connecter avec Github\",\n  \"com_auth_google_login\": \"Se connecter avec Google\",\n  \"com_auth_here\": \"ICI\",\n  \"com_auth_login\": \"Connexion\",\n  \"com_auth_login_with_new_password\": \"Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.\",\n  \"com_auth_name_max_length\": \"Le nom doit être inférieur à 80 caractères\",\n  \"com_auth_name_min_length\": \"Le nom doit comporter au moins 3 caractères\",\n  \"com_auth_name_required\": \"Le nom est obligatoire\",\n  \"com_auth_no_account\": \"Vous n'avez pas de compte?\",\n  \"com_auth_password\": \"Mot de passe\",\n  \"com_auth_password_confirm\": \"Confirmer le mot de passe\",\n  \"com_auth_password_forgot\": \"Mot de passe oublié?\",\n  \"com_auth_password_max_length\": \"Le mot de passe doit être inférieur à 128 caractères\",\n  \"com_auth_password_min_length\": \"Le mot de passe doit comporter au moins 8 caractères\",\n  \"com_auth_password_not_match\": \"Les mots de passe ne correspondent pas\",\n  \"com_auth_password_required\": \"Le mot de passe est obligatoire\",\n  \"com_auth_registration_success_generic\": \"Veuillez visiter votre courriel pour la vérification de celui-ci.\",\n  \"com_auth_registration_success_insecure\": \"Inscription réussie.\",\n  \"com_auth_reset_password\": \"Réinitialiser votre mot de passe\",\n  \"com_auth_reset_password_if_email_exists\": \"Si un compte avec ce courriel existe, un courriel avec des instructions de réinitialisation de mot de passe a été envoyé. Assurez-vous de vérifier votre dossier de courrier indésirable.\",\n  \"com_auth_reset_password_link_sent\": \"Courriel envoyé\",\n  \"com_auth_reset_password_success\": \"Réinitialisation du mot de passe réussie\",\n  \"com_auth_sign_in\": \"Se connecter\",\n  \"com_auth_sign_up\": \"S'inscrire\",\n  \"com_auth_submit_registration\": \"Soumettre l'inscription\",\n  \"com_auth_to_reset_your_password\": \"pour réinitialiser votre mot de passe.\",\n  \"com_auth_to_try_again\": \"pour réessayer.\",\n  \"com_auth_username\": \"Nom d'utilisateur\",\n  \"com_auth_username_max_length\": \"Le nom d'utilisateur doit être inférieur à 20 caractères\",\n  \"com_auth_username_min_length\": \"Le nom d'utilisateur doit comporter au moins 3 caractères\",\n  \"com_auth_welcome_back\": \"Bienvenue à nouveau\",\n  \"com_click_to_download\": \"(cliquez ici pour télécharger)\",\n  \"com_download_expired\": \"Téléchargement expiré\",\n  \"com_download_expires\": \"(cliquez ici pour télécharger - expire le {{0}})\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Modèle d'agent (recommandé : GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Veuillez sélectionner un Agent\",\n  \"com_endpoint_ai\": \"IA\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Nombre maximum de jetons qui peuvent être générés dans la réponse. Spécifiez une valeur plus faible pour des réponses plus courtes et une valeur plus élevée pour des réponses plus longues.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"La mise en cache des prompts permet de réutiliser les contextes ou instructions volumineux entre les appels API, réduisant ainsi les coûts et la latence\",\n  \"com_endpoint_anthropic_temp\": \"Varie de 0 à 1. Utilisez une température proche de 0 pour l'analyse / le choix multiple, et proche de 1 pour les tâches créatives et génératives. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k change la façon dont le modèle sélectionne les jetons pour la sortie. Un top-k de 1 signifie que le jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage glouton), tandis qu'un top-k de 3 signifie que le jeton suivant est sélectionné parmi les 3 jetons les plus probables (en utilisant la température).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p change la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés du plus K (voir le paramètre topK) probable au moins jusqu'à ce que la somme de leurs probabilités égale la valeur top-p.\",\n  \"com_endpoint_assistant\": \"Assistant de point de terminaison\",\n  \"com_endpoint_assistant_model\": \"Modèle d'assistant\",\n  \"com_endpoint_assistant_placeholder\": \"Veuillez sélectionner un assistant dans le panneau latéral droit\",\n  \"com_endpoint_completion\": \"Complétion\",\n  \"com_endpoint_completion_model\": \"Modèle de complétion (recommandé : GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Cliquez ici\",\n  \"com_endpoint_config_google_api_info\": \"Pour obtenir votre clé API de langage génératif (pour Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Clé API Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(de Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Clé de compte de service Google\",\n  \"com_endpoint_config_key\": \"Définir la clé API\",\n  \"com_endpoint_config_key_encryption\": \"Votre clé sera cryptée et supprimée à\",\n  \"com_endpoint_config_key_for\": \"Définir la clé API pour\",\n  \"com_endpoint_config_key_google_need_to\": \"Vous devez\",\n  \"com_endpoint_config_key_google_service_account\": \"Créer un compte de service\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Activer Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API sur Google Cloud, puis\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Assurez-vous de cliquer 'Créer et continuer' pour donner au moins le role 'Utilisateur de Vertex AI'. Finalement, créez une clé JSON à importer ici.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importez la clé JSON du compte de service.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Clé JSON du compte de service invalide. Avez-vous importé le bon fichier ?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Clé JSON du compte de service importé avec succès\",\n  \"com_endpoint_config_key_name\": \"Clé\",\n  \"com_endpoint_config_key_never_expires\": \"Votre clé n'expirera jamais\",\n  \"com_endpoint_config_placeholder\": \"Définissez votre clé dans le menu En-tête pour discuter.\",\n  \"com_endpoint_config_value\": \"Entrez la valeur pour\",\n  \"com_endpoint_context\": \"Contexte\",\n  \"com_endpoint_context_info\": \"Le nombre maximum de jetons qui peuvent être utilisés pour le contexte. Utilisez ceci pour contrôler le nombre de jetons envoyés par requête. Si non spécifié, les valeurs par défaut du système seront utilisées en fonction de la taille de contexte connue des modèles. Définir des valeurs plus élevées peut entraîner des erreurs et/ou un coût en jetons plus élevé.\",\n  \"com_endpoint_context_tokens\": \"Jetons de contexte maximum\",\n  \"com_endpoint_custom_name\": \"Nom personnalisé\",\n  \"com_endpoint_default\": \"par défaut\",\n  \"com_endpoint_default_blank\": \"par défaut : vide\",\n  \"com_endpoint_default_empty\": \"par défaut : vide\",\n  \"com_endpoint_default_with_num\": \"par défaut : {{0}}\",\n  \"com_endpoint_examples\": \" Exemples\",\n  \"com_endpoint_export\": \"Exporter\",\n  \"com_endpoint_export_share\": \"Exporter/Partager\",\n  \"com_endpoint_frequency_penalty\": \"Pénalité de fréquence\",\n  \"com_endpoint_func_hover\": \"Activer l'utilisation des plugins comme fonctions OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Définir un nom personnalisé pour Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Nombre maximum de jetons qui peuvent être générés dans la réponse. Spécifiez une valeur plus faible pour des réponses plus courtes et une valeur plus élevée pour des réponses plus longues.\",\n  \"com_endpoint_google_temp\": \"Des valeurs plus élevées = plus aléatoires, tandis que des valeurs plus faibles = plus concentrées et déterministes. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.\",\n  \"com_endpoint_google_topk\": \"Top-k change la façon dont le modèle sélectionne les jetons pour la sortie. Un top-k de 1 signifie que le jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage glouton), tandis qu'un top-k de 3 signifie que le jeton suivant est sélectionné parmi les 3 jetons les plus probables (en utilisant la température).\",\n  \"com_endpoint_google_topp\": \"Top-p change la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés du plus K (voir le paramètre topK) probable au moins jusqu'à ce que la somme de leurs probabilités égale la valeur top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Instructions de remplacement\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Remplace les instructions de l'assistant. Cela est utile pour modifier le comportement au cas par cas.\",\n  \"com_endpoint_max_output_tokens\": \"Nombre maximum de jetons en sortie\",\n  \"com_endpoint_message\": \"Message\",\n  \"com_endpoint_message_new\": \"Message {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Editer votre message ou regénerer.\",\n  \"com_endpoint_my_preset\": \"Mon préréglage\",\n  \"com_endpoint_no_presets\": \"Aucun préréglage pour l'instant, utilisez le bouton paramètres pour en créer un\",\n  \"com_endpoint_open_menu\": \"Ouvrir le menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Définir un nom personnalisé pour ChatGPT\",\n  \"com_endpoint_openai_detail\": \"La résolution pour les requêtes Vision. \\\"Low\\\" est moins cher et plus rapide, \\\"High\\\" est plus détaillé et plus cher, et \\\"Auto\\\" choisira automatiquement entre les deux en fonction de la résolution de l'image.\",\n  \"com_endpoint_openai_freq\": \"Nombre compris entre -2,0 et 2,0. Les valeurs positives pénalisent les nouveaux jetons en fonction de leur fréquence existante dans le texte jusqu'à présent, diminuant ainsi la probabilité que le modèle répète la même ligne mot pour mot.\",\n  \"com_endpoint_openai_max\": \"Le nombre maximum de jetons à générer. La longueur totale des jetons d'entrée et des jetons générés est limitée par la longueur du contexte du modèle.\",\n  \"com_endpoint_openai_max_tokens\": \"Champ `max_tokens` optionnel, représentant le nombre maximum de jetons pouvant être générés dans la complétion de conversation. La longueur totale des jetons d'entrée et des jetons générés est limitée par la longueur du contexte du modèle. Vous pouvez rencontrer des erreurs si ce nombre dépasse le maximum de jetons de contexte.\",\n  \"com_endpoint_openai_pres\": \"Nombre compris entre -2,0 et 2,0. Les valeurs positives pénalisent les nouveaux jetons en fonction du fait qu'ils apparaissent ou non dans le texte jusqu'à présent, augmentant ainsi la probabilité que le modèle parle de nouveaux sujets.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Définir des instructions personnalisées à inclure dans le message système. Par défaut : aucun\",\n  \"com_endpoint_openai_reasoning_effort\": \"Modèles o1 seulement : limite l'effort de raisonnement pour les modèles de raisonnement. La réduction de l'effort de raisonnement peut se traduire par des réponses plus rapides et moins de jetons utilisés pour le raisonnement dans une réponse\",\n  \"com_endpoint_openai_resend\": \"Renvoyer toutes les images précédemment jointes. Remarque : cela peut augmenter considérablement le coût en jetons et vous pouvez rencontrer des erreurs avec de nombreuses pièces jointes d'images.\",\n  \"com_endpoint_openai_resend_files\": \"Renvoyer tous les fichiers précédemment joints. Remarque : cela augmentera le coût en jetons et vous pourriez rencontrer des erreurs avec de nombreuses pièces jointes.\",\n  \"com_endpoint_openai_stop\": \"Jusqu'à 4 séquences où l'API cessera de générer d'autres jetons.\",\n  \"com_endpoint_openai_temp\": \"Des valeurs plus élevées = plus aléatoires, tandis que des valeurs plus faibles = plus concentrées et déterministes. Nous vous recommandons de modifier ceci ou Top P mais pas les deux.\",\n  \"com_endpoint_openai_topp\": \"Une alternative à l'échantillonnage avec température, appelée échantillonnage du noyau, où le modèle considère les résultats des jetons avec une masse de probabilité top_p. Ainsi, 0,1 signifie que seuls les jetons représentant les 10 % de masse de probabilité les plus élevés sont pris en compte. Nous vous recommandons de modifier ceci ou la température mais pas les deux.\",\n  \"com_endpoint_output\": \"Sortie\",\n  \"com_endpoint_plug_image_detail\": \"Détail de l'image\",\n  \"com_endpoint_plug_resend_files\": \"Renvoyer les fichiers\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Définir des instructions personnalisées à inclure dans le message système. Par défaut : aucun\",\n  \"com_endpoint_plug_skip_completion\": \"Sauter la complétion\",\n  \"com_endpoint_plug_use_functions\": \"Utiliser les fonctions\",\n  \"com_endpoint_presence_penalty\": \"Pénalité de présence\",\n  \"com_endpoint_preset\": \"préréglage\",\n  \"com_endpoint_preset_default\": \"est maintenant le préréglage par défaut.\",\n  \"com_endpoint_preset_default_item\": \"Par défaut :\",\n  \"com_endpoint_preset_default_none\": \"Aucun préréglage par défaut actif.\",\n  \"com_endpoint_preset_default_removed\": \"n'est plus le préréglage par défaut.\",\n  \"com_endpoint_preset_delete_confirm\": \"Êtes-vous sûr de vouloir supprimer ce préréglage?\",\n  \"com_endpoint_preset_delete_error\": \"Il y a eu une erreur lors de la suppression de votre préréglage. Veuillez réessayer.\",\n  \"com_endpoint_preset_import\": \"Préréglage importé!\",\n  \"com_endpoint_preset_import_error\": \"Il y a eu une erreur lors de l'importation de votre préréglage. Veuillez réessayer.\",\n  \"com_endpoint_preset_name\": \"Nom du préréglage\",\n  \"com_endpoint_preset_save_error\": \"Il y a eu une erreur lors de la sauvegarde de votre préréglage. Veuillez réessayer.\",\n  \"com_endpoint_preset_selected\": \"Préréglage actif!\",\n  \"com_endpoint_preset_selected_title\": \"Actif!\",\n  \"com_endpoint_preset_title\": \"Préréglage\",\n  \"com_endpoint_presets\": \"préréglages\",\n  \"com_endpoint_presets_clear_warning\": \"Etes-vous sûr de vouloir effacer tous les préréglages? Cette action est irréversible.\",\n  \"com_endpoint_prompt_cache\": \"Utiliser la mise en cache des prompts\",\n  \"com_endpoint_prompt_prefix\": \"Préfixe du prompt\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Instructions supplémentaires pour les assistants\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Définir des instructions ou un contexte supplémentaire en plus des instructions principales de l'Assistant. Ignoré si vide.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Définir des instructions ou un contexte personnalisé. Ignoré si vide.\",\n  \"com_endpoint_reasoning_effort\": \"Effort de raisonnement\",\n  \"com_endpoint_save_as_preset\": \"Enregistrer comme préréglage\",\n  \"com_endpoint_search\": \"Rechercher un endpoint par nom\",\n  \"com_endpoint_set_custom_name\": \"Définir un nom personnalisé, au cas où vous trouveriez ce préréglage\",\n  \"com_endpoint_skip_hover\": \"Activer le saut de l'étape de complétion, qui examine la réponse finale et les étapes générées\",\n  \"com_endpoint_stop\": \"Séquences d'arrêt\",\n  \"com_endpoint_stop_placeholder\": \"Séparez les valeurs en appuyant sur `Entrée`\",\n  \"com_endpoint_temperature\": \"Température\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Utiliser l'assistant actif\",\n  \"com_error_expired_user_key\": \"La clé fournie pour {{0}} a expiré à {{1}}. Veuillez fournir une clé et réessayer.\",\n  \"com_error_files_dupe\": \"Fichier en double détecté.\",\n  \"com_error_files_empty\": \"Les fichiers vides ne sont pas autorisés\",\n  \"com_error_files_process\": \"Une erreur s'est produite lors du traitement du fichier.\",\n  \"com_error_files_unsupported_capability\": \"Aucune capacité activée ne prend en charge ce type de fichier.\",\n  \"com_error_files_upload\": \"Une erreur s'est produite lors du téléversement du fichier\",\n  \"com_error_files_upload_canceled\": \"La demande de téléversement du fichier a été annulée. Remarque : le téléversement peut être toujours en cours de traitement et devra être supprimé manuellement.\",\n  \"com_error_files_validation\": \"Une erreur s'est produite lors de la validation du fichier.\",\n  \"com_error_input_length\": \"Le nombre de jetons du dernier message est trop élevé et dépasse la limite autorisée ({{0}}). Veuillez raccourcir votre message, ajuster la taille maximale du contexte dans les paramètres de conversation, ou créer une nouvelle branche de conversation pour continuer.\",\n  \"com_error_invalid_user_key\": \"Clé fournie non valide. Veuillez fournir une clé valide et réessayer.\",\n  \"com_error_moderation\": \"Il semble que le contenu soumis ait été signalé par notre système de modération pour ne pas être conforme à nos lignes directrices communautaires. Nous ne pouvons pas procéder avec ce sujet spécifique. Si vous avez d'autres questions ou sujets que vous souhaitez explorer, veuillez modifier votre message ou créer une nouvelle conversation.\",\n  \"com_error_no_base_url\": \"Aucune URL de base trouvée. Veuillez en fournir une et réessayer.\",\n  \"com_error_no_user_key\": \"Aucune clé trouvée. Veuillez fournir une clé et réessayer.\",\n  \"com_files_filter\": \"Filtrer les fichiers...\",\n  \"com_files_no_results\": \"Aucun résultat.\",\n  \"com_files_number_selected\": \"{{0}} sur {{1}} fichier(s) sélectionné(s)\",\n  \"com_generated_files\": \"Fichiers générés :\",\n  \"com_hide_examples\": \"Masquer les exemples\",\n  \"com_nav_account_settings\": \"Paramètres du compte\",\n  \"com_nav_always_make_prod\": \"Rendre toujours les nouvelles versions en production\",\n  \"com_nav_archive_created_at\": \"Créé Le\",\n  \"com_nav_archive_name\": \"Nom\",\n  \"com_nav_archived_chats\": \"Conversations archivées\",\n  \"com_nav_archived_chats_empty\": \"Vous n'avez aucune conversation archivée.\",\n  \"com_nav_at_command\": \"Commande-@\",\n  \"com_nav_at_command_description\": \"Basculer la commande \\\"@\\\" pour changer d'endpoints, de modèles, de préréglages, etc.\",\n  \"com_nav_audio_play_error\": \"Erreur de lecture audio : {{0}}\",\n  \"com_nav_audio_process_error\": \"Erreur de traitement audio : {{0}}\",\n  \"com_nav_auto_scroll\": \"Défilement automatique jusqu'au plus récent à l'ouverture\",\n  \"com_nav_auto_send_prompts\": \"Envoi automatique des prompts\",\n  \"com_nav_auto_send_text\": \"Envoi automatique du texte (après 3 sec)\",\n  \"com_nav_auto_send_text_disabled\": \"définir sur -1 pour désactiver\",\n  \"com_nav_auto_transcribe_audio\": \"Transcription audio automatique\",\n  \"com_nav_automatic_playback\": \"Lecture automatique du dernier message (externe seulement)\",\n  \"com_nav_balance\": \"Équilibre\",\n  \"com_nav_browser\": \"Navigateur\",\n  \"com_nav_buffer_append_error\": \"Problème avec la diffusion audio. La lecture peut être interrompue.\",\n  \"com_nav_change_picture\": \"Changer de photo\",\n  \"com_nav_chat_commands\": \"Commandes de chat\",\n  \"com_nav_chat_commands_info\": \"Ces commandes sont activées en tapant des caractères spécifiques au début de votre message. Chaque commande est déclenchée par son préfixe désigné. Vous pouvez les désactiver si vous utilisez fréquemment ces caractères pour commencer vos messages.\",\n  \"com_nav_chat_direction\": \"Direction de la conversation\",\n  \"com_nav_clear_all_chats\": \"Effacer toutes les conversations\",\n  \"com_nav_clear_cache_confirm_message\": \"Êtes-vous sûr de vouloir vider le cache ?\",\n  \"com_nav_clear_conversation\": \"Effacer les conversations\",\n  \"com_nav_clear_conversation_confirm_message\": \"Êtes-vous sûr de vouloir effacer toutes les conversations ? Ceci est irréversible.\",\n  \"com_nav_close_sidebar\": \"Fermer la barre latérale\",\n  \"com_nav_commands\": \"Commandes\",\n  \"com_nav_confirm_clear\": \"Confirmer l'effacement\",\n  \"com_nav_conversation_mode\": \"Mode conversation\",\n  \"com_nav_convo_menu_options\": \"Options du menu de conversation\",\n  \"com_nav_db_sensitivity\": \"Sensibilité en décibels\",\n  \"com_nav_delete_account\": \"Supprimer le compte\",\n  \"com_nav_delete_account_button\": \"Supprimer définitivement mon compte\",\n  \"com_nav_delete_account_confirm\": \"Supprimer le compte - êtes-vous sûr?\",\n  \"com_nav_delete_account_email_placeholder\": \"Veuillez entrer votre courriel de compte\",\n  \"com_nav_delete_cache_storage\": \"Supprimer le stockage du cache TTS\",\n  \"com_nav_delete_data_info\": \"Toutes vos données seront supprimées.\",\n  \"com_nav_delete_warning\": \"ATTENTION : Cela supprimera définitivement votre compte.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Activer le cache TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Utiliser les voix cloud\",\n  \"com_nav_enabled\": \"Activé\",\n  \"com_nav_engine\": \"Moteur\",\n  \"com_nav_enter_to_send\": \"Appuyez sur Entrée pour envoyer des messages\",\n  \"com_nav_export\": \"Exporter\",\n  \"com_nav_export_all_message_branches\": \"Exporter toutes les branches de messages\",\n  \"com_nav_export_conversation\": \"Exporter la conversation\",\n  \"com_nav_export_filename\": \"Nom du fichier\",\n  \"com_nav_export_filename_placeholder\": \"Définir le nom du fichier\",\n  \"com_nav_export_include_endpoint_options\": \"Inclure les options d'extrémité\",\n  \"com_nav_export_recursive\": \"Récursif\",\n  \"com_nav_export_recursive_or_sequential\": \"Récursif ou séquentiel ?\",\n  \"com_nav_export_type\": \"Type\",\n  \"com_nav_external\": \"Externe\",\n  \"com_nav_font_size\": \"Taille de police\",\n  \"com_nav_font_size_base\": \"Moyen\",\n  \"com_nav_font_size_lg\": \"Grand\",\n  \"com_nav_font_size_sm\": \"Petit\",\n  \"com_nav_font_size_xl\": \"Très grand\",\n  \"com_nav_font_size_xs\": \"Très petit\",\n  \"com_nav_help_faq\": \"Aide & FAQ\",\n  \"com_nav_hide_panel\": \"Masquer le panneau latéral le plus à droite\",\n  \"com_nav_info_code_artifacts\": \"Active l'affichage des artéfacts de code expérimentaux à côté du chat\",\n  \"com_nav_info_custom_prompt_mode\": \"Lorsqu'activé, le prompt système par défaut pour les artéfacts ne sera pas inclus. Toutes les instructions de génération d'artéfacts doivent être fournies manuellement dans ce mode.\",\n  \"com_nav_info_enter_to_send\": \"Lorsqu'activée, appuyez sur la touche ENTRÉE pour envoyer votre message. Lorsque désactivée, appuyez sur Entrée ajoutera une nouvelle ligne, et vous devrez appuyer sur CTRL + ENTRÉE pour envoyer votre message.\",\n  \"com_nav_info_fork_change_default\": \"Messages visibles uniquement, inclut uniquement le chemin direct vers le message sélectionné. Inclure les branches liées, ajoute des branches tout au long du chemin. Inclure tous depuis/jusque là, inclut tous les messages et branches connectés.\",\n  \"com_nav_info_fork_split_target_setting\": \"Lorsqu'activé, le forking commencera du message cible jusqu'au dernier message de la conversation, selon le comportement sélectionné.\",\n  \"com_nav_info_include_shadcnui\": \"Lorsque cette option est activée, les instructions d'utilisation des composants shadcn/ui seront incluses. shadcn/ui est une collection de composants réutilisables construits avec Radix UI et Tailwind CSS. Note : ces instructions sont détaillées, il est conseillé de ne les activer que si l'indication des importations et des composants corrects est importante pour vous. Pour plus d'informations sur ces composants, visitez : https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Lorsqu'activé, le code LaTeX dans les messages sera rendu comme des équations mathématiques. Désactiver cela peut améliorer les performances si vous n'avez pas besoin du rendu LaTeX.\",\n  \"com_nav_info_save_draft\": \"Lorsqu'activé, le texte et les pièces jointes que vous entrez dans le formulaire de chat seront automatiquement sauvegardés localement sous forme de brouillons. Ces brouillons seront disponibles même si vous actualisez la page ou passez à une conversation différente. Les brouillons sont stockés localement sur votre appareil et sont supprimés une fois le message envoyé.\",\n  \"com_nav_info_show_thinking\": \"Lorsque cette option est activée, le chat affiche les menus déroulants de réflexion ouverts par défaut, ce qui vous permet de voir le raisonnement de l'IA en temps réel. Lorsqu'ils sont désactivés, les menus déroulants de réflexion restent fermés par défaut, ce qui permet d'obtenir une interface plus propre et plus rationnelle.\",\n  \"com_nav_info_user_name_display\": \"Lorsqu'activé, le nom d'utilisateur de l'expéditeur sera affiché au-dessus de chaque message que vous envoyez. Lorsque désactivé, vous verrez seulement \\\"Vous\\\" au-dessus de vos messages.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Détection automatique\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Langue\",\n  \"com_nav_latex_parsing\": \"Analyse LaTeX dans les messages (peut affecter les performances)\",\n  \"com_nav_log_out\": \"Se déconnecter\",\n  \"com_nav_long_audio_warning\": \"Les textes plus longs prendront plus de temps à traiter.\",\n  \"com_nav_maximize_chat_space\": \"Maximiser l'espace de discussion\",\n  \"com_nav_modular_chat\": \"Activer le changement de points de terminaison en cours de conversation\",\n  \"com_nav_my_files\": \"Mes fichiers\",\n  \"com_nav_no_search_results\": \"Aucun résultat de recherche trouvé\",\n  \"com_nav_not_supported\": \"Non pris en charge\",\n  \"com_nav_open_sidebar\": \"Ouvrir la barre latérale\",\n  \"com_nav_playback_rate\": \"Taux de lecture audio\",\n  \"com_nav_plugin_auth_error\": \"Une erreur s'est produite lors de la tentative d'authentification de ce plugin. Veuillez réessayer.\",\n  \"com_nav_plugin_install\": \"Installer\",\n  \"com_nav_plugin_search\": \"Rechercher des plugins\",\n  \"com_nav_plugin_store\": \"Boutique de plugins\",\n  \"com_nav_plugin_uninstall\": \"Désinstaller\",\n  \"com_nav_plus_command\": \"+-Commande\",\n  \"com_nav_plus_command_description\": \"Basculer la commande \\\"+\\\" pour ajouter un paramètre de réponses multiples\",\n  \"com_nav_profile_picture\": \"Photo de profil\",\n  \"com_nav_save_drafts\": \"Enregistrer les brouillons localement\",\n  \"com_nav_scroll_button\": \"Défilement jusqu'à la touche de fin\",\n  \"com_nav_search_placeholder\": \"Rechercher des messages\",\n  \"com_nav_send_message\": \"Envoyer un message\",\n  \"com_nav_setting_account\": \"Compte\",\n  \"com_nav_setting_beta\": \"Fonctionnalités bêta\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Contrôles des données\",\n  \"com_nav_setting_general\": \"Général\",\n  \"com_nav_setting_speech\": \"Parole\",\n  \"com_nav_settings\": \"Paramètres\",\n  \"com_nav_shared_links\": \"Liens partagés\",\n  \"com_nav_show_code\": \"Toujours afficher le code lors de l'utilisation de l'interpréteur de code\",\n  \"com_nav_show_thinking\": \"Ovrir les menus déroulants de réflexion par défaut\",\n  \"com_nav_slash_command\": \"/-Commande\",\n  \"com_nav_slash_command_description\": \"Basculer la commande \\\"/\\\" pour sélectionner une invite via le clavier\",\n  \"com_nav_source_buffer_error\": \"Erreur lors de la configuration de la lecture audio. Veuillez actualiser la page.\",\n  \"com_nav_speech_cancel_error\": \"Impossible d'arrêter la lecture audio. Vous devrez peut-être actualiser la page.\",\n  \"com_nav_speech_to_text\": \"Parole en texte\",\n  \"com_nav_stop_generating\": \"Arrêter la génération\",\n  \"com_nav_text_to_speech\": \"Texte en parole\",\n  \"com_nav_theme\": \"Thème\",\n  \"com_nav_theme_dark\": \"Sombre\",\n  \"com_nav_theme_light\": \"Clair\",\n  \"com_nav_theme_system\": \"Système\",\n  \"com_nav_tool_dialog\": \"Outils de l'assistant\",\n  \"com_nav_tool_dialog_agents\": \"Outils de l'agent\",\n  \"com_nav_tool_dialog_description\": \"L'assistant doit être sauvegardé pour conserver les sélections d'outils.\",\n  \"com_nav_tool_remove\": \"Supprimer\",\n  \"com_nav_tool_search\": \"Outils de recherche\",\n  \"com_nav_tts_init_error\": \"Échec de l'initialisation de la synthèse vocale : {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"La synthèse vocale pour le moteur sélectionné n'est pas prise en charge par ce navigateur.\",\n  \"com_nav_user\": \"UTILISATEUR\",\n  \"com_nav_user_msg_markdown\": \"Interpréter les messages utilisateur en markdown\",\n  \"com_nav_user_name_display\": \"Afficher le nom d'utilisateur dans les messages\",\n  \"com_nav_voice_select\": \"Voix\",\n  \"com_nav_voices_fetch_error\": \"Impossible de récupérer les options vocales. Veuillez vérifier votre connexion Internet.\",\n  \"com_nav_welcome_agent\": \"Veuillez sélectionner un agent\",\n  \"com_nav_welcome_assistant\": \"Veuillez sélectionner un assistant\",\n  \"com_nav_welcome_message\": \"Comment puis-je vous aider aujourd'hui?\",\n  \"com_show_agent_settings\": \"Afficher les paramètres de l'agent\",\n  \"com_show_completion_settings\": \"Afficher les paramètres de complétion\",\n  \"com_show_examples\": \"Afficher les exemples\",\n  \"com_sidepanel_agent_builder\": \"Constructeur d'agent\",\n  \"com_sidepanel_assistant_builder\": \"Constructeur d'assistant\",\n  \"com_sidepanel_attach_files\": \"Joindre des fichiers\",\n  \"com_sidepanel_conversation_tags\": \"Signets\",\n  \"com_sidepanel_hide_panel\": \"Masquer le panneau\",\n  \"com_sidepanel_manage_files\": \"Gérer les fichiers\",\n  \"com_sidepanel_parameters\": \"Paramètres\",\n  \"com_sidepanel_select_agent\": \"Sélectionner un assistant\",\n  \"com_sidepanel_select_assistant\": \"Sélectionner un assistant\",\n  \"com_ui_accept\": \"J'accepte\",\n  \"com_ui_add\": \"Ajouter\",\n  \"com_ui_add_model_preset\": \"Ajouter un modèle ou un préréglage pour une réponse supplémentaire\",\n  \"com_ui_add_multi_conversation\": \"Ajouter plusieurs conversations\",\n  \"com_ui_admin\": \"Administrateur\",\n  \"com_ui_admin_access_warning\": \"La désactivation de l'accès administrateur à cette fonctionnalité peut entraîner des problèmes d'interface imprévus nécessitant une actualisation. Une fois sauvegardé, le seul moyen de rétablir l'accès est via le paramètre d'interface dans la configuration librechat.yaml, ce qui affecte tous les rôles.\",\n  \"com_ui_admin_settings\": \"Paramètres administratifs\",\n  \"com_ui_advanced\": \"Avancé\",\n  \"com_ui_agent\": \"Agent\",\n  \"com_ui_agent_delete_error\": \"Une erreur s'est produite lors de la suppression de l'agent\",\n  \"com_ui_agent_deleted\": \"Agent supprimé avec succès\",\n  \"com_ui_agent_duplicate_error\": \"Une erreur s'est produite lors de la duplication de l'agent\",\n  \"com_ui_agent_duplicated\": \"Agent dupliqué avec succès\",\n  \"com_ui_agent_editing_allowed\": \"D'autres utilisateurs peuvent déjà modifier cet agent\",\n  \"com_ui_agent_shared_to_all\": \"il faut faire quelque chose ici. c'était vide\",\n  \"com_ui_agents\": \"Agents\",\n  \"com_ui_agents_allow_create\": \"Autoriser la création d'Agents\",\n  \"com_ui_agents_allow_share_global\": \"Autoriser le partage des Agents avec tous les utilisateurs\",\n  \"com_ui_agents_allow_use\": \"Autoriser l'utilisation des Agents\",\n  \"com_ui_all\": \"tout\",\n  \"com_ui_all_proper\": \"Tout\",\n  \"com_ui_archive\": \"Archiver\",\n  \"com_ui_archive_error\": \"échec de l'archivage de la conversation\",\n  \"com_ui_artifact_click\": \"Cliquer pour ouvrir\",\n  \"com_ui_artifacts\": \"Artefacts\",\n  \"com_ui_artifacts_toggle\": \"Afficher/Masquer l'interface des artefacts\",\n  \"com_ui_ascending\": \"Croissant\",\n  \"com_ui_assistant\": \"Assistant\",\n  \"com_ui_assistant_delete_error\": \"Une erreur s'est produite lors de la suppression de l'assistant.\",\n  \"com_ui_assistant_deleted\": \"Assistant supprimé avec succès\",\n  \"com_ui_assistants\": \"Assistants virtuels\",\n  \"com_ui_assistants_output\": \"Sortie des assistants\",\n  \"com_ui_attach_error\": \"Impossible de joindre le fichier. Créez ou sélectionnez une conversation, ou essayez d'actualiser la page.\",\n  \"com_ui_attach_error_openai\": \"Impossible de joindre les fichiers de l'Assistant à d'autres points d'accès\",\n  \"com_ui_attach_error_size\": \"Limite de taille de fichier dépassée pour le point de terminaison :\",\n  \"com_ui_attach_error_type\": \"Type de fichier non pris en charge pour ce point d'accès :\",\n  \"com_ui_attach_warn_endpoint\": \"Les fichiers non compatibles avec l'outil peuvent être ignorés\",\n  \"com_ui_attachment\": \"Pièce jointe\",\n  \"com_ui_authentication\": \"Authentification\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_back_to_chat\": \"Retour à la discussion\",\n  \"com_ui_back_to_prompts\": \"Retour aux Prompts\",\n  \"com_ui_bookmark_delete_confirm\": \"Êtes-vous sûr de vouloir supprimer ce signet?\",\n  \"com_ui_bookmarks\": \"Signets\",\n  \"com_ui_bookmarks_add\": \"Ajouter des signets\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Ajouter à la conversation en cours\",\n  \"com_ui_bookmarks_count\": \"Nombre\",\n  \"com_ui_bookmarks_create_error\": \"Une erreur est survenue lors de la création du signet\",\n  \"com_ui_bookmarks_create_exists\": \"Ce signet existe déjà\",\n  \"com_ui_bookmarks_create_success\": \"Signet créé avec succès\",\n  \"com_ui_bookmarks_delete\": \"Supprimer le signet\",\n  \"com_ui_bookmarks_delete_error\": \"Une erreur est survenue lors de la suppression du signet\",\n  \"com_ui_bookmarks_delete_success\": \"Signet supprimé avec succès\",\n  \"com_ui_bookmarks_description\": \"Description\",\n  \"com_ui_bookmarks_edit\": \"Modifier le signet\",\n  \"com_ui_bookmarks_filter\": \"Filtrer les favoris...\",\n  \"com_ui_bookmarks_new\": \"Nouveau signet\",\n  \"com_ui_bookmarks_title\": \"Titre\",\n  \"com_ui_bookmarks_update_error\": \"Une erreur est survenue lors de la mise à jour du signet\",\n  \"com_ui_bookmarks_update_success\": \"Signet mis à jour avec succès\",\n  \"com_ui_bulk_delete_error\": \"Échec de la suppression des liens partagés\",\n  \"com_ui_cancel\": \"Annuler\",\n  \"com_ui_chat\": \"Discussion\",\n  \"com_ui_chat_history\": \"Historique des discussions\",\n  \"com_ui_clear\": \"Effacer\",\n  \"com_ui_clear_all\": \"Tout effacer\",\n  \"com_ui_close\": \"Fermer\",\n  \"com_ui_close_menu\": \"Fermer le menu\",\n  \"com_ui_code\": \"Code\",\n  \"com_ui_collapse_chat\": \"Réduire la discussion\",\n  \"com_ui_command_placeholder\": \"Facultatif : Saisissez une commande pour l'invite ou le nom sera utilisé\",\n  \"com_ui_command_usage_placeholder\": \"Sélectionnez un prompt par commande ou par nom\",\n  \"com_ui_confirm_action\": \"Confirmer l'action\",\n  \"com_ui_confirm_admin_use_change\": \"La modification de ce paramètre bloquera l'accès aux administrateurs, y compris vous-même. Êtes-vous sûr de vouloir continuer ?\",\n  \"com_ui_confirm_change\": \"Confirmer le changement\",\n  \"com_ui_context\": \"Contexte\",\n  \"com_ui_continue\": \"Continuer\",\n  \"com_ui_controls\": \"Contrôles\",\n  \"com_ui_copied\": \"Copié !\",\n  \"com_ui_copied_to_clipboard\": \"Copié dans le presse-papier\",\n  \"com_ui_copy_code\": \"Copier le code\",\n  \"com_ui_copy_link\": \"Copier le lien\",\n  \"com_ui_copy_to_clipboard\": \"Copier dans le presse-papier\",\n  \"com_ui_create\": \"Créer\",\n  \"com_ui_create_link\": \"Créer un lien\",\n  \"com_ui_create_prompt\": \"Créer un prompt\",\n  \"com_ui_currently_production\": \"En cours de production\",\n  \"com_ui_custom_prompt_mode\": \"Mode de prompt personnalisé\",\n  \"com_ui_dashboard\": \"Tableau de bord\",\n  \"com_ui_date\": \"Date\",\n  \"com_ui_date_april\": \"Avril\",\n  \"com_ui_date_august\": \"Août\",\n  \"com_ui_date_december\": \"Décembre\",\n  \"com_ui_date_february\": \"Février\",\n  \"com_ui_date_january\": \"Janvier\",\n  \"com_ui_date_july\": \"Juillet\",\n  \"com_ui_date_june\": \"Juin\",\n  \"com_ui_date_march\": \"Mars\",\n  \"com_ui_date_may\": \"Mai\",\n  \"com_ui_date_november\": \"Novembre\",\n  \"com_ui_date_october\": \"Octobre\",\n  \"com_ui_date_previous_30_days\": \"30 derniers jours\",\n  \"com_ui_date_previous_7_days\": \"7 derniers jours\",\n  \"com_ui_date_september\": \"Septembre\",\n  \"com_ui_date_today\": \"Aujourd'hui\",\n  \"com_ui_date_yesterday\": \"Hier\",\n  \"com_ui_decline\": \"Je n'accepte pas\",\n  \"com_ui_delete\": \"Supprimer\",\n  \"com_ui_delete_action\": \"Supprimer l'action\",\n  \"com_ui_delete_action_confirm\": \"Êtes-vous sûr de vouloir supprimer cette action ?\",\n  \"com_ui_delete_agent_confirm\": \"Êtes-vous sûr de vouloir supprimer cet agent ?\",\n  \"com_ui_delete_assistant_confirm\": \"Êtes-vous sûr de vouloir supprimer cet Assistant ? Cette action est irréversible.\",\n  \"com_ui_delete_confirm\": \"Cela supprimera\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Cela supprimera la version sélectionnée pour \\\"{{0}}.\\\" S'il n'existe aucune autre version, le prompt sera supprimé.\",\n  \"com_ui_delete_conversation\": \"Supprimer la discussion?\",\n  \"com_ui_delete_prompt\": \"Supprimer le Prompt?\",\n  \"com_ui_delete_shared_link\": \"Supprimer le lien partagé ?\",\n  \"com_ui_delete_tool\": \"Supprimer l'outil\",\n  \"com_ui_delete_tool_confirm\": \"Êtes-vous sûr de vouloir supprimer cet outil ?\",\n  \"com_ui_descending\": \"Décroissant\",\n  \"com_ui_description\": \"Description\",\n  \"com_ui_description_placeholder\": \"Optionnel : Entrez une description à afficher dans le prompt\",\n  \"com_ui_download\": \"Télécharger\",\n  \"com_ui_download_error\": \"Erreur lors du téléchargement du fichier. Le fichier a peut-être été supprimé.\",\n  \"com_ui_dropdown_variables\": \"Variables déroulantes :\",\n  \"com_ui_dropdown_variables_info\": \"Créez des menus déroulants personnalisés pour vos prompts : `{{nom_variable:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"Dupliquer\",\n  \"com_ui_duplication_error\": \"Une erreur s'est produite lors de la duplication de la conversation\",\n  \"com_ui_duplication_processing\": \"Duplication de la conversation en cours...\",\n  \"com_ui_duplication_success\": \"Conversation dupliquée avec succès\",\n  \"com_app_center_welcome\": \"Explorez les Agents Intelligents de BISHENG\",\n  \"com_app_center_description\": \"Vous pouvez choisir les agents intelligents dont vous avez besoin ici pour la production et le travail~\",\n  \"com_app_frequently_used\": \"Agents Fréquemment Utilisés\",\n  \"com_app_uncategorized\": \"Non Catégorisé\",\n  \"com_app_common\": \"Commun\",\n  \"com_message_content_copied\": \"Contenu copié\",\n  \"com_message_month_day_time\": \"MM dd HH:mm\",\n  \"com_ui_edit\": \"Modifier\",\n  \"com_ui_endpoint\": \"Point de terminaison\",\n  \"com_ui_endpoint_menu\": \"Menu des points de terminaison LLM\",\n  \"com_ui_endpoints_available\": \"Points de terminaison disponibles\",\n  \"com_ui_enter\": \"Entrer\",\n  \"com_ui_enter_api_key\": \"Saisir la clé API\",\n  \"com_ui_enter_openapi_schema\": \"Saisissez votre schéma OpenAPI ici\",\n  \"com_ui_enter_var\": \"Saisir {{0}}\",\n  \"com_ui_error\": \"Erreur\",\n  \"com_ui_error_connection\": \"Erreur de connexion au serveur, essayez de rafraîchir la page.\",\n  \"com_ui_error_save_admin_settings\": \"Une erreur est survenue lors de la sauvegarde de vos paramètres administratifs.\",\n  \"com_ui_examples\": \"Exemples\",\n  \"com_ui_export_convo_modal\": \"Exporter la conversation\",\n  \"com_ui_field_required\": \"Ce champ est obligatoire\",\n  \"com_ui_filter_prompts_name\": \"Filtrer les prompts par nom\",\n  \"com_ui_fork\": \"Bifurquer\",\n  \"com_ui_fork_all_target\": \"Inclure tout à partir d'ici\",\n  \"com_ui_fork_branches\": \"Inclure les branches associées\",\n  \"com_ui_fork_change_default\": \"Option de fourche par défaut\",\n  \"com_ui_fork_default\": \"Utiliser l'option de fourche par défaut\",\n  \"com_ui_fork_error\": \"Une erreur s'est produite lors du dédoublement de la conversation\",\n  \"com_ui_fork_from_message\": \"Sélectionner une option de bifurcation\",\n  \"com_ui_fork_info_1\": \"Utilisez ce paramètre pour créer une bifurcation des messages avec le comportement souhaité.\",\n  \"com_ui_fork_info_2\": \"\\\"Forker\\\" fait référence à la création d'une nouvelle conversation qui commence/se termine à partir de messages spécifiques dans la conversation actuelle, en créant une copie selon les options sélectionnées.\",\n  \"com_ui_fork_info_3\": \"Le terme \\\"message cible\\\" fait référence soit au message à partir duquel cette fenêtre contextuelle a été ouverte, soit, si vous cochez \\\"{{0}}\\\", au dernier message de la conversation.\",\n  \"com_ui_fork_info_branches\": \"Cette option divise les messages visibles, ainsi que les branches associées ; en d'autres termes, le chemin direct vers le message cible, y compris les branches le long du chemin.\",\n  \"com_ui_fork_info_remember\": \"Cochez cette case pour mémoriser les options que vous sélectionnez pour une utilisation future, ce qui vous permettra de bifurquer plus rapidement les conversations selon vos préférences.\",\n  \"com_ui_fork_info_start\": \"Si cette option est cochée, le fork commencera à partir de ce message jusqu'au dernier message de la conversation, selon le comportement sélectionné ci-dessus.\",\n  \"com_ui_fork_info_target\": \"Cette option divise tous les messages menant au message cible, y compris ses voisins ; en d'autres termes, toutes les branches de messages, qu'elles soient visibles ou non et quel que soit leur chemin, sont incluses.\",\n  \"com_ui_fork_info_visible\": \"Cette option permet de diviser uniquement les messages visibles ; en d'autres termes, le chemin direct vers le message cible, sans aucune branche.\",\n  \"com_ui_fork_processing\": \"Bifurquer la conversation...\",\n  \"com_ui_fork_remember\": \"Se souvenir\",\n  \"com_ui_fork_remember_checked\": \"Votre sélection sera mémorisée après utilisation. Vous pouvez la modifier à tout moment dans les paramètres.\",\n  \"com_ui_fork_split_target\": \"Démarrer la bifurcation ici\",\n  \"com_ui_fork_split_target_setting\": \"Démarrer la bifurcation à partir du message cible par défaut\",\n  \"com_ui_fork_success\": \"Conversation bifurquée avec succès\",\n  \"com_ui_fork_visible\": \"Messages visibles uniquement\",\n  \"com_ui_go_back\": \"Retourner\",\n  \"com_ui_go_to_conversation\": \"Aller à la conversation\",\n  \"com_ui_happy_birthday\": \"C'est mon premier anniversaire !\",\n  \"com_ui_hide_qr\": \"Cacher le code QR\",\n  \"com_ui_host\": \"Hôte\",\n  \"com_ui_image_gen\": \"Génération d'image\",\n  \"com_ui_import_conversation_error\": \"Une erreur s'est produite lors de l'importation de vos conversations\",\n  \"com_ui_import_conversation_file_type_error\": \"Type de fichier non pris en charge pour l'importation\",\n  \"com_ui_import_conversation_info\": \"Importer des conversations à partir d'un fichier JSON\",\n  \"com_ui_import_conversation_success\": \"Conversations importées avec succès\",\n  \"com_ui_include_shadcnui\": \"Inclure les instructions des composants shadcn/ui\",\n  \"com_ui_input\": \"Entrée\",\n  \"com_ui_instructions\": \"Instructions\",\n  \"com_ui_latest_footer\": \"Chaque IA pour tout le monde.\",\n  \"com_ui_latest_production_version\": \"Dernière version de production\",\n  \"com_ui_latest_version\": \"Dernière version\",\n  \"com_ui_librechat_code_api_key\": \"Obtenir votre clé API pour l'interpréteur de code LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Sécurisé. Multilingue. Fichiers d'entrée/sortie.\",\n  \"com_ui_librechat_code_api_title\": \"Exécuter le code IA\",\n  \"com_ui_llm_menu\": \"Menu LLM\",\n  \"com_ui_llms_available\": \"LLMs disponibles\",\n  \"com_ui_locked\": \"Verrouillé\",\n  \"com_ui_logo\": \"Logo {{0}}\",\n  \"com_ui_manage\": \"Gérer\",\n  \"com_ui_max_tags\": \"Le nombre maximum autorisé est {{0}}, en utilisant les dernières valeurs.\",\n  \"com_ui_mention\": \"Mentionnez un point de terminaison, un assistant ou un préréglage pour basculer rapidement vers celui-ci\",\n  \"com_ui_min_tags\": \"Impossible de supprimer plus de valeurs, un minimum de {{0}} est requis.\",\n  \"com_ui_model\": \"Modèle\",\n  \"com_ui_model_parameters\": \"Paramètres du modèle\",\n  \"com_ui_more_info\": \"Plus d'informations\",\n  \"com_ui_my_prompts\": \"Mes Prompts\",\n  \"com_ui_name\": \"Nom\",\n  \"com_ui_new_chat\": \"Nouvelle conversation\",\n  \"com_ui_next\": \"Suivant\",\n  \"com_ui_no\": \"Non\",\n  \"com_ui_no_bookmarks\": \"Il semble que vous n'ayez pas encore de favoris. Cliquez sur une discussion pour en ajouter un\",\n  \"com_ui_no_category\": \"Aucune catégorie\",\n  \"com_ui_no_changes\": \"Aucune modification à mettre à jour\",\n  \"com_ui_no_terms_content\": \"Aucun contenu de conditions d'utilisation à afficher\",\n  \"com_ui_none_selected\": \"Aucune sélection\",\n  \"com_ui_nothing_found\": \"Aucun résultat trouvé\",\n  \"com_ui_of\": \"des\",\n  \"com_ui_off\": \"Désactivé\",\n  \"com_ui_on\": \"Activé\",\n  \"com_ui_page\": \"Page\",\n  \"com_ui_prev\": \"Précédent\",\n  \"com_ui_preview\": \"Aperçu\",\n  \"com_ui_privacy_policy\": \"Politique de confidentialité\",\n  \"com_ui_privacy_policy_url\": \"URL de la politique de confidentialité\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Ce prompt est déjà partagé à tous les utilisateurs\",\n  \"com_ui_prompt_name\": \"Nom du Prompt\",\n  \"com_ui_prompt_name_required\": \"Un nom pour le Prompt est requis\",\n  \"com_ui_prompt_preview_not_shared\": \"L'auteur n'a pas autorisé la collaboration pour ce prompt.\",\n  \"com_ui_prompt_text\": \"Texte\",\n  \"com_ui_prompt_text_required\": \"Un texte est requis\",\n  \"com_ui_prompt_update_error\": \"Une erreur s'est produite lors de la mise à jour du prompt\",\n  \"com_ui_prompts\": \"Prompts\",\n  \"com_ui_prompts_allow_create\": \"Autoriser la création de Prompts\",\n  \"com_ui_prompts_allow_share_global\": \"Autoriser le partage des Prompts à tous les utilisateurs\",\n  \"com_ui_prompts_allow_use\": \"Autoriser l'utilisation de Prompts\",\n  \"com_ui_provider\": \"Fournisseur\",\n  \"com_ui_read_aloud\": \"Lire à haute voix\",\n  \"com_ui_regenerate\": \"Régénérer\",\n  \"com_ui_region\": \"Région\",\n  \"com_ui_rename\": \"Renommer\",\n  \"com_ui_reset_var\": \"Réinitialiser {{0}}\",\n  \"com_ui_result\": \"Résultat\",\n  \"com_ui_revoke\": \"Révoquer\",\n  \"com_ui_revoke_info\": \"Révoquer toutes les informations d'identification fournies par l'utilisateur\",\n  \"com_ui_revoke_key_confirm\": \"Êtes-vous sûr de vouloir révoquer cette clé ?\",\n  \"com_ui_revoke_key_endpoint\": \"Révoquer la clé pour {{0}}\",\n  \"com_ui_revoke_keys\": \"Révoquer les clés\",\n  \"com_ui_revoke_keys_confirm\": \"Êtes-vous sûr de vouloir révoquer toutes les clés ?\",\n  \"com_ui_role_select\": \"Sélectionner un rôle\",\n  \"com_ui_run_code\": \"Exécuter le code\",\n  \"com_ui_run_code_error\": \"Une erreur s'est produite lors de l'exécution du code\",\n  \"com_ui_save\": \"Sauvegarder\",\n  \"com_ui_save_submit\": \"Enregistrer et Soumettre\",\n  \"com_ui_saved\": \"Enregistré!\",\n  \"com_ui_schema\": \"Schéma\",\n  \"com_ui_select\": \"Sélectionner\",\n  \"com_ui_select_file\": \"Sélectionner un fichier\",\n  \"com_ui_select_model\": \"Sélectionner un modèle\",\n  \"com_ui_select_provider\": \"Sélectionner un fournisseur\",\n  \"com_ui_select_provider_first\": \"Sélectionnez d'abord un fournisseur\",\n  \"com_ui_select_region\": \"Sélectionner une région\",\n  \"com_ui_select_search_model\": \"Rechercher un modèle par nom\",\n  \"com_ui_select_search_plugin\": \"Rechercher un plugin par nom\",\n  \"com_ui_select_search_provider\": \"Rechercher un fournisseur par nom\",\n  \"com_ui_select_search_region\": \"Rechercher une région par nom\",\n  \"com_ui_share\": \"Partager\",\n  \"no_text_recognized\": \"La reconnaissance vocale n'est pas disponible. Veuillez contacter l'administrateur.\",\n  \"com_ui_share_create_message\": \"Votre nom et tout message que vous ajoutez après le partage restent privés.\",\n  \"com_ui_share_delete_error\": \"Une erreur est survenue lors de la suppression du lien partagé.\",\n  \"com_ui_share_error\": \"Une erreur est survenue lors du partage du lien de la discussion\",\n  \"com_ui_share_link_to_chat\": \"Partager le lien de la discussion\",\n  \"com_ui_share_to_all_users\": \"Partager à tous les utilisateurs\",\n  \"com_ui_share_update_message\": \"Votre nom, les instructions personnalisées et tout message que vous ajoutez après le partage restent privés.\",\n  \"com_ui_share_var\": \"Partager {{0}}\",\n  \"com_ui_shared_link_not_found\": \"Lien partagé introuvable\",\n  \"com_ui_shared_prompts\": \"Prompts partagés\",\n  \"com_ui_show_all\": \"Tout afficher\",\n  \"com_ui_simple\": \"Simple\",\n  \"com_ui_size\": \"Taille\",\n  \"com_ui_special_variables\": \"Variables spéciales : Utilisez {{current_date}} pour la date actuelle, et {{current_user}} pour le nom de votre compte donné.\",\n  \"com_ui_special_variables_info\": \"Utilisez `{{current_date}}` pour la date actuelle et `{{current_user}}` pour votre nom de compte.\",\n  \"com_ui_speech_while_submitting\": \"Impossible de soumettre un message vocal pendant la génération d'une réponse\",\n  \"com_ui_stop\": \"Arrêt \",\n  \"com_ui_storage\": \"Stockage\",\n  \"com_ui_submit\": \"Soumettre\",\n  \"com_ui_terms_and_conditions\": \"Conditions d'utilisation\",\n  \"com_ui_terms_of_service\": \"Conditions d'utilisation\",\n  \"com_ui_tools\": \"Outils\",\n  \"com_ui_unarchive\": \"Désarchiver\",\n  \"com_ui_unarchive_error\": \"Échec du désarchivage de la conversation\",\n  \"com_ui_unknown\": \"Inconnu\",\n  \"com_ui_update\": \"Mettre à jour\",\n  \"com_ui_upload\": \"Téléverser\",\n  \"com_ui_upload_code_files\": \"Téléverser pour l'Interpréteur de Code\",\n  \"com_ui_upload_delay\": \"Le téléversement de \\\"{{0}}\\\" prend plus de temps que prévu. Veuillez patienter pendant que le fichier termine son indexation pour la récupération.\",\n  \"com_ui_upload_error\": \"Une erreur s'est produite lors du téléversement de votre fichier\",\n  \"com_ui_upload_file_search\": \"Téléverser pour la recherche de fichiers\",\n  \"com_ui_upload_files\": \"Téléverser des fichiers\",\n  \"com_ui_upload_image\": \"Téléverser une image\",\n  \"com_ui_upload_image_input\": \"Téléverser une image\",\n  \"com_ui_upload_invalid\": \"Fichier non valide pour le téléchargement. L'image ne doit pas dépasser la limite\",\n  \"com_ui_upload_invalid_var\": \"Fichier non valide pour le téléchargement. L'image ne doit pas dépasser {{0}} Mo\",\n  \"com_ui_upload_success\": \"Fichier téléversé avec succès\",\n  \"com_ui_upload_type\": \"Sélectionner le type de téléversement\",\n  \"com_ui_use_micrphone\": \"Utiliser le microphone\",\n  \"com_ui_use_prompt\": \"Utiliser le prompt\",\n  \"com_ui_variables\": \"Variables\",\n  \"com_ui_variables_info\": \"Utilisez des doubles accolades dans votre texte pour créer des variables, par exemple {{exemple de variable}}, à remplir ultérieurement lors de l'utilisation du prompt.\",\n  \"com_ui_version_var\": \"Version {{0}}\",\n  \"com_ui_versions\": \"Versions\",\n  \"com_ui_yes\": \"Oui\",\n  \"com_ui_zoom\": \"Zoom\",\n  \"com_user_message\": \"Vous\",\n  \"com_warning_resubmit_unsupported\": \"La resoumission du message IA n'est pas prise en charge pour ce point de terminaison.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/he/translation.json",
    "content": "{\n  \"chat_direction_left_to_right\": \"חייב להיות כאן תוכן, אין אפשרות להשאיר ריק\",\n  \"chat_direction_right_to_left\": \"חייב להיות כאן תוכן, אין אפשרות להשאיר ריק\",\n  \"com_a11y_ai_composing\": \"הבינה המלאכותית (AI) עדיין יוצרת\",\n  \"com_a11y_end\": \"הבינה המלאכותית (AI) סיימה להשיב.\",\n  \"com_a11y_start\": \"הבינה המלאכותית (AI) מתחילה להשיב.\",\n  \"com_agents_allow_editing\": \"אפשר למשתמשים אחרים לערוך את הסוכן שלך\",\n  \"com_agents_by_librechat\": \"על ידי LibreChat\",\n  \"com_agents_code_interpreter\": \"כאשר מופעל, מאפשר לסוכן שלך למנף את ה-API של מפענח הקוד  כדי להריץ את הקוד שנוצר, כולל עיבוד קבצים, בצורה מאובטחת. דורש מפתח API חוקי.\",\n  \"com_agents_code_interpreter_title\": \"מפענח קוד API\",\n  \"com_agents_create_error\": \"אירעה שגיאה ביצירת הסוכן שלך.\",\n  \"com_agents_description_placeholder\": \"אופציונלי: תאר את הסוכן שלך כאן\",\n  \"com_agents_enable_file_search\": \"אפשר חיפוש בקבצים\",\n  \"com_agents_file_search_disabled\": \"יש ליצור את הסוכן לפני העלאת קבצים לחיפוש\",\n  \"com_agents_file_search_info\": \"כאשר הסוכן מופעל הוא יקבל מידע על שמות הקבצים המפורטים להלן, כדי שהוא יוכל לאחזר את הקשר רלוונטי.\",\n  \"com_agents_instructions_placeholder\": \"הוראות המערכת שבהן ישתמש הסוכן\",\n  \"com_agents_missing_provider_model\": \"אנא בחר את הספק ואת הדגם לפני יצירת הסוכן.\",\n  \"com_agents_name_placeholder\": \"אופציונלי: שם הסוכן\",\n  \"com_agents_no_access\": \"אין לך גישה לערוך את הסוכן הזה.\",\n  \"com_agents_not_available\": \"הסוכן לא זמין\",\n  \"com_agents_search_name\": \"חפש סוכן לפי שם\",\n  \"com_agents_update_error\": \"אירעה שגיאה בעדכון הסוכן שלך.\",\n  \"com_assistants_action_attempt\": \"הסייען מעוניין לתקשר עם {{0}}\",\n  \"com_assistants_actions\": \"פעולות\",\n  \"com_assistants_actions_disabled\": \"עליך ליצור סייען לפני הוספת פעולות.\",\n  \"com_assistants_actions_info\": \"אפשר לסייען לאחזר מידע או לבצע פעולות באמצעות API\",\n  \"com_assistants_add_actions\": \"הוסף פעולות\",\n  \"com_assistants_add_tools\": \"הוסף כלים\",\n  \"com_assistants_allow_sites_you_trust\": \"אפשר רק אתרים שאתה סומך עליהם.\",\n  \"com_assistants_append_date\": \"הוסף תאריך ושעה נוכחיים\",\n  \"com_assistants_append_date_tooltip\": \"כשמופעל, תאריך ושעה נוכחיים של הלקוח יוספים להוראות מערכת הסייען.\",\n  \"com_assistants_attempt_info\": \"הסייען רוצה לשלוח את הדברים הבאים:\",\n  \"com_assistants_available_actions\": \"פעולות זמינות\",\n  \"com_assistants_capabilities\": \"יכולות\",\n  \"com_assistants_code_interpreter\": \"מפענח קוד\",\n  \"com_assistants_code_interpreter_files\": \"הקבצים הבאים זמינים רק עבור מפענח קוד:\",\n  \"com_assistants_code_interpreter_info\": \"מתורגמן קוד מאפשר לסייען לכתוב ולהריץ קוד. כלי זה יכול לעבד קבצים עם נתונים ועיצוב מגוונים, וליצור קבצים כגון גרפים.\",\n  \"com_assistants_completed_action\": \"תקשר עם {{0}}\",\n  \"com_assistants_completed_function\": \"מריץ {{0}}\",\n  \"com_assistants_conversation_starters\": \"התחלת שיחות\",\n  \"com_assistants_conversation_starters_placeholder\": \"הכנס פתיח לשיחה\",\n  \"com_assistants_create_error\": \"אירעה שגיאה ביצירת הסייען שלך.\",\n  \"com_assistants_create_success\": \"נוצר בהצלחה\",\n  \"com_assistants_delete_actions_error\": \"אירעה שגיאה במחיקת הפעולה.\",\n  \"com_assistants_delete_actions_success\": \"הפעולה נמחקה בהצלחה מהסייען\",\n  \"com_assistants_description_placeholder\": \"אופציונלי: תאר את הסייען שלך כאן\",\n  \"com_assistants_domain_info\": \"הסייען שלח את המידע ל{{0}}\",\n  \"com_assistants_file_search\": \"חיפוש קבצים\",\n  \"com_assistants_file_search_info\": \"חיפוש קבצים מאפשר לסייען לקבל ידע מהקבצים שאתה או המשתמשים שלך מעלים. לאחר העלאת קובץ, העוזר מחליט באופן אוטומטי מתי לאחזר תוכן על סמך בקשות המשתמש. אין תמיכה בצירוף מאגרי וקטורים לחיפוש קבצים. אתה יכול לצרף אותם ממגרש החול או לצרף קבצים להודעות לחיפוש קבצים על בסיס שרשור.\",\n  \"com_assistants_function_use\": \"הסייען השתמש ב{{0}}\",\n  \"com_assistants_image_vision\": \"מציג תמונות\",\n  \"com_assistants_instructions_placeholder\": \"הוראות המערכת שהסייען משתמש בהן\",\n  \"com_assistants_knowledge\": \"ידע\",\n  \"com_assistants_knowledge_disabled\": \"יש ליצור סייען, ויש להפעיל ולשמור את מתורגמן קוד או אחזור לפני העלאת קבצים כ-ידע.\",\n  \"com_assistants_knowledge_info\": \"אם אתה מעלה קבצים תחת ידע, שיחות עם ה-סייען שלך עשויות לכלול תוכן מהקובץ.\",\n  \"com_assistants_max_starters_reached\": \"הגעת למספר המקסימלי של תווים לפתיח לשיחות\",\n  \"com_assistants_name_placeholder\": \"אופציונלי: שם הסייען\",\n  \"com_assistants_non_retrieval_model\": \"חיפוש בקבצים אינו מופעל במודל הזה. אנא בחר מודל אחר\",\n  \"com_assistants_retrieval\": \"אחזור\",\n  \"com_assistants_running_action\": \"פעולות ריצה\",\n  \"com_assistants_search_name\": \"חפש סייען לפי שם\",\n  \"com_assistants_update_actions_error\": \"אירעה שגיאה ביצירה או העדכון של הפעולה.\",\n  \"com_assistants_update_actions_success\": \"הפעולה נוצרה או עודכנה בהצלחה\",\n  \"com_assistants_update_error\": \"אירעה שגיאה בעדכון הסייען שלך.\",\n  \"com_assistants_update_success\": \"עודכן בהצלחה\",\n  \"com_auth_already_have_account\": \"כבר יש לך חשבון?\",\n  \"com_auth_apple_login\": \"היכנס באמצעות חשבון אפל\",\n  \"com_auth_back_to_login\": \"חזור להתחברות\",\n  \"com_auth_click\": \"קליק\",\n  \"com_auth_click_here\": \"לחץ כאן\",\n  \"com_auth_continue\": \"המשך\",\n  \"com_auth_create_account\": \"צור את החשבון שלך\",\n  \"com_auth_discord_login\": \"המשך עם Discord\",\n  \"com_auth_email\": \"אימייל (דוא\\\"ל)\",\n  \"com_auth_email_address\": \"כתובת דואר אלקטרוני\",\n  \"com_auth_email_max_length\": \"אימייל (דוא\\\"ל) לא יכול להיות ארוך מ-120 תווים\",\n  \"com_auth_email_min_length\": \"אימייל (דוא\\\"ל) חייב להיות בן 6 תווים לפחות\",\n  \"com_auth_email_pattern\": \"עליך להזין כתובת אימייל (דוא\\\"ל) חוקית\",\n  \"com_auth_email_required\": \"נדרש דוא\\\"ל\",\n  \"com_auth_email_resend_link\": \"שלח שוב דוא\\\"ל\",\n  \"com_auth_email_resent_failed\": \"נכשלה שליחת דוא\\\"ל לאימות מחדש\",\n  \"com_auth_email_resent_success\": \"דוא\\\"ל לאימות נשלח שוב בהצלחה\",\n  \"com_auth_email_verification_failed\": \"אימות הדוא\\\"ל נכשל\",\n  \"com_auth_email_verification_failed_token_missing\": \"האימות נכשל, חסר טוקן\",\n  \"com_auth_email_verification_in_progress\": \"מאמת את הדוא\\\"ל שלך, אנא המתן\",\n  \"com_auth_email_verification_invalid\": \"אימות הדוא\\\"ל נכשל\",\n  \"com_auth_email_verification_redirecting\": \"מפנה מחדש בעוד {{0}} שניות...\",\n  \"com_auth_email_verification_resend_prompt\": \"לא קיבלת את הדוא\\\"ל?\",\n  \"com_auth_email_verification_success\": \"הדוא\\\"ל אומת בהצלחה\",\n  \"com_auth_error_create\": \"אירעה שגיאה בניסיון לרשום את החשבון שלך. בבקשה נסה שוב.\",\n  \"com_auth_error_invalid_reset_token\": \"אסימון איפוס הסיסמה הזה אינו תקף עוד.\",\n  \"com_auth_error_login\": \"לא ניתן להתחבר עם המידע שסופק. אנא בדוק את האישורים שלך ונסה שוב.\",\n  \"com_auth_error_login_ban\": \"החשבון שלך נחסם באופן זמני עקב הפרות של השירות שלנו.\",\n  \"com_auth_error_login_rl\": \"יותר מדי ניסיונות כניסה בזמן קצר. בבקשה נסה שוב מאוחר יותר.\",\n  \"com_auth_error_login_server\": \"הייתה שגיאת שרת פנימית. אנא המתן מספר רגעים ונסה שוב.\",\n  \"com_auth_error_login_unverified\": \"הדוא\\\"ל שלך לא אומת. אנא חפש בדוא\\\"ל שלך קישור לאימות.\",\n  \"com_auth_facebook_login\": \"המשך עם פייסבוק\",\n  \"com_auth_full_name\": \"שם מלא\",\n  \"com_auth_github_login\": \"המשך עם Github\",\n  \"com_auth_google_login\": \"המשך עם Google\",\n  \"com_auth_here\": \"כאן\",\n  \"com_auth_login\": \"התחבר\",\n  \"com_auth_login_with_new_password\": \"עכשיו אתה יכול להתחבר עם הסיסמה החדשה שלך.\",\n  \"com_auth_name_max_length\": \"השם חייב להיות פחות מ-80 תווים\",\n  \"com_auth_name_min_length\": \"השם חייב להיות לפחות 3 תווים\",\n  \"com_auth_name_required\": \"נדרש שם\",\n  \"com_auth_no_account\": \"אין לך חשבון?\",\n  \"com_auth_password\": \"סיסמה\",\n  \"com_auth_password_confirm\": \"אשר סיסמה\",\n  \"com_auth_password_forgot\": \"שכחת את הסיסמה?\",\n  \"com_auth_password_max_length\": \"הסיסמה חייבת להיות פחות מ-128 תווים\",\n  \"com_auth_password_min_length\": \"הסיסמה חייבת להיות בת 8 תווים לפחות\",\n  \"com_auth_password_not_match\": \"הסיסמאות אינן תואמות\",\n  \"com_auth_password_required\": \"נדרשת סיסמה\",\n  \"com_auth_registration_success_generic\": \"אנא בדוק את הדוא\\\"ל שלך כדי לאמת את כתובת הדוא\\\"ל שלך.\",\n  \"com_auth_registration_success_insecure\": \"ההרשמה הצליחה\",\n  \"com_auth_reset_password\": \"אפס את הסיסמה שלך\",\n  \"com_auth_reset_password_if_email_exists\": \"אם קיים חשבון עם דוא\\\"ל זה, נשלח דוא\\\"ל עם הוראות לאיפוס סיסמה. אנא הקפד לבדוק גם בתיקיית הספאם שלך.\",\n  \"com_auth_reset_password_link_sent\": \"אימייל (דוא\\\"ל) נשלח\",\n  \"com_auth_reset_password_success\": \"איפוס סיסמה הצליח\",\n  \"com_auth_sign_in\": \"כניסה\",\n  \"com_auth_sign_up\": \"הירשם\",\n  \"com_auth_submit_registration\": \"שלח רישום\",\n  \"com_auth_to_reset_your_password\": \"כדי לאפס את הסיסמה שלך.\",\n  \"com_auth_to_try_again\": \"כדי לנסות שוב.\",\n  \"com_auth_username\": \"שם משתמש (אופציונלי)\",\n  \"com_auth_username_max_length\": \"שם המשתמש חייב להיות פחות מ-20 תווים\",\n  \"com_auth_username_min_length\": \"שם משתמש חייב להיות לפחות 2 תווים\",\n  \"com_auth_welcome_back\": \"ברוכים הבאים\",\n  \"com_click_to_download\": \"(לחץ כאן להורדה)\",\n  \"com_download_expired\": \"(פג תוקף ההורדה)\",\n  \"com_download_expires\": \"(לחץ כאן כדי להוריד - יפוג בעוד {{0}}) \",\n  \"com_endpoint\": \"נקודת קצה\",\n  \"com_endpoint_agent\": \"סוכן\",\n  \"com_endpoint_agent_model\": \"מודל סוכן (מומלץ: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"אנא בחר סוכן\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"מספר האסימונים המרבי שניתן להפיק בתגובה. ציין ערך נמוך יותר עבור תגובות קצרות יותר וערך גבוה יותר עבור תגובות ארוכות יותר.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"שמירת מטמון מהירה מאפשרת שימוש חוזר בהקשר גדול או בהוראות בקריאות API, תוך הפחתת העלויות וההשהייה\",\n  \"com_endpoint_anthropic_temp\": \"נע בין 0 ל-1. השתמש בטמפ' הקרובה יותר ל-0 עבור בחירה אנליטית / מרובה, וקרוב יותר ל-1 עבור משימות יצירתיות ויצירתיות. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k משנה את האופן שבו המודל בוחר אסימונים לפלט. Top-k של 1 פירושו שהאסימון שנבחר הוא הסביר ביותר מבין כל האסימונים באוצר המילים של הדגם (נקרא גם פענוח חמדן), בעוד ש-top-k של 3 פירושו שהאסימון הבא נבחר מבין 3 הכי הרבה. אסימונים סבירים (באמצעות טמפרטורה).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p משנה את האופן שבו המודל בוחר אסימונים לפלט. אסימונים נבחרים מבין רוב K (ראה פרמטר topK) הסביר לפחות עד שסכום ההסתברויות שלהם שווה לערך העליון-p.\",\n  \"com_endpoint_assistant\": \"סייען\",\n  \"com_endpoint_assistant_model\": \"מודל סייען\",\n  \"com_endpoint_assistant_placeholder\": \"אנא בחר סייען מלוח הצד הימני\",\n  \"com_endpoint_completion\": \"השלמה\",\n  \"com_endpoint_completion_model\": \"מודל השלמה (מומלץ: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"לחץ כאן\",\n  \"com_endpoint_config_google_api_info\": \"כדי לקבל את מפתח ה-API של Generative Language (עבור תאומים),\",\n  \"com_endpoint_config_google_api_key\": \"מפתח Google API\",\n  \"com_endpoint_config_google_cloud_platform\": \"(מ-Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"מפתח חשבון שירות Google\",\n  \"com_endpoint_config_key\": \"הגדר מפתח API\",\n  \"com_endpoint_config_key_encryption\": \"המפתח שלך יוצפן וימחק ב\",\n  \"com_endpoint_config_key_for\": \"הגדר מפתח API עבור\",\n  \"com_endpoint_config_key_google_need_to\": \"אתה צריך\",\n  \"com_endpoint_config_key_google_service_account\": \"צור חשבון שירות\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"הפעל את Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API ב-Google Cloud, אז\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"הקפד ללחוץ על 'צור והמשך' כדי לתת לפחות את התפקיד 'Vertex AI User'. לבסוף, צור מפתח JSON לייבא לכאן.\",\n  \"com_endpoint_config_key_import_json_key\": \"ייבוא מפתח JSON של חשבון שירות.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"מפתח JSON חשבון שירות לא חוקי, האם ייבאת את הקובץ הנכון?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"מפתח JSON של חשבון שירות יובא בהצלחה\",\n  \"com_endpoint_config_key_name\": \"מפתח\",\n  \"com_endpoint_config_key_never_expires\": \"המפתח שלך לא יפוג לעולם\",\n  \"com_endpoint_config_placeholder\": \"הגדר את המפתח שלך בתפריט הכותרת לצאט.\",\n  \"com_endpoint_config_value\": \"הזן ערך עבור\",\n  \"com_endpoint_context\": \"הקשר\",\n  \"com_endpoint_context_info\": \"המספר המרבי של הטוקנים שניתן להשתמש בהם בחלון ההקשר. השתמש בזה כדי לשלוט בכמה טוקנים ישלחו בכל בקשה. אם לא צוין, יתבצע שימוש בברירת המחדל של המערכת המבוססות על גודל חלון ההקשר ברירת המחדל של המודלים. הגדרת ערכים גבוהים יותר עלולה לגרום לשגיאות ו/או עלות טוקנים גבוהה יותר.\",\n  \"com_endpoint_context_tokens\": \"מקסימום טוקנים בחלון ההקשר\",\n  \"com_endpoint_custom_name\": \"שם מותאם אישית\",\n  \"com_endpoint_default\": \"ברירת מחדל\",\n  \"com_endpoint_default_blank\": \"ברירת מחדל: ריק\",\n  \"com_endpoint_default_empty\": \"ברירת מחדל: ריקה\",\n  \"com_endpoint_default_with_num\": \"ברירת מחדל: {{0}}\",\n  \"com_endpoint_examples\": \"הגדרות קבועות מראש\",\n  \"com_endpoint_export\": \"ייצוא\",\n  \"com_endpoint_export_share\": \"ייצא/שתף\",\n  \"com_endpoint_frequency_penalty\": \"עונש תדירות\",\n  \"com_endpoint_func_hover\": \"אפשר שימוש בפלאגינים כפונקציות OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"הגדר שם מותאם אישית עבור Google\",\n  \"com_endpoint_google_maxoutputtokens\": \" המספר המרבי של אסימונים שניתן להפיק בתגובה. ציין ערך נמוך יותר עבור תגובות קצרות יותר וערך גבוה יותר עבור תגובות ארוכות יותר.\",\n  \"com_endpoint_google_temp\": \"ערכים גבוהים יותר = יותר אקראיים, בעוד שערכים נמוכים יותר = יותר ממוקד ודטרמיניסטי. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.\",\n  \"com_endpoint_google_topk\": \"Top-k משנה את האופן שבו המודל בוחר אסימונים לפלט. Top-k של 1 פירושו שהאסימון שנבחר הוא הסביר ביותר מבין כל האסימונים באוצר המילים של הדגם (נקרא גם פענוח חמדן), בעוד ש-top-k של 3 פירושו שהאסימון הבא נבחר מבין 3 הכי הרבה. אסימונים סבירים (באמצעות טמפרטורה).\",\n  \"com_endpoint_google_topp\": \"Top-p משנה את האופן שבו המודל בוחר אסימונים לפלט. אסימונים נבחרים מרוב K (ראה פרמטר topK) ככל הנראה לפחות עד ה-sum של ההסתברויות שלהם שווה לערך ה-p העליון.\",\n  \"com_endpoint_instructions_assistants\": \"עקוף הוראות\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"עובר את הוראות הסייען. זה שימושי לשינוי ההתנהגות על בסיס ריצה.\",\n  \"com_endpoint_max_output_tokens\": \"אסימוני פלט מרבי\",\n  \"com_endpoint_message\": \"הודעה\",\n  \"com_endpoint_message_new\": \"הודעה {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"ערוך את ההודעה שלך או צור מחדש.\",\n  \"com_endpoint_my_preset\": \"ההגדרה המוגדרת מראש שלי\",\n  \"com_endpoint_no_presets\": \"אין עדיין הגדרות מוגדרות מראש, השתמש בלחצן ההגדרות כדי ליצור אחת\",\n  \"com_endpoint_open_menu\": \"תפריט פתח\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"הגדר שם מותאם אישית עבור ChatGPT\",\n  \"com_endpoint_openai_detail\": \"ההחלטה לבקשות חזון. \\\"נמוך\\\" זול ומהיר יותר, \\\"גבוה\\\" מפורט ויקר יותר, ו\\\"אוטומטי\\\" יבחר אוטומטית בין השניים על סמך רזולוציית התמונה.\",\n  \"com_endpoint_openai_freq\": \"מספר בין -2.0 ל-2.0. ערכים חיוביים מענישים אסימונים חדשים בהתבסס על התדירות הקיימת שלהם בטקסט עד כה, ומקטינים את הסבירות של המודל לחזור על אותה שורה מילה במילה.\",\n  \"com_endpoint_openai_max\": \"האסימונים המקסימליים להפיק. האורך הכולל של אסימוני קלט ואסימונים שנוצרו מוגבל על ידי אורך ההקשר של המודל.\",\n  \"com_endpoint_openai_max_tokens\": \"שדה 'max_tokens' אופציונלי, הוא מייצג את המספר המרבי של טוקנים שניתן ליצור בהשלמת הצ'אט. האורך הכולל של טוקני קלט והטוקנים שנוצרו מוגבל על ידי אורך ההקשר של המודל. אתה עלול להיתקל בשגיאות אם המספר הזה חורג מטוקני ההקשר המקסימליים.\",\n  \"com_endpoint_openai_pres\": \"מספר בין -2.0 ל-2.0. ערכים חיוביים מענישים אסימונים חדשים על סמך האם הם מופיעים בטקסט עד כה, ומגדילים את הסבירות של המודל לדבר על נושאים חדשים.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"הגדר הוראות מותאמות אישית לכלול בהודעת המערכת. ברירת מחדל: אין\",\n  \"com_endpoint_openai_reasoning_effort\": \"במודלים o1 בלבד: מגביל את מאמץ ההנמקה במודלים של הגיון. הפחתת מאמץ החשיבה יכולה לגרום לתגובות מהירות יותר ולפחות טוקנים בשימוש בהנמקה בתגובה.\",\n  \"com_endpoint_openai_resend\": \"שלח שוב את כל התמונות שצורפו בעבר. הערה: זה יכול להגדיל משמעותית את עלות האסימונים ואתה עלול להיתקל בשגיאות עם קבצים מצורפים רבים של תמונות.\",\n  \"com_endpoint_openai_resend_files\": \"שלח שוב את כל הקבצים שצורפו בעבר. הערה: זה יגדיל את עלות הטוקנים, ואתה עלול להיתקל בשגיאות עם קבצים מצורפים רבים.\",\n  \"com_endpoint_openai_stop\": \"עד 4 רצפים שבהם ה-API יפסיק לייצר טוקנים נוספים.\",\n  \"com_endpoint_openai_temp\": \"ערכים גבוהים יותר = יותר אקראיים, בעוד שערכים נמוכים יותר = יותר ממוקד ודטרמיניסטי. אנו ממליצים לשנות את זה או את Top P אבל לא את שניהם.\",\n  \"com_endpoint_openai_topp\": \"חלופה לדגימה עם טמפרטורה, הנקראת דגימת גרעין, שבה המודל מחשיב את תוצאות האסימונים עם מסת ההסתברות top_p. אז 0.1 אומר שרק האסימונים המהווים את מסת ההסתברות העליונה של 10% נחשבים. אנו ממליצים לשנות את זה או את הטמפרטורה אבל לא את שניהם.\",\n  \"com_endpoint_output\": \"פלט\",\n  \"com_endpoint_plug_image_detail\": \"פרטי תמונה\",\n  \"com_endpoint_plug_resend_files\": \"שלח שוב את הקובץ\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"הגדר הוראות מותאמות אישית לכלול בהודעת המערכת. ברירת מחדל: אין\",\n  \"com_endpoint_plug_skip_completion\": \"השלמת דילוג\",\n  \"com_endpoint_plug_use_functions\": \"השתמש בפונקציות\",\n  \"com_endpoint_presence_penalty\": \"עונש נוכחות\",\n  \"com_endpoint_preset\": \"הגדרה קבועה מראש\",\n  \"com_endpoint_preset_custom_name_placeholder\": \"אין אפשרות להשאיר את השדה הזה ריק, חייב לביות כאן ערך\",\n  \"com_endpoint_preset_default\": \"מוגדר כמו הגדרות ברירת המחדל המוגדרת מראש.\",\n  \"com_endpoint_preset_default_item\": \"ברירת מחדל:\",\n  \"com_endpoint_preset_default_none\": \"אין ברירת מחדל פעילה.\",\n  \"com_endpoint_preset_default_removed\": \"איננו עוד ברירת המחדל המוגדרת מראש.\",\n  \"com_endpoint_preset_delete_confirm\": \"האם אתה בטוח שברצונך למחוק את הקביעה המוגדרת מראש הזו?\",\n  \"com_endpoint_preset_delete_error\": \"אירעה שגיאה במחיקת הקביעה המוגדרת מראש שלך. בבקשה נסה שוב.\",\n  \"com_endpoint_preset_import\": \"הגדרה מראש מיובאת!\",\n  \"com_endpoint_preset_import_error\": \"אירעה שגיאה בייבוא הקביעה המוגדרת מראש שלך. בבקשה נסה שוב.\",\n  \"com_endpoint_preset_name\": \"שם מוגדר מראש\",\n  \"com_endpoint_preset_save_error\": \"אירעה שגיאה בשמירת ההגדרה מראש שלך. בבקשה נסה שוב.\",\n  \"com_endpoint_preset_selected\": \"הגדרה מראש פעילה!\",\n  \"com_endpoint_preset_selected_title\": \"פעיל!\",\n  \"com_endpoint_preset_title\": \"הגדרה מראש\",\n  \"com_endpoint_presets\": \"presets\",\n  \"com_endpoint_presets_clear_warning\": \"האם אתה בטוח שאתה רוצה לנקות את כל הקביעות המוגדרות מראש? זה בלתי הפיך.\",\n  \"com_endpoint_prompt_cache\": \"השתמש בשמירה במטמון של הנחיות (פרומפטים)\",\n  \"com_endpoint_prompt_prefix\": \"הוראות מותאמות אישית\",\n  \"com_endpoint_prompt_prefix_assistants\": \"הוראות נוספות\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"הגדר הוראות נוספות או הקשר על גבי ההנחיות הראשיות של ה-סייען. התעלמו אם ריק.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"הגדר הוראות מותאמות אישית או הקשר. התעלמו אם ריק.\",\n  \"com_endpoint_reasoning_effort\": \"מאמץ בתהליך החשיבה\",\n  \"com_endpoint_save_as_preset\": \"שמור כתבנית\",\n  \"com_endpoint_search\": \"חפש נקודת קצה לפי שם\",\n  \"com_endpoint_set_custom_name\": \"הגדר שם מותאם אישית, למקרה שתוכל למצוא את הקביעה המוגדרת מראש\",\n  \"com_endpoint_skip_hover\": \"אפשר דילוג על שלב ההשלמה, הסוקר את התשובה הסופית ואת השלבים שנוצרו\",\n  \"com_endpoint_stop\": \"רצף לעצירה\",\n  \"com_endpoint_stop_placeholder\": \"הפרד ערכים על ידי לחיצה על 'Enter'\",\n  \"com_endpoint_temperature\": \"טמפרטורה\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"השתמש ב-סייען פעיל\",\n  \"com_error_expired_user_key\": \"המפתח שסופק עבור {{0}} פג ב-{{1}}. אנא ספק מפתח חדש ונסה שוב.\",\n  \"com_error_files_dupe\": \"זוהה קובץ כפול\",\n  \"com_error_files_empty\": \"אין אפשרות לקבצים ריקים\",\n  \"com_error_files_process\": \"אירעה שגיאה במהלך עיבוד הקובץ.\",\n  \"com_error_files_unsupported_capability\": \"לא הופעלו התכונות התומכות בסוג קובץ זה.\",\n  \"com_error_files_upload\": \"אירעה שגיאה בעת העלאת הקובץ\",\n  \"com_error_files_upload_canceled\": \"בקשת העלאת הקובץ בוטלה. הערה: ייתכן שהעלאת הקובץ עדיין בעיבוד ותצטרך למחוק אותו בצורה ידנית.\",\n  \"com_error_files_validation\": \"אירעה שגיאה במהלך אימות הקובץ.\",\n  \"com_error_input_length\": \"מספר הטוקנים של ההודעות האחרונות גבוה מדי, והוא חורג ממגבלת האסימונים ({{0}} בהתאמה). אנא קצר את ההודעה שלך, שנה את גודל ההקשר המקסימלי בפרמטרי השיחה, או התחל שיחה חדשה.\",\n  \"com_error_invalid_user_key\": \"מפתח שסופק אינו חוקי. אנא ספק מפתח חוקי ונסה שוב.\",\n  \"com_error_moderation\": \"נראה שהתוכן שנשלח סומן על ידי מערכת הניהול שלנו בגלל שהוא אינו תואם את הנחיות הקהילה שלנו. אנחנו לא יכולים להמשיך עם הנושא הספציפי הזה. אם יש לך שאלות או נושאים אחרים שתרצה לחקור, אנא ערוך את ההודעה שלך, או צור שיחה חדשה.\",\n  \"com_error_no_base_url\": \"לא נמצאה כתובת URL. אנא ספק כתובת ונסה שוב.\",\n  \"com_error_no_user_key\": \"לא נמצא מפתח. אנא ספק מפתח ונסה שוב.\",\n  \"com_files_filter\": \"סינון קבצים...\",\n  \"com_files_no_results\": \"אין תוצאות\",\n  \"com_files_number_selected\": \"{{0}} מתוך {{1}} פריטים נבחרו\",\n  \"com_files_table\": \"השדה חייב להכיל תוכן, הוא אינו יכול להישאר ריק\",\n  \"com_generated_files\": \"קבצים שנוצרו:\",\n  \"com_hide_examples\": \"הסתר דוגמאות\",\n  \"com_nav_account_settings\": \"הגדרות חשבון\",\n  \"com_nav_always_make_prod\": \"ייצר תמיד גרסאות חדשות\",\n  \"com_nav_archive_created_at\": \"תאריך ייצור\",\n  \"com_nav_archive_name\": \"שם\",\n  \"com_nav_archived_chats\": \"שיחות מארכיון\",\n  \"com_nav_archived_chats_empty\": \"אין שיחות מארכיון.\",\n  \"com_nav_at_command\": \"@-פקודה\",\n  \"com_nav_at_command_description\": \"הפקודה \\\"@\\\" משמשת כמנגנון הפעלה/החלפה של נקודות קצה, מודלים, הגדרות קבועות מראש וכו'.\",\n  \"com_nav_audio_play_error\": \"שגיאה בהפעלת האודיו: {{0}}\",\n  \"com_nav_audio_process_error\": \"שגיאה בעיבוד האודיו: {{0}}\",\n  \"com_nav_auto_scroll\": \"Auto-s גלול אל הכי חדש בפתיחה\",\n  \"com_nav_auto_send_prompts\": \"הנחיות (פרומפטים) לשליחה אוטומטית\",\n  \"com_nav_auto_send_text\": \"טקסט לשליחה אוטומטית\",\n  \"com_nav_auto_send_text_disabled\": \"הגדר -1 כדי להשבית\",\n  \"com_nav_auto_transcribe_audio\": \"תמלול אוטומטי של אודיו\",\n  \"com_nav_automatic_playback\": \"הפעלה אוטומטית של ההודעה האחרונה\",\n  \"com_nav_balance\": \"לְאַזֵן\",\n  \"com_nav_browser\": \"דפדפן\",\n  \"com_nav_buffer_append_error\": \"בעיה בהזרמת אודיו. ההשמעה עשויה להיות מקוטעת.\",\n  \"com_nav_change_picture\": \"שנה תמונה\",\n  \"com_nav_chat_commands\": \"פקודות צ'אט\",\n  \"com_nav_chat_commands_info\": \"פקודות אלו מופעלות על ידי הקלדת תווים ספציפיים בתחילת ההודעה. כל פקודה מופעלת על ידי הקידומת המיועדת לה. אתה יכול להשבית אותם אם אתה משתמש בתווים אלה לעתים קרובות כדי להתחיל הודעות.\",\n  \"com_nav_chat_direction\": \"כיוונון צ'אט\",\n  \"com_nav_clear_all_chats\": \"נקה את כל השיחות\",\n  \"com_nav_clear_cache_confirm_message\": \"האם אתה בטוח שברצונך לנקות את המטמון?\",\n  \"com_nav_clear_conversation\": \"נקה שיחות\",\n  \"com_nav_clear_conversation_confirm_message\": \"אתה בטוח שאתה רוצה לנקות את כל השיחות? זה בלתי הפיך.\",\n  \"com_nav_close_sidebar\": \"סגור סרגל צד\",\n  \"com_nav_commands\": \"פקודות\",\n  \"com_nav_confirm_clear\": \"אשר ניקוי\",\n  \"com_nav_conversation_mode\": \"ביקורות בהמתנה\",\n  \"com_nav_convo_menu_options\": \"אפשרויות מצב שיחה\",\n  \"com_nav_db_sensitivity\": \"רגישות דציבלים\",\n  \"com_nav_delete_account\": \"מחק חשבון\",\n  \"com_nav_delete_account_button\": \"מחק את החשבון שלי לצמיתות\",\n  \"com_nav_delete_account_confirm\": \"מחק חשבון - אתה בטוח?\",\n  \"com_nav_delete_account_email_placeholder\": \"אנא הזן את כתובת הדוא\\\"ל של החשבון שלך\",\n  \"com_nav_delete_cache_storage\": \"מחק אחסון מטמון TTS\",\n  \"com_nav_delete_data_info\": \"כל הנתונים שלך יימחקו\",\n  \"com_nav_delete_warning\": \"אזהרה: פעולה זו תמחק לצמיתות את חשבונך.\",\n  \"com_nav_edge\": \"נקודת קצה\",\n  \"com_nav_enable_cache_tts\": \"אפשר מטמון ב- TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"השתמש בקולות מבוססי ענן\",\n  \"com_nav_enabled\": \"מופעל\",\n  \"com_nav_engine\": \"מנוע\",\n  \"com_nav_enter_to_send\": \"הקש Enter כדי לשלוח את ההודעה\",\n  \"com_nav_export\": \"ייצא\",\n  \"com_nav_export_all_message_branches\": \"ייצא את כל ענפי ההודעות\",\n  \"com_nav_export_conversation\": \"ייצא שיחה\",\n  \"com_nav_export_filename\": \"שם קובץ\",\n  \"com_nav_export_filename_placeholder\": \"הגדר את שם הקובץ\",\n  \"com_nav_export_include_endpoint_options\": \"כלול אפשרויות נקודת קצה\",\n  \"com_nav_export_recursive\": \"רקורסיבי\",\n  \"com_nav_export_recursive_or_sequential\": \"רקורסיבי או רציף?\",\n  \"com_nav_export_type\": \"סוג\",\n  \"com_nav_external\": \"חיצוני\",\n  \"com_nav_font_size\": \"גודל גופן\",\n  \"com_nav_font_size_base\": \"בינוני\",\n  \"com_nav_font_size_lg\": \"גדול\",\n  \"com_nav_font_size_sm\": \"קטן\",\n  \"com_nav_font_size_xl\": \"גדול מאוד\",\n  \"com_nav_font_size_xs\": \"קטן מאוד\",\n  \"com_nav_help_faq\": \"עזרה ושאלות נפוצות\",\n  \"com_nav_hide_panel\": \"הסתר לוח הצד הימני ביותר\",\n  \"com_nav_info_custom_prompt_mode\": \"כאשר אפשרות זו מופעלת, הנחיית ברירת המחדל של מערכת רכיבי תצוגה לא תיכלל. כל ההוראות ליצירת רכיבי תצוגה יהיו חייבות להינתן באופן ידני במצב זה.\",\n  \"com_nav_info_enter_to_send\": \"כאשר מופעל, לחיצה על \\\"ENTER\\\" תשלח את ההודעה שלך, כאשר מושבת לחיצה על \\\"Enter\\\" תוסיף שורה חדשה, ותצטרך ללחוץ על \\\"CTRL + ENTER\\\" כדי לשלוח את ההודעה.\",\n  \"com_nav_info_fork_change_default\": \"'הודעות ישירות בלבד' כולל רק את הנתיב הישיר להודעה שנבחרה. 'כלול הסתעפויות קשורות' מוסיף את כל ההסתעפויות הקשורות לאורך הנתיב. 'כלול הכל עד כאן/מכאן' כולל את כל ההודעות וההסתעפויות המחוברות.\",\n  \"com_nav_info_fork_split_target_setting\": \"כאשר אפשרות זו מופעלת, הפיצול יתחיל מהודעת היעד ועד להודעה האחרונה בשיחה, בהתאם להתנהגות שנבחרה\",\n  \"com_nav_info_include_shadcnui\": \"כאשר אפשרות זו מופעלת, ייכללו הוראות לשימוש ברכיבי shadcn/ui. shadcn/ui הוא אוסף של רכיבים לשימוש חוזר שנבנו באמצעות Radix UI ו-Tailwind CSS.\\nהערה: ההוראות הללו ארוכות, ולכן כדאי להפעיל אותן רק אם חשוב לך ליידע את מודל ה-LLM (מודל השפה) על הייבוא והרכיבים הנכונים.\\nלמידע נוסף על רכיבים אלה, בקר בכתובת: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"כאשר אפשרות זו מופעלת, קוד LaTeX בהודעות יעובד ויוצג כמשוואות מתמטיות. השבתת אפשרות זו עשויה לשפר את הביצועים אם אינך זקוק לעיבוד LaTeX.\",\n  \"com_nav_info_save_draft\": \"כאשר אפשרות זו מופעלת, הטקסט והקבצים המצורפים שאתה מזין בטופס הצ'אט יישמרו באופן אוטומטי כטיוטות במכשיר שלך. טיוטות אלו יהיו זמינות גם אם תטען מחדש את הדף או תעבור לשיחה אחרת. הטיוטות נשמרות באופן מקומי במכשיר שלך ונמחקות לאחר שליחת ההודעה.\",\n  \"com_nav_info_show_thinking\": \"כאשר אפשרות זו מופעלת, תיבות תצוגה שמציגות את תהליך החשיבה של הבינה המלאכותית יופיעו פתוחות כברירת מחדל, כך שתוכל לראות את תהליך הניתוח בזמן אמת. כאשר האפשרות מושבתת, תיבות הבחירה יישארו סגורות כברירת מחדל, מה שיוצר ממשק נקי וזורם יותר.\",\n  \"com_nav_info_user_name_display\": \"כאשר אפשרות זו מופעלת, שם המשתמש של השולח יוצג מעל כל הודעה שאתה שולח. כאשר האפשרות מושבתת, יוצג רק הכיתוב \\\"אתה\\\" מעל ההודעות שלך.\",\n  \"com_nav_lang_arabic\": \"ערבית (العربية)\",\n  \"com_nav_lang_auto\": \"זיהוי אוטומטי\",\n  \"com_nav_lang_brazilian_portuguese\": \"פורטוגזית ברזילאית (Português Brasileiro)\",\n  \"com_nav_lang_chinese\": \"סינית (中文)\",\n  \"com_nav_lang_dutch\": \"הולנדית (Nederlands)\",\n  \"com_nav_lang_english\": \"אנגלית (English)\",\n  \"com_nav_lang_estonian\": \"אסטונית (Eesti keel)\",\n  \"com_nav_lang_finnish\": \"פינית (Suomi)\",\n  \"com_nav_lang_french\": \"צרפתית (Français)\",\n  \"com_nav_lang_german\": \"גרמנית (Deutsch)\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"אינדונזית (Indonesia)\",\n  \"com_nav_lang_italian\": \"איטלקית (Italiano)\",\n  \"com_nav_lang_japanese\": \"יפנית (日本語)\",\n  \"com_nav_lang_korean\": \"קוראנית (한국어)\",\n  \"com_nav_lang_polish\": \"פולנית (Polski)\",\n  \"com_nav_lang_portuguese\": \"פורטוגזית (Português)\",\n  \"com_nav_lang_russian\": \"רוסית (Русский)\",\n  \"com_nav_lang_spanish\": \"ספרדית (Español)\",\n  \"com_nav_lang_swedish\": \"שוודית (Svenska)\",\n  \"com_nav_lang_traditional_chinese\": \"סינית מסורתית (繁體中文)\",\n  \"com_nav_lang_turkish\": \"טורקית (Türkçe)\",\n  \"com_nav_lang_vietnamese\": \"וייטנאמית (Tiếng Việt)\",\n  \"com_nav_language\": \"שפה\",\n  \"com_nav_latex_parsing\": \"ניתוח LaTeX בהודעות (עשוי להשפיע על הביצועים)\",\n  \"com_nav_log_out\": \"צא\",\n  \"com_nav_long_audio_warning\": \"העיבוד של טקסטים ארוכים ייקח יותר זמן.\",\n  \"com_nav_maximize_chat_space\": \"הגדל את שטח הצ'אט\",\n  \"com_nav_modular_chat\": \"אפשר החלפת נקודות קצה באמצע שיחה\",\n  \"com_nav_my_files\": \"הקבצים שלי\",\n  \"com_nav_no_search_results\": \"לא נמצאו תוצאות בחיפוש\",\n  \"com_nav_not_supported\": \"לא נתמך\",\n  \"com_nav_open_sidebar\": \"פתח סרגל צד\",\n  \"com_nav_playback_rate\": \"קצב השמעת אודיו\",\n  \"com_nav_plugin_auth_error\": \"אירעה שגיאה בניסיון לאמת את הפלאגין הזה. בבקשה נסה שוב.\",\n  \"com_nav_plugin_install\": \"התקן\",\n  \"com_nav_plugin_search\": \"תוספי חיפוש\",\n  \"com_nav_plugin_store\": \"חנות פלאגין\",\n  \"com_nav_plugin_uninstall\": \"הסר התקנה\",\n  \"com_nav_plus_command\": \"פקודת+-\",\n  \"com_nav_plus_command_description\": \"הפעל או בטל את הפקודה '+' כדי להוסיף הגדרת תגובות מרובות\",\n  \"com_nav_profile_picture\": \"תמונת פרופיל\",\n  \"com_nav_save_drafts\": \"שמיר את האפצה באותו מחשב\",\n  \"com_nav_scroll_button\": \"לחצן לגלילה עד הסוף\",\n  \"com_nav_search_placeholder\": \"חפש הודעות\",\n  \"com_nav_send_message\": \"שלח הודעה\",\n  \"com_nav_setting_account\": \"חשבון\",\n  \"com_nav_setting_beta\": \"תכונות ביטא\",\n  \"com_nav_setting_chat\": \"צ'אט\",\n  \"com_nav_setting_data\": \"בקרות נתונים\",\n  \"com_nav_setting_general\": \"כללי\",\n  \"com_nav_setting_speech\": \"דיבור\",\n  \"com_nav_settings\": \"הגדרות\",\n  \"com_nav_shared_links\": \"קישורים משותפים\",\n  \"com_nav_show_code\": \"הצג תמיד את הקוד בעת שימוש במפענח הקוד.\",\n  \"com_nav_show_thinking\": \"פתח תצוגות חשיבה כברירת מחדל\",\n  \"com_nav_slash_command\": \"פקודת/-\",\n  \"com_nav_slash_command_description\": \"הפעל/כבה את הפקודה '/' לבחירת הנחיה (פרומפט) באמצעות המקלדת.\",\n  \"com_nav_source_buffer_error\": \"שגיאה בהגדרת השמעת האודיו. אנא רענן את הדף\",\n  \"com_nav_speech_cancel_error\": \"לא ניתן להפסיק את השמעת האודיו. ייתכן שתצטרך לרענן את הדף.\",\n  \"com_nav_speech_to_text\": \"דיבור לטקסט\",\n  \"com_nav_stop_generating\": \"עצור את היצירה\",\n  \"com_nav_text_to_speech\": \"טקסט לדיבור\",\n  \"com_nav_theme\": \"נושא\",\n  \"com_nav_theme_dark\": \"כהה\",\n  \"com_nav_theme_light\": \"אור\",\n  \"com_nav_theme_system\": \"מערכת\",\n  \"com_nav_tool_dialog\": \"כלי סייען\",\n  \"com_nav_tool_dialog_agents\": \"כלי סוכנים\",\n  \"com_nav_tool_dialog_description\": \"יש לשמור את האסיסטנט כדי להמשיך בבחירת הכלים.\",\n  \"com_nav_tool_remove\": \"הסר\",\n  \"com_nav_tool_search\": \"כלי חיפוש\",\n  \"com_nav_tts_init_error\": \"כשל ניסיון אתחול ההמרה מטקסט לדיבור: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"המרה מטקסט לדיבור עבור המנוע הנבחר אינה נתמכת בדפדפן זה.\",\n  \"com_nav_user\": \"משתמש\",\n  \"com_nav_user_msg_markdown\": \"הצגת הודעות משתמש כ-Markdown\",\n  \"com_nav_user_name_display\": \"הצג שם משתמש בהודעות\",\n  \"com_nav_voice_select\": \"קול\",\n  \"com_nav_voices_fetch_error\": \"לא ניתן לאחזר אפשרויות קול. אנא בדוק את חיבור האינטרנט שלך.\",\n  \"com_nav_welcome_agent\": \"אנא בחר סוכן\",\n  \"com_nav_welcome_assistant\": \"אנא בחר סיייען\",\n  \"com_nav_welcome_message\": \"?איך אני יכול לעזור לך היום\",\n  \"com_show_agent_settings\": \"הצג הגדרות סוכן\",\n  \"com_show_completion_settings\": \"הצג הגדרות השלמה\",\n  \"com_show_examples\": \"הצג דוגמאות\",\n  \"com_sidepanel_agent_builder\": \"בניית סוכן\",\n  \"com_sidepanel_assistant_builder\": \"בניית סייען\",\n  \"com_sidepanel_attach_files\": \"צרף קבצים\",\n  \"com_sidepanel_conversation_tags\": \"סימניות\",\n  \"com_sidepanel_hide_panel\": \"הסתר פאנל\",\n  \"com_sidepanel_manage_files\": \"נהל קבצים\",\n  \"com_sidepanel_parameters\": \"פרמטרים\",\n  \"com_sidepanel_select_agent\": \"בחר סוכן\",\n  \"com_sidepanel_select_assistant\": \"בחר סייען\",\n  \"com_ui_accept\": \"אני מקבל\",\n  \"com_ui_add\": \"הוסף\",\n  \"com_ui_add_model_preset\": \"הוספת מודל או הגדרה קבועה לתגובה נוספת\",\n  \"com_ui_add_multi_conversation\": \"הוספת תמיכה בשיחות מרובות\",\n  \"com_ui_admin\": \"אדמין\",\n  \"com_ui_admin_access_warning\": \"השבתת גישת המנהל לתכונה זו עלולה לגרום לבעיות בלתי צפויות בממשק המשתמש שידרשו רענון. אם השינוי נשמר, הדרך היחידה להחזיר את ההגדרה היא דרך הגדרת הממשק בקובץ librechat.yaml, שמשפיעה על כל התפקידים.\",\n  \"com_ui_admin_settings\": \"הגדרות אדמין\",\n  \"com_ui_advanced\": \"מתקדם\",\n  \"com_ui_agent\": \"סוכן\",\n  \"com_ui_agent_delete_error\": \"אירעה שגיאה בעת מחיקת הסוכן.\",\n  \"com_ui_agent_deleted\": \"הסוכן נמחק בהצלחה.\",\n  \"com_ui_agent_duplicate_error\": \"אירעה שגיאה בעת שכפול הסוכן\",\n  \"com_ui_agent_duplicated\": \"הסוכן שוכפל בהצלחה\",\n  \"com_ui_agent_editing_allowed\": \"משתמשים אחרים יכולים כבר לערוך את הסוכן.\",\n  \"com_ui_agent_shared_to_all\": \"השדה חייב להכיל תוכן, אי אפשר להשאיר אותו ריק\",\n  \"com_ui_agents\": \"סוכנים\",\n  \"com_ui_agents_allow_create\": \"אפשר יצירת סוכנים\",\n  \"com_ui_agents_allow_share_global\": \"אפשר שיתוף סוכנים לכל המשתמשים\",\n  \"com_ui_agents_allow_use\": \"אפשר שימוש בסוכנים\",\n  \"com_ui_all\": \"הכל\",\n  \"com_ui_all_proper\": \"הכל\",\n  \"com_ui_analyzing\": \"ניתוח\",\n  \"com_ui_analyzing_finished\": \"סיים ניתוח\",\n  \"com_ui_api_key\": \"מפתח API\",\n  \"com_ui_archive\": \"ארכיון\",\n  \"com_ui_archive_error\": \"אירעה שגיאה באירכוב השיחה\",\n  \"com_ui_artifact_click\": \"לחץ לפתיחה\",\n  \"com_ui_artifacts\": \"רכיבי תצוגה\",\n  \"com_ui_artifacts_toggle\": \"הפעל/כבה רכיבי תצוגה\",\n  \"com_ui_artifacts_toggle_agent\": \"אפשר רכיבי תצוגה\",\n  \"com_ui_assistant\": \"סייען\",\n  \"com_ui_assistant_delete_error\": \"אירעה שגיאה בעת מחיקת הסייען\",\n  \"com_ui_assistant_deleted\": \"הסייען נמחק בהצלחה\",\n  \"com_ui_assistants\": \"סייענים\",\n  \"com_ui_assistants_output\": \"פלט סייענים\",\n  \"com_ui_attach_error\": \"לא ניתן לצרף קובץ. צור או בחר שיחה, או נסה לרענן את הדף.\",\n  \"com_ui_attach_error_openai\": \"לא ניתן לצרף את קבצי הסייען לנקודות קצה אחרות\",\n  \"com_ui_attach_error_size\": \"חרגת ממגבלת גודל הקובץ עבור נקודת הקצה:\",\n  \"com_ui_attach_error_type\": \"סוג קובץ לא נתמך עבור נקודת קצה:\",\n  \"com_ui_attach_warn_endpoint\": \"עשוי להתעלם מקבצים שאינם של הסייען שאין להם כלי תואם\",\n  \"com_ui_attachment\": \"קובץ מצורף\",\n  \"com_ui_auth_type\": \"סוג אישור\",\n  \"com_ui_auth_url\": \"כתובת URL לאימות\",\n  \"com_ui_authentication\": \"אימות\",\n  \"com_ui_authentication_type\": \"סוג אימות\",\n  \"com_ui_avatar\": \"אווטאר\",\n  \"com_ui_back_to_chat\": \"חזור לצ'אט\",\n  \"com_ui_back_to_prompts\": \"חזור להנחיות (פרומפטים)\",\n  \"com_ui_backup_codes\": \"קודי גיבוי\",\n  \"com_ui_backup_codes_regenerate_error\": \"אירעה שגיאה בעת יצירת קודי הגיבוי מחדש\",\n  \"com_ui_backup_codes_regenerated\": \"קודי הגיבוי נוצרו מחדש בהצלחה\",\n  \"com_ui_basic\": \"בסיסי\",\n  \"com_ui_basic_auth_header\": \"כותרת אימות בסיסי\",\n  \"com_ui_bearer\": \"נושא הרשאה\",\n  \"com_ui_bookmark_delete_confirm\": \"האם אתה בטוח שברצונך למחוק את הסימניה הזו?\",\n  \"com_ui_bookmarks\": \"סימניות\",\n  \"com_ui_bookmarks_add\": \"הוסף סימניות\",\n  \"com_ui_bookmarks_add_to_conversation\": \"הוסף לשיחה הנוכחית\",\n  \"com_ui_bookmarks_count\": \"ספירה\",\n  \"com_ui_bookmarks_create_error\": \"אירעה שגיאה בעת יצירת הסימניה\",\n  \"com_ui_bookmarks_create_exists\": \"סימניה זו כבר קיימת\",\n  \"com_ui_bookmarks_create_success\": \"הסימניה נוצרה בהצלחה\",\n  \"com_ui_bookmarks_delete\": \"מחק סימ\",\n  \"com_ui_bookmarks_delete_error\": \"אירעה שגיאה בעת מחיקת הסימניה\",\n  \"com_ui_bookmarks_delete_success\": \"הסימניה נמחקה בהצלחה\",\n  \"com_ui_bookmarks_description\": \"תיאור\",\n  \"com_ui_bookmarks_edit\": \"ערוך סימניה\",\n  \"com_ui_bookmarks_filter\": \"סינון סימניות...\",\n  \"com_ui_bookmarks_new\": \"סימניה חדשה\",\n  \"com_ui_bookmarks_title\": \"כותרת\",\n  \"com_ui_bookmarks_update_error\": \"אירעה שגיאה בעת עדכון הסימניה\",\n  \"com_ui_bookmarks_update_success\": \"הסימניה עודכנה בהצלחה\",\n  \"com_ui_bulk_delete_error\": \"מחיקת קישורים משותפים נכשלה\",\n  \"com_ui_callback_url\": \"כתובת URL להחזרת המידע\",\n  \"com_ui_cancel\": \"בטל\",\n  \"com_ui_chat\": \"צ'אט\",\n  \"com_ui_chat_history\": \"נקה היסטוריה\",\n  \"com_ui_clear\": \"נקה\",\n  \"com_ui_clear_all\": \"נקה הכל\",\n  \"com_ui_client_id\": \"מזהה לקוח\",\n  \"com_ui_client_secret\": \"ב\",\n  \"com_ui_close\": \"סגור\",\n  \"com_ui_close_menu\": \"סגור תפריט\",\n  \"com_ui_code\": \"קוד\",\n  \"com_ui_collapse_chat\": \"כווץ צ'אט\",\n  \"com_ui_command_placeholder\": \"אופציונלי: הזן פקודה להנחיה (פרומפט), או שיעשה שימוש בשם\",\n  \"com_ui_command_usage_placeholder\": \"בחר הנחיה (פרומפט) לפי פקודה או שם\",\n  \"com_ui_complete_setup\": \"ההגדרה הושלמה\",\n  \"com_ui_confirm_action\": \"אשר פעולה\",\n  \"com_ui_confirm_admin_use_change\": \"שינוי הגדרה זו יחסום גישה למנהלים, כולל אותך. האם אתה בטוח שברצונך להמשיך?\",\n  \"com_ui_confirm_change\": \"אשר את השינוי\",\n  \"com_ui_context\": \"הקשר\",\n  \"com_ui_continue\": \"המשך\",\n  \"com_ui_controls\": \"פקדים\",\n  \"com_ui_copied\": \"הועתק!\",\n  \"com_ui_copied_to_clipboard\": \"הועתק ללוח\",\n  \"com_ui_copy_code\": \"העתק קוד\",\n  \"com_ui_copy_link\": \"העתק קישור\",\n  \"com_ui_copy_to_clipboard\": \"העתק ללוח\",\n  \"com_ui_create\": \"צור\",\n  \"com_ui_create_link\": \"צור קישור\",\n  \"com_ui_create_prompt\": \"צור הנחיה (פרומפט)\",\n  \"com_ui_currently_production\": \"נוצר עכשיו\",\n  \"com_ui_custom\": \"מותאם אישית\",\n  \"com_ui_custom_header_name\": \"שם כותרת מותאם אישית\",\n  \"com_ui_custom_prompt_mode\": \"מצב הנחיה (פרומפט) מותאם אישית\",\n  \"com_ui_dashboard\": \"לוח מחוונים\",\n  \"com_ui_date\": \"תאריך\",\n  \"com_ui_date_april\": \"אפריל\",\n  \"com_ui_date_august\": \"אוגוסט\",\n  \"com_ui_date_december\": \"דצמבר\",\n  \"com_ui_date_february\": \"פברואר\",\n  \"com_ui_date_january\": \"ינואר\",\n  \"com_ui_date_july\": \"יולי\",\n  \"com_ui_date_june\": \"יוני\",\n  \"com_ui_date_march\": \"מרץ\",\n  \"com_ui_date_may\": \"מאי\",\n  \"com_ui_date_november\": \"נובמבר\",\n  \"com_ui_date_october\": \"אוקטובר\",\n  \"com_ui_date_previous_30_days\": \"30 ימים אחרונים\",\n  \"com_ui_date_previous_7_days\": \"7 ימים אחרונים\",\n  \"com_ui_date_september\": \"ספטמבר\",\n  \"com_ui_date_today\": \"היום\",\n  \"com_ui_date_yesterday\": \"אתמול\",\n  \"com_ui_decline\": \"אני לא מקבל\",\n  \"com_ui_default_post_request\": \"ברירת המחדל (בקשת POST)\",\n  \"com_ui_delete\": \"מחק\",\n  \"com_ui_delete_action\": \"מחק פעולה\",\n  \"com_ui_delete_action_confirm\": \"האם אתה בטוח שברצונך למחוק פעולה זו?\",\n  \"com_ui_delete_agent_confirm\": \"האם אתה בטוח שברצונך למחוק את הסייען הזה?\",\n  \"com_ui_delete_assistant_confirm\": \"האם אתה בטוח שאתה רוצה למחוק את הסייען הזה? אי אפשר לבטל את זה.\",\n  \"com_ui_delete_confirm\": \"זה ימחק\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"פעולה זו תמחק את הגרסה שנבחרה עבור \\\"{{0}}\\\". אם לא קיימות גרסאות נוספות, ההנחיה תימחק.\",\n  \"com_ui_delete_conversation\": \"למחוק את השיחה (צאט)?\",\n  \"com_ui_delete_prompt\": \"מחק הנחיה (פרומפט)\",\n  \"com_ui_delete_shared_link\": \"מחק קישור שיתוף\",\n  \"com_ui_delete_tool\": \"מחק כלי\",\n  \"com_ui_delete_tool_confirm\": \"האת אתה בטוח שאתה רוצה למחוק את הכלי הזה?\",\n  \"com_ui_descending\": \"תיאור\",\n  \"com_ui_description\": \"תיאור\",\n  \"com_ui_description_placeholder\": \"אופציונלי: הזן תיאור שיוצג עבור ההנחיה (פרומפט)\",\n  \"com_ui_disabling\": \"מבטל הפעלה...\",\n  \"com_ui_download\": \"הורדה\",\n  \"com_ui_download_artifact\": \"רכיב תצוגת הורדות\",\n  \"com_ui_download_backup\": \"הורד קודי גיבוי\",\n  \"com_ui_download_backup_tooltip\": \"לפני שתמשיך, הורד את קודי הגיבוי שלך. תזדקק להם כדי לשחזר גישה במקרה שתאבד את מכשיר האימות שלך\",\n  \"com_ui_download_error\": \"וזה: שגיאה בהורדת הקובץ. ייתכן שהקובץ נמחק\",\n  \"com_ui_drag_drop\": \"השדה חייב להכיל תוכן, הוא אינו יכול להישאר ריק\",\n  \"com_ui_dropdown_variables\": \"רשימה נפתחת של משתנים\",\n  \"com_ui_dropdown_variables_info\": \"צור תפריטי רשימה נפתחת מותאמים אישית עבור ההנחיות שלך:\\n{{variable_name:option1|option2|option3}}\",\n  \"com_ui_duplicate\": \"שכפל\",\n  \"com_ui_duplication_error\": \"אירעה שגיאה בעת שכפול השיחה\",\n  \"com_ui_duplication_processing\": \"משכפל את השיחה...\",\n  \"com_ui_duplication_success\": \"השיחה שוכפלה בהצלחה\",\n  \"com_ui_edit\": \"ערוך\",\n  \"com_ui_empty_category\": \"-\",\n  \"com_ui_endpoint\": \"נקודת קצה\",\n  \"com_ui_endpoint_menu\": \"תפריט נקודת קצה LLM\",\n  \"com_ui_endpoints_available\": \"נקודות קצה זמינות\",\n  \"com_ui_enter\": \"Enter\",\n  \"com_ui_enter_api_key\": \"הכנס מפתח API\",\n  \"com_ui_enter_openapi_schema\": \"הזן כאן את סכימת OpenAPI שלך\",\n  \"com_ui_enter_var\": \"הכנס {{0}}\",\n  \"com_ui_error\": \"שגיאה\",\n  \"com_ui_error_connection\": \"שגיאה בחיבור לשרת, נסה לרענן את הדף\",\n  \"com_ui_error_save_admin_settings\": \"אירעה שגיאה בשמירת הגדרות הניהול שלך\",\n  \"com_ui_examples\": \"דוגמאות\",\n  \"com_ui_export_convo_modal\": \"חלון ייצוא שיחה\",\n  \"com_ui_field_required\": \"שדה זה נדרש\",\n  \"com_ui_filter_prompts\": \"סינון הנחיות (פרומפטים)\",\n  \"com_ui_filter_prompts_name\": \"סינון הנחיות (פרומפטים) לפי שם\",\n  \"com_ui_finance\": \"פיננסי\",\n  \"com_ui_fork\": \"הסתעפות\",\n  \"com_ui_fork_all_target\": \"כלול את כל ההודעות שנשלחו/התקבלו מכאן.\",\n  \"com_ui_fork_branches\": \"כלול הסתעפויות קשורות\",\n  \"com_ui_fork_change_default\": \"הגדרות הסתעפויות ברירת מחדל\",\n  \"com_ui_fork_default\": \"השתמש בהגדרות הסתעפויות ברירת מחדל\",\n  \"com_ui_fork_error\": \"אירעה שגיאה בעת פיצול השיחה\",\n  \"com_ui_fork_from_message\": \"בחר הגדרת הסתעפויות\",\n  \"com_ui_fork_remember\": \"זכור\",\n  \"com_ui_go_back\": \"חזור\",\n  \"com_ui_happy_birthday\": \"זה יום ההולדת הראשון שלי!\",\n  \"com_ui_host\": \"מארח\",\n  \"com_ui_import_conversation_error\": \"אירעה שגיאה בעת ייבוא השיחות שלך\",\n  \"com_ui_import_conversation_info\": \"ייבא שיחות מקובץ JSON\",\n  \"com_ui_import_conversation_success\": \"השיחות יובאו בהצלחה\",\n  \"com_ui_input\": \"קלט\",\n  \"com_ui_instructions\": \"הוראות\",\n  \"com_ui_latest_version\": \"גרסה אחרונה\",\n  \"com_ui_loading\": \"טוען...\",\n  \"com_ui_locked\": \"נעול\",\n  \"com_ui_manage\": \"נהל\",\n  \"com_ui_model\": \"דגם\",\n  \"com_ui_more_info\": \"מידע נוסף\",\n  \"com_ui_name\": \"שם\",\n  \"com_ui_new_chat\": \"שיחה חדשה\",\n  \"com_ui_next\": \"הבא\",\n  \"com_ui_no\": \"לא\",\n  \"com_ui_no_category\": \"אין קטגוריה\",\n  \"com_ui_no_terms_content\": \"אין תוכן תנאים והגבלות להצגה\",\n  \"com_ui_of\": \"של\",\n  \"com_ui_off\": \"של\",\n  \"com_ui_page\": \"עמוד\",\n  \"com_ui_prev\": \"הקודם\",\n  \"com_ui_preview\": \"תצוגה מקדימה\",\n  \"com_ui_privacy_policy\": \"מדיניות פרטיות\",\n  \"com_ui_prompt\": \"הנחיה (פרומפט)\",\n  \"com_ui_prompt_name\": \"שם הנחיה (פרומפט)\",\n  \"com_ui_prompt_name_required\": \"נדרש שם הנחיה (פרומפט)\",\n  \"com_ui_prompt_text\": \"טקסט\",\n  \"com_ui_prompt_text_required\": \"נדרש טקסט\",\n  \"com_ui_prompts\": \"הנחיות (פרומפטים)\",\n  \"com_ui_regenerate\": \"לחדש\",\n  \"com_ui_rename\": \"שנה שם\",\n  \"com_ui_rename_prompt\": \"שנה שם הנחיה (פרומפט)\",\n  \"com_ui_revoke\": \"בטל\",\n  \"com_ui_revoke_info\": \"בטל את כל האישורים שסופקו על ידי המשתמש\",\n  \"com_ui_save\": \"שמור\",\n  \"com_ui_save_submit\": \"שמור ושלח\",\n  \"com_ui_saved\": \"שמור!\",\n  \"com_ui_schema\": \"סכמה\",\n  \"com_ui_scope\": \"תחום\",\n  \"com_ui_search\": \"חיפוש\",\n  \"com_ui_select\": \"בחר\",\n  \"com_ui_select_file\": \"בחר קובץ\",\n  \"com_ui_select_model\": \"בחר מודל\",\n  \"com_ui_select_provider\": \"בחר ספק\",\n  \"com_ui_select_provider_first\": \"ראשית בחר ספק\",\n  \"com_ui_select_region\": \"בחר איזור\",\n  \"com_ui_select_search_model\": \"חפש מודל לפי שם\",\n  \"com_ui_select_search_plugin\": \"חפש פאלגין לפי שם\",\n  \"com_ui_select_search_provider\": \"חפש ספק לפי שם\",\n  \"com_ui_select_search_region\": \"חפש איזור לפי שם\",\n  \"com_ui_share\": \"שתף\",\n  \"com_ui_share_create_message\": \"שמך וכל הודעה שתוסיף לאחר השיתוף יישארו פרטיים.\",\n  \"com_ui_share_delete_error\": \"אירעה שגיאה בעת מחיקת הקישור המשותף.\",\n  \"com_ui_share_error\": \"אירעה שגיאה בעת שיתוף קישור הצ'אט\",\n  \"com_ui_share_link_to_chat\": \"שתף קישור בצ'אט\",\n  \"com_ui_share_to_all_users\": \"שתף עם כל המשתמשים\",\n  \"com_ui_share_update_message\": \"השם שלך, ההוראות המותאמות אישית וכל ההודעות שתוסיף לאחר השיתוף יישארו פרטיים.\",\n  \"com_ui_share_var\": \"שתף {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"הקישורים המשותפים נמחקו בהצלחה\",\n  \"com_ui_shared_link_delete_success\": \"הקישור המשותף נמחק בהצלחה\",\n  \"com_ui_shared_link_not_found\": \"הקישור המשותף לא נמצא\",\n  \"com_ui_shared_prompts\": \"הנחיות (פרומפטים) משותפות\",\n  \"com_ui_shop\": \"קניות\",\n  \"com_ui_show_all\": \"הראה הכל\",\n  \"com_ui_show_qr\": \"הראה קוד QR\",\n  \"com_ui_sign_in_to_domain\": \"היכנס אל {{0}}\",\n  \"com_ui_simple\": \"פשוט\",\n  \"com_ui_size\": \"סוג\",\n  \"com_ui_special_variables\": \"משתנים מיוחדים:\",\n  \"com_ui_speech_while_submitting\": \"לא ניתן לשלוח אודיו בזמן שנוצרת תגובה\",\n  \"com_ui_stop\": \"עצור\",\n  \"com_ui_storage\": \"אחסון\",\n  \"com_ui_submit\": \"שלח\",\n  \"com_ui_teach_or_explain\": \"למידה\",\n  \"com_ui_temporary_chat\": \"צ'אט זמני\",\n  \"com_ui_terms_and_conditions\": \"תנאים והגבלות\",\n  \"com_ui_terms_of_service\": \"תנאי השירות\",\n  \"com_ui_thinking\": \"חושב...\",\n  \"com_ui_thoughts\": \"מחשבות\",\n  \"com_ui_token_exchange_method\": \"שיטת החלפת טוקנים\",\n  \"com_ui_token_url\": \"קישור URL לטוקן\",\n  \"com_ui_tools\": \"כלים\",\n  \"com_ui_unarchive\": \"לארכיון\",\n  \"com_ui_unarchive_error\": \"אירעה שגיאה בארכיון השיחה\",\n  \"com_ui_unknown\": \"לא ידוע\",\n  \"com_ui_update\": \"עדכון\",\n  \"com_ui_upload\": \"העלה\",\n  \"com_ui_upload_error\": \"אירעה שגיאה בהעלאת הקובץ שלך\",\n  \"com_ui_upload_files\": \"העלה קבצים\",\n  \"com_ui_upload_image\": \"העלה תמונה\",\n  \"com_ui_upload_image_input\": \"העלה תמונה\",\n  \"com_ui_upload_invalid\": \"אין אפשרות להעלות את הקובץ. התמונה חורגת מהמגבלה\",\n  \"com_ui_upload_invalid_var\": \"אין אפשרות להעלות את הקובץ. התמונה צריכה להיות בגודל של עד {{0}} MB\",\n  \"com_ui_upload_success\": \"הקובץ הועלה בהצלחה\",\n  \"com_ui_upload_type\": \"בחר סוג העלאה\",\n  \"com_ui_use_micrphone\": \"שימוש במיקורפון\",\n  \"com_ui_use_prompt\": \"השתמש בהנחיה (פרומפט)\",\n  \"com_ui_variables\": \"משתנים\",\n  \"com_ui_version_var\": \"גרסה {{0}}\",\n  \"com_ui_versions\": \"גרסה\",\n  \"com_ui_view_source\": \"הצג צ'אט מקורי\",\n  \"com_ui_write\": \"כתיבה\",\n  \"com_ui_yes\": \"כן\",\n  \"com_ui_zoom\": \"זום\",\n  \"com_user_message\": \"אתה\",\n  \"com_warning_resubmit_unsupported\": \"שליחת הודעה מחדש אינה נתמכת עבור נקודת קצה זו.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/i18n.ts",
    "content": "import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\n// Import your JSON translations\nimport translationEn from './en/translation.json';\nimport translationAr from './ar/translation.json';\nimport translationDe from './de/translation.json';\nimport translationEs from './es/translation.json';\nimport translationEt from './et/translation.json';\nimport translationFr from './fr/translation.json';\nimport translationIt from './it/translation.json';\nimport translationPl from './pl/translation.json';\nimport translationPt_BR from './pt-BR/translation.json';\nimport translationPt_PT from './pt-PT/translation.json';\nimport translationRu from './ru/translation.json';\nimport translationJa from './ja/translation.json';\nimport translationKa from './ka/translation.json';\nimport translationSv from './sv/translation.json';\nimport translationKo from './ko/translation.json';\nimport translationVi from './vi/translation.json';\nimport translationTr from './tr/translation.json';\nimport translationNl from './nl/translation.json';\nimport translationId from './id/translation.json';\nimport translationHe from './he/translation.json';\nimport translationFi from './fi/translation.json';\nimport translationZh_Hans from './zh-Hans/translation.json';\nimport translationZh_Hant from './zh-Hant/translation.json';\n\nexport const defaultNS = 'translation';\n\nexport const resources = {\n  en: { translation: translationEn },\n  ar: { translation: translationAr },\n  'zh-Hans': { translation: translationZh_Hans },\n  'zh-Hant': { translation: translationZh_Hant },\n  de: { translation: translationDe },\n  es: { translation: translationEs },\n  et: { translation: translationEt },\n  fr: { translation: translationFr },\n  it: { translation: translationIt },\n  pl: { translation: translationPl },\n  'pt-BR': { translation: translationPt_BR },\n  'pt-PT': { translation: translationPt_PT },\n  ru: { translation: translationRu },\n  ja: { translation: translationJa },\n  ka: { translation: translationKa },\n  sv: { translation: translationSv },\n  ko: { translation: translationKo },\n  vi: { translation: translationVi },\n  tr: { translation: translationTr },\n  nl: { translation: translationNl },\n  id: { translation: translationId },\n  he: { translation: translationHe },\n  fi: { translation: translationFi },\n} as const;\n\nconst config = window.BRAND_CONFIG || {};\n\ni18n\n  .use(LanguageDetector)\n  .use(initReactI18next)\n  .init({\n    fallbackLng: {\n      'zh-TW': ['zh-Hant', 'en'],\n      'zh-HK': ['zh-Hant', 'en'],\n      'zh': ['zh-Hans', 'en'],\n      default: ['en'],\n    },\n    fallbackNS: 'translation',\n    ns: ['translation'],\n    debug: false,\n    defaultNS,\n    resources,\n    interpolation: {\n      escapeValue: false,\n      defaultVariables: {\n        bisheng: config.brandName?.en,\n        bishengZh: config.brandName?.zh,\n        linsight: config.linsightAgentName?.en,\n        linsightZh: config.linsightAgentName?.zh,\n        linsightFull: config.linsightFullName?.en,\n        linsightFullZh: config.linsightFullName?.zh\n      }\n    },\n  });\n\nexport default i18n;"
  },
  {
    "path": "src/frontend/client/src/locales/id/translation.json",
    "content": "{\n  \"com_auth_already_have_account\": \"Sudah memiliki akun?\",\n  \"com_auth_click\": \"Klik\",\n  \"com_auth_click_here\": \"Klik di sini\",\n  \"com_auth_continue\": \"Lanjutkan\",\n  \"com_auth_create_account\": \"Buat akun Anda\",\n  \"com_auth_discord_login\": \"Masuk dengan Discord\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Alamat email\",\n  \"com_auth_email_max_length\": \"Email tidak boleh lebih dari 120 karakter\",\n  \"com_auth_email_min_length\": \"Email harus setidaknya 6 karakter\",\n  \"com_auth_email_pattern\": \"Anda harus memasukkan alamat email yang valid\",\n  \"com_auth_email_required\": \"Email diperlukan\",\n  \"com_auth_error_create\": \"Ada kesalahan saat mencoba mendaftarkan akun Anda. Silakan coba lagi.\",\n  \"com_auth_error_invalid_reset_token\": \"Token pengaturan ulang kata sandi ini tidak lagi valid.\",\n  \"com_auth_error_login\": \"Tidak dapat masuk dengan informasi yang diberikan. Silakan periksa kredensial Anda dan coba lagi.\",\n  \"com_auth_error_login_ban\": \"Akun Anda telah dilarang sementara karena pelanggaran layanan kami.\",\n  \"com_auth_error_login_rl\": \"Terlalu banyak upaya masuk dalam waktu singkat. Silakan coba lagi nanti.\",\n  \"com_auth_error_login_server\": \"Ada kesalahan server internal. Harap tunggu beberapa saat dan coba lagi.\",\n  \"com_auth_facebook_login\": \"Masuk dengan Facebook\",\n  \"com_auth_full_name\": \"Nama lengkap\",\n  \"com_auth_github_login\": \"Masuk dengan Github\",\n  \"com_auth_google_login\": \"Masuk dengan Google\",\n  \"com_auth_here\": \"DI SINI\",\n  \"com_auth_login\": \"Masuk\",\n  \"com_auth_login_with_new_password\": \"Anda sekarang dapat masuk dengan kata sandi baru Anda.\",\n  \"com_auth_name_max_length\": \"Nama harus kurang dari 80 karakter\",\n  \"com_auth_name_min_length\": \"Nama harus setidaknya 3 karakter\",\n  \"com_auth_name_required\": \"Nama diperlukan\",\n  \"com_auth_no_account\": \"Tidak memiliki akun?\",\n  \"com_auth_password\": \"Kata sandi\",\n  \"com_auth_password_confirm\": \"Konfirmasi kata sandi\",\n  \"com_auth_password_forgot\": \"Lupa Kata Sandi?\",\n  \"com_auth_password_max_length\": \"Kata sandi harus kurang dari 128 karakter\",\n  \"com_auth_password_min_length\": \"Kata sandi harus setidaknya 8 karakter\",\n  \"com_auth_password_not_match\": \"Kata sandi tidak cocok\",\n  \"com_auth_password_required\": \"Kata sandi diperlukan\",\n  \"com_auth_reset_password\": \"Atur ulang kata sandi Anda\",\n  \"com_auth_reset_password_link_sent\": \"Email Terkirim\",\n  \"com_auth_reset_password_success\": \"Berhasil Mengatur Ulang Kata Sandi\",\n  \"com_auth_sign_in\": \"Masuk\",\n  \"com_auth_sign_up\": \"Daftar\",\n  \"com_auth_submit_registration\": \"Kirim pendaftaran\",\n  \"com_auth_to_reset_your_password\": \"untuk mengatur ulang kata sandi Anda.\",\n  \"com_auth_to_try_again\": \"untuk mencoba lagi.\",\n  \"com_auth_username\": \"Nama pengguna (opsional)\",\n  \"com_auth_username_max_length\": \"Nama pengguna harus kurang dari 20 karakter\",\n  \"com_auth_username_min_length\": \"Nama pengguna harus setidaknya 2 karakter\",\n  \"com_auth_welcome_back\": \"Selamat datang kembali\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agen\",\n  \"com_endpoint_agent_model\": \"Model Agen (Direkomendasikan: GPT-3.5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Jumlah maksimum token yang dapat dihasilkan dalam respons. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih panjang.\",\n  \"com_endpoint_anthropic_temp\": \"Berkisar dari 0 hingga 1. Gunakan temp yang lebih dekat ke 0 untuk analitis / pilihan ganda, dan lebih dekat ke 1 untuk tugas kreatif dan generatif. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k mengubah cara model memilih token untuk output. Top-k 1 berarti token yang dipilih adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding serakah), sedangkan top-k 3 berarti token berikutnya dipilih dari antara 3 token yang paling mungkin (menggunakan suhu).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat parameter topK) hingga yang paling tidak mungkin sampai jumlah probabilitas mereka sama dengan nilai top-p.\",\n  \"com_endpoint_completion\": \"Penyelesaian\",\n  \"com_endpoint_completion_model\": \"Model Penyelesaian (Direkomendasikan: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Klik Di Sini\",\n  \"com_endpoint_config_google_api_info\": \"Untuk mendapatkan kunci API Bahasa Generatif Anda (untuk Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Kunci API Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(dari Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Kunci Akun Layanan Google\",\n  \"com_endpoint_config_key\": \"Atur Kunci API\",\n  \"com_endpoint_config_key_encryption\": \"Kunci Anda akan dienkripsi dan dihapus pada\",\n  \"com_endpoint_config_key_for\": \"Atur Kunci API untuk\",\n  \"com_endpoint_config_key_google_need_to\": \"Anda perlu\",\n  \"com_endpoint_config_key_google_service_account\": \"Buat Akun Layanan\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Aktifkan Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API di Google Cloud, kemudian\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Pastikan untuk mengklik 'Buat dan Lanjutkan' untuk memberikan setidaknya peran 'Pengguna Vertex AI'. Terakhir, buat kunci JSON untuk diimpor di sini.\",\n  \"com_endpoint_config_key_import_json_key\": \"Impor Kunci JSON Akun Layanan.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Kunci JSON Akun Layanan Tidak Valid, Apakah Anda mengimpor file yang benar?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Berhasil Mengimpor Kunci JSON Akun Layanan\",\n  \"com_endpoint_config_key_name\": \"Kunci\",\n  \"com_endpoint_config_placeholder\": \"Atur Kunci Anda di menu Header untuk mengobrol.\",\n  \"com_endpoint_config_value\": \"Masukkan nilai untuk\",\n  \"com_endpoint_context\": \"Konteks\",\n  \"com_endpoint_custom_name\": \"Nama Kustom\",\n  \"com_endpoint_default\": \"default\",\n  \"com_endpoint_default_blank\": \"default: kosong\",\n  \"com_endpoint_default_empty\": \"default: kosong\",\n  \"com_endpoint_default_with_num\": \"default: {{0}}\",\n  \"com_endpoint_examples\": \" Preset\",\n  \"com_endpoint_export\": \"Ekspor\",\n  \"com_endpoint_frequency_penalty\": \"Penalti Frekuensi\",\n  \"com_endpoint_func_hover\": \"Aktifkan penggunaan Plugin sebagai Fungsi OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Tetapkan nama kustom untuk Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Jumlah maksimum token yang dapat dihasilkan dalam respons. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih panjang.\",\n  \"com_endpoint_google_temp\": \"Nilai yang lebih tinggi = lebih acak, sedangkan nilai yang lebih rendah = lebih fokus dan deterministik. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.\",\n  \"com_endpoint_google_topk\": \"Top-k mengubah cara model memilih token untuk output. Top-k 1 berarti token yang dipilih adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding serakah), sedangkan top-k 3 berarti token berikutnya dipilih dari antara 3 token yang paling mungkin (menggunakan temperatur).\",\n  \"com_endpoint_google_topp\": \"Top-p mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat parameter topK) hingga yang paling tidak mungkin sampai jumlah probabilitas mereka sama dengan nilai top-p.\",\n  \"com_endpoint_max_output_tokens\": \"Token Output Maks\",\n  \"com_endpoint_message\": \"Pesan\",\n  \"com_endpoint_message_not_appendable\": \"Edit pesan Anda atau Regenerasi.\",\n  \"com_endpoint_my_preset\": \"Preset Saya\",\n  \"com_endpoint_no_presets\": \"Belum ada preset, gunakan tombol pengaturan untuk membuat satu\",\n  \"com_endpoint_open_menu\": \"Buka Menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Tetapkan nama kustom untuk ChatGPT\",\n  \"com_endpoint_openai_detail\": \"Resolusi untuk permintaan Vision. \\\"Rendah\\\" lebih murah dan lebih cepat, \\\"Tinggi\\\" lebih detail dan mahal, dan \\\"Otomatis\\\" akan secara otomatis memilih antara keduanya berdasarkan resolusi gambar.\",\n  \"com_endpoint_openai_freq\": \"Angka antara -2,0 dan 2,0. Nilai positif menghukum token baru berdasarkan frekuensi mereka yang ada dalam teks sejauh ini, mengurangi kemungkinan model untuk mengulangi baris yang sama secara harfiah.\",\n  \"com_endpoint_openai_max\": \"Token maksimum yang akan dihasilkan. Panjang total token masukan dan token yang dihasilkan dibatasi oleh panjang konteks model.\",\n  \"com_endpoint_openai_pres\": \"Angka antara -2,0 dan 2,0. Nilai positif menghukum token baru berdasarkan apakah mereka muncul dalam teks sejauh ini, meningkatkan kemungkinan model untuk berbicara tentang topik baru.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Tetapkan instruksi kustom untuk dimasukkan dalam Pesan Sistem. Default: tidak ada\",\n  \"com_endpoint_openai_resend\": \"Kirim ulang semua gambar yang sebelumnya dilampirkan. Catatan: ini dapat meningkatkan biaya token secara signifikan dan Anda mungkin mengalami kesalahan dengan banyak lampiran gambar.\",\n  \"com_endpoint_openai_temp\": \"Nilai yang lebih tinggi = lebih acak, sedangkan nilai yang lebih rendah = lebih fokus dan deterministik. Kami merekomendasikan untuk mengubah ini atau Top P tetapi tidak keduanya.\",\n  \"com_endpoint_openai_topp\": \"Sebuah alternatif untuk pengambilan sampel dengan suhu, disebut pengambilan sampel inti, di mana model mempertimbangkan hasil dari token dengan massa probabilitas top_p. Jadi 0,1 berarti hanya token yang mencakup 10% massa probabilitas teratas yang dipertimbangkan. Kami merekomendasikan untuk mengubah ini atau suhu tetapi tidak keduanya.\",\n  \"com_endpoint_output\": \"Output\",\n  \"com_endpoint_plug_image_detail\": \"Rincian Gambar\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Tetapkan instruksi kustom untuk dimasukkan dalam Pesan Sistem. Default: tidak ada\",\n  \"com_endpoint_plug_skip_completion\": \"Lewati Penyelesaian\",\n  \"com_endpoint_plug_use_functions\": \"Gunakan Fungsi\",\n  \"com_endpoint_presence_penalty\": \"Penalti Kehadiran\",\n  \"com_endpoint_preset\": \"preset\",\n  \"com_endpoint_preset_default\": \"sekarang menjadi preset default.\",\n  \"com_endpoint_preset_default_item\": \"Default:\",\n  \"com_endpoint_preset_default_none\": \"Tidak ada preset default yang aktif.\",\n  \"com_endpoint_preset_default_removed\": \"tidak lagi menjadi preset default.\",\n  \"com_endpoint_preset_delete_confirm\": \"Anda yakin ingin menghapus preset ini?\",\n  \"com_endpoint_preset_delete_error\": \"Ada kesalahan saat menghapus preset Anda. Silakan coba lagi.\",\n  \"com_endpoint_preset_import\": \"Preset Diimpor!\",\n  \"com_endpoint_preset_import_error\": \"Ada kesalahan saat mengimpor preset Anda. Silakan coba lagi.\",\n  \"com_endpoint_preset_name\": \"Nama Preset\",\n  \"com_endpoint_preset_save_error\": \"Ada kesalahan saat menyimpan preset Anda. Silakan coba lagi.\",\n  \"com_endpoint_preset_selected\": \"Preset Aktif!\",\n  \"com_endpoint_preset_selected_title\": \"Aktif!\",\n  \"com_endpoint_preset_title\": \"Preset\",\n  \"com_endpoint_presets\": \"presets\",\n  \"com_endpoint_presets_clear_warning\": \"Anda yakin ingin menghapus semua preset? Ini tidak dapat dibatalkan.\",\n  \"com_endpoint_prompt_prefix\": \"Awalan Prompt\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Tetapkan instruksi kustom atau konteks. Diabaikan jika kosong.\",\n  \"com_endpoint_save_as_preset\": \"Simpan Sebagai Preset\",\n  \"com_endpoint_set_custom_name\": \"Tetapkan nama kustom, jika Anda dapat menemukan preset ini\",\n  \"com_endpoint_skip_hover\": \"Aktifkan langkah penyelesaian yang dilewati, yang meninjau jawaban akhir dan langkah yang dihasilkan\",\n  \"com_endpoint_temperature\": \"Temperatur\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_hide_examples\": \"Sembunyikan Contoh\",\n  \"com_nav_archive_created_at\": \"TanggalDibuat\",\n  \"com_nav_archive_name\": \"Nama\",\n  \"com_nav_archived_chats\": \"Percakapan Arsip\",\n  \"com_nav_archived_chats_empty\": \"Tidak ada percakapan yang diarsipkan.\",\n  \"com_nav_auto_scroll\": \"Otomatis gulir ke Baru saat Buka\",\n  \"com_nav_balance\": \"Keseimbangan\",\n  \"com_nav_change_picture\": \"Ubah foto\",\n  \"com_nav_clear_all_chats\": \"Hapus semua obrolan\",\n  \"com_nav_clear_conversation\": \"Hapus percakapan\",\n  \"com_nav_clear_conversation_confirm_message\": \"Anda yakin ingin menghapus semua percakapan? Ini tidak dapat dibatalkan.\",\n  \"com_nav_close_sidebar\": \"Tutup sidebar\",\n  \"com_nav_confirm_clear\": \"Konfirmasi Hapus\",\n  \"com_nav_enabled\": \"Diaktifkan\",\n  \"com_nav_export\": \"Ekspor\",\n  \"com_nav_export_all_message_branches\": \"Ekspor semua cabang pesan\",\n  \"com_nav_export_conversation\": \"Ekspor percakapan\",\n  \"com_nav_export_filename\": \"Nama File\",\n  \"com_nav_export_filename_placeholder\": \"Atur nama file\",\n  \"com_nav_export_include_endpoint_options\": \"Sertakan opsi endpoint\",\n  \"com_nav_export_recursive\": \"Rekursif\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekursif atau berurutan?\",\n  \"com_nav_export_type\": \"Tipe\",\n  \"com_nav_font_size\": \"Ukuran huruf\",\n  \"com_nav_help_faq\": \"Bantuan & FAQ\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Deteksi otomatis\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Bahasa\",\n  \"com_nav_latex_parsing\": \"Parsing LaTeX dalam pesan (dapat memengaruhi kinerja)\",\n  \"com_nav_log_out\": \"Keluar\",\n  \"com_nav_modular_chat\": \"Aktifkan penggantian Endpoint di tengah percakapan\",\n  \"com_nav_not_supported\": \"Tidak Didukung\",\n  \"com_nav_open_sidebar\": \"Buka sidebar\",\n  \"com_nav_plugin_auth_error\": \"Ada kesalahan saat mencoba mengautentikasi plugin ini. Silakan coba lagi.\",\n  \"com_nav_plugin_search\": \"Cari plugin\",\n  \"com_nav_plugin_store\": \"Toko plugin\",\n  \"com_nav_profile_picture\": \"Foto Profil\",\n  \"com_nav_save_drafts\": \"Simpan draft\",\n  \"com_nav_search_placeholder\": \"Cari pesan\",\n  \"com_nav_send_message\": \"Kirim pesan\",\n  \"com_nav_setting_account\": \"Akun\",\n  \"com_nav_setting_beta\": \"Fitur beta\",\n  \"com_nav_setting_data\": \"Kontrol data\",\n  \"com_nav_setting_general\": \"Umum\",\n  \"com_nav_settings\": \"Pengaturan\",\n  \"com_nav_shared_links\": \"Link berbagi\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Gelap\",\n  \"com_nav_theme_light\": \"Terang\",\n  \"com_nav_theme_system\": \"Sistem\",\n  \"com_nav_user\": \"PENGGUNA\",\n  \"com_nav_user_name_display\": \"Tampilkan nama pengguna dalam pesan\",\n  \"com_nav_welcome_message\": \"Bagaimana saya bisa membantu Anda hari ini?\",\n  \"com_show_agent_settings\": \"Tampilkan Pengaturan Agen\",\n  \"com_show_completion_settings\": \"Tampilkan Pengaturan Penyelesaian\",\n  \"com_show_examples\": \"Tampilkan Contoh\",\n  \"com_ui_accept\": \"Saya menerima\",\n  \"com_ui_all\": \"semua\",\n  \"com_ui_archive\": \"Arsip\",\n  \"com_ui_archive_error\": \"Gagal mengarsipkan percakapan\",\n  \"com_ui_bookmark_delete_confirm\": \"Apakah Anda yakin ingin menghapus penanda ini?\",\n  \"com_ui_bookmarks\": \"Penanda\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Tambahkan ke percakapan saat ini\",\n  \"com_ui_bookmarks_count\": \"Jumlah\",\n  \"com_ui_bookmarks_create_error\": \"Terjadi kesalahan saat membuat penanda\",\n  \"com_ui_bookmarks_create_success\": \"Penanda berhasil dibuat\",\n  \"com_ui_bookmarks_delete_error\": \"Terjadi kesalahan saat menghapus penanda\",\n  \"com_ui_bookmarks_delete_success\": \"Penanda berhasil dihapus\",\n  \"com_ui_bookmarks_description\": \"Deskripsi\",\n  \"com_ui_bookmarks_new\": \"Penanda Baru\",\n  \"com_ui_bookmarks_title\": \"Judul\",\n  \"com_ui_bookmarks_update_error\": \"Terjadi kesalahan saat memperbarui penanda\",\n  \"com_ui_bookmarks_update_success\": \"Penanda berhasil diperbarui\",\n  \"com_ui_cancel\": \"Batal\",\n  \"com_ui_clear\": \"Bersihkan\",\n  \"com_ui_close\": \"Tutup\",\n  \"com_ui_confirm_action\": \"Konfirmasi Aksi\",\n  \"com_ui_continue\": \"Lanjutkan\",\n  \"com_ui_copied_to_clipboard\": \"Disalin ke papan klip\",\n  \"com_ui_copy_link\": \"Salin tautan\",\n  \"com_ui_copy_to_clipboard\": \"Salin ke papan klip\",\n  \"com_ui_create_link\": \"Buat tautan\",\n  \"com_ui_decline\": \"Saya tidak menerima\",\n  \"com_ui_delete\": \"Hapus\",\n  \"com_ui_delete_confirm\": \"Ini akan menghapus\",\n  \"com_ui_delete_conversation\": \"Hapus chat?\",\n  \"com_ui_edit\": \"Edit\",\n  \"com_ui_enter\": \"Masuk\",\n  \"com_ui_examples\": \"Contoh\",\n  \"com_ui_happy_birthday\": \"Ini ulang tahun pertamaku!\",\n  \"com_ui_import_conversation_error\": \"Terjadi kesalahan saat mengimpor percakapan Anda\",\n  \"com_ui_import_conversation_info\": \"Impor percakapan dari file JSON\",\n  \"com_ui_import_conversation_success\": \"Percakapan berhasil diimpor\",\n  \"com_ui_input\": \"Masukan\",\n  \"com_ui_model\": \"Model\",\n  \"com_ui_new_chat\": \"Chat Baru\",\n  \"com_ui_next\": \"Berikutnya\",\n  \"com_ui_no_terms_content\": \"Tidak ada konten syarat dan ketentuan untuk ditampilkan\",\n  \"com_ui_of\": \"dari\",\n  \"com_ui_prev\": \"Sebelumnya\",\n  \"com_ui_preview\": \"Pratinjau\",\n  \"com_ui_regenerate\": \"Regenerasi\",\n  \"com_ui_rename\": \"Renombrar\",\n  \"com_ui_revoke\": \"Cabut\",\n  \"com_ui_revoke_info\": \"Cabut semua kredensial yang diberikan pengguna\",\n  \"com_ui_save\": \"Simpan\",\n  \"com_ui_save_submit\": \"Simpan & Kirim\",\n  \"com_ui_saved\": \"Tersimpan!\",\n  \"com_ui_select_model\": \"Pilih model\",\n  \"com_ui_share\": \"Bagikan\",\n  \"com_ui_share_create_message\": \"Nama Anda dan pesan apa pun yang Anda tambahkan setelah berbagi tetap pribadi.\",\n  \"com_ui_share_delete_error\": \"Terjadi kesalahan saat menghapus tautan yang dibagikan.\",\n  \"com_ui_share_error\": \"Terjadi kesalahan saat membagikan tautan chat\",\n  \"com_ui_share_link_to_chat\": \"Bagikan tautan ke chat\",\n  \"com_ui_share_update_message\": \"Nama Anda, petunjuk khusus, dan pesan apa pun yang Anda tambahkan setelah berbagi tetap pribadi.\",\n  \"com_ui_shared_link_not_found\": \"Tautan berbagi tidak ditemukan\",\n  \"com_ui_stop\": \"Berhenti\",\n  \"com_ui_submit\": \"Kirim\",\n  \"com_ui_terms_and_conditions\": \"Syarat dan Ketentuan\",\n  \"com_ui_unarchive\": \"Buka Arsip\",\n  \"com_ui_unarchive_error\": \"Gagal membuka arsip\",\n  \"com_ui_upload\": \"Unggah\",\n  \"com_ui_upload_error\": \"Ada kesalahan saat mengunggah file Anda\",\n  \"com_ui_upload_success\": \"Berhasil mengunggah file\",\n  \"com_ui_use_prompt\": \"Gunakan petunjuk\",\n  \"com_user_message\": \"Kamu\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/it/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"L'IA sta ancora componendo\",\n  \"com_a11y_end\": \"L'IA ha terminato la sua risposta\",\n  \"com_a11y_start\": \"L'IA ha iniziato la sua risposta\",\n  \"com_agents_allow_editing\": \"Permetti ad altri utenti di modificare il tuo agente\",\n  \"com_agents_by_librechat\": \"da LibreChat\",\n  \"com_agents_code_interpreter\": \"Quando abilitato, permette al tuo agente di utilizzare l'API LibreChat Code Interpreter per eseguire codice generato in modo sicuro, inclusa l'elaborazione dei file. Richiede una chiave API valida.\",\n  \"com_agents_code_interpreter_title\": \"API Interprete Codice\",\n  \"com_agents_create_error\": \"Si è verificato un errore durante la creazione del tuo agente.\",\n  \"com_agents_description_placeholder\": \"Opzionale: Descrivi qui il tuo Agente\",\n  \"com_agents_enable_file_search\": \"Abilita Ricerca File\",\n  \"com_agents_file_search_disabled\": \"L'Agente deve essere creato prima di caricare file per la Ricerca File.\",\n  \"com_agents_file_search_info\": \"Quando abilitato, l'agente verrà informato dei nomi esatti dei file elencati di seguito, permettendogli di recuperare il contesto pertinente da questi file.\",\n  \"com_agents_instructions_placeholder\": \"Le istruzioni di sistema utilizzate dall'agente\",\n  \"com_agents_missing_provider_model\": \"Seleziona un provider e un modello prima di creare un agente.\",\n  \"com_agents_name_placeholder\": \"Opzionale: Il nome dell'agente\",\n  \"com_agents_no_access\": \"Non hai l'autorizzazione per modificare questo agente.\",\n  \"com_agents_not_available\": \"Agente Non Disponibile\",\n  \"com_agents_search_name\": \"Cerca agenti per nome\",\n  \"com_agents_update_error\": \"Si è verificato un errore durante l'aggiornamento del tuo agente.\",\n  \"com_assistants_actions\": \"Azioni\",\n  \"com_assistants_actions_disabled\": \"Devi prima creare un assistente prima di aggiungere azioni.\",\n  \"com_assistants_actions_info\": \"Permetti al tuo Assistente di recuperare informazioni o eseguire azioni tramite API\",\n  \"com_assistants_add_actions\": \"Aggiungi Azioni\",\n  \"com_assistants_add_tools\": \"Aggiungi Strumenti\",\n  \"com_assistants_append_date\": \"Aggiungi Data e Ora Attuali\",\n  \"com_assistants_append_date_tooltip\": \"Quando attivo, la data e l'ora attuali del cliente saranno aggiunte alle istruzioni del sistema dell'Assistente.\",\n  \"com_assistants_available_actions\": \"Azioni Disponibili\",\n  \"com_assistants_capabilities\": \"Capacità\",\n  \"com_assistants_code_interpreter\": \"Interprete Codice\",\n  \"com_assistants_code_interpreter_files\": \"I seguenti file sono disponibili solo per Code Interpreter:\",\n  \"com_assistants_code_interpreter_info\": \"L'Interprete Codice permette all'assistente di scrivere ed eseguire codice. Questo strumento può elaborare file con diversi formati e tipi di dati, e generare file come grafici.\",\n  \"com_assistants_completed_action\": \"Parlato con {{0}}\",\n  \"com_assistants_completed_function\": \"Eseguito {{0}}\",\n  \"com_assistants_conversation_starters\": \"Spunti di Conversazione\",\n  \"com_assistants_conversation_starters_placeholder\": \"Inserisci un argomento di conversazione\",\n  \"com_assistants_create_error\": \"Si è verificato un errore durante la creazione del tuo assistente.\",\n  \"com_assistants_create_success\": \"Creazione avvenuta con successo\",\n  \"com_assistants_delete_actions_error\": \"Si è verificato un errore durante l'eliminazione dell'azione.\",\n  \"com_assistants_delete_actions_success\": \"Azione eliminata dall'Assistente con successo\",\n  \"com_assistants_description_placeholder\": \"Opzionale: Descrivi qui il tuo Assistente\",\n  \"com_assistants_domain_info\": \"L'Assistente ha inviato queste informazioni a {{0}}\",\n  \"com_assistants_file_search\": \"Ricerca File\",\n  \"com_assistants_file_search_info\": \"L'aggiunta di archivi vettoriali per la Ricerca File non è ancora supportata. Puoi aggiungerli dal Provider Playground o allegare file ai messaggi per la ricerca file su base di thread.\",\n  \"com_assistants_function_use\": \"L'Assistente ha usato {{0}}\",\n  \"com_assistants_image_vision\": \"Visione Immagine\",\n  \"com_assistants_instructions_placeholder\": \"Le istruzioni di sistema che l'assistente utilizza\",\n  \"com_assistants_knowledge\": \"Conoscenza\",\n  \"com_assistants_knowledge_disabled\": \"L'Assistente deve essere creato, e Code Interpreter o Retrieval devono essere abilitati e salvati prima di caricare file come Conoscenza.\",\n  \"com_assistants_knowledge_info\": \"Se carichi file sotto Conoscenza, le conversazioni con il tuo Assistente potrebbero includere i contenuti dei file.\",\n  \"com_assistants_max_starters_reached\": \"Raggiunto il numero massimo di conversazioni iniziali\",\n  \"com_assistants_name_placeholder\": \"Opzionale: Il nome dell'assistente\",\n  \"com_assistants_non_retrieval_model\": \"La ricerca di file non è abilitata su questo modello. Seleziona un altro modello.\",\n  \"com_assistants_retrieval\": \"Retrival\",\n  \"com_assistants_running_action\": \"Azione in corso\",\n  \"com_assistants_search_name\": \"Cerca assistenti per nome\",\n  \"com_assistants_update_actions_error\": \"Si è verificato un errore durante la creazione o l'aggiornamento dell'azione.\",\n  \"com_assistants_update_actions_success\": \"Azione creata o aggiornata con successo\",\n  \"com_assistants_update_error\": \"Si è verificato un errore durante l'aggiornamento del tuo assistente.\",\n  \"com_assistants_update_success\": \"Aggiornamento avvenuto con successo\",\n  \"com_auth_already_have_account\": \"Hai già un account?\",\n  \"com_auth_apple_login\": \"Continua con Apple\",\n  \"com_auth_back_to_login\": \"Torna all'accesso\",\n  \"com_auth_click\": \"Clicca\",\n  \"com_auth_click_here\": \"Clicca qui\",\n  \"com_auth_continue\": \"Continua\",\n  \"com_auth_create_account\": \"Crea il tuo account\",\n  \"com_auth_discord_login\": \"Continua con Discord\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Indirizzo email\",\n  \"com_auth_email_max_length\": \"L'email non deve superare i 120 caratteri\",\n  \"com_auth_email_min_length\": \"L'email deve essere di almeno 6 caratteri\",\n  \"com_auth_email_pattern\": \"Devi inserire un indirizzo email valido\",\n  \"com_auth_email_required\": \"L'email è obbligatoria\",\n  \"com_auth_email_resend_link\": \"Reinvia email\",\n  \"com_auth_email_resent_failed\": \"Impossibile reinviare l'email di verifica\",\n  \"com_auth_email_resent_success\": \"Email di verifica reinviata con successo\",\n  \"com_auth_email_verification_failed\": \"Verifica email fallita\",\n  \"com_auth_email_verification_failed_token_missing\": \"Verifica fallita, token mancante\",\n  \"com_auth_email_verification_in_progress\": \"Verifica dell'email in corso, attendere prego\",\n  \"com_auth_email_verification_invalid\": \"Verifica email non valida\",\n  \"com_auth_email_verification_redirecting\": \"Reindirizzamento in {{0}} secondi...\",\n  \"com_auth_email_verification_resend_prompt\": \"Non hai ricevuto l'email?\",\n  \"com_auth_email_verification_success\": \"Email verificata con successo\",\n  \"com_auth_error_create\": \"Si è verificato un errore durante il tentativo di registrare il tuo account. Riprova.\",\n  \"com_auth_error_invalid_reset_token\": \"Questo token di reset della password non è più valido.\",\n  \"com_auth_error_login\": \"Impossibile eseguire l'accesso con le informazioni fornite. Controlla le tue credenziali e riprova.\",\n  \"com_auth_error_login_ban\": \"Il tuo account è stato temporaneamente bloccato a causa di violazioni del nostro servizio.\",\n  \"com_auth_error_login_rl\": \"Troppi tentativi di accesso in un breve periodo di tempo. Riprova più tardi.\",\n  \"com_auth_error_login_server\": \"Si è verificato un errore interno del server. Attendi qualche istante e riprova.\",\n  \"com_auth_error_login_unverified\": \"Il tuo account non è stato verificato. Controlla la tua email per il link di verifica.\",\n  \"com_auth_facebook_login\": \"Continua con Facebook\",\n  \"com_auth_full_name\": \"Nome completo\",\n  \"com_auth_github_login\": \"Continua con Github\",\n  \"com_auth_google_login\": \"Continua con Google\",\n  \"com_auth_here\": \"QUI\",\n  \"com_auth_login\": \"Accedi\",\n  \"com_auth_login_with_new_password\": \"Ora puoi accedere con la tua nuova password.\",\n  \"com_auth_name_max_length\": \"Il nome deve essere inferiore a 80 caratteri\",\n  \"com_auth_name_min_length\": \"Il nome deve essere di almeno 3 caratteri\",\n  \"com_auth_name_required\": \"Il nome è obbligatorio\",\n  \"com_auth_no_account\": \"Non hai un account?\",\n  \"com_auth_password\": \"Password\",\n  \"com_auth_password_confirm\": \"Conferma password\",\n  \"com_auth_password_forgot\": \"Password dimenticata?\",\n  \"com_auth_password_max_length\": \"La password deve essere inferiore a 128 caratteri\",\n  \"com_auth_password_min_length\": \"La password deve essere di almeno 8 caratteri\",\n  \"com_auth_password_not_match\": \"Le password non corrispondono\",\n  \"com_auth_password_required\": \"La password è obbligatoria\",\n  \"com_auth_registration_success_generic\": \"Controlla la tua email per verificare il tuo indirizzo di posta elettronica.\",\n  \"com_auth_registration_success_insecure\": \"Registrazione completata con successo.\",\n  \"com_auth_reset_password\": \"Reimposta la tua password\",\n  \"com_auth_reset_password_if_email_exists\": \"Se esiste un account associato a questa email, ti abbiamo inviato un'email con le istruzioni per reimpostare la password. Ricordati di controllare anche la cartella spam.\",\n  \"com_auth_reset_password_link_sent\": \"Email inviata\",\n  \"com_auth_reset_password_success\": \"Reset della password avvenuto con successo\",\n  \"com_auth_sign_in\": \"Accedi\",\n  \"com_auth_sign_up\": \"Registrati\",\n  \"com_auth_submit_registration\": \"Invia registrazione\",\n  \"com_auth_to_reset_your_password\": \"per reimpostare la tua password.\",\n  \"com_auth_to_try_again\": \"per riprovare.\",\n  \"com_auth_username\": \"Nome utente (opzionale)\",\n  \"com_auth_username_max_length\": \"Il nome utente deve essere inferiore a 20 caratteri\",\n  \"com_auth_username_min_length\": \"Il nome utente deve essere di almeno 2 caratteri\",\n  \"com_auth_welcome_back\": \"Ben tornato\",\n  \"com_click_to_download\": \"clicca qui per scaricare\",\n  \"com_download_expired\": \"download scaduto\",\n  \"com_download_expires\": \"(clicca qui per scaricare - scade il {{0}})\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agente\",\n  \"com_endpoint_agent_model\": \"Modello Agente (Consigliato: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Seleziona un Agente\",\n  \"com_endpoint_ai\": \"IA\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Numero massimo di token che possono essere generati nella risposta. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"La cache dei prompt permette di riutilizzare contesti o istruzioni estese tra le chiamate API, riducendo costi e latenza\",\n  \"com_endpoint_anthropic_temp\": \"Varia da 0 a 1. Usa temp più vicino a 0 per analitica / scelta multipla, e più vicino a 1 per compiti creativi e generativi. Consigliamo di modificare questo o Top P ma non entrambi.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k cambia il modo in cui il modello seleziona i token per l'output. Un top-k di 1 significa che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (anche chiamato greedy decoding), mentre un top-k di 3 significa che il prossimo token è selezionato tra i 3 più probabili (usando la temperatura).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dai più probabili K (vedi parametro topK) ai meno probabili fino a quando la somma delle loro probabilità eguaglia il valore top-p.\",\n  \"com_endpoint_assistant\": \"Assistente\",\n  \"com_endpoint_assistant_model\": \"Modello Assistente\",\n  \"com_endpoint_assistant_placeholder\": \"Seleziona un Assistente dal Pannello laterale destro\",\n  \"com_endpoint_completion\": \"Completamento\",\n  \"com_endpoint_completion_model\": \"Modello Completamento (Consigliato: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Clicca qui\",\n  \"com_endpoint_config_google_api_info\": \"Per ottenere la tua chiave API Generative Language (per Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Chiave API Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(da Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Chiave Account di Servizio Google\",\n  \"com_endpoint_config_key\": \"Imposta chiave API\",\n  \"com_endpoint_config_key_encryption\": \"La tua chiave sarà crittografata ed eliminata al\",\n  \"com_endpoint_config_key_for\": \"Imposta chiave API per\",\n  \"com_endpoint_config_key_google_need_to\": \"Devi\",\n  \"com_endpoint_config_key_google_service_account\": \"Creare un Account di Servizio\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Abilitare Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API su Google Cloud, poi\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Assicurati di cliccare su \\\"Crea e Continua\\\" per assegnare almeno il ruolo \\\"Utente Vertex AI\\\". Infine, crea una chiave JSON da importare qui.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importa chiave JSON Account di Servizio.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Chiave JSON Account di Servizio non valida, hai importato il file corretto?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Chiave JSON Account di Servizio importata con successo\",\n  \"com_endpoint_config_key_name\": \"Chiave\",\n  \"com_endpoint_config_key_never_expires\": \"La tua chiave non scadrà mai\",\n  \"com_endpoint_config_placeholder\": \"Imposta la tua Chiave nel menu Header per chattare.\",\n  \"com_endpoint_config_value\": \"Inserisci valore per\",\n  \"com_endpoint_context\": \"Contesto\",\n  \"com_endpoint_context_info\": \"Il numero massimo di token che possono essere utilizzati per il contesto. Usalo per controllare quanti token vengono inviati per richiesta. Se non specificato, verranno utilizzate le impostazioni di sistema predefinite in base alle dimensioni del contesto dei modelli noti. Impostare valori più alti potrebbe causare errori e/o costi di token più elevati.\",\n  \"com_endpoint_context_tokens\": \"Token di Contesto Massimi\",\n  \"com_endpoint_custom_name\": \"Nome personalizzato\",\n  \"com_endpoint_default\": \"predefinito\",\n  \"com_endpoint_default_blank\": \"predefinito: vuoto\",\n  \"com_endpoint_default_empty\": \"predefinito: vuoto\",\n  \"com_endpoint_default_with_num\": \"predefinito: {{0}}\",\n  \"com_endpoint_examples\": \"Preimpostazioni\",\n  \"com_endpoint_export\": \"Esporta\",\n  \"com_endpoint_export_share\": \"Esporta/Condividi\",\n  \"com_endpoint_frequency_penalty\": \"Penalità di frequenza\",\n  \"com_endpoint_func_hover\": \"Abilita l'uso di Plugin come OpenAI Functions\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Imposta un nome personalizzato per Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Numero massimo di token che possono essere generati nella risposta. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.\",\n  \"com_endpoint_google_temp\": \"Valori più alti = più casualità, mentre valori più bassi = più focalizzati e deterministici. Consigliamo di modificare questo o Top P ma non entrambi.\",\n  \"com_endpoint_google_topk\": \"Top-k cambia il modo in cui il modello seleziona i token per l'output. Un top-k di 1 significa che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (anche chiamato greedy decoding), mentre un top-k di 3 significa che il prossimo token è selezionato tra i 3 più probabili (usando la temperatura).\",\n  \"com_endpoint_google_topp\": \"Top-p cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dai più probabili K (vedi parametro topK) ai meno probabili fino a quando la somma delle loro probabilità eguaglia il valore top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Sovrascrivi istruzioni\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Sovrascrive le istruzioni dell'assistente. Utile per modificare il comportamento su base singola.\",\n  \"com_endpoint_max_output_tokens\": \"Token di output massimi\",\n  \"com_endpoint_message\": \"Messaggio\",\n  \"com_endpoint_message_new\": \"Messaggio {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Modifica il tuo messaggio o Rigenera.\",\n  \"com_endpoint_my_preset\": \"La mia preimpostazione\",\n  \"com_endpoint_no_presets\": \"Ancora nessuna preimpostazione, usa il pulsante impostazioni per crearne una\",\n  \"com_endpoint_open_menu\": \"Apri menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Imposta un nome personalizzato per l'IA\",\n  \"com_endpoint_openai_detail\": \"La risoluzione per le richieste Vision. \\\"Bassa\\\" è più economica e veloce, \\\"Alta\\\" è più dettagliata e costosa, e \\\"Auto\\\" sceglierà automaticamente tra le due in base alla risoluzione dell'immagine.\",\n  \"com_endpoint_openai_freq\": \"Numero compreso tra -2.0 e 2.0. Valori positivi penalizzano i nuovi token basati sulla loro frequenza esistente nel testo fino a quel momento, diminuendo la probabilità del modello di ripetere la stessa riga verbatim.\",\n  \"com_endpoint_openai_max\": \"I token massimi da generare. La lunghezza totale dei token di input e dei token generati è limitata dalla lunghezza del contesto del modello.\",\n  \"com_endpoint_openai_max_tokens\": \"Campo `max_tokens` opzionale, che rappresenta il numero massimo di token che possono essere generati nel completamento della chat.\\n\\nLa lunghezza totale dei token di input e dei token generati è limitata dalla lunghezza del contesto del modello. Potresti riscontrare errori se questo numero supera il massimo dei token di contesto.\",\n  \"com_endpoint_openai_pres\": \"Numero compreso tra -2.0 e 2.0. Valori positivi penalizzano i nuovi token in base a se compaiono nel testo fino a quel momento, aumentando la probabilità del modello di parlare di nuovi argomenti.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Imposta istruzioni personalizzate da includere nel Messaggio di Sistema. Predefinito: nessuno\",\n  \"com_endpoint_openai_reasoning_effort\": \"solo per modelli o1: limita lo sforzo sul ragionamento per i modelli di ragionamento. Ridurre lo sforzo di ragionamento può portare a risposte più veloci e a un minor numero di token utilizzati per il ragionamento in una risposta\",\n  \"com_endpoint_openai_resend\": \"Invia nuovamente tutte le immagini allegate in precedenza. Nota: questo può aumentare significativamente il costo dei token e potresti incontrare errori con molti allegati di immagini.\",\n  \"com_endpoint_openai_resend_files\": \"Invia nuovamente tutti i file allegati in precedenza. Nota: questo aumenterà il costo dei token e potresti incontrare errori con molti allegati.\",\n  \"com_endpoint_openai_stop\": \"Fino a 4 sequenze in cui l'API smetterà di generare ulteriori token.\",\n  \"com_endpoint_openai_temp\": \"Valori più alti = più casualità, mentre valori più bassi = più focalizzati e deterministici. Consigliamo di modificare questo o Top P ma non entrambi.\",\n  \"com_endpoint_openai_topp\": \"Un'alternativa al campionamento con temperatura, chiamata nucleus sampling, in cui il modello considera i risultati dei token con probabilità di massa top_p. Quindi 0,1 significa che vengono considerati solo i token che compongono la massa di probabilità superiore al 10%. Consigliamo di modificare questo o la temperatura ma non entrambi.\",\n  \"com_endpoint_output\": \"Output\",\n  \"com_endpoint_plug_image_detail\": \"Dettaglio immagine\",\n  \"com_endpoint_plug_resend_files\": \"Reinvia file\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Imposta istruzioni personalizzate da includere nel Messaggio di Sistema. Predefinito: nessuno\",\n  \"com_endpoint_plug_skip_completion\": \"Salta completamento\",\n  \"com_endpoint_plug_use_functions\": \"Usa funzioni\",\n  \"com_endpoint_presence_penalty\": \"Penalità di presenza\",\n  \"com_endpoint_preset\": \"preimpostazione\",\n  \"com_endpoint_preset_default\": \"è ora la preimpostazione predefinita.\",\n  \"com_endpoint_preset_default_item\": \"Predefinita:\",\n  \"com_endpoint_preset_default_none\": \"Nessuna preimpostazione predefinita attiva.\",\n  \"com_endpoint_preset_default_removed\": \"non è più la preimpostazione predefinita.\",\n  \"com_endpoint_preset_delete_confirm\": \"Sei sicuro di voler eliminare questa preimpostazione?\",\n  \"com_endpoint_preset_delete_error\": \"Si è verificato un errore durante l'eliminazione della preimpostazione. Riprova.\",\n  \"com_endpoint_preset_import\": \"Preimpostazione importata!\",\n  \"com_endpoint_preset_import_error\": \"Si è verificato un errore durante l'importazione della preimpostazione. Riprova.\",\n  \"com_endpoint_preset_name\": \"Nome preimpostazione\",\n  \"com_endpoint_preset_save_error\": \"Si è verificato un errore durante il salvataggio della preimpostazione. Riprova.\",\n  \"com_endpoint_preset_selected\": \"Preimpostazione attiva!\",\n  \"com_endpoint_preset_selected_title\": \"Attiva!\",\n  \"com_endpoint_preset_title\": \"Preimpostazione\",\n  \"com_endpoint_presets\": \"preimpostazioni\",\n  \"com_endpoint_presets_clear_warning\": \"Sei sicuro di voler cancellare tutte le preimpostazioni? Questa azione è irreversibile.\",\n  \"com_endpoint_prompt_cache\": \"Usa Cache dei Prompt\",\n  \"com_endpoint_prompt_prefix\": \"Istruzioni personalizzate\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Istruzioni aggiuntive\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Imposta istruzioni o contesto aggiuntivi oltre alle istruzioni principali dell'Assistente. Ignorato se vuoto.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Imposta istruzioni personalizzate o contesto. Ignorato se vuoto.\",\n  \"com_endpoint_reasoning_effort\": \"Impegno nel Ragionamento\",\n  \"com_endpoint_save_as_preset\": \"Salva come Preimpostazione\",\n  \"com_endpoint_search\": \"Cerca endpoint per nome\",\n  \"com_endpoint_set_custom_name\": \"Imposta un nome personalizzato, nel caso tu possa trovare questa preimpostazione\",\n  \"com_endpoint_skip_hover\": \"Abilita la possibilità di saltare il passaggio di completamento, che rivede la risposta finale e i passaggi generati\",\n  \"com_endpoint_stop\": \"Sequenze di stop\",\n  \"com_endpoint_stop_placeholder\": \"Separa i valori premendo `Invio`\",\n  \"com_endpoint_temperature\": \"Temperatura\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Usa Assistente Attivo\",\n  \"com_error_expired_user_key\": \"La chiave fornita per {{0}} è scaduta il {{1}}. Fornisci una chiave e riprova.\",\n  \"com_error_files_dupe\": \"File duplicato rilevato.\",\n  \"com_error_files_empty\": \"I file vuoti non sono consentiti.\",\n  \"com_error_files_process\": \"Si è verificato un errore durante l'elaborazione del file.\",\n  \"com_error_files_unsupported_capability\": \"Nessuna funzionalità abilitata che supporti questo tipo di file.\",\n  \"com_error_files_upload\": \"Si è verificato un errore durante il caricamento del file.\",\n  \"com_error_files_upload_canceled\": \"La richiesta di caricamento del file è stata annullata. Nota: il caricamento del file potrebbe essere ancora in corso e potrebbe essere necessario eliminarlo manualmente.\",\n  \"com_error_files_validation\": \"Si è verificato un errore durante la validazione del file.\",\n  \"com_error_input_length\": \"Il conteggio dei token dell'ultimo messaggio è troppo lungo e supera il limite consentito ({{0}}). Per favore, accorcia il tuo messaggio, modifica la dimensione massima del contesto dai parametri della conversazione, oppure crea una diramazione della conversazione per continuare.\",\n  \"com_error_invalid_user_key\": \"Chiave fornita non valida. Fornisci una chiave e riprova.\",\n  \"com_error_moderation\": \"Sembra che il contenuto inviato sia stato contrassegnato dal nostro sistema di moderazione per non essere allineato con le nostre linee guida della community. Non possiamo procedere con questo argomento specifico. Se hai altre domande o argomenti che vorresti esplorare, modifica il tuo messaggio o crea una nuova conversazione.\",\n  \"com_error_no_base_url\": \"Nessun URL base trovato. Forniscine uno e riprova.\",\n  \"com_error_no_user_key\": \"Nessuna chiave trovata. Fornisci una chiave e riprova.\",\n  \"com_files_filter\": \"Filtra file...\",\n  \"com_files_no_results\": \"Nessun risultato.\",\n  \"com_files_number_selected\": \"{{0}} di {{1}} file selezionati\",\n  \"com_generated_files\": \"File generati:\",\n  \"com_hide_examples\": \"Nascondi esempi\",\n  \"com_nav_account_settings\": \"Impostazioni account\",\n  \"com_nav_always_make_prod\": \"Rendi sempre produttive le nuove versioni\",\n  \"com_nav_archive_created_at\": \"DateCreated\",\n  \"com_nav_archive_name\": \"Nome\",\n  \"com_nav_archived_chats\": \"Chat archiviate\",\n  \"com_nav_archived_chats_empty\": \"Non hai chat archiviate.\",\n  \"com_nav_at_command\": \"Comando @\",\n  \"com_nav_at_command_description\": \"Attiva il comando \\\"@\\\" per cambiare endpoint, modelli, preset e altro\",\n  \"com_nav_audio_play_error\": \"Errore durante la riproduzione audio: {{0}}\",\n  \"com_nav_audio_process_error\": \"Errore durante l'elaborazione dell'audio: {{0}}\",\n  \"com_nav_auto_scroll\": \"Scorri automaticamente ai nuovi messaggi all'apertura\",\n  \"com_nav_auto_send_prompts\": \"Invio automatico dei prompt\",\n  \"com_nav_auto_send_text\": \"Invio automatico del testo\",\n  \"com_nav_auto_send_text_disabled\": \"imposta -1 per disabilitare\",\n  \"com_nav_auto_transcribe_audio\": \"Trascrivi audio automaticamente\",\n  \"com_nav_automatic_playback\": \"Riproduzione automatica ultimo messaggio\",\n  \"com_nav_balance\": \"Bilancia\",\n  \"com_nav_browser\": \"Browser\",\n  \"com_nav_buffer_append_error\": \"Problema con lo streaming audio. La riproduzione potrebbe essere interrotta.\",\n  \"com_nav_change_picture\": \"Cambia immagine\",\n  \"com_nav_chat_commands\": \"Comandi Chat\",\n  \"com_nav_chat_commands_info\": \"Questi comandi vengono attivati digitando caratteri specifici all'inizio del tuo messaggio. Ogni comando viene attivato dal suo prefisso designato. Puoi disabilitarli se usi frequentemente questi caratteri per iniziare i messaggi.\",\n  \"com_nav_chat_direction\": \"Direzione della chat\",\n  \"com_nav_clear_all_chats\": \"Cancella tutte le chat\",\n  \"com_nav_clear_cache_confirm_message\": \"Sei sicuro di voler svuotare la cache?\",\n  \"com_nav_clear_conversation\": \"Cancella conversazioni\",\n  \"com_nav_clear_conversation_confirm_message\": \"Sei sicuro di voler cancellare tutte le conversazioni? Questa azione è irreversibile.\",\n  \"com_nav_close_sidebar\": \"Chiudi barra laterale\",\n  \"com_nav_commands\": \"Comandi\",\n  \"com_nav_confirm_clear\": \"Conferma cancellazione\",\n  \"com_nav_conversation_mode\": \"Modalità Conversazione\",\n  \"com_nav_convo_menu_options\": \"Opzioni menu conversazione\",\n  \"com_nav_db_sensitivity\": \"Sensibilità decibel\",\n  \"com_nav_delete_account\": \"Elimina account\",\n  \"com_nav_delete_account_button\": \"Elimina permanentemente il mio account\",\n  \"com_nav_delete_account_confirm\": \"Sei sicuro di voler eliminare il tuo account?\",\n  \"com_nav_delete_account_email_placeholder\": \"Inserisci la tua email\",\n  \"com_nav_delete_cache_storage\": \"Elimina cache TTS\",\n  \"com_nav_delete_data_info\": \"Tutti i tuoi dati verranno eliminati.\",\n  \"com_nav_delete_warning\": \"ATTENZIONE: Questa azione eliminerà definitivamente il tuo account.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Abilita cache TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Usa voci basate su cloud\",\n  \"com_nav_enabled\": \"Abilitato\",\n  \"com_nav_engine\": \"Motore\",\n  \"com_nav_enter_to_send\": \"Premi Invio per inviare messaggi\",\n  \"com_nav_export\": \"Esporta\",\n  \"com_nav_export_all_message_branches\": \"Esporta tutti i rami dei messaggi\",\n  \"com_nav_export_conversation\": \"Esporta conversazione\",\n  \"com_nav_export_filename\": \"Nome file\",\n  \"com_nav_export_filename_placeholder\": \"Imposta il nome del file\",\n  \"com_nav_export_include_endpoint_options\": \"Includi opzioni endpoint\",\n  \"com_nav_export_recursive\": \"Ricorsivo\",\n  \"com_nav_export_recursive_or_sequential\": \"Ricorsivo o sequenziale?\",\n  \"com_nav_export_type\": \"Tipo\",\n  \"com_nav_external\": \"Esterno\",\n  \"com_nav_font_size\": \"Dimensione carattere messaggi\",\n  \"com_nav_font_size_base\": \"Medio\",\n  \"com_nav_font_size_lg\": \"Grande\",\n  \"com_nav_font_size_sm\": \"Piccolo\",\n  \"com_nav_font_size_xl\": \"Extra Large\",\n  \"com_nav_font_size_xs\": \"Extra Small\",\n  \"com_nav_help_faq\": \"Guida e FAQ\",\n  \"com_nav_hide_panel\": \"Nascondi il Pannello laterale più a destra\",\n  \"com_nav_info_code_artifacts\": \"Abilita la visualizzazione di artefatti di codice sperimentali accanto alla chat\",\n  \"com_nav_info_custom_prompt_mode\": \"Quando attivata, l'istruzione predefinita del sistema per gli artefatti non verrà inclusa. In questa modalità, tutte le istruzioni per la generazione degli artefatti dovranno essere fornite manualmente.\",\n  \"com_nav_info_enter_to_send\": \"Quando attivo, premendo `INVIO` invierai il tuo messaggio. Quando disattivato, premendo Invio andrai a capo, e dovrai premere `CTRL + INVIO` / `⌘ + INVIO` per inviare il messaggio.\",\n  \"com_nav_info_fork_change_default\": \"\\\"Solo messaggi visibili\\\" include solo il percorso diretto al messaggio selezionato. \\\"Includi rami correlati\\\" aggiunge i rami lungo il percorso. \\\"Includi tutti i messaggi da/verso qui\\\" include tutti i messaggi e i rami connessi.\",\n  \"com_nav_info_fork_split_target_setting\": \"Quando abilitato, la duplicazione inizierà dal messaggio di destinazione fino all'ultimo messaggio della conversazione, secondo il comportamento selezionato.\",\n  \"com_nav_info_include_shadcnui\": \"Quando abilitato, verranno incluse le istruzioni per l'utilizzo dei componenti shadcn/ui. shadcn/ui è una raccolta di componenti riutilizzabili costruiti utilizzando Radix UI e Tailwind CSS. Nota: queste sono istruzioni dettagliate, dovresti abilitarle solo se ritieni importante informare l'LLM sulle corrette importazioni e sui componenti. Per maggiori informazioni su questi componenti, visita: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Quando attivato, il codice LaTeX nei messaggi verrà visualizzato come equazioni matematiche. Disattivarlo può migliorare le prestazioni se non hai bisogno della visualizzazione LaTeX.\",\n  \"com_nav_info_save_draft\": \"Quando attivata, questa funzione salverà automaticamente come bozze il testo e gli allegati inseriti nella chat. Queste bozze saranno disponibili anche se ricarichi la pagina o passi a un'altra conversazione. Le bozze vengono memorizzate localmente sul tuo dispositivo e vengono eliminate una volta inviato il messaggio.\",\n  \"com_nav_info_show_thinking\": \"Quando attivato, la chat mostrerà i menu a tendina del ragionamento aperti per impostazione predefinita, permettendoti di visualizzare il ragionamento dell'IA in tempo reale. Quando disattivato, i menu a tendina del ragionamento rimarranno chiusi per impostazione predefinita per un'interfaccia più pulita e snella\",\n  \"com_nav_info_user_name_display\": \"Quando attivato, il nome utente del mittente verrà mostrato sopra ogni messaggio che invii. Quando disattivato, vedrai solo \\\"Tu\\\" sopra i tuoi messaggi.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Rileva automaticamente\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Lingua\",\n  \"com_nav_latex_parsing\": \"Analizza LaTeX nei messaggi (potrebbe influire sulle prestazioni)\",\n  \"com_nav_log_out\": \"Disconnetti\",\n  \"com_nav_long_audio_warning\": \"I testi più lunghi richiederanno più tempo per l'elaborazione.\",\n  \"com_nav_maximize_chat_space\": \"Massimizza spazio chat\",\n  \"com_nav_modular_chat\": \"Abilita il cambio di Endpoint a metà conversazione\",\n  \"com_nav_my_files\": \"I miei file\",\n  \"com_nav_no_search_results\": \"Nessun risultato trovato\",\n  \"com_nav_not_supported\": \"Non supportato\",\n  \"com_nav_open_sidebar\": \"Apri barra laterale\",\n  \"com_nav_playback_rate\": \"Velocità di riproduzione audio\",\n  \"com_nav_plugin_auth_error\": \"Si è verificato un errore durante il tentativo di autenticazione di questo plugin. Riprova.\",\n  \"com_nav_plugin_install\": \"Installa\",\n  \"com_nav_plugin_search\": \"Cerca plugin\",\n  \"com_nav_plugin_store\": \"Store plugin\",\n  \"com_nav_plugin_uninstall\": \"Disinstalla\",\n  \"com_nav_plus_command\": \"+-Comando\",\n  \"com_nav_plus_command_description\": \"Attiva/disattiva il comando \\\"+\\\" per aggiungere un'impostazione multi-risposta\",\n  \"com_nav_profile_picture\": \"Immagine profilo\",\n  \"com_nav_save_drafts\": \"Salva bozze localmente\",\n  \"com_nav_scroll_button\": \"Pulsante per scorrere fino alla fine\",\n  \"com_nav_search_placeholder\": \"Cerca messaggi\",\n  \"com_nav_send_message\": \"Invia messaggio\",\n  \"com_nav_setting_account\": \"Account\",\n  \"com_nav_setting_beta\": \"Funzioni Beta\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Controlli dati\",\n  \"com_nav_setting_general\": \"Generale\",\n  \"com_nav_setting_speech\": \"Voce\",\n  \"com_nav_settings\": \"Impostazioni\",\n  \"com_nav_shared_links\": \"Link condivisi\",\n  \"com_nav_show_code\": \"Mostra sempre il codice quando si usa l'interprete di codice\",\n  \"com_nav_show_thinking\": \"Apri i menu a tendina del ragionamento per impostazione predefinita\",\n  \"com_nav_slash_command\": \"/-Comando\",\n  \"com_nav_slash_command_description\": \"Attiva il comando \\\"/\\\" per selezionare un prompt tramite tastiera\",\n  \"com_nav_source_buffer_error\": \"Errore durante l'impostazione della riproduzione audio. Aggiorna la pagina.\",\n  \"com_nav_speech_cancel_error\": \"Impossibile interrompere la riproduzione audio. Potrebbe essere necessario aggiornare la pagina.\",\n  \"com_nav_speech_to_text\": \"Da voce a testo\",\n  \"com_nav_stop_generating\": \"Interrompi generazione\",\n  \"com_nav_text_to_speech\": \"Da testo a voce\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Scuro\",\n  \"com_nav_theme_light\": \"Chiaro\",\n  \"com_nav_theme_system\": \"Sistema\",\n  \"com_nav_tool_dialog\": \"Strumenti Assistente\",\n  \"com_nav_tool_dialog_agents\": \"Strumenti Agente\",\n  \"com_nav_tool_dialog_description\": \"L'Assistente deve essere salvato per conservare le selezioni degli strumenti.\",\n  \"com_nav_tool_remove\": \"Rimuovi\",\n  \"com_nav_tool_search\": \"Cerca strumenti\",\n  \"com_nav_tts_init_error\": \"Impossibile inizializzare la sintesi vocale: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"La sintesi vocale per il motore selezionato non è supportata in questo browser.\",\n  \"com_nav_user\": \"UTENTE\",\n  \"com_nav_user_msg_markdown\": \"Visualizza i messaggi utente in markdown\",\n  \"com_nav_user_name_display\": \"Mostra nome utente nei messaggi\",\n  \"com_nav_voice_select\": \"Voce\",\n  \"com_nav_voices_fetch_error\": \"Impossibile recuperare le opzioni vocali. Controlla la tua connessione internet.\",\n  \"com_nav_welcome_agent\": \"Seleziona un Assistente\",\n  \"com_nav_welcome_assistant\": \"Seleziona un Assistente\",\n  \"com_nav_welcome_message\": \"Come posso aiutarti oggi?\",\n  \"com_show_agent_settings\": \"Mostra impostazioni Agente\",\n  \"com_show_completion_settings\": \"Mostra impostazioni Completamento\",\n  \"com_show_examples\": \"Mostra esempi\",\n  \"com_sidepanel_agent_builder\": \"Costruttore Agente\",\n  \"com_sidepanel_assistant_builder\": \"Costruttore Assistente\",\n  \"com_sidepanel_attach_files\": \"Allega File\",\n  \"com_sidepanel_conversation_tags\": \"Segnalibri\",\n  \"com_sidepanel_hide_panel\": \"Nascondi Pannello\",\n  \"com_sidepanel_manage_files\": \"Gestisci File\",\n  \"com_sidepanel_parameters\": \"Parametri\",\n  \"com_sidepanel_select_agent\": \"Seleziona un Agente\",\n  \"com_sidepanel_select_assistant\": \"Seleziona un Assistente\",\n  \"com_ui_accept\": \"Accetto\",\n  \"com_ui_add\": \"Aggiungi\",\n  \"com_ui_add_model_preset\": \"Aggiungi un modello o una preimpostazione per una risposta aggiuntiva\",\n  \"com_ui_add_multi_conversation\": \"Aggiungi conversazioni multiple\",\n  \"com_ui_admin\": \"Amministratore\",\n  \"com_ui_admin_access_warning\": \"La disattivazione dell'accesso amministratore a questa funzionalità potrebbe causare problemi imprevisti all'interfaccia utente che richiedono un aggiornamento. Una volta salvata, l'unico modo per ripristinare è attraverso l'impostazione dell'interfaccia nel file di configurazione librechat.yaml, che influisce su tutti i ruoli.\",\n  \"com_ui_admin_settings\": \"Impostazioni Amministratore\",\n  \"com_ui_advanced\": \"Avanzate\",\n  \"com_ui_agent\": \"Agente\",\n  \"com_ui_agent_delete_error\": \"Si è verificato un errore durante l'eliminazione dell'agente\",\n  \"com_ui_agent_deleted\": \"Agente eliminato con successo\",\n  \"com_ui_agent_duplicate_error\": \"Si è verificato un errore durante la duplicazione dell'assistente\",\n  \"com_ui_agent_duplicated\": \"Agente duplicato con successo\",\n  \"com_ui_agent_editing_allowed\": \"Altri utenti possono già modificare questo assistente\",\n  \"com_ui_agents\": \"Agenti\",\n  \"com_ui_agents_allow_create\": \"Consenti creazione Agenti\",\n  \"com_ui_agents_allow_share_global\": \"Consenti la condivisione degli Agenti con tutti gli utenti\",\n  \"com_ui_agents_allow_use\": \"Consenti utilizzo Agenti\",\n  \"com_ui_all\": \"tutto\",\n  \"com_ui_all_proper\": \"Tutto\",\n  \"com_ui_archive\": \"Archivia\",\n  \"com_ui_archive_error\": \"Errore durante l'archiviazione della conversazione\",\n  \"com_ui_artifact_click\": \"Clicca per aprire\",\n  \"com_ui_artifacts\": \"Artefatti\",\n  \"com_ui_artifacts_toggle\": \"Mostra/Nascondi Interfaccia Artefatti\",\n  \"com_ui_ascending\": \"Crescente\",\n  \"com_ui_assistant\": \"Assistente\",\n  \"com_ui_assistant_delete_error\": \"Si è verificato un errore durante l'eliminazione dell'assistente\",\n  \"com_ui_assistant_deleted\": \"Assistente eliminato con successo\",\n  \"com_ui_assistants\": \"Assistenti\",\n  \"com_ui_assistants_output\": \"Output Assistenti\",\n  \"com_ui_attach_error\": \"Impossibile allegare il file. Crea o seleziona una conversazione, oppure prova a ricaricare la pagina.\",\n  \"com_ui_attach_error_openai\": \"Non è possibile allegare file dell'Assistente ad altri endpoint\",\n  \"com_ui_attach_error_size\": \"Limite dimensione file superato per l'endpoint:\",\n  \"com_ui_attach_error_type\": \"Tipo di file non supportato per l'endpoint:\",\n  \"com_ui_attach_warn_endpoint\": \"Attenzione: i file non compatibili con lo strumento potrebbero essere ignorati\",\n  \"com_ui_attachment\": \"Allegato\",\n  \"com_ui_authentication\": \"Autenticazione\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_back_to_chat\": \"Torna alla Chat\",\n  \"com_ui_back_to_prompts\": \"Torna ai prompt\",\n  \"com_ui_bookmark_delete_confirm\": \"Sei sicuro di voler eliminare questo segnalibro?\",\n  \"com_ui_bookmarks\": \"Segnalibri\",\n  \"com_ui_bookmarks_add\": \"Aggiungi Segnalibri\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Aggiungi alla conversazione attuale\",\n  \"com_ui_bookmarks_count\": \"Conteggio\",\n  \"com_ui_bookmarks_create_error\": \"Si è verificato un errore durante la creazione del segnalibro\",\n  \"com_ui_bookmarks_create_exists\": \"Questo segnalibro esiste già\",\n  \"com_ui_bookmarks_create_success\": \"Segnalibro creato con successo\",\n  \"com_ui_bookmarks_delete\": \"Elimina Segnalibro\",\n  \"com_ui_bookmarks_delete_error\": \"Si è verificato un errore durante l'eliminazione del segnalibro\",\n  \"com_ui_bookmarks_delete_success\": \"Segnalibro eliminato con successo\",\n  \"com_ui_bookmarks_description\": \"Descrizione\",\n  \"com_ui_bookmarks_edit\": \"Modifica Segnalibro\",\n  \"com_ui_bookmarks_filter\": \"Filtra segnalibri...\",\n  \"com_ui_bookmarks_new\": \"Nuovo Segnalibro\",\n  \"com_ui_bookmarks_title\": \"Titolo\",\n  \"com_ui_bookmarks_update_error\": \"Si è verificato un errore durante l'aggiornamento del segnalibro\",\n  \"com_ui_bookmarks_update_success\": \"Segnalibro aggiornato con successo\",\n  \"com_ui_bulk_delete_error\": \"Impossibile eliminare i link condivisi\",\n  \"com_ui_cancel\": \"Annulla\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Cronologia chat\",\n  \"com_ui_clear\": \"Cancella\",\n  \"com_ui_clear_all\": \"Cancella tutto\",\n  \"com_ui_close\": \"Chiudi\",\n  \"com_ui_close_menu\": \"Chiudi Menu\",\n  \"com_ui_code\": \"Codice\",\n  \"com_ui_collapse_chat\": \"Comprimi Chat\",\n  \"com_ui_command_placeholder\": \"Opzionale: Inserisci un comando per il prompt o verrà utilizzato il nome\",\n  \"com_ui_command_usage_placeholder\": \"Seleziona un prompt tramite comando o nome\",\n  \"com_ui_confirm_action\": \"Conferma Azione\",\n  \"com_ui_confirm_admin_use_change\": \"La modifica di questa impostazione bloccherà l'accesso agli amministratori, te compreso. Sei sicuro di voler procedere?\",\n  \"com_ui_confirm_change\": \"Conferma modifica\",\n  \"com_ui_context\": \"Contesto\",\n  \"com_ui_continue\": \"Continua\",\n  \"com_ui_controls\": \"Controlli\",\n  \"com_ui_copied\": \"Copiato!\",\n  \"com_ui_copied_to_clipboard\": \"Copiato negli appunti\",\n  \"com_ui_copy_code\": \"Copia codice\",\n  \"com_ui_copy_link\": \"Copia link\",\n  \"com_ui_copy_to_clipboard\": \"Copia negli appunti\",\n  \"com_ui_create\": \"Crea\",\n  \"com_ui_create_link\": \"Crea link\",\n  \"com_ui_create_prompt\": \"Crea prompt\",\n  \"com_ui_currently_production\": \"Attualmente in produzione\",\n  \"com_ui_custom_prompt_mode\": \"Modalità Prompt Personalizzato\",\n  \"com_ui_dashboard\": \"Pannello di controllo\",\n  \"com_ui_date\": \"Data\",\n  \"com_ui_date_april\": \"Aprile\",\n  \"com_ui_date_august\": \"Agosto\",\n  \"com_ui_date_december\": \"Dicembre\",\n  \"com_ui_date_february\": \"Febbraio\",\n  \"com_ui_date_january\": \"Gennaio\",\n  \"com_ui_date_july\": \"Luglio\",\n  \"com_ui_date_june\": \"Giugno\",\n  \"com_ui_date_march\": \"Marzo\",\n  \"com_ui_date_may\": \"Maggio\",\n  \"com_ui_date_november\": \"Novembre\",\n  \"com_ui_date_october\": \"Ottobre\",\n  \"com_ui_date_previous_30_days\": \"Ultimi 30 giorni\",\n  \"com_ui_date_previous_7_days\": \"Ultimi 7 giorni\",\n  \"com_ui_date_september\": \"Settembre\",\n  \"com_ui_date_today\": \"Oggi\",\n  \"com_ui_date_yesterday\": \"Ieri\",\n  \"com_ui_decline\": \"Non accetto\",\n  \"com_ui_delete\": \"Elimina\",\n  \"com_ui_delete_action\": \"Elimina Azione\",\n  \"com_ui_delete_action_confirm\": \"Sei sicuro di voler eliminare questa azione?\",\n  \"com_ui_delete_agent_confirm\": \"Sei sicuro di voler eliminare questo agente?\",\n  \"com_ui_delete_assistant_confirm\": \"Sei sicuro di voler eliminare questo Assistente? Questa operazione non può essere annullata.\",\n  \"com_ui_delete_confirm\": \"Questo eliminerà\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Questo eliminerà la versione selezionata per \\\"{{0}}\\\". Se non esistono altre versioni, il prompt verrà eliminato.\",\n  \"com_ui_delete_conversation\": \"Eliminare la chat?\",\n  \"com_ui_delete_prompt\": \"Eliminare il prompt?\",\n  \"com_ui_delete_shared_link\": \"Eliminare il link condiviso?\",\n  \"com_ui_delete_tool\": \"Elimina Strumento\",\n  \"com_ui_delete_tool_confirm\": \"Sei sicuro di voler eliminare questo strumento?\",\n  \"com_ui_descending\": \"Decrescente\",\n  \"com_ui_description\": \"Descrizione\",\n  \"com_ui_description_placeholder\": \"Opzionale: Inserisci una descrizione da mostrare per il prompt\",\n  \"com_ui_download\": \"Scarica\",\n  \"com_ui_download_artifact\": \"Scarica Artefatto\",\n  \"com_ui_download_error\": \"Errore durante il download del file. Il file potrebbe essere stato eliminato.\",\n  \"com_ui_dropdown_variables\": \"Variabili a tendina:\",\n  \"com_ui_dropdown_variables_info\": \"Crea menu a tendina personalizzati per i tuoi prompt: `{{nome_variabile:opzione1|opzione2|opzione3}}`\",\n  \"com_ui_duplicate\": \"Duplica\",\n  \"com_ui_duplication_error\": \"Si è verificato un errore durante la duplicazione della conversazione\",\n  \"com_ui_duplication_processing\": \"Duplicazione conversazione in corso...\",\n  \"com_ui_duplication_success\": \"Conversazione duplicata con successo\",\n  \"com_ui_edit\": \"Modifica\",\n  \"com_ui_endpoint\": \"Endpoint\",\n  \"com_ui_endpoint_menu\": \"Menu Endpoint LLM\",\n  \"com_ui_endpoints_available\": \"Endpoint Disponibili\",\n  \"com_ui_enter\": \"Invio\",\n  \"com_ui_enter_api_key\": \"Inserisci API Key\",\n  \"com_ui_enter_openapi_schema\": \"Inserisci qui il tuo schema OpenAPI\",\n  \"com_ui_enter_var\": \"Inserisci {{0}}\",\n  \"com_ui_error\": \"Errore\",\n  \"com_ui_error_connection\": \"Errore di connessione al server, prova ad aggiornare la pagina.\",\n  \"com_ui_error_save_admin_settings\": \"Si è verificato un errore durante il salvataggio delle impostazioni amministrative.\",\n  \"com_ui_examples\": \"Esempi\",\n  \"com_ui_export_convo_modal\": \"Esporta Conversazione\",\n  \"com_ui_field_required\": \"Questo campo è obbligatorio\",\n  \"com_ui_filter_prompts\": \"Filtra Prompt\",\n  \"com_ui_filter_prompts_name\": \"Filtra prompt per nome\",\n  \"com_ui_fork\": \"Duplica\",\n  \"com_ui_fork_all_target\": \"Includi tutto da/per qui\",\n  \"com_ui_fork_branches\": \"Includi rami correlati\",\n  \"com_ui_fork_change_default\": \"Cambia opzione di duplicazione predefinita\",\n  \"com_ui_fork_default\": \"Usa opzione di duplicazione predefinita\",\n  \"com_ui_fork_error\": \"Si è verificato un errore durante la duplicazione della conversazione\",\n  \"com_ui_fork_from_message\": \"Seleziona un'opzione di duplicazione\",\n  \"com_ui_fork_info_1\": \"Usa questa impostazione per duplicare i messaggi con il comportamento desiderato.\",\n  \"com_ui_fork_info_2\": \"\\\"Duplicare\\\" si riferisce alla creazione di una nuova conversazione che inizia/termina dai messaggi specifici nella conversazione corrente, creando una copia in base alle opzioni selezionate.\",\n  \"com_ui_fork_info_3\": \"Il \\\"messaggio di destinazione\\\" si riferisce al messaggio dal quale è stato aperto questo popup, oppure, se selezioni \\\"{{0}}\\\", all'ultimo messaggio della conversazione.\",\n  \"com_ui_fork_info_branches\": \"Questa opzione duplica i messaggi visibili, insieme ai rami correlati; in altre parole, il percorso diretto al messaggio di destinazione, inclusi i rami lungo il percorso.\",\n  \"com_ui_fork_info_remember\": \"Seleziona questa opzione per ricordare le opzioni selezionate per un futuro utilizzo, rendendo più veloce la duplicazione delle conversazioni come preferito.\",\n  \"com_ui_fork_info_start\": \"Se selezionato, la duplicazione partirà da questo messaggio fino all'ultimo messaggio della conversazione, in base al comportamento selezionato sopra.\",\n  \"com_ui_fork_info_target\": \"Questa opzione duplica tutti i messaggi che portano al messaggio di destinazione, inclusi i suoi vicini; in altre parole, sono inclusi tutti i rami di messaggi, sia che siano visibili o meno o lungo lo stesso percorso.\",\n  \"com_ui_fork_info_visible\": \"Questa opzione duplica solo i messaggi visibili; in altre parole, il percorso diretto al messaggio di destinazione, senza alcun ramo.\",\n  \"com_ui_fork_processing\": \"Duplicazione conversazione in corso...\",\n  \"com_ui_fork_remember\": \"Ricorda\",\n  \"com_ui_fork_remember_checked\": \"La tua selezione verrà ricordata dopo l'utilizzo. Puoi cambiarla in qualsiasi momento nelle impostazioni.\",\n  \"com_ui_fork_split_target\": \"Avvia la duplicazione da qui\",\n  \"com_ui_fork_split_target_setting\": \"Avvia la duplicazione dal messaggio di destinazione per impostazione predefinita\",\n  \"com_ui_fork_success\": \"Conversazione duplicata con successo\",\n  \"com_ui_fork_visible\": \"Solo messaggi visibili\",\n  \"com_ui_go_back\": \"Torna indietro\",\n  \"com_ui_go_to_conversation\": \"Vai alla conversazione\",\n  \"com_ui_happy_birthday\": \"È il mio 1° compleanno!\",\n  \"com_ui_hide_qr\": \"Nascondi codice QR\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Generazione immagine\",\n  \"com_ui_import_conversation_error\": \"Si è verificato un errore durante l'importazione delle conversazioni\",\n  \"com_ui_import_conversation_file_type_error\": \"Tipo di importazione non supportato\",\n  \"com_ui_import_conversation_info\": \"Importa conversazioni da un file JSON\",\n  \"com_ui_import_conversation_success\": \"Conversazioni importate con successo\",\n  \"com_ui_include_shadcnui\": \"Includi istruzioni per i componenti shadcn/ui\",\n  \"com_ui_input\": \"Input\",\n  \"com_ui_instructions\": \"Istruzioni\",\n  \"com_ui_latest_footer\": \"L'intelligenza artificiale per tutti.\",\n  \"com_ui_latest_production_version\": \"Ultima versione in produzione\",\n  \"com_ui_latest_version\": \"Ultima versione\",\n  \"com_ui_librechat_code_api_key\": \"Ottieni la tua chiave API per l'Interprete di Codice LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Sicuro. Multilingue. Gestione File.\",\n  \"com_ui_librechat_code_api_title\": \"Esegui Codice AI\",\n  \"com_ui_llm_menu\": \"Menu LLM\",\n  \"com_ui_llms_available\": \"LLM Disponibili\",\n  \"com_ui_locked\": \"Bloccato\",\n  \"com_ui_logo\": \"{{0}} Logo\",\n  \"com_ui_manage\": \"Gestisci\",\n  \"com_ui_max_tags\": \"Il numero massimo consentito è {{0}}, verranno utilizzati gli ultimi valori.\",\n  \"com_ui_mention\": \"Menziona un endpoint, assistente o preset per passare rapidamente ad esso\",\n  \"com_ui_min_tags\": \"Impossibile rimuovere altri valori, è richiesto un minimo di {{0}}.\",\n  \"com_ui_model\": \"Modello\",\n  \"com_ui_model_parameters\": \"Parametri del Modello\",\n  \"com_ui_more_info\": \"Maggiori informazioni\",\n  \"com_ui_my_prompts\": \"I miei prompt\",\n  \"com_ui_name\": \"Nome\",\n  \"com_ui_new_chat\": \"Nuova chat\",\n  \"com_ui_next\": \"Succ\",\n  \"com_ui_no\": \"No\",\n  \"com_ui_no_bookmarks\": \"Sembra che tu non abbia ancora segnalibri. Clicca su una chat e aggiungine uno nuovo\",\n  \"com_ui_no_category\": \"Nessuna categoria\",\n  \"com_ui_no_changes\": \"Nessuna modifica da aggiornare\",\n  \"com_ui_no_terms_content\": \"Nessun contenuto dei termini d'uso da visualizzare\",\n  \"com_ui_none_selected\": \"Nessuna selezionata\",\n  \"com_ui_nothing_found\": \"Non è stato trovato nulla\",\n  \"com_ui_of\": \"di\",\n  \"com_ui_off\": \"Disattivo\",\n  \"com_ui_on\": \"Attivo\",\n  \"com_ui_page\": \"Pagina\",\n  \"com_ui_prev\": \"Prec\",\n  \"com_ui_preview\": \"Anteprima\",\n  \"com_ui_privacy_policy\": \"Informativa sulla privacy\",\n  \"com_ui_privacy_policy_url\": \"URL Informativa Privacy\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Questo prompt è già stato condiviso con tutti gli utenti\",\n  \"com_ui_prompt_name\": \"Nome del prompt\",\n  \"com_ui_prompt_name_required\": \"Il nome del prompt è obbligatorio\",\n  \"com_ui_prompt_preview_not_shared\": \"L'autore non ha consentito la collaborazione per questo prompt.\",\n  \"com_ui_prompt_text\": \"Testo\",\n  \"com_ui_prompt_text_required\": \"Il testo è obbligatorio\",\n  \"com_ui_prompt_update_error\": \"Si è verificato un errore durante l'aggiornamento del prompt\",\n  \"com_ui_prompts\": \"Prompt\",\n  \"com_ui_prompts_allow_create\": \"Consenti creazione Prompt\",\n  \"com_ui_prompts_allow_share_global\": \"Consenti la condivisione dei prompt con tutti gli utenti\",\n  \"com_ui_prompts_allow_use\": \"Consenti uso dei prompt\",\n  \"com_ui_provider\": \"Fornitore\",\n  \"com_ui_read_aloud\": \"Leggi ad alta voce\",\n  \"com_ui_refresh_link\": \"Aggiorna link\",\n  \"com_ui_regenerate\": \"Rigenera\",\n  \"com_ui_region\": \"Regione\",\n  \"com_ui_rename\": \"Rinomina\",\n  \"com_ui_rename_prompt\": \"Rinomina Prompt\",\n  \"com_ui_reset_var\": \"Reimposta {{0}}\",\n  \"com_ui_result\": \"Risultato\",\n  \"com_ui_revoke\": \"Revoca\",\n  \"com_ui_revoke_info\": \"Revoca tutte le credenziali fornite dall'utente\",\n  \"com_ui_revoke_key_confirm\": \"Sei sicuro di voler revocare questa chiave?\",\n  \"com_ui_revoke_key_endpoint\": \"Revoca Chiave per {{0}}\",\n  \"com_ui_revoke_keys\": \"Revoca Chiavi\",\n  \"com_ui_revoke_keys_confirm\": \"Sei sicuro di voler revocare tutte le chiavi?\",\n  \"com_ui_role_select\": \"Ruolo\",\n  \"com_ui_run_code\": \"Esegui Codice\",\n  \"com_ui_run_code_error\": \"Si è verificato un errore durante l'esecuzione del codice\",\n  \"com_ui_save\": \"Salva\",\n  \"com_ui_save_submit\": \"Salva e Invia\",\n  \"com_ui_saved\": \"Salvata!\",\n  \"com_ui_schema\": \"Schema\",\n  \"com_ui_search\": \"Cerca\",\n  \"com_ui_select\": \"Seleziona\",\n  \"com_ui_select_file\": \"Seleziona un file\",\n  \"com_ui_select_model\": \"Seleziona un modello\",\n  \"com_ui_select_provider\": \"Seleziona un provider\",\n  \"com_ui_select_provider_first\": \"Seleziona prima un provider\",\n  \"com_ui_select_region\": \"Seleziona una regione\",\n  \"com_ui_select_search_model\": \"Cerca modello per nome\",\n  \"com_ui_select_search_plugin\": \"Cerca plugin per nome\",\n  \"com_ui_select_search_provider\": \"Cerca provider per nome\",\n  \"com_ui_select_search_region\": \"Cerca regione per nome\",\n  \"com_ui_share\": \"Condividi\",\n  \"com_ui_share_create_message\": \"Il tuo nome e qualsiasi messaggio aggiunto dopo la condivisione rimarranno privati.\",\n  \"com_ui_share_delete_error\": \"Si è verificato un errore durante l'eliminazione del link condiviso.\",\n  \"com_ui_share_error\": \"Si è verificato un errore durante la condivisione del link della chat\",\n  \"com_ui_share_link_to_chat\": \"Condividi link a chat\",\n  \"com_ui_share_to_all_users\": \"Condividi con tutti gli utenti\",\n  \"com_ui_share_update_message\": \"Il tuo nome, istruzioni personalizzate e qualsiasi messaggio aggiunto dopo la condivisione rimarranno privati.\",\n  \"com_ui_share_var\": \"Condividi {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Link condivisi eliminati con successo\",\n  \"com_ui_shared_link_delete_success\": \"Link condiviso eliminato con successo\",\n  \"com_ui_shared_link_not_found\": \"Link condiviso non trovato\",\n  \"com_ui_shared_prompts\": \"Prompt condivisi\",\n  \"com_ui_show_all\": \"Mostra Tutto\",\n  \"com_ui_show_qr\": \"Mostra codice QR\",\n  \"com_ui_simple\": \"Semplice\",\n  \"com_ui_size\": \"Dimensione\",\n  \"com_ui_special_variables\": \"Variabili speciali:\",\n  \"com_ui_special_variables_info\": \"Usa `{{current_date}}` per la data attuale e `{{current_user}}` per il nome del tuo account.\",\n  \"com_ui_speech_while_submitting\": \"Impossibile inviare il messaggio mentre è in corso la generazione di una risposta\",\n  \"com_ui_stop\": \"Ferma\",\n  \"com_ui_storage\": \"Archiviazione\",\n  \"com_ui_submit\": \"Invia\",\n  \"com_ui_temporary_chat\": \"Chat Temporanea\",\n  \"com_ui_terms_and_conditions\": \"Termini d'uso\",\n  \"com_ui_terms_of_service\": \"Termini di servizio\",\n  \"com_ui_thinking\": \"Pensando...\",\n  \"com_ui_thoughts\": \"Pensieri\",\n  \"com_ui_tools\": \"Strumenti\",\n  \"com_ui_unarchive\": \"Disarchivia\",\n  \"com_ui_unarchive_error\": \"Impossibile disarchiviare la conversazione\",\n  \"com_ui_unknown\": \"Sconosciuto\",\n  \"com_ui_update\": \"Aggiorna\",\n  \"com_ui_upload\": \"Carica\",\n  \"com_ui_upload_code_files\": \"Carica per l'Interprete di Codice\",\n  \"com_ui_upload_delay\": \"Il caricamento di \\\"{{0}}\\\" sta richiedendo più tempo del previsto. Attendi il completamento dell'indicizzazione per il recupero.\",\n  \"com_ui_upload_error\": \"Si è verificato un errore durante il caricamento del file\",\n  \"com_ui_upload_file_search\": \"Carica per ricerca file\",\n  \"com_ui_upload_files\": \"Carica file\",\n  \"com_ui_upload_image\": \"Carica un'immagine\",\n  \"com_ui_upload_image_input\": \"Carica immagine\",\n  \"com_ui_upload_invalid\": \"File non valido per il caricamento. Deve essere un'immagine che non supera il limite\",\n  \"com_ui_upload_invalid_var\": \"File non valido per il caricamento. Deve essere un'immagine non superiore a {{0}} MB\",\n  \"com_ui_upload_success\": \"File caricato con successo\",\n  \"com_ui_upload_type\": \"Seleziona Tipo di Caricamento\",\n  \"com_ui_use_micrphone\": \"Usa microfono\",\n  \"com_ui_use_prompt\": \"Usa prompt\",\n  \"com_ui_variables\": \"Variabili\",\n  \"com_ui_variables_info\": \"Usa le doppie parentesi graffe nel testo per creare variabili, ad esempio `{{variabile esempio}}`, da compilare successivamente quando utilizzi il prompt.\",\n  \"com_ui_version_var\": \"Versione {{0}}\",\n  \"com_ui_versions\": \"Versioni\",\n  \"com_ui_view_source\": \"Visualizza chat sorgente\",\n  \"com_ui_yes\": \"Sì\",\n  \"com_ui_zoom\": \"Zoom\",\n  \"com_user_message\": \"Mostra nome utente nei messaggi\",\n  \"com_warning_resubmit_unsupported\": \"Il reinvio del messaggio AI non è supportato per questo endpoint.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/ja/translation.json",
    "content": "{\n  \"bisheng\": \"{{bisheng}}\",\n  \"linsight\": \"{{linsight}}\",\n  \"linsightFullName\": \"{{linsightFull}}\",\n  \"com_a11y_ai_composing\": \"AI は返信を作成中です。\",\n  \"com_a11y_end\": \"AI の返信が完了しました。\",\n  \"com_a11y_start\": \"AI が返信を開始しました。\",\n  \"com_agents_allow_editing\": \"他のユーザーによるアシスタントの編集を許可する\",\n  \"com_agents_by_librechat\": \"LibreChat 提供\",\n  \"com_agents_code_interpreter\": \"有効にすると、エージェントは LibreChat のコードインタプリタ API を安全に使用して生成コードを実行し、ファイル処理も行えます。有効な API キーが必要です。\",\n  \"com_agents_code_interpreter_title\": \"コードインタプリタ API\",\n  \"com_agents_create_error\": \"エージェントの更新中にエラーが発生しました。\",\n  \"com_agents_description_placeholder\": \"任意：ここにエージェントの説明を入力\",\n  \"com_agents_enable_file_search\": \"ファイル検索を有効化\",\n  \"com_agents_file_search_disabled\": \"ファイル検索用にファイルをアップロードするには、まず Agent を作成してください。\",\n  \"com_agents_file_search_info\": \"有効にすると、以下の特定ファイル名が Agent に伝えられ、これらのファイルから関連内容を検索できます。\",\n  \"com_agents_instructions_placeholder\": \"エージェントが使用するシステム指示\",\n  \"com_agents_missing_provider_model\": \"作成前にプロバイダとモデルを選択してください\",\n  \"com_agents_name_placeholder\": \"任意：エージェント名\",\n  \"com_agents_no_access\": \"この Agent を編集する権限がありません。\",\n  \"com_agents_not_available\": \"アシスタントは利用できません\",\n  \"com_agents_search_name\": \"名前でエージェントを検索\",\n  \"com_agents_update_error\": \"エージェントの更新中にエラーが発生しました。\",\n  \"com_assistants_action_attempt\": \"アシスタントは {{0}} と対話しようとしています\",\n  \"com_assistants_actions\": \"アクション\",\n  \"com_assistants_actions_disabled\": \"アシスタントを作成してからアクションを追加してください。\",\n  \"com_assistants_actions_info\": \"API を通じて情報取得や操作を行えるようにする\",\n  \"com_assistants_add_actions\": \"アクションを追加\",\n  \"com_assistants_add_tools\": \"ツールを追加\",\n  \"com_assistants_allow_sites_you_trust\": \"信頼できるサイトのみ許可\",\n  \"com_assistants_append_date\": \"現在の日時を追加\",\n  \"com_assistants_append_date_tooltip\": \"有効にすると、現在のクライアントの日時がアシスタントのシステム指示に付加されます。\",\n  \"com_assistants_attempt_info\": \"アシスタントが送信しようとしている内容：\",\n  \"com_assistants_available_actions\": \"利用可能なアクション\",\n  \"com_assistants_capabilities\": \"機能\",\n  \"com_assistants_code_interpreter\": \"コードインタプリタ\",\n  \"com_assistants_code_interpreter_files\": \"以下のファイルはコードインタプリタのみで使用されます：\",\n  \"com_assistants_code_interpreter_info\": \"コードインタプリタにより、アシスタントはコードの作成と実行が可能になります。多様なデータや形式のファイルを扱い、グラフなどのファイルも生成できます。\",\n  \"com_assistants_completed_action\": \"{{0}} とチャット\",\n  \"com_assistants_completed_function\": \"{{0}} を実行\",\n  \"com_assistants_conversation_starters\": \"会話スターター\",\n  \"com_assistants_conversation_starters_placeholder\": \"会話スターターを入力\",\n  \"com_assistants_create_error\": \"アシスタントの作成中にエラーが発生しました。\",\n  \"com_assistants_create_success\": \"作成に成功しました\",\n  \"com_assistants_delete_actions_error\": \"アクションの削除中にエラーが発生しました。\",\n  \"com_assistants_delete_actions_success\": \"アシスタントからアクションを削除しました\",\n  \"com_assistants_description_placeholder\": \"（任意）ここにアシスタントの説明を入力\",\n  \"com_assistants_domain_info\": \"アシスタントはこの情報を {{0}} に送信しました\",\n  \"com_assistants_file_search\": \"ファイル検索\",\n  \"com_assistants_file_search_info\": \"現時点ではファイル検索へベクトルストアを添付できません。プロバイダのプレイグラウンドから添付するか、スレッド単位でファイル検索にファイルを添付してください。\",\n  \"com_assistants_function_use\": \"アシスタントは {{0}} を使用しました\",\n  \"com_assistants_image_vision\": \"画像理解\",\n  \"com_assistants_instructions_placeholder\": \"アシスタントが使用するシステム指示\",\n  \"com_assistants_knowledge\": \"ナレッジ\",\n  \"com_assistants_knowledge_disabled\": \"ファイルを知識としてアップロードするには、アシスタントを作成し、コードインタプリタまたは検索を有効化・保存してください。\",\n  \"com_assistants_knowledge_info\": \"「ナレッジ」にファイルをアップロードすると、アシスタントとの会話にファイル内容が含まれる場合があります。\",\n  \"com_assistants_max_starters_reached\": \"会話スターターの上限に達しました\",\n  \"com_assistants_name_placeholder\": \"（任意）アシスタント名\",\n  \"com_assistants_non_retrieval_model\": \"このモデルはファイル検索をサポートしていません。別のモデルを選んでください。\",\n  \"com_assistants_retrieval\": \"検索\",\n  \"com_assistants_running_action\": \"アクションを実行中\",\n  \"com_assistants_search_name\": \"名前でアシスタントを検索\",\n  \"com_assistants_update_actions_error\": \"アクションの作成または更新中にエラーが発生しました。\",\n  \"com_assistants_update_actions_success\": \"アクションの作成/更新に成功しました\",\n  \"com_assistants_update_error\": \"アシスタントの更新中にエラーが発生しました。\",\n  \"com_assistants_update_success\": \"更新に成功しました\",\n  \"com_auth_already_have_account\": \"すでにアカウントをお持ちですか？\",\n  \"com_auth_apple_login\": \"Apple でログイン\",\n  \"com_auth_back_to_login\": \"ログイン画面に戻る\",\n  \"com_auth_click\": \"クリック\",\n  \"com_auth_click_here\": \"こちらをクリック\",\n  \"com_auth_continue\": \"続行\",\n  \"com_auth_create_account\": \"アカウント作成\",\n  \"com_auth_discord_login\": \"Discord でログイン\",\n  \"com_auth_email\": \"メール\",\n  \"com_auth_email_address\": \"メールアドレス\",\n  \"com_auth_email_max_length\": \"メールアドレスは最大 120 文字です\",\n  \"com_auth_email_min_length\": \"メールアドレスは最低 6 文字です\",\n  \"com_auth_email_pattern\": \"正しいメールアドレスを入力してください\",\n  \"com_auth_email_required\": \"メールは必須項目です\",\n  \"com_auth_email_resend_link\": \"メールを再送\",\n  \"com_auth_email_resent_failed\": \"確認メールの再送に失敗しました\",\n  \"com_auth_email_resent_success\": \"確認メールを再送しました\",\n  \"com_auth_email_verification_failed\": \"メール確認に失敗しました\",\n  \"com_auth_email_verification_failed_token_missing\": \"検証に失敗しました。トークンが無効です\",\n  \"com_auth_email_verification_in_progress\": \"メールを確認中です。しばらくお待ちください\",\n  \"com_auth_email_verification_invalid\": \"無効なメール確認です\",\n  \"com_auth_email_verification_redirecting\": \"{{0}} 秒後にリダイレクトします…\",\n  \"com_auth_email_verification_resend_prompt\": \"メールが届きませんか？\",\n  \"com_auth_email_verification_success\": \"メール確認に成功しました\",\n  \"com_auth_error_create\": \"登録中にエラーが発生しました。もう一度お試しください。\",\n  \"com_auth_error_invalid_reset_token\": \"パスワードリセットのキーが失効しています。\",\n  \"com_auth_error_login\": \"ログインできません。アカウント情報を確認して再試行してください。\",\n  \"com_auth_error_login_ban\": \"当社のサービス規約に基づき、アカウントが一時的に無効化されています。\",\n  \"com_auth_error_login_rl\": \"ログイン試行が多すぎます。しばらくしてからお試しください。\",\n  \"com_auth_error_login_server\": \"内部サーバーエラーです。時間をおいて再試行してください。\",\n  \"com_auth_error_login_unverified\": \"アカウントが未確認です。メール内の確認リンクをご確認ください。\",\n  \"com_auth_facebook_login\": \"Facebook でログイン\",\n  \"com_auth_full_name\": \"氏名\",\n  \"com_auth_github_login\": \"GitHub でログイン\",\n  \"com_auth_google_login\": \"Google でログイン\",\n  \"com_auth_here\": \"こちら\",\n  \"com_auth_login\": \"ログイン\",\n  \"com_auth_login_with_new_password\": \"新しいパスワードでログインできます。\",\n  \"com_auth_name_max_length\": \"氏名は最大 80 文字です\",\n  \"com_auth_name_min_length\": \"氏名は最低 1 文字です\",\n  \"com_auth_name_required\": \"氏名は必須です\",\n  \"com_auth_no_account\": \"アカウントをお持ちでないですか？\",\n  \"com_auth_password\": \"パスワード\",\n  \"com_auth_password_confirm\": \"パスワード確認\",\n  \"com_auth_password_forgot\": \"パスワードをお忘れですか？\",\n  \"com_auth_password_max_length\": \"パスワードは最大 128 文字です\",\n  \"com_auth_password_min_length\": \"パスワードは最低 8 文字です\",\n  \"com_auth_password_not_match\": \"パスワードが一致しません\",\n  \"com_auth_password_required\": \"パスワードは必須です\",\n  \"com_auth_registration_success_generic\": \"メールでアドレス確認を行ってください。\",\n  \"com_auth_registration_success_insecure\": \"登録に成功しました。\",\n  \"com_auth_reset_password\": \"パスワードをリセット\",\n  \"com_auth_reset_password_if_email_exists\": \"このメールアドレスのアカウントが存在する場合、パスワードリセット手順を記載したメールを送信します。迷惑メールフォルダもご確認ください。\",\n  \"com_auth_reset_password_link_sent\": \"パスワードリセットリンクを送信しました\",\n  \"com_auth_reset_password_success\": \"パスワードをリセットしました\",\n  \"com_auth_sign_in\": \"ログイン\",\n  \"com_auth_sign_up\": \"登録\",\n  \"com_auth_submit_registration\": \"登録を送信\",\n  \"com_auth_to_reset_your_password\": \"パスワードをリセットします。\",\n  \"com_auth_to_try_again\": \"もう一度お試しください。\",\n  \"com_auth_username\": \"ユーザー名（任意）\",\n  \"com_auth_username_max_length\": \"ユーザー名は最大 20 文字です\",\n  \"com_auth_username_min_length\": \"ユーザー名は最低 2 文字です\",\n  \"com_auth_welcome_back\": \"おかえりなさい\",\n  \"com_click_to_download\": \"（ここをクリックしてダウンロード）\",\n  \"com_download_expired\": \"ダウンロードの有効期限が切れています\",\n  \"com_download_expires\": \"（ここをクリックしてダウンロード - {{0}} で有効期限切れ）\",\n  \"com_endpoint\": \"チャネル\",\n  \"com_endpoint_agent\": \"エージェント\",\n  \"com_endpoint_agent_model\": \"Agent モデル（推奨: GPT-3.5）\",\n  \"com_endpoint_agent_placeholder\": \"エージェントを選択してください\",\n  \"com_endpoint_ai\": \"AI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"応答で生成できる最大トークン数。短い応答には小さく、長い応答には大きく設定します。注：この上限前に停止することがあります。\",\n  \"com_endpoint_anthropic_prompt_cache\": \"プロンプトキャッシュにより、大きな文脈や指示を API 呼び出し間で再利用でき、コストと遅延を削減します\",\n  \"com_endpoint_anthropic_temp\": \"0〜1 の値。分析/選択型タスクには 0 に近く、創造/生成タスクには 1 に近くします。Top P と同時変更は推奨しません。\",\n  \"com_endpoint_anthropic_topk\": \"top-k は次語選択方法を変更します。1 は最尤語（貪欲）、3 は確率上位 3 語からランダムに選択します。\",\n  \"com_endpoint_anthropic_topp\": \"top-p（核サンプリング）は、確率の合計が p に達するまで上位から語を選びます（topK と併用可）。\",\n  \"com_endpoint_assistant\": \"アシスタント\",\n  \"com_endpoint_assistant_model\": \"アシスタントモデル\",\n  \"com_endpoint_assistant_placeholder\": \"右パネルからアシスタントを選択してください\",\n  \"com_endpoint_completion\": \"補完\",\n  \"com_endpoint_completion_model\": \"補完モデル（推奨: GPT-4）\",\n  \"com_endpoint_config_click_here\": \"ここをクリック\",\n  \"com_endpoint_config_google_api_info\": \"生成 AI（Gemini）の API キーを取得：\",\n  \"com_endpoint_config_google_api_key\": \"Google API KEY\",\n  \"com_endpoint_config_google_cloud_platform\": \"（Google Cloud Platform）\",\n  \"com_endpoint_config_google_gemini_api\": \"（Gemini API）\",\n  \"com_endpoint_config_google_service_key\": \"Google サービスアカウントキー\",\n  \"com_endpoint_config_key\": \"API キーを設定\",\n  \"com_endpoint_config_key_encryption\": \"キーは暗号化され、削除予定：\",\n  \"com_endpoint_config_key_for\": \"API キーを設定：\",\n  \"com_endpoint_config_key_google_need_to\": \"必要な手順：\",\n  \"com_endpoint_config_key_google_service_account\": \"サービスアカウントを作成\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Google Cloud で Vertex AI を有効化\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API を有効化し、\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"「作成して続行」をクリックして少なくとも「Vertex AI User」ロールを付与してください。最後に JSON キーを作成してここにインポートします。\",\n  \"com_endpoint_config_key_import_json_key\": \"サービスアカウントの JSON キーをインポート\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"無効なサービスアカウント JSON キーです。正しいファイルをインポートしましたか？\",\n  \"com_endpoint_config_key_import_json_key_success\": \"サービスアカウント JSON キーをインポートしました\",\n  \"com_endpoint_config_key_name\": \"キー\",\n  \"com_endpoint_config_key_never_expires\": \"キーは無期限で有効です\",\n  \"com_endpoint_config_placeholder\": \"上部メニューで API キーを設定してください。\",\n  \"com_endpoint_config_value\": \"値を入力：\",\n  \"com_endpoint_context\": \"コンテキスト\",\n  \"com_endpoint_context_info\": \"コンテキストに使用できる最大トークン数。各リクエストで送信するトークン数を制御します。未指定の場合はモデルの既知のコンテキストサイズから既定値を使用します。大きくするとエラーやコスト増の可能性があります。\",\n  \"com_endpoint_context_tokens\": \"最大コンテキストトークン数\",\n  \"com_endpoint_custom_name\": \"カスタム名\",\n  \"com_endpoint_default\": \"初期値\",\n  \"com_endpoint_default_blank\": \"初期値：空白\",\n  \"com_endpoint_default_empty\": \"初期値：空\",\n  \"com_endpoint_default_with_num\": \"初期値：{{0}}\",\n  \"com_endpoint_examples\": \"プリセット\",\n  \"com_endpoint_export\": \"エクスポート\",\n  \"com_endpoint_export_share\": \"エクスポート/共有\",\n  \"com_endpoint_frequency_penalty\": \"頻度ペナルティ\",\n  \"com_endpoint_func_hover\": \"プラグインを OpenAI の関数として使用\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Google 用の名前を設定\",\n  \"com_endpoint_google_maxoutputtokens\": \"応答で生成できる最大トークン数。小さい値で短く、大きい値で長く。上限前に停止する場合があります。\",\n  \"com_endpoint_google_temp\": \"値が高いほどランダム性が上がり、低いほど決定的になります。Top-p との同時変更は推奨しません。\",\n  \"com_endpoint_google_topk\": \"top-k は次語の選び方を変えます。1 は最尤、3 は上位 3 語から選択。\",\n  \"com_endpoint_google_topp\": \"top-p（核サンプリング）は確率の合計が p になるまで上位から選択します。\",\n  \"com_endpoint_instructions_assistants\": \"指示の上書き\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"アシスタントの指示を上書きします。逐次的な動作変更に有用です。\",\n  \"com_endpoint_max_output_tokens\": \"最大出力トークン数\",\n  \"com_endpoint_message\": \"宛先\",\n  \"com_endpoint_message_new\": \"メッセージ {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"メッセージ内容を編集するか再生成してください。\",\n  \"com_endpoint_my_preset\": \"マイプリセット\",\n  \"com_endpoint_no_presets\": \"プリセットがありません。設定から作成してください\",\n  \"com_endpoint_open_menu\": \"メニューを開く\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"AI の名前を設定\",\n  \"com_endpoint_openai_detail\": \"Vision に送る画像の解像度。「Low」は安価・高速、「High」は詳細だが高コスト、「Auto」は解像度に応じて自動選択。\",\n  \"com_endpoint_openai_freq\": \"-2.0〜2.0。正の値で頻出トークンを抑制し、反復を減らします。\",\n  \"com_endpoint_openai_max\": \"最大生成トークン数。入力長はモデルのコンテキスト長に依存します。\",\n  \"com_endpoint_openai_max_tokens\": \"チャット補完で生成可能な最大トークン数。入力＋生成の合計はコンテキスト長に制約されます。超えるとエラーの可能性があります。\",\n  \"com_endpoint_openai_pres\": \"-2.0〜2.0。正の値で既出トピックから離れ、新しい話題に向かいやすくします。\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"システムメッセージにカスタム指示を追加（既定は空）\",\n  \"com_endpoint_openai_resend\": \"以前に添付したすべての画像を再送します。トークンコストの増加やエラー発生の可能性があります。\",\n  \"com_endpoint_openai_resend_files\": \"以前に添付したすべてのファイルを再送します。トークンコストの増加やエラー発生の可能性があります。\",\n  \"com_endpoint_openai_stop\": \"最大 4 つの停止シーケンス。生成を停止します。\",\n  \"com_endpoint_openai_temp\": \"高いほどランダム、低いほど決定的。Top P と同時変更は推奨しません。\",\n  \"com_endpoint_openai_topp\": \"核サンプリング。確率質量上位 top_p の語から選択。例：0.1 は上位 10% のみ。温度と同時変更は推奨しません。\",\n  \"com_endpoint_output\": \"出力\",\n  \"com_endpoint_plug_image_detail\": \"画像の詳細\",\n  \"com_endpoint_plug_resend_files\": \"ファイルを再送\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"メッセージの先頭にシステムプロンプトを追加（既定は空）\",\n  \"com_endpoint_plug_skip_completion\": \"補完をスキップ\",\n  \"com_endpoint_plug_use_functions\": \"関数を使用\",\n  \"com_endpoint_presence_penalty\": \"話題の新規性\",\n  \"com_endpoint_preset\": \"プリセット\",\n  \"com_endpoint_preset_default\": \"現在のデフォルトプリセットです。\",\n  \"com_endpoint_preset_default_item\": \"デフォルト：\",\n  \"com_endpoint_preset_default_none\": \"デフォルトプリセットはありません。\",\n  \"com_endpoint_preset_default_removed\": \"デフォルトではなくなりました。\",\n  \"com_endpoint_preset_delete_confirm\": \"このプリセットを削除しますか？\",\n  \"com_endpoint_preset_delete_error\": \"プリセット削除中にエラーが発生しました。再試行してください。\",\n  \"com_endpoint_preset_import\": \"プリセットのインポートに成功しました！\",\n  \"com_endpoint_preset_import_error\": \"プリセットのインポート中にエラーが発生しました。再試行してください。\",\n  \"com_endpoint_preset_name\": \"プリセット名\",\n  \"com_endpoint_preset_save_error\": \"プリセット保存中にエラーが発生しました。再試行してください。\",\n  \"com_endpoint_preset_selected\": \"プリセットが利用可能になりました！\",\n  \"com_endpoint_preset_selected_title\": \"利用可能！\",\n  \"com_endpoint_preset_title\": \"プリセット\",\n  \"com_endpoint_presets\": \"プリセット\",\n  \"com_endpoint_presets_clear_warning\": \"すべてのプリセットを消去しますか？この操作は元に戻せません。\",\n  \"com_endpoint_prompt_cache\": \"プロンプトキャッシュを使用\",\n  \"com_endpoint_prompt_prefix\": \"カスタム指示\",\n  \"com_endpoint_prompt_prefix_assistants\": \"追加指示\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"アシスタントの主指示に加えて追加の指示や文脈を設定。空なら無視。\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"カスタム指示と文脈（既定は空）\",\n  \"com_endpoint_reasoning_effort\": \"推論強度\",\n  \"com_endpoint_save_as_preset\": \"プリセットとして保存\",\n  \"com_endpoint_search\": \"名前でチャネルを検索\",\n  \"com_endpoint_set_custom_name\": \"後で見つけやすいようにカスタム名を設定\",\n  \"com_endpoint_skip_hover\": \"補完ステップをスキップし、最終回答と生成過程を確認\",\n  \"com_endpoint_stop\": \"停止シーケンス\",\n  \"com_endpoint_stop_placeholder\": \"`Enter` で値を区切る\",\n  \"com_endpoint_temperature\": \"ランダム性\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"アクティブなアシスタントを使用\",\n  \"com_error_expired_user_key\": \"提供された {{0}} キーは {{1}} に有効期限が切れました。新しいキーを提供して再試行してください。\",\n  \"com_error_files_dupe\": \"重複ファイルを検出しました\",\n  \"com_error_files_empty\": \"空のファイルのアップロードは許可されていません\",\n  \"com_error_files_process\": \"ファイル処理中にエラーが発生しました\",\n  \"com_error_files_unsupported_capability\": \"この種類のファイルをサポートする機能が有効化されていません\",\n  \"com_error_files_upload\": \"ファイルのアップロード中にエラーが発生しました\",\n  \"com_error_files_upload_canceled\": \"ファイルアップロード要求はキャンセルされました。注：アップロードが継続している場合は手動で削除が必要です。\",\n  \"com_error_files_validation\": \"ファイルの検証中にエラーが発生しました。\",\n  \"com_error_input_length\": \"最新メッセージのトークン数が上限（{{0}}）を超えています。メッセージを短くする、対話パラメータで最大コンテキストを調整する、または会話をフォークしてください。\",\n  \"com_error_invalid_user_key\": \"無効なキーです。有効なキーで再試行してください。\",\n  \"com_error_moderation\": \"申し訳ありません。送信内容がコミュニティガイドラインに抵触したため、このトピックについては続行できません。他の質問や話題があれば、メッセージを編集するか新しい会話を開始してください。\",\n  \"com_error_no_base_url\": \"ベース URL が見つかりません。指定してから再試行してください。\",\n  \"com_error_no_user_key\": \"キーが見つかりません。キーを提供して再試行してください。\",\n  \"com_files_filter\": \"ファイルを絞り込み…\",\n  \"com_files_no_results\": \"結果がありません。\",\n  \"com_files_number_selected\": \"選択済み {{0}} / 合計 {{1}} 件\",\n  \"com_generated_files\": \"生成ファイル\",\n  \"com_hide_examples\": \"例を隠す\",\n  \"com_nav_account_settings\": \"アカウント設定\",\n  \"com_nav_always_make_prod\": \"常に新バージョンを適用\",\n  \"com_nav_archive_created_at\": \"アーカイブ日時\",\n  \"com_nav_archive_name\": \"名称\",\n  \"com_nav_archived_chats\": \"アーカイブ済みの会話\",\n  \"com_nav_archived_chats_empty\": \"アーカイブされた会話はありません。\",\n  \"com_nav_at_command\": \"@ コマンド\",\n  \"com_nav_at_command_description\": \"先頭の “@” でエンドポイント・モデル・プリセット等を切り替え\",\n  \"com_nav_audio_play_error\": \"音声再生中にエラー：{{0}}\",\n  \"com_nav_audio_process_error\": \"音声処理中にエラー：{{0}}\",\n  \"com_nav_auto_scroll\": \"会話を開いたときに最新へ自動スクロール\",\n  \"com_nav_auto_send_prompts\": \"プロンプトを自動送信\",\n  \"com_nav_auto_send_text\": \"テキストを自動送信\",\n  \"com_nav_auto_send_text_disabled\": \"-1 に設定すると無効\",\n  \"com_nav_auto_transcribe_audio\": \"音声を自動文字起こし\",\n  \"com_nav_automatic_playback\": \"最新メッセージを自動再生\",\n  \"com_nav_balance\": \"残高\",\n  \"com_nav_browser\": \"ブラウザ\",\n  \"com_nav_buffer_append_error\": \"音声ストリーム処理で問題が発生しました。再生が中断される可能性があります。\",\n  \"com_nav_change_picture\": \"プロフィール画像を変更\",\n  \"com_nav_chat_commands\": \"チャットコマンド\",\n  \"com_nav_chat_commands_info\": \"メッセージ先頭の特定文字で有効になります。頻繁に使う場合は無効化も可能です。\",\n  \"com_nav_chat_direction\": \"会話の向き\",\n  \"com_nav_clear_all_chats\": \"すべての会話を消去\",\n  \"com_nav_clear_cache_confirm_message\": \"キャッシュを消去しますか？\",\n  \"com_nav_clear_conversation\": \"会話を消去\",\n  \"com_nav_clear_conversation_confirm_message\": \"すべての会話を削除しますか？元に戻せません。\",\n  \"com_nav_close_sidebar\": \"サイドバーを閉じる\",\n  \"com_nav_commands\": \"コマンド\",\n  \"com_nav_confirm_clear\": \"消去を確認\",\n  \"com_nav_conversation_mode\": \"会話モード\",\n  \"com_nav_convo_menu_options\": \"会話メニューのオプション\",\n  \"com_nav_db_sensitivity\": \"dB 感度\",\n  \"com_nav_delete_account\": \"アカウント削除\",\n  \"com_nav_delete_account_button\": \"アカウントを完全に削除\",\n  \"com_nav_delete_account_confirm\": \"アカウント削除 - 本当によろしいですか？\",\n  \"com_nav_delete_account_email_placeholder\": \"アカウントのメールアドレスを入力\",\n  \"com_nav_delete_cache_storage\": \"TTS キャッシュストレージを削除\",\n  \"com_nav_delete_data_info\": \"すべてのデータが削除されます。\",\n  \"com_nav_delete_warning\": \"警告：この操作はアカウントを完全に削除します。\",\n  \"com_nav_edge\": \"エッジ\",\n  \"com_nav_enable_cache_tts\": \"TTS キャッシュを有効化\",\n  \"com_nav_enable_cloud_browser_voice\": \"クラウド音声を使用\",\n  \"com_nav_enabled\": \"有効\",\n  \"com_nav_engine\": \"エンジン\",\n  \"com_nav_enter_to_send\": \"Enter で送信\",\n  \"com_nav_export\": \"エクスポート\",\n  \"com_nav_export_all_message_branches\": \"すべてのメッセージ分岐をエクスポート\",\n  \"com_nav_export_conversation\": \"会話をエクスポート\",\n  \"com_nav_export_filename\": \"ファイル名\",\n  \"com_nav_export_filename_placeholder\": \"ファイル名を設定\",\n  \"com_nav_export_include_endpoint_options\": \"チャネル設定を含める\",\n  \"com_nav_export_recursive\": \"再帰\",\n  \"com_nav_export_recursive_or_sequential\": \"再帰または順次？\",\n  \"com_nav_export_type\": \"種類\",\n  \"com_nav_external\": \"外部\",\n  \"com_nav_font_size\": \"メッセージの文字サイズ\",\n  \"com_nav_font_size_base\": \"標準\",\n  \"com_nav_font_size_lg\": \"大\",\n  \"com_nav_font_size_sm\": \"小\",\n  \"com_nav_font_size_xl\": \"特大\",\n  \"com_nav_font_size_xs\": \"極小\",\n  \"com_nav_help_faq\": \"ヘルプ\",\n  \"com_nav_hide_panel\": \"最右パネルを隠す\",\n  \"com_nav_info_code_artifacts\": \"会話横に表示される実験的なコードアーティファクトを有効化\",\n  \"com_nav_info_custom_prompt_mode\": \"有効時はデフォルトのアーティファクト用システムプロンプトを含めません。このモードでは生成指示を手動指定する必要があります。\",\n  \"com_nav_info_enter_to_send\": \"有効時：`ENTER` で送信。無効時：`ENTER` は改行、送信は `CTRL + ENTER` / `⌘ + ENTER`。\",\n  \"com_nav_info_fork_change_default\": \"`可視メッセージのみ` は対象までの直線経路のみ、`関連分岐を含む` は経路上の分岐を追加、`すべてのターゲットを含む` は全ての接続メッセージと分岐を含みます。\",\n  \"com_nav_info_fork_split_target_setting\": \"有効時：選択した動作に基づいて対象メッセージから最新までをフォークします。\",\n  \"com_nav_info_include_shadcnui\": \"有効にすると shadcn/ui コンポーネントの使用指示を含めます。Radix UI と Tailwind CSS を用いた再利用可能コンポーネントです。指示が長いため必要時のみ有効化を推奨。詳細：https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"有効にするとメッセージ中の LaTeX を数式として描画します。不要なら無効化でパフォーマンス向上の可能性があります。\",\n  \"com_nav_info_save_draft\": \"有効にするとチャットフォームのテキストと添付がローカルに自動保存されます。ページ再読み込みや会話切替後も利用可能。送信後に削除されます。\",\n  \"com_nav_info_show_thinking\": \"有効にすると既定で「深い思考」ドロップダウンを展開し、推論過程を表示します。無効時は閉じた状態で簡潔な UI に。\",\n  \"com_nav_info_user_name_display\": \"有効にすると送信者のユーザー名を各メッセージ上部に表示。無効時は自分のメッセージのみ「あなた」と表示。\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"自動検出\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"简体中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français\",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_latex_parsing\": \"メッセージ内の LaTeX を描画（性能に影響する可能性）\",\n  \"com_nav_log_out\": \"ログアウト\",\n  \"com_nav_long_audio_warning\": \"長文は処理に時間がかかります。\",\n  \"com_nav_maximize_chat_space\": \"チャット領域を最大化\",\n  \"com_nav_modular_chat\": \"会話中にチャネル切替を有効化\",\n  \"com_nav_my_files\": \"マイファイル\",\n  \"com_nav_my_knowledge_files\": \"マイナレッジ\",\n  \"com_nav_no_search_results\": \"検索結果が見つかりません\",\n  \"com_nav_not_supported\": \"未サポート\",\n  \"com_nav_open_sidebar\": \"サイドバーを開く\",\n  \"com_nav_playback_rate\": \"再生速度\",\n  \"com_nav_plugin_auth_error\": \"このプラグインの認証中にエラーが発生しました。再試行してください。\",\n  \"com_nav_plugin_install\": \"インストール\",\n  \"com_nav_plugin_search\": \"プラグインを検索\",\n  \"com_nav_plugin_store\": \"プラグインストア\",\n  \"com_nav_plugin_uninstall\": \"アンインストール\",\n  \"com_nav_plus_command\": \"+ コマンド\",\n  \"com_nav_plus_command_description\": \"先頭の “+” コマンドでマルチレスポンス設定を追加\",\n  \"com_nav_profile_picture\": \"プロフィール画像\",\n  \"com_nav_save_drafts\": \"ローカルに下書きを保存\",\n  \"com_nav_scroll_button\": \"末尾へスクロール\",\n  \"com_nav_search_placeholder\": \"メッセージを検索\",\n  \"com_nav_send_message\": \"メッセージを送信\",\n  \"com_nav_setting_account\": \"アカウント\",\n  \"com_nav_setting_beta\": \"実験機能\",\n  \"com_nav_setting_chat\": \"会話\",\n  \"com_nav_setting_data\": \"データ管理\",\n  \"com_nav_setting_general\": \"一般\",\n  \"com_nav_setting_speech\": \"音声\",\n  \"com_nav_settings\": \"設定\",\n  \"com_nav_shared_links\": \"共有リンク\",\n  \"com_nav_show_code\": \"コードインタプリタ使用時は常にコード表示\",\n  \"com_nav_slash_command\": \"/ コマンド\",\n  \"com_nav_slash_command_description\": \"先頭の “/” コマンドでキーボードからプロンプト選択\",\n  \"com_nav_source_buffer_error\": \"音声再生の初期化でエラーが発生しました。ページを更新してください。\",\n  \"com_nav_speech_cancel_error\": \"音声再生を停止できません。ページの更新が必要な場合があります。\",\n  \"com_nav_speech_to_text\": \"音声認識\",\n  \"com_nav_stop_generating\": \"生成を停止\",\n  \"com_nav_text_to_speech\": \"読み上げ\",\n  \"com_nav_theme\": \"テーマ\",\n  \"com_nav_theme_dark\": \"ダーク\",\n  \"com_nav_theme_light\": \"ライト\",\n  \"com_nav_theme_system\": \"システム設定に従う\",\n  \"com_nav_tool_dialog\": \"アシスタントツール\",\n  \"com_nav_tool_dialog_agents\": \"Agent ツール\",\n  \"com_nav_tool_dialog_description\": \"ツール選択を保持するにはアシスタントを保存する必要があります。\",\n  \"com_nav_tool_remove\": \"削除\",\n  \"com_nav_tool_search\": \"ツールを検索\",\n  \"com_nav_tts_init_error\": \"テキスト読み上げの初期化に失敗：{{0}}\",\n  \"com_nav_tts_unsupported_error\": \"選択したエンジンの TTS はこのブラウザでサポートされていません。\",\n  \"com_nav_user\": \"デフォルトユーザー\",\n  \"com_nav_user_msg_markdown\": \"ユーザーメッセージを Markdown で表示\",\n  \"com_nav_user_name_display\": \"メッセージにユーザー名を表示\",\n  \"com_nav_voice_select\": \"ボイス\",\n  \"com_nav_voices_fetch_error\": \"ボイス選択を取得できません。ネットワーク接続を確認してください。\",\n  \"com_nav_welcome_agent\": \"Agent を選択してください\",\n  \"com_nav_welcome_assistant\": \"アシスタントを選択してください\",\n  \"com_nav_welcome_message\": \"本日どのようにお手伝いできますか？\",\n  \"com_show_agent_settings\": \"エージェント設定を表示\",\n  \"com_show_completion_settings\": \"補完設定を表示\",\n  \"com_show_examples\": \"例を表示\",\n  \"com_sidepanel_agent_builder\": \"エージェントビルダー\",\n  \"com_sidepanel_assistant_builder\": \"アシスタントビルダー\",\n  \"com_sidepanel_attach_files\": \"ローカルファイルをアップロード\",\n  \"com_sidepanel_conversation_tags\": \"ブックマーク\",\n  \"com_sidepanel_hide_panel\": \"サイドバーを隠す\",\n  \"com_sidepanel_manage_files\": \"ファイルを管理\",\n  \"com_sidepanel_parameters\": \"パラメータ\",\n  \"com_sidepanel_select_agent\": \"アシスタントを選択\",\n  \"com_sidepanel_select_assistant\": \"アシスタントを選択\",\n  \"com_ui_accept\": \"同意する\",\n  \"com_ui_add\": \"追加\",\n  \"com_ui_add_model_preset\": \"モデルまたはプリセットを追加して追加の返信を取得\",\n  \"com_ui_add_multi_conversation\": \"複数の会話を追加\",\n  \"com_ui_admin\": \"管理\",\n  \"com_ui_admin_access_warning\": \"管理者のこの機能へのアクセスを無効にすると UI が不安定になり、ページ更新が必要になる場合があります。この設定を保存すると、唯一の復旧方法は librechat.yaml の UI 設定での変更となり、すべてのロールに影響します。\",\n  \"com_ui_admin_settings\": \"管理者設定\",\n  \"com_ui_advanced\": \"詳細\",\n  \"com_ui_agent\": \"エージェント\",\n  \"com_ui_agent_delete_error\": \"エージェント削除中にエラーが発生しました\",\n  \"com_ui_agent_deleted\": \"エージェントを削除しました\",\n  \"com_ui_agent_duplicate_error\": \"アシスタントの複製中にエラーが発生しました\",\n  \"com_ui_agent_duplicated\": \"アシスタントを複製しました\",\n  \"com_ui_agent_editing_allowed\": \"他のユーザーがこのアシスタントを編集できるようになりました\",\n  \"com_ui_agents\": \"エージェント\",\n  \"com_ui_agents_allow_create\": \"アシスタントの作成を許可\",\n  \"com_ui_agents_allow_share_global\": \"すべてのユーザーとアシスタントを共有することを許可\",\n  \"com_ui_agents_allow_use\": \"アシスタントの使用を許可\",\n  \"com_ui_all\": \"すべて\",\n  \"com_ui_all_proper\": \"すべて\",\n  \"com_ui_archive\": \"アーカイブ\",\n  \"com_ui_archive_error\": \"会話のアーカイブに失敗しました\",\n  \"com_ui_artifact_click\": \"クリックして開く\",\n  \"com_ui_artifacts\": \"Artifacts\",\n  \"com_ui_artifacts_toggle\": \"Artifacts UI に切り替え\",\n  \"com_ui_ascending\": \"昇順\",\n  \"com_ui_assistant\": \"アシスタント\",\n  \"com_ui_assistant_delete_error\": \"アシスタント削除中にエラーが発生しました\",\n  \"com_ui_assistant_deleted\": \"アシスタントを削除しました\",\n  \"com_ui_assistants\": \"アシスタント\",\n  \"com_ui_assistants_output\": \"アシスタント出力\",\n  \"com_ui_attach_error\": \"ファイルを添付できません。会話を作成または選択するか、ページを更新してください。\",\n  \"com_ui_attach_error_openai\": \"アシスタントファイルを他のチャネルに添付できません\",\n  \"com_ui_attach_error_size\": \"チャネルのファイルサイズ上限超過：\",\n  \"com_ui_attach_error_type\": \"チャネル非対応のファイルタイプ：\",\n  \"com_ui_attach_warn_endpoint\": \"非互換ツールはアシスタント以外のファイルを無視する場合があります\",\n  \"com_ui_attachment\": \"添付\",\n  \"com_ui_auth_type\": \"認証タイプ\",\n  \"com_ui_auth_url\": \"認証 URL\",\n  \"com_ui_authentication\": \"認証\",\n  \"com_ui_authentication_type\": \"認証タイプ\",\n  \"com_ui_avatar\": \"アバター\",\n  \"com_ui_back_to_chat\": \"会話に戻る\",\n  \"com_ui_back_to_prompts\": \"プロンプトに戻る\",\n  \"com_ui_basic\": \"基本\",\n  \"com_ui_bookmark_delete_confirm\": \"このブックマークを削除しますか？\",\n  \"com_ui_bookmarks\": \"ブックマーク\",\n  \"com_ui_bookmarks_add\": \"ブックマーク追加\",\n  \"com_ui_bookmarks_add_to_conversation\": \"現在の会話に追加\",\n  \"com_ui_bookmarks_count\": \"件数\",\n  \"com_ui_bookmarks_create_error\": \"ブックマーク作成中にエラーが発生しました\",\n  \"com_ui_bookmarks_create_exists\": \"ブックマークはすでに存在します\",\n  \"com_ui_bookmarks_create_success\": \"ブックマークを作成しました\",\n  \"com_ui_bookmarks_delete\": \"ブックマークを削除\",\n  \"com_ui_bookmarks_delete_error\": \"ブックマーク削除中にエラーが発生しました\",\n  \"com_ui_bookmarks_delete_success\": \"ブックマークを削除しました\",\n  \"com_ui_bookmarks_description\": \"説明\",\n  \"com_ui_bookmarks_edit\": \"ブックマークを編集\",\n  \"com_ui_bookmarks_filter\": \"ブックマークを絞り込み…\",\n  \"com_ui_bookmarks_new\": \"新しいブックマーク\",\n  \"com_ui_bookmarks_title\": \"タイトル\",\n  \"com_ui_bookmarks_update_error\": \"ブックマーク更新中にエラーが発生しました\",\n  \"com_ui_bookmarks_update_success\": \"ブックマークを更新しました\",\n  \"com_ui_bulk_delete_error\": \"共有リンクの削除に失敗しました\",\n  \"com_ui_callback_url\": \"コールバック URL\",\n  \"com_ui_cancel\": \"キャンセル\",\n  \"com_ui_chat\": \"会話\",\n  \"com_ui_chat_history\": \"会話履歴\",\n  \"com_ui_clear\": \"クリア\",\n  \"com_ui_clear_all\": \"すべてクリア\",\n  \"com_ui_close\": \"閉じる\",\n  \"com_ui_close_menu\": \"メニューを閉じる\",\n  \"com_ui_code\": \"コード\",\n  \"com_ui_chart\": \"チャート\",\n  \"com_ui_collapse_chat\": \"チャットを折りたたむ\",\n  \"com_ui_command_placeholder\": \"任意：プロンプトのコマンドを入力。未入力時は名称を使用\",\n  \"com_ui_command_usage_placeholder\": \"コマンドまたは名称でプロンプトを選択\",\n  \"com_ui_confirm_action\": \"実行の確認\",\n  \"com_ui_confirm_admin_use_change\": \"この設定変更により、あなたを含むすべての管理者の権限が阻害されます。続行しますか？\",\n  \"com_ui_confirm_change\": \"変更を確認\",\n  \"com_ui_context\": \"コンテキスト\",\n  \"com_ui_continue\": \"続行\",\n  \"com_ui_controls\": \"管理\",\n  \"com_ui_copied\": \"コピーしました！\",\n  \"com_ui_copied_to_clipboard\": \"クリップボードにコピーしました\",\n  \"com_ui_copy_code\": \"コードをコピー\",\n  \"com_ui_copy_link\": \"リンクをコピー\",\n  \"com_ui_copy_to_clipboard\": \"クリップボードへコピー\",\n  \"com_ui_create\": \"作成\",\n  \"com_ui_create_link\": \"リンクを作成\",\n  \"com_ui_create_prompt\": \"プロンプトを作成\",\n  \"com_ui_custom\": \"カスタム\",\n  \"com_ui_custom_header_name\": \"カスタムヘッダー名\",\n  \"com_ui_custom_prompt_mode\": \"カスタムプロンプトモード\",\n  \"com_ui_dashboard\": \"ダッシュボード\",\n  \"com_ui_date\": \"日付\",\n  \"com_ui_date_april\": \"4月\",\n  \"com_ui_date_august\": \"8月\",\n  \"com_ui_date_december\": \"12月\",\n  \"com_ui_date_february\": \"2月\",\n  \"com_ui_date_january\": \"1月\",\n  \"com_ui_date_july\": \"7月\",\n  \"com_ui_date_june\": \"6月\",\n  \"com_ui_date_march\": \"3月\",\n  \"com_ui_date_may\": \"5月\",\n  \"com_ui_date_november\": \"11月\",\n  \"com_ui_date_october\": \"10月\",\n  \"com_ui_date_previous_30_days\": \"過去 30 日\",\n  \"com_ui_date_previous_7_days\": \"過去 7 日\",\n  \"com_ui_date_september\": \"9月\",\n  \"com_ui_date_today\": \"今日\",\n  \"com_ui_date_yesterday\": \"昨日\",\n  \"com_ui_decline\": \"同意しない\",\n  \"com_ui_default_post_request\": \"デフォルト（POST リクエスト）\",\n  \"com_ui_delete\": \"削除\",\n  \"com_ui_delete_action\": \"アクションを削除\",\n  \"com_ui_delete_action_confirm\": \"このアクションを削除しますか？\",\n  \"com_ui_delete_agent_confirm\": \"このエージェントを削除しますか？\",\n  \"com_ui_delete_assistant_confirm\": \"このアシスタントを削除しますか？元に戻せません。\",\n  \"com_ui_delete_confirm\": \"削除します：\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"選択したバージョンの「{{0}}」を削除します。他のバージョンがなければ、このプロンプト自体が削除されます。\",\n  \"com_ui_delete_conversation\": \"会話を削除しますか？\",\n  \"com_ui_delete_prompt\": \"プロンプトを削除しますか？\",\n  \"com_ui_delete_shared_link\": \"共有リンクを削除しますか？\",\n  \"com_ui_delete_tool\": \"ツールを削除\",\n  \"com_ui_delete_tool_confirm\": \"このツールを削除しますか？\",\n  \"com_ui_descending\": \"降順\",\n  \"com_ui_description\": \"説明\",\n  \"com_ui_description_placeholder\": \"任意：表示用のプロンプト説明を入力\",\n  \"com_ui_download\": \"ダウンロード\",\n  \"com_ui_download_artifact\": \"Artifact をダウンロード\",\n  \"com_ui_download_error\": \"ダウンロード中にエラーが発生しました。ファイルは削除された可能性があります。\",\n  \"com_ui_dropdown_variables\": \"ドロップダウン変数：\",\n  \"com_ui_dropdown_variables_info\": \"カスタムドロップダウンを作成：`{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"複製\",\n  \"com_ui_duplicated\": \"複製しました\",\n  \"com_ui_duplication_error\": \"会話の複製中にエラーが発生しました\",\n  \"com_ui_duplication_processing\": \"会話を複製中…\",\n  \"com_ui_duplication_success\": \"会話の複製に成功しました\",\n  \"com_app_center_welcome\": \"BISHENG のエージェントを探す\",\n  \"com_app_center_description\": \"ここから業務に必要なエージェントを選択して生産・作業を進められます～\",\n  \"com_app_frequently_used\": \"よく使うエージェント\",\n  \"com_app_uncategorized\": \"未分類\",\n  \"com_app_common\": \"よく使う\",\n  \"com_message_content_copied\": \"内容をコピーしました\",\n  \"com_message_month_day_time\": \"M月 dd日 HH:mm\",\n  \"com_nav_app_center\": \"アプリ\",\n  \"com_nav_start_new_chat\": \"新しい会話\",\n  \"com_sop_web_search\": \"オンライン検索中\",\n  \"com_sop_search_knowledge_base\": \"ナレッジベースを検索中\",\n  \"com_sop_list_files\": \"ディレクトリを取得中\",\n  \"com_sop_get_file_details\": \"ファイル詳細を取得中\",\n  \"com_sop_search_files\": \"ファイルを検索中\",\n  \"com_sop_read_text_file\": \"ファイルを読み取り中\",\n  \"com_sop_add_text_to_file\": \"ファイルに内容を追加中\",\n  \"com_sop_replace_file_lines\": \"ファイルを編集中\",\n  \"com_sop_using_tool\": \"{{0}} ツールを使用中\",\n  \"com_sop_waiting_input\": \"入力待ち\",\n  \"com_sop_input\": \"入力済み\",\n  \"com_file_size_exceed_limit\": \"ファイル：{{name}} は {{size}}MB を超えたため、削除されました\",\n  \"com_sop_please_input\": \"入力してください\",\n  \"com_sop_task_execution_interrupted\": \"タスクの実行が中断されました\",\n  \"com_sop_running\": \"実行中…\",\n  \"com_sop_rerun\": \"再実行\",\n  \"com_sop_feedback_only\": \"フィードバックのみ\",\n  \"com_sop_upload_file\": \"ファイルをアップロード\",\n  \"com_sop_upload_file_directory\": \"アップロードするファイルのディレクトリ\",\n  \"com_sop_organize_knowledge_base\": \"ナレッジベースを整理\",\n  \"com_sop_sop_generation_failed\": \"SOP の生成に失敗しました\",\n  \"com_sop_replan_placeholder\": \"SOP 再計画の提案を入力してください\",\n  \"com_sop_confirm_replan\": \"再計画を確定\",\n  \"com_sop_editor_title\": \"ガイドマニュアルエディタ\",\n  \"com_sop_confirm_execution\": \"ガイドマニュアルに沿ってタスクを実行してよいか確認\",\n  \"com_sop_regenerate_manual\": \"ガイドマニュアルを再生成\",\n  \"com_sop_start_execution\": \"実行開始\",\n  \"com_sop_personal_knowledge_base\": \"個人ナレッジベース\",\n  \"com_sop_task_description\": \"タスク説明\",\n  \"com_sop_task_version\": \"タスクバージョン\",\n  \"com_sop_submit_success\": \"送信に成功しました\",\n  \"com_sop_task_flow\": \"タスクフロー\",\n  \"com_sop_waiting_message\": \"ガイドマニュアルを確認後、タスクが開始します\",\n  \"com_sop_loading_title\": \"精度確保のため詳細なガイドマニュアルを作成します\",\n  \"com_sop_loading_desc\": \"$t(linsight) がガイドマニュアルを計画中…\",\n  \"com_sop_preview_failed\": \"プレビューに失敗しました\",\n  \"com_sop_file_load_error\": \"ファイル読み込みエラー\",\n  \"com_sop_empty_file\": \"空のファイル\",\n  \"com_sop_tool_not_found\": \"⚠️ ツールまたはリソースが存在しません。再選択してください\",\n  \"com_sop_tool_error\": \"エラー変数\",\n  \"com_sop_task_planning\": \"タスク計画\",\n  \"com_sop_task_stage\": \"タスク段階\",\n  \"com_sop_show_overview\": \"概要ウィンドウを表示\",\n  \"com_sop_stop_task\": \"タスクを終了\",\n  \"com_sop_task\": \"タスク\",\n  \"com_sop_terminated\": \"終了\",\n  \"com_sop_completed\": \"完了\",\n  \"com_sop_rate_task\": \"評価して次回の向上にご協力ください：\",\n  \"com_sop_view_all_files\": \"このタスクのすべてのファイルを表示\",\n  \"com_sop_select_all\": \"すべて選択\",\n  \"com_sop_batch_download\": \"一括ダウンロード\",\n  \"com_sop_queue_message\": \"現在ユーザー数が多く、順番待ちです…\",\n  \"com_sop_estimated_wait\": \"推定待ち時間\",\n  \"com_sop_organizing_content\": \"内容を整理中…\",\n  \"com_sop_plan_task_path\": \"タスク実行パスの計画：\",\n  \"com_sop_execute_tasks\": \"次のタスクを実行します：\",\n  \"com_sop_select_file\": \"ファイルを選択\",\n  \"com_agent_add_to_favorites\": \"よく使うアプリに追加\",\n  \"com_agent_remove_from_favorites\": \"よく使うアプリから削除\",\n  \"com_agent_search_placeholder\": \"必要なエージェントを検索\",\n  \"com_agent_unsatisfied_feedback\": \"結果に満足できませんか？意見を入力して再度タスクを開始できます。\",\n  \"com_agent_input_knowledge_tool\": \"@ を入力してナレッジ、ファイル、またはツールを追加\",\n  \"com_file_current_empty\": \"現在のファイルは空です\",\n  \"com_invite_please_input_code\": \"招待コードを入力してください\",\n  \"com_invite_submit_failed\": \"送信に失敗しました\",\n  \"com_invite_title\": \"$t(linsight) 招待コード\",\n  \"com_invite_desc\": \"BISHENG 提供の招待コードを入力して、$t(linsight) を始めましょう。\",\n  \"com_invite_placeholder\": \"入力してください\",\n  \"com_invite_submit\": \"送信\",\n  \"com_invite_submitting\": \"送信中…\",\n  \"com_invite_no_code_tip\": \"招待コードがありませんか？\",\n  \"com_invite_apply_access\": \"ここをクリックして体験申請\",\n  \"com_copy_failed\": \"コピーに失敗しました\",\n  \"com_copy_command_failed\": \"コマンドのコピーに失敗しました\",\n  \"com_copied\": \"コピーしました\",\n  \"com_copy_to_clipboard\": \"クリップボードにコピー\",\n  \"com_show_more\": \"もっと表示\",\n  \"com_agent_added_success\": \"このエージェントは追加済みです\",\n  \"com_search_searching\": \"検索中…\",\n  \"com_search_loading_more\": \"さらに読み込み中…\",\n  \"com_search_no_results\": \"該当するエージェントが見つかりません\",\n  \"com_label_max_selection\": \"最大 10 個まで選択できます\",\n  \"com_label_operation_tip\": \"操作ヒント：左で表示するラベルを選び、右でドラッグして並べ替えます\",\n  \"com_label_selected\": \"選択：{{0}}/10\",\n  \"com_label_cancel\": \"キャンセル\",\n  \"com_label_save\": \"保存\",\n  \"com_nav_personal_knowledge\": \"個人ナレッジ\",\n  \"com_nav_admin_panel\": \"管理コンソール\",\n  \"com_nav_language\": \"言語\",\n  \"com_nav_language_label\": \"言語\",\n  \"com_knowledge_upload_time\": \"アップロード時間\",\n  \"com_knowledge_status\": \"ステータス\",\n  \"com_knowledge_operation\": \"操作\",\n  \"com_knowledge_processing\": \"処理中\",\n  \"com_knowledge_success\": \"成功\",\n  \"com_knowledge_failed\": \"失敗\",\n  \"com_knowledge_model_switching\": \"個人ナレッジのベクトルモデル切替中\",\n  \"com_knowledge_add_file\": \"ファイルを追加\",\n  \"com_segment_daily_mode\": \"日常モード\",\n  \"com_segment_linsight\": \"$t(linsightFullName)\",\n  \"com_linsight_input_placeholder\": \"タスク目標を入力して $t(bisheng)$t(linsight) にお任せください\",\n  \"com_linsight_tagline\": \"大規模モデルと業務ガイドで、複雑なタスクを自律的に実行\",\n  \"com_linsight_remaining_times\": \"残りタスク回数：{{count}} 回\",\n  \"com_linsight_activate\": \"有効化へ\",\n  \"com_tools_title\": \"ツール\",\n  \"com_tools_web_search\": \"オンライン検索\",\n  \"com_tools_personal_knowledge\": \"個人ナレッジ\",\n  \"com_tools_org_knowledge\": \"組織ナレッジ\",\n  \"com_tools_knowledge_base\": \"ナレッジベース\",\n  \"kbLimitReached\": \"ナレッジベースの数が上限（最大50件）に達しました\",\n  \"com_tools_knowledge_base_search\": \"ナレッジベース検索\",\n  \"com_tools_knowledge_rebuilding\": \"個人ナレッジの embedding モデルが変更されました。再構築中のため、しばらくしてからお試しください\",\n  \"com_tools_file_upload\": \"ファイルのアップロードが成功しました\",\n  \"com_tools_file_upload_failed\": \"アップロードに失敗しました\",\n  \"com_tools_file_detected\": \"ファイル重複の警告\",\n  \"com_tools_file_following\": \"以下のファイルはナレッジベースに既に存在しています。上書きしますか？\",\n  \"com_tools_file_not_overwrite\": \"上書きせず\",\n  \"com_tools_file_overwrite\": \"上書きします\",\n  \"com_tools_knowledge_upload_remark\": \"検知した重複ファイルは自動的にスキップされます\",\n  \"com_tools_no_more\": \"これ以上のデータはありません\",\n  \"com_tools_no_results\": \"結果が見つかりませんでした\",\n  \"com_ui_edit\": \"編集\",\n  \"com_ui_endpoint\": \"チャネル\",\n  \"com_ui_endpoint_menu\": \"LLM エンドポイントメニュー\",\n  \"com_ui_endpoints_available\": \"利用可能なチャネル\",\n  \"com_ui_enter\": \"入る\",\n  \"com_ui_enter_api_key\": \"API キーを入力\",\n  \"com_ui_enter_openapi_schema\": \"ここに OpenAPI スキーマを入力してください\",\n  \"com_ui_enter_var\": \"{{0}} を入力\",\n  \"com_ui_error\": \"エラー\",\n  \"com_ui_error_connection\": \"サーバー接続でエラーが発生しました。ページを更新してみてください。\",\n  \"com_ui_error_save_admin_settings\": \"管理者設定の保存中にエラーが発生しました。\",\n  \"com_ui_examples\": \"例\",\n  \"com_ui_export_convo_modal\": \"会話のエクスポートモーダル\",\n  \"com_ui_field_required\": \"この項目は必須です\",\n  \"com_ui_filter_prompts\": \"プロンプトをフィルタ\",\n  \"com_ui_filter_prompts_name\": \"名称でプロンプトを絞り込み\",\n  \"com_ui_fork\": \"フォーク\",\n  \"com_ui_fork_all_target\": \"すべてのターゲットを含む\",\n  \"com_ui_fork_branches\": \"関連分岐を含む\",\n  \"com_ui_fork_change_default\": \"デフォルトのフォークオプション\",\n  \"com_ui_fork_default\": \"デフォルトのフォークオプションを使用\",\n  \"com_ui_fork_error\": \"会話のフォーク中にエラーが発生しました\",\n  \"com_ui_fork_from_message\": \"フォークオプションを選択\",\n  \"com_ui_fork_info_1\": \"この設定で、望ましい動作を得るためにメッセージをフォークできます。\",\n  \"com_ui_fork_info_2\": \"「フォーク」は、現在の会話から特定のメッセージを起点/終点として新しい会話の複製を作成することです。\",\n  \"com_ui_fork_info_3\": \"「対象メッセージ」はこのポップアップを開いたメッセージ、または「{{0}}」を選択した場合は最新メッセージです。\",\n  \"com_ui_fork_info_branches\": \"可視メッセージと関連分岐をフォークします。すなわち対象への直線経路と、その経路上の分岐を含みます。\",\n  \"com_ui_fork_info_remember\": \"次回のフォークを素早く行えるよう、選択内容を記憶します。\",\n  \"com_ui_fork_info_start\": \"選択に基づき、このメッセージから最新までをフォークします。\",\n  \"com_ui_fork_info_target\": \"対象メッセージへ至るすべての分岐と隣接メッセージを含めてフォークします（可視か経路上かを問いません）。\",\n  \"com_ui_fork_info_visible\": \"可視メッセージのみをフォークします。つまり対象への直線経路のみです。\",\n  \"com_ui_fork_processing\": \"会話をフォーク中…\",\n  \"com_ui_fork_remember\": \"記憶する\",\n  \"com_ui_fork_remember_checked\": \"この選択は記憶されます。設定でいつでも変更できます。\",\n  \"com_ui_fork_split_target\": \"ここからフォーク\",\n  \"com_ui_fork_split_target_setting\": \"対象メッセージからのフォークをデフォルトにする\",\n  \"com_ui_fork_success\": \"会話のフォークに成功しました\",\n  \"com_ui_fork_visible\": \"可視メッセージのみ\",\n  \"com_ui_go_back\": \"戻る\",\n  \"com_ui_go_to_conversation\": \"会話へ移動\",\n  \"com_ui_happy_birthday\": \"私の最初の誕生日です！\",\n  \"com_ui_hide_qr\": \"QR を隠す\",\n  \"com_ui_host\": \"ホスト\",\n  \"com_ui_image_gen\": \"画像生成\",\n  \"com_ui_import_conversation_error\": \"会話のインポート中にエラーが発生しました\",\n  \"com_ui_import_conversation_file_type_error\": \"未対応のインポートタイプです\",\n  \"com_ui_import_conversation_info\": \"JSON ファイルから会話をインポート\",\n  \"com_ui_import_conversation_success\": \"会話のインポートに成功しました\",\n  \"com_ui_include_shadcnui\": \"shadcn/ui コンポーネント指示を含める\",\n  \"com_ui_input\": \"入力\",\n  \"com_ui_instructions\": \"指示\",\n  \"com_ui_latest_footer\": \"for reference only\",\n  \"com_ui_latest_production_version\": \"最新の本番バージョン\",\n  \"com_ui_latest_version\": \"最新バージョン\",\n  \"com_ui_librechat_code_api_key\": \"LibreChat コードインタプリタ API キーを取得\",\n  \"com_ui_librechat_code_api_subtitle\": \"安全・信頼。多言語対応。ファイル入出力対応。\",\n  \"com_ui_librechat_code_api_title\": \"AI コードを実行\",\n  \"com_ui_llm_menu\": \"LLM メニュー\",\n  \"com_ui_llms_available\": \"利用可能な LLM モデル\",\n  \"com_ui_locked\": \"ロック済み\",\n  \"com_ui_logo\": \"{{0}} ロゴ\",\n  \"com_ui_manage\": \"管理\",\n  \"com_ui_max_tags\": \"最大 {{0}} 個まで。最新の値が適用されます。\",\n  \"com_ui_mention\": \"エンドポイント、アシスタント、またはプリセットをメンションして素早く切替\",\n  \"com_ui_min_tags\": \"これ以上削除できません。最低 {{0}} 個必要です。\",\n  \"com_ui_model\": \"モデル\",\n  \"com_ui_model_parameters\": \"モデルパラメータ\",\n  \"com_ui_more_info\": \"詳細情報\",\n  \"com_ui_my_prompts\": \"マイプロンプト\",\n  \"com_ui_name\": \"名称\",\n  \"com_ui_new_chat\": \"新しい会話\",\n  \"com_ui_model_think\": \"深い思考 (R1)\",\n  \"com_ui_model_search\": \"オンライン検索\",\n  \"com_ui_knowledge_search\": \"個人ナレッジ\",\n  \"com_ui_model_shougang\": \"BISHENG 思考 (R1)\",\n  \"com_ui_next\": \"次へ\",\n  \"com_ui_no\": \"いいえ\",\n  \"com_ui_no_bookmarks\": \"ブックマークがありません。会話を開き、新しいブックマークを追加してください\",\n  \"com_ui_no_category\": \"カテゴリなし\",\n  \"com_ui_no_changes\": \"更新は不要です\",\n  \"com_ui_no_terms_content\": \"表示できる利用規約はありません\",\n  \"com_ui_none_selected\": \"項目が選択されていません\",\n  \"com_ui_nothing_found\": \"何も見つかりませんでした\",\n  \"com_ui_of\": \"/\",\n  \"com_ui_off\": \"オフ\",\n  \"com_ui_on\": \"オン\",\n  \"com_ui_page\": \"ページ\",\n  \"com_ui_prev\": \"前へ\",\n  \"com_ui_preview\": \"プレビュー\",\n  \"com_ui_privacy_policy\": \"プライバシーポリシー\",\n  \"com_ui_privacy_policy_url\": \"プライバシーポリシーのリンク\",\n  \"com_ui_prompt\": \"プロンプト\",\n  \"com_ui_prompt_already_shared_to_all\": \"このプロンプトはすでに全ユーザーと共有されています\",\n  \"com_ui_prompt_name\": \"プロンプト名\",\n  \"com_ui_prompt_name_required\": \"プロンプト名は必須です\",\n  \"com_ui_prompt_preview_not_shared\": \"作者がこのプロンプトの共同編集を許可していません。\",\n  \"com_ui_prompt_text\": \"テキスト\",\n  \"com_ui_prompt_text_required\": \"テキストは必須です\",\n  \"com_ui_prompt_update_error\": \"プロンプト更新中にエラーが発生しました\",\n  \"com_ui_prompts\": \"プロンプト\",\n  \"com_ui_prompts_allow_create\": \"プロンプトの作成を許可\",\n  \"com_ui_prompts_allow_share_global\": \"プロンプトを全ユーザーと共有することを許可\",\n  \"com_ui_prompts_allow_use\": \"プロンプトの使用を許可\",\n  \"com_ui_provider\": \"プロバイダ\",\n  \"com_ui_read_aloud\": \"読み上げ\",\n  \"com_ui_regenerate\": \"再生成\",\n  \"com_ui_region\": \"リージョン\",\n  \"com_ui_rename\": \"名前を変更\",\n  \"com_ui_rename_prompt\": \"プロンプト名を変更\",\n  \"com_ui_requires_auth\": \"認証が必要です\",\n  \"com_ui_reset_var\": \"{{0}} をリセット\",\n  \"com_ui_result\": \"結果\",\n  \"com_ui_revoke\": \"取り消し\",\n  \"com_ui_revoke_info\": \"ユーザーが提供したすべての資格情報を取り消す\",\n  \"com_ui_revoke_key_confirm\": \"このキーを取り消しますか？\",\n  \"com_ui_revoke_key_endpoint\": \"{{0}} のキーを取り消す\",\n  \"com_ui_revoke_keys\": \"キーを取り消す\",\n  \"com_ui_revoke_keys_confirm\": \"すべてのキーを取り消しますか？\",\n  \"com_ui_role_select\": \"ロール\",\n  \"com_ui_run_code\": \"コードを実行\",\n  \"com_ui_run_code_error\": \"コードの実行でエラー\",\n  \"com_ui_save\": \"保存\",\n  \"com_ui_save_submit\": \"保存して送信\",\n  \"com_ui_saved\": \"保存しました！\",\n  \"com_ui_schema\": \"スキーマ\",\n  \"com_ui_search\": \"検索\",\n  \"com_ui_select\": \"選択\",\n  \"com_ui_select_file\": \"ファイルを選択\",\n  \"com_ui_select_model\": \"モデルを選択\",\n  \"com_ui_select_provider\": \"プロバイダを選択\",\n  \"com_ui_select_provider_first\": \"まずプロバイダを選択してください\",\n  \"com_ui_select_region\": \"地域を選択\",\n  \"com_ui_select_search_model\": \"名前でモデルを検索\",\n  \"com_ui_select_search_plugin\": \"名前でプラグインを検索\",\n  \"com_ui_select_search_provider\": \"名前でサービスを検索\",\n  \"com_ui_select_search_region\": \"名前で地域を検索\",\n  \"com_ui_share\": \"共有\",\n  \"no_text_recognized\": \"音声認識は利用できません。管理者に連絡してください。\",\n  \"com_ui_share_create_message\": \"共有後に追加したメッセージやあなたの名前は非公開です。\",\n  \"com_ui_share_delete_error\": \"共有リンクの削除中にエラーが発生しました\",\n  \"com_ui_share_error\": \"チャットリンクの共有中にエラーが発生しました\",\n  \"com_ui_share_form_description\": \"説明が見つかりません。\",\n  \"com_ui_share_link_to_chat\": \"チャットへの共有リンク\",\n  \"com_ui_share_to_all_users\": \"全ユーザーと共有\",\n  \"com_ui_share_update_message\": \"共有後に追加したメッセージ、あなたの名前、カスタム指示は非公開です。\",\n  \"com_ui_share_var\": \"{{0}} を共有\",\n  \"com_ui_shared_link_bulk_delete_success\": \"共有リンクを一括削除しました\",\n  \"com_ui_shared_link_delete_success\": \"共有リンクを削除しました\",\n  \"com_ui_shared_link_not_found\": \"共有リンクが見つかりません\",\n  \"com_ui_shared_prompts\": \"共有プロンプト\",\n  \"com_ui_show_all\": \"すべて展開\",\n  \"com_ui_show_qr\": \"QR を表示\",\n  \"com_ui_sign_in_to_domain\": \"{{0}} にサインイン\",\n  \"com_ui_simple\": \"基本\",\n  \"com_ui_size\": \"サイズ\",\n  \"com_ui_special_variables\": \"特殊変数：\",\n  \"com_ui_special_variables_info\": \"`{{current_date}}` で現在日付、`{{current_user}}` であなたのアカウント名を取得できます。\",\n  \"com_ui_speech_while_submitting\": \"返信生成中は音声送信できません\",\n  \"com_ui_stop\": \"停止\",\n  \"com_ui_storage\": \"ストレージ\",\n  \"com_ui_submit\": \"送信\",\n  \"com_ui_teach_or_explain\": \"学習中\",\n  \"com_ui_temporary_chat\": \"一時会話\",\n  \"com_ui_terms_and_conditions\": \"利用規約\",\n  \"com_ui_terms_of_service\": \"サービス規約\",\n  \"com_ui_thinking\": \"思考中\",\n  \"com_ui_thoughts\": \"思考内容\",\n  \"com_ui_tools\": \"ツール\",\n  \"com_ui_unarchive\": \"アーカイブ解除\",\n  \"com_ui_unarchive_error\": \"会話のアーカイブ解除に失敗しました\",\n  \"com_ui_unknown\": \"不明\",\n  \"com_ui_update\": \"更新\",\n  \"com_ui_upload\": \"アップロード\",\n  \"com_ui_upload_code_files\": \"コードインタプリタ用ファイルをアップロード\",\n  \"com_ui_upload_delay\": \"「{{0}}」のアップロードに想定より時間がかかっています。ファイルは検索用のインデックス作成中です。しばらくお待ちください。\",\n  \"com_ui_upload_error\": \"ファイルのアップロードエラー\",\n  \"com_ui_upload_file_search\": \"ファイル検索をアップロード\",\n  \"com_ui_upload_files\": \"ファイルをアップロード\",\n  \"com_ui_upload_image\": \"画像をアップロード\",\n  \"com_ui_upload_image_input\": \"画像をアップロード\",\n  \"com_ui_upload_invalid\": \"無効なファイルです。画像であり、サイズ上限以内である必要があります\",\n  \"com_ui_upload_invalid_var\": \"無効なファイルです。画像であり、{{0}} MB を超えない必要があります。\",\n  \"com_ui_upload_success\": \"ファイルをアップロードしました\",\n  \"com_ui_upload_type\": \"アップロードタイプを選択\",\n  \"com_ui_use_micrphone\": \"マイクを使用\",\n  \"com_ui_use_prompt\": \"プロンプトを使用\",\n  \"com_ui_variables\": \"変数\",\n  \"com_ui_variables_info\": \"テキスト中に二重波括弧で変数を作成（例：`{{example variable}}`）。使用時に値を埋め込めます。\",\n  \"com_ui_version_var\": \"バージョン {{0}}\",\n  \"com_ui_versions\": \"バージョン\",\n  \"com_ui_view_source\": \"元の会話を見る\",\n  \"com_ui_yes\": \"はい\",\n  \"com_ui_zoom\": \"ズーム\",\n  \"com_ui_please_enter_question\": \"質問を入力してください\",\n  \"com_ui_restart\": \"再実行\",\n  \"com_ui_historical_messages\": \"以上は履歴メッセージです\",\n  \"com_ui_unknown_message_type\": \"不明なメッセージタイプ\",\n  \"com_ui_required_field\": \"{{field}} は必須項目です。空にできません。\",\n  \"com_ui_field_length_exceeded\": \"{{field}} の長さは {{max}} を超えられません。\",\n  \"com_ui_please_select\": \"選択してください\",\n  \"com_ui_start\": \"開始\",\n  \"com_ui_collapse\": \"折りたたむ\",\n  \"com_ui_expand\": \"展開\",\n  \"com_user_message\": \"あなた\",\n  \"com_warning_resubmit_unsupported\": \"このエンドポイントは AI メッセージの再送信をサポートしていません\",\n  \"com_source_modal_collapse\": \"折りたたむ\",\n  \"com_source_modal_expand\": \"展開\",\n  \"com_source_modal_close\": \"閉じる\",\n  \"com_source_modal_filter_labels\": \"ラベルを絞り込み\",\n  \"com_source_modal_filter_labels_tip\": \"システムは回答に基づいて自動で重要ラベルを生成します。手動で追加/削除も可能で、ラベルに基づき各ファイル・段落の関連度を算出します。\",\n  \"com_source_modal_add_custom\": \"+ カスタム\",\n  \"com_source_modal_source_docs\": \"出典ドキュメント\",\n  \"com_source_modal_download_layered_pdf\": \"デュアルレイヤー PDF をダウンロード\",\n  \"com_source_modal_download_original\": \"元ファイルをダウンロード\",\n  \"com_source_modal_mask_name\": \"本物のモザイク.msk\",\n  \"com_source_modal_no_files\": \"一致するソースファイルはありません\",\n  \"com_source_modal_file_url_invalid\": \"ファイル URL が無効です！\",\n  \"com_msg_source_reference\": \"参照元\",\n  \"sourceFromQaLibrary\": \"この回答は既存のQ&Aライブラリに基づいています。\",\n  \"com_msg_source_no_permission\": \"権限不足のため、閲覧権限のない内容は回答から除外されています\",\n  \"com_runlog_used\": \"使用済み\",\n  \"com_runlog_using\": \"使用中\",\n  \"com_runlog_offline\": \"オフライン\",\n  \"com_runlog_flow_deleted\": \"スキルが削除されたため、スキル名を取得できません\",\n  \"com_runlog_tool_deleted\": \"ツールが削除されたため、ツール名を取得できません\",\n  \"com_runlog_searched\": \"検索済み\",\n  \"com_runlog_searching\": \"検索中\",\n  \"com_runlog_knowledge_deleted\": \"ナレッジベースが削除されたため、名称を取得できません\",\n  \"com_runlog_done\": \"完了\",\n  \"com_runlog_thinking\": \"思考中\",\n  \"com_node_run_node\": \"ノード\",\n  \"com_feedback_required\": \"フィードバックは空にできません\",\n  \"com_feedback_title\": \"フィードバック\",\n  \"com_bschoose_click_to_download\": \"クリックしてダウンロード\",\n  \"com_bschoose_confirmed\": \"確認済み\",\n  \"com_bschoose_confirm\": \"確認\",\n  \"com_bs_reasoning_thinking\": \"思考中\",\n  \"com_bs_reasoning_done\": \"深い思考が完了しました\",\n  \"com_inputfiles_exceed_limit\": \"ファイル：{{0}} は {{1}}M を超えたため削除しました\",\n  \"com_ui_upload_file_type_error\": \"このアプリケーションはこのファイル形式のアップロードに対応していません。\",\n  \"com_inputfiles_upload_failed\": \"ファイルのアップロードに失敗：{{0}}\",\n  \"com_inputfiles_parsing\": \"解析中…\",\n  \"com_inputfiles_uploading\": \"アップロード中…\",\n  \"com_preview_old_version_unsupported\": \"旧バージョンのファイル形式は現在プレビュー非対応です\",\n  \"com_preview_type_unsupported\": \"この種類のファイルはプレビュー非対応です\",\n  \"com_preview_source_paragraph\": \"出典段落\",\n  \"com_search_found_webs\": \"{{0}} 件のウェブページを見つけました\",\n  \"com_search_results\": \"検索結果\",\n  \"com_case_japan_7days\": \"超詳細な日本7日間旅行ガイド\",\n  \"com_case_prospectus_report\": \"目論見書・説明書と君七ステップ読解レポート\",\n  \"com_case_tender_response\": \"入札要件への回答\",\n  \"com_case_ai_products_6m\": \"直近6か月の AI 新製品まとめ（広域検索）\",\n  \"com_case_aero_site\": \"航空宇宙の解説サイトを作成\",\n  \"com_case_magic_tower\": \"魔塔のWebミニゲーム\",\n  \"com_case_featured\": \"$t(linsight) 厳選ケース\",\n  \"com_inputfile_exceed_limit\": \"ファイル：{{0}} は {{1}} MB を超えたため削除しました\",\n  \"com_inputfile_no_file_selected\": \"ファイルが選択されていません\",\n  \"com_chat_round_finished\": \"このラウンドの会話は終了しました\",\n  \"com_file_tip_text_only\": \"添付ファイル内の文字のみを認識\",\n  \"com_file_content_exceed_tokens\": \"ファイル内容が 3 万トークンを超えています\",\n  \"com_file_parse_failed_auto_removed\": \"ファイル {{0}} の解析に失敗し、自動的に削除しました\",\n  \"com_sop_minutes\": \"分\",\n  \"com_sop_hours\": \"時間\",\n  \"com_make_samestyle\": \"同じスタイルを作成\",\n  \"com_searchResults\": \"検索結果\",\n  \"com_webSearch\": \"ウェブ検索\",\n  \"com_searchQueryLabel\": \"検索クエリ:\",\n  \"com_addAnything\": \"何でも追加\",\n  \"com_dropAnyFileToAdd\": \"ここにファイルをドロップして会話に追加できます\",\n  \"com_share_title\": \"会話を共有\",\n  \"com_share_desc\": \"リンクを持っている人は誰でもこの会話を閲覧できます。\",\n  \"com_unsupported_file_type\": \"サポートされていないファイルタイプ：\",\n  \"api_errors\": {\n    \"403\": \"操作権限がありません\",\n    \"404\": \"リソースが見つかりません\",\n    \"500\": \"サーバーエラー\",\n    \"503\": \"ただいまシステムが混み合っております。少々お待ちください。\",\n    \"10001\": \"SFTサービスが見つかりません\",\n    \"10002\": \"無効な操作です\",\n    \"10003\": \"リソースのダウンロードに失敗しました\",\n    \"10004\": \"Embeddingモデルが未設定です。設定画面で設定してください\",\n    \"10005\": \"Embeddingモデルが存在しません。設定してください\",\n    \"10006\": \"Embeddingモデルの種類が不正です\",\n    \"10007\": \"ベクトル検索モデルに問題があります。管理者に連絡してください\",\n    \"10008\": \"LLMモデル設定が見つかりません\",\n    \"10009\": \"LLMモデル設定が削除されました。再設定してください\",\n    \"10010\": \"提供元設定が削除されました。LLMを再設定してください\",\n    \"10011\": \"LLMタイプのみサポートしています。{{model_type}} は非対応です\",\n    \"10012\": \"{{server_name}} の {{model_name}} はオフラインです\",\n    \"10013\": \"LLMの初期化に失敗しました：{{exception}}\",\n    \"10014\": \"ASR設定が見つかりません\",\n    \"10015\": \"ASR設定が削除されました\",\n    \"10016\": \"提供元設定が削除されました。ASRを再設定してください\",\n    \"10017\": \"ASRタイプのみサポートしています\",\n    \"10018\": \"ASRモデル {{model_name}} はオフラインです\",\n    \"10019\": \"ASR初期化に失敗しました：{{exception}}\",\n    \"10020\": \"TTS設定が見つかりません\",\n    \"10021\": \"TTS設定が削除されました\",\n    \"10022\": \"提供元設定が削除されました。TTSを再設定してください\",\n    \"10023\": \"TTSタイプのみサポートしています\",\n    \"10024\": \"TTSモデルがオフラインです\",\n    \"10025\": \"TTS初期化に失敗しました：{{exception}}\",\n    \"10030\": \"システム設定は必須です\",\n    \"10031\": \"システム設定の形式が不正です：{{exception}}\",\n    \"10040\": \"アップロードファイルが空です\",\n    \"10041\": \"対応していないファイル形式です\",\n    \"10100\": \"トレーニングタスクの作成に失敗しました\",\n    \"10101\": \"個人またはプリセットデータセットを1つ以上選択してください\",\n    \"10102\": \"タスクが見つかりません\",\n    \"10103\": \"タスク状態が不正です\",\n    \"10104\": \"タスクのキャンセルに失敗しました\",\n    \"10105\": \"タスク削除に失敗しました\",\n    \"10106\": \"タスク公開に失敗しました\",\n    \"10107\": \"モデル名の更新に失敗しました\",\n    \"10108\": \"公開の取り消しに失敗しました\",\n    \"10109\": \"トレーニングパラメータが不正です\",\n    \"10110\": \"モデル名が重複しています\",\n    \"10120\": \"トレーニングファイルが見つかりません\",\n    \"10125\": \"GPU情報の取得に失敗しました\",\n    \"10126\": \"モデル一覧の取得に失敗しました\",\n    \"10200\": \"モデルが見つかりません\",\n    \"10300\": \"コンポーネントがすでに存在します\",\n    \"10301\": \"コンポーネントが存在しません\",\n    \"10400\": \"アシスタントが見つかりません\",\n    \"10401\": \"アシスタントのオンライン化に失敗：{{exception}}\",\n    \"10402\": \"アシスタント名が重複しています\",\n    \"10403\": \"アシスタントはオンライン中のため編集できません\",\n    \"10420\": \"アシスタントは削除されています\",\n    \"10421\": \"アシスタントがオフラインのため対話できません\",\n    \"10422\": \"推論モデルが設定されていません\",\n    \"10423\": \"推論モデルが未設定です\",\n    \"10424\": \"画像最適化モデルが未設定です\",\n    \"10499\": \"アシスタントサービスエラー\",\n    \"10500\": \"スキルバージョンが見つかりません\",\n    \"10501\": \"使用中のバージョンは削除できません\",\n    \"10502\": \"バージョン名が重複しています\",\n    \"10503\": \"スキル名が重複しています\",\n    \"10520\": \"スキルが見つかりません\",\n    \"10521\": \"スキルはオンラインのため編集できません\",\n    \"10525\": \"ワークフローはオンラインのため編集できません\",\n    \"10526\": \"ワークフロー初期化に失敗しました\",\n    \"10527\": \"ユーザー入力待ちがタイムアウトしました\",\n    \"10528\": \"{{type}} ノードが最大実行回数を超えました\",\n    \"10529\": \"ワークフロー名が重複しています\",\n    \"10530\": \"テンプレート名が重複しています\",\n    \"10531\": \"{{type}} 機能がアップグレードされました。削除して再追加してください\",\n    \"10532\": \"ワークフローバージョンが更新されました。作成者に再編集を依頼してください\",\n    \"10540\": \"サーバースレッドが満杯です。しばらくしてからお試しください\",\n    \"10541\": \"ワークフロー実行失敗：{{exception}}\",\n    \"10599\": \"書き込み権限がありません\",\n    \"10600\": \"ユーザー名またはパスワードが違います\",\n    \"10601\": \"パスワードの有効期限が切れています\",\n    \"10602\": \"パスワード未設定です。管理者に連絡してください\",\n    \"10603\": \"現在のパスワードが違います\",\n    \"10604\": \"別のデバイスでログインが行われました\",\n    \"10605\": \"ユーザー名がすでに存在します\",\n    \"10606\": \"ユーザーグループとロールは必須です\",\n    \"10607\": \"認証コードが違います\",\n    \"10610\": \"ユーザーが残っているためグループを削除できません\",\n    \"10620\": \"ユーザーは無効化されています\",\n    \"10621\": \"ログイン失敗が多すぎるためアカウントが無効化されました\",\n    \"10630\": \"ユーザーグループは必須です\",\n    \"10640\": \"管理者ユーザーは変更できません\",\n    \"10700\": \"タグがすでに存在します\",\n    \"10701\": \"タグが見つかりません\",\n    \"10800\": \"提供元名が重複しています\",\n    \"10801\": \"モデルが重複しています\",\n    \"10802\": \"提供元追加に失敗（全モデルの初期化失敗）\",\n    \"10803\": \"提供元追加に失敗（一部モデルの初期化失敗）\",\n    \"10900\": \"ナレッジベース名が重複しています\",\n    \"10901\": \"Embeddingモデルを選択してください\",\n    \"10902\": \"要約モデルが無効です：{{exception}}\",\n    \"10910\": \"このバージョンでは分割変更ができません。新規作成してください\",\n    \"10911\": \"解析結果が空です\",\n    \"10912\": \"分割結果が長すぎます。区切り文字を増やしてください\",\n    \"10913\": \"ファイルが破損している可能性があります\",\n    \"10914\": \"対応していないファイル形式です\",\n    \"10915\": \"ETLサービスが混雑しています。能力を拡張してください\",\n    \"10920\": \"類似質問モデルが未設定です\",\n    \"10930\": \"質問がすでに存在します\",\n    \"10940\": \"解析中のためコピーできません\",\n    \"10941\": \"ナレッジベースが空のためコピーできません\",\n    \"10950\": \"複数のナレッジベースから同時削除はできません\",\n    \"10951\": \"再構築中のためEmbeddingモデルは変更できません\",\n    \"10952\": \"文書解析に失敗しました\",\n    \"10953\": \"解析エラー：{{exception}}\",\n    \"10960\": \"QAナレッジベースではありません\",\n    \"10970\": \"ナレッジベースが見つかりません\",\n    \"10971\": \"ナレッジベースのファイルが見つかりません\",\n    \"10980\": \"{{field_name}} は内蔵フィールドと衝突しています\",\n    \"10981\": \"メタデータ {{field_name}} はすでに存在します\",\n    \"10982\": \"メタデータ {{field_name}} は存在しません\",\n    \"10983\": \"内蔵フィールド {{field_name}} は変更できません\",\n    \"10984\": \"値の型変換エラー：{{error_msg}}\",\n    \"11010\": \"SOPファイル形式が不正です\",\n    \"11011\": \"SOPの推薦事例設定に失敗しました\",\n    \"11020\": \"ファイルアップロードに失敗しました\",\n    \"11030\": \"利用回数の上限に達しました。新しい招待コードが必要です\",\n    \"11040\": \"ユーザー質問の送信に失敗しました\",\n    \"11050\": \"ベクトル検索モデルの問題です。管理者に相談してください\",\n    \"11060\": \"マニュアル検索が失敗しました（ベクトル・キーワード検索ともに不可）\",\n    \"10608\": \"ユーザー名は30文字以内で入力してください\",\n    \"11070\": \"マニュアル検索に失敗しました\",\n    \"11080\": \"ワークスペースツールの初期化に失敗しました\",\n    \"11090\": \"$t(bisheng) LLM エラー\",\n    \"11100\": \"SOP内容の生成に失敗しました\",\n    \"11110\": \"SOP内容の更新に失敗しました\",\n    \"11120\": \"セッションは完了済みまたは実行中です\",\n    \"11130\": \"タスク開始に失敗しました\",\n    \"11140\": \"キュー状態の取得に失敗しました\",\n    \"11150\": \"マニュアル追加に失敗しました（ベクトル保存エラー）\",\n    \"11160\": \"マニュアル更新に失敗しました\",\n    \"11170\": \"マニュアル削除に失敗しました\",\n    \"11171\": \"{{sop_name}} の内容が長すぎます\",\n    \"11180\": \"招待コードが無効です\",\n    \"11190\": \"すでに別の招待コードが紐づいています\",\n    \"11403\": \"閲覧権限がありません\",\n    \"12040\": \"web_searchツールが見つかりません\",\n    \"12041\": \"セッションが存在しません\",\n    \"12042\": \"エージェントはすでに追加されています\",\n    \"13001\": \"スキルは削除されています\",\n    \"13002\": \"スキルがオフラインのため対話できません\",\n    \"13003\": \"スキルがコンパイルに失敗しています\",\n    \"13004\": \"バックエンドエラー\",\n    \"13005\": \"LLMスキルエラー：{{error}}\",\n    \"13006\": \"文書解析に失敗しました。再アップロードしてください\\n\\n{{error}}\",\n    \"13007\": \"入力データの解析に失敗しました：{{error}}\",\n    \"13010\": \"ワークフローがオフラインのため対話できません\",\n    \"14001\": \"処理中です。しばらくお待ちください\",\n    \"15000\": \"ツール名が重複しています\",\n    \"15001\": \"ツールのAPIは必須です\",\n    \"15002\": \"ツールが見つかりません\",\n    \"15003\": \"名前が不正です（1〜1000文字）\",\n    \"15010\": \"プリセットツールカテゴリは削除できません\",\n    \"15020\": \"ツールSchemaのダウンロードに失敗しました\",\n    \"15021\": \"ツールSchemaは必須です\",\n    \"15022\": \"OpenAPI Schemaの解析に失敗しました：{{exception}}\",\n    \"15023\": \"URLはhttp/httpsで始まる必要があります：{{url}}\",\n    \"15024\": \"MCP設定解析に失敗しました：{{exception}}\",\n    \"16000\": \"データセット名がすでに存在します\",\n    \"11111\": \"このアプリは削除されています\",\n    \"90001\": \"現在のアカウントには管理バックエンドへのアクセス権限がありません。必要な場合は、管理者に連絡して権限を開通してください。\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/locales/ka/translation.json",
    "content": "{}"
  },
  {
    "path": "src/frontend/client/src/locales/ko/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"AI가 응답을 작성 중입니다\",\n  \"com_a11y_end\": \"AI의 답변이 끝났습니다.\",\n  \"com_a11y_start\": \"AI가 응답 중입니다\",\n  \"com_agents_allow_editing\": \"다른 사용자가 내 에이전트를 수정할 수 있도록 허용\",\n  \"com_agents_by_librechat\": \"LibreChat 제공\",\n  \"com_agents_code_interpreter\": \"활성화하면 에이전트가 LibreChat 코드 인터프리터 API를 사용하여 파일 처리를 포함한 생성된 코드를 안전하게 실행할 수 있습니다. 유효한 API 키가 필요합니다.\",\n  \"com_agents_code_interpreter_title\": \"코드 인터프리터 API\",\n  \"com_agents_create_error\": \"에이전트 생성 중 오류가 발생했습니다\",\n  \"com_agents_description_placeholder\": \"선택 사항: 여기에 에이전트를 설명하세요\",\n  \"com_agents_enable_file_search\": \"파일 검색 활성화\",\n  \"com_agents_file_search_disabled\": \"파일 검색을 위해 파일을 업로드하기 전에 에이전트를 먼저 생성해야 합니다\",\n  \"com_agents_file_search_info\": \"활성화하면 에이전트가 아래 나열된 파일명들을 정확히 인식하여 해당 파일들에서 관련 내용을 검색할 수 있습니다.\",\n  \"com_agents_instructions_placeholder\": \"에이전트가 사용하는 시스템 지침\",\n  \"com_agents_missing_provider_model\": \"에이전트를 생성하기 전에 제공업체와 모델을 선택해 주세요\",\n  \"com_agents_name_placeholder\": \"선택 사항: 에이전트의 이름\",\n  \"com_agents_no_access\": \"이 에이전트를 수정할 권한이 없습니다\",\n  \"com_agents_not_available\": \"에이전트를 사용할 수 없음\",\n  \"com_agents_search_name\": \"이름으로 에이전트 검색\",\n  \"com_agents_update_error\": \"에이전트 업데이트 중 오류가 발생했습니다\",\n  \"com_assistants_actions\": \"작업\",\n  \"com_assistants_actions_disabled\": \"어시스턴트를 만들어야 작업을 추가할 수 있습니다.\",\n  \"com_assistants_actions_info\": \"어시스턴트가 API를 통해 정보를 검색하거나 작업을 수행할 수 있게 해줍니다.\",\n  \"com_assistants_add_actions\": \"작업 추가\",\n  \"com_assistants_add_tools\": \"도구 추가\",\n  \"com_assistants_append_date\": \"현재 날짜와 시간 추가\",\n  \"com_assistants_append_date_tooltip\": \"활성화하면 현재 클라이언트의 날짜와 시간이 어시스턴트의 시스템 지침에 추가됩니다.\",\n  \"com_assistants_available_actions\": \"사용 가능한 작업\",\n  \"com_assistants_capabilities\": \"기능\",\n  \"com_assistants_code_interpreter\": \"코드 인터프리터\",\n  \"com_assistants_code_interpreter_files\": \"코드 인터프리터에서만 다음 파일을 사용할 수 있습니다:\",\n  \"com_assistants_code_interpreter_info\": \"코드 인터프리터를 사용하면 어시스턴트가 코드를 작성하고 실행할 수 있습니다. 이 도구는 다양한 데이터와 형식의 파일을 처리하고, 그래프와 같은 파일을 생성할 수 있습니다.\",\n  \"com_assistants_completed_action\": \"{{0}}과 대화했습니다\",\n  \"com_assistants_completed_function\": \"{{0}}을(를) 실행했습니다\",\n  \"com_assistants_conversation_starters\": \"대화 시작하기\",\n  \"com_assistants_conversation_starters_placeholder\": \"대화를 시작할 문구를 입력하세요\",\n  \"com_assistants_create_error\": \"어시스턴트 생성 중 오류가 발생했습니다.\",\n  \"com_assistants_create_success\": \"계정이 성공적으로 생성되었습니다\",\n  \"com_assistants_delete_actions_error\": \"작업 삭제 중 오류가 발생했습니다\",\n  \"com_assistants_delete_actions_success\": \"어시스턴트에서 작업이 성공적으로 삭제되었습니다\",\n  \"com_assistants_description_placeholder\": \"옵션: 여기에 어시스턴트를 설명하세요\",\n  \"com_assistants_domain_info\": \"어시스턴트가 {{0}}에게 이 정보를 보냈습니다\",\n  \"com_assistants_file_search\": \"파일 검색\",\n  \"com_assistants_file_search_info\": \"파일 검색을 위한 벡터 저장소 연결은 아직 지원되지 않습니다. Provider Playground에서 연결하거나 스레드 기반으로 메시지에 파일을 첨부하여 파일 검색을 할 수 있습니다.\",\n  \"com_assistants_function_use\": \"어시스턴트는 {{0}}을(를) 사용했습니다.\",\n  \"com_assistants_image_vision\": \"이미지 인식\",\n  \"com_assistants_instructions_placeholder\": \"보조 지침은 보조가 사용하는 시스템 지침입니다.\",\n  \"com_assistants_knowledge\": \"지식\",\n  \"com_assistants_knowledge_disabled\": \"지식으로 파일을 업로드하기 전에 Assistant를 생성하고 Code Interpreter 또는 Retrieval을 활성화한 후 저장해야 합니다.\",\n  \"com_assistants_knowledge_info\": \"Knowledge에 파일을 업로드하면 어시스턴트와의 대화에서 파일 내용이 포함될 수 있습니다.\",\n  \"com_assistants_max_starters_reached\": \"대화 시작 문구 최대 개수에 도달했습니다\",\n  \"com_assistants_name_placeholder\": \"선택 사항: 어시스턴트의 이름\",\n  \"com_assistants_non_retrieval_model\": \"이 모델에서는 파일 검색 기능을 사용할 수 없습니다. 다른 모델을 선택하세요.\",\n  \"com_assistants_retrieval\": \"검색\",\n  \"com_assistants_running_action\": \"작업 진행 중\",\n  \"com_assistants_search_name\": \"이름으로 도우미 검색\",\n  \"com_assistants_update_actions_error\": \"작업을 생성하거나 업데이트하는 중에 오류가 발생했습니다.\",\n  \"com_assistants_update_actions_success\": \"액션이 성공적으로 생성 또는 업데이트되었습니다\",\n  \"com_assistants_update_error\": \"어시스턴트 업데이트 중 오류가 발생했습니다.\",\n  \"com_assistants_update_success\": \"업데이트 성공\",\n  \"com_auth_already_have_account\": \"이미 계정이 있으신가요?\",\n  \"com_auth_back_to_login\": \"로그인 화면으로 돌아가기\",\n  \"com_auth_click\": \"클릭\",\n  \"com_auth_click_here\": \"여기를 클릭하세요\",\n  \"com_auth_continue\": \"계속\",\n  \"com_auth_create_account\": \"계정 만들기\",\n  \"com_auth_discord_login\": \"Discord로 로그인\",\n  \"com_auth_email\": \"이메일\",\n  \"com_auth_email_address\": \"이메일 주소\",\n  \"com_auth_email_max_length\": \"이메일은 120자를 넘을 수 없습니다\",\n  \"com_auth_email_min_length\": \"이메일은 최소 6자 이상이어야 합니다\",\n  \"com_auth_email_pattern\": \"유효한 이메일 주소를 입력하세요\",\n  \"com_auth_email_required\": \"이메일은 필수입니다\",\n  \"com_auth_email_resend_link\": \"이메일 다시 보내기\",\n  \"com_auth_email_resent_failed\": \"인증 이메일 재전송 실패\",\n  \"com_auth_email_resent_success\": \"인증 이메일이 성공적으로 재전송되었습니다\",\n  \"com_auth_email_verification_failed\": \"이메일 인증에 실패했습니다\",\n  \"com_auth_email_verification_failed_token_missing\": \"인증 실패: 토큰이 없습니다\",\n  \"com_auth_email_verification_in_progress\": \"이메일 주소 확인 중입니다. 잠시만 기다려 주세요.\",\n  \"com_auth_email_verification_invalid\": \"이메일 인증이 유효하지 않습니다\",\n  \"com_auth_email_verification_redirecting\": \"{{0}}초 후 이동합니다...\",\n  \"com_auth_email_verification_resend_prompt\": \"이메일을 받지 못하셨나요?\",\n  \"com_auth_email_verification_success\": \"이메일 인증 완료\",\n  \"com_auth_error_create\": \"계정을 등록하는 중에 오류가 발생했습니다. 다시 시도하세요.\",\n  \"com_auth_error_invalid_reset_token\": \"이 비밀번호 재설정 토큰은 더 이상 유효하지 않습니다.\",\n  \"com_auth_error_login\": \"제공된 정보로 로그인할 수 없습니다. 자격 증명을 확인하고 다시 시도하세요.\",\n  \"com_auth_error_login_ban\": \"서비스 이용 규정을 위반하여 계정이 일시적으로 제한되었습니다.\",\n  \"com_auth_error_login_rl\": \"짧은 시간 동안 너무 많은 로그인 시도가 있었습니다. 잠시 후 다시 시도해 주세요.\",\n  \"com_auth_error_login_server\": \"내부 서버 오류가 발생했습니다. 잠시 기다렸다가 다시 시도해 주세요.\",\n  \"com_auth_error_login_unverified\": \"계정이 아직 인증되지 않았습니다. 이메일에서 인증 링크를 확인해 주세요.\",\n  \"com_auth_facebook_login\": \"Facebook으로 로그인\",\n  \"com_auth_full_name\": \"이름\",\n  \"com_auth_github_login\": \"Github으로 로그인\",\n  \"com_auth_google_login\": \"Google로 로그인\",\n  \"com_auth_here\": \"여기\",\n  \"com_auth_login\": \"로그인\",\n  \"com_auth_login_with_new_password\": \"새로운 비밀번호로 로그인할 수 있습니다.\",\n  \"com_auth_name_max_length\": \"이름은 80자를 초과할 수 없습니다\",\n  \"com_auth_name_min_length\": \"이름은 최소 3자 이상이어야 합니다\",\n  \"com_auth_name_required\": \"이름은 필수입니다\",\n  \"com_auth_no_account\": \"계정이 없으신가요?\",\n  \"com_auth_password\": \"비밀번호\",\n  \"com_auth_password_confirm\": \"비밀번호 확인\",\n  \"com_auth_password_forgot\": \"비밀번호를 잊으셨나요?\",\n  \"com_auth_password_max_length\": \"비밀번호는 128자를 넘을 수 없습니다\",\n  \"com_auth_password_min_length\": \"비밀번호는 최소 8자 이상이어야 합니다\",\n  \"com_auth_password_not_match\": \"비밀번호가 일치하지 않습니다\",\n  \"com_auth_password_required\": \"비밀번호는 필수입니다\",\n  \"com_auth_registration_success_generic\": \"이메일 주소를 확인하기 위해 메일함을 확인해 주세요.\",\n  \"com_auth_registration_success_insecure\": \"등록이 완료되었습니다.\",\n  \"com_auth_reset_password\": \"비밀번호 재설정\",\n  \"com_auth_reset_password_if_email_exists\": \"해당 이메일 주소로 등록된 계정이 있다면, 비밀번호 재설정 안내 메일을 발송했습니다. 스팸 폴더도 확인해 주세요.\",\n  \"com_auth_reset_password_link_sent\": \"이메일 전송\",\n  \"com_auth_reset_password_success\": \"비밀번호 재설정 성공\",\n  \"com_auth_sign_in\": \"로그인\",\n  \"com_auth_sign_up\": \"가입하기\",\n  \"com_auth_submit_registration\": \"등록하기\",\n  \"com_auth_to_reset_your_password\": \"비밀번호를 재설정하려면\",\n  \"com_auth_to_try_again\": \"다시 시도하세요.\",\n  \"com_auth_username\": \"사용자명\",\n  \"com_auth_username_max_length\": \"사용자명은 20자를 초과할 수 없습니다\",\n  \"com_auth_username_min_length\": \"사용자명은 최소 2자 이상이어야 합니다\",\n  \"com_auth_welcome_back\": \"다시 오신 것을 환영합니다\",\n  \"com_click_to_download\": \"(다운로드하려면 클릭하세요)\",\n  \"com_download_expired\": \"다운로드가 만료되었습니다\",\n  \"com_download_expires\": \"(다운로드하려면 클릭하세요 - {{0}} 후 만료)\",\n  \"com_endpoint\": \"엔드포인트\",\n  \"com_endpoint_agent\": \"에이전트\",\n  \"com_endpoint_agent_model\": \"에이전트 모델 (권장: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"에이전트를 선택해 주세요\",\n  \"com_endpoint_ai\": \"인공지능\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"응답에서 생성할 수 있는 최대 토큰 수입니다. 짧은 응답에는 낮은 값을, 긴 응답에는 높은 값을 지정하세요.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"프롬프트 캐싱을 사용하면 API 호출 간에 큰 맥락이나 지시사항을 재사용할 수 있어 비용과 지연 시간을 줄일 수 있습니다\",\n  \"com_endpoint_anthropic_temp\": \"0에서 1 사이의 값으로, 분석/다중 선택에는 0에 가까운 값을 사용하고, 창의적이고 생성적인 작업에는 1에 가까운 값을 사용하세요. 이 값을 변경하거나 Top P 중 하나만 변경하는 것을 권장합니다.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k는 모델이 출력에 사용할 토큰을 선택하는 방식을 변경합니다. top-k가 1인 경우 모델의 어휘 중 가장 확률이 높은 토큰이 선택됩니다(greedy decoding). top-k가 3인 경우 다음 토큰은 가장 확률이 높은 3개의 토큰 중에서 선택됩니다(temperature 사용).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p는 모델이 출력에 사용할 토큰을 선택하는 방식을 변경합니다. 토큰은 가장 높은 확률부터 가장 낮은 확률까지 선택됩니다. 선택된 토큰의 확률의 합이 top-p 값과 같아질 때까지 선택됩니다.\",\n  \"com_endpoint_assistant\": \"어시스턴트\",\n  \"com_endpoint_assistant_model\": \"에이전트 모델\",\n  \"com_endpoint_assistant_placeholder\": \"오른쪽 사이드 패널에서 에이전트를 선택하세요\",\n  \"com_endpoint_completion\": \"완료\",\n  \"com_endpoint_completion_model\": \"완료 모델 (권장: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"여기를 클릭하세요\",\n  \"com_endpoint_config_google_api_info\": \"Gemini에서 Generative Language API 키를 얻으려면\",\n  \"com_endpoint_config_google_api_key\": \"Google API 키\",\n  \"com_endpoint_config_google_cloud_platform\": \"Google Cloud Platform 엔드포인트 설정\",\n  \"com_endpoint_config_google_gemini_api\": \"Gemini API 설정\",\n  \"com_endpoint_config_google_service_key\": \"Google 서비스 계정 키\",\n  \"com_endpoint_config_key\": \"API 키 설정\",\n  \"com_endpoint_config_key_encryption\": \"키는 암호화되어 저장되며, 만료 시간에 삭제됩니다\",\n  \"com_endpoint_config_key_for\": \"API 키 설정: \",\n  \"com_endpoint_config_key_google_need_to\": \"API 키를 설정해야 합니다\",\n  \"com_endpoint_config_key_google_service_account\": \"서비스 계정 생성\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Vertex AI 사용\",\n  \"com_endpoint_config_key_google_vertex_api\": \"Google Cloud에서 제공하는 API\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"'Vertex AI 사용자' 역할을 부여하려면 반드시 '생성 및 계속'을 클릭하세요. 마지막으로 여기에 가져올 JSON 키를 생성하세요.\",\n  \"com_endpoint_config_key_import_json_key\": \"서비스 계정 JSON 키 가져오기\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"유효하지 않은 서비스 계정 JSON 키입니다. 올바른 파일을 가져왔는지 확인하세요\",\n  \"com_endpoint_config_key_import_json_key_success\": \"서비스 계정 JSON 키 가져오기 성공\",\n  \"com_endpoint_config_key_name\": \"키\",\n  \"com_endpoint_config_key_never_expires\": \"키가 만료되지 않습니다\",\n  \"com_endpoint_config_placeholder\": \"헤더 메뉴에서 키를 설정하여 채팅하세요.\",\n  \"com_endpoint_config_value\": \"값 입력\",\n  \"com_endpoint_context\": \"컨텍스트\",\n  \"com_endpoint_context_info\": \"컨텍스트로 사용할 수 있는 최대 토큰 수입니다. 요청마다 보내는 토큰 수를 제어하는 데 사용할 수 있습니다. 지정하지 않으면 알려진 모델의 컨텍스트 크기를 기반으로 시스템 기본값을 사용합니다. 더 높은 값을 설정하면 오류가 발생하거나 토큰 비용이 더 높아질 수 있습니다.\",\n  \"com_endpoint_context_tokens\": \"최대 컨텍스트 토큰 수\",\n  \"com_endpoint_custom_name\": \"사용자 정의 이름\",\n  \"com_endpoint_default\": \"기본값\",\n  \"com_endpoint_default_blank\": \"기본값: 공백\",\n  \"com_endpoint_default_empty\": \"기본값: 비어 있음\",\n  \"com_endpoint_default_with_num\": \"기본값: {{0}}\",\n  \"com_endpoint_examples\": \" 프리셋\",\n  \"com_endpoint_export\": \"내보내기\",\n  \"com_endpoint_export_share\": \"내보내기/공유\",\n  \"com_endpoint_frequency_penalty\": \"빈도 패널티\",\n  \"com_endpoint_func_hover\": \"플러그인을 OpenAI 함수로 사용할 수 있도록 합니다.\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Google에 대한 사용자 정의 이름 설정\",\n  \"com_endpoint_google_maxoutputtokens\": \"응답에서 생성할 수 있는 최대 토큰 수입니다. 짧은 응답에는 낮은 값을, 긴 응답에는 높은 값을 지정하세요.\",\n  \"com_endpoint_google_temp\": \"높은 값 = 더 무작위, 낮은 값 = 더 집중적이고 결정적입니다. 이 값을 변경하거나 Top P 중 하나만 변경하는 것을 권장합니다.\",\n  \"com_endpoint_google_topk\": \"Top-k는 모델이 출력에 사용할 토큰을 선택하는 방식을 변경합니다. top-k가 1인 경우 모델의 어휘 중 가장 확률이 높은 토큰이 선택됩니다(greedy decoding). top-k가 3인 경우 다음 토큰은 가장 확률이 높은 3개의 토큰 중에서 선택됩니다(temperature 사용).\",\n  \"com_endpoint_google_topp\": \"Top-p는 모델이 출력에 사용할 토큰을 선택하는 방식을 변경합니다. 토큰은 가장 높은 확률부터 가장 낮은 확률까지 선택됩니다. 선택된 토큰의 확률의 합이 top-p 값과 같아질 때까지 선택됩니다.\",\n  \"com_endpoint_instructions_assistants\": \"에이전트 지침 재정의\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"어시스턴트의 지침을 재정의합니다. 이를 통해 실행마다 동작을 수정할 수 있습니다.\",\n  \"com_endpoint_max_output_tokens\": \"최대 출력 토큰 수\",\n  \"com_endpoint_message\": \"메시지\",\n  \"com_endpoint_message_new\": \"메시지 {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"메시지를 수정하거나 다시 생성하세요.\",\n  \"com_endpoint_my_preset\": \"내 프리셋\",\n  \"com_endpoint_no_presets\": \"아직 프리셋이 없습니다\",\n  \"com_endpoint_open_menu\": \"메뉴 열기\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"ChatGPT에 대한 사용자 정의 이름을 설정하세요.\",\n  \"com_endpoint_openai_detail\": \"비전 요청의 해상도입니다. \\\"낮음\\\"은 저렴하고 빠르며, \\\"높음\\\"은 더 상세하지만 비용이 많이 듭니다. \\\"자동\\\"은 이미지 해상도에 따라 두 가지 중 하나를 자동으로 선택합니다.\",\n  \"com_endpoint_openai_freq\": \"텍스트에서 토큰의 빈도수에 따라 새로운 토큰에 패널티를 부여합니다. 이전에 나온 텍스트의 빈도수에 따라 새로운 토큰의 확률이 감소하여 동일한 문장을 반복할 가능성을 줄입니다.\",\n  \"com_endpoint_openai_max\": \"생성할 최대 토큰 수입니다. 입력 토큰과 생성된 토큰의 총 길이는 모델의 컨텍스트 길이로 제한됩니다.\",\n  \"com_endpoint_openai_max_tokens\": \"선택적 `max_tokens` 필드로, 채팅 완성에서 생성할 수 있는 최대 토큰 수를 나타냅니다. 입력 토큰과 생성된 토큰의 총 길이는 모델의 컨텍스트 길이로 제한됩니다. 이 숫자가 최대 컨텍스트 토큰 수를 초과하면 오류가 발생할 수 있습니다.\",\n  \"com_endpoint_openai_pres\": \"텍스트에서 토큰이 나타나는지 여부에 따라 새로운 토큰에 패널티를 부여합니다. 이전에 나온 텍스트에 나타나는 토큰에 대한 패널티를 증가시켜 새로운 주제에 대해 이야기할 가능성을 높입니다.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"시스템 메시지에 포함할 사용자 정의 지시사항을 설정하세요. 기본값: 없음\",\n  \"com_endpoint_openai_resend\": \"이전에 첨부한 모든 이미지를 다시 전송합니다. 참고: 이렇게 하면 토큰 비용이 크게 증가할 수 있으며, 많은 이미지를 첨부하면 오류가 발생할 수 있습니다.\",\n  \"com_endpoint_openai_resend_files\": \"이전에 첨부한 모든 파일을 다시 보내세요. 참고: 이렇게 하면 토큰 비용이 증가하고 많은 첨부 파일로 인해 오류가 발생할 수 있습니다.\",\n  \"com_endpoint_openai_stop\": \"API가 추가 토큰 생성을 중지할 최대 4개의 시퀀스입니다.\",\n  \"com_endpoint_openai_temp\": \"높은 값 = 더 무작위, 낮은 값 = 더 집중적이고 결정적입니다. 이 값을 변경하거나 Top P 중 하나만 변경하는 것을 권장합니다.\",\n  \"com_endpoint_openai_topp\": \"온도를 사용한 샘플링 대신, top_p 확률 질량을 고려하는 nucleus 샘플링입니다. 따라서 0.1은 상위 10% 확률 질량을 구성하는 토큰만 고려합니다. 이 값을 변경하거나 온도를 변경하는 것을 권장하지만, 둘 다 변경하지는 마세요.\",\n  \"com_endpoint_output\": \"출력\",\n  \"com_endpoint_plug_image_detail\": \"이미지 상세 정보\",\n  \"com_endpoint_plug_resend_files\": \"파일 재전송\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"시스템 메시지에 포함할 사용자 정의 지시사항을 설정하세요. 기본값: 없음\",\n  \"com_endpoint_plug_skip_completion\": \"완료 단계 건너뛰기\",\n  \"com_endpoint_plug_use_functions\": \"함수 사용\",\n  \"com_endpoint_presence_penalty\": \"존재 패널티\",\n  \"com_endpoint_preset\": \"프리셋\",\n  \"com_endpoint_preset_default\": \"이제 기본 프리셋입니다.\",\n  \"com_endpoint_preset_default_item\": \"기본값:\",\n  \"com_endpoint_preset_default_none\": \"기본 프리셋이 설정되지 않았습니다.\",\n  \"com_endpoint_preset_default_removed\": \"더 이상 기본 프리셋이 아닙니다\",\n  \"com_endpoint_preset_delete_confirm\": \"이 프리셋을 삭제하시겠습니까?\",\n  \"com_endpoint_preset_delete_error\": \"프리셋을 삭제하는 중에 오류가 발생했습니다. 다시 시도해 주세요.\",\n  \"com_endpoint_preset_import\": \"프리셋 가져왔습니다!\",\n  \"com_endpoint_preset_import_error\": \"프리셋을 가져오는 중에 오류가 발생했습니다. 다시 시도해주세요.\",\n  \"com_endpoint_preset_name\": \"프리셋 이름\",\n  \"com_endpoint_preset_save_error\": \"프리셋을 저장하는 중에 오류가 발생했습니다. 다시 시도해 주세요.\",\n  \"com_endpoint_preset_selected\": \"프리셋 활성화됨\",\n  \"com_endpoint_preset_selected_title\": \"활성화됨\",\n  \"com_endpoint_preset_title\": \"프리셋\",\n  \"com_endpoint_presets\": \"프리셋\",\n  \"com_endpoint_presets_clear_warning\": \"모든 프리셋을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.\",\n  \"com_endpoint_prompt_cache\": \"프롬프트 캐싱 사용\",\n  \"com_endpoint_prompt_prefix\": \"프롬프트 접두사\",\n  \"com_endpoint_prompt_prefix_assistants\": \"추가 지시사항\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"추가 지시사항 또는 컨텍스트를 Assistant의 기본 지시사항에 추가합니다. 비어 있으면 무시됩니다.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"사용자 정의 지시사항 또는 컨텍스트를 설정하세요. 비어 있으면 무시됩니다.\",\n  \"com_endpoint_save_as_preset\": \"프리셋으로 저장\",\n  \"com_endpoint_search\": \"이름으로 엔드포인트 검색\",\n  \"com_endpoint_set_custom_name\": \"프리셋을 쉽게 찾을 수 있도록 사용자 정의 이름을 설정하세요\",\n  \"com_endpoint_skip_hover\": \"완료 단계를 건너뛰도록 합니다. 최종 답변과 생성된 단계를 검토하는 단계입니다.\",\n  \"com_endpoint_stop\": \"중지 시퀀스\",\n  \"com_endpoint_stop_placeholder\": \"Enter 키를 눌러 값을 구분하세요\",\n  \"com_endpoint_temperature\": \"온도\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"활성 에이전트 사용\",\n  \"com_error_expired_user_key\": \"{{0}}에 대한 키가 {{1}}에 만료되었습니다. 새 키를 제공하고 다시 시도해주세요.\",\n  \"com_error_files_dupe\": \"중복된 파일이 감지되었습니다\",\n  \"com_error_files_empty\": \"빈 파일은 허용되지 않습니다\",\n  \"com_error_files_process\": \"파일 처리 중 오류가 발생했습니다\",\n  \"com_error_files_unsupported_capability\": \"이 파일 형식을 지원하는 기능이 활성화되어 있지 않습니다\",\n  \"com_error_files_upload\": \"파일 업로드 중 오류가 발생했습니다\",\n  \"com_error_files_upload_canceled\": \"파일 업로드가 취소되었습니다. 참고: 업로드 처리가 아직 진행 중일 수 있으며 수동으로 삭제해야 할 수 있습니다.\",\n  \"com_error_files_validation\": \"파일 유효성 검사 중 오류가 발생했습니다\",\n  \"com_error_input_length\": \"최근 메시지의 토큰 수가 제한({{0}})을 초과했습니다. 메시지를 줄이거나, 대화 설정에서 최대 컨텍스트 크기를 조정하거나, 새로운 대화를 시작해 주세요.\",\n  \"com_error_invalid_user_key\": \"제공된 키가 유효하지 않습니다. 키를 제공하고 다시 시도해주세요.\",\n  \"com_error_moderation\": \"제출된 내용이 커뮤니티 가이드라인에 부합하지 않는다고 판단되어 모더레이션 시스템에 의해 차단되었습니다. 해당 주제로는 진행할 수 없습니다. 다른 질문이나 탐구하고 싶은 주제가 있다면 메시지를 수정하거나 새 대화를 시작해 주세요.\",\n  \"com_error_no_base_url\": \"기본 URL이 없습니다. URL을 제공한 후 다시 시도해 주세요.\",\n  \"com_error_no_user_key\": \"키를 찾을 수 없습니다. 키를 제공하고 다시 시도해주세요.\",\n  \"com_files_filter\": \"파일 필터링...\",\n  \"com_files_no_results\": \"결과가 없습니다.\",\n  \"com_files_number_selected\": \"{{0}}개의 파일({{1}}개 중)이 선택되었습니다\",\n  \"com_generated_files\": \"생성된 파일:\",\n  \"com_hide_examples\": \"예시 숨기기\",\n  \"com_nav_account_settings\": \"계정 설정\",\n  \"com_nav_always_make_prod\": \"항상 새 버전을 프로덕션으로 설정\",\n  \"com_nav_archive_created_at\": \"생성 날짜\",\n  \"com_nav_archive_name\": \"이름\",\n  \"com_nav_archived_chats\": \"아카이브된 채팅\",\n  \"com_nav_archived_chats_empty\": \"아카이브된 채팅이 없습니다\",\n  \"com_nav_at_command\": \"@ 명령어\",\n  \"com_nav_at_command_description\": \"엔드포인트, 모델, 프리셋 등을 전환하는 \\\"@\\\" 명령어 토글\",\n  \"com_nav_audio_play_error\": \"오디오 재생 오류: {{0}}\",\n  \"com_nav_audio_process_error\": \"오디오 처리 오류: {{0}}\",\n  \"com_nav_auto_scroll\": \"채팅 열렸을 때 최신 메시지로 자동 스크롤\",\n  \"com_nav_auto_send_prompts\": \"프롬프트 자동 전송\",\n  \"com_nav_auto_send_text\": \"자동 메시지 전송\",\n  \"com_nav_auto_send_text_disabled\": \"자동 전송 비활성화는 -1로 설정\",\n  \"com_nav_auto_transcribe_audio\": \"오디오 자동 변환\",\n  \"com_nav_automatic_playback\": \"최신 메시지 자동 재생\",\n  \"com_nav_balance\": \"균형\",\n  \"com_nav_browser\": \"브라우저\",\n  \"com_nav_buffer_append_error\": \"오디오 스트리밍에 문제가 발생했습니다. 재생이 중단될 수 있습니다.\",\n  \"com_nav_change_picture\": \"프로필 사진 변경\",\n  \"com_nav_chat_commands\": \"채팅 명령어\",\n  \"com_nav_chat_commands_info\": \"이 명령어들은 메시지 시작 부분에 특정 문자를 입력하면 활성화됩니다. 각 명령어는 지정된 접두사로 실행됩니다. 메시지 작성 시 이러한 문자들을 자주 사용하신다면 명령어 기능을 비활성화할 수 있습니다.\",\n  \"com_nav_chat_direction\": \"채팅 표시 방향\",\n  \"com_nav_clear_all_chats\": \"모든 채팅 지우기\",\n  \"com_nav_clear_cache_confirm_message\": \"캐시를 지우시겠습니까?\",\n  \"com_nav_clear_conversation\": \"대화 지우기\",\n  \"com_nav_clear_conversation_confirm_message\": \"모든 대화를 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.\",\n  \"com_nav_close_sidebar\": \"사이드바 닫기\",\n  \"com_nav_commands\": \"명령어\",\n  \"com_nav_confirm_clear\": \"지우기 확인\",\n  \"com_nav_conversation_mode\": \"대화 모드\",\n  \"com_nav_convo_menu_options\": \"대화 메뉴 옵션\",\n  \"com_nav_db_sensitivity\": \"데시벨 감도\",\n  \"com_nav_delete_account\": \"계정 삭제\",\n  \"com_nav_delete_account_button\": \"내 계정 영구 삭제\",\n  \"com_nav_delete_account_confirm\": \"계정 삭제 - 정말 삭제하시겠습니까?\",\n  \"com_nav_delete_account_email_placeholder\": \"계정 이메일을 입력해 주세요\",\n  \"com_nav_delete_cache_storage\": \"TTS 캐시 저장소 삭제\",\n  \"com_nav_delete_data_info\": \"모든 데이터가 삭제됩니다.\",\n  \"com_nav_delete_warning\": \"경고: 이 작업은 계정을 영구적으로 삭제합니다.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"TTS 캐시 사용\",\n  \"com_nav_enable_cloud_browser_voice\": \"클라우드 기반 음성 사용\",\n  \"com_nav_enabled\": \"활성화됨\",\n  \"com_nav_engine\": \"엔진\",\n  \"com_nav_enter_to_send\": \"엔터키를 눌러 메시지 보내기\",\n  \"com_nav_export\": \"내보내기\",\n  \"com_nav_export_all_message_branches\": \"모든 메시지 브랜치 내보내기\",\n  \"com_nav_export_conversation\": \"대화 내보내기\",\n  \"com_nav_export_filename\": \"파일 이름\",\n  \"com_nav_export_filename_placeholder\": \"파일 이름을 설정하세요\",\n  \"com_nav_export_include_endpoint_options\": \"엔드포인트 옵션 포함\",\n  \"com_nav_export_recursive\": \"재귀적\",\n  \"com_nav_export_recursive_or_sequential\": \"재귀적 또는 순차적?\",\n  \"com_nav_export_type\": \"유형\",\n  \"com_nav_external\": \"외부\",\n  \"com_nav_font_size\": \"글꼴 크기\",\n  \"com_nav_font_size_base\": \"중간\",\n  \"com_nav_font_size_lg\": \"큰 글자\",\n  \"com_nav_font_size_sm\": \"작게\",\n  \"com_nav_font_size_xl\": \"아주 큰 글자\",\n  \"com_nav_font_size_xs\": \"아주 작게\",\n  \"com_nav_help_faq\": \"도움말 및 FAQ\",\n  \"com_nav_hide_panel\": \"오른쪽 사이드 패널 숨기기\",\n  \"com_nav_info_code_artifacts\": \"채팅 옆에 실험적 코드 결과물 표시 활성화\",\n  \"com_nav_info_custom_prompt_mode\": \"활성화하면 기본 아티팩트 시스템 프롬프트가 포함되지 않습니다. 이 모드에서는 아티팩트 생성을 위한 모든 지시사항을 수동으로 입력해야 합니다.\",\n  \"com_nav_info_enter_to_send\": \"활성화되면 `Enter` 키를 눌러 메시지를 보낼 수 있습니다. 비활성화 시 Enter 키는 줄바꿈을 하며, 메시지를 보내려면 `Ctrl + Enter`를 눌러야 합니다.\",\n  \"com_nav_info_fork_change_default\": \"'표시된 메시지만'은 선택한 메시지로 가는 직접 경로만 포함합니다. '관련 브랜치 포함'은 경로상의 브랜치도 추가합니다. '이 메시지 전후 모두 포함'은 연결된 모든 메시지와 브랜치를 포함합니다.\",\n  \"com_nav_info_fork_split_target_setting\": \"활성화되면 선택한 동작에 따라 대상 메시지부터 대화의 최신 메시지까지 포킹이 시작됩니다.\",\n  \"com_nav_info_include_shadcnui\": \"활성화하면 shadcn/ui 컴포넌트 사용을 위한 설명이 포함됩니다. shadcn/ui는 Radix UI와 Tailwind CSS를 기반으로 구축된 재사용 가능한 컴포넌트 모음입니다. 참고: 이 설명은 매우 상세하므로, LLM에게 올바른 import문과 컴포넌트 사용법을 안내하는 것이 중요한 경우에만 활성화하시기 바랍니다. 컴포넌트에 대한 자세한 정보는 다음 웹사이트를 참조하세요: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"활성화하면 메시지의 LaTeX 코드가 수학 방정식으로 렌더링됩니다. LaTeX 렌더링이 필요하지 않은 경우 이 기능을 비활성화하면 성능이 향상될 수 있습니다.\",\n  \"com_nav_info_save_draft\": \"활성화하면 채팅 양식에 입력한 텍스트와 첨부 파일이 자동으로 로컬에 임시 저장됩니다. 페이지를 새로고침하거나 다른 대화로 전환해도 이 임시 저장 내용을 계속 사용할 수 있습니다. 임시 저장 내용은 사용자의 기기에 로컬로 저장되며, 메시지를 보내면 삭제됩니다.\",\n  \"com_nav_info_user_name_display\": \"활성화하면 보내는 각 메시지 위에 사용자 이름이 표시됩니다. 비활성화하면 내 메시지 위에 \\\"나\\\"라고만 표시됩니다.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"자동 감지\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"언어\",\n  \"com_nav_latex_parsing\": \"메시지에서 LaTeX 구문 분석(성능에 영향을 줄 수 있음)\",\n  \"com_nav_log_out\": \"로그아웃\",\n  \"com_nav_long_audio_warning\": \"긴 텍스트일수록 처리 시간이 더 오래 걸립니다.\",\n  \"com_nav_maximize_chat_space\": \"채팅창 최대화\",\n  \"com_nav_modular_chat\": \"대화 중간에 엔드포인트 전환 허용\",\n  \"com_nav_my_files\": \"내 파일\",\n  \"com_nav_no_search_results\": \"검색 결과가 없습니다\",\n  \"com_nav_not_supported\": \"지원되지 않음\",\n  \"com_nav_open_sidebar\": \"사이드바 열기\",\n  \"com_nav_playback_rate\": \"오디오 재생 속도\",\n  \"com_nav_plugin_auth_error\": \"이 플러그인을 인증하려는 중에 오류가 발생했습니다. 다시 시도해주세요.\",\n  \"com_nav_plugin_install\": \"플러그인 설치\",\n  \"com_nav_plugin_search\": \"플러그인 검색\",\n  \"com_nav_plugin_store\": \"플러그인 스토어\",\n  \"com_nav_plugin_uninstall\": \"플러그인 제거\",\n  \"com_nav_plus_command\": \"명령어 추가\",\n  \"com_nav_plus_command_description\": \"다중 응답 설정을 추가하는 ' + ' 명령 토글\",\n  \"com_nav_profile_picture\": \"프로필 사진\",\n  \"com_nav_save_drafts\": \"초안을 로컬에 저장\",\n  \"com_nav_search_placeholder\": \"메시지 검색\",\n  \"com_nav_send_message\": \"메시지 보내기\",\n  \"com_nav_setting_account\": \"계정\",\n  \"com_nav_setting_beta\": \"베타 기능\",\n  \"com_nav_setting_chat\": \"채팅\",\n  \"com_nav_setting_data\": \"데이터 제어\",\n  \"com_nav_setting_general\": \"일반\",\n  \"com_nav_setting_speech\": \"음성\",\n  \"com_nav_settings\": \"설정\",\n  \"com_nav_shared_links\": \"공유 링크\",\n  \"com_nav_show_code\": \"코드 인터프리터 사용 시 항상 코드 표시\",\n  \"com_nav_slash_command\": \"슬래시 명령어\",\n  \"com_nav_slash_command_description\": \"키보드로 프롬프트를 선택하려면 \\\"/\\\" 명령어 토글\",\n  \"com_nav_source_buffer_error\": \"오디오 재생 설정 중 오류가 발생했습니다. 페이지를 새로고침해 주세요.\",\n  \"com_nav_speech_cancel_error\": \"오디오 재생을 중지할 수 없습니다. 페이지를 새로 고침해야 할 수 있습니다.\",\n  \"com_nav_speech_to_text\": \"음성을 텍스트로 변환\",\n  \"com_nav_stop_generating\": \"생성 중단\",\n  \"com_nav_text_to_speech\": \"텍스트 음성 변환\",\n  \"com_nav_theme\": \"테마\",\n  \"com_nav_theme_dark\": \"다크\",\n  \"com_nav_theme_light\": \"라이트\",\n  \"com_nav_theme_system\": \"시스템\",\n  \"com_nav_tool_dialog\": \"어시스턴트 도구\",\n  \"com_nav_tool_dialog_agents\": \"에이전트 도구\",\n  \"com_nav_tool_dialog_description\": \"Assistant를 저장해야 도구 선택이 유지됩니다.\",\n  \"com_nav_tool_remove\": \"제거\",\n  \"com_nav_tool_search\": \"도구 검색\",\n  \"com_nav_tts_init_error\": \"음성 합성 초기화 실패: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"선택한 엔진의 텍스트 음성 변환 기능이 이 브라우저에서 지원되지 않습니다.\",\n  \"com_nav_user\": \"사용자\",\n  \"com_nav_user_msg_markdown\": \"사용자 메시지를 마크다운으로 렌더링\",\n  \"com_nav_user_name_display\": \"메시지에서 사용자 이름 표시\",\n  \"com_nav_voice_select\": \"음성 선택\",\n  \"com_nav_voices_fetch_error\": \"음성 옵션을 불러올 수 없습니다. 인터넷 연결을 확인해 주세요.\",\n  \"com_nav_welcome_agent\": \"에이전트를 선택해 주세요\",\n  \"com_nav_welcome_assistant\": \"어시스턴트 선택하기\",\n  \"com_nav_welcome_message\": \"오늘 무엇을 도와드릴까요?\",\n  \"com_show_agent_settings\": \"에이전트 설정 표시\",\n  \"com_show_completion_settings\": \"완료 설정 표시\",\n  \"com_show_examples\": \"예시 보기\",\n  \"com_sidepanel_agent_builder\": \"에이전트 제작기\",\n  \"com_sidepanel_assistant_builder\": \"어시스턴트 제작기\",\n  \"com_sidepanel_attach_files\": \"파일 첨부\",\n  \"com_sidepanel_conversation_tags\": \"북마크\",\n  \"com_sidepanel_hide_panel\": \"패널 숨기기\",\n  \"com_sidepanel_manage_files\": \"파일 관리\",\n  \"com_sidepanel_parameters\": \"매개변수\",\n  \"com_sidepanel_select_agent\": \"에이전트 선택\",\n  \"com_sidepanel_select_assistant\": \"어시스턴트 선택\",\n  \"com_ui_accept\": \"동의합니다\",\n  \"com_ui_add\": \"추가\",\n  \"com_ui_add_model_preset\": \"추가 응답을 위한 모델 또는 프리셋 추가\",\n  \"com_ui_add_multi_conversation\": \"다중 응답 대화 추가\",\n  \"com_ui_admin\": \"관리자\",\n  \"com_ui_admin_access_warning\": \"관리자 접근 권한을 비활성화하면 예기치 않은 UI 문제가 발생할 수 있으며 페이지 새로고침이 필요할 수 있습니다. 저장하면 librechat.yaml 설정 파일에서 모든 역할에 영향을 미치는 인터페이스 설정을 통해서만 되돌릴 수 있습니다.\",\n  \"com_ui_admin_settings\": \"관리자 설정\",\n  \"com_ui_advanced\": \"고급\",\n  \"com_ui_agent\": \"에이전트\",\n  \"com_ui_agent_delete_error\": \"에이전트 삭제 중 오류가 발생했습니다\",\n  \"com_ui_agent_deleted\": \"에이전트가 삭제되었습니다\",\n  \"com_ui_agent_duplicate_error\": \"에이전트 복제 중 오류가 발생했습니다\",\n  \"com_ui_agent_duplicated\": \"에이전트가 성공적으로 복제되었습니다\",\n  \"com_ui_agent_editing_allowed\": \"다른 사용자가 이미 이 에이전트를 편집할 수 있습니다\",\n  \"com_ui_agents\": \"에이전트\",\n  \"com_ui_agents_allow_create\": \"에이전트 생성 허용\",\n  \"com_ui_agents_allow_share_global\": \"에이전트를 모든 사용자와 공유 허용\",\n  \"com_ui_agents_allow_use\": \"에이전트 사용 허용\",\n  \"com_ui_all\": \"전체\",\n  \"com_ui_all_proper\": \"모두\",\n  \"com_ui_archive\": \"아카이브\",\n  \"com_ui_archive_error\": \"대화 아카이브 실패\",\n  \"com_ui_artifact_click\": \"클릭하여 열기\",\n  \"com_ui_artifacts\": \"아티팩트\",\n  \"com_ui_artifacts_toggle\": \"아티팩트 UI 표시/숨기기\",\n  \"com_ui_ascending\": \"오름차순\",\n  \"com_ui_assistant\": \"어시스턴트\",\n  \"com_ui_assistant_delete_error\": \"어시스턴트 삭제 중 오류가 발생했습니다.\",\n  \"com_ui_assistant_deleted\": \"어시스턴트가 성공적으로 삭제되었습니다\",\n  \"com_ui_assistants\": \"어시스턴트\",\n  \"com_ui_assistants_output\": \"어시스턴트 출력\",\n  \"com_ui_attach_error\": \"파일을 첨부할 수 없습니다. 대화를 생성하거나 선택하시거나 페이지를 새로고침해 보세요.\",\n  \"com_ui_attach_error_openai\": \"어시스턴트 파일을 다른 엔드포인트에 첨부할 수 없습니다.\",\n  \"com_ui_attach_error_size\": \"엔드포인트에 대한 파일 크기 제한을 초과했습니다.\",\n  \"com_ui_attach_error_type\": \"엔드포인트에서 지원하지 않는 파일 형식입니다.\",\n  \"com_ui_attach_warn_endpoint\": \"호환되는 도구가 없으면 비어시스턴트 파일이 무시될 수 있습니다.\",\n  \"com_ui_attachment\": \"첨부 파일\",\n  \"com_ui_authentication\": \"인증\",\n  \"com_ui_avatar\": \"프로필 사진\",\n  \"com_ui_back_to_chat\": \"채팅으로 돌아가기\",\n  \"com_ui_back_to_prompts\": \"프롬프트로 돌아가기\",\n  \"com_ui_bookmark_delete_confirm\": \"이 북마크를 삭제하시겠습니까?\",\n  \"com_ui_bookmarks\": \"북마크\",\n  \"com_ui_bookmarks_add\": \"북마크 추가\",\n  \"com_ui_bookmarks_add_to_conversation\": \"현재 대화에 추가\",\n  \"com_ui_bookmarks_count\": \"개수\",\n  \"com_ui_bookmarks_create_error\": \"북마크 생성 중 오류가 발생했습니다\",\n  \"com_ui_bookmarks_create_exists\": \"이미 존재하는 북마크입니다\",\n  \"com_ui_bookmarks_create_success\": \"북마크가 성공적으로 생성되었습니다\",\n  \"com_ui_bookmarks_delete\": \"북마크 삭제\",\n  \"com_ui_bookmarks_delete_error\": \"북마크 삭제 중 오류가 발생했습니다\",\n  \"com_ui_bookmarks_delete_success\": \"북마크가 성공적으로 삭제되었습니다\",\n  \"com_ui_bookmarks_description\": \"설명\",\n  \"com_ui_bookmarks_edit\": \"북마크 수정\",\n  \"com_ui_bookmarks_filter\": \"북마크 필터링...\",\n  \"com_ui_bookmarks_new\": \"새 북마크\",\n  \"com_ui_bookmarks_title\": \"제목\",\n  \"com_ui_bookmarks_update_error\": \"북마크 업데이트 중 오류가 발생했습니다\",\n  \"com_ui_bookmarks_update_success\": \"북마크가 성공적으로 업데이트되었습니다\",\n  \"com_ui_cancel\": \"취소\",\n  \"com_ui_chat\": \"채팅\",\n  \"com_ui_chat_history\": \"대화 기록\",\n  \"com_ui_clear\": \"지우기\",\n  \"com_ui_clear_all\": \"모두 지우기\",\n  \"com_ui_close\": \"닫기\",\n  \"com_ui_code\": \"코드\",\n  \"com_ui_collapse_chat\": \"채팅 접기\",\n  \"com_ui_command_placeholder\": \"선택 사항: 프롬프트에 대한 명령어를 입력하세요. 입력하지 않으면 이름이 사용됩니다.\",\n  \"com_ui_command_usage_placeholder\": \"명령어나 이름으로 프롬프트 선택\",\n  \"com_ui_confirm_action\": \"작업 확인\",\n  \"com_ui_context\": \"맥락\",\n  \"com_ui_continue\": \"계속\",\n  \"com_ui_controls\": \"컨트롤\",\n  \"com_ui_copied\": \"복사됨\",\n  \"com_ui_copied_to_clipboard\": \"클립보드에 복사되었습니다\",\n  \"com_ui_copy_code\": \"코드 복사\",\n  \"com_ui_copy_link\": \"링크 복사\",\n  \"com_ui_copy_to_clipboard\": \"클립보드에 복사\",\n  \"com_ui_create\": \"만들기\",\n  \"com_ui_create_link\": \"링크 만들기\",\n  \"com_ui_create_prompt\": \"프롬프트 만들기\",\n  \"com_ui_custom_prompt_mode\": \"사용자 지정 프롬프트 모드\",\n  \"com_ui_dashboard\": \"대시보드\",\n  \"com_ui_date\": \"날짜\",\n  \"com_ui_date_april\": \"4월\",\n  \"com_ui_date_august\": \"8월\",\n  \"com_ui_date_december\": \"12월\",\n  \"com_ui_date_february\": \"2월\",\n  \"com_ui_date_january\": \"1월\",\n  \"com_ui_date_july\": \"7월\",\n  \"com_ui_date_june\": \"6월\",\n  \"com_ui_date_march\": \"3월\",\n  \"com_ui_date_may\": \"5월\",\n  \"com_ui_date_november\": \"11월\",\n  \"com_ui_date_october\": \"10월\",\n  \"com_ui_date_previous_30_days\": \"지난 30일\",\n  \"com_ui_date_previous_7_days\": \"지난 7일\",\n  \"com_ui_date_september\": \"9월\",\n  \"com_ui_date_today\": \"오늘\",\n  \"com_ui_date_yesterday\": \"어제\",\n  \"com_ui_decline\": \"동의하지 않습니다\",\n  \"com_ui_delete\": \"삭제\",\n  \"com_ui_delete_action\": \"작업 삭제\",\n  \"com_ui_delete_action_confirm\": \"이 작업을 삭제하시겠습니까?\",\n  \"com_ui_delete_agent_confirm\": \"이 에이전트를 삭제하시겠습니까?\",\n  \"com_ui_delete_assistant_confirm\": \"이 Assistant를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.\",\n  \"com_ui_delete_confirm\": \"이 채팅이 삭제됩니다\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"선택한 \\\"{{0}}\\\"의 버전이 삭제됩니다. 다른 버전이 없다면 프롬프트도 함께 삭제됩니다.\",\n  \"com_ui_delete_conversation\": \"채팅을 삭제하시겠습니까?\",\n  \"com_ui_delete_prompt\": \"프롬프트를 삭제하시겠습니까?\",\n  \"com_ui_delete_shared_link\": \"공유 링크를 삭제하시겠습니까?\",\n  \"com_ui_delete_tool\": \"도구 삭제\",\n  \"com_ui_delete_tool_confirm\": \"이 도구를 삭제하시겠습니까?\",\n  \"com_ui_descending\": \"내림차순\",\n  \"com_ui_description\": \"설명\",\n  \"com_ui_description_placeholder\": \"선택 사항: 프롬프트에 표시할 설명을 입력하세요\",\n  \"com_ui_download_error\": \"파일 다운로드 중 오류가 발생했습니다. 파일이 삭제되었을 수 있습니다.\",\n  \"com_ui_dropdown_variables\": \"드롭다운 변수:\",\n  \"com_ui_dropdown_variables_info\": \"프롬프트에 사용자 정의 드롭다운 메뉴 만들기: `{{변수명:옵션1|옵션2|옵션3}}`\",\n  \"com_ui_duplicate\": \"복제\",\n  \"com_ui_duplication_error\": \"대화를 복제하는 중 오류가 발생했습니다\",\n  \"com_ui_duplication_processing\": \"대화 복제 중...\",\n  \"com_ui_duplication_success\": \"대화가 성공적으로 복제되었습니다\",\n  \"com_ui_edit\": \"편집\",\n  \"com_ui_endpoint\": \"엔드포인트\",\n  \"com_ui_endpoint_menu\": \"LLM 엔드포인트 메뉴\",\n  \"com_ui_endpoints_available\": \"사용 가능한 엔드포인트\",\n  \"com_ui_enter\": \"Enter\",\n  \"com_ui_enter_api_key\": \"API 키 입력\",\n  \"com_ui_enter_openapi_schema\": \"OpenAPI 스키마를 입력하세요\",\n  \"com_ui_enter_var\": \"{{0}} 입력\",\n  \"com_ui_error\": \"오류\",\n  \"com_ui_error_connection\": \"서버 연결 오류가 발생했습니다. 페이지를 새로고침해 주세요.\",\n  \"com_ui_error_save_admin_settings\": \"관리자 설정을 저장하는 중 오류가 발생했습니다.\",\n  \"com_ui_examples\": \"예시\",\n  \"com_ui_export_convo_modal\": \"대화 내보내기\",\n  \"com_ui_field_required\": \"이 필드는 필수입니다\",\n  \"com_ui_filter_prompts_name\": \"이름으로 프롬프트 필터링\",\n  \"com_ui_fork\": \"포크\",\n  \"com_ui_fork_all_target\": \"여기부터 전체 포함\",\n  \"com_ui_fork_branches\": \"관련 브랜치 포함\",\n  \"com_ui_fork_change_default\": \"기본 포크 옵션\",\n  \"com_ui_fork_default\": \"기본 포크 옵션 사용\",\n  \"com_ui_fork_error\": \"대화 분기 중 오류가 발생했습니다\",\n  \"com_ui_fork_from_message\": \"포크 옵션 선택\",\n  \"com_ui_fork_info_1\": \"이 설정을 사용하면 원하는 동작으로 메시지를 분기할 수 있습니다.\",\n  \"com_ui_fork_info_2\": \"\\\"포킹(Forking)\\\"은 현재 대화에서 특정 메시지를 시작/종료 지점으로 하여 새로운 대화를 생성하고, 선택한 옵션에 따라 복사본을 만드는 것을 의미합니다.\",\n  \"com_ui_fork_info_3\": \"\\\"대상 메시지\\\"는 이 팝업이 열린 메시지 또는 \\\"{{0}}\\\"에 체크하면 대화의 최신 메시지를 의미합니다.\",\n  \"com_ui_fork_info_branches\": \"이 옵션은 표시된 메시지와 관련 브랜치를 분기시킵니다. 즉, 대상 메시지에 이르는 직접 경로와 그 경로에 있는 브랜치를 포함합니다.\",\n  \"com_ui_fork_info_remember\": \"이 옵션을 선택하면 향후 대화를 더 빠르게 분기할 수 있도록 선택한 옵션을 기억합니다.\",\n  \"com_ui_fork_info_start\": \"선택 시 이 메시지부터 대화의 최신 메시지까지 위에서 선택한 동작에 따라 포크가 시작됩니다.\",\n  \"com_ui_fork_info_target\": \"이 옵션은 대상 메시지와 그 주변 메시지를 포함하여 대상 메시지에 이르는 모든 메시지 분기를 포크합니다. 다시 말해, 표시 여부나 동일한 경로 상에 있는지 여부와 상관없이 모든 메시지 분기가 포함됩니다.\",\n  \"com_ui_fork_info_visible\": \"이 옵션은 표시된 메시지만 분기하여 복사합니다. 즉, 대상 메시지로 가는 직접 경로만 복사하고 다른 분기는 복사하지 않습니다.\",\n  \"com_ui_fork_processing\": \"대화 분기 중...\",\n  \"com_ui_fork_remember\": \"기억하기\",\n  \"com_ui_fork_remember_checked\": \"선택한 내용은 사용 후에도 기억됩니다. 설정에서 언제든 변경할 수 있습니다.\",\n  \"com_ui_fork_split_target\": \"여기서 포크 시작\",\n  \"com_ui_fork_split_target_setting\": \"기본적으로 대상 메시지에서 포크 시작\",\n  \"com_ui_fork_success\": \"대화 복제 성공\",\n  \"com_ui_fork_visible\": \"공개 메시지만 표시\",\n  \"com_ui_go_to_conversation\": \"대화로 이동\",\n  \"com_ui_happy_birthday\": \"내 첫 생일이야!\",\n  \"com_ui_host\": \"호스트\",\n  \"com_ui_image_gen\": \"이미지 생성\",\n  \"com_ui_import_conversation_error\": \"대화를 가져오는 동안 오류가 발생했습니다\",\n  \"com_ui_import_conversation_file_type_error\": \"가져올 수 없는 파일 형식입니다\",\n  \"com_ui_import_conversation_info\": \"JSON 파일에서 대화 가져오기\",\n  \"com_ui_import_conversation_success\": \"대화가 성공적으로 가져와졌습니다\",\n  \"com_ui_include_shadcnui\": \"shadcn/ui 컴포넌트 설치 안내\",\n  \"com_ui_input\": \"입력\",\n  \"com_ui_instructions\": \"설명\",\n  \"com_ui_latest_footer\": \"모두를 위한 AI, 한곳에서\",\n  \"com_ui_librechat_code_api_key\": \"LibreChat 코드 인터프리터 API 키 받기\",\n  \"com_ui_librechat_code_api_subtitle\": \"안전한 보안. 다국어 지원. 파일 입출력.\",\n  \"com_ui_librechat_code_api_title\": \"AI 코드 실행\",\n  \"com_ui_llm_menu\": \"LLM 메뉴\",\n  \"com_ui_llms_available\": \"사용 가능한 LLM\",\n  \"com_ui_locked\": \"잠김\",\n  \"com_ui_logo\": \"{{0}} 로고\",\n  \"com_ui_manage\": \"관리\",\n  \"com_ui_max_tags\": \"최대 {{0}}개까지만 허용됩니다. 최신 값을 사용 중입니다.\",\n  \"com_ui_mention\": \"엔드포인트, 어시스턴트 또는 프리셋을 언급하여 빠르게 전환하세요\",\n  \"com_ui_min_tags\": \"최소 {{0}}개는 필수로 입력해야 합니다. 더 이상 값을 제거할 수 없습니다.\",\n  \"com_ui_model\": \"모델\",\n  \"com_ui_model_parameters\": \"모델 매개변수\",\n  \"com_ui_more_info\": \"자세히 보기\",\n  \"com_ui_my_prompts\": \"내 프롬프트\",\n  \"com_ui_name\": \"이름\",\n  \"com_ui_new_chat\": \"새 채팅\",\n  \"com_ui_next\": \"다음\",\n  \"com_ui_no\": \"아니요\",\n  \"com_ui_no_bookmarks\": \"아직 북마크가 없는 것 같습니다. 채팅을 선택하고 새 북마크를 추가해보세요\",\n  \"com_ui_no_category\": \"카테고리 없음\",\n  \"com_ui_no_changes\": \"업데이트할 변경 사항이 없습니다\",\n  \"com_ui_no_terms_content\": \"이용 약관 내용이 없습니다\",\n  \"com_ui_none_selected\": \"선택된 항목 없음\",\n  \"com_ui_nothing_found\": \"찾을 수 없습니다\",\n  \"com_ui_of\": \"/\",\n  \"com_ui_off\": \"꺼짐\",\n  \"com_ui_on\": \"켜기\",\n  \"com_ui_page\": \"페이지\",\n  \"com_ui_prev\": \"이전\",\n  \"com_ui_preview\": \"미리보기\",\n  \"com_ui_privacy_policy\": \"개인정보 보호정책\",\n  \"com_ui_privacy_policy_url\": \"개인정보 보호정책 URL\",\n  \"com_ui_prompt\": \"프롬프트\",\n  \"com_ui_prompt_already_shared_to_all\": \"이 프롬프트는 이미 모든 사용자와 공유되었습니다\",\n  \"com_ui_prompt_name\": \"프롬프트 이름\",\n  \"com_ui_prompt_name_required\": \"프롬프트 이름을 입력해주세요\",\n  \"com_ui_prompt_preview_not_shared\": \"작성자가 이 프롬프트에 대한 협업을 허용하지 않았습니다.\",\n  \"com_ui_prompt_text\": \"프롬프트 텍스트\",\n  \"com_ui_prompt_text_required\": \"텍스트를 입력해주세요\",\n  \"com_ui_prompt_update_error\": \"프롬프트 업데이트 중 오류가 발생했습니다\",\n  \"com_ui_prompts\": \"프롬프트\",\n  \"com_ui_prompts_allow_create\": \"프롬프트 생성 허용\",\n  \"com_ui_prompts_allow_share_global\": \"모든 사용자와 프롬프트 공유 허용\",\n  \"com_ui_prompts_allow_use\": \"프롬프트 사용 허용\",\n  \"com_ui_provider\": \"제공자\",\n  \"com_ui_read_aloud\": \"소리내어 읽기\",\n  \"com_ui_regenerate\": \"재생성\",\n  \"com_ui_region\": \"지역\",\n  \"com_ui_rename\": \"이름 바꾸기\",\n  \"com_ui_reset_var\": \"{{0}} 초기화\",\n  \"com_ui_result\": \"결과\",\n  \"com_ui_revoke\": \"취소\",\n  \"com_ui_revoke_info\": \"사용자가 제공한 자격 증명을 모두 취소합니다.\",\n  \"com_ui_revoke_key_confirm\": \"이 키를 취소하시겠습니까?\",\n  \"com_ui_revoke_key_endpoint\": \"{{0}} 키 취소\",\n  \"com_ui_revoke_keys\": \"키 취소\",\n  \"com_ui_revoke_keys_confirm\": \"모든 키를 취소하시겠습니까?\",\n  \"com_ui_role_select\": \"역할\",\n  \"com_ui_run_code\": \"코드 실행\",\n  \"com_ui_run_code_error\": \"코드 실행 중 오류가 발생했습니다\",\n  \"com_ui_save\": \"저장\",\n  \"com_ui_save_submit\": \"저장 및 제출\",\n  \"com_ui_saved\": \"저장되었습니다!\",\n  \"com_ui_schema\": \"스키마\",\n  \"com_ui_select\": \"선택\",\n  \"com_ui_select_file\": \"파일 선택\",\n  \"com_ui_select_model\": \"모델 선택\",\n  \"com_ui_select_provider\": \"제공자 선택\",\n  \"com_ui_select_provider_first\": \"서비스 제공자를 먼저 선택하세요\",\n  \"com_ui_select_region\": \"지역 선택\",\n  \"com_ui_select_search_model\": \"이름으로 모델 검색\",\n  \"com_ui_select_search_plugin\": \"이름으로 플러그인 검색\",\n  \"com_ui_select_search_provider\": \"이름으로 공급자 검색\",\n  \"com_ui_select_search_region\": \"이름으로 지역 검색\",\n  \"com_ui_share\": \"공유하기\",\n  \"no_text_recognized\": \"음성 인식을 사용할 수 없습니다. 관리자에게 문의하세요.\",\n  \"com_ui_share_create_message\": \"이름과 공유 후에 추가하는 메시지는 비공개로 유지됩니다.\",\n  \"com_ui_share_delete_error\": \"공유 링크를 삭제하는 중에 오류가 발생했습니다.\",\n  \"com_ui_share_error\": \"채팅 링크를 공유하는 동안 오류가 발생했습니다\",\n  \"com_ui_share_link_to_chat\": \"채팅으로 링크 공유하기\",\n  \"com_ui_share_to_all_users\": \"모든 사용자와 공유\",\n  \"com_ui_share_update_message\": \"이름, 사용자 지정 지침 및 공유 후 추가하는 메시지는 비공개로 유지됩니다.\",\n  \"com_ui_share_var\": \"{{0}} 공유하기\",\n  \"com_ui_shared_link_not_found\": \"공유 링크를 찾을 수 없습니다\",\n  \"com_ui_shared_prompts\": \"공유된 프롬프트\",\n  \"com_ui_show_all\": \"전체 보기\",\n  \"com_ui_simple\": \"간단\",\n  \"com_ui_size\": \"크기\",\n  \"com_ui_special_variables\": \"특수 변수:\",\n  \"com_ui_special_variables_info\": \"현재 날짜는 `{{current_date}}`, 계정 이름은 `{{current_user}}`로 표시됩니다.\",\n  \"com_ui_speech_while_submitting\": \"응답 생성 중에는 음성을 전송할 수 없습니다\",\n  \"com_ui_stop\": \"중지\",\n  \"com_ui_storage\": \"저장소\",\n  \"com_ui_submit\": \"제출\",\n  \"com_ui_terms_and_conditions\": \"이용 약관\",\n  \"com_ui_terms_of_service\": \"이용 약관\",\n  \"com_ui_tools\": \"도구\",\n  \"com_ui_unarchive\": \"아카이브 해제\",\n  \"com_ui_unarchive_error\": \"대화 아카이브 해제 실패\",\n  \"com_ui_unknown\": \"알 수 없음\",\n  \"com_ui_update\": \"업데이트\",\n  \"com_ui_upload\": \"업로드\",\n  \"com_ui_upload_code_files\": \"코드 인터프리터용 파일 업로드\",\n  \"com_ui_upload_delay\": \"\\\"{{0}}\\\" 파일 업로드에 예상보다 시간이 더 걸리고 있습니다. 파일 인덱싱이 완료될 때까지 기다려 주세요.\",\n  \"com_ui_upload_error\": \"파일 업로드 중 오류가 발생했습니다\",\n  \"com_ui_upload_file_search\": \"파일 검색용 업로드\",\n  \"com_ui_upload_files\": \"파일 업로드\",\n  \"com_ui_upload_image\": \"이미지 업로드\",\n  \"com_ui_upload_image_input\": \"이미지 업로드\",\n  \"com_ui_upload_invalid\": \"업로드할 수 없는 파일입니다. 이미지 파일이어야 하며 용량 제한을 초과하지 않아야 합니다\",\n  \"com_ui_upload_invalid_var\": \"업로드할 수 없는 파일입니다. {{0}} MB 이하의 이미지 파일만 가능합니다\",\n  \"com_ui_upload_success\": \"파일 업로드 성공\",\n  \"com_ui_upload_type\": \"업로드 유형 선택\",\n  \"com_ui_use_micrphone\": \"마이크 사용\",\n  \"com_ui_use_prompt\": \"프롬프트 사용\",\n  \"com_ui_variables\": \"변수\",\n  \"com_ui_variables_info\": \"텍스트에 이중 중괄호를 사용하여 변수를 만들 수 있습니다. 예를 들어 `{{예시 변수}}`와 같이 작성하면 나중에 프롬프트를 사용할 때 해당 부분을 채울 수 있습니다.\",\n  \"com_ui_version_var\": \"버전 {{0}}\",\n  \"com_ui_versions\": \"버전\",\n  \"com_ui_yes\": \"네\",\n  \"com_ui_zoom\": \"확대/축소\",\n  \"com_user_message\": \"당신\",\n  \"com_warning_resubmit_unsupported\": \"이 엔드포인트에서는 AI 메시지 재전송이 지원되지 않습니다\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/nl/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"De AI is nog steeds aan het componeren.\",\n  \"com_a11y_end\": \"De AI heeft zijn antwoord klaar.\",\n  \"com_a11y_start\": \"De AI is begonnen met hun antwoord.\",\n  \"com_agents_allow_editing\": \"Andere gebruikers toestaan om je agent te bewerken\",\n  \"com_agents_by_librechat\": \"door LibreChat\",\n  \"com_agents_code_interpreter\": \"Indien ingeschakeld, kan je agent de LibreChat Code Interpreter API gebruiken om gegenereerde code, inclusief bestandsverwerking, veilig uit te voeren. Vereist een geldige API-sleutel.\",\n  \"com_agents_code_interpreter_title\": \"Code-interpreter API\",\n  \"com_agents_create_error\": \"Er is een fout opgetreden bij het aanmaken van uw agent.\",\n  \"com_agents_instructions_placeholder\": \"De systeeminstructies die de agent gebruikt\",\n  \"com_auth_already_have_account\": \"Heb je al een account?\",\n  \"com_auth_click\": \"Klik\",\n  \"com_auth_click_here\": \"Klik hier\",\n  \"com_auth_continue\": \"Doorgaan\",\n  \"com_auth_create_account\": \"Maak uw account aan\",\n  \"com_auth_discord_login\": \"Inloggen met Discord\",\n  \"com_auth_email\": \"E-mailadres\",\n  \"com_auth_email_address\": \"E-mailadres\",\n  \"com_auth_email_max_length\": \"E-mailadres mag niet langer zijn dan 120 tekens\",\n  \"com_auth_email_min_length\": \"E-mailadres moet minstens 6 tekens bevatten\",\n  \"com_auth_email_pattern\": \"Je moet een geldig e-mailadres invoeren\",\n  \"com_auth_email_required\": \"E-mailadres is verplicht\",\n  \"com_auth_error_create\": \"Er is een fout opgetreden bij het registreren van uw account. Probeer het opnieuw.\",\n  \"com_auth_error_invalid_reset_token\": \"Dit wachtwoord resettoken is niet langer geldig.\",\n  \"com_auth_error_login\": \"Kan niet inloggen met de verstrekte informatie. Controleer uw referenties en probeer het opnieuw.\",\n  \"com_auth_error_login_ban\": \"Uw account is tijdelijk verbannen vanwege schendingen van onze service.\",\n  \"com_auth_error_login_rl\": \"Te veel inlogpogingen in een korte tijd. Probeer het later nog eens.\",\n  \"com_auth_error_login_server\": \"Er was een interne serverfout. Wacht een paar momenten en probeer het opnieuw.\",\n  \"com_auth_facebook_login\": \"Inloggen met Facebook\",\n  \"com_auth_full_name\": \"Volledige naam\",\n  \"com_auth_github_login\": \"Inloggen met Github\",\n  \"com_auth_google_login\": \"Inloggen met Google\",\n  \"com_auth_here\": \"HIER\",\n  \"com_auth_login\": \"Inloggen\",\n  \"com_auth_login_with_new_password\": \"Je kunt nu inloggen met je nieuwe wachtwoord.\",\n  \"com_auth_name_max_length\": \"Naam mag niet langer zijn dan 80 tekens\",\n  \"com_auth_name_min_length\": \"Naam moet minstens 3 tekens bevatten\",\n  \"com_auth_name_required\": \"Naam is verplicht\",\n  \"com_auth_no_account\": \"Heb je geen account?\",\n  \"com_auth_password\": \"Wachtwoord\",\n  \"com_auth_password_confirm\": \"Bevestig wachtwoord\",\n  \"com_auth_password_forgot\": \"Wachtwoord vergeten?\",\n  \"com_auth_password_max_length\": \"Wachtwoord moet minder dan 128 tekens bevatten\",\n  \"com_auth_password_min_length\": \"Wachtwoord moet minstens 8 tekens bevatten\",\n  \"com_auth_password_not_match\": \"Wachtwoorden komen niet overeen\",\n  \"com_auth_password_required\": \"Wachtwoord is verplicht\",\n  \"com_auth_reset_password\": \"Stel uw wachtwoord opnieuw in\",\n  \"com_auth_reset_password_link_sent\": \"E-mail verzonden\",\n  \"com_auth_reset_password_success\": \"Wachtwoord opnieuw ingesteld\",\n  \"com_auth_sign_in\": \"Inloggen\",\n  \"com_auth_sign_up\": \"Aanmelden\",\n  \"com_auth_submit_registration\": \"Registratie indienen\",\n  \"com_auth_to_reset_your_password\": \"om uw wachtwoord opnieuw in te stellen.\",\n  \"com_auth_to_try_again\": \"om het opnieuw te proberen.\",\n  \"com_auth_username\": \"Gebruikersnaam (optioneel)\",\n  \"com_auth_username_max_length\": \"Gebruikersnaam mag niet langer zijn dan 20 tekens\",\n  \"com_auth_username_min_length\": \"Gebruikersnaam moet minstens 2 tekens bevatten\",\n  \"com_auth_welcome_back\": \"Welkom terug\",\n  \"com_endpoint\": \"Eindpunt\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Agentmodel (Aanbevolen: GPT-3,5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maximum aantal tokens dat kan worden gegenereerd in de reactie. Geef een lagere waarde op voor kortere reacties en een hogere waarde voor langere reacties.\",\n  \"com_endpoint_anthropic_temp\": \"Varieert van 0 tot 1. Gebruik een lagere temp voor analytische / meerkeuze taken en een hogere temp voor creatieve en generatieve taken. We raden aan dit of Top P te wijzigen, maar niet beide.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k verandert hoe het model tokens selecteert voor uitvoer. Een top-k van 1 betekent dat het geselecteerde token het meest waarschijnlijk is van alle tokens in de vocabulaire van het model (ook wel 'greedy decoding' genoemd), terwijl een top-k van 3 betekent dat het volgende token wordt geselecteerd uit de 3 meest waarschijnlijke tokens (met behulp van temperatuur).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p verandert hoe het model tokens selecteert voor uitvoer. Tokens worden geselecteerd van meest K (zie topK-parameter) waarschijnlijk tot minst waarschijnlijk totdat de som van hun kansen gelijk is aan de top-p-waarde.\",\n  \"com_endpoint_completion\": \"Voltooiing\",\n  \"com_endpoint_completion_model\": \"Voltooiingsmodel (Aanbevolen: GPT-4)\",\n  \"com_endpoint_config_key\": \"API-sleutel instellen\",\n  \"com_endpoint_config_key_encryption\": \"Uw sleutel wordt versleuteld en verwijderd op\",\n  \"com_endpoint_config_key_for\": \"API-sleutel instellen voor\",\n  \"com_endpoint_config_key_google_need_to\": \"U moet\",\n  \"com_endpoint_config_key_google_service_account\": \"Maak een serviceaccount\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Vertex AI inschakelen\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API op Google Cloud, dan\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Zorg ervoor dat u op 'Maken en doorgaan' klikt om ten minste de 'Vertex AI-gebruiker'-rol te geven. Maak ten slotte een JSON-sleutel aan om hier te importeren.\",\n  \"com_endpoint_config_key_import_json_key\": \"Serviceaccount-JSON-sleutel importeren.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Ongeldige Serviceaccount-JSON-sleutel, heb je het juiste bestand geïmporteerd?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Serviceaccount-JSON-sleutel succesvol geïmporteerd\",\n  \"com_endpoint_config_key_name\": \"Sleutel\",\n  \"com_endpoint_config_value\": \"Voer waarde in voor\",\n  \"com_endpoint_context\": \"Context\",\n  \"com_endpoint_custom_name\": \"Aangepaste naam\",\n  \"com_endpoint_default\": \"standaard\",\n  \"com_endpoint_default_blank\": \"standaard: leeg\",\n  \"com_endpoint_default_empty\": \"standaard: leeg\",\n  \"com_endpoint_default_with_num\": \"standaard: {{0}}\",\n  \"com_endpoint_examples\": \" Voorinstellingen\",\n  \"com_endpoint_export\": \"Exporteren\",\n  \"com_endpoint_frequency_penalty\": \"Frequentiestraf\",\n  \"com_endpoint_func_hover\": \"Schakel het gebruik van plug-ins als OpenAI-functies in\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Stel een aangepaste naam in voor Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maximum aantal tokens dat kan worden gegenereerd in de reactie. Geef een lagere waarde op voor kortere reacties en een hogere waarde voor langere reacties.\",\n  \"com_endpoint_google_temp\": \"Hogere waarden = meer willekeurig, terwijl lagere waarden = meer gericht en deterministisch. We raden aan dit of Top P te wijzigen, maar niet beide.\",\n  \"com_endpoint_google_topk\": \"Top-k verandert hoe het model tokens selecteert voor uitvoer. Een top-k van 1 betekent dat het geselecteerde token het meest waarschijnlijk is van alle tokens in de vocabulaire van het model (ook wel 'greedy decoding' genoemd), terwijl een top-k van 3 betekent dat het volgende token wordt geselecteerd uit de 3 meest waarschijnlijke tokens (met behulp van temperatuur).\",\n  \"com_endpoint_google_topp\": \"Top-p verandert hoe het model tokens selecteert voor uitvoer. Tokens worden geselecteerd van meest K (zie topK-parameter) waarschijnlijk tot minst waarschijnlijk totdat de som van hun kansen gelijk is aan de top-p-waarde.\",\n  \"com_endpoint_max_output_tokens\": \"Max. uitvoertokens\",\n  \"com_endpoint_my_preset\": \"Mijn voorinstelling\",\n  \"com_endpoint_no_presets\": \"Nog geen voorinstellingen, gebruik de instellingenknop om er een te maken\",\n  \"com_endpoint_open_menu\": \"Open menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Stel een aangepaste naam in voor ChatGPT\",\n  \"com_endpoint_openai_freq\": \"Getal tussen -2,0 en 2,0. Positieve waarden straffen nieuwe tokens op basis van hun bestaande frequentie in de tekst tot nu toe, waardoor de kans dat het model dezelfde regel letterlijk herhaalt, afneemt.\",\n  \"com_endpoint_openai_max\": \"Het max. aantal tokens dat kan worden gegenereerd. De totale lengte van invoer-tokens en gegenereerde tokens is beperkt door de contextlengte van het model.\",\n  \"com_endpoint_openai_pres\": \"Getal tussen -2,0 en 2,0. Positieve waarden straffen nieuwe tokens op basis van of ze al voorkomen in de tekst tot nu toe, waardoor de kans dat het model over nieuwe onderwerpen praat toeneemt.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Stel aangepaste instructies in om op te nemen in Systeembericht. Standaard: geen\",\n  \"com_endpoint_openai_temp\": \"Hogere waarden = meer willekeurig, terwijl lagere waarden = meer gericht en deterministisch. We raden aan dit of Top P te wijzigen, maar niet beide.\",\n  \"com_endpoint_openai_topp\": \"Een alternatief voor sampling met temperatuur, genaamd nucleus sampling, waarbij het model de resultaten van de tokens met de top_p waarschijnlijkheidsmassa in overweging neemt. Dus 0,1 betekent dat alleen de tokens die de bovenste 10% waarschijnlijkheidsmassa omvatten, in overweging worden genomen. We raden aan dit of temperatuur te wijzigen, maar niet beide.\",\n  \"com_endpoint_output\": \"Uitvoer\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Stel aangepaste instructies in om op te nemen in Systeembericht. Standaard: geen\",\n  \"com_endpoint_plug_skip_completion\": \"Voltooiing overslaan\",\n  \"com_endpoint_plug_use_functions\": \"Gebruik functies inschakelen\",\n  \"com_endpoint_presence_penalty\": \"Aanwezigheidsstraf\",\n  \"com_endpoint_preset\": \"voorinstelling\",\n  \"com_endpoint_preset_name\": \"Naam voorinstelling\",\n  \"com_endpoint_preset_selected\": \"Voorinstelling actief!\",\n  \"com_endpoint_presets\": \"voorinstellingen\",\n  \"com_endpoint_presets_clear_warning\": \"Weet u zeker dat u alle voorinstellingen wilt wissen? Dit is onomkeerbaar.\",\n  \"com_endpoint_prompt_prefix\": \"Prompt-voorvoegsel\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Stel aangepaste instructies of context in. Wordt genegeerd indien leeg.\",\n  \"com_endpoint_save_as_preset\": \"Opslaan als voorinstelling\",\n  \"com_endpoint_set_custom_name\": \"Stel een aangepaste naam in, voor het geval je deze voorinstelling kunt vinden\",\n  \"com_endpoint_skip_hover\": \"Schakel het overslaan van de voltooiingsstap in, die het definitieve antwoord en gegenereerde stappen beoordeelt\",\n  \"com_endpoint_temperature\": \"Temperatuur\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_nav_archive_created_at\": \"Gemaakt op\",\n  \"com_nav_archive_name\": \"Naam\",\n  \"com_nav_archived_chats\": \"Gearchiveerde chats\",\n  \"com_nav_archived_chats_empty\": \"Geen gearchiveerde chats\",\n  \"com_nav_auto_scroll\": \"Automatisch scrollen naar Nieuwste bij openen\",\n  \"com_nav_balance\": \"Evenwicht\",\n  \"com_nav_clear_all_chats\": \"Alle chats wissen\",\n  \"com_nav_clear_conversation\": \"Conversaties wissen\",\n  \"com_nav_clear_conversation_confirm_message\": \"Weet u zeker dat u alle conversaties wilt wissen? Dit is onomkeerbaar.\",\n  \"com_nav_close_sidebar\": \"Zijbalk sluiten\",\n  \"com_nav_confirm_clear\": \"Wissen bevestigen\",\n  \"com_nav_enabled\": \"Ingeschakeld\",\n  \"com_nav_export\": \"Exporteren\",\n  \"com_nav_export_all_message_branches\": \"Alle berichtvertakkingen exporteren\",\n  \"com_nav_export_conversation\": \"Conversatie exporteren\",\n  \"com_nav_export_filename\": \"Bestandsnaam\",\n  \"com_nav_export_filename_placeholder\": \"Stel de bestandsnaam in\",\n  \"com_nav_export_include_endpoint_options\": \"Eindpuntopties opnemen\",\n  \"com_nav_export_recursive\": \"Recursief\",\n  \"com_nav_export_recursive_or_sequential\": \"Recursief of sequentieel?\",\n  \"com_nav_export_type\": \"Type\",\n  \"com_nav_font_size\": \"Lettertypegrootte\",\n  \"com_nav_help_faq\": \"Help & FAQ\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Automatisch detecteren\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_log_out\": \"Uitloggen\",\n  \"com_nav_not_supported\": \"Niet ondersteund\",\n  \"com_nav_open_sidebar\": \"Zijbalk openen\",\n  \"com_nav_plugin_auth_error\": \"Er trad een fout op bij het authenticeren van deze plugin. Probeer het opnieuw.\",\n  \"com_nav_plugin_search\": \"Plugins zoeken\",\n  \"com_nav_plugin_store\": \"Plugin-opslag\",\n  \"com_nav_search_placeholder\": \"Berichten doorzoeken\",\n  \"com_nav_send_message\": \"Bericht verzenden\",\n  \"com_nav_setting_data\": \"Gegevensbesturing\",\n  \"com_nav_setting_general\": \"Algemeen\",\n  \"com_nav_settings\": \"Instellingen\",\n  \"com_nav_shared_links\": \"Gedeelde links\",\n  \"com_nav_theme\": \"Thema\",\n  \"com_nav_theme_dark\": \"Donker\",\n  \"com_nav_theme_light\": \"Licht\",\n  \"com_nav_theme_system\": \"Systeem\",\n  \"com_nav_user\": \"GEBRUIKER\",\n  \"com_ui_accept\": \"Ik accepteer\",\n  \"com_ui_all\": \"alle\",\n  \"com_ui_archive\": \"Archiveren\",\n  \"com_ui_archive_error\": \"Kan conversatie niet archiveren\",\n  \"com_ui_bookmark_delete_confirm\": \"Weet je zeker dat je deze bladwijzer wilt verwijderen?\",\n  \"com_ui_bookmarks\": \"Bladwijzers\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Toevoegen aan huidig gesprek\",\n  \"com_ui_bookmarks_count\": \"Aantal\",\n  \"com_ui_bookmarks_create_error\": \"Er is een fout opgetreden bij het maken van de bladwijzer\",\n  \"com_ui_bookmarks_create_success\": \"Bladwijzer succesvol aangemaakt\",\n  \"com_ui_bookmarks_delete_error\": \"Er is een fout opgetreden bij het verwijderen van de bladwijzer\",\n  \"com_ui_bookmarks_delete_success\": \"Bladwijzer succesvol verwijderd\",\n  \"com_ui_bookmarks_description\": \"Beschrijving\",\n  \"com_ui_bookmarks_new\": \"Nieuwe bladwijzer\",\n  \"com_ui_bookmarks_title\": \"Titel\",\n  \"com_ui_bookmarks_update_error\": \"Er is een fout opgetreden bij het bijwerken van de bladwijzer\",\n  \"com_ui_bookmarks_update_success\": \"Bladwijzer succesvol bijgewerkt\",\n  \"com_ui_cancel\": \"Annuleren\",\n  \"com_ui_clear\": \"Wissen\",\n  \"com_ui_close\": \"Sluiten\",\n  \"com_ui_confirm_action\": \"Bevestig actie\",\n  \"com_ui_continue\": \"Doorgaan\",\n  \"com_ui_copied_to_clipboard\": \"Gekopieerd naar klembord\",\n  \"com_ui_copy_link\": \"Link kopiëren\",\n  \"com_ui_copy_to_clipboard\": \"Kopiëren naar klembord\",\n  \"com_ui_create_link\": \"Link aanmaken\",\n  \"com_ui_decline\": \"Ik accepteer niet\",\n  \"com_ui_delete\": \"Verwijderen\",\n  \"com_ui_delete_confirm\": \"Hiermee wordt\",\n  \"com_ui_delete_conversation\": \"Chat verwijderen?\",\n  \"com_ui_edit\": \"Bewerken\",\n  \"com_ui_enter\": \"Invoeren\",\n  \"com_ui_examples\": \"Voorbeelden\",\n  \"com_ui_happy_birthday\": \"Het is mijn eerste verjaardag!\",\n  \"com_ui_import_conversation_error\": \"Er is een fout opgetreden bij het importeren van je gesprekken\",\n  \"com_ui_import_conversation_info\": \"Gesprekken importeren vanuit een JSON-bestand\",\n  \"com_ui_import_conversation_success\": \"Gesprekken succesvol geïmporteerd\",\n  \"com_ui_input\": \"Invoer\",\n  \"com_ui_model\": \"Model\",\n  \"com_ui_new_chat\": \"Nieuwe chat\",\n  \"com_ui_next\": \"Volgende\",\n  \"com_ui_no_terms_content\": \"Geen gebruiksvoorwaarden-inhoud om weer te geven\",\n  \"com_ui_of\": \"van\",\n  \"com_ui_prev\": \"Vorige\",\n  \"com_ui_regenerate\": \"Opnieuw genereren\",\n  \"com_ui_rename\": \"Hernoemen\",\n  \"com_ui_revoke\": \"Intrekken\",\n  \"com_ui_revoke_info\": \"Trek alle door de gebruiker verstrekte referenties in\",\n  \"com_ui_save\": \"Opslaan\",\n  \"com_ui_select_model\": \"Selecteer een model\",\n  \"com_ui_share\": \"Delen\",\n  \"com_ui_share_create_message\": \"Uw naam en alle berichten die u na het delen toevoegt, blijven privé.\",\n  \"com_ui_share_delete_error\": \"Er is een fout opgetreden bij het verwijderen van de gedeelde link.\",\n  \"com_ui_share_error\": \"Er is een fout opgetreden bij het delen van de chatlink\",\n  \"com_ui_share_link_to_chat\": \"Deel link naar chat\",\n  \"com_ui_share_update_message\": \"Uw naam, aangepaste instructies en alle berichten die u na het delen toevoegt, blijven privé.\",\n  \"com_ui_shared_link_not_found\": \"Gedeelde link niet gevonden\",\n  \"com_ui_stop\": \"Stop\",\n  \"com_ui_submit\": \"Indienen\",\n  \"com_ui_terms_and_conditions\": \"Gebruiksvoorwaarden\",\n  \"com_ui_unarchive\": \"Uit archiveren\",\n  \"com_ui_unarchive_error\": \"Kan conversatie niet uit archiveren\",\n  \"com_ui_upload_success\": \"Bestand succesvol geüpload\",\n  \"com_ui_use_prompt\": \"Gebruik prompt\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/pl/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"AI nadal komponuje.\",\n  \"com_a11y_end\": \"AI zakończył swoją odpowiedź.\",\n  \"com_a11y_start\": \"AI rozpoczął swoją odpowiedź.\",\n  \"com_agents_by_librechat\": \"od LibreChat\",\n  \"com_agents_code_interpreter_title\": \"API interpretera kodu\",\n  \"com_agents_create_error\": \"Wystąpił błąd podczas tworzenia agenta.\",\n  \"com_agents_description_placeholder\": \"Opcjonalnie: Opisz swojego agenta tutaj\",\n  \"com_agents_enable_file_search\": \"Włącz wyszukiwanie plików\",\n  \"com_agents_file_search_disabled\": \"Agent musi zostać utworzony przed przesłaniem plików do wyszukiwania.\",\n  \"com_agents_file_search_info\": \"Po włączeniu agent zostanie poinformowany o dokładnych nazwach plików wymienionych poniżej, co pozwoli mu na pobranie odpowiedniego kontekstu z tych plików.\",\n  \"com_agents_instructions_placeholder\": \"Instrukcje systemowe używane przez agenta\",\n  \"com_agents_missing_provider_model\": \"Wybierz dostawcę i model przed utworzeniem agenta.\",\n  \"com_agents_name_placeholder\": \"Opcjonalnie: Nazwa agenta\",\n  \"com_agents_search_name\": \"Wyszukaj agentów po nazwie\",\n  \"com_agents_update_error\": \"Wystąpił błąd podczas aktualizacji agenta.\",\n  \"com_assistants_actions\": \"Akcje\",\n  \"com_assistants_actions_disabled\": \"Musisz utworzyć asystenta przed dodaniem akcji.\",\n  \"com_assistants_actions_info\": \"Pozwól swojemu Asystentowi pobierać informacje lub podejmować działania poprzez API\",\n  \"com_assistants_add_actions\": \"Dodaj akcje\",\n  \"com_assistants_add_tools\": \"Dodaj narzędzia\",\n  \"com_assistants_append_date\": \"Dodaj aktualną datę i czas\",\n  \"com_assistants_append_date_tooltip\": \"Po włączeniu, aktualna data i czas klienta zostaną dodane do instrukcji systemowych asystenta.\",\n  \"com_assistants_available_actions\": \"Dostępne akcje\",\n  \"com_assistants_capabilities\": \"Możliwości\",\n  \"com_assistants_code_interpreter\": \"Interpreter kodu\",\n  \"com_assistants_code_interpreter_files\": \"Poniższe pliki są tylko dla interpretera kodu:\",\n  \"com_assistants_code_interpreter_info\": \"Interpreter kodu umożliwia asystentowi pisanie i uruchamianie kodu. To narzędzie może przetwarzać pliki z różnymi danymi i formatowaniem oraz generować pliki, takie jak wykresy.\",\n  \"com_assistants_completed_action\": \"Rozmawiał z {0}\",\n  \"com_assistants_completed_function\": \"Uruchomiono {0}\",\n  \"com_assistants_conversation_starters\": \"Rozpoczęcie rozmowy\",\n  \"com_assistants_conversation_starters_placeholder\": \"Wprowadź rozpoczęcie rozmowy\",\n  \"com_assistants_create_error\": \"Wystąpił błąd podczas tworzenia asystenta.\",\n  \"com_assistants_create_success\": \"Pomyślnie utworzono\",\n  \"com_assistants_delete_actions_error\": \"Wystąpił błąd podczas usuwania akcji.\",\n  \"com_assistants_delete_actions_success\": \"Pomyślnie usunięto akcję z asystenta\",\n  \"com_assistants_description_placeholder\": \"Opcjonalnie: Opisz swojego asystenta tutaj\",\n  \"com_assistants_domain_info\": \"Asystent wysłał te informacje do {0}\",\n  \"com_assistants_file_search\": \"Wyszukiwanie plików\",\n  \"com_assistants_file_search_info\": \"Wyszukiwanie plików umożliwia asystentowi dostęp do wiedzy z plików przesłanych przez ciebie lub twoich użytkowników. Po przesłaniu pliku asystent automatycznie decyduje, kiedy pobierać treść na podstawie żądań użytkownika. Dołączanie magazynów wektorowych do wyszukiwania plików nie jest jeszcze obsługiwane. Możesz je dołączyć z Playground dostawcy lub dołączyć pliki do wiadomości w celu wyszukiwania plików na podstawie wątku.\",\n  \"com_assistants_function_use\": \"Asystent użył {0}\",\n  \"com_assistants_image_vision\": \"Widzenie obrazu\",\n  \"com_assistants_instructions_placeholder\": \"Instrukcje systemowe używane przez asystenta\",\n  \"com_assistants_knowledge\": \"Wiedza\",\n  \"com_assistants_knowledge_disabled\": \"Asystent musi zostać utworzony, a Interpreter kodu lub Pobieranie musi być włączone i zapisane przed przesłaniem plików jako Wiedza.\",\n  \"com_assistants_knowledge_info\": \"Jeśli prześlesz pliki w sekcji Wiedza, rozmowy z twoim Asystentem mogą zawierać treść plików.\",\n  \"com_assistants_max_starters_reached\": \"Osiągnięto maksymalną liczbę rozpoczęć rozmowy\",\n  \"com_assistants_name_placeholder\": \"Opcjonalnie: Nazwa asystenta\",\n  \"com_assistants_retrieval\": \"Pobieranie\",\n  \"com_assistants_running_action\": \"Uruchomiona akcja\",\n  \"com_assistants_search_name\": \"Wyszukaj asystentów po nazwie\",\n  \"com_assistants_update_actions_error\": \"Wystąpił błąd podczas tworzenia lub aktualizacji akcji.\",\n  \"com_assistants_update_actions_success\": \"Pomyślnie utworzono lub zaktualizowano akcję\",\n  \"com_assistants_update_error\": \"Wystąpił błąd podczas aktualizacji asystenta.\",\n  \"com_assistants_update_success\": \"Pomyślnie zaktualizowano\",\n  \"com_auth_already_have_account\": \"Masz już konto?\",\n  \"com_auth_apple_login\": \"Zaloguj się przez Apple\",\n  \"com_auth_back_to_login\": \"Powrót do logowania\",\n  \"com_auth_click\": \"Kliknij\",\n  \"com_auth_click_here\": \"Kliknij tutaj\",\n  \"com_auth_continue\": \"Kontynuuj\",\n  \"com_auth_create_account\": \"Utwórz konto\",\n  \"com_auth_discord_login\": \"Zaloguj się przez Discorda\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Adres e-mail\",\n  \"com_auth_email_max_length\": \"Adres email nie może być dłuższy niż 120 znaków.\",\n  \"com_auth_email_min_length\": \"Adres email musi mieć co najmniej 6 znaków.\",\n  \"com_auth_email_pattern\": \"Wprowadź poprawny adres e-mail\",\n  \"com_auth_email_required\": \"Wymagane jest podanie adresu email.\",\n  \"com_auth_email_resend_link\": \"Wyślij ponownie email\",\n  \"com_auth_email_resent_failed\": \"Nie udało się ponownie wysłać emaila weryfikacyjnego\",\n  \"com_auth_email_resent_success\": \"Email weryfikacyjny wysłany ponownie\",\n  \"com_auth_email_verification_failed\": \"Weryfikacja email nie powiodła się\",\n  \"com_auth_email_verification_failed_token_missing\": \"Weryfikacja nie powiodła się, brak tokenu\",\n  \"com_auth_email_verification_in_progress\": \"Weryfikacja twojego emaila, proszę czekać\",\n  \"com_auth_email_verification_invalid\": \"Nieprawidłowa weryfikacja email\",\n  \"com_auth_email_verification_redirecting\": \"Przekierowanie za {0} sekund...\",\n  \"com_auth_email_verification_success\": \"Email zweryfikowany pomyślnie\",\n  \"com_auth_error_create\": \"Wystąpił błąd podczas tworzenia konta. Spróbuj ponownie.\",\n  \"com_auth_error_invalid_reset_token\": \"Ten token do resetowania hasła jest już nieważny.\",\n  \"com_auth_error_login\": \"Nie udało się zalogować przy użyciu podanych danych. Sprawdź swoje dane logowania i spróbuj ponownie.\",\n  \"com_auth_facebook_login\": \"Zaloguj się przez Facebooka\",\n  \"com_auth_full_name\": \"Pełne imię\",\n  \"com_auth_github_login\": \"Zaloguj się przez Githuba\",\n  \"com_auth_google_login\": \"Zaloguj się przez Google\",\n  \"com_auth_here\": \"TUTAJ\",\n  \"com_auth_login\": \"Zaloguj się\",\n  \"com_auth_login_with_new_password\": \"Teraz możesz zalogować się, używając nowego hasła.\",\n  \"com_auth_name_max_length\": \"Imię nie może zawierać więcej niż 80 znaków\",\n  \"com_auth_name_min_length\": \"Imię musi zawierać co najmniej 3 znaki\",\n  \"com_auth_name_required\": \"Imię jest wymagane\",\n  \"com_auth_no_account\": \"Nie masz konta?\",\n  \"com_auth_password\": \"Hasło\",\n  \"com_auth_password_confirm\": \"Potwierdź hasło\",\n  \"com_auth_password_forgot\": \"Zapomniałeś hasła?\",\n  \"com_auth_password_max_length\": \"Hasło musi mieć mniej niż 128 znaków\",\n  \"com_auth_password_min_length\": \"Hasło musi mieć co najmniej 8 znaków\",\n  \"com_auth_password_not_match\": \"Hasła nie są zgodne\",\n  \"com_auth_password_required\": \"Wymagane jest podanie hasła\",\n  \"com_auth_registration_success_generic\": \"Sprawdź swoją skrzynkę email, aby zweryfikować adres email.\",\n  \"com_auth_registration_success_insecure\": \"Rejestracja zakończona pomyślnie.\",\n  \"com_auth_reset_password\": \"Zresetuj hasło\",\n  \"com_auth_reset_password_link_sent\": \"Link do resetowania hasła został wysłany\",\n  \"com_auth_reset_password_success\": \"Hasło zostało pomyślnie zresetowane\",\n  \"com_auth_sign_in\": \"Zaloguj się\",\n  \"com_auth_sign_up\": \"Zarejestruj się\",\n  \"com_auth_submit_registration\": \"Zarejestruj się\",\n  \"com_auth_to_reset_your_password\": \"aby zresetować hasło.\",\n  \"com_auth_to_try_again\": \"aby spróbować ponownie.\",\n  \"com_auth_username\": \"Nazwa użytkownika (opcjonalnie)\",\n  \"com_auth_username_max_length\": \"Nazwa użytkownika nie może zawierać więcej niż 20 znaków\",\n  \"com_auth_username_min_length\": \"Nazwa użytkownika musi zawierać co najmniej 2 znaki\",\n  \"com_auth_welcome_back\": \"Witamy z powrotem\",\n  \"com_click_to_download\": \"(kliknij tutaj, aby pobrać)\",\n  \"com_download_expired\": \"(pobieranie wygasło)\",\n  \"com_download_expires\": \"(kliknij tutaj, aby pobrać - wygasa {0})\",\n  \"com_endpoint\": \"Punkt końcowy\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Model agenta (zalecany: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Proszę wybrać agenta\",\n  \"com_endpoint_ai\": \"AI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maksymalna liczba tokenów, która może zostać wygenerowana w odpowiedzi. Wybierz mniejszą wartość dla krótszych odpowiedzi i większą wartość dla dłuższych odpowiedzi.\",\n  \"com_endpoint_anthropic_temp\": \"Zakres od 0 do 1. Użyj wartości bliżej 0 dla analizy/wyboru wielokrotnego, a bliżej 1 dla zadań twórczych i generatywnych. Zalecamy dostosowanie tej wartości lub Top P, ale nie obu jednocześnie.\",\n  \"com_endpoint_anthropic_topk\": \"Top-K wpływa na sposób wyboru tokenów przez model. Top-K równa 1 oznacza, że wybrany token jest najbardziej prawdopodobny spośród wszystkich tokenów w słowniku modelu (tzw. dekodowanie zachłanne), podczas gdy top-K równa 3 oznacza, że następny token zostaje wybrany spośród 3 najbardziej prawdopodobnych tokenów (za pomocą temperatury).\",\n  \"com_endpoint_anthropic_topp\": \"Top-P wpływa na sposób wyboru tokenów przez model. Tokeny wybierane są od najbardziej prawdopodobnych do najmniej prawdopodobnych, aż suma ich prawdopodobieństw osiągnie wartość top-P.\",\n  \"com_endpoint_assistant\": \"Asystent\",\n  \"com_endpoint_assistant_model\": \"Model asystenta\",\n  \"com_endpoint_assistant_placeholder\": \"Proszę wybrać asystenta z prawego panelu bocznego\",\n  \"com_endpoint_completion\": \"Uzupełnienie\",\n  \"com_endpoint_completion_model\": \"Model uzupełnienia (zalecany: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Kliknij tutaj\",\n  \"com_endpoint_config_google_api_info\": \"Aby uzyskać klucz API języka generatywnego (dla Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Klucz API Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(z Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Klucz konta usługi Google\",\n  \"com_endpoint_config_key\": \"Ustaw klucz API\",\n  \"com_endpoint_config_key_encryption\": \"Twój klucz zostanie zaszyfrowany i usunięty o\",\n  \"com_endpoint_config_key_for\": \"Ustaw klucz API dla\",\n  \"com_endpoint_config_key_import_json_key\": \"Importuj klucz JSON konta usługi.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Nieprawidłowy klucz JSON konta usługi. Czy zaimportowano właściwy plik?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Pomyślnie zaimportowano klucz JSON konta usługi\",\n  \"com_endpoint_config_key_name\": \"Klucz\",\n  \"com_endpoint_config_key_never_expires\": \"Twój klucz nigdy nie wygaśnie\",\n  \"com_endpoint_config_placeholder\": \"Ustaw swój klucz w menu nagłówka, aby czatować.\",\n  \"com_endpoint_config_value\": \"Wprowadź wartość dla\",\n  \"com_endpoint_context\": \"Kontekst\",\n  \"com_endpoint_context_tokens\": \"Maksymalna liczba tokenów kontekstu\",\n  \"com_endpoint_custom_name\": \"Niestandardowa nazwa\",\n  \"com_endpoint_default\": \"domyślnie\",\n  \"com_endpoint_default_blank\": \"domyślnie: puste\",\n  \"com_endpoint_default_empty\": \"domyślnie: puste\",\n  \"com_endpoint_default_with_num\": \"domyślnie: {{0}}\",\n  \"com_endpoint_examples\": \"Przykłady\",\n  \"com_endpoint_export\": \"Eksportuj\",\n  \"com_endpoint_export_share\": \"Eksportuj/Udostępnij\",\n  \"com_endpoint_frequency_penalty\": \"Kara za częstotliwość\",\n  \"com_endpoint_func_hover\": \"Aktywuj wtyczki jako funkcje OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Ustaw niestandardową nazwę dla Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maksymalna liczba tokenów, które mogą być wygenerowane w odpowiedzi. Wybierz niższą wartość dla krótszych odpowiedzi i wyższą wartość dla dłuższych odpowiedzi.\",\n  \"com_endpoint_google_temp\": \"Wyższe wartości oznaczają większą losowość, natomiast niższe wartości prowadzą do bardziej skoncentrowanych i deterministycznych wyników. Zalecamy dostosowanie tej wartości lub Top P, ale nie obu jednocześnie.\",\n  \"com_endpoint_google_topk\": \"Top-k wpływa na sposób, w jaki model wybiera tokeny do wygenerowania odpowiedzi. Top-k 1 oznacza, że wybrany token jest najbardziej prawdopodobny spośród wszystkich tokenów w słowniku modelu (nazywane też dekodowaniem zachłannym), podczas gdy top-k 3 oznacza, że następny token jest wybierany spośród 3 najbardziej prawdopodobnych tokenów (z uwzględnieniem temperatury).\",\n  \"com_endpoint_google_topp\": \"Top-p wpływa na sposób, w jaki model wybiera tokeny do wygenerowania odpowiedzi. Tokeny są wybierane od najbardziej prawdopodobnych do najmniej, aż suma ich prawdopodobieństw osiągnie wartość top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Nadpisz instrukcje\",\n  \"com_endpoint_max_output_tokens\": \"Maksymalna liczba tokenów wyjściowych\",\n  \"com_endpoint_message\": \"Wiadomość\",\n  \"com_endpoint_message_new\": \"Wiadomość {0}\",\n  \"com_endpoint_message_not_appendable\": \"Edytuj swoją wiadomość lub wygeneruj ponownie.\",\n  \"com_endpoint_my_preset\": \"Moje predefiniowane ustawienie\",\n  \"com_endpoint_no_presets\": \"Brak zapisanych predefiniowanych ustawień\",\n  \"com_endpoint_open_menu\": \"Otwórz menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Ustaw własną nazwę dla ChatGPT\",\n  \"com_endpoint_openai_freq\": \"Liczba pomiędzy -2,0 a 2,0. Dodatnie wartości karzą nowe tokeny w oparciu o ich dotychczasową częstotliwość występowania w tekście, co zmniejsza tendencję modelu do powtarzania tej samej linii dosłownie.\",\n  \"com_endpoint_openai_max\": \"Maksymalna liczba tokenów do wygenerowania. Łączna długość tokenów wejściowych i wygenerowanych tokenów jest ograniczona długością kontekstu modelu.\",\n  \"com_endpoint_openai_pres\": \"Liczba pomiędzy -2,0 a 2,0. Dodatnie wartości karzą nowe tokeny w oparciu o to, czy pojawiły się już w tekście, co zwiększa tendencję modelu do poruszania nowych tematów.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Ustaw własne instrukcje do umieszczenia w systemowej wiadomości. Domyślnie: brak\",\n  \"com_endpoint_openai_stop\": \"Do 4 sekwencji, gdzie API przestanie generować dalsze tokeny.\",\n  \"com_endpoint_openai_temp\": \"Wyższe wartości oznaczają większą losowość, natomiast niższe wartości prowadzą do bardziej skoncentrowanych i deterministycznych wyników. Zalecamy dostosowanie tej wartości lub Top P, ale nie obu jednocześnie.\",\n  \"com_endpoint_openai_topp\": \"Alternatywa dla próbkowania z temperaturą, nazywana próbkowaniem jądra, gdzie model rozważa wyniki tokenów z prawdopodobieństwem top_p. Przykładowo, 0,1 oznacza, że tylko tokeny składające się z 10% najwyższego prawdopodobieństwa są rozważane. Zalecamy dostosowanie tej wartości lub temperatury, ale nie obu jednocześnie.\",\n  \"com_endpoint_output\": \"Wyjście\",\n  \"com_endpoint_plug_image_detail\": \"Szczegóły obrazu\",\n  \"com_endpoint_plug_resend_files\": \"Wyślij ponownie pliki\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Ustaw własne instrukcje do umieszczenia w systemowej wiadomości. Domyślnie: brak\",\n  \"com_endpoint_plug_skip_completion\": \"Pomiń uzupełnienie\",\n  \"com_endpoint_plug_use_functions\": \"Użyj funkcji\",\n  \"com_endpoint_presence_penalty\": \"Kara za obecność\",\n  \"com_endpoint_preset\": \"preset\",\n  \"com_endpoint_preset_default\": \"jest teraz domyślnym presetem.\",\n  \"com_endpoint_preset_default_item\": \"Domyślny:\",\n  \"com_endpoint_preset_default_none\": \"Brak aktywnego domyślnego presetu.\",\n  \"com_endpoint_preset_default_removed\": \"nie jest już domyślnym presetem.\",\n  \"com_endpoint_preset_delete_confirm\": \"Czy na pewno chcesz usunąć ten preset?\",\n  \"com_endpoint_preset_delete_error\": \"Wystąpił błąd podczas usuwania presetu. Spróbuj ponownie.\",\n  \"com_endpoint_preset_import\": \"Preset zaimportowany!\",\n  \"com_endpoint_preset_import_error\": \"Wystąpił błąd podczas importowania presetu. Spróbuj ponownie.\",\n  \"com_endpoint_preset_name\": \"Nazwa ustawienia\",\n  \"com_endpoint_preset_save_error\": \"Wystąpił błąd podczas zapisywania presetu. Spróbuj ponownie.\",\n  \"com_endpoint_preset_selected\": \"Preset aktywny!\",\n  \"com_endpoint_preset_selected_title\": \"Aktywny!\",\n  \"com_endpoint_preset_title\": \"Preset\",\n  \"com_endpoint_presets\": \"presety\",\n  \"com_endpoint_prompt_cache\": \"Użyj buforowania promptów\",\n  \"com_endpoint_prompt_prefix\": \"Prefiks promptu\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Dodatkowe instrukcje\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Ustaw niestandardowe instrukcje lub kontekst. Pominięte, jeśli puste.\",\n  \"com_endpoint_reasoning_effort\": \"Wysiłek rozumowania\",\n  \"com_endpoint_save_as_preset\": \"Zapisz jako predefiniowane ustawienie\",\n  \"com_endpoint_search\": \"Wyszukaj punkt końcowy po nazwie\",\n  \"com_endpoint_set_custom_name\": \"Ustaw własną nazwę, w razie potrzeby odszukania tego ustawienia\",\n  \"com_endpoint_skip_hover\": \"Omijaj etap uzupełnienia sprawdzający ostateczną odpowiedź i generowane kroki\",\n  \"com_endpoint_stop\": \"Stop\",\n  \"com_endpoint_stop_placeholder\": \"Oddziel wartości naciskając `Enter`\",\n  \"com_endpoint_temperature\": \"Temperatura\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Użyj aktywnego asystenta\",\n  \"com_error_expired_user_key\": \"Podany klucz dla {0} wygasł w {1}. Proszę podać nowy klucz i spróbować ponownie.\",\n  \"com_error_files_dupe\": \"Wykryto zduplikowany plik.\",\n  \"com_error_files_empty\": \"Puste pliki nie są dozwolone.\",\n  \"com_error_files_process\": \"Wystąpił błąd podczas przetwarzania pliku.\",\n  \"com_error_files_upload\": \"Wystąpił błąd podczas przesyłania pliku.\",\n  \"com_error_files_upload_canceled\": \"Żądanie przesłania pliku zostało anulowane. Uwaga: przesyłanie pliku może nadal być przetwarzane i będzie wymagało ręcznego usunięcia.\",\n  \"com_error_files_validation\": \"Wystąpił błąd podczas walidacji pliku.\",\n  \"com_error_input_length\": \"Liczba tokenów najnowszej wiadomości jest zbyt duża, przekraczając limit tokenów ({0}). Proszę skrócić swoją wiadomość, dostosować maksymalny rozmiar kontekstu z parametrów rozmowy lub rozgałęzić rozmowę, aby kontynuować.\",\n  \"com_error_invalid_user_key\": \"Podano nieprawidłowy klucz. Podaj prawidłowy klucz i spróbuj ponownie.\",\n  \"com_error_moderation\": \"Wygląda na to, że przesłana treść została oznaczona przez nasz system moderacji jako niezgodna z naszymi wytycznymi społeczności. Nie możemy kontynuować z tym konkretnym tematem. Jeśli masz inne pytania lub tematy do omówienia, proszę edytuj swoją wiadomość lub utwórz nową rozmowę.\",\n  \"com_error_no_base_url\": \"Nie znaleziono podstawowego URL. Podaj go i spróbuj ponownie.\",\n  \"com_error_no_user_key\": \"Nie znaleziono klucza. Podaj klucz i spróbuj ponownie.\",\n  \"com_files_filter\": \"Filtruj pliki...\",\n  \"com_files_no_results\": \"Brak wyników.\",\n  \"com_files_number_selected\": \"{0} z {1} elementów wybranych\",\n  \"com_generated_files\": \"Wygenerowane pliki:\",\n  \"com_hide_examples\": \"Ukryj przykłady\",\n  \"com_nav_account_settings\": \"Ustawienia konta\",\n  \"com_nav_always_make_prod\": \"Zawsze twórz nowe wersje produkcyjne\",\n  \"com_nav_archive_created_at\": \"Utworzono\",\n  \"com_nav_archive_name\": \"Nazwa\",\n  \"com_nav_archived_chats\": \"Zarchiwizowane rozmowy\",\n  \"com_nav_archived_chats_empty\": \"Nie masz żadnych zarchiwizowanych rozmów.\",\n  \"com_nav_at_command\": \"Polecenie @\",\n  \"com_nav_at_command_description\": \"Przełącz polecenie \\\"@\\\" do przełączania punktów końcowych, modeli, presetów, itp.\",\n  \"com_nav_audio_play_error\": \"Błąd odtwarzania audio: {0}\",\n  \"com_nav_audio_process_error\": \"Błąd przetwarzania audio: {0}\",\n  \"com_nav_auto_scroll\": \"Automatyczne przewijanie do najnowszej wiadomości przy otwarciu czatu\",\n  \"com_nav_auto_send_prompts\": \"Automatycznie wysyłaj prompty\",\n  \"com_nav_auto_send_text\": \"Automatycznie wysyłaj tekst\",\n  \"com_nav_auto_send_text_disabled\": \"ustaw -1 aby wyłączyć\",\n  \"com_nav_auto_transcribe_audio\": \"Automatycznie transkrybuj audio\",\n  \"com_nav_automatic_playback\": \"Automatyczne odtwarzanie najnowszej wiadomości\",\n  \"com_nav_balance\": \"Balansować\",\n  \"com_nav_browser\": \"Przeglądarka\",\n  \"com_nav_buffer_append_error\": \"Problem ze strumieniowaniem audio. Odtwarzanie może zostać przerwane.\",\n  \"com_nav_change_picture\": \"Zmień zdjęcie\",\n  \"com_nav_chat_commands\": \"Polecenia czatu\",\n  \"com_nav_chat_commands_info\": \"Te polecenia są aktywowane przez wpisanie określonych znaków na początku twojej wiadomości. Każde polecenie jest uruchamiane przez wyznaczony prefiks. Możesz je wyłączyć, jeśli często używasz tych znaków do rozpoczynania wiadomości.\",\n  \"com_nav_chat_direction\": \"Kierunek czatu\",\n  \"com_nav_clear_all_chats\": \"Usuń wszystkie konwersacje\",\n  \"com_nav_clear_conversation\": \"Wyczyść rozmowę\",\n  \"com_nav_clear_conversation_confirm_message\": \"Czy na pewno chcesz usunąć wszystkie konwersacje? Tej operacji nie można cofnąć.\",\n  \"com_nav_close_sidebar\": \"Zamknij pasek boczny\",\n  \"com_nav_commands\": \"Polecenia\",\n  \"com_nav_confirm_clear\": \"Potwierdź usunięcie\",\n  \"com_nav_conversation_mode\": \"Tryb konwersacji\",\n  \"com_nav_convo_menu_options\": \"Opcje menu rozmowy\",\n  \"com_nav_db_sensitivity\": \"Czułość decybeli\",\n  \"com_nav_delete_account\": \"Usuń konto\",\n  \"com_nav_delete_account_button\": \"Trwale usuń moje konto\",\n  \"com_nav_delete_account_confirm\": \"Usunąć konto - jesteś pewien?\",\n  \"com_nav_delete_account_email_placeholder\": \"Proszę wprowadzić email konta\",\n  \"com_nav_delete_cache_storage\": \"Usuń pamięć podręczną TTS\",\n  \"com_nav_delete_data_info\": \"Wszystkie twoje dane zostaną usunięte.\",\n  \"com_nav_delete_warning\": \"OSTRZEŻENIE: To trwale usunie twoje konto.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Włącz pamięć podręczną TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Użyj głosów opartych na chmurze\",\n  \"com_nav_enabled\": \"Włączone\",\n  \"com_nav_engine\": \"Silnik\",\n  \"com_nav_enter_to_send\": \"Naciśnij Enter, aby wysłać wiadomości\",\n  \"com_nav_export_all_message_branches\": \"Eksportuj wszystkie gałęzie wiadomości\",\n  \"com_nav_export_conversation\": \"Eksportuj konwersację\",\n  \"com_nav_export_filename\": \"Nazwa pliku\",\n  \"com_nav_export_filename_placeholder\": \"Podaj nazwę pliku\",\n  \"com_nav_export_include_endpoint_options\": \"Dołącz opcje punktu końcowego\",\n  \"com_nav_export_recursive\": \"Rekurencyjny\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekurencyjny czy sekwencyjny?\",\n  \"com_nav_export_type\": \"Typ\",\n  \"com_nav_external\": \"Zewnętrzny\",\n  \"com_nav_font_size\": \"Rozmiar czcionki\",\n  \"com_nav_font_size_base\": \"Średni\",\n  \"com_nav_font_size_lg\": \"Duży\",\n  \"com_nav_font_size_sm\": \"Mały\",\n  \"com_nav_font_size_xl\": \"Bardzo duży\",\n  \"com_nav_font_size_xs\": \"Bardzo mały\",\n  \"com_nav_help_faq\": \"Pomoc i często zadawane pytania\",\n  \"com_nav_hide_panel\": \"Ukryj skrajny prawy panel\",\n  \"com_nav_info_code_artifacts\": \"Włącza wyświetlanie eksperymentalnych artefaktów kodu obok czatu\",\n  \"com_nav_info_custom_prompt_mode\": \"Gdy włączone, domyślny systemowy prompt artefaktów nie zostanie dołączony. Wszystkie instrukcje generowania artefaktów muszą być podane ręcznie w tym trybie.\",\n  \"com_nav_info_enter_to_send\": \"Gdy włączone, naciśnięcie `ENTER` wyśle twoją wiadomość. Gdy wyłączone, naciśnięcie Enter doda nową linię, a do wysłania wiadomości będziesz potrzebować `CTRL + ENTER` / `⌘ + ENTER`.\",\n  \"com_nav_info_include_shadcnui\": \"Gdy włączone, instrukcje dotyczące używania komponentów shadcn/ui zostaną dołączone. shadcn/ui to kolekcja komponentów wielokrotnego użytku zbudowanych przy użyciu Radix UI i Tailwind CSS. Uwaga: są to obszerne instrukcje, powinieneś je włączyć tylko wtedy, gdy poinformowanie LLM o prawidłowych importach i komponentach jest dla ciebie ważne. Aby uzyskać więcej informacji o tych komponentach, odwiedź: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Gdy włączone, kod LaTeX w wiadomościach będzie renderowany jako równania matematyczne. Wyłączenie tego może poprawić wydajność, jeśli nie potrzebujesz renderowania LaTeX.\",\n  \"com_nav_info_save_draft\": \"Gdy włączone, tekst i załączniki, które wprowadzasz w formularzu czatu, będą automatycznie zapisywane lokalnie jako szkice. Te szkice będą dostępne nawet po przeładowaniu strony lub przełączeniu się na inną rozmowę. Szkice są przechowywane lokalnie na twoim urządzeniu i są usuwane po wysłaniu wiadomości.\",\n  \"com_nav_info_show_thinking\": \"Gdy włączone, czat będzie domyślnie wyświetlał rozwijane menu myślenia, pozwalając na podgląd rozumowania AI w czasie rzeczywistym. Gdy wyłączone, rozwijane menu myślenia pozostaną domyślnie zamknięte dla czystszego i bardziej uporządkowanego interfejsu\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Automatyczne wykrywanie\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Język\",\n  \"com_nav_latex_parsing\": \"Parsowanie LaTeX w wiadomościach (może wpływać na wydajność)\",\n  \"com_nav_log_out\": \"Wyloguj\",\n  \"com_nav_long_audio_warning\": \"Dłuższe teksty będą potrzebować więcej czasu na przetworzenie.\",\n  \"com_nav_maximize_chat_space\": \"Maksymalizuj przestrzeń czatu\",\n  \"com_nav_modular_chat\": \"Włącz przełączanie punktów końcowych w trakcie rozmowy\",\n  \"com_nav_no_search_results\": \"Nie znaleziono wyników wyszukiwania\",\n  \"com_nav_not_supported\": \"Nieobsługiwane\",\n  \"com_nav_open_sidebar\": \"Otwórz pasek boczny\",\n  \"com_nav_playback_rate\": \"Szybkość odtwarzania audio\",\n  \"com_nav_plugin_auth_error\": \"Wystąpił błąd podczas próby uwierzytelnienia tej wtyczki. Proszę spróbować ponownie.\",\n  \"com_nav_plugin_install\": \"Zainstaluj\",\n  \"com_nav_plugin_search\": \"Wyszukiwanie wtyczek\",\n  \"com_nav_plugin_store\": \"Sklep z wtyczkami\",\n  \"com_nav_plugin_uninstall\": \"Odinstaluj\",\n  \"com_nav_plus_command\": \"Polecenie +\",\n  \"com_nav_plus_command_description\": \"Przełącz polecenie \\\"+\\\" do dodawania ustawienia wielu odpowiedzi\",\n  \"com_nav_profile_picture\": \"Zdjęcie profilowe\",\n  \"com_nav_save_drafts\": \"Zapisuj szkice lokalnie\",\n  \"com_nav_scroll_button\": \"Przycisk przewijania do końca\",\n  \"com_nav_search_placeholder\": \"Szukaj wiadomości\",\n  \"com_nav_send_message\": \"Wyślij wiadomość\",\n  \"com_nav_setting_account\": \"Konto\",\n  \"com_nav_setting_beta\": \"Funkcje beta\",\n  \"com_nav_setting_chat\": \"Czat\",\n  \"com_nav_setting_data\": \"Kontrola danych\",\n  \"com_nav_setting_general\": \"Ogólne\",\n  \"com_nav_setting_speech\": \"Mowa\",\n  \"com_nav_settings\": \"Ustawienia\",\n  \"com_nav_shared_links\": \"Linki udostępnione\",\n  \"com_nav_show_code\": \"Zawsze pokazuj kod podczas używania interpretera kodu\",\n  \"com_nav_show_thinking\": \"Domyślnie otwieraj rozwijane menu myślenia\",\n  \"com_nav_slash_command\": \"Polecenie /\",\n  \"com_nav_slash_command_description\": \"Przełącz polecenie \\\"/\\\" do wybierania promptu za pomocą klawiatury\",\n  \"com_nav_source_buffer_error\": \"Błąd konfiguracji odtwarzania audio. Proszę odświeżyć stronę.\",\n  \"com_nav_speech_cancel_error\": \"Nie można zatrzymać odtwarzania audio. Może być konieczne odświeżenie strony.\",\n  \"com_nav_speech_to_text\": \"Mowa na tekst\",\n  \"com_nav_stop_generating\": \"Zatrzymaj generowanie\",\n  \"com_nav_text_to_speech\": \"Tekst na mowę\",\n  \"com_nav_theme\": \"Motyw\",\n  \"com_nav_theme_dark\": \"Ciemny\",\n  \"com_nav_theme_light\": \"Jasny\",\n  \"com_nav_theme_system\": \"Domyślny\",\n  \"com_nav_tool_dialog\": \"Narzędzia asystenta\",\n  \"com_nav_tool_dialog_agents\": \"Narzędzia agenta\",\n  \"com_nav_tool_dialog_description\": \"Asystent musi zostać zapisany, aby zachować wybrane narzędzia.\",\n  \"com_nav_tool_remove\": \"Usuń\",\n  \"com_nav_tool_search\": \"Wyszukaj narzędzia\",\n  \"com_nav_tts_init_error\": \"Nie udało się zainicjować tekstu na mowę: {0}\",\n  \"com_nav_tts_unsupported_error\": \"Tekst na mowę dla wybranego silnika nie jest obsługiwany w tej przeglądarce.\",\n  \"com_nav_user\": \"Użytkownik\",\n  \"com_nav_user_msg_markdown\": \"Renderuj wiadomości użytkownika jako markdown\",\n  \"com_nav_user_name_display\": \"Wyświetlaj nazwę użytkownika w wiadomościach\",\n  \"com_nav_voice_select\": \"Głos\",\n  \"com_nav_voices_fetch_error\": \"Nie można pobrać opcji głosów. Sprawdź połączenie internetowe.\",\n  \"com_nav_welcome_agent\": \"Proszę wybrać agenta\",\n  \"com_nav_welcome_assistant\": \"Proszę wybrać asystenta\",\n  \"com_nav_welcome_message\": \"Jak mogę ci dzisiaj pomóc?\",\n  \"com_show_agent_settings\": \"Pokaż ustawienia agenta\",\n  \"com_show_completion_settings\": \"Pokaż ustawienia uzupełniania\",\n  \"com_show_examples\": \"Pokaż przykłady\",\n  \"com_sidepanel_agent_builder\": \"Kreator agenta\",\n  \"com_sidepanel_assistant_builder\": \"Kreator Asystenta\",\n  \"com_sidepanel_attach_files\": \"Załącz Pliki\",\n  \"com_sidepanel_conversation_tags\": \"Zakładki\",\n  \"com_sidepanel_hide_panel\": \"Ukryj Panel\",\n  \"com_sidepanel_manage_files\": \"Zarządzaj Plikami\",\n  \"com_sidepanel_parameters\": \"Parametry\",\n  \"com_sidepanel_select_agent\": \"Wybierz agenta\",\n  \"com_sidepanel_select_assistant\": \"Wybierz Asystenta\",\n  \"com_ui_accept\": \"Akceptuję\",\n  \"com_ui_add\": \"Dodaj\",\n  \"com_ui_add_model_preset\": \"Dodaj model lub preset dla dodatkowej odpowiedzi\",\n  \"com_ui_add_multi_conversation\": \"Dodaj wielokrotną konwersację\",\n  \"com_ui_admin\": \"Administrator\",\n  \"com_ui_admin_access_warning\": \"Wyłączenie dostępu administratora do tej funkcji może spowodować nieoczekiwane problemy z interfejsem użytkownika wymagające odświeżenia. Jeśli zostanie zapisane, jedynym sposobem na przywrócenie jest ustawienie interfejsu w konfiguracji librechat.yaml, które wpływa na wszystkie role.\",\n  \"com_ui_admin_settings\": \"Ustawienia administratora\",\n  \"com_ui_advanced\": \"Zaawansowane\",\n  \"com_ui_agent\": \"Agent\",\n  \"com_ui_agent_delete_error\": \"Wystąpił błąd podczas usuwania agenta\",\n  \"com_ui_agent_deleted\": \"Pomyślnie usunięto agenta\",\n  \"com_ui_agent_duplicate_error\": \"Wystąpił błąd podczas duplikowania agenta\",\n  \"com_ui_agent_duplicated\": \"Pomyślnie zduplikowano agenta\",\n  \"com_ui_agent_editing_allowed\": \"Inni użytkownicy mogą już edytować tego agenta\",\n  \"com_ui_agents\": \"Agenci\",\n  \"com_ui_agents_allow_create\": \"Zezwól na tworzenie agentów\",\n  \"com_ui_agents_allow_share_global\": \"Zezwól na udostępnianie agentów wszystkim użytkownikom\",\n  \"com_ui_agents_allow_use\": \"Zezwól na używanie agentów\",\n  \"com_ui_all\": \"wszystkie\",\n  \"com_ui_all_proper\": \"Wszystkie\",\n  \"com_ui_archive\": \"Archiwum\",\n  \"com_ui_archive_error\": \"Nie udało się archiwizować rozmowy\",\n  \"com_ui_artifact_click\": \"Kliknij, aby otworzyć\",\n  \"com_ui_artifacts\": \"Artefakty\",\n  \"com_ui_artifacts_toggle\": \"Przełącz interfejs artefaktów\",\n  \"com_ui_ascending\": \"Rosnąco\",\n  \"com_ui_assistant\": \"Asystent\",\n  \"com_ui_assistant_delete_error\": \"Wystąpił błąd podczas usuwania asystenta\",\n  \"com_ui_assistant_deleted\": \"Pomyślnie usunięto asystenta\",\n  \"com_ui_assistants\": \"Asystenci\",\n  \"com_ui_assistants_output\": \"Wyjście asystentów\",\n  \"com_ui_attach_error\": \"Nie można dołączyć pliku. Utwórz lub wybierz konwersację lub spróbuj odświeżyć stronę.\",\n  \"com_ui_attach_error_openai\": \"Nie można dołączyć plików Asystenta do innych punktów końcowych\",\n  \"com_ui_attach_error_size\": \"Przekroczono limit rozmiaru pliku dla punktu końcowego:\",\n  \"com_ui_attach_error_type\": \"Nieobsługiwany typ pliku dla punktu końcowego:\",\n  \"com_ui_attach_warn_endpoint\": \"Pliki inne niż asystenta mogą być ignorowane bez kompatybilnego narzędzia\",\n  \"com_ui_attachment\": \"Załącznik\",\n  \"com_ui_authentication\": \"Uwierzytelnianie\",\n  \"com_ui_avatar\": \"Awatar\",\n  \"com_ui_back_to_chat\": \"Powrót do czatu\",\n  \"com_ui_back_to_prompts\": \"Powrót do promptów\",\n  \"com_ui_bookmark_delete_confirm\": \"Czy na pewno chcesz usunąć tę zakładkę?\",\n  \"com_ui_bookmarks\": \"Zakładki\",\n  \"com_ui_bookmarks_add\": \"Dodaj zakładki\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Dodaj do bieżącej rozmowy\",\n  \"com_ui_bookmarks_count\": \"Licznik\",\n  \"com_ui_bookmarks_create_error\": \"Wystąpił błąd podczas tworzenia zakładki\",\n  \"com_ui_bookmarks_create_exists\": \"Ta zakładka już istnieje\",\n  \"com_ui_bookmarks_create_success\": \"Zakładka została pomyślnie utworzona\",\n  \"com_ui_bookmarks_delete\": \"Usuń zakładkę\",\n  \"com_ui_bookmarks_delete_error\": \"Wystąpił błąd podczas usuwania zakładki\",\n  \"com_ui_bookmarks_delete_success\": \"Zakładka została pomyślnie usunięta\",\n  \"com_ui_bookmarks_description\": \"Opis\",\n  \"com_ui_bookmarks_edit\": \"Edytuj zakładkę\",\n  \"com_ui_bookmarks_filter\": \"Filtruj zakładki...\",\n  \"com_ui_bookmarks_new\": \"Nowa zakładka\",\n  \"com_ui_bookmarks_title\": \"Tytuł\",\n  \"com_ui_bookmarks_update_error\": \"Wystąpił błąd podczas aktualizacji zakładki\",\n  \"com_ui_bookmarks_update_success\": \"Zakładka została pomyślnie zaktualizowana\",\n  \"com_ui_bulk_delete_error\": \"Nie udało się usunąć udostępnionych linków\",\n  \"com_ui_cancel\": \"Anuluj\",\n  \"com_ui_chat\": \"Czat\",\n  \"com_ui_chat_history\": \"Historia czatu\",\n  \"com_ui_clear_all\": \"Wyczyść wszystko\",\n  \"com_ui_code\": \"Kod\",\n  \"com_ui_collapse_chat\": \"Zwiń czat\",\n  \"com_ui_command_placeholder\": \"Opcjonalnie: Wprowadź polecenie dla promptu lub użyj nazwy\",\n  \"com_ui_command_usage_placeholder\": \"Wybierz prompt według polecenia lub nazwy\",\n  \"com_ui_confirm_action\": \"Potwierdź działanie\",\n  \"com_ui_confirm_admin_use_change\": \"Zmiana tego ustawienia zablokuje dostęp dla administratorów, w tym Ciebie. Czy na pewno chcesz kontynuować?\",\n  \"com_ui_confirm_change\": \"Potwierdź zmianę\",\n  \"com_ui_context\": \"Kontekst\",\n  \"com_ui_continue\": \"Kontynuuj\",\n  \"com_ui_controls\": \"Kontrolki\",\n  \"com_ui_copied\": \"Skopiowano!\",\n  \"com_ui_copied_to_clipboard\": \"Skopiowano do schowka\",\n  \"com_ui_copy_code\": \"Kopiuj kod\",\n  \"com_ui_copy_link\": \"Skopiuj link\",\n  \"com_ui_copy_to_clipboard\": \"Kopiuj do schowka\",\n  \"com_ui_create\": \"Utwórz\",\n  \"com_ui_create_link\": \"Utwórz link\",\n  \"com_ui_create_prompt\": \"Utwórz prompt\",\n  \"com_ui_currently_production\": \"Aktualnie w produkcji\",\n  \"com_ui_custom_prompt_mode\": \"Tryb niestandardowego promptu\",\n  \"com_ui_dashboard\": \"Panel\",\n  \"com_ui_date\": \"Data\",\n  \"com_ui_date_april\": \"Kwiecień\",\n  \"com_ui_date_august\": \"Sierpień\",\n  \"com_ui_date_december\": \"Grudzień\",\n  \"com_ui_date_february\": \"Luty\",\n  \"com_ui_date_january\": \"Styczeń\",\n  \"com_ui_date_july\": \"Lipiec\",\n  \"com_ui_date_june\": \"Czerwiec\",\n  \"com_ui_date_march\": \"Marzec\",\n  \"com_ui_date_may\": \"Maj\",\n  \"com_ui_date_november\": \"Listopad\",\n  \"com_ui_date_october\": \"Październik\",\n  \"com_ui_date_previous_30_days\": \"Poprzednie 30 dni\",\n  \"com_ui_date_previous_7_days\": \"Poprzednie 7 dni\",\n  \"com_ui_date_september\": \"Wrzesień\",\n  \"com_ui_date_today\": \"Dzisiaj\",\n  \"com_ui_date_yesterday\": \"Wczoraj\",\n  \"com_ui_decline\": \"Nie akceptuję\",\n  \"com_ui_delete\": \"Usuń\",\n  \"com_ui_delete_action\": \"Usuń akcję\",\n  \"com_ui_delete_action_confirm\": \"Czy na pewno chcesz usunąć tę akcję?\",\n  \"com_ui_delete_agent_confirm\": \"Czy na pewno chcesz usunąć tego agenta?\",\n  \"com_ui_delete_assistant_confirm\": \"Czy na pewno chcesz usunąć tego Asystenta? Tej operacji nie można cofnąć.\",\n  \"com_ui_delete_confirm\": \"Spowoduje to usunięcie\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Spowoduje to usunięcie wybranej wersji dla \\\"{0}.\\\" Jeśli nie istnieją inne wersje, prompt zostanie usunięty.\",\n  \"com_ui_delete_conversation\": \"Usunąć czat?\",\n  \"com_ui_delete_prompt\": \"Usunąć prompt?\",\n  \"com_ui_delete_tool\": \"Usuń narzędzie\",\n  \"com_ui_delete_tool_confirm\": \"Czy na pewno chcesz usunąć to narzędzie?\",\n  \"com_ui_descending\": \"Malejąco\",\n  \"com_ui_description\": \"Opis\",\n  \"com_ui_description_placeholder\": \"Opcjonalnie: Wprowadź opis do wyświetlenia dla promptu\",\n  \"com_ui_download\": \"Pobierz\",\n  \"com_ui_download_artifact\": \"Pobierz artefakt\",\n  \"com_ui_download_error\": \"Błąd pobierania pliku. Plik mógł zostać usunięty.\",\n  \"com_ui_dropdown_variables\": \"Zmienne rozwijane:\",\n  \"com_ui_dropdown_variables_info\": \"Twórz własne menu rozwijane dla swoich promptów: `{{nazwa_zmiennej:opcja1|opcja2|opcja3}}`\",\n  \"com_ui_duplicate\": \"Duplikuj\",\n  \"com_ui_duplication_error\": \"Wystąpił błąd podczas duplikowania konwersacji\",\n  \"com_ui_duplication_processing\": \"Duplikowanie konwersacji...\",\n  \"com_ui_duplication_success\": \"Pomyślnie zduplikowano konwersację\",\n  \"com_ui_edit\": \"Edytuj\",\n  \"com_ui_endpoint\": \"Punkt końcowy\",\n  \"com_ui_endpoint_menu\": \"Menu punktu końcowego LLM\",\n  \"com_ui_endpoints_available\": \"Dostępne punkty końcowe\",\n  \"com_ui_enter\": \"Wprowadź\",\n  \"com_ui_enter_api_key\": \"Wprowadź klucz API\",\n  \"com_ui_enter_openapi_schema\": \"Wprowadź swoją schemę OpenAPI tutaj\",\n  \"com_ui_enter_var\": \"Wprowadź {0}\",\n  \"com_ui_error\": \"Błąd\",\n  \"com_ui_error_connection\": \"Błąd połączenia z serwerem, spróbuj odświeżyć stronę.\",\n  \"com_ui_error_save_admin_settings\": \"Wystąpił błąd podczas zapisywania ustawień administratora.\",\n  \"com_ui_examples\": \"Przykłady\",\n  \"com_ui_export_convo_modal\": \"Eksportuj okno rozmowy\",\n  \"com_ui_field_required\": \"To pole jest wymagane\",\n  \"com_ui_filter_prompts\": \"Filtruj prompty\",\n  \"com_ui_filter_prompts_name\": \"Filtruj prompty po nazwie\",\n  \"com_ui_fork\": \"Rozgałęź\",\n  \"com_ui_fork_all_target\": \"Dołącz wszystko do/z tego miejsca\",\n  \"com_ui_fork_branches\": \"Dołącz powiązane gałęzie\",\n  \"com_ui_fork_change_default\": \"Domyślna opcja rozgałęzienia\",\n  \"com_ui_fork_default\": \"Użyj domyślnej opcji rozgałęzienia\",\n  \"com_ui_fork_error\": \"Wystąpił błąd podczas rozgałęziania konwersacji\",\n  \"com_ui_fork_from_message\": \"Wybierz opcję rozgałęzienia\",\n  \"com_ui_fork_info_1\": \"Użyj tego ustawienia, aby rozgałęzić wiadomości z pożądanym zachowaniem.\",\n  \"com_ui_fork_info_2\": \"\\\"Rozgałęzianie\\\" odnosi się do tworzenia nowej rozmowy, która zaczyna/kończy się od określonych wiadomości w bieżącej rozmowie, tworząc kopię zgodnie z wybranymi opcjami.\",\n  \"com_ui_fork_info_3\": \"\\\"Wiadomość docelowa\\\" odnosi się do wiadomości, z której otwarto to okno, lub, jeśli zaznaczysz \\\"{0}\\\", do najnowszej wiadomości w rozmowie.\",\n  \"com_ui_fork_info_branches\": \"Ta opcja rozgałęzia widoczne wiadomości wraz z powiązanymi gałęziami; innymi słowy, bezpośrednią ścieżkę do wiadomości docelowej, włączając gałęzie wzdłuż ścieżki.\",\n  \"com_ui_fork_info_remember\": \"Zaznacz to, aby zapamiętać wybrane opcje do przyszłego użycia, ułatwiając szybsze rozgałęzianie rozmów według preferencji.\",\n  \"com_ui_fork_info_start\": \"Jeśli zaznaczone, rozgałęzianie rozpocznie się od tej wiadomości do najnowszej wiadomości w rozmowie, zgodnie z wybranym zachowaniem powyżej.\",\n  \"com_ui_fork_info_target\": \"Ta opcja rozgałęzia wszystkie wiadomości prowadzące do wiadomości docelowej, włączając jej sąsiadów; innymi słowy, wszystkie gałęzie wiadomości, niezależnie od tego, czy są widoczne czy wzdłuż tej samej ścieżki, są włączone.\",\n  \"com_ui_fork_info_visible\": \"Ta opcja rozgałęzia tylko widoczne wiadomości; innymi słowy, bezpośrednią ścieżkę do wiadomości docelowej, bez żadnych gałęzi.\",\n  \"com_ui_fork_processing\": \"Rozgałęzianie konwersacji...\",\n  \"com_ui_fork_remember\": \"Zapamiętaj\",\n  \"com_ui_fork_remember_checked\": \"Twój wybór zostanie zapamiętany po użyciu. Zmień to w dowolnym momencie w ustawieniach.\",\n  \"com_ui_fork_split_target\": \"Rozpocznij rozgałęzienie tutaj\",\n  \"com_ui_fork_split_target_setting\": \"Domyślnie rozpocznij rozgałęzienie od docelowej wiadomości\",\n  \"com_ui_fork_success\": \"Pomyślnie rozgałęziono konwersację\",\n  \"com_ui_fork_visible\": \"Tylko widoczne wiadomości\",\n  \"com_ui_go_to_conversation\": \"Przejdź do rozmowy\",\n  \"com_ui_happy_birthday\": \"To moje pierwsze urodziny!\",\n  \"com_ui_hide_qr\": \"Ukryj kod QR\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Generowanie obrazu\",\n  \"com_ui_import_conversation_error\": \"Wystąpił błąd podczas importowania konwersacji\",\n  \"com_ui_import_conversation_file_type_error\": \"Nieobsługiwany typ importu\",\n  \"com_ui_import_conversation_info\": \"Importuj konwersacje z pliku JSON\",\n  \"com_ui_import_conversation_success\": \"Konwersacje zostały pomyślnie zaimportowane\",\n  \"com_ui_include_shadcnui\": \"Dołącz instrukcje komponentów shadcn/ui\",\n  \"com_ui_input\": \"Wprowadź\",\n  \"com_ui_instructions\": \"Instrukcje\",\n  \"com_ui_latest_footer\": \"Każde AI dla wszystkich.\",\n  \"com_ui_latest_production_version\": \"Najnowsza wersja produkcyjna\",\n  \"com_ui_latest_version\": \"Najnowsza wersja\",\n  \"com_ui_librechat_code_api_key\": \"Uzyskaj klucz API interpretera kodu LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Bezpieczny. Wielojęzyczny. Pliki wejściowe/wyjściowe.\",\n  \"com_ui_librechat_code_api_title\": \"Uruchom kod AI\",\n  \"com_ui_llm_menu\": \"Menu LLM\",\n  \"com_ui_llms_available\": \"Dostępne LLM\",\n  \"com_ui_locked\": \"Zablokowane\",\n  \"com_ui_logo\": \"Logo {0}\",\n  \"com_ui_manage\": \"Zarządzaj\",\n  \"com_ui_max_tags\": \"Maksymalna dozwolona liczba to {0}, używane są najnowsze wartości.\",\n  \"com_ui_mention\": \"Wspomnij punkt końcowy, asystenta lub preset, aby szybko się przełączyć\",\n  \"com_ui_min_tags\": \"Nie można usunąć więcej wartości, wymagane minimum to {0}.\",\n  \"com_ui_model\": \"Model\",\n  \"com_ui_model_parameters\": \"Parametry modelu\",\n  \"com_ui_more_info\": \"Więcej informacji\",\n  \"com_ui_my_prompts\": \"Moje prompty\",\n  \"com_ui_name\": \"Nazwa\",\n  \"com_ui_new_chat\": \"Nowy czat\",\n  \"com_ui_next\": \"Następny\",\n  \"com_ui_no\": \"Nie\",\n  \"com_ui_no_bookmarks\": \"Wygląda na to, że nie masz jeszcze żadnych zakładek. Kliknij na czat i dodaj nową\",\n  \"com_ui_no_category\": \"Brak kategorii\",\n  \"com_ui_no_changes\": \"Brak zmian do aktualizacji\",\n  \"com_ui_no_terms_content\": \"Brak treści warunków użytkowania do wyświetlenia\",\n  \"com_ui_none_selected\": \"Nic nie wybrano\",\n  \"com_ui_nothing_found\": \"Nic nie znaleziono\",\n  \"com_ui_of\": \"z\",\n  \"com_ui_off\": \"Wyłączone\",\n  \"com_ui_on\": \"Włączone\",\n  \"com_ui_page\": \"Strona\",\n  \"com_ui_prev\": \"Poprzedni\",\n  \"com_ui_preview\": \"Podgląd\",\n  \"com_ui_privacy_policy\": \"Polityka prywatności\",\n  \"com_ui_privacy_policy_url\": \"URL polityki prywatności\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Ten prompt jest już udostępniony wszystkim użytkownikom\",\n  \"com_ui_prompt_name\": \"Nazwa promptu\",\n  \"com_ui_prompt_name_required\": \"Nazwa promptu jest wymagana\",\n  \"com_ui_prompt_preview_not_shared\": \"Autor nie zezwolił na współpracę dla tego promptu.\",\n  \"com_ui_prompt_text\": \"Tekst\",\n  \"com_ui_prompt_text_required\": \"Tekst jest wymagany\",\n  \"com_ui_prompt_update_error\": \"Wystąpił błąd podczas aktualizacji promptu\",\n  \"com_ui_prompts\": \"Prompty\",\n  \"com_ui_prompts_allow_create\": \"Zezwól na tworzenie promptów\",\n  \"com_ui_prompts_allow_share_global\": \"Zezwól na udostępnianie promptów wszystkim użytkownikom\",\n  \"com_ui_prompts_allow_use\": \"Zezwól na używanie promptów\",\n  \"com_ui_provider\": \"Dostawca\",\n  \"com_ui_read_aloud\": \"Przeczytaj na głos\",\n  \"com_ui_refresh_link\": \"Odśwież link\",\n  \"com_ui_regenerate\": \"Wygeneruj ponownie\",\n  \"com_ui_region\": \"Region\",\n  \"com_ui_rename\": \"Zmień nazwę\",\n  \"com_ui_rename_prompt\": \"Zmień nazwę promptu\",\n  \"com_ui_reset_var\": \"Resetuj {0}\",\n  \"com_ui_result\": \"Wynik\",\n  \"com_ui_revoke\": \"Odwołaj\",\n  \"com_ui_revoke_info\": \"Odwołaj wszystkie poświadczenia dostarczone przez użytkownika\",\n  \"com_ui_revoke_key_confirm\": \"Czy na pewno chcesz odwołać ten klucz?\",\n  \"com_ui_revoke_key_endpoint\": \"Odwołaj klucz dla {0}\",\n  \"com_ui_revoke_keys\": \"Odwołaj klucze\",\n  \"com_ui_revoke_keys_confirm\": \"Czy na pewno chcesz odwołać wszystkie klucze?\",\n  \"com_ui_role_select\": \"Rola\",\n  \"com_ui_run_code\": \"Uruchom kod\",\n  \"com_ui_run_code_error\": \"Wystąpił błąd podczas uruchamiania kodu\",\n  \"com_ui_save\": \"Zapisz\",\n  \"com_ui_save_submit\": \"Zapisz i wyślij\",\n  \"com_ui_saved\": \"Zapisano!\",\n  \"com_ui_schema\": \"Schema\",\n  \"com_ui_search\": \"Szukaj\",\n  \"com_ui_select\": \"Wybierz\",\n  \"com_ui_select_file\": \"Wybierz plik\",\n  \"com_ui_select_model\": \"Wybierz model\",\n  \"com_ui_select_provider\": \"Wybierz dostawcę\",\n  \"com_ui_select_provider_first\": \"Najpierw wybierz dostawcę\",\n  \"com_ui_select_region\": \"Wybierz region\",\n  \"com_ui_select_search_model\": \"Wyszukaj model po nazwie\",\n  \"com_ui_select_search_plugin\": \"Wyszukaj wtyczkę po nazwie\",\n  \"com_ui_select_search_provider\": \"Wyszukaj dostawcę po nazwie\",\n  \"com_ui_select_search_region\": \"Wyszukaj region po nazwie\",\n  \"com_ui_share\": \"Udostępnij\",\n  \"com_ui_share_create_message\": \"Twoje imię i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.\",\n  \"com_ui_share_delete_error\": \"Wystąpił błąd podczas usuwania udostępnionego linku.\",\n  \"com_ui_share_error\": \"Wystąpił błąd podczas udostępniania linku do czatu\",\n  \"com_ui_share_link_to_chat\": \"Udostępnij link w czacie\",\n  \"com_ui_share_to_all_users\": \"Udostępnij wszystkim użytkownikom\",\n  \"com_ui_share_update_message\": \"Twoje imię, niestandardowe instrukcje i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.\",\n  \"com_ui_share_var\": \"Udostępnij {0}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Pomyślnie usunięto udostępnione linki\",\n  \"com_ui_shared_link_delete_success\": \"Pomyślnie usunięto udostępniony link\",\n  \"com_ui_shared_link_not_found\": \"Nie znaleziono linku udostępnionego\",\n  \"com_ui_shared_prompts\": \"Udostępnione prompty\",\n  \"com_ui_show_all\": \"Pokaż wszystko\",\n  \"com_ui_show_qr\": \"Pokaż kod QR\",\n  \"com_ui_simple\": \"Prosty\",\n  \"com_ui_size\": \"Rozmiar\",\n  \"com_ui_special_variables\": \"Zmienne specjalne:\",\n  \"com_ui_special_variables_info\": \"Użyj `{{current_date}}` dla aktualnej daty i `{{current_user}}` dla swojej nazwy konta.\",\n  \"com_ui_speech_while_submitting\": \"Nie można przesłać mowy podczas generowania odpowiedzi\",\n  \"com_ui_storage\": \"Przechowywanie\",\n  \"com_ui_submit\": \"Wyślij\",\n  \"com_ui_terms_and_conditions\": \"Warunki użytkowania\",\n  \"com_ui_terms_of_service\": \"Warunki korzystania z usługi\",\n  \"com_ui_thinking\": \"Myślenie...\",\n  \"com_ui_thoughts\": \"Przemyślenia\",\n  \"com_ui_tools\": \"Narzędzia\",\n  \"com_ui_unarchive\": \"Przywróć z archiwum\",\n  \"com_ui_unarchive_error\": \"Nie udało się odtworzyć rozmowy z archiwum\",\n  \"com_ui_unknown\": \"Nieznany\",\n  \"com_ui_update\": \"Aktualizuj\",\n  \"com_ui_upload\": \"Prześlij\",\n  \"com_ui_upload_code_files\": \"Prześlij do interpretera kodu\",\n  \"com_ui_upload_delay\": \"Przesyłanie \\\"{0}\\\" trwa dłużej niż przewidywano. Proszę poczekać, aż plik zakończy indeksowanie do pobrania.\",\n  \"com_ui_upload_error\": \"Wystąpił błąd podczas przesyłania pliku\",\n  \"com_ui_upload_file_search\": \"Prześlij do wyszukiwania plików\",\n  \"com_ui_upload_files\": \"Prześlij pliki\",\n  \"com_ui_upload_image\": \"Prześlij obraz\",\n  \"com_ui_upload_image_input\": \"Prześlij obraz\",\n  \"com_ui_upload_invalid\": \"Nieprawidłowy plik do przesłania. Musi być obrazem nieprzekraczającym limitu\",\n  \"com_ui_upload_invalid_var\": \"Nieprawidłowy plik do przesłania. Musi być obrazem nieprzekraczającym {0} MB\",\n  \"com_ui_upload_success\": \"Pomyślnie przesłano plik\",\n  \"com_ui_upload_type\": \"Wybierz typ przesyłania\",\n  \"com_ui_use_micrphone\": \"Użyj mikrofonu\",\n  \"com_ui_use_prompt\": \"Użyj podpowiedzi\",\n  \"com_ui_variables\": \"Zmienne\",\n  \"com_ui_variables_info\": \"Użyj podwójnych nawiasów klamrowych w tekście, aby utworzyć zmienne, np. `{{przykładowa zmienna}}`, które później można wypełnić podczas używania promptu.\",\n  \"com_ui_version_var\": \"Wersja {0}\",\n  \"com_ui_versions\": \"Wersje\",\n  \"com_ui_view_source\": \"Zobacz źródłowy czat\",\n  \"com_ui_yes\": \"Tak\",\n  \"com_ui_zoom\": \"Powiększ\",\n  \"com_user_message\": \"Ty\",\n  \"com_warning_resubmit_unsupported\": \"Ponowne przesyłanie wiadomości AI nie jest obsługiwane dla tego punktu końcowego.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/pt-BR/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"A IA ainda está compondo.\",\n  \"com_a11y_end\": \"A IA terminou de responder.\",\n  \"com_a11y_start\": \"A IA começou a responder.\",\n  \"com_agents_create_error\": \"Houve um erro ao criar seu agente.\",\n  \"com_agents_description_placeholder\": \"Opcional: Descreva seu Agente aqui\",\n  \"com_agents_instructions_placeholder\": \"As instruções do sistema que o agente usa\",\n  \"com_agents_name_placeholder\": \"Opcional: O nome do agente\",\n  \"com_agents_search_name\": \"Pesquisar agentes por nome\",\n  \"com_agents_update_error\": \"Houve um erro ao atualizar seu agente.\",\n  \"com_assistants_actions\": \"Ações\",\n  \"com_assistants_actions_disabled\": \"Você precisa criar um assistente antes de adicionar ações.\",\n  \"com_assistants_actions_info\": \"Permita que seu Assistente recupere informações ou execute ações via API's\",\n  \"com_assistants_add_actions\": \"Adicionar Ações\",\n  \"com_assistants_add_tools\": \"Adicionar Ferramentas\",\n  \"com_assistants_append_date\": \"Anexar Data e Hora Atual\",\n  \"com_assistants_append_date_tooltip\": \"Quando ativado, a data e hora atual do cliente serão anexadas às instruções do sistema do assistente.\",\n  \"com_assistants_available_actions\": \"Ações Disponíveis\",\n  \"com_assistants_capabilities\": \"Capacidades\",\n  \"com_assistants_code_interpreter\": \"Interpretador de Código\",\n  \"com_assistants_code_interpreter_files\": \"Os arquivos abaixo são apenas para o Interpretador de Código:\",\n  \"com_assistants_code_interpreter_info\": \"O Interpretador de Código permite que o assistente escreva e execute código. Esta ferramenta pode processar arquivos com dados e formatações diversas, e gerar arquivos como gráficos.\",\n  \"com_assistants_completed_action\": \"Conversou com {{0}}\",\n  \"com_assistants_completed_function\": \"Executou {{0}}\",\n  \"com_assistants_conversation_starters\": \"Iniciadores de Conversa\",\n  \"com_assistants_conversation_starters_placeholder\": \"Digite um iniciador de conversa\",\n  \"com_assistants_create_error\": \"Houve um erro ao criar seu assistente.\",\n  \"com_assistants_create_success\": \"Criado com sucesso\",\n  \"com_assistants_delete_actions_error\": \"Houve um erro ao excluir a ação.\",\n  \"com_assistants_delete_actions_success\": \"Ação excluída com sucesso do Assistente\",\n  \"com_assistants_description_placeholder\": \"Opcional: Descreva seu Assistente aqui\",\n  \"com_assistants_domain_info\": \"Assistente enviou esta informação para {{0}}\",\n  \"com_assistants_file_search\": \"Pesquisa de Arquivos\",\n  \"com_assistants_file_search_info\": \"A pesquisa de arquivos permite que o assistente tenha conhecimento dos arquivos que você ou seus usuários carregam. Uma vez que um arquivo é carregado, o assistente decide automaticamente quando recuperar o conteúdo com base nas solicitações do usuário. Anexar armazenamentos vetoriais para Pesquisa de Arquivos ainda não é suportado. Você pode anexá-los no Playground do Provedor ou anexar arquivos às mensagens para pesquisa de arquivos em uma base de thread.\",\n  \"com_assistants_function_use\": \"Assistente usou {{0}}\",\n  \"com_assistants_image_vision\": \"Visão de Imagem\",\n  \"com_assistants_instructions_placeholder\": \"As instruções do sistema que o assistente usa\",\n  \"com_assistants_knowledge\": \"Conhecimento\",\n  \"com_assistants_knowledge_disabled\": \"O assistente deve ser criado, e o Interpretador de Código ou Recuperação deve ser habilitado e salvo antes de carregar arquivos como Conhecimento.\",\n  \"com_assistants_knowledge_info\": \"Se você carregar arquivos em Conhecimento, as conversas com seu Assistente podem incluir o conteúdo dos arquivos.\",\n  \"com_assistants_max_starters_reached\": \"Número máximo de iniciadores de conversa atingido\",\n  \"com_assistants_name_placeholder\": \"Opcional: O nome do assistente\",\n  \"com_assistants_non_retrieval_model\": \"A pesquisa de arquivos não está habilitada neste modelo. Por favor, selecione outro modelo.\",\n  \"com_assistants_retrieval\": \"Recuperação\",\n  \"com_assistants_running_action\": \"Executando ação\",\n  \"com_assistants_search_name\": \"Pesquisar assistentes por nome\",\n  \"com_assistants_update_actions_error\": \"Houve um erro ao criar ou atualizar a ação.\",\n  \"com_assistants_update_actions_success\": \"Ação criada ou atualizada com sucesso\",\n  \"com_assistants_update_error\": \"Houve um erro ao atualizar seu assistente.\",\n  \"com_assistants_update_success\": \"Atualizado com sucesso\",\n  \"com_auth_already_have_account\": \"Já tem uma conta?\",\n  \"com_auth_back_to_login\": \"Voltar para Login\",\n  \"com_auth_click\": \"Clique\",\n  \"com_auth_click_here\": \"Clique aqui\",\n  \"com_auth_continue\": \"Continuar\",\n  \"com_auth_create_account\": \"Criar sua conta\",\n  \"com_auth_discord_login\": \"Continuar com Discord\",\n  \"com_auth_email\": \"E-mail\",\n  \"com_auth_email_address\": \"Endereço de e-mail\",\n  \"com_auth_email_max_length\": \"O e-mail não deve ter mais de 120 caracteres\",\n  \"com_auth_email_min_length\": \"O e-mail deve ter pelo menos 6 caracteres\",\n  \"com_auth_email_pattern\": \"Você deve inserir um endereço de e-mail válido\",\n  \"com_auth_email_required\": \"E-mail é obrigatório\",\n  \"com_auth_email_resend_link\": \"Reenviar E-mail\",\n  \"com_auth_email_resent_failed\": \"Falha ao reenviar e-mail de verificação\",\n  \"com_auth_email_resent_success\": \"E-mail de verificação reenviado com sucesso\",\n  \"com_auth_email_verification_failed\": \"Falha na verificação de e-mail\",\n  \"com_auth_email_verification_failed_token_missing\": \"Falha na verificação, token ausente\",\n  \"com_auth_email_verification_in_progress\": \"Verificando seu e-mail, por favor, aguarde\",\n  \"com_auth_email_verification_invalid\": \"Verificação de e-mail inválida\",\n  \"com_auth_email_verification_redirecting\": \"Redirecionando em {{0}} segundos...\",\n  \"com_auth_email_verification_resend_prompt\": \"Não recebeu o e-mail?\",\n  \"com_auth_email_verification_success\": \"E-mail verificado com sucesso\",\n  \"com_auth_error_create\": \"Houve um erro ao tentar registrar sua conta. Por favor, tente novamente.\",\n  \"com_auth_error_invalid_reset_token\": \"Este token de redefinição de senha não é mais válido.\",\n  \"com_auth_error_login\": \"Não foi possível fazer login com as informações fornecidas. Por favor, verifique suas credenciais e tente novamente.\",\n  \"com_auth_error_login_ban\": \"Sua conta foi temporariamente banida devido a violações do nosso serviço.\",\n  \"com_auth_error_login_rl\": \"Muitas tentativas de login em um curto período de tempo. Por favor, tente novamente mais tarde.\",\n  \"com_auth_error_login_server\": \"Houve um erro interno no servidor. Por favor, aguarde alguns momentos e tente novamente.\",\n  \"com_auth_error_login_unverified\": \"Sua conta não foi verificada. Por favor, verifique seu e-mail para um link de verificação.\",\n  \"com_auth_facebook_login\": \"Continuar com Facebook\",\n  \"com_auth_full_name\": \"Nome completo\",\n  \"com_auth_github_login\": \"Continuar com Github\",\n  \"com_auth_google_login\": \"Continuar com Google\",\n  \"com_auth_here\": \"AQUI\",\n  \"com_auth_login\": \"Entrar\",\n  \"com_auth_login_with_new_password\": \"Agora você pode fazer login com sua nova senha.\",\n  \"com_auth_name_max_length\": \"O nome deve ter menos de 80 caracteres\",\n  \"com_auth_name_min_length\": \"O nome deve ter pelo menos 3 caracteres\",\n  \"com_auth_name_required\": \"Nome é obrigatório\",\n  \"com_auth_no_account\": \"Não tem uma conta?\",\n  \"com_auth_password\": \"Senha\",\n  \"com_auth_password_confirm\": \"Confirmar senha\",\n  \"com_auth_password_forgot\": \"Esqueceu a senha?\",\n  \"com_auth_password_max_length\": \"A senha deve ter menos de 128 caracteres\",\n  \"com_auth_password_min_length\": \"A senha deve ter pelo menos 8 caracteres\",\n  \"com_auth_password_not_match\": \"As senhas não coincidem\",\n  \"com_auth_password_required\": \"Senha é obrigatória\",\n  \"com_auth_registration_success_generic\": \"Por favor, verifique seu e-mail para verificar seu endereço de e-mail.\",\n  \"com_auth_registration_success_insecure\": \"Registro bem-sucedido.\",\n  \"com_auth_reset_password\": \"Redefinir sua senha\",\n  \"com_auth_reset_password_if_email_exists\": \"Se uma conta com esse e-mail existir, um e-mail com instruções para redefinir a senha foi enviado. Certifique-se de verificar sua pasta de spam.\",\n  \"com_auth_reset_password_link_sent\": \"E-mail enviado\",\n  \"com_auth_reset_password_success\": \"Senha redefinida com sucesso\",\n  \"com_auth_sign_in\": \"Entrar\",\n  \"com_auth_sign_up\": \"Inscrever-se\",\n  \"com_auth_submit_registration\": \"Enviar registro\",\n  \"com_auth_to_reset_your_password\": \"para redefinir sua senha.\",\n  \"com_auth_to_try_again\": \"para tentar novamente.\",\n  \"com_auth_username\": \"Nome de usuário (opcional)\",\n  \"com_auth_username_max_length\": \"O nome de usuário deve ter menos de 20 caracteres\",\n  \"com_auth_username_min_length\": \"O nome de usuário deve ter pelo menos 2 caracteres\",\n  \"com_auth_welcome_back\": \"Bem-vindo de volta\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agente\",\n  \"com_endpoint_agent_model\": \"Modelo de Agente (Recomendado: GPT-3.5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Número máximo de tokens que podem ser gerados na resposta. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. Nota: os modelos podem parar antes de atingir esse máximo.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"O cache de prompt permite reutilizar um grande contexto ou instruções em chamadas de API, reduzindo custos e latência\",\n  \"com_endpoint_anthropic_temp\": \"Varia de 0 a 1. Use temperatura mais próxima de 0 para tarefas analíticas / de múltipla escolha, e mais próxima de 1 para tarefas criativas e generativas. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k altera como o modelo seleciona tokens para saída. Um top-k de 1 significa que o token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-k de 3 significa que o próximo token é selecionado entre os 3 tokens mais prováveis (usando temperatura).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p altera como o modelo seleciona tokens para saída. Os tokens são selecionados dos mais prováveis (veja o parâmetro topK) até os menos prováveis até que a soma de suas probabilidades atinja o valor top-p.\",\n  \"com_endpoint_assistant\": \"Assistente\",\n  \"com_endpoint_assistant_model\": \"Modelo de Assistente\",\n  \"com_endpoint_assistant_placeholder\": \"Por favor, selecione um Assistente no Painel Lateral Direito\",\n  \"com_endpoint_completion\": \"Conclusão\",\n  \"com_endpoint_completion_model\": \"Modelo de Conclusão (Recomendado: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Clique Aqui\",\n  \"com_endpoint_config_google_api_info\": \"Para obter sua chave API de Linguagem Generativa (para Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Chave API do Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(do Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Chave de Conta de Serviço do Google\",\n  \"com_endpoint_config_key\": \"Definir Chave API\",\n  \"com_endpoint_config_key_encryption\": \"Sua chave será criptografada e excluída em\",\n  \"com_endpoint_config_key_for\": \"Definir Chave API para\",\n  \"com_endpoint_config_key_google_need_to\": \"Você precisa\",\n  \"com_endpoint_config_key_google_service_account\": \"Criar uma Conta de Serviço\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Habilitar Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API no Google Cloud, então\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Certifique-se de clicar em \\\"Criar e Continuar\\\" para dar pelo menos o papel de \\\"Usuário do Vertex AI\\\". Por fim, crie uma chave JSON para importar aqui.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importar Chave JSON da Conta de Serviço.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Chave JSON da Conta de Serviço Inválida, Você importou o arquivo correto?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Chave JSON da Conta de Serviço Importada com Sucesso\",\n  \"com_endpoint_config_key_name\": \"Chave\",\n  \"com_endpoint_config_key_never_expires\": \"Sua chave nunca expira\",\n  \"com_endpoint_config_placeholder\": \"Defina sua Chave no menu do Cabeçalho para conversar.\",\n  \"com_endpoint_config_value\": \"Insira o valor para\",\n  \"com_endpoint_context\": \"Contexto\",\n  \"com_endpoint_context_info\": \"O número máximo de tokens que podem ser usados para contexto. Use isso para controlar quantos tokens são enviados por solicitação. Se não especificado, usará os padrões do sistema com base no tamanho do contexto dos modelos conhecidos. Definir valores mais altos pode resultar em erros e/ou maior custo de tokens.\",\n  \"com_endpoint_context_tokens\": \"Máximo de Tokens de Contexto\",\n  \"com_endpoint_custom_name\": \"Nome Personalizado\",\n  \"com_endpoint_default\": \"padrão\",\n  \"com_endpoint_default_blank\": \"padrão: em branco\",\n  \"com_endpoint_default_empty\": \"padrão: vazio\",\n  \"com_endpoint_default_with_num\": \"padrão: {{0}}\",\n  \"com_endpoint_examples\": \"Presets\",\n  \"com_endpoint_export\": \"Exportar\",\n  \"com_endpoint_export_share\": \"Exportar/Compartilhar\",\n  \"com_endpoint_frequency_penalty\": \"Penalidade de Frequência\",\n  \"com_endpoint_func_hover\": \"Habilitar uso de Plugins como Funções OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Defina um nome personalizado para o Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Número máximo de tokens que podem ser gerados na resposta. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. Nota: os modelos podem parar antes de atingir esse máximo.\",\n  \"com_endpoint_google_temp\": \"Valores mais altos = mais aleatório, enquanto valores mais baixos = mais focado e determinístico. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_google_topk\": \"Top-k altera como o modelo seleciona tokens para saída. Um top-k de 1 significa que o token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-k de 3 significa que o próximo token é selecionado entre os 3 tokens mais prováveis (usando temperatura).\",\n  \"com_endpoint_google_topp\": \"Top-p altera como o modelo seleciona tokens para saída. Os tokens são selecionados dos mais prováveis (veja o parâmetro topK) até os menos prováveis até que a soma de suas probabilidades atinja o valor top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Substituir Instruções\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Substitui as instruções do assistente. Isso é útil para modificar o comportamento em uma base por execução.\",\n  \"com_endpoint_max_output_tokens\": \"Máximo de Tokens de Saída\",\n  \"com_endpoint_message\": \"Mensagem\",\n  \"com_endpoint_message_not_appendable\": \"Edite sua mensagem ou Regenerar.\",\n  \"com_endpoint_my_preset\": \"Meu Preset\",\n  \"com_endpoint_no_presets\": \"Ainda não há presets, use o botão de configurações para criar um\",\n  \"com_endpoint_open_menu\": \"Abrir Menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Defina um nome personalizado para a IA\",\n  \"com_endpoint_openai_detail\": \"A resolução para solicitações de Visão. \\\"Baixa\\\" é mais barata e rápida, \\\"Alta\\\" é mais detalhada e cara, e \\\"Auto\\\" escolherá automaticamente entre as duas com base na resolução da imagem.\",\n  \"com_endpoint_openai_freq\": \"Número entre -2.0 e 2.0. Valores positivos penalizam novos tokens com base em sua frequência existente no texto até agora, diminuindo a probabilidade do modelo de repetir a mesma linha literalmente.\",\n  \"com_endpoint_openai_max\": \"O máximo de tokens para gerar. O comprimento total dos tokens de entrada e dos tokens gerados é limitado pelo comprimento do contexto do modelo.\",\n  \"com_endpoint_openai_max_tokens\": \"Campo opcional `max_tokens`, representando o número máximo de tokens que podem ser gerados na conclusão do chat. O comprimento total dos tokens de entrada e dos tokens gerados é limitado pelo comprimento do contexto dos modelos. Você pode experimentar erros se esse número exceder o máximo de tokens de contexto.\",\n  \"com_endpoint_openai_pres\": \"Número entre -2.0 e 2.0. Valores positivos penalizam novos tokens com base em sua presença no texto até agora, aumentando a probabilidade do modelo de falar sobre novos tópicos.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhuma\",\n  \"com_endpoint_openai_resend\": \"Reenviar todas as imagens anexadas anteriormente. Nota: isso pode aumentar significativamente o custo de tokens e você pode experimentar erros com muitos anexos de imagem.\",\n  \"com_endpoint_openai_resend_files\": \"Reenviar todos os arquivos anexados anteriormente. Nota: isso aumentará o custo de tokens e você pode experimentar erros com muitos anexos.\",\n  \"com_endpoint_openai_stop\": \"Até 4 sequências onde a API parará de gerar mais tokens.\",\n  \"com_endpoint_openai_temp\": \"Valores mais altos = mais aleatório, enquanto valores mais baixos = mais focado e determinístico. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_openai_topp\": \"Uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, onde o modelo considera os resultados dos tokens com massa de probabilidade top_p. Então, 0.1 significa que apenas os tokens que compreendem os 10% principais da massa de probabilidade são considerados. Recomendamos alterar isso ou a temperatura, mas não ambos.\",\n  \"com_endpoint_output\": \"Saída\",\n  \"com_endpoint_plug_image_detail\": \"Detalhe da Imagem\",\n  \"com_endpoint_plug_resend_files\": \"Reenviar Arquivos\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhuma\",\n  \"com_endpoint_plug_skip_completion\": \"Pular Conclusão\",\n  \"com_endpoint_plug_use_functions\": \"Usar Funções\",\n  \"com_endpoint_presence_penalty\": \"Penalidade de Presença\",\n  \"com_endpoint_preset\": \"preset\",\n  \"com_endpoint_preset_default\": \"é agora o preset padrão.\",\n  \"com_endpoint_preset_default_item\": \"Padrão:\",\n  \"com_endpoint_preset_default_none\": \"Nenhum preset padrão ativo.\",\n  \"com_endpoint_preset_default_removed\": \"não é mais o preset padrão.\",\n  \"com_endpoint_preset_delete_confirm\": \"Tem certeza de que deseja excluir este preset?\",\n  \"com_endpoint_preset_delete_error\": \"Houve um erro ao excluir seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_import\": \"Preset Importado!\",\n  \"com_endpoint_preset_import_error\": \"Houve um erro ao importar seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_name\": \"Nome do Preset\",\n  \"com_endpoint_preset_save_error\": \"Houve um erro ao salvar seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_selected\": \"Preset Ativo!\",\n  \"com_endpoint_preset_selected_title\": \"Ativo!\",\n  \"com_endpoint_preset_title\": \"Preset\",\n  \"com_endpoint_presets\": \"presets\",\n  \"com_endpoint_presets_clear_warning\": \"Tem certeza de que deseja limpar todos os presets? Isso é irreversível.\",\n  \"com_endpoint_prompt_cache\": \"Usar Cache de Prompt\",\n  \"com_endpoint_prompt_prefix\": \"Instruções Personalizadas\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Instruções Adicionais\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Defina instruções ou contexto adicionais além das instruções principais do Assistente. Ignorado se vazio.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Defina instruções ou contexto personalizados. Ignorado se vazio.\",\n  \"com_endpoint_save_as_preset\": \"Salvar Como Preset\",\n  \"com_endpoint_set_custom_name\": \"Defina um nome personalizado, caso você possa encontrar este preset\",\n  \"com_endpoint_skip_hover\": \"Habilitar pular a etapa de conclusão, que revisa a resposta final e os passos gerados\",\n  \"com_endpoint_stop\": \"Sequências de Parada\",\n  \"com_endpoint_stop_placeholder\": \"Separe os valores pressionando `Enter`\",\n  \"com_endpoint_temperature\": \"Temperatura\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Usar Assistente Ativo\",\n  \"com_error_expired_user_key\": \"A chave fornecida para {{0}} expirou em {{1}}. Por favor, forneça uma nova chave e tente novamente.\",\n  \"com_error_input_length\": \"A contagem de tokens da última mensagem é muito longa, excedendo o limite de tokens ({{0}} respectivamente). Por favor, encurte sua mensagem, ajuste o tamanho máximo do contexto nos parâmetros da conversa ou divida a conversa para continuar.\",\n  \"com_error_invalid_user_key\": \"Chave fornecida inválida. Por favor, forneça uma chave válida e tente novamente.\",\n  \"com_error_moderation\": \"Parece que o conteúdo enviado foi sinalizado pelo nosso sistema de moderação por não estar alinhado com nossas diretrizes da comunidade. Não podemos prosseguir com este tópico específico. Se você tiver outras perguntas ou tópicos que gostaria de explorar, edite sua mensagem ou crie uma nova conversa.\",\n  \"com_error_no_base_url\": \"Nenhuma URL base encontrada. Por favor, forneça uma e tente novamente.\",\n  \"com_error_no_user_key\": \"Nenhuma chave encontrada. Por favor, forneça uma chave e tente novamente.\",\n  \"com_files_filter\": \"Filtrar arquivos...\",\n  \"com_files_no_results\": \"Nenhum resultado.\",\n  \"com_files_number_selected\": \"{{0}} de {{1}} arquivo(s) selecionado(s)\",\n  \"com_hide_examples\": \"Ocultar Exemplos\",\n  \"com_nav_account_settings\": \"Configurações da Conta\",\n  \"com_nav_always_make_prod\": \"Sempre tornar novas versões produção\",\n  \"com_nav_archive_created_at\": \"Data de Arquivamento\",\n  \"com_nav_archive_name\": \"Nome\",\n  \"com_nav_archived_chats\": \"Chats Arquivados\",\n  \"com_nav_archived_chats_empty\": \"Você não tem conversas arquivadas.\",\n  \"com_nav_at_command\": \"Comando @\",\n  \"com_nav_at_command_description\": \"Alternar comando \\\"@\\\" para alternar endpoints, modelos, predefinições, etc.\",\n  \"com_nav_audio_play_error\": \"Erro ao reproduzir áudio: {{0}}\",\n  \"com_nav_audio_process_error\": \"Erro ao processar áudio: {{0}}\",\n  \"com_nav_auto_scroll\": \"Rolagem Automática para a última mensagem ao abrir o chat\",\n  \"com_nav_auto_send_prompts\": \"Enviar prompts automaticamente\",\n  \"com_nav_auto_send_text\": \"Enviar texto automaticamente\",\n  \"com_nav_auto_send_text_disabled\": \"definir -1 para desativar\",\n  \"com_nav_auto_transcribe_audio\": \"Transcrever áudio automaticamente\",\n  \"com_nav_automatic_playback\": \"Reprodução Automática da Última Mensagem\",\n  \"com_nav_balance\": \"Equilíbrio\",\n  \"com_nav_browser\": \"Navegador\",\n  \"com_nav_buffer_append_error\": \"Problema com o streaming de áudio. A reprodução pode ser interrompida.\",\n  \"com_nav_change_picture\": \"Mudar foto\",\n  \"com_nav_chat_direction\": \"Direção do chat\",\n  \"com_nav_clear_all_chats\": \"Limpar todos os chats\",\n  \"com_nav_clear_conversation\": \"Limpar conversas\",\n  \"com_nav_clear_conversation_confirm_message\": \"Tem certeza de que deseja limpar todas as conversas? Isso é irreversível.\",\n  \"com_nav_close_sidebar\": \"Fechar barra lateral\",\n  \"com_nav_commands\": \"Comandos\",\n  \"com_nav_confirm_clear\": \"Confirmar Limpeza\",\n  \"com_nav_conversation_mode\": \"Modo de Conversa\",\n  \"com_nav_convo_menu_options\": \"Opções do Menu de Conversa\",\n  \"com_nav_db_sensitivity\": \"Sensibilidade de decibéis\",\n  \"com_nav_delete_account\": \"Excluir conta\",\n  \"com_nav_delete_account_button\": \"Excluir minha conta permanentemente\",\n  \"com_nav_delete_account_confirm\": \"Excluir conta - você tem certeza?\",\n  \"com_nav_delete_account_email_placeholder\": \"Por favor, insira o e-mail da sua conta\",\n  \"com_nav_delete_cache_storage\": \"Excluir armazenamento de cache TTS\",\n  \"com_nav_delete_data_info\": \"Todos os seus dados serão excluídos.\",\n  \"com_nav_delete_warning\": \"AVISO: Isso excluirá permanentemente sua conta.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Habilitar cache TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Usar vozes baseadas na nuvem\",\n  \"com_nav_enabled\": \"Habilitado\",\n  \"com_nav_engine\": \"Motor\",\n  \"com_nav_enter_to_send\": \"Pressione Enter para enviar mensagens\",\n  \"com_nav_export\": \"Exportar\",\n  \"com_nav_export_all_message_branches\": \"Exportar todos os ramos de mensagens\",\n  \"com_nav_export_conversation\": \"Exportar conversa\",\n  \"com_nav_export_filename\": \"Nome do arquivo\",\n  \"com_nav_export_filename_placeholder\": \"Definir o nome do arquivo\",\n  \"com_nav_export_include_endpoint_options\": \"Incluir opções de endpoint\",\n  \"com_nav_export_recursive\": \"Recursivo\",\n  \"com_nav_export_recursive_or_sequential\": \"Recursivo ou sequencial?\",\n  \"com_nav_export_type\": \"Tipo\",\n  \"com_nav_external\": \"Externo\",\n  \"com_nav_font_size\": \"Tamanho da Fonte da Mensagem\",\n  \"com_nav_font_size_base\": \"Médio\",\n  \"com_nav_font_size_lg\": \"Grande\",\n  \"com_nav_font_size_sm\": \"Pequeno\",\n  \"com_nav_font_size_xl\": \"Extra Grande\",\n  \"com_nav_font_size_xs\": \"Extra Pequeno\",\n  \"com_nav_help_faq\": \"Ajuda & FAQ\",\n  \"com_nav_hide_panel\": \"Ocultar painel mais à direita\",\n  \"com_nav_info_code_artifacts\": \"Habilita a exibição de artefatos de código experimental ao lado do chat\",\n  \"com_nav_info_custom_prompt_mode\": \"Quando habilitado, o prompt padrão do sistema de artefatos não será incluído. Todas as instruções de geração de artefatos devem ser fornecidas manualmente neste modo.\",\n  \"com_nav_info_enter_to_send\": \"Quando habilitado, pressionar `ENTER` enviará sua mensagem. Quando desabilitado, pressionar Enter adicionará uma nova linha, e você precisará pressionar `CTRL + ENTER` / `⌘ + ENTER` para enviar sua mensagem.\",\n  \"com_nav_info_fork_change_default\": \"`Apenas mensagens visíveis` inclui apenas o caminho direto para a mensagem selecionada. `Incluir ramos relacionados` adiciona ramos ao longo do caminho. `Incluir tudo de/para aqui` inclui todas as mensagens e ramos conectados.\",\n  \"com_nav_info_fork_split_target_setting\": \"Quando habilitado, a bifurcação começará da mensagem alvo até a última mensagem na conversa, de acordo com o comportamento selecionado.\",\n  \"com_nav_info_include_shadcnui\": \"Quando habilitado, as instruções para usar componentes shadcn/ui serão incluídas. shadcn/ui é uma coleção de componentes reutilizáveis construídos usando Radix UI e Tailwind CSS. Nota: estas são instruções longas, você deve habilitar apenas se for importante informar o LLM sobre as importações e componentes corretos. Para mais informações sobre esses componentes, visite: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Quando habilitado, o código LaTeX nas mensagens será renderizado como equações matemáticas. Desabilitar isso pode melhorar o desempenho se você não precisar de renderização LaTeX.\",\n  \"com_nav_info_save_draft\": \"Quando habilitado, o texto e os anexos que você inserir no formulário de chat serão salvos automaticamente localmente como rascunhos. Esses rascunhos estarão disponíveis mesmo se você recarregar a página ou mudar para uma conversa diferente. Os rascunhos são armazenados localmente no seu dispositivo e são excluídos uma vez que a mensagem é enviada.\",\n  \"com_nav_info_user_name_display\": \"Quando habilitado, o nome de usuário do remetente será mostrado acima de cada mensagem que você enviar. Quando desabilitado, você verá apenas \\\"Você\\\" acima de suas mensagens.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Detecção automática\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Idioma\",\n  \"com_nav_latex_parsing\": \"Análise de LaTeX em mensagens (pode afetar o desempenho)\",\n  \"com_nav_log_out\": \"Sair\",\n  \"com_nav_long_audio_warning\": \"Textos mais longos levarão mais tempo para processar.\",\n  \"com_nav_modular_chat\": \"Habilitar troca de Endpoints no meio da conversa\",\n  \"com_nav_my_files\": \"Meus Arquivos\",\n  \"com_nav_not_supported\": \"Não Suportado\",\n  \"com_nav_open_sidebar\": \"Abrir barra lateral\",\n  \"com_nav_playback_rate\": \"Taxa de Reprodução de Áudio\",\n  \"com_nav_plugin_auth_error\": \"Houve um erro ao tentar autenticar este plugin. Por favor, tente novamente.\",\n  \"com_nav_plugin_install\": \"Instalar\",\n  \"com_nav_plugin_search\": \"Buscar plugins\",\n  \"com_nav_plugin_store\": \"Loja de Plugins\",\n  \"com_nav_plugin_uninstall\": \"Desinstalar\",\n  \"com_nav_plus_command\": \"Comando +\",\n  \"com_nav_plus_command_description\": \"Alternar comando \\\"+\\\" para adicionar uma configuração de resposta múltipla\",\n  \"com_nav_profile_picture\": \"Foto de Perfil\",\n  \"com_nav_save_drafts\": \"Salvar rascunhos localmente\",\n  \"com_nav_search_placeholder\": \"Buscar mensagens\",\n  \"com_nav_send_message\": \"Enviar mensagem\",\n  \"com_nav_setting_account\": \"Conta\",\n  \"com_nav_setting_beta\": \"Recursos beta\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Controles de dados\",\n  \"com_nav_setting_general\": \"Geral\",\n  \"com_nav_setting_speech\": \"Fala\",\n  \"com_nav_settings\": \"Configurações\",\n  \"com_nav_shared_links\": \"Links compartilhados\",\n  \"com_nav_show_code\": \"Sempre mostrar código ao usar o interpretador de código\",\n  \"com_nav_slash_command\": \"Comando /\",\n  \"com_nav_slash_command_description\": \"Alternar comando \\\"/\\\" para selecionar um prompt via teclado\",\n  \"com_nav_source_buffer_error\": \"Erro ao configurar a reprodução de áudio. Por favor, atualize a página.\",\n  \"com_nav_speech_cancel_error\": \"Não foi possível parar a reprodução de áudio. Você pode precisar atualizar a página.\",\n  \"com_nav_speech_to_text\": \"Fala para Texto\",\n  \"com_nav_text_to_speech\": \"Texto para Fala\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Escuro\",\n  \"com_nav_theme_light\": \"Claro\",\n  \"com_nav_theme_system\": \"Sistema\",\n  \"com_nav_tool_dialog\": \"Ferramentas do Assistente\",\n  \"com_nav_tool_dialog_description\": \"O assistente deve ser salvo para persistir as seleções de ferramentas.\",\n  \"com_nav_tool_remove\": \"Remover\",\n  \"com_nav_tool_search\": \"Buscar ferramentas\",\n  \"com_nav_tts_init_error\": \"Falha ao inicializar texto-para-fala: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Texto-para-fala para o mecanismo selecionado não é suportado neste navegador.\",\n  \"com_nav_user\": \"USUÁRIO\",\n  \"com_nav_user_name_display\": \"Exibir nome de usuário nas mensagens\",\n  \"com_nav_voice_select\": \"Voz\",\n  \"com_nav_voices_fetch_error\": \"Não foi possível recuperar as opções de voz. Por favor, verifique sua conexão com a internet.\",\n  \"com_nav_welcome_assistant\": \"Por favor, Selecione um Assistente\",\n  \"com_nav_welcome_message\": \"Como posso ajudar você hoje?\",\n  \"com_show_agent_settings\": \"Mostrar Configurações do Agente\",\n  \"com_show_completion_settings\": \"Mostrar Configurações de Conclusão\",\n  \"com_show_examples\": \"Mostrar Exemplos\",\n  \"com_sidepanel_agent_builder\": \"Construtor de Agente\",\n  \"com_sidepanel_assistant_builder\": \"Construtor de Assistente\",\n  \"com_sidepanel_attach_files\": \"Anexar Arquivos\",\n  \"com_sidepanel_conversation_tags\": \"Marcadores\",\n  \"com_sidepanel_hide_panel\": \"Ocultar Painel\",\n  \"com_sidepanel_manage_files\": \"Gerenciar Arquivos\",\n  \"com_sidepanel_parameters\": \"Parâmetros\",\n  \"com_sidepanel_select_assistant\": \"Selecionar um Assistente\",\n  \"com_ui_accept\": \"Eu aceito\",\n  \"com_ui_add\": \"Adicionar\",\n  \"com_ui_add_model_preset\": \"Adicionar um modelo ou predefinição para uma resposta adicional\",\n  \"com_ui_admin\": \"Admin\",\n  \"com_ui_admin_settings\": \"Configurações de Admin\",\n  \"com_ui_advanced\": \"Avançado\",\n  \"com_ui_agent\": \"Agente\",\n  \"com_ui_agent_delete_error\": \"Houve um erro ao excluir o agente\",\n  \"com_ui_agent_deleted\": \"Agente excluído com sucesso\",\n  \"com_ui_agents\": \"Agentes\",\n  \"com_ui_all\": \"todos\",\n  \"com_ui_all_proper\": \"Todos\",\n  \"com_ui_archive\": \"Arquivar\",\n  \"com_ui_archive_error\": \"Falha ao arquivar conversa\",\n  \"com_ui_artifact_click\": \"Clique para abrir\",\n  \"com_ui_artifacts\": \"Artefatos\",\n  \"com_ui_artifacts_toggle\": \"Alternar UI de Artefatos\",\n  \"com_ui_ascending\": \"Asc\",\n  \"com_ui_assistant\": \"Assistente\",\n  \"com_ui_assistant_delete_error\": \"Houve um erro ao excluir o assistente\",\n  \"com_ui_assistant_deleted\": \"Assistente excluído com sucesso\",\n  \"com_ui_assistants\": \"Assistentes\",\n  \"com_ui_assistants_output\": \"Saída dos Assistentes\",\n  \"com_ui_attach_error\": \"Não é possível anexar o arquivo. Crie ou selecione uma conversa, ou tente atualizar a página.\",\n  \"com_ui_attach_error_openai\": \"Não é possível anexar arquivos de Assistente a outros endpoints\",\n  \"com_ui_attach_error_size\": \"Limite de tamanho de arquivo excedido para o endpoint:\",\n  \"com_ui_attach_error_type\": \"Tipo de arquivo não suportado para o endpoint:\",\n  \"com_ui_attach_warn_endpoint\": \"Arquivos não compatíveis podem ser ignorados sem uma ferramenta compatível\",\n  \"com_ui_attachment\": \"Anexo\",\n  \"com_ui_authentication\": \"Autenticação\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_back_to_chat\": \"Voltar ao Chat\",\n  \"com_ui_back_to_prompts\": \"Voltar aos Prompts\",\n  \"com_ui_bookmark_delete_confirm\": \"Tem certeza de que deseja excluir este favorito?\",\n  \"com_ui_bookmarks\": \"Favoritos\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Adicionar à conversa atual\",\n  \"com_ui_bookmarks_count\": \"Contagem\",\n  \"com_ui_bookmarks_create_error\": \"Houve um erro ao criar o favorito\",\n  \"com_ui_bookmarks_create_exists\": \"Este favorito já existe\",\n  \"com_ui_bookmarks_create_success\": \"Favorito criado com sucesso\",\n  \"com_ui_bookmarks_delete_error\": \"Houve um erro ao excluir o favorito\",\n  \"com_ui_bookmarks_delete_success\": \"Favorito excluído com sucesso\",\n  \"com_ui_bookmarks_description\": \"Descrição\",\n  \"com_ui_bookmarks_filter\": \"Filtrar favoritos...\",\n  \"com_ui_bookmarks_new\": \"Novo Favorito\",\n  \"com_ui_bookmarks_title\": \"Título\",\n  \"com_ui_bookmarks_update_error\": \"Houve um erro ao atualizar o favorito\",\n  \"com_ui_bookmarks_update_success\": \"Favorito atualizado com sucesso\",\n  \"com_ui_cancel\": \"Cancelar\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Histórico de Chat\",\n  \"com_ui_clear\": \"Limpar\",\n  \"com_ui_clear_all\": \"Limpar tudo\",\n  \"com_ui_close\": \"Fechar\",\n  \"com_ui_code\": \"Código\",\n  \"com_ui_command_placeholder\": \"Opcional: Insira um comando para o prompt ou o nome será usado.\",\n  \"com_ui_command_usage_placeholder\": \"Selecione um Prompt por comando ou nome\",\n  \"com_ui_confirm_action\": \"Confirmar Ação\",\n  \"com_ui_context\": \"Contexto\",\n  \"com_ui_continue\": \"Continuar\",\n  \"com_ui_controls\": \"Controles\",\n  \"com_ui_copied\": \"Copiado!\",\n  \"com_ui_copied_to_clipboard\": \"Copiado para a área de transferência\",\n  \"com_ui_copy_code\": \"Copiar código\",\n  \"com_ui_copy_link\": \"Copiar link\",\n  \"com_ui_copy_to_clipboard\": \"Copiar para a área de transferência\",\n  \"com_ui_create\": \"Criar\",\n  \"com_ui_create_link\": \"Criar link\",\n  \"com_ui_create_prompt\": \"Criar Prompt\",\n  \"com_ui_custom_prompt_mode\": \"Modo de Prompt Personalizado\",\n  \"com_ui_dashboard\": \"Painel\",\n  \"com_ui_date\": \"Data\",\n  \"com_ui_date_april\": \"Abril\",\n  \"com_ui_date_august\": \"Agosto\",\n  \"com_ui_date_december\": \"Dezembro\",\n  \"com_ui_date_february\": \"Fevereiro\",\n  \"com_ui_date_january\": \"Janeiro\",\n  \"com_ui_date_july\": \"Julho\",\n  \"com_ui_date_june\": \"Junho\",\n  \"com_ui_date_march\": \"Março\",\n  \"com_ui_date_may\": \"Maio\",\n  \"com_ui_date_november\": \"Novembro\",\n  \"com_ui_date_october\": \"Outubro\",\n  \"com_ui_date_previous_30_days\": \"Últimos 30 dias\",\n  \"com_ui_date_previous_7_days\": \"Últimos 7 dias\",\n  \"com_ui_date_september\": \"Setembro\",\n  \"com_ui_date_today\": \"Hoje\",\n  \"com_ui_date_yesterday\": \"Ontem\",\n  \"com_ui_decline\": \"Eu não aceito\",\n  \"com_ui_delete\": \"Excluir\",\n  \"com_ui_delete_action\": \"Excluir Ação\",\n  \"com_ui_delete_action_confirm\": \"Tem certeza de que deseja excluir esta ação?\",\n  \"com_ui_delete_agent_confirm\": \"Tem certeza de que deseja excluir este agente?\",\n  \"com_ui_delete_assistant_confirm\": \"Tem certeza de que deseja excluir este Assistente? Isso não pode ser desfeito.\",\n  \"com_ui_delete_confirm\": \"Isso excluirá\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Isso excluirá a versão selecionada para \\\"{{0}}\\\". Se não houver outras versões, o prompt será excluído.\",\n  \"com_ui_delete_conversation\": \"Excluir chat?\",\n  \"com_ui_delete_prompt\": \"Excluir Prompt?\",\n  \"com_ui_delete_tool\": \"Excluir Ferramenta\",\n  \"com_ui_delete_tool_confirm\": \"Tem certeza de que deseja excluir esta ferramenta?\",\n  \"com_ui_descending\": \"Desc\",\n  \"com_ui_description\": \"Descrição\",\n  \"com_ui_description_placeholder\": \"Opcional: Insira uma descrição para exibir para o prompt\",\n  \"com_ui_download_error\": \"Erro ao baixar o arquivo. O arquivo pode ter sido excluído.\",\n  \"com_ui_dropdown_variables\": \"Variáveis de dropdown:\",\n  \"com_ui_dropdown_variables_info\": \"Crie menus dropdown personalizados para seus prompts: `{{nome_da_variável:opção1|opção2|opção3}}`\",\n  \"com_ui_edit\": \"Editar\",\n  \"com_ui_endpoint\": \"Endpoint\",\n  \"com_ui_enter\": \"Entrar\",\n  \"com_ui_enter_var\": \"Inserir {{0}}\",\n  \"com_ui_error\": \"Erro\",\n  \"com_ui_error_connection\": \"Erro ao conectar ao servidor, tente atualizar a página.\",\n  \"com_ui_error_save_admin_settings\": \"Houve um erro ao salvar suas configurações de admin.\",\n  \"com_ui_examples\": \"Exemplos\",\n  \"com_ui_field_required\": \"Este campo é obrigatório\",\n  \"com_ui_filter_prompts_name\": \"Filtrar prompts por nome\",\n  \"com_ui_fork\": \"Bifurcar\",\n  \"com_ui_fork_all_target\": \"Incluir todos para/de aqui\",\n  \"com_ui_fork_branches\": \"Incluir ramificações relacionadas\",\n  \"com_ui_fork_change_default\": \"Opção de bifurcação padrão\",\n  \"com_ui_fork_default\": \"Usar opção de bifurcação padrão\",\n  \"com_ui_fork_error\": \"Houve um erro ao bifurcar a conversa\",\n  \"com_ui_fork_from_message\": \"Selecione uma opção de bifurcação\",\n  \"com_ui_fork_info_1\": \"Use esta configuração para bifurcar mensagens com o comportamento desejado.\",\n  \"com_ui_fork_info_2\": \"\\\"Bifurcação\\\" refere-se à criação de uma nova conversa que começa/termina a partir de mensagens específicas na conversa atual, criando uma cópia de acordo com as opções selecionadas.\",\n  \"com_ui_fork_info_3\": \"A \\\"mensagem alvo\\\" refere-se à mensagem da qual este popup foi aberto, ou, se você marcar \\\"{{0}}\\\", a última mensagem na conversa.\",\n  \"com_ui_fork_info_branches\": \"Esta opção bifurca as mensagens visíveis, junto com ramificações relacionadas; em outras palavras, o caminho direto para a mensagem alvo, incluindo ramificações ao longo do caminho.\",\n  \"com_ui_fork_info_remember\": \"Marque isto para lembrar as opções que você seleciona para uso futuro, tornando mais rápido bifurcar conversas conforme preferido.\",\n  \"com_ui_fork_info_start\": \"Se marcado, a bifurcação começará desta mensagem até a última mensagem na conversa, de acordo com o comportamento selecionado acima.\",\n  \"com_ui_fork_info_target\": \"Esta opção bifurca todas as mensagens até a mensagem alvo, incluindo seus vizinhos; em outras palavras, todos os ramos de mensagens, estejam ou não visíveis ou ao longo do mesmo caminho, estão incluídos.\",\n  \"com_ui_fork_info_visible\": \"Esta opção bifurca apenas as mensagens visíveis; em outras palavras, o caminho direto para a mensagem alvo, sem quaisquer ramificações.\",\n  \"com_ui_fork_processing\": \"Bifurcando conversa...\",\n  \"com_ui_fork_remember\": \"Lembrar\",\n  \"com_ui_fork_remember_checked\": \"Sua seleção será lembrada após o uso. Altere isso a qualquer momento nas configurações.\",\n  \"com_ui_fork_split_target\": \"Iniciar bifurcação aqui\",\n  \"com_ui_fork_split_target_setting\": \"Iniciar bifurcação a partir da mensagem alvo por padrão\",\n  \"com_ui_fork_success\": \"Conversa bifurcada com sucesso\",\n  \"com_ui_fork_visible\": \"Apenas mensagens visíveis\",\n  \"com_ui_go_to_conversation\": \"Ir para a conversa\",\n  \"com_ui_happy_birthday\": \"É meu 1º aniversário!\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Geração de Imagem\",\n  \"com_ui_import_conversation_error\": \"Houve um erro ao importar suas conversas\",\n  \"com_ui_import_conversation_file_type_error\": \"Tipo de importação não suportado\",\n  \"com_ui_import_conversation_info\": \"Importar conversas de um arquivo JSON\",\n  \"com_ui_import_conversation_success\": \"Conversas importadas com sucesso\",\n  \"com_ui_include_shadcnui\": \"Incluir instruções de componentes shadcn/ui\",\n  \"com_ui_input\": \"Entrada\",\n  \"com_ui_instructions\": \"Instruções\",\n  \"com_ui_latest_footer\": \"Toda IA para Todos.\",\n  \"com_ui_locked\": \"Bloqueado\",\n  \"com_ui_manage\": \"Gerenciar\",\n  \"com_ui_max_tags\": \"O número máximo permitido é {{0}}, usando os valores mais recentes.\",\n  \"com_ui_mention\": \"Mencione um endpoint, assistente ou predefinição para alternar rapidamente para ele\",\n  \"com_ui_min_tags\": \"Não é possível remover mais valores, um mínimo de {{0}} é necessário.\",\n  \"com_ui_model\": \"Modelo\",\n  \"com_ui_model_parameters\": \"Parâmetros do Modelo\",\n  \"com_ui_my_prompts\": \"Meus Prompts\",\n  \"com_ui_name\": \"Nome\",\n  \"com_ui_new_chat\": \"Novo chat\",\n  \"com_ui_next\": \"Próximo\",\n  \"com_ui_no\": \"Não\",\n  \"com_ui_no_bookmarks\": \"Parece que você ainda não tem favoritos. Clique em um chat e adicione um novo\",\n  \"com_ui_no_category\": \"Sem categoria\",\n  \"com_ui_no_terms_content\": \"Nenhum conteúdo de termos e condições para exibir\",\n  \"com_ui_none_selected\": \"Nenhum selecionado\",\n  \"com_ui_nothing_found\": \"Nada encontrado\",\n  \"com_ui_of\": \"de\",\n  \"com_ui_off\": \"Desligado\",\n  \"com_ui_on\": \"Ligado\",\n  \"com_ui_prev\": \"Anterior\",\n  \"com_ui_preview\": \"Pré-visualizar\",\n  \"com_ui_privacy_policy\": \"Política de Privacidade\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Este prompt já está compartilhado com todos os usuários\",\n  \"com_ui_prompt_name\": \"Nome do Prompt\",\n  \"com_ui_prompt_name_required\": \"Nome do Prompt é obrigatório\",\n  \"com_ui_prompt_preview_not_shared\": \"O autor não permitiu colaboração para este prompt.\",\n  \"com_ui_prompt_text\": \"Texto\",\n  \"com_ui_prompt_text_required\": \"Texto é obrigatório\",\n  \"com_ui_prompt_update_error\": \"Houve um erro ao atualizar o prompt\",\n  \"com_ui_prompts\": \"Prompts\",\n  \"com_ui_prompts_allow_create\": \"Permitir criação de Prompts\",\n  \"com_ui_prompts_allow_share_global\": \"Permitir compartilhamento de Prompts com todos os usuários\",\n  \"com_ui_prompts_allow_use\": \"Permitir uso de Prompts\",\n  \"com_ui_provider\": \"Provedor\",\n  \"com_ui_read_aloud\": \"Ler em voz alta\",\n  \"com_ui_regenerate\": \"Regenerar\",\n  \"com_ui_rename\": \"Renomear\",\n  \"com_ui_result\": \"Resultado\",\n  \"com_ui_revoke\": \"Revogar\",\n  \"com_ui_revoke_info\": \"Revogar todas as credenciais fornecidas pelo usuário\",\n  \"com_ui_save\": \"Salvar\",\n  \"com_ui_save_submit\": \"Salvar & Enviar\",\n  \"com_ui_saved\": \"Salvo!\",\n  \"com_ui_select\": \"Selecionar\",\n  \"com_ui_select_file\": \"Selecionar um arquivo\",\n  \"com_ui_select_model\": \"Selecionar um modelo\",\n  \"com_ui_select_provider\": \"Selecionar um provedor\",\n  \"com_ui_select_provider_first\": \"Selecione um provedor primeiro\",\n  \"com_ui_select_search_model\": \"Pesquisar modelo por nome\",\n  \"com_ui_select_search_plugin\": \"Pesquisar plugin por nome\",\n  \"com_ui_share\": \"Compartilhar\",\n  \"com_ui_share_create_message\": \"Seu nome e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.\",\n  \"com_ui_share_delete_error\": \"Houve um erro ao excluir o link compartilhado\",\n  \"com_ui_share_error\": \"Houve um erro ao compartilhar o link do chat\",\n  \"com_ui_share_link_to_chat\": \"Compartilhar link para o chat\",\n  \"com_ui_share_to_all_users\": \"Compartilhar com todos os usuários\",\n  \"com_ui_share_update_message\": \"Seu nome, instruções personalizadas e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.\",\n  \"com_ui_share_var\": \"Compartilhar {{0}}\",\n  \"com_ui_shared_link_not_found\": \"Link compartilhado não encontrado\",\n  \"com_ui_shared_prompts\": \"Prompts Compartilhados\",\n  \"com_ui_show_all\": \"Mostrar Todos\",\n  \"com_ui_simple\": \"Simples\",\n  \"com_ui_size\": \"Tamanho\",\n  \"com_ui_special_variables\": \"Variáveis especiais:\",\n  \"com_ui_special_variables_info\": \"Use `{{current_date}}` para a data atual, e `{{current_user}}` para o nome da sua conta.\",\n  \"com_ui_stop\": \"Parar\",\n  \"com_ui_storage\": \"Armazenamento\",\n  \"com_ui_submit\": \"Enviar\",\n  \"com_ui_terms_and_conditions\": \"Termos e Condições\",\n  \"com_ui_terms_of_service\": \"Termos de Serviço\",\n  \"com_ui_tools\": \"Ferramentas\",\n  \"com_ui_unarchive\": \"Desarquivar\",\n  \"com_ui_unarchive_error\": \"Falha ao desarquivar conversa\",\n  \"com_ui_unknown\": \"Desconhecido\",\n  \"com_ui_update\": \"Atualizar\",\n  \"com_ui_upload\": \"Carregar\",\n  \"com_ui_upload_delay\": \"O upload de \\\"{{0}}\\\" está demorando mais do que o esperado. Por favor, aguarde enquanto o arquivo termina de ser indexado para recuperação.\",\n  \"com_ui_upload_error\": \"Houve um erro ao carregar seu arquivo\",\n  \"com_ui_upload_files\": \"Carregar arquivos\",\n  \"com_ui_upload_image\": \"Carregar uma imagem\",\n  \"com_ui_upload_invalid\": \"Arquivo inválido para upload. Deve ser uma imagem não excedendo o limite\",\n  \"com_ui_upload_invalid_var\": \"Arquivo inválido para upload. Deve ser uma imagem não excedendo {{0}} MB\",\n  \"com_ui_upload_success\": \"Arquivo carregado com sucesso\",\n  \"com_ui_use_micrphone\": \"Usar microfone\",\n  \"com_ui_use_prompt\": \"Usar prompt\",\n  \"com_ui_variables\": \"Variáveis\",\n  \"com_ui_variables_info\": \"Use chaves duplas no seu texto para criar variáveis, por exemplo, `{{exemplo de variável}}`, para preencher posteriormente ao usar o prompt.\",\n  \"com_ui_version_var\": \"Versão {{0}}\",\n  \"com_ui_versions\": \"Versões\",\n  \"com_ui_yes\": \"Sim\",\n  \"com_user_message\": \"Você\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/pt-PT/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"A IA ainda está a escrever.\",\n  \"com_a11y_end\": \"A IA terminou de responder.\",\n  \"com_a11y_start\": \"A IA começou a responder.\",\n  \"com_agents_allow_editing\": \"Permitir que outros utilizadores editem o seu agente\",\n  \"com_agents_by_librechat\": \"por LibreChat\",\n  \"com_agents_code_interpreter\": \"Quando ativo, permite que os seus agentes usem a API de Interpretação de código do LibreChat para correr código gerado, inclusivé processamento de ficheiros em segurança. Requer uma chave API válida.\",\n  \"com_agents_code_interpreter_title\": \"API de Interpretação de Código\",\n  \"com_agents_create_error\": \"Houve um erro ao criar seu agente.\",\n  \"com_agents_description_placeholder\": \"Opcional: Descreva seu Agente aqui\",\n  \"com_agents_enable_file_search\": \"Permitir Pesquisa de Ficheiros.\",\n  \"com_agents_file_search_disabled\": \"O Agente deve ser criado antes carregar ficheiros para Pesquisar.\",\n  \"com_agents_file_search_info\": \"Quando ativo, os agentes serão informados dos nomes de ficheiros listados abaixo, permitindo aos mesmos a extração de contexto relevante.\",\n  \"com_agents_instructions_placeholder\": \"As instruções do sistema que o agente usa\",\n  \"com_agents_missing_provider_model\": \"Por favor, escolhe um provedor e modelo antes de criar um agente.\",\n  \"com_agents_name_placeholder\": \"Opcional: O nome do agente\",\n  \"com_agents_no_access\": \"Não tens permissões para editar este agente.\",\n  \"com_agents_not_available\": \"Agente não disponível.\",\n  \"com_agents_search_name\": \"Pesquisar agentes por nome\",\n  \"com_agents_update_error\": \"Houve um erro ao atualizar seu agente.\",\n  \"com_assistants_action_attempt\": \"Assistente quer falar com {{0}}\",\n  \"com_assistants_actions\": \"Ações\",\n  \"com_assistants_actions_disabled\": \"Você precisa criar um assistente antes de adicionar ações.\",\n  \"com_assistants_actions_info\": \"Permita que seu Assistente recupere informações ou execute ações via API's\",\n  \"com_assistants_add_actions\": \"Adicionar Ações\",\n  \"com_assistants_add_tools\": \"Adicionar Ferramentas\",\n  \"com_assistants_allow_sites_you_trust\": \"Apenas permitir sites que confia.\",\n  \"com_assistants_append_date\": \"Anexar Data e Hora Atual\",\n  \"com_assistants_append_date_tooltip\": \"Quando ativado, a data e hora atual do cliente serão anexadas às instruções do sistema do assistente.\",\n  \"com_assistants_attempt_info\": \"O Assistente quer enviar o seguinte:\",\n  \"com_assistants_available_actions\": \"Ações Disponíveis\",\n  \"com_assistants_capabilities\": \"Capacidades\",\n  \"com_assistants_code_interpreter\": \"Interpretador de Código\",\n  \"com_assistants_code_interpreter_files\": \"Os arquivos abaixo são apenas para o Interpretador de Código:\",\n  \"com_assistants_code_interpreter_info\": \"O Interpretador de Código permite que o assistente escreva e execute código. Esta ferramenta pode processar arquivos com dados e formatações diversas, e gerar arquivos como gráficos.\",\n  \"com_assistants_completed_action\": \"Conversou com {{0}}\",\n  \"com_assistants_completed_function\": \"Executou {{0}}\",\n  \"com_assistants_conversation_starters\": \"Iniciadores de Conversa\",\n  \"com_assistants_conversation_starters_placeholder\": \"Digite um iniciador de conversa\",\n  \"com_assistants_create_error\": \"Houve um erro ao criar seu assistente.\",\n  \"com_assistants_create_success\": \"Criado com sucesso\",\n  \"com_assistants_delete_actions_error\": \"Houve um erro ao excluir a ação.\",\n  \"com_assistants_delete_actions_success\": \"Ação excluída com sucesso do Assistente\",\n  \"com_assistants_description_placeholder\": \"Opcional: Descreva seu Assistente aqui\",\n  \"com_assistants_domain_info\": \"Assistente enviou esta informação para {{0}}\",\n  \"com_assistants_file_search\": \"Pesquisa de Arquivos\",\n  \"com_assistants_file_search_info\": \"A pesquisa de arquivos permite que o assistente tenha conhecimento dos arquivos que você ou seus usuários carregam. Uma vez que um arquivo é carregado, o assistente decide automaticamente quando recuperar o conteúdo com base nas solicitações do usuário. Anexar armazenamentos vetoriais para Pesquisa de Arquivos ainda não é suportado. Você pode anexá-los no Playground do Provedor ou anexar arquivos às mensagens para pesquisa de arquivos em uma base de thread.\",\n  \"com_assistants_function_use\": \"Assistente usou {{0}}\",\n  \"com_assistants_image_vision\": \"Visão de Imagem\",\n  \"com_assistants_instructions_placeholder\": \"As instruções do sistema que o assistente usa\",\n  \"com_assistants_knowledge\": \"Conhecimento\",\n  \"com_assistants_knowledge_disabled\": \"O assistente deve ser criado, e o Interpretador de Código ou Recuperação deve ser habilitado e salvo antes de carregar arquivos como Conhecimento.\",\n  \"com_assistants_knowledge_info\": \"Se você carregar arquivos em Conhecimento, as conversas com seu Assistente podem incluir o conteúdo dos arquivos.\",\n  \"com_assistants_max_starters_reached\": \"Número máximo de iniciadores de conversa atingido\",\n  \"com_assistants_name_placeholder\": \"Opcional: O nome do assistente\",\n  \"com_assistants_non_retrieval_model\": \"A pesquisa de arquivos não está habilitada neste modelo. Por favor, selecione outro modelo.\",\n  \"com_assistants_retrieval\": \"Recuperação\",\n  \"com_assistants_running_action\": \"Executando ação\",\n  \"com_assistants_search_name\": \"Pesquisar assistentes por nome\",\n  \"com_assistants_update_actions_error\": \"Houve um erro ao criar ou atualizar a ação.\",\n  \"com_assistants_update_actions_success\": \"Ação criada ou atualizada com sucesso\",\n  \"com_assistants_update_error\": \"Houve um erro ao atualizar seu assistente.\",\n  \"com_assistants_update_success\": \"Atualizado com sucesso\",\n  \"com_auth_already_have_account\": \"Já tem uma conta?\",\n  \"com_auth_apple_login\": \"Autenticar com a Apple.\",\n  \"com_auth_back_to_login\": \"Voltar para Login\",\n  \"com_auth_click\": \"Clique\",\n  \"com_auth_click_here\": \"Clique aqui\",\n  \"com_auth_continue\": \"Continuar\",\n  \"com_auth_create_account\": \"Criar sua conta\",\n  \"com_auth_discord_login\": \"Continuar com Discord\",\n  \"com_auth_email\": \"E-mail\",\n  \"com_auth_email_address\": \"Endereço de e-mail\",\n  \"com_auth_email_max_length\": \"O e-mail não deve ter mais de 120 caracteres\",\n  \"com_auth_email_min_length\": \"O e-mail deve ter pelo menos 6 caracteres\",\n  \"com_auth_email_pattern\": \"Você deve inserir um endereço de e-mail válido\",\n  \"com_auth_email_required\": \"E-mail é obrigatório\",\n  \"com_auth_email_resend_link\": \"Reenviar E-mail\",\n  \"com_auth_email_resent_failed\": \"Falha ao reenviar e-mail de verificação\",\n  \"com_auth_email_resent_success\": \"E-mail de verificação reenviado com sucesso\",\n  \"com_auth_email_verification_failed\": \"Falha na verificação de e-mail\",\n  \"com_auth_email_verification_failed_token_missing\": \"Falha na verificação, token ausente\",\n  \"com_auth_email_verification_in_progress\": \"Verificando seu e-mail, por favor, aguarde\",\n  \"com_auth_email_verification_invalid\": \"Verificação de e-mail inválida\",\n  \"com_auth_email_verification_redirecting\": \"Redirecionando em {{0}} segundos...\",\n  \"com_auth_email_verification_resend_prompt\": \"Não recebeu o e-mail?\",\n  \"com_auth_email_verification_success\": \"E-mail verificado com sucesso\",\n  \"com_auth_error_create\": \"Houve um erro ao tentar registrar sua conta. Por favor, tente novamente.\",\n  \"com_auth_error_invalid_reset_token\": \"Este token de redefinição de senha não é mais válido.\",\n  \"com_auth_error_login\": \"Não foi possível fazer login com as informações fornecidas. Por favor, verifique suas credenciais e tente novamente.\",\n  \"com_auth_error_login_ban\": \"Sua conta foi temporariamente banida devido a violações do nosso serviço.\",\n  \"com_auth_error_login_rl\": \"Muitas tentativas de login em um curto período de tempo. Por favor, tente novamente mais tarde.\",\n  \"com_auth_error_login_server\": \"Houve um erro interno no servidor. Por favor, aguarde alguns momentos e tente novamente.\",\n  \"com_auth_error_login_unverified\": \"Sua conta não foi verificada. Por favor, verifique seu e-mail para um link de verificação.\",\n  \"com_auth_facebook_login\": \"Continuar com Facebook\",\n  \"com_auth_full_name\": \"Nome completo\",\n  \"com_auth_github_login\": \"Continuar com Github\",\n  \"com_auth_google_login\": \"Continuar com Google\",\n  \"com_auth_here\": \"AQUI\",\n  \"com_auth_login\": \"Entrar\",\n  \"com_auth_login_with_new_password\": \"Agora você pode fazer login com sua nova senha.\",\n  \"com_auth_name_max_length\": \"O nome deve ter menos de 80 caracteres\",\n  \"com_auth_name_min_length\": \"O nome deve ter pelo menos 3 caracteres\",\n  \"com_auth_name_required\": \"Nome é obrigatório\",\n  \"com_auth_no_account\": \"Não tem uma conta?\",\n  \"com_auth_password\": \"Senha\",\n  \"com_auth_password_confirm\": \"Confirmar senha\",\n  \"com_auth_password_forgot\": \"Esqueceu a senha?\",\n  \"com_auth_password_max_length\": \"A senha deve ter menos de 128 caracteres\",\n  \"com_auth_password_min_length\": \"A senha deve ter pelo menos 8 caracteres\",\n  \"com_auth_password_not_match\": \"As senhas não coincidem\",\n  \"com_auth_password_required\": \"Senha é obrigatória\",\n  \"com_auth_registration_success_generic\": \"Por favor, verifique seu e-mail para verificar seu endereço de e-mail.\",\n  \"com_auth_registration_success_insecure\": \"Registro bem-sucedido.\",\n  \"com_auth_reset_password\": \"Redefinir sua senha\",\n  \"com_auth_reset_password_if_email_exists\": \"Se uma conta com esse e-mail existir, um e-mail com instruções para redefinir a senha foi enviado. Certifique-se de verificar sua pasta de spam.\",\n  \"com_auth_reset_password_link_sent\": \"E-mail enviado\",\n  \"com_auth_reset_password_success\": \"Senha redefinida com sucesso\",\n  \"com_auth_sign_in\": \"Entrar\",\n  \"com_auth_sign_up\": \"Inscrever-se\",\n  \"com_auth_submit_registration\": \"Enviar registro\",\n  \"com_auth_to_reset_your_password\": \"para redefinir sua senha.\",\n  \"com_auth_to_try_again\": \"para tentar novamente.\",\n  \"com_auth_username\": \"Nome de usuário (opcional)\",\n  \"com_auth_username_max_length\": \"O nome de usuário deve ter menos de 20 caracteres\",\n  \"com_auth_username_min_length\": \"O nome de usuário deve ter pelo menos 2 caracteres\",\n  \"com_auth_welcome_back\": \"Bem-vindo de volta\",\n  \"com_click_to_download\": \"(Carrega aqui para descarregar)\",\n  \"com_download_expired\": \"(Ficheiro expirado)\",\n  \"com_download_expires\": \"(carrega aqui para descarregar - expira a {{0}})\",\n  \"com_endpoint\": \"Endpoint\",\n  \"com_endpoint_agent\": \"Agente\",\n  \"com_endpoint_agent_model\": \"Modelo de Agente (Recomendado: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Por favor, seleciona um Agente.\",\n  \"com_endpoint_ai\": \"IA\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Número máximo de tokens que podem ser gerados na resposta. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. Nota: os modelos podem parar antes de atingir esse máximo.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"O cache de prompt permite reutilizar um grande contexto ou instruções em chamadas de API, reduzindo custos e latência\",\n  \"com_endpoint_anthropic_temp\": \"Varia de 0 a 1. Use temperatura mais próxima de 0 para tarefas analíticas / de múltipla escolha, e mais próxima de 1 para tarefas criativas e generativas. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k altera como o modelo seleciona tokens para saída. Um top-k de 1 significa que o token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-k de 3 significa que o próximo token é selecionado entre os 3 tokens mais prováveis (usando temperatura).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p altera como o modelo seleciona tokens para saída. Os tokens são selecionados dos mais prováveis (veja o parâmetro topK) até os menos prováveis até que a soma de suas probabilidades atinja o valor top-p.\",\n  \"com_endpoint_assistant\": \"Assistente\",\n  \"com_endpoint_assistant_model\": \"Modelo de Assistente\",\n  \"com_endpoint_assistant_placeholder\": \"Por favor, selecione um Assistente no Painel Lateral Direito\",\n  \"com_endpoint_completion\": \"Conclusão\",\n  \"com_endpoint_completion_model\": \"Modelo de Conclusão (Recomendado: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Clique Aqui\",\n  \"com_endpoint_config_google_api_info\": \"Para obter sua chave API de Linguagem Generativa (para Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Chave API do Google\",\n  \"com_endpoint_config_google_cloud_platform\": \"(do Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(API Gemini)\",\n  \"com_endpoint_config_google_service_key\": \"Chave de Conta de Serviço do Google\",\n  \"com_endpoint_config_key\": \"Definir Chave API\",\n  \"com_endpoint_config_key_encryption\": \"Sua chave será criptografada e excluída em\",\n  \"com_endpoint_config_key_for\": \"Definir Chave API para\",\n  \"com_endpoint_config_key_google_need_to\": \"Você precisa\",\n  \"com_endpoint_config_key_google_service_account\": \"Criar uma Conta de Serviço\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Habilitar Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API no Google Cloud, então\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Certifique-se de clicar em \\\"Criar e Continuar\\\" para dar pelo menos o papel de \\\"Usuário do Vertex AI\\\". Por fim, crie uma chave JSON para importar aqui.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importar Chave JSON da Conta de Serviço.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Chave JSON da Conta de Serviço Inválida, Você importou o arquivo correto?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Chave JSON da Conta de Serviço Importada com Sucesso\",\n  \"com_endpoint_config_key_name\": \"Chave\",\n  \"com_endpoint_config_key_never_expires\": \"Sua chave nunca expira\",\n  \"com_endpoint_config_placeholder\": \"Defina sua Chave no menu do Cabeçalho para conversar.\",\n  \"com_endpoint_config_value\": \"Insira o valor para\",\n  \"com_endpoint_context\": \"Contexto\",\n  \"com_endpoint_context_info\": \"O número máximo de tokens que podem ser usados para contexto. Use isso para controlar quantos tokens são enviados por solicitação. Se não especificado, usará os padrões do sistema com base no tamanho do contexto dos modelos conhecidos. Definir valores mais altos pode resultar em erros e/ou maior custo de tokens.\",\n  \"com_endpoint_context_tokens\": \"Máximo de Tokens de Contexto\",\n  \"com_endpoint_custom_name\": \"Nome Personalizado\",\n  \"com_endpoint_default\": \"padrão\",\n  \"com_endpoint_default_blank\": \"padrão: em branco\",\n  \"com_endpoint_default_empty\": \"padrão: vazio\",\n  \"com_endpoint_default_with_num\": \"padrão: {{0}}\",\n  \"com_endpoint_examples\": \"Presets\",\n  \"com_endpoint_export\": \"Exportar\",\n  \"com_endpoint_export_share\": \"Exportar/Compartilhar\",\n  \"com_endpoint_frequency_penalty\": \"Penalidade de Frequência\",\n  \"com_endpoint_func_hover\": \"Habilitar uso de Plugins como Funções OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Defina um nome personalizado para o Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Número máximo de tokens que podem ser gerados na resposta. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. Nota: os modelos podem parar antes de atingir esse máximo.\",\n  \"com_endpoint_google_temp\": \"Valores mais altos = mais aleatório, enquanto valores mais baixos = mais focado e determinístico. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_google_topk\": \"Top-k altera como o modelo seleciona tokens para saída. Um top-k de 1 significa que o token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-k de 3 significa que o próximo token é selecionado entre os 3 tokens mais prováveis (usando temperatura).\",\n  \"com_endpoint_google_topp\": \"Top-p altera como o modelo seleciona tokens para saída. Os tokens são selecionados dos mais prováveis (veja o parâmetro topK) até os menos prováveis até que a soma de suas probabilidades atinja o valor top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Substituir Instruções\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Substitui as instruções do assistente. Isso é útil para modificar o comportamento em uma base por execução.\",\n  \"com_endpoint_max_output_tokens\": \"Máximo de Tokens de Saída\",\n  \"com_endpoint_message\": \"Mensagem\",\n  \"com_endpoint_message_new\": \"Mensagem {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Edite sua mensagem ou Regenerar.\",\n  \"com_endpoint_my_preset\": \"Meu Preset\",\n  \"com_endpoint_no_presets\": \"Ainda não há presets, use o botão de configurações para criar um\",\n  \"com_endpoint_open_menu\": \"Abrir Menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Defina um nome personalizado para a IA\",\n  \"com_endpoint_openai_detail\": \"A resolução para solicitações de Visão. \\\"Baixa\\\" é mais barata e rápida, \\\"Alta\\\" é mais detalhada e cara, e \\\"Auto\\\" escolherá automaticamente entre as duas com base na resolução da imagem.\",\n  \"com_endpoint_openai_freq\": \"Número entre -2.0 e 2.0. Valores positivos penalizam novos tokens com base em sua frequência existente no texto até agora, diminuindo a probabilidade do modelo de repetir a mesma linha literalmente.\",\n  \"com_endpoint_openai_max\": \"O máximo de tokens para gerar. O comprimento total dos tokens de entrada e dos tokens gerados é limitado pelo comprimento do contexto do modelo.\",\n  \"com_endpoint_openai_max_tokens\": \"Campo opcional `max_tokens`, representando o número máximo de tokens que podem ser gerados na conclusão do chat. O comprimento total dos tokens de entrada e dos tokens gerados é limitado pelo comprimento do contexto dos modelos. Você pode experimentar erros se esse número exceder o máximo de tokens de contexto.\",\n  \"com_endpoint_openai_pres\": \"Número entre -2.0 e 2.0. Valores positivos penalizam novos tokens com base em sua presença no texto até agora, aumentando a probabilidade do modelo de falar sobre novos tópicos.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhuma\",\n  \"com_endpoint_openai_reasoning_effort\": \"Apenas para modelos o1: Restringir o esforço de raciocínio. Isto poderá resultar em respostas mais rápidas e menos tokens usados na lógica da resposta.\",\n  \"com_endpoint_openai_resend\": \"Reenviar todas as imagens anexadas anteriormente. Nota: isso pode aumentar significativamente o custo de tokens e você pode experimentar erros com muitos anexos de imagem.\",\n  \"com_endpoint_openai_resend_files\": \"Reenviar todos os arquivos anexados anteriormente. Nota: isso aumentará o custo de tokens e você pode experimentar erros com muitos anexos.\",\n  \"com_endpoint_openai_stop\": \"Até 4 sequências onde a API parará de gerar mais tokens.\",\n  \"com_endpoint_openai_temp\": \"Valores mais altos = mais aleatório, enquanto valores mais baixos = mais focado e determinístico. Recomendamos alterar isso ou Top P, mas não ambos.\",\n  \"com_endpoint_openai_topp\": \"Uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, onde o modelo considera os resultados dos tokens com massa de probabilidade top_p. Então, 0.1 significa que apenas os tokens que compreendem os 10% principais da massa de probabilidade são considerados. Recomendamos alterar isso ou a temperatura, mas não ambos.\",\n  \"com_endpoint_output\": \"Saída\",\n  \"com_endpoint_plug_image_detail\": \"Detalhe da Imagem\",\n  \"com_endpoint_plug_resend_files\": \"Reenviar Arquivos\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhuma\",\n  \"com_endpoint_plug_skip_completion\": \"Pular Conclusão\",\n  \"com_endpoint_plug_use_functions\": \"Usar Funções\",\n  \"com_endpoint_presence_penalty\": \"Penalidade de Presença\",\n  \"com_endpoint_preset\": \"preset\",\n  \"com_endpoint_preset_default\": \"é agora o preset padrão.\",\n  \"com_endpoint_preset_default_item\": \"Padrão:\",\n  \"com_endpoint_preset_default_none\": \"Nenhum preset padrão ativo.\",\n  \"com_endpoint_preset_default_removed\": \"não é mais o preset padrão.\",\n  \"com_endpoint_preset_delete_confirm\": \"Tem certeza de que deseja excluir este preset?\",\n  \"com_endpoint_preset_delete_error\": \"Houve um erro ao excluir seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_import\": \"Preset Importado!\",\n  \"com_endpoint_preset_import_error\": \"Houve um erro ao importar seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_name\": \"Nome do Preset\",\n  \"com_endpoint_preset_save_error\": \"Houve um erro ao salvar seu preset. Por favor, tente novamente.\",\n  \"com_endpoint_preset_selected\": \"Preset Ativo!\",\n  \"com_endpoint_preset_selected_title\": \"Ativo!\",\n  \"com_endpoint_preset_title\": \"Preset\",\n  \"com_endpoint_presets\": \"presets\",\n  \"com_endpoint_presets_clear_warning\": \"Tem certeza de que deseja limpar todos os presets? Isso é irreversível.\",\n  \"com_endpoint_prompt_cache\": \"Usar Cache de Prompt\",\n  \"com_endpoint_prompt_prefix\": \"Instruções Personalizadas\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Instruções Adicionais\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Defina instruções ou contexto adicionais além das instruções principais do Assistente. Ignorado se vazio.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Defina instruções ou contexto personalizados. Ignorado se vazio.\",\n  \"com_endpoint_reasoning_effort\": \"Esforço de raciocínio\",\n  \"com_endpoint_save_as_preset\": \"Salvar Como Preset\",\n  \"com_endpoint_search\": \"Procurar endereço por nome\",\n  \"com_endpoint_set_custom_name\": \"Defina um nome personalizado, caso você possa encontrar este preset\",\n  \"com_endpoint_skip_hover\": \"Habilitar pular a etapa de conclusão, que revisa a resposta final e os passos gerados\",\n  \"com_endpoint_stop\": \"Sequências de Parada\",\n  \"com_endpoint_stop_placeholder\": \"Separe os valores pressionando `Enter`\",\n  \"com_endpoint_temperature\": \"Temperatura\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Usar Assistente Ativo\",\n  \"com_error_expired_user_key\": \"A chave fornecida para {{0}} expirou em {{1}}. Por favor, forneça uma nova chave e tente novamente.\",\n  \"com_error_files_dupe\": \"Ficheiro duplicado detectado\",\n  \"com_error_files_empty\": \"Ficheiros vazios não são permitidos.\",\n  \"com_error_files_process\": \"Ocorreu um erro ao processar o ficheiro.\",\n  \"com_error_files_unsupported_capability\": \"Não existem funcionalidades ativas que suportem este tipo de ficheiro.\",\n  \"com_error_files_upload\": \"Ocorreu um erro ao enviar o ficheiro.\",\n  \"com_error_files_upload_canceled\": \"O enviar do ficheiro foi cancelado. Nota: O envio pode estar ainda a ser processado e poderá necessitar de ser apagado manualmente.\",\n  \"com_error_files_validation\": \"Ocorreu um erro ao validar o ficheiro.\",\n  \"com_error_input_length\": \"A contagem de tokens da última mensagem é muito longa, excedendo o limite de tokens ({{0}} respectivamente). Por favor, encurte sua mensagem, ajuste o tamanho máximo do contexto nos parâmetros da conversa ou divida a conversa para continuar.\",\n  \"com_error_invalid_user_key\": \"Chave fornecida inválida. Por favor, forneça uma chave válida e tente novamente.\",\n  \"com_error_moderation\": \"Parece que o conteúdo enviado foi sinalizado pelo nosso sistema de moderação por não estar alinhado com nossas diretrizes da comunidade. Não podemos prosseguir com este tópico específico. Se você tiver outras perguntas ou tópicos que gostaria de explorar, edite sua mensagem ou crie uma nova conversa.\",\n  \"com_error_no_base_url\": \"Nenhuma URL base encontrada. Por favor, forneça uma e tente novamente.\",\n  \"com_error_no_user_key\": \"Nenhuma chave encontrada. Por favor, forneça uma chave e tente novamente.\",\n  \"com_files_filter\": \"Filtrar arquivos...\",\n  \"com_files_no_results\": \"Nenhum resultado.\",\n  \"com_files_number_selected\": \"{{0}} de {{1}} arquivo(s) selecionado(s)\",\n  \"com_generated_files\": \"Ficheiros gerados:\",\n  \"com_hide_examples\": \"Ocultar Exemplos\",\n  \"com_nav_account_settings\": \"Configurações da Conta\",\n  \"com_nav_always_make_prod\": \"Sempre tornar novas versões produção\",\n  \"com_nav_archive_created_at\": \"Data de Arquivamento\",\n  \"com_nav_archive_name\": \"Nome\",\n  \"com_nav_archived_chats\": \"Chats Arquivados\",\n  \"com_nav_archived_chats_empty\": \"Você não tem conversas arquivadas.\",\n  \"com_nav_at_command\": \"Comando @\",\n  \"com_nav_at_command_description\": \"Alternar comando \\\"@\\\" para alternar endpoints, modelos, predefinições, etc.\",\n  \"com_nav_audio_play_error\": \"Erro ao reproduzir áudio: {{0}}\",\n  \"com_nav_audio_process_error\": \"Erro ao processar áudio: {{0}}\",\n  \"com_nav_auto_scroll\": \"Rolagem Automática para a última mensagem ao abrir o chat\",\n  \"com_nav_auto_send_prompts\": \"Enviar prompts automaticamente\",\n  \"com_nav_auto_send_text\": \"Enviar texto automaticamente\",\n  \"com_nav_auto_send_text_disabled\": \"definir -1 para desativar\",\n  \"com_nav_auto_transcribe_audio\": \"Transcrever áudio automaticamente\",\n  \"com_nav_automatic_playback\": \"Reprodução Automática da Última Mensagem\",\n  \"com_nav_balance\": \"Equilíbrio\",\n  \"com_nav_browser\": \"Navegador\",\n  \"com_nav_buffer_append_error\": \"Problema com o streaming de áudio. A reprodução pode ser interrompida.\",\n  \"com_nav_change_picture\": \"Mudar foto\",\n  \"com_nav_chat_commands\": \"Comandos de conversa\",\n  \"com_nav_chat_commands_info\": \"Estes comandos são ativados ao escrever caracteres específicos no início da sua mensagem. Cada comando corre segundo o seu prefixo. Poderá desligar os mesmos se usa esses caracteres no início das suas mensagens com alguma frequência.\",\n  \"com_nav_chat_direction\": \"Direção do chat\",\n  \"com_nav_clear_all_chats\": \"Limpar todos os chats\",\n  \"com_nav_clear_cache_confirm_message\": \"Tem a certeza que pretende apagar a cache?\",\n  \"com_nav_clear_conversation\": \"Limpar conversas\",\n  \"com_nav_clear_conversation_confirm_message\": \"Tem certeza de que deseja limpar todas as conversas? Isso é irreversível.\",\n  \"com_nav_close_sidebar\": \"Fechar barra lateral\",\n  \"com_nav_commands\": \"Comandos\",\n  \"com_nav_confirm_clear\": \"Confirmar Limpeza\",\n  \"com_nav_conversation_mode\": \"Modo de Conversa\",\n  \"com_nav_convo_menu_options\": \"Opções do Menu de Conversa\",\n  \"com_nav_db_sensitivity\": \"Sensibilidade de decibéis\",\n  \"com_nav_delete_account\": \"Excluir conta\",\n  \"com_nav_delete_account_button\": \"Excluir minha conta permanentemente\",\n  \"com_nav_delete_account_confirm\": \"Excluir conta - você tem certeza?\",\n  \"com_nav_delete_account_email_placeholder\": \"Por favor, insira o e-mail da sua conta\",\n  \"com_nav_delete_cache_storage\": \"Excluir armazenamento de cache TTS\",\n  \"com_nav_delete_data_info\": \"Todos os seus dados serão excluídos.\",\n  \"com_nav_delete_warning\": \"AVISO: Isso excluirá permanentemente sua conta.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Habilitar cache TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Usar vozes baseadas na nuvem\",\n  \"com_nav_enabled\": \"Habilitado\",\n  \"com_nav_engine\": \"Motor\",\n  \"com_nav_enter_to_send\": \"Pressione Enter para enviar mensagens\",\n  \"com_nav_export\": \"Exportar\",\n  \"com_nav_export_all_message_branches\": \"Exportar todos os ramos de mensagens\",\n  \"com_nav_export_conversation\": \"Exportar conversa\",\n  \"com_nav_export_filename\": \"Nome do arquivo\",\n  \"com_nav_export_filename_placeholder\": \"Definir o nome do arquivo\",\n  \"com_nav_export_include_endpoint_options\": \"Incluir opções de endpoint\",\n  \"com_nav_export_recursive\": \"Recursivo\",\n  \"com_nav_export_recursive_or_sequential\": \"Recursivo ou sequencial?\",\n  \"com_nav_export_type\": \"Tipo\",\n  \"com_nav_external\": \"Externo\",\n  \"com_nav_font_size\": \"Tamanho da Fonte da Mensagem\",\n  \"com_nav_font_size_base\": \"Médio\",\n  \"com_nav_font_size_lg\": \"Grande\",\n  \"com_nav_font_size_sm\": \"Pequeno\",\n  \"com_nav_font_size_xl\": \"Extra Grande\",\n  \"com_nav_font_size_xs\": \"Extra Pequeno\",\n  \"com_nav_help_faq\": \"Ajuda & FAQ\",\n  \"com_nav_hide_panel\": \"Ocultar painel mais à direita\",\n  \"com_nav_info_code_artifacts\": \"Habilita a exibição de artefatos de código experimental ao lado do chat\",\n  \"com_nav_info_code_artifacts_agent\": \"Permitir o uso de artefactos de código por este agente. Por defeito, instruções adicionais específicas ao uso de artefactos são adicionadas, caso o \\\"Modo de comando personalizado\\\" esteja ativo.\",\n  \"com_nav_info_custom_prompt_mode\": \"Quando habilitado, o prompt padrão do sistema de artefatos não será incluído. Todas as instruções de geração de artefatos devem ser fornecidas manualmente neste modo.\",\n  \"com_nav_info_enter_to_send\": \"Quando habilitado, pressionar `ENTER` enviará sua mensagem. Quando desabilitado, pressionar Enter adicionará uma nova linha, e você precisará pressionar `CTRL + ENTER` / `⌘ + ENTER` para enviar sua mensagem.\",\n  \"com_nav_info_fork_change_default\": \"`Apenas mensagens visíveis` inclui apenas o caminho direto para a mensagem selecionada. `Incluir ramos relacionados` adiciona ramos ao longo do caminho. `Incluir tudo de/para aqui` inclui todas as mensagens e ramos conectados.\",\n  \"com_nav_info_fork_split_target_setting\": \"Quando habilitado, a bifurcação começará da mensagem alvo até a última mensagem na conversa, de acordo com o comportamento selecionado.\",\n  \"com_nav_info_include_shadcnui\": \"Quando habilitado, as instruções para usar componentes shadcn/ui serão incluídas. shadcn/ui é uma coleção de componentes reutilizáveis construídos usando Radix UI e Tailwind CSS. Nota: estas são instruções longas, você deve habilitar apenas se for importante informar o LLM sobre as importações e componentes corretos. Para mais informações sobre esses componentes, visite: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Quando habilitado, o código LaTeX nas mensagens será renderizado como equações matemáticas. Desabilitar isso pode melhorar o desempenho se você não precisar de renderização LaTeX.\",\n  \"com_nav_info_save_draft\": \"Quando habilitado, o texto e os anexos que você inserir no formulário de chat serão salvos automaticamente localmente como rascunhos. Esses rascunhos estarão disponíveis mesmo se você recarregar a página ou mudar para uma conversa diferente. Os rascunhos são armazenados localmente no seu dispositivo e são excluídos uma vez que a mensagem é enviada.\",\n  \"com_nav_info_user_name_display\": \"Quando habilitado, o nome de usuário do remetente será mostrado acima de cada mensagem que você enviar. Quando desabilitado, você verá apenas \\\"Você\\\" acima de suas mensagens.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Detecção automática\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Idioma\",\n  \"com_nav_latex_parsing\": \"Análise de LaTeX em mensagens (pode afetar o desempenho)\",\n  \"com_nav_log_out\": \"Sair\",\n  \"com_nav_long_audio_warning\": \"Textos mais longos levarão mais tempo para processar.\",\n  \"com_nav_maximize_chat_space\": \"Maximizar espaço de conversa\",\n  \"com_nav_modular_chat\": \"Habilitar troca de Endpoints no meio da conversa\",\n  \"com_nav_my_files\": \"Meus Arquivos\",\n  \"com_nav_no_search_results\": \"0 Resultados encontrados\",\n  \"com_nav_not_supported\": \"Não Suportado\",\n  \"com_nav_open_sidebar\": \"Abrir barra lateral\",\n  \"com_nav_playback_rate\": \"Taxa de Reprodução de Áudio\",\n  \"com_nav_plugin_auth_error\": \"Houve um erro ao tentar autenticar este plugin. Por favor, tente novamente.\",\n  \"com_nav_plugin_install\": \"Instalar\",\n  \"com_nav_plugin_search\": \"Buscar plugins\",\n  \"com_nav_plugin_store\": \"Loja de Plugins\",\n  \"com_nav_plugin_uninstall\": \"Desinstalar\",\n  \"com_nav_plus_command\": \"Comando +\",\n  \"com_nav_plus_command_description\": \"Alternar comando \\\"+\\\" para adicionar uma configuração de resposta múltipla\",\n  \"com_nav_profile_picture\": \"Foto de Perfil\",\n  \"com_nav_save_drafts\": \"Salvar rascunhos localmente\",\n  \"com_nav_scroll_button\": \"Botão de ir para o fim\",\n  \"com_nav_search_placeholder\": \"Buscar mensagens\",\n  \"com_nav_send_message\": \"Enviar mensagem\",\n  \"com_nav_setting_account\": \"Conta\",\n  \"com_nav_setting_beta\": \"Recursos beta\",\n  \"com_nav_setting_chat\": \"Chat\",\n  \"com_nav_setting_data\": \"Controles de dados\",\n  \"com_nav_setting_general\": \"Geral\",\n  \"com_nav_setting_speech\": \"Fala\",\n  \"com_nav_settings\": \"Configurações\",\n  \"com_nav_shared_links\": \"Links compartilhados\",\n  \"com_nav_show_code\": \"Sempre mostrar código ao usar o interpretador de código\",\n  \"com_nav_show_thinking\": \"Abrir Dropdown de lógica por defeito.\",\n  \"com_nav_slash_command\": \"Comando /\",\n  \"com_nav_slash_command_description\": \"Alternar comando \\\"/\\\" para selecionar um prompt via teclado\",\n  \"com_nav_source_buffer_error\": \"Erro ao configurar a reprodução de áudio. Por favor, atualize a página.\",\n  \"com_nav_speech_cancel_error\": \"Não foi possível parar a reprodução de áudio. Você pode precisar atualizar a página.\",\n  \"com_nav_speech_to_text\": \"Fala para Texto\",\n  \"com_nav_stop_generating\": \"Parar de gerar\",\n  \"com_nav_text_to_speech\": \"Texto para Fala\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Escuro\",\n  \"com_nav_theme_light\": \"Claro\",\n  \"com_nav_theme_system\": \"Sistema\",\n  \"com_nav_tool_dialog\": \"Ferramentas do Assistente\",\n  \"com_nav_tool_dialog_agents\": \"Ferramentas do Agente\",\n  \"com_nav_tool_dialog_description\": \"O assistente deve ser salvo para persistir as seleções de ferramentas.\",\n  \"com_nav_tool_remove\": \"Remover\",\n  \"com_nav_tool_search\": \"Buscar ferramentas\",\n  \"com_nav_tts_init_error\": \"Falha ao inicializar texto-para-fala: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Texto-para-fala para o mecanismo selecionado não é suportado neste navegador.\",\n  \"com_nav_user\": \"USUÁRIO\",\n  \"com_nav_user_msg_markdown\": \"Mostrar as mensagens do utilizador como markdown\",\n  \"com_nav_user_name_display\": \"Exibir nome de usuário nas mensagens\",\n  \"com_nav_voice_select\": \"Voz\",\n  \"com_nav_voices_fetch_error\": \"Não foi possível recuperar as opções de voz. Por favor, verifique sua conexão com a internet.\",\n  \"com_nav_welcome_agent\": \"Por favor, seleciona um Agente.\",\n  \"com_nav_welcome_assistant\": \"Por favor, Selecione um Assistente\",\n  \"com_nav_welcome_message\": \"Como posso ajudar você hoje?\",\n  \"com_show_agent_settings\": \"Mostrar Configurações do Agente\",\n  \"com_show_completion_settings\": \"Mostrar Configurações de Conclusão\",\n  \"com_show_examples\": \"Mostrar Exemplos\",\n  \"com_sidepanel_agent_builder\": \"Construtor de Agente\",\n  \"com_sidepanel_assistant_builder\": \"Construtor de Assistente\",\n  \"com_sidepanel_attach_files\": \"Anexar Arquivos\",\n  \"com_sidepanel_conversation_tags\": \"Marcadores\",\n  \"com_sidepanel_hide_panel\": \"Ocultar Painel\",\n  \"com_sidepanel_manage_files\": \"Gerenciar Arquivos\",\n  \"com_sidepanel_parameters\": \"Parâmetros\",\n  \"com_sidepanel_select_agent\": \"Seleciona um Agente.\",\n  \"com_sidepanel_select_assistant\": \"Selecionar um Assistente\",\n  \"com_ui_accept\": \"Eu aceito\",\n  \"com_ui_add\": \"Adicionar\",\n  \"com_ui_add_model_preset\": \"Adicionar um modelo ou predefinição para uma resposta adicional\",\n  \"com_ui_add_multi_conversation\": \"Adicionar conversação múltiplca\",\n  \"com_ui_admin\": \"Admin\",\n  \"com_ui_admin_access_warning\": \"Desligar o acesso administrativo a esta funcionalidade poderá causar problemas inesperados na UI que precisem de atualizar. Se salvo, a única maneira de reverter será pela configuração do librechat.yaml que afecta todos os cargos.\",\n  \"com_ui_admin_settings\": \"Configurações de Admin\",\n  \"com_ui_advanced\": \"Avançado\",\n  \"com_ui_agent\": \"Agente\",\n  \"com_ui_agent_delete_error\": \"Houve um erro ao excluir o agente\",\n  \"com_ui_agent_deleted\": \"Agente excluído com sucesso\",\n  \"com_ui_agent_duplicate_error\": \"Ocorreu um erro ao duplicar o agente.\",\n  \"com_ui_agent_duplicated\": \"Agente duplicado com sucesso\",\n  \"com_ui_agent_editing_allowed\": \"Este agente já pode ser editado por outros utilizadores.\",\n  \"com_ui_agents\": \"Agentes\",\n  \"com_ui_agents_allow_create\": \"Permitir a criação de Agentes\",\n  \"com_ui_agents_allow_share_global\": \"Permitir a partilha de Agentes com todos os utilizadores\",\n  \"com_ui_agents_allow_use\": \"Permitir o uso de Agentes\",\n  \"com_ui_all\": \"todos\",\n  \"com_ui_all_proper\": \"Todos\",\n  \"com_ui_analyzing\": \"A Analisar\",\n  \"com_ui_analyzing_finished\": \"Análise concluída\",\n  \"com_ui_api_key\": \"Chave da API\",\n  \"com_ui_archive\": \"Arquivar\",\n  \"com_ui_archive_error\": \"Falha ao arquivar conversa\",\n  \"com_ui_artifact_click\": \"Clique para abrir\",\n  \"com_ui_artifacts\": \"Artefatos\",\n  \"com_ui_artifacts_toggle\": \"Alternar UI de Artefatos\",\n  \"com_ui_artifacts_toggle_agent\": \"Permitir Artefactos\",\n  \"com_ui_ascending\": \"Asc\",\n  \"com_ui_assistant\": \"Assistente\",\n  \"com_ui_assistant_delete_error\": \"Houve um erro ao excluir o assistente\",\n  \"com_ui_assistant_deleted\": \"Assistente excluído com sucesso\",\n  \"com_ui_assistants\": \"Assistentes\",\n  \"com_ui_assistants_output\": \"Saída dos Assistentes\",\n  \"com_ui_attach_error\": \"Não é possível anexar o arquivo. Crie ou selecione uma conversa, ou tente atualizar a página.\",\n  \"com_ui_attach_error_openai\": \"Não é possível anexar arquivos de Assistente a outros endpoints\",\n  \"com_ui_attach_error_size\": \"Limite de tamanho de arquivo excedido para o endpoint:\",\n  \"com_ui_attach_error_type\": \"Tipo de arquivo não suportado para o endpoint:\",\n  \"com_ui_attach_warn_endpoint\": \"Arquivos não compatíveis podem ser ignorados sem uma ferramenta compatível\",\n  \"com_ui_attachment\": \"Anexo\",\n  \"com_ui_auth_type\": \"Tipo de Autenticação\",\n  \"com_ui_auth_url\": \"Endereço de Autorização\",\n  \"com_ui_authentication\": \"Autenticação\",\n  \"com_ui_authentication_type\": \"Tipo de Autenticação\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_azure\": \"Azure\",\n  \"com_ui_back_to_chat\": \"Voltar ao Chat\",\n  \"com_ui_back_to_prompts\": \"Voltar aos Prompts\",\n  \"com_ui_basic\": \"Basic\",\n  \"com_ui_basic_auth_header\": \"Cabeçalho de Autorização Basic\",\n  \"com_ui_bearer\": \"Bearer\",\n  \"com_ui_bookmark_delete_confirm\": \"Tem certeza de que deseja excluir este favorito?\",\n  \"com_ui_bookmarks\": \"Favoritos\",\n  \"com_ui_bookmarks_add\": \"Adicionar Bookmarks\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Adicionar à conversa atual\",\n  \"com_ui_bookmarks_count\": \"Contagem\",\n  \"com_ui_bookmarks_create_error\": \"Houve um erro ao criar o favorito\",\n  \"com_ui_bookmarks_create_exists\": \"Este favorito já existe\",\n  \"com_ui_bookmarks_create_success\": \"Favorito criado com sucesso\",\n  \"com_ui_bookmarks_delete\": \"Apagar Favorito\",\n  \"com_ui_bookmarks_delete_error\": \"Houve um erro ao excluir o favorito\",\n  \"com_ui_bookmarks_delete_success\": \"Favorito excluído com sucesso\",\n  \"com_ui_bookmarks_description\": \"Descrição\",\n  \"com_ui_bookmarks_edit\": \"Editar Favorito\",\n  \"com_ui_bookmarks_filter\": \"Filtrar favoritos...\",\n  \"com_ui_bookmarks_new\": \"Novo Favorito\",\n  \"com_ui_bookmarks_title\": \"Título\",\n  \"com_ui_bookmarks_update_error\": \"Houve um erro ao atualizar o favorito\",\n  \"com_ui_bookmarks_update_success\": \"Favorito atualizado com sucesso\",\n  \"com_ui_bulk_delete_error\": \"Falha ao apagar ligações partilhadas\",\n  \"com_ui_callback_url\": \"Endereço de Callback\",\n  \"com_ui_cancel\": \"Cancelar\",\n  \"com_ui_chat\": \"Chat\",\n  \"com_ui_chat_history\": \"Histórico de Chat\",\n  \"com_ui_clear\": \"Limpar\",\n  \"com_ui_clear_all\": \"Limpar tudo\",\n  \"com_ui_client_id\": \"ID de Cliente\",\n  \"com_ui_client_secret\": \"Client Secret\",\n  \"com_ui_close\": \"Fechar\",\n  \"com_ui_close_menu\": \"Fechar Menu\",\n  \"com_ui_code\": \"Código\",\n  \"com_ui_collapse_chat\": \"Colapsar Conversa\",\n  \"com_ui_command_placeholder\": \"Opcional: Insira um comando para o prompt ou o nome será usado.\",\n  \"com_ui_command_usage_placeholder\": \"Selecione um Prompt por comando ou nome\",\n  \"com_ui_confirm_action\": \"Confirmar Ação\",\n  \"com_ui_confirm_admin_use_change\": \"Mudar esta configuração irá bloquear acessos para administradores, você inclusivé. Tem a certeza que pretende avançar?\",\n  \"com_ui_confirm_change\": \"Confirmar alteração\",\n  \"com_ui_context\": \"Contexto\",\n  \"com_ui_continue\": \"Continuar\",\n  \"com_ui_controls\": \"Controles\",\n  \"com_ui_copied\": \"Copiado!\",\n  \"com_ui_copied_to_clipboard\": \"Copiado para a área de transferência\",\n  \"com_ui_copy_code\": \"Copiar código\",\n  \"com_ui_copy_link\": \"Copiar link\",\n  \"com_ui_copy_to_clipboard\": \"Copiar para a área de transferência\",\n  \"com_ui_create\": \"Criar\",\n  \"com_ui_create_link\": \"Criar link\",\n  \"com_ui_create_prompt\": \"Criar Prompt\",\n  \"com_ui_currently_production\": \"Atualmente em produção\",\n  \"com_ui_custom\": \"Costumizar\",\n  \"com_ui_custom_header_name\": \"Nome de Cabeçalho Customizado\",\n  \"com_ui_custom_prompt_mode\": \"Modo de Prompt Personalizado\",\n  \"com_ui_dashboard\": \"Painel\",\n  \"com_ui_date\": \"Data\",\n  \"com_ui_date_april\": \"Abril\",\n  \"com_ui_date_august\": \"Agosto\",\n  \"com_ui_date_december\": \"Dezembro\",\n  \"com_ui_date_february\": \"Fevereiro\",\n  \"com_ui_date_january\": \"Janeiro\",\n  \"com_ui_date_july\": \"Julho\",\n  \"com_ui_date_june\": \"Junho\",\n  \"com_ui_date_march\": \"Março\",\n  \"com_ui_date_may\": \"Maio\",\n  \"com_ui_date_november\": \"Novembro\",\n  \"com_ui_date_october\": \"Outubro\",\n  \"com_ui_date_previous_30_days\": \"Últimos 30 dias\",\n  \"com_ui_date_previous_7_days\": \"Últimos 7 dias\",\n  \"com_ui_date_september\": \"Setembro\",\n  \"com_ui_date_today\": \"Hoje\",\n  \"com_ui_date_yesterday\": \"Ontem\",\n  \"com_ui_decline\": \"Eu não aceito\",\n  \"com_ui_default_post_request\": \"Default (Pedido POST)\",\n  \"com_ui_delete\": \"Excluir\",\n  \"com_ui_delete_action\": \"Excluir Ação\",\n  \"com_ui_delete_action_confirm\": \"Tem certeza de que deseja excluir esta ação?\",\n  \"com_ui_delete_agent_confirm\": \"Tem certeza de que deseja excluir este agente?\",\n  \"com_ui_delete_assistant_confirm\": \"Tem certeza de que deseja excluir este Assistente? Isso não pode ser desfeito.\",\n  \"com_ui_delete_confirm\": \"Isso excluirá\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Isso excluirá a versão selecionada para \\\"{{0}}\\\". Se não houver outras versões, o prompt será excluído.\",\n  \"com_ui_delete_conversation\": \"Excluir chat?\",\n  \"com_ui_delete_prompt\": \"Excluir Prompt?\",\n  \"com_ui_delete_shared_link\": \"Apagar endereço partilhado?\",\n  \"com_ui_delete_tool\": \"Excluir Ferramenta\",\n  \"com_ui_delete_tool_confirm\": \"Tem certeza de que deseja excluir esta ferramenta?\",\n  \"com_ui_descending\": \"Desc\",\n  \"com_ui_description\": \"Descrição\",\n  \"com_ui_description_placeholder\": \"Opcional: Insira uma descrição para exibir para o prompt\",\n  \"com_ui_download\": \"Descarregar\",\n  \"com_ui_download_artifact\": \"Descarregar Artefacto\",\n  \"com_ui_download_error\": \"Erro ao baixar o arquivo. O arquivo pode ter sido excluído.\",\n  \"com_ui_dropdown_variables\": \"Variáveis de dropdown:\",\n  \"com_ui_dropdown_variables_info\": \"Crie menus dropdown personalizados para seus prompts: `{{nome_da_variável:opção1|opção2|opção3}}`\",\n  \"com_ui_duplicate\": \"Duplicar\",\n  \"com_ui_duplication_error\": \"Ocorreu um erro ao duplicar esta conversa\",\n  \"com_ui_duplication_processing\": \"A duplicar conversa...\",\n  \"com_ui_duplication_success\": \"Conversa duplicada com sucesso\",\n  \"com_ui_edit\": \"Editar\",\n  \"com_ui_empty_category\": \"-\",\n  \"com_ui_endpoint\": \"Endpoint\",\n  \"com_ui_endpoint_menu\": \"Menu de Endereços do LLM\",\n  \"com_ui_endpoints_available\": \"Endereços Disponíveis\",\n  \"com_ui_enter\": \"Entrar\",\n  \"com_ui_enter_api_key\": \"Inserir Chave da API\",\n  \"com_ui_enter_openapi_schema\": \"Insira o seu schema da OpenAPI aqui\",\n  \"com_ui_enter_var\": \"Inserir {{0}}\",\n  \"com_ui_error\": \"Erro\",\n  \"com_ui_error_connection\": \"Erro ao conectar ao servidor, tente atualizar a página.\",\n  \"com_ui_error_save_admin_settings\": \"Houve um erro ao salvar suas configurações de admin.\",\n  \"com_ui_examples\": \"Exemplos\",\n  \"com_ui_export_convo_modal\": \"Exportar Modal da Conversa\",\n  \"com_ui_field_required\": \"Este campo é obrigatório\",\n  \"com_ui_filter_prompts\": \"Filtro de Comando\",\n  \"com_ui_filter_prompts_name\": \"Filtrar prompts por nome\",\n  \"com_ui_finance\": \"Finanças\",\n  \"com_ui_fork\": \"Bifurcar\",\n  \"com_ui_fork_all_target\": \"Incluir todos para/de aqui\",\n  \"com_ui_fork_branches\": \"Incluir ramificações relacionadas\",\n  \"com_ui_fork_change_default\": \"Opção de bifurcação padrão\",\n  \"com_ui_fork_default\": \"Usar opção de bifurcação padrão\",\n  \"com_ui_fork_error\": \"Houve um erro ao bifurcar a conversa\",\n  \"com_ui_fork_from_message\": \"Selecione uma opção de bifurcação\",\n  \"com_ui_fork_info_1\": \"Use esta configuração para bifurcar mensagens com o comportamento desejado.\",\n  \"com_ui_fork_info_2\": \"\\\"Bifurcação\\\" refere-se à criação de uma nova conversa que começa/termina a partir de mensagens específicas na conversa atual, criando uma cópia de acordo com as opções selecionadas.\",\n  \"com_ui_fork_info_3\": \"A \\\"mensagem alvo\\\" refere-se à mensagem da qual este popup foi aberto, ou, se você marcar \\\"{{0}}\\\", a última mensagem na conversa.\",\n  \"com_ui_fork_info_branches\": \"Esta opção bifurca as mensagens visíveis, junto com ramificações relacionadas; em outras palavras, o caminho direto para a mensagem alvo, incluindo ramificações ao longo do caminho.\",\n  \"com_ui_fork_info_remember\": \"Marque isto para lembrar as opções que você seleciona para uso futuro, tornando mais rápido bifurcar conversas conforme preferido.\",\n  \"com_ui_fork_info_start\": \"Se marcado, a bifurcação começará desta mensagem até a última mensagem na conversa, de acordo com o comportamento selecionado acima.\",\n  \"com_ui_fork_info_target\": \"Esta opção bifurca todas as mensagens até a mensagem alvo, incluindo seus vizinhos; em outras palavras, todos os ramos de mensagens, estejam ou não visíveis ou ao longo do mesmo caminho, estão incluídos.\",\n  \"com_ui_fork_info_visible\": \"Esta opção bifurca apenas as mensagens visíveis; em outras palavras, o caminho direto para a mensagem alvo, sem quaisquer ramificações.\",\n  \"com_ui_fork_processing\": \"Bifurcando conversa...\",\n  \"com_ui_fork_remember\": \"Lembrar\",\n  \"com_ui_fork_remember_checked\": \"Sua seleção será lembrada após o uso. Altere isso a qualquer momento nas configurações.\",\n  \"com_ui_fork_split_target\": \"Iniciar bifurcação aqui\",\n  \"com_ui_fork_split_target_setting\": \"Iniciar bifurcação a partir da mensagem alvo por padrão\",\n  \"com_ui_fork_success\": \"Conversa bifurcada com sucesso\",\n  \"com_ui_fork_visible\": \"Apenas mensagens visíveis\",\n  \"com_ui_go_back\": \"Para trás\",\n  \"com_ui_go_to_conversation\": \"Ir para a conversa\",\n  \"com_ui_happy_birthday\": \"É meu 1º aniversário!\",\n  \"com_ui_hide_qr\": \"Esconder QR Code\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_idea\": \"Ideias\",\n  \"com_ui_image_gen\": \"Geração de Imagem\",\n  \"com_ui_import_conversation_error\": \"Houve um erro ao importar suas conversas\",\n  \"com_ui_import_conversation_file_type_error\": \"Tipo de importação não suportado\",\n  \"com_ui_import_conversation_info\": \"Importar conversas de um arquivo JSON\",\n  \"com_ui_import_conversation_success\": \"Conversas importadas com sucesso\",\n  \"com_ui_include_shadcnui\": \"Incluir instruções de componentes shadcn/ui\",\n  \"com_ui_include_shadcnui_agent\": \"Incluir instruções shadcn/ui\",\n  \"com_ui_input\": \"Entrada\",\n  \"com_ui_instructions\": \"Instruções\",\n  \"com_ui_latest_footer\": \"Toda IA para Todos.\",\n  \"com_ui_latest_production_version\": \"Última versão produtiva\",\n  \"com_ui_latest_version\": \"Última versão\",\n  \"com_ui_librechat_code_api_key\": \"Obtem a tua chave da API do Interpretador de código Librechat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Seguro. Multilíngua. Entrada/Saída de Ficheiros.\",\n  \"com_ui_librechat_code_api_title\": \"Correr código AI\",\n  \"com_ui_llm_menu\": \"Menu LLM\",\n  \"com_ui_llms_available\": \"LLMs disponíveis\",\n  \"com_ui_loading\": \"A Carregar....\",\n  \"com_ui_locked\": \"Bloqueado\",\n  \"com_ui_logo\": \"Logotipo {{0}}\",\n  \"com_ui_manage\": \"Gerenciar\",\n  \"com_ui_max_tags\": \"O número máximo permitido é {{0}}, usando os valores mais recentes.\",\n  \"com_ui_mention\": \"Mencione um endpoint, assistente ou predefinição para alternar rapidamente para ele\",\n  \"com_ui_min_tags\": \"Não é possível remover mais valores, um mínimo de {{0}} é necessário.\",\n  \"com_ui_misc\": \"Outros\",\n  \"com_ui_model\": \"Modelo\",\n  \"com_ui_model_parameters\": \"Parâmetros do Modelo\",\n  \"com_ui_more_info\": \"Mais informação\",\n  \"com_ui_my_prompts\": \"Meus Prompts\",\n  \"com_ui_name\": \"Nome\",\n  \"com_ui_new_chat\": \"Novo chat\",\n  \"com_ui_next\": \"Próximo\",\n  \"com_ui_no\": \"Não\",\n  \"com_ui_no_bookmarks\": \"Parece que você ainda não tem favoritos. Clique em um chat e adicione um novo\",\n  \"com_ui_no_category\": \"Sem categoria\",\n  \"com_ui_no_changes\": \"Sem alterações para atualizar\",\n  \"com_ui_no_terms_content\": \"Nenhum conteúdo de termos e condições para exibir\",\n  \"com_ui_none\": \"Nenhum\",\n  \"com_ui_none_selected\": \"Nenhum selecionado\",\n  \"com_ui_nothing_found\": \"Nada encontrado\",\n  \"com_ui_oauth\": \"OAuth\",\n  \"com_ui_of\": \"de\",\n  \"com_ui_off\": \"Desligado\",\n  \"com_ui_on\": \"Ligado\",\n  \"com_ui_openai\": \"OpenAI\",\n  \"com_ui_page\": \"Página\",\n  \"com_ui_prev\": \"Anterior\",\n  \"com_ui_preview\": \"Pré-visualizar\",\n  \"com_ui_privacy_policy\": \"Política de Privacidade\",\n  \"com_ui_privacy_policy_url\": \"Endereço de política de privacidade\",\n  \"com_ui_prompt\": \"Prompt\",\n  \"com_ui_prompt_already_shared_to_all\": \"Este prompt já está compartilhado com todos os usuários\",\n  \"com_ui_prompt_name\": \"Nome do Prompt\",\n  \"com_ui_prompt_name_required\": \"Nome do Prompt é obrigatório\",\n  \"com_ui_prompt_preview_not_shared\": \"O autor não permitiu colaboração para este prompt.\",\n  \"com_ui_prompt_text\": \"Texto\",\n  \"com_ui_prompt_text_required\": \"Texto é obrigatório\",\n  \"com_ui_prompt_update_error\": \"Houve um erro ao atualizar o prompt\",\n  \"com_ui_prompts\": \"Prompts\",\n  \"com_ui_prompts_allow_create\": \"Permitir criação de Prompts\",\n  \"com_ui_prompts_allow_share_global\": \"Permitir compartilhamento de Prompts com todos os usuários\",\n  \"com_ui_prompts_allow_use\": \"Permitir uso de Prompts\",\n  \"com_ui_provider\": \"Provedor\",\n  \"com_ui_read_aloud\": \"Ler em voz alta\",\n  \"com_ui_refresh_link\": \"Atualizar endereço\",\n  \"com_ui_regenerate\": \"Regenerar\",\n  \"com_ui_region\": \"Região\",\n  \"com_ui_rename\": \"Renomear\",\n  \"com_ui_rename_prompt\": \"Renomear comando\",\n  \"com_ui_requires_auth\": \"Requer autenticação\",\n  \"com_ui_reset_var\": \"Reiniciar {{0}}\",\n  \"com_ui_result\": \"Resultado\",\n  \"com_ui_revoke\": \"Revogar\",\n  \"com_ui_revoke_info\": \"Revogar todas as credenciais fornecidas pelo usuário\",\n  \"com_ui_revoke_key_confirm\": \"Tem a certeza que pretende revogar esta chave?\",\n  \"com_ui_revoke_key_endpoint\": \"Revogar chave para {{0}}\",\n  \"com_ui_revoke_keys\": \"Revogar chaves\",\n  \"com_ui_revoke_keys_confirm\": \"Tem a certeza que pretende revogar todas as chaves?\",\n  \"com_ui_role_select\": \"Papel\",\n  \"com_ui_roleplay\": \"Roleplay\",\n  \"com_ui_run_code\": \"Correr código\",\n  \"com_ui_run_code_error\": \"Ocorreu um erro ao correr o código\",\n  \"com_ui_save\": \"Salvar\",\n  \"com_ui_save_submit\": \"Salvar & Enviar\",\n  \"com_ui_saved\": \"Salvo!\",\n  \"com_ui_schema\": \"Schema\",\n  \"com_ui_scope\": \"Scope\",\n  \"com_ui_search\": \"Procurar\",\n  \"com_ui_select\": \"Selecionar\",\n  \"com_ui_select_file\": \"Selecionar um arquivo\",\n  \"com_ui_select_model\": \"Selecionar um modelo\",\n  \"com_ui_select_provider\": \"Selecionar um provedor\",\n  \"com_ui_select_provider_first\": \"Selecione um provedor primeiro\",\n  \"com_ui_select_region\": \"Escolha uma região\",\n  \"com_ui_select_search_model\": \"Pesquisar modelo por nome\",\n  \"com_ui_select_search_plugin\": \"Pesquisar plugin por nome\",\n  \"com_ui_select_search_provider\": \"Procurar provedor por nome\",\n  \"com_ui_select_search_region\": \"Procurar região por nome\",\n  \"com_ui_share\": \"Compartilhar\",\n  \"no_text_recognized\": \"O reconhecimento de voz não está disponível. Entre em contato com o administrador, por favor.\",\n  \"com_ui_share_create_message\": \"Seu nome e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.\",\n  \"com_ui_share_delete_error\": \"Houve um erro ao excluir o link compartilhado\",\n  \"com_ui_share_error\": \"Houve um erro ao compartilhar o link do chat\",\n  \"com_ui_share_link_to_chat\": \"Compartilhar link para o chat\",\n  \"com_ui_share_to_all_users\": \"Compartilhar com todos os usuários\",\n  \"com_ui_share_update_message\": \"Seu nome, instruções personalizadas e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.\",\n  \"com_ui_share_var\": \"Compartilhar {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Endereços partilhados apagados com sucesso\",\n  \"com_ui_shared_link_delete_success\": \"Endereço partilhado apagado com sucesso\",\n  \"com_ui_shared_link_not_found\": \"Link compartilhado não encontrado\",\n  \"com_ui_shared_prompts\": \"Prompts Compartilhados\",\n  \"com_ui_shop\": \"Compras\",\n  \"com_ui_show_all\": \"Mostrar Todos\",\n  \"com_ui_show_qr\": \"Mostrar QR Code\",\n  \"com_ui_sign_in_to_domain\": \"Autenticar em {{0}}\",\n  \"com_ui_simple\": \"Simples\",\n  \"com_ui_size\": \"Tamanho\",\n  \"com_ui_special_variables\": \"Variáveis especiais:\",\n  \"com_ui_special_variables_info\": \"Use `{{current_date}}` para a data atual, e `{{current_user}}` para o nome da sua conta.\",\n  \"com_ui_speech_while_submitting\": \"Não é possível submeter fala enquanto a resposta está a ser gerada.\",\n  \"com_ui_stop\": \"Parar\",\n  \"com_ui_storage\": \"Armazenamento\",\n  \"com_ui_submit\": \"Enviar\",\n  \"com_ui_teach_or_explain\": \"A aprender\",\n  \"com_ui_temporary_chat\": \"Conversa temporária\",\n  \"com_ui_terms_and_conditions\": \"Termos e Condições\",\n  \"com_ui_terms_of_service\": \"Termos de Serviço\",\n  \"com_ui_thinking\": \"A pensar...\",\n  \"com_ui_thoughts\": \"Raciocínio\",\n  \"com_ui_token_exchange_method\": \"Método de troca de Token\",\n  \"com_ui_token_url\": \"Endereço do Token\",\n  \"com_ui_tools\": \"Ferramentas\",\n  \"com_ui_travel\": \"Viajar\",\n  \"com_ui_unarchive\": \"Desarquivar\",\n  \"com_ui_unarchive_error\": \"Falha ao desarquivar conversa\",\n  \"com_ui_unknown\": \"Desconhecido\",\n  \"com_ui_update\": \"Atualizar\",\n  \"com_ui_upload\": \"Carregar\",\n  \"com_ui_upload_code_files\": \"Enviar para o interpretador de código\",\n  \"com_ui_upload_delay\": \"O upload de \\\"{{0}}\\\" está demorando mais do que o esperado. Por favor, aguarde enquanto o arquivo termina de ser indexado para recuperação.\",\n  \"com_ui_upload_error\": \"Houve um erro ao carregar seu arquivo\",\n  \"com_ui_upload_file_search\": \"Enviar para a pesquisa de Ficheiro\",\n  \"com_ui_upload_files\": \"Carregar arquivos\",\n  \"com_ui_upload_image\": \"Carregar uma imagem\",\n  \"com_ui_upload_image_input\": \"Inserir Imagem\",\n  \"com_ui_upload_invalid\": \"Arquivo inválido para upload. Deve ser uma imagem não excedendo o limite\",\n  \"com_ui_upload_invalid_var\": \"Arquivo inválido para upload. Deve ser uma imagem não excedendo {{0}} MB\",\n  \"com_ui_upload_success\": \"Arquivo carregado com sucesso\",\n  \"com_ui_upload_type\": \"Escolher tipo de Carregamento\",\n  \"com_ui_use_micrphone\": \"Usar microfone\",\n  \"com_ui_use_prompt\": \"Usar prompt\",\n  \"com_ui_variables\": \"Variáveis\",\n  \"com_ui_variables_info\": \"Use chaves duplas no seu texto para criar variáveis, por exemplo, `{{exemplo de variável}}`, para preencher posteriormente ao usar o prompt.\",\n  \"com_ui_version_var\": \"Versão {{0}}\",\n  \"com_ui_versions\": \"Versões\",\n  \"com_ui_view_source\": \"Ver fonte da conversa\",\n  \"com_ui_write\": \"A escrever\",\n  \"com_ui_yes\": \"Sim\",\n  \"com_ui_zoom\": \"Ampliar\",\n  \"com_user_message\": \"Você\",\n  \"com_warning_resubmit_unsupported\": \"O reenvio da mensagem de IA não é suportado por este endereço.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/ru/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"ИИ продолжает составлять ответ\",\n  \"com_a11y_end\": \"ИИ закончил свой ответ\",\n  \"com_a11y_start\": \"ИИ начал отвечать\",\n  \"com_agents_allow_editing\": \"Разрешить другим пользователям редактировать вашего агента\",\n  \"com_agents_by_librechat\": \"от LibreChat\",\n  \"com_agents_code_interpreter\": \"При включении позволяет агенту использовать API интерпретатора кода LibreChat для безопасного выполнения сгенерированного кода, включая обработку файлов. Требуется действующий ключ API.\",\n  \"com_agents_code_interpreter_title\": \"API Интерпретатора кода\",\n  \"com_agents_create_error\": \"Произошла ошибка при создании вашего агента\",\n  \"com_agents_description_placeholder\": \"Необязательно: описание вашего агента\",\n  \"com_agents_enable_file_search\": \"Включить поиск файлов\",\n  \"com_agents_file_search_disabled\": \"Для загрузки файлов в Поиск необходимо сначала создать агента\",\n  \"com_agents_file_search_info\": \"При включении агент получит доступ к точным названиям файлов, перечисленным ниже, что позволит ему извлекать из них релевантный контекст.\",\n  \"com_agents_instructions_placeholder\": \"Системные инструкции, используемые агентом\",\n  \"com_agents_missing_provider_model\": \"Выберите провайдера и модель перед созданием агента\",\n  \"com_agents_name_placeholder\": \"Необязательно: имя агента\",\n  \"com_agents_no_access\": \"У вас нет прав для редактирования этого агента\",\n  \"com_agents_not_available\": \"Агент недоступен\",\n  \"com_agents_search_name\": \"Поиск агентов по имени\",\n  \"com_agents_update_error\": \"Произошла ошибка при обновлении вашего агента.\",\n  \"com_assistants_actions\": \"Действия\",\n  \"com_assistants_actions_disabled\": \"Вам нужно сохранить ассистента, прежде чем добавлять Actions.\",\n  \"com_assistants_actions_info\": \"Позвольте вашему ассистенту получать информацию или выполнять действия через API\",\n  \"com_assistants_add_actions\": \"Добавить действия\",\n  \"com_assistants_add_tools\": \"Добавить инструменты\",\n  \"com_assistants_append_date\": \"Добавить текущую дату и время\",\n  \"com_assistants_append_date_tooltip\": \"Когда включено, текущая дата и время клиента будут добавлены к инструкциям системы Ассистента.\",\n  \"com_assistants_available_actions\": \"Доступные действия\",\n  \"com_assistants_capabilities\": \"Возможности\",\n  \"com_assistants_code_interpreter\": \"Интерпретатор кода\",\n  \"com_assistants_code_interpreter_files\": \"Следующие файлы доступны только для Интерпретатора кода:\",\n  \"com_assistants_code_interpreter_info\": \"Интерпретатор кода позволяет ассистенту создавать и выполнять код. Этот инструмент может обрабатывать файлы с различными данными и форматами, а также создавать файлы, например графики.\",\n  \"com_assistants_completed_action\": \"Общался с {{0}}\",\n  \"com_assistants_completed_function\": \"Выполнено: {{0}}\",\n  \"com_assistants_conversation_starters\": \"Примеры запросов\",\n  \"com_assistants_conversation_starters_placeholder\": \"Введите начальную фразу для разговора\",\n  \"com_assistants_create_error\": \"Произошла ошибка при сохранении вашего ассистента.\",\n  \"com_assistants_create_success\": \"Успешно сохранено\",\n  \"com_assistants_delete_actions_error\": \"Произошла ошибка при удалении действия.\",\n  \"com_assistants_delete_actions_success\": \"Действие успешно удалено из ассистента\",\n  \"com_assistants_description_placeholder\": \"Необязательно: описание вашего ассистента\",\n  \"com_assistants_domain_info\": \"Ассистент отправил эту информацию {{0}}\",\n  \"com_assistants_file_search\": \"Поиск файлов\",\n  \"com_assistants_file_search_info\": \"Прикрепление векторных хранилищ для Поиска по файлам пока не поддерживается. Вы можете прикрепить их из Песочницы провайдера или прикрепить файлы к сообщениям для поиска по файлам в отдельных диалогах.\",\n  \"com_assistants_function_use\": \"Ассистент использовал {{0}}\",\n  \"com_assistants_image_vision\": \"Анализ изображений\",\n  \"com_assistants_instructions_placeholder\": \"Системные инструкции, которые использует ассистент\",\n  \"com_assistants_knowledge\": \"База знаний\",\n  \"com_assistants_knowledge_disabled\": \"Ассистент должен быть сохранён, и Интерпретатор кода (Code Interpreter) или Поиск (Retrieval) должны быть включены и сохранены перед загрузкой файлов к Базе Знаний.\",\n  \"com_assistants_knowledge_info\": \"Если вы загрузите файлы в раздел Знания, чаты с вашим ассистентом могут включать содержимое файлов.\",\n  \"com_assistants_max_starters_reached\": \"Достигнуто максимальное количество начальных подсказок\",\n  \"com_assistants_name_placeholder\": \"Необязательно: имя ассистента\",\n  \"com_assistants_non_retrieval_model\": \"Поиск по файлам недоступен для этой модели. Пожалуйста, выберите другую модель.\",\n  \"com_assistants_retrieval\": \"Поиск (Retrieval)\",\n  \"com_assistants_running_action\": \"Выполняется действие\",\n  \"com_assistants_search_name\": \"Поиск ассистентов по имени\",\n  \"com_assistants_update_actions_error\": \"Произошла ошибка при создании или обновлении действия.\",\n  \"com_assistants_update_actions_success\": \"Действие успешно создано или обновлено\",\n  \"com_assistants_update_error\": \"Произошла ошибка при обновлении вашего ассистента.\",\n  \"com_assistants_update_success\": \"Успешно обновлено\",\n  \"com_auth_already_have_account\": \"Уже зарегистрированы?\",\n  \"com_auth_back_to_login\": \"Вернуться к авторизации\",\n  \"com_auth_click\": \"Нажмите\",\n  \"com_auth_click_here\": \"Нажмите здесь\",\n  \"com_auth_continue\": \"Продолжить\",\n  \"com_auth_create_account\": \"Создать аккаунт\",\n  \"com_auth_discord_login\": \"Войти с помощью Discord\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Адрес электронной почты\",\n  \"com_auth_email_max_length\": \"Email не может быть длиннее 120 символов\",\n  \"com_auth_email_min_length\": \"Email должен содержать не менее 6 символов\",\n  \"com_auth_email_pattern\": \"Вы должны ввести действительный адрес электронной почты\",\n  \"com_auth_email_required\": \"Email обязателен\",\n  \"com_auth_email_resend_link\": \"Отправить письмо повторно\",\n  \"com_auth_email_resent_failed\": \"Не удалось повторно отправить письмо для подтверждения\",\n  \"com_auth_email_resent_success\": \"Письмо с подтверждением успешно отправлено повторно\",\n  \"com_auth_email_verification_failed\": \"Не удалось выполнить проверку электронной почты\",\n  \"com_auth_email_verification_failed_token_missing\": \"Ошибка верификации: отсутствует токен подтверждения\",\n  \"com_auth_email_verification_in_progress\": \"Подождите, идет проверка вашего email\",\n  \"com_auth_email_verification_invalid\": \"Неверная верификация электронной почты\",\n  \"com_auth_email_verification_redirecting\": \"Перенаправление через {{0}} сек...\",\n  \"com_auth_email_verification_resend_prompt\": \"Не получили письмо?\",\n  \"com_auth_email_verification_success\": \"Адрес электронной почты успешно подтвержден\",\n  \"com_auth_error_create\": \"Возникла ошибка при попытке зарегистрировать ваш аккаунт. Пожалуйста, попробуйте еще раз.\",\n  \"com_auth_error_invalid_reset_token\": \"Этот токен сброса пароля больше не действителен.\",\n  \"com_auth_error_login\": \"Не удалось войти с предоставленной информацией. Пожалуйста, проверьте ваши учетные данные и попробуйте снова.\",\n  \"com_auth_error_login_ban\": \"Ваша учетная запись была временно заблокирована в связи с нарушениями нашего сервиса.\",\n  \"com_auth_error_login_rl\": \"Слишком много попыток входа в систему за короткий промежуток времени. Пожалуйста, повторите попытку позже.\",\n  \"com_auth_error_login_server\": \"Произошла внутренняя ошибка сервера. Пожалуйста, подождите несколько минут и повторите попытку.\",\n  \"com_auth_error_login_unverified\": \"Ваша учетная запись не подтверждена. Пожалуйста, проверьте вашу электронную почту и перейдите по ссылке для подтверждения.\",\n  \"com_auth_facebook_login\": \"Войти с помощью Facebook\",\n  \"com_auth_full_name\": \"Полное имя\",\n  \"com_auth_github_login\": \"Войти с помощью Github\",\n  \"com_auth_google_login\": \"Войти с помощью Google\",\n  \"com_auth_here\": \"ЗДЕСЬ\",\n  \"com_auth_login\": \"Войти\",\n  \"com_auth_login_with_new_password\": \"Теперь вы можете войти с новым паролем.\",\n  \"com_auth_name_max_length\": \"Имя должно быть короче 80 символов\",\n  \"com_auth_name_min_length\": \"Имя должно содержать не менее 3 символов\",\n  \"com_auth_name_required\": \"Имя обязательно\",\n  \"com_auth_no_account\": \"Еще не зарегистрированы?\",\n  \"com_auth_password\": \"Пароль\",\n  \"com_auth_password_confirm\": \"Подтвердите пароль\",\n  \"com_auth_password_forgot\": \"Забыли пароль?\",\n  \"com_auth_password_max_length\": \"Пароль должен быть не более 128 символов\",\n  \"com_auth_password_min_length\": \"Пароль должен содержать не менее 8 символов\",\n  \"com_auth_password_not_match\": \"Пароли не совпадают\",\n  \"com_auth_password_required\": \"Пароль обязателен\",\n  \"com_auth_registration_success_generic\": \"Пожалуйста, проверьте вашу почту для подтверждения email-адреса\",\n  \"com_auth_registration_success_insecure\": \"Регистрация успешно завершена\",\n  \"com_auth_reset_password\": \"Сбросить пароль\",\n  \"com_auth_reset_password_if_email_exists\": \"Если аккаунт с указанным адресом существует, мы отправили на него инструкции по сбросу пароля. Пожалуйста, проверьте также папку \\\"Спам\\\".\",\n  \"com_auth_reset_password_link_sent\": \"Письмо отправлено\",\n  \"com_auth_reset_password_success\": \"Сброс пароля успешно выполнен\",\n  \"com_auth_sign_in\": \"Войти\",\n  \"com_auth_sign_up\": \"Зарегистрироваться\",\n  \"com_auth_submit_registration\": \"Отправить регистрацию\",\n  \"com_auth_to_reset_your_password\": \"чтобы сбросить ваш пароль.\",\n  \"com_auth_to_try_again\": \"чтобы попробовать снова.\",\n  \"com_auth_username\": \"Имя пользователя (необязательно)\",\n  \"com_auth_username_max_length\": \"Имя пользователя должно быть не более 20 символов\",\n  \"com_auth_username_min_length\": \"Имя пользователя должно содержать не менее 2 символов\",\n  \"com_auth_welcome_back\": \"Добро пожаловать\",\n  \"com_click_to_download\": \"(нажмите для скачивания)\",\n  \"com_download_expired\": \"срок скачивания истек\",\n  \"com_download_expires\": \"(нажмите здесь для скачивания - срок действия до {{0}})\",\n  \"com_endpoint\": \"Эндпоинт\",\n  \"com_endpoint_agent\": \"Агент\",\n  \"com_endpoint_agent_model\": \"Модель агента (Рекомендуется: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Выберите Агента\",\n  \"com_endpoint_ai\": \"ИИ\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Максимальное количество токенов, которые могут быть сгенерированы в ответе. Укажите меньшее значение для более коротких ответов и большее значение для более длинных ответов.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"Кэширование промтов позволяет повторно использовать большой контекст или инструкции между API-запросами, снижая затраты и задержки\",\n  \"com_endpoint_anthropic_temp\": \"Диапазон значений от 0 до 1. Используйте значение temp ближе к 0 для аналитических / множественного выбора и ближе к 1 для креативных и генеративных задач. Мы рекомендуем изменять это или Top P, но не оба значения одновременно.\",\n  \"com_endpoint_anthropic_topk\": \"Top K изменяет то, как модель выбирает токены для вывода. Top K равное 1 означает, что выбирается наиболее вероятный токен из всего словаря модели (так называемое жадное декодирование), а Top K равное 3 означает, что следующий токен выбирается из трех наиболее вероятных токенов (с использованием температуры).\",\n  \"com_endpoint_anthropic_topp\": \"Top P изменяет то, как модель выбирает токены для вывода. Токены выбираются из наиболее вероятных (см. параметр topK) до наименее вероятных, пока сумма их вероятностей не достигнет значения top-p.\",\n  \"com_endpoint_assistant\": \"Ассистент\",\n  \"com_endpoint_assistant_model\": \"Модель ассистента\",\n  \"com_endpoint_assistant_placeholder\": \"Выберите ассистента в правой боковой панели\",\n  \"com_endpoint_completion\": \"Завершение\",\n  \"com_endpoint_completion_model\": \"Модель завершения (Рекомендуется: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Нажми Здесь\",\n  \"com_endpoint_config_google_api_info\": \"Чтобы получить ключ к API Generative Language (для Gemini),\",\n  \"com_endpoint_config_google_api_key\": \"Google API Key\",\n  \"com_endpoint_config_google_cloud_platform\": \"(из Google Cloud Platform)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google Service Account Key\",\n  \"com_endpoint_config_key\": \"Указать ключ к API\",\n  \"com_endpoint_config_key_encryption\": \"Ваш ключ зашифрован и будет удалён\",\n  \"com_endpoint_config_key_for\": \"Установить ключ к API для\",\n  \"com_endpoint_config_key_google_need_to\": \"Вам нужно\",\n  \"com_endpoint_config_key_google_service_account\": \"Создать Service Account\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Активировать Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API в Google Cloud, после\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Убедитесь что нажали на 'Create and Continue' чтобы получить как минимум 'Vertex AI User'. Наконец, создайте JSON-ключ чтобы импортировать его сюда.\",\n  \"com_endpoint_config_key_import_json_key\": \"Импортировать Service Account JSON Key.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Некорректный Service Account JSON Key, Вы импортировали верный файл?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Успешно Импортирован Service Account JSON Key\",\n  \"com_endpoint_config_key_name\": \"Ключ\",\n  \"com_endpoint_config_key_never_expires\": \"Ваш ключ будет действовать бессрочно\",\n  \"com_endpoint_config_placeholder\": \"Укажите ваш ключ к API в меню сверху для начала разговора.\",\n  \"com_endpoint_config_value\": \"Введите значение для\",\n  \"com_endpoint_context\": \"Контекст\",\n  \"com_endpoint_context_info\": \"Максимальное количество токенов, которое может быть использовано для контекста. Используется для контроля количества токенов, отправляемых за один запрос. Если не указано, будут использованы системные значения по умолчанию, основанные на известном размере контекста моделей. Установка более высоких значений может привести к ошибкам и/или более высокой стоимости токенов.\",\n  \"com_endpoint_context_tokens\": \"Максимальное количество контекстных токенов\",\n  \"com_endpoint_custom_name\": \"Кастомное имя\",\n  \"com_endpoint_default\": \"по умолчанию\",\n  \"com_endpoint_default_blank\": \"по умолчанию: пусто\",\n  \"com_endpoint_default_empty\": \"по умолчанию: пусто\",\n  \"com_endpoint_default_with_num\": \"по умолчанию: {{0}}\",\n  \"com_endpoint_examples\": \"Примеры\",\n  \"com_endpoint_export\": \"Экспорт\",\n  \"com_endpoint_export_share\": \"Экспорт/Поделиться\",\n  \"com_endpoint_frequency_penalty\": \"Штраф за частоту\",\n  \"com_endpoint_func_hover\": \"Включить использование плагинов как функции OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Задайте кастомное имя для Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Максимальное количество токенов, которые могут быть сгенерированы в ответе. Укажите меньшее значение для более коротких ответов и большее значение для более длинных ответов.\",\n  \"com_endpoint_google_temp\": \"Более высокие значения = более случайные результаты, более низкие значения = более фокусированные и детерминированные результаты. Мы рекомендуем изменять это или Top P, но не оба значения одновременно.\",\n  \"com_endpoint_google_topk\": \"Top-k изменяет то, как модель выбирает токены для вывода. Top-k равное 1 означает, что выбирается наиболее вероятный токен из всего словаря модели (так называемое жадное декодирование), а Top-k равное 3 означает, что следующий токен выбирается из трех наиболее вероятных токенов (с использованием температуры).\",\n  \"com_endpoint_google_topp\": \"Top-p изменяет то, как модель выбирает токены для вывода. Токены выбираются из наиболее вероятных K (см. параметр topK) до наименее вероятных, пока сумма их вероятностей не достигнет значения top-p.\",\n  \"com_endpoint_instructions_assistants\": \"Инструкции для ассистентов\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Переопределяет инструкции для ассистента. Это полезно для изменения поведения для отдельного запуска.\",\n  \"com_endpoint_max_output_tokens\": \"Максимальное количество выводимых токенов\",\n  \"com_endpoint_message\": \"Сообщение\",\n  \"com_endpoint_message_new\": \"Сообщение {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Отредактируйте свое сообщение или перегенерируйте.\",\n  \"com_endpoint_my_preset\": \"Мой Пресет\",\n  \"com_endpoint_no_presets\": \"Пока нет пресетов, используйте кнопку настроек чтобы создать его\",\n  \"com_endpoint_open_menu\": \"Открыть меню\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Задайте кастомное имя для ChatGPT\",\n  \"com_endpoint_openai_detail\": \"Разрешение для запросов Vision. \\\"Низкое\\\" - дешевле и быстрее, \\\"Высокое\\\" - более детализировано и дорогое, а \\\"Авто\\\" автоматически выберет один из двух вариантов в зависимости от разрешения изображения.\",\n  \"com_endpoint_openai_freq\": \"Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе их частоты в тексте до сих пор, уменьшая вероятность модели повторить ту же строку дословно.\",\n  \"com_endpoint_openai_max\": \"Максимальное количество генерируемых токенов. Общая длина входных токенов и сгенерированных токенов ограничена длиной контекста модели.\",\n  \"com_endpoint_openai_max_tokens\": \"Необязательное поле `max_tokens`, задающее максимальное количество токенов, которое может быть сгенерировано в ответе чата. Общая длина входных токенов и сгенерированных токенов ограничена длиной контекста модели. Вы можете получить ошибку, если это число превысит максимальную длину контекста.\",\n  \"com_endpoint_openai_pres\": \"Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе того, появляются ли они в тексте до сих пор, увеличивая вероятность модели говорить о новых темах.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Задайте кастомные промпты для включения в системное сообщение. По умолчанию: нет\",\n  \"com_endpoint_openai_resend\": \"Повторно отправить все ранее прикрепленные изображения. Примечание: это может значительно увеличить стоимость токенов, и при большом количестве прикрепленных изображений могут возникнуть ошибки.\",\n  \"com_endpoint_openai_resend_files\": \"Повторно отправить все ранее прикрепленные файлы. Примечание: это увеличит расход токенов, и при большом количестве вложений могут возникнуть ошибки.\",\n  \"com_endpoint_openai_stop\": \"До 4 последовательностей, после которых API прекратит генерировать дальнейшие токены.\",\n  \"com_endpoint_openai_temp\": \"Более высокие значения = более случайные результаты, более низкие значения = более фокусированные и детерминированные результаты. Мы рекомендуем изменять это или Top P, но не оба значения одновременно.\",\n  \"com_endpoint_openai_topp\": \"Альтернатива выбору с использованием температуры, называемая выбором по ядру, при которой модель учитывает результаты токенов с наибольшей вероятностью top_p. Таким образом, значение 0,1 означает, что рассматриваются только токены, составляющие верхние 10% вероятностной массы. Мы рекомендуем изменять это или температуру, но не оба значения одновременно.\",\n  \"com_endpoint_output\": \"Вывод\",\n  \"com_endpoint_plug_image_detail\": \"Детали изображения\",\n  \"com_endpoint_plug_resend_files\": \"Повторить отправку файлов\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Задайте кастомные инструкции для включения в системное сообщение. По умолчанию: нет\",\n  \"com_endpoint_plug_skip_completion\": \"Пропустить завершение\",\n  \"com_endpoint_plug_use_functions\": \"Использовать функции\",\n  \"com_endpoint_presence_penalty\": \"Штраф за присутствие\",\n  \"com_endpoint_preset\": \"пресет\",\n  \"com_endpoint_preset_default\": \"теперь пресет \\\"По умолчаанию\\\".\",\n  \"com_endpoint_preset_default_item\": \"По умолчанию:\",\n  \"com_endpoint_preset_default_none\": \"Активных пресетов по умолчанию нет.\",\n  \"com_endpoint_preset_default_removed\": \"больше не пресет по умолчанию.\",\n  \"com_endpoint_preset_delete_confirm\": \"Вы уверены, что хотите удалить этот пресет?\",\n  \"com_endpoint_preset_delete_error\": \"Произошла ошибка при удалении вашего пресета. Пожалуйста, попробуйте еще раз.\",\n  \"com_endpoint_preset_import\": \"Пресет Импортирован!\",\n  \"com_endpoint_preset_import_error\": \"Произошла ошибка при импорте вашего пресета. Пожалуйста, попробуйте еще раз.\",\n  \"com_endpoint_preset_name\": \"Имя пресета\",\n  \"com_endpoint_preset_save_error\": \"Произошла ошибка при сохранении вашего пресета. Пожалуйста, попробуйте еще раз.\",\n  \"com_endpoint_preset_selected\": \"Пресет Активирован!\",\n  \"com_endpoint_preset_selected_title\": \"Активирован!\",\n  \"com_endpoint_preset_title\": \"Пресет\",\n  \"com_endpoint_presets\": \"пресеты\",\n  \"com_endpoint_presets_clear_warning\": \"Вы уверены, что хотите удалить все пресеты? Это действие необратимо и восстановление невозможно.\",\n  \"com_endpoint_prompt_cache\": \"Использовать кэширование промтов\",\n  \"com_endpoint_prompt_prefix\": \"Префикс промпта\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Дополнительные инструкции\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Задайте дополнительные инструкции или контекст сверху основных инструкций ассистента. Игнорируется, если пусто.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Задайте пользовательские инструкции или контекст. Игнорируется, если пусто.\",\n  \"com_endpoint_save_as_preset\": \"Сохранить как Пресет\",\n  \"com_endpoint_search\": \"Поиск эндпоинта по имени\",\n  \"com_endpoint_set_custom_name\": \"Задайте кастомное имя на случай, если вы сможете найти эту предустановку :)\",\n  \"com_endpoint_skip_hover\": \"Пропустить этап завершения, который проверяет окончательный ответ и сгенерированные шаги\",\n  \"com_endpoint_stop\": \"Стоп-последовательности\",\n  \"com_endpoint_stop_placeholder\": \"Разделяйте значения нажатием `Enter`\",\n  \"com_endpoint_temperature\": \"Температура\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Использовать активного ассистента\",\n  \"com_error_expired_user_key\": \"Предоставленный ключ для {{0}} истек {{1}}. Пожалуйста, укажите новый ключ и повторите попытку.\",\n  \"com_error_files_dupe\": \"Обнаружен дублирующийся файл\",\n  \"com_error_files_empty\": \"Пустые файлы не допускаются\",\n  \"com_error_files_process\": \"Произошла ошибка при обработке файла\",\n  \"com_error_files_unsupported_capability\": \"Отсутствуют разрешения для работы с данным типом файлов\",\n  \"com_error_files_upload\": \"При загрузке файла произошла ошибка\",\n  \"com_error_files_upload_canceled\": \"Запрос на загрузку файла был отменен. Примечание: файл все еще может обрабатываться и потребуется удалить его вручную.\",\n  \"com_error_files_validation\": \"Произошла ошибка при проверке файла\",\n  \"com_error_input_length\": \"Последнее сообщение слишком длинное и превышает допустимый лимит токенов ({{0}}). Пожалуйста, сократите сообщение, измените максимальный размер контекста в параметрах беседы или создайте ответвление беседы для продолжения.\",\n  \"com_error_invalid_user_key\": \"Предоставлен некорректный ключ. Пожалуйста, укажите действительный ключ и повторите попытку.\",\n  \"com_error_moderation\": \"К сожалению, отправленный вами контент был помечен нашей системой модерации как не соответствующий правилам сообщества. Мы не можем продолжить обсуждение этой конкретной темы. Если у вас есть другие вопросы или темы, которые вы хотели бы обсудить, пожалуйста, отредактируйте сообщение или начните новый диалог.\",\n  \"com_error_no_base_url\": \"Базовый URL не найден. Пожалуйста, укажите его и повторите попытку.\",\n  \"com_error_no_user_key\": \"Ключ не найден. Пожалуйста, укажите ключ и повторите попытку.\",\n  \"com_files_filter\": \"Фильтр файлов\",\n  \"com_files_no_results\": \"Нет результатов\",\n  \"com_files_number_selected\": \"Выбрано {{0}} из {{1}} файл(а/ов)\",\n  \"com_generated_files\": \"Сгенерированные файлы:\",\n  \"com_hide_examples\": \"Скрыть примеры\",\n  \"com_nav_account_settings\": \"Настройки аккаунта\",\n  \"com_nav_always_make_prod\": \"Автоматически публиковать новые версии\",\n  \"com_nav_archive_created_at\": \"Дата создания\",\n  \"com_nav_archive_name\": \"Имя\",\n  \"com_nav_archived_chats\": \"Архивированные чаты\",\n  \"com_nav_archived_chats_empty\": \"У вас нет архивированных чатов.\",\n  \"com_nav_at_command\": \"@-команда\",\n  \"com_nav_at_command_description\": \"Переключение команды \\\"@\\\" для выбора эндпоинтов, моделей, пресетов и др.\",\n  \"com_nav_audio_play_error\": \"Ошибка воспроизведения аудио: {{0}}\",\n  \"com_nav_audio_process_error\": \"Ошибка обработки аудио: {{0}}\",\n  \"com_nav_auto_scroll\": \"Автоматически проматывать к самым новым сообщениям при открытии\",\n  \"com_nav_auto_send_prompts\": \"Автоотправка промптов\",\n  \"com_nav_auto_send_text\": \"Автоотправка сообщений\",\n  \"com_nav_auto_send_text_disabled\": \"установите -1 для отключения\",\n  \"com_nav_auto_transcribe_audio\": \"Автоматическая транскрипция\",\n  \"com_nav_automatic_playback\": \"Автовоспроизведение последнего сообщения\",\n  \"com_nav_balance\": \"Баланс\",\n  \"com_nav_browser\": \"Браузер\",\n  \"com_nav_buffer_append_error\": \"Проблема с потоковым аудио. Воспроизведение может прерываться.\",\n  \"com_nav_change_picture\": \"Изменить изображение\",\n  \"com_nav_chat_commands\": \"Команды чата\",\n  \"com_nav_chat_commands_info\": \"Эти команды активируются при вводе определенных символов в начале вашего сообщения. Каждая команда запускается своим префиксом. Вы можете отключить их, если часто используете эти символы для начала сообщений.\",\n  \"com_nav_chat_direction\": \"Направление чата\",\n  \"com_nav_clear_all_chats\": \"Удалить все чаты\",\n  \"com_nav_clear_cache_confirm_message\": \"Вы уверены, что хотите очистить кэш?\",\n  \"com_nav_clear_conversation\": \"Удалить чаты\",\n  \"com_nav_clear_conversation_confirm_message\": \"Вы уверены, что хотите удалить все чаты? Это действие нельзя отменить.\",\n  \"com_nav_close_sidebar\": \"Закрыть боковую панель\",\n  \"com_nav_commands\": \"Команды\",\n  \"com_nav_confirm_clear\": \"Подтвердить удаление\",\n  \"com_nav_conversation_mode\": \"Режим диалога\",\n  \"com_nav_convo_menu_options\": \"Параметры диалога\",\n  \"com_nav_db_sensitivity\": \"Чувствительность в децибелах\",\n  \"com_nav_delete_account\": \"Удалить аккаунт\",\n  \"com_nav_delete_account_button\": \"Удалить аккаунт навсегда\",\n  \"com_nav_delete_account_confirm\": \"Вы уверены, что хотите удалить аккаунт?\",\n  \"com_nav_delete_account_email_placeholder\": \"Введите email вашего аккаунта\",\n  \"com_nav_delete_cache_storage\": \"Очистить кэш озвучивания\",\n  \"com_nav_delete_data_info\": \"Все ваши данные будут удалены\",\n  \"com_nav_delete_warning\": \"ВНИМАНИЕ: Ваша учетная запись будет удалена без возможности восстановления.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"Включить кэширование TTS\",\n  \"com_nav_enable_cloud_browser_voice\": \"Использовать облачные голоса\",\n  \"com_nav_enabled\": \"Включено\",\n  \"com_nav_engine\": \"Модель\",\n  \"com_nav_enter_to_send\": \"Отправить сообщение нажатием Enter\",\n  \"com_nav_export\": \"Экспорт\",\n  \"com_nav_export_all_message_branches\": \"Экспортировать все ветки сообщений\",\n  \"com_nav_export_conversation\": \"Экспортировать разговор\",\n  \"com_nav_export_filename\": \"Имя файла\",\n  \"com_nav_export_filename_placeholder\": \"Задайте имя файла\",\n  \"com_nav_export_include_endpoint_options\": \"Включить параметры эндпоинта\",\n  \"com_nav_export_recursive\": \"Рекурсивно\",\n  \"com_nav_export_recursive_or_sequential\": \"Рекурсивно или последовательно?\",\n  \"com_nav_export_type\": \"Тип\",\n  \"com_nav_external\": \"Внешние\",\n  \"com_nav_font_size\": \"Размер шрифта\",\n  \"com_nav_font_size_base\": \"Средний\",\n  \"com_nav_font_size_lg\": \"Крупный\",\n  \"com_nav_font_size_sm\": \"Мелкий\",\n  \"com_nav_font_size_xl\": \"Очень большой\",\n  \"com_nav_font_size_xs\": \"Очень мелкий\",\n  \"com_nav_help_faq\": \"Помощь и Вопросы\",\n  \"com_nav_hide_panel\": \"Скрыть правую боковую панель\",\n  \"com_nav_info_code_artifacts\": \"Включает отображение экспериментального программного кода рядом с чатом\",\n  \"com_nav_info_custom_prompt_mode\": \"При включении этого режима системный промт по умолчанию для создания артефактов не будет использоваться. Все инструкции для генерации артефактов должны задаваться вручную.\",\n  \"com_nav_info_enter_to_send\": \"Если включено, нажатие клавиши Enter отправит ваше сообщение. Если отключено, Enter добавит новую строку, а для отправки сообщения нужно будет нажать CTRL + Enter или ⌘ + Enter.\",\n  \"com_nav_info_fork_change_default\": \"«Только видимые сообщения» включает лишь прямой путь к выбранному сообщению. «Включить связанные ветки» добавляет ответвления вдоль этого пути. «Включить все сообщения до/от этой точки» охватывает все связанные сообщения и ветки.\",\n  \"com_nav_info_fork_split_target_setting\": \"Если включено, ветвление будет выполняться от целевого сообщения до последнего сообщения в диалоге в соответствии с выбранным поведением.\",\n  \"com_nav_info_include_shadcnui\": \"При включении будут добавлены инструкции по использованию компонентов shadcn/ui. shadcn/ui — это набор переиспользуемых компонентов, созданных на основе Radix UI и Tailwind CSS. Примечание: эти инструкции довольно объемные, включайте их только если для вас важно информировать LLM о правильных импортах и компонентах. Подробнее о компонентах можно узнать на сайте: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"При включении этой функции код LaTeX в сообщениях будет отображаться в виде математических формул. Если вам не требуется отображение LaTeX, отключение этой функции может улучшить производительность.\",\n  \"com_nav_info_save_draft\": \"При включении этой функции текст и прикрепленные файлы, введенные в форму чата, будут автоматически сохраняться локально как черновики. Эти черновики останутся доступными даже после перезагрузки страницы или перехода к другому разговору. Черновики хранятся локально на вашем устройстве и удаляются после отправки сообщения.\",\n  \"com_nav_info_user_name_display\": \"Если включено, над каждым вашим сообщением будет отображаться ваше имя пользователя. Если отключено, над вашими сообщениями будет отображаться только \\\"Вы\\\".\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Автоопределение\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Локализация\",\n  \"com_nav_latex_parsing\": \"Обработка LaTeX в сообщениях (может повлиять на производительность)\",\n  \"com_nav_log_out\": \"Выйти\",\n  \"com_nav_long_audio_warning\": \"Обработка длинных текстов займет больше времени\",\n  \"com_nav_maximize_chat_space\": \"Развернуть чат\",\n  \"com_nav_modular_chat\": \"Разрешить менять точки подключения в середине разговора\",\n  \"com_nav_my_files\": \"Мои файлы\",\n  \"com_nav_no_search_results\": \"Ничего не найдено\",\n  \"com_nav_not_supported\": \"Не поддерживается\",\n  \"com_nav_open_sidebar\": \"Открыть боковую панель\",\n  \"com_nav_playback_rate\": \"Скорость воспроизведения\",\n  \"com_nav_plugin_auth_error\": \"При попытке аутентификации этого плагина произошла ошибка. Пожалуйста, попробуйте еще раз.\",\n  \"com_nav_plugin_install\": \"Установить\",\n  \"com_nav_plugin_search\": \"Поиск плагинов\",\n  \"com_nav_plugin_store\": \"Магазин плагинов\",\n  \"com_nav_plugin_uninstall\": \"Удалить\",\n  \"com_nav_plus_command\": \"Добавить команду\",\n  \"com_nav_plus_command_description\": \"Переключить команду ' + ' для настройки множественных ответов\",\n  \"com_nav_profile_picture\": \"Изображение профиля\",\n  \"com_nav_save_drafts\": \"Сохранить черновики локально\",\n  \"com_nav_search_placeholder\": \"Поиск сообщений\",\n  \"com_nav_send_message\": \"Отправить сообщение\",\n  \"com_nav_setting_account\": \"Аккаунт\",\n  \"com_nav_setting_beta\": \"Бета-функции\",\n  \"com_nav_setting_chat\": \"Чат\",\n  \"com_nav_setting_data\": \"Управление данными\",\n  \"com_nav_setting_general\": \"Общие\",\n  \"com_nav_setting_speech\": \"Голос\",\n  \"com_nav_settings\": \"Настройки\",\n  \"com_nav_shared_links\": \"Связываемые ссылки\",\n  \"com_nav_show_code\": \"Всегда показывать код при использовании интерпретатора\",\n  \"com_nav_slash_command\": \"/-Команда\",\n  \"com_nav_slash_command_description\": \"Вызов командной строки клавишей '/' для выбора промта с клавиатуры\",\n  \"com_nav_source_buffer_error\": \"Ошибка при настройке воспроизведения звука. Пожалуйста, обновите страницу.\",\n  \"com_nav_speech_cancel_error\": \"Не удалось остановить воспроизведение аудио. Попробуйте обновить страницу.\",\n  \"com_nav_speech_to_text\": \"Преобразование речи в текст\",\n  \"com_nav_stop_generating\": \"Остановить генерацию\",\n  \"com_nav_text_to_speech\": \"Синтез речи\",\n  \"com_nav_theme\": \"Тема\",\n  \"com_nav_theme_dark\": \"Темная\",\n  \"com_nav_theme_light\": \"Светлая\",\n  \"com_nav_theme_system\": \"Системная\",\n  \"com_nav_tool_dialog\": \"Инструменты ассистента\",\n  \"com_nav_tool_dialog_agents\": \"Инструменты агента\",\n  \"com_nav_tool_dialog_description\": \"Ассистент должен быть сохранен для применения выбранных инструментов.\",\n  \"com_nav_tool_remove\": \"Удалить\",\n  \"com_nav_tool_search\": \"Поиск инструментов\",\n  \"com_nav_tts_init_error\": \"Не удалось инициализировать преобразование текста в речь: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Синтез речи для выбранного движка не поддерживается в этом браузере\",\n  \"com_nav_user\": \"ПОЛЬЗОВАТЕЛЬ\",\n  \"com_nav_user_msg_markdown\": \"Отображать сообщения пользователя в формате Markdown\",\n  \"com_nav_user_name_display\": \"Отображать имя пользователя в сообщениях\",\n  \"com_nav_voice_select\": \"Голос\",\n  \"com_nav_voices_fetch_error\": \"Не удалось загрузить варианты голосов. Проверьте подключение к интернету.\",\n  \"com_nav_welcome_agent\": \"Выберите агента\",\n  \"com_nav_welcome_assistant\": \"Выберите ассистента\",\n  \"com_nav_welcome_message\": \"Чем я могу помочь вам сегодня?\",\n  \"com_show_agent_settings\": \"Настройки агента\",\n  \"com_show_completion_settings\": \"Показать настройки завершения\",\n  \"com_show_examples\": \"Показать примеры\",\n  \"com_sidepanel_agent_builder\": \"Конструктор агента\",\n  \"com_sidepanel_assistant_builder\": \"Конструктор Ассистента\",\n  \"com_sidepanel_attach_files\": \"Прикрепить файлы\",\n  \"com_sidepanel_conversation_tags\": \"Закладки\",\n  \"com_sidepanel_hide_panel\": \"Скрыть панель\",\n  \"com_sidepanel_manage_files\": \"Управление файлами\",\n  \"com_sidepanel_parameters\": \"Параметры\",\n  \"com_sidepanel_select_agent\": \"Выбрать Ассистента\",\n  \"com_sidepanel_select_assistant\": \"Выбрать Ассистента\",\n  \"com_ui_accept\": \"Принимаю\",\n  \"com_ui_add\": \"Добавить\",\n  \"com_ui_add_model_preset\": \"Добавить модель или пресет для дополнительного ответа\",\n  \"com_ui_add_multi_conversation\": \"Добавить несколько бесед\",\n  \"com_ui_admin\": \"Администратор\",\n  \"com_ui_admin_access_warning\": \"Отключение административного доступа к этой функции может вызвать непредвиденные проблемы с интерфейсом, требующие обновления страницы. После сохранения изменений вернуть настройку можно будет только через параметр interface в конфигурационном файле librechat.yaml, что повлияет на все роли.\",\n  \"com_ui_admin_settings\": \"Настройки администратора\",\n  \"com_ui_advanced\": \"Расширенные\",\n  \"com_ui_agent\": \"Агент\",\n  \"com_ui_agent_delete_error\": \"Произошла ошибка при удалении ассистента\",\n  \"com_ui_agent_deleted\": \"Ассистент успешно удален\",\n  \"com_ui_agent_duplicate_error\": \"Произошла ошибка при дублировании ассистента\",\n  \"com_ui_agent_duplicated\": \"Ассистент успешно скопирован\",\n  \"com_ui_agent_editing_allowed\": \"Другие пользователи уже могут редактировать этого ассистента\",\n  \"com_ui_agents\": \"Агенты\",\n  \"com_ui_agents_allow_create\": \"Разрешить создание ассистентов\",\n  \"com_ui_agents_allow_share_global\": \"Разрешить доступ к Агентам всем пользователям\",\n  \"com_ui_agents_allow_use\": \"Разрешить использование ассистентов\",\n  \"com_ui_all\": \"все\",\n  \"com_ui_all_proper\": \"Все\",\n  \"com_ui_archive\": \"Архивировать\",\n  \"com_ui_archive_error\": \"Не удалось заархивировать чат\",\n  \"com_ui_artifact_click\": \"Нажмите, чтобы открыть\",\n  \"com_ui_artifacts\": \"Артефакты\",\n  \"com_ui_artifacts_toggle\": \"Показать/скрыть артефакты\",\n  \"com_ui_ascending\": \"По возрастанию\",\n  \"com_ui_assistant\": \"Помощник\",\n  \"com_ui_assistant_delete_error\": \"Произошла ошибка при удалении ассистента\",\n  \"com_ui_assistant_deleted\": \"Ассистент успешно удален\",\n  \"com_ui_assistants\": \"Ассистенты\",\n  \"com_ui_assistants_output\": \"Вывод ассистентов\",\n  \"com_ui_attach_error\": \"Невозможно прикрепить файл. Создайте новый или выберите разговор, или попробуйте обновить страницу.\",\n  \"com_ui_attach_error_openai\": \"Невозможно прикрепить файлы ассистента к другим режимам\",\n  \"com_ui_attach_error_size\": \"Превышен лимит размера файла для этого режима:\",\n  \"com_ui_attach_error_type\": \"Неподдерживаемый тип файла для этого режима:\",\n  \"com_ui_attach_warn_endpoint\": \"Файлы сторонних приложений могут быть проигнорированы без совместимого плагина\",\n  \"com_ui_attachment\": \"Вложение\",\n  \"com_ui_authentication\": \"Аутентификация\",\n  \"com_ui_avatar\": \"Аватар\",\n  \"com_ui_back_to_chat\": \"Вернуться к чату\",\n  \"com_ui_back_to_prompts\": \"Вернуться к промтам\",\n  \"com_ui_bookmark_delete_confirm\": \"Вы уверены, что хотите удалить эту закладку?\",\n  \"com_ui_bookmarks\": \"Закладки\",\n  \"com_ui_bookmarks_add\": \"Добавить закладку\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Добавить в текущий разговор\",\n  \"com_ui_bookmarks_count\": \"Количество\",\n  \"com_ui_bookmarks_create_error\": \"Произошла ошибка при создании закладки\",\n  \"com_ui_bookmarks_create_exists\": \"Такая закладка уже существует\",\n  \"com_ui_bookmarks_create_success\": \"Закладка успешно создана\",\n  \"com_ui_bookmarks_delete\": \"Удалить закладку\",\n  \"com_ui_bookmarks_delete_error\": \"Произошла ошибка при удалении закладки\",\n  \"com_ui_bookmarks_delete_success\": \"Закладка успешно удалена\",\n  \"com_ui_bookmarks_description\": \"Описание\",\n  \"com_ui_bookmarks_edit\": \"Редактировать закладку\",\n  \"com_ui_bookmarks_filter\": \"Поиск в закладках...\",\n  \"com_ui_bookmarks_new\": \"Новая закладка\",\n  \"com_ui_bookmarks_title\": \"Заголовок\",\n  \"com_ui_bookmarks_update_error\": \"Произошла ошибка при обновлении закладки\",\n  \"com_ui_bookmarks_update_success\": \"Закладка успешно обновлена\",\n  \"com_ui_cancel\": \"Отмена\",\n  \"com_ui_chat\": \"Чат\",\n  \"com_ui_chat_history\": \"История чатов\",\n  \"com_ui_clear\": \"Удалить\",\n  \"com_ui_clear_all\": \"Очистить всё\",\n  \"com_ui_close\": \"Закрыть\",\n  \"com_ui_code\": \"Код\",\n  \"com_ui_collapse_chat\": \"Свернуть чат\",\n  \"com_ui_command_placeholder\": \"Необязательно: введите команду для промта или будет использовано название\",\n  \"com_ui_command_usage_placeholder\": \"Выберите промпт по команде или названию\",\n  \"com_ui_confirm_action\": \"Подтвердить действие\",\n  \"com_ui_context\": \"Контекст\",\n  \"com_ui_continue\": \"Продолжить\",\n  \"com_ui_controls\": \"Управление\",\n  \"com_ui_copied\": \"Скопировано\",\n  \"com_ui_copied_to_clipboard\": \"Скопировано в буфер обмена\",\n  \"com_ui_copy_code\": \"Копировать код\",\n  \"com_ui_copy_link\": \"Скопировать ссылку\",\n  \"com_ui_copy_to_clipboard\": \"Копировать в буфер обмена\",\n  \"com_ui_create\": \"Создать\",\n  \"com_ui_create_link\": \"Создать ссылку\",\n  \"com_ui_create_prompt\": \"Создать промт\",\n  \"com_ui_custom_prompt_mode\": \"Режим пользовательского промта\",\n  \"com_ui_dashboard\": \"Главная панель\",\n  \"com_ui_date\": \"Дата\",\n  \"com_ui_date_april\": \"Апрель\",\n  \"com_ui_date_august\": \"Август\",\n  \"com_ui_date_december\": \"Декабрь\",\n  \"com_ui_date_february\": \"Февраль\",\n  \"com_ui_date_january\": \"Январь\",\n  \"com_ui_date_july\": \"Июль\",\n  \"com_ui_date_june\": \"Июнь\",\n  \"com_ui_date_march\": \"Март\",\n  \"com_ui_date_may\": \"Май\",\n  \"com_ui_date_november\": \"Ноябрь\",\n  \"com_ui_date_october\": \"Октябрь\",\n  \"com_ui_date_previous_30_days\": \"За последние 30 дней\",\n  \"com_ui_date_previous_7_days\": \"Предыдущие 7 дней\",\n  \"com_ui_date_september\": \"Сентябрь\",\n  \"com_ui_date_today\": \"Сегодня\",\n  \"com_ui_date_yesterday\": \"Вчера\",\n  \"com_ui_decline\": \"Не принимаю\",\n  \"com_ui_delete\": \"Удалить\",\n  \"com_ui_delete_action\": \"Удалить действие\",\n  \"com_ui_delete_action_confirm\": \"Вы действительно хотите удалить это действие?\",\n  \"com_ui_delete_agent_confirm\": \"Вы действительно хотите удалить этого агента?\",\n  \"com_ui_delete_assistant_confirm\": \"Вы действительно хотите удалить этого ассистента? Это действие необратимо.\",\n  \"com_ui_delete_confirm\": \"Будет удален следующий чат: \",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Это действие удалит выбранную версию для '{{0}}'. Если других версий не существует, промт будет полностью удален.\",\n  \"com_ui_delete_conversation\": \"Удалить чат?\",\n  \"com_ui_delete_prompt\": \"Удалить промт?\",\n  \"com_ui_delete_shared_link\": \"Удалить общую ссылку?\",\n  \"com_ui_delete_tool\": \"Удалить инструмент\",\n  \"com_ui_delete_tool_confirm\": \"Вы действительно хотите удалить этот инструмент?\",\n  \"com_ui_descending\": \"По убыванию\",\n  \"com_ui_description\": \"Описание\",\n  \"com_ui_description_placeholder\": \"Дополнительно: введите описание для промта\",\n  \"com_ui_download_error\": \"Ошибка загрузки файла. Возможно, файл был удален.\",\n  \"com_ui_dropdown_variables\": \"Выпадающие переменные:\",\n  \"com_ui_dropdown_variables_info\": \"Создавайте пользовательские выпадающие списки для ваших промптов: `{{название_переменной:вариант1|вариант2|вариант3}}`\",\n  \"com_ui_duplicate\": \"Дублировать\",\n  \"com_ui_duplication_error\": \"Не удалось создать копию разговора\",\n  \"com_ui_duplication_processing\": \"Создание копии беседы...\",\n  \"com_ui_duplication_success\": \"Разговор успешно скопирован\",\n  \"com_ui_edit\": \"Редактировать\",\n  \"com_ui_endpoint\": \"Эндпоинт\",\n  \"com_ui_endpoint_menu\": \"Меню настроек LLM\",\n  \"com_ui_endpoints_available\": \"Доступные эндпоинты\",\n  \"com_ui_enter\": \"Ввести\",\n  \"com_ui_enter_api_key\": \"Введите API-ключ\",\n  \"com_ui_enter_openapi_schema\": \"Введите вашу OpenAPI схему\",\n  \"com_ui_enter_var\": \"Введите {{0}}\",\n  \"com_ui_error\": \"Ошибка\",\n  \"com_ui_error_connection\": \"Ошибка подключения к серверу. Попробуйте обновить страницу.\",\n  \"com_ui_error_save_admin_settings\": \"Произошла ошибка при сохранении настроек администратора\",\n  \"com_ui_examples\": \"Примеры\",\n  \"com_ui_export_convo_modal\": \"Экспорт беседы\",\n  \"com_ui_field_required\": \"Это поле обязательно для заполнения\",\n  \"com_ui_filter_prompts_name\": \"Фильтровать промты по названию\",\n  \"com_ui_fork\": \"Разделить\",\n  \"com_ui_fork_all_target\": \"Включить все сюда\",\n  \"com_ui_fork_branches\": \"Включить связанные ветки\",\n  \"com_ui_fork_change_default\": \"Изменить вариант ветвления по умолчанию\",\n  \"com_ui_fork_default\": \"Использовать вариант по умолчанию\",\n  \"com_ui_fork_error\": \"Произошла ошибка при создании ответвления разговора\",\n  \"com_ui_fork_from_message\": \"Выберите вариант ответвления\",\n  \"com_ui_fork_info_1\": \"Используйте эту настройку для разделения сообщений с нужным поведением.\",\n  \"com_ui_fork_info_2\": \"\\\"Форкинг\\\" означает создание новой ветви разговора, которая начинается или заканчивается на определенных сообщениях текущего разговора, создавая копию в соответствии с выбранными параметрами.\",\n  \"com_ui_fork_info_3\": \"\\\"Целевое сообщение\\\" относится либо к сообщению, из которого было открыто это всплывающее окно, либо, если вы отметите \\\"{{0}}\\\", к последнему сообщению в диалоге.\",\n  \"com_ui_fork_info_branches\": \"Эта опция создает ветвление видимых сообщений вместе со связанными ветвями; другими словами, прямой путь к целевому сообщению, включая ветви на этом пути.\",\n  \"com_ui_fork_info_remember\": \"Отметьте это, чтобы запомнить выбранные вами параметры для будущего использования, что позволит быстрее создавать ответвления бесед по вашим предпочтениям.\",\n  \"com_ui_fork_info_start\": \"Если отмечено, ветвление начнется с этого сообщения до последнего сообщения в разговоре в соответствии с выбранным выше поведением.\",\n  \"com_ui_fork_info_target\": \"Эта опция создает ветвление всех сообщений, ведущих к целевому сообщению, включая соседние. Другими словами, включаются все ветви сообщений, независимо от того, видны они или находятся по одному пути.\",\n  \"com_ui_fork_info_visible\": \"Эта опция создает ветвь только для видимых сообщений, то есть прямой путь к целевому сообщению без боковых ветвей.\",\n  \"com_ui_fork_processing\": \"Разветвление беседы...\",\n  \"com_ui_fork_remember\": \"Запомнить\",\n  \"com_ui_fork_remember_checked\": \"Ваш выбор будет сохранен после использования. Вы можете изменить его в любое время в настройках.\",\n  \"com_ui_fork_split_target\": \"Начать ветвление здесь\",\n  \"com_ui_fork_split_target_setting\": \"По умолчанию создавать ветку от целевого сообщения\",\n  \"com_ui_fork_success\": \"Разветвление беседы успешно выполнено\",\n  \"com_ui_fork_visible\": \"Только видимые сообщения\",\n  \"com_ui_go_to_conversation\": \"Перейти к беседе\",\n  \"com_ui_happy_birthday\": \"Это мой первый день рождения!\",\n  \"com_ui_host\": \"Хост\",\n  \"com_ui_image_gen\": \"Генератор изображений\",\n  \"com_ui_import_conversation_error\": \"При импорте бесед произошла ошибка\",\n  \"com_ui_import_conversation_file_type_error\": \"Неподдерживаемый тип импорта\",\n  \"com_ui_import_conversation_info\": \"Импортировать беседы из файла JSON\",\n  \"com_ui_import_conversation_success\": \"Беседы успешно импортированы\",\n  \"com_ui_include_shadcnui\": \"Включить компоненты shadcn/ui\",\n  \"com_ui_input\": \"Ввод\",\n  \"com_ui_instructions\": \"Инструкции\",\n  \"com_ui_latest_footer\": \"Искусственный интеллект для каждого\",\n  \"com_ui_librechat_code_api_key\": \"Получить ключ API интерпретатора кода LibreChat\",\n  \"com_ui_librechat_code_api_subtitle\": \"Безопасно. Многоязычно. Работа с файлами.\",\n  \"com_ui_librechat_code_api_title\": \"Запустить AI-код\",\n  \"com_ui_llm_menu\": \"Меню LLM\",\n  \"com_ui_llms_available\": \"Доступные языковые модели\",\n  \"com_ui_locked\": \"Заблокировано\",\n  \"com_ui_logo\": \"Логотип {{0}}\",\n  \"com_ui_manage\": \"Управление\",\n  \"com_ui_max_tags\": \"Максимально допустимое количество - {{0}}, используются последние значения.\",\n  \"com_ui_mention\": \"Упомянуть конечную точку, помощника или предустановку для быстрого переключения\",\n  \"com_ui_min_tags\": \"Нельзя удалить больше значений, требуется минимум {{0}}.\",\n  \"com_ui_model\": \"Модель\",\n  \"com_ui_model_parameters\": \"Параметры модели\",\n  \"com_ui_more_info\": \"Подробнее\",\n  \"com_ui_my_prompts\": \"Мои промты\",\n  \"com_ui_name\": \"Имя\",\n  \"com_ui_new_chat\": \"Создать чат\",\n  \"com_ui_next\": \"Следующий\",\n  \"com_ui_no\": \"Нет\",\n  \"com_ui_no_bookmarks\": \"Похоже, у вас пока нет закладок. Выберите чат и добавьте новую закладку\",\n  \"com_ui_no_category\": \"Без категории\",\n  \"com_ui_no_changes\": \"Нет изменений для обновления\",\n  \"com_ui_no_terms_content\": \"Нет содержания условий использования для отображения\",\n  \"com_ui_none_selected\": \"Ничего не выбрано\",\n  \"com_ui_nothing_found\": \"Ничего не найдено\",\n  \"com_ui_of\": \"из\",\n  \"com_ui_off\": \"Выкл.\",\n  \"com_ui_on\": \"Вкл.\",\n  \"com_ui_page\": \"Страница\",\n  \"com_ui_prev\": \"Предыдущий\",\n  \"com_ui_preview\": \"Предпросмотр\",\n  \"com_ui_privacy_policy\": \"Политика конфиденциальности\",\n  \"com_ui_privacy_policy_url\": \"Ссылка на политику конфиденциальности\",\n  \"com_ui_prompt\": \"Промт\",\n  \"com_ui_prompt_already_shared_to_all\": \"Этот промт уже доступен всем пользователям\",\n  \"com_ui_prompt_name\": \"Название промта\",\n  \"com_ui_prompt_name_required\": \"Необходимо указать название промта\",\n  \"com_ui_prompt_preview_not_shared\": \"Автор не разрешил совместную работу с этим промтом\",\n  \"com_ui_prompt_text\": \"Текст\",\n  \"com_ui_prompt_text_required\": \"Введите текст\",\n  \"com_ui_prompt_update_error\": \"Произошла ошибка при обновлении промта\",\n  \"com_ui_prompts\": \"Промты\",\n  \"com_ui_prompts_allow_create\": \"Разрешить создание промтов\",\n  \"com_ui_prompts_allow_share_global\": \"Разрешить доступ к промптам всем пользователям\",\n  \"com_ui_prompts_allow_use\": \"Разрешить использование промтов\",\n  \"com_ui_provider\": \"Провайдер\",\n  \"com_ui_read_aloud\": \"Прочитать вслух\",\n  \"com_ui_regenerate\": \"Повторная генерация\",\n  \"com_ui_region\": \"Регион\",\n  \"com_ui_rename\": \"Переименовать\",\n  \"com_ui_reset_var\": \"Сбросить {{0}}\",\n  \"com_ui_result\": \"Результат\",\n  \"com_ui_revoke\": \"Отозвать\",\n  \"com_ui_revoke_info\": \"Отозвать все предоставленные пользователем учетные данные\",\n  \"com_ui_revoke_key_confirm\": \"Вы действительно хотите отозвать этот ключ?\",\n  \"com_ui_revoke_key_endpoint\": \"Отозвать ключ для {{0}}\",\n  \"com_ui_revoke_keys\": \"Отозвать ключи\",\n  \"com_ui_revoke_keys_confirm\": \"Вы действительно хотите отозвать все ключи?\",\n  \"com_ui_role_select\": \"Роль\",\n  \"com_ui_run_code\": \"Выполнить код\",\n  \"com_ui_run_code_error\": \"Произошла ошибка при выполнении кода\",\n  \"com_ui_save\": \"Сохранить\",\n  \"com_ui_save_submit\": \"Сохранить и отправить\",\n  \"com_ui_saved\": \"Сохранено!\",\n  \"com_ui_schema\": \"Схема\",\n  \"com_ui_select\": \"Выбрать\",\n  \"com_ui_select_file\": \"Выберите файл\",\n  \"com_ui_select_model\": \"Выберите модель\",\n  \"com_ui_select_provider\": \"Выберите провайдера\",\n  \"com_ui_select_provider_first\": \"Сначала выберите провайдера\",\n  \"com_ui_select_region\": \"Выберите регион\",\n  \"com_ui_select_search_model\": \"Поиск модели по названию\",\n  \"com_ui_select_search_plugin\": \"Поиск плагина по названию\",\n  \"com_ui_select_search_provider\": \"Поиск провайдера по названию\",\n  \"com_ui_select_search_region\": \"Поиск региона по названию\",\n  \"com_ui_share\": \"Поделиться\",\n  \"no_text_recognized\": \"Распознавание речи не доступно. Пожалуйста, свяжитесь с администратором.\",\n  \"com_ui_share_create_message\": \"Ваше имя и любые сообщения, которые вы добавите после обмена, останутся конфиденциальными.\",\n  \"com_ui_share_delete_error\": \"Произошла ошибка при удалении общей ссылки.\",\n  \"com_ui_share_error\": \"Произошла ошибка при попытке поделиться ссылкой на чат\",\n  \"com_ui_share_link_to_chat\": \"Поделиться ссылкой в чате\",\n  \"com_ui_share_to_all_users\": \"Поделиться со всеми пользователями\",\n  \"com_ui_share_update_message\": \"Ваше имя, пользовательские инструкции и любые сообщения, которые вы добавите после обмена, останутся конфиденциальными.\",\n  \"com_ui_share_var\": \"Поделиться {{0}}\",\n  \"com_ui_shared_link_not_found\": \"Общая ссылка не найдена\",\n  \"com_ui_shared_prompts\": \"Общие промты\",\n  \"com_ui_show_all\": \"Показать все\",\n  \"com_ui_simple\": \"Простой\",\n  \"com_ui_size\": \"Размер\",\n  \"com_ui_special_variables\": \"Специальные переменные:\",\n  \"com_ui_special_variables_info\": \"Используйте `{{current_date}}` для отображения текущей даты и `{{current_user}}` для отображения имени вашей учетной записи.\",\n  \"com_ui_speech_while_submitting\": \"Невозможно отправить голосовой ввод во время генерации ответа\",\n  \"com_ui_stop\": \"Остановить генерацию\",\n  \"com_ui_storage\": \"Хранилище\",\n  \"com_ui_submit\": \"Отправить\",\n  \"com_ui_terms_and_conditions\": \"Условия использования\",\n  \"com_ui_terms_of_service\": \"Условия использования\",\n  \"com_ui_tools\": \"Инструменты\",\n  \"com_ui_unarchive\": \"разархивировать\",\n  \"com_ui_unarchive_error\": \"Не удалось восстановить чат из архива\",\n  \"com_ui_unknown\": \"Неизвестно\",\n  \"com_ui_update\": \"Обновить\",\n  \"com_ui_upload\": \"Загрузить\",\n  \"com_ui_upload_code_files\": \"Загрузить для Интерпретатора кода\",\n  \"com_ui_upload_delay\": \"Загрузка \\\"{{0}}\\\" занимает больше времени, чем ожидалось. Пожалуйста, подождите, пока файл полностью проиндексируется для доступа.\",\n  \"com_ui_upload_error\": \"Произошла ошибка при загрузке вашего файла\",\n  \"com_ui_upload_file_search\": \"Загрузить для поиска по файлам\",\n  \"com_ui_upload_files\": \"Загрузить файлы\",\n  \"com_ui_upload_image\": \"Загрузить изображение\",\n  \"com_ui_upload_image_input\": \"Загрузить изображение\",\n  \"com_ui_upload_invalid\": \"Недопустимый файл для загрузки. Загружаемое изображение не должно превышать установленный размер\",\n  \"com_ui_upload_invalid_var\": \"Недопустимый файл. Загружаемое изображение не должно превышать {{0}} МБ\",\n  \"com_ui_upload_success\": \"Файл успешно загружен\",\n  \"com_ui_upload_type\": \"Выберите тип загрузки\",\n  \"com_ui_use_micrphone\": \"Использовать микрофон\",\n  \"com_ui_use_prompt\": \"Использовать промпт\",\n  \"com_ui_variables\": \"Переменные\",\n  \"com_ui_variables_info\": \"Используйте двойные фигурные скобки в тексте для создания переменных, например `{{пример переменной}}`, чтобы заполнить их позже при использовании промта.\",\n  \"com_ui_version_var\": \"Версия {{0}}\",\n  \"com_ui_versions\": \"Версии\",\n  \"com_ui_yes\": \"Да\",\n  \"com_ui_zoom\": \"Масштаб\",\n  \"com_user_message\": \"Вы\",\n  \"com_warning_resubmit_unsupported\": \"Повторная отправка сообщения ИИ не поддерживается для данной конечной точки\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/sv/translation.json",
    "content": "{\n  \"com_auth_already_have_account\": \"Har du redan ett konto?\",\n  \"com_auth_click\": \"Klicka\",\n  \"com_auth_click_here\": \"Klicka här\",\n  \"com_auth_continue\": \"Fortsätt\",\n  \"com_auth_create_account\": \"Skapa ditt konto\",\n  \"com_auth_discord_login\": \"Logga in med Discord\",\n  \"com_auth_email\": \"E-post\",\n  \"com_auth_email_address\": \"E-postadress\",\n  \"com_auth_email_max_length\": \"E-post får inte vara längre än 120 tecken\",\n  \"com_auth_email_min_length\": \"E-post måste vara minst 6 tecken\",\n  \"com_auth_email_pattern\": \"Du måste ange en giltig e-postadress\",\n  \"com_auth_email_required\": \"E-post krävs\",\n  \"com_auth_error_create\": \"Det uppstod ett fel när du försökte registrera ditt konto. Vänligen försök igen.\",\n  \"com_auth_error_invalid_reset_token\": \"Detta lösenordsåterställningsnyckel är inte längre giltigt.\",\n  \"com_auth_error_login\": \"Kunde inte logga in med den angivna informationen. Kontrollera dina uppgifter och försök igen.\",\n  \"com_auth_error_login_rl\": \"För många inloggningsförsök från den här IP-adressen på kort tid. Vänligen försök igen senare.\",\n  \"com_auth_facebook_login\": \"Logga in med Facebook\",\n  \"com_auth_full_name\": \"Fullständigt namn\",\n  \"com_auth_github_login\": \"Logga in med Github\",\n  \"com_auth_google_login\": \"Logga in med Google\",\n  \"com_auth_here\": \"HÄR\",\n  \"com_auth_login\": \"Logga in\",\n  \"com_auth_login_with_new_password\": \"Du kan nu logga in med ditt nya lösenord.\",\n  \"com_auth_name_max_length\": \"Namnet får inte vara längre än 80 tecken\",\n  \"com_auth_name_min_length\": \"Namnet måste vara minst 3 tecken\",\n  \"com_auth_name_required\": \"Namn krävs\",\n  \"com_auth_no_account\": \"Har du inget konto?\",\n  \"com_auth_password\": \"Lösenord\",\n  \"com_auth_password_confirm\": \"Bekräfta lösenord\",\n  \"com_auth_password_forgot\": \"Glömt lösenord?\",\n  \"com_auth_password_max_length\": \"Lösenordet får inte vara längre än 128 tecken\",\n  \"com_auth_password_min_length\": \"Lösenordet måste vara minst 8 tecken\",\n  \"com_auth_password_not_match\": \"Lösenorden matchar inte\",\n  \"com_auth_password_required\": \"Lösenord krävs\",\n  \"com_auth_reset_password\": \"Återställ ditt lösenord\",\n  \"com_auth_reset_password_link_sent\": \"E-post skickad\",\n  \"com_auth_reset_password_success\": \"Lösenordsåterställning lyckades\",\n  \"com_auth_sign_in\": \"Logga in\",\n  \"com_auth_sign_up\": \"Registrera dig\",\n  \"com_auth_submit_registration\": \"Skicka registrering\",\n  \"com_auth_to_reset_your_password\": \"för att återställa ditt lösenord.\",\n  \"com_auth_to_try_again\": \"för att försöka igen.\",\n  \"com_auth_username\": \"Användarnamn (valfritt)\",\n  \"com_auth_username_max_length\": \"Användarnamnet får inte vara längre än 20 tecken\",\n  \"com_auth_username_min_length\": \"Användarnamnet måste vara minst 2 tecken\",\n  \"com_auth_welcome_back\": \"Välkommen tillbaka\",\n  \"com_endpoint\": \"Slutpunkt\",\n  \"com_endpoint_agent\": \"Agent\",\n  \"com_endpoint_agent_model\": \"Agentmodell (Rekommenderad: GPT-3.5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.\",\n  \"com_endpoint_anthropic_temp\": \"Varierar mellan 0 och 1. Använd temp närmare 0 för analytiska/flervalsfrågor och närmare 1 för kreativa och generativa uppgifter. Vi rekommenderar att ändra detta eller Top P men inte båda.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.\",\n  \"com_endpoint_completion\": \"Komplettering\",\n  \"com_endpoint_completion_model\": \"Kompletteringsmodell (Rekommenderad: GPT-4)\",\n  \"com_endpoint_config_key\": \"Ange API-nyckel\",\n  \"com_endpoint_config_key_encryption\": \"Din nyckel kommer att krypteras och raderas vid\",\n  \"com_endpoint_config_key_for\": \"Ange API-nyckel för\",\n  \"com_endpoint_config_key_google_need_to\": \"Du behöver\",\n  \"com_endpoint_config_key_google_service_account\": \"Skapa ett tjänstekonto\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Aktivera Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API på Google Cloud, sedan\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Se till att klicka på \\\"Skapa och fortsätt\\\" för att ge åtminstone rollen \\\"Vertex AI-användare\\\". Skapa slutligen en JSON-nyckel att importera här.\",\n  \"com_endpoint_config_key_import_json_key\": \"Importera JSON-nyckel för kontot.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Ogiltig JSON-nyckel för konto, importerade du rätt fil?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Lyckades importera JSON-nyckel för kontot\",\n  \"com_endpoint_config_key_name\": \"Nyckel\",\n  \"com_endpoint_config_value\": \"Ange värde för\",\n  \"com_endpoint_context\": \"Kontext\",\n  \"com_endpoint_custom_name\": \"Anpassat namn\",\n  \"com_endpoint_default\": \"standard\",\n  \"com_endpoint_default_blank\": \"standard: tom\",\n  \"com_endpoint_default_empty\": \"standard: tom\",\n  \"com_endpoint_default_with_num\": \"standard: {{0}}\",\n  \"com_endpoint_examples\": \" Förinställningar\",\n  \"com_endpoint_export\": \"Exportera\",\n  \"com_endpoint_frequency_penalty\": \"Frekvensstraff\",\n  \"com_endpoint_func_hover\": \"Aktivera användning av tillägg som OpenAI-funktioner\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Ange ett anpassat namn för Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Maximalt antal tokens som kan genereras i svaret. Ange ett lägre värde för kortare svar och ett högre värde för längre svar.\",\n  \"com_endpoint_google_temp\": \"Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.\",\n  \"com_endpoint_google_topk\": \"Top-k ändrar hur modellen väljer tokens för utdata. Ett top-k av 1 innebär att den valda token är den mest sannolika bland alla tokens i modellens vokabulär (kallas också girig avkodning), medan ett top-k av 3 innebär att nästa token väljs bland de 3 mest sannolika tokens (med temperatur).\",\n  \"com_endpoint_google_topp\": \"Top-p ändrar hur modellen väljer tokens för utdata. Tokens väljs från de mest K (se topK-parameter) sannolika till de minst tills summan av deras sannolikheter når top-p-värdet.\",\n  \"com_endpoint_max_output_tokens\": \"Max utdatatokens\",\n  \"com_endpoint_my_preset\": \"Min förinställning\",\n  \"com_endpoint_no_presets\": \"Ingen förinställning ännu\",\n  \"com_endpoint_open_menu\": \"Öppna meny\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Ange ett eget namn för ChatGPT\",\n  \"com_endpoint_openai_freq\": \"Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på deras befintliga frekvens i texten hittills, vilket minskar modellens sannolikhet att upprepa samma rad ordagrant.\",\n  \"com_endpoint_openai_max\": \"Max tokens att generera. Den totala längden på tokens för inmatning och svar är begränsad av modellen som används.\",\n  \"com_endpoint_openai_pres\": \"Nummer mellan -2,0 och 2,0. Positiva värden minskar nya tokens baserat på om de förekommer i texten hittills, vilket ökar modellens sannolikhet att prata om nya ämnen.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Ange anpassade instruktioner att inkludera i Systemmeddelande. Standard: inga\",\n  \"com_endpoint_openai_temp\": \"Högre värden = mer slumpmässigt, medan lägre värden = mer fokuserat och bestämt. Vi rekommenderar att ändra detta eller Top P men inte båda.\",\n  \"com_endpoint_openai_topp\": \"Ett alternativ till temperatur, kallat kärnprovtagning, där modellen beaktar resultaten av tokens med top_p-sannolikhetsmassa. Så 0,1 innebär att endast de tokens som utgör den översta 10% sannolikhetsmassan beaktas. Vi rekommenderar att ändra detta eller temperaturen men inte båda.\",\n  \"com_endpoint_output\": \"Utdata\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Ange anpassade instruktioner att inkludera i systemmeddelande. Standard: inga\",\n  \"com_endpoint_plug_skip_completion\": \"Hoppa över komplettering\",\n  \"com_endpoint_plug_use_functions\": \"Använd funktioner\",\n  \"com_endpoint_presence_penalty\": \"Närvarostraff\",\n  \"com_endpoint_preset\": \"förinställning\",\n  \"com_endpoint_preset_name\": \"Förinställningsnamn\",\n  \"com_endpoint_presets\": \"förinställningar\",\n  \"com_endpoint_presets_clear_warning\": \"Är du säker på att du vill rensa alla förinställningar? Detta går inte att ångra.\",\n  \"com_endpoint_prompt_prefix\": \"Uppmaningsprefix\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Ange anpassade instruktioner eller kontext. Ignoreras om tom.\",\n  \"com_endpoint_save_as_preset\": \"Spara som förinställning\",\n  \"com_endpoint_set_custom_name\": \"Ange ett eget namn, om du kan hitta denna förinställning\",\n  \"com_endpoint_skip_hover\": \"Aktivera att hoppa över kompletteringssteg, som granskar det slutliga svaret och genererade steg\",\n  \"com_endpoint_temperature\": \"Temperatur\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_nav_archive_created_at\": \"Skapad\",\n  \"com_nav_archive_name\": \"Namn\",\n  \"com_nav_archived_chats\": \"Arkiverade chattar\",\n  \"com_nav_archived_chats_empty\": \"Du har inga arkiverade chattar.\",\n  \"com_nav_balance\": \"Balans\",\n  \"com_nav_clear_all_chats\": \"Rensa alla chattar\",\n  \"com_nav_clear_conversation\": \"Rensa konversationer\",\n  \"com_nav_clear_conversation_confirm_message\": \"Är du säker på att du vill rensa alla konversationer? Detta går inte att ångra.\",\n  \"com_nav_close_sidebar\": \"Stäng sidofält\",\n  \"com_nav_confirm_clear\": \"Bekräfta rensning\",\n  \"com_nav_enabled\": \"Aktiverad\",\n  \"com_nav_export\": \"Exportera\",\n  \"com_nav_export_all_message_branches\": \"Exportera alla grenar för meddelanden\",\n  \"com_nav_export_conversation\": \"Exportera konversation\",\n  \"com_nav_export_filename\": \"Filnamn\",\n  \"com_nav_export_filename_placeholder\": \"Ange filnamnet\",\n  \"com_nav_export_include_endpoint_options\": \"Inkludera slutpunktsalternativ\",\n  \"com_nav_export_recursive\": \"Rekursiv\",\n  \"com_nav_export_recursive_or_sequential\": \"Rekursiv eller sekventiell?\",\n  \"com_nav_export_type\": \"Typ\",\n  \"com_nav_font_size\": \"Textstorlek\",\n  \"com_nav_help_faq\": \"Hjälp & Vanliga frågor\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Automatisk detektering\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_log_out\": \"Logga ut\",\n  \"com_nav_not_supported\": \"Stöds ej\",\n  \"com_nav_open_sidebar\": \"Öppna sidofält\",\n  \"com_nav_plugin_auth_error\": \"Det uppstod ett fel när försöket att autentisera denna plugin gjordes. Försök igen.\",\n  \"com_nav_plugin_search\": \"Sök efter plugins\",\n  \"com_nav_plugin_store\": \"Pluginbutik\",\n  \"com_nav_search_placeholder\": \"Sök meddelanden\",\n  \"com_nav_send_message\": \"Skicka meddelande\",\n  \"com_nav_setting_data\": \"Datakontroller\",\n  \"com_nav_setting_general\": \"Allmänt\",\n  \"com_nav_settings\": \"Inställningar\",\n  \"com_nav_shared_links\": \"Delade länkar\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Mörkt\",\n  \"com_nav_theme_light\": \"Ljust\",\n  \"com_nav_theme_system\": \"System\",\n  \"com_nav_user\": \"ANVÄNDARE\",\n  \"com_ui_accept\": \"Jag accepterar\",\n  \"com_ui_all\": \"alla\",\n  \"com_ui_archive\": \"Arkiv\",\n  \"com_ui_archive_error\": \"Kunde inte arkivera chatt\",\n  \"com_ui_bookmark_delete_confirm\": \"Är du säker på att du vill ta bort detta bokmärke?\",\n  \"com_ui_bookmarks\": \"Bokmärken\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Lägg till i nuvarande konversation\",\n  \"com_ui_bookmarks_count\": \"Antal\",\n  \"com_ui_bookmarks_create_error\": \"Ett fel uppstod vid skapandet av bokmärket\",\n  \"com_ui_bookmarks_create_success\": \"Bokmärke skapat framgångsrikt\",\n  \"com_ui_bookmarks_delete_error\": \"Ett fel uppstod vid raderingen av bokmärket\",\n  \"com_ui_bookmarks_delete_success\": \"Bokm��rke raderat framgångsrikt\",\n  \"com_ui_bookmarks_description\": \"Beskrivning\",\n  \"com_ui_bookmarks_new\": \"Nytt Bokmärke\",\n  \"com_ui_bookmarks_title\": \"Titel\",\n  \"com_ui_bookmarks_update_error\": \"Ett fel uppstod vid uppdateringen av bokmärket\",\n  \"com_ui_bookmarks_update_success\": \"Bokmärke uppdaterat framgångsrikt\",\n  \"com_ui_cancel\": \"Avbryt\",\n  \"com_ui_clear\": \"Rensa\",\n  \"com_ui_close\": \"Stäng\",\n  \"com_ui_confirm_action\": \"Bekräfta åtgärd\",\n  \"com_ui_continue\": \"Fortsätt\",\n  \"com_ui_copied_to_clipboard\": \"Kopierat till urklipp\",\n  \"com_ui_copy_link\": \"Kopiera länk\",\n  \"com_ui_copy_to_clipboard\": \"Kopiera till urklipp\",\n  \"com_ui_create_link\": \"Skapa länk\",\n  \"com_ui_decline\": \"Jag accepterar inte\",\n  \"com_ui_delete\": \"Radera\",\n  \"com_ui_delete_confirm\": \"Detta kommer att radera\",\n  \"com_ui_delete_conversation\": \"Radera chatt?\",\n  \"com_ui_edit\": \"Redigera\",\n  \"com_ui_enter\": \"Ange\",\n  \"com_ui_examples\": \"Exempel\",\n  \"com_ui_happy_birthday\": \"Det är min första födelsedag!\",\n  \"com_ui_import_conversation_error\": \"Det uppstod ett fel vid import av dina konversationer\",\n  \"com_ui_import_conversation_info\": \"Importera konversationer från en JSON-fil\",\n  \"com_ui_import_conversation_success\": \"Konversationer har importerats framgångsrikt\",\n  \"com_ui_input\": \"Inmatning\",\n  \"com_ui_model\": \"Modell\",\n  \"com_ui_new_chat\": \"Ny chatt\",\n  \"com_ui_next\": \"Nästa\",\n  \"com_ui_no_terms_content\": \"Ingen innehåll för villkor för användning att visa\",\n  \"com_ui_of\": \"av\",\n  \"com_ui_prev\": \"Föregående\",\n  \"com_ui_regenerate\": \"Återskapa\",\n  \"com_ui_rename\": \"byta namn på\",\n  \"com_ui_revoke\": \"Återkalla\",\n  \"com_ui_revoke_info\": \"Återkalla alla användaruppgifter.\",\n  \"com_ui_save\": \"Spara\",\n  \"com_ui_select_model\": \"Välj en modell\",\n  \"com_ui_share\": \"Dela\",\n  \"com_ui_share_create_message\": \"Ditt namn och alla meddelanden du lägger till efter delningen förblir privata.\",\n  \"com_ui_share_delete_error\": \"Ett fel uppstod vid borttagningen av den delade länken.\",\n  \"com_ui_share_error\": \"Ett fel uppstod vid delning av chattlänken\",\n  \"com_ui_share_link_to_chat\": \"Dela länk till chatt\",\n  \"com_ui_share_update_message\": \"Ditt namn, anpassade instruktioner och alla meddelanden du lägger till efter delningen förblir privata.\",\n  \"com_ui_shared_link_not_found\": \"Delad länk hittades inte\",\n  \"com_ui_submit\": \"Skicka\",\n  \"com_ui_terms_and_conditions\": \"Villkor för användning\",\n  \"com_ui_unarchive\": \"Avarkivera\",\n  \"com_ui_unarchive_error\": \"Kunde inte avarkivera chatt\",\n  \"com_ui_upload_success\": \"Uppladdningen av filen lyckades\",\n  \"com_ui_use_prompt\": \"Använd prompt\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/tr/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"Yapay zeka hala yanıt oluşturuyor.\",\n  \"com_a11y_end\": \"Yapay zeka yanıtını tamamladı.\",\n  \"com_a11y_start\": \"Yapay zeka yanıtlamaya başladı.\",\n  \"com_agents_allow_editing\": \"Diğer kullanıcıların ajanınızı düzenlemesine izin verin\",\n  \"com_agents_by_librechat\": \"LibreChat tarafından\",\n  \"com_agents_code_interpreter\": \"Etkinleştirildiğinde, ajanınızın oluşturulan kodu çalıştırması ve dosya işleme dahil olmak üzere LibreChat Kod Yorumlayıcı API'sini güvenli bir şekilde kullanmasına olanak tanır. Geçerli bir API anahtarı gerektirir.\",\n  \"com_agents_code_interpreter_title\": \"Kod Yorumlayıcı API\",\n  \"com_agents_create_error\": \"Ajanınız oluşturulurken bir hata oluştu.\",\n  \"com_agents_description_placeholder\": \"İsteğe bağlı: Ajanınızı burada tanımlayın\",\n  \"com_agents_enable_file_search\": \"Dosya Aramayı Etkinleştir\",\n  \"com_agents_file_search_disabled\": \"Dosya Arama için dosya yüklemeden önce ajan oluşturulmalıdır.\",\n  \"com_agents_file_search_info\": \"Etkinleştirildiğinde, ajan aşağıda listelenen dosya adlarından haberdar olacak ve bu dosyalardan ilgili içeriği alabilecektir.\",\n  \"com_agents_instructions_placeholder\": \"Ajanın kullandığı sistem talimatları\",\n  \"com_agents_missing_provider_model\": \"Lütfen bir ajan oluşturmadan önce bir sağlayıcı ve model seçin.\",\n  \"com_agents_name_placeholder\": \"İsteğe bağlı: Ajanın adı\",\n  \"com_agents_no_access\": \"Bu ajanı düzenleme erişiminiz yok.\",\n  \"com_agents_not_available\": \"Ajan Mevcut Değil\",\n  \"com_agents_search_name\": \"Ajanları ada göre ara\",\n  \"com_agents_update_error\": \"Ajanınız güncellenirken bir hata oluştu.\",\n  \"com_assistants_actions\": \"Eylemler\",\n  \"com_assistants_actions_disabled\": \"Eylem eklemeden önce bir asistan oluşturmanız gerekiyor.\",\n  \"com_assistants_actions_info\": \"Asistanın API'leri kullanarak bilgi getirmesine veya eylem gerçekleştirmesine izin ver\",\n  \"com_assistants_add_actions\": \"Eylem Ekle\",\n  \"com_assistants_add_tools\": \"Araçları Ekle\",\n  \"com_assistants_append_date\": \"Şu anki tarih ve saati ekleyin\",\n  \"com_assistants_append_date_tooltip\": \"Etkinleştirildiğinde, şu anki müşteri tarihi ve saati, Asistanın sistem talimatlarına eklenir.\",\n  \"com_assistants_available_actions\": \"Mevcut Eylemler\",\n  \"com_assistants_capabilities\": \"Yetenekler\",\n  \"com_assistants_code_interpreter\": \"Kod Yorumlayıcı\",\n  \"com_assistants_code_interpreter_files\": \"Aşağıdaki dosyalar yalnızca Kod Yorumlayıcı için kullanılabilir:\",\n  \"com_assistants_code_interpreter_info\": \"Kod Yorumlayıcı, asistanın kod yazmasına ve çalıştırmasına olanak tanır. Bu araç, çeşitli veri ve formatlara sahip dosyaları işleyebilir ve grafikler gibi dosyalar oluşturabilir.\",\n  \"com_assistants_completed_action\": \"{{0}} ile konuştu\",\n  \"com_assistants_completed_function\": \"{{0}} yürütüldü\",\n  \"com_assistants_conversation_starters\": \"Konuşma Başlatıcıları\",\n  \"com_assistants_conversation_starters_placeholder\": \"Bir konuşma başlatıcı girin\",\n  \"com_assistants_create_error\": \"Asistanınızı oluşturma sırasında bir hata oluştu.\",\n  \"com_assistants_create_success\": \"Başarıyla oluşturuldu\",\n  \"com_assistants_delete_actions_error\": \"Eylem silme sırasında bir hata oluştu.\",\n  \"com_assistants_delete_actions_success\": \"Asistandan Eylem başarıyla silindi\",\n  \"com_assistants_description_placeholder\": \"Seçmeli: Asistanınızın açıklamasını buraya yazın\",\n  \"com_assistants_domain_info\": \"Asistan bu bilgiyi {{0}} adresine gönderdi\",\n  \"com_assistants_file_search\": \"Dosya Arama\",\n  \"com_assistants_file_search_info\": \"Dosya Araması için vektör mağazalarını eklemek henüz desteklenmiyor. Bunları Sağlayıcı Oyun Alanı'ndan ekleyebilir veya mesajlar için dosya ekleyerek konu bazında dosya arayabilirsin.\",\n  \"com_assistants_function_use\": \"Asistan {{0}} kullandı\",\n  \"com_assistants_image_vision\": \"Görüntü Vizyonu\",\n  \"com_assistants_instructions_placeholder\": \"Asistanın kullandığı sistem talimatları\",\n  \"com_assistants_knowledge\": \"Bilgi\",\n  \"com_assistants_knowledge_disabled\": \"Bilgi olarak dosya yüklemeden önce, Asistan oluşturulmalı ve Kod Yorumlayıcı veya Geri Getirme etkinleştirilip kaydedilmelidir.\",\n  \"com_assistants_knowledge_info\": \"Dosyaları Bilgi altına yüklersen, Asistan ile yapılan konuşmalar dosya içeriklerini içerebilir.\",\n  \"com_assistants_max_starters_reached\": \"Maksimum konuşma başlatıcı sayısına ulaşıldı\",\n  \"com_assistants_name_placeholder\": \"Seçmeli: asistanın adı\",\n  \"com_assistants_non_retrieval_model\": \"Dosya arama bu modelde etkin değil. Lütfen başka bir model seçin.\",\n  \"com_assistants_retrieval\": \"Geri Getirme\",\n  \"com_assistants_running_action\": \"Eylem çalışıyor\",\n  \"com_assistants_search_name\": \"Asistan adında ara\",\n  \"com_assistants_update_actions_error\": \"Eylem oluşturma veya güncelleme sırasında bir hata oluştu.\",\n  \"com_assistants_update_actions_success\": \"Eylem başarıyla oluşturuldu veya güncellendi\",\n  \"com_assistants_update_error\": \"Asistanınızı güncelleme sırasında bir hata oluştu.\",\n  \"com_assistants_update_success\": \"Başarıyla güncellendi\",\n  \"com_auth_already_have_account\": \"Zaten bir hesabınız var mı?\",\n  \"com_auth_apple_login\": \"Apple ile Giriş Yap\",\n  \"com_auth_back_to_login\": \"Girişe geri dön\",\n  \"com_auth_click\": \"Tıklayın\",\n  \"com_auth_click_here\": \"Buraya tıklayın\",\n  \"com_auth_continue\": \"Devam et\",\n  \"com_auth_create_account\": \"Hesabınızı oluşturun\",\n  \"com_auth_discord_login\": \"Discord ile devam et\",\n  \"com_auth_email\": \"E-posta\",\n  \"com_auth_email_address\": \"E-posta adresi\",\n  \"com_auth_email_max_length\": \"E-posta 120 karakteri geçmemelidir\",\n  \"com_auth_email_min_length\": \"E-posta en az 6 karakter olmalıdır\",\n  \"com_auth_email_pattern\": \"Geçerli bir e-posta adresi girmelisiniz\",\n  \"com_auth_email_required\": \"E-posta gereklidir\",\n  \"com_auth_email_resend_link\": \"E-postayı yeniden gönder\",\n  \"com_auth_email_resent_failed\": \"Doğrulama e-postasını yeniden gönderme başarısız oldu\",\n  \"com_auth_email_resent_success\": \"Doğrulama e-postası başarıyla yeniden gönderildi\",\n  \"com_auth_email_verification_failed\": \"E-posta doğrulama başarısız oldu\",\n  \"com_auth_email_verification_failed_token_missing\": \"Doğrulama başarısız, jeton eksik\",\n  \"com_auth_email_verification_in_progress\": \"E-postanızı doğruluyoruz, lütfen bekleyin\",\n  \"com_auth_email_verification_invalid\": \"Geçersiz e-posta doğrulama\",\n  \"com_auth_email_verification_redirecting\": \"{{0}} saniye içinde yönlendiriliyor...\",\n  \"com_auth_email_verification_resend_prompt\": \"E-postayı almadınız mı?\",\n  \"com_auth_email_verification_success\": \"E-posta başarıyla doğrulandı\",\n  \"com_auth_error_create\": \"Hesabınızı kaydetmeye çalışırken bir hata oluştu. Lütfen tekrar deneyin.\",\n  \"com_auth_error_invalid_reset_token\": \"Bu şifre sıfırlama jetonu artık geçerli değil.\",\n  \"com_auth_error_login\": \"Sağlanan bilgilerle giriş yapılamıyor. Lütfen kimlik bilgilerinizi kontrol edin ve tekrar deneyin.\",\n  \"com_auth_error_login_ban\": \"Hesabınız hizmetimize yönelik ihlaller nedeniyle geçici olarak yasaklanmıştır.\",\n  \"com_auth_error_login_rl\": \"Kısa sürede çok fazla giriş denemesi yapıldı. Lütfen daha sonra tekrar deneyin.\",\n  \"com_auth_error_login_server\": \"Dahili sunucu hatası oluştu. Lütfen birkaç dakika bekleyin ve tekrar deneyin.\",\n  \"com_auth_error_login_unverified\": \"Hesabınız doğrulanmamış. Lütfen doğrulama bağlantısı için e-postanızı kontrol edin.\",\n  \"com_auth_facebook_login\": \"Facebook ile devam et\",\n  \"com_auth_full_name\": \"Tam adı\",\n  \"com_auth_github_login\": \"Github ile devam et\",\n  \"com_auth_google_login\": \"Google ile devam et\",\n  \"com_auth_here\": \"BURAYA\",\n  \"com_auth_login\": \"Giriş yap\",\n  \"com_auth_login_with_new_password\": \"Şimdi yeni şifreniz ile giriş yapabilirsiniz.\",\n  \"com_auth_name_max_length\": \"Ad en fazla 80 karakter olmalıdır\",\n  \"com_auth_name_min_length\": \"Ad en az 3 karakter olmalıdır\",\n  \"com_auth_name_required\": \"Ad gereklidir\",\n  \"com_auth_no_account\": \"Hesabınız yok mu?\",\n  \"com_auth_password\": \"Şifre\",\n  \"com_auth_password_confirm\": \"Şifreyi onayla\",\n  \"com_auth_password_forgot\": \"Şifremi unuttum?\",\n  \"com_auth_password_max_length\": \"Şifre en fazla 128 karakter olmalıdır\",\n  \"com_auth_password_min_length\": \"Şifre en az 8 karakter olmalıdır\",\n  \"com_auth_password_not_match\": \"Şifreler uyuşmuyor\",\n  \"com_auth_password_required\": \"Şifre gereklidir\",\n  \"com_auth_registration_success_generic\": \"E-posta adresinizi doğrulamak için lütfen e-postanızı kontrol edin.\",\n  \"com_auth_registration_success_insecure\": \"Kayıt başarıyla tamamlandı.\",\n  \"com_auth_reset_password\": \"Şifrenizi sıfırlayın\",\n  \"com_auth_reset_password_if_email_exists\": \"Bu e-postaya sahip bir hesap varsa, e-posta ile şifre sıfırlama talimatları gönderilmiştir. Lütfen spam klasörünüzü kontrol edin.\",\n  \"com_auth_reset_password_link_sent\": \"E-posta gönderildi\",\n  \"com_auth_reset_password_success\": \"Şifre başarıyla sıfırlandı\",\n  \"com_auth_sign_in\": \"Giriş yap\",\n  \"com_auth_sign_up\": \"Kaydol\",\n  \"com_auth_submit_registration\": \"Kayıt formunu gönder\",\n  \"com_auth_to_reset_your_password\": \"şifrenizi sıfırlamak için.\",\n  \"com_auth_to_try_again\": \"yeniden denemek için.\",\n  \"com_auth_username\": \"Kullanıcı adı (isteğe bağlı)\",\n  \"com_auth_username_max_length\": \"Kullanıcı adı en fazla 20 karakter olmalıdır\",\n  \"com_auth_username_min_length\": \"Kullanıcı adı en az 2 karakter olmalıdır\",\n  \"com_auth_welcome_back\": \"Tekrar hoş geldiniz\",\n  \"com_click_to_download\": \"(indirmek için tıklayın)\",\n  \"com_download_expired\": \"(indirme süresi doldu)\",\n  \"com_download_expires\": \"(indirmek için tıklayın - {{0}} tarihinde sona eriyor)\",\n  \"com_endpoint\": \"Uç Nokta\",\n  \"com_endpoint_agent\": \"Ajan\",\n  \"com_endpoint_agent_model\": \"Ajan Modeli (Önerilen: GPT-3.5)\",\n  \"com_endpoint_agent_placeholder\": \"Lütfen bir Ajan seçin\",\n  \"com_endpoint_ai\": \"Yapay Zeka\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Yanıttaki maksimum token sayısı. Daha kısa yanıtlar için düşük bir değer, daha uzun yanıtlar için yüksek bir değer belirtin.\",\n  \"com_endpoint_anthropic_prompt_cache\": \"İstem önbelleğe alma, API çağrıları arasında büyük bağlam veya talimatların yeniden kullanılmasına izin vererek maliyetleri ve gecikmeyi azaltır\",\n  \"com_endpoint_anthropic_temp\": \"0 ile 1 arasında değişir. Analitik / çoktan seçmeli sorular için 0'a yakın, yaratıcı ve üretken görevler için 1'e yakın bir sıcaklık kullanın. Bu parametre ile Olasılık Kütüphanesini değiştirmeyi öneririz (ikisini birden değiştirmemek).\",\n  \"com_endpoint_anthropic_topk\": \"Top-k, modelin çıktı için token seçimini nasıl yaptığını değiştirir. 1 olan bir top-k, modelin kelime haznesindeki en olası tokenin seçildiği (açgözlü kod çözme olarak da adlandırılır) anlamına gelirken, 3 olan bir top-k, bir sonraki tokenin en olası üç token arasından (sıcaklık kullanılarak) seçileceği anlamına gelir.\",\n  \"com_endpoint_anthropic_topp\": \"Modelin çıktı için token seçim şeklini değiştirir. Tokenlar, en olasılıktan (bkz. topK parametresi) en az olasıya kadar seçilir ve olasılıkları toplamı, top-p değerine eşit olana kadar devam eder.\",\n  \"com_endpoint_assistant\": \"Asistan\",\n  \"com_endpoint_assistant_model\": \"Asistan Modeli\",\n  \"com_endpoint_assistant_placeholder\": \"Lütfen sağ tarafta bir Asistan seçin\",\n  \"com_endpoint_completion\": \"Tamamlanma\",\n  \"com_endpoint_completion_model\": \"Tamamlanma Modeli (Önerilen: GPT-4)\",\n  \"com_endpoint_config_click_here\": \"Buraya Tıklayın\",\n  \"com_endpoint_config_google_api_info\": \"Gemini için Yapay Zeka Dil API Anahtarınızı almak için,\",\n  \"com_endpoint_config_google_api_key\": \"Google API Anahtarı\",\n  \"com_endpoint_config_google_cloud_platform\": \"(Google Cloud Platform'dan)\",\n  \"com_endpoint_config_google_gemini_api\": \"(Gemini API)\",\n  \"com_endpoint_config_google_service_key\": \"Google Hizmet Hesabı Anahtarı\",\n  \"com_endpoint_config_key\": \"API Anahtarını Ayarla\",\n  \"com_endpoint_config_key_encryption\": \"Anahtarınız şifrelenir ve şu tarihte silinir\",\n  \"com_endpoint_config_key_for\": \"API Anahtarını Ayarla\",\n  \"com_endpoint_config_key_google_need_to\": \"Şu işlemi yapmanız gerekiyor\",\n  \"com_endpoint_config_key_google_service_account\": \"Bir Hizmet Hesabı oluşturun\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Vertex AI'ı Etkinleştirin\",\n  \"com_endpoint_config_key_google_vertex_api\": \"Google Cloud'da API'yi etkinleştirin, ardından \",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"'Oluştur ve Devam Et' seçeneğine tıkladığınızdan emin olun ve en azından 'Vertex AI Kullanıcı' rolünü verin. Son olarak, burada karşıya yüklemek için bir JSON anahtarı oluşturun.\",\n  \"com_endpoint_config_key_import_json_key\": \"Hizmet Hesabı JSON Anahtarını İçe Aktar.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Geçersiz Hizmet Hesabı JSON Anahtarı, doğru dosyayı karşıya yüktediniz mi?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Hizmet Hesabı JSON Anahtarı Başarıyla Karşıya Yüklendi\",\n  \"com_endpoint_config_key_name\": \"Anahtar\",\n  \"com_endpoint_config_key_never_expires\": \"Anahtarınız asla sona ermeyecek\",\n  \"com_endpoint_config_placeholder\": \"Sohbet etmek için Anahtarınızı Başlık menüsünde ayarlayın.\",\n  \"com_endpoint_config_value\": \"Değer girin\",\n  \"com_endpoint_context\": \"Bağlam\",\n  \"com_endpoint_context_info\": \"Bağlam için kullanılabilecek maksimum token sayısı. Bu, her istek için kaç token gönderileceğini kontrol etmek içindir. Belirtilmezse, bilinen modellerin bağlam boyutuna göre sistem varsayılanları kullanılacaktır. Daha yüksek değerler belirlemek hatalara ve/veya daha yüksek token maliyetine neden olabilir.\",\n  \"com_endpoint_context_tokens\": \"Maksimum Bağlam Tokenleri\",\n  \"com_endpoint_custom_name\": \"Özel Ad\",\n  \"com_endpoint_default\": \"varsayılan\",\n  \"com_endpoint_default_blank\": \"varsayılan: boş\",\n  \"com_endpoint_default_empty\": \"varsayılan: boş\",\n  \"com_endpoint_default_with_num\": \"varsayılan: {{0}}\",\n  \"com_endpoint_examples\": \"Hazır Ayarlar\",\n  \"com_endpoint_export\": \"Dışa Aktar\",\n  \"com_endpoint_export_share\": \"Dışa Aktar / Paylaş\",\n  \"com_endpoint_frequency_penalty\": \"Sıklık Cezası\",\n  \"com_endpoint_func_hover\": \"Eklentilerin OpenAI Fonksiyonları olarak kullanılmasını etkinleştir\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Google için özel bir ad ayarlayın\",\n  \"com_endpoint_google_maxoutputtokens\": \"Yanıttaki maksimum token sayısı. Daha kısa yanıtlar için düşük bir değer, daha uzun yanıtlar için yüksek bir değer belirtin.\",\n  \"com_endpoint_google_temp\": \"Yüksek değerler = daha rastgele, düşük değerler = daha odaklı ve belirleyici. Bu parametre ile Olasılık Kütüphanesini değiştirmeyi öneririz (ikisini birden değiştirmemek).\",\n  \"com_endpoint_google_topk\": \"Top-k, modelin çıktı için token seçimini nasıl yaptığını değiştirir. 1 olan bir top-k, modelin kelime haznesindeki en olası tokenin seçildiği (açgözlü kod çözme olarak da adlandırılır) anlamına gelirken, 3 olan bir top-k, bir sonraki tokenin en olası üç token arasından (sıcaklık kullanılarak) seçileceği anlamına gelir.\",\n  \"com_endpoint_google_topp\": \"Olasılık Kütüphanesi, modelin çıktı için token seçme şeklini değiştirir. Tokenler, en olasılıktan (bkz. topK parametresi) en az olasıya kadar seçilir ve olasılıkları toplamı, top-p değerine eşit olana kadar devam eder.\",\n  \"com_endpoint_instructions_assistants\": \"Talimatları Geçersiz Kıl\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"Asistanın talimatlarını geçersiz kılar. Bu, davranışı tek tek çalışma bazında değiştirmek için yararlıdır.\",\n  \"com_endpoint_max_output_tokens\": \"Maksimum Çıktı Tokenleri\",\n  \"com_endpoint_message\": \"Mesaj\",\n  \"com_endpoint_message_new\": \"Mesaj {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"Mesajınızı düzenleyin veya yeniden oluşturun.\",\n  \"com_endpoint_my_preset\": \"Benim Hazırım\",\n  \"com_endpoint_no_presets\": \"Henüz hazır ayar yok, birini oluşturmak için ayar düğmesini kullanın\",\n  \"com_endpoint_open_menu\": \"Menüyü Aç\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"AI için özel bir ad ayarlayın\",\n  \"com_endpoint_openai_detail\": \"Görsel istekleri için çözünürlük. \\\"Düşük\\\" daha ucuz ve hızlıdır, \\\"Yüksek\\\" daha detaylı ve pahalıdır, \\\"Otomatik\\\" ise görüntü çözünürlüğüne göre ikisi arasında otomatik olarak bir seçim yapar.\",\n  \"com_endpoint_openai_freq\": \" -2.0 ile 2.0 arasında bir değer. Pozitif değerler, metinde daha önceki sıklığa bağlı olarak yeni tokenları cezalandırır, bu da modelin aynı hattı kelimesi kelimesine tekrar etme olasılığını azaltır.\",\n  \"com_endpoint_openai_max\": \"Üretilecek maksimum token sayısı. Giriş tokenlarının ve üretilen tokenların toplam uzunluğu modelin bağlam uzunluğu ile sınırlıdır.\",\n  \"com_endpoint_openai_max_tokens\": \"İsteğe bağlı `max_tokens` alanı, sohbet tamamlamalarında üretilebilecek maksimum token sayısını temsil eder. Giriş tokenlarının ve üretilen tokenların toplam uzunluğu, modellerin bağlam uzunluğu ile sınırlıdır. Bu sayının maksimum bağlam tokenlarını aşması durumunda hatalarla karşılaşabilirsiniz.\",\n  \"com_endpoint_openai_pres\": \" -2.0 ile 2.0 arasında bir değer. Pozitif değerler, metinde daha önceki varlıklarına dayalı olarak yeni tokenları cezalandırır, bu da modelin yeni konular hakkında konuşma olasılığını artırır.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Sistem Mesajına dahil edilecek özel talimatlar ayarlayın. Varsayılan: yok\",\n  \"com_endpoint_openai_reasoning_effort\": \"Sadece o1 modelleri: akıl yürütme modelleri için akıl yürütme çabasını kısıtlar. Akıl yürütme çabasını azaltmak, daha hızlı yanıtlara ve yanıtta akıl yürütmeye daha az token kullanılmasına neden olabilir.\",\n  \"com_endpoint_openai_resend\": \"Daha önce eklenmiş tüm görüntüleri yeniden gönderin. Not: Bu, token maliyetinizi önemli ölçüde artırabilir ve birden çok görüntü eklenmişse hatalarla karşılaşabilirsiniz.\",\n  \"com_endpoint_openai_resend_files\": \"Daha önce eklenmiş tüm dosyaları yeniden gönderin. Not: Bu, token maliyetinizi artıracaktır ve birden çok eklenmiş dosya ile hatalarla karşılaşabilirsiniz.\",\n  \"com_endpoint_openai_stop\": \"API'nin ek tokenlar üretmeyi durduracağı en fazla 4 sıra.\",\n  \"com_endpoint_openai_temp\": \"Yüksek değerler = daha rastgele, düşük değerler = daha odaklı ve belirleyici. Bu parametre ile Olasılık Kütüphanesi (top-p) değiştirmeyi öneririz (ikisini birden değiştirmemek).\",\n  \"com_endpoint_openai_topp\": \"Sıcaklıkla örneklemenin bir alternatifi olan, çekirdek örnekleme olarak adlandırılır, model top_p olasılık kütlesine sahip tokenların sonuçlarını dikkate alır. Yani 0.1, sadece top 10% olasılık kütlesine sahip tokenların dikkate alındığı anlamına gelir. Sıcaklık (temperature) ile değil bu parametre ile değiştirmenizi öneririz.\",\n  \"com_endpoint_output\": \"Çıktı\",\n  \"com_endpoint_plug_image_detail\": \"Görüntü Detayı\",\n  \"com_endpoint_plug_resend_files\": \"Dosyaları Yeniden Gönderin\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Sistem Mesajına dahil edilecek özel talimatlar ayarlayın. Varsayılan: yok\",\n  \"com_endpoint_plug_skip_completion\": \"Tamamlamayı Atla\",\n  \"com_endpoint_plug_use_functions\": \"Eklenti Fonksiyonlarını Kullanın\",\n  \"com_endpoint_presence_penalty\": \"Varlık Cezası\",\n  \"com_endpoint_preset\": \"hazır ayar\",\n  \"com_endpoint_preset_default\": \"şu anda varsayılan hazır ayar.\",\n  \"com_endpoint_preset_default_item\": \"Varsayılan:\",\n  \"com_endpoint_preset_default_none\": \"Aktif varsayılan hazır ayar yok.\",\n  \"com_endpoint_preset_default_removed\": \"Artık varsayılan hazır ayar değil.\",\n  \"com_endpoint_preset_delete_confirm\": \"Bu hazır ayarı silmek istediğinizden emin misiniz?\",\n  \"com_endpoint_preset_delete_error\": \"Hazır ayarınızı silerken bir hata oluştu. Lütfen tekrar deneyin.\",\n  \"com_endpoint_preset_import\": \"Hazır Ayar İthal Edildi!\",\n  \"com_endpoint_preset_import_error\": \"Hazır ayarınızı karşıya yüklerken bir hata oluştu. Lütfen tekrar deneyin.\",\n  \"com_endpoint_preset_name\": \"Hazır Ayar Adı\",\n  \"com_endpoint_preset_save_error\": \"Hazır ayarınızı kaydederken bir hata oluştu. Lütfen tekrar deneyin.\",\n  \"com_endpoint_preset_selected\": \"Hazır Ayar Aktif!\",\n  \"com_endpoint_preset_selected_title\": \"Aktif!\",\n  \"com_endpoint_preset_title\": \"Hazır Ayar\",\n  \"com_endpoint_presets\": \"hazır ayarlar\",\n  \"com_endpoint_presets_clear_warning\": \"Tüm hazır ayarları temizlemek istediğinizden emin misiniz? Bu geri alınamaz.\",\n  \"com_endpoint_prompt_cache\": \"İstem Önbelleğini Kullan\",\n  \"com_endpoint_prompt_prefix\": \"Özel Talimatlar\",\n  \"com_endpoint_prompt_prefix_assistants\": \"Ek Talimatlar\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"Asistanın ana talimatlarının üzerine ek talimatlar veya bağlam ekleyin. Boşsa yok sayılır.\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Özel talimatlar veya bağlam ayarlayın. Boşsa yok sayılır.\",\n  \"com_endpoint_reasoning_effort\": \"Akıl Yürütme Çabası\",\n  \"com_endpoint_save_as_preset\": \"Hazır Olarak Kaydet\",\n  \"com_endpoint_search\": \"Uç noktayı ada göre ara\",\n  \"com_endpoint_set_custom_name\": \"Özelleştirmenizi adlandırın, böylece bu ayarlanabilir\",\n  \"com_endpoint_skip_hover\": \"Tamamlama adımını atlamayı etkinleştir, bu adım nihai yanıtı ve oluşturulan adımları gözden geçirir\",\n  \"com_endpoint_stop\": \"Durdurma Sıraları\",\n  \"com_endpoint_stop_placeholder\": \"Değerleri ayırmak için `Enter` tuşuna basın\",\n  \"com_endpoint_temperature\": \"Sıcaklık\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"Etkin Asistanı Kullan\",\n  \"com_error_expired_user_key\": \"Belirtilen {{0}} anahtarı {{1}} tarihinde süresi dolmuş. Lütfen bir anahtar sağlayın ve tekrar deneyin.\",\n  \"com_error_files_dupe\": \"Yinelenen dosya tespit edildi.\",\n  \"com_error_files_empty\": \"Boş dosyalara izin verilmez.\",\n  \"com_error_files_process\": \"Dosya işlenirken bir hata oluştu.\",\n  \"com_error_files_unsupported_capability\": \"Bu dosya türünü destekleyen hiçbir yetenek etkin değil.\",\n  \"com_error_files_upload\": \"Dosya yüklenirken bir hata oluştu.\",\n  \"com_error_files_upload_canceled\": \"Dosya yükleme isteği iptal edildi. Not: dosya yüklemesi hala işleniyor olabilir ve manuel olarak silinmesi gerekecektir.\",\n  \"com_error_files_validation\": \"Dosya doğrulanırken bir hata oluştu.\",\n  \"com_error_input_length\": \"Son mesajın token sayısı çok uzun, token limitini aşıyor ({{0}}). Lütfen mesajınızı kısaltın, konuşma parametrelerinden maksimum bağlam boyutunu ayarlayın veya devam etmek için konuşmayı çatallayın.\",\n  \"com_error_invalid_user_key\": \"Sağlanan anahtar geçersiz. Lütfen bir anahtar sağlayın ve tekrar deneyin.\",\n  \"com_error_moderation\": \"Gönderdiğiniz içerik, topluluk kurallarımıza uymadığı için moderasyon sistemimiz tarafından işaretlenmiş görünüyor. Bu belirli konu ile devam edemiyoruz. Başka sorularınız veya incelemek istediğiniz başka konular varsa, mesajınızı düzenleyin veya yeni bir konuşma başlatın.\",\n  \"com_error_no_base_url\": \"Temel URL bulunamadı. Lütfen bir tane sağlayın ve tekrar deneyin.\",\n  \"com_error_no_user_key\": \"Anahtar bulunamadı. Lütfen bir anahtar sağlayın ve tekrar deneyin.\",\n  \"com_files_filter\": \"Dosyaları filtrele...\",\n  \"com_files_no_results\": \"Sonuç bulunamadı.\",\n  \"com_files_number_selected\": \"{{0}} dosya/dosyadan {{1}} seçildi\",\n  \"com_generated_files\": \"Oluşturulan dosyalar:\",\n  \"com_hide_examples\": \"Örnekleri Gizle\",\n  \"com_nav_account_settings\": \"Hesap Ayarları\",\n  \"com_nav_always_make_prod\": \"Her zaman yeni sürümleri üretime al\",\n  \"com_nav_archive_created_at\": \"Oluşturulma Tarihi\",\n  \"com_nav_archive_name\": \"Ad\",\n  \"com_nav_archived_chats\": \"Arşivlenmiş sohbetler\",\n  \"com_nav_archived_chats_empty\": \"Arşivlenmiş konuşmanız yok.\",\n  \"com_nav_at_command\": \"@-Komutu\",\n  \"com_nav_at_command_description\": \"Uç noktaları, modelleri, ön ayarları vb. değiştirmek için \\\"@\\\" komutunu aç/kapat\",\n  \"com_nav_audio_play_error\": \"Ses oynatma hatası: {{0}}\",\n  \"com_nav_audio_process_error\": \"Ses işleme hatası: {{0}}\",\n  \"com_nav_auto_scroll\": \"Sohbet açıldığında otomatik olarak son mesaja kaydır\",\n  \"com_nav_auto_send_prompts\": \"İstemleri Otomatik Gönder\",\n  \"com_nav_auto_send_text\": \"Metni otomatik gönder (3 sn sonra)\",\n  \"com_nav_auto_send_text_disabled\": \"devre dışı bırakmak için -1 ayarlayın\",\n  \"com_nav_auto_transcribe_audio\": \"Sesi otomatik olarak yazıya dök\",\n  \"com_nav_automatic_playback\": \"Son Mesajı Otomatik Çal (yalnızca dış)\",\n  \"com_nav_balance\": \"Denge\",\n  \"com_nav_browser\": \"Tarayıcı\",\n  \"com_nav_buffer_append_error\": \"Ses akışında sorun var. Oynatma kesintiye uğrayabilir.\",\n  \"com_nav_change_picture\": \"Resmi değiştir\",\n  \"com_nav_chat_commands\": \"Sohbet Komutları\",\n  \"com_nav_chat_commands_info\": \"Bu komutlar, mesajınızın başına belirli karakterler yazarak etkinleştirilir. Her komut, belirlenen öneki ile tetiklenir. Bu karakterleri sıklıkla mesaj başlatmak için kullanıyorsanız bunları devre dışı bırakabilirsiniz.\",\n  \"com_nav_chat_direction\": \"Sohbet yönü\",\n  \"com_nav_clear_all_chats\": \"Tüm sohbetleri temizle\",\n  \"com_nav_clear_cache_confirm_message\": \"Önbelleği temizlemek istediğinizden emin misiniz?\",\n  \"com_nav_clear_conversation\": \"Sohbetleri temizle\",\n  \"com_nav_clear_conversation_confirm_message\": \"Tüm konuşmaları temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.\",\n  \"com_nav_close_sidebar\": \"Yan paneli kapat\",\n  \"com_nav_commands\": \"Komutlar\",\n  \"com_nav_confirm_clear\": \"Temizlemeyi Onayla\",\n  \"com_nav_conversation_mode\": \"Konuşma Modu\",\n  \"com_nav_convo_menu_options\": \"Konuşma Menü Seçenekleri\",\n  \"com_nav_db_sensitivity\": \"Desibel hassasiyeti\",\n  \"com_nav_delete_account\": \"Hesabı sil\",\n  \"com_nav_delete_account_button\": \"Hesabımı kalıcı olarak sil\",\n  \"com_nav_delete_account_confirm\": \"Hesabı silmek istediğinizden emin misiniz?\",\n  \"com_nav_delete_account_email_placeholder\": \"Lütfen hesap e-postanızı girin\",\n  \"com_nav_delete_cache_storage\": \"Önbellek depolamayı sil\",\n  \"com_nav_delete_data_info\": \"Tüm verileriniz silinecektir.\",\n  \"com_nav_delete_warning\": \"UYARI: Bu işlem hesabınızı kalıcı olarak silecektir.\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"TTS önbelleğini etkinleştir\",\n  \"com_nav_enable_cloud_browser_voice\": \"Bulut tabanlı sesleri kullan\",\n  \"com_nav_enabled\": \"Etkin\",\n  \"com_nav_engine\": \"Motor\",\n  \"com_nav_enter_to_send\": \"Mesajları göndermek için Enter tuşuna basın\",\n  \"com_nav_export\": \"Dışa aktar\",\n  \"com_nav_export_all_message_branches\": \"Tüm mesaj dallarını dışa aktar\",\n  \"com_nav_export_conversation\": \"Konuşmayı dışa aktar\",\n  \"com_nav_export_filename\": \"Dosya adı\",\n  \"com_nav_export_filename_placeholder\": \"Dosya adını belirle\",\n  \"com_nav_export_include_endpoint_options\": \"Uç nokta seçeneklerini dahil et\",\n  \"com_nav_export_recursive\": \"Yinelenen\",\n  \"com_nav_export_recursive_or_sequential\": \"Yinelenen mi, ardışık mı?\",\n  \"com_nav_export_type\": \"Tür\",\n  \"com_nav_external\": \"Harici\",\n  \"com_nav_font_size\": \"Yazı Boyutu\",\n  \"com_nav_font_size_base\": \"Orta\",\n  \"com_nav_font_size_lg\": \"Büyük\",\n  \"com_nav_font_size_sm\": \"Küçük\",\n  \"com_nav_font_size_xl\": \"Çok Büyük\",\n  \"com_nav_font_size_xs\": \"Çok Küçük\",\n  \"com_nav_help_faq\": \"Yardım & SS\",\n  \"com_nav_hide_panel\": \"Sağdaki paneli gizle\",\n  \"com_nav_info_code_artifacts\": \"Sohbet yanında deneysel kod yapıtlarının görüntülenmesini etkinleştirir\",\n  \"com_nav_info_custom_prompt_mode\": \"Etkinleştirildiğinde, varsayılan yapıtlar sistem istemi dahil edilmeyecektir. Bu modda tüm yapıt oluşturma talimatları manuel olarak sağlanmalıdır.\",\n  \"com_nav_info_enter_to_send\": \"Etkinleştirildiğinde, `ENTER` tuşuna basmak mesajınızı gönderecektir. Devre dışı bırakıldığında, Enter tuşuna basmak yeni bir satır ekleyecek ve mesajınızı göndermek için `CTRL + ENTER` / `⌘ + ENTER` tuşlarına basmanız gerekecektir.\",\n  \"com_nav_info_fork_change_default\": \"`Sadece görünür mesajlar` yalnızca seçili mesaja giden doğrudan yolu içerir. `İlgili dalları dahil et` yol boyunca dalları ekler. `Buradan/buraya tümünü dahil et` tüm bağlantılı mesajları ve dalları içerir.\",\n  \"com_nav_info_fork_split_target_setting\": \"Etkinleştirildiğinde, çatallama, seçilen davranışa göre hedef mesajdan konuşmadaki en son mesaja kadar başlayacaktır.\",\n  \"com_nav_info_include_shadcnui\": \"Etkinleştirildiğinde, shadcn/ui bileşenlerini kullanma talimatları dahil edilecektir. shadcn/ui, Radix UI ve Tailwind CSS kullanılarak oluşturulmuş yeniden kullanılabilir bileşenler koleksiyonudur. Not: bunlar uzun talimatlardır, yalnızca LLM'ye doğru içe aktarmaları ve bileşenleri bildirmek sizin için önemliyse etkinleştirmelisiniz. Bu bileşenler hakkında daha fazla bilgi için: https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"Etkinleştirildiğinde, mesajlardaki LaTeX kodu matematiksel denklemler olarak işlenecektir. LaTeX işlemeye ihtiyacınız yoksa performansı artırmak için bunu devre dışı bırakabilirsiniz.\",\n  \"com_nav_info_save_draft\": \"Etkinleştirildiğinde, sohbet formuna girdiğiniz metin ve ekler otomatik olarak yerel olarak taslak olarak kaydedilecektir. Bu taslaklar, sayfayı yeniden yüklediğinizde veya farklı bir konuşmaya geçtiğinizde bile mevcut olacaktır. Taslaklar cihazınızda yerel olarak depolanır ve mesaj gönderildikten sonra silinir.\",\n  \"com_nav_info_show_thinking\": \"Etkinleştirildiğinde, sohbet düşünme açılır menülerini varsayılan olarak açık gösterecek, yapay zekanın akıl yürütmesini gerçek zamanlı olarak görmenize olanak tanıyacaktır. Devre dışı bırakıldığında, daha temiz ve düzenli bir arayüz için düşünme açılır menüleri varsayılan olarak kapalı kalacaktır\",\n  \"com_nav_info_user_name_display\": \"Etkinleştirildiğinde, gönderenin kullanıcı adı gönderdiğiniz her mesajın üzerinde gösterilecektir. Devre dışı bırakıldığında, mesajlarınızın üzerinde sadece \\\"Siz\\\" göreceksiniz.\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Auto detect\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"Dil\",\n  \"com_nav_latex_parsing\": \"Mesajlarda LaTeX işleme (performansı etkileyebilir)\",\n  \"com_nav_log_out\": \"Çıkış yap\",\n  \"com_nav_long_audio_warning\": \"Daha uzun metinlerin işlenmesi daha uzun sürecektir.\",\n  \"com_nav_maximize_chat_space\": \"Sohbet alanını maksimize et\",\n  \"com_nav_modular_chat\": \"Konuşmalar arasında uç noktaları değiştir\",\n  \"com_nav_my_files\": \"Dosyalarım\",\n  \"com_nav_no_search_results\": \"Arama sonucu bulunamadı\",\n  \"com_nav_not_supported\": \"Desteklenmiyor\",\n  \"com_nav_open_sidebar\": \"Yan paneli aç\",\n  \"com_nav_playback_rate\": \"Ses Çalma Hızı\",\n  \"com_nav_plugin_auth_error\": \"Bu eklenti ile kimlik doğrulama işlemi sırasında bir hata oluştu. Lütfen tekrar deneyin.\",\n  \"com_nav_plugin_install\": \"Yükle\",\n  \"com_nav_plugin_search\": \"Eklentileri Ara\",\n  \"com_nav_plugin_store\": \"Eklenti mağazası\",\n  \"com_nav_plugin_uninstall\": \"Kaldır\",\n  \"com_nav_plus_command\": \"+-Komutu\",\n  \"com_nav_plus_command_description\": \"Çoklu yanıt ayarı eklemek için \\\"+\\\" komutunu aç/kapat\",\n  \"com_nav_profile_picture\": \"Profil Resmi\",\n  \"com_nav_save_drafts\": \"Taslakları yerel olarak kaydet\",\n  \"com_nav_scroll_button\": \"Sona kaydır düğmesi\",\n  \"com_nav_search_placeholder\": \"Mesajları ara\",\n  \"com_nav_send_message\": \"Mesajı gönder\",\n  \"com_nav_setting_account\": \"Hesap\",\n  \"com_nav_setting_beta\": \"Beta özellikleri\",\n  \"com_nav_setting_chat\": \"Sohbet\",\n  \"com_nav_setting_data\": \"Veri kontrolleri\",\n  \"com_nav_setting_general\": \"Genel\",\n  \"com_nav_setting_speech\": \"Konuşma\",\n  \"com_nav_settings\": \"Ayarlar\",\n  \"com_nav_shared_links\": \"Paylaşılan bağlantılar\",\n  \"com_nav_show_code\": \"Kod yorumlayıcı kullanırken her zaman kodu göster\",\n  \"com_nav_show_thinking\": \"Düşünme Açılır Menülerini Varsayılan Olarak Aç\",\n  \"com_nav_slash_command\": \"/-Komutu\",\n  \"com_nav_slash_command_description\": \"Klavye ile istem seçmek için \\\"/\\\" komutunu aç/kapat\",\n  \"com_nav_source_buffer_error\": \"Ses oynatma ayarlanırken hata oluştu. Lütfen sayfayı yenileyin.\",\n  \"com_nav_speech_cancel_error\": \"Ses oynatma durdurulamıyor. Sayfayı yenilemeniz gerekebilir.\",\n  \"com_nav_speech_to_text\": \"Sesi Metne Çevir\",\n  \"com_nav_stop_generating\": \"Üretmeyi durdur\",\n  \"com_nav_text_to_speech\": \"Metni Sese Çevir\",\n  \"com_nav_theme\": \"Tema\",\n  \"com_nav_theme_dark\": \"Karanlık\",\n  \"com_nav_theme_light\": \"Aydınlık\",\n  \"com_nav_theme_system\": \"Sistem\",\n  \"com_nav_tool_dialog\": \"Asistan Araçları\",\n  \"com_nav_tool_dialog_agents\": \"Ajan Araçları\",\n  \"com_nav_tool_dialog_description\": \"Araç seçimlerinin kalıcı olması için asistan kaydedilmelidir.\",\n  \"com_nav_tool_remove\": \"Kaldır\",\n  \"com_nav_tool_search\": \"Araçları Ara\",\n  \"com_nav_tts_init_error\": \"Metinden konuşmaya başlatılamadı: {{0}}\",\n  \"com_nav_tts_unsupported_error\": \"Seçilen motor için metinden konuşmaya bu tarayıcıda desteklenmiyor.\",\n  \"com_nav_user\": \"KULLANICI\",\n  \"com_nav_user_msg_markdown\": \"Kullanıcı mesajlarını markdown olarak işle\",\n  \"com_nav_user_name_display\": \"Mesajlarda kullanıcı adını görüntüle\",\n  \"com_nav_voice_select\": \"Ses Seçimi\",\n  \"com_nav_voices_fetch_error\": \"Ses seçenekleri alınamadı. Lütfen internet bağlantınızı kontrol edin.\",\n  \"com_nav_welcome_agent\": \"Lütfen bir Ajan Seçin\",\n  \"com_nav_welcome_assistant\": \"Lütfen bir Asistan Seçin\",\n  \"com_nav_welcome_message\": \"Bugün size nasıl yardımcı olabilirim?\",\n  \"com_show_agent_settings\": \"Ajan Ayarlarını Göster\",\n  \"com_show_completion_settings\": \"Tamamlama Ayarlarını Göster\",\n  \"com_show_examples\": \"Örnekleri Göster\",\n  \"com_sidepanel_agent_builder\": \"Ajan Oluşturucu\",\n  \"com_sidepanel_assistant_builder\": \"Asistan Yapıcı\",\n  \"com_sidepanel_attach_files\": \"Dosyaları Ekle\",\n  \"com_sidepanel_conversation_tags\": \"Yer İmleri\",\n  \"com_sidepanel_hide_panel\": \"Paneli Gizle\",\n  \"com_sidepanel_manage_files\": \"Dosyaları Yönet\",\n  \"com_sidepanel_parameters\": \"Parametreler\",\n  \"com_sidepanel_select_agent\": \"Bir Ajan Seç\",\n  \"com_sidepanel_select_assistant\": \"Bir Asistan Seç\",\n  \"com_ui_accept\": \"Kabul ediyorum\",\n  \"com_ui_add\": \"Ekle\",\n  \"com_ui_add_model_preset\": \"Ek bir yanıt için bir model veya ön ayar ekleyin\",\n  \"com_ui_add_multi_conversation\": \"Çoklu konuşma ekle\",\n  \"com_ui_admin\": \"Yönetici\",\n  \"com_ui_admin_access_warning\": \"Bu özelliğe Yönetici erişimini devre dışı bırakmak, yenileme gerektiren beklenmedik kullanıcı arayüzü sorunlarına neden olabilir. Kaydedilirse, geri almanın tek yolu tüm rolleri etkileyen librechat.yaml yapılandırmasındaki arayüz ayarı aracılığıyladır.\",\n  \"com_ui_admin_settings\": \"Yönetici Ayarları\",\n  \"com_ui_advanced\": \"Gelişmiş\",\n  \"com_ui_agent\": \"Ajan\",\n  \"com_ui_agent_delete_error\": \"Ajan silinirken bir hata oluştu\",\n  \"com_ui_agent_deleted\": \"Ajan başarıyla silindi\",\n  \"com_ui_agent_duplicate_error\": \"Ajan çoğaltılırken bir hata oluştu\",\n  \"com_ui_agent_duplicated\": \"Ajan başarıyla çoğaltıldı\",\n  \"com_ui_agent_editing_allowed\": \"Diğer kullanıcılar zaten bu ajanı düzenleyebilir\",\n  \"com_ui_agent_shared_to_all\": \"Bu ajan tüm kullanıcılarla paylaşıldı\",\n  \"com_ui_agents\": \"Ajanlar\",\n  \"com_ui_agents_allow_create\": \"Ajan oluşturmaya izin ver\",\n  \"com_ui_agents_allow_share_global\": \"Ajanları tüm kullanıcılarla paylaşmaya izin ver\",\n  \"com_ui_agents_allow_use\": \"Ajan kullanımına izin ver\",\n  \"com_ui_all\": \"hepsi\",\n  \"com_ui_all_proper\": \"Tümü\",\n  \"com_ui_archive\": \"Arşivle\",\n  \"com_ui_archive_error\": \"Konuşmayı arşivleyemedi\",\n  \"com_ui_artifact_click\": \"Açmak için tıklayın\",\n  \"com_ui_artifacts\": \"Yapıtlar\",\n  \"com_ui_artifacts_toggle\": \"Yapıtlar Arayüzünü Aç/Kapat\",\n  \"com_ui_ascending\": \"Artan\",\n  \"com_ui_assistant\": \"Asistan\",\n  \"com_ui_assistant_delete_error\": \"Asistan silme sırasında bir hata oluştu\",\n  \"com_ui_assistant_deleted\": \"Asistan başarıyla silindi\",\n  \"com_ui_assistants\": \"Asistanlar\",\n  \"com_ui_assistants_output\": \"Asistan Çıkışı\",\n  \"com_ui_attach_error\": \"Dosya eklenemiyor. Bir konuşma oluşturun veya seçin ya da sayfayı yenilemeyi deneyin.\",\n  \"com_ui_attach_error_openai\": \"Asistan dosyalarını diğer uç noktalara ekleyemezsiniz\",\n  \"com_ui_attach_error_size\": \"Uç nokta için dosya boyutu sınırı aşıldı:\",\n  \"com_ui_attach_error_type\": \"Uç nokta için desteklenmeyen dosya türü:\",\n  \"com_ui_attach_warn_endpoint\": \"Asistan olmayan dosyalar uyumlu bir araç olmadan göz ardı edilebilir\",\n  \"com_ui_attachment\": \"Ek\",\n  \"com_ui_authentication\": \"Kimlik Doğrulama\",\n  \"com_ui_avatar\": \"Avatar\",\n  \"com_ui_back_to_chat\": \"Sohbete Dön\",\n  \"com_ui_back_to_prompts\": \"İstemlere Dön\",\n  \"com_ui_bookmark_delete_confirm\": \"Bu yer imini silmek istediğinizden emin misiniz?\",\n  \"com_ui_bookmarks\": \"Yer İmleri\",\n  \"com_ui_bookmarks_add\": \"Yer İmi Ekle\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Mevcut sohbete ekle\",\n  \"com_ui_bookmarks_count\": \"Adet\",\n  \"com_ui_bookmarks_create_error\": \"Yer imi oluşturulurken bir hata oluştu\",\n  \"com_ui_bookmarks_create_exists\": \"Bu yer imi zaten mevcut\",\n  \"com_ui_bookmarks_create_success\": \"Yer imi başarıyla oluşturuldu\",\n  \"com_ui_bookmarks_delete\": \"Yer İmini Sil\",\n  \"com_ui_bookmarks_delete_error\": \"Yer imi silinirken bir hata oluştu\",\n  \"com_ui_bookmarks_delete_success\": \"Yer imi başarıyla silindi\",\n  \"com_ui_bookmarks_description\": \"Açıklama\",\n  \"com_ui_bookmarks_edit\": \"Yer İmini Düzenle\",\n  \"com_ui_bookmarks_filter\": \"Yer imlerini filtrele...\",\n  \"com_ui_bookmarks_new\": \"Yeni Yer İmi\",\n  \"com_ui_bookmarks_title\": \"Başlık\",\n  \"com_ui_bookmarks_update_error\": \"Yer imi güncellenirken bir hata oluştu\",\n  \"com_ui_bookmarks_update_success\": \"Yer imi başarıyla güncellendi\",\n  \"com_ui_bulk_delete_error\": \"Paylaşılan bağlantılar silinemedi\",\n  \"com_ui_cancel\": \"İptal\",\n  \"com_ui_chat\": \"Sohbet\",\n  \"com_ui_chat_history\": \"Sohbet Geçmişi\",\n  \"com_ui_clear\": \"Temizle\",\n  \"com_ui_clear_all\": \"Tümünü temizle\",\n  \"com_ui_close\": \"Kapat\",\n  \"com_ui_close_menu\": \"Menüyü Kapat\",\n  \"com_ui_code\": \"Kod\",\n  \"com_ui_collapse_chat\": \"Sohbeti Daralt\",\n  \"com_ui_command_placeholder\": \"İsteğe bağlı: İstem için bir komut girin veya ad kullanılacak\",\n  \"com_ui_command_usage_placeholder\": \"Bir İstemi komut veya ada göre seçin\",\n  \"com_ui_confirm_action\": \"Eylemi Onayla\",\n  \"com_ui_confirm_admin_use_change\": \"Bu ayarı değiştirmek, siz dahil yöneticilerin erişimini engelleyecektir. Devam etmek istediğinizden emin misiniz?\",\n  \"com_ui_confirm_change\": \"Değişikliği Onayla\",\n  \"com_ui_context\": \"Bağlam\",\n  \"com_ui_continue\": \"Devam et\",\n  \"com_ui_controls\": \"Kontroller\",\n  \"com_ui_copied\": \"Kopyalandı!\",\n  \"com_ui_copied_to_clipboard\": \"Panoya kopyalandı\",\n  \"com_ui_copy_code\": \"Kodu kopyala\",\n  \"com_ui_copy_link\": \"Bağlantıyı kopyala\",\n  \"com_ui_copy_to_clipboard\": \"Panoya kopyala\",\n  \"com_ui_create\": \"Oluştur\",\n  \"com_ui_create_link\": \"Bağlantı oluştur\",\n  \"com_ui_create_prompt\": \"İstem Oluştur\",\n  \"com_ui_currently_production\": \"Şu anda üretimde\",\n  \"com_ui_custom_prompt_mode\": \"Özel İstem Modu\",\n  \"com_ui_dashboard\": \"Gösterge Paneli\",\n  \"com_ui_date\": \"Tarih\",\n  \"com_ui_date_april\": \"Nisan\",\n  \"com_ui_date_august\": \"Ağustos\",\n  \"com_ui_date_december\": \"Aralık\",\n  \"com_ui_date_february\": \"Şubat\",\n  \"com_ui_date_january\": \"Ocak\",\n  \"com_ui_date_july\": \"Temmuz\",\n  \"com_ui_date_june\": \"Haziran\",\n  \"com_ui_date_march\": \"Mart\",\n  \"com_ui_date_may\": \"Mayıs\",\n  \"com_ui_date_november\": \"Kasım\",\n  \"com_ui_date_october\": \"Ekim\",\n  \"com_ui_date_previous_30_days\": \"Önceki 30 gün\",\n  \"com_ui_date_previous_7_days\": \"Önceki 7 gün\",\n  \"com_ui_date_september\": \"Eylül\",\n  \"com_ui_date_today\": \"Bugün\",\n  \"com_ui_date_yesterday\": \"Dün\",\n  \"com_ui_decline\": \"Kabul etmiyorum\",\n  \"com_ui_delete\": \"Sil\",\n  \"com_ui_delete_action\": \"Eylemi Sil\",\n  \"com_ui_delete_action_confirm\": \"Bu eylemi silmek istediğinizden emin misiniz?\",\n  \"com_ui_delete_agent_confirm\": \"Bu ajanı silmek istediğinizden emin misiniz?\",\n  \"com_ui_delete_assistant_confirm\": \"Bu Asistanı gerçekten silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.\",\n  \"com_ui_delete_confirm\": \"Bu silinecek\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"Bu, \\\"{{0}}\\\" için seçilen sürümü silecektir. Başka sürüm yoksa, istem silinecektir.\",\n  \"com_ui_delete_conversation\": \"Sohbeti sil?\",\n  \"com_ui_delete_prompt\": \"İstem Silinsin mi?\",\n  \"com_ui_delete_shared_link\": \"Paylaşılan bağlantı silinsin mi?\",\n  \"com_ui_delete_tool\": \"Aracı Sil\",\n  \"com_ui_delete_tool_confirm\": \"Bu aracı silmek istediğinizden emin misiniz?\",\n  \"com_ui_descending\": \"Azalan\",\n  \"com_ui_description\": \"Açıklama\",\n  \"com_ui_description_placeholder\": \"İsteğe bağlı: İstem için görüntülenecek bir açıklama girin\",\n  \"com_ui_download\": \"İndir\",\n  \"com_ui_download_artifact\": \"Yapıtı İndir\",\n  \"com_ui_download_error\": \"Dosya indirme hatası. Dosya silinmiş olabilir.\",\n  \"com_ui_drag_drop\": \"Sürükle ve bırak\",\n  \"com_ui_dropdown_variables\": \"Açılır menü değişkenleri:\",\n  \"com_ui_dropdown_variables_info\": \"İstemleriniz için özel açılır menüler oluşturun: `{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"Çoğalt\",\n  \"com_ui_duplication_error\": \"Konuşma çoğaltılırken bir hata oluştu\",\n  \"com_ui_duplication_processing\": \"Konuşma çoğaltılıyor...\",\n  \"com_ui_duplication_success\": \"Konuşma başarıyla çoğaltıldı\",\n  \"com_ui_edit\": \"Düzenle\",\n  \"com_ui_endpoint\": \"Uç Nokta\",\n  \"com_ui_endpoint_menu\": \"LLM Uç Nokta Menüsü\",\n  \"com_ui_endpoints_available\": \"Kullanılabilir Uç Noktalar\",\n  \"com_ui_enter\": \"Gir\",\n  \"com_ui_enter_api_key\": \"API Anahtarı Girin\",\n  \"com_ui_enter_openapi_schema\": \"OpenAPI şemanızı buraya girin\",\n  \"com_ui_enter_var\": \"{{0}} girin\",\n  \"com_ui_error\": \"Hata\",\n  \"com_ui_error_connection\": \"Sunucuya bağlanırken hata oluştu, sayfayı yenilemeyi deneyin.\",\n  \"com_ui_error_save_admin_settings\": \"Yönetici ayarlarınız kaydedilirken bir hata oluştu.\",\n  \"com_ui_examples\": \"Örnekler\",\n  \"com_ui_export_convo_modal\": \"Konuşma Dışa Aktarma Modalı\",\n  \"com_ui_field_required\": \"Bu alan gereklidir\",\n  \"com_ui_filter_prompts\": \"İstemleri Filtrele\",\n  \"com_ui_filter_prompts_name\": \"İstemleri ada göre filtrele\",\n  \"com_ui_fork\": \"Çatallaş\",\n  \"com_ui_fork_all_target\": \"Buradan tüm dahil et\",\n  \"com_ui_fork_branches\": \"İlgili dalları dahil et\",\n  \"com_ui_fork_change_default\": \"Varsayılan çatallama seçeneği\",\n  \"com_ui_fork_default\": \"Varsayılan çatallama seçeneğini kullan\",\n  \"com_ui_fork_error\": \"Konuşma çatallanmasında bir hata oluştu\",\n  \"com_ui_fork_from_message\": \"Bir çatallama seçeneği seç\",\n  \"com_ui_fork_info_1\": \"Mesajların istenilen davranışla çatallanması için bu ayarı kullanın.\",\n  \"com_ui_fork_info_2\": \"\\\"Çatallaşma\\\", mevcut konuşmadaki belirli mesajlardan veya mesajlardan başlayan/sonlanan yeni bir konuşma oluşturmayı ifade eder, seçilen seçeneklere göre bir kopya oluşturur.\",\n  \"com_ui_fork_info_3\": \"\\\"Hedef mesaj\\\" bu açılır pencerenin açıldığı mesajı veya \\\"{{0}}\\\" işaretlenirse, konuşmadaki son mesajı ifade eder.\",\n  \"com_ui_fork_info_branches\": \"Bu seçenek, görünen mesajları ilgili dallarla birlikte çatallandırır; diğer bir deyişle, hedef mesaja giden doğrudan yolu ve yol üzerindeki dalları içerir.\",\n  \"com_ui_fork_info_remember\": \"Çatallama işlemlerinde hızlıca tercih ettiğiniz seçenekleri hatırlayın, böylece gelecekte çatallama işlemlerini daha hızlı yapabilirsiniz.\",\n  \"com_ui_fork_info_start\": \"İşaretlenirse, yukarıda seçilen davranışa göre bu mesajdan konuşmadaki son mesaja kadar çatallandırılacaktır.\",\n  \"com_ui_fork_info_target\": \"Bu seçenek, hedef mesaja kadar olan tüm mesajları ve komşularını çatallandırır; diğer bir deyişle, tüm mesaj dalları, görünür olup olmadıklarına veya aynı yoldan olup olmadıklarına bakılmaksızın dahildir.\",\n  \"com_ui_fork_info_visible\": \"Bu seçenek sadece görünen mesajları çatallandırır; diğer bir deyişle, hedef mesaja giden doğrudan yolu, herhangi bir dal olmadan.\",\n  \"com_ui_fork_processing\": \"Konuşma çatallanıyor...\",\n  \"com_ui_fork_remember\": \"Hatırla\",\n  \"com_ui_fork_remember_checked\": \"Seçiminiz kullanımdan sonra hatırlanacaktır. Ayarlardan herhangi bir zamanda bunu değiştirebilirsiniz.\",\n  \"com_ui_fork_split_target\": \"Çatallamaya burada başla\",\n  \"com_ui_fork_split_target_setting\": \"Varsayılan olarak hedef mesajdan çatallamaya başla\",\n  \"com_ui_fork_success\": \"Başarıyla çatallanmış konuşma\",\n  \"com_ui_fork_visible\": \"Sadece görünen mesajlar\",\n  \"com_ui_go_back\": \"Geri git\",\n  \"com_ui_go_to_conversation\": \"Konuşmaya Git\",\n  \"com_ui_happy_birthday\": \"1. doğum günüm kutlu olsun!\",\n  \"com_ui_hide_qr\": \"QR Kodunu Gizle\",\n  \"com_ui_host\": \"Host\",\n  \"com_ui_image_gen\": \"Görüntü Oluştur\",\n  \"com_ui_import_conversation_error\": \"Konuşmalarınızı içe aktarma sırasında bir hata oluştu\",\n  \"com_ui_import_conversation_file_type_error\": \"Desteklenmeyen içe aktarma türü\",\n  \"com_ui_import_conversation_info\": \"JSON dosyasından konuşmaları içe aktar\",\n  \"com_ui_import_conversation_success\": \"Konuşmalar başarıyla içe aktarıldı\",\n  \"com_ui_include_shadcnui\": \"shadcn/ui bileşen talimatlarını dahil et\",\n  \"com_ui_input\": \"Girdi\",\n  \"com_ui_instructions\": \"Talimatlar\",\n  \"com_ui_latest_footer\": \"Herkes için Her Yapay Zeka.\",\n  \"com_ui_latest_production_version\": \"En son üretim sürümü\",\n  \"com_ui_latest_version\": \"En son sürüm\",\n  \"com_ui_librechat_code_api_key\": \"LibreChat Kod Yorumlayıcı API anahtarınızı alın\",\n  \"com_ui_librechat_code_api_subtitle\": \"Güvenli. Çoklu dil. Giriş/Çıkış Dosyaları.\",\n  \"com_ui_librechat_code_api_title\": \"Yapay Zeka Kodu Çalıştır\",\n  \"com_ui_llm_menu\": \"LLM Menüsü\",\n  \"com_ui_llms_available\": \"Kullanılabilir LLM'ler\",\n  \"com_ui_locked\": \"Kilitli\",\n  \"com_ui_logo\": \"{{0}} Logosu\",\n  \"com_ui_manage\": \"Yönet\",\n  \"com_ui_max_tags\": \"İzin verilen maksimum sayı {{0}}, en son değerler kullanılıyor.\",\n  \"com_ui_mention\": \"Bir uç nokta, asistan veya hazır ayar anın, hızlıca ona geçmek için\",\n  \"com_ui_min_tags\": \"Daha fazla değer kaldırılamaz, en az {{0}} gereklidir.\",\n  \"com_ui_model\": \"Model\",\n  \"com_ui_model_parameters\": \"Model Parametreleri\",\n  \"com_ui_more_info\": \"Daha fazla bilgi\",\n  \"com_ui_my_prompts\": \"İstemlerim\",\n  \"com_ui_name\": \"Ad\",\n  \"com_ui_new_chat\": \"Yeni sohbet\",\n  \"com_ui_next\": \"Sonraki\",\n  \"com_ui_no\": \"Hayır\",\n  \"com_ui_no_bookmarks\": \"henüz yer iminiz yok gibi görünüyor. Bir sohbete tıklayın ve yeni bir tane ekleyin\",\n  \"com_ui_no_category\": \"Kategori yok\",\n  \"com_ui_no_changes\": \"Güncellenecek değişiklik yok\",\n  \"com_ui_no_terms_content\": \"Şartlar ve koşullar için içerik bulunmuyor\",\n  \"com_ui_none_selected\": \"Hiçbiri seçilmedi\",\n  \"com_ui_nothing_found\": \"Hiçbir şey bulunamadı\",\n  \"com_ui_of\": \"-den\",\n  \"com_ui_off\": \"Kapalı\",\n  \"com_ui_on\": \"Açık\",\n  \"com_ui_page\": \"Sayfa\",\n  \"com_ui_prev\": \"Önceki\",\n  \"com_ui_preview\": \"Önizleme\",\n  \"com_ui_privacy_policy\": \"Gizlilik Politikası\",\n  \"com_ui_privacy_policy_url\": \"Gizlilik Politikası URL'si\",\n  \"com_ui_prompt\": \"İstem\",\n  \"com_ui_prompt_already_shared_to_all\": \"Bu istem zaten tüm kullanıcılarla paylaşılmış\",\n  \"com_ui_prompt_name\": \"İstem Adı\",\n  \"com_ui_prompt_name_required\": \"İstem Adı gerekli\",\n  \"com_ui_prompt_preview_not_shared\": \"Yazar bu istem için işbirliğine izin vermemiş.\",\n  \"com_ui_prompt_text\": \"Metin\",\n  \"com_ui_prompt_text_required\": \"Metin gerekli\",\n  \"com_ui_prompt_update_error\": \"İstem güncellenirken bir hata oluştu\",\n  \"com_ui_prompts\": \"İstemler\",\n  \"com_ui_prompts_allow_create\": \"İstem oluşturmaya izin ver\",\n  \"com_ui_prompts_allow_share_global\": \"İstemleri tüm kullanıcılarla paylaşmaya izin ver\",\n  \"com_ui_prompts_allow_use\": \"İstem kullanımına izin ver\",\n  \"com_ui_provider\": \"Sağlayıcı\",\n  \"com_ui_read_aloud\": \"Sesli oku\",\n  \"com_ui_refresh_link\": \"Bağlantıyı yenile\",\n  \"com_ui_regenerate\": \"Yeniden Oluştur\",\n  \"com_ui_region\": \"Bölge\",\n  \"com_ui_rename\": \"Yeniden adlandır\",\n  \"com_ui_rename_prompt\": \"İstemi Yeniden Adlandır\",\n  \"com_ui_reset_var\": \"{{0}} sıfırla\",\n  \"com_ui_result\": \"Sonuç\",\n  \"com_ui_revoke\": \"Geri Al\",\n  \"com_ui_revoke_info\": \"Kullanıcı tarafından sağlanan tüm kimlik bilgilerini geri al\",\n  \"com_ui_revoke_key_confirm\": \"Bu anahtarı iptal etmek istediğinizden emin misiniz?\",\n  \"com_ui_revoke_key_endpoint\": \"{{0}} için Anahtarı İptal Et\",\n  \"com_ui_revoke_keys\": \"Anahtarları İptal Et\",\n  \"com_ui_revoke_keys_confirm\": \"Tüm anahtarları iptal etmek istediğinizden emin misiniz?\",\n  \"com_ui_role_select\": \"Rol\",\n  \"com_ui_run_code\": \"Kodu Çalıştır\",\n  \"com_ui_run_code_error\": \"Kod çalıştırılırken bir hata oluştu\",\n  \"com_ui_save\": \"Kaydet\",\n  \"com_ui_save_submit\": \"Kaydet ve Gönder\",\n  \"com_ui_saved\": \"Kaydedildi!\",\n  \"com_ui_schema\": \"Şema\",\n  \"com_ui_search\": \"Ara\",\n  \"com_ui_select\": \"Seç\",\n  \"com_ui_select_file\": \"Bir dosya seç\",\n  \"com_ui_select_model\": \"Bir model seçin\",\n  \"com_ui_select_provider\": \"Bir sağlayıcı seç\",\n  \"com_ui_select_provider_first\": \"Önce bir sağlayıcı seçin\",\n  \"com_ui_select_region\": \"Bir bölge seç\",\n  \"com_ui_select_search_model\": \"Adına göre model ara\",\n  \"com_ui_select_search_plugin\": \"Adına göre eklenti ara\",\n  \"com_ui_select_search_provider\": \"Sağlayıcıyı ada göre ara\",\n  \"com_ui_select_search_region\": \"Bölgeyi ada göre ara\",\n  \"com_ui_share\": \"Paylaş\",\n  \"com_ui_share_create_message\": \"Adınız ve paylaşım sonrasında eklediğiniz mesajlar gizli kalır.\",\n  \"com_ui_share_delete_error\": \"Paylaşılan bağlantı silinirken bir hata oluştu\",\n  \"com_ui_share_error\": \"Sohbet bağlantısını paylaşırken bir hata oluştu\",\n  \"com_ui_share_form_description\": \"Form açıklaması paylaş\",\n  \"com_ui_share_link_to_chat\": \"Sohbete bağlantı paylaş\",\n  \"com_ui_share_to_all_users\": \"Tüm kullanıcılarla paylaş\",\n  \"com_ui_share_update_message\": \"Adınız, özel talimatlarınız ve paylaşım sonrasında eklediğiniz mesajlar gizli kalır.\",\n  \"com_ui_share_var\": \"{{0}} paylaş\",\n  \"com_ui_shared_link_bulk_delete_success\": \"Paylaşılan bağlantılar başarıyla silindi\",\n  \"com_ui_shared_link_delete_success\": \"Paylaşılan bağlantı başarıyla silindi\",\n  \"com_ui_shared_link_not_found\": \"Paylaşılan bağlantı bulunamadı\",\n  \"com_ui_shared_prompts\": \"Paylaşılan İstemler\",\n  \"com_ui_show_all\": \"Tümünü Göster\",\n  \"com_ui_show_qr\": \"QR Kodunu Göster\",\n  \"com_ui_simple\": \"Basit\",\n  \"com_ui_size\": \"Boyut\",\n  \"com_ui_special_variables\": \"Özel değişkenler:\",\n  \"com_ui_special_variables_info\": \"Geçerli tarih için `{{current_date}}` ve hesap adınız için `{{current_user}}` kullanın.\",\n  \"com_ui_speech_while_submitting\": \"Bir yanıt oluşturulurken konuşma gönderilemez\",\n  \"com_ui_stop\": \"Durdur\",\n  \"com_ui_storage\": \"Depolama\",\n  \"com_ui_submit\": \"Gönder\",\n  \"com_ui_temporary_chat\": \"Geçici Sohbet\",\n  \"com_ui_terms_and_conditions\": \"Şartlar ve koşullar\",\n  \"com_ui_terms_of_service\": \"Hizmet Şartları\",\n  \"com_ui_thinking\": \"Düşünüyor...\",\n  \"com_ui_thoughts\": \"Düşünceler\",\n  \"com_ui_tools\": \"Araçlar\",\n  \"com_ui_unarchive\": \"Arşivden çıkar\",\n  \"com_ui_unarchive_error\": \"Konuşmayı arşivden çıkarma başarısız oldu\",\n  \"com_ui_unknown\": \"Bilinmeyen\",\n  \"com_ui_update\": \"Güncelle\",\n  \"com_ui_upload\": \"Yükle\",\n  \"com_ui_upload_code_files\": \"Kod Yorumlayıcı için Yükle\",\n  \"com_ui_upload_delay\": \"\\\"{{0}}\\\" yüklenmesi beklenenden daha uzun sürüyor. Lütfen dosyanın alma işlemini tamamlamasını bekleyin.\",\n  \"com_ui_upload_error\": \"Dosyanızı yüklerken bir hata oluştu\",\n  \"com_ui_upload_file_search\": \"Dosya Arama için Yükle\",\n  \"com_ui_upload_files\": \"Dosyaları yükle\",\n  \"com_ui_upload_image\": \"Bir resim yükle\",\n  \"com_ui_upload_image_input\": \"Resim Yükle\",\n  \"com_ui_upload_invalid\": \"Geçersiz dosya yükleme. 2 MB'ı geçmeyen bir resim olması gerekir\",\n  \"com_ui_upload_invalid_var\": \"Yükleme için geçersiz dosya. {{0}} MB'ı aşmayan bir resim olmalı\",\n  \"com_ui_upload_success\": \"Dosya başarıyla yüklendi\",\n  \"com_ui_upload_type\": \"Yükleme Türünü Seç\",\n  \"com_ui_use_micrphone\": \"Mikrofon kullan\",\n  \"com_ui_use_prompt\": \"İstemi kullan\",\n  \"com_ui_variables\": \"Değişkenler\",\n  \"com_ui_variables_info\": \"İstemi kullanırken daha sonra doldurmak üzere metninizde çift süslü parantez kullanın, örn. `{{example variable}}`.\",\n  \"com_ui_version_var\": \"Sürüm {{0}}\",\n  \"com_ui_versions\": \"Sürümler\",\n  \"com_ui_view_source\": \"Kaynak sohbeti görüntüle\",\n  \"com_ui_yes\": \"Evet\",\n  \"com_ui_zoom\": \"Yakınlaştır\",\n  \"com_user_message\": \"Sen\",\n  \"com_warning_resubmit_unsupported\": \"Bu uç nokta için yapay zeka mesajını yeniden gönderme desteklenmiyor.\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/vi/translation.json",
    "content": "{\n  \"com_auth_already_have_account\": \"Đã có tài khoản?\",\n  \"com_auth_click\": \"Nhấp chuột\",\n  \"com_auth_click_here\": \"Nhấp vào đây\",\n  \"com_auth_continue\": \"Tiếp tục\",\n  \"com_auth_create_account\": \"Tạo tài khoản của bạn\",\n  \"com_auth_discord_login\": \"Đăng nhập bằng Discord\",\n  \"com_auth_email\": \"Email\",\n  \"com_auth_email_address\": \"Địa chỉ email\",\n  \"com_auth_email_max_length\": \"Email không được dài hơn 120 ký tự\",\n  \"com_auth_email_min_length\": \"Email phải có ít nhất 6 ký tự\",\n  \"com_auth_email_pattern\": \"Bạn phải nhập địa chỉ email hợp lệ\",\n  \"com_auth_email_required\": \"Email là bắt buộc\",\n  \"com_auth_error_create\": \"Có lỗi khi đăng ký tài khoản của bạn. Vui lòng thử lại.\",\n  \"com_auth_error_invalid_reset_token\": \"Mã đặt lại mật khẩu này không còn hợp lệ.\",\n  \"com_auth_error_login\": \"Không thể đăng nhập với thông tin được cung cấp. Vui lòng kiểm tra thông tin đăng nhập và thử lại.\",\n  \"com_auth_error_login_ban\": \"Tài khoản của bạn đã bị khóa tạm thời do vi phạm dịch vụ của chúng tôi.\",\n  \"com_auth_error_login_rl\": \"Quá nhiều lần đăng nhập trong một khoảng thời gian ngắn. Vui lòng thử lại sau.\",\n  \"com_auth_error_login_server\": \"Đã xảy ra lỗi máy chủ nội bộ. Vui lòng đợi một vài phút và thử lại.\",\n  \"com_auth_facebook_login\": \"Đăng nhập bằng Facebook\",\n  \"com_auth_full_name\": \"Họ và tên đầy đủ\",\n  \"com_auth_github_login\": \"Đăng nhập bằng Github\",\n  \"com_auth_google_login\": \"Đăng nhập bằng Google\",\n  \"com_auth_here\": \"VÀO ĐÂY\",\n  \"com_auth_login\": \"Đăng nhập\",\n  \"com_auth_login_with_new_password\": \"Bây giờ bạn có thể đăng nhập bằng mật khẩu mới của mình.\",\n  \"com_auth_name_max_length\": \"Tên phải ít hơn 80 ký tự\",\n  \"com_auth_name_min_length\": \"Tên phải có ít nhất 3 ký tự\",\n  \"com_auth_name_required\": \"Tên là bắt buộc\",\n  \"com_auth_no_account\": \"Chưa có tài khoản?\",\n  \"com_auth_password\": \"Mật khẩu\",\n  \"com_auth_password_confirm\": \"Xác nhận mật khẩu\",\n  \"com_auth_password_forgot\": \"Quên mật khẩu?\",\n  \"com_auth_password_max_length\": \"Mật khẩu phải ít hơn 128 ký tự\",\n  \"com_auth_password_min_length\": \"Mật khẩu phải có ít nhất 8 ký tự\",\n  \"com_auth_password_not_match\": \"Mật khẩu không khớp\",\n  \"com_auth_password_required\": \"Mật khẩu là bắt buộc\",\n  \"com_auth_reset_password\": \"Đặt lại mật khẩu\",\n  \"com_auth_reset_password_link_sent\": \"Email đã được gửi\",\n  \"com_auth_reset_password_success\": \"Đặt lại mật khẩu thành công\",\n  \"com_auth_sign_in\": \"Đăng nhập\",\n  \"com_auth_sign_up\": \"Đăng ký\",\n  \"com_auth_submit_registration\": \"Gửi đăng ký\",\n  \"com_auth_to_reset_your_password\": \"để đặt lại mật khẩu của bạn.\",\n  \"com_auth_to_try_again\": \"để thử lại.\",\n  \"com_auth_username\": \"Tên người dùng (tùy chọn)\",\n  \"com_auth_username_max_length\": \"Tên người dùng phải ít hơn 20 ký tự\",\n  \"com_auth_username_min_length\": \"Tên người dùng phải có ít nhất 2 ký tự\",\n  \"com_auth_welcome_back\": \"Chào mừng trở lại\",\n  \"com_endpoint\": \"Điểm kết thúc\",\n  \"com_endpoint_agent\": \"Đặc trưng\",\n  \"com_endpoint_agent_model\": \"Mô hình Đặc trưng (Đề xuất: GPT-3.5)\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"Số mã thông báo tối đa có thể được tạo ra trong phản hồi. Chỉ định một giá trị thấp hơn cho các phản hồi ngắn hơn và một giá trị cao hơn cho các phản hồi dài hơn.\",\n  \"com_endpoint_anthropic_temp\": \"Các giá trị nằm trong khoảng từ 0 đến 1. Sử dụng nhiệt độ gần 0 cho các nhiệm vụ phân tích / lựa chọn nhiều lựa chọn, và gần 1 cho các nhiệm vụ sáng tạo và tạo ra. Chúng tôi khuyến nghị thay đổi giá trị này hoặc Top P nhưng không phải cả hai.\",\n  \"com_endpoint_anthropic_topk\": \"Top-k thay đổi cách mô hình chọn mã thông báo để xuất. Top-k là 1 có nghĩa là mã thông báo được chọn là phổ biến nhất trong tất cả các mã thông báo trong bảng từ vựng của mô hình (còn được gọi là giải mã tham lam), trong khi top-k là 3 có nghĩa là mã thông báo tiếp theo được chọn từ giữa 3 mã thông báo phổ biến nhất (sử dụng nhiệt độ).\",\n  \"com_endpoint_anthropic_topp\": \"Top-p thay đổi cách mô hình chọn mã thông báo để xuất. Mã thông báo được chọn từ căn cứ có xác suất cao nhất đến thấp nhất cho đến khi tổng xác suất của chúng bằng giá trị top-p.\",\n  \"com_endpoint_completion\": \"Hoàn thành\",\n  \"com_endpoint_completion_model\": \"Mô hình Hoàn thành (Đề xuất: GPT-4)\",\n  \"com_endpoint_config_key\": \"Đặt Khóa API\",\n  \"com_endpoint_config_key_encryption\": \"Khóa của bạn sẽ được mã hóa và xóa vào lúc\",\n  \"com_endpoint_config_key_for\": \"Đặt Khóa API cho\",\n  \"com_endpoint_config_key_google_need_to\": \"Bạn cần\",\n  \"com_endpoint_config_key_google_service_account\": \"Tạo một Tài khoản Dịch vụ\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"Bật Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API trên Google Cloud, sau đó\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"Hãy chắc chắn nhấp vào 'Tạo và Tiếp tục' để cấp ít nhất vai trò 'Người dùng Vertex AI' thì còn lại, tạo một khóa JSON để nhập vào đây.\",\n  \"com_endpoint_config_key_import_json_key\": \"Nhập Khóa JSON Tài khoản Dịch vụ.\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"Khóa JSON Tài khoản Dịch vụ không hợp lệ, Bạn đã nhập đúng tệp không?\",\n  \"com_endpoint_config_key_import_json_key_success\": \"Nhập thành công Khóa JSON Tài khoản Dịch vụ\",\n  \"com_endpoint_config_key_name\": \"Khóa\",\n  \"com_endpoint_config_value\": \"Nhập giá trị cho\",\n  \"com_endpoint_context\": \"Ngữ cảnh\",\n  \"com_endpoint_custom_name\": \"Tên tùy chỉnh\",\n  \"com_endpoint_default\": \"mặc định\",\n  \"com_endpoint_default_blank\": \"mặc định: trống\",\n  \"com_endpoint_default_empty\": \"mặc định: trống rỗng\",\n  \"com_endpoint_default_with_num\": \"mặc định: {{0}}\",\n  \"com_endpoint_examples\": \" Đặt sẵn\",\n  \"com_endpoint_export\": \"Xuất\",\n  \"com_endpoint_frequency_penalty\": \"Hình phạt tần suất\",\n  \"com_endpoint_func_hover\": \"Cho phép sử dụng Plugin như các chức năng OpenAI\",\n  \"com_endpoint_google_custom_name_placeholder\": \"Đặt tên tùy chỉnh cho Google\",\n  \"com_endpoint_google_maxoutputtokens\": \"Số mã thông báo tối đa có thể được tạo ra trong phản hồi. Chỉ định một giá trị thấp hơn cho các phản hồi ngắn hơn và một giá trị cao hơn cho các phản hồi dài hơn.\",\n  \"com_endpoint_google_temp\": \"Giá trị cao = ngẫu nhiên hơn, trong khi giá trị thấp = tập trung và xác định hơn. Chúng tôi khuyến nghị thay đổi giá trị này hoặc Top P nhưng không phải cả hai.\",\n  \"com_endpoint_google_topk\": \"Top-k thay đổi cách mô hình chọn mã thông báo để xuất. Top-k là 1 có nghĩa là mã thông báo được chọn là phổ biến nhất trong tất cả các mã thông báo trong bảng từ vựng của mô hình (còn được gọi là giải mã tham lam), trong khi top-k là 3 có nghĩa là mã thông báo tiếp theo được chọn từ giữa 3 mã thông báo phổ biến nhất (sử dụng nhiệt độ).\",\n  \"com_endpoint_google_topp\": \"Top-p thay đổi cách mô hình chọn mã thông báo để xuất. Mã thông báo được chọn từ căn cứ có xác suất cao nhất đến thấp nhất cho đến khi tổng xác suất của chúng bằng giá trị top-p.\",\n  \"com_endpoint_max_output_tokens\": \"Số mã thông báo tối đa\",\n  \"com_endpoint_my_preset\": \"Đặt sẵn của tôi\",\n  \"com_endpoint_no_presets\": \"Chưa có đặt sẵn\",\n  \"com_endpoint_open_menu\": \"Mở Menu\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"Đặt tên tùy chỉnh cho ChatGPT\",\n  \"com_endpoint_openai_freq\": \"Số từ giữa -2.0 và 2.0. Giá trị dương trừu tượng hóa các mã thông báo mới dựa trên tần suất hiện có của chúng trong văn bản, làm giảm khả năng mô hình lặp lại cùng một dòng văn hoàn toàn.\",\n  \"com_endpoint_openai_max\": \"Số mã thông báo tối đa để tạo. Tổng chiều dài của mã thông báo đầu vào và mã thông báo đã tạo bị giới hạn bởi độ dài ngữ cảnh của mô hình.\",\n  \"com_endpoint_openai_pres\": \"Số từ giữa -2.0 và 2.0. Giá trị dương trừu tượng hóa mã thông báo mới dựa trên việc chúng có xuất hiện trong văn bản, làm tăng khả năng của mô hình để nói về các chủ đề mới.\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"Đặt hướng dẫn tùy chỉnh để bao gồm vào Thông điệp hệ thống. Mặc định: không có\",\n  \"com_endpoint_openai_temp\": \"Giá trị cao = ngẫu nhiên hơn, trong khi giá trị thấp = tập trung và xác định hơn. Chúng tôi khuyến nghị thay đổi giá trị này hoặc Top P nhưng không phải cả hai.\",\n  \"com_endpoint_openai_topp\": \"Một phương pháp thay thế cho việc lấy mẫu nhiệt độ, được gọi là lấy mẫu ranh giới, nơi mô hình xem xét kết quả của các mã thông báo với khối lượng xác suất top_p. Vì vậy, giá trị 0.1 có nghĩa là chỉ các mã thông báo bao gồm 10% khối lượng xác suất top_p được xem xét. Chúng tôi khuyến nghị thay đổi giá trị này hoặc nhiệt độ nhưng không phải cả hai.\",\n  \"com_endpoint_output\": \"Đầu ra\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"Đặt hướng dẫn tùy chỉnh để bao gồm trong Thông điệp hệ thống. Mặc định: không có\",\n  \"com_endpoint_plug_skip_completion\": \"Bỏ qua hoàn thành\",\n  \"com_endpoint_plug_use_functions\": \"Sử dụng chức năng\",\n  \"com_endpoint_presence_penalty\": \"Hình phạt hiện diện\",\n  \"com_endpoint_preset\": \"đặt sẵn\",\n  \"com_endpoint_preset_name\": \"Tên đặt sẵn\",\n  \"com_endpoint_presets\": \"đặt sẵn\",\n  \"com_endpoint_presets_clear_warning\": \"Bạn có chắc chắn muốn xóa tất cả các đặt sẵn? Hành động này không thể hoàn tác.\",\n  \"com_endpoint_prompt_prefix\": \"Tiền tố\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"Đặt hướng dẫn hoặc ngữ cảnh tùy chỉnh. Bỏ qua nếu trống.\",\n  \"com_endpoint_save_as_preset\": \"Lưu dưới dạng đặt sẵn\",\n  \"com_endpoint_set_custom_name\": \"Đặt tên tùy chỉnh, nếu bạn có thể tìm thấy cài đặt này\",\n  \"com_endpoint_skip_hover\": \"Cho phép bỏ qua bước hoàn thành, kiểm tra câu trả lời cuối cùng và các bước đã tạo\",\n  \"com_endpoint_temperature\": \"Nhiệt độ\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_nav_auto_scroll\": \"Cuộn tự động đến tin nhắn mới nhất khi mở\",\n  \"com_nav_balance\": \"Sự cân bằng\",\n  \"com_nav_clear_all_chats\": \"Xóa tất cả cuộc trò chuyện\",\n  \"com_nav_clear_conversation\": \"Xóa cuộc trò chuyện\",\n  \"com_nav_clear_conversation_confirm_message\": \"Bạn có chắc chắn muốn xóa tất cả cuộc trò chuyện? Hành động này không thể hoàn tác.\",\n  \"com_nav_close_sidebar\": \"Đóng thanh bên\",\n  \"com_nav_confirm_clear\": \"Xác nhận xóa\",\n  \"com_nav_enabled\": \"Đã bật\",\n  \"com_nav_export\": \"Xuất\",\n  \"com_nav_export_all_message_branches\": \"Xuất tất cả các nhánh tin nhắn\",\n  \"com_nav_export_conversation\": \"Xuất cuộc trò chuyện\",\n  \"com_nav_export_filename\": \"Tên tệp\",\n  \"com_nav_export_filename_placeholder\": \"Đặt tên cho tệp\",\n  \"com_nav_export_include_endpoint_options\": \"Bao gồm các tùy chọn điểm kết thúc\",\n  \"com_nav_export_recursive\": \"Đệ quy\",\n  \"com_nav_export_recursive_or_sequential\": \"Đệ quy hay tuần tự?\",\n  \"com_nav_export_type\": \"Loại\",\n  \"com_nav_font_size\": \"Cỡ chữ\",\n  \"com_nav_help_faq\": \"Trợ giúp & Câu hỏi thường gặp\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"Tự động phát hiện\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_log_out\": \"Đăng xuất\",\n  \"com_nav_not_supported\": \"Không được hỗ trợ\",\n  \"com_nav_open_sidebar\": \"Mở thanh bên\",\n  \"com_nav_plugin_auth_error\": \"Đã xảy ra lỗi khi xác thực plugin này. Vui lòng thử lại.\",\n  \"com_nav_plugin_search\": \"Tìm kiếm plugin\",\n  \"com_nav_plugin_store\": \"Cửa hàng Plugin\",\n  \"com_nav_search_placeholder\": \"Tìm kiếm tin nhắn\",\n  \"com_nav_send_message\": \"Gửi tin nhắn\",\n  \"com_nav_setting_data\": \"Kiểm soát dữ liệu\",\n  \"com_nav_setting_general\": \"Chung\",\n  \"com_nav_settings\": \"Cài đặt\",\n  \"com_nav_shared_links\": \"Liên kết được chia sẻ\",\n  \"com_nav_theme\": \"Chủ đề\",\n  \"com_nav_theme_dark\": \"Tối\",\n  \"com_nav_theme_light\": \"Sáng\",\n  \"com_nav_theme_system\": \"Hệ thống\",\n  \"com_nav_user\": \"NGƯỜI DÙNG\",\n  \"com_ui_accept\": \"Tôi chấp nhận\",\n  \"com_ui_all\": \"tất cả\",\n  \"com_ui_archive\": \"Lưu trữ\",\n  \"com_ui_archive_error\": \"Không thể lưu trữ cuộc trò chuyện\",\n  \"com_ui_bookmark_delete_confirm\": \"Bạn có chắc chắn muốn xóa dấu trang này không?\",\n  \"com_ui_bookmarks\": \"Dấu trang\",\n  \"com_ui_bookmarks_add_to_conversation\": \"Thêm vào cuộc hội thoại hiện tại\",\n  \"com_ui_bookmarks_count\": \"Số lượng\",\n  \"com_ui_bookmarks_create_error\": \"Có lỗi xảy ra khi tạo dấu trang\",\n  \"com_ui_bookmarks_create_success\": \"Tạo dấu trang thành công\",\n  \"com_ui_bookmarks_delete_error\": \"Có lỗi xảy ra khi x��a dấu trang\",\n  \"com_ui_bookmarks_delete_success\": \"Xóa dấu trang thành công\",\n  \"com_ui_bookmarks_description\": \"Mô tả\",\n  \"com_ui_bookmarks_new\": \"Dấu trang mới\",\n  \"com_ui_bookmarks_title\": \"Tiêu đề\",\n  \"com_ui_bookmarks_update_error\": \"Có lỗi xảy ra khi cập nhật dấu trang\",\n  \"com_ui_bookmarks_update_success\": \"Cập nhật dấu trang thành công\",\n  \"com_ui_cancel\": \"Hủy\",\n  \"com_ui_clear\": \"Xóa\",\n  \"com_ui_close\": \"Đóng\",\n  \"com_ui_confirm_action\": \"Xác nhận hành động\",\n  \"com_ui_continue\": \"Tiếp tục\",\n  \"com_ui_copied_to_clipboard\": \"Đã sao chép vào clipboard\",\n  \"com_ui_copy_link\": \"Sao chép liên kết\",\n  \"com_ui_copy_to_clipboard\": \"Sao chép vào clipboard\",\n  \"com_ui_create_link\": \"Tạo liên kết\",\n  \"com_ui_decline\": \"Tôi không chấp nhận\",\n  \"com_ui_delete\": \"Xóa\",\n  \"com_ui_delete_confirm\": \"Điều này sẽ xóa\",\n  \"com_ui_delete_conversation\": \"Xóa cuộc trò chuyện?\",\n  \"com_ui_edit\": \"Sửa\",\n  \"com_ui_enter\": \"Nhập\",\n  \"com_ui_examples\": \"Ví dụ\",\n  \"com_ui_happy_birthday\": \"Đây là sinh nhật đầu tiên của tôi!\",\n  \"com_ui_import_conversation_error\": \"Đã xảy ra lỗi khi nhập khẩu cuộc trò chuyện của bạn\",\n  \"com_ui_import_conversation_info\": \"Nhập khẩu cuộc trò chuyện từ một tệp JSON\",\n  \"com_ui_import_conversation_success\": \"Đã nhập khẩu cuộc trò chuyện thành công\",\n  \"com_ui_input\": \"Đầu vào\",\n  \"com_ui_model\": \"Mô hình\",\n  \"com_ui_new_chat\": \"Trò chuyện mới\",\n  \"com_ui_next\": \"Tiếp theo\",\n  \"com_ui_no_terms_content\": \"Không có nội dung điều khoản và điều kiện để hiển thị\",\n  \"com_ui_of\": \"của\",\n  \"com_ui_prev\": \"Trước\",\n  \"com_ui_regenerate\": \"Tạo lại\",\n  \"com_ui_rename\": \"Đổi tên\",\n  \"com_ui_revoke\": \"Hủy bỏ\",\n  \"com_ui_revoke_info\": \"Hủy bỏ tất cả các thông tin xác thực được cung cấp bởi người dùng.\",\n  \"com_ui_save\": \"Lưu\",\n  \"com_ui_select_model\": \"Chọn một mô hình\",\n  \"com_ui_share\": \"Chia sẻ\",\n  \"com_ui_share_create_message\": \"Tên của bạn và bất kỳ tin nhắn nào bạn thêm sau khi chia sẻ sẽ được giữ kín.\",\n  \"com_ui_share_delete_error\": \"Đã xảy ra lỗi khi xóa liên kết được chia sẻ.\",\n  \"com_ui_share_error\": \"Có lỗi xảy ra khi chia sẻ liên kết trò chuyện\",\n  \"com_ui_share_link_to_chat\": \"Chia sẻ liên kết đến cuộc trò chuyện\",\n  \"com_ui_share_update_message\": \"Tên của bạn, hướng dẫn tùy chỉnh và bất kỳ tin nhắn nào bạn thêm sau khi chia sẻ sẽ được giữ kín.\",\n  \"com_ui_shared_link_not_found\": \"Không tìm thấy liên kết chia sẻ\",\n  \"com_ui_submit\": \"Gửi\",\n  \"com_ui_terms_and_conditions\": \"Điều khoản và điều kiện\",\n  \"com_ui_unarchive\": \"Bỏ lưu trữ\",\n  \"com_ui_unarchive_error\": \"Không thể bỏ lưu trữ cuộc trò chuyện\",\n  \"com_ui_upload_success\": \"Tải tệp thành công\",\n  \"com_ui_use_prompt\": \"Sử dụng gợi ý\"\n}"
  },
  {
    "path": "src/frontend/client/src/locales/zh-Hans/translation.json",
    "content": "{\n  \"bisheng\": \"{{bishengZh}}\",\n  \"linsight\": \"{{linsightZh}}\",\n  \"linsightFullName\": \"{{linsightFullZh}}\",\n  \"com_a11y_ai_composing\": \"AI 仍在撰写中。\",\n  \"com_a11y_end\": \"AI 已完成回复。\",\n  \"com_a11y_start\": \"AI 已开始回复。\",\n  \"com_agents_allow_editing\": \"允许其他用户编辑您的助手\",\n  \"com_agents_by_librechat\": \"由 LibreChat 提供\",\n  \"com_agents_code_interpreter\": \"启用后，您的代理可以安全地使用LibreChat代码解释器API来运行生成的代码，包括文件处理功能。需要有效的API密钥。\",\n  \"com_agents_code_interpreter_title\": \"代码解释器 API\",\n  \"com_agents_create_error\": \"更新代理时出现错误。\",\n  \"com_agents_description_placeholder\": \"可选：在此描述您的代理\",\n  \"com_agents_enable_file_search\": \"启用文件搜索\",\n  \"com_agents_file_search_disabled\": \"必须先创建Agent，才能上传文件用于文件搜索。\",\n  \"com_agents_file_search_info\": \"启用后，系统会告知Agent以下列出的具体文件名，使其能够从这些文件中检索相关内容。\",\n  \"com_agents_instructions_placeholder\": \"代理使用的系统指令\",\n  \"com_agents_missing_provider_model\": \"请在创建代理前选择提供商和模型\",\n  \"com_agents_name_placeholder\": \"可选：代理名称\",\n  \"com_agents_no_access\": \"您没有权限编辑此Agent。\",\n  \"com_agents_not_available\": \"助手不可用\",\n  \"com_agents_search_name\": \"根据名称搜索代理\",\n  \"com_agents_update_error\": \"更新代理时出现错误。\",\n  \"com_assistants_action_attempt\": \"助理想要和 {{0}} 对话\",\n  \"com_assistants_actions\": \"操作\",\n  \"com_assistants_actions_disabled\": \"您需要先创建助手，然后才能添加操作。\",\n  \"com_assistants_actions_info\": \"让您的助手通过 API 检索信息或执行操作\",\n  \"com_assistants_add_actions\": \"添加操作\",\n  \"com_assistants_add_tools\": \"添加工具\",\n  \"com_assistants_allow_sites_you_trust\": \"只允许您信任的网站\",\n  \"com_assistants_append_date\": \"添加当前日期和时间\",\n  \"com_assistants_append_date_tooltip\": \"启用后，当前客户的日期和时间将附加到助手的系统指令中。\",\n  \"com_assistants_attempt_info\": \"助理想要发送以下内容：\",\n  \"com_assistants_available_actions\": \"可用操作\",\n  \"com_assistants_capabilities\": \"功能\",\n  \"com_assistants_code_interpreter\": \"代码解释器\",\n  \"com_assistants_code_interpreter_files\": \"以下文件仅适用于代码解释器：\",\n  \"com_assistants_code_interpreter_info\": \"代码解释器使助手能够编写和运行代码。该工具可以处理具有多种数据和格式的文件，并生成图表等文件。\",\n  \"com_assistants_completed_action\": \"与 {{0}} 聊天\",\n  \"com_assistants_completed_function\": \"运行 {{0}}\",\n  \"com_assistants_conversation_starters\": \"对话启动器\",\n  \"com_assistants_conversation_starters_placeholder\": \"输入对话启动器\",\n  \"com_assistants_create_error\": \"创建助手时出现错误。\",\n  \"com_assistants_create_success\": \"已成功创建\",\n  \"com_assistants_delete_actions_error\": \"删除操作时出现错误。\",\n  \"com_assistants_delete_actions_success\": \"已成功从助手删除操作\",\n  \"com_assistants_description_placeholder\": \"（选填）在此处描述您的助手\",\n  \"com_assistants_domain_info\": \"助手将此信息发送到了 {{0}}\",\n  \"com_assistants_file_search\": \"文件搜索\",\n  \"com_assistants_file_search_info\": \"暂不支持为文件搜索附加向量存储。您可以从提供程序游乐场附加它们，或者在线程基础上为文件搜索附加文件。\",\n  \"com_assistants_function_use\": \"助手使用了 {{0}}\",\n  \"com_assistants_image_vision\": \"识图\",\n  \"com_assistants_instructions_placeholder\": \"助手使用的系统指令\",\n  \"com_assistants_knowledge\": \"知识\",\n  \"com_assistants_knowledge_disabled\": \"必须先创建助手，且启用并保存代码解释器或检索，才能将文件作为知识上传。\",\n  \"com_assistants_knowledge_info\": \"如果您在 “知识” 中上传文件，与助手的对话可能包括文件内容。\",\n  \"com_assistants_max_starters_reached\": \"已达到对话启动器的最大数量\",\n  \"com_assistants_name_placeholder\": \"（选填）助手的名称\",\n  \"com_assistants_non_retrieval_model\": \"此模型未启用文件搜索功能。请选择其他模型。\",\n  \"com_assistants_retrieval\": \"检索\",\n  \"com_assistants_running_action\": \"正在运行操作\",\n  \"com_assistants_search_name\": \"根据名称搜索助手\",\n  \"com_assistants_update_actions_error\": \"创建或更新操作时出现错误。\",\n  \"com_assistants_update_actions_success\": \"已成功创建或更新操作\",\n  \"com_assistants_update_error\": \"更新助手时出现错误。\",\n  \"com_assistants_update_success\": \"更新成功\",\n  \"com_auth_already_have_account\": \"已有账户？\",\n  \"com_auth_apple_login\": \"使用Apple账户登录\",\n  \"com_auth_back_to_login\": \"返回登录\",\n  \"com_auth_click\": \"点击\",\n  \"com_auth_click_here\": \"点击这里\",\n  \"com_auth_continue\": \"继续\",\n  \"com_auth_create_account\": \"创建账户\",\n  \"com_auth_discord_login\": \"使用 Discord 登录\",\n  \"com_auth_email\": \"邮箱\",\n  \"com_auth_email_address\": \"邮箱\",\n  \"com_auth_email_max_length\": \"邮箱地址最多 120 个字符\",\n  \"com_auth_email_min_length\": \"邮箱地址至少 6 个字符\",\n  \"com_auth_email_pattern\": \"请输入正确的邮箱地址\",\n  \"com_auth_email_required\": \"邮箱为必填项\",\n  \"com_auth_email_resend_link\": \"重新发送邮件\",\n  \"com_auth_email_resent_failed\": \"验证邮件重新发送失败\",\n  \"com_auth_email_resent_success\": \"验证邮件重新发送成功\",\n  \"com_auth_email_verification_failed\": \"邮箱验证失败\",\n  \"com_auth_email_verification_failed_token_missing\": \"验证失败，令牌失效\",\n  \"com_auth_email_verification_in_progress\": \"正在验证您的邮箱，请稍候\",\n  \"com_auth_email_verification_invalid\": \"无效的邮箱验证\",\n  \"com_auth_email_verification_redirecting\": \"在 {{0}} 秒后重定向...\",\n  \"com_auth_email_verification_resend_prompt\": \"未收到邮件？\",\n  \"com_auth_email_verification_success\": \"邮箱验证成功\",\n  \"com_auth_error_create\": \"注册账户过程中出现错误，请重试。\",\n  \"com_auth_error_invalid_reset_token\": \"重置密码的密钥已失效。\",\n  \"com_auth_error_login\": \"无法登录，请确认提供的账户密码正确，并重新尝试。\",\n  \"com_auth_error_login_ban\": \"根据我们的服务规则，您的帐号被暂时禁用。\",\n  \"com_auth_error_login_rl\": \"尝试登录次数过多，请稍后再试。\",\n  \"com_auth_error_login_server\": \"内部服务器错误，请稍后再试。\",\n  \"com_auth_error_login_unverified\": \"您的账户尚未验证。请检查您的邮件以获取验证链接。\",\n  \"com_auth_facebook_login\": \"使用 Facebook 登录\",\n  \"com_auth_full_name\": \"姓名\",\n  \"com_auth_github_login\": \"使用 GitHub 登录\",\n  \"com_auth_google_login\": \"使用 Google 登录\",\n  \"com_auth_here\": \"这里\",\n  \"com_auth_login\": \"登录\",\n  \"com_auth_login_with_new_password\": \"现在你可以使用你的新密码登录。\",\n  \"com_auth_name_max_length\": \"姓名最多 80 个字符\",\n  \"com_auth_name_min_length\": \"姓名至少 1 个字符\",\n  \"com_auth_name_required\": \"姓名为必填项\",\n  \"com_auth_no_account\": \"还没有账户？\",\n  \"com_auth_password\": \"密码\",\n  \"com_auth_password_confirm\": \"确认密码\",\n  \"com_auth_password_forgot\": \"忘记密码？\",\n  \"com_auth_password_max_length\": \"密码最多 128 个字符\",\n  \"com_auth_password_min_length\": \"密码至少 8 个字符\",\n  \"com_auth_password_not_match\": \"密码不一致\",\n  \"com_auth_password_required\": \"密码为必填项\",\n  \"com_auth_registration_success_generic\": \"请检查您的邮件以验证您的邮件地址。\",\n  \"com_auth_registration_success_insecure\": \"注册成功。\",\n  \"com_auth_reset_password\": \"重置密码\",\n  \"com_auth_reset_password_if_email_exists\": \"如果存在使用该邮件地址的帐户，则会发送一封包含密码重置说明的邮件。请务必检查您的垃圾邮件文件夹。\",\n  \"com_auth_reset_password_link_sent\": \"密码重置链接已发送\",\n  \"com_auth_reset_password_success\": \"密码重置成功\",\n  \"com_auth_sign_in\": \"登录\",\n  \"com_auth_sign_up\": \"注册\",\n  \"com_auth_submit_registration\": \"注册提交\",\n  \"com_auth_to_reset_your_password\": \"重置密码。\",\n  \"com_auth_to_try_again\": \"再试一次。\",\n  \"com_auth_username\": \"用户名（可选）\",\n  \"com_auth_username_max_length\": \"用户名最多 20 个字符\",\n  \"com_auth_username_min_length\": \"用户名至少 2 个字符\",\n  \"com_auth_welcome_back\": \"欢迎\",\n  \"com_click_to_download\": \"（点击此处下载）\",\n  \"com_download_expired\": \"下载已过期\",\n  \"com_download_expires\": \"(点击此处下载 - {{0}}后过期)\",\n  \"com_endpoint\": \"渠道\",\n  \"com_endpoint_agent\": \"代理\",\n  \"com_endpoint_agent_model\": \"Agent 模型（推荐: GPT-3.5）\",\n  \"com_endpoint_agent_placeholder\": \"请选择代理\",\n  \"com_endpoint_ai\": \"人工智能\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"响应中可以生成的最大令牌数。指定较低的值以获得较短的响应，指定较高的值以获得较长的响应。注意：模型可能会在达到此最大值之前停止。\",\n  \"com_endpoint_anthropic_prompt_cache\": \"提示词缓存允许在 API 调用中复用大型上下文或指令，从而降低成本和延迟\",\n  \"com_endpoint_anthropic_temp\": \"值介于 0 到 1 之间。对于分析性/选择性任务，值应更接近 0；对于创造性和生成性任务，值应更接近 1。我们建议更改该参数或 Top P，但不要同时更改这两个参数。\",\n  \"com_endpoint_anthropic_topk\": \"top-k 会改变模型选择输出词元的方式。top-k 为 1 意味着所选词是模型词汇中概率最大的（也称为贪心解码），而 top-k 为 3 意味着下一个词是从 3 个概率最大的词中选出的（使用随机性）。\",\n  \"com_endpoint_anthropic_topp\": \"top-p（核采样）会改变模型选择输出词元的方式。从概率最大的 K（参见topK参数）向最小的 K 选择，直到它们的概率之和等于 top-p 值。\",\n  \"com_endpoint_assistant\": \"助手\",\n  \"com_endpoint_assistant_model\": \"助手模型\",\n  \"com_endpoint_assistant_placeholder\": \"请从右侧面板中选择助手\",\n  \"com_endpoint_completion\": \"补全\",\n  \"com_endpoint_completion_model\": \"补全模型（推荐: GPT-4）\",\n  \"com_endpoint_config_click_here\": \"点击此处\",\n  \"com_endpoint_config_google_api_info\": \"获取您的生成式语言 API 密钥（Gemini），\",\n  \"com_endpoint_config_google_api_key\": \"Google API KEY\",\n  \"com_endpoint_config_google_cloud_platform\": \"（从谷歌云平台）\",\n  \"com_endpoint_config_google_gemini_api\": \"（Gemini API）\",\n  \"com_endpoint_config_google_service_key\": \"Google 服务账户密钥\",\n  \"com_endpoint_config_key\": \"设置 API 密钥\",\n  \"com_endpoint_config_key_encryption\": \"您的密钥将被加密并删除于：\",\n  \"com_endpoint_config_key_for\": \"设置 API 密钥：\",\n  \"com_endpoint_config_key_google_need_to\": \"您需要\",\n  \"com_endpoint_config_key_google_service_account\": \"创建一个服务账户\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"在 Google Cloud 上启用 Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API，然后\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"确保单击 “创建并继续” 以至少授予 “Vertex AI 用户” 角色。最后，创建一个要在此处导入的 JSON 密钥。\",\n  \"com_endpoint_config_key_import_json_key\": \"导入服务账户 JSON 密钥。\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"无效的服务账户 JSON 密钥，您是否导入正确的文件？\",\n  \"com_endpoint_config_key_import_json_key_success\": \"成功导入服务账户 JSON 密钥\",\n  \"com_endpoint_config_key_name\": \"密钥\",\n  \"com_endpoint_config_key_never_expires\": \"您的密钥将永远有效\",\n  \"com_endpoint_config_placeholder\": \"在顶部菜单设置 API 密钥。\",\n  \"com_endpoint_config_value\": \"输入值：\",\n  \"com_endpoint_context\": \"上下文\",\n  \"com_endpoint_context_info\": \"可用于上下文的最大词元数。用于控制每个请求发送的词元数量。如果未指定，将根据已知模型的上下文大小使用系统默认值。设置较高的值可能会导致错误和/或更高的词元成本。\",\n  \"com_endpoint_context_tokens\": \"最大上下文词元数\",\n  \"com_endpoint_custom_name\": \"自定义名称\",\n  \"com_endpoint_default\": \"初始值\",\n  \"com_endpoint_default_blank\": \"初始值：空白\",\n  \"com_endpoint_default_empty\": \"初始值：空\",\n  \"com_endpoint_default_with_num\": \"初始值：{{0}}\",\n  \"com_endpoint_examples\": \" 预设\",\n  \"com_endpoint_export\": \"导出\",\n  \"com_endpoint_export_share\": \"导出/共享\",\n  \"com_endpoint_frequency_penalty\": \"频率惩罚度\",\n  \"com_endpoint_func_hover\": \"将插件作为 OpenAI 函数使用\",\n  \"com_endpoint_google_custom_name_placeholder\": \"为 Google 设置一个名称\",\n  \"com_endpoint_google_maxoutputtokens\": \"响应中可以生成的最大令牌数。指定较低的值以获得较短的响应，指定较高的值以获得较长的响应。注意：模型可能会在达到此最大值之前停止。\",\n  \"com_endpoint_google_temp\": \"值越高表示输出越随机，值越低表示输出越确定。建议不要同时改变此值和 Top-p。\",\n  \"com_endpoint_google_topk\": \"top-k 会改变模型选择输出词的方式。top-k 为 1 意味着所选词是模型词汇中概率最大的（也称为贪心解码），而 top-k 为 3 意味着下一个词是从 3 个概率最大的词中选出的（使用随机性）。\",\n  \"com_endpoint_google_topp\": \"top-p（核采样）会改变模型选择输出词的方式。从概率最大的 K（参见topK参数）向最小的 K 选择，直到它们的概率之和等于 top-p 值。\",\n  \"com_endpoint_instructions_assistants\": \"覆写指令\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"覆盖助手的指令。这对于需要逐次修改行为非常有用。\",\n  \"com_endpoint_max_output_tokens\": \"最大输出词元数\",\n  \"com_endpoint_message\": \"发送消息给\",\n  \"com_endpoint_message_new\": \"消息 {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"编辑您的消息内容或重新生成。\",\n  \"com_endpoint_my_preset\": \"我的预设\",\n  \"com_endpoint_no_presets\": \"暂无预设，使用设置按钮创建一个\",\n  \"com_endpoint_open_menu\": \"打开菜单\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"为 AI 设置一个名称\",\n  \"com_endpoint_openai_detail\": \"发送给Vision的图像分辨率。 “Low” 更便宜且更快，“High” 更详细但更昂贵，“Auto” 将基于图像分辨率自动在两者之间进行选择。\",\n  \"com_endpoint_openai_freq\": \"值介于 -2.0 到 2.0 之间。正值将惩罚当前已频繁使用的词元，从而降低重复用词的可能性。\",\n  \"com_endpoint_openai_max\": \"最大生成词元数。输入词元长度由模型的上下文长度决定。\",\n  \"com_endpoint_openai_max_tokens\": \"可选的 'max_tokens' 字段，表示在聊天补全中可生成的最大词元数量。输入词元和生成词元的总长度受模型上下文长度的限制。如果该数值超过最大上下文词元数，您可能会遇到错误。\",\n  \"com_endpoint_openai_pres\": \"值介于 -2.0 到 2.0 之间。正值将惩罚当前已经使用的词元，从而增加讨论新话题的可能性。\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"在系统消息中添加自定义指令，默认为空\",\n  \"com_endpoint_openai_resend\": \"重新发送所有先前附加的图像。注意：这会显着增加词元成本，并且可能会遇到很多关于图像附件的错误。\",\n  \"com_endpoint_openai_resend_files\": \"重新发送所有先前附加的文件。注意：这会显着增加词元成本，并且可能会遇到很多关于图像附件的错误。\",\n  \"com_endpoint_openai_stop\": \"最多 4 个序列，API 将停止生成更多词元。\",\n  \"com_endpoint_openai_temp\": \"值越高表示输出越随机，值越低表示输出越确定。建议不要同时改变此值和 Top P。\",\n  \"com_endpoint_openai_topp\": \"相较于随机性的另一个取样方法，称为核采样，模型选取输出词元中大于 top_p（概率密度在整个概率分布中的比例）的结果。比如 top_p=0.1 表示只有概率占比为前 10% 的词元才会被考虑作为输出。建议不要同时改变此值和随机性。\",\n  \"com_endpoint_output\": \"输出\",\n  \"com_endpoint_plug_image_detail\": \"图片细节\",\n  \"com_endpoint_plug_resend_files\": \"重发文件\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"在消息开头添加系统级提示词，默认为空\",\n  \"com_endpoint_plug_skip_completion\": \"跳过补全\",\n  \"com_endpoint_plug_use_functions\": \"使用函数\",\n  \"com_endpoint_presence_penalty\": \"话题新鲜度\",\n  \"com_endpoint_preset\": \"预设\",\n  \"com_endpoint_preset_default\": \"现在是默认预设。\",\n  \"com_endpoint_preset_default_item\": \"默认：\",\n  \"com_endpoint_preset_default_none\": \"无默认预设可用。\",\n  \"com_endpoint_preset_default_removed\": \"不再是默认预设。\",\n  \"com_endpoint_preset_delete_confirm\": \"您确定要删除此预设吗？\",\n  \"com_endpoint_preset_delete_error\": \"删除预设时发生错误，请重试。\",\n  \"com_endpoint_preset_import\": \"成功导入预设！\",\n  \"com_endpoint_preset_import_error\": \"导入预设时发生错误，请重试。\",\n  \"com_endpoint_preset_name\": \"预设名\",\n  \"com_endpoint_preset_save_error\": \"保存预设时发生错误，请重试。\",\n  \"com_endpoint_preset_selected\": \"预设可用！\",\n  \"com_endpoint_preset_selected_title\": \"可用！\",\n  \"com_endpoint_preset_title\": \"预设\",\n  \"com_endpoint_presets\": \"预设\",\n  \"com_endpoint_presets_clear_warning\": \"确定要清除所有预设吗？此操作不可逆。\",\n  \"com_endpoint_prompt_cache\": \"使用提示词缓存\",\n  \"com_endpoint_prompt_prefix\": \"自定义指令\",\n  \"com_endpoint_prompt_prefix_assistants\": \"额外指令\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"在助手的主要指令之上设置额外的指令或上下文。如果为空，则忽略。\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"自定义指令和上下文，默认为空。\",\n  \"com_endpoint_reasoning_effort\": \"推理强度\",\n  \"com_endpoint_save_as_preset\": \"保存为预设\",\n  \"com_endpoint_search\": \"按名称搜索渠道\",\n  \"com_endpoint_set_custom_name\": \"设置一个自定义名称，以便您检索此预设\",\n  \"com_endpoint_skip_hover\": \"跳过补全步骤，检查最终答案和生成步骤\",\n  \"com_endpoint_stop\": \"停止序列\",\n  \"com_endpoint_stop_placeholder\": \"按 `Enter` 键分隔多个值\",\n  \"com_endpoint_temperature\": \"随机性\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"使用激活的助手\",\n  \"com_error_expired_user_key\": \"您提供的 {{0}} 密钥已于 {{1}} 过期。请提供新的密钥并重试。\",\n  \"com_error_files_dupe\": \"检测到重复文件\",\n  \"com_error_files_empty\": \"不允许上传空文件\",\n  \"com_error_files_process\": \"处理文件时发生错误\",\n  \"com_error_files_unsupported_capability\": \"未启用支持此类文件的功能\",\n  \"com_error_files_upload\": \"上传文件时发生错误\",\n  \"com_error_files_upload_canceled\": \"文件上传请求已取消。注意：文件上传可能仍在进行中，需要手动删除。\",\n  \"com_error_files_validation\": \"验证文件时出错。\",\n  \"com_error_input_length\": \"最新消息的令牌数过长，超出了令牌限制（分别为 {{0}}）。请缩短您的消息、调整对话参数中的最大上下文大小，或分叉对话以继续。\",\n  \"com_error_invalid_user_key\": \"提供的密钥无效。请提供有效的密钥后重试。\",\n  \"com_error_moderation\": \"很抱歉，您提交的内容被我们的审核系统标记为不符合社区指引。我们无法就此特定主题继续交流。如果您有任何其他问题或想探讨的话题，请编辑您的消息或开启新的对话。\",\n  \"com_error_no_base_url\": \"未找到基础 URL，请提供一个后重试。\",\n  \"com_error_no_user_key\": \"没有找到密钥。请提供密钥后重试。\",\n  \"com_files_filter\": \"筛选文件...\",\n  \"com_files_no_results\": \"无结果。\",\n  \"com_files_number_selected\": \"已选择 {{0}} 个文件（共 {{1}} 个文件）\",\n  \"com_generated_files\": \"生成的文件\",\n  \"com_hide_examples\": \"隐藏示例\",\n  \"com_nav_account_settings\": \"账户设置\",\n  \"com_nav_always_make_prod\": \"始终应用新版本\",\n  \"com_nav_archive_created_at\": \"归档时间\",\n  \"com_nav_archive_name\": \"名称\",\n  \"com_nav_archived_chats\": \"归档的对话\",\n  \"com_nav_archived_chats_empty\": \"您没有归档的对话。\",\n  \"com_nav_at_command\": \"@-命令\",\n  \"com_nav_at_command_description\": \"切换至命令 “@” 以更改端点、模型、预设等\",\n  \"com_nav_audio_play_error\": \"播放音频时发生错误：{{0}}\",\n  \"com_nav_audio_process_error\": \"处理音频时发生错误：{{0}}\",\n  \"com_nav_auto_scroll\": \"打开对话时自动滚动到最新消息\",\n  \"com_nav_auto_send_prompts\": \"自动发送提示词\",\n  \"com_nav_auto_send_text\": \"自动发送文本\",\n  \"com_nav_auto_send_text_disabled\": \"设置为 -1 以禁用\",\n  \"com_nav_auto_transcribe_audio\": \"自动转录音频\",\n  \"com_nav_automatic_playback\": \"自动播放最新消息\",\n  \"com_nav_balance\": \"余额\",\n  \"com_nav_browser\": \"浏览器\",\n  \"com_nav_buffer_append_error\": \"音频流处理出现问题。播放可能会被中断。\",\n  \"com_nav_change_picture\": \"修改头像\",\n  \"com_nav_chat_commands\": \"对话命令\",\n  \"com_nav_chat_commands_info\": \"这些命令通过在您的消息开头输入特定字符来激活。每个命令都由其指定的前缀触发。如果您经常在消息开头使用这些字符，可以选择禁用这些命令。\",\n  \"com_nav_chat_direction\": \"对话方向\",\n  \"com_nav_clear_all_chats\": \"清除所有对话\",\n  \"com_nav_clear_cache_confirm_message\": \"您确定要清除缓存吗？\",\n  \"com_nav_clear_conversation\": \"清除对话\",\n  \"com_nav_clear_conversation_confirm_message\": \"您确定要删除所有对话吗？该操作无法撤销。\",\n  \"com_nav_close_sidebar\": \"关闭侧边栏\",\n  \"com_nav_commands\": \"命令\",\n  \"com_nav_confirm_clear\": \"确认清除\",\n  \"com_nav_conversation_mode\": \"对话模式\",\n  \"com_nav_convo_menu_options\": \"对话菜单选项\",\n  \"com_nav_db_sensitivity\": \"分贝灵敏度\",\n  \"com_nav_delete_account\": \"删除账户\",\n  \"com_nav_delete_account_button\": \"永久删除我的账户\",\n  \"com_nav_delete_account_confirm\": \"删除账户 - 您确定吗？\",\n  \"com_nav_delete_account_email_placeholder\": \"请输入您的账户邮箱\",\n  \"com_nav_delete_cache_storage\": \"删除 TTS 缓存存储\",\n  \"com_nav_delete_data_info\": \"您的所有数据将被删除。\",\n  \"com_nav_delete_warning\": \"警告：这将永久删除您的账户。\",\n  \"com_nav_edge\": \"边缘端\",\n  \"com_nav_enable_cache_tts\": \"启用 TTS 缓存\",\n  \"com_nav_enable_cloud_browser_voice\": \"使用云端语音\",\n  \"com_nav_enabled\": \"启用\",\n  \"com_nav_engine\": \"引擎\",\n  \"com_nav_enter_to_send\": \"按下 Enter 键发送消息\",\n  \"com_nav_export\": \"导出\",\n  \"com_nav_export_all_message_branches\": \"导出所有消息分支\",\n  \"com_nav_export_conversation\": \"导出对话\",\n  \"com_nav_export_filename\": \"文件名\",\n  \"com_nav_export_filename_placeholder\": \"设置文件名\",\n  \"com_nav_export_include_endpoint_options\": \"包含渠道选项\",\n  \"com_nav_export_recursive\": \"递归\",\n  \"com_nav_export_recursive_or_sequential\": \"递归或顺序？\",\n  \"com_nav_export_type\": \"类型\",\n  \"com_nav_external\": \"外部\",\n  \"com_nav_font_size\": \"消息字体大小\",\n  \"com_nav_font_size_base\": \"中号\",\n  \"com_nav_font_size_lg\": \"大号\",\n  \"com_nav_font_size_sm\": \"小号\",\n  \"com_nav_font_size_xl\": \"超大号\",\n  \"com_nav_font_size_xs\": \"超小号\",\n  \"com_nav_help_faq\": \"帮助\",\n  \"com_nav_hide_panel\": \"隐藏最右侧面板\",\n  \"com_nav_info_code_artifacts\": \"启用在对话旁显示的实验性代码工件\",\n  \"com_nav_info_custom_prompt_mode\": \"启用后，默认的工件系统提示将不会包含在内。在此模式下，必须手动提供所有生成工件的指令。\",\n  \"com_nav_info_enter_to_send\": \"启用后，按下 `ENTER` 将发送您的消息。禁用后，按下 `ENTER` 将添加新行，您需要按下 `CTRL + ENTER` / `⌘ + ENTER` 来发送消息。\",\n  \"com_nav_info_fork_change_default\": \"`仅可见消息` 仅包含到所选消息的直接路径，`包含相关分支` 添加路径上的分支，`包含所有目标` 包括所有连接的消息和分支。\",\n  \"com_nav_info_fork_split_target_setting\": \"启用后，将根据选择的行为，从目标消息开始到对话中的最新消息进行分叉。\",\n  \"com_nav_info_include_shadcnui\": \"启用后，将包含使用 shadcn/ui 组件的指令。shadcn/ui 是一组使用 Radix UI 和 Tailwind CSS 构建的可重复使用的组件。注意：这些指令较长，仅在您需要向 LLM 提供正确的导入和组件信息时才应启用。有关这些组件的更多信息，请访问：https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"启用后，消息中的 LaTeX 代码将呈现为数学公式。如果您不需要 LaTeX 渲染，禁用此功能可能会提高性能。\",\n  \"com_nav_info_save_draft\": \"启用后，您在聊天表单中输入的文本和附件将自动本地保存为草稿。即使您重新加载页面或切换到不同的对话，这些草稿也将可用。草稿存储在您设备的本地，并在消息发送后删除。\",\n  \"com_nav_info_show_thinking\": \"启用后，聊天界面将默认展开“深度思考下拉框”，让您能够实时查看人工智能的推理过程。禁用后，深度思考下拉框将默认保持关闭状态，以提供更简洁、更流畅的界面。\",\n  \"com_nav_info_user_name_display\": \"启用后，发送者的用户名将显示在您发送的每条消息上方。禁用后，您只会在自己的消息上方看到 “您”。\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"自动检测语言\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"简体中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_latex_parsing\": \"解析消息中的 LaTeX（可能会影响性能）\",\n  \"com_nav_log_out\": \"注销\",\n  \"com_nav_long_audio_warning\": \"较长的文本将需要更长时间来处理。\",\n  \"com_nav_maximize_chat_space\": \"最大化聊天窗口\",\n  \"com_nav_modular_chat\": \"启用在对话中切换渠道\",\n  \"com_nav_my_files\": \"我的文件\",\n  \"com_nav_my_knowledge_files\": \"我的知识库\",\n  \"com_nav_no_search_results\": \"未找到搜索结果\",\n  \"com_nav_not_supported\": \"未支持\",\n  \"com_nav_open_sidebar\": \"打开侧边栏\",\n  \"com_nav_playback_rate\": \"音频播放速度\",\n  \"com_nav_plugin_auth_error\": \"尝试验证此插件时出现错误。请重试。\",\n  \"com_nav_plugin_install\": \"安装\",\n  \"com_nav_plugin_search\": \"搜索插件\",\n  \"com_nav_plugin_store\": \"插件商店\",\n  \"com_nav_plugin_uninstall\": \"卸载\",\n  \"com_nav_plus_command\": \"+-命令\",\n  \"com_nav_plus_command_description\": \"切换至命令 “+” 以添加多响应设置\",\n  \"com_nav_profile_picture\": \"个人资料头像\",\n  \"com_nav_save_drafts\": \"在本地保存草稿\",\n  \"com_nav_scroll_button\": \"滚动到末尾按钮\",\n  \"com_nav_search_placeholder\": \"搜索消息\",\n  \"com_nav_send_message\": \"发送消息\",\n  \"com_nav_setting_account\": \"账户\",\n  \"com_nav_setting_beta\": \"实验特性\",\n  \"com_nav_setting_chat\": \"对话\",\n  \"com_nav_setting_data\": \"数据管理\",\n  \"com_nav_setting_general\": \"通用\",\n  \"com_nav_setting_speech\": \"语音\",\n  \"com_nav_settings\": \"设置\",\n  \"com_nav_shared_links\": \"共享链接\",\n  \"com_nav_show_code\": \"使用代码解释器时始终显示代码\",\n  \"com_nav_slash_command\": \"/-命令\",\n  \"com_nav_slash_command_description\": \"切换至命令 “/” 以通过键盘选择提示词\",\n  \"com_nav_source_buffer_error\": \"设置音频播放时发生错误。请刷新页面。\",\n  \"com_nav_speech_cancel_error\": \"无法停止音频播放。您可能需要刷新页面。\",\n  \"com_nav_speech_to_text\": \"语音转文本\",\n  \"com_nav_stop_generating\": \"停止生成\",\n  \"com_nav_text_to_speech\": \"文本转语音\",\n  \"com_nav_theme\": \"主题\",\n  \"com_nav_theme_dark\": \"暗色主题\",\n  \"com_nav_theme_light\": \"亮色主题\",\n  \"com_nav_theme_system\": \"系统设置\",\n  \"com_nav_tool_dialog\": \"助手工具\",\n  \"com_nav_tool_dialog_agents\": \"Agent工具\",\n  \"com_nav_tool_dialog_description\": \"必须保存助手才能保留工具选择。\",\n  \"com_nav_tool_remove\": \"移除\",\n  \"com_nav_tool_search\": \"搜索工具\",\n  \"com_nav_tts_init_error\": \"初始化文本转语音失败：{{0}}\",\n  \"com_nav_tts_unsupported_error\": \"所选引擎的文本转语音在此浏览器中不受支持。\",\n  \"com_nav_user\": \"默认用户\",\n  \"com_nav_user_msg_markdown\": \"以 Markdown 格式显示用户消息\",\n  \"com_nav_user_name_display\": \"在消息中显示用户名\",\n  \"com_nav_voice_select\": \"语音\",\n  \"com_nav_voices_fetch_error\": \"无法获取语音选项。请检查您的网络连接。\",\n  \"com_nav_welcome_agent\": \"请选择 Agent\",\n  \"com_nav_welcome_assistant\": \"请选择助手\",\n  \"com_nav_welcome_message\": \"我今天能帮你做什么？\",\n  \"com_show_agent_settings\": \"显示代理设置\",\n  \"com_show_completion_settings\": \"显示补全设置\",\n  \"com_show_examples\": \"显示示例\",\n  \"com_sidepanel_agent_builder\": \"代理构建器\",\n  \"com_sidepanel_assistant_builder\": \"助手生成器\",\n  \"com_sidepanel_attach_files\": \"上传本地文件\",\n  \"com_sidepanel_conversation_tags\": \"书签\",\n  \"com_sidepanel_hide_panel\": \"隐藏侧边栏\",\n  \"com_sidepanel_manage_files\": \"管理文件\",\n  \"com_sidepanel_parameters\": \"参数\",\n  \"com_sidepanel_select_agent\": \"选择助手\",\n  \"com_sidepanel_select_assistant\": \"选择助手\",\n  \"com_ui_accept\": \"我接受\",\n  \"com_ui_add\": \"添加\",\n  \"com_ui_add_model_preset\": \"添加一个模型或预设以获得额外的回复\",\n  \"com_ui_add_multi_conversation\": \"添加多个对话\",\n  \"com_ui_admin\": \"管理\",\n  \"com_ui_admin_access_warning\": \"禁用管理员对此功能的访问可能会导致界面出现异常，需要刷新页面。如果保存此设置，唯一的恢复方式是通过 librechat.yaml 配置文件中的界面设置进行修改，这将影响所有角色。\",\n  \"com_ui_admin_settings\": \"管理员设置\",\n  \"com_ui_advanced\": \"进阶\",\n  \"com_ui_agent\": \"代理\",\n  \"com_ui_agent_delete_error\": \"删除代理时出现错误\",\n  \"com_ui_agent_deleted\": \"代理已成功删除\",\n  \"com_ui_agent_duplicate_error\": \"复制助手时发生错误\",\n  \"com_ui_agent_duplicated\": \"助手复制成功\",\n  \"com_ui_agent_editing_allowed\": \"其他用户已可以编辑此助手\",\n  \"com_ui_agents\": \"代理\",\n  \"com_ui_agents_allow_create\": \"允许创建助手\",\n  \"com_ui_agents_allow_share_global\": \"允许与所有用户共享助手\",\n  \"com_ui_agents_allow_use\": \"允许使用助手\",\n  \"com_ui_all\": \"所有\",\n  \"com_ui_all_proper\": \"所有\",\n  \"com_ui_archive\": \"归档\",\n  \"com_ui_archive_error\": \"归档对话失败\",\n  \"com_ui_artifact_click\": \"点击以打开\",\n  \"com_ui_artifacts\": \"Artifacts\",\n  \"com_ui_artifacts_toggle\": \"切换至 Artifacts UI\",\n  \"com_ui_ascending\": \"升序\",\n  \"com_ui_assistant\": \"助手\",\n  \"com_ui_assistant_delete_error\": \"删除助手时出现错误\",\n  \"com_ui_assistant_deleted\": \"助手已成功删除\",\n  \"com_ui_assistants\": \"助手\",\n  \"com_ui_assistants_output\": \"助手输出\",\n  \"com_ui_attach_error\": \"无法附加文件，请创建或选择一个对话，或尝试刷新页面。\",\n  \"com_ui_attach_error_openai\": \"无法将助手文件附加到其他渠道\",\n  \"com_ui_attach_error_size\": \"超出渠道规定的文件大小：\",\n  \"com_ui_attach_error_type\": \"渠道不支持的文件类型：\",\n  \"com_ui_attach_warn_endpoint\": \"不兼容的工具可能会忽略非助手文件\",\n  \"com_ui_attachment\": \"附件\",\n  \"com_ui_auth_type\": \"认证类型\",\n  \"com_ui_auth_url\": \"认证 URL\",\n  \"com_ui_authentication\": \"认证\",\n  \"com_ui_authentication_type\": \"认证类型\",\n  \"com_ui_avatar\": \"头像\",\n  \"com_ui_back_to_chat\": \"返回对话\",\n  \"com_ui_back_to_prompts\": \"返回提示词\",\n  \"com_ui_basic\": \"基本\",\n  \"com_ui_bookmark_delete_confirm\": \"您确定要删除此书签吗？\",\n  \"com_ui_bookmarks\": \"书签\",\n  \"com_ui_bookmarks_add\": \"添加书签\",\n  \"com_ui_bookmarks_add_to_conversation\": \"添加到当前对话\",\n  \"com_ui_bookmarks_count\": \"计数\",\n  \"com_ui_bookmarks_create_error\": \"创建书签时出现错误\",\n  \"com_ui_bookmarks_create_exists\": \"书签已存在\",\n  \"com_ui_bookmarks_create_success\": \"书签创建成功\",\n  \"com_ui_bookmarks_delete\": \"删除书签\",\n  \"com_ui_bookmarks_delete_error\": \"删除书签时出现错误\",\n  \"com_ui_bookmarks_delete_success\": \"书签删除成功\",\n  \"com_ui_bookmarks_description\": \"描述\",\n  \"com_ui_bookmarks_edit\": \"编辑书签\",\n  \"com_ui_bookmarks_filter\": \"筛选书签...\",\n  \"com_ui_bookmarks_new\": \"新书签\",\n  \"com_ui_bookmarks_title\": \"标题\",\n  \"com_ui_bookmarks_update_error\": \"更新书签时出现错误\",\n  \"com_ui_bookmarks_update_success\": \"书签更新成功\",\n  \"com_ui_bulk_delete_error\": \"删除分享链接时失败\",\n  \"com_ui_callback_url\": \"回调 URL\",\n  \"com_ui_cancel\": \"取消\",\n  \"com_ui_chat\": \"对话\",\n  \"com_ui_chat_history\": \"对话历史\",\n  \"com_ui_clear\": \"清除\",\n  \"com_ui_clear_all\": \"全部清除\",\n  \"com_ui_close\": \"关闭\",\n  \"com_ui_close_menu\": \"关闭菜单\",\n  \"com_ui_code\": \"代码\",\n  \"com_ui_chart\": \"图表\",\n  \"com_ui_collapse_chat\": \"收起聊天\",\n  \"com_ui_command_placeholder\": \"可选：输入提示词的命令，否则将使用名称\",\n  \"com_ui_command_usage_placeholder\": \"通过命令或名称选择提示词\",\n  \"com_ui_confirm_action\": \"确认执行\",\n  \"com_ui_confirm_admin_use_change\": \"更改此设置将阻止包括您的在内的所有管理员的权限。您确定要继续吗？\",\n  \"com_ui_confirm_change\": \"确认更改\",\n  \"com_ui_context\": \"上下文\",\n  \"com_ui_continue\": \"继续\",\n  \"com_ui_controls\": \"管理\",\n  \"com_ui_copied\": \"已复制！\",\n  \"com_ui_copied_to_clipboard\": \"已复制到剪贴板\",\n  \"com_ui_copy_code\": \"复制代码\",\n  \"com_ui_copy_link\": \"复制链接\",\n  \"com_ui_copy_to_clipboard\": \"复制到剪贴板\",\n  \"com_ui_create\": \"创建\",\n  \"com_ui_create_link\": \"创建链接\",\n  \"com_ui_create_prompt\": \"创建提示词\",\n  \"com_ui_custom\": \"自定义\",\n  \"com_ui_custom_header_name\": \"自定义 Header 名称\",\n  \"com_ui_custom_prompt_mode\": \"自定义提示词模式\",\n  \"com_ui_dashboard\": \"仪表板\",\n  \"com_ui_date\": \"日期\",\n  \"com_ui_date_april\": \"四月\",\n  \"com_ui_date_august\": \"八月\",\n  \"com_ui_date_december\": \"十二月\",\n  \"com_ui_date_february\": \"二月\",\n  \"com_ui_date_january\": \"一月\",\n  \"com_ui_date_july\": \"七月\",\n  \"com_ui_date_june\": \"六月\",\n  \"com_ui_date_march\": \"三月\",\n  \"com_ui_date_may\": \"五月\",\n  \"com_ui_date_november\": \"十一月\",\n  \"com_ui_date_october\": \"十月\",\n  \"com_ui_date_previous_30_days\": \"过去 30 天\",\n  \"com_ui_date_previous_7_days\": \"过去 7 天\",\n  \"com_ui_date_september\": \"九月\",\n  \"com_ui_date_today\": \"今天\",\n  \"com_ui_date_yesterday\": \"昨天\",\n  \"com_ui_decline\": \"我不接受\",\n  \"com_ui_default_post_request\": \"默认 （POST 请求）\",\n  \"com_ui_delete\": \"删除\",\n  \"com_ui_delete_action\": \"删除操作\",\n  \"com_ui_delete_action_confirm\": \"您确定要删除此操作吗？\",\n  \"com_ui_delete_agent_confirm\": \"您确定要删除此代理吗？\",\n  \"com_ui_delete_assistant_confirm\": \"您确定要删除此助手吗？该操作无法撤销。\",\n  \"com_ui_delete_confirm\": \"这将删除\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"这将删除选中版本的 “{{0}}”。如果没有其他版本，该提示词将被删除。\",\n  \"com_ui_delete_conversation\": \"删除对话？\",\n  \"com_ui_delete_prompt\": \"删除提示词？\",\n  \"com_ui_delete_shared_link\": \"删除分享链接？\",\n  \"com_ui_delete_tool\": \"删除工具\",\n  \"com_ui_delete_tool_confirm\": \"您确定要删除此工具吗？\",\n  \"com_ui_descending\": \"降序\",\n  \"com_ui_description\": \"描述\",\n  \"com_ui_description_placeholder\": \"可选：输入要显示的提示词描述\",\n  \"com_ui_download\": \"下载\",\n  \"com_ui_download_artifact\": \"下载 Artifact\",\n  \"com_ui_download_error\": \"下载文件时出现错误，该文件可能已被删除。\",\n  \"com_ui_dropdown_variables\": \"下拉变量：\",\n  \"com_ui_dropdown_variables_info\": \"为您的提示词创建自定义下拉菜单：`{{variable_name:option1|option2|option3}}`\",\n  \"com_ui_duplicate\": \"复制\",\n  \"com_ui_duplicated\": \"已复制\",\n  \"com_ui_duplication_error\": \"复制对话时出现错误\",\n  \"com_ui_duplication_processing\": \"正在复制对话...\",\n  \"com_ui_duplication_success\": \"成功复制对话\",\n  \"com_app_center_welcome\": \"探索BISHENG的智能体\",\n  \"com_app_center_description\": \"您可以在这里选择需要的智能体来进行生产与工作～\",\n  \"com_app_frequently_used\": \"常用智能体\",\n  \"com_app_uncategorized\": \"未分类\",\n  \"com_app_common\": \"常用\",\n  \"com_message_content_copied\": \"内容已复制\",\n  \"com_message_month_day_time\": \"月 dd 日 HH:mm\",\n  \"com_nav_app_center\": \"应用中心\",\n  \"com_nav_start_new_chat\": \"开始新对话\",\n  \"com_sop_web_search\": \"正在联网搜索\",\n  \"com_sop_search_knowledge_base\": \"正在检索知识库\",\n  \"com_sop_list_files\": \"正在查询目录\",\n  \"com_sop_get_file_details\": \"正在获取文件详细信息\",\n  \"com_sop_search_files\": \"正在搜索文件\",\n  \"com_sop_read_text_file\": \"正在阅读文件\",\n  \"com_sop_add_text_to_file\": \"正在向文件添加内容\",\n  \"com_sop_replace_file_lines\": \"正在编辑文件\",\n  \"com_sop_using_tool\": \"正在使用 {{0}} 工具\",\n  \"com_sop_waiting_input\": \"等待输入\",\n  \"com_sop_input\": \"已输入\",\n  \"com_file_size_exceed_limit\": \"文件：{{name}}超过{{size}}MB，已移除\",\n  \"com_sop_please_input\": \"请输入\",\n  \"com_sop_task_execution_interrupted\": \"任务执行中断\",\n  \"com_sop_running\": \"运行中...\",\n  \"com_sop_rerun\": \"重新运行\",\n  \"com_sop_feedback_only\": \"仅反馈\",\n  \"com_sop_upload_file\": \"上传文件\",\n  \"com_sop_upload_file_directory\": \"上传文件所在目录\",\n  \"com_sop_organize_knowledge_base\": \"组织知识库\",\n  \"com_sop_sop_generation_failed\": \"SOP生成失败\",\n  \"com_sop_replan_placeholder\": \"请在此提出 SOP 重新规划方向的建议\",\n  \"com_sop_confirm_replan\": \"确认重新规划\",\n  \"com_sop_editor_title\": \"指导手册编辑器\",\n  \"com_sop_confirm_execution\": \"确认是否可以按照指导手册执⾏任务\",\n  \"com_sop_regenerate_manual\": \"重新生成指导手册\",\n  \"com_sop_start_execution\": \"开始执行\",\n  \"com_sop_personal_knowledge_base\": \"个人知识库\",\n  \"com_sop_task_description\": \"任务描述\",\n  \"com_sop_task_version\": \"任务版本\",\n  \"com_sop_submit_success\": \"提交成功\",\n  \"com_sop_task_flow\": \"任务流\",\n  \"com_sop_waiting_message\": \"确认指导手册规划后，任务开始运行\",\n  \"com_sop_loading_title\": \"为您提供详细指导手册，以确保任务精准\",\n  \"com_sop_loading_desc\": \"$t(linsight)正在为您规划指导手册...\",\n  \"com_sop_preview_failed\": \"预览失败\",\n  \"com_sop_file_load_error\": \"文件加载错误\",\n  \"com_sop_empty_file\": \"空文件\",\n  \"com_sop_tool_not_found\": \"⚠️ 工具或资源不存在，请重新选择\",\n  \"com_sop_tool_error\": \"错误变量\",\n  \"com_sop_task_planning\": \"任务规划\",\n  \"com_sop_task_stage\": \"任务阶段\",\n  \"com_sop_show_overview\": \"显示概览窗口\",\n  \"com_sop_stop_task\": \"终止任务\",\n  \"com_sop_task\": \"任务已\",\n  \"com_sop_terminated\": \"终止\",\n  \"com_sop_completed\": \"完成\",\n  \"com_sop_rate_task\": \"评价任务帮助$t(linsight)下次做得更好：\",\n  \"com_sop_view_all_files\": \"查看此任务中的所有文件\",\n  \"com_sop_select_all\": \"全选\",\n  \"com_sop_batch_download\": \"批量下载\",\n  \"com_sop_queue_message\": \"目前使用人数较多，正在排队中...\",\n  \"com_sop_estimated_wait\": \"预计等待\",\n  \"com_sop_organizing_content\": \"正在整理内容...\",\n  \"com_sop_plan_task_path\": \"规划任务执行路径：\",\n  \"com_sop_execute_tasks\": \"接下来为你执行对应任务：\",\n  \"com_sop_select_file\": \"选择文件\",\n  \"com_agent_add_to_favorites\": \"添加到常用应用\",\n  \"com_agent_remove_from_favorites\": \"从常用应用删除\",\n  \"com_agent_search_placeholder\": \"搜索您需要的智能体\",\n  \"com_agent_unsatisfied_feedback\": \"对结果不满意？您还可以输入意见重新发起任务。\",\n  \"com_agent_input_knowledge_tool\": \"输入 @ 添加知识库、文件或工具\",\n  \"com_file_current_empty\": \"当前文件为空\",\n  \"com_invite_please_input_code\": \"请输入邀请码\",\n  \"com_invite_submit_failed\": \"提交失败\",\n  \"com_invite_title\": \"$t(linsight) 邀请码\",\n  \"com_invite_desc\": \"输入 BISHENG 提供的邀请码，开启你的$t(linsight)之旅。\",\n  \"com_invite_placeholder\": \"请输入\",\n  \"com_invite_submit\": \"提交\",\n  \"com_invite_submitting\": \"提交中...\",\n  \"com_invite_no_code_tip\": \"没有邀请码？\",\n  \"com_invite_apply_access\": \"点击这里申请体验资格\",\n  \"com_copy_failed\": \"复制失败\",\n  \"com_copy_command_failed\": \"复制命令失败\",\n  \"com_copied\": \"已复制\",\n  \"com_copy_to_clipboard\": \"复制到剪贴板\",\n  \"com_show_more\": \"展示更多\",\n  \"com_agent_added_success\": \"该智能体已被添加\",\n  \"com_search_searching\": \"搜索中...\",\n  \"com_search_loading_more\": \"加载更多...\",\n  \"com_search_no_results\": \"未找到相关智能体\",\n  \"com_label_max_selection\": \"最多选择10个标签\",\n  \"com_label_operation_tip\": \"操作提示：在左侧选择要展示的标签，在右侧拖拽进行排序\",\n  \"com_label_selected\": \"已选：{{0}}/10\",\n  \"com_label_cancel\": \"取消\",\n  \"com_label_save\": \"保存\",\n  \"com_nav_personal_knowledge\": \"个人知识库\",\n  \"com_nav_admin_panel\": \"管理后台\",\n  \"com_nav_language\": \"语言\",\n  \"com_nav_language_label\": \"语言\",\n  \"com_knowledge_upload_time\": \"上传时间\",\n  \"com_knowledge_status\": \"状态\",\n  \"com_knowledge_operation\": \"操作\",\n  \"com_knowledge_processing\": \"处理中\",\n  \"com_knowledge_success\": \"成功\",\n  \"com_knowledge_failed\": \"失败\",\n  \"com_knowledge_model_switching\": \"模型向量切换中\",\n  \"com_knowledge_add_file\": \"添加文件\",\n  \"com_segment_daily_mode\": \"日常模式\",\n  \"com_segment_linsight\": \"$t(linsightFullName)\",\n  \"com_linsight_input_placeholder\": \"请输入你的任务目标，然后交给$t(bisheng)$t(linsight)\",\n  \"com_linsight_tagline\": \"大模型结合业务指导手册自主规划并完成复杂任务\",\n  \"com_linsight_remaining_times\": \"剩余任务次数： {{count}}次\",\n  \"com_linsight_activate\": \"去激活\",\n  \"com_tools_title\": \"工具\",\n  \"com_tools_web_search\": \"联网搜索\",\n  \"com_tools_personal_knowledge\": \"个人知识库\",\n  \"com_tools_org_knowledge\": \"组织知识库\",\n  \"com_tools_knowledge_base\": \"知识库\",\n  \"kbLimitReached\": \"知识库数量已达上限（最多50个）\",\n  \"com_tools_knowledge_base_search\": \"搜索知识库名称\",\n  \"com_tools_knowledge_rebuilding\": \"个人知识库 embedding 模型已更换，正在重建知识库，请稍后再试\",\n  \"com_tools_file_upload\": \"文件上传成功\",\n  \"com_tools_file_upload_failed\": \"文件上传失败\",\n  \"com_tools_file_detected\": \"文件重复提示\",\n  \"com_tools_file_following\": \"以下文件在知识库中已存在，是否覆盖？\",\n  \"com_tools_file_not_overwrite\": \"不覆盖\",\n  \"com_tools_file_overwrite\": \"覆盖\",\n  \"com_tools_knowledge_upload_remark\": \"检测到重复文件，重复文件自动跳过\",\n  \"com_tools_no_more\": \"没有更多了\",\n  \"com_tools_no_results\": \"暂无相关数据\",\n  \"com_ui_edit\": \"编辑\",\n  \"com_ui_endpoint\": \"渠道\",\n  \"com_ui_endpoint_menu\": \"LLM 终端菜单\",\n  \"com_ui_endpoints_available\": \"可用渠道\",\n  \"com_ui_enter\": \"进入\",\n  \"com_ui_enter_api_key\": \"输入API密钥\",\n  \"com_ui_enter_openapi_schema\": \"请在此输入OpenAPI架构\",\n  \"com_ui_enter_var\": \"输入 {{0}}\",\n  \"com_ui_error\": \"错误\",\n  \"com_ui_error_connection\": \"连接服务器出现错误，请尝试刷新页面。\",\n  \"com_ui_error_save_admin_settings\": \"保存您的管理员设置时出现错误。\",\n  \"com_ui_examples\": \"示例\",\n  \"com_ui_export_convo_modal\": \"导出对话窗口\",\n  \"com_ui_field_required\": \"此字段为必填项\",\n  \"com_ui_filter_prompts\": \"过滤 Prompts\",\n  \"com_ui_filter_prompts_name\": \"根据名称筛选提示词\",\n  \"com_ui_fork\": \"分叉\",\n  \"com_ui_fork_all_target\": \"包含所有目标\",\n  \"com_ui_fork_branches\": \"包含相关分支\",\n  \"com_ui_fork_change_default\": \"默认分叉选项\",\n  \"com_ui_fork_default\": \"使用默认分叉选项\",\n  \"com_ui_fork_error\": \"分叉对话时出现错误\",\n  \"com_ui_fork_from_message\": \"选择分叉选项\",\n  \"com_ui_fork_info_1\": \"使用此设置可以分叉消息，以获得所需的行为。\",\n  \"com_ui_fork_info_2\": \"“分叉” 是指从当前对话中选择特定消息作为起点/终点，根据所选选项创建一个新的对话副本。\",\n  \"com_ui_fork_info_3\": \"“目标消息” 是指此弹出窗口所打开的消息，或者如果您选中 “{{0}}”，则是对话中最新的消息。\",\n  \"com_ui_fork_info_branches\": \"此选项会分叉可见消息及相关分支；换句话说，包括沿路径的直接路线到目标消息，以及路径上的分支。\",\n  \"com_ui_fork_info_remember\": \"选中此项可记住您的选择，以便下次分叉对话时更快捷地使用您偏好的选项。\",\n  \"com_ui_fork_info_start\": \"如果勾选，则根据上述选择的行为，从此消息开始到对话中最新的消息将被分叉。\",\n  \"com_ui_fork_info_target\": \"此选项会分叉所有导向目标消息的消息分支，包括其相邻消息；换句话说，无论是否可见或在同一路径上，所有消息分支都会被包含在内。\",\n  \"com_ui_fork_info_visible\": \"此选项仅分叉可见的消息；换句话说，是直接路径到目标消息，没有任何分支。\",\n  \"com_ui_fork_processing\": \"正在分叉对话...\",\n  \"com_ui_fork_remember\": \"记住\",\n  \"com_ui_fork_remember_checked\": \"您的选择将在使用后被记住。您可以随时在设置中更改。\",\n  \"com_ui_fork_split_target\": \"在此分叉\",\n  \"com_ui_fork_split_target_setting\": \"默认以目标消息开始分叉\",\n  \"com_ui_fork_success\": \"对话分叉成功\",\n  \"com_ui_fork_visible\": \"仅可见消息\",\n  \"com_ui_go_back\": \"返回\",\n  \"com_ui_go_to_conversation\": \"转到对话\",\n  \"com_ui_happy_birthday\": \"这是我的第一个生日！\",\n  \"com_ui_hide_qr\": \"隐藏二维码\",\n  \"com_ui_host\": \"主机\",\n  \"com_ui_image_gen\": \"图片生成\",\n  \"com_ui_import_conversation_error\": \"导入对话时发生错误\",\n  \"com_ui_import_conversation_file_type_error\": \"不支持的导入类型\",\n  \"com_ui_import_conversation_info\": \"从 JSON 文件导入对话\",\n  \"com_ui_import_conversation_success\": \"对话导入成功\",\n  \"com_ui_include_shadcnui\": \"包含 shadcn/ui 组件指令\",\n  \"com_ui_input\": \"输入\",\n  \"com_ui_instructions\": \"指令\",\n  \"com_ui_latest_footer\": \"for reference only\",\n  \"com_ui_latest_production_version\": \"最新的生产版本\",\n  \"com_ui_latest_version\": \"最新版本\",\n  \"com_ui_librechat_code_api_key\": \"获取您的 LibreChat 代码解释器 API 密钥\",\n  \"com_ui_librechat_code_api_subtitle\": \"安全可靠。多语言支持。文件输入/输出。\",\n  \"com_ui_librechat_code_api_title\": \"运行AI代码\",\n  \"com_ui_llm_menu\": \"LLM菜单\",\n  \"com_ui_llms_available\": \"可用的LLM模型\",\n  \"com_ui_locked\": \"已锁定\",\n  \"com_ui_logo\": \"{{0}}标识\",\n  \"com_ui_manage\": \"管理\",\n  \"com_ui_max_tags\": \"最多允许 {{0}} 个，用最新值。\",\n  \"com_ui_mention\": \"提及一个端点、助手或预设以快速切换到它\",\n  \"com_ui_min_tags\": \"无法再移除更多值，至少需要保留 {{0}} 个。\",\n  \"com_ui_model\": \"模型\",\n  \"com_ui_model_parameters\": \"模型参数\",\n  \"com_ui_more_info\": \"更多信息\",\n  \"com_ui_my_prompts\": \"我的提示词\",\n  \"com_ui_name\": \"名称\",\n  \"com_ui_new_chat\": \"开启新对话\",\n  \"com_ui_model_think\": \"深度思考(R1)\",\n  \"com_ui_model_search\": \"联网搜索\",\n  \"com_ui_knowledge_search\": \"个人知识\",\n  \"com_ui_model_shougang\": \"毕昇思考(R1)\",\n  \"com_ui_next\": \"下一页\",\n  \"com_ui_no\": \"否\",\n  \"com_ui_no_bookmarks\": \"似乎您还没有书签。点击一个对话并添加一个新的书签\",\n  \"com_ui_no_category\": \"无类别\",\n  \"com_ui_no_changes\": \"无需更新\",\n  \"com_ui_no_terms_content\": \"没有可显示的条款和条件内容\",\n  \"com_ui_none_selected\": \"未选择任何项目\",\n  \"com_ui_nothing_found\": \"未找到任何内容\",\n  \"com_ui_of\": \"/\",\n  \"com_ui_off\": \"关闭\",\n  \"com_ui_on\": \"开启\",\n  \"com_ui_page\": \"页面\",\n  \"com_ui_prev\": \"上一页\",\n  \"com_ui_preview\": \"预览\",\n  \"com_ui_privacy_policy\": \"隐私政策\",\n  \"com_ui_privacy_policy_url\": \"隐私政策链接\",\n  \"com_ui_prompt\": \"提示词\",\n  \"com_ui_prompt_already_shared_to_all\": \"此提示词已共享给所有用户\",\n  \"com_ui_prompt_name\": \"提示词名称\",\n  \"com_ui_prompt_name_required\": \"提示词名称为必填项\",\n  \"com_ui_prompt_preview_not_shared\": \"作者未允许对此提示词进行协作。\",\n  \"com_ui_prompt_text\": \"文本\",\n  \"com_ui_prompt_text_required\": \"文本为必填项\",\n  \"com_ui_prompt_update_error\": \"更新提示词时出现错误\",\n  \"com_ui_prompts\": \"提示词\",\n  \"com_ui_prompts_allow_create\": \"允许创建提示词\",\n  \"com_ui_prompts_allow_share_global\": \"允许向所有用户共享提示词\",\n  \"com_ui_prompts_allow_use\": \"允许使用提示词\",\n  \"com_ui_provider\": \"提供商\",\n  \"com_ui_read_aloud\": \"大声朗读\",\n  \"com_ui_regenerate\": \"重新生成\",\n  \"com_ui_region\": \"区域\",\n  \"com_ui_rename\": \"重命名\",\n  \"com_ui_rename_prompt\": \"重命名 Prompt\",\n  \"com_ui_requires_auth\": \"需要认证\",\n  \"com_ui_reset_var\": \"重置{{0}}\",\n  \"com_ui_result\": \"结果\",\n  \"com_ui_revoke\": \"撤销\",\n  \"com_ui_revoke_info\": \"撤销所有用户提供的凭据\",\n  \"com_ui_revoke_key_confirm\": \"您确定要撤销此密钥吗？\",\n  \"com_ui_revoke_key_endpoint\": \"撤销 {{0}} 的密钥\",\n  \"com_ui_revoke_keys\": \"撤销密钥\",\n  \"com_ui_revoke_keys_confirm\": \"您确定要撤销所有密钥吗？\",\n  \"com_ui_role_select\": \"角色\",\n  \"com_ui_run_code\": \"运行代码\",\n  \"com_ui_run_code_error\": \"代码运行出错\",\n  \"com_ui_save\": \"保存\",\n  \"com_ui_save_submit\": \"保存并提交\",\n  \"com_ui_saved\": \"保存成功！\",\n  \"com_ui_schema\": \"架构\",\n  \"com_ui_search\": \"搜索\",\n  \"com_ui_select\": \"选择\",\n  \"com_ui_select_file\": \"选择文件\",\n  \"com_ui_select_model\": \"模型选择\",\n  \"com_ui_select_provider\": \"选择提供商\",\n  \"com_ui_select_provider_first\": \"首先选择提供商\",\n  \"com_ui_select_region\": \"选择地区\",\n  \"com_ui_select_search_model\": \"根据名称搜索模型\",\n  \"com_ui_select_search_plugin\": \"根据名称搜索插件\",\n  \"com_ui_select_search_provider\": \"以名称搜索服务商\",\n  \"com_ui_select_search_region\": \"以名称搜索区域\",\n  \"com_ui_share\": \"分享\",\n  \"no_text_recognized\": \"语音识别不可用，请联系管理员\",\n  \"com_ui_share_create_message\": \"您的姓名以及您在共享后添加的任何消息将保持私密。\",\n  \"com_ui_share_delete_error\": \"删除共享链接时出现错误\",\n  \"com_ui_share_error\": \"共享聊天链接时发生错误\",\n  \"com_ui_share_form_description\": \"未找到描述。\",\n  \"com_ui_share_link_to_chat\": \"共享链接到聊天\",\n  \"com_ui_share_to_all_users\": \"共享给所有用户\",\n  \"com_ui_share_update_message\": \"您的姓名、自定义指令以及您在共享后添加的任何消息将保持私密。\",\n  \"com_ui_share_var\": \"共享 {{0}}\",\n  \"com_ui_shared_link_bulk_delete_success\": \"成功删除分享链接\",\n  \"com_ui_shared_link_delete_success\": \"成功删除分享链接\",\n  \"com_ui_shared_link_not_found\": \"未找到共享链接\",\n  \"com_ui_shared_prompts\": \"共享提示词\",\n  \"com_ui_show_all\": \"展开全部\",\n  \"com_ui_show_qr\": \"显示二维码\",\n  \"com_ui_sign_in_to_domain\": \"登录到 {{0}}\",\n  \"com_ui_simple\": \"基本\",\n  \"com_ui_size\": \"大小\",\n  \"com_ui_special_variables\": \"特殊变量：\",\n  \"com_ui_special_variables_info\": \"使用 `{{current_date}}` 获取当前日期，使用 `{{current_user}}` 获取您的账户名称。\",\n  \"com_ui_speech_while_submitting\": \"正在生成回复时无法提交语音\",\n  \"com_ui_stop\": \"停止\",\n  \"com_ui_storage\": \"存储\",\n  \"com_ui_submit\": \"提交\",\n  \"com_ui_teach_or_explain\": \"学习中\",\n  \"com_ui_temporary_chat\": \"临时对话\",\n  \"com_ui_terms_and_conditions\": \"条款和条件\",\n  \"com_ui_terms_of_service\": \"服务政策\",\n  \"com_ui_thinking\": \"思考中\",\n  \"com_ui_thoughts\": \"思考内容\",\n  \"com_ui_tools\": \"工具\",\n  \"com_ui_unarchive\": \"取消归档\",\n  \"com_ui_unarchive_error\": \"取消归档对话失败\",\n  \"com_ui_unknown\": \"未知\",\n  \"com_ui_update\": \"更新\",\n  \"com_ui_upload\": \"上传\",\n  \"com_ui_upload_code_files\": \"上传代码解释器文件\",\n  \"com_ui_upload_delay\": \"上传 “{{0}}” 时比预期花了更长时间。文件正在进行检索索引，请稍候。\",\n  \"com_ui_upload_error\": \"上传文件错误\",\n  \"com_ui_upload_file_search\": \"上传文件搜索\",\n  \"com_ui_upload_files\": \"上传文件\",\n  \"com_ui_upload_image\": \"上传图片\",\n  \"com_ui_upload_image_input\": \"上传图片\",\n  \"com_ui_upload_invalid\": \"上传的文件无效。必须是图像，且不得超过大小限制\",\n  \"com_ui_upload_invalid_var\": \"上传的文件无效。必须是图像，且不得超过 {{0}} MB。\",\n  \"com_ui_upload_success\": \"上传文件成功\",\n  \"com_ui_upload_type\": \"选择上传类型\",\n  \"com_ui_use_micrphone\": \"使用麦克风\",\n  \"com_ui_use_prompt\": \"使用提示词\",\n  \"com_ui_variables\": \"变量\",\n  \"com_ui_variables_info\": \"在您的文本中使用双大括号创建变量，例如 `{{example variable}}`，以便在使用提示词时填充。\",\n  \"com_ui_version_var\": \"版本 {{0}}\",\n  \"com_ui_versions\": \"版本\",\n  \"com_ui_view_source\": \"查看来源对话\",\n  \"com_ui_yes\": \"是的\",\n  \"com_ui_zoom\": \"缩放\",\n  \"com_ui_please_enter_question\": \"请输入问题\",\n  \"com_ui_restart\": \"重新运行\",\n  \"com_ui_historical_messages\": \"以上为历史消息\",\n  \"com_ui_unknown_message_type\": \"未知消息类型\",\n  \"com_ui_required_field\": \"{{field}} 为必填项，不能为空。\",\n  \"com_ui_field_length_exceeded\": \"{{field}} 长度不能超过{{max}}。\",\n  \"com_ui_please_select\": \"请选择\",\n  \"com_ui_start\": \"开始\",\n  \"com_ui_collapse\": \"收起\",\n  \"com_ui_expand\": \"展开\",\n  \"com_user_message\": \"您\",\n  \"com_warning_resubmit_unsupported\": \"此终端不支持重新提交AI消息\",\n  \"com_source_modal_collapse\": \"收起\",\n  \"com_source_modal_expand\": \"展开\",\n  \"com_source_modal_close\": \"关闭\",\n  \"com_source_modal_filter_labels\": \"筛选标签\",\n  \"com_source_modal_filter_labels_tip\": \"系统自动根据答案生成关键信息标签,也可手动增删标签,系统根据标签计算各个文件及段落相关性。\",\n  \"com_source_modal_add_custom\": \"+自定义\",\n  \"com_source_modal_source_docs\": \"来源文档\",\n  \"com_source_modal_download_layered_pdf\": \"下载双层PDF\",\n  \"com_source_modal_download_original\": \"下载原文件\",\n  \"com_source_modal_mask_name\": \"是真的马赛克.msk\",\n  \"com_source_modal_no_files\": \"无匹配的源文件\",\n  \"com_source_modal_file_url_invalid\": \"文件地址失效!\",\n  \"com_msg_source_reference\": \"参考来源\",\n  \"sourceFromQaLibrary\": \"本答案来源于已有问答库\",\n  \"com_msg_source_no_permission\": \"因权限不足，该答案剔除了无权查看的内容\",\n  \"com_runlog_used\": \"已使用\",\n  \"com_runlog_using\": \"正在使用\",\n  \"com_runlog_offline\": \"已下线\",\n  \"com_runlog_flow_deleted\": \"技能已被删除，无法获取技能名\",\n  \"com_runlog_tool_deleted\": \"工具已被删除，无法获取工具名\",\n  \"com_runlog_searched\": \"已搜索\",\n  \"com_runlog_searching\": \"正在搜索\",\n  \"com_runlog_knowledge_deleted\": \"知识库已被删除，无法获取知识库名\",\n  \"com_runlog_done\": \"完成\",\n  \"com_runlog_thinking\": \"思考中\",\n  \"com_node_run_node\": \"节点\",\n  \"com_feedback_required\": \"反馈信息不能为空\",\n  \"com_feedback_title\": \"反馈\",\n  \"com_bschoose_click_to_download\": \"点击下载\",\n  \"com_bschoose_confirmed\": \"已确认\",\n  \"com_bschoose_confirm\": \"确认\",\n  \"com_bs_reasoning_thinking\": \"思考中\",\n  \"com_bs_reasoning_done\": \"已深度思考\",\n  \"com_inputfiles_exceed_limit\": \"文件：{{0}}超过{{1}}M，已移除\",\n  \"com_ui_upload_file_type_error\": \"该应用不支持上传此类型文件\",\n  \"com_inputfiles_upload_failed\": \"文件上传失败: {{0}}\",\n  \"com_inputfiles_parsing\": \"解析中...\",\n  \"com_inputfiles_uploading\": \"上传中...\",\n  \"com_preview_old_version_unsupported\": \"旧版文件格式暂不支持预览\",\n  \"com_preview_type_unsupported\": \"此文件暂不支持预览\",\n  \"com_preview_source_paragraph\": \"来源段落\",\n  \"com_search_found_webs\": \"已搜到 {{0}} 个网页\",\n  \"com_search_results\": \"搜索结果\",\n  \"com_case_japan_7days\": \"超详细日本7日旅游攻略\",\n  \"com_case_prospectus_report\": \"招股书说明书和君七步法阅读报告\",\n  \"com_case_tender_response\": \"招标需求响应\",\n  \"com_case_ai_products_6m\": \"近6个月AI新产品盘点（广度搜索）\",\n  \"com_case_aero_site\": \"制作一个航空航天科普网站\",\n  \"com_case_magic_tower\": \"魔塔网页小游戏\",\n  \"com_case_featured\": \"$t(linsight)精选案例\",\n  \"com_inputfile_exceed_limit\": \"文件：{{0}} 超过 {{1}} MB，已移除\",\n  \"com_inputfile_no_file_selected\": \"没有选择文件\",\n  \"com_chat_round_finished\": \"本轮会话已结束\",\n  \"com_file_tip_text_only\": \"仅识别附件中的文字\",\n  \"com_file_content_exceed_tokens\": \"文件内容超出3万token\",\n  \"com_file_parse_failed_auto_removed\": \"文件 {{0}} 解析失败, 自动移除\",\n  \"com_sop_minutes\": \"分钟\",\n  \"com_sop_hours\": \"小时\",\n  \"com_make_samestyle\": \"做同款\",\n  \"com_searchResults\": \"检索结果\",\n  \"com_webSearch\": \"网页搜索\",\n  \"com_searchQueryLabel\": \"检索问题:\",\n  \"com_addAnything\": \"添加任何内容\",\n  \"com_dropAnyFileToAdd\": \"将任何文件拖放到此处以添加到对话中\",\n  \"com_share_title\": \"分享对话\",\n  \"com_share_desc\": \"任何人只要拥有链接都可以查看此对话。\",\n  \"com_unsupported_file_type\": \"不支持的文件类型：\",\n  \"api_errors\": {\n    \"403\": \"暂无操作权限\",\n    \"404\": \"资源不存在\",\n    \"500\": \"服务器错误\",\n    \"503\": \"系统正忙，请稍候\",\n    \"10001\": \"未找到SFT服务\",\n    \"10002\": \"无效操作\",\n    \"10003\": \"资源下载失败\",\n    \"10004\": \"未配置知识库embedding模型，请从工作台配置中设置\",\n    \"10005\": \"知识库embedding模型不存在，请从工作台配置中设置\",\n    \"10006\": \"知识库embedding模型类型错误，请从工作台配置中设置\",\n    \"10007\": \"请联系管理员检查工作台向量检索模型状态\",\n    \"10008\": \"没有找到llm模型配置\",\n    \"10009\": \"llm模型配置已被删除，请重新配置模型\",\n    \"10010\": \"服务提供方配置已被删除，请重新配置llm模型\",\n    \"10011\": \"只支持LLM类型的模型，不支持{{model_type}}类型的模型\",\n    \"10012\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10013\": \"初始化llm失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10014\": \"没有找到asr模型配置\",\n    \"10015\": \"asr模型配置已被删除，请重新配置模型\",\n    \"10016\": \"服务提供方配置已被删除，请重新配置asr模型\",\n    \"10017\": \"只支持ASR类型的模型，不支持{{model_type}}类型的模型\",\n    \"10018\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10019\": \"初始化asr失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10020\": \"没有找到tts模型配置\",\n    \"10021\": \"tts模型配置已被删除，请重新配置模型\",\n    \"10022\": \"服务提供方配置已被删除，请重新配置tts模型\",\n    \"10023\": \"只支持TTS类型的模型，不支持{{model_type}}类型的模型\",\n    \"10024\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10025\": \"初始化tts失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10030\": \"系统配置不能为空\",\n    \"10031\": \"系统配置格式不正确，请检查配置内容：{{exception}}\",\n    \"10040\": \"上传文件不能为空\",\n    \"10041\": \"上传文件格式不支持，请上传正确格式的文件\",\n    \"10100\": \"创建训练任务失败\",\n    \"10101\": \"个人训练集和预置训练集最少选择一个\",\n    \"10102\": \"任务不存在\",\n    \"10103\": \"任务状态错误\",\n    \"10104\": \"任务取消失败\",\n    \"10105\": \"任务删除失败\",\n    \"10106\": \"任务发布失败\",\n    \"10107\": \"模型名接口修改失败\",\n    \"10108\": \"取消发布失败\",\n    \"10109\": \"无效的训练参数\",\n    \"10110\": \"模型名已存在\",\n    \"10120\": \"训练文件不存在\",\n    \"10125\": \"获取GPU信息失败\",\n    \"10126\": \"获取模型列表失败\",\n    \"10200\": \"模型不存在\",\n    \"10300\": \"组件已存在\",\n    \"10301\": \"组件不存在\",\n    \"10400\": \"助手不存在\",\n    \"10401\": \"助手上线失败: {{exception}}\",\n    \"10402\": \"助手名称重复\",\n    \"10403\": \"助手已上线，不可编辑\",\n    \"10420\": \"该助手已被删除\",\n    \"10421\": \"当前应用未上线，无法直接对话\",\n    \"10422\": \"助手推理模型列表为空\",\n    \"10423\": \"未配置助手推理模型\",\n    \"10424\": \"未配置助手画像自动优化模型\",\n    \"10499\": \"助手服务异常\",\n    \"10500\": \"未找到技能版本信息\",\n    \"10501\": \"当前正在使用版本无法删除\",\n    \"10502\": \"版本名已存在\",\n    \"10503\": \"技能名重复\",\n    \"10520\": \"技能不存在\",\n    \"10521\": \"技能已上线，不可编辑\",\n    \"10525\": \"工作流已上线，不可编辑\",\n    \"10526\": \"工作流初始化失败\",\n    \"10527\": \"工作流等待用户输入超时\",\n    \"10528\": \"{{type}}节点执行超过最大次数\",\n    \"10529\": \"工作流名称重复\",\n    \"10530\": \"模板名称已存在\",\n    \"10531\": \"{{type}}功能已升级，需删除后重新拖入。\",\n    \"10532\": \"工作流版本已升级，请联系创建者重新编排\",\n    \"10540\": \"服务器线程数已满，请稍候再试\",\n    \"10541\": \"工作流任务执行失败：{{exception}}\",\n    \"10599\": \"暂无查看权限\",\n    \"10600\": \"账号或密码错误\",\n    \"10601\": \"您的密码已过期，请及时修改\",\n    \"10602\": \"用户尚未设置密码，请先联系管理员重置密码\",\n    \"10603\": \"当前密码错误\",\n    \"10604\": \"您的账户已在另一设备上登录，此设备上的会话已被注销。\\n如果这不是您本人的操作，请尽快修改您的账户密码。\",\n    \"10605\": \"用户名已存在\",\n    \"10606\": \"用户组和角色不能为空\",\n    \"10607\": \"验证码错误\",\n    \"10610\": \"用户组内还有用户，不能删除\",\n    \"10620\": \"该用户被禁用，请联系管理员\",\n    \"10621\": \"由于登录失败次数过多，该账号被自动禁用，请联系管理员处理\",\n    \"10630\": \"用户组不能为空\",\n    \"10640\": \"不能修改管理员用户信息\",\n    \"10700\": \"标签已存在\",\n    \"10701\": \"未找到对应的标签\",\n    \"10800\": \"服务提供方名称重复，请修改\",\n    \"10801\": \"模型不可重复\",\n    \"10802\": \"添加服务提供方失败，模型全部初始化失败\",\n    \"10803\": \"添加服务提供方失败，部分模型初始化失败\",\n    \"10900\": \"知识库名称重复\",\n    \"10901\": \"知识库必须选择一个embedding模型\",\n    \"10902\": \"文档知识库总结模型已失效，请前往模型管理-系统模型设置中进行配置。{{exception}}\",\n    \"10910\": \"当前知识库版本不支持修改分段，请创建新知识库后进行分段修改\",\n    \"10911\": \"文件解析为空\",\n    \"10912\": \"分段结果超长，请尝试在自定义策略中使用更多切分符（例如 \\\\n、。、\\\\.）进行切分\",\n    \"10913\": \"文件可能已损坏，无法解析，请检查后重新上传\",\n    \"10914\": \"不支持该类型文件的解析，请检查后重新上传\",\n    \"10915\": \"etl4lm服务繁忙，请升级etl4lm服务的算力\",\n    \"10920\": \"未配置QA知识库相似问模型\",\n    \"10930\": \"该问题已存在\",\n    \"10940\": \"当前有文件正在解析，不可复制\",\n    \"10941\": \"知识库内容为空，无法复制\",\n    \"10950\": \"不支持多个知识库的文件同时删除\",\n    \"10951\": \"知识库重新构建中，不允许修改embedding模型\",\n    \"10952\": \"文档解析失败\",\n    \"10953\": \"文件解析失败: {{exception}}\",\n    \"10960\": \"不是QA知识库\",\n    \"10970\": \"知识库不存在\",\n    \"10971\": \"知识库文件不存在\",\n    \"10980\": \"{{field_name}} 与内置元数据字段名称冲突\",\n    \"10981\": \"元数据字段 {{field_name}} 已存在\",\n    \"10982\": \"元数据字段 {{field_name}} 不存在\",\n    \"10983\": \"内置元数据字段 {{field_name}} 不能修改\",\n    \"10984\": \"元数据字段 {{field_name}} 值类型转换错误: {{error_msg}}\",\n    \"11010\": \"SOP文件格式不符合要求\",\n    \"11011\": \"SOP设置精选案例失败\",\n    \"11020\": \"文件上传失败\",\n    \"11030\": \"您的$t(linsight)使用次数已用完，请使用新的邀请码激活$t(linsight)功能\",\n    \"11040\": \"提交$t(linsight)用户问题失败\",\n    \"11050\": \"请联系管理员检查工作台向量检索模型状态\",\n    \"11060\": \"指导手册检索失败，向量检索与关键词检索均不可用\",\n    \"10608\": \"用户名长度不能超过30个字符\",\n    \"11070\": \"指导手册检索失败\",\n    \"11080\": \"初始化$t(linsight)工作台工具失败\",\n    \"11090\": \"$t(linsight)Bisheng LLM相关错误\",\n    \"11100\": \"生成SOP内容失败\",\n    \"11110\": \"修改SOP内容失败\",\n    \"11120\": \"$t(linsight)会话版本已完成或正在执行，无法再次执行\",\n    \"11130\": \"开始执行$t(linsight)任务失败\",\n    \"11140\": \"获取$t(linsight)队列排队状态失败\",\n    \"11150\": \"添加指导手册失败，向量存储添加数据失败\",\n    \"11160\": \"更新指导手册失败，向量存储更新数据失败\",\n    \"11170\": \"删除指导手册失败，向量存储删除数据失败\",\n    \"11171\": \"{{sop_name}}内容超长\",\n    \"11180\": \"您输入的邀请码无效\",\n    \"11190\": \"已绑定其他邀请码\",\n    \"11403\": \"暂无查看权限\",\n    \"12040\": \"未找到web_search工具\",\n    \"12041\": \"会话不存在\",\n    \"12042\": \"该智能体已被添加\",\n    \"13001\": \"该技能已被删除\",\n    \"13002\": \"当前应用未上线，无法直接对话\",\n    \"13003\": \"当前技能未编译通过，无法直接对话\",\n    \"13004\": \"后端服务异常\",\n    \"13005\": \"LLM 技能执行错误. error={{error}}\",\n    \"13006\": \"文档解析失败，点击输入框上传按钮重新上传\\n\\n{{error}}\",\n    \"13007\": \"Input data is parsed fail. error={{error}}\",\n    \"13010\": \"当前应用未上线，无法直接对话\",\n    \"14001\": \"后台处理中，稍后再试\",\n    \"15000\": \"工具名称已存在\",\n    \"15001\": \"工具下的API不能为空\",\n    \"15002\": \"工具不存在\",\n    \"15003\": \"名字不符合规范：至少1个字符，不能超过1000个字符\",\n    \"15010\": \"预置工具类别不可删除\",\n    \"15020\": \"工具Schema的url下载失败\",\n    \"15021\": \"工具Schema不能为空\",\n    \"15022\": \"openapi schema解析报错，请检查内容是否符合json或者yaml格式: {{exception}}\",\n    \"15023\": \"server中的url必须以http或者https开头: {{url}}\",\n    \"15024\": \"mcp工具配置解析失败，请检查内容是否符合mcp配置格式: {{exception}}\",\n    \"16000\": \"数据集名称已存在\",\n    \"11111\": \"当前应用已被删除\",\n    \"90001\": \"您当前角色没有访问管理后台的权限。如有需要，请联系管理员开通。\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/client/src/locales/zh-Hant/translation.json",
    "content": "{\n  \"com_a11y_ai_composing\": \"AI 仍在撰寫中\",\n  \"com_a11y_end\": \"AI 已完成回覆\",\n  \"com_a11y_start\": \"AI 已開始回覆。\",\n  \"com_agents_allow_editing\": \"允許其他使用者編輯您的助理\",\n  \"com_agents_by_librechat\": \"由 LibreChat 提供\",\n  \"com_agents_code_interpreter\": \"啟用後，您的代理可以安全地使用 LibreChat 程式碼解譯器 API 來執行產生的程式碼，包括檔案處理功能。需要有效的 API 金鑰。\",\n  \"com_agents_code_interpreter_title\": \"程式碼解譯器 API\",\n  \"com_agents_create_error\": \"建立您的代理時發生錯誤。\",\n  \"com_agents_description_placeholder\": \"選填：在此描述您的代理程式\",\n  \"com_agents_enable_file_search\": \"啟用檔案搜尋\",\n  \"com_agents_file_search_disabled\": \"必須先建立代理才能上傳檔案進行檔案搜尋。\",\n  \"com_agents_file_search_info\": \"啟用後，代理將會被告知以下列出的確切檔案名稱，使其能夠從這些檔案中擷取相關內容。\",\n  \"com_agents_instructions_placeholder\": \"代理程式使用的系統指令\",\n  \"com_agents_missing_provider_model\": \"請在建立代理前選擇供應商和模型。\",\n  \"com_agents_name_placeholder\": \"選填：代理人的名稱\",\n  \"com_agents_no_access\": \"您沒有權限編輯此助理\",\n  \"com_agents_not_available\": \"代理不可用\",\n  \"com_agents_search_name\": \"依名稱搜尋代理\",\n  \"com_agents_update_error\": \"更新您的代理時發生錯誤。\",\n  \"com_assistants_actions\": \"操作\",\n  \"com_assistants_actions_disabled\": \"您需要先建立一個助理，才能新增動作。\",\n  \"com_assistants_actions_info\": \"讓您的助理透過 API 取得資訊或執行操作\",\n  \"com_assistants_add_actions\": \"新增操作\",\n  \"com_assistants_add_tools\": \"新增工具\",\n  \"com_assistants_append_date\": \"添加當前日期和時間\",\n  \"com_assistants_append_date_tooltip\": \"啟用後，當前客戶的日期和時間將附加到助手的系統指令中。\",\n  \"com_assistants_available_actions\": \"可用操作\",\n  \"com_assistants_capabilities\": \"功能\",\n  \"com_assistants_code_interpreter\": \"程式碼解譯器\",\n  \"com_assistants_code_interpreter_files\": \"以下檔案僅適用於程式碼解譯器：\",\n  \"com_assistants_code_interpreter_info\": \"程式碼解譯器可讓助理撰寫和執行程式碼。此工具能處理各種資料格式的檔案，並產生圖表等檔案。\",\n  \"com_assistants_completed_action\": \"與 {{0}} 對話完成\",\n  \"com_assistants_completed_function\": \"已執行 {{0}}\",\n  \"com_assistants_conversation_starters\": \"對話起點\",\n  \"com_assistants_conversation_starters_placeholder\": \"輸入對話開場白\",\n  \"com_assistants_create_error\": \"建立您的助理時發生錯誤。\",\n  \"com_assistants_create_success\": \"已成功建立\",\n  \"com_assistants_delete_actions_error\": \"刪除操作時發生錯誤\",\n  \"com_assistants_delete_actions_success\": \"已成功刪除助理的操作\",\n  \"com_assistants_description_placeholder\": \"選填：在此描述您的助理\",\n  \"com_assistants_domain_info\": \"助理將此資訊傳送給 {{0}}\",\n  \"com_assistants_file_search\": \"檔案搜尋\",\n  \"com_assistants_file_search_info\": \"目前尚不支援為檔案搜尋附加向量儲存。您可以從提供者遊樂場附加它們，或在每個主題的基礎上為檔案搜尋附加檔案。\",\n  \"com_assistants_function_use\": \"助理使用了 {{0}}\",\n  \"com_assistants_image_vision\": \"影像視覺\",\n  \"com_assistants_instructions_placeholder\": \"系統指令是助理使用的提示指令\",\n  \"com_assistants_knowledge\": \"知識\",\n  \"com_assistants_knowledge_disabled\": \"助理必須先建立，並啟用及儲存「程式碼解譯器」或「資訊檢索」功能，才能上傳檔案作為知識庫。\",\n  \"com_assistants_knowledge_info\": \"如果您在「知識」下上傳檔案，與您的助理的對話可能會包含檔案內容。\",\n  \"com_assistants_max_starters_reached\": \"已達對話起始項目的最大數量\",\n  \"com_assistants_name_placeholder\": \"選填：助理的名稱\",\n  \"com_assistants_non_retrieval_model\": \"此模型未啟用檔案搜尋功能。請選擇其他模型。\",\n  \"com_assistants_retrieval\": \"檢索\",\n  \"com_assistants_running_action\": \"執行中的動作\",\n  \"com_assistants_search_name\": \"搜尋助理名稱\",\n  \"com_assistants_update_actions_error\": \"更新或建立動作時發生錯誤。\",\n  \"com_assistants_update_actions_success\": \"動作已成功建立或更新\",\n  \"com_assistants_update_error\": \"更新您的助理時發生錯誤。\",\n  \"com_assistants_update_success\": \"更新成功\",\n  \"com_auth_already_have_account\": \"已經有帳號了？\",\n  \"com_auth_back_to_login\": \"返回登入\",\n  \"com_auth_click\": \"點選\",\n  \"com_auth_click_here\": \"點選這裡\",\n  \"com_auth_continue\": \"繼續\",\n  \"com_auth_create_account\": \"建立您的帳號\",\n  \"com_auth_discord_login\": \"使用 Discord 登入\",\n  \"com_auth_email\": \"電子郵件\",\n  \"com_auth_email_address\": \"電子郵件地址\",\n  \"com_auth_email_max_length\": \"電子郵件不應超過 120 個字元\",\n  \"com_auth_email_min_length\": \"電子郵件長度必須至少有 6 個字元\",\n  \"com_auth_email_pattern\": \"您必須輸入有效的電子郵件地址\",\n  \"com_auth_email_required\": \"電子郵件必填\",\n  \"com_auth_email_resend_link\": \"重新傳送電子郵件\",\n  \"com_auth_email_resent_failed\": \"重新傳送驗證電子郵件失敗\",\n  \"com_auth_email_resent_success\": \"驗證郵件已重新傳送成功\",\n  \"com_auth_email_verification_failed\": \"電子郵件驗證失敗\",\n  \"com_auth_email_verification_failed_token_missing\": \"驗證失敗，缺少驗證令牌\",\n  \"com_auth_email_verification_in_progress\": \"正在驗證您的電子郵件，請稍候\",\n  \"com_auth_email_verification_invalid\": \"電子郵件驗證無效\",\n  \"com_auth_email_verification_redirecting\": \"{{0}} 秒後重新導向...\",\n  \"com_auth_email_verification_resend_prompt\": \"沒收到電子郵件？\",\n  \"com_auth_email_verification_success\": \"電子郵件驗證成功\",\n  \"com_auth_error_create\": \"嘗試註冊您的帳號時發生錯誤。請重試。\",\n  \"com_auth_error_invalid_reset_token\": \"此密碼重設令牌已無效。\",\n  \"com_auth_error_login\": \"無法使用提供的資訊登入。請檢查您的登入資訊後重試。\",\n  \"com_auth_error_login_ban\": \"由於違反我們的服務條款，您的帳號已被暫時停用。\",\n  \"com_auth_error_login_rl\": \"短時間內嘗試登入的次數過多。請稍後再試。\",\n  \"com_auth_error_login_server\": \"發生內部伺服器錯誤。請稍候片刻，然後重試。\",\n  \"com_auth_error_login_unverified\": \"您的帳號尚未驗證。請檢查您的電子郵件以取得驗證連結。\",\n  \"com_auth_facebook_login\": \"使用 Facebook 登入\",\n  \"com_auth_full_name\": \"全名\",\n  \"com_auth_github_login\": \"使用 GitHub 登入\",\n  \"com_auth_google_login\": \"使用 Google 登入\",\n  \"com_auth_here\": \"這裡\",\n  \"com_auth_login\": \"登入\",\n  \"com_auth_login_with_new_password\": \"您現在可以使用新密碼登入。\",\n  \"com_auth_name_max_length\": \"名稱長度長度必須少於 80 個字元\",\n  \"com_auth_name_min_length\": \"名稱長度必須至少有 3 個字元\",\n  \"com_auth_name_required\": \"名稱必填\",\n  \"com_auth_no_account\": \"還沒有帳號？\",\n  \"com_auth_password\": \"密碼\",\n  \"com_auth_password_confirm\": \"確認密碼\",\n  \"com_auth_password_forgot\": \"忘記密碼？\",\n  \"com_auth_password_max_length\": \"密碼長度必須少於 128 個字元\",\n  \"com_auth_password_min_length\": \"密碼長度必須至少有 8 個字元\",\n  \"com_auth_password_not_match\": \"密碼不符\",\n  \"com_auth_password_required\": \"密碼必填\",\n  \"com_auth_registration_success_generic\": \"請檢查您的電子郵件以驗證電子郵件地址。\",\n  \"com_auth_registration_success_insecure\": \"註冊成功。\",\n  \"com_auth_reset_password\": \"重設密碼\",\n  \"com_auth_reset_password_if_email_exists\": \"如果存在使用該電子郵件的帳號，我們已寄送一封含有密碼重設說明的郵件。請記得檢查您的垃圾郵件匣。\",\n  \"com_auth_reset_password_link_sent\": \"電子郵件已傳送\",\n  \"com_auth_reset_password_success\": \"密碼重設成功\",\n  \"com_auth_sign_in\": \"登入\",\n  \"com_auth_sign_up\": \"註冊\",\n  \"com_auth_submit_registration\": \"送出\",\n  \"com_auth_to_reset_your_password\": \"重設您的密碼。\",\n  \"com_auth_to_try_again\": \"重試。\",\n  \"com_auth_username\": \"使用者名稱（選填）\",\n  \"com_auth_username_max_length\": \"使用者名稱長度必須少於 20 個字元\",\n  \"com_auth_username_min_length\": \"使用者名稱長度必須至少有 2 個字元\",\n  \"com_auth_welcome_back\": \"歡迎回來\",\n  \"com_click_to_download\": \"（點選此處下載）\",\n  \"com_download_expired\": \"下載已過期\",\n  \"com_download_expires\": \"(點擊此處下載 - {{0}} 後過期)\",\n  \"com_endpoint\": \"選項\",\n  \"com_endpoint_agent\": \"代理\",\n  \"com_endpoint_agent_model\": \"代理模型（建議：GPT-3.5）\",\n  \"com_endpoint_agent_placeholder\": \"請選擇代理\",\n  \"com_endpoint_ai\": \"AI\",\n  \"com_endpoint_anthropic_maxoutputtokens\": \"設定回應中可生成的最大 token 數。若希望回應簡短，請設定較低的數值；若需較長的回應，則設定較高的數值。\",\n  \"com_endpoint_anthropic_prompt_cache\": \"提示快取功能可在 API 呼叫間重複使用大型上下文或指令，以降低成本和延遲\",\n  \"com_endpoint_anthropic_temp\": \"範圍從 0 到 1。對於分析/多選題，使用接近 0 的溫度，對於創意和生成式任務，使用接近 1 的溫度。我們建議修改這個或 Top P，但不建議兩者都修改。\",\n  \"com_endpoint_anthropic_topk\": \"Top-k 改變模型選擇輸出 token 的方式。Top-k 為 1 表示所選 token 在模型詞彙表中所有 token 中最可能（也稱為貪婪解碼），而 Top-k 為 3 表示下一個 token 從最可能的 3 個 token 中選擇（使用溫度）。\",\n  \"com_endpoint_anthropic_topp\": \"Top-p 改變模型選擇輸出 token 的方式。從最可能的 K（見 topK 參數）開始選擇 token，直到它們的機率之和達到 top-p 值。\",\n  \"com_endpoint_assistant\": \"助理\",\n  \"com_endpoint_assistant_model\": \"AI 模型\",\n  \"com_endpoint_assistant_placeholder\": \"請從右側面板選擇一位助理\",\n  \"com_endpoint_completion\": \"完成\",\n  \"com_endpoint_completion_model\": \"完成模型（建議：GPT-4）\",\n  \"com_endpoint_config_click_here\": \"點此\",\n  \"com_endpoint_config_google_api_info\": \"要取得 Generative Language API 金鑰（適用於 Gemini），\",\n  \"com_endpoint_config_google_api_key\": \"Google API 金鑰\",\n  \"com_endpoint_config_google_cloud_platform\": \"Google 雲端平臺設定\",\n  \"com_endpoint_config_google_gemini_api\": \"Google Gemini API 設定\",\n  \"com_endpoint_config_google_service_key\": \"Google 服務帳戶金鑰\",\n  \"com_endpoint_config_key\": \"設定 API 金鑰\",\n  \"com_endpoint_config_key_encryption\": \"您的金鑰將被加密並在此到期時間刪除：\",\n  \"com_endpoint_config_key_for\": \"設定 API 金鑰給\",\n  \"com_endpoint_config_key_google_need_to\": \"您需要\",\n  \"com_endpoint_config_key_google_service_account\": \"建立一個服務帳戶\",\n  \"com_endpoint_config_key_google_vertex_ai\": \"在 Google Cloud 上啟用 Vertex AI\",\n  \"com_endpoint_config_key_google_vertex_api\": \"API，然後\",\n  \"com_endpoint_config_key_google_vertex_api_role\": \"確保點選「建立並繼續」並至少給予「Vertex AI 使用者」角色。最後，建立一個 JSON 金鑰以在此處匯入。\",\n  \"com_endpoint_config_key_import_json_key\": \"匯入服務帳戶 JSON 金鑰。\",\n  \"com_endpoint_config_key_import_json_key_invalid\": \"無效的服務帳戶 JSON 金鑰，您是否匯入了正確的檔案？\",\n  \"com_endpoint_config_key_import_json_key_success\": \"成功匯入服務帳戶 JSON 金鑰\",\n  \"com_endpoint_config_key_name\": \"金鑰\",\n  \"com_endpoint_config_key_never_expires\": \"您的金鑰永遠不會過期\",\n  \"com_endpoint_config_placeholder\": \"在標頭選單中設定您的金鑰以開始對話。\",\n  \"com_endpoint_config_value\": \"輸入\",\n  \"com_endpoint_context\": \"前後文\",\n  \"com_endpoint_context_info\": \"可用於上下文的最大 token 數量。用於控制每個請求傳送的 token 數量。如果未指定，將根據已知模型的上下文大小使用系統預設值。設定較高的值可能會導致錯誤和/或更高的 token 成本。\",\n  \"com_endpoint_context_tokens\": \"最大前後文 token 數\",\n  \"com_endpoint_custom_name\": \"自訂名稱\",\n  \"com_endpoint_default\": \"預設\",\n  \"com_endpoint_default_blank\": \"預設：空白\",\n  \"com_endpoint_default_empty\": \"預設：空\",\n  \"com_endpoint_default_with_num\": \"預設：{{0}}\",\n  \"com_endpoint_examples\": \"預設設定\",\n  \"com_endpoint_export\": \"匯出\",\n  \"com_endpoint_export_share\": \"匯出/分享\",\n  \"com_endpoint_frequency_penalty\": \"頻率懲罰\",\n  \"com_endpoint_func_hover\": \"啟用將外掛用作 OpenAI 函式\",\n  \"com_endpoint_google_custom_name_placeholder\": \"為 Google 設定自訂名稱\",\n  \"com_endpoint_google_maxoutputtokens\": \"設定回應中可生成的最大 token 數。若希望回應簡短，請設定較低的數值；若需較長的回應，則設定較高的數值。\",\n  \"com_endpoint_google_temp\": \"較高的值表示更隨機，而較低的值表示更集中和確定。我們建議修改這個或 Top P，但不建議兩者都修改。\",\n  \"com_endpoint_google_topk\": \"Top-k 調整模型如何選取輸出的 token。當 Top-k 設為 1 時，模型會選取在其詞彙庫中機率最高的 token 進行輸出（這也被稱為貪婪解碼）。相對地，當 Top-k 設為 3 時，模型會從機率最高的三個 token 中選取下一個輸出 token（這會涉及到所謂的「溫度」調整）\",\n  \"com_endpoint_google_topp\": \"Top-p 調整模型在輸出 token 時的選擇機制。從最可能的 K（見 topK 參數）開始選擇 token，直到它們的機率之和達到 top-p 值。\",\n  \"com_endpoint_instructions_assistants\": \"覆寫提示指令\",\n  \"com_endpoint_instructions_assistants_placeholder\": \"覆寫助理的提示指令。這對於在每次執行時修改行為很有用。\",\n  \"com_endpoint_max_output_tokens\": \"最大輸出 token 數\",\n  \"com_endpoint_message\": \"訊息\",\n  \"com_endpoint_message_new\": \"訊息 {{0}}\",\n  \"com_endpoint_message_not_appendable\": \"無法附加訊息或重新生成。\",\n  \"com_endpoint_my_preset\": \"我的預設設定\",\n  \"com_endpoint_no_presets\": \"尚無預設設定\",\n  \"com_endpoint_open_menu\": \"開啟選單\",\n  \"com_endpoint_openai_custom_name_placeholder\": \"為 ChatGPT 設定自訂名稱\",\n  \"com_endpoint_openai_detail\": \"「低」解析度的視覺請求較便宜且快速，「高」解析度則更詳細但成本較高，而「自動」會根據影像解析度自動在兩者之間選擇。\",\n  \"com_endpoint_openai_freq\": \"數值範圍介於 -2.0 和 2.0 之間。正值會根據該 token 在目前的文字中出現的頻率進行懲罰，減少模型產生重複內容的可能性。\",\n  \"com_endpoint_openai_max\": \"要生成的最大 token 數。輸入 token 和生成 token 的總長度受到模型前後文長度的限制。\",\n  \"com_endpoint_openai_max_tokens\": \"可選的 `max_tokens` 欄位，代表在對話完成中可以生成的最大 token 數。\\n\\n輸入 token 和生成 token 的總長度受限於模型的上下文長度。如果此數字超過最大上下文 token 數，您可能會遇到錯誤。\",\n  \"com_endpoint_openai_pres\": \"數值範圍介於 -2.0 和 2.0 之間。正值會根據該 token 是否在目前的文字中出現來進行懲罰，增加模型談及新主題的可能性。\",\n  \"com_endpoint_openai_prompt_prefix_placeholder\": \"在系統訊息中設定自訂提示。\",\n  \"com_endpoint_openai_resend\": \"重新傳送之前所有附加的圖片。注意：這可能會大幅增加 token 成本，如果附加了太多圖片，您可能會遇到錯誤。\",\n  \"com_endpoint_openai_resend_files\": \"重新傳送之前附加的所有檔案。注意：這將增加 token 成本，如果附件過多，您可能會遇到錯誤。\",\n  \"com_endpoint_openai_stop\": \"最多 4 個序列，API 將在生成更多 token 時停止。\",\n  \"com_endpoint_openai_temp\": \"較高的值表示更隨機，而較低的值表示更集中和確定。我們建議修改這個或 Top P，但不建議兩者都修改。\",\n  \"com_endpoint_openai_topp\": \"與溫度取樣的替代方法，稱為核心取樣，其中模型考慮 top_p 機率質量的 token 結果。所以 0.1 表示只考慮佔 top 10% 機率質量的 token。我們建議修改這個或溫度，但不建議兩者都修改。\",\n  \"com_endpoint_output\": \"輸出\",\n  \"com_endpoint_plug_image_detail\": \"影像詳細資訊\",\n  \"com_endpoint_plug_resend_files\": \"重新傳送檔案\",\n  \"com_endpoint_plug_set_custom_instructions_for_gpt_placeholder\": \"在系統訊息中新增自訂提示。\",\n  \"com_endpoint_plug_skip_completion\": \"跳過完成步驟\",\n  \"com_endpoint_plug_use_functions\": \"使用外掛作為 OpenAI 函式\",\n  \"com_endpoint_presence_penalty\": \"出現懲罰\",\n  \"com_endpoint_preset\": \"預設設定\",\n  \"com_endpoint_preset_default\": \"現在是預設的預設設定。\",\n  \"com_endpoint_preset_default_item\": \"預設值\",\n  \"com_endpoint_preset_default_none\": \"無啟用的預設設定。\",\n  \"com_endpoint_preset_default_removed\": \"不再是預設設定\",\n  \"com_endpoint_preset_delete_confirm\": \"您確定要刪除這個預設設定嗎？\",\n  \"com_endpoint_preset_delete_error\": \"刪除您的預設設定時發生錯誤。請重試。\",\n  \"com_endpoint_preset_import\": \"預設設定已匯入！\",\n  \"com_endpoint_preset_import_error\": \"匯入您的預設設定時發生錯誤。請再試一次。\",\n  \"com_endpoint_preset_name\": \"名稱\",\n  \"com_endpoint_preset_save_error\": \"儲存您的預設設定時發生錯誤。請再試一次。\",\n  \"com_endpoint_preset_selected\": \"已選擇預設設定！\",\n  \"com_endpoint_preset_selected_title\": \"已選取！\",\n  \"com_endpoint_preset_title\": \"預設項目\",\n  \"com_endpoint_presets\": \"預設設定\",\n  \"com_endpoint_presets_clear_warning\": \"您確定要清除所有預設設定嗎？此操作無法復原。\",\n  \"com_endpoint_prompt_cache\": \"使用提示快取\",\n  \"com_endpoint_prompt_prefix\": \"提示起始字串\",\n  \"com_endpoint_prompt_prefix_assistants\": \"提示字首\",\n  \"com_endpoint_prompt_prefix_assistants_placeholder\": \"在助理的主要提示指令之上設定額外的提示指令或上下文。如果為空白，則會被忽略。\",\n  \"com_endpoint_prompt_prefix_placeholder\": \"設定自訂提示或前後文。如果為空則忽略。\",\n  \"com_endpoint_save_as_preset\": \"另存為預設設定\",\n  \"com_endpoint_search\": \"依名稱搜尋選項\",\n  \"com_endpoint_set_custom_name\": \"設定自訂名稱，以便您找到此預設設定\",\n  \"com_endpoint_skip_hover\": \"啟用跳過完成步驟，評估最終答案和生成步驟\",\n  \"com_endpoint_stop\": \"停止序列\",\n  \"com_endpoint_stop_placeholder\": \"以 `Enter` 鍵分隔值\",\n  \"com_endpoint_temperature\": \"溫度\",\n  \"com_endpoint_top_k\": \"Top K\",\n  \"com_endpoint_top_p\": \"Top P\",\n  \"com_endpoint_use_active_assistant\": \"使用活躍助理\",\n  \"com_error_expired_user_key\": \"提供給 {{0}} 的金鑰已於 {{1}} 到期。請提供一個新的金鑰並重試。\",\n  \"com_error_files_dupe\": \"偵測到重複的檔案。\",\n  \"com_error_files_empty\": \"不允許空白檔案。\",\n  \"com_error_files_process\": \"處理檔案時發生錯誤。\",\n  \"com_error_files_unsupported_capability\": \"未啟用支援此檔案類型的功能。\",\n  \"com_error_files_upload\": \"上傳檔案時發生錯誤\",\n  \"com_error_files_upload_canceled\": \"檔案上傳請求已取消。注意：檔案上傳可能仍在處理中，需要手動刪除。\",\n  \"com_error_files_validation\": \"驗證檔案時發生錯誤。\",\n  \"com_error_input_length\": \"最新訊息的字元數過長，已超過字元限制（{{0}}）。請縮短您的訊息內容、在對話參數中調整最大上下文大小，或是建立分支對話以繼續。\",\n  \"com_error_invalid_user_key\": \"提供的金鑰無效。請提供有效的金鑰並重試。\",\n  \"com_error_moderation\": \"您所提交的內容似乎被我們的內容審查系統標記為不符合社群準則。我們無法就此特定主題繼續進行討論。如果您有任何其他問題或想要探討的主題，請編輯您的訊息或開啟新的對話。\",\n  \"com_error_no_base_url\": \"找不到基礎 URL。請提供一個基礎 URL 後再試一次。\",\n  \"com_error_no_user_key\": \"找不到金鑰，請提供金鑰後再試一次。\",\n  \"com_files_filter\": \"篩選檔案...\",\n  \"com_files_no_results\": \"沒有結果。\",\n  \"com_files_number_selected\": \"已選取 {{0}} 個檔案，共 {{1}} 個檔案\",\n  \"com_generated_files\": \"已生成的檔案：\",\n  \"com_hide_examples\": \"隱藏範例\",\n  \"com_nav_account_settings\": \"帳號設定\",\n  \"com_nav_always_make_prod\": \"永遠將新版本設為正式版\",\n  \"com_nav_archive_created_at\": \"建立時間\",\n  \"com_nav_archive_name\": \"名稱\",\n  \"com_nav_archived_chats\": \"封存的對話\",\n  \"com_nav_archived_chats_empty\": \"您沒有任何封存的對話。\",\n  \"com_nav_at_command\": \"@-指令\",\n  \"com_nav_at_command_description\": \"使用「@」指令切換端點、模型和預設值等\",\n  \"com_nav_audio_play_error\": \"播放音訊時發生錯誤：{{0}}\",\n  \"com_nav_audio_process_error\": \"處理音訊時發生錯誤：{{0}}\",\n  \"com_nav_auto_scroll\": \"開啟時自動捲動至最新內容\",\n  \"com_nav_auto_send_prompts\": \"自動傳送提示\",\n  \"com_nav_auto_send_text\": \"自動傳送訊息\",\n  \"com_nav_auto_send_text_disabled\": \"設定為 -1 以停用\",\n  \"com_nav_auto_transcribe_audio\": \"自動轉錄語音\",\n  \"com_nav_automatic_playback\": \"自動播放最新訊息\",\n  \"com_nav_balance\": \"餘額\",\n  \"com_nav_browser\": \"瀏覽器\",\n  \"com_nav_buffer_append_error\": \"音訊串流發生問題，播放可能會中斷。\",\n  \"com_nav_change_picture\": \"更換圖片\",\n  \"com_nav_chat_commands\": \"對話指令\",\n  \"com_nav_chat_commands_info\": \"這些指令是透過在訊息開頭輸入特定字元來啟動的。每個指令都由其專屬的前綴觸發。如果您經常在訊息開頭使用這些字元，可以選擇停用這些指令。\",\n  \"com_nav_chat_direction\": \"對話方向\",\n  \"com_nav_clear_all_chats\": \"清除所有對話\",\n  \"com_nav_clear_cache_confirm_message\": \"您確定要清除快取嗎？\",\n  \"com_nav_clear_conversation\": \"清除對話\",\n  \"com_nav_clear_conversation_confirm_message\": \"您確定要清除所有對話嗎？此操作無法復原。\",\n  \"com_nav_close_sidebar\": \"關閉側邊選單\",\n  \"com_nav_commands\": \"指令\",\n  \"com_nav_confirm_clear\": \"確認清除\",\n  \"com_nav_conversation_mode\": \"對話模式\",\n  \"com_nav_convo_menu_options\": \"對話選單選項\",\n  \"com_nav_db_sensitivity\": \"分貝靈敏度\",\n  \"com_nav_delete_account\": \"刪除帳號\",\n  \"com_nav_delete_account_button\": \"永久刪除我的帳號\",\n  \"com_nav_delete_account_confirm\": \"確定要刪除帳號嗎？\",\n  \"com_nav_delete_account_email_placeholder\": \"請輸入您的帳號電子郵件\",\n  \"com_nav_delete_cache_storage\": \"刪除語音快取儲存空間\",\n  \"com_nav_delete_data_info\": \"所有資料都將被刪除。\",\n  \"com_nav_delete_warning\": \"警告：此操作將永久刪除您的帳號。\",\n  \"com_nav_edge\": \"Edge\",\n  \"com_nav_enable_cache_tts\": \"啟用語音快取\",\n  \"com_nav_enable_cloud_browser_voice\": \"使用雲端語音\",\n  \"com_nav_enabled\": \"已啟用\",\n  \"com_nav_engine\": \"引擎\",\n  \"com_nav_enter_to_send\": \"按 Enter 鍵傳送訊息\",\n  \"com_nav_export\": \"匯出\",\n  \"com_nav_export_all_message_branches\": \"匯出所有訊息分支\",\n  \"com_nav_export_conversation\": \"匯出對話\",\n  \"com_nav_export_filename\": \"檔名\",\n  \"com_nav_export_filename_placeholder\": \"設定檔案名稱\",\n  \"com_nav_export_include_endpoint_options\": \"包含 AI 選項\",\n  \"com_nav_export_recursive\": \"遞迴\",\n  \"com_nav_export_recursive_or_sequential\": \"遞迴還是序列？\",\n  \"com_nav_export_type\": \"類型\",\n  \"com_nav_external\": \"外部\",\n  \"com_nav_font_size\": \"字體大小\",\n  \"com_nav_font_size_base\": \"中\",\n  \"com_nav_font_size_lg\": \"大\",\n  \"com_nav_font_size_sm\": \"小\",\n  \"com_nav_font_size_xl\": \"特大\",\n  \"com_nav_font_size_xs\": \"超小\",\n  \"com_nav_help_faq\": \"說明與常見問題\",\n  \"com_nav_hide_panel\": \"隱藏最右側的面板\",\n  \"com_nav_info_code_artifacts\": \"啟用在對話旁顯示實驗性程式碼內容\",\n  \"com_nav_info_custom_prompt_mode\": \"啟用後，系統將不會包含預設的成品提示詞。在此模式下，所有生成成品的指令都需要手動提供。\",\n  \"com_nav_info_enter_to_send\": \"啟用時，按下 `ENTER` 鍵即可傳送訊息。停用時，按下 Enter 鍵會換行，您需要按下 `CTRL + ENTER` / `⌘ + ENTER` 來傳送訊息。\",\n  \"com_nav_info_fork_change_default\": \"「僅顯示分支訊息」只包含通往所選訊息的直接路徑。「包含相關分支」會加入路徑上的分支。「包含所有從這裡開始」則包含所有相連的訊息和分支。\",\n  \"com_nav_info_fork_split_target_setting\": \"啟用時，系統將根據所選的行為，從目標訊息開始分支到對話中的最新訊息。\",\n  \"com_nav_info_include_shadcnui\": \"啟用後，將包含使用 shadcn/ui 元件的相關說明。shadcn/ui 是一個使用 Radix UI 和 Tailwind CSS 建置的可重複使用元件集。注意：這些說明較為冗長，建議僅在需要告知 LLM 正確的匯入方式和元件使用方法時才啟用。若要了解這些元件的更多資訊，請造訪：https://ui.shadcn.com/\",\n  \"com_nav_info_latex_parsing\": \"啟用時，訊息中的 LaTeX 程式碼將會被轉換為數學方程式。如果您不需要 LaTeX 轉換功能，停用此選項可以改善效能。\",\n  \"com_nav_info_save_draft\": \"啟用後，您在聊天表單中輸入的文字和附件將自動儲存為本地草稿。即使重新載入頁面或切換至其他對話，這些草稿仍會保留。草稿僅儲存在您的裝置上，並會在訊息送出後自動刪除。\",\n  \"com_nav_info_user_name_display\": \"啟用時，每則您發送的訊息上方都會顯示您的使用者名稱。停用時，您的訊息上方只會顯示「您」。\",\n  \"com_nav_lang_arabic\": \"العربية\",\n  \"com_nav_lang_auto\": \"自動偵測\",\n  \"com_nav_lang_brazilian_portuguese\": \"Português Brasileiro\",\n  \"com_nav_lang_chinese\": \"简体中文\",\n  \"com_nav_lang_dutch\": \"Nederlands\",\n  \"com_nav_lang_english\": \"English\",\n  \"com_nav_lang_estonian\": \"Eesti keel\",\n  \"com_nav_lang_finnish\": \"Suomi\",\n  \"com_nav_lang_french\": \"Français \",\n  \"com_nav_lang_german\": \"Deutsch\",\n  \"com_nav_lang_hebrew\": \"עברית\",\n  \"com_nav_lang_indonesia\": \"Indonesia\",\n  \"com_nav_lang_italian\": \"Italiano\",\n  \"com_nav_lang_japanese\": \"日本語\",\n  \"com_nav_lang_korean\": \"한국어\",\n  \"com_nav_lang_polish\": \"Polski\",\n  \"com_nav_lang_portuguese\": \"Português\",\n  \"com_nav_lang_russian\": \"Русский\",\n  \"com_nav_lang_spanish\": \"Español\",\n  \"com_nav_lang_swedish\": \"Svenska\",\n  \"com_nav_lang_traditional_chinese\": \"繁體中文\",\n  \"com_nav_lang_turkish\": \"Türkçe\",\n  \"com_nav_lang_vietnamese\": \"Tiếng Việt\",\n  \"com_nav_language\": \"語言\",\n  \"com_nav_latex_parsing\": \"解析訊息中的 LaTeX 內容（可能影響效能）\",\n  \"com_nav_log_out\": \"登出\",\n  \"com_nav_long_audio_warning\": \"較長的文字需要較多處理時間\",\n  \"com_nav_maximize_chat_space\": \"最大化聊天視窗\",\n  \"com_nav_modular_chat\": \"允許在對話中途切換端點\",\n  \"com_nav_my_files\": \"我的檔案\",\n  \"com_nav_no_search_results\": \"找不到搜尋結果\",\n  \"com_nav_not_supported\": \"不支援\",\n  \"com_nav_open_sidebar\": \"開啟側邊選單\",\n  \"com_nav_playback_rate\": \"音訊播放速率\",\n  \"com_nav_plugin_auth_error\": \"嘗試驗證此外掛時發生錯誤。請重試。\",\n  \"com_nav_plugin_install\": \"安裝\",\n  \"com_nav_plugin_search\": \"搜尋外掛\",\n  \"com_nav_plugin_store\": \"外掛商店\",\n  \"com_nav_plugin_uninstall\": \"解除安裝\",\n  \"com_nav_plus_command\": \"指令選項\",\n  \"com_nav_plus_command_description\": \"切換「+」指令以新增多重回應設定\",\n  \"com_nav_profile_picture\": \"個人頭像\",\n  \"com_nav_save_drafts\": \"儲存本機草稿\",\n  \"com_nav_search_placeholder\": \"搜尋訊息\",\n  \"com_nav_send_message\": \"傳送訊息\",\n  \"com_nav_setting_account\": \"帳號\",\n  \"com_nav_setting_beta\": \"測試功能\",\n  \"com_nav_setting_chat\": \"聊天\",\n  \"com_nav_setting_data\": \"資料控制\",\n  \"com_nav_setting_general\": \"一般\",\n  \"com_nav_setting_speech\": \"語音\",\n  \"com_nav_settings\": \"設定\",\n  \"com_nav_shared_links\": \"共享連結\",\n  \"com_nav_show_code\": \"一律顯示使用程式碼解譯器時的程式碼\",\n  \"com_nav_slash_command\": \"/指令\",\n  \"com_nav_slash_command_description\": \"使用鍵盤按下 \\\"/\\\" 快速選擇提示詞\",\n  \"com_nav_source_buffer_error\": \"設定音訊播放時發生錯誤。請重新整理頁面。\",\n  \"com_nav_speech_cancel_error\": \"無法停止音訊播放。您可能需要重新整理頁面。\",\n  \"com_nav_speech_to_text\": \"語音轉文字\",\n  \"com_nav_stop_generating\": \"停止產生\",\n  \"com_nav_text_to_speech\": \"文字轉語音\",\n  \"com_nav_theme\": \"主題\",\n  \"com_nav_theme_dark\": \"深色\",\n  \"com_nav_theme_light\": \"淺色\",\n  \"com_nav_theme_system\": \"跟隨系統設定\",\n  \"com_nav_tool_dialog\": \"AI 工具\",\n  \"com_nav_tool_dialog_agents\": \"AI 代理工具\",\n  \"com_nav_tool_dialog_description\": \"必須儲存 Assistant 才能保留工具選擇。\",\n  \"com_nav_tool_remove\": \"移除\",\n  \"com_nav_tool_search\": \"搜尋工具\",\n  \"com_nav_tts_init_error\": \"文字轉語音初始化失敗：{{0}}\",\n  \"com_nav_tts_unsupported_error\": \"此瀏覽器不支援所選擇的文字轉語音引擎。\",\n  \"com_nav_user\": \"使用者\",\n  \"com_nav_user_msg_markdown\": \"以 Markdown 格式呈現使用者訊息\",\n  \"com_nav_user_name_display\": \"在訊息中顯示使用者名稱\",\n  \"com_nav_voice_select\": \"語音\",\n  \"com_nav_voices_fetch_error\": \"無法取得語音選項。請檢查您的網路連線。\",\n  \"com_nav_welcome_agent\": \"請選擇代理\",\n  \"com_nav_welcome_assistant\": \"請選擇一位助理\",\n  \"com_nav_welcome_message\": \"您今天有什麼需要我協助的嗎？\",\n  \"com_show_agent_settings\": \"顯示代理設定\",\n  \"com_show_completion_settings\": \"顯示完成設定\",\n  \"com_show_examples\": \"顯示範例\",\n  \"com_sidepanel_agent_builder\": \"代理建構器\",\n  \"com_sidepanel_assistant_builder\": \"助理建構器\",\n  \"com_sidepanel_attach_files\": \"附加檔案\",\n  \"com_sidepanel_conversation_tags\": \"書籤\",\n  \"com_sidepanel_hide_panel\": \"隱藏側邊選單\",\n  \"com_sidepanel_manage_files\": \"管理檔案\",\n  \"com_sidepanel_parameters\": \"參數\",\n  \"com_sidepanel_select_agent\": \"選擇代理\",\n  \"com_sidepanel_select_assistant\": \"選擇一位助理\",\n  \"com_ui_accept\": \"我接受\",\n  \"com_ui_add\": \"新增\",\n  \"com_ui_add_model_preset\": \"新增模型或預設設定以取得額外回應\",\n  \"com_ui_add_multi_conversation\": \"新增多重對話\",\n  \"com_ui_admin\": \"管理員\",\n  \"com_ui_admin_access_warning\": \"停用管理員對此功能的存取權限可能會導致意外的介面問題，需要重新整理頁面。若儲存此設定，唯一的還原方式是透過 librechat.yaml 設定檔中的介面設定，這會影響所有角色。\",\n  \"com_ui_admin_settings\": \"管理員設定\",\n  \"com_ui_advanced\": \"進階\",\n  \"com_ui_agent\": \"助理\",\n  \"com_ui_agent_delete_error\": \"刪除助理時發生錯誤\",\n  \"com_ui_agent_deleted\": \"已成功刪除助理\",\n  \"com_ui_agent_duplicate_error\": \"複製助理時發生錯誤\",\n  \"com_ui_agent_duplicated\": \"已成功複製助理\",\n  \"com_ui_agent_editing_allowed\": \"其他使用者已可編輯此助理\",\n  \"com_ui_agents\": \"助理\",\n  \"com_ui_agents_allow_create\": \"允許建立代理\",\n  \"com_ui_agents_allow_share_global\": \"允許與所有使用者共享助理\",\n  \"com_ui_agents_allow_use\": \"允許使用代理\",\n  \"com_ui_all\": \"全部\",\n  \"com_ui_all_proper\": \"全部\",\n  \"com_ui_archive\": \"封存\",\n  \"com_ui_archive_error\": \"封存對話時發生錯誤\",\n  \"com_ui_artifact_click\": \"點擊開啟\",\n  \"com_ui_artifacts\": \"成品\",\n  \"com_ui_artifacts_toggle\": \"切換成品介面\",\n  \"com_ui_ascending\": \"遞增\",\n  \"com_ui_assistant\": \"助理\",\n  \"com_ui_assistant_delete_error\": \"刪除助理時發生錯誤\",\n  \"com_ui_assistant_deleted\": \"已成功刪除助理\",\n  \"com_ui_assistants\": \"助理\",\n  \"com_ui_assistants_output\": \"助理輸出\",\n  \"com_ui_attach_error\": \"無法附加檔案。請建立或選擇對話，或嘗試重新整理頁面。\",\n  \"com_ui_attach_error_openai\": \"無法將助理檔案附加至其他端點\",\n  \"com_ui_attach_error_size\": \"檔案大小超過端點的限制\",\n  \"com_ui_attach_error_type\": \"不支援的檔案類型，無法上傳至端點：\",\n  \"com_ui_attach_warn_endpoint\": \"非相容工具的非助理檔案可能會被忽略\",\n  \"com_ui_attachment\": \"附件\",\n  \"com_ui_authentication\": \"驗證\",\n  \"com_ui_avatar\": \"大頭照\",\n  \"com_ui_back_to_chat\": \"返回對話\",\n  \"com_ui_back_to_prompts\": \"返回提示\",\n  \"com_ui_bookmark_delete_confirm\": \"你確定要刪除這個書籤嗎？\",\n  \"com_ui_bookmarks\": \"書籤\",\n  \"com_ui_bookmarks_add\": \"新增書籤\",\n  \"com_ui_bookmarks_add_to_conversation\": \"添加到當前對話\",\n  \"com_ui_bookmarks_count\": \"計數\",\n  \"com_ui_bookmarks_create_error\": \"創建書籤時出錯\",\n  \"com_ui_bookmarks_create_exists\": \"此書籤已存在\",\n  \"com_ui_bookmarks_create_success\": \"書籤創建成功\",\n  \"com_ui_bookmarks_delete\": \"刪除書籤\",\n  \"com_ui_bookmarks_delete_error\": \"刪除書籤時出錯\",\n  \"com_ui_bookmarks_delete_success\": \"書籤刪除成功\",\n  \"com_ui_bookmarks_description\": \"描述\",\n  \"com_ui_bookmarks_edit\": \"編輯書籤\",\n  \"com_ui_bookmarks_filter\": \"搜尋書籤...\",\n  \"com_ui_bookmarks_new\": \"新書籤\",\n  \"com_ui_bookmarks_title\": \"標題\",\n  \"com_ui_bookmarks_update_error\": \"更新書籤時出錯\",\n  \"com_ui_bookmarks_update_success\": \"書籤更新成功\",\n  \"com_ui_cancel\": \"取消\",\n  \"com_ui_chat\": \"對話\",\n  \"com_ui_chat_history\": \"對話紀錄\",\n  \"com_ui_clear\": \"清除\",\n  \"com_ui_clear_all\": \"清除全部\",\n  \"com_ui_close\": \"關閉\",\n  \"com_ui_code\": \"程式碼\",\n  \"com_ui_chart\": \"圖表\",\n  \"com_ui_collapse_chat\": \"收合對話\",\n  \"com_ui_command_placeholder\": \"選填：輸入指令，若未填寫將使用名稱\",\n  \"com_ui_command_usage_placeholder\": \"透過指令或名稱選擇提示\",\n  \"com_ui_confirm_action\": \"確認操作\",\n  \"com_ui_context\": \"情境\",\n  \"com_ui_continue\": \"繼續\",\n  \"com_ui_controls\": \"控制項\",\n  \"com_ui_copied\": \"已複製！\",\n  \"com_ui_copied_to_clipboard\": \"已複製到剪貼簿\",\n  \"com_ui_copy_code\": \"複製程式碼\",\n  \"com_ui_copy_link\": \"複製連結\",\n  \"com_ui_copy_to_clipboard\": \"複製到剪貼簿\",\n  \"com_ui_create\": \"建立\",\n  \"com_ui_create_link\": \"建立連結\",\n  \"com_ui_create_prompt\": \"建立提示\",\n  \"com_ui_custom_prompt_mode\": \"自訂提示模式\",\n  \"com_ui_dashboard\": \"儀表板\",\n  \"com_ui_date\": \"日期\",\n  \"com_ui_date_april\": \"四月\",\n  \"com_ui_date_august\": \"八月\",\n  \"com_ui_date_december\": \"十二月\",\n  \"com_ui_date_february\": \"二月\",\n  \"com_ui_date_january\": \"一月\",\n  \"com_ui_date_july\": \"七月\",\n  \"com_ui_date_june\": \"六月\",\n  \"com_ui_date_march\": \"三月\",\n  \"com_ui_date_may\": \"五月\",\n  \"com_ui_date_november\": \"十一月\",\n  \"com_ui_date_october\": \"十月\",\n  \"com_ui_date_previous_30_days\": \"過去 30 天\",\n  \"com_ui_date_previous_7_days\": \"過去 7 天\",\n  \"com_ui_date_september\": \"九月\",\n  \"com_ui_date_today\": \"今天\",\n  \"com_ui_date_yesterday\": \"昨天\",\n  \"com_ui_decline\": \"我不同意\",\n  \"com_ui_delete\": \"刪除\",\n  \"com_ui_delete_action\": \"刪除動作\",\n  \"com_ui_delete_action_confirm\": \"您確定要刪除這個操作嗎？\",\n  \"com_ui_delete_agent_confirm\": \"您確定要刪除這個代理嗎？\",\n  \"com_ui_delete_assistant_confirm\": \"您確定要刪除這個助理嗎？此操作無法復原。\",\n  \"com_ui_delete_confirm\": \"這將刪除\",\n  \"com_ui_delete_confirm_prompt_version_var\": \"這將刪除「{{0}}」的所選版本。如果沒有其他版本存在，該提示將被刪除。\",\n  \"com_ui_delete_conversation\": \"刪除對話？\",\n  \"com_ui_delete_prompt\": \"刪除提示？\",\n  \"com_ui_delete_shared_link\": \"刪除共享連結？\",\n  \"com_ui_delete_tool\": \"刪除工具\",\n  \"com_ui_delete_tool_confirm\": \"您確定要刪除這個工具嗎？\",\n  \"com_ui_descending\": \"遞減\",\n  \"com_ui_description\": \"描述\",\n  \"com_ui_description_placeholder\": \"選填：輸入要顯示的提示描述\",\n  \"com_ui_download_error\": \"下載檔案時發生錯誤。該檔案可能已被刪除。\",\n  \"com_ui_dropdown_variables\": \"下拉式變數：\",\n  \"com_ui_dropdown_variables_info\": \"為您的提示建立自訂下拉選單：`{{variable_name:選項1|選項2|選項3}}`\",\n  \"com_ui_duplicate\": \"複製\",\n  \"com_ui_duplicated\": \"已複製\",\n  \"com_ui_duplication_error\": \"複製對話時發生錯誤\",\n  \"com_ui_duplication_processing\": \"正在複製對話...\",\n  \"com_ui_duplication_success\": \"已成功複製對話\",\n  \"com_app_center_welcome\": \"探索BISHENG的智能體\",\n  \"com_app_center_description\": \"您可以在這裡選擇需要的智能體來進行生產與工作～\",\n  \"com_app_frequently_used\": \"常用智能體\",\n  \"com_app_uncategorized\": \"未分類\",\n  \"com_app_common\": \"常用\",\n  \"com_message_content_copied\": \"內容已複製\",\n  \"com_message_month_day_time\": \"月 dd 日 HH:mm\",\n  \"com_ui_edit\": \"編輯\",\n  \"com_ui_endpoint\": \"端點\",\n  \"com_ui_endpoint_menu\": \"語言模型端點選單\",\n  \"com_ui_endpoints_available\": \"可用選項\",\n  \"com_ui_enter\": \"輸入\",\n  \"com_ui_enter_api_key\": \"輸入 API 金鑰\",\n  \"com_ui_enter_openapi_schema\": \"在此輸入您的 OpenAPI 結構描述\",\n  \"com_ui_enter_var\": \"輸入 {{0}}\",\n  \"com_ui_error\": \"錯誤\",\n  \"com_ui_error_connection\": \"連線至伺服器時發生錯誤，請重新整理頁面。\",\n  \"com_ui_error_save_admin_settings\": \"儲存管理員設定時發生錯誤\",\n  \"com_ui_examples\": \"範例\",\n  \"com_ui_export_convo_modal\": \"匯出對話視窗\",\n  \"com_ui_field_required\": \"此欄位為必填\",\n  \"com_ui_filter_prompts_name\": \"依名稱篩選提示\",\n  \"com_ui_fork\": \"分支\",\n  \"com_ui_fork_all_target\": \"包含所有從這裡開始\",\n  \"com_ui_fork_branches\": \"包含相關分支\",\n  \"com_ui_fork_change_default\": \"預設分支選項\",\n  \"com_ui_fork_default\": \"使用預設分支選項\",\n  \"com_ui_fork_error\": \"分支對話時發生錯誤\",\n  \"com_ui_fork_from_message\": \"選擇分支選項\",\n  \"com_ui_fork_info_1\": \"使用此設定來分支訊息，以獲得所需的行為。\",\n  \"com_ui_fork_info_2\": \"「分支」是指從目前對話中的特定訊息開始/結束，根據所選的選項建立新對話的副本。\",\n  \"com_ui_fork_info_3\": \"「目標訊息」指的是此彈出視窗所開啟的訊息，或者如果您勾選「{{0}}」，則是對話中最新的訊息。\",\n  \"com_ui_fork_info_branches\": \"此選項會分叉可見的訊息，以及相關的分支；換句話說，它包含了通往目標訊息的直接路徑，包括路徑上的所有分支。\",\n  \"com_ui_fork_info_remember\": \"勾選此項目可記住您選擇的選項，以便日後分支對話時更快速地套用您偏好的設定。\",\n  \"com_ui_fork_info_start\": \"如果勾選，則從此訊息開始，根據上方選擇的行為，將會分支出一個新的對話直到最新的訊息。\",\n  \"com_ui_fork_info_target\": \"這個選項會分叉所有導向目標訊息的訊息，包括其鄰近訊息；換句話說，不論是否可見或在同一路徑上，所有訊息分支都會包含在內。\",\n  \"com_ui_fork_info_visible\": \"此選項只會分支顯示的訊息，換句話說，只會顯示直接通往目標訊息的路徑，而不會顯示任何分支。\",\n  \"com_ui_fork_processing\": \"分支對話中...\",\n  \"com_ui_fork_remember\": \"記住\",\n  \"com_ui_fork_remember_checked\": \"您的選擇將在使用後被記住。您可以隨時在設定中更改。\",\n  \"com_ui_fork_split_target\": \"在此分叉\",\n  \"com_ui_fork_split_target_setting\": \"預設從目標訊息開始分支\",\n  \"com_ui_fork_success\": \"已成功分支對話\",\n  \"com_ui_fork_visible\": \"僅顯示分支訊息\",\n  \"com_ui_go_to_conversation\": \"前往對話\",\n  \"com_ui_happy_birthday\": \"這是我的第一個生日！\",\n  \"com_ui_host\": \"主機\",\n  \"com_ui_image_gen\": \"影像生成\",\n  \"com_ui_import_conversation_error\": \"匯入對話時發生錯誤\",\n  \"com_ui_import_conversation_file_type_error\": \"不支援的匯入檔案類型\",\n  \"com_ui_import_conversation_info\": \"從 JSON 文件匯入對話\",\n  \"com_ui_import_conversation_success\": \"對話匯入成功\",\n  \"com_ui_include_shadcnui\": \"包含 shadcn/ui 元件說明\",\n  \"com_ui_input\": \"輸入\",\n  \"com_ui_instructions\": \"說明\",\n  \"com_ui_latest_footer\": \"讓每個人都能使用 AI\",\n  \"com_ui_librechat_code_api_key\": \"取得你的 LibreChat 程式碼解譯器 API 金鑰\",\n  \"com_ui_librechat_code_api_subtitle\": \"安全性高。多語言支援。檔案輸入/輸出。\",\n  \"com_ui_librechat_code_api_title\": \"執行 AI 程式碼\",\n  \"com_ui_llm_menu\": \"LLM 選單\",\n  \"com_ui_llms_available\": \"可用的 LLM 模型\",\n  \"com_ui_locked\": \"已鎖定\",\n  \"com_ui_logo\": \"{{0}} 標誌\",\n  \"com_ui_manage\": \"管理\",\n  \"com_ui_max_tags\": \"允許的最大數量為 {{0}}，已使用最新值。\",\n  \"com_ui_mention\": \"提及端點、助理或預設設定以快速切換\",\n  \"com_ui_min_tags\": \"無法再移除更多值，至少需要 {{0}} 個。\",\n  \"com_ui_model\": \"模型\",\n  \"com_ui_model_parameters\": \"模型參數\",\n  \"com_ui_more_info\": \"更多資訊\",\n  \"com_ui_my_prompts\": \"我的提示\",\n  \"com_ui_name\": \"名稱\",\n  \"com_ui_new_chat\": \"新對話\",\n  \"com_ui_next\": \"下一個\",\n  \"com_ui_no\": \"否\",\n  \"com_ui_no_bookmarks\": \"看來您還沒有任何書籤。請點選對話並新增一個書籤\",\n  \"com_ui_no_category\": \"無分類\",\n  \"com_ui_no_changes\": \"沒有需要更新的變更\",\n  \"com_ui_no_terms_content\": \"沒有條款和條件內容顯示\",\n  \"com_ui_none_selected\": \"未選取任何項目\",\n  \"com_ui_nothing_found\": \"找不到任何內容\",\n  \"com_ui_of\": \"的\",\n  \"com_ui_off\": \"關閉\",\n  \"com_ui_on\": \"開啟\",\n  \"com_ui_page\": \"頁面\",\n  \"com_ui_prev\": \"上一個\",\n  \"com_ui_preview\": \"預覽\",\n  \"com_ui_privacy_policy\": \"隱私權政策\",\n  \"com_ui_privacy_policy_url\": \"隱私權政策網址\",\n  \"com_ui_prompt\": \"提示\",\n  \"com_ui_prompt_already_shared_to_all\": \"此提示已與所有使用者共享\",\n  \"com_ui_prompt_name\": \"提示名稱\",\n  \"com_ui_prompt_name_required\": \"提示名稱為必填\",\n  \"com_ui_prompt_preview_not_shared\": \"作者尚未開放此提示的協作權限。\",\n  \"com_ui_prompt_text\": \"文字\",\n  \"com_ui_prompt_text_required\": \"必須輸入文字\",\n  \"com_ui_prompt_update_error\": \"更新提示時發生錯誤\",\n  \"com_ui_prompts\": \"提示\",\n  \"com_ui_prompts_allow_create\": \"允許建立提示\",\n  \"com_ui_prompts_allow_share_global\": \"允許與所有使用者共享提示詞\",\n  \"com_ui_prompts_allow_use\": \"允許使用提示\",\n  \"com_ui_provider\": \"提供者\",\n  \"com_ui_read_aloud\": \"朗讀\",\n  \"com_ui_regenerate\": \"重新生成\",\n  \"com_ui_region\": \"地區\",\n  \"com_ui_rename\": \"重新命名\",\n  \"com_ui_reset_var\": \"重設 {{0}}\",\n  \"com_ui_result\": \"結果\",\n  \"com_ui_revoke\": \"撤銷\",\n  \"com_ui_revoke_info\": \"撤銷所有使用者提供的憑證。\",\n  \"com_ui_revoke_key_confirm\": \"您確定要撤銷這個金鑰嗎？\",\n  \"com_ui_revoke_key_endpoint\": \"撤銷 {{0}} 的金鑰\",\n  \"com_ui_revoke_keys\": \"撤銷金鑰\",\n  \"com_ui_revoke_keys_confirm\": \"您確定要撤銷所有金鑰嗎？\",\n  \"com_ui_role_select\": \"角色\",\n  \"com_ui_run_code\": \"執行程式碼\",\n  \"com_ui_run_code_error\": \"執行程式碼時發生錯誤\",\n  \"com_ui_save\": \"儲存\",\n  \"com_ui_save_submit\": \"儲存並送出\",\n  \"com_ui_saved\": \"已儲存！\",\n  \"com_ui_schema\": \"綱要\",\n  \"com_ui_select\": \"選擇\",\n  \"com_ui_select_file\": \"選擇檔案\",\n  \"com_ui_select_model\": \"選擇模型\",\n  \"com_ui_select_provider\": \"選擇供應商\",\n  \"com_ui_select_provider_first\": \"請先選擇提供者\",\n  \"com_ui_select_region\": \"選擇地區\",\n  \"com_ui_select_search_model\": \"依名稱搜尋模型\",\n  \"com_ui_select_search_plugin\": \"依名稱搜尋外掛程式\",\n  \"com_ui_select_search_provider\": \"依名稱搜尋供應商\",\n  \"com_ui_select_search_region\": \"依名稱搜尋區域\",\n  \"com_ui_share\": \"分享\",\n  \"no_text_recognized\":\"语音识别不可用，请联系管理员\",\n  \"com_ui_share_create_message\": \"您的姓名以及您在共享後新增的任何訊息都會保密。\",\n  \"com_ui_share_delete_error\": \"刪除共享連結時發生錯誤。\",\n  \"com_ui_share_error\": \"分享聊天連結時發生錯誤\",\n  \"com_ui_share_link_to_chat\": \"分享連結到聊天\",\n  \"com_ui_share_to_all_users\": \"分享給所有使用者\",\n  \"com_ui_share_update_message\": \"您的姓名、自訂提示指令以及您在共享後新增的任何訊息都會保密。\",\n  \"com_ui_share_var\": \"分享{{0}}\",\n  \"com_ui_shared_link_not_found\": \"未找到共享連結\",\n  \"com_ui_shared_prompts\": \"共享提示\",\n  \"com_ui_show_all\": \"顯示全部\",\n  \"com_ui_simple\": \"簡單\",\n  \"com_ui_size\": \"大小\",\n  \"com_ui_special_variables\": \"特殊變數：\",\n  \"com_ui_special_variables_info\": \"使用 `{{current_date}}` 可顯示目前日期，使用 `{{current_user}}` 可顯示您的帳戶名稱。\",\n  \"com_ui_speech_while_submitting\": \"正在產生回應時無法送出語音\",\n  \"com_ui_stop\": \"停止\",\n  \"com_ui_storage\": \"儲存空間\",\n  \"com_ui_submit\": \"送出\",\n  \"com_ui_terms_and_conditions\": \"條款和條件\",\n  \"com_ui_terms_of_service\": \"服務條款\",\n  \"com_ui_tools\": \"工具\",\n  \"com_ui_unarchive\": \"取消封存\",\n  \"com_ui_unarchive_error\": \"取消封存對話時發生錯誤\",\n  \"com_ui_unknown\": \"未知\",\n  \"com_ui_update\": \"更新\",\n  \"com_ui_upload\": \"上傳\",\n  \"com_ui_upload_code_files\": \"上傳程式碼解譯器檔案\",\n  \"com_ui_upload_delay\": \"正在上傳 \\\"{{0}}\\\" 的過程比預期花費更多時間。請耐心等候檔案完成索引以供檢索。\",\n  \"com_ui_upload_error\": \"檔案上傳時發生錯誤\",\n  \"com_ui_upload_file_search\": \"上傳檔案以供搜尋\",\n  \"com_ui_upload_files\": \"上傳檔案\",\n  \"com_ui_upload_image\": \"上傳圖片\",\n  \"com_ui_upload_image_input\": \"上傳圖片\",\n  \"com_ui_upload_invalid\": \"上傳的檔案無效。必須是不超過限制的圖片檔\",\n  \"com_ui_upload_invalid_var\": \"上傳的檔案無效。必須是不超過 {{0}} MB 的圖片檔案\",\n  \"com_ui_upload_success\": \"檔案上傳成功\",\n  \"com_ui_upload_type\": \"選擇上傳類型\",\n  \"com_ui_use_micrphone\": \"使用麥克風\",\n  \"com_ui_use_prompt\": \"使用提示\",\n  \"com_ui_variables\": \"變數\",\n  \"com_ui_variables_info\": \"在文字中使用雙大括號來建立變數，例如 `{{example variable}}`，以便在使用提示時填入。\",\n  \"com_ui_version_var\": \"版本 {{0}}\",\n  \"com_ui_versions\": \"版本\",\n  \"com_ui_yes\": \"是\",\n  \"com_ui_zoom\": \"縮放\",\n  \"com_user_message\": \"您\",\n  \"com_warning_resubmit_unsupported\": \"此端點不支援重新送出 AI 訊息。\"\n}"
  },
  {
    "path": "src/frontend/client/src/main.jsx",
    "content": "import 'regenerator-runtime/runtime';\nimport { createRoot } from 'react-dom/client';\nimport './locales/i18n';\nimport App from './App';\nimport './style.css';\nimport './mobile.css';\nimport './vditor.css';\nimport { ApiErrorBoundaryProvider } from './hooks/ApiErrorBoundaryContext';\n\nconst container = document.getElementById('root');\nconst root = createRoot(container);\n\nroot.render(\n  <ApiErrorBoundaryProvider>\n    <App />\n  </ApiErrorBoundaryProvider>,\n);\n"
  },
  {
    "path": "src/frontend/client/src/markdown.css",
    "content": ".bs-mkdown h1 {\n    font-size: 24px;\n}\n\n.bs-mkdown h2 {\n    margin: 0;\n    font-size: 20px;\n}\n\n.bs-mkdown h3 {\n    margin: 0;\n    font-size: 16px;\n}\n\n.bs-mkdown h4 {\n    margin: 0;\n    font-size: 16px;\n}\n\n.bs-mkdown h5 {\n    font-size: 16px;\n}\n\n.bs-mkdown h6 {\n    font-size: 14px;\n}\n\n.bs-mkdown ol,\n.bs-mkdown ul {\n    white-space: normal !important;\n}\n\n.bs-mkdown {\n    color: var(--tw-prose-body);\n}\n\n:root .bs-mkdown {\n    --mk-bc: 215 28% 17%;\n    --tw-prose-body: hsl(var(--mk-bc) / 0.8);\n    --tw-prose-headings: hsl(var(--mk-bc));\n    --tw-prose-lead: hsl(var(--mk-bc));\n    --tw-prose-links: hsl(var(--mk-bc));\n    --tw-prose-bold: hsl(var(--mk-bc));\n    --tw-prose-counters: hsl(var(--mk-bc));\n    --tw-prose-bullets: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-hr: hsl(var(--mk-bc) / 0.2);\n    --tw-prose-quotes: hsl(var(--mk-bc));\n    --tw-prose-quote-borders: hsl(var(--mk-bc) / 0.2);\n    --tw-prose-captions: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-code: hsl(var(--mk-bc));\n    --tw-prose-pre-code: hsl(var(--nc));\n    --tw-prose-pre-bg: hsl(var(--n));\n    --tw-prose-th-borders: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-td-borders: hsl(var(--mk-bc) / 0.2);\n}\n\n.dark .bs-mkdown {\n    --mk-bc: 0 0% 100%;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"] *)) {\n    padding: 2px 8px;\n    border-radius: var(--rounded-badge);\n}\n\n.bs-mkdown code:after,\n.bs-mkdown code:before {\n    content: none;\n}\n\n.bs-mkdown pre code {\n    border-radius: 0;\n    padding: 0;\n}\n\n.bs-mkdown :where(tbody tr, thead):not(:where([class~=\"not-prose\"] *)) {\n    border-bottom-color: hsl(var(--mk-bc) / 20%);\n}\n\n.bs-mkdown :where(p):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.4em;\n    margin-bottom: 0.4em;\n}\n\n.bs-mkdown :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-lead);\n    font-size: 1.25em;\n    line-height: 1.6;\n    margin-top: 1.2em;\n    margin-bottom: 1.2em;\n}\n\n.bs-mkdown :where(a):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-links);\n    text-decoration: underline;\n    font-weight: 500;\n}\n\n.bs-mkdown :where(strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-bold);\n    font-weight: 600;\n}\n\n/* 暗黑模式下<strong>标签字体颜色 */\n.dark .bs-mkdown :where(strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: white;\n}\n\n.bs-mkdown :where(a strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(blockquote strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(thead th strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(ol):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: decimal;\n    margin-top: .4em;\n    margin-bottom: .4em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"A\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"a\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-roman;\n}\n\n.bs-mkdown :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-roman;\n}\n\n.bs-mkdown :where(ol[type=\"I\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-roman;\n}\n\n.bs-mkdown :where(ol[type=\"i\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-roman;\n}\n\n.bs-mkdown :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: decimal;\n}\n\n.bs-mkdown :where(ul):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: disc;\n    margin-top: 1em;\n    margin-bottom: 1em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(ol > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::marker {\n    font-weight: 400;\n    color: var(--tw-prose-counters);\n}\n\n.bs-mkdown :where(ul > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::marker {\n    color: var(--tw-prose-bullets);\n}\n\n.bs-mkdown :where(dt):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(hr):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-color: var(--tw-prose-hr);\n    border-top-width: 1px;\n    margin-top: 3em;\n    margin-bottom: 3em;\n}\n\n.bs-mkdown :where(blockquote):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 500;\n    font-style: italic;\n    color: var(--tw-prose-quotes);\n    border-left-width: 0.25rem;\n    border-left-color: var(--tw-prose-quote-borders);\n    quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n    margin-top: 1.6em;\n    margin-bottom: 1.6em;\n    padding-left: 1em;\n}\n\n.bs-mkdown :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: open-quote;\n}\n\n.bs-mkdown :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: close-quote;\n}\n\n.bs-mkdown :where(h1):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 800;\n    font-size: 2.25em;\n    margin-top: 0;\n    margin-bottom: 0.8888889em;\n    line-height: 1.1111111;\n}\n\n.bs-mkdown :where(h1 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 900;\n    color: inherit;\n}\n\n.bs-mkdown :where(h2):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 700;\n    font-size: 1.5em;\n    margin-top: 2em;\n    margin-bottom: 1em;\n    line-height: 1.3333333;\n}\n\n.bs-mkdown :where(h2 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 800;\n    color: inherit;\n}\n\n.bs-mkdown :where(h3):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    font-size: 1.25em;\n    margin-top: 1.6em;\n    margin-bottom: 0.6em;\n    line-height: 1.6;\n}\n\n.bs-mkdown :where(h3 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 700;\n    color: inherit;\n}\n\n.bs-mkdown :where(h4):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    margin-top: 1.5em;\n    margin-bottom: 0.5em;\n    line-height: 1.5;\n}\n\n.bs-mkdown :where(h4 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 700;\n    color: inherit;\n}\n\n.bs-mkdown :where(img):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(picture):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    display: block;\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(kbd):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 500;\n    font-family: inherit;\n    color: var(--tw-prose-kbd);\n    box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);\n    font-size: 0.875em;\n    border-radius: 0.3125rem;\n    padding-top: 0.1875em;\n    padding-right: 0.375em;\n    padding-bottom: 0.1875em;\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-code);\n    font-weight: 600;\n    font-size: 0.875em;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: \"`\";\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: \"`\";\n}\n\n.bs-mkdown :where(a code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(h1 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(h2 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n    font-size: 0.875em;\n}\n\n.bs-mkdown :where(h3 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n    font-size: 0.9em;\n}\n\n.bs-mkdown :where(h4 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(blockquote code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(thead th code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(pre):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-pre-code);\n    background-color: var(--tw-prose-pre-bg);\n    overflow-x: auto;\n    font-weight: 400;\n    font-size: 0.875em;\n    line-height: 1.7142857;\n    margin-top: 1.7142857em;\n    margin-bottom: 1.7142857em;\n    border-radius: 0.375rem;\n    padding-top: 0.8571429em;\n    padding-right: 1.1428571em;\n    padding-bottom: 0.8571429em;\n    padding-left: 1.1428571em;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    background-color: transparent;\n    border-width: 0;\n    border-radius: 0;\n    padding: 0;\n    font-weight: inherit;\n    color: inherit;\n    font-size: inherit;\n    font-family: inherit;\n    line-height: inherit;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: none;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: none;\n}\n\n.bs-mkdown :where(table):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    width: 100%;\n    table-layout: auto;\n    text-align: left;\n    margin-top: 2em;\n    margin-bottom: 2em;\n    font-size: 0.875em;\n    line-height: 1.7142857;\n}\n\n.bs-mkdown :where(thead):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 1px;\n    border-bottom-color: var(--tw-prose-th-borders);\n}\n\n.bs-mkdown :where(thead th):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    vertical-align: bottom;\n    padding-right: 0.5714286em;\n    padding-bottom: 0.5714286em;\n    padding-left: 0.5714286em;\n}\n\n.bs-mkdown :where(tbody tr):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 1px;\n    border-bottom-color: var(--tw-prose-td-borders);\n}\n\n.bs-mkdown :where(tbody tr:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 0;\n}\n\n.bs-mkdown :where(tbody td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    vertical-align: baseline;\n}\n\n.bs-mkdown :where(tfoot):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-top-width: 1px;\n    border-top-color: var(--tw-prose-th-borders);\n}\n\n.bs-mkdown :where(tfoot td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    vertical-align: top;\n}\n\n.bs-mkdown :where(figure > *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n    margin-bottom: 0;\n}\n\n.bs-mkdown :where(figcaption):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-captions);\n    font-size: 0.875em;\n    line-height: 1.4285714;\n    margin-top: 0.8571429em;\n}\n\n.bs-mkdown {\n    --tw-prose-body: #374151;\n    --tw-prose-headings: #111827;\n    --tw-prose-lead: #4b5563;\n    --tw-prose-links: #111827;\n    --tw-prose-bold: #111827;\n    --tw-prose-counters: #6b7280;\n    --tw-prose-bullets: #d1d5db;\n    --tw-prose-hr: #e5e7eb;\n    --tw-prose-quotes: #111827;\n    --tw-prose-quote-borders: #e5e7eb;\n    --tw-prose-captions: #6b7280;\n    --tw-prose-kbd: #111827;\n    --tw-prose-kbd-shadows: 17 24 39;\n    --tw-prose-code: #111827;\n    --tw-prose-pre-code: #e5e7eb;\n    --tw-prose-pre-bg: #1f2937;\n    --tw-prose-th-borders: #d1d5db;\n    --tw-prose-td-borders: #e5e7eb;\n    --tw-prose-invert-body: #d1d5db;\n    --tw-prose-invert-headings: #fff;\n    --tw-prose-invert-lead: #9ca3af;\n    --tw-prose-invert-links: #fff;\n    --tw-prose-invert-bold: #fff;\n    --tw-prose-invert-counters: #9ca3af;\n    --tw-prose-invert-bullets: #4b5563;\n    --tw-prose-invert-hr: #374151;\n    --tw-prose-invert-quotes: #f3f4f6;\n    --tw-prose-invert-quote-borders: #374151;\n    --tw-prose-invert-captions: #9ca3af;\n    --tw-prose-invert-kbd: #fff;\n    --tw-prose-invert-kbd-shadows: 255 255 255;\n    --tw-prose-invert-code: #fff;\n    --tw-prose-invert-pre-code: #d1d5db;\n    --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n    --tw-prose-invert-th-borders: #4b5563;\n    --tw-prose-invert-td-borders: #374151;\n    font-size: 1rem;\n    line-height: 1.75;\n}\n\n.bs-mkdown :where(picture > img):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n    margin-bottom: 0;\n}\n\n.bs-mkdown :where(video):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.2em;\n    margin-bottom: 0.2em;\n}\n\n.bs-mkdown :where(ol > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(ul > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li p):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.75em;\n    margin-bottom: 0.75em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li > *:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li > *:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ol > li > *:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ol > li > *:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.75em;\n    margin-bottom: 0.75em;\n}\n\n.bs-mkdown :where(dl):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(dd):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.5em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(hr + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h2 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h3 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h4 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(thead th:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0;\n}\n\n.bs-mkdown :where(thead th:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-right: 0;\n}\n\n.bs-mkdown :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-top: 0.5714286em;\n    padding-right: 0.5714286em;\n    padding-bottom: 0.5714286em;\n    padding-left: 0.5714286em;\n}\n\n.bs-mkdown :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0;\n}\n\n.bs-mkdown :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-right: 0;\n}\n\n.bs-mkdown :where(figure):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(.bs-mkdown > :first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(.bs-mkdown > :last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 0;\n}\n\n.bs-mkdown svg g[data-mml-node=\"merror\"],\n.bs-mkdown .mathjax-error {\n    opacity: 0;\n}\n\n.anwser-souce span {\n    color: #347ef9;\n    cursor: pointer;\n}"
  },
  {
    "path": "src/frontend/client/src/mobile.css",
    "content": ".hover-button.active {\n  display: block;\n  visibility: visible;\n}\n\n.nav-close-button {\n  margin-left: 8px;\n}\n\n.nav {\n  position: fixed;\n  z-index: 64;\n  top: 0;\n\n  /* max-width: 260px; */\n\n  bottom: 0;\n  opacity: 0;\n}\n\n.nav.active {\n  position: relative;\n  left: 0;\n  opacity: 1;\n}\n\n.nav-mask.active {\n  opacity: 0;\n  pointer-events: auto;\n}\n\n@media (max-width: 767px) {\n  .nav {\n    width: calc(100% - 10px)  ;\n    transition: all 0.15s;\n  }\n  .nav-mask {\n    position: fixed;\n    z-index: 63;\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    background-color: rgba(7, 7, 7, 0.4);\n    padding-left: 420px;\n    padding-top: 12px;\n    opacity: 0;\n    transition: all 0.5s;\n    pointer-events: none;\n  }\n\n  .nav-open-button {\n    opacity: 0;\n  }\n\n  .nav-mask.active {\n    opacity: 1;\n    pointer-events: auto;\n  }\n\n  .nav.active {\n    position: fixed;\n  }\n}\n\n@media (min-width: 1024px) {\n  .switch-container {\n    display: none;\n  }\n}\n\n\n  .switch-result {\n    display: block !important;\n    visibility: visible;\n  }\n\n@media (max-width: 1024px) {\n  /* .sibling-switch {\n        left: 114px;\n        top: unset;\n        bottom: 4px;\n        visibility: visible;\n        z-index: 2;\n    } */\n  .sibling-switch {\n    display: none;\n  }\n\n  .hover-button {\n    display: block;\n    visibility: visible;\n  }\n}\n\n@media (max-width: 767px) {\n  .input-panel-button {\n    border: 0;\n  }\n\n  .input-panel-button svg {\n    width: 16px;\n    height: 16px;\n  }\n\n  .input-panel {\n  }\n\n  .nav-open-button\n  {\n    visibility: hidden;\n  }\n}\n\n.hide-scrollbar {\n  /* Hide scrollbar for Chrome, Safari, and Opera */\n  scrollbar-width: none; /* For Firefox */\n  -ms-overflow-style: none; /* For Internet Explorer and Edge */\n}\n\n.hide-scrollbar::-webkit-scrollbar {\n  display: none; /* For WebKit browsers */\n}\n\n.gemini-gradient {\n  /* Adjust the colors and positioning as necessary to match the image */\n  background-image: radial-gradient(circle at center, #0000ff, #87cefa, #ffffff);\n  /* More styling for demonstration purposes */\n  border-radius: 50%;\n  height: 100px;\n  width: 100px;\n}\n\n@media (max-width: 767px) {\n  .sidenav {\n    /* width: calc(100% - 10px)  ; */\n    transition: all 0.15s;\n    position: fixed;\n    z-index: 66;\n    top: 0;\n    max-width: 320px;\n  \n    /* max-width: 260px; */\n  \n    bottom: 0;\n    right: 0\n    /* opacity: 0; */\n  }\n  .sidenav-mask {\n    position: fixed;\n    z-index: 65;\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    background-color: rgba(86, 88, 105, 0.75);\n    padding-left: 420px;\n    padding-top: 12px;\n    opacity: 0;\n    transition: all 0.5s;\n    pointer-events: none;\n  }\n\n  .sidenav-mask.active {\n    opacity: 1;\n    pointer-events: auto;\n  }\n\n  .sidenav.active {\n    position: fixed;\n  }\n}\n\n@keyframes tuning {\n  0% { transform: rotate(30deg); }\n  25% { transform: rotate(110deg); }\n  50% { transform: rotate(-40deg); }\n  75% { transform: rotate(80deg) }\n  100% { transform: rotate(30deg) }\n}\n\n.rotate {\n  animation: tuning 2.1s 1;\n}\n\n@-webkit-keyframes slideUpAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateY(2px);\n    transform:translateY(2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateY(0);\n    transform:translateY(0)\n  }\n}\n@keyframes slideUpAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateY(2px);\n    transform:translateY(2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateY(0);\n    transform:translateY(0)\n  }\n}\n.radix-side-bottom\\:animate-slideUpAndFade[data-side=bottom] {\n  -webkit-animation:slideUpAndFade .4s cubic-bezier(.16,1,.3,1);\n  animation:slideUpAndFade .4s cubic-bezier(.16,1,.3,1)\n}\n@-webkit-keyframes slideRightAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateX(-2px);\n    transform:translateX(-2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateX(0);\n    transform:translateX(0)\n  }\n}\n@keyframes slideRightAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateX(-2px);\n    transform:translateX(-2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateX(0);\n    transform:translateX(0)\n  }\n}\n.radix-side-left\\:animate-slideRightAndFade[data-side=left] {\n  -webkit-animation:slideRightAndFade .4s cubic-bezier(.16,1,.3,1);\n  animation:slideRightAndFade .4s cubic-bezier(.16,1,.3,1)\n}\n@keyframes slideLeftAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateX(2px);\n    transform:translateX(2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateX(0);\n    transform:translateX(0)\n  }\n}\n.radix-side-right\\:animate-slideLeftAndFade[data-side=right] {\n  -webkit-animation:slideLeftAndFade .4s cubic-bezier(.16,1,.3,1);\n  animation:slideLeftAndFade .4s cubic-bezier(.16,1,.3,1)\n}\n@keyframes slideDownAndFade {\n  0% {\n    opacity:0;\n    -webkit-transform:translateY(-2px);\n    transform:translateY(-2px)\n  }\n  to {\n    opacity:1;\n    -webkit-transform:translateY(0);\n    transform:translateY(0)\n  }\n}\n.radix-side-top\\:animate-slideDownAndFade[data-side=top] {\n  -webkit-animation:slideDownAndFade .4s cubic-bezier(.16,1,.3,1);\n  animation:slideDownAndFade .4s cubic-bezier(.16,1,.3,1)\n}\n\n.azure-bg-color {\n  background: linear-gradient(0.375turn, #61bde2, #4389d0);\n}\n\n@keyframes slowPulse {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0.7;\n  }\n}\n\n.slow-pulse {\n  animation: slowPulse 2.5s ease-in-out infinite;\n}\n\n.scrollbar-gutter-stable {\n  scrollbar-gutter: stable;\n}\n\n/* Styles for Chrome scrollbar */\n.chrome-scrollbar::-webkit-scrollbar {\n  width: 12px;  /* Increase the width of the scrollbar */\n}\n\n.chrome-scrollbar::-webkit-scrollbar-thumb {\n  background-color: rgba(0, 0, 0, 0.2);  /* Color of the scroll thumb */\n  border-radius: 6px;  /* Rounded corners on the scroll thumb */\n  border: 2px solid transparent;  /* Creates padding around scroll thumb */\n  background-clip: padding-box;  /* Prevents background color from leaking outside the border */\n}\n\n.chrome-scrollbar::-webkit-scrollbar-thumb:hover {\n  background-color: rgba(0, 0, 0, 0.3);  /* Darker color when hovering */\n}\n\n.chrome-scrollbar::-webkit-scrollbar-track {\n  background-color: transparent;  /* Color of the tracking area */\n}\n\n.sp-preview-container {\n  @apply flex h-full w-full grow flex-col justify-center;\n}\n\n.sp-preview {\n  @apply flex h-full w-full grow flex-col justify-center;\n}\n\n.sp-preview-iframe {\n  @apply grow;\n}\n\n.sp-wrapper {\n  @apply flex h-full w-full grow flex-col justify-center;\n}\n\n@keyframes shake {\n  0%, 100% { transform: translateX(0); }\n  10%, 30%, 50%, 70%, 90% { transform: translateX(-3px); }\n  20%, 40%, 60%, 80% { transform: translateX(3px); }\n}\n\n.shake {\n  animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;\n}\n\ndiv[role=\"tabpanel\"][data-state=\"active\"][data-orientation=\"horizontal\"][aria-labelledby^=\"radix-\"][id^=\"radix-\"][id$=\"-content-preview\"] {\n  scrollbar-gutter: stable !important;\n  background-color: rgba(21, 21, 21, 0.5) !important;\n}\n\ndiv[role=\"tabpanel\"][data-state=\"active\"][data-orientation=\"horizontal\"][aria-labelledby^=\"radix-\"][id^=\"radix-\"][id$=\"-content-preview\"]::-webkit-scrollbar {\n  width: 12px !important;\n}\n\ndiv[role=\"tabpanel\"][data-state=\"active\"][data-orientation=\"horizontal\"][aria-labelledby^=\"radix-\"][id^=\"radix-\"][id$=\"-content-preview\"]::-webkit-scrollbar-thumb {\n  background-color: rgba(56, 56, 56) !important;\n  border-radius: 6px !important;\n  border: 2px solid transparent !important;\n  background-clip: padding-box !important;\n}\n\ndiv[role=\"tabpanel\"][data-state=\"active\"][data-orientation=\"horizontal\"][aria-labelledby^=\"radix-\"][id^=\"radix-\"][id$=\"-content-preview\"]::-webkit-scrollbar-track {\n  background-color: transparent !important;\n}\n\n.cm-content:focus {\n  outline: none !important;\n}"
  },
  {
    "path": "src/frontend/client/src/pages/Page404.tsx",
    "content": "\"use client\"\n\nimport { ArrowLeft, Home } from \"lucide-react\"\n\nexport default function Page404() {\n    return (\n        <div className=\"min-h-screen flex items-center justify-center px-4 bg-background\">\n            <div className=\"max-w-2xl w-full text-center space-y-8\">\n                {/* 404 Number */}\n                <div className=\"space-y-4\">\n                    <h1 className=\"text-[clamp(6rem,20vw,12rem)] font-bold leading-none tracking-tighter text-foreground/10\">\n                        404\n                    </h1>\n                    <div className=\"-mt-12 space-y-3\">\n                        <h2 className=\"text-3xl md:text-4xl font-semibold tracking-tight text-balance\">Page Not Found</h2>\n                        <p className=\"text-base md:text-lg text-muted-foreground max-w-md mx-auto text-pretty leading-relaxed\">\n                            Sorry, the page you are trying to access does not exist or has been removed\n                        </p>\n                    </div>\n                </div>\n\n                {/* Action Buttons */}\n                {/* <div className=\"flex flex-col sm:flex-row items-center justify-center gap-3 pt-4\">\n                    <Button asChild size=\"lg\" className=\"w-full sm:w-auto gap-2\">\n                        <a href=\"/\">\n                            <Home className=\"h-4 w-4\" />\n                            返回首页\n                        </a>\n                    </Button>\n                    <Button\n                        asChild\n                        variant=\"outline\"\n                        size=\"lg\"\n                        className=\"w-full sm:w-auto gap-2 bg-transparent\"\n                        onClick={() => window.history.back()}\n                    >\n                        <button type=\"button\">\n                            <ArrowLeft className=\"h-4 w-4\" />\n                            返回上一页\n                        </button>\n                    </Button>\n                </div> */}\n\n                {/* Decorative Element */}\n                <div className=\"pt-8 opacity-40\">\n                    <div className=\"flex items-center justify-center gap-2 text-sm text-muted-foreground\">\n                        <div className=\"h-px w-12 bg-border\" />\n                        {/* <span>或许您在寻找其他内容</span> */}\n                        <div className=\"h-px w-12 bg-border\" />\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/ChatInput.tsx",
    "content": "import { useEffect, useMemo, useState, useRef } from \"react\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { Button, SendIcon, Textarea } from \"~/components\";\nimport SpeechToTextComponent from \"~/components/Voice/SpeechToText\";\nimport { useRecordingAudioLoading } from \"~/components/Voice/textToSpeechStore\";\nimport { useGetWorkbenchModelsQuery } from \"~/data-provider\";\nimport { useLocalize } from \"~/hooks\";\nimport InputFiles from \"./components/InputFiles\";\nimport { bishengConfState, currentRunningState } from \"./store/atoms\";\nimport { useAreaText } from \"./useAreaText\";\nimport DragDropOverlay from \"~/components/Chat/Input/Files/DragDropOverlay\";\nimport { useFileDropAndPaste } from \"./useFileDropAndPaste\";\n\nexport default function ChatInput({ readOnly, v }) {\n    const [bishengConfig] = useRecoilState(bishengConfState);\n    const { inputDisabled, error: inputMsg, showUpload, showStop, showReRun } = useRecoilValue(currentRunningState);\n    // useAreaText\n    const { accepts, inputRef, setChatFiles, handleInput, handleRestart, handleSendClick, handleStopClick } = useAreaText();\n\n    const [fileUploading, setFileUploading] = useState(false);\n    const [audioOpening] = useRecordingAudioLoading();\n    const localize = useLocalize();\n    const { data: modelData } = useGetWorkbenchModelsQuery();\n    const showVoice = modelData?.asr_model.id;\n\n    const inputFilesRef = useRef(null);\n\n    // handle drop and paste\n    const { isDragging, handlePaste } = useFileDropAndPaste({\n        enabled: showUpload && !readOnly && !inputDisabled,\n        onFilesReceived: (files) => {\n            inputFilesRef.current?.upload(files);\n        }\n    });\n\n    // ... Placeholder 和 AutoFocus 逻辑保持不变 ...\n    const placholder = useMemo(() => {\n        return inputDisabled ?\n            (inputMsg.code ? localize(`api_errors.${inputMsg.code}`, inputMsg.data) : ' ')\n            : localize('com_ui_please_enter_question')\n    }, [inputDisabled, inputMsg, localize]);\n\n    useEffect(() => {\n        inputDisabled && setTimeout(() => {\n            inputRef.current?.focus()\n        }, 60)\n    }, [inputDisabled]);\n\n    return (\n        <div className=\"absolute z-10 bottom-0 w-full pt-1 bg-[#fff] dark:bg-[#1B1B1B]\">\n            {/* drag upload overlay */}\n            {isDragging && <DragDropOverlay />}\n\n            <div className=\"relative px-4 rounded-3xl bg-surface-tertiary\">\n                {/* attr file */}\n                {showUpload && <InputFiles\n                    ref={inputFilesRef}\n                    v={v}\n                    showVoice={showVoice}\n                    accepts={accepts}\n                    disabled={readOnly || audioOpening || inputDisabled}\n                    size={bishengConfig?.uploaded_files_maximum_size || 50}\n                    onChange={(files => {\n                        setFileUploading(!files);\n                        setChatFiles(files);\n                    })} />}\n\n                {/* send input */}\n                <div className=\"flex gap-2 absolute right-3 bottom-3 z-10\">\n                    {showVoice && <SpeechToTextComponent disabled={inputDisabled || readOnly || showStop} onChange={(e) => inputRef.current.value += e} />}\n                    {showStop ?\n                        <div\n                            className=\"w-8 h-8 bg-primary rounded-full cursor-pointer flex justify-center items-center\"\n                            onClick={handleStopClick}\n                        >\n                            <div className=\"size-3 bg-white rounded-[2px]\"></div>\n                        </div> :\n                        <button\n                            id=\"bs-send-btn\"\n                            className=\"size-8 flex items-center justify-center rounded-full bg-primary text-white transition-all duration-200 disabled:cursor-not-allowed disabled:text-text-secondary disabled:opacity-20\"\n                            disabled={inputDisabled || fileUploading || readOnly || audioOpening}\n                            onClick={() => { !inputDisabled && !fileUploading && handleSendClick() }}>\n                            <SendIcon size={24} />\n                        </button>\n                    }\n                </div>\n\n                {/* \n                    stop & 重置 \n                    is工作流 & 未展示停止按钮 & 没有错误消息\n                */}\n                <div className=\"absolute w-full flex justify-center left-0 -top-14\">\n                    {/* {!showStop && chatState?.flow?.flow_type === 10 && !inputMsg  & 运行结束展示 */}\n                    {showReRun && !inputMsg.code && !showStop && <Button\n                        className=\"rounded-full bg-primary/10 bg-blue-50 text-primary\"\n                        variant=\"ghost\"\n                        disabled={readOnly}\n                        onClick={handleRestart}>\n                        <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/chat.png'} alt=\"\" />{localize('com_ui_restart')}\n                    </Button>\n                    }\n                </div>\n\n                {/* input */}\n                <Textarea\n                    id=\"bs-send-input\"\n                    ref={inputRef}\n                    rows={2}\n                    style={{ height: 56 }}\n                    disabled={readOnly || inputDisabled}\n                    onInput={handleInput}\n                    onPaste={handlePaste}\n                    onKeyDown={(event) => {\n                        if (event.key === \"Enter\" && !event.shiftKey) {\n                            event.preventDefault();\n                            !inputDisabled && handleSendClick()\n                        }\n                    }}\n                    placeholder={placholder}\n                    className={\"resize-none bg-transparent border-none p-4 pr-10 text-md min-h-24 max-h-80 scrollbar-hide\"}\n                ></Textarea>\n            </div>\n            <p className=\"text-center text-sm pt-2 pb-4 text-gray-400\">{bishengConfig?.dialog_tips}</p>\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/ChatMessages.tsx",
    "content": "import { useRef } from \"react\";\nimport { useRecoilValue } from \"recoil\";\nimport { useLocalize } from \"~/hooks\";\nimport GuideWord from \"./components/GuideWord\";\nimport InputForm from \"./components/InputForm\";\nimport InputFormSkill from \"./components/InputFormSkill\";\nimport MessageBs, { ReasoningLog } from \"./components/MessageBs\";\nimport MessageBsChoose from \"./components/MessageBsChoose\";\nimport MessageFeedbackForm from \"./components/MessageFeedbackForm\";\nimport MessageFile from \"./components/MessageFile\";\nimport MessageNodeRun from \"./components/MessageNodeRun\";\nimport MessageRemark from \"./components/MessageRemark\";\nimport MessageRunlog from \"./components/MessageRunlog\";\nimport MessageSystem from \"./components/MessageSystem\";\nimport MessageUser from \"./components/MessageUser\";\nimport ResouceModal from \"./components/ResouceModal\";\nimport { currentChatState, currentRunningState } from \"./store/atoms\";\nimport { useMessage } from \"./useMessages\";\n\nexport default function ChatMessages({ useName, readOnly, title, logo, disabledSearch = false }) {\n    const { messageScrollRef, chatId, messages } = useMessage(readOnly)\n    const { inputForm, guideWord, inputDisabled } = useRecoilValue(currentRunningState)\n    const chatState = useRecoilValue(currentChatState)\n    const localize = useLocalize()\n\n    console.log('messages :>> ', chatState, messages, guideWord);\n    // 反馈\n    const thumbRef = useRef(null)\n    // 溯源\n    const sourceRef = useRef(null)\n\n    const remark = chatState?.flow?.guide_word\n\n\n    return <div id=\"messageScrollPanne\" ref={messageScrollRef} className=\"h-full overflow-y-auto scrollbar-hide pt-2 pb-96 px-4\">\n        {/* 助手开场白 */}\n        {remark && <MessageRemark\n            readOnly={readOnly}\n            logo={logo}\n            title={title}\n            message={remark}\n        />\n        }\n\n        {\n            messages.map((msg, index) => {\n                // 技能特殊消息\n                if (msg.files?.length) {\n                    return <MessageFile key={msg.id} title={title} data={msg} logo={logo} />\n                } else if (['tool', 'flow', 'knowledge'].includes(msg.category)) {\n                    return <MessageRunlog key={msg.id || msg.extra} data={msg} />\n                } else if (msg.thought) {\n                    return <MessageSystem\n                        logo={logo} title={title} key={msg.id} data={msg} />;\n                }\n\n                // output节点特殊msg\n                switch (msg.category) {\n                    case 'input':\n                        return null\n                    case 'question':\n                        return <MessageUser\n                            readOnly={readOnly}\n                            key={msg.id}\n                            useName={msg.user_name || useName}\n                            data={msg}\n                            disabledSearch={disabledSearch}\n                            showButton={!inputDisabled && chatState?.flow.flow_type !== 10}\n                        />;\n                    case 'guide_word':\n                        return <MessageRemark\n                            key={msg.id}\n                            logo={logo}\n                            title={title}\n                            message={msg.message.guide_word}\n                        />;\n                    case 'output_msg':\n                    case 'stream_msg':\n                    case \"answer\":\n                        return <MessageBs\n                            readOnly={readOnly}\n                            key={msg.id}\n                            data={msg}\n                            logo={logo}\n                            title={title}\n                            onUnlike={(messageId) => { thumbRef.current?.openModal(messageId) }}\n                            onSource={(data) => { sourceRef.current?.openModal({ ...data, chatId }) }}\n                        />;\n                    case 'divider':\n                        return <div key={msg.id} className={'flex items-center justify-center py-4 text-gray-400 text-sm'}>\n                            ----------- {localize(msg.message)} -----------\n                        </div>\n                    case 'output_with_choose_msg':\n                        return <MessageBsChoose\n                            key={msg.id}\n                            data={msg}\n                            logo={logo}\n                            disabled={readOnly}\n                            flow={chatState.flow}\n                        />;\n                    case 'output_with_input_msg':\n                        return <MessageBsChoose\n                            type='input'\n                            key={msg.id}\n                            data={msg}\n                            logo={logo}\n                            disabled={readOnly}\n                            flow={chatState.flow}\n                        />;\n                    case 'node_run':\n                        return <MessageNodeRun key={msg.id} data={msg} />;\n                    case 'system':\n                        return <MessageSystem\n                            logo={logo}\n                            title={title}\n                            key={msg.id}\n                            data={msg} />;\n                    case 'reasoning':\n                    case 'reasoning_answer':\n                        return <ReasoningLog key={msg.id} loading={false} msg={msg.message} />\n                    default:\n                        return <div className=\"text-sm mt-2 border rounded-md p-2\" key={msg.id}>Unknown message type</div>;\n                }\n            })\n        }\n        {/* 只有引导问题没有开场白 => 上面得要有图标+应用名称 */}\n        {!remark\n            && !messages.some(msg => msg.category === 'guide_word')\n            && !!guideWord?.length\n            && <MessageRemark\n                logo={logo}\n                title={title}\n                message={''}\n            />}\n        {/* 引导词 */}\n        {guideWord && !inputDisabled && !inputForm && !readOnly && <GuideWord data={guideWord} />}\n        {/* 表单 */}\n        {inputForm && (chatState?.flow.flow_type === 10 ?\n            <InputForm data={inputForm} flow={chatState.flow} logo={logo} /> :\n            <InputFormSkill flow={chatState.flow} logo={logo} />\n        )}\n\n        <MessageFeedbackForm ref={thumbRef}></MessageFeedbackForm>\n        <ResouceModal ref={sourceRef}></ResouceModal>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/ChatView.tsx",
    "content": "import { useMemo } from \"react\";\nimport AppAvator from \"~/components/Avator\";\nimport HeaderTitle from \"~/components/Chat/HeaderTitle\";\nimport { useAuthContext } from \"~/hooks\";\nimport ChatInput from \"./ChatInput\";\nimport ChatMessages from \"./ChatMessages\";\nimport useChatHelpers from \"./useChatHelpers\";\nimport { useWebSocket } from \"./useWebsocket\";\n\nexport default function ChatView({ data, cid, v, readOnly }) {\n    const { user } = useAuthContext();\n    const help = useChatHelpers()\n    useWebSocket(help)\n\n    const Logo = useMemo(() => {\n        return <AppAvator className=\"size-6 min-w-6\" url={data.logo} id={data.name} flowType={data.flow_type} />\n    }, [data]);\n\n    return <div className=\"relative h-full flex flex-col\">\n        {/* <div className=\"absolute flex top-2 gap-2 items-center z-10 bg-[rgba(255,255,255,0.8)] px-6 py-1 dark:bg-[#1B1B1B]\">\n            {Logo}\n            <span className=\"text-sm\">{data.name}</span>\n        </div> */}\n        <HeaderTitle\n            readOnly={readOnly}\n            conversation={{ title: data.name, flowId: data.id, conversationId: cid, flowType: data.flow_type }}\n            logo={Logo}\n        />\n        <div className=\"min-h-0 flex-1 bg-[position:0_100%] bg-repeat-x bg-[length:10px_432px]\"\n        // style={{ backgroundImage: `url(${__APP_ENV__.BASE_URL}/assets/points.png)` }}\n        >\n            <div className=\"relative h-full max-w-[860px] mx-auto\">\n                <ChatMessages\n                    useName={user?.username}\n                    title={data.name}\n                    logo={Logo}\n                    readOnly={readOnly}\n                    disabledSearch={data.flow_type === 10}\n                />\n                <ChatInput v={v} readOnly={readOnly} />\n            </div>\n        </div>\n    </div>\n};\n\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/README.md",
    "content": "## 事件流转说明\n##### 发送消息\n- 1.聊天窗口发送消息（ChatInput & useAreaText）-> 生成提交数据（submitDataState）-> 触发监听，发送ws(useWebSocket)\n- 2.表单提交（InputForm）-> 触发监听，重复步骤1（useAreaText）\n##### 接收消息\n- ws监听收到消息(useWebSocket) -> 处理消息分类（useChatHelpers）-> 更新消息（chatsState[chatId].messages）\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/appUtils/index.ts",
    "content": ""
  },
  {
    "path": "src/frontend/client/src/pages/appChat/appUtils/skillMethod.ts",
    "content": "import { formatDate } from \"~/utils\";\n\nconst runLogsTypes = ['tool', 'flow', 'knowledge']\n// 兼容处理技能和助手\nexport const SkillMethod = {\n    /** 获取input发送参数 */\n    getSendParam: ({ tabs, flow, chatId, message }) => {\n        const msgData = {\n            chatHistory: [],\n            flow_id: flow.id,\n            chat_id: chatId,\n            name: flow.name,\n            description: flow.description || flow.desc,\n            inputs: {}\n        } as any\n        if (flow.flow_type === 1) {\n            let inputs = tabs[flow.id].formKeysData.input_keys;\n            const input = inputs.find((el: any) => !el.type)\n            const inputKey = input ? Object.keys(input)[0] : '';\n            if (message) msgData.inputs = { ...input, [inputKey]: message }\n        } else {\n            msgData.inputs = {\n                data: {\n                    chatId,\n                    id: flow.id,\n                    type: 5\n                },\n                input: message\n            }\n        }\n        // if (formDataRef.current?.length) {\n        //     msgData.inputs.data = formDataRef.current\n        //     formDataRef.current = null\n        // }\n        // if (action === 'continue') msgData.action = action\n        return msgData\n    },\n    /** start参数 */\n    getStartParam: (data: any, chatId) => {\n        data.message = runLogsTypes.includes(data.category) ? JSON.parse(data.message) : '';\n        data.thought = data.intermediate_steps || ''\n        data.category = runLogsTypes.includes(data.category) ? data.category : 'stream_msg'\n        data.chat_id = chatId\n        return data\n    },\n    /** 更新消息 */\n    updateStreamMessage: (data: any, chatId, messages: any, cover?: boolean) => {\n        const wsdata = data.type === 'stream' ? {\n            chat_id: chatId,\n            message: data.message,\n            category: runLogsTypes.includes(data.category) ? data.category : 'stream_msg',\n            thought: data.intermediate_steps\n        } : {\n            ...data,\n            chat_id: chatId,\n            end: true,\n            thought: data.intermediate_steps || '',\n            messageId: data.message_id,\n            noAccess: false,\n            liked: 0,\n            category: runLogsTypes.includes(data.category) ? data.category : 'stream_msg',\n            create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n        }\n        const isRunLog = runLogsTypes.includes(wsdata.category);\n        // run log类型存在嵌套情况，使用 extra 匹配 currentMessage; 否则取最近\n        let currentMessageIndex = 0\n        for (let i = messages.length - 1; i >= 0; i--) {\n            if (!messages[i].is_bot) break;\n            if (isRunLog && messages[i].extra === wsdata.extra) {\n                currentMessageIndex = i;\n                break;\n            } else if (!isRunLog && !runLogsTypes.includes(messages[i].category)) {\n                currentMessageIndex = i;\n                break;\n            } else if (wsdata.type === 'end_cover' && messages[i].category === 'tool') {\n                currentMessageIndex = i;\n                break;\n            }\n        }\n        const currentMessage = messages[currentMessageIndex]\n        // deepseek\n        let message = ''\n        let reasoning_log = currentMessage.reasoning_log || ''\n        if (isRunLog) {\n            message = JSON.parse(wsdata.message)\n        } else if (typeof wsdata.message !== 'string' && wsdata.message && 'reasoning_content' in wsdata.message) {\n            message = currentMessage.message + (wsdata.message.content || '')\n            reasoning_log += (wsdata.message.reasoning_content || '')\n        } else {\n            message = currentMessage.message + (wsdata.message || '')\n        }\n\n        // 敏感词特殊处理\n        if (wsdata.type === 'end_cover' && currentMessage.category === 'tool') {\n            messages.forEach((msg) => {\n                msg.end = true // 闭合所有会话\n            })\n            cover = false\n        }\n        const newCurrentMessage = {\n            ...currentMessage,\n            ...wsdata,\n            id: currentMessage.id || (isRunLog ? wsdata.extra : wsdata.messageId), // 每条消息必唯一\n            message,\n            reasoning_log,\n            thought: currentMessage.thought + (wsdata.thought ? `${wsdata.thought}\\n` : ''),\n            files: wsdata.files || [],\n            category: wsdata.category || '',\n            source: wsdata.source\n        }\n        // 无id补上（如文件解析完成消息，后端无返回messageid）\n        if (!newCurrentMessage.id) {\n            newCurrentMessage.id = Math.random() * 1000000\n            // console.log('msg:', newCurrentMessage);\n        }\n\n        messages[currentMessageIndex] = newCurrentMessage\n        // 会话特殊处理，兼容后端的缺陷\n        if (!isRunLog) {\n            // start - end 之间没有内容删除load\n            if (newCurrentMessage.end && !(newCurrentMessage.files.length || newCurrentMessage.thought || newCurrentMessage.message)) {\n                messages.pop()\n            }\n            // 无 messageid 删除\n            // if (newCurrentMessage.end && !newCurrentMessage.id) {\n            //     messages.pop()\n            // }\n            // 删除重复消息\n            const prevMessage = messages[currentMessageIndex - 1];\n\n            // hack \n            if (wsdata.type === 'end_cover' && prevMessage.is_bot) {\n                cover = true\n            }\n\n            // 有思考不覆盖 只覆盖message,保留思考\n            if (prevMessage?.reasoning_log) {\n                if ((prevMessage\n                    && prevMessage.message === newCurrentMessage.message\n                    && prevMessage.thought === newCurrentMessage.thought)\n                    || cover) {\n                    const removedMsg = messages.pop()\n                    prevMessage.message = removedMsg.message\n                }\n            } else {\n                if ((prevMessage\n                    && prevMessage.message === newCurrentMessage.message && newCurrentMessage.end\n                    && prevMessage.thought === newCurrentMessage.thought)\n                    || cover) {\n                    const removedMsg = messages.pop()\n                    // 使用最后一条的信息作为准确信息\n                    Object.keys(prevMessage).forEach((key) => {\n                        prevMessage[key] = removedMsg[key]\n                    })\n                }\n            }\n\n        }\n\n        return [...messages]\n    }\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/ChatFile.tsx",
    "content": "import { FileIcon, getFileTypebyFileName } from \"~/components/ui/icon/File/FileIcon\";\nimport { downloadFile } from \"~/utils\";\nimport useLocalize from \"~/hooks/useLocalize\";\nexport default function ChatFile({ fileName, filePath }) {\n\n    // download file\n    const handleDownloadFile = (filePath) => {\n        if (filePath) {\n            const path = filePath.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)\n            downloadFile(path, fileName)\n        }\n    }\n\n    const t = useLocalize()\n    return <div\n        className=\"group min-w-52 relative flex items-center gap-2 border bg-white p-2 rounded-xl cursor-pointer\"\n        onClick={() => handleDownloadFile(filePath)}\n    >\n        <FileIcon loading={false} type={getFileTypebyFileName(fileName)} />\n        <div className=\"flex-1\">\n            <div className=\"max-w-48 text-sm font-medium text-gray-700 truncate\">\n                {fileName}\n            </div>\n            <p className=\"text-xs text-gray-400 mt-1\">{t('com_bschoose_click_to_download')}</p>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/GuideWord.tsx",
    "content": "import { useMemo } from \"react\";\nimport { emitAreaTextEvent, EVENT_TYPE } from \"../useAreaText\"\n\nexport default function GuideWord({ data }) {\n\n    const randomItems = useMemo(() => {\n        if (data.length < 3) {\n            return data; // 如果数据小于3个，直接返回\n        }\n\n        // 随机选取三个元素\n        const randomIndices = [];\n        while (randomIndices.length < 3) {\n            const randIndex = Math.floor(Math.random() * data.length);\n            if (!randomIndices.includes(randIndex)) {\n                randomIndices.push(randIndex);\n            }\n        }\n\n        return randomIndices.map(index => data[index]);\n    }, [data]); // 依赖数组是 data，只有 data 改变时才会重新计算\n\n    return <div className=\"space-y-2 mt-2 pl-12\">\n        {\n            randomItems.map(word =>\n                <p\n                    className=\"text-xs border w-fit p-3 py-1 rounded-md text-[#1f2937cc] cursor-pointer hover:bg-[#6e87ac33]\"\n                    onClick={() => emitAreaTextEvent({ action: EVENT_TYPE.INPUT_SUBMIT, data: word })}\n                    key={word}\n                >\n                    {word}\n                </p>\n            )\n        }\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/InputComponent.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { cn } from \"~/utils\";\n\ntype InputComponentType = {\n    autoFocus?: boolean;\n    onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n    value: string;\n    disabled?: boolean;\n    onChange: (value: string) => void;\n    password: boolean;\n    required?: boolean;\n    isForm?: boolean;\n    editNode?: boolean;\n    onChangePass?: (value: boolean | boolean) => void;\n    showPass?: boolean;\n    placeholder?: string;\n    className?: string;\n    id?: string;\n    blurOnEnter?: boolean;\n    type?: 'input' | 'textarea'\n};\n\nexport default function InputComponent({\n    value,\n    onChange,\n    disabled,\n    password,\n    type = 'input',\n    maxLength = 150,\n    editNode = false,\n}: InputComponentType) {\n    const [myValue, setMyValue] = useState(value ?? \"\");\n    const [pwdVisible, setPwdVisible] = useState(false);\n\n    useEffect(() => {\n        if (disabled) {\n            setMyValue(\"\");\n            onChange(\"\");\n        }\n    }, [disabled, onChange]);\n\n    return (\n        <div className={disabled ? \"input-component-div\" : \"relative\"}>\n            {type === 'textarea' ? <textarea\n                value={myValue}\n                // maxLength={maxLength}\n                className={cn(\n                    \"whitespace-normal border rounded-md w-full bg-search-input px-2 py-1\",\n                    disabled ? \" input-disable \" : \"\",\n                    password && !pwdVisible && myValue !== \"\"\n                        ? \" text-clip password \"\n                        : \"\",\n                    editNode ? \" input-edit-node \" : \" input-primary \",\n                    password && editNode ? \"pr-8\" : \"\",\n                    password && !editNode ? \"pr-10\" : \"\"\n                )}\n                placeholder={password && editNode ? \"Key\" : \"\"}\n                onChange={(e) => {\n                    setMyValue(e.target.value);\n                    onChange(e.target.value);\n                }}\n            />\n                : <input value={myValue}\n                    maxLength={maxLength}\n                    className={\n                        cn(\n                            disabled ? \" input-disable \" : \"\",\n                            password && !pwdVisible && myValue !== \"\"\n                                ? \" text-clip password \"\n                                : \"\",\n                            editNode ? \" input-edit-node \" : \" input-primary \",\n                            password && editNode ? \"pr-8\" : \"\",\n                            password && !editNode ? \"pr-10\" : \"\"\n                        )}\n                    placeholder={password && editNode ? \"Key\" : \"\"}\n                    onChange={(e) => {\n                        setMyValue(e.target.value);\n                        onChange(e.target.value);\n                    }}\n                />}\n            {password && (\n                <button\n                    className={cn(\n                        editNode\n                            ? \"input-component-true-button\"\n                            : \"input-component-false-button\"\n                    )}\n                    onClick={() => {\n                        setPwdVisible(!pwdVisible);\n                    }}\n                >\n                    {password &&\n                        (pwdVisible ? (\n                            <svg\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                                fill=\"none\"\n                                viewBox=\"0 0 24 24\"\n                                strokeWidth={1.5}\n                                stroke=\"currentColor\"\n                                className={cn(\n                                    editNode\n                                        ? \"input-component-true-svg\"\n                                        : \"input-component-false-svg\"\n                                )}\n                            >\n                                <path\n                                    strokeLinecap=\"round\"\n                                    strokeLinejoin=\"round\"\n                                    d=\"M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88\"\n                                />\n                            </svg>\n                        ) : (\n                            <svg\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                                fill=\"none\"\n                                viewBox=\"0 0 24 24\"\n                                strokeWidth={1.5}\n                                stroke=\"currentColor\"\n                                className={cn(\n                                    editNode\n                                        ? \"input-component-true-svg\"\n                                        : \"input-component-false-svg\"\n                                )}\n                            >\n                                <path\n                                    strokeLinecap=\"round\"\n                                    strokeLinejoin=\"round\"\n                                    d=\"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z\"\n                                />\n                                <path\n                                    strokeLinecap=\"round\"\n                                    strokeLinejoin=\"round\"\n                                    d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n                                />\n                            </svg>\n                        ))}\n                </button>\n            )}\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/InputFileComponent.tsx",
    "content": "\nimport { FileSearch2, Loader2 } from \"lucide-react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { bishengConfState } from \"../store/atoms\";\nimport { useRecoilState } from \"recoil\";\nimport { useToastContext } from \"~/Providers\";\nimport { Button } from \"~/components\";\nimport { uploadFile, uploadFileWithProgress } from \"~/api/apps\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\nexport default function InputFileComponent({\n    value,\n    onChange,\n    disabled,\n    suffixes = [],\n    fileTypes,\n    placeholder = 'The current file is empty',\n    onFileChange,\n    editNode = false,\n    isSSO = false,\n    multiple = false,\n    flow\n}) {\n    const t = useLocalize()\n    const [myValue, setMyValue] = useState(value);\n    const [loading, setLoading] = useState(false);\n    useEffect(() => {\n        if (disabled) {\n            setMyValue(\"\");\n            onChange(\"\");\n            onFileChange(\"\");\n        }\n    }, [disabled, onChange]);\n\n    function checkFileType(fileName: string): boolean {\n        for (let index = 0; index < suffixes.length; index++) {\n            if (fileName.endsWith(suffixes[index])) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    useEffect(() => {\n        setMyValue(value);\n    }, [value]);\n\n    const [bishengConfig] = useRecoilState(bishengConfState)\n\n    const { showToast } = useToastContext();\n\n    const checkFileSize = (file) => {\n        const maxSize = (bishengConfig?.uploaded_files_maximum_size || 50) * 1024 * 1024;\n        if (file.size > maxSize) {\n            return t('com_inputfile_exceed_limit', { 0: file.name, 1: (bishengConfig?.uploaded_files_maximum_size || 50) })\n        }\n        return ''\n    }\n\n    const handleButtonClick = () => {\n        if (multiple) return batchUpload()\n        // Create a file input element\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = suffixes.join(\",\");\n        input.style.display = \"none\"; // Hidden from view\n        input.multiple = false; // Allow only one file selection\n\n        input.onchange = (e: Event) => {\n            setLoading(true);\n\n            // Get the selected file\n            const file = (e.target as HTMLInputElement).files?.[0];\n\n            const errorMsg = checkFileSize(file)\n            if (errorMsg) {\n                showToast({ message: errorMsg, status: 'error' });\n\n                return setLoading(false);\n            }\n            // Check if the file type is correct\n            // if (file && checkFileType(file.name)) {\n            // Upload the file\n            isSSO ? uploadFileWithProgress(file, (progress) => { }).then(res => {\n                setLoading(false);\n                \n                if (typeof res === 'string') return showToast({ message: res, status: 'error' });\n                const { file_path } = res;\n                setMyValue(file.name);\n                onChange(file.name);\n                // sets the value that goes to the backend\n                onFileChange(file_path);\n            }) : uploadFile(file, flow.id)\n                .then((data) => {\n                    console.log(\"File uploaded successfully\");\n                    // Get the file name from the response\n                    const { file_path } = data.data;\n\n                    // Update the state and callback with the name of the file\n                    // sets the value to the user\n                    setMyValue(file.name);\n                    onChange(file.name);\n                    // sets the value that goes to the backend\n                    onFileChange(file_path);\n                    setLoading(false);\n                })\n                .catch(() => {\n                    console.error(\"Error occurred while uploading file\");\n                    setLoading(false);\n                });\n            // } else {\n            //   // Show an error if the file type is not allowed\n            //   setErrorData({\n            //     title:\n            //       \"请选择有效文件。只允许使用这些文件类型：\",\n            //     list: fileTypes,\n            //   });\n            //   setLoading(false);\n            // }\n        };\n\n        // Trigger the file selection dialog\n        input.click();\n    };\n\n    const batchUpload = () => {\n        // Create a file input element\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = suffixes.join(\",\");\n        input.style.display = \"none\"; // Hidden from view\n        input.multiple = true; // Allow multiple file selection\n\n        input.onchange = (e: Event) => {\n            setLoading(true);\n\n            // Get the selected files\n            const _files = (e.target as HTMLInputElement).files;\n\n            if (_files && _files.length > 0) {\n                const filePaths = []; // This will hold the file paths after successful upload\n\n                const errorMsgs = []\n                const files = []\n                for (let i = 0; i < _files.length; i++) {\n                    const errorMsg = checkFileSize(_files[i])\n                    errorMsg ? errorMsgs.push(errorMsg) : files.push(_files[i])\n                }\n\n                if (errorMsgs.length) {\n                    showToast({ message: errorMsgs.join('\\n'), status: 'error' });\n\n\n                    // 文件都不符合要求 结束上传\n                    if (errorMsgs.length === _files.length) {\n                        return setLoading(false);\n                    }\n                }\n\n                const fileNames = Array.from(files).map(file => file.name); // Extract file names\n\n                // Perform the upload for each file\n                const uploadPromises = Array.from(files).map(file => {\n                    return isSSO\n                        ? uploadFileWithProgress(file, (progress) => { }) // Adjust upload method if needed\n                            .then(res => {\n                                if (typeof res === 'string') {\n                                    // setErrorData({ title: \"Error\", list: [res] });\n                                    showToast({ message: res, status: 'error' });\n\n                                    setLoading(false);\n                                    throw new Error(res); // Exit the upload if error occurs\n                                }\n                                return res.file_path\n                            })\n                        : uploadFile(file, flow.id).then((data) => {\n                            console.log(\"File uploaded successfully\");\n                            return data.data.file_path\n                        });\n                });\n\n                // Wait for all file uploads to finish\n                Promise.all(uploadPromises)\n                    .then((filePaths) => {\n                        // After all files are uploaded successfully, update the state\n                        setMyValue(fileNames.join(\",\")); // Join file names with commas\n                        onChange(fileNames); // Pass an array of file names\n                        onFileChange(filePaths); // Pass an array of file paths\n\n                        setLoading(false); // Hide loading state\n                    })\n                    .catch((error) => {\n                        console.error(\"Error occurred while uploading files\", error);\n                        setLoading(false); // Hide loading state if an error occurs\n                    });\n            } else {\n                showToast({ message: t('com_inputfile_no_file_selected'), status: 'error' });\n\n                setLoading(false); // Hide loading state if no files were selected\n            }\n        };\n\n        // Trigger the file selection dialog\n        input.click();\n    };\n\n\n\n    return (\n        <div className={disabled ? \"input-component-div\" : \"w-full\"}>\n            <div className=\"input-file-component flex items-center gap-2 border bg-search-input rounded-md px-2 justify-between\">\n                <span\n                    onClick={handleButtonClick}\n                    className={\n                        editNode\n                            ? \"input-edit-node input-dialog text-muted-foreground\"\n                            : disabled\n                                ? \"input-disable input-dialog input-primary\"\n                                : \"w-full input-dialog input-primary text-muted-foreground cursor-pointer\"\n                    }\n                >\n                    {myValue !== \"\" ? myValue : placeholder}\n                </span>\n                <Button size=\"icon\" variant=\"ghost\" onClick={handleButtonClick}>\n                    {!editNode && !loading && (\n                        <FileSearch2\n                            strokeWidth={1.5}\n                            size={18}\n                            className={\n                                (disabled ? \" text-ring \" : \" hover:text-accent-foreground\")\n                            }\n                        />\n                    )}\n                    {!editNode && loading && (<Loader2 className=\"text-primary animate-spin duration-300 pointer-events-none\" />)}\n                </Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/InputFiles.tsx",
    "content": "\nimport { X } from \"lucide-react\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { uploadChatFile } from \"~/api/apps\";\nimport { AttachmentIcon } from \"~/components/svg\";\nimport { FileIcon, getFileTypebyFileName } from \"~/components/ui/icon/File/FileIcon\";\nimport useLocalize from \"~/hooks/useLocalize\";\nimport { useToastContext } from \"~/Providers\";\nimport { cn, generateUUID, getFileExtension } from \"~/utils\";\n\nconst checkFileType = (file, accepts) => {\n    if (!accepts || accepts === '*') return true;\n    const fileName = file.name.toLowerCase();\n    const acceptArr = accepts.split(',').map(a => a.trim().toLowerCase());\n\n    // 检查后缀名 (例如 .pdf) 或 MIME type\n    return acceptArr.some(type => {\n        if (type.startsWith('.')) {\n            return fileName.endsWith(type);\n        }\n        return file.type.match(new RegExp(type.replace('*', '.*')));\n    });\n};\n\n// @accepts '.png,.jpg'\nconst InputFiles = forwardRef(({ v, showVoice, accepts, disabled = false, size, onChange }, ref) => {\n    const t = useLocalize()\n    const [files, setFiles] = useState([]);\n    const filesRef = useRef([]);\n    const remainingUploadsRef = useRef(0);\n    const { showToast } = useToastContext();\n\n    const fileInputRef = useRef(null);\n    const fileSizeLimit = size * 1024 * 1024; // File size limit in bytes\n\n    const handleFileChange = (selectedFiles) => {\n        const validFiles = [];\n        const invalidFiles = [];\n        const invalidTypeFiles = [];\n\n        fileInputRef.current.value = ''\n        // Validate files based on file extensions\n        selectedFiles.forEach((file) => {\n            if (!checkFileType(file, accepts)) {\n                invalidTypeFiles.push(file);\n                return;\n            } else if (file.size <= fileSizeLimit) {\n                validFiles.push({ id: generateUUID(6), file });\n            } else {\n                invalidFiles.push({ id: generateUUID(6), file });\n            }\n        });\n\n        if (invalidTypeFiles.length > 0) {\n            showToast({ message: t('com_ui_upload_file_type_error'), status: 'error' }); // 请确保你有对应多语言key或直接写死中文测试\n        }\n        // Show invalid file toast\n        if (invalidFiles.length > 0) {\n            invalidFiles.map(file =>\n                showToast({ message: t('com_inputfiles_exceed_limit', { 0: file.file.name, 1: size }), status: 'info' })\n            )\n        }\n\n        if (!validFiles.length) return;\n\n        // Trigger onChange with null to indicate uploading state\n        onChange(null);\n\n        // Add valid files to state with initial progress\n        const filesWithProgress = validFiles.map(({ file, id }) => {\n            return {\n                name: file.name,\n                size: file.size,\n                type: file.type,\n                isUploading: true,\n                progress: 0, // Set initial progress to 0\n                id, // Use the generated id\n                file // Keep original file object for later use\n            };\n        });\n\n        setFiles(prevFiles => {\n            const res = [...prevFiles, ...filesWithProgress];\n            filesRef.current = res;\n            return res;\n        });\n\n        // Keep track of the number of remaining uploads\n        remainingUploadsRef.current = validFiles.length;\n\n        // Create an array of promises to handle multiple file uploads concurrently\n        const uploadPromises = validFiles.map(({ file, id }) => {\n            return uploadChatFile(v, file, (progress) => {\n                console.log('progress :>> ', progress);\n                // Update progress for each file individually\n                setFiles((prevFiles) => {\n                    const updatedFiles = prevFiles.map(f => {\n                        if (f.id === id) {\n                            return { ...f, progress }; // Update progress for the specific file\n                        }\n                        return f;\n                    });\n                    filesRef.current = updatedFiles;\n                    return updatedFiles;\n                });\n            }).then(response => {\n                const filePath = response.data.file_path; // Assuming the response contains the file ID\n                filesRef.current = filesRef.current.map(f => {\n                    if (f.id === id) {\n                        return { ...f, isUploading: false, filePath, progress: 100 }; // Set progress to 100 when uploaded\n                    }\n                    return f;\n                });\n                setFiles(filesRef.current);\n\n                remainingUploadsRef.current -= 1; // Decrease the remaining uploads count\n                if (remainingUploadsRef.current === 0) {\n                    // Once all files are uploaded, trigger onChange with the file IDs\n                    const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n                    onChange(uploadedFileIds); // Pass the file IDs to onChange\n                }\n            }).catch((e) => {\n                console.log('e :>> ', e);\n                showToast({ message: t('com_inputfiles_upload_failed', { 0: file.name }), status: 'error' })\n                handleFileRemove(file.name);\n                remainingUploadsRef.current -= 1; // Decrease the remaining uploads count\n                if (remainingUploadsRef.current === 0) {\n                    // If no files remain, trigger onChange immediately\n                    const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n                    onChange(uploadedFileIds);\n                }\n            });\n        });\n\n        // Wait for all files to finish uploading\n        Promise.all(uploadPromises).then(() => {\n            // Once all files are uploaded, trigger onChange with the file IDs\n            const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n            onChange(uploadedFileIds); // Pass the file IDs to onChange\n        });\n    };\n\n    useImperativeHandle(ref, () => ({\n        upload: (fileList) => {\n            if (disabled) return;\n            handleFileChange(Array.from(fileList));\n        }\n    }));\n\n    const handleFileRemove = (fileName) => {\n        const res = filesRef.current.filter(file => file.name !== fileName);\n        filesRef.current = res\n        setFiles(res);\n\n        // If we manually remove a file during upload, we decrease the remaining upload counter\n        remainingUploadsRef.current = Math.max(remainingUploadsRef.current - 1, 0);\n\n        if (remainingUploadsRef.current === 0) {\n            // If no files remain, trigger onChange immediately\n            const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ id: f.id, name: f.name }));\n            onChange(uploadedFileIds); // Trigger onChange with uploaded file IDs\n        }\n    };\n\n    const formatFileSize = (size) => {\n        let fileSize = typeof size === 'string' ? parseFloat(size) : size;\n        const units = ['B', 'KB', 'MB', 'GB'];\n        let index = 0;\n\n        while (fileSize >= 1024 && index < units.length - 1) {\n            fileSize /= 1024;\n            index++;\n        }\n\n        return `${fileSize.toFixed(2)} ${units[index]}`;\n    };\n\n    return (\n        <div className=\"\">\n            {/* Displaying files */}\n            {!!files.length && <div className=\"flex flex-wrap gap-2 p-2 rounded-xl max-h-96 overflow-y-auto\">\n                {files.map((file, index) => (\n                    <div key={index} className=\"group min-w-52 relative flex items-center gap-2 border bg-white p-2 rounded-2xl cursor-default\">\n                        {/* Remove button */}\n                        <span\n                            onClick={() => handleFileRemove(file.name)}\n                            className=\"opacity-0 group-hover:opacity-100 absolute p-0.5 right-1.5 top-1.5 bg-black text-white rounded-full cursor-pointer transition-opacity\"\n                        >\n                            <X size={14} />\n                        </span>\n\n                        {/* File Icon */}\n                        <FileIcon loading={file.isUploading} type={getFileTypebyFileName(file.name)} />\n\n                        {/* File details */}\n                        <div className=\"flex-1\">\n                            <div className=\"max-w-48 text-sm font-medium text-gray-700 truncate\" title={file.name}>\n                                {file.name}\n                            </div>\n                            {file.isUploading ? file.progress === 100\n                                ? <div className=\"text-xs text-gray-500\">{t('com_inputfiles_parsing')}</div>\n                                : <div className=\"text-xs text-gray-500\">{t('com_inputfiles_uploading')} {file.progress}%</div>\n                                : <div className=\"text-xs text-gray-500\">{getFileExtension(file.name)} {formatFileSize(file.size)}</div>}\n                        </div>\n                    </div>\n                ))}\n            </div>}\n\n            {/* File Upload Button disabled */}\n            <div\n                className={cn(\n                    'absolute bottom-3 cursor-pointer p-1 hover:bg-gray-200 rounded-full',\n                    showVoice ? 'right-[92px]' : 'right-14',\n                    disabled ? 'pointer-events-none opacity-40' : ''\n                )}\n                onClick={() => !disabled && fileInputRef.current.click()}\n            >\n                <AttachmentIcon />\n            </div>\n\n            {/* File Input */}\n            <input\n                type=\"file\"\n                ref={fileInputRef}\n                multiple\n                accept={accepts}\n                onChange={(e) => handleFileChange(Array.from(e.target.files))}\n                className=\"hidden\"\n            />\n        </div>\n    );\n});\n\nexport default InputFiles;\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/InputForm.tsx",
    "content": "\nimport { useRef, useState } from \"react\";\nimport { Button } from \"~/components\";\nimport MultiSelect from \"~/components/ui/MultiSelect\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"~/components/ui/Select\";\nimport { useToastContext } from \"~/Providers\";\nimport { useLocalize } from \"~/hooks\";\nimport { emitAreaTextEvent, EVENT_TYPE, FileTypes } from \"../useAreaText\";\nimport InputComponent from \"./InputComponent\";\nimport InputFileComponent from \"./InputFileComponent\";\nimport { MessageWarper } from \"./MessageBsChoose\";\n\nconst enum FormItemType {\n    Text = 'text',\n    File = 'file',\n    Select = 'select'\n}\n\ninterface WorkflowNodeParam {\n    /** Unique key */\n    key: string;\n    /** Optional display */\n    label?: string;\n    /** type */\n    type: string;\n    /** value */\n    value: any;\n    /** placeholder */\n    placeholder?: string;\n    /** help text */\n    help?: string;\n    /** tab */\n    tab?: string;\n    /** required*/\n    required?: boolean;\n    /**  multiple value */\n    multi?: boolean;\n    /** Array of options */\n    options?: any[];\n    test?: string,\n    hidden?: boolean;\n}\n\nconst InputForm = ({ data, flow, logo }: { data: WorkflowNodeParam, flow: any }) => {\n    const localize = useLocalize()\n    const formDataRef = useRef(data.value.reduce((map, item) => {\n        map[item.key] = { key: item.key, type: item.type, label: item.value, fileName: '', value: '' }\n        return map\n    }, {}))\n\n    const handleChange = (item, value) => {\n        if (item.type === FormItemType.File) {\n            formDataRef.current[item.key].value = Array.isArray(value) ? value : [value]\n        } else {\n            formDataRef.current[item.key].value = value\n        }\n    }\n\n    const updataFileName = (item, fileName) => {\n        formDataRef.current[item.key].fileName = fileName\n    }\n\n    const { showToast } = useToastContext();\n    const submit = () => {\n        const valuesObject = {}\n        let stringObject = \"\"\n        const errors: string[] = []\n\n        Object.keys(formDataRef.current).forEach((key: string) => {\n            const fieldData = formDataRef.current[key]\n            const required = data.value.find(item => item.key === key).required\n            if (required && !fieldData.value) {\n                errors.push(localize('com_ui_required_field', { field: fieldData.label }));\n            }\n            valuesObject[key] = fieldData.value\n            stringObject += `${fieldData.label}:${fieldData.type === FormItemType.File ? fieldData.fileName : fieldData.value}\\n`\n        })\n\n        if (errors.length) {\n            return showToast({ message: errors.join('\\n'), status: 'warning' });\n        }\n        emitAreaTextEvent({\n            action: EVENT_TYPE.FORM_SUBMIT,\n            data: valuesObject,\n            nodeId: data.node_id,\n            message: stringObject\n        })\n    }\n\n    const [multiVal, setMultiVal] = useState([])\n    return <MessageWarper flow={flow} logo={logo}>\n        <div className=\"max-h-[520px] overflow-y-auto space-y-2\">\n            {\n                data.value.map((item, i) => (\n                    <div key={item.id} className=\"w-full text-sm bisheng-label\">\n                        {item.value}\n                        {item.required && <span className=\"text-red-500\">*</span>}\n                        {/* <span className=\"text-status-red\">{item.required ? \" *\" : \"\"}</span> */}\n                        <div className=\"mb-2\">\n                            {(() => {\n                                switch (item.type) {\n                                    case FormItemType.Text:\n                                        return (\n                                            <InputComponent\n                                                type=\"textarea\"\n                                                password={false}\n                                                maxLength={10000}\n                                                flow={flow}\n                                                onChange={(val) => handleChange(item, val)}\n                                            />\n                                        )\n                                    case FormItemType.Select:\n                                        return (\n                                            item.multiple ?\n                                                <MultiSelect\n                                                    multiple\n                                                    className={''}\n                                                    value={multiVal[item.key] || []}\n                                                    options={\n                                                        item.options.map(el => ({\n                                                            label: el.text,\n                                                            value: el.text\n                                                        }))\n                                                    }\n                                                    placeholder={localize('com_ui_please_select')}\n                                                    onChange={(v) => {\n                                                        setMultiVal(prev => ({ ...prev, [item.key]: v }));\n                                                        handleChange(item, v.join(','))\n                                                    }}\n                                                >\n                                                    {/* {children?.(reload)} */}\n                                                </MultiSelect>\n                                                : <Select onValueChange={(val) => handleChange(item, val)}>\n                                                    <SelectTrigger>\n                                                        <SelectValue placeholder=\"\" />\n                                                    </SelectTrigger>\n                                                    <SelectContent className=\"bg-white\">\n                                                        <SelectGroup>\n                                                            {item.options.map(el => (\n                                                                <SelectItem key={el.text} value={el.text}>\n                                                                    {el.text}\n                                                                </SelectItem>\n                                                            ))}\n                                                        </SelectGroup>\n                                                    </SelectContent>\n                                                </Select>\n                                        )\n                                    case FormItemType.File:\n                                        return (\n                                            <InputFileComponent\n                                                isSSO\n                                                disabled={false}\n                                                placeholder={localize('com_file_current_empty')}\n                                                value={''}\n                                                multiple={item.multiple}\n                                                onChange={(name) => updataFileName(item, name)}\n                                                // fileTypes={FileTypes[item.file_type.toUpperCase()]}\n                                                suffixes={FileTypes[item.file_type.toUpperCase()]}\n                                                onFileChange={(val) => handleChange(item, val)}\n                                            />\n                                        )\n                                    default:\n                                        return null\n                                }\n                            })()}\n                        </div>\n                    </div>\n                ))\n            }\n            <div className=\"flex justify-end\">\n                <Button size=\"sm\" className=\"h-8 px-4\" onClick={submit}>{localize('com_ui_start')}</Button>\n            </div>\n        </div>\n    </MessageWarper>\n};\n\nexport default InputForm\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/InputFormSkill.tsx",
    "content": "\nimport { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { getVariablesApi } from \"~/api/apps\";\nimport { useToastContext } from \"~/Providers\";\nimport { useLocalize } from \"~/hooks\";\nimport InputComponent from \"./InputComponent\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"~/components/ui/Select\";\nimport InputFileComponent from \"./InputFileComponent\";\nimport { Button } from \"~/components\";\nimport { emitAreaTextEvent, EVENT_TYPE } from \"../useAreaText\";\nimport { MessageWarper } from \"./MessageBsChoose\";\n\n/**\n * @component 会话报告生成专用表单\n * @description\n * 表单项数据由组件的参数信息和单独接口获取的必填信息及排序信息而来。\n */\nconst InputFormSkill = forwardRef(({ flow, logo }, ref) => {\n    const type = 'chat'\n    const vid = 0\n    const { showToast } = useToastContext();\n    const localize = useLocalize()\n\n    useImperativeHandle(ref, () => ({\n        submit: () => {\n            handleStart()\n        }\n    }));\n\n    // 从 api中获取\n    const [items, setItems] = useState<any[]>([])\n    useEffect(() => {\n        if (flow.flow_type === 5) return\n        // chat -》L1； diff -> 对比测试\n        type === 'chat' ? getVariablesApi({ flow_id: flow.flow_id || flow.id }).then(\n            res => setItems(res)\n        ) : getVariablesApi({ version_id: vid, flow_id: flow.flow_id || flow.id }).then(\n            res => setItems(res)\n        )\n    }, [])\n\n    const handleChange = (index, value) => {\n        setItems((_items) => _items.map((item, i) =>\n            i === index ? { ...item, value } : item))\n    }\n\n    // 文件名 kv关系\n    const fileKindexVpath = useRef({})\n    const handleStart = () => {\n        // 校验\n        const errors = items.reduce((res, el) => {\n            if (el.required && !el.value) {\n                res.push(localize('com_ui_required_field', { field: el.name }))\n            }\n            if (el.type === 'text' && el.value.length > Number(el.maxLength)) {\n                res.push(localize('com_ui_field_length_exceeded', { field: el.name, max: el.maxLength }))\n            }\n            return res\n        }, [])\n        if (errors.length) {\n            showToast({ message: errors.join('\\n'), status: 'error' });\n        }\n\n        // 组装数据，抛出\n        const obj = items\n        const str = items.map((el, i) => `${el.name ? el.name + '：' : ''}${el.type === 'file'\n            ? fileKindexVpath.current[i] : el.value}\\n`).join('')\n\n        const formdata = obj.map(item => ({\n            id: item.nodeId,\n            name: item.name,\n            file_path: item.type === 'file' ? item.value : '',\n            value: item.type === 'file' ? '' : item.value\n        }))\n        console.log('obj, str :>> ', formdata, str);\n        // onStart(obj, str)\n        emitAreaTextEvent({\n            action: EVENT_TYPE.FORM_SUBMIT,\n            data: formdata,\n            nodeId: null,\n            message: str,\n            skill: true\n        })\n    }\n\n    if (items.length === 0) return null\n\n    return <MessageWarper flow={flow} logo={logo}>\n        <div className=\"\">\n            <div className=\"max-h-[520px] overflow-y-auto space-y-2 px-1\">\n                {items.map((item, i) => <div key={item.id} className=\"w-full text-sm\">\n                    {item.name}\n                    <span className=\"text-red-500\">{item.required ? \" *\" : \"\"}</span>\n                    <div className=\"mt-2\">\n                        {item.type === 'text' ? <InputComponent\n                            type='textarea'\n                            password={false}\n                            value={item.value}\n                            onChange={(val) => handleChange(i, val)}\n                        /> :\n                            item.type === 'select' ?\n                                <Select onValueChange={(val) => handleChange(i, val)}>\n                                    <SelectTrigger>\n                                        <SelectValue placeholder=\"\" />\n                                    </SelectTrigger>\n                                    <SelectContent>\n                                        <SelectGroup>\n                                            {\n                                                item.options.map(el => <SelectItem key={el.value} value={el.value}>{el.value}</SelectItem>)\n                                            }\n                                        </SelectGroup>\n                                    </SelectContent>\n                                </Select> :\n                                item.type === 'file' ?\n                                    <InputFileComponent\n                                        isSSO\n                                        disabled={false}\n                                        placeholder={localize('com_file_current_empty')}\n                                        value={''}\n                                        onChange={(e) => fileKindexVpath.current[i] = e}\n                                        fileTypes={[\"pdf\"]}\n                                        suffixes={flow.data.nodes.find(el => el.id === item.nodeId)\n                                            ?.data.node.template.file_path.suffixes || ['xxx']}\n                                        onFileChange={(val: string) => handleChange(i, val)}\n                                        flow={flow}\n                                    ></InputFileComponent> : <></>\n                        }\n                    </div>\n                </div>\n                )}\n            </div>\n            {type === 'chat' && <div className=\"flex justify-end\">\n                <Button size=\"sm\" className=\"mt-4 h-8 px-4\" onClick={handleStart}>{localize('com_ui_start')}</Button>\n            </div>}\n        </div>\n    </MessageWarper>\n});\n\nexport default InputFormSkill"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageBs.tsx",
    "content": "import { CheckIcon, ChevronDown, Loader2 } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { ChatMessageType } from \"~/@types/chat\";\nimport Markdown from \"~/components/Chat/Messages/Content/Markdown\";\nimport { LoadingIcon } from \"~/components/ui/icon/Loading\";\nimport { cn, copyText, formatStrTime } from \"~/utils\";\nimport ChatFile from \"./ChatFile\";\nimport MessageButtons from \"./MessageButtons\";\nimport MessageSource from \"./MessageSource\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\n\nexport const ReasoningLog = ({ loading, msg = '' }) => {\n    const t = useLocalize()\n    const [open, setOpen] = useState(true)\n\n    if (!msg) return null\n\n    return <div className=\"py-1 mb-4\">\n        <div className=\"rounded-sm border\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\" onClick={() => setOpen(!open)}>\n                {loading ? <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    <Loader2 className=\"text-primary duration-300 animate-spin\" />\n                    <span>{t('com_bs_reasoning_thinking')}</span>\n                </div>\n                    : <div className=\"flex items-center font-bold gap-2 text-sm\">\n                        <div className=\"w-5 h-5 bg-[#05B353] rounded-full p-1\" >\n                            <CheckIcon size={14} className='text-white' />\n                        </div>\n                        <span>{t('com_bs_reasoning_done')}</span>\n                    </div>\n                }\n                <ChevronDown className={open && 'rotate-180'} />\n            </div>\n            <div className={cn('bg-[#F5F6F8] dark:bg-[#313336] px-4 py-2 overflow-hidden text-sm ', open ? 'h-auto' : 'h-0 p-0')}>\n                {msg.split('\\n').map((line, index) => (\n                    <p className=\"text-md mb-1 text-muted-foreground\" key={index}>{line}</p>\n                ))}\n            </div>\n        </div>\n    </div>\n}\n\n\nexport default function MessageBs({ logo, title, data, onUnlike = () => { },readOnly, onSource }:\n    { logo: React.ReactNode, title: string, data: ChatMessageType, onUnlike?: any, onSource?: any }) {\n\n    const t = useLocalize()\n    const [message, reasoningLog] = useMemo(() => {\n        const msg = typeof data.message === 'string' ? data.message : data.message?.msg\n        if (!msg) {\n            return ['', '']\n        }\n        const regex = /<think>(.*?)<\\/think>/s;\n        const match = msg.match(regex);\n        if (match) {\n            const outsideContent = msg.replace(regex, ''); // 标签外内容（移除标签及内部）\n            const insideContent = match[1]; // 标签内内容\n            return [outsideContent, insideContent]\n        }\n        return [msg, '']\n    }, [data.message])\n\n    const messageRef = useRef<HTMLDivElement>(null)\n    const handleCopyMessage = () => {\n        copyText(messageRef.current)\n    }\n\n    return <div className=\"bisheng-message flex w-full py-2\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <ReasoningLog loading={!data.end && (data.reasoning_log || reasoningLog)} msg={data.reasoning_log || reasoningLog} />\n            {!(data.reasoning_log && !message && !data.files.length) && <>\n                <div className=\"flex gap-2 items-center\">\n                    {data.sender ? <p className=\"text-gray-600 text-xs mb-1 ml-2\">{data.sender}</p> : <p />}\n                    {/* <div className={`group-hover:opacity-100 opacity-0`}>\n                        <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                    </div> */}\n                </div>\n                <div className=\"min-h-8 px-4 rounded-2xl\">\n                    <div className=\"flex gap-3\">\n                        {logo}\n                        <div className=\"\">\n                            <p className=\"select-none font-semibold text-base mb-1\">{title}</p>\n                            {message || data.files.length ?\n                                <div ref={messageRef} className=\"\">\n                                    {message && <div className=\"bs-mkdown text-base\"><Markdown content={message} isLatestMessage={false} webContent={undefined} /></div>}\n                                    {data.files.length > 0 && data.files.map(file => <ChatFile key={file.path} fileName={file.name} filePath={file.path} />)}\n                                    {/* @user */}\n                                    {data.receiver && <p className=\"text-blue-500 text-sm\">@ {data.receiver.user_name}</p>}\n                                </div>\n                                : <div>{\n                                    !data.end && <LoadingIcon className=\"size-6 text-primary\" />\n                                }</div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </>}\n            {/* 附加信息 */}\n            {\n                data.end && <div className=\"flex justify-between\">\n                    <MessageSource\n                        extra={data.extra || {}}\n                        end={data.end}\n                        source={data.source}\n                        className=\"pl-4\"\n                        onSource={() => onSource?.({\n                            messageId: data.id,\n                            message,\n                        })}\n                    />\n                    {!readOnly && <MessageButtons\n                        id={data.id}\n                        data={data.liked}\n                        text={message}\n                        onUnlike={onUnlike}\n                        onCopy={handleCopyMessage}\n                    >\n                        <span className=\"text-slate-400 text-sm pt-0.5\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                    </MessageButtons>}\n                </div>\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageBsChoose.tsx",
    "content": "import { CheckIcon, File } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { ChatMessageType } from \"~/@types/chat\";\nimport { Button, Textarea } from \"~/components\";\nimport Markdown from \"~/components/Chat/Messages/Content/Markdown\";\nimport { TextToSpeechButton } from \"~/components/Voice/TextToSpeechButton\";\nimport useLocalize from \"~/hooks/useLocalize\";\nimport { downloadFile } from \"~/utils\";\nimport { emitAreaTextEvent, EVENT_TYPE } from \"../useAreaText\";\nimport { changeMinioUrl } from \"./ResouceModal\";\n\nexport default function MessageBsChoose({ type = 'choose', disabled, logo, data, flow }\n    : { type?: string, disabled?: Boolean, logo: React.ReactNode, data: ChatMessageType }) {\n    const t = useLocalize()\n    const [selected, setSelected] = useState(data.message.hisValue || '')\n    const handleSelect = (obj) => {\n        if (selected) return\n        emitAreaTextEvent({\n            action: EVENT_TYPE.MESSAGE_INPUT, data: {\n                nodeId: data.message.node_id,\n                message: JSON.stringify({\n                    ...data.message,\n                    hisValue: obj.id\n                }),\n                msgId: data.id,\n                data: {\n                    [data.message.key]: obj.id\n                }\n            }\n        })\n\n        setSelected(obj.id)\n    }\n\n    // download file\n    const handleDownloadFile = (file) => {\n        downloadFile(changeMinioUrl(file.path), file.name)\n    }\n\n    // input\n    const textRef = useRef(null)\n    const inputSended = useMemo(() => !!data.message.hisValue || false, [data.message.hisValue])\n    const handleSend = () => {\n        const val = textRef.current.value\n        if (!val.trim()) return\n        emitAreaTextEvent({\n            action: EVENT_TYPE.MESSAGE_INPUT, data: {\n                nodeId: data.message.node_id,\n                message: JSON.stringify({\n                    ...data.message,\n                    hisValue: val\n                }),\n                msgId: data.id,\n                data: {\n                    [data.message.key]: val\n                }\n            }\n        })\n    }\n\n    const files = useMemo(() => {\n        return typeof data.files === 'string' ? [] : data.files\n    }, [data.files])\n\n    return <MessageWarper flow={flow} logo={logo} >\n        <div className=\"group\">\n            <div className=\"text-base text-[#0D1638] dark:text-[#CFD5E8]\">\n                {/* message */}\n                <div><Markdown content={data.message.msg} isLatestMessage={false} webContent={undefined} /></div>\n                {/* files */}\n                <div>\n                    {files.map((file) => <div\n                        className=\"flex gap-2 w-52 border border-gray-200 shadow-sm bg-gray-50 dark:bg-gray-600 px-4 py-2 rounded-sm cursor-pointer\"\n                        onClick={() => handleDownloadFile(file)}\n                    >\n                        <div className=\"flex items-center\"><File size={14} /></div>\n                        <div>\n                            <h1 className=\"text-sm font-bold\">{file.name}</h1>\n                            <p className=\"text-xs text-gray-400 mt-1\">{t('com_bschoose_click_to_download')}</p>\n                        </div>\n                    </div>)\n                    }\n                </div>\n                {/* select or input */}\n                <div className=\"mt-2\">\n                    {type === 'input' ?\n                        <div>\n                            <Textarea\n                                className=\"w-full\"\n                                ref={textRef}\n                                disabled={inputSended || disabled}\n                                defaultValue={data.message.input_msg || data.message.hisValue}\n                            />\n                            <div className=\"flex justify-end mt-2\">\n                                <Button\n                                    className=\"h-8\"\n                                    disabled={inputSended || disabled}\n                                    onClick={handleSend}\n                                >{inputSended ? t('com_bschoose_confirmed') : t('com_bschoose_confirm')}</Button>\n                            </div>\n                        </div>\n                        : <div>\n                            {data.message.options.map(opt => <div\n                                key={opt.id}\n                                className=\"min-w-56 border dark:bg-background rounded-xl p-3 mt-2 hover:bg-gray-50 cursor-pointer flex justify-between items-center break-all\"\n                                onClick={() => handleSelect(opt)}\n                            >\n                                {opt.label}\n                                {selected === opt.id && <div className=\"size-5 bg-primary rounded-md p-1\" >\n                                    <CheckIcon size={14} className='text-white' />\n                                </div>}\n                            </div>)\n                            }\n                        </div>\n                    }\n                    <div className=\"flex justify-end py-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n                        {data.message.msg && <TextToSpeechButton messageId={String(data.id)} text={data.message.msg} />}\n                    </div>\n                </div>\n            </div>\n        </div>\n    </MessageWarper>\n};\n\n\nexport const MessageWarper = ({ flow, logo, children }) => {\n    return <div className=\"max-w-[600px] min-w-[384px] w-full px-4\">\n        <div className=\"flex items-center gap-3 font-medium pt-3\">\n            <div className=\"flex-shrink-0\">\n                {logo}\n            </div>\n            <span className=\"text-base\">{flow.name}</span>\n        </div>\n\n        {/* <p className=\"text-sm text-gray-500 mt-2 ml-[calc(24px+0.75rem)]\">\n            {flow.description || '无描述信息'}\n        </p> */}\n\n        <div className=\"p-3 ml-6\">\n            {children}\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageButtons.tsx",
    "content": "import { useState } from \"react\";\nimport { copyTrackingApi, likeChatApi } from \"~/api/apps\";\nimport MessageIcon from \"~/components/ui/icon/Message\";\nimport { TextToSpeechButton } from \"~/components/Voice/TextToSpeechButton\";\n\nconst enum ThumbsState {\n    Default = 0,\n    ThumbsUp,\n    ThumbsDown\n}\n\nexport default function MessageButtons({ id, text, onCopy, data, onUnlike, children = null }) {\n    const [state, setState] = useState<ThumbsState>(data)\n    const [copied, setCopied] = useState(false)\n\n    const handleClick = (type: ThumbsState) => {\n        setState(_type => {\n            const newType = type === _type ? ThumbsState.Default : type\n            // api\n            likeChatApi(id, newType);\n            return newType\n        })\n        if (state !== ThumbsState.ThumbsDown && type === ThumbsState.ThumbsDown) onUnlike?.(id)\n    }\n\n    const handleCopy = (e) => {\n        setCopied(true)\n        onCopy()\n        setTimeout(() => {\n            setCopied(false)\n        }, 2000);\n\n        copyTrackingApi(id) // 上报\n    }\n\n    return <div className=\"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n        {children}\n        <TextToSpeechButton messageId={String(id)} text={text} />\n        <MessageIcon\n            type='copy'\n            className={`cursor-pointer ${copied && 'text-primary hover:text-primary'}`}\n            onClick={handleCopy}\n        />\n        <MessageIcon\n            type='like'\n            className={`cursor-pointer ${state === ThumbsState.ThumbsUp && 'text-primary hover:text-primary'}`}\n            onClick={() => handleClick(ThumbsState.ThumbsUp)}\n        />\n        <MessageIcon\n            type='unLike'\n            className={`cursor-pointer ${state === ThumbsState.ThumbsDown && 'text-primary hover:text-primary'}`}\n            onClick={() => handleClick(ThumbsState.ThumbsDown)}\n        />\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageFeedbackForm.tsx",
    "content": "\nimport { forwardRef, useImperativeHandle, useRef, useState } from 'react';\nimport useLocalize from \"~/hooks/useLocalize\";\nimport { disLikeCommentApi } from '~/api/apps';\nimport { Button, Dialog, DialogContent, DialogHeader, DialogTitle, Textarea } from '~/components';\nimport { useToastContext } from '~/Providers';\n\nconst MessageFeedbackForm = forwardRef((props, ref) => {\n    const t = useLocalize()\n\n    const [open, setOpen] = useState(false);\n    const [error, setError] = useState(false);\n\n    const msgRef = useRef<HTMLTextAreaElement | null>(null)\n    const chatIdRef = useRef<string | null>(null)\n\n    useImperativeHandle(ref, () => ({\n        openModal: (chatId) => {\n            setOpen(true)\n            chatIdRef.current = chatId\n            if (msgRef.current) {\n                msgRef.current.value = ''\n            }\n        }\n    }));\n\n    const { showToast } = useToastContext();\n    const handleSubmit = () => {\n        if (!msgRef.current?.value) {\n            showToast({ message: t('com_feedback_required'), status: 'warning' });\n            return setError(true);\n        }\n\n        disLikeCommentApi(chatIdRef.current as string, msgRef.current.value)\n        setOpen(false);\n        setError(false);\n    };\n\n    return <Dialog open={open} onOpenChange={setOpen} >\n        <DialogContent className=\"sm:max-w-[425px]\">\n            <DialogHeader>\n                <DialogTitle>{t('com_feedback_title')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"\">\n                <p className=\"mb-2\"></p>\n                <Textarea ref={msgRef} maxLength={9999} className={`textarea ${error ? 'border border-red-400' : ''}`} ></Textarea>\n                <div className=\"flex justify-end gap-4 mt-4\">\n                    <Button className='px-11' variant=\"outline\" onClick={() => setOpen(false)}>{t('com_ui_cancel')}</Button>\n                    <Button className='px-11' onClick={handleSubmit}>{t('com_ui_submit')}</Button>\n                </div>\n            </div>\n        </DialogContent>\n    </Dialog>\n});\n\nexport default MessageFeedbackForm;\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageFile.tsx",
    "content": "import { formatStrTime } from \"~/utils\"\nimport ChatFile from \"./ChatFile\"\n\nexport default function MessageFile({ data, title, logo }) {\n\n    return <div className=\"flex w-full\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <div className=\"flex justify-between items-center mb-1\">\n                {data.sender ? <p className=\"text-gray-600 text-xs\">{data.sender}</p> : <p />}\n                <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                </div>\n            </div>\n            <div className=\"min-h-8 px-4 py-2\">\n                <div className=\"flex gap-3\">\n                    {logo}\n                    <div>\n                        <p className=\"select-none font-semibold text-base mb-2\">{title}</p>\n                        <ChatFile fileName={data.files[0]?.file_name} filePath={data.files[0]?.file_url} />\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div >\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageNodeRun.tsx",
    "content": "\n\nimport { Loader2 } from \"lucide-react\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\nexport default function MessageNodeRun({ data }) {\n\n    const t = useLocalize()\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\">\n                <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    {\n                        <Loader2 className=\"text-primary animate-spin duration-300\" />\n                    }\n                    <span>{data.message.name}</span>\n                </div>\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageRemark.tsx",
    "content": "import Markdown from \"~/components/Chat/Messages/Content/Markdown\";\nimport { TextToSpeechButton } from \"~/components/Voice/TextToSpeechButton\";\n\n// 开场白\nexport default function MessageRemark({readOnly, logo, title, message }:\n    { logo: React.ReactNode, title: string, message: string }) {\n\n    return <div className=\"flex w-full\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <div className=\"min-h-8 px-4 pt-4 pb-2 rounded-2xl\">\n                <div className=\"flex gap-3\">\n                    {logo}\n                    <div className=\"text-sm max-w-[calc(100%-24px)]\">\n                        <p className=\"select-none font-semibold text-base mb-1\">{title}</p>\n                        <div className=\"bs-mkdown text-base\"><Markdown content={message} isLatestMessage={false} webContent={undefined} /></div>\n                    </div>\n                </div>\n            </div>\n            <div className=\"flex justify-end pr-4\">\n                {\n                    message && !readOnly && <TextToSpeechButton\n                        className={'md:opacity-0 md:group-hover:opacity-100'}\n                        messageId={message}\n                        text={message}\n                    />\n                }\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageRunlog.tsx",
    "content": "import { CheckIcon, ChevronDown, CircleAlert, Loader2 } from \"lucide-react\";\nimport { useRecoilState } from \"recoil\";\nimport { useMemo, useState } from \"react\";\nimport { chatsState } from \"../store/atoms\";\nimport { cn } from \"~/utils\";\nimport useLocalize from \"~/hooks/useLocalize\";\n\nexport default function MessageRunlog({ data }) {\n    const [open, setOpen] = useState(false)\n    const t = useLocalize()\n\n    // 该组件只有在助手测试页面用到，临时使用耦合方案，取 toollist来匹配 name\n    const [_chatsState] = useRecoilState(chatsState)\n    const assistantState = useMemo(() => {\n        return _chatsState[data.chat_id].flow\n    }, [_chatsState, data])\n\n    const [title, lost] = useMemo(() => {\n        let lost = false\n        let title = ''\n        const status = data.end ? t('com_runlog_used') : t('com_runlog_using')\n        const assistant: any = assistantState as any\n        if (data.category === 'flow') {\n            const flow = assistant?.flow_list?.find((flow: any) => flow.id === data.message.tool_key)\n            // if (!flow) throw new Error('调试日志无法匹配到使用的技能详情，id:' + data.message.tool_key)\n            if (flow) {\n                lost = flow.status === 1\n                title = lost ? `${flow.name} ${t('com_runlog_offline')}` : `${status} ${flow.name}`\n            } else {\n                title = t('com_runlog_flow_deleted')\n            }\n        } else if (data.category === 'tool') {\n            const tool = assistant?.tool_list?.find((tool: any) => tool.tool_key === data.message.tool_key)\n            // if (!tool) throw new Error('调试日志无法匹配到使用的工具详情，id:' + data.message.tool_key)\n\n            title = tool ? `${status} ${tool.name}` : t('com_runlog_tool_deleted')\n        } else if (data.category === 'knowledge') {\n            const knowledge = assistant?.knowledge_list?.find((knowledge: any) => knowledge.id === parseInt(data.message.tool_key))\n            // if (!knowledge) throw new Error('调试日志无法匹配到使用的知识库详情，id:' + data.message.tool_key)\n\n            title = knowledge ? `${data.end ? t('com_runlog_searched') : t('com_runlog_searching')} ${knowledge.name}` : t('com_runlog_knowledge_deleted')\n        } else {\n            title = data.end ? t('com_runlog_done') : t('com_runlog_thinking')\n        }\n        return [title, lost]\n    }, [assistantState, data])\n\n    // 没任何匹配的工具，隐藏\n    const listsLen = ((assistantState as any)?.tool_list?.length ?? 0)\n        + ((assistantState as any)?.knowledge_list?.length ?? 0)\n        + ((assistantState as any)?.flow_list?.length ?? 0)\n    if (listsLen === 0) return null\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm border max-w-[90%]\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\" onClick={() => setOpen(!open)}>\n                <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    {\n                        data.end ? (lost ? <div className=\"w-5 h-5 bg-red-500 rounded-full p-1\" >\n                            <CircleAlert size={14} className='text-white' />\n                        </div> : <div className=\"w-5 h-5 bg-[#05B353] rounded-full p-1\" >\n                            <CheckIcon size={14} className='text-white' />\n                        </div>) :\n                            <Loader2 className=\"text-primary duration-300 animate-spin\" />\n                    }\n                    <span>{title}</span>\n                </div>\n                <ChevronDown className={open ? 'rotate-180' : undefined} />\n            </div>\n            <div className={cn('bg-[#F5F6F8] dark:bg-[#313336] px-4 py-2 overflow-hidden text-sm ', open ? 'h-auto' : 'h-0 p-0')}>\n                {data.thought.split('\\n').map((line, index) => (\n                    <p className=\"text-md mb-1 text-muted-foreground\" key={index}>{line}</p>\n                ))}\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageSource.tsx",
    "content": "import { Info } from \"lucide-react\";\nimport useLocalize from \"~/hooks/useLocalize\";\nimport { Badge } from \"~/components/ui/Badge\";\n\nconst enum SourceType {\n    /** 无溯源 */\n    NONE = 0,\n    /** 文件 */\n    FILE = 1,\n    /** 无权限 */\n    NO_PERMISSION = 2,\n    /** 链接s */\n    LINK = 3,\n    /** 已命中的QA */\n    HAS_QA = 4,\n}\n\nexport default function MessageSource({ extra, end, source, className = '', onSource }) {\n\n    const t = useLocalize()\n\n    if (source === SourceType.NONE || !end) return <div className={className}></div>\n    const extraObj = extra ? (typeof extra === 'string' ? JSON.parse(extra) : extra) : null\n\n    return <div className={className}>\n        {(() => {\n            switch (source) {\n                case SourceType.FILE:\n                    return <Badge className=\"cursor-pointer\" onClick={onSource}>{t('com_msg_source_reference')}</Badge>;\n                case SourceType.NO_PERMISSION:\n                    return <p className=\"flex text-xs text-gray-400 gap-1 items-center\"><Info className=\"text-red-300\" />{t('com_msg_source_no_permission')}</p>;\n                case SourceType.LINK:\n                    return (\n                        <div className=\"flex flex-col text-blue-500 text-xs\">\n                            {\n                                extraObj.doc?.map(el => <a key={el.url} href={el.url} target=\"_blank\">{el.title}</a>)\n                            }\n                        </div>\n                    );\n                case SourceType.HAS_QA:\n                    return <a href={extraObj.url} target=\"_blank\" className=\"text-blue-500 text-xs\">{t('sourceFromQaLibrary')}：{extraObj.qa}</a>;\n                default:\n                    return null;\n            }\n        })()}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageSystem.tsx",
    "content": "import { Copy } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport Markdown from \"~/components/Chat/Messages/Content/Markdown\";\nimport { useToastContext } from \"~/Providers\";\nimport { useLocalize } from \"~/hooks\";\nimport { copyText } from \"~/utils\";\n\nexport default function MessageSystem({ title, logo, data }) {\n    const { showToast } = useToastContext();\n    const localize = useLocalize();\n\n    const handleCopy = (dom) => {\n        copyText(dom)\n\n        showToast({ message: localize('com_message_content_copied'), status: 'success' });\n    }\n\n    // 日志markdown\n    const logMkdown = useMemo(\n        () => (\n            data.thought && <Markdown content={data.thought.toString()} isLatestMessage={false} webContent={undefined} />\n        ),\n        [data.thought]\n    )\n\n    const border = { system: 'border-slate-500', question: 'border-amber-500', processing: 'border-cyan-600', answer: 'border-lime-600', report: 'border-slate-500', guide: 'border-none' }\n\n    return <div className=\"py-1 px-4\">\n        <div className=\"flex gap-3\">\n            {logo}\n            <div className=\"\">\n                <p className=\"select-none font-semibold text-base mb-2\">{title}</p>\n                <div className={`relative rounded-2xl px-6 py-3 pb-1.5 border text-base dark:bg-gray-900 ${data.category === 'guide' ? 'bg-[#EDEFF6]' : 'bg-slate-50'} ${border[data.category || 'system']}`}>\n                    {logMkdown}\n                    {data.category === 'report' && <Copy className=\" absolute right-4 top-2 cursor-pointer\" onClick={(e) => handleCopy(e.target.parentNode)}></Copy>}\n                </div>\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/MessageUser.tsx",
    "content": "import { RefreshCw, Search, SquarePen } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { useRecoilState } from \"recoil\";\nimport { useLocalize } from \"~/hooks\";\nimport { formatStrTime } from \"~/utils\";\nimport { bishengConfState } from \"../store/atoms\";\nimport { emitAreaTextEvent, EVENT_TYPE } from \"../useAreaText\";\n\nexport default function MessageUser({ useName, data, showButton, disabledSearch = false, readOnly }) {\n    const avatar = useMemo(() => {\n        return <div className=\"w-6 h-6 min-w-6 text-white bg-primary rounded-full flex justify-center items-center text-xs\">{useName.substring(0, 2).toUpperCase()}</div>\n    }, [useName])\n    const [config] = useRecoilState(bishengConfState)\n    const localize = useLocalize()\n\n    const msg = useMemo(() => {\n        const res = typeof data.message === 'string' ? data.message : data.message[data.chatKey]\n        // hack   handle user input json\n        const hackStr = typeof res === 'string' ? res : JSON.stringify(data.message)\n        return hackStr.replace(/\\\\n/g, '\\n')\n    }, [])\n\n    const handleResend = (send) => {\n        emitAreaTextEvent({\n            action: EVENT_TYPE.RE_ENTER,\n            autoSend: send,\n            text: msg\n        })\n    }\n\n    const handleSearch = () => {\n        window.open(config?.dialog_quick_search + encodeURIComponent(msg))\n    }\n\n    return <div className=\"flex w-full py-2\">\n        <div className=\"w-fit group min-h-8 max-w-[90%]\">\n            <div className=\"flex justify-start items-center gap-2 ml-4\">\n                {/* <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                </div> */}\n                {/* {useName && <p className=\"text-gray-600 text-sm\">{useName}</p>} */}\n            </div>\n            <div className=\"rounded-2xl px-4\">\n                <div className=\"flex gap-3\">\n                    {avatar}\n                    <div className=\"\">\n                        <p className=\"select-none font-semibold text-base mb-1\">{useName}</p>\n                        <div className=\"text-[#0D1638] dark:text-[#CFD5E8] text-base break-all whitespace-break-spaces\">{msg}</div>\n                    </div>\n                </div>\n            </div>\n            {/* footer */}\n            {!readOnly && <div className=\"flex justify-end mt-2 opacity-0 group-hover:opacity-100 transition-opacity gap-2\">\n                <span className=\"text-slate-400 text-sm pt-0.5\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                <div className=\"flex gap-0.5 text-gray-400 cursor-pointer self-end\">\n                    {showButton && <SquarePen className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(false)} />}\n                    {showButton && <RefreshCw className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(true)} />}\n                    {!disabledSearch && config?.dialog_quick_search && <Search className=\"size-6 p-1 hover:text-gray-500\" onClick={handleSearch} />}\n                </div>\n            </div>}\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/components/ResouceModal.tsx",
    "content": "import { CircleHelp, Import } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { getSourceChunksApi, splitWordApi } from \"~/api/apps\";\nimport { Dialog, DialogContent } from \"~/components\";\nimport FileViewPanne from \"~/components/PreviewFile\";\nimport { LoadingIcon } from \"~/components/ui/icon/Loading\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"~/components/ui/Tooltip2\";\nimport { downloadFile } from \"~/utils\";\n\n// 顶部答案区\nconst Anwser = ({ id, msg, onInit, onAdd, fullScreen = false }) => {\n    const [html, setHtml] = useState('')\n    const pRef = useRef(null)\n\n    // init\n    useEffect(() => {\n        onInit([])\n        const loadData = () => {\n            splitWordApi(msg, id).then((res) => {\n                const data = res.data\n                if (res.status_code === 14001) {\n                    // 自动重试\n                    return setTimeout(() => {\n                        loadData()\n                    }, 1800);\n                }\n                // 匹配\n                const reg = new RegExp(`(${data.join('|')})`, 'g')\n                // markdown images replace imgname\n                setHtml(msg.replace(/!\\[.+\\]\\(.+\\/(.+?)\\)/g, '$1').replace(reg, '<span>$1</span>'))\n                onInit(data)\n            })\n        }\n        msg && loadData()\n    }, [])\n\n    // add \n    useEffect(() => {\n        const handleclick = (e) => {\n            if (e.target.tagName === 'SPAN') {\n                onAdd(e.target.innerText)\n            }\n        }\n        pRef.current.addEventListener('click', handleclick)\n        return () => pRef.current?.removeEventListener('click', handleclick)\n    }, [])\n\n    return <div className=\"bg-gray-100 dark:bg-[#3C4048] rounded-md py-4 px-2 max-h-24 mb-4 overflow-y-auto\" style={{ display: fullScreen ? 'none' : 'block' }}>\n        <p ref={pRef} className=\"anwser-souce\" dangerouslySetInnerHTML={{ __html: html }}></p>\n    </div>\n}\n\n// \nlet timer: any = null\nconst ResultPanne = ({ chatId, words, data, onClose, onAdd, children, fullScreen = false, closeDialog }:\n    { chatId: string, words: string[], data: any, onClose: any, fullScreen: boolean, onAdd: any, children: any, closeDialog: () => void }) => {\n    const [editCustomKey, setEditCustomKey] = useState(false)\n    const inputRef = useRef(null)\n    const { t } = useTranslation()\n\n    // 移动端\n    const [collapse, setCollapse] = useState(true)\n    const [isMobile, setIsMobile] = useState(true)\n    const [width, setWidth] = useState(window.innerWidth);\n    const [height, setHeight] = useState(window.innerHeight);\n    const checkIsMobile = () => {\n        if (width < 640) {\n            setIsMobile(true)\n        } else {\n            setIsMobile(false)\n        }\n    }\n    useEffect(() => {\n        const handleResize = () => {\n            setWidth(window.innerWidth);\n            setHeight(window.innerHeight);\n        };\n        window.addEventListener(\"resize\", handleResize);\n        checkIsMobile()\n        return () => {\n            window.removeEventListener(\"resize\", handleResize);\n        }\n    }, [width])\n    // 移动端 e\n\n    const handleAddKeyword = (str: string) => {\n        setEditCustomKey(false)\n        if (!str) return\n        if (inputRef.current) inputRef.current.value = ''\n        onAdd(str)\n    }\n\n    // 文件s\n    const [files, setFiles] = useState([])\n    const [file, setFile] = useState(null)\n    const loadFiles = () => {\n        // if (!words.length) return setFiles([])\n        clearTimeout(timer) // 简单防抖\n        timer = setTimeout(() => {\n            getSourceChunksApi(chatId, data.messageId, words.join(';')).then((data) => {\n                const _files = data\n                setFiles(_files)\n                // 默认打开第一个文件\n                _files && setFile(_files[0])\n            })\n        }, 200);\n    }\n\n    useEffect(() => {\n        loadFiles()\n    }, [words])\n\n    // input show\n    const handleOpenInput = () => {\n        setEditCustomKey(true)\n        setTimeout(() => document.getElementById('taginput')?.focus(), 0);\n    }\n\n    return <div className=\"flex gap-4 relative\" style={{ height: fullScreen ? '100vh' : !isMobile ? 'calc(100vh - 10rem)' : 'calc(100vh - 4rem)' }}>\n        {\n            isMobile && <div className=\"absolute top-0 left-4 z-50 bg-gray-100 dark:bg-gray-950 py-1 px-2 pb-2 rounded-md\">\n                {!collapse && <span onClick={() => { setCollapse(true) }} className=\"\">{t('com_source_modal_collapse')}</span>}\n                {collapse && <span onClick={() => { setCollapse(false) }} className=\"\">{t('com_source_modal_expand')}</span>}\n            </div>\n        }\n        {\n            isMobile && <div className=\"absolute top-0 right-4 z-10 bg-gray-100 dark:bg-gray-950 py-1 px-2 pb-2 rounded-md\">\n                <span onClick={closeDialog} >{t('com_source_modal_close')}</span>\n            </div>\n        }\n        {/* left */}\n        {\n            (!isMobile || !collapse) && <div className=\"sm:w-[300px] bg-gray-100 dark:bg-[#3C4048] rounded-md py-4 px-2 h-full overflow-y-auto no-scrollbar w-[200px] max-h-[100%] sm:max-h-full absolute sm:static z-20 sm:z-auto\">\n                {/* label */}\n                <div className=\"mb-4 text-sm font-bold space-x-1 hidden sm:block\">\n                    <div className=\"flex\">\n                        <span>{t('com_source_modal_filter_labels')}</span>\n                        <TooltipProvider delayDuration={100}>\n                            <Tooltip>\n                                <TooltipTrigger>\n                                    <CircleHelp className=\"w-4 h-4\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"w-[170px] break-words\">{t('com_source_modal_filter_labels_tip')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                </div>\n                <div className=\"flex flex-wrap gap-2 text-sm\">\n                    {words.map((str, i) => <div key={str} className=\"badge rounded-md px-2 badge-info h-[auto] gap-2 text-gray-600 bg-[rgba(53,126,249,.15)] dark:text-slate-50\">{str}<span className=\"cursor-pointer font-thin\" onClick={() => onClose(i)}>x</span></div>)}\n                    {\n                        editCustomKey ? <div className=\"badge badge-info cursor-pointer bg-[rgba(53,126,249,.15)]\"><input ref={inputRef} id=\"taginput\" className=\"w-20 h-4 py-0 border-none outline-none bg-gray-50\"\n                            onKeyDown={(event) => {\n                                if (event.key === \"Enter\" && !event.shiftKey) {\n                                    handleAddKeyword(inputRef.current.value);\n                                }\n                            }}\n                            onBlur={() => {\n                                handleAddKeyword(inputRef.current.value);\n                            }}></input></div> :\n                            <div className=\"badge badge-info rounded-md px-2 cursor-pointer bg-[rgba(53,126,249,.86)] text-gray-50\" onClick={handleOpenInput}><span>{t('com_source_modal_add_custom')}</span></div>\n                    }\n                </div>\n                {/* files */}\n                <div className=\"mt-4\">\n                    <p className=\"mb-4 text-sm font-bold\">{t('com_source_modal_source_docs')}</p>\n                    {files.map(_file =>\n                        _file.right ? <div key={_file.id} onClick={() => setFile(_file)} className={`group rounded-xl bg-[#fff] dark:bg-[#303134] hover-bg-gray-200 flex items-center px-4 mb-2 relative min-h-16 cursor-pointer ${file?.id === _file.id && 'bg-gray-200'}`}>\n                            <p className=\"text-sm break-all\">{_file.fileName}</p>\n                            <div className=\"absolute right-1 top-1 gap-2 hidden group-hover:flex\">\n                                {\n                                    _file.parse_type === 'uns' && _file.fileUrl && <Tooltip delayDuration={200}>\n                                        <TooltipTrigger >\n                                            <a href=\"javascript:;\" onClick={(event) => { downloadFile(changeMinioUrl(_file.fileUrl), _file.fileName.replace(/\\.[\\w\\d]+$/, '.pdf')); event.stopPropagation() }} >\n                                                <Import color=\"rgba(53,126,249,1)\" size={22} strokeWidth={1.5}></Import>\n                                            </a>\n                                        </TooltipTrigger>\n\n                                        <TooltipContent\n                                            className={`text-sm shadow-md`}\n                                            avoidCollisions={false}\n                                            sticky=\"always\"\n                                        >\n                                            <div className=\" max-w-96 text-left break-all whitespace-normal\">{t('com_source_modal_download_layered_pdf')}</div>\n                                        </TooltipContent>\n                                    </Tooltip>\n                                }\n                                {\n                                    _file.originUrl && <Tooltip delayDuration={200}>\n                                        <TooltipTrigger >\n                                            <a href=\"javascript:;\" onClick={(event) => { downloadFile(changeMinioUrl(_file.originUrl), _file.fileName); event.stopPropagation() }} >\n                                                <Import color=\"rgba(53,126,249,1)\" size={22} strokeWidth={1.5}></Import>\n                                            </a>\n                                        </TooltipTrigger>\n\n                                        <TooltipContent\n                                            className={`text-sm shadow-md`}\n                                            avoidCollisions={false}\n                                            sticky=\"always\"\n                                        >\n                                            <div className=\" max-w-96 text-left break-all whitespace-normal\">{t('com_source_modal_download_original')}</div>\n                                        </TooltipContent>\n                                    </Tooltip>\n                                }\n                            </div>\n                            <span className=\"absolute right-1 bottom-1 text-blue-400 text-sm\">{_file.score}</span>\n                        </div> :\n                            <div key={_file.id} className={`msk group rounded-xl bg-[#fff] hover-bg-gray-200 flex items-center px-4 mb-2 relative min-h-16 cursor-pointer ${file?.id === _file.id && 'bg-gray-200'}`}>\n                                <p className=\"text-sm blur-sm\">{t('com_source_modal_mask_name')}</p>\n                                <span className=\"absolute right-1 bottom-1 text-blue-400 text-sm\">{_file.score}</span>\n                            </div>\n                    )}\n                    {!files.length && <p className=\"text-sm text-center mt-10 text-gray-500\">{t('com_source_modal_no_files')}</p>}\n                </div>\n            </div>\n        }\n        {/* file pane */}\n        {file && children(file)}\n    </div>\n}\n\nexport const ResouceContent = ({ data, setOpen, fullScreen = false }) => {\n\n    const { t } = useTranslation()\n\n    const [keywords, setKeywords] = useState([])\n    const handleAddWord = (word: string) => {\n        // 去重 更新\n        setKeywords(oldWords => oldWords.find(wd => wd === word) ? oldWords : [...oldWords, word])\n    }\n\n    const handleDelKeyword = (index: number) => {\n        setKeywords(keywords.filter((wd, i) => i !== index))\n    }\n\n    const [loading, setLoading] = useState(true)\n    const handleAnwserInit = (words) => {\n        setKeywords(words)\n        if (words.length) {\n            setLoading(false)\n        }\n    }\n\n\n    return <div className=\"relative\">\n        {\n            loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        }\n        <Anwser\n            id={data.messageId}\n            fullScreen={fullScreen}\n            msg={data.message}\n            onInit={handleAnwserInit}\n            onAdd={handleAddWord}></Anwser>\n        <ResultPanne\n            words={keywords}\n            fullScreen={fullScreen}\n            chatId={data.chatId}\n            data={data}\n            onClose={handleDelKeyword}\n            onAdd={handleAddWord}\n            closeDialog={() => setOpen(false)}\n        >\n            {\n                (file) => file.fileUrl ? <FileViewPanne file={file} /> :\n                    <div className=\"flex-1 bg-gray-100 dark:bg-[#3C4048] rounded-md text-center\">\n                        <p className=\"text-gray-500 text-md mt-[40%]\">{t('com_source_modal_file_url_invalid')}</p>\n                    </div>\n            }\n        </ResultPanne>\n    </div>\n};\n\n\nconst ResouceModal = forwardRef((props, ref) => {\n    // labels\n\n    const [open, setOpen] = useState(false)\n    const [data, setData] = useState<any>({})\n    useImperativeHandle(ref, () => ({\n        openModal: (data) => {\n            setOpen(true)\n            setData(data)\n        }\n    }));\n\n    return <Dialog open={open} onOpenChange={setOpen} >\n        <DialogContent className=\"min-w-[80%]\">\n            {open && <ResouceContent data={data} setOpen={setOpen} />}\n        </DialogContent>\n    </Dialog>\n});\n\n\nexport const changeMinioUrl = (url: string) => {\n    return url.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)\n}\n\nexport default ResouceModal\n"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { ChatMessageType, FlowData } from \"~/@types/chat\";\nimport { getAssistantDetailApi, getChatHistoryApi, getDeleteFlowApi, getFlowApi, postBuildInit } from \"~/api/apps\";\nimport { useToastContext } from \"~/Providers\";\nimport ChatView from \"./ChatView\";\nimport { chatIdState, chatsState, currentChatState, runningState, tabsState } from \"./store/atoms\";\nimport { AppLostMessage } from \"./useWebsocket\";\n\nconst API_VERSION = 'v1';\nexport const enum FLOW_TYPES {\n    WORK_FLOW = 10,\n    ASSISTANT = 5,\n    SKILL = 1,\n}\n\nexport default function index({ chatId = '', flowId = '', shareToken = '', flowType = '' }) {\n    const { conversationId: _cid, fid: _fid, type: _type } = useParams();\n    const cid = _cid || chatId;\n    const fid = _fid || flowId;\n    const type = _type || flowType;\n    const [readOnly] = useState(shareToken);\n    const [chats, setChats] = useRecoilState(chatsState)\n    const [__, setRunningState] = useRecoilState(runningState)\n    const [_, setChatId] = useRecoilState(chatIdState)\n    const chatState = useRecoilValue(currentChatState)\n    const build = useBuild()\n\n    // console.log('[chatState] :>> ', chatState);\n    // console.log('[runningState] :>> ', __);\n    // 切换会话\n    const init = async () => {\n        if (!cid) return;\n\n        let flowData: FlowData | null = null\n        let messages: ChatMessageType[] = []\n        const currentData = chats[cid]\n        let error = { code: '', data: null }\n\n        setChatId(cid!) // 切换会话\n\n        const numericType = Number(type);\n\n        if (currentData) { // 有缓存不重复加载\n            numericType === FLOW_TYPES.SKILL && setRunningState((prev) => {\n                // 技能重置输入框状态\n                return {\n                    ...prev,\n                    [cid]: {\n                        ...(prev?.[cid] || {}),\n                        inputDisabled: false,\n                    },\n                };\n            })\n            return\n        };\n\n        switch (numericType) {\n            case FLOW_TYPES.SKILL:\n            case FLOW_TYPES.WORK_FLOW:\n                // 获取详情和历史消息\n                const [flowRes, msgRes] = await Promise.all([\n                    getFlowApi(fid!, API_VERSION, shareToken),\n                    getChatHistoryApi({ flowId: fid, chatId: cid, flowType: type, shareToken })\n                ])\n\n                if (flowRes.status_code !== 200) {\n                    error = { code: AppLostMessage, data: null }\n                    const lostFlow = await getDeleteFlowApi(cid)\n                    flowRes.data = {\n                        id: lostFlow.data.flow_id,\n                        name: lostFlow.data.flow_name,\n                        logo: lostFlow.data.flow_logo,\n                        flow_type: lostFlow.data.flow_type,\n                    }\n                }\n                messages = msgRes.reverse()\n                flowData = { ...flowRes.data, isNew: !messages.length }\n\n                // 插入分割线\n                // if (messages.length) {\n                //     messages.push({\n                //         ...baseMsgItem,\n                //         id: Math.random() * 1000000,\n                //         category: 'divider',\n                //         message: '以上为历史消息',\n                //     })\n                // }\n                if (numericType === FLOW_TYPES.SKILL) {\n                    try {\n                        await build(flowData, cid);\n                    } catch (error) { }\n                }\n                break;\n            case FLOW_TYPES.ASSISTANT:\n                const [assistantRes, historyRes] = await Promise.all([\n                    getAssistantDetailApi(fid, shareToken),\n                    getChatHistoryApi({ flowId: fid, chatId: cid, flowType: type, shareToken })\n                ]);\n\n                if (assistantRes.status_code !== 200) {\n                    error = { code: AppLostMessage, data: null };\n                    const lostFlow = await getDeleteFlowApi(cid)\n                    assistantRes.data = {\n                        name: lostFlow.data.flow_name,\n                        logo: lostFlow.data.flow_logo,\n                        flow_type: lostFlow.data.flow_type,\n                    }\n                }\n                messages = historyRes.reverse();\n                flowData = { ...assistantRes.data, flow_type: FLOW_TYPES.ASSISTANT, isNew: !messages.length };\n                break;\n            default:\n        }\n\n        setChats(prevChats => ({\n            ...prevChats,\n            [cid]: {\n                flow: flowData,\n                messages,\n                historyEnd: false\n            }\n        }));\n\n        if (shareToken) {\n            error = { code: '', data: null }\n        }\n        // 更新状态\n        // !!flow.data?.nodes.find(node => [\"VariableNode\", \"InputFileNode\"].includes(node.data.type))\n        setRunningState((prev) => {\n            return {\n                ...prev,\n                [cid]: {\n                    running: false,\n                    inputDisabled: error.code || numericType === FLOW_TYPES.WORK_FLOW,\n                    error,\n                    inputForm: numericType !== FLOW_TYPES.WORK_FLOW || null,\n                    showUpload: numericType === FLOW_TYPES.WORK_FLOW,\n                    showStop: false,\n                    guideWord: flowData?.guide_question,\n                    showReRun: false\n                }\n            }\n        })\n\n    }\n\n    useEffect(() => {\n        init()\n    }, [cid])\n\n    if (!cid || !chatState?.flow) return null;\n\n    return <ChatView data={chatState.flow} cid={cid} v={API_VERSION} readOnly={readOnly} />\n};\n\n/**\n * build flow\n * 校验每个节点，展示进度及结果；返回input_keys;end_of_stream断开链接\n * 主要校验节点并设置更新setTabsState的 formKeysData\n */\n\nconst useBuild = () => {\n    const { showToast } = useToastContext();\n    const [_, setTabsState] = useRecoilState(tabsState)\n\n    // SSE 服务端推送\n    async function streamNodeData(flow: any, chatId: string) {\n        // Step 1: Make a POST request to send the flow data and receive a unique session ID\n        const res = await postBuildInit({ flow, chatId });\n        const flowId = res.data.flowId;\n        // Step 2: Use the session ID to establish an SSE connection using EventSource\n        let validationResults = [];\n        let finished = false;\n        let buildEnd = false\n        const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/build/stream/${flowId}?chat_id=${chatId}`;\n        const eventSource = new EventSource(apiUrl);\n\n        eventSource.onmessage = (event) => {\n            // If the event is parseable, return\n            if (!event.data) {\n                return;\n            }\n            const parsedData = JSON.parse(event.data);\n            // if the event is the end of the stream, close the connection\n            if (parsedData.end_of_stream) {\n                eventSource.close(); // 结束关闭链接\n                buildEnd = true\n                return;\n            } else if (parsedData.log) {\n                // If the event is a log, log it\n                // setSuccessData({ title: parsedData.log });\n            } else if (parsedData.input_keys) {\n                setTabsState((old) => {\n                    return {\n                        ...old,\n                        [flowId]: {\n                            ...old[flowId],\n                            formKeysData: parsedData,\n                        },\n                    };\n                });\n            } else {\n                // setProgress(parsedData.progress);\n                validationResults.push(parsedData.valid);\n            }\n        };\n\n        eventSource.onerror = (error: any) => {\n            buildEnd = true\n            console.error(\"EventSource failed:\", error);\n            eventSource.close();\n            // if (error.data) {\n            //     const parsedData = JSON.parse(error.data);\n            //     showToast({ message: parsedData.error, status: 'error' });\n            // }\n        };\n        // Step 3: Wait for the stream to finish\n        while (!finished) {\n            await new Promise((resolve) => setTimeout(resolve, 100));\n            finished = buildEnd // validationResults.length === flow.data.nodes.length;\n        }\n        // Step 4: Return true if all nodes are valid, false otherwise\n        return validationResults.every((result) => result);\n    }\n\n    // 延时器\n    async function enforceMinimumLoadingTime(\n        startTime: number,\n        minimumLoadingTime: number\n    ) {\n        const elapsedTime = Date.now() - startTime;\n        const remainingTime = minimumLoadingTime - elapsedTime;\n\n        if (remainingTime > 0) {\n            return new Promise((resolve) => setTimeout(resolve, remainingTime));\n        }\n    }\n\n    async function handleBuild(flow: any, chatId: string) {\n        try {\n            // const errors = flow.data.nodes.flatMap((n) => validateNode(n, flow.data.edges))\n            // if (errors.length > 0) {\n            //     return showToast({ message: errors.join('\\n'), status: 'error' });\n            // }\n\n            const minimumLoadingTime = 200; // in milliseconds\n            const startTime = Date.now();\n\n            await streamNodeData(flow, chatId);\n            await enforceMinimumLoadingTime(startTime, minimumLoadingTime); // 至少等200ms, 再继续(强制最小load时间)\n        } catch (error) {\n            console.error(\"Error:\", error);\n        } finally {\n        }\n    }\n\n    return handleBuild\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/store/atoms.ts",
    "content": "import { atom, selector } from \"recoil\"\nimport type { BishengConfig, Chat, RunningStatus, SubmitData, WebSocketStatus } from \"~/@types/chat\"\n\n// 所有会话数据的Map存储  (key: chatId) \n/**\n * map\n */\nexport const chatsState = atom<Record<string, Chat>>({\n    key: \"chatsMapState\",\n    default: {},\n})\n\nexport const chatIdState = atom<string>({\n    key: \"chatIdState\",\n    default: '',\n})\n\n// 获取当前会话信息\nexport const currentChatState = selector<Chat | null>({\n    key: \"currentChatState\",\n    get: ({ get }) => {\n        const chatsMap = get(chatsState)\n        const currentChatId = get(chatIdState)\n\n        if (!currentChatId) return null\n        return chatsMap[currentChatId] || null\n    },\n})\n\n\n// 会话上传的文件\nexport const chatUploadFileState = atom<File[]>({\n    key: \"chatUploadFileState\",\n    default: [],\n})\n\n// UI状态管理\nexport const runningState = atom<Record<string, RunningStatus>>({\n    key: \"runningState\",\n    default: {},\n})\n\n// 获取当前会话状态\nexport const currentRunningState = selector<RunningStatus | null>({\n    key: \"currentRunningStateSelector\",\n    get: ({ get }) => {\n        const runningStateMap = get(runningState)\n        const currentChatId = get(chatIdState)\n\n        if (!currentChatId) return null\n        return runningStateMap[currentChatId] || null\n    },\n})\n\n\n// 提交数据\nexport const submitDataState = atom<SubmitData | null>({\n    key: \"submitDataState\",\n    default: null,\n})\n\n// 会话文件\nexport const chatFileState = atom<{ name: string, path: string }[]>({\n    key: \"chatFileState\",\n    default: [],\n})\n\n// 毕昇配置信息\nexport const bishengConfState = atom<BishengConfig | null>({\n    key: \"bishengConfState\",\n    default: null,\n})\n\nexport const webSocketStatusState = atom<Record<string, WebSocketStatus>>({\n    key: \"webSocketStatusState\",\n    default: {},\n})\n\nexport const errorState = atom<Record<string, string>>({\n    key: \"errorState\",\n    default: {},\n})\n\nexport const tabsState = atom<any>({\n    key: \"tabsState\",\n    default: {\n        flow: null,\n        tabsState: {}, // keyform isPending\n        setFlow: (ac, f) => { },\n        setTabsState: (state) => { },\n        saveFlow: async (flow) => Promise.resolve(),\n        uploadFlow: () => { },\n        setTweak: (tweak: any) => { },\n        getTweak: [],\n        // 跨组件粘贴\n        lastCopiedSelection: null,\n        setLastCopiedSelection: (selection: any) => { },\n        downloadFlow: (flow) => { },\n        getNodeId: (nodeType: string) => \"\",\n        paste: (\n            selection: { nodes: any; edges: any },\n            position: { x: number; y: number; paneX?: number; paneY?: number }\n        ) => { },\n        version: null,\n        setVersion: (version) => \"\"\n    }\n})"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/useAreaText.ts",
    "content": "import { useEffect, useRef, useState } from \"react\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { FLOW_TYPES } from \".\";\nimport { SkillMethod } from \"./appUtils/skillMethod\";\nimport { chatFileState, chatIdState, currentChatState, runningState, submitDataState, tabsState } from \"./store/atoms\";\nimport { ActionType } from \"./useWebsocket\";\n\nconst eventTarget = new EventTarget();\nconst AREA_TEXT_EVENT = 'AREA_TEXT_EVENT'\n\nexport const enum EVENT_TYPE {\n    FILE_ACCEPTS = 'file_accepts',\n    RETRY = 'retry',\n    FORM_SUBMIT = 'form_submit',\n    MESSAGE_INPUT = 'message_input',\n    INPUT_SUBMIT = 'input_submit',\n    STOP = 'stop',\n    RE_ENTER = 're_enter'\n}\n\nexport const FileTypes = {\n    ALL: ['.PNG', '.JPEG', '.JPG', '.BMP', '.PDF', '.TXT', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV', '.DOC', '.DOCX', '.PPT', '.PPTX'],\n    IMAGE: ['.PNG', '.JPEG', '.JPG', '.BMP'],\n    FILE: ['.PDF', '.TXT', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV', '.DOC', '.DOCX', '.PPT', '.PPTX'],\n}\n\nexport const useAreaText = () => {\n    const textareaRef = useRef<HTMLTextAreaElement>(null)\n    const [_, setSubmitDataState] = useRecoilState(submitDataState)\n    const [__, setRunningState] = useRecoilState(runningState)\n    const [chatFile, setChatFileState] = useRecoilState(chatFileState)\n    const chatState = useRecoilValue(currentChatState)\n    const [chatId] = useRecoilState(chatIdState)\n    const [tabs] = useRecoilState(tabsState)\n\n    const [accepts, setAccepts] = useState('')\n\n    const handleInput = () => {\n        const textarea = textareaRef.current\n        if (textarea) {\n            textarea.style.height = 'auto'\n            textarea.style.height = textarea.scrollHeight + 'px'\n        }\n    }\n\n    // 发送输入(引导词)\n    const handleSendClick = (msg = '') => {\n        if (!msg && textareaRef.current?.value.trim() === \"\" && chatFile.length === 0) return\n        const message = msg || textareaRef.current?.value || \"\"\n\n        if (chatState.flow.flow_type === FLOW_TYPES.WORK_FLOW) {\n            setSubmitDataState({\n                input: message,\n                action: ActionType.INPUT,\n                chatId,\n                flow: chatState!.flow,\n                files: chatFile,\n            })\n        } else {\n            const data = SkillMethod.getSendParam({ tabs, flow: chatState.flow, chatId, message })\n            setSubmitDataState({\n                input: message,\n                action: ActionType.SKILL_INPUT,\n                data\n            })\n        }\n        if (textareaRef.current) {\n            textareaRef.current.value = \"\"\n            handleInput() // 重置高度\n        }\n\n        // running\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: true,\n                showStop: true,\n                showUpload: false,\n                inputDisabled: true,\n                guideWord: undefined,\n            },\n        }))\n        setChatFileState([])\n    }\n\n    const handleStopClick = () => {\n        setSubmitDataState({\n            action: ActionType.STOP\n        })\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: false,\n                showStop: false,\n            },\n        }))\n    }\n\n    // 表单输入\n    const handleFormSubmit = ({ message, nodeId, data, skill }: { message: string; nodeId: string; data: any, skill?: boolean }) => {\n        if (skill) {\n            const _data = SkillMethod.getSendParam({ tabs, flow: chatState.flow, chatId, message })\n            _data.inputs.data = data;\n\n            setSubmitDataState({\n                input: message,\n                action: ActionType.SKILL_FORM_SUBMIT,\n                data: _data\n            })\n        } else {\n            setSubmitDataState({\n                input: message,\n                action: ActionType.FORM_SUBMIT,\n                data,\n                nodeId,\n                chatId,\n                flowId: chatState.flow.id,\n            })\n        }\n\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: true,\n                showStop: true,\n                showUpload: false,\n                inputDisabled: true,\n                inputForm: false,\n            },\n        }))\n    }\n\n    // 重新运行\n    const handleRestart = () => {\n        setSubmitDataState({\n            action: ActionType.RESTART,\n            chatId,\n            flow: chatState.flow,\n        })\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: true,\n                showStop: true,\n                showUpload: false,\n                inputForm: false,\n                showReRun: false,\n            },\n        }))\n    }\n\n    // 切换会话时，自动提交一次\n    // useEffect(() => {\n    //     setSubmitDataState({\n    //         input: textareaRef.current?.value || \"\",\n    //         chatId,\n    //         flow: chatState.flow,\n    //     })\n    // }, [chatId])\n\n\n    // 接收事件的处理\n    useEffect(() => {\n        const handleEvent = (event: CustomEvent) => {\n            console.log('处理自定义事件:', event.detail);\n            const action = event.detail.action;\n            switch (action) {\n                case EVENT_TYPE.FILE_ACCEPTS:\n                    const { chatId: _chatId, fileAccept } = event.detail\n                    let accepts = FileTypes.IMAGE.join(',') + ',' + FileTypes.FILE.join(',')\n                    if (fileAccept === 'image') {\n                        accepts = FileTypes.IMAGE.join(',')\n                    } else if (fileAccept === 'file') {\n                        accepts = FileTypes.FILE.join(',')\n                    }\n                    chatId === _chatId && setAccepts(accepts)\n                    break\n                case EVENT_TYPE.FORM_SUBMIT:\n                    handleFormSubmit(event.detail)\n                    break;\n                case EVENT_TYPE.MESSAGE_INPUT:\n                    setSubmitDataState({\n                        action: ActionType.MESSAGE_INPUT,\n                        chatId,\n                        flowId: chatState.flow.id,\n                        data: event.detail.data\n                    })\n                    break;\n                case EVENT_TYPE.INPUT_SUBMIT:\n                    handleSendClick(event.detail.data)\n                    break;\n                case EVENT_TYPE.RE_ENTER:\n                    if (event.detail.autoSend) {\n                        handleSendClick(event.detail.text)\n                    } else if (textareaRef.current) {\n                        textareaRef.current.value = event.detail.text\n                    }\n                    break;\n                // case EVENT_TYPE.RETRY:\n                //     setSubmitDataState({\n                //         input: '',\n                //         action: ActionType.INIT_DATA,\n                //         chatId,\n                //         flow: chatState.flow,\n                //         files: [],\n                //     })\n                //     break;\n                // case EVENT_TYPE.STOP:\n                //     setSubmitDataState({ action: ActionType.STOP })\n                //     break;\n                default:\n                    // 处理其他事件\n                    break;\n\n            }\n        };\n\n        // 添加事件监听器\n        eventTarget.addEventListener(AREA_TEXT_EVENT, handleEvent as EventListener);\n\n        // 返回清理函数\n        return () => {\n            eventTarget.removeEventListener(AREA_TEXT_EVENT, handleEvent as EventListener);\n        };\n    }, [chatId]);\n\n\n    return {\n        inputRef: textareaRef,\n        handleInput,\n        handleSendClick,\n        handleStopClick,\n        handleRestart,\n        setChatFiles: setChatFileState,\n        accepts,\n        chatState\n    }\n}\n\n\n// 其他组件使用以下方法发送事件\nexport const emitAreaTextEvent = (data: any) => {\n    const event = new CustomEvent(AREA_TEXT_EVENT, {\n        detail: data,\n    })\n    eventTarget.dispatchEvent(event)\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/useChatHelpers.ts",
    "content": "/**\n * websocket辅助函数\n */\nimport { produce } from \"immer\"\nimport { useMemo } from \"react\"\nimport { useRecoilState, useRecoilValue } from \"recoil\"\nimport { Chat } from \"~/@types/chat\"\nimport { baseMsgItem } from \"~/api/apps\"\nimport { formatDate, generateUUID } from \"~/utils\"\nimport { FLOW_TYPES } from \".\"\nimport { SkillMethod } from \"./appUtils/skillMethod\"\nimport { bishengConfState, chatIdState, chatsState, currentChatState, currentRunningState, runningState } from \"./store/atoms\"\nimport { emitAreaTextEvent, EVENT_TYPE } from \"./useAreaText\"\n\nexport default function useChatHelpers() {\n    const chatState = useRecoilValue(currentChatState)\n    const runState = useRecoilValue(currentRunningState)\n    const [bishengConfig] = useRecoilState(bishengConfState)\n    const [_, setChats] = useRecoilState(chatsState)\n    const [__, setRunningState] = useRecoilState(runningState)\n    const [chatId] = useRecoilState(chatIdState)\n\n    const wsUrl = useMemo(() => {\n        if (!chatState) return \"\"\n\n        const { flow } = chatState;\n        const type = Number(flow.flow_type)\n        const host = bishengConfig?.websocket_url || window.location.host;\n        const basePath = __APP_ENV__.BASE_URL;\n\n        const routeConfig = {\n            [FLOW_TYPES.SKILL]: `${host}${basePath}/api/v1/chat/${flow.id}?type=L1`,\n            [FLOW_TYPES.ASSISTANT]: `${window.location.host}${basePath}/api/v1/assistant/chat/${flow.id}`,\n            [FLOW_TYPES.WORK_FLOW]: `${host}${basePath}/api/v1/workflow/chat/${flow.id}?chat_id=${chatId}`\n        };\n\n        return routeConfig[type] || '';\n    }, [chatState, chatId, bishengConfig])\n\n    const appLost = useMemo(() => {\n        return runState?.error?.code\n    }, [runState])\n\n    // handleMsgError close只关闭运行状态不报错\n    const handleMsgError = (errorMsg: { code: string, data: any }, close: boolean = false) => {\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: false,\n                showStop: false,\n                showUpload: false,\n                inputDisabled: close || !!errorMsg.code, //chatState?.flow.flow_type !== 1, // 技能不禁止输入\n                // showReRun: chatState?.flow.flow_type === 10, // 错误时工作流展示重试按钮\n                error: close ? prev[chatId].error : errorMsg,\n            },\n        }))\n    }\n\n    const clearError = () => {\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                error: { code: '', data: null },\n            },\n        }))\n    }\n\n    // 显示停止按钮\n    const stopShow = (show: boolean) => {\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                running: true,\n                showStop: show,\n            },\n        }))\n    }\n\n    // 显示重试按钮\n    const reRunShow = (show: boolean) => {\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                showReRun: show,\n            },\n        }))\n    }\n\n    // 唤起输入(表单输入，文本输入)\n    const showInputForm = (inputSchema) => {\n        const { tab, value } = inputSchema\n\n        let showUpload = false\n        if (tab === \"dialog_input\") {\n            const schemaItem = value?.find((el) => el?.key === \"dialog_file_accept\")\n            const fileAccept = schemaItem?.value\n            emitAreaTextEvent({ action: EVENT_TYPE.FILE_ACCEPTS, chatId, fileAccept })\n\n            const switchItem = value?.find((el) => el?.key === \"user_input_file\")\n            showUpload = switchItem ? switchItem.value : true\n        }\n\n        const runstate = tab === \"form_input\" ? { inputDisabled: true, inputForm: inputSchema } : { showUpload, inputDisabled: false }\n\n        setRunningState((prev) => ({\n            ...prev,\n            [chatId]: {\n                ...prev[chatId],\n                showStop: false,\n                ...runstate,\n            },\n        }))\n    }\n\n    const showGuideQuestion = (chatid, question) => {\n        setRunningState((prev) => {\n            if (prev[chatid].guideWord?.length) return prev\n            return {\n                ...prev,\n                [chatid]: {\n                    ...prev[chatid],\n                    guideWord: question,\n                },\n            }\n        })\n    }\n    // const stop = () => {\n    // }\n\n    // 更新消息\n    const message = {\n        createNodeMsg: (chatid: string, data: any) => {\n            if (['output', 'condition'].includes(data.message?.node_id.split('_')[0])) return\n\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    const { category, flow_id, chat_id, files, is_bot, liked, message, receiver, type, source, user_id } = data\n\n                    if (type === \"end\") {\n                        return messages.filter((msg) => msg.id !== message.unique_id)\n                    }\n\n                    return [\n                        ...messages,\n                        {\n                            category,\n                            flow_id,\n                            chat_id,\n                            id: message.unique_id,\n                            files,\n                            is_bot,\n                            message,\n                            receiver,\n                            source,\n                            user_id,\n                            liked: !!liked,\n                            end: false,\n                            sender: \"\",\n                            node_id: message?.node_id || \"\",\n                            create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                        },\n                    ]\n                }),\n            )\n        },\n        createMsg: (chatid: string, data: any) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    const {\n                        category,\n                        flow_id,\n                        chat_id,\n                        message_id,\n                        files,\n                        is_bot,\n                        extra,\n                        liked,\n                        message: msg,\n                        receiver,\n                        type,\n                        source,\n                        user_id,\n                        reasoning_log,\n                        thought\n                    } = data\n                    // 兼容后端问题\n                    const _files = Array.isArray(files) ? files : []\n\n                    const messageId = message_id || (category === \"guide_word\" ? 'u-' + generateUUID(6) : \"\")\n                    const filteredMessages = deduplicateMessages(messages, message_id)\n\n                    return [\n                        ...filteredMessages,\n                        {\n                            category,\n                            flow_id,\n                            chat_id,\n                            id: messageId,\n                            files: _files.map(el => ({\n                                // 兼容\n                                file_name: el.file_name || el.name,\n                                file_url: el.file_url || el.url || el.path\n                            })),\n                            is_bot,\n                            message: msg,\n                            receiver,\n                            source,\n                            user_id,\n                            liked: !!liked,\n                            end: type === \"over\",\n                            sender: \"\",\n                            node_id: msg?.node_id || \"\",\n                            create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                            extra,\n                            reasoning_log,\n                            thought\n                        },\n                    ]\n                }),\n            )\n        },\n        streamMsg: (chatid: string, data: any) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    const { unique_id, output_key, reasoning_content } = data.message\n                    const messageId = unique_id + output_key\n                    const currentMessageIndex = messages.findIndex((msg) => msg.id === messageId)\n\n                    if (currentMessageIndex === -1) {\n                        // Create new message\n                        const { category, flow_id, chat_id, files, is_bot, extra, liked, receiver, type, source, user_id } = data\n                        const message = data.message.msg\n                        const reasoning_log = reasoning_content || \"\"\n\n                        const filteredMessages = deduplicateMessages(messages, messageId)\n                        return [\n                            ...filteredMessages,\n                            {\n                                category,\n                                flow_id,\n                                chat_id,\n                                id: messageId,\n                                files,\n                                is_bot,\n                                message,\n                                receiver,\n                                source,\n                                user_id,\n                                liked: !!liked,\n                                end: type === \"over\",\n                                sender: \"\",\n                                node_id: data.message?.node_id || \"\",\n                                create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                                extra,\n                                reasoning_log,\n                            },\n                        ]\n                    } else {\n                        // Update existing message\n                        const currentMsg = messages[currentMessageIndex]\n                        const updatedMessages = [...messages]\n                        updatedMessages[currentMessageIndex] = {\n                            ...currentMsg,\n                            id: data.type === \"end\" ? data.message_id : currentMsg.id,\n                            message: data.type === \"end\" ? data.message.msg : currentMsg.message + data.message.msg,\n                            reasoning_log: reasoning_content\n                                ? currentMsg.reasoning_log + reasoning_content\n                                : currentMsg.reasoning_log,\n                            create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                            source: data.source,\n                            end: data.type === \"end\",\n                            extra: data.extra,\n                        }\n                        return updatedMessages\n                    }\n                }),\n            )\n        },\n        closeAllMsg: (chatid: string) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    return messages.reduce((acc, msg) => {\n                        if (msg.message || msg.reasoning_log || msg.files?.length) {\n                            acc.push({ ...msg, end: true })\n                        }\n                        return acc\n                    }, [] as any[])\n                })\n            )\n        },\n        closeAllLogMsg: (chatid: string) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    return messages.filter((msg) => msg.category !== \"node_run\")\n                })\n            )\n        },\n        skillStreamMsg: (chatid: string, data: any) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    return SkillMethod.updateStreamMessage(data, chatid, messages,\n                        data.type === 'end_cover' && data.category === 'anwser'\n                    )\n                })\n            )\n        },\n        skillCloseMsg: () => {\n            setRunningState((prev) => {\n                return {\n                    ...prev,\n                    [chatId]: {\n                        ...prev[chatId],\n                        running: false,\n                        inputDisabled: !!prev[chatId].error?.code,\n                        inputForm: false,\n                        showStop: false\n                    },\n                }\n            })\n        },\n        endMsg: (chatid: string, data: any) => {\n            // 删除所有未结束消息\n            if (data.type === \"end_cover\" && data.message) {\n                console.log(\"触发安全审计,删除所有未结束消息\")\n                data.category = \"stream_msg\"\n                data.type = \"over\"\n                data.id = generateUUID(8)\n                message.createMsg(chatid, data)\n\n                // Use setTimeout to avoid blocking\n                setTimeout(() => {\n                    setChats((prev) => updateChatMessages(prev, chatId, (messages) => messages.filter((msg) => msg.end)))\n                }, 0)\n            }\n        },\n        insetSeparator: (chatid: string, msg: string) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatid, (messages) => {\n                    if (messages[messages.length - 1]?.category === \"divider\") return messages\n\n                    return [\n                        ...messages,\n                        {\n                            ...baseMsgItem,\n                            category: \"divider\",\n                            id: generateUUID(8),\n                            message: msg,\n                            create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                        },\n                    ]\n                }),\n            )\n        },\n        createSendMsg: (msg: string) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatId, (messages) => [\n                    ...messages,\n                    {\n                        ...baseMsgItem,\n                        category: \"question\",\n                        id: 'u-' + generateUUID(8),\n                        message: msg,\n                        create_time: formatDate(new Date(), \"yyyy-MM-ddTHH:mm:ss\"),\n                    },\n                ]),\n            )\n\n            // 滚动到底部\n            const dom = document.getElementById('messageScrollPanne')\n            setTimeout(() => {\n                if (dom) {\n                    dom.scrollTop = dom.scrollHeight\n                }\n            }, 0);\n        },\n        closeOutputMsg: (input) => {\n            setChats((prev) =>\n                updateChatMessages(prev, chatId, (messages) => {\n                    const updatedMessages = messages.map(msg => {\n                        if ([\"output_with_input_msg\", \"output_with_choose_msg\"].includes(msg.category)) {\n                            return {\n                                ...msg,\n                                message: {\n                                    ...msg.message,\n                                    hisValue: input\n                                }\n                            }\n                        }\n                        return msg\n                    })\n                    return updatedMessages\n                }),\n            )\n        }\n    }\n\n    return {\n        wsUrl,\n        appLost,\n        chatId,\n        running: runState?.running,\n        message,\n        flow: chatState?.flow,\n        stopShow,\n        reRunShow,\n        handleMsgError,\n        clearError,\n        showInputForm,\n        showGuideQuestion\n    }\n};\n\n\nconst updateChatMessages = (\n    chats: Record<string, Chat>,\n    chatId: string,\n    updater: (messages: any[]) => any[],\n): Record<string, Chat> => {\n    return produce(chats, (draft) => {\n        if (draft[chatId]) {\n            const currentMessages = draft[chatId].messages || []\n            const updatedMessages = updater(currentMessages)\n\n            // Only update if messages actually changed\n            if (updatedMessages !== currentMessages) {\n                draft[chatId].messages = updatedMessages\n            }\n        }\n    })\n}\n\nexport const deduplicateMessages = (messages: any[], messageId: string): any[] => {\n    if (!messageId) return messages\n\n    const seenIds = new Set<string>()\n    return messages.filter((msg) => {\n        const shouldExclude = msg.id === messageId && msg.his\n        if (shouldExclude) return false\n\n        if (seenIds.has(msg.id)) return false\n        seenIds.add(msg.id)\n        return true\n    })\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/useFileDropAndPaste.ts",
    "content": "import { useState, useRef, useEffect, useCallback } from 'react';\n\nexport const useFileDropAndPaste = ({ enabled, onFilesReceived }) => {\n    const [isDragging, setIsDragging] = useState(false);\n    const dragCounter = useRef(0);\n\n    // 1.  (full drag)\n    useEffect(() => {\n        if (!enabled) return;\n\n        const handleDragEnter = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            dragCounter.current += 1;\n            // vailte file type\n            if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\n                setIsDragging(true);\n            }\n        };\n\n        const handleDragLeave = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            dragCounter.current -= 1;\n            if (dragCounter.current === 0) {\n                setIsDragging(false);\n            }\n        };\n\n        const handleDragOver = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n        };\n\n        const handleDrop = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            setIsDragging(false);\n            dragCounter.current = 0;\n\n            if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n                onFilesReceived(e.dataTransfer.files);\n                e.dataTransfer.clearData();\n            }\n        };\n\n        window.addEventListener('dragenter', handleDragEnter);\n        window.addEventListener('dragleave', handleDragLeave);\n        window.addEventListener('dragover', handleDragOver);\n        window.addEventListener('drop', handleDrop);\n\n        return () => {\n            window.removeEventListener('dragenter', handleDragEnter);\n            window.removeEventListener('dragleave', handleDragLeave);\n            window.removeEventListener('dragover', handleDragOver);\n            window.removeEventListener('drop', handleDrop);\n        };\n    }, [enabled, onFilesReceived]);\n\n    // 2. pasete\n    const handlePaste = useCallback((e) => {\n        if (!enabled) return;\n\n        const items = e.clipboardData?.items;\n        const files = [];\n        if (items) {\n            for (let i = 0; i < items.length; i++) {\n                if (items[i].kind === 'file') {\n                    const file = items[i].getAsFile();\n                    if (file) files.push(file);\n                }\n            }\n        }\n\n        if (files.length > 0) {\n            e.preventDefault(); // Prevent default paste behavior (to avoid pasting file names into the input box)\n            onFilesReceived(files);\n        }\n    }, [enabled, onFilesReceived]);\n\n    return {\n        isDragging,\n        handlePaste\n    };\n};"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/useMessages.ts",
    "content": "/**\n * 接收ws event 滚动\n */\nimport { useEffect, useRef } from \"react\";\nimport { useParams } from \"react-router\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { getChatHistoryApi } from \"~/api/apps\";\nimport { useAutoScroll } from \"~/hooks/useAutoScroll\";\nimport { chatIdState, chatsState, currentChatState } from \"./store/atoms\";\n\nexport const useMessage = (shareToken) => {\n    const { conversationId } = useParams();\n    const chatState = useRecoilValue(currentChatState)\n    const [chatId] = useRecoilState(chatIdState)\n\n    const { flow, messages } = chatState || { flow: null, messages: [] }\n\n    const messageScrollRef = useRef<HTMLDivElement>(null)\n    // 自动滚动\n    useAutoScroll(messageScrollRef, messages)\n    useLoadMessage({ chatId, chatState, messageScrollRef, shareToken })\n\n\n    return {\n        chatId: conversationId,\n        messages,\n        messageScrollRef\n    }\n}\n\n\nconst useLoadMessage = ({ chatId, chatState, messageScrollRef, shareToken }\n    : { chatId: string, chatState: any, messageScrollRef: React.RefObject<HTMLDivElement>, shareToken: string }) => {\n    const [chats, setChats] = useRecoilState(chatsState)\n    const { flow, messages, running, historyEnd } = chatState || {}\n\n    // 滚动到底部\n    useEffect(() => {\n        if (chatId && messageScrollRef.current) {\n            requestAnimationFrame(() => {\n                if (messageScrollRef.current) {\n                    messageScrollRef.current.scrollTop = messageScrollRef.current.scrollHeight\n                }\n            })\n        }\n    }, [chatId])\n\n    const loadMore = async (chatId: string) => {\n        // 运行中or没有更多 || 最后一条消息id不存在，忽略\n        if (running || historyEnd || !messages?.[0]?.id || !flow) return\n        const messageId = messages[0].id\n        // u-开头的消息表示新建会话，新建会话无需加载历史消息\n        if (typeof messageId === 'string' && messageId.startsWith('u-')) return\n\n        const msgs = await getChatHistoryApi({ flowId: flow.id, chatId, flowType: flow.flow_type, id: messages[0].id || 0, shareToken })\n        setChats((prev) => {\n            const chatData = prev[chatId]\n            const param = msgs.length ?\n                { ...chatData, messages: [...msgs.reverse(), ...chatData!.messages] }\n                : { ...chatData, historyEnd: true }\n\n            return {\n                ...prev,\n                [chatId]: param\n            }\n        })\n    }\n\n    // 滚动加载\n    const queryLockRef = useRef(false)\n    useEffect(() => {\n        function handleScroll() {\n            const scrollElement = messageScrollRef.current\n            if (queryLockRef.current) return\n            if (!scrollElement) return\n            const { scrollTop } = scrollElement\n\n            if (scrollTop <= 90) {\n                console.log('请求 :>> ', 1);\n                queryLockRef.current = true\n                loadMore(chatId)\n                // 临时处理防抖\n                setTimeout(() => {\n                    queryLockRef.current = false\n                }, 1000);\n            }\n        }\n\n        messageScrollRef.current?.addEventListener('scroll', handleScroll);\n        return () => messageScrollRef.current?.removeEventListener('scroll', handleScroll)\n    }, [messageScrollRef.current, chatState, chatId, shareToken]);\n}"
  },
  {
    "path": "src/frontend/client/src/pages/appChat/useWebsocket.ts",
    "content": "\"use client\"\nimport { useEffect, useRef } from \"react\"\nimport { useRecoilState } from \"recoil\"\nimport { NotificationSeverity } from \"~/common\"\nimport { useLocalize, useToast } from \"~/hooks\"\nimport { SkillMethod } from \"./appUtils/skillMethod\"\nimport { submitDataState } from \"./store/atoms\"\n\nexport const AppLostMessage = '11111'\nconst wsMap = new Map<string, WebSocket>()\n// 会话运行时信息\nconst sessionInfoMap = new Map<string, any>()\n\nexport const enum ActionType {\n    INIT_DATA = 'init_data',\n    INPUT = 'input',\n    CHECK_STATUS = 'check_status',\n    STOP = 'stop',\n    RESTART = 'restart',\n    FORM_SUBMIT = 'form_submit',\n    MESSAGE_INPUT = 'message_input',\n    SKILL_INPUT = 'skill_input',\n    SKILL_FORM_SUBMIT = 'skill_form_submit'\n}\n\nconst restartCallBack: any = { current: null } // 用于存储重启回调函数\n\nexport const useWebSocket = (helpers) => {\n    const { showToast } = useToast();\n    const [submitData, setSubmitData] = useRecoilState(submitDataState)\n    const localize = useLocalize()\n\n    const websocket = wsMap.get(helpers.chatId)\n    const currentChatId = useCurrentChatId(helpers.chatId)\n\n    // 连接WebSocket\n    const connect = (callBack) => {\n        if (websocket) {\n            if (!(callBack && websocket.readyState !== WebSocket.OPEN)) {\n                // 发送消息并链接断开，重新连接\n                return\n            }\n        }\n        if (!helpers.wsUrl) return\n        if (helpers.appLost === AppLostMessage) return\n\n        const isSecureProtocol = window.location.protocol === \"https:\";\n        const webSocketProtocol = isSecureProtocol ? \"wss\" : \"ws\";\n        const ws = new WebSocket(`${webSocketProtocol}://${helpers.wsUrl}`)\n        wsMap.set(helpers.chatId, ws)\n\n        ws.onopen = () => {\n            console.log(\"WebSocket connection established!\");\n            helpers.clearError()\n            if (helpers.flow.flow_type === 10) {\n                // 工作流初始化\n                // console.log('helpers.flow :>> ', helpers.flow);\n                const { data, ...flow } = helpers.flow\n                const msg = {\n                    action: helpers.flow.isNew ? ActionType.INIT_DATA : ActionType.CHECK_STATUS,\n                    chat_id: helpers.chatId,\n                    flow_id: helpers.flow.id,\n                    data: { ...flow, ...data },\n                }\n                ws?.send(JSON.stringify(msg))\n            } else {\n                // 助手初始化\n                const msg = {\n                    chatHistory: [],\n                    chat_id: helpers.chatId,\n                    flow_id: helpers.flow.id,\n                    inputs: {\n                        data: helpers.flow.flow_type === 5 ? {\n                            id: helpers.flow.id,\n                            chatId: helpers.chatId,\n                            type: helpers.flow.flow_type,\n                        } : undefined\n                    },\n                    name: helpers.flow.name,\n                    description: helpers.flow.description\n                }\n                ws?.send(JSON.stringify(msg))\n                // skill hack\n                if (helpers.flow.flow_type === 1 && callBack) {\n                    callBack?.(ws)\n                    callBack = null\n                }\n            }\n        }\n\n        ws.onmessage = (event) => {\n            try {\n                const data = JSON.parse(event.data)\n                console.log('data :>> ', data);\n                handleMessages(data, ws)\n\n                if (data.type === 'close' && callBack) {\n                    callBack?.(ws)\n                    callBack = null\n                }\n            } catch (error) {\n                console.error(\"WebSocket message parse error:\", error)\n            }\n        }\n\n        ws.onclose = (event) => {\n            console.log('close chatId:>> ', helpers.chatId);\n            console.error('ws close :>> ', event);\n            helpers.handleMsgError({ code: '', data: null }, true)\n            // todo 错误消息写入消息下面\n        }\n\n        ws.onerror = (error) => {\n            console.error('链接异常error', helpers.chatId, error);\n            helpers.handleMsgError({ code: '', data: null })\n        }\n    }\n    const handleMessages = (data, _ws) => {\n        // 过滤无效数据\n        if ((data.category === 'end_cover' && data.type !== 'end_cover')) {\n            return\n        }\n\n        if (data.type === 'begin') {\n            // 工作流input会有再begin之前出现的情况\n            // helpers.stopShow(true)\n        } else if (data.type === 'close' && data.category === 'processing') {\n            helpers.stopShow(false)\n            helpers.message.closeAllLogMsg(helpers.chatId);\n        }\n\n        // messages\n        if (data.category === 'error' || data.type === 'error') {\n            let code = 0, message = ''\n            if (typeof data.message === 'string') {\n                // 兼容助手错误信息\n                const _data = JSON.parse(data.message)\n                code = _data.status_code\n                message = _data.status_message\n            } else {\n                code = data.message.status_code\n                message = data.message.status_message\n            }\n            if (![10421, 13002].includes(code)) {\n                showToast({\n                    message: code === 500 ? message : localize(`api_errors.${String(code)}`, data.message?.data),\n                    severity: NotificationSeverity.ERROR,\n                })\n            } else {\n                helpers.handleMsgError({ code, data: data.message?.data })\n            }\n            return helpers.message.closeAllMsg(helpers.chatId)\n        } else if (data.category === 'node_run') {\n            return helpers.message.createNodeMsg(helpers.chatId, data)\n        } else if (data.category === 'guide_word') {\n            data.message.msg = data.message.guide_word\n        } else if (data.category === 'input') {\n            const { node_id, input_schema } = data.message\n            sessionInfoMap.set(helpers.chatId, { node_id, message_id: data.message_id })\n            // 待用户输入\n            helpers.showInputForm({ ...input_schema, node_id })\n            return\n        } else if (data.category === 'guide_question') {\n            return helpers.showGuideQuestion(helpers.chatId, data.message.guide_question.filter(q => q))\n        } else if (data.category === 'stream_msg') {\n            // helpers.flow.flow_type === 10 && helpers.reRunShow(true) // 成环的工作流不展示重跑按钮\n            helpers.message.streamMsg(helpers.chatId, data)\n        } else if (data.category === 'end_cover' && data.type === 'end_cover') {\n            _ws.send(JSON.stringify({ action: 'stop' }))\n            return helpers.message.endMsg(helpers.chatId, data)\n        }\n\n        /***** 技能 & 助手 start******/\n        if (helpers.flow.flow_type !== 10) {\n            if (Array.isArray(data) && data.length) return\n            if (data.type === 'start') {\n                const _data = SkillMethod.getStartParam(data, helpers.chatId)\n                helpers.message.createMsg(helpers.chatId, _data)\n            } else if (data.type === 'stream') {\n                helpers.message.skillStreamMsg(helpers.chatId, data)\n            }\n            if (['end', 'end_cover'].includes(data.type) && data.receiver?.is_self) {\n                // 群聊@自己时\n                helpers.showInputForm({})\n            } else if (['end', 'end_cover'].includes(data.type)) {\n                // todo 无未闭合的消息，先创建（补一条start）  工具类除外\n                helpers.message.skillStreamMsg(helpers.chatId, data)\n            } else if (data.type === 'close') {\n                helpers.message.skillCloseMsg()\n            }\n\n            return\n        }\n        /***** 技能 end******/\n        if (data.type === 'close' && data.category === 'processing') {\n            helpers.message.insetSeparator(helpers.chatId, 'com_chat_round_finished')\n            // 重启会话按钮,接收close确认后端处理结束后重启会话\n            if (restartCallBack.current) {\n                restartCallBack.current()\n                restartCallBack.current = null\n            } else {\n                helpers.flow.flow_type === 10 && helpers.reRunShow(true)\n            }\n        } else if (data.type === 'over') {\n            helpers.message.createMsg(helpers.chatId, data)\n        }\n    }\n    useEffect(() => {\n        connect()\n\n        return () => {\n            // 后台运行的会话结束后，断开WebSocket连接\n            if (currentChatId !== helpers.chatId) {\n                // 断开WebSocket连接\n                if (websocket && !helpers.running) {\n                    console.log('ws close', currentChatId, helpers.chatId)\n                    websocket.close()\n                    wsMap.delete(helpers.chatId)\n                }\n            }\n        }\n    }, [helpers.chatId, helpers.running])\n\n    const sendWsMsg = async (msg) => {\n        try {\n            if (websocket && websocket.readyState === WebSocket.OPEN) {\n                websocket.send(JSON.stringify(msg))\n            } else {\n                connect((_websocket) => {\n                    _websocket.send(JSON.stringify(msg))\n                })\n            }\n        } catch (error: any) {\n            showToast({\n                message: error.message,\n                severity: NotificationSeverity.ERROR,\n            })\n        }\n    }\n\n    // 监听submitData变化，发送消息（必须在当前会话调用）\n    useEffect(() => {\n        if (submitData\n            && (submitData.action === 'skill_input' || websocket && websocket.readyState === WebSocket.OPEN)) {\n            const action = submitData.action\n\n            switch (action) {\n                case ActionType.RESTART:\n                    sendWsMsg({ action: 'stop' })\n                    const { data, ...other } = submitData.flow\n                    const flow = { ...other, edges: data.edges, nodes: data.nodes, viewport: data.viewport }\n                    restartCallBack.current = () => {\n                        sendWsMsg({\n                            action: ActionType.INIT_DATA,\n                            chat_id: submitData.chatId,\n                            flow_id: flow.id,\n                            data: flow,\n                        })\n                    }\n                    break\n                case ActionType.INPUT:\n                    const sessionInfo = sessionInfoMap.get(helpers.chatId)\n                    const node = submitData.flow.data.nodes.find(node => node.id === sessionInfo?.node_id)\n                    const tab = node.data.tab.value\n                    let variable = ''\n                    node.data.group_params.some(group =>\n                        group.params.some(param => {\n                            if (param.tab === tab) {\n                                variable = param.key\n                                return true\n                            }\n                            return false\n                        })\n                    )\n\n                    let message = submitData.input\n                    let filePath = []\n                    // 文件拼接入消息\n                    if (submitData.files?.length) {\n                        const [_filePath, fileNames] = submitData.files.reduce((acc, cur) => {\n                            acc[0].push(cur.path)\n                            acc[1].push(cur.name)\n                            return acc\n                        }, [[], []])\n                        filePath = _filePath\n                        // 文件拼接入消息\n                        const _value = submitData.input\n                        message = fileNames.length > 0 ? fileNames.join('\\n') + '\\n' + _value : _value;\n                    }\n\n                    sendWsMsg({\n                        action: 'input',\n                        chat_id: submitData.chatId,\n                        flow_id: submitData.flow.id,\n                        data: {\n                            [sessionInfo?.node_id]: {\n                                data: {\n                                    [variable]: message,\n                                    dialog_files_content: filePath\n                                },\n                                message,\n                                message_id: sessionInfo.message_id,\n                                category: 'question',\n                                extra: '',\n                                source: 0\n                            }\n                        },\n                    })\n\n                    helpers.message.createSendMsg(message)\n                    break\n                case ActionType.SKILL_INPUT:\n                    sendWsMsg(submitData.data)\n                    helpers.message.createSendMsg(submitData.input)\n                    break;\n                case ActionType.FORM_SUBMIT:\n                    sendWsMsg({\n                        action: 'input',\n                        chat_id: submitData.chatId,\n                        flow_id: submitData.flowId,\n                        data: {\n                            [submitData.nodeId!]: {\n                                data: submitData.data,\n                                message: submitData.input,\n                                message_id: sessionInfoMap.get(helpers.chatId).message_id,\n                                category: 'question',\n                                extra: '',\n                                source: 0\n                            }\n                        },\n                    })\n\n                    helpers.message.createSendMsg(submitData.input)\n                    break;\n                case ActionType.SKILL_FORM_SUBMIT:\n                    sendWsMsg(submitData.data)\n\n                    helpers.message.createSendMsg(submitData.input)\n                    break;\n                case ActionType.MESSAGE_INPUT:\n                    sendWsMsg({\n                        action: 'input',\n                        chat_id: submitData.chatId,\n                        flow_id: submitData.flowId,\n                        data: {\n                            [submitData.data.nodeId!]: {\n                                data: submitData.data.data,\n                                message: submitData.data.message,\n                                message_id: submitData.data.msgId\n                            }\n                        },\n                    })\n                    // 闭合所有输出节点\n                    helpers.message.closeOutputMsg(submitData.data.data.output_result)\n                    break;\n                case ActionType.STOP:\n                    sendWsMsg({ action: 'stop' })\n                    break;\n            }\n            setSubmitData(null)\n        }\n    }, [submitData])\n}\n\n\nconst useCurrentChatId = (chatId) => {\n    const currentChatIdRef = useRef<string | null>(null)\n    useEffect(() => {\n        currentChatIdRef.current = chatId\n    }, [chatId])\n\n    return currentChatIdRef.current\n}\n\n"
  },
  {
    "path": "src/frontend/client/src/pages/apps/components/AgentCard.tsx",
    "content": "\"use client\"\n\nimport { Plus, X } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { Button } from \"~/components\"\nimport AppAvator from \"~/components/Avator\"\nimport { Card, CardContent } from \"~/components/ui/Card\"\nimport { useLocalize } from \"~/hooks\"\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"~/components/ui/Tooltip2\"\n\ninterface Agent {\n    id: string\n    name: string\n    description: string\n    flow_type: number\n    logo: string\n    category: string\n}\n\ninterface AgentCardProps {\n    agent: Agent\n    isFavorite: boolean\n    showRemove?: boolean // 决定显示移除还是添加按钮\n    onAddToFavorites: () => void\n    onRemoveFromFavorites: () => void\n    onClick: (e: React.MouseEvent<HTMLDivElement>) => void\n}\n\nexport function AgentCard({\n    agent,\n    showRemove = false,\n    onClick,\n    onAddToFavorites,\n    onRemoveFromFavorites,\n}: AgentCardProps) {\n    const [isHovered, setIsHovered] = useState(false)\n    const localize = useLocalize()\n\n    return (\n        <TooltipProvider>\n            {/* 核心调整：固定高度为 150px，flex 垂直布局确保内部元素适配 */}\n            <Card\n                className={`relative cursor-pointer rounded-md transition-all duration-200 border-none bg-[#F7F9FC] hover:bg-[#EDEFF6]\n                           h-[150px] py-1 flex flex-col overflow-hidden`}\n                onMouseEnter={() => setIsHovered(true)}\n                onMouseLeave={() => setIsHovered(false)}\n                onClick={onClick}\n            >\n                <CardContent className=\"p-0 flex flex-col flex-1\">  {/* flex-1 让内容区填充满卡片 */}\n                    <div className=\"flex flex-col flex-1 px-4 py-2\">\n                        {/* 1. 名称+图标区域：固定高度 40px，避免名称长度影响整体高度 */}\n                        <div className=\"flex gap-2 items-center h-10 mb-1\">  {/* 高度压缩为 40px（h-10） */}\n                            <AppAvator\n                                id={agent.name}\n                                url={agent.logo}\n                                flowType={agent.flow_type}\n                                className=\"size-6 min-w-6\"\n                            />\n                            <h3 className=\"leading-5 pl-1 align-middle truncate text-sm font-medium\">  {/* 名称文字缩小，过长截断 */}\n                                {agent.name}\n                            </h3>\n                        </div>\n\n                        {/* 2. 描述区域：占满剩余空间，最多显示 2 行（适配 150px 高度） */}\n                        <div className=\"flex-1 overflow-hidden\">\n                            <p className=\"text-sm text-[#64748b] leading-5 break-words line-clamp-2\">  {/* 文字缩小为 xs，最多 2 行 */}\n                                {agent.description}  {/* 空描述兜底，避免高度塌陷 */}\n                            </p>\n                        </div>\n                    </div>\n\n                    {/* 操作按钮：位置不变，不影响高度统一 */}\n                    {isHovered && (\n                        <div className=\"absolute top-2 right-2\">\n                            <Tooltip>\n                                <TooltipTrigger asChild>\n                                    <Button\n                                        size=\"sm\"\n                                        variant={showRemove ? \"destructive\" : \"default\"}\n                                        className={`w-6 h-6 p-0 ${showRemove ? \"bg-red-500 hover:bg-red-600\" : \"bg-blue-600 hover:bg-blue-700\"}`}\n                                        onClick={(e) => {\n                                            e.stopPropagation()\n                                            showRemove ? onRemoveFromFavorites() : onAddToFavorites()\n                                        }}\n                                    >\n                                        {showRemove ? <X className=\"w-3 h-3\" /> : <Plus className=\"w-3 h-3\" />}\n                                    </Button>\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"text-xs\">{showRemove ? localize('com_agent_remove_from_favorites') : localize('com_agent_add_to_favorites')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </div>\n                    )}\n                </CardContent>\n            </Card>\n        </TooltipProvider>\n    )\n}"
  },
  {
    "path": "src/frontend/client/src/pages/apps/components/AgentGrid.tsx",
    "content": "\"use client\"\n\nimport { ChevronDown, Loader2 } from \"lucide-react\"\nimport type React from \"react\"\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useRecoilState } from \"recoil\"\nimport { getChatOnlineApi, getFrequently, getHomeLabelApi, getUncategorized } from \"~/api/apps\"\nimport { Button } from \"~/components\"\nimport { useLocalize } from \"~/hooks\"\nimport { addCommonlyAppState } from \"..\"\nimport { AgentCard } from \"./AgentCard\"\n\n// 智能体类型定义\ninterface Agent {\n  id: string\n  name: string\n  description: string\n  logo: string\n  category: string\n  flow_type: number\n  user_id: string\n}\n\n// 组件Props类型\ninterface AgentGridProps {\n  favorites: string[] | null\n  onAddToFavorites: (type: number, id: string) => void\n  onRemoveFromFavorites: (userId: string, type: number, id: string) => void\n  sectionRefs: React.MutableRefObject<Record<string, HTMLElement | null>>\n  refreshTrigger: number\n  onCardClick: (agent: Agent) => void\n  onSectionMounted: (id: string, element: HTMLElement | null) => void // 新增回调函数\n}\n\n// 分类标签类型\ninterface Category {\n  value: string\n  label: string\n  selected: boolean\n}\n\n// 分页状态类型（含预请求字段）\ninterface Pagination {\n  page: number // 当前已加载到的页码\n  hasMore: boolean // 是否有下一页（基于预请求结果）\n  preloadedNextPage: Agent[] | null // 预请求的下一页数据（缓存）\n  isPreloading: boolean // 是否正在预请求下一页（防重复）\n}\n\nconst uncategorizedPageSize = 24\n\nexport function AgentGrid({\n  favorites,\n  onAddToFavorites,\n  onRemoveFromFavorites,\n  sectionRefs,\n  refreshTrigger,\n  onCardClick,\n  onSectionMounted // 新增回调函数\n}: AgentGridProps) {\n  const localize = useLocalize()\n  const pageSize = 8 // 固定单页容量\n  const [categories, setCategories] = useState<Category[]>([])\n  const [agentsByCategory, setAgentsByCategory] = useState<Record<string, Agent[]>>({})\n  const [uncategorizedAgents, setUncategorizedAgents] = useState<Agent[]>([])\n  const [loading, setLoading] = useState<Record<string, boolean>>({}) // 分类加载状态\n  const [uncategorizedLoading, setUncategorizedLoading] = useState(false) // 未分类加载状态\n  const [allAgents, setAllAgents] = useState<Agent[]>([]) // 常用智能体数据\n  const [frequentlyUsedLoading, setFrequentlyUsedLoading] = useState(false) // 常用加载状态\n  const [commonlyApp, addCommonlyApp] = useRecoilState(addCommonlyAppState)\n\n  // 分页状态初始化（含预请求字段）\n  const [pagination, setPagination] = useState<Record<string, Pagination>>({})\n  const [uncategorizedPagination, setUncategorizedPagination] = useState<Pagination>({\n    page: 1,\n    hasMore: false,\n    preloadedNextPage: null,\n    isPreloading: false\n  })\n  const [frequentlyUsedPagination, setFrequentlyUsedPagination] = useState<Pagination>({\n    page: 1,\n    hasMore: false,\n    preloadedNextPage: null,\n    isPreloading: false\n  })\n\n  // 判断是否为常用智能体\n  const isFavorite = (agentId: string): boolean => {\n    return favorites ? favorites.includes(agentId) : false\n  }\n\n  // 通用预请求函数：请求下一页数据并更新状态\n  const preloadNextPage = async (\n    categoryType: \"frequently\" | \"uncategorized\" | \"category\",\n    categoryId?: string, // 分类ID（仅分类数据需要）\n    currentPage: number = 1\n  ) => {\n    const nextPageNum = currentPage + 1\n    // 避免重复预请求\n    if (categoryType === \"frequently\" && frequentlyUsedPagination.isPreloading) return\n    if (categoryType === \"uncategorized\" && uncategorizedPagination.isPreloading) return\n    if (categoryType === \"category\" && categoryId && pagination[categoryId]?.isPreloading) return\n\n    // 标记为正在预请求\n    if (categoryType === \"frequently\") {\n      setFrequentlyUsedPagination(prev => ({ ...prev, isPreloading: true }))\n    } else if (categoryType === \"uncategorized\") {\n      setUncategorizedPagination(prev => ({ ...prev, isPreloading: true }))\n    } else if (categoryType === \"category\" && categoryId) {\n      setPagination(prev => ({\n        ...prev,\n        [categoryId]: { ...(prev[categoryId] || initialPagination), isPreloading: true }\n      }))\n    }\n\n    try {\n      // 不同类型的预请求逻辑\n      let nextPageData: Agent[] = []\n      if (categoryType === \"frequently\") {\n        const res = await getFrequently(nextPageNum, pageSize)\n        nextPageData = res.data || []\n      } else if (categoryType === \"uncategorized\") {\n        const res = await getUncategorized(nextPageNum, uncategorizedPageSize)\n        nextPageData = res.data || []\n      } else if (categoryType === \"category\" && categoryId) {\n        const res = await getChatOnlineApi(nextPageNum, \"\", parseInt(categoryId))\n        nextPageData = res.data || []\n      }\n\n      // 预请求结果：有数据→hasMore=true，无数据→hasMore=false\n      const hasMore = nextPageData.length > 0\n\n      // 更新分页状态（存储预请求数据）\n      if (categoryType === \"frequently\") {\n        setFrequentlyUsedPagination(prev => ({\n          ...prev,\n          hasMore: hasMore,\n          preloadedNextPage: nextPageData,\n          isPreloading: false\n        }))\n      } else if (categoryType === \"uncategorized\") {\n        setUncategorizedPagination(prev => ({\n          ...prev,\n          hasMore: hasMore,\n          preloadedNextPage: nextPageData,\n          isPreloading: false\n        }))\n      } else if (categoryType === \"category\" && categoryId) {\n        setPagination(prev => ({\n          ...prev,\n          [categoryId]: {\n            ...(prev[categoryId] || initialPagination),\n            hasMore: hasMore,\n            preloadedNextPage: nextPageData,\n            isPreloading: false\n          }\n        }))\n      }\n    } catch (error) {\n      console.error(`预请求${categoryType}下一页失败:`, error)\n      // 失败默认认为无下一页\n      if (categoryType === \"frequently\") {\n        setFrequentlyUsedPagination(prev => ({ ...prev, hasMore: false, isPreloading: false }))\n      } else if (categoryType === \"uncategorized\") {\n        setUncategorizedPagination(prev => ({ ...prev, hasMore: false, isPreloading: false }))\n      } else if (categoryType === \"category\" && categoryId) {\n        setPagination(prev => ({\n          ...prev,\n          [categoryId]: { ...(prev[categoryId] || initialPagination), hasMore: false, isPreloading: false }\n        }))\n      }\n    }\n  }\n\n  // 初始分页配置\n  const initialPagination: Pagination = {\n    page: 1,\n    hasMore: false,\n    preloadedNextPage: null,\n    isPreloading: false\n  }\n\n  // 1. 加载常用智能体（含预请求）\n  const fetchFrequentlyUsed = async (targetPage: number = 1) => {\n    setFrequentlyUsedLoading(true);\n    try {\n      let allLoadedAgents: Agent[] = [];\n\n      // 步骤2：加载「第1页到目标页码」的所有数据（确保数据最新且完整）\n      for (let page = 1; page <= targetPage; page++) {\n        const res = await getFrequently(page, pageSize);\n        const pageAgents = res.data || [];\n        allLoadedAgents = [...allLoadedAgents, ...pageAgents];\n      }\n\n      // 步骤3：更新数据（覆盖为最新的完整数据）\n      setAllAgents(allLoadedAgents);\n\n      // 步骤4：保持分页状态（页码不变），并重新预请求下一页\n      setFrequentlyUsedPagination(prev => ({\n        ...prev,\n        page: targetPage, // 保持当前页码\n        preloadedNextPage: null // 清空已使用的预请求数据，避免重复\n      }));\n\n      // 步骤5：重新预请求下一页（确保「显示更多」按钮状态正确）\n      preloadNextPage(\"frequently\", undefined, targetPage);\n\n    } catch (error) {\n      console.error(\"获取常用助手失败:\", error);\n    } finally {\n      setFrequentlyUsedLoading(false);\n    }\n  };\n\n  // 2. 加载分类标签\n  const fetchCategoryTags = async () => {\n    try {\n      const res = await getHomeLabelApi()\n      const categoryList = (res.data || []).map((tag: any) => ({\n        label: tag.name,\n        value: tag.id.toString(),\n        selected: true\n      }))\n      setCategories(categoryList)\n\n      // 初始化分类分页状态\n      const initPagination: Record<string, Pagination> = {}\n      categoryList.forEach((category: Category) => {\n        initPagination[category.value] = { ...initialPagination }\n      })\n      setPagination(initPagination)\n\n      // 加载每个分类的第1页数据\n      categoryList.forEach((category: Category) => {\n        fetchAgentsForCategory(category.value, 1)\n      })\n\n      // 加载未分类数据\n      fetchUncategorizedAgents(1)\n    } catch (error) {\n      console.error(\"获取分类失败:\", error)\n    }\n  }\n\n  // 3. 加载分类智能体（含预请求）\n  const fetchAgentsForCategory = async (categoryId: string, pageNum: number = 1) => {\n    setLoading(prev => ({ ...prev, [categoryId]: true }))\n    try {\n      const res = await getChatOnlineApi(pageNum, \"\", parseInt(categoryId))\n      const agents = res.data || []\n\n      // 首次加载第1页后，预请求第2页\n      if (pageNum === 1) {\n        preloadNextPage(\"category\", categoryId, pageNum)\n      }\n\n      // 累加数据\n      setAgentsByCategory(prev => ({\n        ...prev,\n        [categoryId]: pageNum === 1 ? agents : [...(prev[categoryId] || []), ...agents]\n      }))\n\n      // 更新当前页码\n      setPagination(prev => ({\n        ...prev,\n        [categoryId]: {\n          ...(prev[categoryId] || initialPagination),\n          page: pageNum,\n          ...(pageNum > 1 && { preloadedNextPage: null }) // 清空已使用的预请求数据\n        }\n      }))\n\n      // 后续加载后，预请求新的下一页\n      if (pageNum > 1) {\n        preloadNextPage(\"category\", categoryId, pageNum)\n      }\n    } catch (error) {\n      console.error(`获取分类 ${categoryId} 失败:`, error)\n    } finally {\n      setLoading(prev => ({ ...prev, [categoryId]: false }))\n    }\n  }\n\n  // 4. 加载未分类智能体（含预请求）\n  const fetchUncategorizedAgents = async (pageNum: number = 1) => {\n    setUncategorizedLoading(true)\n    try {\n      const res = await getUncategorized(pageNum, uncategorizedPageSize)\n      const agents = res.data || []\n\n      // 首次加载第1页后，预请求第2页\n      if (pageNum === 1) {\n        preloadNextPage(\"uncategorized\", undefined, pageNum)\n      }\n\n      // 累加数据\n      setUncategorizedAgents(prev => pageNum === 1 ? agents : [...prev, ...agents])\n\n      // 更新当前页码\n      setUncategorizedPagination(prev => ({\n        ...prev,\n        page: pageNum,\n        ...(pageNum > 1 && { preloadedNextPage: null }) // 清空已使用的预请求数据\n      }))\n\n      // 后续加载后，预请求新的下一页\n      if (pageNum > 1) {\n        preloadNextPage(\"uncategorized\", undefined, pageNum)\n      }\n    } catch (error) {\n      console.error(\"获取未分类助手失败:\", error)\n    } finally {\n      setUncategorizedLoading(false)\n    }\n  }\n\n  // 5. 加载更多（优先使用预请求数据）\n  const loadMore = (categoryId: string) => {\n    if (categoryId === \"frequently_used\") {\n      const { page, preloadedNextPage } = frequentlyUsedPagination\n      const nextPage = page + 1\n      // 有预请求数据→直接复用，无则请求\n      if (preloadedNextPage && preloadedNextPage.length > 0) {\n        setAllAgents(prev => [...prev, ...preloadedNextPage])\n        setFrequentlyUsedPagination(prev => ({\n          ...prev,\n          page: nextPage,\n          preloadedNextPage: null // 清空已使用的预请求数据\n        }))\n        // 复用后预请求新的下一页\n        preloadNextPage(\"frequently\", undefined, nextPage)\n      } else {\n        fetchFrequentlyUsed(nextPage)\n      }\n    } else if (categoryId === \"uncategorized\") {\n      const { page, preloadedNextPage } = uncategorizedPagination\n      const nextPage = page + 1\n      if (preloadedNextPage && preloadedNextPage.length > 0) {\n        setUncategorizedAgents(prev => [...prev, ...preloadedNextPage])\n        setUncategorizedPagination(prev => ({\n          ...prev,\n          page: nextPage,\n          preloadedNextPage: null\n        }))\n        preloadNextPage(\"uncategorized\", undefined, nextPage)\n      } else {\n        fetchUncategorizedAgents(nextPage)\n      }\n    } else {\n      const categoryPage = pagination[categoryId] || initialPagination\n      const { page, preloadedNextPage } = categoryPage\n      const nextPage = page + 1\n      if (preloadedNextPage && preloadedNextPage.length > 0) {\n        setAgentsByCategory(prev => ({\n          ...prev,\n          [categoryId]: [...(prev[categoryId] || []), ...preloadedNextPage]\n        }))\n        setPagination(prev => ({\n          ...prev,\n          [categoryId]: {\n            ...categoryPage,\n            page: nextPage,\n            preloadedNextPage: null\n          }\n        }))\n        preloadNextPage(\"category\", categoryId, nextPage)\n      } else {\n        fetchAgentsForCategory(categoryId, nextPage)\n      }\n    }\n  }\n\n  // 6. 移除常用智能体\n  const handleRemoveFromFavorites = async (userId: string, type: number, id: string) => {\n    try {\n      onRemoveFromFavorites(userId, type, id);\n      await new Promise(resolve => setTimeout(resolve, 100));\n      // 关键修改：传入当前页码，而非固定1\n      fetchFrequentlyUsed(frequentlyUsedPagination.page);\n    } catch (error) {\n      console.error(\"移除常用助手失败:\", error);\n    }\n  };\n\n  // 7. 添加常用智能体\n  const handleAddToFavorites = async (type: number, id: string) => {\n    try {\n      await onAddToFavorites(type, id);\n      // 关键修改：传入当前页码，而非固定1\n      fetchFrequentlyUsed(frequentlyUsedPagination.page);\n    } catch (error) {\n      console.error(\"添加常用助手失败:\", error);\n    }\n  };\n  useEffect(() => {\n    if (commonlyApp) {\n      handleAddToFavorites(commonlyApp.type, commonlyApp.id)\n      addCommonlyApp(null)\n    }\n  }, [commonlyApp])\n\n  // 8. 初始化加载+刷新触发\n  useEffect(() => {\n    fetchCategoryTags()\n    fetchFrequentlyUsed(1)\n  }, [refreshTrigger])\n\n  // 构建分区数据\n  const sections = useMemo(() => [\n    // 常用智能体\n    {\n      id: \"frequently_used\",\n      name: localize('com_app_frequently_used'),\n      agents: allAgents,\n      isFavoriteSection: true,\n      pagination: frequentlyUsedPagination,\n      loading: frequentlyUsedLoading\n    },\n    // 分类智能体\n    ...categories.map(category => ({\n      id: category.value,\n      name: category.label,\n      agents: agentsByCategory[category.value] || [],\n      isFavoriteSection: false,\n      pagination: pagination[category.value] || initialPagination,\n      loading: loading[category.value] || false\n    })),\n    // 未分类智能体\n    {\n      id: \"uncategorized\",\n      name: localize('com_app_uncategorized'),\n      agents: uncategorizedAgents,\n      isFavoriteSection: false,\n      pagination: uncategorizedPagination,\n      loading: uncategorizedLoading\n    }\n  ].filter(section => {\n    return section.id !== \"frequently_used\" || section.id !== \"uncategorized\" || true;\n  }), [allAgents, agentsByCategory, categories, frequentlyUsedLoading, frequentlyUsedPagination,\n    loading, pagination, uncategorizedAgents, uncategorizedLoading, uncategorizedPagination, localize])\n\n  return (\n    <div className=\"space-y-8\">\n      {sections.map((section) => {\n        const { id, name, agents, isFavoriteSection, pagination, loading } = section\n        return (\n          <section\n            key={id}\n            id={id}\n            className=\"relative\"\n            ref={(el) => {\n              sectionRefs.current[id] = el\n            }}          >\n            {/* 分区标题 */}\n            <h2 className={`text-base font-medium mb-4 text-blue-600 ${id === 'frequently_used' && 'hidden'}`}>{name}</h2>\n\n            {/* 加载状态（仅空数据时显示） */}\n            {loading && agents.length === 0 ? (\n              <div className=\"flex justify-center items-center h-32\">\n                <Loader2 className=\"h-6 w-6 animate-spin text-blue-600\" />\n              </div>\n            ) : (\n              <>\n                {/* 智能体卡片列表 */}\n                <div className=\"grid grid-cols-4 gap-3\">\n                  {agents.map((agent) => (\n                    <AgentCard\n                      key={agent.id}\n                      agent={agent}\n                      onClick={() => onCardClick(agent)}\n                      isFavorite={isFavorite(agent.id)}\n                      showRemove={isFavoriteSection}\n                      onAddToFavorites={() => addCommonlyApp({ type: agent.flow_type, id: agent.id })}\n                      onRemoveFromFavorites={() => handleRemoveFromFavorites(agent.user_id, agent.flow_type, agent.id)}\n                    />\n                  ))}\n                </div>\n\n                {/* 展示更多按钮（基于预请求结果判断） */}\n                {!loading && pagination.hasMore && (\n                  <div className=\"flex justify-end mt-6\">\n                    <Button\n                      variant=\"default\"\n                      onClick={() => loadMore(id)}\n                      className=\"h-8 px-3 text-xs rounded-md bg-blue-600 hover:bg-blue-700 text-white\"\n                      disabled={loading}\n                    >\n                      {loading ? (\n                        <Loader2 className=\"h-3 w-3 animate-spin mr-1\" />\n                      ) : (\n                        <ChevronDown size={14} className=\"mr-1\" />\n                      )}\n                      {localize('com_show_more')}\n                    </Button>\n                  </div>\n                )}\n              </>\n            )}\n          </section>\n        )\n      })}\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/client/src/pages/apps/components/AgentNavigation.tsx",
    "content": "\"use client\"\n\nimport { SettingsIcon } from \"lucide-react\"\nimport { useEffect, useState } from \"react\"\nimport { Button } from \"~/components\"\nimport { useAuthContext, useLocalize } from \"~/hooks\"\nimport MarkLabel from \"./MarkLabel\"\nimport { getHomeLabelApi } from \"~/api/apps\"\n\ninterface Category {\n    value: string\n    label: string,\n    selected: boolean\n}\n\ninterface AgentNavigationProps {\n    onCategoryChange: (categoryId: string) => void\n    onRefresh: () => void\n}\n\nexport function AgentNavigation({ onCategoryChange, onRefresh }: AgentNavigationProps) {\n    const { user } = useAuthContext();\n    const localize = useLocalize();\n\n    const [isLabelModalOpen, setIsLabelModalOpen] = useState(false)\n    const [activeCategory, setActiveCategory] = useState<string>(\"favorites\")\n\n    const [categories, setCategories] = useState<Category[]>([])\n\n    const fetchCategoryTags = async () => {\n        const tags = await getHomeLabelApi()\n        // tags.data.unshift({ id: \"favorites\", name: \"常用\", selected: true })\n        setCategories(tags.data.map(tag => ({\n            label: tag.name,\n            value: tag.id,\n            selected: true\n        })))\n    }\n\n    // Initial data load\n    useEffect(() => {\n        fetchCategoryTags()\n    }, [])\n\n\n    const handleCloseLabelModal = async (shouldClose) => {\n        if (shouldClose) {\n            setIsLabelModalOpen(false)\n        } else {\n            setIsLabelModalOpen(shouldClose)\n        }\n        await fetchCategoryTags()\n        onRefresh();\n    }\n\n    return (\n        <nav className=\"flex items-center gap-2 flex-wrap\">\n            <Button\n                variant={activeCategory === 'favorites' ? \"default\" : \"outline\"}\n                onClick={() => {\n                    onCategoryChange('favorites')\n                    setActiveCategory('favorites')\n                }}\n                className=\"text-xs h-8 font-normal\"\n            >{localize('com_app_common')}</Button>\n            {categories.map((category) => (\n                <Button\n                    key={category.value}\n                    variant={activeCategory === category.value ? \"default\" : \"outline\"}\n                    onClick={() => {\n                        onCategoryChange(category.value)\n                        setActiveCategory(category.value)\n                    }}\n                    className=\"text-xs h-8 font-normal\"\n                >\n                    {category.label}\n                </Button>\n\n            ))}\n            <Button\n                variant={activeCategory === 'uncategorized' ? \"default\" : \"outline\"}\n                onClick={() => {\n                    onCategoryChange('uncategorized')\n                    setActiveCategory('uncategorized')\n                }}\n                className=\"text-xs h-8 font-normal\"\n            >{localize('com_app_uncategorized')}</Button>\n            {/* edit label  */}\n            {user?.role === 'admin' && (\n                <Button size={'icon'} variant={\"outline\"} className=\"h-8\" onClick={() => setIsLabelModalOpen(true)}>\n                    <SettingsIcon size={18} />\n                </Button>\n            )}\n\n            <MarkLabel\n                open={isLabelModalOpen}\n                home={categories}\n                onClose={handleCloseLabelModal}\n            />\n        </nav>\n    )\n}\n"
  },
  {
    "path": "src/frontend/client/src/pages/apps/components/MarkLabel.tsx",
    "content": "\n\n\n\n\nimport { CircleX, LightbulbIcon } from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { getAllLabelsApi, updateHomeLabelApi } from '~/api/apps';\nimport { Button, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"~/components\";\nimport { useToastContext } from \"~/Providers\";\nimport { useLocalize } from \"~/hooks\";\nimport { cn } from \"~/utils\";\n\nfunction DragItem({ className = '', data, children, onCancel }) {\n    return <div className={cn('h-7 w-32 relative rounded-md rounded-l-xl border flex place-items-center', className)}>\n        <CircleX onClick={(e) => { e.stopPropagation(); onCancel(data.id) }}\n            className='text-gray-400 absolute top-[-6px] right-[-6px] cursor-pointer size-4' />\n        <div className='bg-gray-500 rounded-full w-[26px] h-full text-center'>\n            <span className='text-slate-50 font-bold text-sm'>{data.index}</span>\n        </div>\n        <div className='ml-2 truncate'>\n            {children}\n        </div>\n    </div>\n}\n\nexport default function MarkLabel({ open, home, onClose }) {\n    const [labels, setLabels] = useState([])\n    const [selected, setSelected] = useState([])\n\n    const { showToast } = useToastContext();\n    const localize = useLocalize();\n\n    useEffect(() => {\n        async function init() {\n            const all = await getAllLabelsApi()\n            const newData = all.data.data.map(d => {\n                const res = home.find(h => h.value === d.id)\n                return res ? { label: d.name, value: d.id, selected: true } : { label: d.name, value: d.id, selected: false }\n            })\n            setLabels(newData)\n            setSelected(home)\n        }\n        init()\n    }, [home])\n\n    const handleCancel = () => {\n        onClose(false)\n    }\n\n    const handleConfirm = async () => {\n        await updateHomeLabelApi(selected.map(s => s.value))\n        // TODO 重新加载列表\n        onClose(true)\n    }\n\n    const handleSelect = (id) => {\n        setLabels(pre => {\n            const newData = pre.map(l => l.value === id ? { ...l, selected: !l.selected } : l)\n            if (newData.filter(d => d.selected).length > 10) {\n                showToast({ message: localize('com_label_max_selection'), status: 'warning' });\n                return pre\n            }\n            const select = newData.find(d => d.value === id && d.selected)\n            setSelected(select ? [...selected, select] : pre => pre.filter(d => d.value !== id))\n            return newData\n        })\n    }\n\n    const handleDelete = (id) => {\n        setSelected(pre => pre.filter(d => d.value !== id))\n        setLabels(pre => pre.map(d => d.value === id ? { ...d, selected: !d.selected } : d))\n    }\n\n    const handleDragEnd = (result) => {\n        if (!result.destination) return\n        const newData = selected\n        const [moveItem] = newData.splice(result.source.index, 1)\n        newData.splice(result.destination.index, 0, moveItem)\n        setSelected(newData)\n        setFlag(false)\n    }\n\n    const [flag, setFlag] = useState(false) // 解决拖拽映射位置错位\n\n    return <Dialog open={open} onOpenChange={onClose}>\n        <DialogContent className='max-w-[70%] overflow-hidden'>\n            <DialogHeader className='h-20'>\n                <DialogTitle className='flex items-center space-x-2'>\n                    <LightbulbIcon />\n                    <span className='text-sm text-gray-500'>{localize('com_label_operation_tip')}</span>\n                </DialogTitle>\n            </DialogHeader>\n            <div className='h-[600px] w-full grid grid-cols-[70%_30%]'>\n                <div className='ml-10'>\n                    <div className='w-full relative'>\n                        {\n                            labels.map(l =>\n                                <Button onClick={() => handleSelect(l.value)}\n                                    size='sm'\n                                    className={`ml-4 mt-4 p-1 ${!l.selected && 'bg-primary/40 hover:bg-primary/70'} w-[120px]`}>\n                                    <span className='truncate text-xs'>{l.label}</span>\n                                </Button>)\n                        }\n                    </div>\n                </div>\n                <div className='border-l text-gray-500'>\n                    <div className='ml-4'>\n                        <span className='text-md font-bold'>{localize('com_label_selected', { 0: selected.length })}</span>\n                        <DragDropContext onDragEnd={handleDragEnd} onDragStart={() => setFlag(true)} onDragUpdate={() => setFlag(true)}>\n                            <Droppable droppableId={'list'}>\n                                {(provided) => (\n                                    <div {...provided.droppableProps} ref={provided.innerRef}>\n                                        {selected.map((b, index) => (\n                                            <Draggable key={'drag' + b.value} draggableId={'drag' + b.value} index={index}>\n                                                {(provided) => (\n                                                    <div ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps}\n                                                        style={flag ? { ...provided.draggableProps.style, position: 'relative', left: 0, top: 0 } : { ...provided.draggableProps.style }}>\n                                                        <DragItem onCancel={handleDelete} data={{ index: index + 1, id: b.value }} className='mt-4 w-[170px]'>\n                                                            <span className='font-bold text-sm'>{b.label}</span>\n                                                        </DragItem>\n                                                    </div>\n                                                )}\n                                            </Draggable>\n                                        ))}\n                                        {provided.placeholder}\n                                    </div>\n                                )}\n                            </Droppable>\n                        </DragDropContext>\n                    </div>\n                </div>\n            </div>\n            <DialogFooter className='absolute bottom-6 right-6'>\n                <Button variant=\"outline\" className=\"h-10 w-[120px] px-16\" onClick={handleCancel}>{localize('com_label_cancel')}</Button>\n                <Button className=\"px-16 h-10 w-[120px]\" onClick={handleConfirm}>{localize('com_label_save')}</Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}"
  },
  {
    "path": "src/frontend/client/src/pages/apps/components/SearchOverlay.tsx",
    "content": "\"use client\"\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport { useLocalize } from \"~/hooks\"\nimport { AgentCard } from \"./AgentCard\"\nimport { addCommonlyAppState } from \"..\"\nimport { useRecoilState } from \"recoil\"\n\ninterface SearchOverlayProps {\n    query: string\n    results: any[]\n    loading: boolean\n    favorites: string[]\n    onAddToFavorites: (agentId: string) => void\n    onRemoveFromFavorites: (agentId: string) => void\n    onCardClick: (agent: any) => void\n    onClose: () => void\n}\n\nexport function SearchOverlay({\n    query,\n    results,\n    loading,\n    favorites,\n    onAddToFavorites,\n    onRemoveFromFavorites,\n    onCardClick,\n    onClose\n}: SearchOverlayProps) {\n    const localize = useLocalize()\n    const [displayedResults, setDisplayedResults] = useState<any[]>([])\n    const [isLoadingMore, setIsLoadingMore] = useState(false)\n    const [hasMore, setHasMore] = useState(true)\n    const scrollContainerRef = useRef<HTMLDivElement>(null)\n    const [_, addCommonlyApp] = useRecoilState(addCommonlyAppState)\n    const itemsPerLoad = 8\n\n    // 过滤结果\n    const filteredResults = useMemo(() => {\n        return results.filter((agent: any) =>\n            agent.name.toLowerCase().includes(query.toLowerCase()) ||\n            agent.description.toLowerCase().includes(query.toLowerCase())\n        )\n    }, [results, query])\n\n    const loadMoreItems = useCallback(() => {\n        if (isLoadingMore || !hasMore) return\n\n        setIsLoadingMore(true)\n\n        // 使用requestAnimationFrame确保在下一帧执行\n        requestAnimationFrame(() => {\n            const currentLength = displayedResults.length\n            const nextItems = filteredResults.slice(currentLength, currentLength + itemsPerLoad)\n\n            setDisplayedResults((prev) => [...prev, ...nextItems])\n            setHasMore(currentLength + nextItems.length < filteredResults.length)\n            setIsLoadingMore(false)\n        })\n    }, [displayedResults.length, filteredResults, isLoadingMore, hasMore, itemsPerLoad])\n\n    // 重置显示结果\n    useEffect(() => {\n        const initialItems = filteredResults.slice(0, itemsPerLoad)\n        setDisplayedResults(initialItems)\n        setHasMore(initialItems.length < filteredResults.length)\n    }, [filteredResults, itemsPerLoad])\n\n    // 滚动事件处理 - 使用防抖优化性能\n    const handleScroll = useCallback(() => {\n        const container = scrollContainerRef.current\n        if (!container || isLoadingMore || !hasMore) return\n\n        const { scrollTop, scrollHeight, clientHeight } = container\n        const threshold = 50 // 减小阈值，更容易触发加载\n\n        // 添加调试信息\n        console.log(\"Scroll check:\", {\n            scrollTop,\n            scrollHeight,\n            clientHeight,\n            threshold: scrollHeight - scrollTop - clientHeight,\n            hasMore,\n            isLoadingMore\n        })\n\n        if (scrollHeight - scrollTop - clientHeight < threshold) {\n            console.log(\"Loading more items...\")\n            loadMoreItems()\n        }\n    }, [hasMore, isLoadingMore, loadMoreItems])\n\n    // 添加滚动事件监听 - 使用被动事件监听器提高性能\n    useEffect(() => {\n        const container = scrollContainerRef.current\n        if (!container) return\n\n        container.addEventListener(\"scroll\", handleScroll, { passive: true })\n        return () => container.removeEventListener(\"scroll\", handleScroll)\n    }, [handleScroll])\n\n    // 初始加载完成后检查是否需要加载更多\n    useEffect(() => {\n        const container = scrollContainerRef.current\n        if (!container || filteredResults.length <= itemsPerLoad) return\n\n        // 检查内容是否不足一屏，如果是则自动加载更多\n        if (container.scrollHeight <= container.clientHeight && hasMore && !isLoadingMore) {\n            console.log(\"Auto-loading more items due to short content\")\n            loadMoreItems()\n        }\n    }, [filteredResults, hasMore, isLoadingMore, loadMoreItems, itemsPerLoad])\n\n    return (\n        <div className=\"absolute inset-0 bg-background backdrop-blur-sm z-50\">\n            <div ref={scrollContainerRef} className=\"h-full overflow-auto\">\n                <div className=\"container mx-auto px-6 py-6\">\n                    {loading && displayedResults.length === 0 ? (\n                        <div className=\"text-center py-12\">\n                            <div className=\"inline-flex items-center gap-2 text-muted-foreground\">\n                                <div className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\"></div>\n                                {localize('com_search_searching')}\n                            </div>\n                        </div>\n                    ) : displayedResults.length > 0 ? (\n                        <>\n\n                            <div className=\"grid grid-cols-4 gap-2 mb-8\">\n                                {displayedResults.map((agent) => (\n                                    <AgentCard\n                                        key={agent.id}\n                                        onClick={() => onCardClick(agent)}\n                                        agent={agent}\n                                        isFavorite={favorites ? favorites.includes(agent.id.toString()) : false}\n                                        showRemove={false}\n                                        onAddToFavorites={() => addCommonlyApp({ type: agent.flow_type, id: agent.id.toString() })}\n                                        onRemoveFromFavorites={() => onRemoveFromFavorites(agent.id.toString())}\n                                    />\n                                ))}\n                            </div>\n\n                            {isLoadingMore && (\n                                <div className=\"text-center py-8\">\n                                    <div className=\"inline-flex items-center gap-2 text-muted-foreground\">\n                                        <div className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\"></div>\n                                        {localize('com_search_loading_more')}\n                                    </div>\n                                </div>\n                            )}\n                        </>\n                    ) : (\n                        <div className=\"text-center py-12\">\n                            <p className=\"text-muted-foreground\">{localize('com_search_no_results')}</p>\n                        </div>\n                    )}\n                </div>\n            </div>\n        </div>\n    )\n}"
  },
  {
    "path": "src/frontend/client/src/pages/apps/index.tsx",
    "content": "\"use client\"\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport { Search, X } from \"lucide-react\"\nimport { useRef, useState } from \"react\"\nimport { useNavigate } from \"react-router\"\nimport { addToFrequentlyUsed, getChatOnlineApi, removeFromFrequentlyUsed } from \"~/api/apps\"\nimport { Input } from \"~/components/ui\"\nimport { useDebounce } from '~/components/ui/MultiSelect'\nimport { useGetBsConfig } from '~/data-provider'\nimport { ConversationData, QueryKeys } from \"~/data-provider/data-provider/src\"\nimport useToast from '~/hooks/useToast'\nimport { useLocalize } from '~/hooks'\nimport store from \"~/store\"\nimport { addConversation, generateUUID } from \"~/utils\"\nimport { AgentGrid } from \"./components/AgentGrid\"\nimport { AgentNavigation } from \"./components/AgentNavigation\"\nimport { SearchOverlay } from \"./components/SearchOverlay\"\nimport { atom } from 'recoil'\n\nexport default function AgentCenter() {\n    const [searchQuery, setSearchQuery] = useState(\"\")\n    const [favorites, setFavorites] = useState<string[]>([])\n    const [isSearching, setIsSearching] = useState(false)\n    const [searchResults, setSearchResults] = useState([])\n    const [searchLoading, setSearchLoading] = useState(false)\n    const scrollContainerRef = useRef<HTMLDivElement>(null)\n    const sectionRefs = useRef<Record<string, HTMLElement | null>>({})\n    const [refreshTrigger, setRefreshTrigger] = useState(0);\n    const refreshAgentData = () => {\n        setRefreshTrigger(prev => prev + 1);\n    }\n\n    const { showToast } = useToast()\n    const localize = useLocalize()\n    const categoryIdRef = useRef<string>(\"\")\n\n    const handleCategoryChange = (categoryId: string) => {\n        console.log(\"点击的标签ID:\", categoryId, \"当前搜索状态:\", isSearching);\n\n        // 1. 清除搜索状态（如果有）\n        const wasSearching = !!searchQuery;\n        if (wasSearching) {\n            setSearchQuery(\"\");\n            setIsSearching(false);\n        }\n        categoryIdRef.current = categoryId;\n\n        // 2. 定义核心滚动逻辑\n        const performScroll = () => {\n            if (categoryId === \"favorites\") {\n                // 常用标签：直接滚动到顶部（无需依赖sectionRefs）\n                scrollContainerRef.current?.scrollTo({\n                    top: 0,\n                    behavior: \"smooth\"\n                });\n                return;\n            }\n\n            // 其他标签：通过sectionRefs查找DOM并滚动\n            const targetSection = sectionRefs.current[categoryId];\n            if (targetSection && scrollContainerRef.current) {\n                const containerRect = scrollContainerRef.current.getBoundingClientRect();\n                const sectionRect = targetSection.getBoundingClientRect();\n                const relativeTop = sectionRect.top - containerRect.top + scrollContainerRef.current.scrollTop;\n\n                scrollContainerRef.current.scrollTo({\n                    top: relativeTop - 20,\n                    behavior: \"smooth\"\n                });\n            } else {\n                console.log(\"未找到目标分区，但已尝试滚动\");\n            }\n        };\n\n        // 3. 分场景处理\n        if (!wasSearching) {\n            // 场景1：非搜索状态（AgentGrid已渲染）→ 立即滚动\n            performScroll();\n        } else {\n            // 场景2：从搜索状态切换（AgentGrid需要重新渲染）→ 监听DOM变化后滚动\n            const container = scrollContainerRef.current;\n            if (!container) return;\n\n            // 停止之前的监听（避免重复）\n            let observer: MutationObserver | null = null;\n\n            observer = new MutationObserver((mutations, obs) => {\n                // 检查目标分区是否已挂载\n                const targetExists = categoryId === \"favorites\"\n                    ? true  // 常用标签无需检查DOM\n                    : !!sectionRefs.current[categoryId];\n\n                if (targetExists) {\n                    performScroll(); // 执行滚动\n                    obs.disconnect(); // 完成后断开\n                    observer = null;\n                }\n            });\n\n            // 监听滚动容器的DOM变化（AgentGrid渲染会改变子元素）\n            observer.observe(container, {\n                childList: true,    // 监听子元素增减\n                subtree: true       // 监听所有后代\n            });\n\n            // 安全超时：5秒后强制停止监听（防内存泄漏）\n            setTimeout(() => {\n                if (observer) {\n                    observer.disconnect();\n                    // 超时后仍尝试一次滚动（极端情况保底）\n                    performScroll();\n                }\n            }, 2000);\n        }\n    };\n\n    // 修改handleSearchChange函数，实现多页数据加载\n    const handleSearchChange = async (query: string) => {\n        if (query.trim()) {\n            setIsSearching(true);\n            setSearchLoading(true);\n            let allResults: any[] = []; // 存储所有页的结果\n            let currentPage = 1;\n            const pageSize = 80; // 每页条数（和接口保持一致）\n\n            try {\n                // 循环加载所有页数据\n                while (true) {\n                    // 调用接口，禁用默认限制（或按实际需要调整）\n                    const result = await getChatOnlineApi(\n                        currentPage,\n                        query,\n                        -1,\n                        pageSize // 禁用默认限制，或根据接口逻辑调整\n                    );\n\n                    const pageData = result.data || [];\n                    allResults = [...allResults, ...pageData];\n\n                    // 终止条件：当前页数据不足一页，说明已加载完所有数据\n                    if (pageData.length < pageSize) {\n                        break;\n                    }\n\n                    currentPage++; // 加载下一页\n                }\n\n                // 处理可能的id字段映射（确保id存在）\n                const formattedResults = allResults.map(item => ({\n                    ...item,\n                    id: item.id || item.agentId || item.flowId // 兼容不同字段名\n                }));\n\n                setSearchResults(formattedResults);\n            } catch (error) {\n                console.error(\"搜索失败:\", error);\n                setSearchResults([]);\n            } finally {\n                setSearchLoading(false);\n            }\n        } else {\n            setIsSearching(false);\n            setSearchResults([]);\n        }\n    };\n\n    const handleSearch = useDebounce(handleSearchChange, 360, false)\n\n    const handleSearchClear = () => {\n        setSearchQuery(\"\")\n        setIsSearching(false)\n        setSearchResults([])\n    }\n\n    const addToFavorites = async (type: string, id: string) => {\n        let mappedType: string;\n        if (type === '1') {\n            mappedType = 'flow';\n        } else if (type === '5') {\n            mappedType = 'assistant';\n        } else {\n            mappedType = 'workflow';\n        }\n\n        const res = await addToFrequentlyUsed(mappedType, id);\n        console.log(res);\n        // 成功时更新收藏列表\n        setFavorites(res.data);\n        return res;\n\n    }\n\n\n    const removeFromFavorites = async (userId: string, type: string, id: string) => {\n        let mappedType: string;\n        if (type === '1') {\n            mappedType = 'flow';\n        } else if (type === '5') {\n            mappedType = 'assistant';\n        } else {\n            mappedType = 'workflow';\n        }\n        const res = await removeFromFrequentlyUsed(userId, mappedType, id);\n    }\n\n    const clearAllConversations = store.useClearConvoState();\n    const { setConversation } = store.useCreateConversationAtom(0);\n    const queryClient = useQueryClient();\n\n    const navigate = useNavigate();\n    const handleCardClick = (agent) => {\n        console.log('agent :>> ', agent);\n\n        const _chatId = generateUUID(32)\n        const flowId = agent.id\n        const flowType = agent.flow_type || agent.type\n        // 新建会话\n        queryClient.setQueryData<ConversationData>([QueryKeys.allConversations], (convoData) => {\n            if (!convoData) {\n                return convoData;\n            }\n            setConversation((prevState: any) => {\n                return {\n                    ...prevState,\n                    conversationId: _chatId\n                }\n            })\n            return addConversation(convoData, {\n                conversationId: _chatId,\n                createdAt: \"\",\n                endpoint: null,\n                endpointType: null,\n                model: \"\",\n                flowId,\n                flowType: flowType,\n                title: agent.name,\n                tools: [],\n                updatedAt: \"\"\n            });\n        });\n        navigate(`/chat/${_chatId}/${flowId}/${flowType}`);\n    }\n\n    const { data: bsConfig } = useGetBsConfig()\n\n    return (\n        <div className=\"min-h-screen bg-background\">\n            {/* Fixed Header */}\n            <div className=\"sticky top-0 z-40 bg-background\">\n                <div className=\"container mx-auto px-6 py-6\">\n                    <div className=\"mt-2\">\n                        <h1 className=\"text-blue-600 text-[32px] truncate max-w-[600px] font-medium mb-2\">{bsConfig?.applicationCenterWelcomeMessage || localize('com_app_center_welcome')}</h1>\n                        <p className=\"text-muted-foreground text-base truncate max-w-[600px]\">{bsConfig?.applicationCenterDescription || localize('com_app_center_description')}</p>\n                    </div>\n                    <div className=\"mt-12 flex items-start justify-between\">\n                        <AgentNavigation onCategoryChange={handleCategoryChange} onRefresh={refreshAgentData} />\n                        <div className=\"relative w-80 min-w-48\">\n                            <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-500 w-4 h-4\" />\n                            <Input\n                                type=\"text\"\n                                placeholder={localize('com_agent_search_placeholder')}\n                                value={searchQuery}\n                                onChange={(e) => {\n                                    setSearchQuery(e.target.value)\n                                    handleSearch(e.target.value)\n                                }}\n                                className=\"pl-10 pr-10 h-10 rounded-full\"\n                            />\n                            {searchQuery && (\n                                <button\n                                    onClick={handleSearchClear}\n                                    className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n                                >\n                                    <X className=\"w-4 h-4\" />\n                                </button>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            {/* Scrollable Content */}\n            <div className=\"relative\" style={{ height: \"calc(100vh - 200px)\" }}>\n                <div ref={scrollContainerRef} className=\"container mx-auto px-6 py-6 pb-96 h-full overflow-y-auto scrollbar-hide\">\n\n                    <AgentGrid\n                        favorites={favorites}\n                        onAddToFavorites={addToFavorites}\n                        onRemoveFromFavorites={removeFromFavorites}\n                        sectionRefs={sectionRefs}\n                        refreshTrigger={refreshTrigger}\n                        onCardClick={handleCardClick}\n                    />\n                    {isSearching && (\n                        <SearchOverlay\n                            query={searchQuery}\n                            results={searchResults}\n                            loading={searchLoading}\n                            favorites={favorites}\n                            onAddToFavorites={addToFavorites}\n                            onRemoveFromFavorites={removeFromFavorites}\n                            onClose={handleSearchClear}\n                            onCardClick={handleCardClick}\n                        />\n                    )}\n                </div>\n            </div>\n        </div>\n    )\n}\n\n/* 添加常用应用 */\nexport const addCommonlyAppState = atom<Record<string, { id: string, type: number }>>({\n    key: \"addCommonlyAppState\",\n    default: null,\n})"
  },
  {
    "path": "src/frontend/client/src/pages/share.tsx",
    "content": "\nimport { useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { getShareParamsApi } from \"~/api\";\nimport ChatView from \"~/components/Chat/ChatView\";\nimport Sop from \"~/components/Sop\";\nimport AppChat from \"./appChat\";\n\nconst Apptypes = {\n    'skill': 1,\n    'assistant': 5,\n    'workflow': 10\n}\n\nexport default function Share() {\n    const { token: shareToken, vid } = useParams()\n    const [type, setType] = useState('')\n    const [shareInfo, setShareInfo] = useState(null)\n    const navigate = useNavigate()\n\n    useEffect(() => {\n        getShareParamsApi(shareToken).then(res => {\n            if (res.status_code === 404) {\n                console.log('404 page')\n                return navigate('/404', { replace: true })\n            }\n            setType(res.data.resource_type)\n            setShareInfo(res.data)\n        })\n    }, [])\n\n    if (!shareInfo) return null\n\n    switch (type) {\n        case 'linsight_session':\n            return <Sop id={shareInfo.resource_id} vid={vid} shareToken={shareToken} />\n        case 'workbench_chat':\n            return <ChatView id={shareInfo.resource_id} shareToken={shareToken} />;\n        default:\n            return <AppChat\n                chatId={shareInfo.resource_id}\n                flowId={shareInfo.meta_data.flowId}\n                shareToken={shareToken}\n                flowType={Apptypes[type]}\n            />\n    }\n};\n"
  },
  {
    "path": "src/frontend/client/src/routes/ChatRoute.tsx",
    "content": "import { useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useRecoilCallback } from 'recoil';\nimport { ToolCallsMapProvider, useToastContext } from '~/Providers';\nimport ChatView from '~/components/Chat/ChatView';\nimport { Spinner } from '~/components/svg';\nimport {\n  useGetConvoIdQuery,\n  useGetEndpointsQuery,\n  useGetStartupConfig,\n  useHealthCheck\n} from '~/data-provider';\nimport type { TPreset } from '~/data-provider/data-provider/src';\nimport { Constants, EModelEndpoint } from '~/data-provider/data-provider/src';\nimport { useGetModelsQuery } from '~/data-provider/data-provider/src/react-query';\nimport { useAppStartup, useAssistantListMap, useLocalize, useNewConvo } from '~/hooks';\nimport { getErrorI18nKey } from '~/pages/appChat/store/constants';\nimport store from '~/store';\nimport temporaryStore from '~/store/temporary';\nimport { getDefaultModelSpec, getModelSpecIconURL } from '~/utils';\nimport useAuthRedirect from './useAuthRedirect';\nimport { getDeleteFlowApi } from '~/api/apps';\n\nexport default function ChatRoute() {\n  useErrorPrompt()\n\n  useHealthCheck();\n  const { data: startupConfig } = useGetStartupConfig();\n\n  const { isAuthenticated, user } = useAuthRedirect();\n  const setIsTemporary = useRecoilCallback(\n    ({ set }) =>\n      (value: boolean) => {\n        set(temporaryStore.isTemporary, value);\n      },\n    [],\n  );\n  useAppStartup({ startupConfig, user });\n\n  const index = 0;\n  const { conversationId = '' } = useParams();\n\n  const { hasSetConversation, conversation } = store.useCreateConversationAtom(index);\n  const { newConversation } = useNewConvo();\n\n  const modelsQuery = useGetModelsQuery({\n    enabled: isAuthenticated,\n    refetchOnMount: 'always',\n  });\n  const initialConvoQuery = useGetConvoIdQuery(conversationId, {\n    enabled: isAuthenticated && conversationId !== Constants.NEW_CONVO,\n  });\n  const endpointsQuery = useGetEndpointsQuery({ enabled: isAuthenticated });\n  const assistantListMap = useAssistantListMap();\n\n  useEffect(() => {\n    const shouldSetConvo =\n      (startupConfig && !hasSetConversation.current && !modelsQuery.data?.initial) ?? false;\n    /* Early exit if startupConfig is not loaded and conversation is already set and only initial models have loaded */\n    if (!shouldSetConvo) {\n      return;\n    }\n\n    if (conversationId === Constants.NEW_CONVO && endpointsQuery.data && modelsQuery.data) {\n      const spec = getDefaultModelSpec(startupConfig?.modelSpecs?.list);\n\n      newConversation({\n        modelsData: modelsQuery.data,\n        template: conversation ? conversation : undefined,\n        ...(spec\n          ? {\n            preset: {\n              ...spec.preset,\n              iconURL: getModelSpecIconURL(spec),\n              spec: spec.name,\n            },\n          }\n          : {}),\n      });\n\n      hasSetConversation.current = true;\n    } else if (initialConvoQuery.data && endpointsQuery.data && modelsQuery.data) {\n      // append chat info\n      getDeleteFlowApi(conversationId).then((res) => {\n        newConversation({\n          template: {\n            conversationId,\n            title: res.data.flow_name\n          },\n          /* this is necessary to load all existing settings */\n          preset: initialConvoQuery.data as TPreset,\n          modelsData: modelsQuery.data,\n          keepLatestMessage: true,\n        });\n      })\n      hasSetConversation.current = true;\n    } else if (\n      conversationId === Constants.NEW_CONVO &&\n      assistantListMap[EModelEndpoint.assistants] &&\n      assistantListMap[EModelEndpoint.azureAssistants]\n    ) {\n      const spec = getDefaultModelSpec(startupConfig?.modelSpecs?.list);\n      newConversation({\n        modelsData: modelsQuery.data,\n        template: conversation ? conversation : undefined,\n        ...(spec\n          ? {\n            preset: {\n              ...spec.preset,\n              iconURL: getModelSpecIconURL(spec),\n              spec: spec.name,\n            },\n          }\n          : {}),\n      });\n      hasSetConversation.current = true;\n    } else if (\n      assistantListMap[EModelEndpoint.assistants] &&\n      assistantListMap[EModelEndpoint.azureAssistants]\n    ) {\n      newConversation({\n        template: initialConvoQuery.data,\n        preset: initialConvoQuery.data as TPreset,\n        modelsData: modelsQuery.data,\n        keepLatestMessage: true,\n      });\n      hasSetConversation.current = true;\n    }\n    /* Creates infinite render if all dependencies included due to newConversation invocations exceeding call stack before hasSetConversation.current becomes truthy */\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n    startupConfig,\n    initialConvoQuery.data,\n    endpointsQuery.data,\n    modelsQuery.data,\n    assistantListMap,\n  ]);\n\n  if (endpointsQuery.isLoading || modelsQuery.isLoading) {\n    return (\n      <div aria-live=\"polite\" role=\"status\">\n        <Spinner className=\"m-auto text-black dark:text-white\" />\n      </div>\n    );\n  }\n\n  if (!isAuthenticated) {\n    return null;\n  }\n\n  // if not a conversation\n  if (conversation?.conversationId === Constants.SEARCH) {\n    return null;\n  }\n  // if conversationId not match\n  if (conversation?.conversationId !== conversationId && !conversation) {\n    return null;\n  }\n  // if conversationId is null\n  if (!conversationId) {\n    return null;\n  }\n\n  const isTemporaryChat = conversation && conversation.expiredAt ? true : false;\n\n  if (conversationId !== Constants.NEW_CONVO && !isTemporaryChat) {\n    setIsTemporary(false);\n  } else if (isTemporaryChat) {\n    setIsTemporary(isTemporaryChat);\n  }\n\n  return (\n    <ToolCallsMapProvider conversationId={conversation.conversationId ?? ''}>\n      {/* 对话面板入口 */}\n      <ChatView index={index} />\n    </ToolCallsMapProvider>\n  );\n}\n\n\nconst useErrorPrompt = () => {\n  const search = location.search;\n  const params = new URLSearchParams(search);\n  const error = params.get('error');\n  const { showToast } = useToastContext();\n  const localize = useLocalize()\n\n  useEffect(() => {\n    if (error) {\n      showToast({ message: localize(`api_errors.${error}`), status: 'error' });\n    }\n  }, [])\n}"
  },
  {
    "path": "src/frontend/client/src/routes/Dashboard.tsx",
    "content": "import { Navigate } from 'react-router-dom';\nimport {\n  PromptsView,\n  PromptForm,\n  CreatePromptForm,\n  EmptyPromptPreview,\n} from '~/components/Prompts';\nimport DashboardRoute from './Layouts/Dashboard';\n\nconst dashboardRoutes = {\n  path: 'd/*',\n  element: <DashboardRoute />,\n  children: [\n    /*\n    {\n      element: <FileDashboardView />,\n      children: [\n        {\n          index: true,\n          element: <EmptyVectorStorePreview />,\n        },\n        {\n          path: ':vectorStoreId',\n          element: <DataTableFilePreview />,\n        },\n      ],\n    },\n    {\n      path: 'files/*',\n      element: <FilesListView />,\n      children: [\n        {\n          index: true,\n          element: <EmptyFilePreview />,\n        },\n        {\n          path: ':fileId',\n          element: <FilePreview />,\n        },\n      ],\n    },\n    {\n      path: 'vector-stores/*',\n      element: <VectorStoreView />,\n      children: [\n        {\n          index: true,\n          element: <EmptyVectorStorePreview />,\n        },\n        {\n          path: ':vectorStoreId',\n          element: <VectorStorePreview />,\n        },\n      ],\n    },\n    */\n    {\n      path: 'prompts/*',\n      element: <PromptsView />,\n      children: [\n        {\n          index: true,\n          element: <EmptyPromptPreview />,\n        },\n        {\n          path: 'new',\n          element: <CreatePromptForm />,\n        },\n        {\n          path: ':promptId',\n          element: <PromptForm />,\n        },\n      ],\n    },\n    {\n      path: '*',\n      element: <Navigate to=\"/d/files\" replace={true} />,\n    },\n  ],\n};\n\nexport default dashboardRoutes;\n"
  },
  {
    "path": "src/frontend/client/src/routes/Layouts/DashBreadcrumb.tsx",
    "content": "import { useMemo, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { SystemRoles } from '~/data-provider/data-provider/src';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { ArrowLeft, MessageSquareQuote } from 'lucide-react';\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbSeparator,\n  // BreadcrumbEllipsis,\n  // DropdownMenu,\n  // DropdownMenuItem,\n  // DropdownMenuContent,\n  // DropdownMenuTrigger,\n} from '~/components/ui';\nimport { useLocalize, useCustomLink, useAuthContext } from '~/hooks';\nimport AdvancedSwitch from '~/components/Prompts/AdvancedSwitch';\n// import { RightPanel } from '../../components/Prompts/RightPanel';\nimport AdminSettings from '~/components/Prompts/AdminSettings';\nimport { useDashboardContext } from '~/Providers';\n// import { PromptsEditorMode } from '~/common';\nimport store from '~/store';\n\nconst promptsPathPattern = /prompts\\/(?!new(?:\\/|$)).*$/;\n\nconst getConversationId = (prevLocationPath: string) => {\n  if (!prevLocationPath || prevLocationPath.includes('/d/')) {\n    return 'new';\n  }\n  const lastPathnameParts = prevLocationPath.split('/');\n  return lastPathnameParts[lastPathnameParts.length - 1];\n};\n\nexport default function DashBreadcrumb() {\n  const location = useLocation();\n  const localize = useLocalize();\n  const { user } = useAuthContext();\n  const { prevLocationPath } = useDashboardContext();\n  const lastConversationId = useMemo(() => getConversationId(prevLocationPath), [prevLocationPath]);\n\n  const setPromptsName = useSetRecoilState(store.promptsName);\n  const setPromptsCategory = useSetRecoilState(store.promptsCategory);\n  const editorMode = useRecoilValue(store.promptsEditorMode);\n\n  const clickCallback = useCallback(() => {\n    setPromptsName('');\n    setPromptsCategory('');\n  }, [setPromptsName, setPromptsCategory]);\n\n  const chatLinkHandler = useCustomLink('/c/' + lastConversationId, clickCallback);\n  const promptsLinkHandler = useCustomLink('/d/prompts');\n\n  const isPromptsPath = useMemo(\n    () => promptsPathPattern.test(location.pathname),\n    [location.pathname],\n  );\n\n  return (\n    <div className=\"mr-2 mt-2 flex h-10 items-center justify-between\">\n      <Breadcrumb className=\"mt-1 px-2 dark:text-gray-200\">\n        <BreadcrumbList>\n          <BreadcrumbItem className=\"hover:dark:text-white\">\n            <BreadcrumbLink\n              href=\"/\"\n              className=\"flex flex-row items-center gap-1\"\n              onClick={chatLinkHandler}\n            >\n              <ArrowLeft className=\"icon-xs\" aria-hidden=\"true\" />\n              <span className=\"hidden md:flex\">{localize('com_ui_back_to_chat')}</span>\n              <span className=\"flex md:hidden\">{localize('com_ui_chat')}</span>\n            </BreadcrumbLink>\n          </BreadcrumbItem>\n          <BreadcrumbSeparator />\n          {/*\n        <BreadcrumbItem className=\"hover:dark:text-white\">\n          <DropdownMenu>\n            <DropdownMenuTrigger className=\"flex cursor-default items-center gap-1\">\n              <BreadcrumbEllipsis className=\"h-4 w-4\" />\n              <BreadcrumbItem className=\"hover:dark:text-white\">\n                <span className=\"text-gray-400\">{localize('com_ui_dashboard')}</span>\n              </BreadcrumbItem>\n              <span className=\"sr-only\">Toggle menu</span>\n            </DropdownMenuTrigger>\n           <DropdownMenuContent align=\"start\">\n              <DropdownMenuItem>Documentation</DropdownMenuItem>\n              <DropdownMenuItem>Themes</DropdownMenuItem>\n              <DropdownMenuItem>GitHub</DropdownMenuItem>\n            </DropdownMenuContent>\n          </DropdownMenu>\n        </BreadcrumbItem>\n        <BreadcrumbSeparator />\n        */}\n          <BreadcrumbItem className=\"hover:dark:text-white\">\n            <BreadcrumbLink\n              href=\"/d/prompts\"\n              className=\"flex flex-row items-center gap-1\"\n              onClick={promptsLinkHandler}\n            >\n              <MessageSquareQuote className=\"h-4 w-4 dark:text-gray-300\" aria-hidden=\"true\" />\n              {localize('com_ui_prompts')}\n            </BreadcrumbLink>\n          </BreadcrumbItem>\n        </BreadcrumbList>\n      </Breadcrumb>\n      <div className=\"flex items-center justify-center gap-2\">\n        {isPromptsPath && <AdvancedSwitch />}\n        {user?.role === SystemRoles.ADMIN && <AdminSettings />}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/Layouts/Dashboard.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { QueryKeys } from '~/data-provider/data-provider/src';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useAuthContext, usePreviousLocation } from '~/hooks';\nimport { DashboardContext } from '~/Providers';\nimport store from '~/store';\n\nexport default function DashboardRoute() {\n  const queryClient = useQueryClient();\n  const { isAuthenticated } = useAuthContext();\n  const prevLocationRef = usePreviousLocation();\n  const clearConvoState = store.useClearConvoState();\n  const [prevLocationPath, setPrevLocationPath] = useState('');\n\n  useEffect(() => {\n    setPrevLocationPath(prevLocationRef.current?.pathname || '');\n  }, [prevLocationRef]);\n\n  useEffect(() => {\n    queryClient.removeQueries([QueryKeys.messages, 'new']);\n    clearConvoState();\n  }, [queryClient, clearConvoState]);\n\n  if (!isAuthenticated) {\n    return null;\n  }\n\n  return (\n    <DashboardContext.Provider value={{ prevLocationPath }}>\n      <div className=\"h-screen w-full\">\n        <Outlet />\n      </div>\n    </DashboardContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/Layouts/Login.tsx",
    "content": "import { useEffect } from 'react';\nimport { useRecoilState } from 'recoil';\nimport { useAuthContext } from '~/hooks/AuthContext';\nimport StartupLayout from './Startup';\nimport store from '~/store';\n\nexport default function LoginLayout() {\n  const { isAuthenticated } = useAuthContext();\n  const [queriesEnabled, setQueriesEnabled] = useRecoilState<boolean>(store.queriesEnabled);\n  \n  useEffect(() => {\n    if (queriesEnabled) {\n      return;\n    }\n    const timeout: NodeJS.Timeout = setTimeout(() => {\n      setQueriesEnabled(true);\n    }, 500);\n    \n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [queriesEnabled, setQueriesEnabled]);\n  return null // 禁用登录页\n  \n  return <StartupLayout isAuthenticated={isAuthenticated} />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/Layouts/Startup.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport { Outlet, useNavigate, useLocation } from 'react-router-dom';\nimport type { TStartupConfig } from '~/data-provider/data-provider/src';\nimport { useGetStartupConfig } from '~/data-provider';\nimport AuthLayout from '~/components/Auth/AuthLayout';\nimport { TranslationKeys, useLocalize } from '~/hooks';\n\nconst headerMap: Record<string, TranslationKeys> = {\n  '/login': 'com_auth_welcome_back',\n  '/register': 'com_auth_create_account',\n  '/forgot-password': 'com_auth_reset_password',\n  '/reset-password': 'com_auth_reset_password',\n  '/login/2fa': 'com_auth_verify_your_identity',\n};\n\nexport default function StartupLayout({ isAuthenticated }: { isAuthenticated?: boolean }) {\n  const [error, setError] = useState<TranslationKeys | null>(null);\n  const [headerText, setHeaderText] = useState<TranslationKeys | null>(null);\n  const [startupConfig, setStartupConfig] = useState<TStartupConfig | null>(null);\n  const {\n    data,\n    isFetching,\n    error: startupConfigError,\n  } = useGetStartupConfig({\n    enabled: isAuthenticated ? startupConfig === null : true,\n  });\n  const localize = useLocalize();\n  const navigate = useNavigate();\n  const location = useLocation();\n\n  useEffect(() => {\n    if (isAuthenticated) {\n      navigate('/c/new', { replace: true });\n    }\n    if (data) {\n      setStartupConfig(data);\n    }\n  }, [isAuthenticated, navigate, data]);\n\n  useEffect(() => {\n    // document.title = startupConfig?.appTitle || 'BISHENG';\n  }, [startupConfig?.appTitle]);\n\n  useEffect(() => {\n    setError(null);\n    setHeaderText(null);\n  }, [location.pathname]);\n\n  const contextValue = {\n    error,\n    setError,\n    headerText,\n    setHeaderText,\n    startupConfigError,\n    startupConfig,\n    isFetching,\n  };\n\n  return (\n    <AuthLayout\n      header={headerText ? localize(headerText) : localize(headerMap[location.pathname])}\n      isFetching={isFetching}\n      startupConfig={startupConfig}\n      startupConfigError={startupConfigError}\n      pathname={location.pathname}\n      error={error}\n    >\n      <Outlet context={contextValue} />\n    </AuthLayout>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/Root.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useRecoilState } from 'recoil';\nimport { getBysConfigApi } from '~/api/apps';\nimport type { ContextType } from '~/common';\nimport { Banner } from '~/components/Banners';\nimport { MobileNav, Nav } from '~/components/Nav';\nimport { useAgentsMap, useAssistantsMap, useAuthContext, useFileMap, useSearch } from '~/hooks';\nimport { bishengConfState } from '~/pages/appChat/store/atoms';\nimport {\n  AgentsMapContext,\n  AssistantsMapContext,\n  FileMapContext,\n  SearchContext,\n  SetConvoProvider,\n} from '~/Providers';\n\nexport default function Root() {\n  const [bannerHeight, setBannerHeight] = useState(0);\n  const [navVisible, setNavVisible] = useState(() => {\n    const savedNavVisible = localStorage.getItem('navVisible');\n    return savedNavVisible !== null ? JSON.parse(savedNavVisible) : true;\n  });\n\n  const { isAuthenticated, logout } = useAuthContext();\n  const assistantsMap = useAssistantsMap({ isAuthenticated });\n  const agentsMap = useAgentsMap({ isAuthenticated });\n  const fileMap = useFileMap({ isAuthenticated });\n  const search = useSearch({ isAuthenticated });\n\n  useConfig()\n\n  if (!isAuthenticated) {\n    return null;\n  }\n\n\n  return (\n    <SetConvoProvider>\n      <SearchContext.Provider value={search}>\n        <FileMapContext.Provider value={fileMap}>\n          <AssistantsMapContext.Provider value={assistantsMap}>\n            <AgentsMapContext.Provider value={agentsMap}>\n              {/* 页面头部黑色banner */}\n              <Banner onHeightChange={setBannerHeight} />\n              <div className=\"flex\" style={{ height: `calc(100dvh - ${bannerHeight}px)` }}>\n                <div className=\"relative z-0 flex h-full w-full overflow-hidden\">\n                  {/* 会话列表 */}\n                  <Nav navVisible={navVisible} setNavVisible={setNavVisible} />\n                  {/* 会话消息面板区(路由) */}\n                  <div className=\"relative flex h-full max-w-full flex-1 flex-col overflow-hidden\">\n                    <MobileNav setNavVisible={setNavVisible} />\n                    <Outlet context={{ navVisible, setNavVisible } satisfies ContextType} />\n                  </div>\n                </div>\n              </div>\n            </AgentsMapContext.Provider>\n          </AssistantsMapContext.Provider>\n        </FileMapContext.Provider>\n      </SearchContext.Provider>\n    </SetConvoProvider>\n  );\n}\n\n\n\nconst useConfig = () => {\n  const [_, setConfig] = useRecoilState(bishengConfState)\n\n  useEffect(() => {\n    getBysConfigApi().then(res => {\n      setConfig(res.data)\n    })\n  }, [])\n}"
  },
  {
    "path": "src/frontend/client/src/routes/RouteErrorBoundary.tsx",
    "content": "import { useRouteError } from 'react-router-dom';\nimport { Button } from '~/components/ui';\nimport logger from '~/utils/logger';\n\ninterface UserAgentData {\n  getHighEntropyValues(hints: string[]): Promise<{ platform: string; platformVersion: string }>;\n}\n\ntype PlatformInfo = {\n  os: string;\n  version?: string;\n};\n\nconst formatStackTrace = (stack: string) => {\n  return stack\n    .split('\\n')\n    .map((line) => line.trim())\n    .filter(Boolean)\n    .map((line, i) => ({\n      number: i + 1,\n      content: line,\n    }));\n};\n\nconst getPlatformInfo = async (): Promise<PlatformInfo> => {\n  if ('userAgentData' in navigator) {\n    try {\n      const ua = navigator.userAgentData as UserAgentData;\n      const highEntropyValues = await ua.getHighEntropyValues(['platform', 'platformVersion']);\n      return {\n        os: highEntropyValues.platform,\n        version: highEntropyValues.platformVersion,\n      };\n    } catch (e) {\n      logger.warn('Failed to get high entropy values');\n      logger.error(e);\n    }\n  }\n\n  const userAgent = navigator.userAgent.toLowerCase();\n\n  if (userAgent.includes('mac')) {\n    return { os: 'macOS' };\n  }\n  if (userAgent.includes('win')) {\n    return { os: 'Windows' };\n  }\n  if (userAgent.includes('linux')) {\n    return { os: 'Linux' };\n  }\n  if (userAgent.includes('android')) {\n    return { os: 'Android' };\n  }\n  if (userAgent.includes('ios') || userAgent.includes('iphone') || userAgent.includes('ipad')) {\n    return { os: 'iOS' };\n  }\n\n  return { os: 'Unknown' };\n};\n\nconst getBrowserInfo = async () => {\n  const platformInfo = await getPlatformInfo();\n  return {\n    userAgent: navigator.userAgent,\n    platform: platformInfo.os,\n    platformVersion: platformInfo.version,\n    language: navigator.language,\n    windowSize: `${window.innerWidth}x${window.innerHeight}`,\n  };\n};\n\nexport default function RouteErrorBoundary() {\n  const typedError = useRouteError() as {\n    message?: string;\n    stack?: string;\n    status?: number;\n    statusText?: string;\n    data?: unknown;\n  };\n\n  const errorDetails = {\n    message: typedError.message ?? 'An unexpected error occurred',\n    stack: typedError.stack,\n    status: typedError.status,\n    statusText: typedError.statusText,\n    data: typedError.data,\n  };\n\n  const handleDownloadLogs = async () => {\n    try {\n      const browser = await getBrowserInfo();\n      const errorLog = {\n        timestamp: new Date().toISOString(),\n        browser,\n        error: {\n          ...errorDetails,\n          stack:\n            errorDetails.stack != null && errorDetails.stack.trim() !== ''\n              ? formatStackTrace(errorDetails.stack)\n              : undefined,\n        },\n      };\n\n      const blob = new Blob([JSON.stringify(errorLog, null, 2)], { type: 'application/json' });\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement('a');\n      a.href = url;\n      a.download = `error-log-${new Date().toISOString()}.json`;\n      document.body.appendChild(a);\n      a.click();\n      document.body.removeChild(a);\n      URL.revokeObjectURL(url);\n    } catch (e) {\n      logger.warn('Failed to download error logs:');\n      logger.error(e);\n    }\n  };\n\n  const handleCopyStack = async () => {\n    if (errorDetails.stack != null && errorDetails.stack !== '') {\n      await navigator.clipboard.writeText(errorDetails.stack);\n    }\n  };\n\n  return (\n    <div\n      role=\"alert\"\n      className=\"flex min-h-screen flex-col items-center justify-center bg-surface-primary bg-gradient-to-br\"\n    >\n      <div className=\"bg-surface-primary/60 mx-4 w-11/12 max-w-4xl rounded-2xl border border-border-light p-8 shadow-2xl backdrop-blur-xl\">\n        <h2 className=\"mb-6 text-center text-3xl font-medium tracking-tight text-text-primary\">\n          Oops! Something Unexpected Occurred\n        </h2>\n\n        {/* Error Message */}\n        <div className=\"mb-4 rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-sm text-gray-600 dark:text-gray-200\">\n          <h3 className=\"mb-2 font-medium\">Error Message:</h3>\n          <pre className=\"whitespace-pre-wrap text-sm font-light leading-relaxed text-text-primary\">\n            {errorDetails.message}\n          </pre>\n        </div>\n\n        {/* Status Information */}\n        {(typeof errorDetails.status === 'number' ||\n          typeof errorDetails.statusText === 'string') && (\n          <div className=\"mb-4 rounded-xl border border-yellow-500/20 bg-yellow-500/5 p-4 text-sm text-text-primary\">\n            <h3 className=\"mb-2 font-medium\">Status:</h3>\n            <p className=\"text-text-primary\">\n              {typeof errorDetails.status === 'number' && `${errorDetails.status} `}\n              {typeof errorDetails.statusText === 'string' && errorDetails.statusText}\n            </p>\n          </div>\n        )}\n\n        {/* Stack Trace - Collapsible */}\n        {errorDetails.stack != null && errorDetails.stack.trim() !== '' && (\n          <details className=\"group mb-4 rounded-xl border border-border-light p-4\">\n            <summary className=\"mb-2 flex cursor-pointer items-center justify-between text-sm font-medium text-text-primary\">\n              <span>Stack Trace</span>\n              <div className=\"flex items-center\">\n                <Button\n                  variant=\"outline\"\n                  size=\"sm\"\n                  onClick={handleCopyStack}\n                  className=\"ml-2 px-2 py-1 text-xs\"\n                >\n                  Copy\n                </Button>\n              </div>\n            </summary>\n            <div className=\"overflow-x-auto rounded-lg bg-black/5 p-4 dark:bg-white/5\">\n              {formatStackTrace(errorDetails.stack).map(({ number, content }) => (\n                <div key={number} className=\"flex\">\n                  <span className=\"select-none pr-4 font-mono text-xs text-text-secondary\">\n                    {String(number).padStart(3, '0')}\n                  </span>\n                  <pre className=\"flex-1 font-mono text-xs leading-relaxed text-text-primary\">\n                    {content}\n                  </pre>\n                </div>\n              ))}\n            </div>\n          </details>\n        )}\n\n        {/* Additional Error Data */}\n        {errorDetails.data != null && (\n          <details className=\"group mb-4 rounded-xl border border-border-light p-4\">\n            <summary className=\"mb-2 flex cursor-pointer items-center justify-between text-sm font-medium text-text-primary\">\n              <span>Additional Details</span>\n              <span className=\"transition-transform group-open:rotate-90\">{'>'}</span>\n            </summary>\n            <pre className=\"whitespace-pre-wrap text-xs font-light leading-relaxed text-text-primary\">\n              {JSON.stringify(errorDetails.data, null, 2)}\n            </pre>\n          </details>\n        )}\n\n        <div className=\"mt-6 flex flex-col gap-4\">\n          <p className=\"text-sm font-light text-text-secondary\">Please try one of the following:</p>\n          <ul className=\"list-inside list-disc text-sm text-text-secondary\">\n            <li>Refresh the page</li>\n            <li>Clear your browser cache</li>\n            <li>Check your internet connection</li>\n            <li>Contact the Admin if the issue persists</li>\n          </ul>\n          <div className=\"mt-4 flex flex-col items-center gap-4 sm:flex-row sm:justify-center\">\n            <Button\n              variant=\"submit\"\n              onClick={() => window.location.reload()}\n              className=\"w-full sm:w-auto\"\n            >\n              Refresh Page\n            </Button>\n            <Button variant=\"outline\" onClick={handleDownloadLogs} className=\"w-full sm:w-auto\">\n              Download Error Logs\n            </Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/Search.tsx",
    "content": "import { useMemo } from 'react';\nimport MinimalMessagesWrapper from '~/components/Chat/Messages/MinimalMessages';\nimport SearchMessage from '~/components/Chat/Messages/SearchMessage';\nimport { useSearchContext, useFileMapContext } from '~/Providers';\nimport { useNavScrolling, useLocalize } from '~/hooks';\nimport { buildTree } from '~/utils';\n\nexport default function Search() {\n  const localize = useLocalize();\n  const fileMap = useFileMapContext();\n  const { searchQuery, searchQueryRes } = useSearchContext();\n  const { containerRef } = useNavScrolling({\n    setShowLoading: () => ({}),\n    hasNextPage: searchQueryRes?.hasNextPage,\n    fetchNextPage: searchQueryRes?.fetchNextPage,\n    isFetchingNextPage: searchQueryRes?.isFetchingNextPage ?? false,\n  });\n\n  const messages = useMemo(() => {\n    const msgs = searchQueryRes?.data?.pages.flatMap((page) => page.messages) || [];\n    const dataTree = buildTree({ messages: msgs, fileMap });\n    return dataTree?.length === 0 ? null : dataTree ?? null;\n  }, [fileMap, searchQueryRes?.data?.pages]);\n\n  if (!searchQuery || !searchQueryRes?.data) {\n    return null;\n  }\n\n  return (\n    <MinimalMessagesWrapper ref={containerRef} className=\"pt-4\">\n      {(messages && messages.length == 0) || messages == null ? (\n        <div className=\"my-auto flex h-full w-full items-center justify-center gap-1 bg-white p-3 text-lg text-gray-500 dark:border-gray-800/50 dark:bg-gray-800 dark:text-gray-300\">\n          {localize('com_ui_nothing_found')}\n        </div>\n      ) : (\n        messages.map((message) => <SearchMessage key={message.messageId} message={message} />)\n      )}\n      <div className=\"absolute bottom-0 left-0 right-0 h-[5%] bg-gradient-to-t from-gray-50 to-transparent dark:from-gray-800\" />\n    </MinimalMessagesWrapper>\n  );\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/ShareRoute.tsx",
    "content": "import ShareView from '~/components/Share/ShareView';\n\nexport default function ShareRoute() {\n  return <ShareView />;\n}\n"
  },
  {
    "path": "src/frontend/client/src/routes/index.tsx",
    "content": "import { createBrowserRouter, Navigate, Outlet } from 'react-router-dom';\nimport {\n  ApiErrorWatcher,\n  Login,\n  Registration,\n  RequestPasswordReset,\n  ResetPassword,\n  TwoFactorScreen,\n  VerifyEmail,\n} from '~/components/Auth';\nimport Sop from '~/components/Sop';\nimport WebView from '~/components/WebView';\nimport { AuthContextProvider } from '~/hooks/AuthContext';\nimport AppChat from '~/pages/appChat';\nimport AgentCenter from '~/pages/apps';\nimport Share from '~/pages/share';\nimport ChatRoute from './ChatRoute';\nimport LoginLayout from './Layouts/Login';\nimport StartupLayout from './Layouts/Startup';\nimport Root from './Root';\nimport RouteErrorBoundary from './RouteErrorBoundary';\n// import ShareRoute from './ShareRoute';\nimport Page404 from '~/pages/Page404';\n\nconst AuthLayout = () => (\n  <AuthContextProvider>\n    <Outlet />\n    <ApiErrorWatcher />\n  </AuthContextProvider>\n);\n\nconst baseConfig = {\n  //@ts-ignore\n  basename: __APP_ENV__.BASE_URL\n}\n\nexport const router = createBrowserRouter([\n  // {\n  //   path: 'share/:shareId',\n  //   element: <ShareRoute />,\n  //   errorElement: <RouteErrorBoundary />,\n  // },\n  {\n    path: '/',\n    element: <StartupLayout />,\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      {\n        path: 'register',\n        element: <Registration />,\n      },\n      {\n        path: 'forgot-password',\n        element: <RequestPasswordReset />,\n      },\n      {\n        path: 'reset-password',\n        element: <ResetPassword />,\n      },\n    ],\n  },\n  {\n    path: 'verify',\n    element: <VerifyEmail />,\n    errorElement: <RouteErrorBoundary />,\n  },\n  {\n    element: <AuthLayout />,\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      {\n        path: __APP_ENV__.BISHENG_HOST,\n        element: <LoginLayout />,\n        children: [\n          {\n            path: 'login',\n            element: <Login />,\n          },\n          {\n            path: 'login/2fa',\n            element: <TwoFactorScreen />,\n          },\n        ],\n      },\n      // 提示词管理\n      // dashboardRoutes,\n      {\n        path: '/',\n        element: <Root />, // 包含会话列表\n        children: [\n          {\n            index: true,\n            element: <Navigate to=\"/c/new?\" replace={true} />,\n          },\n          {\n            path: 'c/:conversationId?',\n            element: <ChatRoute />,\n          },\n          {\n            path: 'linsight/:conversationId?',\n            element: <Sop />,\n          },\n          {\n            path: 'linsight/case/:sopId',\n            element: <Sop />,\n          },\n          {\n            path: 'apps',\n            element: <AgentCenter />,\n          },\n          {\n            path: 'chat/:conversationId/:fid/:type',\n            element: <AppChat />,\n          },\n          {\n            path: 'share/:token',\n            element: <Share />,\n          },\n          {\n            path: 'share/:token/:vid',\n            element: <Share />,\n          },\n        ],\n      },\n    ],\n  },\n  {\n    path: '/html',\n    element: <WebView />,\n  },\n  {\n    path: '/404',\n    element: <Page404 />,\n    errorElement: <RouteErrorBoundary />,\n  },\n  { path: \"*\", element: <Navigate to=\"/404\" replace /> }\n], baseConfig);\n"
  },
  {
    "path": "src/frontend/client/src/routes/useAuthRedirect.ts",
    "content": "import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAuthContext } from '~/hooks';\n\nexport default function useAuthRedirect() {\n  const { user, isAuthenticated } = useAuthContext();\n  const navigate = useNavigate();\n\n  // 未登录采用路由跳转，此处禁用\n  // useEffect(() => {\n  //   const timeout = setTimeout(() => {\n  //     if (!isAuthenticated) {\n  //       navigate(`/${__APP_ENV__.BISHENG_HOST}`, { replace: true });\n  //     }\n  //   }, 300);\n\n  //   return () => {\n  //     clearTimeout(timeout);\n  //   };\n  // }, [isAuthenticated, navigate]);\n\n  return {\n    user,\n    isAuthenticated,\n  };\n}\n"
  },
  {
    "path": "src/frontend/client/src/store/artifacts.ts",
    "content": "import { atom } from 'recoil';\nimport { logger } from '~/utils';\nimport type { Artifact } from '~/common';\n\nexport const artifactsState = atom<Record<string, Artifact | undefined> | null>({\n  key: 'artifactsState',\n  default: null,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        logger.log('artifacts', 'Recoil Effect: Setting artifactsState', {\n          key: node.key,\n          newValue,\n        });\n      });\n    },\n  ] as const,\n});\n\nexport const currentArtifactId = atom<string | null>({\n  key: 'currentArtifactId',\n  default: null,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        logger.log('artifacts', 'Recoil Effect: Setting currentArtifactId', {\n          key: node.key,\n          newValue,\n        });\n      });\n    },\n  ] as const,\n});\n\nexport const artifactsVisible = atom<boolean>({\n  key: 'artifactsVisible',\n  default: true,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        logger.log('artifacts', 'Recoil Effect: Setting artifactsVisible', {\n          key: node.key,\n          newValue,\n        });\n      });\n    },\n  ] as const,\n});\n"
  },
  {
    "path": "src/frontend/client/src/store/endpoints.ts",
    "content": "import { atom, selector } from 'recoil';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { TEndpointsConfig } from '~/data-provider/data-provider/src';\n\nconst defaultConfig: TEndpointsConfig = {\n  [EModelEndpoint.azureOpenAI]: null,\n  [EModelEndpoint.azureAssistants]: null,\n  [EModelEndpoint.assistants]: null,\n  [EModelEndpoint.agents]: null,\n  [EModelEndpoint.openAI]: null,\n  [EModelEndpoint.chatGPTBrowser]: null,\n  [EModelEndpoint.gptPlugins]: null,\n  [EModelEndpoint.google]: null,\n  [EModelEndpoint.anthropic]: null,\n  [EModelEndpoint.custom]: null,\n};\n\nconst endpointsConfig = atom<TEndpointsConfig>({\n  key: 'endpointsConfig',\n  default: defaultConfig,\n});\n\nconst endpointsQueryEnabled = atom<boolean>({\n  key: 'endpointsQueryEnabled',\n  default: true,\n});\n\nconst plugins = selector({\n  key: 'plugins',\n  get: ({ get }) => {\n    const config = get(endpointsConfig) || {};\n    return config.gptPlugins?.plugins || {};\n  },\n});\n\nconst endpointsFilter = selector({\n  key: 'endpointsFilter',\n  get: ({ get }) => {\n    const config = get(endpointsConfig) || {};\n\n    const filter = {};\n    for (const key of Object.keys(config)) {\n      filter[key] = !!config[key];\n    }\n    return filter;\n  },\n});\n\nexport default {\n  plugins,\n  endpointsConfig,\n  endpointsFilter,\n  defaultConfig,\n  endpointsQueryEnabled,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/families.ts",
    "content": "import { useEffect } from 'react';\nimport {\n  atom,\n  selector,\n  atomFamily,\n  DefaultValue,\n  selectorFamily,\n  useRecoilState,\n  useRecoilValue,\n  useSetRecoilState,\n  useRecoilCallback,\n} from 'recoil';\nimport { LocalStorageKeys, Constants } from '~/data-provider/data-provider/src';\nimport type { TMessage, TPreset, TConversation, TSubmission } from '~/data-provider/data-provider/src';\nimport type { TOptionSettings, ExtendedFile } from '~/common';\nimport { useSetConvoContext } from '~/Providers/SetConvoContext';\nimport { storeEndpointSettings, logger } from '~/utils';\n\nconst latestMessageKeysAtom = atom<(string | number)[]>({\n  key: 'latestMessageKeys',\n  default: [],\n});\n\nconst submissionKeysAtom = atom<(string | number)[]>({\n  key: 'submissionKeys',\n  default: [],\n});\n\nconst latestMessageFamily = atomFamily<TMessage | null, string | number | null>({\n  key: 'latestMessageByIndex',\n  default: null,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        const key = Number(node.key.split(Constants.COMMON_DIVIDER)[1]);\n        logger.log('Recoil Effect: Setting latestMessage', { key, newValue });\n      });\n    },\n  ] as const,\n});\n\nconst submissionByIndex = atomFamily<TSubmission | null, string | number>({\n  key: 'submissionByIndex',\n  default: null,\n});\n\nconst latestMessageKeysSelector = selector<(string | number)[]>({\n  key: 'latestMessageKeysSelector',\n  get: ({ get }) => {\n    const keys = get(conversationKeysAtom);\n    return keys.filter((key) => get(latestMessageFamily(key)) !== null);\n  },\n  set: ({ set }, newKeys) => {\n    logger.log('setting latestMessageKeys', { newKeys });\n    set(latestMessageKeysAtom, newKeys);\n  },\n});\n\nconst submissionKeysSelector = selector<(string | number)[]>({\n  key: 'submissionKeysSelector',\n  get: ({ get }) => {\n    const keys = get(conversationKeysAtom);\n    return keys.filter((key) => get(submissionByIndex(key)) !== null);\n  },\n  set: ({ set }, newKeys) => {\n    logger.log('setting submissionKeysAtom', newKeys);\n    set(submissionKeysAtom, newKeys);\n  },\n});\n\nconst conversationByIndex = atomFamily<TConversation | null, string | number>({\n  key: 'conversationByIndex',\n  default: null,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        // 1. 从 Atom 的 key 解析出索引（如 \"conversationByIndex__2\" → 2）\n        const index = Number(node.key.split('__')[1]);\n\n        // 2. 记录日志\n        logger.log('conversation', 'Setting conversation:', { index, newValue });\n\n        // 3. 根据 newValue 内容，选择性存储到 localStorage\n        if (newValue?.assistant_id) {\n          localStorage.setItem(\n            `${LocalStorageKeys.ASST_ID_PREFIX}${index}${newValue.endpoint}`,\n            newValue.assistant_id,\n          );\n        }\n        if (newValue?.agent_id) {\n          localStorage.setItem(`${LocalStorageKeys.AGENT_ID_PREFIX}${index}`, newValue.agent_id);\n        }\n        if (newValue?.spec) {\n          localStorage.setItem(LocalStorageKeys.LAST_SPEC, newValue.spec);\n        }\n        if (newValue?.tools) {\n          localStorage.setItem(\n            LocalStorageKeys.LAST_TOOLS,\n            JSON.stringify(newValue.tools.filter(Boolean)),\n          );\n        }\n\n        // 4. 如果 newValue 为空，跳过后续操作\n        if (!newValue) return;\n\n        // 5. 存储端点设置和完整对话配置\n        storeEndpointSettings(newValue);\n        localStorage.setItem(\n          `${LocalStorageKeys.LAST_CONVO_SETUP}_${index}`,\n          JSON.stringify(newValue),\n        );\n      });\n    },\n  ] as const,\n});\n\nconst filesByIndex = atomFamily<Map<string, ExtendedFile>, string | number>({\n  key: 'filesByIndex',\n  default: new Map(),\n});\n\nconst conversationKeysAtom = atom<(string | number)[]>({\n  key: 'conversationKeys',\n  default: [],\n});\n\nconst allConversationsSelector = selector({\n  key: 'allConversationsSelector',\n  get: ({ get }) => {\n    const keys = get(conversationKeysAtom);\n    return keys.map((key) => get(conversationByIndex(key))).map((convo) => convo?.conversationId);\n  },\n});\n\nconst presetByIndex = atomFamily<TPreset | null, string | number>({\n  key: 'presetByIndex',\n  default: null,\n});\n\nconst textByIndex = atomFamily<string, string | number>({\n  key: 'textByIndex',\n  default: '',\n});\n\nconst showStopButtonByIndex = atomFamily<boolean, string | number>({\n  key: 'showStopButtonByIndex',\n  default: false,\n});\n\nconst abortScrollFamily = atomFamily<boolean, string | number>({\n  key: 'abortScrollByIndex',\n  default: false,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        const key = Number(node.key.split(Constants.COMMON_DIVIDER)[1]);\n        logger.log('message_scrolling', 'Recoil Effect: Setting abortScrollByIndex', {\n          key,\n          newValue,\n        });\n      });\n    },\n  ] as const,\n});\n\nconst isSubmittingFamily = atomFamily({\n  key: 'isSubmittingByIndex',\n  default: false,\n  effects: [\n    ({ onSet, node }) => {\n      onSet(async (newValue) => {\n        const key = Number(node.key.split(Constants.COMMON_DIVIDER)[1]);\n        logger.log('message_stream', 'Recoil Effect: Setting isSubmittingByIndex', {\n          key,\n          newValue,\n        });\n      });\n    },\n  ],\n});\n\nconst optionSettingsFamily = atomFamily<TOptionSettings, string | number>({\n  key: 'optionSettingsByIndex',\n  default: {},\n});\n\nconst showAgentSettingsFamily = atomFamily({\n  key: 'showAgentSettingsByIndex',\n  default: false,\n});\n\nconst showPopoverFamily = atomFamily({\n  key: 'showPopoverByIndex',\n  default: false,\n});\n\nconst activePromptByIndex = atomFamily<string | undefined, string | number | null>({\n  key: 'activePromptByIndex',\n  default: undefined,\n});\n\nconst showMentionPopoverFamily = atomFamily<boolean, string | number | null>({\n  key: 'showMentionPopoverByIndex',\n  default: false,\n});\n\nconst showPlusPopoverFamily = atomFamily<boolean, string | number | null>({\n  key: 'showPlusPopoverByIndex',\n  default: false,\n});\n\nconst showPromptsPopoverFamily = atomFamily<boolean, string | number | null>({\n  key: 'showPromptsPopoverByIndex',\n  default: false,\n});\n\nconst globalAudioURLFamily = atomFamily<string | null, string | number | null>({\n  key: 'globalAudioURLByIndex',\n  default: null,\n});\n\nconst globalAudioFetchingFamily = atomFamily<boolean, string | number | null>({\n  key: 'globalAudioisFetchingByIndex',\n  default: false,\n});\n\nconst globalAudioPlayingFamily = atomFamily<boolean, string | number | null>({\n  key: 'globalAudioisPlayingByIndex',\n  default: false,\n});\n\nconst activeRunFamily = atomFamily<string | null, string | number | null>({\n  key: 'activeRunByIndex',\n  default: null,\n});\n\nconst audioRunFamily = atomFamily<string | null, string | number | null>({\n  key: 'audioRunByIndex',\n  default: null,\n});\n\nconst messagesSiblingIdxFamily = atomFamily<number, string | null | undefined>({\n  key: 'messagesSiblingIdx',\n  default: 0,\n});\n\nfunction useCreateConversationAtom(key: string | number) {\n  const hasSetConversation = useSetConvoContext();\n  const [keys, setKeys] = useRecoilState(conversationKeysAtom);\n  const setConversation = useSetRecoilState(conversationByIndex(key));\n  const conversation = useRecoilValue(conversationByIndex(key));\n\n  useEffect(() => {\n    if (!keys.includes(key)) {\n      setKeys([...keys, key]);\n    }\n  }, [key, keys, setKeys]);\n\n  return { hasSetConversation, conversation, setConversation };\n}\n\nfunction useClearConvoState() {\n  /** Clears all active conversations. Pass `true` to skip the first or root conversation */\n  const clearAllConversations = useRecoilCallback(\n    ({ reset, snapshot }) =>\n      async (skipFirst?: boolean) => {\n        const conversationKeys = await snapshot.getPromise(conversationKeysAtom);\n\n        for (const conversationKey of conversationKeys) {\n          if (skipFirst === true && conversationKey == 0) {\n            continue;\n          }\n\n          reset(conversationByIndex(conversationKey));\n\n          const conversation = await snapshot.getPromise(conversationByIndex(conversationKey));\n          if (conversation) {\n            reset(latestMessageFamily(conversationKey));\n          }\n        }\n\n        reset(conversationKeysAtom);\n      },\n    [],\n  );\n\n  return clearAllConversations;\n}\n\nconst conversationByKeySelector = selectorFamily({\n  key: 'conversationByKeySelector',\n  get:\n    (index: string | number) =>\n      ({ get }) => {\n        const conversation = get(conversationByIndex(index));\n        return conversation;\n      },\n});\n\nfunction useClearSubmissionState() {\n  const clearAllSubmissions = useRecoilCallback(\n    ({ reset, set, snapshot }) =>\n      async (skipFirst?: boolean) => {\n        const submissionKeys = await snapshot.getPromise(submissionKeysSelector);\n        logger.log('submissionKeys', submissionKeys);\n\n        for (const key of submissionKeys) {\n          if (skipFirst === true && key == 0) {\n            continue;\n          }\n\n          logger.log('resetting submission', key);\n          reset(submissionByIndex(key));\n        }\n\n        set(submissionKeysSelector, []);\n      },\n    [],\n  );\n\n  return clearAllSubmissions;\n}\n\nfunction useClearLatestMessages(context?: string) {\n  const clearAllLatestMessages = useRecoilCallback(\n    ({ reset, set, snapshot }) =>\n      async (skipFirst?: boolean) => {\n        const latestMessageKeys = await snapshot.getPromise(latestMessageKeysSelector);\n        logger.log('[clearAllLatestMessages] latestMessageKeys', latestMessageKeys);\n        if (context != null && context) {\n          logger.log(`[clearAllLatestMessages] context: ${context}`);\n        }\n\n        for (const key of latestMessageKeys) {\n          if (skipFirst === true && key == 0) {\n            continue;\n          }\n\n          logger.log(`[clearAllLatestMessages] resetting latest message; key: ${key}`);\n          reset(latestMessageFamily(key));\n        }\n\n        set(latestMessageKeysSelector, []);\n      },\n    [],\n  );\n\n  return clearAllLatestMessages;\n}\n\nconst updateConversationSelector = selectorFamily({\n  key: 'updateConversationSelector',\n  get: () => () => null as Partial<TConversation> | null,\n  set:\n    (conversationId: string) =>\n      ({ set, get }, newPartialConversation) => {\n        if (newPartialConversation instanceof DefaultValue) {\n          return;\n        }\n\n        const keys = get(conversationKeysAtom);\n        keys.forEach((key) => {\n          set(conversationByIndex(key), (prevConversation) => {\n            if (prevConversation && prevConversation.conversationId === conversationId) {\n              return {\n                ...prevConversation,\n                ...newPartialConversation,\n              };\n            }\n            return prevConversation;\n          });\n        });\n      },\n});\n\nexport default {\n  conversationKeysAtom,\n  conversationByIndex,\n  filesByIndex,\n  presetByIndex,\n  submissionByIndex,\n  textByIndex,\n  showStopButtonByIndex,\n  abortScrollFamily,\n  isSubmittingFamily,\n  optionSettingsFamily,\n  showAgentSettingsFamily,\n  showPopoverFamily,\n  latestMessageFamily,\n  messagesSiblingIdxFamily,\n  allConversationsSelector,\n  conversationByKeySelector,\n  useClearConvoState,\n  useCreateConversationAtom,\n  showMentionPopoverFamily,\n  globalAudioURLFamily,\n  activeRunFamily,\n  audioRunFamily,\n  globalAudioPlayingFamily,\n  globalAudioFetchingFamily,\n  showPlusPopoverFamily,\n  activePromptByIndex,\n  useClearSubmissionState,\n  useClearLatestMessages,\n  showPromptsPopoverFamily,\n  updateConversationSelector,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/index.ts",
    "content": "import * as artifacts from './artifacts';\nimport families from './families';\nimport endpoints from './endpoints';\nimport user from './user';\nimport text from './text';\nimport toast from './toast';\nimport submission from './submission';\nimport search from './search';\nimport preset from './preset';\nimport prompts from './prompts';\nimport lang from './language';\nimport settings from './settings';\nimport misc from './misc';\nimport isTemporary from './temporary';\nimport modelType from './modeltype';\nexport default {\n  ...artifacts,\n  ...families,\n  ...endpoints,\n  ...user,\n  ...text,\n  ...toast,\n  ...submission,\n  ...search,\n  ...prompts,\n  ...preset,\n  ...lang,\n  ...settings,\n  ...misc,\n  ...isTemporary,\n  ...modelType,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/language.ts",
    "content": "import Cookies from 'js-cookie';\nimport { atomWithLocalStorage } from './utils';\n\n/**\n * 推断并规范化默认语言，并清理不合法的本地存储\n */\nconst defaultLang = (): string => {\n  const supported = new Set([\n    'en','ar','de','es','et','fr','it','pl','pt-BR','pt-PT','ru','ja','ka','sv','ko','vi','tr','nl','id','he','fi','zh-Hans','zh-Hant'\n  ]);\n  const regionMap: Record<string, string> = { 'pt-br': 'pt-BR', 'pt-pt': 'pt-PT' };\n\n  const normalize = (lang?: string | null): string | null => {\n    if (!lang) return null;\n    const lower = lang.toLowerCase();\n    if (lower.startsWith('zh')) {\n      return (lower.includes('tw') || lower.includes('hk') || lower.includes('hant')) ? 'zh-Hant' : 'zh-Hans';\n    }\n    const mapped = regionMap[lower];\n    if (mapped && supported.has(mapped)) return mapped;\n    const primary = lower.split('-')[0];\n    return supported.has(primary) ? primary : null;\n  };\n\n  // 清理 i18next 语言 Cookie，避免冲突\n  try { Cookies.remove('i18next', { path: '/' }); } catch {}\n\n  // 读取并规范化历史值\n  const cookieRaw = Cookies.get('lang');\n  const storageRaw = localStorage.getItem('lang');\n\n  const cookieNorm = normalize(cookieRaw);\n  if (cookieRaw && !cookieNorm) {\n    try { Cookies.remove('lang', { path: '/' }); } catch {}\n  }\n  if (cookieNorm) return cookieNorm;\n\n  const storageNorm = normalize(storageRaw);\n  if (storageRaw && !storageNorm) {\n    try { localStorage.removeItem('lang'); } catch {}\n  }\n  if (storageNorm) return storageNorm;\n\n  // 浏览器语言\n  const browserNorm = normalize(navigator.language || (navigator.languages && navigator.languages[0]) || 'en');\n  return browserNorm || 'en';\n};\n\nconst lang = atomWithLocalStorage('lang', defaultLang());\n\nexport default { lang };\n"
  },
  {
    "path": "src/frontend/client/src/store/linsight.ts",
    "content": "// src/state/linsightState.ts\nimport { atom, atomFamily } from 'recoil';\nimport { ExtendedFile } from '~/common';\n\nexport type LinsightInfo = {\n    title: string;\n    user_id: number;\n    question: string;\n    org_knowledge_enabled: boolean;\n    personal_knowledge_enabled: boolean;\n    sop: null | string;\n    sopError: string;\n    /** 用户输入的sop */\n    inputSop: boolean;\n    // sop_map: { [key in string]: string };\n    status: string;\n    execute_feedback: null | string;\n    version: string;\n    create_time: string;\n    session_id: string;\n    tools: {\n        id: string | number;\n        name: string;\n        is_preset: boolean;\n        children: ApiTool[];\n    }[];\n    files: {\n        file_id: string;\n    }[];\n    output_result: null | any;\n    score: null | number;\n    has_reexecute: boolean;\n    id: string;\n    update_time: string;\n    tasks: {\n        session_version_id: string;\n        parent_task_id: string | null;\n        previous_task_id: string | null;\n        next_task_id: string | null;\n        task_type: string;\n        task_data: any | null;\n        input_prompt: string | null;\n        user_input: string | null;\n        history: {\n            user_input: any;\n            step: string;\n        }[] | null;\n        status: string;\n        result: any | null;\n        children: any[]\n    }[],\n    taskError: string;\n    summary: string;\n    file_list: any[];\n    queueCount: number;\n}\n\ninterface ApiTool {\n    id: string | number;\n    name: string;\n    tool_key: string;\n}\n\n// 使用 Map 结构存储 {会话id-版本id: linsight信息}\nexport const linsightMapState = atom<Map<string, LinsightInfo>>({\n    key: 'linsightMapState',\n    default: new Map(),\n});\n\n// 当前活动会话ID\nexport const activeSessionIdState = atom<string | null>({\n    key: 'activeSessionIdState',\n    default: null,\n});\n\n\n\n\nexport type ToolConfig = {\n    id: string;\n    name: string;\n    params?: Record<string, any>;\n};\n\nexport type SubmissionState = {\n    isNew: boolean;\n    files: {\n        file_id: string;\n        file_name: string;\n        parsing_status: string;\n    }[];\n    question: string;\n    feedback?: string;\n    tools: ToolConfig[];\n    model: string;\n    enableWebSearch: boolean;\n    useKnowledgeBase: boolean;\n    prevVersionId?: string;\n};\n\n// 使用atomFamily管理每个会话的状态 会话id-版本id:状态\nexport const submissionState = atomFamily<SubmissionState | null, string>({\n    key: 'submissionState',\n    default: null, // 初始状态为null\n});\n\n// 上传文件管理\nexport const filesByIndex = atomFamily<Map<string, ExtendedFile>, string | number>({\n    key: 'linsightFilesByIndex',\n    default: new Map(),\n});\n\n"
  },
  {
    "path": "src/frontend/client/src/store/misc.ts",
    "content": "import { atom } from 'recoil';\nimport { TAttachment } from '~/data-provider/data-provider/src';\nimport { atomWithLocalStorage } from './utils';\n\nconst hideBannerHint = atomWithLocalStorage('hideBannerHint', [] as string[]);\n\nconst messageAttachmentsMap = atom<Record<string, TAttachment[] | undefined>>({\n  key: 'messageAttachmentsMap',\n  default: {},\n});\n\nconst queriesEnabled = atom<boolean>({\n  key: 'queriesEnabled',\n  default: true,\n});\n\nexport default { hideBannerHint, messageAttachmentsMap, queriesEnabled };\n"
  },
  {
    "path": "src/frontend/client/src/store/modeltype.ts",
    "content": "import { atomWithLocalStorage } from '~/store/utils';\nimport { atom } from 'recoil';\n\nexport type SelectedOrgKb = {\n  id: string;\n  name: string;\n};\nconst modelType = atomWithLocalStorage('modelType', '');\nconst searchType = atomWithLocalStorage('searchType', '');\nconst isSearch = atomWithLocalStorage('isSearch', false);\n\nconst chatModel = atomWithLocalStorage('chatModel', { id: 0, name: '' });\n\nconst selectedOrgKbs = atom<SelectedOrgKb[]>({\n  key: 'selectedOrgKbs',\n  default: []\n});\n\nconst chatId = atom({\n  key: 'chatId',\n  default: ''\n});\n\nconst enableOrgKb = atom<boolean>({\n  key: 'enableOrgKb',\n  default: false\n});\n\nconst chatStatesMap = atom<Record<string, any>>({\n  key: 'chatStatesMap',\n  default: {}\n});\n\nexport default {\n  modelType,\n  searchType,\n  isSearch,\n  chatModel,\n  selectedOrgKbs,\n  enableOrgKb,\n  chatId,\n  chatStatesMap,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/preset.ts",
    "content": "import { atom } from 'recoil';\nimport { TPreset } from '~/data-provider/data-provider/src';\n\nconst defaultPreset = atom<TPreset | null>({\n  key: 'defaultPreset',\n  default: null,\n});\n\nconst presetModalVisible = atom<boolean>({\n  key: 'presetModalVisible',\n  default: false,\n});\n\nexport default {\n  defaultPreset,\n  presetModalVisible,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/prompts.ts",
    "content": "import { atom } from 'recoil';\nimport { atomWithLocalStorage } from '~/store/utils';\nimport { PromptsEditorMode } from '~/common';\n\n// Static atoms without localStorage\nconst staticAtoms = {\n  // `name` filter\n  promptsName: atom<string>({ key: 'promptsName', default: '' }),\n  // `category` filter\n  promptsCategory: atom<string>({ key: 'promptsCategory', default: '' }),\n  // `pageNumber` filter\n  promptsPageNumber: atom<number>({ key: 'promptsPageNumber', default: 1 }),\n  // `pageSize` filter\n  promptsPageSize: atom<number>({ key: 'promptsPageSize', default: 10 }),\n};\n\n// Atoms with localStorage\nconst localStorageAtoms = {\n  autoSendPrompts: atomWithLocalStorage('autoSendPrompts', true),\n  alwaysMakeProd: atomWithLocalStorage('alwaysMakeProd', true),\n  // Editor mode\n  promptsEditorMode: atomWithLocalStorage<PromptsEditorMode>(\n    'promptsEditorMode',\n    PromptsEditorMode.SIMPLE,\n  ),\n};\n\nexport default { ...staticAtoms, ...localStorageAtoms };\n"
  },
  {
    "path": "src/frontend/client/src/store/search.ts",
    "content": "import { atom } from 'recoil';\n\nconst isSearchEnabled = atom<boolean | null>({\n  key: 'isSearchEnabled',\n  default: null,\n});\n\nconst searchQuery = atom({\n  key: 'searchQuery',\n  default: '',\n});\n\nconst isSearching = atom({\n  key: 'isSearching',\n  default: false,\n});\n\nexport default {\n  isSearchEnabled,\n  searchQuery,\n  isSearching,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/settings.ts",
    "content": "import { atom } from 'recoil';\nimport { SettingsViews, LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport { atomWithLocalStorage } from '~/store/utils';\nimport type { TOptionSettings } from '~/common';\n\n// Static atoms without localStorage\nconst staticAtoms = {\n  abortScroll: atom<boolean>({ key: 'abortScroll', default: false }),\n  showFiles: atom<boolean>({ key: 'showFiles', default: false }),\n  showKnowledge: atom<boolean>({ key: 'showKnowledge', default: false }),\n  optionSettings: atom<TOptionSettings>({ key: 'optionSettings', default: {} }),\n  showPluginStoreDialog: atom<boolean>({ key: 'showPluginStoreDialog', default: false }),\n  showAgentSettings: atom<boolean>({ key: 'showAgentSettings', default: false }),\n  currentSettingsView: atom<SettingsViews>({\n    key: 'currentSettingsView',\n    default: SettingsViews.default,\n  }),\n  showPopover: atom<boolean>({ key: 'showPopover', default: false }),\n};\n\nconst localStorageAtoms = {\n  // General settings\n  autoScroll: atomWithLocalStorage('autoScroll', false),\n  hideSidePanel: atomWithLocalStorage('hideSidePanel', false),\n  fontSize: atomWithLocalStorage('fontSize', 'text-base'),\n  enableUserMsgMarkdown: atomWithLocalStorage<boolean>(\n    LocalStorageKeys.ENABLE_USER_MSG_MARKDOWN,\n    true,\n  ),\n\n  // Chat settings\n  enterToSend: atomWithLocalStorage('enterToSend', true),\n  maximizeChatSpace: atomWithLocalStorage('maximizeChatSpace', false),\n  chatDirection: atomWithLocalStorage('chatDirection', 'LTR'),\n  showCode: atomWithLocalStorage(LocalStorageKeys.SHOW_ANALYSIS_CODE, true),\n  saveDrafts: atomWithLocalStorage('saveDrafts', true),\n  showScrollButton: atomWithLocalStorage('showScrollButton', true),\n  forkSetting: atomWithLocalStorage('forkSetting', ''),\n  splitAtTarget: atomWithLocalStorage('splitAtTarget', false),\n  rememberDefaultFork: atomWithLocalStorage(LocalStorageKeys.REMEMBER_FORK_OPTION, false),\n  showThinking: atomWithLocalStorage('showThinking', true),\n\n  // Beta features settings\n  modularChat: atomWithLocalStorage('modularChat', true),\n  LaTeXParsing: atomWithLocalStorage('LaTeXParsing', true),\n  codeArtifacts: atomWithLocalStorage('codeArtifacts', false),\n  includeShadcnui: atomWithLocalStorage('includeShadcnui', false),\n  customPromptMode: atomWithLocalStorage('customPromptMode', false),\n\n  // Commands settings\n  atCommand: atomWithLocalStorage('atCommand', true),\n  plusCommand: atomWithLocalStorage('plusCommand', true),\n  slashCommand: atomWithLocalStorage('slashCommand', true),\n\n  // Speech settings\n  conversationMode: atomWithLocalStorage('conversationMode', false),\n  advancedMode: atomWithLocalStorage('advancedMode', false),\n\n  speechToText: atomWithLocalStorage('speechToText', true),\n  engineSTT: atomWithLocalStorage('engineSTT', 'browser'),\n  languageSTT: atomWithLocalStorage('languageSTT', ''),\n  autoTranscribeAudio: atomWithLocalStorage('autoTranscribeAudio', false),\n  decibelValue: atomWithLocalStorage('decibelValue', -45),\n  autoSendText: atomWithLocalStorage('autoSendText', -1),\n\n  textToSpeech: atomWithLocalStorage('textToSpeech', true),\n  engineTTS: atomWithLocalStorage('engineTTS', 'browser'),\n  voice: atomWithLocalStorage<string | undefined>('voice', undefined),\n  cloudBrowserVoices: atomWithLocalStorage('cloudBrowserVoices', false),\n  languageTTS: atomWithLocalStorage('languageTTS', ''),\n  automaticPlayback: atomWithLocalStorage('automaticPlayback', false),\n  playbackRate: atomWithLocalStorage<number | null>('playbackRate', null),\n  cacheTTS: atomWithLocalStorage('cacheTTS', true),\n\n  // Account settings\n  UsernameDisplay: atomWithLocalStorage('UsernameDisplay', true),\n};\n\nexport default { ...staticAtoms, ...localStorageAtoms };\n"
  },
  {
    "path": "src/frontend/client/src/store/submission.ts",
    "content": "import { atom } from 'recoil';\nimport { TSubmission } from '~/data-provider/data-provider/src';\n\n// current submission\n// submit any new value to this state will cause new message to be send.\n// set to null to give up any submission\n// {\n//   conversation, // target submission, must have: model, chatGptLabel, promptPrefix\n//   messages, // old messages\n//   message, // request message\n//   initialResponse, // response message\n//   isRegenerate=false, // isRegenerate?\n// }\n\nconst submission = atom<TSubmission | null>({\n  key: 'submission',\n  default: null,\n});\n\nconst isSubmitting = atom({\n  key: 'isSubmitting',\n  default: false,\n});\n\nexport default {\n  submission,\n  isSubmitting,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/temporary.ts",
    "content": "import { atomWithLocalStorage } from '~/store/utils';\n\nconst isTemporary = atomWithLocalStorage('isTemporary', false);\n\nexport default {\n  isTemporary,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/text.ts",
    "content": "import { atom } from 'recoil';\n\nconst text = atom<string>({\n  key: 'text',\n  default: '',\n});\n\nexport default { text };\n"
  },
  {
    "path": "src/frontend/client/src/store/toast.ts",
    "content": "import { atom } from 'recoil';\nimport { NotificationSeverity } from '~/common';\n\nconst toastState = atom({\n  key: 'toastState',\n  default: {\n    open: false,\n    message: '',\n    severity: NotificationSeverity.SUCCESS,\n    showIcon: true,\n  },\n});\n\nexport default { toastState };\n"
  },
  {
    "path": "src/frontend/client/src/store/user.ts",
    "content": "import { atom } from 'recoil';\nimport type { TUser, TPlugin } from '~/data-provider/data-provider/src';\n\nconst user = atom<TUser | undefined>({\n  key: 'user',\n  default: undefined,\n});\n\nconst availableTools = atom<Record<string, TPlugin>>({\n  key: 'availableTools',\n  default: {},\n});\n\nexport default {\n  user,\n  availableTools,\n};\n"
  },
  {
    "path": "src/frontend/client/src/store/utils.ts",
    "content": "import { atom } from 'recoil';\n\n// Improved helper function to create atoms with localStorage\nexport function atomWithLocalStorage<T>(key: string, defaultValue: T) {\n  return atom<T>({\n    key,\n    default: defaultValue,\n    effects_UNSTABLE: [\n      ({ setSelf, onSet }) => {\n        const savedValue = localStorage.getItem(key);\n        if (savedValue !== null) {\n          try {\n            const parsedValue = JSON.parse(savedValue);\n            setSelf(parsedValue);\n          } catch (e) {\n            console.error(\n              `Error parsing localStorage key \"${key}\", \\`savedValue\\`: defaultValue, error:`,\n              e,\n            );\n            localStorage.setItem(key, JSON.stringify(defaultValue));\n            setSelf(defaultValue);\n          }\n        }\n\n        onSet((newValue: T) => {\n          localStorage.setItem(key, JSON.stringify(newValue));\n        });\n      },\n    ],\n  });\n}\n"
  },
  {
    "path": "src/frontend/client/src/style.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n/* Custom Variables */\n:root {\n  --white: #fff;\n  --black: #000;\n  --gray-20: #ececf1;\n  --gray-50: #f7f7f8;\n  --gray-100: #f3f4f6;\n  --gray-200: #e3e3e3;\n  --gray-300: #cdcdcd;\n  --gray-400: #999696;\n  --gray-500: #595959;\n  --gray-600: #424242;\n  --gray-700: #2f2f2f;\n  --gray-800: #212121;\n  --gray-850: #171717;\n  --gray-900: #0d0d0d;\n  --green-50: #ecfdf5;\n  --green-100: #d1fae5;\n  --green-200: #a7f3d0;\n  --green-300: #6ee7b7;\n  --green-400: #34d399;\n  --green-500: #10b981;\n  --green-600: #059669;\n  --green-700: #047857;\n  --green-800: #065f46;\n  --green-900: #064e3b;\n  --green-950: #022c22;\n  --red-50: #fef2f2;\n  --red-100: #fee2e2;\n  --red-200: #fecaca;\n  --red-300: #fca5a5;\n  --red-400: #f87171;\n  --red-500: #ef4444;\n  --red-600: #dc2626;\n  --red-700: #b91c1c;\n  --red-800: #991b1b;\n  --red-900: #7f1d1d;\n  --red-950: #450a0a;\n  --gizmo-gray-500: #999;\n  --gizmo-gray-600: #666;\n  --gizmo-gray-950: #0f0f0f;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-base: 1rem;\n  --font-size-lg: 1.125rem;\n  --font-size-xl: 1.25rem;\n}\n\nhtml {\n  --presentation: var(--white);\n  --text-primary: var(--gray-800);\n  --text-secondary: var(--gray-600);\n  --text-secondary-alt: var(--gray-500);\n  --text-tertiary: var(--gray-500);\n  --ring-primary: var(--gray-500);\n  --header-primary: var(--white);\n  --header-hover: var(--gray-50);\n  --header-button-hover: var(--gray-50);\n  --surface-active: var(--gray-100);\n  --surface-active-alt: rgb(219 234 254);\n  --surface-hover: var(--gray-200);\n  --surface-hover-alt: var(--gray-300);\n  --surface-primary: var(--white);\n  --surface-primary-alt: #f9fbff;\n  --surface-primary-contrast: var(--gray-100);\n  --surface-secondary: var(--gray-50);\n  --surface-secondary-alt: var(--gray-300);\n  --search-input: hsla(220, 100%, 99%, 1);\n  --surface-tertiary: var(--gray-100);\n  --surface-tertiary-alt: var(--white);\n  --surface-dialog: var(--white);\n  --surface-submit: var(--green-700);\n  --surface-submit-hover: var(--green-800);\n  --surface-destructive: var(--red-700);\n  --surface-destructive-hover: var(--red-800);\n  --border-light: var(--gray-200);\n  --border-medium-alt: var(--gray-300);\n  --border-medium: var(--gray-300);\n  --border-heavy: var(--gray-400);\n  --border-xheavy: var(--gray-500);\n  /* These are test styles */\n\n  --background: 0 0% 100%;\n  --foreground: 0 0% 3.9%;\n  --card: 0 0% 100%;\n  --card-foreground: 0 0% 3.9%;\n  --primary: 219 98% 46%;\n  --primary-foreground: 0 0% 100%;\n  --secondary: 0 0% 96.1%;\n  --secondary-foreground: 0 0% 9%;\n  --muted: 0 0% 96.1%;\n  --muted-foreground: 0 0% 45.1%;\n  --accent: 0 0% 96.1%;\n  --accent-foreground: 0 0% 9%;\n  --destructive: 0 84.2% 60.2%;\n  --destructive-foreground: 0 0% 98%;\n  --border: 0 0% 89.8%;\n  --input: 0 0% 89.8%;\n  --ring: 0 0% 3.9%;\n  --radius: 0.5rem;\n  --chart-1: 12 76% 61%;\n  --chart-2: 173 58% 39%;\n  --chart-3: 197 37% 24%;\n  --chart-4: 43 74% 66%;\n  --chart-5: 27 87% 67%;\n  --switch-unchecked: 0 0% 58%;\n}\n\n.dark {\n  --presentation: var(--gray-800);\n  --text-primary: var(--gray-100);\n  --text-secondary: var(--gray-300);\n  --text-secondary-alt: var(--gray-400);\n  --text-tertiary: var(--gray-500);\n  --header-primary: var(--gray-700);\n  --header-hover: var(--gray-600);\n  --header-button-hover: var(--gray-700);\n  --surface-active: var(--gray-500);\n  --surface-active-alt: var(--gray-700);\n  --surface-hover: var(--gray-600);\n  --surface-hover-alt: var(--gray-600);\n  --surface-primary: var(--gray-900);\n  --surface-primary-alt: var(--gray-850);\n  --surface-primary-contrast: var(--gray-850);\n  --surface-secondary: var(--gray-800);\n  --surface-secondary-alt: var(--gray-800);\n  --search-input: hsla(225, 5%, 17%, 1);\n  --surface-tertiary: var(--gray-700);\n  --surface-tertiary-alt: var(--gray-700);\n  --surface-dialog: var(--gray-850);\n  --surface-submit: var(--green-700);\n  --surface-submit-hover: var(--green-800);\n  --surface-destructive: var(--red-800);\n  --surface-destructive-hover: var(--red-900);\n  --border-light: var(--gray-700);\n  --border-medium-alt: var(--gray-600);\n  --border-medium: var(--gray-600);\n  --border-heavy: var(--gray-500);\n  --border-xheavy: var(--gray-400);\n  /* These are test styles */\n\n  --background: 0 0% 7%;\n  --foreground: 0 0% 98%;\n  --card: 0 0% 3.9%;\n  --card-foreground: 0 0% 98%;\n  --primary: 0 0% 98%;\n  --primary-foreground: 0 0% 9%;\n  --secondary: 0 0% 14.9%;\n  --secondary-foreground: 0 0% 98%;\n  --muted: 0 0% 14.9%;\n  --muted-foreground: 0 0% 63.9%;\n  --accent: 0 0% 14.9%;\n  --accent-foreground: 0 0% 98%;\n  --destructive: 0 62.8% 40.6%;\n  --destructive-foreground: 0 0% 98%;\n  --border: 0 0% 14.9%;\n  --input: 0 0% 14.9%;\n  --ring: 0 0% 83.1%;\n  --chart-1: 220 70% 50%;\n  --chart-2: 160 60% 45%;\n  --chart-3: 30 80% 55%;\n  --chart-4: 280 65% 60%;\n  --chart-5: 340 75% 55%;\n  --switch-unchecked: 0 0% 40%;\n}\n\n.gizmo {\n  --text-primary: var(--gizmo-gray-950);\n  --text-secondary: var(--gizmo-gray-600);\n  --text-tertiary: var(--gizmo-gray-500);\n  --surface-primary: var(--white);\n  --surface-secondary: var(--gray-50);\n  --surface-tertiary: var(--gray-100);\n  --border-light: rgba(0, 0, 0, 0.1);\n  --border-medium: rgba(0, 0, 0, 0.15);\n  --border-heavy: rgba(0, 0, 0, 0.2);\n  --border-xheavy: rgba(0, 0, 0, 0.25);\n}\n\n.gizmo.dark {\n  --text-primary: var(--gray-100);\n  --text-secondary: var(--gray-300);\n  --text-tertiary: var(--gizmo-gray-500);\n  --surface-primary: var(--gray-900);\n  --surface-secondary: var(--gray-800);\n  --surface-tertiary: var(--gray-700);\n  --border-light: rgba(217, 217, 227, 0.1);\n  --border-medium: rgba(217, 217, 227, 0.15);\n  --border-heavy: rgba(217, 217, 227, 0.2);\n  --border-xheavy: rgba(217, 217, 227, 0.25);\n}\n\n@font-face {\n  font-family: AlibabaPuHuiTi-3-55-Regular;\n  /* src: url(\"assets/text-security-disc.woff\") format(\"woff\"); */\n  src: url(\"assets/AlibabaPuHuiTi-3-55-Regular.woff\") format(\"woff\");\n}\n\n.text-token-text-primary {\n  color: #171717;\n  color: var(--text-primary);\n}\n\n.text-token-text-secondary {\n  color: #565869;\n  color: var(--text-secondary);\n}\n\n.text-token-text-tertiary {\n  color: #8e8ea0;\n  color: var(--text-tertiary);\n}\n\n.icon-xs {\n  stroke-width: 1.5;\n  height: 0.75rem;\n  width: 0.75rem;\n}\n\n.icon-sm {\n  stroke-width: 2;\n  height: 1rem;\n  width: 1rem;\n}\n\n.icon-md,\n.icon-md-heavy {\n  stroke-width: 1.5;\n  height: 1.125rem;\n  width: 1.125rem;\n}\n\n.icon-md-heavy {\n  stroke-width: 2.5;\n}\n\n.icon-lg {\n  stroke-width: 1.5;\n  height: 1.5rem;\n  width: 1.5rem;\n}\n\n.icon-xl {\n  stroke-width: 1.5;\n  height: 1.75rem;\n  width: 1.75rem;\n}\n\n.icon-2xl {\n  stroke-width: 1.5;\n  height: 2rem;\n  width: 2rem;\n}\n\n.icon-cover {\n  stroke-width: 1.5;\n  height: 234px;\n  width: 234px;\n}\n\n.border-token-border-heavy {\n  border-color: #c5c5d2;\n  border-color: var(--border-heavy);\n}\n\n.border-token-border-light {\n  border-color: #ececf1;\n  border-color: var(--border-light);\n}\n\n.border-token-border-medium {\n  border-color: #d9d9e3;\n  border-color: var(--border-medium);\n}\n\n.border-token-surface-primary {\n  border-color: #fff;\n  border-color: var(--surface-primary);\n}\n\n.border-token-surface-secondary {\n  border-color: var(--surface-secondary);\n}\n\n.border-token-surface-tertiary {\n  border-color: #ececf1;\n  border-color: var(--surface-tertiary);\n}\n\n.bg-token-surface-secondary {\n  background-color: var(--surface-secondary);\n}\n\n.bg-search-input {\n  background-color: var(--search-input) !important\n}\n\n@media (max-width: 640px) {\n  .no-gradient-sm {\n    background: none !important;\n  }\n}\n\n.ellipsis {\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 400;\n  src: url('$fonts/Inter-Regular.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: italic;\n  font-weight: 400;\n  src: url('$fonts/Inter-Italic.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 500;\n  src: url('$fonts/Inter-SemiBold.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: italic;\n  font-weight: 500;\n  src: url('$fonts/Inter-SemiBoldItalic.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 600;\n  src: url('$fonts/Inter-Bold.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Inter;\n  font-style: italic;\n  font-weight: 600;\n  src: url('$fonts/Inter-BoldItalic.woff2') format('woff2');\n  size-adjust: 94%;\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Roboto Mono;\n  font-style: normal;\n  font-weight: 400;\n  src: url('$fonts/roboto-mono-latin-400-normal.woff2') format('woff2');\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Roboto Mono;\n  font-style: normal;\n  font-weight: 700;\n  src: url('$fonts/roboto-mono-latin-700-normal.woff2') format('woff2');\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Roboto Mono;\n  font-style: italic;\n  font-weight: 400;\n  src: url('$fonts/roboto-mono-latin-400-italic.woff2') format('woff2');\n}\n\n/*\n\nThe default ChatGPT fonts, according to OpenAI's brand guidelines, are proprietary and require appropriate font license according to your use case.\n\nThey can be purchased here: https://klim.co.nz/buy/soehne/\n\nThe fonts in question are (9 total):\n\n> - Söhne (Buch Kursiv, Buch, Halbfett Kursiv, Halbfett, Kraftig Kursiv, Kraftig, Mono Buch Kursiv, Mono Buch, Mono Halbfett)\n\nIf you have purchased a license, you can use the commented-out `@font-face` declarations below to include them in your project.\n\nStep 1: Buy whatever license applies to you and allows use of `.woff2` font files (likely web font license).\nStep 2: Place them in ./client/public/fonts/ directory.\nStep 3: Replace the current `fontFamily` config in ./client/tailwind.config.cjs with the following:\n\n```\n    fontFamily: {\n      sans: ['Söhne', 'sans-serif'],\n      mono: ['Söhne Mono', 'monospace'],\n    },\n```\n\nStep 4: Uncomment all Söhne font-face declarations below.\nStep 5: rebuild frontend code: `npm run frontend` (or rebuild docker).\n\n*/\n\n/* @font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: normal;\n  font-weight: 400;\n  src: url(\"$fonts/soehne-buch.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: italic;\n  font-weight: 400;\n  src: url(\"$fonts/soehne-buch-kursiv.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: normal;\n  font-weight: 500;\n  src: url(\"$fonts/soehne-kraftig.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: italic;\n  font-weight: 500;\n  src: url(\"$fonts/soehne-kraftig-kursiv.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: normal;\n  font-weight: 600;\n  src: url(\"$fonts/soehne-halbfett.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne;\n  font-style: italic;\n  font-weight: 600;\n  src: url(\"$fonts/soehne-halbfett-kursiv.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne Mono;\n  font-style: normal;\n  font-weight: 400;\n  src: url(\"$fonts/soehne-mono-buch.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne Mono;\n  font-style: normal;\n  font-weight: 700;\n  src: url(\"$fonts/soehne-mono-halbfett.woff2\") format(\"woff2\")\n}\n\n@font-face {\n  font-display: swap;\n  font-family: Söhne Mono;\n  font-style: italic;\n  font-weight: 400;\n  src: url(\"$fonts/soehne-mono-buch-kursiv.woff2\") format(\"woff2\")\n} */\n\n/* * {\n  box-sizing: border-box;\n  outline: 1px solid limegreen !important;\n} */\n\n/* p small {\n  opacity: 0;\n  animation: fadeIn 3s ease forwards;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n    transform: translateY(-10px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n} */\n\n/* .LazyLoad {\n  opacity: 0;\n  transition: all 1s ease-in-out;\n} */\n\nselect {\n  --tw-shadow: 0 0 transparent;\n  -webkit-appearance: none;\n  appearance: none;\n  background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%238e8ea0' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n  background-position: right 0.5rem center;\n  background-repeat: no-repeat;\n  background-size: 1.5em 1.5em;\n  padding-right: 2.5rem;\n  background-color: #fff;\n  border-color: #8e8ea0;\n  border-radius: 0;\n  border-width: 1px;\n  font-size: 1rem;\n  line-height: 1.5rem;\n}\n\n.overflow-y-auto {\n  overflow-y: overlay;\n}\n\n.overflow-x-auto {\n  overflow-x: overlay;\n}\n\n.reset-rc-number-input input {\n  width: 100%;\n  border: none !important;\n  background: transparent;\n}\n\n.reset-rc-number-input-text-right input {\n  text-align: right;\n}\n\n.option-buttons {\n  pointer-events: none;\n  opacity: 0;\n  transition: all 0.25s ease-in-out;\n}\n\n.option-buttons.full-opacity {\n  pointer-events: fill;\n  opacity: 1;\n}\n\n.option-buttons.show {\n  pointer-events: fill;\n  opacity: 1;\n}\n\n.options-bar {\n  pointer-events: none;\n  opacity: 0;\n  transition: all 0.25s ease-in-out;\n}\n\n.options-bar.full-opacity {\n  pointer-events: fill;\n  opacity: 1;\n}\n\n.options-bar.show {\n  pointer-events: fill;\n  opacity: 0.3;\n}\n\n.hidden {\n  display: none;\n}\n\n.creative-tab {\n  /* background: linear-gradient(90deg, #904887 10.79%, #8B257E 87.08%); */\n  background: linear-gradient(90deg, #904887 10.79%, #8b257e 87.08%);\n}\n\n.fast-tab {\n  background: linear-gradient(90deg, #2870ea 10.79%, #1b4aef 87.08%);\n}\n\n.balanced-tab {\n  background: linear-gradient(90deg, #d7871a 10.79%, #9f6005 87.08%);\n}\n\n.precise-tab {\n  background: linear-gradient(90deg, #006880 10.79%, #005366 87.08%);\n}\n\np>small {\n  opacity: 0;\n  animation: fadein 3s forwards;\n}\n\n.fade-in {\n  animation: fadeInWithOutTranslate 0.3s ease-in-out;\n}\n\n@keyframes fadeInWithOutTranslate {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fadein {\n  from {\n    opacity: 0;\n    transform: translateY(-20px);\n  }\n\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\nblockquote,\ndd,\ndl,\nfieldset,\nfigure,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\np,\npre {\n  margin: 0;\n}\n\n.scroll-down-enter {\n  opacity: 0;\n}\n\n/* .scroll-down-appear {\n  opacity: 0;\n} */\n\n.scroll-down-enter-active {\n  opacity: 1;\n  transition: opacity 400ms;\n}\n\n.scroll-down-exit {\n  opacity: 1;\n}\n\n.scroll-down-exit-active {\n  opacity: 0;\n  transition: opacity 400ms;\n}\n\n.blink {\n  animation: blink 1s linear infinite;\n}\n\n@keyframes blink {\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n  }\n\n  100% {\n    opacity: 1;\n  }\n}\n\n.cursorBlink {\n  animation: blink 1s linear infinite;\n}\n\n@keyframes blink {\n  0% {\n    opacity: 1;\n  }\n\n  79% {\n    opacity: 1;\n  }\n\n  80% {\n    opacity: 0;\n  }\n\n  99% {\n    opacity: 0;\n  }\n\n  100% {\n    opacity: 1;\n  }\n}\n\n.blink2 {\n  animation: blink 1500ms linear infinite;\n}\n\n@keyframes blink2 {\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0;\n  }\n\n  100% {\n    opacity: 1;\n  }\n}\n\n.prose {\n  color: var(--tw-prose-body);\n  max-width: 65ch;\n  font-size: var(--markdown-font-size, var(--font-size-base));\n  line-height: calc(28px * var(--markdown-font-size, var(--font-size-base)) / var(--font-size-base));\n}\n\n.prose :where([class~='lead']):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-lead);\n  font-size: 1.25em;\n  line-height: 1.6;\n  margin-bottom: 1.2em;\n  margin-top: 1.2em;\n}\n\n.prose :where(a):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-links);\n  font-weight: 500;\n  text-decoration: underline;\n}\n\n.prose :where(strong):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-bold);\n  font-weight: 600;\n}\n\n.prose :where(a strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(blockquote strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(thead th strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(ul > li):not(:where([class~='not-prose'] *))::marker {\n  color: var(--tw-prose-bullets);\n}\n\n.prose :where(hr):not(:where([class~='not-prose'] *)) {\n  border-color: var(--tw-prose-hr);\n  border-top-width: 1px;\n  margin-bottom: 3em;\n  margin-top: 3em;\n}\n\n.prose :where(blockquote):not(:where([class~='not-prose'] *)) {\n  border-left-color: var(--tw-prose-quote-borders);\n  border-left-width: 0.25rem;\n  color: var(--tw-prose-quotes);\n  font-style: italic;\n  font-style: normal;\n  font-weight: 500;\n  margin-bottom: 1.6em;\n  margin-top: 1.6em;\n  padding-left: 1em;\n  quotes: '\\201C''\\201D''\\2018''\\2019';\n}\n\n.prose :where(blockquote p:first-of-type):not(:where([class~='not-prose'] *)):before {\n  content: open-quote;\n}\n\n.prose :where(blockquote p:last-of-type):not(:where([class~='not-prose'] *)):after {\n  content: close-quote;\n}\n\n.prose :where(h1):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-headings);\n  font-size: 2.25em;\n  font-weight: 800;\n  line-height: 1.1111111;\n  margin-bottom: 0.8888889em;\n  margin-top: 0;\n}\n\n.prose :where(h1 strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-weight: 900;\n}\n\n.prose :where(h2):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-headings);\n  font-size: 1.5em;\n  font-weight: 700;\n  line-height: 1.3333333;\n  margin-bottom: 1em;\n  margin-top: 2em;\n}\n\n.prose :where(h2 strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-weight: 800;\n}\n\n.prose :where(h3):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-headings);\n  font-size: 1.25em;\n  font-weight: 600;\n  line-height: 1.6;\n  margin-bottom: 0.6em;\n  margin-top: 1.6em;\n}\n\n.prose :where(h3 strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-weight: 700;\n}\n\n.prose :where(h4):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-headings);\n  font-weight: 600;\n  line-height: 1.5;\n  margin-bottom: 0.5em;\n  margin-top: 1.5em;\n}\n\n.prose :where(h4 strong):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-weight: 700;\n}\n\n.prose :where(img):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 2em;\n  margin-top: 2em;\n}\n\n.prose :where(figure > *):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n  margin-top: 0;\n}\n\n.prose :where(figcaption):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-captions);\n  font-size: 0.875em;\n  line-height: 1.4285714;\n  margin-top: 0.8571429em;\n}\n\n.prose :where(code):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-code);\n  font-size: 0.875em;\n  font-weight: 600;\n}\n\n.prose :where(code):not(:where([class~='not-prose'] *)):before {\n  content: '`';\n}\n\n.prose :where(code):not(:where([class~='not-prose'] *)):after {\n  content: '`';\n}\n\n.prose :where(a code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(h1 code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(h2 code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-size: 0.875em;\n}\n\n.prose :where(h3 code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n  font-size: 0.9em;\n}\n\n.prose :where(h4 code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(blockquote code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(thead th code):not(:where([class~='not-prose'] *)) {\n  color: inherit;\n}\n\n.prose :where(pre):not(:where([class~='not-prose'] *)) {\n  background-color: transparent;\n  border-radius: 0.375rem;\n  color: currentColor;\n  font-size: 0.875em;\n  font-weight: 400;\n  line-height: 1.7142857;\n  margin: 0;\n  overflow-x: auto;\n  padding: 0;\n}\n\n.prose :where(pre code):not(:where([class~='not-prose'] *)) {\n  background-color: transparent;\n  border-radius: 0;\n  border-width: 0;\n  color: inherit;\n  font-family: inherit;\n  font-size: inherit;\n  font-weight: inherit;\n  line-height: inherit;\n  padding: 0;\n}\n\n.prose :where(pre code):not(:where([class~='not-prose'] *)):before {\n  content: none;\n}\n\n.prose :where(pre code):not(:where([class~='not-prose'] *)):after {\n  content: none;\n}\n\n.prose :where(table):not(:where([class~='not-prose'] *)) {\n  font-size: 0.875em;\n  line-height: 1.7142857;\n  margin-bottom: 2em;\n  margin-top: 2em;\n  table-layout: auto;\n  text-align: left;\n  width: 100%;\n}\n\n.prose :where(thead):not(:where([class~='not-prose'] *)) {\n  border-bottom-color: var(--tw-prose-th-borders);\n  border-bottom-width: 1px;\n}\n\n.prose :where(thead th):not(:where([class~='not-prose'] *)) {\n  color: var(--tw-prose-headings);\n  font-weight: 600;\n  padding-bottom: 0.5714286em;\n  padding-left: 0.5714286em;\n  padding-right: 0.5714286em;\n  vertical-align: bottom;\n}\n\n.prose :where(tbody tr):not(:where([class~='not-prose'] *)) {\n  border-bottom-color: var(--tw-prose-td-borders);\n  border-bottom-width: 1px;\n}\n\n.prose :where(tbody tr:last-child):not(:where([class~='not-prose'] *)) {\n  border-bottom-width: 0;\n}\n\n.prose :where(tbody td):not(:where([class~='not-prose'] *)) {\n  vertical-align: baseline;\n}\n\n.prose :where(tfoot):not(:where([class~='not-prose'] *)) {\n  border-top-color: var(--tw-prose-th-borders);\n  border-top-width: 1px;\n}\n\n.prose :where(tfoot td):not(:where([class~='not-prose'] *)) {\n  vertical-align: top;\n}\n\n.prose {\n  --tw-prose-body: #374151;\n  --tw-prose-headings: #111827;\n  --tw-prose-lead: #4b5563;\n  --tw-prose-links: #111827;\n  --tw-prose-bold: #111827;\n  --tw-prose-counters: #6b7280;\n  --tw-prose-bullets: #d1d5db;\n  --tw-prose-hr: #e5e7eb;\n  --tw-prose-quotes: #111827;\n  --tw-prose-quote-borders: #e5e7eb;\n  --tw-prose-captions: #6b7280;\n  --tw-prose-code: #111827;\n  --tw-prose-pre-code: #e5e7eb;\n  --tw-prose-pre-bg: #1f2937;\n  --tw-prose-th-borders: #d1d5db;\n  --tw-prose-td-borders: #e5e7eb;\n  --tw-prose-invert-body: #d1d5db;\n  --tw-prose-invert-headings: #fff;\n  --tw-prose-invert-lead: #9ca3af;\n  --tw-prose-invert-links: #fff;\n  --tw-prose-invert-bold: #fff;\n  --tw-prose-invert-counters: #9ca3af;\n  --tw-prose-invert-bullets: #4b5563;\n  --tw-prose-invert-hr: #374151;\n  --tw-prose-invert-quotes: #f3f4f6;\n  --tw-prose-invert-quote-borders: #374151;\n  --tw-prose-invert-captions: #9ca3af;\n  --tw-prose-invert-code: #fff;\n  --tw-prose-invert-pre-code: #d1d5db;\n  --tw-prose-invert-pre-bg: rgba(0, 0, 0, 0.5);\n  --tw-prose-invert-th-borders: #4b5563;\n  --tw-prose-invert-td-borders: #374151;\n  font-size: 1rem;\n  line-height: 1.75;\n}\n\n.prose :where(p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.25em;\n  margin-top: 1.25em;\n}\n\n.prose :where(video):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 2em;\n  margin-top: 2em;\n}\n\n.prose :where(figure):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 2em;\n  margin-top: 2em;\n}\n\n.prose :where(li):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.5em;\n  margin-top: 0.5em;\n}\n\n.prose :where(ul > li):not(:where([class~='not-prose'] *)) {\n  padding-left: 0.375em;\n}\n\n.prose :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.75em;\n  margin-top: 0.75em;\n}\n\n.prose :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.25em;\n}\n\n.prose :where(hr + *):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(h2 + *):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(h3 + *):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(h4 + *):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(thead th:first-child):not(:where([class~='not-prose'] *)) {\n  padding-left: 0;\n}\n\n.prose :where(thead th:last-child):not(:where([class~='not-prose'] *)) {\n  padding-right: 0;\n}\n\n.prose :where(tbody td, tfoot td):not(:where([class~='not-prose'] *)) {\n  padding: 0.5714286em;\n}\n\n.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~='not-prose'] *)) {\n  padding-left: 0;\n}\n\n.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~='not-prose'] *)) {\n  padding-right: 0;\n}\n\n.prose :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\n.prose-sm :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.5714286em;\n  margin-top: 0.5714286em;\n}\n\n.prose-sm :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.1428571em;\n}\n\n.prose-sm :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.1428571em;\n}\n\n.prose-sm :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-sm :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\n.prose-base :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.75em;\n  margin-top: 0.75em;\n}\n\n.prose-base :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-base :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.25em;\n}\n\n.prose-base :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-base :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\n.prose-lg :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.8888889em;\n  margin-top: 0.8888889em;\n}\n\n.prose-lg :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.3333333em;\n}\n\n.prose-lg :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.3333333em;\n}\n\n.prose-lg :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-lg :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\n.prose-xl :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.8em;\n  margin-top: 0.8em;\n}\n\n.prose-xl :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.2em;\n}\n\n.prose-xl :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.2em;\n}\n\n.prose-xl :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-xl :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\n.prose-2xl :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.8333333em;\n  margin-top: 0.8333333em;\n}\n\n.prose-2xl :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.3333333em;\n}\n\n.prose-2xl :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.3333333em;\n}\n\n.prose-2xl :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-2xl :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0;\n}\n\ncode,\npre {\n  font-family: Consolas, Söhne Mono, Monaco, Andale Mono, Ubuntu Mono, monospace !important;\n}\n\ncode[class='language-plaintext'] {\n  white-space: pre-line;\n}\n\ncode.hljs,\ncode[class*='language-'],\npre[class*='language-'] {\n  word-wrap: normal;\n  background: none;\n  color: #fff;\n  -webkit-hyphens: none;\n  hyphens: none;\n  font-size: 0.85rem;\n  line-height: 1.5;\n  tab-size: 4;\n  text-align: left;\n  white-space: pre;\n  word-break: normal;\n  word-spacing: normal;\n}\n\npre[class*='language-'] {\n  border-radius: 0.3em;\n  overflow: auto;\n}\n\n:not(pre)>code.hljs,\n:not(pre)>code[class*='language-'] {\n  border-radius: 0.3em;\n  padding: 0.1em;\n  white-space: normal;\n}\n\n.hljs-comment {\n  color: hsla(0, 0%, 100%, 0.5);\n}\n\n.hljs-meta {\n  color: hsla(0, 0%, 100%, 0.6);\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n  color: #e9950c;\n}\n\n.hljs-doctag,\n.hljs-formula,\n.hljs-keyword,\n.hljs-literal {\n  color: #2e95d3;\n}\n\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string,\n.hljs-regexp,\n.hljs-string {\n  color: #00a67d;\n}\n\n.hljs-attr,\n.hljs-number,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-selector-pseudo,\n.hljs-template-variable,\n.hljs-type,\n.hljs-variable {\n  color: #df3079;\n}\n\n.hljs-bullet,\n.hljs-link,\n.hljs-selector-id,\n.hljs-symbol,\n.hljs-title {\n  color: #f22c3d;\n}\n\n[role='button'],\nbutton {\n  cursor: pointer;\n}\n\n.btn {\n  align-items: center;\n  border-color: transparent;\n  border-radius: 0.5rem;\n  border-width: 1px;\n  cursor: pointer;\n  display: inline-flex;\n  font-size: 0.875rem;\n  font-weight: 500;\n  line-height: 1.25rem;\n  padding: 0.5rem 0.75rem;\n  pointer-events: auto;\n  transition: all 0.1s ease-in-out;\n}\n\n.custom-btn {\n  align-items: center;\n  border-color: transparent;\n  border-radius: 0.25rem;\n  border-width: 1px;\n  display: inline-flex;\n  font-size: 0.875rem;\n  line-height: 1.25rem;\n  padding: 0.5rem 0.75rem;\n  transition: all 0.1s ease-in-out;\n}\n\n.btn:focus {\n  outline: 2px solid transparent;\n  outline-offset: 2px;\n}\n\n.btn:disabled {\n  cursor: not-allowed;\n  opacity: 0.5;\n}\n\n.btn-primary {\n  --tw-bg-opacity: 1;\n  --tw-text-opacity: 1;\n  background-color: rgba(16, 163, 127, var(--tw-bg-opacity));\n  color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n.btn-primary:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgba(26, 127, 100, var(--tw-bg-opacity));\n}\n\n.btn-primary:focus {\n  /* --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  --tw-ring-offset-width: 0;\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 transparent;\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 transparent); */\n}\n\n.btn-primary.focus-visible {\n  /* --tw-ring-opacity: 1;\n  --tw-ring-color: rgba(25, 195, 125, var(--tw-ring-opacity)); */\n}\n\n.btn-primary:focus-visible {\n  /* --tw-ring-opacity: 1;\n  --tw-ring-color: rgba(25, 195, 125, var(--tw-ring-opacity)); */\n}\n\n.btn-primary:disabled:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgba(16, 163, 127, var(--tw-bg-opacity));\n}\n\n.btn-secondary {\n  --tw-border-opacity: 1;\n  --tw-bg-opacity: 1;\n  --tw-text-opacity: 1;\n  background-color: transparent;\n  background-color: rgba(16, 163, 156, var(--tw-bg-opacity));\n  color: rgba(255, 255, 255, var(--tw-text-opacity));\n}\n\n.btn-secondary:hover {\n  --tw-bg-opacity: 1;\n  border-color: rgba(0, 0, 0, 0.1);\n  color: rgba(64, 65, 79, var(--tw-text-opacity));\n  background-color: rgba(236, 236, 241, var(--tw-bg-opacity));\n}\n\n.dark .btn-secondary:hover {\n  --tw-bg-opacity: 1;\n  border-color: rgba(8, 82, 78, var(--tw-border-opacity));\n  color: rgba(255, 255, 240, var(--tw-text-opacity));\n  background-color: rgba(8, 82, 78, var(--tw-bg-opacity));\n}\n\n.btn-neutral {\n  --tw-bg-opacity: 1;\n  --tw-text-opacity: 1;\n  background-color: var(--surface-secondary);\n  border-color: rgba(0, 0, 0, 0.1);\n  border-width: 1px;\n  color: rgba(64, 65, 79, var(--tw-text-opacity));\n  font-size: 0.875rem;\n  line-height: 1.25rem;\n  transition: all 0.1s ease-in-out;\n}\n\n.btn-neutral:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgba(236, 236, 241, var(--tw-bg-opacity));\n}\n\n.btn-neutral:focus {\n  outline: none;\n  box-shadow: 0 0 0 2px var(--ring-primary);\n}\n\n.dark .btn-neutral {\n  --tw-border-opacity: 1;\n  --tw-bg-opacity: 1;\n  --tw-text-opacity: 1;\n  background-color: transparent;\n  border-color: rgba(66, 66, 66, var(--tw-border-opacity));\n  color: rgba(255, 255, 240, var(--tw-text-opacity));\n}\n\n.dark .btn-neutral:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgba(66, 66, 66, var(--tw-bg-opacity));\n}\n\n.dark .btn-neutral:focus {\n  box-shadow: 0 0 0 2px var(--ring-primary);\n}\n\n.btn-small {\n  padding: 0.25rem 0.5rem;\n}\n\n.from-token-surface-secondary {\n  --tw-gradient-from: var(--surface-secondary) var(--tw-gradient-from-position);\n  --tw-gradient-to: hsla(0, 0%, 100%, 0) var(--tw-gradient-to-position);\n  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n/* Webkit scrollbar */\n::-webkit-scrollbar {\n  height: 0.1em;\n  width: 0.5rem;\n}\n\n::-webkit-scrollbar-thumb {\n  background-color: rgba(0, 0, 0, 0.1);\n  border-radius: 9999px;\n}\n\n.dark ::-webkit-scrollbar-thumb {\n  background-color: hsla(0, 0%, 100%, 0.1);\n}\n\n::-webkit-scrollbar-track {\n  background-color: transparent;\n  border-radius: 9999px;\n}\n\n.scrollbar-transparent::-webkit-scrollbar-thumb {\n  background-color: transparent;\n}\n\n.dark .scrollbar-transparent::-webkit-scrollbar-thumb {\n  background-color: transparent;\n}\n\nbody,\nhtml {\n  height: 100%;\n}\n\n.dark body,\n.dark html {\n  --tw-bg-opacity: 1;\n  background-color: rgba(23, 23, 23, var(--tw-bg-opacity));\n}\n\n#__next,\n#root {\n  height: 100%;\n}\n\n.markdown {\n  max-width: none;\n  font-size: var(--markdown-font-size, var(--font-size-base));\n  line-height: calc(28px * var(--markdown-font-size, var(--font-size-base)) / var(--font-size-base));\n}\n\n.markdown h1 {\n  font-size: calc(var(--markdown-font-size) * 1.75);\n}\n\n.markdown h2 {\n  font-size: calc(var(--markdown-font-size) * 1.5);\n}\n\n.markdown h2 {\n  margin-bottom: 1rem;\n  margin-top: 2rem;\n}\n\n.markdown h3 {\n  font-weight: 600;\n  font-size: calc(var(--markdown-font-size) * 1.25);\n}\n\n.markdown h3,\n.markdown h4 {\n  margin-bottom: 0.5rem;\n  margin-top: 1rem;\n}\n\n.markdown h4 {\n  font-weight: 400;\n  font-size: calc(var(--markdown-font-size) * 1.1);\n}\n\n.markdown h5 {\n  font-weight: 600;\n  font-size: var(--markdown-font-size);\n}\n\n.markdown blockquote {\n  --tw-border-opacity: 1;\n  border-color: rgba(142, 142, 160, var(--tw-border-opacity));\n  border-left-width: 2px;\n  line-height: 1rem;\n  padding-left: 1rem;\n}\n\n.markdown table {\n  --tw-border-spacing-x: 0px;\n  --tw-border-spacing-y: 0px;\n  border-collapse: separate;\n  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n  width: 100%;\n}\n\n.markdown th {\n  background-color: rgba(236, 236, 241, 0.2);\n  border-bottom-width: 1px;\n  border-left-width: 1px;\n  border-top-width: 1px;\n  padding: 0.25rem 0.75rem;\n}\n\n.markdown th:first-child {\n  border-top-left-radius: 0.375rem;\n}\n\n.markdown th:last-child {\n  border-right-width: 1px;\n  border-top-right-radius: 0.375rem;\n}\n\n.markdown td {\n  border-bottom-width: 1px;\n  border-left-width: 1px;\n  padding: 0.25rem 0.75rem;\n}\n\n.markdown td:last-child {\n  border-right-width: 1px;\n}\n\n.markdown tbody tr:last-child td:first-child {\n  border-bottom-left-radius: 0.375rem;\n}\n\n.markdown tbody tr:last-child td:last-child {\n  border-bottom-right-radius: 0.375rem;\n}\n\n.markdown a {\n  text-decoration-line: underline;\n  text-underline-offset: 2px;\n}\n\n.animate-flash {\n  -webkit-animation: flash 2s steps(60, start);\n  animation: flash 2s steps(60, start);\n}\n\n@-webkit-keyframes flash {\n  0% {\n    background-color: hsla(0, 0%, 100%, 0.4);\n  }\n}\n\n@keyframes flash {\n  0% {\n    background-color: hsla(0, 0%, 100%, 0.4);\n  }\n}\n\n.truncate {\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.text-ellipsis,\n.truncate {\n  text-overflow: ellipsis;\n}\n\n.group:hover .group-hover\\:visible {\n  visibility: visible;\n}\n\n.group:hover .group-hover\\:from-\\[\\#2A2B32\\] {\n  --tw-gradient-from: #2a2b32;\n  --tw-gradient-to: rgba(42, 43, 50, 0);\n  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n\n.group:hover .group-hover\\:text-gray-500 {\n  --tw-text-opacity: 1;\n  color: rgba(142, 142, 160, var(--tw-text-opacity));\n}\n\n.group:hover .group-hover\\:text-gray-700 {\n  --tw-text-opacity: 1;\n  color: rgba(64, 65, 79, var(--tw-text-opacity));\n}\n\n.dark .dark\\:prose-invert {\n  --tw-prose-body: var(--tw-prose-invert-body);\n  --tw-prose-headings: var(--tw-prose-invert-headings);\n  --tw-prose-lead: var(--tw-prose-invert-lead);\n  --tw-prose-links: var(--tw-prose-invert-links);\n  --tw-prose-bold: var(--tw-prose-invert-bold);\n  --tw-prose-counters: var(--tw-prose-invert-counters);\n  --tw-prose-bullets: var(--tw-prose-invert-bullets);\n  --tw-prose-hr: var(--tw-prose-invert-hr);\n  --tw-prose-quotes: var(--tw-prose-invert-quotes);\n  --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);\n  --tw-prose-captions: var(--tw-prose-invert-captions);\n  --tw-prose-code: var(--tw-prose-invert-code);\n  --tw-prose-pre-code: var(--tw-prose-invert-pre-code);\n  --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);\n  --tw-prose-th-borders: var(--tw-prose-invert-th-borders);\n  --tw-prose-td-borders: var(--tw-prose-invert-td-borders);\n}\n\n@-webkit-keyframes spin {\n  to {\n    -webkit-transform: rotate(1turn);\n    transform: rotate(1turn);\n  }\n}\n\n@keyframes spin {\n  to {\n    -webkit-transform: rotate(1turn);\n    transform: rotate(1turn);\n  }\n}\n\n.animate-spin {\n  -webkit-animation: spin 1s linear infinite;\n  animation: spin 1s linear infinite;\n}\n\n.form-input,\n.form-multiselect,\n.form-select,\n.form-textarea {\n  --tw-shadow: 0 0 transparent;\n  -webkit-appearance: none;\n  appearance: none;\n  background-color: #fff;\n  border-color: #8e8ea0;\n  border-radius: 0;\n  border-width: 1px;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  padding: 0.5rem 0.75rem;\n}\n\n.form-input:focus,\n.form-multiselect:focus,\n.form-select:focus,\n.form-textarea:focus {\n  --tw-ring-inset: var(--tw-empty,\n      /*!*/\n      /*!*/\n    );\n  --tw-ring-offset-width: 0px;\n  --tw-ring-offset-color: #fff;\n  --tw-ring-color: #2563eb;\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  border-color: #2563eb;\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n  outline: 2px solid transparent;\n  outline-offset: 2px;\n}\n\n.form-input::-webkit-input-placeholder,\n.form-textarea::-webkit-input-placeholder {\n  color: #8e8ea0;\n  opacity: 1;\n}\n\n.form-input::placeholder,\n.form-textarea::placeholder {\n  color: #8e8ea0;\n  opacity: 1;\n}\n\n.form-input::-webkit-datetime-edit-fields-wrapper {\n  padding: 0;\n}\n\n.form-input::-webkit-date-and-time-value {\n  min-height: 1.5em;\n}\n\n.form-input::-webkit-datetime-edit,\n.form-input::-webkit-datetime-edit-day-field,\n.form-input::-webkit-datetime-edit-hour-field,\n.form-input::-webkit-datetime-edit-meridiem-field,\n.form-input::-webkit-datetime-edit-millisecond-field,\n.form-input::-webkit-datetime-edit-minute-field,\n.form-input::-webkit-datetime-edit-month-field,\n.form-input::-webkit-datetime-edit-second-field,\n.form-input::-webkit-datetime-edit-year-field {\n  padding-bottom: 0;\n  padding-top: 0;\n}\n\n.grow {\n  flex-grow: 1;\n}\n\n.transform {\n  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\nbody,\nhtml {\n  height: 100%;\n  font-family:\n    \"AlibabaPuHuiTi-3-55-Regular\",\n    \"PingFang SC\",\n    /* 苹果设备优先使用苹方 */\n    \"Hiragino Sans GB\",\n    /* 旧版 macOS 备选 */\n    \"Microsoft YaHei\",\n    /* Windows 备选（微软雅黑） */\n    \"Helvetica Neue\",\n    /* 通用西文字体 */\n    Arial,\n    /* 最终回退字体 */\n    sans-serif;\n  /* 无衬线字体族兜底 */\n}\n\n.dark body,\n.dark html {\n  --tw-bg-opacity: 1;\n  background-color: rgba(33, 33, 33, var(--tw-bg-opacity));\n}\n\n#__next,\n#root {\n  height: 100%;\n}\n\n.markdown {\n  max-width: none;\n}\n\n.markdown h1,\n.markdown h2 {\n  font-weight: 600;\n}\n\n.markdown h2 {\n  margin-bottom: 1rem;\n  margin-top: 2rem;\n}\n\n.markdown h3 {\n  font-weight: 600;\n}\n\n.markdown h3,\n.markdown h4 {\n  margin-bottom: 0.5rem;\n  margin-top: 1rem;\n}\n\n.markdown h4 {\n  font-weight: 400;\n}\n\n.markdown h5 {\n  font-weight: 600;\n}\n\n.markdown blockquote {\n  --tw-border-opacity: 1;\n  border-color: rgba(142, 142, 160, var(--tw-border-opacity));\n  border-left-width: 2px;\n  line-height: 1rem;\n  padding-left: 1rem;\n}\n\n.markdown table {\n  --tw-border-spacing-x: 0px;\n  --tw-border-spacing-y: 0px;\n  border-collapse: separate;\n  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n  width: 100%;\n}\n\n.markdown th {\n  background-color: rgba(236, 236, 241, 0.2);\n  border-bottom-width: 1px;\n  border-left-width: 1px;\n  border-top-width: 1px;\n  padding: 0.25rem 0.75rem;\n}\n\n.markdown th:first-child {\n  border-top-left-radius: 0.375rem;\n}\n\n.markdown th:last-child {\n  border-right-width: 1px;\n  border-top-right-radius: 0.375rem;\n}\n\n.markdown td {\n  border-bottom-width: 1px;\n  border-left-width: 1px;\n  padding: 0.25rem 0.75rem;\n}\n\n.markdown td:last-child {\n  border-right-width: 1px;\n}\n\n.markdown tbody tr:last-child td:first-child {\n  border-bottom-left-radius: 0.375rem;\n}\n\n.markdown tbody tr:last-child td:last-child {\n  border-bottom-right-radius: 0.375rem;\n}\n\n.markdown a {\n  text-decoration-line: underline;\n  text-underline-offset: 2px;\n}\n\n.conversation-item-time:before {\n  content: attr(data-time);\n}\n\n.tooltip-label:before {\n  content: attr(data-content);\n}\n\nbutton.scroll-convo {\n  display: none;\n}\n\n@-webkit-keyframes blink {\n  to {\n    visibility: hidden;\n  }\n}\n\n@keyframes blink {\n  to {\n    visibility: hidden;\n  }\n}\n\n.animate-flash {\n  -webkit-animation: flash 2s steps(60, start);\n  animation: flash 2s steps(60, start);\n}\n\n@-webkit-keyframes flash {\n  0% {\n    background-color: hsla(0, 0%, 100%, 0.4);\n  }\n}\n\n@keyframes flash {\n  0% {\n    background-color: hsla(0, 0%, 100%, 0.4);\n  }\n}\n\n.hidden-visibility {\n  visibility: hidden;\n}\n\n.toast-root {\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  height: 0;\n  transition: all 0.24s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.toast-root[data-state='open'] {\n  -webkit-animation: toast-open 0.24s cubic-bezier(0.175, 0.885, 0.32, 1.175) both;\n  animation: toast-open 0.24s cubic-bezier(0.175, 0.885, 0.32, 1.175) both;\n}\n\n.toast-root[data-state='closed'] {\n  -webkit-animation: toast-close 0.12s cubic-bezier(0.4, 0, 1, 1) both;\n  animation: toast-close 0.12s cubic-bezier(0.4, 0, 1, 1) both;\n}\n\n.toast-root .alert-root {\n  box-shadow: 0 0 1px rgba(67, 90, 111, 0.3), 0 5px 8px -4px rgba(67, 90, 111, 0.3);\n  flex-shrink: 0;\n  pointer-events: all;\n}\n\n@-webkit-keyframes toast-open {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(-100%);\n    transform: translateY(-100%);\n  }\n\n  to {\n    -webkit-transform: translateY(0);\n    transform: translateY(0);\n  }\n}\n\n@keyframes toast-open {\n  0% {\n    opacity: 0;\n    -webkit-transform: translateY(-100%);\n    transform: translateY(-100%);\n  }\n\n  to {\n    -webkit-transform: translateY(0);\n    transform: translateY(0);\n  }\n}\n\n@-webkit-keyframes toast-close {\n  0% {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes toast-close {\n  0% {\n    opacity: 1;\n  }\n\n  to {\n    opacity: 0;\n  }\n}\n\n@-webkit-keyframes pulseSize {\n\n  0%,\n  to {\n    -webkit-transform: scaleX(1);\n    transform: scaleX(1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.25, 1.25, 1);\n    transform: scale3d(1.25, 1.25, 1);\n  }\n}\n\n@keyframes pulseSize {\n\n  0%,\n  to {\n    -webkit-transform: scaleX(1);\n    transform: scaleX(1);\n  }\n\n  50% {\n    -webkit-transform: scale3d(1.25, 1.25, 1);\n    transform: scale3d(1.25, 1.25, 1);\n  }\n}\n\n.submitting .result-thinking:empty:last-child:after {\n  -webkit-font-smoothing: subpixel-antialiased;\n  -webkit-animation: pulseSize 1.25s ease-in-out infinite;\n  animation: pulseSize 1.25s ease-in-out infinite;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  background-color: #0d0d0d;\n  background-color: var(--text-primary);\n  border-radius: 50%;\n  box-sizing: border-box;\n  content: ' ';\n  display: block;\n  height: 12px;\n  position: absolute;\n  top: -11px;\n  -webkit-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-transform-origin: center;\n  transform-origin: center;\n  width: 12px;\n  will-change: transform;\n}\n\n.shadow-stroke {\n  position: relative;\n}\n\n.shadow-stroke:after {\n  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);\n  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);\n  border-radius: 9999px;\n  bottom: 0;\n  content: '';\n  left: 0;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.dark .shadow-stroke:after,\n.shadow-stroke:after {\n  box-shadow: 0 0 transparent, 0 0 transparent, var(--tw-shadow);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent),\n    var(--tw-shadow);\n}\n\n.dark .shadow-stroke:after {\n  --tw-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, 0.3);\n  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);\n}\n\n.assistant-item {\n  position: relative;\n}\n\n.assistant-item:after {\n  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);\n  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);\n  border-radius: 9999px;\n  bottom: 0;\n  content: '';\n  left: 0;\n  position: absolute;\n  right: 0;\n  top: 0;\n  box-shadow: 0 0 transparent, 0 0 transparent, var(--tw-shadow);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent),\n    var(--tw-shadow);\n}\n\n.dark .assistant-item:after {\n  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);\n  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);\n}\n\n.result-streaming> :not(ol):not(ul):not(pre):last-child:after,\n.result-streaming>pre:last-child code:after {\n  display: inline-block;\n  content: '⬤';\n  width: 12px;\n  height: 12px;\n  font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,\n    Noto Sans, sans-serif;\n  line-height: normal;\n  margin-left: 0.25rem;\n  vertical-align: middle;\n  font-size: 0.5rem;\n}\n\n@supports (selector(:has(*))) {\n  .result-streaming> :is(ul, ol):last-child>li:last-child:not(:has(> :is(ul, ol, pre))):after {\n    content: '⬤';\n    font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,\n      Noto Sans, sans-serif;\n    line-height: normal;\n    margin-left: 0.25rem;\n    vertical-align: middle;\n    font-size: 0.5rem;\n    display: inline-block;\n    width: 12px;\n    height: 12px;\n  }\n}\n\n@supports not (selector(:has(*))) {\n\n  .result-streaming>ol:last-child>li:last-child:after,\n  .result-streaming>ul:last-child>li:last-child:after {\n    content: '⬤';\n    font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,\n      Noto Sans, sans-serif;\n    line-height: normal;\n    margin-left: 0.25rem;\n    vertical-align: middle;\n    font-size: 0.5rem;\n    display: inline-block;\n    width: 12px;\n    height: 12px;\n  }\n\n  .result-streaming>ol:last-child>li:last-child> :is(ul, ol, pre)~ :after,\n  .result-streaming>ul:last-child>li:last-child> :is(ul, ol, pre)~ :after {\n    display: none;\n  }\n\n  .result-streaming>ol:last-child>li:last-child>pre:last-child code:after,\n  .result-streaming>ul:last-child>li:last-child>pre:last-child code:after {\n    display: inline-block;\n  }\n}\n\n/* Remove cursors when streaming is complete */\n.result-streaming:not(.submitting) :is(ul, ol) li:after {\n  display: none !important;\n}\n\n.webkit-dark-styles,\n.webkit-dark-styles:focus {\n  background-clip: content-box;\n  -webkit-box-shadow: 0 0 0 50vh #fff inset;\n}\n\n.dark .webkit-dark-styles,\n.dark .webkit-dark-styles:focus {\n  -webkit-text-fill-color: #fff;\n  background-clip: content-box;\n  -webkit-box-shadow: 0 0 0 50vh #0d0d0d inset;\n}\n\n/* Ordered Listing */\n.prose :where(ol[type='A']):not(:where([class~='not-prose'] *)) {\n  list-style-type: upper-alpha;\n}\n\n.prose :where(ol[type='a']):not(:where([class~='not-prose'] *)) {\n  list-style-type: lower-alpha;\n}\n\n.prose :where(ol[type='A s']):not(:where([class~='not-prose'] *)) {\n  list-style-type: upper-alpha;\n}\n\n.prose :where(ol[type='a s']):not(:where([class~='not-prose'] *)) {\n  list-style-type: lower-alpha;\n}\n\n.prose :where(ol[type='I']):not(:where([class~='not-prose'] *)) {\n  list-style-type: upper-roman;\n}\n\n.prose :where(ol[type='i']):not(:where([class~='not-prose'] *)) {\n  list-style-type: lower-roman;\n}\n\n.prose :where(ol[type='I s']):not(:where([class~='not-prose'] *)) {\n  list-style-type: upper-roman;\n}\n\n.prose :where(ol[type='i s']):not(:where([class~='not-prose'] *)) {\n  list-style-type: lower-roman;\n}\n\n.prose :where(ol[type='1']):not(:where([class~='not-prose'] *)) {\n  list-style-type: decimal;\n}\n\n.prose :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.25em;\n}\n\n.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 0.75em;\n  margin-top: 0.75em;\n}\n\n.prose-sm :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.1428571em;\n}\n\n.prose-sm :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.1428571em;\n}\n\n.prose-base :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 0;\n}\n\n.prose-base :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.25em;\n}\n\n.prose-lg :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.3333333em;\n}\n\n.prose-lg :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.3333333em;\n}\n\n.prose-xl :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.2em;\n}\n\n.prose-xl :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.2em;\n}\n\n.prose-2xl :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {\n  margin-top: 1.3333333em;\n}\n\n.prose-2xl :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {\n  margin-bottom: 1.3333333em;\n}\n\n/* Base styles for lists */\n.prose ol,\n.prose ul,\n.markdown ol,\n.markdown ul {\n  list-style-position: outside;\n  margin-top: 1em;\n  margin-bottom: 1em;\n  padding-left: 1em;\n}\n\n.prose li,\n.markdown li {\n  margin-bottom: 0.5em;\n  margin-top: 0.5em;\n}\n\n/* Ordered lists */\n.prose ol,\n.markdown ol {\n  list-style-type: decimal;\n}\n\n.prose ol>li,\n.markdown ol>li {\n  position: relative;\n  padding-left: 0.375em;\n}\n\n.prose ol>li::marker,\n.markdown ol>li::marker {\n  color: var(--tw-prose-counters);\n  font-weight: 400;\n}\n\n/* Nested ordered lists */\n.prose ol ol,\n.markdown ol ol {\n  list-style-type: lower-alpha;\n}\n\n.prose ol ol ol,\n.markdown ol ol ol {\n  list-style-type: lower-roman;\n}\n\n/* Unordered lists */\n.prose ul,\n.markdown ul {\n  list-style-type: disc;\n}\n\n.prose ul>li,\n.markdown ul>li {\n  padding-left: 0.375em;\n}\n\n.prose ul>li::marker,\n.markdown ul>li::marker {\n  color: var(--tw-prose-bullets);\n}\n\n/* Nested unordered lists */\n.prose ul ul,\n.markdown ul ul {\n  list-style-type: circle;\n}\n\n.prose ul ul ul,\n.markdown ul ul ul {\n  list-style-type: square;\n}\n\n/* Nested lists */\n.prose ol ol,\n.prose ul ul,\n.prose ul ol,\n.prose ol ul,\n.markdown ol ol,\n.markdown ul ul,\n.markdown ul ol,\n.markdown ol ul {\n  margin-top: 0.75em;\n  margin-bottom: 0.75em;\n}\n\n.prose>ul>li>*:last-child,\n.prose>ol>li>*:last-child,\n.markdown>ul>li>*:last-child,\n.markdown>ol>li>*:last-child {\n  margin-bottom: 1.25em;\n}\n\n/* Ensure proper marker color */\n.prose li::marker,\n.markdown li::marker {\n  color: currentColor;\n}\n\n/* Keyframes */\n\n@keyframes slideFromLeftToRightAndFade {\n  0% {\n    opacity: 0;\n    transform: translateX(-10%);\n  }\n\n  20% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n\n  70% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n\n  75% {\n    opacity: 1;\n    transform: translateX(10%);\n  }\n\n  80% {\n    opacity: 0;\n    transform: translateX(20%);\n  }\n\n  85%,\n  100% {\n    opacity: 0;\n    transform: translateX(30%);\n  }\n}\n\n.slide-from-left {\n  animation: slideFromLeftToRightAndFade 2s ease-in-out infinite;\n}\n\n@keyframes slideDownAndFadeOut {\n  0% {\n    opacity: 1;\n    transform: translateY(-10%);\n  }\n\n  20% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  70% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  75% {\n    opacity: 1;\n    transform: translateY(10%);\n  }\n\n  80% {\n    opacity: 0;\n    transform: translateY(20%);\n  }\n\n  85%,\n  100% {\n    opacity: 0;\n    transform: translateY(30%);\n  }\n}\n\n.slide-to-down {\n  animation: slideDownAndFadeOut 2s ease-in-out infinite;\n}\n\n@keyframes rotateAdjustAndBack {\n  0% {\n    transform: rotate(-33deg) scale(1);\n  }\n\n  5% {\n    transform: rotate(67deg) scale(1);\n  }\n\n  6%,\n  20% {\n    transform: rotate(57deg) scale(1);\n  }\n\n  22% {\n    transform: rotate(65deg) scale(1);\n  }\n\n  26%,\n  40% {\n    transform: rotate(-33deg) scale(1);\n  }\n\n  42% {\n    transform: rotate(-40deg) scale(1);\n  }\n\n  45%,\n  75% {\n    transform: rotate(30deg) scale(0.7);\n  }\n\n  77%,\n  85% {\n    transform: rotate(57deg) scale(1);\n  }\n\n  87% {\n    transform: rotate(65deg) scale(1);\n  }\n\n  90%,\n  100% {\n    transform: rotate(-33deg) scale(1);\n  }\n}\n\n.rotate-adjust-and-back {\n  animation: rotateAdjustAndBack 10s ease-in-out infinite;\n  transform-origin: 50% 50%;\n}\n\n@keyframes moonRise {\n  0% {\n    transform: translate(4px, 1px) rotate(-45deg);\n    opacity: 0;\n  }\n\n  10% {\n    transform: translate(4px, 1px) rotate(-45deg);\n    opacity: 0;\n  }\n\n  20% {\n    transform: translate(0, 0px) rotate(34deg);\n    opacity: 1;\n  }\n\n  50% {\n    transform: translate(0, 0px) rotate(34deg);\n    opacity: 1;\n  }\n\n  60%,\n  100% {\n    transform: translate(0, 0px) rotate(34deg);\n    opacity: 1;\n  }\n}\n\n.moon-rise {\n  animation: moonRise 4s ease-in-out infinite;\n  transform-origin: 45% 50%;\n}\n\n@keyframes moveUp {\n  0% {\n    transform: translateY(0.5px);\n    opacity: 0.8;\n  }\n\n  10% {\n    transform: translateY(0.5px);\n    opacity: 1;\n  }\n\n  20% {\n    transform: translateY(0px);\n    opacity: 1;\n  }\n\n  50% {\n    transform: translateY(0px);\n    opacity: 1;\n  }\n\n  60%,\n  100% {\n    transform: translateY(0px);\n    opacity: 1;\n  }\n}\n\n.move-up {\n  animation: moveUp 4s ease-in-out infinite;\n}\n\n.message-content {\n  font-size: var(--markdown-font-size, var(--font-size-base));\n  line-height: 1.75;\n}\n\n.message-content pre code {\n  font-size: calc(0.85 * var(--markdown-font-size, var(--font-size-base)));\n}\n\n.message-content pre {\n  font-size: var(--markdown-font-size, var(--font-size-base));\n}\n\n.code-analyze-block pre code,\n.code-analyze-block .overflow-y-auto code {\n  font-size: calc(0.85 * var(--markdown-font-size, var(--font-size-base)));\n}\n\n.code-analyze-block pre,\n.code-analyze-block .overflow-y-auto {\n  font-size: var(--markdown-font-size, var(--font-size-base));\n}\n\n.progress-text-wrapper {\n  font-size: var(--markdown-font-size, var(--font-size-base));\n  line-height: calc(1.25 * var(--markdown-font-size, var(--font-size-base)));\n}\n\n.progress-text-content {\n  font-size: inherit;\n  line-height: inherit;\n}\n\n.progress-text-wrapper button {\n  font-size: inherit;\n  line-height: inherit;\n}\n\n.tooltip {\n  z-index: 50;\n  cursor: pointer;\n  border-radius: 0.275rem;\n  background-color: rgba(0, 0, 0, 0.8);\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  color: white;\n  box-shadow: 0 2px 4px 0 rgb(0 0 0 / 0.25);\n}\n\n.tooltip:where(.dark, .dark *) {\n  background-color: var(--surface-primary);\n  color: white;\n  box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.35);\n}\n\n:focus {\n  outline: none;\n}\n\n.popover-ui {\n  z-index: 1000;\n  display: flex;\n  max-height: min(var(--popover-available-height, 1700px), 1700px);\n  flex-direction: column;\n  overflow: auto;\n  overscroll-behavior: contain;\n  border-radius: 1rem;\n  border-width: 1px;\n  border-style: solid;\n  border-color: var(--border-light);\n  background-color: hsl(var(--background));\n  padding: 0.5rem;\n  color: var(--text-primary);\n  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n  transform-origin: top;\n  opacity: 0;\n  transition-property: opacity, scale, translate;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n  scale: 0.95;\n  translate: 0 -0.5rem;\n  margin-top: 4px;\n  margin-right: -2px;\n}\n\n.popover-ui:focus-visible,\n.popover-ui[data-focus-visible] {\n  outline: var(--bg-surface-hover);\n  outline-offset: -1px;\n}\n\n.popover-ui:where(.dark, .dark *) {\n  background-color: hsl(var(--secondary));\n  color: var(--text-secondary);\n  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.25), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.select-item {\n  display: flex;\n  cursor: pointer;\n  scroll-margin: 0.5rem;\n  align-items: center;\n  gap: 0.5rem;\n  border-radius: 0.5rem;\n  padding: 0.5rem;\n  outline: none !important;\n}\n\n.select-item[aria-disabled='true'] {\n  opacity: 0.5;\n}\n\n.select-item[data-active-item] {\n  background-color: var(--surface-hover);\n  color: var(--text-primary);\n}\n\n.popover-ui[data-enter] {\n  opacity: 1;\n  scale: 1;\n  translate: 0;\n}\n\n/** Note: ensure KaTeX can spread across visible space */\n.message-content pre:has(> span.katex) {\n  overflow: visible !important;\n  height: auto !important;\n  max-height: none !important;\n}\n\n/** AnimatedSearchInput style */\n\n@keyframes gradient-x {\n  0% {\n    background-position: 0% 50%;\n  }\n\n  50% {\n    background-position: 100% 50%;\n  }\n\n  100% {\n    background-position: 0% 50%;\n  }\n}\n\n.animate-gradient-x {\n  background-size: 200% 200%;\n  animation: gradient-x 15s ease infinite;\n}\n\n.animate-pulse-subtle {\n  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n.animate-pulse-slow {\n  animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n    transform: translateY(8px);\n  }\n\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n.animate-fadeIn {\n  animation: fadeIn 0.5s ease-out forwards;\n}\n\n.scale-98 {\n  transform: scale(0.98);\n}\n\n.linsight-card {\n  border: 0.5px solid #b3b7c438;\n  background: #FFFFFF;\n  box-shadow: 0px 12px 24px 0px #001E5A1A;\n  border-radius: 24px;\n  padding: 20px 24px;\n}\n\n.lingsi-text {\n  background: linear-gradient(90deg, #143BFF 0%, #58A6FF 50.48%, #143BFF 100%);\n  -webkit-background-clip: text;\n  background-clip: text;\n  color: transparent;\n  display: inline-block;\n}\n\n.lingsi-border-box {\n  position: relative;\n  width: 200px;\n  height: 108px;\n  border-radius: 10px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  z-index: 1;\n  /* 防止内容溢出被裁剪 */\n  overflow: hidden;\n}\n\n.lingsi-border-box::before {\n  content: '';\n  position: absolute;\n  top: -65px;\n  /* 控制边框厚度 */\n  left: -15px;\n  right: -15px;\n  bottom: -65px;\n  background: conic-gradient(from 0deg at 50% 50%,\n      #0066FF,\n      #ffffff);\n  border-radius: 10px;\n  /* 比内容层稍大 */\n  z-index: -1;\n  animation: rotate-border 3s linear infinite;\n}\n\n.linsight-vditor .vditor-toolbar {\n  display: none;\n}\n\n.linsight-vditor table td,\n.vditor-reset table th {\n  word-wrap: break-word !important;\n  white-space: normal !important;\n  font-size: 12px;\n  padding: 2px 4px !important;\n  word-break: break-all !important;\n}\n\n.linsight-vditor .vditor-reset h1,\n.linsight-vditor .vditor-reset h2 {\n  margin-top: 8px;\n  border: none;\n}\n\n.vditor-reset li,\n.vditor-reset li+li {\n  margin-top: 0.5em;\n}\n\n.vditor-reset hr {\n  border-width: 1px;\n}\n\n.linsight-vditor .vditor-reset {\n  font-size: 14px;\n  padding: 0 20px 160px 14px !important;\n  scrollbar-color: transparent transparent;\n}\n\n.linsight-vditor .vditor-reset:hover {\n  scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n}\n\n.linsight-vditor .vditor-reset .vditor-wysiwyg__preview code.hljs {\n  /* display: none; */\n  color: #333;\n}\n\n.linsight-vditor .vditor-content {\n  min-height: 20px;\n}\n\n.linsight-vditor .vditor-content p {\n  margin-bottom: 6px;\n  color: #343538;\n}\n\n.linsight-vditor pre.vditor-reset:focus {\n  background-color: transparent !important;\n}\n\n.linsight-vditor .vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\n  opacity: 0.9;\n}\n\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h1:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h2:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h3:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h4:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h5:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h6:before,\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n.vditor-wysiwyg .vditor-toc:before {\n  margin-left: -20px;\n  padding-right: 0;\n  font-size: 12px;\n  position: relative;\n  left: 6px;\n}\n\n.linsi-span {\n  background: #E9F1FF;\n  color: #2A3F73;\n  font-size: 14px;\n  padding: 1px 8px;\n  border-radius: 4px;\n}\n\n.linsi-error {\n  background: #ffece9;\n  color: #a13434;\n  font-size: 14px;\n  padding: 1px 8px;\n  border-radius: 4px;\n}\n\n/* hover展示滚动条 */\n.scroll-hover {\n  overflow: auto;\n  scrollbar-width: thin;\n  /* Firefox */\n  scrollbar-color: transparent transparent;\n  /* 滚动条滑块和轨道都透明 */\n}\n\n/* Webkit浏览器样式 */\n.scroll-hover::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n  background-color: transparent;\n}\n\n.scroll-hover::-webkit-scrollbar-thumb {\n  background: transparent;\n  border-radius: 4px;\n}\n\n/* 悬停时显示滚动条 */\n.scroll-hover:hover::-webkit-scrollbar-thumb {\n  background: rgba(0, 0, 0, 0.1);\n}\n\n.scroll-hover:hover {\n  scrollbar-color: rgba(0, 0, 0, 0.1) transparent;\n  /* Firefox悬停样式 */\n}\n\n.scrollbar-hide {\n  scrollbar-width: none;\n  /* Firefox */\n  -ms-overflow-style: none;\n  /* IE and Edge */\n}\n\n@keyframes rotate-border {\n  from {\n    transform: rotate(0deg);\n  }\n\n  to {\n    transform: rotate(-360deg);\n  }\n}\n\n@keyframes loadingDots {\n\n  0%,\n  80%,\n  100% {\n    opacity: 1;\n    background-color: rgb(0, 0, 0);\n  }\n\n  40% {\n    opacity: 0.3;\n    background-color: rgb(156, 163, 175);\n  }\n}\n\n\n/* 溯源 */\n.flag.active {\n  background: linear-gradient(to right, rgba(53, 126, 249, .60), transparent);\n}\n\n.flag:after {\n  content: \"\";\n  position: absolute;\n  width: 23px;\n  height: 2px;\n  right: -3px;\n  top: 7px;\n  background: rgba(53, 126, 249, .60);\n  transform: rotate(-50deg) translate(0, 0);\n}\n\n.flag::before {\n  content: \"\";\n  position: absolute;\n  width: 23px;\n  height: 2px;\n  right: -3px;\n  top: 25px;\n  background: rgba(53, 126, 249, .60);\n  transform: rotate(50deg) translate(0, 0);\n}"
  },
  {
    "path": "src/frontend/client/src/utils/artifacts.spec.ts",
    "content": "import { preprocessCodeArtifacts } from './artifacts';\n\ndescribe('preprocessCodeArtifacts', () => {\n  test('should return non-string inputs unchanged', () => {\n    expect(preprocessCodeArtifacts(123 as unknown as string)).toBe('');\n    expect(preprocessCodeArtifacts(null as unknown as string)).toBe('');\n    expect(preprocessCodeArtifacts(undefined)).toBe('');\n    expect(preprocessCodeArtifacts({} as unknown as string)).toEqual('');\n  });\n\n  test('should remove <thinking> tags and their content', () => {\n    const input = '<thinking>This should be removed</thinking>Some content';\n    const expected = 'Some content';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should remove unclosed <thinking> tags and their content', () => {\n    const input = '<thinking>This should be removed\\nSome content';\n    const expected = '';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should remove artifact headers up to and including empty code block', () => {\n    const input = ':::artifact{identifier=\"test\"}\\n```\\n```\\nSome content';\n    const expected = ':::artifact{identifier=\"test\"}\\n```\\n```\\nSome content';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should keep artifact headers when followed by empty code block and content', () => {\n    const input = ':::artifact{identifier=\"test\"}\\n```\\n```\\nSome content';\n    const expected = ':::artifact{identifier=\"test\"}\\n```\\n```\\nSome content';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should handle multiple artifact headers correctly', () => {\n    const input = ':::artifact{id=\"1\"}\\n```\\n```\\n:::artifact{id=\"2\"}\\n```\\ncode\\n```\\nContent';\n    const expected = ':::artifact{id=\"1\"}\\n```\\n```\\n:::artifact{id=\"2\"}\\n```\\ncode\\n```\\nContent';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should handle complex input with multiple patterns', () => {\n    const input = `\n  <thinking>Remove this</thinking>\n  Some text\n  :::artifact{id=\"1\"}\n  \\`\\`\\`\n  \\`\\`\\`\n  <thinking>And this</thinking>\n  :::artifact{id=\"2\"}\n  \\`\\`\\`\n  keep this code\n  \\`\\`\\`\n  More text\n      `;\n    const expected = `\n  \n  Some text\n  :::artifact{id=\"1\"}\n  \\`\\`\\`\n  \\`\\`\\`\n  \n  :::artifact{id=\"2\"}\n  \\`\\`\\`\n  keep this code\n  \\`\\`\\`\n  More text\n      `;\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should remove artifact headers without code blocks', () => {\n    const input = ':::artifact{identifier=\"test\"}\\nSome content without code block';\n    const expected = '';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should remove artifact headers up to incomplete code block', () => {\n    const input = ':::artifact{identifier=\"react-cal';\n    const expected = '';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should keep artifact headers when any character follows code block', () => {\n    const input = ':::artifact{identifier=\"react-calculator\"}\\n```t';\n    const expected = ':::artifact{identifier=\"react-calculator\"}\\n```t';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n\n  test('should keep artifact headers when whitespace follows code block', () => {\n    const input = ':::artifact{identifier=\"react-calculator\"}\\n``` ';\n    const expected = ':::artifact{identifier=\"react-calculator\"}\\n``` ';\n    expect(preprocessCodeArtifacts(input)).toBe(expected);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/utils/artifacts.ts",
    "content": "import dedent from 'dedent';\nimport { ArtifactModes, shadcnComponents } from '~/data-provider/data-provider/src';\nimport type {\n  SandpackProviderProps,\n  SandpackPredefinedTemplate,\n} from '@codesandbox/sandpack-react';\n\nexport const getArtifactsMode = ({\n  codeArtifacts,\n  includeShadcnui,\n  customPromptMode,\n}: {\n  codeArtifacts: boolean;\n  includeShadcnui: boolean;\n  customPromptMode: boolean;\n}): ArtifactModes | undefined => {\n  if (!codeArtifacts) {\n    return undefined;\n  } else if (customPromptMode) {\n    return ArtifactModes.CUSTOM;\n  } else if (includeShadcnui) {\n    return ArtifactModes.SHADCNUI;\n  }\n  return ArtifactModes.DEFAULT;\n};\n\nconst artifactFilename = {\n  'application/vnd.mermaid': 'App.tsx',\n  'application/vnd.react': 'App.tsx',\n  'text/html': 'index.html',\n  'application/vnd.code-html': 'index.html',\n  default: 'index.html',\n  // 'css': 'css',\n  // 'javascript': 'js',\n  // 'typescript': 'ts',\n  // 'jsx': 'jsx',\n  // 'tsx': 'tsx',\n};\n\nconst artifactTemplate: Record<\n  keyof typeof artifactFilename,\n  SandpackPredefinedTemplate | undefined\n> = {\n  'text/html': 'static',\n  'application/vnd.react': 'react-ts',\n  'application/vnd.mermaid': 'react-ts',\n  'application/vnd.code-html': 'static',\n  default: 'static',\n  // 'css': 'css',\n  // 'javascript': 'js',\n  // 'typescript': 'ts',\n  // 'jsx': 'jsx',\n  // 'tsx': 'tsx',\n};\n\nexport function getFileExtension(language?: string): string {\n  switch (language) {\n    case 'application/vnd.react':\n      return 'tsx';\n    case 'application/vnd.mermaid':\n      return 'mermaid';\n    case 'text/html':\n      return 'html';\n    // case 'jsx':\n    //   return 'jsx';\n    // case 'tsx':\n    //   return 'tsx';\n    // case 'html':\n    //   return 'html';\n    // case 'css':\n    //   return 'css';\n    default:\n      return 'txt';\n  }\n}\n\nexport function getKey(type: string, language?: string): string {\n  return `${type}${(language?.length ?? 0) > 0 ? `-${language}` : ''}`;\n}\n\nexport function getArtifactFilename(type: string, language?: string): string {\n  const key = getKey(type, language);\n  return artifactFilename[key] ?? artifactFilename.default;\n}\n\nexport function getTemplate(type: string, language?: string): SandpackPredefinedTemplate {\n  const key = getKey(type, language);\n  return artifactTemplate[key] ?? (artifactTemplate.default as SandpackPredefinedTemplate);\n}\n\nconst standardDependencies = {\n  three: '^0.167.1',\n  'lucide-react': '^0.394.0',\n  'react-router-dom': '^6.11.2',\n  'class-variance-authority': '^0.6.0',\n  clsx: '^1.2.1',\n  'date-fns': '^3.3.1',\n  'tailwind-merge': '^1.9.1',\n  'tailwindcss-animate': '^1.0.5',\n  recharts: '2.12.7',\n  '@radix-ui/react-accordion': '^1.1.2',\n  '@radix-ui/react-alert-dialog': '^1.0.2',\n  '@radix-ui/react-aspect-ratio': '^1.1.0',\n  '@radix-ui/react-avatar': '^1.1.0',\n  '@radix-ui/react-checkbox': '^1.0.3',\n  '@radix-ui/react-collapsible': '^1.0.3',\n  '@radix-ui/react-dialog': '^1.0.2',\n  '@radix-ui/react-dropdown-menu': '^2.1.1',\n  '@radix-ui/react-hover-card': '^1.0.5',\n  '@radix-ui/react-label': '^2.0.0',\n  '@radix-ui/react-menubar': '^1.1.1',\n  '@radix-ui/react-navigation-menu': '^1.2.0',\n  '@radix-ui/react-popover': '^1.0.7',\n  '@radix-ui/react-progress': '^1.1.0',\n  '@radix-ui/react-radio-group': '^1.1.3',\n  '@radix-ui/react-select': '^2.0.0',\n  '@radix-ui/react-separator': '^1.0.3',\n  '@radix-ui/react-slider': '^1.1.1',\n  '@radix-ui/react-switch': '^1.0.3',\n  '@radix-ui/react-tabs': '^1.0.3',\n  '@radix-ui/react-toast': '^1.1.5',\n  '@radix-ui/react-slot': '^1.1.0',\n  '@radix-ui/react-toggle': '^1.1.0',\n  '@radix-ui/react-toggle-group': '^1.1.0',\n  'embla-carousel-react': '^8.2.0',\n  'react-day-picker': '^9.0.8',\n  'dat.gui': '^0.7.9',\n  vaul: '^0.9.1',\n};\n\nconst mermaidDependencies = Object.assign(\n  {\n    mermaid: '^11.4.1',\n    'react-zoom-pan-pinch': '^3.6.1',\n  },\n  standardDependencies,\n);\n\nconst dependenciesMap: Record<keyof typeof artifactFilename, object> = {\n  'application/vnd.mermaid': mermaidDependencies,\n  'application/vnd.react': standardDependencies,\n  'text/html': standardDependencies,\n  'application/vnd.code-html': standardDependencies,\n  default: standardDependencies,\n};\n\nexport function getDependencies(type: string): Record<string, string> {\n  return dependenciesMap[type] ?? standardDependencies;\n}\n\nexport function getProps(type: string): Partial<SandpackProviderProps> {\n  return {\n    customSetup: {\n      dependencies: getDependencies(type),\n    },\n  };\n}\n\nexport const sharedOptions: SandpackProviderProps['options'] = {\n  externalResources: ['https://unpkg.com/@tailwindcss/ui/dist/tailwind-ui.min.css'],\n};\n\nexport const sharedFiles = {\n  '/lib/utils.ts': shadcnComponents.utils,\n  '/components/ui/accordion.tsx': shadcnComponents.accordian,\n  '/components/ui/alert-dialog.tsx': shadcnComponents.alertDialog,\n  '/components/ui/alert.tsx': shadcnComponents.alert,\n  '/components/ui/avatar.tsx': shadcnComponents.avatar,\n  '/components/ui/badge.tsx': shadcnComponents.badge,\n  '/components/ui/breadcrumb.tsx': shadcnComponents.breadcrumb,\n  '/components/ui/button.tsx': shadcnComponents.button,\n  '/components/ui/calendar.tsx': shadcnComponents.calendar,\n  '/components/ui/card.tsx': shadcnComponents.card,\n  '/components/ui/carousel.tsx': shadcnComponents.carousel,\n  '/components/ui/checkbox.tsx': shadcnComponents.checkbox,\n  '/components/ui/collapsible.tsx': shadcnComponents.collapsible,\n  '/components/ui/dialog.tsx': shadcnComponents.dialog,\n  '/components/ui/drawer.tsx': shadcnComponents.drawer,\n  '/components/ui/dropdown-menu.tsx': shadcnComponents.dropdownMenu,\n  '/components/ui/input.tsx': shadcnComponents.input,\n  '/components/ui/label.tsx': shadcnComponents.label,\n  '/components/ui/menubar.tsx': shadcnComponents.menuBar,\n  '/components/ui/navigation-menu.tsx': shadcnComponents.navigationMenu,\n  '/components/ui/pagination.tsx': shadcnComponents.pagination,\n  '/components/ui/popover.tsx': shadcnComponents.popover,\n  '/components/ui/progress.tsx': shadcnComponents.progress,\n  '/components/ui/radio-group.tsx': shadcnComponents.radioGroup,\n  '/components/ui/select.tsx': shadcnComponents.select,\n  '/components/ui/separator.tsx': shadcnComponents.separator,\n  '/components/ui/skeleton.tsx': shadcnComponents.skeleton,\n  '/components/ui/slider.tsx': shadcnComponents.slider,\n  '/components/ui/switch.tsx': shadcnComponents.switchComponent,\n  '/components/ui/table.tsx': shadcnComponents.table,\n  '/components/ui/tabs.tsx': shadcnComponents.tabs,\n  '/components/ui/textarea.tsx': shadcnComponents.textarea,\n  '/components/ui/toast.tsx': shadcnComponents.toast,\n  '/components/ui/toaster.tsx': shadcnComponents.toaster,\n  '/components/ui/toggle-group.tsx': shadcnComponents.toggleGroup,\n  '/components/ui/toggle.tsx': shadcnComponents.toggle,\n  '/components/ui/tooltip.tsx': shadcnComponents.tooltip,\n  '/components/ui/use-toast.tsx': shadcnComponents.useToast,\n  '/public/index.html': dedent`\n    <!DOCTYPE html>\n    <html lang=\"en\">\n      <head>\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <title>Document</title>\n        <script src=\"https://cdn.tailwindcss.com\"></script>\n      </head>\n      <body>\n        <div id=\"root\"></div>\n      </body>\n    </html>\n  `,\n};\n\nexport function preprocessCodeArtifacts(text?: string): string {\n  if (typeof text !== 'string') {\n    return '';\n  }\n\n  // Remove <thinking> tags and their content\n  text = text.replace(/<thinking>[\\s\\S]*?<\\/thinking>|<thinking>[\\s\\S]*/g, '');\n\n  // Process artifact headers\n  const regex = /(^|\\n)(:::artifact[\\s\\S]*?(?:```[\\s\\S]*?```|$))/g;\n  return text.replace(regex, (match, newline, artifactBlock) => {\n    if (artifactBlock.includes('```') === true) {\n      // Keep artifact headers with code blocks (empty or not)\n      return newline + artifactBlock;\n    }\n    // Remove artifact headers without code blocks, but keep the newline\n    return newline;\n  });\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/buildDefaultConvo.ts",
    "content": "import {\n  parseConvo,\n  EModelEndpoint,\n  isAssistantsEndpoint,\n  isAgentsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type { TConversation } from '~/data-provider/data-provider/src';\nimport { getLocalStorageItems } from './localStorage';\n\nconst buildDefaultConvo = ({\n  models,\n  conversation,\n  endpoint = null,\n  lastConversationSetup,\n}: {\n  models: string[];\n  conversation: TConversation;\n  endpoint?: EModelEndpoint | null;\n  lastConversationSetup: TConversation | null;\n}): TConversation => {\n  const { lastSelectedModel, lastSelectedTools } = getLocalStorageItems();\n  const endpointType = lastConversationSetup?.endpointType ?? conversation.endpointType;\n\n  if (!endpoint) {\n    return {\n      ...conversation,\n      endpointType,\n      endpoint,\n    };\n  }\n\n  const availableModels = models;\n  const model = lastConversationSetup?.model ?? lastSelectedModel?.[endpoint] ?? '';\n  const secondaryModel: string | null =\n    endpoint === EModelEndpoint.gptPlugins\n      ? (lastConversationSetup?.agentOptions?.model ?? lastSelectedModel?.secondaryModel ?? null)\n      : null;\n\n  let possibleModels: string[], secondaryModels: string[];\n\n  if (availableModels.includes(model)) {\n    possibleModels = [model, ...availableModels];\n  } else {\n    possibleModels = [...availableModels];\n  }\n\n  if (secondaryModel != null && secondaryModel !== '' && availableModels.includes(secondaryModel)) {\n    secondaryModels = [secondaryModel, ...availableModels];\n  } else {\n    secondaryModels = [...availableModels];\n  }\n\n  const convo = parseConvo({\n    endpoint,\n    endpointType,\n    conversation: lastConversationSetup,\n    possibleValues: {\n      models: possibleModels,\n      secondaryModels,\n    },\n  });\n\n  const defaultConvo = {\n    ...conversation,\n    ...convo,\n    endpointType,\n    endpoint,\n  };\n\n  // Ensures assistant_id is always defined\n  const assistantId = convo?.assistant_id ?? '';\n  const defaultAssistantId = lastConversationSetup?.assistant_id ?? '';\n  if (isAssistantsEndpoint(endpoint) && !defaultAssistantId && assistantId) {\n    defaultConvo.assistant_id = assistantId;\n  }\n\n  // Ensures agent_id is always defined\n  const agentId = convo?.agent_id ?? '';\n  const defaultAgentId = lastConversationSetup?.agent_id ?? '';\n  if (isAgentsEndpoint(endpoint) && !defaultAgentId && agentId) {\n    defaultConvo.agent_id = agentId;\n  }\n\n  defaultConvo.tools = lastConversationSetup?.tools ?? lastSelectedTools ?? defaultConvo.tools;\n\n  return defaultConvo;\n};\n\nexport default buildDefaultConvo;\n"
  },
  {
    "path": "src/frontend/client/src/utils/buildTree.ts",
    "content": "import { TFile, TMessage } from '~/data-provider/data-provider/src';\n\ntype ParentMessage = TMessage & { children: TMessage[]; depth: number };\nexport default function buildTree({\n  messages,\n  fileMap,\n}: {\n  messages: TMessage[] | null;\n  fileMap?: Record<string, TFile>;\n}) {\n  if (messages === null) {\n    return null;\n  }\n\n  const messageMap: Record<string, ParentMessage> = {};\n  const rootMessages: TMessage[] = [];\n  const childrenCount: Record<string, number> = {};\n\n  messages.forEach((message) => {\n    const parentId = message.parentMessageId ?? '';\n    childrenCount[parentId] = (childrenCount[parentId] || 0) + 1;\n\n    const extendedMessage: ParentMessage = {\n      ...message,\n      children: [],\n      depth: 0,\n      siblingIndex: childrenCount[parentId] - 1,\n    };\n\n    if (message.files && fileMap) {\n      extendedMessage.files = message.files.map((file) => fileMap[file.file_id ?? ''] ?? file);\n    }\n\n    messageMap[message.messageId] = extendedMessage;\n\n    const parentMessage = messageMap[parentId];\n    if (parentMessage) {\n      parentMessage.children.push(extendedMessage);\n      extendedMessage.depth = parentMessage.depth + 1;\n    } else {\n      rootMessages.push(extendedMessage);\n    }\n  });\n\n  return rootMessages;\n}\n\nconst even =\n  'w-full border-b border-black/10 dark:border-gray-800/50 text-gray-800 bg-white dark:text-gray-200 group dark:bg-gray-800 hover:bg-gray-200/25 hover:text-gray-700  dark:hover:bg-gray-800 dark:hover:text-gray-200';\nconst odd =\n  'w-full border-b border-black/10 bg-gray-50 dark:border-gray-800/50 text-gray-800 dark:text-gray-200 group bg-gray-200 dark:bg-gray-700 hover:bg-gray-200/40 hover:text-gray-700 dark:hover:bg-gray-800 dark:hover:text-gray-200';\n\nexport function groupIntoList({\n  messages,\n}: // fileMap,\n{\n  messages: TMessage[] | null;\n  // fileMap?: Record<string, TFile>;\n}) {\n  if (messages === null) {\n    return null;\n  }\n  return messages.map((m, idx) => ({ ...m, bg: idx % 2 === 0 ? even : odd }));\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/cleanupPreset.ts",
    "content": "import { parseConvo } from '~/data-provider/data-provider/src';\nimport type { TPreset } from '~/data-provider/data-provider/src';\n\ntype UIPreset = Partial<TPreset> & { presetOverride?: Partial<TPreset> };\ntype TCleanupPreset = {\n  preset?: UIPreset;\n};\n\nconst cleanupPreset = ({ preset: _preset }: TCleanupPreset): TPreset => {\n  const { endpoint, endpointType } = _preset ?? ({} as UIPreset);\n  if (endpoint == null || endpoint === '') {\n    console.error(`Unknown endpoint ${endpoint}`, _preset);\n    return {\n      endpoint: null,\n      presetId: _preset?.presetId ?? null,\n      title: _preset?.title ?? 'New Preset',\n    };\n  }\n\n  const { presetOverride = {}, ...rest } = _preset ?? {};\n  const preset = { ...rest, ...presetOverride };\n\n  /* @ts-ignore: endpoint can be a custom defined name */\n  const parsedPreset = parseConvo({ endpoint, endpointType, conversation: preset });\n\n  return {\n    presetId: _preset?.presetId ?? null,\n    ...parsedPreset,\n    endpoint,\n    endpointType,\n    title: _preset?.title ?? 'New Preset',\n  } as TPreset;\n};\n\nexport default cleanupPreset;\n"
  },
  {
    "path": "src/frontend/client/src/utils/cn.ts",
    "content": "import { twMerge } from 'tailwind-merge';\nimport { type ClassValue, clsx } from 'clsx';\n\n/**\n * Merges the tailwind clases (using twMerge). Conditionally removes false values\n * @param inputs The tailwind classes to merge\n * @returns className string to apply to an element or HOC\n */\nexport default function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/collection.ts",
    "content": "import { InfiniteData, QueryClient } from '@tanstack/react-query';\n\nexport const addData = <TCollection, TData>(\n  data: InfiniteData<TCollection>,\n  collectionName: string,\n  newData: TData,\n  findIndex: (page: TCollection) => number,\n) => {\n  const dataJson = JSON.parse(JSON.stringify(data)) as InfiniteData<TCollection>;\n  const { pageIndex, index } = findPage<TCollection>(data, findIndex);\n\n  if (pageIndex !== -1 && index !== -1) {\n    return updateData(data, collectionName, newData, findIndex);\n  }\n  dataJson.pages[0][collectionName].unshift({\n    ...newData,\n    updatedAt: new Date().toISOString(),\n  });\n\n  return dataJson;\n};\n\nexport const getRecordByProperty = <TCollection, TData>(\n  data: InfiniteData<TCollection>,\n  collectionName: string,\n  findProperty: (item: TData) => boolean,\n): TData | undefined => {\n  // Find the page and the index of the record in that page\n  const { pageIndex, index } = findPage<TCollection>(data, (page) =>\n    page[collectionName].findIndex(findProperty),\n  );\n\n  // If found, return the record\n  if (pageIndex !== -1 && index !== -1) {\n    return data.pages[pageIndex][collectionName][index];\n  }\n\n  // Return undefined if the record is not found\n  return undefined;\n};\n\nexport function findPage<TData>(data: InfiniteData<TData>, findIndex: (page: TData) => number) {\n  for (let pageIndex = 0; pageIndex < data.pages.length; pageIndex++) {\n    const page = data.pages[pageIndex];\n    const index = findIndex(page);\n    if (index !== -1) {\n      return { pageIndex, index };\n    }\n  }\n  return { pageIndex: -1, index: -1 }; // Not found\n}\n\nexport const updateData = <TCollection, TData>(\n  data: InfiniteData<TCollection>,\n  collectionName: string,\n  updatedData: TData,\n  findIndex: (page: TCollection) => number,\n) => {\n  const newData = JSON.parse(JSON.stringify(data)) as InfiniteData<TCollection>;\n  const { pageIndex, index } = findPage<TCollection>(data, findIndex);\n\n  if (pageIndex !== -1 && index !== -1) {\n    // Remove the data from its current position\n    newData.pages[pageIndex][collectionName].splice(index, 1);\n    // Add the updated data to the top of the first page\n    newData.pages[0][collectionName].unshift({\n      ...updatedData,\n      updatedAt: new Date().toISOString(),\n    });\n  }\n\n  return newData;\n};\n\nexport const deleteData = <TCollection, TData>(\n  data: TData,\n  collectionName: string,\n  findIndex: (page: TCollection) => number,\n): TData => {\n  const newData = JSON.parse(JSON.stringify(data));\n  const { pageIndex, index } = findPage<TCollection>(newData, findIndex);\n\n  if (pageIndex !== -1 && index !== -1) {\n    // Delete the data from its current page\n    newData.pages[pageIndex][collectionName].splice(index, 1);\n  }\n  return newData;\n};\n\n/**\n * Normalize the data so that the number of data on each page is within pageSize\n */\nexport const normalizeData = <TCollection, TData>(\n  data: InfiniteData<TCollection>,\n  collectionName: string,\n  pageSize: number,\n  uniqueProperty?: keyof TData,\n): InfiniteData<TCollection> => {\n  const infiniteData = JSON.parse(JSON.stringify(data)) as InfiniteData<TCollection>;\n  const pageCount = infiniteData.pages.length;\n  if (pageCount === 0) {\n    return infiniteData;\n  }\n\n  const pageParams = infiniteData.pageParams;\n\n  // Combine all conversations of all pages into one array\n  let collection = infiniteData.pages.flatMap((page) => page[collectionName]);\n\n  if (collection.length === 0) {\n    return infiniteData;\n  }\n\n  if (uniqueProperty) {\n    const seen = new Set<TData>();\n    collection = collection.filter((item) => {\n      const value = item[uniqueProperty];\n      if (seen.has(value)) {\n        return false;\n      }\n      seen.add(value);\n      return true;\n    });\n  }\n\n  // Create the restructured pages\n  const restructuredPages = Array.from({ length: pageCount }, (_, i) => ({\n    ...infiniteData.pages[i],\n    [collectionName]: collection.slice(i * pageSize, (i + 1) * pageSize),\n  })).filter((page) => page[collectionName].length > 0); // Remove empty pages\n\n  return {\n    pageParams: pageParams.slice(0, restructuredPages.length),\n    pages: restructuredPages,\n  };\n};\n\nexport const updateFields = <TCollection, TData>(\n  data: InfiniteData<TCollection>,\n  updatedItem: Partial<TData>,\n  collectionName: string,\n  identifierField: keyof TData,\n  callback?: (newItem: TData) => void,\n): InfiniteData<TCollection> => {\n  const newData = JSON.parse(JSON.stringify(data)) as InfiniteData<TCollection>;\n  const { pageIndex, index } = findPage<TCollection>(newData, (page) =>\n    page[collectionName].findIndex(\n      (item: TData) => item[identifierField] === updatedItem[identifierField],\n    ),\n  );\n\n  if (pageIndex !== -1 && index !== -1) {\n    const deleted = newData.pages[pageIndex][collectionName].splice(index, 1);\n    const oldItem = deleted[0];\n    const newItem = {\n      ...oldItem,\n      ...updatedItem,\n      updatedAt: new Date().toISOString(),\n    };\n    if (callback) {\n      callback(newItem);\n    }\n    newData.pages[0][collectionName].unshift(newItem);\n  }\n\n  return newData;\n};\n\ntype UpdateCacheListOptions<TData> = {\n  queryClient: QueryClient;\n  queryKey: unknown[];\n  searchProperty: keyof TData;\n  updateData: Partial<TData>;\n  searchValue: unknown;\n};\n\nexport function updateCacheList<TData>({\n  queryClient,\n  queryKey,\n  searchProperty,\n  updateData,\n  searchValue,\n}: UpdateCacheListOptions<TData>) {\n  queryClient.setQueryData<TData[]>(queryKey, (oldData) => {\n    if (!oldData) {\n      return oldData;\n    }\n\n    return oldData.map((item) =>\n      item[searchProperty] === searchValue ? { ...item, ...updateData } : item,\n    );\n  });\n}\n\nexport function addToCacheList<TData>(\n  queryClient: QueryClient,\n  queryKey: unknown[],\n  newItem: TData,\n) {\n  queryClient.setQueryData<TData[]>(queryKey, (oldData) => {\n    if (!oldData) {\n      return [newItem];\n    }\n    return [...oldData, newItem];\n  });\n}\n\nexport function removeFromCacheList<TData>(\n  queryClient: QueryClient,\n  queryKey: unknown[],\n  searchProperty: keyof TData,\n  searchValue: unknown,\n) {\n  queryClient.setQueryData<TData[]>(queryKey, (oldData) => {\n    if (!oldData) {\n      return oldData;\n    }\n    return oldData.filter((item) => item[searchProperty] !== searchValue);\n  });\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/conversationTags.spec.ts",
    "content": "import type { TConversationTagsResponse } from '~/data-provider/data-provider/src';\nimport { updateConversationTag } from './conversationTags';\n\ndescribe('ConversationTag Utilities', () => {\n  let conversations: TConversationTagsResponse;\n\n  beforeEach(() => {\n    conversations = [\n      {\n        tag: 'saved',\n        count: 1,\n        position: 0,\n        description: 'description1',\n        updatedAt: '2023-04-01T12:00:00Z',\n        createdAt: '2023-04-01T12:00:00Z',\n        user: 'user1',\n      },\n      {\n        tag: 'tag1',\n        count: 1,\n        position: 1,\n        description: 'description1',\n        updatedAt: '2023-04-01T12:00:00Z',\n        createdAt: '2023-04-01T12:00:00Z',\n        user: 'user1',\n      },\n      {\n        tag: 'tag2',\n        count: 20,\n        position: 2,\n        description: 'description2',\n        updatedAt: new Date().toISOString(),\n        createdAt: '2023-04-01T12:00:00Z',\n        user: 'user1',\n      },\n      {\n        tag: 'tag3',\n        count: 30,\n        position: 3,\n        description: 'description3',\n        updatedAt: new Date().toISOString(),\n        createdAt: new Date().toISOString(),\n        user: 'user1',\n      },\n      {\n        tag: 'tag4',\n        count: 40,\n        position: 4,\n        description: 'description4',\n        updatedAt: new Date().toISOString(),\n        createdAt: new Date().toISOString(),\n        user: 'user1',\n      },\n      {\n        tag: 'tag5',\n        count: 50,\n        position: 5,\n        description: 'description5',\n        updatedAt: new Date().toISOString(),\n        createdAt: new Date().toISOString(),\n        user: 'user1',\n      },\n    ];\n  });\n\n  describe('updateConversationTag', () => {\n    it('updates the first tag correctly', () => {\n      const updated = updateConversationTag(\n        conversations,\n        { tag: 'tag1-new', description: 'description1-new' },\n        {\n          ...conversations[1],\n          tag: 'tag1-new',\n          description: 'description1-new',\n        },\n        'tag1',\n      );\n\n      expect(updated[0].tag).toBe('saved');\n      expect(updated[0].position).toBe(0);\n      expect(updated[1].tag).toBe('tag1-new');\n      expect(updated[1].description).toBe('description1-new');\n      expect(updated[1].position).toBe(1);\n      expect(updated[2].tag).toBe('tag2');\n      expect(updated[2].position).toBe(2);\n      expect(updated[3].tag).toBe('tag3');\n      expect(updated[3].position).toBe(3);\n      expect(updated[4].tag).toBe('tag4');\n      expect(updated[4].position).toBe(4);\n      expect(updated[5].tag).toBe('tag5');\n      expect(updated[5].position).toBe(5);\n    });\n  });\n  it('updates the third tag correctly', () => {\n    const updated = updateConversationTag(\n      conversations,\n      { tag: 'tag3-new', description: 'description3-new' },\n      {\n        ...conversations[3],\n        tag: 'tag3-new',\n        description: 'description3-new',\n      },\n      'tag3',\n    );\n\n    expect(updated[0].tag).toBe('saved');\n    expect(updated[0].position).toBe(0);\n    expect(updated[1].tag).toBe('tag1');\n    expect(updated[1].position).toBe(1);\n    expect(updated[2].tag).toBe('tag2');\n    expect(updated[2].position).toBe(2);\n    expect(updated[3].tag).toBe('tag3-new');\n    expect(updated[3].description).toBe('description3-new');\n    expect(updated[3].position).toBe(3);\n    expect(updated[4].tag).toBe('tag4');\n    expect(updated[4].position).toBe(4);\n    expect(updated[5].tag).toBe('tag5');\n    expect(updated[5].position).toBe(5);\n  });\n\n  it('updates the order of other tags if the order of the tags is moving up', () => {\n    const updated = updateConversationTag(\n      conversations,\n      // move tag3 to the second position\n      { position: 2 },\n      {\n        ...conversations[3],\n        position: 2,\n      },\n      'tag3',\n    );\n\n    expect(updated[0].tag).toBe('saved');\n    expect(updated[0].position).toBe(0);\n    expect(updated[1].tag).toBe('tag1');\n    expect(updated[1].position).toBe(1);\n    expect(updated[2].tag).toBe('tag3');\n    expect(updated[2].position).toBe(2);\n    expect(updated[3].tag).toBe('tag2');\n    expect(updated[3].position).toBe(3);\n    expect(updated[4].tag).toBe('tag4');\n    expect(updated[4].position).toBe(4);\n    expect(updated[5].tag).toBe('tag5');\n    expect(updated[5].position).toBe(5);\n  });\n\n  it('updates the order of other tags if the order of the tags is moving down', () => {\n    const updated = updateConversationTag(\n      conversations,\n      // move tag3 to the last position\n      { position: 5 },\n      {\n        ...conversations[3],\n        position: 5,\n      },\n      'tag3',\n    );\n\n    expect(updated[0].tag).toBe('saved');\n    expect(updated[0].position).toBe(0);\n    expect(updated[1].tag).toBe('tag1');\n    expect(updated[1].position).toBe(1);\n    expect(updated[2].tag).toBe('tag2');\n    expect(updated[2].position).toBe(2);\n    expect(updated[3].tag).toBe('tag4');\n    expect(updated[3].position).toBe(3);\n    expect(updated[4].tag).toBe('tag5');\n    expect(updated[4].position).toBe(4);\n    expect(updated[5].tag).toBe('tag3');\n    expect(updated[5].position).toBe(5);\n  });\n\n  it('updates the order of other tags if new tag is added', () => {\n    const updated = updateConversationTag(\n      conversations,\n      { tag: 'newtag', description: 'newDescription' },\n      {\n        tag: 'newtag',\n        description: 'newDescription',\n        position: 1,\n        updatedAt: new Date().toISOString(),\n        createdAt: new Date().toISOString(),\n        user: 'user1',\n        count: 30,\n      },\n      // no tag tag specified\n    );\n\n    expect(updated[0].tag).toBe('saved');\n    expect(updated[0].position).toBe(0);\n    expect(updated[1].tag).toBe('newtag');\n    expect(updated[1].description).toBe('newDescription');\n    expect(updated[1].position).toBe(1);\n    expect(updated[2].tag).toBe('tag1');\n    expect(updated[2].position).toBe(2);\n    expect(updated[3].tag).toBe('tag2');\n    expect(updated[3].position).toBe(3);\n    expect(updated[4].tag).toBe('tag3');\n    expect(updated[4].position).toBe(4);\n    expect(updated[5].tag).toBe('tag4');\n    expect(updated[5].position).toBe(5);\n    expect(updated[6].tag).toBe('tag5');\n    expect(updated[6].position).toBe(6);\n  });\n\n  it('returns a new array for new tag if no tags exist', () => {\n    const updated = updateConversationTag(\n      [],\n      { tag: 'newtag', description: 'newDescription' },\n      {\n        tag: 'saved',\n        description: 'newDescription',\n        position: 0,\n        updatedAt: new Date().toISOString(),\n        createdAt: new Date().toISOString(),\n        user: 'user1',\n        count: 30,\n      },\n      // no tag tag specified\n    );\n    expect(updated.length).toBe(1);\n    expect(updated[0].tag).toBe('saved');\n    expect(updated[0].position).toBe(0);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/utils/conversationTags.ts",
    "content": "import {\n  TConversationTagRequest,\n  TConversationTagResponse,\n  TConversationTagsResponse,\n} from '~/data-provider/data-provider/src';\n\nexport const updateConversationTag = (\n  queryCache: TConversationTagsResponse,\n  request: TConversationTagRequest,\n  response: TConversationTagResponse,\n  tag?: string,\n): TConversationTagsResponse => {\n  if (queryCache.length === 0) {\n    return [response];\n  }\n  const oldData = queryCache.find((t) => t.tag === tag);\n  if (!oldData) {\n    // When a new tag is added, it is positioned at the top of the list.\n    return [queryCache[0], response, ...queryCache.slice(1)].map((t, index) => ({\n      ...t,\n      position: index,\n    }));\n  }\n\n  const oldPosition = oldData.position;\n  const newPosition = response.position;\n\n  // Remove the updated data from the array\n  const filteredData = queryCache.filter((t) => t.tag !== tag);\n\n  if (newPosition === undefined || oldPosition === newPosition) {\n    // If the position hasn't changed, just replace the updated tag\n    return queryCache.map((t) => (t.tag === tag ? response : t));\n  }\n\n  // If the position has changed, update the position of the tag\n  const newData = [\n    ...filteredData.slice(0, newPosition),\n    response,\n    ...filteredData.slice(newPosition),\n  ];\n\n  if (newPosition > oldPosition) {\n    // moving down\n    for (let i = oldPosition; i < newPosition; i++) {\n      newData[i].position = i;\n    }\n  } else {\n    // moving up\n    for (let i = newPosition + 1; i < newData.length; i++) {\n      newData[i].position = i;\n    }\n  }\n  return newData;\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/convos.fakeData.ts",
    "content": "// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { EModelEndpoint, ImageDetail } from '~/data-provider/data-provider/src';\nimport type { ConversationData } from '~/data-provider/data-provider/src';\n\nconst today = new Date();\ntoday.setDate(today.getDate() - 3);\nconst updatedAt = today.toISOString();\n\nexport const convoData: ConversationData = {\n  pages: [\n    {\n      conversations: [\n        {\n          conversationId: 'bf71b257-3625-440c-b6a6-03f6a3fd6a4d',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-02T15:28:47.123Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bd0a2f7cb605e374e93ea3',\n            '65bd0a2f7cb605e374e94028',\n            '65bec4af7cb605e3741e84d1',\n            '65bec4af7cb605e3741e86aa',\n          ],\n          model: 'gpt-3.5-turbo-0125',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'A Long Story',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '544f1c4f-030f-4ea2-997c-35923f5d8ee2',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T22:48:33.144Z',\n          endpoint: 'OpenRouter',\n          endpointType: EModelEndpoint.custom,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bec2c27cb605e3741896fd',\n            '65bec2c47cb605e374189c16',\n            '65bec2d97cb605e37418d7dc',\n            '65bec2e67cb605e374190490',\n            '65bec2e77cb605e3741907df',\n          ],\n          model: 'meta-llama/llama-2-13b-chat',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'How Are You Doing?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'e3f19866-190e-43ab-869f-10260f07530f',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T18:55:09.560Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65be8c0d7cb605e37473236c', '65be8c0d7cb605e374732475'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'A Long Story',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '4d569723-3aff-4f52-9bbf-e127783a06ac',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T16:37:37.600Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65be6bd17cb605e374127036',\n            '65be6bd17cb605e374127156',\n            '65be8c007cb605e37472f7a9',\n            '65be8c007cb605e37472f8b5',\n            '65be8c057cb605e374730c05',\n            '65be8c067cb605e374730dae',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Write Einstein\\'s Famous Equation in LaTeX',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '640db89d-459f-4411-a0b0-26cb1d53bf1a',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T16:36:11.010Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65be6b7a7cb605e374117519',\n            '65be6b7b7cb605e37411766c',\n            '65be6e1c7cb605e374195898',\n            '65be6e1d7cb605e374195985',\n            '65be6e767cb605e3741a5d94',\n            '65be6e767cb605e3741a5e8e',\n            '65be89ee7cb605e3746ccb52',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Fibonacci Solver in Python',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'a9b39a05-fdc0-47f4-bd3b-b0aca618f656',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:06:55.573Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bde6117cb605e37481d294',\n            '65bde6117cb605e37481d4eb',\n            '65be6e7b7cb605e3741a6dd4',\n            '65be6e7b7cb605e3741a6ebe',\n            '65be6fa97cb605e3741df0ed',\n            '65be6fa97cb605e3741df249',\n            '65be709a7cb605e37420ca1b',\n            '65be709a7cb605e37420cb24',\n            '65be71ba7cb605e374244131',\n            '65be71bb7cb605e37424423e',\n            '65be79017cb605e37439dddd',\n            '65be79027cb605e37439df49',\n            '65be82e57cb605e37457d6b5',\n            '65be84727cb605e3745c76ff',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'test',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '3ce779d7-8535-4a43-9b70-e0d3160f299e',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-02T16:41:24.324Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bd1b347cb605e3741e299d',\n            '65bd1b347cb605e3741e2ba6',\n            '65be82ed7cb605e37457f381',\n          ],\n          model: 'gpt-3.5-turbo-0125',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'c162f906-06fb-405a-b7e6-773a0fc5f8e9',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:01:57.968Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bdd6d77cb605e37454b66c',\n            '65bdd6d87cb605e37454b892',\n            '65bddca57cb605e37465ceea',\n            '65bddcab7cb605e37465de2b',\n            '65bddccb7cb605e374663d37',\n            '65bddccc7cb605e374663ea9',\n            '65bddce17cb605e374667f08',\n            '65bddce27cb605e374668096',\n            '65bdeb557cb605e37491787a',\n            '65bdeb567cb605e374917aa2',\n            '65be82dc7cb605e37457b70e',\n          ],\n          model: 'gpt-4-0125-preview',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'test',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '48bbc7d5-1815-4024-8ac6-6c9f59242426',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T18:15:36.759Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65be82c87cb605e3745777f6',\n            '65be82c97cb605e374577911',\n            '65be82d57cb605e37457a2fc',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '97d6e676-b05b-43f9-8f56-1c07e8a1eb4e',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:16:36.407Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bde8557cb605e37488abe2',\n            '65bde8567cb605e37488ad32',\n            '65be6eb97cb605e3741b267b',\n            '65be6eba7cb605e3741b2849',\n            '65be703c7cb605e3741fb06d',\n            '65be703d7cb605e3741fb182',\n            '65be710b7cb605e374221776',\n            '65be710b7cb605e37422193a',\n            '65be72137cb605e37425544c',\n            '65be72137cb605e37425556c',\n            '65be7e2c7cb605e3744975ee',\n            '65be7e6c7cb605e3744a3d29',\n            '65be81147cb605e374525ccb',\n            '65be826b7cb605e374565dcf',\n            '65be827e7cb605e37456986c',\n            '65be82967cb605e37456db94',\n            '65be82c07cb605e374575ef6',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'test',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '293f230b-ceaa-4802-9611-c4fe7e4b1fd6',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:20:58.933Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bde95c7cb605e3748ba84d',\n            '65bde95c7cb605e3748baa9d',\n            '65be6b3a7cb605e37410ab2d',\n            '65be6b3a7cb605e37410ac16',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello, How Can I Help You?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '279db3ad-2219-4229-b99a-e19a2b191dd7',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T16:32:22.480Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65be6a967cb605e3740ebd60', '65be6a967cb605e3740ebf38'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello there! How may I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '3e62a081-055c-4ee5-9e33-7ab8b3d367c9',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:26:10.988Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bdea947cb605e3748f4275', '65bdea947cb605e3748f43af'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How may I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'b97836fc-8566-48e2-a28d-99f99528ca20',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:18:01.245Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde8aa7cb605e37489a256', '65bde8ab7cb605e37489a3a1'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'aa52b79d-ebe7-49d1-9fee-5f5b89d56069',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:16:03.728Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde8357cb605e37488508e', '65bde8357cb605e37488520e'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How may I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'fe50b20f-8465-4866-b5ef-9bc519a00eef',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:13:10.682Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde7887cb605e3748644e0', '65bde7887cb605e37486463b'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '2fbb4a34-4d17-4e05-8c0a-949e78572aa3',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:10:42.904Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde6f47cb605e374848207', '65bde6f47cb605e3748483b5'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'c0d587d0-e881-42be-a2cf-5bf01198bdac',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:09:25.506Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde6a77cb605e3748393d7', '65bde6a77cb605e374839506'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'acd7fa14-4165-4fa1-b2a6-637041743a78',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:08:10.607Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde65c7cb605e37482b6f7', '65bde65c7cb605e37482b822'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '61ba520e-d53b-4816-b8cc-059d89f15ed4',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T07:07:49.166Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde6467cb605e374826fee', '65bde6477cb605e374827125'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'd4f599af-aeae-4a54-b34c-bd85ce8134af',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:59:49.834Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bde4677cb605e3747cd0ed', '65bde4677cb605e3747cd26d'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'e424c98c-8540-428a-ae43-dc314e15849d',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:40:18.167Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bddfd37cb605e3746f42c5', '65bddfd47cb605e3746f4471'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'edac9c4d-bb66-4550-acaf-98006b83db4d',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:35:35.937Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: ['65bddeb97cb605e3746bfb5e', '65bddeb97cb605e3746bfc8a'],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hello! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: 'dbeca051-8af8-42cb-a611-70f669c66502',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:00:31.691Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bdd6817cb605e37453b904',\n            '65bdd6817cb605e37453ba9b',\n            '65bddd7e7cb605e3746858ff',\n            '65bddd7f7cb605e374685ac6',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'test 2',\n          top_p: 1,\n          updatedAt,\n        },\n        {\n          conversationId: '4a69c491-5cfc-4a62-b7d3-6a54d890dfa8',\n          user: 'my-user-id',\n          chatGptLabel: null,\n          createdAt: '2024-02-03T06:14:02.394Z',\n          endpoint: EModelEndpoint.openAI,\n          frequency_penalty: 0,\n          imageDetail: ImageDetail.auto,\n          messages: [\n            '65bdd9ab7cb605e3745cf30b',\n            '65bdd9ac7cb605e3745cf3f6',\n            '65bddc417cb605e37464abc7',\n            '65bddc427cb605e37464ad09',\n            '65bddc4a7cb605e37464c7cc',\n            '65bddc767cb605e374654895',\n          ],\n          model: 'gpt-3.5-turbo-0301',\n          presence_penalty: 0,\n          promptPrefix: null,\n          resendFiles: false,\n          temperature: 1,\n          title: 'Hi there! How can I assist you today?',\n          top_p: 1,\n          updatedAt,\n        },\n      ],\n      pages: 49,\n      pageNumber: '1',\n      pageSize: 25,\n    },\n  ],\n  pageParams: [null],\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/convos.spec.ts",
    "content": "import { Constants } from '~/data-provider/data-provider/src';\nimport type { TConversation, ConversationData } from '~/data-provider/data-provider/src';\nimport {\n  dateKeys,\n  addConversation,\n  updateConvoFields,\n  updateConversation,\n  deleteConversation,\n  findPageForConversation,\n  groupConversationsByDate,\n} from './convos';\nimport { convoData } from './convos.fakeData';\nimport { normalizeData } from './collection';\n\njest.mock('date-fns', () => {\n  const actual = jest.requireActual('date-fns');\n  return {\n    ...actual,\n    startOfToday: jest.fn(() => new Date('2023-07-15T00:00:00Z')),\n  };\n});\n\ndescribe('Conversation Utilities', () => {\n  describe('groupConversationsByDate', () => {\n    it('groups conversations by date correctly', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-04-01T12:00:00Z' },\n        { conversationId: '2', updatedAt: new Date().toISOString() },\n        { conversationId: '3', updatedAt: new Date(Date.now() - 86400000).toISOString() }, // 86400 seconds ago = yesterday\n        { conversationId: '4', updatedAt: new Date(Date.now() - 86400000 * 2).toISOString() }, // 2 days ago (previous 7 days)\n        { conversationId: '5', updatedAt: new Date(Date.now() - 86400000 * 8).toISOString() }, // 8 days ago (previous 30 days)\n      ];\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n      expect(grouped[0][0]).toBe(dateKeys.today);\n      expect(grouped[0][1]).toHaveLength(1);\n      expect(grouped[1][0]).toBe(dateKeys.yesterday);\n      expect(grouped[1][1]).toHaveLength(1);\n      expect(grouped[2][0]).toBe(dateKeys.previous7Days);\n      expect(grouped[2][1]).toHaveLength(1);\n      expect(grouped[3][0]).toBe(dateKeys.previous30Days);\n      expect(grouped[3][1]).toHaveLength(1);\n      expect(grouped[4][0]).toBe(' 2023');\n      expect(grouped[4][1]).toHaveLength(1);\n    });\n\n    it('groups conversations correctly across multiple years', () => {\n      const fixedDate = new Date('2023-07-15T12:00:00Z');\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-07-15T10:00:00Z' }, // Today\n        { conversationId: '2', updatedAt: '2023-07-14T12:00:00Z' }, // Yesterday\n        { conversationId: '3', updatedAt: '2023-07-08T12:00:00Z' }, // This week\n        { conversationId: '4', updatedAt: '2023-07-01T12:00:00Z' }, // This month (within last 30 days)\n        { conversationId: '5', updatedAt: '2023-06-01T12:00:00Z' }, // Last month\n        { conversationId: '6', updatedAt: '2023-01-01T12:00:00Z' }, // This year, January\n        { conversationId: '7', updatedAt: '2022-12-01T12:00:00Z' }, // Last year, December\n        { conversationId: '8', updatedAt: '2022-06-01T12:00:00Z' }, // Last year, June\n        { conversationId: '9', updatedAt: '2021-12-01T12:00:00Z' }, // Two years ago\n        { conversationId: '10', updatedAt: '2020-06-01T12:00:00Z' }, // Three years ago\n      ];\n\n      // Mock Date.now\n      const originalDateNow = Date.now;\n      Date.now = jest.fn(() => fixedDate.getTime());\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      // Restore Date.now\n      Date.now = originalDateNow;\n\n      const expectedGroups = [\n        dateKeys.today,\n        dateKeys.yesterday,\n        dateKeys.previous7Days,\n        dateKeys.previous30Days,\n        dateKeys.june,\n        dateKeys.january,\n        ' 2022',\n        ' 2021',\n        ' 2020',\n      ];\n\n      expect(grouped.map(([key]) => key)).toEqual(expectedGroups);\n\n      // Helper function to safely get group length\n      const getGroupLength = (key: string) => grouped.find(([k]) => k === key)?.[1]?.length ?? 0;\n\n      // Check specific group contents\n      expect(getGroupLength(dateKeys.today)).toBe(1);\n      expect(getGroupLength(dateKeys.yesterday)).toBe(1);\n      expect(getGroupLength(dateKeys.previous7Days)).toBe(1);\n      expect(getGroupLength(dateKeys.previous30Days)).toBe(1);\n      expect(getGroupLength(dateKeys.june)).toBe(1);\n      expect(getGroupLength(dateKeys.january)).toBe(1);\n      expect(getGroupLength(' 2022')).toBe(2); // December and June 2022\n      expect(getGroupLength(' 2021')).toBe(1);\n      expect(getGroupLength(' 2020')).toBe(1);\n\n      // Check that all conversations are accounted for\n      const totalGroupedConversations = grouped.reduce(\n        (total, [, convos]) => total + convos.length,\n        0,\n      );\n      expect(totalGroupedConversations).toBe(conversations.length);\n    });\n\n    it('returns an empty array for no conversations', () => {\n      expect(groupConversationsByDate([])).toEqual([]);\n    });\n\n    it('skips conversations with duplicate conversationIds', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-12-01T12:00:00Z' }, // \" 2023\"\n        { conversationId: '2', updatedAt: '2023-11-25T12:00:00Z' }, // \" 2023\"\n        { conversationId: '1', updatedAt: '2023-11-20T12:00:00Z' }, // Should be skipped because of duplicate ID\n        { conversationId: '3', updatedAt: '2022-12-01T12:00:00Z' }, // \" 2022\"\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      expect(grouped).toEqual(\n        expect.arrayContaining([\n          expect.arrayContaining([' 2023', expect.arrayContaining(conversations.slice(0, 2))]),\n          expect.arrayContaining([' 2022', expect.arrayContaining([conversations[3]])]),\n        ]),\n      );\n\n      // No duplicate IDs are present\n      const allGroupedIds = grouped.flatMap(([, convs]) => convs.map((c) => c.conversationId));\n      const uniqueIds = [...new Set(allGroupedIds)];\n      expect(allGroupedIds.length).toBe(uniqueIds.length);\n    });\n\n    it('sorts conversations by month correctly', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-01-01T12:00:00Z' }, // January 2023\n        { conversationId: '2', updatedAt: '2023-12-01T12:00:00Z' }, // December 2023\n        { conversationId: '3', updatedAt: '2023-02-01T12:00:00Z' }, // February 2023\n        { conversationId: '4', updatedAt: '2023-11-01T12:00:00Z' }, // November 2023\n        { conversationId: '5', updatedAt: '2022-12-01T12:00:00Z' }, // December 2022\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      // Check if the years are in the correct order (most recent first)\n      expect(grouped.map(([key]) => key)).toEqual([' 2023', ' 2022']);\n\n      // Check if conversations within 2023 are sorted correctly by month\n      const conversationsIn2023 = grouped[0][1];\n      const monthsIn2023 = conversationsIn2023.map((c) => new Date(c.updatedAt).getMonth());\n      expect(monthsIn2023).toEqual([11, 10, 1, 0]); // December (11), November (10), February (1), January (0)\n\n      // Check if the conversation from 2022 is in its own group\n      expect(grouped[1][1].length).toBe(1);\n      expect(new Date(grouped[1][1][0].updatedAt).getFullYear()).toBe(2022);\n    });\n\n    it('handles conversations from multiple years correctly', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-01-01T12:00:00Z' }, // January 2023\n        { conversationId: '2', updatedAt: '2022-12-01T12:00:00Z' }, // December 2022\n        { conversationId: '3', updatedAt: '2021-06-01T12:00:00Z' }, // June 2021\n        { conversationId: '4', updatedAt: '2023-06-01T12:00:00Z' }, // June 2023\n        { conversationId: '5', updatedAt: '2021-12-01T12:00:00Z' }, // December 2021\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      expect(grouped.map(([key]) => key)).toEqual([' 2023', ' 2022', ' 2021']);\n      expect(grouped[0][1].map((c) => new Date(c.updatedAt).getMonth())).toEqual([5, 0]); // June, January\n      expect(grouped[1][1].map((c) => new Date(c.updatedAt).getMonth())).toEqual([11]); // December\n      expect(grouped[2][1].map((c) => new Date(c.updatedAt).getMonth())).toEqual([11, 5]); // December, June\n    });\n\n    it('handles conversations from the same month correctly', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-06-01T12:00:00Z' },\n        { conversationId: '2', updatedAt: '2023-06-15T12:00:00Z' },\n        { conversationId: '3', updatedAt: '2023-06-30T12:00:00Z' },\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      expect(grouped.length).toBe(1);\n      expect(grouped[0][0]).toBe(' 2023');\n      expect(grouped[0][1].map((c) => c.conversationId)).toEqual(['3', '2', '1']);\n    });\n\n    it('handles conversations from today, yesterday, and previous days correctly', () => {\n      const today = new Date();\n      const yesterday = new Date(today);\n      yesterday.setDate(yesterday.getDate() - 1);\n      const twoDaysAgo = new Date(today);\n      twoDaysAgo.setDate(twoDaysAgo.getDate() - 2);\n\n      const conversations = [\n        { conversationId: '1', updatedAt: today.toISOString() },\n        { conversationId: '2', updatedAt: yesterday.toISOString() },\n        { conversationId: '3', updatedAt: twoDaysAgo.toISOString() },\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      expect(grouped.map(([key]) => key)).toEqual([\n        dateKeys.today,\n        dateKeys.yesterday,\n        dateKeys.previous7Days,\n      ]);\n    });\n\n    it('handles conversations with null or undefined updatedAt correctly', () => {\n      const conversations = [\n        { conversationId: '1', updatedAt: '2023-06-01T12:00:00Z' },\n        { conversationId: '2', updatedAt: null },\n        { conversationId: '3', updatedAt: undefined },\n      ];\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      expect(grouped.length).toBe(2); // One group for 2023 and one for today (null/undefined dates)\n      expect(grouped[0][0]).toBe(dateKeys.today);\n      expect(grouped[0][1].length).toBe(2); // Two conversations with null/undefined dates\n      expect(grouped[1][0]).toBe(' 2023');\n      expect(grouped[1][1].length).toBe(1); // One conversation from 2023\n    });\n\n    it('handles an empty array of conversations', () => {\n      const grouped = groupConversationsByDate([]);\n\n      expect(grouped).toEqual([]);\n    });\n\n    it('correctly groups and sorts conversations for every month of the year', () => {\n      const months = [\n        'january',\n        'february',\n        'march',\n        'april',\n        'may',\n        'june',\n        'july',\n        'august',\n        'september',\n        'october',\n        'november',\n        'december',\n      ];\n\n      // Create conversations for each month in both 2023 and 2022\n      const conversations = months.flatMap((month, index) => [\n        {\n          conversationId: `2023-${month}`,\n          updatedAt: `2023-${String(index + 1).padStart(2, '0')}-15T12:00:00Z`,\n        },\n        {\n          conversationId: `2022-${month}`,\n          updatedAt: `2022-${String(index + 1).padStart(2, '0')}-15T12:00:00Z`,\n        },\n      ]);\n\n      const grouped = groupConversationsByDate(conversations as TConversation[]);\n\n      // Check that we have two year groups\n      expect(grouped.length).toBe(2);\n\n      // Check 2023 months\n      const group2023 = grouped.find(([key]) => key === ' 2023') ?? [];\n      expect(group2023).toBeDefined();\n      const grouped2023 = group2023[1];\n      expect(grouped2023?.length).toBe(12);\n      expect(grouped2023?.map((c) => new Date(c.updatedAt).getMonth())).toEqual([\n        11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,\n      ]);\n\n      // Check 2022 months\n      const group2022 = grouped.find(([key]) => key === ' 2022') ?? [];\n      expect(group2022).toBeDefined();\n      const grouped2022 = group2022[1];\n      expect(grouped2022?.length).toBe(12);\n      expect(grouped2022?.map((c) => new Date(c.updatedAt).getMonth())).toEqual([\n        11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,\n      ]);\n\n      // Check that all conversations are accounted for\n      const totalGroupedConversations =\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        grouped.reduce((total, [_, convos]) => total + convos.length, 0);\n      expect(totalGroupedConversations).toBe(conversations.length);\n\n      // Check that the years are in the correct order\n      const yearOrder = grouped.map(([key]) => key);\n      expect(yearOrder).toEqual([' 2023', ' 2022']);\n    });\n  });\n\n  describe('addConversation', () => {\n    it('adds a new conversation to the top of the list', () => {\n      const data = { pages: [{ conversations: [] }] };\n      const newConversation = {\n        conversationId: Constants.NEW_CONVO,\n        updatedAt: '2023-04-02T12:00:00Z',\n      };\n      const newData = addConversation(\n        data as unknown as ConversationData,\n        newConversation as TConversation,\n      );\n      expect(newData.pages[0].conversations).toHaveLength(1);\n      expect(newData.pages[0].conversations[0].conversationId).toBe(Constants.NEW_CONVO);\n    });\n  });\n\n  describe('updateConversation', () => {\n    it('updates an existing conversation and moves it to the top', () => {\n      const initialData = {\n        pages: [\n          {\n            conversations: [\n              { conversationId: '1', updatedAt: '2023-04-01T12:00:00Z' },\n              { conversationId: '2', updatedAt: '2023-04-01T13:00:00Z' },\n            ],\n          },\n        ],\n      };\n      const updatedConversation = { conversationId: '1', updatedAt: '2023-04-02T12:00:00Z' };\n      const newData = updateConversation(\n        initialData as unknown as ConversationData,\n        updatedConversation as TConversation,\n      );\n      expect(newData.pages[0].conversations).toHaveLength(2);\n      expect(newData.pages[0].conversations[0].conversationId).toBe('1');\n    });\n  });\n\n  describe('updateConvoFields', () => {\n    it('updates specific fields of a conversation', () => {\n      const initialData = {\n        pages: [\n          {\n            conversations: [\n              { conversationId: '1', title: 'Old Title', updatedAt: '2023-04-01T12:00:00Z' },\n            ],\n          },\n        ],\n      };\n      const updatedFields = { conversationId: '1', title: 'New Title' };\n      const newData = updateConvoFields(\n        initialData as ConversationData,\n        updatedFields as TConversation,\n      );\n      expect(newData.pages[0].conversations[0].title).toBe('New Title');\n    });\n  });\n\n  describe('deleteConversation', () => {\n    it('removes a conversation by id', () => {\n      const initialData = {\n        pages: [\n          {\n            conversations: [\n              { conversationId: '1', updatedAt: '2023-04-01T12:00:00Z' },\n              { conversationId: '2', updatedAt: '2023-04-01T13:00:00Z' },\n            ],\n          },\n        ],\n      };\n      const newData = deleteConversation(initialData as ConversationData, '1');\n      expect(newData.pages[0].conversations).toHaveLength(1);\n      expect(newData.pages[0].conversations[0].conversationId).not.toBe('1');\n    });\n  });\n\n  describe('findPageForConversation', () => {\n    it('finds the correct page and index for a given conversation', () => {\n      const data = {\n        pages: [\n          {\n            conversations: [\n              { conversationId: '1', updatedAt: '2023-04-01T12:00:00Z' },\n              { conversationId: '2', updatedAt: '2023-04-02T13:00:00Z' },\n            ],\n          },\n        ],\n      };\n      const { pageIndex, index } = findPageForConversation(data as ConversationData, {\n        conversationId: '2',\n      });\n      expect(pageIndex).toBe(0);\n      expect(index).toBe(1);\n    });\n  });\n});\n\ndescribe('Conversation Utilities with Fake Data', () => {\n  describe('groupConversationsByDate', () => {\n    it('correctly groups conversations from fake data by date', () => {\n      const { pages } = convoData;\n      const allConversations = pages.flatMap((p) => p.conversations);\n      const grouped = groupConversationsByDate(allConversations);\n\n      expect(grouped).toHaveLength(1);\n      expect(grouped[0][1]).toBeInstanceOf(Array);\n    });\n  });\n\n  describe('addConversation', () => {\n    it('adds a new conversation to the existing fake data', () => {\n      const newConversation = {\n        conversationId: Constants.NEW_CONVO,\n        updatedAt: new Date().toISOString(),\n      } as TConversation;\n      const initialLength = convoData.pages[0].conversations.length;\n      const newData = addConversation(convoData, newConversation);\n      expect(newData.pages[0].conversations.length).toBe(initialLength + 1);\n      expect(newData.pages[0].conversations[0].conversationId).toBe(Constants.NEW_CONVO);\n    });\n  });\n\n  describe('updateConversation', () => {\n    it('updates an existing conversation within fake data', () => {\n      const updatedConversation = {\n        ...convoData.pages[0].conversations[0],\n        title: 'Updated Title',\n      };\n      const newData = updateConversation(convoData, updatedConversation);\n      expect(newData.pages[0].conversations[0].title).toBe('Updated Title');\n    });\n  });\n\n  describe('updateConvoFields', () => {\n    it('updates specific fields of a conversation in fake data', () => {\n      const updatedFields = {\n        conversationId: convoData.pages[0].conversations[0].conversationId,\n        title: 'Partially Updated Title',\n      };\n      const newData = updateConvoFields(convoData, updatedFields as TConversation);\n      const updatedConversation = newData.pages[0].conversations.find(\n        (c) => c.conversationId === updatedFields.conversationId,\n      );\n      expect(updatedConversation?.title).toBe('Partially Updated Title');\n    });\n  });\n\n  describe('deleteConversation', () => {\n    it('removes a conversation by id from fake data', () => {\n      const conversationIdToDelete = convoData.pages[0].conversations[0].conversationId as string;\n      const newData = deleteConversation(convoData, conversationIdToDelete);\n      const deletedConvoExists = newData.pages[0].conversations.some(\n        (c) => c.conversationId === conversationIdToDelete,\n      );\n      expect(deletedConvoExists).toBe(false);\n    });\n  });\n\n  describe('findPageForConversation', () => {\n    it('finds the correct page and index for a given conversation in fake data', () => {\n      const targetConversation = convoData.pages[0].conversations[0];\n      const { pageIndex, index } = findPageForConversation(convoData, {\n        conversationId: targetConversation.conversationId as string,\n      });\n      expect(pageIndex).toBeGreaterThanOrEqual(0);\n      expect(index).toBeGreaterThanOrEqual(0);\n    });\n  });\n\n  describe('normalizeConversationData', () => {\n    it('normalizes the number of items on each page after data removal', () => {\n      // Create test data:\n      // Generates 15 conversation items, each with a unique conversationId and an updatedAt timestamp set to a different day.\n      // { conversationId: '1', updatedAt: new Date(Date.now() - 86400000 * i).toISOString() }\n      const conversations = Array.from({ length: 15 }, (_, i) => ({\n        conversationId: (i + 1).toString(),\n        updatedAt: new Date(Date.now() - 86400000 * i).toISOString(),\n      }));\n\n      // Paginate Data:\n      // Divides the 15 conversation items into pages, with each page containing up to 5 items (pageSize is set to 5). This results in 3 pages.\n      const pageSize = 5;\n      const totalPageNumber = Math.ceil(conversations.length / pageSize);\n\n      const paginatedData = Array.from({ length: totalPageNumber }, (_, index) => ({\n        conversations: conversations.slice(index * pageSize, (index + 1) * pageSize),\n        pages: totalPageNumber,\n        pageNumber: index + 1,\n        pageSize,\n      }));\n\n      const testData = { pages: paginatedData, pageParams: [null, 2, 3] };\n\n      // Removes one item from the first page, resulting in the first page having 4 items, while the second and third pages still have 5 items each.\n      testData.pages[0].conversations.splice(1, 1);\n      expect(testData.pages[0].conversations).toHaveLength(4);\n      expect(testData.pages[1].conversations).toHaveLength(5);\n      expect(testData.pages[2].conversations).toHaveLength(5);\n\n      // Normalize Data:\n      // Calls the normalizeData function to ensure that each page contains exactly 5 items, redistributing the items across the pages as needed.\n      const normalizedData = normalizeData(testData, 'conversations', pageSize);\n\n      // Verify Results:\n      // Asserts that the number of conversation data is 5 except for the last page,\n      // that the number of conversation data is 4 only for the last page,\n      // and that the conversation ids are in the expected order.\n      expect(normalizedData.pages[0].conversations).toHaveLength(5);\n      expect(normalizedData.pages[0].conversations[0].conversationId).toBe('1');\n      expect(normalizedData.pages[0].conversations[4].conversationId).toBe('6');\n\n      expect(normalizedData.pages[1].conversations).toHaveLength(5);\n      expect(normalizedData.pages[1].conversations[0].conversationId).toBe('7');\n      expect(normalizedData.pages[1].conversations[4].conversationId).toBe('11');\n\n      expect(normalizedData.pages[2].conversations).toHaveLength(4);\n      expect(normalizedData.pages[2].conversations[0].conversationId).toBe('12');\n      expect(normalizedData.pages[2].conversations[3].conversationId).toBe('15');\n    });\n\n    it('normalizes the number of items on each page after data addition', () => {\n      // Create test data:\n      // Generates 15 conversation items, each with a unique conversationId and an updatedAt timestamp set to a different day.\n      // { conversationId: '1', updatedAt: new Date(Date.now() - 86400000 * i).toISOString() }\n      const conversations = Array.from({ length: 15 }, (_, i) => ({\n        conversationId: (i + 1).toString(),\n        updatedAt: new Date(Date.now() - 86400000 * i).toISOString(),\n      }));\n\n      // Paginate Data:\n      // Divides the 15 conversation items into pages,\n      // with each page containing up to 5 items (pageSize is set to 5). This results in 3 pages.\n      const pageSize = 5;\n      const totalPageNumber = Math.ceil(conversations.length / pageSize);\n\n      const paginatedData = Array.from({ length: totalPageNumber }, (_, index) => ({\n        conversations: conversations.slice(index * pageSize, (index + 1) * pageSize),\n        pages: totalPageNumber,\n        pageNumber: index + 1,\n        pageSize,\n      }));\n\n      const testData = { pages: paginatedData, pageParams: [null, 2, 3] };\n\n      // Inserts a new conversation item at the beginning of the first page,\n      testData.pages[0].conversations.unshift({\n        conversationId: '16',\n        updatedAt: new Date().toISOString(),\n      });\n\n      // resulting in the first page having 6 items,\n      // while the second and third pages still have 5 items each.\n      expect(testData.pages[0].conversations).toHaveLength(6);\n      expect(testData.pages[1].conversations).toHaveLength(5);\n      expect(testData.pages[2].conversations).toHaveLength(5);\n      expect(testData.pages[2].conversations[4].conversationId).toBe('15');\n      expect(testData.pages).toHaveLength(3);\n\n      const normalizedData = normalizeData(testData, 'conversations', pageSize);\n\n      // Verify Results:\n      // Asserts that after normalization, each page contains the correct number of items (5 items per page).\n      expect(normalizedData.pages[0].conversations).toHaveLength(5);\n      expect(normalizedData.pages[1].conversations).toHaveLength(5);\n      expect(normalizedData.pages[2].conversations).toHaveLength(5);\n      expect(normalizedData.pages).toHaveLength(3);\n\n      // Checks that the items are in the expected order, ensuring that the conversationId values are correctly distributed across the pages.\n\n      expect(normalizedData.pages[0].conversations[0].conversationId).toBe('16');\n      expect(normalizedData.pages[0].conversations[4].conversationId).toBe('4');\n\n      expect(normalizedData.pages[1].conversations[0].conversationId).toBe('5');\n      expect(normalizedData.pages[1].conversations[4].conversationId).toBe('9');\n\n      expect(normalizedData.pages[2].conversations[0].conversationId).toBe('10');\n      expect(normalizedData.pages[2].conversations[4].conversationId).toBe('14');\n      expect(normalizedData.pageParams).toHaveLength(3);\n    });\n\n    it('returns empty data when there is no data', () => {\n      const normalizedData = normalizeData(\n        { pages: [{ conversations: [], pageNumber: 1, pageSize: 5, pages: 1 }], pageParams: [] },\n        'conversations',\n        5,\n      );\n\n      expect(normalizedData.pages[0].conversations).toHaveLength(0);\n    });\n\n    it('does not normalize data when not needed', () => {\n      const normalizedData = normalizeData(\n        { pages: [{ conversations: ['1'], pageNumber: 1, pageSize: 5, pages: 1 }], pageParams: [] },\n        'conversations',\n        5,\n      );\n\n      expect(normalizedData.pages[0].conversations).toHaveLength(1);\n    });\n\n    it('deletes pages that have no data as a result of normalization', () => {\n      const conversations = Array.from({ length: 15 }, (_, i) => ({\n        conversationId: (i + 1).toString(),\n        updatedAt: new Date(Date.now() - 86400000 * i).toISOString(),\n      }));\n\n      const pageSize = 5;\n      const totalPageNumber = Math.ceil(conversations.length / pageSize);\n\n      const paginatedData = Array.from({ length: totalPageNumber }, (_, index) => ({\n        conversations: conversations.slice(index * pageSize, (index + 1) * pageSize),\n        pages: totalPageNumber,\n        pageNumber: index + 1,\n        pageSize,\n      }));\n\n      const testData = { pages: paginatedData, pageParams: [null, 2, 3] };\n\n      // Removes all data from the last page, resulting in the last page having 0 items.\n      testData.pages[2].conversations = [];\n      expect(testData.pages[0].conversations).toHaveLength(5);\n      expect(testData.pages[1].conversations).toHaveLength(5);\n      expect(testData.pages[2].conversations).toHaveLength(0);\n      expect(testData.pageParams).toHaveLength(3);\n\n      const normalizedData = normalizeData(testData, 'conversations', pageSize);\n\n      // Verify Results:\n      // Asserts that the last page is removed after normalization, leaving only the first and second pages.\n      expect(normalizedData.pages).toHaveLength(2);\n      expect(normalizedData.pages[0].conversations).toHaveLength(5);\n      expect(normalizedData.pages[1].conversations).toHaveLength(5);\n      expect(normalizedData.pageParams).toHaveLength(2);\n    });\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/utils/convos.ts",
    "content": "import {\n  format,\n  isToday,\n  subDays,\n  getYear,\n  parseISO,\n  startOfDay,\n  startOfYear,\n  isWithinInterval,\n} from 'date-fns';\nimport { EModelEndpoint, LocalStorageKeys } from '~/data-provider/data-provider/src';\nimport type {\n  TConversation,\n  ConversationData,\n  GroupedConversations,\n  ConversationListResponse,\n} from '~/data-provider/data-provider/src';\n\nimport { addData, deleteData, updateData, findPage } from './collection';\nimport { InfiniteData } from '@tanstack/react-query';\n\nexport const dateKeys = {\n  today: 'com_ui_date_today',\n  yesterday: 'com_ui_date_yesterday',\n  previous7Days: 'com_ui_date_previous_7_days',\n  previous30Days: 'com_ui_date_previous_30_days',\n  january: 'com_ui_date_january',\n  february: 'com_ui_date_february',\n  march: 'com_ui_date_march',\n  april: 'com_ui_date_april',\n  may: 'com_ui_date_may',\n  june: 'com_ui_date_june',\n  july: 'com_ui_date_july',\n  august: 'com_ui_date_august',\n  september: 'com_ui_date_september',\n  october: 'com_ui_date_october',\n  november: 'com_ui_date_november',\n  december: 'com_ui_date_december',\n};\n\nconst getGroupName = (date: Date) => {\n  const now = new Date(Date.now());\n  if (isToday(date)) {\n    return dateKeys.today;\n  }\n  if (isWithinInterval(date, { start: startOfDay(subDays(now, 1)), end: now })) {\n    return dateKeys.yesterday;\n  }\n  if (isWithinInterval(date, { start: subDays(now, 7), end: now })) {\n    return dateKeys.previous7Days;\n  }\n  if (isWithinInterval(date, { start: subDays(now, 30), end: now })) {\n    return dateKeys.previous30Days;\n  }\n  if (isWithinInterval(date, { start: startOfYear(now), end: now })) {\n    const month = format(date, 'MMMM').toLowerCase();\n    return dateKeys[month];\n  }\n  return ' ' + getYear(date).toString();\n};\n\nconst monthOrderMap = new Map([\n  ['december', 11],\n  ['november', 10],\n  ['october', 9],\n  ['september', 8],\n  ['august', 7],\n  ['july', 6],\n  ['june', 5],\n  ['may', 4],\n  ['april', 3],\n  ['march', 2],\n  ['february', 1],\n  ['january', 0],\n]);\n\nconst dateKeysReverse = Object.fromEntries(\n  Object.entries(dateKeys).map(([key, value]) => [value, key]),\n);\n\nconst dateGroupsSet = new Set([\n  dateKeys.today,\n  dateKeys.yesterday,\n  dateKeys.previous7Days,\n  dateKeys.previous30Days,\n]);\n\nexport const groupConversationsByDate = (\n  conversations: Array<TConversation | null>,\n): GroupedConversations => {\n  if (!Array.isArray(conversations)) {\n    return [];\n  }\n\n  const seenConversationIds = new Set();\n  const groups = new Map();\n  const now = new Date(Date.now());\n\n  conversations.forEach((conversation) => {\n    if (!conversation || seenConversationIds.has(conversation.conversationId)) {\n      return;\n    }\n    seenConversationIds.add(conversation.conversationId);\n\n    let date: Date;\n    if (conversation.updatedAt) {\n      date = parseISO(conversation.updatedAt);\n    } else {\n      date = now;\n    }\n\n    const groupName = getGroupName(date);\n    if (!groups.has(groupName)) {\n      groups.set(groupName, []);\n    }\n    groups.get(groupName).push(conversation);\n  });\n\n  const sortedGroups = new Map();\n\n  // Add date groups first\n  dateGroupsSet.forEach((group) => {\n    if (groups.has(group)) {\n      sortedGroups.set(group, groups.get(group));\n    }\n  });\n\n  // Sort and add year/month groups\n  const yearMonthGroups = Array.from(groups.keys())\n    .filter((group) => !dateGroupsSet.has(group))\n    .sort((a, b) => {\n      const [yearA, yearB] = [parseInt(a.trim()), parseInt(b.trim())];\n      if (yearA !== yearB) {\n        return yearB - yearA;\n      }\n\n      const [monthA, monthB] = [dateKeysReverse[a], dateKeysReverse[b]];\n      const bOrder = monthOrderMap.get(monthB) ?? -1;\n      const aOrder = monthOrderMap.get(monthA) ?? -1;\n      return bOrder - aOrder;\n    });\n\n  yearMonthGroups.forEach((group) => {\n    sortedGroups.set(group, groups.get(group));\n  });\n\n  // Sort conversations within each group\n  sortedGroups.forEach((conversations) => {\n    conversations.sort(\n      (a: TConversation, b: TConversation) =>\n        new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime(),\n    );\n  });\n\n  return Array.from(sortedGroups, ([key, value]) => [key, value]);\n};\n\nexport const addConversation = (\n  data: InfiniteData<ConversationListResponse>,\n  newConversation: TConversation,\n): ConversationData => {\n  return addData<ConversationListResponse, TConversation>(\n    data,\n    'conversations',\n    newConversation,\n    (page) =>\n      page.conversations.findIndex((c) => c.conversationId === newConversation.conversationId),\n  );\n};\n\nexport function findPageForConversation(\n  data: ConversationData,\n  conversation: TConversation | { conversationId: string },\n) {\n  return findPage<ConversationListResponse>(data, (page) =>\n    page.conversations.findIndex((c) => c.conversationId === conversation.conversationId),\n  );\n}\n\nexport const updateConversation = (\n  data: InfiniteData<ConversationListResponse>,\n  newConversation: TConversation,\n): ConversationData => {\n  return updateData<ConversationListResponse, TConversation>(\n    data,\n    'conversations',\n    newConversation,\n    (page) =>\n      page.conversations.findIndex((c) => c.conversationId === newConversation.conversationId),\n  );\n};\n\nexport const updateConvoFields = (\n  data: ConversationData,\n  updatedConversation: Partial<TConversation> & Pick<TConversation, 'conversationId'>,\n  keepPosition = false,\n): ConversationData => {\n  const newData = JSON.parse(JSON.stringify(data));\n  const { pageIndex, index } = findPageForConversation(\n    newData,\n    updatedConversation as { conversationId: string },\n  );\n  if (pageIndex !== -1 && index !== -1) {\n    const oldConversation = newData.pages[pageIndex].conversations[index] as TConversation;\n\n    /**\n     * Do not change the position of the conversation if the tags are updated.\n     */\n    if (keepPosition) {\n      const updatedConvo = {\n        ...oldConversation,\n        ...updatedConversation,\n      };\n      newData.pages[pageIndex].conversations[index] = updatedConvo;\n    } else {\n      const updatedConvo = {\n        ...oldConversation,\n        ...updatedConversation,\n        updatedAt: new Date().toISOString(),\n      };\n      newData.pages[pageIndex].conversations.splice(index, 1);\n      newData.pages[0].conversations.unshift(updatedConvo);\n    }\n  }\n\n  return newData;\n};\n\nexport const deleteConversation = (\n  data: ConversationData,\n  conversationId: string,\n): ConversationData => {\n  return deleteData<ConversationListResponse, ConversationData>(data, 'conversations', (page) =>\n    page.conversations.findIndex((c) => c.conversationId === conversationId),\n  );\n};\n\nexport const getConversationById = (\n  data: ConversationData | undefined,\n  conversationId: string | null,\n): TConversation | undefined => {\n  if (!data || !(conversationId ?? '')) {\n    return undefined;\n  }\n\n  for (const page of data.pages) {\n    const conversation = page.conversations.find((c) => c.conversationId === conversationId);\n    if (conversation) {\n      return conversation;\n    }\n  }\n  return undefined;\n};\n\nexport function storeEndpointSettings(conversation: TConversation | null) {\n  if (!conversation) {\n    return;\n  }\n  const { endpoint, model, agentOptions } = conversation;\n\n  if (!endpoint) {\n    return;\n  }\n\n  const lastModel = JSON.parse(localStorage.getItem(LocalStorageKeys.LAST_MODEL) ?? '{}');\n  lastModel[endpoint] = model;\n\n  if (endpoint === EModelEndpoint.gptPlugins) {\n    lastModel.secondaryModel = agentOptions?.model ?? model ?? '';\n  }\n\n  localStorage.setItem(LocalStorageKeys.LAST_MODEL, JSON.stringify(lastModel));\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/endpoints.spec.ts",
    "content": "import { EModelEndpoint } from '~/data-provider/data-provider/src';\nimport type { TEndpointsConfig, TConfig } from '~/data-provider/data-provider/src';\nimport {\n  getEndpointField,\n  getAvailableEndpoints,\n  getEndpointsFilter,\n  mapEndpoints,\n} from './endpoints';\n\nconst mockEndpointsConfig: TEndpointsConfig = {\n  [EModelEndpoint.openAI]: { type: undefined, iconURL: 'openAI_icon.png', order: 0 },\n  [EModelEndpoint.google]: { type: undefined, iconURL: 'google_icon.png', order: 1 },\n  Mistral: { type: EModelEndpoint.custom, iconURL: 'custom_icon.png', order: 2 },\n};\n\ndescribe('getEndpointField', () => {\n  it('returns undefined if endpointsConfig is undefined', () => {\n    expect(getEndpointField(undefined, EModelEndpoint.openAI, 'type')).toBeUndefined();\n  });\n\n  it('returns undefined if endpoint is null', () => {\n    expect(getEndpointField(mockEndpointsConfig, null, 'type')).toBeUndefined();\n  });\n\n  it('returns undefined if endpoint is undefined', () => {\n    expect(getEndpointField(mockEndpointsConfig, undefined, 'type')).toBeUndefined();\n  });\n\n  it('returns the correct value for a valid endpoint and property', () => {\n    expect(getEndpointField(mockEndpointsConfig, EModelEndpoint.openAI, 'order')).toEqual(0);\n    expect(getEndpointField(mockEndpointsConfig, EModelEndpoint.google, 'iconURL')).toEqual(\n      'google_icon.png',\n    );\n  });\n\n  it('returns undefined for a valid endpoint but an invalid property', () => {\n    /* Type assertion as 'nonexistentProperty' is intentionally not a valid property of TConfig */\n    expect(\n      getEndpointField(\n        mockEndpointsConfig,\n        EModelEndpoint.openAI,\n        'nonexistentProperty' as keyof TConfig,\n      ),\n    ).toBeUndefined();\n  });\n\n  it('returns the correct value for a non-enum endpoint and valid property', () => {\n    expect(getEndpointField(mockEndpointsConfig, 'Mistral', 'type')).toEqual(EModelEndpoint.custom);\n  });\n\n  it('returns undefined for a non-enum endpoint with an invalid property', () => {\n    expect(\n      getEndpointField(mockEndpointsConfig, 'Mistral', 'nonexistentProperty' as keyof TConfig),\n    ).toBeUndefined();\n  });\n});\n\ndescribe('getEndpointsFilter', () => {\n  it('returns an empty object if endpointsConfig is undefined', () => {\n    expect(getEndpointsFilter(undefined)).toEqual({});\n  });\n\n  it('returns a filter object based on endpointsConfig', () => {\n    const expectedFilter = {\n      [EModelEndpoint.openAI]: true,\n      [EModelEndpoint.google]: true,\n      Mistral: true,\n    };\n    expect(getEndpointsFilter(mockEndpointsConfig)).toEqual(expectedFilter);\n  });\n});\n\ndescribe('getAvailableEndpoints', () => {\n  it('returns available endpoints based on filter and config', () => {\n    const filter = {\n      [EModelEndpoint.openAI]: true,\n      [EModelEndpoint.google]: false,\n      Mistral: true,\n    };\n    const expectedEndpoints = [EModelEndpoint.openAI, 'Mistral'];\n    expect(getAvailableEndpoints(filter, mockEndpointsConfig)).toEqual(expectedEndpoints);\n  });\n});\n\ndescribe('mapEndpoints', () => {\n  it('returns sorted available endpoints', () => {\n    const expectedOrder = [EModelEndpoint.openAI, EModelEndpoint.google, 'Mistral'];\n    expect(mapEndpoints(mockEndpointsConfig)).toEqual(expectedOrder);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/utils/endpoints.ts",
    "content": "import {\n  EModelEndpoint,\n  defaultEndpoints,\n  modularEndpoints,\n  LocalStorageKeys,\n  isAgentsEndpoint,\n  isAssistantsEndpoint,\n} from '~/data-provider/data-provider/src';\nimport type * as t from '~/data-provider/data-provider/src';\nimport type { LocalizeFunction, IconsRecord } from '~/common';\n\nexport const getEntityName = ({\n  name = '',\n  localize,\n  isAgent,\n}: {\n  name?: string;\n  isAgent?: boolean;\n  localize: LocalizeFunction;\n}) => {\n  if (name && name.length > 0) {\n    return name;\n  } else {\n    return isAgent === true ? localize('com_ui_agent') : localize('com_ui_assistant');\n  }\n};\n\nexport const getEndpointsFilter = (endpointsConfig: t.TEndpointsConfig) => {\n  const filter: Record<string, boolean> = {};\n  if (!endpointsConfig) {\n    return filter;\n  }\n  for (const key of Object.keys(endpointsConfig)) {\n    filter[key] = !!endpointsConfig[key];\n  }\n  return filter;\n};\n\nexport const getAvailableEndpoints = (\n  filter: Record<string, boolean>,\n  endpointsConfig: t.TEndpointsConfig,\n) => {\n  const defaultSet = new Set(defaultEndpoints);\n  const availableEndpoints: EModelEndpoint[] = [];\n\n  for (const endpoint in endpointsConfig) {\n    // Check if endpoint is in the filter or its type is in defaultEndpoints\n    if (\n      filter[endpoint] ||\n      (endpointsConfig[endpoint]?.type &&\n        defaultSet.has(endpointsConfig[endpoint]?.type as EModelEndpoint))\n    ) {\n      availableEndpoints.push(endpoint as EModelEndpoint);\n    }\n  }\n\n  return availableEndpoints;\n};\n\n/** Get the specified field from the endpoint config */\nexport function getEndpointField<K extends keyof t.TConfig>(\n  endpointsConfig: t.TEndpointsConfig | undefined,\n  endpoint: EModelEndpoint | string | null | undefined,\n  property: K,\n): t.TConfig[K] | undefined {\n  if (!endpointsConfig || endpoint === null || endpoint === undefined) {\n    return undefined;\n  }\n\n  const config = endpointsConfig[endpoint];\n  if (!config) {\n    return undefined;\n  }\n\n  return config[property];\n}\n\nexport function mapEndpoints(endpointsConfig: t.TEndpointsConfig) {\n  const filter = getEndpointsFilter(endpointsConfig);\n  return getAvailableEndpoints(filter, endpointsConfig).sort(\n    (a, b) => (endpointsConfig?.[a]?.order ?? 0) - (endpointsConfig?.[b]?.order ?? 0),\n  );\n}\n\nconst firstLocalConvoKey = LocalStorageKeys.LAST_CONVO_SETUP + '_0';\n\n/**\n * Ensures the last selected model stays up to date, as conversation may\n * update without updating last convo setup when same endpoint */\nexport function updateLastSelectedModel({\n  endpoint,\n  model = '',\n}: {\n  endpoint: string;\n  model?: string;\n}) {\n  if (!model) {\n    return;\n  }\n  /* Note: an empty string value is possible */\n  const lastConversationSetup = JSON.parse(\n    (localStorage.getItem(firstLocalConvoKey) ?? '{}') || '{}',\n  );\n\n  if (lastConversationSetup.endpoint === endpoint) {\n    lastConversationSetup.model = model;\n    localStorage.setItem(firstLocalConvoKey, JSON.stringify(lastConversationSetup));\n  }\n\n  const lastSelectedModels = JSON.parse(\n    (localStorage.getItem(LocalStorageKeys.LAST_MODEL) ?? '{}') || '{}',\n  );\n  lastSelectedModels[endpoint] = model;\n  localStorage.setItem(LocalStorageKeys.LAST_MODEL, JSON.stringify(lastSelectedModels));\n}\n\ninterface ConversationInitParams {\n  conversation: t.TConversation | null;\n  newEndpoint: EModelEndpoint | string | null;\n  endpointsConfig: t.TEndpointsConfig;\n  modularChat?: boolean;\n}\n\ninterface InitiatedTemplateResult {\n  template: Partial<t.TPreset>;\n  shouldSwitch: boolean;\n  isExistingConversation: boolean;\n  isCurrentModular: boolean;\n  isNewModular: boolean;\n  newEndpointType: EModelEndpoint | undefined;\n}\n\n/** Get the conditional logic for switching conversations */\nexport function getConvoSwitchLogic(params: ConversationInitParams): InitiatedTemplateResult {\n  const { conversation, newEndpoint, endpointsConfig, modularChat = false } = params;\n\n  const currentEndpoint = conversation?.endpoint;\n  const template: Partial<t.TPreset> = {\n    ...conversation,\n    endpoint: newEndpoint,\n    conversationId: 'new',\n  };\n\n  const isAssistantSwitch =\n    isAssistantsEndpoint(newEndpoint) &&\n    isAssistantsEndpoint(currentEndpoint) &&\n    currentEndpoint === newEndpoint;\n\n  const conversationId = conversation?.conversationId ?? '';\n  const isExistingConversation = !!(conversationId && conversationId !== 'new');\n\n  const currentEndpointType =\n    getEndpointField(endpointsConfig, currentEndpoint, 'type') ?? currentEndpoint;\n  const newEndpointType =\n    getEndpointField(endpointsConfig, newEndpoint, 'type') ??\n    (newEndpoint as EModelEndpoint | undefined);\n\n  const hasEndpoint = modularEndpoints.has(currentEndpoint ?? '');\n  const hasCurrentEndpointType = modularEndpoints.has(currentEndpointType ?? '');\n  const isCurrentModular = hasEndpoint || hasCurrentEndpointType || isAssistantSwitch;\n\n  const hasNewEndpoint = modularEndpoints.has(newEndpoint ?? '');\n  const hasNewEndpointType = modularEndpoints.has(newEndpointType ?? '');\n  const isNewModular = hasNewEndpoint || hasNewEndpointType || isAssistantSwitch;\n\n  const endpointsMatch = currentEndpoint === newEndpoint;\n  const shouldSwitch = endpointsMatch || modularChat || isAssistantSwitch;\n\n  return {\n    template,\n    shouldSwitch,\n    isExistingConversation,\n    isCurrentModular,\n    newEndpointType,\n    isNewModular,\n  };\n}\n\n/** Gets the default spec by order.\n *\n * First, the admin defined default, then last selected spec, followed by first spec\n */\nexport function getDefaultModelSpec(modelSpecs?: t.TModelSpec[]) {\n  const defaultSpec = modelSpecs?.find((spec) => spec.default);\n  const lastSelectedSpecName = localStorage.getItem(LocalStorageKeys.LAST_SPEC);\n  const lastSelectedSpec = modelSpecs?.find((spec) => spec.name === lastSelectedSpecName);\n  return defaultSpec || lastSelectedSpec || modelSpecs?.[0];\n}\n\n/** Gets the default spec iconURL by order or definition.\n *\n * First, the admin defined default, then last selected spec, followed by first spec\n */\nexport function getModelSpecIconURL(modelSpec: t.TModelSpec) {\n  return modelSpec.iconURL ?? modelSpec.preset.iconURL ?? modelSpec.preset.endpoint ?? '';\n}\n\n/** Gets the default frontend-facing endpoint, dependent on iconURL definition.\n *\n * If the iconURL is defined in the endpoint config, use it, otherwise use the endpoint\n */\nexport function getIconEndpoint({\n  endpointsConfig,\n  iconURL,\n  endpoint,\n}: {\n  endpointsConfig?: t.TEndpointsConfig;\n  iconURL?: string | null;\n  endpoint?: string | null;\n}) {\n  return (endpointsConfig?.[iconURL ?? ''] ? iconURL ?? endpoint : endpoint) ?? '';\n}\n\n/** Gets the key to use for the default endpoint iconURL, as defined by the custom config */\nexport function getIconKey({\n  endpoint,\n  endpointType: _eType,\n  endpointsConfig,\n  endpointIconURL: iconURL,\n}: {\n  endpoint?: string | null;\n  endpointsConfig?: t.TEndpointsConfig;\n  endpointType?: string | null;\n  endpointIconURL?: string;\n}): keyof IconsRecord {\n  const endpointType = _eType ?? getEndpointField(endpointsConfig, endpoint, 'type') ?? '';\n  const endpointIconURL = iconURL ?? getEndpointField(endpointsConfig, endpoint, 'iconURL') ?? '';\n  if (endpointIconURL && EModelEndpoint[endpointIconURL] != null) {\n    return endpointIconURL;\n  }\n  return endpointType ? 'unknown' : endpoint ?? 'unknown';\n}\n\nexport const getEntity = ({\n  endpoint,\n  assistant_id,\n  agent_id,\n  agentsMap,\n  assistantMap,\n}: {\n  endpoint: EModelEndpoint | string | null | undefined;\n  assistant_id: string | undefined;\n  agent_id: string | undefined;\n  agentsMap: t.TAgentsMap | undefined;\n  assistantMap: t.TAssistantsMap | undefined;\n}): {\n  entity: t.Agent | t.Assistant | undefined | null;\n  isAgent: boolean;\n  isAssistant: boolean;\n} => {\n  const isAgent = isAgentsEndpoint(endpoint);\n  const isAssistant = isAssistantsEndpoint(endpoint);\n\n  if (isAgent) {\n    const agent = agentsMap?.[agent_id ?? ''];\n    return { entity: agent, isAgent, isAssistant };\n  } else if (isAssistant) {\n    const assistant = assistantMap?.[endpoint ?? '']?.[assistant_id ?? ''];\n    return { entity: assistant, isAgent, isAssistant };\n  }\n  return { entity: null, isAgent, isAssistant };\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/files.ts",
    "content": "import type { QueryClient } from '@tanstack/react-query';\nimport type { ExtendedFile } from '~/common';\nimport CodePaths from '~/components/svg/Files/CodePaths';\nimport FilePaths from '~/components/svg/Files/FilePaths';\nimport SheetPaths from '~/components/svg/Files/SheetPaths';\nimport TextPaths from '~/components/svg/Files/TextPaths';\nimport type { EndpointFileConfig, TFile } from '~/data-provider/data-provider/src';\nimport {\n  codeTypeMapping,\n  fileConfig as defaultFileConfig,\n  excelMimeTypes,\n  megabyte,\n  QueryKeys,\n} from '~/data-provider/data-provider/src';\n\nexport const partialTypes = ['text/x-'];\n\nconst textDocument = {\n  paths: TextPaths,\n  fill: '#FF5588',\n  title: 'Document',\n};\n\nconst spreadsheet = {\n  paths: SheetPaths,\n  fill: '#10A37F',\n  title: 'Spreadsheet',\n};\n\nconst codeFile = {\n  paths: CodePaths,\n  fill: '#FF6E3C',\n  // TODO: make this dynamic to the language\n  title: 'Code',\n};\n\nconst artifact = {\n  paths: CodePaths,\n  fill: '#2D305C',\n  title: 'Code',\n};\n\nexport const fileTypes = {\n  /* Category matches */\n  file: {\n    paths: FilePaths,\n    fill: '#0000FF',\n    title: 'File',\n  },\n  text: textDocument,\n  // application:,\n\n  /* Partial matches */\n  csv: spreadsheet,\n  'application/pdf': textDocument,\n  pdf: textDocument,\n  'text/x-': codeFile,\n  artifact: artifact,\n\n  /* Exact matches */\n  // 'application/json':,\n  // 'text/html':,\n  // 'text/css':,\n  // image,\n};\n\n// export const getFileType = (type = '') => {\n//   let fileType = fileTypes.file;\n//   const exactMatch = fileTypes[type];\n//   const partialMatch = !exactMatch && partialTypes.find((type) => type.includes(type));\n//   const category = (!partialMatch && (type.split('/')[0] ?? 'text') || 'text');\n\n//   if (exactMatch) {\n//     fileType = exactMatch;\n//   } else if (partialMatch) {\n//     fileType = fileTypes[partialMatch];\n//   } else if (fileTypes[category]) {\n//     fileType = fileTypes[category];\n//   }\n\n//   if (!fileType) {\n//     fileType = fileTypes.file;\n//   }\n\n//   return fileType;\n// };\n\nexport const getFileType = (\n  type = '',\n): {\n  paths: React.FC;\n  fill: string;\n  title: string;\n} => {\n  // Direct match check\n  if (fileTypes[type]) {\n    return fileTypes[type];\n  }\n\n  if (excelMimeTypes.test(type)) {\n    return spreadsheet;\n  }\n\n  // Partial match check\n  const partialMatch = partialTypes.find((partial) => type.includes(partial));\n  if (partialMatch && fileTypes[partialMatch]) {\n    return fileTypes[partialMatch];\n  }\n\n  // Category check\n  const category = type.split('/')[0] || 'text';\n  if (fileTypes[category]) {\n    return fileTypes[category];\n  }\n\n  // Default file type\n  return fileTypes.file;\n};\n\n/**\n * Format a date string to a human readable format\n * @example\n * formatDate('2020-01-01T00:00:00.000Z') // '1 Jan 2020'\n */\nexport function formatDate(dateString: string, isSmallScreen = false) {\n  if (!dateString) {\n    return '';\n  }\n\n  const date = new Date(dateString);\n\n  if (isSmallScreen) {\n    return date.toLocaleDateString('en-US', {\n      month: 'numeric',\n      day: 'numeric',\n      year: '2-digit',\n    });\n  }\n\n  const months = [\n    'Jan',\n    'Feb',\n    'Mar',\n    'Apr',\n    'May',\n    'Jun',\n    'Jul',\n    'Aug',\n    'Sep',\n    'Oct',\n    'Nov',\n    'Dec',\n  ];\n\n  const day = date.getDate();\n  const month = months[date.getMonth()];\n  const year = date.getFullYear();\n\n  return `${day} ${month} ${year}`;\n}\n\n/**\n * Adds a file to the query cache\n */\nexport function addFileToCache(queryClient: QueryClient, newfile: TFile) {\n  const currentFiles = queryClient.getQueryData<TFile[]>([QueryKeys.files]);\n\n  if (!currentFiles) {\n    console.warn('No current files found in cache, skipped updating file query cache');\n    return;\n  }\n\n  const fileIndex = currentFiles.findIndex((file) => file.file_id === newfile.file_id);\n\n  if (fileIndex > -1) {\n    console.warn('File already exists in cache, skipped updating file query cache');\n    return;\n  }\n\n  queryClient.setQueryData<TFile[]>(\n    [QueryKeys.files],\n    [\n      {\n        ...newfile,\n      },\n      ...currentFiles,\n    ],\n  );\n}\n\nexport function formatBytes(bytes: number, decimals = 2) {\n  if (bytes === 0) {\n    return 0;\n  }\n  const k = 1024;\n  const dm = decimals < 0 ? 0 : decimals;\n  const i = Math.floor(Math.log(bytes) / Math.log(k));\n  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n}\n\nconst { checkType } = defaultFileConfig;\n\n// 上传文件校验\nexport const validateFiles = ({\n  files,\n  fileList,\n  setError,\n  endpointFileConfig,\n  showToast,\n  localize,\n  size,\n  noLimitSize = false,\n}: {\n  fileList: File[];\n  files: Map<string, ExtendedFile>;\n  setError: (error: string) => void;\n  endpointFileConfig: EndpointFileConfig;\n  noLimitSize?: boolean;\n  showToast: any,\n  localize: any,\n  size: number,\n}) => {\n  const { fileLimit, fileSizeLimit, totalSizeLimit, supportedMimeTypes } = endpointFileConfig;\n  const existingFiles = Array.from(files.values());\n  const incomingTotalSize = fileList.reduce((total, file) => total + file.size, 0);\n  if (incomingTotalSize === 0) {\n    setError('com_error_files_empty');\n    return false;\n  }\n  const currentTotalSize = existingFiles.reduce((total, file) => total + file.size, 0);\n\n  const maxSize = (size || 200) * 1024 * 1024\n  const oversizeFiles = fileList.filter((file) => file.size > maxSize)\n  if (oversizeFiles.length > 0) {\n    showToast({\n      message: localize('com_file_size_exceed_limit', { name: oversizeFiles.map(f => f.name).join(', '), size: size }),\n      status: 'error'\n    })\n    fileList = fileList.filter((file) => file.size <= maxSize)\n    return false;\n  }\n\n  for (let i = 0; i < fileList.length; i++) {\n    let originalFile = fileList[i];\n    let fileType = originalFile.type;\n    const extension = originalFile.name.split('.').pop() ?? '';\n    const knownCodeType = codeTypeMapping[extension];\n\n    // Infer MIME type for Known Code files when the type is empty or a mismatch\n    if (knownCodeType && (!fileType || fileType !== knownCodeType)) {\n      fileType = knownCodeType;\n    }\n\n    // Check if the file type is still empty after the extension check\n    if (!fileType) {\n      setError('Unable to determine file type for: ' + originalFile.name);\n      return false;\n    }\n\n    // Replace empty type with inferred type\n    if (originalFile.type !== fileType) {\n      const newFile = new File([originalFile], originalFile.name, { type: fileType });\n      originalFile = newFile;\n      fileList[i] = newFile;\n    }\n\n    if (!checkType(originalFile.type, supportedMimeTypes)) {\n      console.log(originalFile);\n      setError('Currently, unsupported file type: ' + originalFile.type);\n      return false;\n    }\n\n    if (fileSizeLimit && originalFile.size >= fileSizeLimit) {\n      setError(`File size exceeds ${fileSizeLimit / megabyte} MB.`);\n      return false;\n    }\n  }\n\n  if (totalSizeLimit && currentTotalSize + incomingTotalSize > totalSizeLimit) {\n    setError(`The total size of the files cannot exceed ${totalSizeLimit / megabyte} MB.`);\n    return false;\n  }\n\n  const combinedFilesInfo = [\n    ...existingFiles.map(\n      (file) =>\n        `${file.file?.name ?? file.filename}-${file.size}-${file.type?.split('/')[0] ?? 'file'}`,\n    ),\n    ...fileList.map(\n      (file: File | undefined) =>\n        `${file?.name}-${file?.size}-${file?.type.split('/')[0] ?? 'file'}`,\n    ),\n  ];\n\n  const uniqueFilesSet = new Set(combinedFilesInfo);\n\n  if (uniqueFilesSet.size !== combinedFilesInfo.length) {\n    setError('com_error_files_dupe');\n    return false;\n  }\n\n  return true;\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/forms.tsx",
    "content": "import { EarthIcon } from 'lucide-react';\nimport {\n  alternateName,\n  EModelEndpoint,\n  FileSources,\n  EToolResources,\n} from '~/data-provider/data-provider/src';\nimport type { Agent, TFile } from '~/data-provider/data-provider/src';\nimport type { DropdownValueSetter, TAgentOption, ExtendedFile } from '~/common';\n\n/**\n * Creates a Dropdown value setter that always passes a string value,\n * for when options (object with label/value fields) are used for the\n * available values, and a string value is expected when selected.\n *\n * Only necessary when the available values are objects with label/value fields\n * and the selected value is expected to be a string.\n **/\nexport const createDropdownSetter = (setValue: (value: string) => void): DropdownValueSetter => {\n  return (value) => {\n    if (!value) {\n      setValue('');\n      return;\n    }\n\n    if (typeof value === 'string') {\n      setValue(value);\n      return;\n    }\n\n    if (value.value) {\n      setValue(value.value + '');\n    }\n  };\n};\n\n/**\n * Creates an Option object for a provider dropdown.\n **/\nexport const createProviderOption = (provider: string) => ({\n  label: (alternateName[provider] as string | undefined) ?? provider,\n  value: provider,\n});\n\nexport const processAgentOption = ({\n  agent: _agent,\n  fileMap,\n  instanceProjectId,\n}: {\n  agent?: Agent;\n  fileMap?: Record<string, TFile | undefined>;\n  instanceProjectId?: string;\n}): TAgentOption => {\n  const isGlobal =\n    (instanceProjectId != null && _agent?.projectIds?.includes(instanceProjectId)) ?? false;\n  const agent: TAgentOption = {\n    ...(_agent ?? ({} as Agent)),\n    label: _agent?.name ?? '',\n    value: _agent?.id ?? '',\n    icon: isGlobal ? <EarthIcon className=\"icon-md text-green-400\" /> : null,\n    knowledge_files: _agent?.tool_resources?.file_search?.file_ids\n      ? ([] as Array<[string, ExtendedFile]>)\n      : undefined,\n    code_files: _agent?.tool_resources?.execute_code?.file_ids\n      ? ([] as Array<[string, ExtendedFile]>)\n      : undefined,\n  };\n\n  if (!fileMap) {\n    return agent;\n  }\n\n  const handleFile = ({\n    file_id,\n    tool_resource,\n    list,\n  }: {\n    file_id: string;\n    tool_resource: EToolResources;\n    list?: Array<[string, ExtendedFile]>;\n  }) => {\n    const file = fileMap[file_id];\n    const source =\n      tool_resource === EToolResources.file_search\n        ? FileSources.vectordb\n        : file?.source ?? FileSources.local;\n\n    if (file) {\n      list?.push([\n        file_id,\n        {\n          file_id: file.file_id,\n          type: file.type,\n          filepath: file.filepath,\n          filename: file.filename,\n          width: file.width,\n          height: file.height,\n          size: file.bytes,\n          preview: file.filepath,\n          progress: 1,\n          source,\n        },\n      ]);\n    } else {\n      list?.push([\n        file_id,\n        {\n          file_id,\n          type: '',\n          filename: '',\n          size: 1,\n          progress: 1,\n          filepath: EModelEndpoint.agents,\n          source,\n        },\n      ]);\n    }\n  };\n\n  if (agent.knowledge_files && _agent?.tool_resources?.file_search?.file_ids) {\n    _agent.tool_resources.file_search.file_ids.forEach((file_id) =>\n      handleFile({\n        file_id,\n        list: agent.knowledge_files,\n        tool_resource: EToolResources.file_search,\n      }),\n    );\n  }\n\n  if (agent.code_files && _agent?.tool_resources?.execute_code?.file_ids) {\n    _agent.tool_resources.execute_code.file_ids.forEach((file_id) =>\n      handleFile({ file_id, list: agent.code_files, tool_resource: EToolResources.execute_code }),\n    );\n  }\n\n  return agent;\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/getDefaultEndpoint.ts",
    "content": "import type {\n  TPreset,\n  TConversation,\n  EModelEndpoint,\n  TEndpointsConfig,\n} from '~/data-provider/data-provider/src';\nimport { getLocalStorageItems } from './localStorage';\nimport { mapEndpoints } from './endpoints';\n\ntype TConvoSetup = Partial<TPreset> | Partial<TConversation>;\n\ntype TDefaultEndpoint = { convoSetup: TConvoSetup; endpointsConfig: TEndpointsConfig };\n\nconst getEndpointFromSetup = (\n  convoSetup: TConvoSetup | null,\n  endpointsConfig: TEndpointsConfig,\n): EModelEndpoint | null => {\n  let { endpoint: targetEndpoint = '' } = convoSetup || {};\n  targetEndpoint = targetEndpoint ?? '';\n  if (targetEndpoint && endpointsConfig?.[targetEndpoint]) {\n    return targetEndpoint as EModelEndpoint;\n  } else if (targetEndpoint) {\n    console.warn(`Illegal target endpoint ${targetEndpoint} ${endpointsConfig}`);\n  }\n  return null;\n};\n\nconst getEndpointFromLocalStorage = (endpointsConfig: TEndpointsConfig) => {\n  try {\n    const { lastConversationSetup } = getLocalStorageItems();\n    const { endpoint } = lastConversationSetup ?? { endpoint: null };\n    const isDefaultConfig = Object.values(endpointsConfig ?? {}).every((value) => !value);\n\n    if (isDefaultConfig && endpoint) {\n      return endpoint;\n    }\n\n    if (isDefaultConfig && endpoint) {\n      return endpoint;\n    }\n\n    return endpoint && endpointsConfig?.[endpoint] != null ? endpoint : null;\n  } catch (error) {\n    console.error(error);\n    return null;\n  }\n};\n\nconst getDefinedEndpoint = (endpointsConfig: TEndpointsConfig) => {\n  const endpoints = mapEndpoints(endpointsConfig);\n  return endpoints.find((e) => Object.hasOwn(endpointsConfig ?? {}, e));\n};\n\nconst getDefaultEndpoint = ({\n  convoSetup,\n  endpointsConfig,\n}: TDefaultEndpoint): EModelEndpoint | undefined => {\n  return (\n    getEndpointFromSetup(convoSetup, endpointsConfig) ||\n    getEndpointFromLocalStorage(endpointsConfig) ||\n    getDefinedEndpoint(endpointsConfig)\n  );\n};\n\nexport default getDefaultEndpoint;\n"
  },
  {
    "path": "src/frontend/client/src/utils/getLoginError.ts",
    "content": "const getLoginError = (errorText: string) => {\n  const defaultError = 'com_auth_error_login';\n\n  if (!errorText) {\n    return defaultError;\n  }\n\n  switch (true) {\n    case errorText.includes('429'):\n      return 'com_auth_error_login_rl';\n    case errorText.includes('403'):\n      return 'com_auth_error_login_ban';\n    case errorText.includes('500'):\n      return 'com_auth_error_login_server';\n    case errorText.includes('422'):\n      return 'com_auth_error_login_unverified';\n    default:\n      return defaultError;\n  }\n};\n\nexport default getLoginError;\n"
  },
  {
    "path": "src/frontend/client/src/utils/index.ts",
    "content": "import axios from 'axios';\nimport React from 'react';\n\nexport { default as buildDefaultConvo } from './buildDefaultConvo';\nexport { default as buildTree } from './buildTree';\nexport { default as cleanupPreset } from './cleanupPreset';\nexport { default as cn } from './cn';\nexport * from './convos';\nexport * from './endpoints';\nexport * from './files';\nexport * from './forms';\nexport { default as getDefaultEndpoint } from './getDefaultEndpoint';\nexport { default as getLoginError } from './getLoginError';\nexport * from './json';\nexport * from './languages';\nexport * from './latex';\nexport * from './localStorage';\nexport { default as logger } from './logger';\nexport * from './map';\nexport * from './messages';\nexport * from './presets';\nexport * from './promptGroups';\nexport * from './prompts';\nexport * from './textarea';\nexport * from './theme';\n\nexport const languages = [\n  'java',\n  'c',\n  'markdown',\n  'css',\n  'html',\n  'xml',\n  'bash',\n  'json',\n  'yaml',\n  'jsx',\n  'python',\n  'c++',\n  'javascript',\n  'csharp',\n  'php',\n  'typescript',\n  'swift',\n  'objectivec',\n  'sql',\n  'r',\n  'kotlin',\n  'ruby',\n  'go',\n  'x86asm',\n  'matlab',\n  'perl',\n  'pascal',\n];\n\nexport const removeFocusOutlines = '';\nexport const removeFocusRings =\n  'focus:outline-none focus:ring-0 focus:ring-opacity-0 focus:ring-offset-0';\n\nexport const cardStyle =\n  'transition-colors rounded-md min-w-[75px] border font-normal bg-white hover:bg-gray-50 dark:border-gray-700 dark:hover:bg-gray-700 dark:bg-gray-800 text-black dark:text-gray-600 focus:outline-none data-[state=open]:bg-gray-50 dark:data-[state=open]:bg-gray-700';\n\nexport const defaultTextProps =\n  'rounded-md border border-gray-200 focus:border-gray-400 focus:bg-gray-50 bg-transparent text-sm shadow-[0_0_10px_rgba(0,0,0,0.05)] outline-none focus-within:placeholder:text-text-primary focus:placeholder:text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-gray-400 focus:ring-opacity-20 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:border-gray-600 dark:focus:bg-gray-600 dark:focus:border-gray-600 dark:text-gray-50 dark:shadow-[0_0_15px_rgba(0,0,0,0.10)] dark:focus:outline-none';\n\nexport const optionText =\n  'p-0 shadow-none text-right pr-1 h-8 border-transparent hover:bg-gray-800/10 dark:hover:bg-white/10 dark:focus:bg-white/10 transition-colors';\n\nexport const defaultTextPropsLabel =\n  'rounded-md border border-gray-300 bg-transparent text-sm shadow-[0_0_10px_rgba(0,0,0,0.10)] outline-none focus-within:placeholder:text-text-primary focus:placeholder:text-text-primary placeholder:text-text-secondary focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-700 dark:bg-gray-700 dark:text-gray-50 dark:shadow-[0_0_15px_rgba(0,0,0,0.10)] dark:focus:border-gray-600 dark:focus:outline-none';\n\nexport function capitalizeFirstLetter(string: string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport const handleDoubleClick: React.MouseEventHandler<HTMLElement> = (event) => {\n  const range = document.createRange();\n  range.selectNodeContents(event.target as Node);\n  const selection = window.getSelection();\n  if (!selection) {\n    return;\n  }\n  selection.removeAllRanges();\n  selection.addRange(range);\n};\n\nexport const extractContent = (\n  children: React.ReactNode | { props: { children: React.ReactNode } } | string,\n): string => {\n  if (typeof children === 'string') {\n    return children;\n  }\n  if (React.isValidElement(children)) {\n    return extractContent((children.props as { children?: React.ReactNode }).children);\n  }\n  if (Array.isArray(children)) {\n    return children.map(extractContent).join('');\n  }\n  return '';\n};\n\nexport const normalizeLayout = (layout: number[]) => {\n  const sum = layout.reduce((acc, size) => acc + size, 0);\n  if (Math.abs(sum - 100) < 0.01) {\n    return layout.map((size) => Number(size.toFixed(2)));\n  }\n\n  const factor = 100 / sum;\n  const normalizedLayout = layout.map((size) => Number((size * factor).toFixed(2)));\n\n  const adjustedSum = normalizedLayout.reduce(\n    (acc, size, index) => (index === layout.length - 1 ? acc : acc + size),\n    0,\n  );\n  normalizedLayout[normalizedLayout.length - 1] = Number((100 - adjustedSum).toFixed(2));\n\n  return normalizedLayout;\n};\n\n// ding\nexport const playDing = () => {\n  // 1. 创建音频元素\n  const audio = new Audio(__APP_ENV__.BASE_URL + '/assets/ding.wav');\n  audio.volume = 0.5; // 50%音量\n\n  // 2. 播放音频\n  audio.play().catch(error => {\n    console.error('播放失败:', error);\n    audio.remove(); // 如果播放失败也移除元素\n  });\n\n  // 3. 播放结束后销毁\n  audio.addEventListener('ended', () => {\n    console.log('播放结束，销毁音频元素');\n    audio.remove();\n  });\n\n  // 4. 错误处理（网络问题等）\n  audio.addEventListener('error', () => {\n    console.error('音频加载失败');\n    audio.remove();\n  });\n}\n\n\n/**\n * 切换导航栏的展开/闭合状态\n * @param {boolean} shouldExpand - true表示展开，false表示关闭\n */\nexport const toggleNav = (shouldExpand) => {\n  return // 去掉自动收起展开\n  // 获取导航栏切换按钮元素\n  const navToggle = document.querySelector('div[id=\"toggle-left-nav\"]');\n\n  if (!navToggle) {\n    console.error('未找到导航栏切换按钮');\n    return;\n  }\n\n  // 获取当前展开状态\n  const isExpanded = navToggle.getAttribute('aria-expanded') === 'true';\n\n  // 判断是否需要操作\n  if ((shouldExpand && !isExpanded) || (!shouldExpand && isExpanded)) {\n    // 触发点击事件来切换状态\n    navToggle.click();\n  }\n}\n\n/**\n * 时间字符串格式化函数\n * @param {string} time - 时间字符串，格式为 \"YYYY-mm-ddTHH:MM:SS\"\n * @param {boolean} hideTime - 是否隐藏时分秒\n * @return {string} 格式化后的时间字符串，格式为 \"YYYY-mm-dd HH:MM:SS\"\n */\nexport const formatTime = (time: string, hideTime: boolean = false) => {\n  const value = time.replace('T', ' ').replaceAll('-', '/');\n  return hideTime ? value.slice(0, -3) : value\n}\n\n// Date转换为目标格式\nexport function formatDate(date: Date, format: string): string {\n  const addZero = (num) => num < 10 ? `0${num}` : `${num}`\n  const replacements = {\n    'yyyy': date.getFullYear(),\n    'yy': date.getFullYear() % 2000,\n    'MM': addZero(date.getMonth() + 1),\n    'dd': addZero(date.getDate()),\n    'HH': addZero(date.getHours()),\n    'mm': addZero(date.getMinutes()),\n    'ss': addZero(date.getSeconds())\n  }\n  return format.replace(/yyyy|yy|MM|dd|HH|mm|ss/g, (match) => replacements[match])\n}\n\n// param time: yyyy-mm-ddTxxxx\nexport function formatStrTime(time: string, notSameDayFormat: string): string {\n  if (!time) return ''\n  const date1 = new Date(time)\n  const date2 = new Date()\n  return date1.getFullYear() === date2.getFullYear() &&\n    date1.getMonth() === date2.getMonth() &&\n    date1.getDate() === date2.getDate() ? formatDate(date1, 'HH:mm') : formatDate(date1, notSameDayFormat)\n}\n\nconst copyTextInDom = (dom) => {\n  const range = document.createRange();\n\n  range.selectNode(dom);\n  window.getSelection().removeAllRanges();\n  window.getSelection().addRange(range);\n\n  return new Promise((res) => {\n    document.execCommand('copy');\n    window.getSelection().removeAllRanges();\n    res(dom.innerText);\n  })\n}\n\n// 复制到剪切板\nexport const copyText = (text: string | HTMLElement) => {\n  // 复制 dom 内文本\n  if (typeof text !== 'string') return copyTextInDom(text)\n  // 高级 API直接复制文本（需要 https 环境）\n  if (navigator.clipboard && navigator.clipboard.writeText) {\n    return navigator.clipboard.writeText(text)\n  }\n  // 通过把文本写入 dom, 间接通过选中 dom 复制文本\n  const areaDom = document.createElement(\"textarea\");\n  // 设置样式使其不在屏幕上显示\n  areaDom.style.position = 'absolute';\n  areaDom.style.left = '-9999px';\n  areaDom.value = text;\n  document.body.appendChild(areaDom);\n\n  return copyTextInDom(areaDom).then((str) => {\n    document.body.removeChild(areaDom);\n  })\n};\n\n\nexport function downloadFile(url, label) {\n  console.log('download file :>> ', url);\n\n  return axios.get(url, { responseType: \"blob\" }).then((res: any) => {\n    const blob = new Blob([res.data]);\n    const link = document.createElement(\"a\");\n    link.href = URL.createObjectURL(blob);\n    link.download = label;\n    link.click();\n    URL.revokeObjectURL(link.href);\n  }).catch(console.error);\n}\n\n\n// uuid\nexport const generateUUID = (length: number) => {\n  let d = new Date().getTime()\n  const uuid = ''.padStart(length, 'x').replace(/[xy]/g, (c) => {\n    const r = (d + Math.random() * 16) % 16 | 0\n    d = Math.floor(d / 16)\n    return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16)\n  })\n  return uuid\n}\n\n\n// 取后缀名\nexport function getFileExtension(filename) {\n  if (!filename) return '';\n  const basename = filename.split(/[\\\\/]/).pop(); // 去除路径\n  if (!basename) return '';\n  const match = basename.match(/\\.([^.]+)$/);\n  return (match ? match[1] : '').toUpperCase();\n}"
  },
  {
    "path": "src/frontend/client/src/utils/json.ts",
    "content": "export function isJson(str: string) {\n  try {\n    JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n  return true;\n}\n\nexport function formatJSON(json: string) {\n  try {\n    return JSON.stringify(JSON.parse(json), null, 2);\n  } catch (e) {\n    return json;\n  }\n}\n\nexport function extractJson(text: string) {\n  let openBraces = 0;\n  let startIndex = -1;\n\n  for (let i = 0; i < text.length; i++) {\n    if (text[i] === '{') {\n      if (openBraces === 0) {\n        startIndex = i;\n      }\n      openBraces++;\n    } else if (text[i] === '}') {\n      openBraces--;\n      if (openBraces === 0 && startIndex !== -1) {\n        return text.slice(startIndex, i + 1);\n      }\n    }\n  }\n\n  return '';\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/languages.ts",
    "content": "export const languages = new Set([\n  'adoc',\n  'apacheconf',\n  'arm',\n  'as',\n  'asc',\n  'atom',\n  'bat',\n  'bf',\n  'bind',\n  'c++',\n  'capnp',\n  'cc',\n  'clj',\n  'cls',\n  'cmake.in',\n  'cmd',\n  'coffee',\n  'console',\n  'cr',\n  'craftcms',\n  'crm',\n  'cs',\n  'cson',\n  'cts',\n  'cxx',\n  'dfm',\n  'docker',\n  'dst',\n  'erl',\n  'f90',\n  'f95',\n  'fs',\n  'gawk',\n  'gemspec',\n  'gms',\n  'golang',\n  'gololang',\n  'gss',\n  'gyp',\n  'h',\n  'h++',\n  'hbs',\n  'hh',\n  'hpp',\n  'hs',\n  'html',\n  'html.handlebars',\n  'html.hbs',\n  'https',\n  'hx',\n  'hxx',\n  'hylang',\n  'i7',\n  'iced',\n  'ino',\n  'instances',\n  'irb',\n  'jinja',\n  'js',\n  'jsp',\n  'jsx',\n  'julia-repl',\n  'kdb',\n  'kt',\n  'lassoscript',\n  'ls',\n  'ls',\n  'mak',\n  'make',\n  'mawk',\n  'md',\n  'mipsasm',\n  'mk',\n  'mkd',\n  'mkdown',\n  'ml',\n  'ml',\n  'mm',\n  'mma',\n  'moon',\n  'mts',\n  'nawk',\n  'nc',\n  'nginxconf',\n  'nimrod',\n  'objc',\n  'obj-c',\n  'obj-c++',\n  'objective-c++',\n  'osascript',\n  'pas',\n  'pascal',\n  'patch',\n  'pcmk',\n  'pf.conf',\n  'pl',\n  'plist',\n  'pm',\n  'podspec',\n  'postgres',\n  'postgresql',\n  'pp',\n  'ps',\n  'ps1',\n  'py',\n  'pycon',\n  'rb',\n  're',\n  'rs',\n  'rss',\n  'sas',\n  'scad',\n  'sci',\n  'sh',\n  'st',\n  'stanfuncs',\n  'step',\n  'stp',\n  'styl',\n  'svg',\n  'tao',\n  'text',\n  'thor',\n  'tk',\n  'toml',\n  'ts',\n  'tsx',\n  'txt',\n  'v',\n  'vb',\n  'vbs',\n  'wl',\n  'x++',\n  'xhtml',\n  'xjb',\n  'xls',\n  'xlsx',\n  'xpath',\n  'xq',\n  'xsd',\n  'xsl',\n  'yaml',\n  'zep',\n  'zone',\n  'zsh',\n  '1c',\n  'abnf',\n  'accesslog',\n  'actionscript',\n  'ada',\n  'angelscript',\n  'apache',\n  'applescript',\n  'arcade',\n  'arduino',\n  'armasm',\n  'asciidoc',\n  'aspectj',\n  'autohotkey',\n  'autoit',\n  'avrasm',\n  'awk',\n  'axapta',\n  'bash',\n  'basic',\n  'bnf',\n  'brainfuck',\n  'c',\n  'cal',\n  'capnproto',\n  'clojure',\n  'cmake',\n  'coffeescript',\n  'coq',\n  'cos',\n  'cpp',\n  'crmsh',\n  'crystal',\n  'csharp',\n  'csp',\n  'css',\n  'd',\n  'dart',\n  'diff',\n  'django',\n  'dns',\n  'dockerfile',\n  'dos',\n  'dpr',\n  'dsconfig',\n  'dts',\n  'dust',\n  'ebnf',\n  'elixir',\n  'elm',\n  'erlang',\n  'excel',\n  'fix',\n  'fortran',\n  'fsharp',\n  'gams',\n  'gauss',\n  'gcode',\n  'gherkin',\n  'glsl',\n  'go',\n  'golo',\n  'gradle',\n  'graph',\n  'graphql',\n  'groovy',\n  'haml',\n  'handlebars',\n  'haskell',\n  'haxe',\n  'http',\n  'hy',\n  'inform7',\n  'ini',\n  'irpf90',\n  'java',\n  'javascript',\n  'json',\n  'julia',\n  'k',\n  'kotlin',\n  'lasso',\n  'ldif',\n  'leaf',\n  'less',\n  'lisp',\n  'livecodeserver',\n  'livescript',\n  'lua',\n  'makefile',\n  'markdown',\n  'mathematica',\n  'matlab',\n  'maxima',\n  'mel',\n  'mercury',\n  'mips',\n  'mizar',\n  'mojolicious',\n  'monkey',\n  'moonscript',\n  'n1ql',\n  'nginx',\n  'nim',\n  'nix',\n  'nsis',\n  'objectivec',\n  'ocaml',\n  'openscad',\n  'oxygene',\n  'p21',\n  'parser3',\n  'perl',\n  'pf',\n  'pgsql',\n  'php',\n  'plaintext',\n  'pony',\n  'powershell',\n  'processing',\n  'profile',\n  'prolog',\n  'properties',\n  'protobuf',\n  'puppet',\n  'python',\n  'python-repl',\n  'qml',\n  'r',\n  'reasonml',\n  'rib',\n  'rsl',\n  'ruby',\n  'ruleslanguage',\n  'rust',\n  'SAS',\n  'scala',\n  'scheme',\n  'scilab',\n  'scss',\n  'shell',\n  'smali',\n  'smalltalk',\n  'sml',\n  'sql',\n  'stan',\n  'stata',\n  'stylus',\n  'subunit',\n  'swift',\n  'tap',\n  'tcl',\n  'tex',\n  'thrift',\n  'tp',\n  'twig',\n  'typescript',\n  'vala',\n  'vbnet',\n  'vbscript',\n  'verilog',\n  'vhdl',\n  'vim',\n  'x86asm',\n  'xl',\n  'xml',\n  'xquery',\n  'yml',\n  'zephir',\n]);\n\nexport const langSubset = [\n  'python',\n  'javascript',\n  'java',\n  'go',\n  'bash',\n  'c',\n  'cpp',\n  'csharp',\n  'css',\n  'diff',\n  'graphql',\n  'json',\n  'kotlin',\n  'less',\n  'lua',\n  'makefile',\n  'markdown',\n  'objectivec',\n  'perl',\n  'php',\n  'php-template',\n  'plaintext',\n  'python-repl',\n  'r',\n  'ruby',\n  'rust',\n  'scss',\n  'shell',\n  'sql',\n  'swift',\n  'typescript',\n  'vbnet',\n  'wasm',\n  'xml',\n  'yaml',\n];\n\nenum Languages {\n  c = 'c',\n  cpp = 'cpp',\n  d = 'd',\n  f90 = 'f90',\n  go = 'go',\n  java = 'java',\n  js = 'js',\n  php = 'php',\n  py = 'py',\n  rs = 'rs',\n  ts = 'ts',\n}\n\n// Create a mapping of common variations to the enum values\nconst languageAliases: Record<string, Languages | undefined> = {\n  // C\n  c: Languages.c,\n\n  // C++\n  cpp: Languages.cpp,\n  'c++': Languages.cpp,\n  cplusplus: Languages.cpp,\n\n  // D\n  d: Languages.d,\n\n  // Fortran\n  f90: Languages.f90,\n  fortran: Languages.f90,\n  fortran90: Languages.f90,\n\n  // Go\n  go: Languages.go,\n  golang: Languages.go,\n\n  // Java\n  java: Languages.java,\n\n  // JavaScript\n  js: Languages.js,\n  javascript: Languages.js,\n  node: Languages.js,\n  nodejs: Languages.js,\n\n  // PHP\n  php: Languages.php,\n\n  // Python\n  py: Languages.py,\n  python: Languages.py,\n  python3: Languages.py,\n\n  // Rust\n  rs: Languages.rs,\n  rust: Languages.rs,\n\n  // TypeScript\n  ts: Languages.ts,\n  typescript: Languages.ts,\n};\n\nexport function normalizeLanguage(lang: string): Languages | string {\n  const normalizedLang = lang.toLowerCase().trim();\n  const validLang = languageAliases[normalizedLang];\n\n  if (!validLang) {\n    return '';\n  }\n\n  return validLang;\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/latex.spec.ts",
    "content": "\nimport { processLaTeX, preprocessLaTeX } from './latex';\n\ndescribe('processLaTeX', () => {\n  test('returns the same string if no LaTeX patterns are found', () => {\n    const content = 'This is a test string without LaTeX';\n    expect(processLaTeX(content)).toBe(content);\n  });\n\n  test('converts inline LaTeX expressions correctly', () => {\n    const content = 'This is an inline LaTeX expression: \\\\(x^2 + y^2 = z^2\\\\)';\n    const expected = 'This is an inline LaTeX expression: $x^2 + y^2 = z^2$';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('converts block LaTeX expressions correctly', () => {\n    const content = 'This is a block LaTeX expression: \\\\[E = mc^2\\\\]';\n    const expected = 'This is a block LaTeX expression: $$E = mc^2$$';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('converts mixed LaTeX expressions correctly', () => {\n    const content = 'Inline \\\\(a + b = c\\\\) and block \\\\[x^2 + y^2 = z^2\\\\]';\n    const expected = 'Inline $a + b = c$ and block $$x^2 + y^2 = z^2$$';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('escapes dollar signs followed by a digit or space and digit', () => {\n    const content = 'Price is $50 and $ 100';\n    const expected = 'Price is \\\\$50 and \\\\$ 100';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('handles strings with no content', () => {\n    const content = '';\n    expect(processLaTeX(content)).toBe('');\n  });\n\n  test('does not alter already valid inline Markdown LaTeX', () => {\n    const content = 'This is a valid inline LaTeX: $x^2 + y^2 = z^2$';\n    expect(processLaTeX(content)).toBe(content);\n  });\n\n  test('does not alter already valid block Markdown LaTeX', () => {\n    const content = 'This is a valid block LaTeX: $$E = mc^2$$';\n    expect(processLaTeX(content)).toBe(content);\n  });\n\n  test('correctly processes a mix of valid Markdown LaTeX and LaTeX patterns', () => {\n    const content = 'Valid $a + b = c$ and LaTeX to convert \\\\(x^2 + y^2 = z^2\\\\)';\n    const expected = 'Valid $a + b = c$ and LaTeX to convert $x^2 + y^2 = z^2$';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('correctly handles strings with LaTeX and non-LaTeX dollar signs', () => {\n    const content = 'Price $100 and LaTeX \\\\(x^2 + y^2 = z^2\\\\)';\n    const expected = 'Price \\\\$100 and LaTeX $x^2 + y^2 = z^2$';\n    expect(processLaTeX(content)).toBe(expected);\n  });\n\n  test('ignores non-LaTeX content enclosed in dollar signs', () => {\n    const content = 'This is not LaTeX: $This is just text$';\n    expect(processLaTeX(content)).toBe(content);\n  });\n\n  test('correctly processes complex block LaTeX with line breaks', () => {\n    const complexBlockLatex = `Certainly! Here's an example of a mathematical formula written in LaTeX:\n\n    \\\\[\n    \\\\sum_{i=1}^{n} \\\\left( \\\\frac{x_i}{y_i} \\\\right)^2\n    \\\\]\n    \n    This formula represents the sum of the squares of the ratios of \\\\(x\\\\) to \\\\(y\\\\) for \\\\(n\\\\) terms, where \\\\(x_i\\\\) and \\\\(y_i\\\\) represent the values of \\\\(x\\\\) and \\\\(y\\\\) for each term.\n    \n    LaTeX is a typesetting system commonly used for mathematical and scientific documents. It provides a wide range of formatting options and symbols for expressing mathematical expressions.`;\n    const expectedOutput = `Certainly! Here's an example of a mathematical formula written in LaTeX:\n\n    $$\n    \\\\sum_{i=1}^{n} \\\\left( \\\\frac{x_i}{y_i} \\\\right)^2\n    $$\n    \n    This formula represents the sum of the squares of the ratios of $x$ to $y$ for $n$ terms, where $x_i$ and $y_i$ represent the values of $x$ and $y$ for each term.\n    \n    LaTeX is a typesetting system commonly used for mathematical and scientific documents. It provides a wide range of formatting options and symbols for expressing mathematical expressions.`;\n    expect(processLaTeX(complexBlockLatex)).toBe(expectedOutput);\n  });\n\n  describe('processLaTeX with code block exception', () => {\n    test('ignores dollar signs inside inline code', () => {\n      const content = 'This is inline code: `$100`';\n      expect(processLaTeX(content)).toBe(content);\n    });\n\n    test('ignores dollar signs inside multi-line code blocks', () => {\n      const content = '```\\n$100\\n# $1000\\n```';\n      expect(processLaTeX(content)).toBe(content);\n    });\n\n    test('processes LaTeX outside of code blocks', () => {\n      const content =\n        'Outside \\\\(x^2 + y^2 = z^2\\\\) and inside code block: ```\\n$100\\n# $1000\\n```';\n      const expected = 'Outside $x^2 + y^2 = z^2$ and inside code block: ```\\n$100\\n# $1000\\n```';\n      expect(processLaTeX(content)).toBe(expected);\n    });\n  });\n});\n\ndescribe('preprocessLaTeX', () => {\n  test('returns the same string if no LaTeX patterns are found', () => {\n    const content = 'This is a test string without LaTeX';\n    expect(preprocessLaTeX(content)).toBe(content);\n  });\n\n  test('escapes dollar signs followed by digits', () => {\n    const content = 'Price is $50 and $100';\n    const expected = 'Price is \\\\$50 and \\\\$100';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('does not escape dollar signs not followed by digits', () => {\n    const content = 'This $variable is not escaped';\n    expect(preprocessLaTeX(content)).toBe(content);\n  });\n\n  test('preserves existing LaTeX expressions', () => {\n    const content = 'Inline $x^2 + y^2 = z^2$ and block $$E = mc^2$$';\n    expect(preprocessLaTeX(content)).toBe(content);\n  });\n\n  test('handles mixed LaTeX and currency', () => {\n    const content = 'LaTeX $x^2$ and price $50';\n    const expected = 'LaTeX $x^2$ and price \\\\$50';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('converts LaTeX delimiters', () => {\n    const content = 'Brackets \\\\[x^2\\\\] and parentheses \\\\(y^2\\\\)';\n    const expected = 'Brackets $$x^2$$ and parentheses $y^2$';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('escapes mhchem commands', () => {\n    const content = '$\\\\ce{H2O}$ and $\\\\pu{123 J}$';\n    const expected = '$\\\\\\\\ce{H2O}$ and $\\\\\\\\pu{123 J}$';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('handles complex mixed content', () => {\n    const content = `\n      LaTeX inline $x^2$ and block $$y^2$$\n      Currency $100 and $200\n      Chemical $\\\\ce{H2O}$\n      Brackets \\\\[z^2\\\\]\n    `;\n    const expected = `\n      LaTeX inline $x^2$ and block $$y^2$$\n      Currency \\\\$100 and \\\\$200\n      Chemical $\\\\\\\\ce{H2O}$\n      Brackets $$z^2$$\n    `;\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('handles empty string', () => {\n    expect(preprocessLaTeX('')).toBe('');\n  });\n\n  test('preserves code blocks', () => {\n    const content = '```\\n$100\\n```\\nOutside $200';\n    const expected = '```\\n$100\\n```\\nOutside \\\\$200';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('handles multiple currency values in a sentence', () => {\n    const content = 'I have $50 in my wallet and $100 in the bank.';\n    const expected = 'I have \\\\$50 in my wallet and \\\\$100 in the bank.';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('preserves LaTeX expressions with numbers', () => {\n    const content = 'The equation is $f(x) = 2x + 3$ where x is a variable.';\n    expect(preprocessLaTeX(content)).toBe(content);\n  });\n\n  test('handles currency values with commas', () => {\n    const content = 'The price is $1,000,000 for this item.';\n    const expected = 'The price is \\\\$1,000,000 for this item.';\n    expect(preprocessLaTeX(content)).toBe(expected);\n  });\n\n  test('preserves LaTeX expressions with special characters', () => {\n    const content = 'The set is defined as $\\\\{x | x > 0\\\\}$.';\n    expect(preprocessLaTeX(content)).toBe(content);\n  });\n});\n"
  },
  {
    "path": "src/frontend/client/src/utils/latex.ts",
    "content": "// Regex to check if the processed content contains any potential LaTeX patterns\nconst containsLatexRegex =\n  /\\\\\\(.*?\\\\\\)|\\\\\\[.*?\\\\\\]|\\$.*?\\$|\\\\begin\\{equation\\}.*?\\\\end\\{equation\\}/;\n\n// Regex for inline and block LaTeX expressions\nconst inlineLatex = new RegExp(/\\\\\\((.+?)\\\\\\)/, 'g');\nconst blockLatex = new RegExp(/\\\\\\[(.*?[^\\\\])\\\\\\]/, 'gs');\n\n// Function to restore code blocks\nconst restoreCodeBlocks = (content: string, codeBlocks: string[]) => {\n  return content.replace(/<<CODE_BLOCK_(\\d+)>>/g, (match, index) => codeBlocks[index]);\n};\n\n// Regex to identify code blocks and inline code\nconst codeBlockRegex = /(```[\\s\\S]*?```|`.*?`)/g;\n\nexport const processLaTeX = (_content: string) => {\n  let content = _content;\n  // Temporarily replace code blocks and inline code with placeholders\n  const codeBlocks: string[] = [];\n  let index = 0;\n  content = content.replace(codeBlockRegex, (match) => {\n    codeBlocks[index] = match;\n    return `<<CODE_BLOCK_${index++}>>`;\n  });\n\n  // Escape dollar signs followed by a digit or space and digit\n  let processedContent = content.replace(/(\\$)(?=\\s?\\d)/g, '\\\\$');\n\n  // If no LaTeX patterns are found, restore code blocks and return the processed content\n  if (!containsLatexRegex.test(processedContent)) {\n    return restoreCodeBlocks(processedContent, codeBlocks);\n  }\n\n  // Convert LaTeX expressions to a markdown compatible format\n  processedContent = processedContent\n    .replace(inlineLatex, (match: string, equation: string) => `$${equation}$`) // Convert inline LaTeX\n    .replace(blockLatex, (match: string, equation: string) => `$$${equation}$$`); // Convert block LaTeX\n\n  // Restore code blocks\n  return restoreCodeBlocks(processedContent, codeBlocks);\n};\n\n/**\n * Preprocesses LaTeX content by replacing delimiters and escaping certain characters.\n *\n * @param content The input string containing LaTeX expressions.\n * @returns The processed string with replaced delimiters and escaped characters.\n */\nexport function preprocessLaTeX(content: string): string {\n  // Step 1: Protect code blocks\n  const codeBlocks: string[] = [];\n  content = content.replace(/(```[\\s\\S]*?```|`[^`\\n]+`)/g, (match, code) => {\n    codeBlocks.push(code);\n    return `<<CODE_BLOCK_${codeBlocks.length - 1}>>`;\n  });\n\n  // Step 2: Protect existing LaTeX expressions\n  const latexExpressions: string[] = [];\n  content = content.replace(/(\\$\\$[\\s\\S]*?\\$\\$|\\\\\\[[\\s\\S]*?\\\\\\]|\\\\\\(.*?\\\\\\))/g, (match) => {\n    latexExpressions.push(match);\n    return `<<LATEX_${latexExpressions.length - 1}>>`;\n  });\n\n  // Step 3: Escape dollar signs that are likely currency indicators\n  content = content.replace(/\\$(?=\\d)/g, '\\\\$');\n\n  // Step 4: Restore LaTeX expressions\n  content = content.replace(/<<LATEX_(\\d+)>>/g, (_, index) => latexExpressions[parseInt(index)]);\n\n  // Step 5: Restore code blocks\n  content = content.replace(/<<CODE_BLOCK_(\\d+)>>/g, (_, index) => codeBlocks[parseInt(index)]);\n\n  // Step 6: Apply additional escaping functions\n  content = escapeBrackets(content);\n  content = escapeMhchem(content);\n\n  return content;\n}\n\nexport function escapeBrackets(text: string): string {\n  const pattern = /(```[\\S\\s]*?```|`.*?`)|\\\\\\[([\\S\\s]*?[^\\\\])\\\\]|\\\\\\((.*?)\\\\\\)/g;\n  return text.replace(\n    pattern,\n    (\n      match: string,\n      codeBlock: string | undefined,\n      squareBracket: string | undefined,\n      roundBracket: string | undefined,\n    ): string => {\n      if (codeBlock != null) {\n        return codeBlock;\n      } else if (squareBracket != null) {\n        return `$$${squareBracket}$$`;\n      } else if (roundBracket != null) {\n        return `$${roundBracket}$`;\n      }\n      return match;\n    },\n  );\n}\n\nexport function escapeMhchem(text: string) {\n  return text.replaceAll('$\\\\ce{', '$\\\\\\\\ce{').replaceAll('$\\\\pu{', '$\\\\\\\\pu{');\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/localStorage.ts",
    "content": "import { LocalStorageKeys, TConversation } from '~/data-provider/data-provider/src';\n\nexport function getLocalStorageItems() {\n  const items = {\n    lastSelectedModel: localStorage.getItem(LocalStorageKeys.LAST_MODEL) ?? '',\n    lastSelectedTools: localStorage.getItem(LocalStorageKeys.LAST_TOOLS) ?? '',\n    lastConversationSetup: localStorage.getItem(LocalStorageKeys.LAST_CONVO_SETUP + '_0') ?? '',\n  };\n\n  const lastSelectedModel = items.lastSelectedModel\n    ? (JSON.parse(items.lastSelectedModel) as Record<string, string | undefined> | null)\n    : {};\n  const lastSelectedTools = items.lastSelectedTools\n    ? (JSON.parse(items.lastSelectedTools) as string[] | null)\n    : [];\n  const lastConversationSetup = items.lastConversationSetup\n    ? (JSON.parse(items.lastConversationSetup) as Partial<TConversation> | null)\n    : {};\n\n  return {\n    lastSelectedModel,\n    lastSelectedTools,\n    lastConversationSetup,\n  };\n}\n\nexport function clearLocalStorage(skipFirst?: boolean) {\n  const keys = Object.keys(localStorage);\n  keys.forEach((key) => {\n    if (skipFirst === true && key.endsWith('0')) {\n      return;\n    }\n    if (\n      key.startsWith(LocalStorageKeys.ASST_ID_PREFIX) ||\n      key.startsWith(LocalStorageKeys.AGENT_ID_PREFIX) ||\n      key.startsWith(LocalStorageKeys.LAST_CONVO_SETUP) ||\n      key === LocalStorageKeys.LAST_SPEC ||\n      key === LocalStorageKeys.LAST_TOOLS ||\n      key === LocalStorageKeys.LAST_MODEL ||\n      key === LocalStorageKeys.FILES_TO_DELETE\n    ) {\n      localStorage.removeItem(key);\n    }\n  });\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/logger.ts",
    "content": "const isDevelopment = import.meta.env.MODE === 'development';\nconst isLoggerEnabled = import.meta.env.VITE_ENABLE_LOGGER === 'true';\nconst loggerFilter = import.meta.env.VITE_LOGGER_FILTER || '';\n\ntype LogFunction = (...args: unknown[]) => void;\n\nconst createLogFunction = (\n  consoleMethod: LogFunction,\n  type?: 'log' | 'warn' | 'error' | 'info' | 'debug' | 'dir',\n): LogFunction => {\n  return (...args: unknown[]) => {\n    if (isDevelopment || isLoggerEnabled) {\n      const tag = typeof args[0] === 'string' ? args[0] : '';\n      if (shouldLog(tag)) {\n        if (tag && typeof args[1] === 'string' && type === 'error') {\n          consoleMethod(`[${tag}] ${args[1]}`, ...args.slice(2));\n        } else if (tag && args.length > 1) {\n          consoleMethod(`[${tag}]`, ...args.slice(1));\n        } else {\n          consoleMethod(...args);\n        }\n      }\n    }\n  };\n};\n\nconst logger = {\n  log: createLogFunction(console.log, 'log'),\n  dir: createLogFunction(console.dir, 'dir'),\n  warn: createLogFunction(console.warn, 'warn'),\n  info: createLogFunction(console.info, 'info'),\n  error: createLogFunction(console.error, 'error'),\n  debug: createLogFunction(console.debug, 'debug'),\n};\n\nfunction shouldLog(tag: string): boolean {\n  if (!loggerFilter) {\n    return true;\n  }\n  /* If no tag is provided, always log */\n  if (!tag) {\n    return true;\n  }\n  return loggerFilter\n    .split(',')\n    .some((filter) => tag.toLowerCase().includes(filter.trim().toLowerCase()));\n}\n\nexport default logger;\n"
  },
  {
    "path": "src/frontend/client/src/utils/map.ts",
    "content": "import type * as t from '~/data-provider/data-provider/src';\nimport type { TPluginMap } from '~/common';\n\n/** Maps Attachments by `toolCallId` for quick lookup */\nexport function mapAttachments(attachments: Array<t.TAttachment | null | undefined>) {\n  const attachmentMap: Record<string, t.TAttachment[] | undefined> = {};\n\n  for (const attachment of attachments) {\n    if (attachment === null || attachment === undefined) {\n      continue;\n    }\n    const key = attachment.toolCallId || '';\n    if (key.length === 0) {\n      continue;\n    }\n\n    if (!attachmentMap[key]) {\n      attachmentMap[key] = [];\n    }\n\n    attachmentMap[key].push(attachment);\n  }\n\n  return attachmentMap;\n}\n\n/** Maps Files by `file_id` for quick lookup */\nexport function mapFiles(files: t.TFile[]) {\n  const fileMap = {} as Record<string, t.TFile>;\n\n  for (const file of files) {\n    fileMap[file.file_id] = file;\n  }\n\n  return fileMap;\n}\n\n/** Maps Assistants by `id` for quick lookup */\nexport function mapAssistants(assistants: t.Assistant[]) {\n  const assistantMap = {} as Record<string, t.Assistant>;\n\n  for (const assistant of assistants) {\n    assistantMap[assistant.id] = assistant;\n  }\n\n  return assistantMap;\n}\n\n/** Maps Agents by `id` for quick lookup */\nexport function mapAgents(agents: t.Agent[]) {\n  const agentsMap = {} as Record<string, t.Agent>;\n\n  for (const agent of agents) {\n    agentsMap[agent.id] = agent;\n  }\n\n  return agentsMap;\n}\n\n/** Maps Plugins by `pluginKey` for quick lookup */\nexport function mapPlugins(plugins: t.TPlugin[]): TPluginMap {\n  return plugins.reduce((acc, plugin) => {\n    acc[plugin.pluginKey] = plugin;\n    return acc;\n  }, {} as TPluginMap);\n}\n\n/** Transform query data to object with list and map fields */\nexport const selectPlugins = (\n  data: t.TPlugin[] | undefined,\n): {\n  list: t.TPlugin[];\n  map: TPluginMap;\n} => {\n  if (!data) {\n    return {\n      list: [],\n      map: {},\n    };\n  }\n\n  return {\n    list: data,\n    map: mapPlugins(data),\n  };\n};\n\n/** Transform array to TPlugin values */\nexport function processPlugins(\n  tools: (string | t.TPlugin)[],\n  allPlugins?: TPluginMap,\n): t.TPlugin[] {\n  return tools\n    .map((tool: string | t.TPlugin) => {\n      if (typeof tool === 'string') {\n        return allPlugins?.[tool];\n      }\n      return tool;\n    })\n    .filter((tool: t.TPlugin | undefined): tool is t.TPlugin => tool !== undefined);\n}\n\nexport function mapToolCalls(toolCalls: t.ToolCallResults = []): {\n  [key: string]: t.ToolCallResult[] | undefined;\n} {\n  return toolCalls.reduce((acc, call) => {\n    const key = `${call.messageId}_${call.partIndex ?? 0}_${call.blockIndex ?? 0}_${call.toolId}`;\n    const array = acc[key] ?? [];\n    array.push(call);\n    acc[key] = array;\n\n    return acc;\n  }, {} as { [key: string]: t.ToolCallResult[] | undefined });\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/mermaid.ts",
    "content": "import dedent from 'dedent';\n\nconst mermaid = dedent(`import React, { useEffect, useRef, useState } from \"react\";\nimport {\n  TransformWrapper,\n  TransformComponent,\n  ReactZoomPanPinchRef,\n} from \"react-zoom-pan-pinch\";\nimport mermaid from \"mermaid\";\nimport { ZoomIn, ZoomOut, RefreshCw } from \"lucide-react\";\nimport { Button } from \"/components/ui/button\";\n\ninterface MermaidDiagramProps {\n  content: string;\n}\n\nconst MermaidDiagram: React.FC<MermaidDiagramProps> = ({ content }) => {\n  const mermaidRef = useRef<HTMLDivElement>(null);\n  const transformRef = useRef<ReactZoomPanPinchRef>(null);\n  const [isRendered, setIsRendered] = useState(false);\n\n  useEffect(() => {\n    mermaid.initialize({\n      startOnLoad: false,\n      theme: \"base\",\n      themeVariables: {\n        background: \"#282C34\",\n        primaryColor: \"#333842\",\n        secondaryColor: \"#333842\",\n        tertiaryColor: \"#333842\",\n        primaryTextColor: \"#ABB2BF\",\n        secondaryTextColor: \"#ABB2BF\",\n        lineColor: \"#636D83\",\n        fontSize: \"16px\",\n        nodeBorder: \"#636D83\",\n        mainBkg: '#282C34',\n        altBackground: '#282C34',\n        textColor: '#ABB2BF',\n        edgeLabelBackground: '#282C34',\n        clusterBkg: '#282C34',\n        clusterBorder: \"#636D83\",\n        labelBoxBkgColor: \"#333842\",\n        labelBoxBorderColor: \"#636D83\",\n        labelTextColor: \"#ABB2BF\",\n      },\n      flowchart: {\n        curve: \"basis\",\n        nodeSpacing: 50,\n        rankSpacing: 50,\n        diagramPadding: 8,\n        htmlLabels: true,\n        useMaxWidth: true,\n        padding: 15,\n        wrappingWidth: 200,\n      },\n    });\n\n    const renderDiagram = async () => {\n      if (mermaidRef.current) {\n        try {\n          const { svg } = await mermaid.render(\"mermaid-diagram\", content);\n          mermaidRef.current.innerHTML = svg;\n\n          const svgElement = mermaidRef.current.querySelector(\"svg\");\n          if (svgElement) {\n            svgElement.style.width = \"100%\";\n            svgElement.style.height = \"100%\";\n\n            const pathElements = svgElement.querySelectorAll(\"path\");\n            pathElements.forEach((path) => {\n              path.style.strokeWidth = \"1.5px\";\n            });\n\n            const rectElements = svgElement.querySelectorAll(\"rect\");\n            rectElements.forEach((rect) => {\n              const parent = rect.parentElement;\n              if (parent && parent.classList.contains(\"node\")) {\n                rect.style.stroke = \"#636D83\";\n                rect.style.strokeWidth = \"1px\";\n              } else {\n                rect.style.stroke = \"none\";\n              }\n            });\n          }\n          setIsRendered(true);\n        } catch (error) {\n          console.error(\"Mermaid rendering error:\", error);\n          mermaidRef.current.innerHTML = \"Error rendering diagram\";\n        }\n      }\n    };\n\n    renderDiagram();\n  }, [content]);\n\n  const centerAndFitDiagram = () => {\n    if (transformRef.current && mermaidRef.current) {\n      const { centerView, zoomToElement } = transformRef.current;\n      zoomToElement(mermaidRef.current as HTMLElement);\n      centerView(1, 0);\n    }\n  };\n\n  useEffect(() => {\n    if (isRendered) {\n      centerAndFitDiagram();\n    }\n  }, [isRendered]);\n\n  const handlePanning = () => {\n    if (transformRef.current) {\n      const { state, instance } = transformRef.current;\n      if (!state) {\n        return;\n      }\n      const { scale, positionX, positionY } = state;\n      const { wrapperComponent, contentComponent } = instance;\n\n      if (wrapperComponent && contentComponent) {\n        const wrapperRect = wrapperComponent.getBoundingClientRect();\n        const contentRect = contentComponent.getBoundingClientRect();\n        const maxX = wrapperRect.width - contentRect.width * scale;\n        const maxY = wrapperRect.height - contentRect.height * scale;\n\n        let newX = positionX;\n        let newY = positionY;\n\n        if (newX > 0) {\n          newX = 0;\n        }\n        if (newY > 0) {\n          newY = 0;\n        }\n        if (newX < maxX) {\n          newX = maxX;\n        }\n        if (newY < maxY) {\n          newY = maxY;\n        }\n\n        if (newX !== positionX || newY !== positionY) {\n          instance.setTransformState(scale, newX, newY);\n        }\n      }\n    }\n  };\n\n  return (\n    <div className=\"relative h-screen w-screen cursor-move bg-[#282C34] p-5\">\n      <TransformWrapper\n        ref={transformRef}\n        initialScale={1}\n        minScale={0.1}\n        maxScale={10}\n        limitToBounds={false}\n        centerOnInit={true}\n        initialPositionY={0}\n        wheel={{ step: 0.1 }}\n        panning={{ velocityDisabled: true }}\n        alignmentAnimation={{ disabled: true }}\n        onPanning={handlePanning}\n      >\n        {({ zoomIn, zoomOut }) => (\n          <>\n            <TransformComponent\n              wrapperStyle={{\n                width: \"100%\",\n                height: \"100%\",\n                overflow: \"hidden\",\n              }}\n            >\n              <div\n                ref={mermaidRef}\n                style={{\n                  width: \"auto\",\n                  height: \"auto\",\n                  minWidth: \"100%\",\n                  minHeight: \"100%\",\n                }}\n              />\n            </TransformComponent>\n            <div className=\"absolute bottom-2 right-2 flex space-x-2\">\n              <Button onClick={() => zoomIn(0.1)} variant=\"outline\" size=\"icon\">\n                <ZoomIn className=\"h-4 w-4\" />\n              </Button>\n              <Button\n                onClick={() => zoomOut(0.1)}\n                variant=\"outline\"\n                size=\"icon\"\n              >\n                <ZoomOut className=\"h-4 w-4\" />\n              </Button>\n              <Button\n                onClick={centerAndFitDiagram}\n                variant=\"outline\"\n                size=\"icon\"\n              >\n                <RefreshCw className=\"h-4 w-4\" />\n              </Button>\n            </div>\n          </>\n        )}\n      </TransformWrapper>\n    </div>\n  );\n};\n\nexport default MermaidDiagram;`);\n\nconst wrapMermaidDiagram = (content: string) => {\n  return dedent(`import React from 'react';\nimport MermaidDiagram from '/components/ui/MermaidDiagram';\n\nexport default App = () => (\n  <MermaidDiagram content={\\`${content}\\`} />\n);\n`);\n};\n\nexport const getMermaidFiles = (content: string) => {\n  return {\n    'App.tsx': wrapMermaidDiagram(content),\n    'index.tsx': dedent(`import React, { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport \"./styles.css\";\n\nimport App from \"./App\";\n\nconst root = createRoot(document.getElementById(\"root\"));\nroot.render(<App />);\n;`),\n    '/components/ui/MermaidDiagram.tsx': mermaid,\n  };\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/messages.ts",
    "content": "import { ContentTypes, Constants } from '~/data-provider/data-provider/src';\nimport type { TMessage, TMessageContentParts } from '~/data-provider/data-provider/src';\n\nexport const getLengthAndLastTenChars = (str?: string): string => {\n  if (typeof str !== 'string' || str.length === 0) {\n    return '0';\n  }\n\n  const length = str.length;\n  const lastTenChars = str.slice(-10);\n  return `${length}${lastTenChars}`;\n};\n\nexport const getLatestText = (message?: TMessage | null, includeIndex?: boolean): string => {\n  if (!message) {\n    return '';\n  }\n  if (message.text) {\n    return message.text;\n  }\n  if (message.content && message.content.length > 0) {\n    for (let i = message.content.length - 1; i >= 0; i--) {\n      const part = message.content[i] as TMessageContentParts | undefined;\n      if (part && part.type !== ContentTypes.TEXT) {\n        continue;\n      }\n\n      const text = (typeof part?.text === 'string' ? part.text : part?.text.value) ?? '';\n      if (text.length > 0) {\n        if (includeIndex === true) {\n          return `${text}-${i}`;\n        } else {\n          return text;\n        }\n      } else {\n        continue;\n      }\n    }\n  }\n  return '';\n};\n\nexport const getAllContentText = (message?: TMessage | null): string => {\n  if (!message) {\n    return '';\n  }\n\n  if (message.text) {\n    return message.text;\n  }\n\n  if (message.content && message.content.length > 0) {\n    return message.content\n      .filter((part) => part.type === ContentTypes.TEXT)\n      .map((part) => (typeof part.text === 'string' ? part.text : part.text.value) || '')\n      .filter((text) => text.length > 0)\n      .join('\\n');\n  }\n\n  return '';\n};\n\nexport const getTextKey = (message?: TMessage | null, convoId?: string | null) => {\n  if (!message) {\n    return '';\n  }\n  const text = getLatestText(message, true);\n  return `${(message.messageId as string | null) ?? ''}${\n    Constants.COMMON_DIVIDER\n  }${getLengthAndLastTenChars(text)}${Constants.COMMON_DIVIDER}${\n    message.conversationId ?? convoId\n  }`;\n};\n\nexport const scrollToEnd = (callback?: () => void) => {\n  const messagesEndElement = document.getElementById('messages-end');\n  if (messagesEndElement) {\n    messagesEndElement.scrollIntoView({ behavior: 'instant' });\n    if (callback) {\n      callback();\n    }\n  }\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/presets.ts",
    "content": "import type { TPreset, TPlugin } from '~/data-provider/data-provider/src';\nimport { EModelEndpoint } from '~/data-provider/data-provider/src';\n\ntype TEndpoints = Array<string | EModelEndpoint>;\n\nexport const getPresetTitle = (preset: TPreset, mention?: boolean) => {\n  const {\n    endpoint,\n    title: presetTitle,\n    model,\n    tools,\n    promptPrefix,\n    chatGptLabel,\n    modelLabel,\n  } = preset;\n  const modelInfo = model ?? '';\n  let title = '';\n  let label = '';\n\n  const usesChatGPTLabel: TEndpoints = [\n    EModelEndpoint.azureOpenAI,\n    EModelEndpoint.openAI,\n    EModelEndpoint.custom,\n  ];\n  const usesModelLabel: TEndpoints = [EModelEndpoint.google, EModelEndpoint.anthropic];\n\n  if (endpoint != null && endpoint && usesChatGPTLabel.includes(endpoint)) {\n    label = chatGptLabel ?? '';\n  } else if (endpoint != null && endpoint && usesModelLabel.includes(endpoint)) {\n    label = modelLabel ?? '';\n  }\n  if (\n    label &&\n    presetTitle != null &&\n    presetTitle &&\n    label.toLowerCase().includes(presetTitle.toLowerCase())\n  ) {\n    title = label + ': ';\n    label = '';\n  } else if (presetTitle != null && presetTitle && presetTitle.trim() !== 'New Chat') {\n    title = presetTitle + ': ';\n  }\n\n  if (mention === true) {\n    return `${modelInfo}${label ? ` | ${label}` : ''}${\n      promptPrefix != null && promptPrefix ? ` | ${promptPrefix}` : ''\n    }${\n      tools\n        ? ` | ${tools\n          .map((tool: TPlugin | string) => {\n            if (typeof tool === 'string') {\n              return tool;\n            }\n            return tool.pluginKey;\n          })\n          .join(', ')}`\n        : ''\n    }`;\n  }\n\n  return `${title}${modelInfo}${label ? ` (${label})` : ''}`.trim();\n};\n\n/** Remove unavailable tools from the preset */\nexport const removeUnavailableTools = (\n  preset: TPreset,\n  availableTools: Record<string, TPlugin | undefined>,\n) => {\n  const newPreset = { ...preset };\n\n  if (newPreset.tools && newPreset.tools.length > 0) {\n    newPreset.tools = newPreset.tools\n      .filter((tool) => {\n        let pluginKey: string;\n        if (typeof tool === 'string') {\n          pluginKey = tool;\n        } else {\n          ({ pluginKey } = tool);\n        }\n\n        return !!availableTools[pluginKey];\n      })\n      .map((tool) => {\n        if (typeof tool === 'string') {\n          return tool;\n        }\n        return tool.pluginKey;\n      });\n  }\n\n  return newPreset;\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/promptGroups.ts",
    "content": "import { InfiniteCollections, QueryKeys } from '~/data-provider/data-provider/src';\nimport type { InfiniteData, QueryClient } from '@tanstack/react-query';\nimport type {\n  PromptGroupListResponse,\n  PromptGroupListData,\n  TPromptGroup,\n} from '~/data-provider/data-provider/src';\nimport {\n  addData,\n  deleteData,\n  updateData,\n  updateFields,\n  addToCacheList,\n  updateCacheList,\n  removeFromCacheList,\n  getRecordByProperty,\n} from './collection';\n\nexport const addPromptGroup = (\n  data: InfiniteData<PromptGroupListResponse>,\n  newPromptGroup: TPromptGroup,\n): PromptGroupListData => {\n  return addData<PromptGroupListResponse, TPromptGroup>(\n    data,\n    InfiniteCollections.PROMPT_GROUPS,\n    newPromptGroup,\n    (page) => page.promptGroups.findIndex((group) => group._id === newPromptGroup._id),\n  );\n};\n\nexport const updatePromptGroup = (\n  data: InfiniteData<PromptGroupListResponse>,\n  updatedPromptGroup: TPromptGroup,\n): PromptGroupListData => {\n  return updateData<PromptGroupListResponse, TPromptGroup>(\n    data,\n    InfiniteCollections.PROMPT_GROUPS,\n    updatedPromptGroup,\n    (page) => page.promptGroups.findIndex((group) => group._id === updatedPromptGroup._id),\n  );\n};\n\nexport const deletePromptGroup = (\n  data: InfiniteData<PromptGroupListResponse>,\n  groupId: string,\n): PromptGroupListData => {\n  return deleteData<PromptGroupListResponse, PromptGroupListData>(\n    data,\n    InfiniteCollections.PROMPT_GROUPS,\n    (page) => page.promptGroups.findIndex((group) => group._id === groupId),\n  );\n};\n\nexport const updateGroupFields = (\n  data: InfiniteData<PromptGroupListResponse>,\n  updatedGroup: Partial<TPromptGroup>,\n  callback?: (group: TPromptGroup) => void,\n): InfiniteData<PromptGroupListResponse> => {\n  return updateFields<PromptGroupListResponse, TPromptGroup>(\n    data,\n    updatedGroup,\n    InfiniteCollections.PROMPT_GROUPS,\n    '_id',\n    callback,\n  );\n};\n\nexport const getSnippet = (promptText: string, length = 56) => {\n  return promptText.length > length ? `${promptText.slice(0, length - 3)}...` : promptText;\n};\n\nexport const findPromptGroup = (\n  data: InfiniteData<PromptGroupListResponse>,\n  findProperty: (group: TPromptGroup) => boolean,\n): TPromptGroup | undefined => {\n  return getRecordByProperty<PromptGroupListResponse, TPromptGroup>(\n    data,\n    InfiniteCollections.PROMPT_GROUPS,\n    findProperty,\n  );\n};\n\nexport const addGroupToAll = (queryClient: QueryClient, newGroup: TPromptGroup) => {\n  addToCacheList<TPromptGroup>(queryClient, [QueryKeys.allPromptGroups], newGroup);\n};\n\nexport const updateGroupInAll = (\n  queryClient: QueryClient,\n  updatedGroup: Partial<TPromptGroup> & { _id: string },\n) => {\n  updateCacheList<TPromptGroup>({\n    queryClient,\n    queryKey: [QueryKeys.allPromptGroups],\n    searchProperty: '_id',\n    updateData: updatedGroup,\n    searchValue: updatedGroup._id,\n  });\n};\n\nexport const removeGroupFromAll = (queryClient: QueryClient, groupId: string) => {\n  removeFromCacheList<TPromptGroup>(queryClient, [QueryKeys.allPromptGroups], '_id', groupId);\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/prompts.ts",
    "content": "import { format } from 'date-fns';\nimport type { TUser, TPromptGroup } from '~/data-provider/data-provider/src';\n\nexport function replaceSpecialVars({ text, user }: { text: string; user?: TUser }) {\n  if (!text) {\n    return text;\n  }\n\n  const currentDate = format(new Date(), 'yyyy-MM-dd');\n  text = text.replace(/{{current_date}}/gi, currentDate);\n\n  if (!user) {\n    return text;\n  }\n  const currentUser = user.name;\n  text = text.replace(/{{current_user}}/gi, currentUser);\n\n  return text;\n}\n\n/**\n * Detects the presence of variables in the given text, excluding {{current_date}} and {{current_user}}.\n */\nexport const detectVariables = (text: string): boolean => {\n  const regex = /{{(?!current_date|current_user)[^{}]{1,}}}/gi;\n  return regex.test(text);\n};\n\nexport const wrapVariable = (variable: string) => `{{${variable}}}`;\n\nexport const extractUniqueVariables = (text: string): string[] => {\n  const regex = /{{(.*?)}}/g;\n  let match: RegExpExecArray | null;\n  const variables = new Set<string>();\n  while ((match = regex.exec(text)) !== null) {\n    variables.add(match[1]);\n  }\n  return Array.from(variables);\n};\n\nexport const extractVariableInfo = (text: string) => {\n  const regex = /{{(.*?)}}/g;\n  let match: RegExpExecArray | null;\n  const allVariables: string[] = [];\n  const uniqueVariables: string[] = [];\n  const repeatedVariables: Set<string> = new Set();\n  const variableCount: Map<string, number> = new Map();\n  const variableIndexMap: Map<string, number> = new Map();\n\n  while ((match = regex.exec(text)) !== null) {\n    const variable = match[1];\n    allVariables.push(variable);\n\n    const count = variableCount.get(variable) ?? 0;\n    variableCount.set(variable, count + 1);\n\n    if (count > 0) {\n      repeatedVariables.add(variable);\n    } else {\n      uniqueVariables.push(variable);\n      variableIndexMap.set(variable, uniqueVariables.length - 1);\n    }\n  }\n\n  return {\n    allVariables,\n    uniqueVariables,\n    repeatedVariables,\n    variableIndexMap,\n  };\n};\n\nexport function formatDateTime(dateTimeString: string) {\n  const date = new Date(dateTimeString);\n\n  const month = date.getMonth() + 1;\n  const day = date.getDate();\n  const year = date.getFullYear();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n\n  const formattedMinutes = minutes.toString().padStart(2, '0');\n  const formattedSeconds = seconds.toString().padStart(2, '0');\n\n  const ampm = hours >= 12 ? 'PM' : 'AM';\n\n  const formattedHours = hours % 12 || 12;\n\n  const formattedDate = `${month}/${day}/${year}`;\n  const formattedTime = `${formattedHours}:${formattedMinutes}:${formattedSeconds} ${ampm}`;\n\n  return `${formattedDate}, ${formattedTime}`;\n}\n\nexport const mapPromptGroups = (groups: TPromptGroup[]): Record<string, TPromptGroup> => {\n  return groups.reduce((acc, group) => {\n    if (!group._id) {\n      return acc;\n    }\n    acc[group._id] = group;\n    return acc;\n  }, {} as Record<string, TPromptGroup>);\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/resetConvo.ts",
    "content": "import type { TMessage } from '~/data-provider/data-provider/src';\n\nexport default function resetConvo(messages: TMessage[], sender: string) {\n  if (messages.length === 0) {\n    return false;\n  }\n  const modelMessages = messages.filter((message) => !message.isCreatedByUser);\n  const lastModel = modelMessages[modelMessages.length - 1].sender;\n  if (lastModel !== sender) {\n    console.log(\n      'Model change! Resetting convo. Original messages: ',\n      messages,\n      'filtered messages: ',\n      modelMessages,\n      'last model: ',\n      lastModel,\n      'sender: ',\n      sender,\n    );\n    return true;\n  }\n\n  return false;\n}\n"
  },
  {
    "path": "src/frontend/client/src/utils/textarea.ts",
    "content": "/**\n * Insert text at the cursor position in a textarea.\n */\nexport function insertTextAtCursor(element: HTMLTextAreaElement, textToInsert: string) {\n  element.focus();\n\n  // Use the browser's built-in undoable actions if possible\n  if (window.getSelection() && document.queryCommandSupported('insertText')) {\n    document.execCommand('insertText', false, textToInsert);\n  } else {\n    console.warn('insertTextAtCursor: document.execCommand is not supported');\n    const startPos = element.selectionStart;\n    const endPos = element.selectionEnd;\n    const beforeText = element.value.substring(0, startPos);\n    const afterText = element.value.substring(endPos);\n    element.value = beforeText + textToInsert + afterText;\n    element.selectionStart = element.selectionEnd = startPos + textToInsert.length;\n    const event = new Event('input', { bubbles: true });\n    element.dispatchEvent(event);\n  }\n}\n\n/**\n * Necessary resize helper for edge cases where paste doesn't update the container height.\n *\n 1) Resetting the height to 'auto' forces the component to recalculate height based on its current content\n\n 2) Forcing a reflow. Accessing offsetHeight will cause a reflow of the page,\n    ensuring that the reset height takes effect before resetting back to the scrollHeight.\n    This step is necessary because changes to the DOM do not instantly cause reflows.\n\n 3) Reseting back to scrollHeight reads and applies the ideal height for the current content dynamically\n */\nexport const forceResize = (element: HTMLTextAreaElement | null) => {\n  if (!element) {\n    return;\n  }\n  element.style.height = 'auto';\n  element.style.height = `${element.scrollHeight}px`;\n};\n\n/**\n * Necessary undo event helper for edge cases where undoing pasted content leaves newlines filling the previous container height.\n */\nexport const trimUndoneRange = (textAreaRef: React.RefObject<HTMLTextAreaElement>) => {\n  if (!textAreaRef.current) {\n    return;\n  }\n  const { value, selectionStart, selectionEnd } = textAreaRef.current;\n  const afterCursor = value.substring(selectionEnd).trim();\n  if (afterCursor.length) {\n    return;\n  }\n  const beforeCursor = value.substring(0, selectionStart);\n  const newValue = beforeCursor + afterCursor;\n  textAreaRef.current.value = newValue;\n  textAreaRef.current.setSelectionRange(selectionStart, selectionStart);\n};\n\n/**\n * Remove the specified character from the end of the textarea's text if it's present.\n * This function ensures that the specified character is only removed if it's the last character.\n *\n * @param {HTMLTextAreaElement} textarea - The textarea element where text manipulation will occur.\n * @param {string} charToRemove - The character to remove if it's the last character in the textarea's value.\n */\nexport function removeCharIfLast(textarea: HTMLTextAreaElement, charToRemove: string) {\n  if (textarea.value.endsWith(charToRemove)) {\n    textarea.value = textarea.value.slice(0, -1);\n    textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n    textarea.dispatchEvent(new Event('input', { bubbles: true }));\n  }\n\n  textarea.focus();\n}\n\n/**\n * Check if the textarea is scrollable.\n * @param element\n * @returns\n */\nexport const checkIfScrollable = (element: HTMLTextAreaElement | null) => {\n  if (!element) {\n    return false;\n  }\n  return element.scrollHeight > element.clientHeight;\n};\n"
  },
  {
    "path": "src/frontend/client/src/utils/theme.ts",
    "content": "export const applyFontSize = (val: string) => {\n  const root = document.documentElement;\n  const size = val.split('-')[1]; // This will be 'xs', 'sm', 'base', 'lg', or 'xl'\n\n  switch (size) {\n    case 'xs':\n      root.style.setProperty('--markdown-font-size', '0.75rem'); // 12px\n      break;\n    case 'sm':\n      root.style.setProperty('--markdown-font-size', '0.875rem'); // 14px\n      break;\n    case 'base':\n      root.style.setProperty('--markdown-font-size', '1rem'); // 16px\n      break;\n    case 'lg':\n      root.style.setProperty('--markdown-font-size', '1.125rem'); // 18px\n      break;\n    case 'xl':\n      root.style.setProperty('--markdown-font-size', '1.25rem'); // 20px\n      break;\n  }\n};\n\nexport const getInitialTheme = () => {\n  if (typeof window !== 'undefined' && window.localStorage) {\n    // const storedPrefs = window.localStorage.getItem('color-theme') || 'light';\n    const storedPrefs = 'light';\n    if (typeof storedPrefs === 'string') {\n      return storedPrefs;\n    }\n\n    const userMedia = window.matchMedia('(prefers-color-scheme: light)');\n    if (userMedia.matches) {\n      return 'light';\n    }\n  }\n\n  return 'light'; // light theme as the default;\n};\n"
  },
  {
    "path": "src/frontend/client/src/vditor.css",
    "content": ".linsight-vditor .vditor-reset {\r\n\tborder-radius: 8px;\r\n\tfont-size: 16px;\r\n\tpadding: 0 20px 160px 14px ;\r\n\tscrollbar-color: transparent transparent;\r\n}\r\n\r\n.linsight-vditor .vditor-toolbar {\r\n\tdisplay: none;\r\n}\r\n\r\n.linsight-vditor .vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\r\n\topacity: 0.8;\r\n}\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h1:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h2:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h3:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h4:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h5:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h6:before,\r\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\r\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\r\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\r\n.vditor-wysiwyg .vditor-toc:before {\r\n  margin-left: -20px;\r\n  padding-right: 0;\r\n  font-size: 12px;\r\n  position: relative;\r\n  left: 6px;\r\n}\r\n.linsi-span {\r\n\tbackground: #E9F1FF;\r\n\tcolor: #2A3F73;\r\n\tfont-size: 14px;\r\n\tpadding: 1px 8px;\r\n\tborder-radius: 4px;\r\n}\r\n\r\n.linsi-error {\r\n\tbackground: #ffece9;\r\n\tcolor: #a13434;\r\n\tfont-size: 14px;\r\n\tpadding: 1px 8px;\r\n\tborder-radius: 4px;\r\n}\r\n.linsight-vditor  .vditor-reset h1,\r\n.linsight-vditor  .vditor-reset h2,\r\n.linsight-vditor  .vditor-reset h3,\r\n.linsight-vditor  .vditor-reset h4,\r\n.linsight-vditor  .vditor-reset h5,\r\n.linsight-vditor  .vditor-reset h6 {\r\n  margin-top: 22px;\r\n  margin-bottom: 16px;\r\n  font-weight: 500;\r\n  line-height: 1.4;\r\n}\r\n.linsight-vditor .vditor-reset blockquote{\r\n\tmargin: 0 0 14px 0;\r\n\tborder-left: 2px solid #3370ff;\r\n}\r\n.linsight-vditor  .vditor-reset ul {\r\n\tlist-style-type: none;\r\n}\r\n.linsight-vditor .vditor-reset ul > li:not(:has(input[type=\"checkbox\"]))::before {\r\n  content: \"•\";\r\n  color: #3370ff;\r\n  display: inline-block;\r\n  margin-left: -20px;\r\n  margin-right: 20px;\r\n  width: 0;\r\n  font-size: 0.8em;\r\n  transform: scale(1.25);\r\n  font-family: PingFangSC-Regular, PingFang SC;\r\n}\r\n.linsight-vditor .vditor-reset code:not(.hljs):not(.highlight-chroma)  {\r\n    border-radius: 4px;\r\n    margin-left: 2px;\r\n    margin-right: 2px;\r\n    border: 1px solid #dee0e3;\r\n    background-color: #f5f6f7;\r\n    word-spacing: normal;\r\n    line-height: 1.6;\r\n    padding: 0 2px;\r\n\tfont-size: 16px;\r\n\tfont-family: monospace, Menlo-Regular, Menlo, Monaco, Consolas, Courier New;\r\n}\r\n.linsight-vditor .vditor-reset pre{\r\n    border-radius: 0;\r\n    display: block;\r\n    border: 1px solid #dee0e3;\r\n    background-color: #f5f6f7;\r\n    padding: 10px;\r\n    font-size: 14px;\r\n    overflow-x: auto;\t\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"] {\r\n  -webkit-appearance: none ;\r\n  -moz-appearance: none ;\r\n  appearance: none ;\r\n  width: 16px ;\r\n  height: 16px ;\r\n  margin: 0 8px 0 0 ;\r\n  border: 1px solid #000 ;\r\n  border-radius: 3px ;\r\n  background: transparent ;\r\n  vertical-align: middle ;\r\n  position: relative ;\r\n  cursor: pointer ;\r\n  outline: none ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:disabled {\r\n  opacity: 0.6 ;\r\n  cursor: not-allowed ;\r\n  border-color: #ccc ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:checked::before {\r\n  content: \"\" ;\r\n  position: absolute ;\r\n  top: 50% ;\r\n  left: 50% ;\r\n  width: 14px ;\r\n  height: 14px ;\r\n  transform: translate(-50%, -50%) ;\r\n  background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLjU4OSAzLjkwM2wuODA4LjgwOGEuMzUuMzUgMCAwMTAgLjQ5NUw2LjE4IDEwLjQyNWEuMzUuMzUgMCAwMS0uNDk1IDBMMi43MDMgNy40NDRhLjM1LjM1IDAgMDEwLS40OTVsLjgwOC0uODA4YS4zNS4zNSAwIDAxLjQ5NSAwbDEuOTI1IDEuOTI0IDQuMTYzLTQuMTYzYS4zNS4zNSAwIDAxLjQ5NSAweiIgZmlsbD0iIzMzNzBGRiIvPjwvc3ZnPg==') no-repeat center/contain ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:checked {\r\n  background-image: none ; \r\n}\r\n    \r\n.vditor-wysiwyg a{\r\n\tword-wrap: break-word;\r\n    white-space: pre-wrap;\r\n    hyphens: auto;\r\n    word-break: break-word;\r\n    color: #3370ff;\r\n    text-decoration: none;\r\n}"
  },
  {
    "path": "src/frontend/client/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n\ninterface ImportMetaEnv {\n  readonly VITE_ENABLE_LOGGER: string;\n  readonly VITE_LOGGER_FILTER: string;\n  // Add other env variables here\n}\n\ninterface ImportMeta {\n  readonly env: ImportMetaEnv;\n}\n"
  },
  {
    "path": "src/frontend/client/tailwind.config.cjs",
    "content": "// const { fontFamily } = require('tailwindcss/defaultTheme');\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: ['./src/**/*.{js,jsx,ts,tsx}'],\n  // darkMode: 'class',\n  darkMode: ['class'],\n  theme: {\n    fontFamily: {\n      sans: ['Inter', 'sans-serif'],\n      mono: ['Roboto Mono', 'monospace'],\n    },\n    // fontFamily: {\n    //   sans: ['Söhne', 'sans-serif'],\n    //   mono: ['Söhne Mono', 'monospace'],\n    // },\n    extend: {\n      width: {\n        authPageWidth: '370px',\n      },\n      keyframes: {\n        'accordion-down': {\n          from: { height: 0 },\n          to: { height: 'var(--radix-accordion-content-height)' },\n        },\n        'accordion-up': {\n          from: { height: 'var(--radix-accordion-content-height)' },\n          to: { height: 0 },\n        },\n      },\n      animation: {\n        'fade-in': 'fadeIn 0.5s ease-out forwards',\n        'accordion-down': 'accordion-down 0.2s ease-out',\n        'accordion-up': 'accordion-up 0.2s ease-out',\n      },\n      colors: {\n        gray: {\n          20: '#ececf1',\n          50: '#f7f7f8',\n          100: '#ececec',\n          200: '#e3e3e3',\n          300: '#cdcdcd',\n          400: '#999696',\n          500: '#595959',\n          600: '#424242',\n          700: '#2f2f2f',\n          800: '#212121',\n          850: '#171717',\n          900: '#0d0d0d',\n        },\n        green: {\n          50: '#f1f9f7',\n          100: '#def2ed',\n          200: '#a6e5d6',\n          300: '#6dc8b9',\n          400: '#41a79d',\n          500: '#10a37f',\n          550: '#349072',\n          600: '#126e6b',\n          700: '#0a4f53',\n          800: '#06373e',\n          900: '#031f29',\n        },\n        'blue-main': '#4d6bfe',\n        'brand-purple': '#ab68ff',\n        'presentation': 'var(--presentation)',\n        'text-primary': 'var(--text-primary)',\n        'text-secondary': 'var(--text-secondary)',\n        'text-secondary-alt': 'var(--text-secondary-alt)',\n        'text-tertiary': 'var(--text-tertiary)',\n        'ring-primary': 'var(--ring-primary)',\n        'header-primary': 'var(--header-primary)',\n        'header-hover': 'var(--header-hover)',\n        'header-button-hover': 'var(--header-button-hover)',\n        'surface-active': 'var(--surface-active)',\n        'surface-active-alt': 'var(--surface-active-alt)',\n        'surface-hover': 'var(--surface-hover)',\n        'surface-hover-alt': 'var(--surface-hover-alt)',\n        'surface-primary': 'var(--surface-primary)',\n        'surface-primary-alt': 'var(--surface-primary-alt)',\n        'surface-primary-contrast': 'var(--surface-primary-contrast)',\n        'surface-secondary': 'var(--surface-secondary)',\n        'surface-secondary-alt': 'var(--surface-secondary-alt)',\n        'surface-tertiary': 'var(--surface-tertiary)',\n        'surface-tertiary-alt': 'var(--surface-tertiary-alt)',\n        'surface-dialog': 'var(--surface-dialog)',\n        'surface-submit': 'var(--surface-submit)',\n        'surface-submit-hover': 'var(--surface-submit-hover)',\n        'surface-destructive': 'var(--surface-destructive)',\n        'surface-destructive-hover': 'var(--surface-destructive-hover)',\n        'border-light': 'var(--border-light)',\n        'border-medium': 'var(--border-medium)',\n        'border-medium-alt': 'var(--border-medium-alt)',\n        'border-heavy': 'var(--border-heavy)',\n        'border-xheavy': 'var(--border-xheavy)',\n        /* These are test styles */\n        border: 'hsl(var(--border))',\n        input: 'hsl(var(--input))',\n        ['switch-unchecked']: 'hsl(var(--switch-unchecked))',\n        ring: 'hsl(var(--ring))',\n        background: 'hsl(var(--background))',\n        foreground: 'hsl(var(--foreground))',\n        primary: {\n          DEFAULT: 'hsl(var(--primary))',\n          foreground: 'hsl(var(--primary-foreground))',\n        },\n        secondary: {\n          DEFAULT: 'hsl(var(--secondary))',\n          foreground: 'hsl(var(--secondary-foreground))',\n        },\n        destructive: {\n          DEFAULT: 'hsl(var(--destructive))',\n          foreground: 'hsl(var(--destructive-foreground))',\n        },\n        muted: {\n          DEFAULT: 'hsl(var(--muted))',\n          foreground: 'hsl(var(--muted-foreground))',\n        },\n        accent: {\n          DEFAULT: 'hsl(var(--accent))',\n          foreground: 'hsl(var(--accent-foreground))',\n        },\n        card: {\n          DEFAULT: 'hsl(var(--card))',\n          foreground: 'hsl(var(--card-foreground))',\n        },\n      },\n      borderRadius: {\n        lg: 'var(--radius)',\n        md: 'calc(var(--radius) - 2px)',\n        sm: 'calc(var(--radius) - 4px)',\n      },\n    },\n  },\n  plugins: [\n    require('tailwindcss-animate'),\n    require('tailwindcss-radix')(),\n    // require('@tailwindcss/typography'),\n  ],\n};\n"
  },
  {
    "path": "src/frontend/client/test/layout-test-utils.tsx",
    "content": "import './matchMedia.mock';\nimport React from 'react';\nimport { render as rtlRender } from '@testing-library/react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { AuthContextProvider } from '~/hooks/AuthContext';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { RecoilRoot } from 'recoil';\n\nconst client = new QueryClient();\n\nfunction renderWithProvidersWrapper(ui, { ...options } = {}) {\n  function Wrapper({ children }) {\n    return (\n      <QueryClientProvider client={client}>\n        <RecoilRoot>\n          <Router>\n            <AuthContextProvider\n              authConfig={{\n                loginRedirect: '',\n                test: true,\n              }}\n            >\n              {children}\n            </AuthContextProvider>\n          </Router>\n        </RecoilRoot>\n      </QueryClientProvider>\n    );\n  }\n  return rtlRender(ui, { wrapper: Wrapper, ...options });\n}\nexport * from '@testing-library/react';\nexport { renderWithProvidersWrapper as render };\n"
  },
  {
    "path": "src/frontend/client/test/localStorage.mock",
    "content": "let store = {};\nObject.defineProperty(window, 'localStorage', {\n    writable: true,\n    value: {\n        getItem: jest.fn().mockImplementation((key) => {\n            if(key in store) {\n                return store[key];\n            }\n            return null;\n        }),\n        setItem: jest.fn().mockImplementation((key, value) => {\n            store[key] = value.toString();\n        }),\n        clear: jest.fn().mockImplementation(() => {\n            store = {};\n        }),\n        removeItem: jest.fn().mockImplementation(() => {\n            delete store[key];\n        }),\n    },\n});"
  },
  {
    "path": "src/frontend/client/test/matchMedia.mock",
    "content": "Object.defineProperty(window, 'matchMedia', {\n  writable: true,\n  value: jest.fn().mockImplementation((query) => ({\n    matches: false,\n    media: query,\n    onchange: null,\n    addListener: jest.fn(), // deprecated\n    removeListener: jest.fn(), // deprecated\n    addEventListener: jest.fn(),\n    removeEventListener: jest.fn(),\n    dispatchEvent: jest.fn(),\n  })),\n});"
  },
  {
    "path": "src/frontend/client/test/resizeObserver.mock",
    "content": "Object.defineProperty(window, 'ResizeObserver', {\n  writable: true,\n  value: jest.fn().mockImplementation(() => ({\n    disconnect: jest.fn(),\n    observe: jest.fn(),\n    unobserve: jest.fn(),\n  }))\n});"
  },
  {
    "path": "src/frontend/client/test/setupTests.js",
    "content": "/* This file is automatically executed before running tests\n * https://create-react-app.dev/docs/running-tests/#initializing-test-environment\n */\n\n// react-testing-library renders your components to document.body,\n// this adds jest-dom's custom assertions\n// https://github.com/testing-library/jest-dom#table-of-contents\nimport '@testing-library/jest-dom';\n\n// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom/extend-expect';\n\n// Mock canvas when run unit test cases with jest.\n// 'react-lottie' uses canvas\nimport 'jest-canvas-mock';\n\nbeforeEach(() => {\n  jest.clearAllMocks();\n});\n\njest.mock('react-i18next', () => {\n  const actual = jest.requireActual('react-i18next');\n  return {\n    ...actual,\n    useTranslation: () => {\n      const i18n = require('~/locales/i18n').default;\n      return {\n        t: (key, options) => i18n.t(key, options),\n        i18n: {\n          ...i18n,\n          changeLanguage: jest.fn(),\n        },\n      };\n    },\n    initReactI18next: {\n      type: '3rdParty',\n      init: jest.fn(),\n    },\n  };\n});"
  },
  {
    "path": "src/frontend/client/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ESNext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": false,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noImplicitAny\": false,\n    \"noEmit\": false,\n    \"declaration\": true,\n    \"declarationDir\": \"./types\",\n    \"jsx\": \"preserve\",\n    \"baseUrl\": \"..\",\n    \"paths\": {\n      \"~/*\": [\"./client/src/*\"],\n      \"test/*\": [\"./client/test/*\"],\n      \"*\": [\"./client/*\", \"../node_modules/*\"],\n      \"~/data-provider/data-provider/src/*\": [\"./packages/data-provider/*\"]\n    }\n  },\n  \"types\": [\"node\", \"jest\", \"@testing-library/jest-dom\"],\n  \"exclude\": [\"node_modules\", \"vite.config.ts\"],\n  \"include\": [\n    \"src/**/*\",\n    \"test/**/*\",\n    \"../e2e/**/*\",\n    \"test/setupTests.js\",\n    \"env.d.ts\",\n    \"../config/translations/**/*.ts\"\n  ]\n}\n"
  },
  {
    "path": "src/frontend/client/vite.config.ts",
    "content": "import react from '@vitejs/plugin-react';\nimport path from 'path';\nimport { visualizer } from \"rollup-plugin-visualizer\";\nimport type { Plugin } from 'vite';\nimport { defineConfig } from 'vite';\nimport { compression } from 'vite-plugin-compression2';\nimport { nodePolyfills } from 'vite-plugin-node-polyfills';\nimport { VitePWA } from 'vite-plugin-pwa';\nimport { viteStaticCopy } from 'vite-plugin-static-copy';\nimport { createHtmlPlugin } from 'vite-plugin-html';\n\nconst app_env = {\n  BASE_URL: '/workspace',\n  BISHENG_HOST: '/admin'\n}\n// https://vitejs.dev/config/\nexport default defineConfig(({ command }) => ({\n  base: app_env.BASE_URL || '/',\n  define: {\n    __APP_ENV__: JSON.stringify(app_env)\n  },\n  server: {\n    host: '0.0.0.0',\n    port: 4001,\n    strictPort: false,\n    proxy: {\n      // '^/api/': {\n      //   target: 'http://192.168.106.116:7861',\n      //   // target: 'http://localhost:3080',\n      //   changeOrigin: true,\n      // },\n      '^(/workspace)?/bisheng': {\n        target: \"http://192.168.106.120:3002\",\n        changeOrigin: true,\n        secure: false,\n        rewrite: (path) => {\n          return path.replace(/^\\/workspace/, '');\n        },\n      },\n      '/workspace/api': {\n        target: 'http://192.168.106.120:3002',\n        changeOrigin: true,\n        secure: false,\n        ws: true,\n        configure: (proxy, options) => {\n          proxy.on('proxyReq', (proxyReq, req, res) => {\n            console.log('Proxying request to:', proxyReq.path);\n          });\n        },\n        rewrite: (path) => {\n          return path.replace(/^\\/workspace/, '');\n        },\n      },\n      '/workspace/tmp-dir': {\n        target: 'http://192.168.106.120:3002',\n        changeOrigin: true,\n        secure: false,\n        rewrite: (path) => {\n          return path.replace(/^\\/workspace/, '');\n        },\n      },\n    },\n  },\n  // Set the directory where environment variables are loaded from and restrict prefixes\n  envDir: '../',\n  envPrefix: ['VITE_', 'SCRIPT_', 'DOMAIN_', 'ALLOW_'],\n  plugins: [\n    react(),\n    nodePolyfills(),\n    VitePWA({\n      injectRegister: 'auto', // 'auto' | 'manual' | 'disabled'\n      registerType: 'autoUpdate', // 'prompt' | 'autoUpdate'\n      devOptions: {\n        enabled: false, // disable service worker registration in development mode\n      },\n      useCredentials: true,\n      includeManifestIcons: false,\n      workbox: {\n        globPatterns: [\n          '**/*.{js,css,html}',\n          'assets/favicon*.png',\n          'assets/icon-*.png',\n          'assets/apple-touch-icon*.png',\n          'assets/maskable-icon.png',\n          'manifest.webmanifest',\n        ],\n        globIgnores: ['images/**/*', '**/*.map', 'index.html'],\n        maximumFileSizeToCacheInBytes: 4 * 1024 * 1024,\n        navigateFallbackDenylist: [/^\\/oauth/],\n      },\n      includeAssets: [],\n      // manifest: {\n      //   name: 'Deepseek',\n      //   short_name: 'Deepseek',\n      //   display: 'standalone',\n      //   background_color: '#000000',\n      //   theme_color: '#009688',\n      //   icons: [\n      //     {\n      //       src: 'assets/favicon-32x32.png',\n      //       sizes: '32x32',\n      //       type: 'image/png',\n      //     },\n      //     {\n      //       src: 'assets/favicon-16x16.png',\n      //       sizes: '16x16',\n      //       type: 'image/png',\n      //     },\n      //     {\n      //       src: 'assets/apple-touch-icon-180x180.png',\n      //       sizes: '180x180',\n      //       type: 'image/png',\n      //     },\n      //     {\n      //       src: 'assets/icon-192x192.png',\n      //       sizes: '192x192',\n      //       type: 'image/png',\n      //     },\n      //     {\n      //       src: 'assets/maskable-icon.png',\n      //       sizes: '512x512',\n      //       type: 'image/png',\n      //       purpose: 'maskable',\n      //     },\n      //   ],\n      // },\n    }),\n    sourcemapExclude({ excludeNodeModules: true }),\n    compression({\n      threshold: 10240,\n    }),\n    createHtmlPlugin({}),\n    {\n      name: 'clear-placeholder',\n      transformIndexHtml(html) {\n        return html.replace('PROTOCAL_IGNORE/', '/');\n      }\n    },\n    viteStaticCopy({\n      targets: [\n        {\n          src: 'node_modules/pdfjs-dist/build/pdf.worker.min.js',\n          dest: './'\n        }\n      ]\n    }),\n    // visualizer({\n    //   open: true, // 打包后自动打开分析页面\n    //   filename: \"stats.html\",\n    // })\n  ],\n  publicDir: './public',\n  build: {\n    sourcemap: process.env.NODE_ENV === 'development',\n    outDir: './build',\n    minify: 'terser',\n    rollupOptions: {\n      preserveEntrySignatures: 'strict',\n      output: {\n        manualChunks(id: string) {\n          const normalizedId = id.replace(/\\\\/g, '/');\n          if (normalizedId.includes('node_modules')) {\n            // High-impact chunking for large libraries\n            if (normalizedId.includes('@codesandbox/sandpack')) {\n              return 'sandpack';\n            }\n            if (normalizedId.includes('react-virtualized')) {\n              return 'virtualization';\n            }\n            if (normalizedId.includes('i18next') || normalizedId.includes('react-i18next')) {\n              return 'i18n';\n            }\n            if (normalizedId.includes('lodash')) {\n              return 'utilities';\n            }\n            if (normalizedId.includes('date-fns')) {\n              return 'date-utils';\n            }\n            if (normalizedId.includes('@dicebear')) {\n              return 'avatars';\n            }\n            // if (normalizedId.includes('react-dnd') || normalizedId.includes('react-flip-toolkit')) {\n            //   return 'react-interactions';\n            // }\n            if (normalizedId.includes('react-hook-form')) {\n              return 'forms';\n            }\n            if (normalizedId.includes('react-router-dom')) {\n              return 'routing';\n            }\n            if (\n              normalizedId.includes('qrcode.react') ||\n              normalizedId.includes('@marsidev/react-turnstile')\n            ) {\n              return 'security-ui';\n            }\n\n            if (normalizedId.includes('@codemirror/view')) {\n              return 'codemirror-view';\n            }\n            if (normalizedId.includes('@codemirror/state')) {\n              return 'codemirror-state';\n            }\n            if (normalizedId.includes('@codemirror/language')) {\n              return 'codemirror-language';\n            }\n            if (normalizedId.includes('@codemirror')) {\n              return 'codemirror-core';\n            }\n\n            if (\n              normalizedId.includes('react-markdown') ||\n              normalizedId.includes('remark-') ||\n              normalizedId.includes('rehype-')\n            ) {\n              return 'markdown-processing';\n            }\n            if (normalizedId.includes('monaco-editor') || normalizedId.includes('@monaco-editor')) {\n              return 'code-editor';\n            }\n            if (normalizedId.includes('react-window') || normalizedId.includes('react-virtual')) {\n              return 'virtualization';\n            }\n            if (\n              normalizedId.includes('zod') ||\n              normalizedId.includes('yup') ||\n              normalizedId.includes('joi')\n            ) {\n              return 'validation';\n            }\n            if (\n              normalizedId.includes('axios') ||\n              normalizedId.includes('ky') ||\n              normalizedId.includes('fetch')\n            ) {\n              return 'http-client';\n            }\n            if (\n              normalizedId.includes('react-spring') ||\n              normalizedId.includes('react-transition-group')\n            ) {\n              return 'animations';\n            }\n            if (normalizedId.includes('react-select') || normalizedId.includes('downshift')) {\n              return 'advanced-inputs';\n            }\n            if (normalizedId.includes('heic-to')) {\n              return 'heic-converter';\n            }\n\n            // Existing chunks\n            if (normalizedId.includes('@radix-ui')) {\n              return 'radix-ui';\n            }\n            if (normalizedId.includes('framer-motion')) {\n              return 'framer-motion';\n            }\n            if (normalizedId.includes('node_modules/highlight.js')) {\n              return 'markdown_highlight';\n            }\n            if (normalizedId.includes('katex') || normalizedId.includes('node_modules/katex')) {\n              return 'math-katex';\n            }\n            if (normalizedId.includes('node_modules/hast-util-raw')) {\n              return 'markdown_large';\n            }\n            if (normalizedId.includes('@tanstack')) {\n              return 'tanstack-vendor';\n            }\n            if (normalizedId.includes('@headlessui')) {\n              return 'headlessui';\n            }\n\n            // Everything else falls into a generic vendor chunk.\n            return 'vendor';\n          }\n          // Create a separate chunk for all locale files under src/locales.\n          if (normalizedId.includes('/src/locales/')) {\n            return 'locales';\n          }\n          // Let Rollup decide automatically for any other files.\n          return null;\n        },\n        entryFileNames: 'assets/[name].[hash].js',\n        chunkFileNames: 'assets/[name].[hash].js',\n        assetFileNames: (assetInfo) => {\n          if (assetInfo.names?.[0] && /\\.(woff|woff2|eot|ttf|otf)$/.test(assetInfo.names[0])) {\n            return 'assets/fonts/[name][extname]';\n          }\n          return 'assets/[name].[hash][extname]';\n        },\n      },\n      /**\n       * Ignore \"use client\" warning since we are not using SSR\n       * @see {@link https://github.com/TanStack/query/pull/5161#issuecomment-1477389761 Preserve 'use client' directives TanStack/query#5161}\n       */\n      onwarn(warning, warn) {\n        if (warning.message.includes('Error when using sourcemap')) {\n          return;\n        }\n        warn(warning);\n      },\n    },\n    chunkSizeWarningLimit: 1500,\n  },\n  resolve: {\n    alias: {\n      '~': path.join(__dirname, 'src/'),\n      $fonts: path.resolve(__dirname, 'public/fonts'),\n    },\n  },\n}));\n\ninterface SourcemapExclude {\n  excludeNodeModules?: boolean;\n}\nexport function sourcemapExclude(opts?: SourcemapExclude): Plugin {\n  return {\n    name: 'sourcemap-exclude',\n    transform(code: string, id: string) {\n      if (opts?.excludeNodeModules && id.includes('node_modules')) {\n        return {\n          code,\n          // https://github.com/rollup/rollup/blob/master/docs/plugin-development/index.md#source-code-transformations\n          map: { mappings: '' },\n        };\n      }\n    },\n  };\n}"
  },
  {
    "path": "src/frontend/nginx.conf",
    "content": "\n# 在http区域内一定要添加下面配置, 支持websocket\nmap $http_upgrade $connection_upgrade {\n\tdefault upgrade;\n\t'' close;\n}\n\n\n\nserver {\n\tgzip on;\n\tgzip_comp_level  2;\n\tgzip_min_length  1000;\n\tgzip_types  text/xml text/css;\n\tgzip_http_version 1.1;\n\tgzip_vary  on;\n\tgzip_disable \"MSIE [4-6] \\.\";\n\n\tlisten 3001;\n\n\t location / {\n\t\troot /usr/share/nginx/html/platform;\n\t\tindex index.html index.htm;\n\t\ttry_files $uri $uri/ /index.html =404;\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t}\n\n\tlocation /workspace/ {\n\t\talias /usr/share/nginx/html/client/;\n\t\tindex index.html index.htm;\n\t\ttry_files $uri $uri/ /workspace/index.html;\n\t}\n\n\tlocation ~ ^(/workspace)?/api(/|$) {\n\t\trewrite ^/workspace(/.*)$ $1 break;\n\t\tproxy_pass http://backend:7860;\n\t\tproxy_read_timeout 300s;\n\t\tproxy_set_header Host $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection $connection_upgrade;\n\t\tclient_max_body_size 200m;\n\t\tadd_header Access-Control-Allow-Origin $host;\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t}\n\n\t location ~ ^/(workspace/bisheng|bisheng|tmp-dir)/ {\n\t\trewrite ^/workspace(/.*)$ $1 break;\n\t\tproxy_pass http://minio:9000;\n\t}\n}"
  },
  {
    "path": "src/frontend/platform/Dockerfile",
    "content": "FROM node:18-alpine as frontend_build\nARG BACKEND\nWORKDIR /app\nCOPY . /app\nRUN cd /app/client && npm install --force --registry=https://registry.npmmirror.com && npm run build\nRUN cd /app/platform && npm install --force --registry=https://registry.npmmirror.com && npm run build\n\nFROM nginx\nCOPY --from=frontend_build /app/client/build/ /usr/share/nginx/html/client\nCOPY --from=frontend_build /app/platform/build/ /usr/share/nginx/html/platform\nCOPY /nginx.conf /etc/nginx/conf.d/default.conf"
  },
  {
    "path": "src/frontend/platform/README.md",
    "content": "# 项目启动与部署指南\n\n## 本地启动开发调试\n\n### 环境准备\n\n在开始之前，请确保你已经安装了以下工具：\n- Node.js (建议使用 LTS 版本)\n- npm 或 yarn 包管理工具\n\n### 安装依赖\n\n首先，克隆项目仓库并安装依赖：\n\n```bash\ngit clone <your-repository-url>\ncd <your-project-directory>\nnpm install\n# 或者使用 yarn\n# yarn install\n```\n\n### 启动开发服务器\n\n使用以下命令启动本地开发服务器：\n\n```bash\nnpm run start\n# 或者使用 yarn\n# yarn start\n```\n\n开发服务器将会运行在 [http://localhost:3001](http://localhost:3001)。\n\n### 代理配置\n\n开发环境下，以下代理已配置：\n- `target` 代理到 后端接口\n- `/bisheng` 代理到 文件服务器地址\n- `/custom_base/api` 开启子路由时需要配置此代理，并重写路径 `/custom_base/api` 为 `/api`\n\n## 正式环境部署\n\n### 构建项目\n\n在部署之前，需要先构建项目。使用以下命令进行构建：\n\n```bash\nnpm run build\n# 或者使用 yarn\n# yarn build\n```\n\n构建后的文件将会输出到 `build` 目录。\n\n### 部署静态文件\n\n将 `build` 目录下的所有文件部署到你的静态文件服务器。\n\n### 配置服务器代理\n\n在生产环境中，你需要配置服务器代理，以便处理 API 请求和文件服务请求。以下是一个 Nginx 的示例配置：\n\n```nginx\nserver {\n    listen 80;\n    server_name your-domain.com;\n\n    root /path/to/your/build;\n    index index.html;\n\n    location / {\n        try_files $uri $uri/ /index.html;\n    }\n\n    location /api/ {\n        proxy_pass [backend url];\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Forwarded-Host $server_name;\n        proxy_set_header X-Forwarded-Port $server_port;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n\n    location /bisheng/ {\n        proxy_pass [file server url];\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    location /custom_base/api/ {\n        rewrite ^/custom_base/api/(.*)$ /api/$1 break;\n        proxy_pass [backend url];\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\n### 环境变量\n\n在生产环境中，你可以通过设置环境变量 `VITE_PROXY_TARGET` 来配置 API 代理目标地址。\n\n## 常见问题\n\n### 如何修改代理目标地址？\n\n可以通过修改 `.env` 文件中的 `VITE_PROXY_TARGET` 变量来更改代理目标地址：\n\n```env\nVITE_PROXY_TARGET=http://new-target-address:port\n```\n\n修改后，重新启动开发服务器或重新构建项目以应用新的代理目标地址。\n\n### 如何添加新的代理路径？\n\n可以在 `vite.config.js` 文件中的 `proxyTargets` 对象中添加新的代理路径：\n\n```javascript\nproxyTargets['/new-path'] = {\n  target: \"http://new-target-address:port\",\n  changeOrigin: true,\n  withCredentials: true,\n  secure: false\n};\n```\n\n添加后会自动更新开发服务器以应用新的代理配置。\n\n(?<![\\*/\\u4e00-\\u9fa5\\s])[\\u4e00-\\u9fa5]+(?![*/])\n\n\n##### 开发模式下，无法访问到静态资源，注释掉以下代码\n目录：node_modules/vite-plugin-html/dist/index.mjs\n\n```javascript\n// 150行的\nserver.middlewares.use(history...\n```\n"
  },
  {
    "path": "src/frontend/platform/dev.Dockerfile",
    "content": "#baseline\nFROM node:19-bullseye-slim AS base\nRUN mkdir -p /home/node/app\nRUN chown -R node:node /home/node && chmod -R 770 /home/node\nRUN apt-get update && apt-get install -y jq\nWORKDIR /home/node/app\n\n# client build\nFROM base AS builder-client\nARG BACKEND_URL\nENV BACKEND_URL $BACKEND_URL\nRUN echo \"BACKEND_URL: $BACKEND_URL\"\n\nWORKDIR /home/node/app\nCOPY --chown=node:node . ./\n\nCOPY ./set_proxy.sh .\nRUN chmod +x set_proxy.sh && \\\n    cat set_proxy.sh | tr -d '\\r' > set_proxy_unix.sh && \\\n    chmod +x set_proxy_unix.sh && \\\n    ./set_proxy_unix.sh\n\nUSER node\n\nRUN npm install --loglevel warn\nCMD [\"npm\", \"run\", \"dev:docker\"]"
  },
  {
    "path": "src/frontend/platform/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <link rel=\"icon\" href=\"<%- baseUrl %>/assets/bisheng/favicon.ico\" />\n    <script src=\"/assets/bisheng/config.js?v=<%= Date.now() %>\"></script>\n    <%- aceScriptSrc %>\n    <title>loading...</title>\n    <!-- window.APP_CONFIG.baseUrl -->\n    <!-- style -->\n    <script>\n        document.title = window.BRAND_CONFIG.brandName.en\n        \n        fetch('<%- baseUrl %>/api/v1/web/config').then(function (res) {\n            return res.json()\n        }).then(function (res) {\n            console.log('res :>> ', res.data);\n            var styleStr = res.data ? res.data.value : ''\n            var style = styleStr ? JSON.parse(styleStr) : {\n                comp: {},\n                bg: ''\n            }\n            window.ThemeStyle = style\n            Object.keys(style.comp).forEach(key => {\n                var hsl = style.comp[key]\n                var hslStr = `${hsl.h} ${hsl.s * 100}% ${hsl.l * 100}%`\n                document.documentElement.style.setProperty(key, hslStr);\n            });\n        })\n        // 兼容历史\n        const ln = localStorage.getItem('i18nextLng')\n        if (ln === 'zh') {\n            localStorage.setItem('i18nextLng', 'zh-Hans')\n        } else if (ln === 'en') {\n            localStorage.setItem('i18nextLng', 'en-US')\n        }\n    </script>\n</head>\n\n<body id='body' style=\"width: 100%; height:100%\">\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div style=\"width: 100vw; height:100vh\" id='root'></div>\n    <script type=\"module\" src=\"/src/index.tsx\"></script>\n</body>\n<script>\n    // 触摸板禁止手指缩放\n    document.addEventListener('wheel', function (event) {\n        if (event.ctrlKey) {\n            event.preventDefault()\n        }\n    }, {\n        passive: false\n    })\n</script>\n\n</html>"
  },
  {
    "path": "src/frontend/platform/nginx.conf",
    "content": "map $http_upgrade $connection_upgrade {\n\tdefault upgrade;\n\t'' close;\n}\n\nserver {\n\tgzip on;\n\tgzip_comp_level  2;\n\tgzip_min_length  1000;\n\tgzip_types  text/xml text/css;\n\tgzip_http_version 1.1;\n\tgzip_vary  on;\n\tgzip_disable \"MSIE [4-6] \\.\";\n\n\tlisten 80;\n\n\tlocation / {\n\t\troot /data/webroot/bisheng;\n\t\tindex index.html index.htm;\n\t\ttry_files $uri $uri/ /index.html =404;\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t}\n\n\tlocation /api {\n\t\tproxy_pass http://192.168.106.116:7860;\n\t\tproxy_read_timeout 300s;\n\t\tproxy_set_header Host $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection $connection_upgrade;\n\t\tclient_max_body_size 200m;\n\t\tadd_header Access-Control-Allow-Origin \"http://192.168.106.120:3002\";\n\t\tadd_header X-Frame-Options SAMEORIGIN;\n\t\t# proxy_set_header Connection \"Upgrade\";\n\t}\n}\n"
  },
  {
    "path": "src/frontend/platform/package.json",
    "content": "{\n  \"name\": \"bisheng\",\n  \"version\": \"2.4.0_beta1\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@headlessui/react\": \"^2.0.4\",\n    \"@radix-ui/react-accordion\": \"^1.2.0\",\n    \"@radix-ui/react-alert-dialog\": \"^1.1.1\",\n    \"@radix-ui/react-checkbox\": \"^1.1.1\",\n    \"@radix-ui/react-dialog\": \"^1.1.1\",\n    \"@radix-ui/react-dropdown-menu\": \"^2.1.1\",\n    \"@radix-ui/react-form\": \"^0.1.0\",\n    \"@radix-ui/react-label\": \"^2.1.0\",\n    \"@radix-ui/react-menubar\": \"^1.1.1\",\n    \"@radix-ui/react-popover\": \"^1.1.1\",\n    \"@radix-ui/react-progress\": \"^1.1.0\",\n    \"@radix-ui/react-radio-group\": \"^1.2.0\",\n    \"@radix-ui/react-select\": \"^2.1.1\",\n    \"@radix-ui/react-separator\": \"^1.1.0\",\n    \"@radix-ui/react-slider\": \"^1.2.0\",\n    \"@radix-ui/react-slot\": \"^1.1.0\",\n    \"@radix-ui/react-switch\": \"^1.1.0\",\n    \"@radix-ui/react-tabs\": \"^1.1.0\",\n    \"@radix-ui/react-toast\": \"^1.2.1\",\n    \"@radix-ui/react-toggle\": \"^1.1.0\",\n    \"@radix-ui/react-toggle-group\": \"^1.1.0\",\n    \"@radix-ui/react-tooltip\": \"^1.1.2\",\n    \"@tailwindcss/forms\": \"^0.5.7\",\n    \"@xyflow/react\": \"^12.8.4\",\n    \"ace-builds\": \"^1.35.0\",\n    \"ansi-to-html\": \"^0.7.2\",\n    \"axios\": \"^1.7.2\",\n    \"base64-js\": \"^1.5.1\",\n    \"class-variance-authority\": \"^0.7.0\",\n    \"clsx\": \"^2.1.1\",\n    \"cmdk\": \"^0.2.1\",\n    \"compressorjs\": \"^1.2.1\",\n    \"date-fns\": \"^4.1.0\",\n    \"dompurify\": \"^3.1.5\",\n    \"howler\": \"^2.2.4\",\n    \"i18next\": \"^23.12.1\",\n    \"i18next-http-backend\": \"^2.5.2\",\n    \"jsencrypt\": \"^3.3.2\",\n    \"lodash-es\": \"^4.17.21\",\n    \"lucide-react\": \"^0.544.0\",\n    \"mammoth\": \"^1.9.0\",\n    \"pdfjs-dist\": \"3.10.111\",\n    \"react\": \"^18.3.1\",\n    \"react-ace\": \"^11.0.1\",\n    \"react-beautiful-dnd\": \"^13.1.1\",\n    \"react-color\": \"^2.19.3\",\n    \"react-day-picker\": \"^9.13.0\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-dropzone\": \"^14.2.3\",\n    \"react-error-boundary\": \"^4.0.13\",\n    \"react-grid-layout\": \"2.1.1\",\n    \"react-i18next\": \"^15.0.0\",\n    \"react-markdown\": \"^10.1.0\",\n    \"react-query\": \"^3.39.3\",\n    \"react-router-dom\": \"6.17.0\",\n    \"react-syntax-highlighter\": \"^15.5.0\",\n    \"react-window\": \"^1.8.10\",\n    \"recharts\": \"^2.12.7\",\n    \"rehype-mathjax\": \"^7.1.0\",\n    \"remark-gfm\": \"^4.0.1\",\n    \"remark-math\": \"^6.0.0\",\n    \"tailwind-merge\": \"^2.3.0\",\n    \"tailwindcss\": \"^3.4.4\",\n    \"tailwindcss-animate\": \"^1.0.7\",\n    \"vditor\": \"file:local-packages/vditor-3.11.1.tgz\",\n    \"web-vitals\": \"^4.1.1\",\n    \"xlsx\": \"^0.18.5\",\n    \"xlsx-populate\": \"^1.21.0\",\n    \"zustand\": \"^4.5.2\"\n  },\n  \"scripts\": {\n    \"dev:docker\": \"vite --host 0.0.0.0\",\n    \"start\": \"vite\",\n    \"build\": \"vite build\",\n    \"serve\": \"vite preview\",\n    \"format\": \"npx prettier --write \\\"**/*.{js,jsx,ts,tsx,json,md}\\\"\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"proxy\": \"http://127.0.0.1:7860\",\n  \"devDependencies\": {\n    \"@tailwindcss/typography\": \"^0.5.13\",\n    \"@types/axios\": \"^0.14.0\",\n    \"@types/lodash-es\": \"^4.17.12\",\n    \"@types/node\": \"^20.14.2\",\n    \"@types/react\": \"^18.3.3\",\n    \"@types/react-dom\": \"^18.3.0\",\n    \"@vitejs/plugin-react-swc\": \"^3.7.0\",\n    \"autoprefixer\": \"^10.4.19\",\n    \"postcss\": \"^8.4.38\",\n    \"prettier\": \"^3.3.2\",\n    \"prettier-plugin-organize-imports\": \"^3.2.4\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.5\",\n    \"rollup-plugin-visualizer\": \"^5.12.0\",\n    \"typescript\": \"^5.4.5\",\n    \"vite\": \"^5.3.1\",\n    \"vite-plugin-html\": \"^3.2.2\",\n    \"vite-plugin-static-copy\": \"^1.0.6\",\n    \"vite-plugin-svgr\": \"^4.2.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 18\"\n  }\n}\n"
  },
  {
    "path": "src/frontend/platform/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "src/frontend/platform/prettier.config.js",
    "content": "module.exports = {\n  plugins: [require(\"prettier-plugin-tailwindcss\")],\n};\n"
  },
  {
    "path": "src/frontend/platform/public/assets/bisheng/config.js",
    "content": "window.BRAND_CONFIG = {\n    // 1. 系统品牌名称\n    brandName: {\n        zh: \"BISHENG\",\n        en: \"BISHENG\"\n    },\n\n    // 2. 灵思智能体\n    linsightAgentName: {\n        zh: \"灵思\",\n        en: \"Linsight\"\n    },\n\n    // 3. 灵思中英文结合展示名\n    linsightFullName: {\n        zh: \"灵思Linsight\",\n        en: \"Linsight\"\n    },\n\n    // 4. Loading 图标配置\n    // 支持相对路径 (如 /branding/loading.gif) 或 完整的 URL (如 https://cdn.com/icon.png)\n    loadingIcon: \"\",\n    loadingAnimation: \"\" // animate-spin | animate-ping | animate-pulse | animate-bounce\n};"
  },
  {
    "path": "src/frontend/platform/public/dataset.csv",
    "content": "﻿question,ground_truth,,,,,,,,\n公司2023年的研发费⽤占营业收⼊的⽐例是多少？,根据提供的信息，公司2021年的研发费⽤占营业收⼊的⽐例为15.86%。 根据公司招股书披露数据，公司2021年的研发费⽤占营业收⼊的⽐例为15.86%,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,"
  },
  {
    "path": "src/frontend/platform/public/dataset.json",
    "content": "[\n    {\n        \"instruction\": \"Give three tips for staying healthy.\",\n        \"input\": \"\",\n        \"output\": \"1.Eat a balanced diet and make sure to include plenty of fruits and vegetables. \\n2. Exercise regularly to keep your body active and strong. \\n3. Get enough sleep and maintain a consistent sleep schedule.\"\n    },\n    {\n        \"instruction\": \"What are the three primary colors?\",\n        \"input\": \"\",\n        \"output\": \"The three primary colors are red, blue, and yellow.\"\n    },\n    {\n        \"instruction\": \"Describe the structure of an atom.\",\n        \"input\": \"\",\n        \"output\": \"An atom is made up of a nucleus, which contains protons and neutrons, surrounded by electrons that travel in orbits around the nucleus. The protons and neutrons have a positive charge, while the electrons have a negative charge, resulting in an overall neutral atom. The number of each particle determines the atomic number and the type of atom.\"\n    },\n    {\n        \"instruction\": \"How can we reduce air pollution?\",\n        \"input\": \"\",\n        \"output\": \"There are a number of ways to reduce air pollution, such as shifting to renewable energy sources, encouraging the use of public transportation, prohibiting the burning of fossil fuels, implementing policies to reduce emissions from industrial sources, and implementing vehicle emissions standards. Additionally, individuals can do their part to reduce air pollution by reducing car use, avoiding burning materials such as wood, and changing to energy efficient appliances.\"\n    },\n    {\n        \"instruction\": \"Describe a time when you had to make a difficult decision.\",\n        \"input\": \"\",\n        \"output\": \"I had to make a difficult decision when I was working as a project manager at a construction company. I was in charge of a project that needed to be completed by a certain date in order to meet the client\\u2019s expectations. However, due to unexpected delays, we were not able to meet the deadline and so I had to make a difficult decision. I decided to extend the deadline, but I had to stretch the team\\u2019s resources even further and increase the budget. Although it was a risky decision, I ultimately decided to go ahead with it to ensure that the project was completed on time and that the client\\u2019s expectations were met. The project was eventually successfully completed and this was seen as a testament to my leadership and decision-making abilities.\"\n    }\n]"
  },
  {
    "path": "src/frontend/platform/public/iframe.js",
    "content": "var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(e){return e.raw=e};$jscomp.createTemplateTagFirstArgWithRaw=function(e,n){e.raw=n;return e};\n(function(){var e=document.getElementById(\"chatbot-iframe-script\"),n=e.getAttribute(\"data-bot-src\");e.getAttribute(\"data-default-open\");var r=\"true\"===e.getAttribute(\"data-drag\"),g=e.getAttribute(\"data-open-icon\"),p=e.getAttribute(\"data-close-icon\");document.body.onload=function(){function t(){var a=document.createElement(\"div\");a.id=\"chatbot-button\";var b=document.createElement(\"style\");document.head.appendChild(b);b.sheet.insertRule(\"\\n          #\"+a.id+\" {\\n            position: fixed;\\n            bottom: var(--chatbot-button-bottom, 1rem);\\n            right: 1rem;\\n            left: var(--chatbot-button-left, unset);\\n            top: unset;\\n            width: 50px;\\n            height: 50px;\\n            border-radius: 25px;\\n            background-color: #2d4fe5;\\n            box-shadow: rgba(0, 0, 0, 0.2) 0px 4px 8px 0px;\\n            cursor: pointer;\\n            z-index: 2147483647;\\n            transition: all 0.2s ease-in-out 0s;\\n          }\\n        \");\nb.sheet.insertRule(\"\\n          #\"+a.id+\":hover {\\n            transform: scale(1.1);\\n          }\\n        \");var d=document.createElement(\"div\");d.style.cssText=\"display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; z-index: 2147483647;background-size: cover;background-repeat: no-repeat;\";d.style.backgroundImage=\"url(\"+g+\")\";a.appendChild(d);document.body.appendChild(a);a.addEventListener(\"click\",function(){var c=document.getElementById(\"chatbot-iframe\");c?(c.style.display=\n\"none\"===c.style.display?\"block\":\"none\",d.style.backgroundImage=\"url(\"+(\"none\"===c.style.display?g:p)+\")\",\"none\"===c.style.display?document.removeEventListener(\"keydown\",h):document.addEventListener(\"keydown\",h),q()):(c=document.createElement(\"iframe\"),c.allow=\"fullscreen;clipboard-write\",c.id=\"chatbot-iframe\",c.src=n,c.style.cssText=\"\\n          border: none; position: fixed; flex-direction: column; justify-content: space-between;\\n          box-shadow: rgba(150, 150, 150, 0.2) 0px 10px 30px 0px, rgba(150, 150, 150, 0.2) 0px 0px 0px 1px;\\n          bottom: 5rem; right: 1rem; width: 24rem; max-width: calc(100vw - 2rem); height: 40rem;\\n          max-height: calc(100vh - 6rem); border-radius: 0.75rem; display: flex; z-index: 2147483647;\\n          overflow: hidden; left: unset; background-color: #F3F4F6;\\n        \",\ndocument.body.appendChild(c),q(),this.title=\"Exit (ESC)\",d.style.backgroundImage=\"url(\"+p+\")\",document.addEventListener(\"keydown\",h))});r&&u(a,\"both\")}function h(a){if(\"Escape\"===a.key){a=document.getElementById(\"chatbot-iframe\");var b=document.getElementById(\"chatbot-button\");a&&\"none\"!==a.style.display&&(a.style.display=\"none\",b.querySelector(\"div\").backgroundImage=\"url(\"+g+\")\")}}function q(){var a=document.getElementById(\"chatbot-iframe\"),b=document.getElementById(\"chatbot-button\");if(a&&b){b=\nb.getBoundingClientRect();var d=window.innerHeight-b.bottom,c=window.innerWidth-b.right,k=b.left;a.style.bottom=(d+b.height+5+a.clientHeight>window.innerHeight?d-a.clientHeight-5:d+b.height+5)+\"px\";a.style.right=(c+a.clientWidth>window.innerWidth?window.innerWidth-k-a.clientWidth:c)+\"px\"}}function u(a,b){var d=!1,c,k;a.addEventListener(\"mousedown\",function(f){d=!0;c=f.clientX-a.offsetLeft;k=f.clientY-a.offsetTop});document.addEventListener(\"mousemove\",function(f){if(d){a.style.transition=\"none\";a.style.cursor=\n\"grabbing\";var l=document.getElementById(\"chatbot-iframe\");l&&(l.style.display=\"none\",a.querySelector(\"div\").backgroundImage=\"url(\"+g+\")\");l=f.clientX-c;f=window.innerHeight-f.clientY-k;var m=a.getBoundingClientRect(),v=window.innerWidth-m.width;m=window.innerHeight-m.height;\"x\"!==b&&\"both\"!==b||a.style.setProperty(\"--chatbot-button-left\",Math.max(0,Math.min(l,v))+\"px\");\"y\"!==b&&\"both\"!==b||a.style.setProperty(\"--chatbot-button-bottom\",Math.max(0,Math.min(f,m))+\"px\")}});document.addEventListener(\"mouseup\",\nfunction(){d=!1;a.style.transition=\"\";a.style.cursor=\"pointer\"})}document.addEventListener(\"keydown\",h);document.getElementById(\"chatbot-button\")||t()}})();"
  },
  {
    "path": "src/frontend/platform/public/iframe.source.js",
    "content": "// bisheng iframe.js 内嵌脚本\n(function () {\n    const iframeId = \"chatbot-iframe\";\n    const buttonId = \"chatbot-button\";\n    const scriptElement = document.getElementById('chatbot-iframe-script');\n    const iframeUrl = scriptElement.getAttribute(\"data-bot-src\");\n    const defaultOpen = scriptElement.getAttribute(\"data-default-open\") === \"true\"; // 默认打开\n    const dragEnabled = scriptElement.getAttribute(\"data-drag\") === \"true\"; // 按钮拖拽\n    const openIcon = scriptElement.getAttribute(\"data-open-icon\");\n    const closeIcon = scriptElement.getAttribute(\"data-close-icon\");\n\n    // Main\n    function embedChatbot() {\n        // create iframe\n        function createIframe() {\n            const iframe = document.createElement(\"iframe\");\n            iframe.allow = \"fullscreen;clipboard-write\";\n            iframe.id = iframeId;\n            iframe.src = iframeUrl;\n            iframe.style.cssText = `\n          border: none; position: fixed; flex-direction: column; justify-content: space-between;\n          box-shadow: rgba(150, 150, 150, 0.2) 0px 10px 30px 0px, rgba(150, 150, 150, 0.2) 0px 0px 0px 1px;\n          bottom: 5rem; right: 1rem; width: 24rem; max-width: calc(100vw - 2rem); height: 40rem;\n          max-height: calc(100vh - 6rem); border-radius: 0.75rem; display: flex; z-index: 2147483647;\n          overflow: hidden; left: unset; background-color: #F3F4F6;\n        `;\n\n            document.body.appendChild(iframe);\n        }\n\n        // create button\n        function createButton() {\n            const containerDiv = document.createElement(\"div\");\n            containerDiv.id = buttonId;\n\n            const styleSheet = document.createElement(\"style\");\n            document.head.appendChild(styleSheet);\n            styleSheet.sheet.insertRule(`\n          #${containerDiv.id} {\n            position: fixed;\n            bottom: var(--${buttonId}-bottom, 1rem);\n            right: 1rem;\n            left: var(--${buttonId}-left, unset);\n            top: unset;\n            width: 50px;\n            height: 50px;\n            border-radius: 25px;\n            background-color: #2d4fe5;\n            box-shadow: rgba(0, 0, 0, 0.2) 0px 4px 8px 0px;\n            cursor: pointer;\n            z-index: 2147483647;\n            transition: all 0.2s ease-in-out 0s;\n          }\n        `);\n            styleSheet.sheet.insertRule(`\n          #${containerDiv.id}:hover {\n            transform: scale(1.1);\n          }\n        `);\n\n            // Create display div for the button icon\n            const displayDiv = document.createElement(\"div\");\n            displayDiv.style.cssText =\n                \"display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; z-index: 2147483647;background-size: cover;background-repeat: no-repeat;\";\n            displayDiv.style.backgroundImage = `url(${openIcon})`;\n            containerDiv.appendChild(displayDiv);\n            document.body.appendChild(containerDiv);\n\n            // Add click event listener to toggle chatbot\n            containerDiv.addEventListener(\"click\", function () {\n                const targetIframe = document.getElementById(iframeId);\n                if (!targetIframe) {\n                    createIframe();\n                    resetIframePosition();\n                    this.title = \"Exit (ESC)\";\n                    displayDiv.style.backgroundImage = `url(${closeIcon})`;\n                    document.addEventListener('keydown', handleEscKey);\n                    return;\n                }\n                targetIframe.style.display = targetIframe.style.display === \"none\" ? \"block\" : \"none\";\n                displayDiv.style.backgroundImage = `url(${targetIframe.style.display === \"none\" ? openIcon : closeIcon})`;\n\n                if (targetIframe.style.display === \"none\") {\n                    document.removeEventListener('keydown', handleEscKey);\n                } else {\n                    document.addEventListener('keydown', handleEscKey);\n                }\n\n\n                resetIframePosition();\n            });\n\n            // Enable dragging\n            if (dragEnabled) {\n                enableDragging(containerDiv, \"both\");\n            }\n        }\n\n        function handleEscKey(event) {\n            if (event.key === 'Escape') {\n                const targetIframe = document.getElementById(iframeId);\n                const button = document.getElementById(buttonId);\n                if (targetIframe && targetIframe.style.display !== 'none') {\n                    targetIframe.style.display = 'none';\n                    button.querySelector('div').backgroundImage = `url(${openIcon})`;\n                }\n            }\n        }\n        document.addEventListener('keydown', handleEscKey);\n\n        // Function to reset the iframe position\n        function resetIframePosition() {\n            const targetIframe = document.getElementById(iframeId);\n            const targetButton = document.getElementById(buttonId);\n            if (targetIframe && targetButton) {\n                const buttonRect = targetButton.getBoundingClientRect();\n                const buttonBottom = window.innerHeight - buttonRect.bottom;\n                const buttonRight = window.innerWidth - buttonRect.right;\n                const buttonLeft = buttonRect.left;\n\n                // Adjust iframe position to stay within viewport\n                targetIframe.style.bottom = `${buttonBottom + buttonRect.height + 5 + targetIframe.clientHeight > window.innerHeight\n                        ? buttonBottom - targetIframe.clientHeight - 5\n                        : buttonBottom + buttonRect.height + 5\n                    }px`;\n\n                targetIframe.style.right = `${buttonRight + targetIframe.clientWidth > window.innerWidth\n                        ? window.innerWidth - buttonLeft - targetIframe.clientWidth\n                        : buttonRight\n                    }px`;\n            }\n        }\n\n        function enableDragging(element, axis) {\n            let isDragging = false;\n            let startX, startY;\n\n            element.addEventListener(\"mousedown\", startDragging);\n            document.addEventListener(\"mousemove\", drag);\n            document.addEventListener(\"mouseup\", stopDragging);\n\n            function startDragging(e) {\n                isDragging = true;\n                startX = e.clientX - element.offsetLeft;\n                startY = e.clientY - element.offsetTop;\n            }\n\n            function drag(e) {\n                if (!isDragging) return;\n\n                element.style.transition = \"none\";\n                element.style.cursor = \"grabbing\";\n\n                // Hide iframe while dragging\n                const targetIframe = document.getElementById(iframeId);\n                if (targetIframe) {\n                    targetIframe.style.display = \"none\";\n                    element.querySelector(\"div\").backgroundImage = `url(${openIcon})`;\n                }\n\n                const newLeft = e.clientX - startX;\n                const newBottom = window.innerHeight - e.clientY - startY;\n\n                const elementRect = element.getBoundingClientRect();\n                const maxX = window.innerWidth - elementRect.width;\n                const maxY = window.innerHeight - elementRect.height;\n\n                // Update position based on drag axis\n                if (axis === \"x\" || axis === \"both\") {\n                    element.style.setProperty(\n                        `--${buttonId}-left`,\n                        `${Math.max(0, Math.min(newLeft, maxX))}px`\n                    );\n                }\n\n                if (axis === \"y\" || axis === \"both\") {\n                    element.style.setProperty(\n                        `--${buttonId}-bottom`,\n                        `${Math.max(0, Math.min(newBottom, maxY))}px`\n                    );\n                }\n            }\n\n            function stopDragging() {\n                isDragging = false;\n                element.style.transition = \"\";\n                element.style.cursor = \"pointer\";\n            }\n        }\n\n        // Create the chat button if it doesn't exist\n        if (!document.getElementById(buttonId)) {\n            createButton();\n        }\n    }\n\n    document.body.onload = embedChatbot;\n\n})();"
  },
  {
    "path": "src/frontend/platform/public/locales/dev/bs.json",
    "content": ""
  },
  {
    "path": "src/frontend/platform/public/locales/dev/flow.json",
    "content": ""
  },
  {
    "path": "src/frontend/platform/public/locales/dev/knowledge.json",
    "content": "{}"
  },
  {
    "path": "src/frontend/platform/public/locales/dev/model.json",
    "content": "{\n    \"model\": {\n\n    },\n    \"finetune\": {\n        \n    }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/bs.json",
    "content": "{\n  \"title\": \"BISHENG\",\n  \"bisheng\": \"{{bisheng}}\",\n  \"linsight\": \"{{linsight}}\",\n  \"linsightFullName\": \"{{linsightFull}}\",\n  \"prompt\": \"Confirmation\",\n  \"unsupportedFileType\": \"Unsupported file types: {{extensions}}\",\n  \"supportedFormatsWithImages\": \"Supported file formats: pdf (including scanned documents), txt, docx, ppt, pptx, md, html, xls, xlsx, csv, doc, png, jpg, jpeg, bmp; each file supports up to {{maxSize}}MB; pdf supports traceability positioning.\",\n  \"supportedFormatsWithoutImages\": \"Supported file formats: pdf, txt, docx, doc, ppt, pptx, md, html, xls, xlsx, csv, each file supports up to {{maxSize}}MB\",\n  \"example\": {\n    \"buttons\": \"Buttons\",\n    \"button\": \"Button\",\n    \"badges\": \"Badges\",\n    \"badge\": \"Badge\",\n    \"inputs\": \"Inputs\",\n    \"search\": \"Search\",\n    \"content\": \"Content\",\n    \"dropdown\": \"Dropdown\",\n    \"selectAFruit\": \"Select a fruit\",\n    \"fruits\": \"Fruits\",\n    \"apple\": \"Apple\",\n    \"banana\": \"Banana\",\n    \"blueberry\": \"Blueberry\",\n    \"grapes\": \"Grapes\",\n    \"pineapple\": \"Pineapple\",\n    \"slider\": \"Slider\",\n    \"checkboxRadio\": \"Checkbox & Radio\",\n    \"default\": \"Default\",\n    \"one\": \"One\",\n    \"tablePagination\": \"Table & Pagination\",\n    \"invoiceListCaption\": \"A list of your recent invoices.\",\n    \"invoice\": \"Invoice\",\n    \"status\": \"Status\",\n    \"method\": \"Method\",\n    \"amount\": \"Amount\",\n    \"total\": \"Total\",\n    \"calendar\": \"Calendar\",\n    \"card\": \"Card\",\n    \"createProject\": \"Create project\",\n    \"deployProjectDescription\": \"Deploy your new project in one-click.\",\n    \"cancel\": \"Cancel\",\n    \"deploy\": \"Deploy\",\n    \"accordion\": \"Accordion\",\n    \"isItAccessible\": \"Is it accessible?\",\n    \"accordionAnswer1\": \"Yes. It adheres to the WAI-ARIA design pattern.\",\n    \"isItStyled\": \"Is it styled?\",\n    \"accordionAnswer2\": \"Yes. It comes with default styles that matches the other components' aesthetic.\",\n    \"isItAnimated\": \"Is it animated?\",\n    \"accordionAnswer3\": \"Yes. It's animated by default, but you can disable it if you prefer.\",\n    \"switch\": \"Switch\"\n  },\n  \"theme\": {\n    \"colorConfig\": \"Color Configuration\",\n    \"restoreDefault\": \"Restore Default\",\n    \"workflowBackgroundConfig\": \"Workflow Background Configuration\",\n    \"bishengLogo\": \"$t(bisheng) logo\",\n    \"themeColorGradientEffect\": \"Theme Color Gradient Effect\",\n    \"componentPreview\": \"Component Preview\",\n    \"primary\": \"Primary\",\n    \"primaryForeground\": \"Primary Foreground\",\n    \"background\": \"Background\",\n    \"foreground\": \"Foreground\",\n    \"muted\": \"Muted\",\n    \"mutedForeground\": \"Muted Foreground\",\n    \"card\": \"Card\",\n    \"cardForeground\": \"Card Foreground\",\n    \"popover\": \"Popover\",\n    \"popoverForeground\": \"Popover Foreground\",\n    \"border\": \"Border\",\n    \"input\": \"Input\",\n    \"secondary\": \"Secondary\",\n    \"secondaryForeground\": \"Secondary Foreground\",\n    \"accent\": \"Accent\",\n    \"accentForeground\": \"Accent Foreground\",\n    \"destructive\": \"Destructive\",\n    \"destructiveForeground\": \"Destructive Foreground\",\n    \"ring\": \"Ring\",\n    \"radius\": \"Radius\",\n    \"warning\": \"Warning\",\n    \"warningForeground\": \"Warning Foreground\",\n    \"blackButton\": \"Black Button\"\n  },\n  \"login\": {\n    \"slogen\": \"Convenient, Flexible, Reliable Enterprise-Level Large Model Application Development Platform\",\n    \"account\": \"Email\",\n    \"password\": \"Password\",\n    \"confirmPassword\": \"Confirm Password\",\n    \"noAccountRegister\": \"Don't have an account? Register\",\n    \"haveAccountLogin\": \"Already have an account? Login\",\n    \"loginButton\": \"Log In\",\n    \"registerButton\": \"Register\",\n    \"document\": \"Documentation\",\n    \"pleaseEnterAccount\": \"Please enter your account\",\n    \"pleaseEnterPassword\": \"Please enter your password\",\n    \"accountTooShort\": \"Account is too short\",\n    \"passwordTooShort\": \"Password is too short, at least 8 characters\",\n    \"passwordError\": \"The password must include upper and lower case letters, numbers, and characters!\",\n    \"passwordMismatch\": \"Passwords do not match\",\n    \"registrationSuccess\": \"Registration successful. Please enter your password to log in\",\n    \"pleaseEnterCaptcha\": \"Please enter captcha\",\n    \"passwordExpired\": \"Your password has expired, please change it promptly\",\n    \"otherMethods\": \"Other login methods\"\n  },\n  \"menu\": {\n    \"user\": \"User\",\n    \"github\": \"GitHub\",\n    \"bookopen\": \"Document\",\n    \"workspace\": \"Workspace\",\n    \"app\": \"Chat\",\n    \"skills\": \"Build\",\n    \"knowledge\": \"Knowledge\",\n    \"evaluation\": \"Evaluation\",\n    \"board\": \"Dashboard\",\n    \"annotation\": \"Annotation\",\n    \"models\": \"Models\",\n    \"system\": \"System\",\n    \"log\": \"Logs\",\n    \"dataset\": \"Dataset\",\n    \"dashboard\": \"Dashboard\",\n    \"themeSwitch\": \"Theme Switch\",\n    \"document\": \"Documentation\",\n    \"logout\": \"Logout\",\n    \"logoutDescription\": \"Log out\",\n    \"logoutContent\": \"Are you sure to log out\",\n    \"forBestExperience\": \"For the best experience, please access this website on a PC\",\n    \"onlineDocumentation\": \"Online Documentation\",\n    \"changePwd\": \"Password\"\n  },\n  \"system\": {\n    \"userManagement\": \"User Management\",\n    \"roleManagement\": \"Role Management\",\n    \"userGroupsM\": \"UserGroup Management\",\n    \"systemConfiguration\": \"System Configuration\",\n    \"username\": \"Username\",\n    \"confirmDisable\": \"Confirm disabling this user?\",\n    \"roleSelect\": \"Select Roles\",\n    \"userGroupsSel\": \"Select UserGroups\",\n    \"roleList\": \"Role List\",\n    \"confirmText\": \"Are you sure you want to delete\",\n    \"roleName\": \"Role Name\",\n    \"skillAuthorization\": \"Skill\",\n    \"knowledgeAuthorization\": \"Knowledge\",\n    \"boardAuthorization\": \"Board\",\n    \"boardName\": \"Board Name\",\n    \"allowCreateBoard\": \"Allow Board Creation\",\n    \"allowCreateBoardDesc\": \"After enabling, this role can create new boards in the statistical dashboard\",\n    \"searchAssistant\": \"Search Assistant\",\n    \"searchSkill\": \"Search Skill\",\n    \"searchFlow\": \"Search Flow\",\n    \"searchKnowledge\": \"Search Knowledge Base\",\n    \"searchTool\": \"Search Tool\",\n    \"searchBoard\": \"Search Board\",\n    \"flowName\": \"Flow Name\",\n    \"libraryName\": \"Knowledge Base Name\",\n    \"flowAuthorization\": \"Flow\",\n    \"skillName\": \"Skill Name\",\n    \"creator\": \"Creator\",\n    \"usePermission\": \"View Permission\",\n    \"managePermission\": \"Manage Permission\",\n    \"roleNamePrompt\": \"Role name cannot exceed 50 characters\",\n    \"roleNameRequired\": \"Role name is required\",\n    \"atLeastOneSpaceRequired\": \"At least one space is required\",\n    \"spaceAuthorization\": \"Space Authorization\",\n    \"spaceAuthorizationDesc\": \"Select the spaces this role can access\",\n    \"spaceName\": \"Space Name\",\n    \"workspace\": \"Workspace\",\n    \"adminSpace\": \"Admin Console\",\n    \"roleNameExists\": \"Role name already exists\",\n    \"groupNameExists\": \"UserGroup name already exists\",\n    \"groupNamePrompt\": \"UserGroup name cannot exceed 30 characters\",\n    \"groupNameRequired\": \"UserGroup name is required\",\n    \"parameterConfig\": \"Parameter Configuration\",\n    \"language\": \"Language\",\n    \"colorConfig\": \"Color Configuration\",\n    \"assistantAuthorization\": \"Assistant\",\n    \"assistantName\": \"Assistant Name\",\n    \"userList\": \"User List\",\n    \"userGroupList\": \"UserGroup List\",\n    \"userGroup\": \"userGroup\",\n    \"role\": \"Role\",\n    \"searchUserGroups\": \"Search user groups\",\n    \"searchUser\": \"Search user\",\n    \"searchRoles\": \"Search roles\",\n    \"reset\": \"Reset\",\n    \"confirm\": \"Confirm\",\n    \"userGroupName\": \"Enter UserGroup Name\",\n    \"groupName\": \"UserGroup Name\",\n    \"admins\": \"Manager\",\n    \"flowControl\": \"Overall UserGroup Flow Control\",\n    \"AssistantFlowCtrl\": \"Assistant Flow Control\",\n    \"SkillFlowCtrl\": \"Skill Flow Control\",\n    \"flowCtrl\": \"workflow Flow Control\",\n    \"createdBy\": \"CreatedBy\",\n    \"flowCtrlStrategy\": \"Flow control strategy\",\n    \"limit\": \"Limit\",\n    \"unlimited\": \"Unlimited\",\n    \"iconHover\": \"Simultaneously constrained by the overall traffic control strategy of the user group\",\n    \"maximum\": \"Up to\",\n    \"perMinute\": \"simultaneous online sessions\",\n    \"changeTime\": \"Modification Time\",\n    \"deleteGroup\": \"After deletion 【{{name}}】 will no longer exist, Do you want to delete it?\",\n    \"currentGroup\": \"Current UserGroup\",\n    \"defaultGroup\": \"DefaultGroup\",\n    \"resetPwd\": \"ResetPassword\",\n    \"selectUser\": \"Please select a user\",\n    \"selectGroup\": \"Please select a user group\",\n    \"selectRole\": \"Please select a role\",\n    \"menuAuthorization\": \"Menu\",\n    \"primaryMenu\": \"Primary menu\",\n    \"viewPermission\": \"View permission\",\n    \"themeColor\": \"Theme color\",\n    \"toolAuthorization\": \"Tool\",\n    \"createUser\": \"Create User\",\n    \"usernamePlaceholder\": \"This username will be used to log in, and cannot be changed\",\n    \"initialPassword\": \"Initial Password\",\n    \"passwordPlaceholder\": \"At least 8 characters, must include a combination of uppercase letters, lowercase letters, numbers, and symbols\",\n    \"userGroupRoleSelection\": \"User Group/Role Selection\",\n    \"usernameRequired\": \"Username is required\",\n    \"usernameMaxLength\": \"Username can be a maximum of 30 characters\",\n    \"passwordRequirements\": \"Initial password must be at least 8 characters, including uppercase letters, lowercase letters, numbers, and symbols\",\n    \"roleRequired\": \"At least one role must be selected\",\n    \"userCreationSuccess\": \"User created successfully! Username and initial password have been copied to clipboard\"\n  },\n  \"skills\": {\n    \"manageTemplate\": \"Manage Skill Templates\",\n    \"createNew\": \"Create New Skill\",\n    \"customSkills\": \"Custom Skills\",\n    \"chooseOnline\": \"Choose the online version\",\n    \"executionSteps\": \"Skills are visualized through process orchestration to clarify task execution steps\",\n    \"sceneTemplates\": \"We provide scene templates for your use and reference\",\n    \"manageProjects\": \"Manage your personal projects here, including skill deployment and editing\",\n    \"skillSearch\": \"Skill Search\",\n    \"confirmDeleteSkill\": \"Confirm the deletion of this skill?\",\n    \"backToSkillList\": \"Back to Skill List\",\n    \"skillTemplateManagement\": \"Skill Template Management, templates are visible to all users, supports drag and drop sorting, and deletion\",\n    \"templateName\": \"Template Name\",\n    \"templateDescription\": \"Template Description\",\n    \"confirmText\": \"Are you sure you want to delete this skill template?\",\n    \"skillSettings\": \"Skill Settings\",\n    \"basicInfo\": \"Basic Information\",\n    \"skillName\": \"Skill Name\",\n    \"description\": \"Description\",\n    \"parameterInfo\": \"Parameter Information\",\n    \"advancedConfiguration\": \"Advanced Configuration\",\n    \"nextStep\": \"Next Step, Advanced Configuration\",\n    \"skillNameRequired\": \"Please enter a skill name\",\n    \"skillNameTooLong\": \"Skill name is too long, should not exceed 30 characters\",\n    \"skillNameExists\": \"This name already exists\",\n    \"skillDescRequired\": \"Please enter a skill description\",\n    \"skillDescTooLong\": \"Skill description is too long, should not exceed 200 characters\",\n    \"errorTitle\": \"Key Information Error\",\n    \"onlineFailure\": \"Online failure\",\n    \"onlineSuccessful\": \"Online Successful\",\n    \"custom\": \"Custom\",\n    \"skillTemplate\": \"Skill Template\",\n    \"skillTemplateChoose\": \"You can choose a template from here to start, or create an advanced template\",\n    \"createTemplate\": \"Create Template\",\n    \"skillDescriptionRequired\": \"Please enter a skill description\",\n    \"skillDescriptionTooLong\": \"Skill description is too long, should not exceed 200 characters\",\n    \"keyInfoErrorTitle\": \"Key Information Error\",\n    \"createSuccessTitle\": \"Skill created successfully\",\n    \"createFailureTitle\": \"Creation failed\",\n    \"createdBy\": \"Created by\",\n    \"offline\": \"Offline\",\n    \"online\": \"Online\",\n    \"guideWords\": \"Guide Words\",\n    \"currentVersion\": \"Current Version: \",\n    \"importLocal\": \"Import local components\",\n    \"save\": \"Saved\",\n    \"import\": \"Import\",\n    \"export\": \"Export\",\n    \"code\": \"Code\",\n    \"simplify\": \"Simplify\",\n    \"saveVersion\": \"SaveVersion\",\n    \"deleteOrNot\": \"Do you want to delete\",\n    \"version\": \"version\",\n    \"saveSuccessful\": \"Save Successful\",\n    \"supportVersions\": \"Support splitting into multiple version branches for development and comparison between versions.\",\n    \"guideQuestions50\": \"Guide questions to a maximum of 50 characters\",\n    \"chatHistoryMaxToken\": \"The maximum number of tokens in chat history must be an integer\",\n    \"promptWords1000\": \"The opening statement can be up to 1000 characters\",\n    \"contactAdmin\": \"Please contact the administrator's online assistant\",\n    \"deleteSure\": \"Are you sure you want to delete this tool?\",\n    \"modelRequired\": \"Model is empty\",\n    \"avatar\": \"Avatar\",\n    \"switchTo\": \"Switch to\"\n  },\n  \"chat\": {\n    \"newChat\": \"New Chat\",\n    \"selectChat\": \"Select a skill to start\",\n    \"chooseOne\": \"Choose a \",\n    \"dialogue\": \"Conversation \",\n    \"start\": \"to start with \",\n    \"wenqingruijian\": \"Wen Qingrui Jian\",\n    \"inputPlaceholder\": \"Enter your question\",\n    \"uploadFileTooltip\": \"Upload File\",\n    \"sendTooltip\": \"Send\",\n    \"forms\": \"Forms\",\n    \"skillTempsTitle\": \"Skill Selection\",\n    \"skillTempsDesc\": \"Choose an online skill you want to use\",\n    \"skillDeleted\": \"This skill has been deleted\",\n    \"networkError\": \"Network connection error. Please try the following methods\",\n    \"networkErrorList1\": \"Do not operate too quickly\",\n    \"networkErrorList2\": \"Refresh the page\",\n    \"networkErrorList3\": \"Check if the backend is running\",\n    \"buildError\": \"It seems you are missing some configurations\",\n    \"connectionbreakTip\": \"Connection Abnormal Disconnect:\",\n    \"connectionbreak\": \"Network Disconnected!\",\n    \"copyTip\": \"Content copied\",\n    \"noAccess\": \"Due to insufficient permissions, this answer has excluded content that you are not authorized to view\",\n    \"sourceFromQaLibrary\": \"This answer is sourced from the existing Q&A library.\",\n    \"source\": \"Reference Source\",\n    \"file\": \"File\",\n    \"filePrsing\": \"File is currently being parsed\",\n    \"uploading\": \"Uploading...\",\n    \"fileParsingShort\": \"Parsing...\",\n    \"uploadingShort\": \"Uploading...\",\n    \"fileUploadFailed\": \"File upload failed: {{name}}\",\n    \"fileExceedRemoved\": \"File: {{name}} exceeds {{size}}MB and has been removed\",\n    \"fileTypeNotAllowed\": \"Unsupported file type: {{type}}\",\n    \"uploadFailedCheckFormat\": \"Upload failed, please check file format\",\n    \"sourceTooltip\": \"Source Paragraph\",\n    \"filterLabel\": \"Filter Labels\",\n    \"tooltipText\": \"The system generates key information tags automatically based on the answers, and you can also manually add or delete labels. The system calculates the relevance of various files and paragraphs based on these tags.\",\n    \"customLabel\": \"Custom\",\n    \"addCustomLabel\": \"+ Custom\",\n    \"sourceDocumentsLabel\": \"Source Documents\",\n    \"downloadPDFTooltip\": \"Download Dual-Layered PDF\",\n    \"downloadOriginalTooltip\": \"Download Original File\",\n    \"noMatchedFilesMessage\": \"No matched source files\",\n    \"fileStorageFailure\": \"File storage failure!\",\n    \"confirmDeleteChat\": \"Confirm deletion of this chat？\",\n    \"roundOver\": \"This round is over\",\n    \"chatDialogTip\": \"Set the input variables defined in the prompt template. Interact with agents and chains.\",\n    \"feedback\": \"Feedback\",\n    \"feedbackRequired\": \"Feedback is required\",\n    \"dialogueSelection\": \"Dialogue selection\",\n    \"chooseSkillOrAssistant\": \"Choose an online skill or assistant you want to use\",\n    \"search\": \"Search\",\n    \"recommendationQuestions\": \"Recommendation questions\",\n    \"historicalMessages\": \"Historical Messages\",\n    \"clickDownload\": \"Click to download\",\n    \"searchAssistantOrSkill\": \"Search assistant or skill\",\n    \"operationTips\": \"Operation tips: Select the tags to be displayed on the left, and drag to sort on the right\",\n    \"selected\": \"Selected\",\n    \"pleaseSelectAnApp\": \"Please select an app\",\n    \"allLabels\": \"All labels\",\n    \"searchLabels\": \"Search labels\",\n    \"confirmed\": \"Confirmed\",\n    \"confirm\": \"Confirm\",\n    \"runNewWorkflow\": \"Run New Chat\",\n    \"chatEndMessage\": \"This chat has ended\"\n  },\n  \"importLinsight\": {\n    \"title\": \"Import Guidebook from Run Records\",\n    \"searchPlaceholder\": \"Search guidebooks\",\n    \"loading\": \"Loading...\",\n    \"noRecords\": \"No run records available\",\n    \"noMatchingRecords\": \"No matching records found\",\n    \"columns\": {\n      \"selectAll\": \"Select All\",\n      \"name\": \"Name\",\n      \"createTime\": \"Create Time\",\n      \"createUser\": \"Created By\",\n      \"rating\": \"Rating\"\n    },\n    \"pagination\": {\n      \"totalRecords\": \"Total {{total}}\",\n      \"goToPage\": \"Go to\",\n      \"page\": \"Page\"\n    },\n    \"selectedCount\": \"{{count}} items selected\",\n    \"batchImport\": \"Batch Import\",\n    \"preview\": {\n      \"title\": \"Preview\",\n      \"noSelection\": \"Please select a record from the left to preview\",\n      \"description\": \"Description\"\n    },\n    \"importCurrent\": \"Import Current Guidebook\",\n    \"duplicateDialog\": {\n      \"title\": \"SOP Duplicate Warning\",\n      \"description\": \"The following SOPs already exist in the library. Confirm whether to overwrite during import?\",\n      \"noDuplicateNames\": \"No duplicate SOP names found\",\n      \"saveAsNew\": \"Save as new SOP without overwriting\",\n      \"savingAsNew\": \"Saving as new SOP...\",\n      \"overwrite\": \"Overwrite\",\n      \"overwriting\": \"Overwriting SOP...\"\n    },\n    \"success\": \"Import successful\",\n    \"error\": \"Import failed\",\n    \"guidelineManual\": \"Guideline Manual\",\n    \"noRunningResult\": \"No running result\",\n    \"runningResult\": \"Running result\",\n    \"name\": \"Name\",\n    \"creator\": \"Creator\",\n    \"description\": \"Description\",\n    \"featured\": \"Featured\",\n    \"notFeatured\": \"Not Featured\",\n    \"actions\": \"Actions\",\n    \"reset\": \"Reset\",\n    \"apply\": \"Apply\",\n    \"edit\": \"Edit\",\n    \"delete\": \"Delete\",\n    \"noRatings\": \"No ratings available\",\n    \"noSOPFound\": \"No relevant SOP found\",\n    \"goTo\": \"Go to\",\n    \"pages\": \"Pages\"\n  },\n  \"toolSelector\": {\n    \"selectedTools\": \"Selected Tools\",\n    \"noToolsSelected\": \"No tools selected yet\",\n    \"selectToolsPrompt\": \"Please select tools from the full tool list on the right\",\n    \"allTools\": \"All Tools\",\n    \"searchPlaceholder\": \"Search tools...\",\n    \"builtinTools\": \"Built-in Tools\",\n    \"apiTools\": \"API Tools\",\n    \"mcpTools\": \"MCP Tools\",\n    \"noToolsFound\": \"No related tools found\",\n    \"guidelineManual\": \"Guideline Manual\",\n    \"noRunningResult\": \"No Running Results\",\n    \"runningResult\": \"Running Results\"\n  },\n  \"sopForm\": {\n    \"editManual\": \"Edit Manual\",\n    \"createManual\": \"Create Manual\",\n    \"manualName\": \"Manual Name\",\n    \"namePlaceholder\": \"Please enter manual name\",\n    \"description\": \"Description\",\n    \"descriptionPlaceholder\": \"Please enter manual description\",\n    \"detailedContent\": \"Detailed Content\",\n    \"contentPlaceholder\": \"Please enter SOP detailed content\",\n    \"cancel\": \"Cancel\",\n    \"saving\": \"Saving...\",\n    \"save\": \"Save\",\n    \"nameRequired\": \"Name cannot be empty\",\n    \"contentRequired\": \"Detailed content cannot be empty\",\n    \"nameMaxLength\": \"Name cannot exceed {{max}} characters\",\n    \"contentMaxLength\": \"Detailed content cannot exceed {{max}} characters\",\n    \"importFailed\": \"SOP import failed\",\n    \"contentTooLong\": \"content too long\",\n    \"saveFailed\": \"Save failed\",\n    \"manual\": \"Manual\",\n    \"result\": \"Result\",\n    \"noResult\": \"No result\",\n    \"onlyFeaturedWithResult\": \"Only cases with results can be featured\",\n    \"featuredCase\": \"Featured Case\",\n    \"setAsFeaturedCase\": \"Set as Featured Case\",\n    \"failToSetFeaturedCase\": \"Failed to set as featured case\"\n  },\n  \"chatConfig\": {\n    \"linsightPlaceholder\": \"$t(linsight) is an Agent assistant skilled at completing complex tasks. In addition to describing your task objectives, you can also describe in plain language how you want them to be achieved, which will help get results that meet your expectations~\",\n    \"linsightTools\": \"$t(linsight) Optional Tools\",\n    \"linsightManual\": \"$t(linsight) Manual Library\",\n    \"searchManual\": \"Search Manuals\",\n    \"importFromRecord\": \"Import from Records\",\n    \"importFromLocal\": \"Import from Local File\",\n    \"createManual\": \"Create New Manual\",\n    \"batchDelete\": \"Batch Delete\",\n    \"batchDeleteConfirm\": \"Batch Delete Confirmation\",\n    \"batchDeleteDesc\": \"Confirm batch deletion of selected SOPs?\",\n    \"confirmDelete\": \"Confirm Delete\",\n    \"importManual\": \"Import Manual\",\n    \"uploadFile\": \"Please upload file\",\n    \"exampleFile\": \"Example File\",\n    \"exampleFileName\": \"User_Manual_Format_Example.xlsx\",\n    \"importing\": \"Importing...\",\n    \"fileFormatError\": \"File format does not meet requirements\",\n    \"gotIt\": \"Got it\",\n    \"save\": \"Save\",\n    \"savePreview\": \"save Preview\",\n    \"cancel\": \"Cancel\",\n    \"submit\": \"Submit\",\n    \"workstationEntry\": \"Lingsi Entry\",\n    \"iconUpload\": \"Icon Upload\",\n    \"sidebarIcon\": \"Sidebar Icon\",\n    \"assistantIcon\": \"Welcome Page Icon & Avatar\",\n    \"sidebarSlogan\": \"Sidebar Slogan\",\n    \"welcomeMessage\": \"Welcome Message Settings\",\n    \"welcomeMessagePlaceholder\": \"I'm $t(bisheng), nice to meet you!\",\n    \"functionDescription\": \"Function Description\",\n    \"functionDescriptionPlaceholder\": \"I can help you write code, read files, create various creative content, please give me your tasks～\",\n    \"inputPlaceholder\": \"Input Placeholder\",\n    \"inputPlaceholderPlaceholder\": \"Send message to XX\",\n    \"appCenterWelcome\": \"App Center Welcome Message\",\n    \"appCenterWelcomePlaceholder\": \"Explore $t(bisheng) Agents\",\n    \"appCenterDescription\": \"App Center Description\",\n    \"appCenterDescriptionPlaceholder\": \"You can select the required agents here for production and work\",\n    \"modelManagement\": \"Dialogue Model Management\",\n    \"maxTokens\": \"Knowledge Base/Web Search Result Max Characters\",\n    \"maxTokensPlaceholder\": \"Maximum characters supported by the model\",\n    \"systemPrompt\": \"System Prompt\",\n    \"systemPromptPlaceholder\": \"Please enter the model system prompt.\",\n    \"webSea\": \"Web Search\",\n    \"knowledgeBase\": \"Knowledge Base\",\n    \"knowledgeBasePrompt\": \" Knowledge Base Search Prompt\",\n    \"fileUpload\": \"File Upload\",\n    \"fileUploadPrompt\": \"File Upload Prompt\",\n    \"webSearchConfig\": \"Web Search Configuration\",\n    \"saveSuccess\": \"Configuration saved successfully\",\n    \"saveFailed\": \"Save failed\",\n    \"requestFailed\": \"Request failed, please try again later\",\n    \"sortFailed\": \"Sort failed, please try again later\",\n    \"initLoadFailed\": \"Failed to load initial data\",\n    \"submitSuccess\": \"Submitted successfully\",\n    \"uploadXlsxTip\": \"Please upload a .xlsx file!\",\n    \"fileExtMustBeXlsx\": \"File extension must be .xlsx!\",\n    \"sopUpdated\": \"SOP updated successfully\",\n    \"sopCreated\": \"SOP created successfully\",\n    \"notFoundSop\": \"SOP to edit was not found\",\n    \"deleteConfirmTitle\": \"Delete Confirmation\",\n    \"deleteConfirmDesc\": \"Are you sure you want to delete this SOP?\",\n    \"deleteSuccess\": \"SOP deleted successfully\",\n    \"deleteFailed\": \"Delete failed\",\n    \"batchDeleteSuccess\": \"Successfully deleted {{count}} SOP(s)\",\n    \"webSearch\": {\n      \"engine\": \"Web Search Engine\",\n      \"config\": \"Web Search Tool Configuration\",\n      \"bing\": \"Bing Search\",\n      \"bocha\": \"Bocha websearch\",\n      \"jina\": \"Jina Deep Search\",\n      \"serp\": \"Serp API\",\n      \"tavily\": \"Tavily\",\n      \"cloudsway\": \"cloudsway\",\n      \"searXNG\": \"searXNG\",\n      \"serverUrl\": \"Server URL\",\n      \"serverUrlPlaceholder\": \"Enter the searXNG access URL you deployed, e.g., http://localhost:8080\"\n    },\n    \"errors\": {\n      \"maxCharacters\": \"Maximum {{count}} characters\",\n      \"atLeastOneModel\": \"Add at least one model\",\n      \"modelNameRequired\": \"Model display name cannot be empty\",\n      \"modelRequired\": \"Model cannot be empty\",\n      \"modelDuplicate\": \"Model cannot be duplicated\",\n      \"modelNameDuplicate\": \"Display name cannot be duplicated\",\n      \"required\": \"Cannot be empty\"\n    },\n    \"systemPrompt2\": \"# Role Setting\\n- You are the $t(bisheng) intelligent Q&A assistant, designed to provide users with **information queries, content creation, learning tutoring, programming help, life advice**, and other forms of assistance.\\n- You should always maintain a friendly, professional, patient, and helpful attitude, communicating with users in clear, accurate, and understandable language.\\n# Code of Conduct\\n1. **Role Consistency:** Always interact with users as the $t(bisheng) intelligent Q&A assistant, without impersonating other unrelated roles or characters.\\n2. **Information Accuracy:** Strive to provide accurate and reliable information. Clearly state when uncertain about content, avoiding misleading users.\\n3. **Privacy Protection:** Do not proactively request or record users' personal information. Do not store or disclose any user privacy data or sensitive information.\\n4. **Content Safety:** Comply with laws, regulations, and ethical standards. Do not generate or disseminate content involving politics, illegal activities, violence, pornography, discrimination, hatred, or other inappropriate material.\\n5. **Neutrality and Objectivity:** Maintain neutrality on controversial topics, providing multiple perspectives without favoring any side.\\n6. **Appropriate Guidance:** If users' questions are vague or incomplete, appropriately guide them to clarify, but do not force them or show impatience.\\n# Language and Style:\\n- Communicate based on the language type used by the user or their specific needs.\\n- Language style should be **clear and concise, polite and friendly, easy to understand**, adjusting expression methods based on the user's background and query content.\\n- **Emojis** (such as 😊, 👍) may be used appropriately to increase approachability, but avoid excessive use to maintain a professional image.\\n# Time Information\\nThe current time is {cur_date}.\\n# ECharts Chart Rendering Support\\nIf charts need to be rendered in responses, use code blocks starting with ```echarts and write the configuration within.\\nExample:\\n```echarts\\n{{\\n  \\\"title\\\": {{\\n    \\\"text\\\": \\\"ECharts Getting Started Example\\\"\\n  }},\\n  \\\"tooltip\\\": {{}},\\n  \\\"legend\\\": {{\\n    \\\"data\\\": [\\\"Sales\\\"]\\n  }},\\n  \\\"xAxis\\\": {{\\n    \\\"data\\\": [\\\"Shirts\\\", \\\"Wool Sweaters\\\", \\\"Chiffon Blouses\\\", \\\"Pants\\\", \\\"High Heels\\\", \\\"Socks\\\"]\\n  }},\\n  \\\"yAxis\\\": {{}},\\n  \\\"series\\\": [{{\\n    \\\"name\\\": \\\"Sales\\\",\\n    \\\"type\\\": \\\"bar\\\",\\n    \\\"data\\\": [5, 20, 36, 10, 10, 20]\\n  }}]\\n}}\\n```\",\n    \"webSearchPrompt\": \"# The following content is based on the search results of the message sent by the user:\\n{search_results}\\nIn the search results I provide you, each result is in the format [webpage X begin]...[webpage X end], where X represents the numerical index of each article. Please cite the context at the end of sentences when appropriate. Use the citation number [citation:X] format in the corresponding part of the answer. If a sentence comes from multiple contexts, list all relevant citation numbers, for example: cite[3]:cite[5]. Remember not to concentrate citations at the end but list them in the corresponding parts of the answer.\\nWhen answering, please note the following points:\\n- Today is {cur_date}.\\n- Not all content in the search results is closely related to the user's question. You need to combine the question and filter the search results.\\n- For enumeration questions (such as listing all flight information), try to keep the answer within 10 key points and inform the user that they can check the source for complete information. Prioritize providing complete and most relevant items; do not proactively inform the user of content not provided in the search results unless necessary.\\n- For creative questions (such as writing an essay), ensure that you cite the corresponding reference numbers in the body paragraphs, for example: cite[3]:cite[5]. Do not only cite at the end of the article. Interpret and summarize the user's requirements, choose an appropriate format, fully utilize the search results, and extract important information to generate answers that meet the user's requirements, are highly insightful, creative, and professional. Extend the length of your creation as much as possible, infer the user's intent for each key point, and provide multi-angle answers with substantial information and detailed explanations.\\n- If the answer is long, try to structure it and summarize in paragraphs. If you need to answer in points, try to limit it to 5 points and merge related content.\\n- For objective questions, if the answer is very short, you can add one or two additional pieces of relevant information to enrich the content.\\n- Choose an appropriate and aesthetically pleasing answer format based on the user's requirements and content to ensure readability.\\n- Your answer should be based on multiple relevant web pages and should not repeatedly cite the same page.\\n- Unless the user requests otherwise, the language of your answer should match the language of the user's question.\\n\\n# User message is:\\n{question}\",\n    \"internationalization\": \"You are a knowledge base Q&A assistant:\\n1. Answer questions in the language used by the user, and ensure the answers are rigorous and professional.\\n2. You need to answer based on the content in the following [Reference Text]. Only respond when the [Reference Text] has relevant information directly related to the user's question. Do not provide answers based on your own knowledge. If the relevant content includes images, output the image source file directly. If placeholders like `![image](path/IMAGE_1.png)` are found, please retain these placeholders without modifying or deleting them.\\n3. If the document contains tables, do not make any modifications or return the table in markdown format.\\n4. Since the [Reference Text] may contain information from different sources, which might lead to different or conflicting answers, please list these answers if discrepancies arise. If there is no conflict, provide the final result only.\\n5. If the content in the [Reference Text] is not related to the user's question, reply with \\\"No relevant content found.\\\"\\n\\n# Reference Text\\n{retrieved_file_content}\\n\\n# User's Question\\n{question}\"\n  },\n  \"save\": \"Save\",\n  \"model\": {\n    \"addSuccess\": \"Add Success\",\n    \"advancedParamsConfig\": \"Advanced Parameter Configuration\",\n    \"asr\": \"Speech Recognition (ASR)\",\n    \"back\": \"Back\",\n    \"cancel\": \"Cancel\",\n    \"cannotBeEmpty\": \"Cannot be empty\",\n    \"dailyCallLimit\": \"Daily Call Limit\",\n    \"delete\": \"Delete\",\n    \"deleteConfirmation\": \"Are you sure you want to delete this service provider?\",\n    \"deleteModelConfirmation\": \"Are you sure you want to delete this model?\",\n    \"deleteSuccess\": \"Delete Success\",\n    \"duplicateServiceProviderName\": \"Service provider name already exists\",\n    \"duplicateServiceProviderNameValidation\": \"Service provider name cannot be empty and must not exceed 100 characters\",\n    \"embedding\": \"Embedding\",\n    \"errorInvalidJsonFormat\": \"Error: Invalid JSON format. Please check your input\",\n    \"guiJiLiuDong\": \"Silicon Flow\",\n    \"huoShanYinQing\": \"Volcengine\",\n    \"interModelFormat\": \"Interface Model Format\",\n    \"aliYunBaiLian\": \"Alibaba Cloud Qwen\",\n    \"max100Characters\": \"Maximum 100 characters\",\n    \"model\": \"Model\",\n    \"modelDuplicate\": \"Model name already exists\",\n    \"modelNameEmpty\": \"Model name cannot be empty\",\n    \"modelNameLength\": \"Model name cannot exceed 100 characters\",\n    \"modelNameTooltip\": \"The specific name of the model in this service provider\",\n    \"modelNameDuplicate\": \"Model name already exists\",\n    \"modelNameValidation\": \"Model name cannot be empty and must not exceed 100 characters\",\n    \"modelStatusChecking\": \"Model Status Checking\",\n    \"notBeEmpty\": \"cannot be empty\",\n    \"pasteAdvancedParamsHere\": \"Please paste or enter your advanced parameter configuration in the text box below\",\n    \"qianFan\": \"Baidu Qianfan\",\n    \"rerank\": \"Rerank\",\n    \"save\": \"Save\",\n    \"saveSuccess\": \"Save Success\",\n    \"serviceProviderName\": \"Service Provider Name\",\n    \"serviceProviderNameTooltip\": \"Give a name to this service provider configuration for easy identification\",\n    \"silicon\": \"Silicon Flow\",\n    \"tengXunYun\": \"Tencent Cloud\",\n    \"timesPerDay\": \"times/day\",\n    \"tts\": \"Text-to-Speech (TTS)\",\n    \"updateSuccess\": \"Update Success\",\n    \"voiceType\": \"Voice Type\",\n    \"voiceTypeRequired\": \"Voice type is a required field\",\n    \"voiceTypeTooltip\": \"Select the voice type for text-to-speech synthesis\",\n    \"webSearch\": \"Web Search\",\n    \"zhiPuAI\": \"Zhipu AI\",\n    \"xunFeiXingHuo\": \"iFlytek Spark\",\n    \"yueZhiAnMian\": \"Moonshot AI\",\n    \"baiDuQianFan\": \"Baidu Qianfan\",\n    \"visitOfficialWebsiteToViewAvailableModels\": \"Visit the official website to view available models\",\n    \"modelManagement\": \"Model Management\",\n    \"modelFineTune\": \"Model Finetune\",\n    \"modelConfiguration\": \"Model Configuration\",\n    \"modelCollectionCaption\": \"Model Collection\",\n    \"modelName\": \"Model Name\",\n    \"status\": \"Status\",\n    \"systemModelSettings\": \"System Model Settings\",\n    \"addModel\": \"Add Model\",\n    \"refresh\": \"Refresh\",\n    \"serviceProvider\": \"Service Provider\",\n    \"actions\": \"Actions\",\n    \"modelType\": \"Model Type\",\n    \"onlineOfflineOperation\": \"Online/Offline\",\n    \"available\": \"Available\",\n    \"abnormal\": \"Abnormal\",\n    \"unknown\": \"Unknown\",\n    \"empty\": \"No Data\",\n    \"gpuResourceUsageTitle\": \"GPU Resource Usage\",\n    \"jsonFormatError\": \"JSON Format Error\"\n  },\n  \"finetune\": {\n    \"all\": \"All\",\n    \"successful\": \"Successful\",\n    \"inProgress\": \"In Progress\",\n    \"failedAborted\": \"Failed/Aborted\",\n    \"modelName\": \"Model Name\",\n    \"createTrainingTask\": \"Create Training Task\",\n    \"rtService\": \"FT Service\",\n    \"rtServiceManagement\": \"FT Service Management\",\n    \"createTime\": \"Creation Time\",\n    \"noData\": \"No Data\",\n    \"trainingInProgress\": \"Training In Progress\",\n    \"trainingFailed\": \"Training Failed\",\n    \"taskAborted\": \"Task Aborted\",\n    \"trainingSuccess\": \"Training Success\",\n    \"publishSuccess\": \"Publish Success\",\n    \"selectModel\": \"Select model for details.\"\n  },\n  \"flow\": {\n    \"unsavedChangesConfirmation\": \"You have unsaved changes. Are you sure you want to leave?\",\n    \"leave\": \"Leave\",\n    \"leaveAndSave\": \"Leave and Save\",\n    \"simplifyConfig\": \"Simplify Configuration\",\n    \"simplify\": \"Simplify\",\n    \"notifications\": \"Notifications\",\n    \"exit\": \"Exit\",\n    \"import\": \"Import\",\n    \"export\": \"Export\",\n    \"code\": \"Code\",\n    \"searchComponent\": \"Search Component\",\n    \"knowledgeBaseSelection\": \"Knowledge Base Selection\",\n    \"searchKnowledgeBase\": \"Search Knowledge Base\",\n    \"minimumParamSetDescription\": \"You can set the minimum parameter set required for the skill here\",\n    \"paramList\": \"Parameter List\",\n    \"saveConfig\": \"Save Configuration\",\n    \"componentLabel\": \"Component\",\n    \"aliasLabel\": \"Alias\",\n    \"editAlias\": \"Edit Alias\",\n    \"parameterLabel\": \"Parameter\",\n    \"notification\": \"Notification\",\n    \"noNewNotifications\": \"No new notifications\",\n    \"skillName\": \"Skill Name\",\n    \"nameTooLong\": \"Name is too long\",\n    \"skillDescription\": \"Skill Description\",\n    \"enterVarName\": \"Please enter a variable name.\",\n    \"varNameExists\": \"Variable name is already in use\",\n    \"text\": \"Text\",\n    \"dropdown\": \"Dropdown\",\n    \"maxLength\": \"Max Length\",\n    \"options\": \"Options\",\n    \"variableName\": \"Variable Name\",\n    \"varOptionRequired\": \"options are required\",\n    \"optionRepeated\": \"Option repeated\",\n    \"incorrectIdFormatMessage\": \"Incorrect ID format (should be a 5-character combination of letters and numbers)\",\n    \"idAlreadyExistsMessage\": \"This ID already exists\"\n  },\n  \"lib\": {\n    \"knowledgeBaseId\": \"Knowledge ID\",\n    \"enterLibraryName\": \"Enter Knowledge Base Name\",\n    \"libraryNameLimit\": \"Knowledge Base name cannot exceed 30 characters\",\n    \"selectModel\": \"Select a Model\",\n    \"nameExists\": \"This name already exists\",\n    \"descriptionLimit\": \"Knowledge Base description cannot exceed 200 characters\",\n    \"createLibrary\": \"Create Knowledge Base\",\n    \"libraryName\": \"Knowledge Base Name\",\n    \"description\": \"Knowledge Description\",\n    \"model\": \"Model\",\n    \"fileData\": \"File Data\",\n    \"qaData\": \"QA Knowledge\",\n    \"libraryCollection\": \"Knowledge Base Collection\",\n    \"createUser\": \"Create User\",\n    \"details\": \"Details\",\n    \"confirmDeleteLibrary\": \"Confirm deletion of this Knowledge Base?\",\n    \"copy\": \"Copy\",\n    \"copying\": \"Copying\",\n    \"searchPlaceholder\": \"Search Knowledge\",\n    \"desc\": \"Description\",\n    \"knowledgeBaseDescription\": \"Please enter knowledge base description\",\n    \"creationComplete\": \"Creation complete\",\n    \"embeddingModelSelection\": \"Knowledge base embedding model selection\"\n  },\n  \"evaluation\": {\n    \"id\": \"Task ID\",\n    \"filename\": \"Test File Name\",\n    \"skillAssistant\": \"Skill Assistant\",\n    \"status\": \"Status\",\n    \"score\": \"Evaluation Score\",\n    \"createDate\": \"Creation Date\",\n    \"download\": \"Download\",\n    \"confirmDeleteEvaluation\": \"Confirm deletion of this evaluation task?\",\n    \"createTitle\": \"Create New Task\",\n    \"selectLabel\": \"Select the skill or assistant to evaluate:\",\n    \"selectPlaceholder\": \"Please select\",\n    \"selectInputPlaceholder\": \"Please search by name\",\n    \"dataLabel\": \"Test Data Set:\",\n    \"fileExpandName\": \"Supported Extensions:\",\n    \"downloadTemplate\": \"Download Template File\",\n    \"promptLabel\": \"Evaluation Instruction Text:\",\n    \"enterExecType\": \"Please select the skill or assistant to evaluate\",\n    \"enterFile\": \"Please select the test data set\",\n    \"enterPrompt\": \"Evaluation instruction cannot be empty\",\n    \"fileSizeLimit\": \"File size limit is within 10M\",\n    \"evaluationCollection\": \"Evaluation Collection\",\n    \"tooltip\": \"This instruction text is used to guide the model in extracting key points from the ground truth and answer. Please do not modify unless necessary\",\n    \"create\": \"Create\",\n    \"cancel\": \"Cancel\",\n    \"precision\": \"Precision\",\n    \"recall\": \"Recall\",\n    \"onlyCsvAllowed\": \"Only CSV format files are allowed\",\n    \"excelNotSupported\": \"Excel format is not supported, please upload CSV file\",\n    \"onlyCsvSupported\": \"Only CSV format is supported\",\n    \"selectWorkflow\": \"Please select workflow\",\n    \"selectSkill\": \"Please select skill\",\n    \"selectAssistant\": \"Please select assistant\",\n    \"selectVersion\": \"Please select version\"\n  },\n  \"code\": {\n    \"editPythonCodeDescription\": \"Edit your Python code here. This code snippet accepts module imports and a function definition. Make sure your function returns a string.\",\n    \"editCode\": \"Edit Code\",\n    \"codeReadyToRun\": \"Code ready to run\",\n    \"functionError\": \"There is an error in your function\",\n    \"importsError\": \"There is an error in your imports\",\n    \"errorOccurred\": \"An error occurred, please retry\",\n    \"codeError\": \"There is an issue with this code, please check the following\",\n    \"checkAndSave\": \"Check & Save\",\n    \"export\": \"Export\",\n    \"exportToJSON\": \"Export Skill to JSON File\",\n    \"keyInformationMissing\": \"You have some missing key information: \",\n    \"skillNameMissing\": \"Please enter a skill name\",\n    \"useOwnAPIKeys\": \"Use your own API keys\",\n    \"exportSkill\": \"Export Skill\",\n    \"uploadFile\": \"Upload File\",\n    \"clickOrDragHere\": \"Click or drag a file here to upload\",\n    \"dropFileHere\": \"Drop file here to upload\",\n    \"delimiter\": \"Delimiter (multiple with ;)\",\n    \"splitLength\": \"Chunk Size\",\n    \"smartSplit\": \"Smart Semantic Split\",\n    \"manualSplit\": \"Manually Set Split\",\n    \"delimiterPlaceholder\": \"Delimiter symbol\",\n    \"splitSizePlaceholder\": \"Split Size\",\n    \"complete\": \"Complete\",\n    \"setSplitSize\": \"Please set the file split size\",\n    \"selectFileToUpload\": \"Please select a file to upload first\",\n    \"file\": \"File\",\n    \"sizeExceedsLimit\": \"Size exceeds {{size}}MB\",\n    \"editDictionary\": \"Edit Dictionary\",\n    \"exportCodeDialogTip\": \"Generate code to integrate the workflow into an external application (please make sure to build the skill before opening this page).\",\n    \"chunkOverlap\": \"Chunk Overlap\"\n  },\n  \"report\": {\n    \"reportTemplate\": \"Report Template\",\n    \"reportDescription\": \"Report generation description...\",\n    \"newButton\": \"New\",\n    \"importButton\": \"Import\",\n    \"start\": \"start\",\n    \"formSettings\": \"Form Settings\",\n    \"requiredLabel\": \"Required\",\n    \"isRequired\": \"is Required\",\n    \"fileRequired\": \"The current file is empty\",\n    \"selectComponent\": \"Select a component\",\n    \"varLength\": \"Length cannot exceed\",\n    \"requiredField\": \"{{label}} is a required field and cannot be empty.\"\n  },\n  \"status\": {\n    \"1004\": \"This skill has been deleted\",\n    \"1008\": \"The current assistant or skill is not online, and direct conversation is not possible.\",\n    \"1005\": \"\"\n  },\n  \"build\": {\n    \"create\": \"Create\",\n    \"assistant\": \"Assistant\",\n    \"workflow\": \"Workflow\",\n    \"skill\": \"Skill\",\n    \"workbench\": \"WorkBench\",\n    \"tools\": \"Tools\",\n    \"save\": \"Save\",\n    \"online\": \"Online\",\n    \"offline\": \"Offline\",\n    \"retry\": \"Retry\",\n    \"use\": \"Use\",\n    \"useAll\": \"Use All\",\n    \"allAppTypes\": \"All Application Types\",\n    \"assistantConfiguration\": \"Assistant Configuration\",\n    \"assistantPortrait\": \"Assistant Portrait\",\n    \"portraitOptimization\": \"Assistant portrait optimization\",\n    \"automaticOptimization\": \"Automatic optimization\",\n    \"searchApp\": \"Search for the app you need\",\n    \"establishAssistant\": \"Create Assistant\",\n    \"assistantName\": \"Assistant Name\",\n    \"giveAssistantName\": \"Give the assistant a name\",\n    \"whatWant\": \"What is the role of an assistant and what specific tasks do you want to complete?\",\n    \"example\": \"Example\",\n    \"exampleOne\": \"You are XX, with XX experience, skilled in XX, ...\",\n    \"exampleTwo\": \"Your task is XX, and you need to follow the following steps to execute it:\",\n    \"automaticallyConfigurations\": \"Automatically select relevant configurations for you\",\n    \"prompt\": \"Provide a detailed and specific description of the interaction between the assistant and the user, such as the assistant's identity, specific methods and steps for completing tasks, tone of voice when answering questions, and what issues should be noted\",\n    \"openingRemarks\": \"Opening remarks\",\n    \"guidingQuestions\": \"Guiding Questions\",\n    \"promptReplaced\": \"Prompt word replaced\",\n    \"guideReplaced\": \"Guide word replaced\",\n    \"openingReplaced\": \"Opening word replaced\",\n    \"toolsReplaced\": \"Tools replaced\",\n    \"skillsReplaced\": \"Skills replaced\",\n    \"allReplaced\": \"All replaced\",\n    \"basicConfiguration\": \"Basic configuration\",\n    \"modelConfiguration\": \"AI Model Configuration\",\n    \"model\": \"Model\",\n    \"temperature\": \"Temperature\",\n    \"openingIntroduction\": \"Opening Introduction\",\n    \"openingStatement\": \"Opening Statement\",\n    \"assistantMessageFormat\": \"The assistant will send this message at the beginning of each conversation, supports Markdown format\",\n    \"maximumPromptLength\": \"The remarks can be up to 1000 characters\",\n    \"recommendQuestionsForUsers\": \"Provide recommended questions for users to guide them to ask. When there are more than 3, 3 will be randomly selected.\",\n    \"maxCharacters50\": \"Up to 50 characters\",\n    \"enterGuidingQuestions\": \"Please enter guiding questions\",\n    \"knowledge\": \"Knowledge\",\n    \"knowledgeBase\": \"Knowledge Base\",\n    \"autoCall\": \"Auto Call\",\n    \"callingMethod\": \"Calling Method\",\n    \"autoCallDescription\": \"Retrieve and recall the added knowledge base in every conversation.\",\n    \"onDemandCall\": \"On-Demand Call\",\n    \"onDemandCallDescription\": \"Prompt to call the RecallKnowledge (copyable) method in the assistant's profile (prompt words), and only retrieve the knowledge base when needed.\",\n    \"createNewKnowledge\": \"Create New Knowledge Base\",\n    \"refresh\": \"Refresh\",\n    \"abilities\": \"Abilities\",\n    \"skillDescription\": \"Implement complex and stable business process orchestration through a visual interface, such as project planning and report analysis.\",\n    \"selectKnowledgeBase\": \"Please select a knowledge base\",\n    \"searchBaseName\": \"Search for knowledge base name\",\n    \"debugPreview\": \"Debug Preview\",\n    \"addTool\": \"Add Tool\",\n    \"search\": \"Search\",\n    \"empty\": \"Nothing here\",\n    \"onlineSA\": \"Go online skills&assistants\",\n    \"params\": \"Parameters\",\n    \"added\": \"Added\",\n    \"add\": \"Add\",\n    \"configurationUpdated\": \"Configuration updated\",\n    \"addSkill\": \"Add Skill\",\n    \"createSkill\": \"Create Skill\",\n    \"nameRequired\": \"Name cannot be empty\",\n    \"nameMaxLength\": \"Name can have at most 50 characters\",\n    \"descMaxLength\": \"Description can have at most 1000 characters\",\n    \"editAssistant\": \"Edit Assistant\",\n    \"enterName\": \"Enter a name for the assistant\",\n    \"assistantDesc\": \"Assistant Description\",\n    \"enterDesc\": \"Introduce assistant functionality, visible in conversations and assistant pages\",\n    \"cancel\": \"Cancel\",\n    \"confirm\": \"Confirm\",\n    \"forBetter\": \"For better assistant effect, the description needs to be greater than 20 words\",\n    \"forExample\": \"For example, the identity of an assistant, specific methods and steps for completing tasks, tone of voice when answering questions, and what issues to pay attention to, etc\",\n    \"contentSecurityR\": \"Content Security Review\",\n    \"errors\": {\n      \"selectAtLeastOneWordType\": \"At least one word type must be selected\",\n      \"autoReplyNotEmpty\": \"Auto-reply content cannot be empty\"\n    },\n    \"saveSuccess\": \"Saved successfully\",\n    \"contentSecurityDesc\": \"Review session content for safety with a sensitive word list or API\",\n    \"contentSecuritySettings\": \"Content Security Review Settings\",\n    \"enableContentSecurityReview\": \"Enable Content Security Review\",\n    \"reviewType\": \"Review Type\",\n    \"sensitiveWordListMatch\": \"Sensitive Word List Match\",\n    \"modelReview\": \"Model Review\",\n    \"wordListType\": \"Word List Type\",\n    \"builtinWordList\": \"Built-in Word List\",\n    \"customWordList\": \"Custom Word List\",\n    \"autoReplyContent\": \"Auto-reply Content\",\n    \"useNewlineToSeparate\": \"Use newline to separate, each line one item\",\n    \"txtFile\": \"txt file\",\n    \"sensitiveWordMatch\": \"Sensitive Word Match\",\n    \"defaultAutoReply\": \"Enter the auto-reply content for when the safety review is triggered, e.g., 'The current conversation content violates relevant regulations, please modify and re-enter.'\",\n    \"uploadAvator\": \"upload avator\",\n    \"fileSizeLimit\": \"The file size cannot exceed\",\n    \"fileTypeLimit\": \"File type does not meet requirements:\",\n    \"enterApiKey\": \"Enter API Key\",\n    \"enterBaseUrl\": \"Enter Base URL\",\n    \"enterProxy\": \"Enter Proxy\",\n    \"enterDeploymentName\": \"Enter Deployment Name\",\n    \"proxyDescription\": \"Required when using outside mainland China\",\n    \"fdProxyDescription\": \"A proxy configuration is required when querying stock market data outside the Chinese mainland\",\n    \"editTool\": \"Edit Built-in Tool\",\n    \"assistantAvatar\": \"Assistant avatar\",\n    \"confirmDeleteSkill\": \"Confirm delete skill?\",\n    \"confirmDeleteFlow\": \"Confirm delete flow?\",\n    \"confirmDeleteAssistant\": \"Confirm delete assistant?\",\n    \"maxToken\": \"Max Token\",\n    \"maxTokenTip\": \"The maximum number of tokens to generate in the completion. The token length of the input text is automatically calculated and cannot exceed the model's context length. Increasing the value will increase the cost\",\n    \"app\": \"app\",\n    \"manageAppTemplates\": \"Manage Application Templates\",\n    \"provideSceneTemplates\": \"We provide scene templates for you to use and reference\",\n    \"noPermissionToPublish\": \"You do not have permission to publish this {{type}}, please contact the administrator to publish.\",\n    \"manageYourApplications\": \"Manage your applications on this page, including publishing, editing, etc.\",\n    \"workFlow\": \"Workflow\",\n    \"skillName\": \"Skill Name\",\n    \"pleaseFillIn\": \"Please fill in the {{labelName}} name\",\n    \"nameTooLong\": \"{{labelName}} name is too long, do not exceed 50 characters\",\n    \"addDescription\": \"Add some description to quickly let others understand your {{labelName}}\",\n    \"descriptionTooLong\": \"{{labelName}} description cannot exceed 200 characters\",\n    \"templateCreatedSuccessfully\": \"Template created successfully\",\n    \"workFlowName\": \"Workflow Name\",\n    \"modelRequired\": \"Model cannot be empty\",\n    \"assistantOnlineNoEdit\": \"Assistant is online and cannot be modified\",\n    \"unsavedChangesLeave\": \"You have unsaved changes, are you sure you want to leave?\",\n    \"leaveAndSave\": \"Leave and save\",\n    \"leaveWithoutSave\": \"Leave without saving\",\n    \"selectModel\": \"Select a model\"\n  },\n  \"bench\": {\n    \"daily\": \"Daily\",\n    \"lingsi\": \"$t(linsight)\",\n    \"model\": \"Model\",\n    \"displayName\": \"Display Name\",\n    \"vision\": \"Vision\",\n    \"visionText\": \"When enabled, the model will answer based on image content (supports PNG, JPEG, WEBP, non-animated GIF formats). Note that only multimodal models support this capability.\",\n    \"webSearchPrompt\": \"Web Search Prompt\",\n    \"confirmDelete\": \"Are you sure you want to delete?\",\n    \"requestFailed\": \"Request failed\",\n    \"deleteFailed\": \"Delete failed\",\n    \"fetchToolsFailed\": \"Failed to fetch {{type}} list\",\n    \"statusMessage\": \"Planned to import 0 SOPs, 0 correct, 0 errors\",\n    \"manualImportSummary\": \"A total of {{row}} manuals are planned for import. {{successRow}} are correctly formatted, {{errorRow}} have errors.\",\n    \"manualImportRow\": \"Row {{row}}\",\n    \"name_empty\": \"Name is missing\",\n    \"description_empty\": \"Description is missing\",\n    \"name_over_size\": \"Name exceeds 500 characters\",\n    \"content_over_size\": \"Content exceeds 50000 characters\",\n    \"description_over_size\": \"Description exceeds 1000 characters\",\n    \"inputPlaceholder\": \"Enter your task goal and let $t(bisheng)$t(linsight) handle it\",\n    \"inputPlaceholderDescription\": \"$t(linsight) is an Agent assistant skilled at completing complex tasks. Besides describing your task goal, you can also explain in simple terms how you want it to be achieved. This will help get the results you expect~\"\n  },\n  \"tools\": {\n    \"addTool\": \"Add Tool\",\n    \"createCustomTool\": \" Custom Tool\",\n    \"builtinTools\": \"Built-in Tools\",\n    \"customTools\": \"Custom Tools\",\n    \"mcpTools\": \"MCP Tools\",\n    \"search\": \"Search\",\n    \"empty\": \"Empty\",\n    \"manageCustomTools\": \"Manage your custom tools on this page, including creating and editing them.\",\n    \"name\": \"Name\",\n    \"enterToolName\": \"Enter tool name\",\n    \"openapiSchema\": \"OpenAPI Schema\",\n    \"enterOpenAPISchema\": \"Enter your OpenAPI schema\",\n    \"importFromUrl\": \"Import from URL\",\n    \"examples\": \"Examples\",\n    \"weatherJson\": \"Weather (JSON)\",\n    \"petShopYaml\": \"Pet Shop (YAML)\",\n    \"authenticationType\": \"Authentication Type\",\n    \"parameterName\": \"Parameter name\",\n    \"parameterPlaceholder\": \"Enter custom API parameter name\",\n    \"apiLocationLabel\": \"API Location\",\n    \"header\": \"header\",\n    \"query\": \"query\",\n    \"authTypeLabel\": \"Auth Type\",\n    \"basicBearerDescription\": \"Basic & Bearer: Use Authorization in the header to pass the API key\",\n    \"customDescription\": \"Custom: Customize the API key parameter name and its position\",\n    \"headerDescription\": \"header: The API key is included as a parameter in the request header\",\n    \"queryDescription\": \"query: The API key is included as a parameter in the URL query string\",\n    \"apiKeyPlaceholder\": \"Enter custom API parameter value\",\n    \"custom\": \"Custom\",\n    \"apiKeyLabel\": \"API Key\",\n    \"authType\": \"Authentication Type\",\n    \"none\": \"None\",\n    \"apiKey\": \"API Key\",\n    \"basic\": \"Basic\",\n    \"bearer\": \"Bearer\",\n    \"availableTools\": \"Available Tools\",\n    \"description\": \"Description\",\n    \"method\": \"Method\",\n    \"path\": \"Path\",\n    \"delete\": \"Delete\",\n    \"cancel\": \"Cancel\",\n    \"save\": \"Save\",\n    \"toolName\": \"ToolName\",\n    \"confirmDeleteMcp\": \"Confirm delete this MCP server?\",\n    \"mcpServerConfig\": \"MCP Server Configuration\",\n    \"enterMcpName\": \"Enter MCP service name\",\n    \"nameRequired\": \"Name is required\",\n    \"nameExists\": \"Name already exists, please modify\",\n    \"configRequired\": \"Configuration is required\",\n    \"configFormatError\": \"Configuration format error, please check JSON format\",\n    \"exampleGaode\": \"AMap\",\n    \"toolNameCannotBeEmpty\": \"Tool name cannot be empty\",\n    \"schemaCannotBeEmpty\": \"Schema cannot be empty\",\n    \"apiKeyCannotBeEmpty\": \"API Key cannot be empty\",\n    \"apiKeyMaxLengthExceeded\": \"API Key cannot exceed 1000 characters\",\n    \"parameterNameCannotBeEmpty\": \"Parameter name cannot be empty\",\n    \"parameterNameMaxLengthExceeded\": \"Parameter name cannot exceed 1000 characters\",\n    \"addMcpServer\": \"Add MCP Server\",\n    \"refresh\": \"Refresh\",\n    \"gaodeMap\": \"Gaode Map\",\n    \"gaodeMapSSE\": \"Gaode Map (SSE Protocol)\",\n    \"gaodeMapStreamable\": \"Gaode Map (streamable Protocol)\",\n    \"gaodeMapDesc\": \"AMap provides a variety of location-based services, including geocoding, reverse geocoding, IP location, weather query, cycling path planning, walking path planning, driving path planning, bus path planning, distance measurement, keyword search, nearby search, and detailed search services\"\n  },\n  \"test\": {\n    \"test\": \"Test\",\n    \"addTest\": \"Please add test cases first\",\n    \"uploadTest\": \"Upload test cases\",\n    \"explain\": \"The test case is the input of the current component and only supports txt files, with a maximum of 20 lines\",\n    \"testRun\": \"Test Run\",\n    \"testCase\": \"Test Case\",\n    \"run\": \"Run\",\n    \"downloadResults\": \"Download Run Results\",\n    \"testCases\": \"Enter test cases...\",\n    \"parametersAndValues\": \"Parameters and Values\",\n    \"parameter\": \"Parameter\",\n    \"value\": \"Value\",\n    \"result\": \"Test Result\",\n    \"outResultPlaceholder\": \"Click the button to output the result\",\n    \"maxAddVersions\": \"Up to 4 versions\",\n    \"versionEvaluation\": \"Version Evaluation\",\n    \"addVersion\": \"Add Version\",\n    \"selectVersion\": \"Select Version\",\n    \"component\": \"Component\",\n    \"parameterName\": \"Name\",\n    \"parameterValue\": \"Value\",\n    \"inputTypeValue\": \"Enter a value of type {{type}}\"\n  },\n  \"resetPassword\": {\n    \"slogen\": \"Securely Reset Your Password\",\n    \"currentPassword\": \"Current Password\",\n    \"newPassword\": \"New Password\",\n    \"confirmNewPassword\": \"Confirm New Password\",\n    \"pleaseEnterCurrentPassword\": \"Please enter your current password.\",\n    \"pleaseEnterNewPassword\": \"Please enter your new password.\",\n    \"pleaseEnterConfirmPassword\": \"Please confirm your new password.\",\n    \"newPasswordTooShort\": \"New password must be at least 8 characters.\",\n    \"passwordMismatch\": \"The new passwords do not match.\",\n    \"resetButton\": \"Change Password\",\n    \"passwordResetSuccess\": \"Your password has been successfully reset.\",\n    \"adminResetSuccess\": \"Password has been successfully reset\",\n    \"resetFailed\": \"Pwd Reset Failed\",\n    \"notEmpty\": \"The new password cannot be empty\"\n  },\n  \"log\": {\n    \"systemIdEnum\": {\n      \"chat\": \"Session\",\n      \"build\": \"Build\",\n      \"knowledge\": \"Knowledge Base\",\n      \"dashboard\": \"Dashboard\",\n      \"system\": \"System\"\n    },\n    \"eventTypeEnum\": {\n      \"createChat\": \"Create Session\",\n      \"deleteChat\": \"Delete Session\",\n      \"createBuild\": \"Create Application\",\n      \"updateBuild\": \"Edit Application\",\n      \"deleteBuild\": \"Delete Application\",\n      \"createKnowledge\": \"Create Knowledge Base\",\n      \"deleteKnowledge\": \"Delete Knowledge Base\",\n      \"uploadFile\": \"Upload File to Knowledge Base\",\n      \"deleteFile\": \"Delete File from Knowledge Base\",\n      \"updateUser\": \"Edit User\",\n      \"forbidUser\": \"Disable User\",\n      \"recoverUser\": \"Enable User\",\n      \"createUserGroup\": \"Create User Group\",\n      \"deleteUserGroup\": \"Delete User Group\",\n      \"updateUserGroup\": \"Edit User Group\",\n      \"create_dashboard\": \"Create Dashboard\",\n      \"delete_dashboard\": \"Delete Dashboard\",\n      \"update_dashboard\": \"Edit Dashboard\",\n      \"createRole\": \"Create Role\",\n      \"deleteRole\": \"Delete Role\",\n      \"updateRole\": \"Edit Role\",\n      \"add_tool\": \"Create Tool\",\n      \"update_tool\": \"Edit Tool\",\n      \"delete_tool\": \"Delete Tool\",\n      \"userLogin\": \"User Login\",\n      \"create_chat\": \"Create Session\",\n      \"delete_chat\": \"Delete Session\",\n      \"create_build\": \"Create Application\",\n      \"update_build\": \"Edit Application\",\n      \"delete_build\": \"Delete Application\",\n      \"create_knowledge\": \"Create Knowledge Base\",\n      \"delete_knowledge\": \"Delete Knowledge Base\",\n      \"upload_file\": \"Upload File to Knowledge Base\",\n      \"delete_file\": \"Delete File from Knowledge Base\",\n      \"update_user\": \"Edit User\",\n      \"forbid_user\": \"Disable User\",\n      \"recover_user\": \"Enable User\",\n      \"create_user_group\": \"Create User Group\",\n      \"delete_user_group\": \"Delete User Group\",\n      \"update_user_group\": \"Edit User Group\",\n      \"create_role\": \"Create Role\",\n      \"delete_role\": \"Delete Role\",\n      \"update_role\": \"Edit Role\",\n      \"user_login\": \"User Login\",\n      \"addTool\": \"Create Tool\",\n      \"updateTool\": \"Edit Tool\",\n      \"deleteTool\": \"Delete Tool\"\n    },\n    \"objectTypeEnum\": {\n      \"none\": \"None\",\n      \"work_flow\": \"Workflow\",\n      \"flow\": \"Skill\",\n      \"assistant\": \"Assistant\",\n      \"file\": \"File\",\n      \"user_conf\": \"User Configuration\",\n      \"user_group_conf\": \"User Group Configuration\",\n      \"role_conf\": \"Role Configuration\",\n      \"tool\": \"Tool\",\n      \"dashboard\": \"Dashboard\",\n      \"knowledge\": \"Knowledge Base\",\n      \"workstation\": \"Workbench (Daily Mode)\"\n    },\n    \"appUsage\": \"App Usage\",\n    \"systemOperations\": \"System Operations\",\n    \"auditManagement\": \"Audit Management\",\n    \"searchButton\": \"Search\",\n    \"resetButton\": \"Reset\",\n    \"auditId\": \"Audit ID\",\n    \"username\": \"Username\",\n    \"operationTime\": \"Operation Time\",\n    \"systemModule\": \"System Module\",\n    \"operationAction\": \"Operation Action\",\n    \"objectType\": \"Operation Object Type\",\n    \"operationObject\": \"Operation Object\",\n    \"ipAddress\": \"IP Address\",\n    \"remark\": \"Remark\",\n    \"selectUser\": \"Select User\",\n    \"selectUserGroup\": \"Select User Group\",\n    \"startDate\": \"Start Date\",\n    \"endDate\": \"End Date\",\n    \"actionBehavior\": \"Action Behavior\",\n    \"createChat\": \"Create chat\",\n    \"deleteChat\": \"Delete chat\",\n    \"createBuild\": \"Create Agent\",\n    \"updateBuild\": \"Update build\",\n    \"deleteBuild\": \"Delete build\",\n    \"createKnowledge\": \"Create knowledge base\",\n    \"deleteKnowledge\": \"Delete knowledge base\",\n    \"uploadFile\": \"Upload file\",\n    \"deleteFile\": \"Delete file\",\n    \"updateUser\": \"Update user\",\n    \"forbidUser\": \"Forbid user\",\n    \"recoverUser\": \"Recover user\",\n    \"createUserGroup\": \"Create user group\",\n    \"deleteUserGroup\": \"Delete user group\",\n    \"updateUserGroup\": \"Update user group\",\n    \"create_dashboard\": \"Create dashboard\",\n    \"delete_dashboard\": \"Delete dashboard\",\n    \"update_dashboard\": \"Update dashboard\",\n    \"dashboard\": \"Dashboard\",\n    \"createDashboard\": \"Create dashboard\",\n    \"deleteDashboard\": \"Delete dashboard\",\n    \"updateDashboard\": \"Update dashboard\",\n    \"createRole\": \"Create role\",\n    \"deleteRole\": \"Delete role\",\n    \"updateRole\": \"Update role\",\n    \"userLogin\": \"User login\",\n    \"chat\": \"Chat\",\n    \"build\": \"Build\",\n    \"knowledge\": \"Knowledge Base\",\n    \"system\": \"System\",\n    \"create_chat\": \"Create Chat\",\n    \"delete_chat\": \"Delete Chat\",\n    \"create_build\": \"Create Build\",\n    \"update_build\": \"Update build\",\n    \"delete_build\": \"Delete Build\",\n    \"create_knowledge\": \"Create Knowledge Base\",\n    \"delete_knowledge\": \"Delete Knowledge Base\",\n    \"upload_file\": \"Upload File to Knowledge Base\",\n    \"delete_file\": \"Delete File from Knowledge Base\",\n    \"update_user\": \"Update User\",\n    \"forbid_user\": \"Disable User\",\n    \"recover_user\": \"Enable User\",\n    \"create_user_group\": \"Create User Group\",\n    \"delete_user_group\": \"Delete User Group\",\n    \"update_user_group\": \"Update User Group\",\n    \"create_role\": \"Create Role\",\n    \"delete_role\": \"Delete Role\",\n    \"update_role\": \"Update Role\",\n    \"user_login\": \"User Login\",\n    \"add_tool\": \"Create Tool\",\n    \"update_tool\": \"Update Tool\",\n    \"delete_tool\": \"Delete Tool\",\n    \"none\": \"None\",\n    \"work_flow\": \"Work Flow\",\n    \"flow\": \"Flow\",\n    \"assistant\": \"Assistant\",\n    \"file\": \"File\",\n    \"user_conf\": \"User Configuration\",\n    \"user_group_conf\": \"User Group Configuration\",\n    \"role_conf\": \"Role Configuration\",\n    \"tool\": \"Tool\",\n    \"appName\": \"App Name\",\n    \"userName\": \"Username\",\n    \"userFeedback\": \"User Feedback\",\n    \"enterQuestion\": \"Please enter a question first\",\n    \"qaLibQuestionAnswerRequired\": \"QA Knowledge Base, Question, and Answer cannot be empty\",\n    \"max100CharsForSimilarQuestions\": \"Similar questions can have a maximum of 100 characters\",\n    \"max1000CharsForAnswer\": \"Answer can have a maximum of 1000 characters\",\n    \"saveSuccess\": \"Saved successfully\",\n    \"addNewQaToLib\": \"Add new QA to QA Knowledge Base\",\n    \"qaKnowledgeLib\": \"QA Knowledge Base\",\n    \"question\": \"Question\",\n    \"similarQuestions\": \"Similar Questions\",\n    \"aiGenerate\": \"AI Generate\",\n    \"answer\": \"Answer\",\n    \"cancel\": \"Cancel\",\n    \"confirm\": \"Confirm\",\n    \"qaLibRequired\": \"QA Knowledge Base cannot be empty\",\n    \"selectAtLeastOneQuestion\": \"Select at least one similar question\",\n    \"addSuccess\": \"Added successfully\",\n    \"addSimilarQuestionsToQaLib\": \"Add Similar Questions to QA Knowledge Base\",\n    \"qaContent\": \"QA Content\",\n    \"empty\": \"Nothing here\",\n    \"selectQaLib\": \"Please select a QA Knowledge Base\",\n    \"detailedSession\": \"Detailed Session\",\n    \"exportNoDateRange\": \"No date range selected, automatically exported last 60 days data\",\n    \"exportCustomDateRange\": \"No date range selected, automatically exported {{start}} - {{end}} data\",\n    \"exportDateRangeExceed\": \"Export date range cannot exceed 60 days, please narrow the range and try again\",\n    \"messageConversionFailed\": \"Message conversion failed\",\n    \"csvHeaders\": {\n      \"sessionId\": \"Session ID\",\n      \"appName\": \"App Name\",\n      \"sessionCreationTime\": \"Session Creation Time\",\n      \"userName\": \"Username\",\n      \"messageRole\": \"Message Role\",\n      \"messageSendTime\": \"Message Send Time\",\n      \"messageContent\": \"Message Content\",\n      \"like\": \"Like\",\n      \"dislike\": \"Dislike\",\n      \"copy\": \"Copy\",\n      \"sensitiveStatus\": \"Sensitive Content Hit\"\n    },\n    \"userRole\": \"User\",\n    \"aiRole\": \"AI\",\n    \"yes\": \"Yes\",\n    \"no\": \"No\",\n    \"userGroup\": \"User Group\",\n    \"userFeedbackPlaceholder\": \"User Feedback\",\n    \"likeFeedback\": \"Like\",\n    \"dislikeFeedback\": \"Dislike\",\n    \"copyFeedback\": \"Copy\",\n    \"sensitiveReviewResult\": \"Review Result\",\n    \"sensitiveViolation\": \"Violation\",\n    \"sensitivePass\": \"Pass\",\n    \"exportButton\": \"Export\",\n    \"pagination\": {\n      \"jumpTo\": \"Go to\",\n      \"page\": \"page\"\n    },\n    \"workbench_daily\": \"Workbench (Daily Mode)\"\n  },\n  \"tag\": {\n    \"labelMaxLength\": \"Label name cannot exceed 10 characters\",\n    \"confirmDeleteLabel\": \"Label【{{label}}】is in use, confirm deletion?\",\n    \"createNewLabel\": \"Create 'New Label'\",\n    \"addLabel\": \"Add label\"\n  },\n  \"api\": {\n    \"assistantOrchestration\": \"Assistant Orchestration\",\n    \"skillOrchestration\": \"Skill Orchestration\",\n    \"externalPublishing\": \"External Publishing\",\n    \"apiAccess\": \"API Access\",\n    \"noLoginLink\": \"No-login Link\",\n    \"loginLink\": \"Login-required Link\",\n    \"required\": \"Required\",\n    \"optional\": \"Optional\",\n    \"exampleValue\": \"Example\",\n    \"copySuccess\": \"Copy Success\",\n    \"apiRequestExample\": \"API Request Example\",\n    \"sdkNote\": \"You can use the ChatOpenAI component from OpenAI's official SDK to use the assistant (only parameters in the document are supported. Others like n, top_p, max_tokens in the official component are not supported).\",\n    \"exampleCode\": \"Example Code\",\n    \"requestParams\": \"Request Parameters\",\n    \"bodyParams\": \"Body Parameters\",\n    \"assistantId\": \"Assistant ID to use\",\n    \"messageList\": \"The list of messages included in the conversation so far. 'system' type is not supported, the assistant's own prompt is used for system messages.\",\n    \"temperature\": \"Sampling temperature to use, between 0 and 2. Non-zero values will override assistant settings.\",\n    \"stream\": \"Default is false. If set, it will send incremental parts of messages like in ChatGPT. The flag will stream events as data-only server-sent events, ending with data: [DONE].\",\n    \"responseData\": \"Response Data\",\n    \"dataStructure\": \"Data Structure\",\n    \"example\": \"Example\",\n    \"skillId\": \"Skill ID\",\n    \"urlParam\": \"URL Parameter\",\n    \"skillInput\": \"The question input for the entire skill. The specific keys in the JSON are related to the skill itself and may not all be query keys\",\n    \"singleInput\": \"When there is only one input node, id can be omitted\",\n    \"historyCount\": \"For skills that support memory, select several historical messages for multi-turn Q&A, default is 10\",\n    \"clearCache\": \"Whether to clear session cache\",\n    \"sessionId\": \"Used for session lookup\",\n    \"sessionRemark\": \"Each time the API is called, if session_id is passed in, the same id will be returned. If not passed, a new session id will be generated\",\n    \"tweaks\": \"Control for each component, allowing you to override input parameters of components\",\n    \"tweaksRemark\": \"If no specific component parameters are passed, this can be omitted\",\n    \"exampleComponent\": \"Example of OpenAI component configuration in the skill, key is component name {component}-{id}\",\n    \"defaultConfig\": \"If {} is empty, default values will be used\",\n    \"componentParams\": \"Parameters for each component in the skill can be passed through the API. If not passed, default configurations will be used\",\n    \"returnContent\": \"Return Content\",\n    \"sessionIdReturn\": \"Session ID used to match input\",\n    \"skillResult\": \"Result returned by the skill\",\n    \"llmAnswer\": \"LLM content returned by the skill\",\n    \"messageId\": \"Skill historical message storage ID\",\n    \"source\": \"Traceability source\",\n    \"dynamicKey\": \"Key defined by the component in the skill. The output is consistent with 'answer', but the key is not fixed\",\n    \"useCase\": \"Use Case\",\n    \"knowledgeQADemo\": \"Knowledge Base Q&A Example\",\n    \"specifyKnowledgeBase\": \"To specify a knowledge base for Q&A, pass the knowledge base id in the parameters, e.g.:\",\n    \"reportGenerationDemo\": \"Report Generation Example\",\n    \"step1\": \"step1: Confirm the dependencies to trigger the skill\",\n    \"dependenciesDescription\": \"Dependencies correspond to the content in the lower left form when creating a session in the interface, and the components used during skill editing\",\n    \"step2\": \"step2: Prepare the input parameters\",\n    \"uploadFiles\": \"In this example, two files are passed as input:\",\n    \"step3\": \"step3: Assemble tweaks\",\n    \"step4\": \"step4: Execute the skill\",\n    \"noLoginLinkDescription\": \"The login-free link can be used without logging in, and is only accessible when enable_guest_access = True is configured\",\n    \"loginLinkDescription\": \"The login-required link must be used after logging in\",\n    \"publishAsStandalonePage\": \"Publish as a standalone page\",\n    \"copyLinkToBrowser\": \"Copy the link and open it in the browser\",\n    \"embedIntoWebsite\": \"Embed into a website\",\n    \"styleOne\": \"Style One\",\n    \"styleTwo\": \"Style Two\",\n    \"embedCodeDescription\": \"Embed the following code into your website\"\n  },\n  \"dataset\": {\n    \"confirmDelete\": \"Confirm delete dataset!\",\n    \"fileNotFound\": \"File not found\",\n    \"name\": \"Dataset Name\",\n    \"create\": \"Create Dataset\",\n    \"creationTime\": \"Creation Time\",\n    \"updateTime\": \"Update Time\",\n    \"createUser\": \"Creator\",\n    \"download\": \"Download\",\n    \"collection\": \"Dataset Collection\",\n    \"enterDataSetName\": \"Please enter dataset name\",\n    \"maxDataSetNameLength\": \"Dataset name must be no more than 30 characters\",\n    \"uploadFile\": \"Please upload a file\",\n    \"selectKnowledgeLib\": \"Please select a knowledge library\",\n    \"creationSuccess\": \"Dataset created successfully\",\n    \"createDataset\": \"Create Dataset\",\n    \"importMethod\": \"Import Method\",\n    \"localImport\": \"Local Import\",\n    \"importFromQa\": \"Import from QA Knowledge Base\",\n    \"sampleFile\": \"Sample File\",\n    \"jsonSample\": \"JSON Sample.json\",\n    \"selectQaKnowledgeLib\": \"Select QA Knowledge Base\"\n  },\n  \"label\": {\n    \"createTask\": \"Create Labeling Task\",\n    \"selectAppsToLabel\": \"Select Apps to Label\",\n    \"unmarkedConversationCount\": \"Current Unmarked Conversation Count\",\n    \"selectLabelers\": \"Select Labelers\",\n    \"cancel\": \"Cancel\",\n    \"create\": \"Create\",\n    \"confirmDelete\": \"Are you sure you want to delete this task?\",\n    \"delete\": \"Delete\",\n    \"taskId\": \"Task ID\",\n    \"taskStatus\": \"Task Status\",\n    \"creationTime\": \"Creation Time\",\n    \"createdBy\": \"Created By\",\n    \"labelingProgress\": \"Labeling Progress\",\n    \"actions\": \"Actions\",\n    \"view\": \"View\",\n    \"noData\": \"No Data\",\n    \"all\": \"All\",\n    \"notStarted\": \"Not Started\",\n    \"completed\": \"Completed\",\n    \"inProgress\": \"In Progress\",\n    \"taskStatusFilter\": \"Task Status Filter\",\n    \"maxAppsError\": \"You can select up to 30 apps\",\n    \"createSuccess\": \"Creation Successful\",\n    \"back\": \"Back\",\n    \"appName\": \"App Name\",\n    \"sessionCreationTime\": \"Session Creation Time\",\n    \"userFeedback\": \"User Feedback\",\n    \"annotationStatus\": \"Annotation Status\",\n    \"unannotated\": \"Unannotated\",\n    \"annotated\": \"Annotated\",\n    \"noAnnotationRequired\": \"No Annotation Required\",\n    \"annotator\": \"Annotator\",\n    \"returnToList\": \"Return to List\",\n    \"unlabeled\": \"Unlabeled\",\n    \"labeled\": \"Labeled\",\n    \"unnecessary\": \"Unnecessary\",\n    \"previousChat\": \"Previous Chat\",\n    \"nextChat\": \"Next Chat\",\n    \"selectPlaceholder\": \"Please select\",\n    \"searchAppsPlaceholder\": \"Search for apps\"\n  },\n  \"errors\": {\n    \"403\": \"No permission to perform this action\",\n    \"404\": \"Resource not found\",\n    \"500\": \"Server error\",\n    \"10001\": \"SFT service not found\",\n    \"10002\": \"Invalid operation\",\n    \"10003\": \"Resource download failed\",\n    \"10004\": \"Embedding model not configured. Please set it in Workspace settings\",\n    \"10005\": \"Embedding model does not exist. Please configure it in settings\",\n    \"10006\": \"Incorrect embedding model type. Please update settings\",\n    \"10007\": \"Vector retrieval model error. Contact admin\",\n    \"10008\": \"LLM model configuration not found\",\n    \"10009\": \"LLM model configuration deleted. Please reconfigure\",\n    \"10010\": \"Provider settings removed. Please reconfigure LLM\",\n    \"10011\": \"Only LLM-type models are supported. {{model_type}} is not supported\",\n    \"10012\": \"Model {{model_name}} under {{server_name}} is offline. Contact admin\",\n    \"10013\": \"Failed to initialize LLM. Check settings or contact admin. Error: {{exception}}\",\n    \"10014\": \"ASR configuration not found\",\n    \"10015\": \"ASR configuration deleted. Please reconfigure\",\n    \"10016\": \"Provider settings removed. Please reconfigure ASR\",\n    \"10017\": \"Only ASR-type models are supported. {{model_type}} is not supported\",\n    \"10018\": \"ASR model {{model_name}} under {{server_name}} is offline\",\n    \"10019\": \"Failed to initialize ASR: {{exception}}\",\n    \"10020\": \"TTS configuration not found\",\n    \"10021\": \"TTS configuration deleted. Please reconfigure\",\n    \"10022\": \"Provider settings removed. Please reconfigure TTS\",\n    \"10023\": \"Only TTS-type models are supported. {{model_type}} is not supported\",\n    \"10024\": \"TTS model {{model_name}} under {{server_name}} is offline\",\n    \"10025\": \"Failed to initialize TTS: {{exception}}\",\n    \"10030\": \"System configuration cannot be empty\",\n    \"10031\": \"Invalid system configuration: {{exception}}\",\n    \"10040\": \"Uploaded file cannot be empty\",\n    \"10041\": \"Unsupported file format\",\n    \"10100\": \"Failed to create training task\",\n    \"10101\": \"Select at least one personal or preset dataset\",\n    \"10102\": \"Task not found\",\n    \"10103\": \"Invalid task status\",\n    \"10104\": \"Failed to cancel task\",\n    \"10105\": \"Failed to delete task\",\n    \"10106\": \"Failed to publish task\",\n    \"10107\": \"Failed to update model name\",\n    \"10108\": \"Failed to unpublish\",\n    \"10109\": \"Invalid training parameters\",\n    \"10110\": \"Model name already exists\",\n    \"10120\": \"Training file not found\",\n    \"10125\": \"Failed to obtain GPU information\",\n    \"10126\": \"Failed to fetch model list\",\n    \"10200\": \"Model not found\",\n    \"10300\": \"Component already exists\",\n    \"10301\": \"Component not found\",\n    \"10400\": \"Assistant not found\",\n    \"10401\": \"Assistant online failed: {{exception}}\",\n    \"10402\": \"Assistant name already exists\",\n    \"10403\": \"Assistant is online and cannot be edited\",\n    \"10420\": \"Assistant has been deleted\",\n    \"10421\": \"Assistant is offline and cannot chat\",\n    \"10422\": \"No inference model configured\",\n    \"10423\": \"Inference model not configured\",\n    \"10424\": \"Profile optimization model not configured\",\n    \"10499\": \"Assistant service error\",\n    \"10500\": \"Skill version not found\",\n    \"10501\": \"Cannot delete version in use\",\n    \"10502\": \"Version name already exists\",\n    \"10503\": \"Skill name already exists\",\n    \"10520\": \"Skill not found\",\n    \"10521\": \"Skill is online and cannot be edited\",\n    \"10525\": \"Workflow is online and cannot be edited\",\n    \"10526\": \"Failed to initialize workflow\",\n    \"10527\": \"Workflow input timeout\",\n    \"10528\": \"{{type}} node exceeded maximum execution count\",\n    \"10529\": \"Workflow name already exists\",\n    \"10530\": \"Template name already exists\",\n    \"10531\": \"{{type}} function upgraded. Please delete and re-add\",\n    \"10532\": \"Workflow version upgraded. Contact owner to re-edit\",\n    \"10540\": \"Server thread limit reached. Please try again later\",\n    \"10541\": \"Workflow execution failed: {{exception}}\",\n    \"10599\": \"No permission to view\",\n    \"10600\": \"Incorrect username or password\",\n    \"10601\": \"Password expired. Please update it\",\n    \"10602\": \"Password not set. Contact admin to reset\",\n    \"10603\": \"Incorrect current password\",\n    \"10604\": \"Account logged in from another device. Session ended\",\n    \"10605\": \"Username already exists\",\n    \"10606\": \"User group and role cannot be empty\",\n    \"10607\": \"Verification code error\",\n    \"10608\": \"Username cannot exceed 30 characters\",\n    \"10610\": \"User group contains users and cannot be deleted\",\n    \"10620\": \"User is disabled. Contact admin\",\n    \"10621\": \"Account disabled due to too many failed login attempts\",\n    \"10630\": \"User group cannot be empty\",\n    \"10640\": \"Cannot modify admin account\",\n    \"10700\": \"Tag already exists\",\n    \"10701\": \"Tag not found\",\n    \"10800\": \"Provider name already exists\",\n    \"10801\": \"Duplicate model\",\n    \"10802\": \"Failed to add provider. All models failed to initialize\",\n    \"10803\": \"Failed to add provider. Some models failed to initialize\",\n    \"10900\": \"Knowledge base name already exists\",\n    \"10901\": \"Embedding model required\",\n    \"10902\": \"Summary model invalid. Reconfigure in system model settings: {{exception}}\",\n    \"10910\": \"This version does not support segmentation changes. Create a new knowledge base\",\n    \"10911\": \"Parsed file is empty\",\n    \"10912\": \"Segments too long. Add more separators (e.g. \\\\n, 、, 。, \\\\\\\\.)\",\n    \"10913\": \"File may be corrupted\",\n    \"10914\": \"Unsupported file type\",\n    \"10915\": \"ETL service busy. Please upgrade capacity\",\n    \"10916\": \"Segmented results are too long. Please try reducing the number of table rows per segment in custom policies\",\n    \"10920\": \"QA similar question model not configured\",\n    \"10930\": \"Question already exists\",\n    \"10940\": \"File parsing in progress. Cannot copy\",\n    \"10941\": \"Knowledge base is empty. Cannot copy\",\n    \"10950\": \"Cannot delete files from multiple KBs at once\",\n    \"10951\": \"KB is rebuilding. Cannot change embedding model\",\n    \"10952\": \"Document parsing failed\",\n    \"10953\": \"File parsing error: {{exception}}\",\n    \"10960\": \"Not a QA knowledge base\",\n    \"10961\": \"Model returns incorrect format:{{message}}\",\n    \"10970\": \"Knowledge base not found\",\n    \"10971\": \"Knowledge base file not found\",\n    \"10980\": \"{{field_name}} conflicts with built-in metadata fields\",\n    \"10981\": \"Metadata field {{field_name}} already exists\",\n    \"10982\": \"Metadata field {{field_name}} does not exist\",\n    \"10983\": \"Built-in field {{field_name}} cannot be modified\",\n    \"10984\": \"Metadata value type error: {{error_msg}}\",\n    \"11010\": \"Invalid SOP file format\",\n    \"11011\": \"Failed to set featured SOP case\",\n    \"11020\": \"File upload failed\",\n    \"11030\": \"Usage quota exceeded. Activate with a new invite code\",\n    \"11040\": \"Failed to submit question\",\n    \"11050\": \"Vector retrieval model error. Contact admin\",\n    \"11060\": \"Manual search failed. Both vector and keyword search unavailable\",\n    \"11070\": \"Manual search failed\",\n    \"11080\": \"Failed to initialize workspace tools\",\n    \"11090\": \"$t(bisheng) LLM error\",\n    \"11100\": \"Failed to generate SOP content\",\n    \"11110\": \"Failed to modify SOP content\",\n    \"11120\": \"Session already completed or running\",\n    \"11130\": \"Failed to start task\",\n    \"11140\": \"Failed to get queue status\",\n    \"11150\": \"Failed to add manual. Vector storage error\",\n    \"11160\": \"Failed to update manual\",\n    \"11170\": \"Failed to delete manual\",\n    \"11171\": \"{{sop_name}} content too long\",\n    \"11180\": \"Invalid invite code\",\n    \"11190\": \"Invite code already bound\",\n    \"12040\": \"web_search tool not found\",\n    \"12041\": \"Session not found\",\n    \"12042\": \"Agent already added\",\n    \"13001\": \"Skill deleted\",\n    \"13002\": \"Skill offline. Cannot chat\",\n    \"13003\": \"Skill compile failed. Cannot chat\",\n    \"13004\": \"Backend service error\",\n    \"13005\": \"LLM skill error: {{error}}\",\n    \"13006\": \"Document parsing error. Please re-upload\\n\\n{{error}}\",\n    \"13007\": \"Input parsing failed: {{error}}\",\n    \"13010\": \"Workflow offline. Cannot chat\",\n    \"14001\": \"Processing… try again later\",\n    \"15000\": \"Tool name already exists\",\n    \"15001\": \"Tool APIs cannot be empty\",\n    \"15002\": \"Tool not found\",\n    \"15003\": \"Invalid name: must be 1–1000 characters\",\n    \"15010\": \"Preset tool category cannot be deleted\",\n    \"15020\": \"Failed to download tool schema\",\n    \"15021\": \"Tool schema cannot be empty\",\n    \"15022\": \"OpenAPI schema parse error: {{exception}}\",\n    \"15023\": \"Server URLs must start with http or https: {{url}}\",\n    \"15024\": \"MCP config parse error: {{exception}}\",\n    \"16000\": \"Dataset name already exists\",\n    \"17000\": \"A maximum of 20 dashboards can be created\",\n    \"17005\": \"Your current role does not have permission to access this dashboard. Please contact the administrator if needed.\",\n    \"17010\": \"Corresponding dataset configuration not found\",\n    \"17011\": \"Only one virtual metric can be queried at a time\",\n    \"17012\": \"Corresponding metric configuration not found\",\n    \"17013\": \"Corresponding aggregation method not found\",\n    \"17014\": \"Corresponding dimension configuration not found\",\n    \"17015\": \"Corresponding operator configuration not found\",\n    \"90002\": \"Your current role does not have permission to access the workbench. Please contact the administrator if needed.\"\n  },\n  \"all\": \"All\",\n  \"confirmButton\": \"Confirm\",\n  \"add\": \"Add\",\n  \"back\": \"Return\",\n  \"create\": \"Create\",\n  \"delete\": \"Delete\",\n  \"deleteSuccess\": \"Delete successful\",\n  \"createTime\": \"Creation Time\",\n  \"updateTime\": \"Update Time\",\n  \"saved\": \"Saved\",\n  \"edit\": \"Edit\",\n  \"enable\": \"Enable\",\n  \"disable\": \"Disable\",\n  \"close\": \"Close\",\n  \"cancel\": \"Cancel\",\n  \"operations\": \"Operations\",\n  \"previousPage\": \"Previous Page\",\n  \"nextPage\": \"Next Page\",\n  \"submit\": \"Submit\",\n  \"formatError\": \"Format Error\",\n  \"port\": \"PORT\",\n  \"cancle\": \"Cancle\",\n  \"tip\": \"Prompt\",\n  \"search\": \"Search\",\n  \"deleteAssistant\": \"Are you sure to delete this assistant?\",\n  \"chatTipsTitle\": \"Chat Tips\",\n  \"updateSuccess\": \"Update successful\",\n  \"createSuccess\": \"Create successful\",\n  \"confirm\": \"Confirm\",\n  \"required\": \"cannot be empty\",\n  \"addSimilarQuestion\": \"Add Similar Question\",\n  \"addQa\": \"Add QA\",\n  \"inserVar\": \"Insert variable\",\n  \"download\": \"Download\",\n  \"com_sop_web_search\": \"Web searching\",\n  \"com_sop_search_knowledge_base\": \"Searching knowledge base\",\n  \"com_sop_list_files\": \"Listing files\",\n  \"com_sop_get_file_details\": \"Getting file details\",\n  \"com_sop_search_files\": \"Searching files\",\n  \"com_sop_read_text_file\": \"Reading file\",\n  \"com_sop_add_text_to_file\": \"Adding content to file\",\n  \"com_sop_replace_file_lines\": \"Editing file\",\n  \"com_sop_using_tool\": \"Using {{0}} tool\",\n  \"com_sop_waiting_input\": \"Waiting for input\",\n  \"com_sop_please_input\": \"Please input\",\n  \"com_sop_hours\": \"hours\",\n  \"com_sop_minutes\": \"minutes\",\n  \"com_sop_queue_message\": \"Many users are currently using the system, please wait in queue...\",\n  \"com_sop_estimated_wait\": \"Estimated wait time\",\n  \"com_sop_plan_task_path\": \"Planning task execution path:\",\n  \"com_sop_execute_tasks\": \"Next, execute the corresponding tasks for you:\",\n  \"com_sop_task_execution_interrupted\": \"Task execution interrupted\",\n  \"com_sop_view_all_files\": \"View all files in this task\",\n  \"com_webSearch\": \"Web Search\",\n  \"com_searchQueryLabel\": \"Search Query\",\n  \"com_searchResults\": \"Search Results\",\n  \"com_sop_select_all\": \"Select All\",\n  \"com_sop_batch_download\": \"Batch Download\",\n  \"com_sop_preview_failed\": \"Preview failed\",\n  \"com_sop_file_load_error\": \"File load error\",\n  \"com_sop_empty_file\": \"Empty file\",\n  \"com_sop_select_file\": \"Select file\",\n  \"com_addAnything\": \"Add anything\",\n  \"com_dropAnyFileToAdd\": \"Drop any file here to add it to the conversation\",\n  \"com_ui_upload_file_type_error\": \"This application does not support uploading this file type.\",\n  \"more\": \"more\",\n  \"chatTips\": \"1. Please comply with the Cybersecurity Law of the People's Republic of China, the Data Security Law of the People's Republic of China, the Personal Information Protection Law of the People's Republic of China, and the Basic Requirements for the Security of Generative Artificial Intelligence Services;\\n2. It is forbidden to upload confidential data that falls within the scope of the company's confidentiality management regulations;\\n3. It is forbidden to upload data containing personal privacy information;\\n4. It is forbidden to upload files containing malicious programs or viruses;\\n5. It is forbidden to use AI to generate offensive code;\\n6. It is forbidden to ask AI questions involving but not limited to explosives, terrorism, pornography, and information that endangers national and public security;\\n7. AI-generated content is subject to the company's confidentiality management regulations. Users should judge the reasonableness of the generated content based on the actual situation to avoid risks caused by AI hallucinations.\",\n  \"com_preview_type_unsupported\": \"This file type is not supported for preview\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/dashboard.json",
    "content": "{\n  \"chartSelector\": {\n    \"title\": \"Chart Link Configuration\",\n    \"componentName\": \"Component: {{componentName}}\",\n\n    \"selectCharts\": \"Select Linked Charts\",\n    \"selectAll\": \"Select All\",\n    \"unSelectAll\":\"Deselect All\",\n    \"unnamedChart\": \"Unnamed Chart\",\n    \"noDataset\": \"No dataset\",\n\n    \"config\": \"Query Condition Configuration\",\n    \"displayType\": \"Display Type\",\n    \"displayTypes\": {\n      \"timeRange\": \"Time Range\",\n      \"time\": \"Time\"\n    },\n\n    \"timeGranularity\": \"Time Granularity\",\n    \"granularities\": {\n      \"yearMonth\": \"Year-Month\",\n      \"yearMonthDay\": \"Year-Month-Day\",\n      \"yearMonthDayHour\": \"Year-Month-Day-Hour\"\n    },\n\n    \"setDefault\": \"Set as Default Value\",\n\n    \"datePicker\": {\n      \"placeholder\": \"Select Date\",\n      \"single\": \"Time\",\n      \"range\": \"Time Range\"\n    },\n\n    \"buttons\": {\n      \"cancel\": \"Cancel\",\n      \"save\": \"Save\"\n    },\n\n    \"messages\": {\n      \"saveSuccess\": \"Chart link configuration saved\",\n      \"noCharts\": \"No charts available for linking\",\n      \"collapse\": \"Chart Link Config\"\n    }\n  },\n  \"componentConfigDrawer\": {\n    \"basicConfig\": \"Basic Configuration\",\n    \"customStyle\": \"Custom Style\",\n    \"basicConfigTab\": \"Basic Configuration\",\n    \"styleConfigTab\": \"Custom Style\",\n\n    \"chartType\": \"Chart Type\",\n    \"selectChartType\": \"Select Chart Type\",\n\n    \"categoryAxis\": \"Category Axis / Dimension\",\n    \"stackItem\": \"Stack Item / Dimension\",\n    \"subCategory\": \"Sub-category / Dimension\",\n    \"valueAxis\": \"Value Axis / Metric\",\n\n    \"sortPriority\": \"Sort Priority\",\n    \"sortHint\": \"Add dimensions or metrics to adjust sort priority\",\n\n    \"filter\": \"Filter\",\n    \"addFilterCondition\": \"Add Filter Condition\",\n    \"filterConditionsAdded\": \"Filter conditions added\",\n    \"filterLogicHint\": \" ({{logic}})\",\n\n    \"timeRange\": \"Time Range\",\n    \"selectTimeRange\": \"Select time range\",\n\n    \"resultsDisplay\": \"Results Display\",\n    \"allResults\": \"All\",\n    \"limitResults\": \"records\",\n\n    \"updateChartData\": \"Update Chart Data\",\n\n    \"dataSelection\": \"Data Selection\",\n\n    \"dialog\": {\n      \"editDisplayName\": \"Edit Name\",\n      \"originalName\": \"Original Name\",\n      \"displayRequired\": \"Name cannot be empty\",\n      \"displayName\": \"Display Name\",\n      \"displayNameRequired\": \"Display Name *\",\n      \"enterDisplayName\": \"Enter display name\",\n      \"displayMaxLength\": \"Display name cannot exceed 15 characters\",\n      \"cancel\": \"Cancel\",\n      \"confirm\": \"Confirm\",\n      \"chartUpdated\": \"Chart updated\"\n    },\n    \"dashboard\": {\n\n    },\n    \"validation\": {\n      \"validationFailed\": \"Validation failed\",\n      \"chartTypeRequired\": \"Please select a chart type\",\n      \"categoryRequired\": \"Please add at least one category dimension\",\n      \"metricRequired\": \"Please add at least one metric\",\n      \"datasetRequired\": \"Please select a dataset\",\n      \"stackRequired\": \"Please add a stack dimension for stacked charts\",\n      \"invalidCategoryFields\": \"Invalid category dimension fields\",\n      \"invalidMetricFields\": \"Invalid metric fields\"\n    },\n    \"toast\": {\n      \"fieldAlreadyExists\": \"Field already exists in {{section}}\",\n      \"dimensionLimitReached\": \"Dimension limit reached\",\n      \"metricReached\": \"Metric limit reached\",\n      \"metricLimitReached\": \"This chart can have at most {{count}} metrics\",\n      \"virtualMetricConflict\": \"Virtual metrics cannot be used together with non-virtual metrics\",\n      \"multipleVirtualMetric\": \"Multiple virtual metrics are not allowed\"\n    },\n\n    \"sections\": {\n      \"category\": \"category axis\",\n      \"stack\": \"stack item\",\n      \"value\": \"metric area\"\n    }\n  },\n  \"configPanel\": {\n    \"title\": \"Dashboard Configuration\",\n    \"dashboardStyle\": \"Dashboard Style\",\n    \"lightTheme\": \"Light Theme\",\n    \"darkTheme\": \"Dark Theme\"\n  },\n  \"datasetSelector\": {\n    \"dataset\": \"Dataset\",\n    \"selectDataset\": \"Select dataset\",\n    \"searchDataset\": \"Search datasets...\",\n    \"loading\": \"Loading...\",\n    \"noDatasetsFound\": \"No datasets found\",\n    \"dimensions\": \"Dimensions\",\n    \"metrics\": \"Metrics\",\n    \"virtualMetric\": \"*\",\n    \"selectDatasetPrompt\": \"Please select a dataset first\",\n\n    \"fieldTypes\": {\n      \"date\": \"Date\",\n      \"integer\": \"Integer\",\n      \"keyword\": \"Text\"\n    },\n\n    \"timeGranularity\": {\n      \"year\": \"Year\",\n      \"quarter\": \"Quarter\",\n      \"month\": \"Month\",\n      \"week\": \"Week\",\n      \"day\": \"Day\",\n      \"hour\": \"Hour\"\n    }\n  },\n  \"dimensionBlock\": {\n    \"menu\": {\n      \"sort\": \"Sort\",\n      \"aggregation\": \"Aggregation\",\n      \"format\": \"NumberFormat\",\n      \"distinctCount\": \"Distinct Count\"\n    },\n    \"aggregation\": {\n      \"sum\": \"Sum\",\n      \"avg\": \"Average\",\n      \"count\": \"Count\",\n      \"distinctCount\": \"Distinct Count\",\n      \"max\": \"Max\",\n      \"min\": \"Min\"\n    },\n    \"sort\": {\n      \"none\": \"None\",\n      \"asc\": \"Ascending\",\n      \"desc\": \"Descending\"\n    },\n    \"button\": {\n      \"deleteField\": \"Delete Field\"\n    },\n    \"prompt\": {\n      \"dragDimensionHere\": \"Drag dimension fields here\",\n      \"dragMetricHere\": \"Drag metric fields here\"\n    },\n    \"dialog\": {\n      \"formatTitle\": \"NumberFormat\",\n      \"formatType\": \"Format Type\",\n      \"decimalPlaces\": \"Decimal Places\",\n      \"unit\": \"Unit\",\n      \"suffix\": \"Unit Suffix\",\n      \"thousandSeparator\": \"Thousand Separator\",\n      \"example\": \"Example\",\n      \"none\": \"None\",\n      \"selectUnit\": \"Select Unit\",\n      \"enterSuffix\": \"Enter suffix\",\n      \"formatTypes\": {\n        \"number\": \"Number\",\n        \"percent\": \"Percentage\",\n        \"duration\": \"Duration\",\n        \"storage\": \"Storage Size\"\n      }\n    }\n  },\n  \"filterConditionDialog\": {\n    \"title\": \"Filter Condition Configuration\",\n    \"keywords\": {\n      \"time\": \"time\",\n      \"date\": \"date\"\n    },\n    \"placeholders\": {\n      \"selectField\": \"Select Field\",\n      \"filterType\": \"Filter Type\",\n      \"operator\": \"Operator\",\n      \"enterNumber\": \"Enter number\",\n      \"enterValue\": \"Enter value\",\n      \"selectEnumValue\": \"Select enum values\"\n    },\n    \"filterTypes\": {\n      \"conditional\": \"Conditional Filter\",\n      \"enum\": \"Enum Filter\"\n    },\n    \"operators\": {\n      \"equals\": \"Equals\",\n      \"notEquals\": \"Not Equals\",\n      \"contains\": \"Contains\",\n      \"notContains\": \"Not Contains\",\n      \"greaterThan\": \"Greater Than\",\n      \"greaterThanOrEqual\": \"Greater Than Or Equal\",\n      \"lessThan\": \"Less Than\",\n      \"lessThanOrEqual\": \"Less Than Or Equal\",\n      \"isEmpty\": \"Is Empty\",\n      \"isNotEmpty\": \"Is Not Empty\"\n    },\n    \"buttons\": {\n      \"addCondition\": \"Add Condition\",\n      \"cancel\": \"Cancel\",\n      \"save\": \"Save\"\n    },\n    \"errors\": {\n      \"selectField\": \"Please select a field\",\n      \"selectOperator\": \"Please select an operator\",\n      \"selectEnumValue\": \"Please select enum values\",\n      \"enterFilterValue\": \"Please enter filter value\",\n      \"atLeastOneCondition\": \"Please configure at least one valid filter condition\"\n    },\n    \"toast\": {\n      \"fetchEnumFailed\": \"Failed to fetch enum values, please try again later\",\n      \"saveSuccess\": \"Filter condition saved successfully\"\n    },\n    \"enumSelect\": {\n      \"placeholder\": \"Please select\",\n      \"searchPlaceholder\": \"Search...\",\n      \"loading\": \"Loading...\",\n      \"selectAll\": \"Select All\",\n      \"loadingMore\": \"Loading more...\",\n      \"noMatch\": \"No matching options found\",\n      \"noData\": \"No data available\"\n    }\n  },\n  \"styleConfigPanel\": {\n    \"sections\": {\n      \"color\": \"Color\",\n      \"title\": \"Title\",\n      \"axisTitle\": \"Axis Title\",\n      \"legend\": \"Legend\",\n      \"metricValue\": \"Metric Value\",\n      \"subtitle\": \"Subtitle\",\n      \"chartOptions\": \"Chart Options\"\n    },\n    \"labels\": {\n      \"themeColor\": \"Theme Color\",\n      \"bgColor\": \"Background Color\",\n      \"titleContent\": \"Title Content\",\n      \"textFormat\": \"Text Format\",\n      \"textContent\": \"Text Content\",\n      \"xAxisTitleContent\": \"X Axis Title Content\",\n      \"xAxisTextFormat\": \"X Axis Text Format\",\n      \"yAxisTitleContent\": \"Y Axis Title Content\",\n      \"yAxisTextFormat\": \"Y Axis Text Format\",\n      \"legendPosition\": \"Legend Position\",\n      \"legendTextFormat\": \"Legend Text Format\"\n    },\n    \"placeholders\": {\n      \"enterTitle\": \"Enter title\",\n      \"enterSubtitle\": \"Enter subtitle\",\n      \"enterXAxisTitle\": \"Enter X axis title\",\n      \"enterYAxisTitle\": \"Enter Y axis title\"\n    },\n    \"positions\": {\n      \"top\": \"Top\",\n      \"bottom\": \"Bottom\",\n      \"left\": \"Left\",\n      \"right\": \"Right\"\n    },\n    \"buttons\": {\n      \"show\": \"Show\"\n    },\n    \"options\": {\n      \"legend\": \"Legend\",\n      \"axis\": \"Axis\",\n      \"dataLabel\": \"Data Label\",\n      \"gridLine\": \"Grid Line\"\n    }\n  },\n  \"useChartState\": {\n    \"sections\": {\n      \"category\": \"Category Dimension\",\n      \"stack\": \"Stack Dimension\",\n      \"value\": \"Metric Dimension\"\n    },\n    \"fieldTypes\": {\n      \"dimension\": \"Dimension\",\n      \"noFields\": \"No fields available\",\n      \"metric\": \"Metric\"\n    },\n    \"warn\": {\n      \"invalidFieldType\": \"Field type {{fieldType}} cannot be dragged to {{section}} area\",\n      \"maxStackDimension\": \"Only one stack dimension is allowed, please delete the existing stack dimension first\",\n      \"maxCategoryDimensions\": \"Maximum 2 category dimensions are allowed\",\n      \"metricLimitReached\": \"The current number of metrics has reached the limit\",\n      \"fieldExists\": \"This field has already been added\"\n    }\n  },\n  \"renameSuccess\": \"Renamed successfully\",\n  \"renameError\": \"Failed to rename\",\n  \"shareNotPublished\": \"This dashboard has not been published yet\",\n  \"shareCopySuccess\": \"Share link copied\",\n  \"shareCopyError\": \"Failed to copy\",\n  \"publishSuccess\": \"Published successfully\",\n  \"unpublishSuccess\": \"Unpublished successfully\",\n  \"operationFailed\": \"Operation failed\",\n  \"selectTime\": \"Select Time\",\n  \"startHour\": \"Start Hour\",\n  \"endHour\": \"End Hour\",\n  \"dynamicUpdate\": \"Dynamic Update\",\n  \"cancel\": \"Cancel\",\n  \"clear\": \"Clear\",\n  \"confirm\": \"Confirm\",\n  \"yearUnit\": \" \",\n  \"monthUnit\": \" \",\n  \"shortcut\": {\n    \"last_7\": \"Last 7 Days\",\n    \"last_30\": \"Last 30 Days\",\n    \"last_90\": \"Last 90 Days\",\n    \"last_180\": \"Last 180 Days\"\n  },\n  \"selectComponentToStart\": \"Select a component to start building your dashboard\",\n  \"saveSuccess\": \"Saved successfully\",\n  \"saveFailed\": \"Failed to save\",\n  \"saving\": \"Saving...\",\n  \"unsaved\": \"Unsaved\",\n  \"saved\": \"Saved\",\n  \"addChart\": \"Add Chart\",\n  \"addQueryComponent\": \"Add Query Component\",\n  \"fullScreen\": \"Full Screen\",\n  \"saveAndPublish\": \"Save and Publish\",\n  \"save\": \"Save\",\n  \"prompt\": \"Prompt\",\n  \"unsavedChangesWarning\": \"You have unsaved changes. Are you sure you want to leave?\",\n  \"saveAndLeave\": \"Leave and Save\",\n  \"leaveWithoutSaving\": \"not Saving\",\n  \"copyToTargetSuccess\": \"Copied to target dashboard\",\n  \"copyFailed\": \"Failed to copy\",\n  \"confirmDeleteComponent\": \"Are you sure you want to delete the component \\\"{{name}}\\\"?\",\n  \"delete\": \"Delete\",\n  \"nameRequired\": \"Name cannot be empty\",\n  \"charLimit200\": \"Character limit: 1-200 characters\",\n  \"charLimit200b\": \"The name cannot exceed 200 characters \",\n  \"rename\": \"Rename\",\n  \"duplicate\": \"Copy\",\n  \"copyTo\": \"Copy to\",\n  \"noOtherDashboards\": \"No other dashboards available\",\n  \"createFailed\": \"Failed to create, please try again\",\n  \"maxLimitReached\": \"Maximum of {{count}} dashboards allowed\",\n  \"untitledDashboard\": \"Untitled Dashboard\",\n  \"dashboardCopyName\": \"{{title}} Copy\",\n  \"confirmDeleteDashboard\": \"Are you sure you want to delete {{title}}? This action cannot be undone.\",\n  \"dashboardList\": \"Dashboards\",\n  \"addDashboard\": \"Add Dashboard\",\n  \"expandList\": \"Expand List\",\n  \"collapseList\": \"Collapse List\",\n  \"noMatchingDashboards\": \"No matching dashboards found\",\n  \"noDashboards\": \"No dashboards available\",\n  \"default\": \"Default\",\n  \"setAsDefault\": \"Set as Default\",\n  \"alreadyDefault\": \"Already Default\",\n  \"share\": \"Share\",\n  \"selectADashboard\": \"Please select a dashboard\",\n  \"createdBy\": \"Created by\",\n  \"createTime\": \"Create Time\",\n  \"lastUpdateTime\": \"Last Update Time\",\n  \"publish\": \"Publish\",\n  \"unpublish\": \"Unpublish\",\n  \"editDashboard\": \"Edit Dashboard\",\n  \"editAfterUnpublish\": \"Unpublish to enable editing\",\n  \"updatingCharts\": \"Updating charts\",\n  \"noDataInChart\": \"No data available in this chart\",\n  \"selectDate\": \"Select Date\",\n  \"query\": \"Query\",\n  \"dashboardOffline\": \"This dashboard is offline\",\n  \"chart\": {\n    \"barChart\": \"Column\",\n    \"basicBarChart\": \"Basic Bar\",\n    \"stackedBarChart\": \"Stacked Bar\",\n    \"groupedBarChart\": \"Grouped Bar\",\n    \"horizontalBarChart\": \"Bar\",\n    \"basicHorizontalBarChart\": \"Basic Horizontal Bar\",\n    \"stackedHorizontalBarChart\": \"Stacked Horizontal Bar\",\n    \"groupedHorizontalBarChart\": \"Grouped Horizontal Bar\",\n    \"lineChart\": \"Line\",\n    \"basicLineChart\": \"Basic Line\",\n    \"stackedLineChart\": \"Stacked Line\",\n    \"multipleLineChart\": \"Multiple Line\",\n    \"areaChart\": \"Area\",\n    \"stackedAreaChart\": \"Stacked Area\",\n    \"pieChart\": \"Pie\",\n    \"donutChart\": \"Donut\",\n    \"others\": \"Others\",\n    \"metricCard\": \"Metric\"\n  },\n  \"mid_user_increment\": \"User Scale Statistics\",\n  \"timestamp\": {\n    \"year\": \"Time(Year)\",\n    \"month\": \"Time(Month)\",\n    \"week\": \"Time(Week)\",\n    \"day\": \"Time(Day)\",\n    \"hour\": \"Time(Hour)\"\n  },\n  \"user_group_infos\": {\n    \"user_group_id\": \"User Group ID\",\n    \"user_group_name\": \"User Group Name\"\n  },\n  \"total_user_count\": \"Total Users\",\n  \"new_user_count\": \"New Users\",\n  \"mid_active_user\": \"Active User Scale Statistics\",\n  \"active_user_count\": \"Active Users\",\n  \"mid_app_increment\": \"Application Scale Statistics\",\n  \"user_id\": \"User ID\",\n  \"user_name\": \"User Name\",\n  \"app_type\": \"Application Type\",\n  \"total_app_count\": \"Total Applications\",\n  \"new_app_count\": \"New Applications\",\n  \"mid_sessions_increment\": \"Application Usage Statistics\",\n  \"app_id\": \"Application ID\",\n  \"app_name\": \"Application Name\",\n  \"source\": \"Source Type (Platform/API)\",\n  \"session_count\": \"Session Count\",\n  \"platform_user_count\": \"Number of Users\",\n  \"api_call_count\": \"API Call Count\",\n  \"mid_session_run_dtl\": \"Application Concurrency and Time Consumption\",\n  \"duration_seconds\": \"Session Duration\",\n  \"max_concurrent_sessions\": \"Maximum Concurrent Online Sessions\",\n  \"mid_tool_call_dtl\": \"Tool Call Analysis\",\n  \"tool_name\": \"Tool Name\",\n  \"tool_id\": \"Tool ID\",\n  \"tool_type\": \"Tool Type\",\n  \"tool_call_count\": \"Tool Call Count\",\n  \"tool_call_success_count\": \"Successful Tool Calls\",\n  \"tool_call_success_rate\": \"Tool Call Success Rate\",\n  \"mid_knowledge_increment\": \"Knowledge Base Size Statistics\",\n  \"total_document_knowledge_base_count\": \"Total Document Knowledge Bases\",\n  \"total_qa_knowledge_base_count\": \"Total QA Knowledge Bases\",\n  \"new_document_knowledge_base_count\": \"New Document Knowledge Bases\",\n  \"new_qa_knowledge_base_count\": \"New QA Knowledge Bases\",\n  \"mid_knowledge_file_increment\": \"Knowledge Base File Statistics\",\n  \"total_file_count\": \"Total Files\",\n  \"total_qa_count\": \"Total QA Pairs\",\n  \"file_size\": \"File Size\",\n  \"mid_doc_parse_dtl\": \"File Parsing Performance\",\n  \"parse_type\": \"Parsing Type\",\n  \"status\": \"Final File Status\",\n  \"doc_parse_count\": \"Document Upload Count\",\n  \"doc_parse_success_count\": \"Successful Document Storage Count\",\n  \"doc_parse_success_rate\": \"Document Storage Success Rate\",\n  \"etl_parse_count\": \"ETL Processing Count\",\n  \"etl_parse_success_count\": \"Successful ETL Processing Count\",\n  \"etl_parse_success_rate\": \"ETL Processing Success Rate\",\n  \"mid_model_call_dtl\": \"Model Cost and Performance\",\n  \"user_role_infos\": {\n    \"role_id\": \"Role ID\",\n    \"role_name\": \"Role Name\"\n  },\n  \"model_id\": \"Model ID\",\n  \"model_type\": \"Model Type\",\n  \"model_name\": \"Model Name\",\n  \"model_server_id\": \"Service Provider ID\",\n  \"model_server_name\": \"Service Provider Name\",\n  \"total_token\": \"Token Consumption\",\n  \"model_call_count\": \"Model Call Count\",\n  \"model_call_success_rate\": \"Model Call Success Rate\",\n  \"max_concurrent_llm_sessions\": \"Maximum Concurrent LLM Sessions\",\n  \"avg_first_token_cost_time\": \"Average First Token Response Latency\",\n  \"mid_user_interact_dtl\": \"User Feedback Statistics\",\n  \"like_count\": \"Like Count\",\n  \"dislike_count\": \"Dislike Count\",\n  \"copy_count\": \"Copy Count\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/flow.json",
    "content": "{\n  \"customAssistant\": \"Custom Assistant\",\n  \"createAppWithNoCode\": \"Create applications with no code by describing roles and tasks\",\n  \"assistantCanUseSkillsAndTools\": \"The assistant can use multiple skills and tools\",\n  \"customWorkflow\": \"Custom Workflow\",\n  \"simpleNodeOrchestration\": \"Orchestrate task flows through simple nodes, supporting parallel and cyclic processes, and complex human-computer interactions during workflow execution\",\n  \"customSkill\": \"Custom Skill\",\n  \"richComponentsForBuildingApps\": \"Build applications with rich components, providing more parameters for fine-tuning effects.\",\n  \"appTemplate\": \"Application Templates\",\n  \"chooseTemplateOrCreateBlank\": \"You can choose a template to start with or create a blank application.\",\n  \"workflow\": \"Workflow\",\n  \"assistant\": \"Assistant\",\n  \"skill\": \"Skill\",\n  \"search\": \"Search\",\n  \"confirmDeleteTemplate\": \"Are you sure you want to delete the {{type}} template?\",\n  \"delete\": \"Delete\",\n  \"short\": \"MM-dd, HH:mm\",\n  \"leaveIdea\": \"Share your thoughts ~\",\n  \"returnToAppList\": \"Return to App List\",\n  \"templateName\": \"Template Name\",\n  \"templateDescription\": \"Template Description\",\n  \"operations\": \"Operations\",\n  \"templateManagementDescription\": \"Manage application templates. Templates are visible to all users and support drag-and-drop sorting and deletion.\",\n  \"maxNameLengthAssistant\": \"Name can be up to 50 characters\",\n  \"maxNameLengthWorkflow\": \"Workflow name cannot exceed 50 characters\",\n  \"minDescLengthAssistant\": \"For better assistant performance, the description needs to be more than 20 characters\",\n  \"edit\": \"Edit\",\n  \"create\": \"Create\",\n  \"name\": \"Workflow name\",\n  \"assistantAvatar\": \"Assistant Avatar\",\n  \"workflowAvatar\": \"Workflow Avatar\",\n  \"giveAssistantAName\": \"Give the assistant a name\",\n  \"giveWorkflowAName\": \"Give the workflow a name\",\n  \"build_assistantName\": \"Assistant Name\",\n  \"build_roleAndTasks\": \"What role do you want the assistant to play, and what specific tasks should it complete?\",\n  \"description\": \"Description\",\n  \"enterWorkflowDescription\": \"Enter workflow description\",\n  \"build_forExample\": \"For example: I need an assistant that can answer technical questions\",\n  \"cancel\": \"Cancel\",\n  \"save\": \"Save\",\n  \"hasBeenLaunched\": \"has been launched\",\n  \"hasBeenOffline\": \"has been taken offline\",\n  \"changesSaved\": \"Changes saved\",\n  \"defaultWorkflowData\": \"Workflow test data\",\n  \"switchToVersion\": \"Switch to {{versionName}}\",\n  \"currentVersion\": \"Current version: {{versionName}}\",\n  \"processOrchestration\": \"Process Orchestration\",\n  \"externalRelease\": \"External Release\",\n  \"run\": \"Run\",\n  \"takeOffline\": \"Take Offline\",\n  \"goOnline\": \"Go Online\",\n  \"importWorkflow\": \"Import Workflow\",\n  \"exportWorkflow\": \"Export Workflow\",\n  \"prompt\": \"Prompt\",\n  \"currentVersionLaunched\": \"The current version has been launched. Please save it as a new version to make changes.\",\n  \"saveAsNewVersion\": \"Save as New Version\",\n  \"dontSaveAndSwitch\": \"Do Not Save and Switch\",\n  \"unsavedChangesPrompt\": \"You have unsaved changes. Are you sure you want to leave?\",\n  \"dontSave\": \"Do Not Save\",\n  \"confirmImport\": \"Importing will overwrite the existing workflow. Confirm import?\",\n  \"missingEndNode\": \"Missing end node\",\n  \"pleaseLinkStartNode\": \"Please link the start node first\",\n  \"unconnectedNodes\": \"There are unconnected nodes. Please check if all connections are complete.\",\n  \"parallelInputOutputNodes\": \"Multiple input or output nodes (dialogue inputs) cannot execute in parallel\",\n  \"parallelOutputNodes\": \"Multiple output nodes (input interactions) cannot execute in parallel\",\n  \"unconnectedConditionNode\": \"[{{nodeName}}] Node error: There are unconnected touchpoints\",\n  \"basicNodes\": \"Basic\",\n  \"toolNodes\": \"Tool\",\n  \"workflowPreview\": \"Workflow Preview\",\n  \"viewLogs\": \"View Logs\",\n  \"running\": \"Running\",\n  \"runSuccess\": \"Run Success\",\n  \"runFailed\": \"Run Failed\",\n  \"singleNodeRun\": \"Single Node Run\",\n  \"runResults\": \"Run Results\",\n  \"value\": \"Value\",\n  \"variableNameCannotBeEmpty\": \"Variable name cannot be empty\",\n  \"variableNameInvalid\": \"Variable name can only contain English characters, numbers, and underscores, and cannot start with a number\",\n  \"variableNameTooLong\": \"Variable name cannot exceed 50 characters\",\n  \"variableNameDuplicate\": \"Variable name cannot be duplicated\",\n  \"addNewParameter\": \"+Add new parameter\",\n  \"dataType\": \"Data Type\",\n  \"parameterName\": \"Parameter Name\",\n  \"reference\": \"Reference\",\n  \"input\": \"Input\",\n  \"selectVariable\": \"Select Variable\",\n  \"selectCondition\": \"Select Condition\",\n  \"equals\": \"Equals\",\n  \"notEquals\": \"Not Equals\",\n  \"contains\": \"Contains\",\n  \"notContains\": \"Does Not Contain\",\n  \"isEmpty\": \"Is Empty\",\n  \"isNotEmpty\": \"Is Not Empty\",\n  \"startsWith\": \"Starts With\",\n  \"endsWith\": \"Ends With\",\n  \"regex\": \"Regex\",\n  \"selectType\": \"Select Type\",\n  \"inputRegexPlaceholder\": \"Enter Regex\",\n  \"inputValuePlaceholder\": \"Enter Value\",\n  \"if\": \"If\",\n  \"else\": \"Else\",\n  \"addCondition\": \"Add Condition\",\n  \"addBranch\": \"Add Branch\",\n  \"conditionBranchCannotBeEmpty\": \"Condition branch cannot be empty\",\n  \"maxOptionsError\": \"You can add up to 30 options\",\n  \"emptyOptionError\": \"Option content cannot be empty\",\n  \"duplicateOptionError\": \"Option content is duplicate\",\n  \"lengthOptionError\": \"Option content cannot exceed 50 characters\",\n  \"addOption\": \"Add Option\",\n  \"inputOptionPlaceholder\": \"Please enter option text\",\n  \"recent\": \"Recent\",\n  \"chatRecords\": \"chat records:\",\n  \"formType\": \"Form Type\",\n  \"textInput\": \"Text Input\",\n  \"dropdown\": \"Dropdown\",\n  \"file\": \"File\",\n  \"text\": \"Text\",\n  \"displayName\": \"Display Name\",\n  \"variableName\": \"Variable Name\",\n  \"options\": \"Options\",\n  \"confirm\": \"Confirm\",\n  \"displayNameRequired\": \"Display name cannot be empty\",\n  \"displayNameTooLong\": \"Display name cannot exceed 50 characters\",\n  \"variableNameRequired\": \"Variable name cannot be empty\",\n  \"variableNameExists\": \"Variable name already exists\",\n  \"optionsRequired\": \"At least one option is required\",\n  \"nameExample\": \"e.g., Name\",\n  \"categoryExample\": \"e.g., Insurance Category\",\n  \"uploadExample\": \"e.g., Upload last year’s financial report\",\n  \"enterVariableName\": \"Enter variable name\",\n  \"atLeastOneFormItem\": \"At least one form item must be added\",\n  \"editFormItem\": \"Edit Form Item\",\n  \"addFormItem\": \"Add Form Item\",\n  \"userInputLabel\": \"User Input Box Content\",\n  \"userInputPlaceholder\": \"Leave this blank if users need to input opinions manually; you can pre-fill the text to allow users to modify it and submit.\",\n  \"optionsCannotBeEmpty\": \"Options cannot be empty\",\n  \"noInteraction\": \"No Interaction\",\n  \"chooseInteraction\": \"Choose Interaction\",\n  \"chooseInteractionTooltip\": \"Provide options for users to choose from, for example, when sensitive operations require user confirmation to proceed.\",\n  \"inputInteraction\": \"Input Interaction\",\n  \"inputInteractionTooltip\": \"Provide the ability for users to edit text, suitable for multi-step task processing scenarios, such as allowing users to directly modify model-generated content or input suggestions for optimization. Submitted content will be stored in the output_result variable.\",\n  \"dbAddress\": \"Database Address\",\n  \"dbName\": \"Database Name\",\n  \"dbUsername\": \"Database Username\",\n  \"dbPassword\": \"Database Password\",\n  \"dbAddressRequired\": \"Database address cannot be empty\",\n  \"dbAddressTooLong\": \"Database address cannot exceed 200 characters\",\n  \"dbNameRequired\": \"Database name cannot be empty\",\n  \"dbNameTooLong\": \"Database name cannot exceed 100 characters\",\n  \"dbUsernameRequired\": \"Database username cannot be empty\",\n  \"dbUsernameTooLong\": \"Database username cannot exceed 100 characters\",\n  \"dbPasswordRequired\": \"Database password cannot be empty\",\n  \"variableInput\": \"Variable Input\",\n  \"leaveAndSave\": \"Leave and Save\",\n  \"onlineVersionMessage\": \"The current version is online and cannot be modified. You can save the changes as a new version.\",\n  \"unsavedChangesMessage\": \"You have unsaved changes. Are you sure you want to leave?\",\n  \"runNode\": \"Run this node\",\n  \"copy\": \"Copy\",\n  \"cannotBeEmpty\": \"{{label}} cannot be empty\",\n  \"editReportTemplate\": \"Edit Report Template\",\n  \"nodeErrorMessage\": \"{{nodeName}} node error: {{varNameCn}} is invalid.\",\n  \"required\": \"Required\",\n  \"isRequired\": \"Is Required\",\n  \"documentKnowledgeBase\": \"Document Knowledge\",\n  \"temporarySessionFiles\": \"Temporary Knowledge\",\n  \"storeFilesSentInCurrentSession\": \"Store files sent in the current session\",\n  \"displayNameTooltip\": \"Displayed on the user conversation page\",\n  \"variableNameTooltipFile\": \"Used to store content entered on the user conversation page; can be selected from the temporary session file list\",\n  \"variableNameTooltip\": \"Used to store content entered on the user conversation page; can be referenced in other nodes\",\n  \"allowMultipleSelect\": \"Allow multiple selection\",\n  \"allowUploadMultipleFiles\": \"Allow uploading multiple files\",\n  \"uploadFileTypes\": \"Upload file types\",\n  \"temporaryKnowledgeBase\": \"Save to temporary knowledge base\",\n  \"parseFile\": \"Parse file content\",\n  \"notParse\":\"Do not parse (raw file)\",\n  \"fileParseResult\": \"File parsing results\",\n  \"filePath\": \"File path\",\n  \"filePathName\":\"File path variable name\",\n  \"storeUploadFiles\":\"Store the path list of all uploaded files, which can be read and processed in code nodes\",  \n  \"imageVariableName\":\"Image variable name\",\n  \"extractImages\":\"Extract images from uploaded files, this variable can be passed when assistant or large model nodes use multimodal models\",\n  \"parseLengthLimit\":\"Parse result length limit\",\n  \"storeVariableName\":\"Variable name for storing file parsing results\",\n  \"parseResultName\":\"Parse result variable name\",\n  \"selectFile\":\"Please select file processing strategy\",\n  \"fileProcessingStrategy\":\"File processing strategy\",\n  \"fileProcessingStrategyTip\":\"Choose how to handle user-uploaded files:\\n· Parse file content: Extract text from files to provide context for subsequent nodes like large language models.\\n· Do not parse: Keep original files for processing by multimodal models or code nodes.\",\n  \"dialogProcessingStrategyTip\": \"Choose how to handle user-uploaded files:\\n· Parse file content: Extract text from files to provide context for subsequent nodes like large language models.\\n·Save to Temporary Knowledge Base: Files will be uploaded to a temporary knowledge base and can be used in 'Document Knowledge Base Q&A' nodes.\\n· Do not parse: Keep original files for processing by multimodal models or code nodes.\",\n  \"tempKnowledgeBaseName\": \"Temporary knowledge base name\",\n  \"tempKnowledgeBaseNameTip\": \"Files will be uploaded to a temporary knowledge base with this name and can be used in Document QA, Assistant, and other nodes\",\n  \"fileContentVarName\": \"File content variable name\",\n  \"fileContentVarTip\": \"The full parsed content of the file will be stored in this variable. Note that it may exceed the model context length during usage\",\n  \"fileContentMaxLength\": \"Max file content length\",\n  \"filePathVarName\": \"File path variable name\",\n  \"filePathVarTip\": \"The file path will be stored in this variable and can be used later in the code node\",\n  \"uploadImageFile\": \"Upload image file\",\n  \"uploadImageFileTip\": \"Extract image files from the uploaded file. When the assistant or LLM node uses a multimodal model, the image can be passed in.\",\n  \"invalidFileError\": \"The file is unrecognized. Please import the correct JSON file.\",\n  \"thinking\": \"Thinking...\",\n  \"thoughtCompleted\": \"Deep thinking completed\",\n  \"variableNameCannotStartWithNumber\": \"Variable name cannot start with a number\",\n  \"variableNameContainsInvalidCharacters\": \"Variable name can only contain letters, numbers, and underscores\",\n  \"variableNameAlreadyExists\": \"Variable name already exists\",\n  \"character\": \"Char\",\n  \"max50Characters\": \"Maximum 50 characters\",\n  \"nodeError\": \"Node error\",\n  \"doesNotExist\": \"does not exist\",\n  \"tmpKnowledgeBaseNotSupportSingleNodeDebug\": \"Temporary knowledge base does not support single node debugging\",\n  \"userInputContent\": \"User input content\",\n  \"advancedSearchSettings\": \"Advanced search settings\",\n  \"userAuthVerification\": \"User knowledge base access verification\",\n  \"enableToVerifyUserAccessToKnowledgeBase\": \"Enabling this will verify the user's access to the knowledge base.\",\n  \"retrieverWeightSettings\": \"Retriever weight settings\",\n  \"adjustWeightForVectorOrKeywordSearch\": \"Adjust the weight to prioritize either vector or keyword search.\",\n  \"keyword\": \"Keyword\",\n  \"vector\": \"Vector\",\n  \"retrievalResultReRank\": \"Retrieval result re-ranking\",\n  \"useRerankModelForReorderingResults\": \"Enabling this will apply a rerank model to reorder the retrieval results.\",\n  \"selectRerankModel\": \"Select rerank model\",\n  \"retrievalResultLength\": \"Retrieval result length\",\n  \"controlResultTextLengthForModel\": \"Control the length of the result text passed to the model. Exceeding the model's maximum context length may cause errors.\",\n  \"rerankModelCannotBeEmpty\": \"Rerank model cannot be empty\",\n  \"insertVariable\": \"Insert variable\",\n  \"uploadFile\": \"Upload file\",\n  \"messageContentVariable\": \"Message content variable\",\n  \"cannotExceedMaxLength\": \"Cannot exceed {{maxLength}} characters\",\n  \"roundRunResult\": \"Round {{index}} run result\",\n  \"searchResult\": \"search_result\",\n  \"resultTooLongDownloadToView\": \"The result is too long, please download to view\",\n  \"downloadFullContent\": \"Download full content\",\n  \"allTypes\": \"All Types\",\n  \"document\": \"Document\",\n  \"image\": \"Image\",\n  \"enterValidNumber\": \"Please enter a valid number\",\n  \"numberExceedsMaxLimit\": \"The number cannot exceed 2 to the power of 32.\",\n  \"unknownKnowledgeBase\": \"Unknown Knowledge Base\",\n  \"invalidOrDeletedMetadataField\": \"The selected metadata field is invalid or has been deleted\",\n  \"selectMetadataField\": \"Condition {index}: Please select a metadata field\",\n  \"selectOperator\": \"Condition {index}: Please select an operator\",\n  \"enterValue\": \"Condition {index}: Please enter a value\",\n  \"defaultNodeName\": \"Metadata Filtering\",\n  \"nodeError2\": \"Node error: \\\"{fieldName}\\\" has been invalid.\",\n  \"metadataFieldValidationError\": \"An error occurred while validating metadata fields\",\n  \"noInputNeeded\": \"No input needed\",\n  \"selectOption\": \"Please select\",\n  \"enterValue2\": \"Enter value\",\n  \"selectTime\": \"Select time\",\n  \"unknownField\": \"Unknown Field\",\n  \"loadingMetadataFields\": \"Loading metadata fields...\",\n  \"searchMetadata\": \"Search metadata\",\n  \"noMetadataFields\": \"No metadata fields available\",\n  \"referenceFormatTip\": \"Please adjust the reference format to 'YYYY-MM-DD HH:mm:ss', e.g., '2025-01-10 21:08:20' for January 10, 2025 at 21:08:20\",\n  \"+ Add Condition\": \"+ Add condition\",\n  \"playbackUnavailable\": \"Playback is not available. Please contact the administrator.\",\n  \"wordEditorLoadFailed\": \"Word editor failed to load\",\n  \"checkOfficeServiceConfig\": \"Please ensure the Office service address is configured correctly and the service is running.\",\n  \"variableNameEmpty\": \"Variable name cannot be empty\",\n  \"variableNameStartsWithNumber\": \"Variable name cannot start with a number\",\n  \"variableNameInvalidChars\": \"Variable name can only contain English letters, numbers, and underscores\",\n  \"variableValueEmpty\": \"Variable value cannot be empty\",\n  \"variableValueTooLong\": \"Variable value cannot exceed 1000 characters\",\n  \"addVariable\": \"Add Variable\",\n  \"variableValue\": \"Variable Value\",\n  \"editGlobalVariable\": \"Edit Global Variable\",\n  \"addGlobalVariable\": \"Add Global Variable\",\n  \"variableNameRuleTip\": \"Supports letters, numbers, underscores; cannot start with a number; maximum 50 characters\",\n  \"variableValueRuleTip\": \"Variable value cannot be empty; maximum 1000 characters\",\n  \"enterVariableValue\": \"Enter variable value\",\n  \"kbQueryToolIntro\": \"## Knowledge Base Search Tool Intro\\nWhen a knowledge base search is required to solve a user's problem, invoke the knowledge base search tool and rewrite the user's requirement into a suitable query as the input parameter.\",\n  \"sqlAgentToolIntro\": \"## SQLAgent Database Tool Intro\\n1. Use natural language to accurately describe the user's query needs, and use this description as the value for the 'query' parameter to invoke the sqlagent tool;\\n2. If the user has multiple query requirements, invoke sqlagent multiple times separately.\",\n  \"node\": {\n    \"start\": {\n      \"name\": \"Start\",\n      \"description\": \"The starting point of workflow execution.\",\n      \"开场引导\": \"Opening Guide\",\n      \"全局变量\": \"Global Variables\",\n      \"guide_word\": {\n        \"label\": \"Opening Message\",\n        \"placeholder\": \"Message shown to the user at the beginning of each workflow. Supports Markdown. Leave empty to skip.\"\n      },\n      \"guide_question\": {\n        \"label\": \"Guide Questions\",\n        \"placeholder\": \"Enter guide questions\",\n        \"help\": \"Recommended questions to guide user input. If more than 3 are set, 3 will be randomly displayed.\"\n      },\n      \"user_info\": {\n        \"label\": \"User Information\"\n      },\n      \"current_time\": {\n        \"label\": \"Current Time\"\n      },\n      \"preset_question\": {\n        \"label\": \"Preset Question List\",\n        \"placeholder\": \"Enter batch preset questions\",\n        \"help\": \"Useful for document review or report generation to run multiple RAG queries using preset questions.\"\n      },\n      \"custom_variables\": {\n        \"label\": \"Custom Global Variables\",\n        \"help\": \"Set variables that can be referenced in other nodes\"\n      }\n    },\n    \"input\": {\n      \"name\": \"Input\",\n      \"接收文本\":\"Receive Text\",\n      \"description\": \"Receives user input from the chat interface. Supports two input types: dialog input and form input.\",\n      \"user_input_file\":{\n        \"label\": \"Receive File\"\n      },\n      \"recommended_questions_flag\": {\n        \"label\": \"Smart Recommended Questions\",\n        \"help\": \"Based on conversation history, predict possible user input and display it in the conversation\"\n      },\n      \"recommended_llm\": {\n        \"label\": \"Model\",\n        \"placeholder\":\"Please select a model\"\n      },\n      \"recommended_system_prompt\": {\n        \"label\": \"Prompt\",\n        \"value\": \"# Role\\nYou are a highly insightful \\\"Conversation Continuation Prediction Expert.\\\" Your task is to predict the three phrases or questions the user is most likely to input next, based on the current conversation history.\\n\\n# Context Awareness\\nBefore generating predictions, please carry out the following in-depth reasoning steps:\\n1. **Intent Analysis**: Is the user currently seeking facts, expressing emotions, requesting advice, or attempting to end the conversation?\\n2. **Logical Inference**: Based on the AI\\u2019s previous reply, what is the most natural association or question that would arise for the user?\\n3. **Style Alignment**: Observe the user\\u2019s wording habits (professional, casual, brief, or detailed). The predictions should maintain a consistent tone.\\n\\n# Goals\\n- **Diversity**: Provide follow-ups from different directions (e.g., an in-depth exploratory question, a related new topic, a feedback-oriented comment).\\n- **Conciseness**: Predictions should be short and to the point, typically no more than 15 words, making them easy for the user to click.\\n- **Forward-looking**: Anticipate the user\\u2019s \\u201cpain points\\u201d and directly offer an entry point to a solution.\\n\\n# Output Format\\nPlease strictly adhere to JSON format in the output.\\nReturn a JSON object containing a single key named \\u201csuggestions\\u201d.\\n- All strings must use **double quotes**.\\n- Do not output Markdown code block markers (such as ```json); output the raw JSON string directly.\\n**Example:**\\n{\\\"suggestions\\\": [\\\"Can you give an example?\\\", \\\"What is the cost of this solution?\\\", \\\"Sounds good\\u2014how do I get started?\\\"]}\"\n      },\n      \"recommended_history_num\": {\n        \"label\": \"History Message Count\",\n        \"help\": \"Number of historical conversation messages for the model to reference when generating recommended questions\"\n      },\n      \"tab_dialog_input\": {\n        \"label\": \"Dialog Input\",\n        \"help\": \"Receives free-text input from the user.\"\n      },\n      \"tab_form_input\": {\n        \"label\": \"Form Input\",\n        \"help\": \"Displays a form to collect structured user input.\"\n      },\n      \"user_input\": {\n        \"label\": \"Text Input Content\"\n      },\n      \"dialog_files_content\": {\n        \"label\": \"Uploaded File Content\"\n      },\n      \"dialog_files_content_size\": {\n        \"label\": \"File Content Size Limit\"\n      },\n      \"dialog_file_accept\": {\n        \"label\": \"Accepted File Types\"\n      },\n      \"dialog_image_files\": {\n        \"label\": \"Uploaded Images\",\n        \"help\": \"Extracts image files. Useful when large multimodal models are used.\"\n      },\n      \"form_input\": {\n        \"label\": \"+ Add Form Item\"\n      }\n    },\n    \"output\": {\n      \"name\": \"Output\",\n      \"description\": \"Sends text or files to the user and supports interactive workflows, such as requesting approval or allowing users to directly edit model output.\",\n      \"message\": {\n        \"label\": \"Message Content\",\n        \"placeholder\": \"Message to send, e.g., 'Please confirm the next action' or 'Here is the draft for your review'.\"\n      },\n      \"output_result\": {\n        \"label\": \"Interaction Type\"\n      }\n    },\n    \"llm\": {\n      \"name\": \"LLM\",\n      \"description\": \"Uses a large model to answer questions or execute tasks.\",\n      \"tab_single\": {\n        \"label\": \"Single Run\"\n      },\n      \"tab_batch\": {\n        \"label\": \"Batch Run\"\n      },\n      \"batch_variable\": {\n        \"label\": \"Batch Variable\",\n        \"placeholder\": \"Select the variable for batch execution\",\n        \"help\": \"The node will run multiple times, each using one value from the selected variable.\"\n      },\n      \"模型设置\": \"Model Settings\",\n      \"提示词\": \"Prompt Settings\",\n      \"输出\": \"Output\",\n      \"model_id\": {\n        \"label\": \"Model\",\n        \"placeholder\": \"Configure an LLM model in the model management page\"\n      },\n      \"temperature\": {\n        \"label\": \"Temperature\"\n      },\n      \"system_prompt\": {\n        \"label\": \"System Prompt\"\n      },\n      \"user_prompt\": {\n        \"label\": \"User Prompt\"\n      },\n      \"image_prompt\": {\n        \"label\": \"Image Input\",\n        \"help\": \"Upload images for multimodal models.\"\n      },\n      \"output_user\": {\n        \"label\": \"Show Output in Chat\",\n        \"help\": \"Enable in Q&A scenarios; disable for report generation or document processing.\"\n      },\n      \"output\": {\n        \"label\": \"Output Variable\",\n        \"help\": \"Stores model output.\"\n      }\n    },\n    \"agent\": {\n      \"name\": \"Agent\",\n      \"description\": \"Autonomously plans tasks and selects the appropriate knowledge base, database, or tools.\",\n      \"tab_single\": {\n        \"label\": \"Single Run\"\n      },\n      \"tab_batch\": {\n        \"label\": \"Batch Run\"\n      },\n      \"batch_variable\": {\n        \"label\": \"Batch Variable\",\n        \"placeholder\": \"Select the variable for batch execution\",\n        \"help\": \"Each run processes one value from the batch list.\"\n      },\n      \"模型设置\": \"Model Settings\",\n      \"提示词\": \"Prompt Settings\",\n      \"知识库\": \"Knowledge Base\",\n      \"数据库\": \"Database\",\n      \"工具\": \"Tools\",\n      \"输出\": \"Output\",\n      \"model_id\": {\n        \"label\": \"Model\",\n        \"placeholder\": \"Configure the agent’s reasoning model in system settings\"\n      },\n      \"temperature\": {\n        \"label\": \"Temperature\"\n      },\n      \"system_prompt\": {\n        \"label\": \"System Prompt\",\n        \"placeholder\": \"Agent persona description\",\n        \"value\": \"You are an intelligent AI assistant, skilled at solving user problems by invoking appropriate tools (if any) based on user needs.\\nThe current time is {{#start/current_time#}}\"\n      },\n      \"user_prompt\": {\n        \"label\": \"User Prompt\",\n        \"placeholder\": \"User message content\"\n      },\n      \"chat_history_flag\": {\n        \"label\": \"Chat History\",\n        \"help\": \"Number of past messages to include as context. 0 disables context.\"\n      },\n      \"image_prompt\": {\n        \"label\": \"Image Input\",\n        \"help\": \"Upload images for multimodal reasoning.\"\n      },\n      \"knowledge_id\": {\n        \"label\": \"Knowledge Base Range\",\n        \"placeholder\": \"Select knowledge base\"\n      },\n      \"sql_agent\": {\n        \"label\": \"Database Configuration\"\n      },\n      \"tool_list\": {\n        \"label\": \"+ Add Tool\"\n      },\n      \"output_user\": {\n        \"label\": \"Show Output in Chat\",\n        \"help\": \"Recommended for Q&A; disable for automated processing.\"\n      },\n      \"output\": {\n        \"label\": \"Output Variable\",\n        \"help\": \"Stores model output.\"\n      }\n    },\n    \"qa_retriever\": {\n      \"name\": \"QA Retrieval\",\n      \"description\": \"Retrieves Q&A pairs from the QA knowledge base.\",\n      \"检索设置\": \"Retrieval Settings\",\n      \"输出\": \"Output\",\n      \"user_question\": {\n        \"label\": \"Input Variable\",\n        \"placeholder\": \"Select a question to search\"\n      },\n      \"qa_knowledge_id\": {\n        \"label\": \"QA Knowledge Base\",\n        \"placeholder\": \"Select QA knowledge base\"\n      },\n      \"score\": {\n        \"label\": \"Similarity Threshold\",\n        \"help\": \"Results below this threshold will be filtered out.\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"Retrieved Result\"\n      }\n    },\n    \"rag\": {\n      \"name\": \"Document Retrieval\",\n      \"description\": \"Searches knowledge bases and generates final answers using an LLM. Supports parallel question processing.\",\n      \"知识库检索设置\": \"Retrieval Settings\",\n      \"AI回复生成设置\": \"AI Response Settings\",\n      \"输出\": \"Output\",\n      \"user_question\": {\n        \"label\": \"User Question\",\n        \"placeholder\": \"Select user question\",\n        \"help\": \"For multiple questions, the node executes once per question.\"\n      },\n      \"knowledge\": {\n        \"label\": \"Search Scope\",\n        \"placeholder\": \"Select knowledge base\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"Metadata Filter\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"Advanced Retrieval Settings\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"Retrieved Result\"\n      },\n      \"system_prompt\": {\n        \"label\": \"System Prompt\",\n        \"value\": \"You are a knowledge base Q&A assistant. Follow these rules to answer the questions:\\n1. Answer the user's questions in a formal and professional manner in English.\\n2. Your answers must be strictly based on the content in the [Reference Text]:\\n\\n- If the [Reference Text] contains specific content relevant to the user's question, use that content to answer. If no relevant content exists, simply reply: 'No relevant content found'.\\n- If the content in the [Reference Text] includes markdown-formatted images (e.g., ![image](path/IMAGE_1.png)), it must strictly preserve its original markdown format, without adding quotes, code blocks (` or ```) or other special symbols. The image path must not be altered, ensuring proper rendering of the markdown image.\\n3. When the content in the [Reference Text] comes from multiple sources and there are obvious differences or conflicts, list each answer separately to reflect these differences. If no conflicts exist, provide a unified answer.\"\n      },\n      \"user_prompt\": {\n        \"label\": \"User Prompt\",\n        \"value\": \"User Question: ```{{#user_question#}}```\\nReference Text: ```{{#retrieved_result#}}```\\nYour Answer:\"\n      },\n      \"model_id\": {\n        \"label\": \"Model\",\n        \"placeholder\": \"Configure an LLM model\"\n      },\n      \"temperature\": {\n        \"label\": \"Temperature\"\n      },\n      \"output_user\": {\n        \"label\": \"Show Output in Chat\",\n        \"help\": \"Enable in Q&A; disable in automated workflows.\"\n      },\n      \"output_user_input\": {\n        \"label\": \"Output Variable\",\n        \"help\": \"Stores model output.\"\n      }\n    },\n    \"knowledge_retriever\": {\n      \"name\": \"Document Knowledge Base Retrieval\",\n      \"description\": \"Retrieves content from the knowledge base based on user questions.\",\n      \"知识库检索设置\": \"Retrieval Settings\",\n      \"输出\": \"Output\",\n      \"user_question\": {\n        \"label\": \"User Question\",\n        \"placeholder\": \"Select user question\",\n        \"help\": \"Executes once per question when batch enabled.\"\n      },\n      \"knowledge\": {\n        \"label\": \"Search Scope\",\n        \"placeholder\": \"Select knowledge base\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"Metadata Filter\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"Advanced Retrieval Settings\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"Retrieved Result\"\n      }\n    },\n    \"report\": {\n      \"name\": \"Report\",\n      \"description\": \"Generates a report based on a predefined Word template.\",\n      \"report_info\": {\n        \"label\": \"Report Name\",\n        \"placeholder\": \"Enter report name\"\n      }\n    },\n    \"code\": {\n      \"name\": \"Code\",\n      \"description\": \"Execute custom code.\",\n      \"入参\": \"Input Parameters\",\n      \"执行代码\": \"Execute Code\",\n      \"出参\": \"Output Parameters\",\n      \"code_input\": {\n        \"label\": \"Input Parameters\"\n      },\n      \"code_output\": {\n        \"label\": \"Output Parameters\"\n      }\n    },\n    \"condition\": {\n      \"name\": \"Condition\",\n      \"description\": \"Executes different branches based on a condition expression.\"\n    },\n    \"end\": {\n      \"name\": \"End\",\n      \"description\": \"Workflow ends here.\"\n    },\n    \"tool\": {\n      \"工具参数\": \"Tool Parameters\",\n      \"输出\": \"Output\",\n      \"output\": {\n        \"label\": \"Output Variable\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/knowledge.json",
    "content": "{\n    \"predefinedRules\": {\n        \"singleNewlineRule\": {\n            \"label\": \"\\\\n\",\n            \"desc\": \"Split after single newline, for separating normal line breaks\"\n        },\n        \"doubleNewlineRule\": {\n            \"label\": \"\\\\n\\\\n\",\n            \"desc\": \"Split after double newline, for separating paragraphs\"\n        },\n        \"chapterRule\": {\n            \"label\": \"Chapter\\\\s+.{1,10}\",\n            \"desc\": \"Split before 'Chapter X', for splitting chapters\"\n        },\n        \"articleRule\": {\n            \"label\": \"Section\\\\s+.{1,10}\",\n            \"desc\": \"Split before 'Article X', for splitting articles\"\n        },\n        \"chinesePeriodRule\": {\n            \"label\": \"。\",\n            \"desc\": \"Split after Chinese period, for Chinese sentence segmentation\"\n        },\n        \"englishPeriodRule\": {\n            \"label\": \"\\\\.\",\n            \"desc\": \"Split after English period, for English sentence segmentation\"\n        }\n    },\n    \"unavailable\": \"Audio playback is unavailable. Please contact the administrator.\",\n    \"confirm1\": \"Confirm\",\n    \"now\": \"Now\",\n    \"hour\": \"Hour\",\n    \"minute\": \"Minute\",\n    \"second\": \"Second\",\n    \"placeholder\": \"Select date\",\n    \"ocrForce\": \"Force OCR\",\n    \"enableRec\": \"Enable formula recognition\",\n    \"retainImagesTooltip\": \"When parsing, the image content in the document will be retained to support the reply with both text and images during the question-and-answer process.\",\n    \"chunk\": \"Chunk\",\n    \"characters\": \"char\",\n    \"chunkContentCannotBeEmpty\": \"Chunk content cannot be empty\",\n    \"clickLocateOriginalFile\": \"Click to locate the original file\",\n    \"clickShowMarkdownEdit\": \"Click to display the original Markdown text and edit it\",\n    \"clickDeleteChunk\": \"delete chunk\",\n    \"noAnalysisResult\": \"No analysis results\",\n    \"filePathEmpty\": \"File path is empty\",\n    \"fileLoadFailed\": \"File loading failed\",\n    \"fileContentEmpty\": \"File content is empty\",\n    \"excelContentEmpty\": \"Excel content is empty\",\n    \"unsupportedType\": \"Unsupported type: {{type}}, only CSV/XLSX/XLS are supported\",\n    \"sheetParseError\": \"Sheet parsing error\",\n    \"unknownError\": \"Unknown error\",\n    \"currentSheetNoData\": \"Current sheet has no data\",\n    \"rowNumber\": \"Row\",\n    \"defaultColumnName\": \"Column {{index}}\",\n    \"loading\": \"Loading file...\",\n    \"supportedFormats\": \"Supports CSV, XLSX, XLS formats\",\n    \"previewFailed\": \"Preview failed\",\n    \"downloadOriginal\": \"Download original file\",\n    \"metacommon\": {\n        \"delete\": \"Delete\",\n        \"cancel\": \"Cancel\",\n        \"save\": \"Save\",\n        \"none\": \"None\"\n    },\n    \"metadatainfor\": {\n        \"title\": \"Metadata\",\n        \"addMetadata\": \"Add Metadata\",\n        \"enterText\": \"Enter text\",\n        \"selectTime\": \"Select time\",\n        \"searchMetadata\": \"Search metadata\",\n        \"createMetadata\": \"Create Metadata\",\n        \"enterNewMetadataInfo\": \"Please enter the name and type for the new metadata.\",\n        \"type\": \"Type\",\n        \"name\": \"Name\",\n        \"enterMetadataName\": \"Enter metadata name\"\n    },\n    \"everyRowsAsOneSegment\": \"Every {{count}} rows as one segment\",\n    \"confirmDeleteSelectedFiles\": \"Confirm delete selected files ({{count}})\",\n    \"fileinfor\": {\n        \"documentInfo\": \"Document Information\",\n        \"fileId\": \"File ID\",\n        \"fileName\": \"File Name\",\n        \"createTime\": \"Create Time\",\n        \"updateTime\": \"Update Time\",\n        \"creator\": \"Creator\",\n        \"updater\": \"Updater\",\n        \"originalFileSize\": \"Original File Size\",\n        \"splitStrategy\": \"Split Strategy\",\n        \"fullTextSummary\": \"Full Text Summary\"\n    },\n    \"common\": {\n        \"back\": \"Back\",\n        \"success\": \"Success\",\n        \"noPermission\": \"No operation permission\"\n    },\n    \"file\": {\n        \"selectFile\": \"Select File\",\n        \"searchFiles\": \"Search Files\",\n        \"previewNotAvailable\": \"File preview not available\",\n        \"fileNotFound\": \"Selected file not found\",\n        \"changeFailed\": \"File change failed\",\n        \"loadFailed\": \"Failed to load file list\",\n        \"unnamedFile\": \"Unnamed File\",\n        \"excelRule\": \"Every {{length}} rows as a segment\",\n        \"noSearchResults\": \"No matching files found\",\n        \"noFiles\": \"No files available\",\n        \"noMoreFiles\": \"No more files\"\n    },\n    \"segment\": {\n        \"searchSegments\": \"Search Segments\",\n        \"adjustStrategy\": \"Adjust Segmentation Strategy\",\n        \"noData\": \"No segment data\"\n    },\n    \"metadialog\": {\n        \"title\": \"Metadata\",\n        \"nameRequired\": \"Name cannot be empty.\",\n        \"nameTooLong\": \"Name cannot exceed 255 characters.\",\n        \"nameInvalid\": \"Must start with a lowercase letter and can only contain lowercase letters, numbers, and underscores.\",\n        \"nameExists\": \"Metadata name already exists.\",\n        \"nameReserved\": \"This name is reserved for system metadata and cannot be used.\",\n        \"saveSuccess\": \"Metadata saved successfully\",\n        \"saveFailed\": \"Save failed, please check network or contact administrator\",\n        \"alreadyExists\": \"This metadata already exists and cannot be added again.\"\n    },\n    \"knowledgeBaseSettings\": \"Knowledge Settings\",\n    \"enterKnowledgeBaseDescription\": \"Please enter knowledge base description\",\n    \"noAvailableModels\": \"No available models\",\n    \"embeddingModelChangeWarning\": \"Modifying the embedding model may consume a lot of model resources and take a long time. Please proceed with caution.\",\n    \"finishCreate\": \"Finish Creation\",\n    \"copySuffix\": \" Copy\",\n    \"createMetadata\": \"Create Metadata\",\n    \"builtInMetadata\": \"Built-in Metadata\",\n    \"customRule\": \"Custom rule\",\n    \"singleNewlineRule\": \"Split after single newline, used to separate ordinary line breaks\",\n    \"doubleNewlineRule\": \"Split after double newline, used to separate paragraphs\",\n    \"chapterRule\": \"Split before 'Chapter X', used to split chapters, etc.\",\n    \"articleRule\": \"Split before 'Article X', used to split articles, etc.\",\n    \"chinesePeriodRule\": \"Split after Chinese period, Chinese sentence segmentation\",\n    \"englishPeriodRule\": \"Split after English period, English sentence segmentation\",\n    \"splitt\": \"split\",\n    \"documentDataParsingCompleted\": \"Document data parsing completed\",\n    \"documentDataBeingPrepared\": \"Document data is being prepared\",\n    \"youCanReturn\": \"You can return to the knowledge base file list to view the parsing status\",\n    \"returnToKnowledgeBase\": \"Return to Knowledge Base\",\n    \"buildKnowledgeBaseQaAgent\": \"Build Knowledge Base QA Agent\",\n    \"afterDocumentParsing\": \"After document parsing is completed, use the pre-built knowledge base QA template to create an agent and test the QA effect.\",\n    \"documentKnowledgeQa\": \"Document Knowledge Base QA-\",\n    \"retrieveDocumentKnowledge\": \"Retrieve document knowledge base and answer based on retrieval results.\",\n    \"builtInMetadataTooltip\": \"Built-in metadata is system predefined metadata\",\n    \"createMetadataDescription\": \"Please define the type and name for the new metadata.\",\n    \"name\": \"Name\",\n    \"pleaseEnter\": \"Please enter\",\n    \"save\": \"Save\",\n    \"saving\": \"Saving...\",\n    \"rename\": \"Rename\",\n    \"renameDescription\": \"Please enter the new name\",\n    \"tip\": \"Tip\",\n    \"confirmDelete\": \"Confirm deletion?\",\n    \"confirmDeleteMetadata\": \"Confirm delete this metadata?\",\n    \"builtInNameError\": \"This name is system built-in metadata and cannot be used\",\n    \"nameRequired\": \"Name cannot be empty.\",\n    \"nameTooLong\": \"Name cannot exceed 255 characters.\",\n    \"nameFormatError\": \"Must start with a lowercase letter and can only contain lowercase letters, numbers, and underscores.\",\n    \"nameExists\": \"Metadata name already exists.\",\n    \"knowledgeIdMissing\": \"Knowledge base ID does not exist, cannot create\",\n    \"inputInvalid\": \"Input does not meet specifications\",\n    \"renameFailed\": \"Failed to rename metadata, please try again later\",\n    \"deleteFailed\": \"Failed to delete metadata, please try again later\",\n    \"noOperationPermission\": \"No operation permission\",\n    \"similarQuestionsPreview\": \"Similar Questions (showing first 10 items)\",\n    \"noSimilarQuestions\": \"No similar questions available\",\n    \"importQA\": \"Import QA\",\n    \"upFile\": \"Please upload file\",\n    \"exampleFile\": \"Example file\",\n    \"qaImportExampleFile\": \"QA Import Format Example.xlsx\",\n    \"importPreview\": \"Import Preview (showing first 10 items)\",\n    \"emptyUploadData\": \"Upload data is empty, please check\",\n    \"excelFileTypeError\": \"Please upload xlsx, xls type files\",\n    \"excelFileEmpty\": \"Excel file is empty\",\n    \"excelParseError\": \"Excel file parsing failed\",\n    \"fileReadError\": \"File read failed\",\n    \"missingRequiredColumns\": \"Missing required columns: {{columns}}\",\n    \"fileManagement\": \"File Management\",\n    \"chunkManagement\": \"Chunk Management\",\n    \"back\": \"Return\",\n    \"previewHint\": \"Click the button on the left to preview the results\",\n    \"uploadHint\": \"Please complete file upload first\",\n    \"settings\": \"Settings\",\n    \"segmentationStrategy\": \"Segmentation Strategy\",\n    \"metaData\": \"MetaData\",\n    \"reset\": \"Reset\",\n    \"retry\": \"Retry\",\n    \"namePlaceholder\": \"Please enter the knowledge base name\",\n    \"desc\": \"Knowledge Base Description\",\n    \"descPlaceholder\": \"Please enter the knowledge base description\",\n    \"searchFileName\": \"Search File Name\",\n    \"uploadFile\": \"Upload File\",\n    \"fileName\": \"File Name\",\n    \"previousStep\": \"Previous Step\",\n    \"dataProcessing\": \"Data Processing\",\n    \"textComparison\": \"Original text comparison\",\n    \"segmentStrategy\": \"Segmentation Strategy\",\n    \"uploadDirectly\": \"Upload Directly\",\n    \"status\": \"Status\",\n    \"all\": \"All\",\n    \"parsing\": \"Parsing\",\n    \"completed\": \"Completed\",\n    \"queuing\": \"Queuing\",\n    \"timeout\": \"Timeout\",\n    \"timeoutTip\": \"Queuing has exceeded 24 hours. It is recommended to contact the administrator to increase resources.\",\n    \"parseFailed\": \"Parse Failed\",\n    \"uploadTime\": \"Upload Time\",\n    \"operations\": \"Operations\",\n    \"view\": \"View\",\n    \"delete\": \"Delete\",\n    \"policyChangeDetected\": \"Policy adjustment detected,\",\n    \"regeneratePreview\": \"Regenerate preview\",\n    \"in\": \"In\",\n    \"enterRegex\": \"Enter regex\",\n    \"before\": \"Before\",\n    \"after\": \"After\",\n    \"addCustomRule\": \"Add custom rule\",\n    \"splitPriorityInfo\": \"Split priority is sorted from high to low according to the display order, and can be adjusted by dragging\",\n    \"step1UploadFile\": \"①Upload File\",\n    \"step2DocProcessing\": \"File Processing Strategy\",\n    \"totalFiles\": \"Total {{count}} files\",\n    \"nextStep\": \"Next Step\",\n    \"addSuccess\": \"Add Success\",\n    \"docProcessingStrategy\": \"File Processing Strategy\",\n    \"defaultStrategy\": \"Default Strategy\",\n    \"customStrategy\": \"Custom Strategy\",\n    \"splitMethod\": \"Split Method\",\n    \"splitMethodHint\": \"You can select the filter option below, or customize the splitting rule using regular expressions. For example, splitting before '第.{1,3}条' will split the text before '第1条', '第ab条', '第三条', etc.\",\n    \"splitLength\": \"Split Length\",\n    \"splitSizePlaceholder\": \"Enter split length\",\n    \"chunkOverlap\": \"Overlap Length\",\n    \"chunkOverlapPlaceholder\": \"Enter chunk overlap length\",\n    \"submit\": \"Submit\",\n    \"previewResults\": \"Preview Split Results\",\n    \"ocrForceTip\": \"When enabled, OCR recognizes text in scans/images and extracts table structures\",\n    \"splitContent\": \"Split Content\",\n    \"markdownPreview\": \"Markdown Preview\",\n    \"editSuccess\": \"Edit Success\",\n    \"inputNotEmpty\": \"Input cannot be empty\",\n    \"segmentRangeDetected\": \"Segment range adjustment detected,\",\n    \"overwriteSegment\": \"Overwrite segment content\",\n    \"backToPosition\": \"Back to position\",\n    \"prompt\": \"Prompt\",\n    \"confirmDeleteSegment\": \"Are you sure you want to delete this segment?\",\n    \"edit\": \"Edit\",\n    \"charCount\": \"{{count}} char\",\n    \"searchSegments\": \"Search related segments\",\n    \"selectFile\": \"Select file\",\n    \"uploadPrompt\": \"Please complete file upload first\",\n    \"confirmDeleteFile\": \"Confirm deletion of this file?\",\n    \"modalTitle\": \"File Duplicate Prompt\",\n    \"modalMessage\": \"The following files already exist in the knowledge base. Continuing the upload will overwrite the original files and processing strategy. Do you want to proceed with overwrite?\",\n    \"keepOriginal\": \"Keep Original Files\",\n    \"override\": \"Override\",\n    \"fileUploadResult\": \"Out of the {{total}} files uploaded, {{failed}} failed to upload.\",\n    \"modifySelection\": \"Adjust the selected text range to modify the content\",\n    \"cancel\": \"Cancel\",\n    \"dontRemind\": \"Don't remind again\",\n    \"confirmDeleteSelectedQaData\": \"Confirm deleting the selected QA data!\",\n    \"selectedItems\": \"Selected\",\n    \"batchDelete\": \"Batch Delete\",\n    \"qaContent\": \"QA Content\",\n    \"createQA\": \"Create QA\",\n    \"question\": \"Question\",\n    \"source_unknown\": \"Unknown\",\n    \"source_manual\": \"Manually Created\",\n    \"source_annotation_import\": \"Annotation Import\",\n    \"source_api_import\": \"API Import\",\n    \"source_batch_import\": \"Batch Import\",\n    \"answer\": \"Answer\",\n    \"type\": \"Type\",\n    \"creationTime\": \"Creation Time\",\n    \"updateTime\": \"Update Time\",\n    \"creator\": \"Creator\",\n    \"update\": \"Update\",\n    \"unknown\": \"Unknown\",\n    \"manualCreation\": \"Manual Creation\",\n    \"auditTag\": \"Audit Tag\",\n    \"pleaseEnterQuestion\": \"Please enter a question\",\n    \"questionAndAnswerCannotBeEmpty\": \"Question and answer cannot be empty\",\n    \"max100CharactersForSimilarQuestion\": \"Max 100 characters for similar question\",\n    \"max1000CharactersForAnswer\": \"Max 10000 characters for answer\",\n    \"updateQa\": \"Update QA\",\n    \"createQa\": \"Create QA\",\n    \"similarQuestions\": \"Similar Questions\",\n    \"aiGenerate\": \"AI Generate\",\n    \"cancel2\": \"cancel\",\n    \"confirm\": \"Confirm\",\n    \"backToKnowledge\": \"Back to Knowledge Base\",\n    \"backToKnowledgeDetail\": \"Back to Knowledge Base Detail\",\n    \"loadModelError\": \"Failed to load model\",\n    \"defaultDescPrefix\": \"When answering questions related to\",\n    \"defaultDescSuffix\": \", refer to this knowledge base\",\n    \"nameExceedsLimit\": \"Knowledge base name cannot exceed 200 characters\",\n    \"updateSuccess\": \"Update successful\",\n    \"updateFailed\": \"Update failed, please try again\",\n    \"operationFailed\": \"Operation failed, please contact administrator\",\n    \"createFailed\": \"Creation failed\",\n    \"knowledgeSettings\": \"Knowledge Base Settings\",\n    \"pleaseEnterDesc\": \"Please enter knowledge base description\",\n    \"currentClickedLibId\": \"Current clicked lib ID\",\n    \"copyNameExceedsLimit\": \"Copied knowledge base name exceeds character limit\",\n    \"copyFailed\": \"Copy failed\",\n    \"noPermission\": \"No permission\",\n    \"setting\": \"Settings\",\n    \"adjustSegmentStrategy\": \"Adjust Segmentation Strategy\",\n    \"adjustSegmentStrategySuccess\": \"Segmentation strategy adjusted successfully\",\n    \"parseSuccess\": \"Parse successful\",\n    \"parseError\": \"Parse error\",\n    \"fileParseError\": \"File parse failed\",\n    \"metadata\": {\n        \"documentId\": \"System document ID, globally unique\",\n        \"documentName\": \"Knowledge base document name, unique within knowledge base\",\n        \"uploadTime\": \"Document upload time\",\n        \"updateTime\": \"Document last update time\",\n        \"uploader\": \"Document uploader\",\n        \"updater\": \"Document last updater\",\n        \"nameEmpty\": \"Name cannot be empty.\",\n        \"nameTooLong\": \"Name cannot exceed 255 characters.\",\n        \"nameInvalid\": \"Must start with a lowercase letter and can only contain lowercase letters, numbers, and underscores.\",\n        \"nameExists\": \"Metadata name already exists.\",\n        \"inputInvalid\": \"Input does not meet requirements\",\n        \"confirmDelete\": \"Confirm deletion?\",\n        \"deleteButton\": \"Delete\",\n        \"saving\": \"Saving...\",\n        \"save\": \"Save\",\n        \"pleaseEnter\": \"Please enter\"\n    },\n    \"universalRules\": \"Universal Segmentation Rules\",\n    \"splitRules\": {\n        \"singleNewlineRule\": \"Split after single newline, for separating normal line breaks\",\n        \"doubleNewlineRule\": \"Split after double newline, for separating paragraphs\",\n        \"chapterRule\": \"Split before 'Chapter X', for splitting chapters\",\n        \"articleRule\": \"Split before 'Article X', for splitting articles\",\n        \"chinesePeriodRule\": \"Split after Chinese period, for Chinese sentence segmentation\",\n        \"englishPeriodRule\": \"Split after English period, for English sentence segmentation\",\n        \"customRule\": \"Custom rule\"\n    },\n    \"fileNotSupported\": \"File preview not supported\",\n    \"fileExpired\": \"File has expired, upload a new one for testing\",\n    \"dataConversionError\": \"Data conversion error\",\n    \"updateButtonState\": \"Update button state\",\n    \"batchEnable\": {\n        \"alreadyEnabled\": \"Selected items are already enabled\",\n        \"success\": \"Successfully enabled {{count}} items\",\n        \"partialFailed\": \"Some items failed to enable, IDs: {{ids}}\",\n        \"failed\": \"Batch enable operation failed, please try again\"\n    },\n    \"batchDisable\": {\n        \"alreadyDisabled\": \"Selected items are already disabled\",\n        \"success\": \"Successfully disabled {{count}} items\",\n        \"partialFailed\": \"Some items failed to disable, IDs: {{ids}}\",\n        \"failed\": \"Batch disable operation failed, please try again\"\n    },\n    \"createUser\": \"Creator\",\n    \"sourceTypes\": {\n        \"unknown\": \"Unknown\",\n        \"manual\": \"Manually Created\",\n        \"annotationImport\": \"Annotation Import\",\n        \"apiImport\": \"API Import\",\n        \"batchImport\": \"Batch Import\"\n    },\n    \"knowledgeDesc\": \"Knowledge Base Description\",\n    \"embeddingModel\": \"Knowledge Base Embedding Model Selection\",\n    \"loadingModelList\": \"Loading model list...\",\n    \"noAvailableModel\": \"No available models\",\n    \"embeddingModelWarning\": \"Modifying the embedding model may consume substantial model resources and take considerable time. Please proceed with caution\",\n    \"completeCreation\": \"Complete Creation\",\n    \"copyCompleted\": \"{{name}} copied successfully\",\n    \"copyOf\": \"Copy of {{name}}\",\n    \"copying\": \"Copying\",\n    \"disable\": \"Disable\",\n    \"enable\": \"Enable\",\n    \"unknownKnowledgeBase\": \"Unknown Knowledge Base\",\n    \"processing\": \"Processing\",\n    \"notEnabled\": \"Not enabled, please try again\",\n    \"successfullyEnabled\": \"Successfully enabled {{count}} items\",\n    \"successfullyDisabled\": \"Successfully disabled {{count}} items\",\n    \"theSelectedItemsAlreadyDisabled\": \"The selected items are already disabled\",\n    \"theSelectedItemsAlreadyEnabled\": \"The selected items are already enabled\",\n    \"selectAll\": \"Select All\",\n    \"import\": \"Import\",\n    \"export\": \"Export\",\n    \"fileExists\": \"{{name1}} already exists as {{name2}}\",\n    \"splitSettingsTooltip\": \"Set the target segment length and overlap length between adjacent segments to control context continuity; choose whether to retain original images.\",\n    \"splitMethodTooltip\": \"Determine the priority of splitting positions based on rule order (drag to reorder); supports custom regex and selecting whether to split before or after the matched content.\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/model.json",
    "content": "{\n    \"model\": {\n        \"editPrompt\": \"Edit Prompt\",\n        \"docKnowledgeAbstractPrompt\": \"Document Knowledge Base Abstract Prompt\",\n        \"docKnowledgeAbstractPromptTooltip\": \"When uploading files to the document knowledge base, the prompt used for summarizing the file\",\n        \"editPromptButton\": \"Edit Prompt\",\n        \"cancelEdit\": \"Cancel Edit\",\n        \"confirmCancelEdit\": \"Your changes have not been saved. Are you sure you want to exit?\",\n        \"promptSaved\": \"Prompt saved successfully\",\n        \"workVectorModel\": \"Workbench Vector Model\",\n        \"workVectorModelTooltip\": \"Used for $t(bs:linsight) task execution scenarios\",\n        \"lingsiTaskModel\": \"$t(bs:linsight) Task Model\",\n        \"lingsiTaskModelTooltip\": \"It is recommended to use the most powerful model to achieve the best task execution results \",\n        \"executionModeTooltip\": \"Generally, you can choose function call mode. If the model does not support function call or you are pursuing the best task execution effect, you can choose ReAct mode\",\n        \"selectExecutionMode\": \"Select execution mode\",\n        \"functionCall\": \"Function Call\",\n        \"react\": \"ReAct\",\n        \"workbenchVoiceModel\": \"Workbench Voice Model\",\n        \"asrModel\": \"Speech-to-Text (ASR) Model\",\n        \"asrModelTooltip\": \"Used for workbench/application speech-to-text scenarios\",\n        \"ttsModel\": \"Text-to-Speech (TTS) Model\",\n        \"ttsModelTooltip\": \"Used for workbench/application text-to-speech scenarios\",\n        \"saveFailed\": \"Save failed, please try again!\",\n        \"fetchConfigFailed\": \"Failed to get configuration, please refresh the page and try again!\",\n        \"tip\": \"Tip\",\n        \"confirmEmbeddingChange\": \"Modifying the embedding model may consume a lot of model resources and take a long time. Confirm modification?\",\n        \"confirm\": \"Confirm\",\n        \"duplicateServiceProviderName\": \"Service provider name cannot be duplicated\",\n        \"duplicateServiceProviderNameValidation\": \"The service provider name cannot be empty and can be up to 100 characters long\",\n        \"modelNameValidation\": \"Name required, max 100 chars\",\n        \"modelDuplicate\": \"Cannot duplicate\",\n        \"addSuccess\": \"Added\",\n        \"updateSuccess\": \"Updated\",\n        \"deleteConfirmation\": \"Deleting may affect existing apps or KB. Confirm?\",\n        \"deleteSuccess\": \"Deleted\",\n        \"addModel\": \"Add Model\",\n        \"modelConfiguration\": \"Config\",\n        \"serviceProvider\": \"Provider\",\n        \"serviceProviderName\": \"Provider Name\",\n        \"serviceProviderNameTooltip\": \"Custom name for distinguishing instances\",\n        \"dailyCallLimit\": \"Daily Limit\",\n        \"interModelFormat\": \"Inter Model Format\",\n        \"timesPerDay\": \"times/day\",\n        \"model\": \"Model\",\n        \"delete\": \"Delete\",\n        \"cancel\": \"Cancel\",\n        \"save\": \"Save\",\n        \"back\": \"Back\",\n        \"modelNameEmpty\": \"Name required\",\n        \"modelNameLength\": \"Max 100 chars\",\n        \"modelNameDuplicate\": \"Cannot duplicate\",\n        \"deleteModelConfirmation\": \"Deleting may affect existing apps or Knowledge Base. Confirm?\",\n        \"modelName\": \"Model Name\",\n        \"modelNameTooltip\": \"Name for local deployment or API request\",\n        \"modelType\": \"Type\",\n        \"webSearch\": \"Online Search\",\n        \"systemModelSettings\": \"System Settings\",\n        \"knowledgeBaseModel\": \"Knowledge\",\n        \"workModel\": \"work\",\n        \"executionMode\": \"execution mode\",\n        \"assistantModel\": \"Assistant\",\n        \"evaluationModel\": \"Eval\",\n        \"workflowModel\": \"Workflow\",\n        \"defaultEmbeddingModel\": \"Default Embedding for Knowledge Base\",\n        \"sourceTracingModel\": \"Source Tracing for Knowledge Base\",\n        \"sourceTracingModelTooltip\": \"Auto-extract keywords for source tracing. Uses jieba if not configured.\",\n        \"documentSummaryModel\": \"Doc Summary for Knowledge Base\",\n        \"documentSummaryModelTooltip\": \"Summarizes content into title for vector DB. Not summarized if not configured.\",\n        \"qaSimilarModel\": \"QA Similar Model\",\n        \"qaSimilarModelTooltip\": \"Generates similar questions for QA Knowledge Base.\",\n        \"saveSuccess\": \"Saved\",\n        \"modelsAndRAGNodes\": \"models and RAG nodes\",\n        \"assistantInferenceModel\": \"Inference Model\",\n        \"assistantInferenceModelRepetition\": \"Assistant Reasoning Model Repetition\",\n        \"assistantExecutionMode\": \"Execution Mode\",\n        \"assistantExecutionModeTooltip\": \"Use function call mode if supported by model\",\n        \"streamingOutput\": \"Streaming\",\n        \"assistantKnowledgeBaseMaxCharacters\": \"Knowledge Base Max Chars\",\n        \"assistantKnowledgeBaseMaxCharactersTooltip\": \"Max chars for model, truncate if exceeds\",\n        \"reorderAfterRetrieval\": \"Reorder\",\n        \"reorderAfterRetrievalTooltip\": \"Whether to reorder the retrieved chunks, it is recommended to enable the single document Q & A scenario.\",\n        \"setAsDefault\": \"Default\",\n        \"assistantAutoOptimizationModel\": \"Auto Optimization\",\n        \"yes\": \"Yes\",\n        \"no\": \"No\",\n        \"selectModel\": \"Select\",\n        \"defaultEvaluationFeature\": \"Default Eval Model\",\n        \"machineName\": \"Machine Name\",\n        \"gpuNumber\": \"GPU Number\",\n        \"gpuID\": \"GPU ID\",\n        \"totalMemory\": \"Total Memory\",\n        \"freeMemory\": \"Free Memory\",\n        \"gpuUtilization\": \"GPU Utilization\",\n        \"notBeEmpty\": \"cannot be empty\"\n    },\n    \"finetune\": {\n        \"rtServiceManagement\": \"FT Service Management\",\n        \"machineName\": \"Machine Name\",\n        \"serviceAddress\": \"Service Address\",\n        \"createTrainingTask\": \"Create Training Task\",\n        \"rtService\": \"RT Service\",\n        \"gpuResourceUsage\": \"GPU Usage\",\n        \"rtServiceTooltip\": \"Select the RT service for the base model. The Finetune model will also be deployed here.\",\n        \"baseModel\": \"Base Model\",\n        \"finetuneModelName\": \"Finetune Model Name\",\n        \"dataset\": \"Dataset\",\n        \"uploadDataset\": \"Upload Dataset\",\n        \"downloadSampleFile\": \"Download Sample File\",\n        \"customSampleSize\": \"Custom Sample Size (Optional)\",\n        \"customSampleSizeTooltip1\": \"Optional:\",\n        \"customSampleSizeTooltip2\": \"If not selected, all samples from the chosen and preset datasets will be used.\",\n        \"customSampleSizeTooltip3\": \"If selected, specify the sample count for each dataset. Leave blank or exceed the total sample count to use all samples.\",\n        \"presetDatasets\": \"Preset Datasets\",\n        \"userDatasets\": \"User Datasets\",\n        \"download\": \"Download\",\n        \"sampleSize\": \"Sample Size\",\n        \"noData\": \"No Data\",\n        \"trainingMethod\": \"Training Method\",\n        \"fullFineTune\": \"Full Fine-tune\",\n        \"freeze\": \"Freeze\",\n        \"lora\": \"LoRA\",\n        \"parameterConfiguration\": \"Parameter Configuration\",\n        \"parameterConfigurationTooltip\": \"Refer to the product documentation for suggestions and reference data.\",\n        \"parameter\": \"Parameter\",\n        \"quantity\": \"Quantity\",\n        \"description\": \"Description\",\n        \"gpuDesc\": \"GPU IDs for training, separated by commas, e.g., 0,1,2,3\",\n        \"valRatioDesc\": \"Validation set ratio. If greater than 0, loss will be calculated after each epoch.\",\n        \"batchSizeDesc\": \"Batch size for each training iteration. Larger sizes speed up training but use more memory.\",\n        \"learningRateDesc\": \"Learning rate for updating weights. Too high slows convergence, too low slows training.\",\n        \"numEpochsDesc\": \"Epochs control the number of iterations. Increase if the loss is still decreasing.\",\n        \"maxSeqLenDesc\": \"Max sequence length (default 8192). Input + output length should not exceed this.\",\n        \"cpuLoadDesc\": \"Load some parameters and optimizers to CPU to save GPU memory. Refer to documentation for details.\",\n        \"selectRTService\": \"Select RT Service\",\n        \"selectBaseModel\": \"Select Base Model\",\n        \"enterModelName\": \"Model name must contain at least one letter and consist of numbers, letters, and underscores.\",\n        \"taskId\": \"Task ID\",\n        \"runtime\": \"Runtime\",\n        \"creator\": \"Creator\",\n        \"cancelPublish\": \"Cancel Publish\",\n        \"formatTime\": \"hh hours mm minutes ss seconds\",\n        \"publish\": \"Publish\",\n        \"stop\": \"Stop\",\n        \"confirmCancelPublish\": \"This model is online. Confirm to cancel publishing?\",\n        \"confirmDeleteModel\": \"Confirm to delete model {{name}}?\",\n        \"confirmDeleteOnlineModel\": \"Model is online. Confirm to delete {{name}}?\",\n        \"confirmDeletePublishedModel\": \"Model is published. Confirm to delete {{name}}?\",\n        \"confirmStopTraining\": \"Confirm to stop training?\",\n        \"evaluationReport\": \"Evaluation Report\",\n        \"trainingLogs\": \"Training Logs\"\n    }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/en-US/tool.json",
    "content": "{\n    \"categories\": {\n        \"代码执行器\": {\n            \"name\": \"Code Interpreter\",\n            \"desc\": \"Execute code to perform chart plotting, file processing, and other programming-related tasks\"\n        },\n        \"天眼查\": {\n            \"name\": \"Tianyancha\",\n            \"desc\": \"Enterprise information search\"\n        },\n        \"Jina AI\": {\n            \"name\": \"Jina AI\",\n            \"desc\": \"Convert content of target URLs (PDF supported) into Markdown format for LLM processing\"\n        },\n        \"联网搜索\": {\n            \"name\": \"Web Search\",\n            \"desc\": \"Search the internet with configurable engines such as Bing, Bochacha, Jina Deep Search, SerpApi, and Tavily\"\n        },\n        \"Dalle3绘画\": {\n            \"name\": \"Dall-E 3 Image Generation\",\n            \"desc\": \"OpenAI text-to-image model\"\n        },\n        \"Firecrawl\": {\n            \"name\": \"Firecrawl\",\n            \"desc\": \"Crawl a website and convert its content into Markdown format\"\n        },\n        \"SiliconFlow\": {\n            \"name\": \"SiliconFlow\",\n            \"desc\": \"Generate high-quality images using Flux or Stable Diffusion models\"\n        },\n        \"飞书消息\": {\n            \"name\": \"Feishu Messages\",\n            \"desc\": \"Retrieve Feishu direct or group chat history; send messages to users or group chats\"\n        },\n        \"Bing web搜索\": {\n            \"name\": \"Bing Web Search\",\n            \"desc\": \"Search the internet using Bing, e.g., for weather, exchange rates, or news\"\n        },\n        \"发送邮件\": {\n            \"name\": \"Send Email\",\n            \"desc\": \"Send emails using the SMTP protocol\"\n        },\n        \"企业微信\": {\n            \"name\": \"WeCom\",\n            \"desc\": \"Send messages to WeCom groups via robots\"\n        },\n        \"钉钉\": {\n            \"name\": \"DingTalk\",\n            \"desc\": \"Send group messages using DingTalk robots\"\n        },\n        \"论文获取\": {\n            \"name\": \"Paper Fetcher\",\n            \"desc\": \"Retrieve papers from arXiv using keywords\"\n        },\n        \"计算器\": {\n            \"name\": \"Calculator\",\n            \"desc\": \"Perform mathematical expression computation using Python\"\n        },\n        \"经济金融数据\": {\n            \"name\": \"Economic & Financial Data\",\n            \"desc\": \"Large financial data platform including stocks, funds, futures, macroeconomics, and corporate fundamentals\"\n        },\n        \"时间\": {\n            \"name\": \"Time\",\n            \"desc\": \"Get the current time\"\n        }\n    },\n    \"tools\": {\n        \"bisheng_code_interpreter\": {\n            \"name\": \"Code Interpreter\",\n            \"desc\": \"Execute Python or shell code and return results within 600 seconds; suitable for math, programming, images, files, etc.\",\n            \"params\": {\n                \"python_code\": \"The pure Python script to evaluate. It will be placed in main.py. Do not use Markdown.\"\n            }\n        },\n        \"tianyancha_riskinfo\": {\n            \"name\": \"Enterprise Risk (Tianyancha)\",\n            \"desc\": \"Retrieve risk information related to a company, including internal/related/alert risks\",\n            \"params\": {\n                \"query\": \"Search keyword (company name, ID, registration number, or unified social credit code)\"\n            }\n        },\n        \"tianyancha_company_holders\": {\n            \"name\": \"Company Shareholders\",\n            \"desc\": \"Retrieve shareholder information including name, equity ratio, capital contribution, etc.\",\n            \"params\": {\n                \"query\": \"Search keyword (company name, ID, registration number, or unified social credit code)\"\n            }\n        },\n        \"tianyancha_company_change_info\": {\n            \"name\": \"Business Registration Change Records\",\n            \"desc\": \"Retrieve company business change records, including change items and before/after details\",\n            \"params\": {\n                \"query\": \"Search keyword (company name, ID, registration number, or unified social credit code)\"\n            }\n        },\n        \"tianyancha_ic_info\": {\n            \"name\": \"Industrial & Commercial Information\",\n            \"desc\": \"Retrieve company basic info, key personnel, shareholders, external investments, branches, etc.\",\n            \"params\": {\n                \"query\": \"Search keyword (company name, ID, registration number, or unified social credit code)\"\n            }\n        },\n        \"tianyancha_law_suit_case\": {\n            \"name\": \"Legal Litigation\",\n            \"desc\": \"Retrieve company lawsuits including case name, cause, identity, case number, etc.\",\n            \"params\": {\n                \"query\": \"Search keyword\"\n            }\n        },\n        \"tianyancha_judicial_risk\": {\n            \"name\": \"Judicial Risk\",\n            \"desc\": \"Retrieve lawsuits, court announcements, hearings, dishonest persons, enforcement info, case filings, delivery notices, etc.\",\n            \"params\": {\n                \"query\": \"Search keyword\"\n            }\n        },\n        \"tianyancha_ip_rights\": {\n            \"name\": \"Intellectual Property\",\n            \"desc\": \"Retrieve IP-related info including trademarks, patents, copyrights, software copyrights, and website filings\",\n            \"params\": {\n                \"query\": \"Search keyword\"\n            }\n        },\n        \"tianyancha_get_company_baseinfo\": {\n            \"name\": \"Company Basic Information\",\n            \"desc\": \"Retrieve basic info including company name, type, establishment date, status, registered capital, legal rep., etc.\",\n            \"params\": {\n                \"query\": \"Search keyword\"\n            }\n        },\n        \"tianyancha_search_company\": {\n            \"name\": \"Search Companies\",\n            \"desc\": \"Retrieve a list of companies matching a keyword, including name, type, date, status, credit code, etc.\",\n            \"params\": {\n                \"query\": \"Keyword\"\n            }\n        },\n        \"tianyancha_all_companys_by_company\": {\n            \"name\": \"Person’s Related Companies\",\n            \"desc\": \"Retrieve all companies associated with a person (as legal rep., shareholder, senior management)\",\n            \"params\": {\n                \"query\": \"Person to search\",\n                \"name\": \"Company the person worked at\"\n            }\n        },\n        \"jina_get_markdown\": {\n            \"name\": \"Fetch Single Webpage\",\n            \"desc\": \"Crawl target URL (PDF supported) and convert to Markdown for LLM processing\",\n            \"params\": {\n                \"target_url\": \"URL to fetch\"\n            }\n        },\n        \"web_search\": {\n            \"name\": \"Web Search\",\n            \"desc\": \"Perform online search and return results\",\n            \"params\": {\n                \"query\": \"Search query\"\n            }\n        },\n        \"dalle_image_generator\": {\n            \"name\": \"Dall-E 3 Image Generator\",\n            \"desc\": \"Generate image based on text description\",\n            \"params\": {\n                \"query\": \"Description of the image\"\n            }\n        },\n        \"fire_search_crawl\": {\n            \"name\": \"Deep Crawl (Crawl Mode)\",\n            \"desc\": \"Crawl target website and all accessible subpages\",\n            \"params\": {\n                \"target_url\": \"Starting URL\"\n            }\n        },\n        \"fire_search_scrape\": {\n            \"name\": \"Single Page Crawl (Scrape Mode)\",\n            \"desc\": \"Crawl only the given URL page, without subpages\",\n            \"params\": {\n                \"target_url\": \"URL to scrape\"\n            }\n        },\n        \"silicon_flux\": {\n            \"name\": \"Flux Image Generator\",\n            \"desc\": \"Generate images using the Flux model\",\n            \"params\": {\n                \"prompt\": \"Image prompt (recommended in English)\"\n            }\n        },\n        \"silicon_stable_diffusion\": {\n            \"name\": \"Stable Diffusion\",\n            \"desc\": \"Generate images using Stable Diffusion model\",\n            \"params\": {\n                \"prompt\": \"Image prompt\",\n                \"negative_prompt\": \"Content to exclude\"\n            }\n        },\n        \"feishu_get_chat_messages\": {\n            \"name\": \"Retrieve Feishu Message History\",\n            \"desc\": \"Fetch messages in direct chats, groups, or threads\",\n            \"params\": {\n                \"container_id\": \"Chat/group/thread ID\",\n                \"container_id_type\": \"Container type\",\n                \"start_time\": \"Start timestamp\",\n                \"end_time\": \"End timestamp\",\n                \"page_size\": \"Number of messages per request\",\n                \"sort_type\": \"Sort order\",\n                \"page_token\": \"Pagination token\"\n            }\n        },\n        \"feishu_send_message\": {\n            \"name\": \"Send Feishu Message\",\n            \"desc\": \"Send message to specified user or group\",\n            \"params\": {\n                \"message\": \"Message content\",\n                \"receive_id\": \"Receiver ID\",\n                \"receive_id_type\": \"ID type\"\n            }\n        },\n        \"bing_search\": {\n            \"name\": \"Bing Web Search\",\n            \"desc\": \"Search Bing and return results\",\n            \"params\": {\n                \"query\": \"Search query\"\n            }\n        },\n        \"email_send_email\": {\n            \"name\": \"Send Email\",\n            \"desc\": \"Send email to one or more recipients (use comma to separate multiple emails)\",\n            \"params\": {\n                \"receiver\": \"Recipient email address\",\n                \"subject\": \"Email subject\",\n                \"content\": \"Email body\"\n            }\n        },\n        \"wechat_send_message\": {\n            \"name\": \"Send WeCom Group Message\",\n            \"desc\": \"Push message to WeCom group via robot\",\n            \"params\": {\n                \"url\": \"Webhook URL\",\n                \"message\": \"Message content\"\n            }\n        },\n        \"ding_send_message\": {\n            \"name\": \"Send DingTalk Group Message\",\n            \"desc\": \"Send message to DingTalk group via custom robot\",\n            \"params\": {\n                \"url\": \"Webhook URL\",\n                \"message\": \"Message content\"\n            }\n        },\n        \"arxiv\": {\n            \"name\": \"Paper Fetcher\",\n            \"desc\": \"Retrieve papers from arXiv\",\n            \"params\": {\n                \"query\": \"Search query\"\n            }\n        },\n        \"calculator\": {\n            \"name\": \"Calculator\",\n            \"desc\": \"Compute mathematical expressions\",\n            \"params\": {}\n        },\n        \"macro_bond_zh_us_rate\": {\n            \"name\": \"China–US Treasury Yields\",\n            \"desc\": \"Return treasury yield data for both countries (2y / 5y / 10y / 30y / 10y-2y spread)\",\n            \"params\": {\n                \"start_date\": \"Start date (YYYY-MM-DD)\",\n                \"end_date\": \"End date (YYYY-MM-DD)\"\n            }\n        },\n        \"macro_china_pmi\": {\n            \"name\": \"PMI\",\n            \"desc\": \"China PMI monthly statistics\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_consumer_goods_retail\": {\n            \"name\": \"Retail Sales\",\n            \"desc\": \"China total retail sales of consumer goods monthly data\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_money_supply\": {\n            \"name\": \"Money Supply\",\n            \"desc\": \"China monthly data for M0, M1, M2 and YoY/MoM changes\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_ppi\": {\n            \"name\": \"PPI\",\n            \"desc\": \"Producer Price Index monthly data\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_cpi\": {\n            \"name\": \"CPI\",\n            \"desc\": \"Consumer Price Index monthly data across national, urban, and rural levels\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_gdp_yearly\": {\n            \"name\": \"GDP\",\n            \"desc\": \"China quarterly GDP statistics\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"macro_china_shrzgm\": {\n            \"name\": \"Social Financing Increment\",\n            \"desc\": \"Monthly total social financing increment and breakdown\",\n            \"params\": {\n                \"start_date\": \"Start date\",\n                \"end_date\": \"End date\"\n            }\n        },\n        \"sina_history_KLine\": {\n            \"name\": \"Historical Stock Quotes\",\n            \"desc\": \"Retrieve China A-share historical price data (open, high, low, close, volume)\",\n            \"params\": {\n                \"date\": \"Date (YYYY-MM-DD)\",\n                \"stock_exchange\": \"Exchange code\",\n                \"stock_symbol\": \"6-digit stock or index code\"\n            }\n        },\n        \"sina_realtime_info\": {\n            \"name\": \"Realtime Stock Quotes\",\n            \"desc\": \"Retrieve real-time A-share stock/index data\",\n            \"params\": {\n                \"prefix\": \"Prefix for quote type\",\n                \"stock_exchange\": \"Exchange code\",\n                \"stock_symbol\": \"6-digit stock or index code\"\n            }\n        },\n        \"get_current_time\": {\n            \"name\": \"Current Time\",\n            \"desc\": \"Return the current time (defaults to UTC+8)\",\n            \"params\": {}\n        }\n    },\n    \"addMcpServer\": \"Add MCP Server\",\n    \"refresh\": \"Refresh\",\n    \"refreshSuccess\": \"Refresh Successful\",\n    \"toolFetchFailed\": \"Failed to fetch tool\",\n    \"executionModeLabel\": \"Code execution mode\",\n    \"executionLocalLabel\": \"Run locally\",\n    \"executionE2bLabel\": \"Run in E2B sandbox\",\n    \"serviceProviderLabel\": \"Service provider\",\n    \"providerPrivateLabel\": \"Self-hosted\",\n    \"providerPrivateTooltip\": \"Deploy E2B in your local environment, point the domain to your self-hosted address, and let your E2B backend handle API key authentication.\",\n    \"providerOfficialLabel\": \"Official cloud\",\n    \"providerOfficialTooltip\": \"Use the official E2B cloud service and obtain an API key from E2B.\",\n    \"domainCannotBeEmpty\": \"Domain cannot be empty\",\n    \"apiKeyCannotBeEmpty\": \"API key cannot be empty\",\n    \"enterApiKeyPlaceholder\": \"Please enter the API key\",\n    \"enterApiKey\": \"Enter the API key\",\n    \"timeoutTooltip\": \"Maximum time in milliseconds the crawler waits for a page before aborting.\",\n    \"deepCrawlDetailConfigDescription\": \"Advanced deep crawl settings (only affect Crawl requests)\",\n    \"maxdepthTooltip\": \"Maximum crawl depth relative to the input URL.\",\n    \"limitTooltip\": \"Maximum number of pages to crawl.\",\n    \"azureEndpointPlaceholder\": \"Example: https://xxx.openai.azure.com/\",\n    \"openaiApiVersionPlaceholder\": \"Example: 2024-02-01\",\n    \"emailAccountLabel\": \"email_account (sender email address)\",\n    \"emailPasswordLabel\": \"email_password (sender email password)\",\n    \"smtpServerLabel\": \"smtp_server (SMTP server address)\",\n    \"smtpPortLabel\": \"smtp_port (SMTP server port)\",\n    \"encryptMethodLabel\": \"encrypt_method (SMTP encryption method)\",\n    \"encryptMethodNoneLabel\": \"No encryption\",\n    \"encryptMethodSslLabel\": \"SSL encryption\",\n    \"encryptMethodStarttlsLabel\": \"STARTTLS encryption\",\n    \"invalidEmailMessage\": \"Please enter a valid email address\",\n    \"invalidSmtpServerMessage\": \"Please enter a valid SMTP server address\",\n    \"invalidPortMessage\": \"Please enter a valid port number\",\n    \"feishuAppIdTooltip\": \"The app’s unique identifier.\",\n    \"feishuAppSecretTooltip\": \"The app secret generated by the platform when the app is created.\",\n    \"pleaseSelect\": \"Please select\",\n    \"fieldCannotBeEmpty\": \"{{label}} cannot be empty\",\n    \"jinaApiKeyLabel\": \"Jina API Key\",\n    \"siliconflowApiKeyLabel\": \"SiliconFlow API Key\",\n    \"uploadFile\": \"Upload File\",\n    \"organizeKnowledgeBase\": \"Organize Knowledge Base\",\n    \"个人知识库\": \"Personal Knowledge Base\",\n    \"知识库和文件内容检索\": \"Knowledge Base & File Search\",\n    \"知识库和文件内容检索desc\": \"Search content in organization knowledge bases, personal knowledge bases, and local uploaded files.\",\n    \"文件操作\": \"File Operations\",\n    \"文件操作desc\": \"A toolkit for browsing, searching, and editing the local file system.\",\n    \"获取所有文件和目录\": \"List All Files & Directories\",\n    \"获取所有文件和目录desc\": \"List all files and subdirectories within the specified directory.\",\n    \"获取文件详细信息\": \"Get File Details\",\n    \"获取文件详细信息desc\": \"Retrieve file name, size, path, word count, line count, and other details.\",\n    \"搜索文件\": \"Search Files\",\n    \"搜索文件desc\": \"Search for files and subdirectories in a specified directory.\",\n    \"读取文件内容\": \"Read File Content\",\n    \"读取文件内容desc\": \"Read the content of a local text file.\",\n    \"写入文件内容\": \"Write File Content\",\n    \"写入文件内容desc\": \"Append text to a file or create one if it does not exist.\",\n    \"替换文件指定行范围内容\": \"Replace File Line Range\",\n    \"替换文件指定行范围内容desc\": \"Replace a specified range of lines in a file.\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/bs.json",
    "content": "{\n  \"title\": \"BISHENG\",\n  \"bisheng\": \"{{bisheng}}\",\n  \"linsight\": \"{{linsight}}\",\n  \"linsightFullName\": \"{{linsightName}}\",\n  \"prompt\": \"ヒント\",\n  \"unsupportedFileType\": \"サポートされていないファイル形式: {{extensions}}\",\n  \"supportedFormatsWithImages\": \"サポートされているファイル形式は pdf（スキャン含む）、txt、docx、ppt、pptx、md、html、xls、xlsx、csv、doc、png、jpg、jpeg、bmp です。各ファイルの最大サイズは {{maxSize}}MB です。pdf はトレーサビリティ位置特定をサポートします。\",\n  \"supportedFormatsWithoutImages\": \"サポートされているファイル形式は pdf、txt、docx、doc、ppt、pptx、md、html、xls、xlsx、csv です。各ファイルの最大サイズは {{maxSize}}MB です。\",\n  \"example\": {\n    \"buttons\": \"ボタン一覧\",\n    \"button\": \"ボタン\",\n    \"badges\": \"バッジ一覧\",\n    \"badge\": \"バッジ\",\n    \"inputs\": \"入力欄\",\n    \"search\": \"検索\",\n    \"content\": \"コンテンツ\",\n    \"dropdown\": \"ドロップダウン\",\n    \"selectAFruit\": \"フルーツを選択\",\n    \"fruits\": \"フルーツ\",\n    \"apple\": \"りんご\",\n    \"banana\": \"バナナ\",\n    \"blueberry\": \"ブルーベリー\",\n    \"grapes\": \"ぶどう\",\n    \"pineapple\": \"パイナップル\",\n    \"slider\": \"スライダー\",\n    \"checkboxRadio\": \"チェックボックス・ラジオボタン\",\n    \"default\": \"デフォルト\",\n    \"one\": \"オプション1\",\n    \"tablePagination\": \"テーブル & ページネーション\",\n    \"invoiceListCaption\": \"最近の請求書一覧です。\",\n    \"invoice\": \"請求書番号\",\n    \"status\": \"ステータス\",\n    \"method\": \"支払方法\",\n    \"amount\": \"金額\",\n    \"total\": \"合計\",\n    \"calendar\": \"カレンダー\",\n    \"card\": \"カード\",\n    \"createProject\": \"プロジェクト作成\",\n    \"deployProjectDescription\": \"ワンクリックで新しいプロジェクトをデプロイします。\",\n    \"cancel\": \"キャンセル\",\n    \"deploy\": \"デプロイ\",\n    \"accordion\": \"アコーディオン\",\n    \"isItAccessible\": \"アクセシブルですか？\",\n    \"accordionAnswer1\": \"はい。WAI-ARIA デザインパターンに準拠しています。\",\n    \"isItStyled\": \"スタイルは適用されていますか？\",\n    \"accordionAnswer2\": \"はい。他のコンポーネントと統一されたデフォルトのスタイルが適用されています。\",\n    \"isItAnimated\": \"アニメーションはありますか？\",\n    \"accordionAnswer3\": \"はい。デフォルトでアニメーション付きですが、必要に応じて無効化できます。\",\n    \"switch\": \"スイッチ\"\n  },\n  \"theme\": {\n    \"colorConfig\": \"カラー設定\",\n    \"restoreDefault\": \"デフォルトに戻す\",\n    \"workflowBackgroundConfig\": \"ワークフロー背景設定\",\n    \"bishengLogo\": \"$t(bisheng) ロゴ\",\n    \"themeColorGradientEffect\": \"テーマカラーグラデーション効果\",\n    \"componentPreview\": \"コンポーネントプレビュー\",\n    \"primary\": \"テーマカラー\",\n    \"primaryForeground\": \"テーマ前景色\",\n    \"background\": \"背景色\",\n    \"foreground\": \"前景色\",\n    \"muted\": \"淡色背景\",\n    \"mutedForeground\": \"淡色前景\",\n    \"card\": \"カード背景色\",\n    \"cardForeground\": \"カード前景色\",\n    \"popover\": \"ポップオーバー背景色\",\n    \"popoverForeground\": \"ポップオーバー前景色\",\n    \"border\": \"ボーダー色\",\n    \"input\": \"入力欄ボーダー色\",\n    \"secondary\": \"セカンダリボタン背景色\",\n    \"secondaryForeground\": \"セカンダリボタン前景色\",\n    \"accent\": \"アクセント色\",\n    \"accentForeground\": \"アクセント前景色\",\n    \"destructive\": \"警告ボタン背景色\",\n    \"destructiveForeground\": \"警告ボタン前景色\",\n    \"ring\": \"フォーカスリング色\",\n    \"radius\": \"角丸半径\",\n    \"warning\": \"警告色\",\n    \"warningForeground\": \"警告前景色\",\n    \"blackButton\": \"ブラックボタン\"\n  },\n  \"login\": {\n    \"slogen\": \"便利・柔軟・信頼できるエンタープライズ向け大規模モデルアプリ開発プラットフォーム\",\n    \"bottomText\": \"文擎毕昇\",\n    \"account\": \"メールアドレス\",\n    \"password\": \"パスワード\",\n    \"confirmPassword\": \"パスワード確認\",\n    \"noAccountRegister\": \"アカウントがありませんか？新規登録\",\n    \"haveAccountLogin\": \"すでにアカウントをお持ちの方はこちら\",\n    \"loginButton\": \"ログイン\",\n    \"registerButton\": \"登録\",\n    \"document\": \"ドキュメント\",\n    \"pleaseEnterAccount\": \"アカウントを入力してください\",\n    \"pleaseEnterPassword\": \"パスワードを入力してください\",\n    \"accountTooShort\": \"アカウント名が短すぎます\",\n    \"passwordTooShort\": \"パスワードは8文字以上で入力してください\",\n    \"passwordError\": \"パスワードには大文字・小文字・数字・記号を含める必要があります！\",\n    \"passwordMismatch\": \"2回入力したパスワードが一致しません\",\n    \"registrationSuccess\": \"登録に成功しました。ログイン用のパスワードを入力してください\",\n    \"pleaseEnterCaptcha\": \"認証コードを入力してください\",\n    \"passwordExpired\": \"パスワードの有効期限が切れています。お早めに変更してください\",\n    \"otherMethods\": \"その他のログイン方法\"\n  },\n  \"menu\": {\n    \"user\": \"ユーザー\",\n    \"bookopen\": \"ヘルプドキュメント\",\n    \"github\": \"GitHub\",\n    \"workspace\": \"スペース\",\n    \"app\": \"会  話\",\n    \"skills\": \"構  築\",\n    \"knowledge\": \"知  識\",\n    \"evaluation\": \"評  価\",\n    \"annotation\": \"注  釈\",\n    \"board\": \"統  計\",\n    \"models\": \"モデ ル\",\n    \"system\": \"システム\",\n    \"log\": \"監査ログ\",\n    \"dataset\": \"データ\",\n    \"dashboard\": \"看  板\",\n    \"themeSwitch\": \"テーマ切替\",\n    \"document\": \"ドキュメント\",\n    \"logout\": \"ログアウト\",\n    \"logoutDescription\": \"ログアウトする\",\n    \"logoutContent\": \"ログアウトしてもよろしいですか？\",\n    \"forBestExperience\": \"より快適にご利用いただくため、PC からアクセスしてください\",\n    \"onlineDocumentation\": \"オンラインドキュメント\",\n    \"changePwd\": \"パスワード変更\"\n  },\n  \"system\": {\n    \"userManagement\": \"ユーザー管理\",\n    \"userGroupsM\": \"ユーザーグループ管理\",\n    \"roleManagement\": \"ロール管理\",\n    \"systemConfiguration\": \"システム設定\",\n    \"username\": \"ユーザー名\",\n    \"confirmDisable\": \"このユーザーを無効化しますか？\",\n    \"roleSelect\": \"ロール選択\",\n    \"userGroupsSel\": \"ユーザーグループ選択\",\n    \"roleList\": \"ロール一覧\",\n    \"userGroupList\": \"ユーザーグループ一覧\",\n    \"confirmText\": \"削除しますか\",\n    \"roleName\": \"ロール名\",\n    \"skillAuthorization\": \"スキル権限付与\",\n    \"knowledgeAuthorization\": \"ナレッジベース権限付与\",\n    \"boardAuthorization\": \"ボード権限\",\n    \"boardName\": \"ボード名\",\n    \"allowCreateBoard\": \"ボードの作成を許可\",\n    \"allowCreateBoardDesc\": \"有効化後、このロールは統計ボードで新しいボードを作成できます\",\n    \"searchAssistant\": \"アシスタントを検索\",\n    \"searchSkill\": \"スキルを検索\",\n    \"searchFlow\": \"フローを検索\",\n    \"searchKnowledge\": \"ナレッジベースを検索\",\n    \"searchTool\": \"ツールを検索\",\n    \"searchBoard\": \"ボードを検索\",\n    \"libraryName\": \"ナレッジベース名\",\n    \"flowName\": \"ワークフロー名\",\n    \"flowAuthorization\": \"ワークフロー権限付与\",\n    \"skillName\": \"スキル名\",\n    \"creator\": \"作成者\",\n    \"usePermission\": \"使用権限\",\n    \"managePermission\": \"管理権限\",\n    \"roleNamePrompt\": \"ロール名は 50 文字以内で入力してください\",\n    \"roleNameRequired\": \"ロール名は必須です\",\n    \"atLeastOneSpaceRequired\": \"少なくとも1つのスペースを選択してください\",\n    \"groupNameExists\": \"ユーザーグループ名は重複できません\",\n    \"groupNamePrompt\": \"ユーザーグループ名は 30 文字以内で入力してください\",\n    \"groupNameRequired\": \"ユーザーグループ名は必須です\",\n    \"roleNameExists\": \"ロール名はすでに存在します\",\n    \"parameterConfig\": \"パラメータ設定\",\n    \"language\": \"言語\",\n    \"spaceAuthorization\": \"スペース権限\",\n    \"spaceAuthorizationDesc\": \"このロールがアクセスできるスペースを選択\",\n    \"spaceName\": \"スペース名\",\n    \"workspace\": \"ワークスペース\",\n    \"adminSpace\": \"管理コンソール\",\n    \"assistantAuthorization\": \"アシスタント権限付与\",\n    \"assistantName\": \"アシスタント名\",\n    \"userList\": \"ユーザー一覧\",\n    \"userGroup\": \"ユーザーグループ\",\n    \"role\": \"ロール\",\n    \"searchUserGroups\": \"ユーザーグループ検索\",\n    \"searchUser\": \"ユーザー検索\",\n    \"searchRoles\": \"ロール検索\",\n    \"reset\": \"リセット\",\n    \"confirm\": \"確定\",\n    \"userGroupName\": \"ユーザーグループ名を入力\",\n    \"groupName\": \"ユーザーグループ名\",\n    \"admins\": \"管理者\",\n    \"flowControl\": \"ユーザーグループ全体のトラフィック制御\",\n    \"AssistantFlowCtrl\": \"アシスタントトラフィック制御\",\n    \"SkillFlowCtrl\": \"スキルトラフィック制御\",\n    \"flowCtrl\": \"ワークフロートラフィック制御\",\n    \"createdBy\": \"作成者\",\n    \"flowCtrlStrategy\": \"トラフィック制御戦略\",\n    \"limit\": \"制限あり\",\n    \"unlimited\": \"無制限\",\n    \"iconHover\": \"同時にユーザーグループ全体のトラフィック制御戦略の制約を受けます\",\n    \"maximum\": \"最大\",\n    \"perMinute\": \"同時オンライン会話\",\n    \"changeTime\": \"更新時間\",\n    \"deleteGroup\": \"削除後、【{{name}}】は存在しなくなります。削除しますか？\",\n    \"currentGroup\": \"現在のユーザーグループ\",\n    \"defaultGroup\": \"デフォルトグループ\",\n    \"resetPwd\": \"パスワードリセット\",\n    \"selectUser\": \"ユーザーを選択してください\",\n    \"selectGroup\": \"ユーザーグループを選択してください\",\n    \"selectRole\": \"ロールを選択してください\",\n    \"menuAuthorization\": \"メニュー権限\",\n    \"primaryMenu\": \"第1階層メニュー\",\n    \"viewPermission\": \"閲覧権限\",\n    \"themeColor\": \"テーマ配色\",\n    \"toolAuthorization\": \"ツール権限付与\",\n    \"createUser\": \"ユーザー作成\",\n    \"usernamePlaceholder\": \"今後このユーザー名でログインします。ユーザー名は変更できません。\",\n    \"initialPassword\": \"初期パスワード\",\n    \"passwordPlaceholder\": \"8文字以上、大文字・小文字・数字・記号の組み合わせが必要です\",\n    \"userGroupRoleSelection\": \"ユーザーグループ / ロール選択\",\n    \"usernameRequired\": \"ユーザー名は必須です\",\n    \"usernameMaxLength\": \"ユーザー名は最大30文字です\",\n    \"passwordRequirements\": \"初期パスワードは 8 文字以上で、大文字・小文字・数字・記号の組み合わせが必要です\",\n    \"roleRequired\": \"少なくとも1つのロールを選択してください\",\n    \"userCreationSuccess\": \"ユーザー作成に成功しました！ユーザー名と初期パスワードをクリップボードにコピーしました\"\n  },\n  \"skills\": {\n    \"manageTemplate\": \"スキルテンプレート管理\",\n    \"createNew\": \"新規スキル\",\n    \"customSkills\": \"カスタムスキル\",\n    \"chooseOnline\": \"オンラインバージョンを選択\",\n    \"executionSteps\": \"スキルは可視化されたフロー編成により、タスクの実行手順を明確化します\",\n    \"sceneTemplates\": \"利用および参考用にシーンテンプレートを提供しています\",\n    \"manageProjects\": \"このページでスキルのオンライン・オフライン、編集などを行います\",\n    \"skillSearch\": \"必要なスキルを検索\",\n    \"confirmDeleteSkill\": \"このスキルを削除しますか？\",\n    \"backToSkillList\": \"スキル一覧に戻る\",\n    \"skillTemplateManagement\": \"スキルテンプレート管理。テンプレートは全ユーザーが閲覧可能で、ドラッグによる並び替えや削除操作をサポートします。\",\n    \"templateName\": \"テンプレート名\",\n    \"templateDescription\": \"テンプレート説明\",\n    \"confirmText\": \"このスキルテンプレートを削除しますか？\",\n    \"skillSettings\": \"スキル設定\",\n    \"basicInfo\": \"基本情報\",\n    \"skillName\": \"スキル名\",\n    \"description\": \"説明\",\n    \"parameterInfo\": \"パラメータ情報\",\n    \"advancedConfiguration\": \"高度な設定\",\n    \"nextStep\": \"次へ：高度な設定\",\n    \"skillNameRequired\": \"スキル名を入力してください\",\n    \"skillNameTooLong\": \"スキル名が長すぎます。30文字以内にしてください\",\n    \"skillNameExists\": \"この名前はすでに存在します\",\n    \"skillDescRequired\": \"スキルの説明を入力してください\",\n    \"skillDescTooLong\": \"スキルの説明が長すぎます。200文字以内にしてください\",\n    \"errorTitle\": \"重要情報に誤りがあります\",\n    \"onlineFailure\": \"オンライン化に失敗しました\",\n    \"onlineSuccessful\": \"オンライン化に成功しました\",\n    \"custom\": \"カスタム\",\n    \"skillTemplate\": \"スキルテンプレート\",\n    \"skillTemplateChoose\": \"ここからテンプレートを選んで開始するか、高度なカスタムテンプレートを作成できます\",\n    \"createTemplate\": \"テンプレート作成\",\n    \"createSuccessTitle\": \"スキル作成に成功しました\",\n    \"createFailureTitle\": \"作成に失敗しました\",\n    \"createdBy\": \"作成ユーザー\",\n    \"offline\": \"オフライン\",\n    \"online\": \"オンライン\",\n    \"guideWords\": \"ガイド文\",\n    \"currentVersion\": \"現在のバージョン:\",\n    \"importLocal\": \"ローカルコンポーネントをインポート\",\n    \"save\": \"保存\",\n    \"import\": \"インポート\",\n    \"export\": \"エクスポート\",\n    \"code\": \"コード\",\n    \"simplify\": \"簡略化\",\n    \"saveVersion\": \"新しいバージョンとして保存\",\n    \"deleteOrNot\": \"削除しますか\",\n    \"version\": \"バージョン\",\n    \"saveSuccessful\": \"保存に成功しました\",\n    \"supportVersions\": \"複数のバージョンブランチに分けて開発し、バージョン間の比較が可能です。\",\n    \"guideQuestions50\": \"ガイド質問は最大 50 文字までです\",\n    \"chatHistoryMaxToken\": \"チャット履歴の最大 token 数は整数でなければなりません\",\n    \"promptWords1000\": \"オープニング文は最大 1000 文字までです\",\n    \"contactAdmin\": \"管理者に連絡してアシスタントをオンライン化してください\",\n    \"deleteSure\": \"このツールを削除しますか？\",\n    \"modelRequired\": \"モデルが未設定です\",\n    \"avatar\": \"スキルアイコン\",\n    \"switchTo\": \"切り替え\"\n  },\n  \"chat\": {\n    \"newChat\": \"新しい会話\",\n    \"chooseOne\": \"1つ選択\",\n    \"dialogue\": \"対話\",\n    \"start\": \"開始\",\n    \"wenqingruijian\": \"文擎睿見\",\n    \"inputPlaceholder\": \"質問を入力してください\",\n    \"uploadFileTooltip\": \"ファイルをアップロード\",\n    \"sendTooltip\": \"送信\",\n    \"forms\": \"フォーム\",\n    \"skillTempsTitle\": \"スキル選択\",\n    \"skillTempsDesc\": \"使用したいオンラインスキルを選択してください\",\n    \"networkError\": \"ネットワーク接続エラーが発生しました。以下の方法をお試しください\",\n    \"networkErrorList1\": \"操作を早くしすぎないでください\",\n    \"networkErrorList2\": \"ページをリフレッシュする\",\n    \"networkErrorList3\": \"バックエンドが起動しているか確認する\",\n    \"buildError\": \"一部の設定が不足しているようです\",\n    \"connectionbreakTip\": \"接続が異常終了しました：\",\n    \"connectionbreak\": \"ネットワークが切断されました！\",\n    \"copyTip\": \"内容をコピーしました\",\n    \"noAccess\": \"権限不足のため、閲覧権限のない内容は回答から除外されています\",\n    \"sourceFromQaLibrary\": \"この回答は既存のQ&Aライブラリに基づいています。\",\n    \"source\": \"参照元\",\n    \"file\": \"ファイル\",\n    \"filePrsing\": \"ファイルを解析中\",\n    \"uploading\": \"アップロード中...\",\n    \"fileParsingShort\": \"解析中...\",\n    \"uploadingShort\": \"アップロード中...\",\n    \"fileUploadFailed\": \"ファイルのアップロードに失敗しました: {{name}}\",\n    \"fileExceedRemoved\": \"ファイル：{{name}} は {{size}}M を超えているため削除されました\",\n    \"fileTypeNotAllowed\": \"サポートされていないファイル形式：{{type}}\",\n    \"uploadFailedCheckFormat\": \"アップロードに失敗しました。ファイル形式を確認してください\",\n    \"sourceTooltip\": \"出典段落\",\n    \"filterLabel\": \"ラベルでフィルター\",\n    \"tooltipText\": \"システムは回答に基づき自動でキータグを生成します。タグの追加・削除も可能で、タグに基づいて各ファイルおよび段落との関連度を計算します。\",\n    \"customLabel\": \"カスタム\",\n    \"addCustomLabel\": \"+カスタム\",\n    \"sourceDocumentsLabel\": \"参照ドキュメント\",\n    \"downloadPDFTooltip\": \"二重構造PDFをダウンロード\",\n    \"downloadOriginalTooltip\": \"元ファイルをダウンロード\",\n    \"noMatchedFilesMessage\": \"一致するソースファイルはありません\",\n    \"fileStorageFailure\": \" ファイルパスが無効です！\",\n    \"confirmDeleteChat\": \"この会話を削除しますか？\",\n    \"roundOver\": \"このラウンドは終了しました\",\n    \"chatDialogTip\": \"プロンプトテンプレートで定義した入力変数を設定します。エージェントやチェーンと対話します。\",\n    \"feedback\": \"フィードバック\",\n    \"feedbackRequired\": \"フィードバック内容は空にできません\",\n    \"dialogueSelection\": \"会話選択\",\n    \"chooseSkillOrAssistant\": \"使用したいオンラインスキルまたはアシスタントを選択してください\",\n    \"search\": \"検索\",\n    \"recommendationQuestions\": \"おすすめの質問\",\n    \"historicalMessages\": \"ここまでが履歴メッセージです\",\n    \"clickDownload\": \"クリックしてダウンロード\",\n    \"searchAssistantOrSkill\": \"アプリケーションを検索\",\n    \"operationTips\": \"操作ヒント：左側で表示するラベルを選択し、右側でドラッグして並べ替えます\",\n    \"selected\": \"選択済み\",\n    \"pleaseSelectAnApp\": \"アプリケーションを選択してください\",\n    \"allLabels\": \"すべてのラベル\",\n    \"searchLabels\": \"ラベル検索\",\n    \"confirmed\": \"確定済み\",\n    \"confirm\": \"確定\",\n    \"runNewWorkflow\": \"新しい会話を開始\",\n    \"chatEndMessage\": \"この会話は終了しました\"\n  },\n  \"model\": {\n    \"addSuccess\": \"追加に成功しました\",\n    \"advancedParamsConfig\": \"高度なパラメータ設定\",\n    \"asr\": \"音声認識(ASR)\",\n    \"back\": \"戻る\",\n    \"cancel\": \"キャンセル\",\n    \"cannotBeEmpty\": \"空にできません\",\n    \"dailyCallLimit\": \"1日の呼び出し上限\",\n    \"delete\": \"削除\",\n    \"deleteConfirmation\": \"このサービスプロバイダを削除してよろしいですか？\",\n    \"deleteModelConfirmation\": \"このモデルを削除してよろしいですか？\",\n    \"deleteSuccess\": \"削除に成功しました\",\n    \"duplicateServiceProviderName\": \"サービスプロバイダ名はすでに存在します\",\n    \"duplicateServiceProviderNameValidation\": \"サービスプロバイダ名は必須で、100文字以内にしてください\",\n    \"embedding\": \"埋め込み(Embedding)\",\n    \"errorInvalidJsonFormat\": \"エラー：JSON フォーマットが無効です。入力内容を確認してください\",\n    \"guiJiLiuDong\": \"硅基流动\",\n    \"huoShanYinQing\": \"火山引擎\",\n    \"interModelFormat\": \"インターフェースモデルフォーマット\",\n    \"aliYunBaiLian\": \"アリクラウド 百練\",\n    \"max100Characters\": \"最大 100 文字\",\n    \"model\": \"モデル\",\n    \"modelDuplicate\": \"モデル名が重複しています\",\n    \"modelNameEmpty\": \"モデル名は必須です\",\n    \"modelNameLength\": \"モデル名は100文字以内で入力してください\",\n    \"modelNameTooltip\": \"このサービスプロバイダでの具体的なモデル名\",\n    \"modelNameDuplicate\": \"モデル名はすでに存在します\",\n    \"modelNameValidation\": \"モデル名は必須で、100文字以内にしてください\",\n    \"modelStatusChecking\": \"モデルステータスを確認中\",\n    \"notBeEmpty\": \"空欄にはできません\",\n    \"pasteAdvancedParamsHere\": \"下のテキストボックスに高度なパラメータ設定を貼り付けまたは入力してください\",\n    \"qianFan\": \"百度 千帆\",\n    \"rerank\": \"リランキング(Rerank)\",\n    \"save\": \"保存\",\n    \"saveSuccess\": \"保存に成功しました\",\n    \"serviceProviderName\": \"サービスプロバイダ名\",\n    \"serviceProviderNameTooltip\": \"このサービスプロバイダを識別しやすいように名前をつけてください\",\n    \"silicon\": \"硅基流动\",\n    \"tengXunYun\": \"Tencent Cloud\",\n    \"timesPerDay\": \"回/日\",\n    \"tts\": \"音声合成(TTS)\",\n    \"updateSuccess\": \"更新に成功しました\",\n    \"voiceType\": \"音声タイプ\",\n    \"voiceTypeRequired\": \"音声タイプは必須項目です\",\n    \"voiceTypeTooltip\": \"音声合成で使用する音声タイプを選択してください\",\n    \"webSearch\": \"Web 検索\",\n    \"zhiPuAI\": \"智譜 AI\",\n    \"xunFeiXingHuo\": \"訊飛 星火\",\n    \"yueZhiAnMian\": \"月之暗面\",\n    \"baiDuQianFan\": \"百度 千帆\",\n    \"visitOfficialWebsiteToViewAvailableModels\": \"公式サイトで利用可能なモデルを確認してください\",\n    \"modelManagement\": \"モデル管理\",\n    \"modelFineTune\": \"モデル微調整\",\n    \"modelConfiguration\": \"モデル設定\",\n    \"modelCollectionCaption\": \"モデルコレクション\",\n    \"modelName\": \"モデル名\",\n    \"status\": \"ステータス\",\n    \"systemModelSettings\": \"システムモデル設定\",\n    \"addModel\": \"モデル追加\",\n    \"refresh\": \"更新\",\n    \"serviceProvider\": \"モデルサービスプロバイダ\",\n    \"actions\": \"操作\",\n    \"modelType\": \"モデルタイプ\",\n    \"onlineOfflineOperation\": \"オンライン / オフライン操作\",\n    \"available\": \"利用可能\",\n    \"abnormal\": \"異常\",\n    \"unknown\": \"不明\",\n    \"empty\": \"データがありません\",\n    \"gpuResourceUsageTitle\": \"GPU リソース使用状況\",\n    \"jsonFormatError\": \"JSON フォーマットエラー\"\n  },\n  \"finetune\": {\n    \"all\": \"すべて\",\n    \"successful\": \"成功\",\n    \"inProgress\": \"進行中\",\n    \"failedAborted\": \"失敗/中止\",\n    \"modelName\": \"モデル名\",\n    \"createTrainingTask\": \"トレーニングタスク作成\",\n    \"rtService\": \"FTサービス\",\n    \"rtServiceManagement\": \"FTサービス管理\",\n    \"createTime\": \"作成時間\",\n    \"noData\": \"データがありません\",\n    \"trainingInProgress\": \"トレーニング中\",\n    \"trainingFailed\": \"トレーニング失敗\",\n    \"taskAborted\": \"タスク中止\",\n    \"trainingSuccess\": \"トレーニング成功\",\n    \"publishSuccess\": \"公開成功\",\n    \"selectModel\": \"モデルを選択して詳細を表示\"\n  },\n  \"flow\": {\n    \"unsavedChangesConfirmation\": \"未保存の変更があります。本当に離れますか？\",\n    \"leave\": \"離れる\",\n    \"leaveAndSave\": \"保存して離れる\",\n    \"simplifyConfig\": \"設定を簡略化\",\n    \"simplify\": \"簡略化\",\n    \"notifications\": \"通知\",\n    \"exit\": \"終了\",\n    \"import\": \"インポート\",\n    \"export\": \"エクスポート\",\n    \"code\": \"コード\",\n    \"searchComponent\": \"コンポーネント検索\",\n    \"knowledgeBaseSelection\": \"ナレッジベース選択\",\n    \"searchKnowledgeBase\": \"ナレッジベース検索\",\n    \"minimumParamSetDescription\": \"ここでスキルに必要な最小パラメータセットを設定できます\",\n    \"paramList\": \"パラメータ一覧\",\n    \"saveConfig\": \"設定を保存\",\n    \"componentLabel\": \"コンポーネント\",\n    \"aliasLabel\": \"別名\",\n    \"editAlias\": \"別名を編集\",\n    \"parameterLabel\": \"パラメータ\",\n    \"notification\": \"メッセージ\",\n    \"noNewNotifications\": \"新しい通知はありません\",\n    \"skillName\": \"スキル名\",\n    \"nameTooLong\": \"名前が長すぎます\",\n    \"skillDescription\": \"スキル説明\",\n    \"enterVarName\": \"変数名を入力してください\",\n    \"varNameExists\": \"変数名が重複しています\",\n    \"text\": \"テキスト\",\n    \"dropdown\": \"ドロップダウン\",\n    \"maxLength\": \"最大長\",\n    \"options\": \"オプション\",\n    \"variableName\": \"変数名\",\n    \"varOptionRequired\": \"オプションの内容を入力してください\",\n    \"optionRepeated\": \"オプションが重複しています\",\n    \"incorrectIdFormatMessage\": \"ID の形式が誤っています（英数字からなる5桁の文字列）\",\n    \"idAlreadyExistsMessage\": \"この ID はすでに存在します\"\n  },\n  \"lib\": {\n    \"knowledgeBaseId\": \"ナレッジベースID\",\n    \"enterLibraryName\": \"ナレッジベース名を入力してください\",\n    \"libraryNameLimit\": \"ナレッジベース名は 30 文字以内で入力してください\",\n    \"selectModel\": \"モデルを選択してください\",\n    \"nameExists\": \"この名前はすでに存在します\",\n    \"descriptionLimit\": \"ナレッジベース説明は 200 文字以内で入力してください\",\n    \"createLibrary\": \"ナレッジベース作成\",\n    \"libraryName\": \"ナレッジベース名\",\n    \"description\": \"説明\",\n    \"model\": \"モデル\",\n    \"fileData\": \"ドキュメントナレッジベース\",\n    \"structuredData\": \"構造化データ\",\n    \"qaData\": \"QAナレッジベース\",\n    \"libraryCollection\": \"ナレッジベース一覧\",\n    \"createUser\": \"ユーザー作成\",\n    \"details\": \"詳細\",\n    \"confirmDeleteLibrary\": \"このナレッジベースを削除しますか？\",\n    \"copy\": \"コピー\",\n    \"copying\": \"コピー中\",\n    \"searchPlaceholder\": \"ナレッジベースまたはファイル名\",\n    \"desc\": \"ナレッジベース説明\",\n    \"knowledgeBaseDescription\": \"ナレッジベースの説明を入力してください\",\n    \"creationComplete\": \"作成完了\",\n    \"embeddingModelSelection\": \"ナレッジベース埋め込みモデル選択\"\n  },\n  \"evaluation\": {\n    \"id\": \"タスクID\",\n    \"filename\": \"テストファイル名\",\n    \"skillAssistant\": \"アプリケーション\",\n    \"status\": \"ステータス\",\n    \"score\": \"評価スコア\",\n    \"createDate\": \"作成日\",\n    \"download\": \"ダウンロード\",\n    \"confirmDeleteEvaluation\": \"この評価タスクを削除しますか？\",\n    \"createTitle\": \"新規タスク\",\n    \"selectLabel\": \"評価対象アプリケーション：\",\n    \"selectPlaceholder\": \"選択してください\",\n    \"selectInputPlaceholder\": \"名前で検索してください\",\n    \"dataLabel\": \"テストデータ：\",\n    \"fileExpandName\": \"サポート拡張子：\",\n    \"downloadTemplate\": \"テンプレートファイルをダウンロード\",\n    \"promptLabel\": \"評価プロンプト：\",\n    \"enterExecType\": \"評価するアプリケーションタイプを選択してください\",\n    \"enterFile\": \"テストデータをアップロードしてください\",\n    \"fileSizeLimit\": \"ファイルサイズは 10M 以内にしてください\",\n    \"enterPrompt\": \"評価プロンプトは空にできません\",\n    \"evaluationCollection\": \"評価一覧\",\n    \"tooltip\": \"このプロンプトは ground truth と answer から要点を抽出するために使用します。特別な要件がなければ変更しないでください。\",\n    \"create\": \"作成\",\n    \"cancel\": \"キャンセル\",\n    \"precision\": \"適合率\",\n    \"recall\": \"再現率\",\n    \"onlyCsvAllowed\": \"csv 形式のファイルのみアップロード可能です\",\n    \"excelNotSupported\": \"Excel 形式はサポートしていません。CSV ファイルをアップロードしてください\",\n    \"onlyCsvSupported\": \"CSV 形式のみサポートしています\",\n    \"selectWorkflow\": \"ワークフローを選択してください\",\n    \"selectSkill\": \"スキルを選択してください\",\n    \"selectAssistant\": \"アシスタントを選択してください\",\n    \"selectVersion\": \"バージョンを選択してください\"\n  },\n  \"code\": {\n    \"editPythonCodeDescription\": \"ここで Python コードを編集します。このコードスニペットはモジュールのインポートと1つの関数定義を受け付けます。関数は文字列を返すようにしてください。\",\n    \"editCode\": \"コード編集\",\n    \"codeReadyToRun\": \"コードは実行可能です\",\n    \"functionError\": \"関数内にエラーがあります\",\n    \"importsError\": \"インポートに誤りがあります\",\n    \"errorOccurred\": \"エラーが発生しました。再試行してください\",\n    \"codeError\": \"このコードに問題があります。以下を確認してください\",\n    \"checkAndSave\": \"チェック & 保存\",\n    \"export\": \"エクスポート\",\n    \"exportToJSON\": \"スキルを JSON ファイルにエクスポート\",\n    \"keyInformationMissing\": \"いくつかの重要情報が未入力です: \",\n    \"skillNameMissing\": \"スキル名を入力してください\",\n    \"useOwnAPIKeys\": \"自分の API キーを使用\",\n    \"exportSkill\": \"スキルをエクスポート\",\n    \"uploadFile\": \"ファイルをアップロード\",\n    \"clickOrDragHere\": \"クリックまたはファイルをドラッグしてアップロード\",\n    \"dropFileHere\": \"ここにファイルをドロップしてアップロード\",\n    \"delimiter\": \"区切り文字（複数の場合は ; で分割）\",\n    \"splitLength\": \"テキスト分割長さ\",\n    \"smartSplit\": \"セマンティック自動分割\",\n    \"manualSplit\": \"手動分割設定\",\n    \"delimiterPlaceholder\": \"区切り記号\",\n    \"splitSizePlaceholder\": \"分割サイズ\",\n    \"complete\": \"完了\",\n    \"setSplitSize\": \"ファイルの分割サイズを設定してください\",\n    \"selectFileToUpload\": \"まずファイルを選択してアップロードしてください\",\n    \"file\": \"ファイル\",\n    \"sizeExceedsLimit\": \"{{size}}M を超えているため削除しました\",\n    \"editDictionary\": \"辞書編集\",\n    \"exportCodeDialogTip\": \"コードを生成し、フローを外部アプリケーションに統合します（このページを開く前にスキルをビルドしてください）。\",\n    \"chunkOverlap\": \"テキスト分割の重なり長さ\"\n  },\n  \"report\": {\n    \"reportTemplate\": \"レポートテンプレート\",\n    \"reportDescription\": \"レポート生成の説明...\",\n    \"newButton\": \"新規\",\n    \"importButton\": \"インポート\",\n    \"start\": \"開始\",\n    \"formSettings\": \"フォーム設定\",\n    \"requiredLabel\": \"必須\",\n    \"isRequired\": \"必須項目です\",\n    \"fileRequired\": \"現在ファイルが空です\",\n    \"selectComponent\": \"コンポーネントを選択\",\n    \"varLength\": \"長さは以下を超えてはいけません\",\n    \"requiredField\": \"{{label}} は必須項目で、空にできません。\"\n  },\n  \"status\": {\n    \"1004\": \"このスキルは削除されました\",\n    \"1008\": \"現在のアシスタントまたはスキルはオンラインではないため、直接対話できません\",\n    \"1005\": \"\"\n  },\n  \"importLinsight\": {\n    \"title\": \"実行記録からガイドマニュアルをインポート\",\n    \"searchPlaceholder\": \"ガイドマニュアルを検索\",\n    \"loading\": \"読み込み中...\",\n    \"noRecords\": \"実行記録がありません\",\n    \"noMatchingRecords\": \"一致する記録がありません\",\n    \"columns\": {\n      \"selectAll\": \"すべて選択\",\n      \"name\": \"名称\",\n      \"createTime\": \"作成時間\",\n      \"createUser\": \"作成ユーザー\",\n      \"rating\": \"評価\"\n    },\n    \"pagination\": {\n      \"totalRecords\": \"合計 {{total}} 件の記録\",\n      \"goToPage\": \"移動\",\n      \"page\": \"ページ\"\n    },\n    \"selectedCount\": \"{{count}} 件選択済み\",\n    \"batchImport\": \"一括インポート\",\n    \"preview\": {\n      \"title\": \"プレビュー\",\n      \"noSelection\": \"左側から記録を選択してプレビューしてください\",\n      \"description\": \"説明\"\n    },\n    \"importCurrent\": \"現在のガイドマニュアルをインポート\",\n    \"duplicateDialog\": {\n      \"title\": \"SOP 重複警告\",\n      \"description\": \"以下の SOP はすでにライブラリに存在します。インポート時に上書きしますか？\",\n      \"noDuplicateNames\": \"重複している SOP 名は取得されませんでした\",\n      \"saveAsNew\": \"上書きせず、新しい SOP として保存\",\n      \"savingAsNew\": \"新しい SOP として保存中...\",\n      \"overwrite\": \"上書き\",\n      \"overwriting\": \"SOP を上書き中...\"\n    },\n    \"success\": \"インポートに成功しました\",\n    \"error\": \"インポートに失敗しました\",\n    \"guidelineManual\": \"ガイドマニュアル\",\n    \"noRunningResult\": \"実行結果なし\",\n    \"runningResult\": \"実行結果\",\n    \"name\": \"名称\",\n    \"creator\": \"作成者\",\n    \"description\": \"説明\",\n    \"featured\": \"おすすめにするか\",\n    \"notFeatured\": \"おすすめではありません\",\n    \"actions\": \"操作\",\n    \"reset\": \"リセット\",\n    \"apply\": \"確認\",\n    \"edit\": \"編集\",\n    \"delete\": \"削除\",\n    \"noRatings\": \"評価がありません\",\n    \"noSOPFound\": \"関連する SOP は見つかりませんでした\",\n    \"goTo\": \"移動\",\n    \"pages\": \"ページ\"\n  },\n  \"sopForm\": {\n    \"editManual\": \"ガイドマニュアル編集\",\n    \"createManual\": \"ガイドマニュアル作成\",\n    \"manualName\": \"ガイドマニュアル名\",\n    \"namePlaceholder\": \"ガイドマニュアル名を入力してください\",\n    \"description\": \"説明\",\n    \"descriptionPlaceholder\": \"ガイドマニュアルの説明を入力してください\",\n    \"detailedContent\": \"詳細内容\",\n    \"contentPlaceholder\": \"SOP の詳細内容を入力してください\",\n    \"cancel\": \"キャンセル\",\n    \"saving\": \"保存中...\",\n    \"save\": \"保存\",\n    \"nameRequired\": \"名称は空にできません\",\n    \"contentRequired\": \"詳細内容は空にできません\",\n    \"nameMaxLength\": \"名称は {{max}} 文字以内で入力してください\",\n    \"contentMaxLength\": \"詳細内容は {{max}} 文字以内で入力してください\",\n    \"importFailed\": \"SOP のインポートに失敗しました\",\n    \"contentTooLong\": \"内容が長すぎます\",\n    \"saveFailed\": \"保存に失敗しました\",\n    \"manual\": \"ガイドマニュアル\",\n    \"result\": \"実行結果\",\n    \"noResult\": \"実行結果なし\",\n    \"onlyFeaturedWithResult\": \"おすすめに設定できるのは実行結果を含むケースのみです\",\n    \"featuredCase\": \"おすすめケース\",\n    \"setAsFeaturedCase\": \"おすすめケースに設定\",\n    \"failToSetFeaturedCase\": \"SOP をおすすめケースに設定できませんでした\"\n  },\n  \"toolSelector\": {\n    \"selectedTools\": \"選択済みツール\",\n    \"noToolsSelected\": \"まだツールが選択されていません\",\n    \"selectToolsPrompt\": \"右側の全ツールから選択してください\",\n    \"allTools\": \"全ツール\",\n    \"searchPlaceholder\": \"ツール検索...\",\n    \"builtinTools\": \"内蔵ツール\",\n    \"apiTools\": \"API ツール\",\n    \"mcpTools\": \"MCP ツール\",\n    \"noToolsFound\": \"該当するツールが見つかりません\"\n  },\n  \"chatConfig\": {\n    \"linsightPlaceholder\": \"$t(linsight)は複雑なタスクを得意とするエージェントアシスタントです。タスク目標のほか、どのように実現してほしいかを日常的な言葉で説明すると、より期待に近い結果が得られます。\",\n    \"linsightTools\": \"$t(linsight)で利用可能なツール\",\n    \"linsightManual\": \"$t(linsight) ガイドマニュアルライブラリ\",\n    \"searchManual\": \"ガイドマニュアルを検索\",\n    \"importFromRecord\": \"実行記録からインポート\",\n    \"importFromLocal\": \"ローカルファイルからインポート\",\n    \"createManual\": \"ガイドマニュアル作成\",\n    \"batchDelete\": \"一括削除\",\n    \"batchDeleteConfirm\": \"一括削除確認\",\n    \"batchDeleteDesc\": \"選択した SOP を一括削除しますか？\",\n    \"confirmDelete\": \"削除を確認\",\n    \"importManual\": \"ガイドマニュアルをインポート\",\n    \"uploadFile\": \"ファイルをアップロードしてください\",\n    \"exampleFile\": \"サンプルファイル\",\n    \"exampleFileName\": \"ユーザーガイドマニュアルフォーマット例.xlsx\",\n    \"importing\": \"インポート中...\",\n    \"fileFormatError\": \"ファイル形式が要件を満たしていません\",\n    \"gotIt\": \"了解しました\",\n    \"savePreview\": \"保存してプレビュー\",\n    \"save\": \"保存\",\n    \"cancel\": \"キャンセル\",\n    \"submit\": \"送信\",\n    \"workstationEntry\": \"Lingsi エントリー\",\n    \"iconUpload\": \"アイコンアップロード\",\n    \"sidebarIcon\": \"左サイドバーアイコン\",\n    \"assistantIcon\": \"ウェルカム画面アイコン & 対話アバター\",\n    \"sidebarSlogan\": \"左サイドバーのスローガン\",\n    \"welcomeMessage\": \"ウェルカムメッセージ\",\n    \"welcomeMessagePlaceholder\": \"私は $t(bisheng) です。お会いできてうれしいです！\",\n    \"functionDescription\": \"機能説明\",\n    \"functionDescriptionPlaceholder\": \"コード作成、ファイル読込、さまざまなクリエイティブな文章作成などをお手伝いできます。タスクを私に任せてください～\",\n    \"inputPlaceholder\": \"入力欄のヒント\",\n    \"inputPlaceholderPlaceholder\": \"xx にメッセージを送る\",\n    \"appCenterWelcome\": \"アプリセンターのウェルカムメッセージ\",\n    \"appCenterWelcomePlaceholder\": \"$t(bisheng) のエージェントを探索しましょう\",\n    \"appCenterDescription\": \"ここで必要なエージェントを選び、業務や生産に活用できます。\",\n    \"modelManagement\": \"対話モデル管理\",\n    \"maxTokens\": \"ナレッジベース / Web 検索結果の最大文字数\",\n    \"maxTokensPlaceholder\": \"モデルがサポートする最大文字数\",\n    \"systemPrompt\": \"システムプロンプト\",\n    \"systemPromptPlaceholder\": \"モデルシステムプロンプトを入力してください\",\n    \"webSea\": \"Web 検索\",\n    \"knowledgeBase\": \"個人ナレッジ\",\n    \"knowledgeBasePrompt\": \"個人ナレッジベース検索プロンプト\",\n    \"fileUpload\": \"ファイルアップロード\",\n    \"fileUploadPrompt\": \"ファイルアップロードプロンプト\",\n    \"webSearchConfig\": \"Web 検索設定\",\n    \"saveSuccess\": \"設定の保存に成功しました\",\n    \"saveFailed\": \"保存に失敗しました\",\n    \"requestFailed\": \"リクエストに失敗しました。しばらくしてから再試行してください\",\n    \"sortFailed\": \"並び替えに失敗しました。しばらくしてから再試行してください\",\n    \"initLoadFailed\": \"初期データの読み込みに失敗しました\",\n    \"submitSuccess\": \"送信に成功しました\",\n    \"uploadXlsxTip\": \".xlsx 形式のファイルをアップロードしてください！\",\n    \"fileExtMustBeXlsx\": \"ファイル拡張子は .xlsx でなければなりません！\",\n    \"sopUpdated\": \"SOP の更新に成功しました\",\n    \"sopCreated\": \"SOP の作成に成功しました\",\n    \"notFoundSop\": \"編集対象の SOP が見つかりません\",\n    \"deleteConfirmTitle\": \"削除確認\",\n    \"deleteConfirmDesc\": \"この SOP を削除しますか？\",\n    \"deleteSuccess\": \"SOP の削除に成功しました\",\n    \"deleteFailed\": \"削除に失敗しました\",\n    \"batchDeleteSuccess\": \"{{count}} 個の SOP を削除しました\",\n    \"webSearch\": {\n      \"engine\": \"Web 検索エンジン\",\n      \"config\": \"Web 検索ツール設定\",\n      \"bing\": \"Bing 検索\",\n      \"bocha\": \"博查 websearch\",\n      \"jina\": \"Jina 深層検索\",\n      \"serp\": \"Serp API\",\n      \"tavily\": \"Tavily\",\n      \"cloudsway\": \"cloudsway\",\n      \"searXNG\": \"searXNG\",\n      \"serverUrl\": \"サーバーアドレス\",\n      \"serverUrlPlaceholder\": \"searXNG をデプロイしたアクセスアドレスを入力してください。例：http://localhost:8080\"\n    },\n    \"errors\": {\n      \"maxCharacters\": \"最大 {{count}} 文字までです\",\n      \"atLeastOneModel\": \"少なくとも1つのモデルを追加してください\",\n      \"modelNameRequired\": \"モデルの表示名は空にできません\",\n      \"modelRequired\": \"モデルは必須です\",\n      \"modelDuplicate\": \"モデルは重複できません\",\n      \"voiceTypeRequired\": \"音声タイプは空にできません\",\n      \"modelNameDuplicate\": \"表示名は重複できません\",\n      \"required\": \"空にできません\"\n    },\n    \"systemPrompt2\": \"# ロール設定\\n- あなたは $t(bisheng) インテリジェント Q&A アシスタントです。ユーザーに対し、**情報照会、コンテンツ作成、学習指導、プログラミング支援、生活アドバイス**、およびその他の形式のサポートを提供することを目的としています。\\n- 常にフレンドリーでプロフェッショナル、忍耐強く、役に立つ姿勢を維持し、明確で正確かつ分かりやすい言葉でユーザーとコミュニケーションをとってください。\\n# 行動規範\\n1. **ロールの一貫性:** 常に $t(bisheng) インテリジェント Q&A アシスタントとしてユーザーと対話し、他の無関係な役割やキャラクターになりすまさないでください。\\n2. **情報の正確性:** 正確で信頼できる情報の提供に努めてください。内容に確信が持てない場合はその旨を明記し、ユーザーを誤解させないようにしてください。\\n3. **プライバシー保護:** ユーザーの個人情報を積極的に要求したり記録したりしないでください。ユーザーのプライバシーデータや機密情報を保存または開示しないでください。\\n4. **コンテンツの安全性:** 法令、規制、および倫理基準を遵守してください。政治、違法行為、暴力、ポルノ、差別、憎悪、またはその他の不適切な内容を含むコンテンツを生成または拡散しないでください。\\n5. **中立性と客観性:** 議論の分かれるトピックについては中立を保ち、特定の側に偏ることなく複数の視点を提供してください。\\n6. **適切なガイダンス:** ユーザーの質問が曖昧または不完全な場合は、適切に明快にするよう誘導してください。ただし、強制したり不快感を与えたりしないでください。\\n# 言語とスタイル:\\n- ユーザーが使用する言語タイプ、または特定のニーズに基づいてコミュニケーションを行ってください。\\n- 言語スタイルは、**簡潔明快、丁寧かつフレンドリー、理解しやすい**ものであるべきです。ユーザーの背景やクエリの内容に応じて表現方法を調整してください。\\n- 親しみやすさを高めるために **絵文字**（😊、👍 など）を適切に使用しても構いませんが、プロフェッショナルなイメージを維持するため、過度な使用は避けてください。\\n# 時間情報\\n現在の時刻は {cur_date} です。\\n# ECharts チャートレンダリングのサポート\\n回答内でチャートをレンダリングする必要がある場合は、```echarts で始まるコードブロックを使用し、その中に設定を記述してください。\\n例：\\n```echarts\\n{{\\n  \\\"title\\\": {{\\n    \\\"text\\\": \\\"ECharts 入門例\\\"\\n  }},\\n  \\\"tooltip\\\": {{}},\\n  \\\"legend\\\": {{\\n    \\\"data\\\": [\\\"売上\\\"]\\n  }},\\n  \\\"xAxis\\\": {{\\n    \\\"data\\\": [\\\"シャツ\\\", \\\"ウールセーター\\\", \\\"シフォンブラウス\\\", \\\"パンツ\\\", \\\"ハイヒール\\\", \\\"靴下\\\"]\\n  }},\\n  \\\"yAxis\\\": {{}},\\n  \\\"series\\\": [{{\\n    \\\"name\\\": \\\"売上\\\",\\n    \\\"type\\\": \\\"bar\\\",\\n    \\\"data\\\": [5, 20, 36, 10, 10, 20]\\n  }}]\\n}}\\n```\",\n    \"webSearchPrompt\": \"# 以下は、ユーザーから送信されたメッセージに基づく検索結果です:\\n{search_results}\\n検索結果の各項目は [webpage X begin]...[webpage X end] 形式で示され、X は各記事のインデックス番号です。必要に応じて文末に引用を付けてください。回答中の該当部分には、[citation:X] 形式でコンテキストを引用してください。1文が複数のコンテキストに基づく場合は、cite[3]:cite[5] のようにすべて列挙してください。引用を最後にまとめて出すのではなく、回答の該当部分ごとに記載してください。\\n回答時には以下の点に注意してください：\\n- 今日の日付は {cur_date} です。\\n- 検索結果のすべてがユーザーの質問と密接に関連するとは限らないため、質問内容に応じて結果を精査・選別してください。\\n- 列挙形式の質問（例：利用可能なすべてのフライト情報を列挙など）の場合、回答は 10 項目以内に抑え、完全な情報が必要な場合は検索元を参照するよう案内してください。情報が完全で関連性の高い項目を優先して提示してください。不要な限り、検索結果に含まれていない内容をわざわざ伝える必要はありません。\\n- 論文執筆などの創作系タスクでは、本文中の段落ごとに対応する参考番号（例：cite[3]:cite[5]）を必ず記載してください。ユーザーの要件を読み解き、適切な形式を選び、検索結果を最大限活用して重要情報を抽出し、ユーザーの要件に合致した、思想的に深く、創造性と専門性の高い回答を生成してください。可能な限り分量を増やし、各ポイントに対して多角的かつ詳細な論述を行ってください。\\n- 回答が長い場合は、構造化し、段落に分けて要点をまとめてください。箇条書きが必要な場合、できるだけ 5 点以内に抑え、関連内容は統合してください。\\n- 客観的な Q&A の場合、答えが非常に短いときでも、関連情報を1～2文ほど補足して内容を充実させてください。\\n- ユーザーの要件と回答内容に応じて適切で見やすいフォーマットを選択し、可読性を高めてください。\\n- 回答は複数の関連 Web ページを総合して行い、同じページだけを繰り返し引用しないでください。\\n- ユーザーからの指定がない限り、回答の言語はユーザーの質問に使用された言語と一致させてください。\\n\\n# ユーザーメッセージ：\\n{question}\",\n    \"internationalization\": \"あなたは知識ベースのQ&Aアシスタントです：\\n1. ユーザーが使用する言語で質問に答え、答えが厳密で専門的であることを確認してください。\\n2. 次の[参照テキスト]の内容に基づいて回答する必要があります。[参照テキスト]にユーザーの質問に直接関連する情報がある場合のみ回答してください。自分の知識に基づいて回答しないでください。関連する内容に画像が含まれている場合、画像ソースファイルを直接出力してください。`![image](path/IMAGE_1.png)`のようなプレースホルダーがある場合は、それらのプレースホルダーを変更したり削除したりせずに保持してください。\\n3. ドキュメントにテーブルが含まれている場合は、変更を加えたり、マークダウン形式でテーブルを返したりしないでください。\\n4. 参照テキストには異なる情報源からの情報が含まれている可能性があり、異なるまたは矛盾する回答が得られる場合があります。その場合、矛盾が生じた場合は、これらの回答をリストしてください。矛盾がなければ、最終的な結果のみを提供してください。\\n5. 参照テキストの内容がユーザーの質問に関連していない場合は、「関連する内容が見つかりませんでした」と回答してください。\\n\\n# 参照テキスト\\n{retrieved_file_content}\\n\\n# ユーザーの質問\\n{question}\"\n  },\n  \"build\": {\n    \"create\": \"作成\",\n    \"assistant\": \"アシスタント\",\n    \"workflow\": \"ワークフロー\",\n    \"skill\": \"スキル\",\n    \"tools\": \"ツール\",\n    \"workbench\": \"ワークスペース\",\n    \"save\": \"保存\",\n    \"online\": \"オンライン\",\n    \"offline\": \"オフライン\",\n    \"retry\": \"再試行\",\n    \"use\": \"使用\",\n    \"useAll\": \"すべて使用\",\n    \"allAppTypes\": \"すべてのアプリタイプ\",\n    \"assistantConfiguration\": \"アシスタント設定\",\n    \"assistantPortrait\": \"アシスタント画像\",\n    \"portraitOptimization\": \"アシスタント画像の最適化\",\n    \"automaticOptimization\": \"自動最適化\",\n    \"searchApp\": \"必要なアプリケーションを検索\",\n    \"establishAssistant\": \"アシスタントを作成\",\n    \"assistantName\": \"アシスタント名\",\n    \"giveAssistantName\": \"アシスタントに名前をつける\",\n    \"whatWant\": \"アシスタントの役割と具体的なタスク内容を教えてください\",\n    \"example\": \"例\",\n    \"exampleOne\": \"あなたは XX であり、XX の経験が豊富で、XX が得意です…\",\n    \"exampleTwo\": \"あなたのタスクは XX です。次のステップに従って実行してください：\",\n    \"automaticallyConfigurations\": \"関連する設定を自動で選択します\",\n    \"openingRemarks\": \"オープニング文\",\n    \"guidingQuestions\": \"ガイド質問\",\n    \"promptReplaced\": \"プロンプトを置き換えました\",\n    \"guideReplaced\": \"ガイド文を置き換えました\",\n    \"openingReplaced\": \"オープニング文を置き換えました\",\n    \"toolsReplaced\": \"ツールを置き換えました\",\n    \"skillsReplaced\": \"スキルを置き換えました\",\n    \"allReplaced\": \"すべて置き換えました\",\n    \"basicConfiguration\": \"基本設定\",\n    \"modelConfiguration\": \"AIモデル設定\",\n    \"model\": \"モデル\",\n    \"temperature\": \"温度\",\n    \"openingIntroduction\": \"オープニングガイド\",\n    \"openingStatement\": \"オープニング文\",\n    \"assistantMessageFormat\": \"アシスタントは会話開始時にこのメッセージを送信します。Markdown をサポートしています。\",\n    \"maximumPromptLength\": \"オープニング文は最大 1000 文字までです\",\n    \"recommendQuestionsForUsers\": \"ユーザーへのおすすめ質問。3つを超える場合はランダムに3つが表示されます。\",\n    \"maxCharacters50\": \"最大 50 文字です\",\n    \"enterGuidingQuestions\": \"ガイド質問を入力してください\",\n    \"knowledge\": \"ナレッジ\",\n    \"knowledgeBase\": \"ナレッジベース\",\n    \"autoCall\": \"自動呼び出し\",\n    \"callingMethod\": \"呼び出し方法\",\n    \"autoCallDescription\": \"各ターンで追加されたナレッジベースを検索します。\",\n    \"onDemandCall\": \"オンデマンド呼び出し\",\n    \"onDemandCallDescription\": \"アシスタント画像（プロンプト）内で RecallKnowledge メソッドを呼び出すように記述し、必要なときだけナレッジベースを検索します。\",\n    \"createNewKnowledge\": \"ナレッジベース作成\",\n    \"refresh\": \"更新\",\n    \"abilities\": \"能力\",\n    \"skillDescription\": \"可視化インターフェイスで複雑かつ安定した業務フローを実現します。例：プロジェクト計画やレポート分析\",\n    \"selectKnowledgeBase\": \"ナレッジベースを選択してください\",\n    \"searchBaseName\": \"ナレッジベース名を検索\",\n    \"debugPreview\": \"デバッグプレビュー\",\n    \"addTool\": \"ツール追加\",\n    \"search\": \"検索\",\n    \"empty\": \"何もありません\",\n    \"onlineSA\": \"スキル & アシスタントのオンライン化\",\n    \"params\": \"パラメータ\",\n    \"added\": \"追加済み\",\n    \"add\": \"追加\",\n    \"configurationUpdated\": \"設定が更新されました\",\n    \"addSkill\": \"スキルを追加\",\n    \"createSkill\": \"スキルを作成\",\n    \"nameRequired\": \"名称は必須です\",\n    \"nameMaxLength\": \"名称は最大 50 文字です\",\n    \"descMaxLength\": \"説明は最大 1000 文字です\",\n    \"editAssistant\": \"アシスタント編集\",\n    \"enterName\": \"アシスタントの名前を入力してください\",\n    \"assistantDesc\": \"アシスタント説明\",\n    \"enterDesc\": \"アシスタントの機能を紹介してください。会話画面とアシスタントページに表示されます。\",\n    \"cancel\": \"キャンセル\",\n    \"confirm\": \"確認\",\n    \"forBetter\": \"より良いアシスタント効果のため、説明は 20 文字以上にしてください\",\n    \"forExample\": \"例：アシスタントの役割、タスクの具体的な方法と手順、回答時の口調、注意すべき点など\",\n    \"contentSecurityR\": \"コンテンツセキュリティ審査\",\n    \"errors\": {\n      \"selectAtLeastOneWordType\": \"単語リストは少なくとも1種類選択してください\",\n      \"autoReplyNotEmpty\": \"自動返信内容は空にできません\"\n    },\n    \"saveSuccess\": \"保存に成功しました\",\n    \"contentSecurityDesc\": \"センシティブワードリストまたは API によって会話内容のセキュリティ審査を行います\",\n    \"contentSecuritySettings\": \"コンテンツセキュリティ審査設定\",\n    \"enableContentSecurityReview\": \"コンテンツセキュリティ審査を有効にする\",\n    \"reviewType\": \"審査タイプ\",\n    \"sensitiveWordListMatch\": \"センシティブワードリストマッチング\",\n    \"modelReview\": \"モデル審査\",\n    \"wordListType\": \"ワードリストタイプ\",\n    \"builtinWordList\": \"内蔵ワードリスト\",\n    \"customWordList\": \"カスタムワードリスト\",\n    \"autoReplyContent\": \"自動返信内容\",\n    \"useNewlineToSeparate\": \"改行で区切り、1行に1つ入力してください\",\n    \"txtFile\": \"txtファイル\",\n    \"sensitiveWordMatch\": \"センシティブワードマッチング\",\n    \"defaultAutoReply\": \"セキュリティ審査に抵触した場合の自動返信内容を入力してください。例：「現在の会話内容は関連規則に違反しています。内容を修正してから再度入力してください。」\",\n    \"uploadAvator\": \"アバターをアップロード\",\n    \"fileSizeLimit\": \"ファイルサイズは以下を超えてはいけません\",\n    \"fileTypeLimit\": \"ファイル形式が要件を満たしていません：\",\n    \"enterApiKey\": \"APIキーを入力してください\",\n    \"enterBaseUrl\": \"Base URL を入力してください\",\n    \"enterProxy\": \"プロキシを入力してください\",\n    \"enterDeploymentName\": \"デプロイ名を入力してください\",\n    \"proxyDescription\": \"中国本土以外で使用する場合、プロキシ設定が必要です\",\n    \"fdProxyDescription\": \"中国本土以外の地域で株価情報を照会する場合、プロキシの設定が必要となります\",\n    \"editTool\": \"内蔵ツール編集\",\n    \"assistantAvatar\": \"アシスタントアバター\",\n    \"confirmDeleteSkill\": \"このスキルを削除しますか？\",\n    \"confirmDeleteFlow\": \"このワークフローを削除しますか？\",\n    \"confirmDeleteAssistant\": \"このアシスタントを削除しますか？\",\n    \"maxToken\": \"チャット履歴の最大 token 数\",\n    \"maxTokenTip\": \"このパラメータを使用してチャット履歴をカットし、モデルに送信する履歴メッセージ数を制御します。長すぎることによるエラーを避けるため、モデルがサポートする最大コンテキスト長を超えないようにしてください。\",\n    \"app\": \"アプリケーション\",\n    \"manageAppTemplates\": \"アプリテンプレート管理\",\n    \"provideSceneTemplates\": \"利用および参考用にシーンテンプレートを提供しています\",\n    \"noPermissionToPublish\": \"この{{type}}をオンライン化する権限がありません。管理者に連絡してください。\",\n    \"manageYourApplications\": \"このページでアプリのオンライン・オフライン、編集などを行います\",\n    \"workFlow\": \"ワークフロー\",\n    \"skillName\": \"スキル名\",\n    \"pleaseFillIn\": \"{{labelName}}名を入力してください\",\n    \"nameTooLong\": \"{{labelName}}名が長すぎます。50文字以内にしてください\",\n    \"addDescription\": \"説明を追加すると、他のユーザーがあなたの{{labelName}}を理解しやすくなります\",\n    \"descriptionTooLong\": \"{{labelName}}の説明は 200 文字以内にしてください\",\n    \"templateCreatedSuccessfully\": \"テンプレート作成に成功しました\",\n    \"workFlowName\": \"ワークフロー名\",\n    \"modelRequired\": \"モデルは必須です\",\n    \"assistantOnlineNoEdit\": \"アシスタントがオンラインのため、変更できません\",\n    \"unsavedChangesLeave\": \"未保存の変更があります。本当に離れますか？\",\n    \"leaveAndSave\": \"保存して離れる\",\n    \"leaveWithoutSave\": \"保存せずに終了\",\n    \"selectModel\": \"モデルを選択してください\"\n  },\n  \"bench\": {\n    \"daily\": \"日常\",\n    \"lingsi\": \"$t(linsight)\",\n    \"model\": \"モデル\",\n    \"displayName\": \"表示名\",\n    \"vision\":\"画像\",\n    \"visionText\":\"有効にすると、モデルは画像コンテンツ（PNG、JPEG、WEBP、非アニメーションGIF形式をサポート）を組み合わせて回答します。この機能はマルチモーダルモデルのみでサポートされています。\",\n    \"webSearchPrompt\": \"Web 検索プロンプト\",\n    \"confirmDelete\": \"削除してよろしいですか？\",\n    \"requestFailed\": \"リクエストに失敗しました\",\n    \"deleteFailed\": \"削除に失敗しました\",\n    \"fetchToolsFailed\": \"{{type}} リストの取得に失敗しました\",\n    \"statusMessage\": \"合計 0 件の SOP をインポート予定。形式が正しいもの 0 件、誤り 0 件。\",\n    \"manualImportSummary\": \"合計で{{row}}件のガイドマニュアルをインポート予定です。{{successRow}}件はフォーマットが正しく、{{errorRow}}件はエラーがあります。\",\n    \"manualImportRow\": \"第{{row}}行\",\n    \"name_empty\": \"名前がありません\",\n    \"description_empty\": \"詳細内容がありません\",\n    \"name_over_size\": \"名前の長さが500文字を超えています\",\n    \"content_over_size\": \"詳細内容が50000文字を超えています\",\n    \"description_over_size\": \"説明の長さが1000文字を超えています\",\n    \"inputPlaceholder\": \"タスク目標を入力して、$t(bisheng)$t(linsight)に任せてください\",\n    \"inputPlaceholderDescription\": \"$t(linsight)は複雑なタスクを得意とするエージェントアシスタントです。タスク目標のほか、どのように実現してほしいかを日常的な言葉で説明すると、より期待に近い結果が得られます。\"\n  },\n  \"tools\": {\n    \"addTool\": \"ツール追加\",\n    \"createCustomTool\": \"API ツール\",\n    \"builtinTools\": \"内蔵ツール\",\n    \"customTools\": \"API ツール\",\n    \"mcpTools\": \"MCP ツール\",\n    \"search\": \"検索\",\n    \"empty\": \"何もありません\",\n    \"manageCustomTools\": \"このページでカスタムツールの作成・編集などを行います\",\n    \"name\": \"名称\",\n    \"enterToolName\": \"ツール名を入力\",\n    \"openapiSchema\": \"OpenAPI Schema\",\n    \"enterOpenAPISchema\": \"OpenAPI schema を入力してください\",\n    \"importFromUrl\": \"URL からインポート\",\n    \"parameterName\": \"パラメータ名\",\n    \"parameterPlaceholder\": \"カスタムAPIパラメータ名を入力してください\",\n    \"apiLocationLabel\": \"APIキーの場所\",\n    \"basicBearerDescription\": \"Basic・Bearer：ヘッダーの Authorization に APIキーを設定します\",\n    \"customDescription\": \"Custom：APIキーのパラメータ名と位置をカスタマイズします\",\n    \"headerDescription\": \"header：APIキーはリクエストヘッダー内のパラメータとして送信されます\",\n    \"queryDescription\": \"query：APIキーはURLのクエリ文字列にパラメータとして含まれます\",\n    \"header\": \"ヘッダー\",\n    \"query\": \"クエリ\",\n    \"authTypeLabel\": \"認証タイプ\",\n    \"apiKeyPlaceholder\": \"カスタムAPIパラメータ値を入力してください\",\n    \"custom\": \"カスタム\",\n    \"apiKeyLabel\": \"APIキー\",\n    \"examples\": \"例\",\n    \"weatherJson\": \"天気(JSON)\",\n    \"petShopYaml\": \"ペットショップ(YAML)\",\n    \"authenticationType\": \"認証方式\",\n    \"authType\": \"認証タイプ\",\n    \"none\": \"なし\",\n    \"apiKey\": \"API Key\",\n    \"basic\": \"Basic\",\n    \"bearer\": \"Bearer\",\n    \"availableTools\": \"利用可能なツール\",\n    \"description\": \"説明\",\n    \"method\": \"メソッド\",\n    \"path\": \"パス\",\n    \"delete\": \"削除\",\n    \"cancel\": \"キャンセル\",\n    \"save\": \"保存\",\n    \"toolName\": \"ツール名\",\n    \"confirmDeleteMcp\": \"この MCP サーバーを削除しますか？\",\n    \"mcpServerConfig\": \"MCP サーバー設定\",\n    \"enterMcpName\": \"MCP サービス名を入力\",\n    \"nameRequired\": \"名称は空にできません\",\n    \"nameExists\": \"名称はすでに存在します。変更してください\",\n    \"configRequired\": \"設定は空にできません\",\n    \"configFormatError\": \"設定フォーマットエラー。JSON形式が正しいか確認してください\",\n    \"exampleGaode\": \"高徳地図\",\n    \"toolNameCannotBeEmpty\": \"ツール名は空にできません\",\n    \"schemaCannotBeEmpty\": \"schema は空にできません\",\n    \"apiKeyCannotBeEmpty\": \"API Key は空にできません\",\n    \"apiKeyMaxLengthExceeded\": \"API Key は 1000 文字を超えてはいけません\",\n    \"parameterNameCannotBeEmpty\": \"Parameter name は空にできません\",\n    \"parameterNameMaxLengthExceeded\": \"Parameter name は 1000 文字を超えてはいけません\",\n    \"addMcpServer\": \"MCP サーバー追加\",\n    \"refresh\": \"更新\",\n    \"gaodeMap\": \"高徳地図\",\n    \"gaodeMapSSE\": \"高徳地図（SSE プロトコル）\",\n    \"gaodeMapStreamable\": \"高徳地図（streamable プロトコル）\",\n    \"gaodeMapDesc\": \"高徳地図 API。ジオコーディング、逆ジオコーディング、IP 位置情報、天気情報、サイクリングルート、徒歩ルート、ドライブルート、バスルート、距離計測、キーワード検索、周辺検索、詳細検索などを提供します。\"\n  },\n  \"test\": {\n    \"test\": \"テスト\",\n    \"addTest\": \"まずテストケースを入力してください\",\n    \"uploadTest\": \"テストケースをアップロード\",\n    \"explain\": \"テストケースは現在のコンポーネントの入力であり、txt ファイルのみサポート、最大 20 行までです\",\n    \"testRun\": \"テスト実行\",\n    \"testCase\": \"テストケース\",\n    \"run\": \"実行\",\n    \"downloadResults\": \"実行結果をダウンロード\",\n    \"testCases\": \"テストケースを入力...\",\n    \"parametersAndValues\": \"パラメータと値\",\n    \"parameter\": \"パラメータ\",\n    \"value\": \"値\",\n    \"result\": \"テスト結果\",\n    \"outResultPlaceholder\": \"ボタンをクリックしてテスト結果を出力\",\n    \"maxAddVersions\": \"追加できるバージョンは最大4つまでです\",\n    \"versionEvaluation\": \"バージョン評価\",\n    \"addVersion\": \"バージョン追加\",\n    \"selectVersion\": \"バージョン選択\",\n    \"component\": \"コンポーネント\",\n    \"parameterName\": \"パラメータ名\",\n    \"parameterValue\": \"パラメータ値\",\n    \"inputTypeValue\": \"{{type}} タイプの値を入力\"\n  },\n  \"resetPassword\": {\n    \"slogen\": \"安全にパスワードをリセット\",\n    \"currentPassword\": \"現在のパスワード\",\n    \"newPassword\": \"新しいパスワード\",\n    \"confirmNewPassword\": \"新しいパスワードの確認\",\n    \"pleaseEnterCurrentPassword\": \"現在のパスワードを入力してください。\",\n    \"pleaseEnterNewPassword\": \"新しいパスワードを入力してください。\",\n    \"pleaseEnterConfirmPassword\": \"新しいパスワードを確認してください。\",\n    \"newPasswordTooShort\": \"新しいパスワードは 8 文字以上である必要があります。\",\n    \"passwordMismatch\": \"新しいパスワードが一致しません。\",\n    \"resetButton\": \"パスワード変更\",\n    \"passwordResetSuccess\": \"パスワードは正常に変更されました\",\n    \"adminResetSuccess\": \"パスワードがリセットされました\",\n    \"resetFailed\": \"パスワード変更に失敗しました\",\n    \"notEmpty\": \"新しいパスワードは空にできません\"\n  },\n  \"log\": {\n    \"systemIdEnum\": {\n      \"chat\": \"チャット\",\n      \"build\": \"ビルド\",\n      \"knowledge\": \"ナレッジベース\",\n      \"dashboard\": \"ダッシュボード\",\n      \"system\": \"システム\"\n    },\n    \"eventTypeEnum\": {\n      \"createChat\": \"新規チャット作成\",\n      \"deleteChat\": \"チャット削除\",\n      \"createBuild\": \"アプリ新規作成\",\n      \"updateBuild\": \"アプリ編集\",\n      \"deleteBuild\": \"アプリ削除\",\n      \"createKnowledge\": \"ナレッジベース新規作成\",\n      \"deleteKnowledge\": \"ナレッジベース削除\",\n      \"uploadFile\": \"ナレッジベース ファイルアップロード\",\n      \"deleteFile\": \"ナレッジベース ファイル削除\",\n      \"updateUser\": \"ユーザー編集\",\n      \"forbidUser\": \"ユーザー無効化\",\n      \"recoverUser\": \"ユーザー有効化\",\n      \"createUserGroup\": \"ユーザーグループ新規作成\",\n      \"deleteUserGroup\": \"ユーザーグループ削除\",\n      \"updateUserGroup\": \"ユーザーグループ編集\",\n      \"create_dashboard\": \"看板新規作成\",\n      \"delete_dashboard\": \"看板削除\",\n      \"update_dashboard\": \"看板編集\",\n      \"createRole\": \"ロール新規作成\",\n      \"deleteRole\": \"ロール削除\",\n      \"updateRole\": \"ロール編集\",\n      \"add_tool\": \"ツール作成\",\n      \"update_tool\": \"ツール編集\",\n      \"delete_tool\": \"ツール削除\",\n      \"userLogin\": \"ユーザーログイン\",\n      \"create_chat\": \"新規チャット作成\",\n      \"delete_chat\": \"チャット削除\",\n      \"create_build\": \"アプリ新規作成\",\n      \"update_build\": \"アプリ編集\",\n      \"delete_build\": \"アプリ削除\",\n      \"create_knowledge\": \"ナレッジベース新規作成\",\n      \"delete_knowledge\": \"ナレッジベース削除\",\n      \"upload_file\": \"ナレッジベース ファイルアップロード\",\n      \"delete_file\": \"ナレッジベース ファイル削除\",\n      \"update_user\": \"ユーザー編集\",\n      \"forbid_user\": \"ユーザー無効化\",\n      \"recover_user\": \"ユーザー有効化\",\n      \"create_user_group\": \"ユーザーグループ新規作成\",\n      \"delete_user_group\": \"ユーザーグループ削除\",\n      \"update_user_group\": \"ユーザーグループ編集\",\n      \"create_role\": \"ロール新規作成\",\n      \"delete_role\": \"ロール削除\",\n      \"update_role\": \"ロール編集\",\n      \"user_login\": \"ユーザーログイン\",\n      \"addTool\": \"ツール作成\",\n      \"updateTool\": \"ツール編集\",\n      \"deleteTool\": \"ツール削除\"\n    },\n    \"objectTypeEnum\": {\n      \"none\": \"なし\",\n      \"work_flow\": \"ワークフロー\",\n      \"flow\": \"スキル\",\n      \"assistant\": \"アシスタント\",\n      \"file\": \"ファイル\",\n      \"user_conf\": \"ユーザー設定\",\n      \"user_group_conf\": \"ユーザーグループ設定\",\n      \"role_conf\": \"ロール設定\",\n      \"tool\": \"ツール\",\n      \"dashboard\": \"ダッシュボード\",\n      \"knowledge\": \"ナレッジベース\",\n      \"workstation\": \"ワークステーション（日常モード）\"\n    },\n    \"appUsage\": \"アプリ利用状況\",\n    \"systemOperations\": \"システム操作\",\n    \"auditManagement\": \"監査管理\",\n    \"searchButton\": \"検索\",\n    \"resetButton\": \"リセット\",\n    \"auditId\": \"監査ID\",\n    \"username\": \"ユーザー名\",\n    \"operationTime\": \"操作日時\",\n    \"systemModule\": \"システムモジュール\",\n    \"operationAction\": \"操作アクション\",\n    \"objectType\": \"操作対象タイプ\",\n    \"operationObject\": \"操作対象\",\n    \"ipAddress\": \"IPアドレス\",\n    \"remark\": \"備考\",\n    \"selectUser\": \"ユーザーを選択\",\n    \"selectUserGroup\": \"ユーザーグループを選択\",\n    \"startDate\": \"開始日\",\n    \"endDate\": \"終了日\",\n    \"actionBehavior\": \"操作動作\",\n    \"createDashboard\": \"ダッシュボード作成\",\n    \"deleteDashboard\": \"ダッシュボード削除\",\n    \"updateDashboard\": \"ダッシュボード更新\",\n    \"createBuild\": \"ビルド作成\",\n    \"create_chat\": \"チャット作成\",\n    \"delete_chat\": \"チャット削除\",\n    \"create_build\": \"ビルド作成\",\n    \"update_build\": \"ビルド編集\",\n    \"delete_build\": \"ビルド削除\",\n    \"create_knowledge\": \"ナレッジベース作成\",\n    \"delete_knowledge\": \"ナレッジベース削除\",\n    \"upload_file\": \"ファイルアップロード\",\n    \"delete_file\": \"ファイル削除\",\n    \"update_user\": \"ユーザー編集\",\n    \"forbid_user\": \"ユーザー無効化\",\n    \"recover_user\": \"ユーザー有効化\",\n    \"create_user_group\": \"ユーザーグループ作成\",\n    \"delete_user_group\": \"ユーザーグループ削除\",\n    \"update_user_group\": \"ユーザーグループ編集\",\n    \"create_role\": \"ロール作成\",\n    \"delete_role\": \"ロール削除\",\n    \"update_role\": \"ロール編集\",\n    \"user_login\": \"ユーザーログイン\",\n    \"addTool\": \"ツール追加\",\n    \"updateTool\": \"ツール更新\",\n    \"deleteTool\": \"ツール削除\",\n\n    \"appName\": \"アプリ名\",\n    \"userName\": \"ユーザー名\",\n    \"userFeedback\": \"ユーザーフィードバック\",\n    \"enterQuestion\": \"質問を入力してください\",\n    \"qaLibQuestionAnswerRequired\": \"QAナレッジベース、質問、回答は必須です\",\n    \"max100CharsForSimilarQuestions\": \"類似質問は最大100文字までです\",\n    \"max1000CharsForAnswer\": \"回答は最大1000文字までです\",\n    \"saveSuccess\": \"保存に成功しました\",\n    \"addNewQaToLib\": \"QAナレッジベースに新しいQAを追加\",\n    \"qaKnowledgeLib\": \"QAナレッジベース\",\n    \"question\": \"質問\",\n    \"similarQuestions\": \"類似の質問\",\n    \"aiGenerate\": \"AI生成\",\n    \"answer\": \"回答\",\n    \"cancel\": \"キャンセル\",\n    \"confirm\": \"確認\",\n    \"qaLibRequired\": \"QAナレッジベースを選択してください\",\n    \"selectAtLeastOneQuestion\": \"類似質問を少なくとも1つ選択してください\",\n    \"addSuccess\": \"追加に成功しました\",\n    \"addSimilarQuestionsToQaLib\": \"類似質問をQAナレッジベースに追加\",\n    \"qaContent\": \"QA内容\",\n    \"empty\": \"データがありません\",\n    \"selectQaLib\": \"QAナレッジベースを選択してください\",\n    \"detailedSession\": \"セッション詳細\",\n    \"exportNoDateRange\": \"期間が指定されていないため、直近60日間のデータを自動的に書き出しました\",\n    \"exportCustomDateRange\": \"期間が指定されていないため、{{start}} - {{end}} のデータを自動的に書き出しました\",\n    \"exportDateRangeExceed\": \"エクスポート期間は60日を超過できません。範囲を縮小して再試行してください\",\n    \"messageConversionFailed\": \"メッセージの変換に失敗しました\",\n    \"csvHeaders\": {\n      \"sessionId\": \"セッションID\",\n      \"appName\": \"アプリ名\",\n      \"sessionCreationTime\": \"セッション作成時間\",\n      \"userName\": \"ユーザー名\",\n      \"messageRole\": \"メッセージ役割\",\n      \"messageSendTime\": \"メッセージ送信時間\",\n      \"messageContent\": \"メッセージ内容\",\n      \"like\": \"高評価\",\n      \"dislike\": \"低評価\",\n      \"copy\": \"コピー\",\n      \"sensitiveStatus\": \"コンテンツ安全審査\"\n    },\n    \"userRole\": \"ユーザー\",\n    \"aiRole\": \"AI\",\n    \"yes\": \"はい\",\n    \"no\": \"いいえ\",\n    \"userGroup\": \"ユーザーグループ\",\n    \"userFeedbackPlaceholder\": \"ユーザーフィードバック\",\n    \"likeFeedback\": \"いいね\",\n    \"dislikeFeedback\": \"よくない\",\n    \"copyFeedback\": \"コピー\",\n    \"sensitiveReviewResult\": \"リアルタイム安全審査結果\",\n    \"sensitiveViolation\": \"違反\",\n    \"sensitivePass\": \"パス\",\n    \"exportButton\": \"エクスポート\",\n    \"pagination\": {\n      \"jumpTo\": \"移動\",\n      \"page\": \"ページ\"\n    },\n    \"workbench_daily\": \"ワークベンチ（通常モード）\"\n  },\n  \"tag\": {\n    \"labelMaxLength\": \"タグ名は 10 文字以内で入力してください\",\n    \"confirmDeleteLabel\": \"タグ【{{label}}】は使用中です。削除しますか？\",\n    \"createNewLabel\": \"「新しいタグ」を作成\",\n    \"addLabel\": \"タグを追加\"\n  },\n  \"api\": {\n    \"assistantOrchestration\": \"アシスタントオーケストレーション\",\n    \"skillOrchestration\": \"スキルオーケストレーション\",\n    \"externalPublishing\": \"外部公開\",\n    \"apiAccess\": \"API アクセス\",\n    \"noLoginLink\": \"ログイン不要リンク\",\n    \"loginLink\": \"ログイン必要リンク\",\n    \"required\": \"必須\",\n    \"optional\": \"任意\",\n    \"exampleValue\": \"サンプル値\",\n    \"copySuccess\": \"コピーに成功しました\",\n    \"apiRequestExample\": \"API リクエスト例\",\n    \"sdkNote\": \"OpenAI 公式 SDK の ChatOpenAI コンポーネントを使用してアシスタントを利用できます（このドキュメントに記載されているパラメータのみサポート。公式コンポーネントの n、top_p、max_token などのパラメータは現在サポートしていません）。\",\n    \"exampleCode\": \"サンプルコード\",\n    \"requestParams\": \"リクエストパラメータ\",\n    \"bodyParams\": \"Body パラメータ\",\n    \"assistantId\": \"使用するアシスタントID\",\n    \"messageList\": \"これまでの会話に含まれるメッセージ一覧。system タイプはサポートしていません。system はアシスタント自身のプロンプトを使用します。\",\n    \"temperature\": \"サンプリング温度。0～2 の間。0以外の値を設定するとアシスタント設定を上書きします。\",\n    \"stream\": \"デフォルトは false。true にすると ChatGPT と同様にストリーミングで部分的なメッセージを受信します。利用可能なときに data-only Server-Sent Events として送信され、最後に data: [DONE] メッセージで終了します。\",\n    \"responseData\": \"レスポンス\",\n    \"dataStructure\": \"データ構造\",\n    \"example\": \"例\",\n    \"skillId\": \"スキルID\",\n    \"urlParam\": \"URL パラメータ\",\n    \"skillInput\": \"スキル全体への入力。json 内の具体的な key はスキルに依存し、必ずしも query とは限りません。\",\n    \"singleInput\": \"入力ノードが1つだけの場合、id は省略可能です\",\n    \"historyCount\": \"Memery をサポートするスキルの場合、多ターン会話用に何件の履歴を取得するか。デフォルトは10。\",\n    \"clearCache\": \"session キャッシュをクリアするかどうか\",\n    \"sessionId\": \"session を特定するための ID\",\n    \"sessionRemark\": \"各呼び出しで session_id を渡した場合は指定された値を返します。session_id を渡さない場合、自動的に ID を生成します。\",\n    \"tweaks\": \"各コンポーネントの制御。コンポーネント入力パラメータの値を上書きできます。\",\n    \"tweaksRemark\": \"コンポーネントに特定のパラメータを渡さない場合、省略可能です。\",\n    \"exampleComponent\": \"例：スキル内の OpenAI 大モデルコンポーネント設定情報。キーはコンポーネント名で {コンポーネント}-{id} 形式です。\",\n    \"defaultConfig\": \"{} が空の場合、デフォルト値を維持します。\",\n    \"componentParams\": \"各スキル内コンポーネントのパラメータは、API 呼び出し時に指定できます。指定しない場合はスキルのデフォルト設定を使用します。\",\n    \"returnContent\": \"返却内容\",\n    \"sessionIdReturn\": \"会話ID。入参の session_id と対応します。\",\n    \"skillResult\": \"スキルの実行結果\",\n    \"llmAnswer\": \"スキルが統一的に返す LLM コンテンツのキー\",\n    \"messageId\": \"スキル履歴メッセージの保存ID\",\n    \"source\": \"トレーサビリティの有無\",\n    \"dynamicKey\": \"キーはスキル内のコンポーネントで定義された出力キーで、answer と同様の内容を出力します。違いはキーが固定ではないことです。\",\n    \"useCase\": \"利用ケース\",\n    \"knowledgeQADemo\": \"ナレッジベース QA アプリの例\",\n    \"specifyKnowledgeBase\": \"特定のナレッジベースで QA を行う場合、パラメータにナレッジベース ID を指定します。例：\",\n    \"reportGenerationDemo\": \"レポート生成アプリの例\",\n    \"step1\": \"ステップ1：このスキルを実行するトリガー依存項目を確認\",\n    \"dependenciesDescription\": \"依存項目とは、会話画面左下フォームの入力項目に対応し、スキル編集時に使用するコンポーネントに対応します。\",\n    \"step2\": \"ステップ2：入力パラメータを準備\",\n    \"uploadFiles\": \"この例では入力パラメータは次の 2 ファイルです：\",\n    \"step3\": \"ステップ3：tweaks を組み立て\",\n    \"step4\": \"ステップ4：スキルを実行\",\n    \"noLoginLinkDescription\": \"ログイン不要リンクはログインせずに利用できます。ただし、システム設定 enable_guest_access = True の場合のみアクセス可能です。\",\n    \"loginLinkDescription\": \"ログイン必要リンクはログイン後に利用できます。\",\n    \"publishAsStandalonePage\": \"スタンドアロンページとして公開\",\n    \"copyLinkToBrowser\": \"リンクをコピーしてブラウザで開く\",\n    \"embedIntoWebsite\": \"Web サイトに埋め込む\",\n    \"styleOne\": \"スタイル1\",\n    \"styleTwo\": \"スタイル2\",\n    \"embedCodeDescription\": \"以下のコードを Web サイトに埋め込んでください\"\n  },\n  \"dataset\": {\n    \"confirmDelete\": \"このデータセットを削除します！\",\n    \"fileNotFound\": \"ファイルが存在しません\",\n    \"name\": \"データセット名\",\n    \"create\": \"データセット作成\",\n    \"creationTime\": \"作成時間\",\n    \"updateTime\": \"更新時間\",\n    \"createUser\": \"作成者\",\n    \"download\": \"ダウンロード\",\n    \"collection\": \"データセット一覧\",\n    \"enterDataSetName\": \"データセット名を入力してください\",\n    \"maxDataSetNameLength\": \"データセット名は最大 30 文字です\",\n    \"uploadFile\": \"ファイルをアップロードしてください\",\n    \"selectKnowledgeLib\": \"ナレッジベースを選択してください\",\n    \"creationSuccess\": \"データセットの作成に成功しました\",\n    \"createDataset\": \"データセット作成\",\n    \"importMethod\": \"インポート方法\",\n    \"localImport\": \"ローカルインポート\",\n    \"importFromQa\": \"QA ナレッジベースからインポート\",\n    \"sampleFile\": \"サンプルファイル\",\n    \"jsonSample\": \"json フォーマットサンプル.json\",\n    \"selectQaKnowledgeLib\": \"QA ナレッジベースを選択\"\n  },\n  \"label\": {\n    \"createTask\": \"ラベリングタスク作成\",\n    \"selectAppsToLabel\": \"ラベリング対象アプリケーションを選択\",\n    \"unmarkedConversationCount\": \"現在の未ラベリング会話数\",\n    \"selectLabelers\": \"ラベラーを選択\",\n    \"cancel\": \"キャンセル\",\n    \"create\": \"作成\",\n    \"confirmDelete\": \"このタスクを削除しますか？\",\n    \"delete\": \"削除\",\n    \"taskId\": \"タスクID\",\n    \"taskStatus\": \"タスクステータス\",\n    \"creationTime\": \"作成時間\",\n    \"createdBy\": \"作成者\",\n    \"labelingProgress\": \"ラベリング進捗\",\n    \"actions\": \"操作\",\n    \"view\": \"表示\",\n    \"noData\": \"データがありません\",\n    \"all\": \"すべて\",\n    \"notStarted\": \"未開始\",\n    \"completed\": \"完了\",\n    \"inProgress\": \"進行中\",\n    \"taskStatusFilter\": \"タスクステータスフィルタ\",\n    \"maxAppsError\": \"選択できるアプリは最大 30 個までです\",\n    \"createSuccess\": \"作成に成功しました\",\n    \"back\": \"戻る\",\n    \"appName\": \"アプリ名\",\n    \"sessionCreationTime\": \"会話作成時間\",\n    \"userFeedback\": \"ユーザーフィードバック\",\n    \"annotationStatus\": \"ラベリングステータス\",\n    \"unannotated\": \"未ラベリング\",\n    \"annotated\": \"ラベリング済み\",\n    \"noAnnotationRequired\": \"ラベリング不要\",\n    \"annotator\": \"ラベラー\",\n    \"returnToList\": \"一覧に戻る\",\n    \"unlabeled\": \"未ラベリング\",\n    \"labeled\": \"ラベリング済み\",\n    \"unnecessary\": \"ラベリング不要\",\n    \"previousChat\": \"前の会話\",\n    \"nextChat\": \"次の会話\",\n    \"selectPlaceholder\": \"選択してください\",\n    \"searchAppsPlaceholder\": \"アプリ名を検索\"\n  },\n  \"errors\": {\n    \"403\": \"操作権限がありません\",\n    \"404\": \"リソースが見つかりません\",\n    \"500\": \"サーバーエラー\",\n    \"10001\": \"SFTサービスが見つかりません\",\n    \"10002\": \"無効な操作です\",\n    \"10003\": \"リソースのダウンロードに失敗しました\",\n    \"10004\": \"Embeddingモデルが未設定です。設定画面で設定してください\",\n    \"10005\": \"Embeddingモデルが存在しません。設定してください\",\n    \"10006\": \"Embeddingモデルの種類が不正です\",\n    \"10007\": \"ベクトル検索モデルに問題があります。管理者に連絡してください\",\n    \"10008\": \"LLMモデル設定が見つかりません\",\n    \"10009\": \"LLMモデル設定が削除されました。再設定してください\",\n    \"10010\": \"提供元設定が削除されました。LLMを再設定してください\",\n    \"10011\": \"LLMタイプのみサポートしています。{{model_type}} は非対応です\",\n    \"10012\": \"{{server_name}} の {{model_name}} はオフラインです\",\n    \"10013\": \"LLMの初期化に失敗しました：{{exception}}\",\n    \"10014\": \"ASR設定が見つかりません\",\n    \"10015\": \"ASR設定が削除されました\",\n    \"10016\": \"提供元設定が削除されました。ASRを再設定してください\",\n    \"10017\": \"ASRタイプのみサポートしています\",\n    \"10018\": \"ASRモデル {{model_name}} はオフラインです\",\n    \"10019\": \"ASR初期化に失敗しました：{{exception}}\",\n    \"10020\": \"TTS設定が見つかりません\",\n    \"10021\": \"TTS設定が削除されました\",\n    \"10022\": \"提供元設定が削除されました。TTSを再設定してください\",\n    \"10023\": \"TTSタイプのみサポートしています\",\n    \"10024\": \"TTSモデルがオフラインです\",\n    \"10025\": \"TTS初期化に失敗しました：{{exception}}\",\n    \"10030\": \"システム設定は必須です\",\n    \"10031\": \"システム設定の形式が不正です：{{exception}}\",\n    \"10040\": \"アップロードファイルが空です\",\n    \"10041\": \"対応していないファイル形式です\",\n    \"10100\": \"トレーニングタスクの作成に失敗しました\",\n    \"10101\": \"個人またはプリセットデータセットを1つ以上選択してください\",\n    \"10102\": \"タスクが見つかりません\",\n    \"10103\": \"タスク状態が不正です\",\n    \"10104\": \"タスクのキャンセルに失敗しました\",\n    \"10105\": \"タスク削除に失敗しました\",\n    \"10106\": \"タスク公開に失敗しました\",\n    \"10107\": \"モデル名の更新に失敗しました\",\n    \"10108\": \"公開の取り消しに失敗しました\",\n    \"10109\": \"トレーニングパラメータが不正です\",\n    \"10110\": \"モデル名が重複しています\",\n    \"10120\": \"トレーニングファイルが見つかりません\",\n    \"10125\": \"GPU情報の取得に失敗しました\",\n    \"10126\": \"モデル一覧の取得に失敗しました\",\n    \"10200\": \"モデルが見つかりません\",\n    \"10300\": \"コンポーネントがすでに存在します\",\n    \"10301\": \"コンポーネントが存在しません\",\n    \"10400\": \"アシスタントが見つかりません\",\n    \"10401\": \"アシスタントのオンライン化に失敗：{{exception}}\",\n    \"10402\": \"アシスタント名が重複しています\",\n    \"10403\": \"アシスタントはオンライン中のため編集できません\",\n    \"10420\": \"アシスタントは削除されています\",\n    \"10421\": \"アシスタントがオフラインのため対話できません\",\n    \"10422\": \"推論モデルが設定されていません\",\n    \"10423\": \"推論モデルが未設定です\",\n    \"10424\": \"画像最適化モデルが未設定です\",\n    \"10499\": \"アシスタントサービスエラー\",\n    \"10500\": \"スキルバージョンが見つかりません\",\n    \"10501\": \"使用中のバージョンは削除できません\",\n    \"10502\": \"バージョン名が重複しています\",\n    \"10503\": \"スキル名が重複しています\",\n    \"10520\": \"スキルが見つかりません\",\n    \"10521\": \"スキルはオンラインのため編集できません\",\n    \"10525\": \"ワークフローはオンラインのため編集できません\",\n    \"10526\": \"ワークフロー初期化に失敗しました\",\n    \"10527\": \"ユーザー入力待ちがタイムアウトしました\",\n    \"10528\": \"{{type}} ノードが最大実行回数を超えました\",\n    \"10529\": \"ワークフロー名が重複しています\",\n    \"10530\": \"テンプレート名が重複しています\",\n    \"10531\": \"{{type}} 機能がアップグレードされました。削除して再追加してください\",\n    \"10532\": \"ワークフローバージョンが更新されました。作成者に再編集を依頼してください\",\n    \"10540\": \"サーバースレッドが満杯です。しばらくしてからお試しください\",\n    \"10541\": \"ワークフロー実行失敗：{{exception}}\",\n    \"10599\": \"閲覧権限が一時的にありません\",\n    \"10600\": \"ユーザー名またはパスワードが違います\",\n    \"10601\": \"パスワードの有効期限が切れています\",\n    \"10602\": \"パスワード未設定です。管理者に連絡してください\",\n    \"10603\": \"現在のパスワードが違います\",\n    \"10604\": \"別のデバイスでログインが行われました\",\n    \"10605\": \"ユーザー名がすでに存在します\",\n    \"10606\": \"ユーザーグループとロールは必須です\",\n    \"10607\": \"認証コードが違います\",\n    \"10608\": \"ユーザー名は30文字以内で入力してください\",\n    \"10610\": \"ユーザーが残っているためグループを削除できません\",\n    \"10620\": \"ユーザーは無効化されています\",\n    \"10621\": \"ログイン失敗が多すぎるためアカウントが無効化されました\",\n    \"10630\": \"ユーザーグループは必須です\",\n    \"10640\": \"管理者ユーザーは変更できません\",\n    \"10700\": \"タグがすでに存在します\",\n    \"10701\": \"タグが見つかりません\",\n    \"10800\": \"提供元名が重複しています\",\n    \"10801\": \"モデルが重複しています\",\n    \"10802\": \"提供元追加に失敗（全モデルの初期化失敗）\",\n    \"10803\": \"提供元追加に失敗（一部モデルの初期化失敗）\",\n    \"10900\": \"ナレッジベース名が重複しています\",\n    \"10901\": \"Embeddingモデルを選択してください\",\n    \"10902\": \"要約モデルが無効です：{{exception}}\",\n    \"10910\": \"このバージョンでは分割変更ができません。新規作成してください\",\n    \"10911\": \"解析結果が空です\",\n    \"10912\": \"分割結果が長すぎます。区切り文字を増やしてください\",\n    \"10913\": \"ファイルが破損している可能性があります\",\n    \"10914\": \"対応していないファイル形式です\",\n    \"10915\": \"ETLサービスが混雑しています。能力を拡張してください\",\n    \"10916\": \"セグメント結果が長すぎます。カスタムポリシーでテーブルのセグメント行数を減らしてください\",\n    \"10920\": \"類似質問モデルが未設定です\",\n    \"10930\": \"質問がすでに存在します\",\n    \"10940\": \"解析中のためコピーできません\",\n    \"10941\": \"ナレッジベースが空のためコピーできません\",\n    \"10950\": \"複数のナレッジベースから同時削除はできません\",\n    \"10951\": \"再構築中のためEmbeddingモデルは変更できません\",\n    \"10952\": \"文書解析に失敗しました\",\n    \"10953\": \"解析エラー：{{exception}}\",\n    \"10960\": \"QAナレッジベースではありません\",\n    \"10961\": \"ナレッジベースのタイプが不正です:{{message}}\",\n    \"10970\": \"ナレッジベースが見つかりません\",\n    \"10971\": \"ナレッジベースのファイルが見つかりません\",\n    \"10980\": \"{{field_name}} は内蔵フィールドと衝突しています\",\n    \"10981\": \"メタデータ {{field_name}} はすでに存在します\",\n    \"10982\": \"メタデータ {{field_name}} は存在しません\",\n    \"10983\": \"内蔵フィールド {{field_name}} は変更できません\",\n    \"10984\": \"値の型変換エラー：{{error_msg}}\",\n    \"11010\": \"SOPファイル形式が不正です\",\n    \"11011\": \"SOPの推薦事例設定に失敗しました\",\n    \"11020\": \"ファイルアップロードに失敗しました\",\n    \"11030\": \"利用回数の上限に達しました。新しい招待コードが必要です\",\n    \"11040\": \"ユーザー質問の送信に失敗しました\",\n    \"11050\": \"ベクトル検索モデルの問題です。管理者に相談してください\",\n    \"11060\": \"マニュアル検索が失敗しました（ベクトル・キーワード検索ともに不可）\",\n    \"11070\": \"マニュアル検索に失敗しました\",\n    \"11080\": \"ワークスペースツールの初期化に失敗しました\",\n    \"11090\": \"$t(bisheng) LLM エラー\",\n    \"11100\": \"SOP内容の生成に失敗しました\",\n    \"11110\": \"SOP内容の更新に失敗しました\",\n    \"11120\": \"セッションは完了済みまたは実行中です\",\n    \"11130\": \"タスク開始に失敗しました\",\n    \"11140\": \"キュー状態の取得に失敗しました\",\n    \"11150\": \"マニュアル追加に失敗しました（ベクトル保存エラー）\",\n    \"11160\": \"マニュアル更新に失敗しました\",\n    \"11170\": \"マニュアル削除に失敗しました\",\n    \"11171\": \"{{sop_name}} の内容が長すぎます\",\n    \"11180\": \"招待コードが無効です\",\n    \"11190\": \"すでに別の招待コードが紐づいています\",\n    \"12040\": \"web_searchツールが見つかりません\",\n    \"12041\": \"セッションが存在しません\",\n    \"12042\": \"エージェントはすでに追加されています\",\n    \"13001\": \"スキルは削除されています\",\n    \"13002\": \"スキルがオフラインのため対話できません\",\n    \"13003\": \"スキルがコンパイルに失敗しています\",\n    \"13004\": \"バックエンドエラー\",\n    \"13005\": \"LLMスキルエラー：{{error}}\",\n    \"13006\": \"文書解析に失敗しました。再アップロードしてください\\n\\n{{error}}\",\n    \"13007\": \"入力データの解析に失敗しました：{{error}}\",\n    \"13010\": \"ワークフローがオフラインのため対話できません\",\n    \"14001\": \"処理中です。しばらくお待ちください\",\n    \"15000\": \"ツール名が重複しています\",\n    \"15001\": \"ツールのAPIは必須です\",\n    \"15002\": \"ツールが見つかりません\",\n    \"15003\": \"名前が不正です（1〜1000文字）\",\n    \"15010\": \"プリセットツールカテゴリは削除できません\",\n    \"15020\": \"ツールSchemaのダウンロードに失敗しました\",\n    \"15021\": \"ツールSchemaは必須です\",\n    \"15022\": \"OpenAPI Schemaの解析に失敗しました：{{exception}}\",\n    \"15023\": \"URLはhttp/httpsで始まる必要があります：{{url}}\",\n    \"15024\": \"MCP設定解析に失敗しました：{{exception}}\",\n    \"16000\": \"データセット名がすでに存在します\",\n    \"17000\": \"ダッシュボードは最大20個まで作成可能です\",\n    \"17005\": \"現在のロールにはこのダッシュボードへのアクセス権限がありません。必要な場合は管理者に連絡してください。\",\n    \"17010\": \"対応するデータセット設定が見つかりません\",\n    \"17011\": \"仮想指標は一度に1つしか照会できません\",\n    \"17012\": \"対応する指標設定が見つかりません\",\n    \"17013\": \"対応する集計方法が見つかりません\",\n    \"17014\": \"対応するディメンション設定が見つかりません\",\n    \"17015\": \"対応する演算子設定が見つかりません\",\n    \"90002\": \"現在のロールにはワークベンチへのアクセス権限がありません。必要な場合は管理者に連絡してください。\"\n  },\n  \"all\": \"すべて\",\n  \"confirmButton\": \"確認\",\n  \"add\": \"追加\",\n  \"back\": \"戻る\",\n  \"create\": \"作成\",\n  \"createImport\": \"作成してインポート\",\n  \"delete\": \"削除\",\n  \"deleteSuccess\": \"削除に成功しました\",\n  \"createTime\": \"作成時間\",\n  \"updateTime\": \"更新時間\",\n  \"saved\": \"保存に成功しました\",\n  \"edit\": \"編集\",\n  \"enable\": \"有効化\",\n  \"disable\": \"無効化\",\n  \"close\": \"閉じる\",\n  \"cancel\": \"キャンセル\",\n  \"operations\": \"操作\",\n  \"save\": \"保存\",\n  \"previousPage\": \"前のページ\",\n  \"submit\": \"送信\",\n  \"nextPage\": \"次のページ\",\n  \"formatError\": \"形式エラー\",\n  \"port\": \"サーバーポート\",\n  \"cancle\": \"キャンセル\",\n  \"tip\": \"ヒント\",\n  \"search\": \"検索\",\n  \"deleteAssistant\": \"このアシスタントを削除しますか？\",\n  \"chatTipsTitle\": \"使用上の注意\",\n  \"updateSuccess\": \"更新に成功しました\",\n  \"createSuccess\": \"作成に成功しました\",\n  \"confirm\": \"確認\",\n  \"required\": \"必須\",\n  \"inProgress\": \"進行中\",\n  \"failed\": \"失敗\",\n  \"success\": \"成功\",\n  \"addSimilarQuestion\": \"類似質問を追加\",\n  \"addQa\": \"QA を追加\",\n  \"inserVar\": \"変数を挿入\",\n  \"download\": \"ダウンロード\",\n  \"com_sop_web_search\": \"Web 検索中\",\n  \"com_sop_search_knowledge_base\": \"ナレッジベース検索中\",\n  \"com_sop_list_files\": \"ディレクトリを照会中\",\n  \"com_sop_get_file_details\": \"ファイル詳細を取得中\",\n  \"com_sop_search_files\": \"ファイル検索中\",\n  \"com_sop_read_text_file\": \"ファイルを読み込み中\",\n  \"com_sop_add_text_to_file\": \"ファイルに内容を追加中\",\n  \"com_sop_replace_file_lines\": \"ファイルを編集中\",\n  \"com_sop_using_tool\": \"{{0}} ツールを使用中\",\n  \"com_sop_waiting_input\": \"入力待ち\",\n  \"com_sop_please_input\": \"入力してください\",\n  \"com_sop_hours\": \"時間\",\n  \"com_sop_minutes\": \"分\",\n  \"com_sop_queue_message\": \"現在利用者が多く、キュー待ちです...\",\n  \"com_sop_estimated_wait\": \"推定待ち時間\",\n  \"com_sop_plan_task_path\": \"タスク実行ルートを計画：\",\n  \"com_sop_execute_tasks\": \"続いて対応するタスクを実行します：\",\n  \"com_sop_task_execution_interrupted\": \"タスク実行が中断されました\",\n  \"com_sop_view_all_files\": \"このタスク内のすべてのファイルを表示\",\n  \"com_webSearch\": \"Web 検索\",\n  \"com_searchQueryLabel\": \"検索クエリ\",\n  \"com_searchResults\": \"検索結果\",\n  \"com_sop_select_all\": \"すべて選択\",\n  \"com_sop_batch_download\": \"一括ダウンロード\",\n  \"com_sop_preview_failed\": \"プレビューに失敗しました\",\n  \"com_sop_file_load_error\": \"ファイル読み込みエラー\",\n  \"com_sop_empty_file\": \"空のファイル\",\n  \"com_sop_select_file\": \"ファイルを選択\",\n  \"com_addAnything\": \"何でも追加\",\n  \"com_dropAnyFileToAdd\": \"ここにファイルをドロップして会話に追加できます\",\n  \"com_ui_upload_file_type_error\": \"このアプリケーションはこのファイル形式のアップロードに対応していません。\",\n  \"more\": \"もっと見る\",\n  \"chatTips\": \"1. 中国の《インターネットセキュリティ法》、《データセキュリティ法》、《個人情報保護法》および《生成型人工知能サービスセキュリティ基本要求》を遵守してください；\\n2. 企業の機密管理規定に該当する機密データのアップロードは禁止されています；\\n3. 個人情報を含むデータのアップロードは禁止されています；\\n4. 悪意のあるプログラムやウイルスを含むファイルのアップロードは禁止されています；\\n5. 攻撃的なコードをAIで生成することは禁止されています；\\n6. 爆発物、テロ、ポルノ、国家安全保障や公共安全に害を及ぼす違法情報などをAIに質問することは禁止されています；\\n7. AIが生成する内容は企業の機密管理規定に従います。ユーザーは生成内容の合理性を実際の状況に基づいて判断し、AIの幻覚によるリスクを避ける必要があります。\",\n  \"com_preview_type_unsupported\": \"このファイルは現在プレビューに対応していません\",\n  \"splitSettingsTooltip\": \"セグメントの目標長と隣接するセグメントの重複長を設定し、コンテキストの繋がりを制御します。原文の画像を保持するかどうかを選択できます。\",\n  \"splitMethodTooltip\": \"ルールの優先順位に従って分割位置を決定します（ドラッグで調整可能）。カスタム正規表現をサポートし、一致した内容の前または後で分割するかを選択できます。\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/dashboard.json",
    "content": "{\n  \"chartSelector\": {\n    \"title\": \"関連グラフ設定\",\n    \"componentName\": \"コンポーネント: {{componentName}}\",\n\n    \"selectCharts\": \"関連グラフを選択\",\n    \"selectAll\": \"すべて選択\",\n    \"unSelectAll\": \"すべて選択解除\",\n    \"unnamedChart\": \"無名グラフ\",\n    \"noDataset\": \"データセット未設定\",\n\n    \"config\": \"クエリ条件設定\",\n    \"displayType\": \"表示タイプ\",\n    \"displayTypes\": {\n      \"timeRange\": \"時間範囲\",\n      \"time\": \"時間\"\n    },\n    \"dashboard\": {\n\n    },\n    \"timeGranularity\": \"時間粒度\",\n    \"granularities\": {\n      \"yearMonth\": \"年月\",\n      \"yearMonthDay\": \"年月日\",\n      \"yearMonthDayHour\": \"年月日時\"\n    },\n    \"setDefault\": \"デフォルト値として設定\",\n    \"datePicker\": {\n      \"placeholder\": \"時間を選択\",\n      \"single\": \"時間\",\n      \"range\": \"時間範囲\"\n    },\n\n    \"buttons\": {\n      \"cancel\": \"キャンセル\",\n      \"save\": \"保存\"\n    },\n\n    \"messages\": {\n      \"saveSuccess\": \"関連グラフ設定を保存しました\",\n      \"noCharts\": \"関連可能なグラフがありません\",\n      \"collapse\": \"関連グラフ設定\"\n    }\n  },\n  \"componentConfigDrawer\": {\n    \"basicConfig\": \"基本設定\",\n    \"customStyle\": \"カスタムスタイル\",\n    \"basicConfigTab\": \"基本設定\",\n    \"styleConfigTab\": \"カスタムスタイル\",\n    \"validation\": {\n      \"validationFailed\": \"検証に失敗しました\",\n      \"chartTypeRequired\": \"グラフタイプを選択してください\",\n      \"categoryRequired\": \"少なくとも1つのカテゴリーディメンションを追加してください\",\n      \"metricRequired\": \"少なくとも1つのメトリックを追加してください\",\n      \"datasetRequired\": \"データセットを選択してください\",\n      \"stackRequired\": \"積み上げグラフにはスタックディメンションが必要です\",\n      \"invalidCategoryFields\": \"カテゴリーディメンションに無効なフィールドがあります\",\n      \"invalidMetricFields\": \"メトリックに無効なフィールドがあります\"\n    },\n    \"chartType\": \"グラフタイプ\",\n    \"selectChartType\": \"グラフタイプを選択\",\n\n    \"categoryAxis\": \"カテゴリ軸 / ディメンション\",\n    \"stackItem\": \"積み上げ項目 / ディメンション\",\n    \"subCategory\": \"サブカテゴリ / ディメンション\",\n    \"valueAxis\": \"値軸 / メトリック\",\n\n    \"sortPriority\": \"ソート優先順位\",\n    \"sortHint\": \"ディメンションまたはメトリックを追加してソート優先順位を調整\",\n\n    \"filter\": \"フィルター\",\n    \"addFilterCondition\": \"フィルター条件を追加\",\n    \"filterConditionsAdded\": \"フィルター条件を追加済み\",\n    \"filterLogicHint\": \" ({{logic}})\",\n\n    \"timeRange\": \"時間範囲\",\n    \"selectTimeRange\": \"時間範囲を選択\",\n\n    \"resultsDisplay\": \"結果表示\",\n    \"allResults\": \"すべて\",\n    \"limitResults\": \"件\",\n\n    \"updateChartData\": \"グラフデータを更新\",\n\n    \"dataSelection\": \"データ選択\",\n\n    \"dialog\": {\n      \"editDisplayName\": \"表示名を編集\",\n      \"originalName\": \"元の名前\",\n      \"displayRequired\": \"名前を入力してください\",\n      \"displayName\": \"表示名\",\n      \"displayNameRequired\": \"表示名 *\",\n      \"enterDisplayName\": \"表示名を入力してください\",\n      \"displayMaxLength\": \"表示名は15文字以内で入力してください\",\n      \"cancel\": \"キャンセル\",\n      \"confirm\": \"確認\",\n      \"chartUpdated\": \"グラフが更新されました\"\n    },\n\n    \"toast\": {\n      \"fieldAlreadyExists\": \"フィールドは既に{{section}}に存在します\",\n      \"dimensionLimitReached\": \"ディメンションの上限に達しました\",\n      \"metricReached\": \"メトリックの上限に達しました\",\n      \"metricLimitReached\": \"現在のメトリクス数は上限に達しました\",\n      \"virtualMetricConflict\": \"仮想指標と通常の指標を同時に追加することはできません\",\n      \"multipleVirtualMetric\": \"複数の仮想指標を同時に追加することはできません\"\n    },\n\n    \"sections\": {\n      \"category\": \"カテゴリ軸\",\n      \"stack\": \"積み上げ項目\",\n      \"value\": \"メトリックエリア\"\n    }\n  },\n\n  \"configPanel\": {\n    \"title\": \"ダッシュボード設定\",\n    \"dashboardStyle\": \"ダッシュボードスタイル\",\n    \"lightTheme\": \"ライトテーマ\",\n    \"darkTheme\": \"ダークテーマ\"\n  },\n  \"datasetSelector\": {\n    \"dataset\": \"データセット\",\n    \"selectDataset\": \"データセットを選択\",\n    \"searchDataset\": \"データセットを検索...\",\n    \"loading\": \"読み込み中...\",\n    \"noDatasetsFound\": \"データセットが見つかりません\",\n    \"dimensions\": \"ディメンション\",\n    \"metrics\": \"メトリック\",\n    \"virtualMetric\": \"*\",\n    \"selectDatasetPrompt\": \"まずデータセットを選択してください\",\n\n    \"fieldTypes\": {\n      \"date\": \"日付\",\n      \"integer\": \"整数\",\n      \"keyword\": \"テキスト\"\n    },\n\n    \"timeGranularity\": {\n      \"year\": \"年\",\n      \"quarter\": \"四半期\",\n      \"month\": \"月\",\n      \"week\": \"週\",\n      \"day\": \"日\",\n      \"hour\": \"時\"\n    }\n  },\n  \"dimensionBlock\": {\n    \"menu\": {\n      \"sort\": \"ソート\",\n      \"aggregation\": \"集計方法\",\n      \"format\": \"数値フォーマット\"\n    },\n    \"aggregation\": {\n      \"sum\": \"合計\",\n      \"avg\": \"平均\",\n      \"count\": \"カウント\",\n      \"max\": \"最大値\",\n      \"min\": \"最小値\",\n      \"distinctCount\": \"ユニークカウント\"\n    },\n    \"sort\": {\n      \"none\": \"なし\",\n      \"asc\": \"昇順\",\n      \"desc\": \"降順\"\n    },\n    \"button\": {\n      \"deleteField\": \"フィールドを削除\"\n    },\n    \"prompt\": {\n      \"dragDimensionHere\": \"ディメンションフィールドをここにドラッグ\",\n      \"dragMetricHere\": \"メトリックフィールドをここにドラッグ\"\n    },\n    \"dialog\": {\n      \"formatTitle\": \"数値フォーマット\",\n      \"chartUpdated\": \"グラフが更新されました\",\n      \"formatType\": \"フォーマットタイプ\",\n      \"decimalPlaces\": \"小数位数\",\n      \"unit\": \"単位\",\n      \"suffix\": \"単位サフィックス\",\n      \"thousandSeparator\": \"桁区切り記号\",\n      \"example\": \"例\",\n      \"none\": \"なし\",\n      \"selectUnit\": \"単位を選択\",\n      \"enterSuffix\": \"サフィックスを入力\",\n      \"formatTypes\": {\n        \"number\": \"数値\",\n        \"percent\": \"パーセント\",\n        \"duration\": \"期間\",\n        \"storage\": \"ストレージサイズ\"\n      }\n    }\n  },\n  \"filterConditionDialog\": {\n    \"title\": \"フィルター条件設定\",\n    \"keywords\": {\n      \"time\": \"時間\",\n      \"date\": \"日付\"\n    },\n    \"placeholders\": {\n      \"selectField\": \"フィールドを選択\",\n      \"filterType\": \"フィルタータイプ\",\n      \"operator\": \"演算子\",\n      \"enterNumber\": \"数値を入力してください\",\n      \"enterValue\": \"値を入力してください\",\n      \"selectEnumValue\": \"列挙値を選択してください\"\n    },\n    \"filterTypes\": {\n      \"conditional\": \"条件フィルター\",\n      \"noFields\": \"フィールドがありません\",\n      \"enum\": \"列挙フィルター\"\n    },\n    \"operators\": {\n      \"equals\": \"等しい\",\n      \"notEquals\": \"等しくない\",\n      \"contains\": \"含む\",\n      \"notContains\": \"含まない\",\n      \"greaterThan\": \"より大きい\",\n      \"greaterThanOrEqual\": \"以上\",\n      \"lessThan\": \"より小さい\",\n      \"lessThanOrEqual\": \"以下\",\n      \"isEmpty\": \"空である\",\n      \"isNotEmpty\": \"空でない\"\n    },\n    \"buttons\": {\n      \"addCondition\": \"条件を追加\",\n      \"cancel\": \"キャンセル\",\n      \"save\": \"保存\"\n    },\n    \"errors\": {\n      \"selectField\": \"フィールドを選択してください\",\n      \"selectOperator\": \"演算子を選択してください\",\n      \"selectEnumValue\": \"列挙値を選択してください\",\n      \"enterFilterValue\": \"フィルター値を入力してください\",\n      \"atLeastOneCondition\": \"有効なフィルター条件を少なくとも1つ設定してください\"\n    },\n    \"toast\": {\n      \"fetchEnumFailed\": \"列挙値の取得に失敗しました。後で再試行してください\",\n      \"virtualMetricConflict\": \"仮想メトリックと通常のメトリックを同時に追加することはできません\",\n      \"multipleVirtualMetric\": \"複数の仮想メトリックを同時に追加することはできません\",\n      \"saveSuccess\": \"保存に成功しました\"\n\n    },\n    \"enumSelect\": {\n      \"placeholder\": \"選択してください\",\n      \"searchPlaceholder\": \"検索...\",\n      \"loading\": \"読み込み中...\",\n      \"selectAll\": \"すべて選択\",\n      \"loadingMore\": \"さらに読み込み...\",\n      \"noMatch\": \"一致するオプションが見つかりません\",\n      \"noData\": \"データがありません\"\n    }\n  },\n  \"styleConfigPanel\": {\n    \"sections\": {\n      \"color\": \"色\",\n      \"title\": \"タイトル\",\n      \"axisTitle\": \"軸タイトル\",\n      \"legend\": \"凡例\",\n      \"metricValue\": \"指標値\",\n      \"subtitle\": \"サブタイトル\",\n      \"chartOptions\": \"チャートオプション\"\n    },\n    \"labels\": {\n      \"themeColor\": \"テーマカラー\",\n      \"bgColor\": \"背景色\",\n      \"titleContent\": \"タイトル内容\",\n      \"textFormat\": \"テキストフォーマット\",\n      \"textContent\": \"テキスト内容\",\n      \"xAxisTitleContent\": \"X軸タイトル内容\",\n      \"xAxisTextFormat\": \"X軸テキストフォーマット\",\n      \"yAxisTitleContent\": \"Y軸タイトル内容\",\n      \"yAxisTextFormat\": \"Y軸テキストフォーマット\",\n      \"legendPosition\": \"凡例の位置\",\n      \"legendTextFormat\": \"凡例テキストフォーマット\"\n    },\n    \"placeholders\": {\n      \"enterTitle\": \"タイトルを入力してください\",\n      \"enterSubtitle\": \"サブタイトルを入力してください\",\n      \"enterXAxisTitle\": \"X軸タイトルを入力してください\",\n      \"enterYAxisTitle\": \"Y軸タイトルを入力してください\"\n    },\n    \"positions\": {\n      \"top\": \"上部\",\n      \"bottom\": \"下部\",\n      \"left\": \"左側\",\n      \"right\": \"右側\"\n    },\n    \"buttons\": {\n      \"show\": \"表示\"\n    },\n    \"options\": {\n      \"legend\": \"凡例\",\n      \"axis\": \"軸\",\n      \"dataLabel\": \"データラベル\",\n      \"gridLine\": \"グリッド線\"\n    }\n  },\n  \"useChartState\": {\n    \"sections\": {\n      \"category\": \"カテゴリーディメンション\",\n      \"stack\": \"スタックディメンション\",\n      \"value\": \"メトリックディメンション\"\n    },\n    \"fieldTypes\": {\n      \"dimension\": \"ディメンション\",\n      \"metric\": \"メトリック\"\n    },\n    \"warn\": {\n      \"invalidFieldType\": \"フィールドタイプ {{fieldType}} を {{section}} エリアにドラッグすることはできません\",\n      \"maxStackDimension\": \"スタックディメンションは1つだけ許可されます。既存のスタックディメンションを先に削除してください\",\n      \"metricLimitReached\": \"現在のメトリクス数は上限に達しました\",\n      \"maxCategoryDimensions\": \"カテゴリーディメンションは最大2つまで許可されます\",\n      \"fieldExists\": \"このフィールドは既に追加されています\"\n    }\n  },\n  \"renameSuccess\": \"名前を変更しました\",\n  \"renameError\": \"名前の変更に失敗しました\",\n  \"shareNotPublished\": \"このダッシュボードはまだ公開されていません\",\n  \"shareCopySuccess\": \"共有リンクをコピーしました\",\n  \"shareCopyError\": \"コピーに失敗しました\",\n  \"publishSuccess\": \"公開されました\",\n  \"unpublishSuccess\": \"公開を取り消しました\",\n  \"operationFailed\": \"操作に失敗しました\",\n  \"selectTime\": \"時間を選択\",\n  \"startHour\": \"開始時間\",\n  \"endHour\": \"終了時間\",\n  \"dynamicUpdate\": \"動的更新\",\n  \"cancel\": \"キャンセル\",\n  \"clear\": \"クリア\",\n  \"confirm\": \"確定\",\n  \"yearUnit\": \"年\",\n  \"monthUnit\": \"月\",\n  \"shortcut\": {\n    \"last_7\": \"過去7日間\",\n    \"last_30\": \"過去30日間\",\n    \"last_90\": \"過去90日間\",\n    \"last_180\": \"過去180日間\"\n  },\n  \"selectComponentToStart\": \"コンポーネントを選択して、データダッシュボードの作成を開始してください\",\n  \"saveSuccess\": \"保存に成功しました\",\n  \"saveFailed\": \"保存に失敗しました\",\n  \"saving\": \"保存中...\",\n  \"unsaved\": \"未保存\",\n  \"saved\": \"保存済み\",\n  \"addChart\": \"チャートを追加\",\n  \"addQueryComponent\": \"クエリコンポーネントを追加\",\n  \"fullScreen\": \"全画面表示\",\n  \"saveAndPublish\": \"保存して公開\",\n  \"save\": \"保存\",\n  \"prompt\": \"ヒント\",\n  \"unsavedChangesWarning\": \"保存されていない変更があります。退出してもよろしいですか？\",\n  \"saveAndLeave\": \"退出して保存\",\n  \"leaveWithoutSaving\": \"保存せず\",\n  \"copyToTargetSuccess\": \"対象のダッシュボードにコピーしました\",\n  \"copyFailed\": \"コピーに失敗しました\",\n  \"confirmDeleteComponent\": \"コンポーネント「{{name}}」を削除してもよろしいですか？\",\n  \"delete\": \"削除\",\n  \"nameRequired\": \"名前は空欄にできません\",\n  \"charLimit200\": \"文字数は1〜200文字の範囲で入力してください\",\n  \"charLimit200b\": \"名前は200文字以内にしてください\",\n  \"rename\": \"名前を変更\",\n  \"duplicate\": \"複製\",\n  \"copyTo\": \"先にコピー\",\n  \"noOtherDashboards\": \"他のダッシュボードはありません\",\n  \"createFailed\": \"作成に失敗しました。もう一度お試しください\",\n  \"maxLimitReached\": \"最大 {{count}} 個のダッシュボードまで作成可能です\",\n  \"untitledDashboard\": \"無題のダッシュボード\",\n  \"dashboardCopyName\": \"{{title}}-コピー\",\n  \"confirmDeleteDashboard\": \"{{title}}を削除しますか？削除後は元に戻せません。\",\n  \"dashboardList\": \"看板一覧\",\n  \"addDashboard\": \"看板を追加\",\n  \"expandList\": \"リストを展開\",\n  \"collapseList\": \"リストを折りたたむ\",\n  \"noMatchingDashboards\": \"該当する看板が見つかりません\",\n  \"noDashboards\": \"ダッシュボードはありません\",\n  \"default\": \"デフォルト\",\n  \"setAsDefault\": \"デフォルトに設定\",\n  \"alreadyDefault\": \"デフォルト設定済み\",\n  \"share\": \"共有\",\n  \"selectADashboard\": \"看板を選択してください\",\n  \"createdBy\": \"作成者\",\n  \"createTime\": \"作成日時\",\n  \"lastUpdateTime\": \"最終更新日時\",\n  \"publish\": \"公開\",\n  \"unpublish\": \"公開中止\",\n  \"editDashboard\": \"看板を編集\",\n  \"editAfterUnpublish\": \"編集するには公開を中止してください\",\n  \"updatingCharts\": \"チャートを更新中\",\n  \"noDataInChart\": \"チャートデータなし\",\n  \"selectDate\": \"日付を選択\",\n  \"query\": \"照会\",\n  \"dashboardOffline\": \"このダッシュボードは現在オフラインです\",\n  \"chart\": {\n    \"barChart\": \"棒グラフ\",\n    \"basicBarChart\": \"基本棒グラフ\",\n    \"stackedBarChart\": \"積立棒グラフ\",\n    \"groupedBarChart\": \"集合棒グラフ\",\n    \"horizontalBarChart\": \"横棒グラフ\",\n    \"basicHorizontalBarChart\": \"基本横棒グラフ\",\n    \"stackedHorizontalBarChart\": \"積立横棒グラフ\",\n    \"groupedHorizontalBarChart\": \"集合横棒グラフ\",\n    \"lineChart\": \"折れ線グラフ\",\n    \"basicLineChart\": \"基本折れ線グラフ\",\n    \"stackedLineChart\": \"積立折れ線グラフ\",\n    \"multipleLineChart\": \"組み合わせグラフ\",\n    \"areaChart\": \"面グラフ\",\n    \"stackedAreaChart\": \"積立面グラフ\",\n    \"pieChart\": \"円グラフ\",\n    \"donutChart\": \"ドーナツグラフ\",\n    \"others\": \"その他\",\n    \"metricCard\": \"指標カード\"\n  },\n  \"mid_user_increment\": \"ユーザースケール統計\",\n  \"timestamp\": {\n    \"year\": \"時間(年)\",\n    \"month\": \"時間(月)\",\n    \"week\": \"時間(週)\",\n    \"day\": \"時間(日)\",\n    \"hour\": \"時間(時)\"\n  },\n  \"user_group_infos\": {\n    \"user_group_id\": \"ユーザーグループID\",\n    \"user_group_name\": \"ユーザーグループ名\"\n  },\n  \"total_user_count\": \"総ユーザー数\",\n  \"new_user_count\": \"新規ユーザー数\",\n  \"mid_active_user\": \"アクティブユーザー規模統計\",\n  \"active_user_count\": \"アクティブユーザー数\",\n  \"mid_app_increment\": \"アプリケーション規模統計\",\n  \"user_id\": \"ユーザーID\",\n  \"user_name\": \"ユーザー名\",\n  \"app_type\": \"アプリケーションタイプ\",\n  \"total_app_count\": \"総アプリケーション数\",\n  \"new_app_count\": \"新規アプリケーション数\",\n  \"mid_sessions_increment\": \"アプリケーション使用状況統計\",\n  \"app_id\": \"アプリケーションID\",\n  \"app_name\": \"アプリケーション名\",\n  \"source\": \"ソースタイプ（プラットフォーム/API）\",\n  \"session_count\": \"セッション回数\",\n  \"platform_user_count\": \"利用人数\",\n  \"api_call_count\": \"APIコール回数\",\n  \"mid_session_run_dtl\": \"アプリケーションの並行処理と時間消費\",\n  \"duration_seconds\": \"セッション実行時間\",\n  \"max_concurrent_sessions\": \"最大同時オンラインセッション数\",\n  \"mid_tool_call_dtl\": \"ツール呼び出し分析\",\n  \"tool_name\": \"ツール名\",\n  \"tool_id\": \"ツールID\",\n  \"tool_type\": \"ツールタイプ\",\n  \"tool_call_count\": \"ツールコール回数\",\n  \"tool_call_success_count\": \"ツールコール成功回数\",\n  \"tool_call_success_rate\": \"ツールコール成功率\",\n  \"mid_knowledge_increment\": \"知識ベースの規模統計\",\n  \"total_document_knowledge_base_count\": \"総ドキュメントナレッジベース数\",\n  \"total_qa_knowledge_base_count\": \"総Q&Aナレッジベース数\",\n  \"new_document_knowledge_base_count\": \"新規ドキュメントナレッジベース数\",\n  \"new_qa_knowledge_base_count\": \"新規Q&Aナレッジベース数\",\n  \"mid_knowledge_file_increment\": \"ナレッジベースファイルの統計\",\n  \"total_file_count\": \"総ファイル数\",\n  \"total_qa_count\": \"総Q&Aペア数\",\n  \"file_size\": \"ファイルサイズ\",\n  \"mid_doc_parse_dtl\": \"ファイル解析性能\",\n  \"parse_type\": \"解析タイプ\",\n  \"status\": \"ファイル最終ステータス\",\n  \"doc_parse_count\": \"ドキュメントアップロード回数\",\n  \"doc_parse_success_count\": \"ドキュメント入庫成功回数\",\n  \"doc_parse_success_rate\": \"ドキュメント入庫成功率\",\n  \"etl_parse_count\": \"ETL処理回数\",\n  \"etl_parse_success_count\": \"ETL処理成功回数\",\n  \"etl_parse_success_rate\": \"ETL処理成功率\",\n  \"mid_model_call_dtl\": \"モデルのコストと性能\",\n  \"user_role_infos\": {\n    \"role_id\": \"ロールID\",\n    \"role_name\": \"ロール名\"\n  },\n  \"model_id\": \"モデルID\",\n  \"model_type\": \"モデルタイプ\",\n  \"model_name\": \"モデル名\",\n  \"model_server_id\": \"サービス提供元ID\",\n  \"model_server_name\": \"サービス提供元名\",\n  \"total_token\": \"Token消費量\",\n  \"model_call_count\": \"モデルコール回数\",\n  \"model_call_success_rate\": \"モデルコール成功率\",\n  \"max_concurrent_llm_sessions\": \"最大LLM同時実行数\",\n  \"avg_first_token_cost_time\": \"平均初回Token応答遅延\",\n  \"mid_user_interact_dtl\": \"ユーザーフィードバック統計\",\n  \"like_count\": \"いいね回数\",\n  \"dislike_count\": \"ネガティブ評価回数\",\n  \"copy_count\": \"コピー回数\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/flow.json",
    "content": "{\n  \"customAssistant\": \"カスタムアシスタント\",\n  \"createAppWithNoCode\": \"役割とタスクを記述してノーコードでアプリを作成\",\n  \"assistantCanUseSkillsAndTools\": \"アシスタントは複数のスキルとツールを使用できます\",\n  \"customWorkflow\": \"カスタムワークフロー\",\n  \"simpleNodeOrchestration\": \"シンプルなノード編成でタスクフローを作成、並列処理と循環をサポート、複雑な人間と機械のインタラクションをサポート\",\n  \"customSkill\": \"カスタムスキル\",\n  \"richComponentsForBuildingApps\": \"アプリ作成のための豊富なコンポーネント、効果調整のための追加パラメータを提供\",\n  \"appTemplate\": \"アプリテンプレート\",\n  \"chooseTemplateOrCreateBlank\": \"テンプレートを選んで開始するか、空のアプリをカスタマイズして作成できます\",\n  \"workflow\": \"ワークフロー\",\n  \"assistant\": \"アシスタント\",\n  \"skill\": \"スキル\",\n  \"search\": \"検索\",\n  \"confirmDeleteTemplate\": \"この{{type}}テンプレートを削除しますか？\",\n  \"delete\": \"削除\",\n  \"short\": \"MM-dd, HH:mm\",\n  \"leaveIdea\": \"ご意見をお聞かせください ~\",\n  \"returnToAppList\": \"アプリ一覧に戻る\",\n  \"templateName\": \"テンプレート名\",\n  \"templateDescription\": \"テンプレートの説明\",\n  \"operations\": \"操作\",\n  \"templateManagementDescription\": \"アプリテンプレート管理。テンプレートはすべてのユーザーに表示され、ドラッグアンドドロップで並べ替えや削除が可能\",\n  \"maxNameLengthAssistant\": \"名前は最大50文字まで\",\n  \"maxNameLengthWorkflow\": \"ワークフロー名は最大50文字まで\",\n  \"minDescLengthAssistant\": \"アシスタントの効果を最大化するため、説明は20文字以上にしてください\",\n  \"edit\": \"編集\",\n  \"create\": \"作成\",\n  \"name\": \"ワークフロー名\",\n  \"assistantAvatar\": \"アシスタントアイコン\",\n  \"workflowAvatar\": \"ワークフローアイコン\",\n  \"giveAssistantAName\": \"アシスタントに名前を付けてください\",\n  \"giveWorkflowAName\": \"ワークフローに名前を付けてください\",\n  \"build_assistantName\": \"アシスタント名\",\n  \"build_roleAndTasks\": \"アシスタントの役割とタスクを記述してください\",\n  \"description\": \"説明\",\n  \"enterWorkflowDescription\": \"ワークフローの説明を入力してください\",\n  \"build_forExample\": \"例：技術的な質問に答えるアシスタントが必要です\",\n  \"cancel\": \"キャンセル\",\n  \"save\": \"保存\",\n  \"hasBeenLaunched\": \"公開済み\",\n  \"hasBeenOffline\": \"オフライン\",\n  \"changesSaved\": \"変更が保存されました\",\n  \"defaultWorkflowData\": \"ワークフロー実験データ\",\n  \"switchToVersion\": \"{{versionName}}に切り替え\",\n  \"currentVersion\": \"現在のバージョン: {{versionName}}\",\n  \"processOrchestration\": \"プロセス編成\",\n  \"externalRelease\": \"外部公開\",\n  \"run\": \"実行\",\n  \"takeOffline\": \"オフラインにする\",\n  \"goOnline\": \"オンラインにする\",\n  \"importWorkflow\": \"ワークフローのインポート\",\n  \"exportWorkflow\": \"ワークフローのエクスポート\",\n  \"prompt\": \"プロンプト\",\n  \"currentVersionLaunched\": \"現在のバージョンは公開済みです。オフラインにするか新しいバージョンとして保存してください\",\n  \"saveAsNewVersion\": \"新しいバージョンとして保存\",\n  \"dontSaveAndSwitch\": \"保存せずに切り替える\",\n  \"unsavedChangesPrompt\": \"保存されていない変更があります。離れてもよろしいですか？\",\n  \"dontSave\": \"保存しない\",\n  \"confirmImport\": \"インポートすると現在のワークフローが上書きされます。インポートしますか？\",\n  \"missingEndNode\": \"終了ノードが不足しています\",\n  \"pleaseLinkStartNode\": \"最初に開始ノードをリンクしてください\",\n  \"unconnectedNodes\": \"接続されていないノードがあります。接続が完了しているか確認してください。\",\n  \"parallelInputOutputNodes\": \"複数のinputまたはoutputノード（ダイアログ入力）は並列実行できません\",\n  \"parallelOutputNodes\": \"複数のoutputノード（入力型インタラクション）は並列実行できません\",\n  \"unconnectedConditionNode\": \"[{{nodeName}}]ノードエラー：接続されていない触点があります\",\n  \"basicNodes\": \"基本ノード\",\n  \"toolNodes\": \"ツールノード\",\n  \"workflowPreview\": \"ワークフロープレビュー\",\n  \"viewLogs\": \"ログを表示\",\n  \"running\": \"実行中\",\n  \"runSuccess\": \"実行成功\",\n  \"runFailed\": \"実行失敗\",\n  \"singleNodeRun\": \"単一ノード実行\",\n  \"runResults\": \"実行結果\",\n  \"value\": \"値\",\n  \"variableNameCannotBeEmpty\": \"変数名は空にできません\",\n  \"variableNameInvalid\": \"変数名は英字、数字、アンダースコアのみで構成され、数字で始めることはできません\",\n  \"variableNameTooLong\": \"変数名は50文字を超えてはなりません\",\n  \"variableNameDuplicate\": \"変数名は重複できません\",\n  \"addNewParameter\": \"+ 新しいパラメータを追加\",\n  \"dataType\": \"データ型\",\n  \"parameterName\": \"パラメータ名\",\n  \"reference\": \"参照\",\n  \"input\": \"入力\",\n  \"selectVariable\": \"変数を選択\",\n  \"selectCondition\": \"条件を選択\",\n  \"equals\": \"等しい\",\n  \"notEquals\": \"等しくない\",\n  \"contains\": \"含む\",\n  \"notContains\": \"含まない\",\n  \"isEmpty\": \"空である\",\n  \"isNotEmpty\": \"空でない\",\n  \"startsWith\": \"始まる\",\n  \"endsWith\": \"終わる\",\n  \"regex\": \"正規表現\",\n  \"selectType\": \"選択してください\",\n  \"inputRegexPlaceholder\": \"正規表現を入力してください\",\n  \"inputValuePlaceholder\": \"値を入力してください\",\n  \"if\": \"もし\",\n  \"else\": \"そうでなければ\",\n  \"addCondition\": \"条件を追加\",\n  \"addBranch\": \"分岐を追加\",\n  \"conditionBranchCannotBeEmpty\": \"条件分岐は空にできません\",\n  \"maxOptionsError\": \"最大で30個のオプションを追加できます\",\n  \"emptyOptionError\": \"オプション内容は空にできません\",\n  \"duplicateOptionError\": \"オプション内容が重複しています\",\n  \"lengthOptionError\": \"オプション内容は50文字を超えてはいけません\",\n  \"addOption\": \"オプションを追加\",\n  \"inputOptionPlaceholder\": \"選択肢名を入力してください\",\n  \"confirm\": \"確認\",\n  \"recent\": \"最近\",\n  \"chatRecords\": \"チャット記録:\",\n  \"formType\": \"フォーム項目タイプ\",\n  \"textInput\": \"テキスト入力\",\n  \"dropdown\": \"ドロップダウンオプション\",\n  \"file\": \"ファイル\",\n  \"text\": \"テキスト\",\n  \"displayName\": \"表示名\",\n  \"variableName\": \"変数名\",\n  \"options\": \"オプション\",\n  \"displayNameRequired\": \"表示名は空にできません\",\n  \"displayNameTooLong\": \"表示名は50文字を超えてはなりません\",\n  \"variableNameRequired\": \"変数名は空にできません\",\n  \"variableNameExists\": \"変数名はすでに存在します\",\n  \"optionsRequired\": \"1つ以上のオプションを追加してください\",\n  \"nameExample\": \"例えば「名前」\",\n  \"categoryExample\": \"例えば「保険カテゴリ」\",\n  \"uploadExample\": \"例えば「昨年の財務報告書をアップロードしてください」\",\n  \"enterVariableName\": \"変数名を入力してください\",\n  \"atLeastOneFormItem\": \"少なくとも1つのフォーム項目を追加してください\",\n  \"editFormItem\": \"フォーム項目を編集\",\n  \"addFormItem\": \"フォーム項目を追加\",\n  \"userInputLabel\": \"ユーザー入力内容変数\",\n  \"userInputPlaceholder\": \"ここが空の場合、ユーザーが手動で意見を入力する必要があります。プレセットテキストの場合、ユーザーはそれを修正して提出できます。\",\n  \"optionsCannotBeEmpty\": \"オプションは空にできません\",\n  \"noInteraction\": \"インタラクションなし\",\n  \"chooseInteraction\": \"選択型インタラクション\",\n  \"chooseInteractionTooltip\": \"ユーザーが選択肢を選ぶためのオプションを提供します。例えば、敏感な操作を実行する際、ユーザーの確認を得る場合などに使用します\",\n  \"inputInteraction\": \"入力型インタラクション\",\n  \"inputInteractionTooltip\": \"ユーザーにテキストを編集する能力を提供します。複数ステップのタスク処理に適しています。例えば、ユーザーがモデル生成内容を直接修正したり、生成内容を改善する意見を入力したりする場合です。ユーザーが提出した内容はoutput_result変数に保存されます。\",\n  \"dbType\": \"データベースタイプ\",\n  \"dbAddress\": \"データベースアドレス\",\n  \"dbName\": \"データベース名\",\n  \"dbUsername\": \"データベースユーザー名\",\n  \"dbPassword\": \"データベースパスワード\",\n  \"dbAddressRequired\": \"データベースアドレスは空にできません\",\n  \"dbAddressTooLong\": \"データベースアドレスは最大200文字までです\",\n  \"dbNameRequired\": \"データベース名は空にできません\",\n  \"dbNameTooLong\": \"データベース名は最大100文字までです\",\n  \"dbUsernameRequired\": \"データベースユーザー名は空にできません\",\n  \"dbUsernameTooLong\": \"データベースユーザー名は最大100文字までです\",\n  \"dbPasswordRequired\": \"データベースパスワードは空にできません\",\n  \"variableInput\": \"変数入力\",\n  \"leaveAndSave\": \"離脱して保存\",\n  \"onlineVersionMessage\": \"現在のバージョンは公開中のため変更できません。新しいバージョンとして保存してください\",\n  \"unsavedChangesMessage\": \"未保存の変更があります。離脱してもよろしいですか？\",\n  \"runNode\": \"このノードを実行\",\n  \"copy\": \"コピー\",\n  \"cannotBeEmpty\": \"{{label}}は空にできません\",\n  \"editReportTemplate\": \"レポートテンプレートを編集\",\n  \"nodeErrorMessage\": \"{{nodeName}}ノードエラー：{{varNameCn}}は無効です\",\n  \"required\": \"必須\",\n  \"isRequired\": \"必須入力項目\",\n  \"documentKnowledgeBase\": \"ドキュメント知識ベース\",\n  \"temporarySessionFiles\": \"一時セッションファイル\",\n  \"storeFilesSentInCurrentSession\": \"現在のセッションで送信されたファイルを保存\",\n  \"displayNameTooltip\": \"ユーザーセッションページにこの名前が表示されます\",\n  \"variableNameTooltipFile\": \"ユーザーセッションページに入力した内容を保存するために使用されます。これを一時セッションファイルリストで選択できます\",\n  \"variableNameTooltip\": \"ユーザーセッションページに入力した内容を保存するために使用され、他のノードでも参照できます\",\n  \"allowMultipleSelect\": \"複数選択を許可\",\n  \"allowUploadMultipleFiles\": \"複数ファイルのアップロードを許可\",\n  \"uploadFileTypes\": \"アップロード可能なファイルタイプ\",\n  \"temporaryKnowledgeBase\": \"一時ナレッジベースに保存します\",\n  \"parseFile\": \"ファイル内容を解析します\",\n  \"notParse\":\"解析せず（元ファイルのまま）\",\n  \"fileParseResult\": \"ファイル解析結果\",  \n  \"filePath\": \"ファイルパス\",\n  \"filePathName\":\"ファイルパス変数名\",\n  \"storeUploadFiles\":\"アップロードされたすべてのファイルのパスリストを保存し、コードノードで読み取りと処理が可能です\",  \n  \"imageVariableName\":\"画像変数名\",\n  \"extractImages\":\" アップロードされたファイルから画像を抽出し、アシスタントや大規模モデルノードがマルチモーダルモデルを使用する場合にこの変数を渡せます\",\n  \"parseLengthLimit\":\"解析結果の長さ上限\",\n  \"storeVariableName\":\"ファイル解析結果を保存する変数名\",\n  \"parseResultName\":\"解析結果変数名\",\n  \"selectFile\":\"ファイル処理戦略を選択してください\",\n  \"fileProcessingStrategy\":\"ファイル処理戦略\",\n  \"fileProcessingStrategyTip\":\"ユーザーがアップロードしたファイルの処理方法を選択してください：\\n· ファイル内容を解析：ファイルからテキストを抽出し、大規模言語モデルなどの後続ノードにコンテキストを提供します。\\n· 解析しない：元のファイルを保持し、マルチモーダルモデルまたはコードノードでの処理に使用します。\",\n  \"dialogProcessingStrategyTip\": \"ユーザーがアップロードしたファイルの処理方法を選択してください：\\n· ファイル内容を解析：ファイルからテキストを抽出し、大規模言語モデルなどの後続ノードにコンテキストを提供します。\\n· 一時知識庫に保存:ファイルは一時的なナレッジベースにアップロードされ、「文書ナレッジベースQ＆A」ノードで使用できます。\\n· 解析しない：元のファイルを保持し、マルチモーダルモデルまたはコードノードでの処理に使用します。\",\n  \"tempKnowledgeBaseName\": \"一時知識ベース名\",\n  \"tempKnowledgeBaseNameTip\": \"この名前でファイルは一時知識ベースにアップロードされ、ドキュメント知識ベースのQAやアシスタントノードで使用できます\",\n  \"fileContentVarName\": \"ファイル内容変数名\",\n  \"fileContentVarTip\": \"ファイルの解析結果の全文がこの変数に保存されます。使用時は、モデルのコンテキスト長に収まらない場合があります\",\n  \"fileContentMaxLength\": \"ファイル内容の最大長\",\n  \"filePathVarName\": \"ファイルパス変数名\",\n  \"filePathVarTip\": \"ファイルパスはこの変数に保存され、後でコードノードで使用できます\",\n  \"uploadImageFile\": \"画像ファイルをアップロード\",\n  \"uploadImageFileTip\": \"アップロードしたファイルから画像ファイルを抽出します。アシスタントや大規模モデルノードでマルチモーダル大規模モデルを使用する場合、この画像を渡すことができます。\",\n  \"invalidFileError\": \"このファイルは認識できません。正しいJSONファイルをインポートしてください\",\n  \"thinking\": \"思考中\",\n  \"thoughtCompleted\": \"深く考えました\",\n  \"variableNameCannotStartWithNumber\": \"変数名は数字で始めてはいけません\",\n  \"variableNameContainsInvalidCharacters\": \"変数名には英字、数字、アンダースコアのみを使用できます\",\n  \"variableNameAlreadyExists\": \"変数名はすでに存在します\",\n  \"character\": \"文字\",\n  \"max50Characters\": \"最大50文字\",\n  \"nodeError\": \"ノードエラー\",\n  \"doesNotExist\": \"存在しません\",\n  \"tmpKnowledgeBaseNotSupportSingleNodeDebug\": \"一時知識ベースは単一ノードのデバッグをサポートしていません\",\n  \"userInputContent\": \"ユーザー入力内容\",\n  \"advancedSearchSettings\": \"高度な検索設定\",\n  \"userAuthVerification\": \"ユーザー知識ベース認証\",\n  \"enableToVerifyUserAccessToKnowledgeBase\": \"オンにすると、ユーザーの知識ベースへのアクセス権を検証します\",\n  \"retrieverWeightSettings\": \"リトリーバー重み設定\",\n  \"adjustWeightForVectorOrKeywordSearch\": \"重みを調整して、ベクター検索とキーワード検索の優先度を決定します\",\n  \"keyword\": \"キーワード\",\n  \"vector\": \"ベクター\",\n  \"retrievalResultReRank\": \"検索結果の再ランキング\",\n  \"useRerankModelForReorderingResults\": \"オンにすると、検索結果を再ランキングモデルで二次的に並べ替えます\",\n  \"selectRerankModel\": \"再ランキングモデルを選択\",\n  \"retrievalResultLength\": \"検索結果の長さ\",\n  \"controlResultTextLengthForModel\": \"このパラメータで、最終的にモデルに渡す知識ベース検索結果のテキストの長さを制御します。モデルの最大コンテキスト長を超えるとエラーが発生する可能性があります\",\n  \"rerankModelCannotBeEmpty\": \"再ランキングモデルは空にできません\",\n  \"insertVariable\": \"変数を挿入\",\n  \"uploadFile\": \"ファイルをアップロード\",\n  \"messageContentVariable\": \"メッセージ内容変数\",\n  \"cannotExceedMaxLength\": \"最大長は {{maxLength}} 文字を超えてはいけません\",\n  \"roundRunResult\": \"第 {{index}} ラウンド実行結果\",\n  \"searchResult\": \"検索結果\",\n  \"resultTooLongDownloadToView\": \"検索結果が長すぎます。ダウンロードして確認してください\",\n  \"downloadFullContent\": \"完全な内容をダウンロード\",\n  \"allTypes\": \"すべてのタイプ\",\n  \"document\": \"ドキュメント\",\n  \"image\": \"画像\",\n  \"enterValidNumber\": \"有効な数字を入力してください\",\n  \"numberExceedsMaxLimit\": \"数字は最大で32ビットの整数（2の32乗）を超えてはいけません\",\n  \"unknownKnowledgeBase\": \"未知の知識ベース\",\n  \"invalidOrDeletedMetadataField\": \"選択したメタデータフィールドが無効または削除されています\",\n  \"selectMetadataField\": \"条件 {index}: メタデータフィールドを選択してください\",\n  \"selectOperator\": \"条件 {index}: 演算子を選択してください\",\n  \"enterValue\": \"条件 {index}: 数値を入力してください\",\n  \"defaultNodeName\": \"メタデータフィルタ\",\n  \"nodeError2\": \"ノードエラー：\\\"{fieldName}\\\"が無効です\",\n  \"metadataFieldValidationError\": \"メタデータフィールドの検証中にエラーが発生しました\",\n  \"noInputNeeded\": \"入力不要\",\n  \"selectOption\": \"オプションを選択してください\",\n  \"enterValue2\": \"値を入力してください\",\n  \"selectTime\": \"時間を選択\",\n  \"unknownField\": \"不明なフィールド\",\n  \"loadingMetadataFields\": \"メタデータフィールドを読み込んでいます...\",\n  \"searchMetadata\": \"メタデータを検索\",\n  \"noMetadataFields\": \"メタデータフィールドはありません\",\n  \"referenceFormatTip\": \"変数を参照する場合は、形式を「YYYY-MM-DD HH:mm:ss」に変更してください。例：「2025-01-10 21:08:20」は2025年1月10日21時08分20秒を示します\",\n  \"+ Add Condition\": \"+ 条件を追加\",\n  \"playbackUnavailable\": \"再生機能は利用できません。管理者に連絡してください。\",\n  \"wordEditorLoadFailed\": \"Wordエディタの読み込みに失敗しました\",\n  \"checkOfficeServiceConfig\": \"Officeサービスの実行状態とアドレス設定が正しいか確認してください。\",\n  \"variableNameEmpty\": \"変数名を空にすることはできません\",\n  \"variableNameStartsWithNumber\": \"変数名は数字で始めることはできません\",\n  \"variableNameInvalidChars\": \"変数名には英字、数字、アンダースコアのみ使用できます\",\n  \"variableValueEmpty\": \"変数値を空にすることはできません\",\n  \"variableValueTooLong\": \"変数値は1000文字を超えることはできません\",\n  \"addVariable\": \"変数を追加\",\n  \"variableValue\": \"変数値\",\n  \"editGlobalVariable\": \"グローバル変数を編集\",\n  \"addGlobalVariable\": \"グローバル変数を追加\",\n  \"variableNameRuleTip\": \"英字、数字、アンダースコアが使用可能。数字で始めることはできません。最大50文字\",\n  \"variableValueRuleTip\": \"変数値は空にできません。最大1000文字\",\n  \"enterVariableValue\": \"変数値を入力\",\n  \"kbQueryToolIntro\": \"## 知識クエリツール紹介\\nユーザーの問題を解決するためにナレッジベースを照会する必要がある場合、知識クエリツールを呼び出し、ユーザーの要求を適切なクエリ（query）に書き換えてツールの入力パラメータとして渡してください。\",\n  \"sqlAgentToolIntro\": \"## sqlagent データベースツール紹介\\n1. 自然言語でユーザーのクエリ要件を正確に記述し、その記述をパラメータ query の値として使用して sqlagent ツールを呼び出してください。\\n2. ユーザーのクエリ要件が複数ある場合は、sqlagent を数回に分けて呼び出してください。\",\n  \"node\": {\n    \"start\": {\n      \"name\": \"開始\",\n      \"description\": \"ワークフロー実行の開始ノード。\",\n      \"开场引导\": \"開場案内\",\n      \"全局变量\": \"グローバル変数\",\n      \"guide_word\": {\n        \"label\": \"開場挨拶\",\n        \"placeholder\": \"ワークフロー実行時にユーザーに送信するメッセージ。Markdown形式に対応。空白の場合は送信しません。\"\n      },\n      \"guide_question\": {\n        \"label\": \"誘導質問\",\n        \"placeholder\": \"誘導質問を入力してください\",\n        \"help\": \"ユーザーが入力するように導く質問を提供します。3つ以上の場合、ランダムに3つを選びます。\"\n      },\n      \"user_info\": {\n        \"label\": \"ユーザー情報\"\n      },\n      \"current_time\": {\n        \"label\": \"現在の時間\"\n      },\n      \"preset_question\": {\n        \"label\": \"予置質問リスト\",\n        \"placeholder\": \"一括で入力する予置質問\",\n        \"help\": \"ドキュメントレビューやレポート生成などに適しており、事前に質問を準備してRAG問答を実行できます。\"\n      },\n      \"custom_variables\": {\n        \"label\": \"カスタムグローバル変数\",\n        \"help\": \"他のノードで参照できる変数を設定します\"\n      }\n    },\n    \"input\": {\n      \"name\": \"入力\",\n      \"接收文本\": \"テキスト受信\",\n      \"description\": \"ユーザーが会話ページで入力する内容を受け取ります。2種類の形式に対応しています：ダイアログ入力、フォーム入力。\",\n      \"user_input_file\":{\n        \"label\": \"ファイル受信\"\n      },\n      \"recommended_questions_flag\": {\n        \"label\": \"インテリジェント推奨質問\",\n        \"help\": \"会話履歴に基づいて、ユーザーが入力する可能性のある内容を予測し、会話中に表示します\"\n      },\n      \"recommended_llm\": {\n        \"label\": \"モデル\",\n        \"placeholder\":\"モデルを選択してください\"\n      },\n      \"recommended_system_prompt\": {\n        \"label\": \"プロンプト\",\n        \"value\": \"# Role\\nYou are a highly insightful \\\"Conversation Continuation Prediction Expert.\\\" Your task is to predict the three phrases or questions the user is most likely to input next, based on the current conversation history.\\n\\n# Context Awareness\\nBefore generating predictions, please carry out the following in-depth reasoning steps:\\n1. **Intent Analysis**: Is the user currently seeking facts, expressing emotions, requesting advice, or attempting to end the conversation?\\n2. **Logical Inference**: Based on the AI\\u2019s previous reply, what is the most natural association or question that would arise for the user?\\n3. **Style Alignment**: Observe the user\\u2019s wording habits (professional, casual, brief, or detailed). The predictions should maintain a consistent tone.\\n\\n# Goals\\n- **Diversity**: Provide follow-ups from different directions (e.g., an in-depth exploratory question, a related new topic, a feedback-oriented comment).\\n- **Conciseness**: Predictions should be short and to the point, typically no more than 15 words, making them easy for the user to click.\\n- **Forward-looking**: Anticipate the user\\u2019s \\u201cpain points\\u201d and directly offer an entry point to a solution.\\n\\n# Output Format\\nPlease strictly adhere to JSON format in the output.\\nReturn a JSON object containing a single key named \\u201csuggestions\\u201d.\\n- All strings must use **double quotes**.\\n- Do not output Markdown code block markers (such as ```json); output the raw JSON string directly.\\n**Example:**\\n{\\\"suggestions\\\": [\\\"Can you give an example?\\\", \\\"What is the cost of this solution?\\\", \\\"Sounds good\\u2014how do I get started?\\\"]}\"\n      },\n      \"recommended_history_num\": {\n        \"label\": \"履歴メッセージ数\",\n        \"help\": \"推奨質問を生成する際にモデルが参照する履歴対話のメッセージ数\"\n      },\n      \"tab_dialog_input\": {\n        \"label\": \"ダイアログ入力\",\n        \"help\": \"ユーザーがダイアログボックスに入力した内容を受け取ります。\"\n      },\n      \"tab_form_input\": {\n        \"label\": \"フォーム入力\",\n        \"help\": \"ユーザー会話ページにフォームが表示され、ユーザーがフォームを送信した内容を受け取ります。\"\n      },\n      \"user_input\": {\n        \"label\": \"入力テキスト内容\"\n      },\n      \"dialog_files_content\": {\n        \"label\": \"アップロードされたファイルの内容\"\n      },\n      \"dialog_files_content_size\": {\n        \"label\": \"ファイル内容の最大サイズ\"\n      },\n      \"dialog_file_accept\": {\n        \"label\": \"アップロードできるファイルタイプ\"\n      },\n      \"dialog_image_files\": {\n        \"label\": \"画像ファイルのアップロード\",\n        \"help\": \"アップロードしたファイルから画像を抽出します。アシスタントや大規模モデルノードでマルチモーダル大規模モデルを使用する場合、この画像を渡します。\"\n      },\n      \"form_input\": {\n        \"label\": \"+ フォーム項目を追加\"\n      }\n    },\n    \"output\": {\n      \"name\": \"出力\",\n      \"description\": \"ユーザーにテキストやファイルを送信できます。また、より豊かなインタラクションをサポートします。例えば、ユーザーに敏感な操作を承認してもらう、またはモデルの出力内容をユーザーが直接修正して送信することを許可します。\",\n      \"message\": {\n        \"label\": \"メッセージ内容\",\n        \"placeholder\": \"ユーザーに送信するメッセージを入力してください。例：「次にXX操作を実行しますので、ご確認ください」や「これが私の初稿です、あなたはその上で修正できます」\"\n      },\n      \"output_result\": {\n        \"label\": \"インタラクションタイプ\"\n      }\n    },\n    \"llm\": {\n      \"name\": \"大規模モデル\",\n      \"description\": \"ユーザーの質問に答えたり、タスクを処理したりするために大規模モデルを呼び出します。\",\n      \"tab_single\": {\n        \"label\": \"単回実行\"\n      },\n      \"tab_batch\": {\n        \"label\": \"バッチ実行\"\n      },\n      \"batch_variable\": {\n        \"label\": \"バッチ処理変数\",\n        \"placeholder\": \"バッチ処理する変数を選択してください\",\n        \"help\": \"バッチ処理する変数を選択すると、このノードは複数回実行されます。実行するたびに選択した変数から一つを取り、`batch_variable`に代入して処理します。\"\n      },\n      \"模型设置\": \"モデル設定\",\n      \"提示词\": \"プロンプト\",\n      \"输出\": \"出力\",\n      \"model_id\": {\n        \"label\": \"モデル\",\n        \"placeholder\": \"モデル管理でLLMモデルを設定してください\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"system_prompt\": {\n        \"label\": \"システムプロンプト\"\n      },\n      \"user_prompt\": {\n        \"label\": \"ユーザープロンプト\"\n      },\n      \"image_prompt\": {\n        \"label\": \"視覚\",\n        \"help\": \"マルチモーダル大規模モデルを使用する場合、この機能で画像を渡して、画像内容に基づく質問を行います\"\n      },\n      \"output_user\": {\n        \"label\": \"出力結果を会話に表示\",\n        \"help\": \"通常はQ&Aなどで有効、文書レビューやレポート生成などでは無効にします\"\n      },\n      \"output\": {\n        \"label\": \"出力変数\",\n        \"help\": \"モデルの出力内容がこの変数に保存されます\"\n      }\n    },\n    \"agent\": {\n      \"name\": \"アシスタント\",\n      \"description\": \"AIがタスクを自動的に計画し、適切な知識ベース、データベース、ツールを選択して呼び出します。\",\n      \"tab_single\": {\n        \"label\": \"単回実行\"\n      },\n      \"tab_batch\": {\n        \"label\": \"バッチ実行\"\n      },\n      \"batch_variable\": {\n        \"label\": \"バッチ処理変数\",\n        \"placeholder\": \"バッチ処理する変数を選択してください\",\n        \"help\": \"バッチ処理する変数を選択すると、このノードは複数回実行されます。実行するたびに選択した変数から一つを取り、`batch_variable`に代入して処理します。\"\n      },\n      \"模型设置\": \"モデル設定\",\n      \"提示词\": \"プロンプト\",\n      \"知识库\": \"知識ベース\",\n      \"数据库\": \"データベース\",\n      \"工具\": \"ツール\",\n      \"输出\": \"出力\",\n      \"model_id\": {\n        \"label\": \"モデル\",\n        \"placeholder\": \"システムモデル設定でアシスタント推論モデルを設定してください\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"system_prompt\": {\n        \"label\": \"システムプロンプト\",\n        \"placeholder\": \"アシスタントの描写\",\n        \"value\": \"あなたはインテリジェントなAIアシスタントです。ユーザーのニーズに応じて、適切なツール（もしあれば）を呼び出し、ユーザーの課題を解決することを得意としています。\\n現在の時刻は {{#start/current_time#}} です。\"\n      },\n      \"user_prompt\": {\n        \"label\": \"ユーザープロンプト\",\n        \"placeholder\": \"ユーザーメッセージ内容\"\n      },\n      \"chat_history_flag\": {\n        \"label\": \"履歴チャット\",\n        \"help\": \"モデルコンテキストに履歴メッセージの数を含めます。0の場合、コンテキスト情報は含まれません\"\n      },\n      \"image_prompt\": {\n        \"label\": \"視覚\",\n        \"help\": \"マルチモーダル大規模モデルを使用する場合、この機能で画像を渡して、画像内容に基づく質問を行います\"\n      },\n      \"knowledge_id\": {\n        \"label\": \"検索する知識ベースの範囲\",\n        \"placeholder\": \"知識ベースを選択してください\"\n      },\n      \"sql_agent\": {\n        \"label\": \"データベース設定\"\n      },\n      \"tool_list\": {\n        \"label\": \"+ ツールを追加\"\n      },\n      \"output_user\": {\n        \"label\": \"出力結果を会話に表示\",\n        \"help\": \"通常はQ&Aなどで有効、文書レビューやレポート生成などでは無効にします\"\n      },\n      \"output\": {\n        \"label\": \"出力変数\",\n        \"help\": \"モデルの出力内容がこの変数に保存されます\"\n      }\n    },\n    \"qa_retriever\": {\n      \"name\": \"QA知識ベース検索\",\n      \"description\": \"QA知識ベースから質問とその回答を検索します。\",\n      \"检索设置\": \"検索設定\",\n      \"输出\": \"出力\",\n      \"user_question\": {\n        \"label\": \"入力変数\",\n        \"placeholder\": \"検索する質問を選択してください\"\n      },\n      \"qa_knowledge_id\": {\n        \"label\": \"QA知識ベース\",\n        \"placeholder\": \"QA知識ベースを選択してください\"\n      },\n      \"score\": {\n        \"label\": \"類似度閾値\",\n        \"help\": \"閾値未満の結果はフィルタリングされます\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"検索結果\"\n      }\n    },\n    \"rag\": {\n      \"name\": \"文書知識ベースQA\",\n      \"description\": \"ユーザーの質問に基づき知識ベースから関連内容を検索し、検索結果を用いて大規模モデルで最終結果を生成します。複数の質問を並行して処理できます。\",\n      \"知识库检索设置\": \"知識ベース検索設定\",\n      \"AI回复生成设置\": \"AI応答生成設定\",\n      \"输出\": \"出力\",\n      \"user_question\": {\n        \"label\": \"ユーザーの質問\",\n        \"placeholder\": \"ユーザーの質問を選択してください\",\n        \"help\": \"複数の質問を選択すると、このノードは何度も実行されます。毎回バッチの質問から1つを取り出して処理します。\"\n      },\n      \"knowledge\": {\n        \"label\": \"検索範囲\",\n        \"placeholder\": \"知識ベースを選択してください\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"メタデータフィルタ\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"高度な検索設定\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"検索結果\"\n      },\n      \"system_prompt\": {\n        \"label\": \"システムプロンプト\",\n        \"value\": \"あなたは知識ベースQAアシスタントです。以下のルールに従って質問に答えてください：\\n1. 日本語で正確かつ専門的に答えてください。\\n2. 回答は必ず【参考テキスト】の内容に基づいて行ってください：\\n\\n- 【参考テキスト】に明確に関連する内容がある場合、それに基づいて回答してください；もし関連する内容がない場合は、「関連する内容は見つかりませんでした」と回答してください。\\n- 【参考テキスト】にMarkdown形式の画像（例：![image](パス/IMAGE_1.png)）が含まれている場合、そのMarkdown形式をそのまま保持し、引用符やコードブロック（`または```）などの特殊文字を加えず、画像パスを変更しないでください。\"\n      },\n      \"user_prompt\": {\n        \"label\": \"ユーザープロンプト\",\n        \"value\": \"ユーザーの質問：```{{#user_question#}}```\\n参考テキスト：```{{#retrieved_result#}}```\\nあなたの回答：\"\n      },\n      \"model_id\": {\n        \"label\": \"モデル\",\n        \"placeholder\": \"モデル管理でLLMモデルを設定してください\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"output_user\": {\n        \"label\": \"出力結果を会話に表示\",\n        \"help\": \"通常はQ&Aなどで有効、文書レビューやレポート生成などでは無効にします\"\n      },\n      \"output_user_input\": {\n        \"label\": \"出力変数\",\n        \"help\": \"モデルの出力内容がこの変数に保存されます\"\n      }\n    },\n    \"knowledge_retriever\": {\n      \"name\": \"文書知識ベース検索\",\n      \"description\": \"ユーザーの質問に基づき知識ベースから関連内容を検索し、検索結果を使用して大規模モデルで最終結果を生成します。複数の質問を並行して実行できます。\",\n      \"知识库检索设置\": \"知識ベース検索設定\",\n      \"输出\": \"出力\",\n      \"user_question\": {\n        \"label\": \"ユーザーの質問\",\n        \"placeholder\": \"検索する質問を選択してください\",\n        \"help\": \"複数の質問を選択すると、このノードは何度も実行されます。毎回バッチから1つの質問を取り出して処理します。\"\n      },\n      \"knowledge\": {\n        \"label\": \"検索範囲\",\n        \"placeholder\": \"知識ベースを選択してください\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"メタデータフィルタ\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"高度な検索設定\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"検索結果\"\n      }\n    },\n    \"report\": {\n      \"name\": \"レポート\",\n      \"description\": \"事前に設定されたWordテンプレートに従ってレポートを生成します。\",\n      \"report_info\": {\n        \"label\": \"レポート名\",\n        \"placeholder\": \"生成するレポートの名前を入力してください\"\n      }\n    },\n    \"code\": {\n      \"name\": \"コード\",\n      \"description\": \"実行するカスタムコードを定義します。\",\n      \"入参\": \"入力パラメータ\",\n      \"执行代码\": \"コード実行\",\n      \"出参\": \"出力パラメータ\",\n      \"code_input\": {\n        \"label\": \"入力パラメータ\"\n      },\n      \"code_output\": {\n        \"label\": \"出力パラメータ\"\n      }\n    },\n    \"condition\": {\n      \"name\": \"条件分岐\",\n      \"description\": \"条件式に基づいて異なる分岐を実行します。\"\n    },\n    \"end\": {\n      \"name\": \"終了\",\n      \"description\": \"ワークフローの実行が終了するノードです。\"\n    },\n    \"tool\": {\n      \"工具参数\": \"ツールパラメータ\",\n      \"输出\": \"出力\",\n      \"output\": {\n        \"label\": \"出力変数\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/knowledge.json",
    "content": "{\n    \"predefinedRules\": {\n        \"singleNewlineRule\": {\n            \"label\": \"単一行間後分割\",\n            \"desc\": \"単一改行で分割（通常換行）\"\n        },\n        \"doubleNewlineRule\": {\n            \"label\": \"二重改行後分割\",\n            \"desc\": \"二重改行で分割（段落区切り）\"\n        },\n        \"chapterRule\": {\n            \"label\": \"第.{1,3}章\",\n            \"desc\": \"「第X章」の前で分割（章区切り）\"\n        },\n        \"articleRule\": {\n            \"label\": \"第.{1,3}節\",\n            \"desc\": \"「第X条」の前で分割（条文区切り）\"\n        },\n        \"chinesePeriodRule\": {\n            \"label\": \"中国語句点後分割\",\n            \"desc\": \"中国語の句点後で分割\"\n        },\n        \"englishPeriodRule\": {\n            \"label\": \"英語ピリオド後分割\",\n            \"desc\": \"英語のピリオド後で分割\"\n        }\n    },\n    \"confirm1\": \"確定\",\n    \"now\": \"今\",\n    \"hour\": \"時\",\n    \"minute\": \"分\",\n    \"second\": \"秒\",\n    \"unavailable\": \"音声再生機能は利用できません。管理者に連絡してください。\",\n    \"placeholder\": \"日付を選択\",\n    \"chunk\": \"チャンク\",\n    \"source_unknown\": \"不明\",\n    \"source_manual\": \"手動作成\",\n    \"source_annotation_import\": \"アノテーションインポート\",\n    \"source_api_import\": \"APIインポート\",\n    \"source_batch_import\": \"一括インポート\",\n    \"chunkContentCannotBeEmpty\": \"チャンクの内容は空にできません\",\n    \"clickLocateOriginalFile\": \"クリックして原ファイルに定位してください\",\n    \"clickShowMarkdownEdit\": \"クリックしてMarkdown原文を表示し、編集してください\",\n    \"clickDeleteChunk\": \"削除区分\",\n    \"noAnalysisResult\": \"解析結果はありません\",\n    \"filePathEmpty\": \"ファイルパスが空です\",\n    \"fileLoadFailed\": \"ファイル読み込み失敗\",\n    \"fileContentEmpty\": \"ファイル内容が空です\",\n    \"excelContentEmpty\": \"Excel内容が空です\",\n    \"unsupportedType\": \"サポートされていないタイプ: {{type}}，CSV/XLSX/XLSのみ対応\",\n    \"sheetParseError\": \"シート解析エラー\",\n    \"unknownError\": \"不明なエラー\",\n    \"currentSheetNoData\": \"現在のシートにデータがありません\",\n    \"rowNumber\": \"行番号\",\n    \"defaultColumnName\": \"列{{index}}\",\n    \"loading\": \"ファイル読み込み中...\",\n    \"supportedFormats\": \"CSV、XLSX、XLS形式に対応\",\n    \"previewFailed\": \"プレビュー失敗\",\n    \"downloadOriginal\": \"元ファイルをダウンロード\",\n    \"everyRowsAsOneSegment\": \"毎{{count}}行を1セグメントとして\",\n    \"confirmDeleteSelectedFiles\": \"選択したファイル（{{count}}個）を削除しますか\",\n    \"metacommon\": {\n        \"delete\": \"削除\",\n        \"cancel\": \"キャンセル\",\n        \"save\": \"保存\",\n        \"none\": \"なし\"\n    },\n    \"metadatainfor\": {\n        \"title\": \"メタデータ\",\n        \"addMetadata\": \"メタデータを追加\",\n        \"enterText\": \"テキストを入力してください\",\n        \"selectTime\": \"時間を選択\",\n        \"searchMetadata\": \"メタデータを検索\",\n        \"createMetadata\": \"メタデータを新規作成\",\n        \"enterNewMetadataInfo\": \"新しいメタデータの名称とタイプを入力してください。\",\n        \"type\": \"タイプ\",\n        \"name\": \"名称\",\n        \"enterMetadataName\": \"メタデータ名を入力してください\"\n    },\n    \"fileinfor\": {\n        \"documentInfo\": \"ドキュメント情報\",\n        \"fileId\": \"ファイルID\",\n        \"fileName\": \"ファイル名\",\n        \"createTime\": \"作成時間\",\n        \"updateTime\": \"更新時間\",\n        \"creator\": \"作成者\",\n        \"updater\": \"更新者\",\n        \"originalFileSize\": \"元ファイルサイズ\",\n        \"splitStrategy\": \"分割ルール\",\n        \"fullTextSummary\": \"全文要約\"\n    },\n    \"common\": {\n        \"back\": \"戻る\",\n        \"success\": \"成功\",\n        \"noPermission\": \"操作権限がありません\"\n    },\n    \"file\": {\n        \"selectFile\": \"ファイルを選択\",\n        \"searchFiles\": \"ファイルを検索\",\n        \"previewNotAvailable\": \"ファイルをプレビューできません\",\n        \"fileNotFound\": \"選択されたファイルが見つかりません\",\n        \"changeFailed\": \"ファイル切り替えに失敗しました\",\n        \"loadFailed\": \"ファイルリストの読み込みに失敗しました\",\n        \"unnamedFile\": \"名称未設定ファイル\",\n        \"excelRule\": \"毎 {{length}} 行を1つのセグメントとして扱う\",\n        \"noSearchResults\": \"一致するファイルが見つかりません\",\n        \"noFiles\": \"ファイルはありません\",\n        \"noMoreFiles\": \"これ以上のファイルはありません\"\n    },\n    \"segment\": {\n        \"searchSegments\": \"セグメントを検索\",\n        \"adjustStrategy\": \"分割ルールを調整\",\n        \"noData\": \"セグメントデータがありません\"\n    },\n    \"metadialog\": {\n        \"title\": \"メタデータ\",\n        \"nameRequired\": \"名称は必須です。\",\n        \"nameTooLong\": \"名称は255文字を超えることはできません。\",\n        \"nameInvalid\": \"小文字で始まり、小文字、数字、アンダースコアのみ使用できます。\",\n        \"nameExists\": \"メタデータ名はすでに存在します。\",\n        \"nameReserved\": \"この名称はシステム内蔵メタデータのため使用できません\",\n        \"saveSuccess\": \"メタデータが正常に保存されました\",\n        \"saveFailed\": \"保存に失敗しました。ネットワークを確認するか管理者へ問い合わせてください\",\n        \"alreadyExists\": \"このメタデータはすでに存在しています。重複追加できません。\"\n    },\n    \"knowledgeBaseSettings\": \"ナレッジベース設定\",\n    \"enterKnowledgeBaseDescription\": \"ナレッジベースの説明を入力してください\",\n    \"noAvailableModels\": \"利用可能なモデルはありません\",\n    \"embeddingModelChangeWarning\": \"embeddingモデルを変更すると大量のリソースを消費し、時間がかかる可能性があります。ご注意ください\",\n    \"finishCreate\": \"作成完了\",\n    \"copySuffix\": \" コピー\",\n    \"noOperationPermission\": \"操作権限がありません\",\n    \"fileManagement\": \"ファイル管理\",\n    \"chunkManagement\": \"セグメント管理\",\n    \"back\": \"戻る\",\n    \"previewHint\": \"左側のボタンをクリックして結果をプレビュー\",\n    \"uploadHint\": \"まずファイルをアップロードしてください\",\n    \"nameRequired\": \"ナレッジベース名は必須です\",\n    \"documentDataParsingCompleted\": \"ドキュメントデータの解析が完了しました\",\n    \"documentDataBeingPrepared\": \"ドキュメントデータを準備中\",\n    \"youCanReturn\": \"ナレッジベースファイル一覧に戻り解析状態を確認できます\",\n    \"returnToKnowledgeBase\": \"ナレッジベースに戻る\",\n    \"buildKnowledgeBaseQaAgent\": \"ナレッジベースQAエージェント構築\",\n    \"afterDocumentParsing\": \"ドキュメント解析完了後、テンプレートを利用してQAエージェントを作成・テストできます\",\n    \"documentKnowledgeQa\": \"ドキュメントナレッジベースQA-\",\n    \"retrieveDocumentKnowledge\": \"ドキュメントナレッジベースを検索し回答します。\",\n    \"characters\": \"文字\",\n    \"retainImagesTooltip\": \"解析時に画像内容を保持し、QAで画像付き回答をサポートします。\",\n    \"minRowGreaterThanMaxRow\": \"最小行は最大行より大きくできません\",\n    \"overlapGreaterThanChunkSize\": \"重複区間は切分サイズより大きくできません\",\n    \"customRuleNotEmpty\": \"カスタムルールは空にできません\",\n    \"addAtLeastOneSplitRule\": \"少なくとも1つの分割ルールを追加してください\",\n    \"defStrategy\": \"デフォルトルール\",\n    \"cusStrategy\": \"カスタムルール\",\n    \"repreviewSegmentation\": \"セグメント再プレビュー\",\n    \"customRule\": \"カスタムルール\",\n    \"singleNewlineRule\": \"単一改行で分割（通常の改行区切り用）\",\n    \"doubleNewlineRule\": \"二重改行で分割（段落区切り用）\",\n    \"chapterRule\": \"「第X章」の前で分割（章区切り）\",\n    \"articleRule\": \"「第X条」の前で分割（条文区切り）\",\n    \"chinesePeriodRule\": \"中国語の句点後で分割\",\n    \"englishPeriodRule\": \"英語のピリオド後で分割\",\n    \"splitt\": \"分割\",\n    \"similarQuestionsPreview\": \"類似質問（上位10件のみ表示）\",\n    \"noSimilarQuestions\": \"類似質問はありません\",\n    \"importQA\": \"QAをインポート\",\n    \"upFile\": \"ファイルをアップロードしてください\",\n    \"exampleFile\": \"サンプルファイル\",\n    \"qaImportExampleFile\": \"QAインポート形式サンプル.xlsx\",\n    \"importPreview\": \"インポートプレビュー（上位10件のみ表示）\",\n    \"emptyUploadData\": \"アップロード質問が空です。ご確認ください\",\n    \"excelFileTypeError\": \"xlsx、xls形式のファイルをアップロードしてください\",\n    \"excelFileEmpty\": \"Excelファイルが空です\",\n    \"excelParseError\": \"Excelファイル解析に失敗しました\",\n    \"fileReadError\": \"ファイル読み取り失敗\",\n    \"missingRequiredColumns\": \"必要な列が不足: {{columns}}\",\n    \"settings\": \"設定\",\n    \"name\": \"ナレッジベース名\",\n    \"metaData\": \"メタデータ\",\n    \"segmentationStrategy\": \"分割ルール\",\n    \"namePlaceholder\": \"ナレッジベース名を入力してください\",\n    \"desc\": \"ナレッジベース説明\",\n    \"descPlaceholder\": \"説明を入力してください\",\n    \"searchFileName\": \"ファイル名を検索\",\n    \"uploadFile\": \"アップロード\",\n    \"segmentStrategy\": \"セグメントルール\",\n    \"textComparison\": \"原文比較\",\n    \"dataProcessing\": \"データ処理\",\n    \"fileName\": \"ファイル名\",\n    \"status\": \"ステータス\",\n    \"all\": \"すべて\",\n    \"reset\": \"リセット\",\n    \"parsing\": \"解析中\",\n    \"retry\": \"再試行\",\n    \"completed\": \"完了\",\n    \"queuing\": \"待機中\",\n    \"timeout\": \"タイムアウト\",\n    \"timeoutTip\": \"待機時間が24時間を超えました。管理者に連絡してリソースを追加することをお勧めします。\",\n    \"parseFailed\": \"解析失敗\",\n    \"uploadTime\": \"アップロード時間\",\n    \"operations\": \"操作\",\n    \"view\": \"表示\",\n    \"delete\": \"削除\",\n    \"policyChangeDetected\": \"ルール変更を検出しました，\",\n    \"createMetadata\": \"メタデータ新規作成\",\n    \"builtInMetadata\": \"内蔵メタデータ\",\n    \"builtInMetadataTooltip\": \"システムに内蔵されたメタデータ\",\n    \"createMetadataDescription\": \"新しいメタデータのタイプと名称を定義してください。\",\n    \"pleaseEnter\": \"入力してください\",\n    \"save\": \"保存\",\n    \"saving\": \"保存中...\",\n    \"rename\": \"名前変更\",\n    \"renameDescription\": \"新しい名称を入力してください\",\n    \"tip\": \"提示\",\n    \"confirmDelete\": \"削除を確認しますか？\",\n    \"confirmDeleteMetadata\": \"このメタデータを削除しますか？\",\n    \"builtInNameError\": \"この名称は内蔵メタデータのため使用できません\",\n    \"nameTooLong\": \"名称は255文字以内である必要があります。\",\n    \"nameFormatError\": \"小文字で始まり、小文字、数字、アンダースコアのみ使用可能です。\",\n    \"nameExists\": \"メタデータ名はすでに存在します。\",\n    \"knowledgeIdMissing\": \"ナレッジベースIDが存在しないため作成できません\",\n    \"inputInvalid\": \"入力形式が無効です\",\n    \"renameFailed\": \"メタデータ名変更に失敗しました。後でもう一度試してください\",\n    \"deleteFailed\": \"メタデータ削除に失敗しました。後で再試行してください\",\n    \"regeneratePreview\": \"プレビューを再生成\",\n    \"in\": \"で\",\n    \"enterRegex\": \"正規表現を入力してください\",\n    \"before\": \"前\",\n    \"after\": \"後\",\n    \"add\": \"追加\",\n    \"addCustomRule\": \"カスタムルールを追加\",\n    \"splitPriorityInfo\": \"分割優先度は上から順に高い。ドラッグで調整可能\",\n    \"step1UploadFile\": \"① ファイルをアップロード\",\n    \"step2DocProcessing\": \"② 文書処理ルール\",\n    \"totalFiles\": \"合計{{count}}個のファイル\",\n    \"nextStep\": \"次へ\",\n    \"addSuccess\": \"追加成功\",\n    \"uploadDirectly\": \"直接アップロード\",\n    \"docProcessingStrategy\": \"文書処理戦略\",\n    \"defaultStrategy\": \"文書ファイル\",\n    \"customStrategy\": \"表計算ファイル\",\n    \"splitMethod\": \"分割ルール\",\n    \"splitMethodHint\": \"下の選択項目を選ぶか、正規表現でカスタム分割ルールを設定できます。「第.{1,3}条」で分割すると「第1条」「第ab条」「第三条」などの前で分割されます。\",\n    \"splitLength\": \"期待分割長\",\n    \"split\": \"分割長\",\n    \"every\": \"毎\",\n    \"row\": \"行\",\n    \"bonly\": \"第\",\n    \"arrive\": \"〜\",\n    \"gauge\": \"表頭として扱う\",\n    \"segemnt\": \"1つのセグメントとして扱う\",\n    \"splitSettings\": \"分割共通設定\",\n    \"keepImages\": \"画像を保持する\",\n    \"setSeparately\": \"各表ごとに個別設定\",\n    \"addHeader\": \"セグメントに表頭を追加\",\n    \"pdfAnalysis\": \"PDF解析ルール\",\n    \"ocrForce\": \"OCRを強制有効化\",\n    \"ocrForceTip\": \"有効化するとスキャン画像やPDFの文字認識、表構造抽出が可能になります\",\n    \"enableRec\": \"数式認識を有効化\",\n    \"hfFilter\": \"ヘッダー/フッターを除外\",\n    \"splitSizePlaceholder\": \"分割長を入力してください\",\n    \"chunkOverlap\": \"オーバーラップ長\",\n    \"chunkOverlapPlaceholder\": \"オーバーラップ長を入力してください\",\n    \"previousStep\": \"前へ\",\n    \"submit\": \"提出\",\n    \"previewResults\": \"分割結果プレビュー\",\n    \"splitContent\": \"セグメント内容\",\n    \"markdownPreview\": \"Markdownプレビュー\",\n    \"editSuccess\": \"編集成功\",\n    \"inputNotEmpty\": \"入力内容は空にできません\",\n    \"segmentRangeDetected\": \"セグメント範囲変更を検出しました，\",\n    \"overwriteSegment\": \"セグメント内容を上書き\",\n    \"backToPosition\": \"位置に戻る\",\n    \"prompt\": \"提示\",\n    \"confirmDeleteSegment\": \"セグメントを削除しますか？\",\n    \"edit\": \"編集\",\n    \"charCount\": \"{{count}}文字\",\n    \"searchSegments\": \"関連セグメントを検索\",\n    \"selectFile\": \"ファイルを選択\",\n    \"uploadPrompt\": \"先にファイルをアップロードしてください\",\n    \"confirmDeleteFile\": \"このファイルを削除しますか？\",\n    \"modalTitle\": \"ファイル重複の提示\",\n    \"modalMessage\": \"以下のファイルはすでにナレッジベースに存在します。アップロードを続行すると元ファイルと処理ルールが上書きされます。上書きしますか？\",\n    \"keepOriginal\": \"上書きせず元ファイルを保持\",\n    \"override\": \"上書き\",\n    \"fileUploadResult\": \"合計 {{total}} 件中、{{failed}} 件のアップロードに失敗しました\",\n    \"modifySelection\": \"元ファイルの選択範囲を調整して分割内容を変更できます\",\n    \"cancel\": \"キャンセル\",\n    \"dontRemind\": \"今後は表示しない\",\n    \"confirmDeleteSelectedQaData\": \"選択したQAデータを削除しますか！\",\n    \"selectedItems\": \"選択済み\",\n    \"batchDelete\": \"一括削除\",\n    \"qaContent\": \"QA内容\",\n    \"createQA\": \"QA作成\",\n    \"question\": \"質問\",\n    \"answer\": \"回答\",\n    \"type\": \"タイプ\",\n    \"creationTime\": \"作成時間\",\n    \"updateTime\": \"更新時間\",\n    \"creator\": \"作成者\",\n    \"update\": \"更新\",\n    \"unknown\": \"不明\",\n    \"manualCreation\": \"手動作成\",\n    \"auditTag\": \"監査タグ\",\n    \"pleaseEnterQuestion\": \"質問を先に入力してください\",\n    \"questionAndAnswerCannotBeEmpty\": \"質問と回答は空にできません\",\n    \"max100CharactersForSimilarQuestion\": \"類似質問は最大100文字\",\n    \"max1000CharactersForAnswer\": \"回答は最大10000文字\",\n    \"updateQa\": \"QA更新\",\n    \"createQa\": \"QA作成\",\n    \"similarQuestions\": \"類似質問\",\n    \"aiGenerate\": \"AI生成\",\n    \"errorMsg\": \"ファイル解析成功。うち {{value}} 件の質問アップロードが失敗しました。ファイルを確認して再試行してください\",\n    \"successMsg\": \"ファイルアップロード成功\",\n    \"cancel2\": \"キャンセル\",\n    \"confirm\": \"確認\",\n    \"backToKnowledge\": \"ナレッジベースに戻る\",\n    \"backToKnowledgeDetail\": \"ナレッジベース詳細へ戻る\",\n    \"loadModelError\": \"モデル読み込みエラー\",\n    \"defaultDescPrefix\": \"以下の質問に回答する際：\",\n    \"defaultDescSuffix\": \"このナレッジベースを参考にします\",\n    \"nameExceedsLimit\": \"ナレッジベース名は200文字以内である必要があります\",\n    \"updateSuccess\": \"更新成功\",\n    \"updateFailed\": \"更新失敗。再試行してください\",\n    \"operationFailed\": \"操作に失敗しました。管理者へお問い合わせください\",\n    \"createFailed\": \"作成失敗\",\n    \"knowledgeSettings\": \"ナレッジベース設定\",\n    \"pleaseEnterDesc\": \"ナレッジベースの説明を入力してください\",\n    \"currentClickedLibId\": \"現在クリックしたlib ID\",\n    \"copyNameExceedsLimit\": \"コピー後の名称が文字数制限を超えています\",\n    \"copyFailed\": \"コピー失敗\",\n    \"noPermission\": \"操作権限がありません\",\n    \"setting\": \"設定\",\n    \"adjustSegmentStrategy\": \"分割ルール調整\",\n    \"adjustSegmentStrategySuccess\": \"分割ルール調整成功\",\n    \"parseSuccess\": \"解析成功\",\n    \"parseError\": \"解析エラー\",\n    \"fileParseError\": \"ファイル解析失敗\",\n    \"metadata\": {\n        \"documentId\": \"システム文書のユニークID\",\n        \"documentName\": \"ナレッジベース文書名（ユニーク）\",\n        \"uploadTime\": \"アップロード時間\",\n        \"updateTime\": \"最終更新時間\",\n        \"uploader\": \"アップロード者\",\n        \"updater\": \"最終更新者\",\n        \"nameEmpty\": \"名称は必須です。\",\n        \"nameTooLong\": \"名称は255文字を超えられません。\",\n        \"nameInvalid\": \"名称は小文字で始まり、小文字・数字・アンダースコアのみ使用できます。\",\n        \"nameExists\": \"メタデータ名はすでに存在します。\",\n        \"inputInvalid\": \"入力が無効です\",\n        \"confirmDelete\": \"削除を確認しますか？\",\n        \"deleteButton\": \"削除\",\n        \"saving\": \"保存中...\",\n        \"save\": \"保存\",\n        \"pleaseEnter\": \"入力してください\"\n    },\n    \"universalRules\": \"共通分割ルール\",\n    \"splitRules\": {\n        \"singleNewline\": \"単一改行で分割（通常換行）\",\n        \"doubleNewline\": \"二重改行で分割（段落区切り）\",\n        \"chapter\": \"「第X章」の前で分割（章区切り）\",\n        \"article\": \"「第X条」の前で分割（条文区切り）\",\n        \"chinesePeriod\": \"中国語の句点後で分割\",\n        \"englishPeriod\": \"英語のピリオド後で分割\",\n        \"customRule\": \"カスタムルール\"\n    },\n\n    \"fileNotSupported\": \"ファイルはプレビューに対応していません\",\n    \"fileExpired\": \"ファイルの有効期限が切れています。新しいファイルをアップロードしてテストしてください\",\n    \"dataConversionError\": \"データ変換エラー\",\n    \"updateButtonState\": \"更新ボタン状態\",\n    \"batchEnable\": {\n        \"alreadyEnabled\": \"選択された項目はすでに有効です\",\n        \"success\": \"{{count}} 個の項目を有効化しました\",\n        \"partialFailed\": \"一部の項目の有効化に失敗しました。ID: {{ids}}\",\n        \"failed\": \"一括有効化中にエラーが発生しました。再試行してください\"\n    },\n    \"batchDisable\": {\n        \"alreadyDisabled\": \"選択された項目はすでに無効です\",\n        \"success\": \"{{count}} 個の項目を無効化しました\",\n        \"partialFailed\": \"一部の項目の無効化に失敗しました。ID: {{ids}}\",\n        \"failed\": \"一括無効化中にエラーが発生しました。再試行してください\"\n    },\n    \"createUser\": \"ユーザー作成\",\n    \"sourceTypes\": {\n        \"unknown\": \"不明\",\n        \"manual\": \"手動作成\",\n        \"annotationImport\": \"アノテーションインポート\",\n        \"apiImport\": \"APIインポート\",\n        \"batchImport\": \"一括インポート\"\n    },\n    \"knowledgeDesc\": \"ナレッジベース説明\",\n    \"embeddingModel\": \"ナレッジベースEmbeddingモデル選択\",\n    \"loadingModelList\": \"モデルリストを読み込み中...\",\n    \"noAvailableModel\": \"利用可能なモデルはありません\",\n    \"embeddingModelWarning\": \"Embeddingモデルの変更は大量の処理リソースを消費する可能性があります。ご注意ください\",\n    \"completeCreation\": \"作成完了\",\n    \"copyCompleted\": \"{{name}} のコピーが完了しました\",\n    \"copyOf\": \"{{name}}のコピー\",\n    \"copying\": \"コピー中\",\n    \"disable\": \"無効化\",\n    \"enable\": \"有効化\",\n    \"unknownKnowledgeBase\": \"不明なナレッジベース\",\n    \"processing\": \"処理中\",\n    \"notEnabled\": \"有効化されていません。再試行してください\",\n    \"successfullyEnabled\": \"{{count}} 個の項目を有効化しました\",\n    \"successfullyDisabled\": \"{{count}} 個の項目を無効化しました\",\n    \"theSelectedItemsAlreadyDisabled\": \"選択された項目はすでに無効です\",\n    \"theSelectedItemsAlreadyEnabled\": \"選択された項目はすでに有効です\",\n    \"selectAll\": \"全選択\",\n    \"import\": \"インポート\",\n    \"export\": \"エクスポート\",\n    \"fileExists\": \"{{name1}} はすでに {{name2}}として存在しています\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/model.json",
    "content": "{\n    \"model\": {\n        \"editPrompt\": \"プロンプトを編集\",\n        \"docKnowledgeAbstractPrompt\": \"ドキュメント知識ベース要約プロンプト\",\n        \"docKnowledgeAbstractPromptTooltip\": \"ドキュメント知識ベースのファイルアップロード時にファイルを要約するプロンプト\",\n        \"editPromptButton\": \"プロンプトを編集\",\n        \"cancelEdit\": \"編集をキャンセル\",\n        \"confirmCancelEdit\": \"変更はまだ保存されていません。本当に終了しますか？\",\n        \"promptSaved\": \"プロンプトが保存されました\",\n        \"executionModeTooltip\": \"通常、function call モードを選択できますが、モデルが function call をサポートしていない場合や最適なタスク実行を追求する場合は、ReAct モードを選択できます\",\n        \"selectExecutionMode\": \"実行モードを選択\",\n        \"functionCall\": \"Function Call\",\n        \"react\": \"ReAct\",\n        \"workbenchVoiceModel\": \"ワークベンチ音声モデル\",\n        \"asrModel\": \"音声認識（ASR）モデル\",\n        \"asrModelTooltip\": \"ワークベンチ／アプリケーションの音声認識シナリオに使用\",\n        \"ttsModel\": \"テキスト読み上げ（TTS）モデル\",\n        \"ttsModelTooltip\": \"ワークベンチ／アプリケーションのテキスト読み上げシナリオに使用\",\n        \"saveFailed\": \"保存に失敗しました。再試行してください！\",\n        \"fetchConfigFailed\": \"設定の取得に失敗しました。ページをリフレッシュして再試行してください！\",\n        \"tip\": \"ヒント\",\n        \"confirmEmbeddingChange\": \"埋め込みモデルの変更は、大量のモデルリソースを消費し、時間がかかる可能性があります。変更しますか？\",\n        \"confirm\": \"確認\",\n        \"duplicateServiceProviderName\": \"モデルサービス提供者名は重複できません\",\n        \"duplicateServiceProviderNameValidation\": \"モデルサービス提供者名は空でなく、最大100文字までです\",\n        \"modelNameValidation\": \"モデル名は空でなく、最大100文字までです\",\n        \"modelDuplicate\": \"モデルは重複できません\",\n        \"voiceTypeRequired\": \"音色タイプは空にできません\",\n        \"addSuccess\": \"追加成功\",\n        \"updateSuccess\": \"変更成功\",\n        \"deleteConfirmation\": \"使用中のモデルを削除すると、既存のアプリケーションや知識ベースが使用できなくなる可能性があります。本当に削除しますか？\",\n        \"deleteSuccess\": \"削除成功\",\n        \"addModel\": \"モデルを追加\",\n        \"modelConfiguration\": \"モデル設定\",\n        \"serviceProvider\": \"モデルサービス提供者\",\n        \"serviceProviderName\": \"モデルサービス提供者名\",\n        \"serviceProviderNameTooltip\": \"既存のモデルを区別するためにカスタム名を設定できます。同じモデルの複数インスタンスをデプロイする場合に適しています\",\n        \"dailyCallLimit\": \"1日の呼び出し回数制限\",\n        \"interModelFormat\": \"モデルインターフェース形式\",\n        \"timesPerDay\": \"回/日\",\n        \"model\": \"モデル\",\n        \"delete\": \"削除\",\n        \"cancel\": \"キャンセル\",\n        \"save\": \"保存\",\n        \"back\": \"戻る\",\n        \"modelNameEmpty\": \"モデル名は空にできません\",\n        \"modelNameLength\": \"最大100文字まで\",\n        \"modelNameDuplicate\": \"モデルは重複できません\",\n        \"deleteModelConfirmation\": \"使用中のモデルを削除すると、既存のアプリケーションや知識ベースが使用できなくなる可能性があります。本当に削除しますか？\",\n        \"modelName\": \"モデル名\",\n        \"modelNameTooltip\": \"ローカルにデプロイされたモデルまたはAPIインターフェースをリクエストするモデル名\",\n        \"modelType\": \"モデルタイプ\",\n        \"voiceType\": \"音色タイプ\",\n        \"webSearch\": \"ウェブ検索\",\n        \"systemModelSettings\": \"システムモデル設定\",\n        \"knowledgeBaseModel\": \"知識ベースモデル\",\n        \"workModel\": \"ワークモデル\",\n        \"assistantModel\": \"アシスタントモデル\",\n        \"evaluationModel\": \"評価モデル\",\n        \"workflowModel\": \"ワークフローモデル\",\n        \"defaultEmbeddingModel\": \"知識ベースデフォルト埋め込みモデル\",\n        \"sourceTracingModel\": \"知識ベーストレースモデル\",\n        \"workInformationModel\": \"ワーク情報要約モデル\",\n        \"workVectorModel\": \"ワークベクトル検索モデル\",\n        \"lingsiTaskModel\": \"$t(bs:linsight)タスク実行モデル\",\n        \"executionMode\": \"実行モード\",\n        \"sourceTracingModelTooltip\": \"知識ベースの問答トレースに使用。LLMを使用して自動的に回答からキーワードを抽出し、ユーザーが迅速に回答の可能性のある段落を特定できるようにします。設定がない場合、jieba分割を使用して回答からキーワードを出力します。\",\n        \"documentSummaryModel\": \"ドキュメント知識ベース要約モデル\",\n        \"documentSummaryModelTooltip\": \"ドキュメント内容をタイトルとして要約し、タイトルとチャンクを組み合わせてベクトルライブラリに保存します。設定しない場合、ドキュメントを要約しません。\",\n        \"workInformationModelTooltip\": \"ワークベンチのサイドバーの対話タイトル生成、$t(bs:linsight)SOP名および説明生成などのシナリオに使用され、パラメータ量が少なく応答速度が速いモデルを使用することが推奨されます。\",\n        \"workVectorModelTooltip\": \"ワークベンチの個人知識ベース検索、$t(bs:linsight)ガイドラインマニュアル検索などに使用\",\n        \"lingsiTaskModelTooltip\": \"最も能力の高いモデルを使用することをお勧めします。最適なタスク実行効果を得るために\",\n        \"qaSimilarModel\": \"QA知識ベースの類似質問モデル\",\n        \"qaSimilarModelTooltip\": \"QA知識ベース内の類似した質問を生成するために使用されます。\",\n        \"saveSuccess\": \"保存成功\",\n        \"modelsAndRAGNodes\": \"ワークフローのデフォルトモデル\",\n        \"assistantInferenceModel\": \"アシスタント推論モデル\",\n        \"assistantInferenceModelRepetition\": \"アシスタント推論モデルの重複\",\n        \"assistantExecutionMode\": \"アシスタント実行モード\",\n        \"assistantExecutionModeTooltip\": \"モデルがOpenAI function call形式のインターフェースプロトコルをサポートしている場合、function callモードを選択することをお勧めします。\",\n        \"streamingOutput\": \"ストリーミング出力\",\n        \"assistantKnowledgeBaseMaxCharacters\": \"アシスタント知識ベース検索最大文字数\",\n        \"assistantKnowledgeBaseMaxCharactersTooltip\": \"モデルに渡される最大文字数。これを超えると自動的に切り捨てられます。モデルの最大コンテキスト長に合わせて調整できます。\",\n        \"reorderAfterRetrieval\": \"検索後に再並べ替えますか？\",\n        \"reorderAfterRetrievalTooltip\": \"検索したチャンクを並べ替えるかどうか。単一文書問答シナリオでは有効にすることをお勧めします。\",\n        \"setAsDefault\": \"デフォルトモデルに設定\",\n        \"assistantAutoOptimizationModel\": \"アシスタント画像自動最適化モデル\",\n        \"yes\": \"はい\",\n        \"no\": \"いいえ\",\n        \"selectModel\": \"モデルを選択\",\n        \"defaultEvaluationFeature\": \"評価機能のデフォルトモデル\",\n        \"machineName\": \"サービス名\",\n        \"gpuNumber\": \"GPU番号\",\n        \"gpuID\": \"GPU-ID\",\n        \"totalMemory\": \"総メモリ\",\n        \"freeMemory\": \"空きメモリ\",\n        \"gpuUtilization\": \"GPU利用率\",\n        \"notBeEmpty\": \"空にできません\"\n    },\n    \"finetune\": {\n        \"rtServiceManagement\": \"FTサービス管理\",\n        \"machineName\": \"サービス名\",\n        \"serviceAddress\": \"サービスアドレス\",\n        \"createTrainingTask\": \"トレーニングタスクを作成\",\n        \"rtService\": \"FTサービス\",\n        \"gpuResourceUsage\": \"GPUリソース使用状況\",\n        \"rtServiceTooltip\": \"目標基準モデルが存在するFTサービスを選択します。Finetuneモデルのトレーニングが完了すると、同じFTサービス内にデプロイされます。\",\n        \"baseModel\": \"基準モデル\",\n        \"finetuneModelName\": \"Finetuneモデル名\",\n        \"dataset\": \"データセット\",\n        \"uploadDataset\": \"個人データセットをアップロード\",\n        \"downloadSampleFile\": \"サンプルファイルをダウンロード\",\n        \"customSampleSize\": \"カスタムサンプル数（任意）\",\n        \"customSampleSizeTooltip1\": \"これはオプション項目です：\",\n        \"customSampleSizeTooltip2\": \"このオプションを選択しない場合、選択した個人データセットと予備データセットのすべてのサンプルがトレーニングに参加します。\",\n        \"customSampleSizeTooltip3\": \"このオプションを選択した場合、異なるデータセットからトレーニングに参加するサンプル数を自由に指定できます。入力ボックスが空白の場合、または入力した数がデータセットの総サンプル数を超える場合、そのデータセットのすべてのサンプルがトレーニングに参加します。\",\n        \"presetDatasets\": \"予備データセット\",\n        \"userDatasets\": \"個人データセット\",\n        \"download\": \"ダウンロード\",\n        \"sampleSize\": \"サンプル数\",\n        \"noData\": \"データがありません\",\n        \"trainingMethod\": \"トレーニング方法\",\n        \"fullFineTune\": \"フル微調整\",\n        \"freeze\": \"freeze微調整\",\n        \"lora\": \"lora微調整\",\n        \"parameterConfiguration\": \"パラメータ設定\",\n        \"parameterConfigurationTooltip\": \"パラメータ設定の推奨と実験データは、製品ドキュメントに詳述されています。\",\n        \"parameter\": \"パラメータ\",\n        \"quantity\": \"数量\",\n        \"description\": \"説明\",\n        \"gpuDesc\": \"トレーニングで使用されるGPU番号。複数のカードを使用する場合、カンマで区切って入力してください（例：0,1,2,3）\",\n        \"valRatioDesc\": \"検証セットの割合。0より大きい値を指定すると、各エポックの終了後に検証セットでロスを計算します。\",\n        \"batchSizeDesc\": \"バッチサイズ（BatchSize）は、各トレーニングイテレーションで使用するサンプル数を示します。大きいバッチサイズはトレーニングを加速できますが、メモリが過大になる場合があります。\",\n        \"learningRateDesc\": \"学習率（LearningRate）は、勾配降下中に重みを更新する際のハイパーパラメータで、過度に高いとモデルが収束しにくく、低すぎると収束速度が遅くなります。\",\n        \"numEpochsDesc\": \"エポック回数（epoch）は、トレーニングのイテレーション回数を制御します。loss曲線を基にモデルが収束したかどうかを判断できます。lossが減少し続けている場合、エポックを増やすことができます。\",\n        \"maxSeqLenDesc\": \"最大シーケンス長を指定します（デフォルトは8192）。入力と出力の長さが8192を超えると切り捨てられます。\",\n        \"cpuLoadDesc\": \"一部のパラメータと最適化器をCPUにロードするかどうか（デフォルトでは無効、メモリ不足の場合に有効にできます）。有効にするとメモリを占有するので、リソース消費に関する詳細なドキュメントをご参照ください。\",\n        \"selectRTService\": \"RTサービスを選択\",\n        \"selectBaseModel\": \"基準モデルを選択\",\n        \"enterModelName\": \"モデル名には少なくとも1つの文字を含める必要があります。数字、アルファベット、ハイフンを使用できます\",\n        \"taskId\": \"タスクID\",\n        \"runtime\": \"実行時間\",\n        \"creator\": \"作成者\",\n        \"cancelPublish\": \"公開をキャンセル\",\n        \"formatTime\": \"hh時間mm分ss秒\",\n        \"publish\": \"公開\",\n        \"stop\": \"停止\",\n        \"confirmCancelPublish\": \"このモデルはオンライン状態です。本当に公開をキャンセルしますか？\",\n        \"confirmDeleteModel\": \"モデル{{name}}を削除しますか？\",\n        \"confirmDeleteOnlineModel\": \"このモデルはオンラインです。本当に削除しますか？\",\n        \"confirmDeletePublishedModel\": \"このモデルは公開されています。本当に削除しますか？\",\n        \"confirmStopTraining\": \"このトレーニングを停止しますか？\",\n        \"evaluationReport\": \"評価レポート\",\n        \"trainingLogs\": \"トレーニングログ\"\n    }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/ja/tool.json",
    "content": "{\n    \"categories\": {\n        \"代码执行器\": {\n            \"name\": \"コード実行器\",\n            \"desc\": \"コードを実行して、グラフの描画やファイル処理などのプログラム関連操作を完了します\"\n        },\n        \"天眼查\": {\n            \"name\": \"天眼查\",\n            \"desc\": \"企業情報検索\"\n        },\n        \"Jina AI\": {\n            \"name\": \"Jina AI\",\n            \"desc\": \"指定されたウェブサイト（PDFをサポート）を大モデルが処理できるMarkdown形式に変換します\"\n        },\n        \"联网搜索\": {\n            \"name\": \"インターネット検索\",\n            \"desc\": \"インターネット情報を検索し、異なる検索エンジンを使って結果を返します。現在、Bing、博查、Jina 深層検索、SerpApi、Tavilyがサポートされています。\"\n        },\n        \"Dalle3绘画\": {\n            \"name\": \"Dalle3絵画\",\n            \"desc\": \"OpenAIのテキストから画像生成モデル\"\n        },\n        \"Firecrawl\": {\n            \"name\": \"Firecrawl\",\n            \"desc\": \"指定されたURLからウェブコンテンツをクロールし、Markdown形式に変換します\"\n        },\n        \"SiliconFlow\": {\n            \"name\": \"SiliconFlow\",\n            \"desc\": \"テキストプロンプトに基づいて高品質な画像を生成します。FluxおよびStable Diffusionモデルに対応\"\n        },\n        \"飞书消息\": {\n            \"name\": \"Feishuメッセージ\",\n            \"desc\": \"指定されたユーザーまたはグループチャットにメッセージを送信することができます\"\n        },\n        \"Bing web搜索\": {\n            \"name\": \"Bingウェブ検索\",\n            \"desc\": \"Bing検索エンジンを使用してインターネット情報を検索できます。天気、為替、時事など\"\n        },\n        \"发送邮件\": {\n            \"name\": \"メール送信\",\n            \"desc\": \"SMTPプロトコルを使用して電子メールを送信する\"\n        },\n        \"企业微信\": {\n            \"name\": \"企業WeChat\",\n            \"desc\": \"企業WeChatボットでグループメッセージを送信するツール\"\n        },\n        \"钉钉\": {\n            \"name\": \"DingTalk\",\n            \"desc\": \"DingTalkグループボットでメッセージを送信するツール\"\n        },\n        \"论文获取\": {\n            \"name\": \"論文取得\",\n            \"desc\": \"Arxivウェブサイトから論文を検索するツール、検索キーワードを入力します\"\n        },\n        \"计算器\": {\n            \"name\": \"電卓\",\n            \"desc\": \"Python内蔵ツールを使って数学的な式を計算\"\n        },\n        \"经济金融数据\": {\n            \"name\": \"経済金融データ\",\n            \"desc\": \"株式、ファンド、先物などの市場データや、マクロ経済、企業財務データを含む金融ビッグデータプラットフォーム\"\n        },\n        \"时间\": {\n            \"name\": \"時間\",\n            \"desc\": \"現在の時間を取得\"\n        }\n    },\n    \"tools\": {\n        \"bisheng_code_interpreter\": {\n            \"name\": \"コード実行器\",\n            \"desc\": \"Pythonおよびshellコードを実行し、600秒以内に結果を返します。数学、プログラミング、画像、ファイル関連の問題に適しています。\",\n            \"params\": {\n                \"python_code\": \"評価する純粋なPythonスクリプト。\\n内容はmain.pyに入ります。\\nマークダウン形式ではなく、通常のPythonコードである必要があります。\"\n            }\n        },\n        \"tianyancha_riskinfo\": {\n            \"name\": \"企業天眼リスク\",\n            \"desc\": \"キーワード（会社名、会社ID、登録番号または社会信用コード）を使用して企業に関連する天眼リスクリストを取得できます。企業自身/周辺/警告リスク情報を含みます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_company_holders\": {\n            \"name\": \"企業株主\",\n            \"desc\": \"会社名またはIDを使って企業の株主情報を取得できます。株主情報には株主名、出資比率、出資額、株主数などの詳細情報が含まれます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_company_change_info\": {\n            \"name\": \"企業工商情報変更記録\",\n            \"desc\": \"会社名またはIDを使って企業の変更記録を取得できます。変更記録には工商変更事項、変更前後の情報などが含まれます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_ic_info\": {\n            \"name\": \"企業工商情報\",\n            \"desc\": \"会社名またはIDを使って企業の基本情報、主要人物、株主情報、対外投資、支店などの情報を取得できます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_law_suit_case\": {\n            \"name\": \"企業法的訴訟\",\n            \"desc\": \"会社名またはIDを使って企業の法的訴訟情報を取得できます。訴訟情報には案件名、訴訟理由、案件身分、案号などの詳細情報が含まれます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_judicial_risk\": {\n            \"name\": \"企業司法リスク\",\n            \"desc\": \"会社名またはIDを使って法的訴訟、裁判所の公告、開廷公告、失信人、実行人、立案情報、配達公告などの司法リスク情報を取得できます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_ip_rights\": {\n            \"name\": \"企業知的財産情報\",\n            \"desc\": \"会社名またはIDを使って商標、特許、著作権、ソフトウェア著作権、ウェブサイトの登録などの知的財産情報を取得できます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_get_company_baseinfo\": {\n            \"name\": \"企業基本情報\",\n            \"desc\": \"会社名またはIDを使って企業の基本情報を取得できます。基本情報には会社名、法人、設立日、経営状態、登録資本金などが含まれます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_search_company\": {\n            \"name\": \"企業検索\",\n            \"desc\": \"キーワードを使って企業リストを取得できます。リストには会社名、ID、設立日、経営状態、社会信用コードなどが含まれます。\",\n            \"params\": {\n                \"query\": \"検索キーワード（会社名、会社ID、登録番号または社会信用コード）\"\n            }\n        },\n        \"tianyancha_all_companys_by_company\": {\n            \"name\": \"人物所有会社\",\n            \"desc\": \"会社名またはIDと人物名を使って企業人物が所有するすべての関連会社を取得できます。法人、株主、取締役などの情報を含みます。\",\n            \"params\": {\n                \"query\": \"人物名\",\n                \"name\": \"会社名\"\n            }\n        },\n        \"jina_get_markdown\": {\n            \"name\": \"単一ページ取得\",\n            \"desc\": \"指定されたURL（PDFもサポート）をクロールし、大モデルが処理できるMarkdown形式に変換します。\",\n            \"params\": {\n                \"target_url\": \"取得するターゲットURL\"\n            }\n        },\n        \"web_search\": {\n            \"name\": \"インターネット検索\",\n            \"desc\": \"クエリを使用してインターネット検索を実行し、結果を返します。\",\n            \"params\": {\n                \"query\": \"Bing検索で調べるクエリ\"\n            }\n        },\n        \"dalle_image_generator\": {\n            \"name\": \"Dalle3絵画\",\n            \"desc\": \"プロンプトに基づいて画像を生成します。\",\n            \"params\": {\n                \"query\": \"画像に関する説明\"\n            }\n        },\n        \"fire_search_crawl\": {\n            \"name\": \"深層クロール | Crawlモード\",\n            \"desc\": \"指定されたURLとすべてのアクセス可能なサブページの内容をクロールし、返します。\",\n            \"params\": {\n                \"target_url\": \"クロールする開始URL\"\n            }\n        },\n        \"fire_search_scrape\": {\n            \"name\": \"単一ページクロール | Scrapeモード\",\n            \"desc\": \"指定されたURLのページの内容をクロールし、サブページはクロールしません。\",\n            \"params\": {\n                \"target_url\": \"クロールするウェブサイトのURL\"\n            }\n        },\n        \"silicon_flux\": {\n            \"name\": \"Flux\",\n            \"desc\": \"Fluxモデルを使用して、ユーザーのプロンプトに基づいて画像を生成します\",\n            \"params\": {\n                \"prompt\": \"画像の説明として使用するプロンプト（英語を推奨）\"\n            }\n        },\n        \"silicon_stable_diffusion\": {\n            \"name\": \"Stable Diffusion\",\n            \"desc\": \"Stable Diffusionモデルを使用して、ユーザーのプロンプトに基づいて画像を生成します\",\n            \"params\": {\n                \"prompt\": \"画像生成用のプロンプト\",\n                \"negative_prompt\": \"画像に含めたくない内容\"\n            }\n        },\n        \"feishu_get_chat_messages\": {\n            \"name\": \"指定されたチャットメッセージの取得\",\n            \"desc\": \"個別チャットまたはグループチャットの履歴メッセージを素早く取得できます\",\n            \"params\": {\n                \"container_id\": \"個別チャットまたはグループチャットのID、またはトピックID\",\n                \"container_id_type\": \"コンテナタイプ。選択肢：chat（個別チャット、グループチャット）またはthread（トピック）\",\n                \"start_time\": \"取得する履歴メッセージの開始時刻、秒単位のタイムスタンプ。注意：threadタイプのコンテナでは、特定の時間範囲でのメッセージ取得はサポートされていません。\",\n                \"end_time\": \"取得する履歴メッセージの終了時刻、秒単位のタイムスタンプ。注意：threadタイプのコンテナでは、特定の時間範囲でのメッセージ取得はサポートされていません。\",\n                \"page_size\": \"ページサイズ、1回のリクエストで返されるデータの件数、デフォルトは20、範囲は1〜50。\",\n                \"sort_type\": \"並べ替えのタイプ。選択肢：ByCreateTimeAsc（メッセージ作成時間の昇順）またはByCreateTimeDesc（メッセージ作成時間の降順）\",\n                \"page_token\": \"ページトークン。最初のリクエストでは空欄、リストの他の項目がある場合は、新しいpage_tokenが返され、次回のリクエストで使用します\"\n            }\n        },\n        \"feishu_send_message\": {\n            \"name\": \"指定されたユーザーまたはグループチャットにメッセージを送信\",\n            \"desc\": \"指定されたユーザーまたはグループチャットにメッセージを送信できます\",\n            \"params\": {\n                \"message\": \"送信するテキストメッセージの内容\",\n                \"receive_id\": \"メッセージを受信するユーザーまたはグループのID\",\n                \"receive_id_type\": \"受信者のIDタイプ。選択肢：open_id（ユーザーのアプリ内ID）、union_id（ユーザーの開発者下のID）、user_id（ユーザーのテナント内ID）、email（ユーザーの実際のメールアドレス）、chat_id（グループID）\"\n            }\n        },\n        \"bing_search\": {\n            \"name\": \"Bingウェブ検索\",\n            \"desc\": \"クエリを使ってBing検索を実行し、結果を返します。\",\n            \"params\": {\n                \"query\": \"Bing検索で調べるクエリ\"\n            }\n        },\n        \"email_send_email\": {\n            \"name\": \"メール送信\",\n            \"desc\": \"1つまたは複数のメールアドレスにメールを送信（複数のアドレスは\\\",\\\"で区切ります）\",\n            \"params\": {\n                \"receiver\": \"受信者のメールアドレス\",\n                \"subject\": \"メールの件名\",\n                \"content\": \"メールの本文内容\"\n            }\n        },\n        \"wechat_send_message\": {\n            \"name\": \"企業WeChatグループメッセージ送信\",\n            \"desc\": \"企業WeChatボットを使用して、指定された企業WeChatグループにメッセージを迅速に送信\",\n            \"params\": {\n                \"url\": \"WeChatボットのWebhook URL\",\n                \"message\": \"送信するメッセージ内容\"\n            }\n        },\n        \"ding_send_message\": {\n            \"name\": \"DingTalkグループメッセージ送信\",\n            \"desc\": \"DingTalkグループボットを使用して、指定されたDingTalkグループにメッセージを迅速に送信\",\n            \"params\": {\n                \"url\": \"カスタムボットのWebhook URL\",\n                \"message\": \"送信するテキストメッセージの内容\"\n            }\n        },\n        \"arxiv\": {\n            \"name\": \"論文取得\",\n            \"desc\": \"Arxivウェブサイトから論文を検索するツール。検索キーワードを入力します。\",\n            \"params\": {\n                \"query\": \"検索クエリ\"\n            }\n        },\n        \"calculator\": {\n            \"name\": \"電卓\",\n            \"desc\": \"Python内蔵ツールを使って数学的な式を計算\",\n            \"params\": {}\n        },\n        \"macro_bond_zh_us_rate\": {\n            \"name\": \"中美国債收益率\",\n            \"desc\": \"このAPIは、指定された期間[start_date,end_date]内の取引日の中国とアメリカの2年、5年、10年、30年、10年-2年債の利回りデータを返します。start_dateは開始日、end_dateは終了日です。日付形式は例：2024-04-07です。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_pmi\": {\n            \"name\": \"PMI\",\n            \"desc\": \"中国のPMI（購買担当者指数）の月次統計データ。データには、製造業PMI、製造業PMIの前年比、非製造業PMI、非製造業PMIの前年比が含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_consumer_goods_retail\": {\n            \"name\": \"社会消費品小売総額\",\n            \"desc\": \"中国の社会消費品小売総額の月次統計データ。データには、月、当月の合計額、前年比・環比、年初累計額とその前年比が含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_money_supply\": {\n            \"name\": \"貨幣供給量\",\n            \"desc\": \"中国の貨幣供給量に関する月次統計データ。データには、月、M0、M1、M2の数量、および前年比・環比が含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_ppi\": {\n            \"name\": \"PPI\",\n            \"desc\": \"中国の工業製品卸売価格指数（PPI）の月次統計データ。データには、月、当月のPPI、当月の前年比、当年のPPI累計値が含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_cpi\": {\n            \"name\": \"CPI\",\n            \"desc\": \"中国の消費者物価指数(CPI、前年同月=100)の月次統計データ。データには、月、全国のCPI、前年比・環比、年初累計CPI、都市別CPI、農村別CPIが含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_gdp_yearly\": {\n            \"name\": \"GDP\",\n            \"desc\": \"中国の国内総生産（GDP）の四半期ごとの統計データ。データには、四半期、当年の累積GDPおよび前年比、第一・第二・第三産業のGDPとその前年比が含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"macro_china_shrzgm\": {\n            \"name\": \"社会資金調達規模の増加\",\n            \"desc\": \"中国の社会資金調達規模の増加に関する月次統計データ。データには、月、社会資金調達規模の増加額（単位：億元）や、資金調達の内訳データが含まれます。\",\n            \"params\": {\n                \"start_date\": \"開始月（YYYY-MM-DD形式）\",\n                \"end_date\": \"終了月（YYYY-MM-DD形式）\"\n            }\n        },\n        \"sina_history_KLine\": {\n            \"name\": \"株式の歴史的取引データ\",\n            \"desc\": \"中国A株（上海、深セン、北京証券取引所）の株式や指数の歴史的取引データを取得します。データには、時間、始値、高値、安値、終値、取引量が含まれます。\",\n            \"params\": {\n                \"date\": \"取得したい日付（例：2024-03-26）\",\n                \"stock_exchange\": \"取引所の略称。取引所で上場されている株式や発表される指数の取引所。\\\"sh\\\"（上海証券取引所）、\\\"sz\\\"（深セン証券取引所）、\\\"bj\\\"（北京証券取引所）を選択可能。\",\n                \"stock_symbol\": \"6桁の株式または指数コード。株式や指数コードを調べる必要がある場合もあります。\"\n            }\n        },\n        \"sina_realtime_info\": {\n            \"name\": \"株式のリアルタイムデータ\",\n            \"desc\": \"中国A株（上海、深セン、北京証券取引所）の株式や指数のリアルタイム取引データを取得します。データには、現在の価格、変動額、変動率、取引量、取引額が含まれます。\",\n            \"params\": {\n                \"prefix\": \"前缀。\\\"stock_symbol\\\"が株式コードの場合は、\\\"s_\\\"を入力。\\n指数コードの場合は空白にします。\",\n                \"stock_exchange\": \"取引所の略称。取引所で上場されている株式や発表される指数の取引所。\",\n                \"stock_symbol\": \"6桁の株式または指数コード。\"\n            }\n        },\n        \"get_current_time\": {\n            \"name\": \"現在の時間\",\n            \"desc\": \"現在の時間を取得します。タイムゾーンが指定されていない場合、UTC+8の時間が使用されます。\",\n            \"params\": {}\n        }\n    },\n    \"addMcpServer\": \"MCPサーバーを追加\",\n    \"refresh\": \"更新\",\n    \"refreshSuccess\": \"更新に成功しました\",\n    \"toolFetchFailed\": \"ツールの取得に失敗しました\",\n    \"executionModeLabel\": \"コード実行方式\",\n    \"executionLocalLabel\": \"ローカル実行\",\n    \"executionE2bLabel\": \"E2Bサンドボックス実行\",\n    \"serviceProviderLabel\": \"サービスプロバイダ\",\n    \"providerPrivateLabel\": \"自己ホスティング\",\n    \"providerPrivateTooltip\": \"E2Bをローカル環境に事前にデプロイし、ドメインを自己ホスティングのURLに指向させ、API Keyの認証をE2Bのバックエンドで処理します。\",\n    \"providerOfficialLabel\": \"公式クラウド\",\n    \"providerOfficialTooltip\": \"E2B公式クラウドサービスを使用し、E2B公式からAPI Keyを取得する必要があります。\",\n    \"domainCannotBeEmpty\": \"ドメインは空にできません\",\n    \"apiKeyCannotBeEmpty\": \"API Keyは空にできません\",\n    \"enterApiKeyPlaceholder\": \"API Keyを入力してください\",\n    \"enterApiKey\": \"API Keyを入力してください\",\n    \"timeoutTooltip\": \"クロール操作が中止される前にページ応答を待機する最大時間（ミリ秒単位）。\",\n    \"deepCrawlDetailConfigDescription\": \"深層クロールの詳細設定（以下の設定はCrawlモードにのみ有効です）\",\n    \"maxdepthTooltip\": \"入力されたURLに対してクロールする最大の深さ。\",\n    \"limitTooltip\": \"クロールする最大ページ数。\",\n    \"azureEndpointPlaceholder\": \"例: https://xxx.openai.azure.com/\",\n    \"openaiApiVersionPlaceholder\": \"例: 2024-02-01\",\n    \"emailAccountLabel\": \"メールアカウント（送信者のメールアドレス）\",\n    \"emailPasswordLabel\": \"メールパスワード（送信者のメールパスワード）\",\n    \"smtpServerLabel\": \"SMTPサーバー（送信者SMTPサーバーのアドレス）\",\n    \"smtpPortLabel\": \"SMTPポート（送信者SMTPサーバーのポート）\",\n    \"encryptMethodLabel\": \"暗号化方式（送信サーバーの暗号化方法）\",\n    \"encryptMethodNoneLabel\": \"暗号化なし\",\n    \"encryptMethodSslLabel\": \"SSL暗号化\",\n    \"encryptMethodStarttlsLabel\": \"STARTTLS暗号化\",\n    \"invalidEmailMessage\": \"有効なメールアドレスを入力してください\",\n    \"invalidSmtpServerMessage\": \"有効なSMTPサーバーアドレスを入力してください\",\n    \"invalidPortMessage\": \"有効なポート番号を入力してください\",\n    \"feishuAppIdTooltip\": \"アプリケーションのユニークID。\",\n    \"feishuAppSecretTooltip\": \"アプリケーションの秘密鍵。アプリ作成時にプラットフォームから生成されます。\",\n    \"pleaseSelect\": \"選択してください\",\n    \"fieldCannotBeEmpty\": \"{{label}}は空にできません\",\n    \"jinaApiKeyLabel\": \"Jina API Key\",\n    \"siliconflowApiKeyLabel\": \"SiliconFlow API Key\",\n    \"uploadFile\": \"ファイルをアップロード\",\n    \"organizeKnowledgeBase\": \"ナレッジベース整理\",\n    \"个人知识库\": \"個人ナレッジベース\",\n    \"知识库和文件内容检索\": \"ナレッジ・ファイル検索\",\n    \"知识库和文件内容检索desc\": \"組織/個人ナレッジとローカルファイルの内容を検索します。\",\n    \"文件操作\": \"ファイル操作\",\n    \"文件操作desc\": \"ローカルファイルの閲覧・検索・編集ツール集。\",\n    \"获取所有文件和目录\": \"全ファイル・ディレクトリ取得\",\n    \"获取所有文件和目录desc\": \"指定ディレクトリ内の全ファイルとサブディレクトリを一覧表示します。\",\n    \"获取文件详细信息\": \"ファイル詳細取得\",\n    \"获取文件详细信息desc\": \"ファイル名、サイズ、パス、文字数、行数などの詳細を取得します。\",\n    \"搜索文件\": \"ファイル検索\",\n    \"搜索文件desc\": \"指定ディレクトリ内でファイルやサブディレクトリを検索します。\",\n    \"读取文件内容\": \"ファイル内容を読む\",\n    \"读取文件内容desc\": \"ローカルテキストファイルの内容を読み込みます。\",\n    \"写入文件内容\": \"ファイルに書き込む\",\n    \"写入文件内容desc\": \"テキストを追記し、存在しない場合は新規作成します。\",\n    \"替换文件指定行范围内容\": \"行範囲を置換\",\n    \"替换文件指定行范围内容desc\": \"ファイル内の指定行範囲を置き換えます。\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/bs.json",
    "content": "{\n  \"title\": \"BISHENG\",\n  \"bisheng\": \"{{bishengZh}}\",\n  \"linsight\": \"{{linsightZh}}\",\n  \"linsightFullName\": \"{{linsightFullZh}}\",\n  \"prompt\": \"提示\",\n  \"unsupportedFileType\": \"不支持文件类型: {{extensions}}\",\n  \"supportedFormatsWithImages\": \"支持的文件格式为 pdf（含扫描件）、txt、docx、ppt、pptx、md、html、xls、xlsx、csv、doc、png、jpg、jpeg、bmp；每个文件最大支持{{maxSize}}mb；pdf支持溯源定位。\",\n  \"supportedFormatsWithoutImages\": \"支持的文件格式为 pdf、txt、docx、doc、ppt、pptx、md、html、xls、xlsx、csv，每个文件最大支持{{maxSize}}mb\",\n  \"example\": {\n    \"buttons\": \"按钮\",\n    \"button\": \"按钮\",\n    \"badges\": \"徽章\",\n    \"badge\": \"徽章\",\n    \"inputs\": \"输入框\",\n    \"search\": \"搜索\",\n    \"content\": \"内容\",\n    \"dropdown\": \"下拉框\",\n    \"selectAFruit\": \"选择一个水果\",\n    \"fruits\": \"水果\",\n    \"apple\": \"苹果\",\n    \"banana\": \"香蕉\",\n    \"blueberry\": \"蓝莓\",\n    \"grapes\": \"葡萄\",\n    \"pineapple\": \"菠萝\",\n    \"slider\": \"滑块\",\n    \"checkboxRadio\": \"单选多选\",\n    \"default\": \"默认\",\n    \"one\": \"选项一\",\n    \"tablePagination\": \"表格&分页\",\n    \"invoiceListCaption\": \"你最近的发票列表。\",\n    \"invoice\": \"发票号\",\n    \"status\": \"状态\",\n    \"method\": \"支付方式\",\n    \"amount\": \"金额\",\n    \"total\": \"总计\",\n    \"calendar\": \"日历\",\n    \"card\": \"卡片\",\n    \"createProject\": \"创建项目\",\n    \"deployProjectDescription\": \"一键部署你的新项目。\",\n    \"cancel\": \"取消\",\n    \"deploy\": \"部署\",\n    \"accordion\": \"手风琴\",\n    \"isItAccessible\": \"它是可访问的吗？\",\n    \"accordionAnswer1\": \"是的。它遵循 WAI-ARIA 设计模式。\",\n    \"isItStyled\": \"它有样式吗？\",\n    \"accordionAnswer2\": \"是的。它带有默认样式，与其他组件的美学一致。\",\n    \"isItAnimated\": \"它是动画的吗？\",\n    \"accordionAnswer3\": \"是的。它默认是动画的，但你可以根据需要禁用它。\",\n    \"switch\": \"开关\"\n  },\n  \"theme\": {\n    \"colorConfig\": \"颜色配置\",\n    \"restoreDefault\": \"还原默认\",\n    \"workflowBackgroundConfig\": \"工作流背景配置\",\n    \"bishengLogo\": \"$t(bisheng) logo\",\n    \"themeColorGradientEffect\": \"主题色渐变效果\",\n    \"componentPreview\": \"组件预览\",\n    \"primary\": \"主题色\",\n    \"primaryForeground\": \"主题前景色\",\n    \"background\": \"背景色\",\n    \"foreground\": \"前景色\",\n    \"muted\": \"柔和背景色\",\n    \"mutedForeground\": \"柔和前景色\",\n    \"card\": \"卡片背景色\",\n    \"cardForeground\": \"卡片前景色\",\n    \"popover\": \"弹出框背景色\",\n    \"popoverForeground\": \"弹出框前景色\",\n    \"border\": \"边框色\",\n    \"input\": \"输入框边框色\",\n    \"secondary\": \"次要按钮背景色\",\n    \"secondaryForeground\": \"次要按钮前景色\",\n    \"accent\": \"强调色\",\n    \"accentForeground\": \"强调前景色\",\n    \"destructive\": \"警告按钮背景色\",\n    \"destructiveForeground\": \"警告按钮前景色\",\n    \"ring\": \"聚焦边框色\",\n    \"radius\": \"圆角半径\",\n    \"warning\": \"警告色\",\n    \"warningForeground\": \"警告前景色\",\n    \"blackButton\": \"黑按钮\"\n  },\n  \"login\": {\n    \"slogen\": \"便捷、灵活、可靠的企业级大模型应用开发平台\",\n    \"bottomText\": \"文擎毕昇\",\n    \"account\": \"邮箱\",\n    \"password\": \"密码\",\n    \"confirmPassword\": \"确认密码\",\n    \"noAccountRegister\": \"没有账号？注册\",\n    \"haveAccountLogin\": \"已有账号，登录\",\n    \"loginButton\": \"登 录\",\n    \"registerButton\": \"注 册\",\n    \"document\": \"文档\",\n    \"pleaseEnterAccount\": \"请填写账号\",\n    \"pleaseEnterPassword\": \"请填写密码\",\n    \"accountTooShort\": \"账号过短\",\n    \"passwordTooShort\": \"请填写密码,至少8位\",\n    \"passwordError\": \"密码必须包含大小写字母、数字和字符！\",\n    \"passwordMismatch\": \"两次密码不一致\",\n    \"registrationSuccess\": \"注册成功,请输入密码进行登录\",\n    \"pleaseEnterCaptcha\": \"请输入验证码\",\n    \"passwordExpired\": \"您的密码已过期，请及时修改\",\n    \"otherMethods\": \"其他登录方式\"\n  },\n  \"menu\": {\n    \"user\": \"用户\",\n    \"bookopen\": \"帮助文档\",\n    \"github\": \"GitHub\",\n    \"workspace\": \"工作台\",\n    \"app\": \"会  话\",\n    \"skills\": \"构  建\",\n    \"knowledge\": \"知  识\",\n    \"evaluation\": \"评  测\",\n    \"board\": \"看  板\",\n    \"annotation\": \"标  注\",\n    \"models\": \"模  型\",\n    \"system\": \"系  统\",\n    \"log\": \"审  计\",\n    \"dataset\": \"数据集\",\n    \"dashboard\": \"看  板\",\n    \"themeSwitch\": \"主题切换\",\n    \"document\": \"文档\",\n    \"logout\": \"退出\",\n    \"logoutDescription\": \"退出登录\",\n    \"logoutContent\": \"确认退出登录吗\",\n    \"forBestExperience\": \"为了您的良好体验，请在 PC 端访问该网站\",\n    \"onlineDocumentation\": \"在线文档\",\n    \"changePwd\": \"修改密码\"\n  },\n  \"system\": {\n    \"userManagement\": \"用户管理\",\n    \"userGroupsM\": \"用户组管理\",\n    \"roleManagement\": \"角色管理\",\n    \"systemConfiguration\": \"系统配置\",\n    \"username\": \"用户名\",\n    \"confirmDisable\": \"确认禁用该用户？\",\n    \"roleSelect\": \"角色选择\",\n    \"userGroupsSel\": \"用户组选择\",\n    \"roleList\": \"角色列表\",\n    \"userGroupList\": \"用户组列表\",\n    \"confirmText\": \"是否删除\",\n    \"roleName\": \"角色名称\",\n    \"skillAuthorization\": \"技能权限\",\n    \"knowledgeAuthorization\": \"知识库权限\",\n    \"boardAuthorization\": \"看板权限\",\n    \"boardName\": \"看板名称\",\n    \"allowCreateBoard\": \"允许创建看板\",\n    \"allowCreateBoardDesc\": \"开启后，该角色可以在统计看板中创建新的看板\",\n    \"searchAssistant\": \"搜索助手\",\n    \"searchSkill\": \"搜索技能\",\n    \"searchFlow\": \"搜索工作流\",\n    \"searchKnowledge\": \"搜索知识库\",\n    \"searchTool\": \"搜索工具\",\n    \"searchBoard\": \"搜索看板\",\n    \"libraryName\": \"知识库名称\",\n    \"flowName\": \"工作流名称\",\n    \"flowAuthorization\": \"工作流权限\",\n    \"skillName\": \"技能名称\",\n    \"creator\": \"创建人\",\n    \"usePermission\": \"使用权限\",\n    \"managePermission\": \"管理权限\",\n    \"roleNamePrompt\": \"角色名称不能超过50字符\",\n    \"roleNameRequired\": \"角色名称不可为空\",\n    \"atLeastOneSpaceRequired\": \"至少需要保留一个空间可访问\",\n    \"groupNameExists\": \"用户组名称不可重复\",\n    \"groupNamePrompt\": \"用户组名称不能超过30字符\",\n    \"groupNameRequired\": \"用户组名称不可为空\",\n    \"roleNameExists\": \"角色名称已存在\",\n    \"parameterConfig\": \"参数配置\",\n    \"spaceAuthorization\": \"空间授权\",\n    \"spaceAuthorizationDesc\": \"选择该角色可以访问的空间\",\n    \"spaceName\": \"空间名称\",\n    \"workspace\": \"工作台\",\n    \"adminSpace\": \"管理后台\",\n    \"language\": \"语言\",\n\n    \"assistantAuthorization\": \"助手权限\",\n    \"assistantName\": \"助手名称\",\n    \"userList\": \"用户列表\",\n    \"userGroup\": \"用户组\",\n    \"role\": \"角色\",\n    \"searchUserGroups\": \"搜索用户组\",\n    \"searchUser\": \"搜索用户\",\n    \"searchRoles\": \"搜索角色\",\n    \"reset\": \"重置\",\n    \"confirm\": \"确认\",\n    \"userGroupName\": \"输入用户组名称\",\n    \"groupName\": \"用户组名称\",\n    \"admins\": \"管理员\",\n    \"flowControl\": \"用户组整体流量控制\",\n    \"AssistantFlowCtrl\": \"助手流量控制\",\n    \"SkillFlowCtrl\": \"技能流量控制\",\n    \"flowCtrl\": \"工作流流量控制\",\n    \"createdBy\": \"创建人\",\n    \"flowCtrlStrategy\": \"流量控制策略\",\n    \"limit\": \"有限制\",\n    \"unlimited\": \"无限制\",\n    \"iconHover\": \"同时受用户组整体流量控制策略约束\",\n    \"maximum\": \"最多\",\n    \"perMinute\": \"个同时在线会话\",\n    \"changeTime\": \"修改时间\",\n    \"deleteGroup\": \"删除后 【{{name}}】 将不再存在，是否删除?\",\n    \"currentGroup\": \"当前用户组\",\n    \"defaultGroup\": \"默认用户组\",\n    \"resetPwd\": \"重置密码\",\n    \"selectUser\": \"请选择用户\",\n    \"selectGroup\": \"请选择用户组\",\n    \"selectRole\": \"请选择角色\",\n    \"menuAuthorization\": \"菜单权限\",\n    \"primaryMenu\": \"一级菜单\",\n    \"viewPermission\": \"查看权限\",\n    \"themeColor\": \"主题配色\",\n    \"toolAuthorization\": \"工具权限\",\n    \"createUser\": \"创建用户\",\n    \"usernamePlaceholder\": \"后续使用此用户名进行登录，用户名不可修改\",\n    \"initialPassword\": \"初始密码\",\n    \"passwordPlaceholder\": \"至少 8 个字符，必须包含大写字母、小写字母、数字和符号的组合\",\n    \"userGroupRoleSelection\": \"用户组/角色选择\",\n    \"usernameRequired\": \"用户名不可为空\",\n    \"usernameMaxLength\": \"用户名最长 30 个字符\",\n    \"passwordRequirements\": \"初始密码至少 8 个字符，必须包含大写字母、小写字母、数字和符号的组合\",\n    \"roleRequired\": \"至少选择一个角色\",\n    \"userCreationSuccess\": \"创建用户成功！已复制用户名和初始密码到剪贴板\"\n  },\n  \"skills\": {\n    \"manageTemplate\": \"管理技能模板\",\n    \"createNew\": \"新建技能\",\n    \"customSkills\": \"自定义技能\",\n    \"chooseOnline\": \"选择上线版本\",\n    \"executionSteps\": \"技能通过可视化的流程编排，明确任务执行步骤\",\n    \"sceneTemplates\": \"我们提供场景模板供您使用和参考\",\n    \"manageProjects\": \"在此页面管理您的技能，对技能上下线、编辑等等\",\n    \"skillSearch\": \"搜索您需要的技能\",\n    \"confirmDeleteSkill\": \"确认删除该技能？\",\n    \"backToSkillList\": \"返回技能列表\",\n    \"skillTemplateManagement\": \"技能模板管理，模板对所有用户可见，支持拖拽排序、删除操作\",\n    \"templateName\": \"模板名称\",\n    \"templateDescription\": \"模板描述\",\n    \"confirmText\": \"是否确认删除该技能模板？\",\n    \"skillSettings\": \"技能设置\",\n    \"basicInfo\": \"基础信息\",\n    \"skillName\": \"技能名称\",\n    \"description\": \"描述\",\n    \"parameterInfo\": \"参数信息\",\n    \"advancedConfiguration\": \"高级配置\",\n    \"nextStep\": \"下一步，高级配置\",\n    \"skillNameRequired\": \"请填写技能名称\",\n    \"skillNameTooLong\": \"技能名称过长，不要超过30字\",\n    \"skillNameExists\": \"该名称已存在\",\n    \"skillDescRequired\": \"请填写技能描述\",\n    \"skillDescTooLong\": \"技能描述过长，不要超过200字\",\n    \"errorTitle\": \"关键信息有误\",\n    \"onlineFailure\": \"上线失败\",\n    \"onlineSuccessful\": \"上线成功\",\n    \"custom\": \"自定义\",\n    \"skillTemplate\": \"技能模板\",\n    \"skillTemplateChoose\": \"您可以从这里挑选一个模板开始，或者自定义高级模板\",\n    \"createTemplate\": \"创建模板\",\n    \"createSuccessTitle\": \"技能创建成功\",\n    \"createFailureTitle\": \"创建失败\",\n    \"createdBy\": \"创建用户\",\n    \"offline\": \"下线\",\n    \"online\": \"上线\",\n    \"guideWords\": \"引导词\",\n    \"currentVersion\": \"当前版本:\",\n    \"importLocal\": \"导入本地组件\",\n    \"save\": \"保存\",\n    \"import\": \"导入\",\n    \"export\": \"导出\",\n    \"code\": \"代码\",\n    \"simplify\": \"简化\",\n    \"saveVersion\": \"另存为新版本\",\n    \"deleteOrNot\": \"是否删除\",\n    \"version\": \"版本\",\n    \"saveSuccessful\": \"保存成功\",\n    \"supportVersions\": \"支持分成多个版本分支，分别进行开发以及版本间的比较。\",\n    \"guideQuestions50\": \"引导问题最多50个字符\",\n    \"chatHistoryMaxToken\": \"聊天历史最大 token 数必须是一个整数\",\n    \"promptWords1000\": \"开场白最多为1000个字符\",\n    \"contactAdmin\": \"请联系管理员上线助手\",\n    \"deleteSure\": \"确认删除该工具？\",\n    \"modelRequired\": \"模型为空\",\n    \"avatar\": \"技能头像\",\n    \"switchTo\": \"切换到\"\n  },\n  \"chat\": {\n    \"newChat\": \"新建会话\",\n    \"chooseOne\": \"选择一个\",\n    \"dialogue\": \"对话\",\n    \"start\": \"开始\",\n    \"wenqingruijian\": \"文擎睿见\",\n    \"inputPlaceholder\": \"请输入问题\",\n    \"uploadFileTooltip\": \"上传文件\",\n    \"sendTooltip\": \"发送\",\n    \"forms\": \"表单\",\n    \"skillTempsTitle\": \"技能选择\",\n    \"skillTempsDesc\": \"选择一个您想使用的线上技能\",\n    \"networkError\": \"网络连接出现错误,请尝试以下方法\",\n    \"networkErrorList1\": \"操作不要过快\",\n    \"networkErrorList2\": \"刷新页面\",\n    \"networkErrorList3\": \"检查后台是否启动\",\n    \"buildError\": \"您好像缺少了某些配置\",\n    \"connectionbreakTip\": \"链接异常断开：\",\n    \"connectionbreak\": \"网络断开！\",\n    \"copyTip\": \"内容已复制\",\n    \"noAccess\": \"因权限不足，该答案剔除了无权查看的内容\",\n    \"sourceFromQaLibrary\": \"本答案来源于已有问答库\",\n    \"source\": \"参考来源\",\n    \"file\": \"文件\",\n    \"filePrsing\": \"文件正在解析中\",\n    \"uploading\": \"上传中...\",\n    \"fileParsingShort\": \"解析中...\",\n    \"uploadingShort\": \"上传中...\",\n    \"fileUploadFailed\": \"文件上传失败: {{name}}\",\n    \"fileExceedRemoved\": \"文件：{{name}}超过{{size}}M，已移除\",\n    \"fileTypeNotAllowed\": \"不支持文件类型：{{type}}\",\n    \"uploadFailedCheckFormat\": \"上传失败,请检查文件格式\",\n    \"sourceTooltip\": \"来源段落\",\n    \"filterLabel\": \"筛选标签\",\n    \"tooltipText\": \"系统自动根据答案生成关键信息标签,也可手动增删标签,系统根据标签计算各个文件及段落相关性。\",\n    \"customLabel\": \"自定义\",\n    \"addCustomLabel\": \"+自定义\",\n    \"sourceDocumentsLabel\": \"来源文档\",\n    \"downloadPDFTooltip\": \"下载双层PDF\",\n    \"downloadOriginalTooltip\": \"下载原文件\",\n    \"noMatchedFilesMessage\": \"无匹配的源文件\",\n    \"fileStorageFailure\": \" 文件地址失效!\",\n    \"confirmDeleteChat\": \"确认删除该会话？\",\n    \"roundOver\": \"本轮结束\",\n    \"chatDialogTip\": \"设置提示模板中定义的输入变量。与代理和链互动\",\n    \"feedback\": \"反馈\",\n    \"feedbackRequired\": \"反馈信息不能为空\",\n    \"dialogueSelection\": \"对话选择\",\n    \"chooseSkillOrAssistant\": \"选择一个您想使用的线上技能或助手\",\n    \"search\": \"搜索\",\n    \"recommendationQuestions\": \"推荐问题\",\n    \"historicalMessages\": \"以上为历史消息\",\n    \"clickDownload\": \"点击下载\",\n    \"searchAssistantOrSkill\": \"搜索应用\",\n    \"operationTips\": \"操作提示：在左侧选择要展示的标签，在右侧拖拽进行排序\",\n    \"selected\": \"已选\",\n    \"pleaseSelectAnApp\": \"请选择一个应用\",\n    \"allLabels\": \"全部标签\",\n    \"searchLabels\": \"搜索标签\",\n    \"confirmed\": \"已确认\",\n    \"confirm\": \"确认\",\n    \"runNewWorkflow\": \"开启新会话\",\n    \"chatEndMessage\": \"本轮会话已结束\"\n  },\n  \"model\": {\n    \"addSuccess\": \"添加成功\",\n    \"advancedParamsConfig\": \"高级参数配置\",\n    \"asr\": \"语音识别(ASR)\",\n    \"back\": \"返回\",\n    \"cancel\": \"取消\",\n    \"cannotBeEmpty\": \"不可为空\",\n    \"dailyCallLimit\": \"每日调用限制\",\n    \"delete\": \"删除\",\n    \"deleteConfirmation\": \"确定要删除该服务提供商吗？\",\n    \"deleteModelConfirmation\": \"确定要删除该模型吗？\",\n    \"deleteSuccess\": \"删除成功\",\n    \"duplicateServiceProviderName\": \"服务提供商名称已存在\",\n    \"duplicateServiceProviderNameValidation\": \"服务提供商名称不可为空且最多100个字符\",\n    \"embedding\": \"嵌入(Embedding)\",\n    \"errorInvalidJsonFormat\": \"错误：无效的 JSON 格式。请检查你的输入\",\n    \"guiJiLiuDong\": \"硅基流动\",\n    \"huoShanYinQing\": \"火山引擎\",\n    \"interModelFormat\": \"接口模型格式\",\n    \"aliYunBaiLian\": \"阿里云百炼\",\n    \"max100Characters\": \"最多 100 个字符\",\n    \"model\": \"模型\",\n    \"modelDuplicate\": \"模型名称重复\",\n    \"modelNameEmpty\": \"模型名称不可为空\",\n    \"modelNameLength\": \"模型名称长度不能超过100个字符\",\n    \"modelNameTooltip\": \"模型在该服务提供商中的具体名称\",\n    \"modelNameDuplicate\": \"模型名称已存在\",\n    \"modelNameValidation\": \"模型名称不可为空且最多100个字符\",\n    \"modelStatusChecking\": \"模型状态检测中\",\n    \"notBeEmpty\": \"不能为空\",\n    \"pasteAdvancedParamsHere\": \"请在下方的文本框中粘贴或输入你的高级参数配置\",\n    \"qianFan\": \"百度千帆\",\n    \"rerank\": \"重排(Rerank)\",\n    \"save\": \"保存\",\n    \"saveSuccess\": \"保存成功\",\n    \"serviceProviderName\": \"服务提供商名称\",\n    \"serviceProviderNameTooltip\": \"为这个服务提供商配置起一个名称，方便识别\",\n    \"silicon\": \"硅基流动\",\n    \"tengXunYun\": \"腾讯云\",\n    \"timesPerDay\": \"次/天\",\n    \"tts\": \"语音合成(TTS)\",\n    \"updateSuccess\": \"更新成功\",\n    \"voiceType\": \"语音类型\",\n    \"voiceTypeRequired\": \"语音类型为必填项\",\n    \"voiceTypeTooltip\": \"选择语音合成的声音类型\",\n    \"webSearch\": \"网络搜索\",\n    \"zhiPuAI\": \"智谱 AI\",\n    \"xunFeiXingHuo\": \"讯飞星火\",\n    \"yueZhiAnMian\": \"月之暗面\",\n    \"baiDuQianFan\": \"百度千帆\",\n    \"visitOfficialWebsiteToViewAvailableModels\": \"前往官网查看可用模型\",\n    \"modelManagement\": \"模型管理\",\n    \"modelFineTune\": \"模型微调\",\n    \"modelConfiguration\": \"模型配置\",\n    \"modelCollectionCaption\": \"模型集合\",\n    \"modelName\": \"模型名称\",\n    \"status\": \"状态\",\n    \"systemModelSettings\": \"系统模型设置\",\n    \"addModel\": \"添加模型\",\n    \"refresh\": \"刷新\",\n    \"serviceProvider\": \"模型服务提供方\",\n    \"actions\": \"操作\",\n    \"modelType\": \"模型类型\",\n    \"onlineOfflineOperation\": \"上下线操作\",\n    \"available\": \"可用\",\n    \"abnormal\": \"异常\",\n    \"unknown\": \"未知\",\n    \"empty\": \"暂无数据\",\n    \"gpuResourceUsageTitle\": \"GPU资源使用情况\",\n    \"jsonFormatError\": \"JSON格式有误\"\n  },\n  \"finetune\": {\n    \"all\": \"全部\",\n    \"successful\": \"成功\",\n    \"inProgress\": \"进行中\",\n    \"failedAborted\": \"失败/中止\",\n    \"modelName\": \"模型名称\",\n    \"createTrainingTask\": \"创建训练任务\",\n    \"rtService\": \"FT服务\",\n    \"rtServiceManagement\": \"FT服务管理\",\n    \"createTime\": \"创建时间\",\n    \"noData\": \"暂无数据\",\n    \"trainingInProgress\": \"训练中\",\n    \"trainingFailed\": \"训练失败\",\n    \"taskAborted\": \"任务中止\",\n    \"trainingSuccess\": \"训练成功\",\n    \"publishSuccess\": \"发布成功\",\n    \"selectModel\": \"选择模型以查看详情.\"\n  },\n  \"flow\": {\n    \"unsavedChangesConfirmation\": \"您有未保存的更改，确定要离开吗？\",\n    \"leave\": \"离开\",\n    \"leaveAndSave\": \"离开并保存\",\n    \"simplifyConfig\": \"简化配置\",\n    \"simplify\": \"简化\",\n    \"notifications\": \"通知\",\n    \"exit\": \"退出\",\n    \"import\": \"导入\",\n    \"export\": \"导出\",\n    \"code\": \"代码\",\n    \"searchComponent\": \"查找组件\",\n    \"knowledgeBaseSelection\": \"知识库选择\",\n    \"searchKnowledgeBase\": \"搜索知识库\",\n    \"minimumParamSetDescription\": \"您可以在此设置技能所需的最小参数集\",\n    \"paramList\": \"参数列表\",\n    \"saveConfig\": \"保存配置\",\n    \"componentLabel\": \"组件\",\n    \"aliasLabel\": \"别名\",\n    \"editAlias\": \"修改别名\",\n    \"parameterLabel\": \"参数\",\n    \"notification\": \"消息\",\n    \"noNewNotifications\": \"没有新的通知\",\n    \"skillName\": \"技能名\",\n    \"nameTooLong\": \"名称过长\",\n    \"skillDescription\": \"技能描述\",\n    \"enterVarName\": \"请输入变量名\",\n    \"varNameExists\": \"变量名重复\",\n    \"text\": \"文本\",\n    \"dropdown\": \"下拉框\",\n    \"maxLength\": \"最大长度\",\n    \"options\": \"选项\",\n    \"variableName\": \"变量名\",\n    \"varOptionRequired\": \"请输入选项内容\",\n    \"optionRepeated\": \"选项重复\",\n    \"incorrectIdFormatMessage\": \"ID格式有误（包含字符和数字组成的5位字符）\",\n    \"idAlreadyExistsMessage\": \"该ID已存在\"\n  },\n  \"lib\": {\n    \"knowledgeBaseId\": \"知识库ID\",\n    \"enterLibraryName\": \"请输入知识库名称\",\n    \"libraryNameLimit\": \"知识库名称字数不得超过30字\",\n    \"selectModel\": \"请选择一个模型\",\n    \"nameExists\": \"该名称已存在\",\n    \"descriptionLimit\": \"知识库描述字数不得超过200字\",\n    \"createLibrary\": \"创建知识库\",\n    \"libraryName\": \"知识库简介\",\n    \"description\": \"描述\",\n    \"model\": \"模型\",\n    \"fileData\": \"文档知识库\",\n    \"structuredData\": \"结构化数据\",\n    \"qaData\": \"QA知识库\",\n    \"libraryCollection\": \"知识库集合\",\n    \"createUser\": \"创建用户\",\n    \"details\": \"详情\",\n    \"confirmDeleteLibrary\": \"确认删除该知识库?\",\n    \"copy\": \"复制\",\n    \"copying\": \"复制中\",\n    \"searchPlaceholder\": \"知识库或文件名称\",\n    \"desc\": \"知识库描述\",\n    \"knowledgeBaseDescription\": \"请输入知识库描述\",\n    \"creationComplete\": \"完成创建\",\n    \"embeddingModelSelection\": \"知识库embedding模型选择\"\n  },\n  \"evaluation\": {\n    \"id\": \"任务ID\",\n    \"filename\": \"测试文件名称\",\n    \"skillAssistant\": \"应用\",\n    \"status\": \"状态\",\n    \"score\": \"评测分数\",\n    \"createDate\": \"创建日期\",\n    \"download\": \"下载\",\n    \"confirmDeleteEvaluation\": \"确认删除该评测任务？\",\n    \"createTitle\": \"新建任务\",\n    \"selectLabel\": \"选择要评测的应用：\",\n    \"selectPlaceholder\": \"请选择\",\n    \"selectInputPlaceholder\": \"请根据名称进行搜索\",\n    \"dataLabel\": \"测试集数据：\",\n    \"fileExpandName\": \"支持扩展名：\",\n    \"downloadTemplate\": \"下载模板文件\",\n    \"promptLabel\": \"评测指令文本：\",\n    \"enterExecType\": \"请选择要评测的应用类型\",\n    \"enterFile\": \"请上传测试集数据\",\n    \"fileSizeLimit\": \"文件大小限制在10M以内\",\n    \"enterPrompt\": \"评测指令不能为空\",\n    \"evaluationCollection\": \"评测集合\",\n    \"tooltip\": \"该指令文本用于指导大模型对 ground truth 和 answer 提取要点，如无特别需求请勿修改\",\n    \"create\": \"创建\",\n    \"cancel\": \"取消\",\n    \"precision\": \"准确率\",\n    \"recall\": \"召回率\",\n    \"onlyCsvAllowed\": \"只允许上传csv格式的文件\",\n    \"excelNotSupported\": \"不支持Excel格式，请上传CSV文件\",\n    \"onlyCsvSupported\": \"仅支持CSV格式\",\n    \"selectWorkflow\": \"请选择工作流\",\n    \"selectSkill\": \"请选择技能\",\n    \"selectAssistant\": \"请选择助手\",\n    \"selectVersion\": \"请选择版本\"\n  },\n  \"code\": {\n    \"editPythonCodeDescription\": \"编辑你的 Python 代码此代码片段接受模块导入和一个函数定义。确保您的函数返回一个字符串。\",\n    \"editCode\": \"编辑代码\",\n    \"codeReadyToRun\": \"代码准备运行\",\n    \"functionError\": \"您的函数中存在一个错误\",\n    \"importsError\": \"您的导入有误\",\n    \"errorOccurred\": \"出错了，请重试\",\n    \"codeError\": \"这段代码有问题，请检查以下\",\n    \"checkAndSave\": \"检查 & 保存\",\n    \"export\": \"导出\",\n    \"exportToJSON\": \"导出技能到json文件中\",\n    \"keyInformationMissing\": \"您有一些关键信息没有填: \",\n    \"skillNameMissing\": \"请填写技能名称\",\n    \"useOwnAPIKeys\": \"使用自己的API keys\",\n    \"exportSkill\": \"导出技能\",\n    \"uploadFile\": \"上传文件\",\n    \"clickOrDragHere\": \"点击或将文件拖拽到这里上传\",\n    \"dropFileHere\": \"将文件拖拽到这里上传\",\n    \"delimiter\": \"切分符(多个以;分隔)\",\n    \"splitLength\": \"切分文本长度\",\n    \"smartSplit\": \"智能语义切分\",\n    \"manualSplit\": \"手动设置切分\",\n    \"delimiterPlaceholder\": \"切分符号\",\n    \"splitSizePlaceholder\": \"切分大小\",\n    \"complete\": \"完成\",\n    \"setSplitSize\": \"请设置文件切分大小\",\n    \"selectFileToUpload\": \"请先选择文件上传\",\n    \"file\": \"文件\",\n    \"sizeExceedsLimit\": \"超过{{size}}M,已移除\",\n    \"editDictionary\": \"编辑词典\",\n    \"exportCodeDialogTip\": \"生成代码，将流程集成到外部应用程序中 (打开此页面前请先build技能)。\",\n    \"chunkOverlap\": \"切分文本重叠长度\"\n  },\n  \"report\": {\n    \"reportTemplate\": \"报告模板\",\n    \"reportDescription\": \"报告生成描述...\",\n    \"newButton\": \"新建\",\n    \"importButton\": \"导入\",\n    \"start\": \"开始\",\n    \"formSettings\": \"表单设置\",\n    \"requiredLabel\": \"必填\",\n    \"isRequired\": \"是必填项\",\n    \"fileRequired\": \"当前文件为空\",\n    \"selectComponent\": \"选择一个组件\",\n    \"varLength\": \"长度不能超过\",\n    \"requiredField\": \"{{label}} 为必填项，不能为空。\"\n  },\n  \"status\": {\n    \"1004\": \"该技能已被删除\",\n    \"1008\": \"当前应用未上线，无法直接对话\",\n    \"1005\": \"\"\n  },\n\n  \"importLinsight\": {\n    \"title\": \"从运行记录中导入指导手册\",\n    \"searchPlaceholder\": \"搜索指导手册\",\n    \"loading\": \"加载中...\",\n    \"noRecords\": \"暂无运行记录\",\n    \"noMatchingRecords\": \"没有找到匹配的记录\",\n    \"columns\": {\n      \"selectAll\": \"全选\",\n      \"name\": \"名称\",\n      \"createTime\": \"创建时间\",\n      \"createUser\": \"创建用户\",\n      \"rating\": \"评分\"\n    },\n    \"pagination\": {\n      \"totalRecords\": \"共 {{total}} 条记录\",\n      \"goToPage\": \"跳至\",\n      \"page\": \"页\"\n    },\n    \"selectedCount\": \"已选择 {{count}} 项\",\n    \"batchImport\": \"批量导入\",\n    \"preview\": {\n      \"title\": \"预览\",\n      \"noSelection\": \"请从左侧选择一条记录进行预览\",\n      \"description\": \"描述\"\n    },\n    \"importCurrent\": \"导入当前指导手册\",\n    \"duplicateDialog\": {\n      \"title\": \"SOP重复提示\",\n      \"description\": \"以下SOP在库中已存在，确认是否在导入时覆盖？\",\n      \"noDuplicateNames\": \"未获取到重复SOP名称\",\n      \"saveAsNew\": \"不覆盖，另存为新SOP\",\n      \"savingAsNew\": \"正在另存为新SOP...\",\n      \"overwrite\": \"覆盖\",\n      \"overwriting\": \"正在覆盖SOP...\"\n    },\n    \"success\": \"导入成功\",\n    \"error\": \"导入失败\",\n    \"guidelineManual\": \"指导手册\",\n    \"noRunningResult\": \"无运行结果\",\n    \"runningResult\": \"运行结果\",\n    \"name\": \"名称\",\n    \"creator\": \"创建者\",\n    \"description\": \"描述\",\n    \"featured\": \"精选\",\n    \"notFeatured\": \"非精选\",\n    \"actions\": \"操作\",\n    \"reset\": \"重置\",\n    \"apply\": \"确认\",\n    \"edit\": \"编辑\",\n    \"delete\": \"删除\",\n    \"noRatings\": \"暂无评分\",\n    \"noSOPFound\": \"未找到相关SOP\",\n    \"goTo\": \"跳至\",\n    \"pages\": \"页\"\n  },\n  \"sopForm\": {\n    \"editManual\": \"编辑指导手册\",\n    \"createManual\": \"新建指导手册\",\n    \"manualName\": \"指导手册名称\",\n    \"namePlaceholder\": \"请输入指导手册名称\",\n    \"description\": \"描述\",\n    \"descriptionPlaceholder\": \"请输入指导手册描述\",\n    \"detailedContent\": \"详细内容\",\n    \"contentPlaceholder\": \"请输入SOP详细内容\",\n    \"cancel\": \"取消\",\n    \"saving\": \"保存中...\",\n    \"save\": \"保存\",\n    \"nameRequired\": \"名称不能为空\",\n    \"contentRequired\": \"详细内容不能为空\",\n    \"nameMaxLength\": \"名称不能超过{{max}}字\",\n    \"contentMaxLength\": \"详细内容不能超过{{max}}字\",\n    \"importFailed\": \"SOP 导入失败\",\n    \"contentTooLong\": \"内容超长\",\n    \"saveFailed\": \"保存失败\",\n    \"manual\": \"指导手册\",\n    \"result\": \"运行结果\",\n    \"noResult\": \"无运行结果\",\n    \"onlyFeaturedWithResult\": \"仅可精选包含运行结果的案例\",\n    \"featuredCase\": \"精选案例\",\n    \"setAsFeaturedCase\": \"设为精选案例\",\n    \"failToSetFeaturedCase\": \"sop设置精选案例失败\"\n  },\n  \"toolSelector\": {\n    \"selectedTools\": \"已选工具\",\n    \"noToolsSelected\": \"暂未选择任何工具\",\n    \"selectToolsPrompt\": \"请在右侧全量工具中挑选工具\",\n    \"allTools\": \"全量工具\",\n    \"searchPlaceholder\": \"搜索工具...\",\n    \"builtinTools\": \"内置工具\",\n    \"apiTools\": \"API工具\",\n    \"mcpTools\": \"MCP工具\",\n    \"noToolsFound\": \"未找到相关工具\"\n  },\n  \"chatConfig\": {\n    \"linsightPlaceholder\": \"$t(linsight)是一位擅长完成复杂任务的Agent助理，除了描述任务目标外，您还可以用通俗的语言描述希望如何实现，这将有助于得到符合您预期的结果~\",\n    \"linsightTools\": \"$t(linsight)可选工具\",\n    \"linsightManual\": \"$t(linsight)指导手册库\",\n    \"searchManual\": \"搜索指导手册\",\n    \"importFromRecord\": \"从运行记录导入\",\n    \"importFromLocal\": \"从本地文件导入\",\n    \"createManual\": \"新建指导手册\",\n    \"batchDelete\": \"批量删除\",\n    \"batchDeleteConfirm\": \"批量删除确认\",\n    \"batchDeleteDesc\": \"确认批量删除所选SOP吗？\",\n    \"confirmDelete\": \"确认删除\",\n    \"importManual\": \"导入指导手册\",\n    \"uploadFile\": \"请上传文件\",\n    \"exampleFile\": \"示例文件\",\n    \"exampleFileName\": \"用户指导手册格式示例.xlsx\",\n    \"importing\": \"导入中...\",\n    \"fileFormatError\": \"文件格式不符合要求\",\n    \"gotIt\": \"知道了\",\n    \"savePreview\": \"保存并预览\",\n    \"save\": \"保存\",\n    \"cancel\": \"取消\",\n    \"submit\": \"提交\",\n    \"workstationEntry\": \"灵思入口\",\n    \"iconUpload\": \"图标上传\",\n    \"sidebarIcon\": \"左侧边栏图标\",\n    \"assistantIcon\": \"欢迎页面图标&对话头像\",\n    \"sidebarSlogan\": \"左侧边栏slogan\",\n    \"welcomeMessage\": \"欢迎语设置\",\n    \"welcomeMessagePlaceholder\": \"我是 $t(bisheng)，很高兴见到你！\",\n    \"functionDescription\": \"功能说明\",\n    \"functionDescriptionPlaceholder\": \"我可以帮你写代码、读文件、写作各种创意内容，请把你的任务交给我吧～\",\n    \"inputPlaceholder\": \"输入框提示语\",\n    \"inputPlaceholderPlaceholder\": \"给xx发送消息\",\n    \"appCenterWelcome\": \"应用中心欢迎语\",\n    \"appCenterWelcomePlaceholder\": \"探索$t(bisheng)的智能体\",\n    \"appCenterDescription\": \"应用中心描述\",\n    \"appCenterDescriptionPlaceholder\": \"您可以在这里选择需要的智能体来进行生产与工作~\",\n    \"modelManagement\": \"对话模型管理\",\n    \"maxTokens\": \"知识库/联网检索结果最大字符数\",\n    \"maxTokensPlaceholder\": \"模型支持的最大字符数\",\n    \"systemPrompt\": \"系统提示词\",\n    \"systemPromptPlaceholder\": \"请输入模型系统提示词\",\n    \"webSea\": \"联网搜索\",\n    \"knowledgeBase\": \"知识库\",\n    \"knowledgeBasePrompt\": \"知识库搜索提示词\",\n    \"fileUpload\": \"文件上传\",\n    \"fileUploadPrompt\": \"文件上传提示词\",\n    \"webSearchConfig\": \"联网搜索配置\",\n    \"saveSuccess\": \"配置保存成功\",\n    \"saveFailed\": \"保存失败\",\n    \"requestFailed\": \"请求失败，请稍后重试\",\n    \"sortFailed\": \"排序失败，请稍后重试\",\n    \"initLoadFailed\": \"初始化数据加载失败\",\n    \"submitSuccess\": \"提交成功\",\n    \"uploadXlsxTip\": \"请上传 .xlsx 格式的文件！\",\n    \"fileExtMustBeXlsx\": \"文件扩展名必须是 .xlsx！\",\n    \"sopUpdated\": \"SOP更新成功\",\n    \"sopCreated\": \"SOP创建成功\",\n    \"notFoundSop\": \"未找到要编辑的SOP\",\n    \"deleteConfirmTitle\": \"删除确认\",\n    \"deleteConfirmDesc\": \"确认删除该SOP吗？\",\n    \"deleteSuccess\": \"SOP删除成功\",\n    \"deleteFailed\": \"删除失败\",\n    \"batchDeleteSuccess\": \"成功删除 {{count}} 个 SOP\",\n    \"webSearch\": {\n      \"engine\": \"联网搜索引擎\",\n      \"config\": \"联网搜索工具配置\",\n      \"bing\": \"Bing 搜索\",\n      \"bocha\": \"博查websearch\",\n      \"jina\": \"Jina 深度搜索\",\n      \"serp\": \"Serp API\",\n      \"tavily\": \"Tavily\",\n      \"cloudsway\": \"cloudsway\",\n      \"searXNG\": \"searXNG\",\n      \"serverUrl\": \"服务器地址\",\n      \"serverUrlPlaceholder\": \"填写您部署 searXNG 的访问地址，例如：http://localhost:8080\"\n    },\n    \"errors\": {\n      \"maxCharacters\": \"最多{{count}}个字符\",\n      \"atLeastOneModel\": \"至少添加一个模型\",\n      \"modelNameRequired\": \"模型显示名称不能为空\",\n      \"modelRequired\": \"模型不能为空\",\n      \"modelDuplicate\": \"模型不能重复\",\n      \"voiceTypeRequired\": \"音色类型不可为空\",\n      \"modelNameDuplicate\": \"显示名称不能重复\",\n      \"required\": \"不能为空\"\n    },\n    \"systemPrompt2\": \"# 角色设定\\n- 你是 $t(bisheng) 智能问答助手，旨在为用户提供**信息查询、内容创作、学习辅导、编程帮助、生活建议**等多方面的帮助。\\n- 你应始终保持友好、专业、耐心和乐于助人的态度，用清晰、准确、易懂的语言与用户沟通。\\n# 行为准则\\n1. **角色一致性：** 始终以$t(bisheng) 智能问答助手的身份与用户互动，不扮演其他无关角色或人物。\\n2. **信息准确性：** 尽力提供准确、可靠的信息，对于不确定的内容应明确说明，不误导用户。\\n3. **隐私保护：** 不主动索要或记录用户的个人信息，不存储、泄露任何用户隐私数据和敏感信息。\\n4. **内容安全性：** 遵守法律法规及伦理道德，不生成、传播涉政、违法违规、暴力、色情、歧视、仇恨等不良内容。\\n5. **中立客观：** 在涉及争议性话题时，保持中立，提供多方视角，不偏袒任何一方。\\n6. **适度引导：** 若用户提问模糊或不完整，可适当引导用户澄清问题，但不得强迫或表现出不耐烦。\\n# 语言与风格：\\n- 根据用户所使用的语言类型或者用户需求进行交流。\\n- 语言风格应 **清晰简洁、礼貌友好、通俗易懂**，根据用户背景与提问内容调整表达方式。\\n- 可适当使用 **表情符号**（如 😊、👍）增加亲和力，但不过度使用，保持专业形象。\\n# 时间信息\\n当前时间是{cur_date}。\\n# 支持 echarts 图表渲染\\n回复时如果需要渲染图表，请使用以 ```echarts 开头的代码块，并将配置写入其中。\\n示例如下：\\n```echarts\\n{{\\n  \\\"title\\\": {{\\n    \\\"text\\\": \\\"ECharts 入门示例\\\"\\n  }},\\n  \\\"tooltip\\\": {{}},\\n  \\\"legend\\\": {{\\n    \\\"data\\\": [\\\"销量\\\"]\\n  }},\\n  \\\"xAxis\\\": {{\\n    \\\"data\\\": [\\\"衬衫\\\", \\\"羊毛衫\\\", \\\"雪纺衫\\\", \\\"裤子\\\", \\\"高跟鞋\\\", \\\"袜子\\\"]\\n  }},\\n  \\\"yAxis\\\": {{}},\\n  \\\"series\\\": [{{\\n    \\\"name\\\": \\\"销量\\\",\\n    \\\"type\\\": \\\"bar\\\",\\n    \\\"data\\\": [5, 20, 36, 10, 10, 20]\\n  }}]\\n}}\\n```\",\n    \"webSearchPrompt\": \"# 以下内容是基于用户发送的消息的搜索结果:\\n{search_results}\\n在我给你的搜索结果中，每个结果都是[webpage X begin]...[webpage X end]格式的，X代表每篇文章的数字索引。请在适当的情况下在句子末尾引用上下文。请按照引用编号[citation:X]的格式在答案中对应部分引用上下文。如果一句话源自多个上下文，请列出所有相关的引用编号，例如:cite[3]:cite[5]，切记不要将引用集中在最后返回引用编号，而是在答案对应部分列出。\\n在回答时，请注意以下几点：\\n- 今天是{cur_date}。\\n- 并非搜索结果的所有内容都与用户的问题密切相关，你需要结合问题，对搜索结果进行甄别、筛选。\\n- 对于列举类的问题（如列举所有航班信息），尽量将答案控制在10个要点以内，并告诉用户可以查看搜索来源、获得完整信息。优先提供信息完整、最相关的列举项；如非必要，不要主动告诉用户搜索结果未提供的内容。\\n- 对于创作类的问题（如写论文），请务必在正文的段落中引用对应的参考编号，例如:cite[3]:cite[5]，不能只在文章末尾引用。你需要解读并概括用户的题目要求，选择合适的格式，充分利用搜索结果并抽取重要信息，生成符合用户要求、极具思想深度、富有创造力与专业性的答案。你的创作篇幅需要尽可能延长，对于每一个要点的论述要推测用户的意图，给出尽可能多角度的回答要点，且务必信息量大、论述详尽。\\n- 如果回答很长，请尽量结构化、分段落总结。如果需要分点作答，尽量控制在5个点以内，并合并相关的内容。\\n- 对于客观类的问答，如果问题的答案非常简短，可以适当补充一到两句相关信息，以丰富内容。\\n- 你需要根据用户要求和回答内容选择合适、美观的回答格式，确保可读性强。\\n- 你的回答应该综合多个相关网页来回答，不能重复引用一个网页。\\n- 除非用户要求，否则你回答的语言需要和用户提问的语言保持一致。\\n\\n# 用户消息为：\\n{question}\",\n    \"internationalization\": \"你是一个知识库问答助手：\\n1. 按照用户使用的语言回答问题，并且答案要严谨专业。\\n2. 你需要依据以下【参考文本】中的内容来回答，当【参考文本】中有明确与用户问题相关的内容时才进行回答，不可根据自己的知识来回答。若相关内容中包含图片内容的，请直接输出图片源文件，若占位符（例如：`![image](路径/IMAGE_1.png)`），回答时请保留这些占位符，不要修改或删除。\\n3. 如果文档中包含表格，请不要做任何修改，或返回表格格式的markdown。\\n4. 由于【参考文本】可能包含多个来自不同信息源的信息，所以根据这些不同的信息源可能得出有差异甚至冲突的答案，当发现这种情况时，这些答案都列举出来；如果没有冲突或差异，则只需要给出一个最终结果。\\n5. 若【参考文本】中内容与用户问题不相关则回复“没有找到相关内容”。\\n\\n# 参考文本\\n{retrieved_file_content}\\n\\n# 用户问题\\n{question}\"\n  },\n  \"build\": {\n    \"create\": \"创建\",\n    \"assistant\": \"助手\",\n    \"workflow\": \"工作流\",\n    \"skill\": \"技能\",\n    \"tools\": \"工具\",\n    \"workbench\": \"工作台\",\n    \"save\": \"保存\",\n    \"online\": \"上线\",\n    \"offline\": \"下线\",\n    \"retry\": \"重试\",\n    \"use\": \"使用\",\n    \"useAll\": \"全部使用\",\n    \"allAppTypes\": \"全部应用类型\",\n    \"assistantConfiguration\": \"助手配置\",\n    \"assistantPortrait\": \"助手画像\",\n    \"portraitOptimization\": \"助手画像优化\",\n    \"automaticOptimization\": \"自动优化\",\n    \"searchApp\": \"搜索您需要的应用\",\n    \"establishAssistant\": \"创建助手\",\n    \"assistantName\": \"助手名称\",\n    \"giveAssistantName\": \"给助手取一个名字\",\n    \"whatWant\": \"你希望助手的角色是什么，具体完成什么任务？\",\n    \"example\": \"示例\",\n    \"exampleOne\": \"你是 XX，具有 XX 经验，擅长 XX，…\",\n    \"exampleTwo\": \"你的任务是 XX ，需要按照以下步骤执行：\",\n    \"automaticallyConfigurations\": \"自动为您选择相关配置\",\n    \"openingRemarks\": \"开场白\",\n    \"guidingQuestions\": \"引导问题\",\n    \"promptReplaced\": \"提示词已替换\",\n    \"guideReplaced\": \"引导词已替换\",\n    \"openingReplaced\": \"开场白已替换\",\n    \"toolsReplaced\": \"工具已替换\",\n    \"skillsReplaced\": \"技能已替换\",\n    \"allReplaced\": \"已全部替换\",\n    \"basicConfiguration\": \"基础配置\",\n    \"modelConfiguration\": \"AI模型配置\",\n    \"model\": \"模型\",\n    \"temperature\": \"温度\",\n    \"openingIntroduction\": \"开场引导\",\n    \"openingStatement\": \"开场白\",\n    \"assistantMessageFormat\": \"助手将在每次对话开始时发送此信息，支持 Markdown 格式\",\n    \"maximumPromptLength\": \"开场白最多为1000个字符\",\n    \"recommendQuestionsForUsers\": \"为用户提供推荐问题，引导用户提问，超过3个时将随机选取3个\",\n    \"maxCharacters50\": \"最多50个字符\",\n    \"enterGuidingQuestions\": \"请输入引导问题\",\n    \"knowledge\": \"知识\",\n    \"knowledgeBase\": \"知识库\",\n    \"autoCall\": \"自动调用\",\n    \"callingMethod\": \"调用方式\",\n    \"autoCallDescription\": \"每轮对话都会对添加的知识库进行检索召回。\",\n    \"onDemandCall\": \"按需调用\",\n    \"onDemandCallDescription\": \"在助手画像（提示词）中提示调用 RecallKnowledge（可复制）方法，在有需要时才对知识库进行检索。\",\n    \"createNewKnowledge\": \"新建知识库\",\n    \"refresh\": \"刷新\",\n    \"abilities\": \"能力\",\n    \"skillDescription\": \"通过可视化界面实现复杂和稳定的业务流程编排，例如项目计划和报告分析\",\n    \"selectKnowledgeBase\": \"请选择知识库\",\n    \"searchBaseName\": \"搜索知识库名称\",\n    \"debugPreview\": \"调试预览\",\n    \"addTool\": \"添加工具\",\n    \"search\": \"搜索\",\n    \"empty\": \"空空如也\",\n    \"onlineSA\": \"上线技能&助手\",\n    \"params\": \"参数\",\n    \"added\": \"已添加\",\n    \"add\": \"添加\",\n    \"configurationUpdated\": \"配置已更新\",\n    \"addSkill\": \"添加技能\",\n    \"createSkill\": \"创建技能\",\n    \"nameRequired\": \"名称不可为空\",\n    \"nameMaxLength\": \"名称最多50个字符\",\n    \"descMaxLength\": \"最多1000个字符\",\n    \"editAssistant\": \"编辑助手\",\n    \"enterName\": \"给助手取一个名字\",\n    \"assistantDesc\": \"助手描述\",\n    \"enterDesc\": \"介绍助手功能，描述在会话和助手页面可见\",\n    \"cancel\": \"取消\",\n    \"confirm\": \"确认\",\n    \"forBetter\": \"为了更好的助手效果，描述需要大于20 个字\",\n    \"forExample\": \"例如助手的身份、完成任务的具体方法和步骤、回答问题时的语气以及应该注意什么问题等\",\n    \"contentSecurityR\": \"内容安全审查\",\n    \"errors\": {\n      \"selectAtLeastOneWordType\": \"词表至少需要选择一个\",\n      \"autoReplyNotEmpty\": \"自动回复内容不可为空\"\n    },\n    \"saveSuccess\": \"保存成功\",\n    \"contentSecurityDesc\": \"通过敏感词表或 API 对会话内容进行安全审查\",\n    \"contentSecuritySettings\": \"内容安全审查设置\",\n    \"enableContentSecurityReview\": \"开启内容安全审查\",\n    \"reviewType\": \"审查类型\",\n    \"sensitiveWordListMatch\": \"敏感词表匹配\",\n    \"modelReview\": \"模型审查\",\n    \"wordListType\": \"词表类型\",\n    \"builtinWordList\": \"内置词表\",\n    \"customWordList\": \"自定义词表\",\n    \"autoReplyContent\": \"自动回复内容\",\n    \"useNewlineToSeparate\": \"使用换行符进行分隔，每行一个\",\n    \"txtFile\": \"txt文件\",\n    \"sensitiveWordMatch\": \"敏感词匹配\",\n    \"defaultAutoReply\": \"填写命中安全审查时的自动回复内容，例如“当前对话内容违反相关规范，请修改后重新输入。\",\n    \"uploadAvator\": \"上传头像\",\n    \"fileSizeLimit\": \"文件大小不能超过\",\n    \"fileTypeLimit\": \"文件类型不符合要求：\",\n    \"enterApiKey\": \"请输入API密钥\",\n    \"enterBaseUrl\": \"请输入Base URL\",\n    \"enterProxy\": \"请输入代理\",\n    \"enterDeploymentName\": \"请输入部署名称\",\n    \"proxyDescription\": \"中国大陆地区以外使用时，需要配置代理\",\n    \"fdProxyDescription\": \"中国大陆地区以外查询股票行情数据时，需要配置代理\",\n    \"editTool\": \"编辑内置工具\",\n    \"assistantAvatar\": \"助手头像\",\n    \"confirmDeleteSkill\": \"确认删除该技能?\",\n    \"confirmDeleteFlow\": \"确认删除该工作流?\",\n    \"confirmDeleteAssistant\": \"确认删除该助手?\",\n    \"maxToken\": \"聊天历史最大token数\",\n    \"maxTokenTip\": \"通过此参数对聊天历史记录进行裁剪，控制发送给模型的历史消息数量，避免出现超长错误，因此不可大于模型支持的最大上下文长度\",\n    \"app\": \"应用\",\n    \"manageAppTemplates\": \"管理应用模板\",\n    \"provideSceneTemplates\": \"我们提供场景模板供您使用和参考\",\n    \"noPermissionToPublish\": \"您没有权限上线此{{type}}，请联系管理员上线。\",\n    \"manageYourApplications\": \"在此页面管理您的应用，对应用上下线、编辑等等\",\n    \"workFlow\": \"工作流\",\n    \"skillName\": \"技能名称\",\n    \"pleaseFillIn\": \"请填写{{labelName}}名称\",\n    \"nameTooLong\": \"{{labelName}}名称过长，不要超过50字\",\n    \"addDescription\": \"加些描述能够快速让别人理解您创造的{{labelName}}\",\n    \"descriptionTooLong\": \"{{labelName}}描述不可超过 200 字\",\n    \"templateCreatedSuccessfully\": \"模板创建成功\",\n    \"workFlowName\": \"工作流名称\",\n    \"modelRequired\": \"模型不能为空\",\n    \"assistantOnlineNoEdit\": \"助手已上线,不可进行更改\",\n    \"unsavedChangesLeave\": \"您有未保存的更改,确定要离开吗?\",\n    \"leaveAndSave\": \"离开并保存\",\n    \"leaveWithoutSave\": \"不保存,直接退出\",\n    \"selectModel\": \"选择一个模型\"\n  },\n  \"bench\": {\n    \"daily\": \"日常\",\n    \"lingsi\": \"$t(linsight)\",\n    \"model\": \"模型\",\n    \"displayName\": \"显示名称\",\n    \"vision\": \"视觉\",\n    \"visionText\": \"开启后，模型将结合图像内容（支持PNG、JPEG、WEBP、非动画GIF格式）进行回答，注意仅多模态模型支持此能力。\",\n    \"webSearchPrompt\": \"联网搜索提示词\",\n    \"confirmDelete\": \"确定要删除吗?\",\n    \"requestFailed\": \"请求失败\",\n    \"deleteFailed\": \"删除失败\",\n    \"fetchToolsFailed\": \"获取 {{type}} 列表失败\",\n    \"statusMessage\": \"共计划导入0条SOP，格式正确0条，错误0条\",\n    \"manualImportSummary\": \"共计划导入{{row}}条指导手册，格式正确{{successRow}}条，格式错误{{errorRow}}条\",\n    \"manualImportRow\": \"第{{row}}行\",\n    \"name_empty\": \"缺少名称\",\n    \"description_empty\": \"缺少详细内容\",\n    \"name_over_size\": \"名称长度超过500字符\",\n    \"content_over_size\": \"详细内容长度超过50000字符\",\n    \"description_over_size\": \"描述长度超过1000字符\",\n    \"inputPlaceholder\": \"请输入你的任务目标，然后交给$t(bisheng)$t(linsight)\",\n    \"inputPlaceholderDescription\": \"$t(linsight)是一位擅长完成复杂任务的Agent助理，除了描述任务目标外，您还可以用通俗的语言描述希望如何实现，这将有助于得到符合您预期的结果~\"\n  },\n  \"tools\": {\n    \"addTool\": \"添加工具\",\n    \"createCustomTool\": \"API工具\",\n    \"builtinTools\": \"内置工具\",\n    \"customTools\": \"API工具\",\n    \"mcpTools\": \"MCP工具\",\n    \"search\": \"搜索\",\n    \"empty\": \"空空如也\",\n    \"manageCustomTools\": \"在此页面管理您的自定义工具，对自定义工具创建、编辑等等\",\n    \"name\": \"名称\",\n    \"enterToolName\": \"输入工具名称\",\n    \"openapiSchema\": \"OpenAPI Schema\",\n    \"enterOpenAPISchema\": \"输入您的 OpenAPI schema\",\n    \"importFromUrl\": \"从 URL 导入\",\n    \"parameterPlaceholder\": \"输入自定义 API key 数名\",\n    \"apiLocationLabel\": \"API key位置\",\n    \"apiKeyPlaceholder\": \"输入自定义 API key 参数值\",\n    \"basicBearerDescription\": \"Basic & Bearer：在 header 中使用 Authorization 传入 API key\",\n    \"customDescription\": \"Custom：自定义 API Key的参数名和参数位置\",\n    \"headerDescription\": \"header：API Key为请求头中的参数\",\n    \"queryDescription\": \"query：API Key 为 URL中查询字符串中的参数\",\n    \"examples\": \"示例\",\n    \"weatherJson\": \"天气(JSON)\",\n    \"petShopYaml\": \"宠物商店(YAML)\",\n    \"authenticationType\": \"鉴权方式\",\n    \"authType\": \"认证类型\",\n    \"none\": \"无\",\n    \"apiKey\": \"API Key\",\n    \"basic\": \"Basic\",\n    \"bearer\": \"Bearer\",\n    \"availableTools\": \"可用工具\",\n    \"description\": \"描述\",\n    \"method\": \"方法\",\n    \"path\": \"路径\",\n    \"delete\": \"删除\",\n    \"cancel\": \"取消\",\n    \"save\": \"保存\",\n    \"toolName\": \"工具名称\",\n    \"confirmDeleteMcp\": \"确认删除该 MCP 服务器？\",\n    \"mcpServerConfig\": \"MCP服务器配置\",\n    \"enterMcpName\": \"输入MCP 服务名称\",\n    \"nameRequired\": \"名称不能为空\",\n    \"nameExists\": \"名称已存在，请修改\",\n    \"configRequired\": \"配置不能为空\",\n    \"configFormatError\": \"配置格式错误，请检查JSON格式是否正确\",\n    \"exampleGaode\": \"高德地图\",\n    \"toolNameCannotBeEmpty\": \"工具名称不能为空\",\n    \"schemaCannotBeEmpty\": \"schema不能为空\",\n    \"apiKeyCannotBeEmpty\": \"API Key不可为空\",\n    \"apiKeyMaxLengthExceeded\": \"API Key不可大于1000字符\",\n    \"parameterNameCannotBeEmpty\": \"Parameter name 不可为空\",\n    \"parameterNameMaxLengthExceeded\": \"Parameter name 不可大于1000字符\",\n    \"addMcpServer\": \"添加MCP服务器\",\n    \"refresh\": \"刷新\",\n    \"gaodeMap\": \"高德地图\",\n    \"gaodeMapSSE\": \"高德地图（SSE 协议）\",\n    \"gaodeMapStreamable\": \"高德地图（streamable 协议）\",\n    \"gaodeMapDesc\": \"高德地图API，提供地理编码、逆地理编码、IP定位、天气查询、骑行路径规划、步行路径规划、驾车路径规划、公交路径规划、距离测量、关键词搜索、周边搜索、详情搜索等服务\"\n  },\n  \"test\": {\n    \"test\": \"测试\",\n    \"addTest\": \"请先填写测试用例\",\n    \"uploadTest\": \"上传测试用例\",\n    \"explain\": \"为测试用例是当前组件的输入，只支持 txt 文件，最多 20 行\",\n    \"testRun\": \"测试运行\",\n    \"testCase\": \"测试用例\",\n    \"run\": \"运行\",\n    \"downloadResults\": \"下载运行结果\",\n    \"testCases\": \"输入测试用例...\",\n    \"parametersAndValues\": \"参数和值\",\n    \"parameter\": \"参数\",\n    \"value\": \"值\",\n    \"result\": \"测试结果\",\n    \"outResultPlaceholder\": \"点击按钮，输出测试结果\",\n    \"maxAddVersions\": \"最多添加4个版本\",\n    \"versionEvaluation\": \"版本评估\",\n    \"addVersion\": \"添加版本\",\n    \"selectVersion\": \"选择版本\",\n    \"component\": \"组件\",\n    \"parameterName\": \"参数名\",\n    \"parameterValue\": \"参数值\",\n    \"inputTypeValue\": \"输入{{type}}类型值\"\n  },\n  \"resetPassword\": {\n    \"slogen\": \"安全地重置您的密码\",\n    \"currentPassword\": \"当前密码\",\n    \"newPassword\": \"新密码\",\n    \"confirmNewPassword\": \"确认新密码\",\n    \"pleaseEnterCurrentPassword\": \"请输入当前密码。\",\n    \"pleaseEnterNewPassword\": \"请输入新密码。\",\n    \"pleaseEnterConfirmPassword\": \"请确认新密码。\",\n    \"newPasswordTooShort\": \"新密码必须至少8个字符。\",\n    \"passwordMismatch\": \"新密码不匹配。\",\n    \"resetButton\": \"修改密码\",\n    \"passwordResetSuccess\": \"您的密码已成功修改\",\n    \"adminResetSuccess\": \"密码已重置\",\n    \"resetFailed\": \"密码重置失败\",\n    \"notEmpty\": \"新密码不能为空\"\n  },\n  \"log\": {\n    \"systemIdEnum\": {\n      \"chat\": \"会话\",\n      \"build\": \"构建\",\n      \"knowledge\": \"知识库\",\n      \"dashboard\": \"看板\",\n      \"system\": \"系统\"\n    },\n    \"eventTypeEnum\": {\n      \"createChat\": \"新建会话\",\n      \"deleteChat\": \"删除会话\",\n      \"createBuild\": \"新建应用\",\n      \"updateBuild\": \"编辑应用\",\n      \"deleteBuild\": \"删除应用\",\n      \"createKnowledge\": \"新建知识库\",\n      \"deleteKnowledge\": \"删除知识库\",\n      \"uploadFile\": \"知识库上传文件\",\n      \"deleteFile\": \"知识库删除文件\",\n      \"updateUser\": \"用户编辑\",\n      \"forbidUser\": \"停用用户\",\n      \"recoverUser\": \"启用用户\",\n      \"createUserGroup\": \"新建用户组\",\n      \"deleteUserGroup\": \"删除用户组\",\n      \"updateUserGroup\": \"编辑用户组\",\n      \"create_dashboard\": \"新建看板\",\n      \"delete_dashboard\": \"删除看板\",\n      \"update_dashboard\": \"修改看板\",\n      \"createRole\": \"新建角色\",\n      \"deleteRole\": \"删除角色\",\n      \"updateRole\": \"编辑角色\",\n      \"add_tool\": \"创建工具\",\n      \"update_tool\": \"修改工具\",\n      \"delete_tool\": \"删除工具\",\n      \"userLogin\": \"用户登录\",\n      \"create_chat\": \"新建会话\",\n      \"delete_chat\": \"删除会话\",\n      \"create_build\": \"新建应用\",\n      \"update_build\": \"编辑应用\",\n      \"delete_build\": \"删除应用\",\n      \"create_knowledge\": \"新建知识库\",\n      \"delete_knowledge\": \"删除知识库\",\n      \"upload_file\": \"知识库上传文件\",\n      \"delete_file\": \"知识库删除文件\",\n      \"update_user\": \"用户编辑\",\n      \"forbid_user\": \"停用用户\",\n      \"recover_user\": \"启用用户\",\n      \"create_user_group\": \"新建用户组\",\n      \"delete_user_group\": \"删除用户组\",\n      \"update_user_group\": \"编辑用户组\",\n      \"create_role\": \"新建角色\",\n      \"delete_role\": \"删除角色\",\n      \"update_role\": \"编辑角色\",\n      \"user_login\": \"用户登录\",\n      \"addTool\": \"创建工具\",\n      \"updateTool\": \"修改工具\",\n      \"deleteTool\": \"删除工具\"\n    },\n    \"objectTypeEnum\": {\n      \"none\": \"无\",\n      \"work_flow\": \"工作流\",\n      \"flow\": \"技能\",\n      \"assistant\": \"助手\",\n      \"file\": \"文件\",\n      \"user_conf\": \"用户配置\",\n      \"user_group_conf\": \"用户组配置\",\n      \"role_conf\": \"角色配置\",\n      \"tool\": \"工具\",\n      \"dashboard\": \"统计看板\",\n      \"knowledge\": \"知识库\",\n      \"workstation\": \"工作台（日常模式）\"\n    },\n    \"appUsage\": \"应用使用\",\n    \"systemOperations\": \"系统操作\",\n    \"auditManagement\": \"审计管理\",\n    \"searchButton\": \"查询\",\n    \"resetButton\": \"重置\",\n    \"auditId\": \"审计ID\",\n    \"username\": \"用户名\",\n    \"operationTime\": \"操作时间\",\n    \"systemModule\": \"系统模块\",\n    \"operationAction\": \"操作行为\",\n    \"objectType\": \"操作对象类型\",\n    \"operationObject\": \"操作对象\",\n    \"ipAddress\": \"IP地址\",\n    \"remark\": \"备注\",\n    \"selectUser\": \"选择用户\",\n    \"selectUserGroup\": \"选择用户组\",\n    \"startDate\": \"开始日期\",\n    \"endDate\": \"结束日期\",\n    \"actionBehavior\": \"操作行为\",\n\n    \"createDashboard\": \"新建看板\",\n    \"deleteDashboard\": \"删除看板\",\n    \"updateDashboard\": \"修改看板\",\n    \"createBuild\": \"新建应用\",\n    \"create_chat\": \"新建会话\",\n    \"delete_chat\": \"删除会话\",\n    \"create_build\": \"新建应用\",\n    \"update_build\": \"编辑应用\",\n    \"delete_build\": \"删除应用\",\n    \"create_knowledge\": \"新建知识库\",\n    \"delete_knowledge\": \"删除知识库\",\n    \"upload_file\": \"知识库上传文件\",\n    \"delete_file\": \"知识库删除文件\",\n    \"update_user\": \"用户编辑\",\n    \"forbid_user\": \"停用用户\",\n    \"recover_user\": \"启用用户\",\n    \"create_user_group\": \"新建用户组\",\n    \"delete_user_group\": \"删除用户组\",\n    \"update_user_group\": \"编辑用户组\",\n    \"create_role\": \"新建角色\",\n    \"delete_role\": \"删除角色\",\n    \"update_role\": \"编辑角色\",\n    \"user_login\": \"用户登录\",\n    \"addTool\": \"创建工具\",\n    \"updateTool\": \"修改工具\",\n    \"deleteTool\": \"删除工具\",\n\n\n    \"appName\": \"应用名称\",\n    \"userName\": \"用户名\",\n    \"userFeedback\": \"用户反馈\",\n    \"enterQuestion\": \"请先输入问题\",\n    \"qaLibQuestionAnswerRequired\": \"QA知识库、问题、答案不能为空\",\n    \"max100CharsForSimilarQuestions\": \"相似问最多100个字\",\n    \"max1000CharsForAnswer\": \"答案最多1000个字\",\n    \"saveSuccess\": \"添加成功\",\n    \"addNewQaToLib\": \"添加新的QA到QA知识库\",\n    \"qaKnowledgeLib\": \"QA知识库\",\n    \"question\": \"问题\",\n    \"similarQuestions\": \"相似问题\",\n    \"aiGenerate\": \"AI生成\",\n    \"answer\": \"答案\",\n    \"cancel\": \"取消\",\n    \"confirm\": \"确认\",\n    \"qaLibRequired\": \"QA知识库不能为空\",\n    \"selectAtLeastOneQuestion\": \"至少选一个相似问题\",\n    \"addSuccess\": \"添加成功\",\n    \"addSimilarQuestionsToQaLib\": \"添加相似问题到QA知识库\",\n    \"qaContent\": \"QA 内容\",\n    \"empty\": \"空空如也\",\n    \"selectQaLib\": \"请选择 QA 知识库\",\n    \"detailedSession\": \"详细会话\",\n    \"exportNoDateRange\": \"未选择时间范围，已自动为你导出最近 60 天数据\",\n    \"exportCustomDateRange\": \"未选择时间范围，已自动为你导出 {{start}} - {{end}} 数据\",\n    \"exportDateRangeExceed\": \"导出时间范围不能超过 60 天，请缩小范围后重试\",\n    \"messageConversionFailed\": \"消息转换失败\",\n    \"csvHeaders\": {\n      \"sessionId\": \"会话ID\",\n      \"appName\": \"应用名称\",\n      \"sessionCreationTime\": \"会话创建时间\",\n      \"userName\": \"用户名称\",\n      \"messageRole\": \"消息角色\",\n      \"messageSendTime\": \"消息发送时间\",\n      \"messageContent\": \"消息文本内容\",\n      \"like\": \"点赞\",\n      \"dislike\": \"点踩\",\n      \"copy\": \"复制\",\n      \"sensitiveStatus\": \"是否命中内容安全审查\"\n    },\n    \"userRole\": \"用户\",\n    \"aiRole\": \"AI\",\n    \"yes\": \"是\",\n    \"no\": \"否\",\n    \"userGroup\": \"用户组\",\n    \"userFeedbackPlaceholder\": \"用户反馈\",\n    \"likeFeedback\": \"赞\",\n    \"dislikeFeedback\": \"踩\",\n    \"copyFeedback\": \"复制\",\n    \"sensitiveReviewResult\": \"实时内容安全审查结果\",\n    \"sensitiveViolation\": \"违规\",\n    \"sensitivePass\": \"通过\",\n    \"exportButton\": \"导出\",\n    \"pagination\": {\n      \"jumpTo\": \"跳至\",\n      \"page\": \"页\"\n    },\n    \"workbench_daily\": \"工作台（日常模式）\"\n  },\n  \"tag\": {\n    \"labelMaxLength\": \"标签名不能超过10个字符\",\n    \"confirmDeleteLabel\": \"标签【{{label}}】正在使用中，确认删除？\",\n    \"createNewLabel\": \"创建“新标签”\",\n    \"addLabel\": \"添加标签\"\n  },\n  \"api\": {\n    \"assistantOrchestration\": \"助手编排\",\n    \"skillOrchestration\": \"技能编排\",\n    \"externalPublishing\": \"对外发布\",\n    \"apiAccess\": \"API 访问\",\n    \"noLoginLink\": \"免登录链接\",\n    \"loginLink\": \"需登录链接\",\n    \"required\": \"必需\",\n    \"optional\": \"可选\",\n    \"exampleValue\": \"示例值\",\n    \"copySuccess\": \"复制成功\",\n    \"apiRequestExample\": \"API 请求示例\",\n    \"sdkNote\": \"可以直接使用OpenAI官方SDK中的ChatOpenAI组件去使用助手（只支持文档内有的参数。官方组件里其他的例如n、top_p、max_token等参数暂不支持）\",\n    \"exampleCode\": \"示例代码\",\n    \"requestParams\": \"请求参数\",\n    \"bodyParams\": \"Body 参数\",\n    \"assistantId\": \"要使用的助手ID\",\n    \"messageList\": \"至今为止对话所包含的消息列表。不支持system类型，system使用助手本身的prompt\",\n    \"temperature\": \"使用什么采样温度，介于 0 和 2 之间。非0值会覆盖助手配置\",\n    \"stream\": \"默认为 false 如果设置,则像在 ChatGPT 中一样会发送部分消息增量。标记将以仅数据的服务器发送事件的形式发送,这些事件在可用时,并在 data: [DONE] 消息终止流。\",\n    \"responseData\": \"返回响应\",\n    \"dataStructure\": \"数据结构\",\n    \"example\": \"示例\",\n    \"skillId\": \"技能ID\",\n    \"urlParam\": \"URL传参\",\n    \"skillInput\": \"对整个技能的问题输入，json里的具体key和技能本身相关，不一定都是query\",\n    \"singleInput\": \"当输入节点只有一个时，id可不传\",\n    \"historyCount\": \"对于技能里支持Memery，选取几条历史消息进行多轮问答，默认值10\",\n    \"clearCache\": \"是否清除session缓存\",\n    \"sessionId\": \"用于session查找\",\n    \"sessionRemark\": \"每次调用，当session_id 传入时，返回传入sessionid，当session_id不传时，自动生成id\",\n    \"tweaks\": \"对每个组件的控制，可以替换组件输入参数的值\",\n    \"tweaksRemark\": \"当没有指定组件传参的时候，可以不传\",\n    \"exampleComponent\": \"示例，技能中OpenAI大模型组件的配置信息，key为组件名，命名为{组件}-{id}\",\n    \"defaultConfig\": \"当{}为空，表示保持默认值\",\n    \"componentParams\": \"每个技能中各个组件的参数均可以在调用接口时传进去，如果不传则用技能的默认配置\",\n    \"returnContent\": \"返回内容\",\n    \"sessionIdReturn\": \"会话id，用来和入参对应\",\n    \"skillResult\": \"技能返回的结果\",\n    \"llmAnswer\": \"技能统一key返回的LLM 内容\",\n    \"messageId\": \"技能历史消息存储id\",\n    \"source\": \"是否溯源\",\n    \"dynamicKey\": \"key是技能里组件定义的输出key，输出的内容和answer一致，唯一的区别是key不固定\",\n    \"useCase\": \"应用案例\",\n    \"knowledgeQADemo\": \"知识库问答应用示例\",\n    \"specifyKnowledgeBase\": \"如需指定知识库进行问答，可在传入参数时指定知识库 id，例如：\",\n    \"reportGenerationDemo\": \"报告生成应用示例\",\n    \"step1\": \"step1：确认触发该技能执行的依赖项\",\n    \"dependenciesDescription\": \"依赖项即对应界面上会话页面中创建会话时左下角表单中的内容，对应技能编辑时使用的组件\",\n    \"step2\": \"step2：准备入参\",\n    \"uploadFiles\": \"本示例中入参为 2 个文件：\",\n    \"step3\": \"step3：组装 tweaks\",\n    \"step4\": \"step4：执行技能\",\n    \"noLoginLinkDescription\": \"免登录链接无需登录即可使用，仅在系统配置 enable_guest_access = True 时可访问免登录链接\",\n    \"loginLinkDescription\": \"需登录链接需要在登录后使用\",\n    \"publishAsStandalonePage\": \"发布为独立页面\",\n    \"copyLinkToBrowser\": \"复制链接到浏览器中打开\",\n    \"embedIntoWebsite\": \"嵌入到网站中\",\n    \"styleOne\": \"样式一\",\n    \"styleTwo\": \"样式二\",\n    \"embedCodeDescription\": \"将以下代码嵌入到网站中\"\n  },\n  \"dataset\": {\n    \"confirmDelete\": \"确认删除数据集！\",\n    \"fileNotFound\": \"文件不存在\",\n    \"name\": \"数据集名称\",\n    \"create\": \"创建数据集\",\n    \"creationTime\": \"创建时间\",\n    \"updateTime\": \"更新时间\",\n    \"createUser\": \"创建者\",\n    \"download\": \"下载\",\n    \"collection\": \"数据集集合\",\n    \"enterDataSetName\": \"请填写数据集名称\",\n    \"maxDataSetNameLength\": \"数据集名称最多 30 个字\",\n    \"uploadFile\": \"请上传文件\",\n    \"selectKnowledgeLib\": \"请选择知识库\",\n    \"creationSuccess\": \"数据集创建成功\",\n    \"createDataset\": \"创建数据集\",\n    \"importMethod\": \"导入方式\",\n    \"localImport\": \"本地导入\",\n    \"importFromQa\": \"从QA知识库导入\",\n    \"sampleFile\": \"示例文件\",\n    \"jsonSample\": \"json格式示例.json\",\n    \"selectQaKnowledgeLib\": \"选择QA知识库\"\n  },\n  \"label\": {\n    \"createTask\": \"创建标注任务\",\n    \"selectAppsToLabel\": \"选择要标注的应用\",\n    \"unmarkedConversationCount\": \"当前未标注会话数\",\n    \"selectLabelers\": \"选择标注人\",\n    \"cancel\": \"取消\",\n    \"create\": \"创建\",\n    \"confirmDelete\": \"您确定要删除此任务吗？\",\n    \"delete\": \"删除\",\n    \"taskId\": \"任务 ID\",\n    \"taskStatus\": \"任务状态\",\n    \"creationTime\": \"创建时间\",\n    \"createdBy\": \"创建人\",\n    \"labelingProgress\": \"标注进度\",\n    \"actions\": \"操作\",\n    \"view\": \"查看\",\n    \"noData\": \"暂无数据\",\n    \"all\": \"全部\",\n    \"notStarted\": \"未开始\",\n    \"completed\": \"已完成\",\n    \"inProgress\": \"进行中\",\n    \"taskStatusFilter\": \"任务状态筛选\",\n    \"maxAppsError\": \"最多选择30个应用\",\n    \"createSuccess\": \"创建成功\",\n    \"back\": \"返回\",\n    \"appName\": \"应用名称\",\n    \"sessionCreationTime\": \"会话创建时间\",\n    \"userFeedback\": \"用户反馈\",\n    \"annotationStatus\": \"标注状态\",\n    \"unannotated\": \"未标注\",\n    \"annotated\": \"已标注\",\n    \"noAnnotationRequired\": \"无需标注\",\n    \"annotator\": \"标注人\",\n    \"returnToList\": \"返回列表\",\n    \"unlabeled\": \"未标注\",\n    \"labeled\": \"已标注\",\n    \"unnecessary\": \"无需标注\",\n    \"previousChat\": \"上一条会话\",\n    \"nextChat\": \"下一条会话\",\n    \"selectPlaceholder\": \"请选择\",\n    \"searchAppsPlaceholder\": \"搜索应用名称\"\n  },\n  \"errors\": {\n    \"403\": \"暂无操作权限\",\n    \"404\": \"资源不存在\",\n    \"500\": \"服务器错误\",\n    \"10001\": \"未找到SFT服务\",\n    \"10002\": \"无效操作\",\n    \"10003\": \"资源下载失败\",\n    \"10004\": \"未配置知识库embedding模型，请从工作台配置中设置\",\n    \"10005\": \"知识库embedding模型不存在，请从工作台配置中设置\",\n    \"10006\": \"知识库embedding模型类型错误，请从工作台配置中设置\",\n    \"10007\": \"请联系管理员检查工作台向量检索模型状态\",\n    \"10008\": \"没有找到llm模型配置\",\n    \"10009\": \"llm模型配置已被删除，请重新配置模型\",\n    \"10010\": \"服务提供方配置已被删除，请重新配置llm模型\",\n    \"10011\": \"只支持LLM类型的模型，不支持{{model_type}}类型的模型\",\n    \"10012\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10013\": \"初始化llm失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10014\": \"没有找到asr模型配置\",\n    \"10015\": \"asr模型配置已被删除，请重新配置模型\",\n    \"10016\": \"服务提供方配置已被删除，请重新配置asr模型\",\n    \"10017\": \"只支持ASR类型的模型，不支持{{model_type}}类型的模型\",\n    \"10018\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10019\": \"初始化asr失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10020\": \"没有找到tts模型配置\",\n    \"10021\": \"tts模型配置已被删除，请重新配置模型\",\n    \"10022\": \"服务提供方配置已被删除，请重新配置tts模型\",\n    \"10023\": \"只支持TTS类型的模型，不支持{{model_type}}类型的模型\",\n    \"10024\": \"{{server_name}}下的{{model_name}}模型已下线，请联系管理员上线对应的模型\",\n    \"10025\": \"初始化tts失败，请检查配置或联系管理员。错误信息：{{exception}}\",\n    \"10030\": \"系统配置不能为空\",\n    \"10031\": \"系统配置格式不正确，请检查配置内容：{{exception}}\",\n    \"10040\": \"上传文件不能为空\",\n    \"10041\": \"上传文件格式不支持，请上传正确格式的文件\",\n    \"10100\": \"创建训练任务失败\",\n    \"10101\": \"个人训练集和预置训练集最少选择一个\",\n    \"10102\": \"任务不存在\",\n    \"10103\": \"任务状态错误\",\n    \"10104\": \"任务取消失败\",\n    \"10105\": \"任务删除失败\",\n    \"10106\": \"任务发布失败\",\n    \"10107\": \"模型名接口修改失败\",\n    \"10108\": \"取消发布失败\",\n    \"10109\": \"无效的训练参数\",\n    \"10110\": \"模型名已存在\",\n    \"10120\": \"训练文件不存在\",\n    \"10125\": \"获取GPU信息失败\",\n    \"10126\": \"获取模型列表失败\",\n    \"10200\": \"模型不存在\",\n    \"10300\": \"组件已存在\",\n    \"10301\": \"组件不存在\",\n    \"10400\": \"助手不存在\",\n    \"10401\": \"助手上线失败: {{exception}}\",\n    \"10402\": \"助手名称重复\",\n    \"10403\": \"助手已上线，不可编辑\",\n    \"10420\": \"该助手已被删除\",\n    \"10421\": \"当前应用未上线，无法直接对话\",\n    \"10422\": \"助手推理模型列表为空\",\n    \"10423\": \"未配置助手推理模型\",\n    \"10424\": \"未配置助手画像自动优化模型\",\n    \"10499\": \"助手服务异常\",\n    \"10500\": \"未找到技能版本信息\",\n    \"10501\": \"当前正在使用版本无法删除\",\n    \"10502\": \"版本名已存在\",\n    \"10503\": \"技能名重复\",\n    \"10520\": \"技能不存在\",\n    \"10521\": \"技能已上线，不可编辑\",\n    \"10525\": \"工作流已上线，不可编辑\",\n    \"10526\": \"工作流初始化失败\",\n    \"10527\": \"工作流等待用户输入超时\",\n    \"10528\": \"{{type}}节点执行超过最大次数\",\n    \"10529\": \"工作流名称重复\",\n    \"10530\": \"模板名称已存在\",\n    \"10531\": \"{{type}}功能已升级，需删除后重新拖入。\",\n    \"10532\": \"工作流版本已升级，请联系创建者重新编排\",\n    \"10540\": \"服务器线程数已满，请稍候再试\",\n    \"10541\": \"工作流任务执行失败：{{exception}}\",\n    \"10599\": \"暂无查看权限\",\n    \"10600\": \"账号或密码错误\",\n    \"10601\": \"您的密码已过期，请及时修改\",\n    \"10602\": \"用户尚未设置密码，请先联系管理员重置密码\",\n    \"10603\": \"当前密码错误\",\n    \"10604\": \"您的账户已在另一设备上登录，此设备上的会话已被注销。\\n如果这不是您本人的操作，请尽快修改您的账户密码。\",\n    \"10605\": \"用户名已存在\",\n    \"10606\": \"用户组和角色不能为空\",\n    \"10607\": \"验证码错误\",\n    \"10608\": \"用户名长度不能超过30个字符\",\n    \"10610\": \"用户组内还有用户，不能删除\",\n    \"10620\": \"该用户被禁用，请联系管理员\",\n    \"10621\": \"由于登录失败次数过多，该账号被自动禁用，请联系管理员处理\",\n    \"10630\": \"用户组不能为空\",\n    \"10640\": \"不能修改管理员用户信息\",\n    \"10700\": \"标签已存在\",\n    \"10701\": \"未找到对应的标签\",\n    \"10800\": \"服务提供方名称重复，请修改\",\n    \"10801\": \"模型不可重复\",\n    \"10802\": \"添加服务提供方失败，模型全部初始化失败\",\n    \"10803\": \"添加服务提供方失败，部分模型初始化失败\",\n    \"10900\": \"知识库名称重复\",\n    \"10901\": \"知识库必须选择一个embedding模型\",\n    \"10902\": \"文档知识库总结模型已失效，请前往模型管理-系统模型设置中进行配置。{{exception}}\",\n    \"10910\": \"当前知识库版本不支持修改分段，请创建新知识库后进行分段修改\",\n    \"10911\": \"文件解析为空\",\n    \"10912\": \"分段结果超长，请尝试在自定义策略中使用更多切分符（例如 \\\\n、。、\\\\.）进行切分\",\n    \"10913\": \"文件可能已损坏，无法解析，请检查后重新上传\",\n    \"10914\": \"不支持该类型文件的解析，请检查后重新上传\",\n    \"10915\": \"etl4lm服务繁忙，请升级etl4lm服务的算力\",\n    \"10916\": \"分段结果超长，请尝试在自定义策略中减少表格分段行数\",\n    \"10920\": \"未配置QA知识库相似问模型\",\n    \"10930\": \"该问题已存在\",\n    \"10940\": \"当前有文件正在解析，不可复制\",\n    \"10941\": \"知识库内容为空，无法复制\",\n    \"10950\": \"不支持多个知识库的文件同时删除\",\n    \"10951\": \"知识库重新构建中，不允许修改embedding模型\",\n    \"10952\": \"文档解析失败\",\n    \"10953\": \"文件解析失败: {{exception}}\",\n    \"10960\": \"不是QA知识库\",\n    \"10961\": \"模型返回格式错误:{{message}}\",\n    \"10970\": \"知识库不存在\",\n    \"10971\": \"知识库文件不存在\",\n    \"10980\": \"{{field_name}} 与内置元数据字段名称冲突\",\n    \"10981\": \"元数据字段 {{field_name}} 已存在\",\n    \"10982\": \"元数据字段 {{field_name}} 不存在\",\n    \"10983\": \"内置元数据字段 {{field_name}} 不能修改\",\n    \"10984\": \"元数据字段 {{field_name}} 值类型转换错误: {{error_msg}}\",\n    \"11010\": \"SOP文件格式不符合要求\",\n    \"11011\": \"SOP设置精选案例失败\",\n    \"11020\": \"文件上传失败\",\n    \"11030\": \"您的灵思使用次数已用完，请使用新的邀请码激活灵思功能\",\n    \"11040\": \"提交灵思用户问题失败\",\n    \"11050\": \"请联系管理员检查工作台向量检索模型状态\",\n    \"11060\": \"指导手册检索失败，向量检索与关键词检索均不可用\",\n    \"11070\": \"指导手册检索失败\",\n    \"11080\": \"初始化灵思工作台工具失败\",\n    \"11090\": \"$t(bisheng) LLM相关错误\",\n    \"11100\": \"生成SOP内容失败\",\n    \"11110\": \"修改SOP内容失败\",\n    \"11120\": \"灵思会话版本已完成或正在执行，无法再次执行\",\n    \"11130\": \"开始执行灵思任务失败\",\n    \"11140\": \"获取灵思队列排队状态失败\",\n    \"11150\": \"添加指导手册失败，向量存储添加数据失败\",\n    \"11160\": \"更新指导手册失败，向量存储更新数据失败\",\n    \"11170\": \"删除指导手册失败，向量存储删除数据失败\",\n    \"11171\": \"{{sop_name}}内容超长\",\n    \"11180\": \"您输入的邀请码无效\",\n    \"11190\": \"已绑定其他邀请码\",\n    \"12040\": \"未找到web_search工具\",\n    \"12041\": \"会话不存在\",\n    \"12042\": \"该智能体已被添加\",\n    \"13001\": \"该技能已被删除\",\n    \"13002\": \"当前应用未上线，无法直接对话\",\n    \"13003\": \"当前应用未编译通过，无法直接对话\",\n    \"13004\": \"后端服务异常\",\n    \"13005\": \"LLM 技能执行错误. error={{error}}\",\n    \"13006\": \"文档解析失败，点击输入框上传按钮重新上传\\n\\n{{error}}\",\n    \"13007\": \"Input data is parsed fail. error={{error}}\",\n    \"13010\": \"当前应用未上线，无法直接对话\",\n    \"14001\": \"后台处理中，稍后再试\",\n    \"15000\": \"工具名称已存在\",\n    \"15001\": \"工具下的API不能为空\",\n    \"15002\": \"工具不存在\",\n    \"15003\": \"名字不符合规范：至少1个字符，不能超过1000个字符\",\n    \"15010\": \"预置工具类别不可删除\",\n    \"15020\": \"工具Schema的url下载失败\",\n    \"15021\": \"工具Schema不能为空\",\n    \"15022\": \"openapi schema解析报错，请检查内容是否符合json或者yaml格式: {{exception}}\",\n    \"15023\": \"server中的url必须以http或者https开头: {{url}}\",\n    \"15024\": \"mcp工具配置解析失败，请检查内容是否符合mcp配置格式: {{exception}}\",\n    \"16000\": \"数据集名称已存在\",\n    \"17000\": \"最多允许创建 20 个看板\",\n    \"17005\": \"您当前角色没有访问此看板的权限。如有需要，请联系管理员开通。\",\n    \"17010\": \"未找到对应的数据集配置\",\n    \"17011\": \"虚拟指标只能单独查询一个\",\n    \"17012\": \"未找到对应的指标配置\",\n    \"17013\": \"未找到对应的汇总方式\",\n    \"17014\": \"未找到对应的维度配置\",\n    \"17015\": \"未找到对应的操作符配置\",\n    \"90002\": \"您当前角色没有访问工作台的权限。如有需要，请联系管理员开通。\"\n  },\n  \"all\": \"全部\",\n  \"confirmButton\": \"确定\",\n  \"add\": \"添加\",\n  \"back\": \"返回\",\n  \"create\": \"创建\",\n  \"createImport\": \"创建并导入\",\n  \"delete\": \"删除\",\n  \"deleteSuccess\": \"删除成功\",\n  \"createTime\": \"创建时间\",\n  \"updateTime\": \"更新时间\",\n  \"saved\": \"保存成功\",\n  \"edit\": \"编辑\",\n  \"enable\": \"启用\",\n  \"disable\": \"禁用\",\n  \"close\": \"关闭\",\n  \"cancel\": \"取消\",\n  \"operations\": \"操作\",\n  \"save\": \"保存\",\n  \"previousPage\": \"上一页\",\n  \"submit\": \"提交\",\n  \"nextPage\": \"下一页\",\n  \"formatError\": \"格式错误\",\n  \"port\": \"服务端口\",\n  \"cancle\": \"取消\",\n  \"tip\": \"提示\",\n  \"search\": \"搜索\",\n  \"deleteAssistant\": \"确认删除该助手？\",\n  \"chatTipsTitle\": \"使用提示\",\n  \"updateSuccess\": \"修改成功\",\n  \"createSuccess\": \"创建成功\",\n  \"confirm\": \"确认\",\n  \"required\": \"不可为空\",\n  \"inProgress\": \"进行中\",\n  \"failed\": \"失败\",\n  \"success\": \"成功\",\n  \"addSimilarQuestion\": \"添加相似问题\",\n  \"addQa\": \"添加QA\",\n  \"inserVar\": \"插入变量\",\n  \"download\": \"下载\",\n  \"com_sop_web_search\": \"正在联网搜索\",\n  \"com_sop_search_knowledge_base\": \"正在检索知识库\",\n  \"com_sop_list_files\": \"正在查询目录\",\n  \"com_sop_get_file_details\": \"正在获取文件详细信息\",\n  \"com_sop_search_files\": \"正在搜索文件\",\n  \"com_sop_read_text_file\": \"正在阅读文件\",\n  \"com_sop_add_text_to_file\": \"正在向文件添加内容\",\n  \"com_sop_replace_file_lines\": \"正在编辑文件\",\n  \"com_sop_using_tool\": \"正在使用 {{0}} 工具\",\n  \"com_sop_waiting_input\": \"等待输入\",\n  \"com_sop_please_input\": \"请输入\",\n  \"com_sop_hours\": \"小时\",\n  \"com_sop_minutes\": \"分钟\",\n  \"com_sop_queue_message\": \"目前使用人数较多，正在排队中...\",\n  \"com_sop_estimated_wait\": \"预计等待\",\n  \"com_sop_plan_task_path\": \"规划任务执行路径：\",\n  \"com_sop_execute_tasks\": \"接下来为你执行对应任务：\",\n  \"com_sop_task_execution_interrupted\": \"任务执行中断\",\n  \"com_sop_view_all_files\": \"查看此任务中的所有文件\",\n  \"com_webSearch\": \"网页搜索\",\n  \"com_searchQueryLabel\": \"检索问题\",\n  \"com_searchResults\": \"检索结果\",\n  \"com_sop_select_all\": \"全选\",\n  \"com_sop_batch_download\": \"批量下载\",\n  \"com_sop_preview_failed\": \"预览失败\",\n  \"com_sop_file_load_error\": \"文件加载错误\",\n  \"com_sop_empty_file\": \"空文件\",\n  \"com_sop_select_file\": \"选择文件\",\n  \"com_addAnything\": \"添加任何内容\",\n  \"com_dropAnyFileToAdd\": \"将任何文件拖放到此处以添加到对话中\",\n  \"com_ui_upload_file_type_error\": \"该应用不支持上传此类型文件\",\n  \"more\": \"更多\",\n  \"chatTips\": \"1. 请遵守《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》及《生成式人工智能服务安全基本要求》；\\n2. 禁止上传涉及公司保密管理规定范围内的保密数据；\\n3. 禁止上传包含个人隐私信息的数据；\\n4. 禁止上传包含恶意程序或病毒的文件；\\n5. 禁止使用 AI 生成攻击性代码；\\n6. 禁止向 AI 提问包括但不限于涉爆涉恐涉黄及危害国家安全及公共安全的违法不良信息；\\n7. AI 生成内容受到公司保密管理规定约束。用户应根据实际情况判断生成内容的合理性，避免 AI 幻觉造成的风险。\",\n  \"com_preview_type_unsupported\": \"此文件暂不支持预览\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/dashboard.json",
    "content": "{\n    \"chartSelector\": {\n        \"title\": \"关{{bisheng}}联图表配置$t(bs:menu.user)\",\n        \"componentName\": \"组件：{{componentName}}\",\n        \"selectCharts\": \"选择关联图表\",\n        \"selectAll\": \"全选\",\n        \"unSelectAll\":\"取消全选\",\n        \"unnamedChart\": \"未命名图表\",\n        \"noDataset\": \"未设置数据集\",\n        \"config\": \"查询条件配置\",\n        \"displayType\": \"展示类型\",\n        \"displayTypes\": {\n            \"timeRange\": \"时间范围\",\n            \"time\": \"时间\"\n        },\n        \"timeGranularity\": \"时间粒度\",\n        \"granularities\": {\n            \"yearMonth\": \"年月\",\n            \"yearMonthDay\": \"年月日\",\n            \"yearMonthDayHour\": \"年月日时\"\n        },\n        \"setDefault\": \"设置默认值\",\n        \"datePicker\": {\n            \"placeholder\": \"选择时间\",\n            \"single\": \"时间\",\n            \"range\": \"时间范围\"\n        },\n        \"buttons\": {\n            \"cancel\": \"取消\",\n            \"save\": \"保存\"\n        },\n        \"messages\": {\n            \"saveSuccess\": \"关联图表配置已保存\",\n            \"noCharts\": \"没有可关联的图表\",\n            \"collapse\": \"关联图表配置\"\n        }\n    },\n    \"componentConfigDrawer\": {\n        \"basicConfig\": \"基础配置\",\n        \"customStyle\": \"自定义样式\",\n        \"basicConfigTab\": \"基础配置\",\n        \"styleConfigTab\": \"自定义样式\",\n        \"chartType\": \"图表类型\",\n        \"selectChartType\": \"选择图表类型\",\n        \"categoryAxis\": \"类别轴 / 维度\",\n        \"stackItem\": \"堆叠项 / 维度\",\n        \"subCategory\": \"子类别项 / 维度\",\n        \"valueAxis\": \"值轴 / 指标\",\n        \"sortPriority\": \"排序优先级\",\n        \"sortHint\": \"添加维度或指标后可调整排序优先级\",\n        \"filter\": \"筛选\",\n        \"addFilterCondition\": \"添加筛选条件\",\n        \"filterConditionsAdded\": \"已添加筛选条件\",\n        \"filterLogicHint\": \" ({{logic}})\",\n        \"timeRange\": \"时间范围\",\n        \"selectTimeRange\": \"选择时间范围\",\n        \"resultsDisplay\": \"显示数据\",\n        \"allResults\": \"全部\",\n        \"limitResults\": \"条\",\n        \"updateChartData\": \"更新图表数据\",\n        \"dataSelection\": \"数据选择\",\n        \"validation\": {\n            \"validationFailed\": \"校验失败\",\n            \"chartTypeRequired\": \"请选择图表类型\",\n            \"categoryRequired\": \"请至少添加一个类别维度\",\n            \"metricRequired\": \"请至少添加一个指标\",\n            \"datasetRequired\": \"请选择数据集\",\n            \"stackRequired\": \"请为堆叠图表添加堆叠维度\",\n            \"invalidCategoryFields\": \"类别维度包含无效字段，请重新选择\",\n            \"invalidMetricFields\": \"指标包含无效字段，请重新选择\"\n        },\n        \"dialog\": {\n            \"chartUpdated\": \"图表已更新\",\n            \"editDisplayName\": \"编辑显示名称\",\n            \"displayRequired\": \"名称不能为空\",\n            \"originalName\": \"原始名称\",\n            \"displayName\": \"显示名称\",\n            \"displayNameRequired\": \"显示名称 *\",\n            \"enterDisplayName\": \"请输入显示名称\",\n            \"displayMaxLength\": \"显示名称长度不能超过 15 个字符\",\n            \"cancel\": \"取消\",\n            \"confirm\": \"确认\"\n        },\n        \"toast\": {\n            \"fieldAlreadyExists\": \"该字段已添加\",\n            \"dimensionLimitReached\": \"当前维度数量已达到上限\",\n            \"metricReached\": \"不支持拖拽维度至指标\",\n            \"metricLimitReached\": \"当前指标数量已达到上限\",\n            \"virtualMetricConflict\": \"无法同时添加虚拟指标和非虚拟指标\",\n            \"multipleVirtualMetric\": \"无法同时添加多个虚拟指标\"\n        },\n        \"sections\": {\n            \"category\": \"类别轴\",\n            \"stack\": \"堆叠项\",\n            \"value\": \"指标区域\"\n        }\n    },\n    \"configPanel\": {\n        \"title\": \"看板配置\",\n        \"dashboardStyle\": \"仪表盘风格\",\n        \"lightTheme\": \"浅色主题\",\n        \"darkTheme\": \"深色主题\"\n    },\n    \"datasetSelector\": {\n        \"dataset\": \"数据集\",\n        \"selectDataset\": \"选择数据集\",\n        \"searchDataset\": \"搜索数据集...\",\n        \"loading\": \"加载中...\",\n        \"noDatasetsFound\": \"未找到数据集\",\n        \"dimensions\": \"维度\",\n        \"metrics\": \"指标\",\n        \"virtualMetric\": \"*\",\n        \"selectDatasetPrompt\": \"请先选择一个数据集\",\n        \"fieldTypes\": {\n            \"date\": \"日期\",\n            \"integer\": \"整数\",\n            \"keyword\": \"文本\"\n        },\n        \"timeGranularity\": {\n            \"year\": \"年\",\n            \"quarter\": \"季度\",\n            \"month\": \"月\",\n            \"week\": \"周\",\n            \"day\": \"日\",\n            \"hour\": \"时\"\n        }\n    },\n    \"dimensionBlock\": {\n        \"menu\": {\n            \"sort\": \"排序\",\n            \"aggregation\": \"汇总方式\",\n            \"format\": \"数值格式\"\n        },\n        \"aggregation\": {\n            \"sum\": \"求和\",\n            \"avg\": \"平均\",\n            \"count\": \"计数\",\n            \"max\": \"最大值\",\n            \"min\": \"最小值\",\n            \"distinctCount\": \"去重计数\"\n        },\n        \"sort\": {\n            \"none\": \"无\",\n            \"asc\": \"升序\",\n            \"desc\": \"降序\"\n        },\n        \"button\": {\n            \"deleteField\": \"删除字段\"\n        },\n        \"prompt\": {\n            \"dragDimensionHere\": \"拖拽维度字段至此\",\n            \"dragMetricHere\": \"拖拽指标字段至此\"\n        },\n        \"dialog\": {\n            \"formatTitle\": \"数值格式\",\n            \"formatType\": \"格式类型\",\n            \"decimalPlaces\": \"小数位数\",\n            \"unit\": \"数量单位\",\n            \"suffix\": \"单位后缀\",\n            \"thousandSeparator\": \"千分符\",\n            \"example\": \"示例\",\n            \"none\": \"无\",\n            \"selectUnit\": \"请选择\",\n            \"enterSuffix\": \"请输入内容\",\n            \"formatTypes\": {\n                \"number\": \"数值\",\n                \"percent\": \"百分比\",\n                \"duration\": \"时长\",\n                \"storage\": \"存储大小\"\n            }\n        }\n    },\n    \"filterConditionDialog\": {\n        \"title\": \"筛选条件配置\",\n        \"keywords\": {\n            \"time\": \"时间\",\n            \"date\": \"日期\"\n        },\n        \"placeholders\": {\n            \"selectField\": \"选择字段\",\n            \"filterType\": \"筛选类型\",\n            \"operator\": \"操作符\",\n            \"enterNumber\": \"请输入数值\",\n            \"enterValue\": \"请输入值\",\n            \"selectEnumValue\": \"请选择枚举值\"\n        },\n        \"filterTypes\": {\n            \"conditional\": \"条件筛选\",\n            \"noFields\": \"暂无字段\",\n            \"enum\": \"枚举筛选\"\n        },\n        \"operators\": {\n            \"equals\": \"等于\",\n            \"notEquals\": \"不等于\",\n            \"contains\": \"包含\",\n            \"notContains\": \"不包含\",\n            \"greaterThan\": \"大于\",\n            \"greaterThanOrEqual\": \"大于等于\",\n            \"lessThan\": \"小于\",\n            \"lessThanOrEqual\": \"小于等于\",\n            \"isEmpty\": \"为空\",\n            \"isNotEmpty\": \"不为空\"\n        },\n        \"buttons\": {\n            \"addCondition\": \"添加条件\",\n            \"cancel\": \"取消\",\n            \"save\": \"保存\"\n        },\n        \"errors\": {\n            \"selectField\": \"请选择字段\",\n            \"selectOperator\": \"请选择操作符\",\n            \"selectEnumValue\": \"请选择枚举值\",\n            \"enterFilterValue\": \"请填写筛选值\",\n            \"atLeastOneCondition\": \"请至少配置一个有效的筛选条件\"\n        },\n        \"toast\": {\n            \"fetchEnumFailed\": \"获取枚举值失败，请稍后重试\",\n            \"saveSuccess\": \"保存成功\"\n        },\n        \"enumSelect\": {\n            \"placeholder\": \"请选择\",\n            \"searchPlaceholder\": \"搜索...\",\n            \"loading\": \"加载中...\",\n            \"selectAll\": \"全选\",\n            \"loadingMore\": \"加载更多...\",\n            \"noMatch\": \"未找到匹配的选项\",\n            \"noData\": \"暂无数据\"\n        }\n    },\n    \"styleConfigPanel\": {\n        \"sections\": {\n            \"color\": \"颜色\",\n            \"title\": \"标题\",\n            \"axisTitle\": \"轴标题\",\n            \"legend\": \"图例\",\n            \"metricValue\": \"指标数值\",\n            \"subtitle\": \"指标副标题\",\n            \"chartOptions\": \"图表选项\"\n        },\n        \"labels\": {\n            \"themeColor\": \"主题颜色\",\n            \"bgColor\": \"背景颜色\",\n            \"titleContent\": \"标题内容\",\n            \"textFormat\": \"文本格式\",\n            \"textContent\": \"文本内容\",\n            \"xAxisTitleContent\": \"X 轴标题内容\",\n            \"xAxisTextFormat\": \"X 轴文本格式\",\n            \"yAxisTitleContent\": \"Y 轴标题内容\",\n            \"yAxisTextFormat\": \"Y 轴文本格式\",\n            \"legendPosition\": \"图例位置\",\n            \"legendTextFormat\": \"文本格式\"\n        },\n        \"placeholders\": {\n            \"enterTitle\": \"请输入标题\",\n            \"enterSubtitle\": \"请输入副标题\",\n            \"enterXAxisTitle\": \"请输入X轴标题\",\n            \"enterYAxisTitle\": \"请输入Y轴标题\"\n        },\n        \"positions\": {\n            \"top\": \"顶部\",\n            \"bottom\": \"底部\",\n            \"left\": \"左侧\",\n            \"right\": \"右侧\"\n        },\n        \"buttons\": {\n            \"show\": \"显示该项\"\n        },\n        \"options\": {\n            \"legend\": \"图例\",\n            \"axis\": \"坐标轴\",\n            \"dataLabel\": \"数据标签\",\n            \"gridLine\": \"网格线\"\n        }\n    },\n    \"useChartState\": {\n        \"sections\": {\n            \"category\": \"维度\",\n            \"stack\": \"维度\",\n            \"value\": \"指标\"\n        },\n        \"fieldTypes\": {\n            \"dimension\": \"维度\",\n            \"metric\": \"指标\"\n        },\n        \"warn\": {\n            \"invalidFieldType\": \"不支持拖拽{{fieldType}}至{{section}}\",\n            \"maxStackDimension\": \"当前维度数量已达到上限\",\n            \"metricLimitReached\": \"当前指标数量已达到上限\",\n            \"maxCategoryDimensions\": \"类别维度最多只能有 2 个\",\n            \"fieldExists\": \"该字段已添加\"\n        }\n    },\n    \"renameSuccess\": \"已重命名\",\n    \"renameError\": \"重命名失败\",\n    \"shareNotPublished\": \"该看板尚未发布\",\n    \"shareCopySuccess\": \"分享链接已复制\",\n    \"shareCopyError\": \"复制失败\",\n    \"publishSuccess\": \"已发布\",\n    \"unpublishSuccess\": \"已取消发布\",\n    \"operationFailed\": \"操作失败\",\n    \"selectTime\": \"选择时间\",\n    \"startHour\": \"开始小时\",\n    \"endHour\": \"结束小时\",\n    \"dynamicUpdate\": \"动态更新\",\n    \"cancel\": \"取消\",\n    \"clear\": \"清空\",\n    \"confirm\": \"确定\",\n    \"yearUnit\": \"年\",\n    \"monthUnit\": \"月\",\n    \"shortcut\": {\n        \"last_7\": \"最近7天\",\n        \"last_30\": \"最近30天\",\n        \"last_90\": \"最近90天\",\n        \"last_180\": \"最近180天\"\n    },\n    \"selectComponentToStart\": \"请选择一个组件，开始搭建你的数据看板\",\n    \"saveSuccess\": \"保存成功\",\n    \"saveFailed\": \"保存失败\",\n    \"saving\": \"保存中...\",\n    \"unsaved\": \"未保存\",\n    \"saved\": \"已保存\",\n    \"addChart\": \"添加图表\",\n    \"addQueryComponent\": \"添加查询组件\",\n    \"fullScreen\": \"全屏\",\n    \"saveAndPublish\": \"保存并发布\",\n    \"save\": \"保存\",\n    \"prompt\": \"提示词\",\n    \"unsavedChangesWarning\": \"您有未保存的更改，确定要离开吗？\",\n    \"saveAndLeave\": \"离开并保存\",\n    \"leaveWithoutSaving\": \"不保存\",\n    \"copyToTargetSuccess\": \"已复制到目标看板\",\n    \"copyFailed\": \"复制失败\",\n    \"confirmDeleteComponent\": \"确认删除组件 \\\"{{name}}\\\"?\",\n    \"delete\": \"删除\",\n    \"nameRequired\": \"名称不能为空\",\n    \"charLimit200\": \"字数范围 1-200 字\",\n    \"charLimit200b\": \"名称不能超过 200 字\",\n    \"rename\": \"重命名\",\n    \"duplicate\": \"复制\",\n    \"copyTo\": \"复制到\",\n    \"noOtherDashboards\": \"暂无其他看板\",\n    \"createFailed\": \"创建失败，请重试\",\n    \"maxLimitReached\": \"最多允许创建 {{count}} 个看板\",\n    \"untitledDashboard\": \"未命名看板\",\n    \"dashboardCopyName\": \"{{title}}-副本\",\n    \"confirmDeleteDashboard\": \"确认删除{{title}}？删除后不可恢复。\",\n    \"dashboardList\": \"看板列表\",\n    \"addDashboard\": \"添加看板\",\n    \"expandList\": \"展开列表\",\n    \"collapseList\": \"收起列表\",\n    \"noMatchingDashboards\": \"未找到匹配的看板\",\n    \"noDashboards\": \"暂无看板\",\n    \"default\": \"默认\",\n    \"setAsDefault\": \"设为默认\",\n    \"alreadyDefault\": \"已设为默认\",\n    \"share\": \"分享\",\n    \"selectADashboard\": \"暂无可见看板\",\n    \"createdBy\": \"创建人\",\n    \"createTime\": \"创建时间\",\n    \"lastUpdateTime\": \"最近更新时间\",\n    \"publish\": \"发布\",\n    \"unpublish\": \"取消发布\",\n    \"editDashboard\": \"编辑看板\",\n    \"editAfterUnpublish\": \"取消发布后方可编辑\",\n    \"updatingCharts\": \"图表更新中\",\n    \"noDataInChart\": \"当前图表无数据\",\n    \"selectDate\": \"选择日期\",\n    \"query\": \"查询\",\n    \"dashboardOffline\": \"该看板已下线\",\n    \"chart\": {\n        \"barChart\": \"柱状图\",\n        \"basicBarChart\": \"基础柱状图\",\n        \"stackedBarChart\": \"堆叠柱状图\",\n        \"groupedBarChart\": \"分组柱状图\",\n        \"horizontalBarChart\": \"条形图\",\n        \"basicHorizontalBarChart\": \"基础条形图\",\n        \"stackedHorizontalBarChart\": \"堆叠条形图\",\n        \"groupedHorizontalBarChart\": \"分组条形图\",\n        \"lineChart\": \"折线图\",\n        \"basicLineChart\": \"基础折线图\",\n        \"stackedLineChart\": \"堆叠折线图\",\n        \"multipleLineChart\": \"组合折线图\",\n        \"areaChart\": \"基础面积图\",\n        \"stackedAreaChart\": \"堆叠面积图\",\n        \"pieChart\": \"饼图\",\n        \"donutChart\": \"环形图\",\n        \"others\": \"其他\",\n        \"metricCard\": \"指标卡\"\n    },\n\n    \"mid_user_increment\": \"用户规模统计\",\n    \"timestamp\": {\n        \"year\": \"时间(年)\",\n        \"month\": \"时间(月)\",\n        \"week\": \"时间(周)\",\n        \"day\": \"时间(日)\",\n        \"hour\": \"时间(小时)\"\n    },\n    \"user_group_infos\": {\n        \"user_group_id\": \"用户组ID\",\n        \"user_group_name\": \"用户组名称\"\n    },\n    \"total_user_count\": \"总用户数\",\n    \"new_user_count\": \"新增用户数\",\n    \"mid_active_user\": \"活跃用户规模统计\",\n    \"active_user_count\": \"活跃用户数\",\n    \"mid_app_increment\": \"应用规模统计\",\n    \"user_id\": \"用户ID\",\n    \"user_name\": \"用户名称\",\n    \"app_type\": \"应用类型\",\n    \"total_app_count\": \"总应用数\",\n    \"new_app_count\": \"新增应用数\",\n    \"mid_sessions_increment\": \"应用使用情况统计\",\n    \"app_id\": \"应用ID\",\n    \"app_name\": \"应用名称\",\n    \"source\": \"来源类型（平台/API）\",\n    \"session_count\": \"会话次数\",\n    \"platform_user_count\": \"使用人数\",\n    \"api_call_count\": \"API调用次数\",\n    \"mid_session_run_dtl\": \"应用并发与耗时\",\n    \"duration_seconds\": \"会话运行时长\",\n    \"max_concurrent_sessions\": \"最大同时在线会话数\",\n    \"mid_tool_call_dtl\": \"工具调用分析\",\n    \"tool_name\": \"工具名称\",\n    \"tool_id\": \"工具ID\",\n    \"tool_type\": \"工具类型\",\n    \"tool_call_count\": \"工具调用次数\",\n    \"tool_call_success_count\": \"工具调用成功次数\",\n    \"tool_call_success_rate\": \"工具调用成功率\",\n    \"mid_knowledge_increment\": \"知识库规模统计\",\n    \"total_document_knowledge_base_count\": \"总文档知识库数\",\n    \"total_qa_knowledge_base_count\": \"总QA知识库数\",\n    \"new_document_knowledge_base_count\": \"新增文档知识库数\",\n    \"new_qa_knowledge_base_count\": \"新增QA知识库数\",\n    \"mid_knowledge_file_increment\": \"知识库文件统计\",\n    \"total_file_count\": \"总文件数\",\n    \"total_qa_count\": \"总QA对数\",\n    \"file_size\": \"文件大小\",\n    \"mid_doc_parse_dtl\": \"文件解析效能\",\n    \"parse_type\": \"解析类型\",\n    \"status\": \"文件最终状态\",\n    \"doc_parse_count\": \"文档上传次数\",\n    \"doc_parse_success_count\": \"文档入库成功次数\",\n    \"doc_parse_success_rate\": \"文档入库成功率\",\n    \"etl_parse_count\": \"ETL处理次数\",\n    \"etl_parse_success_count\": \"ETL处理成功次数\",\n    \"etl_parse_success_rate\": \"ETL处理成功率\",\n    \"mid_model_call_dtl\": \"模型成本与性能\",\n    \"user_role_infos\": {\n        \"role_id\": \"角色ID\",\n        \"role_name\": \"角色名称\"\n    },\n    \"model_id\": \"模型ID\",\n    \"model_type\": \"模型类型\",\n    \"model_name\": \"模型名称\",\n    \"model_server_id\": \"服务方ID\",\n    \"model_server_name\": \"服务方名称\",\n    \"total_token\": \"Token消耗量\",\n    \"model_call_count\": \"模型调用次数\",\n    \"model_call_success_rate\": \"模型调用成功率\",\n    \"max_concurrent_llm_sessions\": \"最大LLM并发数\",\n    \"avg_first_token_cost_time\": \"平均首Token响应延迟\",\n    \"mid_user_interact_dtl\": \"用户反馈统计\",\n    \"like_count\": \"点赞次数\",\n    \"dislike_count\": \"点踩次数\",\n    \"copy_count\": \"复制次数\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/flow.json",
    "content": "{\n  \"customAssistant\": \"自定义助手\",\n  \"createAppWithNoCode\": \"通过描述角色和任务来零代码创建应用\",\n  \"assistantCanUseSkillsAndTools\": \"助手可以调用多个技能和工具\",\n  \"customWorkflow\": \"自定义工作流\",\n  \"simpleNodeOrchestration\": \"通过简单的节点编排任务流程，支持并行和成环，支持工作流执行过程中复杂人机交互\",\n  \"customSkill\": \"自定义技能\",\n  \"richComponentsForBuildingApps\": \"通过丰富的组件搭建应用，提供更多参数以供效果调优。\",\n  \"appTemplate\": \"应用模板\",\n  \"chooseTemplateOrCreateBlank\": \"您可以选择一个模板开始，或者自定义创建一个空白应用\",\n  \"workflow\": \"工作流\",\n  \"assistant\": \"助手\",\n  \"short\": \"MM 月 dd 日 HH:mm\",\n  \"leaveIdea\": \"留下您的想法~\",\n  \"skill\": \"技能\",\n  \"search\": \"搜索\",\n  \"confirmDeleteTemplate\": \"是否确认删除该{{type}}模板？\",\n  \"delete\": \"删除\",\n  \"returnToAppList\": \"返回应用列表\",\n  \"templateName\": \"模板名称\",\n  \"templateDescription\": \"模板描述\",\n  \"operations\": \"操作\",\n  \"templateManagementDescription\": \"应用模板管理，模板对所有用户可见，支持拖拽排序、删除操作\",\n  \"maxNameLengthAssistant\": \"名称最多50个字符\",\n  \"maxNameLengthWorkflow\": \"工作流名称不可超过 50 字\",\n  \"minDescLengthAssistant\": \"为了更好的助手效果，描述需要大于20 个字\",\n  \"edit\": \"编辑\",\n  \"create\": \"创建\",\n  \"name\": \"工作流名称\",\n  \"assistantAvatar\": \"助手头像\",\n  \"workflowAvatar\": \"工作流头像\",\n  \"giveAssistantAName\": \"给助手起个名字\",\n  \"giveWorkflowAName\": \"给工作流起个名字\",\n  \"build_assistantName\": \"助手名称\",\n  \"build_roleAndTasks\": \"你希望助手的角色是什么，具体完成什么任务？\",\n  \"description\": \"描述\",\n  \"enterWorkflowDescription\": \"输入工作流描述\",\n  \"build_forExample\": \"例如：我需要一个能够回答技术问题的助手\",\n  \"cancel\": \"取消\",\n  \"save\": \"保存\",\n  \"hasBeenLaunched\": \"已上线\",\n  \"hasBeenOffline\": \"已下线\",\n  \"changesSaved\": \"更改已保存\",\n  \"defaultWorkflowData\": \"工作流实验数据\",\n  \"switchToVersion\": \"切换到 {{versionName}}\",\n  \"currentVersion\": \"当前版本: {{versionName}}\",\n  \"processOrchestration\": \"流程编排\",\n  \"externalRelease\": \"对外发布\",\n  \"run\": \"运行\",\n  \"takeOffline\": \"下线\",\n  \"goOnline\": \"上线\",\n  \"importWorkflow\": \"导入工作流\",\n  \"exportWorkflow\": \"导出工作流\",\n  \"prompt\": \"提示\",\n  \"currentVersionLaunched\": \"当前版本已上线，请先下线或另存为新版本\",\n  \"saveAsNewVersion\": \"另存为新版本\",\n  \"dontSaveAndSwitch\": \"不保存,直接切换\",\n  \"unsavedChangesPrompt\": \"您有未保存的更改，确定要离开吗？\",\n  \"dontSave\": \"不保存\",\n  \"confirmImport\": \"导入将会覆盖现有工作流，确认导入？\",\n  \"missingEndNode\": \"缺少结束节点\",\n  \"pleaseLinkStartNode\": \"请先链接开始节点\",\n  \"unconnectedNodes\": \"存在未连接的节点，请检查连线是否完整。\",\n  \"parallelInputOutputNodes\": \"不支持多个 input 或 output 节点（对话框输入）并行执行\",\n  \"parallelOutputNodes\": \"不支持多个 output 节点(输入型交互)并行执行\",\n  \"unconnectedConditionNode\": \"[{{nodeName}}]节点错误：存在未连接其他节点的触点\",\n  \"basicNodes\": \"基础节点\",\n  \"toolNodes\": \"工具节点\",\n  \"workflowPreview\": \"工作流预览\",\n  \"viewLogs\": \"查看日志\",\n  \"running\": \"运行中\",\n  \"runSuccess\": \"运行成功\",\n  \"runFailed\": \"运行失败\",\n  \"singleNodeRun\": \"单节点运行\",\n  \"runResults\": \"运行结果\",\n  \"value\": \"值\",\n  \"variableNameCannotBeEmpty\": \"变量名称不能为空\",\n  \"variableNameInvalid\": \"变量名称只能包含英文字符、数字和下划线，且不能以数字开头\",\n  \"variableNameTooLong\": \"变量名称不能超过 50 个字符\",\n  \"variableNameDuplicate\": \"变量名已存在\",\n  \"addNewParameter\": \"+添加新的参数\",\n  \"dataType\": \"数据类型\",\n  \"parameterName\": \"参数名称\",\n  \"reference\": \"引用\",\n  \"input\": \"输入\",\n  \"selectVariable\": \"选择变量\",\n  \"selectCondition\": \"选择条件\",\n  \"equals\": \"等于\",\n  \"notEquals\": \"不等于\",\n  \"contains\": \"包含\",\n  \"notContains\": \"不包含\",\n  \"isEmpty\": \"为空\",\n  \"isNotEmpty\": \"不为空\",\n  \"startsWith\": \"开始为\",\n  \"endsWith\": \"结束为\",\n  \"regex\": \"正则\",\n  \"selectType\": \"请选择\",\n  \"inputRegexPlaceholder\": \"输入正则表达式\",\n  \"inputValuePlaceholder\": \"输入值\",\n  \"if\": \"如果\",\n  \"else\": \"否则\",\n  \"addCondition\": \"添加条件\",\n  \"addBranch\": \"添加分支\",\n  \"conditionBranchCannotBeEmpty\": \"条件分支不可为空\",\n  \"maxOptionsError\": \"最多添加 30 个选项\",\n  \"emptyOptionError\": \"选项内容不可为空\",\n  \"duplicateOptionError\": \"选项内容重复\",\n  \"lengthOptionError\": \"选项内容不能超过 50 个字符\",\n  \"addOption\": \"添加选项\",\n  \"inputOptionPlaceholder\": \"请输入选项展示文本\",\n  \"confirm\": \"确定\",\n  \"recent\": \"最近\",\n  \"chatRecords\": \"条聊天记录:\",\n  \"formType\": \"表单项类型\",\n  \"textInput\": \"文本输入\",\n  \"dropdown\": \"下拉选项\",\n  \"file\": \"文件\",\n  \"text\": \"文本\",\n  \"displayName\": \"展示名称\",\n  \"variableName\": \"变量名称\",\n  \"options\": \"选项\",\n  \"displayNameRequired\": \"展示名称不可为空\",\n  \"displayNameTooLong\": \"展示名称不能超过 50 个字符\",\n  \"variableNameRequired\": \"变量名称不可为空\",\n  \"variableNameExists\": \"变量名称已存在\",\n  \"optionsRequired\": \"至少添加 1 个选项\",\n  \"nameExample\": \"例如“姓名”\",\n  \"categoryExample\": \"例如“保险类别”\",\n  \"uploadExample\": \"例如“请上传去年财报”\",\n  \"enterVariableName\": \"请输入变量名\",\n  \"atLeastOneFormItem\": \"至少添加一个表单项\",\n  \"editFormItem\": \"修改表单项\",\n  \"addFormItem\": \"添加表单项\",\n  \"userInputLabel\": \"用户输入内容变量\",\n  \"userInputPlaceholder\": \"此处为空时，需要用户手动输入意见；预置文本时，可允许用户在预置文本的基础上修改并提交。\",\n  \"optionsCannotBeEmpty\": \"选项不可为空\",\n  \"noInteraction\": \"无交互\",\n  \"chooseInteraction\": \"选择型交互\",\n  \"chooseInteractionTooltip\": \"提供选项供用户选择，例如在需要进行敏感操作时，需要用户确定方可继续执行工作流\",\n  \"inputInteraction\": \"输入型交互\",\n  \"inputInteractionTooltip\": \"提供用户编辑文本的能力，适合多步任务处理场景，例如用户对模型生成内容直接进行修改，或者输入对生成内容优化意见。用户提交的内容将会存储到 output_result 变量中。\",\n  \"dbType\": \"数据库类型\",\n  \"dbAddress\": \"数据库地址\",\n  \"dbName\": \"数据库名称\",\n  \"dbUsername\": \"数据库用户名\",\n  \"dbPassword\": \"数据库密码\",\n  \"dbAddressRequired\": \"数据库地址不可为空\",\n  \"dbAddressTooLong\": \"数据库地址最多 200 字\",\n  \"dbNameRequired\": \"数据库名称不可为空\",\n  \"dbNameTooLong\": \"数据库名称最多 100 字\",\n  \"dbUsernameRequired\": \"数据库用户名不可为空\",\n  \"dbUsernameTooLong\": \"数据库用户名最多 100 字\",\n  \"dbPasswordRequired\": \"数据库密码不可为空\",\n  \"variableInput\": \"变量输入\",\n  \"leaveAndSave\": \"离开并保存\",\n  \"onlineVersionMessage\": \"当前版本已上线不可修改，可另存为新版本保存修改内容\",\n  \"unsavedChangesMessage\": \"您有未保存的更改,确定要离开吗?\",\n  \"runNode\": \"运行此节点\",\n  \"copy\": \"复制\",\n  \"cannotBeEmpty\": \"{{label}}不可为空\",\n  \"editReportTemplate\": \"编辑报告模板\",\n  \"nodeErrorMessage\": \"{{nodeName}}节点错误：{{varNameCn}}已失效.\",\n  \"required\": \"不可为空\",\n  \"isRequired\": \"是否必填\",\n  \"documentKnowledgeBase\": \"文档知识库\",\n  \"temporarySessionFiles\": \"临时知识库\",\n  \"storeFilesSentInCurrentSession\": \"存储当前会话中发送的文件\",\n  \"displayNameTooltip\": \"用户会话页面展示此名称\",\n  \"variableNameTooltipFile\": \"用于存储用户会话页面填写的内容，可在临时会话文件列表中选择此变量\",\n  \"variableNameTooltip\": \"用于存储用户会话页面填写的内容，可在其他节点中引用此变量\",\n  \"allowMultipleSelect\": \"允许多选\",\n  \"allowUploadMultipleFiles\": \"允许上传多个文件\",\n  \"uploadFileTypes\": \"上传文件类型\",\n  \"temporaryKnowledgeBase\": \"存入临时知识库\",\n  \"parseFile\": \"解析文件内容\",\n  \"notParse\":\"不解析（原始文件）\",\n  \"fileParseResult\": \"文件解析结果\", \n  \"filePath\": \"文件路径\",\n  \"filePathName\":\"文件路径变量名称\",\n  \"storeUploadFiles\":\"存储所有上传文件的路径列表，可在代码节点中读取和处理\",  \n  \"imageVariableName\":\"图片变量名称\",\n  \"extractImages\":\"提取上传文件中的图片，当助手或大模型节点使用多模态大模型时，可传入此变量\",\n  \"parseLengthLimit\":\"解析结果长度上限\",\n  \"storeVariableName\":\"存储文件解析结果的变量名称\",\n  \"parseResultName\":\"解析结果变量名称\",\n  \"selectFile\":\"请选择文件处理策略\",\n  \"fileProcessingStrategy\":\"文件处理策略\",\n  \"fileProcessingStrategyTip\": \"选择如何处理用户上传的文件：\\n· 解析文件内容：提取文件文本，后续可为大模型等节点提供上下文。\\n· 不解析：保留原始文件，后续可被多模态模型或者代码节点处理。\",\n  \"dialogProcessingStrategyTip\": \"选择如何处理用户上传的文件：\\n· 解析文件内容：提取文件文本，后续可为大模型等节点提供上下文。\\n· 存入临时知识库：文件将上传至临时知识库，可在「文档知识库问答」节点使用。\\n· 不解析：保留原始文件，后续可被多模态模型或者代码节点处理。\",\n  \"tempKnowledgeBaseName\": \"临时知识库名称\",\n  \"tempKnowledgeBaseNameTip\": \"文件将会上传到以此命名的临时知识库中，可在文档知识库问答、助手等节点中使用\",\n  \"fileContentVarName\": \"文件内容变量名称\",\n  \"fileContentVarTip\": \"文件解析结果全文将会存储在此变量中，使用时请注意可能会超出模型上下文长度\",\n  \"fileContentMaxLength\": \"文件内容长度上限\",\n  \"filePathVarName\": \"文件路径变量名称\",\n  \"filePathVarTip\": \"文件路径将会存储在此变量中，后续可在代码节点中使用\",\n  \"uploadImageFile\": \"上传图片文件\",\n  \"uploadImageFileTip\": \"提取上传文件中的图片文件，当助手或大模型节点使用多模态大模型时，可传入此图片。\",\n  \"invalidFileError\": \"该文件无法识别，请导入正确的JSON文件\",\n  \"thinking\": \"思考中\",\n  \"thoughtCompleted\": \"已深度思考\",\n  \"variableNameCannotStartWithNumber\": \"变量名不能以数字开头\",\n  \"variableNameContainsInvalidCharacters\": \"变量名称只能包含英文字符、数字和下划线\",\n  \"variableNameAlreadyExists\": \"变量名已存在\",\n  \"character\": \"字\",\n  \"max50Characters\": \"最大50个字符\",\n  \"nodeError\": \"节点错误\",\n  \"doesNotExist\": \"不存在\",\n  \"tmpKnowledgeBaseNotSupportSingleNodeDebug\": \"临时知识库不支持单节点调试\",\n  \"userInputContent\": \"用户输入内容\",\n  \"advancedSearchSettings\": \"高级检索设置\",\n  \"userAuthVerification\": \"用户知识库权限校验\",\n  \"enableToVerifyUserAccessToKnowledgeBase\": \"开启后将验证用户对知识库的访问权限\",\n  \"retrieverWeightSettings\": \"检索器权重设置\",\n  \"adjustWeightForVectorOrKeywordSearch\": \"通过调整权重，确定优先使用向量检索还是优先使用关键词检索。\",\n  \"keyword\": \"关键词\",\n  \"vector\": \"向量\",\n  \"retrievalResultReRank\": \"检索结果重排\",\n  \"useRerankModelForReorderingResults\": \"开启后，将使用重排模型对检索结果进行二次排序\",\n  \"selectRerankModel\": \"请选择重排模型\",\n  \"retrievalResultLength\": \"检索结果长度\",\n  \"controlResultTextLengthForModel\": \"通过此参数控制最终传给模型的知识库检索结果文本长度，超过模型支持的最大上下文长度可能会导致报错。\",\n  \"rerankModelCannotBeEmpty\": \"重排模型不可为空\",\n  \"insertVariable\": \"插入变量\",\n  \"uploadFile\": \"上传文件\",\n  \"messageContentVariable\": \"消息内容变量\",\n  \"cannotExceedMaxLength\": \"不能超过 {{maxLength}} 个字符\",\n  \"roundRunResult\": \"第 {{index}} 轮运行结果\",\n  \"searchResult\": \"检索结果\",\n  \"resultTooLongDownloadToView\": \"检索结果过长，请下载后查看\",\n  \"downloadFullContent\": \"下载完整内容\",\n  \"allTypes\": \"全部类型\",\n  \"document\": \"文档\",\n  \"image\": \"图片\",\n  \"enterValidNumber\": \"请输入有效的数字\",\n  \"numberExceedsMaxLimit\": \"数字大小不能超过2的32次方。\",\n  \"unknownKnowledgeBase\": \"未知知识库\",\n  \"invalidOrDeletedMetadataField\": \"选择的元数据字段无效或已被删除\",\n  \"selectMetadataField\": \"条件 {index}: 请选择元数据字段\",\n  \"selectOperator\": \"条件 {index}: 请选择操作符\",\n  \"enterValue\": \"条件 {index}: 请输入数值\",\n  \"defaultNodeName\": \"元数据过滤\",\n  \"nodeError2\": \"节点错误：\\\"{{fieldName}}\\\"已失效。\",\n  \"metadataFieldValidationError\": \"验证元数据字段时发生错误\",\n  \"noInputNeeded\": \"无需输入\",\n  \"selectOption\": \"请选择\",\n  \"enterValue2\": \"输入值\",\n  \"selectTime\": \"选择时间\",\n  \"unknownField\": \"未知字段\",\n  \"loadingMetadataFields\": \"正在加载元数据字段...\",\n  \"searchMetadata\": \"搜索元数据\",\n  \"noMetadataFields\": \"暂无元数据字段\",\n  \"referenceFormatTip\": \"引用变量请调整格式为\\\"YYYY-MM-DD HH:mm:ss\\\"，如\\\"2025-01-10 21:08:20\\\"表示2025年1月10日21时08分20秒\",\n  \"+ Add Condition\": \"+ 添加条件\",\n  \"playbackUnavailable\": \"播放功能不可用，请联系管理员\",\n  \"wordEditorLoadFailed\": \"word编辑器加载失败\",\n  \"checkOfficeServiceConfig\": \"请检查Office服务地址配置是否正确并正常启动\",\n  \"variableNameEmpty\": \"变量名称不可为空\",\n  \"variableNameStartsWithNumber\": \"变量名不能以数字开头\",\n  \"variableNameInvalidChars\": \"变量名称只能包含英文字符、数字和下划线\",\n  \"variableValueEmpty\": \"变量值不可为空\",\n  \"variableValueTooLong\": \"变量值不能超过1000个字符\",\n  \"addVariable\": \"添加变量\",\n  \"variableValue\": \"变量值\",\n  \"editGlobalVariable\": \"编辑全局变量\",\n  \"addGlobalVariable\": \"添加全局变量\",\n  \"variableNameRuleTip\": \"支持字母、数字、下划线，不能以数字开头，不超过 50 个字符\",\n  \"variableValueRuleTip\": \"变量值不允许为空，不超过1000个字符\",\n  \"enterVariableValue\": \"请输入变量值\",\n  \"kbQueryToolIntro\": \"## 知识库查询工具介绍\\n当需要查询知识库来解决用户问题时，调用知识库查询工具，将用户需求改写成合适的 query 作为知识库工具的入参。\",\n  \"sqlAgentToolIntro\": \"## sqlagent 数据库工具介绍\\n1. 使用自然语言精确的描述用户查询需求，将该描述作为参数 query 的值，调用 sqlagent 工具；\\n2. 如果用户有多条查询需求，多次调用sqlagent。\",\n  \"node\": {\n    \"start\": {\n      \"name\": \"开始\",\n      \"description\": \"工作流运行的起始节点。\",\n      \"开场引导\": \"开场引导\",\n      \"全局变量\": \"全局变量\",\n      \"guide_word\": {\n        \"label\": \"开场白\",\n        \"placeholder\": \"每次工作流开始执行时向用户发送此消息，支持 Markdown 格式，为空时不发送。\"\n      },\n      \"guide_question\": {\n        \"label\": \"引导问题\",\n        \"placeholder\": \"请输入引导问题\",\n        \"help\": \"为用户提供推荐问题，引导用户输入，超过3个时将随机选取3个。\"\n      },\n      \"user_info\": {\n        \"label\": \"用户信息\"\n      },\n      \"current_time\": {\n        \"label\": \"当前时间\"\n      },\n      \"preset_question\": {\n        \"label\": \"预置问题列表\",\n        \"placeholder\": \"输入批量预置问题\",\n        \"help\": \"适合文档审核、报告生成等场景，利用提前预置的问题批量进行 RAG 问答。\"\n      },\n      \"custom_variables\": {\n        \"label\": \"自定义全局变量\",\n        \"help\": \"设置可以在其他节点引用的变量\"\n      }\n    },\n    \"input\": {\n      \"name\": \"输入\",\n      \"接收文本\": \"接收文本\",\n      \"description\": \"接收用户在会话页面的输入，支持 2 种形式：对话框输入，表单输入。\",\n      \"user_input_file\":{\n        \"label\": \"接收文件\"\n      },\n      \"recommended_questions_flag\": {\n        \"label\":\"智能推荐问题\",\n        \"help\": \"基于对话历史预测用户可能输入的内容，并展示在会话中\"\n      },\n      \"recommended_llm\": {\n        \"label\":\"模型\",\n        \"placeholder\":\"请选择模型\"\n      },\n      \"recommended_system_prompt\": {\n        \"label\": \"提示词\",\n        \"value\": \"# Role\\n你是一个极具洞察力的\\\"对话延续预测专家\\\"。你的任务是根据当前的对话历史，预测用户接下来最有可能输入的 3 条短语或问题。\\n\\n# Context Awareness\\n在生成预测前，请执行以下深度思考步骤：\\n1. **意图分析**：用户当前是在寻求事实、表达情绪、请求建议，还是在尝试结束对话？\\n2. **逻辑推演**：根据 AI 上一条回复的内容，用户最自然产生的联想或疑问是什么？\\n3. **风格对齐**：观察用户的用词习惯（专业、随性、简短还是详细），预测结果需保持语气一致。\\n\\n# Goals\\n- **多样性**：提供不同方向的后续（例如：一个深入探究的问题，一个相关的新话题，一个反馈性评价）。\\n- **简洁性**：预测内容应短小精悍，通常不超过 15 个字，方便用户点击。\\n- **前瞻性**：能够预判用户的\\\"痛点\\\"，直接提供解决方案的入口。\\n\\n# Output Format\\n请严格遵守 JSON 格式输出。\\n返回一个包含单一键名 \\\"suggestions\\\" 的 JSON 对象。\\n- 所有字符串必须使用**双引号**。\\n- 不要输出 Markdown 代码块标记（如 ```json），直接输出 JSON 字符串。\\n**示例：**\\n{\\\"suggestions\\\": [\\\"你能举个例子吗？\\\", \\\"这个方案的成本是多少？\\\", \\\"听起来不错，怎么开始？\\\"]}\"\n      },\n      \"recommended_history_num\": {\n        \"label\":\"历史聊天记录条数\",\n        \"help\":\"指定模型生成推荐问题时参考的历史对话条数\"\n      },\n      \"tab_dialog_input\": {\n        \"label\": \"对话框输入\",\n        \"help\": \"接收用户从对话框输入的内容。\"\n      },\n      \"tab_form_input\": {\n        \"label\": \"表单输入\",\n        \"help\": \"将会在用户会话界面弹出一个表单，接收用户从表单提交的内容。\"\n      },\n      \"user_input\": {\n        \"label\": \"输入文本内容\"\n      },\n      \"dialog_files_content\": {\n        \"label\": \"上传文件内容\"\n      },\n      \"dialog_files_content_size\": {\n        \"label\": \"解析结果长度上限\"\n      },\n      \"dialog_file_accept\": {\n        \"label\": \"上传文件类型\"\n      },\n      \"dialog_image_files\": {\n        \"label\": \"图片文件\",\n        \"help\": \"提取上传文件中的图片文件，当助手或大模型节点使用多模态大模型时，可传入此图片。\"\n      },\n      \"form_input\": {\n        \"label\": \"+ 添加表单项\"\n      }\n    },\n    \"output\": {\n      \"name\": \"输出\",\n      \"description\": \"可向用户发送文本和文件，并且支持进行更丰富的交互，例如请求用户批准进行某项敏感操作、允许用户在模型输出内容的基础上直接修改并提交。\",\n      \"message\": {\n        \"label\": \"消息内容\",\n        \"placeholder\": \"输入需要发送给用户的消息，例如“接下来我将执行 XX 操作，请您确认”，“以下是我的初版草稿，您可以在其基础上进行修改”\"\n      },\n      \"output_result\": {\n        \"label\": \"交互类型\"\n      }\n    },\n    \"llm\": {\n      \"name\": \"大模型\",\n      \"description\": \"调用大模型回答用户问题或者处理任务。\",\n      \"tab_single\": {\n        \"label\": \"单次运行\"\n      },\n      \"tab_batch\": {\n        \"label\": \"批量运行\"\n      },\n      \"batch_variable\": {\n        \"label\": \"批处理变量\",\n        \"placeholder\": \"请选择批处理变量\",\n        \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\"\n      },\n      \"模型设置\": \"模型设置\",\n      \"提示词\": \"提示词\",\n      \"输出\": \"输出\",\n      \"model_id\": {\n        \"label\": \"模型\",\n        \"placeholder\": \"请在模型管理中配置 LLM 模型\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"system_prompt\": {\n        \"label\": \"系统提示词\"\n      },\n      \"user_prompt\": {\n        \"label\": \"用户提示词\"\n      },\n      \"image_prompt\": {\n        \"label\": \"视觉\",\n        \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\"\n      },\n      \"output_user\": {\n        \"label\": \"将输出结果展示在会话中\",\n        \"help\": \"一般在问答等场景可开启，文档审核、报告生成等场景可关闭。\"\n      },\n      \"output\": {\n        \"label\": \"输出变量\",\n        \"help\": \"模型输出内容将会存储在该变量中。\"\n      }\n    },\n    \"agent\": {\n      \"name\": \"助手\",\n      \"description\": \"AI 自主进行任务规划，选择合适的知识库、数据库或工具进行调用。\",\n      \"tab_single\": {\n        \"label\": \"单次运行\"\n      },\n      \"tab_batch\": {\n        \"label\": \"批量运行\"\n      },\n      \"batch_variable\": {\n        \"label\": \"批处理变量\",\n        \"placeholder\": \"请选择批处理变量\",\n        \"help\": \"选择需要批处理的变量，将会多次运行本节点，每次运行时从选择的变量中取一项赋值给batch_variable进行处理。\"\n      },\n      \"模型设置\": \"模型设置\",\n      \"提示词\": \"提示词\",\n      \"知识库\": \"知识库\",\n      \"数据库\": \"数据库\",\n      \"工具\": \"工具\",\n      \"输出\": \"输出\",\n      \"model_id\": {\n        \"label\": \"模型\",\n        \"placeholder\": \"请在系统模型设置中配置助手推理模型\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"system_prompt\": {\n        \"label\": \"系统提示词\",\n        \"placeholder\": \"助手画像\",\n        \"value\": \"你是一个智能 AI 助手，擅长根据用户需求，调用合适的工具（如有的话）解决用户问题。\\n当前时间是 {{#start/current_time#}}\"\n      },\n      \"user_prompt\": {\n        \"label\": \"用户提示词\",\n        \"placeholder\": \"用户消息内容\"\n      },\n      \"chat_history_flag\": {\n        \"label\": \"历史聊天记录\",\n        \"help\": \"带入模型上下文的历史消息条数，为 0 时代表不包含上下文信息\"\n      },\n      \"image_prompt\": {\n        \"label\": \"视觉\",\n        \"help\": \"当使用多模态大模型时，可通过此功能传入图片，结合图像内容进行问答\"\n      },\n      \"knowledge_id\": {\n        \"label\": \"检索知识库范围\",\n        \"placeholder\": \"请选择知识库\"\n      },\n      \"sql_agent\": {\n        \"label\": \"数据库配置\"\n      },\n      \"tool_list\": {\n        \"label\": \"+ 添加工具\"\n      },\n      \"output_user\": {\n        \"label\": \"将输出结果展示在会话中\",\n        \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\"\n      },\n      \"output\": {\n        \"label\": \"输出变量\",\n        \"help\": \"模型输出内容将会存储在该变量中。\"\n      }\n    },\n    \"qa_retriever\": {\n      \"name\": \"QA知识库检索\",\n      \"description\": \"从 QA 知识库中检索问题以及对应的答案。\",\n      \"检索设置\": \"检索设置\",\n      \"输出\": \"输出\",\n      \"user_question\": {\n        \"label\": \"输入变量\",\n        \"placeholder\": \"请选择检索问题\"\n      },\n      \"qa_knowledge_id\": {\n        \"label\": \"QA知识库\",\n        \"placeholder\": \"请选择QA知识库\"\n      },\n      \"score\": {\n        \"label\": \"相似度阈值\",\n        \"help\": \"低于阈值的结果将会被过滤\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"检索结果\"\n      }\n    },\n    \"rag\": {\n      \"name\": \"文档知识库问答\",\n      \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n      \"知识库检索设置\": \"知识库检索设置\",\n      \"AI回复生成设置\": \"AI回复生成设置\",\n      \"输出\": \"输出\",\n      \"user_question\": {\n        \"label\": \"用户问题\",\n        \"placeholder\": \"请选择用户问题\",\n        \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\"\n      },\n      \"knowledge\": {\n        \"label\": \"检索范围\",\n        \"placeholder\": \"请选择知识库\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"元数据过滤\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"高级检索配置\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"检索结果\"\n      },\n      \"system_prompt\": {\n        \"label\": \"系统提示词\",\n        \"value\": \"你是一位知识库问答助手，遵守以下规则回答问题：\\n1. 请用中文严谨、专业地回答用户的问题。\\n2. 回答时须严格基于【参考文本】中的内容：\\n\\n- 如果【参考文本】中有明确与用户问题相关的文字内容，请依据相关内容进行回答；如果【参考文本】中没有任何与用户问题相关的内容，则直接回复：“没有找到相关内容”。\\n- 如果相关内容中包含 markdown 格式的图片（例如 ![image](路径/IMAGE_1.png)），必须严格保留其原始 markdown 格式，不得添加引号、代码块（`或```）或其他特殊符号，也不得修改图片路径，保证可以正常渲染 markdown 图片。\\n3. 当【参考文本】中的内容来源于多个不同的信息源时，若相关内容存在明显差异或冲突，请分别列出这些差异或冲突的答案；若无差异或冲突，只给出一个统一的回答即可。\"\n      },\n      \"user_prompt\": {\n        \"label\": \"用户提示词\",\n        \"value\": \"用户问题：```{{#user_question#}}```\\n参考文本：```{{#retrieved_result#}}```\\n你的回答：\"\n      },\n      \"model_id\": {\n        \"label\": \"模型\",\n        \"placeholder\": \"请在模型管理中配置 LLM 模型\"\n      },\n      \"temperature\": {\n        \"label\": \"温度\"\n      },\n      \"output_user\": {\n        \"label\": \"将输出结果展示在会话中\",\n        \"help\": \"一般在问答等场景开启，文档审核、报告生成等场景可关闭。\"\n      },\n      \"output_user_input\": {\n        \"label\": \"输出变量\",\n        \"help\": \"模型输出内容将会存储在该变量中。\"\n      }\n    },\n    \"knowledge_retriever\": {\n      \"name\": \"文档知识库检索\",\n      \"description\": \"根据用户问题从知识库中检索相关内容，结合检索结果调用大模型生成最终结果，支持多个问题并行执行。\",\n      \"知识库检索设置\": \"知识库检索设置\",\n      \"输出\": \"输出\",\n      \"user_question\": {\n        \"label\": \"用户问题\",\n        \"placeholder\": \"请选择用户问题\",\n        \"help\": \"当选择多个问题时，将会多次运行本节点，每次运行时从批量问题中取一项进行处理。\"\n      },\n      \"knowledge\": {\n        \"label\": \"检索范围\",\n        \"placeholder\": \"请选择知识库\"\n      },\n      \"metadata_filter\": {\n        \"label\": \"元数据过滤\"\n      },\n      \"advanced_retrieval_switch\": {\n        \"label\": \"高级检索配置\"\n      },\n      \"retrieved_result\": {\n        \"label\": \"检索结果\"\n      }\n    },\n    \"report\": {\n      \"name\": \"报告\",\n      \"description\": \"按照预设的word模板生成报告。\",\n      \"report_info\": {\n        \"label\": \"报告名称\",\n        \"placeholder\": \"请输入生成报告的名称\"\n      }\n    },\n    \"code\": {\n      \"name\": \"代码\",\n      \"description\": \"自定义需要执行的代码。\",\n      \"入参\": \"入参\",\n      \"执行代码\": \"执行代码\",\n      \"出参\": \"出参\",\n      \"code_input\": {\n        \"label\": \"入参\"\n      },\n      \"code_output\": {\n        \"label\": \"出参\"\n      }\n    },\n    \"condition\": {\n      \"name\": \"条件分支\",\n      \"description\": \"根据条件表达式执行不同的分支。\"\n    },\n    \"end\": {\n      \"name\": \"结束\",\n      \"description\": \"工作流运行到此结束。\"\n    },\n    \"tool\": {\n      \"工具参数\": \"工具参数\",\n      \"输出\": \"输出\",\n      \"output\": {\n        \"label\": \"输出变量\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/knowledge.json",
    "content": "{\n    \"predefinedRules\": {\n        \"singleNewlineRule\": {\n            \"label\": \"\\\\n\",\n            \"desc\": \"单换行后切分，用于分隔普通换行\"\n        },\n        \"doubleNewlineRule\": {\n            \"label\": \"\\\\n\\\\n\",\n            \"desc\": \"双换行后切分,用于分隔段落\"\n        },\n        \"chapterRule\": {\n            \"label\": \"第.{1,3}章\",\n            \"desc\": \"\\\"第X章\\\"前切分，切分章节等\"\n        },\n        \"articleRule\": {\n            \"label\": \"第.{1,3}条\",\n            \"desc\": \"\\\"第X条\\\"前切分，切分条目等\"\n        },\n        \"chinesePeriodRule\": {\n            \"label\": \"。\",\n            \"desc\": \"中文句号后切分，中文断句\"\n        },\n        \"englishPeriodRule\": {\n            \"label\": \"\\\\.\",\n            \"desc\": \"英文句号后切分，英文断句\"\n        }\n    },\n    \"confirm1\": \"确定\",\n    \"unavailable\": \"播放功能不可用，请联系管理员\",\n    \"now\": \"此刻\",\n    \"hour\": \"时\",\n    \"minute\": \"分\",\n    \"second\": \"秒\",\n    \"placeholder\": \"请选择日期\",\n    \"chunk\": \"分段\",\n    \"chunkContentCannotBeEmpty\": \"分段内容不可为空\",\n    \"clickLocateOriginalFile\": \"点击定位到原文件\",\n    \"clickShowMarkdownEdit\": \"点击展示Markdown原文，进行编辑\",\n    \"clickDeleteChunk\": \"点击删除分段\",\n    \"noAnalysisResult\": \"无解析结果\",\n    \"filePathEmpty\": \"文件路径为空\",\n    \"fileLoadFailed\": \"文件加载失败\",\n    \"fileContentEmpty\": \"文件内容为空\",\n    \"excelContentEmpty\": \"Excel内容为空\",\n    \"unsupportedType\": \"不支持的类型: {{type}}，仅支持CSV/XLSX/XLS\",\n    \"sheetParseError\": \"Sheet解析错误\",\n    \"unknownError\": \"未知错误\",\n    \"currentSheetNoData\": \"当前Sheet无数据\",\n    \"rowNumber\": \"行号\",\n    \"defaultColumnName\": \"列{{index}}\",\n    \"loading\": \"加载文件中...\",\n    \"supportedFormats\": \"支持 CSV, XLSX, XLS 格式\",\n    \"previewFailed\": \"预览失败\",\n    \"downloadOriginal\": \"下载原始文件\",\n    \"metacommon\": {\n        \"delete\": \"删除\",\n        \"cancel\": \"取消\",\n        \"save\": \"保存\",\n        \"none\": \"无\"\n    },\n    \"metadatainfor\": {\n        \"title\": \"元数据\",\n        \"addMetadata\": \"添加元数据\",\n        \"enterText\": \"请输入文本\",\n        \"selectTime\": \"选择时间\",\n        \"searchMetadata\": \"搜索元数据\",\n        \"createMetadata\": \"新建元数据\",\n        \"enterNewMetadataInfo\": \"请输入新元数据的名称和类型。\",\n        \"type\": \"类型\",\n        \"name\": \"名称\",\n        \"enterMetadataName\": \"请输入元数据名称\"\n    },\n    \"fileinfor\": {\n        \"documentInfo\": \"文档信息\",\n        \"fileId\": \"文件ID\",\n        \"fileName\": \"文件名称\",\n        \"createTime\": \"创建时间\",\n        \"updateTime\": \"更新时间\",\n        \"creator\": \"创建者\",\n        \"updater\": \"更新者\",\n        \"originalFileSize\": \"原始文件大小\",\n        \"splitStrategy\": \"切分策略\",\n        \"fullTextSummary\": \"全文摘要\"\n    },\n    \"common\": {\n        \"back\": \"返回\",\n        \"success\": \"成功\",\n        \"noPermission\": \"暂无操作权限\"\n    },\n    \"file\": {\n        \"selectFile\": \"选择文件\",\n        \"searchFiles\": \"搜索文件\",\n        \"previewNotAvailable\": \"文件无法预览\",\n        \"fileNotFound\": \"未找到选中的文件\",\n        \"changeFailed\": \"文件切换失败\",\n        \"loadFailed\": \"加载文件列表失败\",\n        \"unnamedFile\": \"未命名文件\",\n        \"excelRule\": \"每 {{length}} 行作为一个分段\",\n        \"noSearchResults\": \"未找到匹配的文件\",\n        \"noFiles\": \"暂无文件\",\n        \"noMoreFiles\": \"没有更多文件了\"\n    },\n    \"segment\": {\n        \"searchSegments\": \"搜索分段\",\n        \"adjustStrategy\": \"调整分段策略\",\n        \"noData\": \"无分段数据\"\n    },\n    \"metadialog\": {\n        \"title\": \"元数据\",\n        \"nameRequired\": \"名称不能为空。\",\n        \"nameTooLong\": \"名称不能超过255个字符。\",\n        \"nameInvalid\": \"必须以小写字母开头，且只能包含小写字母、数字和下划线。\",\n        \"nameExists\": \"元数据名已存在。\",\n        \"nameReserved\": \"该名称为系统内置元数据，不可使用\",\n        \"saveSuccess\": \"元数据已成功保存\",\n        \"saveFailed\": \"保存失败，请检查网络或联系管理员\",\n        \"alreadyExists\": \"该元数据已存在，不能重复添加。\"\n    },\n    \"everyRowsAsOneSegment\": \"每{{count}}行作为一段\",\n    \"confirmDeleteSelectedFiles\": \"确认删除选中文件（{{count}}个）\",\n    \"knowledgeBaseSettings\": \"知识库设置\",\n    \"enterKnowledgeBaseDescription\": \"请输入知识库描述\",\n    \"noAvailableModels\": \"暂无可用模型\",\n    \"embeddingModelChangeWarning\": \"修改 embedding 模型可能会消耗大量模型资源且耗时较久，请谨慎进行\",\n    \"finishCreate\": \"完成创建\",\n    \"copySuffix\": \" 副本\",\n    \"noOperationPermission\": \"暂无操作权限\",\n    \"fileManagement\": \"文件管理\",\n    \"chunkManagement\": \"分段管理\",\n    \"back\": \"返回\",\n    \"previewHint\": \"左侧点击按钮预览结果\",\n    \"uploadHint\": \"请先完成文件上传\",\n    \"nameRequired\": \"知识库名称不可为空\",\n    \"documentDataParsingCompleted\": \"文档数据解析已完成\",\n    \"documentDataBeingPrepared\": \"文档数据正在准备中\",\n    \"youCanReturn\": \"您可以返回知识库文件列表查看解析状态\",\n    \"returnToKnowledgeBase\": \"返回知识库\",\n    \"buildKnowledgeBaseQaAgent\": \"构建知识库问答智能体\",\n    \"afterDocumentParsing\": \"文档解析完成后。使用预制的知识库问答模版建立智能体，并测试问答效果\",\n    \"documentKnowledgeQa\": \"文档知识库问答-\",\n    \"retrieveDocumentKnowledge\": \"检索文档知识库，根据检索结果进行回答。\",\n    \"characters\": \"字符\",\n    \"retainImagesTooltip\": \"解析时将保留文档中的图片内容，以支持问答时图文并茂的回复。\",\n    \"minRowGreaterThanMaxRow\": \"最小行不能大于最大行\",\n    \"overlapGreaterThanChunkSize\": \"重叠区长度不能大于预期切分长度\",\n    \"customRuleNotEmpty\": \"自定义规则不能为空\",\n    \"addAtLeastOneSplitRule\": \"请至少添加一个分割规则\",\n    \"defStrategy\": \"默认策略\",\n    \"cusStrategy\": \"自定义策略\",\n    \"repreviewSegmentation\": \"重新预览分段\",\n    \"customRule\": \"自定义规则\",\n    \"singleNewlineRule\": \"单换行后切分，用于分隔普通换行\",\n    \"doubleNewlineRule\": \"双换行后切分，用于分隔段落\",\n    \"chapterRule\": \"\\\"第X章\\\"前切分，切分章节等\",\n    \"articleRule\": \"\\\"第X条\\\"前切分，切分条目等\",\n    \"chinesePeriodRule\": \"中文句号后切分，中文断句\",\n    \"englishPeriodRule\": \"英文句号后切分，英文断句\",\n    \"splitt\": \"切分\",\n    \"similarQuestionsPreview\": \"相似问题（仅显示前十条）\",\n    \"noSimilarQuestions\": \"暂无相似问题\",\n    \"importQA\": \"导入 QA\",\n    \"upFile\": \"请上传文件\",\n    \"exampleFile\": \"示例文件\",\n    \"qaImportExampleFile\": \"QA导入格式示例.xlsx\",\n    \"importPreview\": \"导入预览（仅显示前十条）\",\n    \"emptyUploadData\": \"待上传问题为空，请检查\",\n    \"excelFileTypeError\": \"请上传xlsx、xls类型的文件\",\n    \"excelFileEmpty\": \"Excel文件为空\",\n    \"excelParseError\": \"Excel文件解析失败\",\n    \"fileReadError\": \"文件读取失败\",\n    \"missingRequiredColumns\": \"缺少必要列: {{columns}}\",\n    \"settings\": \"设置\",\n    \"name\": \"知识库名称\",\n    \"metaData\": \"元数据\",\n    \"segmentationStrategy\": \"切分策略\",\n    \"namePlaceholder\": \"请输入知识库名称\",\n    \"desc\": \"知识库描述\",\n    \"descPlaceholder\": \"请输入知识库描述\",\n    \"searchFileName\": \"搜索文件名称\",\n    \"uploadFile\": \"上传文件\",\n    \"segmentStrategy\": \"分段策略\",\n    \"textComparison\": \"原文对比\",\n    \"dataProcessing\": \"数据处理\",\n    \"fileName\": \"文件名称\",\n    \"status\": \"状态\",\n    \"all\": \"全部\",\n    \"reset\": \"重置\",\n    \"parsing\": \"解析中\",\n    \"retry\": \"重试\",\n    \"completed\": \"已完成\",\n    \"queuing\": \"排队中\",\n    \"timeout\": \"超时\",\n    \"timeoutTip\": \"排队超过24⼩时，建议联系管理员增加资源\",\n    \"parseFailed\": \"解析失败\",\n    \"uploadTime\": \"上传时间\",\n    \"operations\": \"操作\",\n    \"view\": \"查看\",\n    \"delete\": \"删除\",\n    \"policyChangeDetected\": \"检测到策略调整，\",\n    \"createMetadata\": \"新建元数据\",\n    \"builtInMetadata\": \"内置元数据\",\n    \"builtInMetadataTooltip\": \"内置元数据是系统预定义的元数据\",\n    \"createMetadataDescription\": \"请定义新元数据的类型和名称。\",\n    \"pleaseEnter\": \"请输入\",\n    \"save\": \"保存\",\n    \"saving\": \"保存中...\",\n    \"rename\": \"重命名\",\n    \"renameDescription\": \"请输入新的名称\",\n    \"tip\": \"提示\",\n    \"confirmDelete\": \"确认删除？\",\n    \"confirmDeleteMetadata\": \"确认删除该元数据？\",\n    \"builtInNameError\": \"该名称为系统内置元数据，不可使用\",\n    \"nameTooLong\": \"名称不能超过255个字符。\",\n    \"nameFormatError\": \"必须以小写字母开头，且只能包含小写字母、数字和下划线。\",\n    \"nameExists\": \"元数据名已存在。\",\n    \"knowledgeIdMissing\": \"知识库ID不存在，无法创建\",\n    \"inputInvalid\": \"输入不符合规范\",\n    \"renameFailed\": \"重命名元数据失败，请稍后重试\",\n    \"deleteFailed\": \"删除元数据失败，请稍后重试\",\n    \"regeneratePreview\": \"重新生成预览\",\n    \"in\": \"在\",\n    \"enterRegex\": \"请输入正则表达式\",\n    \"before\": \"前\",\n    \"after\": \"后\",\n    \"add\": \"添加\",\n    \"addCustomRule\": \"自定义规则\",\n    \"splitPriorityInfo\": \"切分优先级按展示顺序从高到低排序，可拖拽调整\",\n    \"step1UploadFile\": \"①上传文件\",\n    \"step2DocProcessing\": \"②文档处理策略\",\n    \"totalFiles\": \"共{{count}}个文件\",\n    \"nextStep\": \"下一步\",\n    \"addSuccess\": \"添加成功\",\n    \"uploadDirectly\": \"直接上传\",\n    \"docProcessingStrategy\": \"文档处理策略\",\n    \"defaultStrategy\": \"文档文件\",\n    \"customStrategy\": \"表格文件\",\n    \"splitMethod\": \"切分规则\",\n    \"splitMethodHint\": \"可选择下方筛选项，或通过正则表达式自定义切分规则，例如在\\\"第.{1,3}条\\\" 前进行切分时，会在“第1条”、“第ab条”“第三条”等文本之前进行切分。\",\n    \"splitLength\": \"预期切分长度\",\n    \"split\": \"切分\",\n    \"every\": \"每\",\n    \"row\": \"行\",\n    \"bonly\": \"第\",\n    \"arrive\": \"到\",\n    \"gauge\": \"作为表头\",\n    \"segemnt\": \"作为一个分段\",\n    \"splitSettings\": \"切分通用设定\",\n    \"keepImages\": \"保留文档图片\",\n    \"setSeparately\": \"为每个表格单独设置\",\n    \"addHeader\": \"为分段添加表头\",\n    \"pdfAnalysis\": \"PDF文档解析策略\",\n    \"ocrForce\": \"强制开启OCR\",\n    \"ocrForceTip\": \"启用后将支持识别扫描件、图片中的文字，以及结构化提取表格内容\",\n    \"enableRec\": \"开启公式识别\",\n    \"hfFilter\": \"过滤页眉页脚\",\n    \"splitSizePlaceholder\": \"请输入切分长度\",\n    \"chunkOverlap\": \"重叠区长度\",\n    \"chunkOverlapPlaceholder\": \"请输入重叠区长度\",\n    \"previousStep\": \"上一步\",\n    \"submit\": \"提交\",\n    \"previewResults\": \"预览分段结果\",\n    \"splitContent\": \"分段内容\",\n    \"markdownPreview\": \"markdown预览\",\n    \"editSuccess\": \"修改成功\",\n    \"inputNotEmpty\": \"输入内容不可为空\",\n    \"segmentRangeDetected\": \"检测到分段范围调整，\",\n    \"overwriteSegment\": \"覆盖分段内容\",\n    \"backToPosition\": \"回到定位\",\n    \"prompt\": \"提示\",\n    \"confirmDeleteSegment\": \"确定删除分段吗？\",\n    \"edit\": \"编辑\",\n    \"charCount\": \"{{count}}个字符\",\n    \"searchSegments\": \"搜索相关分段\",\n    \"selectFile\": \"选择文件\",\n    \"uploadPrompt\": \"请先完成文件上传\",\n    \"confirmDeleteFile\": \"确认删除该文件？\",\n    \"modalTitle\": \"文件重复提示\",\n    \"modalMessage\": \"以下文件在知识库中已存在，继续上传将会覆盖原有文件以及处理策略，是否覆盖？\",\n    \"keepOriginal\": \"不覆盖，保留原文件\",\n    \"override\": \"覆盖\",\n    \"fileUploadResult\": \"共上传 {{total}} 份文件，有 {{failed}} 份文件上传失败\",\n    \"modifySelection\": \"通过调整原文件选中文本范围，可修改分段内容\",\n    \"cancel\": \"取消\",\n    \"dontRemind\": \"不再提醒\",\n    \"confirmDeleteSelectedQaData\": \"确认删除所选QA数据!\",\n    \"selectedItems\": \"已选\",\n    \"batchDelete\": \"批量删除\",\n    \"qaContent\": \"QA 内容\",\n    \"createQA\": \"创建QA\",\n    \"question\": \"问题\",\n    \"answer\": \"答案\",\n    \"type\": \"类型\",\n    \"creationTime\": \"创建时间\",\n    \"updateTime\": \"更新时间\",\n    \"creator\": \"创建者\",\n    \"update\": \"更新\",\n    \"unknown\": \"未知\",\n    \"source_unknown\": \"未知\",\n    \"source_manual\": \"手动创建\",\n    \"source_annotation_import\": \"标注导入\",\n    \"source_api_import\": \"api导入\",\n    \"source_batch_import\": \"批量导入\",\n    \"manualCreation\": \"手动创建\",\n    \"auditTag\": \"审计标记\",\n    \"pleaseEnterQuestion\": \"请先输入问题\",\n    \"questionAndAnswerCannotBeEmpty\": \"问题、答案不能为空\",\n    \"max100CharactersForSimilarQuestion\": \"相似问最多100个字\",\n    \"max1000CharactersForAnswer\": \"答案最多10000个字\",\n    \"updateQa\": \"更新 QA\",\n    \"createQa\": \"创建 QA\",\n    \"similarQuestions\": \"相似问题\",\n    \"aiGenerate\": \"AI生成\",\n    \"errorMsg\": \"文件解析成功，其中{{value}}条问题上传失败，请检查文件后再试\",\n    \"successMsg\": \"文件上传成功\",\n    \"cancel2\": \"取消\",\n    \"confirm\": \"确认\",\n    \"backToKnowledge\": \"返回知识库\",\n    \"backToKnowledgeDetail\": \"返回知识库详情\",\n    \"loadModelError\": \"加载模型出错\",\n    \"defaultDescPrefix\": \"当回答与\",\n    \"defaultDescSuffix\": \"相关的问题时，参考此知识库\",\n    \"nameExceedsLimit\": \"知识库名称不能超过200字\",\n    \"updateSuccess\": \"更新成功\",\n    \"updateFailed\": \"更新失败，请重试\",\n    \"operationFailed\": \"操作失败，请联系管理员\",\n    \"createFailed\": \"创建失败\",\n    \"knowledgeSettings\": \"知识库设置\",\n    \"pleaseEnterDesc\": \"请输入知识库描述\",\n    \"currentClickedLibId\": \"当前点击的lib ID\",\n    \"copyNameExceedsLimit\": \"复制后的知识库名称超过字数限制\",\n    \"copyFailed\": \"复制失败\",\n    \"noPermission\": \"暂无操作权限\",\n    \"setting\": \"设置\",\n    \"adjustSegmentStrategy\": \"调整分段策略\",\n    \"adjustSegmentStrategySuccess\": \"调整分段策略成功\",\n    \"parseSuccess\": \"解析成功\",\n    \"parseError\": \"解析错误\",\n    \"fileParseError\": \"文件解析失败\",\n    \"metadata\": {\n        \"documentId\": \"系统文档id值，全局唯一\",\n        \"documentName\": \"知识库文档名称，知识库唯一\",\n        \"uploadTime\": \"文档上传时间\",\n        \"updateTime\": \"文档最后一次更新时间\",\n        \"uploader\": \"文档上传者\",\n        \"updater\": \"文档最后一次更新者\",\n        \"nameEmpty\": \"名称不能为空。\",\n        \"nameTooLong\": \"名称不能超过255个字符。\",\n        \"nameInvalid\": \"必须以小写字母开头，且只能包含小写字母、数字和下划线。\",\n        \"nameExists\": \"元数据名已存在。\",\n        \"inputInvalid\": \"输入不符合规范\",\n        \"confirmDelete\": \"确认删除？\",\n        \"deleteButton\": \"删除\",\n        \"saving\": \"保存中...\",\n        \"save\": \"保存\",\n        \"pleaseEnter\": \"请输入\"\n    },\n    \"universalRules\": \"通用切分规则\",\n    \"splitRules\": {\n        \"singleNewlineRule\": \"单换行后切分，用于分隔普通换行\",\n        \"doubleNewlineRule\": \"双换行后切分,用于分隔段落\",\n        \"chapterRule\": \"\\\"第X章\\\"前切分，切分章节等\",\n        \"articleRule\": \"\\\"第X条\\\"前切分，切分条目等\",\n        \"chinesePeriodRule\": \"中文句号后切分，中文断句\",\n        \"englishPeriodRule\": \"英文句号后切分，英文断句\",\n        \"customRule\": \"自定义规则\"\n    },\n    \"fileNotSupported\": \"文件不支持预览\",\n    \"fileExpired\": \"文件已失效，传个新的在测试\",\n    \"dataConversionError\": \"数据转换错误\",\n    \"updateButtonState\": \"更新按钮状态\",\n    \"batchEnable\": {\n        \"alreadyEnabled\": \"所选项目已经是启用状态\",\n        \"success\": \"成功启用 {{count}} 个项目\",\n        \"partialFailed\": \"部分项目启用失败，ID: {{ids}}\",\n        \"failed\": \"批量启用操作异常，请重试\"\n    },\n    \"batchDisable\": {\n        \"alreadyDisabled\": \"所选项目已经是禁用状态\",\n        \"success\": \"成功禁用 {{count}} 个项目\",\n        \"partialFailed\": \"部分项目禁用失败，ID: {{ids}}\",\n        \"failed\": \"批量禁用操作异常，请重试\"\n    },\n    \"createUser\": \"创建用户\",\n    \"sourceTypes\": {\n        \"unknown\": \"未知\",\n        \"manual\": \"手动创建\",\n        \"annotationImport\": \"标注导入\",\n        \"apiImport\": \"api导入\",\n        \"batchImport\": \"批量导入\"\n    },\n    \"knowledgeDesc\": \"知识库描述\",\n    \"embeddingModel\": \"知识库embedding模型选择\",\n    \"loadingModelList\": \"正在加载模型列表...\",\n    \"noAvailableModel\": \"暂无可用模型\",\n    \"embeddingModelWarning\": \"修改 embedding 模型可能会消耗大量模型资源且耗时较久，请谨慎进行\",\n    \"completeCreation\": \"完成创建\",\n    \"copyCompleted\": \"{{name}} 复制完成\",\n    \"copyOf\": \"{{name}}的副本\",\n    \"copying\": \"复制中\",\n    \"disable\": \"禁用\",\n    \"enable\": \"启用\",\n    \"unknownKnowledgeBase\": \"未知知识库\",\n    \"processing\": \"处理中\",\n    \"notEnabled\": \"未启用，请重试\",\n    \"successfullyEnabled\": \"成功启用 {{count}} 个项目\",\n    \"successfullyDisabled\": \"成功禁用 {{count}} 个项目\",\n    \"theSelectedItemsAlreadyEnabled\": \"所选项目已经是启用状态\",\n    \"theSelectedItemsAlreadyDisabled\": \"所选项目已经是禁用状态\",\n    \"selectAll\": \"全选\",\n    \"import\": \"导入\",\n    \"export\": \"导出\",\n    \"fileExists\": \"{{name1}} 对应已存在文件 {{name2}}\",\n    \"splitSettingsTooltip\": \"设置分段目标长度与相邻段重叠长度，控制上下文衔接；可选择是否保留原文图片。\",\n    \"splitMethodTooltip\": \"按规则优先级决定优先切分位置（可拖拽调整）；支持自定义正则，并选择在匹配内容前/后切分。\"\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/model.json",
    "content": "{\n    \"model\": {\n        \"editPrompt\": \"编辑提示词\",\n        \"docKnowledgeAbstractPrompt\": \"文档知识库摘要提示词\",\n        \"docKnowledgeAbstractPromptTooltip\": \"文档知识库上传文件时，对文件进行摘要的提示词\",\n        \"editPromptButton\": \"编辑提示词\",\n        \"cancelEdit\": \"取消修改\",\n        \"confirmCancelEdit\": \"您的修改尚未保存，确定要退出吗？\",\n        \"promptSaved\": \"提示词已保存\",\n        \"executionModeTooltip\": \"一般情况可选择 function call 模式，模型不支持 function call 或追求最佳任务执行效果时可选择 ReAct 模式\",\n        \"selectExecutionMode\": \"选择执行模式\",\n        \"functionCall\": \"Function Call\",\n        \"react\": \"ReAct\",\n        \"workbenchVoiceModel\": \"工作台语音模型\",\n        \"asrModel\": \"语音转文字（ASR）模型\",\n        \"asrModelTooltip\": \"用于工作台\\\\应用的语音转文字场景\",\n        \"ttsModel\": \"文字转语音（TTS）模型\",\n        \"ttsModelTooltip\": \"用于工作台\\\\应用的文字转语音场景\",\n        \"saveFailed\": \"保存失败，请重试！\",\n        \"fetchConfigFailed\": \"获取配置失败，请刷新页面重试！\",\n        \"tip\": \"提示\",\n        \"confirmEmbeddingChange\": \"修改 embedding 模型可能会消耗大量模型资源且耗时较久，确认修改？\",\n        \"confirm\": \"确认\",\n        \"duplicateServiceProviderName\": \"模型服务提供方名称不可重复\",\n        \"duplicateServiceProviderNameValidation\": \"模型服务提供方名称不可为空，且最多100个字符\",\n        \"modelNameValidation\": \"模型名称不可为空，且最多100个字符\",\n        \"modelDuplicate\": \"模型不可重复\",\n        \"voiceTypeRequired\": \"音色类型不可为空\",\n        \"addSuccess\": \"添加成功\",\n        \"updateSuccess\": \"修改成功\",\n        \"deleteConfirmation\": \"删除正在使用的模型可能导致已有应用或知识库不可用，确认删除？\",\n        \"deleteSuccess\": \"删除成功\",\n        \"addModel\": \"添加模型\",\n        \"modelConfiguration\": \"模型配置\",\n        \"serviceProvider\": \"模型服务提供方\",\n        \"serviceProviderName\": \"模型服务提供方名称\",\n        \"serviceProviderNameTooltip\": \"可自定义名称，用于区分已存在的模型，适合同一模型多实例部署场景\",\n        \"dailyCallLimit\": \"单日调用次数上限\",\n        \"interModelFormat\": \"模型接口格式\",\n        \"timesPerDay\": \"次/天\",\n        \"model\": \"模型\",\n        \"delete\": \"删除\",\n        \"cancel\": \"取消\",\n        \"save\": \"保存\",\n        \"back\": \"返回\",\n        \"modelNameEmpty\": \"模型名称不可为空\",\n        \"modelNameLength\": \"最多100个字符\",\n        \"modelNameDuplicate\": \"模型不可重复\",\n        \"deleteModelConfirmation\": \"删除正在使用的模型可能导致已有应用或知识库不可用，确认删除？\",\n        \"modelName\": \"模型名称\",\n        \"modelNameTooltip\": \"本地部署模型或API接口请求模型的模型名称\",\n        \"modelType\": \"模型类型\",\n        \"voiceType\": \"音色类型\",\n        \"webSearch\": \"联网搜索\",\n        \"systemModelSettings\": \"系统模型设置\",\n        \"knowledgeBaseModel\": \"知识库模型\",\n        \"workModel\": \"工作台模型\",\n        \"assistantModel\": \"助手模型\",\n        \"evaluationModel\": \"评测模型\",\n        \"workflowModel\": \"工作流模型\",\n        \"defaultEmbeddingModel\": \"知识库默认embedding模型\",\n        \"sourceTracingModel\": \"知识库溯源模型\",\n        \"workInformationModel\": \"工作台信息摘要模型\",\n        \"workVectorModel\": \"工作台向量检索模型\",\n        \"lingsiTaskModel\": \"$t(bs:linsight)任务执行模型\",\n        \"executionMode\": \"执行模式\",\n        \"sourceTracingModelTooltip\": \"用于知识库问答溯源，使用 LLM 自动从答案中提取关键词，来帮助用户快速定位到答案的可能来源段落，如果这里没有配置，则会使用 jieba 分词来输出答案中的关键词。\",\n        \"documentSummaryModel\": \"文档知识库总结模型\",\n        \"documentSummaryModelTooltip\": \"将文档内容总结为一个标题，然后将标题和chunk合并存储到向量库内, 不配置则不总结文档。\",\n        \"workInformationModelTooltip\": \"用于工作台侧边栏对话标题生成、$t(bs:linsight)SOP名称和描述生成等场景，建议使用参数量小、响应速度快的模型\",\n        \"workVectorModelTooltip\": \"用于工作台个人知识库检索、$t(bs:linsight)指导手册检索等场景\",\n        \"lingsiTaskModelTooltip\": \"建议使用能力最强的模型，以获得最佳任务执行效果\",\n        \"qaSimilarModel\": \"QA知识库相似问模型\",\n        \"qaSimilarModelTooltip\": \"用于生成 QA 知识库中的相似问题。\",\n        \"saveSuccess\": \"保存成功\",\n        \"modelsAndRAGNodes\": \"工作流默认模型\",\n        \"assistantInferenceModel\": \"助手推理模型\",\n        \"assistantInferenceModelRepetition\": \"助手推理模型重复\",\n        \"assistantExecutionMode\": \"助手执行模式\",\n        \"assistantExecutionModeTooltip\": \"模型支持OpenAI function call 格式接口协议时，建议选择 function call 模式\",\n        \"streamingOutput\": \"流式输出\",\n        \"assistantKnowledgeBaseMaxCharacters\": \"助手知识库检索最大字符数\",\n        \"assistantKnowledgeBaseMaxCharactersTooltip\": \"传给模型的最大字符数，超过会自动截断，可根据模型最大上下文长度灵活调整\",\n        \"reorderAfterRetrieval\": \"检索后是否重排\",\n        \"reorderAfterRetrievalTooltip\": \"是否将检索得到的chunk重新排序，建议单文档问答场景开启\",\n        \"setAsDefault\": \"设为默认模型\",\n        \"assistantAutoOptimizationModel\": \"助手画像自动优化模型\",\n        \"yes\": \"是\",\n        \"no\": \"否\",\n        \"selectModel\": \"选择模型\",\n        \"defaultEvaluationFeature\": \"评测功能默认模型\",\n        \"machineName\": \"服务名\",\n        \"gpuNumber\": \"GPU序号\",\n        \"gpuID\": \"GPU-ID\",\n        \"totalMemory\": \"总显存\",\n        \"freeMemory\": \"空余显存\",\n        \"gpuUtilization\": \"GPU利用率\",\n        \"notBeEmpty\": \"不能为空\"\n    },\n    \"finetune\": {\n        \"rtServiceManagement\": \"FT服务管理\",\n        \"machineName\": \"服务名\",\n        \"serviceAddress\": \"服务地址\",\n        \"createTrainingTask\": \"创建训练任务\",\n        \"rtService\": \"FT服务\",\n        \"gpuResourceUsage\": \"GPU资源使用情况\",\n        \"rtServiceTooltip\": \"选择目标基准模型所在的FT服务，Finetune模型训练完成后也将部署在同一个FT服务内。\",\n        \"baseModel\": \"基准模型\",\n        \"finetuneModelName\": \"Finetune模型名称\",\n        \"dataset\": \"数据集\",\n        \"uploadDataset\": \"上传个人数据集\",\n        \"downloadSampleFile\": \"下载示例文件\",\n        \"customSampleSize\": \"自定义样本数（可选）\",\n        \"customSampleSizeTooltip1\": \"该项为可选项：\",\n        \"customSampleSizeTooltip2\": \"若不选中该选项，则选定的个人数据集与预置数据集的所有样本全部参与训练；\",\n        \"customSampleSizeTooltip3\": \"若选中该选项，则用户可以自由指定不同数据集中参与训练的样本数量，若输入框内空置不填或填写数量大于该数据集总样本，则该数据集全部参与训练。\",\n        \"presetDatasets\": \"预置数据集\",\n        \"userDatasets\": \"个人数据集\",\n        \"download\": \"下载\",\n        \"sampleSize\": \"样本数\",\n        \"noData\": \"暂无数据\",\n        \"trainingMethod\": \"训练方法\",\n        \"fullFineTune\": \"全量微调\",\n        \"freeze\": \"freeze微调\",\n        \"lora\": \"lora微调\",\n        \"parameterConfiguration\": \"参数配置\",\n        \"parameterConfigurationTooltip\": \"参数配置建议及实验参考数据详见产品文档。\",\n        \"parameter\": \"参数\",\n        \"quantity\": \"数量\",\n        \"description\": \"说明\",\n        \"gpuDesc\": \"训练占用的显卡号，多张卡用英文逗号分隔，例如0,1,2,3\",\n        \"valRatioDesc\": \"验证集占比，如果取值大于0，每个epoch结束后会在验证集上算loss\",\n        \"batchSizeDesc\": \"批处理大小（BatchSize）表示在每次训练迭代中使用的样本数。较大的批处理大小可以加速训练，但可能会导致显存过大；\",\n        \"learningRateDesc\": \"学习率（LearningRate）是在梯度下降的过程中更新权重时的超参数，过高会导致模型难以收敛，过低则会导致模型收敛速度过慢；\",\n        \"numEpochsDesc\": \"迭代次数（epoch），控制训练过程中的迭代轮数；可以根据loss曲线图判断模型是否收敛，如果loss还在下降没有平稳，可以进一步加大epoch\",\n        \"maxSeqLenDesc\": \"指定最大的序列长度（默认为8192），输入+ 输出的长度不超过8192，否则会截断处理；\",\n        \"cpuLoadDesc\": \"是否将部分参数和优化器load到cpu上（默认不开启，显存不够的时候可以开启），开启之后会占用内存，详细的数据可以参考资源消耗相关说明文档\",\n        \"selectRTService\": \"请选择 RT 服务\",\n        \"selectBaseModel\": \"请选择基准模型\",\n        \"enterModelName\": \"模型名称中至少包含一个字母，可以由数字、字母和横线组成\",\n        \"taskId\": \"任务ID\",\n        \"runtime\": \"运行时长\",\n        \"creator\": \"创建人\",\n        \"cancelPublish\": \"取消发布\",\n        \"formatTime\": \"hh小时mm分ss秒\",\n        \"publish\": \"发布\",\n        \"stop\": \"中止\",\n        \"confirmCancelPublish\": \"该模型正处于上线状态，是否仍然取消发布\",\n        \"confirmDeleteModel\": \"确认要删除模型 {{name}} 吗？\",\n        \"confirmDeleteOnlineModel\": \"该模型已上线，确认要删除模型 {{name}} 吗？\",\n        \"confirmDeletePublishedModel\": \"该模型已发布，确认要删除模型 {{name}} 吗？\",\n        \"confirmStopTraining\": \"确认停止该训练?\",\n        \"evaluationReport\": \"评估报告\",\n        \"trainingLogs\": \"训练日志\"\n    }\n}"
  },
  {
    "path": "src/frontend/platform/public/locales/zh-Hans/tool.json",
    "content": "{\n    \"categories\": {\n        \"代码执行器\": {\n            \"name\": \"代码执行器\",\n            \"desc\": \"通过执行代码完成图表绘制、文件处理等编程类操作\"\n        },\n        \"天眼查\": {\n            \"name\": \"天眼查\",\n            \"desc\": \"企业信息查询\"\n        },\n        \"Jina AI\": {\n            \"name\": \"Jina AI\",\n            \"desc\": \"将目标网址（支持 PDF）内容转换为大模型可处理的 Markdown 格式\"\n        },\n        \"联网搜索\": {\n            \"name\": \"联网搜索\",\n            \"desc\": \"搜索互联网信息，可配置使用不同的搜索引擎，目前支持 Bing、博查、Jina 深度搜索、SerpApi、Tavily。\"\n        },\n        \"Dalle3绘画\": {\n            \"name\": \"Dalle3绘画\",\n            \"desc\": \"OpenAI 文生图模型\"\n        },\n        \"Firecrawl\": {\n            \"name\": \"Firecrawl\",\n            \"desc\": \"指定 URL 爬取网页内容，并将其转换为 Markdown 格式\"\n        },\n        \"SiliconFlow\": {\n            \"name\": \"SiliconFlow\",\n            \"desc\": \"基于文本提示生成高质量图像，支持 Flux 和 Stable Diffusion 模型\"\n        },\n        \"飞书消息\": {\n            \"name\": \"飞书消息\",\n            \"desc\": \"支持获取飞书单聊或群聊历史消息，向指定用户或者群聊发送消息\"\n        },\n        \"Bing web搜索\": {\n            \"name\": \"Bing web搜索\",\n            \"desc\": \"BIng 搜索引擎，可联网检索互联网信息，例如天气、汇率、时事等\"\n        },\n        \"发送邮件\": {\n            \"name\": \"发送邮件\",\n            \"desc\": \"通过smtp协议发送电子邮件\"\n        },\n        \"企业微信\": {\n            \"name\": \"企业微信\",\n            \"desc\": \"企业微信机器人发送群消息工具\"\n        },\n        \"钉钉\": {\n            \"name\": \"钉钉\",\n            \"desc\": \"钉钉群机器人发送消息工具\"\n        },\n        \"论文获取\": {\n            \"name\": \"论文获取\",\n            \"desc\": \"从 Arxiv 网站检索论文的工具，输入为检索关键词。\"\n        },\n        \"计算器\": {\n            \"name\": \"计算器\",\n            \"desc\": \"使用 Python 内置工具进行数学表达式计算\"\n        },\n        \"经济金融数据\": {\n            \"name\": \"经济金融数据\",\n            \"desc\": \"包含股票、基金、期货等行情数据和宏观经济、公司财务等基本面数据的金融大数据平台\"\n        },\n        \"时间\": {\n            \"name\": \"时间\",\n            \"desc\": \"获取当前时间\"\n        }\n    },\n    \"tools\": {\n        \"bisheng_code_interpreter\": {\n            \"name\": \"代码执行器\",\n            \"desc\": \"可以执行 Python  和 shell 代码，并在 600 秒内返回结果，适合处理数学、编程、图片和文件等问题场景。\",\n            \"params\": {\n                \"python_code\": \"The pure python script to be evaluated. \\nThe contents will be in main.py. \\nIt should not be in markdown format.\"\n            }\n        },\n        \"tianyancha_riskinfo\": {\n            \"name\": \"企业天眼风险\",\n            \"desc\": \"可以通过关键字（公司名称、公司id、注册号或社会统一信用代码）获取企业相关天眼风险列表，包括企业自身/周边/预警风险信息。\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_company_holders\": {\n            \"name\": \"企业股东\",\n            \"desc\": \"可以通过公司名称或ID获取企业股东信息，股东信息包括股东名、出资比例、出资金额、股东总数等字段的详细信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_company_change_info\": {\n            \"name\": \"企业工商信息变更记录\",\n            \"desc\": \"可以通过公司名称或ID获取企业变更记录，变更记录包括工商变更事项、变更前后信息等字段的详细信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_ic_info\": {\n            \"name\": \"企业工商信息\",\n            \"desc\": \"可以通过公司名称或ID获取包含企业基本信息、主要人员、股东信息、对外投资、分支机构等维度的相关信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_law_suit_case\": {\n            \"name\": \"企业法律诉讼\",\n            \"desc\": \"可以通过公司名称或ID获取企业法律诉讼信息，法律诉讼包括案件名称、案由、案件身份、案号等字段的详细信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_judicial_risk\": {\n            \"name\": \"企业司法风险\",\n            \"desc\": \"可以通过公司名称或ID获取包含法律诉讼、法院公告、开庭公告、失信人、被执行人、立案信息、送达公告等维度的相关信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_ip_rights\": {\n            \"name\": \"企业知识产权信息\",\n            \"desc\": \"可以通过公司名称或ID获取包含商标、专利、作品著作权、软件著作权、网站备案等维度的相关信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_get_company_baseinfo\": {\n            \"name\": \"企业基本信息\",\n            \"desc\": \"可以通过公司名称或ID获取企业基本信息，企业基本信息包括公司名称或ID、类型、成立日期、经营状态、注册资本、法人、工商注册号、统一社会信用代码、组织机构代码、纳税人识别号等字段信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_search_company\": {\n            \"name\": \"搜索企业\",\n            \"desc\": \"可以通过关键词获取企业列表，企业列表包括公司名称或ID、类型、成立日期、经营状态、统一社会信用代码等字段的详细信息\",\n            \"params\": {\n                \"query\": \"搜索关键字（公司名称、公司id、注册号或社会统一信用代码）\"\n            }\n        },\n        \"tianyancha_all_companys_by_company\": {\n            \"name\": \"人员所有公司\",\n            \"desc\": \"可以通过公司名称或ID和人名获取企业人员的所有相关公司，包括其担任法人、股东、董监高的公司信息\",\n            \"params\": {\n                \"query\": \"human who you want to search\",\n                \"name\": \"company name which human worked\"\n            }\n        },\n        \"jina_get_markdown\": {\n            \"name\": \"获取单网页\",\n            \"desc\": \"爬取指定URL（支持pdf），并将其转换为适合大模型处理的markdown格式\",\n            \"params\": {\n                \"target_url\": \"要获取的目标网页\"\n            }\n        },\n        \"web_search\": {\n            \"name\": \"联网搜索\",\n            \"desc\": \"使用 query 进行联网检索并返回结果。\",\n            \"params\": {\n                \"query\": \"query to look up in Bing search\"\n            }\n        },\n        \"dalle_image_generator\": {\n            \"name\": \"Dalle3绘画\",\n            \"desc\": \"根据提示词生成图像。\",\n            \"params\": {\n                \"query\": \"Description about image.\"\n            }\n        },\n        \"fire_search_crawl\": {\n            \"name\": \"深度爬取|对应 Crawl 模式\",\n            \"desc\": \"爬取并返回指定 URL 以及所有可访问子页面的内容。\",\n            \"params\": {\n                \"target_url\": \"要爬取网站的起始 url。\"\n            }\n        },\n        \"fire_search_scrape\": {\n            \"name\": \"单页面爬取|对应 Scrape 模式\",\n            \"desc\": \"爬取并返回指定 URL 页面的内容，不会爬取子页面。\",\n            \"params\": {\n                \"target_url\": \"要爬取的网站 url\"\n            }\n        },\n        \"silicon_flux\": {\n            \"name\": \"Flux\",\n            \"desc\": \"使用Flux模型，根据用户提示词生成图像\",\n            \"params\": {\n                \"prompt\": \"提示词生成图片描述词（建议使用英文）\"\n            }\n        },\n        \"silicon_stable_diffusion\": {\n            \"name\": \"Stable diffusion\",\n            \"desc\": \"使用Stable Diffusion模型，根据用户提示词生成图像\",\n            \"params\": {\n                \"prompt\": \"提示词生成图片描述词\",\n                \"negative_prompt\": \"不希望图片包含的内容\"\n            }\n        },\n        \"feishu_get_chat_messages\": {\n            \"name\": \"获取指定单聊、群聊的历史消息\",\n            \"desc\": \"支持在单聊或群聊中快速获取相关内容\",\n            \"params\": {\n                \"container_id\": \"单聊或群聊的id，或话题 id\",\n                \"container_id_type\": \"容器类型。 可选值有： chat：包含单聊（p2p）和群聊（group）； thread：话题 。\",\n                \"start_time\": \"待查询历史信息的起始时间，秒级时间戳。 注意：thread 容器类型暂不支持获取指定时间范围内的消息。\",\n                \"end_time\": \"待查询历史信息的结束时间，秒级时间戳。注意：thread 容器类型暂不支持获取指定时间范围内的消息。\",\n                \"page_size\": \"分页大小，单次请求所返回的数据条目数，默认值20，取值范围1~50。\",\n                \"sort_type\": \"可选值有：ByCreateTimeAsc（按消息创建时间升序排列）；ByCreateTimeDesc（按消息创建时间降序排列）\",\n                \"page_token\": \"分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果\"\n            }\n        },\n        \"feishu_send_message\": {\n            \"name\": \"向指定用户或者群聊发送消息\",\n            \"desc\": \"向指定用户或者群聊发送消息\",\n            \"params\": {\n                \"message\": \"发送的文本消息内容\",\n                \"receive_id\": \"消息接收者的id\",\n                \"receive_id_type\": \"用户id类型，可选值：open_id（标识一个用户在某个应用中的身份）；union_id（标识一个用户在某个应用开发商下的身份）；user_id（标识一个用户在某个租户内的身份）；email（以用户的真实邮箱来标识用户）；chat_id（以群 ID 来标识群聊）\"\n            }\n        },\n        \"bing_search\": {\n            \"name\": \"Bing web搜索\",\n            \"desc\": \"使用 query 进行 Bing 搜索并返回返回结果。\",\n            \"params\": {\n                \"query\": \"query to look up in Bing search\"\n            }\n        },\n        \"email_send_email\": {\n            \"name\": \"发送邮件\",\n            \"desc\": \"给单个或多个邮箱发送邮件（多个邮箱账号使用\\\",\\\"分隔）\",\n            \"params\": {\n                \"receiver\": \"接受邮件的邮箱地址，确定邮件发送对象\",\n                \"subject\": \"邮件主题\",\n                \"content\": \"邮件的正文内容\"\n            }\n        },\n        \"wechat_send_message\": {\n            \"name\": \"发送企业微信群消息\",\n            \"desc\": \"通过企业微信群机器人，快速将消息推送到指定企业微信群组中\",\n            \"params\": {\n                \"url\": \"微信机器人的webhook地址\",\n                \"message\": \"发送的消息内容\"\n            }\n        },\n        \"ding_send_message\": {\n            \"name\": \"发送钉钉群消息\",\n            \"desc\": \"通过钉钉群机器人，快速将消息推送到指定钉钉群组中\",\n            \"params\": {\n                \"url\": \"自定义机器人的Wehhook地址\",\n                \"message\": \"发送的文本消息内容\"\n            }\n        },\n        \"arxiv\": {\n            \"name\": \"论文获取\",\n            \"desc\": \"从 Arxiv 网站检索论文的工具，输入为检索关键词。\",\n            \"params\": {\n                \"query\": \"search query to look up\"\n            }\n        },\n        \"calculator\": {\n            \"name\": \"计算器\",\n            \"desc\": \"使用 Python 内置工具进行数学表达式计算\",\n            \"params\": {}\n        },\n        \"macro_bond_zh_us_rate\": {\n            \"name\": \"中美国债收益率\",\n            \"desc\": \"本接口返回指定时间段[start_date,end_date]内交易日的中美两国的 2 年、5 年、10 年、30 年、10 年-2 年收益率数据。start_date表示起始日期，end_date表示结束日期，日期格式例如 2024-04-07\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_pmi\": {\n            \"name\": \"PMI\",\n            \"desc\": \"中国 PMI （采购经理人指数）月度统计数据。返回数据包括：月份制造业 PMI，制造业 PMI 同比增长，非制造业 PMI，非制造业 PMI 同比增长。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_consumer_goods_retail\": {\n            \"name\": \"社会消费品零售总额\",\n            \"desc\": \"中国社会消费品零售总额月度统计数据。返回数据包括：月份，当月总额以及同、环比，当年累计总额以及同比情况。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_money_supply\": {\n            \"name\": \"货币供应量\",\n            \"desc\": \"中国货币供应量月度统计数据。返回数据包括：月份，当月 M0、M1、M2数量以及同、环比情况。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_ppi\": {\n            \"name\": \"PPI\",\n            \"desc\": \"中国工业品出厂价格指数（PPI）月度统计数据。返回数据包括：月份，当月 PPI，当月同比增长，当年 PPI 累计值。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_cpi\": {\n            \"name\": \"CPI\",\n            \"desc\": \"中国居民消费价格指数(CPI，上年同月=100)月度统计数据。返回数据包括：月份，全国当月 CPI，全国当月同比增长，全国当月环比增长，全国当年 CPI 累计值；城市当月 CPI，城市当月同比增长，城市当月环比增长，城市当年 CPI 累计值；农村当月 CPI，农村当月同比增长，农村当月环比增长，农村当年 CPI 累计值。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_gdp_yearly\": {\n            \"name\": \"GDP\",\n            \"desc\": \" 中国国内生产总值（GDP）季度统计数据。返回数据包括：季度，当年累计GDP 绝对值及同比增长情况，第一、二、三产业 GDP 绝对值以及同比增长情况。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"macro_china_shrzgm\": {\n            \"name\": \"社会融资规模增量\",\n            \"desc\": \"中国社会融资规模增量月度统计数据。返回数据包括：月份，社会融资规模增量(单位：亿元)，社融增量分项数据。分项数据具体包括：人民币贷款，外币贷款，委托贷款，信托贷款，未贴现银行承兑汇票，企业债券，非金融企业境内股票融资。\",\n            \"params\": {\n                \"start_date\": \"开始月份, 使用YYYY-MM-DD 方式表示\",\n                \"end_date\": \"结束月份, 使用YYYY-MM-DD 方式表示\"\n            }\n        },\n        \"sina_history_KLine\": {\n            \"name\": \"股票历史行情\",\n            \"desc\": \"查询中国A股（沪深北交易所）股票或指数的的历史行情数据，返回：时间、开盘价、最高价、最低价、收盘价、成交量（股）。\",\n            \"params\": {\n                \"date\": \"需要查询的时间，按照”2024-03-26“格式，传入日期\",\n                \"stock_exchange\": \"交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\\\"sh\\\"(上海证券交易所)、\\\" sz\\\"( 深圳证券交易所)、\\\"bj\\\"( 北京证券交易所)\",\n                \"stock_symbol\": \"6位数字的股票或者指数代码。\\n参考信息：\\n- 如果问题中未给出，可能需要上网查询。\\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\\\"sh000300\\\"和\\\"sz399300\\\"两个代码。\"\n            }\n        },\n        \"sina_realtime_info\": {\n            \"name\": \"股票实时行情\",\n            \"desc\": \"查询中国A股（沪深北交易所）股票或指数的实时行情数据，返回：现价、涨跌额、涨跌幅、成交量、成交额。\",\n            \"params\": {\n                \"prefix\": \"前缀。如果是\\\"stock_symbol\\\"传入的为股票代码，则需要传入s_;\\n如果\\\"stock_symbol\\\"传入的为指数代码，则为空。\",\n                \"stock_exchange\": \"交易所简写。股票上市的交易所，或者发布行情指数的交易所。可选项有\\\"sh\\\"(上海证券交易所)、\\\" sz\\\"( 深圳证券交易所)、\\\"bj\\\"( 北京证券交易所)\",\n                \"stock_symbol\": \"6位数字的股票或者指数代码。\\n参考信息：\\n- 如果问题中未给出，可能需要上网查询。\\n- 上交所股票通常以 6 开头，深交所股票通常以 0、3 开头，北交所股票通常以 8 开头。\\n- 上交所行情指数通常以 000 开头，深交所指数通常以 399 开头。同一个指数可能会同时在两个交易所发布，例如沪深 300 有\\\"sh000300\\\"和\\\"sz399300\\\"两个代码。\"\n            }\n        },\n        \"get_current_time\": {\n            \"name\": \"时间\",\n            \"desc\": \"返回当前时间，如果未指定时区，将使用 UTC+8 时间\",\n            \"params\": {}\n        }\n    },\n    \"addMcpServer\": \"添加 MCP 服务器\",\n    \"refresh\": \"刷新\",\n    \"refreshSuccess\": \"刷新成功\",\n    \"toolFetchFailed\": \"工具获取失败\",\n    \"executionModeLabel\": \"代码执行方式\",\n    \"executionLocalLabel\": \"本机运行\",\n    \"executionE2bLabel\": \"E2B沙箱运行\",\n    \"serviceProviderLabel\": \"服务提供方\",\n    \"providerPrivateLabel\": \"自托管\",\n    \"providerPrivateTooltip\": \"需要提前在您的本地环境部署 E2B，并将 domain 指向自托管地址，API Key 鉴权由您部署的 E2B 后台处理。\",\n    \"providerOfficialLabel\": \"官方云\",\n    \"providerOfficialTooltip\": \"使用 E2B 官方云服务，需要从 E2B 官方获取 API Key。\",\n    \"domainCannotBeEmpty\": \"Domain 不能为空\",\n    \"apiKeyCannotBeEmpty\": \"API Key 不能为空\",\n    \"enterApiKeyPlaceholder\": \"请输入API Key\",\n    \"enterApiKey\": \"请输入 API Key\",\n    \"timeoutTooltip\": \"爬虫在中止操作之前等待页面响应的最长持续时间（以毫秒为单位）。\",\n    \"deepCrawlDetailConfigDescription\": \"深度爬取详细配置（以下配置修改仅对 Crawl 有效）\",\n    \"maxdepthTooltip\": \"相对于输入的 URL 进行抓取的最大深度。\",\n    \"limitTooltip\": \"要抓取的最大页面数。\",\n    \"azureEndpointPlaceholder\": \"格式示例：https://xxx.openai.azure.com/\",\n    \"openaiApiVersionPlaceholder\": \"格式示例：2024-02-01\",\n    \"emailAccountLabel\": \"email_account（发件人邮箱账号）\",\n    \"emailPasswordLabel\": \"email_password（发件人邮箱密码）\",\n    \"smtpServerLabel\": \"smtp_server（发信 SMTP 服务器地址）\",\n    \"smtpPortLabel\": \"smtp_port（发信 SMTP 服务器端口）\",\n    \"encryptMethodLabel\": \"encrypt_method（发信服务器加密方式）\",\n    \"encryptMethodNoneLabel\": \"无加密\",\n    \"encryptMethodSslLabel\": \"SSL 加密\",\n    \"encryptMethodStarttlsLabel\": \"STARTTLS 加密\",\n    \"invalidEmailMessage\": \"请输入有效的邮箱地址\",\n    \"invalidSmtpServerMessage\": \"请输入有效的SMTP服务器地址\",\n    \"invalidPortMessage\": \"请输入有效的端口号\",\n    \"feishuAppIdTooltip\": \"应用唯一的标识。\",\n    \"feishuAppSecretTooltip\": \"应用的密钥，在创建应用时由平台生成。\",\n    \"pleaseSelect\": \"请选择\",\n    \"fieldCannotBeEmpty\": \"{{label}} 不能为空\",\n    \"jinaApiKeyLabel\": \"Jina API 密钥\",\n    \"siliconflowApiKeyLabel\": \"SiliconFlow API 密钥\",\n    \"uploadFile\": \"上传文件\",\n    \"organizeKnowledgeBase\": \"组织知识库\",\n    \"个人知识库\": \"个人知识库\",\n    \"知识库和文件内容检索\": \"知识库和文件内容检索\",\n    \"知识库和文件内容检索desc\": \"检索组织知识库、个人知识库以及本地上传文件的内容。\",\n    \"文件操作\": \"文件操作\",\n    \"文件操作desc\": \"本地文件系统的浏览、搜索与编辑工具集\",\n    \"获取所有文件和目录\": \"获取所有文件和目录\",\n    \"获取所有文件和目录desc\": \"列出指定目录下的所有文件和子目录。\",\n    \"获取文件详细信息\": \"获取文件详细信息\",\n    \"获取文件详细信息desc\": \"获取指定文件的文件名、文件大小、文件地址、字数、行数等详细信息。\",\n    \"搜索文件\": \"搜索文件\",\n    \"搜索文件desc\": \"在指定目录中搜索文件和子目录。\",\n    \"读取文件内容\": \"读取文件内容\",\n    \"读取文件内容desc\": \"读取本地文本文件的内容。\",\n    \"写入文件内容\": \"写入文件内容\",\n    \"写入文件内容desc\": \"将文本内容追加到文本文件，如果文件不存在，则创建文件\",\n    \"替换文件指定行范围内容\": \"替换文件指定行范围内容\",\n    \"替换文件指定行范围内容desc\": \"替换文件中的指定行范围。\"\n}"
  },
  {
    "path": "src/frontend/platform/public/models/data.json",
    "content": "{\n    \"openai\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"gpt-4o\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"text-embedding-ada-002\",\n            \"model_type\": \"embedding\"\n        }\n    ],\n    \"azure_openai\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"gpt-4o\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"text-embedding-ada-002\",\n            \"model_type\": \"embedding\"\n        }\n    ],\n    \"qwen\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"qwen2.5-72b-instruct\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"qwen-max\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 3\",\n            \"model_name\": \"qwq-plus\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 4\",\n            \"model_name\": \"text-embedding-v3\",\n            \"model_type\": \"embedding\"\n        }\n    ],\n    \"deepseek\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"deepseek-chat\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"deepseek-reasoner\",\n            \"model_type\": \"llm\"\n        }\n    ],\n    \"qianfan\": [{\n        \"name\": \"model 1\",\n        \"model_name\": \"ernie-4.0-8k\",\n        \"model_type\": \"llm\"\n    }],\n    \"tencent\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"hunyuan-turbos-latest\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"hunyuan-t1-latest\",\n            \"model_type\": \"llm\"\n        }\n    ],\n    \"moonshot\": [{\n        \"name\": \"model 1\",\n        \"model_name\": \"moonshot-v1-32k\",\n        \"model_type\": \"llm\"\n    }],\n    \"zhipu\": [{\n        \"name\": \"model 1\",\n        \"model_name\": \"glm-4-plus\",\n        \"model_type\": \"llm\"\n    }],\n    \"minimax\": [{\n        \"name\": \"model 1\",\n        \"model_name\": \"MiniMax-Text-01\",\n        \"model_type\": \"llm\"\n    }],\n    \"volcengine\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"deepseek-v3\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"deepseek-r1\",\n            \"model_type\": \"llm\"\n        }\n    ],\n    \"silicon\": [{\n            \"name\": \"model 1\",\n            \"model_name\": \"deepseek-ai/DeepSeek-R1\",\n            \"model_type\": \"llm\"\n        },\n        {\n            \"name\": \"model 2\",\n            \"model_name\": \"deepseek-ai/DeepSeek-V3\",\n            \"model_type\": \"llm\"\n        }\n    ]\n}"
  },
  {
    "path": "src/frontend/platform/public/template.csv",
    "content": "﻿question,ground_truth,,,,,,,,\n公司2023年的研发费⽤占营业收⼊的⽐例是多少？,根据提供的信息，公司2021年的研发费⽤占营业收⼊的⽐例为15.86%。 根据公司招股书披露数据，公司2021年的研发费⽤占营业收⼊的⽐例为15.86%,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,\n,,,,,,,,,"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/css/content-theme/ant-design.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n\n.vditor-reset {\n    color: rgba(0, 0, 0, .85);\n    font-size: 14px;\n    line-height: 2;\n}\n\n.vditor-reset img {\n    max-width: calc(100% - 32px);\n}\n\n.vditor-reset p > img {\n    margin: 34px 0;\n    box-shadow: 0 8px 20px rgba(143, 168, 191, 0.35);\n}\n\n.vditor-reset h1 {\n    margin-bottom: 20px;\n    color: rgba(0, 0, 0, .85);\n    font-weight: 500;\n    font-size: 30px;\n    font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif;\n    line-height: 38px\n}\n\n.vditor-reset h2 {\n    font-size: 24px;\n    line-height: 32px;\n}\n\n.vditor-reset h2,\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n    clear: both;\n    margin: 1.6em 0 .6em;\n    color: rgba(0, 0, 0, .85);\n    font-weight: 500;\n    font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif\n}\n\n.vditor-reset h3 {\n    font-size: 18px;\n}\n\n.vditor-reset h4 {\n    font-size: 16px;\n}\n\n.vditor-reset h5 {\n    font-size: 14px;\n}\n\n.vditor-reset h6 {\n    font-size: 12px;\n}\n\n.vditor-reset hr {\n    clear: both;\n    height: 1px;\n    margin: 56px 0;\n    background: #f0f0f0;\n    border: 0;\n}\n\n.vditor-reset p,\n.vditor-reset pre {\n    margin: 1em 0;\n}\n\n.vditor-reset ul > li {\n    margin-left: 20px;\n    padding-left: 4px;\n    list-style-type: circle;\n}\n\n.vditor-reset ol > li {\n    margin-left: 20px;\n    padding-left: 4px;\n    list-style-type: decimal;\n}\n\n.vditor-reset ul > li > p,\n.vditor-reset ol > li > p {\n    margin: 0.2em 0;\n}\n\n.vditor-reset code {\n    margin: 0 1px;\n    padding: .2em .4em;\n    font-size: .9em;\n    border-radius: 3px;\n    border: 1px solid #f0f0f0;\n    font-family: sfmono-regular, Consolas, liberation mono, Menlo, Courier, monospace;\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background: #f2f4f5;\n    color: rgba(0, 0, 0, .65);\n}\n\n.vditor-reset pre {\n    font-family: sfmono-regular, Consolas, liberation mono, Menlo, Courier, monospace;\n    border-radius: 2px;\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: rgba(0, 0, 0, .85);\n}\n\n.vditor-reset .language-graphviz polygon {\n    fill: transparent;\n}\n\n.vditor-reset strong,\n.vditor-reset b {\n    font-weight: 500;\n}\n\n.vditor-reset > table {\n    width: 100%;\n    margin: 8px 0 16px;\n    direction: ltr;\n    empty-cells: show;\n    border: 1px solid #f0f0f0;\n    border-collapse: collapse;\n    border-spacing: 0\n}\n\n.vditor-reset > table th {\n    color: #5c6b77;\n    font-weight: 500;\n    white-space: nowrap;\n    background: rgba(0, 0, 0, .02)\n}\n\n.vditor-reset > table th, .vditor-reset > table td {\n    padding: 16px 24px;\n    text-align: left;\n    border: 1px solid #f0f0f0\n}\n\n.vditor-reset blockquote {\n    margin: 1em 0;\n    padding-left: .8em;\n    color: rgba(0, 0, 0, .45);\n    font-size: 90%;\n    border-left: 4px solid #f0f0f0\n}\n\n.vditor-reset blockquote p {\n    margin: 0;\n}\n\n.vditor-reset .vditor-anchor {\n    margin-left: 8px;\n    opacity: 0;\n    transition: opacity 0.3s;\n}\n\n.vditor-reset h1:hover .vditor-anchor,\n.vditor-reset h2:hover .vditor-anchor,\n.vditor-reset h3:hover .vditor-anchor,\n.vditor-reset h4:hover .vditor-anchor,\n.vditor-reset h5:hover .vditor-anchor,\n.vditor-reset h6:hover .vditor-anchor {\n    display: inline-block;\n    opacity: 1;\n}\n\n.vditor-reset > br,\n.vditor-reset > p > br {\n    clear: both;\n}\n\n.vditor-reset a, .vditor-ir__link {\n    color: #1890ff;\n    text-decoration: none;\n    outline: none;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/css/content-theme/dark.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset {\n    color: #d1d5da;\n}\n\n.vditor-reset a, .vditor-ir__link {\n    color: #4285f4;\n}\n\n.vditor-reset h1, .vditor-reset h2 {\n    padding-bottom: 0.3em;\n    border-bottom: 1px solid #d1d5da\n}\n\n.vditor-reset hr {\n    background-color: #d1d5da\n}\n\n.vditor-reset blockquote {\n    padding: 0 1em;\n    color: #b9b9b9;\n    border-left: .25em solid #d1d5da\n}\n\n.vditor-reset iframe {\n    border: 1px solid #141414\n}\n\n.vditor-reset table tr {\n    background-color: #2f363d\n}\n\n.vditor-reset table td, .vditor-reset table th {\n    border: 1px solid #dfe2e5\n}\n\n.vditor-reset table tbody tr:nth-child(2n) {\n    background-color: #24292e\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(66, 133, 244, .36);\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: #d1d5da;\n}\n\n.language-graphviz polygon {\n    fill: rgba(66, 133, 244, .36);\n}\n\n.vditor-reset kbd {\n    color: #d1d5da;\n    background-color: #2f363d;\n    border: 1px solid #141414;\n    box-shadow: inset 0 -1px 0 #141414\n}\n\n.vditor-copy svg {\n    color: #b9b9b9\n}\n\n.vditor-speech {\n    background-color: #1d2125;\n    border: 1px solid #141414;\n    color: #b9b9b9\n}\n\n.vditor-speech--current, .vditor-speech:hover {\n    color: #fff\n}\n\n.vditor-linkcard a {\n    background-color: #1d2125;\n}\n\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n    color: hsla(0, 0%, 72.5%, .36)\n}\n\n.vditor-linkcard__title {\n    color: #d1d5da\n}\n\n.vditor-linkcard__abstract {\n    color: #b9b9b9\n}\n\n.vditor-linkcard__site {\n    color: #fff\n}\n\n.vditor-linkcard__image {\n    background-color: hsla(0, 0%, 72.5%, .36)\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/css/content-theme/light.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset h1, .vditor-reset h2 {\n    padding-bottom: 0.3em;\n    border-bottom: 1px solid #eaecef;\n}\n\n.vditor-reset hr {\n    background-color: #eaecef;\n}\n\n.vditor-reset blockquote {\n    color: #6a737d;\n    border-left: .25em solid #eaecef\n}\n\n.vditor-reset iframe {\n    border: 1px solid #d1d5da\n}\n\n.vditor-reset table tr {\n    border-top: 1px solid #c6cbd1;\n    background-color: #fafbfc\n}\n\n.vditor-reset table td, .vditor-reset table th {\n    border: 1px solid #dfe2e5\n}\n\n.vditor-reset table tbody tr:nth-child(2n) {\n    background-color: #fff\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(27, 31, 35, .05);\n}\n\n.vditor-reset kbd {\n    color: #24292e;\n    background-color: #fafbfc;\n    border: solid 1px #d1d5da;\n    box-shadow: inset 0 -1px 0 #d1d5da;\n}\n\n.vditor-speech {\n    background-color: #f6f8fa;\n    border: 1px solid #d1d5da;\n    color: #586069;\n}\n\n.vditor-speech--current, .vditor-speech:hover {\n    color: #4285f4;\n}\n\n.vditor-linkcard a {\n    background-color: #f6f8fa;\n}\n\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n    color: rgba(88, 96, 105, 0.36);\n}\n\n.vditor-linkcard__title {\n    color: #24292e;\n}\n\n.vditor-linkcard__abstract {\n    color: #586069;\n}\n\n.vditor-linkcard__site {\n    color: #4285f4;\n}\n\n.vditor-linkcard__image {\n    background-color: rgba(88, 96, 105, 0.36);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/css/content-theme/wechat.css",
    "content": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor-reset {\n    font-family: \"mp-quote\", -apple-system-font, BlinkMacSystemFont, \"Helvetica Neue\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei UI\", \"Microsoft YaHei\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n    color: rgb(62, 62, 62);\n}\n\n.vditor-reset a, .vditor-ir__link {\n    color: #576b95;\n}\n\n.vditor-reset h1 {\n    font-weight: 400;\n    text-align: center;\n    color: rgb(26, 173, 25);\n    font-size: 24px;\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAAGElEQVQImWNkXs/wn4GKgImahjEwMDAAAA6aAbVUOzXRAAAAAElFTkSuQmCC);\n    background-repeat: no-repeat;\n    background-position: center bottom;\n}\n\n.vditor-reset h2 {\n    font-weight: 400;\n    text-align: center;\n    font-size: 20px;\n}\n\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n    font-weight: 400;\n}\n\n.vditor-reset hr {\n    border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n    transform-origin: 0 0;\n    transform: scale(1, 0.5);\n    height: 0;\n}\n\n.vditor-reset blockquote {\n    padding: 4px 0 0 10px;\n    border-left: 3px solid #dbdbdb;\n    color: #9a9a9a;\n    line-height: 1.6;\n    font-size: 15px;\n    margin: 1em 0;\n}\n\n.vditor-reset code {\n    font-size: 14px;\n    border: 1px solid #f0f0f0;\n    border-radius: 2px;\n}\n\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n    background-color: rgba(0, 0, 0, 0.03);\n    color: #333;\n}\n\n.vditor-reset .language-abc svg,\n.vditor-reset .language-abc path {\n    fill: currentColor;\n    color: rgb(62, 62, 62);\n}\n\n.vditor-reset .language-graphviz polygon {\n    fill: transparent;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/index.css",
    "content": "/*!\n * Vditor v3.10.5 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n/*!\n * Vditor v3.10.5 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n.vditor {\n  --border-color: #d1d5da;\n  --second-color: rgba(88, 96, 105, 0.36);\n  --panel-background-color: #fff;\n  --panel-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n  --toolbar-background-color: #f6f8fa;\n  --toolbar-icon-color: #586069;\n  --toolbar-icon-hover-color: #4285f4;\n  --toolbar-height: 35px;\n  --toolbar-divider-margin-top: 8px;\n  --textarea-background-color: #fafbfc;\n  --textarea-text-color: #24292e;\n  --resize-icon-color: var(--toolbar-icon-color);\n  --resize-background-color: var(--toolbar-background-color);\n  --resize-hover-icon-color: var(--panel-background-color);\n  --resize-hover-background-color: var(--toolbar-icon-hover-color);\n  --count-background-color: rgba(27, 31, 35, 0.05);\n  --heading-border-color: #eaecef;\n  --blockquote-color: #6a737d;\n  --ir-heading-color: #660e7a;\n  --ir-title-color: #808080;\n  --ir-bi-color: #0033b3;\n  --ir-link-color: #008000;\n  --ir-bracket-color: #0000ff;\n  --ir-paren-color: #008000;\n}\n.vditor--dark {\n  --border-color: #141414;\n  --second-color: rgba(185, 185, 185, 0.36);\n  --panel-background-color: #24292e;\n  --panel-shadow: 0 1px 2px rgba(255, 255, 255, 0.2);\n  --toolbar-background-color: #1d2125;\n  --toolbar-icon-color: #b9b9b9;\n  --toolbar-icon-hover-color: #fff;\n  --textarea-background-color: #2f363d;\n  --textarea-text-color: #d1d5da;\n  --resize-icon-color: var(--border-color);\n  --resize-background-color: var(--second-color);\n  --resize-hover-icon-color: var(--toolbar-icon-hover-color);\n  --resize-hover-background-color: rgba(185, 185, 185, 0.86);\n  --count-background-color: rgba(66, 133, 244, 0.36);\n  --heading-border-color: var(--textarea-text-color);\n  --blockquote-color: var(--toolbar-icon-color);\n  --ir-heading-color: #9876aa;\n  --ir-title-color: #808080;\n  --ir-bi-color: #cc7832;\n  --ir-link-color: #ffc66d;\n  --ir-bracket-color: #287bde;\n  --ir-paren-color: #6a8759;\n}\n/**\n * tool tip.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 0.1.0.0, Jan 25, 2019\n */\n@-webkit-keyframes tooltip-appear {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n@keyframes tooltip-appear {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n.vditor-tooltipped {\n  position: relative;\n  cursor: pointer;\n}\n.vditor-tooltipped::after {\n  position: absolute;\n  z-index: 1000000;\n  display: none;\n  padding: 5px 8px;\n  font-size: 11px;\n  font-weight: normal;\n  -webkit-font-smoothing: subpixel-antialiased;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-wrap: break-word;\n  white-space: pre;\n  pointer-events: none;\n  content: attr(aria-label);\n  background: #3b3e43;\n  border-radius: 3px;\n  line-height: 16px;\n  opacity: 0;\n}\n.vditor-tooltipped::before {\n  position: absolute;\n  z-index: 1000001;\n  display: none;\n  width: 0;\n  height: 0;\n  color: #3b3e43;\n  pointer-events: none;\n  content: \"\";\n  border: 5px solid transparent;\n  opacity: 0;\n}\n.vditor-tooltipped--hover::before,\n.vditor-tooltipped--hover::after,\n.vditor-tooltipped:hover::before,\n.vditor-tooltipped:hover::after,\n.vditor-tooltipped:active::before,\n.vditor-tooltipped:active::after,\n.vditor-tooltipped:focus::before,\n.vditor-tooltipped:focus::after {\n  display: inline-block;\n  text-decoration: none;\n  -webkit-animation-name: tooltip-appear;\n          animation-name: tooltip-appear;\n  -webkit-animation-duration: 0.15s;\n          animation-duration: 0.15s;\n  -webkit-animation-fill-mode: forwards;\n          animation-fill-mode: forwards;\n  -webkit-animation-timing-function: ease-in;\n          animation-timing-function: ease-in;\n}\n.vditor-tooltipped__s::after,\n.vditor-tooltipped__se::after,\n.vditor-tooltipped__sw::after {\n  top: 100%;\n  right: 50%;\n  margin-top: 5px;\n}\n.vditor-tooltipped__s::before,\n.vditor-tooltipped__se::before,\n.vditor-tooltipped__sw::before {\n  top: auto;\n  right: 50%;\n  bottom: -5px;\n  margin-right: -5px;\n  border-bottom-color: #3b3e43;\n}\n.vditor-tooltipped__se::after {\n  right: auto;\n  left: 50%;\n  margin-left: -15px;\n}\n.vditor-tooltipped__sw::after {\n  margin-right: -15px;\n}\n.vditor-tooltipped__n::after,\n.vditor-tooltipped__ne::after,\n.vditor-tooltipped__nw::after {\n  right: 50%;\n  bottom: 100%;\n  margin-bottom: 5px;\n}\n.vditor-tooltipped__n::before,\n.vditor-tooltipped__ne::before,\n.vditor-tooltipped__nw::before {\n  top: -5px;\n  right: 50%;\n  bottom: auto;\n  margin-right: -5px;\n  border-top-color: #3b3e43;\n}\n.vditor-tooltipped__ne::after {\n  right: auto;\n  left: 50%;\n  margin-left: -15px;\n}\n.vditor-tooltipped__nw::after {\n  margin-right: -15px;\n}\n.vditor-tooltipped__s::after,\n.vditor-tooltipped__n::after {\n  transform: translateX(50%);\n}\n.vditor-tooltipped__w::after {\n  right: 100%;\n  bottom: 50%;\n  margin-right: 5px;\n  transform: translateY(50%);\n}\n.vditor-tooltipped__w::before {\n  top: 50%;\n  bottom: 50%;\n  left: -5px;\n  margin-top: -5px;\n  border-left-color: #3b3e43;\n}\n.vditor-tooltipped__e::after {\n  bottom: 50%;\n  left: 100%;\n  margin-left: 5px;\n  transform: translateY(50%);\n}\n.vditor-tooltipped__e::before {\n  top: 50%;\n  right: -5px;\n  bottom: 50%;\n  margin-top: -5px;\n  border-right-color: #3b3e43;\n}\n@media screen and (max-width: 520px) {\n  .vditor-tooltipped:before,\n  .vditor-tooltipped:after {\n    content: none;\n  }\n}\n/**\n * panel.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 1.0.0.0, Jan 22, 2020\n */\n@-webkit-keyframes scale-in {\n  0% {\n    opacity: 0;\n    transform: scale(0.5);\n  }\n  100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n@keyframes scale-in {\n  0% {\n    opacity: 0;\n    transform: scale(0.5);\n  }\n  100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n.vditor-panel {\n  background-color: var(--panel-background-color);\n  position: absolute;\n  box-shadow: var(--panel-shadow);\n  border-radius: 3px;\n  padding: 5px;\n  z-index: 3;\n  font-size: 14px;\n  display: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  max-width: 320px;\n  min-width: 80px;\n  -webkit-animation-duration: 0.15s;\n          animation-duration: 0.15s;\n  -webkit-animation-name: scale-in;\n          animation-name: scale-in;\n  -webkit-animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n          animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n  color: var(--toolbar-icon-color);\n}\n.vditor-panel--none {\n  padding: 0;\n  -webkit-animation: none;\n          animation: none;\n  min-width: auto;\n  max-width: none;\n  white-space: nowrap;\n  opacity: 0.86;\n}\n.vditor-panel--arrow:before {\n  position: absolute;\n  width: 0;\n  height: 0;\n  pointer-events: none;\n  content: \" \";\n  border: 7px solid transparent;\n  top: -14px;\n  left: 5px;\n  border-bottom-color: var(--panel-background-color);\n}\n.vditor-panel--left {\n  right: 0;\n}\n.vditor-panel--left.vditor-panel--arrow:before {\n  right: 5px;\n  left: auto;\n}\n.vditor-input {\n  border: 0;\n  padding: 3px 5px;\n  background-color: var(--panel-background-color);\n  font-size: 12px;\n  color: var(--textarea-text-color);\n}\n.vditor-input:focus {\n  background-color: var(--toolbar-background-color);\n  outline: none;\n}\n.vditor-icon {\n  color: var(--toolbar-icon-color);\n  cursor: pointer;\n  float: left;\n  padding: 4px 5px;\n  height: 21px;\n  width: 23px;\n  background-color: transparent;\n  border: 0;\n  box-sizing: border-box;\n}\n.vditor-icon:hover,\n.vditor-icon--current {\n  color: var(--toolbar-icon-hover-color);\n  background-color: transparent;\n}\n.vditor-icon:focus {\n  outline: none;\n}\n.vditor-icon svg {\n  height: 13px !important;\n  width: 13px !important;\n  float: left;\n  fill: currentColor;\n  pointer-events: none;\n}\n.vditor-toolbar {\n  background-color: var(--toolbar-background-color);\n  border-bottom: 1px solid var(--border-color);\n  padding: 0 5px;\n  line-height: 1;\n}\n.vditor-toolbar--pin {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1;\n}\n.vditor-toolbar--hide {\n  transition: all 0.15s ease-in-out;\n  height: 5px;\n  overflow: hidden;\n}\n.vditor-toolbar--hide:hover {\n  background-color: var(--toolbar-background-color);\n  height: auto;\n  overflow: visible;\n}\n.vditor-toolbar__item {\n  float: left;\n  position: relative;\n}\n.vditor-toolbar__item .vditor-tooltipped {\n  color: var(--toolbar-icon-color);\n  border: 0;\n  padding: 10px 5px;\n  background-color: transparent;\n  height: var(--toolbar-height);\n  width: 25px;\n  box-sizing: border-box;\n  font-size: 0;\n}\n.vditor-toolbar__item .vditor-tooltipped:focus {\n  outline: none;\n}\n.vditor-toolbar__item .vditor-tooltipped:focus {\n  cursor: pointer;\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-toolbar__item svg {\n  fill: currentColor;\n  display: inline-block;\n  stroke-width: 0;\n  stroke: currentColor;\n  width: 15px;\n  height: 15px;\n}\n.vditor-toolbar__item input {\n  position: absolute;\n  width: 25px;\n  height: var(--toolbar-height);\n  top: 0;\n  left: 0;\n  cursor: pointer;\n  opacity: 0.001;\n  overflow: hidden;\n}\n.vditor-toolbar__divider {\n  float: left;\n  height: calc(var(--toolbar-height) - (var(--toolbar-divider-margin-top) * 2));\n  border-left: 1px solid var(--second-color);\n  margin: var(--toolbar-divider-margin-top) 8px;\n}\n.vditor-toolbar__br {\n  width: 100%;\n  padding: 0 !important;\n  height: 0 !important;\n}\n.vditor-menu--current {\n  color: var(--toolbar-icon-hover-color) !important;\n}\n.vditor-menu--disabled {\n  color: var(--second-color) !important;\n  cursor: not-allowed !important;\n}\n.vditor-emojis {\n  display: inline-block;\n  overflow: auto;\n}\n.vditor-emojis::-webkit-scrollbar {\n  display: none;\n}\n.vditor-emojis__tip {\n  flex: 1;\n  min-width: 1px;\n  width: 200px;\n  margin-right: 10px;\n  color: var(--toolbar-icon-color);\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.vditor-emojis__tail {\n  margin-top: 5px;\n  font-size: 12px;\n  color: var(--toolbar-icon-color);\n  display: flex;\n}\n.vditor-emojis__tail a {\n  text-decoration: none;\n  color: var(--toolbar-icon-color);\n}\n.vditor-emojis__tail a:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-emojis button {\n  cursor: pointer;\n  border-radius: 3px;\n  float: left;\n  height: 30px;\n  width: 30px;\n  text-align: center;\n  line-height: 26px;\n  padding: 3px;\n  box-sizing: border-box;\n  font-size: 16px;\n  transition: all 0.15s ease-in-out;\n  border: 0;\n  margin: 0;\n  background-color: transparent;\n  overflow: hidden;\n}\n.vditor-emojis button:focus {\n  outline: none;\n}\n.vditor-emojis button:hover .vditor-emojis__icon {\n  display: inline-block;\n  transform: scale(1.2);\n}\n.vditor-emojis img {\n  height: 20px;\n  width: 20px;\n  float: left;\n  margin: 3px 0 0 3px;\n}\n@media screen and (max-width: 520px) {\n  .vditor-toolbar__item {\n    padding: 0 12px;\n  }\n  .vditor-panel--left.vditor-panel--arrow:before {\n    right: 17px;\n  }\n}\n@media (hover: hover) and (pointer: fine) {\n  .vditor-toolbar__item .vditor-tooltipped:hover {\n    color: var(--toolbar-icon-hover-color);\n  }\n}\n@-webkit-keyframes slideInDown {\n  from {\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n  to {\n    transform: translate3d(0, 0, 0);\n  }\n}\n@keyframes slideInDown {\n  from {\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n  to {\n    transform: translate3d(0, 0, 0);\n  }\n}\n.vditor {\n  display: flex;\n  flex-direction: column;\n  border: 1px solid var(--border-color);\n  border-radius: 3px;\n  box-sizing: border-box;\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n}\n.vditor--fullscreen {\n  position: fixed;\n  top: 0;\n  width: 100% !important;\n  left: 0;\n  height: 100vh !important;\n  z-index: 90;\n  border-radius: 0;\n}\n.vditor-content {\n  display: flex;\n  min-height: 60px;\n  flex: 1;\n  min-width: 1px;\n  position: relative;\n}\n.vditor-preview {\n  flex: 1;\n  min-width: 1px;\n  overflow: auto;\n  margin-left: -1px;\n  border-left: 1px solid var(--border-color);\n  box-sizing: border-box;\n  border-radius: 0 0 3px 0;\n  background-color: var(--textarea-background-color);\n}\n.vditor-preview::-webkit-scrollbar {\n  display: none;\n}\n.vditor-preview__action {\n  text-align: center;\n  padding: 10px;\n  background-color: var(--toolbar-background-color);\n}\n.vditor-preview__action button {\n  background-color: var(--toolbar-background-color);\n  color: var(--toolbar-icon-color);\n  line-height: 20px;\n  border: 0;\n  margin: 0 10px;\n  cursor: pointer;\n  padding: 0 7px;\n  font-size: 12px;\n}\n.vditor-preview__action button.vditor-preview__action--current,\n.vditor-preview__action button:hover {\n  color: var(--toolbar-icon-hover-color);\n  background-color: var(--toolbar-background-color);\n}\n.vditor-preview__action button:focus {\n  outline: none;\n}\n.vditor-preview__action button svg {\n  fill: currentColor;\n  height: 15px;\n  width: 15px;\n  vertical-align: middle;\n}\n.vditor-preview > .vditor-reset {\n  padding: 10px;\n  margin: 0 auto;\n}\n.vditor-preview img:not(.emoji) {\n  cursor: pointer;\n}\n.vditor-devtools {\n  display: none;\n  background-color: var(--textarea-background-color);\n  overflow: auto;\n  flex: 1;\n  min-width: 1px;\n  box-shadow: inset 1px 0 var(--border-color);\n  box-sizing: border-box;\n  border-radius: 0 0 3px 0;\n  padding: 10px;\n}\n.vditor-counter {\n  padding: 3px;\n  color: var(--toolbar-icon-color);\n  background-color: var(--count-background-color);\n  border-radius: 3px;\n  font-size: 12px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  float: right;\n  margin: 8px 3px 0 0;\n}\n.vditor-counter--error {\n  color: #d23f31;\n  background-color: rgba(210, 63, 49, 0.1);\n}\n.vditor-resize {\n  padding: 3px 0;\n  cursor: row-resize;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  position: absolute;\n  width: 100%;\n}\n.vditor-resize--top {\n  top: -3px;\n}\n.vditor-resize--bottom {\n  bottom: -3px;\n}\n.vditor-resize > div {\n  height: 3px;\n  background-color: var(--resize-background-color);\n  transition: all 0.15s ease-in-out;\n}\n.vditor-resize:hover > div,\n.vditor-resize--selected > div {\n  background-color: var(--resize-hover-background-color);\n}\n.vditor-resize:hover svg,\n.vditor-resize--selected svg {\n  color: var(--resize-hover-icon-color);\n}\n.vditor-resize svg {\n  fill: currentColor;\n  stroke-width: 0;\n  stroke: currentColor;\n  width: 13px;\n  height: 3px;\n  display: block;\n  margin: 0 auto;\n  color: var(--resize-icon-color);\n}\n.vditor-upload {\n  position: absolute;\n  height: 3px;\n  left: 0;\n  top: -2px;\n  transition: all 0.15s ease-in-out;\n  background-color: #4285f4;\n}\n.vditor-tip {\n  position: absolute;\n  font-size: 12px;\n  top: 10px;\n  -webkit-animation-duration: 0.15s;\n          animation-duration: 0.15s;\n  -webkit-animation-fill-mode: both;\n          animation-fill-mode: both;\n  left: 50%;\n  z-index: 5;\n}\n.vditor-tip--show {\n  display: block;\n  -webkit-animation-name: slideInDown;\n          animation-name: slideInDown;\n}\n.vditor-tip__content {\n  text-align: left;\n  display: inline-block;\n  line-height: 16px;\n  padding: 3px 10px;\n  border-radius: 3px;\n  background: var(--toolbar-background-color);\n  position: relative;\n  margin-left: -50%;\n  color: var(--toolbar-icon-color);\n  max-width: 100%;\n  box-shadow: var(--panel-shadow);\n}\n.vditor-tip__content ul {\n  margin: 2px 0;\n  padding: 0 0 0 18px;\n}\n.vditor-tip__content a {\n  color: #4285f4;\n}\n.vditor-tip__close {\n  position: absolute;\n  color: var(--toolbar-icon-color);\n  top: -7px;\n  right: -15px;\n  font-weight: bold;\n  cursor: pointer;\n}\n.vditor-tip__close:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-img {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  flex-direction: column;\n  z-index: 100;\n}\n.vditor-img__bar {\n  border-bottom: 1px solid var(--border-color);\n  background-color: var(--toolbar-background-color);\n  text-align: center;\n  height: 36px;\n  box-sizing: border-box;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.vditor-img__btn {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  margin-left: 24px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  color: var(--toolbar-icon-color);\n}\n.vditor-img__btn:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-img__btn svg {\n  height: 14px;\n  width: 14px;\n  margin-right: 8px;\n  fill: currentColor;\n}\n.vditor-img__img {\n  flex: 1;\n  background-color: var(--textarea-background-color);\n  overflow: auto;\n  cursor: zoom-out;\n}\n.vditor-img__img img {\n  max-width: none;\n}\n.vditor-hint {\n  background-color: var(--panel-background-color);\n  position: absolute;\n  box-shadow: var(--panel-shadow);\n  border-radius: 3px;\n  padding: 5px 0;\n  z-index: 4;\n  line-height: 20px;\n  list-style: none;\n  font-size: 12px;\n  margin: 0;\n  max-width: 250px;\n  min-width: 80px;\n  display: none;\n}\n.vditor-hint .vditor-hint {\n  margin-top: -31px;\n  left: 100%;\n  right: auto;\n}\n.vditor-hint .vditor-hint.vditor-panel--left {\n  right: 100%;\n  left: auto;\n}\n.vditor-hint button {\n  color: var(--toolbar-icon-color);\n  display: block;\n  padding: 3px 10px;\n  border: 0;\n  border-radius: 0;\n  line-height: 20px;\n  width: 100%;\n  box-sizing: border-box;\n  text-align: left;\n  margin: 0;\n  background-color: transparent;\n  cursor: pointer;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.vditor-hint button:focus {\n  outline: none;\n}\n.vditor-hint--current,\n.vditor-hint button:not(.vditor-menu--disabled):hover {\n  background-color: var(--toolbar-background-color) !important;\n  color: var(--toolbar-icon-hover-color) !important;\n}\n.vditor-hint__emoji {\n  font-size: 16px;\n  float: left;\n  margin-right: 3px;\n}\n.vditor-hint img {\n  height: 20px;\n  width: 20px;\n  float: left;\n  margin-right: 3px;\n}\n.vditor-reset {\n  color: #24292e;\n  font-variant-ligatures: no-common-ligatures;\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  word-wrap: break-word;\n  overflow: auto;\n  line-height: 1.5;\n  font-size: 16px;\n  word-break: break-word;\n}\n.vditor-reset--anchor {\n  padding-left: 20px;\n}\n.vditor-reset--error {\n  color: #d23f31;\n  font-size: 12px;\n  display: block;\n  line-height: 16px;\n}\n.vditor-reset ul ul ul {\n  list-style-type: square;\n}\n.vditor-reset ul ul {\n  list-style-type: circle;\n}\n.vditor-reset ul {\n  list-style-type: disc;\n}\n.vditor-reset ul,\n.vditor-reset ol {\n  padding-left: 2em;\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n.vditor-reset li + li {\n  margin-top: 0.25em;\n}\n.vditor-reset li p {\n  margin-top: 16px;\n}\n.vditor-reset audio {\n  max-width: 100%;\n}\n.vditor-reset audio:focus {\n  outline: none;\n}\n.vditor-reset video {\n  max-height: 90vh;\n  max-width: 100%;\n}\n.vditor-reset img {\n  max-width: 100%;\n}\n.vditor-reset img.emoji {\n  cursor: auto;\n  max-width: 20px;\n  vertical-align: sub;\n}\n.vditor-reset h1,\n.vditor-reset h2,\n.vditor-reset h3,\n.vditor-reset h4,\n.vditor-reset h5,\n.vditor-reset h6 {\n  margin-top: 24px;\n  margin-bottom: 16px;\n  font-weight: 600;\n  line-height: 1.25;\n}\n.vditor-reset h1:hover .vditor-anchor svg,\n.vditor-reset h2:hover .vditor-anchor svg,\n.vditor-reset h3:hover .vditor-anchor svg,\n.vditor-reset h4:hover .vditor-anchor svg,\n.vditor-reset h5:hover .vditor-anchor svg,\n.vditor-reset h6:hover .vditor-anchor svg {\n  visibility: visible;\n}\n.vditor-reset h1 {\n  font-size: 1.75em;\n}\n.vditor-reset h2 {\n  font-size: 1.55em;\n}\n.vditor-reset h3 {\n  font-size: 1.38em;\n}\n.vditor-reset h4 {\n  font-size: 1.25em;\n}\n.vditor-reset h5 {\n  font-size: 1.13em;\n}\n.vditor-reset h6 {\n  font-size: 1em;\n}\n.vditor-reset hr {\n  height: 2px;\n  padding: 0;\n  margin: 24px 0;\n  background-color: #eaecef;\n  border: 0;\n}\n.vditor-reset p {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n.vditor-reset blockquote {\n  padding: 0 1em;\n  color: #6a737d;\n  border-left: 0.25em solid #eaecef;\n  margin: 0 0 16px 0;\n}\n.vditor-reset blockquote > :first-child {\n  margin-top: 0;\n}\n.vditor-reset blockquote > :last-child {\n  margin-bottom: 0;\n}\n.vditor-reset ins > iframe {\n  border: 0;\n}\n.vditor-reset iframe {\n  border: 1px solid #d1d5da;\n  max-width: 100%;\n  box-sizing: border-box;\n}\n.vditor-reset iframe.iframe__video {\n  min-width: 80%;\n  min-height: 36vh;\n}\n.vditor-reset table {\n  border-collapse: collapse;\n  empty-cells: show;\n  margin-bottom: 16px;\n  overflow: auto;\n  border-spacing: 0;\n  display: block;\n  word-break: keep-all;\n  width: 100%;\n}\n.vditor-reset table tr {\n  background-color: #fafbfc;\n  border-top: 1px solid #c6cbd1;\n}\n.vditor-reset table td,\n.vditor-reset table th {\n  padding: 6px 13px;\n  border: 1px solid #dfe2e5;\n  word-break: normal;\n  white-space: nowrap;\n}\n.vditor-reset table td:first-child::after,\n.vditor-reset table th:first-child::after {\n  content: \"\";\n  display: inline-block;\n  vertical-align: top;\n  min-height: 24px;\n}\n.vditor-reset table th {\n  font-weight: 600;\n}\n.vditor-reset table tbody tr:nth-child(2n) {\n  background-color: #fff;\n}\n.vditor-reset code:not(.hljs):not(.highlight-chroma) {\n  padding: 0.2em 0.4em;\n  margin: 0;\n  font-size: 85%;\n  border-radius: 3px;\n  font-family: mononoki, Consolas, \"Liberation Mono\", Menlo, Courier, monospace, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  word-break: break-word;\n  background-size: 20px 20px;\n  white-space: pre-wrap;\n}\n.vditor-reset pre {\n  margin: 1em 0;\n}\n.vditor-reset pre > code {\n  margin: 0;\n  font-size: 85%;\n  padding: 0.5em;\n  border-radius: 5px;\n  display: block;\n  overflow: auto;\n  white-space: pre;\n  font-family: mononoki, Consolas, \"Liberation Mono\", Menlo, Courier, monospace, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  background-size: 20px 20px;\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);\n  word-break: initial;\n  word-wrap: normal;\n}\n.vditor-reset pre:hover div.vditor-copy {\n  display: block;\n}\n.vditor-reset .language-math,\n.vditor-reset .language-echarts,\n.vditor-reset .language-mindmap,\n.vditor-reset .language-plantuml,\n.vditor-reset .language-mermaid,\n.vditor-reset .language-markmap,\n.vditor-reset .language-abc,\n.vditor-reset .language-flowchart,\n.vditor-reset .language-graphviz {\n  margin-bottom: 16px;\n}\n.vditor-reset .language-math mjx-container:focus {\n  outline: none;\n  cursor: context-menu;\n}\n.vditor-reset .language-echarts,\n.vditor-reset .language-mindmap {\n  overflow: hidden;\n  height: 420px;\n}\n.vditor-reset .language-mermaid,\n.vditor-reset .language-markmap,\n.vditor-reset .language-flowchart,\n.vditor-reset .language-graphviz {\n  text-align: center;\n}\n.vditor-reset .language-graphviz parsererror {\n  overflow: auto;\n}\n.vditor-reset kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #24292e;\n  vertical-align: middle;\n  background-color: #fafbfc;\n  border: solid 1px #d1d5da;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #d1d5da;\n}\n.vditor-reset summary {\n  cursor: pointer;\n}\n.vditor-reset summary:focus {\n  outline: none;\n}\n.vditor-reset svg {\n  height: auto;\n  width: auto;\n  stroke-width: initial;\n}\n.vditor-reset p:last-child,\n.vditor-reset blockquote:last-child,\n.vditor-reset pre:last-child,\n.vditor-reset ul:last-child,\n.vditor-reset ol:last-child,\n.vditor-reset hr:last-child {\n  margin-bottom: 0;\n}\n.vditor-comment {\n  border-bottom: 2px solid #f8e6ab;\n}\n.vditor-comment--focus,\n.vditor-comment--hover {\n  background-color: #faf1d1;\n  border-bottom: 2px solid #ffc60a;\n}\n.vditor-comment--focus .vditor-comment,\n.vditor-comment--hover .vditor-comment {\n  border-bottom: 2px solid #ffc60a;\n}\n.vditor-task {\n  list-style: none !important;\n  word-break: break-all;\n}\n.vditor-task input {\n  margin: 0 0.2em 0.25em -1.6em;\n  font-size: 12px;\n  vertical-align: middle;\n}\n.vditor-copy {\n  position: relative;\n  display: none;\n  z-index: 1;\n}\n.vditor-copy textarea {\n  position: absolute;\n  left: -100000px;\n  height: 10px;\n}\n.vditor-copy span {\n  cursor: pointer;\n  position: absolute;\n  right: 15px;\n  top: 0.5em;\n}\n.vditor-copy svg {\n  color: #586069;\n  height: 14px;\n  width: 14px !important;\n  display: block;\n  fill: currentColor;\n}\n.vditor-linenumber {\n  padding-left: 4em !important;\n  position: relative;\n}\n.vditor-linenumber__rows {\n  position: absolute;\n  pointer-events: none;\n  top: 0.5em;\n  left: 0;\n  width: 3em;\n  /* works for line-numbers below 1000 lines */\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  counter-reset: linenumber;\n}\n.vditor-linenumber__rows > span {\n  pointer-events: none;\n  display: block;\n}\n.vditor-linenumber__rows > span::before {\n  counter-increment: linenumber;\n  content: counter(linenumber);\n  color: rgba(158, 150, 150, 0.38);\n  display: block;\n  padding-right: 1em;\n  text-align: right;\n}\n.vditor-speech {\n  position: absolute;\n  display: none;\n  background-color: #f6f8fa;\n  border: 1px solid #d1d5da;\n  border-radius: 3px;\n  padding: 3px;\n  cursor: pointer;\n  color: #586069;\n}\n.vditor-speech:hover,\n.vditor-speech--current {\n  color: #4285f4;\n}\n.vditor-speech svg {\n  height: 14px;\n  width: 14px;\n  fill: currentColor;\n  display: block;\n  stroke-width: 0;\n  stroke: currentColor;\n}\n.vditor-anchor {\n  margin-left: 5px;\n}\n.vditor-anchor--left {\n  float: left;\n  padding-right: 4px;\n  margin-left: -20px;\n}\n.vditor-anchor svg {\n  visibility: hidden;\n}\n.vditor-anchor:hover svg {\n  visibility: visible;\n}\n.vditor-anchor:focus {\n  outline: none;\n}\n.vditor-linkcard {\n  margin: 31px auto 16px;\n  transition: all 0.15s ease-in-out;\n  cursor: pointer;\n  max-width: 768px;\n  padding: 0 10px;\n}\n.vditor-linkcard a {\n  border-radius: 3px;\n  background-color: #f6f8fa;\n  overflow: hidden;\n  max-height: 250px;\n  display: flex;\n  text-decoration: none;\n  flex-wrap: wrap-reverse;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.vditor-linkcard a:hover {\n  box-shadow: 0 0 3px rgba(0, 0, 0, 0.13), 0 3px 6px rgba(0, 0, 0, 0.26);\n  text-decoration: none;\n}\n.vditor-linkcard a:visited .vditor-linkcard__abstract {\n  color: rgba(88, 96, 105, 0.36);\n}\n.vditor-linkcard__info {\n  padding: 10px;\n  min-width: 200px;\n  box-sizing: border-box;\n  flex: 1;\n}\n.vditor-linkcard__title {\n  font-size: 14px;\n  font-weight: 400;\n  color: #24292e;\n  display: flex;\n  align-items: center;\n}\n.vditor-linkcard__title img {\n  cursor: pointer;\n  height: 20px;\n  width: 20px;\n  border-radius: 3px;\n  flex-shrink: 0;\n  margin-right: 5px;\n}\n.vditor-linkcard__abstract {\n  word-wrap: break-word;\n  word-break: break-all;\n  -webkit-line-clamp: 2;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  -webkit-box-orient: vertical;\n  display: -webkit-box;\n  font-size: 13px;\n  color: #586069;\n  margin: 5px 0;\n}\n.vditor-linkcard__site {\n  font-size: 12px;\n  color: #4285f4;\n}\n.vditor-linkcard__image {\n  background-size: cover;\n  background-repeat: no-repeat;\n  background-position: center center;\n  max-width: 250px;\n  min-width: 126px;\n  cursor: pointer;\n  background-color: rgba(88, 96, 105, 0.36);\n}\n.vditor-footnotes__goto-ref {\n  text-decoration: none;\n}\n.vditor-toc {\n  margin-bottom: 16px;\n  -webkit-user-select: text;\n     -moz-user-select: text;\n      -ms-user-select: text;\n          user-select: text;\n  color: #4285f4;\n}\n.vditor-toc .vditor-outline__action {\n  display: none;\n}\n.vditor-toc ul {\n  list-style: none !important;\n  padding-left: 1em;\n}\n.vditor-toc > ul {\n  padding-left: 0;\n}\n.vditor-toc span {\n  cursor: pointer;\n}\n.vditor-toc li > span > svg {\n  width: 0;\n  height: 0;\n}\n.vditor-outline {\n  width: 250px;\n  border-right: 1px solid var(--border-color);\n  background-color: var(--panel-background-color);\n  display: none;\n  overflow: auto;\n}\n.vditor-outline--right {\n  border-right: 0;\n  border-left: 1px solid var(--border-color);\n}\n.vditor-outline::-webkit-scrollbar {\n  display: none;\n}\n.vditor-outline ul {\n  list-style: none !important;\n  padding-left: 1em;\n  margin: 0;\n}\n.vditor-outline__content > ul {\n  padding-left: 0;\n}\n.vditor-outline li > span {\n  display: flex;\n  align-items: center;\n  padding: 5px 10px;\n  cursor: pointer;\n  color: var(--textarea-text-color);\n}\n.vditor-outline li > span > svg {\n  height: 10px;\n  width: 10px;\n  flex-shrink: 0;\n}\n.vditor-outline li > span:hover {\n  color: var(--toolbar-icon-hover-color);\n}\n.vditor-outline li > span > span {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.vditor-outline__title {\n  border-bottom: 1px dashed var(--border-color);\n  padding: 5px 10px;\n  color: var(--toolbar-icon-color);\n  font-size: 12px;\n}\n.vditor-outline__action {\n  transition: all 0.15s ease-in-out;\n  fill: currentColor;\n  margin-right: 5px;\n  flex-shrink: 0;\n}\n.vditor-outline__action--close {\n  transform: rotate(-90deg);\n}\n.vditor-wysiwyg {\n  box-sizing: border-box;\n  flex: 1;\n  position: relative;\n  width: 100%;\n  min-width: 1px;\n}\n.vditor-wysiwyg pre.vditor-reset {\n  background-color: var(--panel-background-color);\n  margin: 0;\n  white-space: pre-wrap;\n  height: 100%;\n  box-sizing: border-box;\n}\n.vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-wysiwyg pre.vditor-reset:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-wysiwyg pre.vditor-reset:focus {\n  outline: none;\n  background-color: var(--textarea-background-color);\n}\n.vditor-wysiwyg pre.vditor-reset:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-wysiwyg blockquote:empty::before,\n.vditor-wysiwyg pre > code:empty::before,\n.vditor-wysiwyg p:empty::before,\n.vditor-wysiwyg h1:empty::after,\n.vditor-wysiwyg h2:empty::after,\n.vditor-wysiwyg h3:empty::after,\n.vditor-wysiwyg h4:empty::after,\n.vditor-wysiwyg h5:empty::after,\n.vditor-wysiwyg h6:empty::after {\n  content: ' ';\n}\n.vditor-wysiwyg code[data-marker=\"`\"] {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n.vditor-wysiwyg__block pre:first-child {\n  margin-bottom: -1em;\n}\n.vditor-wysiwyg__block pre:first-child code {\n  color: var(--textarea-text-color);\n  height: auto;\n  text-align: left;\n}\n.vditor-wysiwyg__block pre:last-child {\n  margin-bottom: 1em;\n}\n.vditor-wysiwyg__preview {\n  cursor: pointer;\n  white-space: initial;\n  min-height: 27px;\n}\n.vditor-wysiwyg > .vditor-reset > h1:before,\n.vditor-wysiwyg > .vditor-reset > h2:before,\n.vditor-wysiwyg > .vditor-reset > h3:before,\n.vditor-wysiwyg > .vditor-reset > h4:before,\n.vditor-wysiwyg > .vditor-reset > h5:before,\n.vditor-wysiwyg > .vditor-reset > h6:before,\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n.vditor-wysiwyg .vditor-toc:before {\n  float: left;\n  padding-right: 4px;\n  margin-left: -29px;\n  content: 'H1';\n  font-size: 0.85rem;\n  font-weight: normal;\n  color: var(--second-color);\n}\n.vditor-wysiwyg > .vditor-reset > h2:before {\n  content: 'H2';\n}\n.vditor-wysiwyg > .vditor-reset > h3:before {\n  content: 'H3';\n}\n.vditor-wysiwyg > .vditor-reset > h4:before {\n  content: 'H4';\n}\n.vditor-wysiwyg > .vditor-reset > h5:before {\n  content: 'H5';\n}\n.vditor-wysiwyg > .vditor-reset > h6:before {\n  content: 'H6';\n}\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before {\n  content: '\"A\"';\n}\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before {\n  content: '^F';\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block:before {\n  content: \"</>\";\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=\"yaml-front-matter\"]:before {\n  content: \"F\";\n}\n.vditor-wysiwyg div.vditor-wysiwyg__block[data-type=\"math-block\"]:before {\n  content: \"$$\";\n}\n.vditor-wysiwyg .vditor-toc:before {\n  content: \"ToC\";\n}\n.vditor-wysiwyg hr {\n  display: inline-block;\n  margin: 12px 0;\n  width: 100%;\n}\n.vditor-wysiwyg details {\n  white-space: initial;\n}\n.vditor-wysiwyg a {\n  cursor: pointer;\n}\n.vditor-wysiwyg span[data-type=\"backslash\"] > span {\n  display: none;\n  color: var(--second-color);\n}\n.vditor-wysiwyg span[data-type=\"link-ref\"],\n.vditor-wysiwyg sup[data-type=\"footnotes-ref\"] {\n  color: #4285f4;\n}\n.vditor-wysiwyg span[data-type=\"toc-h\"] {\n  color: #4285f4;\n  text-decoration: underline;\n}\n.vditor-wysiwyg div[data-type=\"footnotes-block\"] {\n  border-top: 2px solid var(--heading-border-color);\n  padding-top: 24px;\n  margin-top: 24px;\n}\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"] {\n  color: var(--blockquote-color);\n}\n@media screen and (max-width: 520px) {\n  .vditor-wysiwyg h1:before,\n  .vditor-wysiwyg h2:before,\n  .vditor-wysiwyg h3:before,\n  .vditor-wysiwyg h4:before,\n  .vditor-wysiwyg h5:before,\n  .vditor-wysiwyg h6:before,\n  .vditor-wysiwyg div.vditor-wysiwyg__block:before,\n  .vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n  .vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n  .vditor-wysiwyg .vditor-toc:before {\n    content: none;\n  }\n}\n.vditor-ir {\n  box-sizing: border-box;\n  flex: 1;\n  min-width: 1px;\n  position: relative;\n  width: 100%;\n}\n.vditor-ir__node[data-type=\"code-block\"]:before,\n.vditor-ir__node[data-type=\"code-block\"]:after,\n.vditor-ir__node[data-type=\"yaml-front-matter\"]:before,\n.vditor-ir__node[data-type=\"yaml-front-matter\"]:after,\n.vditor-ir__node[data-type=\"math-block\"]:before,\n.vditor-ir__node[data-type=\"math-block\"]:after {\n  content: ' ';\n  color: var(--second-color);\n}\n.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker {\n  padding: 0 !important;\n}\n.vditor-ir__node:not(.vditor-ir__node--expand)[data-type=\"a\"] {\n  cursor: pointer;\n}\n.vditor-ir__node[data-type=\"link-ref\"],\n.vditor-ir__node[data-type=\"footnotes-ref\"] {\n  color: #4285f4;\n}\n.vditor-ir__node[data-type=\"html-block\"] {\n  margin-bottom: 1em;\n}\n.vditor-ir__node .vditor-ir__marker {\n  width: 0;\n  overflow: hidden;\n  display: inline-block;\n  height: 0;\n  transition: all 0.15s ease-in-out;\n}\n.vditor-ir__node--hidden .vditor-ir__marker {\n  visibility: hidden;\n}\n.vditor-ir__node--expand .vditor-ir__marker {\n  color: var(--second-color);\n  display: inline;\n  height: auto;\n  width: auto;\n}\n.vditor-ir__node--expand .vditor-ir__marker--hide {\n  display: none;\n}\n.vditor-ir__node--expand .vditor-ir__marker--heading {\n  color: var(--ir-heading-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--bi {\n  color: var(--ir-bi-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--link {\n  color: var(--ir-link-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--title {\n  color: var(--ir-title-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--bracket {\n  color: var(--ir-bracket-color);\n  text-decoration: underline;\n}\n.vditor-ir__node--expand .vditor-ir__marker--paren {\n  color: var(--ir-paren-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--info {\n  color: var(--ir-heading-color);\n}\n.vditor-ir__node--expand .vditor-ir__marker--pre code {\n  color: var(--textarea-text-color);\n  height: auto;\n  text-align: left;\n}\n.vditor-ir__node--expand[data-type=\"code-block\"]:before,\n.vditor-ir__node--expand[data-type=\"code-block\"]:after {\n  content: '```';\n}\n.vditor-ir__node--expand[data-type=\"yaml-front-matter\"]:before,\n.vditor-ir__node--expand[data-type=\"yaml-front-matter\"]:after {\n  content: '---';\n}\n.vditor-ir__node--expand[data-type=\"math-block\"]:before,\n.vditor-ir__node--expand[data-type=\"math-block\"]:after {\n  content: '$$';\n}\n.vditor-ir__node span[data-type=\"code-block-open-marker\"],\n.vditor-ir__node span[data-type=\"code-block-close-marker\"],\n.vditor-ir__node span[data-type=\"yaml-front-matter-open-marker\"],\n.vditor-ir__node span[data-type=\"yaml-front-matter-close-marker\"],\n.vditor-ir__node span[data-type=\"math-block-open-marker\"],\n.vditor-ir__node span[data-type=\"math-block-close-marker\"] {\n  display: none;\n}\n.vditor-ir__preview {\n  cursor: pointer;\n  white-space: initial;\n  min-height: 27px;\n}\n.vditor-ir__link {\n  color: var(--ir-bracket-color);\n  text-decoration: underline;\n}\n.vditor-ir pre.vditor-reset {\n  background-color: var(--panel-background-color);\n  margin: 0;\n  white-space: pre-wrap;\n  height: 100%;\n  box-sizing: border-box;\n}\n.vditor-ir pre.vditor-reset[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-ir pre.vditor-reset:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-ir pre.vditor-reset:focus {\n  outline: none;\n  background-color: var(--textarea-background-color);\n}\n.vditor-ir pre.vditor-reset:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-ir pre.vditor-reset pre {\n  margin: 0;\n}\n.vditor-ir hr {\n  display: inline-block;\n  margin: 12px 0;\n  width: 100%;\n}\n.vditor-ir blockquote:empty::before,\n.vditor-ir pre > code:empty::before,\n.vditor-ir p:empty::before,\n.vditor-ir h1:empty::after,\n.vditor-ir h2:empty::after,\n.vditor-ir h3:empty::after,\n.vditor-ir h4:empty::after,\n.vditor-ir h5:empty::after,\n.vditor-ir h6:empty::after {\n  content: ' ';\n}\n.vditor-ir .vditor-reset > h1:before,\n.vditor-ir .vditor-reset > h2:before,\n.vditor-ir .vditor-reset > h3:before,\n.vditor-ir .vditor-reset > h4:before,\n.vditor-ir .vditor-reset > h5:before,\n.vditor-ir .vditor-reset > h6:before,\n.vditor-ir div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-ir div[data-type=\"footnotes-block\"]:before,\n.vditor-ir .vditor-toc:before {\n  float: left;\n  padding-right: 4px;\n  margin-left: -29px;\n  content: 'H1';\n  font-size: 0.85rem;\n  font-weight: normal;\n  color: var(--second-color);\n}\n.vditor-ir .vditor-reset > h2:before {\n  content: 'H2';\n}\n.vditor-ir .vditor-reset > h3:before {\n  content: 'H3';\n}\n.vditor-ir .vditor-reset > h4:before {\n  content: 'H4';\n}\n.vditor-ir .vditor-reset > h5:before {\n  content: 'H5';\n}\n.vditor-ir .vditor-reset > h6:before {\n  content: 'H6';\n}\n.vditor-ir div[data-type=\"link-ref-defs-block\"] {\n  color: var(--blockquote-color);\n}\n.vditor-ir div[data-type=\"link-ref-defs-block\"]:before {\n  content: '\"A\"';\n}\n.vditor-ir div[data-type=\"footnotes-block\"] {\n  border-top: 2px solid var(--heading-border-color);\n  padding-top: 24px;\n  margin-top: 24px;\n}\n.vditor-ir div[data-type=\"footnotes-block\"]:before {\n  content: '^F';\n}\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > ul,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > ol,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > p,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > blockquote,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > pre,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > table,\n.vditor-ir div[data-type=\"footnotes-block\"] > div[data-type=\"footnotes-def\"] > hr {\n  margin-left: 8px;\n}\n.vditor-ir .vditor-toc:before {\n  content: \"ToC\";\n}\n.vditor-ir .vditor-toc span[data-type=\"toc-h\"] {\n  color: #4285f4;\n  text-decoration: underline;\n}\n@media screen and (max-width: 520px) {\n  .vditor-ir h1:before,\n  .vditor-ir h2:before,\n  .vditor-ir h3:before,\n  .vditor-ir h4:before,\n  .vditor-ir h5:before,\n  .vditor-ir h6:before,\n  .vditor-ir div[data-type=\"link-ref-defs-block\"]:before,\n  .vditor-ir div[data-type=\"footnotes-block\"]:before,\n  .vditor-ir .vditor-toc:before {\n    content: none;\n  }\n}\n.vditor-sv {\n  font-family: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\", \"Hiragino Sans GB\", \"Microsoft Yahei\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Noto Color Emoji\", \"Segoe UI Symbol\", \"Android Emoji\", \"EmojiSymbols\";\n  margin: 0 1px 0 0;\n  overflow: auto;\n  width: 100%;\n  flex: 1;\n  min-width: 1px;\n  border: 0;\n  resize: none;\n  padding: 10px 9px 10px 10px;\n  box-sizing: border-box;\n  background-color: var(--panel-background-color);\n  outline: 0 none;\n  font-size: 16px;\n  line-height: 22px;\n  color: var(--textarea-text-color);\n  border-radius: 0 0 3px 3px;\n  font-variant-ligatures: no-common-ligatures;\n  white-space: pre-wrap;\n  word-break: break-word;\n  word-wrap: break-word;\n}\n.vditor-sv[contenteditable=\"false\"] {\n  opacity: 0.3;\n  cursor: not-allowed;\n}\n.vditor-sv:empty::before {\n  content: attr(placeholder);\n  color: var(--second-color);\n}\n.vditor-sv:focus {\n  background-color: var(--textarea-background-color);\n}\n.vditor-sv:after {\n  content: \"\";\n  height: var(--editor-bottom);\n  display: block;\n}\n.vditor-sv span[data-type=\"newline\"] + span[data-type=\"text\"]:empty {\n  display: inherit;\n}\n.vditor-sv .sup {\n  vertical-align: super;\n  font-size: smaller;\n}\n.vditor-sv .strong {\n  font-weight: bold;\n}\n.vditor-sv .em {\n  font-style: italic;\n}\n.vditor-sv .s {\n  text-decoration: line-through;\n}\n.vditor-sv .mark:not(.vditor-sv__marker) {\n  background-color: yellow;\n  color: black;\n}\n.vditor-sv .h1 {\n  font-size: 1.75em;\n  line-height: 44px;\n}\n.vditor-sv .h2 {\n  font-size: 1.55em;\n  line-height: 38px;\n}\n.vditor-sv .h3 {\n  font-size: 1.38em;\n  line-height: 27px;\n}\n.vditor-sv .h4 {\n  font-size: 1.25em;\n  line-height: 25px;\n}\n.vditor-sv .h5 {\n  font-size: 1.13em;\n}\n.vditor-sv .h6 {\n  font-size: 1em;\n}\n.vditor-sv__marker {\n  color: var(--second-color);\n}\n.vditor-sv__marker--heading {\n  color: var(--ir-heading-color);\n}\n.vditor-sv__marker--bi {\n  color: var(--ir-bi-color);\n}\n.vditor-sv__marker--link {\n  color: var(--ir-link-color);\n}\n.vditor-sv__marker--title {\n  color: var(--ir-title-color);\n}\n.vditor-sv__marker--bracket {\n  color: var(--ir-bracket-color);\n}\n.vditor-sv__marker--paren {\n  color: var(--ir-paren-color);\n}\n.vditor-sv__marker--info {\n  color: var(--ir-heading-color);\n}\n.vditor-sv__marker--strong {\n  font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport \"./assets/less/index.less\";\nimport VditorMethod from \"./method\";\ndeclare class Vditor extends VditorMethod {\n    readonly version: string;\n    vditor: IVditor;\n    /**\n     * @param id 要挂载 Vditor 的元素或者元素 ID。\n     * @param options Vditor 参数\n     */\n    constructor(id: string | HTMLElement, options?: IOptions);\n    private showErrorTip;\n    updateToolbarConfig(options: IToolbarConfig): void;\n    /** 设置主题 */\n    setTheme(theme: \"dark\" | \"classic\", contentTheme?: string, codeTheme?: string, contentThemePath?: string): void;\n    /** 获取 Markdown 内容 */\n    getValue(): string;\n    /** 获取编辑器当前编辑模式 */\n    getCurrentMode(): \"sv\" | \"wysiwyg\" | \"ir\";\n    /** 聚焦到编辑器 */\n    focus(): void;\n    /** 让编辑器失焦 */\n    blur(): void;\n    /** 禁用编辑器 */\n    disabled(): void;\n    /** 解除编辑器禁用 */\n    enable(): void;\n    /** 返回选中的字符串 */\n    getSelection(): string;\n    /** 设置预览区域内容 */\n    renderPreview(value?: string): void;\n    /** 获取焦点位置 */\n    getCursorPosition(): {\n        left: number;\n        top: number;\n    };\n    /** 上传是否还在进行中 */\n    isUploading(): boolean;\n    /** 清除缓存 */\n    clearCache(): void;\n    /** 禁用缓存 */\n    disabledCache(): void;\n    /** 启用缓存 */\n    enableCache(): void;\n    /** HTML 转 md */\n    html2md(value: string): string;\n    /** markdown 转 JSON 输出 */\n    exportJSON(value: string): string;\n    /** 获取 HTML */\n    getHTML(): string;\n    /** 消息提示。time 为 0 将一直显示 */\n    tip(text: string, time?: number): void;\n    /** 设置预览模式 */\n    setPreviewMode(mode: \"both\" | \"editor\"): void;\n    /** 删除选中内容 */\n    deleteValue(): void;\n    /** 更新选中内容 */\n    updateValue(value: string): void;\n    /** 在焦点处插入内容，并默认进行 Markdown 渲染 */\n    insertValue(value: string, render?: boolean): void;\n    /** 设置编辑器内容 */\n    setValue(markdown: string, clearStack?: boolean): void;\n    /** 清空 undo & redo 栈 */\n    clearStack(): void;\n    /** 销毁编辑器 */\n    destroy(): void;\n    /** 获取评论 ID */\n    getCommentIds(): ICommentsData[];\n    /** 高亮评论 */\n    hlCommentIds(ids: string[]): void;\n    /** 取消评论高亮 */\n    unHlCommentIds(ids: string[]): void;\n    /** 删除评论 */\n    removeCommentIds(removeIds: string[]): void;\n    private init;\n}\nexport default Vditor;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/index.js",
    "content": "/*!\n * Vditor v3.10.5 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vditor\"] = factory();\n\telse\n\t\troot[\"Vditor\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 85:\n/***/ ((module) => {\n\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function () {\n  // Defaults.\n  // Redefine these in your program to override the defaults.\n\n  // Number of seconds to map a diff before giving up (0 for infinity).\n  this.Diff_Timeout = 1.0;\n  // Cost of an empty edit operation in terms of edit characters.\n  this.Diff_EditCost = 4;\n  // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n  this.Match_Threshold = 0.5;\n  // How far to search for a match (0 = exact location, 1000+ = broad match).\n  // A match this many characters away from the expected location will add\n  // 1.0 to the score (0.0 is a perfect match).\n  this.Match_Distance = 1000;\n  // When deleting a large block of text (over ~64 characters), how close do\n  // the contents have to be to match the expected contents. (0.0 = perfection,\n  // 1.0 = very loose).  Note that Match_Threshold controls how closely the\n  // end points of a delete need to match.\n  this.Patch_DeleteThreshold = 0.5;\n  // Chunk size for context length.\n  this.Patch_Margin = 4;\n\n  // The number of bits in an int.\n  this.Match_MaxBits = 32;\n};\n\n//  DIFF FUNCTIONS\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function (op, text) {\n  return [op, text];\n};\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n *     then don't run a line-level diff first to identify the changed areas.\n *     Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n *     by.  Used internally for recursive calls.  Users should set DiffTimeout\n *     instead.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function (text1, text2, opt_checklines, opt_deadline) {\n  // Set a deadline by which time the diff must be complete.\n  if (typeof opt_deadline == 'undefined') {\n    if (this.Diff_Timeout <= 0) {\n      opt_deadline = Number.MAX_VALUE;\n    } else {\n      opt_deadline = new Date().getTime() + this.Diff_Timeout * 1000;\n    }\n  }\n  var deadline = opt_deadline;\n\n  // Check for null inputs.\n  if (text1 == null || text2 == null) {\n    throw new Error('Null input. (diff_main)');\n  }\n\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n    }\n    return [];\n  }\n  if (typeof opt_checklines == 'undefined') {\n    opt_checklines = true;\n  }\n  var checklines = opt_checklines;\n\n  // Trim off common prefix (speedup).\n  var commonlength = this.diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = this.diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n  }\n  if (commonsuffix) {\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n  }\n  this.diff_cleanupMerge(diffs);\n  return diffs;\n};\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag.  If false, then don't run a\n *     line-level diff first to identify the changed areas.\n *     If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function (text1, text2, checklines, deadline) {\n  var diffs;\n  if (!text1) {\n    // Just add some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)), new diff_match_patch.Diff(DIFF_EQUAL, shorttext), new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(i + shorttext.length))];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = this.diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n    var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n    // Merge the results.\n    return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)], diffs_b);\n  }\n  if (checklines && text1.length > 100 && text2.length > 100) {\n    return this.diff_lineMode_(text1, text2, deadline);\n  }\n  return this.diff_bisect_(text1, text2, deadline);\n};\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function (text1, text2, deadline) {\n  // Scan the text on a line-by-line basis first.\n  var a = this.diff_linesToChars_(text1, text2);\n  text1 = a.chars1;\n  text2 = a.chars2;\n  var linearray = a.lineArray;\n  var diffs = this.diff_main(text1, text2, false, deadline);\n\n  // Convert the diff back to original text.\n  this.diff_charsToLines_(diffs, linearray);\n  // Eliminate freak matches (e.g. blank lines)\n  this.diff_cleanupSemantic(diffs);\n\n  // Rediff any replacement blocks, this time character-by-character.\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete >= 1 && count_insert >= 1) {\n          // Delete the offending records and add the merged ones.\n          diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert);\n          pointer = pointer - count_delete - count_insert;\n          var subDiff = this.diff_main(text_delete, text_insert, false, deadline);\n          for (var j = subDiff.length - 1; j >= 0; j--) {\n            diffs.splice(pointer, 0, subDiff[j]);\n          }\n          pointer = pointer + subDiff.length;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n    pointer++;\n  }\n  diffs.pop(); // Remove the dummy entry at the end.\n\n  return diffs;\n};\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function (text1, text2, deadline) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = delta % 2 != 0;\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Bail out if deadline is reached.\n    if (new Date().getTime() > deadline) {\n      break;\n    }\n\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function (text1, text2, x, y, deadline) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = this.diff_main(text1a, text2a, false, deadline);\n  var diffsb = this.diff_main(text1b, text2b, false, deadline);\n  return diffs.concat(diffsb);\n};\n\n/**\n * Split two texts into an array of strings.  Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}\n *     An object containing the encoded text1, the encoded text2 and\n *     the array of unique strings.\n *     The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function (text1, text2) {\n  var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n  var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n  // '\\x00' is a valid character, but various debuggers don't like it.\n  // So we'll insert a junk entry to avoid generating a null character.\n  lineArray[0] = '';\n\n  /**\n   * Split a text into an array of strings.  Reduce the texts to a string of\n   * hashes where each Unicode character represents one line.\n   * Modifies linearray and linehash through being a closure.\n   * @param {string} text String to encode.\n   * @return {string} Encoded string.\n   * @private\n   */\n  function diff_linesToCharsMunge_(text) {\n    var chars = '';\n    // Walk the text, pulling out a substring for each line.\n    // text.split('\\n') would would temporarily double our memory footprint.\n    // Modifying text would create many large strings to garbage collect.\n    var lineStart = 0;\n    var lineEnd = -1;\n    // Keeping our own length variable is faster than looking it up.\n    var lineArrayLength = lineArray.length;\n    while (lineEnd < text.length - 1) {\n      lineEnd = text.indexOf('\\n', lineStart);\n      if (lineEnd == -1) {\n        lineEnd = text.length - 1;\n      }\n      var line = text.substring(lineStart, lineEnd + 1);\n      if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) {\n        chars += String.fromCharCode(lineHash[line]);\n      } else {\n        if (lineArrayLength == maxLines) {\n          // Bail out at 65535 because\n          // String.fromCharCode(65536) == String.fromCharCode(0)\n          line = text.substring(lineStart);\n          lineEnd = text.length;\n        }\n        chars += String.fromCharCode(lineArrayLength);\n        lineHash[line] = lineArrayLength;\n        lineArray[lineArrayLength++] = line;\n      }\n      lineStart = lineEnd + 1;\n    }\n    return chars;\n  }\n  // Allocate 2/3rds of the space for text1, the rest for text2.\n  var maxLines = 40000;\n  var chars1 = diff_linesToCharsMunge_(text1);\n  maxLines = 65535;\n  var chars2 = diff_linesToCharsMunge_(text2);\n  return {\n    chars1: chars1,\n    chars2: chars2,\n    lineArray: lineArray\n  };\n};\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {!Array.<string>} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function (diffs, lineArray) {\n  for (var i = 0; i < diffs.length; i++) {\n    var chars = diffs[i][1];\n    var text = [];\n    for (var j = 0; j < chars.length; j++) {\n      text[j] = lineArray[chars.charCodeAt(j)];\n    }\n    diffs[i][1] = text.join('');\n  }\n};\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function (text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {\n      best = length;\n      length++;\n    }\n  }\n};\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function (text1, text2) {\n  if (this.Diff_Timeout <= 0) {\n    // Don't risk returning a non-optimal diff if we have unlimited time.\n    return null;\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null; // Pointless.\n  }\n  var dmp = this; // 'this' becomes 'window' in a closure.\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), shorttext.substring(j));\n      var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastEquality = diffs[pointer][1];\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0; // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastEquality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n  this.diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1)));\n          diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2)));\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n};\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function (diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch.whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch.whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(diff_match_patch.linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(diff_match_patch.linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(diff_match_patch.blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(diff_match_patch.blanklineStartRegex_);\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = this.diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Is there an insertion operation before the last equality.\n  var pre_ins = false;\n  // Is there a deletion operation before the last equality.\n  var pre_del = false;\n  // Is there an insertion operation after the last equality.\n  var post_ins = false;\n  // Is there a deletion operation after the last equality.\n  var post_del = false;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {\n        // Candidate found.\n        equalities[equalitiesLength++] = pointer;\n        pre_ins = post_ins;\n        pre_del = post_del;\n        lastEquality = diffs[pointer][1];\n      } else {\n        // Not a candidate, and can never become one.\n        equalitiesLength = 0;\n        lastEquality = null;\n      }\n      post_ins = post_del = false;\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_DELETE) {\n        post_del = true;\n      } else {\n        post_ins = true;\n      }\n      /*\n       * Five types to be split:\n       * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>\n       * <ins>A</ins>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<ins>C</ins>\n       * <ins>A</del>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<del>C</del>\n       */\n      if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        equalitiesLength--; // Throw away the equality we just deleted;\n        lastEquality = null;\n        if (pre_ins && pre_del) {\n          // No changes made which could affect previous entry, keep going.\n          post_ins = post_del = true;\n          equalitiesLength = 0;\n        } else {\n          equalitiesLength--; // Throw away the previous equality.\n          pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n          post_ins = post_del = false;\n        }\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function (diffs) {\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = this.diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL, text_insert.substring(0, commonlength)));\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = this.diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length - commonlength);\n              text_delete = text_delete.substring(0, text_delete.length - commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          pointer -= count_delete + count_insert;\n          diffs.splice(pointer, count_delete + count_insert);\n          if (text_delete.length) {\n            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n            pointer++;\n          }\n          if (text_insert.length) {\n            diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n            pointer++;\n          }\n          pointer++;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop(); // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function (diffs, loc) {\n  var chars1 = 0;\n  var chars2 = 0;\n  var last_chars1 = 0;\n  var last_chars2 = 0;\n  var x;\n  for (x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      // Equality or deletion.\n      chars1 += diffs[x][1].length;\n    }\n    if (diffs[x][0] !== DIFF_DELETE) {\n      // Equality or insertion.\n      chars2 += diffs[x][1].length;\n    }\n    if (chars1 > loc) {\n      // Overshot the location.\n      break;\n    }\n    last_chars1 = chars1;\n    last_chars2 = chars2;\n  }\n  // Was the location was deleted?\n  if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n    return last_chars2;\n  }\n  // Add the remaining character length.\n  return last_chars2 + (loc - last_chars1);\n};\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function (diffs) {\n  var html = [];\n  var pattern_amp = /&/g;\n  var pattern_lt = /</g;\n  var pattern_gt = />/g;\n  var pattern_para = /\\n/g;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0]; // Operation (insert, delete, equal)\n    var data = diffs[x][1]; // Text of change.\n    var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;').replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n    switch (op) {\n      case DIFF_INSERT:\n        html[x] = '<ins style=\"background:#e6ffe6;\">' + text + '</ins>';\n        break;\n      case DIFF_DELETE:\n        html[x] = '<del style=\"background:#ffe6e6;\">' + text + '</del>';\n        break;\n      case DIFF_EQUAL:\n        html[x] = '<span>' + text + '</span>';\n        break;\n    }\n  }\n  return html.join('');\n};\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_DELETE) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function (diffs) {\n  var levenshtein = 0;\n  var insertions = 0;\n  var deletions = 0;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];\n    var data = diffs[x][1];\n    switch (op) {\n      case DIFF_INSERT:\n        insertions += data.length;\n        break;\n      case DIFF_DELETE:\n        deletions += data.length;\n        break;\n      case DIFF_EQUAL:\n        // A deletion and an insertion is one substitution.\n        levenshtein += Math.max(insertions, deletions);\n        insertions = 0;\n        deletions = 0;\n        break;\n    }\n  }\n  levenshtein += Math.max(insertions, deletions);\n  return levenshtein;\n};\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated.  Inserted text is escaped using %xx notation.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function (diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    switch (diffs[x][0]) {\n      case DIFF_INSERT:\n        text[x] = '+' + encodeURI(diffs[x][1]);\n        break;\n      case DIFF_DELETE:\n        text[x] = '-' + diffs[x][1].length;\n        break;\n      case DIFF_EQUAL:\n        text[x] = '=' + diffs[x][1].length;\n        break;\n    }\n  }\n  return text.join('\\t').replace(/%20/g, ' ');\n};\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function (text1, delta) {\n  var diffs = [];\n  var diffsLength = 0; // Keeping our own length var is faster in JS.\n  var pointer = 0; // Cursor in text1\n  var tokens = delta.split(/\\t/g);\n  for (var x = 0; x < tokens.length; x++) {\n    // Each token begins with a one character parameter which specifies the\n    // operation of this token (delete, insert, equality).\n    var param = tokens[x].substring(1);\n    switch (tokens[x].charAt(0)) {\n      case '+':\n        try {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n        } catch (ex) {\n          // Malformed URI sequence.\n          throw new Error('Illegal escape in diff_fromDelta: ' + param);\n        }\n        break;\n      case '-':\n      // Fall through.\n      case '=':\n        var n = parseInt(param, 10);\n        if (isNaN(n) || n < 0) {\n          throw new Error('Invalid number in diff_fromDelta: ' + param);\n        }\n        var text = text1.substring(pointer, pointer += n);\n        if (tokens[x].charAt(0) == '=') {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n        } else {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n        }\n        break;\n      default:\n        // Blank tokens are ok (from a trailing \\t).\n        // Anything else is an error.\n        if (tokens[x]) {\n          throw new Error('Invalid diff operation in diff_fromDelta: ' + tokens[x]);\n        }\n    }\n  }\n  if (pointer != text1.length) {\n    throw new Error('Delta length (' + pointer + ') does not equal source text length (' + text1.length + ').');\n  }\n  return diffs;\n};\n\n//  MATCH FUNCTIONS\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function (text, pattern, loc) {\n  // Check for null inputs.\n  if (text == null || pattern == null || loc == null) {\n    throw new Error('Null input. (match_main)');\n  }\n  loc = Math.max(0, Math.min(loc, text.length));\n  if (text == pattern) {\n    // Shortcut (potentially not guaranteed by the algorithm)\n    return 0;\n  } else if (!text.length) {\n    // Nothing to match.\n    return -1;\n  } else if (text.substring(loc, loc + pattern.length) == pattern) {\n    // Perfect match at the perfect spot!  (Includes case of null pattern)\n    return loc;\n  } else {\n    // Do a fuzzy compare.\n    return this.match_bitap_(text, pattern, loc);\n  }\n};\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function (text, pattern, loc) {\n  if (pattern.length > this.Match_MaxBits) {\n    throw new Error('Pattern too long for this browser.');\n  }\n\n  // Initialise the alphabet.\n  var s = this.match_alphabet_(pattern);\n  var dmp = this; // 'this' becomes 'window' in a closure.\n\n  /**\n   * Compute and return the score for a match with e errors and x location.\n   * Accesses loc and pattern through being a closure.\n   * @param {number} e Number of errors in match.\n   * @param {number} x Location of match.\n   * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n   * @private\n   */\n  function match_bitapScore_(e, x) {\n    var accuracy = e / pattern.length;\n    var proximity = Math.abs(loc - x);\n    if (!dmp.Match_Distance) {\n      // Dodge divide by zero error.\n      return proximity ? 1.0 : accuracy;\n    }\n    return accuracy + proximity / dmp.Match_Distance;\n  }\n\n  // Highest score beyond which we give up.\n  var score_threshold = this.Match_Threshold;\n  // Is there a nearby exact match? (speedup)\n  var best_loc = text.indexOf(pattern, loc);\n  if (best_loc != -1) {\n    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    // What about in the other direction? (speedup)\n    best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n    if (best_loc != -1) {\n      score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    }\n  }\n\n  // Initialise the bit arrays.\n  var matchmask = 1 << pattern.length - 1;\n  best_loc = -1;\n  var bin_min, bin_mid;\n  var bin_max = pattern.length + text.length;\n  var last_rd;\n  for (var d = 0; d < pattern.length; d++) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from 'loc' we can stray at this\n    // error level.\n    bin_min = 0;\n    bin_mid = bin_max;\n    while (bin_min < bin_mid) {\n      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n        bin_min = bin_mid;\n      } else {\n        bin_max = bin_mid;\n      }\n      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n    }\n    // Use the result from this iteration as the maximum for the next.\n    bin_max = bin_mid;\n    var start = Math.max(1, loc - bin_mid + 1);\n    var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n    var rd = Array(finish + 2);\n    rd[finish + 1] = (1 << d) - 1;\n    for (var j = finish; j >= start; j--) {\n      // The alphabet (s) is a sparse hash, so the following line generates\n      // warnings.\n      var charMatch = s[text.charAt(j - 1)];\n      if (d === 0) {\n        // First pass: exact match.\n        rd[j] = (rd[j + 1] << 1 | 1) & charMatch;\n      } else {\n        // Subsequent passes: fuzzy match.\n        rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];\n      }\n      if (rd[j] & matchmask) {\n        var score = match_bitapScore_(d, j - 1);\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (score <= score_threshold) {\n          // Told you so.\n          score_threshold = score;\n          best_loc = j - 1;\n          if (best_loc > loc) {\n            // When passing loc, don't exceed our current distance from loc.\n            start = Math.max(1, 2 * loc - best_loc);\n          } else {\n            // Already passed loc, downhill from here on in.\n            break;\n          }\n        }\n      }\n    }\n    // No hope for a (better) match at greater error levels.\n    if (match_bitapScore_(d + 1, loc) > score_threshold) {\n      break;\n    }\n    last_rd = rd;\n  }\n  return best_loc;\n};\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function (pattern) {\n  var s = {};\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] = 0;\n  }\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n  }\n  return s;\n};\n\n//  PATCH FUNCTIONS\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function (patch, text) {\n  if (text.length == 0) {\n    return;\n  }\n  if (patch.start2 === null) {\n    throw Error('patch not initialized');\n  }\n  var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n  var padding = 0;\n\n  // Look for the first and last matches of pattern in text.  If two different\n  // matches are found, increase the pattern length.\n  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {\n    padding += this.Patch_Margin;\n    pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n  }\n  // Add one chunk for good luck.\n  padding += this.Patch_Margin;\n\n  // Add the prefix.\n  var prefix = text.substring(patch.start2 - padding, patch.start2);\n  if (prefix) {\n    patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n  }\n  // Add the suffix.\n  var suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding);\n  if (suffix) {\n    patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n  }\n\n  // Roll back the start points.\n  patch.start1 -= prefix.length;\n  patch.start2 -= prefix.length;\n  // Extend the lengths.\n  patch.length1 += prefix.length + suffix.length;\n  patch.length2 += prefix.length + suffix.length;\n};\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function (a, opt_b, opt_c) {\n  var text1, diffs;\n  if (typeof a == 'string' && typeof opt_b == 'string' && typeof opt_c == 'undefined') {\n    // Method 1: text1, text2\n    // Compute diffs from text1 and text2.\n    text1 = /** @type {string} */a;\n    diffs = this.diff_main(text1, /** @type {string} */opt_b, true);\n    if (diffs.length > 2) {\n      this.diff_cleanupSemantic(diffs);\n      this.diff_cleanupEfficiency(diffs);\n    }\n  } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && typeof opt_c == 'undefined') {\n    // Method 2: diffs\n    // Compute text1 from diffs.\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */a;\n    text1 = this.diff_text1(diffs);\n  } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && typeof opt_c == 'undefined') {\n    // Method 3: text1, diffs\n    text1 = /** @type {string} */a;\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */opt_b;\n  } else if (typeof a == 'string' && typeof opt_b == 'string' && opt_c && typeof opt_c == 'object') {\n    // Method 4: text1, text2, diffs\n    // text2 is not used.\n    text1 = /** @type {string} */a;\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */opt_c;\n  } else {\n    throw new Error('Unknown call format to patch_make.');\n  }\n  if (diffs.length === 0) {\n    return []; // Get rid of the null case.\n  }\n  var patches = [];\n  var patch = new diff_match_patch.patch_obj();\n  var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n  var char_count1 = 0; // Number of characters into the text1 string.\n  var char_count2 = 0; // Number of characters into the text2 string.\n  // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n  // text2 (postpatch_text).  We recreate the patches one by one to determine\n  // context info.\n  var prepatch_text = text1;\n  var postpatch_text = text1;\n  for (var x = 0; x < diffs.length; x++) {\n    var diff_type = diffs[x][0];\n    var diff_text = diffs[x][1];\n    if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n      // A new patch starts here.\n      patch.start1 = char_count1;\n      patch.start2 = char_count2;\n    }\n    switch (diff_type) {\n      case DIFF_INSERT:\n        patch.diffs[patchDiffLength++] = diffs[x];\n        patch.length2 += diff_text.length;\n        postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);\n        break;\n      case DIFF_DELETE:\n        patch.length1 += diff_text.length;\n        patch.diffs[patchDiffLength++] = diffs[x];\n        postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);\n        break;\n      case DIFF_EQUAL:\n        if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {\n          // Small equality inside a patch.\n          patch.diffs[patchDiffLength++] = diffs[x];\n          patch.length1 += diff_text.length;\n          patch.length2 += diff_text.length;\n        } else if (diff_text.length >= 2 * this.Patch_Margin) {\n          // Time for a new patch.\n          if (patchDiffLength) {\n            this.patch_addContext_(patch, prepatch_text);\n            patches.push(patch);\n            patch = new diff_match_patch.patch_obj();\n            patchDiffLength = 0;\n            // Unlike Unidiff, our patch lists have a rolling context.\n            // https://github.com/google/diff-match-patch/wiki/Unidiff\n            // Update prepatch text & pos to reflect the application of the\n            // just completed patch.\n            prepatch_text = postpatch_text;\n            char_count1 = char_count2;\n          }\n        }\n        break;\n    }\n\n    // Update the current character count.\n    if (diff_type !== DIFF_INSERT) {\n      char_count1 += diff_text.length;\n    }\n    if (diff_type !== DIFF_DELETE) {\n      char_count2 += diff_text.length;\n    }\n  }\n  // Pick up the leftover patch if not empty.\n  if (patchDiffLength) {\n    this.patch_addContext_(patch, prepatch_text);\n    patches.push(patch);\n  }\n  return patches;\n};\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function (patches) {\n  // Making deep copies is hard in JavaScript.\n  var patchesCopy = [];\n  for (var x = 0; x < patches.length; x++) {\n    var patch = patches[x];\n    var patchCopy = new diff_match_patch.patch_obj();\n    patchCopy.diffs = [];\n    for (var y = 0; y < patch.diffs.length; y++) {\n      patchCopy.diffs[y] = new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n    }\n    patchCopy.start1 = patch.start1;\n    patchCopy.start2 = patch.start2;\n    patchCopy.length1 = patch.length1;\n    patchCopy.length2 = patch.length2;\n    patchesCopy[x] = patchCopy;\n  }\n  return patchesCopy;\n};\n\n/**\n * Merge a set of patches onto the text.  Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the\n *      new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function (patches, text) {\n  if (patches.length == 0) {\n    return [text, []];\n  }\n\n  // Deep copy the patches so that no changes are made to originals.\n  patches = this.patch_deepCopy(patches);\n  var nullPadding = this.patch_addPadding(patches);\n  text = nullPadding + text + nullPadding;\n  this.patch_splitMax(patches);\n  // delta keeps track of the offset between the expected and actual location\n  // of the previous patch.  If there are patches expected at positions 10 and\n  // 20, but the first patch was found at 12, delta is 2 and the second patch\n  // has an effective expected position of 22.\n  var delta = 0;\n  var results = [];\n  for (var x = 0; x < patches.length; x++) {\n    var expected_loc = patches[x].start2 + delta;\n    var text1 = this.diff_text1(patches[x].diffs);\n    var start_loc;\n    var end_loc = -1;\n    if (text1.length > this.Match_MaxBits) {\n      // patch_splitMax will only provide an oversized pattern in the case of\n      // a monster delete.\n      start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);\n      if (start_loc != -1) {\n        end_loc = this.match_main(text, text1.substring(text1.length - this.Match_MaxBits), expected_loc + text1.length - this.Match_MaxBits);\n        if (end_loc == -1 || start_loc >= end_loc) {\n          // Can't find valid trailing context.  Drop this patch.\n          start_loc = -1;\n        }\n      }\n    } else {\n      start_loc = this.match_main(text, text1, expected_loc);\n    }\n    if (start_loc == -1) {\n      // No match found.  :(\n      results[x] = false;\n      // Subtract the delta for this failed patch from subsequent patches.\n      delta -= patches[x].length2 - patches[x].length1;\n    } else {\n      // Found a match.  :)\n      results[x] = true;\n      delta = start_loc - expected_loc;\n      var text2;\n      if (end_loc == -1) {\n        text2 = text.substring(start_loc, start_loc + text1.length);\n      } else {\n        text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n      }\n      if (text1 == text2) {\n        // Perfect match, just shove the replacement text in.\n        text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);\n      } else {\n        // Imperfect match.  Run a diff to get a framework of equivalent\n        // indices.\n        var diffs = this.diff_main(text1, text2, false);\n        if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {\n          // The end points match, but the content is unacceptably bad.\n          results[x] = false;\n        } else {\n          this.diff_cleanupSemanticLossless(diffs);\n          var index1 = 0;\n          var index2;\n          for (var y = 0; y < patches[x].diffs.length; y++) {\n            var mod = patches[x].diffs[y];\n            if (mod[0] !== DIFF_EQUAL) {\n              index2 = this.diff_xIndex(diffs, index1);\n            }\n            if (mod[0] === DIFF_INSERT) {\n              // Insertion\n              text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);\n            } else if (mod[0] === DIFF_DELETE) {\n              // Deletion\n              text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(diffs, index1 + mod[1].length));\n            }\n            if (mod[0] !== DIFF_DELETE) {\n              index1 += mod[1].length;\n            }\n          }\n        }\n      }\n    }\n  }\n  // Strip the padding off.\n  text = text.substring(nullPadding.length, text.length - nullPadding.length);\n  return [text, results];\n};\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function (patches) {\n  var paddingLength = this.Patch_Margin;\n  var nullPadding = '';\n  for (var x = 1; x <= paddingLength; x++) {\n    nullPadding += String.fromCharCode(x);\n  }\n\n  // Bump all the patches forward.\n  for (var x = 0; x < patches.length; x++) {\n    patches[x].start1 += paddingLength;\n    patches[x].start2 += paddingLength;\n  }\n\n  // Add some padding on start of first diff.\n  var patch = patches[0];\n  var diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.start1 -= paddingLength; // Should be 0.\n    patch.start2 -= paddingLength; // Should be 0.\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[0][1].length) {\n    // Grow first equality.\n    var extraLength = paddingLength - diffs[0][1].length;\n    diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n    patch.start1 -= extraLength;\n    patch.start2 -= extraLength;\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  // Add some padding on end of last diff.\n  patch = patches[patches.length - 1];\n  diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n    // Grow last equality.\n    var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n    diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n  return nullPadding;\n};\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function (patches) {\n  var patch_size = this.Match_MaxBits;\n  for (var x = 0; x < patches.length; x++) {\n    if (patches[x].length1 <= patch_size) {\n      continue;\n    }\n    var bigpatch = patches[x];\n    // Remove the big old patch.\n    patches.splice(x--, 1);\n    var start1 = bigpatch.start1;\n    var start2 = bigpatch.start2;\n    var precontext = '';\n    while (bigpatch.diffs.length !== 0) {\n      // Create one of several smaller patches.\n      var patch = new diff_match_patch.patch_obj();\n      var empty = true;\n      patch.start1 = start1 - precontext.length;\n      patch.start2 = start2 - precontext.length;\n      if (precontext !== '') {\n        patch.length1 = patch.length2 = precontext.length;\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n      }\n      while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {\n        var diff_type = bigpatch.diffs[0][0];\n        var diff_text = bigpatch.diffs[0][1];\n        if (diff_type === DIFF_INSERT) {\n          // Insertions are harmless.\n          patch.length2 += diff_text.length;\n          start2 += diff_text.length;\n          patch.diffs.push(bigpatch.diffs.shift());\n          empty = false;\n        } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {\n          // This is a large deletion.  Let it pass in one chunk.\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          empty = false;\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          bigpatch.diffs.shift();\n        } else {\n          // Deletion or equality.  Only take as much as we can stomach.\n          diff_text = diff_text.substring(0, patch_size - patch.length1 - this.Patch_Margin);\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          if (diff_type === DIFF_EQUAL) {\n            patch.length2 += diff_text.length;\n            start2 += diff_text.length;\n          } else {\n            empty = false;\n          }\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          if (diff_text == bigpatch.diffs[0][1]) {\n            bigpatch.diffs.shift();\n          } else {\n            bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);\n          }\n        }\n      }\n      // Compute the head context for the next patch.\n      precontext = this.diff_text2(patch.diffs);\n      precontext = precontext.substring(precontext.length - this.Patch_Margin);\n      // Append the end context for this patch.\n      var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);\n      if (postcontext !== '') {\n        patch.length1 += postcontext.length;\n        patch.length2 += postcontext.length;\n        if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n          patch.diffs[patch.diffs.length - 1][1] += postcontext;\n        } else {\n          patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n        }\n      }\n      if (!empty) {\n        patches.splice(++x, 0, patch);\n      }\n    }\n  }\n};\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function (patches) {\n  var text = [];\n  for (var x = 0; x < patches.length; x++) {\n    text[x] = patches[x];\n  }\n  return text.join('');\n};\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function (textline) {\n  var patches = [];\n  if (!textline) {\n    return patches;\n  }\n  var text = textline.split('\\n');\n  var textPointer = 0;\n  var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n  while (textPointer < text.length) {\n    var m = text[textPointer].match(patchHeader);\n    if (!m) {\n      throw new Error('Invalid patch string: ' + text[textPointer]);\n    }\n    var patch = new diff_match_patch.patch_obj();\n    patches.push(patch);\n    patch.start1 = parseInt(m[1], 10);\n    if (m[2] === '') {\n      patch.start1--;\n      patch.length1 = 1;\n    } else if (m[2] == '0') {\n      patch.length1 = 0;\n    } else {\n      patch.start1--;\n      patch.length1 = parseInt(m[2], 10);\n    }\n    patch.start2 = parseInt(m[3], 10);\n    if (m[4] === '') {\n      patch.start2--;\n      patch.length2 = 1;\n    } else if (m[4] == '0') {\n      patch.length2 = 0;\n    } else {\n      patch.start2--;\n      patch.length2 = parseInt(m[4], 10);\n    }\n    textPointer++;\n    while (textPointer < text.length) {\n      var sign = text[textPointer].charAt(0);\n      try {\n        var line = decodeURI(text[textPointer].substring(1));\n      } catch (ex) {\n        // Malformed URI sequence.\n        throw new Error('Illegal escape in patch_fromText: ' + line);\n      }\n      if (sign == '-') {\n        // Deletion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n      } else if (sign == '+') {\n        // Insertion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n      } else if (sign == ' ') {\n        // Minor equality.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n      } else if (sign == '@') {\n        // Start of next patch.\n        break;\n      } else if (sign === '') {\n        // Blank line?  Whatever.\n      } else {\n        // WTF?\n        throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n      }\n      textPointer++;\n    }\n  }\n  return patches;\n};\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function () {\n  /** @type {!Array.<!diff_match_patch.Diff>} */\n  this.diffs = [];\n  /** @type {?number} */\n  this.start1 = null;\n  /** @type {?number} */\n  this.start2 = null;\n  /** @type {number} */\n  this.length1 = 0;\n  /** @type {number} */\n  this.length2 = 0;\n};\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function () {\n  var coords1, coords2;\n  if (this.length1 === 0) {\n    coords1 = this.start1 + ',0';\n  } else if (this.length1 == 1) {\n    coords1 = this.start1 + 1;\n  } else {\n    coords1 = this.start1 + 1 + ',' + this.length1;\n  }\n  if (this.length2 === 0) {\n    coords2 = this.start2 + ',0';\n  } else if (this.length2 == 1) {\n    coords2 = this.start2 + 1;\n  } else {\n    coords2 = this.start2 + 1 + ',' + this.length2;\n  }\n  var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n  var op;\n  // Escape the body of the patch with %xx notation.\n  for (var x = 0; x < this.diffs.length; x++) {\n    switch (this.diffs[x][0]) {\n      case DIFF_INSERT:\n        op = '+';\n        break;\n      case DIFF_DELETE:\n        op = '-';\n        break;\n      case DIFF_EQUAL:\n        op = ' ';\n        break;\n    }\n    text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n  }\n  return text.join('').replace(/%20/g, ' ');\n};\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports.diff_match_patch = diff_match_patch;\nmodule.exports.DIFF_DELETE = DIFF_DELETE;\nmodule.exports.DIFF_INSERT = DIFF_INSERT;\nmodule.exports.DIFF_EQUAL = DIFF_EQUAL;\n\n/***/ }),\n\n/***/ 664:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ method)\n});\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(386);\n// EXTERNAL MODULE: ./src/ts/markdown/adapterRender.ts\nvar adapterRender = __webpack_require__(781);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(379);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(895);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(169);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(572);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(702);\n;// CONCATENATED MODULE: ./src/ts/markdown/lazyLoadImageRender.ts\nvar lazyLoadImageRender = function (element) {\n    if (element === void 0) { element = document; }\n    var loadImg = function (it) {\n        var testImage = document.createElement(\"img\");\n        testImage.src = it.getAttribute(\"data-src\");\n        testImage.addEventListener(\"load\", function () {\n            if (!it.getAttribute(\"style\") && !it.getAttribute(\"class\") &&\n                !it.getAttribute(\"width\") && !it.getAttribute(\"height\")) {\n                if (testImage.naturalHeight > testImage.naturalWidth &&\n                    testImage.naturalWidth / testImage.naturalHeight <\n                        document.querySelector(\".vditor-reset\").clientWidth / (window.innerHeight - 40) &&\n                    testImage.naturalHeight > (window.innerHeight - 40)) {\n                    it.style.height = (window.innerHeight - 40) + \"px\";\n                }\n            }\n            it.src = testImage.src;\n        });\n        it.removeAttribute(\"data-src\");\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            if (imgElement.getAttribute(\"data-src\")) {\n                loadImg(imgElement);\n            }\n        });\n        return false;\n    }\n    if (window.vditorImageIntersectionObserver) {\n        window.vditorImageIntersectionObserver.disconnect();\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n    else {\n        window.vditorImageIntersectionObserver = new IntersectionObserver(function (entries) {\n            entries.forEach(function (entrie) {\n                if ((typeof entrie.isIntersecting === \"undefined\"\n                    ? entrie.intersectionRatio !== 0\n                    : entrie.isIntersecting)\n                    && entrie.target.getAttribute(\"data-src\")) {\n                    loadImg(entrie.target);\n                }\n            });\n        });\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(982);\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(431);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(570);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(593);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(182);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(931);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(793);\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(652);\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(998);\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(118);\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(2);\n;// CONCATENATED MODULE: ./src/ts/markdown/anchorRender.ts\nvar anchorRender = function (type) {\n    document.querySelectorAll(\".vditor-anchor\").forEach(function (anchor) {\n        if (type === 1) {\n            anchor.classList.add(\"vditor-anchor--left\");\n        }\n        anchor.onclick = function () {\n            var id = anchor.getAttribute(\"href\").substr(1);\n            var top = document.getElementById(\"vditorAnchor-\" + id).offsetTop;\n            document.querySelector(\"html\").scrollTop = top;\n        };\n    });\n    window.onhashchange = function () {\n        var element = document.getElementById(\"vditorAnchor-\" + decodeURIComponent(window.location.hash.substr(1)));\n        if (element) {\n            document.querySelector(\"html\").scrollTop = element.offsetTop;\n        }\n    };\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(65);\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar selection = __webpack_require__(307);\n;// CONCATENATED MODULE: ./src/ts/markdown/speechRender.ts\n\nvar speechRender = function (element, lang) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (typeof speechSynthesis === \"undefined\" || typeof SpeechSynthesisUtterance === \"undefined\") {\n        return;\n    }\n    var getVoice = function () {\n        var voices = speechSynthesis.getVoices();\n        var currentVoice;\n        var defaultVoice;\n        voices.forEach(function (item) {\n            if (item.lang === lang.replace(\"_\", \"-\")) {\n                currentVoice = item;\n            }\n            if (item.default) {\n                defaultVoice = item;\n            }\n        });\n        if (!currentVoice) {\n            currentVoice = defaultVoice;\n        }\n        return currentVoice;\n    };\n    var playSVG = '<svg><use xlink:href=\"#vditor-icon-play\"></use></svg>';\n    var pauseSVG = '<svg><use xlink:href=\"#vditor-icon-pause\"></use></svg>';\n    if (!document.getElementById(\"vditorIconScript\")) {\n        playSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path></svg>';\n        pauseSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path></svg>';\n    }\n    var speechDom = document.querySelector(\".vditor-speech\");\n    if (!speechDom) {\n        speechDom = document.createElement(\"button\");\n        speechDom.className = \"vditor-speech\";\n        element.insertAdjacentElement(\"beforeend\", speechDom);\n        if (speechSynthesis.onvoiceschanged !== undefined) {\n            speechSynthesis.onvoiceschanged = getVoice;\n        }\n    }\n    var voice = getVoice();\n    var utterThis = new SpeechSynthesisUtterance();\n    utterThis.voice = voice;\n    utterThis.onend = utterThis.onerror = function () {\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n    };\n    element.addEventListener(window.ontouchstart !== undefined ? \"touchend\" : \"click\", function (event) {\n        var target = event.target;\n        if (target.classList.contains(\"vditor-speech\") || target.parentElement.classList.contains(\"vditor-speech\")) {\n            if (!speechDom.classList.contains(\"vditor-speech--current\")) {\n                utterThis.text = speechDom.getAttribute(\"data-text\");\n                speechSynthesis.speak(utterThis);\n                speechDom.classList.add(\"vditor-speech--current\");\n                speechDom.innerHTML = pauseSVG;\n            }\n            else {\n                if (speechSynthesis.speaking) {\n                    if (speechSynthesis.paused) {\n                        speechSynthesis.resume();\n                        speechDom.innerHTML = pauseSVG;\n                    }\n                    else {\n                        speechSynthesis.pause();\n                        speechDom.innerHTML = playSVG;\n                    }\n                }\n            }\n            (0,selection/* setSelectionFocus */.Hc)(window.vditorSpeechRange);\n            element.focus();\n            return;\n        }\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        var range = getSelection().getRangeAt(0);\n        var text = range.toString().trim();\n        if (!text) {\n            return;\n        }\n        window.vditorSpeechRange = range.cloneRange();\n        var rect = range.getBoundingClientRect();\n        speechDom.innerHTML = playSVG;\n        speechDom.style.display = \"block\";\n        speechDom.style.top = (rect.top + rect.height + document.querySelector(\"html\").scrollTop - 20) + \"px\";\n        if (window.ontouchstart !== undefined) {\n            speechDom.style.left = (event.changedTouches[event.changedTouches.length - 1].pageX + 2) + \"px\";\n        }\n        else {\n            speechDom.style.left = (event.clientX + 2) + \"px\";\n        }\n        speechDom.setAttribute(\"data-text\", text);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/markdown/previewRender.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeOptions = function (options) {\n    var _a;\n    var defaultOption = {\n        anchor: 0,\n        cdn: constants/* Constants.CDN */.g.CDN,\n        customEmoji: {},\n        emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n        hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n        icon: \"ant\",\n        lang: \"zh_CN\",\n        markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n        math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n        mode: \"light\",\n        speech: {\n            enable: false,\n        },\n        render: {\n            media: {\n                enable: true,\n            }\n        },\n        theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n    };\n    if (options.cdn) {\n        if (!((_a = options.theme) === null || _a === void 0 ? void 0 : _a.path)) {\n            defaultOption.theme.path = \"\".concat(options.cdn, \"/dist/css/content-theme\");\n        }\n        if (!options.emojiPath) {\n            defaultOption.emojiPath = \"\".concat(options.cdn, \"/dist/images/emoji\");\n        }\n    }\n    return (0,merge/* merge */.T)(defaultOption, options);\n};\nvar md2html = function (mdText, options) {\n    var mergedOptions = mergeOptions(options);\n    return (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n        var lute = (0,setLute/* setLute */.X)({\n            autoSpace: mergedOptions.markdown.autoSpace,\n            gfmAutoLink: mergedOptions.markdown.gfmAutoLink,\n            codeBlockPreview: mergedOptions.markdown.codeBlockPreview,\n            emojiSite: mergedOptions.emojiPath,\n            emojis: mergedOptions.customEmoji,\n            fixTermTypo: mergedOptions.markdown.fixTermTypo,\n            footnotes: mergedOptions.markdown.footnotes,\n            headingAnchor: mergedOptions.anchor !== 0,\n            inlineMathDigit: mergedOptions.math.inlineDigit,\n            lazyLoadImage: mergedOptions.lazyLoadImage,\n            linkBase: mergedOptions.markdown.linkBase,\n            linkPrefix: mergedOptions.markdown.linkPrefix,\n            listStyle: mergedOptions.markdown.listStyle,\n            mark: mergedOptions.markdown.mark,\n            mathBlockPreview: mergedOptions.markdown.mathBlockPreview,\n            paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,\n            sanitize: mergedOptions.markdown.sanitize,\n            toc: mergedOptions.markdown.toc,\n        });\n        if (options === null || options === void 0 ? void 0 : options.renderers) {\n            lute.SetJSRenderers({\n                renderers: {\n                    Md2HTML: options.renderers,\n                },\n            });\n        }\n        lute.SetHeadingID(true);\n        return lute.Md2HTML(mdText);\n    });\n};\nvar previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {\n    var mergedOptions, html, i18nScriptPrefix, i18nScriptID_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                mergedOptions = mergeOptions(options);\n                return [4 /*yield*/, md2html(markdown, mergedOptions)];\n            case 1:\n                html = _a.sent();\n                if (mergedOptions.transform) {\n                    html = mergedOptions.transform(html);\n                }\n                previewElement.innerHTML = html;\n                previewElement.classList.add(\"vditor-reset\");\n                if (!!mergedOptions.i18n) return [3 /*break*/, 5];\n                if (!![\"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) return [3 /*break*/, 2];\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            case 2:\n                i18nScriptPrefix = \"vditorI18nScript\";\n                i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1)];\n            case 3:\n                _a.sent();\n                _a.label = 4;\n            case 4: return [3 /*break*/, 6];\n            case 5:\n                window.VditorI18n = mergedOptions.i18n;\n                _a.label = 6;\n            case 6:\n                if (!mergedOptions.icon) return [3 /*break*/, 8];\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\")];\n            case 7:\n                _a.sent();\n                _a.label = 8;\n            case 8:\n                (0,setContentTheme/* setContentTheme */.Z)(mergedOptions.theme.current, mergedOptions.theme.path);\n                if (mergedOptions.anchor === 1) {\n                    previewElement.classList.add(\"vditor-reset--anchor\");\n                }\n                (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);\n                (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);\n                (0,mathRender/* mathRender */.H)(previewElement, {\n                    cdn: mergedOptions.cdn,\n                    math: mergedOptions.math,\n                });\n                (0,mermaidRender/* mermaidRender */.i)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);\n                (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);\n                (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);\n                (0,abcRender/* abcRender */.Q)(previewElement, mergedOptions.cdn);\n                if (mergedOptions.render.media.enable) {\n                    (0,mediaRender/* mediaRender */.Y)(previewElement);\n                }\n                if (mergedOptions.speech.enable) {\n                    speechRender(previewElement);\n                }\n                if (mergedOptions.anchor !== 0) {\n                    anchorRender(mergedOptions.anchor);\n                }\n                if (mergedOptions.after) {\n                    mergedOptions.after();\n                }\n                if (mergedOptions.lazyLoadImage) {\n                    lazyLoadImageRender(previewElement);\n                }\n                previewElement.addEventListener(\"click\", function (event) {\n                    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n                    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                        var headingElement = previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                        if (headingElement) {\n                            window.scrollTo(window.scrollX, headingElement.offsetTop);\n                        }\n                        return;\n                    }\n                });\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(971);\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(34);\n;// CONCATENATED MODULE: ./src/method.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function () {\n    function Vditor() {\n    }\n    /** 点击图片放大 */\n    Vditor.adapterRender = adapterRender;\n    /** 点击图片放大 */\n    Vditor.previewImage = preview_image/* previewImage */.E;\n    /** 为 element 中的代码块添加复制按钮 */\n    Vditor.codeRender = codeRender/* codeRender */.O;\n    /** 对 graphviz 进行渲染 */\n    Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;\n    /** 为 element 中的代码块进行高亮渲染 */\n    Vditor.highlightRender = highlightRender/* highlightRender */.s;\n    /** 对数学公式进行渲染 */\n    Vditor.mathRender = mathRender/* mathRender */.H;\n    /** 流程图/时序图/甘特图渲染 */\n    Vditor.mermaidRender = mermaidRender/* mermaidRender */.i;\n    /** 支持markdown的思维导图 */\n    Vditor.markmapRender = markmapRender/* markmapRender */.K;\n    /** flowchart.js 渲染 */\n    Vditor.flowchartRender = flowchartRender/* flowchartRender */.P;\n    /** 图表渲染 */\n    Vditor.chartRender = chartRender/* chartRender */.p;\n    /** 五线谱渲染 */\n    Vditor.abcRender = abcRender/* abcRender */.Q;\n    /** 脑图渲染 */\n    Vditor.mindmapRender = mindmapRender/* mindmapRender */.P;\n    /** plantuml渲染 */\n    Vditor.plantumlRender = plantumlRender/* plantumlRender */.B;\n    /** 大纲渲染 */\n    Vditor.outlineRender = outlineRender/* outlineRender */.k;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    Vditor.mediaRender = mediaRender/* mediaRender */.Y;\n    /** 对选中的文字进行阅读 */\n    Vditor.speechRender = speechRender;\n    /** 对图片进行懒加载 */\n    Vditor.lazyLoadImageRender = lazyLoadImageRender;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    Vditor.md2html = md2html;\n    /** 页面 Markdown 文章渲染 */\n    Vditor.preview = previewRender;\n    /** 设置代码主题 */\n    Vditor.setCodeTheme = setCodeTheme/* setCodeTheme */.Y;\n    /** 设置内容主题 */\n    Vditor.setContentTheme = setContentTheme/* setContentTheme */.Z;\n    return Vditor;\n}());\n/* harmony default export */ const method = (Vditor);\n\n\n/***/ }),\n\n/***/ 793:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ _VDITOR_VERSION),\n/* harmony export */   \"g\": () => (/* binding */ Constants)\n/* harmony export */ });\nvar _VDITOR_VERSION = \"3.10.5\";\n\nvar Constants = /** @class */ (function () {\n    function Constants() {\n    }\n    Constants.ZWSP = \"\\u200b\";\n    Constants.DROP_EDITOR = \"application/editor\";\n    Constants.MOBILE_WIDTH = 520;\n    Constants.CLASS_MENU_DISABLED = \"vditor-menu--disabled\";\n    Constants.EDIT_TOOLBARS = [\"emoji\", \"headings\", \"bold\", \"italic\", \"strike\", \"link\", \"list\",\n        \"ordered-list\", \"outdent\", \"indent\", \"check\", \"line\", \"quote\", \"code\", \"inline-code\", \"insert-after\",\n        \"insert-before\", \"upload\", \"record\", \"table\"];\n    Constants.CODE_THEME = [\"abap\", \"algol\", \"algol_nu\", \"arduino\", \"autumn\", \"borland\", \"bw\",\n        \"colorful\", \"dracula\", \"emacs\", \"friendly\", \"fruity\", \"github\", \"igor\", \"lovelace\", \"manni\", \"monokai\",\n        \"monokailight\", \"murphy\", \"native\", \"paraiso-dark\", \"paraiso-light\", \"pastie\", \"perldoc\", \"pygments\",\n        \"rainbow_dash\", \"rrt\", \"solarized-dark\", \"solarized-dark256\", \"solarized-light\", \"swapoff\", \"tango\", \"trac\",\n        \"vim\", \"vs\", \"xcode\", \"ant-design\"];\n    Constants.CODE_LANGUAGES = [\"mermaid\", \"echarts\", \"mindmap\", \"plantuml\", \"abc\", \"graphviz\", \"flowchart\", \"apache\",\n        \"js\", \"ts\", \"html\", \"markmap\",\n        // common\n        \"properties\", \"apache\", \"bash\", \"c\", \"csharp\", \"cpp\", \"css\", \"coffeescript\", \"diff\", \"go\", \"xml\", \"http\",\n        \"json\", \"java\", \"javascript\", \"kotlin\", \"less\", \"lua\", \"makefile\", \"markdown\", \"nginx\", \"objectivec\", \"php\",\n        \"php-template\", \"perl\", \"plaintext\", \"python\", \"python-repl\", \"r\", \"ruby\", \"rust\", \"scss\", \"sql\", \"shell\",\n        \"swift\", \"ini\", \"typescript\", \"vbnet\", \"yaml\",\n        \"ada\", \"clojure\", \"dart\", \"erb\", \"fortran\", \"gradle\", \"haskell\", \"julia\", \"julia-repl\", \"lisp\", \"matlab\",\n        \"pgsql\", \"powershell\", \"sql_more\", \"stata\", \"cmake\", \"mathematica\",\n        // ext\n        \"solidity\", \"yul\"\n    ];\n    Constants.CDN = \"https://unpkg.com/vditor@\".concat(\"3.10.5\");\n    Constants.MARKDOWN_OPTIONS = {\n        autoSpace: false,\n        gfmAutoLink: true,\n        codeBlockPreview: true,\n        fixTermTypo: false,\n        footnotes: true,\n        linkBase: \"\",\n        linkPrefix: \"\",\n        listStyle: false,\n        mark: false,\n        mathBlockPreview: true,\n        paragraphBeginningSpace: false,\n        sanitize: true,\n        toc: false,\n    };\n    Constants.HLJS_OPTIONS = {\n        enable: true,\n        lineNumber: false,\n        defaultLang: \"\",\n        style: \"github\",\n    };\n    Constants.MATH_OPTIONS = {\n        engine: \"KaTeX\",\n        inlineDigit: false,\n        macros: {},\n    };\n    Constants.THEME_OPTIONS = {\n        current: \"light\",\n        list: {\n            \"ant-design\": \"Ant Design\",\n            \"dark\": \"Dark\",\n            \"light\": \"Light\",\n            \"wechat\": \"WeChat\",\n        },\n        path: \"\".concat(Constants.CDN, \"/dist/css/content-theme\"),\n    };\n    return Constants;\n}());\n\n\n\n/***/ }),\n\n/***/ 386:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Q\": () => (/* binding */ abcRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar abcRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element);\n    if (abcElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/abcjs/abcjs_basic.min.js\"), \"vditorAbcjsScript\").then(function () {\n            abcElements.forEach(function (item) {\n                if (item.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    item.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                if (item.getAttribute(\"data-processed\") === \"true\") {\n                    return;\n                }\n                ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim());\n                item.style.overflowX = \"auto\";\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 781:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"abcRenderAdapter\": () => (/* binding */ abcRenderAdapter),\n/* harmony export */   \"chartRenderAdapter\": () => (/* binding */ chartRenderAdapter),\n/* harmony export */   \"flowchartRenderAdapter\": () => (/* binding */ flowchartRenderAdapter),\n/* harmony export */   \"graphvizRenderAdapter\": () => (/* binding */ graphvizRenderAdapter),\n/* harmony export */   \"markmapRenderAdapter\": () => (/* binding */ markmapRenderAdapter),\n/* harmony export */   \"mathRenderAdapter\": () => (/* binding */ mathRenderAdapter),\n/* harmony export */   \"mermaidRenderAdapter\": () => (/* binding */ mermaidRenderAdapter),\n/* harmony export */   \"mindmapRenderAdapter\": () => (/* binding */ mindmapRenderAdapter),\n/* harmony export */   \"plantumlRenderAdapter\": () => (/* binding */ plantumlRenderAdapter)\n/* harmony export */ });\nvar mathRenderAdapter = {\n    getCode: function (mathElement) { return mathElement.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-math\"); },\n};\nvar mermaidRenderAdapter = {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-mermaid\"); },\n};\nvar markmapRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-markmap\"); },\n};\nvar mindmapRenderAdapter = {\n    getCode: function (el) { return el.getAttribute(\"data-code\"); },\n    getElements: function (el) { return el.querySelectorAll(\".language-mindmap\"); },\n};\nvar chartRenderAdapter = {\n    getCode: function (el) { return el.innerText; },\n    getElements: function (el) { return el.querySelectorAll(\".language-echarts\"); },\n};\nvar abcRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-abc\"); },\n};\nvar graphvizRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-graphviz\"); },\n};\nvar flowchartRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-flowchart\"); },\n};\nvar plantumlRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-plantuml\"); },\n};\n\n\n/***/ }),\n\n/***/ 379:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"p\": () => (/* binding */ chartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar chartRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element);\n    if (echartsElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js\"), \"vditorEchartsScript\").then(function () {\n            echartsElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim();\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    var option = JSON.parse(text);\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption(option);\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"echarts render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 895:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"O\": () => (/* binding */ codeRender)\n/* harmony export */ });\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(528);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n\n\nvar codeRender = function (element, option) {\n    Array.from(element.querySelectorAll(\"pre > code\")).filter(function (e, index) {\n        if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n            e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n            return false;\n        }\n        if (e.classList.contains(\"language-mermaid\") || e.classList.contains(\"language-flowchart\") ||\n            e.classList.contains(\"language-echarts\") || e.classList.contains(\"language-mindmap\") ||\n            e.classList.contains(\"language-plantuml\") || e.classList.contains(\"language-markmap\") ||\n            e.classList.contains(\"language-abc\") || e.classList.contains(\"language-graphviz\") ||\n            e.classList.contains(\"language-math\")) {\n            return false;\n        }\n        if (e.style.maxHeight.indexOf(\"px\") > -1) {\n            return false;\n        }\n        // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67\n        if (element.classList.contains(\"vditor-preview\") && index > 5) {\n            return false;\n        }\n        return true;\n    }).forEach(function (e) {\n        var _a, _b, _c;\n        var codeText = e.innerText;\n        if (e.classList.contains(\"highlight-chroma\")) {\n            var codeElement = e.cloneNode(true);\n            codeElement.querySelectorAll(\".highlight-ln\").forEach(function (item) {\n                item.remove();\n            });\n            codeText = codeElement.innerText;\n        }\n        else if (codeText.endsWith(\"\\n\")) {\n            codeText = codeText.substr(0, codeText.length - 1);\n        }\n        var iconHTML = '<svg><use xlink:href=\"#vditor-icon-copy\"></use></svg>';\n        if (!document.getElementById(\"vditorIconScript\")) {\n            iconHTML = '<svg viewBox=\"0 0 32 32\"><path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path></svg>';\n        }\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-copy\";\n        divElement.innerHTML = \"<span aria-label=\\\"\".concat(((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copy) || \"复制\", \"\\\"\\nonmouseover=\\\"this.setAttribute('aria-label', '\").concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.copy) || \"复制\", \"')\\\"\\nclass=\\\"vditor-tooltipped vditor-tooltipped__w\\\"\\nonclick=\\\"this.previousElementSibling.select();document.execCommand('copy');this.setAttribute('aria-label', '\").concat(((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copied) || \"已复制\", \"');this.previousElementSibling.blur()\\\">\").concat(iconHTML, \"</span>\");\n        var textarea = document.createElement(\"textarea\");\n        textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);\n        divElement.insertAdjacentElement(\"afterbegin\", textarea);\n        if (option && option.renderMenu) {\n            option.renderMenu(e, divElement);\n        }\n        e.before(divElement);\n        e.style.maxHeight = (window.outerHeight - 40) + \"px\";\n        // https://github.com/Vanessa219/vditor/issues/1356\n        e.insertAdjacentHTML(\"afterend\", \"<span style=\\\"position: absolute\\\">\".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, \"</span>\"));\n    });\n};\n\n\n/***/ }),\n\n/***/ 169:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ flowchartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar flowchartRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element);\n    if (flowchartElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/flowchart.js/flowchart.min.js\"), \"vditorFlowchartScript\").then(function () {\n        flowchartElements.forEach(function (item) {\n            if (item.getAttribute(\"data-processed\") === \"true\") {\n                return;\n            }\n            var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item));\n            item.innerHTML = \"\";\n            flowchartObj.drawSVG(item);\n            item.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 572:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"v\": () => (/* binding */ graphvizRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar graphvizRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element);\n    if (graphvizElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/graphviz/viz.js\"), \"vditorGraphVizScript\").then(function () {\n        graphvizElements.forEach(function (e) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e);\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            if (e.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            try {\n                var blob = new Blob([\"importScripts('\".concat(document.getElementById(\"vditorGraphVizScript\").src.replace(\"viz.js\", \"full.render.js\"), \"');\")], { type: \"application/javascript\" });\n                var url = window.URL || window.webkitURL;\n                var blobUrl = url.createObjectURL(blob);\n                var worker = new Worker(blobUrl);\n                new Viz({ worker: worker })\n                    .renderSVGElement(code).then(function (result) {\n                    e.innerHTML = result.outerHTML;\n                }).catch(function (error) {\n                    e.innerHTML = \"graphviz render error: <br>\".concat(error);\n                    e.className = \"vditor-reset--error\";\n                });\n            }\n            catch (e) {\n                console.error(\"graphviz error\", e);\n            }\n            e.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 702:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"s\": () => (/* binding */ highlightRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(296);\n\n\n\nvar highlightRender = function (hljsOption, element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var style = hljsOption.style;\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) {\n        style = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".css\");\n    if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n    }\n    (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(\"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".css\"), \"vditorHljsStyle\");\n    if (hljsOption.enable === false) {\n        return;\n    }\n    var codes = element.querySelectorAll(\"pre > code\");\n    if (codes.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/highlight.pack.js\"), \"vditorHljsScript\").then(function () {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/solidity.min.js\"), \"vditorHljsSolidityScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/yul.min.js\"), \"vditorHljsYulScript\").then(function () {\n                element.querySelectorAll(\"pre > code\").forEach(function (block) {\n                    // ir & wysiwyg 区域不渲染\n                    if (block.parentElement.classList.contains(\"vditor-ir__marker--pre\") ||\n                        block.parentElement.classList.contains(\"vditor-wysiwyg__pre\")) {\n                        return;\n                    }\n                    if (block.classList.contains(\"language-mermaid\") || block.classList.contains(\"language-flowchart\") ||\n                        block.classList.contains(\"language-echarts\") || block.classList.contains(\"language-mindmap\") ||\n                        block.classList.contains(\"language-plantuml\") ||\n                        block.classList.contains(\"language-abc\") || block.classList.contains(\"language-graphviz\") ||\n                        block.classList.contains(\"language-math\")) {\n                        return;\n                    }\n                    if (hljsOption.defaultLang !== \"\" && block.className.indexOf(\"language-\") === -1) {\n                        block.classList.add(\"language-\" + hljsOption.defaultLang);\n                    }\n                    hljs.highlightElement(block);\n                    if (!hljsOption.lineNumber) {\n                        return;\n                    }\n                    block.classList.add(\"vditor-linenumber\");\n                    var linenNumberTemp = block.querySelector(\".vditor-linenumber__temp\");\n                    if (!linenNumberTemp) {\n                        linenNumberTemp = document.createElement(\"div\");\n                        linenNumberTemp.className = \"vditor-linenumber__temp\";\n                        block.insertAdjacentElement(\"beforeend\", linenNumberTemp);\n                    }\n                    var whiteSpace = getComputedStyle(block).whiteSpace;\n                    var isSoftWrap = false;\n                    if (whiteSpace === \"pre-wrap\" || whiteSpace === \"pre-line\") {\n                        isSoftWrap = true;\n                    }\n                    var lineNumberHTML = \"\";\n                    var lineList = block.textContent.split(/\\r\\n|\\r|\\n/g);\n                    lineList.pop();\n                    lineList.map(function (line) {\n                        var lineHeight = \"\";\n                        if (isSoftWrap) {\n                            linenNumberTemp.textContent = line || \"\\n\";\n                            lineHeight = \" style=\\\"height:\".concat(linenNumberTemp.getBoundingClientRect().height, \"px\\\"\");\n                        }\n                        lineNumberHTML += \"<span\".concat(lineHeight, \"></span>\");\n                    });\n                    linenNumberTemp.style.display = \"none\";\n                    lineNumberHTML = \"<span class=\\\"vditor-linenumber__rows\\\">\".concat(lineNumberHTML, \"</span>\");\n                    block.insertAdjacentHTML(\"beforeend\", lineNumberHTML);\n                });\n            });\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 593:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"K\": () => (/* binding */ markmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar enabled = {};\nvar transform = function (transformer, content) {\n    var result = transformer.transform(content);\n    var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; });\n    keys.forEach(function (key) {\n        enabled[key] = true;\n    });\n    var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts;\n    var markmap = window.markmap;\n    if (styles)\n        markmap.loadCSS(styles);\n    if (scripts)\n        markmap.loadJS(scripts);\n    return result;\n};\nvar init = function (el, code) {\n    var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS;\n    var transformer = new Transformer();\n    el.innerHTML = '<svg style=\"width:100%\"></svg>';\n    var svg = el.firstChild;\n    var mm = Markmap.create(svg, null);\n    var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter;\n    var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap;\n    var frontmatterOptions = deriveOptions(markmapOptions);\n    mm.setData(root, frontmatterOptions);\n    mm.fit();\n};\nvar markmapRender = function (element, cdn, theme) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element);\n    if (markmapElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/markmap/markmap.min.js\"), \"vditorMermaidScript\").then(function () {\n        markmapElements.forEach(function (item) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item);\n            if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            var render = document.createElement(\"div\");\n            render.className = \"language-markmap\";\n            item.parentNode.appendChild(render);\n            init(render, code);\n            if (item.parentNode.childNodes[0].nodeName == \"CODE\") {\n                item.parentNode.removeChild(item.parentNode.childNodes[0]);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 982:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ mathRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(998);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(296);\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(528);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\n\n\nvar mathRender = function (element, options) {\n    var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element);\n    if (mathElements.length === 0) {\n        return;\n    }\n    var defaultOptions = {\n        cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN,\n        math: {\n            engine: \"KaTeX\",\n            inlineDigit: false,\n            macros: {},\n        },\n    };\n    if (options && options.math) {\n        options.math =\n            Object.assign({}, defaultOptions.math, options.math);\n    }\n    options = Object.assign({}, defaultOptions, options);\n    if (options.math.engine === \"KaTeX\") {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_2__/* .addStyle */ .c)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.css?v=0.16.9\"), \"vditorKatexStyle\");\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.js?v=0.16.9\"), \"vditorKatexScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/mhchem.min.js?v=0.16.9\"), \"vditorKatexChemScript\").then(function () {\n                mathElements.forEach(function (mathElement) {\n                    if (mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                        mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                        return;\n                    }\n                    if (mathElement.getAttribute(\"data-math\")) {\n                        return;\n                    }\n                    var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement));\n                    mathElement.setAttribute(\"data-math\", math);\n                    try {\n                        mathElement.innerHTML = katex.renderToString(math, {\n                            displayMode: mathElement.tagName === \"DIV\",\n                            output: \"html\",\n                            macros: options.math.macros,\n                        });\n                    }\n                    catch (e) {\n                        mathElement.innerHTML = e.message;\n                        mathElement.className = \"language-math vditor-reset--error\";\n                    }\n                    mathElement.addEventListener(\"copy\", function (event) {\n                        event.stopPropagation();\n                        event.preventDefault();\n                        var vditorMathElement = event.currentTarget.closest(\".language-math\");\n                        event.clipboardData.setData(\"text/html\", vditorMathElement.innerHTML);\n                        event.clipboardData.setData(\"text/plain\", vditorMathElement.getAttribute(\"data-math\"));\n                    });\n                });\n            });\n        });\n    }\n    else if (options.math.engine === \"MathJax\") {\n        var chainAsync_1 = function (fns) {\n            if (fns.length === 0) {\n                return;\n            }\n            var curr = 0;\n            var last = fns[fns.length - 1];\n            var next = function () {\n                var fn = fns[curr++];\n                fn === last ? fn() : fn(next);\n            };\n            next();\n        };\n        if (!window.MathJax) {\n            window.MathJax = {\n                loader: {\n                    paths: { mathjax: \"\".concat(options.cdn, \"/dist/js/mathjax\") },\n                },\n                startup: {\n                    typeset: false,\n                },\n                tex: {\n                    macros: options.math.macros,\n                },\n            };\n            // https://github.com/Vanessa219/vditor/issues/1453\n            Object.assign(window.MathJax, options.math.mathJaxOptions);\n        }\n        // 循环加载会抛异常\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScriptSync */ .J)(\"\".concat(options.cdn, \"/dist/js/mathjax/tex-svg-full.js\"), \"protyleMathJaxScript\");\n        var renderMath_1 = function (mathElement, next) {\n            var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim();\n            var mathOptions = window.MathJax.getMetricsFor(mathElement);\n            mathOptions.display = mathElement.tagName === \"DIV\";\n            window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) {\n                mathElement.innerHTML = \"\";\n                mathElement.setAttribute(\"data-math\", math);\n                mathElement.append(node);\n                window.MathJax.startup.document.clear();\n                window.MathJax.startup.document.updateDocument();\n                var errorTextElement = node.querySelector('[data-mml-node=\"merror\"]');\n                if (errorTextElement && errorTextElement.textContent.trim() !== \"\") {\n                    mathElement.innerHTML = errorTextElement.textContent.trim();\n                    mathElement.className = \"vditor-reset--error\";\n                }\n                if (next) {\n                    next();\n                }\n            });\n        };\n        window.MathJax.startup.promise.then(function () {\n            var chains = [];\n            var _loop_1 = function (i) {\n                var mathElement = mathElements[i];\n                if (!mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") &&\n                    !mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\") &&\n                    !mathElement.getAttribute(\"data-math\") && (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim()) {\n                    chains.push(function (next) {\n                        if (i === mathElements.length - 1) {\n                            renderMath_1(mathElement);\n                        }\n                        else {\n                            renderMath_1(mathElement, next);\n                        }\n                    });\n                }\n            };\n            for (var i = 0; i < mathElements.length; i++) {\n                _loop_1(i);\n            }\n            chainAsync_1(chains);\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 431:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ mediaRender)\n/* harmony export */ });\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(446);\n\nvar videoRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<video controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></video>\"));\n    element.remove();\n};\nvar audioRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<audio controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></audio>\"));\n    element.remove();\n};\nvar iframeRender = function (element, url) {\n    var youtubeMatch = url.match(/\\/\\/(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?/);\n    var youkuMatch = url.match(/\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/);\n    var qqMatch = url.match(/\\/\\/v\\.qq\\.com\\/x\\/cover\\/.*\\/([^\\/]+)\\.html\\??.*/);\n    var coubMatch = url.match(/(?:www\\.|\\/\\/)coub\\.com\\/view\\/(\\w+)/);\n    var facebookMatch = url.match(/(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/);\n    var dailymotionMatch = url.match(/.+dailymotion.com\\/(video|hub)\\/(\\w+)\\?/);\n    var bilibiliMatch = url.match(/(?:www\\.|\\/\\/)bilibili\\.com\\/video\\/(\\w+)/);\n    var tedMatch = url.match(/(?:www\\.|\\/\\/)ted\\.com\\/talks\\/(\\w+)/);\n    if (youtubeMatch && youtubeMatch[1].length === 11) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//www.youtube.com/embed/\".concat(youtubeMatch[1] +\n            (youtubeMatch[2] ? \"?start=\" + youtubeMatch[2] : \"\"), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (youkuMatch && youkuMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//player.youku.com/embed/\".concat(youkuMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (qqMatch && qqMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"https://v.qq.com/txp/iframe/player.html?vid=\".concat(qqMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (coubMatch && coubMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"//coub.com/embed/\".concat(coubMatch[1], \"?muted=false&autostart=false&originalSize=true&startWithHD=true\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (facebookMatch && facebookMatch[0]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.facebook.com/plugins/video.php?href=\".concat(encodeURIComponent(facebookMatch[0]), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (dailymotionMatch && dailymotionMatch[2]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.dailymotion.com/embed/video/\".concat(dailymotionMatch[2], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (url.indexOf(\"bilibili.com\") > -1 && (url.indexOf(\"bvid=\") > -1 || (bilibiliMatch && bilibiliMatch[1]))) {\n        var params_1 = {\n            bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .o)(\"bvid\", url) || (bilibiliMatch && bilibiliMatch[1]),\n            page: \"1\",\n            high_quality: \"1\",\n            as_wide: \"1\",\n            allowfullscreen: \"true\",\n            autoplay: \"0\"\n        };\n        new URL(url.startsWith(\"http\") ? url : \"https:\" + url).search.split(\"&\").forEach(function (item, index) {\n            if (!item) {\n                return;\n            }\n            if (index === 0) {\n                item = item.substr(1);\n            }\n            var keyValue = item.split(\"=\");\n            params_1[keyValue[0]] = keyValue[1];\n        });\n        var src_1 = \"https://player.bilibili.com/player.html?\";\n        var keys_1 = Object.keys(params_1);\n        keys_1.forEach(function (key, index) {\n            src_1 += \"\".concat(key, \"=\").concat(params_1[key]);\n            if (index < keys_1.length - 1) {\n                src_1 += \"&\";\n            }\n        });\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"\".concat(src_1, \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (tedMatch && tedMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//embed.ted.com/talks/\".concat(tedMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n};\nvar mediaRender = function (element) {\n    if (!element) {\n        return;\n    }\n    element.querySelectorAll(\"a\").forEach(function (aElement) {\n        var url = aElement.getAttribute(\"href\");\n        if (!url) {\n            return;\n        }\n        if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) {\n            videoRender(aElement, url);\n        }\n        else if (url.match(/^.+.(mp3|wav|flac)$/)) {\n            audioRender(aElement, url);\n        }\n        else {\n            iframeRender(aElement, url);\n        }\n    });\n};\n\n\n/***/ }),\n\n/***/ 570:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"i\": () => (/* binding */ mermaidRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(446);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar mermaidRender = function (element, cdn, theme) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mermaidElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getElements(element);\n    if (mermaidElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/mermaid/mermaid.min.js\"), \"vditorMermaidScript\").then(function () {\n        var config = {\n            securityLevel: \"loose\",\n            altFontFamily: \"sans-serif\",\n            fontFamily: \"sans-serif\",\n            startOnLoad: false,\n            flowchart: {\n                htmlLabels: true,\n                useMaxWidth: !0\n            },\n            sequence: {\n                useMaxWidth: true,\n                diagramMarginX: 8,\n                diagramMarginY: 8,\n                boxMargin: 8,\n                showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers\n            },\n            gantt: {\n                leftPadding: 75,\n                rightPadding: 20\n            }\n        };\n        if (theme === \"dark\") {\n            config.theme = \"dark\";\n        }\n        mermaid.initialize(config);\n        mermaidElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {\n            var code, id, mermaidData, e_1, errorElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getCode(item);\n                        if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                            return [2 /*return*/];\n                        }\n                        id = \"mermaid\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .W)();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, mermaid.render(id, item.textContent)];\n                    case 2:\n                        mermaidData = _a.sent();\n                        item.innerHTML = mermaidData.svg;\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        errorElement = document.querySelector(\"#\" + id);\n                        item.innerHTML = \"\".concat(errorElement.outerHTML, \"<br>\\n<div style=\\\"text-align: left\\\"><small>\").concat(e_1.message.replace(/\\n/, \"<br>\"), \"</small></div>\");\n                        errorElement.parentElement.remove();\n                        return [3 /*break*/, 4];\n                    case 4:\n                        item.setAttribute(\"data-processed\", \"true\");\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n    });\n};\n\n\n/***/ }),\n\n/***/ 558:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ mindmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar mindmapRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mindmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getElements(element);\n    if (mindmapElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js\"), \"vditorEchartsScript\").then(function () {\n            mindmapElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getCode(e);\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption({\n                        series: [\n                            {\n                                data: [JSON.parse(decodeURIComponent(text))],\n                                initialTreeDepth: -1,\n                                itemStyle: {\n                                    borderWidth: 0,\n                                    color: \"#4285f4\",\n                                },\n                                label: {\n                                    backgroundColor: \"#f6f8fa\",\n                                    borderColor: \"#d1d5da\",\n                                    borderRadius: 5,\n                                    borderWidth: 0.5,\n                                    color: \"#586069\",\n                                    lineHeight: 20,\n                                    offset: [-5, 0],\n                                    padding: [0, 5],\n                                    position: \"insideRight\",\n                                },\n                                lineStyle: {\n                                    color: \"#d1d5da\",\n                                    width: 1,\n                                },\n                                roam: true,\n                                symbol: function (value, params) {\n                                    var _a;\n                                    if ((_a = params === null || params === void 0 ? void 0 : params.data) === null || _a === void 0 ? void 0 : _a.children) {\n                                        return \"circle\";\n                                    }\n                                    else {\n                                        return \"path://\";\n                                    }\n                                },\n                                type: \"tree\",\n                            },\n                        ],\n                        tooltip: {\n                            trigger: \"item\",\n                            triggerOn: \"mousemove\",\n                        },\n                    });\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"mindmap render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 182:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"k\": () => (/* binding */ outlineRender)\n/* harmony export */ });\n/* harmony import */ var _util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(946);\n/* harmony import */ var _mathRender__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(982);\n\n\nvar outlineRender = function (contentElement, targetElement, vditor) {\n    var tocHTML = \"\";\n    var ids = [];\n    Array.from(contentElement.children).forEach(function (item, index) {\n        if ((0,_util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByHeadings */ .W)(item)) {\n            if (vditor) {\n                var lastIndex = item.id.lastIndexOf(\"_\");\n                item.id = item.id.substring(0, lastIndex === -1 ? undefined : lastIndex) + \"_\" + index;\n            }\n            ids.push(item.id);\n            tocHTML += item.outerHTML.replace(\"<wbr>\", \"\");\n        }\n    });\n    if (tocHTML === \"\") {\n        targetElement.innerHTML = \"\";\n        return \"\";\n    }\n    var tempElement = document.createElement(\"div\");\n    if (vditor) {\n        vditor.lute.SetToC(true);\n        if (vditor.currentMode === \"wysiwyg\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else if (vditor.currentMode === \"ir\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else {\n            tempElement.innerHTML = vditor.lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        vditor.lute.SetToC(vditor.options.preview.markdown.toc);\n    }\n    else {\n        targetElement.classList.add(\"vditor-outline\");\n        var lute = Lute.New();\n        lute.SetToC(true);\n        tempElement.innerHTML = lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n    }\n    var headingsElement = tempElement.firstElementChild.querySelectorAll(\"li > span[data-target-id]\");\n    headingsElement.forEach(function (item, index) {\n        if (item.nextElementSibling && item.nextElementSibling.tagName === \"UL\") {\n            var iconHTML = \"<svg class='vditor-outline__action'><use xlink:href='#vditor-icon-down'></use></svg>\";\n            if (!document.getElementById(\"vditorIconScript\")) {\n                iconHTML = '<svg class=\"vditor-outline__action\" viewBox=\"0 0 32 32\"><path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path></svg>';\n            }\n            item.innerHTML = \"\".concat(iconHTML, \"<span>\").concat(item.innerHTML, \"</span>\");\n        }\n        else {\n            item.innerHTML = \"<svg></svg><span>\".concat(item.innerHTML, \"</span>\");\n        }\n        item.setAttribute(\"data-target-id\", ids[index]);\n    });\n    tocHTML = tempElement.firstElementChild.innerHTML;\n    if (headingsElement.length === 0) {\n        targetElement.innerHTML = \"\";\n        return tocHTML;\n    }\n    targetElement.innerHTML = tocHTML;\n    if (vditor) {\n        (0,_mathRender__WEBPACK_IMPORTED_MODULE_0__/* .mathRender */ .H)(targetElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    }\n    targetElement.firstElementChild.addEventListener(\"click\", function (event) {\n        var target = event.target;\n        while (target && !target.isEqualNode(targetElement)) {\n            if (target.classList.contains(\"vditor-outline__action\")) {\n                if (target.classList.contains(\"vditor-outline__action--close\")) {\n                    target.classList.remove(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:block\");\n                }\n                else {\n                    target.classList.add(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            }\n            else if (target.getAttribute(\"data-target-id\")) {\n                event.preventDefault();\n                event.stopPropagation();\n                var idElement = document.getElementById(target.getAttribute(\"data-target-id\"));\n                if (!idElement) {\n                    return;\n                }\n                if (vditor) {\n                    if (vditor.options.height === \"auto\") {\n                        var windowScrollY = idElement.offsetTop + vditor.element.offsetTop;\n                        if (!vditor.options.toolbarConfig.pin) {\n                            windowScrollY += vditor.toolbar.element.offsetHeight;\n                        }\n                        window.scrollTo(window.scrollX, windowScrollY);\n                    }\n                    else {\n                        if (vditor.element.offsetTop < window.scrollY) {\n                            window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                        }\n                        if (vditor.preview.element.contains(contentElement)) {\n                            contentElement.parentElement.scrollTop = idElement.offsetTop;\n                        }\n                        else {\n                            contentElement.scrollTop = idElement.offsetTop;\n                        }\n                    }\n                }\n                else {\n                    window.scrollTo(window.scrollX, idElement.offsetTop);\n                }\n                break;\n            }\n            target = target.parentElement;\n        }\n    });\n    return tocHTML;\n};\n\n\n/***/ }),\n\n/***/ 931:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"B\": () => (/* binding */ plantumlRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar plantumlRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var plantumlElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getElements(element);\n    if (plantumlElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/plantuml/plantuml-encoder.min.js\"), \"vditorPlantumlScript\").then(function () {\n        plantumlElements.forEach(function (e) {\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getCode(e).trim();\n            if (!text) {\n                return;\n            }\n            try {\n                e.innerHTML = \"<object type=\\\"image/svg+xml\\\" data=\\\"https://www.plantuml.com/plantuml/svg/~1\".concat(plantumlEncoder.encode(text), \"\\\"/>\");\n            }\n            catch (error) {\n                e.className = \"vditor-reset--error\";\n                e.innerHTML = \"plantuml render error: <br>\".concat(error);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 65:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ setLute)\n/* harmony export */ });\nvar setLute = function (options) {\n    var lute = Lute.New();\n    lute.PutEmojis(options.emojis);\n    lute.SetEmojiSite(options.emojiSite);\n    lute.SetHeadingAnchor(options.headingAnchor);\n    lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);\n    lute.SetAutoSpace(options.autoSpace);\n    lute.SetToC(options.toc);\n    lute.SetFootnotes(options.footnotes);\n    lute.SetFixTermTypo(options.fixTermTypo);\n    lute.SetVditorCodeBlockPreview(options.codeBlockPreview);\n    lute.SetVditorMathBlockPreview(options.mathBlockPreview);\n    lute.SetSanitize(options.sanitize);\n    lute.SetChineseParagraphBeginningSpace(options.paragraphBeginningSpace);\n    lute.SetRenderListStyle(options.listStyle);\n    lute.SetLinkBase(options.linkBase);\n    lute.SetLinkPrefix(options.linkPrefix);\n    lute.SetMark(options.mark);\n    lute.SetGFMAutoLink(options.gfmAutoLink);\n    if (options.lazyLoadImage) {\n        lute.SetImageLazyLoading(options.lazyLoadImage);\n    }\n    return lute;\n};\n\n\n/***/ }),\n\n/***/ 971:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"E\": () => (/* binding */ previewImage)\n/* harmony export */ });\nvar previewImage = function (oldImgElement, lang, theme) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (theme === void 0) { theme = \"classic\"; }\n    var oldImgRect = oldImgElement.getBoundingClientRect();\n    var height = 36;\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div class=\\\"vditor vditor-img\".concat(theme === \"dark\" ? \" vditor--dark\" : \"\", \"\\\">\\n    <div class=\\\"vditor-img__bar\\\">\\n      <span class=\\\"vditor-img__btn\\\" data-deg=\\\"0\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-redo\\\"></use></svg>\\n        \").concat(window.VditorI18n.spin, \"\\n      </span>\\n      <span class=\\\"vditor-img__btn\\\"  onclick=\\\"this.parentElement.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n        X &nbsp;\").concat(window.VditorI18n.close, \"\\n      </span>\\n    </div>\\n    <div class=\\\"vditor-img__img\\\" onclick=\\\"this.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n      <img style=\\\"width: \").concat(oldImgElement.width, \"px;height:\").concat(oldImgElement.height, \"px;transform: translate3d(\").concat(oldImgRect.left, \"px, \").concat(oldImgRect.top - height, \"px, 0)\\\" src=\\\"\").concat(oldImgElement.getAttribute(\"src\"), \"\\\">\\n    </div>\\n</div>\"));\n    document.body.style.overflow = \"hidden\";\n    // 图片从原始位置移动到预览正中间的动画效果\n    var imgElement = document.querySelector(\".vditor-img img\");\n    var translate3d = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2, \"px, 0)\");\n    setTimeout(function () {\n        imgElement.setAttribute(\"style\", \"transition: transform .3s ease-in-out;transform: \".concat(translate3d));\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n    // 旋转\n    var btnElement = document.querySelector(\".vditor-img__btn\");\n    btnElement.addEventListener(\"click\", function () {\n        var deg = parseInt(btnElement.getAttribute(\"data-deg\"), 10) + 90;\n        if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) {\n            imgElement.style.transform = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2, \"px, 0) rotateZ(\").concat(deg, \"deg)\");\n        }\n        else {\n            imgElement.style.transform = \"\".concat(translate3d, \" rotateZ(\").concat(deg, \"deg)\");\n        }\n        btnElement.setAttribute(\"data-deg\", deg.toString());\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n};\n\n\n/***/ }),\n\n/***/ 34:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ setCodeTheme)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(296);\n\n\nvar setCodeTheme = function (codeTheme, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(codeTheme)) {\n        codeTheme = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(codeTheme, \".css\");\n    if (!vditorHljsStyle) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n    else if (vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 652:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": () => (/* binding */ setContentTheme)\n/* harmony export */ });\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(296);\n\nvar setContentTheme = function (contentTheme, path) {\n    if (!contentTheme || !path) {\n        return;\n    }\n    var vditorContentTheme = document.getElementById(\"vditorContentTheme\");\n    var cssPath = \"\".concat(path, \"/\").concat(contentTheme, \".css\");\n    if (!vditorContentTheme) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n    else if (vditorContentTheme.getAttribute(\"href\") !== cssPath) {\n        vditorContentTheme.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 998:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"G\": () => (/* binding */ addScript),\n/* harmony export */   \"J\": () => (/* binding */ addScriptSync)\n/* harmony export */ });\nvar addScriptSync = function (path, id) {\n    if (document.getElementById(id)) {\n        return false;\n    }\n    var xhrObj = new XMLHttpRequest();\n    xhrObj.open(\"GET\", path, false);\n    xhrObj.setRequestHeader(\"Accept\", \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01\");\n    xhrObj.send(\"\");\n    var scriptElement = document.createElement(\"script\");\n    scriptElement.type = \"text/javascript\";\n    scriptElement.text = xhrObj.responseText;\n    scriptElement.id = id;\n    document.head.appendChild(scriptElement);\n};\nvar addScript = function (path, id) {\n    return new Promise(function (resolve, reject) {\n        if (document.getElementById(id)) {\n            // 脚本加载后再次调用直接返回\n            resolve(true);\n            return false;\n        }\n        var scriptElement = document.createElement(\"script\");\n        scriptElement.src = path;\n        scriptElement.async = true;\n        // 循环调用时 Chrome 不会重复请求 js\n        document.head.appendChild(scriptElement);\n        scriptElement.onerror = function (event) {\n            reject(event);\n        };\n        scriptElement.onload = function () {\n            if (document.getElementById(id)) {\n                // 循环调用需清除 DOM 中的 script 标签\n                scriptElement.remove();\n                resolve(true);\n                return false;\n            }\n            scriptElement.id = id;\n            resolve(true);\n        };\n    });\n};\n\n\n/***/ }),\n\n/***/ 296:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"c\": () => (/* binding */ addStyle)\n/* harmony export */ });\nvar addStyle = function (url, id) {\n    if (!document.getElementById(id)) {\n        var styleElement = document.createElement(\"link\");\n        styleElement.id = id;\n        styleElement.rel = \"stylesheet\";\n        styleElement.type = \"text/css\";\n        styleElement.href = url;\n        document.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n    }\n};\n\n\n/***/ }),\n\n/***/ 528:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ code160to32)\n/* harmony export */ });\nvar code160to32 = function (text) {\n    // 非打断空格转换为空格\n    return text.replace(/\\u00a0/g, \" \");\n};\n\n\n/***/ }),\n\n/***/ 796:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"G6\": () => (/* binding */ isSafari),\n/* harmony export */   \"Le\": () => (/* binding */ getEventName),\n/* harmony export */   \"i7\": () => (/* binding */ isChrome),\n/* harmony export */   \"ns\": () => (/* binding */ updateHotkeyTip),\n/* harmony export */   \"pK\": () => (/* binding */ accessLocalStorage),\n/* harmony export */   \"vU\": () => (/* binding */ isFirefox),\n/* harmony export */   \"yl\": () => (/* binding */ isCtrl)\n/* harmony export */ });\nvar isSafari = function () {\n    return navigator.userAgent.indexOf(\"Safari\") > -1 && navigator.userAgent.indexOf(\"Chrome\") === -1;\n};\nvar isFirefox = function () {\n    return navigator.userAgent.toLowerCase().indexOf(\"firefox\") > -1;\n};\nvar accessLocalStorage = function () {\n    try {\n        return typeof localStorage !== \"undefined\";\n    }\n    catch (e) {\n        return false;\n    }\n};\n// 用户 iPhone 点击延迟/需要双击的处理\nvar getEventName = function () {\n    if (navigator.userAgent.indexOf(\"iPhone\") > -1) {\n        return \"touchstart\";\n    }\n    else {\n        return \"click\";\n    }\n};\n// 区别 mac 上的 ctrl 和 meta\nvar isCtrl = function (event) {\n    if (navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0) {\n        // mac\n        if (event.metaKey && !event.ctrlKey) {\n            return true;\n        }\n        return false;\n    }\n    else {\n        if (!event.metaKey && event.ctrlKey) {\n            return true;\n        }\n        return false;\n    }\n};\n// Mac，Windows 快捷键展示\nvar updateHotkeyTip = function (hotkey) {\n    if (/Mac/.test(navigator.platform) || navigator.platform === \"iPhone\") {\n        if (hotkey.indexOf(\"⇧\") > -1 && isFirefox()) {\n            // Mac Firefox 按下 shift 后，key 同 windows 系统\n            hotkey = hotkey.replace(\";\", \":\").replace(\"=\", \"+\").replace(\"-\", \"_\");\n        }\n    }\n    else {\n        if (hotkey.startsWith(\"⌘\")) {\n            hotkey = hotkey.replace(\"⌘\", \"⌘+\");\n        }\n        else if (hotkey.startsWith(\"⌥\") && hotkey.substr(1, 1) !== \"⌘\") {\n            hotkey = hotkey.replace(\"⌥\", \"⌥+\");\n        }\n        else {\n            hotkey = hotkey.replace(\"⇧⌘\", \"⌘+⇧+\").replace(\"⌥⌘\", \"⌥+⌘+\");\n        }\n        hotkey = hotkey.replace(\"⌘\", \"Ctrl\").replace(\"⇧\", \"Shift\")\n            .replace(\"⌥\", \"Alt\");\n        if (hotkey.indexOf(\"Shift\") > -1) {\n            hotkey = hotkey.replace(\";\", \":\").replace(\"=\", \"+\").replace(\"-\", \"_\");\n        }\n    }\n    return hotkey;\n};\nvar isChrome = function () {\n    return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n};\n\n\n/***/ }),\n\n/***/ 446:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"W\": () => (/* binding */ genUUID),\n/* harmony export */   \"o\": () => (/* binding */ getSearch)\n/* harmony export */ });\nvar genUUID = function () { return ([1e7].toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {\n    return (parseInt(c, 10) ^ (window.crypto.getRandomValues(new Uint32Array(1))[0] & (15 >> (parseInt(c, 10) / 4)))).toString(16);\n}); };\nvar getSearch = function (key, link) {\n    if (link === void 0) { link = window.location.search; }\n    var params = link.substring(link.indexOf(\"?\"));\n    var hashIndex = params.indexOf(\"#\");\n    // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams\n    var urlSearchParams = new URLSearchParams(params.substring(0, hashIndex >= 0 ? hashIndex : undefined));\n    return urlSearchParams.get(key);\n};\n\n\n/***/ }),\n\n/***/ 118:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DX\": () => (/* binding */ getLastNode),\n/* harmony export */   \"E2\": () => (/* binding */ hasTopClosestByTag),\n/* harmony export */   \"F9\": () => (/* binding */ hasClosestBlock),\n/* harmony export */   \"JQ\": () => (/* binding */ hasTopClosestByClassName),\n/* harmony export */   \"O9\": () => (/* binding */ getTopList),\n/* harmony export */   \"a1\": () => (/* binding */ hasClosestByAttribute),\n/* harmony export */   \"fb\": () => (/* binding */ hasClosestByClassName),\n/* harmony export */   \"lG\": () => (/* binding */ hasClosestByMatchTag)\n/* harmony export */ });\n/* unused harmony export hasTopClosestByAttribute */\n/* harmony import */ var _hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(946);\n\nvar hasTopClosestByClassName = function (element, className) {\n    var closest = hasClosestByClassName(element, className);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByClassName(closest.parentElement, className);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByAttribute = function (element, attr, value) {\n    var closest = hasClosestByAttribute(element, attr, value);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByAttribute(closest.parentElement, attr, value);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByTag = function (element, nodeName) {\n    var closest = (0,_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__/* .hasClosestByTag */ .S)(element, nodeName);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = (0,_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_0__/* .hasClosestByTag */ .S)(closest.parentElement, nodeName);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar getTopList = function (element) {\n    var topUlElement = hasTopClosestByTag(element, \"UL\");\n    var topOlElement = hasTopClosestByTag(element, \"OL\");\n    var topListElement = topUlElement;\n    if (topOlElement && (!topUlElement || (topUlElement && topOlElement.contains(topUlElement)))) {\n        topListElement = topOlElement;\n    }\n    return topListElement;\n};\nvar hasClosestByAttribute = function (element, attr, value) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.getAttribute(attr) === value) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestBlock = function (element) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    var blockElement = hasClosestByAttribute(element, \"data-block\", \"0\");\n    if (blockElement) {\n        return blockElement;\n    }\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.tagName === \"H1\" ||\n            e.tagName === \"H2\" ||\n            e.tagName === \"H3\" ||\n            e.tagName === \"H4\" ||\n            e.tagName === \"H5\" ||\n            e.tagName === \"H6\" ||\n            e.tagName === \"P\" ||\n            e.tagName === \"BLOCKQUOTE\" ||\n            e.tagName === \"OL\" ||\n            e.tagName === \"UL\") {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByMatchTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName === nodeName) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByClassName = function (element, className) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.classList.contains(className)) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar getLastNode = function (node) {\n    while (node && node.lastChild) {\n        node = node.lastChild;\n    }\n    return node;\n};\n\n\n/***/ }),\n\n/***/ 946:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"S\": () => (/* binding */ hasClosestByTag),\n/* harmony export */   \"W\": () => (/* binding */ hasClosestByHeadings)\n/* harmony export */ });\n// NOTE: 减少 method.ts 打包，故从 hasClosest.ts 中拆分\nvar hasClosestByTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName.indexOf(nodeName) === 0) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByHeadings = function (element) {\n    var headingElement = hasClosestByTag(element, \"H\");\n    if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== \"HR\") {\n        return headingElement;\n    }\n    return false;\n};\n\n\n/***/ }),\n\n/***/ 2:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"T\": () => (/* binding */ merge)\n/* harmony export */ });\nvar merge = function () {\n    var options = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        options[_i] = arguments[_i];\n    }\n    var target = {};\n    var merger = function (obj) {\n        for (var prop in obj) {\n            if (obj.hasOwnProperty(prop)) {\n                if (Object.prototype.toString.call(obj[prop]) === \"[object Object]\") {\n                    target[prop] = merge(target[prop], obj[prop]);\n                }\n                else {\n                    target[prop] = obj[prop];\n                }\n            }\n        }\n    };\n    for (var i = 0; i < options.length; i++) {\n        merger(options[i]);\n    }\n    return target;\n};\n\n\n/***/ }),\n\n/***/ 307:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"$j\": () => (/* binding */ setSelectionByPosition),\n/* harmony export */   \"Gb\": () => (/* binding */ selectIsEditor),\n/* harmony export */   \"Hc\": () => (/* binding */ setSelectionFocus),\n/* harmony export */   \"Ny\": () => (/* binding */ getCursorPosition),\n/* harmony export */   \"ib\": () => (/* binding */ setRangeByWbr),\n/* harmony export */   \"im\": () => (/* binding */ getSelectPosition),\n/* harmony export */   \"oC\": () => (/* binding */ insertHTML),\n/* harmony export */   \"zh\": () => (/* binding */ getEditorRange)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _compatibility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(796);\n/* harmony import */ var _hasClosest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(118);\n\n\n\nvar getEditorRange = function (vditor) {\n    var range;\n    var element = vditor[vditor.currentMode].element;\n    if (getSelection().rangeCount > 0) {\n        range = getSelection().getRangeAt(0);\n        if (element.isEqualNode(range.startContainer) || element.contains(range.startContainer)) {\n            return range;\n        }\n    }\n    if (vditor[vditor.currentMode].range) {\n        return vditor[vditor.currentMode].range;\n    }\n    element.focus();\n    range = element.ownerDocument.createRange();\n    range.setStart(element, 0);\n    range.collapse(true);\n    return range;\n};\nvar getCursorPosition = function (editor) {\n    var range = window.getSelection().getRangeAt(0);\n    if (!editor.contains(range.startContainer) && !(0,_hasClosest__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByClassName */ .fb)(range.startContainer, \"vditor-panel--none\")) {\n        return {\n            left: 0,\n            top: 0,\n        };\n    }\n    var parentRect = editor.parentElement.getBoundingClientRect();\n    var cursorRect;\n    if (range.getClientRects().length === 0) {\n        if (range.startContainer.nodeType === 3) {\n            // 空行时，会出现没有 br 的情况，需要根据父元素 <p> 获取位置信息\n            var parent_1 = range.startContainer.parentElement;\n            if (parent_1 && parent_1.getClientRects().length > 0) {\n                cursorRect = parent_1.getClientRects()[0];\n            }\n            else {\n                return {\n                    left: 0,\n                    top: 0,\n                };\n            }\n        }\n        else {\n            var children = range.startContainer.children;\n            if (children[range.startOffset] &&\n                children[range.startOffset].getClientRects().length > 0) {\n                // markdown 模式回车\n                cursorRect = children[range.startOffset].getClientRects()[0];\n            }\n            else if (range.startContainer.childNodes.length > 0) {\n                // in table or code block\n                var cloneRange = range.cloneRange();\n                range.selectNode(range.startContainer.childNodes[Math.max(0, range.startOffset - 1)]);\n                cursorRect = range.getClientRects()[0];\n                range.setEnd(cloneRange.endContainer, cloneRange.endOffset);\n                range.setStart(cloneRange.startContainer, cloneRange.startOffset);\n            }\n            else {\n                cursorRect = range.startContainer.getClientRects()[0];\n            }\n            if (!cursorRect) {\n                var parentElement = range.startContainer.childNodes[range.startOffset];\n                while (!parentElement.getClientRects ||\n                    (parentElement.getClientRects && parentElement.getClientRects().length === 0)) {\n                    parentElement = parentElement.parentElement;\n                }\n                cursorRect = parentElement.getClientRects()[0];\n            }\n        }\n    }\n    else {\n        cursorRect = range.getClientRects()[0];\n    }\n    return {\n        left: cursorRect.left - parentRect.left,\n        top: cursorRect.top - parentRect.top,\n    };\n};\nvar selectIsEditor = function (editor, range) {\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return false;\n        }\n        else {\n            range = getSelection().getRangeAt(0);\n        }\n    }\n    var container = range.commonAncestorContainer;\n    return editor.isEqualNode(container) || editor.contains(container);\n};\nvar setSelectionFocus = function (range) {\n    var selection = window.getSelection();\n    selection.removeAllRanges();\n    selection.addRange(range);\n};\nvar getSelectPosition = function (selectElement, editorElement, range) {\n    var position = {\n        end: 0,\n        start: 0,\n    };\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return position;\n        }\n        range = window.getSelection().getRangeAt(0);\n    }\n    if (selectIsEditor(editorElement, range)) {\n        var preSelectionRange = range.cloneRange();\n        if (selectElement.childNodes[0] && selectElement.childNodes[0].childNodes[0]) {\n            preSelectionRange.setStart(selectElement.childNodes[0].childNodes[0], 0);\n        }\n        else {\n            preSelectionRange.selectNodeContents(selectElement);\n        }\n        preSelectionRange.setEnd(range.startContainer, range.startOffset);\n        position.start = preSelectionRange.toString().length;\n        position.end = position.start + range.toString().length;\n    }\n    return position;\n};\nvar setSelectionByPosition = function (start, end, editor) {\n    var charIndex = 0;\n    var line = 0;\n    var pNode = editor.childNodes[line];\n    var foundStart = false;\n    var stop = false;\n    start = Math.max(0, start);\n    end = Math.max(0, end);\n    var range = editor.ownerDocument.createRange();\n    range.setStart(pNode || editor, 0);\n    range.collapse(true);\n    while (!stop && pNode) {\n        var nextCharIndex = charIndex + pNode.textContent.length;\n        if (!foundStart && start >= charIndex && start <= nextCharIndex) {\n            if (start === 0) {\n                range.setStart(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setStart(pNode.childNodes[0], start - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setStartBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setStartAfter(pNode);\n                }\n            }\n            foundStart = true;\n            if (start === end) {\n                stop = true;\n                break;\n            }\n        }\n        if (foundStart && end >= charIndex && end <= nextCharIndex) {\n            if (end === 0) {\n                range.setEnd(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setEnd(pNode.childNodes[0], end - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setEndBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setEndAfter(pNode);\n                }\n            }\n            stop = true;\n        }\n        charIndex = nextCharIndex;\n        pNode = editor.childNodes[++line];\n    }\n    if (!stop && editor.childNodes[line - 1]) {\n        range.setStartBefore(editor.childNodes[line - 1]);\n    }\n    setSelectionFocus(range);\n    return range;\n};\nvar setRangeByWbr = function (element, range) {\n    var wbrElement = element.querySelector(\"wbr\");\n    if (!wbrElement) {\n        return;\n    }\n    if (!wbrElement.previousElementSibling) {\n        if (wbrElement.previousSibling) {\n            // text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n        else if (wbrElement.nextSibling) {\n            if (wbrElement.nextSibling.nodeType === 3) {\n                // <wbr>text\n                range.setStart(wbrElement.nextSibling, 0);\n            }\n            else {\n                // <wbr><br> https://github.com/Vanessa219/vditor/issues/400\n                range.setStartBefore(wbrElement.nextSibling);\n            }\n        }\n        else {\n            // 内容为空\n            range.setStart(wbrElement.parentElement, 0);\n        }\n    }\n    else {\n        if (wbrElement.previousElementSibling.isSameNode(wbrElement.previousSibling)) {\n            if (wbrElement.previousElementSibling.lastChild) {\n                // <em>text</em><wbr>\n                range.setStartBefore(wbrElement);\n                range.collapse(true);\n                setSelectionFocus(range);\n                // fix Chrome set range bug: **c**\n                if ((0,_compatibility__WEBPACK_IMPORTED_MODULE_2__/* .isChrome */ .i7)() && (wbrElement.previousElementSibling.tagName === \"EM\" ||\n                    wbrElement.previousElementSibling.tagName === \"STRONG\" ||\n                    wbrElement.previousElementSibling.tagName === \"S\")) {\n                    range.insertNode(document.createTextNode(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP));\n                    range.collapse(false);\n                }\n                wbrElement.remove();\n                return;\n            }\n            else {\n                // <br><wbr>\n                range.setStartAfter(wbrElement.previousElementSibling);\n            }\n        }\n        else {\n            // <em>text</em>text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n    }\n    range.collapse(true);\n    wbrElement.remove();\n    setSelectionFocus(range);\n};\nvar insertHTML = function (html, vditor) {\n    // 使用 lute 方法会添加 p 元素，只有一个 p 元素的时候进行删除\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var tempBlockElement = tempElement.querySelectorAll(\"p\");\n    if (tempBlockElement.length === 1 && !tempBlockElement[0].previousSibling && !tempBlockElement[0].nextSibling &&\n        vditor[vditor.currentMode].element.children.length > 0 && tempElement.firstElementChild.tagName === \"P\") {\n        html = tempBlockElement[0].innerHTML.trim();\n    }\n    var pasteElement = document.createElement(\"div\");\n    pasteElement.innerHTML = html;\n    var range = getEditorRange(vditor);\n    if (range.toString() !== \"\") {\n        vditor[vditor.currentMode].preventInput = true;\n        document.execCommand(\"delete\", false, \"\");\n    }\n    if (pasteElement.firstElementChild &&\n        pasteElement.firstElementChild.getAttribute(\"data-block\") === \"0\") {\n        // 粘贴内容为块元素时，应在下一段落中插入\n        pasteElement.lastElementChild.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        var blockElement = (0,_hasClosest__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestBlock */ .F9)(range.startContainer);\n        if (!blockElement) {\n            vditor[vditor.currentMode].element.insertAdjacentHTML(\"beforeend\", pasteElement.innerHTML);\n        }\n        else {\n            blockElement.insertAdjacentHTML(\"afterend\", pasteElement.innerHTML);\n        }\n        setRangeByWbr(vditor[vditor.currentMode].element, range);\n    }\n    else {\n        var pasteTemplate = document.createElement(\"template\");\n        pasteTemplate.innerHTML = html;\n        range.insertNode(pasteTemplate.content.cloneNode(true));\n        range.collapse(false);\n        setSelectionFocus(range);\n    }\n};\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n(() => {\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ src)\n});\n\n// EXTERNAL MODULE: ./src/method.ts + 4 modules\nvar method = __webpack_require__(664);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(793);\n// EXTERNAL MODULE: ./src/ts/util/code160to32.ts\nvar code160to32 = __webpack_require__(528);\n;// CONCATENATED MODULE: ./src/ts/markdown/getMarkdown.ts\n\nvar getMarkdown = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return (0,code160to32/* code160to32 */.X)(\"\".concat(vditor.sv.element.textContent, \"\\n\").replace(/\\n\\n$/, \"\\n\"));\n    }\n    else if (vditor.currentMode === \"wysiwyg\") {\n        return vditor.lute.VditorDOM2Md(vditor.wysiwyg.element.innerHTML);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        return vditor.lute.VditorIRDOM2Md(vditor.ir.element.innerHTML);\n    }\n    return \"\";\n};\n\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(998);\n;// CONCATENATED MODULE: ./src/ts/devtools/index.ts\n\n\nvar DevTools = /** @class */ (function () {\n    function DevTools() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-devtools\";\n        this.element.innerHTML = '<div class=\"vditor-reset--error\"></div><div style=\"height: 100%;\"></div>';\n    }\n    DevTools.prototype.renderEchart = function (vditor) {\n        var _this = this;\n        if (vditor.devtools.element.style.display !== \"block\") {\n            return;\n        }\n        (0,addScript/* addScript */.G)(\"\".concat(vditor.options.cdn, \"/dist/js/echarts/echarts.min.js\"), \"vditorEchartsScript\").then(function () {\n            if (!_this.ASTChart) {\n                _this.ASTChart = echarts.init(vditor.devtools.element.lastElementChild);\n            }\n            try {\n                _this.element.lastElementChild.style.display = \"block\";\n                _this.element.firstElementChild.innerHTML = \"\";\n                _this.ASTChart.setOption({\n                    series: [\n                        {\n                            data: JSON.parse(vditor.lute.RenderEChartsJSON(getMarkdown(vditor))),\n                            initialTreeDepth: -1,\n                            label: {\n                                align: \"left\",\n                                backgroundColor: \"rgba(68, 77, 86, .68)\",\n                                borderRadius: 3,\n                                color: \"#d1d5da\",\n                                fontSize: 12,\n                                lineHeight: 12,\n                                offset: [9, 12],\n                                padding: [2, 4, 2, 4],\n                                position: \"top\",\n                                verticalAlign: \"middle\",\n                            },\n                            lineStyle: {\n                                color: \"#4285f4\",\n                                type: \"curve\",\n                                width: 1,\n                            },\n                            orient: \"vertical\",\n                            roam: true,\n                            type: \"tree\",\n                        },\n                    ],\n                    toolbox: {\n                        bottom: 25,\n                        emphasis: {\n                            iconStyle: {\n                                color: \"#4285f4\",\n                            },\n                        },\n                        feature: {\n                            restore: {\n                                show: true,\n                            },\n                            saveAsImage: {\n                                show: true,\n                            },\n                        },\n                        right: 15,\n                        show: true,\n                    },\n                });\n                _this.ASTChart.resize();\n            }\n            catch (e) {\n                _this.element.lastElementChild.style.display = \"none\";\n                _this.element.firstElementChild.innerHTML = e;\n            }\n        });\n    };\n    return DevTools;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/util/compatibility.ts\nvar compatibility = __webpack_require__(796);\n;// CONCATENATED MODULE: ./src/ts/toolbar/setToolbar.ts\n\n\nvar removeCurrentToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && itemElement.classList.contains(\"vditor-menu--current\")) {\n            itemElement.classList.remove(\"vditor-menu--current\");\n        }\n    });\n};\nvar setCurrentToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && !itemElement.classList.contains(\"vditor-menu--current\")) {\n            itemElement.classList.add(\"vditor-menu--current\");\n        }\n    });\n};\nvar enableToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && itemElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            itemElement.classList.remove(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED);\n        }\n    });\n};\nvar disableToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        var itemElement = toolbar[name].children[0];\n        if (itemElement && !itemElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            itemElement.classList.add(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED);\n        }\n    });\n};\nvar hideToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        if (toolbar[name]) {\n            toolbar[name].style.display = \"none\";\n        }\n    });\n};\nvar showToolbar = function (toolbar, names) {\n    names.forEach(function (name) {\n        if (!toolbar[name]) {\n            return;\n        }\n        if (toolbar[name]) {\n            toolbar[name].style.display = \"block\";\n        }\n    });\n};\n// \"subToolbar\", \"hint\", \"popover\"\nvar hidePanel = function (vditor, panels, exceptElement) {\n    if (panels.includes(\"subToolbar\")) {\n        vditor.toolbar.element.querySelectorAll(\".vditor-hint\").forEach(function (item) {\n            if (exceptElement && item.isEqualNode(exceptElement)) {\n                return;\n            }\n            item.style.display = \"none\";\n        });\n        if (vditor.toolbar.elements.emoji) {\n            vditor.toolbar.elements.emoji.lastElementChild.style.display = \"none\";\n        }\n    }\n    if (panels.includes(\"hint\")) {\n        vditor.hint.element.style.display = \"none\";\n    }\n    if (vditor.wysiwyg.popover && panels.includes(\"popover\")) {\n        vditor.wysiwyg.popover.style.display = \"none\";\n    }\n};\nvar toggleSubMenu = function (vditor, panelElement, actionBtn, level) {\n    actionBtn.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        if (actionBtn.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n            return;\n        }\n        vditor.toolbar.element.querySelectorAll(\".vditor-hint--current\").forEach(function (item) {\n            item.classList.remove(\"vditor-hint--current\");\n        });\n        if (panelElement.style.display === \"block\") {\n            panelElement.style.display = \"none\";\n        }\n        else {\n            hidePanel(vditor, [\"subToolbar\", \"hint\", \"popover\"], actionBtn.parentElement.parentElement);\n            if (!actionBtn.classList.contains(\"vditor-tooltipped\")) {\n                actionBtn.classList.add(\"vditor-hint--current\");\n            }\n            panelElement.style.display = \"block\";\n            if (vditor.toolbar.element.getBoundingClientRect().right - actionBtn.getBoundingClientRect().right < 250) {\n                panelElement.classList.add(\"vditor-panel--left\");\n            }\n            else {\n                panelElement.classList.remove(\"vditor-panel--left\");\n            }\n        }\n    });\n};\n\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(118);\n// EXTERNAL MODULE: ./src/ts/util/hasClosestByHeadings.ts\nvar hasClosestByHeadings = __webpack_require__(946);\n;// CONCATENATED MODULE: ./src/ts/util/log.ts\nvar log = function (method, content, type, print) {\n    if (print) {\n        // @ts-ignore\n        console.log(\"\".concat(method, \" - \").concat(type, \": \").concat(content));\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(386);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(379);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(895);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(169);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(572);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(702);\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(982);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(570);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(593);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(931);\n;// CONCATENATED MODULE: ./src/ts/util/processCode.ts\n\n\n\n\n\n\n\n\n\n\n\nvar processPasteCode = function (html, text, type) {\n    if (type === void 0) { type = \"sv\"; }\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var isCode = false;\n    if (tempElement.childElementCount === 1 &&\n        tempElement.lastElementChild.style.fontFamily.indexOf(\"monospace\") > -1) {\n        // VS Code\n        isCode = true;\n    }\n    var pres = tempElement.querySelectorAll(\"pre\");\n    if (tempElement.childElementCount === 1 && pres.length === 1\n        && pres[0].className !== \"vditor-wysiwyg\"\n        && pres[0].className !== \"vditor-sv\") {\n        // IDE\n        isCode = true;\n    }\n    if (html.indexOf('\\n<p class=\"p1\">') === 0) {\n        // Xcode\n        isCode = true;\n    }\n    if (tempElement.childElementCount === 1 && tempElement.firstElementChild.tagName === \"TABLE\" &&\n        tempElement.querySelector(\".line-number\") && tempElement.querySelector(\".line-content\")) {\n        // 网页源码\n        isCode = true;\n    }\n    if (isCode) {\n        var code = text || html;\n        if (/\\n/.test(code) || pres.length === 1) {\n            if (type === \"wysiwyg\") {\n                return \"<div class=\\\"vditor-wysiwyg__block\\\" data-block=\\\"0\\\" data-type=\\\"code-block\\\"><pre><code>\".concat(code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"), \"<wbr></code></pre></div>\");\n            }\n            return \"\\n```\\n\" + code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\") + \"\\n```\";\n        }\n        else {\n            if (type === \"wysiwyg\") {\n                return \"<code>\".concat(code.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"), \"</code><wbr>\");\n            }\n            return \"`\".concat(code, \"`\");\n        }\n    }\n    return false;\n};\nvar processCodeRender = function (previewPanel, vditor) {\n    if (!previewPanel) {\n        return;\n    }\n    if (previewPanel.parentElement.getAttribute(\"data-type\") === \"html-block\") {\n        previewPanel.setAttribute(\"data-render\", \"1\");\n        return;\n    }\n    var language = previewPanel.firstElementChild.className.replace(\"language-\", \"\");\n    if (language === \"abc\") {\n        (0,abcRender/* abcRender */.Q)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"mermaid\") {\n        (0,mermaidRender/* mermaidRender */.i)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"markmap\") {\n        (0,markmapRender/* markmapRender */.K)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"flowchart\") {\n        (0,flowchartRender/* flowchartRender */.P)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"echarts\") {\n        (0,chartRender/* chartRender */.p)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"mindmap\") {\n        (0,mindmapRender/* mindmapRender */.P)(previewPanel, vditor.options.cdn, vditor.options.theme);\n    }\n    else if (language === \"plantuml\") {\n        (0,plantumlRender/* plantumlRender */.B)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"graphviz\") {\n        (0,graphvizRender/* graphvizRender */.v)(previewPanel, vditor.options.cdn);\n    }\n    else if (language === \"math\") {\n        (0,mathRender/* mathRender */.H)(previewPanel, { cdn: vditor.options.cdn, math: vditor.options.preview.math });\n    }\n    else {\n        var cRender = vditor.options.customRenders.find(function (item) {\n            if (item.language === language) {\n                item.render(previewPanel, vditor);\n                return true;\n            }\n        });\n        if (!cRender) {\n            (0,highlightRender/* highlightRender */.s)(Object.assign({}, vditor.options.preview.hljs), previewPanel, vditor.options.cdn);\n            (0,codeRender/* codeRender */.O)(previewPanel, vditor.options.preview.hljs);\n        }\n    }\n    previewPanel.setAttribute(\"data-render\", \"1\");\n};\n\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar selection = __webpack_require__(307);\n;// CONCATENATED MODULE: ./src/ts/util/toc.ts\n\n\n\n\nvar renderToc = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return;\n    }\n    var editorElement = vditor[vditor.currentMode].element;\n    var tocHTML = vditor.outline.render(vditor);\n    if (tocHTML === \"\") {\n        tocHTML = \"[ToC]\";\n    }\n    editorElement.querySelectorAll('[data-type=\"toc-block\"]').forEach(function (item) {\n        item.innerHTML = tocHTML;\n        (0,mathRender/* mathRender */.H)(item, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    });\n};\nvar clickToc = function (event, vditor) {\n    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n        var headingElement = vditor[vditor.currentMode].element.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n        if (headingElement) {\n            if (vditor.options.height === \"auto\") {\n                var windowScrollY = headingElement.offsetTop + vditor.element.offsetTop;\n                if (!vditor.options.toolbarConfig.pin) {\n                    windowScrollY += vditor.toolbar.element.offsetHeight;\n                }\n                window.scrollTo(window.scrollX, windowScrollY);\n            }\n            else {\n                if (vditor.element.offsetTop < window.scrollY) {\n                    window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                }\n                vditor[vditor.currentMode].element.scrollTop = headingElement.offsetTop;\n            }\n        }\n        return;\n    }\n};\nvar keydownToc = function (blockElement, vditor, event, range) {\n    // toc 前无元素，插入空块\n    if (blockElement.previousElementSibling &&\n        blockElement.previousElementSibling.classList.contains(\"vditor-toc\")) {\n        if (event.key === \"Backspace\" &&\n            (0,selection/* getSelectPosition */.im)(blockElement, vditor[vditor.currentMode].element, range).start === 0) {\n            blockElement.previousElementSibling.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n        if (insertBeforeBlock(vditor, event, range, blockElement, blockElement.previousElementSibling)) {\n            return true;\n        }\n    }\n    // toc 后无元素，插入空块\n    if (blockElement.nextElementSibling &&\n        blockElement.nextElementSibling.classList.contains(\"vditor-toc\")) {\n        if (event.key === \"Delete\" &&\n            (0,selection/* getSelectPosition */.im)(blockElement, vditor[vditor.currentMode].element, range).start\n                >= blockElement.textContent.trimRight().length) {\n            blockElement.nextElementSibling.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n        if (insertAfterBlock(vditor, event, range, blockElement, blockElement.nextElementSibling)) {\n            return true;\n        }\n    }\n    // toc 删除\n    if (event.key === \"Backspace\" || event.key === \"Delete\") {\n        var tocElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-toc\");\n        if (tocElement) {\n            tocElement.remove();\n            execAfterRender(vditor);\n            return true;\n        }\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/input.ts\n\n\n\n\n\n\n\n\n\n\nvar input = function (vditor, range, ignoreSpace, event) {\n    if (ignoreSpace === void 0) { ignoreSpace = false; }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    // 前后可以输入空格\n    if (blockElement && !ignoreSpace && blockElement.getAttribute(\"data-type\") !== \"code-block\") {\n        if ((isHrMD(blockElement.innerHTML) && blockElement.previousElementSibling) ||\n            isHeadingMD(blockElement.innerHTML)) {\n            return;\n        }\n        // 前后空格处理\n        var startOffset = (0,selection/* getSelectPosition */.im)(blockElement, vditor.ir.element, range).start;\n        // 开始可以输入空格\n        var startSpace = true;\n        for (var i = startOffset - 1; \n        // 软换行后有空格\n        i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n            if (blockElement.textContent.charAt(i) !== \" \" &&\n                // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                blockElement.textContent.charAt(i) !== \"\\t\") {\n                startSpace = false;\n                break;\n            }\n        }\n        if (startOffset === 0) {\n            startSpace = false;\n        }\n        // 结尾可以输入空格\n        var endSpace = true;\n        for (var i = startOffset - 1; i < blockElement.textContent.length; i++) {\n            if (blockElement.textContent.charAt(i) !== \" \" && blockElement.textContent.charAt(i) !== \"\\n\") {\n                endSpace = false;\n                break;\n            }\n        }\n        if (startSpace) {\n            if (typeof vditor.options.input === \"function\") {\n                vditor.options.input(getMarkdown(vditor));\n            }\n            return;\n        }\n        if (endSpace) {\n            var markerElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__marker\");\n            if (markerElement) {\n                // inline marker space https://github.com/Vanessa219/vditor/issues/239\n            }\n            else {\n                var previousNode = range.startContainer.previousSibling;\n                if (previousNode && previousNode.nodeType !== 3 && previousNode.classList.contains(\"vditor-ir__node--expand\")) {\n                    // FireFox https://github.com/Vanessa219/vditor/issues/239\n                    previousNode.classList.remove(\"vditor-ir__node--expand\");\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n                return;\n            }\n        }\n    }\n    vditor.ir.element.querySelectorAll(\".vditor-ir__node--expand\").forEach(function (item) {\n        item.classList.remove(\"vditor-ir__node--expand\");\n    });\n    if (!blockElement) {\n        // 使用顶级块元素，应使用 innerHTML\n        blockElement = vditor.ir.element;\n    }\n    // document.exeComment insertHTML 会插入 wbr\n    if (!blockElement.querySelector(\"wbr\")) {\n        var previewRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n        if (previewRenderElement) {\n            previewRenderElement.previousElementSibling.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        }\n        else {\n            range.insertNode(document.createElement(\"wbr\"));\n        }\n    }\n    // 清除浏览器自带的样式\n    blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n        item.removeAttribute(\"style\");\n    });\n    if (blockElement.getAttribute(\"data-type\") === \"link-ref-defs-block\") {\n        // 修改链接引用\n        blockElement = vditor.ir.element;\n    }\n    var isIRElement = blockElement.isEqualNode(vditor.ir.element);\n    var footnoteElement = (0,hasClosest/* hasClosestByAttribute */.a1)(blockElement, \"data-type\", \"footnotes-block\");\n    var html = \"\";\n    if (!isIRElement) {\n        var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"BLOCKQUOTE\");\n        // 列表需要到最顶层\n        var topListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (topListElement) {\n            blockElement = topListElement;\n        }\n        // 应到引用层，否则 > --- 会解析为 front-matter；列表中有 blockquote 则解析 blockquote；blockquote 中有列表则解析列表\n        if (blockquoteElement && (!topListElement || (topListElement && !blockquoteElement.contains(topListElement)))) {\n            blockElement = blockquoteElement;\n        }\n        // 修改脚注\n        if (footnoteElement) {\n            blockElement = footnoteElement;\n        }\n        html = blockElement.outerHTML;\n        if (blockElement.tagName === \"UL\" || blockElement.tagName === \"OL\") {\n            // 如果为列表的话，需要把上下的列表都重绘\n            var listPrevElement = blockElement.previousElementSibling;\n            var listNextElement = blockElement.nextElementSibling;\n            if (listPrevElement && (listPrevElement.tagName === \"UL\" || listPrevElement.tagName === \"OL\")) {\n                html = listPrevElement.outerHTML + html;\n                listPrevElement.remove();\n            }\n            if (listNextElement && (listNextElement.tagName === \"UL\" || listNextElement.tagName === \"OL\")) {\n                html = html + listNextElement.outerHTML;\n                listNextElement.remove();\n            }\n            // firefox 列表回车不会产生新的 list item https://github.com/Vanessa219/vditor/issues/194\n            html = html.replace(\"<div><wbr><br></div>\", \"<li><p><wbr><br></p></li>\");\n        }\n        else if (blockElement.previousElementSibling &&\n            blockElement.previousElementSibling.textContent.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") !== \"\" &&\n            event && event.inputType === \"insertParagraph\") {\n            // 换行时需要处理上一段落\n            html = blockElement.previousElementSibling.outerHTML + html;\n            blockElement.previousElementSibling.remove();\n        }\n        if (!blockElement.innerText.startsWith(\"```\")) {\n            // 添加链接引用\n            vditor.ir.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n                if (item && !blockElement.isEqualNode(item)) {\n                    html += item.outerHTML;\n                    item.remove();\n                }\n            });\n            // 添加脚注\n            vditor.ir.element.querySelectorAll(\"[data-type='footnotes-block']\").forEach(function (item) {\n                if (item && !blockElement.isEqualNode(item)) {\n                    html += item.outerHTML;\n                    item.remove();\n                }\n            });\n        }\n    }\n    else {\n        html = blockElement.innerHTML;\n    }\n    log(\"SpinVditorIRDOM\", html, \"argument\", vditor.options.debugger);\n    html = vditor.lute.SpinVditorIRDOM(html);\n    log(\"SpinVditorIRDOM\", html, \"result\", vditor.options.debugger);\n    if (isIRElement) {\n        blockElement.innerHTML = html;\n    }\n    else {\n        blockElement.outerHTML = html;\n        // 更新正文中的 tip\n        if (footnoteElement) {\n            var footnoteItemElement = (0,hasClosest/* hasClosestByAttribute */.a1)(vditor.ir.element.querySelector(\"wbr\"), \"data-type\", \"footnotes-def\");\n            if (footnoteItemElement) {\n                var footnoteItemText = footnoteItemElement.textContent;\n                var marker = footnoteItemText.substring(1, footnoteItemText.indexOf(\"]:\"));\n                var footnoteRefElement = vditor.ir.element.querySelector(\"sup[data-type=\\\"footnotes-ref\\\"][data-footnotes-label=\\\"\".concat(marker, \"\\\"]\"));\n                if (footnoteRefElement) {\n                    footnoteRefElement.setAttribute(\"aria-label\", footnoteItemText.substr(marker.length + 3).trim().substr(0, 24));\n                }\n            }\n        }\n    }\n    //  linkref 合并及添加\n    var firstLinkRefDefElement;\n    var allLinkRefDefsElement = vditor.ir.element.querySelectorAll(\"[data-type='link-ref-defs-block']\");\n    allLinkRefDefsElement.forEach(function (item, index) {\n        if (index === 0) {\n            firstLinkRefDefElement = item;\n        }\n        else {\n            firstLinkRefDefElement.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n            item.remove();\n        }\n    });\n    if (allLinkRefDefsElement.length > 0) {\n        vditor.ir.element.insertAdjacentElement(\"beforeend\", allLinkRefDefsElement[0]);\n    }\n    // 脚注合并后添加的末尾\n    var firstFootnoteElement;\n    var allFootnoteElement = vditor.ir.element.querySelectorAll(\"[data-type='footnotes-block']\");\n    allFootnoteElement.forEach(function (item, index) {\n        if (index === 0) {\n            firstFootnoteElement = item;\n        }\n        else {\n            firstFootnoteElement.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n            item.remove();\n        }\n    });\n    if (allFootnoteElement.length > 0) {\n        vditor.ir.element.insertAdjacentElement(\"beforeend\", allFootnoteElement[0]);\n    }\n    (0,selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    vditor.ir.element.querySelectorAll(\".vditor-ir__preview[data-render='2']\").forEach(function (item) {\n        processCodeRender(item, vditor);\n    });\n    renderToc(vditor);\n    process_processAfterRender(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/hotKey.ts\n\n// 是否匹配 ⇧⌘[] / ⌘[] / ⌥[] / ⌥⌘[] / ⇧Tab / []\nvar matchHotKey = function (hotKey, event) {\n    if (hotKey === \"\") {\n        return false;\n    }\n    // []\n    if (hotKey.indexOf(\"⇧\") === -1 && hotKey.indexOf(\"⌘\") === -1 && hotKey.indexOf(\"⌥\") === -1) {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && event.code === hotKey) {\n            return true;\n        }\n        return false;\n    }\n    // 是否匹配 ⇧Tab\n    if (hotKey === \"⇧Tab\") {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.shiftKey && event.code === \"Tab\") {\n            return true;\n        }\n        return false;\n    }\n    var hotKeys = hotKey.split(\"\");\n    if (hotKey.startsWith(\"⌥\")) {\n        // 是否匹配 ⌥[] / ⌥⌘[]\n        var keyCode = hotKeys.length === 3 ? hotKeys[2] : hotKeys[1];\n        if ((hotKeys.length === 3 ? (0,compatibility/* isCtrl */.yl)(event) : !(0,compatibility/* isCtrl */.yl)(event)) && event.altKey && !event.shiftKey &&\n            event.code === (/^[0-9]$/.test(keyCode) ? \"Digit\" : \"Key\") + keyCode) {\n            return true;\n        }\n        return false;\n    }\n    // 是否匹配 ⇧⌘[] / ⌘[]\n    if (hotKey === \"⌘Enter\") {\n        hotKeys = [\"⌘\", \"Enter\"];\n    }\n    var hasShift = hotKeys.length > 2 && (hotKeys[0] === \"⇧\");\n    var key = (hasShift ? hotKeys[2] : hotKeys[1]);\n    if (hasShift && ((0,compatibility/* isFirefox */.vU)() || !/Mac/.test(navigator.platform))) {\n        if (key === \"-\") {\n            key = \"_\";\n        }\n        else if (key === \"=\") {\n            key = \"+\";\n        }\n    }\n    if ((0,compatibility/* isCtrl */.yl)(event) && event.key.toLowerCase() === key.toLowerCase() && !event.altKey\n        && ((!hasShift && !event.shiftKey) || (hasShift && event.shiftKey))) {\n        return true;\n    }\n    return false;\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/expandMarker.ts\n\n\nvar nextIsNode = function (range) {\n    var startContainer = range.startContainer;\n    if (startContainer.nodeType === 3 && startContainer.nodeValue.length !== range.startOffset) {\n        return false;\n    }\n    var nextNode = startContainer.nextSibling;\n    while (nextNode && nextNode.textContent === \"\") {\n        nextNode = nextNode.nextSibling;\n    }\n    if (!nextNode) {\n        // *em*|**string**\n        var markerElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-ir__marker\");\n        if (markerElement && !markerElement.nextSibling) {\n            var parentNextNode = startContainer.parentElement.parentElement.nextSibling;\n            if (parentNextNode && parentNextNode.nodeType !== 3 &&\n                parentNextNode.classList.contains(\"vditor-ir__node\")) {\n                return parentNextNode;\n            }\n        }\n        return false;\n    }\n    else if (nextNode && nextNode.nodeType !== 3 && nextNode.classList.contains(\"vditor-ir__node\") &&\n        !nextNode.getAttribute(\"data-block\")) {\n        // test|*em*\n        return nextNode;\n    }\n    return false;\n};\nvar previousIsNode = function (range) {\n    var startContainer = range.startContainer;\n    var previousNode = startContainer.previousSibling;\n    if (startContainer.nodeType === 3 && range.startOffset === 0 && previousNode && previousNode.nodeType !== 3 &&\n        // *em*|text\n        previousNode.classList.contains(\"vditor-ir__node\") && !previousNode.getAttribute(\"data-block\")) {\n        return previousNode;\n    }\n    return false;\n};\nvar expandMarker = function (range, vditor) {\n    vditor.ir.element.querySelectorAll(\".vditor-ir__node--expand\").forEach(function (item) {\n        item.classList.remove(\"vditor-ir__node--expand\");\n    });\n    var nodeElement = (0,hasClosest/* hasTopClosestByClassName */.JQ)(range.startContainer, \"vditor-ir__node\");\n    var nodeElementEnd = !range.collapsed && (0,hasClosest/* hasTopClosestByClassName */.JQ)(range.endContainer, \"vditor-ir__node\");\n    // 选中文本为同一个 nodeElement 内时，需要展开\n    if (!range.collapsed && (!nodeElement || nodeElement !== nodeElementEnd)) {\n        return;\n    }\n    if (nodeElement) {\n        nodeElement.classList.add(\"vditor-ir__node--expand\");\n        nodeElement.classList.remove(\"vditor-ir__node--hidden\");\n        // https://github.com/Vanessa219/vditor/issues/615 safari中光标位置跳动\n        (0,selection/* setSelectionFocus */.Hc)(range);\n    }\n    var nextNode = nextIsNode(range);\n    if (nextNode) {\n        nextNode.classList.add(\"vditor-ir__node--expand\");\n        nextNode.classList.remove(\"vditor-ir__node--hidden\");\n        return;\n    }\n    var previousNode = previousIsNode(range);\n    if (previousNode) {\n        previousNode.classList.add(\"vditor-ir__node--expand\");\n        previousNode.classList.remove(\"vditor-ir__node--hidden\");\n        return;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/processKeydown.ts\n\n\n\n\n\n\n\n\n\n\n\nvar processKeydown = function (vditor, event) {\n    vditor.ir.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    // 添加第一次记录 undo 的光标\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (!fixGSKeyBackspace(event, vditor, startContainer)) {\n        return false;\n    }\n    fixCJKPosition(range, vditor, event);\n    fixHR(range);\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\" && event.key !== \"Delete\") {\n        return false;\n    }\n    // 斜体、粗体、内联代码块中换行\n    var newlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-newline\", \"1\");\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && event.key === \"Enter\" && newlineElement\n        && range.startOffset < newlineElement.textContent.length) {\n        var beforeMarkerElement = newlineElement.previousElementSibling;\n        if (beforeMarkerElement) {\n            range.insertNode(document.createTextNode(beforeMarkerElement.textContent));\n            range.collapse(false);\n        }\n        var afterMarkerElement = newlineElement.nextSibling;\n        if (afterMarkerElement) {\n            range.insertNode(document.createTextNode(afterMarkerElement.textContent));\n            range.collapse(true);\n        }\n    }\n    var pElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"P\");\n    // md 处理\n    if (fixMarkdown(event, vditor, pElement, range)) {\n        return true;\n    }\n    // li\n    if (fixList(range, vditor, pElement, event)) {\n        return true;\n    }\n    // blockquote\n    if (fixBlockquote(vditor, range, event, pElement)) {\n        return true;\n    }\n    // 代码块\n    var preRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-ir__marker--pre\");\n    if (preRenderElement && preRenderElement.tagName === \"PRE\") {\n        var codeRenderElement = preRenderElement.firstChild;\n        if (fixCodeBlock(vditor, event, preRenderElement, range)) {\n            return true;\n        }\n        // 数学公式上无元素，按上或左将添加新块\n        if ((codeRenderElement.getAttribute(\"data-type\") === \"math-block\"\n            || codeRenderElement.getAttribute(\"data-type\") === \"html-block\") &&\n            insertBeforeBlock(vditor, event, range, codeRenderElement, preRenderElement.parentElement)) {\n            return true;\n        }\n        // 代码块下无元素或者为代码块/table 元素，添加空块\n        if (insertAfterBlock(vditor, event, range, codeRenderElement, preRenderElement.parentElement)) {\n            return true;\n        }\n    }\n    // 代码块语言\n    var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-info\");\n    if (preBeforeElement) {\n        if (event.key === \"Enter\" || event.key === \"Tab\") {\n            range.selectNodeContents(preBeforeElement.nextElementSibling.firstChild);\n            range.collapse(true);\n            event.preventDefault();\n            hidePanel(vditor, [\"hint\"]);\n            return true;\n        }\n        if (event.key === \"Backspace\") {\n            var start = (0,selection/* getSelectPosition */.im)(preBeforeElement, vditor.ir.element).start;\n            if (start === 1) { // 删除零宽空格\n                range.setStart(startContainer, 0);\n            }\n            if (start === 2) { // 删除时清空自动补全语言\n                vditor.hint.recentLanguage = \"\";\n            }\n        }\n        if (insertBeforeBlock(vditor, event, range, preBeforeElement, preBeforeElement.parentElement)) {\n            // 上无元素，按上或左将添加新块\n            hidePanel(vditor, [\"hint\"]);\n            return true;\n        }\n    }\n    // table\n    var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n    if (event.key.indexOf(\"Arrow\") > -1 && cellElement) {\n        var tableElement = isFirstCell(cellElement);\n        if (tableElement && insertBeforeBlock(vditor, event, range, cellElement, tableElement)) {\n            return true;\n        }\n        var table2Element = isLastCell(cellElement);\n        if (table2Element && insertAfterBlock(vditor, event, range, cellElement, table2Element)) {\n            return true;\n        }\n    }\n    if (fixTable(vditor, event, range)) {\n        return true;\n    }\n    // task list\n    if (fixTask(vditor, range, event)) {\n        return true;\n    }\n    // tab\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(startContainer);\n    if (headingElement) {\n        // enter++: 标题变大\n        if (matchHotKey(\"⌘=\", event)) {\n            var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n            if (headingMarkerElement && headingMarkerElement.textContent.trim().length > 1) {\n                process_processHeading(vditor, headingMarkerElement.textContent.substr(1));\n            }\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变小\n        if (matchHotKey(\"⌘-\", event)) {\n            var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n            if (headingMarkerElement && headingMarkerElement.textContent.trim().length < 6) {\n                process_processHeading(vditor, headingMarkerElement.textContent.trim() + \"# \");\n            }\n            event.preventDefault();\n            return true;\n        }\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\") {\n        if (fixDelete(vditor, range, event, pElement)) {\n            return true;\n        }\n        if (blockElement && blockElement.previousElementSibling\n            && blockElement.tagName !== \"UL\" && blockElement.tagName !== \"OL\"\n            && (blockElement.previousElementSibling.getAttribute(\"data-type\") === \"code-block\" ||\n                blockElement.previousElementSibling.getAttribute(\"data-type\") === \"math-block\")) {\n            var rangeStart = (0,selection/* getSelectPosition */.im)(blockElement, vditor.ir.element, range).start;\n            if (rangeStart === 0 || (rangeStart === 1 && blockElement.innerText.startsWith(constants/* Constants.ZWSP */.g.ZWSP))) {\n                // 当前块删除后光标落于代码渲染块上，当前块会被删除，因此需要阻止事件，不能和 keyup 中的代码块处理合并\n                range.selectNodeContents(blockElement.previousElementSibling.querySelector(\".vditor-ir__marker--pre code\"));\n                range.collapse(false);\n                expandMarker(range, vditor);\n                if (blockElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                    // 当前块为空且不是最后一个时，需要删除\n                    blockElement.remove();\n                    process_processAfterRender(vditor);\n                }\n                event.preventDefault();\n                return true;\n            }\n        }\n        // 光标位于标题前，marker 后\n        if (headingElement) {\n            var headingLength = headingElement.firstElementChild.textContent.length;\n            if ((0,selection/* getSelectPosition */.im)(headingElement, vditor.ir.element).start === headingLength) {\n                range.setStart(headingElement.firstElementChild.firstChild, headingLength - 1);\n                range.collapse(true);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n    }\n    if ((event.key === \"ArrowUp\" || event.key === \"ArrowDown\") && blockElement) {\n        // https://github.com/Vanessa219/vditor/issues/358\n        blockElement.querySelectorAll(\".vditor-ir__node\").forEach(function (item) {\n            if (!item.contains(startContainer)) {\n                item.classList.add(\"vditor-ir__node--hidden\");\n            }\n        });\n        if (fixFirefoxArrowUpTable(event, blockElement, range)) {\n            return true;\n        }\n    }\n    fixCursorDownInlineMath(range, event.key);\n    if (blockElement && keydownToc(blockElement, vditor, event, range)) {\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(971);\n;// CONCATENATED MODULE: ./src/ts/sv/combineFootnote.ts\n/**\n * 合并脚注\n * @param elements vditor.sv.element\n * @param afterCombine 每个脚注块合并完成后的回调, param: root为合并后的脚注块\n */\nvar combineFootnote = function (elements, afterCombine) {\n    elements.querySelectorAll(\"[data-type=footnotes-link]\").forEach(function (el) {\n        var root = el.parentElement;\n        var footnote = root.nextSibling;\n        // 寻找所有该脚注的块\n        while (footnote) {\n            if (footnote.textContent.startsWith(\"    \")) {\n                // 解析到四个空格，加入到root并继续解析\n                var thisNode = footnote;\n                thisNode.childNodes.forEach(function (node) {\n                    root.append(node.cloneNode(true));\n                });\n                footnote = footnote.nextSibling;\n                thisNode.remove();\n            }\n            else {\n                // 非空格停止解析\n                break;\n            }\n        }\n        afterCombine && afterCombine(root);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/inputEvent.ts\n\n\n\n\n\nvar inputEvent = function (vditor, event) {\n    var _a;\n    var range = getSelection().getRangeAt(0).cloneRange();\n    var startContainer = range.startContainer;\n    if (range.startContainer.nodeType !== 3 && range.startContainer.tagName === \"DIV\") {\n        startContainer = range.startContainer.childNodes[range.startOffset - 1];\n    }\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-block\", \"0\");\n    // 不调用 lute 解析\n    if (blockElement && event && (event.inputType === \"deleteContentBackward\" || event.data === \" \")) {\n        // 开始可以输入空格\n        var startOffset = (0,selection/* getSelectPosition */.im)(blockElement, vditor.sv.element, range).start;\n        var startSpace = true;\n        for (var i = startOffset - 1; \n        // 软换行后有空格\n        i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n            if (blockElement.textContent.charAt(i) !== \" \" &&\n                // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                blockElement.textContent.charAt(i) !== \"\\t\") {\n                startSpace = false;\n                break;\n            }\n        }\n        if (startOffset === 0) {\n            startSpace = false;\n        }\n        if (startSpace) {\n            processAfterRender(vditor);\n            return;\n        }\n        if (event.inputType === \"deleteContentBackward\") {\n            // https://github.com/Vanessa219/vditor/issues/584 代码块 marker 删除\n            var codeBlockMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-open-marker\") ||\n                (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-close-marker\");\n            if (codeBlockMarkerElement) {\n                if (codeBlockMarkerElement.getAttribute(\"data-type\") === \"code-block-close-marker\") {\n                    var openMarkerElement = getSideByType(startContainer, \"code-block-open-marker\");\n                    if (openMarkerElement) {\n                        openMarkerElement.textContent = codeBlockMarkerElement.textContent;\n                        processAfterRender(vditor);\n                        return;\n                    }\n                }\n                if (codeBlockMarkerElement.getAttribute(\"data-type\") === \"code-block-open-marker\") {\n                    var openMarkerElement = getSideByType(startContainer, \"code-block-close-marker\", false);\n                    if (openMarkerElement) {\n                        openMarkerElement.textContent = codeBlockMarkerElement.textContent;\n                        processAfterRender(vditor);\n                        return;\n                    }\n                }\n            }\n            // https://github.com/Vanessa219/vditor/issues/877 数学公式输入删除生成节点\n            var mathBlockMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"math-block-open-marker\");\n            if (mathBlockMarkerElement) {\n                var mathBlockCloseElement = mathBlockMarkerElement.nextElementSibling.nextElementSibling;\n                if (mathBlockCloseElement && mathBlockCloseElement.getAttribute(\"data-type\") === \"math-block-close-marker\") {\n                    mathBlockCloseElement.remove();\n                    processAfterRender(vditor);\n                }\n                return;\n            }\n            blockElement.querySelectorAll('[data-type=\"code-block-open-marker\"]').forEach(function (item) {\n                if (item.textContent.length === 1) {\n                    item.remove();\n                }\n            });\n            blockElement.querySelectorAll('[data-type=\"code-block-close-marker\"]').forEach(function (item) {\n                if (item.textContent.length === 1) {\n                    item.remove();\n                }\n            });\n            // 标题删除\n            var headingElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"heading-marker\");\n            if (headingElement && headingElement.textContent.indexOf(\"#\") === -1) {\n                processAfterRender(vditor);\n                return;\n            }\n        }\n        // 删除或空格不解析，否则会 format 回去\n        if ((event.data === \" \" || event.inputType === \"deleteContentBackward\") &&\n            ((0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"padding\") // 场景：b 前进行删除 [> 1. a\\n>   b]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"li-marker\") // 场景：删除最后一个字符 [* 1\\n* ]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"task-marker\") // 场景：删除最后一个字符 [* [ ] ]\n                || (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"blockquote-marker\") // 场景：删除最后一个字符 [> ]\n            )) {\n            processAfterRender(vditor);\n            return;\n        }\n    }\n    if (blockElement && blockElement.textContent.trimRight() === \"$$\") {\n        // 内联数学公式\n        processAfterRender(vditor);\n        return;\n    }\n    if (!blockElement) {\n        blockElement = vditor.sv.element;\n    }\n    if (((_a = blockElement.firstElementChild) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-type\")) === \"link-ref-defs-block\") {\n        // 修改链接引用\n        blockElement = vditor.sv.element;\n    }\n    if ((0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"footnotes-link\")) {\n        // 修改脚注角标\n        blockElement = vditor.sv.element;\n    }\n    // 添加光标位置\n    if (blockElement.textContent.indexOf(Lute.Caret) === -1) {\n        // 点击工具栏会插入 Caret\n        range.insertNode(document.createTextNode(Lute.Caret));\n    }\n    // 清除浏览器自带的样式\n    blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n        item.removeAttribute(\"style\");\n    });\n    blockElement.querySelectorAll(\"font\").forEach(function (item) {\n        item.outerHTML = item.innerHTML;\n    });\n    var html = blockElement.textContent;\n    var isSVElement = blockElement.isEqualNode(vditor.sv.element);\n    if (isSVElement) {\n        html = blockElement.textContent;\n    }\n    else {\n        // 添加前一个块元素\n        if (blockElement.previousElementSibling) {\n            html = blockElement.previousElementSibling.textContent + html;\n            blockElement.previousElementSibling.remove();\n        }\n        if (blockElement.previousElementSibling && html.indexOf(\"---\\n\") === 0) {\n            // 确认 yaml-front 是否为首行\n            html = blockElement.previousElementSibling.textContent + html;\n            blockElement.previousElementSibling.remove();\n        }\n        // 添加链接引用\n        var footnotes_1 = \"\";\n        vditor.sv.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item, index) {\n            if (item && !blockElement.isEqualNode(item.parentElement)) {\n                footnotes_1 += item.parentElement.textContent + \"\\n\";\n                item.parentElement.remove();\n            }\n        });\n        // 添加脚注到文章头，便于lute处理\n        vditor.sv.element.querySelectorAll(\"[data-type='footnotes-link']\").forEach(function (item, index) {\n            if (item && !blockElement.isEqualNode(item.parentElement)) {\n                footnotes_1 += item.parentElement.textContent + \"\\n\";\n                item.parentElement.remove();\n            }\n        });\n        html = footnotes_1 + html;\n    }\n    html = processSpinVditorSVDOM(html, vditor);\n    if (isSVElement) {\n        blockElement.innerHTML = html;\n    }\n    else {\n        blockElement.outerHTML = html;\n    }\n    vditor.sv.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n        vditor.sv.element.insertAdjacentElement(\"beforeend\", item.parentElement);\n    });\n    // 合并脚注\n    combineFootnote(vditor.sv.element, function (root) {\n        vditor.sv.element.insertAdjacentElement(\"beforeend\", root);\n    });\n    (0,selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    scrollCenter(vditor);\n    processAfterRender(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/processKeydown.ts\n\n\n\n\n\n\n\nvar processKeydown_processKeydown = function (vditor, event) {\n    var _a, _b, _c, _d, _e;\n    vditor.sv.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\") {\n        return false;\n    }\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (range.startContainer.nodeType !== 3 && range.startContainer.tagName === \"DIV\") {\n        startContainer = range.startContainer.childNodes[range.startOffset - 1];\n    }\n    var textElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"text\");\n    // blockquote\n    var blockquoteMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"blockquote-marker\");\n    if (!blockquoteMarkerElement && range.startOffset === 0 && textElement && textElement.previousElementSibling &&\n        textElement.previousElementSibling.getAttribute(\"data-type\") === \"blockquote-marker\") {\n        blockquoteMarkerElement = textElement.previousElementSibling;\n    }\n    // 回车逐个删除 blockquote marker 标记\n    if (blockquoteMarkerElement) {\n        if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey &&\n            blockquoteMarkerElement.nextElementSibling.textContent.trim() === \"\" &&\n            (0,selection/* getSelectPosition */.im)(blockquoteMarkerElement, vditor.sv.element, range).start ===\n                blockquoteMarkerElement.textContent.length) {\n            if (((_a = blockquoteMarkerElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-type\")) === \"padding\") {\n                // 列表中存在多行 BQ 时，标记回车需跳出列表\n                blockquoteMarkerElement.previousElementSibling.setAttribute(\"data-action\", \"enter-remove\");\n            }\n            blockquoteMarkerElement.remove();\n            processAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // list item\n    var listMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"li-marker\");\n    var taskMarkerElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"task-marker\");\n    var listLastMarkerElement = listMarkerElement;\n    if (!listLastMarkerElement) {\n        if (taskMarkerElement && taskMarkerElement.nextElementSibling.getAttribute(\"data-type\") !== \"task-marker\") {\n            listLastMarkerElement = taskMarkerElement;\n        }\n    }\n    if (!listLastMarkerElement && range.startOffset === 0 && textElement && textElement.previousElementSibling &&\n        (textElement.previousElementSibling.getAttribute(\"data-type\") === \"li-marker\" ||\n            textElement.previousElementSibling.getAttribute(\"data-type\") === \"task-marker\")) {\n        listLastMarkerElement = textElement.previousElementSibling;\n    }\n    if (listLastMarkerElement) {\n        var startIndex = (0,selection/* getSelectPosition */.im)(listLastMarkerElement, vditor.sv.element, range).start;\n        var isTask = listLastMarkerElement.getAttribute(\"data-type\") === \"task-marker\";\n        var listFirstMarkerElement = listLastMarkerElement;\n        if (isTask) {\n            listFirstMarkerElement = listLastMarkerElement.previousElementSibling.previousElementSibling\n                .previousElementSibling;\n        }\n        if (startIndex === listLastMarkerElement.textContent.length) {\n            // 回车清空列表标记符\n            if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey &&\n                listLastMarkerElement.nextElementSibling.textContent.trim() === \"\") {\n                if (((_b = listFirstMarkerElement.previousElementSibling) === null || _b === void 0 ? void 0 : _b.getAttribute(\"data-type\")) === \"padding\") {\n                    listFirstMarkerElement.previousElementSibling.remove();\n                    inputEvent(vditor);\n                }\n                else {\n                    if (isTask) {\n                        listFirstMarkerElement.remove();\n                        listLastMarkerElement.previousElementSibling.previousElementSibling.remove();\n                        listLastMarkerElement.previousElementSibling.remove();\n                    }\n                    listLastMarkerElement.nextElementSibling.remove();\n                    listLastMarkerElement.remove();\n                    processAfterRender(vditor);\n                }\n                event.preventDefault();\n                return true;\n            }\n            // 第一个 marker 后 tab 进行缩进\n            if (event.key === \"Tab\") {\n                if (event.shiftKey) {\n                    if (listFirstMarkerElement.previousElementSibling.getAttribute(\"data-type\") === \"padding\") {\n                        listFirstMarkerElement.previousElementSibling.remove();\n                    }\n                }\n                else {\n                    listFirstMarkerElement.insertAdjacentHTML(\"beforebegin\", \"<span data-type=\\\"padding\\\">\".concat(listFirstMarkerElement.textContent.replace(/\\S/g, \" \"), \"</span>\"));\n                }\n                if (/^\\d/.test(listFirstMarkerElement.textContent)) {\n                    listFirstMarkerElement.textContent = listFirstMarkerElement.textContent.replace(/^\\d{1,}/, \"1\");\n                    range.selectNodeContents(listLastMarkerElement.firstChild);\n                    range.collapse(false);\n                }\n                inputEvent(vditor);\n                event.preventDefault();\n                return true;\n            }\n        }\n    }\n    // tab\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-block\", \"0\");\n    var spanElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(startContainer, \"SPAN\");\n    // 回车\n    if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey && blockElement) {\n        var isFirst = false;\n        var newLineMatch = blockElement.textContent.match(/^\\n+/);\n        if ((0,selection/* getSelectPosition */.im)(blockElement, vditor.sv.element).start <= (newLineMatch ? newLineMatch[0].length : 0)) {\n            // 允许段落开始换行\n            isFirst = true;\n        }\n        var newLineText = \"\\n\";\n        if (spanElement) {\n            if (((_c = spanElement.previousElementSibling) === null || _c === void 0 ? void 0 : _c.getAttribute(\"data-action\")) === \"enter-remove\") {\n                // https://github.com/Vanessa219/vditor/issues/596\n                spanElement.previousElementSibling.remove();\n                processAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                newLineText += processPreviousMarkers(spanElement);\n            }\n        }\n        range.insertNode(document.createTextNode(newLineText));\n        range.collapse(false);\n        if (blockElement && blockElement.textContent.trim() !== \"\" && !isFirst) {\n            inputEvent(vditor);\n        }\n        else {\n            processAfterRender(vditor);\n        }\n        event.preventDefault();\n        return true;\n    }\n    // 删除后光标前有 newline 的处理\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey) {\n        if (spanElement && ((_d = spanElement.previousElementSibling) === null || _d === void 0 ? void 0 : _d.getAttribute(\"data-type\")) === \"newline\" &&\n            (0,selection/* getSelectPosition */.im)(spanElement, vditor.sv.element, range).start === 1 &&\n            // 飘号的处理需在 inputEvent 中，否则上下飘号对不齐\n            spanElement.getAttribute(\"data-type\").indexOf(\"code-block-\") === -1) {\n            // 光标在每一行的第一个字符后\n            range.setStart(spanElement, 0);\n            range.extractContents();\n            if (spanElement.textContent.trim() !== \"\") {\n                inputEvent(vditor);\n            }\n            else {\n                processAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // 每一段第一个字符前\n        if (blockElement && (0,selection/* getSelectPosition */.im)(blockElement, vditor.sv.element, range).start === 0 &&\n            blockElement.previousElementSibling) {\n            range.extractContents();\n            var previousLastElement = blockElement.previousElementSibling.lastElementChild;\n            if (previousLastElement.getAttribute(\"data-type\") === \"newline\") {\n                previousLastElement.remove();\n                previousLastElement = blockElement.previousElementSibling.lastElementChild;\n            }\n            // 场景：末尾无法删除 [```\\ntext\\n```\\n\\n]\n            if (previousLastElement.getAttribute(\"data-type\") !== \"newline\") {\n                previousLastElement.insertAdjacentHTML(\"afterend\", blockElement.innerHTML);\n                blockElement.remove();\n            }\n            if (blockElement.textContent.trim() !== \"\" && !((_e = blockElement.previousElementSibling) === null || _e === void 0 ? void 0 : _e.querySelector('[data-type=\"code-block-open-marker\"]'))) {\n                inputEvent(vditor);\n            }\n            else {\n                if (previousLastElement.getAttribute(\"data-type\") !== \"newline\") {\n                    // https://github.com/Vanessa219/vditor/issues/597\n                    range.selectNodeContents(previousLastElement.lastChild);\n                    range.collapse(false);\n                }\n                processAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\n\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(652);\n;// CONCATENATED MODULE: ./src/ts/ui/setTheme.ts\nvar setTheme = function (vditor) {\n    if (vditor.options.theme === \"dark\") {\n        vditor.element.classList.add(\"vditor--dark\");\n    }\n    else {\n        vditor.element.classList.remove(\"vditor--dark\");\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/ui/initUI.ts\n\n\n\n\n\n\nvar initUI = function (vditor) {\n    vditor.element.innerHTML = \"\";\n    vditor.element.classList.add(\"vditor\");\n    // 支持 RTL\n    if (vditor.options.rtl) {\n        vditor.element.setAttribute(\"dir\", \"rtl\");\n    }\n    setTheme(vditor);\n    (0,setContentTheme/* setContentTheme */.Z)(vditor.options.preview.theme.current, vditor.options.preview.theme.path);\n    if (typeof vditor.options.height === \"number\") {\n        vditor.element.style.height = vditor.options.height + \"px\";\n    }\n    else {\n        vditor.element.style.height = vditor.options.height;\n    }\n    if (typeof vditor.options.minHeight === \"number\") {\n        vditor.element.style.minHeight = vditor.options.minHeight + \"px\";\n    }\n    if (typeof vditor.options.width === \"number\") {\n        vditor.element.style.width = vditor.options.width + \"px\";\n    }\n    else {\n        vditor.element.style.width = vditor.options.width;\n    }\n    vditor.element.appendChild(vditor.toolbar.element);\n    var contentElement = document.createElement(\"div\");\n    contentElement.className = \"vditor-content\";\n    if (vditor.options.outline.position === \"left\") {\n        contentElement.appendChild(vditor.outline.element);\n    }\n    contentElement.appendChild(vditor.wysiwyg.element.parentElement);\n    contentElement.appendChild(vditor.sv.element);\n    contentElement.appendChild(vditor.ir.element.parentElement);\n    contentElement.appendChild(vditor.preview.element);\n    if (vditor.toolbar.elements.devtools) {\n        contentElement.appendChild(vditor.devtools.element);\n    }\n    if (vditor.options.outline.position === \"right\") {\n        vditor.outline.element.classList.add(\"vditor-outline--right\");\n        contentElement.appendChild(vditor.outline.element);\n    }\n    if (vditor.upload) {\n        contentElement.appendChild(vditor.upload.element);\n    }\n    if (vditor.options.resize.enable) {\n        contentElement.appendChild(vditor.resize.element);\n    }\n    contentElement.appendChild(vditor.hint.element);\n    contentElement.appendChild(vditor.tip.element);\n    vditor.element.appendChild(contentElement);\n    contentElement.addEventListener(\"click\", function () {\n        hidePanel(vditor, [\"subToolbar\"]);\n    });\n    if (vditor.toolbar.elements.export) {\n        // for export pdf\n        vditor.element.insertAdjacentHTML(\"beforeend\", '<iframe id=\"vditorExportIframe\" style=\"width: 100%;height: 0;border: 0\"></iframe>');\n    }\n    setEditMode(vditor, vditor.options.mode, afterRender(vditor));\n    document.execCommand(\"DefaultParagraphSeparator\", false, \"p\");\n    if (navigator.userAgent.indexOf(\"iPhone\") > -1 && typeof window.visualViewport !== \"undefined\") {\n        // https://github.com/Vanessa219/vditor/issues/379\n        var pendingUpdate_1 = false;\n        var viewportHandler = function (event) {\n            if (pendingUpdate_1) {\n                return;\n            }\n            pendingUpdate_1 = true;\n            requestAnimationFrame(function () {\n                pendingUpdate_1 = false;\n                var layoutViewport = vditor.toolbar.element;\n                layoutViewport.style.transform = \"none\";\n                if (layoutViewport.getBoundingClientRect().top < 0) {\n                    layoutViewport.style.transform = \"translate(0, \".concat(-layoutViewport.getBoundingClientRect().top, \"px)\");\n                }\n            });\n        };\n        window.visualViewport.addEventListener(\"scroll\", viewportHandler);\n        window.visualViewport.addEventListener(\"resize\", viewportHandler);\n    }\n};\nvar setPadding = function (vditor) {\n    var minPadding = window.innerWidth <= constants/* Constants.MOBILE_WIDTH */.g.MOBILE_WIDTH ? 10 : 35;\n    if (vditor.wysiwyg.element.parentElement.style.display !== \"none\") {\n        var padding = (vditor.wysiwyg.element.parentElement.clientWidth\n            - vditor.options.preview.maxWidth) / 2;\n        vditor.wysiwyg.element.style.padding = \"10px \".concat(Math.max(minPadding, padding), \"px\");\n    }\n    if (vditor.ir.element.parentElement.style.display !== \"none\") {\n        var padding = (vditor.ir.element.parentElement.clientWidth\n            - vditor.options.preview.maxWidth) / 2;\n        vditor.ir.element.style.padding = \"10px \".concat(Math.max(minPadding, padding), \"px\");\n    }\n    if (vditor.preview.element.style.display !== \"block\") {\n        vditor.toolbar.element.style.paddingLeft = Math.max(5, parseInt(vditor[vditor.currentMode].element.style.paddingLeft || \"0\", 10) +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0)) + \"px\";\n    }\n    else {\n        vditor.toolbar.element.style.paddingLeft = (5 +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0)) + \"px\";\n    }\n};\nvar setTypewriterPosition = function (vditor) {\n    if (!vditor.options.typewriterMode) {\n        return;\n    }\n    var height = window.innerHeight;\n    if (typeof vditor.options.height === \"number\") {\n        height = vditor.options.height;\n        if (typeof vditor.options.minHeight === \"number\") {\n            height = Math.max(height, vditor.options.minHeight);\n        }\n        height = Math.min(window.innerHeight, height);\n    }\n    else {\n        height = vditor.element.clientHeight;\n    }\n    if (vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        height = window.innerHeight;\n    }\n    // 由于 Firefox padding-bottom bug，只能使用 :after\n    vditor[vditor.currentMode].element.style.setProperty(\"--editor-bottom\", ((height - vditor.toolbar.element.offsetHeight) / 2) + \"px\");\n};\nvar resizeCb;\nfunction UIUnbindListener() {\n    window.removeEventListener(\"resize\", resizeCb);\n}\nvar afterRender = function (vditor) {\n    setTypewriterPosition(vditor);\n    UIUnbindListener();\n    window.addEventListener(\"resize\", resizeCb = function () {\n        setPadding(vditor);\n        setTypewriterPosition(vditor);\n    });\n    // set default value\n    var initValue = (0,compatibility/* accessLocalStorage */.pK)() && localStorage.getItem(vditor.options.cache.id);\n    if (!vditor.options.cache.enable || !initValue) {\n        if (vditor.options.value) {\n            initValue = vditor.options.value;\n        }\n        else if (vditor.originalInnerHTML) {\n            initValue = vditor.lute.HTML2Md(vditor.originalInnerHTML);\n        }\n        else if (!vditor.options.cache.enable) {\n            initValue = \"\";\n        }\n    }\n    return initValue || \"\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/ir/highlightToolbarIR.ts\n\n\n\n\n\nvar highlightToolbarIR = function (vditor) {\n    clearTimeout(vditor[vditor.currentMode].hlToolbarTimeoutId);\n    vditor[vditor.currentMode].hlToolbarTimeoutId = window.setTimeout(function () {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (!(0,selection/* selectIsEditor */.Gb)(vditor[vditor.currentMode].element)) {\n            return;\n        }\n        removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        var range = (0,selection/* getEditorRange */.zh)(vditor);\n        var typeElement = range.startContainer;\n        if (range.startContainer.nodeType === 3) {\n            typeElement = range.startContainer.parentElement;\n        }\n        if (typeElement.classList.contains(\"vditor-reset\")) {\n            typeElement = typeElement.childNodes[range.startOffset];\n        }\n        var headingElement = vditor.currentMode === \"sv\" ?\n            (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"heading\") : (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(typeElement);\n        if (headingElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"headings\"]);\n        }\n        var quoteElement = vditor.currentMode === \"sv\" ? (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"blockquote\") :\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\");\n        if (quoteElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"quote\"]);\n        }\n        var strongElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"strong\");\n        if (strongElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"bold\"]);\n        }\n        var emElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"em\");\n        if (emElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"italic\"]);\n        }\n        var sElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"s\");\n        if (sElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"strike\"]);\n        }\n        var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"a\");\n        if (aElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"link\"]);\n        }\n        var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"LI\");\n        if (liElement) {\n            if (liElement.classList.contains(\"vditor-task\")) {\n                setCurrentToolbar(vditor.toolbar.elements, [\"check\"]);\n            }\n            else if (liElement.parentElement.tagName === \"OL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"ordered-list\"]);\n            }\n            else if (liElement.parentElement.tagName === \"UL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"list\"]);\n            }\n            enableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        var codeBlockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"code-block\");\n        if (codeBlockElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"bold\", \"italic\", \"strike\", \"line\", \"quote\",\n                \"list\", \"ordered-list\", \"check\", \"code\", \"inline-code\", \"upload\", \"link\", \"table\", \"record\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"code\"]);\n        }\n        var codeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"code\");\n        if (codeElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"bold\", \"italic\", \"strike\", \"line\", \"quote\",\n                \"list\", \"ordered-list\", \"check\", \"code\", \"upload\", \"link\", \"table\", \"record\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"inline-code\"]);\n        }\n        var tableElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"table\");\n        if (tableElement) {\n            disableToolbar(vditor.toolbar.elements, [\"headings\", \"list\", \"ordered-list\", \"check\", \"line\",\n                \"quote\", \"code\", \"table\"]);\n        }\n    }, 200);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/afterRenderEvent.ts\n\n\nvar afterRenderEvent = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        vditor.hint.render(vditor);\n    }\n    clearTimeout(vditor.wysiwyg.afterRenderTimeoutId);\n    vditor.wysiwyg.afterRenderTimeoutId = window.setTimeout(function () {\n        if (vditor.wysiwyg.composingLock) {\n            return;\n        }\n        var text = getMarkdown(vditor);\n        if (typeof vditor.options.input === \"function\" && options.enableInput) {\n            vditor.options.input(text);\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter.render(vditor, text);\n        }\n        if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n            localStorage.setItem(vditor.options.cache.id, text);\n            if (vditor.options.cache.after) {\n                vditor.options.cache.after(text);\n            }\n        }\n        if (vditor.devtools) {\n            vditor.devtools.renderEchart(vditor);\n        }\n        if (options.enableAddUndoStack) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/inlineTag.ts\n\n\nvar previoueIsEmptyA = function (node) {\n    var previousNode = node.previousSibling;\n    while (previousNode) {\n        if (previousNode.nodeType !== 3 && previousNode.tagName === \"A\" && !previousNode.previousSibling\n            && previousNode.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && previousNode.nextSibling) {\n            return previousNode;\n        }\n        previousNode = previousNode.previousSibling;\n    }\n    return false;\n};\nvar nextIsCode = function (range) {\n    var nextNode = range.startContainer.nextSibling;\n    while (nextNode && nextNode.textContent === \"\") {\n        nextNode = nextNode.nextSibling;\n    }\n    if (nextNode && nextNode.nodeType !== 3 && (nextNode.tagName === \"CODE\" ||\n        nextNode.getAttribute(\"data-type\") === \"math-inline\" ||\n        nextNode.getAttribute(\"data-type\") === \"html-entity\" ||\n        nextNode.getAttribute(\"data-type\") === \"html-inline\")) {\n        return true;\n    }\n    return false;\n};\nvar getNextHTML = function (node) {\n    var html = \"\";\n    var nextNode = node.nextSibling;\n    while (nextNode) {\n        if (nextNode.nodeType === 3) {\n            html += nextNode.textContent;\n        }\n        else {\n            html += nextNode.outerHTML;\n        }\n        nextNode = nextNode.nextSibling;\n    }\n    return html;\n};\nvar getPreviousHTML = function (node) {\n    var html = \"\";\n    var previousNode = node.previousSibling;\n    while (previousNode) {\n        if (previousNode.nodeType === 3) {\n            html = previousNode.textContent + html;\n        }\n        else {\n            html = previousNode.outerHTML + html;\n        }\n        previousNode = previousNode.previousSibling;\n    }\n    return html;\n};\nvar getRenderElementNextNode = function (blockCodeElement) {\n    var nextNode = blockCodeElement;\n    while (nextNode && !nextNode.nextSibling) {\n        nextNode = nextNode.parentElement;\n    }\n    return nextNode.nextSibling;\n};\nvar splitElement = function (range) {\n    var previousHTML = getPreviousHTML(range.startContainer);\n    var nextHTML = getNextHTML(range.startContainer);\n    var text = range.startContainer.textContent;\n    var offset = range.startOffset;\n    var beforeHTML = \"\";\n    var afterHTML = \"\";\n    if (text.substr(0, offset) !== \"\" && text.substr(0, offset) !== constants/* Constants.ZWSP */.g.ZWSP || previousHTML) {\n        beforeHTML = \"\".concat(previousHTML).concat(text.substr(0, offset));\n    }\n    if (text.substr(offset) !== \"\" && text.substr(offset) !== constants/* Constants.ZWSP */.g.ZWSP || nextHTML) {\n        afterHTML = \"\".concat(text.substr(offset)).concat(nextHTML);\n    }\n    return {\n        afterHTML: afterHTML,\n        beforeHTML: beforeHTML,\n    };\n};\nvar modifyPre = function (vditor, range) {\n    // 没有被块元素包裹\n    Array.from(vditor.wysiwyg.element.childNodes).find(function (node) {\n        if (node.nodeType === 3) {\n            var pElement = document.createElement(\"p\");\n            pElement.setAttribute(\"data-block\", \"0\");\n            pElement.textContent = node.textContent;\n            // 为空按下 tab 且 tab = '    ' 时，range.startContainer 不为 node\n            var cloneRangeOffset = range.startContainer.nodeType === 3 ? range.startOffset : node.textContent.length;\n            node.parentNode.insertBefore(pElement, node);\n            node.remove();\n            range.setStart(pElement.firstChild, Math.min(pElement.firstChild.textContent.length, cloneRangeOffset));\n            range.collapse(true);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        else if (!node.getAttribute(\"data-block\")) {\n            if (node.tagName === \"P\") {\n                node.remove();\n            }\n            else {\n                if (node.tagName === \"DIV\") {\n                    range.insertNode(document.createElement(\"wbr\"));\n                    // firefox 列表换行产生 div\n                    node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.innerHTML, \"</p>\");\n                }\n                else {\n                    if (node.tagName === \"BR\") {\n                        // firefox 空换行产生 BR\n                        node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.outerHTML, \"<wbr></p>\");\n                    }\n                    else {\n                        range.insertNode(document.createElement(\"wbr\"));\n                        node.outerHTML = \"<p data-block=\\\"0\\\">\".concat(node.outerHTML, \"</p>\");\n                    }\n                }\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n                range = getSelection().getRangeAt(0);\n            }\n            return true;\n        }\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/setHeading.ts\n\n\n\nvar setHeading = function (vditor, tagName) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        blockElement = range.startContainer.childNodes[range.startOffset];\n    }\n    if (!blockElement && vditor.wysiwyg.element.children.length === 0) {\n        blockElement = vditor.wysiwyg.element;\n    }\n    if (blockElement && !blockElement.classList.contains(\"vditor-wysiwyg__block\")) {\n        range.insertNode(document.createElement(\"wbr\"));\n        // Firefox 需要 trim https://github.com/Vanessa219/vditor/issues/207\n        if (blockElement.innerHTML.trim() === \"<wbr>\") {\n            // Firefox 光标对不齐 https://github.com/Vanessa219/vditor/issues/199 1\n            blockElement.innerHTML = \"<wbr><br>\";\n        }\n        if (blockElement.tagName === \"BLOCKQUOTE\" || blockElement.classList.contains(\"vditor-reset\")) {\n            blockElement.innerHTML = \"<\".concat(tagName, \" data-block=\\\"0\\\">\").concat(blockElement.innerHTML.trim(), \"</\").concat(tagName, \">\");\n        }\n        else {\n            blockElement.outerHTML = \"<\".concat(tagName, \" data-block=\\\"0\\\">\").concat(blockElement.innerHTML.trim(), \"</\").concat(tagName, \">\");\n        }\n        (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        renderToc(vditor);\n    }\n};\nvar removeHeading = function (vditor) {\n    var range = getSelection().getRangeAt(0);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        blockElement = range.startContainer.childNodes[range.startOffset];\n    }\n    if (blockElement) {\n        range.insertNode(document.createElement(\"wbr\"));\n        blockElement.outerHTML = \"<p data-block=\\\"0\\\">\".concat(blockElement.innerHTML, \"</p>\");\n        (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n    }\n    vditor.wysiwyg.popover.style.display = \"none\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/showCode.ts\n\n\nvar showCode = function (previewElement, vditor, first) {\n    if (first === void 0) { first = true; }\n    var previousElement = previewElement.previousElementSibling;\n    var range = previousElement.ownerDocument.createRange();\n    if (previousElement.tagName === \"CODE\") {\n        previousElement.style.display = \"inline-block\";\n        if (first) {\n            range.setStart(previousElement.firstChild, 1);\n        }\n        else {\n            range.selectNodeContents(previousElement);\n        }\n    }\n    else {\n        previousElement.style.display = \"block\";\n        if (!previousElement.firstChild.firstChild) {\n            previousElement.firstChild.appendChild(document.createTextNode(\"\"));\n        }\n        range.selectNodeContents(previousElement.firstChild);\n    }\n    if (first) {\n        range.collapse(true);\n    }\n    else {\n        range.collapse(false);\n    }\n    (0,selection/* setSelectionFocus */.Hc)(range);\n    if (previewElement.firstElementChild.classList.contains(\"language-mindmap\")) {\n        return;\n    }\n    scrollCenter(vditor);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/processKeydown.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar wysiwyg_processKeydown_processKeydown = function (vditor, event) {\n    // Chrome firefox 触发 compositionend 机制不一致 https://github.com/Vanessa219/vditor/issues/188\n    vditor.wysiwyg.composingLock = event.isComposing;\n    if (event.isComposing) {\n        return false;\n    }\n    // 添加第一次记录 undo 的光标\n    if (event.key.indexOf(\"Arrow\") === -1 && event.key !== \"Meta\" && event.key !== \"Control\" && event.key !== \"Alt\" &&\n        event.key !== \"Shift\" && event.key !== \"CapsLock\" && event.key !== \"Escape\" && !/^F\\d{1,2}$/.test(event.key)) {\n        vditor.undo.recordFirstPosition(vditor, event);\n    }\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var startContainer = range.startContainer;\n    if (!fixGSKeyBackspace(event, vditor, startContainer)) {\n        return false;\n    }\n    fixCJKPosition(range, vditor, event);\n    fixHR(range);\n    // 仅处理以下快捷键操作\n    if (event.key !== \"Enter\" && event.key !== \"Tab\" && event.key !== \"Backspace\" && event.key.indexOf(\"Arrow\") === -1\n        && !(0,compatibility/* isCtrl */.yl)(event) && event.key !== \"Escape\" && event.key !== \"Delete\") {\n        return false;\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n    var pElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"P\");\n    // md 处理\n    if (fixMarkdown(event, vditor, pElement, range)) {\n        return true;\n    }\n    // li\n    if (fixList(range, vditor, pElement, event)) {\n        return true;\n    }\n    // table\n    if (fixTable(vditor, event, range)) {\n        return true;\n    }\n    // code render\n    var codeRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-wysiwyg__block\");\n    if (codeRenderElement) {\n        // esc: 退出编辑，仅展示渲染\n        if (event.key === \"Escape\" && codeRenderElement.children.length === 2) {\n            vditor.wysiwyg.popover.style.display = \"none\";\n            codeRenderElement.firstElementChild.style.display = \"none\";\n            vditor.wysiwyg.element.blur();\n            event.preventDefault();\n            return true;\n        }\n        // alt+enter: 代码块切换到语言 https://github.com/Vanessa219/vditor/issues/54\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && event.altKey && event.key === \"Enter\" &&\n            codeRenderElement.getAttribute(\"data-type\") === \"code-block\") {\n            var inputElemment = vditor.wysiwyg.popover.querySelector(\".vditor-input\");\n            inputElemment.focus();\n            inputElemment.select();\n            event.preventDefault();\n            return true;\n        }\n        if (codeRenderElement.getAttribute(\"data-block\") === \"0\") {\n            if (fixCodeBlock(vditor, event, codeRenderElement.firstElementChild, range)) {\n                return true;\n            }\n            if (insertAfterBlock(vditor, event, range, codeRenderElement.firstElementChild, codeRenderElement)) {\n                return true;\n            }\n            if (codeRenderElement.getAttribute(\"data-type\") !== \"yaml-front-matter\" &&\n                insertBeforeBlock(vditor, event, range, codeRenderElement.firstElementChild, codeRenderElement)) {\n                return true;\n            }\n        }\n    }\n    // blockquote\n    if (fixBlockquote(vditor, range, event, pElement)) {\n        return true;\n    }\n    // 顶层 blockquote\n    var topBQElement = (0,hasClosest/* hasTopClosestByTag */.E2)(startContainer, \"BLOCKQUOTE\");\n    if (topBQElement) {\n        if (!event.shiftKey && event.altKey && event.key === \"Enter\") {\n            if (!(0,compatibility/* isCtrl */.yl)(event)) {\n                // alt+enter: 跳出多层 blockquote 嵌套之后 https://github.com/Vanessa219/vditor/issues/51\n                range.setStartAfter(topBQElement);\n            }\n            else {\n                // ctrl+alt+enter: 跳出多层 blockquote 嵌套之前\n                range.setStartBefore(topBQElement);\n            }\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            var node = document.createElement(\"p\");\n            node.setAttribute(\"data-block\", \"0\");\n            node.innerHTML = \"\\n\";\n            range.insertNode(node);\n            range.collapse(true);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            afterRenderEvent(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // h1-h6\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(startContainer);\n    if (headingElement) {\n        if (headingElement.tagName === \"H6\" && startContainer.textContent.length === range.startOffset &&\n            !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Enter\") {\n            // enter: H6 回车解析问题 https://github.com/Vanessa219/vditor/issues/48\n            var pTempElement = document.createElement(\"p\");\n            pTempElement.textContent = \"\\n\";\n            pTempElement.setAttribute(\"data-block\", \"0\");\n            startContainer.parentElement.insertAdjacentElement(\"afterend\", pTempElement);\n            range.setStart(pTempElement, 0);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            afterRenderEvent(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变大\n        if (matchHotKey(\"⌘=\", event)) {\n            var index = parseInt(headingElement.tagName.substr(1), 10) - 1;\n            if (index > 0) {\n                setHeading(vditor, \"h\".concat(index));\n                afterRenderEvent(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // enter++: 标题变小\n        if (matchHotKey(\"⌘-\", event)) {\n            var index = parseInt(headingElement.tagName.substr(1), 10) + 1;\n            if (index < 7) {\n                setHeading(vditor, \"h\".concat(index));\n                afterRenderEvent(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey\n            && headingElement.textContent.length === 1) {\n            // 删除后变为空\n            removeHeading(vditor);\n        }\n    }\n    // task list\n    if (fixTask(vditor, range, event)) {\n        return true;\n    }\n    // alt+enter\n    if (event.altKey && event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey) {\n        // 切换到链接、链接引用、脚注引用弹出的输入框中\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"A\");\n        var linRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"link-ref\");\n        var footnoteRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"footnotes-ref\");\n        if (aElement || linRefElement || footnoteRefElement ||\n            (headingElement && headingElement.tagName.length === 2)) {\n            var inputElement = vditor.wysiwyg.popover.querySelector(\"input\");\n            inputElement.focus();\n            inputElement.select();\n        }\n    }\n    // 删除有子工具栏的块\n    if (removeBlockElement(vditor, event)) {\n        return true;\n    }\n    // 对有子工具栏的块上移\n    if (matchHotKey(\"⇧⌘U\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"up\"]');\n        if (itemElement) {\n            itemElement.click();\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 对有子工具栏的块下移\n    if (matchHotKey(\"⇧⌘D\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"down\"]');\n        if (itemElement) {\n            itemElement.click();\n            event.preventDefault();\n            return true;\n        }\n    }\n    if (fixTab(vditor, range, event)) {\n        return true;\n    }\n    // shift+enter：软换行，但 table/hr/heading 处理、cell 内换行、block render 换行处理单独写在上面，li & p 使用浏览器默认\n    if (!(0,compatibility/* isCtrl */.yl)(event) && event.shiftKey && !event.altKey && event.key === \"Enter\" &&\n        startContainer.parentElement.tagName !== \"LI\" && startContainer.parentElement.tagName !== \"P\") {\n        if ([\"STRONG\", \"STRIKE\", \"S\", \"I\", \"EM\", \"B\"].includes(startContainer.parentElement.tagName)) {\n            // 行内元素软换行需继续 https://github.com/Vanessa219/vditor/issues/170\n            range.insertNode(document.createTextNode(\"\\n\" + constants/* Constants.ZWSP */.g.ZWSP));\n        }\n        else {\n            range.insertNode(document.createTextNode(\"\\n\"));\n        }\n        range.collapse(false);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        afterRenderEvent(vditor);\n        scrollCenter(vditor);\n        event.preventDefault();\n        return true;\n    }\n    // 删除\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\") {\n        if (fixDelete(vditor, range, event, pElement)) {\n            return true;\n        }\n        if (blockElement) {\n            if (blockElement.previousElementSibling\n                && blockElement.previousElementSibling.classList.contains(\"vditor-wysiwyg__block\")\n                && blockElement.previousElementSibling.getAttribute(\"data-block\") === \"0\"\n                // https://github.com/Vanessa219/vditor/issues/946\n                && blockElement.tagName !== \"UL\" && blockElement.tagName !== \"OL\") {\n                var rangeStart = (0,selection/* getSelectPosition */.im)(blockElement, vditor.wysiwyg.element, range).start;\n                if ((rangeStart === 0 && range.startOffset === 0) || // https://github.com/Vanessa219/vditor/issues/894\n                    (rangeStart === 1 && blockElement.innerText.startsWith(constants/* Constants.ZWSP */.g.ZWSP))) {\n                    // 当前块删除后光标落于代码渲染块上，当前块会被删除，因此需要阻止事件，不能和 keyup 中的代码块处理合并\n                    showCode(blockElement.previousElementSibling.lastElementChild, vditor, false);\n                    if (blockElement.innerHTML.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        // 当前块为空且不是最后一个时，需要删除\n                        blockElement.remove();\n                        afterRenderEvent(vditor);\n                    }\n                    event.preventDefault();\n                    return true;\n                }\n            }\n            var rangeStartOffset = range.startOffset;\n            if (range.toString() === \"\" && startContainer.nodeType === 3 &&\n                startContainer.textContent.charAt(rangeStartOffset - 2) === \"\\n\" &&\n                startContainer.textContent.charAt(rangeStartOffset - 1) !== constants/* Constants.ZWSP */.g.ZWSP\n                && [\"STRONG\", \"STRIKE\", \"S\", \"I\", \"EM\", \"B\"].includes(startContainer.parentElement.tagName)) {\n                // 保持行内元素软换行需继续的一致性\n                startContainer.textContent = startContainer.textContent.substring(0, rangeStartOffset - 1) +\n                    constants/* Constants.ZWSP */.g.ZWSP;\n                range.setStart(startContainer, rangeStartOffset);\n                range.collapse(true);\n                afterRenderEvent(vditor);\n                event.preventDefault();\n                return true;\n            }\n            // inline code、math、html 行前零宽字符后进行删除\n            if (startContainer.textContent === constants/* Constants.ZWSP */.g.ZWSP && range.startOffset === 1\n                && !startContainer.previousSibling && nextIsCode(range)) {\n                startContainer.textContent = \"\";\n                // 不能返回，其前面为代码渲染块时需进行以下处理：修正光标位于 inline math/html 前，按下删除按钮 code 中内容会被删除\n            }\n            // 修正光标位于 inline math/html, html-entity 前，按下删除按钮 code 中内容会被删除, 不能返回，还需要进行后续处理\n            blockElement.querySelectorAll(\"span.vditor-wysiwyg__block[data-type='math-inline']\").forEach(function (item) {\n                item.firstElementChild.style.display = \"inline\";\n                item.lastElementChild.style.display = \"none\";\n            });\n            blockElement.querySelectorAll(\"span.vditor-wysiwyg__block[data-type='html-entity']\").forEach(function (item) {\n                item.firstElementChild.style.display = \"inline\";\n                item.lastElementChild.style.display = \"none\";\n            });\n        }\n    }\n    if ((0,compatibility/* isFirefox */.vU)() && range.startOffset === 1 && startContainer.textContent.indexOf(constants/* Constants.ZWSP */.g.ZWSP) > -1 &&\n        startContainer.previousSibling && startContainer.previousSibling.nodeType !== 3 &&\n        startContainer.previousSibling.tagName === \"CODE\" &&\n        (event.key === \"Backspace\" || event.key === \"ArrowLeft\")) {\n        // https://github.com/Vanessa219/vditor/issues/410\n        range.selectNodeContents(startContainer.previousSibling);\n        range.collapse(false);\n        event.preventDefault();\n        return true;\n    }\n    if (fixFirefoxArrowUpTable(event, blockElement, range)) {\n        event.preventDefault();\n        return true;\n    }\n    fixCursorDownInlineMath(range, event.key);\n    if (event.key === \"ArrowDown\") {\n        // 光标位于内联数学公式前，按下键无作用\n        var nextElement = startContainer.nextSibling;\n        if (nextElement && nextElement.nodeType !== 3 && nextElement.getAttribute(\"data-type\") === \"math-inline\") {\n            range.setStartAfter(nextElement);\n        }\n    }\n    if (blockElement && keydownToc(blockElement, vditor, event, range)) {\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar removeBlockElement = function (vditor, event) {\n    // 删除有子工具栏的块\n    if (matchHotKey(\"⇧⌘X\", event)) {\n        var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"remove\"]');\n        if (itemElement) {\n            itemElement.click();\n        }\n        event.preventDefault();\n        return true;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/highlightToolbarWYSIWYG.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar highlightToolbarWYSIWYG = function (vditor) {\n    clearTimeout(vditor.wysiwyg.hlToolbarTimeoutId);\n    vditor.wysiwyg.hlToolbarTimeoutId = window.setTimeout(function () {\n        if (vditor.wysiwyg.element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (!(0,selection/* selectIsEditor */.Gb)(vditor.wysiwyg.element)) {\n            return;\n        }\n        removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n        var range = getSelection().getRangeAt(0);\n        var typeElement = range.startContainer;\n        if (range.startContainer.nodeType === 3) {\n            typeElement = range.startContainer.parentElement;\n        }\n        else {\n            typeElement = typeElement.childNodes[range.startOffset >= typeElement.childNodes.length\n                ? typeElement.childNodes.length - 1\n                : range.startOffset];\n        }\n        var footnotesElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"footnotes-block\");\n        if (footnotesElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genClose(footnotesElement, vditor);\n            setPopoverPosition(vditor, footnotesElement);\n            return;\n        }\n        // 工具栏高亮和禁用\n        var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"LI\");\n        if (liElement) {\n            if (liElement.classList.contains(\"vditor-task\")) {\n                setCurrentToolbar(vditor.toolbar.elements, [\"check\"]);\n            }\n            else if (liElement.parentElement.tagName === \"OL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"ordered-list\"]);\n            }\n            else if (liElement.parentElement.tagName === \"UL\") {\n                setCurrentToolbar(vditor.toolbar.elements, [\"list\"]);\n            }\n            enableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"quote\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"B\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"STRONG\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"bold\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"I\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"EM\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"italic\"]);\n        }\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"STRIKE\") ||\n            (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"S\")) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"strike\"]);\n        }\n        // comments\n        vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment--focus\")\n            .forEach(function (item) {\n            item.classList.remove(\"vditor-comment--focus\");\n        });\n        var commentElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-comment\");\n        if (commentElement) {\n            var ids_1 = commentElement.getAttribute(\"data-cmtids\").split(\" \");\n            if (ids_1.length > 1 && commentElement.nextSibling.isSameNode(commentElement.nextElementSibling)) {\n                var nextIds_1 = commentElement.nextElementSibling\n                    .getAttribute(\"data-cmtids\")\n                    .split(\" \");\n                ids_1.find(function (id) {\n                    if (nextIds_1.includes(id)) {\n                        ids_1 = [id];\n                        return true;\n                    }\n                });\n            }\n            vditor.wysiwyg.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(ids_1[0]) > -1) {\n                    item.classList.add(\"vditor-comment--focus\");\n                }\n            });\n        }\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"A\");\n        if (aElement) {\n            setCurrentToolbar(vditor.toolbar.elements, [\"link\"]);\n        }\n        var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TABLE\");\n        var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(typeElement);\n        if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"CODE\")) {\n            if ((0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"PRE\")) {\n                disableToolbar(vditor.toolbar.elements, [\n                    \"headings\",\n                    \"bold\",\n                    \"italic\",\n                    \"strike\",\n                    \"line\",\n                    \"quote\",\n                    \"list\",\n                    \"ordered-list\",\n                    \"check\",\n                    \"code\",\n                    \"inline-code\",\n                    \"upload\",\n                    \"link\",\n                    \"table\",\n                    \"record\",\n                ]);\n                setCurrentToolbar(vditor.toolbar.elements, [\"code\"]);\n            }\n            else {\n                disableToolbar(vditor.toolbar.elements, [\n                    \"headings\",\n                    \"bold\",\n                    \"italic\",\n                    \"strike\",\n                    \"line\",\n                    \"quote\",\n                    \"list\",\n                    \"ordered-list\",\n                    \"check\",\n                    \"code\",\n                    \"upload\",\n                    \"link\",\n                    \"table\",\n                    \"record\",\n                ]);\n                setCurrentToolbar(vditor.toolbar.elements, [\"inline-code\"]);\n            }\n        }\n        else if (headingElement) {\n            disableToolbar(vditor.toolbar.elements, [\"bold\"]);\n            setCurrentToolbar(vditor.toolbar.elements, [\"headings\"]);\n        }\n        else if (tableElement) {\n            disableToolbar(vditor.toolbar.elements, [\"table\"]);\n        }\n        // toc popover\n        var tocElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-toc\");\n        if (tocElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genClose(tocElement, vditor);\n            setPopoverPosition(vditor, tocElement);\n            return;\n        }\n        // quote popover\n        var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(typeElement, \"BLOCKQUOTE\");\n        if (blockquoteElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, blockquoteElement, vditor);\n            genDown(range, blockquoteElement, vditor);\n            genClose(blockquoteElement, vditor);\n            setPopoverPosition(vditor, blockquoteElement);\n        }\n        // list item popover\n        if (liElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, liElement, vditor);\n            genDown(range, liElement, vditor);\n            genClose(liElement, vditor);\n            setPopoverPosition(vditor, liElement);\n        }\n        // table popover\n        if (tableElement) {\n            var lang = vditor.options.lang;\n            var options = vditor.options;\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var updateTable_1 = function () {\n                var oldRow = tableElement.rows.length;\n                var oldColumn = tableElement.rows[0].cells.length;\n                var row = parseInt(input_1.value, 10) || oldRow;\n                var column = parseInt(input2_1.value, 10) || oldColumn;\n                if (row === oldRow && oldColumn === column) {\n                    return;\n                }\n                if (oldColumn !== column) {\n                    var columnDiff = column - oldColumn;\n                    for (var i = 0; i < tableElement.rows.length; i++) {\n                        if (columnDiff > 0) {\n                            for (var j = 0; j < columnDiff; j++) {\n                                if (i === 0) {\n                                    tableElement.rows[i].lastElementChild.insertAdjacentHTML(\"afterend\", \"<th> </th>\");\n                                }\n                                else {\n                                    tableElement.rows[i].lastElementChild.insertAdjacentHTML(\"afterend\", \"<td> </td>\");\n                                }\n                            }\n                        }\n                        else {\n                            for (var k = oldColumn - 1; k >= column; k--) {\n                                tableElement.rows[i].cells[k].remove();\n                            }\n                        }\n                    }\n                }\n                if (oldRow !== row) {\n                    var rowDiff = row - oldRow;\n                    if (rowDiff > 0) {\n                        var rowHTML = \"<tr>\";\n                        for (var m = 0; m < column; m++) {\n                            rowHTML += \"<td> </td>\";\n                        }\n                        for (var l = 0; l < rowDiff; l++) {\n                            if (tableElement.querySelector(\"tbody\")) {\n                                tableElement\n                                    .querySelector(\"tbody\")\n                                    .insertAdjacentHTML(\"beforeend\", rowHTML);\n                            }\n                            else {\n                                tableElement\n                                    .querySelector(\"thead\")\n                                    .insertAdjacentHTML(\"afterend\", rowHTML + \"</tr>\");\n                            }\n                        }\n                    }\n                    else {\n                        for (var m = oldRow - 1; m >= row; m--) {\n                            tableElement.rows[m].remove();\n                            if (tableElement.rows.length === 1) {\n                                tableElement.querySelector(\"tbody\").remove();\n                            }\n                        }\n                    }\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            var setAlign_1 = function (type) {\n                setTableAlign(tableElement, type);\n                if (type === \"right\") {\n                    left_1.classList.remove(\"vditor-icon--current\");\n                    center_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.add(\"vditor-icon--current\");\n                }\n                else if (type === \"center\") {\n                    left_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.remove(\"vditor-icon--current\");\n                    center_1.classList.add(\"vditor-icon--current\");\n                }\n                else {\n                    center_1.classList.remove(\"vditor-icon--current\");\n                    right_1.classList.remove(\"vditor-icon--current\");\n                    left_1.classList.add(\"vditor-icon--current\");\n                }\n                (0,selection/* setSelectionFocus */.Hc)(range);\n                afterRenderEvent(vditor);\n            };\n            var td = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TD\");\n            var th = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"TH\");\n            var alignType = \"left\";\n            if (td) {\n                alignType = td.getAttribute(\"align\") || \"left\";\n            }\n            else if (th) {\n                alignType = th.getAttribute(\"align\") || \"center\";\n            }\n            var left_1 = document.createElement(\"button\");\n            left_1.setAttribute(\"type\", \"button\");\n            left_1.setAttribute(\"aria-label\", window.VditorI18n.alignLeft + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘L\") + \">\");\n            left_1.setAttribute(\"data-type\", \"left\");\n            left_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-left\"></use></svg>';\n            left_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"left\" ? \" vditor-icon--current\" : \"\");\n            left_1.onclick = function () {\n                setAlign_1(\"left\");\n            };\n            var center_1 = document.createElement(\"button\");\n            center_1.setAttribute(\"type\", \"button\");\n            center_1.setAttribute(\"aria-label\", window.VditorI18n.alignCenter + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘C\") + \">\");\n            center_1.setAttribute(\"data-type\", \"center\");\n            center_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-center\"></use></svg>';\n            center_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"center\" ? \" vditor-icon--current\" : \"\");\n            center_1.onclick = function () {\n                setAlign_1(\"center\");\n            };\n            var right_1 = document.createElement(\"button\");\n            right_1.setAttribute(\"type\", \"button\");\n            right_1.setAttribute(\"aria-label\", window.VditorI18n.alignRight + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘R\") + \">\");\n            right_1.setAttribute(\"data-type\", \"right\");\n            right_1.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-align-right\"></use></svg>';\n            right_1.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\" +\n                    (alignType === \"right\" ? \" vditor-icon--current\" : \"\");\n            right_1.onclick = function () {\n                setAlign_1(\"right\");\n            };\n            var insertRowElement = document.createElement(\"button\");\n            insertRowElement.setAttribute(\"type\", \"button\");\n            insertRowElement.setAttribute(\"aria-label\", window.VditorI18n.insertRowBelow + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌘=\") + \">\");\n            insertRowElement.setAttribute(\"data-type\", \"insertRow\");\n            insertRowElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-row\"></use></svg>';\n            insertRowElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertRowElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertRow(vditor, range, cellElement);\n                }\n            };\n            var insertRowBElement = document.createElement(\"button\");\n            insertRowBElement.setAttribute(\"type\", \"button\");\n            insertRowBElement.setAttribute(\"aria-label\", window.VditorI18n.insertRowAbove + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘F\") + \">\");\n            insertRowBElement.setAttribute(\"data-type\", \"insertRow\");\n            insertRowBElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-rowb\"></use></svg>';\n            insertRowBElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertRowBElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertRowAbove(vditor, range, cellElement);\n                }\n            };\n            var insertColumnElement = document.createElement(\"button\");\n            insertColumnElement.setAttribute(\"type\", \"button\");\n            insertColumnElement.setAttribute(\"aria-label\", window.VditorI18n.insertColumnRight + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘=\") + \">\");\n            insertColumnElement.setAttribute(\"data-type\", \"insertColumn\");\n            insertColumnElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-column\"></use></svg>';\n            insertColumnElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertColumnElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertColumn(vditor, tableElement, cellElement);\n                }\n            };\n            var insertColumnBElement = document.createElement(\"button\");\n            insertColumnBElement.setAttribute(\"type\", \"button\");\n            insertColumnBElement.setAttribute(\"aria-label\", window.VditorI18n.insertColumnLeft + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘G\") + \">\");\n            insertColumnBElement.setAttribute(\"data-type\", \"insertColumn\");\n            insertColumnBElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-insert-columnb\"></use></svg>';\n            insertColumnBElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            insertColumnBElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    insertColumn(vditor, tableElement, cellElement, \"beforebegin\");\n                }\n            };\n            var deleteRowElement = document.createElement(\"button\");\n            deleteRowElement.setAttribute(\"type\", \"button\");\n            deleteRowElement.setAttribute(\"aria-label\", window.VditorI18n[\"delete-row\"] + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌘-\") + \">\");\n            deleteRowElement.setAttribute(\"data-type\", \"deleteRow\");\n            deleteRowElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-delete-row\"></use></svg>';\n            deleteRowElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            deleteRowElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    deleteRow(vditor, range, cellElement);\n                }\n            };\n            var deleteColumnElement = document.createElement(\"button\");\n            deleteColumnElement.setAttribute(\"type\", \"button\");\n            deleteColumnElement.setAttribute(\"aria-label\", window.VditorI18n[\"delete-column\"] + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘-\") + \">\");\n            deleteColumnElement.setAttribute(\"data-type\", \"deleteColumn\");\n            deleteColumnElement.innerHTML =\n                '<svg><use xlink:href=\"#vditor-icon-delete-column\"></use></svg>';\n            deleteColumnElement.className =\n                \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n            deleteColumnElement.onclick = function () {\n                var startContainer = getSelection().getRangeAt(0)\n                    .startContainer;\n                var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n                if (cellElement) {\n                    deleteColumn(vditor, range, tableElement, cellElement);\n                }\n            };\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", window.VditorI18n.row);\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_1 = document.createElement(\"input\");\n            inputWrap.appendChild(input_1);\n            input_1.type = \"number\";\n            input_1.min = \"1\";\n            input_1.className = \"vditor-input\";\n            input_1.style.width = \"42px\";\n            input_1.style.textAlign = \"center\";\n            input_1.setAttribute(\"placeholder\", window.VditorI18n.row);\n            input_1.value = tableElement.rows.length.toString();\n            input_1.oninput = function () {\n                updateTable_1();\n            };\n            input_1.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (event.key === \"Tab\") {\n                    input2_1.focus();\n                    input2_1.select();\n                    event.preventDefault();\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            var input2Wrap = document.createElement(\"span\");\n            input2Wrap.setAttribute(\"aria-label\", window.VditorI18n.column);\n            input2Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input2_1 = document.createElement(\"input\");\n            input2Wrap.appendChild(input2_1);\n            input2_1.type = \"number\";\n            input2_1.min = \"1\";\n            input2_1.className = \"vditor-input\";\n            input2_1.style.width = \"42px\";\n            input2_1.style.textAlign = \"center\";\n            input2_1.setAttribute(\"placeholder\", window.VditorI18n.column);\n            input2_1.value = tableElement.rows[0].cells.length.toString();\n            input2_1.oninput = function () {\n                updateTable_1();\n            };\n            input2_1.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (event.key === \"Tab\") {\n                    input_1.focus();\n                    input_1.select();\n                    event.preventDefault();\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genUp(range, tableElement, vditor);\n            genDown(range, tableElement, vditor);\n            genClose(tableElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", left_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", center_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", right_1);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertRowBElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertRowElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertColumnBElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", insertColumnElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", deleteRowElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", deleteColumnElement);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            vditor.wysiwyg.popover.insertAdjacentHTML(\"beforeend\", \" x \");\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input2Wrap);\n            setPopoverPosition(vditor, tableElement);\n        }\n        // link ref popover\n        var linkRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"link-ref\");\n        if (linkRefElement) {\n            genLinkRefPopover(vditor, linkRefElement, range);\n        }\n        // footnote popover\n        var footnotesRefElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-type\", \"footnotes-ref\");\n        if (footnotesRefElement) {\n            var lang = vditor.options.lang;\n            var options = vditor.options;\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", window.VditorI18n.footnoteRef + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_2 = document.createElement(\"input\");\n            inputWrap.appendChild(input_2);\n            input_2.className = \"vditor-input\";\n            input_2.setAttribute(\"placeholder\", window.VditorI18n.footnoteRef + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            input_2.style.width = \"120px\";\n            input_2.value = footnotesRefElement.getAttribute(\"data-footnotes-label\");\n            input_2.oninput = function () {\n                if (input_2.value.trim() !== \"\") {\n                    footnotesRefElement.setAttribute(\"data-footnotes-label\", input_2.value);\n                }\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            input_2.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genClose(footnotesRefElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            setPopoverPosition(vditor, footnotesRefElement);\n        }\n        // block popover: math-inline, math-block, html-block, html-inline, code-block, html-entity\n        var blockRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(typeElement, \"vditor-wysiwyg__block\");\n        var isBlock = blockRenderElement ? blockRenderElement.getAttribute(\"data-type\").indexOf(\"block\") > -1 : false;\n        vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-wysiwyg__preview\")\n            .forEach(function (itemElement) {\n            if (!blockRenderElement || (blockRenderElement && isBlock && !blockRenderElement.contains(itemElement))) {\n                var previousElement = itemElement.previousElementSibling;\n                previousElement.style.display = \"none\";\n            }\n        });\n        if (blockRenderElement && isBlock) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            genUp(range, blockRenderElement, vditor);\n            genDown(range, blockRenderElement, vditor);\n            genClose(blockRenderElement, vditor);\n            if (blockRenderElement.getAttribute(\"data-type\") === \"code-block\") {\n                var languageWrap = document.createElement(\"span\");\n                languageWrap.setAttribute(\"aria-label\", window.VditorI18n.language + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n                languageWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n                var language_1 = document.createElement(\"input\");\n                languageWrap.appendChild(language_1);\n                var codeElement_1 = blockRenderElement.firstElementChild.firstElementChild;\n                language_1.className = \"vditor-input\";\n                language_1.setAttribute(\"placeholder\", window.VditorI18n.language + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n                language_1.value =\n                    codeElement_1.className.indexOf(\"language-\") > -1\n                        ? codeElement_1.className.split(\"-\")[1].split(\" \")[0]\n                        : \"\";\n                language_1.oninput = function (e) {\n                    if (language_1.value.trim() !== \"\") {\n                        codeElement_1.className = \"language-\".concat(language_1.value);\n                    }\n                    else {\n                        codeElement_1.className = \"\";\n                        vditor.hint.recentLanguage = \"\";\n                    }\n                    if (blockRenderElement.lastElementChild.classList.contains(\"vditor-wysiwyg__preview\")) {\n                        blockRenderElement.lastElementChild.innerHTML =\n                            blockRenderElement.firstElementChild.innerHTML;\n                        processCodeRender(blockRenderElement.lastElementChild, vditor);\n                    }\n                    afterRenderEvent(vditor);\n                    // 当鼠标点选语言时，触发自定义input事件\n                    if (e.detail === 1) {\n                        // 选择语言后，输入焦点切换到代码输入框\n                        range.setStart(codeElement_1.firstChild, 0);\n                        range.collapse(true);\n                        (0,selection/* setSelectionFocus */.Hc)(range);\n                    }\n                };\n                language_1.onkeydown = function (event) {\n                    if (event.isComposing) {\n                        return;\n                    }\n                    if (removeBlockElement(vditor, event)) {\n                        return;\n                    }\n                    if (event.key === \"Escape\" &&\n                        vditor.hint.element.style.display === \"block\") {\n                        vditor.hint.element.style.display = \"none\";\n                        event.preventDefault();\n                        return;\n                    }\n                    vditor.hint.select(event, vditor);\n                    focusToElement(event, range);\n                };\n                language_1.onkeyup = function (event) {\n                    if (event.isComposing ||\n                        event.key === \"Enter\" ||\n                        event.key === \"ArrowUp\" ||\n                        event.key === \"Escape\" ||\n                        event.key === \"ArrowDown\") {\n                        return;\n                    }\n                    var matchLangData = [];\n                    var key = language_1.value.substring(0, language_1.selectionStart);\n                    (vditor.options.preview.hljs.langs || constants/* Constants.CODE_LANGUAGES */.g.CODE_LANGUAGES).forEach(function (keyName) {\n                        if (keyName.indexOf(key.toLowerCase()) > -1) {\n                            matchLangData.push({\n                                html: keyName,\n                                value: keyName,\n                            });\n                        }\n                    });\n                    vditor.hint.genHTML(matchLangData, key, vditor);\n                    event.preventDefault();\n                };\n                vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", languageWrap);\n            }\n            setPopoverPosition(vditor, blockRenderElement);\n        }\n        else {\n            blockRenderElement = undefined;\n        }\n        if (headingElement) {\n            vditor.wysiwyg.popover.innerHTML = \"\";\n            var inputWrap = document.createElement(\"span\");\n            inputWrap.setAttribute(\"aria-label\", \"ID\" + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n            var input_3 = document.createElement(\"input\");\n            inputWrap.appendChild(input_3);\n            input_3.className = \"vditor-input\";\n            input_3.setAttribute(\"placeholder\", \"ID\" + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⌥Enter\") + \">\");\n            input_3.style.width = \"120px\";\n            input_3.value = headingElement.getAttribute(\"data-id\") || \"\";\n            input_3.oninput = function () {\n                headingElement.setAttribute(\"data-id\", input_3.value);\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n            };\n            input_3.onkeydown = function (event) {\n                if (event.isComposing) {\n                    return;\n                }\n                if (removeBlockElement(vditor, event)) {\n                    return;\n                }\n                if (focusToElement(event, range)) {\n                    return;\n                }\n            };\n            genUp(range, headingElement, vditor);\n            genDown(range, headingElement, vditor);\n            genClose(headingElement, vditor);\n            vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n            setPopoverPosition(vditor, headingElement);\n        }\n        // a popover\n        if (aElement) {\n            genAPopover(vditor, aElement, range);\n        }\n        if (!blockquoteElement &&\n            !liElement &&\n            !tableElement &&\n            !blockRenderElement &&\n            !aElement &&\n            !linkRefElement &&\n            !footnotesRefElement &&\n            !headingElement &&\n            !tocElement) {\n            var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(typeElement, \"data-block\", \"0\");\n            if (blockElement &&\n                blockElement.parentElement.isEqualNode(vditor.wysiwyg.element)) {\n                vditor.wysiwyg.popover.innerHTML = \"\";\n                genUp(range, blockElement, vditor);\n                genDown(range, blockElement, vditor);\n                genClose(blockElement, vditor);\n                setPopoverPosition(vditor, blockElement);\n            }\n            else {\n                vditor.wysiwyg.popover.style.display = \"none\";\n            }\n        }\n        // 反斜杠特殊处理\n        vditor.wysiwyg.element\n            .querySelectorAll('span[data-type=\"backslash\"] > span')\n            .forEach(function (item) {\n            item.style.display = \"none\";\n        });\n        var backslashElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"backslash\");\n        if (backslashElement) {\n            backslashElement.querySelector(\"span\").style.display = \"inline\";\n        }\n    }, 200);\n};\nvar setPopoverPosition = function (vditor, element) {\n    var targetElement = element;\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(element, \"TABLE\");\n    if (tableElement) {\n        targetElement = tableElement;\n    }\n    vditor.wysiwyg.popover.style.left = \"0\";\n    vditor.wysiwyg.popover.style.display = \"block\";\n    vditor.wysiwyg.popover.style.top =\n        Math.max(-8, targetElement.offsetTop - 21 - vditor.wysiwyg.element.scrollTop) + \"px\";\n    vditor.wysiwyg.popover.style.left =\n        Math.min(targetElement.offsetLeft, vditor.wysiwyg.element.clientWidth - vditor.wysiwyg.popover.clientWidth) + \"px\";\n    vditor.wysiwyg.popover.setAttribute(\"data-top\", (targetElement.offsetTop - 21).toString());\n};\nvar genLinkRefPopover = function (vditor, linkRefElement, range) {\n    if (range === void 0) { range = getSelection().getRangeAt(0); }\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateLinkRef = function () {\n        if (input.value.trim() !== \"\") {\n            if (linkRefElement.tagName === \"IMG\") {\n                linkRefElement.setAttribute(\"alt\", input.value);\n            }\n            else {\n                linkRefElement.textContent = input.value;\n            }\n        }\n        // data-link-label\n        if (input1.value.trim() !== \"\") {\n            linkRefElement.setAttribute(\"data-link-label\", input1.value);\n        }\n        if (typeof vditor.options.input === \"function\") {\n            vditor.options.input(getMarkdown(vditor));\n        }\n    };\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.textIsNotEmpty);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input = document.createElement(\"input\");\n    inputWrap.appendChild(input);\n    input.className = \"vditor-input\";\n    input.setAttribute(\"placeholder\", window.VditorI18n.textIsNotEmpty);\n    input.style.width = \"120px\";\n    input.value =\n        linkRefElement.getAttribute(\"alt\") || linkRefElement.textContent;\n    input.oninput = function () {\n        updateLinkRef();\n    };\n    input.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, linkRefElement, event, input1);\n    };\n    var input1Wrap = document.createElement(\"span\");\n    input1Wrap.setAttribute(\"aria-label\", window.VditorI18n.linkRef);\n    input1Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input1 = document.createElement(\"input\");\n    input1Wrap.appendChild(input1);\n    input1.className = \"vditor-input\";\n    input1.setAttribute(\"placeholder\", window.VditorI18n.linkRef);\n    input1.value = linkRefElement.getAttribute(\"data-link-label\");\n    input1.oninput = function () {\n        updateLinkRef();\n    };\n    input1.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, linkRefElement, event, input);\n    };\n    genClose(linkRefElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input1Wrap);\n    setPopoverPosition(vditor, linkRefElement);\n};\nvar genUp = function (range, element, vditor) {\n    var previousElement = element.previousElementSibling;\n    if (!previousElement ||\n        (!element.parentElement.isEqualNode(vditor.wysiwyg.element) &&\n            element.tagName !== \"LI\")) {\n        return;\n    }\n    var upElement = document.createElement(\"button\");\n    upElement.setAttribute(\"type\", \"button\");\n    upElement.setAttribute(\"data-type\", \"up\");\n    upElement.setAttribute(\"aria-label\", window.VditorI18n.up + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘U\") + \">\");\n    upElement.innerHTML = '<svg><use xlink:href=\"#vditor-icon-up\"></use></svg>';\n    upElement.className = \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    upElement.onclick = function () {\n        range.insertNode(document.createElement(\"wbr\"));\n        previousElement.insertAdjacentElement(\"beforebegin\", element);\n        (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        scrollCenter(vditor);\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", upElement);\n};\nvar genDown = function (range, element, vditor) {\n    var nextElement = element.nextElementSibling;\n    if (!nextElement ||\n        (!element.parentElement.isEqualNode(vditor.wysiwyg.element) &&\n            element.tagName !== \"LI\")) {\n        return;\n    }\n    var downElement = document.createElement(\"button\");\n    downElement.setAttribute(\"type\", \"button\");\n    downElement.setAttribute(\"data-type\", \"down\");\n    downElement.setAttribute(\"aria-label\", window.VditorI18n.down + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘D\") + \">\");\n    downElement.innerHTML =\n        '<svg><use xlink:href=\"#vditor-icon-down\"></use></svg>';\n    downElement.className =\n        \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    downElement.onclick = function () {\n        range.insertNode(document.createElement(\"wbr\"));\n        nextElement.insertAdjacentElement(\"afterend\", element);\n        (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        scrollCenter(vditor);\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", downElement);\n};\nvar genClose = function (element, vditor) {\n    var close = document.createElement(\"button\");\n    close.setAttribute(\"type\", \"button\");\n    close.setAttribute(\"data-type\", \"remove\");\n    close.setAttribute(\"aria-label\", window.VditorI18n.remove + \"<\" + (0,compatibility/* updateHotkeyTip */.ns)(\"⇧⌘X\") + \">\");\n    close.innerHTML =\n        '<svg><use xlink:href=\"#vditor-icon-trashcan\"></use></svg>';\n    close.className = \"vditor-icon vditor-tooltipped vditor-tooltipped__n\";\n    close.onclick = function () {\n        var range = (0,selection/* getEditorRange */.zh)(vditor);\n        range.setStartAfter(element);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        element.remove();\n        afterRenderEvent(vditor);\n        highlightToolbarWYSIWYG(vditor);\n        if ([\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"].includes(element.tagName)) {\n            renderToc(vditor);\n        }\n    };\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", close);\n};\nvar linkHotkey = function (vditor, element, event, nextInputElement) {\n    if (event.isComposing) {\n        return;\n    }\n    if (event.key === \"Tab\") {\n        nextInputElement.focus();\n        nextInputElement.select();\n        event.preventDefault();\n        return;\n    }\n    if (!(0,compatibility/* isCtrl */.yl)(event) &&\n        !event.shiftKey &&\n        event.altKey &&\n        event.key === \"Enter\") {\n        var range = (0,selection/* getEditorRange */.zh)(vditor);\n        // firefox 不会打断 link https://github.com/Vanessa219/vditor/issues/193\n        element.insertAdjacentHTML(\"afterend\", constants/* Constants.ZWSP */.g.ZWSP);\n        range.setStartAfter(element.nextSibling);\n        range.collapse(true);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        event.preventDefault();\n    }\n};\nvar genAPopover = function (vditor, aElement, range) {\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateA = function () {\n        if (input.value.trim() !== \"\") {\n            aElement.innerHTML = input.value;\n        }\n        aElement.setAttribute(\"href\", input1.value);\n        aElement.setAttribute(\"title\", input2.value);\n        afterRenderEvent(vditor);\n    };\n    aElement.querySelectorAll(\"[data-marker]\").forEach(function (item) {\n        item.removeAttribute(\"data-marker\");\n    });\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.textIsNotEmpty);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input = document.createElement(\"input\");\n    inputWrap.appendChild(input);\n    input.className = \"vditor-input\";\n    input.setAttribute(\"placeholder\", window.VditorI18n.textIsNotEmpty);\n    input.style.width = \"120px\";\n    input.value = aElement.innerHTML || \"\";\n    input.oninput = function () {\n        updateA();\n    };\n    input.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input1);\n    };\n    var input1Wrap = document.createElement(\"span\");\n    input1Wrap.setAttribute(\"aria-label\", window.VditorI18n.link);\n    input1Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input1 = document.createElement(\"input\");\n    input1Wrap.appendChild(input1);\n    input1.className = \"vditor-input\";\n    input1.setAttribute(\"placeholder\", window.VditorI18n.link);\n    input1.value = aElement.getAttribute(\"href\") || \"\";\n    input1.oninput = function () {\n        updateA();\n    };\n    input1.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input2);\n    };\n    var input2Wrap = document.createElement(\"span\");\n    input2Wrap.setAttribute(\"aria-label\", window.VditorI18n.tooltipText);\n    input2Wrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var input2 = document.createElement(\"input\");\n    input2Wrap.appendChild(input2);\n    input2.className = \"vditor-input\";\n    input2.setAttribute(\"placeholder\", window.VditorI18n.tooltipText);\n    input2.style.width = \"60px\";\n    input2.value = aElement.getAttribute(\"title\") || \"\";\n    input2.oninput = function () {\n        updateA();\n    };\n    input2.onkeydown = function (event) {\n        if (removeBlockElement(vditor, event)) {\n            return;\n        }\n        if (focusToElement(event, range)) {\n            return;\n        }\n        linkHotkey(vditor, aElement, event, input);\n    };\n    genClose(aElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input1Wrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", input2Wrap);\n    setPopoverPosition(vditor, aElement);\n};\nvar genImagePopover = function (event, vditor) {\n    var imgElement = event.target;\n    vditor.wysiwyg.popover.innerHTML = \"\";\n    var updateImg = function () {\n        imgElement.setAttribute(\"src\", inputElement.value);\n        imgElement.setAttribute(\"alt\", alt.value);\n        imgElement.setAttribute(\"title\", title.value);\n        if (typeof vditor.options.input === \"function\") {\n            vditor.options.input(getMarkdown(vditor));\n        }\n    };\n    var inputWrap = document.createElement(\"span\");\n    inputWrap.setAttribute(\"aria-label\", window.VditorI18n.imageURL);\n    inputWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var inputElement = document.createElement(\"input\");\n    inputWrap.appendChild(inputElement);\n    inputElement.className = \"vditor-input\";\n    inputElement.setAttribute(\"placeholder\", window.VditorI18n.imageURL);\n    inputElement.value = imgElement.getAttribute(\"src\") || \"\";\n    inputElement.oninput = function () {\n        updateImg();\n    };\n    inputElement.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    var altWrap = document.createElement(\"span\");\n    altWrap.setAttribute(\"aria-label\", window.VditorI18n.alternateText);\n    altWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var alt = document.createElement(\"input\");\n    altWrap.appendChild(alt);\n    alt.className = \"vditor-input\";\n    alt.setAttribute(\"placeholder\", window.VditorI18n.alternateText);\n    alt.style.width = \"52px\";\n    alt.value = imgElement.getAttribute(\"alt\") || \"\";\n    alt.oninput = function () {\n        updateImg();\n    };\n    alt.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    var titleWrap = document.createElement(\"span\");\n    titleWrap.setAttribute(\"aria-label\", window.VditorI18n.title);\n    titleWrap.className = \"vditor-tooltipped vditor-tooltipped__n\";\n    var title = document.createElement(\"input\");\n    titleWrap.appendChild(title);\n    title.className = \"vditor-input\";\n    title.setAttribute(\"placeholder\", window.VditorI18n.title);\n    title.value = imgElement.getAttribute(\"title\") || \"\";\n    title.oninput = function () {\n        updateImg();\n    };\n    title.onkeydown = function (elementEvent) {\n        removeBlockElement(vditor, elementEvent);\n    };\n    genClose(imgElement, vditor);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", inputWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", altWrap);\n    vditor.wysiwyg.popover.insertAdjacentElement(\"beforeend\", titleWrap);\n    setPopoverPosition(vditor, imgElement);\n};\nvar focusToElement = function (event, range) {\n    if ((!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && event.key === \"Enter\") || event.key === \"Escape\") {\n        if (range) {\n            (0,selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        return true;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/highlightToolbar.ts\n\n\nvar highlightToolbar = function (vditor) {\n    if (vditor.currentMode === \"wysiwyg\") {\n        highlightToolbarWYSIWYG(vditor);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        highlightToolbarIR(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/renderDomByMd.ts\n\n\nvar renderDomByMd = function (vditor, md, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    var editorElement = vditor.wysiwyg.element;\n    editorElement.innerHTML = vditor.lute.Md2VditorDOM(md);\n    editorElement.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\").forEach(function (item) {\n        processCodeRender(item, vditor);\n        item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n    });\n    afterRenderEvent(vditor, options);\n};\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/toolbarEvent.ts\n\n\n\n\n\n\n\n\n\nvar cancelBES = function (range, vditor, commandName) {\n    var element = range.startContainer.parentElement;\n    var jump = false;\n    var lastTagName = \"\";\n    var lastEndTagName = \"\";\n    var splitHTML = splitElement(range);\n    var lastBeforeHTML = splitHTML.beforeHTML;\n    var lastAfterHTML = splitHTML.afterHTML;\n    while (element && !jump) {\n        var tagName = element.tagName;\n        if (tagName === \"STRIKE\") {\n            tagName = \"S\";\n        }\n        if (tagName === \"I\") {\n            tagName = \"EM\";\n        }\n        if (tagName === \"B\") {\n            tagName = \"STRONG\";\n        }\n        if (tagName === \"S\" || tagName === \"STRONG\" || tagName === \"EM\") {\n            var insertHTML = \"\";\n            var previousHTML = \"\";\n            var nextHTML = \"\";\n            if (element.parentElement.getAttribute(\"data-block\") !== \"0\") {\n                previousHTML = getPreviousHTML(element);\n                nextHTML = getNextHTML(element);\n            }\n            if (lastBeforeHTML || previousHTML) {\n                insertHTML = \"\".concat(previousHTML, \"<\").concat(tagName, \">\").concat(lastBeforeHTML, \"</\").concat(tagName, \">\");\n                lastBeforeHTML = insertHTML;\n            }\n            if ((commandName === \"bold\" && tagName === \"STRONG\") ||\n                (commandName === \"italic\" && tagName === \"EM\") ||\n                (commandName === \"strikeThrough\" && tagName === \"S\")) {\n                // 取消\n                insertHTML += \"\".concat(lastTagName).concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\").concat(lastEndTagName);\n                jump = true;\n            }\n            if (lastAfterHTML || nextHTML) {\n                lastAfterHTML = \"<\".concat(tagName, \">\").concat(lastAfterHTML, \"</\").concat(tagName, \">\").concat(nextHTML);\n                insertHTML += lastAfterHTML;\n            }\n            if (element.parentElement.getAttribute(\"data-block\") !== \"0\") {\n                element = element.parentElement;\n                element.innerHTML = insertHTML;\n            }\n            else {\n                element.outerHTML = insertHTML;\n                element = element.parentElement;\n            }\n            lastTagName = \"<\".concat(tagName, \">\") + lastTagName;\n            lastEndTagName = \"</\".concat(tagName, \">\") + lastEndTagName;\n        }\n        else {\n            jump = true;\n        }\n    }\n    (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n};\nvar toolbarEvent = function (vditor, actionBtn, event) {\n    if (vditor.wysiwyg.composingLock // Mac Chrome 中韩文结束会出发此事件，导致重复末尾字符 https://github.com/Vanessa219/vditor/issues/188\n        && event instanceof CustomEvent // 点击按钮应忽略输入法 https://github.com/Vanessa219/vditor/issues/473\n    ) {\n        return;\n    }\n    var useHighlight = true;\n    var useRender = true;\n    if (vditor.wysiwyg.element.querySelector(\"wbr\")) {\n        vditor.wysiwyg.element.querySelector(\"wbr\").remove();\n    }\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    // 移除\n    if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n        if (commandName === \"strike\") {\n            commandName = \"strikeThrough\";\n        }\n        if (commandName === \"quote\") {\n            var quoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"BLOCKQUOTE\");\n            if (!quoteElement) {\n                quoteElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (quoteElement) {\n                useHighlight = false;\n                actionBtn.classList.remove(\"vditor-menu--current\");\n                range.insertNode(document.createElement(\"wbr\"));\n                quoteElement.outerHTML = quoteElement.innerHTML.trim() === \"\" ?\n                    \"<p data-block=\\\"0\\\">\".concat(quoteElement.innerHTML, \"</p>\") : quoteElement.innerHTML;\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"inline-code\") {\n            var inlineCodeElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"CODE\");\n            if (!inlineCodeElement) {\n                inlineCodeElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (inlineCodeElement) {\n                inlineCodeElement.outerHTML = inlineCodeElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") + \"<wbr>\";\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"link\") {\n            if (!range.collapsed) {\n                document.execCommand(\"unlink\", false, \"\");\n            }\n            else {\n                range.selectNode(range.startContainer.parentElement);\n                document.execCommand(\"unlink\", false, \"\");\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName);\n            (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n        }\n        else {\n            // bold, italic, strike\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n            if (range.toString() === \"\") {\n                cancelBES(range, vditor, commandName);\n            }\n            else {\n                document.execCommand(commandName, false, \"\");\n            }\n        }\n    }\n    else {\n        // 添加\n        if (vditor.wysiwyg.element.childNodes.length === 0) {\n            vditor.wysiwyg.element.innerHTML = '<p data-block=\"0\"><wbr></p>';\n            (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n        if (commandName === \"quote\") {\n            if (!blockElement) {\n                blockElement = range.startContainer.childNodes[range.startOffset];\n            }\n            if (blockElement) {\n                useHighlight = false;\n                actionBtn.classList.add(\"vditor-menu--current\");\n                range.insertNode(document.createElement(\"wbr\"));\n                var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n                // li 中软换行\n                if (liElement && blockElement.contains(liElement)) {\n                    liElement.innerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(liElement.innerHTML, \"</blockquote>\");\n                }\n                else {\n                    blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n                }\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName, false);\n            (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            useHighlight = false;\n            removeCurrentToolbar(vditor.toolbar.elements, [\"check\", \"list\", \"ordered-list\"]);\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"inline-code\") {\n            if (range.toString() === \"\") {\n                var node = document.createElement(\"code\");\n                node.textContent = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(node);\n                range.setStart(node.firstChild, 1);\n                range.collapse(true);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n            else if (range.startContainer.nodeType === 3) {\n                var node = document.createElement(\"code\");\n                range.surroundContents(node);\n                range.insertNode(node);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"code\") {\n            var node = document.createElement(\"div\");\n            node.className = \"vditor-wysiwyg__block\";\n            node.setAttribute(\"data-type\", \"code-block\");\n            node.setAttribute(\"data-block\", \"0\");\n            node.setAttribute(\"data-marker\", \"```\");\n            if (range.toString() === \"\") {\n                node.innerHTML = \"<pre><code><wbr>\\n</code></pre>\";\n            }\n            else {\n                node.innerHTML = \"<pre><code>\".concat(range.toString(), \"<wbr></code></pre>\");\n                range.deleteContents();\n            }\n            range.insertNode(node);\n            if (blockElement) {\n                blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            vditor.wysiwyg.element.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\").forEach(function (item) {\n                processCodeRender(item, vditor);\n            });\n            actionBtn.classList.add(\"vditor-menu--disabled\");\n        }\n        else if (commandName === \"link\") {\n            if (range.toString() === \"\") {\n                var aElement = document.createElement(\"a\");\n                aElement.innerText = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(aElement);\n                range.setStart(aElement.firstChild, 1);\n                range.collapse(true);\n                genAPopover(vditor, aElement, range);\n                var textInputElement = vditor.wysiwyg.popover.querySelector(\"input\");\n                textInputElement.value = \"\";\n                textInputElement.focus();\n                useRender = false;\n            }\n            else {\n                var node = document.createElement(\"a\");\n                node.setAttribute(\"href\", \"\");\n                node.innerHTML = range.toString();\n                range.surroundContents(node);\n                range.insertNode(node);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n                genAPopover(vditor, node, range);\n                var textInputElements = vditor.wysiwyg.popover.querySelectorAll(\"input\");\n                textInputElements[0].value = node.innerText;\n                textInputElements[1].focus();\n            }\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"table\") {\n            var tableHTML_1 = \"<table data-block=\\\"0\\\"><thead><tr><th>col1<wbr></th><th>col2</th><th>col3</th></tr></thead><tbody><tr><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td></tr></tbody></table>\";\n            if (range.toString().trim() === \"\") {\n                if (blockElement && blockElement.innerHTML.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                    blockElement.outerHTML = tableHTML_1;\n                }\n                else {\n                    document.execCommand(\"insertHTML\", false, tableHTML_1);\n                }\n                range.selectNode(vditor.wysiwyg.element.querySelector(\"wbr\").previousSibling);\n                vditor.wysiwyg.element.querySelector(\"wbr\").remove();\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n            else {\n                tableHTML_1 = \"<table data-block=\\\"0\\\"><thead><tr>\";\n                var tableText = range.toString().split(\"\\n\");\n                var delimiter_1 = tableText[0].split(\",\").length > tableText[0].split(\"\\t\").length ? \",\" : \"\\t\";\n                tableText.forEach(function (rows, index) {\n                    if (index === 0) {\n                        rows.split(delimiter_1).forEach(function (header, subIndex) {\n                            if (subIndex === 0) {\n                                tableHTML_1 += \"<th>\".concat(header, \"<wbr></th>\");\n                            }\n                            else {\n                                tableHTML_1 += \"<th>\".concat(header, \"</th>\");\n                            }\n                        });\n                        tableHTML_1 += \"</tr></thead>\";\n                    }\n                    else {\n                        if (index === 1) {\n                            tableHTML_1 += \"<tbody><tr>\";\n                        }\n                        else {\n                            tableHTML_1 += \"<tr>\";\n                        }\n                        rows.split(delimiter_1).forEach(function (cell) {\n                            tableHTML_1 += \"<td>\".concat(cell, \"</td>\");\n                        });\n                        tableHTML_1 += \"</tr>\";\n                    }\n                });\n                tableHTML_1 += \"</tbody></table>\";\n                document.execCommand(\"insertHTML\", false, tableHTML_1);\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--disabled\");\n        }\n        else if (commandName === \"line\") {\n            if (blockElement) {\n                var hrHTML = '<hr data-block=\"0\"><p data-block=\"0\"><wbr>\\n</p>';\n                if (blockElement.innerHTML.trim() === \"\") {\n                    blockElement.outerHTML = hrHTML;\n                }\n                else {\n                    blockElement.insertAdjacentHTML(\"afterend\", hrHTML);\n                }\n                (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            }\n        }\n        else {\n            // bold, italic, strike\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n            if (commandName === \"strike\") {\n                commandName = \"strikeThrough\";\n            }\n            if (range.toString() === \"\" && (commandName === \"bold\" || commandName === \"italic\" || commandName === \"strikeThrough\")) {\n                var tagName = \"strong\";\n                if (commandName === \"italic\") {\n                    tagName = \"em\";\n                }\n                else if (commandName === \"strikeThrough\") {\n                    tagName = \"s\";\n                }\n                var node = document.createElement(tagName);\n                node.textContent = constants/* Constants.ZWSP */.g.ZWSP;\n                range.insertNode(node);\n                if (node.previousSibling && node.previousSibling.textContent === constants/* Constants.ZWSP */.g.ZWSP) {\n                    // 移除多层嵌套中的 zwsp\n                    node.previousSibling.textContent = \"\";\n                }\n                range.setStart(node.firstChild, 1);\n                range.collapse(true);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n            else {\n                document.execCommand(commandName, false, \"\");\n            }\n        }\n    }\n    if (useHighlight) {\n        highlightToolbarWYSIWYG(vditor);\n    }\n    if (useRender) {\n        afterRenderEvent(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/MenuItem.ts\n\n\n\n\n\n\nvar MenuItem = /** @class */ (function () {\n    function MenuItem(vditor, menuItem) {\n        var _a;\n        var _this = this;\n        this.element = document.createElement(\"div\");\n        if (menuItem.className) {\n            (_a = this.element.classList).add.apply(_a, menuItem.className.split(\" \"));\n        }\n        var hotkey = menuItem.hotkey ? \" <\".concat((0,compatibility/* updateHotkeyTip */.ns)(menuItem.hotkey), \">\") : \"\";\n        if (menuItem.level === 2) {\n            hotkey = menuItem.hotkey ? \" &lt;\".concat((0,compatibility/* updateHotkeyTip */.ns)(menuItem.hotkey), \"&gt;\") : \"\";\n        }\n        var tip = menuItem.tip ? menuItem.tip + hotkey : \"\".concat(window.VditorI18n[menuItem.name]).concat(hotkey);\n        var tagName = menuItem.name === \"upload\" ? \"div\" : \"button\";\n        if (menuItem.level === 2) {\n            this.element.innerHTML = \"<\".concat(tagName, \" data-type=\\\"\").concat(menuItem.name, \"\\\">\").concat(tip, \"</\").concat(tagName, \">\");\n        }\n        else {\n            this.element.classList.add(\"vditor-toolbar__item\");\n            var iconElement = document.createElement(tagName);\n            iconElement.setAttribute(\"data-type\", menuItem.name);\n            iconElement.className = \"vditor-tooltipped vditor-tooltipped__\".concat(menuItem.tipPosition);\n            iconElement.setAttribute(\"aria-label\", tip);\n            iconElement.innerHTML = menuItem.icon;\n            this.element.appendChild(iconElement);\n        }\n        if (!menuItem.prefix) {\n            return;\n        }\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            if (vditor.currentMode === \"wysiwyg\") {\n                toolbarEvent(vditor, _this.element.children[0], event);\n            }\n            else if (vditor.currentMode === \"ir\") {\n                process_processToolbar(vditor, _this.element.children[0], menuItem.prefix || \"\", menuItem.suffix || \"\");\n            }\n            else {\n                processToolbar(vditor, _this.element.children[0], menuItem.prefix || \"\", menuItem.suffix || \"\");\n            }\n        });\n    }\n    return MenuItem;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/EditMode.ts\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar setEditMode = function (vditor, type, event) {\n    var markdownText;\n    if (typeof event !== \"string\") {\n        hidePanel(vditor, [\"subToolbar\", \"hint\"]);\n        event.preventDefault();\n        markdownText = getMarkdown(vditor);\n    }\n    else {\n        markdownText = event;\n    }\n    if (vditor.currentMode === type && typeof event !== \"string\") {\n        return;\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n    if (vditor.options.preview.mode === \"both\" && type === \"sv\") {\n        vditor.preview.element.style.display = \"block\";\n    }\n    else {\n        vditor.preview.element.style.display = \"none\";\n    }\n    enableToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n    removeCurrentToolbar(vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS */.g.EDIT_TOOLBARS);\n    disableToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\"]);\n    if (type === \"ir\") {\n        hideToolbar(vditor.toolbar.elements, [\"both\"]);\n        showToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.sv.element.style.display = \"none\";\n        vditor.wysiwyg.element.parentElement.style.display = \"none\";\n        vditor.ir.element.parentElement.style.display = \"block\";\n        vditor.lute.SetVditorIR(true);\n        vditor.lute.SetVditorWYSIWYG(false);\n        vditor.lute.SetVditorSV(false);\n        vditor.currentMode = \"ir\";\n        vditor.ir.element.innerHTML = vditor.lute.Md2VditorIRDOM(markdownText);\n        process_processAfterRender(vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        setPadding(vditor);\n        vditor.ir.element.querySelectorAll(\".vditor-ir__preview[data-render='2']\").forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        vditor.ir.element.querySelectorAll(\".vditor-toc\").forEach(function (item) {\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n    }\n    else if (type === \"wysiwyg\") {\n        hideToolbar(vditor.toolbar.elements, [\"both\"]);\n        showToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.sv.element.style.display = \"none\";\n        vditor.wysiwyg.element.parentElement.style.display = \"block\";\n        vditor.ir.element.parentElement.style.display = \"none\";\n        vditor.lute.SetVditorIR(false);\n        vditor.lute.SetVditorWYSIWYG(true);\n        vditor.lute.SetVditorSV(false);\n        vditor.currentMode = \"wysiwyg\";\n        setPadding(vditor);\n        renderDomByMd(vditor, markdownText, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        vditor.wysiwyg.element.querySelectorAll(\".vditor-toc\").forEach(function (item) {\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n        vditor.wysiwyg.popover.style.display = \"none\";\n    }\n    else if (type === \"sv\") {\n        showToolbar(vditor.toolbar.elements, [\"both\"]);\n        hideToolbar(vditor.toolbar.elements, [\"outdent\", \"indent\", \"outline\", \"insert-before\", \"insert-after\"]);\n        vditor.wysiwyg.element.parentElement.style.display = \"none\";\n        vditor.ir.element.parentElement.style.display = \"none\";\n        if (vditor.options.preview.mode === \"both\") {\n            vditor.sv.element.style.display = \"block\";\n        }\n        else if (vditor.options.preview.mode === \"editor\") {\n            vditor.sv.element.style.display = \"block\";\n        }\n        vditor.lute.SetVditorIR(false);\n        vditor.lute.SetVditorWYSIWYG(false);\n        vditor.lute.SetVditorSV(true);\n        vditor.currentMode = \"sv\";\n        var svHTML = processSpinVditorSVDOM(markdownText, vditor);\n        if (svHTML === \"<div data-block='0'></div>\") {\n            // https://github.com/Vanessa219/vditor/issues/654 SV 模式 Placeholder 显示问题\n            svHTML = \"\";\n        }\n        vditor.sv.element.innerHTML = svHTML;\n        combineFootnote(vditor.sv.element);\n        processAfterRender(vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n        setPadding(vditor);\n    }\n    vditor.undo.resetIcon(vditor);\n    if (typeof event !== \"string\") {\n        // 初始化不 focus\n        vditor[vditor.currentMode].element.focus();\n        highlightToolbar(vditor);\n    }\n    renderToc(vditor);\n    setTypewriterPosition(vditor);\n    if (vditor.toolbar.elements[\"edit-mode\"]) {\n        vditor.toolbar.elements[\"edit-mode\"].querySelectorAll(\"button\").forEach(function (item) {\n            item.classList.remove(\"vditor-menu--current\");\n        });\n        vditor.toolbar.elements[\"edit-mode\"].querySelector(\"button[data-mode=\\\"\".concat(vditor.currentMode, \"\\\"]\")).classList.add(\"vditor-menu--current\");\n    }\n    vditor.outline.toggle(vditor, vditor.currentMode !== \"sv\" && vditor.options.outline.enable, typeof event !== \"string\");\n};\nvar EditMode = /** @class */ (function (_super) {\n    __extends(EditMode, _super);\n    function EditMode(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        panelElement.innerHTML = \"<button data-mode=\\\"wysiwyg\\\">\".concat(window.VditorI18n.wysiwyg, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘7\"), \"></button>\\n<button data-mode=\\\"ir\\\">\").concat(window.VditorI18n.instantRendering, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘8\"), \"></button>\\n<button data-mode=\\\"sv\\\">\").concat(window.VditorI18n.splitView, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘9\"), \"></button>\");\n        _this.element.appendChild(panelElement);\n        _this._bindEvent(vditor, panelElement, menuItem);\n        return _this;\n    }\n    EditMode.prototype._bindEvent = function (vditor, panelElement, menuItem) {\n        var actionBtn = this.element.children[0];\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        panelElement.children.item(0).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // wysiwyg\n            setEditMode(vditor, \"wysiwyg\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n        panelElement.children.item(1).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // ir\n            setEditMode(vditor, \"ir\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n        panelElement.children.item(2).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            // markdown\n            setEditMode(vditor, \"sv\", event);\n            event.preventDefault();\n            event.stopPropagation();\n        });\n    };\n    return EditMode;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/util/getSelectText.ts\n\nvar getSelectText = function (editor, range) {\n    if ((0,selection/* selectIsEditor */.Gb)(editor, range)) {\n        return getSelection().toString();\n    }\n    return \"\";\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/editorCommonEvent.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar focusEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"focus\", function () {\n        if (vditor.options.focus) {\n            vditor.options.focus(getMarkdown(vditor));\n        }\n        hidePanel(vditor, [\"subToolbar\", \"hint\"]);\n    });\n};\nvar dblclickEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"dblclick\", function (event) {\n        if (event.target.tagName === \"IMG\") {\n            if (vditor.options.image.preview) {\n                vditor.options.image.preview(event.target);\n            }\n            else if (vditor.options.image.isPreview) {\n                (0,preview_image/* previewImage */.E)(event.target, vditor.options.lang, vditor.options.theme);\n            }\n        }\n    });\n};\nvar blurEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"blur\", function (event) {\n        if (vditor.currentMode === \"ir\") {\n            var expandElement = vditor.ir.element.querySelector(\".vditor-ir__node--expand\");\n            if (expandElement) {\n                expandElement.classList.remove(\"vditor-ir__node--expand\");\n            }\n        }\n        else if (vditor.currentMode === \"wysiwyg\" &&\n            !vditor.wysiwyg.selectPopover.contains(event.relatedTarget)) {\n            vditor.wysiwyg.hideComment();\n        }\n        vditor[vditor.currentMode].range = (0,selection/* getEditorRange */.zh)(vditor);\n        if (vditor.options.blur) {\n            vditor.options.blur(getMarkdown(vditor));\n        }\n    });\n};\nvar dropEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"dragstart\", function (event) {\n        // 选中编辑器中的文字进行拖拽\n        event.dataTransfer.setData(constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR, constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR);\n    });\n    editorElement.addEventListener(\"drop\", function (event) {\n        if (event.dataTransfer.getData(constants/* Constants.DROP_EDITOR */.g.DROP_EDITOR)) {\n            // 编辑器内选中文字拖拽\n            execAfterRender(vditor);\n        }\n        else if (event.dataTransfer.types.includes(\"Files\") || event.dataTransfer.types.includes(\"text/html\")) {\n            // 外部文件拖入编辑器中或者编辑器内选中文字拖拽\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        }\n    });\n};\nvar copyEvent = function (vditor, editorElement, copy) {\n    editorElement.addEventListener(\"copy\", function (event) { return copy(event, vditor); });\n};\nvar cutEvent = function (vditor, editorElement, copy) {\n    editorElement.addEventListener(\"cut\", function (event) {\n        copy(event, vditor);\n        // 获取 comment\n        if (vditor.options.comment.enable && vditor.currentMode === \"wysiwyg\") {\n            vditor.wysiwyg.getComments(vditor);\n        }\n        document.execCommand(\"delete\");\n    });\n};\nvar scrollCenter = function (vditor) {\n    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n        vditor.options.comment.adjustTop(vditor.wysiwyg.getComments(vditor, true));\n    }\n    if (!vditor.options.typewriterMode) {\n        return;\n    }\n    var editorElement = vditor[vditor.currentMode].element;\n    var cursorTop = (0,selection/* getCursorPosition */.Ny)(editorElement).top;\n    if (vditor.options.height === \"auto\" && !vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        window.scrollTo(window.scrollX, cursorTop + vditor.element.offsetTop + vditor.toolbar.element.offsetHeight - window.innerHeight / 2 + 10);\n    }\n    if (vditor.options.height !== \"auto\" || vditor.element.classList.contains(\"vditor--fullscreen\")) {\n        editorElement.scrollTop = cursorTop + editorElement.scrollTop - editorElement.clientHeight / 2 + 10;\n    }\n};\nvar hotkeyEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"keydown\", function (event) {\n        if (!event.isComposing && vditor.options.keydown) {\n            vditor.options.keydown(event);\n        }\n        // hint: 上下选择\n        if ((vditor.options.hint.extend.length > 1 || vditor.toolbar.elements.emoji) &&\n            vditor.hint.select(event, vditor)) {\n            return;\n        }\n        // 重置 comment\n        if (vditor.options.comment.enable && vditor.currentMode === \"wysiwyg\" &&\n            (event.key === \"Backspace\" || matchHotKey(\"⌘X\", event))) {\n            vditor.wysiwyg.getComments(vditor);\n        }\n        if (vditor.currentMode === \"sv\") {\n            if (processKeydown_processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        else if (vditor.currentMode === \"wysiwyg\") {\n            if (wysiwyg_processKeydown_processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        else if (vditor.currentMode === \"ir\") {\n            if (processKeydown(vditor, event)) {\n                return;\n            }\n        }\n        if (vditor.options.ctrlEnter && matchHotKey(\"⌘Enter\", event)) {\n            vditor.options.ctrlEnter(getMarkdown(vditor));\n            event.preventDefault();\n            return;\n        }\n        // undo\n        if (matchHotKey(\"⌘Z\", event) && !vditor.toolbar.elements.undo) {\n            vditor.undo.undo(vditor);\n            event.preventDefault();\n            return;\n        }\n        // redo\n        if (matchHotKey(\"⌘Y\", event) && !vditor.toolbar.elements.redo) {\n            vditor.undo.redo(vditor);\n            event.preventDefault();\n            return;\n        }\n        // esc\n        if (event.key === \"Escape\") {\n            if (vditor.hint.element.style.display === \"block\") {\n                vditor.hint.element.style.display = \"none\";\n            }\n            else if (vditor.options.esc && !event.isComposing) {\n                vditor.options.esc(getMarkdown(vditor));\n            }\n            event.preventDefault();\n            return;\n        }\n        // h1 - h6 hotkey\n        if ((0,compatibility/* isCtrl */.yl)(event) && event.altKey && !event.shiftKey && /^Digit[1-6]$/.test(event.code)) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                var tagName = event.code.replace(\"Digit\", \"H\");\n                if ((0,hasClosest/* hasClosestByMatchTag */.lG)(getSelection().getRangeAt(0).startContainer, tagName)) {\n                    removeHeading(vditor);\n                }\n                else {\n                    setHeading(vditor, tagName);\n                }\n                afterRenderEvent(vditor);\n            }\n            else if (vditor.currentMode === \"sv\") {\n                processHeading(vditor, \"#\".repeat(parseInt(event.code.replace(\"Digit\", \"\"), 10)) + \" \");\n            }\n            else if (vditor.currentMode === \"ir\") {\n                process_processHeading(vditor, \"#\".repeat(parseInt(event.code.replace(\"Digit\", \"\"), 10)) + \" \");\n            }\n            event.preventDefault();\n            return true;\n        }\n        // toggle edit mode\n        if ((0,compatibility/* isCtrl */.yl)(event) && event.altKey && !event.shiftKey && /^Digit[7-9]$/.test(event.code)) {\n            if (event.code === \"Digit7\") {\n                setEditMode(vditor, \"wysiwyg\", event);\n            }\n            else if (event.code === \"Digit8\") {\n                setEditMode(vditor, \"ir\", event);\n            }\n            else if (event.code === \"Digit9\") {\n                setEditMode(vditor, \"sv\", event);\n            }\n            return true;\n        }\n        // toolbar action\n        vditor.options.toolbar.find(function (menuItem) {\n            if (!menuItem.hotkey || menuItem.toolbar) {\n                if (menuItem.toolbar) {\n                    var sub = menuItem.toolbar.find(function (subMenuItem) {\n                        if (!subMenuItem.hotkey) {\n                            return false;\n                        }\n                        if (matchHotKey(subMenuItem.hotkey, event)) {\n                            vditor.toolbar.elements[subMenuItem.name].children[0]\n                                .dispatchEvent(new CustomEvent((0,compatibility/* getEventName */.Le)()));\n                            event.preventDefault();\n                            return true;\n                        }\n                    });\n                    return sub ? true : false;\n                }\n                return false;\n            }\n            if (matchHotKey(menuItem.hotkey, event)) {\n                vditor.toolbar.elements[menuItem.name].children[0].dispatchEvent(new CustomEvent((0,compatibility/* getEventName */.Le)()));\n                event.preventDefault();\n                return true;\n            }\n        });\n    });\n};\nvar selectEvent = function (vditor, editorElement) {\n    editorElement.addEventListener(\"selectstart\", function (event) {\n        editorElement.onmouseup = function () {\n            setTimeout(function () {\n                var selectText = getSelectText(vditor[vditor.currentMode].element);\n                if (selectText.trim()) {\n                    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n                        if (!(0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"footnotes-block\") &&\n                            !(0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"link-ref-defs-block\")) {\n                            vditor.wysiwyg.showComment();\n                        }\n                        else {\n                            vditor.wysiwyg.hideComment();\n                        }\n                    }\n                    if (vditor.options.select) {\n                        vditor.options.select(selectText);\n                    }\n                }\n                else {\n                    if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n                        vditor.wysiwyg.hideComment();\n                    }\n                }\n            });\n        };\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/sv/process.ts\n\n\n\n\n\n\n\n\n\nvar processPaste = function (vditor, text) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    range.extractContents();\n    range.insertNode(document.createTextNode(Lute.Caret));\n    range.insertNode(document.createTextNode(text));\n    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n    if (!blockElement) {\n        blockElement = vditor.sv.element;\n    }\n    var spinHTML = vditor.lute.SpinVditorSVDOM(blockElement.textContent);\n    spinHTML = \"<div data-block='0'>\" +\n        spinHTML.replace(/<span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span><span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span></g, '<span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span></div><div data-block=\"0\"><') +\n        \"</div>\";\n    if (blockElement.isEqualNode(vditor.sv.element)) {\n        blockElement.innerHTML = spinHTML;\n    }\n    else {\n        blockElement.outerHTML = spinHTML;\n    }\n    combineFootnote(vditor.sv.element);\n    (0,selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    scrollCenter(vditor);\n};\nvar getSideByType = function (spanNode, type, isPrevious) {\n    if (isPrevious === void 0) { isPrevious = true; }\n    var sideElement = spanNode;\n    if (sideElement.nodeType === 3) {\n        sideElement = sideElement.parentElement;\n    }\n    while (sideElement) {\n        if (sideElement.getAttribute(\"data-type\") === type) {\n            return sideElement;\n        }\n        if (isPrevious) {\n            sideElement = sideElement.previousElementSibling;\n        }\n        else {\n            sideElement = sideElement.nextElementSibling;\n        }\n    }\n    return false;\n};\nvar processSpinVditorSVDOM = function (html, vditor) {\n    log(\"SpinVditorSVDOM\", html, \"argument\", vditor.options.debugger);\n    var spinHTML = vditor.lute.SpinVditorSVDOM(html);\n    html = \"<div data-block='0'>\" +\n        spinHTML.replace(/<span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span><span data-type=\"newline\"><br \\/><span style=\"display: none\">\\n<\\/span><\\/span></g, '<span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\\n</span></span></div><div data-block=\"0\"><') +\n        \"</div>\";\n    log(\"SpinVditorSVDOM\", html, \"result\", vditor.options.debugger);\n    return html;\n};\nvar processPreviousMarkers = function (spanElement) {\n    var spanType = spanElement.getAttribute(\"data-type\");\n    var previousElement = spanElement.previousElementSibling;\n    // 有内容的子列表/标题，在其 marker 后换行\n    var markerText = (spanType && spanType !== \"text\" && spanType !== \"table\" && spanType !== \"heading-marker\" &&\n        spanType !== \"newline\" && spanType !== \"yaml-front-matter-open-marker\" && spanType !== \"yaml-front-matter-close-marker\"\n        && spanType !== \"code-block-info\" && spanType !== \"code-block-close-marker\" && spanType !== \"code-block-open-marker\") ?\n        spanElement.textContent : \"\";\n    var hasNL = false;\n    if (spanType === \"newline\") {\n        hasNL = true;\n    }\n    while (previousElement && !hasNL) {\n        var previousType = previousElement.getAttribute(\"data-type\");\n        if (previousType === \"li-marker\" || previousType === \"blockquote-marker\" || previousType === \"task-marker\" ||\n            previousType === \"padding\") {\n            var previousText = previousElement.textContent;\n            if (previousType === \"li-marker\" &&\n                (spanType === \"code-block-open-marker\" || spanType === \"code-block-info\")) {\n                // https://github.com/Vanessa219/vditor/issues/586\n                markerText = previousText.replace(/\\S/g, \" \") + markerText;\n            }\n            else if (spanType === \"code-block-close-marker\" &&\n                previousElement.nextElementSibling.isSameNode(spanElement)) {\n                // https://github.com/Vanessa219/vditor/issues/594\n                var openMarker = getSideByType(spanElement, \"code-block-open-marker\");\n                if (openMarker && openMarker.previousElementSibling) {\n                    previousElement = openMarker.previousElementSibling;\n                    markerText = previousText + markerText;\n                }\n            }\n            else {\n                markerText = previousText + markerText;\n            }\n        }\n        else if (previousType === \"newline\") {\n            hasNL = true;\n        }\n        previousElement = previousElement.previousElementSibling;\n    }\n    return markerText;\n};\nvar processAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        vditor.hint.render(vditor);\n    }\n    vditor.preview.render(vditor);\n    var text = getMarkdown(vditor);\n    if (typeof vditor.options.input === \"function\" && options.enableInput) {\n        vditor.options.input(text);\n    }\n    if (vditor.options.counter.enable) {\n        vditor.counter.render(vditor, text);\n    }\n    if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n        localStorage.setItem(vditor.options.cache.id, text);\n        if (vditor.options.cache.after) {\n            vditor.options.cache.after(text);\n        }\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n    clearTimeout(vditor.sv.processTimeoutId);\n    vditor.sv.processTimeoutId = window.setTimeout(function () {\n        if (options.enableAddUndoStack && !vditor.sv.composingLock) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\nvar processHeading = function (vditor, value) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var headingElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"SPAN\");\n    if (headingElement && headingElement.textContent.trim() !== \"\") {\n        value = \"\\n\" + value;\n    }\n    range.collapse(true);\n    document.execCommand(\"insertHTML\", false, value);\n};\nvar processToolbar = function (vditor, actionBtn, prefix, suffix) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    // 添加\n    if (vditor.sv.element.childNodes.length === 0) {\n        vditor.sv.element.innerHTML = \"<span data-type=\\\"p\\\" data-block=\\\"0\\\"><span data-type=\\\"text\\\"><wbr></span></span><span data-type=\\\"newline\\\"><br><span style=\\\"display: none\\\">\\n</span></span>\";\n        (0,selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    }\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    var spanElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"SPAN\");\n    if (!blockElement) {\n        return;\n    }\n    if (commandName === \"link\") {\n        var html = void 0;\n        if (range.toString() === \"\") {\n            html = \"\".concat(prefix).concat(Lute.Caret).concat(suffix);\n        }\n        else {\n            html = \"\".concat(prefix).concat(range.toString()).concat(suffix.replace(\")\", Lute.Caret + \")\"));\n        }\n        document.execCommand(\"insertHTML\", false, html);\n        return;\n    }\n    else if (commandName === \"italic\" || commandName === \"bold\" || commandName === \"strike\" ||\n        commandName === \"inline-code\" || commandName === \"code\" || commandName === \"table\" || commandName === \"line\") {\n        var html = void 0;\n        // https://github.com/Vanessa219/vditor/issues/563 代码块不需要后面的 ```\n        if (range.toString() === \"\") {\n            html = \"\".concat(prefix).concat(Lute.Caret).concat(commandName === \"code\" ? \"\" : suffix);\n        }\n        else {\n            html = \"\".concat(prefix).concat(range.toString()).concat(Lute.Caret).concat(commandName === \"code\" ? \"\" : suffix);\n        }\n        if (commandName === \"table\" || (commandName === \"code\" && spanElement && spanElement.textContent !== \"\")) {\n            html = \"\\n\\n\" + html;\n        }\n        else if (commandName === \"line\") {\n            html = \"\\n\\n\".concat(prefix, \"\\n\").concat(Lute.Caret);\n        }\n        document.execCommand(\"insertHTML\", false, html);\n        return;\n    }\n    else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\" ||\n        commandName === \"quote\") {\n        if (spanElement) {\n            var marker = \"* \";\n            if (commandName === \"check\") {\n                marker = \"* [ ] \";\n            }\n            else if (commandName === \"ordered-list\") {\n                marker = \"1. \";\n            }\n            else if (commandName === \"quote\") {\n                marker = \"> \";\n            }\n            var newLine = getSideByType(spanElement, \"newline\");\n            if (newLine) {\n                newLine.insertAdjacentText(\"afterend\", marker);\n            }\n            else {\n                blockElement.insertAdjacentText(\"afterbegin\", marker);\n            }\n            inputEvent(vditor);\n            return;\n        }\n    }\n    (0,selection/* setRangeByWbr */.ib)(vditor.sv.element, range);\n    processAfterRender(vditor);\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/getElement.ts\nvar getElement = function (vditor) {\n    switch (vditor.currentMode) {\n        case \"ir\":\n            return vditor.ir.element;\n        case \"wysiwyg\":\n            return vditor.wysiwyg.element;\n        case \"sv\":\n            return vditor.sv.element;\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/setHeaders.ts\nvar setHeaders = function (vditor, xhr) {\n    if (vditor.options.upload.setHeaders) {\n        vditor.options.upload.headers = vditor.options.upload.setHeaders();\n    }\n    if (vditor.options.upload.headers) {\n        Object.keys(vditor.options.upload.headers).forEach(function (key) {\n            xhr.setRequestHeader(key, vditor.options.upload.headers[key]);\n        });\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/upload/index.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\nvar Upload = /** @class */ (function () {\n    function Upload() {\n        this.isUploading = false;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-upload\";\n    }\n    return Upload;\n}());\nvar validateFile = function (vditor, files) {\n    vditor.tip.hide();\n    var uploadFileList = [];\n    var errorTip = \"\";\n    var uploadingStr = \"\";\n    var lang = vditor.options.lang;\n    var options = vditor.options;\n    var _loop_1 = function (iMax, i) {\n        var file = files[i];\n        var validate = true;\n        if (!file.name) {\n            errorTip += \"<li>\".concat(window.VditorI18n.nameEmpty, \"</li>\");\n            validate = false;\n        }\n        if (file.size > vditor.options.upload.max) {\n            errorTip += \"<li>\".concat(file.name, \" \").concat(window.VditorI18n.over, \" \").concat(vditor.options.upload.max / 1024 / 1024, \"M</li>\");\n            validate = false;\n        }\n        var lastIndex = file.name.lastIndexOf(\".\");\n        var fileExt = file.name.substr(lastIndex);\n        var filename = vditor.options.upload.filename(file.name.substr(0, lastIndex)) + fileExt;\n        if (vditor.options.upload.accept) {\n            var isAccept = vditor.options.upload.accept.split(\",\").some(function (item) {\n                var type = item.trim();\n                if (type.indexOf(\".\") === 0) {\n                    if (fileExt.toLowerCase() === type.toLowerCase()) {\n                        return true;\n                    }\n                }\n                else {\n                    if (file.type.split(\"/\")[0] === type.split(\"/\")[0]) {\n                        return true;\n                    }\n                }\n                return false;\n            });\n            if (!isAccept) {\n                errorTip += \"<li>\".concat(file.name, \" \").concat(window.VditorI18n.fileTypeError, \"</li>\");\n                validate = false;\n            }\n        }\n        if (validate) {\n            uploadFileList.push(file);\n            uploadingStr += \"<li>\".concat(filename, \" \").concat(window.VditorI18n.uploading, \"</li>\");\n        }\n    };\n    for (var iMax = files.length, i = 0; i < iMax; i++) {\n        _loop_1(iMax, i);\n    }\n    vditor.tip.show(\"<ul>\".concat(errorTip).concat(uploadingStr, \"</ul>\"));\n    return uploadFileList;\n};\nvar genUploadedLabel = function (responseText, vditor) {\n    var editorElement = getElement(vditor);\n    editorElement.focus();\n    var response = JSON.parse(responseText);\n    var errorTip = \"\";\n    if (response.code === 1) {\n        errorTip = \"\".concat(response.msg);\n    }\n    if (response.data.errFiles && response.data.errFiles.length > 0) {\n        errorTip = \"<ul><li>\".concat(errorTip, \"</li>\");\n        response.data.errFiles.forEach(function (data) {\n            var lastIndex = data.lastIndexOf(\".\");\n            var filename = vditor.options.upload.filename(data.substr(0, lastIndex)) + data.substr(lastIndex);\n            errorTip += \"<li>\".concat(filename, \" \").concat(window.VditorI18n.uploadError, \"</li>\");\n        });\n        errorTip += \"</ul>\";\n    }\n    if (errorTip) {\n        vditor.tip.show(errorTip);\n    }\n    else {\n        vditor.tip.hide();\n    }\n    var succFileText = \"\";\n    Object.keys(response.data.succMap).forEach(function (key) {\n        var path = response.data.succMap[key];\n        var lastIndex = key.lastIndexOf(\".\");\n        var type = key.substr(lastIndex);\n        var filename = vditor.options.upload.filename(key.substr(0, lastIndex)) + type;\n        type = type.toLowerCase();\n        if (type.indexOf(\".wav\") === 0 || type.indexOf(\".mp3\") === 0 || type.indexOf(\".ogg\") === 0) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<div class=\\\"vditor-wysiwyg__block\\\" data-type=\\\"html-block\\\"\\n data-block=\\\"0\\\"><pre><code>&lt;audio controls=\\\"controls\\\" src=\\\"\".concat(path, \"\\\"&gt;&lt;/audio&gt;</code></pre><pre class=\\\"vditor-wysiwyg__preview\\\" data-render=\\\"1\\\"><audio controls=\\\"controls\\\" src=\\\"\").concat(path, \"\\\"></audio></pre></div>\\n\");\n            }\n            else if (vditor.currentMode === \"ir\") {\n                succFileText += \"<audio controls=\\\"controls\\\" src=\\\"\".concat(path, \"\\\"></audio>\\n\");\n            }\n            else {\n                succFileText += \"[\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n        else if (type.indexOf(\".apng\") === 0\n            || type.indexOf(\".bmp\") === 0\n            || type.indexOf(\".gif\") === 0\n            || type.indexOf(\".ico\") === 0 || type.indexOf(\".cur\") === 0\n            || type.indexOf(\".jpg\") === 0 || type.indexOf(\".jpeg\") === 0 || type.indexOf(\".jfif\") === 0 || type.indexOf(\".pjp\") === 0 || type.indexOf(\".pjpeg\") === 0\n            || type.indexOf(\".png\") === 0\n            || type.indexOf(\".svg\") === 0\n            || type.indexOf(\".webp\") === 0) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<img alt=\\\"\".concat(filename, \"\\\" src=\\\"\").concat(path, \"\\\">\\n\");\n            }\n            else {\n                succFileText += \"![\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n        else {\n            if (vditor.currentMode === \"wysiwyg\") {\n                succFileText += \"<a href=\\\"\".concat(path, \"\\\">\").concat(filename, \"</a>\\n\");\n            }\n            else {\n                succFileText += \"[\".concat(filename, \"](\").concat(path, \")\\n\");\n            }\n        }\n    });\n    (0,selection/* setSelectionFocus */.Hc)(vditor.upload.range);\n    document.execCommand(\"insertHTML\", false, succFileText);\n    vditor.upload.range = getSelection().getRangeAt(0).cloneRange();\n};\nvar uploadFiles = function (vditor, files, element) { return __awaiter(void 0, void 0, void 0, function () {\n    var fileList, filesMax, i, fileItem, isValidate, isValidate, editorElement, validateResult, formData, extraData, _i, _a, key, i, iMax, xhr;\n    return __generator(this, function (_b) {\n        switch (_b.label) {\n            case 0:\n                fileList = [];\n                filesMax = vditor.options.upload.multiple === true ? files.length : 1;\n                for (i = 0; i < filesMax; i++) {\n                    fileItem = files[i];\n                    if (fileItem instanceof DataTransferItem) {\n                        fileItem = fileItem.getAsFile();\n                    }\n                    fileList.push(fileItem);\n                }\n                if (!vditor.options.upload.handler) return [3 /*break*/, 2];\n                return [4 /*yield*/, vditor.options.upload.handler(fileList)];\n            case 1:\n                isValidate = _b.sent();\n                if (element) {\n                    element.value = \"\";\n                }\n                if (typeof isValidate === \"string\") {\n                    vditor.tip.show(isValidate);\n                    return [2 /*return*/];\n                }\n                return [2 /*return*/];\n            case 2:\n                if (!vditor.options.upload.url || !vditor.upload) {\n                    if (element) {\n                        element.value = \"\";\n                    }\n                    vditor.tip.show(\"please config: options.upload.url\");\n                    return [2 /*return*/];\n                }\n                if (!vditor.options.upload.file) return [3 /*break*/, 4];\n                return [4 /*yield*/, vditor.options.upload.file(fileList)];\n            case 3:\n                fileList = _b.sent();\n                _b.label = 4;\n            case 4:\n                if (vditor.options.upload.validate) {\n                    isValidate = vditor.options.upload.validate(fileList);\n                    if (typeof isValidate === \"string\") {\n                        vditor.tip.show(isValidate);\n                        return [2 /*return*/];\n                    }\n                }\n                editorElement = getElement(vditor);\n                vditor.upload.range = (0,selection/* getEditorRange */.zh)(vditor);\n                validateResult = validateFile(vditor, fileList);\n                if (validateResult.length === 0) {\n                    if (element) {\n                        element.value = \"\";\n                    }\n                    return [2 /*return*/];\n                }\n                formData = new FormData();\n                extraData = vditor.options.upload.extraData;\n                for (_i = 0, _a = Object.keys(extraData); _i < _a.length; _i++) {\n                    key = _a[_i];\n                    formData.append(key, extraData[key]);\n                }\n                for (i = 0, iMax = validateResult.length; i < iMax; i++) {\n                    formData.append(vditor.options.upload.fieldName, validateResult[i]);\n                }\n                xhr = new XMLHttpRequest();\n                xhr.open(\"POST\", vditor.options.upload.url);\n                if (vditor.options.upload.token) {\n                    xhr.setRequestHeader(\"X-Upload-Token\", vditor.options.upload.token);\n                }\n                if (vditor.options.upload.withCredentials) {\n                    xhr.withCredentials = true;\n                }\n                setHeaders(vditor, xhr);\n                vditor.upload.isUploading = true;\n                editorElement.setAttribute(\"contenteditable\", \"false\");\n                xhr.onreadystatechange = function () {\n                    if (xhr.readyState === XMLHttpRequest.DONE) {\n                        vditor.upload.isUploading = false;\n                        editorElement.setAttribute(\"contenteditable\", \"true\");\n                        if (xhr.status >= 200 && xhr.status < 300) {\n                            if (vditor.options.upload.success) {\n                                vditor.options.upload.success(editorElement, xhr.responseText);\n                            }\n                            else {\n                                var responseText = xhr.responseText;\n                                if (vditor.options.upload.format) {\n                                    responseText = vditor.options.upload.format(files, xhr.responseText);\n                                }\n                                genUploadedLabel(responseText, vditor);\n                            }\n                        }\n                        else {\n                            if (vditor.options.upload.error) {\n                                vditor.options.upload.error(xhr.responseText);\n                            }\n                            else {\n                                vditor.tip.show(xhr.responseText);\n                            }\n                        }\n                        if (element) {\n                            element.value = \"\";\n                        }\n                        vditor.upload.element.style.display = \"none\";\n                    }\n                };\n                xhr.upload.onprogress = function (event) {\n                    if (!event.lengthComputable) {\n                        return;\n                    }\n                    var progress = event.loaded / event.total * 100;\n                    vditor.upload.element.style.display = \"block\";\n                    var progressBar = vditor.upload.element;\n                    progressBar.style.width = progress + \"%\";\n                };\n                xhr.send(formData);\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/input.ts\n\n\n\n\n\n\n\n\nvar input_input = function (vditor, range, event) {\n    var _a;\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (!blockElement) {\n        // 使用顶级块元素，应使用 innerHTML\n        blockElement = vditor.wysiwyg.element;\n    }\n    if (event && event.inputType !== \"formatItalic\"\n        && event.inputType !== \"deleteByDrag\"\n        && event.inputType !== \"insertFromDrop\"\n        && event.inputType !== \"formatBold\"\n        && event.inputType !== \"formatRemove\"\n        && event.inputType !== \"formatStrikeThrough\"\n        && event.inputType !== \"insertUnorderedList\"\n        && event.inputType !== \"insertOrderedList\"\n        && event.inputType !== \"formatOutdent\"\n        && event.inputType !== \"formatIndent\"\n        && event.inputType !== \"\" // document.execCommand('unlink', false)\n        || !event) {\n        var previousAEmptyElement = previoueIsEmptyA(range.startContainer);\n        if (previousAEmptyElement) {\n            // 链接结尾回车不应该复制到下一行 https://github.com/Vanessa219/vditor/issues/163\n            previousAEmptyElement.remove();\n        }\n        // 保存光标\n        vditor.wysiwyg.element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        // 在行首进行删除，后面的元素会带有样式，需清除\n        blockElement.querySelectorAll(\"[style]\").forEach(function (item) {\n            item.removeAttribute(\"style\");\n        });\n        // 移除空评论\n        blockElement.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n            if (item.textContent.trim() === \"\") {\n                item.classList.remove(\"vditor-comment\", \"vditor-comment--focus\");\n                item.removeAttribute(\"data-cmtids\");\n            }\n        });\n        //  在有评论的行首换行后，该行的前一段会带有评论标识\n        (_a = blockElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n            if (item.textContent.trim() === \"\") {\n                item.classList.remove(\"vditor-comment\", \"vditor-comment--focus\");\n                item.removeAttribute(\"data-cmtids\");\n            }\n        });\n        var html_1 = \"\";\n        if (blockElement.getAttribute(\"data-type\") === \"link-ref-defs-block\") {\n            // 修改链接引用\n            blockElement = vditor.wysiwyg.element;\n        }\n        var isWYSIWYGElement = blockElement.isEqualNode(vditor.wysiwyg.element);\n        var footnoteElement = (0,hasClosest/* hasClosestByAttribute */.a1)(blockElement, \"data-type\", \"footnotes-block\");\n        if (!isWYSIWYGElement) {\n            // 列表需要到最顶层\n            var topListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n            if (topListElement && !footnoteElement) {\n                var blockquoteElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(range.startContainer, \"BLOCKQUOTE\");\n                if (blockquoteElement) {\n                    // li 中有 blockquote 就只渲染 blockquote\n                    blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer) || blockElement;\n                }\n                else {\n                    blockElement = topListElement;\n                }\n            }\n            // 修改脚注\n            if (footnoteElement) {\n                blockElement = footnoteElement;\n            }\n            html_1 = blockElement.outerHTML;\n            if (blockElement.tagName === \"UL\" || blockElement.tagName === \"OL\") {\n                // 如果为列表的话，需要把上下的列表都重绘\n                var listPrevElement = blockElement.previousElementSibling;\n                var listNextElement = blockElement.nextElementSibling;\n                if (listPrevElement && (listPrevElement.tagName === \"UL\" || listPrevElement.tagName === \"OL\")) {\n                    html_1 = listPrevElement.outerHTML + html_1;\n                    listPrevElement.remove();\n                }\n                if (listNextElement && (listNextElement.tagName === \"UL\" || listNextElement.tagName === \"OL\")) {\n                    html_1 = html_1 + listNextElement.outerHTML;\n                    listNextElement.remove();\n                }\n                // firefox 列表回车不会产生新的 list item https://github.com/Vanessa219/vditor/issues/194\n                html_1 = html_1.replace(\"<div><wbr><br></div>\", \"<li><p><wbr><br></p></li>\");\n            }\n            if (!blockElement.innerText.startsWith(\"```\")) {\n                // 添加链接引用\n                vditor.wysiwyg.element.querySelectorAll(\"[data-type='link-ref-defs-block']\").forEach(function (item) {\n                    if (item && !blockElement.isEqualNode(item)) {\n                        html_1 += item.outerHTML;\n                        item.remove();\n                    }\n                });\n                // 添加脚注\n                vditor.wysiwyg.element.querySelectorAll(\"[data-type='footnotes-block']\").forEach(function (item) {\n                    if (item && !blockElement.isEqualNode(item)) {\n                        html_1 += item.outerHTML;\n                        item.remove();\n                    }\n                });\n            }\n        }\n        else {\n            html_1 = blockElement.innerHTML;\n        }\n        // 合并多个 em， strong，s。以防止多个相同元素在一起时不满足 commonmark 规范，出现标记符\n        html_1 = html_1.replace(/<\\/(strong|b)><strong data-marker=\"\\W{2}\">/g, \"\")\n            .replace(/<\\/(em|i)><em data-marker=\"\\W{1}\">/g, \"\")\n            .replace(/<\\/(s|strike)><s data-marker=\"~{1,2}\">/g, \"\");\n        if (html_1 === '<p data-block=\"0\">```<wbr></p>' && vditor.hint.recentLanguage) {\n            html_1 = '<p data-block=\"0\">```<wbr></p>'.replace(\"```\", \"```\" + vditor.hint.recentLanguage);\n        }\n        log(\"SpinVditorDOM\", html_1, \"argument\", vditor.options.debugger);\n        html_1 = vditor.lute.SpinVditorDOM(html_1);\n        log(\"SpinVditorDOM\", html_1, \"result\", vditor.options.debugger);\n        if (isWYSIWYGElement) {\n            blockElement.innerHTML = html_1;\n        }\n        else {\n            blockElement.outerHTML = html_1;\n            if (footnoteElement) {\n                // 更新正文中的 tip\n                var footnoteItemElement = (0,hasClosest/* hasTopClosestByTag */.E2)(vditor.wysiwyg.element.querySelector(\"wbr\"), \"LI\");\n                if (footnoteItemElement) {\n                    var footnoteRefElement = vditor.wysiwyg.element.querySelector(\"sup[data-type=\\\"footnotes-ref\\\"][data-footnotes-label=\\\"\".concat(footnoteItemElement.getAttribute(\"data-marker\"), \"\\\"]\"));\n                    if (footnoteRefElement) {\n                        footnoteRefElement.setAttribute(\"aria-label\", footnoteItemElement.textContent.trim().substr(0, 24));\n                    }\n                }\n            }\n        }\n        var firstLinkRefDefElement_1;\n        var allLinkRefDefsElement = vditor.wysiwyg.element.querySelectorAll(\"[data-type='link-ref-defs-block']\");\n        allLinkRefDefsElement.forEach(function (item, index) {\n            if (index === 0) {\n                firstLinkRefDefElement_1 = item;\n            }\n            else {\n                firstLinkRefDefElement_1.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n                item.remove();\n            }\n        });\n        if (allLinkRefDefsElement.length > 0) {\n            vditor.wysiwyg.element.insertAdjacentElement(\"beforeend\", allLinkRefDefsElement[0]);\n        }\n        // 脚注合并后添加的末尾\n        var firstFootnoteElement_1;\n        var allFootnoteElement = vditor.wysiwyg.element.querySelectorAll(\"[data-type='footnotes-block']\");\n        allFootnoteElement.forEach(function (item, index) {\n            if (index === 0) {\n                firstFootnoteElement_1 = item;\n            }\n            else {\n                firstFootnoteElement_1.insertAdjacentHTML(\"beforeend\", item.innerHTML);\n                item.remove();\n            }\n        });\n        if (allFootnoteElement.length > 0) {\n            vditor.wysiwyg.element.insertAdjacentElement(\"beforeend\", allFootnoteElement[0]);\n        }\n        // 设置光标\n        (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n        vditor.wysiwyg.element.querySelectorAll(\".vditor-wysiwyg__preview[data-render='2']\")\n            .forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        if (event && (event.inputType === \"deleteContentBackward\" || event.inputType === \"deleteContentForward\") &&\n            vditor.options.comment.enable) {\n            vditor.wysiwyg.triggerRemoveComment(vditor);\n            vditor.options.comment.adjustTop(vditor.wysiwyg.getComments(vditor, true));\n        }\n    }\n    renderToc(vditor);\n    afterRenderEvent(vditor, {\n        enableAddUndoStack: true,\n        enableHint: true,\n        enableInput: true,\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/util/fixBrowserBehavior.ts\nvar __makeTemplateObject = (undefined && undefined.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar fixBrowserBehavior_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar fixBrowserBehavior_generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// https://github.com/Vanessa219/vditor/issues/508 软键盘无法删除空块\nvar fixGSKeyBackspace = function (event, vditor, startContainer) {\n    if (event.keyCode === 229 && event.code === \"\" && event.key === \"Unidentified\" && vditor.currentMode !== \"sv\") {\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n        // 移动端的标点符号都显示为 299，因此需限定为空删除的条件\n        if (blockElement && blockElement.textContent.trim() === \"\") {\n            vditor[vditor.currentMode].composingLock = true;\n            return false;\n        }\n    }\n    return true;\n};\n// https://github.com/Vanessa219/vditor/issues/361 代码块后输入中文\nvar fixCJKPosition = function (range, vditor, event) {\n    if (event.key === \"Enter\" || event.key === \"Tab\" || event.key === \"Backspace\" || event.key.indexOf(\"Arrow\") > -1\n        || (0,compatibility/* isCtrl */.yl)(event) || event.key === \"Escape\" || event.shiftKey || event.altKey) {\n        return;\n    }\n    var pLiElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"P\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n    if (pLiElement && (0,selection/* getSelectPosition */.im)(pLiElement, vditor[vditor.currentMode].element, range).start === 0) {\n        // https://github.com/Vanessa219/vditor/issues/1289 WKWebView切换输入法产生六分之一空格，造成光标错位\n        if (pLiElement.nodeValue) {\n            pLiElement.nodeValue = pLiElement.nodeValue.replace(/\\u2006/g, '');\n        }\n        var zwspNode = document.createTextNode(constants/* Constants.ZWSP */.g.ZWSP);\n        range.insertNode(zwspNode);\n        range.setStartAfter(zwspNode);\n    }\n};\n// https://github.com/Vanessa219/vditor/issues/381 光标在内联数学公式中无法向下移动\nvar fixCursorDownInlineMath = function (range, key) {\n    if (key === \"ArrowDown\" || key === \"ArrowUp\") {\n        var inlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"math-inline\") ||\n            (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"html-entity\") ||\n            (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"html-inline\");\n        if (inlineElement) {\n            if (key === \"ArrowDown\") {\n                range.setStartAfter(inlineElement.parentElement);\n            }\n            if (key === \"ArrowUp\") {\n                range.setStartBefore(inlineElement.parentElement);\n            }\n        }\n    }\n};\nvar insertEmptyBlock = function (vditor, position) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n    if (blockElement) {\n        blockElement.insertAdjacentHTML(position, \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\\n</p>\"));\n        (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        highlightToolbar(vditor);\n        execAfterRender(vditor);\n    }\n};\nvar isFirstCell = function (cellElement) {\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(cellElement, \"TABLE\");\n    if (tableElement && tableElement.rows[0].cells[0].isSameNode(cellElement)) {\n        return tableElement;\n    }\n    return false;\n};\nvar isLastCell = function (cellElement) {\n    var tableElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(cellElement, \"TABLE\");\n    if (tableElement && tableElement.lastElementChild.lastElementChild.lastElementChild.isSameNode(cellElement)) {\n        return tableElement;\n    }\n    return false;\n};\n// 光标设置到前一个表格中\nvar goPreviousCell = function (cellElement, range, isSelected) {\n    if (isSelected === void 0) { isSelected = true; }\n    var previousElement = cellElement.previousElementSibling;\n    if (!previousElement) {\n        if (cellElement.parentElement.previousElementSibling) {\n            previousElement = cellElement.parentElement.previousElementSibling.lastElementChild;\n        }\n        else if (cellElement.parentElement.parentElement.tagName === \"TBODY\" &&\n            cellElement.parentElement.parentElement.previousElementSibling) {\n            previousElement = cellElement.parentElement\n                .parentElement.previousElementSibling.lastElementChild.lastElementChild;\n        }\n        else {\n            previousElement = null;\n        }\n    }\n    if (previousElement) {\n        range.selectNodeContents(previousElement);\n        if (!isSelected) {\n            range.collapse(false);\n        }\n        (0,selection/* setSelectionFocus */.Hc)(range);\n    }\n    return previousElement;\n};\nvar insertAfterBlock = function (vditor, event, range, element, blockElement) {\n    var position = (0,selection/* getSelectPosition */.im)(element, vditor[vditor.currentMode].element, range);\n    if ((event.key === \"ArrowDown\" && element.textContent.trimRight().substr(position.start).indexOf(\"\\n\") === -1) ||\n        (event.key === \"ArrowRight\" && position.start >= element.textContent.trimRight().length)) {\n        var nextElement = blockElement.nextElementSibling;\n        if (!nextElement ||\n            (nextElement && (nextElement.tagName === \"TABLE\" || nextElement.getAttribute(\"data-type\")))) {\n            blockElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        }\n        else {\n            range.selectNodeContents(nextElement);\n            range.collapse(true);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar insertBeforeBlock = function (vditor, event, range, element, blockElement) {\n    var position = (0,selection/* getSelectPosition */.im)(element, vditor[vditor.currentMode].element, range);\n    if ((event.key === \"ArrowUp\" && element.textContent.substr(0, position.start).indexOf(\"\\n\") === -1) ||\n        ((event.key === \"ArrowLeft\" || (event.key === \"Backspace\" && range.toString() === \"\")) &&\n            position.start === 0)) {\n        var previousElement = blockElement.previousElementSibling;\n        // table || code\n        if (!previousElement ||\n            (previousElement && (previousElement.tagName === \"TABLE\" || previousElement.getAttribute(\"data-type\")))) {\n            blockElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        }\n        else {\n            range.selectNodeContents(previousElement);\n            range.collapse(false);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n        }\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar listToggle = function (vditor, range, type, cancel) {\n    if (cancel === void 0) { cancel = true; }\n    var itemElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n    vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n        wbr.remove();\n    });\n    range.insertNode(document.createElement(\"wbr\"));\n    if (cancel && itemElement) {\n        // 取消\n        var pHTML = \"\";\n        for (var i = 0; i < itemElement.parentElement.childElementCount; i++) {\n            var inputElement = itemElement.parentElement.children[i].querySelector(\"input\");\n            if (inputElement) {\n                inputElement.remove();\n            }\n            pHTML += \"<p data-block=\\\"0\\\">\".concat(itemElement.parentElement.children[i].innerHTML.trimLeft(), \"</p>\");\n        }\n        itemElement.parentElement.insertAdjacentHTML(\"beforebegin\", pHTML);\n        itemElement.parentElement.remove();\n    }\n    else {\n        if (!itemElement) {\n            // 添加\n            var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n            if (!blockElement) {\n                vditor[vditor.currentMode].element.querySelector(\"wbr\").remove();\n                blockElement = vditor[vditor.currentMode].element.querySelector(\"p\");\n                blockElement.innerHTML = \"<wbr>\";\n            }\n            if (type === \"check\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ul data-block=\\\"0\\\"><li class=\\\"vditor-task\\\"><input type=\\\"checkbox\\\" /> \".concat(blockElement.innerHTML, \"</li></ul>\"));\n                blockElement.remove();\n            }\n            else if (type === \"list\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ul data-block=\\\"0\\\"><li>\".concat(blockElement.innerHTML, \"</li></ul>\"));\n                blockElement.remove();\n            }\n            else if (type === \"ordered-list\") {\n                blockElement.insertAdjacentHTML(\"beforebegin\", \"<ol data-block=\\\"0\\\"><li>\".concat(blockElement.innerHTML, \"</li></ol>\"));\n                blockElement.remove();\n            }\n        }\n        else {\n            // 切换\n            if (type === \"check\") {\n                itemElement.parentElement.querySelectorAll(\"li\").forEach(function (item) {\n                    item.insertAdjacentHTML(\"afterbegin\", \"<input type=\\\"checkbox\\\" />\".concat(item.textContent.indexOf(\" \") === 0 ? \"\" : \" \"));\n                    item.classList.add(\"vditor-task\");\n                });\n            }\n            else {\n                if (itemElement.querySelector(\"input\")) {\n                    itemElement.parentElement.querySelectorAll(\"li\").forEach(function (item) {\n                        item.querySelector(\"input\").remove();\n                        item.classList.remove(\"vditor-task\");\n                    });\n                }\n                var element = void 0;\n                if (type === \"list\") {\n                    element = document.createElement(\"ul\");\n                    element.setAttribute(\"data-marker\", \"*\");\n                }\n                else {\n                    element = document.createElement(\"ol\");\n                    element.setAttribute(\"data-marker\", \"1.\");\n                }\n                element.setAttribute(\"data-block\", \"0\");\n                element.setAttribute(\"data-tight\", itemElement.parentElement.getAttribute(\"data-tight\"));\n                element.innerHTML = itemElement.parentElement.innerHTML;\n                itemElement.parentElement.parentNode.replaceChild(element, itemElement.parentElement);\n            }\n        }\n    }\n};\nvar listIndent = function (vditor, liElement, range) {\n    var previousElement = liElement.previousElementSibling;\n    if (liElement && previousElement) {\n        var liElements_1 = [liElement];\n        Array.from(range.cloneContents().children).forEach(function (item, index) {\n            if (item.nodeType !== 3 && liElement && item.textContent.trim() !== \"\"\n                && liElement.getAttribute(\"data-node-id\") === item.getAttribute(\"data-node-id\")) {\n                if (index !== 0) {\n                    liElements_1.push(liElement);\n                }\n                liElement = liElement.nextElementSibling;\n            }\n        });\n        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        var liParentElement = previousElement.parentElement;\n        var liHTML_1 = \"\";\n        liElements_1.forEach(function (item) {\n            var marker = item.getAttribute(\"data-marker\");\n            if (marker.length !== 1) {\n                marker = \"1\".concat(marker.slice(-1));\n            }\n            liHTML_1 += \"<li data-node-id=\\\"\".concat(item.getAttribute(\"data-node-id\"), \"\\\" data-marker=\\\"\").concat(marker, \"\\\">\").concat(item.innerHTML, \"</li>\");\n            item.remove();\n        });\n        previousElement.insertAdjacentHTML(\"beforeend\", \"<\".concat(liParentElement.tagName, \" data-block=\\\"0\\\">\").concat(liHTML_1, \"</\").concat(liParentElement.tagName, \">\"));\n        if (vditor.currentMode === \"wysiwyg\") {\n            liParentElement.outerHTML = vditor.lute.SpinVditorDOM(liParentElement.outerHTML);\n        }\n        else {\n            liParentElement.outerHTML = vditor.lute.SpinVditorIRDOM(liParentElement.outerHTML);\n        }\n        (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        var tempTopListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (tempTopListElement) {\n            tempTopListElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (item) {\n                processCodeRender(item, vditor);\n                if (vditor.currentMode === \"wysiwyg\") {\n                    item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n            });\n        }\n        execAfterRender(vditor);\n        highlightToolbar(vditor);\n    }\n    else {\n        vditor[vditor.currentMode].element.focus();\n    }\n};\nvar listOutdent = function (vditor, liElement, range, topListElement) {\n    var liParentLiElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(liElement.parentElement, \"LI\");\n    if (liParentLiElement) {\n        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n            wbr.remove();\n        });\n        range.insertNode(document.createElement(\"wbr\"));\n        var liParentElement = liElement.parentElement;\n        var liParentAfterElement = liParentElement.cloneNode();\n        var liElements_2 = [liElement];\n        Array.from(range.cloneContents().children).forEach(function (item, index) {\n            if (item.nodeType !== 3 && liElement && item.textContent.trim() !== \"\" &&\n                liElement.getAttribute(\"data-node-id\") === item.getAttribute(\"data-node-id\")) {\n                if (index !== 0) {\n                    liElements_2.push(liElement);\n                }\n                liElement = liElement.nextElementSibling;\n            }\n        });\n        var isMatch_1 = false;\n        var afterHTML_1 = \"\";\n        liParentElement.querySelectorAll(\"li\").forEach(function (item) {\n            if (isMatch_1) {\n                afterHTML_1 += item.outerHTML;\n                if (!item.nextElementSibling && !item.previousElementSibling) {\n                    item.parentElement.remove();\n                }\n                else {\n                    item.remove();\n                }\n            }\n            if (item.isSameNode(liElements_2[liElements_2.length - 1])) {\n                isMatch_1 = true;\n            }\n        });\n        liElements_2.reverse().forEach(function (item) {\n            liParentLiElement.insertAdjacentElement(\"afterend\", item);\n        });\n        if (afterHTML_1) {\n            liParentAfterElement.innerHTML = afterHTML_1;\n            liElements_2[0].insertAdjacentElement(\"beforeend\", liParentAfterElement);\n        }\n        if (vditor.currentMode === \"wysiwyg\") {\n            topListElement.outerHTML = vditor.lute.SpinVditorDOM(topListElement.outerHTML);\n        }\n        else {\n            topListElement.outerHTML = vditor.lute.SpinVditorIRDOM(topListElement.outerHTML);\n        }\n        (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        var tempTopListElement = (0,hasClosest/* getTopList */.O9)(range.startContainer);\n        if (tempTopListElement) {\n            tempTopListElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (item) {\n                processCodeRender(item, vditor);\n                if (vditor.currentMode === \"wysiwyg\") {\n                    item.previousElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n            });\n        }\n        execAfterRender(vditor);\n        highlightToolbar(vditor);\n    }\n    else {\n        vditor[vditor.currentMode].element.focus();\n    }\n};\nvar setTableAlign = function (tableElement, type) {\n    var cell = getSelection().getRangeAt(0).startContainer.parentElement;\n    var columnCnt = tableElement.rows[0].cells.length;\n    var rowCnt = tableElement.rows.length;\n    var currentColumn = 0;\n    for (var i = 0; i < rowCnt; i++) {\n        for (var j = 0; j < columnCnt; j++) {\n            if (tableElement.rows[i].cells[j].isSameNode(cell)) {\n                currentColumn = j;\n                break;\n            }\n        }\n    }\n    for (var k = 0; k < rowCnt; k++) {\n        tableElement.rows[k].cells[currentColumn].setAttribute(\"align\", type);\n    }\n};\nvar isHrMD = function (text) {\n    // - _ *\n    var marker = text.trimRight().split(\"\\n\").pop();\n    if (marker === \"\") {\n        return false;\n    }\n    if (marker.replace(/ |-/g, \"\") === \"\"\n        || marker.replace(/ |_/g, \"\") === \"\"\n        || marker.replace(/ |\\*/g, \"\") === \"\") {\n        if (marker.replace(/ /g, \"\").length > 2) {\n            if (marker.indexOf(\"-\") > -1 && marker.trimLeft().indexOf(\" \") === -1\n                && text.trimRight().split(\"\\n\").length > 1) {\n                // 满足 heading\n                return false;\n            }\n            if (marker.indexOf(\"    \") === 0 || marker.indexOf(\"\\t\") === 0) {\n                // 代码块\n                return false;\n            }\n            return true;\n        }\n        return false;\n    }\n    return false;\n};\nvar isHeadingMD = function (text) {\n    // - =\n    var textArray = text.trimRight().split(\"\\n\");\n    text = textArray.pop();\n    if (text.indexOf(\"    \") === 0 || text.indexOf(\"\\t\") === 0) {\n        return false;\n    }\n    text = text.trimLeft();\n    if (text === \"\" || textArray.length === 0) {\n        return false;\n    }\n    if (text.replace(/-/g, \"\") === \"\"\n        || text.replace(/=/g, \"\") === \"\") {\n        return true;\n    }\n    return false;\n};\nvar execAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (vditor.currentMode === \"wysiwyg\") {\n        afterRenderEvent(vditor, options);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        process_processAfterRender(vditor, options);\n    }\n    else if (vditor.currentMode === \"sv\") {\n        processAfterRender(vditor, options);\n    }\n};\nvar fixList = function (range, vditor, pElement, event) {\n    var _a;\n    var startContainer = range.startContainer;\n    var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"LI\");\n    if (liElement) {\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\" &&\n            // fix li 中有多个 P 时，在第一个 P 中换行会在下方生成新的 li\n            (!event.shiftKey && pElement && liElement.contains(pElement) && pElement.nextElementSibling)) {\n            if (liElement && !liElement.textContent.endsWith(\"\\n\")) {\n                // li 结尾需 \\n\n                liElement.insertAdjacentText(\"beforeend\", \"\\n\");\n            }\n            range.insertNode(document.createTextNode(\"\\n\\n\"));\n            range.collapse(false);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\" &&\n            !liElement.previousElementSibling && range.toString() === \"\" &&\n            (0,selection/* getSelectPosition */.im)(liElement, vditor[vditor.currentMode].element, range).start === 0) {\n            // 光标位于点和第一个字符中间时，无法删除 li 元素\n            if (liElement.nextElementSibling) {\n                liElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\"><wbr>\".concat(liElement.innerHTML, \"</p>\"));\n                liElement.remove();\n            }\n            else {\n                liElement.parentElement.outerHTML = \"<p data-block=\\\"0\\\"><wbr>\".concat(liElement.innerHTML, \"</p>\");\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // 空列表删除后与上一级段落对齐\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\" &&\n            liElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" &&\n            range.toString() === \"\" && ((_a = liElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.tagName) === \"LI\") {\n            liElement.previousElementSibling.insertAdjacentText(\"beforeend\", \"\\n\\n\");\n            range.selectNodeContents(liElement.previousElementSibling);\n            range.collapse(false);\n            liElement.remove();\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Tab\") {\n            // 光标位于第一/零字符时，tab 用于列表的缩进\n            var isFirst = false;\n            if (range.startOffset === 0\n                && ((startContainer.nodeType === 3 && !startContainer.previousSibling)\n                    || (startContainer.nodeType !== 3 && startContainer.nodeName === \"LI\"))) {\n                // 有序/无序列表\n                isFirst = true;\n            }\n            else if (liElement.classList.contains(\"vditor-task\") && range.startOffset === 1\n                && startContainer.previousSibling.nodeType !== 3\n                && startContainer.previousSibling.tagName === \"INPUT\") {\n                // 任务列表\n                isFirst = true;\n            }\n            if (isFirst || range.toString() !== \"\") {\n                if (event.shiftKey) {\n                    listOutdent(vditor, liElement, range, liElement.parentElement);\n                }\n                else {\n                    listIndent(vditor, liElement, range);\n                }\n                event.preventDefault();\n                return true;\n            }\n        }\n    }\n    return false;\n};\n// tab 处理: block code render, table, 列表第一个字符中的 tab 处理单独写在上面\nvar fixTab = function (vditor, range, event) {\n    if (vditor.options.tab && event.key === \"Tab\") {\n        if (event.shiftKey) {\n            // TODO shift+tab\n        }\n        else {\n            if (range.toString() === \"\") {\n                range.insertNode(document.createTextNode(vditor.options.tab));\n                range.collapse(false);\n            }\n            else {\n                range.extractContents();\n                range.insertNode(document.createTextNode(vditor.options.tab));\n                range.collapse(false);\n            }\n        }\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        execAfterRender(vditor);\n        event.preventDefault();\n        return true;\n    }\n};\nvar fixMarkdown = function (event, vditor, pElement, range) {\n    if (!pElement) {\n        return;\n    }\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n        var pText = String.raw(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\", \"\"], [\"\", \"\"])), pElement.textContent).replace(/\\\\\\|/g, \"\").trim();\n        var pTextList = pText.split(\"|\");\n        if (pText.startsWith(\"|\") && pText.endsWith(\"|\") && pTextList.length > 3) {\n            // table 自动完成\n            var tableHeaderMD = pTextList.map(function () { return \"---\"; }).join(\"|\");\n            tableHeaderMD =\n                pElement.textContent + \"\\n\" + tableHeaderMD.substring(3, tableHeaderMD.length - 3) + \"\\n|<wbr>\";\n            pElement.outerHTML = vditor.lute.SpinVditorDOM(tableHeaderMD);\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // hr 渲染\n        if (isHrMD(pElement.innerHTML) && pElement.previousElementSibling) {\n            // 软换行后 hr 前有内容\n            var pInnerHTML = \"\";\n            var innerHTMLList = pElement.innerHTML.trimRight().split(\"\\n\");\n            if (innerHTMLList.length > 1) {\n                innerHTMLList.pop();\n                pInnerHTML = \"<p data-block=\\\"0\\\">\".concat(innerHTMLList.join(\"\\n\"), \"</p>\");\n            }\n            pElement.insertAdjacentHTML(\"afterend\", \"\".concat(pInnerHTML, \"<hr data-block=\\\"0\\\"><p data-block=\\\"0\\\"><wbr>\\n</p>\"));\n            pElement.remove();\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (isHeadingMD(pElement.innerHTML)) {\n            // heading 渲染\n            if (vditor.currentMode === \"wysiwyg\") {\n                pElement.outerHTML = vditor.lute.SpinVditorDOM(pElement.innerHTML + '<p data-block=\"0\"><wbr>\\n</p>');\n            }\n            else {\n                pElement.outerHTML = vditor.lute.SpinVditorIRDOM(pElement.innerHTML + '<p data-block=\"0\"><wbr>\\n</p>');\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 软换行会被切割 https://github.com/Vanessa219/vditor/issues/220\n    if (range.collapsed && pElement.previousElementSibling && event.key === \"Backspace\" &&\n        !(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && !event.shiftKey &&\n        pElement.textContent.trimRight().split(\"\\n\").length > 1 &&\n        (0,selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start === 0) {\n        var lastElement = (0,hasClosest/* getLastNode */.DX)(pElement.previousElementSibling);\n        if (!lastElement.textContent.endsWith(\"\\n\")) {\n            lastElement.textContent = lastElement.textContent + \"\\n\";\n        }\n        lastElement.parentElement.insertAdjacentHTML(\"beforeend\", \"<wbr>\".concat(pElement.innerHTML));\n        pElement.remove();\n        (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n        return false;\n    }\n    return false;\n};\nvar insertRow = function (vditor, range, cellElement) {\n    var rowHTML = \"\";\n    for (var m = 0; m < cellElement.parentElement.childElementCount; m++) {\n        rowHTML += \"<td align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </td>\");\n    }\n    if (cellElement.tagName === \"TH\") {\n        cellElement.parentElement.parentElement.insertAdjacentHTML(\"afterend\", \"<tbody><tr>\".concat(rowHTML, \"</tr></tbody>\"));\n    }\n    else {\n        cellElement.parentElement.insertAdjacentHTML(\"afterend\", \"<tr>\".concat(rowHTML, \"</tr>\"));\n    }\n    execAfterRender(vditor);\n};\nvar insertRowAbove = function (vditor, range, cellElement) {\n    var rowHTML = \"\";\n    for (var m = 0; m < cellElement.parentElement.childElementCount; m++) {\n        if (cellElement.tagName === \"TH\") {\n            rowHTML += \"<th align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </th>\");\n        }\n        else {\n            rowHTML += \"<td align=\\\"\".concat(cellElement.parentElement.children[m].getAttribute(\"align\"), \"\\\"> </td>\");\n        }\n    }\n    if (cellElement.tagName === \"TH\") {\n        cellElement.parentElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<thead><tr>\".concat(rowHTML, \"</tr></thead>\"));\n        range.insertNode(document.createElement(\"wbr\"));\n        var theadHTML = cellElement.parentElement.innerHTML.replace(/<th>/g, \"<td>\").replace(/<\\/th>/g, \"</td>\");\n        cellElement.parentElement.parentElement.nextElementSibling.insertAdjacentHTML(\"afterbegin\", theadHTML);\n        cellElement.parentElement.parentElement.remove();\n        (0,selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    }\n    else {\n        cellElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<tr>\".concat(rowHTML, \"</tr>\"));\n    }\n    execAfterRender(vditor);\n};\nvar insertColumn = function (vditor, tableElement, cellElement, type) {\n    if (type === void 0) { type = \"afterend\"; }\n    var index = 0;\n    var previousElement = cellElement.previousElementSibling;\n    while (previousElement) {\n        index++;\n        previousElement = previousElement.previousElementSibling;\n    }\n    for (var i = 0; i < tableElement.rows.length; i++) {\n        if (i === 0) {\n            tableElement.rows[i].cells[index].insertAdjacentHTML(type, \"<th> </th>\");\n        }\n        else {\n            tableElement.rows[i].cells[index].insertAdjacentHTML(type, \"<td> </td>\");\n        }\n    }\n    execAfterRender(vditor);\n};\nvar deleteRow = function (vditor, range, cellElement) {\n    if (cellElement.tagName === \"TD\") {\n        var tbodyElement = cellElement.parentElement.parentElement;\n        if (cellElement.parentElement.previousElementSibling) {\n            range.selectNodeContents(cellElement.parentElement.previousElementSibling.lastElementChild);\n        }\n        else {\n            range.selectNodeContents(tbodyElement.previousElementSibling.lastElementChild.lastElementChild);\n        }\n        if (tbodyElement.childElementCount === 1) {\n            tbodyElement.remove();\n        }\n        else {\n            cellElement.parentElement.remove();\n        }\n        range.collapse(false);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        execAfterRender(vditor);\n    }\n};\nvar deleteColumn = function (vditor, range, tableElement, cellElement) {\n    var index = 0;\n    var previousElement = cellElement.previousElementSibling;\n    while (previousElement) {\n        index++;\n        previousElement = previousElement.previousElementSibling;\n    }\n    if (cellElement.previousElementSibling || cellElement.nextElementSibling) {\n        range.selectNodeContents(cellElement.previousElementSibling || cellElement.nextElementSibling);\n        range.collapse(true);\n    }\n    for (var i = 0; i < tableElement.rows.length; i++) {\n        var cells = tableElement.rows[i].cells;\n        if (cells.length === 1) {\n            tableElement.remove();\n            highlightToolbar(vditor);\n            break;\n        }\n        cells[index].remove();\n    }\n    (0,selection/* setSelectionFocus */.Hc)(range);\n    execAfterRender(vditor);\n};\nvar fixTable = function (vditor, event, range) {\n    var startContainer = range.startContainer;\n    var cellElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TD\") ||\n        (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"TH\");\n    if (cellElement) {\n        // 换行或软换行：在 cell 中添加 br\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n            if (!cellElement.lastElementChild ||\n                (cellElement.lastElementChild && (!cellElement.lastElementChild.isSameNode(cellElement.lastChild) ||\n                    cellElement.lastElementChild.tagName !== \"BR\"))) {\n                cellElement.insertAdjacentHTML(\"beforeend\", \"<br>\");\n            }\n            var brElement = document.createElement(\"br\");\n            range.insertNode(brElement);\n            range.setStartAfter(brElement);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // tab：光标移向下一个 cell\n        if (event.key === \"Tab\") {\n            if (event.shiftKey) {\n                // shift + tab 光标移动到前一个 cell\n                goPreviousCell(cellElement, range);\n                event.preventDefault();\n                return true;\n            }\n            var nextElement = cellElement.nextElementSibling;\n            if (!nextElement) {\n                if (cellElement.parentElement.nextElementSibling) {\n                    nextElement = cellElement.parentElement.nextElementSibling.firstElementChild;\n                }\n                else if (cellElement.parentElement.parentElement.tagName === \"THEAD\" &&\n                    cellElement.parentElement.parentElement.nextElementSibling) {\n                    nextElement =\n                        cellElement.parentElement.parentElement.nextElementSibling.firstElementChild.firstElementChild;\n                }\n                else {\n                    nextElement = null;\n                }\n            }\n            if (nextElement) {\n                range.selectNodeContents(nextElement);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n            event.preventDefault();\n            return true;\n        }\n        var tableElement = cellElement.parentElement.parentElement.parentElement;\n        if (event.key === \"ArrowUp\") {\n            event.preventDefault();\n            if (cellElement.tagName === \"TH\") {\n                if (tableElement.previousElementSibling) {\n                    range.selectNodeContents(tableElement.previousElementSibling);\n                    range.collapse(false);\n                    (0,selection/* setSelectionFocus */.Hc)(range);\n                }\n                else {\n                    insertEmptyBlock(vditor, \"beforebegin\");\n                }\n                return true;\n            }\n            var m = 0;\n            var trElement = cellElement.parentElement;\n            for (; m < trElement.cells.length; m++) {\n                if (trElement.cells[m].isSameNode(cellElement)) {\n                    break;\n                }\n            }\n            var previousElement = trElement.previousElementSibling;\n            if (!previousElement) {\n                previousElement = trElement.parentElement.previousElementSibling.firstChild;\n            }\n            range.selectNodeContents(previousElement.cells[m]);\n            range.collapse(false);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        if (event.key === \"ArrowDown\") {\n            event.preventDefault();\n            var trElement = cellElement.parentElement;\n            if (!trElement.nextElementSibling && cellElement.tagName === \"TD\") {\n                if (tableElement.nextElementSibling) {\n                    range.selectNodeContents(tableElement.nextElementSibling);\n                    range.collapse(true);\n                    (0,selection/* setSelectionFocus */.Hc)(range);\n                }\n                else {\n                    insertEmptyBlock(vditor, \"afterend\");\n                }\n                return true;\n            }\n            var m = 0;\n            for (; m < trElement.cells.length; m++) {\n                if (trElement.cells[m].isSameNode(cellElement)) {\n                    break;\n                }\n            }\n            var nextElement = trElement.nextElementSibling;\n            if (!nextElement) {\n                nextElement = trElement.parentElement.nextElementSibling.firstChild;\n            }\n            range.selectNodeContents(nextElement.cells[m]);\n            range.collapse(true);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            return true;\n        }\n        // focus row input, only wysiwyg\n        if (vditor.currentMode === \"wysiwyg\" &&\n            !(0,compatibility/* isCtrl */.yl)(event) && event.key === \"Enter\" && !event.shiftKey && event.altKey) {\n            var inputElement = vditor.wysiwyg.popover.querySelector(\".vditor-input\");\n            inputElement.focus();\n            inputElement.select();\n            event.preventDefault();\n            return true;\n        }\n        // Backspace：光标移动到前一个 cell\n        if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Backspace\"\n            && range.startOffset === 0 && range.toString() === \"\") {\n            var previousCellElement = goPreviousCell(cellElement, range, false);\n            if (!previousCellElement && tableElement) {\n                if (tableElement.textContent.trim() === \"\") {\n                    tableElement.outerHTML = \"<p data-block=\\\"0\\\"><wbr>\\n</p>\";\n                    (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                }\n                else {\n                    range.setStartBefore(tableElement);\n                    range.collapse(true);\n                }\n                execAfterRender(vditor);\n            }\n            event.preventDefault();\n            return true;\n        }\n        // 上方新添加一行\n        if (matchHotKey(\"⇧⌘F\", event)) {\n            insertRowAbove(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 下方新添加一行 https://github.com/Vanessa219/vditor/issues/46\n        if (matchHotKey(\"⌘=\", event)) {\n            insertRow(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 左方新添加一列\n        if (matchHotKey(\"⇧⌘G\", event)) {\n            insertColumn(vditor, tableElement, cellElement, \"beforebegin\");\n            event.preventDefault();\n            return true;\n        }\n        // 后方新添加一列\n        if (matchHotKey(\"⇧⌘=\", event)) {\n            insertColumn(vditor, tableElement, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 删除当前行\n        if (matchHotKey(\"⌘-\", event)) {\n            deleteRow(vditor, range, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 删除当前列\n        if (matchHotKey(\"⇧⌘-\", event)) {\n            deleteColumn(vditor, range, tableElement, cellElement);\n            event.preventDefault();\n            return true;\n        }\n        // 剧左\n        if (matchHotKey(\"⇧⌘L\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"left\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"left\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n        // 剧中\n        if (matchHotKey(\"⇧⌘C\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"center\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"center\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n        // 剧右\n        if (matchHotKey(\"⇧⌘R\", event)) {\n            if (vditor.currentMode === \"ir\") {\n                setTableAlign(tableElement, \"right\");\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n            else {\n                var itemElement = vditor.wysiwyg.popover.querySelector('[data-type=\"right\"]');\n                if (itemElement) {\n                    itemElement.click();\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n};\nvar fixCodeBlock = function (vditor, event, codeRenderElement, range) {\n    // 行级代码块中 command + a，近对当前代码块进行全选\n    if (codeRenderElement.tagName === \"PRE\" && matchHotKey(\"⌘A\", event)) {\n        range.selectNodeContents(codeRenderElement.firstElementChild);\n        event.preventDefault();\n        return true;\n    }\n    // tab\n    // TODO shift + tab, shift and 选中文字\n    if (vditor.options.tab && event.key === \"Tab\" && !event.shiftKey && range.toString() === \"\") {\n        range.insertNode(document.createTextNode(vditor.options.tab));\n        range.collapse(false);\n        execAfterRender(vditor);\n        event.preventDefault();\n        return true;\n    }\n    // Backspace: 光标位于第零个字符，仅删除代码块标签\n    if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey) {\n        var codePosition = (0,selection/* getSelectPosition */.im)(codeRenderElement, vditor[vditor.currentMode].element, range);\n        if ((codePosition.start === 0 ||\n            (codePosition.start === 1 && codeRenderElement.innerText === \"\\n\")) // 空代码块，光标在 \\n 后\n            && range.toString() === \"\") {\n            codeRenderElement.parentElement.outerHTML =\n                \"<p data-block=\\\"0\\\"><wbr>\".concat(codeRenderElement.firstElementChild.innerHTML, \"</p>\");\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    // 换行\n    if (!(0,compatibility/* isCtrl */.yl)(event) && !event.altKey && event.key === \"Enter\") {\n        if (!codeRenderElement.firstElementChild.textContent.endsWith(\"\\n\")) {\n            codeRenderElement.firstElementChild.insertAdjacentText(\"beforeend\", \"\\n\");\n        }\n        range.extractContents();\n        range.insertNode(document.createTextNode(\"\\n\"));\n        range.collapse(false);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        if (!(0,compatibility/* isFirefox */.vU)()) {\n            if (vditor.currentMode === \"wysiwyg\") {\n                input_input(vditor, range);\n            }\n            else {\n                input(vditor, range);\n            }\n        }\n        scrollCenter(vditor);\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar fixBlockquote = function (vditor, range, event, pElement) {\n    var startContainer = range.startContainer;\n    var blockquoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(startContainer, \"BLOCKQUOTE\");\n    if (blockquoteElement && range.toString() === \"\") {\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey &&\n            (0,selection/* getSelectPosition */.im)(blockquoteElement, vditor[vditor.currentMode].element, range).start === 0) {\n            // Backspace: 光标位于引用中的第零个字符，仅删除引用标签\n            range.insertNode(document.createElement(\"wbr\"));\n            blockquoteElement.outerHTML = blockquoteElement.innerHTML;\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (pElement && event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey\n            && pElement.parentElement.tagName === \"BLOCKQUOTE\") {\n            // Enter: 空行回车应逐层跳出\n            var isEmpty = false;\n            if (pElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\\n\" ||\n                pElement.innerHTML.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                // 空 P\n                isEmpty = true;\n                pElement.remove();\n            }\n            else if (pElement.innerHTML.endsWith(\"\\n\\n\") &&\n                (0,selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start ===\n                    pElement.textContent.length - 1) {\n                // 软换行\n                pElement.innerHTML = pElement.innerHTML.substr(0, pElement.innerHTML.length - 2);\n                isEmpty = true;\n            }\n            if (isEmpty) {\n                // 需添加零宽字符，否则的话无法记录 undo\n                blockquoteElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr>\\n</p>\"));\n                (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                execAfterRender(vditor);\n                event.preventDefault();\n                return true;\n            }\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(startContainer);\n        if (vditor.currentMode === \"wysiwyg\" && blockElement && matchHotKey(\"⇧⌘;\", event)) {\n            // 插入 blockquote\n            range.insertNode(document.createElement(\"wbr\"));\n            blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n            (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n            afterRenderEvent(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (insertAfterBlock(vditor, event, range, blockquoteElement, blockquoteElement)) {\n            return true;\n        }\n        if (insertBeforeBlock(vditor, event, range, blockquoteElement, blockquoteElement)) {\n            return true;\n        }\n    }\n    return false;\n};\nvar fixTask = function (vditor, range, event) {\n    var startContainer = range.startContainer;\n    var taskItemElement = (0,hasClosest/* hasClosestByClassName */.fb)(startContainer, \"vditor-task\");\n    if (taskItemElement) {\n        if (matchHotKey(\"⇧⌘J\", event)) {\n            // ctrl + shift: toggle checked\n            var inputElement = taskItemElement.firstElementChild;\n            if (inputElement.checked) {\n                inputElement.removeAttribute(\"checked\");\n            }\n            else {\n                inputElement.setAttribute(\"checked\", \"checked\");\n            }\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        // Backspace: 在选择框前进行删除\n        if (event.key === \"Backspace\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && range.toString() === \"\"\n            && range.startOffset === 1\n            && ((startContainer.nodeType === 3 && startContainer.previousSibling &&\n                startContainer.previousSibling.tagName === \"INPUT\")\n                || startContainer.nodeType !== 3)) {\n            var previousElement = taskItemElement.previousElementSibling;\n            taskItemElement.querySelector(\"input\").remove();\n            if (previousElement) {\n                var lastNode = (0,hasClosest/* getLastNode */.DX)(previousElement);\n                lastNode.parentElement.insertAdjacentHTML(\"beforeend\", \"<wbr>\" + taskItemElement.innerHTML.trim());\n                taskItemElement.remove();\n            }\n            else {\n                taskItemElement.parentElement.insertAdjacentHTML(\"beforebegin\", \"<p data-block=\\\"0\\\"><wbr>\".concat(taskItemElement.innerHTML.trim() || \"\\n\", \"</p>\"));\n                if (taskItemElement.nextElementSibling) {\n                    taskItemElement.remove();\n                }\n                else {\n                    taskItemElement.parentElement.remove();\n                }\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n        if (event.key === \"Enter\" && !(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey) {\n            if (taskItemElement.textContent.trim() === \"\") {\n                // 当前任务列表无文字\n                if ((0,hasClosest/* hasClosestByClassName */.fb)(taskItemElement.parentElement, \"vditor-task\")) {\n                    // 为子元素时，需进行反向缩进\n                    var topListElement = (0,hasClosest/* getTopList */.O9)(startContainer);\n                    if (topListElement) {\n                        listOutdent(vditor, taskItemElement, range, topListElement);\n                    }\n                }\n                else {\n                    // 仅有一级任务列表\n                    if (taskItemElement.nextElementSibling) {\n                        // 任务列表下方还有元素，需要使用用段落隔断\n                        var afterHTML_2 = \"\";\n                        var beforeHTML_1 = \"\";\n                        var isAfter_1 = false;\n                        Array.from(taskItemElement.parentElement.children).forEach(function (taskItem) {\n                            if (taskItemElement.isSameNode(taskItem)) {\n                                isAfter_1 = true;\n                            }\n                            else {\n                                if (isAfter_1) {\n                                    afterHTML_2 += taskItem.outerHTML;\n                                }\n                                else {\n                                    beforeHTML_1 += taskItem.outerHTML;\n                                }\n                            }\n                        });\n                        var parentTagName = taskItemElement.parentElement.tagName;\n                        var dataMarker = taskItemElement.parentElement.tagName === \"OL\" ? \"\" : \" data-marker=\\\"\".concat(taskItemElement.parentElement.getAttribute(\"data-marker\"), \"\\\"\");\n                        var startAttribute = \"\";\n                        if (beforeHTML_1) {\n                            startAttribute = taskItemElement.parentElement.tagName === \"UL\" ? \"\" : \" start=\\\"1\\\"\";\n                            beforeHTML_1 = \"<\".concat(parentTagName, \" data-tight=\\\"true\\\"\").concat(dataMarker, \" data-block=\\\"0\\\">\").concat(beforeHTML_1, \"</\").concat(parentTagName, \">\");\n                        }\n                        // <p data-block=\"0\">\\n<wbr></p> => <p data-block=\"0\"><wbr>\\n</p>\n                        // https://github.com/Vanessa219/vditor/issues/430\n                        taskItemElement.parentElement.outerHTML = \"\".concat(beforeHTML_1, \"<p data-block=\\\"0\\\"><wbr>\\n</p><\").concat(parentTagName, \"\\n data-tight=\\\"true\\\"\").concat(dataMarker, \" data-block=\\\"0\\\"\").concat(startAttribute, \">\").concat(afterHTML_2, \"</\").concat(parentTagName, \">\");\n                    }\n                    else {\n                        // 任务列表下方无任务列表元素\n                        taskItemElement.parentElement.insertAdjacentHTML(\"afterend\", \"<p data-block=\\\"0\\\"><wbr>\\n</p>\");\n                        if (taskItemElement.parentElement.querySelectorAll(\"li\").length === 1) {\n                            // 任务列表仅有一项时，使用 p 元素替换\n                            taskItemElement.parentElement.remove();\n                        }\n                        else {\n                            // 任务列表有多项时，当前任务列表位于最后一项，移除该任务列表\n                            taskItemElement.remove();\n                        }\n                    }\n                }\n            }\n            else if (startContainer.nodeType !== 3 && range.startOffset === 0 &&\n                startContainer.firstChild.tagName === \"INPUT\") {\n                // 光标位于 input 之前\n                range.setStart(startContainer.childNodes[1], 1);\n            }\n            else {\n                // 当前任务列表有文字，光标后的文字需添加到新任务列表中\n                range.setEndAfter(taskItemElement.lastChild);\n                taskItemElement.insertAdjacentHTML(\"afterend\", \"<li class=\\\"vditor-task\\\" data-marker=\\\"\".concat(taskItemElement.getAttribute(\"data-marker\"), \"\\\"><input type=\\\"checkbox\\\"> <wbr></li>\"));\n                document.querySelector(\"wbr\").after(range.extractContents());\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            scrollCenter(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\nvar fixDelete = function (vditor, range, event, pElement) {\n    if (range.startContainer.nodeType !== 3) {\n        // 光标位于 hr 前，hr 前有内容\n        var rangeElement = range.startContainer.children[range.startOffset];\n        if (rangeElement && rangeElement.tagName === \"HR\") {\n            range.selectNodeContents(rangeElement.previousElementSibling);\n            range.collapse(false);\n            event.preventDefault();\n            return true;\n        }\n    }\n    if (pElement) {\n        var previousElement = pElement.previousElementSibling;\n        if (previousElement && (0,selection/* getSelectPosition */.im)(pElement, vditor[vditor.currentMode].element, range).start === 0 &&\n            (((0,compatibility/* isFirefox */.vU)() && previousElement.tagName === \"HR\") || previousElement.tagName === \"TABLE\")) {\n            if (previousElement.tagName === \"TABLE\") {\n                // table 后删除 https://github.com/Vanessa219/vditor/issues/243\n                var lastCellElement = previousElement.lastElementChild.lastElementChild.lastElementChild;\n                lastCellElement.innerHTML =\n                    lastCellElement.innerHTML.trimLeft() + \"<wbr>\" + pElement.textContent.trim();\n                pElement.remove();\n            }\n            else {\n                // 光标位于 hr 后进行删除\n                previousElement.remove();\n            }\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n            execAfterRender(vditor);\n            event.preventDefault();\n            return true;\n        }\n    }\n    return false;\n};\nvar fixHR = function (range) {\n    if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.nodeType !== 3 &&\n        range.startContainer.tagName === \"HR\") {\n        range.setStartBefore(range.startContainer);\n    }\n};\n// firefox https://github.com/Vanessa219/vditor/issues/407\nvar fixFirefoxArrowUpTable = function (event, blockElement, range) {\n    var _a, _b;\n    if (!(0,compatibility/* isFirefox */.vU)()) {\n        return false;\n    }\n    if (event.key === \"ArrowUp\" && blockElement && ((_a = blockElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.tagName) === \"TABLE\") {\n        var tableElement = blockElement.previousElementSibling;\n        range.selectNodeContents(tableElement.rows[tableElement.rows.length - 1].lastElementChild);\n        range.collapse(false);\n        event.preventDefault();\n        return true;\n    }\n    if (event.key === \"ArrowDown\" && blockElement && ((_b = blockElement.nextElementSibling) === null || _b === void 0 ? void 0 : _b.tagName) === \"TABLE\") {\n        range.selectNodeContents(blockElement.nextElementSibling.rows[0].cells[0]);\n        range.collapse(true);\n        event.preventDefault();\n        return true;\n    }\n    return false;\n};\nvar paste = function (vditor, event, callback) { return fixBrowserBehavior_awaiter(void 0, void 0, void 0, function () {\n    var textHTML, textPlain, files, renderers, renderLinkDest, doc, height, code, codeElement, position, tempElement, fileReader_1, file_1, range, blockElement, range;\n    var _a;\n    return fixBrowserBehavior_generator(this, function (_b) {\n        switch (_b.label) {\n            case 0:\n                if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") !== \"true\") {\n                    return [2 /*return*/];\n                }\n                event.stopPropagation();\n                event.preventDefault();\n                if (\"clipboardData\" in event) {\n                    textHTML = event.clipboardData.getData(\"text/html\");\n                    textPlain = event.clipboardData.getData(\"text/plain\");\n                    files = event.clipboardData.files;\n                }\n                else {\n                    textHTML = event.dataTransfer.getData(\"text/html\");\n                    textPlain = event.dataTransfer.getData(\"text/plain\");\n                    if (event.dataTransfer.types.includes(\"Files\")) {\n                        files = event.dataTransfer.items;\n                    }\n                }\n                renderers = {};\n                renderLinkDest = function (node, entering) {\n                    if (!entering) {\n                        return [\"\", Lute.WalkContinue];\n                    }\n                    if (vditor.options.upload.renderLinkDest) {\n                        return vditor.options.upload.renderLinkDest(vditor, node, entering);\n                    }\n                    var src = node.TokensStr();\n                    if (node.__internal_object__.Parent.Type === 34 && src && src.indexOf(\"file://\") === -1 &&\n                        vditor.options.upload.linkToImgUrl) {\n                        var xhr_1 = new XMLHttpRequest();\n                        xhr_1.open(\"POST\", vditor.options.upload.linkToImgUrl);\n                        if (vditor.options.upload.token) {\n                            xhr_1.setRequestHeader(\"X-Upload-Token\", vditor.options.upload.token);\n                        }\n                        if (vditor.options.upload.withCredentials) {\n                            xhr_1.withCredentials = true;\n                        }\n                        setHeaders(vditor, xhr_1);\n                        xhr_1.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\");\n                        xhr_1.onreadystatechange = function () {\n                            if (xhr_1.readyState === XMLHttpRequest.DONE) {\n                                if (xhr_1.status === 200) {\n                                    var responseText = xhr_1.responseText;\n                                    if (vditor.options.upload.linkToImgFormat) {\n                                        responseText = vditor.options.upload.linkToImgFormat(xhr_1.responseText);\n                                    }\n                                    var responseJSON_1 = JSON.parse(responseText);\n                                    if (responseJSON_1.code !== 0) {\n                                        vditor.tip.show(responseJSON_1.msg);\n                                        return;\n                                    }\n                                    var original_1 = responseJSON_1.data.originalURL;\n                                    if (vditor.currentMode === \"sv\") {\n                                        vditor.sv.element.querySelectorAll(\".vditor-sv__marker--link\")\n                                            .forEach(function (item) {\n                                            if (item.textContent === original_1) {\n                                                item.textContent = responseJSON_1.data.url;\n                                            }\n                                        });\n                                    }\n                                    else {\n                                        var imgElement = vditor[vditor.currentMode].element.querySelector(\"img[src=\\\"\".concat(original_1, \"\\\"]\"));\n                                        imgElement.src = responseJSON_1.data.url;\n                                        if (vditor.currentMode === \"ir\") {\n                                            imgElement.previousElementSibling.previousElementSibling.innerHTML =\n                                                responseJSON_1.data.url;\n                                        }\n                                    }\n                                    execAfterRender(vditor);\n                                }\n                                else {\n                                    vditor.tip.show(xhr_1.responseText);\n                                }\n                                if (vditor.options.upload.linkToImgCallback) {\n                                    vditor.options.upload.linkToImgCallback(xhr_1.responseText);\n                                }\n                            }\n                        };\n                        xhr_1.send(JSON.stringify({ url: src }));\n                    }\n                    if (vditor.currentMode === \"ir\") {\n                        return [\"<span class=\\\"vditor-ir__marker vditor-ir__marker--link\\\">\".concat(Lute.EscapeHTMLStr(src), \"</span>\"), Lute.WalkContinue];\n                    }\n                    else if (vditor.currentMode === \"wysiwyg\") {\n                        return [\"\", Lute.WalkContinue];\n                    }\n                    else {\n                        return [\"<span class=\\\"vditor-sv__marker--link\\\">\".concat(Lute.EscapeHTMLStr(src), \"</span>\"), Lute.WalkContinue];\n                    }\n                };\n                // 浏览器地址栏拷贝处理\n                if (textHTML.replace(/&amp;/g, \"&\").replace(/<(|\\/)(html|body|meta)[^>]*?>/ig, \"\").trim() ===\n                    \"<a href=\\\"\".concat(textPlain, \"\\\">\").concat(textPlain, \"</a>\") ||\n                    textHTML.replace(/&amp;/g, \"&\").replace(/<(|\\/)(html|body|meta)[^>]*?>/ig, \"\").trim() ===\n                        \"<!--StartFragment--><a href=\\\"\".concat(textPlain, \"\\\">\").concat(textPlain, \"</a><!--EndFragment-->\")) {\n                    textHTML = \"\";\n                }\n                doc = new DOMParser().parseFromString(textHTML, \"text/html\");\n                if (doc.body) {\n                    textHTML = doc.body.innerHTML;\n                }\n                textHTML = Lute.Sanitize(textHTML);\n                vditor.wysiwyg.getComments(vditor);\n                height = vditor[vditor.currentMode].element.scrollHeight;\n                code = processPasteCode(textHTML, textPlain, vditor.currentMode);\n                codeElement = vditor.currentMode === \"sv\" ?\n                    (0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"code-block\") :\n                    (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"CODE\");\n                if (!codeElement) return [3 /*break*/, 1];\n                // 粘贴在代码位置\n                if (vditor.currentMode === \"sv\") {\n                    document.execCommand(\"insertHTML\", false, textPlain.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\"));\n                }\n                else {\n                    position = (0,selection/* getSelectPosition */.im)(event.target, vditor[vditor.currentMode].element);\n                    if (codeElement.parentElement.tagName !== \"PRE\") {\n                        // https://github.com/Vanessa219/vditor/issues/463\n                        textPlain += constants/* Constants.ZWSP */.g.ZWSP;\n                    }\n                    codeElement.textContent = codeElement.textContent.substring(0, position.start)\n                        + textPlain + codeElement.textContent.substring(position.end);\n                    (0,selection/* setSelectionByPosition */.$j)(position.start + textPlain.length, position.start + textPlain.length, codeElement.parentElement);\n                    if ((_a = codeElement.parentElement) === null || _a === void 0 ? void 0 : _a.nextElementSibling.classList.contains(\"vditor-\".concat(vditor.currentMode, \"__preview\"))) {\n                        codeElement.parentElement.nextElementSibling.innerHTML = codeElement.outerHTML;\n                        processCodeRender(codeElement.parentElement.nextElementSibling, vditor);\n                    }\n                }\n                return [3 /*break*/, 8];\n            case 1:\n                if (!code) return [3 /*break*/, 2];\n                callback.pasteCode(code);\n                return [3 /*break*/, 8];\n            case 2:\n                if (!(textHTML.trim() !== \"\")) return [3 /*break*/, 3];\n                tempElement = document.createElement(\"div\");\n                tempElement.innerHTML = textHTML;\n                tempElement.querySelectorAll(\"[style]\").forEach(function (e) {\n                    e.removeAttribute(\"style\");\n                });\n                tempElement.querySelectorAll(\".vditor-copy\").forEach(function (e) {\n                    e.remove();\n                });\n                if (vditor.currentMode === \"ir\") {\n                    renderers.HTML2VditorIRDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    (0,selection/* insertHTML */.oC)(vditor.lute.HTML2VditorIRDOM(tempElement.innerHTML), vditor);\n                }\n                else if (vditor.currentMode === \"wysiwyg\") {\n                    renderers.HTML2VditorDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    (0,selection/* insertHTML */.oC)(vditor.lute.HTML2VditorDOM(tempElement.innerHTML), vditor);\n                }\n                else {\n                    renderers.Md2VditorSVDOM = { renderLinkDest: renderLinkDest };\n                    vditor.lute.SetJSRenderers({ renderers: renderers });\n                    processPaste(vditor, vditor.lute.HTML2Md(tempElement.innerHTML).trimRight());\n                }\n                vditor.outline.render(vditor);\n                return [3 /*break*/, 8];\n            case 3:\n                if (!(files.length > 0)) return [3 /*break*/, 7];\n                if (!(vditor.options.upload.url || vditor.options.upload.handler)) return [3 /*break*/, 5];\n                return [4 /*yield*/, uploadFiles(vditor, files)];\n            case 4:\n                _b.sent();\n                return [3 /*break*/, 6];\n            case 5:\n                fileReader_1 = new FileReader();\n                if (\"clipboardData\" in event) {\n                    files = event.clipboardData.files;\n                    file_1 = files[0];\n                }\n                else if (event.dataTransfer.types.includes(\"Files\")) {\n                    files = event.dataTransfer.items;\n                    file_1 = files[0].getAsFile();\n                }\n                if (file_1 && file_1.type.startsWith(\"image\")) {\n                    fileReader_1.readAsDataURL(file_1);\n                    fileReader_1.onload = function () {\n                        var imgHTML = '';\n                        if (vditor.currentMode === \"wysiwyg\") {\n                            imgHTML += \"<img alt=\\\"\".concat(file_1.name, \"\\\" src=\\\"\").concat(fileReader_1.result.toString(), \"\\\">\\n\");\n                        }\n                        else {\n                            imgHTML += \"![\".concat(file_1.name, \"](\").concat(fileReader_1.result.toString(), \")\\n\");\n                        }\n                        document.execCommand(\"insertHTML\", false, imgHTML);\n                    };\n                }\n                _b.label = 6;\n            case 6: return [3 /*break*/, 8];\n            case 7:\n                if (textPlain.trim() !== \"\" && files.length === 0) {\n                    range = (0,selection/* getEditorRange */.zh)(vditor);\n                    if (range.toString() !== \"\" && vditor.lute.IsValidLinkDest(textPlain)) {\n                        textPlain = \"[\".concat(range.toString(), \"](\").concat(textPlain, \")\");\n                    }\n                    if (vditor.currentMode === \"ir\") {\n                        renderers.Md2VditorIRDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        (0,selection/* insertHTML */.oC)(vditor.lute.Md2VditorIRDOM(textPlain), vditor);\n                    }\n                    else if (vditor.currentMode === \"wysiwyg\") {\n                        renderers.Md2VditorDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        (0,selection/* insertHTML */.oC)(vditor.lute.Md2VditorDOM(textPlain), vditor);\n                    }\n                    else {\n                        renderers.Md2VditorSVDOM = { renderLinkDest: renderLinkDest };\n                        vditor.lute.SetJSRenderers({ renderers: renderers });\n                        processPaste(vditor, textPlain);\n                    }\n                    vditor.outline.render(vditor);\n                }\n                _b.label = 8;\n            case 8:\n                if (vditor.currentMode !== \"sv\") {\n                    blockElement = (0,hasClosest/* hasClosestBlock */.F9)((0,selection/* getEditorRange */.zh)(vditor).startContainer);\n                    if (blockElement) {\n                        range = (0,selection/* getEditorRange */.zh)(vditor);\n                        vditor[vditor.currentMode].element.querySelectorAll(\"wbr\").forEach(function (wbr) {\n                            wbr.remove();\n                        });\n                        range.insertNode(document.createElement(\"wbr\"));\n                        if (vditor.currentMode === \"wysiwyg\") {\n                            blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n                        }\n                        else {\n                            blockElement.outerHTML = vditor.lute.SpinVditorIRDOM(blockElement.outerHTML);\n                        }\n                        (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, range);\n                    }\n                    vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                        .forEach(function (item) {\n                        processCodeRender(item, vditor);\n                    });\n                }\n                vditor.wysiwyg.triggerRemoveComment(vditor);\n                execAfterRender(vditor);\n                if (vditor[vditor.currentMode].element.scrollHeight - height >\n                    Math.min(vditor[vditor.currentMode].element.clientHeight, window.innerHeight) / 2) {\n                    scrollCenter(vditor);\n                }\n                return [2 /*return*/];\n        }\n    });\n}); };\nvar templateObject_1;\n\n;// CONCATENATED MODULE: ./src/ts/ir/process.ts\n\n\n\n\n\n\n\n\n\nvar processHint = function (vditor) {\n    vditor.hint.render(vditor);\n    var startContainer = (0,selection/* getEditorRange */.zh)(vditor).startContainer;\n    // 代码块语言提示\n    var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(startContainer, \"data-type\", \"code-block-info\");\n    if (preBeforeElement) {\n        if (preBeforeElement.textContent.replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && vditor.hint.recentLanguage) {\n            preBeforeElement.textContent = constants/* Constants.ZWSP */.g.ZWSP + vditor.hint.recentLanguage;\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            range.selectNodeContents(preBeforeElement);\n        }\n        else {\n            var matchLangData_1 = [];\n            var key_1 = preBeforeElement.textContent.substring(0, (0,selection/* getSelectPosition */.im)(preBeforeElement, vditor.ir.element).start)\n                .replace(constants/* Constants.ZWSP */.g.ZWSP, \"\");\n            (vditor.options.preview.hljs.langs || constants/* Constants.CODE_LANGUAGES */.g.CODE_LANGUAGES).forEach(function (keyName) {\n                if (keyName.indexOf(key_1.toLowerCase()) > -1) {\n                    matchLangData_1.push({\n                        html: keyName,\n                        value: keyName,\n                    });\n                }\n            });\n            vditor.hint.genHTML(matchLangData_1, key_1, vditor);\n        }\n    }\n};\nvar process_processAfterRender = function (vditor, options) {\n    if (options === void 0) { options = {\n        enableAddUndoStack: true,\n        enableHint: false,\n        enableInput: true,\n    }; }\n    if (options.enableHint) {\n        processHint(vditor);\n    }\n    clearTimeout(vditor.ir.processTimeoutId);\n    vditor.ir.processTimeoutId = window.setTimeout(function () {\n        if (vditor.ir.composingLock) {\n            return;\n        }\n        var text = getMarkdown(vditor);\n        if (typeof vditor.options.input === \"function\" && options.enableInput) {\n            vditor.options.input(text);\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter.render(vditor, text);\n        }\n        if (vditor.options.cache.enable && (0,compatibility/* accessLocalStorage */.pK)()) {\n            localStorage.setItem(vditor.options.cache.id, text);\n            if (vditor.options.cache.after) {\n                vditor.options.cache.after(text);\n            }\n        }\n        if (vditor.devtools) {\n            vditor.devtools.renderEchart(vditor);\n        }\n        if (options.enableAddUndoStack) {\n            vditor.undo.addToUndoStack(vditor);\n        }\n    }, vditor.options.undoDelay);\n};\nvar process_processHeading = function (vditor, value) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var headingElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer) || range.startContainer;\n    if (headingElement) {\n        var headingMarkerElement = headingElement.querySelector(\".vditor-ir__marker--heading\");\n        if (headingMarkerElement) {\n            headingMarkerElement.innerHTML = value;\n        }\n        else {\n            headingElement.insertAdjacentText(\"afterbegin\", value);\n            range.selectNodeContents(headingElement);\n            range.collapse(false);\n        }\n        input(vditor, range.cloneRange());\n        highlightToolbarIR(vditor);\n    }\n};\nvar removeInline = function (range, vditor, type) {\n    var inlineElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", type);\n    if (inlineElement) {\n        inlineElement.firstElementChild.remove();\n        inlineElement.lastElementChild.remove();\n        range.insertNode(document.createElement(\"wbr\"));\n        var tempElement = document.createElement(\"div\");\n        tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(inlineElement.outerHTML);\n        inlineElement.outerHTML = tempElement.firstElementChild.innerHTML.trim();\n    }\n};\nvar process_processToolbar = function (vditor, actionBtn, prefix, suffix) {\n    var range = (0,selection/* getEditorRange */.zh)(vditor);\n    var commandName = actionBtn.getAttribute(\"data-type\");\n    var typeElement = range.startContainer;\n    if (typeElement.nodeType === 3) {\n        typeElement = typeElement.parentElement;\n    }\n    var useHighlight = true;\n    // 移除\n    if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n        if (commandName === \"quote\") {\n            var quoteElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(typeElement, \"BLOCKQUOTE\");\n            if (quoteElement) {\n                range.insertNode(document.createElement(\"wbr\"));\n                quoteElement.outerHTML = quoteElement.innerHTML.trim() === \"\" ?\n                    \"<p data-block=\\\"0\\\">\".concat(quoteElement.innerHTML, \"</p>\") : quoteElement.innerHTML;\n            }\n        }\n        else if (commandName === \"link\") {\n            var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"a\");\n            if (aElement) {\n                var aTextElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__link\");\n                if (aTextElement) {\n                    range.insertNode(document.createElement(\"wbr\"));\n                    aElement.outerHTML = aTextElement.innerHTML;\n                }\n                else {\n                    aElement.outerHTML = aElement.querySelector(\".vditor-ir__link\").innerHTML + \"<wbr>\";\n                }\n            }\n        }\n        else if (commandName === \"italic\") {\n            removeInline(range, vditor, \"em\");\n        }\n        else if (commandName === \"bold\") {\n            removeInline(range, vditor, \"strong\");\n        }\n        else if (commandName === \"strike\") {\n            removeInline(range, vditor, \"s\");\n        }\n        else if (commandName === \"inline-code\") {\n            removeInline(range, vditor, \"code\");\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName);\n            useHighlight = false;\n            actionBtn.classList.remove(\"vditor-menu--current\");\n        }\n    }\n    else {\n        // 添加\n        if (vditor.ir.element.childNodes.length === 0) {\n            vditor.ir.element.innerHTML = '<p data-block=\"0\"><wbr></p>';\n            (0,selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n        }\n        var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n        if (commandName === \"line\") {\n            if (blockElement) {\n                var hrHTML = '<hr data-block=\"0\"><p data-block=\"0\"><wbr>\\n</p>';\n                if (blockElement.innerHTML.trim() === \"\") {\n                    blockElement.outerHTML = hrHTML;\n                }\n                else {\n                    blockElement.insertAdjacentHTML(\"afterend\", hrHTML);\n                }\n            }\n        }\n        else if (commandName === \"quote\") {\n            if (blockElement) {\n                range.insertNode(document.createElement(\"wbr\"));\n                blockElement.outerHTML = \"<blockquote data-block=\\\"0\\\">\".concat(blockElement.outerHTML, \"</blockquote>\");\n                useHighlight = false;\n                actionBtn.classList.add(\"vditor-menu--current\");\n            }\n        }\n        else if (commandName === \"link\") {\n            var html = void 0;\n            if (range.toString() === \"\") {\n                html = \"\".concat(prefix, \"<wbr>\").concat(suffix);\n            }\n            else {\n                html = \"\".concat(prefix).concat(range.toString()).concat(suffix.replace(\")\", \"<wbr>)\"));\n            }\n            document.execCommand(\"insertHTML\", false, html);\n            useHighlight = false;\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n        else if (commandName === \"italic\" || commandName === \"bold\" || commandName === \"strike\"\n            || commandName === \"inline-code\" || commandName === \"code\" || commandName === \"table\") {\n            var html = void 0;\n            if (range.toString() === \"\") {\n                html = \"\".concat(prefix, \"<wbr>\").concat(suffix);\n            }\n            else {\n                if (commandName === \"code\") {\n                    html = \"\".concat(prefix, \"\\n\").concat(range.toString(), \"<wbr>\").concat(suffix);\n                }\n                else if (commandName === \"table\") {\n                    html = \"\".concat(prefix).concat(range.toString(), \"<wbr>\").concat(suffix);\n                }\n                else {\n                    html = \"\".concat(prefix).concat(range.toString()).concat(suffix, \"<wbr>\");\n                }\n                range.deleteContents();\n            }\n            if (commandName === \"table\" || commandName === \"code\") {\n                html = \"\\n\" + html + \"\\n\\n\";\n            }\n            var spanElement = document.createElement(\"span\");\n            spanElement.innerHTML = html;\n            range.insertNode(spanElement);\n            input(vditor, range);\n            if (commandName === \"table\") {\n                range.selectNodeContents(getSelection().getRangeAt(0).startContainer.parentElement);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n        else if (commandName === \"check\" || commandName === \"list\" || commandName === \"ordered-list\") {\n            listToggle(vditor, range, commandName, false);\n            useHighlight = false;\n            removeCurrentToolbar(vditor.toolbar.elements, [\"check\", \"list\", \"ordered-list\"]);\n            actionBtn.classList.add(\"vditor-menu--current\");\n        }\n    }\n    (0,selection/* setRangeByWbr */.ib)(vditor.ir.element, range);\n    process_processAfterRender(vditor);\n    if (useHighlight) {\n        highlightToolbarIR(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/hint/index.ts\nvar hint_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar hint_generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\nvar Hint = /** @class */ (function () {\n    function Hint(hintExtends) {\n        var _this = this;\n        this.splitChar = \"\";\n        this.lastIndex = -1;\n        this.fillEmoji = function (element, vditor) {\n            _this.element.style.display = \"none\";\n            var value = decodeURIComponent(element.getAttribute(\"data-value\"));\n            var range = window.getSelection().getRangeAt(0);\n            // 代码提示\n            if (vditor.currentMode === \"ir\") {\n                var preBeforeElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-type\", \"code-block-info\");\n                if (preBeforeElement) {\n                    preBeforeElement.textContent = constants/* Constants.ZWSP */.g.ZWSP + value.trimRight();\n                    range.selectNodeContents(preBeforeElement);\n                    range.collapse(false);\n                    process_processAfterRender(vditor);\n                    preBeforeElement.parentElement.querySelectorAll(\"code\").forEach(function (item) {\n                        item.className = \"language-\" + value.trimRight();\n                    });\n                    processCodeRender(preBeforeElement.parentElement.querySelector(\".vditor-ir__preview\"), vditor);\n                    _this.recentLanguage = value.trimRight();\n                    return;\n                }\n            }\n            if (vditor.currentMode === \"wysiwyg\" && range.startContainer.nodeType !== 3) {\n                var startContainer = range.startContainer;\n                var inputElement = void 0;\n                if (startContainer.classList.contains(\"vditor-input\")) {\n                    inputElement = startContainer;\n                }\n                else {\n                    inputElement = startContainer.firstElementChild;\n                }\n                if (inputElement && inputElement.classList.contains(\"vditor-input\")) {\n                    inputElement.value = value.trimRight();\n                    range.selectNodeContents(inputElement);\n                    range.collapse(false);\n                    // {detail: 1}用于标识这个自定义事件是在编程语言选择后触发的\n                    // 用于在鼠标选择语言后，自动聚焦到代码输入框\n                    inputElement.dispatchEvent(new CustomEvent(\"input\", { detail: 1 }));\n                    _this.recentLanguage = value.trimRight();\n                    return;\n                }\n            }\n            range.setStart(range.startContainer, _this.lastIndex);\n            range.deleteContents();\n            if (vditor.options.hint.parse) {\n                if (vditor.currentMode === \"sv\") {\n                    (0,selection/* insertHTML */.oC)(vditor.lute.SpinVditorSVDOM(value), vditor);\n                }\n                else if (vditor.currentMode === \"wysiwyg\") {\n                    (0,selection/* insertHTML */.oC)(vditor.lute.SpinVditorDOM(value), vditor);\n                }\n                else {\n                    (0,selection/* insertHTML */.oC)(vditor.lute.SpinVditorIRDOM(value), vditor);\n                }\n            }\n            else {\n                (0,selection/* insertHTML */.oC)(value, vditor);\n            }\n            if (_this.splitChar === \":\" && value.indexOf(\":\") > -1 && vditor.currentMode !== \"sv\") {\n                range.insertNode(document.createTextNode(\" \"));\n            }\n            range.collapse(false);\n            (0,selection/* setSelectionFocus */.Hc)(range);\n            if (vditor.currentMode === \"wysiwyg\") {\n                var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-wysiwyg__block\");\n                if (preElement && preElement.lastElementChild.classList.contains(\"vditor-wysiwyg__preview\")) {\n                    preElement.lastElementChild.innerHTML = preElement.firstElementChild.innerHTML;\n                    processCodeRender(preElement.lastElementChild, vditor);\n                }\n            }\n            else if (vditor.currentMode === \"ir\") {\n                var preElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__marker--pre\");\n                if (preElement && preElement.nextElementSibling.classList.contains(\"vditor-ir__preview\")) {\n                    preElement.nextElementSibling.innerHTML = preElement.innerHTML;\n                    processCodeRender(preElement.nextElementSibling, vditor);\n                }\n            }\n            execAfterRender(vditor);\n        };\n        this.timeId = -1;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-hint\";\n        this.recentLanguage = \"\";\n        hintExtends.push({ key: \":\" });\n    }\n    Hint.prototype.render = function (vditor) {\n        var _this = this;\n        if (!window.getSelection().focusNode) {\n            return;\n        }\n        var currentLineValue;\n        var range = getSelection().getRangeAt(0);\n        currentLineValue = range.startContainer.textContent.substring(0, range.startOffset) || \"\";\n        var key = this.getKey(currentLineValue, vditor.options.hint.extend);\n        if (typeof key === \"undefined\") {\n            this.element.style.display = \"none\";\n            clearTimeout(this.timeId);\n        }\n        else {\n            if (this.splitChar === \":\") {\n                var emojiHint_1 = key === \"\" ? vditor.options.hint.emoji : vditor.lute.GetEmojis();\n                var matchEmojiData_1 = [];\n                Object.keys(emojiHint_1).forEach(function (keyName) {\n                    if (keyName.indexOf(key.toLowerCase()) === 0) {\n                        if (emojiHint_1[keyName].indexOf(\".\") > -1) {\n                            matchEmojiData_1.push({\n                                html: \"<img src=\\\"\".concat(emojiHint_1[keyName], \"\\\" title=\\\":\").concat(keyName, \":\\\"/> :\").concat(keyName, \":\"),\n                                value: \":\".concat(keyName, \":\"),\n                            });\n                        }\n                        else {\n                            matchEmojiData_1.push({\n                                html: \"<span class=\\\"vditor-hint__emoji\\\">\".concat(emojiHint_1[keyName], \"</span>\").concat(keyName),\n                                value: emojiHint_1[keyName],\n                            });\n                        }\n                    }\n                });\n                this.genHTML(matchEmojiData_1, key, vditor);\n            }\n            else {\n                vditor.options.hint.extend.forEach(function (item) {\n                    if (item.key === _this.splitChar) {\n                        clearTimeout(_this.timeId);\n                        _this.timeId = window.setTimeout(function () { return hint_awaiter(_this, void 0, void 0, function () {\n                            var _a;\n                            return hint_generator(this, function (_b) {\n                                switch (_b.label) {\n                                    case 0:\n                                        _a = this.genHTML;\n                                        return [4 /*yield*/, item.hint(key)];\n                                    case 1:\n                                        _a.apply(this, [_b.sent(), key, vditor]);\n                                        return [2 /*return*/];\n                                }\n                            });\n                        }); }, vditor.options.hint.delay);\n                    }\n                });\n            }\n        }\n    };\n    Hint.prototype.genHTML = function (data, key, vditor) {\n        var _this = this;\n        if (data.length === 0) {\n            this.element.style.display = \"none\";\n            return;\n        }\n        var editorElement = vditor[vditor.currentMode].element;\n        var textareaPosition = (0,selection/* getCursorPosition */.Ny)(editorElement);\n        var x = textareaPosition.left +\n            (vditor.options.outline.position === \"left\" ? vditor.outline.element.offsetWidth : 0);\n        var y = textareaPosition.top;\n        var hintsHTML = \"\";\n        data.forEach(function (hintData, i) {\n            if (i > 7) {\n                return;\n            }\n            // process high light\n            var html = hintData.html;\n            if (key !== \"\") {\n                var lastIndex = html.lastIndexOf(\">\") + 1;\n                var replaceHtml = html.substr(lastIndex);\n                var replaceIndex = replaceHtml.toLowerCase().indexOf(key.toLowerCase());\n                if (replaceIndex > -1) {\n                    replaceHtml = replaceHtml.substring(0, replaceIndex) + \"<b>\" +\n                        replaceHtml.substring(replaceIndex, replaceIndex + key.length) + \"</b>\" +\n                        replaceHtml.substring(replaceIndex + key.length);\n                    html = html.substr(0, lastIndex) + replaceHtml;\n                }\n            }\n            hintsHTML += \"<button type=\\\"button\\\" data-value=\\\"\".concat(encodeURIComponent(hintData.value), \" \\\"\\n\").concat(i === 0 ? \"class='vditor-hint--current'\" : \"\", \"> \").concat(html, \"</button>\");\n        });\n        this.element.innerHTML = hintsHTML;\n        var lineHeight = parseInt(document.defaultView.getComputedStyle(editorElement, null)\n            .getPropertyValue(\"line-height\"), 10);\n        this.element.style.top = \"\".concat(y + (lineHeight || 22), \"px\");\n        this.element.style.left = \"\".concat(x, \"px\");\n        this.element.style.display = \"block\";\n        this.element.style.right = \"auto\";\n        this.element.querySelectorAll(\"button\").forEach(function (element) {\n            element.addEventListener(\"click\", function (event) {\n                _this.fillEmoji(element, vditor);\n                event.preventDefault();\n            });\n        });\n        // hint 展现在上部\n        if (this.element.getBoundingClientRect().bottom > window.innerHeight) {\n            this.element.style.top = \"\".concat(y - this.element.offsetHeight, \"px\");\n        }\n        if (this.element.getBoundingClientRect().right > window.innerWidth) {\n            this.element.style.left = \"auto\";\n            this.element.style.right = \"0\";\n        }\n    };\n    Hint.prototype.select = function (event, vditor) {\n        if (this.element.querySelectorAll(\"button\").length === 0 ||\n            this.element.style.display === \"none\") {\n            return false;\n        }\n        var currentHintElement = this.element.querySelector(\".vditor-hint--current\");\n        if (event.key === \"ArrowDown\") {\n            event.preventDefault();\n            event.stopPropagation();\n            currentHintElement.removeAttribute(\"class\");\n            if (!currentHintElement.nextElementSibling) {\n                this.element.children[0].className = \"vditor-hint--current\";\n            }\n            else {\n                currentHintElement.nextElementSibling.className = \"vditor-hint--current\";\n            }\n            return true;\n        }\n        else if (event.key === \"ArrowUp\") {\n            event.preventDefault();\n            event.stopPropagation();\n            currentHintElement.removeAttribute(\"class\");\n            if (!currentHintElement.previousElementSibling) {\n                var length_1 = this.element.children.length;\n                this.element.children[length_1 - 1].className = \"vditor-hint--current\";\n            }\n            else {\n                currentHintElement.previousElementSibling.className = \"vditor-hint--current\";\n            }\n            return true;\n        }\n        else if (!(0,compatibility/* isCtrl */.yl)(event) && !event.shiftKey && !event.altKey && event.key === \"Enter\" && !event.isComposing) {\n            event.preventDefault();\n            event.stopPropagation();\n            this.fillEmoji(currentHintElement, vditor);\n            return true;\n        }\n        return false;\n    };\n    Hint.prototype.getKey = function (currentLineValue, extend) {\n        var _this = this;\n        this.lastIndex = -1;\n        this.splitChar = \"\";\n        extend.forEach(function (item) {\n            var currentLastIndex = currentLineValue.lastIndexOf(item.key);\n            if (_this.lastIndex < currentLastIndex) {\n                _this.splitChar = item.key;\n                _this.lastIndex = currentLastIndex;\n            }\n        });\n        var key;\n        if (this.lastIndex === -1) {\n            return key;\n        }\n        var lineArray = currentLineValue.split(this.splitChar);\n        var lastItem = lineArray[lineArray.length - 1];\n        var maxLength = 32;\n        if (lineArray.length > 1 && lastItem.trim() === lastItem) {\n            if (lineArray.length === 2 && lineArray[0] === \"\" && lineArray[1].length < maxLength) {\n                key = lineArray[1];\n            }\n            else {\n                var preChar = lineArray[lineArray.length - 2].slice(-1);\n                if ((0,code160to32/* code160to32 */.X)(preChar) === \" \" && lastItem.length < maxLength) {\n                    key = lastItem;\n                }\n            }\n        }\n        return key;\n    };\n    return Hint;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/ir/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar IR = /** @class */ (function () {\n    function IR(vditor) {\n        this.composingLock = false;\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-ir\";\n        divElement.innerHTML = \"<pre class=\\\"vditor-reset\\\" placeholder=\\\"\".concat(vditor.options.placeholder, \"\\\"\\n contenteditable=\\\"true\\\" spellcheck=\\\"false\\\"></pre>\");\n        this.element = divElement.firstElementChild;\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        dblclickEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n    }\n    IR.prototype.copy = function (event, vditor) {\n        var range = getSelection().getRangeAt(0);\n        if (range.toString() === \"\") {\n            return;\n        }\n        event.stopPropagation();\n        event.preventDefault();\n        var tempElement = document.createElement(\"div\");\n        tempElement.appendChild(range.cloneContents());\n        event.clipboardData.setData(\"text/plain\", vditor.lute.VditorIRDOM2Md(tempElement.innerHTML).trim());\n        event.clipboardData.setData(\"text/html\", \"\");\n    };\n    IR.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            hidePanel(vditor, [\"hint\"]);\n        });\n        this.element.addEventListener(\"compositionstart\", function (event) {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                input(vditor, getSelection().getRangeAt(0).cloneRange());\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                process_processAfterRender(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: true,\n                    enableInput: true,\n                });\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                return;\n            }\n            input(vditor, getSelection().getRangeAt(0).cloneRange(), false, event);\n        });\n        this.element.addEventListener(\"click\", function (event) {\n            if (event.target.tagName === \"INPUT\") {\n                if (event.target.checked) {\n                    event.target.setAttribute(\"checked\", \"checked\");\n                }\n                else {\n                    event.target.removeAttribute(\"checked\");\n                }\n                _this.preventInput = true;\n                process_processAfterRender(vditor);\n                return;\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            // 点击后光标落于预览区\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(event.target, \"vditor-ir__preview\");\n            if (!previewElement) {\n                previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n            }\n            if (previewElement) {\n                if (previewElement.previousElementSibling.firstElementChild) {\n                    range.selectNodeContents(previewElement.previousElementSibling.firstElementChild);\n                }\n                else {\n                    // 行内数学公式\n                    range.selectNodeContents(previewElement.previousElementSibling);\n                }\n                range.collapse(true);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n                scrollCenter(vditor);\n            }\n            // 点击图片光标选中图片地址\n            if (event.target.tagName === \"IMG\") {\n                var linkElement = event.target.parentElement.querySelector(\".vditor-ir__marker--link\");\n                if (linkElement) {\n                    range.selectNode(linkElement);\n                    (0,selection/* setSelectionFocus */.Hc)(range);\n                }\n            }\n            // 打开链接\n            var aElement = (0,hasClosest/* hasClosestByAttribute */.a1)(event.target, \"data-type\", \"a\");\n            if (aElement && (!aElement.classList.contains(\"vditor-ir__node--expand\"))) {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(aElement.querySelector(\":scope > .vditor-ir__marker--link\"));\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(aElement.querySelector(\":scope > .vditor-ir__marker--link\").textContent);\n                }\n                return;\n            }\n            if (event.target.isEqualNode(_this.element) && _this.element.lastElementChild && range.collapsed) {\n                var lastRect = _this.element.lastElementChild.getBoundingClientRect();\n                if (event.y > lastRect.top + lastRect.height) {\n                    if (_this.element.lastElementChild.tagName === \"P\" &&\n                        _this.element.lastElementChild.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        range.selectNodeContents(_this.element.lastElementChild);\n                        range.collapse(false);\n                    }\n                    else {\n                        _this.element.insertAdjacentHTML(\"beforeend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n                        (0,selection/* setRangeByWbr */.ib)(_this.element, range);\n                    }\n                }\n            }\n            if (range.toString() === \"\") {\n                expandMarker(range, vditor);\n            }\n            else {\n                // https://github.com/Vanessa219/vditor/pull/681 当点击选中区域时 eventTarget 与 range 不一致，需延迟等待 range 发生变化\n                setTimeout(function () {\n                    expandMarker((0,selection/* getEditorRange */.zh)(vditor), vditor);\n                });\n            }\n            clickToc(event, vditor);\n            highlightToolbarIR(vditor);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n            highlightToolbarIR(vditor);\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.ir.element.innerHTML !== \"\" && vditor.ir.element.childNodes.length === 1 &&\n                vditor.ir.element.firstElementChild && vditor.ir.element.firstElementChild.tagName === \"P\"\n                && vditor.ir.element.firstElementChild.childElementCount === 0\n                && (vditor.ir.element.textContent === \"\" || vditor.ir.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.ir.element.innerHTML = \"\";\n                return;\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            if (event.key === \"Backspace\") {\n                // firefox headings https://github.com/Vanessa219/vditor/issues/211\n                if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.textContent === \"\\n\" && range.startOffset === 1) {\n                    range.startContainer.textContent = \"\";\n                    expandMarker(range, vditor);\n                }\n                // 数学公式前是空块，空块前是 table，在空块前删除，数学公式会多一个 br\n                _this.element.querySelectorAll(\".language-math\").forEach(function (item) {\n                    var brElement = item.querySelector(\"br\");\n                    if (brElement) {\n                        brElement.remove();\n                    }\n                });\n            }\n            else if (event.key.indexOf(\"Arrow\") > -1) {\n                if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n                    processHint(vditor);\n                }\n                expandMarker(range, vditor);\n            }\n            else if (event.keyCode === 229 && event.code === \"\" && event.key === \"Unidentified\") {\n                // https://github.com/Vanessa219/vditor/issues/508 IR 删除到节点需展开\n                expandMarker(range, vditor);\n            }\n            var previewRenderElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-ir__preview\");\n            if (previewRenderElement) {\n                if (event.key === \"ArrowUp\" || event.key === \"ArrowLeft\") {\n                    if (previewRenderElement.previousElementSibling.firstElementChild) {\n                        range.selectNodeContents(previewRenderElement.previousElementSibling.firstElementChild);\n                    }\n                    else {\n                        // 行内数学公式/html entity\n                        range.selectNodeContents(previewRenderElement.previousElementSibling);\n                    }\n                    range.collapse(false);\n                    event.preventDefault();\n                    return true;\n                }\n                if (previewRenderElement.tagName === \"SPAN\" &&\n                    (event.key === \"ArrowDown\" || event.key === \"ArrowRight\")) {\n                    if (previewRenderElement.parentElement.getAttribute(\"data-type\") === \"html-entity\") {\n                        // html entity\n                        previewRenderElement.parentElement.insertAdjacentText(\"afterend\", constants/* Constants.ZWSP */.g.ZWSP);\n                        range.setStart(previewRenderElement.parentElement.nextSibling, 1);\n                    }\n                    else {\n                        range.selectNodeContents(previewRenderElement.parentElement.lastElementChild);\n                    }\n                    range.collapse(false);\n                    event.preventDefault();\n                    return true;\n                }\n            }\n        });\n    };\n    return IR;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/markdown/getHTML.ts\n\nvar getHTML = function (vditor) {\n    if (vditor.currentMode === \"sv\") {\n        return vditor.lute.Md2HTML(getMarkdown(vditor));\n    }\n    else if (vditor.currentMode === \"wysiwyg\") {\n        return vditor.lute.VditorDOM2HTML(vditor.wysiwyg.element.innerHTML);\n    }\n    else if (vditor.currentMode === \"ir\") {\n        return vditor.lute.VditorIRDOM2HTML(vditor.ir.element.innerHTML);\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(65);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(182);\n;// CONCATENATED MODULE: ./src/ts/outline/index.ts\n\n\n\n\nvar Outline = /** @class */ (function () {\n    function Outline(outlineLabel) {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-outline\";\n        this.element.innerHTML = \"<div class=\\\"vditor-outline__title\\\">\".concat(outlineLabel, \"</div>\\n<div class=\\\"vditor-outline__content\\\"></div>\");\n    }\n    Outline.prototype.render = function (vditor) {\n        var html = \"\";\n        if (vditor.preview.element.style.display === \"block\") {\n            html = (0,outlineRender/* outlineRender */.k)(vditor.preview.previewElement, this.element.lastElementChild, vditor);\n        }\n        else {\n            html = (0,outlineRender/* outlineRender */.k)(vditor[vditor.currentMode].element, this.element.lastElementChild, vditor);\n        }\n        return html;\n    };\n    Outline.prototype.toggle = function (vditor, show, focus) {\n        var _a;\n        if (show === void 0) { show = true; }\n        if (focus === void 0) { focus = true; }\n        var btnElement = (_a = vditor.toolbar.elements.outline) === null || _a === void 0 ? void 0 : _a.firstElementChild;\n        if (show && window.innerWidth >= constants/* Constants.MOBILE_WIDTH */.g.MOBILE_WIDTH) {\n            this.element.style.display = \"block\";\n            this.render(vditor);\n            btnElement === null || btnElement === void 0 ? void 0 : btnElement.classList.add(\"vditor-menu--current\");\n        }\n        else {\n            this.element.style.display = \"none\";\n            btnElement === null || btnElement === void 0 ? void 0 : btnElement.classList.remove(\"vditor-menu--current\");\n        }\n        if (focus && getSelection().rangeCount > 0) {\n            var range = getSelection().getRangeAt(0);\n            if (vditor[vditor.currentMode].element.contains(range.startContainer)) {\n                (0,selection/* setSelectionFocus */.Hc)(range);\n            }\n        }\n        setPadding(vditor);\n    };\n    return Outline;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(431);\n;// CONCATENATED MODULE: ./src/ts/preview/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Preview = /** @class */ (function () {\n    function Preview(vditor) {\n        var _this = this;\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-preview\";\n        this.previewElement = document.createElement(\"div\");\n        this.previewElement.className = \"vditor-reset\";\n        if (vditor.options.classes.preview) {\n            this.previewElement.classList.add(vditor.options.classes.preview);\n        }\n        this.previewElement.style.maxWidth = vditor.options.preview.maxWidth + \"px\";\n        this.previewElement.addEventListener(\"copy\", function (event) {\n            if (event.target.tagName === \"TEXTAREA\") {\n                // https://github.com/Vanessa219/vditor/issues/901\n                return;\n            }\n            var tempElement = document.createElement(\"div\");\n            tempElement.className = \"vditor-reset\";\n            tempElement.appendChild(getSelection().getRangeAt(0).cloneContents());\n            _this.copyToX(vditor, tempElement, \"default\");\n            event.preventDefault();\n        });\n        this.previewElement.addEventListener(\"click\", function (event) {\n            var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n            if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                var headingElement = _this.previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                if (headingElement) {\n                    _this.element.scrollTop = headingElement.offsetTop;\n                }\n                return;\n            }\n            if (event.target.tagName === \"A\") {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(event.target);\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(event.target.getAttribute(\"href\"));\n                }\n                event.preventDefault();\n                return;\n            }\n            if (event.target.tagName === \"IMG\") {\n                if (vditor.options.image.preview) {\n                    vditor.options.image.preview(event.target);\n                }\n                else if (vditor.options.image.isPreview) {\n                    (0,preview_image/* previewImage */.E)(event.target, vditor.options.lang, vditor.options.theme);\n                }\n            }\n        });\n        this.element.appendChild(this.previewElement);\n        var actions = vditor.options.preview.actions;\n        if (actions.length === 0) {\n            return;\n        }\n        var actionElement = document.createElement(\"div\");\n        actionElement.className = \"vditor-preview__action\";\n        var actionHtml = [];\n        for (var i = 0; i < actions.length; i++) {\n            var action = actions[i];\n            if (typeof action === \"object\") {\n                actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"\".concat(action.key, \"\\\" class=\\\"\").concat(action.className, \"\\\"\").concat(action.tooltip ? \" aria-label=\\\"\".concat(action.tooltip, \"\\\"\") : \"\", \"\\\">\").concat(action.text, \"</button>\"));\n                continue;\n            }\n            switch (action) {\n                case \"desktop\":\n                    actionHtml.push(\"<button type=\\\"button\\\" class=\\\"vditor-preview__action--current\\\" data-type=\\\"desktop\\\">Desktop</button>\");\n                    break;\n                case \"tablet\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"tablet\\\">Tablet</button>\");\n                    break;\n                case \"mobile\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"mobile\\\">Mobile/Wechat</button>\");\n                    break;\n                case \"mp-wechat\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"mp-wechat\\\" class=\\\"vditor-tooltipped vditor-tooltipped__w\\\" aria-label=\\\"\\u590D\\u5236\\u5230\\u516C\\u4F17\\u53F7\\\"><svg><use xlink:href=\\\"#vditor-icon-mp-wechat\\\"></use></svg></button>\");\n                    break;\n                case \"zhihu\":\n                    actionHtml.push(\"<button type=\\\"button\\\" data-type=\\\"zhihu\\\" class=\\\"vditor-tooltipped vditor-tooltipped__w\\\" aria-label=\\\"\\u590D\\u5236\\u5230\\u77E5\\u4E4E\\\"><svg><use xlink:href=\\\"#vditor-icon-zhihu\\\"></use></svg></button>\");\n                    break;\n            }\n        }\n        actionElement.innerHTML = actionHtml.join(\"\");\n        actionElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btn = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (!btn) {\n                return;\n            }\n            var type = btn.getAttribute(\"data-type\");\n            var actionCustom = actions.find(function (w) { return (w === null || w === void 0 ? void 0 : w.key) === type; });\n            if (actionCustom) {\n                actionCustom.click(type);\n                return;\n            }\n            if (type === \"mp-wechat\" || type === \"zhihu\") {\n                _this.copyToX(vditor, _this.previewElement.cloneNode(true), type);\n                return;\n            }\n            if (type === \"desktop\") {\n                _this.previewElement.style.width = \"auto\";\n            }\n            else if (type === \"tablet\") {\n                _this.previewElement.style.width = \"780px\";\n            }\n            else {\n                _this.previewElement.style.width = \"360px\";\n            }\n            if (_this.previewElement.scrollWidth > _this.previewElement.parentElement.clientWidth) {\n                _this.previewElement.style.width = \"auto\";\n            }\n            _this.render(vditor);\n            actionElement.querySelectorAll(\"button\").forEach(function (item) {\n                item.classList.remove(\"vditor-preview__action--current\");\n            });\n            btn.classList.add(\"vditor-preview__action--current\");\n        });\n        this.element.insertBefore(actionElement, this.previewElement);\n    }\n    Preview.prototype.render = function (vditor, value) {\n        var _this = this;\n        clearTimeout(this.mdTimeoutId);\n        if (this.element.style.display === \"none\") {\n            if (this.element.getAttribute(\"data-type\") === \"renderPerformance\") {\n                vditor.tip.hide();\n            }\n            return;\n        }\n        if (value) {\n            this.previewElement.innerHTML = value;\n            return;\n        }\n        if (getMarkdown(vditor)\n            .replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\") === \"\") {\n            this.previewElement.innerHTML = \"\";\n            return;\n        }\n        var renderStartTime = new Date().getTime();\n        var markdownText = getMarkdown(vditor);\n        this.mdTimeoutId = window.setTimeout(function () {\n            if (vditor.options.preview.url) {\n                var xhr_1 = new XMLHttpRequest();\n                xhr_1.open(\"POST\", vditor.options.preview.url);\n                xhr_1.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n                xhr_1.onreadystatechange = function () {\n                    if (xhr_1.readyState === XMLHttpRequest.DONE) {\n                        if (xhr_1.status === 200) {\n                            var responseJSON = JSON.parse(xhr_1.responseText);\n                            if (responseJSON.code !== 0) {\n                                vditor.tip.show(responseJSON.msg);\n                                return;\n                            }\n                            if (vditor.options.preview.transform) {\n                                responseJSON.data = vditor.options.preview.transform(responseJSON.data);\n                            }\n                            _this.previewElement.innerHTML = responseJSON.data;\n                            _this.afterRender(vditor, renderStartTime);\n                        }\n                        else {\n                            var html = vditor.lute.Md2HTML(markdownText);\n                            if (vditor.options.preview.transform) {\n                                html = vditor.options.preview.transform(html);\n                            }\n                            _this.previewElement.innerHTML = html;\n                            _this.afterRender(vditor, renderStartTime);\n                        }\n                    }\n                };\n                xhr_1.send(JSON.stringify({ markdownText: markdownText }));\n            }\n            else {\n                var html = vditor.lute.Md2HTML(markdownText);\n                if (vditor.options.preview.transform) {\n                    html = vditor.options.preview.transform(html);\n                }\n                _this.previewElement.innerHTML = html;\n                _this.afterRender(vditor, renderStartTime);\n            }\n        }, vditor.options.preview.delay);\n    };\n    Preview.prototype.afterRender = function (vditor, startTime) {\n        if (vditor.options.preview.parse) {\n            vditor.options.preview.parse(this.element);\n        }\n        var time = (new Date().getTime() - startTime);\n        if ((new Date().getTime() - startTime) > 2600) {\n            // https://github.com/b3log/vditor/issues/67\n            vditor.tip.show(window.VditorI18n.performanceTip.replace(\"${x}\", time.toString()));\n            vditor.preview.element.setAttribute(\"data-type\", \"renderPerformance\");\n        }\n        else if (vditor.preview.element.getAttribute(\"data-type\") === \"renderPerformance\") {\n            vditor.tip.hide();\n            vditor.preview.element.removeAttribute(\"data-type\");\n        }\n        var cmtFocusElement = vditor.preview.element.querySelector(\".vditor-comment--focus\");\n        if (cmtFocusElement) {\n            cmtFocusElement.classList.remove(\"vditor-comment--focus\");\n        }\n        (0,codeRender/* codeRender */.O)(vditor.preview.previewElement, vditor.options.preview.hljs);\n        (0,highlightRender/* highlightRender */.s)(vditor.options.preview.hljs, vditor.preview.previewElement, vditor.options.cdn);\n        (0,mermaidRender/* mermaidRender */.i)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,markmapRender/* markmapRender */.K)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,flowchartRender/* flowchartRender */.P)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,graphvizRender/* graphvizRender */.v)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,chartRender/* chartRender */.p)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,mindmapRender/* mindmapRender */.P)(vditor.preview.previewElement, vditor.options.cdn, vditor.options.theme);\n        (0,plantumlRender/* plantumlRender */.B)(vditor.preview.previewElement, vditor.options.cdn);\n        (0,abcRender/* abcRender */.Q)(vditor.preview.previewElement, vditor.options.cdn);\n        if (vditor.options.preview.render.media.enable) {\n            (0,mediaRender/* mediaRender */.Y)(vditor.preview.previewElement);\n        }\n        vditor.options.customRenders.forEach(function (item) {\n            item.render(vditor.preview.previewElement, vditor);\n        });\n        // toc render\n        var editorElement = vditor.preview.element;\n        var tocHTML = vditor.outline.render(vditor);\n        if (tocHTML === \"\") {\n            tocHTML = \"[ToC]\";\n        }\n        editorElement.querySelectorAll('[data-type=\"toc-block\"]').forEach(function (item) {\n            item.innerHTML = tocHTML;\n            (0,mathRender/* mathRender */.H)(item, {\n                cdn: vditor.options.cdn,\n                math: vditor.options.preview.math,\n            });\n        });\n        (0,mathRender/* mathRender */.H)(vditor.preview.previewElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    };\n    Preview.prototype.copyToX = function (vditor, copyElement, type) {\n        if (type === void 0) { type = \"mp-wechat\"; }\n        // fix math render\n        if (type !== \"zhihu\") {\n            copyElement.querySelectorAll(\".katex-html .base\").forEach(function (item) {\n                item.style.display = \"initial\";\n            });\n        }\n        else {\n            copyElement.querySelectorAll(\".language-math\").forEach(function (item) {\n                item.outerHTML = \"<img class=\\\"Formula-image\\\" data-eeimg=\\\"true\\\" src=\\\"//www.zhihu.com/equation?tex=\\\" alt=\\\"\".concat(item.getAttribute(\"data-math\"), \"\\\\\\\" style=\\\"display: block; margin: 0 auto; max-width: 100%;\\\">\");\n            });\n        }\n        // 防止背景色被粘贴到公众号中\n        copyElement.style.backgroundColor = \"#fff\";\n        // 代码背景\n        copyElement.querySelectorAll(\"code\").forEach(function (item) {\n            item.style.backgroundImage = \"none\";\n        });\n        this.element.append(copyElement);\n        var range = copyElement.ownerDocument.createRange();\n        range.selectNode(copyElement);\n        (0,selection/* setSelectionFocus */.Hc)(range);\n        document.execCommand(\"copy\");\n        copyElement.remove();\n        vditor.tip.show(['zhihu', 'mp-wechat'].includes(type) ? \"\\u5DF2\\u590D\\u5236\\uFF0C\\u53EF\\u5230\".concat(type === \"zhihu\" ? \"知乎\" : \"微信公众号平台\", \"\\u8FDB\\u884C\\u7C98\\u8D34\") : \"\\u5DF2\\u590D\\u5236\\u5230\\u526A\\u5207\\u677F\");\n    };\n    return Preview;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/resize/index.ts\nvar Resize = /** @class */ (function () {\n    function Resize(vditor) {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-resize vditor-resize--\".concat(vditor.options.resize.position);\n        this.element.innerHTML = \"<div><svg><use xlink:href=\\\"#vditor-icon-resize\\\"></use></svg></div>\";\n        this.bindEvent(vditor);\n    }\n    Resize.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"mousedown\", function (event) {\n            var documentSelf = document;\n            var y = event.clientY;\n            var height = vditor.element.offsetHeight;\n            var minHeight = 63 + vditor.element.querySelector(\".vditor-toolbar\").clientHeight;\n            documentSelf.ondragstart = function () { return false; };\n            if (window.captureEvents) {\n                window.captureEvents();\n            }\n            _this.element.classList.add(\"vditor-resize--selected\");\n            documentSelf.onmousemove = function (moveEvent) {\n                if (vditor.options.resize.position === \"top\") {\n                    vditor.element.style.height = Math.max(minHeight, height + (y - moveEvent.clientY)) + \"px\";\n                }\n                else {\n                    vditor.element.style.height = Math.max(minHeight, height + (moveEvent.clientY - y)) + \"px\";\n                }\n                if (vditor.options.typewriterMode) {\n                    vditor.sv.element.style.paddingBottom =\n                        vditor.sv.element.parentElement.offsetHeight / 2 + \"px\";\n                }\n            };\n            documentSelf.onmouseup = function () {\n                if (vditor.options.resize.after) {\n                    vditor.options.resize.after(vditor.element.offsetHeight - height);\n                }\n                if (window.captureEvents) {\n                    window.captureEvents();\n                }\n                documentSelf.onmousemove = null;\n                documentSelf.onmouseup = null;\n                documentSelf.ondragstart = null;\n                documentSelf.onselectstart = null;\n                documentSelf.onselect = null;\n                _this.element.classList.remove(\"vditor-resize--selected\");\n            };\n        });\n    };\n    return Resize;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/sv/index.ts\n\n\n\n\n\n\nvar Editor = /** @class */ (function () {\n    function Editor(vditor) {\n        this.composingLock = false;\n        this.element = document.createElement(\"pre\");\n        this.element.className = \"vditor-sv vditor-reset\";\n        this.element.setAttribute(\"placeholder\", vditor.options.placeholder);\n        this.element.setAttribute(\"contenteditable\", \"true\");\n        this.element.setAttribute(\"spellcheck\", \"false\");\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n    }\n    Editor.prototype.copy = function (event, vditor) {\n        event.stopPropagation();\n        event.preventDefault();\n        event.clipboardData.setData(\"text/plain\", getSelectText(vditor[vditor.currentMode].element));\n    };\n    Editor.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    document.execCommand(\"insertHTML\", false, code);\n                },\n            });\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            if (vditor.preview.element.style.display !== \"block\") {\n                return;\n            }\n            var textScrollTop = _this.element.scrollTop;\n            var textHeight = _this.element.clientHeight;\n            var textScrollHeight = _this.element.scrollHeight - parseFloat(_this.element.style.paddingBottom || \"0\");\n            var preview = vditor.preview.element;\n            if ((textScrollTop / textHeight > 0.5)) {\n                preview.scrollTop = (textScrollTop + textHeight) *\n                    preview.scrollHeight / textScrollHeight - textHeight;\n            }\n            else {\n                preview.scrollTop = textScrollTop *\n                    preview.scrollHeight / textScrollHeight;\n            }\n        });\n        this.element.addEventListener(\"compositionstart\", function (event) {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                inputEvent(vditor, event);\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                processAfterRender(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: true,\n                    enableInput: true,\n                });\n                return;\n            }\n            inputEvent(vditor, event);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.sv.element.innerHTML !== \"\" && vditor.sv.element.childNodes.length === 1 &&\n                vditor.sv.element.firstElementChild && vditor.sv.element.firstElementChild.tagName === \"DIV\"\n                && vditor.sv.element.firstElementChild.childElementCount === 2\n                && (vditor.sv.element.firstElementChild.textContent === \"\" || vditor.sv.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.sv.element.innerHTML = \"\";\n                return;\n            }\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n        });\n    };\n    return Editor;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/tip/index.ts\nvar Tip = /** @class */ (function () {\n    function Tip() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-tip\";\n    }\n    Tip.prototype.show = function (text, time) {\n        var _this = this;\n        if (time === void 0) { time = 6000; }\n        this.element.className = \"vditor-tip vditor-tip--show\";\n        if (time === 0) {\n            this.element.innerHTML = \"<div class=\\\"vditor-tip__content\\\">\".concat(text, \"\\n<div class=\\\"vditor-tip__close\\\">X</div></div>\");\n            this.element.querySelector(\".vditor-tip__close\").addEventListener(\"click\", function () {\n                _this.hide();\n            });\n        }\n        else {\n            this.element.innerHTML = \"<div class=\\\"vditor-tip__content\\\">\".concat(text, \"</div>\");\n            setTimeout(function () {\n                _this.hide();\n            }, time);\n        }\n        // 需在动画结束后才能确定位置\n        this.element.removeAttribute(\"style\");\n        setTimeout(function () {\n            var rect = _this.element.getBoundingClientRect();\n            if (rect.top < 46) {\n                _this.element.style.position = \"fixed\";\n                _this.element.style.top = \"46px\";\n            }\n        }, 150);\n    };\n    Tip.prototype.hide = function () {\n        this.element.className = \"vditor-messageElementtip\";\n        this.element.innerHTML = \"\";\n    };\n    return Tip;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/ui/setPreviewMode.ts\n\n\nvar setPreviewMode = function (mode, vditor) {\n    if (vditor.options.preview.mode === mode) {\n        return;\n    }\n    vditor.options.preview.mode = mode;\n    switch (mode) {\n        case \"both\":\n            vditor.sv.element.style.display = \"block\";\n            vditor.preview.element.style.display = \"block\";\n            vditor.preview.render(vditor);\n            setCurrentToolbar(vditor.toolbar.elements, [\"both\"]);\n            break;\n        case \"editor\":\n            vditor.sv.element.style.display = \"block\";\n            vditor.preview.element.style.display = \"none\";\n            removeCurrentToolbar(vditor.toolbar.elements, [\"both\"]);\n            break;\n        default:\n            break;\n    }\n    if (vditor.devtools) {\n        vditor.devtools.renderEchart(vditor);\n    }\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Both.ts\nvar Both_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Both = /** @class */ (function (_super) {\n    Both_extends(Both, _super);\n    function Both(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        if (vditor.options.preview.mode === \"both\") {\n            _this.element.children[0].classList.add(\"vditor-menu--current\");\n        }\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            event.preventDefault();\n            if (vditor.currentMode !== \"sv\") {\n                return;\n            }\n            if (vditor.options.preview.mode === \"both\") {\n                setPreviewMode(\"editor\", vditor);\n            }\n            else {\n                setPreviewMode(\"both\", vditor);\n            }\n        });\n        return _this;\n    }\n    return Both;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Br.ts\nvar Br = /** @class */ (function () {\n    function Br() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar__br\";\n    }\n    return Br;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(34);\n;// CONCATENATED MODULE: ./src/ts/toolbar/CodeTheme.ts\nvar CodeTheme_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar CodeTheme = /** @class */ (function (_super) {\n    CodeTheme_extends(CodeTheme, _super);\n    function CodeTheme(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        var innerHTML = \"\";\n        constants/* Constants.CODE_THEME.forEach */.g.CODE_THEME.forEach(function (theme) {\n            innerHTML += \"<button>\".concat(theme, \"</button>\");\n        });\n        panelElement.innerHTML =\n            \"<div style=\\\"overflow: auto;max-height:\".concat(window.innerHeight / 2, \"px\\\">\").concat(innerHTML, \"</div>\");\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (event.target.tagName === \"BUTTON\") {\n                hidePanel(vditor, [\"subToolbar\"]);\n                vditor.options.preview.hljs.style = event.target.textContent;\n                (0,setCodeTheme/* setCodeTheme */.Y)(event.target.textContent, vditor.options.cdn);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return CodeTheme;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/ContentTheme.ts\nvar ContentTheme_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar ContentTheme = /** @class */ (function (_super) {\n    ContentTheme_extends(ContentTheme, _super);\n    function ContentTheme(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        var innerHTML = \"\";\n        Object.keys(vditor.options.preview.theme.list).forEach(function (key) {\n            innerHTML += \"<button data-type=\\\"\".concat(key, \"\\\">\").concat(vditor.options.preview.theme.list[key], \"</button>\");\n        });\n        panelElement.innerHTML =\n            \"<div style=\\\"overflow: auto;max-height:\".concat(window.innerHeight / 2, \"px\\\">\").concat(innerHTML, \"</div>\");\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (event.target.tagName === \"BUTTON\") {\n                hidePanel(vditor, [\"subToolbar\"]);\n                vditor.options.preview.theme.current = event.target.getAttribute(\"data-type\");\n                (0,setContentTheme/* setContentTheme */.Z)(vditor.options.preview.theme.current, vditor.options.preview.theme.path);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return ContentTheme;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Counter.ts\nvar Counter = /** @class */ (function () {\n    function Counter(vditor) {\n        this.element = document.createElement(\"span\");\n        this.element.className = \"vditor-counter vditor-tooltipped vditor-tooltipped__nw\";\n        this.render(vditor, \"\");\n    }\n    Counter.prototype.render = function (vditor, mdText) {\n        var length = mdText.endsWith(\"\\n\") ? mdText.length - 1 : mdText.length;\n        if (vditor.options.counter.type === \"text\" && vditor[vditor.currentMode]) {\n            var tempElement = vditor[vditor.currentMode].element.cloneNode(true);\n            tempElement.querySelectorAll(\".vditor-wysiwyg__preview\").forEach(function (item) {\n                item.remove();\n            });\n            length = tempElement.textContent.length;\n        }\n        if (typeof vditor.options.counter.max === \"number\") {\n            if (length > vditor.options.counter.max) {\n                this.element.className = \"vditor-counter vditor-counter--error\";\n            }\n            else {\n                this.element.className = \"vditor-counter\";\n            }\n            this.element.innerHTML = \"\".concat(length, \"/\").concat(vditor.options.counter.max);\n        }\n        else {\n            this.element.innerHTML = \"\".concat(length);\n        }\n        this.element.setAttribute(\"aria-label\", vditor.options.counter.type);\n        if (vditor.options.counter.after) {\n            vditor.options.counter.after(length, {\n                enable: vditor.options.counter.enable,\n                max: vditor.options.counter.max,\n                type: vditor.options.counter.type,\n            });\n        }\n    };\n    return Counter;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Custom.ts\nvar Custom_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Custom = /** @class */ (function (_super) {\n    Custom_extends(Custom, _super);\n    function Custom(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].innerHTML = menuItem.icon;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (event.currentTarget.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            menuItem.click(event, vditor);\n        });\n        return _this;\n    }\n    return Custom;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Devtools.ts\nvar Devtools_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Devtools = /** @class */ (function (_super) {\n    Devtools_extends(Devtools, _super);\n    function Devtools(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.firstElementChild.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            event.preventDefault();\n            if (btnElement.classList.contains(\"vditor-menu--current\")) {\n                btnElement.classList.remove(\"vditor-menu--current\");\n                vditor.devtools.element.style.display = \"none\";\n                setPadding(vditor);\n            }\n            else {\n                btnElement.classList.add(\"vditor-menu--current\");\n                vditor.devtools.element.style.display = \"block\";\n                setPadding(vditor);\n                vditor.devtools.renderEchart(vditor);\n            }\n        });\n        return _this;\n    }\n    return Devtools;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Divider.ts\nvar Divider = /** @class */ (function () {\n    function Divider() {\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar__divider\";\n    }\n    return Divider;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Emoji.ts\nvar Emoji_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar Emoji = /** @class */ (function (_super) {\n    Emoji_extends(Emoji, _super);\n    function Emoji(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-panel vditor-panel--arrow\";\n        var commonEmojiHTML = \"\";\n        Object.keys(vditor.options.hint.emoji).forEach(function (key) {\n            var emojiValue = vditor.options.hint.emoji[key];\n            if (emojiValue.indexOf(\".\") > -1) {\n                commonEmojiHTML += \"<button data-value=\\\":\".concat(key, \": \\\" data-key=\\\":\").concat(key, \":\\\"><img\\ndata-value=\\\":\").concat(key, \": \\\" data-key=\\\":\").concat(key, \":\\\" class=\\\"vditor-emojis__icon\\\" src=\\\"\").concat(emojiValue, \"\\\"/></button>\");\n            }\n            else {\n                commonEmojiHTML += \"<button data-value=\\\"\".concat(emojiValue, \" \\\"\\n data-key=\\\"\").concat(key, \"\\\"><span class=\\\"vditor-emojis__icon\\\">\").concat(emojiValue, \"</span></button>\");\n            }\n        });\n        panelElement.innerHTML = \"<div class=\\\"vditor-emojis\\\" style=\\\"max-height: \".concat(vditor.options.height === \"auto\" ? \"auto\" : vditor.options.height - 80, \"px\\\">\").concat(commonEmojiHTML, \"</div><div class=\\\"vditor-emojis__tail\\\">\\n    <span class=\\\"vditor-emojis__tip\\\"></span><span>\").concat(vditor.options.hint.emojiTail || \"\", \"</span>\\n</div>\");\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, _this.element.firstElementChild, menuItem.level);\n        _this.bindEvent(vditor);\n        return _this;\n    }\n    Emoji.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.element.lastElementChild.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (btnElement) {\n                event.preventDefault();\n                var value = btnElement.getAttribute(\"data-value\");\n                var range = (0,selection/* getEditorRange */.zh)(vditor);\n                var html = value;\n                if (vditor.currentMode === \"wysiwyg\") {\n                    html = vditor.lute.SpinVditorDOM(value);\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    html = vditor.lute.SpinVditorIRDOM(value);\n                }\n                if (value.indexOf(\":\") > -1 && vditor.currentMode !== \"sv\") {\n                    var tempElement = document.createElement(\"div\");\n                    tempElement.innerHTML = html;\n                    html = tempElement.firstElementChild.firstElementChild.outerHTML + \" \";\n                    (0,selection/* insertHTML */.oC)(html, vditor);\n                }\n                else {\n                    range.extractContents();\n                    range.insertNode(document.createTextNode(value));\n                }\n                range.collapse(false);\n                (0,selection/* setSelectionFocus */.Hc)(range);\n                _this.element.lastElementChild.style.display = \"none\";\n                execAfterRender(vditor);\n            }\n        });\n        this.element.lastElementChild.addEventListener(\"mouseover\", function (event) {\n            var btnElement = (0,hasClosestByHeadings/* hasClosestByTag */.S)(event.target, \"BUTTON\");\n            if (btnElement) {\n                _this.element.querySelector(\".vditor-emojis__tip\").innerHTML = btnElement.getAttribute(\"data-key\");\n            }\n        });\n    };\n    return Emoji;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/export/index.ts\n\n\nvar download = function (vditor, content, filename) {\n    var aElement = document.createElement(\"a\");\n    if (\"download\" in aElement) {\n        aElement.download = filename;\n        aElement.style.display = \"none\";\n        aElement.href = URL.createObjectURL(new Blob([content]));\n        document.body.appendChild(aElement);\n        aElement.click();\n        aElement.remove();\n    }\n    else {\n        vditor.tip.show(window.VditorI18n.downloadTip, 0);\n    }\n};\nvar exportMarkdown = function (vditor) {\n    var content = getMarkdown(vditor);\n    download(vditor, content, content.substr(0, 10) + \".md\");\n};\nvar exportPDF = function (vditor) {\n    vditor.tip.show(window.VditorI18n.generate, 3800);\n    var iframe = document.querySelector(\"#vditorExportIframe\");\n    iframe.contentDocument.open();\n    iframe.contentDocument.write(\"<link rel=\\\"stylesheet\\\" href=\\\"\".concat(vditor.options.cdn, \"/dist/index.css\\\"/>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/method.min.js\\\"></script>\\n<div id=\\\"preview\\\" style=\\\"width: 800px\\\"></div>\\n<script>\\nwindow.addEventListener(\\\"message\\\", (e) => {\\n  if(!e.data) {\\n    return;\\n  }\\n  Vditor.preview(document.getElementById('preview'), e.data, {\\n    cdn: \\\"\").concat(vditor.options.cdn, \"\\\",\\n    markdown: {\\n      theme: \").concat(JSON.stringify(vditor.options.preview.theme), \"\\n    },\\n    hljs: {\\n      style: \\\"\").concat(vditor.options.preview.hljs.style, \"\\\"\\n    }\\n  });\\n  setTimeout(() => {\\n        window.print();\\n    }, 3600);\\n}, false);\\n</script>\"));\n    iframe.contentDocument.close();\n    setTimeout(function () {\n        iframe.contentWindow.postMessage(getMarkdown(vditor), \"*\");\n    }, 200);\n};\nvar exportHTML = function (vditor) {\n    var content = getHTML(vditor);\n    var html = \"<html><head><link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\".concat(vditor.options.cdn, \"/dist/index.css\\\"/>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/js/i18n/\").concat(vditor.options.lang, \".js\\\"></script>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/method.min.js\\\"></script></head>\\n<body><div class=\\\"vditor-reset\\\" id=\\\"preview\\\">\").concat(content, \"</div>\\n<script>\\n    const previewElement = document.getElementById('preview')\\n    Vditor.setContentTheme('\").concat(vditor.options.preview.theme.current, \"', '\").concat(vditor.options.preview.theme.path, \"');\\n    Vditor.codeRender(previewElement);\\n    Vditor.highlightRender(\").concat(JSON.stringify(vditor.options.preview.hljs), \", previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.mathRender(previewElement, {\\n        cdn: '\").concat(vditor.options.cdn, \"',\\n        math: \").concat(JSON.stringify(vditor.options.preview.math), \",\\n    });\\n    Vditor.mermaidRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.markmapRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.flowchartRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.graphvizRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    Vditor.chartRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.mindmapRender(previewElement, '\").concat(vditor.options.cdn, \"', '\").concat(vditor.options.theme, \"');\\n    Vditor.abcRender(previewElement, '\").concat(vditor.options.cdn, \"');\\n    \").concat(vditor.options.preview.render.media.enable ? 'Vditor.mediaRender(previewElement);' : \"\", \"\\n    Vditor.speechRender(previewElement);\\n</script>\\n<script src=\\\"\").concat(vditor.options.cdn, \"/dist/js/icons/\").concat(vditor.options.icon, \".js\\\"></script></body></html>\");\n    download(vditor, html, content.substr(0, 10) + \".html\");\n};\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Export.ts\nvar Export_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Export = /** @class */ (function (_super) {\n    Export_extends(Export, _super);\n    function Export(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var actionBtn = _this.element.children[0];\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint\".concat(menuItem.level === 2 ? \"\" : \" vditor-panel--arrow\");\n        panelElement.innerHTML = \"<button data-type=\\\"markdown\\\">Markdown</button>\\n<button data-type=\\\"pdf\\\">PDF</button>\\n<button data-type=\\\"html\\\">HTML</button>\";\n        panelElement.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            var btnElement = event.target;\n            if (btnElement.tagName === \"BUTTON\") {\n                switch (btnElement.getAttribute(\"data-type\")) {\n                    case \"markdown\":\n                        exportMarkdown(vditor);\n                        break;\n                    case \"pdf\":\n                        exportPDF(vditor);\n                        break;\n                    case \"html\":\n                        exportHTML(vditor);\n                        break;\n                    default:\n                        break;\n                }\n                hidePanel(vditor, [\"subToolbar\"]);\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        });\n        _this.element.appendChild(panelElement);\n        toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level);\n        return _this;\n    }\n    return Export;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Fullscreen.ts\nvar Fullscreen_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Fullscreen = /** @class */ (function (_super) {\n    Fullscreen_extends(Fullscreen, _super);\n    function Fullscreen(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor, menuItem);\n        return _this;\n    }\n    Fullscreen.prototype._bindEvent = function (vditor, menuItem) {\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (vditor.element.className.includes(\"vditor--fullscreen\")) {\n                if (!menuItem.level) {\n                    this.innerHTML = menuItem.icon;\n                }\n                vditor.element.style.zIndex = \"\";\n                document.body.style.overflow = \"\";\n                vditor.element.classList.remove(\"vditor--fullscreen\");\n                Object.keys(vditor.toolbar.elements).forEach(function (key) {\n                    var svgElement = vditor.toolbar.elements[key].firstChild;\n                    if (svgElement) {\n                        svgElement.className = svgElement.className.replace(\"__s\", \"__n\");\n                        vditor.options.toolbar.forEach(function (item) {\n                            if (typeof item !== \"string\" && item.tipPosition && item.name === svgElement.dataset.type) {\n                                svgElement.className = \"vditor-tooltipped vditor-tooltipped__\".concat(item.tipPosition);\n                            }\n                        });\n                    }\n                });\n                if (vditor.counter) {\n                    vditor.counter.element.className = vditor.counter.element.className.replace(\"__s\", \"__n\");\n                }\n            }\n            else {\n                if (!menuItem.level) {\n                    this.innerHTML = '<svg><use xlink:href=\"#vditor-icon-contract\"></use></svg>';\n                }\n                vditor.element.style.zIndex = vditor.options.fullscreen.index.toString();\n                document.body.style.overflow = \"hidden\";\n                vditor.element.classList.add(\"vditor--fullscreen\");\n                Object.keys(vditor.toolbar.elements).forEach(function (key) {\n                    var svgElement = vditor.toolbar.elements[key].firstChild;\n                    if (svgElement) {\n                        svgElement.className = svgElement.className.replace(\"__n\", \"__s\");\n                    }\n                });\n                if (vditor.counter) {\n                    vditor.counter.element.className = vditor.counter.element.className.replace(\"__n\", \"__s\");\n                }\n            }\n            if (vditor.devtools) {\n                vditor.devtools.renderEchart(vditor);\n            }\n            if (menuItem.click) {\n                menuItem.click(event, vditor);\n            }\n            setPadding(vditor);\n            setTypewriterPosition(vditor);\n        });\n    };\n    return Fullscreen;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Headings.ts\nvar Headings_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\nvar Headings = /** @class */ (function (_super) {\n    Headings_extends(Headings, _super);\n    function Headings(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var panelElement = document.createElement(\"div\");\n        panelElement.className = \"vditor-hint vditor-panel--arrow\";\n        panelElement.innerHTML = \"<button data-tag=\\\"h1\\\" data-value=\\\"# \\\">\".concat(window.VditorI18n.heading1, \" \").concat((0,compatibility/* updateHotkeyTip */.ns)(\"&lt;⌥⌘1>\"), \"</button>\\n<button data-tag=\\\"h2\\\" data-value=\\\"## \\\">\").concat(window.VditorI18n.heading2, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘2\"), \"></button>\\n<button data-tag=\\\"h3\\\" data-value=\\\"### \\\">\").concat(window.VditorI18n.heading3, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘3\"), \"></button>\\n<button data-tag=\\\"h4\\\" data-value=\\\"#### \\\">\").concat(window.VditorI18n.heading4, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘4\"), \"></button>\\n<button data-tag=\\\"h5\\\" data-value=\\\"##### \\\">\").concat(window.VditorI18n.heading5, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘5\"), \"></button>\\n<button data-tag=\\\"h6\\\" data-value=\\\"###### \\\">\").concat(window.VditorI18n.heading6, \" &lt;\").concat((0,compatibility/* updateHotkeyTip */.ns)(\"⌥⌘6\"), \"></button>\");\n        _this.element.appendChild(panelElement);\n        _this._bindEvent(vditor, panelElement);\n        return _this;\n    }\n    Headings.prototype._bindEvent = function (vditor, panelElement) {\n        var actionBtn = this.element.children[0];\n        actionBtn.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            // https://github.com/Vanessa219/vditor/issues/1391\n            clearTimeout(vditor.wysiwyg.afterRenderTimeoutId);\n            clearTimeout(vditor.ir.processTimeoutId);\n            clearTimeout(vditor.sv.processTimeoutId);\n            if (actionBtn.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            actionBtn.blur();\n            if (actionBtn.classList.contains(\"vditor-menu--current\")) {\n                if (vditor.currentMode === \"wysiwyg\") {\n                    removeHeading(vditor);\n                    afterRenderEvent(vditor);\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    process_processHeading(vditor, \"\");\n                }\n                actionBtn.classList.remove(\"vditor-menu--current\");\n            }\n            else {\n                hidePanel(vditor, [\"subToolbar\"]);\n                panelElement.style.display = \"block\";\n            }\n        });\n        for (var i = 0; i < 6; i++) {\n            panelElement.children.item(i).addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n                event.preventDefault();\n                if (vditor.currentMode === \"wysiwyg\") {\n                    setHeading(vditor, event.target.getAttribute(\"data-tag\"));\n                    afterRenderEvent(vditor);\n                    actionBtn.classList.add(\"vditor-menu--current\");\n                }\n                else if (vditor.currentMode === \"ir\") {\n                    process_processHeading(vditor, event.target.getAttribute(\"data-value\"));\n                    actionBtn.classList.add(\"vditor-menu--current\");\n                }\n                else {\n                    processHeading(vditor, event.target.getAttribute(\"data-value\"));\n                }\n                panelElement.style.display = \"none\";\n            });\n        }\n    };\n    return Headings;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Help.ts\nvar Help_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar Help = /** @class */ (function (_super) {\n    Help_extends(Help, _super);\n    function Help(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            vditor.tip.show(\"<div style=\\\"margin-bottom:14px;font-size: 14px;line-height: 22px;min-width:300px;max-width: 360px;display: flex;\\\">\\n<div style=\\\"margin-top: 14px;flex: 1\\\">\\n    <div>Markdown \\u4F7F\\u7528\\u6307\\u5357</div>\\n    <ul style=\\\"list-style: none\\\">\\n        <li><a href=\\\"https://ld246.com/article/1583308420519\\\" target=\\\"_blank\\\">\\u8BED\\u6CD5\\u901F\\u67E5\\u624B\\u518C</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1583129520165\\\" target=\\\"_blank\\\">\\u57FA\\u7840\\u8BED\\u6CD5</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1583305480675\\\" target=\\\"_blank\\\">\\u6269\\u5C55\\u8BED\\u6CD5</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1582778815353\\\" target=\\\"_blank\\\">\\u952E\\u76D8\\u5FEB\\u6377\\u952E</a></li>\\n    </ul>\\n</div>\\n<div style=\\\"margin-top: 14px;flex: 1\\\">\\n    <div>Vditor \\u652F\\u6301</div>\\n    <ul style=\\\"list-style: none\\\">\\n        <li><a href=\\\"https://github.com/Vanessa219/vditor/issues\\\" target=\\\"_blank\\\">Issues</a></li>\\n        <li><a href=\\\"https://ld246.com/tag/vditor\\\" target=\\\"_blank\\\">\\u5B98\\u65B9\\u8BA8\\u8BBA\\u533A</a></li>\\n        <li><a href=\\\"https://ld246.com/article/1549638745630\\\" target=\\\"_blank\\\">\\u5F00\\u53D1\\u624B\\u518C</a></li>\\n        <li><a href=\\\"https://ld246.com/guide/markdown\\\" target=\\\"_blank\\\">\\u6F14\\u793A\\u5730\\u5740</a></li>\\n    </ul>\\n</div></div>\", 0);\n        });\n        return _this;\n    }\n    return Help;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Indent.ts\nvar Indent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar Indent = /** @class */ (function (_super) {\n    Indent_extends(Indent, _super);\n    function Indent(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n            if (liElement) {\n                listIndent(vditor, liElement, range);\n            }\n        });\n        return _this;\n    }\n    return Indent;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Info.ts\nvar Info_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Info = /** @class */ (function (_super) {\n    Info_extends(Info, _super);\n    function Info(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            vditor.tip.show(\"<div style=\\\"max-width: 520px; font-size: 14px;line-height: 22px;margin-bottom: 14px;\\\">\\n<p style=\\\"text-align: center;margin: 14px 0\\\">\\n    <em>\\u4E0B\\u4E00\\u4EE3\\u7684 Markdown \\u7F16\\u8F91\\u5668\\uFF0C\\u4E3A\\u672A\\u6765\\u800C\\u6784\\u5EFA</em>\\n</p>\\n<div style=\\\"display: flex;margin-bottom: 14px;flex-wrap: wrap;align-items: center\\\">\\n    <img src=\\\"https://unpkg.com/vditor/dist/images/logo.png\\\" style=\\\"margin: 0 auto;height: 68px\\\"/>\\n    <div>&nbsp;&nbsp;</div>\\n    <div style=\\\"flex: 1;min-width: 250px\\\">\\n        Vditor \\u662F\\u4E00\\u6B3E\\u6D4F\\u89C8\\u5668\\u7AEF\\u7684 Markdown \\u7F16\\u8F91\\u5668\\uFF0C\\u652F\\u6301\\u6240\\u89C1\\u5373\\u6240\\u5F97\\u3001\\u5373\\u65F6\\u6E32\\u67D3\\uFF08\\u7C7B\\u4F3C Typora\\uFF09\\u548C\\u5206\\u5C4F\\u9884\\u89C8\\u6A21\\u5F0F\\u3002\\n        \\u5B83\\u4F7F\\u7528 TypeScript \\u5B9E\\u73B0\\uFF0C\\u652F\\u6301\\u539F\\u751F JavaScript \\u4EE5\\u53CA Vue\\u3001React\\u3001Angular \\u548C Svelte \\u7B49\\u6846\\u67B6\\u3002\\n    </div>\\n</div>\\n<div style=\\\"display: flex;flex-wrap: wrap;\\\">\\n    <ul style=\\\"list-style: none;flex: 1;min-width:148px\\\">\\n        <li>\\n        \\u9879\\u76EE\\u5730\\u5740\\uFF1A<a href=\\\"https://b3log.org/vditor\\\" target=\\\"_blank\\\">b3log.org/vditor</a>\\n        </li>\\n        <li>\\n        \\u5F00\\u6E90\\u534F\\u8BAE\\uFF1AMIT\\n        </li>\\n    </ul>\\n    <ul style=\\\"list-style: none;margin-right: 18px\\\">\\n        <li>\\n        \\u7EC4\\u4EF6\\u7248\\u672C\\uFF1AVditor v\".concat(constants/* VDITOR_VERSION */.H, \" / Lute v\").concat(Lute.Version, \"\\n        </li>\\n        <li>\\n        \\u8D5E\\u52A9\\u6350\\u8D60\\uFF1A<a href=\\\"https://ld246.com/sponsor\\\" target=\\\"_blank\\\">https://ld246.com/sponsor</a>\\n        </li>\\n    </ul>\\n</div>\\n</div>\"), 0);\n        });\n        return _this;\n    }\n    return Info;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/InsertAfter.ts\nvar InsertAfter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar InsertAfter = /** @class */ (function (_super) {\n    InsertAfter_extends(InsertAfter, _super);\n    function InsertAfter(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            insertEmptyBlock(vditor, \"afterend\");\n        });\n        return _this;\n    }\n    return InsertAfter;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/InsertBefore.ts\nvar InsertBefore_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar InsertBefore = /** @class */ (function (_super) {\n    InsertBefore_extends(InsertBefore, _super);\n    function InsertBefore(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            insertEmptyBlock(vditor, \"beforebegin\");\n        });\n        return _this;\n    }\n    return InsertBefore;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Outdent.ts\nvar Outdent_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\nvar Outdent = /** @class */ (function (_super) {\n    Outdent_extends(Outdent, _super);\n    function Outdent(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED) ||\n                vditor.currentMode === \"sv\") {\n                return;\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            var liElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"LI\");\n            if (liElement) {\n                listOutdent(vditor, liElement, range, liElement.parentElement);\n            }\n        });\n        return _this;\n    }\n    return Outdent;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Outline.ts\nvar Outline_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar Outline_Outline = /** @class */ (function (_super) {\n    Outline_extends(Outline, _super);\n    function Outline(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        if (vditor.options.outline) {\n            _this.element.firstElementChild.classList.add(\"vditor-menu--current\");\n        }\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            var btnElement = vditor.toolbar.elements.outline.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.options.outline.enable = !_this.element.firstElementChild.classList.contains(\"vditor-menu--current\");\n            vditor.outline.toggle(vditor, vditor.options.outline.enable);\n        });\n        return _this;\n    }\n    return Outline;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Preview.ts\nvar Preview_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar Preview_Preview = /** @class */ (function (_super) {\n    Preview_extends(Preview, _super);\n    function Preview(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Preview.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            var btnElement = _this.element.firstElementChild;\n            if (btnElement.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            var toolbars = constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"both\", \"edit-mode\", \"devtools\"]);\n            if (btnElement.classList.contains(\"vditor-menu--current\")) {\n                btnElement.classList.remove(\"vditor-menu--current\");\n                if (vditor.currentMode === \"sv\") {\n                    vditor.sv.element.style.display = \"block\";\n                    if (vditor.options.preview.mode === \"both\") {\n                        vditor.preview.element.style.display = \"block\";\n                    }\n                    else {\n                        vditor.preview.element.style.display = \"none\";\n                    }\n                }\n                else {\n                    vditor[vditor.currentMode].element.parentElement.style.display = \"block\";\n                    vditor.preview.element.style.display = \"none\";\n                }\n                enableToolbar(vditor.toolbar.elements, toolbars);\n                vditor.outline.render(vditor);\n            }\n            else {\n                disableToolbar(vditor.toolbar.elements, toolbars);\n                vditor.preview.element.style.display = \"block\";\n                if (vditor.currentMode === \"sv\") {\n                    vditor.sv.element.style.display = \"none\";\n                }\n                else {\n                    vditor[vditor.currentMode].element.parentElement.style.display = \"none\";\n                }\n                vditor.preview.render(vditor);\n                btnElement.classList.add(\"vditor-menu--current\");\n                hidePanel(vditor, [\"subToolbar\", \"hint\", \"popover\"]);\n                setTimeout(function () {\n                    vditor.outline.render(vditor);\n                }, vditor.options.preview.delay + 10);\n            }\n            setPadding(vditor);\n        });\n    };\n    return Preview;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/util/RecordMedia.ts\nvar RecordMedia = /** @class */ (function () {\n    function RecordMedia(e) {\n        this.SAMPLE_RATE = 5000; // 44100 suggested by demos;\n        this.isRecording = false;\n        this.readyFlag = false;\n        this.leftChannel = [];\n        this.rightChannel = [];\n        this.recordingLength = 0;\n        var context;\n        // creates the audio context\n        if (typeof AudioContext !== \"undefined\") {\n            context = new AudioContext();\n        }\n        else if (webkitAudioContext) {\n            context = new webkitAudioContext();\n        }\n        else {\n            return;\n        }\n        this.DEFAULT_SAMPLE_RATE = context.sampleRate;\n        // creates a gain node\n        var volume = context.createGain();\n        // creates an audio node from the microphone incoming stream\n        var audioInput = context.createMediaStreamSource(e);\n        // connect the stream to the gain node\n        audioInput.connect(volume);\n        /* From the spec: The size of the buffer controls how frequently the audioprocess event is\n         dispatched and how many sample-frames need to be processed each call.\n         Lower values for buffer size will result in a lower (better) latency.\n         Higher values will be necessary to avoid audio breakup and glitches */\n        this.recorder = context.createScriptProcessor(2048, 2, 1);\n        // The onaudioprocess event needs to be defined externally, so make sure it is not set:\n        this.recorder.onaudioprocess = null;\n        // we connect the recorder\n        volume.connect(this.recorder);\n        this.recorder.connect(context.destination);\n        this.readyFlag = true;\n    }\n    // Publicly accessible methods:\n    RecordMedia.prototype.cloneChannelData = function (leftChannelData, rightChannelData) {\n        this.leftChannel.push(new Float32Array(leftChannelData));\n        this.rightChannel.push(new Float32Array(rightChannelData));\n        this.recordingLength += 2048;\n    };\n    RecordMedia.prototype.startRecordingNewWavFile = function () {\n        if (this.readyFlag) {\n            this.isRecording = true;\n            this.leftChannel.length = this.rightChannel.length = 0;\n            this.recordingLength = 0;\n        }\n    };\n    RecordMedia.prototype.stopRecording = function () {\n        this.isRecording = false;\n    };\n    RecordMedia.prototype.buildWavFileBlob = function () {\n        // we flat the left and right channels down\n        var leftBuffer = this.mergeBuffers(this.leftChannel);\n        var rightBuffer = this.mergeBuffers(this.rightChannel);\n        // Interleave the left and right channels together:\n        var interleaved = new Float32Array(leftBuffer.length);\n        for (var i = 0; i < leftBuffer.length; ++i) {\n            interleaved[i] = 0.5 * (leftBuffer[i] + rightBuffer[i]);\n        }\n        // Downsample the audio data if necessary:\n        if (this.DEFAULT_SAMPLE_RATE > this.SAMPLE_RATE) {\n            interleaved = this.downSampleBuffer(interleaved, this.SAMPLE_RATE);\n        }\n        var totalByteCount = (44 + interleaved.length * 2);\n        var buffer = new ArrayBuffer(totalByteCount);\n        var view = new DataView(buffer);\n        // Build the RIFF chunk descriptor:\n        this.writeUTFBytes(view, 0, \"RIFF\");\n        view.setUint32(4, totalByteCount, true);\n        this.writeUTFBytes(view, 8, \"WAVE\");\n        // Build the FMT sub-chunk:\n        this.writeUTFBytes(view, 12, \"fmt \"); // subchunk1 ID is format\n        view.setUint32(16, 16, true); // The sub-chunk size is 16.\n        view.setUint16(20, 1, true); // The audio format is 1.\n        view.setUint16(22, 1, true); // Number of interleaved channels.\n        view.setUint32(24, this.SAMPLE_RATE, true); // Sample rate.\n        view.setUint32(28, this.SAMPLE_RATE * 2, true); // Byte rate.\n        view.setUint16(32, 2, true); // Block align\n        view.setUint16(34, 16, true); // Bits per sample.\n        // Build the data sub-chunk:\n        var subChunk2ByteCount = interleaved.length * 2;\n        this.writeUTFBytes(view, 36, \"data\");\n        view.setUint32(40, subChunk2ByteCount, true);\n        // Write the PCM samples to the view:\n        var lng = interleaved.length;\n        var index = 44;\n        var volume = 1;\n        for (var j = 0; j < lng; j++) {\n            view.setInt16(index, interleaved[j] * (0x7FFF * volume), true);\n            index += 2;\n        }\n        return new Blob([view], { type: \"audio/wav\" });\n    };\n    RecordMedia.prototype.downSampleBuffer = function (buffer, rate) {\n        if (rate === this.DEFAULT_SAMPLE_RATE) {\n            return buffer;\n        }\n        if (rate > this.DEFAULT_SAMPLE_RATE) {\n            // throw \"downsampling rate show be smaller than original sample rate\";\n            return buffer;\n        }\n        var sampleRateRatio = this.DEFAULT_SAMPLE_RATE / rate;\n        var newLength = Math.round(buffer.length / sampleRateRatio);\n        var result = new Float32Array(newLength);\n        var offsetResult = 0;\n        var offsetBuffer = 0;\n        while (offsetResult < result.length) {\n            var nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\n            var accum = 0;\n            var count = 0;\n            for (var i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i++) {\n                accum += buffer[i];\n                count++;\n            }\n            result[offsetResult] = accum / count;\n            offsetResult++;\n            offsetBuffer = nextOffsetBuffer;\n        }\n        return result;\n    };\n    RecordMedia.prototype.mergeBuffers = function (desiredChannelBuffer) {\n        var result = new Float32Array(this.recordingLength);\n        var offset = 0;\n        var lng = desiredChannelBuffer.length;\n        for (var i = 0; i < lng; ++i) {\n            var buffer = desiredChannelBuffer[i];\n            result.set(buffer, offset);\n            offset += buffer.length;\n        }\n        return result;\n    };\n    RecordMedia.prototype.writeUTFBytes = function (view, offset, value) {\n        var lng = value.length;\n        for (var i = 0; i < lng; i++) {\n            view.setUint8(offset + i, value.charCodeAt(i));\n        }\n    };\n    return RecordMedia;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Record.ts\nvar Record_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar Record = /** @class */ (function (_super) {\n    Record_extends(Record, _super);\n    function Record(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Record.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        var mediaRecorder;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            var editorElement = vditor[vditor.currentMode].element;\n            if (!mediaRecorder) {\n                navigator.mediaDevices.getUserMedia({ audio: true }).then(function (mediaStream) {\n                    mediaRecorder = new RecordMedia(mediaStream);\n                    mediaRecorder.recorder.onaudioprocess = function (e) {\n                        // Do nothing if not recording:\n                        if (!mediaRecorder.isRecording) {\n                            return;\n                        }\n                        // Copy the data from the input buffers;\n                        var left = e.inputBuffer.getChannelData(0);\n                        var right = e.inputBuffer.getChannelData(1);\n                        mediaRecorder.cloneChannelData(left, right);\n                    };\n                    mediaRecorder.startRecordingNewWavFile();\n                    vditor.tip.show(window.VditorI18n.recording);\n                    editorElement.setAttribute(\"contenteditable\", \"false\");\n                    _this.element.children[0].classList.add(\"vditor-menu--current\");\n                }).catch(function () {\n                    vditor.tip.show(window.VditorI18n[\"record-tip\"]);\n                });\n                return;\n            }\n            if (mediaRecorder.isRecording) {\n                mediaRecorder.stopRecording();\n                vditor.tip.hide();\n                var file = new File([mediaRecorder.buildWavFileBlob()], \"record\".concat((new Date()).getTime(), \".wav\"), { type: \"video/webm\" });\n                uploadFiles(vditor, [file]);\n                _this.element.children[0].classList.remove(\"vditor-menu--current\");\n            }\n            else {\n                vditor.tip.show(window.VditorI18n.recording);\n                editorElement.setAttribute(\"contenteditable\", \"false\");\n                mediaRecorder.startRecordingNewWavFile();\n                _this.element.children[0].classList.add(\"vditor-menu--current\");\n            }\n        });\n    };\n    return Record;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Redo.ts\nvar Redo_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Redo = /** @class */ (function (_super) {\n    Redo_extends(Redo, _super);\n    function Redo(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        disableToolbar({ redo: _this.element }, [\"redo\"]);\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.undo.redo(vditor);\n        });\n        return _this;\n    }\n    return Redo;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Undo.ts\nvar Undo_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Undo = /** @class */ (function (_super) {\n    Undo_extends(Undo, _super);\n    function Undo(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        disableToolbar({ undo: _this.element }, [\"undo\"]);\n        _this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            event.preventDefault();\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                return;\n            }\n            vditor.undo.undo(vditor);\n        });\n        return _this;\n    }\n    return Undo;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/Upload.ts\nvar Upload_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Upload_Upload = /** @class */ (function (_super) {\n    Upload_extends(Upload, _super);\n    function Upload(vditor, menuItem) {\n        var _this = _super.call(this, vditor, menuItem) || this;\n        var inputHTML = '<input type=\"file\"';\n        if (vditor.options.upload.multiple) {\n            inputHTML += ' multiple=\"multiple\"';\n        }\n        if (vditor.options.upload.accept) {\n            inputHTML += \" accept=\\\"\".concat(vditor.options.upload.accept, \"\\\"\");\n        }\n        _this.element.children[0].innerHTML = \"\".concat((menuItem.icon || '<svg><use xlink:href=\"#vditor-icon-upload\"></use></svg>')).concat(inputHTML, \">\");\n        _this._bindEvent(vditor);\n        return _this;\n    }\n    Upload.prototype._bindEvent = function (vditor) {\n        var _this = this;\n        this.element.children[0].addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                event.stopPropagation();\n                event.preventDefault();\n                return;\n            }\n        });\n        this.element.querySelector(\"input\").addEventListener(\"change\", function (event) {\n            if (_this.element.firstElementChild.classList.contains(constants/* Constants.CLASS_MENU_DISABLED */.g.CLASS_MENU_DISABLED)) {\n                event.stopPropagation();\n                event.preventDefault();\n                return;\n            }\n            if (event.target.files.length === 0) {\n                return;\n            }\n            uploadFiles(vditor, event.target.files, event.target);\n        });\n    };\n    return Upload;\n}(MenuItem));\n\n\n;// CONCATENATED MODULE: ./src/ts/toolbar/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Toolbar = /** @class */ (function () {\n    function Toolbar(vditor) {\n        var _this = this;\n        var options = vditor.options;\n        this.elements = {};\n        this.element = document.createElement(\"div\");\n        this.element.className = \"vditor-toolbar\";\n        options.toolbar.forEach(function (menuItem, i) {\n            var itemElement = _this.genItem(vditor, menuItem, i);\n            _this.element.appendChild(itemElement);\n            if (menuItem.toolbar) {\n                var panelElement_1 = document.createElement(\"div\");\n                panelElement_1.className = \"vditor-hint vditor-panel--arrow\";\n                panelElement_1.addEventListener((0,compatibility/* getEventName */.Le)(), function (event) {\n                    panelElement_1.style.display = \"none\";\n                });\n                menuItem.toolbar.forEach(function (subMenuItem, subI) {\n                    subMenuItem.level = 2;\n                    panelElement_1.appendChild(_this.genItem(vditor, subMenuItem, i + subI));\n                });\n                itemElement.appendChild(panelElement_1);\n                toggleSubMenu(vditor, panelElement_1, itemElement.children[0], 2);\n            }\n        });\n        if (vditor.options.toolbarConfig.hide) {\n            this.element.classList.add(\"vditor-toolbar--hide\");\n        }\n        if (vditor.options.toolbarConfig.pin) {\n            this.element.classList.add(\"vditor-toolbar--pin\");\n        }\n        if (vditor.options.counter.enable) {\n            vditor.counter = new Counter(vditor);\n            this.element.appendChild(vditor.counter.element);\n        }\n    }\n    Toolbar.prototype.updateConfig = function (vditor, options) {\n        vditor.options.toolbarConfig = Object.assign({\n            hide: false,\n            pin: false,\n        }, options);\n        if (vditor.options.toolbarConfig.hide) {\n            this.element.classList.add(\"vditor-toolbar--hide\");\n        }\n        else {\n            this.element.classList.remove(\"vditor-toolbar--hide\");\n        }\n        if (vditor.options.toolbarConfig.pin) {\n            this.element.classList.add(\"vditor-toolbar--pin\");\n        }\n        else {\n            this.element.classList.remove(\"vditor-toolbar--pin\");\n        }\n    };\n    Toolbar.prototype.genItem = function (vditor, menuItem, index) {\n        var menuItemObj;\n        switch (menuItem.name) {\n            case \"bold\":\n            case \"italic\":\n            case \"more\":\n            case \"strike\":\n            case \"line\":\n            case \"quote\":\n            case \"list\":\n            case \"ordered-list\":\n            case \"check\":\n            case \"code\":\n            case \"inline-code\":\n            case \"link\":\n            case \"table\":\n                menuItemObj = new MenuItem(vditor, menuItem);\n                break;\n            case \"emoji\":\n                menuItemObj = new Emoji(vditor, menuItem);\n                break;\n            case \"headings\":\n                menuItemObj = new Headings(vditor, menuItem);\n                break;\n            case \"|\":\n                menuItemObj = new Divider();\n                break;\n            case \"br\":\n                menuItemObj = new Br();\n                break;\n            case \"undo\":\n                menuItemObj = new Undo(vditor, menuItem);\n                break;\n            case \"redo\":\n                menuItemObj = new Redo(vditor, menuItem);\n                break;\n            case \"help\":\n                menuItemObj = new Help(vditor, menuItem);\n                break;\n            case \"both\":\n                menuItemObj = new Both(vditor, menuItem);\n                break;\n            case \"preview\":\n                menuItemObj = new Preview_Preview(vditor, menuItem);\n                break;\n            case \"fullscreen\":\n                menuItemObj = new Fullscreen(vditor, menuItem);\n                break;\n            case \"upload\":\n                menuItemObj = new Upload_Upload(vditor, menuItem);\n                break;\n            case \"record\":\n                menuItemObj = new Record(vditor, menuItem);\n                break;\n            case \"info\":\n                menuItemObj = new Info(vditor, menuItem);\n                break;\n            case \"edit-mode\":\n                menuItemObj = new EditMode(vditor, menuItem);\n                break;\n            case \"devtools\":\n                menuItemObj = new Devtools(vditor, menuItem);\n                break;\n            case \"outdent\":\n                menuItemObj = new Outdent(vditor, menuItem);\n                break;\n            case \"indent\":\n                menuItemObj = new Indent(vditor, menuItem);\n                break;\n            case \"outline\":\n                menuItemObj = new Outline_Outline(vditor, menuItem);\n                break;\n            case \"insert-after\":\n                menuItemObj = new InsertAfter(vditor, menuItem);\n                break;\n            case \"insert-before\":\n                menuItemObj = new InsertBefore(vditor, menuItem);\n                break;\n            case \"code-theme\":\n                menuItemObj = new CodeTheme(vditor, menuItem);\n                break;\n            case \"content-theme\":\n                menuItemObj = new ContentTheme(vditor, menuItem);\n                break;\n            case \"export\":\n                menuItemObj = new Export(vditor, menuItem);\n                break;\n            default:\n                menuItemObj = new Custom(vditor, menuItem);\n                break;\n        }\n        if (!menuItemObj) {\n            return;\n        }\n        var key = menuItem.name;\n        if (key === \"br\" || key === \"|\") {\n            key = key + index;\n        }\n        this.elements[key] = menuItemObj.element;\n        return menuItemObj.element;\n    };\n    return Toolbar;\n}());\n\n\n// EXTERNAL MODULE: ./node_modules/.pnpm/diff-match-patch@1.0.5/node_modules/diff-match-patch/index.js\nvar diff_match_patch = __webpack_require__(85);\n;// CONCATENATED MODULE: ./src/ts/undo/index.ts\n\n\n\n\n\n\n\n\n\nvar undo_Undo = /** @class */ (function () {\n    function Undo() {\n        this.stackSize = 50;\n        this.resetStack();\n        // @ts-ignore\n        this.dmp = new diff_match_patch();\n    }\n    Undo.prototype.clearStack = function (vditor) {\n        this.resetStack();\n        this.resetIcon(vditor);\n    };\n    Undo.prototype.resetIcon = function (vditor) {\n        if (!vditor.toolbar) {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        if (this[vditor.currentMode].redoStack.length !== 0) {\n            enableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n    };\n    Undo.prototype.undo = function (vditor) {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length < 2) {\n            return;\n        }\n        var state = this[vditor.currentMode].undoStack.pop();\n        if (!state) {\n            return;\n        }\n        this[vditor.currentMode].redoStack.push(state);\n        this.renderDiff(state, vditor);\n        this[vditor.currentMode].hasUndo = true;\n        // undo 操作后，需要关闭 hint\n        hidePanel(vditor, [\"hint\"]);\n    };\n    Undo.prototype.redo = function (vditor) {\n        if (vditor[vditor.currentMode].element.getAttribute(\"contenteditable\") === \"false\") {\n            return;\n        }\n        var state = this[vditor.currentMode].redoStack.pop();\n        if (!state) {\n            return;\n        }\n        this[vditor.currentMode].undoStack.push(state);\n        this.renderDiff(state, vditor, true);\n    };\n    Undo.prototype.recordFirstPosition = function (vditor, event) {\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        if (this[vditor.currentMode].undoStack.length !== 1 || this[vditor.currentMode].undoStack[0].length === 0 ||\n            this[vditor.currentMode].redoStack.length > 0) {\n            return;\n        }\n        if ((0,compatibility/* isFirefox */.vU)() && event.key === \"Backspace\") {\n            // Firefox 第一次删除无效\n            return;\n        }\n        if ((0,compatibility/* isSafari */.G6)()) {\n            // Safari keydown 在 input 之后，不需要重复记录历史\n            return;\n        }\n        var text = this.addCaret(vditor);\n        if (text.replace(\"<wbr>\", \"\").replace(\" vditor-ir__node--expand\", \"\")\n            !== this[vditor.currentMode].undoStack[0][0].diffs[0][1].replace(\"<wbr>\", \"\")) {\n            // 当还不没有存入 undo 栈时，按下 ctrl 后会覆盖 lastText\n            return;\n        }\n        this[vditor.currentMode].undoStack[0][0].diffs[0][1] = text;\n        this[vditor.currentMode].lastText = text;\n        // 不能添加 setSelectionFocus(cloneRange); 否则 windows chrome 首次输入会烂\n    };\n    Undo.prototype.addToUndoStack = function (vditor) {\n        // afterRenderEvent.ts 已经 debounce\n        var text = this.addCaret(vditor, true);\n        var diff = this.dmp.diff_main(text, this[vditor.currentMode].lastText, true);\n        var patchList = this.dmp.patch_make(text, this[vditor.currentMode].lastText, diff);\n        if (patchList.length === 0 && this[vditor.currentMode].undoStack.length > 0) {\n            return;\n        }\n        this[vditor.currentMode].lastText = text;\n        this[vditor.currentMode].undoStack.push(patchList);\n        if (this[vditor.currentMode].undoStack.length > this.stackSize) {\n            this[vditor.currentMode].undoStack.shift();\n        }\n        if (this[vditor.currentMode].hasUndo) {\n            this[vditor.currentMode].redoStack = [];\n            this[vditor.currentMode].hasUndo = false;\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n    };\n    Undo.prototype.renderDiff = function (state, vditor, isRedo) {\n        if (isRedo === void 0) { isRedo = false; }\n        var text;\n        if (isRedo) {\n            var redoPatchList = this.dmp.patch_deepCopy(state).reverse();\n            redoPatchList.forEach(function (patch) {\n                patch.diffs.forEach(function (diff) {\n                    diff[0] = -diff[0];\n                });\n            });\n            text = this.dmp.patch_apply(redoPatchList, this[vditor.currentMode].lastText)[0];\n        }\n        else {\n            text = this.dmp.patch_apply(state, this[vditor.currentMode].lastText)[0];\n        }\n        this[vditor.currentMode].lastText = text;\n        vditor[vditor.currentMode].element.innerHTML = text;\n        if (vditor.currentMode !== \"sv\") {\n            vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n                .forEach(function (blockElement) {\n                processCodeRender(blockElement, vditor);\n            });\n        }\n        if (!vditor[vditor.currentMode].element.querySelector(\"wbr\")) {\n            // Safari 第一次输入没有光标，需手动定位到结尾\n            var range = getSelection().getRangeAt(0);\n            range.setEndBefore(vditor[vditor.currentMode].element);\n            range.collapse(false);\n        }\n        else {\n            (0,selection/* setRangeByWbr */.ib)(vditor[vditor.currentMode].element, vditor[vditor.currentMode].element.ownerDocument.createRange());\n            scrollCenter(vditor);\n        }\n        renderToc(vditor);\n        execAfterRender(vditor, {\n            enableAddUndoStack: false,\n            enableHint: false,\n            enableInput: true,\n        });\n        highlightToolbar(vditor);\n        vditor[vditor.currentMode].element.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='2']\"))\n            .forEach(function (item) {\n            processCodeRender(item, vditor);\n        });\n        if (this[vditor.currentMode].undoStack.length > 1) {\n            enableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"undo\"]);\n        }\n        if (this[vditor.currentMode].redoStack.length !== 0) {\n            enableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n        else {\n            disableToolbar(vditor.toolbar.elements, [\"redo\"]);\n        }\n    };\n    Undo.prototype.resetStack = function () {\n        this.ir = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n        this.sv = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n        this.wysiwyg = {\n            hasUndo: false,\n            lastText: \"\",\n            redoStack: [],\n            undoStack: [],\n        };\n    };\n    Undo.prototype.addCaret = function (vditor, setFocus) {\n        if (setFocus === void 0) { setFocus = false; }\n        var cloneRange;\n        if (getSelection().rangeCount !== 0 && !vditor[vditor.currentMode].element.querySelector(\"wbr\")) {\n            var range = getSelection().getRangeAt(0);\n            if (vditor[vditor.currentMode].element.contains(range.startContainer)) {\n                cloneRange = range.cloneRange();\n                var wbrElement = document.createElement(\"span\");\n                wbrElement.className = \"vditor-wbr\";\n                range.insertNode(wbrElement);\n            }\n        }\n        // 移除数学公式、echart 渲染 https://github.com/siyuan-note/siyuan/issues/537\n        var cloneElement = vditor.ir.element.cloneNode(true);\n        cloneElement.querySelectorAll(\".vditor-\".concat(vditor.currentMode, \"__preview[data-render='1']\"))\n            .forEach(function (item) {\n            if (!item.firstElementChild) {\n                return;\n            }\n            if (item.firstElementChild.classList.contains(\"language-echarts\") ||\n                item.firstElementChild.classList.contains(\"language-plantuml\") ||\n                item.firstElementChild.classList.contains(\"language-mindmap\")) {\n                item.firstElementChild.removeAttribute(\"_echarts_instance_\");\n                item.firstElementChild.removeAttribute(\"data-processed\");\n                item.firstElementChild.innerHTML = item.previousElementSibling.firstElementChild.innerHTML;\n                item.setAttribute(\"data-render\", \"2\");\n            }\n            else if (item.firstElementChild.classList.contains(\"language-math\")) {\n                item.setAttribute(\"data-render\", \"2\");\n                item.firstElementChild.textContent = item.firstElementChild.getAttribute(\"data-math\");\n                item.firstElementChild.removeAttribute(\"data-math\");\n            }\n        });\n        var text = vditor[vditor.currentMode].element.innerHTML;\n        vditor[vditor.currentMode].element.querySelectorAll(\".vditor-wbr\").forEach(function (item) {\n            item.remove();\n            // 使用 item.outerHTML = \"\" 会产生 https://github.com/Vanessa219/vditor/pull/686;\n        });\n        if (setFocus && cloneRange) {\n            (0,selection/* setSelectionFocus */.Hc)(cloneRange);\n        }\n        return text.replace('<span class=\"vditor-wbr\"></span>', \"<wbr>\");\n    };\n    return Undo;\n}());\n\n\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(2);\n;// CONCATENATED MODULE: ./src/ts/util/Options.ts\n\n\nvar Options = /** @class */ (function () {\n    function Options(options) {\n        this.defaultOptions = {\n            rtl: false,\n            after: undefined,\n            cache: {\n                enable: true,\n            },\n            cdn: constants/* Constants.CDN */.g.CDN,\n            classes: {\n                preview: \"\",\n            },\n            comment: {\n                enable: false,\n            },\n            counter: {\n                enable: false,\n                type: \"markdown\",\n            },\n            customRenders: [],\n            debugger: false,\n            fullscreen: {\n                index: 90,\n            },\n            height: \"auto\",\n            hint: {\n                delay: 200,\n                emoji: {\n                    \"+1\": \"👍\",\n                    \"-1\": \"👎\",\n                    \"confused\": \"😕\",\n                    \"eyes\": \"👀️\",\n                    \"heart\": \"❤️\",\n                    \"rocket\": \"🚀️\",\n                    \"smile\": \"😄\",\n                    \"tada\": \"🎉️\",\n                },\n                emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n                extend: [],\n                parse: true,\n            },\n            icon: \"ant\",\n            lang: \"zh_CN\",\n            mode: \"ir\",\n            outline: {\n                enable: false,\n                position: \"left\",\n            },\n            placeholder: \"\",\n            preview: {\n                actions: [\"desktop\", \"tablet\", \"mobile\", \"mp-wechat\", \"zhihu\"],\n                delay: 1000,\n                hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n                markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n                math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n                maxWidth: 800,\n                mode: \"both\",\n                theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n                render: {\n                    media: {\n                        enable: true,\n                    }\n                }\n            },\n            link: {\n                isOpen: true,\n            },\n            image: {\n                isPreview: true,\n            },\n            resize: {\n                enable: false,\n                position: \"bottom\",\n            },\n            theme: \"classic\",\n            toolbar: [\n                \"emoji\",\n                \"headings\",\n                \"bold\",\n                \"italic\",\n                \"strike\",\n                \"link\",\n                \"|\",\n                \"list\",\n                \"ordered-list\",\n                \"check\",\n                \"outdent\",\n                \"indent\",\n                \"|\",\n                \"quote\",\n                \"line\",\n                \"code\",\n                \"inline-code\",\n                \"insert-before\",\n                \"insert-after\",\n                \"|\",\n                \"upload\",\n                \"record\",\n                \"table\",\n                \"|\",\n                \"undo\",\n                \"redo\",\n                \"|\",\n                \"fullscreen\",\n                \"edit-mode\",\n                {\n                    name: \"more\",\n                    toolbar: [\n                        \"both\",\n                        \"code-theme\",\n                        \"content-theme\",\n                        \"export\",\n                        \"outline\",\n                        \"preview\",\n                        \"devtools\",\n                        \"info\",\n                        \"help\",\n                    ],\n                },\n            ],\n            toolbarConfig: {\n                hide: false,\n                pin: false,\n            },\n            typewriterMode: false,\n            undoDelay: 800,\n            upload: {\n                extraData: {},\n                fieldName: \"file[]\",\n                filename: function (name) { return name.replace(/\\W/g, \"\"); },\n                linkToImgUrl: \"\",\n                max: 10 * 1024 * 1024,\n                multiple: true,\n                url: \"\",\n                withCredentials: false,\n            },\n            value: \"\",\n            width: \"auto\",\n        };\n        this.options = options;\n    }\n    Options.prototype.merge = function () {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n        if (this.options) {\n            if (this.options.toolbar) {\n                this.options.toolbar = this.mergeToolbar(this.options.toolbar);\n            }\n            else {\n                this.options.toolbar = this.mergeToolbar(this.defaultOptions.toolbar);\n            }\n            if ((_b = (_a = this.options.preview) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.list) {\n                this.defaultOptions.preview.theme.list = this.options.preview.theme.list;\n            }\n            if ((_e = (_d = (_c = this.options.preview) === null || _c === void 0 ? void 0 : _c.render) === null || _d === void 0 ? void 0 : _d.media) === null || _e === void 0 ? void 0 : _e.enable) {\n                this.defaultOptions.preview.render.media.enable = this.options.preview.render.media.enable;\n            }\n            if ((_f = this.options.hint) === null || _f === void 0 ? void 0 : _f.emoji) {\n                this.defaultOptions.hint.emoji = this.options.hint.emoji;\n            }\n            if (this.options.comment) {\n                this.defaultOptions.comment = this.options.comment;\n            }\n            if (this.options.cdn) {\n                if (!((_h = (_g = this.options.preview) === null || _g === void 0 ? void 0 : _g.theme) === null || _h === void 0 ? void 0 : _h.path)) {\n                    this.defaultOptions.preview.theme.path = \"\".concat(this.options.cdn, \"/dist/css/content-theme\");\n                }\n                if (!((_j = this.options.hint) === null || _j === void 0 ? void 0 : _j.emojiPath)) {\n                    this.defaultOptions.hint.emojiPath = \"\".concat(this.options.cdn, \"/dist/images/emoji\");\n                }\n            }\n        }\n        var mergedOptions = (0,merge/* merge */.T)(this.defaultOptions, this.options);\n        if (mergedOptions.cache.enable && !mergedOptions.cache.id) {\n            throw new Error(\"need options.cache.id, see https://ld246.com/article/1549638745630#options\");\n        }\n        return mergedOptions;\n    };\n    Options.prototype.mergeToolbar = function (toolbar) {\n        var _this = this;\n        var toolbarItem = [\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-export\"></use></svg>',\n                name: \"export\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘E\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-emoji\"></use></svg>',\n                name: \"emoji\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘H\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-headings\"></use></svg>',\n                name: \"headings\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘B\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-bold\"></use></svg>',\n                name: \"bold\",\n                prefix: \"**\",\n                suffix: \"**\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘I\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-italic\"></use></svg>',\n                name: \"italic\",\n                prefix: \"*\",\n                suffix: \"*\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘D\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-strike\"></use></svg>',\n                name: \"strike\",\n                prefix: \"~~\",\n                suffix: \"~~\",\n                tipPosition: \"ne\",\n            },\n            {\n                hotkey: \"⌘K\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-link\"></use></svg>',\n                name: \"link\",\n                prefix: \"[\",\n                suffix: \"](https://)\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘L\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-list\"></use></svg>',\n                name: \"list\",\n                prefix: \"* \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘O\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-ordered-list\"></use></svg>',\n                name: \"ordered-list\",\n                prefix: \"1. \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘J\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-check\"></use></svg>',\n                name: \"check\",\n                prefix: \"* [ ] \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘I\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-outdent\"></use></svg>',\n                name: \"outdent\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘O\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-indent\"></use></svg>',\n                name: \"indent\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘;\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-quote\"></use></svg>',\n                name: \"quote\",\n                prefix: \"> \",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘H\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-line\"></use></svg>',\n                name: \"line\",\n                prefix: \"---\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘U\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-code\"></use></svg>',\n                name: \"code\",\n                prefix: \"```\",\n                suffix: \"\\n```\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘G\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-inline-code\"></use></svg>',\n                name: \"inline-code\",\n                prefix: \"`\",\n                suffix: \"`\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘B\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-before\"></use></svg>',\n                name: \"insert-before\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⇧⌘E\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-after\"></use></svg>',\n                name: \"insert-after\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-upload\"></use></svg>',\n                name: \"upload\",\n                tipPosition: \"n\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-record\"></use></svg>',\n                name: \"record\",\n                tipPosition: \"n\",\n            },\n            {\n                hotkey: \"⌘M\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-table\"></use></svg>',\n                name: \"table\",\n                prefix: \"| col1\",\n                suffix: \" | col2 | col3 |\\n| --- | --- | --- |\\n|  |  |  |\\n|  |  |  |\",\n                tipPosition: \"n\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                hotkey: \"⌘Z\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-undo\"></use></svg>',\n                name: \"undo\",\n                tipPosition: \"nw\",\n            },\n            {\n                hotkey: \"⌘Y\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-redo\"></use></svg>',\n                name: \"redo\",\n                tipPosition: \"nw\",\n            },\n            {\n                name: \"|\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-more\"></use></svg>',\n                name: \"more\",\n                tipPosition: \"e\",\n            },\n            {\n                hotkey: \"⌘'\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-fullscreen\"></use></svg>',\n                name: \"fullscreen\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-edit\"></use></svg>',\n                name: \"edit-mode\",\n                tipPosition: \"nw\",\n            },\n            {\n                hotkey: \"⌘P\",\n                icon: '<svg><use xlink:href=\"#vditor-icon-both\"></use></svg>',\n                name: \"both\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-preview\"></use></svg>',\n                name: \"preview\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-align-center\"></use></svg>',\n                name: \"outline\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-theme\"></use></svg>',\n                name: \"content-theme\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-code-theme\"></use></svg>',\n                name: \"code-theme\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-bug\"></use></svg>',\n                name: \"devtools\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-info\"></use></svg>',\n                name: \"info\",\n                tipPosition: \"nw\",\n            },\n            {\n                icon: '<svg><use xlink:href=\"#vditor-icon-help\"></use></svg>',\n                name: \"help\",\n                tipPosition: \"nw\",\n            },\n            {\n                name: \"br\",\n            },\n        ];\n        var toolbarResult = [];\n        toolbar.forEach(function (menuItem) {\n            var currentMenuItem = menuItem;\n            toolbarItem.forEach(function (defaultMenuItem) {\n                if (typeof menuItem === \"string\" &&\n                    defaultMenuItem.name === menuItem) {\n                    currentMenuItem = defaultMenuItem;\n                }\n                if (typeof menuItem === \"object\" &&\n                    defaultMenuItem.name === menuItem.name) {\n                    currentMenuItem = Object.assign({}, defaultMenuItem, menuItem);\n                }\n            });\n            if (menuItem.toolbar) {\n                currentMenuItem.toolbar = _this.mergeToolbar(menuItem.toolbar);\n            }\n            toolbarResult.push(currentMenuItem);\n        });\n        return toolbarResult;\n    };\n    return Options;\n}());\n\n\n;// CONCATENATED MODULE: ./src/ts/wysiwyg/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WYSIWYG = /** @class */ (function () {\n    function WYSIWYG(vditor) {\n        var _this = this;\n        this.composingLock = false;\n        this.commentIds = [];\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-wysiwyg\";\n        divElement.innerHTML = \"<pre class=\\\"vditor-reset\\\" placeholder=\\\"\".concat(vditor.options.placeholder, \"\\\"\\n contenteditable=\\\"true\\\" spellcheck=\\\"false\\\"></pre>\\n<div class=\\\"vditor-panel vditor-panel--none\\\"></div>\\n<div class=\\\"vditor-panel vditor-panel--none\\\">\\n    <button type=\\\"button\\\" aria-label=\\\"\").concat(window.VditorI18n.comment, \"\\\" class=\\\"vditor-icon vditor-tooltipped vditor-tooltipped__n\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-comment\\\"></use></svg>\\n    </button>\\n</div>\");\n        this.element = divElement.firstElementChild;\n        this.popover = divElement.firstElementChild.nextElementSibling;\n        this.selectPopover = divElement.lastElementChild;\n        this.bindEvent(vditor);\n        focusEvent(vditor, this.element);\n        dblclickEvent(vditor, this.element);\n        blurEvent(vditor, this.element);\n        hotkeyEvent(vditor, this.element);\n        selectEvent(vditor, this.element);\n        dropEvent(vditor, this.element);\n        copyEvent(vditor, this.element, this.copy);\n        cutEvent(vditor, this.element, this.copy);\n        if (vditor.options.comment.enable) {\n            this.selectPopover.querySelector(\"button\").onclick = function () {\n                var id = Lute.NewNodeID();\n                var range = getSelection().getRangeAt(0);\n                var rangeClone = range.cloneRange();\n                var contents = range.extractContents();\n                var blockStartElement;\n                var blockEndElement;\n                var removeStart = false;\n                var removeEnd = false;\n                contents.childNodes.forEach(function (item, index) {\n                    var wrap = false;\n                    if (item.nodeType === 3) {\n                        wrap = true;\n                    }\n                    else if (!item.classList.contains(\"vditor-comment\")) {\n                        wrap = true;\n                    }\n                    else if (item.classList.contains(\"vditor-comment\")) {\n                        item.setAttribute(\"data-cmtids\", item.getAttribute(\"data-cmtids\") + \" \" + id);\n                    }\n                    if (wrap) {\n                        if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\"\n                            && index === 0 && rangeClone.startOffset > 0) {\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                            blockStartElement = item;\n                        }\n                        else if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\"\n                            && index === contents.childNodes.length - 1\n                            && rangeClone.endOffset < rangeClone.endContainer.textContent.length) {\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                            blockEndElement = item;\n                        }\n                        else if (item.nodeType !== 3 && item.getAttribute(\"data-block\") === \"0\") {\n                            if (index === 0) {\n                                removeStart = true;\n                            }\n                            else if (index === contents.childNodes.length - 1) {\n                                removeEnd = true;\n                            }\n                            item.innerHTML =\n                                \"<span class=\\\"vditor-comment\\\" data-cmtids=\\\"\".concat(id, \"\\\">\").concat(item.innerHTML, \"</span>\");\n                        }\n                        else {\n                            var commentElement = document.createElement(\"span\");\n                            commentElement.classList.add(\"vditor-comment\");\n                            commentElement.setAttribute(\"data-cmtids\", id);\n                            item.parentNode.insertBefore(commentElement, item);\n                            commentElement.appendChild(item);\n                        }\n                    }\n                });\n                var startElement = (0,hasClosest/* hasClosestBlock */.F9)(rangeClone.startContainer);\n                if (startElement) {\n                    if (blockStartElement) {\n                        startElement.insertAdjacentHTML(\"beforeend\", blockStartElement.innerHTML);\n                        blockStartElement.remove();\n                    }\n                    else if (startElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && removeStart) {\n                        startElement.remove();\n                    }\n                }\n                var endElement = (0,hasClosest/* hasClosestBlock */.F9)(rangeClone.endContainer);\n                if (endElement) {\n                    if (blockEndElement) {\n                        endElement.insertAdjacentHTML(\"afterbegin\", blockEndElement.innerHTML);\n                        blockEndElement.remove();\n                    }\n                    else if (endElement.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\" && removeEnd) {\n                        endElement.remove();\n                    }\n                }\n                range.insertNode(contents);\n                vditor.options.comment.add(id, range.toString(), _this.getComments(vditor, true));\n                afterRenderEvent(vditor, {\n                    enableAddUndoStack: true,\n                    enableHint: false,\n                    enableInput: false,\n                });\n                _this.hideComment();\n            };\n        }\n    }\n    WYSIWYG.prototype.getComments = function (vditor, getData) {\n        var _this = this;\n        if (getData === void 0) { getData = false; }\n        if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable) {\n            this.commentIds = [];\n            this.element.querySelectorAll(\".vditor-comment\").forEach(function (item) {\n                _this.commentIds =\n                    _this.commentIds.concat(item.getAttribute(\"data-cmtids\").split(\" \"));\n            });\n            this.commentIds = Array.from(new Set(this.commentIds));\n            var comments_1 = [];\n            if (getData) {\n                this.commentIds.forEach(function (id) {\n                    comments_1.push({\n                        id: id,\n                        top: _this.element.querySelector(\".vditor-comment[data-cmtids=\\\"\".concat(id, \"\\\"]\")).offsetTop,\n                    });\n                });\n                return comments_1;\n            }\n        }\n        else {\n            return [];\n        }\n    };\n    WYSIWYG.prototype.triggerRemoveComment = function (vditor) {\n        var difference = function (a, b) {\n            var s = new Set(b);\n            return a.filter(function (x) { return !s.has(x); });\n        };\n        if (vditor.currentMode === \"wysiwyg\" && vditor.options.comment.enable && vditor.wysiwyg.commentIds.length > 0) {\n            var oldIds = JSON.parse(JSON.stringify(this.commentIds));\n            this.getComments(vditor);\n            var removedIds = difference(oldIds, this.commentIds);\n            if (removedIds.length > 0) {\n                vditor.options.comment.remove(removedIds);\n            }\n        }\n    };\n    WYSIWYG.prototype.showComment = function () {\n        var position = (0,selection/* getCursorPosition */.Ny)(this.element);\n        this.selectPopover.setAttribute(\"style\", \"left:\".concat(position.left, \"px;display:block;top:\").concat(Math.max(-8, position.top - 21), \"px\"));\n    };\n    WYSIWYG.prototype.hideComment = function () {\n        this.selectPopover.setAttribute(\"style\", \"display:none\");\n    };\n    WYSIWYG.prototype.unbindListener = function () {\n        window.removeEventListener(\"scroll\", this.scrollListener);\n    };\n    WYSIWYG.prototype.copy = function (event, vditor) {\n        var range = getSelection().getRangeAt(0);\n        if (range.toString() === \"\") {\n            return;\n        }\n        event.stopPropagation();\n        event.preventDefault();\n        var codeElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"CODE\");\n        var codeEndElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.endContainer, \"CODE\");\n        if (codeElement && codeEndElement && codeEndElement.isSameNode(codeElement)) {\n            var codeText = \"\";\n            if (codeElement.parentElement.tagName === \"PRE\") {\n                codeText = range.toString();\n            }\n            else {\n                codeText = \"`\" + range.toString() + \"`\";\n            }\n            event.clipboardData.setData(\"text/plain\", codeText);\n            event.clipboardData.setData(\"text/html\", \"\");\n            return;\n        }\n        var aElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.startContainer, \"A\");\n        var aEndElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(range.endContainer, \"A\");\n        if (aElement && aEndElement && aEndElement.isSameNode(aElement)) {\n            var aTitle = aElement.getAttribute(\"title\") || \"\";\n            if (aTitle) {\n                aTitle = \" \\\"\".concat(aTitle, \"\\\"\");\n            }\n            event.clipboardData.setData(\"text/plain\", \"[\".concat(range.toString(), \"](\").concat(aElement.getAttribute(\"href\")).concat(aTitle, \")\"));\n            event.clipboardData.setData(\"text/html\", \"\");\n            return;\n        }\n        var tempElement = document.createElement(\"div\");\n        tempElement.appendChild(range.cloneContents());\n        event.clipboardData.setData(\"text/plain\", vditor.lute.VditorDOM2Md(tempElement.innerHTML).trim());\n        event.clipboardData.setData(\"text/html\", \"\");\n    };\n    WYSIWYG.prototype.bindEvent = function (vditor) {\n        var _this = this;\n        this.unbindListener();\n        window.addEventListener(\"scroll\", this.scrollListener = function () {\n            hidePanel(vditor, [\"hint\"]);\n            if (_this.popover.style.display !== \"block\" || _this.selectPopover.style.display !== \"block\") {\n                return;\n            }\n            var top = parseInt(_this.popover.getAttribute(\"data-top\"), 10);\n            if (vditor.options.height !== \"auto\") {\n                if (vditor.options.toolbarConfig.pin && vditor.toolbar.element.getBoundingClientRect().top === 0) {\n                    var popoverTop = Math.max(window.scrollY - vditor.element.offsetTop - 8, Math.min(top - vditor.wysiwyg.element.scrollTop, _this.element.clientHeight - 21)) + \"px\";\n                    if (_this.popover.style.display === \"block\") {\n                        _this.popover.style.top = popoverTop;\n                    }\n                    if (_this.selectPopover.style.display === \"block\") {\n                        _this.selectPopover.style.top = popoverTop;\n                    }\n                }\n                return;\n            }\n            else if (!vditor.options.toolbarConfig.pin) {\n                return;\n            }\n            var popoverTop1 = Math.max(top, (window.scrollY - vditor.element.offsetTop - 8)) + \"px\";\n            if (_this.popover.style.display === \"block\") {\n                _this.popover.style.top = popoverTop1;\n            }\n            if (_this.selectPopover.style.display === \"block\") {\n                _this.selectPopover.style.top = popoverTop1;\n            }\n        });\n        this.element.addEventListener(\"scroll\", function () {\n            hidePanel(vditor, [\"hint\"]);\n            if (vditor.options.comment && vditor.options.comment.enable && vditor.options.comment.scroll) {\n                vditor.options.comment.scroll(vditor.wysiwyg.element.scrollTop);\n            }\n            if (_this.popover.style.display !== \"block\") {\n                return;\n            }\n            var top = parseInt(_this.popover.getAttribute(\"data-top\"), 10) - vditor.wysiwyg.element.scrollTop;\n            var max = -8;\n            if (vditor.options.toolbarConfig.pin && vditor.toolbar.element.getBoundingClientRect().top === 0) {\n                max = window.scrollY - vditor.element.offsetTop + max;\n            }\n            var topPx = Math.max(max, Math.min(top, _this.element.clientHeight - 21)) + \"px\";\n            _this.popover.style.top = topPx;\n            _this.selectPopover.style.top = topPx;\n        });\n        this.element.addEventListener(\"paste\", function (event) {\n            paste(vditor, event, {\n                pasteCode: function (code) {\n                    var range = (0,selection/* getEditorRange */.zh)(vditor);\n                    var node = document.createElement(\"template\");\n                    node.innerHTML = code;\n                    range.insertNode(node.content.cloneNode(true));\n                    var blockElement = (0,hasClosest/* hasClosestByAttribute */.a1)(range.startContainer, \"data-block\", \"0\");\n                    if (blockElement) {\n                        blockElement.outerHTML = vditor.lute.SpinVditorDOM(blockElement.outerHTML);\n                    }\n                    else {\n                        vditor.wysiwyg.element.innerHTML = vditor.lute.SpinVditorDOM(vditor.wysiwyg.element.innerHTML);\n                    }\n                    (0,selection/* setRangeByWbr */.ib)(vditor.wysiwyg.element, range);\n                },\n            });\n        });\n        // 中文处理\n        this.element.addEventListener(\"compositionstart\", function () {\n            _this.composingLock = true;\n        });\n        this.element.addEventListener(\"compositionend\", function (event) {\n            var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(getSelection().getRangeAt(0).startContainer);\n            if (headingElement && headingElement.textContent === \"\") {\n                // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150\n                renderToc(vditor);\n                return;\n            }\n            if (!(0,compatibility/* isFirefox */.vU)()) {\n                input_input(vditor, getSelection().getRangeAt(0).cloneRange(), event);\n            }\n            _this.composingLock = false;\n        });\n        this.element.addEventListener(\"input\", function (event) {\n            if (event.inputType === \"deleteByDrag\" || event.inputType === \"insertFromDrop\") {\n                // https://github.com/Vanessa219/vditor/issues/801 编辑器内容拖拽问题\n                return;\n            }\n            if (_this.preventInput) {\n                _this.preventInput = false;\n                afterRenderEvent(vditor);\n                return;\n            }\n            if (_this.composingLock || event.data === \"‘\" || event.data === \"“\" || event.data === \"《\") {\n                afterRenderEvent(vditor);\n                return;\n            }\n            var range = getSelection().getRangeAt(0);\n            var blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n            if (!blockElement) {\n                // 没有被块元素包裹\n                modifyPre(vditor, range);\n                blockElement = (0,hasClosest/* hasClosestBlock */.F9)(range.startContainer);\n            }\n            if (!blockElement) {\n                return;\n            }\n            // 前后空格处理\n            var startOffset = (0,selection/* getSelectPosition */.im)(blockElement, vditor.wysiwyg.element, range).start;\n            // 开始可以输入空格\n            var startSpace = true;\n            for (var i = startOffset - 1; i > blockElement.textContent.substr(0, startOffset).lastIndexOf(\"\\n\"); i--) {\n                if (blockElement.textContent.charAt(i) !== \" \" &&\n                    // 多个 tab 前删除不形成代码块 https://github.com/Vanessa219/vditor/issues/162 1\n                    blockElement.textContent.charAt(i) !== \"\\t\") {\n                    startSpace = false;\n                    break;\n                }\n            }\n            if (startOffset === 0) {\n                startSpace = false;\n            }\n            // 结尾可以输入空格\n            var endSpace = true;\n            for (var i = startOffset - 1; i < blockElement.textContent.length; i++) {\n                if (blockElement.textContent.charAt(i) !== \" \" && blockElement.textContent.charAt(i) !== \"\\n\") {\n                    endSpace = false;\n                    break;\n                }\n            }\n            var headingElement = (0,hasClosestByHeadings/* hasClosestByHeadings */.W)(getSelection().getRangeAt(0).startContainer);\n            if (headingElement && headingElement.textContent === \"\") {\n                // heading 为空删除 https://github.com/Vanessa219/vditor/issues/150\n                renderToc(vditor);\n                headingElement.remove();\n            }\n            if ((startSpace && blockElement.getAttribute(\"data-type\") !== \"code-block\")\n                || endSpace || isHeadingMD(blockElement.innerHTML) ||\n                (isHrMD(blockElement.innerHTML) && blockElement.previousElementSibling)) {\n                if (typeof vditor.options.input === \"function\") {\n                    vditor.options.input(getMarkdown(vditor));\n                }\n                return;\n            }\n            // https://github.com/Vanessa219/vditor/issues/1565\n            if (event.inputType === \"insertParagraph\" && _this.element.innerHTML === '<p><br></p><p><br></p>') {\n                blockElement.previousElementSibling.remove();\n            }\n            input_input(vditor, range, event);\n        });\n        this.element.addEventListener(\"click\", function (event) {\n            if (event.target.tagName === \"INPUT\") {\n                var checkElement = event.target;\n                if (checkElement.checked) {\n                    checkElement.setAttribute(\"checked\", \"checked\");\n                }\n                else {\n                    checkElement.removeAttribute(\"checked\");\n                }\n                _this.preventInput = true;\n                afterRenderEvent(vditor);\n                return;\n            }\n            if (event.target.tagName === \"IMG\" &&\n                // plantuml 图片渲染不进行提示\n                !event.target.parentElement.classList.contains(\"vditor-wysiwyg__preview\")) {\n                if (event.target.getAttribute(\"data-type\") === \"link-ref\") {\n                    genLinkRefPopover(vditor, event.target);\n                }\n                else {\n                    genImagePopover(event, vditor);\n                }\n                return;\n            }\n            // 打开链接\n            var a = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"A\");\n            if (a) {\n                if (vditor.options.link.click) {\n                    vditor.options.link.click(a);\n                }\n                else if (vditor.options.link.isOpen) {\n                    window.open(a.getAttribute(\"href\"));\n                }\n                event.preventDefault();\n                return;\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            if (event.target.isEqualNode(_this.element) && _this.element.lastElementChild && range.collapsed) {\n                var lastRect = _this.element.lastElementChild.getBoundingClientRect();\n                if (event.y > lastRect.top + lastRect.height) {\n                    if (_this.element.lastElementChild.tagName === \"P\" &&\n                        _this.element.lastElementChild.textContent.trim().replace(constants/* Constants.ZWSP */.g.ZWSP, \"\") === \"\") {\n                        range.selectNodeContents(_this.element.lastElementChild);\n                        range.collapse(false);\n                    }\n                    else {\n                        _this.element.insertAdjacentHTML(\"beforeend\", \"<p data-block=\\\"0\\\">\".concat(constants/* Constants.ZWSP */.g.ZWSP, \"<wbr></p>\"));\n                        (0,selection/* setRangeByWbr */.ib)(_this.element, range);\n                    }\n                }\n            }\n            highlightToolbarWYSIWYG(vditor);\n            // 点击后光标落于预览区，需展开代码块\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(event.target, \"vditor-wysiwyg__preview\");\n            if (!previewElement) {\n                previewElement =\n                    (0,hasClosest/* hasClosestByClassName */.fb)((0,selection/* getEditorRange */.zh)(vditor).startContainer, \"vditor-wysiwyg__preview\");\n            }\n            if (previewElement) {\n                showCode(previewElement, vditor);\n            }\n            clickToc(event, vditor);\n        });\n        this.element.addEventListener(\"keyup\", function (event) {\n            if (event.isComposing || (0,compatibility/* isCtrl */.yl)(event)) {\n                return;\n            }\n            // 除 md 处理、cell 内换行、table 添加新行/列、代码块语言切换、block render 换行、跳出/逐层跳出 blockquote、h6 换行、\n            // 任务列表换行、软换行外需在换行时调整文档位置\n            if (event.key === \"Enter\") {\n                scrollCenter(vditor);\n            }\n            if ((event.key === \"Backspace\" || event.key === \"Delete\") &&\n                vditor.wysiwyg.element.innerHTML !== \"\" && vditor.wysiwyg.element.childNodes.length === 1 &&\n                vditor.wysiwyg.element.firstElementChild && vditor.wysiwyg.element.firstElementChild.tagName === \"P\"\n                && vditor.wysiwyg.element.firstElementChild.childElementCount === 0\n                && (vditor.wysiwyg.element.textContent === \"\" || vditor.wysiwyg.element.textContent === \"\\n\")) {\n                // 为空时显示 placeholder\n                vditor.wysiwyg.element.innerHTML = \"\";\n            }\n            var range = (0,selection/* getEditorRange */.zh)(vditor);\n            if (event.key === \"Backspace\") {\n                // firefox headings https://github.com/Vanessa219/vditor/issues/211\n                if ((0,compatibility/* isFirefox */.vU)() && range.startContainer.textContent === \"\\n\" && range.startOffset === 1) {\n                    range.startContainer.textContent = \"\";\n                }\n            }\n            // 没有被块元素包裹\n            modifyPre(vditor, range);\n            highlightToolbarWYSIWYG(vditor);\n            if (event.key !== \"ArrowDown\" && event.key !== \"ArrowRight\" && event.key !== \"Backspace\"\n                && event.key !== \"ArrowLeft\" && event.key !== \"ArrowUp\") {\n                return;\n            }\n            if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n                vditor.hint.render(vditor);\n            }\n            // 上下左右，删除遇到块预览的处理\n            var previewElement = (0,hasClosest/* hasClosestByClassName */.fb)(range.startContainer, \"vditor-wysiwyg__preview\");\n            if (!previewElement && range.startContainer.nodeType !== 3 && range.startOffset > 0) {\n                // table 前删除遇到代码块\n                var blockRenderElement = range.startContainer;\n                if (blockRenderElement.classList.contains(\"vditor-wysiwyg__block\")) {\n                    previewElement = blockRenderElement.lastElementChild;\n                }\n            }\n            if (!previewElement) {\n                return;\n            }\n            var previousElement = previewElement.previousElementSibling;\n            if (previousElement.style.display === \"none\") {\n                if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n                    showCode(previewElement, vditor);\n                }\n                else {\n                    showCode(previewElement, vditor, false);\n                }\n                return;\n            }\n            var codeElement = previewElement.previousElementSibling;\n            if (codeElement.tagName === \"PRE\") {\n                codeElement = codeElement.firstElementChild;\n            }\n            if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n                var blockRenderElement = previewElement.parentElement;\n                var nextNode = getRenderElementNextNode(blockRenderElement);\n                if (nextNode && nextNode.nodeType !== 3) {\n                    // 下一节点依旧为代码渲染块\n                    var nextRenderElement = nextNode.querySelector(\".vditor-wysiwyg__preview\");\n                    if (nextRenderElement) {\n                        showCode(nextRenderElement, vditor);\n                        return;\n                    }\n                }\n                // 跳过渲染块，光标移动到下一个节点\n                if (nextNode.nodeType === 3) {\n                    // inline\n                    while (nextNode.textContent.length === 0 && nextNode.nextSibling) {\n                        // https://github.com/Vanessa219/vditor/issues/100 2\n                        nextNode = nextNode.nextSibling;\n                    }\n                    range.setStart(nextNode, 1);\n                }\n                else {\n                    // block\n                    range.setStart(nextNode.firstChild, 0);\n                }\n            }\n            else {\n                range.selectNodeContents(codeElement);\n                range.collapse(false);\n            }\n        });\n    };\n    return WYSIWYG;\n}());\n\n\n;// CONCATENATED MODULE: ./src/index.ts\nvar src_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function (_super) {\n    src_extends(Vditor, _super);\n    /**\n     * @param id 要挂载 Vditor 的元素或者元素 ID。\n     * @param options Vditor 参数\n     */\n    function Vditor(id, options) {\n        var _this = _super.call(this) || this;\n        _this.version = constants/* VDITOR_VERSION */.H;\n        if (typeof id === \"string\") {\n            if (!options) {\n                options = {\n                    cache: {\n                        id: \"vditor\".concat(id),\n                    },\n                };\n            }\n            else if (!options.cache) {\n                options.cache = { id: \"vditor\".concat(id) };\n            }\n            else if (!options.cache.id) {\n                options.cache.id = \"vditor\".concat(id);\n            }\n            if (!document.getElementById(id)) {\n                _this.showErrorTip(\"Failed to get element by id: \".concat(id));\n                return _this;\n            }\n            id = document.getElementById(id);\n        }\n        var getOptions = new Options(options);\n        var mergedOptions = getOptions.merge();\n        // 支持自定义国际化\n        if (!mergedOptions.i18n) {\n            if (![\"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) {\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            }\n            else {\n                var i18nScriptPrefix = \"vditorI18nScript\";\n                var i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1).then(function () {\n                    _this.init(id, mergedOptions);\n                }).catch(function (error) {\n                    _this.showErrorTip(\"GET \".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js net::ERR_ABORTED 404 (Not Found)\"));\n                });\n            }\n        }\n        else {\n            window.VditorI18n = mergedOptions.i18n;\n            _this.init(id, mergedOptions);\n        }\n        return _this;\n    }\n    Vditor.prototype.showErrorTip = function (error) {\n        var tip = new Tip();\n        document.body.appendChild(tip.element);\n        tip.show(error, 0);\n    };\n    Vditor.prototype.updateToolbarConfig = function (options) {\n        this.vditor.toolbar.updateConfig(this.vditor, options);\n    };\n    /** 设置主题 */\n    Vditor.prototype.setTheme = function (theme, contentTheme, codeTheme, contentThemePath) {\n        this.vditor.options.theme = theme;\n        setTheme(this.vditor);\n        if (contentTheme) {\n            this.vditor.options.preview.theme.current = contentTheme;\n            (0,setContentTheme/* setContentTheme */.Z)(contentTheme, contentThemePath || this.vditor.options.preview.theme.path);\n        }\n        if (codeTheme) {\n            this.vditor.options.preview.hljs.style = codeTheme;\n            (0,setCodeTheme/* setCodeTheme */.Y)(codeTheme, this.vditor.options.cdn);\n        }\n    };\n    /** 获取 Markdown 内容 */\n    Vditor.prototype.getValue = function () {\n        return getMarkdown(this.vditor);\n    };\n    /** 获取编辑器当前编辑模式 */\n    Vditor.prototype.getCurrentMode = function () {\n        return this.vditor.currentMode;\n    };\n    /** 聚焦到编辑器 */\n    Vditor.prototype.focus = function () {\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.focus();\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            this.vditor.wysiwyg.element.focus();\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.element.focus();\n        }\n    };\n    /** 让编辑器失焦 */\n    Vditor.prototype.blur = function () {\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.blur();\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            this.vditor.wysiwyg.element.blur();\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.element.blur();\n        }\n    };\n    /** 禁用编辑器 */\n    Vditor.prototype.disabled = function () {\n        hidePanel(this.vditor, [\"subToolbar\", \"hint\", \"popover\"]);\n        disableToolbar(this.vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"undo\", \"redo\", \"fullscreen\", \"edit-mode\"]));\n        this.vditor[this.vditor.currentMode].element.setAttribute(\"contenteditable\", \"false\");\n    };\n    /** 解除编辑器禁用 */\n    Vditor.prototype.enable = function () {\n        enableToolbar(this.vditor.toolbar.elements, constants/* Constants.EDIT_TOOLBARS.concat */.g.EDIT_TOOLBARS.concat([\"undo\", \"redo\", \"fullscreen\", \"edit-mode\"]));\n        this.vditor.undo.resetIcon(this.vditor);\n        this.vditor[this.vditor.currentMode].element.setAttribute(\"contenteditable\", \"true\");\n    };\n    /** 返回选中的字符串 */\n    Vditor.prototype.getSelection = function () {\n        if (this.vditor.currentMode === \"wysiwyg\") {\n            return getSelectText(this.vditor.wysiwyg.element);\n        }\n        else if (this.vditor.currentMode === \"sv\") {\n            return getSelectText(this.vditor.sv.element);\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            return getSelectText(this.vditor.ir.element);\n        }\n    };\n    /** 设置预览区域内容 */\n    Vditor.prototype.renderPreview = function (value) {\n        this.vditor.preview.render(this.vditor, value);\n    };\n    /** 获取焦点位置 */\n    Vditor.prototype.getCursorPosition = function () {\n        return (0,selection/* getCursorPosition */.Ny)(this.vditor[this.vditor.currentMode].element);\n    };\n    /** 上传是否还在进行中 */\n    Vditor.prototype.isUploading = function () {\n        return this.vditor.upload.isUploading;\n    };\n    /** 清除缓存 */\n    Vditor.prototype.clearCache = function () {\n        localStorage.removeItem(this.vditor.options.cache.id);\n    };\n    /** 禁用缓存 */\n    Vditor.prototype.disabledCache = function () {\n        this.vditor.options.cache.enable = false;\n    };\n    /** 启用缓存 */\n    Vditor.prototype.enableCache = function () {\n        if (!this.vditor.options.cache.id) {\n            throw new Error(\"need options.cache.id, see https://ld246.com/article/1549638745630#options\");\n        }\n        this.vditor.options.cache.enable = true;\n    };\n    /** HTML 转 md */\n    Vditor.prototype.html2md = function (value) {\n        return this.vditor.lute.HTML2Md(value);\n    };\n    /** markdown 转 JSON 输出 */\n    Vditor.prototype.exportJSON = function (value) {\n        return this.vditor.lute.RenderJSON(value);\n    };\n    /** 获取 HTML */\n    Vditor.prototype.getHTML = function () {\n        return getHTML(this.vditor);\n    };\n    /** 消息提示。time 为 0 将一直显示 */\n    Vditor.prototype.tip = function (text, time) {\n        this.vditor.tip.show(text, time);\n    };\n    /** 设置预览模式 */\n    Vditor.prototype.setPreviewMode = function (mode) {\n        setPreviewMode(mode, this.vditor);\n    };\n    /** 删除选中内容 */\n    Vditor.prototype.deleteValue = function () {\n        if (window.getSelection().isCollapsed) {\n            return;\n        }\n        document.execCommand(\"delete\", false);\n    };\n    /** 更新选中内容 */\n    Vditor.prototype.updateValue = function (value) {\n        document.execCommand(\"insertHTML\", false, value);\n    };\n    /** 在焦点处插入内容，并默认进行 Markdown 渲染 */\n    Vditor.prototype.insertValue = function (value, render) {\n        if (render === void 0) { render = true; }\n        var range = (0,selection/* getEditorRange */.zh)(this.vditor);\n        range.collapse(true);\n        var tmpElement = document.createElement(\"template\");\n        tmpElement.innerHTML = value;\n        range.insertNode(tmpElement.content.cloneNode(true));\n        range.collapse(false);\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.preventInput = true;\n            if (render) {\n                inputEvent(this.vditor);\n            }\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            // 由于 https://github.com/Vanessa219/vditor/issues/1566 不能使用 this.vditor.wysiwyg.preventInput = true;\n            if (render) {\n                input_input(this.vditor, getSelection().getRangeAt(0));\n            }\n        }\n        else if (this.vditor.currentMode === \"ir\") {\n            this.vditor.ir.preventInput = true;\n            if (render) {\n                input(this.vditor, getSelection().getRangeAt(0), true);\n            }\n        }\n    };\n    /** 设置编辑器内容 */\n    Vditor.prototype.setValue = function (markdown, clearStack) {\n        var _this = this;\n        if (clearStack === void 0) { clearStack = false; }\n        if (this.vditor.currentMode === \"sv\") {\n            this.vditor.sv.element.innerHTML = \"<div data-block='0'>\".concat(this.vditor.lute.SpinVditorSVDOM(markdown), \"</div>\");\n            processAfterRender(this.vditor, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        else if (this.vditor.currentMode === \"wysiwyg\") {\n            renderDomByMd(this.vditor, markdown, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        else {\n            this.vditor.ir.element.innerHTML = this.vditor.lute.Md2VditorIRDOM(markdown);\n            this.vditor.ir.element\n                .querySelectorAll(\".vditor-ir__preview[data-render='2']\")\n                .forEach(function (item) {\n                processCodeRender(item, _this.vditor);\n            });\n            process_processAfterRender(this.vditor, {\n                enableAddUndoStack: true,\n                enableHint: false,\n                enableInput: false,\n            });\n        }\n        this.vditor.outline.render(this.vditor);\n        if (!markdown) {\n            hidePanel(this.vditor, [\"emoji\", \"headings\", \"submenu\", \"hint\"]);\n            if (this.vditor.wysiwyg.popover) {\n                this.vditor.wysiwyg.popover.style.display = \"none\";\n            }\n            this.clearCache();\n        }\n        if (clearStack) {\n            this.clearStack();\n        }\n    };\n    /** 清空 undo & redo 栈 */\n    Vditor.prototype.clearStack = function () {\n        this.vditor.undo.clearStack(this.vditor);\n        this.vditor.undo.addToUndoStack(this.vditor);\n    };\n    /** 销毁编辑器 */\n    Vditor.prototype.destroy = function () {\n        this.vditor.element.innerHTML = this.vditor.originalInnerHTML;\n        this.vditor.element.classList.remove(\"vditor\");\n        this.vditor.element.removeAttribute(\"style\");\n        var iconScript = document.getElementById(\"vditorIconScript\");\n        if (iconScript) {\n            iconScript.remove();\n        }\n        this.clearCache();\n        UIUnbindListener();\n        this.vditor.wysiwyg.unbindListener();\n    };\n    /** 获取评论 ID */\n    Vditor.prototype.getCommentIds = function () {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return [];\n        }\n        return this.vditor.wysiwyg.getComments(this.vditor, true);\n    };\n    /** 高亮评论 */\n    Vditor.prototype.hlCommentIds = function (ids) {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var hlItem = function (item) {\n            item.classList.remove(\"vditor-comment--hover\");\n            ids.forEach(function (id) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(id) > -1) {\n                    item.classList.add(\"vditor-comment--hover\");\n                }\n            });\n        };\n        this.vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment\")\n            .forEach(function (item) {\n            hlItem(item);\n        });\n        if (this.vditor.preview.element.style.display !== \"none\") {\n            this.vditor.preview.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                hlItem(item);\n            });\n        }\n    };\n    /** 取消评论高亮 */\n    Vditor.prototype.unHlCommentIds = function (ids) {\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var unHlItem = function (item) {\n            ids.forEach(function (id) {\n                if (item.getAttribute(\"data-cmtids\").indexOf(id) > -1) {\n                    item.classList.remove(\"vditor-comment--hover\");\n                }\n            });\n        };\n        this.vditor.wysiwyg.element\n            .querySelectorAll(\".vditor-comment\")\n            .forEach(function (item) {\n            unHlItem(item);\n        });\n        if (this.vditor.preview.element.style.display !== \"none\") {\n            this.vditor.preview.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                unHlItem(item);\n            });\n        }\n    };\n    /** 删除评论 */\n    Vditor.prototype.removeCommentIds = function (removeIds) {\n        var _this = this;\n        if (this.vditor.currentMode !== \"wysiwyg\") {\n            return;\n        }\n        var removeItem = function (item, removeId) {\n            var ids = item.getAttribute(\"data-cmtids\").split(\" \");\n            ids.find(function (id, index) {\n                if (id === removeId) {\n                    ids.splice(index, 1);\n                    return true;\n                }\n            });\n            if (ids.length === 0) {\n                item.outerHTML = item.innerHTML;\n                (0,selection/* getEditorRange */.zh)(_this.vditor).collapse(true);\n            }\n            else {\n                item.setAttribute(\"data-cmtids\", ids.join(\" \"));\n            }\n        };\n        removeIds.forEach(function (removeId) {\n            _this.vditor.wysiwyg.element\n                .querySelectorAll(\".vditor-comment\")\n                .forEach(function (item) {\n                removeItem(item, removeId);\n            });\n            if (_this.vditor.preview.element.style.display !== \"none\") {\n                _this.vditor.preview.element\n                    .querySelectorAll(\".vditor-comment\")\n                    .forEach(function (item) {\n                    removeItem(item, removeId);\n                });\n            }\n        });\n        afterRenderEvent(this.vditor, {\n            enableAddUndoStack: true,\n            enableHint: false,\n            enableInput: false,\n        });\n    };\n    Vditor.prototype.init = function (id, mergedOptions) {\n        var _this = this;\n        this.vditor = {\n            currentMode: mergedOptions.mode,\n            element: id,\n            hint: new Hint(mergedOptions.hint.extend),\n            lute: undefined,\n            options: mergedOptions,\n            originalInnerHTML: id.innerHTML,\n            outline: new Outline(window.VditorI18n.outline),\n            tip: new Tip(),\n        };\n        this.vditor.sv = new Editor(this.vditor);\n        this.vditor.undo = new undo_Undo();\n        this.vditor.wysiwyg = new WYSIWYG(this.vditor);\n        this.vditor.ir = new IR(this.vditor);\n        this.vditor.toolbar = new Toolbar(this.vditor);\n        if (mergedOptions.resize.enable) {\n            this.vditor.resize = new Resize(this.vditor);\n        }\n        if (this.vditor.toolbar.elements.devtools) {\n            this.vditor.devtools = new DevTools();\n        }\n        if (mergedOptions.upload.url || mergedOptions.upload.handler) {\n            this.vditor.upload = new Upload();\n        }\n        (0,addScript/* addScript */.G)(mergedOptions._lutePath ||\n            \"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n            _this.vditor.lute = (0,setLute/* setLute */.X)({\n                autoSpace: _this.vditor.options.preview.markdown.autoSpace,\n                gfmAutoLink: _this.vditor.options.preview.markdown.gfmAutoLink,\n                codeBlockPreview: _this.vditor.options.preview.markdown\n                    .codeBlockPreview,\n                emojiSite: _this.vditor.options.hint.emojiPath,\n                emojis: _this.vditor.options.hint.emoji,\n                fixTermTypo: _this.vditor.options.preview.markdown.fixTermTypo,\n                footnotes: _this.vditor.options.preview.markdown.footnotes,\n                headingAnchor: false,\n                inlineMathDigit: _this.vditor.options.preview.math.inlineDigit,\n                linkBase: _this.vditor.options.preview.markdown.linkBase,\n                linkPrefix: _this.vditor.options.preview.markdown.linkPrefix,\n                listStyle: _this.vditor.options.preview.markdown.listStyle,\n                mark: _this.vditor.options.preview.markdown.mark,\n                mathBlockPreview: _this.vditor.options.preview.markdown\n                    .mathBlockPreview,\n                paragraphBeginningSpace: _this.vditor.options.preview.markdown\n                    .paragraphBeginningSpace,\n                sanitize: _this.vditor.options.preview.markdown.sanitize,\n                toc: _this.vditor.options.preview.markdown.toc,\n            });\n            _this.vditor.preview = new Preview(_this.vditor);\n            initUI(_this.vditor);\n            if (mergedOptions.after) {\n                mergedOptions.after();\n            }\n            if (mergedOptions.icon) {\n                // 防止初始化 2 个编辑器时加载 2 次\n                (0,addScript/* addScriptSync */.J)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\");\n            }\n        });\n    };\n    return Vditor;\n}(method[\"default\"]));\n/* harmony default export */ const src = (Vditor);\n\n})();\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/graphviz/full.render.js",
    "content": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\n*/\n(function(global) {\n  var Module = function(Module) {\n    Module = Module || {};\n  var Module=typeof Module!==\"undefined\"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=(function(status,toThrow){throw toThrow});Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename)}return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process[\"on\"](\"unhandledRejection\",(function(reason,p){process[\"exit\"](1)}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){Module[\"read\"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module[\"readBinary\"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}Module[\"setWindowTitle\"]=(function(title){document.title=title})}Module[\"print\"]=typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null;Module[\"printErr\"]=typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||Module[\"print\"];Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}var JSfuncs={\"stackSave\":(function(){stackSave()}),\"stackRestore\":(function(){stackRestore()}),\"arrayToC\":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType===\"string\")ret=Pointer_stringify(ret);if(stack!==0){stackRestore(stack)}return ret}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module[\"buffer\"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath(\"/\",PATH.dirname(path));FS.writeFile(PATH.join(\"/\",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+194160;__ATINIT__.push();memoryInitializer=\"data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAoC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEEBANgAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAABw6AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEAkOwAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJA////////73/////////vf////////+//////////7/8AAAAAAAD4PzMzMzMzM9M/PAAAAAAAAACamZmZmZmpPwEAAAAAAAAAAQAAAAAAAAAAAAAAAADwPwEAAAAAAAAAAgAAAAAAAAAAAAAAAADwPwIAAAAAAAAAAwAAAAAAAAAAAAAAAADgPwMAAAAAAAAABAAAAAAAAAAAAAAAAADwPwQAAAAAAAAABQAAAAAAAAAzMzMzMzPzPwUAAAAAAAAABgAAAAAAAACamZmZmZnpPwYAAAAAAAAABwAAAAAAAAAAAAAAAADwPwcAAAAAAAAACAAAAAAAAAAAAAAAAADgPwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAMzMzMzMz078AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqQVQAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAgGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgGZAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAgGZAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAAAAQAAAAAAAAAAAAAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/JXUCmggb2j8AAAAAAADgPwAAAAAAAOA/LNSa5h2n6j9q3nGKjuToP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAOA/XdxGA3gL4j8AAAAAAADQP1ioNc07TtU/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRP13cRgN4C+I/XdxGA3gL4j9d3EYDeAviPw1xrIvbaNw/ZF3cRgN47T/Sb18HzhnnPxB6Nqs+V+U/EHo2qz5X5T/Sb18HzhnnP3gLJCh+jOM/tRX7y+7J4T/Sb18HzhnnP9JvXwfOGec/WKg1zTtO1T+IhVrTvOPYP9JvXwfOGec/eAskKH6M4z/EQq1p3nHsP9JvXwfOGec/0m9fB84Z5z+1FfvL7snhP9JvXwfOGec/EHo2qz5X5T+1FfvL7snhP3gLJCh+jOM/0m9fB84Z5z/Sb18HzhnnP4Y41sVtNO4/0m9fB84Z5z/Sb18HzhnnP3gLJCh+jOM/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/pgpGJXUC3j8AAAAAAADgP1ioNc07TtU/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/AAAAAAAA4D8NcayL22jcP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgP9O84xQdydE/07zjFB3J0T8AAAAAAADgP9O84xQdydE/at5xio7k6D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgP1ioNc07TtU/iIVa07zj2D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA4D8NcayL22jcP/RsVn2utt4/ETY8vVKWyT/0bFZ9rrbePzsBTYQNT+E/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9YqDXNO07VPwAAAAAAAOA/AAAAAAAA4D8+6Nms+lzFPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/gnNGlPYGxz8NcayL22jcPwAAAAAAAOA/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADQPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8H8BZIUPzcP6K0N/jCZNY/WKg1zTtO1T8NcayL22jcPw1xrIvbaNw/AAAAAAAA4D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA0D8NcayL22jcPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA8D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP8RCrWnecew/AAAAAAAA0D9/2T15WKjRPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/eAskKH6M4z/Sb18HzhnnP8RCrWnecew/E/JBz2bV0z8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/EHo2qz5X5T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP/RsVn2uttY/tRX7y+7J4T+1FfvL7snhP8RCrWnecew/EHo2qz5X5T/129eBc0bMP1ioNc07TtU/WKg1zTtO1T+IhVrTvOPYPwFNhA1Pr+I/07zjFB3J0T9YqDXNO07VP9O84xQdydE/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP9O84xQdydE/07zjFB3J0T8BTYQNT6/iPwFNhA1Pr+I/AU2EDU+v4j+1FfvL7snhP8xdS8gHPfA/EHo2qz5X5T8QejarPlflP9JvXwfOGec/0m9fB84Z5z8QejarPlflP3gLJCh+jOM/at5xio7k6D/Sb18HzhnnP9O84xQdydE/AAAAAAAA4D8QejarPlflP7UV+8vuyeE/LNSa5h2n6j/Sb18HzhnnP2recYqO5Og/EHo2qz5X5T9q3nGKjuToP9JvXwfOGec/EHo2qz5X5T94CyQofozjP9JvXwfOGec/EHo2qz5X5T+GONbFbTTuPxB6Nqs+V+U/EHo2qz5X5T94CyQofozjP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP6YKRiV1At4/tRX7y+7J4T9Iv30dOGfMP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADgP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP7UV+8vuyeE/tRX7y+7J4T9Iv30dOGfMP0i/fR04Z8w/AAAAAAAA4D9Iv30dOGfMPyzUmuYdp+o/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T9YqDXNO07VPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8Cmggbnl7VP+C+DpwzotA/ApoIG55e1T8BTYQNT6/iP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/WKg1zTtO1T+1FfvL7snhP7UV+8vuyeE/PujZrPpcxT+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhPx04Z0Rpb8g/WKg1zTtO1T+1FfvL7snhP1ioNc07TtU/WKg1zTtO1T8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP9O84xQdydE/5x2n6Egu4T+itDf4wmTWP0i/fR04Z8w/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/AAAAAAAA8D8AAAAAAADwP9O84xQdydE/eAskKH6M4z/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAPA/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T8AAAAAAADwP9O84xQdydE/6pWyDHGs1z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP7UV+8vuyeE/at5xio7k6D8AAAAAAADwP5jdk4eFWtc/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP8RCrWnecew/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/SL99HThnzD94CyQofozjP4Y41sVtNO4/eAskKH6M4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP1GgT+RJ0g5AtMh2vp86NcA6It+l1CXVv/OCPkeaLoo/n+V5cHfW+b9+/RAbLJzmP5bs2AjE68w/zc6idyrg0D+w479AECDtv62h1F5E29g/O6F85lGWdj/TbnD5eoR7P4HMzqJ3KuS/0a3X9KCgyD9q3zcZsD+EP77KkBle/4Q/HJYGflTDxL+lSSno9uIjQKnZA63AkME/CMSQQZNpiT/6RJ4kXTPQvwHwmTYtwl4/DZx9L8+Ulz+JtfgUAOOJP+WpWEY0y7G/jwDJz6Fnpr9ctcb7zLSIP02kj1Q6s5A/5scEoWHWoL/HaWccE/eCvyp/a+UtcFy/5FdiVAiadT/R8YdVcgS3P5XUCWgiPDPAZCMQr+t3EMCnIarwZ3jHP9r/AGvVrsE/TihEwCFU97+qSIWxhSD1P51oVyHlJ/Y/TS7GwDqOzT9Zayi1F9HcvwM/qmG/J8w/pkdTPZl/2j+2gTtQpzyuP1FM3gAz37m/9XaV/9oLpj/UpTW8D/aUPx+tILws3JA/KCzxgLLJI0AjWuFMAoq3P0ijZVGWKX8/u7SG98Gekz8XqHtTR32gvyErruBtlIs/M3PchNYetb+geISJ9fyPP2k1JO6x9JG/uM0zel6/aj+SPq2iPzTNv36w58ZPPpi/ByObUC3HpD8+GMJ7WLmRvy18fa1LjcY/AAAAQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNQAAAAAAAPC/VAQBAOgqAAADAAAAEC0AAAMAAADoLwAAAwAAALAwAAADAAAAADIAAAMAAAB4NQAAAwAAALQ4AAADAAAAxC4AAAMAAAB8OQAAAwAAAIQ6AAADAAAAED8AAAMAAAA0PQAAAAAAANQsAAAAAAAAwC8AAAAAAAAQMAAAAAAAANgxAAAAAAAAKDIAAAAAAACMOAAAAAAAAGAuAAAAAAAAVDkAAAAAAABcOgAAAAAAAOg+AAAAAAAADD0AAAQAAAA4PwAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAQAAAAEAAAADAAAAAAAAAAAAAAAAzQIAEM0CACDNAgAwzQIAQM0CAFDNAgBgzQIAcM0CABDNAgAQzQIAUM0CAFDNAgAfAAAAPwAAAH8AAAAAAAAA0HkBAAEAAACoKwAAaAAAAAQAAABtCAEAAQAAACAsAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAUBAAEAAAAAAAAA4AAAAAAAAAAQBQEAAQAAAAAAAADgAAAAAQAAABcFAQABAAAAAAAAAKgAAAACAAAAIQUBAAEAAAAAAAAA4AAAAAMAAAArBQEAAQAAAAAAAADgAAAABAAAADkFAQABAAAAAAAAAOAAAAAFAAAAQwUBAAEAAAAAAAAA4AAAAAYAAABQBQEAAQAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcggBAAEAAADELQAAGAEAAAEAAAB3CAEAAQAAAMQtAAAYAQAAAgAAAH0IAQABAAAAxC0AABgBAAADAAAAhggBAAEAAADELQAAGAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAIAQABAAAAAAAAAHABAAABAAAAmggBAAEAAAAAAAAAcAEAAAIAAAClCAEAAQAAAAAAAAA4AQAAAwAAALMIAQABAAAAAAAAADgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAwAAAANAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAYAAAACAAAAAgAAAAcAAAACAAAAAAAAAFgMAgBd9QEA7vYBAC79AQAlBAIAZAgCAOQLAgD1CwIAAAAAAPoIAQABAAAAKC8AAKgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+CAEAAQAAAAAAAADIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgkBAAEAAAA4MAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAD4KAQABAAAAAAAAACACAAACAAAASAoBAAEAAAAAAAAAWAIAAAAAAABRCgEAAQAAAAAAAABYAgAAAwAAAFoKAQABAAAAAAAAAFgCAAAAAAAAZAoBAAEAAAAAAAAAIAIAAAMAAABwCgEAAQAAAAAAAAAgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAASAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAVAAAAFgAAABcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAMAAAAJAAAAAwAAAAMAAAAKAAAABAAAAAAAAABYDAIAXfUBAC79AQDu9gEAZAgCACUEAgD1CwIA5AsCAAAAAAAAAAAALQwBAP////88MQAAkAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAMAQD/////AAAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWgQEAAQAAAFAyAADoAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGQAAABoAAAAAAAAABAAAAAAAAAAbAAAAHAAAAB0AAAAeAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAgAAAAIQAAACIAAAACAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAMAAAABQAAAAQAAAANAAAABQAAAAMAAAAtEAEAOxABAFEQAQDr7QIAXxABAG4QAQBzEAEAkRABAOvtAgCjEAEA0xABAOvtAgDxEAEAGREBACcRAQBWEQEAihEBAJsRAQDAEQEA4xEBAOkRAQAFEgEAIhIBAD0SAQBeEgEAeBIBAJoSAQC5EgEA3xIBAPcSAQAXEwEANBMBAFgTAQBkEwEA6+0CAG8TAQCVEwEAuRMBAN8TAQDr7QIAFRQBAC0UAQA6FAEAaRQBAGQTAQDr7QIAdhQBAH8UAQCgFAEA2xQBACYVAQB6FQEAnBUBALEVAQDIFQEA3hUBAPYVAQDr7QIADBYBACcWAQBLFgEAbxYBAJQWAQDr7QIAtRYBAM8WAQDhFgEA7hYBAPsWAQAPFwEAHhcBACYXAQA7FwEASRcBAIcXAQCSFwEAZBMBAOvtAgCYFwEApBcBALMXAQDjEQEA6+0CAMYXAQDvFwEADRgBAB0YAQAuGAEANRgBAEQYAQBUGAEAmBgBAJ8YAQDjEQEA6+0CAKkYAQDVGAEA4BgBAOkYAQDyGAEAAxkBABQZAQAoGQEAZBMBAOvtAgA0GQEARBkBAFIZAQBgGQEAbRkBAHoZAQCQGQEAmRkBAKgZAQC1GQEAxhkBAGQTAQDr7QIA0RkBAPAZAQDr7QIAAhoBABEaAQBBGgEASxoBAFgaAQBlGgEAchoBAH8aAQCCGgEA6+0CAIYaAQDr7QIAqRoBANoaAQAJGwEAIBsBADsbAQBWGwEAZBMBAOvtAgByGwEA6+0CAJobAQCmGwEAuRsBAMwbAQDhGwEA9hsBAPobAQDjEQEA6+0CAAYcAQDr7QIAFhwBACQcAQAwHAEAPRwBAF0cAQBzHAEA6+0CAIccAQDQHAEAFh0BAEYdAQB5HQEAgB0BAKcdAQDOHQEA6+0CANMdAQAAAAAAAAAAAJFHAQABAAAAAAAAAAgDAAABAAAARx4BAAEAAAAAAAAACAMAAAIAAACKRwEAAQAAAAAAAABAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAACQAAAAlAAAABgAAACYAAAAnAAAAKAAAACkAAAAqAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAEAAAALwAAAAAAAAAAAAAADgAAAAAAAAAPAAAABwAAAAUAAAAQAAAABgAAAAAAAAB19AEAf/QBABExAQDE9AEA//QBACH1AQAn9QEAWAwCAE71AQBd9QEAevUBAIX1AQCn9QEA3fUBABP2AQBO9gEAhPYBAKb2AQC19gEA5vYBAO72AQDXJAEA4CQBAAv3AQDpJAEAVfcBAPIkAQBf9wEA+yQBAGn3AQC49wEA8/cBAAclAQAu+AEAOfgBAH74AQCM+AEA1vgBAOT4AQDy+AEA/fgBAC75AQBu+QEAdvkBAH75AQC5+QEA7/kBAPv5AQAWMQEAB/oBABH6AQAc+gEAOfoBAG/6AQAu/QEAUP0BAFz9AQAbAAIATAACAHgAAgCuAAIAuwACAN0AAgD/AAIACAECAFIBAgBcAQIAoQECANcBAgDiAQIAZwICAHwCAgAPJQEAhgICAJACAgDGAgIABgMCABQDAgBoAwIAdwMCAIYDAgDVAwIAHjEBABUEAgAfBAIAJQQCAFEEAgB4BAIAiQQCAJQEAgDZBAIAHgUCAC0FAgA9BQIATwUCAF8FAgBvBQIAfAUCAIYFAgC8BQIAxQUCAAUGAgAYBgIAIzEBACAGAgBWBgIAfQYCALMGAgDaBgIA6AYCAB4HAgBoBwIAsgcCAL0HAgDzBwIA+AcCABUIAgAyCAIAPQgCAGQIAgB8CAIAsggCAOgIAgD0CAIAGwkCACYJAgBXCQIAiAkCABA8AQCvCQIA2wkCABEKAgBHCgIAUQoCAG4KAgCuCgIA5AoCACkxAQD8CgIAKAsCAE8LAgCFCwIAwgsCAOQLAgDqCwIA9QsCABwMAgAAAAAA2YEBAAEAAADINQAAeAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhIAQABAAAAAAAAAJgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAABIAAAAIAAAABgAAABMAAAAHAAAAAAAAAAAAAABFJgEAAQAAANw4AADQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCYBAAEAAAAAAAAA8AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAA1AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAADcAAAAAAAAAAAAAABQAAAAAAAAAFQAAAAkAAAAHAAAAFgAAAAgAAAAAAAAAETEBAFgMAgBd9QEAFjEBAG/6AQAu/QEAHjEBAFEEAgAFBgIAIzEBAD0IAgBkCAIAEDwBACkxAQDkCwIA9QsCAAAAAAAuMQEAAQAAAKQ5AAAoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjEBAAEAAAAAAAAASAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA5AAAAOgAAAAoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQQAAAEIAAABDAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAGAAAAAsAAAAIAAAAGQAAAAkAAAAAAAAAxPQBAKY6AQBYDAIAXfUBAHr1AQCxOgEAtzoBAMI6AQDJOgEAhfUBAN31AQDROgEA1zoBAOI6AQCE9gEApvYBAO72AQDpOgEAVfcBAGn3AQDz9wEA8zoBAH74AQCM+AEA1vgBAP46AQDk+AEABjsBAA87AQAdOwEAJzsBALn5AQAwOwEA+/kBABz6AQA5+gEANjsBAID6AQCr+gEA1PoBAPf6AQAg+wEAQ/sBAGz7AQCP+wEAuPsBANv7AQAE/AEAJ/wBAFD8AQBz/AEAnPwBAL/8AQDo/AEAC/0BAC79AQA9OwEAUP0BAEk7AQB4AAIA3QACAKEBAgBWOwEAhgMCAGM7AQAVBAIAJQQCAG07AQBRBAIAeAQCAIkEAgB8OwEAjjsBAJQEAgAeBQIALQUCAD0FAgBPBQIAXwUCAJ47AQCpOwEAtDsBAG8FAgAFBgIACgYCALk7AQDCOwEAyzsBANs7AQDiOwEAVgYCAH0GAgCzBgIA6AYCAPgHAgAVCAIA6jsBAGQIAgDxOwEA9AgCAPo7AQAmCQIAAjwBAIgJAgAQPAEArwkCANsJAgAXPAEAbgoCAK4KAgAhPAEA5AoCAPwKAgBPCwIAKzwBADk8AQCFCwIAjAsCAMILAgDkCwIA9QsCABwMAgAAAAAASzwBAAEAAACsOgAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE88AQABAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEUAAAAAAAAAAAAAAEYAAABHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAABsAAAAMAAAACQAAABwAAAAKAAAAAAAAAEFCAADelQEAQUkAALiVAQBBUgAAi5UBAEFYAADzlQEAQiAAAC+YAQBCSQAAQJgBAENCAAB4lgEAQ08AAGaWAQBDWAAAhZYBAEggAACplgEASEIAALOWAQBISQAAP5cBAEhYAADClgEASGIAAPOWAQBIaQAAJpcBAEhyAADYlgEASHgAAAmXAQBJIAAAUZgBAEtCAAAKlgEAS0kAAFKWAQBLUgAAPpYBAEtYAAArlgEATkIAAFGXAQBOSQAAmJcBAE5SAACwlwEATlgAAHyXAQBQQQAAEZgBAFBCAADNlwEAUEkAAAGYAQBQWAAA7ZcBAFIgAAAImgEAUyAAACCYAQBaRAAAjpgBAAAAAAAAAAAAAQAAAAAAAAD+RgEA/////1w9AADYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkcBAP////8AAAAA+AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAApHAQABAAAAIEMAAAAAAAAQAAAAEkcBAAEAAAAgQwAAAAAAABEAAAAaRwEAAQAAACBDAAAAAAAAEQAAACNHAQABAAAAIEMAAAAAAAARAAAAK0cBAAEAAAAgQwAAAAAAABMAAAAzRwEAAQAAACRDAAAAAAAAFAAAADtHAQABAAAAJEMAAAAAAAAVAAAAQ0cBAAEAAAAkQwAAAAAAABUAAABMRwEAAQAAACRDAAAAAAAAFQAAAFRHAQABAAAAJEMAAAAAAAAWAAAAXEcBAAEAAAAoQwAAAAAAABcAAABlRwEAAQAAAChDAAAAAAAAGAAAAG5HAQABAAAAKEMAAAAAAAAYAAAAeEcBAAEAAAAoQwAAAAAAABgAAACBRwEAAQAAAChDAAAAAAAAGQAAAIpHAQABAAAALEMAAAAAAAAZAAAAkUcBAAEAAAAsQwAAAAAAABoAAACXRwEAAQAAADBDAAAAAAAACgAAAKBHAQABAAAANEMAAAAAAAALAAAAqEcBAAEAAAA0QwAAAAAAAAwAAACwRwEAAQAAADRDAAAAAAAADAAAALlHAQABAAAANEMAAAAAAAAMAAAAwUcBAAEAAAA0QwAAAAAAAA4AAADJRwEAAQAAADRDAAAAAAAADgAAANBHAQABAAAANEMAAAAAAAANAAAA2EcBAAEAAAA0QwAAAAAAAAUAAADgRwEAAQAAADRDAAAAAAAABgAAAOhHAQABAAAANEMAAAAAAAAHAAAA8EcBAAEAAAA0QwAAAAAAAAcAAAD5RwEAAQAAADRDAAAAAAAABwAAAAFIAQABAAAANEMAAAAAAAAJAAAACUgBAAEAAAA0QwAAAAAAAAkAAAAQSAEAAQAAADRDAAAAAAAACAAAABhIAQABAAAANEMAAAAAAAAAAAAAIEgBAAEAAAA4QwAAAAAAAAEAAAApSAEAAQAAADhDAAAAAAAAAgAAADJIAQABAAAAOEMAAAAAAAACAAAAPEgBAAEAAAA4QwAAAAAAAAIAAABFSAEAAQAAADhDAAAAAAAABAAAAE5IAQABAAAAOEMAAAAAAAAEAAAAVkgBAAEAAAA4QwAAAAAAAAMAAABfSAEAAQAAADhDAAAAAAAAEgAAAGhIAQABAAAAIEMAAAAAAAAbAAAAcEgBAAEAAAA8QwAAAAAAABwAAAB4SAEAAQAAADxDAAAAAAAAHQAAAIBIAQABAAAAPEMAAAAAAAAdAAAAiUgBAAEAAAA8QwAAAAAAAB0AAACRSAEAAQAAADxDAAAAAAAAHgAAAJlIAQABAAAAQEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAAARMAQBMQwAAAQAAAGhDAAAAAAAAAAAAAEgAAABJAAAAAQAAAAAAAADQeQEAAAAAAFxDAABkQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAgAAAAQAAAAYAQAAMAEAALAAAAApVAEALlQBADJUAQA5VAEAPVQBAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAdAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAyWQEAKEQAAAEAAAB4RAAAAAAAAAAAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABLAAAAUwAAAEsAAABUAAAAVQAAAFYAAABXAAAAAAAAAD9ZAQAAAAAAOEQAACDPAgABAAAARVkBAAAAAABARAAAIM8CAAMAAABJWQEAAAAAAEhEAAAgzwIABAAAAE9ZAQAAAAAAUEQAACDPAgAFAAAAVVkBAAAAAABoRAAAIM8CAAYAAABfWQEAAAAAAHBEAAAgzwIABwAAAGVZAQAAAAAAWEQAACDPAgAHAAAAaVkBAAAAAABYRAAAIM8CAAcAAABuWQEAAAAAAGBEAAAgzwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAMAAAAAAAAAABAAAAIAAAAAEAAAAAAAAAAAAAAAAAAAADAAAABAAAAAAAAAAAAAAA6+0CAAAAAAATBgIAAQAAAHRkAQAHAAAAOGQBAAMAAAC8GQIABQAAAHxkAQAPAAAAvoEBAAgAAAC+gQEAEAAAAIRkAQAEAAAAhGQBABEAAACJZAEABQAAAIlkAQACAAAAj2QBAAYAAACWZAEABAAAAKJkAQAHAAAAqmQBAAcAAAC6ZAEABQAAAMBkAQAIAAAA12QBAAgAAADAZAEACQAAAOBkAQAHAAAA6GQBAAoAAAACZQEABwAAAAplAQALAAAAJGUBAAYAAAArZQEADAAAAEllAQAJAAAAK2UBAA0AAABTZQEACAAAAFxlAQAOAAAAfWUBAAgAAACGZQEAEgAAAKdlAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAADAAAAIQAAAAQAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAAIgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAQAAAACBHAAAwRwAABgAAAAQAAAA8RwAABgAAAAgAAAAGAAAABAAAAERHAAAABAAACAAAAP////8AAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAANQAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAACQAAAAAAAAAHAAAAAAAAAAkAAAALAAAACAAAAAoAAADISAAATEgAALBIAAABAAAAAQAAAAoAAAAWAAAACwAAAFgAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAANAAAAAAAAAAcAAAAAAAAABwAAAAIAAAAFAAAACAAAAAAAAAAAAAAABgAAAAMAAAAOAAAACwAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA8AAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAABAAAAAAAAAABwAAAAAAAAAIAAAACAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/////wAAAAAAAAAAJwAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAMAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAwAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAAAAAAABAAAAAQAAAAIAAAADAAAAAQAAAAQAAAABAAAABQAAAAEAAAAGAAAABwAAAAcAAAABAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAMAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAACAAAAAb6cBAFCnAQAWcAEAfKcBAHSnAQCCpwEAAAAAABx0AQAldAEALHQBADp0AQBBdAEAmKcBAEh0AQBPdAEAAQAAAAgAAAD/////AAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAO11AQAIAAAAAwAAAPZ1AQD6dQEACwAAAAYAAADWgQEABnYBAAIAAAABAAAACXYBAA12AQAEAAAAAgAAABJ2AQAWdgEABAAAAAQAAAAbdgEAIHYBAAUAAAAFAAAAJnYBACp2AQAEAAAABwAAAC92AQAzdgEABQAAAAkAAAA5dgEAPXYBAAQAAAAKAAAAQnYBAEd2AQAEAAAADAAAAEx2AQAQewEAAAAAAAEAAAAYewEAAQAAAAAAAACjpgEAAQAAAAEAAAATBgIAAAAAAAAAAAAAAAAAAAAAAAAAAAD5eQEAMQAAAAAAAAAAAAAA0aEBABAAAAA7EgIAgAAAAPJ5AQBAAAAAPJQBABAAAAD0eQEAQAAAAAAAAAAAAAAAwHkBAAEAAADHeQEAAgAAAMx5AQADAAAA+poBAAQAAABekQEABQAAANB5AQAGAAAAEwYCAAgAAADUeQEAIQAAANh5AQAiAAAA3HkBACIAAADgeQEAAQAAAOV5AQAHAAAA63kBACcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8AAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAArfwEAMn8BAAAAAADTgQEA1oEBANmBAQAAAAAAAAAAAAEAAAACAAAA/////5aBAQCcgQEAEwYCAAAAAABkAAAAZQAAAGYAAABkAAAACAAAAAgAAAAAAAAAAAAAACoAAAARAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACQAAACsAAAARAAAAAAAAAAAAAAAAAAAACAAAAP////8AAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAA+poBAPhUAACABgAAAAAAACeRAQD4VAAAsAYAAAAAAAAAmgEA+FQAAOAGAAAAAAAAL5EBAPhUAADgBgAAAAAAADSRAQD4VAAAEAcAAAAAAAA7kQEAEFUAABAHAAAAAAAAQZEBAPhUAABABwAAAAAAAEWRAQD4VAAAcAcAAAAAAAATBgIA+FQAAKAHAAAAAAAATpEBAPhUAACgBwAAAAAAAFiRAQD4VAAAUAYAAAAAAABekQEA+FQAANAHAAAAAAAAZpEBAPhUAAAACAAAAAAAAHCRAQD4VAAAMAgAAAAAAAB+kQEA+FQAAGAIAAAAAAAAhJEBAPhUAACQCAAAAAAAAI2RAQD4VAAAwAgAAAAAAACVkQEA+FQAAPAIAAAAAAAAnpEBAPhUAAAgCQAAAAAAAKaRAQD4VAAAUAkAAAAAAACrkQEA+FQAAIAJAAAAAAAAr5EBAPhUAACwCQAAAAAAALaRAQD4VAAA4AkAAAAAAAC8kQEA+FQAABAKAAAAAAAAxpEBAChVAABACgAAAAAAAM+RAQD4VAAAgAYAAAAAAADUkQEA+FQAAIAGAAAAAAAA3pEBAPhUAABwCgAAAAAAAOWRAQD4VAAAoAoAAAAAAADykQEA+FQAANAKAAAAAAAAAJIBAPhUAAAACwAAAAAAAA6SAQD4VAAAMAsAAAAAAAAakgEA+FQAAGALAAAAAAAAJ5IBAPhUAACQCwAAAAAAADCSAQD4VAAAwAsAAAAAAAA6kgEA+FQAAPALAAAAAAAAQ5IBAPhUAAAgDAAAAAAAAEuSAQD4VAAAUAwAAAAAAABTkgEA+FQAAIAMAAAAAAAAXJIBAPhUAACwDAAAAAAAAGCSAQD4VAAA4AwAAAAAAABrkgEA+FQAABANAAAAAAAAb5IBAPhUAABADQAAAAAAAHmSAQD4VAAAcA0AAAAAAACCkgEA+FQAAKANAAAAAAAAipIBAPhUAADQDQAAAAAAAJeSAQD4VAAAAA4AAAAAAACjkgEA+FQAADAOAAAAAAAArpIBAPhUAABgDgAAAAAAAL6SAQD4VAAAkA4AAAAAAADMkgEA+FQAAMAOAAAAAAAA25IBAPhUAADwDgAAAAAAAOWSAQD4VAAAIA8AAAAAAADukgEA+FQAAFAPAAAAAAAA+JIBAPhUAACADwAAAAAAAAKTAQD4VAAAsA8AAAAAAAAJkwEA+FQAAOAPAAAAAAAAEJMBAPhUAAAQEAAAAAAAABqTAQBAVQAAAAAAAAAAAAAhkwEAQFUAAAAAAAAAAAAAA5EBAFhVAAAAAAAAAAAAACmTAQBwVQAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAWwAAAFoAAAAXAAAABQAAAAAAAAANAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAXAAAAF0AAAAYAAAABgAAAAMAAAAOAAAAXgAAAF8AAAAXAAAABwAAAAAAAAAPAAAAWQAAAFoAAAAXAAAACAAAAAIAAAAMAAAAEAAAABEAAAASAAAAEwAAACuUAQAylAEAAAAAADqUAQA8lAEAdRICAD6UAQAMAAAABAAAAAYAAAACAAAAAwAAAAEAAAAJAAAACAAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAACLlQEAm5UBAKiVAQAAAAAAAAAAAAQAAACtlQEAAAAAAAAAAAC4lQEAm5UBAKiVAQAAAAAAz5UBAAUAAACtlQEAAAAAANeVAQDelQEAm5UBAO6VAQAAAAAAAAAAAAYAAACtlQEAGaYBAAAAAADzlQEAm5UBAO6VAQAAAAAAz5UBAAcAAACtlQEAGaYBANeVAQAKlgEAF5YBAO6VAQAAAAAAAAAAAAoAAAAllgEAGaYBAAAAAAArlgEAF5YBAO6VAQAAAAAA15UBAAsAAAAllgEAGaYBANeVAQA+lgEAF5YBAEyWAQAAAAAAAAAAAAgAAAAllgEAAAAAAAAAAABSlgEAF5YBAEyWAQAAAAAA15UBAAkAAAAllgEAAAAAANeVAQBmlgEAZpYBAAAAAAAAAAAAAAAAAAwAAABulgEAAAAAAAAAAAB4lgEAZpYBABmmAQAAAAAAAAAAAA4AAABulgEAGaYBAAAAAACFlgEAZpYBABmmAQAAAAAAz5UBAA8AAABulgEAGaYBANeVAQCZlgEAZpYBAAAAAAAAAAAAz5UBAA0AAABulgEAAAAAANeVAQCplgEAqZYBAAAAAAAAAAAAAAAAABAAAACtlQEAAAAAAAAAAACzlgEAqZYBABmmAQAAAAAAAAAAABIAAACtlQEAGaYBAAAAAADClgEAqZYBABmmAQAAAAAAz5UBABMAAACtlQEAGaYBANeVAQDYlgEAqZYBAAAAAADplgEAAAAAABQAAACtlQEAAAAAAAAAAADzlgEAqZYBABmmAQDplgEAAAAAABYAAACtlQEAGaYBAAAAAAAJlwEAqZYBABmmAQDplgEAz5UBABcAAACtlQEAGaYBANeVAQAmlwEAqZYBAAAAAADplgEAz5UBABUAAACtlQEAAAAAANeVAQA/lwEAqZYBAAAAAAAAAAAAz5UBABEAAACtlQEAAAAAANeVAQBRlwEAZ5cBABmmAQAAAAAAAAAAABoAAAAllgEAGaYBAAAAAAB8lwEAZ5cBABmmAQAAAAAA15UBABsAAAAllgEAGaYBANeVAQCYlwEAZ5cBAAAAAAAAAAAA15UBABkAAAAllgEAAAAAANeVAQCwlwEAZ5cBAMeXAQAAAAAAAAAAABgAAAAllgEAAAAAAAAAAADNlwEA25cBABmmAQAAAAAAAAAAAB4AAAAllgEAGaYBAAAAAADtlwEA25cBABmmAQAAAAAA15UBAB8AAAAllgEAGaYBANeVAQABmAEA25cBAAAAAAAAAAAA15UBAB0AAAAllgEAAAAAANeVAQARmAEA25cBAMeXAQAAAAAAAAAAABwAAAAllgEAAAAAAAAAAAAgmAEAIJgBAAAAAAAAAAAAAAAAACAAAAAnmAEAAAAAAAAAAAAvmAEAOpgBABmmAQAAAAAAAAAAAAIAAAAllgEAGaYBAAAAAABAmAEAOpgBABmmAQAAAAAA15UBAAMAAAAllgEAGaYBANeVAQBRmAEAOpgBAAAAAAAAAAAA15UBAAEAAAAllgEAAAAAANeVAQAImgEAOpgBAAAAAAAAAAAAAAAAAAAAAAAllgEAAAAAAAAAAABemAEAeJgBAIeYAQAAAAAA15UBACEAAAAllgEAAAAAANeVAQCOmAEAm5gBAAAAAAAAAAAAAAAAACIAAAAnmAEAAAAAAAAAAAAIAAAABAAAAAAAAAAKAAAALQAAABIAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAA3mwEAxgAAAD2bAQDBAAAARJsBAMIAAABKmwEAwAAAAFGbAQCRAwAAV5sBAMUAAABdmwEAwwAAAGSbAQDEAAAAaZsBAJIDAABumwEAxwAAAHWbAQCnAwAAeZsBACEgAACAmwEAlAMAAIabAQDQAAAAipsBAMkAAACRmwEAygAAAJebAQDIAAAAnpsBAJUDAACmmwEAlwMAAKqbAQDLAAAAr5sBAJMDAAC1mwEAzQAAALybAQDOAAAAwpsBAMwAAADJmwEAmQMAAM6bAQDPAAAA05sBAJoDAADZmwEAmwMAAOCbAQCcAwAA45sBANEAAADqmwEAnQMAAO2bAQBSAQAA85sBANMAAAD6mwEA1AAAAACcAQDSAAAAB5wBAKkDAAANnAEAnwMAABWcAQDYAAAAHJwBANUAAAAjnAEA1gAAACicAQCmAwAALJwBAKADAAAvnAEAMyAAADWcAQCoAwAAOZwBAKEDAAA9nAEAYAEAAEScAQCjAwAASpwBAN4AAABQnAEApAMAAFScAQCYAwAAWpwBANoAAABhnAEA2wAAAGecAQDZAAAAbpwBAKUDAAB2nAEA3AAAAHucAQCeAwAAfpwBAN0AAACFnAEAeAEAAIqcAQCWAwAAj5wBAOEAAACWnAEA4gAAAJycAQC0AAAAopwBAOYAAAConAEA4AAAAK+cAQA1IQAAt5wBALEDAAC9nAEAJgAAAMGcAQAnIgAAxZwBACAiAADJnAEA5QAAAM+cAQBIIgAA1ZwBAOMAAADcnAEA5AAAAOGcAQAeIAAA55wBALIDAADsnAEApgAAAPOcAQAiIAAA+JwBACkiAAD8nAEA5wAAAAOdAQC4AAAACZ0BAKIAAAAOnQEAxwMAABKdAQDGAgAAF50BAGMmAAAdnQEARSIAACKdAQCpAAAAJ50BALUhAAAtnQEAKiIAADGdAQCkAAAAOJ0BANMhAAA9nQEAICAAAESdAQCTIQAASZ0BALAAAABNnQEAtAMAAFOdAQBmJgAAWZ0BAPcAAABgnQEA6QAAAGedAQDqAAAAbZ0BAOgAAAB0nQEABSIAAHqdAQADIAAAf50BAAIgAACEnQEAtQMAAIydAQBhIgAAkp0BALcDAACWnQEA8AAAAJqdAQDrAAAAn50BAKwgAACknQEAAyIAAKqdAQCSAQAAr50BAAAiAAC2nQEAvQAAAL2dAQC8AAAAxJ0BAL4AAADLnQEARCAAANGdAQCzAwAA150BAGUiAADanQEAPgAAAN2dAQDUIQAA4p0BAJQhAADnnQEAZSYAAO6dAQAmIAAA9Z0BAO0AAAD8nQEA7gAAAAKeAQChAAAACJ4BAOwAAAAPngEAESEAABWeAQAeIgAAG54BACsiAAAfngEAuQMAACSeAQC/AAAAK54BAAgiAAAwngEA7wAAADWeAQC6AwAAO54BANAhAABAngEAuwMAAEeeAQApIwAATJ4BAKsAAABSngEAkCEAAFeeAQAIIwAAXZ4BABwgAABjngEAZCIAAGaeAQAKIwAAbZ4BABciAAB0ngEAyiUAAHieAQAOIAAAfJ4BADkgAACDngEAGCAAAImeAQA8AAAAjJ4BAK8AAACRngEAFCAAAJeeAQC1AAAAnZ4BALcAAAA8pwEAEiIAAKSeAQC8AwAAp54BAAciAACtngEAoAAAALKeAQATIAAAuJ4BAGAiAAC7ngEACyIAAL6eAQCsAAAAwp4BAAkiAADIngEAhCIAAM2eAQDxAAAA1J4BAL0DAADXngEA8wAAAN6eAQD0AAAA5J4BAFMBAADqngEA8gAAAPGeAQA+IAAA954BAMkDAAD9ngEAvwMAAAWfAQCVIgAAC58BACgiAAAOnwEAqgAAABOfAQC6AAAAGJ8BAPgAAAAfnwEA9QAAACafAQCXIgAALZ8BAPYAAAAynwEAtgAAADefAQACIgAAPJ8BADAgAABDnwEApSIAAEifAQDGAwAATJ8BAMADAABPnwEA1gMAAFOfAQCxAAAAWp8BAKMAAABgnwEAMiAAAGafAQAPIgAAa58BAB0iAABwnwEAyAMAAHSfAQAiAAAAeZ8BANIhAAB+nwEAGiIAAISfAQAqIwAAiZ8BALsAAACPnwEAkiEAAJSfAQAJIwAAmp8BAB0gAACgnwEAHCEAAKWfAQCuAAAAqZ8BAAsjAACwnwEAwQMAALSfAQAPIAAAuJ8BADogAAC/nwEAGSAAAMWfAQAaIAAAy58BAGEBAADSnwEAxSIAANefAQCnAAAA3J8BAK0AAADgnwEAwwMAAOafAQDCAwAA7Z8BADwiAADxnwEAYCYAAPifAQCCIgAA/J8BAIYiAAABoAEAESIAAAWgAQCDIgAACaABALkAAAAOoAEAsgAAABOgAQCzAAAAGKABAIciAAAdoAEA3wAAACOgAQDEAwAAJ6ABADQiAAAuoAEAuAMAADSgAQDRAwAAPaABAAkgAABEoAEA/gAAAEqgAQDcAgAAUKABANcAAABWoAEAIiEAAFygAQDRIQAAYaABAPoAAABooAEAkSEAAG2gAQD7AAAAc6ABAPkAAAB6oAEAqAAAAH6gAQDSAwAAhKABAMUDAACMoAEA/AAAAJGgAQAYIQAAmKABAL4DAACboAEA/QAAAKKgAQClAAAApqABAP8AAACroAEAtgMAALCgAQANIAAAtKABAAwgAAAHAAAACAAAAAEBAAAIAAAACAAAAAAAAAAAAAAALwAAABMAAAAAAAAAAAAAAAAAAAAIAAAAEAAAAAAAAAAAAAAAMAAAABQAAAAAAAAAAAAAAAAAAAD8pgEACQAAAP6mAQAKAAAAA6cBAAoAAAALpwEACwAAABGnAQALAAAAGqcBAAwAAAAdpwEADAAAACOnAQANAAAAKKcBAA0AAAAwpwEADgAAADWnAQAOAAAAPKcBAA8AAABCpwEADwAAAE6nAQAQAAAAYAAAADEAAAAyAAAAFAAAADMAAABhAAAANAAAABUAAAA1AAAACAAAAAQAAAD/////AAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAmagBAFVdyX/Jf/8ApKgBALst1L6u1P8Ar6gBABR3/f3Ahv8AuqgBAFVdyX/Jf/8AxagBALst1L6u1P8A0KgBABR3/f3Ahv8A26gBACpm////mf8A5qgBAFVdyX/Jf/8A8agBALst1L6u1P8A/KgBABR3/f3Ahv8AB6kBACpm////mf8AEqkBAJetsDhssP8AHakBAFVdyX/Jf/8AKKkBALst1L6u1P8AM6kBABR3/f3Ahv8APqkBACpm////mf8ASakBAJetsDhssP8AVKkBAOj88PACf/8AX6kBAFVdyX/Jf/8AaqkBALst1L6u1P8AdakBABR3/f3Ahv8AgKkBACpm////mf8Ai6kBAJetsDhssP8AlqkBAOj88PACf/8AoakBABHgv79bF/8ArKkBAFVdyX/Jf/8At6kBALst1L6u1P8AwqkBABR3/f3Ahv8AzakBACpm////mf8A2KkBAJetsDhssP8A46kBAOj88PACf/8A7qkBABHgv79bF/8A+akBAAAAZmZmZv8ABKoBAJMZ997r9/8ADqoBAI5L4Z7K4f8AGKoBAJG8vTGCvf8AIqoBAJ8Q/+/z//8ALKoBAI8u573X5/8ANqoBAI9/1muu1v8AQKoBAJPQtSFxtf8ASqoBAJ8Q/+/z//8AVKoBAI8u573X5/8AXqoBAI9/1muu1v8AaKoBAJG8vTGCvf8AcqoBAJXxnAhRnP8AfKoBAJ8Q/+/z//8AhqoBAJQr78bb7/8AkKoBAI5L4Z7K4f8AmqoBAI9/1muu1v8ApKoBAJG8vTGCvf8ArqoBAJXxnAhRnP8AuKoBAJ8Q/+/z//8AwqoBAJQr78bb7/8AzKoBAI5L4Z7K4f8A1qoBAI9/1muu1v8A4KoBAJCpxkKSxv8A6qoBAJPQtSFxtf8A9KoBAJfxlAhFlP8A/qoBAJQI//f7//8ACKsBAJMZ997r9/8AEqsBAJQr78bb7/8AHKsBAI5L4Z7K4f8AJqsBAI9/1muu1v8AMKsBAJCpxkKSxv8AOqsBAJPQtSFxtf8ARKsBAJfxlAhFlP8ATqsBAJQI//f7//8AWKsBAJMZ997r9/8AYqsBAJQr78bb7/8AbKsBAI5L4Z7K4f8AdqsBAI9/1muu1v8AgKsBAJCpxkKSxv8AiqsBAJPQtSFxtf8AlKsBAJXxnAhRnP8AnqsBAJjrawgwa/8AqKsBABfvVFQwBf8AsqsBAHf/PAA8MP8AvasBABfsjIxRCv8Ax6sBABjCv7+BLf8A0asBAB1w39/Cff8A26sBAB409vbow/8A5asBAHkm6sfq5f8A76sBAHhfzYDNwf8A+asBAHyllzWXj/8AA6wBAHz8ZgFmXv8ADawBABfvVFQwBf8AF6wBAHz8ZgFmXv8AIqwBAHf/PAA8MP8ALawBABfsjIxRCv8AN6wBABjCv7+BLf8AQawBAB1w39/Cff8AS6wBAB409vbow/8AVawBAAAA9fX19f8AX6wBAHkm6sfq5f8AaawBAHhfzYDNwf8Ac6wBAHyllzWXj/8AfawBAByH2NizZf8AhqwBAAAA9fX19f8Aj6wBAHt/tFq0rP8AmKwBABXXpqZhGv8AoawBAB1w39/Cff8AqqwBAHhfzYDNwf8As6wBAHn9hQGFcf8AvKwBABXXpqZhGv8AxawBAB1w39/Cff8AzqwBAAAA9fX19f8A16wBAHhfzYDNwf8A4KwBAHn9hQGFcf8A6awBABfsjIxRCv8A8qwBAByH2NizZf8A+6wBAB409vbow/8ABK0BAHkm6sfq5f8ADa0BAHt/tFq0rP8AFq0BAHz8ZgFmXv8AH60BABfsjIxRCv8AKK0BAByH2NizZf8AMa0BAB409vbow/8AOq0BAAAA9fX19f8AQ60BAHkm6sfq5f8ATK0BAHt/tFq0rP8AVa0BAHz8ZgFmXv8AXq0BABfsjIxRCv8AZ60BABjCv7+BLf8AcK0BAB1w39/Cff8Aea0BAB409vbow/8Agq0BAHkm6sfq5f8Ai60BAHhfzYDNwf8AlK0BAHyllzWXj/8Ana0BAHz8ZgFmXv8Apq0BABfsjIxRCv8Ar60BABjCv7+BLf8AuK0BAB1w39/Cff8Awa0BAB409vbow/8Ayq0BAAAA9fX19f8A060BAHkm6sfq5f8A3K0BAHhfzYDNwf8A5a0BAHyllzWXj/8A7q0BAHz8ZgFmXv8A960BAIcU+eX1+f8AAK4BAHVK2JnYyf8ACa4BAGe5oiyiX/8AEq4BAIgO++34+/8AG64BAH824rLi4v8AJK4BAHF4wmbCpP8ALa4BAGK+iyOLRf8ANq4BAIgO++34+/8AP64BAH824rLi4v8ASK4BAHF4wmbCpP8AUa4BAGe5oiyiX/8AWq4BAGb/bQBtLP8AY64BAIgO++34+/8AbK4BAHci7Mzs5v8Ada4BAHVK2JnYyf8Afq4BAHF4wmbCpP8Ah64BAGe5oiyiX/8AkK4BAGb/bQBtLP8Ama4BAIgO++34+/8Aoq4BAHci7Mzs5v8Aq64BAHVK2JnYyf8AtK4BAHF4wmbCpP8Ava4BAGmfrkGudv8Axq4BAGK+iyOLRf8Az64BAGb/WABYJP8A2K4BAIYG/ff8/f8A4a4BAIcU+eX1+f8A6q4BAHci7Mzs5v8A864BAHVK2JnYyf8A/K4BAHF4wmbCpP8ABa8BAGmfrkGudv8ADq8BAGK+iyOLRf8AF68BAGb/WABYJP8AIK8BAIYG/ff8/f8AKa8BAIcU+eX1+f8AMq8BAHci7Mzs5v8AO68BAHVK2JnYyf8ARK8BAHF4wmbCpP8ATa8BAGmfrkGudv8AVq8BAGK+iyOLRf8AX68BAGb/bQBtLP8AaK8BAGX/RABEG/8Aca8BAJAU9ODs9P8Aeq8BAJRG2p682v8Ag68BAMR7p4hWp/8AjK8BAIgO++34+/8Ala8BAJI147PN4/8Anq8BAKJKxoyWxv8Ap68BAMqVnYhBnf8AsK8BAIgO++34+/8Aua8BAJI147PN4/8Awq8BAKJKxoyWxv8Ay68BAMR7p4hWp/8A1K8BANbhgYEPfP8A3a8BAIgO++34+/8A5q8BAJQr5r/T5v8A768BAJRG2p682v8A+K8BAKJKxoyWxv8AAbABAMR7p4hWp/8ACrABANbhgYEPfP8AE7ABAIgO++34+/8AHLABAJQr5r/T5v8AJbABAJRG2p682v8ALrABAKJKxoyWxv8AN7ABAL5ksYxrsf8AQLABAMqVnYhBnf8ASbABANX8bm4Ba/8AUrABAIYG/ff8/f8AW7ABAJAU9ODs9P8AZLABAJQr5r/T5v8AbbABAJRG2p682v8AdrABAKJKxoyWxv8Af7ABAL5ksYxrsf8AiLABAMqVnYhBnf8AkbABANX8bm4Ba/8AmrABAIYG/ff8/f8Ao7ABAJAU9ODs9P8ArLABAJQr5r/T5v8AtbABAJRG2p682v8AvrABAKJKxoyWxv8Ax7ABAL5ksYxrsf8A0LABAMqVnYhBnf8A2bABANbhgYEPfP8A4rABANX/TU0AS/8A67ABAHLTnhued/8A9bABABL82dlfAv8A/7ABAK1fs3Vws/8ACbEBAHLTnhued/8AE7EBABL82dlfAv8AHbEBAK1fs3Vws/8AJ7EBAOnR5+cpiv8AMbEBAHLTnhued/8AO7EBABL82dlfAv8ARbEBAK1fs3Vws/8AT7EBAOnR5+cpiv8AWbEBAD7QpmamHv8AY7EBAHLTnhued/8AbbEBABL82dlfAv8Ad7EBAK1fs3Vws/8AgbEBAOnR5+cpiv8Ai7EBAD7QpmamHv8AlbEBAB/85uarAv8An7EBAHLTnhued/8AqbEBABL82dlfAv8As7EBAK1fs3Vws/8AvbEBAOnR5+cpiv8Ax7EBAD7QpmamHv8A0bEBAB/85uarAv8A27EBABvSpqZ2Hf8A5bEBAHLTnhued/8A77EBABL82dlfAv8A+bEBAK1fs3Vws/8AA7IBAOnR5+cpiv8ADbIBAD7QpmamHv8AF7IBAB/85uarAv8AIbIBABvSpqZ2Hf8AK7IBAAAAZmZmZv8ANbIBAEwZ8+Dz2/8APrIBAF893ajdtf8AR7IBAIyqykOiyv8AULIBAEER+fD56P8AWbIBAFcu5LrkvP8AYrIBAHtlzHvMxP8Aa7IBAI3FviuMvv8AdLIBAEER+fD56P8AfbIBAFcu5LrkvP8AhrIBAHtlzHvMxP8Aj7IBAIyqykOiyv8AmLIBAJHzrAhorP8AobIBAEER+fD56P8AqrIBAE0p68zrxf8As7IBAF893ajdtf8AvLIBAHtlzHvMxP8AxbIBAIyqykOiyv8AzrIBAJHzrAhorP8A17IBAEER+fD56P8A4LIBAE0p68zrxf8A6bIBAF893ajdtf8A8rIBAHtlzHvMxP8A+7IBAImg006z0/8ABLMBAI3FviuMvv8ADbMBAJPynghYnv8AFrMBADwM/Pf88P8AH7MBAEwZ8+Dz2/8AKLMBAE0p68zrxf8AMbMBAF893ajdtf8AOrMBAHtlzHvMxP8AQ7MBAImg006z0/8ATLMBAI3FviuMvv8AVbMBAJPynghYnv8AXrMBADwM/Pf88P8AZ7MBAEwZ8+Dz2/8AcLMBAE0p68zrxf8AebMBAF893ajdtf8AgrMBAHtlzHvMxP8Ai7MBAImg006z0/8AlLMBAI3FviuMvv8AnbMBAJHzrAhorP8AprMBAJbvgQhAgf8Ar7MBAEoV9eX14P8AurMBAFBI2aHZm/8AxbMBAGKyozGjVP8A0LMBAEkP+O346f8A27MBAE425Lrks/8A5rMBAFZoxHTEdv8A8bMBAGK+iyOLRf8A/LMBAEkP+O346f8AB7QBAE425Lrks/8AErQBAFZoxHTEdv8AHbQBAGKyozGjVP8AKLQBAGb/bQBtLP8AM7QBAEkP+O346f8APrQBAE0s6cfpwP8ASbQBAFBI2aHZm/8AVLQBAFZoxHTEdv8AX7QBAGKyozGjVP8AarQBAGb/bQBtLP8AdbQBAEkP+O346f8AgLQBAE0s6cfpwP8Ai7QBAFBI2aHZm/8AlrQBAFZoxHTEdv8AobQBAGCeq0GrXf8ArLQBAGK+iyOLRf8At7QBAGz/WgBaMv8AwrQBAEgH/Pf89f8AzbQBAEoV9eX14P8A2LQBAE0s6cfpwP8A47QBAFBI2aHZm/8A7rQBAFZoxHTEdv8A+bQBAGCeq0GrXf8ABLUBAGK+iyOLRf8AD7UBAGz/WgBaMv8AGrUBAEgH/Pf89f8AJbUBAEoV9eX14P8AMLUBAE0s6cfpwP8AO7UBAFBI2aHZm/8ARrUBAFZoxHTEdv8AUbUBAGCeq0GrXf8AXLUBAGK+iyOLRf8AZ7UBAGb/bQBtLP8AcrUBAGX/RABEG/8AfbUBAAAA8PDw8P8Ah7UBAAAAvb29vf8AkbUBAAAAY2NjY/8Am7UBAAAA9/f39/8ApbUBAAAAzMzMzP8Ar7UBAAAAlpaWlv8AubUBAAAAUlJSUv8Aw7UBAAAA9/f39/8AzbUBAAAAzMzMzP8A17UBAAAAlpaWlv8A4bUBAAAAY2NjY/8A67UBAAAAJSUlJf8A9bUBAAAA9/f39/8A/7UBAAAA2dnZ2f8ACbYBAAAAvb29vf8AE7YBAAAAlpaWlv8AHbYBAAAAY2NjY/8AJ7YBAAAAJSUlJf8AMbYBAAAA9/f39/8AO7YBAAAA2dnZ2f8ARbYBAAAAvb29vf8AT7YBAAAAlpaWlv8AWbYBAAAAc3Nzc/8AY7YBAAAAUlJSUv8AbbYBAAAAJSUlJf8Ad7YBAAAA//////8AgbYBAAAA8PDw8P8Ai7YBAAAA2dnZ2f8AlbYBAAAAvb29vf8An7YBAAAAlpaWlv8AqbYBAAAAc3Nzc/8As7YBAAAAUlJSUv8AvbYBAAAAJSUlJf8Ax7YBAAAA//////8A0bYBAAAA8PDw8P8A27YBAAAA2dnZ2f8A5bYBAAAAvb29vf8A77YBAAAAlpaWlv8A+bYBAAAAc3Nzc/8AA7cBAAAAUlJSUv8ADbcBAAAAJSUlJf8AF7cBAAAAAAAAAP8AIbcBABUw/v7mzv8ALbcBABOT/f2ua/8AObcBAA7w5uZVDf8ARbcBABMg/v7t3v8AUbcBABR4/f2+hf8AXbcBABHC/f2NPP8AabcBAA392dlHAf8AdbcBABMg/v7t3v8AgbcBABR4/f2+hf8AjbcBABHC/f2NPP8AmbcBAA7w5uZVDf8ApbcBAA36pqY2A/8AsbcBABMg/v7t3v8AvbcBABVb/f3Qov8AybcBABOT/f2ua/8A1bcBABHC/f2NPP8A4bcBAA7w5uZVDf8A7bcBAA36pqY2A/8A+bcBABMg/v7t3v8ABbgBABVb/f3Qov8AEbgBABOT/f2ua/8AHbgBABHC/f2NPP8AKbgBABDq8fFpE/8ANbgBAA392dlIAf8AQbgBAAz3jIwtBP8ATbgBABUU///16/8AWbgBABUw/v7mzv8AZbgBABVb/f3Qov8AcbgBABOT/f2ua/8AfbgBABHC/f2NPP8AibgBABDq8fFpE/8AlbgBAA392dlIAf8AobgBAAz3jIwtBP8ArbgBABUU///16/8AubgBABUw/v7mzv8AxbgBABVb/f3Qov8A0bgBABOT/f2ua/8A3bgBABHC/f2NPP8A6bgBABDq8fFpE/8A9bgBAA392dlIAf8AAbkBAA36pqY2A/8ADbkBAAz2f38nBP8AGbkBABk2/v7oyP8AIrkBABN5/f27hP8AK7kBAAXF4+NKM/8ANLkBABol/v7w2f8APbkBABhz/f3Miv8ARrkBAA2k/PyNWf8AT7kBAAPa19cwH/8AWLkBABol/v7w2f8AYbkBABhz/f3Miv8AarkBAA2k/PyNWf8Ac7kBAAXF4+NKM/8AfLkBAAD/s7MAAP8AhbkBABol/v7w2f8AjrkBABhf/f3Unv8Al7kBABN5/f27hP8AoLkBAA2k/PyNWf8AqbkBAAXF4+NKM/8AsrkBAAD/s7MAAP8Au7kBABol/v7w2f8AxLkBABhf/f3Unv8AzbkBABN5/f27hP8A1rkBAA2k/PyNWf8A37kBAAey7+9lSP8A6LkBAAPa19cwH/8A8bkBAAD/mZkAAP8A+rkBABgS///37P8AA7oBABk2/v7oyP8ADLoBABhf/f3Unv8AFboBABN5/f27hP8AHroBAA2k/PyNWf8AJ7oBAAey7+9lSP8AMLoBAAPa19cwH/8AOboBAAD/mZkAAP8AQroBABgS///37P8AS7oBABk2/v7oyP8AVLoBABhf/f3Unv8AXboBABN5/f27hP8AZroBAA2k/PyNWf8Ab7oBAAey7+9lSP8AeLoBAAPa19cwH/8AgboBAAD/s7MAAP8AiroBAAD/f38AAP8Ak7oBAI5E46bO4/8An7oBAL6Zmmo9mv8ArLoBAJDTtB94tP8AuLoBAEFh37Lfiv8AxLoBAFK4oDOgLP8A0LoBAABj+/uamf8A3LoBAP7h4+MaHP8A6LoBABeP/f2/b/8A9LoBABX///9/AP8AALsBAMYq1sqy1v8ADLsBAI5E46bO4/8AGLsBAL6Zmmo9mv8AJbsBACpm////mf8AMrsBAJDTtB94tP8APrsBAEFh37Lfiv8ASrsBAFK4oDOgLP8AVrsBAABj+/uamf8AYrsBAP7h4+MaHP8AbrsBABeP/f2/b/8AersBABX///9/AP8AhrsBAMYq1sqy1v8AkrsBAI5E46bO4/8AnrsBAL6Zmmo9mv8Aq7sBACpm////mf8AuLsBAA/FsbFZKP8AxbsBAJDTtB94tP8A0bsBAEFh37Lfiv8A3bsBAFK4oDOgLP8A6bsBAABj+/uamf8A9bsBAP7h4+MaHP8AAbwBABeP/f2/b/8ADbwBABX///9/AP8AGbwBAMYq1sqy1v8AJbwBAI5E46bO4/8AMLwBAJDTtB94tP8AO7wBAEFh37Lfiv8ARrwBAI5E46bO4/8AUbwBAJDTtB94tP8AXLwBAEFh37Lfiv8AZ7wBAFK4oDOgLP8AcrwBAI5E46bO4/8AfbwBAJDTtB94tP8AiLwBAEFh37Lfiv8Ak7wBAFK4oDOgLP8AnrwBAABj+/uamf8AqbwBAI5E46bO4/8AtLwBAJDTtB94tP8Av7wBAEFh37Lfiv8AyrwBAFK4oDOgLP8A1bwBAABj+/uamf8A4LwBAP7h4+MaHP8A67wBAI5E46bO4/8A9rwBAJDTtB94tP8AAb0BAEFh37Lfiv8ADL0BAFK4oDOgLP8AF70BAABj+/uamf8AIr0BAP7h4+MaHP8ALb0BABeP/f2/b/8AOL0BAI5E46bO4/8AQ70BAJDTtB94tP8ATr0BAEFh37Lfiv8AWb0BAFK4oDOgLP8AZL0BAABj+/uamf8Ab70BAP7h4+MaHP8Aer0BABeP/f2/b/8Ahb0BABX///9/AP8AkL0BAI5E46bO4/8Am70BAJDTtB94tP8Apr0BAEFh37Lfiv8Asb0BAFK4oDOgLP8AvL0BAABj+/uamf8Ax70BAP7h4+MaHP8A0r0BABeP/f2/b/8A3b0BABX///9/AP8A6L0BAMYq1sqy1v8A870BAANO+/u0rv8A/70BAJI147PN4/8AC74BAE0p68zrxf8AF74BAANO+/u0rv8AI74BAJI147PN4/8AL74BAE0p68zrxf8AO74BAMob5N7L5P8AR74BAANO+/u0rv8AU74BAJI147PN4/8AX74BAE0p68zrxf8Aa74BAMob5N7L5P8Ad74BABhY/v7Zpv8Ag74BAANO+/u0rv8Aj74BAJI147PN4/8Am74BAE0p68zrxf8Ap74BAMob5N7L5P8As74BABhY/v7Zpv8Av74BACoy////zP8Ay74BAANO+/u0rv8A174BAJI147PN4/8A474BAE0p68zrxf8A774BAMob5N7L5P8A+74BABhY/v7Zpv8AB78BACoy////zP8AE78BABws5eXYvf8AH78BAANO+/u0rv8AK78BAJI147PN4/8AN78BAE0p68zrxf8AQ78BAMob5N7L5P8AT78BABhY/v7Zpv8AW78BACoy////zP8AZ78BABws5eXYvf8Ac78BAOkj/f3a7P8Af78BAANO+/u0rv8Ai78BAJI147PN4/8Al78BAE0p68zrxf8Ao78BAMob5N7L5P8Ar78BABhY/v7Zpv8Au78BACoy////zP8Ax78BABws5eXYvf8A078BAOkj/f3a7P8A378BAAAA8vLy8v8A678BAGw14rPizf8A978BABFR/f3NrP8AA8ABAJsf6MvV6P8AD8ABAGw14rPizf8AG8ABABFR/f3NrP8AJ8ABAJsf6MvV6P8AM8ABAOQr9PTK5P8AP8ABAGw14rPizf8AS8ABABFR/f3NrP8AV8ABAJsf6MvV6P8AY8ABAOQr9PTK5P8Ab8ABADgt9eb1yf8Ae8ABAGw14rPizf8Ah8ABABFR/f3NrP8Ak8ABAJsf6MvV6P8An8ABAOQr9PTK5P8Aq8ABADgt9eb1yf8At8ABACNR///yrv8Aw8ABAGw14rPizf8Az8ABABFR/f3NrP8A28ABAJsf6MvV6P8A58ABAOQr9PTK5P8A88ABADgt9eb1yf8A/8ABACNR///yrv8AC8EBABkn8fHizP8AF8EBAGw14rPizf8AI8EBABFR/f3NrP8AL8EBAJsf6MvV6P8AO8EBAOQr9PTK5P8AR8EBADgt9eb1yf8AU8EBACNR///yrv8AX8EBABkn8fHizP8Aa8EBAAAAzMzMzP8Ad8EBAOb9jo4BUv8AgcEBAE2/ZCdkGf8AjMEBAObcxcUbff8AlsEBAOh23t53rv8AoMEBAOU+8fG22v8AqsEBAOkd/f3g7/8AtMEBADsm9eb10P8AvsEBAD1n4bjhhv8AyMEBAD+mvH+8Qf8A0sEBAETFkk2SIf8A3MEBAOb9jo4BUv8A5sEBAETFkk2SIf8A8cEBAE2/ZCdkGf8A/MEBAObcxcUbff8ABsIBAOh23t53rv8AEMIBAOU+8fG22v8AGsIBAOkd/f3g7/8AJMIBAAAA9/f39/8ALsIBADsm9eb10P8AOMIBAD1n4bjhhv8AQsIBAD+mvH+8Qf8ATMIBAOdM6emjyf8AVcIBAAAA9/f39/8AXsIBAD+B16HXav8AZ8IBAOTc0NAci/8AcMIBAOU+8fG22v8AecIBAD1n4bjhhv8AgsIBAEjGrE2sJv8Ai8IBAOTc0NAci/8AlMIBAOU+8fG22v8AncIBAAAA9/f39/8ApsIBAD1n4bjhhv8Ar8IBAEjGrE2sJv8AuMIBAObcxcUbff8AwcIBAOdM6emjyf8AysIBAOkd/f3g7/8A08IBADsm9eb10P8A3MIBAD+B16HXav8A5cIBAETFkk2SIf8A7sIBAObcxcUbff8A98IBAOdM6emjyf8AAMMBAOkd/f3g7/8ACcMBAAAA9/f39/8AEsMBADsm9eb10P8AG8MBAD+B16HXav8AJMMBAETFkk2SIf8ALcMBAObcxcUbff8ANsMBAOh23t53rv8AP8MBAOU+8fG22v8ASMMBAOkd/f3g7/8AUcMBADsm9eb10P8AWsMBAD1n4bjhhv8AY8MBAD+mvH+8Qf8AbMMBAETFkk2SIf8AdcMBAObcxcUbff8AfsMBAOh23t53rv8Ah8MBAOU+8fG22v8AkMMBAOkd/f3g7/8AmcMBAAAA9/f39/8AosMBADsm9eb10P8Aq8MBAD1n4bjhhv8AtMMBAD+mvH+8Qf8AvcMBAETFkk2SIf8AxsMBAM7/S0AAS/8A0MMBAGX/RABEG/8A28MBAM6tg3Yqg/8A5cMBAMdXq5lwq/8A78MBAMczz8Klz/8A+cMBANIV6OfU6P8AA8QBAEwe8Nnw0/8ADcQBAFBE26bboP8AF8QBAFh7rlquYf8AIcQBAGHFeBt4N/8AK8QBAM7/S0AAS/8ANcQBAGHFeBt4N/8AQMQBAGX/RABEG/8AS8QBAM6tg3Yqg/8AVcQBAMdXq5lwq/8AX8QBAMczz8Klz/8AacQBANIV6OfU6P8Ac8QBAAAA9/f39/8AfcQBAEwe8Nnw0/8Ah8QBAFBE26bboP8AkcQBAFh7rlquYf8Am8QBAMRGw6+Nw/8ApMQBAAAA9/f39/8ArcQBAFJav3+/e/8AtsQBAMmolHsylP8Av8QBAMczz8Klz/8AyMQBAFBE26bboP8A0cQBAGb/iACIN/8A2sQBAMmolHsylP8A48QBAMczz8Klz/8A7MQBAAAA9/f39/8A9cQBAFBE26bboP8A/sQBAGb/iACIN/8AB8UBAM6tg3Yqg/8AEMUBAMRGw6+Nw/8AGcUBANIV6OfU6P8AIsUBAEwe8Nnw0/8AK8UBAFJav3+/e/8ANMUBAGHFeBt4N/8APcUBAM6tg3Yqg/8ARsUBAMRGw6+Nw/8AT8UBANIV6OfU6P8AWMUBAAAA9/f39/8AYcUBAEwe8Nnw0/8AasUBAFJav3+/e/8Ac8UBAGHFeBt4N/8AfMUBAM6tg3Yqg/8AhcUBAMdXq5lwq/8AjsUBAMczz8Klz/8Al8UBANIV6OfU6P8AoMUBAEwe8Nnw0/8AqcUBAFBE26bboP8AssUBAFh7rlquYf8Au8UBAGHFeBt4N/8AxMUBAM6tg3Yqg/8AzcUBAMdXq5lwq/8A1sUBAMczz8Klz/8A38UBANIV6OfU6P8A6MUBAAAA9/f39/8A8cUBAEwe8Nnw0/8A+sUBAFBE26bboP8AA8YBAFh7rlquYf8ADMYBAGHFeBt4N/8AFcYBAL0L8uzn8v8AHsYBAJc926a92/8AJ8YBAI3FviuMvv8AMMYBALkI9vHu9v8AOcYBAJso4b3J4f8AQsYBAJFwz3Spz/8AS8YBAI/3sAVwsP8AVMYBALkI9vHu9v8AXcYBAJso4b3J4f8AZsYBAJFwz3Spz/8Ab8YBAI3FviuMvv8AeMYBAI/3jQRajf8AgcYBALkI9vHu9v8AisYBAKgY5tDR5v8Ak8YBAJc926a92/8AnMYBAJFwz3Spz/8ApcYBAI3FviuMvv8ArsYBAI/3jQRajf8At8YBALkI9vHu9v8AwMYBAKgY5tDR5v8AycYBAJc926a92/8A0sYBAJFwz3Spz/8A28YBAI63wDaQwP8A5MYBAI/3sAVwsP8A7cYBAI/4ewNOe/8A9sYBAOkI///3+/8A/8YBAL0L8uzn8v8ACMcBAKgY5tDR5v8AEccBAJc926a92/8AGscBAJFwz3Spz/8AI8cBAI63wDaQwP8ALMcBAI/3sAVwsP8ANccBAI/4ewNOe/8APscBAOkI///3+/8AR8cBAL0L8uzn8v8AUMcBAKgY5tDR5v8AWccBAJc926a92/8AYscBAJFwz3Spz/8Aa8cBAI63wDaQwP8AdMcBAI/3sAVwsP8AfccBAI/3jQRajf8AhscBAI/5WAI4WP8Aj8cBAMgO8Ozi8P8AmscBAJc926a92/8ApccBAILQmRyQmf8AsMcBAM8I9/bv9/8Au8cBAJso4b3J4f8AxscBAI+Az2epz/8A0ccBAIL7igKBiv8A3McBAM8I9/bv9/8A58cBAJso4b3J4f8A8scBAI+Az2epz/8A/ccBAILQmRyQmf8ACMgBAHf8bAFsWf8AE8gBAM8I9/bv9/8AHsgBAKgY5tDR5v8AKcgBAJc926a92/8ANMgBAI+Az2epz/8AP8gBAILQmRyQmf8ASsgBAHf8bAFsWf8AVcgBAM8I9/bv9/8AYMgBAKgY5tDR5v8Aa8gBAJc926a92/8AdsgBAI+Az2epz/8AgcgBAI63wDaQwP8AjMgBAIL7igKBiv8Al8gBAHb8ZAFkUP8AosgBAOkI///3+/8ArcgBAMgO8Ozi8P8AuMgBAKgY5tDR5v8Aw8gBAJc926a92/8AzsgBAI+Az2epz/8A2cgBAI63wDaQwP8A5MgBAIL7igKBiv8A78gBAHb8ZAFkUP8A+sgBAOkI///3+/8ABckBAMgO8Ozi8P8AEMkBAKgY5tDR5v8AG8kBAJc926a92/8AJskBAI+Az2epz/8AMckBAI63wDaQwP8APMkBAIL7igKBiv8AR8kBAHf8bAFsWf8AUskBAHX7RgFGNv8AXckBABLuf387CP8AZ8kBAMP/Sy0AS/8AcskBABT2s7NYBv8AfMkBABbo4OCCFP8AhskBABeb/f24Y/8AkMkBABhI/v7gtv8AmskBAKUU69ja6/8ApMkBALEv0rKr0v8ArskBALNUrIBzrP8AuMkBAL21iFQniP8AwskBABLuf387CP8AzMkBAL21iFQniP8A18kBAMP/Sy0AS/8A4skBABT2s7NYBv8A7MkBABbo4OCCFP8A9skBABeb/f24Y/8AAMoBABhI/v7gtv8ACsoBAAAA9/f39/8AFMoBAKUU69ja6/8AHsoBALEv0rKr0v8AKMoBALNUrIBzrP8AMsoBABe78fGjQP8AO8oBAAAA9/f39/8ARMoBALJFw5mOw/8ATcoBABH95uZhAf8AVsoBABeb/f24Y/8AX8oBALEv0rKr0v8AaMoBALmbmV48mf8AccoBABH95uZhAf8AesoBABeb/f24Y/8Ag8oBAAAA9/f39/8AjMoBALEv0rKr0v8AlcoBALmbmV48mf8AnsoBABT2s7NYBv8Ap8oBABe78fGjQP8AsMoBABhI/v7gtv8AucoBAKUU69ja6/8AwsoBALJFw5mOw/8Ay8oBAL21iFQniP8A1MoBABT2s7NYBv8A3coBABe78fGjQP8A5soBABhI/v7gtv8A78oBAAAA9/f39/8A+MoBAKUU69ja6/8AAcsBALJFw5mOw/8ACssBAL21iFQniP8AE8sBABT2s7NYBv8AHMsBABbo4OCCFP8AJcsBABeb/f24Y/8ALssBABhI/v7gtv8AN8sBAKUU69ja6/8AQMsBALEv0rKr0v8AScsBALNUrIBzrP8AUssBAL21iFQniP8AW8sBABT2s7NYBv8AZMsBABbo4OCCFP8AbcsBABeb/f24Y/8AdssBABhI/v7gtv8Af8sBAAAA9/f39/8AiMsBAKUU69ja6/8AkcsBALEv0rKr0v8AmssBALNUrIBzrP8Ao8sBAL21iFQniP8ArMsBALwO7+fh7/8AtcsBANZDycmUx/8AvssBAOre3d0cd/8Ax8sBALkI9vHu9v8A0MsBANMp2Ne12P8A2csBAOSL399lsP8A4ssBAO/ozs4SVv8A68sBALkI9vHu9v8A9MsBANMp2Ne12P8A/csBAOSL399lsP8ABswBAOre3d0cd/8AD8wBAOz/mJgAQ/8AGMwBALkI9vHu9v8AIcwBAMwm2tS52v8AKswBANZDycmUx/8AM8wBAOSL399lsP8APMwBAOre3d0cd/8ARcwBAOz/mJgAQ/8ATswBALkI9vHu9v8AV8wBAMwm2tS52v8AYMwBANZDycmUx/8AacwBAOSL399lsP8AcswBAOnR5+cpiv8Ae8wBAO/ozs4SVv8AhMwBAOz/kZEAP/8AjcwBAMMF+ff0+f8AlswBALwO7+fh7/8An8wBAMwm2tS52v8AqMwBANZDycmUx/8AscwBAOSL399lsP8AuswBAOnR5+cpiv8Aw8wBAO/ozs4SVv8AzMwBAOz/kZEAP/8A1cwBAMMF+ff0+f8A3swBALwO7+fh7/8A58wBAMwm2tS52v8A8MwBANZDycmUx/8A+cwBAOSL399lsP8AAs0BAOnR5+cpiv8AC80BAO/ozs4SVv8AFM0BAOz/mJgAQ/8AHc0BAPL/Z2cAH/8AJs0BALQI9e/t9f8AMs0BAKgl3Ly93P8APs0BALBksXVrsf8ASs0BALYH9/Lw9/8AVs0BAK0c4svJ4v8AYs0BAK06yJ6ayP8Abs0BALaAo2pRo/8Aes0BALYH9/Lw9/8Ahs0BAK0c4svJ4v8Aks0BAK06yJ6ayP8Ans0BALBksXVrsf8Aqs0BALy5j1Qnj/8Ats0BALYH9/Lw9/8Aws0BAKoS69ra6/8Azs0BAKgl3Ly93P8A2s0BAK06yJ6ayP8A5s0BALBksXVrsf8A8s0BALy5j1Qnj/8A/s0BALYH9/Lw9/8ACs4BAKoS69ra6/8AFs4BAKgl3Ly93P8AIs4BAK06yJ6ayP8ALs4BAKxTuoB9uv8AOs4BALaAo2pRo/8ARs4BAL7YhkoUhv8AUs4BAL8C/fz7/f8AXs4BALQI9e/t9f8Aas4BAKoS69ra6/8Ads4BAKgl3Ly93P8Ags4BAK06yJ6ayP8Ajs4BAKxTuoB9uv8Ams4BALaAo2pRo/8Aps4BAL7YhkoUhv8Ass4BAL8C/fz7/f8Avs4BALQI9e/t9f8Ays4BAKoS69ra6/8A1s4BAKgl3Ly93P8A4s4BAK06yJ6ayP8A7s4BAKxTuoB9uv8A+s4BALaAo2pRo/8ABs8BALy5j1Qnj/8AEs8BAL//fT8Aff8AHs8BAPL/Z2cAH/8AKM8BAJbxYQUwYf8AM88BAPncsrIYK/8APc8BAAWj1tZgTf8AR88BAA139PSlgv8AUc8BAA82/f3bx/8AW88BAI4g8NHl8P8AZc8BAI1X3pLF3v8Ab88BAI+nw0OTw/8Aec8BAJTOrCFmrP8Ag88BAPL/Z2cAH/8Ajc8BAJTOrCFmrP8AmM8BAJbxYQUwYf8Ao88BAPncsrIYK/8Arc8BAAWj1tZgTf8At88BAA139PSlgv8Awc8BAA82/f3bx/8Ay88BAAAA9/f39/8A1c8BAI4g8NHl8P8A388BAI1X3pLF3v8A6c8BAI+nw0OTw/8A888BAAyW7++KYv8A/M8BAAAA9/f39/8ABdABAI+Az2epz/8ADtABAPj/ysoAIP8AF9ABAA139PSlgv8AINABAI1X3pLF3v8AKdABAI/3sAVxsP8AMtABAPj/ysoAIP8AO9ABAA139PSlgv8ARNABAAAA9/f39/8ATdABAI1X3pLF3v8AVtABAI/3sAVxsP8AX9ABAPncsrIYK/8AaNABAAyW7++KYv8AcdABAA82/f3bx/8AetABAI4g8NHl8P8Ag9ABAI+Az2epz/8AjNABAJTOrCFmrP8AldABAPncsrIYK/8AntABAAyW7++KYv8Ap9ABAA82/f3bx/8AsNABAAAA9/f39/8AudABAI4g8NHl8P8AwtABAI+Az2epz/8Ay9ABAJTOrCFmrP8A1NABAPncsrIYK/8A3dABAAWj1tZgTf8A5tABAA139PSlgv8A79ABAA82/f3bx/8A+NABAI4g8NHl8P8AAdEBAI1X3pLF3v8ACtEBAI+nw0OTw/8AE9EBAJTOrCFmrP8AHNEBAPncsrIYK/8AJdEBAAWj1tZgTf8ALtEBAA139PSlgv8AN9EBAA82/f3bx/8AQNEBAAAA9/f39/8ASdEBAI4g8NHl8P8AUtEBAI1X3pLF3v8AW9EBAI+nw0OTw/8AZNEBAJTOrCFmrP8AbdEBAPL/Z2cAH/8Ad9EBAAAAGhoaGv8AgtEBAPncsrIYK/8AjNEBAAWj1tZgTf8AltEBAA139PSlgv8AoNEBAA82/f3bx/8AqtEBAAAA4ODg4P8AtNEBAAAAurq6uv8AvtEBAAAAh4eHh/8AyNEBAAAATU1NTf8A0tEBAPL/Z2cAH/8A3NEBAAAATU1NTf8A59EBAAAAGhoaGv8A8tEBAPncsrIYK/8A/NEBAAWj1tZgTf8ABtIBAA139PSlgv8AENIBAA82/f3bx/8AGtIBAAAA//////8AJNIBAAAA4ODg4P8ALtIBAAAAurq6uv8AONIBAAAAh4eHh/8AQtIBAAyW7++KYv8AS9IBAAAA//////8AVNIBAAAAmZmZmf8AXdIBAPj/ysoAIP8AZtIBAA139PSlgv8Ab9IBAAAAurq6uv8AeNIBAAAAQEBAQP8AgdIBAPj/ysoAIP8AitIBAA139PSlgv8Ak9IBAAAA//////8AnNIBAAAAurq6uv8ApdIBAAAAQEBAQP8ArtIBAPncsrIYK/8At9IBAAyW7++KYv8AwNIBAA82/f3bx/8AydIBAAAA4ODg4P8A0tIBAAAAmZmZmf8A29IBAAAATU1NTf8A5NIBAPncsrIYK/8A7dIBAAyW7++KYv8A9tIBAA82/f3bx/8A/9IBAAAA//////8ACNMBAAAA4ODg4P8AEdMBAAAAmZmZmf8AGtMBAAAATU1NTf8AI9MBAPncsrIYK/8ALNMBAAWj1tZgTf8ANdMBAA139PSlgv8APtMBAA82/f3bx/8AR9MBAAAA4ODg4P8AUNMBAAAAurq6uv8AWdMBAAAAh4eHh/8AYtMBAAAATU1NTf8Aa9MBAPncsrIYK/8AdNMBAAWj1tZgTf8AfdMBAA139PSlgv8AhtMBAA82/f3bx/8Aj9MBAAAA//////8AmNMBAAAA4ODg4P8AodMBAAAAurq6uv8AqtMBAAAAh4eHh/8As9MBAAAATU1NTf8AvNMBAAMg/f3g3f8AxdMBAPRc+vqftf8AztMBAOPcxcUbiv8A19MBAA0c/v7r4v8A4NMBAPxI+/u0uf8A6dMBAO6T9/doof8A8tMBAOD9rq4Bfv8A+9MBAA0c/v7r4v8ABNQBAPxI+/u0uf8ADdQBAO6T9/doof8AFtQBAOPcxcUbiv8AH9QBANX8enoBd/8AKNQBAA0c/v7r4v8AMdQBAAM8/PzFwP8AOtQBAPRc+vqftf8AQ9QBAO6T9/doof8ATNQBAOPcxcUbiv8AVdQBANX8enoBd/8AXtQBAA0c/v7r4v8AZ9QBAAM8/PzFwP8AcNQBAPRc+vqftf8AedQBAO6T9/doof8AgtQBAObD3d00l/8Ai9QBAOD9rq4Bfv8AlNQBANX8enoBd/8AndQBAA4M///38/8AptQBAAMg/f3g3f8Ar9QBAAM8/PzFwP8AuNQBAPRc+vqftf8AwdQBAO6T9/doof8AytQBAObD3d00l/8A09QBAOD9rq4Bfv8A3NQBANX8enoBd/8A5dQBAA4M///38/8A7tQBAAMg/f3g3f8A99QBAAM8/PzFwP8AANUBAPRc+vqftf8ACdUBAO6T9/doof8AEtUBAObD3d00l/8AG9UBAOD9rq4Bfv8AJNUBANX8enoBd/8ALdUBAMf/akkAav8ANtUBAPX/paUAJv8AQtUBAKerlTE2lf8AT9UBAALQ19cwJ/8AW9UBAAq49PRtQ/8AZ9UBABSd/f2uYf8Ac9UBAB5u/v7gkP8Af9UBAIgY+ODz+P8Ai9UBAIpD6avZ6f8Al9UBAI9x0XSt0f8Ao9UBAJedtEV1tP8Ar9UBAPX/paUAJv8Au9UBAJedtEV1tP8AyNUBAKerlTE2lf8A1dUBAALQ19cwJ/8A4dUBAAq49PRtQ/8A7dUBABSd/f2uYf8A+dUBAB5u/v7gkP8ABdYBACpA////v/8AEdYBAIgY+ODz+P8AHdYBAIpD6avZ6f8AKdYBAI9x0XSt0f8ANdYBAA2k/PyNWf8AQNYBACpA////v/8AS9YBAI9W25G/2/8AVtYBAP7h19cZHP8AYdYBABSd/f2uYf8AbNYBAIpD6avZ6f8Ad9YBAJHBtix7tv8AgtYBAP7h19cZHP8AjdYBABSd/f2uYf8AmNYBACpA////v/8Ao9YBAIpD6avZ6f8ArtYBAJHBtix7tv8AudYBAALQ19cwJ/8AxNYBAA2k/PyNWf8Az9YBAB5u/v7gkP8A2tYBAIgY+ODz+P8A5dYBAI9W25G/2/8A8NYBAJedtEV1tP8A+9YBAALQ19cwJ/8ABtcBAA2k/PyNWf8AEdcBAB5u/v7gkP8AHNcBACpA////v/8AJ9cBAIgY+ODz+P8AMtcBAI9W25G/2/8APdcBAJedtEV1tP8ASNcBAALQ19cwJ/8AU9cBAAq49PRtQ/8AXtcBABSd/f2uYf8AadcBAB5u/v7gkP8AdNcBAIgY+ODz+P8Af9cBAIpD6avZ6f8AitcBAI9x0XSt0f8AldcBAJedtEV1tP8AoNcBAALQ19cwJ/8Aq9cBAAq49PRtQ/8AttcBABSd/f2uYf8AwdcBAB5u/v7gkP8AzNcBACpA////v/8A19cBAIgY+ODz+P8A4tcBAIpD6avZ6f8A7dcBAI9x0XSt0f8A+NcBAJedtEV1tP8AA9gBAPX/paUAJv8AD9gBAGv/aABoN/8AHNgBAALQ19cwJ/8AKNgBAAq49PRtQ/8ANNgBABSd/f2uYf8AQNgBAB9z/v7gi/8ATNgBADNq79nvi/8AWNgBAD6C2abZav8AZNgBAFN5vWa9Y/8AcNgBAGfTmBqYUP8AfNgBAPX/paUAJv8AiNgBAGfTmBqYUP8AldgBAGv/aABoN/8AotgBAALQ19cwJ/8ArtgBAAq49PRtQ/8AutgBABSd/f2uYf8AxtgBAB9z/v7gi/8A0tgBACpA////v/8A3tgBADNq79nvi/8A6tgBAD6C2abZav8A9tgBAFN5vWa9Y/8AAtkBAA2k/PyNWf8ADdkBACpA////v/8AGNkBAEKIz5HPYP8AI9kBAP7h19cZHP8ALtkBABSd/f2uYf8AOdkBAD6C2abZav8ARNkBAGLSlhqWQf8AT9kBAP7h19cZHP8AWtkBABSd/f2uYf8AZdkBACpA////v/8AcNkBAD6C2abZav8Ae9kBAGLSlhqWQf8AhtkBAALQ19cwJ/8AkdkBAA2k/PyNWf8AnNkBAB9z/v7gi/8Ap9kBADNq79nvi/8AstkBAEKIz5HPYP8AvdkBAGfTmBqYUP8AyNkBAALQ19cwJ/8A09kBAA2k/PyNWf8A3tkBAB9z/v7gi/8A6dkBACpA////v/8A9NkBADNq79nvi/8A/9kBAEKIz5HPYP8ACtoBAGfTmBqYUP8AFdoBAALQ19cwJ/8AINoBAAq49PRtQ/8AK9oBABSd/f2uYf8ANtoBAB9z/v7gi/8AQdoBADNq79nvi/8ATNoBAD6C2abZav8AV9oBAFN5vWa9Y/8AYtoBAGfTmBqYUP8AbdoBAALQ19cwJ/8AeNoBAAq49PRtQ/8Ag9oBABSd/f2uYf8AjtoBAB9z/v7gi/8AmdoBACpA////v/8ApNoBADNq79nvi/8Ar9oBAD6C2abZav8AutoBAFN5vWa9Y/8AxdoBAGfTmBqYUP8A0NoBAA0s/v7g0v8A2doBAAmL/PyScv8A4toBAAHT3t4tJv8A69oBAA0l/v7l2f8A9NoBAAts/Pyukf8A/doBAAez+/tqSv8ABtsBAP3gy8sYHf8AD9sBAA0l/v7l2f8AGNsBAAts/Pyukf8AIdsBAAez+/tqSv8AKtsBAAHT3t4tJv8AM9sBAP3npaUPFf8APNsBAA0l/v7l2f8ARdsBAAxc/Py7of8ATtsBAAmL/PyScv8AV9sBAAez+/tqSv8AYNsBAAHT3t4tJv8AadsBAP3npaUPFf8ActsBAA0l/v7l2f8Ae9sBAAxc/Py7of8AhNsBAAmL/PyScv8AjdsBAAez+/tqSv8AltsBAAPQ7+87LP8An9sBAP3gy8sYHf8AqNsBAPv/mZkADf8AsdsBAA4P///18P8AutsBAA0s/v7g0v8Aw9sBAAxc/Py7of8AzNsBAAmL/PyScv8A1dsBAAez+/tqSv8A3tsBAAPQ7+87LP8A59sBAP3gy8sYHf8A8NsBAPv/mZkADf8A+dsBAA4P///18P8AAtwBAA0s/v7g0v8AC9wBAAxc/Py7of8AFNwBAAmL/PyScv8AHdwBAAez+/tqSv8AJtwBAAPQ7+87LP8AL9wBAP3gy8sYHf8AONwBAP3npaUPFf8AQdwBAPn/Z2cADf8AStwBAP7h5OQaHP8AU9wBAJKyuDd+uP8AXNwBAFOTr02vSv8AZdwBAP7h5OQaHP8AbtwBAJKyuDd+uP8Ad9wBAFOTr02vSv8AgNwBAM+Eo5hOo/8AidwBAP7h5OQaHP8AktwBAJKyuDd+uP8Am9wBAFOTr02vSv8ApNwBAM+Eo5hOo/8ArdwBABX///9/AP8AttwBAP7h5OQaHP8Av9wBAJKyuDd+uP8AyNwBAFOTr02vSv8A0dwBAM+Eo5hOo/8A2twBABX///9/AP8A49wBACrM////M/8A7NwBAP7h5OQaHP8A9dwBAJKyuDd+uP8A/twBAFOTr02vSv8AB90BAM+Eo5hOo/8AEN0BABX///9/AP8AGd0BACrM////M/8AIt0BAA/BpqZWKP8AK90BAP7h5OQaHP8ANN0BAJKyuDd+uP8APd0BAFOTr02vSv8ARt0BAM+Eo5hOo/8AT90BABX///9/AP8AWN0BACrM////M/8AYd0BAA/BpqZWKP8Aat0BAOh59/eBv/8Ac90BAP7h5OQaHP8AfN0BAJKyuDd+uP8Ahd0BAFOTr02vSv8Ajt0BAM+Eo5hOo/8Al90BABX///9/AP8AoN0BACrM////M/8Aqd0BAA/BpqZWKP8Ast0BAOh59/eBv/8Au90BAAAAmZmZmf8AxN0BAHJ4wmbCpf8Azd0BAAub/PyNYv8A1t0BAJxNy42gy/8A390BAHJ4wmbCpf8A6N0BAAub/PyNYv8A8d0BAJxNy42gy/8A+t0BAORm5+eKw/8AA94BAHJ4wmbCpf8ADN4BAAub/PyNYv8AFd4BAJxNy42gy/8AHt4BAORm5+eKw/8AJ94BADqb2KbYVP8AMN4BAHJ4wmbCpf8AOd4BAAub/PyNYv8AQt4BAJxNy42gy/8AS94BAORm5+eKw/8AVN4BADqb2KbYVP8AXd4BACLQ///ZL/8AZt4BAHJ4wmbCpf8Ab94BAAub/PyNYv8AeN4BAJxNy42gy/8Agd4BAORm5+eKw/8Ait4BADqb2KbYVP8Ak94BACLQ///ZL/8AnN4BABla5eXElP8Apd4BAHJ4wmbCpf8Art4BAAub/PyNYv8At94BAJxNy42gy/8AwN4BAORm5+eKw/8Ayd4BADqb2KbYVP8A0t4BACLQ///ZL/8A294BABla5eXElP8A5N4BAAAAs7Ozs/8A7d4BAHhU043Tx/8A994BANNSvbyAvf8AAt8BACpM////s/8ADN8BAK8l2r662v8AFt8BAASL+/uAcv8AIN8BAJBk04Cx0/8AKt8BABac/f20Yv8ANN8BADqG3rPeaf8APt8BAOkv/PzN5f8ASN8BAAAA2dnZ2f8AUt8BAHhU043Tx/8AXN8BANNSvbyAvf8AZ98BAE0p68zrxf8Act8BACpM////s/8AfN8BAK8l2r662v8Aht8BAASL+/uAcv8AkN8BAJBk04Cx0/8Amt8BABac/f20Yv8ApN8BADqG3rPeaf8Art8BAOkv/PzN5f8AuN8BAAAA2dnZ2f8Awt8BAHhU043Tx/8AzN8BANNSvbyAvf8A198BAE0p68zrxf8A4t8BACWQ///tb/8A7d8BACpM////s/8A998BAK8l2r662v8AAeABAASL+/uAcv8AC+ABAJBk04Cx0/8AFeABABac/f20Yv8AH+ABADqG3rPeaf8AKeABAOkv/PzN5f8AM+ABAAAA2dnZ2f8APeABAHhU043Tx/8ARuABACpM////s/8AT+ABAK8l2r662v8AWOABAHhU043Tx/8AYeABACpM////s/8AauABAK8l2r662v8Ac+ABAASL+/uAcv8AfOABAHhU043Tx/8AheABACpM////s/8AjuABAK8l2r662v8Al+ABAASL+/uAcv8AoOABAJBk04Cx0/8AqeABAHhU043Tx/8AsuABACpM////s/8Au+ABAK8l2r662v8AxOABAASL+/uAcv8AzeABAJBk04Cx0/8A1uABABac/f20Yv8A3+ABAHhU043Tx/8A6OABACpM////s/8A8eABAK8l2r662v8A+uABAASL+/uAcv8AA+EBAJBk04Cx0/8ADOEBABac/f20Yv8AFeEBADqG3rPeaf8AHuEBAHhU043Tx/8AJ+EBACpM////s/8AMOEBAK8l2r662v8AOeEBAASL+/uAcv8AQuEBAJBk04Cx0/8AS+EBABac/f20Yv8AVOEBADqG3rPeaf8AXeEBAOkv/PzN5f8AZuEBAHhU043Tx/8Ab+EBACpM////s/8AeOEBAK8l2r662v8AgeEBAASL+/uAcv8AiuEBAJBk04Cx0/8Ak+EBABac/f20Yv8AnOEBADqG3rPeaf8ApeEBAOkv/PzN5f8AruEBAAAA2dnZ2f8At+EBAO39np4BQv8AxeEBALGCol5Pov8A1OEBAPq01dU+T/8A4uEBAAq49PRtQ/8A8OEBABSd/f2uYf8A/uEBAB9z/v7gi/8ADOIBADFg9eb1mP8AGuIBAE9B3avdpP8AKOIBAHJ4wmbCpf8ANuIBAI+7vTKIvf8AROIBAO39np4BQv8AUuIBAI+7vTKIvf8AYeIBALGCol5Pov8AcOIBAPq01dU+T/8AfuIBAAq49PRtQ/8AjOIBABSd/f2uYf8AmuIBAB9z/v7gi/8AqOIBACpA////v/8AtuIBADFg9eb1mP8AxOIBAE9B3avdpP8A0uIBAHJ4wmbCpf8A4OIBAA2k/PyNWf8A7eIBACpA////v/8A+uIBAFFN1ZnVlP8AB+MBAP7h19cZHP8AFOMBABSd/f2uYf8AIeMBAE9B3avdpP8ALuMBAI/EuiuDuv8AO+MBAP7h19cZHP8ASOMBABSd/f2uYf8AVeMBACpA////v/8AYuMBAE9B3avdpP8Ab+MBAI/EuiuDuv8AfOMBAPq01dU+T/8AieMBAA2k/PyNWf8AluMBAB9z/v7gi/8Ao+MBADFg9eb1mP8AsOMBAFFN1ZnVlP8AveMBAI+7vTKIvf8AyuMBAPq01dU+T/8A1+MBAA2k/PyNWf8A5OMBAB9z/v7gi/8A8eMBACpA////v/8A/uMBADFg9eb1mP8AC+QBAFFN1ZnVlP8AGOQBAI+7vTKIvf8AJeQBAPq01dU+T/8AMuQBAAq49PRtQ/8AP+QBABSd/f2uYf8ATOQBAB9z/v7gi/8AWeQBADFg9eb1mP8AZuQBAE9B3avdpP8Ac+QBAHJ4wmbCpf8AgOQBAI+7vTKIvf8AjeQBAPq01dU+T/8AmuQBAAq49PRtQ/8Ap+QBABSd/f2uYf8AtOQBAB9z/v7gi/8AweQBACpA////v/8AzuQBADFg9eb1mP8A2+QBAE9B3avdpP8A6OQBAHJ4wmbCpf8A9eQBAI+7vTKIvf8AAuUBAJMP//D4//8AEeUBABgj+vrr1/8AI+UBAH///wD///8ALeUBAHGA/3//1P8APeUBAH8P//D///8ASOUBACoa9fX13P8AU+UBABc6///kxP8AX+UBAAAAAAAAAP8AauUBABkx///rzf8AfuUBAKr//wAA//8AiOUBAMDO4oor4v8AmOUBAAC+paUqKv8Ao+UBABdj3t64h/8AsuUBAIBnoF+eoP8AweUBAD///3//AP8A0eUBABHa0tJpHv8A4OUBAAuv//9/UP8A6+UBAJqT7WSV7f8A/+UBACEi///43P8ADeYBAPbn3NwUPP8AGuYBAH///wD///8AJOYBAKr/iwAAi/8AMuYBAH//iwCLi/8AQOYBAB7vuLiGC/8AU+YBAAAAqampqf8AYeYBAFX/ZABkAP8AcOYBAAAAqampqf8AfuYBACduvb23a/8AjeYBANT/i4sAi/8AnuYBADqOa1VrL/8AsuYBABf///+MAP8AwuYBAMbAzJkyzP8A0uYBAAD/i4sAAP8A3+YBAAp56emWev8A7+YBAFU9vI+8j/8AAecBAK+Pi0g9i/8AFOcBAH9nTy9PT/8AJ+cBAH9nTy9PT/8AOucBAID/0QDO0f8ATecBAMf/05QA0/8AXecBAOjr//8Uk/8Aa+cBAIr//wC///8AfOcBAAAAaWlpaf8AiecBAAAAaWlpaf8AlucBAJTh/x6Q//8ApucBAADOsrIiIv8AtecBABwP///68P8AxucBAFXAiyKLIv8A1+cBANT///8A//8A5OcBAAAA3Nzc3P8A8+cBAKoH//j4//8AA+gBACP////XAP8ADegBAB7Z2tqlIP8AHOgBAAAAgICAgP8AJugBAFX/gACAAP8AMegBADvQ/63/L/8AQugBAAAAgICAgP8ATOgBAFUP//D/8P8AWugBAOmW//9ptP8AZ+gBAACMzc1cXP8AdugBAML/gksAgv8AgugBACoP////8P8AjegBACZq8PDmjP8AmOgBAKoU+ubm+v8ApugBAPAP///w9f8AuegBAED//Hz8AP8AyOgBACYx///6zf8A2ugBAIk/5q3Y5v8A6egBAAB38PCAgP8A+egBAH8f/+D///8ACOkBACoo+vr60v8AIukBAAAA09PT0/8AMekBAFVk7pDukP8AQekBAAAA09PT0/8AUOkBAPhJ//+2wf8AX+kBAAyE//+gev8AcOkBAH3RsiCyqv8Ag+kBAI91+ofO+v8AlekBAJQ4mXeImf8AqekBAJQ4mXeImf8AvekBAJc03rDE3v8A0ekBACof////4P8A4ukBAFX//wD/AP8A7OkBAFXAzTLNMv8A++kBABUU+vrw5v8ABuoBANT///8A//8AE+oBAAD/gIAAAP8AH+oBAHGAzWbNqv8ANeoBAKr/zQAAzf8AReoBAMyY07pV0/8AV+oBALd825Nw2/8AaeoBAGepszyzcf8AfeoBALCP7nto7v8AkuoBAG//+gD6mv8AqeoBAH2n0UjRzP8AvuoBAOTkx8cVhf8A0+oBAKrGcBkZcP8A5eoBAGoJ//X/+v8A9OoBAAQe///k4f8AA+sBABpJ///ktf8AEesBABlR///erf8AIusBAKr/gAAAgP8ALOsBABsX/f315v8AOesBACr/gICAAP8AROsBADjAjmuOI/8AU+sBABv///+lAP8AX+sBAAv///9FAP8AbusBANZ72tpw1v8AeusBACZI7u7oqv8AjesBAFVk+5j7mP8AnOsBAH9D7q/u7v8Ar+sBAPF829twk/8AwusBABop///v1f8A0usBABRG///auf8A4esBABSwzc2FP/8A6+sBAPc////Ay/8A9esBANRG3d2g3f8A/+sBAIQ75rDg5v8AD+wBANT/gIAAgP8AG+wBAAD///8AAP8AJOwBAAA9vLyPj/8AM+wBAJ+14UFp4f8AQuwBABHci4tFE/8AU+wBAASK+vqAcv8AX+wBABOa9PSkYP8Ab+wBAGeqiy6LV/8AfewBABEQ///17v8Ai+wBAA23oKBSLf8Al+wBAAAAwMDAwP8Ao+wBAIts64fO6/8AsOwBAK+PzWpazf8Av+wBAJQ4kHCAkP8AzuwBAJQ4kHCAkP8A3ewBAAAF///6+v8A5+wBAGr//wD/f/8A+OwBAJKbtEaCtP8AB+0BABhU0tK0jP8AEO0BAH//gACAgP8AGu0BANQd2Ni/2P8AJ+0BAAa4//9jR/8AM+0BAHu24EDg0P8AQu0BANRz7u6C7v8ATu0BABtE9fXes/8AWe0BAAAA//////8AZO0BAAAA9fX19f8AdO0BACr/////AP8AgO0BADjAzZrNMv8Ake0BAC1D/Pf8uf8Amu0BAERb3a3djv8Ao+0BAGKyozGjVP8ArO0BACoy////zP8Ate0BAD5V5sLmmf8Avu0BAFVkxnjGef8Ax+0BAGO7hCOEQ/8A0O0BACoy////zP8A2e0BAD5V5sLmmf8A4u0BAFVkxnjGef8A6+0BAGKyozGjVP8A9O0BAGv/aABoN/8A/e0BACoy////zP8ABu4BADdR8Nnwo/8AD+4BAERb3a3djv8AGO4BAFVkxnjGef8AIe4BAGKyozGjVP8AKu4BAGv/aABoN/8AM+4BACoy////zP8APO4BADdR8Nnwo/8ARe4BAERb3a3djv8ATu4BAFVkxnjGef8AV+4BAGCeq0GrXf8AYO4BAGO7hCOEQ/8Aae4BAGz/WgBaMv8Acu4BACoZ////5f8Ae+4BAC1D/Pf8uf8AhO4BADdR8Nnwo/8Aje4BAERb3a3djv8Alu4BAFVkxnjGef8An+4BAGCeq0GrXf8AqO4BAGO7hCOEQ/8Ase4BAGz/WgBaMv8Auu4BACoZ////5f8Aw+4BAC1D/Pf8uf8AzO4BADdR8Nnwo/8A1e4BAERb3a3djv8A3u4BAFVkxnjGef8A5+4BAGCeq0GrXf8A8O4BAGO7hCOEQ/8A+e4BAGv/aABoN/8AAu8BAG7/RQBFKf8AC+8BADFJ+O34sf8AFu8BAHVhzX/Nu/8AIe8BAJDCuCx/uP8ALO8BACoy////zP8AN+8BAGNC2qHatP8AQu8BAISqxEG2xP8ATe8BAJbLqCJeqP8AWO8BACoy////zP8AY+8BAGNC2qHatP8Abu8BAISqxEG2xP8Aee8BAJDCuCx/uP8AhO8BAKS/lCU0lP8Aj+8BACoy////zP8Amu8BAEU66cfptP8Ape8BAHVhzX/Nu/8AsO8BAISqxEG2xP8Au+8BAJDCuCx/uP8Axu8BAKS/lCU0lP8A0e8BACoy////zP8A3O8BAEU66cfptP8A5+8BAHVhzX/Nu/8A8u8BAISqxEG2xP8A/e8BAIvYwB2RwP8ACPABAJbLqCJeqP8AE/ABAJ7nhAwshP8AHvABACom////2f8AKfABADFJ+O34sf8ANPABAEU66cfptP8AP/ABAHVhzX/Nu/8ASvABAISqxEG2xP8AVfABAIvYwB2RwP8AYPABAJbLqCJeqP8Aa/ABAJ7nhAwshP8AdvABACom////2f8AgfABADFJ+O34sf8AjPABAEU66cfptP8Al/ABAHVhzX/Nu/8AovABAISqxEG2xP8ArfABAIvYwB2RwP8AuPABAJbLqCJeqP8Aw/ABAKS/lCU0lP8AzvABAJ7nWAgdWP8A2fABACVC///3vP8A5PABAByv/v7ET/8A7/ABABDu2dlfDv8A+vABACoq////1P8ABfEBABxw/v7Zjv8AEPEBABbV/v6ZKf8AG/EBAA/8zMxMAv8AJvEBACoq////1P8AMfEBABxw/v7Zjv8APPEBABbV/v6ZKf8AR/EBABDu2dlfDv8AUvEBAA34mZk0BP8AXfEBACoq////1P8AaPEBAB9t/v7jkf8Ac/EBAByv/v7ET/8AfvEBABbV/v6ZKf8AifEBABDu2dlfDv8AlPEBAA34mZk0BP8An/EBACoq////1P8AqvEBAB9t/v7jkf8AtfEBAByv/v7ET/8AwPEBABbV/v6ZKf8Ay/EBABLp7OxwFP8A1vEBAA/8zMxMAv8A4fEBAAz3jIwtBP8A7PEBACoZ////5f8A9/EBACVC///3vP8AAvIBAB9t/v7jkf8ADfIBAByv/v7ET/8AGPIBABbV/v6ZKf8AI/IBABLp7OxwFP8ALvIBAA/8zMxMAv8AOfIBAAz3jIwtBP8ARPIBACoZ////5f8AT/IBACVC///3vP8AWvIBAB9t/v7jkf8AZfIBAByv/v7ET/8AcPIBABbV/v6ZKf8Ae/IBABLp7OxwFP8AhvIBAA/8zMxMAv8AkfIBAA34mZk0BP8AnPIBAA3wZmYlBv8Ap/IBACJf///toP8AsvIBABiy/v6yTP8AvfIBAAXd8PA7IP8AyPIBACpN////sv8A0/IBAB2i/v7MXP8A3vIBABHC/f2NPP8A6fIBAP7h4+MaHP8A9PIBACpN////sv8A//IBAB2i/v7MXP8ACvMBABHC/f2NPP8AFfMBAAXd8PA7IP8AIPMBAPb/vb0AJv8AK/MBACpN////sv8ANvMBAB6I/v7Zdv8AQfMBABiy/v6yTP8ATPMBABHC/f2NPP8AV/MBAAXd8PA7IP8AYvMBAPb/vb0AJv8AbfMBACpN////sv8AePMBAB6I/v7Zdv8Ag/MBABiy/v6yTP8AjvMBABHC/f2NPP8AmfMBAAfU/PxOKv8ApPMBAP7h4+MaHP8Ar/MBAPX/sbEAJv8AuvMBACoy////zP8AxfMBACJf///toP8A0PMBAB6I/v7Zdv8A2/MBABiy/v6yTP8A5vMBABHC/f2NPP8A8fMBAAfU/PxOKv8A/PMBAP7h4+MaHP8AB/QBAPX/sbEAJv8AEvQBACoy////zP8AHfQBACJf///toP8AKPQBAB6I/v7Zdv8AM/QBABiy/v6yTP8APvQBABHC/f2NPP8ASfQBAAfU/PxOKv8AVPQBAP7h4+MaHP8AX/QBAPb/vb0AJv8AavQBAPL/gIAAJv8AdfQBAJMP//D4//8Af/QBABgj+vrr1/8AjPQBABck///v2/8AmvQBABck7u7fzP8AqPQBABckzc3AsP8AtvQBABgii4uDeP8AxPQBAHGA/3//1P8Az/QBAHGA/3//1P8A2/QBAHGA7nbuxv8A5/QBAHGAzWbNqv8A8/QBAHGAi0WLdP8A//QBAH8P//D///8ABfUBAH8P//D///8ADPUBAH8P7uDu7v8AE/UBAH8OzcHNzf8AGvUBAH8Oi4OLi/8AIfUBACoa9fX13P8AJ/UBABc6///kxP8ALvUBABc6///kxP8ANvUBABc67u7Vt/8APvUBABY6zc23nv8ARvUBABc6i4t9a/8AWAwCAAAAAAAAAP8ATvUBABkx///rzf8AXfUBAKr//wAA//8AYvUBAKr//wAA//8AaPUBAKr/7gAA7v8AbvUBAKr/zQAAzf8AdPUBAKr/iwAAi/8AevUBAMDO4oor4v8AhfUBAAC+paUqKv8Ai/UBAAC///9AQP8AkvUBAAC/7u47O/8AmfUBAAC/zc0zM/8AoPUBAAC+i4sjI/8Ap/UBABdj3t64h/8AsfUBABdk///Tm/8AvPUBABdj7u7Fkf8Ax/UBABdjzc2qff8A0vUBABdji4tzVf8A3fUBAIBnoF+eoP8A5/UBAINn/5j1//8A8vUBAINm7o7l7v8A/fUBAINnzXrFzf8ACPYBAINmi1OGi/8AE/YBAD///3//AP8AHvYBAD///3//AP8AKvYBAD//7nbuAP8ANvYBAD//zWbNAP8AQvYBAD//i0WLAP8ATvYBABHa0tJpHv8AWPYBABHb//9/JP8AY/YBABHb7u52If8AbvYBABHazc1mHf8AefYBABHci4tFE/8AhPYBAAuv//9/UP8AivYBAAep//9yVv8AkfYBAAap7u5qUP8AmPYBAAapzc1bRf8An/YBAAaoi4s+L/8ApvYBAJqT7WSV7f8AtfYBACEi///43P8AvvYBACEi///43P8AyPYBACIj7u7ozf8A0vYBACIizc3Isf8A3PYBACMii4uIeP8A5vYBAPbn3NwUPP8A7vYBAH///wD///8A8/YBAH///wD///8A+fYBAH//7gDu7v8A//YBAH//zQDNzf8ABfcBAH//iwCLi/8AC/cBAB7vuLiGC/8AGfcBAB7w//+5D/8AKPcBAB7w7u6tDv8AN/cBAB7wzc2VDP8ARvcBAB7wi4tlCP8AVfcBAFX/ZABkAP8AX/cBACduvb23a/8AafcBADqOa1VrL/8AePcBADqP/8r/cP8AiPcBADqP7rzuaP8AmPcBADqPzaLNWv8AqPcBADqPi26LPf8AuPcBABf///+MAP8Aw/cBABX///9/AP8Az/cBABX/7u52AP8A2/cBABX/zc1mAP8A5/cBABX/i4tFAP8A8/cBAMbAzJkyzP8A/vcBAMbB/78+//8ACvgBAMbA7rI67v8AFvgBAMbAzZoyzf8AIvgBAMbAi2gii/8ALvgBAAp56emWev8AOfgBAFU9vI+8j/8ARvgBAFU+/8H/wf8AVPgBAFU+7rTutP8AYvgBAFU+zZvNm/8AcPgBAFU+i2mLaf8AfvgBAK+Pi0g9i/8AjPgBAH9nTy9PT/8AmvgBAH9o/5f///8AqfgBAH9n7o3u7v8AuPgBAH9ozXnNzf8Ax/gBAH9oi1KLi/8A1vgBAH9nTy9PT/8A5PgBAID/0QDO0f8A8vgBAMf/05QA0/8A/fgBAOjr//8Uk/8ABvkBAOjr//8Uk/8AEPkBAOjr7u4Sif8AGvkBAOjrzc0Qdv8AJPkBAOfsi4sKUP8ALvkBAIr//wC///8AOvkBAIr//wC///8AR/kBAIr/7gCy7v8AVPkBAIr/zQCazf8AYfkBAIr/iwBoi/8AbvkBAAAAaWlpaf8AdvkBAAAAaWlpaf8AfvkBAJTh/x6Q//8AifkBAJTh/x6Q//8AlfkBAJTh7hyG7v8AofkBAJThzRh0zf8ArfkBAJThixBOi/8AufkBAADOsrIiIv8Aw/kBAADP//8wMP8AzvkBAADP7u4sLP8A2fkBAADPzc0mJv8A5PkBAADPi4saGv8A7/kBABwP///68P8A+/kBAFXAiyKLIv8AB/oBAAAA3Nzc3P8AEfoBAKoH//j4//8AHPoBACP////XAP8AIfoBACP////XAP8AJ/oBACP/7u7JAP8ALfoBACP/zc2tAP8AM/oBACP/i4t1AP8AOfoBAB7Z2tqlIP8AQ/oBAB7a///BJf8ATvoBAB7a7u60Iv8AWfoBAB7azc2bHf8AZPoBAB7ai4tpFP8Ab/oBAAAAwMDAwP8AdPoBAAAAAAAAAP8AevoBAAAAAwMDA/8AgPoBAAAAGhoaGv8Ah/oBAAAA//////8Aj/oBAAAAHBwcHP8AlvoBAAAAHx8fH/8AnfoBAAAAISEhIf8ApPoBAAAAJCQkJP8Aq/oBAAAAJiYmJv8AsvoBAAAAKSkpKf8AufoBAAAAKysrK/8AwPoBAAAALi4uLv8Ax/oBAAAAMDAwMP8AzvoBAAAABQUFBf8A1PoBAAAAMzMzM/8A2/oBAAAANjY2Nv8A4voBAAAAODg4OP8A6foBAAAAOzs7O/8A8PoBAAAAPT09Pf8A9/oBAAAAQEBAQP8A/voBAAAAQkJCQv8ABfsBAAAARUVFRf8ADPsBAAAAR0dHR/8AE/sBAAAASkpKSv8AGvsBAAAACAgICP8AIPsBAAAATU1NTf8AJ/sBAAAAT09PT/8ALvsBAAAAUlJSUv8ANfsBAAAAVFRUVP8APPsBAAAAV1dXV/8AQ/sBAAAAWVlZWf8ASvsBAAAAXFxcXP8AUfsBAAAAXl5eXv8AWPsBAAAAYWFhYf8AX/sBAAAAY2NjY/8AZvsBAAAACgoKCv8AbPsBAAAAZmZmZv8Ac/sBAAAAaWlpaf8AevsBAAAAa2tra/8AgfsBAAAAbm5ubv8AiPsBAAAAcHBwcP8Aj/sBAAAAc3Nzc/8AlvsBAAAAdXV1df8AnfsBAAAAeHh4eP8ApPsBAAAAenp6ev8Aq/sBAAAAfX19ff8AsvsBAAAADQ0NDf8AuPsBAAAAf39/f/8Av/sBAAAAgoKCgv8AxvsBAAAAhYWFhf8AzfsBAAAAh4eHh/8A1PsBAAAAioqKiv8A2/sBAAAAjIyMjP8A4vsBAAAAj4+Pj/8A6fsBAAAAkZGRkf8A8PsBAAAAlJSUlP8A9/sBAAAAlpaWlv8A/vsBAAAADw8PD/8ABPwBAAAAmZmZmf8AC/wBAAAAnJycnP8AEvwBAAAAnp6env8AGfwBAAAAoaGhof8AIPwBAAAAo6Ojo/8AJ/wBAAAApqampv8ALvwBAAAAqKioqP8ANfwBAAAAq6urq/8APPwBAAAAra2trf8AQ/wBAAAAsLCwsP8ASvwBAAAAEhISEv8AUPwBAAAAs7Ozs/8AV/wBAAAAtbW1tf8AXvwBAAAAuLi4uP8AZfwBAAAAurq6uv8AbPwBAAAAvb29vf8Ac/wBAAAAv7+/v/8AevwBAAAAwsLCwv8AgfwBAAAAxMTExP8AiPwBAAAAx8fHx/8Aj/wBAAAAycnJyf8AlvwBAAAAFBQUFP8AnPwBAAAAzMzMzP8Ao/wBAAAAz8/Pz/8AqvwBAAAA0dHR0f8AsfwBAAAA1NTU1P8AuPwBAAAA1tbW1v8Av/wBAAAA2dnZ2f8AxvwBAAAA29vb2/8AzfwBAAAA3t7e3v8A1PwBAAAA4ODg4P8A2/wBAAAA4+Pj4/8A4vwBAAAAFxcXF/8A6PwBAAAA5eXl5f8A7/wBAAAA6Ojo6P8A9vwBAAAA6+vr6/8A/fwBAAAA7e3t7f8ABP0BAAAA8PDw8P8AC/0BAAAA8vLy8v8AEv0BAAAA9fX19f8AGf0BAAAA9/f39/8AIP0BAAAA+vr6+v8AJ/0BAAAA/Pz8/P8ALv0BAFX//wD/AP8ANP0BAFX//wD/AP8AO/0BAFX/7gDuAP8AQv0BAFX/zQDNAP8ASf0BAFX/iwCLAP8AUP0BADvQ/63/L/8AXP0BAAAAwMDAwP8AYf0BAAAAAAAAAP8AZ/0BAAAAAwMDA/8Abf0BAAAAGhoaGv8AdP0BAAAA//////8AfP0BAAAAHBwcHP8Ag/0BAAAAHx8fH/8Aiv0BAAAAISEhIf8Akf0BAAAAJCQkJP8AmP0BAAAAJiYmJv8An/0BAAAAKSkpKf8Apv0BAAAAKysrK/8Arf0BAAAALi4uLv8AtP0BAAAAMDAwMP8Au/0BAAAABQUFBf8Awf0BAAAAMzMzM/8AyP0BAAAANjY2Nv8Az/0BAAAAODg4OP8A1v0BAAAAOzs7O/8A3f0BAAAAPT09Pf8A5P0BAAAAQEBAQP8A6/0BAAAAQkJCQv8A8v0BAAAARUVFRf8A+f0BAAAAR0dHR/8AAP4BAAAASkpKSv8AB/4BAAAACAgICP8ADf4BAAAATU1NTf8AFP4BAAAAT09PT/8AG/4BAAAAUlJSUv8AIv4BAAAAVFRUVP8AKf4BAAAAV1dXV/8AMP4BAAAAWVlZWf8AN/4BAAAAXFxcXP8APv4BAAAAXl5eXv8ARf4BAAAAYWFhYf8ATP4BAAAAY2NjY/8AU/4BAAAACgoKCv8AWf4BAAAAZmZmZv8AYP4BAAAAaWlpaf8AZ/4BAAAAa2tra/8Abv4BAAAAbm5ubv8Adf4BAAAAcHBwcP8AfP4BAAAAc3Nzc/8Ag/4BAAAAdXV1df8Aiv4BAAAAeHh4eP8Akf4BAAAAenp6ev8AmP4BAAAAfX19ff8An/4BAAAADQ0NDf8Apf4BAAAAf39/f/8ArP4BAAAAgoKCgv8As/4BAAAAhYWFhf8Auv4BAAAAh4eHh/8Awf4BAAAAioqKiv8AyP4BAAAAjIyMjP8Az/4BAAAAj4+Pj/8A1v4BAAAAkZGRkf8A3f4BAAAAlJSUlP8A5P4BAAAAlpaWlv8A6/4BAAAADw8PD/8A8f4BAAAAmZmZmf8A+P4BAAAAnJycnP8A//4BAAAAnp6env8ABv8BAAAAoaGhof8ADf8BAAAAo6Ojo/8AFP8BAAAApqampv8AG/8BAAAAqKioqP8AIv8BAAAAq6urq/8AKf8BAAAAra2trf8AMP8BAAAAsLCwsP8AN/8BAAAAEhISEv8APf8BAAAAs7Ozs/8ARP8BAAAAtbW1tf8AS/8BAAAAuLi4uP8AUv8BAAAAurq6uv8AWf8BAAAAvb29vf8AYP8BAAAAv7+/v/8AZ/8BAAAAwsLCwv8Abv8BAAAAxMTExP8Adf8BAAAAx8fHx/8AfP8BAAAAycnJyf8Ag/8BAAAAFBQUFP8Aif8BAAAAzMzMzP8AkP8BAAAAz8/Pz/8Al/8BAAAA0dHR0f8Anv8BAAAA1NTU1P8Apf8BAAAA1tbW1v8ArP8BAAAA2dnZ2f8As/8BAAAA29vb2/8Auv8BAAAA3t7e3v8Awf8BAAAA4ODg4P8AyP8BAAAA4+Pj4/8Az/8BAAAAFxcXF/8A1f8BAAAA5eXl5f8A3P8BAAAA6Ojo6P8A4/8BAAAA6+vr6/8A6v8BAAAA7e3t7f8A8f8BAAAA8PDw8P8A+P8BAAAA8vLy8v8A//8BAAAA9fX19f8ABgACAAAA9/f39/8ADQACAAAA+vr6+v8AFAACAAAA/Pz8/P8AGwACAFUP//D/8P8AJAACAFUP//D/8P8ALgACAFUP7uDu4P8AOAACAFUOzcHNwf8AQgACAFUOi4OLg/8ATAACAOmW//9ptP8AVAACAOqR//9utP8AXQACAOuN7u5qp/8AZgACAOyHzc1gkP8AbwACAOqUi4s6Yv8AeAACAACMzc1cXP8AggACAACU//9qav8AjQACAACU7u5jY/8AmAACAACVzc1VVf8AowACAACUi4s6Ov8ArgACAML/gksAgv8AtQACACoA/////gAAuwACACoP////8P8AwQACACoP////8P8AyAACACoP7u7u4P8AzwACACoOzc3Nwf8A1gACACoOi4uLg/8A3QACACZq8PDmjP8A4wACACdw///2j/8A6gACACdw7u7mhf8A8QACACdvzc3Gc/8A+AACACdvi4uGTv8A/wACAKoU+ubm+v8ACAECAPAP///w9f8AFgECAPAP///w9f8AJQECAO8P7u7g5f8ANAECAPAOzc3Bxf8AQwECAO8Oi4uDhv8AUgECAED//Hz8AP8AXAECACYx///6zf8AaQECACYx///6zf8AdwECACUy7u7pv/8AhQECACYxzc3Jpf8AkwECACcxi4uJcP8AoQECAIk/5q3Y5v8AqwECAIpA/7/v//8AtgECAIpA7rLf7v8AwQECAIo/zZrAzf8AzAECAIlAi2iDi/8A1wECAAB38PCAgP8A4gECAH8f/+D///8A7AECAH8f/+D///8A9wECAH8f7tHu7v8AAgICAH8fzbTNzf8ADQICAH8fi3qLi/8AGAICACNz7u7dgv8AJwICACN0///si/8ANwICACNz7u7cgv8ARwICACNzzc2+cP8AVwICACNzi4uBTP8AZwICACoo+vr60v8AfAICAAAA09PT0/8AhgICAAAA09PT0/8AkAICAPhJ//+2wf8AmgICAPlR//+uuf8ApQICAPhR7u6irf8AsAICAPlQzc2Mlf8AuwICAPlQi4tfZf8AxgICAAyE//+gev8A0gICAAyE//+gev8A3wICAAuE7u6Vcv8A7AICAAyFzc2BYv8A+QICAAyFi4tXQv8ABgMCAH3RsiCyqv8AFAMCAI91+ofO+v8AIQMCAI9P/7Di//8ALwMCAI9P7qTT7v8APQMCAI5PzY22zf8ASwMCAI9Oi2B7i/8AWQMCAK+P/4Rw//8AaAMCAJQ4mXeImf8AdwMCAJQ4mXeImf8AhgMCAJc03rDE3v8AlQMCAJc1/8rh//8ApQMCAJc17rzS7v8AtQMCAJc1zaK1zf8AxQMCAJY1i257i/8A1QMCACof////4P8A4QMCACof////4P8A7gMCACof7u7u0f8A+wMCACofzc3NtP8ACAQCACofi4uLev8AFQQCAFXAzTLNMv8AHwQCABUU+vrw5v8AJQQCANT///8A//8ALQQCANT///8A//8ANgQCANT/7u4A7v8APwQCANT/zc0Azf8ASAQCANT/i4sAi/8AUQQCAO+5sLAwYP8AWAQCAOTL//80s/8AYAQCAOTL7u4wp/8AaAQCAOTMzc0pkP8AcAQCAOTLi4scYv8AeAQCAHGAzWbNqv8AiQQCAKr/zQAAzf8AlAQCAMyY07pV0/8AoQQCAMuZ/+Bm//8ArwQCAMuZ7tFf7v8AvQQCAMuZzbRSzf8AywQCAMuai3o3i/8A2QQCALd825Nw2/8A5gQCALd9/6uC//8A9AQCALd97p957v8AAgUCALd9zYlozf8AEAUCALd8i11Hi/8AHgUCAGepszyzcf8ALQUCALCP7nto7v8APQUCAG//+gD6mv8ATwUCAH2n0UjRzP8AXwUCAOTkx8cVhf8AbwUCAKrGcBkZcP8AfAUCAGoJ//X/+v8AhgUCAAQe///k4f8AkAUCAAQe///k4f8AmwUCAAQe7u7V0v8ApgUCAAMdzc23tf8AsQUCAAUdi4t9e/8AvAUCABpJ///ktf8AxQUCABlR///erf8A0QUCABlR///erf8A3gUCABlS7u7Pof8A6wUCABlSzc2zi/8A+AUCABlSi4t5Xv8ABQYCAKr/gAAAgP8ACgYCAKr/gAAAgP8AEwYCACoA/////gAAGAYCABsX/f315v8AIAYCADjAjmuOI/8AKgYCADjB/8D/Pv8ANQYCADjA7rPuOv8AQAYCADjAzZrNMv8ASwYCADjAi2mLIv8AVgYCABv///+lAP8AXQYCABv///+lAP8AZQYCABv/7u6aAP8AbQYCABv/zc2FAP8AdQYCABv/i4taAP8AfQYCAAv///9FAP8AhwYCAAv///9FAP8AkgYCAAv/7u5AAP8AnQYCAAv/zc03AP8AqAYCAAv/i4slAP8AswYCANZ72tpw1v8AugYCANZ8//+D+v8AwgYCANZ87u566f8AygYCANZ8zc1pyf8A0gYCANV8i4tHif8A2gYCACZI7u7oqv8A6AYCAFVk+5j7mP8A8gYCAFVl/5r/mv8A/QYCAFVk7pDukP8ACAcCAFVkzXzNfP8AEwcCAFVki1SLVP8AHgcCAH9D7q/u7v8ALAcCAH9E/7v///8AOwcCAH9E7q7u7v8ASgcCAH9EzZbNzf8AWQcCAH9Di2aLi/8AaAcCAPF829twk/8AdgcCAPF9//+Cq/8AhQcCAPF97u55n/8AlAcCAPF9zc1oif8AowcCAPF8i4tHXf8AsgcCABop///v1f8AvQcCABRG///auf8AxwcCABRG///auf8A0gcCABNF7u7Lrf8A3QcCABNFzc2vlf8A6AcCABRFi4t3Zf8A8wcCABSwzc2FP/8A+AcCAPc////Ay/8A/QcCAPVJ//+1xf8AAwgCAPVJ7u6puP8ACQgCAPVKzc2Rnv8ADwgCAPVJi4tjbP8AFQgCANRG3d2g3f8AGggCANRE//+7//8AIAgCANRE7u6u7v8AJggCANREzc2Wzf8ALAgCANRDi4tmi/8AMggCAIQ75rDg5v8APQgCAMTd8KAg8P8ARAgCAL/P/5sw//8ATAgCAMDP7pEs7v8AVAgCAMDPzX0mzf8AXAgCAMDPi1Uai/8AZAgCAAD///8AAP8AaAgCAAD///8AAP8AbQgCAAD/7u4AAP8AcggCAAD/zc0AAP8AdwgCAAD/i4sAAP8AfAgCAAA9vLyPj/8AhggCAAA+///Bwf8AkQgCAAA+7u60tP8AnAgCAAA+zc2bm/8ApwgCAAA+i4tpaf8AsggCAJ+14UFp4f8AvAgCAJ+3/0h2//8AxwgCAJ+37kNu7v8A0ggCAJ+2zTpfzf8A3QgCAJ+3iydAi/8A6AgCABHci4tFE/8A9AgCAASK+vqAcv8A+wgCAAmW//+Maf8AAwkCAAmW7u6CYv8ACwkCAAmWzc1wVP8AEwkCAAmWi4tMOf8AGwkCABOa9PSkYP8AJgkCAGeqiy6LV/8ALwkCAGer/1T/n/8AOQkCAGer7k7ulP8AQwkCAGerzUPNgP8ATQkCAGeqiy6LV/8AVwkCABEQ///17v8AYAkCABEQ///17v8AagkCABIR7u7l3v8AdAkCABIRzc3Fv/8AfgkCABIQi4uGgv8AiAkCAA23oKBSLf8AjwkCAA24//+CR/8AlwkCAA247u55Qv8AnwkCAA24zc1oOf8ApwkCAA25i4tHJv8ArwkCAIts64fO6/8AtwkCAJB4/4fO//8AwAkCAJB47n7A7v8AyQkCAJB4zWymzf8A0gkCAJF3i0pwi/8A2wkCAK+PzWpazf8A5QkCAK+Q/4Nv//8A8AkCAK+Q7npn7v8A+wkCAK+QzWlZzf8ABgoCAK+Qi0c8i/8AEQoCAJQ4kHCAkP8AGwoCAJU4/8bi//8AJgoCAJU47rnT7v8AMQoCAJQ5zZ+2zf8APAoCAJU4i2x7i/8ARwoCAJQ4kHCAkP8AUQoCAAAF///6+v8AVgoCAAAF///6+v8AXAoCAAAF7u7p6f8AYgoCAAAEzc3Jyf8AaAoCAAADi4uJif8AbgoCAGr//wD/f/8AegoCAGr//wD/f/8AhwoCAGr/7gDudv8AlAoCAGr/zQDNZv8AoQoCAGr/iwCLRf8ArgoCAJKbtEaCtP8AuAoCAJKc/2O4//8AwwoCAJKc7lys7v8AzgoCAJKczU+Uzf8A2QoCAJObizZki/8A5AoCABhU0tK0jP8A6AoCABSw//+lT/8A7QoCABSw7u6aSf8A8goCABSwzc2FP/8A9woCABSwi4taK/8A/AoCANQd2Ni/2P8ABAsCANQe///h//8ADQsCANQe7u7S7v8AFgsCANQdzc21zf8AHwsCANQdi4t7i/8AKAsCAAa4//9jR/8ALwsCAAa4//9jR/8ANwsCAAa47u5cQv8APwsCAAa4zc1POf8ARwsCAAa5i4s2Jv8AmQwCACoA/////gAATwsCAHu24EDg0P8AWQsCAIH//wD1//8AZAsCAIH/7gDl7v8AbwsCAIH/zQDFzf8AegsCAIH/iwCGi/8AhQsCANRz7u6C7v8AjAsCAOPX0NAgkP8AlgsCAOvB//8+lv8AoQsCAOvA7u46jP8ArAsCAOvAzc0yeP8AtwsCAOvAi4siUv8AwgsCABtE9fXes/8AyAsCABtF///nuv8AzwsCABtE7u7Yrv8A1gsCABtEzc26lv8A3QsCABtDi4t+Zv8A5AsCAAAA//////8A6gsCAAAA9fX19f8A9QsCACr/////AP8A/AsCACr/////AP8ABAwCACr/7u7uAP8ADAwCACr/zc3NAP8AFAwCACr/i4uLAP8AHAwCADjAzZrNMv8AkBACAHUgAgCsDAIArgwCALAMAgCyDAIAtAwCALYMAgC4DAIAugwCALwMAgC/DAIAwgwCAMUMAgDIDAIAywwCAM4MAgDRDAIA1AwCANcMAgDaDAIAAAAAAAQAAAAEAAAACwAAADYAAAAWAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAvBkCAAkAAADCGQIACgAAAMsZAgALAAAADRoCAAwAAAATGgIADQAAABgaAgAOAAAAyxkCAA8AAACgGgIAEAAAAKcaAgARAAAArxoCABIAAAC2GgIAEwAAAMIaAgAUAAAADRoCABUAAADOGgIAFgAAANYaAgAXAAAA4BoCABgAAADuGgIAGQAAAPUaAgAaAAAA+hoCABsAAAD9GgIAHAAAAAIbAgAdAAAAChsCAB4AAAAQGwIAHwAAABYbAgAgAAAAHRsCACEAAAAjGwIAIQAAACsbAgAiAAAAMhsCACMAAADLGQIAJAAAAKcaAgARAAAArxoCABIAAAApHQIAJQAAALYaAgATAAAAwhoCABQAAAANGgIAFQAAADQdAgAmAAAA1hoCABcAAADgGgIAGAAAAO4aAgAZAAAA9RoCABoAAAD6GgIAGwAAAP0aAgAcAAAAPB0CACcAAAAKGwIAHgAAABAbAgAfAAAAFhsCACAAAAAdGwIAIQAAACMbAgAhAAAAKxsCACIAAAAyGwIAIwAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAT+//+H/v//BwAAAAAAAAAA//9/////f//////////zf/79//////9///////////8P4P////8x/P///wAAAAAAAAD//////////////wEA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDX///7/////39/VP3/DwD+3////////////t//////AwD///////+fGf///88/AwAAAAAAAP7///9/Av7///9/AAAAAAAAAAAA////BwcAAAAAAP7//wf+BwAAAAD+//////////98/38vAGAAAADg////////IwAAAP8DAAAA4J/5///9xQMAAACwAwADAOCH+f///W0DAAAAXgAAHADgr/v///3tIwAAAAABAAAA4J/5///9zSMAAACwAwAAAODHPdYYx78DAAAAAAAAAADg3/3///3vAwAAAAADAAAA4N/9///97wMAAABAAwAAAODf/f///f8DAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA/v////9/DQA/AAAAAAAAAJYl8P6ubA0gHwAAAAAAAAAAAAAAAAAAAP/+////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////z8A/////38A7doHAAAAAFABUDGCq2IsAAAAAEAAyYD1BwAAAAAIAQL/////////////////////////D///////////////A///Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAEBMAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAACAAAAA/gMAAP7///////////8fAP7/////////////B+D/////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8/AAAAAAAAAAAAAAD//////////////////////////w8AAAAAAAAAAAAAAAAAAAAAYP8H/v//h/7//wcAAAAAAACAAP//f////3//////AAAAAAAAAP//////////////AQD4AwADAAAAAAD//////////z8AAAADAAAAwNf///v/////f39U/f8PAP7f///////////+3/////97AP///////58Z////zz8DAAAAAAAA/v///38C/v///38A/v/7//+7FgD///8HBwAAAAAA/v//B///BwD/A////////////3z/f+///z3/A+7////////z/z8e/8//AADun/n///3F0585gLDP/wMA5If5///9bdOHOQBewP8fAO6v+////e3zvzsAAMH/AADun/n///3N8485wLDD/wAA7Mc91hjHv8PHPYAAgP8AAO7f/f///e/D3z1gAMP/AADs3/3///3vw989YEDD/wAA7N/9///9/8PPPYAAw/8AAAAAAAAAAAAAAAAAAAAAAAD+/////3//B/9//wMAAAAAliXw/q5s/ztfP/8DAAAAAAAAAAP/A6DC//7///8D/v/fD7/+/z/+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HwIAAACgAAAA/v8+AP7///////////8fZv7/////////////dxkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAmNwAAPjlAABw5AAAZOcAAGTnAADQ6AAAcOQAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAMwAAADQAAAApAAAANQAAAA0AAAAaAAAAKgAAAAkAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADYAAAA3AAAAMgAAADgAAAAOAAAAGwAAADMAAAALAAAADAAAAAIAAAAAAQAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRYSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2BAQCoJwIAgYIBALEnAgC4JwIAwScCABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAADc6wAASO0AALTuAAAg8AAAIPAAAIzxAAC07gAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFxICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAADMAAAA0AAAAKQAAADUAAAANAAAAGgAAACoAAAAJAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAA2AAAANwAAADIAAAA4AAAADgAAABsAAAAzAAAACwAAAAwAAAACAAAAAAEAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTKAIAWSgCAFwoAgBiKAIA/CcCAGkoAgByKAIAeigCADTzAAAUAAAAQy5VVEYtOAAAAAAAAAAAAAAAAADeEgSVAAAAAP///////////////wIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM0xj0AAAJAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAEAAAAPTtAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmPQAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAQAAAA/PECAAAEAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAr/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY9AAAHPUAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABPYCAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A/CkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7/lwAPmAUAES/vAApaiwBtH20Az342AAnLJwBGT7cAnmY/AC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7/EYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj/ACdzTQAGBjEAylYVAMmocwB74mAAa4zAACAAAAAJAAAACgAAAA0AAAALAAAADAAAAIUAAAAAIAAAASAAAAIgAAADIAAABCAAAAUgAAAGIAAACCAAAAkgAAAKIAAAKCAAACkgAABfIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QVfcIkA/wkvD3QAAADzSwIAbgAAAPVLAgByAAAA90sCAGYAAAD5SwIAYQAAAPtLAgBlAAAA/UsCAHcAAAD/SwIAVwAAAAxMAgBzAAAAGkwCAFMAAAAmTAIAZAAAADNMAgBEAAAAP0wCAAAAAAAAAAAAAAAAAAAABAAEABsAGwAgACAAIwAhAAoAAgAWAAkAIQAhACEAFQAcAAEAFAAUABQAFAAUABQAFAAIAAQABQAbAAIAFwAbACAAHwAeAB0ACQATAAAAFQASABUAAwAHABUAFQAUABQAFAAUABQAFAAUABQACAAEAAUABQAGABsAGgAYABkAIAAHABUAFAAUABQAFAAUABQACwAUAA0AFAAMABQAFAAUAA4AFAAUABQAEAAUAA8AFAARAAAAAAAAAK4ALgAvADMANQAwADcAqgDbANsA2wDbAAAAPQCHADcANwDbANsAAAAoADUALgAyAC8AYgAAAAAARwAAAAAA2wBRAAAA2wDbANsAAADbAIQAVQDbAIIA2wAAAIEA2wAAAD4AQgBBAEgARABSAFsAAAAAAF4AXwDbAAAA2wDbANsAAAAAAHsASQBXAFIAWgBaAF0AAABfAAAAXwAAAGUAXQBfAAAAXQBuAGoAAABpAAAAbgAAANsAkwCaAKEAqACrAHAAsQC4AL8AxgDNANMAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAQABwADAAQABQAFAAYABgAIAAcABwARABYAEgARABIACAAIAA8ADwAXAA8AGAAPABkAGgAaAB4AFgA0AB4ABQAyAAYAIgAiADMAFwAYADUAGQAaABoAKgA2ACoANAA3ADIARQA7ADwAMwA7ADwARgA1AEcASABMADYAIgBJAEoANwBFAE4AUABiAFEAUgBUAEYARwBVAEgATABWAEkASgBYAFoATgBEAFAAUQBSAFQAOAAvACwAVQApAFYAGwAQAFgAWgBdAF0AXQBdAF0AXQBdAF4AXgBeAF4AXgBeAF4AXwBfAF8AXwBfAF8AXwBgAAkAYABgAGAAYABgAGEAYQBjAAIAYwBjAGMAYwBjAGQAAABkAAAAZABkAGQAZQAAAGUAZQBlAGUAZQBmAGYAAABmAGYAZgBmAGcAAABnAGcAZwBnAGgAAABoAGgAaABoAGgAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAFwAAQBdAF0AXgBeAF8AXwBcAFwAXABcAFwAYABcAFwAXABhAFwAXABiAGIAYgBiAGIAYgBiAGMAZABlAGYAZgBcAFwAZwBcAFwAXABgAFwAXABhAFwAYQBcAGgAYQBcAGIAYgBiAGIAYgBiAGIAYgBjAGQAZQBlAFwAZgBcAFwAXABnAGgAYQBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAAABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAAoACwAMAA0ADgAKAA8AEAARABIAEwAKABQAFQAVABUAFgAXABUAGAAVABUAGQAVABUAFQAaABUAFQAKABUAFQAVABYAFwAYABUAFQAZABUAFQAVABoAFQAVABUAFQAbAAwADAAkAB4AHgAgACEAIAAhACQAJQAmAC0AMgAvAC4AKgAlACYAKAApADMAKgA0ACsANQA2ADcAPAAyAEcAPQAiAEUAIgA/AEAARgAzADQASAA1ADYANwAvAEkAKgBHAEoARQBMAFwAPABGAFwAPQBNAEgATgBPAFIASQBBAFAAUQBKAEwAUwBUADEAVQBWAFcATQBOAFgATwBSAFkAUABRAFoAWwBTAEQAVABVAFYAVwBLAEQALABYACwAWQA4ACwAWgBbAB0AHQAdAB0AHQAdAB0AHwAfAB8AHwAfAB8AHwAjACMAIwAjACMAIwAjACcAXAAnACcAJwAnACcAMAAwADkAHAA5ADkAOQA5ADkAOgBcADoAXAA6ADoAOgA7AFwAOwA7ADsAOwA7AD4APgBcAD4APgA+AD4AQgBcAEIAQgBCAEIAQwBcAEMAQwBDAEMAQwAJAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAgArv/RAAoArv+u/wsArv+u/67/rv+u/67/rv+u/wUA0QCu/9EA0QDRANEA0QDRANEA0QCu//v/rv8OAOz/rv+u/67/rv/RANEA0QDRANEADQAlAAwAQgAQAFAAEwBtAHsAFACYAA8ApgDDAK7/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/xcArv93AK7/BwAuAK7/JgCu/xcAEQAjAK7/DQCu/67/rv+u/zoArv+u/zUArv+u/67/KACu/wcArv87AEUArv9IAK7/rv+u/67/rv+u/67//P/oAPb///8aAAAAJwABADIArv+u/wIAJAADAC8Arv+u/67/rv+u//7/lACu/wkAGwCu/7z/rv+u/6//rv+u/67/rv+u/67/rv8AAAAAAABt5uzeBQALAEkAMQFTAH8BMAFpAHgB/wCBAVMCggGDAYQBhQGGAVQChwGIAYkBVgKKAVcCiwGMAY4B3QGPAVkCkAFbApEBkgGTAWAClAFjApYBaQKXAWgCmAGZAZwBbwKdAXICnwF1AqYBgAKnAagBqQGDAqwBrQGuAYgCrwGwAbEBigKyAYsCtwGSArgBuQG8Ab0BxAHGAcQBxQHFAcYBxwHJAccByAHIAckBygHMAcoBywHLAcwB8QHzAfEB8gHyAfMB9AH1AfYBlQH3Ab8BIAKeAYYDrAOIA60DiQOuA4oDrwOMA8wDjgPNA48DzgOZA0UDmQO+H6MDwgP3A/gD+gP7A2Aemx6eHt8AWR9RH1sfUx9dH1UfXx9XH7wfsx/MH8Mf7B/lH/wf8x86AmUsOwI8Aj0CmgE+AmYsQQJCAkMCgAFEAokCRQKMAvQDuAP5A/ID/QN7A/4DfAP/A30DwATPBCYhyQMqIWsAKyHlADIhTiGDIYQhYCxhLGIsawJjLH0dZCx9Am0sUQJuLHECbyxQAnAsUgJyLHMsdSx2LH4sPwJ/LEAC8izzLH2neR2Lp4ynjadlAqqnZgLHECctzRAtLXYDdwOcA7UAkgPQA5gD0QOmA9UDoAPWA5oD8AOhA/EDlQP1A88D1wMAAAAAQQAgGsAAIB8AAQEvMgEBBTkBAQ9KAQEteQEBBXADAQORAyARowMgCQAEUBAQBCAgYAQBIYoEATXBBAEN0AQBPxQFARMxBTAmoAEBBbMBAQPNAQEP3gEBEfgBASciAgER2AMBFwAeAZWgHgFfCB/4CBgf+AYoH/gIOB/4CEgf+AZoH/gIiB/4CJgf+AioH/gIuB/4AroftgLIH6oE2B/4AtofnALoH/gC6h+QAvgfgAL6H4ICRgIBCRAFAQNgIRAQACwwL2csAQWALAFj6ywBA0CmAS2ApgEXIqcBDTKnAT15pwEDfqcBCZCnAQOgpwEJIf8gGgAAAAB7IHZhciBwYXRoID0gUG9pbnRlcl9zdHJpbmdpZnkoJDApOyB2YXIgZGF0YSA9IFBvaW50ZXJfc3RyaW5naWZ5KCQxKTsgRlMuY3JlYXRlUGF0aCgiLyIsIFBBVEguZGlybmFtZShwYXRoKSk7IEZTLndyaXRlRmlsZShQQVRILmpvaW4oIi8iLCBwYXRoKSwgZGF0YSk7IH0AY29yZQB4ZG90dmVyc2lvbgAxLjcAMS40ADEuMgBfbGRyYXdfAF9oZHJhd18AX3RkcmF3XwBfaGxkcmF3XwBfdGxkcmF3XwB4ZG90IHZlcnNpb24gIiVzIiB0b28gbG9uZwAgJWQgACUuMDJmACVzJWQgLQAjJTAyeCUwMnglMDJ4JTAyeABzZXRsaW5ld2lkdGgoACUuM2YAUyAAQyAAMiAARSAAZSAARiAAdCAldSAAVCAAZG90OmRvdABndjpkb3QAY2Fub246ZG90AHBsYWluOmRvdABwbGFpbi1leHQ6ZG90AHhkb3Q6eGRvdAB4ZG90MS4yOnhkb3QAeGRvdDEuNDp4ZG90AEkgACJfc3ViZ3JhcGhfY250IjogJWQAIl9ndmlkIjogJWQAImVkZ2VzIjogWwoAIl9ndmlkIjogJWQsCgAidGFpbCI6ICVkLAoAImhlYWQiOiAlZAAib2JqZWN0cyI6IFsKACJub2RlcyI6IFsKACJuYW1lIjogIiVzIgBcIgBcLwBcYgBcZgBcbgBccgBcdAAic3ViZ3JhcGhzIjogWwoAIiVzIjogACIlcyIAQ291bGQgbm90IHBhcnNlIHhkb3QgIiVzIgoAWwoAIm9wIjogIiVjIiwKACJyZWN0IjogWyUuMDNmLCUuMDNmLCUuMDNmLCUuMDNmXQoAIm9wIjogIkwiLAoAIm9wIjogIlQiLAoAInB0IjogWyUuMDNmLCUuMDNmXSwKACJhbGlnbiI6ICIlYyIsCgAid2lkdGgiOiAlLjAzZiwKACJ0ZXh0IjogIiVzIgoAImdyYWQiOiAibm9uZSIsCgAiY29sb3IiOiAiJXMiCgAiZ3JhZCI6ICJsaW5lYXIiLAoAImdyYWQiOiAicmFkaWFsIiwKACJvcCI6ICJGIiwKACJzaXplIjogJS4wM2YsCgAiZmFjZSI6ICIlcyIKACJvcCI6ICJTIiwKACJzdHlsZSI6ICIlcyIKACJvcCI6ICJ0IiwKACJmb250Y2hhciI6ICVkCgAicDAiOiBbJS4wM2YsJS4wM2YsJS4wM2ZdLAoAInAxIjogWyUuMDNmLCUuMDNmLCUuMDNmXSwKACJzdG9wcyI6IFsAeyJmcmFjIjogJS4wM2YsICJjb2xvciI6ICIlcyJ9AF0KACJwMCI6IFslLjAzZiwlLjAzZl0sCgAicDEiOiBbJS4wM2YsJS4wM2ZdLAoAInBvaW50cyI6IFsAWyUuMDNmLCUuMDNmXQBkcmF3XwBsZHJhd18AaGRyYXdfAHRkcmF3XwBobGRyYXdfAHRsZHJhd18AImRpcmVjdGVkIjogJXMsCgAic3RyaWN0IjogJXMARHVwbGljYXRlIGNsdXN0ZXIgbmFtZSAiJXMiCgB4ZG90AGpzb24AanNvbjAAZG90X2pzb24AeGRvdF9qc29uAGpzb246anNvbgBqc29uMDpqc29uAGRvdF9qc29uOmpzb24AeGRvdF9qc29uOmpzb24AbiA+PSA0AGd2cmVuZGVyX2NvcmVfZmlnLmMAZmlnX2JlemllcgBmaWdfcmVzb2x2ZV9jb2xvcgBmaWcAZmlnOmZpZwBtYXAAcmVjdCAlcyAlZCwlZCAlZCwlZAoAY2lyY2xlICVzICVkLCVkLCVkCgBwb2x5ICVzACAlZCwlZABndnJlbmRlcl9jb3JlX21hcC5jAG1hcF9vdXRwdXRfc2hhcGUAcmVjdGFuZ2xlICglZCwlZCkgKCVkLCVkKSAlcyAlcwoAPGFyZWEgc2hhcGU9ImNpcmNsZSIAPGFyZWEgc2hhcGU9InJlY3QiADxhcmVhIHNoYXBlPSJwb2x5IgAgaHJlZj0iACB0aXRsZT0iACBhbHQ9IiIAIGNvb3Jkcz0iACVkLCVkLCVkACVkLCVkLCVkLCVkACVkLCVkACwlZCwlZAAiPgoAPC9tYXA+CgBiYXNlIHJlZmVyZXIKAGRlZmF1bHQgADxtYXAgaWQ9IgAiIG5hbWU9IgBpc21hcDptYXAAY21hcDptYXAAaW1hcDptYXAAY21hcHg6bWFwAGltYXBfbnA6bWFwAGNtYXB4X25wOm1hcAAjICVzCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjNmICVkICUuNGYgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKACVkICVkICMlMDJ4JTAyeCUwMngKAGd2cmVuZGVyX2NvcmVfbXAuYwBtcF9yZXNvbHZlX2NvbG9yACVkICVkICVkICVkICVkICVkICUuMWYgJS40ZiAlZCAlLjFmICUuMWYgJWQgJWQgJXNcMDAxCgAjIGVuZCBvZiBGSUcgZmlsZQoAI0ZJRyAzLjIKACMgR2VuZXJhdGVkIGJ5ICVzIHZlcnNpb24gJXMgKCVzKQoAIyBUaXRsZTogJXMKACMgUGFnZXM6ICVkCgBQb3J0cmFpdAoAQ2VudGVyCgBJbmNoZXMKAExldHRlcgoAMTAwLjAwCgBTaW5nbGUKAC0yCgAxMjAwACAyCgBtcABtcDptcAAgXSAgJWQgdHJ1ZSAlcwoAIF0gICVkIGZhbHNlICVzCgAgc2V0bGluZXdpZHRoCgAlcyAAc2V0aHNiACUuNWcgJS41ZyAlLjVnICVzY29sb3IKACUgAG5ld3BhdGggACBtb3ZldG8KACBsaW5ldG8KAHN0cm9rZQoAIGN1cnZldG8KAGNsb3NlcGF0aCBmaWxsCgBjbG9zZXBhdGggc3Ryb2tlCgAgZWxsaXBzZV9wYXRoIGZpbGwKACBlbGxpcHNlX3BhdGggc3Ryb2tlCgAgLyVzIHNldF9mb250CgAgbW92ZXRvIAAgJXMgYWxpZ25lZHRleHQKAFsgL1JlY3QgWyAAIF0KACAgL0JvcmRlciBbIDAgMCAwIF0KICAvQWN0aW9uIDw8IC9TdWJ0eXBlIC9VUkkgL1VSSSAlcyA+PgogIC9TdWJ0eXBlIC9MaW5rCi9BTk4gcGRmbWFyawoAZ3NhdmUKACUlICVzCgAwIDAgMCBlZGdlY29sb3IKAGVuZHBhZ2UKc2hvd3BhZ2UKZ3Jlc3RvcmUKACUlUGFnZVRyYWlsZXIKACUlJSVFbmRQYWdlOiAlZAoAJSUlJVBhZ2U6ICVkICVkCgAlJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoATGFuZHNjYXBlAFBvcnRyYWl0ACUlJSVQYWdlT3JpZW50YXRpb246ICVzCgA8PCAvUGFnZVNpemUgWyVkICVkXSA+PiBzZXRwYWdlZGV2aWNlCgAlZCAlZCAlZCBiZWdpbnBhZ2UKAGdzYXZlCiVkICVkICVkICVkIGJveHByaW0gY2xpcCBuZXdwYXRoCgAlZyAlZyBzZXRfc2NhbGUgJWQgcm90YXRlICVnICVnIHRyYW5zbGF0ZQoAY2FudmFzIHNpemUgKCVkLCVkKSBleGNlZWRzIFBERiBsaW1pdCAoJWQpCgkoc3VnZ2VzdCBzZXR0aW5nIGEgYm91bmRpbmcgYm94IHNpemUsIHNlZSBkb3QoMSkpCgBbIC9Dcm9wQm94IFslZCAlZCAlZCAlZF0gL1BBR0VTIHBkZm1hcmsKACVkICVkIHNldGxheWVyCgAlJSUlVGl0bGU6ICVzCgAlJVBhZ2VzOiAoYXRlbmQpCgAlJVBhZ2VzOiAxCgAlJUJvdW5kaW5nQm94OiAoYXRlbmQpCgAlJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlJUVuZENvbW1lbnRzCnNhdmUKAHNldHVwTGF0aW4xCgBbIHtDYXRhbG9nfSA8PCAvVVJJIDw8IC9CYXNlICVzID4+ID4+Ci9QVVQgcGRmbWFyawoAJSVCZWdpblByb2xvZwAvRG90RGljdCAyMDAgZGljdCBkZWYARG90RGljdCBiZWdpbgAvc2V0dXBMYXRpbjEgewBtYXJrAC9FbmNvZGluZ1ZlY3RvciAyNTYgYXJyYXkgZGVmACBFbmNvZGluZ1ZlY3RvciAwAElTT0xhdGluMUVuY29kaW5nIDAgMjU1IGdldGludGVydmFsIHB1dGludGVydmFsAEVuY29kaW5nVmVjdG9yIDQ1IC9oeXBoZW4gcHV0ACUgU2V0IHVwIElTTyBMYXRpbiAxIGNoYXJhY3RlciBlbmNvZGluZwAvc3Rhcm5ldElTTyB7ACAgICAgICAgZHVwIGR1cCBmaW5kZm9udCBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4AICAgICAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9eyBwb3AgcG9wIH0gaWZlbHNlACAgICAgICAgfSBmb3JhbGwAICAgICAgICAvRW5jb2RpbmcgRW5jb2RpbmdWZWN0b3IgZGVmACAgICAgICAgY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnQAfSBkZWYAL1RpbWVzLVJvbWFuIHN0YXJuZXRJU08gZGVmAC9UaW1lcy1JdGFsaWMgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGQgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGRJdGFsaWMgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLU9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXIgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllci1Cb2xkIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGRPYmxpcXVlIHN0YXJuZXRJU08gZGVmAGNsZWFydG9tYXJrAH0gYmluZCBkZWYAJSVCZWdpblJlc291cmNlOiBwcm9jc2V0IGdyYXBodml6IDAgMAAvY29vcmQtZm9udC1mYW1pbHkgL1RpbWVzLVJvbWFuIGRlZgAvZGVmYXVsdC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9jb29yZGZvbnQgY29vcmQtZm9udC1mYW1pbHkgZmluZGZvbnQgOCBzY2FsZWZvbnQgZGVmAC9JbnZTY2FsZUZhY3RvciAxLjAgZGVmAC9zZXRfc2NhbGUgewAgICAgICAgZHVwIDEgZXhjaCBkaXYgL0ludlNjYWxlRmFjdG9yIGV4Y2ggZGVmACAgICAgICBzY2FsZQAlIHN0eWxlcwAvc29saWQgeyBbXSAwIHNldGRhc2ggfSBiaW5kIGRlZgAvZGFzaGVkIHsgWzkgSW52U2NhbGVGYWN0b3IgbXVsIGR1cCBdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kb3R0ZWQgeyBbMSBJbnZTY2FsZUZhY3RvciBtdWwgNiBJbnZTY2FsZUZhY3RvciBtdWxdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9pbnZpcyB7L2ZpbGwge25ld3BhdGh9IGRlZiAvc3Ryb2tlIHtuZXdwYXRofSBkZWYgL3Nob3cge3BvcCBuZXdwYXRofSBkZWZ9IGJpbmQgZGVmAC9ib2xkIHsgMiBzZXRsaW5ld2lkdGggfSBiaW5kIGRlZgAvZmlsbGVkIHsgfSBiaW5kIGRlZgAvdW5maWxsZWQgeyB9IGJpbmQgZGVmAC9yb3VuZGVkIHsgfSBiaW5kIGRlZgAvZGlhZ29uYWxzIHsgfSBiaW5kIGRlZgAvdGFwZXJlZCB7IH0gYmluZCBkZWYAJSBob29rcyBmb3Igc2V0dGluZyBjb2xvciAAL25vZGVjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2VkZ2Vjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2dyYXBoY29sb3IgeyBzZXRoc2Jjb2xvciB9IGJpbmQgZGVmAC9ub3Bjb2xvciB7cG9wIHBvcCBwb3B9IGJpbmQgZGVmAC9iZWdpbnBhZ2UgewklIGkgaiBucGFnZXMACS9ucGFnZXMgZXhjaCBkZWYACS9qIGV4Y2ggZGVmAAkvaSBleGNoIGRlZgAJL3N0ciAxMCBzdHJpbmcgZGVmAAlucGFnZXMgMSBndCB7AAkJZ3NhdmUACQkJY29vcmRmb250IHNldGZvbnQACQkJMCAwIG1vdmV0bwAJCQkoXCgpIHNob3cgaSBzdHIgY3ZzIHNob3cgKCwpIHNob3cgaiBzdHIgY3ZzIHNob3cgKFwpKSBzaG93AAkJZ3Jlc3RvcmUACX0gaWYAL3NldF9mb250IHsACWZpbmRmb250IGV4Y2gACXNjYWxlZm9udCBzZXRmb250ACUgZHJhdyB0ZXh0IGZpdHRlZCB0byBpdHMgZXhwZWN0ZWQgd2lkdGgAL2FsaWduZWR0ZXh0IHsJCQklIHdpZHRoIHRleHQACS90ZXh0IGV4Y2ggZGVmAAkvd2lkdGggZXhjaCBkZWYACWdzYXZlAAkJd2lkdGggMCBndCB7AAkJCVtdIDAgc2V0ZGFzaAAJCQl0ZXh0IHN0cmluZ3dpZHRoIHBvcCB3aWR0aCBleGNoIHN1YiB0ZXh0IGxlbmd0aCBkaXYgMCB0ZXh0IGFzaG93AAkJfSBpZgAJZ3Jlc3RvcmUAL2JveHByaW0gewkJCQklIHhjb3JuZXIgeWNvcm5lciB4c2l6ZSB5c2l6ZQAJCTQgMiByb2xsAAkJbW92ZXRvAAkJMiBjb3B5AAkJZXhjaCAwIHJsaW5ldG8ACQkwIGV4Y2ggcmxpbmV0bwAJCXBvcCBuZWcgMCBybGluZXRvAAkJY2xvc2VwYXRoAC9lbGxpcHNlX3BhdGggewAJL3J5IGV4Y2ggZGVmAAkvcnggZXhjaCBkZWYACS95IGV4Y2ggZGVmAAkveCBleGNoIGRlZgAJbWF0cml4IGN1cnJlbnRtYXRyaXgACW5ld3BhdGgACXggeSB0cmFuc2xhdGUACXJ4IHJ5IHNjYWxlAAkwIDAgMSAwIDM2MCBhcmMACXNldG1hdHJpeAAvZW5kcGFnZSB7IHNob3dwYWdlIH0gYmluZCBkZWYAL3Nob3dwYWdlIHsgfSBkZWYAL2xheWVyY29sb3JzZXEACVsJJSBsYXllciBjb2xvciBzZXF1ZW5jZSAtIGRhcmtlc3QgdG8gbGlnaHRlc3QACQlbMCAwIDBdAAkJWy4yIC44IC44XQAJCVsuNCAuOCAuOF0ACQlbLjYgLjggLjhdAAkJWy44IC44IC44XQAJXQBkZWYAL2xheWVybGVuIGxheWVyY29sb3JzZXEgbGVuZ3RoIGRlZgAvc2V0bGF5ZXIgey9tYXhsYXllciBleGNoIGRlZiAvY3VybGF5ZXIgZXhjaCBkZWYACWxheWVyY29sb3JzZXEgY3VybGF5ZXIgMSBzdWIgbGF5ZXJsZW4gbW9kIGdldAAJYWxvYWQgcG9wIHNldGhzYmNvbG9yAAkvbm9kZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZWRnZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZ3JhcGhjb2xvciB7bm9wY29sb3J9IGRlZgAvb25sYXllciB7IGN1cmxheWVyIG5lIHtpbnZpc30gaWYgfSBkZWYAL29ubGF5ZXJzIHsACS9teXVwcGVyIGV4Y2ggZGVmAAkvbXlsb3dlciBleGNoIGRlZgAJY3VybGF5ZXIgbXlsb3dlciBsdAAJY3VybGF5ZXIgbXl1cHBlciBndAAJb3IACXtpbnZpc30gaWYAL2N1cmxheWVyIDAgZGVmACUlRW5kUmVzb3VyY2UAJSVFbmRQcm9sb2cAJSVCZWdpblNldHVwADE0IGRlZmF1bHQtZm9udC1mYW1pbHkgc2V0X2ZvbnQAJSAvYXJyb3dsZW5ndGggMTAgZGVmACUgL2Fycm93d2lkdGggNSBkZWYAJSBtYWtlIHN1cmUgcGRmbWFyayBpcyBoYXJtbGVzcyBmb3IgUFMtaW50ZXJwcmV0ZXJzIG90aGVyIHRoYW4gRGlzdGlsbGVyAC9wZGZtYXJrIHdoZXJlIHtwb3B9IHt1c2VyZGljdCAvcGRmbWFyayAvY2xlYXJ0b21hcmsgbG9hZCBwdXR9IGlmZWxzZQAlIG1ha2UgJzw8JyBhbmQgJz4+JyBzYWZlIG9uIFBTIExldmVsIDEgZGV2aWNlcwAvbGFuZ3VhZ2VsZXZlbCB3aGVyZSB7cG9wIGxhbmd1YWdlbGV2ZWx9ezF9IGlmZWxzZQAyIGx0IHsAICAgIHVzZXJkaWN0ICg8PCkgY3ZuIChbKSBjdm4gbG9hZCBwdXQAICAgIHVzZXJkaWN0ICg+PikgY3ZuIChbKSBjdm4gbG9hZCBwdXQAfSBpZgAlJUVuZFNldHVwACUlVHJhaWxlcgoAJSUlJVBhZ2VzOiAlZAoAZW5kCnJlc3RvcmUKACUlRU9GCgAlIVBTLUFkb2JlLTMuMAAgRVBTRi0zLjAKACUlJSVDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKAHBzMjpwcwA8IS0tIAA8cG9seWxpbmUAIHBvaW50cz0iACIvPgoAIGZpbGw9IgB1cmwoI2xfJWQpAHVybCgjcl8lZCkAIiBmaWxsLW9wYWNpdHk9IiVmACIgc3Ryb2tlPSIAIiBzdHJva2Utd2lkdGg9IgAiIHN0cm9rZS1kYXNoYXJyYXk9IiVzADUsMgAxLDUAIiBzdHJva2Utb3BhY2l0eT0iJWYAZ3ZyZW5kZXJfY29yZV9zdmcuYwBzdmdfcHJpbnRfY29sb3IAPHBhdGgAIGlkPSIAX3AiIAAgZD0iACVjADxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InJfJWQiIGN4PSI1MCUlIiBjeT0iNTAlJSIgcj0iNzUlJSIgZng9IiVkJSUiIGZ5PSIlZCUlIj4KADxzdG9wIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6ADtzdG9wLW9wYWNpdHk6ADEuADsiLz4KADxzdG9wIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgoAPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0ibF8lZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIAB4MT0iACIgeTE9IgAiIHgyPSIAIiB5Mj0iACIgPgoAPHN0b3Agb2Zmc2V0PSIlLjAzZiIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgoAPHBvbHlnb24APGVsbGlwc2UAIGN4PSIAIiBjeT0iACIgcng9IgAiIHJ5PSIAPHRleHQAIHRleHQtYW5jaG9yPSJzdGFydCIAIHRleHQtYW5jaG9yPSJlbmQiACB0ZXh0LWFuY2hvcj0ibWlkZGxlIgAgeD0iACIgeT0iACBmb250LWZhbWlseT0iJXMALCVzACBmb250LXdlaWdodD0iJXMiACBmb250LXN0cmV0Y2g9IiVzIgAgZm9udC1zdHlsZT0iJXMiACBmb250LWZhbWlseT0iJXMiACBmb250LXdlaWdodD0iYm9sZCIAIGZvbnQtc3R5bGU9Iml0YWxpYyIAIHRleHQtZGVjb3JhdGlvbj0iACVzb3ZlcmxpbmUAJXNsaW5lLXRocm91Z2gAIGJhc2VsaW5lLXNoaWZ0PSJzdXBlciIAIGJhc2VsaW5lLXNoaWZ0PSJzdWIiACBmb250LXNpemU9IiUuMmYiACBmaWxsPSIlcyIAIGZpbGw9IiMlMDJ4JTAyeCUwMngiAHN2Z190ZXh0c3BhbgA+ADx0ZXh0UGF0aCB4bGluazpocmVmPSIjJXNfcCIgc3RhcnRPZmZzZXQ9IjUwJSUiPgA8dHNwYW4geD0iMCIgZHk9IgAiPgA8L3RzcGFuPjwvdGV4dFBhdGg+ADwvdGV4dD4KADwvZz4KADxnACBpZD0iYV8AIHhsaW5rOmhyZWY9IgAgeGxpbms6dGl0bGU9IgAgdGFyZ2V0PSIAPHRpdGxlPgA8L3RpdGxlPgoAPGcgaWQ9IgBfJXMAIiBjbGFzcz0iJXMAY2xhc3MAIHRyYW5zZm9ybT0ic2NhbGUoACkgcm90YXRlKCVkKSB0cmFuc2xhdGUoACkiPgoAPC9zdmc+CgA8IS0tACBQYWdlczogJWQgLS0+CgA8c3ZnIHdpZHRoPSIlZHB0IiBoZWlnaHQ9IiVkcHQiCgAgdmlld0JveD0iJS4yZiAlLjJmICUuMmYgJS4yZiIAIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIAIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KAHN0eWxlc2hlZXQAPD94bWwtc3R5bGVzaGVldCBocmVmPSIAIiB0eXBlPSJ0ZXh0L2NzcyI/PgoAPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIgoAICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgoAPCEtLSBHZW5lcmF0ZWQgYnkgAGRhcmtibHVlAGRhcmtjeWFuAGRhcmtncmF5AGRhcmtncmV5AGRhcmttYWdlbnRhAGRhcmtyZWQAbGlnaHRncmVlbgAjIAAgY3JlYXRlIGxpbmUgACAtZmlsbCAAIC1kYXNoIDUAIC1kYXNoIDIAZ3ZyZW5kZXJfY29yZV90ay5jAHRrZ2VuX3ByaW50X3RhZ3MAZ3JhcGggbGFiZWwAIC10YWdzIHslZCVzJXB9AHRrZ2VuX3ByaW50X2NvbG9yACRjACAtd2lkdGggACAtc21vb3RoIGJlemllciAAIGNyZWF0ZSBwb2x5Z29uIAAgLW91dGxpbmUgACBjcmVhdGUgb3ZhbCAAIGNyZWF0ZSB0ZXh0IAAgLXRleHQgewB9ACAtZm9udCB7ACAlZH0AIC1hbmNob3IgdwAgLWFuY2hvciBlACMAIFRpdGxlOiAAIFBhZ2VzOiAlZAoAIyBHZW5lcmF0ZWQgYnkgACkKAHRrAHRrOnRrACAgICAgIDwhLS0gACAtLT4KAEVycm9yIGR1cmluZyBjb252ZXJzaW9uIHRvICJVVEYtOCIuICBRdWl0aW5nLgoAIDx2OnNoYXBlIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACB3aWR0aDogJWQ7IGhlaWdodDogJWQiIGZpbGxlZD0iZmFsc2UiPgA8djpwYXRoIHY9IgAgbSAAJS4wZiwlLjBmIAAgbCAAIGUgACIvPgA8L3Y6c2hhcGU+CgA8djpzdHJva2UgY29sb3I9IgAiIHdlaWdodD0iJS4wZnB0ACIgZGFzaHN0eWxlPSJkYXNoACIgZGFzaHN0eWxlPSJkb3QAIiAvPgAjJTAyeCUwMnglMDJ4AGd2cmVuZGVyX2NvcmVfdm1sLmMAdm1sX3ByaW50X2NvbG9yACB3aWR0aDogJWQ7IGhlaWdodDogJWQiACA+ADx2OnBhdGggIHY9IgAvPjwvdjpzaGFwZT4KAG0gACVzJS4wZiwlLjBmIABjIAAgZmlsbGVkPSJ0cnVlIiBmaWxsY29sb3I9IgAiIAAgZmlsbGVkPSJmYWxzZSIgACUuMGYgJS4wZiAAbCAAeCBlICIvPgAgIDx2Om92YWwgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOwAgbGVmdDogJS4yZjsgdG9wOiAlLjJmOwAgd2lkdGg6ICUuMmY7IGhlaWdodDogJS4yZiIAPC92Om92YWw+CgA8djpyZWN0IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACBzdHJva2VkPSJmYWxzZSIgZmlsbGVkPSJmYWxzZSI+CgA8djp0ZXh0Ym94IGluc2V0PSIwLDAsMCwwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHYtdGV4dC13cmFwcGluZzonZmFsc2UnO3BhZGRpbmc6JzAnOwBmb250LWZhbWlseTogJyVzJzsAZm9udC13ZWlnaHQ6ICVzOwBmb250LXN0cmV0Y2g6ICVzOwBmb250LXN0eWxlOiAlczsAIGZvbnQtc2l6ZTogJS4yZnB0OwBjb2xvcjolczsAY29sb3I6IyUwMnglMDJ4JTAyeDsAdm1sX3RleHRzcGFuACI+PGNlbnRlcj4APC9jZW50ZXI+PC92OnRleHRib3g+CgA8L3Y6cmVjdD4KADwvYT4KADxhACBocmVmPSIlcyIAIHRpdGxlPSIlcyIAIHRhcmdldD0iJXMiAD4KADwvdjpncm91cD4KADwvRElWPgoAPERJViBpZD0nX1ZNTDJfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dmlzaWJpbGl0eTpoaWRkZW4iPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPERJViBpZD0nX25vdFZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KADwhLS0gdGhpcyBzaG91bGQgb25seSBkaXNwbGF5IG9uIE5PTi1JRSBicm93c2VycyAtLT4KADxIMj5Tb3JyeSwgdGhpcyBkaWFncmFtIHdpbGwgb25seSBkaXNwbGF5IGNvcnJlY3RseSBvbiBJbnRlcm5ldCBFeHBsb3JlciA1IChhbmQgdXApIGJyb3dzZXJzLjwvSDI+CgA8RElWIGlkPSdfbm90Vk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIE5PTi1JRSBodG1sIGNvbnRlbnQgaGVyZSAtLT4KADwvQk9EWT4KPC9IVE1MPgoAPEhFQUQ+ADxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KADxUSVRMRT4APC9USVRMRT4APCEtLSBQYWdlczogJWQgLS0+CgAgICA8U0NSSVBUIExBTkdVQUdFPSdKYXZhc2NyaXB0Jz4KACAgIGZ1bmN0aW9uIGJyb3dzZXJjaGVjaygpCgAgICB7CgAgICAgICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudAoAICAgICAgdmFyIG1zaWUgPSB1YS5pbmRleE9mICggJ01TSUUgJyApCgAgICAgICB2YXIgaWV2ZXJzOwoAICAgICAgdmFyIGl0ZW07CgAgICAgICB2YXIgVk1MeWVzPW5ldyBBcnJheSgnX1ZNTDFfJywnX1ZNTDJfJyk7CgAgICAgICB2YXIgVk1Mbm89bmV3IEFycmF5KCdfbm90Vk1MMV8nLCdfbm90Vk1MMl8nKTsKACAgICAgIGlmICggbXNpZSA+IDAgKXsgICAgICAvLyBJZiBJbnRlcm5ldCBFeHBsb3JlciwgcmV0dXJuIHZlcnNpb24gbnVtYmVyCgAgICAgICAgICBpZXZlcnM9IHBhcnNlSW50ICh1YS5zdWJzdHJpbmcgKG1zaWUrNSwgdWEuaW5kZXhPZiAoJy4nLCBtc2llICkpKQoAICAgICAgfQoAICAgICAgaWYgKGlldmVycz49NSl7CgAgICAgICAgZm9yICh4IGluIFZNTHllcyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1MeWVzW3hdKTsKACAgICAgICAgIGlmIChpdGVtKSB7CgAgICAgICAgICAgIGl0ZW0uc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7CgAgICAgICAgICB9CgAgICAgICAgfQoAICAgICAgIGZvciAoeCBpbiBWTUxubyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1Mbm9beF0pOwoAICAgICAgICAgICBpdGVtLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7CgAgICAgIH1lbHNlewoAICAgICB9CgAgICB9CgAgICA8L1NDUklQVD4KADwvSEVBRD4APEJPRFkgb25sb2FkPSdicm93c2VyY2hlY2soKTsnPgoAPERJViBpZD0nX1ZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lOyB2aXNpYmlsaXR5OmhpZGRlbgAgd2lkdGg6ICVkcHQ7IGhlaWdodDogJWRwdCI+CgA8U1RZTEU+CgB2XDoqIHsgYmVoYXZpb3I6IHVybCgjZGVmYXVsdCNWTUwpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQoAPC9TVFlMRT4KADx4bWw6bmFtZXNwYWNlIG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgcHJlZml4PSJ2IiAvPgoAIDx2Omdyb3VwIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgACB3aWR0aDogJWRwdDsgaGVpZ2h0OiAlZHB0IgAgY29vcmRvcmlnaW49IjAsMCIgY29vcmRzaXplPSIlZCwlZCIgPgA8SFRNTD4KAAo8IS0tIEdlbmVyYXRlZCBieSAAIHZlcnNpb24gACAoACkKLS0+CgBhcXVhAGZ1Y2hzaWEAbGltZQBvbGl2ZQB0ZWFsAHZtbAB2bWw6dm1sAC8vKioqIGNvbW1lbnQ6ICVzCgAvLyoqKiBwb2x5bGluZQoAc2NhbGUgICAgPCU5LjNmLCAlOS4zZiwgJTkuM2Y+CgByb3RhdGUgICA8JTkuM2YsICU5LjNmLCAlOS4zZj4KAHRyYW5zbGF0ZTwlOS4zZiwgJTkuM2YsICU5LjNmPgoAc3BoZXJlX3N3ZWVwIHsKICAgICVzCiAgICAlZCwKAGxpbmVhcl9zcGxpbmUAPCU5LjNmLCAlOS4zZiwgJTkuM2Y+LCAlLjNmCgAlcyAgICAlcwAgICAgdG9sZXJhbmNlIDAuMDEKICAgICVzICAgICVzICAgICVzICAgICVzfQoAJXMlcwAlcyB0cmFuc21pdCAlLjNmAFJlZABHcmVlbgBCbHVlAHJnYjwlOS4zZiwgJTkuM2YsICU5LjNmPiB0cmFuc21pdCAlLjNmAG9vcHMsIGludGVybmFsIGVycm9yOiB1bmhhbmRsZWQgY29sb3IgdHlwZT0lZCAlcwoAZ3ZyZW5kZXJfY29yZV9wb3YuYwBwb3ZfY29sb3JfYXNfc3RyAHBpZ21lbnQgeyBjb2xvciAlcyB9CgBwb3YgcmVuZGVyZXI6ZWwgLSAlcwoALy8qKiogYmV6aWVyCgBiX3NwbGluZQAgICAgICAgIHRvbGVyYW5jZSAwLjAxCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHBvbHlnb24KACAgICB0b2xlcmFuY2UgMC4xCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAHBvbHlnb24geyAlZCwKADwlOS4zZiwgJTkuM2YsICU5LjNmPgAlcwogICAgJXMACiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIGVsbGlwc2UKAHRvcnVzIHsgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgBzcGhlcmUgezwlOS4zZiwgJTkuM2YsICU5LjNmPiwgMS4wCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHRleHRzcGFuOiAlcywgZm9udHNpemUgPSAlLjNmLCBmb250bmFtZSA9ICVzCgBzY2FsZSAlLjNmCgB0ZXh0IHsKICAgIHR0ZiAiJXMiLAogICAgIiVzIiwgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgAgICAgbm9fc2hhZG93CgAvLyoqKiBlbmRfZWRnZQoALy8qKiogYmVnaW5fZWRnZQoALy8qKiogZW5kX25vZGUKAC8vKioqIGJlZ2luX25vZGU6ICVzCgAvLyoqKiBlbmRfY2x1c3RlcgoALy8qKiogYmVnaW5fY2x1c3RlcgoALy8qKiogZW5kX3BhZ2UKAC8vKioqIGJlZ2luX3BhZ2UKAC8vKioqIGVuZF9sYXllcgoALy8qKiogYmVnaW5fbGF5ZXI6ICVzLCAlZC8lZAoALy8qKiogZW5kX2dyYXBoCgAvLyoqKiBiZWdpbl9ncmFwaCAlcwoAY2FtZXJhIHsgbG9jYXRpb24gPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgbG9va19hdCAgPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgcmlnaHQgeCAqIGltYWdlX3dpZHRoIC8gaW1hZ2VfaGVpZ2h0CiAgICAgICAgIGFuZ2xlICUuM2YKfQoALy9za3kKcGxhbmUgeyA8MCwgMSwgMD4sIDEgaG9sbG93CiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50IHsgYm96byB0dXJidWxlbmNlIDAuOTUKICAgICAgICAgICAgY29sb3JfbWFwIHsKICAgICAgICAgICAgICAgIFswLjAwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC41MCByZ2IgPDAuMDUsIDAuMjAsIDAuNTA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwxLjAwLCAxLjAwLCAxLjAwPl0KICAgICAgICAgICAgICAgIFswLjc1IHJnYiA8MC4yNSwgMC4yNSwgMC4yNT5dCiAgICAgICAgICAgICAgICBbMS4wMCByZ2IgPDAuNTAsIDAuNTAsIDAuNTA+XQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjYWxlIDwxLjAwLCAxLjAwLCAxLjUwPiAqIDIuNTAKICAgICAgICAgICAgdHJhbnNsYXRlIDwwLjAwLCAwLjAwLCAwLjAwPgogICAgICAgIH0KICAgICAgICBmaW5pc2ggeyBhbWJpZW50IDEgZGlmZnVzZSAwIH0KICAgIH0KICAgIHNjYWxlIDEwMDAwCn0KLy9taXN0CmZvZyB7IGZvZ190eXBlIDIKICAgIGRpc3RhbmNlIDUwCiAgICBjb2xvciByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+ICogMC43NQogICAgZm9nX29mZnNldCAwLjEwCiAgICBmb2dfYWx0IDEuNTAKICAgIHR1cmJ1bGVuY2UgMS43NQp9Ci8vZ25kCnBsYW5lIHsgPDAuMDAsIDEuMDAsIDAuMDA+LCAwCiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50eyBjb2xvciByZ2IgPDAuMjUsIDAuNDUsIDAuMDA+IH0KICAgICAgICBub3JtYWwgeyBidW1wcyAwLjc1IHNjYWxlIDAuMDEgfQogICAgICAgIGZpbmlzaCB7IHBob25nIDAuMTAgfQogICAgfQp9CgBsaWdodF9zb3VyY2UgeyA8MTUwMCwzMDAwLC0yNTAwPiBjb2xvciBXaGl0ZSB9CgAjdmVyc2lvbiAzLjY7CgBnbG9iYWxfc2V0dGluZ3MgeyBhc3N1bWVkX2dhbW1hIDEuMCB9CgAjZGVmYXVsdCB7IGZpbmlzaCB7IGFtYmllbnQgMC4xIGRpZmZ1c2UgMC45IH0gfQoAI2luY2x1ZGUgImNvbG9ycy5pbmMiCiNpbmNsdWRlICJ0ZXh0dXJlcy5pbmMiCiNpbmNsdWRlICJzaGFwZXMuaW5jIgoAI2RlY2xhcmUgJXMgPSAlczsKAEJsYWNrAFdoaXRlAGJha2Vyc2Nob2MAYnJhc3MAYnJpZ2h0Z29sZABicm9uemUAYnJvbnplMgBjbGVhcgBjb29sY29wcGVyAGNvcHBlcgBkYXJrYnJvd24AZGFya3B1cnBsZQBkYXJrdGFuAGRhcmt3b29kAGRrZ3JlZW5jb3BwZXIAZHVzdHlyb3NlAGZlbGRzcGFyAGZsZXNoAGdyYXkwNQBncmVlbmNvcHBlcgBodW50ZXJzZ3JlZW4AbGlnaHRfcHVycGxlAGxpZ2h0d29vZABtYW5kYXJpbm9yYW5nZQBtZWRpdW1mb3Jlc3RncmVlbgBtZWRpdW1nb2xkZW5yb2QAbWVkaXVtd29vZABtZWRfcHVycGxlAG1pY2EAbmVvbmJsdWUAbmVvbnBpbmsAbmV3bWlkbmlnaHRibHVlAG5ld3RhbgBvbGRnb2xkAHF1YXJ0egByaWNoYmx1ZQBzY2FybGV0AHNlbWlTd2VldENob2MAc2lsdmVyAHNwaWN5cGluawBzdW1tZXJza3kAdmVyeWRhcmticm93bgB2ZXJ5X2xpZ2h0X3B1cnBsZQBwb3YAcG92OnBvdgAlcyAlcwoALlwiIAAgJWQgJWQAICVzCgAgJWQAZmlsbCAAZWxsaXBzZSBhdHRycyVkICVzd2lkICUuNWYgaHQgJS41ZiBhdCAoJS41ZiwlLjVmKTsKAC5mdCAlcwoALnBzICVkKlxuKFNGdS8lLjBmdQoAIiVzIiBhdCAoJS41ZiwlLjVmKTsKACUwM28AJXMlcyBpcyBub3QgYSB0cm9mZiBmb250CgBkb3QgcGljIHBsdWdpbjogAFIAXQouUEUKAC5QUyAlLjVmICUuNWYKACVzIHRvIGNoYW5nZSBkcmF3aW5nIHNpemUsIG11bHRpcGx5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9uIHRoZSAuUFMgbGluZSBhYm92ZSBhbmQgdGhlIG51bWJlciBvbiB0aGUgdHdvIGxpbmVzIGJlbG93IChyb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIpIGJ5IGEgc2NhbGUgZmFjdG9yCgAubnIgU0YgJS4wZgpzY2FsZXRoaWNrbmVzcyA9ICUuMGYKACVzIGRvbid0IGNoYW5nZSBhbnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgaW4gdGhpcyBkcmF3aW5nCgAlcyBub24tZmF0YWwgcnVuLXRpbWUgcGljIHZlcnNpb24gZGV0ZXJtaW5hdGlvbiwgdmVyc2lvbiAyCgBib3hyYWQ9Mi4wICVzIHdpbGwgYmUgcmVzZXQgdG8gMC4wIGJ5IGdwaWMgb25seQoAc2NhbGU9MS4wICVzIHJlcXVpcmVkIGZvciBjb21wYXJpc29ucwoAJXMgYm94cmFkIGlzIG5vdyAwLjAgaW4gZ3BpYywgZWxzZSBpdCByZW1haW5zIDIuMAoAJXMgZGFzaHdpZCBpcyAwLjEgaW4gMTB0aCBFZGl0aW9uLCAwLjA1IGluIERXQiAyIGFuZCBpbiBncGljCgAlcyBmaWxsdmFsIGlzIDAuMyBpbiAxMHRoIEVkaXRpb24gKGZpbGwgMCBtZWFucyBibGFjayksIDAuNSBpbiBncGljIChmaWxsIDAgbWVhbnMgd2hpdGUpLCB1bmRlZmluZWQgaW4gRFdCIDIKACVzIGZpbGwgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGdwaWMgY2FuIHVzZSBmaWxsIG9yIGZpbGxlZCwgMTB0aCBFZGl0aW9uIHVzZXMgZmlsbCBvbmx5CgAlcyBEV0IgMiBkb2Vzbid0IHVzZSBmaWxsIGFuZCBkb2Vzbid0IGRlZmluZSBmaWxsdmFsCgAlcyByZXNldCB3b3JrcyBpbiBncGljIGFuZCAxMHRoIGVkaXRpb24sIGJ1dCBpc24ndCBkZWZpbmVkIGluIERXQiAyCgAlcyBEV0IgMiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zCgBpZiBib3hyYWQgPiAxLjAgJiYgZGFzaHdpZCA8IDAuMDc1IHRoZW4gWAoJZmlsbHZhbCA9IDE7CglkZWZpbmUgZmlsbCBZIFk7CglkZWZpbmUgc29saWQgWSBZOwoJZGVmaW5lIHJlc2V0IFkgc2NhbGU9MS4wIFk7ClgKAHJlc2V0ICVzIHNldCB0byBrbm93biBzdGF0ZQoAJXMgR05VIHBpYyB2cy4gMTB0aCBFZGl0aW9uIGRcKGUndGVudGUKAGlmIGZpbGx2YWwgPiAwLjQgdGhlbiBYCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSAxIC0gWTsKCWRlZmluZSBib2xkIFkgdGhpY2tuZXNzIDIgWTsKAAklcyBpZiB5b3UgdXNlIGdwaWMgYW5kIGl0IGJhcmZzIG9uIGVuY291bnRlcmluZyAic29saWQiLAoACSVzCWluc3RhbGwgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIGdwaWMgb3Igc3dpdGNoIHRvIERXQiBvciAxMHRoIEVkaXRpb24gcGljOwoACSVzCXNvcnJ5LCB0aGUgZ3JvZmYgZm9sa3MgY2hhbmdlZCBncGljOyBzZW5kIGFueSBjb21wbGFpbnQgdG8gdGhlbTsKAFggZWxzZSBaCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSBZOwoJZGVmaW5lIGJvbGQgWSBZOwoJZGVmaW5lIGZpbGxlZCBZIGZpbGwgWTsKWgoAJXMgYXJyb3doZWFkIGhhcyBubyBtZWFuaW5nIGluIERXQiAyLCBhcnJvd2hlYWQgPSA3IG1ha2VzIGZpbGxlZCBhcnJvd2hlYWRzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgYXJyb3doZWFkIGlzIHVuZGVmaW5lZCBpbiBEV0IgMiwgaW5pdGlhbGx5IDEgaW4gZ3BpYywgMiBpbiAxMHRoIEVkaXRpb24KAGFycm93aGVhZCA9IDcgJXMgbm90IHVzZWQgYnkgZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBib3hyYWQgdmFyaWFibGUgdG8gZHJhdyBib3hlcyB3aXRoIHJvdW5kZWQgY29ybmVyczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGJveHJhZCA9IDAgJXMgbm8gcm91bmRlZCBjb3JuZXJzIGluIGdyYXBodml6CgAlcyBHTlUgcGljIHN1cHBvcnRzIGEgbGluZXRoaWNrIHZhcmlhYmxlIHRvIHNldCBsaW5lIHRoaWNrbmVzczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGxpbmV0aGljayA9IDA7IG9sZGxpbmV0aGljayA9IGxpbmV0aGljawoAJXMgLlBTIHcvbyBhcmdzIGNhdXNlcyBHTlUgcGljIHRvIHNjYWxlIGRyYXdpbmcgdG8gZml0IDguNXgxMSBwYXBlcjsgRFdCIGRvZXMgbm90CgAlcyBtYXhwc2h0IGFuZCBtYXhwc3dpZCBoYXZlIG5vIG1lYW5pbmcgaW4gRFdCIDIuMCwgc2V0IHBhZ2UgYm91bmRhcmllcyBpbiBncGljIGFuZCBpbiAxMHRoIEVkaXRpb24KACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGFyZSBwcmVkZWZpbmVkIHRvIDExLjAgYW5kIDguNSBpbiBncGljCgBtYXhwc2h0ID0gJWYKbWF4cHN3aWQgPSAlZgoARG90OiBbCgBkZWZpbmUgYXR0cnMwICUlICUlOyBkZWZpbmUgdW5maWxsZWQgJSUgJSU7IGRlZmluZSByb3VuZGVkICUlICUlOyBkZWZpbmUgZGlhZ29uYWxzICUlICUlCgAlcyVzIHVuc3VwcG9ydGVkCgByb3RhdGlvbgAlcyByZXN0b3JlIHBvaW50IHNpemUgYW5kIGZvbnQKLnBzIFxuKC5TCi5mdCBcbihERgoAJXMgQ3JlYXRvcjogJXMgdmVyc2lvbiAlcyAoJXMpCgAlcyBUaXRsZTogJXMKACVzIHNhdmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoubnIgLlMgXG4oLnMKLm5yIERGIFxuKC5mCgBwaWMAcGljOnBpYwBwbmc6c3ZnAGdpZjpzdmcAanBlZzpzdmcAanBlOnN2ZwBqcGc6c3ZnAHBuZzpmaWcAZ2lmOmZpZwBqcGVnOmZpZwBqcGU6ZmlnAGpwZzpmaWcAcG5nOnZybWwAZ2lmOnZybWwAanBlZzp2cm1sAGpwZTp2cm1sAGpwZzp2cm1sAGVwczpwcwBwczpwcwAobGliKTpwcwBwbmc6bWFwAGdpZjptYXAAanBlZzptYXAAanBlOm1hcABqcGc6bWFwAHBzOm1hcABlcHM6bWFwAHN2ZzptYXAAcG5nOmRvdABnaWY6ZG90AGpwZWc6ZG90AGpwZTpkb3QAanBnOmRvdABwczpkb3QAZXBzOmRvdABzdmc6ZG90AHBuZzp4ZG90AGdpZjp4ZG90AGpwZWc6eGRvdABqcGU6eGRvdABqcGc6eGRvdABwczp4ZG90AGVwczp4ZG90AHN2Zzp4ZG90AHN2ZzpzdmcAcG5nOnZtbABnaWY6dm1sAGpwZWc6dm1sAGpwZTp2bWwAanBnOnZtbABnaWY6dGsAaW1hZ2UgY3JlYXRlIHBob3RvICJwaG90b18lcyIgLWZpbGUgIiVzIgoAJGMgY3JlYXRlIGltYWdlICUuMmYgJS4yZiAtaW1hZ2UgInBob3RvXyVzIgoAPHY6aW1hZ2Ugc3JjPSIlcyIgc3R5bGU9IiBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6JS4yZjsgaGVpZ2h0OiUuMmY7IGxlZnQ6JS4yZiA7IHRvcDolLjJmIgAgLz4KAGd2bG9hZGltYWdlX2NvcmUuYwBjb3JlX2xvYWRpbWFnZV9wc2xpYgBbIAAlZyAlZyAAXSAgJWQgdHJ1ZSAlcwoAXSAgJWQgZmFsc2UgJXMKAGNvcmVfbG9hZGltYWdlX3BzAGdzYXZlICVnICVnIHRyYW5zbGF0ZSBuZXdwYXRoCgB1c2VyX3NoYXBlXyVkCgBncmVzdG9yZQoAY29yZV9sb2FkaW1hZ2VfdnJtbABTaGFwZSB7CgAgIGFwcGVhcmFuY2UgQXBwZWFyYW5jZSB7CgAgICAgbWF0ZXJpYWwgTWF0ZXJpYWwgewoAICAgICAgYW1iaWVudEludGVuc2l0eSAwLjMzCgAgICAgICAgIGRpZmZ1c2VDb2xvciAxIDEgMQoAICAgIH0KACAgICB0ZXh0dXJlIEltYWdlVGV4dHVyZSB7IHVybCAiJXMiIH0KACAgfQoAY29yZV9sb2FkaW1hZ2VfZmlnACVkICVkICVkICVkICVkICVkICVkICVkICVkICUuMWYgJWQgJWQgJWQgJWQgJWQgJWQKICVkICVzCgAgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKAGNvcmVfbG9hZGltYWdlX3N2ZwA8aW1hZ2UgeGxpbms6aHJlZj0iACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgeD0iJWciIHk9IiVnIgAgdHJhbnNmb3JtPSJyb3RhdGUoJWQgJWcgJWcpIgAiIHdpZHRoPSIlZ3B4IiBoZWlnaHQ9IiVncHgiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHg9IiVnIiB5PSIlZyIALz4KAGRvdF9sYXlvdXQAcGhhc2UAZG90IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFzcGVjdCBhdHRyaWJ1dGUgZm9yIGRpc2Nvbm5lY3RlZCBncmFwaHMgb3IgZ3JhcGhzIHdpdGggY2x1c3RlcnMKAGNvbXBvdW5kAHYgPT0gbgBkb3Rpbml0LmMAcmVtb3ZlX2Zyb21fcmFuawBvcmRlcgBlZGdlIGxhYmVscyB3aXRoIHNwbGluZXM9Y3VydmVkIG5vdCBzdXBwb3J0ZWQgaW4gZG90IC0gdXNlIHhsYWJlbHMKAEVEX2xhYmVsKGZlKQBkb3RzcGxpbmVzLmMAX2RvdF9zcGxpbmVzAGZsYXQgZWRnZSBiZXR3ZWVuIGFkamFjZW50IG5vZGVzIG9uZSBvZiB3aGljaCBoYXMgYSByZWNvcmQgc2hhcGUgLSByZXBsYWNlIHJlY29yZHMgd2l0aCBIVE1MLWxpa2UgbGFiZWxzCgAgIEVkZ2UgJXMgJXMgJXMKAHh4eAAxMDAwMAB7JXN9AGF1eGcAbGFiZWxfZmxvYXQAZml4ZWQAKGwgPSBFRF9sYWJlbChmZSkpAHNldEVkZ2VMYWJlbFBvcwBlICE9IE5VTEwAZmFzdGdyLmMAZGVsZXRlX2Zhc3RfZWRnZQBuICE9IE5EX25leHQobikAZmFzdF9ub2RlAHUgIT0gdgBmYXN0X25vZGVhcHAATkRfbmV4dCh2KSA9PSBOVUxMAGZpbmRfZmFzdF9ub2RlKGcsIG4pAGRlbGV0ZV9mYXN0X25vZGUAZGVsZXRlX2ZsYXRfZWRnZQBtZXJnZV9vbmV3YXkgZ2xpdGNoCgBtZXJnZV9vbmV3YXkAc2FmZV9kZWxldGVfZmFzdF9lZGdlAGxnAGNvbXAAY250ID09IHN6AG1pbmNyb3NzLmMAZml4TGFiZWxPcmRlcgByZW1pbmNyb3NzAG1pbmNyb3NzICVzOiAlZCBjcm9zc2luZ3MsICUuMmYgc2Vjcy4KAHYAbmVpZ2hib3IAKHJ2ID09IDApIHx8IChORF9vcmRlcihydiktTkRfb3JkZXIodikpKmRpciA+IDAAY29uc3RyYWluaW5nX2ZsYXRfZWRnZShnLHYsZSkgPT0gRkFMU0UAZmxhdF9yZW9yZGVyAE5EX3JhbmsodikgPT0gcgBwb3N0b3JkZXIAZmxhdGluZGV4KGFnaGVhZChlKSkgPCBNLT5ucm93cwBmbGF0X3NlYXJjaABmbGF0aW5kZXgoYWd0YWlsKGUpKSA8IE0tPm5jb2xzAG91dABvcmRlcmluZyAnJXMnIG5vdCByZWNvZ25pemVkLgoAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZCBmb3Igbm9kZSAnJXMnLgoAbWVyZ2UyOiBncmFwaCAlcywgcmFuayAlZCBoYXMgb25seSAlZCA8ICVkIG5vZGVzCgBtaW5jcm9zczogcGFzcyAlZCBpdGVyICVkIHRyeWluZyAlZCBjdXJfY3Jvc3MgJWQgYmVzdF9jcm9zcyAlZAoATkRfb3JkZXIodikgPCBORF9vcmRlcih3KQBiYWxhbmNlAHRyYW5zcG9zZV9zdGVwAHN1cnByaXNlCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6ICVzICVzIHJhbmsgJWQgaSA9ICVkIGFuID0gMAoAR0RfcmFuayhnKVtyXS5uIDw9IEdEX3JhbmsoZylbcl0uYW4AaW5zdGFsbF9pbl9yYW5rAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IHJhbmsgJWQgbm90IGluIHJhbmsgcmFuZ2UgWyVkLCVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiBHRF9yYW5rKGcpWyVkXS52ICsgTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKGcpWyVkXS5hdiArIEdEX3JhbmsoUm9vdClbJWRdLmFuIFslZF0KAF9uZXdfcmFuawBtY2xpbWl0AHJhbmsoZywgMiwgbnNpdGVyMihnKSkgPT0gMABwb3NpdGlvbi5jAGRvdF9wb3NpdGlvbgBBUj0lMC40bGYJIEFyZWE9ICUwLjRsZgkARHVtbXk9JWQKAEdvaW5nIHRvIGFwcGx5IGFub3RoZXIgZXhwYW5zaW9uLgoAbmV4dCNpdGVyPSVkCgBocABjb25uZWN0R3JhcGgARWRnZSBsZW5ndGggJWYgbGFyZ2VyIHRoYW4gbWF4aW11bSAldSBhbGxvd2VkLgpDaGVjayBmb3Igb3ZlcndpZGUgbm9kZShzKS4KAG5zbGltaXQAY29udGFpbl9ub2RlcyBjbHVzdCAlcyByYW5rICVkIG1pc3Npbmcgbm9kZQoAbnNsaW1pdDEAbmV3cmFuawBNYXhyYW5rID0gJWQsIG1pbnJhbmsgPSAlZAoAbGVhZGVyICE9IE5VTEwAcmFuay5jAGNsdXN0ZXJfbGVhZGVyAChORF9VRl9zaXplKG4pIDw9IDEpIHx8IChuID09IGxlYWRlcikAYWdoZWFkKGUpID09IFVGX2ZpbmQoYWdoZWFkKGUpKQBtaW5tYXhfZWRnZXMAYWd0YWlsKGUpID09IFVGX2ZpbmQoYWd0YWlsKGUpKQByYW5rAHNhbWUAbWluAHNvdXJjZQBtYXgAc2luawBsZXZlbCBhc3NpZ25tZW50IGNvbnN0cmFpbnRzAGxldmVsIGdyYXBoIHJlYwB/cm9vdAB/dG9wAH9ib3QAY29tcGFjdABfd2Vha18lZAByYW5raW5nOiBmYWlsdXJlIHRvIGNyZWF0ZSBzdHJvbmcgY29uc3RyYWludCBlZGdlIGJldHdlZW4gbm9kZXMgJXMgYW5kICVzCgAlcyBoYXMgdW5yZWNvZ25pemVkIHJhbms9JXMAbGV2ZWwgZWRnZSByZWMAbGV2ZWwgbm9kZSByZWMAc2FtZWhlYWQAc2FtZXRhaWwAdG9vIG1hbnkgKD4gJWQpIHNhbWV7aGVhZCx0YWlsfSBncm91cHMgZm9yIG5vZGUgJXMKAGNvbWJpQVIgPSAlbGYKACVsZiwlZAB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gaW1wbGVtZW50YXRpb24gZmxhd3MgLSBhdHRyaWJ1dGUgaWdub3JlZC4KAEVEX3RvX3ZpcnQoZSkgPT0gTlVMTABjbGFzczIuYwBtZXJnZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpID09IE5VTEwAbWFrZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpICE9IE5VTEwATkRfcmFuayhmcm9tKSA8IE5EX3JhbmsodG8pAGNsdXN0ZXIuYwBtYXBfcGF0aAAlcyB3YXMgYWxyZWFkeSBpbiBhIHJhbmtzZXQsIGRlbGV0ZWQgZnJvbSBjbHVzdGVyICVzCgBsaGVhZABsdGFpbAAlcyAtPiAlczogc3BsaW5lIHNpemUgPiAxIG5vdCBzdXBwb3J0ZWQKACVzIC0+ICVzOiBoZWFkIG5vdCBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgAlcyAtPiAlczogdGFpbCBpcyBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgBiZXotPnNmbGFnAGNvbXBvdW5kLmMAbWFrZUNvbXBvdW5kRWRnZQBiZXotPmVmbGFnACVzIC0+ICVzOiB0YWlsIG5vdCBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgAlcyAtPiAlczogaGVhZCBpcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgBzZWdtZW50IFslcywlc10gZG9lcyBub3QgaW50ZXJzZWN0IGJveCBsbD0lcyx1cj0lcwoAYm94SW50ZXJzZWN0ZgAoJS41ZywlLjVnKQBjbHVzdGVyIG5hbWVkICVzIG5vdCBmb3VuZAoAY29uY2VudHJhdGU9dHJ1ZSBtYXkgbm90IHdvcmsgY29ycmVjdGx5LgoAcmVidWlsdGRfdmxpc3RzOiByYW5rIGxlYWQgJXMgbm90IGluIG9yZGVyICVkIG9mIHJhbmsgJWQKAGRlZ2VuZXJhdGUgY29uY2VudHJhdGVkIHJhbmsgJXMsJWQKAE5EX2luKHJpZ2h0KS5zaXplICsgTkRfb3V0KHJpZ2h0KS5zaXplID09IDAAY29uYy5jAG1lcmdldmlydHVhbABkb3Q6IE91dCBvZiBtZW1vcnkKAE5EX291dCh2KS5zaXplID09IDIAZmxhdC5jAHNldGJvdW5kcwBHRF9taW5yYW5rKGcpID09IDAAYWJvbWluYXRpb24AbmVhdG9fbGF5b3V0AG5lYXRvAGZkcAB0d29waQBjaXJjbwBwYXRjaHdvcmsAb3NhZ2UAbm9wAG5vcDEAbm9wMgAlbGYsJWxmLCVsZiVjAG5vZGUgJXMsIHBvc2l0aW9uICVzLCBleHBlY3RlZCB0d28gZG91YmxlcwoAbm90cmFuc2xhdGUAbm9kZSAlcyBpbiBncmFwaCAlcyBoYXMgbm8gcG9zaXRpb24KAHMsJWxmLCVsZiVuACBlLCVsZiwlbGYlbgBwb3MgYXR0cmlidXRlIGZvciBlZGdlICglcywlcykgZG9lc24ndCBoYXZlIDNuKzEgcG9pbnRzCgAlbGYsJWxmJW4Ac3ludGF4IGVycm9yIGluIHBvcyBhdHRyaWJ1dGUgZm9yIGVkZ2UgKCVzLCVzKQoAJWxmLCVsZiwlbGYsJWxmAHN0YXJ0AHNlbGYAcmFuZG9tAG5vZGUgcG9zaXRpb25zIGFyZSBpZ25vcmVkIHVubGVzcyBzdGFydD1yYW5kb20KAGFzIHJlcXVpcmVkIGJ5IHRoZSAtbiBmbGFnCgBfbmVhdG9fY2MAZ3JhcGggJXMgaXMgZGlzY29ubmVjdGVkLiBIZW5jZSwgdGhlIGNpcmN1aXQgbW9kZWwKAEFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHJ1bm5pbmcgbmVhdG8gdXNpbmcgLUdwYWNrPXRydWUgb3IgZGVjb21wb3NpbmcKAHRoZSBncmFwaCBpbnRvIGNvbm5lY3RlZCBjb21wb25lbnRzLgoAU29sdmluZyBtb2RlbCAlZCBpdGVyYXRpb25zICVkIHRvbCAlZgoATkRfaWQobnApID09IGkAbmVhdG9pbml0LmMAbWFrZUdyYXBoRGF0YQBmIDwgZ3JhcGhbal0ubmVkZ2VzAGRmc0N5Y2xlAG1vZGVsICVkIHNtYXJ0X2luaXQgJWQgc3RyZXNzd3QgJWQgaXRlcmF0aW9ucyAlZCB0b2wgJWYKAGNvbnZlcnQgZ3JhcGg6IABtYWpvcml6YXRpb24KACVkIG5vZGVzICUuMmYgc2VjCgBsZXZlbHNnYXAAbGF5b3V0IGFib3J0ZWQKAHN0cmVzc3d0ACVzIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIDEgb3IgMiAtIGlnbm9yaW5nCgBtb2RlbABjaXJjdWl0AHN1YnNldABzaG9ydHBhdGgAbWRzAGVkZ2VzIGluIGdyYXBoICVzIGhhdmUgbm8gbGVuIGF0dHJpYnV0ZS4gSGVuY2UsIHRoZSBtZHMgbW9kZWwKAGlzIGluYXBwcm9wcmlhdGUuIFJldmVydGluZyB0byB0aGUgc2hvcnRlc3QgcGF0aCBtb2RlbC4KAFVua25vd24gdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZWwiIGluIGdyYXBoICVzIC0gaWdub3JlZAoAbW9kZQBLSwBtYWpvcgBoaWVyAElsbGVnYWwgdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZSIgaW4gZ3JhcGggJXMgLSBpZ25vcmVkCgBkaW1lbgBtYWtlU3BsaW5lOiBmYWlsZWQgdG8gbWFrZSBzcGxpbmUgZWRnZSAoJXMsJXMpCgBzcGxpbmUgJXMgJXMKAGIgPT0gbgBuZWF0b3NwbGluZXMuYwBtYWtlX2JhcnJpZXJzAHRoZSBib3VuZGluZyBib3hlcyBvZiBzb21lIG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHNvbWUgbm9kZXMgd2l0aCBtYXJnaW4gKCUuMDJmLCUuMDJmKSB0b3VjaCAtIGZhbGxpbmcgYmFjayB0byBzdHJhaWdodCBsaW5lIGVkZ2VzCgBwb2x5bGluZXMAbGluZSBzZWdtZW50cwBvcnRob2dvbmFsIGxpbmVzAENyZWF0aW5nIGVkZ2VzIHVzaW5nICVzCgBwb2x5bGluZSAlcyAlcwoAbWRzTW9kZWw6IGRlbHRhID0gJWYKAFNldHRpbmcgdXAgc3RyZXNzIGZ1bmN0aW9uAFNvbHZpbmcgbW9kZWw6IAAKZmluYWwgZSA9ICVmICVkIGl0ZXJhdGlvbnMgJS4yZiBzZWMKAERhbXBpbmcAZGVmYXVsdGRpc3QAIGluICVzIC0gc2V0dGluZyB0byAlLjAyZgoAYmFkIGVkZ2UgbGVuICIlcyIAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwoAc3RhcnQ9JXMgbm90IHN1cHBvcnRlZCB3aXRoIG1vZGU9c2VsZiAtIGlnbm9yZWQKAFNldHRpbmcgdXAgc3ByaW5nIG1vZGVsOiAAJS4yZiBzZWMKAApmaW5hbCBlID0gJWYAIQAgJWQlcyBpdGVyYXRpb25zICUuMmYgc2VjCgBNYXguIGl0ZXJhdGlvbnMgKCVkKSByZWFjaGVkIG9uIGdyYXBoICVzCgAlcyAlLjNmCgAlLjNmIABORF9oZWFwaW5kZXgodikgPCAwAHN0dWZmLmMAbmVhdG9fZW5xdWV1ZQBDYWxjdWxhdGluZyBzaG9ydGVzdCBwYXRoczogAHNwZWNpZmllZCByb290IG5vZGUgIiVzIiB3YXMgbm90IGZvdW5kLgBVc2luZyBkZWZhdWx0IGNhbGN1bGF0aW9uIGZvciByb290IG5vZGUKAHJlcG9zaXRpb24gJXMKACVzIDogJWYgJWYKACVzIDogJWYgJWYgJWYgJWYKACAgAEdyYXBoICVzIGhhcyBhcnJheSBwYWNraW5nIHdpdGggdXNlciB2YWx1ZXMgYnV0IG5vICJzb3J0diIgYXR0cmlidXRlcyBhcmUgZGVmaW5lZC4AbGVuAHBpbgBXYXJuaW5nOiBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGZsb2F0cwoAY29vcmRzAGRpbQBsYXlvdXQgJXMKAGVuZCAlcwoAaWR4ID09IHN6AGxheW91dC5jAGV4cGFuZENsdXN0ZXIAaSA9PSBkZWcAZ2V0RWRnZUxpc3QAX2RnXyVkAGRlcml2ZSBncmFwaCAlcyBvZiAlcwoAbm9kZSAiJXMiIGlzIGNvbnRhaW5lZCBpbiB0d28gbm9uLWNvbXBhcmFibGUgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAX3BvcnRfJXNfJXNfJXNfJWxkAF9wb3J0XyVzXyglZClfKCVkKV8lbGQAJWxmLCVsZiwlbGYsJWxmJWMAZ3JhcGggJXMsIGNvb3JkICVzLCBleHBlY3RlZCBmb3VyIGRvdWJsZXMKAHNwbGluZXMgYW5kIGNsdXN0ZXIgZWRnZXMgbm90IHN1cHBvcnRlZCAtIHVzaW5nIGxpbmUgc2VnbWVudHMKAG1heGl0ZXIASwBUMABmZHAgZG9lcyBub3Qgc3VwcG9ydCBzdGFydD1zZWxmIC0gaWdub3JpbmcKAHhMYXlvdXQgADk6cHJpc20AdHJpZXMgPSAlZCwgbW9kZSA9ICVzCgBkZXJpdmVkAGluZm8Abm9ybWFsaXplAG92ZXJsYXAAT3ZlcmxhcCB2YWx1ZSAiJXMiIHVuc3VwcG9ydGVkIC0gaWdub3JlZAoAVW5yZWNvZ25pemVkIG92ZXJsYXAgdmFsdWUgIiVzIiAtIHVzaW5nIGZhbHNlCgBWb3Jvbm9pAG92ZXJsYXA6ICVzIHZhbHVlICVkIHNjYWxpbmcgJS4wNGYKAG92ZXJsYXBfc2NhbGluZwB2b3Jvbm9pAHNjYWxpbmcAdnBzYwBpcHNlcABvc2NhbGUAb2xkIHNjYWxpbmcAc2NhbGV4eQB4IGFuZCB5IHNjYWxpbmcAb3J0aG8Ab3J0aG9nb25hbCBjb25zdHJhaW50cwBvcnRob195eABvcnRob3h5AHh5IG9ydGhvZ29uYWwgY29uc3RyYWludHMAb3J0aG95eAB5eCBvcnRob2dvbmFsIGNvbnN0cmFpbnRzAHBvcnRobwBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwb3J0aG9feXgAcG9ydGhveHkAeHkgcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcG9ydGhveXgAeXggcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcHJpc20AQWRqdXN0aW5nICVzIHVzaW5nICVzCgBVbmhhbmRsZWQgYWRqdXN0IG9wdGlvbiAlcwoATnVtYmVyIG9mIGl0ZXJhdGlvbnMgPSAlZAoATnVtYmVyIG9mIGluY3JlYXNlcyA9ICVkCgBvdmVybGFwIFslZF0gOiAlZAoAdm9yb19tYXJnaW4Ac2VwAGVzZXAATm9kZSBzZXBhcmF0aW9uOiBhZGQ9JWQgKCVmLCVmKQoAJWYsJWYAc2NhbGUgPSAoJS4wM2YsJS4wM2YpCgBFZGdlIHNlcGFyYXRpb246IGFkZD0lZCAoJWYsJWYpCgBDYWxjdWxhdGluZyBjaXJjdWl0IG1vZGVsAGNvbmp1Z2F0ZV9ncmFkaWVudDogdW5leHBlY3RlZCBsZW5ndGggMCB2ZWN0b3IKAENhbGN1bGF0aW5nIHN1YnNldCBtb2RlbABncmFwaCBpcyBkaXNjb25uZWN0ZWQuIEhlbmNlLCB0aGUgY2lyY3VpdCBtb2RlbAoAaXMgdW5kZWZpbmVkLiBSZXZlcnRpbmcgdG8gdGhlIHNob3J0ZXN0IHBhdGggbW9kZWwuCgBDYWxjdWxhdGluZyBNRFMgbW9kZWwAQ2FsY3VsYXRpbmcgc2hvcnRlc3QgcGF0aHMAOiAlLjJmIHNlYwoAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwA6ICUuMmYgc2VjAGNnAGRlbHRhIDw9IDB4RkZGRgBjb25zdHJhaW50LmMAbWtOQ29uc3RyYWludEcAdmcAY29tcHJlc3MgJWcgCgBzY2FsZSBieSAlZywlZyAKAGJlc3Rjb3N0IDwgSFVHRV9WQUwAY29tcHV0ZVNjYWxlWFkAdHJ5aW5nIHRvIGRlbGV0ZSBhIG5vbi1saW5lCgAKaW50ZXJzZWN0aW9uIGF0ICUuM2YgJS4zZgoAc2VnIyVkIDogKCUuM2YsICUuM2YpICglLjNmLCAlLjNmKQoAbWFrZUFkZFBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAbWFrZVBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAeCE9TlVMTABzbWFydF9pbmlfeC5jAElNRFNfZ2l2ZW5fZGltAGlsbC1jb25kaXRpb25lZAByb290ID0gJXMgbWF4IHN0ZXBzIHRvIHJvb3QgPSAlZAoAdHdvcGk6IHVzZSBvZiB3ZWlnaHQ9MCBjcmVhdGVzIGRpc2Nvbm5lY3RlZCBjb21wb25lbnQuCgBSYW5rIHNlcGFyYXRpb24gPSAAJS4wM2xmIABhcmVhAGluc2V0ACVzIGNvb3JkICUuNWcgJS41ZyBodCAlZiB3aWR0aCAlZgoAJS4wM2YAcmVjICVmICVmICVmICVmCgAlZiAtICVmICVmICVmICVmID0gJWYgKCVmICVmICVmICVmKQoAdHJ5aW5nIHRvIGFkZCB0byByZWN0IHslZiArLy0gJWYsICVmICsvLSAlZn0KAHRvdGFsIGFkZGVkIHNvIGZhciA9ICVkCgBhZGRpbmcgJWQgaXRlbXMsIHRvdGFsIGFyZWEgPSAlZiwgdyA9ICVmLCBhcmVhL3c9JWYKAGNvbXBvdW5kRWRnZXM6IGNvdWxkIG5vdCBjb25zdHJ1Y3Qgb2JzdGFjbGVzIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAGNvbXBvdW5kRWRnZXM6IG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHBhY2sgdmFsdWUgJWQgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAc2VwIHZhbHVlICglLjAzZiwlLjAzZikgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAY2Mlc18lZABjYyVzKyVkAGNfY250ID09IDAAY29tcC5jAGZpbmRDQ29tcABncmlkKCVkLCVkKTogJXMKAG9uZWJsb2NrAG1pbmRpc3QAYXJ0aWN1bGF0aW9uX3BvcwByb290AHJvb3QgPSAlcwoAX2Jsb2NrXyVkAHMtPnN6ID4gMABibG9ja3RyZWUuYwBwb3AAYWN0dWFsAG5vZGVsaXN0LmMAaW5zZXJ0Tm9kZWxpc3QAX3NwYW5fJWQAX2Nsb25lXyVkAGlwAGRlZ2xpc3QuYwByZW1vdmVEZWdsaXN0AEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLWVuZCBvZiBidWZmZXIgbWlzc2VkAGZhdGFsIGVycm9yIC0gc2Nhbm5lciBpbnB1dCBidWZmZXIgb3ZlcmZsb3cAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19nZXRfbmV4dF9idWZmZXIoKQBpbnB1dABzeW50YXggYW1iaWd1aXR5IC0gYmFkbHkgZGVsaW1pdGVkIG51bWJlciAnACcgaW4gbGluZSAlZCBvZiAAIHNwbGl0cyBpbnRvIHR3byB0b2tlbnMKACVzAGxpbmUAJWQgJTFbIl0lbgBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnX2NyZWF0ZV9idWZmZXIoKQBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnZW5zdXJlX2J1ZmZlcl9zdGFjaygpADogACBpbiBsaW5lICVkACBuZWFyICcAIHNjYW5uaW5nIGEgcXVvdGVkIHN0cmluZyAobWlzc2luZyBlbmRxdW90ZT8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOiIAIHNjYW5uaW5nIGEgSFRNTCBzdHJpbmcgKG1pc3NpbmcgJz4nPyBiYWQgbmVzdGluZz8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOjwAIHNjYW5uaW5nIGEgLyouLi4qLyBjb21tZW50IChtaXNzaW5nICcqLz8gbG9uZ2VyIHRoYW4gJWQ/KQBmbGV4IHNjYW5uZXIgcHVzaC1iYWNrIG92ZXJmbG93ACIiAHN0cmljdABsaW5lbGVuZ3RoADsKACBba2V5PQBdACBbACwKAD0AXyVsZF9TVVNQRUNUAGRpAHN0cmljdCAAewoAXTsKABLu7hQJA+7+7u7uAe7u7gHu7gr+7hMZFe4TAe7u7u4LEe7u7u7u7u7u7gHu7hYJAQEdDxfu7hoXG+7uHO7u7u4BGfvu7u4B7hDu7h7u7u7uAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcRAgICAgICAgICAgICAhIQAhMCAhYCAgICAgICAgICAgICAgICAgICAgICAgICAhQCFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICDgIPAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgECAwQFBgcICQoLDA0LAwQFDwcDDA0GDA0ODA0aFRYAAQADBw4GDwgMDRITKhARCRAvMBEyFxMNFBIuEhRBEzITLEAqQhksQkYiDA0OIw8JEBEKEBHJEBEtRUb8AQb2Dwf2JAIQES8wNk1OKCY7PCo2MTk9Py86QNhEMD4lN0M1Sys4SUwAAwkAAAABDgILDAgjJCU2Oz0ADRASGxYcEicyIhczHjwGBzUFDxEUGCkAEykAAAAAADcVKB0eACEmNB8wPhksABsAIBoqACs6Li8AMTg5LQACAgEAAwMBAAEAAQEBAAIBAQACAgMBAQAABQABAwEDBQMBAQEBAgABAAQCAAIBAQMCAQADAgEAAQEAAQEBAwAYGRkZGhscHB0dHh4fHyAgISEiIiMkJCYnJSUoKCkpKSoqKysrLCwtLS4vLzAxMTIzNDY1Nzc3ODg4OTk6Ou7u/+7u7u7u7h8g7gDv7u7uDO7u7ggN7u7u+O7u7u7u7vXu/wMIBCEFCxITJxQVFikyQRcYGRosMzRCR0gbShwdLh5PHyBrZXkAYXR0cmlidXRlIG1hY3JvcyBub3QgaW1wbGVtZW50ZWQAJXM6JXMAQ291bGQgbm90IG9wZW4gIiVzIiBmb3Igd3JpdGluZyA6ICVzCgBObyBsaWJ6IHN1cHBvcnQuCgAuJWQAbm9uYW1lLmd2AGd2d3JpdGVfbm9feiBwcm9ibGVtICVkCgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCgBObyBsaWJ6IHN1cHBvcnQKAGd2cHJpbnRmOiAlcwoALTk5OTk5OTk5OTk5OTk5OS45OQBncmFwaHZpegAyLjQwLjEAMjAxNjEyMjUuMDMwNAByZW5kZXIAbGF5b3V0AGRldmljZQBsb2FkaW1hZ2UAZHluYW1pYyBsb2FkaW5nIG5vdCBhdmFpbGFibGUKAFVzaW5nICVzOiAlczolcwoAZ3Z1c2Vyc2hhcGUuYwBndnVzZXJzaGFwZV9maW5kAGd2dXNlcnNoYXBlX2ZpbGVfYWNjZXNzAEZpbGVuYW1lICIlcyIgaXMgdW5zYWZlCgAlcyB3aGlsZSBvcGVuaW5nICVzCgB1cy0+ZgBndnVzZXJzaGFwZV9vcGVuACIlcyIgd2FzIG5vdCBmb3VuZCBhcyBhIGZpbGUgb3IgYXMgYSBzaGFwZSBsaWJyYXJ5IG1lbWJlcgoAL01lZGlhQm94AChbYS16XVthLXpBLVpdKik9IihbXiJdKikiAGNhbm5vdCBjb21waWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiAlcwAlbGYlMnMAcHQAdmlld0JveAAlbGYgJWxmICVsZiAlbGYAaW4AcHgAcGMAIgBjbQBtbQAlJUJvdW5kaW5nQm94OgAB0NHS09TV1tfY2QA8c3ZnAFdFQlAAd2VicAAobGliKQCJUE5HDQoaCgBwbmcAJSFQUy1BZG9iZS0AQk0AYm1wAEdJRjgAZ2lmAP/Y/+AAanBlZwAlUERGLQBwZGYAxdDTxgBlcHMAPD94bWwAeG1sAFJJRkYAcmlmZgAAAAEAAGljbwBMYXlvdXQgdHlwZTogIiVzIiBub3QgcmVjb2duaXplZC4gVXNlIG9uZSBvZjolcwoAJWQgJWQgJWQgJWQATGF5b3V0IHdhcyBub3QgZG9uZQoAZmFpbHVyZSBtYWxsb2MnaW5nIGZvciByZXN1bHQgc3RyaW5nAGdjOiBPdXQgb2YgbWVtb3J5CgBfY2NfAG9yaWcAb3AAY2NvbXBzLmMAbWFwQ2x1c3QAY2NncmFwaGluZm8AY2Nnbm9kZWluZm8AKCU0bGQpICU3bGQgbm9kZXMgJTdsZCBlZGdlcwoAICAgICAgICU3ZCBub2RlcyAlN2QgZWRnZXMgJTdsZCBjb21wb25lbnRzICVzCgBkZwBFcnJvcjogbm9kZSAiJXMiIGJlbG9uZ3MgdG8gdHdvIG5vbi1uZXN0ZWQgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAc29ydHYAcm93IG1ham9yAGNvbHVtbiBtYWpvcgBhcnJheSBwYWNraW5nOiAlcyAlZCByb3dzICVkIGNvbHVtbnMKAGJiWyVzXSAlLjVnICUuNWcgJS41ZyAlLjVnCgBzdGVwIHNpemUgPSAlZAoAcG9zWyVkXSAlZCAlZAoAY2MgKCVkIGNlbGxzKSBhdCAoJWQsJWQpICglZCwlZCkKAGNjICglZCBjZWxscykgYXQgKCVkLCVkKQoAJXMgbm8uIGNlbGxzICVkIFcgJWQgSCAlZAoAICAlZCAlZCBjZWxsCgBsaWJwYWNrOiBkaXNjID0gJWYgKCA8IDApCgBQYWNraW5nOiBjb21wdXRlIGdyaWQgc2l6ZQoAYSAlZiBiICVmIGMgJWYgZCAlZiByICVmCgByb290ICVkICglZikgJWQgKCVmKQoAIHIxICVmIHIyICVmCgBwaW5mbwBwYWNrLmMAZ2V0UGFja0luZm8AICBtYXJnaW4gJWQKAHBhY2ttb2RlAHBhcnNlUGFja01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABsbnJjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTABlZGdldGFyZ2V0AGxhYmVsdGFyZ2V0AHRhaWx0YXJnZXQAaGVhZHRhcmdldABlZGdldG9vbHRpcABsYWJlbHRvb2x0aXAAdGFpbHRvb2x0aXAAaGVhZHRvb2x0aXAAAW5lc3Rpbmcgbm90IGFsbG93ZWQgaW4gc3R5bGU6ICVzCgB1bm1hdGNoZWQgJyknIGluIHN0eWxlOiAlcwoAdHJ1bmNhdGluZyBzdHlsZSAnJXMnCgB1bm1hdGNoZWQgJygnIGluIHN0eWxlOiAlcwoAYWxsAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBmaWxsY29sb3IAZm9udHNpemUAZm9udG5hbWUAZm9udGNvbG9yAHhsYWJlbABwZW53aWR0aABwZXJpcGhlcmllcwBza2V3AGRpc3RvcnRpb24Abm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAVW5zdXBwb3J0ZWQgY2hhcnNldCB2YWx1ZSAlZAoAVVRGLTgAQklHLTUAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAcG9seWdvbgBvdmFsAGNpcmNsZQBwb2ludABlZ2cAdHJpYW5nbGUAcGxhaW50ZXh0AHBsYWluAGRpYW1vbmQAdHJhcGV6aXVtAHBhcmFsbGVsb2dyYW0AaG91c2UAcGVudGFnb24AaGV4YWdvbgBzZXB0YWdvbgBvY3RhZ29uAG5vdGUAdGFiAGZvbGRlcgBib3gzZABjb21wb25lbnQAY3lsaW5kZXIAcmVjdAByZWN0YW5nbGUAc3F1YXJlAGRvdWJsZWNpcmNsZQBkb3VibGVvY3RhZ29uAHRyaXBsZW9jdGFnb24AaW52dHJpYW5nbGUAaW52dHJhcGV6aXVtAGludmhvdXNlAHVuZGVybGluZQBNZGlhbW9uZABNc3F1YXJlAE1jaXJjbGUAcHJvbW90ZXIAY2RzAHRlcm1pbmF0b3IAdXRyAGluc3VsYXRvcgByaWJvc2l0ZQBybmFzdGFiAHByb3RlYXNlc2l0ZQBwcm90ZWluc3RhYgBwcmltZXJzaXRlAHJlc3RyaWN0aW9uc2l0ZQBmaXZlcG92ZXJoYW5nAHRocmVlcG92ZXJoYW5nAG5vdmVyaGFuZwBhc3NlbWJseQBzaWduYXR1cmUAcnByb21vdGVyAGxhcnJvdwByYXJyb3cAbHByb21vdGVyAHJlY29yZABNcmVjb3JkAHN0YXIAIzgwODA4MAAjZmNmY2ZjACMzMDMwMzAAI2U4ZThlOAAjZTBlMGUwACNmMGYwZjAAIzEwMTAxMAAjZjhmOGY4AGluIG5vZGUgJXMKAHJvdW5kZWQAZGlhZ29uYWxzAHJhZGlhbABzdHJpcGVkAHdlZGdlZABfAG5vZGUgJXMsIHBvcnQgJXMsIHVucmVjb2duaXplZCBjb21wYXNzIHBvaW50ICclcycgLSBpZ25vcmVkCgBub2RlICVzLCBwb3J0ICVzIHVucmVjb2duaXplZAoAJS41ZyAlLjVnIHRyYW5zbGF0ZSBuZXdwYXRoIHVzZXJfc2hhcGVfJWQKAGludmlzAABmaWxsZWQAAHMAZQB3AHNwbGluZXMuYwBiZWdpbnBhdGgAUC0+ZW5kLnRoZXRhIDwgMiAqIE1fUEkAZW5kcGF0aABtYWtlU2VsZkVkZ2UAZ2V0c3BsaW5lcG9pbnRzOiBubyBzcGxpbmUgcG9pbnRzIGF2YWlsYWJsZSBmb3IgZWRnZSAoJXMsJXMpCgBwb2x5bGluZU1pZHBvaW50AHNwYW4tPmZvbnQAdGV4dHNwYW4uYwB0ZXh0c3Bhbl9zaXplAGZvbnQtPm5hbWUAZm9udG5hbWU6ICIlcyIgcmVzb2x2ZWQgdG86ICVzCgBmb250bmFtZTogdW5hYmxlIHRvIHJlc29sdmUgIiVzIgoAY291cgBhcmlhbABoZWx2ZXRpY2EAW2ludGVybmFsIHRpbWVzXQBbaW50ZXJuYWwgY291cmllcl0AW2ludGVybmFsIGFyaWFsXQBBdmFudEdhcmRlLUJvb2sAVVJXIEdvdGhpYyBMAGJvb2sAc2Fucy1TZXJpZgBBdmFudEdhcmRlLUJvb2tPYmxpcXVlAG9ibGlxdWUAaXRhbGljAEF2YW50R2FyZGUtRGVtaQBkZW1pAEF2YW50R2FyZGUtRGVtaU9ibGlxdWUAQm9va21hbi1EZW1pAFVSVyBCb29rbWFuIEwAc2VyaWYAQm9va21hbi1EZW1pSXRhbGljAEJvb2ttYW4tTGlnaHQAbGlnaHQAQm9va21hbi1MaWdodEl0YWxpYwBDb3VyaWVyAG1vbm9zcGFjZQBDb3VyaWVyLUJvbGQAQ291cmllci1Cb2xkT2JsaXF1ZQBDb3VyaWVyLU9ibGlxdWUASGVsdmV0aWNhAEhlbHZldGljYS1Cb2xkAEhlbHZldGljYS1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93AGNvbmRlbnNlZABIZWx2ZXRpY2EtTmFycm93LUJvbGQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93LU9ibGlxdWUASGVsdmV0aWNhLU9ibGlxdWUATmV3Q2VudHVyeVNjaGxiay1Cb2xkAENlbnR1cnkgU2Nob29sYm9vayBMAE5ld0NlbnR1cnlTY2hsYmstQm9sZEl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLUl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLVJvbWFuAHJvbWFuAFBhbGF0aW5vLUJvbGQAUGFsYXRpbm8gTGlub3R5cGUAUGFsYXRpbm8tQm9sZEl0YWxpYwBQYWxhdGluby1JdGFsaWMAUGFsYXRpbm8tUm9tYW4AU3ltYm9sAGZhbnRhc3kAVGltZXMtQm9sZABUaW1lcwBUaW1lcy1Cb2xkSXRhbGljAFRpbWVzLUl0YWxpYwBaYXBmQ2hhbmNlcnktTWVkaXVtSXRhbGljAFVSVyBDaGFuY2VyeSBMAG1lZGl1bQBaYXBmRGluZ2JhdHMARGluZ2JhdHMAaW5wdXRzY2FsZQBubwB0cnVlAHllcwB1dGlscy5jAHUgPT0gVUZfZmluZCh1KQBVRl9zZXRuYW1lAAFmaWxlIGxvYWRpbmcgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgZW52aXJvbm1lbnQgY29udGFpbnMgU0VSVkVSX05BTUU9IiVzIgphbmQgdGhlIEdWX0ZJTEVfUEFUSCB2YXJpYWJsZSBpcyB1bnNldCBvciBlbXB0eS4KAFBhdGggcHJvdmlkZWQgdG8gZmlsZTogIiVzIiBoYXMgYmVlbiBpZ25vcmVkIGJlY2F1c2UgZmlsZXMgYXJlIG9ubHkgcGVybWl0dGVkIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBkaXJlY3RvcmllcyBpbiAiJXMiIHdoZW4gcnVubmluZyBpbiBhbiBodHRwIHNlcnZlci4KACVzJXMlcwAvADoAZWxsaXBzZQBUaW1lcy1Sb21hbgBjbHVzdGVyAF9fY2x1c3Rlcm5vZGVzAGNsdXN0ZXIgY3ljbGUgJXMgLS0gJXMgbm90IHN1cHBvcnRlZAoAdGFpbCBjbHVzdGVyICVzIGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKAGhlYWQgY2x1c3RlciAlcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgB0YWlsIG5vZGUgJXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAaGVhZCBub2RlICVzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAF9fAGxhYmVsAHNoYXBlAGJveABUd28gY2x1c3RlcnMgbmFtZWQgJXMgLSB0aGUgc2Vjb25kIHdpbGwgYmUgaWdub3JlZAoAbWFwTgBBRWxpZwBBYWN1dGUAQWNpcmMAQWdyYXZlAEFscGhhAEFyaW5nAEF0aWxkZQBBdW1sAEJldGEAQ2NlZGlsAENoaQBEYWdnZXIARGVsdGEARVRIAEVhY3V0ZQBFY2lyYwBFZ3JhdmUARXBzaWxvbgBFdGEARXVtbABHYW1tYQBJYWN1dGUASWNpcmMASWdyYXZlAElvdGEASXVtbABLYXBwYQBMYW1iZGEATXUATnRpbGRlAE51AE9FbGlnAE9hY3V0ZQBPY2lyYwBPZ3JhdmUAT21lZ2EAT21pY3JvbgBPc2xhc2gAT3RpbGRlAE91bWwAUGhpAFBpAFByaW1lAFBzaQBSaG8AU2Nhcm9uAFNpZ21hAFRIT1JOAFRhdQBUaGV0YQBVYWN1dGUAVWNpcmMAVWdyYXZlAFVwc2lsb24AVXVtbABYaQBZYWN1dGUAWXVtbABaZXRhAGFhY3V0ZQBhY2lyYwBhY3V0ZQBhZWxpZwBhZ3JhdmUAYWxlZnN5bQBhbHBoYQBhbXAAYW5kAGFuZwBhcmluZwBhc3ltcABhdGlsZGUAYXVtbABiZHF1bwBiZXRhAGJydmJhcgBidWxsAGNhcABjY2VkaWwAY2VkaWwAY2VudABjaGkAY2lyYwBjbHVicwBjb25nAGNvcHkAY3JhcnIAY3VwAGN1cnJlbgBkQXJyAGRhZ2dlcgBkYXJyAGRlZwBkZWx0YQBkaWFtcwBkaXZpZGUAZWFjdXRlAGVjaXJjAGVncmF2ZQBlbXB0eQBlbXNwAGVuc3AAZXBzaWxvbgBlcXVpdgBldGEAZXRoAGV1bWwAZXVybwBleGlzdABmbm9mAGZvcmFsbABmcmFjMTIAZnJhYzE0AGZyYWMzNABmcmFzbABnYW1tYQBnZQBndABoQXJyAGhhcnIAaGVhcnRzAGhlbGxpcABpYWN1dGUAaWNpcmMAaWV4Y2wAaWdyYXZlAGltYWdlAGluZmluAGludABpb3RhAGlxdWVzdABpc2luAGl1bWwAa2FwcGEAbEFycgBsYW1iZGEAbGFuZwBsYXF1bwBsYXJyAGxjZWlsAGxkcXVvAGxlAGxmbG9vcgBsb3dhc3QAbG96AGxybQBsc2FxdW8AbHNxdW8AbHQAbWFjcgBtZGFzaABtaWNybwBtaWRkb3QAbXUAbmFibGEAbmJzcABuZGFzaABuZQBuaQBub3QAbm90aW4AbnN1YgBudGlsZGUAbnUAb2FjdXRlAG9jaXJjAG9lbGlnAG9ncmF2ZQBvbGluZQBvbWVnYQBvbWljcm9uAG9wbHVzAG9yAG9yZGYAb3JkbQBvc2xhc2gAb3RpbGRlAG90aW1lcwBvdW1sAHBhcmEAcGFydABwZXJtaWwAcGVycABwaGkAcGkAcGl2AHBsdXNtbgBwb3VuZABwcmltZQBwcm9kAHByb3AAcHNpAHF1b3QAckFycgByYWRpYwByYW5nAHJhcXVvAHJhcnIAcmNlaWwAcmRxdW8AcmVhbAByZWcAcmZsb29yAHJobwBybG0AcnNhcXVvAHJzcXVvAHNicXVvAHNjYXJvbgBzZG90AHNlY3QAc2h5AHNpZ21hAHNpZ21hZgBzaW0Ac3BhZGVzAHN1YgBzdWJlAHN1bQBzdXAAc3VwMQBzdXAyAHN1cDMAc3VwZQBzemxpZwB0YXUAdGhlcmU0AHRoZXRhAHRoZXRhc3ltAHRoaW5zcAB0aG9ybgB0aWxkZQB0aW1lcwB0cmFkZQB1QXJyAHVhY3V0ZQB1YXJyAHVjaXJjAHVncmF2ZQB1bWwAdXBzaWgAdXBzaWxvbgB1dW1sAHdlaWVycAB4aQB5YWN1dGUAeWVuAHl1bWwAemV0YQB6d2oAenduagBVVEY4IGNvZGVzID4gNCBieXRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgKGdyYXBoICVzKSAtIHRyZWF0ZWQgYXMgTGF0aW4tMS4gUGVyaGFwcyAiLUdjaGFyc2V0PWxhdGluMSIgaXMgbmVlZGVkPwoASW52YWxpZCAlZC1ieXRlIFVURjggZm91bmQgaW4gaW5wdXQgb2YgZ3JhcGggJXMgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAGJ6LnNpemUAb3ZlcmxhcF9iZXppZXIAdXJ2ZWQAb21wb3VuZABhbHNlAGluZQBvbmUAbwBydGhvAG9seWxpbmUAcGxpbmUAcnVlAGVzAFVua25vd24gInNwbGluZXMiIHZhbHVlOiAiJXMiIC0gaWdub3JlZAoAc3BsaW5lcwBvZGIAT3J0aG9nb25hbCBlZGdlcyBkbyBub3QgY3VycmVudGx5IGhhbmRsZSBlZGdlIGxhYmVscy4gVHJ5IHVzaW5nIHhsYWJlbHMuCgBvcnRobyAlcyAlcwoAY2hhbmkAb3J0aG8uYwBjaGFuU2VhcmNoAGNwACUlIVBTLUFkb2JlLTIuMAolJSUlQm91bmRpbmdCb3g6IChhdGVuZCkKL3BvaW50IHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgbmV3cGF0aAogIFggWSAzIDAgMzYwIGFyYyBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgovbm9kZSB7CiAvdSBleGNoIGRlZgogL3IgZXhjaCBkZWYKIC9kIGV4Y2ggZGVmCiAvbCBleGNoIGRlZgogbmV3cGF0aCBsIGQgbW92ZXRvCiByIGQgbGluZXRvIHIgdSBsaW5ldG8gbCB1IGxpbmV0bwogY2xvc2VwYXRoIGZpbGwKfSBkZWYKCgAlZCAlZCB0cmFuc2xhdGUKADAuOCAwLjggMC44IHNldHJnYmNvbG9yCgBzaG93cGFnZQolJSUlVHJhaWxlcgolJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgBuZXdwYXRoICVkICVkIG1vdmV0bwoAJWQgJWQgbGluZXRvCgAlZCAlZCBsaW5ldG8gc3Ryb2tlCgBjaGFubmVsICVkICglZiwlZikKACAtPgoAICAgICAAKCglZiwlZiksKCVmLCVmKSkgJXMgJXMAQl9SSUdIVABCX0RPV04AQl9MRUZUAEJfVVAAQl9OT0RFAHNlZwBuZXh0X3NlZwBkZWNpZGVfcG9pbnQAaW5jb21wYXJhYmxlIHNlZ21lbnRzICEhIC0tIEFib3J0aW5nCgBzMS0+Y29tbV9jb29yZD09czItPmNvbW1fY29vcmQAaXNfcGFyYWxsZWwAZ3JhcGggRyB7CgAgbm9kZVtzaGFwZT1wb2ludF0KACAgJWQgW3Bvcz0iJWQsJWQiXQoAICAlZCAtLSAlZFtsZW49IiVmIl0KAH0KAGNvbG9yICVzACVzIGlzIG5vdCBhIGtub3duIGNvbG9yLgoAZXJyb3IgaW4gY29seGxhdGUoKQoAc29saWQAaW52aXNpYmxlAGJvbGQAc2V0bGluZXdpZHRoAGZpbGxlZAB1bmZpbGxlZAB0YXBlcmVkAGd2cmVuZGVyX3NldF9zdHlsZTogdW5zdXBwb3J0ZWQgc3R5bGUgJXMgLSBpZ25vcmluZwoAZ3ZyZW5kZXIuYwBndnJlbmRlcl91c2Vyc2hhcGUAbmFtZQBuYW1lWzBdAGJvdGgAam9iAGd2bG9hZGltYWdlLmMAZ3Zsb2FkaW1hZ2UAdXMAdXMtPm5hbWUAdXMtPm5hbWVbMF0ATm8gbG9hZGltYWdlIHBsdWdpbiBmb3IgIiVzIgoAUQBMZWZ0AEtQX0xlZnQAUmlnaHQAS1BfUmlnaHQAVXAAS1BfVXAARG93bgBLUF9Eb3duAHBsdXMAS1BfQWRkAG1pbnVzAEtQX1N1YnRyYWN0AEYAZWRnZQB0YWlscG9ydABoZWFkcG9ydABrZXkAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADIAMwA0ADUANgA3ADgAOQAxMAAxMQAxMgAxMwAxNAAxNQAxNgAxNwAxOAAxOQAyMABBZ25vZGVpbmZvX3QAQWdlZGdlaW5mb190AHJvd2cAY29sZwBBZ3JhcGhpbmZvX3QAZGVseCA+PSAwAHBvc19odG1sX3RibABkZWx5ID49IDAAdGFibGUgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIHRhYmxlIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAGNlbGwgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIGNlbGwgc2l6ZSB3aXRoIHVuc3BlY2lmaWVkIHdpZHRoIG9yIGhlaWdodAoATm8gb3IgaW1wcm9wZXIgaW1hZ2UgZmlsZT0iJXMiCgBwZW5jb2xvcgAtPgBmUFEuYwBQUWNoZWNrAEhlYXAgb3ZlcmZsb3cKACUhUFMtQWRvYmUtMi4wCi9ub2RlIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIGZpbGwKfSBkZWYKL2NlbGwgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICAveSBleGNoIGRlZgogIC94IGV4Y2ggZGVmCiAgbmV3cGF0aAogIHggeSBtb3ZldG8KICB4IFkgbGluZXRvCiAgWCBZIGxpbmV0bwogIFggeSBsaW5ldG8KICBjbG9zZXBhdGggc3Ryb2tlCn0gZGVmCgBzaG93cGFnZQoAZmFpbGVkIGF0IG5vZGUgJWRbMF0KAG5wLT5jZWxsc1swXQBtYXplLmMAY2hrU2dyYXBoAGZhaWxlZCBhdCBub2RlICVkWzFdCgBucC0+Y2VsbHNbMV0AZGl0ZW1zAGZpbmRTVmVydAAlJSUlUGFnZTogMSAxCiUlJSVQYWdlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlZiAlZiB0cmFuc2xhdGUKADAgMCAxIHNldHJnYmNvbG9yCgAlZiAlZiAlZiAlZiBub2RlCgAwIDAgMCBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgY2VsbAoAMSAwIDAgc2V0cmdiY29sb3IKAHVuZXhwZWN0ZWQgY2FzZSBpbiBsb2NhdGVfZW5kcG9pbnQKADAAdHJhcGV6b2lkLmMAbG9jYXRlX2VuZHBvaW50AGFkZF9zZWdtZW50OiBlcnJvcgoAbmV3bm9kZTogUXVlcnktdGFibGUgb3ZlcmZsb3cKAG5ld25vZGUAbmV3dHJhcDogVHJhcGV6b2lkLXRhYmxlIG92ZXJmbG93ICVkCgBuZXd0cmFwAGluZGV4LmMAUlRyZWVTZWFyY2gAbi0+bGV2ZWwgPj0gMABSVHJlZUluc2VydABsZXZlbCA+PSAwICYmIGxldmVsIDw9ICgqbiktPmxldmVsAHItPmJvdW5kYXJ5W2ldIDw9IHItPmJvdW5kYXJ5W05VTURJTVMgKyBpXQByICYmIG4gJiYgbmV3AFJUcmVlSW5zZXJ0MgBsZXZlbCA+PSAwICYmIGxldmVsIDw9IG4tPmxldmVsAEZBTFNFAG5vZGUuYwBOb2RlQ292ZXIAciAmJiBuAFBpY2tCcmFuY2gAQWRkQnJhbmNoAGkgPCBOT0RFQ0FSRABuZXcAbiAmJiBpID49IDAgJiYgaSA8IE5PREVDQVJEAERpc2NvbkJyYW5jaAByAHJlY3RhbmdsZS5jAFJlY3RBcmVhAHIgJiYgcnIAQ29tYmluZVJlY3QAciAmJiBzAE92ZXJsYXAAbgBzcGxpdC5xLmMAU3BsaXROb2RlAGIAbi0+Y291bnQgKyAoKm5uKS0+Y291bnQgPT0gTk9ERUNBUkQgKyAxAExvYWROb2RlcwBxAHAAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnBhcnRpdGlvbltpXSA9PSAwIHx8IHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMQBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMF0gKyBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPT0gTk9ERUNBUkQgKyAxAE1ldGhvZFplcm8AcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdID49IHJ0cC0+TWluRmlsbCAmJiBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPj0gcnRwLT5NaW5GaWxsACFydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0udGFrZW5baV0AQ2xhc3NpZnkAR2V0QnJhbmNoZXMAbi0+YnJhbmNoW2ldLmNoaWxkAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoAgICAgICEAxZAQAfUAgDBxITFFcWFwgLaQwfCgUMDikRKw8tEC8wIDIGNDUbHB0eCwwhIiMkJSYnKAwYGRcEChscGiAqCiEiIyQlJicoDAoOUwosWDFYWFhYWFgMGxwPLlgzISIjJCUmJygbHP9T//8hIiMkJSYnKAz//wX///8JFP//////DBsc/xAVFiEiIyQlJicoGxz/////ISIjJCUmJygM/xITFBEWF////////wwbHP///xIhIiMkJSYnKBsc/////yEiIyQlJicoDP///////xP///////8MGxz/////ISIjJCUmJygbHP////8hIiMkJSYnKBITFBUWFxgZ////////////IyQlJicbEhMUFhciNmgBHzhWISACGxsbXhsbNzlwNtLCTwQ8IkciPyJEIiJYImUiIgUGX2A5BAcICQoLDA0OBGZnXWptBQZvWDtxBwgJCgsMDQ4Ecjxbcz5hRhsSExQWFwQFBj9BYkkHCAkKCwwNDgUGAFwAAAcICQoLDA0OBAAATwAAAFNCAAAAAAAEBQYARFRVBwgJCgsMDQ4FBgAAAAAHCAkKCwwNDgQAKiwuRzEzAAAAAAAABAUGAAAASgcICQoLDA0OBQYAAAAABwgJCgsMDQ4EAAAAAAAATAAAAAAAAAQFBgAAAAAHCAkKCwwNDgUGAAAAAAcICQoLDA0OKSstLzAyNDUAAAAAAAAAAAApKy0wMgAELwAkIwASFBYaHB4gGAAFBy8vLwAvLwAACQgoAAABIgIGAAAAAAAIAAAAAAAAAAAAAAAAACUDJhMKKRULKhcOLRkRGwwrHQ0sHw8hEAAzADAAL0MAMQAvADUuJ0IyQQA6OAA8NEUANgBAAAA/AEQ3Ozk9AAIDAwEBAgEBAQMDAwMDAwMDAQEBAQEBAQEBAQEBAQEBAQIBAQIABgEDAwMDAwEAAQIDAAQBAgMABAAEAAQAAwIBAgECAVN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGJlZm9yZSA8VEFCTEU+AFN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGFmdGVyIDwvVEFCTEU+AAApKioqKywsLS0tLS0tLS0tLS4vMDEyMzQ1Njc4OTo7PD0+Pj8/QUBCQkJCQkJDQ0REREZFR0dHSUhKSEtITEhNTU5OT0//Aw8QESM6JD0lQBVDJkUnSBhLGU0aKBxOHR5QUVJZWmxrbmNkV2ltZW1vcnkgZXhoYXVzdGVkACVzIGluIGxpbmUgJWQgCgAuLi4gJXMgLi4uCgBUQUJMRQBUUgBUSABURABIVE1MAEZPTlQAQgBVAE8ASQBTVVAAU1VCAFMAQlIASFIAVlIASU1HAFVua25vd24gSFRNTCBlbGVtZW50IDwlcz4gb24gbGluZSAlZCAKADxJTUc+AElsbGVnYWwgYXR0cmlidXRlICVzIGluICVzIC0gaWdub3JlZAoAc2NhbGUAc3JjADxCUj4AYWxpZ24ASUdIVABFRlQARU5URVIASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gLSBpZ25vcmVkCgA8Rk9OVD4AY29sb3IAZmFjZQBwb2ludC1zaXplAFBPSU5ULVNJWkUASW1wcm9wZXIgJXMgdmFsdWUgJXMgLSBpZ25vcmVkACVzIHZhbHVlICVzID4gJWQgLSB0b28gbGFyZ2UgLSBpZ25vcmVkACVzIHZhbHVlICVzIDwgJWQgLSB0b28gc21hbGwgLSBpZ25vcmVkADxURD4AYmFsaWduAGJnY29sb3IAYm9yZGVyAGNlbGxwYWRkaW5nAGNlbGxzcGFjaW5nAGNvbHNwYW4AZml4ZWRzaXplAGdyYWRpZW50YW5nbGUAaGVpZ2h0AGhyZWYAaWQAcG9ydAByb3dzcGFuAHNpZGVzAHN0eWxlAHRhcmdldAB0aXRsZQB0b29sdGlwAHZhbGlnbgB3aWR0aABXSURUSABPVFRPTQBPUABJRERMRQBJbGxlZ2FsIHZhbHVlICVzIGZvciBWQUxJR04gLSBpZ25vcmVkCgAgLABPVU5ERUQAQURJQUwASWxsZWdhbCB2YWx1ZSAlcyBmb3IgU1RZTEUgLSBpZ25vcmVkCgBTT0xJRABJTlZJU0lCTEUASU5WSVMARE9UVEVEAERBU0hFRABVbnJlY29nbml6ZWQgY2hhcmFjdGVyICclYycgKCVkKSBpbiBzaWRlcyBhdHRyaWJ1dGUKAFJPV1NQQU4AUk9XU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAEhFSUdIVABHUkFESUVOVEFOR0xFAFJVRQBBTFNFAElsbGVnYWwgdmFsdWUgJXMgZm9yIEZJWEVEU0laRSAtIGlnbm9yZWQKAENPTFNQQU4AQ09MU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAENFTExTUEFDSU5HAENFTExQQURESU5HAEJPUkRFUgBJbGxlZ2FsIHZhbHVlICVzIGZvciBCQUxJR04gaW4gVEQgLSBpZ25vcmVkCgBFWFQASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gaW4gVEQgLSBpZ25vcmVkCgA8VEFCTEU+AGNlbGxib3JkZXIAY29sdW1ucwByb3dzAFVua25vd24gdmFsdWUgJXMgZm9yIFJPV1MgLSBpZ25vcmVkCgBVbmtub3duIHZhbHVlICVzIGZvciBDT0xVTU5TIC0gaWdub3JlZAoAQ0VMTFNCT1JERVIAPEhUTUw+ADwvSFRNTD4ALS0ATGFiZWwgY2xvc2VkIGJlZm9yZSBlbmQgb2YgSFRNTCBlbGVtZW50CgBVbmNsb3NlZCBjb21tZW50CgBqID09IDAAY3Z0LmMAUG9ic3BhdGgAcm91dGUuYwBsaWJwYXRoLyVzOiVkOiAlcwoAc2hvcnRlc3QuYwBzb3VyY2UgcG9pbnQgbm90IGluIGFueSB0cmlhbmdsZQBkZXN0aW5hdGlvbiBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGNhbm5vdCBmaW5kIHRyaWFuZ2xlIHBhdGgAY2Fubm90IG1hbGxvYyBvcHMAY2Fubm90IHJlYWxsb2Mgb3BzAHRyaWFuZ3VsYXRpb24gZmFpbGVkAGNhbm5vdCBtYWxsb2MgdHJpcwBjYW5ub3QgcmVhbGxvYyB0cmlzAGNhbm5vdCBtYWxsb2MgZHEucG5scwBjYW5ub3QgcmVhbGxvYyBkcS5wbmxzAGNhbm5vdCBtYWxsb2MgcG5scwBjYW5ub3QgbWFsbG9jIHBubHBzAGNhbm5vdCByZWFsbG9jIHBubHMAY2Fubm90IHJlYWxsb2MgcG5scHMAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUWQBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAE5PVEFUSU9OKAAoAHwAaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAGh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvAHhtbD1odHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UAL2Rldi91cmFuZG9tAGZhbGxiYWNrKDQpAGdldHRpbWVvZmRheV9yZXMgPT0gMAB4bWxwYXJzZS5jAGdhdGhlcl90aW1lX2VudHJvcHkARVhQQVRfRU5UUk9QWV9ERUJVRwAxAEVudHJvcHk6ICVzIC0tPiAweCUwKmx4ICglbHUgYnl0ZXMpCgBpbnZhbGlkIGFyZ3VtZW50AHByZWZpeCBtdXN0IG5vdCBiZSBib3VuZCB0byBvbmUgb2YgdGhlIHJlc2VydmVkIG5hbWVzcGFjZSBuYW1lcwByZXNlcnZlZCBwcmVmaXggKHhtbG5zKSBtdXN0IG5vdCBiZSBkZWNsYXJlZCBvciB1bmRlY2xhcmVkAHJlc2VydmVkIHByZWZpeCAoeG1sKSBtdXN0IG5vdCBiZSB1bmRlY2xhcmVkIG9yIGJvdW5kIHRvIGFub3RoZXIgbmFtZXNwYWNlIG5hbWUAY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eQBwYXJzaW5nIGZpbmlzaGVkAHBhcnNpbmcgYWJvcnRlZABwYXJzZXIgbm90IHN1c3BlbmRlZABwYXJzZXIgc3VzcGVuZGVkAGlsbGVnYWwgY2hhcmFjdGVyKHMpIGluIHB1YmxpYyBpZAB0ZXh0IGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZABYTUwgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkAGluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkAbXVzdCBub3QgdW5kZWNsYXJlIHByZWZpeAB1bmJvdW5kIHByZWZpeABjYW5ub3QgY2hhbmdlIHNldHRpbmcgb25jZSBwYXJzaW5nIGhhcyBiZWd1bgByZXF1ZXN0ZWQgZmVhdHVyZSByZXF1aXJlcyBYTUxfRFREIHN1cHBvcnQgaW4gRXhwYXQAZW50aXR5IGRlY2xhcmVkIGluIHBhcmFtZXRlciBlbnRpdHkAdW5leHBlY3RlZCBwYXJzZXIgc3RhdGUgLSBwbGVhc2Ugc2VuZCBhIGJ1ZyByZXBvcnQAZG9jdW1lbnQgaXMgbm90IHN0YW5kYWxvbmUAZXJyb3IgaW4gcHJvY2Vzc2luZyBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlAHVuY2xvc2VkIENEQVRBIHNlY3Rpb24AZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvcnJlY3QAdW5rbm93biBlbmNvZGluZwBYTUwgb3IgdGV4dCBkZWNsYXJhdGlvbiBub3QgYXQgc3RhcnQgb2YgZW50aXR5AHJlZmVyZW5jZSB0byBleHRlcm5hbCBlbnRpdHkgaW4gYXR0cmlidXRlAHJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5AHJlZmVyZW5jZSB0byBpbnZhbGlkIGNoYXJhY3RlciBudW1iZXIAYXN5bmNocm9ub3VzIGVudGl0eQByZWN1cnNpdmUgZW50aXR5IHJlZmVyZW5jZQB1bmRlZmluZWQgZW50aXR5AGlsbGVnYWwgcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2UAanVuayBhZnRlciBkb2N1bWVudCBlbGVtZW50AGR1cGxpY2F0ZSBhdHRyaWJ1dGUAbWlzbWF0Y2hlZCB0YWcAcGFydGlhbCBjaGFyYWN0ZXIAdW5jbG9zZWQgdG9rZW4Abm90IHdlbGwtZm9ybWVkIChpbnZhbGlkIHRva2VuKQBubyBlbGVtZW50IGZvdW5kAHN5bnRheCBlcnJvcgBvdXQgb2YgbWVtb3J5AAIDBAUGBwgAAAkKCwwNDg8QEQAAAAAAAAAAAAAAABITABQAAAAAAAAAAAAAAAAAABUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAxobHB0eAAAfICEiIyQlEBEAAAAAAAAAAAAAAAASEyYUAAAAAAAAAAAAAAAAAAAnFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0RBVEFbVVMtQVNDSUkAVVRGLTE2AFVURi0xNkJFAFVURi0xNkxFAHZlcnNpb24AZW5jb2RpbmcAc3RhbmRhbG9uZQBET0NUWVBFAFNZU1RFTQBQVUJMSUMARU5USVRZAEFUVExJU1QARUxFTUVOVABOT1RBVElPTgBJTkNMVURFAElHTk9SRQBFTVBUWQBBTlkAUENEQVRBAElNUExJRUQAUkVRVUlSRUQARklYRUQAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUSUVTAE5NVE9LRU4ATk1UT0tFTlMATkRBVEEAVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAAASEBMUFRYXGBkaGxwdHh8gIRAQIiMQJCUmJygpKisQLC0uES8wERExERERMjM0NTY3ODkREBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDoQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDsQPD0+P0BBEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEMQEEQQRUZHEEgQSRAQEBBKS0xNEBBOEE9QEBAQEFEQEBAQEBAQEBAQEBAQUhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFRVVlcQEFhZEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFoQW1xdXl9gYWIQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAA/v8A/AEAAPgBAAB4AAAAAP/73/sAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwA/P/gr//////////////f//////8gQLAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAA/AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAhv7///8AQEkAAAAAABgA3/8AyAAAAAAAAAABADwAAAAAAAAAAAAAAAAQ4AEeAGD/vwAAAAAAAP8HAAAAAAAAAAAAAAAAAAAAAAAAAPjPAwAAAAMAIP9/AAAATgAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAABAAIB4AMAABAAAAAAAAAAAQACAAAAAA/A8AAAAAAAAAEAAgAAAAAAAAAAAAAAAAABAAIAAAAAADAAAAAAAAAAAQACAAAAAA/QAAAAAAAAAAAAAgAAAAAP8HAAAAAAAAAAAAIAAAAAAA/wAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAgAAAAAD8CAAAAAAAAAAAABAAAAAAQAAAAAAAAgACAwN8ADAAAAAAAAAAAAAAAAAAfAAAAAAAA/v///wD8//8AAAAAAAAAAPwAAAAAAADA/9//BwAAAAAAAAAAAACABgD8AAAYPgAAgL8AzAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAYP///x8AAP8DAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAQAAGAAAAAAAAAAAADgAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAwAAD+fy8AAP8D/38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjEAAAAAAAAAAAAAAAAAAAAAAADE/////wAAAMAAAAAAAAAAAAEA4J8AAAAAfz8AAAAAAAAAAAAAAAAAAAAAEAAQAAD8////HwAAAAAADAAAAAAAAEAADPAAAAAAAADA+AAAAAAAAADAAAAAAAAAAAD/AP///yEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9/AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA+AA4ADgAGCA+P////z//////38f/PF//38AAP///wMAAP////8BAHsD0MGvQgAMH7z//wAAAAAAAv//////////////////////////////////////////////////////////DwD/////fwAAAP8HAAD/////////////PwAAAAAAAPz///7/////////////////////////////////////////////////////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IcD/gAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAA//////9//w8AAAAAAAAAAP////v/////////////DwD//////////////////////////////////z8AAAD/Dx7///8B/MHgAAAAAAAAAAAAAAAeAQAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA/////w8AAAD///9/////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAA////////fwAAAAAAAMAA4AAAAAAAAAAAAAAAgA9wAAAAAAAAAAAAAAAAAAD/AP//fwADAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAARAgAAAAP/wMAAAAAAADwAAAAAAAAAAAAEMAAAP//AwcAAAAAAPgAAAAACIAAAAAAAAAAAAAACAD/PwDAAAAAAAAAAAAAAAAAAAAA8AAAgAsAAAAAAAAAgAIAAMAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAPz/AwAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMP///wN/AP/////3/38PAAAAAAAAAAAAAAAAAAAAAACA/v8A/AEAAPgBAAD4PwAAAAAAAAAAAAAAAAAAAH9/ADCH//////+P/wAAAAAAAOD//wf/DwAAAAAAAP//////PwAAAAAPAAAAAAAAAAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCPAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/wD/AQAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD/8/z8AAAADAAAAAAAA/gMAAAAAAAAAAAAAAAAAGAAPAAAAAAAAAAAAAAAAAAAA4QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABwAAAAAAAAAAAAAAAAD///////////////////////////////////////8/AP////9//v///////////////////////////z8AAAAA//////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////fwD//wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAgAAAAIAAAgAAAAIAAAgAAAAIAAAAACAAAAAgAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP//////D////////////////w8A/3/+f/7//v8AAAAA/wf///9//////////w///////wcAAAAAAAAAAMD///8HAP//////B/8BAwAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAL///////////x///w8A/////98HAAD//wEA/////////3/9/////////////////////////////x7/////////Pw8A////AAAAAAAAAAAAAAAAAAAAAAAA+P//////////4f8AAAAAAAD//////////z8AAAAAAAAA//////////////////8PAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFABIRExQVFhcYGRobHB0eHyAhESIjJBElJicoKSorLBEtLi8QEDAQEBAQEBAQMTIzEDQ1EBARERERERERERERERERERERERERERERERERNhERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETcREREROBE5Ojs8PT4RERERERERERERERERERERERERERERERERERERERERERERERERERERERERPxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFAQRFCQ0RFRkdISRAQEEpLTE1OEBAQT1AQEBAQURAQEBAQEBAQEBEREVJTEBAQEBAQEBAQEBARERERVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBERVRAQEBBWEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFcQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFhZWlsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQXBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAA/v//B/7//wcAAAAAAAQgBP//f////3//////////////////////////////////w/8DAB9QAAAAAAAAAAAAACAAAAAAAN88QNf///v///////////+///////////////////////8D/P////////////////////////8A/v///38C/v////8AAAAAAP+/tgD///8HBwAAAP8H//////////7/w////////////////+8f/uH/nwAA////////AOD///////////////8DAP//////BzAE/////P8fAAD///8BAAAAAAAAAAD9HwAAAAAAAPAD/3//////////7//f4f/P//7+7p/5///9xeOfWYCwz/8DAO6H+f///W3DhxkCXsD/PwDuv/v///3t478bAQDP/wAA7p/5///97eOfGcCwz/8CAOzHPdYYx//Dxx2BAMD/AADu3/3///3v498dYAPP/wAA7N/9///97+PfHWBAz/8GAOzf/f/////n312AAM//APzs/3/8///7L3+AX/8AAAwA/v////9//wc/IP8DAAAAAJYl8P6u7P87XyD/8wAAAAABAAAA/wMAAP/+////H/7/A////v///x8AAAAAAAAAAP///////3/5/wP//+fB//9/QP8z/////78g///////3////////////PX89//////89/////z1/Pf9//////////z3//////////4cAAAAA//8AAP////////////8fAP7//////////////////////////////////////////////////////////5////7//wf////////////HAQD/3w8A//8PAP//DwD/3w0A////////z///AYAQ/wMAAAAA/wP//////////////wD//////wf//////////z8A////H/8P/wHA/////z8fAP//////D////wP/AwAAAAD///8P/////////3/+/x8A/wP/A4AAAAAAAAAAAAAAAP///////+//7w//AwAAAAD///////P///////+//wMA////////PwD/4///////PwAAAAAAAAAAAAAAAADebwD///////////////////////////////8AAAAAAAAAAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8+UL3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA////////AwAA//////9///////9//////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39//////wAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP4DPh/+////////////f+D+//////////////fg/////z/+/////////////38AAP///wcAAAAAAAD///////////////////////////////8/AAAAAAAAAAAA/////////////////////////////////x8AAAAAAAD//////////////////////x8AAAAAAAAAAP//////P/8f////DwAA//////9/8I////+A/////////////wAAAACA//z///////////////95DwD/BwAAAAAAAAAAAP+79////wAAAP///////w8A//////////8PAP8DAAD8CP//////B/////8HAP///x/////////3/wCA/wMAAAAA////////fwD/P/8D//9/BP////////9/BQAAOP//PAB+fn4Af38AAAAAAAAAAAAAAAAAAAAAAAD//////wf/A///////////////////////////DwD//3/4//////8P/////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj///////////////8/AAD///////////z///////8AAAAAAP8PAAAAAAAAAAAAAAAAAADf/////////////////////x8AAP8D/v//B/7//wfA/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP///38AAP///wcAAAAAAAD///8//////w//PgAAAAAA/////////////////////////z//AwAAAAAAAAAAAAA//f////+/kf//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAb/Dv/v//DwAAAAAA////HwAAAAAAAAAAAAAAAAAAAAD///////8/AP//PwD//wcAAAAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8/AAAAwP8AAPz///////8BAAD///8B/wP////////H/wAAAAAAAAAA//////////8eAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8/AP8DAAAAAAAA/////////////////38AAAAAAAAAAAAAAAAAAAAAAAD///////////////8HAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////x8A//////9/AAD4/wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98/////////v////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAExDX0FMTABMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwBMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AYWxudW0AYWxwaGEAYmxhbmsAY250cmwAZGlnaXQAZ3JhcGgAbG93ZXIAcHJpbnQAcHVuY3QAc3BhY2UAdXBwZXIAeGRpZ2l0AEMuVVRGLTgAAAAAAAAAAABDAC9wcm9jL3NlbGYvZmQvAHJ3YQBpbmZpbml0eQBuYW4ACQAKAA0ADAAHABsAW1s6YWxudW06XV9dAFteWzphbG51bTpdX10AW1s6c3BhY2U6XV0AW15bOnNwYWNlOl1dAFtbOmRpZ2l0Ol1dAFteWzpkaWdpdDpdXQAvdG1wL3RtcGZpbGVfWFhYWFhYAHcr\";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+Pointer_stringify(condition)+\", at: \"+[filename?Pointer_stringify(filename):\"unknown filename\",line,func?Pointer_stringify(func):\"unknown function\"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!==\"undefined\"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self[\"performance\"]&&self[\"performance\"][\"now\"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can   access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))}),join2:(function(l,r){return PATH.normalize(l+\"/\"+r)}),resolve:(function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p){return!!p})),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!=\"win32\";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync(\"/dev/stdin\",\"r\");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf(\"EOF\")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:\"remote\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}catch(e){return callback(e)}}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\"node type not supported\"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true})}else{return callback(new Error(\"node type not supported\"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process[\"binding\"](\"constants\");if(flags[\"fs\"]){flags=flags[\"fs\"]}NODEFS.flagsForNodeMap={\"1024\":flags[\"O_APPEND\"],\"64\":flags[\"O_CREAT\"],\"128\":flags[\"O_EXCL\"],\"0\":flags[\"O_RDONLY\"],\"2\":flags[\"O_RDWR\"],\"4096\":flags[\"O_SYNC\"],\"512\":flags[\"O_TRUNC\"],\"1\":flags[\"O_WRONLY\"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,\"/\",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,\"\",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split(\"/\");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join(\"/\");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split(\"/\");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts[\"files\"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts[\"blobs\"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj[\"name\"]),base(obj[\"name\"]),WORKERFS.FILE_MODE,0,obj[\"data\"])}));(mount.opts[\"packages\"]||[]).forEach((function(pack){pack[\"metadata\"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack[\"blob\"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),false);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags}),flagsToPermissionString:(function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,\"wx\")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev===\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,\"w\");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate[\"willMovePath\"]){FS.trackingDelegate[\"willMovePath\"](old_path,new_path)}}catch(e){console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate[\"onMovePath\"])FS.trackingDelegate[\"onMovePath\"](old_path,new_path)}catch(e){console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,\"w\");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===\"\"){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags===\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode===\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path===\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module[\"printErr\"](\"read file: \"+path)}}try{if(FS.trackingDelegate[\"onOpenFile\"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate[\"onOpenFile\"](path,trackingFlags)}}catch(e){console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \"+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate[\"onWriteToFile\"])FS.trackingDelegate[\"onWriteToFile\"](stream.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||\"r\";opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||\"w\";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data===\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,\"x\");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")}),createDefaultDevices:(function(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device;if(typeof crypto!==\"undefined\"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require(\"crypto\")[\"randomBytes\"](1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")}),createSpecialDirectories:(function(){FS.mkdir(\"/proc\");FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:(function(){var node=FS.createNode(\"/proc/self\",\"fd\",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},\"/proc/self/fd\")}),createStandardStreams:(function(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",\"r\");assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");var stdout=FS.open(\"/dev/stdout\",\"w\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");var stderr=FS.open(\"/dev/stderr\",\"w\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true})};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]==\"/\")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent===\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data===\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,\"w\");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!==\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(Module[\"read\"]){try{obj.contents=intArrayFromString(Module[\"read\"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module[\"preloadPlugins\"].forEach((function(plugin){if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return\"EM_FS_\"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!==\"/\"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module[\"exit\"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV[\"USER\"]=ENV[\"LOGNAME\"]=\"web_user\";ENV[\"PATH\"]=\"/\";ENV[\"PWD\"]=\"/\";ENV[\"HOME\"]=\"/home/web_user\";ENV[\"LANG\"]=\"C.UTF-8\";ENV[\"_\"]=Module[\"thisProgram\"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]===\"string\"){var line=key+\"=\"+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f32=Math_abs;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f32=Math_sqrt;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort(\"trap!\")}function _longjmp(env,value){Module[\"setThrew\"](env,value||1);throw\"longjmp\"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===\"\"||name.indexOf(\"=\")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var NODEJS_PATH=require(\"path\");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\")  at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:(function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output});function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE===\"boolean\"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,\"base64\")}catch(_){buf=new Buffer(s,\"base64\")}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error(\"Converting base64 string to bytes failed.\")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}function invoke_d(index){try{return Module[\"dynCall_d\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_dddd(index,a1,a2,a3){try{return Module[\"dynCall_dddd\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_di(index,a1){try{return Module[\"dynCall_di\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_i(index){try{return Module[\"dynCall_i\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iii(index,a1,a2){try{return Module[\"dynCall_iii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiidd(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiidd\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module[\"dynCall_iiiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{return Module[\"dynCall_iiiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module[\"dynCall_viii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiddi\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){try{Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_d\":invoke_d,\"invoke_dddd\":invoke_dddd,\"invoke_di\":invoke_di,\"invoke_i\":invoke_i,\"invoke_ii\":invoke_ii,\"invoke_iii\":invoke_iii,\"invoke_iiidd\":invoke_iiidd,\"invoke_iiii\":invoke_iiii,\"invoke_iiiii\":invoke_iiiii,\"invoke_iiiiii\":invoke_iiiiii,\"invoke_iiiiiii\":invoke_iiiiiii,\"invoke_iiiiiiiiiii\":invoke_iiiiiiiiiii,\"invoke_v\":invoke_v,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_viii\":invoke_viii,\"invoke_viiiddi\":invoke_viiiddi,\"invoke_viiii\":invoke_viiii,\"invoke_viiiii\":invoke_viiiii,\"invoke_viiiiii\":invoke_viiiiii,\"invoke_viiiiiiiii\":invoke_viiiiiiiii,\"___assert_fail\":___assert_fail,\"___buildEnvironment\":___buildEnvironment,\"___clock_gettime\":___clock_gettime,\"___lock\":___lock,\"___map_file\":___map_file,\"___setErrNo\":___setErrNo,\"___syscall10\":___syscall10,\"___syscall140\":___syscall140,\"___syscall145\":___syscall145,\"___syscall146\":___syscall146,\"___syscall192\":___syscall192,\"___syscall195\":___syscall195,\"___syscall197\":___syscall197,\"___syscall20\":___syscall20,\"___syscall221\":___syscall221,\"___syscall3\":___syscall3,\"___syscall33\":___syscall33,\"___syscall5\":___syscall5,\"___syscall54\":___syscall54,\"___syscall6\":___syscall6,\"___syscall91\":___syscall91,\"___unlock\":___unlock,\"__exit\":__exit,\"_clock_gettime\":_clock_gettime,\"_emscripten_asm_const_iii\":_emscripten_asm_const_iii,\"_emscripten_get_now\":_emscripten_get_now,\"_emscripten_get_now_is_monotonic\":_emscripten_get_now_is_monotonic,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"_exit\":_exit,\"_getenv\":_getenv,\"_gettimeofday\":_gettimeofday,\"_llvm_ceil_f64\":_llvm_ceil_f64,\"_llvm_fabs_f32\":_llvm_fabs_f32,\"_llvm_fabs_f64\":_llvm_fabs_f64,\"_llvm_floor_f64\":_llvm_floor_f64,\"_llvm_pow_f64\":_llvm_pow_f64,\"_llvm_sqrt_f32\":_llvm_sqrt_f32,\"_llvm_sqrt_f64\":_llvm_sqrt_f64,\"_llvm_trap\":_llvm_trap,\"_longjmp\":_longjmp,\"_setenv\":_setenv,\"_time\":_time,\"_times\":_times,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX,\"cttz_i8\":cttz_i8};// EMSCRIPTEN_START_ASM\n  var asm=(/** @suppress {uselessCode} */ function(global,env,buffer) {\n  \"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0;var z=0;var A=global.Math.floor;var B=global.Math.abs;var C=global.Math.sqrt;var D=global.Math.pow;var E=global.Math.cos;var F=global.Math.sin;var G=global.Math.tan;var H=global.Math.acos;var I=global.Math.asin;var J=global.Math.atan;var K=global.Math.atan2;var L=global.Math.exp;var M=global.Math.log;var N=global.Math.ceil;var O=global.Math.imul;var P=global.Math.min;var Q=global.Math.max;var R=global.Math.clz32;var S=env.abort;var T=env.assert;var U=env.enlargeMemory;var V=env.getTotalMemory;var W=env.abortOnCannotGrowMemory;var X=env.invoke_d;var Y=env.invoke_dddd;var Z=env.invoke_di;var _=env.invoke_i;var $=env.invoke_ii;var aa=env.invoke_iii;var ba=env.invoke_iiidd;var ca=env.invoke_iiii;var da=env.invoke_iiiii;var ea=env.invoke_iiiiii;var fa=env.invoke_iiiiiii;var ga=env.invoke_iiiiiiiiiii;var ha=env.invoke_v;var ia=env.invoke_vi;var ja=env.invoke_vii;var ka=env.invoke_viii;var la=env.invoke_viiiddi;var ma=env.invoke_viiii;var na=env.invoke_viiiii;var oa=env.invoke_viiiiii;var pa=env.invoke_viiiiiiiii;var qa=env.___assert_fail;var ra=env.___buildEnvironment;var sa=env.___clock_gettime;var ta=env.___lock;var ua=env.___map_file;var va=env.___setErrNo;var wa=env.___syscall10;var xa=env.___syscall140;var ya=env.___syscall145;var za=env.___syscall146;var Aa=env.___syscall192;var Ba=env.___syscall195;var Ca=env.___syscall197;var Da=env.___syscall20;var Ea=env.___syscall221;var Fa=env.___syscall3;var Ga=env.___syscall33;var Ha=env.___syscall5;var Ia=env.___syscall54;var Ja=env.___syscall6;var Ka=env.___syscall91;var La=env.___unlock;var Ma=env.__exit;var Na=env._clock_gettime;var Oa=env._emscripten_asm_const_iii;var Pa=env._emscripten_get_now;var Qa=env._emscripten_get_now_is_monotonic;var Ra=env._emscripten_memcpy_big;var Sa=env._exit;var Ta=env._getenv;var Ua=env._gettimeofday;var Va=env._llvm_ceil_f64;var Wa=env._llvm_fabs_f32;var Xa=env._llvm_fabs_f64;var Ya=env._llvm_floor_f64;var Za=env._llvm_pow_f64;var _a=env._llvm_sqrt_f32;var $a=env._llvm_sqrt_f64;var ab=env._llvm_trap;var bb=env._longjmp;var cb=env._setenv;var db=env._time;var eb=env._times;var fb=0.0;\n  // EMSCRIPTEN_START_FUNCS\n  function gP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+176|0;k=n+8|0;j=n;h=n+40|0;if(!b)qa(108200,108204,52,108218);if(!d)qa(108230,108204,53,108218);i=c[d+8>>2]|0;if(!i)qa(108233,108204,54,108218);if(!(a[i>>0]|0))qa(108242,108204,55,108218);b0(h,c[d+28>>2]|0)|0;i=h+(W_(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;p1(h,g)|0;if((hP(b,h)|0)==999){c[j>>2]=h;Pw(0,108254,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];xb[m&31](b,d,k,f)}l=n;return}function hP(a,b){a=a|0;b=b|0;b=wC(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function iP(a){a=a|0;return 1}function jP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function kP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function lP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function mP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function nP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function oP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function pP(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)<g/+(e|0);h[b+352>>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function qP(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;GP(b,d)}dF(b,d);a[b+540>>0]=1;return}function rP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);FP(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function sP(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function tP(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];zP(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function uP(a,b,c){a=a|0;b=b|0;c=c|0;return}function vP(a){a=a|0;return}function wP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=L1(d,135739)|0;if(d|0){i=TB(d,0)|0;s1(d)|0;f=5}}else{i=TB(c[15621]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){tb[h&127](d);d=c[g>>2]|0}gH(d);$x(c[g>>2]|0)|0}Fz(i,0,134401,280,1);Fz(i,1,134365,304,1);Fz(i,2,134378,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((_C(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function xP(a,b){a=a|0;b=b|0;a=c[a>>2]|0;_C(a,c[a+168>>2]|0,b)|0;return}function yP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}aD(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function zP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];AP(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=BP(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){CP(b);c[e>>2]=d;DP(b);a[b+537>>0]=1}l=f;return}function AP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function BP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=Sy(a)|0;a:while(1){if(!e){e=9;break}d=Ex(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((WM(d,f)|0)<<24>>24){e=6;break a}d=Gx(a,d)|0}e=Ty(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=Uy(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((TM(d,f)|0)<<24>>24){e=12;break}d=Vy(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=EP(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function CP(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function DP(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){D_(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=nx(d,0,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=nx(ez(d)|0,1,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=nx(ez(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}default:break a}while(0);return}function EP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=EP(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function FP(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){D_(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(pz(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;GP(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;HP(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;IP(b,d);break b}default:break b}while(0);return}function GP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((fz(b)|0)==(b|0))if(!(ey(b)|0)){rC(d,0,108412);break}else{rC(d,0,108404);break}else rC(d,0,108418);while(0);rC(d,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=sx(b,0,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e+1|0,yx(b,d)|0);rC(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=nx(b,0,137973,0)|0;if(!d){d=nx(b,0,108395,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function HP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;rC(f,0,108399);rC(f,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;g=fz(ez(b)|0)|0;e=2;d=0;while(1){d=sx(g,1,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e|1,yx(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=nx(ez(b)|0,1,137973,0)|0;if(!d){d=nx(ez(b)|0,1,108395,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function IP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;rC(h,0,108368);k=b+48|0;rC(h,1,ry(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(ey(ez(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;rC(h,3,k?134656:138665);k=b+-48|0;rC(h,4,ry(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=fz(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=sx(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(b$(f,108373)|0)){l=5;break}if(!(b$(f,108382)|0)){l=7;break}if(b$(f,108391)|0)break;rC(h,6,yx(b,d)|0)}if((l|0)==5){l=0;rC(h,2,yx(b,d)|0)}else if((l|0)==7){l=0;rC(h,5,yx(b,d)|0)}rC(i,g,c[e>>2]|0);rC(i,g+1|0,yx(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,137973,0)|0;if(!d){d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,108395,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function JP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=KP(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;uC(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function KP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=vH(12)|0;if(!b)b=0;else b=n1(b)|0;c[e+4>>2]=b;c[e+8>>2]=n1(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function LP(b,c){b=b|0;c=c|0;MP(b);a[b+44>>0]=0;NP(b)|0;AL(b)|0;return}function MP(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?P0(e,108427)|0:0)JP(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function NP(a){a=a|0;var b=0;b=wC(a,2,108440)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function OP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=lb[e&127](b,d)|0;else a=0;return a|0}function PP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function QP(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (RP(~~(d>b?d:b)>>>0)|0)+1|0}function RP(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function SP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=TP(b,d,e,f,g)|0;e=UP(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){VP(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}WP(p)}l=r;return e|0}function TP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=uH(28)|0;j=Cw(25808,c[4558]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=CS()|0;c[g+24>>2]=j;if(!j){E1(108658,14,1,c[15686]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{E1(108658,14,1,c[15686]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)yw(a)|0;a=c[g+24>>2]|0;if(a|0)ES(a)|0;D_(g);g=0}return g|0}function UP(a){a=a|0;var b=0;b=dQ(a)|0;if((b|0)>=0){eQ(a);fQ(a);b=yw(c[a+20>>2]|0)|0}return b|0}function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)qa(108451,108461,445,108471);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];XP(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];XP(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];XP(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];XP(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}XP(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;XP(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;XP(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;XP(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function WP(a){a=a|0;ES(c[a+24>>2]|0)|0;D_(a);return}function XP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)qa(108451,108461,382,108480);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((YP(e,k)|0)!=0&1)|0}while(0);m=m+1|0}ZP(e,q);m=c[d+24>>2]|0;m=GS(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){_P(j,s);n=+$P(q,s);if(n>0.0){g=g+1|0;i=+aQ(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(ZP(j,s),r=+$P(q,s),r>0.0):0){g=g+1|0;i=+bQ(e,j,q,r,f)+i}}k=c[k>>2]|0}BS(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function YP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}qa(108517,108461,219,108554);return 0}function ZP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function _P(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function $P(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function aQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function bQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function cQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))qa(108496,108461,276,108506);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(i<g){if(k<j){e=0;break}e=k>j?2:1;break}e=k<j;if(i>g){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function dQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=QP(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=uH(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;gQ(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=hQ(d,g)|0;n=c[j>>2]|0;if(!(nb[c[n>>2]&63](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function eQ(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;HS(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}return}function fQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Ew(c[e>>2]|0)|0;d=0;while(1){if(!(Ew(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}nb[c[g>>2]&63](g,a,4096)|0;D_(a);d=d+1|0}if((h|0)==8)qa(108567,108461,616,108570);if((f|0)==(d|0))return;else qa(108582,108461,623,108570)}function gQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)qa(108594,108461,264,108621);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)qa(108631,108461,266,108621);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function hQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function iQ(b){b=b|0;var d=0,e=0,f=0,g=0;d=W_(b)|0;if(d>>>0>=(c[46595]|0)>>>0){d=d+11|0;c[46595]=d;d=xH(c[46596]|0,d)|0;c[46596]=d;if(!d)d=0;else e=4}else{d=c[46596]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(Q$(f)|0)e=(P$(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function jQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((N1(r,108673,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;kQ(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=W_(r)|0;if(b>>>0>=(c[46597]|0)>>>0){b=b+11|0;c[46597]=b;b=xH(c[46598]|0,b)|0;c[46598]=b;if(!b){b=-1;break}}else b=c[46598]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((N1(b,108687,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{mQ(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{mQ(k,j,g,C,D,E);lQ(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{mQ(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{mQ(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=nQ(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[46599]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(b$(u,i)|0)==0:0)){b=e2(v,25844,2491,12,101)|0;c[46599]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function kQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=b<c?b:c;m=b>c?b:c;m=m<a?a:m;i=m-(i>a?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function lQ(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b<c?b:c;h[g>>3]=c;b=+h[f>>3];c=b<c?b:c;h[g>>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function mQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function nQ(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(z$(e,134184,4)|0)==0)):0)?!(d<<24>>24==108|(z$(e,134189,4)|0)==0):0)?(z$(e,134194,8)|0)!=0:0){do if(d<<24>>24==47){d=A$(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(V$(134203,e,4)|0)==0;b=e?d+1|0:b;break}d=c[46600]|0;if((d|0?a[d>>0]|0:0)?V$(134203,d,3)|0:0){b=pQ(d,b+2|0)|0;break}b=b+2|0}}else{d=c[46600]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(V$(134203,d,3)|0)!=0:0)b=pQ(d,b)|0}while(0);b=iQ(b)|0}return b|0}function oQ(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function pQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=W_(a)|0;g=(W_(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[46601]|0)>>>0)d=c[46602]|0;else{c[46601]=d;d=xH(c[46602]|0,d)|0;c[46602]=d}c[e>>2]=a;c[e+4>>2]=b;Y0(d,134208,e)|0;l=f;return c[46602]|0}function qQ(a){a=a|0;c[46600]=a;return}function rQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;sQ(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=tQ(g)|0;l=f;return a|0}function sQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;zQ(a);AQ(a);BQ(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function tQ(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=uH(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+uQ(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);vQ(q,c,n);wQ(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;xQ(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}yQ(q);return q|0}function uQ(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10392:10648;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function vQ(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[46603]=100;e=uH(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function wQ(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;xQ(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function xQ(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[46603]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[46603]=k<<1;j=F_(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function yQ(a){a=a|0;var b=0;b=c[a>>2]|0;wQ(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=F_(c[a>>2]|0,c[a+4>>2]<<4)|0;c[46603]=0;return}function zQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function AQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function BQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e<c?e:c}else c=+E(+e)*l*j+ +h[a>>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e<d?e:d}else d=+E(+b)*l*m+ +h[a+8>>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function CQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;DQ(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+EQ(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+EQ(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=xx(c[(c[j>>2]|0)+8>>2]|0,134215)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=134226;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;YO(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)UO(b,134232);else UO(b,f);GQ(b,e,m);if(a[j>>0]|0)D_(c[i>>2]|0)}else FQ(b,c[d>>2]|0,m);HQ(b);l=n;return}function DQ(a){a=a|0;var d=0,e=0,f=0;d=NE(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function EQ(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function FQ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];TQ(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function GQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)IQ(g,j,183464);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=JQ(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=KQ(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];$O(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];EJ(e,LQ(p,t,o)|0,4,4,j)}D_(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;MQ(e,j,g);i=i+4|0}i=c[r>>2]|0;fP(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}NQ(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];OQ(e,f,t)}}if(s|0)PQ(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],JQ(e,g,f,t,w)|0):0)PQ(e,w);if(c[u>>2]|0)QQ(g,183464);l=y;return}function HQ(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;OE(a);return}function IQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function JQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{Tw(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=n1(QE(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}Ww(t,h)|0;i=c[46604]|0;c[46604]=i+1;c[k>>2]=i;Y0(j,134309,k)|0;Ww(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){Uw(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=PE(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)Xw(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];XE(d,n);PO(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function KQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((uG(b,f,i)|0)<<24>>24)){WO(a,b);b=1}else{WO(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)XO(a,134232,d,h);else XO(a,b,d,h);b=e>>>1&1|2}UO(a,134297);l=j;return b|0}function LQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function MQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=JQ(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=KQ(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];$O(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];EJ(e,LQ(p,r,n)|0,4,4,i)}D_(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];OQ(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{GQ(e,c[i>>2]|0,g);break a}case 3:{SQ(e,c[i>>2]|0,g);break a}default:{FQ(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)PQ(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],JQ(e,g,f,r,s)|0):0)PQ(e,s);l=v;return}function NQ(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?134232:j;WO(f,q);UO(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function OQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;UO(e,(m|0)==0?134232:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))YO(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=134238;k=4}}else{i=134245;k=4}if((k|0)==4)c[j>>2]=i;YO(e,j)}k=f+33|0;fP(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];$O(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];LQ(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{bP(e,j,2);break a}case 3:{bP(e,n+32|0,2);break a}case 1:{bP(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);break a}case 11:{bP(e,j,3);break a}case 5:{bP(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,3);break a}case 13:{bP(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];bP(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,4);break a}case 9:{bP(e,j,2);bP(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);bP(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];EJ(e,LQ(n,o,m)|0,4,4,0)}while(0);l=p;return}function PQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{QO(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){D_(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function QQ(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function RQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];$O(a,g,1);l=f;return}function SQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)qa(134252,134260,623,134272);if(!(a[e>>0]|0))qa(134286,134260,624,134272);else{dP(b,e,g,4,1,f);l=i;return}}function TQ(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];RO(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;UO(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];TO(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}SO(d);l=R;return}function UQ(a){a=a|0;D_(c[a>>2]|0);D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(c[a+16>>2]|0);D_(c[a+12>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);return}function VQ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;D_(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)tb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)D_(d);D_(a)}return}function WQ(a){a=a|0;D_(c[a+32>>2]|0);D_(a);return}function XQ(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{YQ(c[b>>2]|0);break}case 3:{WQ(c[b>>2]|0);break}default:VQ(c[b>>2]|0)}if(d|0)D_(b);return}function YQ(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)yw(c[e>>2]|0)|0;else{b=c[e>>2]|0;D_(c[a+92>>2]|0);D_(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;ZQ(d);b=b+4|0}D_(c[e>>2]|0)}UQ(a);D_(a);return}function ZQ(a){a=a|0;XQ(a+88|0,0);UQ(a);D_(a);return}function _Q(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=$Q(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function $Q(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(O$(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=aR(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function aR(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(O$(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=$Q(c[b+88>>2]|0,d)|0;else b=0;return b|0}function bR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function cR(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=uH((c[d+100>>2]<<2)+4|0)|0;n=uH((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function dR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[55736+(a<<2)>>2]|0;else{c[b>>2]=a;Y0(191879,134313,b)|0;a=191879}l=d;return a|0}function eR(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=az(d,dR(f)|0,1)|0;Az(i,134365,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=uH((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=uH((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=az(b,dR(f)|0,1)|0;Az(i,134365,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=uH((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=uH((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=az(d,dR(e[o>>1]|0)|0,0)|0;o=az(d,dR((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=az(b,dR(e[o>>1]|0)|0,0)|0;o=az(b,dR((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(b,n,o,~~+h[g+72>>3]);f=f+4|0}gR(d);gR(b);return}function fR(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=Rx(a,d,f,0,0)|0;if(!h){i=Rx(a,d,f,0,1)|0;Az(i,134378,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=vH((c[a+184>>2]<<2)+8|0)|0;else a=xH(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=vH((c[a+176>>2]<<2)+8|0)|0;else a=xH(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function gR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(Rx(a,d,h,0,0)|0){d=h;continue}g=Rx(a,d,h,0,1)|0;Az(g,134378,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=vH((c[d+184>>2]<<2)+8|0)|0;else d=xH(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=vH((c[d+176>>2]<<2)+8|0)|0;else d=xH(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function hR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function iR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4621];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=uH((e<<2)+4|0)|0;c[b+96>>2]=uH((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=Xx(134391,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=Xx(134396,g,0)|0;Az(f,134401,280,1)|0;Az(g,134401,280,1)|0;eR(b,f,g);fI(f,2,2147483647)|0;fI(g,2,2147483647)|0;hR(b,f,g);jR(f,g)}else cR(b);l=h;return}function jR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}d=d+164|0}$x(a)|0;$x(b)|0;return}function kR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(pz(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=ez(b)|0;break}case 2:{e=ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=uT(c[d>>2]|0,o,k)|0;if(!f){Tw(n,128,g);a[d+82>>0]=0;e=n1(lR(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=RM(e)|0;else e=OM(e,c[i>>2]|0)|0;D_(c[d>>2]|0);c[d>>2]=e;iH(c[(c[m+16>>2]|0)+144>>2]|0,d);Xw(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?mR(b)|0:0){i=n1(mR(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=nR(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;oR(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];pR(m,n,15)}else{qR(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;oR(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){D_(c[d>>2]|0);c[d>>2]=n1(138529)|0}e=c[o>>2]|0}l=p;return e|0}function lR(b,d){b=b|0;d=d|0;var e=0;a:do switch(pz(b)|0){case 0:{Ww(d,ry(b)|0)|0;break}case 1:{Ww(d,ry(b)|0)|0;break}case 2:{Ww(d,ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;Ww(d,ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(ey(ez(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){Ww(d,138665)|0;break a}else{Ww(d,134656)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function mR(b){b=b|0;var c=0,d=0;c=xx(b,134647)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=xx(b,137741)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function nR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)IQ(j,k,183496);c[g+80>>2]=i;k=uR(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;iR(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}Pw(0,134447,t)|0;k=1;i=0;f=0;break}Pw(0,134481,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)QQ(j,183496);l=w;return k|0}function oR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function pR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=n1(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)qa(134414,134260,1761,134424);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)qa(134437,134260,1764,134424);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];rR(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function qR(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(b$(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=pH(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=nb[c[i>>2]&63](i,I,1)|0;wL(J,d,H);Q=+h[J>>3];o=+h[v>>3];D_(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function rR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=n1(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];pR(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];sR(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;tR(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function sR(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function tR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function uR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=vI()|0;v=yR()|0;i=0;h=0;k=Aw(t)|0;while(1){if(!k)break;j=Aw(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)CR(v,h);k=c[k>>2]|0}h=uH((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Aw(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Aw(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=vR(d,n,f,g)|0|k;l=wR(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(DR(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;yw(t)|0;yw(v)|0;yI(u);return k|0}function vR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=nR(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=xR(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{qR(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}Pw(0,134532,s)|0;n=1;m=0.0;k=0.0;break}Pw(0,134565,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function wR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(DI(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;BI(a,f,g);g=g+1|0}f=f+1|0}return c|0}function xR(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;CC(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];Pw(1,134615,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function yR(){return Cw(55820,c[4555]|0)|0}function zR(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(12)|0;c[d>>2]=c[b>>2];return d|0}function AR(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function BR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function CR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function DR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(nb[c[a>>2]&63](a,e,512)|0)!=0&1;l=d;return b|0}function ER(a){a=a|0;var b=0;if(!(c[46605]|0)){b=uH((a<<2)+4|0)|0;c[46605]=b;c[b>>2]=186424;c[46616]=a}c[46617]=0;return}function FR(){D_(c[46605]|0);c[46605]=0;c[46617]=0;return}function GR(){c[46617]=0;return}function HR(){var a=0,b=0,d=0;b=c[46617]|0;d=c[46605]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)qa(135312,134659,59,134665);else if((a|0)==5)return}function IR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[46605]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function JR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[46617]|0;if((b|0)==(c[46616]|0)){Pw(1,134673,d)|0;a=1}else{b=b+1|0;c[46617]=b;c[(c[46605]|0)+(b<<2)>>2]=a;IR(b);HR();a=0}l=d;return a|0}function KR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[46605]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[46617]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function LR(){var a=0,b=0,d=0,e=0;b=c[46617]|0;if(!b)a=0;else{e=c[46605]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[46617]=b;if(b|0)KR(1);HR()}return a|0}function MR(a,b){a=a|0;b=b|0;c[a>>2]=b;IR(c[a+4>>2]|0);HR();return}function NR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}OR(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){OR(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function OR(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function PR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=uH(28)|0;b=ay(a)|0;s=w+4|0;c[s>>2]=b;b=uH(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=Sy(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n<B?v:m)>>3];h[v>>3]=B;A=+h[(o<A?v:m)+8>>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=Ty(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=ZR(D,f,t,u)|0;if(c[46553]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];QR(r,C,u,f,D)}e=w+8|0;c[e>>2]=uH((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}D_(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=RR(w,u)|0;l=x;return w|0}function QR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[15686]|0;D1(134688,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);g1(i,135118,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;g1(i,135166,r)|0;D1(135183,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;g1(i,135202,j)|0;d=d+1|0}D1(135220,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;g1(i,135239,o)|0;d=d+1|0}D1(135257,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;g1(i,135239,p)|0;D1(135004,i)|0;l=q;return}function RR(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=nO(w<<2|2)|0;z=Cw(55856,c[4555]|0)|0;v=Cw(55892,c[4555]|0)|0;w=uH(w<<7)|0;f=uH(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=uH(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}f=g+(n*72|0)+64|0;d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]<e))break;b=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]<e))break;D=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;TR((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;mO(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;UR((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}yw(z)|0;yw(v)|0;D_(w);VR(y);kO(y);l=A;return y|0}function SR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=nb[c[d>>2]&63](d,e,512)|0;do if(!h){b=oO(b)|0;if(!f)qa(135101,135049,291,135108);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;nb[c[d>>2]&63](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function TR(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function UR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=pO(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=pO(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=pO(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=pO(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=pO(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=pO(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function VR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[15686]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,g1(g,135014,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,g1(g,135066,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)qa(135036,135049,311,135056);else if((b|0)==8)qa(135088,135049,313,135056);else if((b|0)==10){l=j;return}}function WR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e<f)){f=+h[b>>3];e=+h[c>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function XR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e<f)){f=+h[b+8>>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function YR(a){a=a|0;var b=0,d=0;d=a+8|0;D_(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;D_(c[(c[b>>2]|0)+36>>2]|0);D_(c[d>>2]|0);D_(c[b>>2]|0);rO(c[a+16>>2]|0);yw(c[a+20>>2]|0)|0;yw(c[a+24>>2]|0)|0;D_(a);return}function ZR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=vH(i*56|0)|0;i=uH(i<<2)|0;g=f*5|1;j=vH(g*72|0)|0;m=g<<5;k=uH(m)|0;m=uH(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,0);i2(173);$R(f,i);jS(f,o,i,g,j)|0;n=aS(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,1);$R(f,i);jS(f,o,i,g,j)|0;f=aS(f,o,j,1,m)|0;g=uH(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((bS(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=xH(g,a<<5)|0;D_(o);D_(i);D_(j);D_(k);D_(m);c[d>>2]=a;l=p;return q|0}function _R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];hS(h,f,1,i);d=iS(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];hS(h,f,0,i);d=iS(e,d,i)|0;g=g+1|0}l=j;return}function $R(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+k2()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function aS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=uH(j<<2)|0;c[46618]=uH(j<<4)|0;c[46619]=uH((a*56|0)+56|0)|0;j=uH(a<<2)|0;c[46620]=j;k=0;while(1){if((k|0)>(g|0))break;if(cS(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[46618]|0;i=c[46619]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[46621]=a;c[46622]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=dS(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=dS(l,f,0,b,d,0,k,g,e,1)|0;D_(l);D_(c[46618]|0);D_(c[46619]|0);D_(c[46620]|0);return g|0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function cS(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d<e+-1.0e-07)a=0;else a=+h[b+(f*56|0)+16>>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function dS(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=eS(g,n,J)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,J,n)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=eS(g,j,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,m,j)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function eS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[46622]|0)+1|0;c[46622]=e;m=c[46619]|0;fS(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[46621]|0;g=n+1|0;n=n+2|0;c[46621]=n;q=c[46618]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[46620]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[46619]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+gS(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+gS(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function gS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function hS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function iS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];G3(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function jS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[46623]=e<<1;c[46624]=e;k=uH(e*80|0)|0;c[46625]=1;c[46626]=1;H3(f|0,0,e*72|0)|0;g=kS(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=lS(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=mS(a,i+-1|0)|0;h=mS(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}nS(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;oS(e,b,f,k);e=e+1|0}i=i+1|0}e=mS(a,j)|0;while(1){if((e|0)>=(a|0))break;nS(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}D_(k);return c[46625]|0}function kS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=tS()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;xS(s,k,l);n=tS()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=tS()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;yS(r,k,l);c[e+(j*40|0)+28>>2]=f;l=tS()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=tS()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=tS()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=tS()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=sS(d)|0;i=sS(d)|0;m=sS(d)|0;o=sS(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];G3(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];G3(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function lS(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+g$(b);a=a+1|0}return a+-1|0}function mS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+g$(c);a=a+1|0}return ~~+N(+(d/c))|0}function nS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[U>>3]>+h[S>>3]:0){G=4;break}G=(rS(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=pS(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(rS(a,b,2)|0)){n=1;G=7}else{f=pS(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=pS(S,U,f,b,e)|0;f=sS(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=tS()|0;G=tS()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(rS(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(rS(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=pS(U,S,c[S+40>>2]|0,b,e)|0;n=sS(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=tS()|0;F=tS()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=pS(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(uS(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=tS()|0;p=tS()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=sS(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(vS(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}E1(135342,19,1,c[15686]|0)|0}else{g=0;f=0}while(0);wS(a,F,o,1,d,e);wS(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function oS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((pS(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((pS(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function pS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g<l)?+h[a>>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g<l)?+h[b>>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(qS(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(qS(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]<j){d=f+(d*40|0)+32|0;break b}else{d=f+(d*40|0)+36|0;break b}}default:{r=31;break a}}while(0);d=c[d>>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){E1(135276,35,1,c[15686]|0)|0;qa(135312,135314,349,135326)}return 0}function qS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g<e+-1.0e-07)?+h[f>>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function rS(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function sS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46625]|0;if((b|0)<(c[46624]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[46625]=b+1;l=e;return b|0}else{e=c[15686]|0;c[d>>2]=b;g1(e,135401,d)|0;qa(135312,135314,88,135439)}return 0}function tS(){var a=0;a=c[46626]|0;if((a|0)<(c[46623]|0)){c[46626]=a+1;return a|0}else{E1(135362,30,1,c[15686]|0)|0;qa(135312,135314,72,135393)}return 0}function uS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c<d+-1.0e-07)a=0;else a=+h[a>>3]>=+h[b>>3]&1;else a=1;return a|0}function vS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c<d+-1.0e-07))if(c>d+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function wS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(uS(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function xS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function yS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e<f+-1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function zS(a){a=a|0;var b=0;b=uH(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function AS(a,b){a=a|0;b=b|0;if(b){b=zS(b)|0;c[b>>2]=a;a=b}return a|0}function BS(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;D_(b)}while((a|0)!=0);return}function CS(){var a=0;a=uH(1992)|0;if(a|0)c[a>>2]=DS(a)|0;return a|0}function DS(a){a=a|0;var b=0;b=JS(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function ES(a){a=a|0;FS(a,c[a>>2]|0);D_(c[a>>2]|0);D_(a);return 0}function FS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(FS(a,f),D_(c[e>>2]|0),PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function GS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)qa(135797,135447,194,135455);e=c[b+4>>2]|0;if((e|0)<=-1)qa(135467,135447,195,135455);if(!d)qa(135739,135447,196,135455);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(US(d,b+8+(i*20|0)|0)|0)!=0:0){g=GS(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(US(d,f)|0)!=0:0)e=AS(e,f)|0;g=g+1|0}}while(0);return e|0}function HS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))qa(135653,135447,247,135481);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)qa(135528,135447,250,135481);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(IS(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=JS(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;MS(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];OS(a,m,g,0)|0;MS(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];OS(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}qa(135493,135447,248,135481);return 0}function IS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))qa(135571,135447,311,135585);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=NS(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(IS(a,b,d,c[h>>2]|0,n,g)|0)){TS(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{MS(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;MS(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}else qa(135630,135447,341,135585);while(0);l=q;return j|0}qa(135598,135447,312,135585);return 0}function JS(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=C_(1288)|0;KS(a);return a|0}function KS(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;LS(a+8+(b*20|0)|0);b=b+1|0}return}function LS(a){a=a|0;QS(a);c[a+16>>2]=0;return}function MS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)qa(135797,135636,99,135643);QS(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){TS(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function NS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))qa(135653,135636,125,135660);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=SS(n)|0;TS(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(SS(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function OS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)qa(135819,135636,167,135671);if(!d)qa(135797,135636,168,135671);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)qa(135681,135636,178,135671)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)qa(135694,135636,187,135671);else{VS(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function PS(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))qa(135698,135636,201,135726);if(!(c[a+8+(b*20|0)+16>>2]|0))qa(136220,135636,202,135726);else{LS(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function QS(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function SS(a){a=a|0;var b=0,d=0,e=0;if(!a)qa(135739,135741,128,135753);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function TS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))qa(135762,135741,195,135770);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function US(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else qa(135782,135741,216,135789);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function VS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)qa(135797,135799,40,135809);if(!d)qa(135819,135799,41,135809);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;WS(a,b,d);d=a+1324|0;XS(a);f=SS(a+1852|0)|0;f=(SS(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=JS(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;YS(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else qa(135821,135799,86,135809)}function WS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)qa(135797,135799,106,136208);if(!d)qa(135819,135799,107,136208);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)qa(136220,135799,111,136208);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;TS(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=SS(d)|0;KS(b);l=h;return}function XS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;ZS(a);_S(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;TS(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=SS(i)|0;d=c[o>>2]|0;TS(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=SS(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}$S(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))$S(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)qa(135964,135799,210,136050);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))qa(136061,135799,212,136050);else{l=u;return}}function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)qa(135797,135799,297,135861);if(!d)qa(135871,135799,298,135861);if(!e)qa(135873,135799,299,135861);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{OS(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{OS(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)qa(135875,135799,303,135861);else if((e|0)==14)return}function ZS(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;RS(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function _S(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=SS(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}TS(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=SS(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}$S(a,d,0);$S(a,b,1);l=o;return}function $S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)qa(136164,135799,257,136199);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{TS(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=SS(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function aT(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46627]=0;c[46628]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[65430+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[46628]|0;if((h|0)==-2){h=pU()|0;c[46628]=h}if((h|0)>=1)if(h>>>0<296)i=d[136239+h>>0]|0;else i=2;else{c[46628]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[136535+h>>0]|0):0){p=a[136807+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46628]=-2;g=g+4|0;c[g>>2]=c[46629];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[137079+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46628]|0;b:do switch(q|0){case 0:{c[46627]=(c[46627]|0)+1;vT(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[46628]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[65430+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=c[46629];e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[137195+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[46630]=bT(c[g+-4>>2]|0,2)|0;break}case 3:{c[46630]=bT(c[g+-4>>2]|0,1)|0;break}case 5:{e=dT()|0;break}case 8:{eT(c[46631]|0);break}case 9:{fT(c[g>>2]|0);break}case 18:{gT(c[g>>2]|0);break}case 19:{hT();break}case 20:{gT(c[g>>2]|0);break}case 21:{hT();break}case 22:{gT(c[g>>2]|0);break}case 23:{hT();break}case 24:{gT(c[g>>2]|0);break}case 25:{hT();break}case 26:{gT(c[g>>2]|0);break}case 27:{hT();break}case 28:{gT(c[g>>2]|0);break}case 29:{hT();break}case 30:{gT(c[g>>2]|0);break}case 31:{hT();break}case 32:{gT(c[g>>2]|0);break}case 33:{hT();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[46632];e=Cw(55928,c[4554]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[46632]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[46633]>>2];e=c[g>>2]|0;break}case 39:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=56;break a}e=c[46632]|0;c[46632]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{jT();break}case 52:{e=kT()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{lT(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{lT(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{lT(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{lT(c[g>>2]|0,dT()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[137367+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[65662+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[136535+h>>0]|0)==(p|0):0){e=a[136807+h>>0]|0;j=q;h=i;break}e=a[137437+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){cT();e=1;s=96}else if((s|0)==51){vT(137265);cT();e=1;s=96}else if((s|0)==56){vT(137316);cT();e=1;s=96}else if((s|0)==95){vT(137476);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))D_(f);l=t;return e|0}function bT(b,d){b=b|0;d=d|0;var e=0;e=uH(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function cT(){var a=0,b=0;a=c[46632]|0;b=c[46630]|0;if(b|0){XQ(b,1);c[46630]=0}c[13995]=67;while(1){if(!a)break;b=c[a+80>>2]|0;pT(a);a=b}c[13995]=56;c[14004]=68;b=c[46635]|0;nb[c[b>>2]&63](b,0,64)|0;c[14004]=56;c[14013]=69;b=c[46636]|0;nb[c[b>>2]&63](b,0,64)|0;c[14013]=56;sT();return}function dT(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[46636]|0;f=uH(40)|0;if(Ew(c[46635]|0)|0)fT(0);a=Ew(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=uH(a*24|0)|0;a=0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);nb[c[a>>2]&63](e,0,64)|0;return f|0}function eT(b){b=b|0;var d=0,e=0,f=0;e=uH(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=n1(b)|0;c[e+12>>2]=c[c[46633]>>2];f=c[46635]|0;nb[c[f>>2]&63](f,e,1)|0;return}function fT(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=uH(32)|0;j=c[46635]|0;e=Ew(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=uH(56)|0;b[i+12>>1]=1;h=n1(191979)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[46633]>>2]}else{b[i+12>>1]=e;c[k>>2]=uH(e*56|0)|0;d=0;e=Aw(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);nb[c[j>>2]&63](j,0,64)|0;k=c[46636]|0;nb[c[k>>2]&63](k,i,1)|0;return}function gT(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=uH(8)|0;f=c[c[46633]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[46634]|0)+144>>2]|0;c[i>>2]=nb[c[f>>2]&63](f,g,1)|0;c[i+4>>2]=c[46633];c[46633]=i;l=j;return}function hT(){var a=0,b=0;b=c[46633]|0;a=c[b+4>>2]|0;D_(b);c[46633]=a;return}function iT(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function jT(){var b=0,d=0,e=0;e=Cw(55964,c[4554]|0)|0;b=c[46632]|0;d=uH(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function kT(){var a=0;a=c[(c[46632]|0)+84>>2]|0;return nb[c[a>>2]&63](a,0,256)|0}function lT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=uH(16)|0;f=c[46632]|0;h=c[f+84>>2]|0;h=c[(nb[c[h>>2]&63](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;nb[c[h>>2]&63](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function mT(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function nT(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+8>>2]|0)|0;D_(b);return}function oT(a,b,d){a=a|0;b=b|0;d=d|0;tT(c[b+8>>2]|0);D_(b);return}function pT(a){a=a|0;yw(c[a+84>>2]|0)|0;UQ(a);D_(a);return}function qT(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function rT(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;D_(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}D_(c[h>>2]|0)}D_(d);return}function sT(){var a=0,b=0;a=c[46633]|0;while(1){b=c[a+4>>2]|0;if(!b)break;D_(a);a=b}return}function tT(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{pT(c[d>>2]|0);break}case 2:{VQ(c[d>>2]|0);break}default:{}}UQ(b);D_(b);return}function uT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[46633]=g;c[46632]=0;c[46630]=0;c[46634]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[46635]=Cw(56e3,c[4554]|0)|0;c[46636]=Cw(56036,c[4554]|0)|0;Tw(e,128,f+24|0);c[46631]=e;if(!(yT(a,e,d)|0)){aT()|0;c[b>>2]=oU()|0;a=c[46630]|0}else{c[b>>2]=2;a=0}yw(c[46635]|0)|0;yw(c[46636]|0)|0;c[46635]=0;c[46636]=0;c[46633]=0;Xw(e);l=f;return a|0}function vT(b){b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;if(!(a[186581]|0)){a[186581]=1;f=wT()|0;c[d>>2]=b;c[d+4>>2]=f;Pw(1,137493,d)|0;xT()}l=e;return}function wT(){return dX(c[46637]|0)|0}function xT(){var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[46640]|0;c[b+4>>2]=c[b>>2];d=c[46649]|0;if((d|0)>0){Vw(b,c[46647]|0,d)|0;b=c[46640]|0}Vw(b,c[46646]|0,c[46648]|0)|0;d=c[46640]|0;b=c[d+4>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[46640]|0;d=b;b=c[b+4>>2]|0}c[d+4>>2]=b+1;a[b>>0]=0;b=c[46640]|0;d=c[b>>2]|0;c[b+4>>2]=d;c[e>>2]=d;Pw(3,137509,e)|0;l=f;return}function yT(b,e,f){b=b|0;e=e|0;f=f|0;c[46640]=e;Tw(186564,128,0);c[46638]=b;a[186583]=0;a[186580]=0;a[186581]=0;c[46648]=0;c[46649]=0;a[186582]=1;f=f+52|0;e=DV(hH(d[(c[(c[f>>2]|0)+16>>2]|0)+115>>0]|0)|0)|0;c[46637]=e;SW(e,c[(c[(c[f>>2]|0)+16>>2]|0)+144>>2]|0);TW(c[46637]|0,70,27);UW(c[46637]|0,71);return 0}function zT(b,d,e){b=b|0;d=d|0;e=e|0;do if(!(O$(d,137521)|0)){c[46629]=DT(e)|0;a[186582]=0;c[46639]=286}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){a[186582]=1;c[46629]=ET(e)|0;c[46639]=287;break}if(!(O$(d,137541)|0)){c[46629]=FT(b,e,0)|0;c[46639]=288;break}if(!(O$(d,137546)|0)){c[46629]=FT(b,0,1)|0;c[46639]=290;break}if(!(O$(d,137562)|0)){c[46629]=FT(b,0,32)|0;c[46639]=295;break}if(!(O$(d,137548)|0)){c[46629]=FT(b,0,4)|0;c[46639]=291;break}if(!(O$(d,137550)|0)){c[46629]=FT(b,0,64)|0;c[46639]=292;break}if(!(O$(d,137552)|0)){c[46629]=FT(b,0,2)|0;c[46639]=289;break}if(!(O$(d,137554)|0)){c[46629]=FT(b,0,8)|0;c[46639]=293;break}if(!(O$(d,137558)|0)){c[46629]=FT(b,0,16)|0;c[46639]=294;break}if(!(O$(d,137564)|0)){GT(e);c[46639]=283;break}if(!(O$(d,137567)|0)){c[46639]=277;break}if(!(O$(d,137570)|0)){c[46639]=280;break}if(!(O$(d,137573)|0)){c[46629]=HT(e)|0;c[46639]=285;break}if(!(O$(d,137536)|0)){c[46639]=262;break}else{CT(d);break}}a[186582]=0;c[46639]=260}while(0);return}function AT(b,d){b=b|0;d=d|0;do if(!(O$(d,137521)|0)){c[46639]=264;a[186582]=1}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){c[46639]=265;a[186582]=0;break}if(!(O$(d,137536)|0)){c[46639]=263;break}if(!(O$(d,137541)|0)){c[46639]=266;break}if(!(O$(d,137546)|0)){c[46639]=270;break}if(!(O$(d,137548)|0)){c[46639]=271;break}if(!(O$(d,137550)|0)){c[46639]=272;break}if(!(O$(d,137552)|0)){c[46639]=269;break}if(!(O$(d,137554)|0)){c[46639]=273;break}if(!(O$(d,137558)|0)){c[46639]=274;break}if(!(O$(d,137562)|0)){c[46639]=275;break}if(!(O$(d,137564)|0)){c[46639]=(c[46639]|0)==283?282:258;break}if(!(O$(d,137567)|0)){c[46639]=(c[46639]|0)==277?276:278;break}if(!(O$(d,137570)|0)){c[46639]=(c[46639]|0)==280?279:281;break}if(!(O$(d,137573)|0)){c[46639]=(c[46639]|0)==285?284:259;break}else{CT(d);break}}c[46639]=261}while(0);return}function BT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(a[186582]|0){b=0;while(1){if(!e)break;h=d+1|0;g=a[d>>0]|0;if((g&255)>31){d=c[46640]|0;f=c[d+4>>2]|0;if(f>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;f=c[46640]|0;d=f;f=c[f+4>>2]|0}c[d+4>>2]=f+1;a[f>>0]=g;b=b+1|0}d=h;e=e+-1|0}if(b|0)c[46639]=267}return}function CT(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[46639]=268;a[186581]=1;f=wT()|0;c[e>>2]=b;c[e+4>>2]=f;Pw(1,137577,e)|0;l=d;return}function DT(b){b=b|0;var d=0;d=uH(120)|0;c[d+100>>2]=-1;a[d+88>>0]=-1;IT(d,56296,22,b,138529);return d|0}function ET(a){a=a|0;var c=0;c=uH(104)|0;b[c+80>>1]=1;b[c+82>>1]=1;IT(c,56120,22,a,137883);return c|0}function FT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+32|0;e=f;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[e+16>>3]=-1.0;c[e+24>>2]=d&127;if(b|0)IT(e,56096,3,b,137734);d=c[a+144>>2]|0;e=nb[c[d>>2]&63](d,e,1)|0;l=f;return e|0}function GT(a){a=a|0;c[46629]=0;IT(186516,56088,1,a,137670);return}function HT(a){a=a|0;var b=0;b=uH(40)|0;IT(b,56072,2,a,137616);return b|0}function IT(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;m=o+8|0;while(1){k=c[g>>2]|0;if(!k)break;i=c[g+4>>2]|0;c[m>>2]=k;j=e2(m,e,f,8,102)|0;if(!j){c[n>>2]=k;c[n+4>>2]=h;Pw(0,137622,n)|0;i=1}else{i=lb[c[j+4>>2]&127](b,i)|0;i=(i|(d[186580]|0))&255}a[186580]=i;g=g+8|0}l=o;return}function JT(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function KT(a,b){a=a|0;b=b|0;c[a+36>>2]=n1(b)|0;return 0}function LT(a,b){a=a|0;b=b|0;c[a+32>>2]=n1(b)|0;return 0}function MT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=(I0(a[d>>0]|0)|0)<<24>>24;switch(f|0){case 82:{e=d+1|0;if(!(O$(e,137681)|0)){c[b>>2]=114;e=0}else h=5;break}case 76:{h=6;break}default:{e=d+1|0;h=5}}do if((h|0)==5)if(!(O$(e,137686)|0))h=6;else{if((f|0)!=67?(O$(e,137690)|0)==0:0){c[g>>2]=d;Pw(0,137696,g)|0;e=1;break}c[b>>2]=110;e=0}while(0);if((h|0)==6){c[b>>2]=108;e=0}l=i;return e|0}function NT(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return 0}function OT(a,b){a=a|0;b=b|0;c[a>>2]=b;return 0}function PT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,137763,0,255,d)|0)){h[a+16>>3]=+(c[d>>2]|0);a=0}else a=1;l=e;return a|0}function QT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;h=k;m=k+36|0;g=i1(a,m,10)|0;do if((c[m>>2]|0)!=(a|0)){if((g|0)>(e|0)){c[i>>2]=b;c[i+4>>2]=a;c[i+8>>2]=e;Pw(0,137805,i)|0;a=1;break}if((g|0)<(d|0)){c[j>>2]=b;c[j+4>>2]=a;c[j+8>>2]=d;Pw(0,137844,j)|0;a=1;break}else{c[f>>2]=g;a=0;break}}else{c[h>>2]=b;c[h+4>>2]=a;Pw(0,137774,h)|0;a=1}while(0);l=k;return a|0}function RT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=9;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=9;break}case 84:{if(!(O$(e+1|0,138481)|0)){d=d+36|0;b[d>>1]=b[d>>1]|6;d=0}else g=9;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=9;break}default:g=9}if((g|0)==9){c[f>>2]=e;Pw(0,138485,f)|0;d=1}l=h;return d|0}function ST(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|512;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|256;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138436,f)|0;d=1}l=h;return d|0}function TT(a,b){a=a|0;b=b|0;c[a+20>>2]=n1(b)|0;return 0}function UT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138429,0,255,f)|0)){a[d+33>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|32;d=0}else d=1;l=g;return d|0}function VT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138417,0,255,f)|0)){a[d+34>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|64;d=0}else d=1;l=g;return d|0}function WT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138405,-128,127,f)|0)){a[d+32>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|128;d=0}else d=1;l=g;return d|0}function XT(a,b){a=a|0;b=b|0;c[a+24>>2]=n1(b)|0;return 0}function YT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138360,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138368,f)|0;d=1;break}else{b[a+80>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function ZT(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(d[e>>0]|0)|0)<<24>>24|0){case 84:{if(!(O$(e+1|0,138309)|0)){a=a+36|0;b[a>>1]=b[a>>1]|1;a=0}else g=5;break}case 70:{if(!(O$(e+1|0,138313)|0))a=0;else g=5;break}default:g=5}if((g|0)==5){c[f>>2]=e;Pw(0,138318,f)|0;a=1}l=h;return a|0}function _T(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,138295,0,360,d)|0)){c[a+28>>2]=c[d>>2]&65535;a=0}else a=1;l=e;return a|0}function $T(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138288,0,65535,e)|0)){b[a+40>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function aU(a,b){a=a|0;b=b|0;c[a>>2]=n1(b)|0;return 0}function bU(a,b){a=a|0;b=b|0;c[a+16>>2]=n1(b)|0;return 0}function cU(a,b){a=a|0;b=b|0;c[a+4>>2]=n1(b)|0;return 0}function dU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138243,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138251,f)|0;d=1;break}else{b[a+82>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function eU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=0;a:while(1){b:while(1){g=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a;e=e<<24>>24;f=(P$(e)|0)+-98|0;switch(f>>>1|f<<31|0){case 5:{j=5;break b}case 9:{f=2048;break b}case 8:{j=6;break b}case 0:{j=7;break b}default:{}}c[i>>2]=e;c[i+4>>2]=e;Pw(0,138190,i)|0;e=g}if((j|0)==5){j=0;f=1024}else if((j|0)==6){j=0;f=4096}else if((j|0)==7){j=0;f=8192}e=g;h=h|f}if(h<<16>>16!=15360){j=d+36|0;b[j>>1]=b[j>>1]|h}l=k;return 0}function fU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;h=n1(e)|0;g=d+42|0;f=0;e=h;while(1){d=k1(e,138100)|0;if(!d)break;if(((I0(a[d>>0]|0)|0)&255|0)==82){e=d+1|0;if(!(O$(e,138103)|0)){b[g>>1]=b[g>>1]|4;d=f;e=0;f=d;continue}if(!(O$(e,138110)|0)){b[g>>1]=b[g>>1]|2;d=f;e=0;f=d;continue}else{c[i>>2]=d;Pw(0,138116,i)|0;f=1;e=0;continue}}if(!(O$(d,138154)|0)){b[g>>1]=b[g>>1]&-385;d=f;e=0;f=d;continue}if(O$(d,138160)|0?O$(d,138170)|0:0){if(!(O$(d,138176)|0)){b[g>>1]=b[g>>1]|128;d=f;e=0;f=d;continue}if(!(O$(d,138183)|0)){b[g>>1]=b[g>>1]|256;d=f;e=0;f=d;continue}else{c[j>>2]=d;Pw(0,138116,j)|0;f=1;e=0;continue}}b[g>>1]=b[g>>1]|32;d=f;e=0;f=d}D_(h);l=k;return f|0}function gU(a,b){a=a|0;b=b|0;c[a+8>>2]=n1(b)|0;return 0}function hU(a,b){a=a|0;b=b|0;c[a+12>>2]=n1(b)|0;return 0}function iU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 66:{if(!(O$(e+1|0,138046)|0)){d=d+36|0;b[d>>1]=b[d>>1]|16;d=0}else g=7;break}case 84:{if(!(O$(e+1|0,138052)|0)){d=d+36|0;b[d>>1]=b[d>>1]|8;d=0}else g=7;break}case 77:{if(!(O$(e+1|0,138055)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138061,f)|0;d=1}l=h;return d|0}function jU(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138040,0,65535,e)|0)){b[a+38>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function kU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,137696,f)|0;d=1}l=h;return d|0}function lU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138638,0,127,e)|0)){a[b+88>>0]=c[e>>2];b=0}else b=1;l=f;return b|0}function mU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|1;b=0}else{c[e>>2]=d;Pw(0,138598,e)|0;b=1}l=f;return b|0}function nU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|2;b=0}else{c[e>>2]=d;Pw(0,138561,e)|0;b=1}l=f;return b|0}function oU(){var b=0;b=(a[186581]|a[186580])<<24>>24;JV(c[46637]|0);Xw(186564);return b|0}function pU(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;c[46639]=0;d=0;a:do{b:do switch(a[186583]|0){case 2:{b=-1;break a}case 0:{a[186583]=1;h=6;b=138650;d=0;break}default:{b=c[46638]|0;if(!(a[b>>0]|0)){a[186583]=2;h=7;b=138657;break b}else{d=qU(b)|0;h=d-b|0;break b}}}while(0);c[46647]=c[46646];c[46649]=c[46648];c[46646]=b;c[46648]=h;e=c[46642]|0;f=e-(c[46641]|0)|0;g=c[46637]|0;if(!f)b=VW(g,b,h,(h|0)==0&1)|0;else{if(e>>>0<(c[46643]|0)>>>0)b=e;else{Uw(186564,1)|0;b=c[46642]|0}a[b>>0]=0;b=c[46641]|0;c[46642]=b;b=VW(g,b,f,0)|0}if(!((b|0)!=0|(a[186581]|0)!=0)){g=eX(cX(c[46637]|0)|0)|0;h=wT()|0;c[i>>2]=g;c[i+4>>2]=h;Pw(1,137493,i)|0;xT();a[186581]=1;c[46639]=268}if(d|0)c[46638]=d;b=c[46639]|0}while((b|0)==0);l=j;return b|0}function qU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b+1|0;e=a[b>>0]|0;a:do if(e<<24>>24==60){e=a[d>>0]|0;if(e<<24>>24==33)if(!(z$(b+2|0,138665,2)|0)){e=rU(b+4|0)|0;d=e;e=a[e>>0]|0;g=8}else{e=d;g=5}else g=6;b:while(1)if((g|0)==5){d=e;e=a[e>>0]|0;g=6;continue}else if((g|0)==6){switch(e<<24>>24){case 62:case 0:{g=8;continue b}default:{}}e=d+1|0;g=5;continue}else if((g|0)==8)if(e<<24>>24==62){g=10;break}else{g=9;break}if((g|0)==9){Pw(0,138668,f)|0;a[186580]=1;break}else if((g|0)==10){d=d+1|0;break}}else{d=b;b=e;while(1){switch(b<<24>>24){case 60:case 0:break a;case 38:{e=d+1|0;if((a[e>>0]|0)==35)g=15;else e=MM(e,186564)|0;break}default:g=15}if((g|0)==15){g=0;e=c[46642]|0;if(e>>>0>=(c[46643]|0)>>>0){Uw(186564,1)|0;e=c[46642]|0}c[46642]=e+1;a[e>>0]=b;e=d+1|0}d=e;b=a[e>>0]|0}}while(0);l=h;return d|0}function rU(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;f=1;c=b;a:while(1){e=(f|0)==0;d=c;b:while(1){if(e)break a;g=d+1|0;switch(a[d>>0]|0){case 0:{c=g;break a}case 60:{h=5;break b}case 62:{c=-1;break b}default:d=g}}if((h|0)==5){h=0;c=1}f=f+c|0;c=g}d=c+-1|0;do if(a[d>>0]|0){c=c+-3|0;if(c>>>0>=b>>>0?(z$(c,138665,2)|0)==0:0)break;Pw(0,138709,i)|0;a[186580]=1}while(0);l=j;return d|0}function sU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=C_(28)|0;if(!d)d=0;else{e=0;f=0;while(1){if((e|0)>=(b|0))break;r=(c[(c[a+(e<<2)>>2]|0)+4>>2]|0)+f|0;e=e+1|0;f=r}o=d+8|0;c[o>>2]=tU(f<<4)|0;p=d+12|0;c[p>>2]=tU((b<<2)+4|0)|0;e=f<<2;q=d+16|0;c[q>>2]=tU(e)|0;e=tU(e)|0;r=d+20|0;c[r>>2]=e;c[d+4>>2]=f;c[d>>2]=b;f=0;h=0;while(1){c[(c[p>>2]|0)+(h<<2)>>2]=f;if((h|0)>=(b|0))break;j=a+(h<<2)|0;n=c[j>>2]|0;k=c[n+4>>2]|0;l=f+-1|0;g=0;i=f;m=k;while(1){if((g|0)>=(m|0))break;m=(c[o>>2]|0)+(i<<4)|0;e=(c[n>>2]|0)+(g<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=i+1|0;c[(c[q>>2]|0)+(i<<2)>>2]=m;e=c[r>>2]|0;c[e+(i<<2)>>2]=i+-1;s=c[j>>2]|0;g=g+1|0;i=m;m=c[s+4>>2]|0;n=s}s=l+k|0;c[(c[q>>2]|0)+(s<<2)>>2]=f;c[e+(f<<2)>>2]=s;f=i;h=h+1|0}tV(d)}return d|0}function tU(a){a=a|0;if(!a)a=0;else a=C_(a)|0;return a|0}function uU(a){a=a|0;var b=0,d=0;D_(c[a+8>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);d=a+24|0;b=c[d>>2]|0;if(b|0){D_(c[b>>2]|0);D_(c[d>>2]|0)}D_(a);return}function vU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+32|0;m=p+16|0;j=p;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];n=AV(a,d,m)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];o=AV(a,f,m)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=jV(j,d,n,m,f,o,a)|0;d=c[a+4>>2]|0;j=d+1|0;f=1;h=d;while(1){h=c[m+(h<<2)>>2]|0;k=f+1|0;if((h|0)==(j|0))break;else f=k}i=C_(k<<4)|0;h=i+(f<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];a=a+8|0;while(1){d=c[m+(d<<2)>>2]|0;f=f+-1|0;h=i+(f<<4)|0;if((d|0)==(j|0))break;e=(c[a>>2]|0)+(d<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2]}c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if(f|0)qa(138727,138734,148,138740);if(n|0)D_(n);if(o|0)D_(o);c[g+4>>2]=k;c[g>>2]=i;D_(m);l=p;return 1}function wU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l;l=l+48|0;h=j+32|0;g=j+16|0;f=j;i=c[a>>2]|0;d=c[a+4>>2]|0;e=d+-1|0;a=0;while(1){if((a|0)>=(d|0)){a=1;break}m=i+(((e+a|0)%(d|0)|0)<<4)|0;k=i+(a<<4)|0;c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if((pV(f,g,h)|0)==1){a=0;break}else a=a+1|0}l=j;return a|0}function xU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=C_(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=D3(186600,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ja(28,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ja(28,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[46689]=0;o=0;ia(112,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[46690]|0;d=c[46689]|0;c[46689]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=fa(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,s|0,j|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[46689];c[f>>2]=c[46690];d=0}D_(s|0);l=u;return d|0}function yU(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function zU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46693]|0)<(a|0)){b=c[46690]|0;if(!b){e=C_(a<<4)|0;c[46690]=e;if(!e){e=c[15686]|0;c[d>>2]=138749;c[d+4>>2]=531;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186600,1)}}else{d=F_(b,a<<4)|0;c[46690]=d;if(!d){d=c[15686]|0;c[e>>2]=138749;c[e+4>>2]=537;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186600,1)}}c[46693]=a}l=f;return}function AU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[46692]|0;do if((c[46691]|0)<(e|0)){if(!i){i=C_(e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}else{i=F_(i,e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}c[46691]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+BU(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+CU(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];DU(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+EU(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];DU(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];FU(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(GU(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];DU(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];HU(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];DU(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];IU(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[46692]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+JU(T);V=+CU(T);W=+EU(T);T=+KU(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+BU(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];IU(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];yU(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];IU(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];yU(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];HU(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];yU(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];AU(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];AU(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function BU(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function CU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function DU(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function EU(a){a=+a;return +(a*a*3.0*(1.0-a))}function FU(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+QU(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+QU(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+QU(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+RU(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];DU(s,B,I);I=+SU(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];DU(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];HU(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];IU(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+QU(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+QU(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+BU(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];DU(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];DU(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function GU(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+LU(B,4),D<+LU(i,j)+-.001):0){d=0;break}if(MU(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function HU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function IU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function JU(a){a=+a;a=1.0-a;return +(a*a*a)}function KU(a){a=+a;return +(a*a*a)}function LU(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function MU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=NU(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function NU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;OU(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=kV(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{OU(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=kV(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0;break}OU(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=kV(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;PU(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;PU(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])PU(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function OU(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function PU(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function QU(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function RU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function SU(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}function TU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=C_(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=D3(186776,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;ia(113,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[46733]=0;c[46734]=0;o=0;ia(114,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[46736]|0)/2|0;c[46737]=m;c[46738]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=ca(33,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[46740]|0;e=c[46741]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[46733]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[46733]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[46740]|0;e=c[46741]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[46733]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[46733]=g+1;g=f}}while(0);o=0;ja(29,e|0,c[46733]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[46734]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ja(30,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[46734]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=aa(103,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[15686]|0;o=0;c[C>>2]=138776;c[C+4>>2]=192;c[C+8>>2]=138787;ca(29,e|0,138757,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=aa(103,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[15686]|0;o=0;c[D>>2]=138776;c[D+4>>2]=200;c[D+8>>2]=138820;ca(29,e|0,138757,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=aa(104,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[15686]|0;o=0;c[E>>2]=138776;c[E+4>>2]=207;c[E+8>>2]=138858;ca(29,e|0,138757,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ja(31,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[46739]=c[46737];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[46743]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[46735]|0;k=c[e+(c[46738]<<2)>>2]|0;o=0;e=ca(33,u|0,c[c[e+(c[46737]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=ca(33,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[46735]|0;if((c[m+(c[46737]<<2)>>2]|0)!=(n|0)?(c[m+(c[46738]<<2)>>2]|0)!=(n|0):0){o=0;j=$(34,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[46739]|0)){e=0;break}c[46739]=j;e=0;break}o=0;k=$(34,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[46739]|0)){e=0;break}c[46739]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[46743]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;ia(115,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[46742]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}D_(G|0);l=H;return e|0}function UU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[46746]|0)<(a|0)){b=c[46740]|0;if(!b){g=C_(a<<3)|0;c[46740]=g;if(!g){g=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=523;c[d+8>>2]=139026;g1(g,138757,d)|0;bb(186776,1)}g=C_(a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[f>>2]=138776;c[f+4>>2]=527;c[f+8>>2]=139045;g1(g,138757,f)|0;bb(186776,1)}}else{f=F_(b,a<<3)|0;c[46740]=f;if(!f){f=c[15686]|0;c[g>>2]=138776;c[g+4>>2]=533;c[g+8>>2]=139065;g1(f,138757,g)|0;bb(186776,1)}g=F_(c[46741]|0,a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=539;c[e+8>>2]=139085;g1(g,138757,e)|0;bb(186776,1)}}c[46746]=a}l=h;return}function VU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46736]|0)<(a|0)){b=c[46735]|0;if(!b){e=C_(a<<2)|0;c[46735]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=573;c[d+8>>2]=138981;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<2)|0;c[46735]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=580;c[e+8>>2]=139003;g1(d,138757,e)|0;bb(186776,1)}}c[46736]=a}l=f;return}function WU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function XU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(dV(e,g,a,b)|0))e=f;else break}eV(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[15686]|0;c[h>>2]=138776;c[h+4>>2]=324;c[h+8>>2]=138921;g1(a,138757,h)|0}else if((b|0)==9)eV(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function YU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[46743]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function ZU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[46743]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((WU(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function _U(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46743]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(_U((e-d|0)/52|0,b)|0){d=1;break a}d=c[46743]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function $U(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46744]|0)<(a|0)){b=c[46742]|0;if(!b){e=C_(a<<4)|0;c[46742]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=593;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<4)|0;c[46742]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=599;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186776,1)}}c[46744]=a}l=f;return}function aV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46738]|0;e=c[46737]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[46735]|0)+(e<<2)>>2];a=186948;d=-1}else{a=186948;d=-1}else if(f){c[b+4>>2]=c[(c[46735]|0)+(d<<2)>>2];a=186952;d=1}else{a=186952;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[46735]|0)+(f<<2)>>2]=b;return}function bV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46739]|0;g=c[46735]|0;b=c[46737]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[46738]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function cV(a,b){a=a|0;b=b|0;c[((a|0)==1?186952:186948)>>2]=b;return}function dV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(WU(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((WU(i,j,f)|0)==1){f=WU(j,i,g)|0;g=1;h=5}else f=0;else{f=WU(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(gV(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function eV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[46734]|0;f=c[46745]|0;if((e|0)<(f|0))h=e;else{fV(f+20|0);h=c[46734]|0}g=c[46743]|0;c[46734]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function fV(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46745]|0)<(a|0)){b=c[46743]|0;if(!b){e=C_(a*52|0)|0;c[46743]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=552;c[d+8>>2]=138942;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a*52|0)|0;c[46743]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=558;c[e+8>>2]=138961;g1(d,138757,e)|0;bb(186776,1)}}c[46745]=a}l=f;return}function gV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=WU(a,b,c)|0;if((((f|0)!=3?(g=WU(a,b,d)|0,(g|0)!=3):0)?(h=WU(c,d,a)|0,(h|0)!=3):0)?(e=WU(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((hV(a,b,c)|0)==0?(hV(a,b,d)|0)==0:0)?(hV(c,d,a)|0)==0:0)return (hV(c,d,b)|0)!=0|0;return 1}function hV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((WU(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;m=C_(d<<2)|0;n=C_((d<<3)+8|0)|0;o=n+8|0;f=0;while(1){if((f|0)>=(d|0))break;c[m+(f<<2)>>2]=-1;h[o+(f<<3)>>3]=-2147483647.0;f=f+1|0}h[n>>3]=-2147483648.0;a:while(1){if((a|0)==(b|0))break;l=o+(a<<3)|0;j=+h[l>>3];h[l>>3]=j==-2147483647.0?0.0:-j;k=0;f=-1;while(1){if((k|0)>=(d|0)){a=f;continue a}i=o+(k<<3)|0;g=+h[i>>3];if(g<0.0){q=(a|0)<(k|0);p=+h[(c[e+((q?k:a)<<2)>>2]|0)+((q?a:k)<<3)>>3];j=-(p+ +h[l>>3]);if(p!=0.0&g<j){h[i>>3]=j;c[m+(k<<2)>>2]=a;g=j}f=g>+h[o+(f<<3)>>3]?k:f}k=k+1|0}}D_(n);return m|0}function jV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0;j=l;l=l+32|0;k=j+16|0;m=j;i=c[h+4>>2]|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];if(!(CV(m,b,k,f,h)|0)){a=c[h+24>>2]|0;c[a+(i<<2)>>2]=g;m=i+1|0;c[a+(m<<2)>>2]=d;a=iV(m,i,i+2|0,a)|0}else{a=C_((i<<2)+8|0)|0;m=i+1|0;c[a+(i<<2)>>2]=m;c[a+(m<<2)>>2]=-1}l=j;return a|0}function kV(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=lV(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+n$(i);d=+n$(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+n$(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function lV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=mV(a,b)|0;while(0);return a|0}function mV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function nV(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function oV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[46748]|0;if((i|0)>(c[46747]|0)){if(!d)d=C_(i<<4)|0;else d=F_(d,i<<4)|0;c[46748]=d;c[46747]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];G3(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];G3(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];G3(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function pV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>.0001?1:(d<-.0001)<<31>>31)|0}function qV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[a>>3];f=+h[b>>3];if(e!=f){d=+h[c>>3];if(!(e<d&d<f))if(f<d)a=d<e;else a=0;else a=1}else{f=+h[a+8>>3];e=+h[c+8>>3];d=+h[b+8>>3];if(!(f<e&e<d))if(d<e)a=e<f;else a=0;else a=1}return a&1|0}function rV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+32|0;h=m+16|0;g=m;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];j=pV(g,h,i)|0;if((j|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],(qV(g,h,i)|0)!=0):0)f=1;else k=3;do if((k|0)==3){c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];f=pV(g,h,i)|0;if((f|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[e>>2],c[i+4>>2]=c[e+4>>2],c[i+8>>2]=c[e+8>>2],c[i+12>>2]=c[e+12>>2],qV(g,h,i)|0):0){f=1;break};c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];a=pV(g,h,i)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];k=(O(f,j)|0)<0;f=(O(pV(g,h,i)|0,a)|0)>>>31;f=k?f:0}while(0);l=m;return f|0}function sV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function tV(a){a=a|0;c[a+24>>2]=uV(c[a+4>>2]|0)|0;vV(a);return}function uV(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+2|0;f=C_(e<<2)|0;b=E_(O(a,a)|0,8)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=b;b=b+(a<<3)|0;d=d+1|0}while(1){if((a|0)>=(e|0))break;c[f+(a<<2)>>2]=0;a=a+1|0}return f|0}function vV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;p=l;l=l+32|0;i=p+16|0;g=p;j=c[a+4>>2]|0;m=c[a+8>>2]|0;n=c[a+16>>2]|0;o=c[a+20>>2]|0;d=c[a+24>>2]|0;b=0;while(1){if((b|0)>=(j|0))break;q=c[o+(b<<2)>>2]|0;e=m+(b<<4)|0;f=m+(q<<4)|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];r=+wV(g,i);f=c[d+(b<<2)>>2]|0;h[f+(q<<3)>>3]=r;h[(c[d+(q<<2)>>2]|0)+(b<<3)>>3]=r;a=b+-1|0;a=(q|0)==(a|0)?b+-2|0:a;while(1){if((a|0)<=-1)break;if((xV(b,a,m,n,o)|0?xV(a,b,m,n,o)|0:0)?(k=m+(a<<4)|0,c[g>>2]=c[e>>2],c[g+4>>2]=c[e+4>>2],c[g+8>>2]=c[e+8>>2],c[g+12>>2]=c[e+12>>2],c[i>>2]=c[k>>2],c[i+4>>2]=c[k+4>>2],c[i+8>>2]=c[k+8>>2],c[i+12>>2]=c[k+12>>2],yV(g,i,j,j,j,m,n)|0):0){c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];r=+wV(g,i);h[f+(a<<3)>>3]=r;h[(c[d+(a<<2)>>2]|0)+(b<<3)>>3]=r}a=a+-1|0}b=b+1|0}l=p;return}function wV(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0;e=l;l=l+32|0;f=e+16|0;g=e;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];d=+C(+(+sV(g,f)));l=e;return +d}function xV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+64|0;h=g+48|0;i=g+32|0;j=g+16|0;k=g;n=d+(c[f+(a<<2)>>2]<<4)|0;m=d+(a<<4)|0;e=d+(c[e+(a<<2)>>2]<<4)|0;f=d+(b<<4)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=zV(k,j,i,h)|0;l=g;return f|0}function yV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+64|0;n=p+48|0;m=p+32|0;k=p+16|0;j=p;i=0;while(1){if((i|0)>=(d|0)){o=4;break}r=g+(i<<4)|0;q=g+(c[h+(i<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[r>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];if(!(rV(j,k,m,n)|0))i=i+1|0;else{e=0;break}}a:do if((o|0)==4)while(1){if((e|0)>=(f|0)){e=1;break a}q=g+(e<<4)|0;r=g+(c[h+(e<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];c[n+12>>2]=c[r+12>>2];if(!(rV(j,k,m,n)|0)){e=e+1|0;o=4}else{e=0;break}}while(0);l=p;return e|0}function zV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=l;l=l+48|0;h=g+32|0;i=g+16|0;j=g;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];f=pV(j,i,h)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];e=pV(j,i,h)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];d=(pV(j,i,h)|0)>0;l=g;return (d?e|f:e&f)>>>31^1|0}function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=l;l=l+80|0;j=s+64|0;i=s+48|0;g=s+32|0;k=s+16|0;o=s;p=c[a+4>>2]|0;q=c[a+8>>2]|0;r=c[a+16>>2]|0;m=c[a+20>>2]|0;n=C_((p<<3)+16|0)|0;if((b|0)==-2222){c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b=BV(a,j)|0}if((b|0)>-1){a=c[a+12>>2]|0;f=c[a+(b+1<<2)>>2]|0;a=c[a+(b<<2)>>2]|0}else{f=p;a=p}b=0;while(1){if((b|0)>=(a|0)){b=a;break}u=q+(b<<4)|0;c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];u=q+(c[m+(b<<2)>>2]<<4)|0;t=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}while(1){if((b|0)>=(f|0)){b=f;break}h[n+(b<<3)>>3]=0.0;b=b+1|0}while(1){if((b|0)>=(p|0))break;t=q+(b<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=q+(c[m+(b<<2)>>2]<<4)|0;u=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[t>>2];c[k+4>>2]=c[t+4>>2];c[k+8>>2]=c[t+8>>2];c[k+12>>2]=c[t+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}h[n+(p<<3)>>3]=0.0;h[n+(p+1<<3)>>3]=0.0;l=s;return n|0}function BV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;m=l;l=l+32|0;f=m+8|0;e=m;h=m+24|0;i=a+8|0;j=a+12|0;k=h+4|0;d=0;while(1){if((d|0)>=(c[a>>2]|0)){d=-1111;break}o=c[j>>2]|0;n=c[o+(d<<2)>>2]|0;c[h>>2]=(c[i>>2]|0)+(n<<4);g=d+1|0;c[k>>2]=(c[o+(g<<2)>>2]|0)-n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];if(!(wU(e,f)|0))d=g;else break}l=m;return d|0}function CV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+64|0;n=t+48|0;m=t+32|0;p=t+16|0;o=t;r=c[f+4>>2]|0;s=c[f+8>>2]|0;q=c[f+16>>2]|0;g=(e|0)<0;do if((b|0)<0)if(g){g=0;i=0;f=0;h=0}else{b=c[f+12>>2]|0;f=0;h=0;i=e;j=b;b=b+(e<<2)|0;k=9}else{if(g){k=c[f+12>>2]|0;f=0;h=0;i=b;j=k;b=k+(b<<2)|0;k=9;break}g=c[f+12>>2]|0;if((b|0)>(e|0)){f=c[g+(e+1<<2)>>2]|0;h=c[g+(e<<2)>>2]|0;i=b;j=g;b=g+(b<<2)|0;k=9;break}else{f=c[g+(b+1<<2)>>2]|0;h=c[g+(b<<2)>>2]|0;i=e;j=g;b=g+(e<<2)|0;k=9;break}}while(0);if((k|0)==9){g=c[j+(i+1<<2)>>2]|0;i=c[b>>2]|0}b=0;while(1){if((b|0)>=(h|0)){k=13;break}j=s+(b<<4)|0;e=s+(c[q+(b<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];if(!(rV(o,p,m,n)|0))b=b+1|0;else{g=0;break}}a:do if((k|0)==13){while(1){if((f|0)>=(i|0))break;e=s+(f<<4)|0;k=s+(c[q+(f<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0)){f=f+1|0;k=13}else{g=0;break a}}while(1){if((g|0)>=(r|0)){g=1;break a}e=s+(g<<4)|0;k=s+(c[q+(g<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0))g=g+1|0;else{g=0;break}}}while(0);l=t;return g|0}function DV(a){a=a|0;return EV(a,0,0)|0}function EV(a,b,c){a=a|0;b=b|0;c=c|0;return FV(a,b,c,0)|0}function FV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!d){g=C_(496)|0;if(!g)g=0;else{c[g+12>>2]=35;c[g+16>>2]=105;c[g+20>>2]=103;d=35;h=6}}else{g=kb[c[d>>2]&63](496)|0;if(!g)g=0;else{h=c[d>>2]|0;c[g+12>>2]=h;c[g+16>>2]=c[d+4>>2];c[g+20>>2]=c[d+8>>2];d=h;h=6}}do if((h|0)==6){c[g+8>>2]=0;c[g+32>>2]=0;c[g+376>>2]=16;j=g+12|0;i=kb[d&63](256)|0;d=g+388|0;c[d>>2]=i;if(!i){tb[c[g+20>>2]&127](g);g=0;break}h=kb[c[j>>2]&63](1024)|0;i=g+44|0;c[i>>2]=h;if(!h){e=g+20|0;tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}c[g+48>>2]=h+1024;if(!f){f=GV(j)|0;c[g+352>>2]=f;if(!f){e=g+20|0;tb[c[e>>2]&127](c[i>>2]|0);tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}}else c[g+352>>2]=f;c[g+372>>2]=0;c[g+364>>2]=0;c[g+300>>2]=0;c[g+464>>2]=0;c[g+460>>2]=0;c[g+124>>2]=0;c[g+244>>2]=0;d=g+468|0;a[d>>0]=33;h=g+232|0;a[h>>0]=0;a[g+233>>0]=0;c[g+392>>2]=0;c[g+396>>2]=0;a[g+400>>0]=0;f=g+228|0;c[f>>2]=0;HV(g+412|0,j);HV(g+436|0,j);IV(g,b);if(b|0?(c[f>>2]|0)==0:0){JV(g);g=0;break}if(!e){c[g+224>>2]=TX()|0;break}else{a[h>>0]=1;c[g+224>>2]=xZ()|0;a[d>>0]=a[e>>0]|0;break}}while(0);return g|0}function GV(b){b=b|0;var d=0;d=kb[c[b>>2]&63](188)|0;if(d|0){HV(d+80|0,b);HV(d+104|0,b);QW(d,b);QW(d+20|0,b);QW(d+40|0,b);QW(d+60|0,b);a[d+131>>0]=0;QW(d+132|0,b);c[d+152>>2]=0;c[d+156>>2]=0;a[d+160>>0]=0;b=d+164|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a[d+128>>0]=1;a[d+129>>0]=0;a[d+130>>0]=0}return d|0}function HV(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=b;return}function IV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[d+276>>2]=56;EZ(d+252|0);if(e|0)c[d+228>>2]=RV(e,d+12|0)|0;c[d+356>>2]=0;HY(d+148|0,d+144|0,0)|0;c[d>>2]=0;c[d+4>>2]=0;e=d+116|0;g=d+52|0;h=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[e>>2]=d;c[d+120>>2]=0;e=d+128|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;e=c[d+8>>2]|0;c[d+24>>2]=e;c[d+28>>2]=e;c[d+36>>2]=0;c[d+40>>2]=0;e=d+312|0;g=d+404|0;c[g>>2]=0;c[g+4>>2]=0;g=d+280|0;f=d+304|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;g=e;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[e+36>>1]=0;a[f>>0]=1;c[d+308>>2]=0;c[d+360>>2]=0;c[d+368>>2]=0;c[d+380>>2]=0;c[d+236>>2]=0;c[d+248>>2]=0;c[d+240>>2]=0;c[d+472>>2]=0;c[d+476>>2]=0;a[d+484>>0]=0;a[d+485>>0]=0;c[d+488>>2]=0;c[d+492>>2]=0;return}function JV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(b|0){e=b+364|0;g=b+20|0;d=c[b+360>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d>>2]|0;tb[c[g>>2]&127](c[d+36>>2]|0);KV(c[d+44>>2]|0,b);tb[c[g>>2]&127](d);d=h}e=b+300|0;d=c[b+296>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d+8>>2]|0;tb[c[g>>2]&127](d);d=h}KV(c[b+372>>2]|0,b);KV(c[b+368>>2]|0,b);LV(b+412|0);LV(b+436|0);d=b+12|0;tb[c[g>>2]&127](c[b+228>>2]|0);if((a[b+484>>0]|0)==0?(f=c[b+352>>2]|0,f|0):0)MV(f,(c[b+472>>2]|0)==0&1,d);tb[c[g>>2]&127](c[b+388>>2]|0);tb[c[g>>2]&127](c[b+460>>2]|0);tb[c[g>>2]&127](c[b+8>>2]|0);tb[c[g>>2]&127](c[b+44>>2]|0);tb[c[g>>2]&127](c[b+392>>2]|0);tb[c[g>>2]&127](c[b+236>>2]|0);d=c[b+248>>2]|0;if(d|0)tb[d&127](c[b+240>>2]|0);tb[c[g>>2]&127](b)}return}function KV(a,b){a=a|0;b=b|0;var d=0;b=b+20|0;while(1){if(!a)break;d=c[a+4>>2]|0;tb[c[b>>2]&127](c[a+16>>2]|0);tb[c[b>>2]&127](a);a=d}return}function LV(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;b=c[a>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}b=c[a+4>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}return}function MV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+20|0;NV(f,g);d=d+8|0;while(1){e=OV(f)|0;if(!e)break;if(!(c[e+16>>2]|0))continue;tb[c[d>>2]&127](c[e+20>>2]|0)}PV(a);PV(a+132|0);PV(g);PV(a+40|0);PV(a+60|0);LV(a+80|0);LV(a+104|0);if(b<<24>>24){tb[c[d>>2]&127](c[a+184>>2]|0);tb[c[d>>2]&127](c[a+164>>2]|0)}tb[c[d>>2]&127](a);l=h;return}function NV(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=d;c[a+4>>2]=d+(c[b+8>>2]<<2);return}function OV(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=c[a>>2]|0;do{if((e|0)==(d|0)){b=0;break}b=e;e=e+4|0;c[a>>2]=e;b=c[b>>2]|0}while(!(b|0));return b|0}function PV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=a+8|0;e=a+16|0;b=0;while(1){f=c[(c[e>>2]|0)+8>>2]|0;g=c[a>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0)break;tb[f&127](c[g+(b<<2)>>2]|0);b=b+1|0}tb[f&127](g);return}function QV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=SV(a)|0;if(!f){c[a+276>>2]=57;f=TV(a,b,d,e)|0}return f|0}function RV(b,d){b=b|0;d=d|0;var e=0,f=0;e=0;do{f=e;e=e+1|0}while((a[b+f>>0]|0)!=0);d=kb[c[d>>2]&63](e)|0;if(!d)d=0;else F3(d|0,b|0,e|0)|0;return d|0}function SV(b){b=b|0;var d=0;d=b+228|0;if(!(nb[(a[b+232>>0]<<24>>24?35:34)&63](b+148|0,b+144|0,c[d>>2]|0)|0))b=PW(b,c[d>>2]|0)|0;else b=0;return b|0}function TV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;c[h>>2]=d;j=b+144|0;i=c[j>>2]|0;i=ob[c[i>>2]&127](i,d,e,h)|0;f=UV(b,c[j>>2]|0,d,e,i,c[h>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;l=g;return f|0}function UV(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ga=l;l=l+16|0;Da=Ga;c[Da>>2]=i;r=c[b+352>>2]|0;s=b+144|0;if((c[s>>2]|0)==(e|0)){p=b+284|0;q=b+288|0;na=b+296|0}else{na=b+296|0;q=c[na>>2]|0;p=q;q=q+4|0}t=k<<24>>24!=0;pa=b+252|0;u=b+80|0;v=b+476|0;w=b+84|0;x=b+320|0;y=b+412|0;z=b+316|0;A=b+424|0;B=b+428|0;C=b+324|0;ra=b+4|0;D=b+485|0;E=r+132|0;F=b+312|0;ta=r+129|0;G=r+128|0;H=r+80|0;I=r+92|0;J=r+96|0;K=b+136|0;L=b+88|0;M=b+488|0;va=b+112|0;wa=r+131|0;xa=b+116|0;ya=r+130|0;za=b+108|0;Aa=b+356|0;N=b+340|0;O=b+132|0;P=b+344|0;Q=b+348|0;R=b+328|0;S=b+349|0;T=b+420|0;U=r+120|0;V=r+116|0;W=b+92|0;X=b+472|0;Y=b+336|0;Z=b+332|0;_=b+96|0;$=b+256|0;aa=b+464|0;ba=b+460|0;ca=r+160|0;da=r+184|0;ea=r+180|0;fa=r+164|0;ga=b+128|0;ha=b+12|0;ia=b+16|0;ja=b+268|0;ka=b+120|0;la=r+176|0;ma=r+168|0;o=e;n=f;e=h;a:while(1){c[p>>2]=n;f=c[Da>>2]|0;c[q>>2]=f;i=f;b:do if((e|0)<1){if(t&(e|0)!=0){m=7;break a}switch(e|0){case -1:{i=5;m=280;break a}case 0:{m=9;break a}case -2:{i=6;break a}case -4:{m=10;break a}case -15:{e=15;break b}default:{}}c[Da>>2]=g;e=0-e|0;i=g}while(0);h=pb[c[pa>>2]&127](pa,e,n,i,o)|0;c:do switch(h|0){case 2:{m=58;break a}case -1:{m=184;break a}case 1:{i=VV(b,0,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 4:{if(!(c[w>>2]|0))i=1;else{m=WV(y,o,n,c[Da>>2]|0)|0;c[z>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];c[C>>2]=0;i=0}c[x>>2]=0;m=274;break}case 7:{i=c[w>>2]|0;if(!i)m=275;else{yb[i&15](c[ra>>2]|0,c[z>>2]|0,c[x>>2]|0,c[C>>2]|0,1);c[z>>2]=0;XV(y);i=o}break}case 57:{i=VV(b,1,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 6:{a[D>>0]=0;m=YV(b,E,75291,36)|0;c[F>>2]=m;if(!m){i=1;m=280;break a}a[ta>>0]=1;if(!(c[w>>2]|0))m=33;else{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[B>>2]=c[A>>2];c[C>>2]=i;i=0;m=34}break}case 14:{m=33;break}case 8:{i=c[z>>2]|0;if(!i)i=1;else{yb[c[w>>2]&15](c[ra>>2]|0,i,c[x>>2]|0,c[C>>2]|0,0);XV(y);i=0}if(!((c[x>>2]|0)==0?!(a[D>>0]|0):0)){f=a[ta>>0]|0;a[ta>>0]=1;do if(c[M>>2]|0?c[va>>2]|0:0){h=YV(b,E,75291,36)|0;if(!h){i=1;m=280;break a}if(!(a[D>>0]|0))e=h+20|0;else{e=h+20|0;c[e>>2]=c[Aa>>2]}a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[e>>2]|0,c[h+16>>2]|0,c[h+24>>2]|0)|0)){i=21;m=280;break a}if(!(a[wa>>0]|0)){if(c[x>>2]|0)break;a[ta>>0]=f;break}if(((a[ya>>0]|0)==0?(oa=c[za>>2]|0,oa|0):0)?(kb[oa&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}}while(0);a[D>>0]=0}e=c[L>>2]|0;if(!e)m=274;else{tb[e&127](c[ra>>2]|0);i=o}break}case 34:{m=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=m;if(!m){i=1;m=280;break a}else m=80;break}case 22:{m=aW(b,o,n,c[Da>>2]|0)|0;c[P>>2]=m;if(!m){i=1;m=280;break a}a[Q>>0]=0;c[R>>2]=0;a[S>>0]=0;m=80;break}case 23:{a[Q>>0]=1;c[R>>2]=139106;m=80;break}case 24:{a[S>>0]=1;c[R>>2]=139112;m=80;break}case 25:{c[R>>2]=139115;m=80;break}case 26:{c[R>>2]=139121;m=80;break}case 27:{c[R>>2]=139128;m=80;break}case 28:{c[R>>2]=139135;m=80;break}case 29:{c[R>>2]=139144;m=80;break}case 30:{c[R>>2]=139152;m=80;break}case 32:case 31:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0){if(!(bW(y,(c[R>>2]|0)==0?((h|0)==32?139161:139171):139173)|0)){i=1;m=280;break a}if(!(cW(y,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}c[R>>2]=c[B>>2];i=o}else m=275;break}case 36:case 35:{if(a[G>>0]|0){if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,a[S>>0]|0,0,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(qa=c[R>>2]|0,(qa|0)!=0):0){switch(a[qa>>0]|0){case 40:{m=93;break}case 78:{if((a[qa+1>>0]|0)==79)m=93;break}default:{}}if((m|0)==93){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,0,(h|0)==36&1);XV(y);i=o}else m=275}else m=275;break}case 38:case 37:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=fW(b,o,a[Q>>0]|0,n+i|0,(c[Da>>2]|0)+(0-i)|0,H)|0;if(i|0){m=280;break a}e=c[J>>2]|0;c[J>>2]=c[I>>2];if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,0,e,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(sa=c[R>>2]|0,(sa|0)!=0):0){switch(a[sa>>0]|0){case 40:{m=108;break}case 78:{if((a[sa+1>>0]|0)==79)m=108;break}default:{}}if((m|0)==108){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,e,(h|0)==38&1);XV(y);i=o}else m=275}else m=275;break}case 12:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=gW(b,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;e=c[F>>2]|0;f=c[U>>2]|0;if(e){c[e+4>>2]=f;c[(c[F>>2]|0)+8>>2]=(c[V>>2]|0)-(c[U>>2]|0);c[U>>2]=c[V>>2];if(!(c[K>>2]|0))e=1;else{c[q>>2]=n;e=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[e>>2]|0,d[e+33>>0]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[Aa>>2]|0,0,0,0);e=0}}else{c[V>>2]=f;e=1}if(!i){i=e;m=274}else{m=280;break a}}else m=275;break}case 5:{a[D>>0]=0;a[ta>>0]=1;if(!(c[w>>2]|0)){c[x>>2]=75291;i=1}else{m=c[o+64>>2]|0;m=WV(y,o,n+m|0,(c[Da>>2]|0)+(0-m)|0)|0;c[x>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];i=0}if((((a[ya>>0]|0)==0?(c[M>>2]|0)==0:0)?(ua=c[za>>2]|0,ua|0):0)?(kb[ua&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}if(!(c[F>>2]|0)){e=YV(b,E,75291,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}c[e+24>>2]=0;m=133}else m=133;break}case 13:{i=1;m=133;break}case 15:{if(((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0)?(c[K>>2]|0)!=0:0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,d[i+33>>0]|0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,0);i=o}else m=275;break}case 16:{if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){h=WV(H,o,n,c[Da>>2]|0)|0;c[(c[F>>2]|0)+28>>2]=h;if(!(c[(c[F>>2]|0)+28>>2]|0)){i=1;m=280;break a}c[J>>2]=c[I>>2];if(c[W>>2]|0){c[q>>2]=n;i=c[F>>2]|0;zb[c[W>>2]&15](c[ra>>2]|0,c[i>>2]|0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o;break c}if(c[K>>2]|0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o}else m=275}else m=275;break}case 9:{if(nb[c[o+44>>2]&63](o,n,c[Da>>2]|0)|0){c[F>>2]=0;m=275;break c}if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,r,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=0;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 10:{if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,E,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=1;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 18:{c[Y>>2]=0;c[Z>>2]=0;if(!(c[_>>2]|0))m=275;else{n=WV(y,o,n,c[Da>>2]|0)|0;c[Z>>2]=n;if(!n){i=1;m=280;break a}c[B>>2]=c[A>>2];i=o}break}case 21:{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}if(!(c[Z>>2]|0))m=275;else{i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[Y>>2]=i;c[B>>2]=c[A>>2];i=o}break}case 19:{if((c[Z>>2]|0)!=0?(c[_>>2]|0)!=0:0){i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,i,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 20:{if((c[Y>>2]|0)!=0?(c[_>>2]|0)!=0:0){c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,0,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 58:{if(c[u>>2]|0)hW(b,o,n,c[Da>>2]|0);i=iW(b,o,Da,g,j,k)|0;if(i|0){m=280;break a}if(!(c[Da>>2]|0)){m=189;break a}else i=o;break}case 44:{i=c[aa>>2]|0;do if((c[$>>2]|0)>>>0>=i>>>0){if(!i){h=c[ha>>2]|0;c[aa>>2]=32;h=kb[h&63](32)|0;c[ba>>2]=h;if(!h){m=198;break a}else break}f=c[ia>>2]|0;h=c[ba>>2]|0;i=i<<1;c[aa>>2]=i;i=lb[f&127](h,i)|0;if(!i){m=193;break a}c[ba>>2]=i;i=c[da>>2]|0;if(i|0){i=lb[c[ia>>2]&127](i,c[aa>>2]<<2)|0;if(!i){i=1;m=280;break a}c[da>>2]=i}}while(0);a[(c[ba>>2]|0)+(c[$>>2]|0)>>0]=0;if(a[ca>>0]|0){i=kW(b)|0;if((i|0)<0){i=1;m=280;break a}c[(c[da>>2]|0)+(c[ea>>2]<<2)>>2]=i;c[ea>>2]=(c[ea>>2]|0)+1;c[(c[fa>>2]|0)+(i*28|0)>>2]=6;if(c[ga>>2]|0)i=o;else m=275}else m=275;break}case 50:{i=(c[ba>>2]|0)+(c[$>>2]|0)|0;if((a[i>>0]|0)==124){i=2;m=280;break a}a[i>>0]=44;if((a[ca>>0]|0)!=0?(c[ga>>2]|0)!=0:0)i=o;else m=275;break}case 49:{f=c[ba>>2]|0;e=c[$>>2]|0;i=a[f+e>>0]|0;if(i<<24>>24==44){i=2;m=280;break a}if(i<<24>>24==0&(a[ca>>0]|0)!=0?(Ba=(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)|0,(c[Ba>>2]|0)!=3):0){c[Ba>>2]=5;i=(c[ga>>2]|0)==0&1;f=c[ba>>2]|0;e=c[$>>2]|0}else i=1;a[f+e>>0]=124;m=274;break}case 59:case 60:{a[ta>>0]=1;if(c[M>>2]|0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break a}f=YV(b,E,e,0)|0;c[I>>2]=c[J>>2];do if(c[ja>>2]|0){if(!(a[ya>>0]|0)){if(a[ta>>0]|0){m=219;break}}else if(c[na>>2]|0){m=219;break}if(!f){i=11;m=280;break a}if(!(a[f+34>>0]|0)){i=24;m=280;break a}}else m=219;while(0);if((m|0)==219?(m=0,(f|0)==0):0){a[G>>0]=a[ya>>0]|0;if((h|0)!=60){m=275;break c}i=c[ka>>2]|0;if(!i){m=275;break c}vb[i&127](c[ra>>2]|0,e,1);i=o;break c}i=f+32|0;if(a[i>>0]|0){i=12;m=280;break a}if(c[f+4>>2]|0){i=lW(b,f,(h|0)==60&1)|0;e=(i|0)==0;if(e){i=(e^1)&1;m=274;break c}else{m=280;break a}}if(!(c[va>>2]|0)){a[G>>0]=a[ya>>0]|0;m=275;break c}a[wa>>0]=0;a[i>>0]=1;h=(pb[c[va>>2]&127](c[xa>>2]|0,0,c[f+20>>2]|0,c[f+16>>2]|0,c[f+24>>2]|0)|0)==0;a[i>>0]=0;if(h){i=21;m=280;break a}e=a[ya>>0]|0;if(!(a[wa>>0]|0)){a[G>>0]=e;i=o;break c}else i=0}else{e=a[ya>>0]|0;a[G>>0]=e;i=1}if((e<<24>>24==0?(Ca=c[za>>2]|0,(Ca|0)!=0):0)?(kb[Ca&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}else m=274;break}case 40:{if(!(c[ga>>2]|0))m=275;else{n=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=n;if(!n){i=1;m=280;break a}c[ea>>2]=0;c[la>>2]=0;a[ca>>0]=1;i=o}break}case 42:case 41:{if(!(a[ca>>0]|0))m=275;else{if(!(c[ga>>2]|0))i=1;else{i=kb[c[ha>>2]&63](20)|0;if(!i){i=1;m=280;break a}m=i+4|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[i>>2]=(h|0)==41?2:1;c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,i);i=0}a[ca>>0]=0;m=274}break}case 43:{if((a[ca>>0]|0)!=0?(c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)>>2]=3,(c[ga>>2]|0)!=0):0)i=o;else m=275;break}case 51:{e=0;m=247;break}case 53:{e=1;m=247;break}case 52:{e=2;m=247;break}case 54:{e=3;m=247;break}case 45:{f=0;m=258;break}case 47:{f=1;m=258;break}case 46:{f=2;m=258;break}case 48:{f=3;m=258;break}case 55:{if(!(nW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 56:{if(!(oW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 0:{if((e|0)==14)i=o;else m=275;break}case 3:{if(!(c[w>>2]|0))m=275;else i=o;break}case 11:{if((a[G>>0]|0)!=0?(c[K>>2]|0)!=0:0)i=o;else m=275;break}case 17:{if(!(c[_>>2]|0))m=275;else i=o;break}case 33:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275;break}case 39:{if(!(c[ga>>2]|0))m=275;else i=o;break}default:m=275}while(0);if((m|0)==33)if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break}else{i=1;m=34}else if((m|0)==80){m=0;if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275}else if((m|0)==133){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;c[(c[F>>2]|0)+16>>2]=e;e=c[F>>2]|0;if(!(c[e+16>>2]|0)){i=1;m=280;break}c[e+20>>2]=c[Aa>>2];c[J>>2]=c[I>>2];if((h|0)==13&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}else if((m|0)==247){m=0;if(a[ca>>0]|0){i=c[Da>>2]|0;if(e)i=i+(0-(c[o+64>>2]|0))|0;f=kW(b)|0;if((f|0)<0){i=1;m=280;break}c[(c[fa>>2]|0)+(f*28|0)>>2]=4;c[(c[fa>>2]|0)+(f*28|0)+4>>2]=e;i=$V(b,o,n,i)|0;if(!i){i=1;m=280;break}e=c[i>>2]|0;c[(c[fa>>2]|0)+(f*28|0)+8>>2]=e;i=0;do{h=i;i=i+1|0}while((a[e+h>>0]|0)!=0);c[ma>>2]=(c[ma>>2]|0)+i;if(c[ga>>2]|0)i=o;else m=275}else m=275}else if((m|0)==258)if(a[ca>>0]|0){e=(c[ga>>2]|0)==0;i=e&1;m=(c[ea>>2]|0)+-1|0;c[ea>>2]=m;c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+(m<<2)>>2]|0)*28|0)+4>>2]=f;if(!(c[ea>>2]|0)){if(!e){e=mW(b)|0;if(!e){i=1;m=280;break}c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,e)}a[ca>>0]=0;c[ma>>2]=0;m=274}else m=274}else m=275;if((m|0)==34){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break}ZV(e);c[(c[F>>2]|0)+24>>2]=e;c[J>>2]=c[I>>2];if((h|0)==14&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}if((m|0)==274){m=0;if(!(i<<24>>24))i=o;else m=275}if((m|0)==275){m=0;if(!(c[u>>2]|0))i=o;else{hW(b,o,n,c[Da>>2]|0);i=o}}switch(c[v>>2]|0){case 3:{m=278;break a}case 2:{i=35;m=280;break a}default:{}}e=c[Da>>2]|0;o=i;n=e;e=ob[c[i>>2]&127](i,e,g,Da)|0}d:switch(m|0){case 7:{c[j>>2]=n;i=0;break}case 9:{c[p>>2]=f;i=4;break}case 10:{i=(o|0)==(c[s>>2]|0);if(!i?(a[(c[na>>2]|0)+20>>0]|0)==0:0){c[j>>2]=n;i=0;break}if((a[b+484>>0]|0)!=0|i^1)if((pb[c[pa>>2]&127](pa,-4,g,g,o)|0)==-1)i=29;else{c[j>>2]=n;i=0}else i=3;break}case 58:{do if((a[D>>0]|0?(Ea=a[ta>>0]|0,a[ta>>0]=1,c[M>>2]|0):0)?c[va>>2]|0:0){i=YV(b,E,75291,36)|0;if(!i){i=1;break d}Da=i+20|0;c[Da>>2]=c[Aa>>2];a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[Da>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0)|0)){i=21;break d}if(!(a[wa>>0]|0)){a[ta>>0]=Ea;break}if(((a[ya>>0]|0)==0?(Fa=c[za>>2]|0,Fa|0):0)?(kb[Fa&63](c[ra>>2]|0)|0)==0:0){i=22;break d}}while(0);c[b+276>>2]=58;i=_V(b,n,g,j)|0;break}case 184:{i=(e|0)==28?10:(e|0)==12?17:2;break}case 189:{c[b+276>>2]=59;i=0;break}case 193:{c[aa>>2]=(c[aa>>2]|0)>>>1;i=1;break}case 198:{c[aa>>2]=0;i=1;break}case 278:{c[j>>2]=c[Da>>2];i=0;break}case 280:break}l=Ga;return i|0}function VV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q+16|0;m=q+12|0;i=q+8|0;j=q+4|0;k=q;c[p>>2]=0;c[m>>2]=0;c[i>>2]=0;c[k>>2]=-1;n=b+144|0;o=b+284|0;g=(d|0)!=0;a:do if(rb[(a[b+232>>0]<<24>>24?2:1)&3](d,c[n>>2]|0,e,f,o,i,j,p,m,k)|0){if((c[k>>2]|0)==1&(g^1)?(a[(c[b+352>>2]|0)+130>>0]=1,h=b+488|0,(c[h>>2]|0)==1):0)c[h>>2]=0;h=b+140|0;if(!(c[h>>2]|0))if(!(c[b+80>>2]|0)){e=0;d=0}else{hW(b,c[n>>2]|0,e,f);e=0;d=0}else{d=c[p>>2]|0;if(!d)d=0;else{f=c[n>>2]|0;d=WV(b+436|0,f,d,d+(lb[c[f+28>>2]&127](f,d)|0)|0)|0;if(!d){d=1;break}c[b+452>>2]=c[b+448>>2]}g=c[i>>2]|0;if(g){i=c[n>>2]|0;g=WV(b+436|0,i,g,(c[j>>2]|0)+(0-(c[i+64>>2]|0))|0)|0;if(!g){d=1;break}}else g=0;xb[c[h>>2]&31](c[b+4>>2]|0,g,d,c[k>>2]|0);e=g}do if(!(c[b+228>>2]|0)){g=c[m>>2]|0;h=g;if(g|0){k=c[g+64>>2]|0;m=c[n>>2]|0;if((k|0)==(c[m+64>>2]|0)?(k|0)!=2|(g|0)==(m|0):0){c[n>>2]=h;break}c[o>>2]=c[p>>2];d=19;break a}g=c[p>>2]|0;if(g|0){h=b+436|0;if(!d){d=c[n>>2]|0;d=WV(h,d,g,g+(lb[c[d+28>>2]&127](d,g)|0)|0)|0;if(!d){d=1;break a}}d=PW(b,d)|0;XV(h);if((d|0)!=18)break a;c[o>>2]=c[p>>2];d=18;break a}}while(0);if((d|0)!=0|(e|0)!=0){XV(b+436|0);d=0}else d=0}else d=g?31:30;while(0);l=q;return d|0}function WV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;do if(!(cW(b,d,e,f)|0))d=0;else{e=b+12|0;d=c[e>>2]|0;if((d|0)==(c[b+8>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=0;d=c[b+16>>2]|0}while(0);return d|0}function XV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+4|0;b=c[e>>2]|0;a:do if(!b){c[e>>2]=c[a>>2];b=a}else{d=c[a>>2]|0;while(1){if(!d){b=a;break a}g=c[d>>2]|0;c[d>>2]=b;c[e>>2]=d;f=d;d=g;b=f}}while(0);c[b>>2]=0;c[a+16>>2]=0;c[a+12>>2]=0;c[a+8>>2]=0;return}function YV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=e+8|0;a:do if(!(c[w>>2]|0))if(g){a[e+4>>0]=6;c[w>>2]=64;h=e+16|0;i=kb[c[c[h>>2]>>2]&63](256)|0;c[e>>2]=i;if(!i){c[w>>2]=0;h=0;break}else{H3(i|0,0,256)|0;j=NW(b,f)|0;j=(c[w>>2]|0)+-1&j;i=e;o=27;break}}else h=0;else{v=NW(b,f)|0;k=c[w>>2]|0;j=k+-1|0;l=c[e>>2]|0;m=v&0-k;u=e+4|0;n=j>>>2;i=0;j=j&v;while(1){h=c[l+(j<<2)>>2]|0;if(!h)break;if((OW(f,c[h>>2]|0)|0)<<24>>24)break a;if(!(i<<24>>24))h=(m>>>((d[u>>0]|0)+-1|0)&n|1)&255;else h=i;t=h&255;i=h;j=j-t+(j>>>0<t>>>0?k:0)|0}if(g){i=a[u>>0]|0;h=i&255;if(!((c[e+12>>2]|0)>>>(h+-1|0))){h=e+16|0;i=e;o=27;break}q=h+1&255;j=i+1&255;s=1<<j;r=s+-1|0;i=s<<2;h=e+16|0;t=kb[c[c[h>>2]>>2]&63](i)|0;if(t){H3(t|0,0,i|0)|0;p=0-s|0;n=j+-1|0;o=r>>>2;m=0;while(1){if(m>>>0>=(c[w>>2]|0)>>>0)break;i=c[(c[e>>2]|0)+(m<<2)>>2]|0;if(i|0){i=NW(b,c[i>>2]|0)|0;k=((i&p)>>>n&o|1)&255;i=i&r;j=0;while(1){l=t+(i<<2)|0;if(!(c[l>>2]|0))break;l=j<<24>>24==0?k:j;x=l&255;i=i+(i>>>0<x>>>0?s:0)-x|0;j=l}c[l>>2]=c[(c[e>>2]|0)+(m<<2)>>2]}m=m+1|0}tb[c[(c[h>>2]|0)+8>>2]&127](c[e>>2]|0);c[e>>2]=t;a[u>>0]=q;c[w>>2]=s;k=((v&p)>>>n&o|1)&255;i=r&v;j=0;while(1){if(!(c[t+(i<<2)>>2]|0)){j=i;i=e;o=27;break a}x=j<<24>>24==0?k:j;w=x&255;i=i+(i>>>0<w>>>0?s:0)-w|0;j=x}}else h=0}else h=0}while(0);if((o|0)==27){h=kb[c[c[h>>2]>>2]&63](g)|0;c[(c[i>>2]|0)+(j<<2)>>2]=h;h=c[(c[i>>2]|0)+(j<<2)>>2]|0;if(!h)h=0;else{H3(h|0,0,g|0)|0;c[c[(c[i>>2]|0)+(j<<2)>>2]>>2]=f;h=e+12|0;c[h>>2]=(c[h>>2]|0)+1;h=c[(c[i>>2]|0)+(j<<2)>>2]|0}}return h|0}function ZV(b){b=b|0;var c=0,d=0,e=0;e=b;c=b;while(1){d=a[e>>0]|0;if(!(d<<24>>24))break;switch(d<<24>>24|0){case 10:case 13:case 32:{if((c|0)!=(b|0)){if((a[c+-1>>0]|0)!=32){a[c>>0]=32;c=c+1|0}}else c=b;break}default:{a[c>>0]=d;c=c+1|0}}e=e+1|0}if((c|0)!=(b|0)){b=c+-1|0;b=(a[b>>0]|0)==32?b:c}a[b>>0]=0;return}function _V(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,0,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function $V(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+352>>2]|0;b=WV(g+80|0,b,d,e)|0;do if((b|0)!=0?(f=YV(a,g+20|0,b,24)|0,(f|0)!=0):0)if((c[f>>2]|0)==(b|0)){c[g+96>>2]=c[g+92>>2];if(!(CW(a,f)|0)){f=0;break}}else c[g+92>>2]=c[g+96>>2];else f=0;while(0);return f|0}function aW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+352>>2]|0;k=m+80|0;n=m+92|0;h=c[n>>2]|0;l=m+88|0;if((h|0)==(c[l>>2]|0))if(!((eW(k)|0)<<24>>24))g=0;else{h=c[n>>2]|0;i=4}else i=4;a:do if((i|0)==4){c[n>>2]=h+1;a[h>>0]=0;d=WV(k,d,e,f)|0;if((d|0)!=0?(j=d+1|0,g=YV(b,m+40|0,j,12)|0,(g|0)!=0):0){if((c[g>>2]|0)!=(j|0)){c[n>>2]=c[m+96>>2];break}h=c[n>>2]|0;i=m+96|0;c[i>>2]=h;if(a[b+232>>0]|0){e=a[j>>0]|0;b:do if(e<<24>>24==120)if((((a[d+2>>0]|0)==109?(a[d+3>>0]|0)==108:0)?(a[d+4>>0]|0)==110:0)?(a[d+5>>0]|0)==115:0){switch(a[d+6>>0]|0){case 0:{h=m+152|0;break}case 58:{h=YV(b,m+60|0,d+7|0,8)|0;break}default:{f=0;d=120;break b}}c[g+4>>2]=h;a[g+9>>0]=1;break a}else{f=0;d=120}else{f=0;d=e}while(0);c:while(1){switch(d<<24>>24){case 0:break a;case 58:{e=0;break c}default:{}}d=f+1|0;f=d;d=a[j+d>>0]|0}while(1){d=(h|0)==(c[l>>2]|0);if((e|0)>=(f|0))break;if(d){if(!((eW(k)|0)<<24>>24)){g=0;break a}h=c[n>>2]|0}d=a[j+e>>0]|0;c[n>>2]=h+1;a[h>>0]=d;e=e+1|0;h=c[n>>2]|0}if(d){if(!((eW(k)|0)<<24>>24)){g=0;break}h=c[n>>2]|0}c[n>>2]=h+1;a[h>>0]=0;h=YV(b,m+60|0,c[i>>2]|0,8)|0;c[g+4>>2]=h;if(h){d=c[i>>2]|0;if((c[h>>2]|0)==(d|0)){c[i>>2]=c[n>>2];break}else{c[n>>2]=d;break}}else g=0}}else g=0}while(0);return g|0}function bW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b+12|0;h=b+8|0;while(1){e=a[d>>0]|0;if(!(e<<24>>24)){i=7;break}f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}f=c[g>>2]|0;e=a[d>>0]|0}c[g>>2]=f+1;a[f>>0]=e;d=d+1|0}if((i|0)==7)d=c[b+16>>2]|0;return d|0}function cW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;c[h>>2]=d;g=a+12|0;if((c[g>>2]|0)==0?(eW(a)|0)<<24>>24==0:0)d=0;else f=3;a:do if((f|0)==3){d=b+56|0;f=a+8|0;while(1){if((pb[c[d>>2]&127](b,h,e,g,c[f>>2]|0)|0)>>>0<2)break;if(!((eW(a)|0)<<24>>24)){d=0;break a}}d=c[a+16>>2]|0}while(0);l=i;return d|0}function dW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;i=f<<24>>24==0;n=b+12|0;m=c[n>>2]|0;a:do if(!(i&(g|0)==0)){j=b+20|0;f=0;while(1){if((f|0)>=(m|0))break;if((c[(c[j>>2]|0)+(f*12|0)>>2]|0)==(d|0)){f=1;break a}else f=f+1|0}if((!i?(k=b+8|0,(c[k>>2]|0)==0):0)?(a[d+9>>0]|0)==0:0){c[k>>2]=d;l=9}else l=9}else l=9;while(0);b:do if((l|0)==9){j=b+16|0;do if((m|0)==(c[j>>2]|0))if(!m){c[j>>2]=8;f=kb[c[h+12>>2]&63](96)|0;c[b+20>>2]=f;if(f|0)break;c[j>>2]=0;f=0;break b}else{i=b+20|0;f=lb[c[h+16>>2]&127](c[i>>2]|0,m*24|0)|0;if(!f){f=0;break b}c[j>>2]=m<<1;c[i>>2]=f;break}else f=c[b+20>>2]|0;while(0);h=c[n>>2]|0;c[f+(h*12|0)>>2]=d;c[f+(h*12|0)+8>>2]=g;a[f+(h*12|0)+4>>0]=e;if(!(e<<24>>24))a[d+8>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=1}while(0);return f|0}function eW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+4|0;e=c[b>>2]|0;do if(e){f=a+16|0;g=c[f>>2]|0;if(!g){c[a>>2]=e;c[b>>2]=c[e>>2];c[e>>2]=0;l=c[a>>2]|0;b=l+8|0;c[f>>2]=b;c[a+8>>2]=(c[l+4>>2]|0)+(l+8);c[a+12>>2]=b;b=1;break}d=a+8|0;if(((c[d>>2]|0)-g|0)<(c[e+4>>2]|0)){k=c[e>>2]|0;c[e>>2]=c[a>>2];l=c[b>>2]|0;c[a>>2]=l;c[b>>2]=k;b=c[f>>2]|0;F3(l+8|0,b|0,(c[d>>2]|0)-b|0)|0;b=c[a>>2]|0;l=a+12|0;c[l>>2]=(c[l>>2]|0)-(c[f>>2]|0)+(b+8);c[f>>2]=b+8;c[d>>2]=(c[b+4>>2]|0)+(b+8);b=1}else h=6}else h=6;while(0);a:do if((h|0)==6){e=c[a>>2]|0;k=a+16|0;do if(!e){i=k;b=c[k>>2]|0}else{j=c[k>>2]|0;b=j;if((j|0)!=(e+8|0)){i=k;break}f=a+8|0;g=(c[f>>2]|0)-b<<1;h=a+12|0;d=(c[h>>2]|0)-b|0;if((g|0)<0){b=0;break a}b=MW(g)|0;if(!b){b=0;break a}b=lb[c[(c[a+20>>2]|0)+4>>2]&127](e,b)|0;if(!b){b=0;break a}c[a>>2]=b;c[b+4>>2]=g;b=c[a>>2]|0;c[h>>2]=b+8+d;c[k>>2]=b+8;c[f>>2]=b+8+g;b=1;break a}while(0);j=a+8|0;b=(c[j>>2]|0)-b|0;if((b|0)>=0){if((b|0)>=1024){b=b<<1;if((b|0)<0){b=0;break}}else b=1024;d=MW(b)|0;if((d|0)!=0?(l=kb[c[c[a+20>>2]>>2]&63](d)|0,(l|0)!=0):0){c[l+4>>2]=b;c[l>>2]=c[a>>2];c[a>>2]=l;h=a+12|0;a=c[h>>2]|0;e=c[k>>2]|0;d=a;f=e;if((a|0)==(e|0)){g=l+8|0;e=f}else{g=l+8|0;F3(g|0,e|0,d-f|0)|0;e=c[i>>2]|0;d=c[h>>2]|0}c[h>>2]=l+8+(d-e);c[k>>2]=g;c[j>>2]=l+8+b;b=1}else b=0}else b=0}while(0);return b|0}function fW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=LW(b,d,e,f,g,h)|0;do if(!b){d=h+12|0;b=c[d>>2]|0;if((e<<24>>24==0?(c[h+16>>2]|0)!=(b|0):0)?(i=b+-1|0,(a[i>>0]|0)==32):0){c[d>>2]=i;b=i}if((b|0)==(c[h+8>>2]|0)){if(!((eW(h)|0)<<24>>24)){b=1;break}b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=0;b=0}while(0);return b|0}function gW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+16|0;B=H;C=H+4|0;g=c[b+352>>2]|0;D=g+104|0;F=b+272|0;E=c[F>>2]|0;c[F>>2]=1;if((c[D>>2]|0)==0?(eW(D)|0)<<24>>24==0:0)g=1;else{n=d+20|0;o=b+484|0;p=b+144|0;q=b+412|0;r=d+64|0;s=g+132|0;t=b+428|0;u=b+424|0;v=b+224|0;w=b+112|0;m=g+130|0;x=g+128|0;y=g+131|0;z=b+116|0;A=g+112|0;j=g+116|0;k=d+40|0;a:while(1){b:do switch(ob[c[n>>2]&127](d,e,f,B)|0){case -4:{g=0;break a}case -1:{G=37;break a}case 0:{G=39;break a}case 28:{if((a[o>>0]|0)==0?(c[p>>2]|0)==(d|0):0){G=19;break a}g=c[r>>2]|0;g=WV(q,d,e+g|0,(c[B>>2]|0)+(0-g)|0)|0;if(!g){g=1;break a}h=YV(b,s,g,0)|0;c[u>>2]=c[t>>2];if(!h){G=9;break a}i=h+32|0;if(a[i>>0]|0){G=11;break a}g=h+16|0;if(!(c[g>>2]|0)){a[i>>0]=1;g=c[h+4>>2]|0;g=gW(b,c[v>>2]|0,g,g+(c[h+8>>2]|0)|0)|0;a[i>>0]=0;if(!g)break b;else break a}if(c[w>>2]|0){a[y>>0]=0;a[i>>0]=1;h=(pb[c[w>>2]&127](c[z>>2]|0,0,c[h+20>>2]|0,c[g>>2]|0,c[h+24>>2]|0)|0)==0;a[i>>0]=0;if(h){g=21;break a}if(a[y>>0]|0)break b}a[x>>0]=a[m>>0]|0;break}case 6:case 9:{if(!(cW(D,d,e,c[B>>2]|0)|0)){g=1;break a}break}case -3:{c[B>>2]=e+(c[r>>2]|0);G=22;break}case 7:{G=22;break}case 10:{g=lb[c[k>>2]&127](d,e)|0;if((g|0)<0){G=27;break a}h=gX(g,C)|0;e=0;while(1){if((e|0)>=(h|0))break;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;G=35;break a}g=c[j>>2]|0}i=a[C+e>>0]|0;c[j>>2]=g+1;a[g>>0]=i;e=e+1|0}break}default:{G=41;break a}}while(0);if((G|0)==22){G=0;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;break}g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=10}e=c[B>>2]|0}if((G|0)==9){a[x>>0]=a[m>>0]|0;g=0}else if((G|0)==11)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=12}else g=12;else if((G|0)==19){c[b+284>>2]=e;g=10}else if((G|0)==27)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=14;G=35}else{g=14;G=35}else if((G|0)==37)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=4}else g=4;else if((G|0)==39)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=c[B>>2];g=4}else g=4;else if((G|0)==41)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=23}else g=23;c[F>>2]=E}l=H;return g|0}function hW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;n=p;o=p+4|0;c[n>>2]=e;if(!(a[d+68>>0]|0)){if((c[b+144>>2]|0)==(d|0)){g=b+288|0;h=b+284|0}else{h=c[b+296>>2]|0;g=h+4|0}i=b+44|0;j=d+56|0;k=b+48|0;m=b+80|0;e=b+4|0;do{c[o>>2]=c[i>>2];b=pb[c[j>>2]&127](d,n,f,o,c[k>>2]|0)|0;c[g>>2]=c[n>>2];q=c[i>>2]|0;vb[c[m>>2]&127](c[e>>2]|0,q,(c[o>>2]|0)-q|0);c[h>>2]=c[n>>2]}while(b>>>0>1)}else vb[c[b+80>>2]&127](c[b+4>>2]|0,e,f-e|0);l=p;return}function iW(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;k=c[d>>2]|0;if((c[a+144>>2]|0)==(b|0)){i=a+284|0;c[i>>2]=k;h=a+288|0}else{i=c[a+296>>2]|0;h=i+4|0}c[i>>2]=k;c[d>>2]=0;n=ob[c[b+12>>2]&127](b,k,e,j)|0;e=c[j>>2]|0;c[h>>2]=e;switch(n|0){case 42:{if(c[a+80>>2]|0){hW(a,b,k,e);e=c[j>>2]|0}c[d>>2]=e;c[f>>2]=e;e=(c[a+476>>2]|0)==2?35:0;break}case 0:{c[i>>2]=e;e=4;break}case -2:{if(!(g<<24>>24))e=6;else{c[f>>2]=k;e=0}break}case -4:case -1:{if(!(g<<24>>24))e=2;else{c[f>>2]=k;e=0}break}default:{c[i>>2]=e;e=23}}l=m;return e|0}function jW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=iW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;if(!((d|0)!=0|(g|0)==0)){c[b+276>>2]=57;d=TV(b,g,e,f)|0}l=h;return d|0}function kW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=c[a+352>>2]|0;j=i+184|0;if(!(c[j>>2]|0)){b=kb[c[a+12>>2]&63](c[a+464>>2]<<2)|0;c[j>>2]=b;if(!b)b=-1;else{c[b>>2]=0;d=4}}else d=4;do if((d|0)==4){h=i+176|0;b=c[h>>2]|0;g=i+172|0;d=c[g>>2]|0;f=i+164|0;e=c[f>>2]|0;if(b>>>0<d>>>0)g=e;else{if(!e){b=kb[c[a+12>>2]&63](896)|0;if(!b){b=-1;break}else{d=b;b=32}}else{b=lb[c[a+16>>2]&127](e,d*56|0)|0;if(!b){b=-1;break}d=b;b=c[g>>2]<<1}c[g>>2]=b;c[f>>2]=d;b=c[h>>2]|0;g=d}c[h>>2]=b+1;d=c[i+180>>2]|0;if(d|0){a=c[(c[j>>2]|0)+(d+-1<<2)>>2]|0;f=g+(a*28|0)+16|0;d=c[f>>2]|0;if(d|0)c[g+(d*28|0)+24>>2]=b;d=g+(a*28|0)+20|0;e=c[d>>2]|0;if(!e)c[g+(a*28|0)+12>>2]=b;c[f>>2]=b;c[d>>2]=e+1}j=g+(b*28|0)+12|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}while(0);return b|0}function lW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;o=b+300|0;f=c[o>>2]|0;if(!f){f=kb[c[b+12>>2]&63](24)|0;if(!f)f=1;else{m=f;g=4}}else{c[o>>2]=c[f+8>>2];m=f;g=4}do if((g|0)==4){h=d+32|0;a[h>>0]=1;i=d+12|0;c[i>>2]=0;j=b+296|0;k=m+8|0;c[k>>2]=c[j>>2];c[j>>2]=m;c[m+12>>2]=d;f=b+308|0;c[m+16>>2]=c[f>>2];a[m+20>>0]=e;c[m>>2]=0;c[m+4>>2]=0;g=c[d+4>>2]|0;e=g+(c[d+8>>2]|0)|0;c[n>>2]=g;if(!(a[d+33>>0]|0))f=rW(b,c[f>>2]|0,c[b+224>>2]|0,g,e,n,0)|0;else{d=b+224|0;f=c[d>>2]|0;f=ob[c[f>>2]&127](f,g,e,n)|0;f=UV(b,c[d>>2]|0,g,e,f,c[n>>2]|0,n,0)|0}if(!f){f=c[n>>2]|0;if((e|0)!=(f|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=f-g;c[b+276>>2]=60;f=0;break}a[h>>0]=0;c[j>>2]=c[k>>2];c[k>>2]=c[o>>2];c[o>>2]=m;f=0}}while(0);l=p;return f|0}function mW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;b=c[a+352>>2]|0;f=b+176|0;b=kb[c[a+12>>2]&63](((c[f>>2]|0)*20|0)+(c[b+168>>2]|0)|0)|0;if(!b)b=0;else{c[e>>2]=b+((c[f>>2]|0)*20|0);c[d>>2]=b+20;qW(a,0,b,d,e)}l=g;return b|0}function nW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+64|0;if(!(c[j>>2]|0))if(!(c[a+80>>2]|0))d=1;else{hW(a,b,d,e);d=1}else{h=b+64|0;g=d+(c[h>>2]<<1)|0;d=g+(lb[c[b+28>>2]&127](b,g)|0)|0;f=a+412|0;g=WV(f,b,g,d)|0;if((g|0)!=0?(c[a+428>>2]=c[a+424>>2],i=lb[c[b+32>>2]&127](b,d)|0,i=WV(f,b,i,e+(0-(c[h>>2]<<1))|0)|0,(i|0)!=0):0){pW(i);vb[c[j>>2]&127](c[a+4>>2]|0,g,i);XV(f);d=1}else d=0}return d|0}function oW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=a+68|0;if(!(c[g>>2]|0))if(!(c[a+80>>2]|0))b=1;else{hW(a,b,d,e);b=1}else{f=a+412|0;h=c[b+64>>2]|0;b=WV(f,b,d+(h<<2)|0,e+(O(h,-3)|0)|0)|0;if(!b)b=0;else{pW(b);ub[c[g>>2]&63](c[a+4>>2]|0,b);XV(f);b=1}}return b|0}function pW(b){b=b|0;var c=0,d=0,e=0;a:while(1){switch(a[b>>0]|0){case 0:break a;case 13:{d=b;c=13;e=4;break a}default:{}}b=b+1|0}if((e|0)==4){while(1){if(c<<24>>24==13){a[d>>0]=10;e=b+1|0;b=(a[e>>0]|0)==10?b+2|0:e}else{a[d>>0]=c;b=b+1|0}d=d+1|0;c=a[b>>0]|0;if(!(c<<24>>24))break;else e=4}a[d>>0]=0}return}function qW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[b+352>>2]|0)+164|0;j=c[(c[k>>2]|0)+(d*28|0)>>2]|0;c[e>>2]=j;c[e+4>>2]=c[(c[k>>2]|0)+(d*28|0)+4>>2];if((j|0)==4){c[e+8>>2]=c[g>>2];d=c[(c[k>>2]|0)+(d*28|0)+8>>2]|0;while(1){j=a[d>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;if(!(a[d>>0]|0))break;else d=d+1|0}c[e+12>>2]=0;c[e+16>>2]=0}else{h=c[(c[k>>2]|0)+(d*28|0)+20>>2]|0;i=e+12|0;c[i>>2]=h;j=e+16|0;c[j>>2]=c[f>>2];c[f>>2]=(c[f>>2]|0)+(h*20|0);d=(c[k>>2]|0)+(d*28|0)+12|0;h=0;while(1){d=c[d>>2]|0;if(h>>>0>=(c[i>>2]|0)>>>0)break;qW(b,d,(c[j>>2]|0)+(h*20|0)|0,f,g);d=(c[k>>2]|0)+(d*28|0)+24|0;h=h+1|0}c[e+8>>2]=0}return}function rW(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;ma=l;l=l+48|0;ja=ma+28|0;ea=ma+32|0;ka=ma+24|0;Z=ma;c[ja>>2]=f;_=c[b+352>>2]|0;if((c[b+144>>2]|0)==(e|0)){fa=b+284|0;Y=b+288|0}else{Y=c[b+296>>2]|0;fa=Y;Y=Y+4|0}c[fa>>2]=f;t=e+4|0;ga=b+80|0;u=b+476|0;v=e+44|0;w=e+64|0;x=_+80|0;y=_+96|0;z=_+92|0;A=_+129|0;B=b+112|0;C=b+116|0;D=b+428|0;E=b+424|0;F=b+304|0;G=b+120|0;ha=b+4|0;H=_+130|0;$=b+60|0;I=b+364|0;J=b+12|0;K=b+360|0;L=e+28|0;ia=b+308|0;aa=e+56|0;M=b+16|0;N=b+52|0;O=b+412|0;P=b+388|0;Q=b+56|0;R=b+232|0;S=b+233|0;T=b+468|0;U=b+104|0;V=b+372|0;W=e+40|0;X=b+72|0;ba=e+68|0;ca=b+44|0;da=b+48|0;a:while(1){s=c[ja>>2]|0;c[ea>>2]=s;s=ob[c[t>>2]&127](e,s,g,ea)|0;f=c[ea>>2]|0;c[Y>>2]=f;k=f;b:do switch(s|0){case -3:{la=6;break a}case -4:{la=15;break a}case 0:{la=20;break a}case -1:{la=21;break a}case -2:{la=23;break a}case 12:{f=17;break a}case -5:{la=134;break a}case 9:{s=c[w>>2]|0;s=(nb[c[v>>2]&63](e,(c[ja>>2]|0)+s|0,k+(0-s)|0)|0)&255;a[ka>>0]=s;do if(s<<24>>24){f=c[$>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,ka,1);break}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[w>>2]|0;j=WV(x,e,(c[ja>>2]|0)+j|0,(c[ea>>2]|0)+(0-j)|0)|0;if(!j){f=1;la=56;break a}k=YV(b,_,j,0)|0;c[z>>2]=c[y>>2];if((a[A>>0]|0)!=0?(a[H>>0]|0)==0:0){if(!k){f=c[G>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,j,0);break}if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}}else{if(!k){f=11;la=56;break a}if(!(a[k+34>>0]|0)){f=24;la=56;break a}}f=k+32|0;if(a[f>>0]|0){f=12;la=56;break a}if(c[k+28>>2]|0){f=15;la=56;break a}if(!(c[k+4>>2]|0)){if(!(c[B>>2]|0)){if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}a[f>>0]=1;j=tW(b)|0;a[f>>0]=0;if(!j){f=1;la=56;break a}if(!(pb[c[B>>2]&127](c[C>>2]|0,j,c[k+20>>2]|0,c[k+16>>2]|0,c[k+24>>2]|0)|0)){f=21;la=56;break a}c[E>>2]=c[D>>2];break}if(a[F>>0]|0){f=lW(b,k,0)|0;if(!f)break;else{la=58;break a}}f=c[G>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[k>>2]|0,0);break b}while(0);break}case 1:case 2:{f=c[I>>2]|0;if(!f){f=kb[c[J>>2]&63](48)|0;if(!f){f=1;la=75;break a}j=kb[c[J>>2]&63](32)|0;c[f+36>>2]=j;if(!j){la=63;break a}c[f+40>>2]=j+32}else c[I>>2]=c[f>>2];o=f+44|0;c[o>>2]=0;c[f>>2]=c[K>>2];c[K>>2]=f;s=f+12|0;c[f+16>>2]=0;c[f+20>>2]=0;r=(c[ja>>2]|0)+(c[w>>2]|0)|0;q=f+4|0;c[q>>2]=r;p=f+8|0;c[p>>2]=lb[c[L>>2]&127](e,r)|0;c[ia>>2]=(c[ia>>2]|0)+1;q=c[q>>2]|0;p=q+(c[p>>2]|0)|0;c[Z>>2]=q;q=f+36|0;c[ka>>2]=c[q>>2];r=f+40|0;j=c[r>>2]|0;while(1){na=pb[c[aa>>2]&127](e,Z,p,ka,j+-1|0)|0;j=c[ka>>2]|0;m=c[q>>2]|0;k=m;n=j-k|0;if((na|0)==1?1:(c[Z>>2]|0)>>>0>=p>>>0)break;k=(c[r>>2]|0)-k<<1;j=lb[c[M>>2]&127](m,k)|0;if(!j){la=69;break a}c[q>>2]=j;na=j+k|0;c[r>>2]=na;c[ka>>2]=j+n;j=na}c[f+24>>2]=n;c[s>>2]=k;a[j>>0]=0;f=uW(b,e,c[ja>>2]|0,s,o)|0;if(f|0){la=75;break a}f=c[N>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[s>>2]|0,c[P>>2]|0);XV(O);break}case 3:case 4:{na=(c[ja>>2]|0)+(c[w>>2]|0)|0;c[ka>>2]=0;na=WV(O,e,na,na+(lb[c[L>>2]&127](e,na)|0)|0)|0;c[Z>>2]=na;if(!na){f=1;la=89;break a}c[D>>2]=c[E>>2];f=uW(b,e,c[ja>>2]|0,Z,ka)|0;if(f|0){la=79;break a}c[D>>2]=c[E>>2];f=c[N>>2]|0;if(!f)j=1;else{vb[f&127](c[ha>>2]|0,c[Z>>2]|0,c[P>>2]|0);j=0}f=c[Q>>2]|0;if(!f){if(j|0?c[ga>>2]|0:0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{if(c[N>>2]|0){c[fa>>2]=c[Y>>2];f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[Z>>2]|0)}XV(O);vW(b,c[ka>>2]|0);if((c[ia>>2]|0)==0?(c[u>>2]&-2|0)!=2:0){la=92;break a}break}case 5:{if((c[ia>>2]|0)==(d|0)){f=13;break a}n=c[K>>2]|0;c[K>>2]=c[n>>2];c[n>>2]=c[I>>2];c[I>>2]=n;f=(c[ja>>2]|0)+(c[w>>2]<<1)|0;j=lb[c[L>>2]&127](e,f)|0;if((j|0)!=(c[n+8>>2]|0)){la=96;break a}if(L0(c[n+4>>2]|0,f,j)|0){la=96;break a}c[ia>>2]=(c[ia>>2]|0)+-1;f=c[Q>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[n+16>>2]|0;m=n+12|0;if((j|0)!=0&(a[R>>0]|0)!=0){f=(c[m>>2]|0)+(c[n+28>>2]|0)|0;while(1){k=a[j>>0]|0;if(!(k<<24>>24))break;a[f>>0]=k;f=f+1|0;j=j+1|0}j=c[n+20>>2]|0;c:do if((j|0)!=0&(a[S>>0]|0)!=0){a[f>>0]=a[T>>0]|0;while(1){f=f+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break c;a[f>>0]=k;j=j+1|0}}while(0);a[f>>0]=0;f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[m>>2]|0)}k=n+44|0;while(1){m=c[k>>2]|0;if(!m)break;f=c[U>>2]|0;if(!f){f=m;j=m}else{ub[f&63](c[ha>>2]|0,c[c[m>>2]>>2]|0);f=m;j=c[k>>2]|0}c[k>>2]=c[j+4>>2];c[m+4>>2]=c[V>>2];c[V>>2]=m;c[(c[f>>2]|0)+4>>2]=c[m+8>>2]}if(!(c[ia>>2]|0)){la=117;break a}break}case 10:{f=lb[c[W>>2]&127](e,c[ja>>2]|0)|0;if((f|0)<0){f=14;break a}j=c[$>>2]|0;if(j|0){s=c[ha>>2]|0;na=gX(f,ka)|0;vb[j&127](s,ka,na);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}case 7:{f=c[$>>2]|0;if(f|0){a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k);break}case 8:{f=c[X>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}else tb[f&127](c[ha>>2]|0);f=xW(b,e,ea,g,h,i)|0;if(f|0)break a;if(!(c[ea>>2]|0)){la=133;break a}break}case 6:{j=c[$>>2]|0;if(!j){if(!(c[ga>>2]|0))break b;hW(b,e,c[ja>>2]|0,k);break b}if(!(a[ba>>0]|0))f=k;else{na=c[ja>>2]|0;vb[j&127](c[ha>>2]|0,na,f-na|0);break b}while(1){c[ka>>2]=c[ca>>2];na=pb[c[aa>>2]&127](e,ja,f,ka,c[da>>2]|0)|0;c[Y>>2]=c[ja>>2];s=c[ca>>2]|0;vb[j&127](c[ha>>2]|0,s,(c[ka>>2]|0)-s|0);if(na>>>0<2)break;c[fa>>2]=c[ja>>2];f=c[ea>>2]|0}break}case 11:{if(!(nW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}case 13:{if(!(oW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}default:if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}while(0);na=c[ea>>2]|0;c[ja>>2]=na;c[fa>>2]=na;switch(c[u>>2]|0){case 2:{f=35;break a}case 3:{la=160;break a}default:{}}}switch(la|0){case 6:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}c[Y>>2]=g;f=c[$>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else{a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1)}if(d)if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0}else f=13;else f=3;break}case 15:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}if((d|0)>0)if((c[ia>>2]|0)==(d|0)){c[h>>2]=c[ja>>2];f=0}else f=13;else f=3;break}case 20:{c[fa>>2]=f;f=4;break}case 21:{if(!(i<<24>>24))f=5;else{c[h>>2]=c[ja>>2];f=0}break}case 23:{if(!(i<<24>>24))f=6;else{c[h>>2]=c[ja>>2];f=0}break}case 56:break;case 58:break;case 63:{tb[c[b+20>>2]&127](f);f=1;la=75;break}case 69:{f=1;la=75;break}case 79:{vW(b,c[ka>>2]|0);la=89;break}case 92:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 96:{c[fa>>2]=f;f=7;break}case 117:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 133:{c[b+276>>2]=61;f=0;break}case 134:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}f=c[$>>2]|0;do if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else if(!(a[ba>>0]|0)){c[ka>>2]=c[ca>>2];pb[c[aa>>2]&127](e,ja,g,ka,c[da>>2]|0)|0;na=c[ca>>2]|0;vb[c[$>>2]&127](c[ha>>2]|0,na,(c[ka>>2]|0)-na|0);break}else{na=c[ja>>2]|0;vb[f&127](c[ha>>2]|0,na,g-na|0);break}while(0);if(!d){c[fa>>2]=g;f=3;break}if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0;break}else{c[fa>>2]=g;f=13;break}}case 160:{c[h>>2]=c[ea>>2];f=0;break}}l=ma;return f|0}function sW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+16|0;p=q;k=b+296|0;m=c[k>>2]|0;do if(m){n=c[m+12>>2]|0;h=n+4|0;j=c[h>>2]|0;i=n+12|0;g=j+(c[i>>2]|0)|0;j=j+(c[n+8>>2]|0)|0;c[p>>2]=g;o=n+33|0;if(!(a[o>>0]|0))g=rW(b,c[m+16>>2]|0,c[b+224>>2]|0,g,j,p,0)|0;else{s=b+224|0;r=c[s>>2]|0;r=ob[c[r>>2]&127](r,g,j,p)|0;g=UV(b,c[s>>2]|0,g,j,r,c[p>>2]|0,p,0)|0}if(!g){g=c[p>>2]|0;if((j|0)!=(g|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=g-(c[h>>2]|0);g=0;break}a[n+32>>0]=0;s=m+8|0;c[k>>2]=c[s>>2];g=b+300|0;c[s>>2]=c[g>>2];c[g>>2]=m;g=b+276|0;if(!(a[o>>0]|0)){c[g>>2]=58;g=rW(b,(c[b+472>>2]|0)!=0&1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;break}else{c[g>>2]=57;s=b+144|0;g=c[s>>2]|0;g=ob[c[g>>2]&127](g,d,e,p)|0;g=UV(b,c[s>>2]|0,d,e,g,c[p>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;break}}}else g=23;while(0);l=q;return g|0}function tW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;n=q;m=c[b+352>>2]|0;h=m+156|0;o=b+412|0;p=b+424|0;a:do if(!(c[h>>2]|0)){d=0;i=b+420|0;k=b+468|0;j=12}else{d=c[p>>2]|0;i=b+420|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;g=b+468|0;e=(c[(c[h>>2]|0)+20>>2]|0)+(((a[g>>0]|0)!=0)<<31>>31)|0;f=0;while(1){if((f|0)>=(e|0)){d=1;k=g;j=12;break a}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[p>>2]|0}k=a[(c[(c[h>>2]|0)+16>>2]|0)+f>>0]|0;c[p>>2]=d+1;a[d>>0]=k;f=f+1|0}}while(0);b:do if((j|0)==12){NV(n,m+60|0);c:while(1){do{e=OV(n)|0;if(!e)break c;h=e+4|0}while(!(c[h>>2]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}g=c[e>>2]|0;while(1){e=a[g>>0]|0;d=c[p>>2]|0;f=(d|0)==(c[i>>2]|0);if(!(e<<24>>24))break;if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[g>>0]|0}c[p>>2]=d+1;a[d>>0]=e;g=g+1|0}if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;f=(c[(c[h>>2]|0)+20>>2]|0)+(((a[k>>0]|0)!=0)<<31>>31)|0;e=0;while(1){if((e|0)>=(f|0)){d=1;continue c}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}j=a[(c[(c[h>>2]|0)+16>>2]|0)+e>>0]|0;c[p>>2]=d+1;a[d>>0]=j;e=e+1|0}}NV(n,m);d:while(1){do{e=OV(n)|0;if(!e)break d}while(!(a[e+32>>0]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}f=c[e>>2]|0;while(1){e=a[f>>0]|0;if(!(e<<24>>24)){d=1;continue d}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[f>>0]|0}c[p>>2]=d+1;a[d>>0]=e;f=f+1|0}}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=0;d=c[b+428>>2]|0}while(0);l=q;return d|0}function uW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=l;l=l+80|0;K=O+16|0;L=O;M=c[b+352>>2]|0;k=M+20|0;i=YV(b,k,c[g>>2]|0,0)|0;if(!i){i=BW(M+80|0,c[g>>2]|0)|0;if((i|0)!=0?(j=YV(b,k,i,24)|0,(j|0)!=0):0)if((a[b+232>>0]|0)!=0?(CW(b,j)|0)==0:0)i=1;else A=6;else i=1}else{j=i;A=6}a:do if((A|0)==6){x=c[j+12>>2]|0;k=e+36|0;m=b+376|0;t=b+388|0;u=ob[c[k>>2]&127](e,f,c[m>>2]|0,c[t>>2]|0)|0;i=u+x|0;n=c[m>>2]|0;if((i|0)>(n|0)){i=i+16|0;c[m>>2]=i;i=lb[c[b+16>>2]&127](c[t>>2]|0,i<<4)|0;if(!i){c[m>>2]=n;i=1;break}c[t>>2]=i;if((u|0)>(n|0))ob[c[k>>2]&127](e,f,u,i)|0}J=c[t>>2]|0;r=e+28|0;H=b+412|0;I=b+428|0;w=j+20|0;q=b+424|0;s=0;p=0;k=0;while(1){if((p|0)>=(u|0))break;o=c[(c[t>>2]|0)+(p<<4)>>2]|0;o=aW(b,e,o,o+(lb[c[r>>2]&127](e,o)|0)|0)|0;if(!o){i=1;break a}i=(c[o>>2]|0)+-1|0;if(a[i>>0]|0){A=15;break}a[i>>0]=1;f=s+1|0;c[J+(s<<2)>>2]=c[o>>2];n=c[t>>2]|0;if(a[n+(p<<4)+12>>0]|0){G=WV(H,e,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0)|0;c[J+(f<<2)>>2]=G;if(!G){i=1;break a}}else{b:do if(!(a[o+8>>0]|0))i=1;else{i=0;while(1){if((i|0)>=(x|0)){i=1;break b}m=c[w>>2]|0;if((o|0)==(c[m+(i*12|0)>>2]|0))break;i=i+1|0}i=a[m+(i*12|0)+4>>0]|0}while(0);i=fW(b,e,i,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0,H)|0;if(i|0)break a;c[J+(f<<2)>>2]=c[I>>2]}c[I>>2]=c[q>>2];i=c[o+4>>2]|0;do if(i)if(a[o+9>>0]|0){i=DW(b,i,o,c[J+(f<<2)>>2]|0,h)|0;if(!i){i=s;break}else break a}else{a[(c[o>>2]|0)+-1>>0]=2;k=k+1|0;i=s+2|0;break}else i=s+2|0;while(0);s=i;p=p+1|0}if((A|0)==15){if((c[b+144>>2]|0)!=(e|0)){i=8;break}c[b+284>>2]=c[(c[t>>2]|0)+(p<<4)>>2];i=8;break}c[b+380>>2]=s;i=c[j+8>>2]|0;c:do if((i|0)!=0?(v=c[i>>2]|0,(a[v+-1>>0]|0)!=0):0){i=0;while(1){if((i|0)>=(s|0)){f=0;p=k;G=s;break c}if((c[J+(i<<2)>>2]|0)==(v|0)){A=37;break c}i=i+2|0}}else{i=-1;A=37}while(0);if((A|0)==37){c[b+384>>2]=i;f=0;p=k;G=s}while(1){if((f|0)>=(x|0))break;i=c[w>>2]|0;n=i+(f*12|0)|0;k=c[n>>2]|0;m=(c[k>>2]|0)+-1|0;d:do if((a[m>>0]|0)==0?(y=i+(f*12|0)+8|0,z=c[y>>2]|0,(z|0)!=0):0){i=c[k+4>>2]|0;do if(i)if(a[k+9>>0]|0){i=DW(b,i,k,z,h)|0;if(!i){i=p;k=G;break d}else break a}else{a[m>>0]=2;i=p+1|0;break}else{a[m>>0]=1;i=p}while(0);c[J+(G<<2)>>2]=c[c[n>>2]>>2];c[J+(G+1<<2)>>2]=c[y>>2];k=G+2|0}else{i=p;k=G}while(0);f=f+1|0;p=i;G=k}c[J+(G<<2)>>2]=0;e:do if(!p)i=0;else{o=b+396|0;n=c[o>>2]|0;F=b+400|0;f=a[F>>0]|0;i=f&255;do if(!(p<<1>>i)){i=1<<i;m=b+392|0;if(!n){k=i;A=55}else{k=i;i=n}}else{i=f;do{E=i;i=i+1<<24>>24}while((p>>(E&255)|0)!=0);i=(i&255)>3?i:3;a[F>>0]=i;i=i&255;m=b+392|0;k=lb[c[b+16>>2]&127](c[m>>2]|0,12<<i)|0;if(!k){a[F>>0]=f;i=1;break a}else{c[m>>2]=k;k=1<<i;A=55;break}}while(0);f:do if((A|0)==55){i=k;while(1){if(!i){i=-1;break f}E=i+-1|0;c[(c[m>>2]|0)+(E*12|0)>>2]=-1;i=E}}while(0);E=i+-1|0;c[o>>2]=E;w=M+40|0;x=b+424|0;y=b+420|0;z=k+-1|0;A=0-k|0;B=z>>>2;C=b+233|0;D=b+468|0;i=0;v=p;g:while(1){while(1){if((i|0)>=(G|0))break e;e=J+(i<<2)|0;n=c[e>>2]|0;f=n+-1|0;if((a[f>>0]|0)==2)break;a[f>>0]=0;i=i+2|0}EW(b,L);FW(K,L);a[f>>0]=0;f=YV(b,w,n,0)|0;if(!f){i=1;break}f=c[f+4>>2]|0;if(!f){i=1;break}u=c[f+4>>2]|0;if(!u){i=27;break}q=u+20|0;r=u+16|0;p=0;while(1){f=c[q>>2]|0;o=c[r>>2]|0;if((p|0)>=(f|0))break;o=a[o+p>>0]|0;f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}c[x>>2]=f+1;a[f>>0]=o;p=p+1|0}GW(K,o,f);do{t=n;n=n+1|0}while((a[t>>0]|0)!=58);GW(K,n,HW(n)|0);while(1){f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}t=a[n>>0]|0;c[x>>2]=f+1;a[f>>0]=t;if(!(a[n>>0]|0))break;else n=n+1|0}t=IW(K)|0;q=c[m>>2]|0;r=t&A;n=0;s=z&t;while(1){if((c[q+(s*12|0)>>2]|0)!=(E|0))break;if((c[q+(s*12|0)+4>>2]|0)==(t|0)){f=c[q+(s*12|0)+8>>2]|0;o=c[I>>2]|0;while(1){P=a[o>>0]|0;p=P<<24>>24==0;if(p|P<<24>>24!=(a[f>>0]|0))break;f=f+1|0;o=o+1|0}if(p){i=8;break g}}if(!(n<<24>>24))n=(r>>>((d[F>>0]|0)+-1|0)&B|1)&255;P=n&255;s=s+((s|0)<(P|0)?k:0)-P|0}if(a[C>>0]|0){a[(c[x>>2]|0)+-1>>0]=a[D>>0]|0;f=c[c[u>>2]>>2]|0;while(1){n=c[x>>2]|0;if((n|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}n=c[x>>2]|0}P=a[f>>0]|0;c[x>>2]=n+1;a[n>>0]=P;if(!(a[f>>0]|0))break;else f=f+1|0}}P=c[I>>2]|0;c[I>>2]=c[x>>2];c[e>>2]=P;c[(c[m>>2]|0)+(s*12|0)>>2]=E;c[(c[m>>2]|0)+(s*12|0)+4>>2]=t;c[(c[m>>2]|0)+(s*12|0)+8>>2]=P;v=v+-1|0;i=i+2|0;if(!v)break e}break a}while(0);while(1){if((i|0)>=(G|0)){i=h;break}a[(c[J+(i<<2)>>2]|0)+-1>>0]=0;i=i+2|0}while(1){i=c[i>>2]|0;if(!i)break;a[(c[c[i+12>>2]>>2]|0)+-1>>0]=0;i=i+4|0}if(!(a[b+232>>0]|0))i=0;else{i=c[j+4>>2]|0;if(!i){i=c[M+156>>2]|0;if(!i){i=0;break}k=c[g>>2]|0}else{i=c[i+4>>2]|0;if(!i){i=27;break}j=c[g>>2]|0;while(1){k=j+1|0;if((a[j>>0]|0)==58)break;else j=k}}if((a[b+233>>0]|0)!=0?(N=c[c[i>>2]>>2]|0,(N|0)!=0):0){j=0;while(1){m=j+1|0;if(!(a[N+j>>0]|0))break;else j=m}}else m=0;c[g+4>>2]=k;p=i+20|0;c[g+16>>2]=c[p>>2];c[g+8>>2]=c[c[i>>2]>>2];c[g+20>>2]=m;q=0;while(1){r=q+1|0;if(!(a[k+q>>0]|0))break;else q=r}j=c[p>>2]|0;n=r+m+j|0;f=i+24|0;if((n|0)>(c[f>>2]|0)){j=n+24|0;o=kb[c[b+12>>2]&63](j)|0;if(!o){i=1;break}c[f>>2]=j;f=i+16|0;F3(o|0,c[f>>2]|0,c[p>>2]|0)|0;j=b+360|0;while(1){j=c[j>>2]|0;if(!j)break;n=j+12|0;if((c[n>>2]|0)==(c[f>>2]|0))c[n>>2]=o}tb[c[b+20>>2]&127](c[f>>2]|0);c[f>>2]=o;n=o;j=c[p>>2]|0}else{n=i+16|0;f=n;n=c[n>>2]|0}j=n+j|0;F3(j|0,k|0,r|0)|0;if(m|0){P=j+q|0;a[P>>0]=a[b+468>>0]|0;F3(P+1|0,c[c[i>>2]>>2]|0,m|0)|0}c[g>>2]=c[f>>2];i=0}}while(0);l=O;return i|0}function vW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+104|0;f=a+372|0;d=a+4|0;while(1){if(!b)break;a=c[e>>2]|0;if(!a)a=b;else{ub[a&63](c[d>>2]|0,c[c[b>>2]>>2]|0);a=b}h=b+4|0;g=c[h>>2]|0;c[h>>2]=c[f>>2];c[f>>2]=b;c[(c[a>>2]|0)+4>>2]=c[b+8>>2];b=g}return}function wW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;j=q;c[b+276>>2]=62;k=b+284|0;c[k>>2]=d;m=b+144|0;n=b+288|0;o=b+80|0;i=b+476|0;g=d;a:while(1){c[j>>2]=0;r=c[m>>2]|0;r=ob[c[r>>2]&127](r,g,e,j)|0;d=c[j>>2]|0;c[n>>2]=d;h=d;switch(r|0){case -15:{p=3;break a}case -4:{p=7;break a}case 0:{p=12;break a}case -1:{p=13;break a}case -2:{p=15;break a}case 15:{if(c[o>>2]|0)hW(b,c[m>>2]|0,g,h);break}case 11:{if(!(nW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}case 13:{if(!(oW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}default:{d=9;break a}}d=c[j>>2]|0;c[k>>2]=d;switch(c[i>>2]|0){case 2:{d=35;break a}case 3:{p=18;break a}default:{}}g=d}do if((p|0)==3){if(c[o>>2]|0){hW(b,c[m>>2]|0,g,h);if((c[i>>2]|0)==2){d=35;break}d=c[j>>2]|0}c[f>>2]=d;d=0}else if((p|0)==7){c[f>>2]=g;d=0}else if((p|0)==12){c[k>>2]=d;d=4}else if((p|0)==13)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=5;else if((p|0)==15)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=6;else if((p|0)==18){c[f>>2]=d;d=0}while(0);l=q;return d|0}function xW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+16|0;y=B+8|0;z=B+4|0;x=B;i=c[e>>2]|0;c[y>>2]=i;if((c[b+144>>2]|0)==(d|0)){s=b+284|0;c[s>>2]=i;t=b+288|0}else{t=c[b+296>>2]|0;s=t;t=t+4|0}c[s>>2]=i;c[e>>2]=0;k=d+8|0;m=b+60|0;u=b+80|0;v=b+4|0;w=b+476|0;n=d+68|0;o=b+44|0;p=d+56|0;q=b+48|0;a:while(1){j=ob[c[k>>2]&127](d,c[y>>2]|0,f,z)|0;i=c[z>>2]|0;c[t>>2]=i;r=i;b:do switch(j|0){case 40:{A=6;break a}case 0:{A=23;break a}case -2:{A=24;break a}case -4:case -1:{A=26;break a}case 7:{i=c[m>>2]|0;if(i|0){a[x>>0]=10;vb[i&127](c[v>>2]|0,x,1);break b}if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r);break}case 6:{j=c[m>>2]|0;if(!j){if(!(c[u>>2]|0))break b;hW(b,d,c[y>>2]|0,r);break b}if(!(a[n>>0]|0))i=r;else{r=c[y>>2]|0;vb[j&127](c[v>>2]|0,r,i-r|0);break b}while(1){c[x>>2]=c[o>>2];r=pb[c[p>>2]&127](d,y,i,x,c[q>>2]|0)|0;c[t>>2]=c[z>>2];i=c[o>>2]|0;vb[j&127](c[v>>2]|0,i,(c[x>>2]|0)-i|0);if(r>>>0<2)break;c[s>>2]=c[y>>2];i=c[z>>2]|0}break}default:{A=28;break a}}while(0);r=c[z>>2]|0;c[y>>2]=r;c[s>>2]=r;switch(c[w>>2]|0){case 3:{A=30;break a}case 2:{i=35;break a}default:{}}}if((A|0)==6){i=c[b+76>>2]|0;if(!i){if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r)}else tb[i&127](c[v>>2]|0);i=c[z>>2]|0;c[e>>2]=i;c[g>>2]=i;i=(c[w>>2]|0)==2?35:0}else if((A|0)==23){c[s>>2]=i;i=4}else if((A|0)==24)if(!(h<<24>>24))i=6;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==26)if(!(h<<24>>24))i=20;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==28){c[s>>2]=i;i=23}else if((A|0)==30){c[g>>2]=c[z>>2];i=0}l=B;return i|0}function yW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=xW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;do if(!((d|0)!=0|(g|0)==0)){d=b+276|0;if(!(c[b+472>>2]|0)){c[d>>2]=58;d=_V(b,g,e,f)|0;break}else{c[d>>2]=63;d=zW(b,g,e,f)|0;break}}while(0);l=h;return d|0}function zW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function AW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;a=a+360|0;while(1){a=c[a>>2]|0;if(!a){a=1;break}i=(c[a+24>>2]|0)+1|0;j=a+36|0;f=c[j>>2]|0;e=f+i|0;l=a+4|0;d=c[l>>2]|0;if((d|0)==(e|0)){a=1;break}k=a+8|0;b=c[k>>2]|0;g=b+i|0;h=a+40|0;if((g|0)>((c[h>>2]|0)-f|0)){e=lb[c[m>>2]&127](f,g)|0;if(!e){a=0;break}b=a+12|0;f=c[j>>2]|0;if((c[b>>2]|0)==(f|0))c[b>>2]=e;b=a+16|0;d=c[b>>2]|0;if(d|0)c[b>>2]=e+(d-f);c[j>>2]=e;c[h>>2]=e+g;e=e+i|0;d=c[l>>2]|0;b=c[k>>2]|0}F3(e|0,d|0,b|0)|0;c[l>>2]=e}return a|0}function BW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=b+12|0;g=b+8|0;while(1){e=c[f>>2]|0;if((e|0)==(c[g>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}e=c[f>>2]|0}i=a[d>>0]|0;c[f>>2]=e+1;a[e>>0]=i;if(!(a[d>>0]|0)){h=6;break}else d=d+1|0}if((h|0)==6){i=b+16|0;d=c[i>>2]|0;c[i>>2]=c[f>>2]}return d|0}function CW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+352>>2]|0;j=n+80|0;k=n+92|0;l=n+88|0;m=n+60|0;n=n+96|0;i=d+4|0;h=c[d>>2]|0;a:while(1){switch(a[h>>0]|0){case 0:{e=1;break a}case 58:{g=c[d>>2]|0;while(1){e=c[k>>2]|0;f=(e|0)==(c[l>>2]|0);if((g|0)==(h|0))break;if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}f=a[g>>0]|0;c[k>>2]=e+1;a[e>>0]=f;g=g+1|0}if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}c[k>>2]=e+1;a[e>>0]=0;e=YV(b,m,c[n>>2]|0,8)|0;if(!e){e=0;break a}f=c[n>>2]|0;if((c[e>>2]|0)==(f|0))c[n>>2]=c[k>>2];else c[k>>2]=f;c[i>>2]=e;break}default:{}}h=h+1|0}return e|0}function DW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=a[f>>0]|0;i=c[d>>2]|0;h=(i|0)==0;do if(!(k<<24>>24))if(h){m=0;j=11}else h=28;else if(((!h?(a[i>>0]|0)==120:0)?(a[i+1>>0]|0)==109:0)?(a[i+2>>0]|0)==108:0){h=a[i+3>>0]|0;if((h<<24>>24==110?(a[i+4>>0]|0)==115:0)?(a[i+5>>0]|0)==0:0){h=39;break}m=h<<24>>24==0&1;j=11}else{m=0;j=11}while(0);a:do if((j|0)==11){l=m<<24>>24!=0;h=1;i=1;n=0;while(1){j=i<<24>>24!=0;if(!(k<<24>>24))break;do if(j){if((n|0)<=36?k<<24>>24==(a[139175+n>>0]|0):0)break;i=0}else i=0;while(0);do if(!(l|h<<24>>24==0)){if((n|0)<=29?k<<24>>24==(a[139212+n>>0]|0):0)break;h=0}while(0);k=n+1|0;n=k;k=a[f+k>>0]|0}if((m&255|0)!=(j&(n|0)==36&1|0)){h=l?38:40;break}if(!(h<<24>>24!=0&(n|0)==29)){o=b+468|0;n=n+((a[o>>0]|0)!=0&1)|0;h=b+372|0;j=c[h>>2]|0;do if(!j){h=b+12|0;i=kb[c[h>>2]&63](28)|0;if(!i){h=1;break a}j=n+24|0;m=kb[c[h>>2]&63](j)|0;c[i+16>>2]=m;if(!m){tb[c[b+20>>2]&127](i);h=1;break a}else{c[i+24>>2]=j;j=i;break}}else{i=j+24|0;if((n|0)>(c[i>>2]|0)){k=j+16|0;l=n+24|0;m=lb[c[b+16>>2]&127](c[k>>2]|0,l)|0;if(!m){h=1;break a}c[k>>2]=m;c[i>>2]=l}c[h>>2]=c[j+4>>2]}while(0);c[j+20>>2]=n;i=j+16|0;F3(c[i>>2]|0,f|0,n|0)|0;h=a[o>>0]|0;if(h<<24>>24)a[(c[i>>2]|0)+(n+-1)>>0]=h;c[j>>2]=d;c[j+12>>2]=e;i=d+4|0;c[j+8>>2]=c[i>>2];if((a[f>>0]|0)==0?((c[b+352>>2]|0)+152|0)==(d|0):0)h=0;else h=j;c[i>>2]=h;c[j+4>>2]=c[g>>2];c[g>>2]=j;if((e|0)!=0?(p=c[b+100>>2]|0,(p|0)!=0):0){vb[p&127](c[b+4>>2]|0,c[d>>2]|0,c[i>>2]|0?f:0);h=0}else h=0}else h=40}while(0);return h|0}function EW(a,b){a=a|0;b=b|0;var d=0;d=b;c[d>>2]=0;c[d+4>>2]=0;b=b+8|0;c[b>>2]=KW(a)|0;c[b+4>>2]=0;return}function FW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=b;g=c[d+4>>2]^1936682341;e=a;c[e>>2]=c[d>>2]^1886610805;c[e+4>>2]=g;e=b+8|0;g=e;d=c[g+4>>2]^1685025377;f=a+8|0;c[f>>2]=c[g>>2]^1852075885;c[f+4>>2]=d;f=b;b=c[f+4>>2]^1819895653;d=a+16|0;c[d>>2]=c[f>>2]^1852142177;c[d+4>>2]=b;d=c[e+4>>2]^1952801890;b=a+24|0;c[b>>2]=c[e>>2]^2037671283;c[b+4>>2]=d;c[a+40>>2]=a+32;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;return}function GW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;n=e+f|0;o=b+40|0;p=b+40|0;q=b+32|0;r=b+33|0;s=b+34|0;t=b+35|0;h=b+36|0;i=b+37|0;j=b+38|0;k=b+39|0;l=b+24|0;m=b+48|0;f=e;do{while(1){g=c[o>>2]|0;if(f>>>0>=n>>>0){e=0;break}if(g>>>0>=p>>>0){e=1;break}e=a[f>>0]|0;c[o>>2]=g+1;a[g>>0]=e;f=f+1|0}if(g>>>0<p>>>0)break;A=d[q>>0]|0;B=A3(d[r>>0]|0|0,0,8)|0;g=z;y=A3(d[s>>0]|0|0,0,16)|0;g=g|z;w=A3(d[t>>0]|0|0,0,24)|0;g=g|z|(d[h>>0]|0);u=A3(d[i>>0]|0|0,0,40)|0;g=g|z;x=A3(d[j>>0]|0|0,0,48)|0;g=g|z;v=A3(d[k>>0]|0|0,0,56)|0;v=B|A|y|w|u|x|v;g=g|z;x=l;u=g^c[x+4>>2];w=l;c[w>>2]=v^c[x>>2];c[w+4>>2]=u;JW(b,2);w=b;g=c[w+4>>2]^g;u=b;c[u>>2]=c[w>>2]^v;c[u+4>>2]=g;c[o>>2]=q;u=m;u=s3(c[u>>2]|0,c[u+4>>2]|0,8,0)|0;g=m;c[g>>2]=u;c[g+4>>2]=z}while(e);return}function HW(b){b=b|0;var c=0;c=0;while(1){if(!(a[b>>0]|0))break;c=c+1|0;b=b+1|0}return c|0}function IW(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;f=a+32|0;h=(c[a+40>>2]|0)-f|0;e=a+48|0;e=s3(c[e>>2]|0,c[e+4>>2]|0,h|0,0)|0;e=A3(e|0,z|0,56)|0;b=z;switch(h<<24>>24|0){case 7:{e=A3(d[a+38>>0]|0|0,0,48)|0|e;b=z|b;g=3;break}case 6:{g=3;break}case 5:{g=4;break}case 4:{g=5;break}case 3:{g=6;break}case 2:{g=7;break}case 1:{g=8;break}default:{}}if((g|0)==3){h=A3(d[a+37>>0]|0|0,0,40)|0;e=h|e;b=z|b;g=4}if((g|0)==4){b=d[a+36>>0]|0|b;g=5}if((g|0)==5){h=A3(d[a+35>>0]|0|0,0,24)|0;e=h|e;b=z|b;g=6}if((g|0)==6){h=A3(d[a+34>>0]|0|0,0,16)|0;e=h|e;b=z|b;g=7}if((g|0)==7){h=A3(d[a+33>>0]|0|0,0,8)|0;b=z|b;e=h|e;g=8}if((g|0)==8)e=e|(d[f>>0]|0);h=a+24|0;i=h;g=c[i+4>>2]^b;f=h;c[f>>2]=c[i>>2]^e;c[f+4>>2]=g;JW(a,2);f=a;b=c[f+4>>2]^b;g=a;c[g>>2]=c[f>>2]^e;c[g+4>>2]=b;g=a+16|0;b=g;e=c[b+4>>2]|0;f=g;c[f>>2]=c[b>>2]^255;c[f+4>>2]=e;JW(a,4);f=a;a=a+8|0;z=c[a+4>>2]^c[f+4>>2]^c[g+4>>2]^c[h+4>>2];return c[a>>2]^c[f>>2]^c[g>>2]^c[h>>2]|0}function JW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+8|0;f=a+24|0;g=a+16|0;d=0;while(1){if((d|0)>=(b|0))break;h=e;n=c[h>>2]|0;h=c[h+4>>2]|0;o=a;o=s3(c[o>>2]|0,c[o+4>>2]|0,n|0,h|0)|0;k=z;m=A3(n|0,h|0,13)|0;l=z;h=z3(n|0,h|0,51)|0;h=(m|h)^o;l=(l|z)^k;m=f;n=c[m>>2]|0;m=c[m+4>>2]|0;j=g;j=s3(c[j>>2]|0,c[j+4>>2]|0,n|0,m|0)|0;i=z;q=A3(n|0,m|0,16)|0;p=z;m=z3(n|0,m|0,48)|0;m=(q|m)^j;p=(p|z)^i;o=s3(k|0,o|0,m|0,p|0)|0;k=z;q=a;c[q>>2]=o;c[q+4>>2]=k;q=A3(m|0,p|0,21)|0;n=z;p=z3(m|0,p|0,43)|0;m=f;c[m>>2]=(q|p)^o;c[m+4>>2]=(n|z)^k;i=s3(j|0,i|0,h|0,l|0)|0;j=z;m=A3(h|0,l|0,17)|0;k=z;l=z3(h|0,l|0,47)|0;h=e;c[h>>2]=(m|l)^i;c[h+4>>2]=(k|z)^j;h=g;c[h>>2]=j;c[h+4>>2]=i;d=d+1|0}return}function KW(a){a=a|0;var b=0;while(1){b=c[a+472>>2]|0;if(!b)break;else a=b}return c[a+492>>2]|0}function LW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=l;l=l+16|0;I=L;J=L+4|0;K=c[b+352>>2]|0;o=d+16|0;p=d+40|0;q=b+144|0;r=b+284|0;s=e<<24>>24==0;t=h+12|0;v=h+16|0;w=h+8|0;x=d+44|0;y=d+64|0;z=b+436|0;A=b+452|0;B=b+448|0;C=(K+80|0)==(h|0);D=b+268|0;E=K+130|0;F=K+129|0;G=b+296|0;H=b+224|0;i=0;a:while(1){b:while(1){switch(ob[c[o>>2]&127](d,f,g,I)|0){case -4:{i=0;n=61;break a}case 0:{n=4;break a}case -1:{n=6;break a}case 6:{n=21;break b}case -3:{n=22;break b}case 7:case 39:{n=23;break b}case 10:{j=lb[c[p>>2]&127](d,f)|0;c:do if((j|0)<0)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;j=1;i=14}else{j=1;i=14}else{if(s&(j|0)==32){k=c[t>>2]|0;if((c[v>>2]|0)==(k|0)){j=4;break}if((a[k+-1>>0]|0)==32){j=4;break}}m=gX(j,J)|0;k=0;while(1){if((k|0)>=(m|0)){j=0;break c}j=c[t>>2]|0;if((j|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){j=1;i=1;break c}j=c[t>>2]|0}M=a[J+k>>0]|0;c[t>>2]=j+1;a[j>>0]=M;k=k+1|0}}while(0);switch(j&7){case 4:case 0:break b;default:{}}break}case 9:{j=c[y>>2]|0;j=(nb[c[x>>2]&63](d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0)&255;if(j<<24>>24){n=31;break b}j=c[y>>2]|0;j=WV(z,d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0;if(!j){i=1;n=61;break a}m=YV(b,K,j,0)|0;c[B>>2]=c[A>>2];do if(C){if(!(c[D>>2]|0))if(!m)break b;else break;if(!(a[E>>0]|0)){j=(m|0)!=0;if(!(a[F>>0]|0)){n=45;break}else{u=j;n=47;break}}else{j=(m|0)!=0;if(!(c[G>>2]|0)){n=45;break}else{u=j;n=47;break}}}else if(!(a[F>>0]|0))if(!m){i=11;n=61;break a}else{n=46;break}else{j=(m|0)!=0;if(!(a[E>>0]|0)){u=j;n=47;break}else{n=45;break}}while(0);if((n|0)==45)if(j)n=46;else{i=11;n=61;break a}else if((n|0)==47?(n=0,!u):0)break b;if((n|0)==46?(n=0,(a[m+34>>0]|0)==0):0){i=24;n=61;break a}k=m+32|0;if(a[k>>0]|0){n=49;break a}if(c[m+28>>2]|0){n=52;break a}j=c[m+4>>2]|0;if(!j){n=55;break a}m=j+(c[m+8>>2]|0)|0;a[k>>0]=1;m=LW(b,c[H>>2]|0,e,j,m,h)|0;a[k>>0]=0;j=(m|0)==0;if(j)break b;else{j=(j^1)&1;i=m}break}default:{n=58;break a}}if(j)break a}if((n|0)==21){n=0;if(!(cW(h,d,f,c[I>>2]|0)|0)){i=1;n=61;break}}else if((n|0)==22){c[I>>2]=f+(c[y>>2]|0);n=23}else if((n|0)==31){n=0;f=c[t>>2]|0;if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=j}do if((n|0)==23){n=0;f=c[t>>2]|0;if(s){if((c[v>>2]|0)==(f|0))break;if((a[f+-1>>0]|0)==32)break}if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break a}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=32}while(0);f=c[I>>2]|0}if((n|0)==4)if((c[q>>2]|0)==(d|0)){c[r>>2]=c[I>>2];i=4;n=61}else{i=4;n=61}else if((n|0)==6)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=4;n=61}else{i=4;n=61}else if((n|0)==49)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=12;n=61}else{i=12;n=61}else if((n|0)==52)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=15;n=61}else{i=15;n=61}else if((n|0)==55)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=16;n=61}else{i=16;n=61}else if((n|0)==58)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=23;n=61}else{i=23;n=61}l=L;return i|0}function MW(a){a=a|0;var b=0;b=a+8|0;return ((a|0)<1?0:(b|0)>0?b:0)|0}function NW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=l;l=l+80|0;d=c+16|0;e=c;EW(a,e);FW(d,e);GW(d,b,HW(b)|0);b=IW(d)|0;l=c;return b|0}function OW(b,c){b=b|0;c=c|0;var d=0;while(1){d=a[b>>0]|0;if(d<<24>>24!=(a[c>>0]|0)){c=0;break}if(!(d<<24>>24)){c=1;break}c=c+1|0;b=b+1|0}return c|0}function PW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;i=k;f=c[b+124>>2]|0;a:do if(!f)e=18;else{e=0;while(1){if((e|0)==256)break;c[i+(e<<2)>>2]=-1;e=e+1|0}g=i+1028|0;c[g>>2]=0;j=i+1024|0;c[j>>2]=0;h=i+1032|0;c[h>>2]=0;do if(nb[f&63](c[b+244>>2]|0,d,i)|0){f=c[b+12>>2]|0;e=hX()|0;e=kb[f&63](e)|0;c[b+236>>2]=e;if(!e){e=c[h>>2]|0;if(!e)e=1;else{tb[e&127](c[j>>2]|0);e=1}}else{e=ob[(a[b+232>>0]<<24>>24?65:64)&127](e,i,c[g>>2]|0,c[j>>2]|0)|0;if(!e)break;c[b+240>>2]=c[j>>2];c[b+248>>2]=c[h>>2];c[b+144>>2]=e;e=0}break a}while(0);e=c[h>>2]|0;if(e|0)tb[e&127](c[j>>2]|0);e=18}while(0);l=k;return e|0}function QW(b,d){b=b|0;d=d|0;a[b+4>>0]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b>>2]=0;c[b+16>>2]=d;return}function RW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=c[b+352>>2]|0;m=b+424|0;n=b+420|0;o=b+412|0;p=b+428|0;q=l+152|0;r=b+368|0;j=l+60|0;k=l+80|0;a:while(1){h=d;b:while(1){if(!(a[d>>0]|0)){d=1;break a}f=a[h>>0]|0;switch(f<<24>>24){case 0:case 12:{s=5;break b}case 61:break b;default:{}}e=c[m>>2]|0;if((e|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}e=c[m>>2]|0;f=a[h>>0]|0}c[m>>2]=e+1;a[e>>0]=f;h=h+1|0}if((s|0)==5){s=0;d=c[m>>2]|0;if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;d=YV(b,l,c[p>>2]|0,0)|0;if(d|0)a[d+32>>0]=1;d=(a[h>>0]|0)==0?h:h+1|0;c[m>>2]=c[p>>2];continue}d=c[m>>2]|0;if((c[p>>2]|0)==(d|0))f=q;else{if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;f=YV(b,j,c[p>>2]|0,8)|0;if(!f){d=0;break}e=c[f>>2]|0;i=c[p>>2]|0;d=i;if((e|0)==(i|0)){i=BW(k,e)|0;c[f>>2]=i;if(!i){d=0;break}d=c[p>>2]|0}c[m>>2]=d}c:while(1){i=h+1|0;e=a[i>>0]|0;g=(d|0)==(c[n>>2]|0);switch(e<<24>>24){case 0:case 12:break c;default:{}}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[m>>2]|0;e=a[i>>0]|0}c[m>>2]=d+1;a[d>>0]=e;h=i;d=c[m>>2]|0}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;if(DW(b,f,0,c[p>>2]|0,r)|0){d=0;break}c[m>>2]=c[p>>2];d=(a[i>>0]|0)==0?i:h+2|0}return d|0}function SW(a,b){a=a|0;b=b|0;var d=0,e=0;if(a|0?(d=a+4|0,e=(c[d>>2]|0)==(c[a>>2]|0),c[a>>2]=b,e):0)c[d>>2]=b;return}function TW(a,b,d){a=a|0;b=b|0;d=d|0;if(a|0){c[a+52>>2]=b;c[a+56>>2]=d}return}function UW(a,b){a=a|0;b=b|0;if(a|0)c[a+60>>2]=b;return}function VW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=(b|0)==0;a:do if(!(g|(e|0)<0)?!((d|0)==0&(e|0)!=0):0){h=b+476|0;switch(c[h>>2]|0){case 3:{c[b+280>>2]=33;g=0;break a}case 2:{c[b+280>>2]=36;g=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;g=0;break a}break}default:{}}c[h>>2]=1;if(e|0){g=YW(b,e)|0;if(!g){g=0;break}F3(g|0,d|0,e|0)|0;g=ZW(b,e,f)|0;break}a[b+480>>0]=f;if(!f)g=1;else{g=b+24|0;j=c[g>>2]|0;d=b+292|0;c[d>>2]=j;f=c[b+28>>2]|0;c[b+40>>2]=f;e=b+276|0;f=ob[c[e>>2]&127](b,j,f,g)|0;c[b+280>>2]=f;if(f|0){c[b+288>>2]=c[b+284>>2];c[e>>2]=66;g=0;break}switch(c[h>>2]|0){case 3:{j=c[b+144>>2]|0;xb[c[j+48>>2]&31](j,c[d>>2]|0,c[g>>2]|0,b+404|0);c[d>>2]=c[g>>2];g=2;break a}case 1:case 0:{c[h>>2]=2;g=1;break a}default:{g=1;break a}}}}else i=3;while(0);if((i|0)==3)if(g)g=0;else{c[b+280>>2]=41;g=0}return g|0}function WW(b){b=b|0;var d=0;d=b+492|0;if(!(c[d>>2]|0))c[d>>2]=_W()|0;if(!(a[b+232>>0]|0))b=1;else b=RW(b,139242)|0;return b|0}function XW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return c[a+280>>2]|0}function YW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if(!a)d=0;else{if((b|0)<0){c[a+280>>2]=1;d=0;break}switch(c[a+476>>2]|0){case 3:{c[a+280>>2]=33;d=0;break a}case 2:{c[a+280>>2]=36;d=0;break a}default:{m=a+32|0;j=c[m>>2]|0;n=a+28|0;e=c[n>>2]|0;d=e;if((j-e|0)>=(b|0))break a;p=a+24|0;k=c[p>>2]|0;i=e-k|0;e=i+b|0;if((e|0)<0){c[a+280>>2]=1;d=0;break a}l=a+8|0;f=c[l>>2]|0;q=f;g=k-q|0;h=(g|0)>1024;b=h?1024:g;e=b+e|0;do if((e|0)>(j-q|0)){d=j-k|0;d=(d|0)==0?1024:d;do d=d<<1;while((d|0)<(e|0)&(d|0)>0);if((d|0)<1){c[a+280>>2]=1;d=0;break a}e=kb[c[a+12>>2]&63](d)|0;if(!e){c[a+280>>2]=1;d=0;break a}c[m>>2]=e+d;d=c[p>>2]|0;if(!d){d=e+(c[n>>2]|0)|0;c[n>>2]=d;c[l>>2]=e;o=22;break}else{q=d;o=q-(c[l>>2]|0)|0;o=(o|0)<1024?o:1024;F3(e|0,d+(0-o)|0,(c[n>>2]|0)-q+o|0)|0;tb[c[a+20>>2]&127](c[l>>2]|0);c[l>>2]=e;d=e+((c[n>>2]|0)-(c[p>>2]|0))+o|0;c[n>>2]=d;e=e+o|0;o=22;break}}else if(h){e=g-b|0;G3(f|0,f+e|0,b+i|0)|0;e=0-e|0;d=(c[n>>2]|0)+e|0;c[n>>2]=d;e=(c[p>>2]|0)+e|0;o=22}while(0);if((o|0)==22)c[p>>2]=e;c[a+288>>2]=0;c[a+284>>2]=0;c[a+292>>2]=0;break a}}}while(0);return d|0}function ZW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!b)d=0;else{f=b+476|0;switch(c[f>>2]|0){case 3:{c[b+280>>2]=33;d=0;break a}case 2:{c[b+280>>2]=36;d=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;d=0;break a}break}default:{}}c[f>>2]=1;g=b+24|0;j=c[g>>2]|0;h=b+292|0;c[h>>2]=j;k=b+28|0;i=(c[k>>2]|0)+d|0;c[k>>2]=i;c[b+40>>2]=i;k=b+36|0;c[k>>2]=(c[k>>2]|0)+d;a[b+480>>0]=e;d=b+276|0;i=ob[c[d>>2]&127](b,j,i,g)|0;c[b+280>>2]=i;if(i|0){c[b+288>>2]=c[b+284>>2];c[d>>2]=66;d=0;break}switch(c[f>>2]|0){case 3:{d=2;break}case 1:case 0:{if(!e)d=1;else{c[f>>2]=2;d=1;break a}break}default:d=1}k=c[b+144>>2]|0;xb[c[k+48>>2]&31](k,c[h>>2]|0,c[g>>2]|0,b+404|0);c[h>>2]=c[g>>2]}while(0);return d|0}function _W(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;if(!($W(a)|0)){d=bX()|0;d=(H1()|0)^d;c[a>>2]=d;a=aX(139296,O(d,2147483647)|0)|0}else a=aX(139283,c[a>>2]|0)|0;l=b;return a|0}function $W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=X_(139283,0,f)|0;if((e|0)<0)b=0;else{b=0;while(1){g=G1(e,a+b|0,4-b|0)|0;d=g+b|0;if((g|0)>0)if(d>>>0<4)b=d;else{b=1;break}if((c[(O_()|0)>>2]|0)!=4){b=0;break}}X0(e)|0}l=f;return b|0}function aX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=Ta(139361)|0;if(d|0?(b$(d,139381)|0)==0:0){d=c[15686]|0;c[e>>2]=a;c[e+4>>2]=8;c[e+8>>2]=b;c[e+12>>2]=4;g1(d,139383,e)|0}l=f;return b|0}function bX(){var a=0,b=0;b=l;l=l+16|0;a=b;if(!(Ua(a|0,0)|0)){l=b;return c[a+4>>2]|0}else qa(139308,139330,819,139341);return 0}function cX(a){a=a|0;if(!a)a=41;else a=c[a+280>>2]|0;return a|0}function dX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)a=0;else{b=a+284|0;d=c[b>>2]|0;if(d|0?(e=a+292|0,f=c[e>>2]|0,d>>>0>=f>>>0):0){g=c[a+144>>2]|0;xb[c[g+48>>2]&31](g,f,d,a+404|0);c[e>>2]=c[b>>2]}a=(c[a+404>>2]|0)+1|0}return a|0}function eX(a){a=a|0;do switch(a|0){case 41:{a=139420;break}case 1:{a=140692;break}case 2:{a=140679;break}case 3:{a=140662;break}case 4:{a=140630;break}case 5:{a=140615;break}case 6:{a=140597;break}case 7:{a=140582;break}case 8:{a=140562;break}case 9:{a=140534;break}case 10:{a=140499;break}case 11:{a=140482;break}case 12:{a=140455;break}case 13:{a=140435;break}case 14:{a=140397;break}case 15:{a=140370;break}case 16:{a=140328;break}case 17:{a=140281;break}case 18:{a=140264;break}case 19:{a=140213;break}case 20:{a=140190;break}case 21:{a=140144;break}case 22:{a=140117;break}case 23:{a=140066;break}case 24:{a=140030;break}case 25:{a=139978;break}case 26:{a=139933;break}case 27:{a=139918;break}case 28:{a=139892;break}case 29:{a=139854;break}case 30:{a=139822;break}case 31:{a=139789;break}case 32:{a=139755;break}case 33:{a=139738;break}case 34:{a=139717;break}case 35:{a=139701;break}case 36:{a=139684;break}case 37:{a=139640;break}case 38:{a=139560;break}case 39:{a=139501;break}case 40:{a=139437;break}default:a=0}while(0);return a|0}function fX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;f=0;a:while(1){if(e>>>0<=a>>>0)break;h=e+-1|0;g=d[h>>0]|0;do if((g&248|0)==240)if((f+1|0)>>>0>3){i=5;break a}else f=0;else{if((g&240|0)==224)if((f+1|0)>>>0>2){i=8;break a}else{f=0;break}if((g&224|0)==192)if((f+1|0)>>>0>1){i=11;break a}else{f=0;break}else if(!(g&128))break a;else break}while(0);e=h;f=f+1|0}if((i|0)==5)e=e+3|0;else if((i|0)==8)e=e+2|0;else if((i|0)==11)e=e+1|0;c[b>>2]=e;return}function gX(b,c){b=b|0;c=c|0;do if((b|0)>=0){if((b|0)<128){a[c>>0]=b;b=1;break}if((b|0)<2048){a[c>>0]=b>>>6|192;a[c+1>>0]=b&63|128;b=2;break}if((b|0)<65536){a[c>>0]=b>>>12|224;a[c+1>>0]=b>>>6&63|128;a[c+2>>0]=b&63|128;b=3;break}if((b|0)<1114112){a[c>>0]=b>>>18|240;a[c+1>>0]=b>>>12&63|128;a[c+2>>0]=b>>>6&63|128;a[c+3>>0]=b&63|128;b=4}else b=0}else b=0;while(0);return b|0}function hX(){return 1908}function iX(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;while(1){if((i|0)==364){i=0;break}a[e+i>>0]=a[56472+i>>0]|0;i=i+1|0}a:while(1){if((i|0)>=128){j=5;break}switch(a[56544+i>>0]|0){case 0:case 28:break;default:if((c[f+(i<<2)>>2]|0)!=(i|0)){e=0;break a}}i=i+1|0}b:do if((j|0)==5){q=e+72|0;m=e+372|0;n=e+884|0;o=(g|0)==0;l=0;while(1){if((l|0)>=256)break;p=c[f+(l<<2)>>2]|0;do if((p|0)==-1){a[q+l>>0]=1;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0}else{if((p|0)<0){if(o|(p|0)<-4){e=0;break b}a[q+l>>0]=3-p;a[n+(l<<2)>>0]=0;b[m+(l<<1)>>1]=0;break}if((p|0)<128){i=a[56544+p>>0]|0;switch(i<<24>>24){case 0:case 28:break;default:if((p|0)!=(l|0)){e=0;break b}}a[q+l>>0]=i;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=p;b[m+(l<<1)>>1]=(p|0)==0?-1:p&65535;break}if((jX(p)|0)<0){a[q+l>>0]=0;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0;break}if((p|0)>65535){e=0;break b}i=p>>>8;j=p>>>5&7;k=1<<(p&31);if(!(c[56836+((d[140706+i>>0]<<3|j)<<2)>>2]&k))a[q+l>>0]=c[56836+((d[140962+i>>0]<<3|j)<<2)>>2]&k|0?26:28;else a[q+l>>0]=22;a[n+(l<<2)>>0]=gX(p,n+(l<<2)+1|0)|0;b[m+(l<<1)>>1]=p}while(0);l=l+1|0}c[e+368>>2]=h;c[e+364>>2]=g;if(!o){c[e+328>>2]=106;c[e+332>>2]=106;c[e+336>>2]=106;c[e+340>>2]=107;c[e+344>>2]=107;c[e+348>>2]=107;c[e+352>>2]=108;c[e+356>>2]=108;c[e+360>>2]=108}c[e+56>>2]=13;c[e+60>>2]=14}while(0);return e|0}function jX(b){b=b|0;var c=0;switch(b>>8|0){case 223:case 222:case 221:case 220:case 219:case 218:case 217:case 216:{b=-1;break}case 0:{if(!(a[56544+b>>0]|0))b=-1;else c=4;break}case 255:{if((b|1|0)==65535)b=-1;else c=4;break}default:c=4}return b|0}function kX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140962+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function lX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140706+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function mX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=1;else a=(jX(a)|0)>>>31;return a|0}function nX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;m=q;n=b+364|0;o=b+884|0;p=b+368|0;k=b+72|0;while(1){i=c[e>>2]|0;if((i|0)==(f|0)){h=0;break}r=d[i>>0]|0;j=o+(r<<2)+1|0;r=a[o+(r<<2)>>0]|0;b=r<<24>>24;if(!(r<<24>>24)){b=gX(lb[c[n>>2]&127](c[p>>2]|0,i)|0,m)|0;if((b|0)>(h-(c[g>>2]|0)|0)){h=2;break}i=c[e>>2]|0;j=m;i=i+((d[k+(d[i>>0]|0)>>0]|0)+-3)|0}else{if((h-(c[g>>2]|0)|0)<(b|0)){h=2;break}i=i+1|0}c[e>>2]=i;F3(c[g>>2]|0,j|0,b|0)|0;c[g>>2]=(c[g>>2]|0)+b}l=q;return h|0}function oX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=a+372|0;n=a+364|0;o=a+368|0;l=a+72|0;while(1){k=c[e>>2]|0;a=k>>>0<f>>>0;i=c[g>>2]|0;if(!(a&i>>>0<h>>>0))break;a=b[m+((d[k>>0]|0)<<1)>>1]|0;if(!(a<<16>>16)){a=(lb[c[n>>2]&127](c[o>>2]|0,k)|0)&65535;i=c[e>>2]|0;j=(d[l+(d[i>>0]|0)>>0]|0)+-3|0}else{j=1;i=k}c[e>>2]=i+j;k=c[g>>2]|0;c[g>>2]=k+2;b[k>>1]=a}return ((i|0)!=(h|0)|a^1?0:2)|0}function pX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:do if(e>>>0<f>>>0){n=b+72|0;do switch(a[n+(d[e>>0]|0)>>0]|0){case 12:{h=QX(12,b,e+1|0,f,g)|0;break a}case 13:{h=QX(13,b,e+1|0,f,g)|0;break a}case 2:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 16:{h=RX(b,e+2|0,f,g)|0;break a}case 15:{h=MX(b,e+2|0,f,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;h=29;break a}default:{c[g>>2]=h;h=0;break a}}}case 9:{if((e+1|0)==(f|0)){c[g>>2]=f;h=-15;break a}else k=3;break}case 10:case 21:{k=3;break}case 30:{h=GX(b,e+1|0,f,g)|0;break a}case 35:{c[g>>2]=e+1;h=38;break a}case 20:{c[g>>2]=e+1;h=25;break a}case 4:{i=e+1|0;h=f-i|0;if((h|0)<=0){h=-26;break a}if((a[i>>0]|0)==93){if((h|0)<=1){h=-1;break a}if((a[e+2>>0]|0)==62){c[g>>2]=e+3;h=34;break a}}c[g>>2]=i;h=26;break a}case 31:{c[g>>2]=e+1;h=23;break a}case 32:{h=e+1|0;if((f-h|0)<=0){h=-24;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 33:{c[g>>2]=e+2;h=36;break a}case 15:{c[g>>2]=e+2;h=35;break a}case 34:{c[g>>2]=e+2;h=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;h=24;break a}default:{c[g>>2]=h;h=0;break a}}}case 36:{c[g>>2]=e+1;h=21;break a}case 11:{c[g>>2]=e+1;h=17;break a}case 19:{h=SX(b,e+1|0,f,g)|0;break a}case 5:{if((f-e|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0))if(!(lb[c[b+328>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=2}else{h=18;i=2}break}case 6:{if((f-e|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0))if(!(lb[c[b+332>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=3}else{h=18;i=3}break}case 7:{if((f-e|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0))if(!(lb[c[b+336>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=4}else{h=18;i=4}break}case 24:case 22:{h=18;i=1;break}case 23:case 27:case 26:case 25:{h=19;i=1;break}default:{c[g>>2]=e;h=0;break a}}while(0);if((k|0)==3){j=f;i=e;b:while(1){h=i;i=i+1|0;if((j-i|0)<=0){k=18;break}switch(a[n+(d[i>>0]|0)>>0]|0){case 10:case 21:continue b;case 9:break;default:{k=17;break b}}if((h+2|0)==(f|0)){k=17;break}}if((k|0)==17){c[g>>2]=i;h=15;break}else if((k|0)==18){c[g>>2]=i;h=15;break}}k=b+328|0;l=b+332|0;m=b+336|0;j=e+i|0;c:while(1){i=f-j|0;if((i|0)<=0){k=99;break}switch(a[n+(d[j>>0]|0)>>0]|0){case 29:{k=56;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{k=70;break c}case 34:{k=89;break c}case 33:{k=92;break c}case 15:{k=95;break c}case 27:case 26:case 25:case 24:case 22:{e=h;j=j+1|0;h=e;continue c}case 5:{if((i|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,j)|0)){k=60;break c}e=h;j=j+2|0;h=e;continue c}case 6:{if((i|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,j)|0)){k=64;break c}e=h;j=j+3|0;h=e;continue c}case 7:{if((i|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,j)|0)){k=68;break c}e=h;j=j+4|0;h=e;continue c}case 23:{i=j+1|0;switch(h&63){case 18:break;case 41:{h=19;j=i;continue c}default:{e=h;j=i;h=e;continue c}}h=f-i|0;if((h|0)<=0){h=-1;break a}switch(a[n+(d[i>>0]|0)>>0]|0){case 29:{k=74;break c}case 27:case 26:case 25:case 24:case 22:{h=41;j=j+2|0;continue c}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,i)|0)){k=78;break c}h=41;j=j+3|0;continue c}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,i)|0)){k=82;break c}h=41;j=j+4|0;continue c}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){k=86;break c}h=41;j=j+5|0;continue c}default:{h=19;j=i;continue c}}}default:{k=98;break c}}}switch(k|0){case 56:{c[g>>2]=j;h=0;break a}case 60:{c[g>>2]=j;h=0;break a}case 64:{c[g>>2]=j;h=0;break a}case 68:{c[g>>2]=j;h=0;break a}case 70:{c[g>>2]=j;break a}case 74:{c[g>>2]=i;h=0;break a}case 78:{c[g>>2]=i;h=0;break a}case 82:{c[g>>2]=i;h=0;break a}case 86:{c[g>>2]=i;h=0;break a}case 89:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=32;break a}case 92:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=31;break a}case 95:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=30;break a}case 98:{c[g>>2]=j;h=0;break a}case 99:{h=0-h|0;break a}}}else h=-4;while(0);return h|0}function qX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){m=b+72|0;b:do switch(a[m+(d[e>>0]|0)>>0]|0){case 2:{h=JX(b,e+1|0,f,g)|0;break a}case 3:{h=FX(b,e+1|0,f,g)|0;break a}case 9:{h=e+1|0;if((f-h|0)<=0){h=-3;break a}c[g>>2]=(a[m+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 4:{i=e+1|0;if((f-i|0)<=0){h=-5;break a}if((a[i>>0]|0)==93){h=e+2|0;if((f-h|0)<=0){h=-5;break a}if((a[h>>0]|0)==62){c[g>>2]=h;h=0;break a}else h=f}else h=f;break}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);j=b+352|0;k=b+356|0;l=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=49;break}switch(a[m+(d[i>>0]|0)>>0]|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=47;break c}case 5:{if((f|0)<2){f=32;break c}if(lb[c[j>>2]&127](b,i)|0){f=32;break c}i=i+2|0;continue c}case 6:{if((f|0)<3){f=36;break c}if(lb[c[k>>2]&127](b,i)|0){f=36;break c}i=i+3|0;continue c}case 7:{if((f|0)<4){f=40;break c}if(lb[c[l>>2]&127](b,i)|0){f=40;break c}i=i+4|0;continue c}case 4:{if((f|0)<=1){f=47;break c}e=i+1|0;if((a[e>>0]|0)!=93){i=e;continue c}if((f|0)<=2){f=47;break c}i=i+2|0;if((a[i>>0]|0)==62){f=46;break c}else{i=e;continue c}}default:{i=i+1|0;continue c}}}if((f|0)==32){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==40){c[g>>2]=i;h=6;break}else if((f|0)==46){c[g>>2]=i;h=0;break}else if((f|0)==47){c[g>>2]=i;h=6;break}else if((f|0)==49){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function rX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if(e>>>0<f>>>0){l=b+72|0;b:do switch(a[l+(d[e>>0]|0)>>0]|0){case 4:{i=e+1|0;h=f;if((h-i|0)<=0){h=-1;break a}if((a[i>>0]|0)==93){f=e+2|0;if((h-f|0)<=0){h=-1;break a}if((a[f>>0]|0)==62){c[g>>2]=e+3;h=40;break a}}break}case 9:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);e=b+352|0;j=b+356|0;k=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=39;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 4:case 10:case 9:case 8:case 1:case 0:{f=37;break c}case 5:{if((f|0)<2){f=30;break c}if(!(lb[c[e>>2]&127](b,i)|0))f=2;else{f=30;break c}break}case 6:{if((f|0)<3){f=33;break c}if(!(lb[c[j>>2]&127](b,i)|0))f=3;else{f=33;break c}break}case 7:{if((f|0)<4){f=36;break c}if(!(lb[c[k>>2]&127](b,i)|0))f=4;else{f=36;break c}break}default:f=1}i=i+f|0}if((f|0)==30){c[g>>2]=i;h=6;break}else if((f|0)==33){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==37){c[g>>2]=i;h=6;break}else if((f|0)==39){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function sX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=b+72|0;k=b+352|0;l=b+356|0;m=b+360|0;i=0;a:while(1){h=f-e|0;if((h|0)<=0){f=-1;break}switch(a[j+(d[e>>0]|0)>>0]|0){case 8:case 1:case 0:{n=16;break a}case 5:{if((h|0)<2){f=-2;break a}if(lb[c[k>>2]&127](b,e)|0){n=6;break a}h=i;e=e+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}if(lb[c[l>>2]&127](b,e)|0){n=10;break a}h=i;e=e+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}if(lb[c[m>>2]&127](b,e)|0){n=14;break a}h=i;e=e+4|0;i=h;continue a}case 2:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=33){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}o=(a[h>>0]|0)==91;i=i+(o&1)|0;e=o?e+3|0:h;continue a}case 4:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=93){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=62){o=i;e=h;i=o;continue a}e=e+3|0;if(!i){n=26;break a}i=i+-1|0;continue a}default:{o=i;e=e+1|0;i=o;continue a}}}if((n|0)==6){c[g>>2]=e;f=0}else if((n|0)==10){c[g>>2]=e;f=0}else if((n|0)==14){c[g>>2]=e;f=0}else if((n|0)==16){c[g>>2]=e;f=0}else if((n|0)==26){c[g>>2]=e;f=42}return f|0}function tX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=24;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 2:{j=11;break a}case 10:{j=12;break a}case 9:{j=15;break a}case 21:{j=19;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11){c[g>>2]=i;h=0;break}else if((j|0)==12)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==15){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==19)if((i|0)==(e|0)){c[g>>2]=e+1;h=39;break}else{c[g>>2]=i;h=6;break}else if((j|0)==24){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function uX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=23;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 30:{j=11;break a}case 10:{j=14;break a}case 9:{j=17;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11)if((i|0)==(e|0)){h=GX(b,e+1|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=i;h=6;break}else if((j|0)==14)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==17){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==23){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function vX(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=6;break}if((f-b|0)<1){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+1|0}if((g|0)==6)b=(b|0)==(d|0)&1;return b|0}function wX(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;b=c;a:while(1){switch(a[f+(d[b>>0]|0)>>0]|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=1;break}default:break a}b=b+e|0}return b-c|0}function xX(b,c){b=b|0;c=c|0;b=b+72|0;a:while(1){switch(a[b+(d[c>>0]|0)>>0]|0){case 21:case 9:case 10:break;default:break a}c=c+1|0}return c|0}function yX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+72|0;j=0;k=0;b=1;a:while(1){h=e+1|0;i=a[h>>0]|0;do switch(a[l+(i&255)>>0]|0){case 5:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+2|0;k=h;j=i;continue a}case 6:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+3|0;k=h;j=i;continue a}case 7:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+4|0;k=h;j=i;continue a}case 24:case 22:case 29:{if(b|0){o=b;n=k;i=j;e=h;b=o;k=n;j=i;continue a}if((k|0)>=(f|0)){n=k;o=j;b=1;e=h;k=n;j=o;continue a}c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;n=k;o=j;b=1;e=h;k=n;j=o;continue a}case 12:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=12;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=12;b=2;e=h;k=o;continue a}if((j|0)!=12){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=12;k=k+1|0;b=0;e=h;continue a}case 13:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=13;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=13;b=2;e=h;k=o;continue a}if((j|0)!=13){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=13;k=k+1|0;b=0;e=h;continue a}case 3:{if((k|0)>=(f|0)){i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}case 21:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}b=g+(k<<4)+12|0;if(!(a[b>>0]|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if(((i<<24>>24==32?(h|0)!=(c[g+(k<<4)+4>>2]|0):0)?(m=a[e+2>>0]|0,m<<24>>24!=32):0)?(j|0)!=(d[l+(m&255)>>0]|0):0){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[b>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 10:case 9:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 17:case 11:if((b|0)==2){n=k;o=j;b=2;e=h;k=n;j=o;continue a}else break a;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}while(0)}return k|0}function zX(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+2|0;d=a[b>>0]|0;a:do if(d<<24>>24==120){d=c+3|0;b=0;while(1){b:while(1){e=a[d>>0]|0;c=e<<24>>24;if(e<<24>>24==59){e=14;break a}switch(c|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=7;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=8;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=9;break b}default:{}}d=d+1|0}if((e|0)==7){e=0;b=c+-48|b<<4}else if((e|0)==8){e=0;b=(b<<4)+-55+c|0}else if((e|0)==9){e=0;b=(b<<4)+-87+c|0}if((b|0)<1114112)d=d+1|0;else{b=-1;break}}}else{c=b;b=0;while(1){if(d<<24>>24==59){e=14;break a}b=(d<<24>>24)+-48+(b*10|0)|0;if((b|0)>=1114112){b=-1;break a}d=c+1|0;c=d;d=a[d>>0]|0}}while(0);if((e|0)==14)b=jX(b)|0;return b|0}function AX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch(d-c|0){case 2:{if((a[c+1>>0]|0)==116){b=a[c>>0]|0;b=b<<24>>24==108?60:b<<24>>24==103?62:0}else e=14;break}case 3:{if(((a[c>>0]|0)==97?(a[c+1>>0]|0)==109:0)?(a[c+2>>0]|0)==112:0)b=38;else e=14;break}case 4:switch(a[c>>0]|0){case 113:{if((a[c+1>>0]|0)!=117){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==116){b=34;break a}else{e=14;break a}}case 97:{if((a[c+1>>0]|0)!=112){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==115){b=39;break a}else{e=14;break a}}default:{e=14;break a}}default:e=14}while(0);if((e|0)==14)b=0;return b|0}function BX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=b+72|0;i=g+4|0;while(1){if((f-e|0)<=0)break;switch(a[h+(d[e>>0]|0)>>0]|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[i>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+1|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;b=e+1|0;if((f-b|0)>0)e=(a[h+(d[b>>0]|0)>>0]|0)==10?e+2|0:b;else e=b;c[i>>2]=-1;break}default:e=e+1|0}c[i>>2]=(c[i>>2]|0)+1}return}function CX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=e+-1|0;b=b+72|0;a:while(1){d=d+1|0;if((g-d|0)<=0){d=1;break}e=a[d>>0]|0;switch(a[b+(e&255)>>0]|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:continue a;case 21:if(e<<24>>24==9){h=7;break a}else continue a;case 22:case 26:{if(e<<24>>24>=0)continue a;break}default:{}}switch(e<<24>>24|0){case 64:case 36:break;default:{h=7;break a}}}if((h|0)==7){c[f>>2]=d;d=0}return d|0}function DX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=h;while(1){j=c[e>>2]|0;if((j|0)==(f|0)){b=0;break}k=d[j>>0]|0;b=c[g>>2]|0;if(!(k&128)){if((b|0)==(h|0)){b=2;break}c[e>>2]=j+1;j=a[j>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;continue}else{if((i-b|0)<2){b=2;break}c[g>>2]=b+1;a[b>>0]=k>>>6|192;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=k&63|128;c[e>>2]=(c[e>>2]|0)+1;continue}}return b|0}function EX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;while(1){a=c[e>>2]|0;i=a>>>0<f>>>0;j=c[g>>2]|0;if(!(i&j>>>0<h>>>0))break;c[e>>2]=a+1;i=d[a>>0]|0;j=c[g>>2]|0;c[g>>2]=j+2;b[j>>1]=i}return ((j|0)!=(h|0)|i^1?0:2)|0}function FX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;h=k-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}case 19:{f=HX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;f=0;break a}}h=b+328|0;i=b+332|0;j=b+336|0;e=e+f|0;b:while(1){f=k-e|0;if((f|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[h>>2]&127](b,e)|0)){h=21;break b}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=24;break b}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=27;break b}else f=4;break}default:{h=30;break b}}e=e+f|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=9;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function GX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=21;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=24;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=27;break b}else h=4;break}default:{h=30;break b}}e=e+h|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=28;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function HX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;a:do if((i-e|0)>0){h=a[e>>0]|0;if(h<<24>>24==120){b=IX(b,e+1|0,f,g)|0;break}f=b+72|0;if((a[f+(h&255)>>0]|0)!=25){c[g>>2]=e;b=0;break}b:while(1){b=e+1|0;if((i-b|0)<=0){b=-1;break a}switch(a[f+(d[b>>0]|0)>>0]|0){case 25:{e=b;break}case 18:{f=8;break b}default:{f=9;break b}}}if((f|0)==8){c[g>>2]=e+2;b=10;break}else if((f|0)==9){c[g>>2]=b;b=0;break}}else b=-1;while(0);return b|0}function IX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;a:do if((f-e|0)>0){b=b+72|0;if((a[b+(d[e>>0]|0)>>0]&-2)<<24>>24!=24){c[g>>2]=e;f=0;break}b:while(1){h=e+1|0;if((f-h|0)<=0){f=-1;break a}switch(a[b+(d[h>>0]|0)>>0]|0){case 24:case 25:{e=h;break}case 18:{b=6;break b}default:{b=7;break b}}}if((b|0)==6){c[g>>2]=e+2;f=10;break}else if((b|0)==7){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function JX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f;h=q-e|0;a:do if((h|0)>0){p=b+72|0;switch(a[p+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;h=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=2;break}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=3;break}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=4;break}case 16:{h=e+1|0;if((q-h|0)<=0){h=-1;break a}switch(a[p+(d[h>>0]|0)>>0]|0){case 27:{h=KX(b,e+2|0,f,g)|0;break a}case 20:{h=LX(e+2|0,f,g)|0;break a}default:{c[g>>2]=h;h=0;break a}}}case 15:{h=MX(b,e+1|0,f,g)|0;break a}case 17:{h=NX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}j=b+328|0;k=b+332|0;l=b+336|0;m=b+340|0;n=b+344|0;o=b+348|0;i=0;h=e+h|0;b:while(1){e=q-h|0;if((e|0)<=0){h=-1;break a}c:do switch(a[p+(d[h>>0]|0)>>0]|0){case 29:{r=24;break b}case 10:case 9:case 21:{r=50;break b}case 11:{r=64;break b}case 17:break b;case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){r=27;break b}else e=2;break}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){r=30;break b}else e=3;break}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[l>>2]&127](b,h)|0)){r=33;break b}else e=4;break}case 23:{if(i|0){r=35;break b}i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 29:{r=38;break b}case 24:case 22:{i=1;e=2;break c}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){r=42;break b}else{i=1;e=3;break c}}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){r=45;break b}else{i=1;e=4;break c}}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){r=48;break b}else{i=1;e=5;break c}}default:{r=49;break b}}}default:{r=69;break b}}while(0);h=h+e|0}d:switch(r|0){case 24:{c[g>>2]=h;h=0;break a}case 27:{c[g>>2]=h;h=0;break a}case 30:{c[g>>2]=h;h=0;break a}case 33:{c[g>>2]=h;h=0;break a}case 35:{c[g>>2]=h;h=0;break a}case 38:{c[g>>2]=i;h=0;break a}case 42:{c[g>>2]=i;h=0;break a}case 45:{c[g>>2]=i;h=0;break a}case 48:{c[g>>2]=i;h=0;break a}case 49:{c[g>>2]=i;h=0;break a}case 50:{e:while(1){r=0;i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 11:{h=i;r=64;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;r=50;break}case 29:{r=52;break e}case 24:case 22:{i=2;break e}case 5:{r=53;break e}case 6:{r=56;break e}case 7:{r=59;break e}default:{r=62;break e}}}if((r|0)==52){c[g>>2]=i;h=0;break a}else if((r|0)==53){if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=3}else if((r|0)==56){if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=4}else if((r|0)==59){if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=5}else if((r|0)==62){c[g>>2]=i;h=0;break a}h=OX(b,h+i|0,f,g)|0;break a}case 69:{c[g>>2]=h;h=0;break a}}if((r|0)==64){c[g>>2]=h+1;h=2;break}i=h+1|0;if((q-i|0)>0)if((a[i>>0]|0)==62){c[g>>2]=h+2;h=4;break}else{c[g>>2]=i;h=0;break}else h=-1}else h=-1;while(0);return h|0}function KX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if((f-e|0)>0){if((a[e>>0]|0)!=45){c[g>>2]=e;f=0;break}h=b+72|0;i=b+352|0;j=b+356|0;k=b+360|0;l=e+1|0;b:while(1){e=f-l|0;if((e|0)<=0){f=-1;break a}switch(a[h+(d[l>>0]|0)>>0]|0){case 8:case 1:case 0:{e=19;break b}case 5:{if((e|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,l)|0){e=9;break b}l=l+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,l)|0){e=13;break b}l=l+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,l)|0){e=17;break b}l=l+4|0;continue b}case 27:{e=l+1|0;if((f-e|0)<=0){f=-1;break a}if((a[e>>0]|0)==45){e=22;break b}else{l=e;continue b}}default:{l=l+1|0;continue b}}}if((e|0)==9){c[g>>2]=l;f=0;break}else if((e|0)==13){c[g>>2]=l;f=0;break}else if((e|0)==17){c[g>>2]=l;f=0;break}else if((e|0)==19){c[g>>2]=l;f=0;break}else if((e|0)==22){e=l+2|0;if((f-e|0)<=0){f=-1;break}if((a[e>>0]|0)==62){c[g>>2]=l+3;f=13;break}else{c[g>>2]=e;f=0;break}}}else f=-1;while(0);return f|0}function LX(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>5){d=0;while(1){if((d|0)>=6){d=8;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+1|0}c[e>>2]=b}else d=-1;return d|0}function MX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;f=o-e|0;a:do if((f|0)>0){n=b+72|0;switch(a[n+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;f=e+f|0;b:while(1){h=o-f|0;if((h|0)<=0){f=-1;break a}switch(a[n+(d[f>>0]|0)>>0]|0){case 29:{m=17;break b}case 10:case 9:case 21:{m=28;break b}case 15:{m=50;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,f)|0)){m=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,f)|0)){m=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,f)|0)){m=26;break b}else h=4;break}default:break b}f=f+h|0}if((m|0)==17){c[g>>2]=f;f=0;break}else if((m|0)==20){c[g>>2]=f;f=0;break}else if((m|0)==23){c[g>>2]=f;f=0;break}else if((m|0)==26){c[g>>2]=f;f=0;break}else if((m|0)==28){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}i=b+352|0;j=b+356|0;k=b+360|0;h=f+1|0;c:while(1){f=o-h|0;if((f|0)<=0){f=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 8:case 1:case 0:{m=45;break c}case 5:{if((f|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,h)|0){m=35;break c}h=h+2|0;continue c}case 6:{if((f|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,h)|0){m=39;break c}h=h+3|0;continue c}case 7:{if((f|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,h)|0){m=43;break c}h=h+4|0;continue c}case 15:{f=h+1|0;if((o-f|0)<=0){f=-1;break a}if((a[f>>0]|0)==62){m=48;break c}else{h=f;continue c}}default:{h=h+1|0;continue c}}}if((m|0)==35){c[g>>2]=h;f=0;break}else if((m|0)==39){c[g>>2]=h;f=0;break}else if((m|0)==43){c[g>>2]=h;f=0;break}else if((m|0)==45){c[g>>2]=h;f=0;break}else if((m|0)==48){c[g>>2]=h+2;f=c[p>>2]|0;break}}else if((m|0)==50){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}h=f+1|0;if((o-h|0)<=0){f=-1;break}if((a[h>>0]|0)==62){c[g>>2]=f+2;f=c[p>>2]|0;break}else f=h}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function NX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;h=e+h|0;b:while(1){e=f-h|0;if((e|0)<=0){f=-1;break a}switch(a[l+(d[h>>0]|0)>>0]|0){case 29:{i=17;break b}case 10:case 9:case 21:{i=27;break b}case 11:{i=32;break b}case 23:case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,h)|0)){i=20;break b}else e=2;break}case 6:{if((e|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){i=23;break b}else e=3;break}case 7:{if((e|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){i=26;break b}else e=4;break}default:{i=33;break b}}h=h+e|0}if((i|0)==17){c[g>>2]=h;f=0;break}else if((i|0)==20){c[g>>2]=h;f=0;break}else if((i|0)==23){c[g>>2]=h;f=0;break}else if((i|0)==26){c[g>>2]=h;f=0;break}else if((i|0)==27){c:while(1){e=h+1|0;if((f-e|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 10:case 9:case 21:{h=e;i=27;break}case 11:{i=29;break c}default:{i=30;break c}}}if((i|0)==29){c[g>>2]=h+2;f=5;break}else if((i|0)==30){c[g>>2]=e;f=0;break}}else if((i|0)==32){c[g>>2]=h+1;f=5;break}else if((i|0)==33){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function OX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;v=y;c[v>>2]=e;w=f;r=b+72|0;s=b+328|0;t=b+332|0;u=b+336|0;k=b+340|0;m=b+344|0;n=b+348|0;o=b+352|0;p=b+356|0;q=b+360|0;i=0;a:while(1){h=w-e|0;if((h|0)<=0){e=-1;break}b:do switch(a[r+(d[e>>0]|0)>>0]|0){case 29:{x=4;break a}case 27:case 26:case 25:case 24:case 22:{h=e+1|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 5:{if((h|0)<2){e=-2;break a}if(!(lb[c[s>>2]&127](b,e)|0)){x=8;break a}h=e+2|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 6:{if((h|0)<3){e=-2;break a}if(!(lb[c[t>>2]&127](b,e)|0)){x=12;break a}h=e+3|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 7:{if((h|0)<4){e=-2;break a}if(!(lb[c[u>>2]&127](b,e)|0)){x=16;break a}h=e+4|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 23:{if(i|0){x=19;break a}h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=22;break a}case 24:case 22:{j=e+2|0;c[v>>2]=j;i=1;e=j;continue a}case 5:{if((i|0)<2){e=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){x=26;break a}j=e+3|0;c[v>>2]=j;i=1;e=j;continue a}case 6:{if((i|0)<3){e=-2;break a}if(!(lb[c[m>>2]&127](b,h)|0)){x=30;break a}j=e+4|0;c[v>>2]=j;i=1;e=j;continue a}case 7:{if((i|0)<4){e=-2;break a}if(!(lb[c[n>>2]&127](b,h)|0)){x=34;break a}j=e+5|0;c[v>>2]=j;i=1;e=j;continue a}default:{x=36;break a}}}case 10:case 9:case 21:while(1){e=e+1|0;c[v>>2]=e;if((w-e|0)<=0){e=-1;break a}switch(a[r+(d[e>>0]|0)>>0]|0){case 14:break b;case 9:case 10:case 21:break;default:{x=39;break a}}}case 14:break;default:{x=92;break a}}while(0);while(1){h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break a}j=a[r+(d[h>>0]|0)>>0]|0;if((j|1)<<24>>24==13)break;switch(j<<24>>24){case 9:case 10:case 21:{e=h;break}default:{x=43;break a}}}e=e+2|0;c[v>>2]=e;c:while(1){h=w-e|0;if((h|0)<=0){e=-1;break a}i=a[r+(d[e>>0]|0)>>0]|0;if(i<<24>>24==j<<24>>24)break;switch(i<<24>>24){case 8:case 1:case 0:{x=60;break a}case 2:{x=65;break a}case 5:{if((h|0)<2){e=-2;break a}if(lb[c[o>>2]&127](b,e)|0){x=50;break a}i=e+2|0;c[v>>2]=i;e=i;continue c}case 6:{if((h|0)<3){e=-2;break a}if(lb[c[p>>2]&127](b,e)|0){x=54;break a}i=e+3|0;c[v>>2]=i;e=i;continue c}case 7:{if((h|0)<4){e=-2;break a}if(lb[c[q>>2]&127](b,e)|0){x=58;break a}i=e+4|0;c[v>>2]=i;e=i;continue c}case 3:{e=FX(b,e+1|0,f,v)|0;if((e|0)<1){x=63;break a}e=c[v>>2]|0;continue c}default:{i=e+1|0;c[v>>2]=i;e=i;continue c}}}h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break}switch(a[r+(d[h>>0]|0)>>0]|0){case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}default:{x=69;break a}}d:while(1){h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=72;break a}case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}case 24:case 22:{x=73;break d}case 5:{x=74;break d}case 6:{x=78;break d}case 7:{x=82;break d}default:{x=91;break a}}}if((x|0)==73){x=0;e=e+2|0;c[v>>2]=e;i=0;continue}else if((x|0)==74){x=0;if((i|0)<2){e=-2;break}if(!(lb[c[k>>2]&127](b,h)|0)){x=76;break}e=e+3|0;c[v>>2]=e;i=0;continue}else if((x|0)==78){x=0;if((i|0)<3){e=-2;break}if(!(lb[c[m>>2]&127](b,h)|0)){x=80;break}e=e+4|0;c[v>>2]=e;i=0;continue}else if((x|0)==82){x=0;if((i|0)<4){e=-2;break}if(!(lb[c[n>>2]&127](b,h)|0)){x=84;break}e=e+5|0;c[v>>2]=e;i=0;continue}}switch(x|0){case 4:{c[g>>2]=e;e=0;break}case 8:{c[g>>2]=e;e=0;break}case 12:{c[g>>2]=e;e=0;break}case 16:{c[g>>2]=e;e=0;break}case 19:{c[g>>2]=e;e=0;break}case 22:{c[g>>2]=h;e=0;break}case 26:{c[g>>2]=h;e=0;break}case 30:{c[g>>2]=h;e=0;break}case 34:{c[g>>2]=h;e=0;break}case 36:{c[g>>2]=h;e=0;break}case 39:{c[g>>2]=e;e=0;break}case 43:{c[g>>2]=h;e=0;break}case 50:{c[g>>2]=e;e=0;break}case 54:{c[g>>2]=e;e=0;break}case 58:{c[g>>2]=e;e=0;break}case 60:{c[g>>2]=e;e=0;break}case 63:{if(!e){c[g>>2]=c[v>>2];e=0}break}case 65:{c[g>>2]=e;e=0;break}case 69:{c[g>>2]=h;e=0;break}case 72:{c[g>>2]=h;e=0;break}case 76:{c[g>>2]=h;e=0;break}case 80:{c[g>>2]=h;e=0;break}case 84:{c[g>>2]=h;e=0;break}case 86:{c[g>>2]=e+2;e=1;break}case 87:{e=h+1|0;c[v>>2]=e;if((w-e|0)>0)if((a[e>>0]|0)==62){c[g>>2]=h+2;e=3;break}else{c[g>>2]=e;e=0;break}else e=-1;break}case 91:{c[g>>2]=h;e=0;break}case 92:{c[g>>2]=e;e=0;break}}l=y;return e|0}function PX(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==3){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}switch(a[b+1>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}switch(a[b+2>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1;while(0);return d|0}function QX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=e+72|0;l=e+352|0;m=e+356|0;n=e+360|0;a:while(1){i=g-f|0;if((i|0)<=0){g=-1;break}j=a[k+(d[f>>0]|0)>>0]|0;switch(j<<24>>24){case 8:case 1:case 0:{o=16;break a}case 5:{if((i|0)<2){g=-2;break a}if(lb[c[l>>2]&127](e,f)|0){o=6;break a}f=f+2|0;continue a}case 6:{if((i|0)<3){g=-2;break a}if(lb[c[m>>2]&127](e,f)|0){o=10;break a}f=f+3|0;continue a}case 7:{if((i|0)<4){g=-2;break a}if(lb[c[n>>2]&127](e,f)|0){o=14;break a}f=f+4|0;continue a}case 13:case 12:{f=f+1|0;if((j&255|0)==(b|0)){o=18;break a}else continue a}default:{f=f+1|0;continue a}}}b:do if((o|0)==6){c[h>>2]=f;g=0}else if((o|0)==10){c[h>>2]=f;g=0}else if((o|0)==14){c[h>>2]=f;g=0}else if((o|0)==16){c[h>>2]=f;g=0}else if((o|0)==18)if((g-f|0)>0){c[h>>2]=f;switch(a[k+(d[f>>0]|0)>>0]|0){case 20:case 30:case 11:case 10:case 9:case 21:{g=27;break b}default:{}}g=0}else g=-27;while(0);return g|0}function RX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f;a:do if((h-e|0)>0){i=b+72|0;switch(a[i+(d[e>>0]|0)>>0]|0){case 27:{b=KX(b,e+1|0,f,g)|0;break a}case 20:{c[g>>2]=e+1;b=33;break a}case 24:case 22:{b:while(1){b=e+1|0;f=h-b|0;if((f|0)<=0){b=-1;break a}switch(a[i+(d[b>>0]|0)>>0]|0){case 24:case 22:{e=b;break}case 30:{j=8;break b}case 10:case 9:case 21:break b;default:{j=12;break b}}}if((j|0)==12){c[g>>2]=b;b=0;break a}c:do if((j|0)==8){if((f|0)<=1){b=-1;break a}switch(a[i+(d[e+2>>0]|0)>>0]|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=b;b=0;break a}while(0);c[g>>2]=b;b=16;break a}default:{c[g>>2]=e;b=0;break a}}}else b=-1;while(0);return b|0}\n  function Rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a;while(1){j=c[f>>2]|0;if(!j){k=6;break}if((c[j>>2]|0)==(b|0))break;f=j+4|0}if((k|0)==6)qa(93188,93195,217,93206);i=j+8|0;f=c[i>>2]|0;g=j+4|0;b=c[g>>2]|0;c[(f|0?f+4|0:a)>>2]=b;h=a+4|0;c[(b|0?b+8|0:h)>>2]=f;b=0;f=a;while(1){f=c[f>>2]|0;if(!f)break;if((c[f>>2]|0)==(d|0)){k=9;break}b=f;f=f+4|0}if((k|0)==9){do if(!e)if((f|0)==(c[a>>2]|0)){c[a>>2]=j;c[g>>2]=f;c[i>>2]=0;f=f+8|0;break}else{c[b+4>>2]=j;c[i>>2]=b;c[g>>2]=f;f=f+8|0;break}else if((f|0)==(c[h>>2]|0)){c[h>>2]=j;c[g>>2]=0;c[i>>2]=f;f=f+4|0;break}else{c[i>>2]=f;f=f+4|0;c[g>>2]=c[f>>2];c[(c[f>>2]|0)+8>>2]=j;break}while(0);c[f>>2]=j}return}function Sv(a){a=a|0;return c[a+8>>2]|0}function Tv(a,b){a=a|0;b=b|0;Uv(a,Ov(b)|0);D_(b);return}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if(d|0){e=a+4|0;f=c[e>>2]|0;c[f+4>>2]=d;c[d+8>>2]=f;c[e>>2]=c[b+4>>2];d=a+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+8>>2]|0)}return}function Vv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=c[b+8>>2]|0;Wv(a,b);l=Xv(m)|0;a=Zv(Yv(l)|0)|0;_v(m,a);m=$v(a,m)|0;a=Sv(m)|0;j=+aw(m);k=(a|0)==1;f=+(a|0);i=f*.15915494309189535*(j+d);g=k?0.0:i;a=m;while(1){a=c[a>>2]|0;if(!a)break;if(c[(c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&8|0){e=4;break}a=a+4|0}if((e|0)==4)Pv(m,a);d=1.0/f;e=0;a=m;while(1){a=c[a>>2]|0;if(!a)break;n=(c[a>>2]|0)+16|0;c[(c[(c[n>>2]|0)+112>>2]|0)+16>>2]=e;h[(c[(c[n>>2]|0)+112>>2]|0)+24>>3]=0.0;f=6.283185307179586*d*+(e|0);o=+E(+f)*g;n=c[(c[n>>2]|0)+132>>2]|0;h[n>>3]=o;h[n+8>>3]=+F(+f)*g;e=e+1|0;a=a+4|0}o=k?j*.5:i;h[b+16>>3]=o;h[b+24>>3]=o;h[b+48>>3]=-1.0;$x(l)|0;return m|0}function Wv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=Sy(f)|0;while(1){if(!d)break;e=Ex(a,d)|0;while(1){if(!e)break;if((c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+12>>2]|0)==(b|0))Vx(f,e,1)|0;e=Gx(a,e)|0}d=Ty(f,d)|0}return}function Xv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;f=gw(a,g)|0;g=c[g>>2]|0;i=ay(g)|0;h=hw(g)|0;i=i+-3|0;e=0;while(1){if((e|0)>=(i|0))break;j=qw(h)|0;d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;pw(h,a);d=Kx(g,d,j)|0}iw(g,j,f);d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;b=(c[a+16>>2]|0)+236|0;c[b>>2]=(c[b>>2]|0)+-1;ow(h,a);d=Kx(g,d,j)|0}dz(g,j)|0;e=e+1|0}$x(g)|0;nw(h);l=k;return f|0}function Yv(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;b=f;e=f+8|0;d=c[46162]|0;c[46162]=d+1;c[b>>2]=d;Y0(e,93221,b)|0;e=vA(a,e,1)|0;Az(e,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;Xy(e,b,1)|0;d=b+16|0;c[(c[(c[d>>2]|0)+112>>2]|0)+16+12>>2]=0;c[(c[(c[d>>2]|0)+112>>2]|0)+32>>2]=0;d=(c[(c[d>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-2;b=Ty(a,b)|0}b=Sy(a)|0;while(1){if(!b)break;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+4>>2]&1)){c[d+16>>2]=0;fw(a,b,e)}b=Ty(a,b)|0}l=f;return e|0}function Zv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((ay(a)|0)!=1){d=Sy(a)|0;while(1){if(!d)break;b=0;e=Jx(a,d)|0;while(1){if(!e)break;b=b+1|0;e=Kx(a,e,d)|0}if((b|0)==1)ew(d,d,0,0);d=Ty(a,d)|0}b=0;f=0;d=Sy(a)|0;while(1){if(!d)break;g=c[(c[d+16>>2]|0)+112>>2]|0;g=(c[g+32>>2]|0)+(c[g+16+12>>2]|0)|0;e=(g|0)>(b|0);b=e?g:b;f=e?d:f;d=Ty(a,d)|0}b=Kv()|0;e=f+16|0;d=(c[(c[e>>2]|0)+112>>2]|0)+16+4|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(b,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Mv(b,0,f);g=c[(c[e>>2]|0)+112>>2]|0;a=g+4|0;c[a>>2]=c[a>>2]|16;if(c[g+32>>2]|0){a=Kv()|0;d=(c[(c[e>>2]|0)+112>>2]|0)+24|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(a,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Tv(b,a)}}else{b=Kv()|0;g=Sy(a)|0;Mv(b,0,g);g=(c[(c[g+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|16}return b|0}function _v(a,b){a=a|0;b=b|0;var d=0;d=Sy(a)|0;while(1){if(!d)break;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&16))dw(a,d,b);d=Ty(a,d)|0}return}function $v(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=bw(a,b)|0;c[f>>2]=d;a:do if(d){e=0;while(1){if((e|0)>=10)break a;a=cw(a,b,f)|0;h=d;d=c[f>>2]|0;if((h|0)==(d|0)|(d|0)==0)break;else e=e+1|0}}while(0);l=g;return a|0}function aw(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0;b=0.0;while(1){a=c[a>>2]|0;if(!a)break;f=c[(c[c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]>>2]|0)+16>>2]|0;d=+h[f+32>>3];d=d>b?d:b;e=+h[f+40>>3];b=e>d?e:d;a=a+4|0}return +b}function bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=rw()|0;e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;c[c[(c[d+16>>2]|0)+120>>2]>>2]=0;d=Gx(b,d)|0}e=Ty(b,e)|0}j=1;d=0;while(1){h=c[a>>2]|0;if(!h)break;i=c[h>>2]|0;g=Jx(b,i)|0;while(1){if(!g)break;f=g+16|0;if((c[c[(c[f>>2]|0)+120>>2]>>2]|0)>0){a=nb[c[k>>2]&63](k,0,128)|0;while(1){if(!a)break;e=c[a+8>>2]|0;if((c[c[(c[e+16>>2]|0)+120>>2]>>2]|0)>(c[c[(c[f>>2]|0)+120>>2]>>2]|0)?(l=c[e>>2]&3,(c[((l|0)==2?e:e+-48|0)+40>>2]|0)!=(i|0)):0)d=d+((c[((l|0)==3?e:e+48|0)+40>>2]|0)!=(i|0)&1)|0;a=nb[c[k>>2]&63](k,a,8)|0}xw(k,g)}g=Kx(b,g,i)|0}e=Jx(b,i)|0;while(1){if(!e)break;a=c[(c[e+16>>2]|0)+120>>2]|0;if(!(c[a>>2]|0)){c[a>>2]=j;ww(k,e)}e=Kx(b,e,i)|0}a=h+4|0;j=j+1|0}vw(k);return d|0}function cw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[d>>2]|0;k=Sy(b)|0;a:while(1){if(!k)break;j=Jx(b,k)|0;while(1){if(!j)break;g=c[j>>2]&3;f=c[((g|0)==3?j:j+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?j:j+-48|0)+40>>2]|0;i=0;while(1){if((i|0)>=2)break;h=Qv(a)|0;Rv(a,k,f,i);g=bw(a,b)|0;if((g|0)<(e|0)){Lv(h);if(!g){e=0;break a}else e=g}else{Lv(a);a=h}i=i+1|0}j=Kx(b,j,k)|0}k=Ty(b,k)|0}c[d>>2]=e;return a|0}function dw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Kv()|0;e=Ex(a,b)|0;while(1){if(!e)break;f=e+-48|0;Mv(h,0,c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break;f=e+48|0;Mv(h,0,c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Ix(a,e)|0}a:do if((Sv(h)|0)>1){f=d+4|0;a=d;while(1){e=c[a>>2]|0;if(!e){g=13;break a}a=e+4|0;if(!(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32))continue;if(c[(c[(c[(c[c[((e|0)==(c[f>>2]|0)?d:a)>>2]>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break}Mv(d,e,b)}else g=13;while(0);b:do if((g|0)==13){c:do if((Sv(h)|0)>0){e=d;while(1){e=c[e>>2]|0;if(!e)break c;if(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break;e=e+4|0}Mv(d,e,b);break b}while(0);Mv(d,0,b)}while(0);e=h;while(1){e=c[e>>2]|0;if(!e)break;d=(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-33;e=e+4|0}Lv(h);return}function ew(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){g=c[(c[(c[b+16>>2]|0)+112>>2]|0)+16>>2]|0;if(!g)break;h=d+1|0;i=g+16|0;j=c[(c[i>>2]|0)+112>>2]|0;b=j+16|0;f=c[b+12>>2]|0;if(f){if((f|0)>(d|0)){k=11;break}b=c[b+4>>2]|0;f=b;if((b|0)==(e|0))b=j;else{d=j+24|0;if(!((c[j+32>>2]|0)!=0?(c[d>>2]|0)==(e|0):0))e=b;c[d>>2]=f;b=c[(c[i>>2]|0)+112>>2]|0;c[b+32>>2]=c[b+16+12>>2];b=c[(c[i>>2]|0)+112>>2]|0}b=b+16|0}c[b+4>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+16+12>>2]=h;b=g;d=h}if((k|0)==11?(c[j+32>>2]|0)<=(d|0):0){c[j+24>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+32>>2]=h}return}function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[(c[b+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|1;g=Jx(a,b)|0;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==3?g:g+48|0)+40>>2]|0;f=e+16|0;if(!(c[(c[(c[f>>2]|0)+112>>2]|0)+4>>2]&1)){Vx(d,g,1)|0;c[(c[(c[f>>2]|0)+112>>2]|0)+16>>2]=b;fw(a,e,d)}g=Kx(a,g,b)|0}return}function gw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+144|0;j=k+8|0;i=k;e=k+16|0;h=c[46163]|0;c[46163]=h+1;c[i>>2]=h;Y0(e,93230,i)|0;i=vA(b,e,1)|0;Az(i,134401,280,1)|0;h=c[46163]|0;c[46163]=h+1;c[j>>2]=h;Y0(e,93230,j)|0;h=b+24|0;a[j>>0]=a[h>>0]|0;a[j+1>>0]=a[h+1>>0]|0;a[j+2>>0]=a[h+2>>0]|0;a[j+3>>0]=a[h+3>>0]|0;j=Xx(e,j,0)|0;e=Sy(b)|0;while(1){if(!e)break;Xy(i,e,1)|0;h=az(j,ry(e)|0,1)|0;Az(h,134365,304,1)|0;c[(c[(c[e+16>>2]|0)+112>>2]|0)+16>>2]=h;e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;g=c[(c[(c[f+16>>2]|0)+112>>2]|0)+16>>2]|0;h=g+16|0;e=Ex(b,f)|0;while(1){if(!e)break;Vx(i,e,1)|0;m=c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+16>>2]|0;n=Rx(j,g,m,0,1)|0;Az(n,134378,176,1)|0;c[(c[n+16>>2]|0)+116>>2]=e;n=(c[h>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=Gx(b,e)|0}f=Ty(b,f)|0}c[d>>2]=j;l=k;return i|0}function hw(a){a=a|0;var b=0,c=0;c=jw()|0;b=Sy(a)|0;while(1){if(!b)break;ow(c,b);b=Ty(a,b)|0}return c|0}function iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[(c[b+16>>2]|0)+236>>2]|0;p=m<<2;o=vH(p)|0;p=vH(p)|0;i=0;l=Jx(a,b)|0;n=0;f=0;while(1){if(!l)break;e=c[l>>2]&3;g=c[((e|0)==2?l:l+-48|0)+40>>2]|0;if((g|0)==(b|0))g=c[((e|0)==3?l:l+48|0)+40>>2]|0;h=0;k=Jx(a,b)|0;j=i;while(1){if(!k)break;if((k|0)!=(l|0)){i=c[k>>2]&3;e=c[((i|0)==2?k:k+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((i|0)==3?k:k+48|0)+40>>2]|0;i=Rx(a,g,e,0,0)|0;if(i)if(g>>>0<e>>>0){e=j+1|0;h=i+16|0;i=c[(c[h>>2]|0)+116>>2]|0;if(!i)h=1;else{dz(d,i)|0;c[(c[h>>2]|0)+116>>2]=0;h=1}}else{h=1;e=j}else e=j}else e=j;k=Kx(a,k,b)|0;j=e}if(!h){c[p+(n<<2)>>2]=g;e=n+1|0}else{c[o+(f<<2)>>2]=g;e=n;f=f+1|0}i=j;l=Kx(a,l,b)|0;n=e}e=m+-1-i|0;a:do if((e|0)>0){if((e|0)<(n|0))g=0;else{if((e|0)!=(n|0))break;f=c[o>>2]|0;g=f+16|0;e=0;while(1){if((e|0)>=(n|0))break a;m=c[p+(e<<2)>>2]|0;Az(Rx(a,f,m,0,1)|0,134378,176,1)|0;d=(c[g>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=e+1|0}}while(1){if((g|0)>=(n|0)){f=2;break}f=g|1;if((f|0)>=(n|0)){f=2;break}d=c[p+(g<<2)>>2]|0;m=c[p+(f<<2)>>2]|0;Az(Rx(a,d,m,0,1)|0,134378,176,1)|0;d=(c[d+16>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;g=g+2|0;e=e+-1|0}while(1){if((e|0)<=0)break a;m=c[p>>2]|0;n=c[p+(f<<2)>>2]|0;Az(Rx(a,m,n,0,1)|0,134378,176,1)|0;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;n=(c[n+16>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;f=f+1|0;e=e+-1|0}}while(0);D_(p);D_(o);return}function jw(){return Cw(18136,c[4555]|0)|0}function kw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(16)|0;c[d+12>>2]=0;c[d+8>>2]=c[b+8>>2];return d|0}function lw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)<(e|0)?-1:(b|0)>(e|0)&1)|0}function nw(a){a=a|0;yw(a)|0;return}function ow(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d;e=b+16|0;c[f+8>>2]=c[(c[e>>2]|0)+236>>2];a=(nb[c[a>>2]&63](a,f,1)|0)+12|0;c[(c[e>>2]|0)+164>>2]=c[a>>2];c[a>>2]=b;l=d;return}function pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=b+16|0;c[g+8>>2]=c[(c[f>>2]|0)+236>>2];g=nb[c[a>>2]&63](a,g,4)|0;if(!g)qa(93240,93243,107,93253);e=g+12|0;d=c[e>>2]|0;if((d|0)==(b|0)){b=c[(c[f>>2]|0)+164>>2]|0;c[e>>2]=b;if(!b)nb[c[a>>2]&63](a,g,2)|0}else{do{a=(c[d+16>>2]|0)+164|0;d=c[a>>2]|0;e=(d|0)!=0}while(e&(d|0)!=(b|0));if(e)c[a>>2]=c[(c[d+16>>2]|0)+164>>2]}l=h;return}function qw(a){a=a|0;var b=0,d=0,e=0,f=0;d=nb[c[a>>2]&63](a,0,128)|0;if(d){f=d+12|0;b=c[f>>2]|0;e=c[(c[b+16>>2]|0)+164>>2]|0;c[f>>2]=e;if(!e)nb[c[a>>2]&63](a,d,2)|0}else b=0;return b|0}function rw(){return Cw(18172,c[4555]|0)|0}function sw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(12)|0;c[d+8>>2]=c[b+8>>2];return d|0}function tw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function vw(a){a=a|0;yw(a)|0;return}function ww(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function xw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,2)|0;l=d;return}function yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=ob[b&127](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Hw(a,0)|0;f=(b|0)==0;if(f){nb[c[c[a+16>>2]>>2]&63](a,0,64)|0;if((Ew(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;ob[c[e>>2]&127](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;ob[c[e>>2]&127](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)ob[c[a+12>>2]&127](a,a,0,h)|0}else D_(a);b=c[g>>2]|0;if(!b)b=0;else{ob[b&127](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function zw(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Aw(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Aw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Dw(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;vb[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}ob[c[j>>2]&127](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=nb[e&63](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=ob[c[a+12>>2]&127](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}vb[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=b$(b,f)|0;break}else{f=L0(b,f,n)|0;break}else f=ob[o&127](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,e,r);if((c[q>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,r)|0}return e|0}function Cw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=C_(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Kw(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=ob[d&127](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{D_(f);e=ob[c[d>>2]&127](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Kw(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=ob[c[d+12>>2]&127](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){D_(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)ob[e&127](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;nb[f&63](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Ew(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Dw(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Fw(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Fw(a){a=a|0;var b=0;if(!a)return 0;else{b=Fw(c[a+4>>2]|0)|0;return b+1+(Fw(c[a>>2]|0)|0)|0}return 0}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Dw(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;vb[f&127](a,g,E)}if((c[x>>2]|0)<0)ob[c[j>>2]&127](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=nb[c[a>>2]&63](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=b$(e,f)|0;break}else{f=L0(e,f,B)|0;break}else f=ob[C&127](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=nb[c[a>>2]&63](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)vb[e&127](a,g,E);if((c[x>>2]|0)<0){ob[c[a+12>>2]&127](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=nb[h&63](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=ob[c[a+12>>2]&127](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){vb[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=b$(f,h)|0;break}else{h=L0(f,h,B)|0;break}else h=ob[C&127](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,g,E);if((c[x>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Hw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Dw(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Dw(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=25;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=nb[c[c[n+16>>2]>>2]&63](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=b$(k,f)|0;break}else{g=L0(k,f,i)|0;break}else g=ob[j&127](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=nb[c[c[f+16>>2]>>2]&63](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(nb[c[c[g+16>>2]>>2]&63](g,e,4)|0)break;g=c[g+28>>2]|0}e=nb[c[c[h>>2]>>2]&63](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=nb[c[c[f+16>>2]>>2]&63](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=nb[c[c[a+16>>2]>>2]&63](a,b,d)|0;while(0);return e|0}function Jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+32|0;f=nb[c[a>>2]&63](a,0,128)|0;do{if(!f){e=0;break}h=c[g>>2]|0;e=f;f=nb[c[a>>2]&63](a,f,8)|0;e=nb[b&63]((h|0)==0?a:h,e,d)|0}while((e|0)>=0);return e|0}function Kw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Dw(a,0)|0;e=c[n+32>>2]|0;if(e|0?(ob[e&127](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?52:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=Aw(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Mw(0,e,g)|0;else e=nb[f&63](a,e,b)|0;c[h+4>>2]=e}nb[m&63](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?52:n}while(0);return b|0}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=C_(c)|0;else if(a){D_(b);a=0;break}else{a=F_(b,c)|0;break}while(0);return a|0}function Mw(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0<c>>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Nw(a){a=a|0;var b=0;b=c[46164]|0;c[46164]=a;return b|0}function Ow(a){a=a|0;var b=0;b=c[46165]|0;c[46165]=a;return b|0}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Qw(a,b,f)|0;l=e;return d|0}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[46167]|0:(a|0)==2?1:a;c[46167]=h;i=c[46168]|0;c[46168]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[46165]|0)>>>0){a=c[46166]|0;if(!a){a=l3()|0;c[46166]=a;if(!a){a=1;break}}if(!f){o3(a)|0;a=c[46166]|0}r0(a,b,d)|0;a=0}else{if(c[46164]|0){Rw(a,b,d);a=0;break}if(f)a=c[15686]|0;else{i=c[15686]|0;c[e>>2]=(a|0)==1?93267:93273;g1(i,93281,e)|0;a=i}r0(a,b,d)|0;a=0}while(0);l=g;return a|0}function Rw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[46169]|0)==0?(f=C_(c[4564]|0)|0,c[46169]=f,(f|0)==0):0)D1(93286,c[15686]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){kb[c[46164]&63]((a|0)==1?93267:93273)|0;kb[c[46164]&63](93945)|0}while(1){a=q0(c[46169]|0,c[4564]|0,b,d)|0;e=c[4564]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4564]=f;if(!(F_(c[46169]|0,f)|0)){e=9;break}}if((e|0)==7){kb[c[46164]&63](c[46169]|0)|0;break}else if((e|0)==9){D1(93286,c[15686]|0)|0;break}}while(0);return}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Qw(1,a,e)|0;l=d;return}function Tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=C_(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function Uw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=C_(e)|0;F3(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=F_(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function Vw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){Uw(a,d)|0;e=c[f>>2]|0}F3(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function Ww(a,b){a=a|0;b=b|0;return Vw(a,b,W_(b)|0)|0}function Xw(a){a=a|0;if(c[a+12>>2]|0)D_(c[a>>2]|0);return}function Yw(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function Zw(a,b,d){a=a|0;b=b|0;d=d|0;Qz(c[46171]|0,c[b+8>>2]|0)|0;Qz(c[46171]|0,c[b+12>>2]|0)|0;Ny(c[46171]|0,b);return}function _w(a,b){a=a|0;b=b|0;var c=0;c=yz(a,93334,0)|0;if((b|0)!=0&(c|0)==0){$w(a);c=yz(a,93334,0)|0}return c|0}function $w(a){a=a|0;var b=0,c=0,d=0;d=fz(a)|0;jB(d,d,104,0,1)|0;c=Sy(d)|0;while(1){if(!c)break;bx(a,c);b=Ex(d,c)|0;while(1){if(!b)break;cx(a,b);b=Gx(d,b)|0}c=Ty(d,c)|0}return}function ax(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;hx(b);c=yA(b)|0;ex((c|0)==0?b:c,b);return}function bx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function cx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function dx(a){a=a|0;return yz(a,93322,0)|0}function ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=Az(b,93322,16,0)|0;f=fx(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=fz(a)|0;c[e>>2]=fx(a,c[b>>2]&3)|0;a=gx(b)|0;d=d+12|0;c[d>>2]=My(ez(b)|0,((a|0)>4?a:4)<<2)|0;a=nb[c[f>>2]&63](f,0,128)|0;while(1){if(!a)break a;e=ez(b)|0;e=Oz(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=nb[c[f>>2]&63](f,a,8)|0}}while(0);return}function fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=_w(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;Pw(1,93347,d)|0;a=0;break a}}while(0);l=e;return a|0}function gx(a){a=a|0;var b=0;b=fz(ez(a)|0)|0;a=fx(b,c[a>>2]&3)|0;if(!a)a=0;else a=Ew(a)|0;return a|0}function hx(a){a=a|0;var b=0,d=0,e=0,f=0;d=Az(a,93334,20,0)|0;e=d+8|0;c[e>>2]=CA(a,18260,c[4563]|0)|0;f=d+12|0;c[f>>2]=CA(a,18260,c[4563]|0)|0;d=d+16|0;c[d>>2]=CA(a,18260,c[4563]|0)|0;b=yA(a)|0;if(!b){b=c[46170]|0;if(!((b|0)==0|(b|0)==(a|0))){b=_w(b,0)|0;ix(c[b+8>>2]|0,c[e>>2]|0,a,1);ix(c[b+12>>2]|0,c[f>>2]|0,a,2);ix(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=_w(b,0)|0;Hw(c[e>>2]|0,c[a+8>>2]|0)|0;Hw(c[f>>2]|0,c[a+12>>2]|0)|0;Hw(c[d>>2]|0,c[a+16>>2]|0)|0}return}function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=nb[c[b>>2]&63](b,0,128)|0;while(1){if(!g)break;h=jx(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;nb[c[d>>2]&63](d,h,1)|0;g=nb[c[b>>2]&63](b,g,8)|0}return}function jx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=My(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=Oz(b,d)|0;c[h+12>>2]=Oz(b,e)|0;c[h+16>>2]=f;return h|0}function kx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function lx(a,b){a=a|0;b=b|0;var c=0;c=Hw(a,0)|0;b=kx(a,b)|0;Hw(a,c)|0;return b|0}function mx(a,b){a=a|0;b=b|0;a=dx(a)|0;if(!a)a=0;else a=kx(c[a+8>>2]|0,b)|0;return a|0}function nx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[46170]|0;if(!b){a[g>>0]=a[18296]|0;a[g+1>>0]=a[18297]|0;a[g+2>>0]=a[18298]|0;a[g+3>>0]=a[18299]|0;b=Xx(0,g,0)|0;c[46170]=b}}if(!f)b=px(b,d,e)|0;else b=ox(b,d,e,f)|0;l=h;return b|0}function ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=fz(a)|0;_w(a,1)|0;g=fx(a,b)|0;f=lx(g,d)|0;a:do if(!f){f=kx(g,d)|0;if(f|0){f=jx(a,d,e,c[f+16>>2]|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;h=16;break}g=fx(i,b)|0;f=jx(a,d,e,Ew(g)|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;switch(b|0){case 0:{jB(i,i,57,f,1)|0;h=16;break a}case 1:{d=Sy(i)|0;while(1){if(!d){h=16;break a}qx(a,d,f);d=Ty(i,d)|0}}case 2:case 3:{g=Sy(i)|0;while(1){if(!g){h=16;break a}d=Ex(i,g)|0;while(1){if(!d)break;qx(a,d,f);d=Gx(i,d)|0}g=Ty(i,g)|0}}default:break a}}else{h=f+12|0;Qz(a,c[h>>2]|0)|0;c[h>>2]=Oz(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)rx(a,f,e)|0;iz(a,a,f);return f|0}function px(a,b,c){a=a|0;b=b|0;c=c|0;a=fx(a,b)|0;if(!a)a=0;else a=kx(a,c)|0;return a|0}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=dx(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=ob[c[(c[g>>2]|0)+8>>2]&127](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=Oz(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function rx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ez(a)|0;g=(dx(a)|0)+12|0;i=b+16|0;Qz(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=Oz(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(_w(h,0)|0)+16>>2]|0;f=b+8|0;g=lx(e,c[f>>2]|0)|0;if(!g){i=jx(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;nb[c[e>>2]&63](e,i,1)|0;break}else{i=g+12|0;Qz(h,c[i>>2]|0)|0;c[i>>2]=Oz(h,d)|0;break}}while(0);iz(h,a,b);return 0}function sx(a,b,d){a=a|0;b=b|0;d=d|0;a=fx(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=nb[b&63](a,0,128)|0;break}else{a=nb[b&63](a,d,8)|0;break}}else a=0;while(0);return a|0}function tx(a){a=a|0;var b=0;c[46171]=a;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,c[b>>2]|0)|0}b=_w(a,0)|0;if(b)if(((EA(a,c[b+8>>2]|0)|0)==0?(EA(a,c[b+12>>2]|0)|0)==0:0)?(EA(a,c[b+16>>2]|0)|0)==0:0){Cz(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function ux(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ez(a)|0;e=gx(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;Qz(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Ny(f,d);return}function vx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function wx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function xx(a,b){a=a|0;b=b|0;b=mx(a,b)|0;if(!b)b=0;else{a=c[(dx(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function yx(a,b){a=a|0;b=b|0;a=c[(dx(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function zx(a,b,c){a=a|0;b=b|0;c=c|0;b=mx(a,b)|0;if(!b)b=-1;else{rx(a,b,c)|0;b=0}return b|0}function Ax(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ez(a)|0;f=nx(f,c[a>>2]&3,b,0)|0;if(!f){f=ez(a)|0;f=nx(f,c[a>>2]&3,b,e)|0}rx(a,f,d)|0;return 0}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ez(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=sx(g,f&3,e)|0;if(!e)break a;d=mx(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=yx(a,e)|0;rx(b,d,f)|0;if(Rz(f)|0)Sz(yx(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Dx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0<f>>>0|(a|0)==(f|0)&g>>>0<e>>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0<i>>>0|(e|0)==(i|0)&a>>>0<h>>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Ex(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,d,4)|0}l=e;return a|0}function Gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Hx(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Jx(a,b){a=a|0;b=b|0;var c=0;c=Ex(a,b)|0;if(!c)c=Hx(a,b)|0;return c|0}function Kx(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Gx(a,b)|0;if(!b){b=0;do{if(!b)b=Hx(a,d)|0;else b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Lx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((gy(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(Px(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Mx(a,b){a=a|0;b=b|0;Ox(a,b);return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;Xy(b,d,1)|0;Xy(b,e,1)|0;h=My(b,96)|0;i=h+48|0;l=_x(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Ox(b,h);if(a[b+24>>0]&64){Az(h,93322,16,0)|0;cx(b,h)}gz(b,h);return h|0}function Ox(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(Px(a,e,f,d)|0)break;j=Fx(a,e)|0;m=a+44|0;Qx(c[m>>2]|0,j+32|0,g);k=a+48|0;Qx(c[k>>2]|0,j+24|0,g);j=Fx(a,f)|0;Qx(c[m>>2]|0,j+28|0,h);Qx(c[k>>2]|0,j+20|0,h);a=yA(a)|0}l=i;return}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Fx(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Dw(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,f,4)|0;c[g>>2]=zw(c[e>>2]|0)|0}else a=0;l=h;return a|0}function Qx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,1)|0;c[b>>2]=zw(a)|0;return}function Rx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(oy(a,2,e,k,0)|0))if(!e){if(f|0?(gy(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(a,b,d,i)|0;b:do if(!g){if(fy(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=Px(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,b,d,i)|0;if(!g){if(!(fy(a)|0))break;g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,d,b,i)|0;if(!g)break}Mx(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Lx(a,b,d)|0)!=0?(oy(a,2,e,k,1)|0)!=0:0){g=k;g=Nx(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;sy(a,2,g)}else g=0;l=n;return g|0}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Fx(a,c[d+40>>2]|0)|0;f=a+44|0;Tx(c[f>>2]|0,h+32|0,g);e=a+48|0;Tx(c[e>>2]|0,h+24|0,g);b=Fx(a,b)|0;Tx(c[f>>2]|0,b+28|0,d);Tx(c[e>>2]|0,b+20|0,d);return}function Tx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,2)|0;c[b>>2]=zw(a)|0;return}function Ux(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(Px(b,h,g,f)|0){if((fz(b)|0)==(b|0)){if(a[b+24>>0]&64)wx(d);kz(b,d);Iz(d);h=d+8|0;qy(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(jB(b,d,58,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=Xy(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=Xy(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=Px(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Ox(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function Wx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=t3(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=Yx(e)|0;f=lb[c[(c[j>>2]|0)+4>>2]&127](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=lb[c[c[j+4>>2]>>2]&127](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(oy(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=Zx(f)|0;sy(k,0,f);l=h;return k|0}function Yx(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?18632:e}else e=18632;g=kb[c[e>>2]&63](b)|0;f=lb[c[e+4>>2]&127](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?18508:g;b=c[b+8>>2]|0;b=(b|0)==0?18608:b}else{c[f+4>>2]=18508;b=18608}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function Zx(b){b=b|0;var d=0,e=0;c[b+36>>2]=CA(b,18688,c[4563]|0)|0;c[b+40>>2]=CA(b,18652,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+44>>2]=CA(b,d?18300:18336,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+48>>2]=CA(b,d?18372:18408,c[4563]|0)|0;c[b+52>>2]=CA(b,18444,c[4563]|0)|0;d=yA(b)|0;if(!((d|0)!=0?(e=_x(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,nb[c[e>>2]&63](e,b,1)|0,!(a[d+24>>0]&64)):0))ax(b);gz(b,b);return b|0}function _x(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function $x(b){b=b|0;var d=0,e=0,f=0,g=0;f=yA(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){kz(b,b);g=b+8|0;qy(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;tb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=wA(b)|0;while(1){if(!d)break;e=xA(d)|0;$x(d)|0;d=e}d=Sy(b)|0;while(1){if(!d)break;e=Ty(b,d)|0;cz(b,d)|0;d=e}By(b);kz(b,b);if(((((EA(b,c[b+40>>2]|0)|0)==0?(EA(b,c[b+36>>2]|0)|0)==0:0)?(EA(b,c[b+48>>2]|0)|0)==0:0)?(EA(b,c[b+44>>2]|0)|0)==0:0)?(EA(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?tx(b)|0:0){d=-1;break}Iz(b);e=b+8|0;qy(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){zA(f,b)|0;Ny(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;nz(b,c[f>>2]|0)|0}tb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Jz(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;ub[c[f>>2]&63](g,b);ub[c[f>>2]&63](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function ay(a){a=a|0;return Ew(c[a+40>>2]|0)|0}function by(a){a=a|0;var b=0,c=0,d=0;b=0;c=Sy(a)|0;while(1){if(!c)break;d=(cy(a,c,0,1)|0)+b|0;b=d;c=Ty(a,c)|0}return b|0}function cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Fx(a,b)|0;if(f){if(!e)b=0;else b=dy(c[a+44>>2]|0,f+32|0)|0;if(d)b=(dy(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function dy(a,b){a=a|0;b=b|0;var d=0;Dw(a,c[b>>2]|0)|0;d=Ew(a)|0;c[b>>2]=zw(a)|0;return d|0}function ey(b){b=b|0;return a[b+24>>0]&1|0}function fy(a){a=a|0;return (ey(a)|0)==0|0}function gy(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function hy(a,b){a=a|0;b=b|0;return a|0}function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1392;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=s3(d|0,f|0,2,0)|0;e=1392;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Lz(a,d)|0;else a=Oz(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)Qz(a,c)|0;return}function ly(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function my(a){a=a|0;return}function ny(a,b,c){a=a|0;b=b|0;c=c|0;return}function oy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=ty(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;uy(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return ob[c[(c[a+4>>2]|0)+8>>2]&127](c[a+16>>2]|0,b,d,e)|0}function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;zy(a,b,d,e)|0;a=c[a+64>>2]|0;xb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function ry(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ez(a)|0;f=a+8|0;b=f;b=xy(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=ob[d&127](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;Y0(191693,93374,g)|0;b=191693}}while(0);l=h;return b|0}function sy(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;vb[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Lz(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=nb[c[b>>2]&63](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=My(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=Oz(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=CA(a,18536,c[4563]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=CA(a,18572,c[4563]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}nb[c[f>>2]&63](f,h,1)|0;nb[c[b>>2]&63](b,h,1)|0;return}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0)<<31>>31)|0}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=yy(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function yy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=nb[c[a>>2]&63](a,f,4)|0}l=g;return a|0}function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=yy(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;nb[c[d>>2]&63](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;nb[c[e>>2]&63](e,b,2)|0;Qz(a,c[b+24>>2]|0)|0;Ny(a,b);b=1}return b|0}function Ay(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[46171]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=nb[c[e>>2]&63](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;zy(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function By(a){a=a|0;c[46171]=a;a=a+64|0;Cy((c[a>>2]|0)+56|0);Cy((c[a>>2]|0)+68|0);return}function Cy(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){yw(e)|0;c[d>>2]=0}b=b+1|0}return}function Dy(a,b,c){a=a|0;b=b|0;c=c|0;if(!(O0(b,c,a)|0))a=0;else a=W_(b)|0;return a|0}function Ey(a,b){a=a|0;b=b|0;return D1(b,a)|0}function Fy(a){a=a|0;return w1(a)|0}function Gy(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4656]=c[4653];c[4657]=c[4654];c[e>>2]=a;c[e+4>>2]=W_(a)|0;c[e+8>>2]=0;c[d>>2]=18632;c[d+4>>2]=18508;c[d+8>>2]=18620;a=TB(e,d)|0;Uz(0);l=b;return a|0}function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Iy(a){a=a|0;return 0}function Jy(a,b){a=a|0;b=b|0;a=C_(b)|0;H3(a|0,0,b|0)|0;return a|0}function Ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=F_(b,d)|0;if(d>>>0>c>>>0)H3(a+c|0,0,d-c|0)|0;return a|0}function Ly(a,b){a=a|0;b=b|0;D_(b);return}function My(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[(c[a>>2]|0)+4>>2]&127](c[a+12>>2]|0,b)|0;if(!a)Pw(1,93380,d)|0;l=d;return a|0}function Ny(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;ub[c[(c[a>>2]|0)+12>>2]&63](c[a+12>>2]|0,b)}return}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function Py(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Ny(c[a+24>>2]|0,b);return}function Qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0<e>>>0?-1:b>>>0>e>>>0&1)|0}function Ry(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=183176;c[e>>2]=b;c[e+4>>2]=d;c[46176]=183168;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,184688,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Sy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Ty(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Uy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Vy(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Wy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ry(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=fz(a)|0;if((e|0)!=(a|0)?(f=Ry(e,b,c)|0,f|0):0){Xy(a,f,1)|0;e=f;break}if(!(py(a,1,b,c)|0))e=0;else{e=_x(a,1)|0;e=Yy(a,b,c,e,z)|0;Zy(a,e);_y(a,e)}}while(0);return e|0}function Xy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=fz(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=yA(a)|0;if(!e)e=0;else{d=Xy(e,b,d)|0;$y(a,d);return d|0}}}else e=0;return e|0}function Yy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=My(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=fz(b)|0;if(a[(fz(b)|0)+24>>0]&64)Az(g,93322,16,0)|0;return g|0}function Zy(a,b){a=a|0;b=b|0;do{$y(a,b);a=yA(a)|0}while((a|0)!=0);return}function _y(b,c){b=b|0;c=c|0;if(a[(fz(b)|0)+24>>0]&64)bx(b,c);gz(b,c);return}function $y(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Ew(c[e>>2]|0)|0;if((fz(a)|0)==(a|0))d=b+28|0;else d=My(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;nb[c[e>>2]&63](e,d,1)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=fz(a)|0;if(oy(a,1,b,g,0)|0){e=g;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=Ry(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=Xy(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(oy(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=_x(a,1)|0;e=Yy(a,h,i,e,z)|0;Zy(a,e);_y(a,e);sy(a,1,e)}else e=0;l=j;return e|0}function bz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[46185]=b;d=Jx(a,b)|0;while(1){if(!d)break;e=Kx(a,d,b)|0;Sx(a,d,0);d=e}e=c[a+40>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;return}function cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(Ry(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((fz(b)|0)==(b|0)){e=Jx(b,d)|0;while(1){if(!e)break;g=Kx(b,e,d)|0;Ux(b,e)|0;e=g}if(a[b+24>>0]&64)vx(d);kz(b,d);Iz(d);g=f;qy(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(jB(b,d,59,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function dz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((yA(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{Pw(1,93406,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=cz(a,b)|0;break a}case 2:case 3:{f=Ux(a,b)|0;break a}case 0:{f=$x(b)|0;break a}default:{}}while(0);l=h;return f|0}function ez(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function fz(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function gz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,100,0);else hz(b,d,c[e+48>>2]|0);return}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){hz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function iz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))qz(b,d,101,e);else jz(b,d,e,c[f+48>>2]|0);return}function jz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){jz(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)xb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function kz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,102,0);else lz(b,d,c[e+48>>2]|0);return}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){lz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Ny(a,d);d=0}while(0);return d|0}function oz(a,b){a=a|0;b=b|0;var d=0;d=fz(a)|0;a:do if((d|0)==(fz(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=yA(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(Wy(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(Vx(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function pz(a){a=a|0;return c[a>>2]&3|0}function qz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=Az(a,93430,44,0)|0;switch(c|0){case 100:{e=rz(f,b,100)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}case 101:{if(((sz(rz(f,b,100)|0,b)|0)==0?(sz(rz(f,b,102)|0,b)|0)==0:0)?(e=rz(f,b,101)|0,(sz(e,b)|0)==0):0)tz(e,a,b,d)|0;break}case 102:{uz(rz(f,b,100)|0,b);uz(rz(f,b,101)|0,b);e=rz(f,b,102)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}default:Pw(1,93442,g)|0}l=h;return}function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){Pw(1,93476,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ez(b)|0;a=CA(a,18724,c[4563]|0)|0;c[d>>2]=a}l=g;return a|0}function sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=vz(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=My(ez(d)|0,32)|0;c[f+20>>2]=d;g=vz(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=My(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}nb[c[a>>2]&63](a,f,1)|0;return f|0}function uz(a,b){a=a|0;b=b|0;b=sz(a,b)|0;if(b|0)nb[c[a>>2]&63](a,b,2)|0;return}function vz(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function wz(a,b,d){a=a|0;b=b|0;d=d|0;xz(b);Ny(c[b+16>>2]|0,b);return}function xz(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Ny(c[b>>2]|0,a);a=d}return}function yz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(b$(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}zz(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else Pw(1,93501,i)|0}while(0);l=k;return f|0}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function Az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ez(a)|0;f=yz(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=My(h,d)|0;c[d>>2]=Oz(h,b)|0;switch(c[a>>2]&3){case 0:{Bz(a,d);g=d;break a}case 1:{Bz(a,d);g=d;break a}case 2:case 3:{Bz(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)yz(a,b,1)|0;return g|0}function Bz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))zz(a,b,0);return}function Cz(a,b){a=a|0;b=b|0;var d=0,e=0;e=ez(a)|0;d=yz(a,b,0)|0;if(!d)b=-1;else{Dz(a,d);if(!(c[a>>2]&3)){Ez(e,a,d);b=d}else{jB(fz(e)|0,a,60,d,0)|0;b=d}Qz(e,c[d>>2]|0)|0;Ny(e,b);b=0}return b|0}function Dz(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Ez(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;zz(b,(a|0)==(d|0)?0:a,0)}return}function Fz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{Az(a,c,g,e)|0;if(!f){b=wA(a)|0;while(1){if(!b)break a;Fz(b,0,c,d,e);b=xA(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break a;b:do if(d)Az(b,c,g,e)|0;else{f=Ex(a,b)|0;while(1){if(!f)break b;Az(f,c,g,e)|0;f=Gx(a,f)|0}}while(0);b=Ty(a,b)|0}}default:{}}while(0);return}function Gz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{jB(a,a,61,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=Sy(a)|0;while(1){if(!d)break a;b:do if(e)Cz(d,c)|0;else{b=Ex(a,d)|0;while(1){if(!b)break b;Cz(b,c)|0;b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}}default:{}}while(0);return}function Hz(a,b,c){a=a|0;b=b|0;c=c|0;Cz(b,c)|0;return}function Iz(a){a=a|0;var b=0,d=0,e=0;d=ez(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;Qz(d,c[e>>2]|0)|0;Ny(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Jz(a){a=a|0;return EA(a,Kz(a)|0)|0}function Kz(a){a=a|0;var b=0,d=0;if(!a)d=184760;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=CA(a,18760,c[4563]|0)|0;c[d>>2]=b;a=183232;c[a>>2]=-2147483648;c[a+4>>2]=0;a=183240;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Lz(a,b){a=a|0;b=b|0;return Mz(Kz(a)|0,b)|0}function Mz(a,b){a=a|0;b=b|0;a=Nz(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Nz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function Oz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{e=d+8|0;b=e;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Pz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;g=183232;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{g=d+8|0;f=g;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Kz(a)|0,e=Nz(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=s3(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=183240,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){DA(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function Rz(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=183232;a=c[b>>2]&c[a>>2]}return a|0}function Sz(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=183232;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function Tz(a){a=a|0;c[4699]=a;return}function Uz(a){a=a|0;c[46195]=a;c[4699]=1;return}function Vz(a,b){a=a|0;b=b|0;c[46196]=a;c[46197]=b;c[46198]=0;return}function Wz(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[46199]|0)){c[46199]=1;if(!(c[46200]|0))c[46200]=1;if(!(c[46191]|0))c[46191]=c[15621];if(!(c[46192]|0))c[46192]=c[15653];k=c[46201]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){Xz();k=Yz(c[46191]|0,16384)|0;c[c[46201]>>2]=k}Zz()}a:while(1){j=c[46202]|0;a[j>>0]=a[191725]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;f=j;b:while(1){h=f;while(1){f=c[18800+(d[h>>0]<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=h}c:while(1){g=f&255;do{f=g+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(f<<1)>>1]|0))break c;k=b[64684+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[19824+(g<<2)>>2]|0}e=b[64894+(f<<1)>>1]|0;f=h+1|0;if((b[63938+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[63752+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[63752+(c[46203]<<1)>>1]|0;f=c[46204]|0}else e=e<<16>>16;c[46193]=j;i=f;c[46194]=i-k;a[191725]=a[f>>0]|0;a[f>>0]=0;c[46202]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[46193]|0;a[f>>0]=a[191725]|0;e=c[46201]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[46206]=n;c[g>>2]=c[46191];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[46206]|0;if((c[46202]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(gA()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[46202]=c[46193];e=(((c[46200]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[191725]|0;f=c[46204]|0;e=c[46203]|0}if((m|0)==128){m=0;g=i-h|0;h=c[46193]|0;f=h+(g+-1)|0;c[46202]=f;e=eA()|0;i=fA(e)|0;j=c[46193]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[46201]>>2]|0)+4>>2]|0)+(c[46206]|0)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[46202]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[46193]|0)+(i-h+-1)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}switch(m|0){case 29:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 32:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=3;continue a}case 35:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;continue a}case 42:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;_z();continue a}case 47:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=5;aA();continue a}case 89:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(95669);continue a}case 92:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(93534);continue a}case 95:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 98:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 101:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=7;c[46205]=1;aA();continue a}case 104:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;n=(c[46205]|0)+-1|0;c[46205]=n;if(!n){m=108;break a}cA(c[46193]|0);continue a}case 109:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46205]=(c[46205]|0)+1;cA(e);continue a}case 112:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);c[4699]=(c[4699]|0)+1;continue a}case 115:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 121:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;E1(e,f,1,c[46192]|0)|0;continue a}}}switch(m|0){case 27:{e=c[46194]|0;if(!e)l=-1;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[46194]|0;if(!e)l=259;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[46194]|0;if(!e)l=260;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=258;l=258}else l=258;break}case 61:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=261;l=261}else l=261;break}case 65:{e=c[46194]|0;if(!e)l=263;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[46194]|0;if(!e)l=262;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==261?264:45;break}case 72:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==258?264:45;break}case 75:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46221]=Oz(c[46171]|0,e)|0;l=267;break}case 78:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if($z()|0){m=(c[46194]|0)+-1|0;a[f>>0]=a[191725]|0;n=j+m|0;c[46202]=n;c[46193]=j;c[46194]=m;a[191725]=a[n>>0]|0;a[n>>0]=0;c[46202]=n}c[46221]=Oz(c[46171]|0,c[46193]|0)|0;l=267;break}case 86:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;bA();l=268;break}case 108:{c[46200]=1;dA();l=268;break}case 118:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{hA(93537);break}}return l|0}function Xz(){var a=0,b=0,d=0;b=c[46201]|0;do if(!b){a=oA(4)|0;c[46201]=a;if(!a)hA(93895);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[46212]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=iA(b,a<<2)|0;c[46201]=b;if(!b)hA(93895);else{d=b+(c[46212]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[46212]=a;return}function Yz(a,b){a=a|0;b=b|0;var d=0;d=oA(48)|0;if(!d)hA(93850);c[d+12>>2]=b;b=oA(b+2|0)|0;c[d+4>>2]=b;if(!b)hA(93850);else{c[d+20>>2]=1;kA(d,a);return d|0}return 0}function Zz(){var b=0,d=0;d=c[46201]|0;b=c[d>>2]|0;c[46206]=c[b+16>>2];b=c[b+8>>2]|0;c[46202]=b;c[46193]=b;c[46191]=c[c[d>>2]>>2];a[191725]=a[b>>0]|0;return}function _z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[46193]|0;b=h+1|0;i=(z$(b,93834,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=N1(b,93839,f)|0;if((f|0)>0?(c[4699]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;nA(d,b-d|0)}}l=g;return}function $z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[46193]|0)+((c[46194]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(mA()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[46195]|0;Tw(h,1024,b);Ww(h,93745)|0;Ww(h,c[46193]|0)|0;c[f>>2]=c[4699];Y0(d,93789,f)|0;Ww(h,d)|0;Ww(h,(k|0)==0?93739:k)|0;Ww(h,93806)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;Pw(0,93831,i)|0;Xw(h);b=1}l=j;return b|0}function aA(){var b=0;b=c[46207]|0;if(!b){b=C_(1024)|0;c[46207]=b;c[46209]=b+1024}c[46208]=b;a[b>>0]=0;return}function bA(){c[46221]=Oz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function cA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[46208]|0;d=c[46207]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[46208]=e;f=c[46209]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0<f>>>0);c[46208]=e;f=d;i=g-f<<1;d=F_(d,i)|0;c[46207]=d;c[46209]=d+i;e=d+(e-f)|0;f=3}c[46208]=e;return}function dA(){c[46221]=Pz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function eA(){var d=0,e=0,f=0,g=0,h=0;h=c[46202]|0;g=c[46193]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[18800+((d&255)<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=g}a:while(1){f=d&255;do{d=f+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(d<<1)>>1]|0))break a;d=b[64684+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[19824+(f<<2)>>2]|0}g=g+1|0;e=b[64894+(d<<1)>>1]|0}return e|0}function fA(a){a=a|0;var d=0;if(b[63752+(a<<1)>>1]|0){d=c[46202]|0;c[46203]=a;c[46204]=d}while(1){d=(b[63938+(a<<1)>>1]|0)+1|0;if((a|0)==(b[64148+(d<<1)>>1]|0))break;a=b[64684+(a<<1)>>1]|0}d=b[64894+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function gA(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[46201]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[46193]|0;l=c[46202]|0;k=l;if(l>>>0>(i+((c[46206]|0)+1)|0)>>>0)hA(93592);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[46206]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=iA(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[46202]=j;f=c[c[46201]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=nb[c[c[(c[46196]|0)+8>>2]>>2]&63](c[46197]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[46201]>>2]|0;c[46206]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}hA(93648)}while(0);do if((m|0)==17)if(!l){jA(c[46191]|0);b=1;d=c[46206]|0;e=c[c[46201]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=iA(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[46201]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)hA(93692);else{n=c[46206]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[46206]=n;a[o+n>>0]=0;o=c[46201]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[46206]|0)+1)>>0]=0;c[46193]=c[(c[o>>2]|0)+4>>2]}return b|0}function hA(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[15686]|0;c[b>>2]=a;g1(d,93588,b)|0;Sa(2)}function iA(a,b){a=a|0;b=b|0;return F_(a,b)|0}function jA(a){a=a|0;var b=0,d=0,e=0;d=c[46201]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{Xz();b=Yz(c[46191]|0,16384)|0;d=c[46201]|0;c[d>>2]=b;if(!d)b=0;else e=4}kA(b,a);Zz();return}function kA(a,b){a=a|0;b=b|0;var d=0;d=c[(O_()|0)>>2]|0;lA(a);c[a>>2]=b;c[a+40>>2]=1;b=c[46201]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(O_()|0)>>2]=d;return}function lA(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[46201]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))Zz()}return}function mA(){var b=0,d=0;d=c[46193]|0;b=(c[46194]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function nA(a,b){a=a|0;b=b|0;var d=0;d=c[46210]|0;if((d|0)<(b|0)){if(!d)d=C_(b+1|0)|0;else d=F_(c[46211]|0,b+1|0)|0;c[46211]=d;c[46210]=b}else d=c[46211]|0;b0(d,a)|0;c[46195]=c[46211];return}function oA(a){a=a|0;return C_(a)|0}function pA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;Tw(j,1024,m+1080|0);e=c[46195]|0;if(e|0){Ww(j,e)|0;Ww(j,93945)|0}Ww(j,b)|0;c[f>>2]=c[4699];Y0(d,93948,f)|0;Ww(j,d)|0;a:do if(!(a[c[46193]>>0]|0))switch(((c[46200]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;Y0(d,93968,g)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94030)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 3:{c[h>>2]=16384;Y0(d,94049,h)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94117)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 1:{c[i>>2]=16384;Y0(d,94136,i)|0;Ww(j,d)|0;break a}default:break a}else{Ww(j,93960)|0;Ww(j,c[46193]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){Uw(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;Pw(1,93831,k)|0;Xw(j);l=m;return}function qA(){rA(c[46193]|0);return}function rA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[46202]|0;a[j>>0]=a[191725]|0;i=c[46201]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[46206]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[46206]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)hA(94195);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[46193]=l;a[191725]=a[b>>0]|0;c[46202]=b;return}function sA(){var a=0;a=c[46201]|0;if(!a)a=0;else a=c[a>>2]|0;lA(a);return}function tA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;FA(a,c[g>>2]|0,18444);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function uA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=tA(b,d,e)|0;if(!f){f=My(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;Zx(f)|0}return f|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(oy(a,0,b,f,0)|0)!=0:0)?(e=f,e=tA(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(oy(a,0,b,f,1)|0)!=0:0){e=f;e=uA(a,c[e>>2]|0,c[e+4>>2]|0)|0;sy(a,0,e)}else e=0;l=g;return e|0}function wA(a){a=a|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,0,128)|0}function xA(a){a=a|0;var b=0;b=yA(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=nb[c[b>>2]&63](b,a,8)|0}return a|0}function yA(a){a=a|0;return c[a+56>>2]|0}function zA(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,b,2)|0}function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[46213]|0;e=(b|0)!=0;do if(!a)if(e){D_(b);a=0;break}else{a=C_(d)|0;break}else if(e){Ny(a,b);a=0;break}else{a=My(a,d)|0;break}while(0);return a|0}function BA(a,b,d){a=a|0;b=b|0;d=d|0;a=c[46213]|0;if(!a)D_(b);else Ny(a,b);return}function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=7;c[46213]=a;d=Cw(b,d)|0;c[e>>2]=f;c[46213]=0;return d|0}function DA(a,b,d){a=a|0;b=b|0;d=d|0;c[46213]=a;return nb[c[b>>2]&63](b,d,2)|0}function EA(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Kw(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=7;c[46213]=a;if(!(yw(b)|0)){c[d>>2]=e;c[46213]=0;a=0}else a=1;return a|0}function FA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Kw(b,0,0)|0)!=(c|0):0)Kw(b,c,0)|0;return}function GA(a,b){a=a|0;b=b|0;if(!(Rz(a)|0))b=IA(a,b)|0;else HA(a,b)|0;return b|0}function HA(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function IA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(M$(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[5005]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(M$(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((M$(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=20024;while(1){f=c[e>>2]|0;if(!f)break a;if(!(O$(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=94227;while(0);return b|0}function JA(a){a=a|0;return GA(a,KA(a)|0)|0}function KA(a){a=a|0;var b=0;b=((W_(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[46215]|0;if(b>>>0>(c[46214]|0)>>>0){if(!a)a=C_(b)|0;else a=F_(a,b)|0;c[46215]=a;c[46214]=b}return a|0}function LA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if((MA(a)|0)==0?Xy(a,b,0)|0:0){a=1;break}a=xA(a)|0}return a|0}function MA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=ry(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=dx(b)|0;b:do if(d|0?(f=dx(yA(b)|0)|0,f|0):0){h=Ew(c[(dx(fz(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?b$(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=_w(b,0)|0;if(d)if((Ew(c[d+8>>2]|0)|0)>0)d=0;else return (Ew(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function NA(b,d){b=b|0;d=d|0;var e=0,f=0;c[46216]=0;e=xx(b,94237)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=i1(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[5005]=f;OA(b,1);if(((PA(b,d,1)|0)!=-1?(QA(b,d)|0)!=-1:0)?(RA(b,d)|0)!=-1:0){c[5005]=128;b=kb[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&63](d)|0}else b=-1;return b|0}function OA(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;OA(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function PA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(yA(b)|0)!=0:0){i=0;g=191979;k=106488}else{k=(a[b+24>>0]&1)==0?191979:94281;g=(gy(b)|0)==0;c[46217]=nx(b,2,108373,0)|0;c[46218]=nx(b,2,108382,0)|0;i=1;g=g?191979:94284}f=ry(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=99578}else{h=0;j=191979;f=191979}do if((SA(b,d)|0)!=-1?(TA(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((TA(b,d,k)|0)==-1){f=-1;break}if((TA(b,d,99571)|0)==-1){f=-1;break}}if(!g?(cB(b,d,f)|0)==-1:0){f=-1;break}if(((TA(b,d,j)|0)!=-1?(TA(b,d,94292)|0)!=-1:0)?(c[46216]=(c[46216]|0)+1,(hB(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function QA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((UA(a,b)|0)==-1)d=-1;else{k=_w(fz(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=Sy(a)|0;while(1){if(!h){d=0;break a}if(VA(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((WA(h,b,d)|0)==-1){d=-1;break a}}g=Ex(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(VA(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((WA(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(XA(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((YA(g,b,e)|0)==-1){d=-1;break a}}g=Gx(a,g)|0}h=Ty(a,h)|0}}while(0);return d|0}function RA(a,b){a=a|0;b=b|0;c[46216]=(c[46216]|0)+-1;if((SA(a,b)|0)==-1)a=-1;else a=((TA(a,b,107982)|0)==-1)<<31>>31;return a|0}function SA(a,b){a=a|0;b=b|0;var d=0;d=c[46216]|0;while(1){if((d|0)<=0){d=0;break}if((TA(a,b,150515)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function TA(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&127](b,d)|0}function UA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if(!(MA(a)|0)){if((PA(a,b,0)|0)==-1){a=-1;break}if((QA(a,b)|0)==-1){a=-1;break}if((RA(a,b)|0)==-1){a=-1;break}}else UA(a,b)|0;a=xA(a)|0}return a|0}function VA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((LA(a,b)|0)==0?(eB(a,b,c,d)|0)!=0:0)if((fB(a,b)|0)==0?(gB(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function WA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ez(a)|0;do if((SA(d,b)|0)!=-1?(ZA(a,b)|0)!=-1:0){if(($A(a)|0)==0?(aB(a,b,c)|0)==-1:0){a=-1;break}a=TA(d,b,94248)|0}else a=-1;while(0);return a|0}function XA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=1;break}if((MA(a)|0)==0?Vx(a,b,0)|0:0){a=0;break}a=xA(a)|0}return a|0}function YA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ez(g)|0;do if((((((SA(f,b)|0)!=-1?(ZA(g,b)|0)!=-1:0)?(_A(a,b,c[46217]|0)|0)!=-1:0)?(g=(ey(ez(g)|0)|0)!=0,(TA(f,b,g?97053:97058)|0)!=-1):0)?(ZA(e,b)|0)!=-1:0)?(_A(a,b,c[46218]|0)|0)!=-1:0){if(!($A(a)|0)){if((aB(a,b,d)|0)==-1){a=-1;break}}else if((bB(a,b,1)|0)==-1){a=-1;break}a=TA(f,b,94248)|0}else a=-1;while(0);return a|0}function ZA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=ry(a)|0;f=ez(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;Y0(d,94268,g)|0;if((TA(f,b,d)|0)==-1)a=-1;else h=4}else if((cB(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function _A(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ez(b)|0,f=yx(b,d)|0,(a[f>>0]|0)!=0):0)if((TA(e,c,104958)|0)==-1)b=-1;else{do if(Rz(f)|0){if((cB(e,c,f)|0)==-1){b=-1;break a}}else{b=A$(f,58)|0;if(!b)if((dB(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((dB(e,c,f,0)|0)==-1){b=-1;break a}if((TA(e,c,104958)|0)==-1){b=-1;break a}if((dB(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function $A(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function aB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(bB(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=dx(a)|0;j=ez(a)|0;c:do if(f){i=f+12|0;h=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[46217]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[46218]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((TA(j,b,94263)|0)==-1){e=-1;break b}if((SA(j,b)|0)==-1){e=-1;break b}}else{if((SA(j,b)|0)==-1){e=-1;break b}if((TA(j,b,94260)|0)==-1){e=-1;break b}c[46216]=(c[46216]|0)+1}if((cB(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((TA(j,b,94266)|0)==-1){e=-1;break b}if((cB(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=nb[c[d>>2]&63](d,h,8)|0}}while(0);if((e|0)>0){if((TA(j,b,94258)|0)==-1){e=-1;break}c[46216]=(c[46216]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function bB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ry(b)|0;b=ez(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((TA(b,c,94251)|0)!=-1?(cB(b,c,e)|0)!=-1:0)if((d|0)!=0?(TA(b,c,94258)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function cB(a,b,c){a=a|0;b=b|0;c=c|0;return dB(a,b,c,1)|0}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=IA(c,KA(c)|0)|0;else c=JA(c)|0;return TA(a,b,c)|0}function eB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0<d>>>0:0))b=0;else{b=Hx(a,b)|0;while(1){if(!b){b=1;break a}if(0<e>>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0<d>>>0:0)){b=0;break a}b=Ix(a,b)|0}}while(0);return b|0}function fB(a,b){a=a|0;b=b|0;if(!(Hx(a,b)|0))a=(Ex(a,b)|0)==0&1;else a=0;return a|0}function gB(a){a=a|0;var b=0,d=0,e=0;a=dx(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}}while(0);return a|0}function hB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=_w(a,0)|0;if(e)if(((iB(a,b,108412,c[e+16>>2]|0,d)|0)!=-1?(iB(a,b,108399,c[e+8>>2]|0,d)|0)!=-1:0)?(iB(a,b,108368,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Hw(f,0)|0;k=(l|0)==0;j=nb[c[f>>2]&63](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=nb[c[l>>2]&63](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((TA(b,d,94263)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}else{if((SA(b,d)|0)==-1){g=-1;break}if((TA(b,d,e)|0)==-1){g=-1;break}if((TA(b,d,94260)|0)==-1){g=-1;break}c[46216]=(c[46216]|0)+1}if((cB(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((TA(b,d,94266)|0)==-1){g=-1;break}if((cB(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=nb[c[f>>2]&63](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[46216]=(c[46216]|0)+-1;if((g|0)!=1){if((TA(b,d,150517)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}g=(TA(b,d,94295)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Hw(f,l)|0;g=0}while(0);return g|0}function jB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=80;break}case 1:{g=81;break}case 3:case 2:{g=82;break}default:{}}b=lb[g&127](a,b)|0;if(!b)b=-1;else{nB(a,b,d,e,g,f);b=0}return b|0}function kB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Vx(a,b,0)|0;return b|0}function lB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Xy(a,b,0)|0;return b|0}function mB(a,b){a=a|0;b=b|0;return a|0}function nB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)vb[c&127](a,b,d);g=wA(a)|0;while(1){if(!g)break;i=lb[e&127](g,b)|0;if(i|0)nB(g,i,c,d,e,f);g=xA(g)|0}if(!h)vb[c&127](a,b,d);return}function oB(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46219]=0;c[46220]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[94299+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[46220]|0;if((h|0)==-2){h=Wz()|0;c[46220]=h}if((h|0)>=1)if(h>>>0<269)i=d[94379+h>>0]|0;else i=2;else{c[46220]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[94648+h>>0]|0):0){p=a[94708+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46220]=-2;g=g+4|0;c[g>>2]=c[46221];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[94768+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46220]|0;b:do switch(q|0){case 0:{c[46219]=(c[46219]|0)+1;pA(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[46220]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[94299+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[46221];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[94848+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{pB();qB();break}case 3:{if(c[46222]|0){pB();qB();$x(c[46222]|0)|0;c[46171]=0;c[46222]=0}break}case 6:{rB(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){tB();break c}else{sB();break c}case 24:{uB();break}case 25:{uB();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{vB(c[g>>2]|0,0,0);break}case 31:{vB(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{vB(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{wB(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{wB(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{xB(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{xB(c[g>>2]|0,0);break}case 51:{yB(c[g>>2]|0);break}case 52:{zB();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=AB(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[94911+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[94974+e>>0]|0)|0;if(h>>>0<60?(d[94648+h>>0]|0)==(p|0):0){e=a[94708+h>>0]|0;j=q;h=i;break}e=a[95009+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){pA(137476);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))D_(f);l=t;return e|0}function pB(){var a=0,b=0;a=c[46223]|0;while(1){if(!a)break;IB(a+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);b=BB(c[46223]|0)|0;c[46223]=b;a=b}return}function qB(){qA();Ay(c[46222]|0);return}function rB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[46222]|0;if(!f){a[184896]=d&1|(e&255)<<1&2|a[184896]&-12|8;f=c[46225]|0;a[g>>0]=a[184896]|0;a[g+1>>0]=a[184897]|0;a[g+2>>0]=a[184898]|0;a[g+3>>0]=a[184899]|0;f=Xx(b,g,f)|0;c[46222]=f}c[46171]=f;c[46223]=CB(c[46223]|0,f)|0;Qz(0,b)|0;l=h;return}function sB(){var b=0,d=0,e=0,f=0,g=0,h=0;HB(2);e=c[46223]|0;f=a[95044]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(b$(g,95044)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=Sy(e)|0;while(1){if(!d)continue a;g=Xy(c[c[46223]>>2]|0,d,0)|0;PB(g,0,c[b>>2]|0,h);d=Ty(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;PB(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}IB((c[46223]|0)+8|0);IB((c[46223]|0)+16|0);IB((c[46223]|0)+24|0);c[(c[46223]|0)+4>>2]=0;return}function tB(){var a=0;HB(1);a=(c[46223]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;OB(c[a+4>>2]|0);a=a+12|0}IB((c[46223]|0)+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);c[(c[46223]|0)+4>>2]=0;return}function uB(){var a=0,b=0;a=c[46223]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=NB(b)|0;a=c[46223]|0}c[a+4>>2]=0}else{b=MB(b)|0;a=c[46223]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)EB(a+16|0,b);return}function vB(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=KB(b,d)|0;d=LB(az(c[c[46223]>>2]|0,a,1)|0,b)|0;EB((c[46223]|0)+8|0,d);Qz(c[46222]|0,a)|0;return}function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)GB();d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))GB();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;HB(g);b=c[46223]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[46222]|0))){d=nx(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[46223]|0;if((c[b>>2]|0)!=(c[46222]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}IB(b+24|0);return}function xB(a,b){a=a|0;b=b|0;b=DB(a,b)|0;EB((c[46223]|0)+24|0,b);return}function yB(a){a=a|0;var b=0;b=c[46223]|0;c[46223]=CB(b,vA(c[b>>2]|0,a,1)|0)|0;Qz(c[46222]|0,a)|0;return}function zB(){var a=0,b=0;a=c[46223]|0;b=c[a>>2]|0;a=BB(a)|0;c[46223]=a;c[a+4>>2]=b;return}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=W_(a)|0;d=d+1+(W_(b)|0)|0;if(d>>>0<1025)d=f;else d=C_(d)|0;b0(d,a)|0;p1(d,b)|0;e=Oz(c[46222]|0,d)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((d|0)!=(f|0))D_(d);l=g;return e|0}function BB(a){a=a|0;var b=0;b=c[(c[46223]|0)+32>>2]|0;Ny(c[46222]|0,a);return b|0}function CB(a,b){a=a|0;b=b|0;var d=0;d=My(c[46222]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function DB(a,b){a=a|0;b=b|0;return FB(267,a,b)|0}function EB(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function FB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(c[46222]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function GB(){var a=0;a=l;l=l+16|0;Pw(0,95048,a)|0;l=a;return}function HB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[95044]|0):0)?!(b$(f,95044)|0):0)){h=nx(c[c[46223]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=nx(c[c[46223]>>2]|0,b,f,191979)|0;c[d>>2]=266;Qz(c[46222]|0,f)|0}d=d+12|0}return}function IB(a){a=a|0;JB(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function JB(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{JB(c[a+4>>2]|0);break}case 266:case 267:{Qz(c[46222]|0,c[a+8>>2]|0)|0;break}default:{}}Ny(c[46222]|0,a);a=b}return}function KB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=W_(a)|0;d=d+2+(W_(b)|0)|0;if(d>>>0<1025)e=g;else e=C_(d)|0;c[f>>2]=a;c[f+4>>2]=b;Y0(e,95081,f)|0;d=Oz(c[46222]|0,e)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((e|0)!=(g|0))D_(e);l=h;return d|0}function LB(a,b){a=a|0;b=b|0;return FB(259,a,b)|0}function MB(a){a=a|0;return FB(265,a,0)|0}function NB(a){a=a|0;return FB(262,a,0)|0}function OB(a){a=a|0;var b=0,d=0;b=(c[46223]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)rx(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function PB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=Sy(d)|0;while(1){if(!f)break a;QB(a,b,Xy(c[c[46223]>>2]|0,f,0)|0,0,e);f=Ty(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=Xy(c[c[46223]>>2]|0,c[f+4>>2]|0,0)|0;QB(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function QB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=Rx(c[c[46223]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;RB(d,108373,a?e:b);RB(d,108382,a?b:e);OB(d)}return}function RB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=nx(c[c[46223]>>2]|0,2,b,0)|0;if(!e)e=nx(c[c[46223]>>2]|0,2,b,191979)|0;rx(a,e,d)|0}return}function SB(a,b,d){a=a|0;b=b|0;d=d|0;c[46191]=b;c[46222]=a;c[46171]=0;a=d|0?d:18496;c[46225]=a;Vz(a,b);oB()|0;a=c[46171]|0;if(!a){sA();a=c[46171]|0}return a|0}function TB(a,b){a=a|0;b=b|0;return SB(0,a,b)|0}function UB(a,b){a=a|0;b=b|0;b=wC(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function VB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;Az(b,134401,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((fz(b)|0)!=(b|0))c[(c[(fz(b)|0)+16>>2]|0)+144>>2]=a;e=xx(b,95297)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(UB(a,e)|0)==999):0){d=xC(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;Pw(1,95824,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{CG(1);bH(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(fz(b)|0)+16>>2]|0)+8>>2]=d;LK();d=c[e>>2]|0;if(d|0?(tb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;CG(0);d=0}}l=i;return d|0}function WB(a,b){a=a|0;b=b|0;var d=0,e=0;if(Az(b,134401,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){tb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)gH(b)}return 0}function XB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){tb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)YB(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[15653];g=12;break}f=L1(e,103486)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=c$(c[(O_()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;ub[j&63](95087,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{ub[c[(c[b+12>>2]|0)+16>>2]&63](95125,j);d=1}l=k;return d|0}function YB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;Y0(g,95143,e)|0}e=c[b+20>>2]|0;e=e|0?e:95147;d=W_(e)|0;i=W_(g)|0;f=b+52|0;i=d+1+i+(W_(c[f>>2]|0)|0)|0;d=i+11|0;if((c[46226]|0)>>>0<(i+1|0)>>>0){c[46226]=d;d=F_(c[46227]|0,d)|0;c[46227]=d}else d=c[46227]|0;b0(d,e)|0;p1(c[46227]|0,g)|0;d=c[46227]|0;d=d+(W_(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=n1(c[f>>2]|0)|0;f=c[46227]|0;while(1){e=o1(d,58)|0;if(!e)break;p1(f,e+1|0)|0;i=c[46227]|0;g=i+(W_(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}p1(f,d)|0;D_(d);c[b+32>>2]=c[46227];l=h;return}function ZB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95125,f);Sa(1)}if((_B(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;ub[f&63](95157,g);Sa(1)}}else e=0;l=h;return e|0}function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=E1(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0<e>>>0){g=e+4096+g&-4096;c[f>>2]=g;f=F_(h,g)|0;c[j>>2]=f;if(!f){ub[c[(c[b+12>>2]|0)+16>>2]&63](95182,n);Sa(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);F3(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=nb[f&63](b,d,e)|0;while(0);l=o;return e|0}function $B(a,b){a=a|0;b=b|0;var c=0;c=W_(b)|0;b=(ZB(a,b,c)|0)==(c|0);return (b?1:-1)|0}function aC(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(ZB(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function bC(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=w1(d)|0;else b=0;return b|0}function cC(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);bC(a)|0;return}function dC(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95209,e);Sa(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)tb[b&127](a);else{bC(a)|0;eC(a)}l=e;return}function eC(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[15653]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){s1(f)|0;c[e>>2]=0}c[d>>2]=0}return}function fC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=q0(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=vH(e+1|0)|0;c[g>>2]=d;f=e;e=Z0(e,b,g)|0}else f=h;ZB(a,f,e)|0;if((f|0)!=(h|0))D_(f)}else{c[f>>2]=c$(c[(O_()|0)>>2]|0)|0;Pw(1,95226,f)|0}l=i;return}function gC(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,b)|0;ZB(a,f,c[e>>2]|0)|0;l=d;return}function hC(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=135312;e=1}else{l=(f|0)<0;k=4;i=0;e=191746;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=191746-e|0}}else{f=95241;e=18}else{f=95240;e=19}c[b>>2]=e;return f|0}function iC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,+h[b>>3])|0;ZB(a,f,c[e>>2]|0)|0;ZB(a,99578,1)|0;b=hC(e,+h[b+8>>3])|0;ZB(a,b,c[e>>2]|0)|0;l=d;return}function jC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];iC(a,f);e=e+1|0;if((e|0)>=(d|0))break;ZB(a,99578,1)|0}l=g;return}function kC(a,b){a=a|0;b=b|0;var d=0;d=uH(392)|0;if(d|0){c[d>>2]=20052;c[d+16>>2]=23;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function lC(a){a=a|0;var b=0,d=0,e=0,f=0;b=uH(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function mC(a){a=a|0;tC(a);D_(a);return}function nC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46228]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46228]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46228]=d;c[d+32>>2]=b;c[d>>2]=a;return}function oC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46229]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46229]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46229]=d;c[d+52>>2]=b;c[d>>2]=a;return (wC(a,3,b)|0)!=0|0}function pC(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function qC(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function rC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function sC(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)D_(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function tC(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;sC(b+604|0);sC(b+592|0);D_(c[b+584>>2]|0);D_(c[b+588>>2]|0);D_(b);b=e}c[46229]=0;c[46228]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function uC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;U0(k,e,63)|0;i=A$(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}U0(m,c[d+4>>2]|0,63)|0;d=A$(m,58)|0;if(d|0)a[d>>0]=0;if((b$(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;U0(m,c[b+4>>2]|0,63)|0;b=A$(m,58)|0;if(b|0)a[b>>0]=0;if(b$(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=vH(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function vC(a,b){a=a|0;b=b|0;b=l;l=l+16|0;Pw(1,95321,b)|0;l=b;return 0}function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;U0(o,e,63)|0;e=A$(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=A$(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}U0(p,c[e+4>>2]|0,63)|0;e=A$(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(b$(p,o)|0)){g=(e|0)!=0;if(i&g?b$(e,f)|0:0)break;if(!j?b$(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(wC(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(vC(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[15686]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[20064+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;g1(q,95352,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[5021]|0){Tw(184920,0,0);c[5021]=0}h=n1(e)|0;e=A$(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(O$(h,d)|0)!=0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=58;Ww(184920,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}D_(d);g=c[g>>2]|0}D_(h);if(e<<24>>24){g=0;i=19}}else{D_(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(O$(g,d)|0)==0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=191979;break}}e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}a[e>>0]=0;e=c[46230]|0;c[46231]=e}while(0);return e|0}function yC(b){b=b|0;var d=0;if(!b)qa(108182,95369,573,95383);if(!(a[b>>0]|0))qa(108187,95369,574,95383);d=c[46234]|0;if(!d)b=0;else b=nb[c[d>>2]&63](d,b,512)|0;return b|0}function zC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)qa(108230,95369,589,95400);g=b+8|0;e=c[g>>2]|0;if(!e)qa(108233,95369,590,95400);if(!(a[e>>0]|0))qa(108242,95369,591,95400);h=b+20|0;f=c[h>>2]|0;do if(!f){d=ZL(e)|0;if(!d){c[i>>2]=c[g>>2];Pw(0,95424,i)|0;d=0;break}i=L1(d,135739)|0;c[h>>2]=i;if(!i){c[j>>2]=c$(c[(O_()|0)>>2]|0)|0;c[j+4>>2]=d;Pw(0,95449,j)|0;d=0;break}d=c[46235]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[46235]=d+1;d=1;break}}else{Z1(f,0,0)|0;if(!(c[h>>2]|0))qa(95470,95369,614,95400);else d=1}while(0);l=k;return d|0}function AC(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){s1(e)|0;c[d>>2]=0}return}function BC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[46362]|0,(c[46236]|0)!=(g|0)):0)?(c[46236]=g,i=c[46234]|0,i|0):0){yw(i)|0;c[46234]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=DC(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];BC(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function DC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)qa(108182,95369,638,95476);if(!(c[46234]|0))c[46234]=Cw(20088,c[4563]|0)|0;b=yC(a)|0;a:do if(!b){b=uH(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=Oz(0,a)|0;if(!((zC(b)|0)<<24>>24)){EC(b);b=0;break}if(!(c[b+20>>2]|0))qa(95470,95369,653,95476);do switch(FC(b)|0){case 0:{a=VJ(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];Pw(0,95493,e)|0;EC(b);b=0;break a}break}case 2:{GC(b);break}case 3:{HC(b);break}case 1:{IC(b);break}case 4:{JC(b);break}case 6:{KC(b);break}case 11:{LC(b);break}case 8:{MC(b);break}case 5:{NC(b);break}case 12:{OC(b);break}default:{}}while(0);AC(b);e=c[46234]|0;nb[c[e>>2]&63](e,b,1)|0}}else AC(b);while(0);l=f;return b|0}function EC(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)Qz(0,b)|0;D_(a);return}function FC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(g3(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(L0(f,c[20124+(d<<4)>>2]|0,c[20124+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[20124+(d<<4)+12>>2];b=c[20124+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(L0(f+8|0,95709,4)|0)break a;c[e>>2]=95714;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(O0(g,200,c[h>>2]|0)|0)){i=11;break}if(!(L0(g,95704,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=98777;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=95719;c[a+24>>2]=0;b=0}l=j;return b|0}function GC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function HC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,16,0)|0;if((PC(c[e>>2]|0,4,b)|0)<<24>>24?(PC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;Z1(c[g>>2]|0,16,0)|0;if((((XC(c[g>>2]|0,2,b)|0)<<24>>24?(XC(c[g>>2]|0,2,d)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,e)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function JC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((PC(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(A$(95692,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((PC(g,2,e)|0)<<24>>24))break;Z1(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((PC(c[j>>2]|0,3,i)|0)<<24>>24?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(PC(g,3,i)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function KC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;Z1(c[i>>2]|0,0,0)|0;while(1){if(!(O0(b,1024,c[i>>2]|0)|0))break;d=P0(b,95677)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((N1(d,101285,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function LC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,15,0)|0;h=(m3(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){Z1(f,24,0)|0;if((XC(c[e>>2]|0,4,b)|0)<<24>>24?(XC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{Z1(f,26,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function MC(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[46237]|0)){if(o2(184952,95562,1)|0){c[d>>2]=95562;Pw(1,95589,d)|0}c[46237]=184952}m=b+20|0;Z1(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(O0(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(a3(184952,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(b$(e,138034)|0))break;if(!(b$(e,137966)|0))break c;if(b$(e,95636)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((N1(f,95644,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((N1(f,95626,A)|0)!=2){c[D>>2]=s;if((N1(f,98183,D)|0)==1){e=1;f=WC(+h[s>>3],95633)|0}else{e=g;f=j}}else{e=1;f=WC(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((N1(f,95626,E)|0)!=2){c[B>>2]=s;if((N1(f,98183,B)|0)==1){d=1;e=WC(+h[s>>3],95633)|0}else e=k}else{d=1;e=WC(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function NC(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,0,0)|0;if(!(QC(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function OC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((PC(c[e>>2]|0,1,b)|0)<<24>>24?(PC(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function PC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function QC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(O0(e,1024,a)|0)){a=1;break}f=P0(e,95552)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=RC(d,b)|0}l=h;return a|0}function RC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;SC(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(TC(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,UC(b,f),(VC(f,d)|0)==0):0)?(UC(b,f),(VC(f,d+8|0)|0)==0):0)?(UC(b,f),(VC(f,d+16|0)|0)==0):0){UC(b,f);e=(VC(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function SC(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(TC(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(B$(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function TC(b){b=b|0;var d=0;d=b+4|0;if(!(O0(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function UC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;SC(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(TC(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function VC(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+c2(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function WC(a,b){a=+a;b=b|0;var c=0.0;do if(!(b$(b,95660)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(b$(b,95663)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(b$(b,95666)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(b$(b,95633)|0?b$(b,95669)|0:0)if(!(b$(b,95671)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(b$(b,95674)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function XC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function YC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)s1(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)tb[e&127](b);D_(b);return}function ZC(){var a=0;nx(0,1,105198,102467)|0;a=kC(0,1)|0;LP(a,0);return a|0}function _C(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((UB(b,e)|0)!=999)if((VB(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));Y0(g,95873,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));Y0(g,95873,i)|0}Ax(d,99645,g,191979)|0;b=0}else{b=xC(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;Pw(1,95824,f)|0;b=-1}l=k;return b|0}function $C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=DG(a,f)|0;wO(b);tC(a);b=h}l=i;return b|0}function aD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){nC(a,e);h=DG(a,f)|0;wO(b);dC(b);tC(a);b=h}l=i;return b|0}function bD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;oC(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=uO(j,c[j+52>>2]|0)|0;if((Az(b,134401,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){Sw(95885,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=C_(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=DG(a,b)|0;wO(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}tC(a);break}Pw(1,95906,h)|0;b=-1}while(0);l=m;return b|0}function cD(a,b){a=a|0;b=b|0;JP(a,0,b);return}function dD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+4288|0;E=H+8|0;D=H;F=4;G=C_(40)|0;c[G>>2]=0;A=H+4152|0;B=H+4148|0;C=H+4128|0;j=H+4112|0;k=H+16|0;o=0;i=$(24,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;a:do if((h|0)!=1){if(!i){c[d>>2]=0;g=0;break}o=0;n=ca(26,e|0,B|0,A|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;m=$(23,40)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;na(7,C|0,j|0,k|0,24,83);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){j=C+16|0;i=c[j>>2]|0;g=e;while(1){if(!g)break;o=0;aa(i|0,g|0,0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}o=0;g=aa(84,b|0,g|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}}G=D3(184984,1,G|0,F|0)|0;F=z;o=0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){y=m;x=j;w=m;v=n;g=z;m=15}else{y=m;x=j;w=m;v=n;g=0;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=0;g=z;m=15}while(0);do if((m|0)==15){b:while(1){c:do if(!g){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}u=v+(c[B>>2]|0)|0;k=0;m=0;j=0;while(1){if(!e)break;o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){i=E3(c[h>>2]|0,G|0,F|0)|0;if(!i)bb(h|0,p|0);z=p}else i=-1;if((i|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((g|0)==0?(a[(c[e+16>>2]|0)+119>>0]|0)==3:0){if(!m){o=0;c[D>>2]=j;ca(27,u|0,134313,D|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;i=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,i|0,134401,280,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}c[y+(j<<2)>>2]=i;k=1;j=j+1|0}else i=m;o=0;da(54,b|0,e|0,i|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}}else i=m;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}m=i}o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}i=10;n=y;q=w;r=w;t=w;while(1){if(!e){m=0;i=r;e=t;break c}o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){m=E3(c[h>>2]|0,G|0,F|0)|0;if(!m)bb(h|0,p|0);z=p}else m=-1;if((m|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if(!g){o=0;c[E>>2]=j;ca(27,u|0,134313,E|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;s=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,s|0,134401,280,1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){g=E3(c[h>>2]|0,G|0,F|0)|0;if(!g)bb(h|0,p|0);z=p}else g=-1;if((g|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(54,b|0,e|0,s|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((j|0)==(i|0)){i=j<<1;o=0;m=aa(85,q|0,j<<3|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=m;q=m;r=m;h=m}else{g=n;h=t}c[g+(j<<2)>>2]=s;n=g;j=j+1|0;m=h}else m=t;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}t=m}}else{m=1;k=0;n=y;j=0;i=w;e=w}while(0);o=0;ia(105,C|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}if((v|0)!=(A|0)){o=0;ia(103,v|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}}if(!m){o=0;g=aa(85,e|0,j<<2|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}else{m=58;break}}c[d>>2]=0;g=0;while(1){if((g|0)>=(j|0))break;o=0;$(26,c[n+(g<<2)>>2]|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=g+1|0}o=0;ia(103,i|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15}else{m=56;break}}if((m|0)==56){g=0;break}else if((m|0)==58){c[d>>2]=j;a[f>>0]=k;break}}while(0);D_(G|0);l=H;return g|0}function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(nD(a)|0)!=0:0))a=95962;e=W_(a)|0;if((e|0)>=104){d=vH(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){b0(d,a)|0;c[b>>2]=e}return d|0}function fD(a,b){a=a|0;b=b|0;Xy(b,a,1)|0;return}function gD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+157|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function hD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function iD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;lD(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=mD(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)ub[f&63](k,d);h=Jx(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(lb[c[j>>2]&127](f,-1)|0))lD(e,f);h=Kx(a,h,k)|0}}return b|0}function jD(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;kD(a);a=b}return}function kD(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function lD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=vH(16)|0;if(!e){Pw(1,95943,f)|0;bb(184984,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=vH(4e6)|0;c[e>>2]=d;if(!d){Pw(1,95943,j)|0;bb(184984,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}lb[c[a+16>>2]&127](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function mD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function nD(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(M$(c&255)|0)){b=0;break}}return b|0}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;B=l;l=l+4272|0;x=B;y=4;A=C_(40)|0;c[A>>2]=0;u=B+4144|0;v=B+4140|0;w=B+4120|0;h=B+4104|0;i=B+8|0;o=0;f=$(24,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){e=E3(c[g>>2]|0,A|0,y|0)|0;if(!e)bb(g|0,p|0);z=p}else e=-1;a:do if((e|0)!=1)if(f){o=0;k=ca(26,d|0,v|0,u|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;j=$(23,40)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;na(7,w|0,h|0,i|0,24,83);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){h=w+16|0;g=c[h>>2]|0;e=f;while(1){if(!e)break;o=0;aa(g|0,e|0,0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}o=0;e=aa(84,a|0,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}}A=D3(184984,1,A|0,y|0)|0;y=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){t=h;s=j;r=k;e=z;j=14}else{t=h;s=j;r=k;e=0;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=0;r=k;e=z;j=14}}else{d=0;e=0}else{t=0;s=0;r=0;e=z;j=14}while(0);b:do if((j|0)==14){c:while(1){if(e|0){o=0;ia(105,w|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;ia(103,s|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0)){d=0;e=0;break b}o=0;ia(103,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}else{j=19;break}}o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}q=r+(c[v>>2]|0)|0;h=10;k=s;e=0;j=s;n=s;while(1){if(!f)break;o=0;d=aa(c[t>>2]|0,f|0,-1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,A|0,y|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if(!d){o=0;c[x>>2]=e;ca(27,q|0,134313,x|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;m=ca(28,a|0,r|0,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(53,m|0,134401,280,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(54,a|0,f|0,m|0,w|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if((e|0)==(h|0)){h=e<<1;o=0;i=aa(85,j|0,e<<3|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}g=i;j=i;d=i}else{g=k;d=n}c[g+(e<<2)>>2]=m;e=e+1|0;k=g;i=d}else i=n;o=0;f=aa(84,a|0,f|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}n=i}o=0;ia(105,w|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;d=aa(85,n|0,e<<2|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0))break b;o=0;ia(103,r|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14}else{j=39;break}}if((j|0)==19){d=0;e=0;break}else if((j|0)==39)break}while(0);c[b>>2]=e;D_(A|0);l=B;return d|0}function pD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=Sy(a)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if(Xy(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){Vx(a,e,1)|0;d=d+1|0}e=Gx(b,e)|0}f=Ty(a,f)|0}return d|0}function qD(a){a=a|0;a=yz(a,95967,0)|0;if(!a)qa(95972,95975,529,95984);else return c[a+8>>2]|0;return 0}function rD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(ay(b)|0){Fz(b,0,95993,-12,0);Fz(b,1,96005,16,0);o=eD(e,f,t)|0;k=sD(b)|0;m=vH((ay(k)|0)<<2)|0;hD(p,u+4144|0,u+48|0,24,86);h=Sy(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[15686]|0;e=0;while(1){if(!h)break;if(!(lb[c[n>>2]&127](h,-1)|0)){c[q>>2]=e;Y0(i,96907,q)|0;v=vA(k,o,1)|0;w=vA(b,o,1)|0;Az(w,95993,12,0)|0;a[(yz(w,95993,0)|0)+8>>0]=1;f=iD(k,h,v,p)|0;uD(v,w);g=vD(w)|0;wD(b,w);c[m+(e<<2)>>2]=w;dz(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;g1(j,96017,r)|0}e=e+1|0}h=Ty(k,h)|0}if(0){r=ay(b)|0;v=by(b)|0;w=ry(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;g1(j,96047,s)|0}$x(k)|0;Gz(b,0,95993);Gz(b,1,96005);jD(p);f=xH(m,e<<2)|0;if((o|0)!=(t|0))D_(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function sD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[18492]|0;a[h+1>>0]=a[18493]|0;a[h+2>>0]=a[18494]|0;a[h+3>>0]=a[18495]|0;h=Xx(96094,h,0)|0;zD(h,b);d=Sy(b)|0;while(1){if(!d)break;if(!(c[(yz(d,96005,0)|0)+12>>2]|0)){g=az(h,ry(d)|0,1)|0;Az(g,96005,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(yz(d,96005,0)|0)+12>>2]=g}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;f=c[(yz(e,96005,0)|0)+12>>2]|0;d=Ex(b,e)|0;while(1){if(!d)break;g=c[(yz(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,96005,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){Rx(h,f,g,0,1)|0;break}else{Rx(h,g,f,0,1)|0;break}while(0);d=Gx(b,d)|0}e=Ty(b,e)|0}l=i;return h|0}function tD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function uD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sy(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)Xy(b,f,1)|0;else{d=Sy(f)|0;while(1){if(!d)break a;Xy(b,d,1)|0;d=Ty(f,d)|0}}while(0);e=Ty(a,e)|0}return}function vD(a){a=a|0;return pD(a,c[a+60>>2]|0)|0}function wD(a,b){a=a|0;b=b|0;xD(a,b,0);return}function xD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=wA(b)|0;while(1){if(!b)break;if((a[(yz(b,95993,0)|0)+8>>0]|0)==0?(f=yD(b,c,d)|0,f|0):0){if(g)e=(z$(ry(b)|0,104980,7)|0)==0;else e=1;xD(b,f,e&1)}b=xA(b)|0}return}function yD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=Sy(a)|0;while(1){if(!g)break;f=az(b,ry(g)|0,0)|0;if(f){if(!e)e=vA(b,ry(a)|0,1)|0;Xy(e,f,1)|0}g=Ty(a,g)|0}if((d|0)!=0&(e|0)==0)e=vA(b,ry(a)|0,1)|0;if(e|0?(pD(e,a)|0,Bx(a,e)|0,(z$(ry(e)|0,104980,7)|0)==0):0)c[(Az(e,95967,12,0)|0)+8>>2]=a;return e|0}function zD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=wA(b)|0;e=c[15686]|0;while(1){if(!d)break;a:do if(!(z$(ry(d)|0,104980,7)|0)){f=az(a,ry(d)|0,1)|0;Az(f,96005,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=Sy(d)|0;while(1){if(!b)break a;if(c[(yz(b,96005,0)|0)+12>>2]|0){k=ry(b)|0;j=ry(d)|0;i=ry(c[(yz(b,96005,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;g1(e,96097,g)|0}c[(yz(b,96005,0)|0)+12>>2]=f;b=Ty(d,b)|0}}else zD(a,d);while(0);d=xA(d)|0}l=h;return}function AD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){BI(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){BI(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=CD(a,b,d,e)|0;break}m=vH(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;mM(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=uH(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=xx(c[b+(d<<2)>>2]|0,96164)|0;if(g|0?(c[k>>2]=j,g=(N1(g,134313,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=DD(a,m,e)|0;if(c[h>>2]&2)D_(c[e+24>>2]|0)}else d=0;D_(m)}while(0);l=n;return d|0}function CD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[15686]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;mM(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=ry(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;g1(E,96231,u)|0}n=n+1|0}q=vH(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=GD(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;g1(E,96259,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=uH(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=ry(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];HD(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];ID(e,i,j,p,f,B)}g=g+1|0}j=uH(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}_0(j,b,4,87);k=vI()|0;g=uH(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];KD(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;LD(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;LD(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);D_(j);i=0;while(1){if((i|0)>=(b|0))break;D_(c[m+(i<<4)+4>>2]|0);i=i+1|0}D_(m);yI(k);D_(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;g1(E,96275,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function DD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=uH(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[15686]|0;c[g>>2]=k|0?96170:96180;c[g+4>>2]=w;c[g+8>>2]=f;g1(v,96193,g)|0}t=uH((f<<3)+8|0)|0;u=uH((w<<3)+8|0)|0;v=uH(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=uH(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))_0(s,a,4,89)}else{c[46285]=e;_0(s,a,4,88)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}D_(v);D_(s);D_(t);D_(u);l=z;return x|0}function ED(a,b){a=a|0;b=b|0;var d=0;d=c[46285]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function FD(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (e<d?1:(e>d)<<31>>31)|0}function GD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[15686]|0;E1(96418,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;g1(m,96446,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;g1(m,96472,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;g1(m,96494,q)|0}}else{h[m>>3]=j;Pw(1,96391,m)|0;d=-1}l=s;return d|0}function HD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=vI()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;BI(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=FI(r)|0;j=EI(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[15686]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;g1(f,96350,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;g1(f,96377,t)|0;a=a+1|0}}while(0);yI(r);l=u;return}function ID(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=vI()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=vH((ay(b)|0)<<2)|0;a=0;g=Sy(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=Ty(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}a=Sy(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=Ty(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=Sy(b)|0;while(1){if(!o)break;WL(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G)}a=Gx(C,a)|0}}while(0);o=Ty(b,o)|0}a=0;g=Sy(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=Ty(b,g)|0}D_(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=Sy(b)|0;while(1){if(!o)break a;WL(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}o=Ty(b,o)|0}}while(0);i=d+4|0;c[i>>2]=FI(L)|0;j=d+8|0;c[j>>2]=EI(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[15686]|0;d=ry(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;g1(f,96350,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;g1(f,96377,O)|0;a=a+1|0}}while(0);yI(L);l=P;return}function JD(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function KD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];zI(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[15686]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;g1(k,96324,i)|0}l=j;return}function LD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(MD((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(MD(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(MD(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(MD(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(MD(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(MD(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function MD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(CI(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];zI(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[15686]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;g1(j,96290,s)|0;j=1}else j=1}l=t;return j|0}function ND(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function OD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function PD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){WL(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}l=A;return}function QD(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((a|0)<1)a=0;else switch(c[d+16>>2]|0){case 4:{a=DD(a,b,d)|0;break a}case 3:{a=RD(a,b,d)|0;break a}default:{a=0;break a}}while(0);return a|0}function RD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+80|0;g=n+64|0;f=n+24|0;m=n+8|0;e=n;h=n+56|0;j=d+8|0;k=GD(a,b,c[j>>2]|0)|0;if(0){i=c[15686]|0;c[e>>2]=k;g1(i,96259,e)|0}a:do if((k|0)>=1){c[h+4>>2]=0;c[h>>2]=0;i=uH(a<<4)|0;d=0;while(1){if((d|0)>=(a|0))break;c[i+(d<<4)+12>>2]=d;o=b+(d<<5)|0;e=c[j>>2]|0;c[f>>2]=c[o>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[f+28>>2]=c[o+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];HD(f,i+(d<<4)|0,k,e,g,191979);d=d+1|0}f=uH(a<<2)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=i+(d<<4);d=d+1|0}_0(f,a,4,87);g=vI()|0;d=uH(a<<3)|0;e=0;while(1){if((e|0)>=(a|0))break;o=c[f+(e<<2)>>2]|0;LD(e,o,g,d+(c[o+12>>2]<<3)|0,k,c[j>>2]|0,b);e=e+1|0}D_(f);e=0;while(1){if((e|0)>=(a|0))break;D_(c[i+(e<<4)+4>>2]|0);e=e+1|0}D_(i);yI(g);if(0>1){f=c[15686]|0;e=0;while(1){if((e|0)>=(a|0))break a;b=c[d+(e<<3)>>2]|0;o=c[d+(e<<3)+4>>2]|0;c[m>>2]=e;c[m+4>>2]=b;c[m+8>>2]=o;g1(f,96275,m)|0;e=e+1|0}}}else d=0;while(0);l=n;return d|0}function SD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=Sy(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Ex(g,i)|0;while(1){if(!f)break b;TD(f,k,l);f=Gx(g,f)|0}}while(0);i=Ty(r,i)|0}UD(r,k,l);j=j+1|0}}while(0);return f|0}function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function UD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;UD(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function VD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=BD(a,b,d,e)|0;if(!f)a=1;else{a=SD(a,b,f,d,c[e+12>>2]|0)|0;D_(f)}return a|0}function WD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=VD(a,b,d,e)|0;if(!n){mM(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function XD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)qa(96508,96514,1400,96521);d=YD(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[15686]|0;c[f>>2]=d;g1(h,96533,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;ZD(a,b,e)|0;l=g;return c[e+16>>2]|0}function YD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=xx(b,96663)|0;a:do if(g){c[h>>2]=f;h=(N1(g,134313,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return _D(xx(a,96546)|0,b,c)|0}function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)qa(96508,96514,1292,96555);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(z$(b,96573,5)|0)){c[p>>2]=4;m=$D(b+5|0,e)|0;c[k>>2]=j;m=(N1(m,134313,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(z$(b,96579,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(N1(b+5|0,96586,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(b,104980)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(b$(b,108412)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(b$(b,108399)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[15686]|0;E1(96589,11,1,d)|0;c[s>>2]=aE(c[p>>2]|0)|0;g1(d,96601,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];g1(d,96614,t)|0}c[q>>2]=c[n>>2];g1(d,96627,q)|0;c[r>>2]=c[o>>2];g1(d,96640,r)|0}l=u;return c[p>>2]|0}function $D(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function aE(a){a=a|0;switch(a|0){case 1:{a=104980;break}case 2:{a=108399;break}case 3:{a=108412;break}case 4:{a=96573;break}case 5:{a=96579;break}default:a=96653}return a|0}function bE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=E_(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=E_(100,j)|0}else{h=d+100|0;i=F_(c[e+8>>2]|0,O(h,j)|0)|0;H3(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=cE(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=F_(i,O(f,j)|0)|0;H3(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){D_(i);D_(e);e=0;break}else{c[e+8>>2]=F_(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function cE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((B$(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=iE(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=fE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=jE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function dE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+c2(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+c2(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+c2(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+c2(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function eE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=kE(a,j)|0;do if(a){d=c[j>>2]|0;i=E_(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+c2(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+c2(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==7){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function fE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=kE(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=E_(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){D_(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function gE(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=lE(b+1|0,d)|0;break}case 40:{b=mE(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(M$(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+c2(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function iE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=kE(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function jE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=C$(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function kE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=i1(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=hE(a,n)|0;do if(((((i|0)!=0?(j=hE(i,b+16|0)|0,(j|0)!=0):0)?(e=hE(j,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=kE(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=E_(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=hE(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=fE(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){D_(f);a=0;break}else if((d|0)==12){D_(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function mE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=hE(a,b+8|0)|0;do if(((((((k|0)!=0?(m=hE(k,b+16|0)|0,(m|0)!=0):0)?(e=hE(m,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(i=hE(f,b+40|0)|0,(i|0)!=0):0)?(j=hE(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=kE(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=E_(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=hE(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=fE(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){D_(i);a=0;break}else if((d|0)==14){D_(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function nE(a,b,c){a=a|0;b=b|0;c=c|0;return bE(a,b,c,0)|0}function oE(a){a=a|0;return nE(a,0,0)|0}function pE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)tb[e&127](d);qE(d);b=b+1|0}D_(f);D_(a)}return}function qE(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{D_(c[a+8+4>>2]|0);break}case 5:case 4:{D_(c[a+8+4>>2]|0);break}case 6:{D_(c[a+8+4>>2]|0);break}case 7:{D_(c[a+40>>2]|0);break}case 9:case 8:{D_(c[a+8>>2]|0);break}case 14:case 13:{rE(a+8|0);break}case 10:{D_(c[a+16>>2]|0);break}case 11:{D_(c[a+8>>2]|0);break}case 12:{D_(c[a+40>>2]|0);break}default:{}}return}function rE(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[d+(a<<3)+4>>2]|0);a=a+1|0}D_(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[b+(a<<3)+4>>2]|0);a=a+1|0}D_(b);break}default:{}}return}function sE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(ey(ez(b)|0)|0)!=0&1;f=c[46414]|0;a:do if(f|0?(h=yx(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=20284;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(b$(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[46425]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=yx(b,f)|0,a[j>>0]|0):0)tE(j,e);f=c[46426]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=yx(b,f)|0,a[m>>0]|0):0)tE(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ez(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;sE(Rx(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function tE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=uE(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;Pw(0,96668,m)|0}l=o;return}function uE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=vE(a,20344,e)|0;if((d|0)==(a|0)){while(1){d=vE(a,20360,e)|0;if((a|0)==(d|0))break;else a=d}d=vE(a,20408,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=W_(e)|0;if(!(z$(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function wE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1400;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+LL(a,c[46418]|0,1.0,0.0))}function xE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){_O(a,o+16|0,3,g>>>4&1^1);break}else{_O(a,o+32|0,3,g>>>4&1^1);break}else _O(a,o,3,g>>>4&1^1);while(0);l=p;return}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q<f)|y?.45:f/q*.45;s=!(f>1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){_O(a,w,9,1);break}else{_O(a,w+48|0,6,1);break}else _O(a,w,6,1);while(0);l=x;return}function zE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}_O(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;bP(a,p,2);l=q;return}function AE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}_O(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;bP(a,n,2);l=o;return}function BE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){_O(a,i,4,d);break}else{_O(a,i,3,d);break}}else _O(a,d,3,g>>>4&1^1);while(0);l=j;return}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;ZO(a,i,2,f>>>4&1^1);l=g;return}function DE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;bP(a,r,2);if(!(g&64)){if(g&128|0)XL(s,q,3,.5,q,0)}else XL(s,q,3,.5,0,q);aP(a,q,4,0,0,0);l=t;return}function EE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;bP(a,i,2);l=g;return}function FE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+wE(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o<i):0)e=e+-3|0;s=k+48|0;r=b+(e<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;MK(j,90,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function HE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+wE(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p<j):0))i=d;e=b+(i+3<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;MK(k,90,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function IE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+wE(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k<n?-j:j)+n;j=p}else{m=k;j=(p<o?-j:j)+o}w=e+1|0;h[b+(w<<4)>>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+wE(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k<o?m:-m)+k;m=j}else{n=k;m=(j<p?m:-m)+j}w=d+1|0;v=b+(w<<4)|0;h[v>>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+wE(a,g);q=+wE(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s<k;p=(w?-n:n)+k;q=(w?m:-m)+s;o=t;m=t}else{w=t<j;p=s;q=s;o=(w?m:-m)+t;m=(w?-n:n)+j}w=e+1|0;v=b+(w<<4)|0;h[v>>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o<k?o:k;k=n<k?n:k;j=m<j?m:j;j=l<j?l:j;h[a>>3]=i<k?i:k;h[a+8>>3]=f<j?f:j;h[a+16>>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function KE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;YO(a,c[(c[a>>2]|0)+336>>2]|0);fP(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];LE(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function LE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1400;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];wb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function ME(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=xx(b,96770)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=xx(b,96782)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=nE(e,0,120)|0;if(!d){c[f>>2]=ry(b)|0;Pw(0,96789,f)|0;c[g>>2]=e;Pw(3,96842,g)|0}}l=i;return d|0}function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=uH(304)|0;if(!f)Pw(1,96850,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function OE(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)qa(96876,96880,117,96887);else{D_(c[b+212>>2]|0);D_(c[b+208>>2]|0);D_(c[b+216>>2]|0);D_(c[b+220>>2]|0);D_(c[b+224>>2]|0);D_(c[b+228>>2]|0);D_(c[b+232>>2]|0);D_(c[b+236>>2]|0);D_(c[b+240>>2]|0);D_(c[b+244>>2]|0);D_(c[b+248>>2]|0);D_(c[b+252>>2]|0);D_(c[b+256>>2]|0);D_(c[b+272>>2]|0);D_(c[b+284>>2]|0);D_(c[b+280>>2]|0);c[a>>2]=c[b>>2];D_(b);return}}function PE(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=pH(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=pH(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=pH(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=n1(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=pH(h,j)|0;d=1}return d|0}function QE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;RE(b,e);b=xx(d,137978)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){Ww(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){Ww(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(pz(d)|0){case 0:{f=(g|0)==(d|0)?108412:96901;b=(c[d>>2]|0)>>>4;break}case 1:{f=108399;b=(c[d>>2]|0)>>>4;break}case 2:{f=108368;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}Ww(e,f)|0;c[i>>2]=b;Y0(h,96907,i)|0;Ww(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function RE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){Ww(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;Y0(g,96911,h)|0;Ww(d,g)|0}l=i;return}function SE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=TE(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)fP(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{WO(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=rQ(p,k,m,i,e)|0;aP(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);nV(b)}i=e;f=f+12|0}if(n)fP(a,r);UE(j)}l=s;return o|0}function TE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=uH(12)|0;i=n1(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=uH((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=k1(f,104958)|0;if(!f){f=20;break}j=+VE(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[5130]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;Pw(0,96922,n)|0;c[5130]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[5130]|0))d=1;else{c[o>>2]=b;Pw(1,96957,o)|0;c[5130]=0;d=2}UE(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function UE(a){a=a|0;D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(a);return}function VE(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=A$(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+c2(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function WE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=TE(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)fP(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){WO(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;_O(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)fP(a,s);UE(i)}l=t;return q|0}function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;D_(c[g>>2]|0);d=uH(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function YE(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k<n)):0)?(d=+h[b+8>>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d<j)):0)?(k=+h[b+16>>3],!(k>m|k<n)):0)?(k=+h[b+24>>3],!(k>i|k<j)):0)?(k=+h[b+32>>3],!(k>m|k<n)):0)?(k=+h[b+40>>3],!(k>i|k<j)):0)?(k=+h[b+48>>3],!(k>m|k<n)):0)?(n=+h[b+56>>3],!(n>i|n<j)):0))p=11;a:do if((p|0)==11){if(!(ZE(b)|0)){XL(f,b,3,.5,c,e);YE(a,c);YE(a,e);break}f=a+24|0;g=a+8|0;e=0;while(1){if((e|0)==4)break a;d=+h[b+(e<<4)>>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function ZE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+$G(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+$G(f,e,d)<4.0&1;l=b;return a|0}function _E(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0;D=l;l=l+272|0;u=D+256|0;v=D+224|0;w=D+192|0;x=D+128|0;y=D+64|0;z=D;A=D+160|0;B=D+96|0;C=D+32|0;t=c[d+16>>2]|0;s=c[t+144>>2]|0;r=t+16|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];t=c[(c[t+8>>2]|0)+88>>2]|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;if(!t){c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}else{d=x+16|0;if(+h[x>>3]==+h[d>>3]?(e=x+8|0,f=x+24|0,+h[e>>3]==+h[f>>3]):0){h[e>>3]=1797693134862315708145274.0e284;h[x>>3]=1797693134862315708145274.0e284;h[f>>3]=-1797693134862315708145274.0e284;h[d>>3]=-1797693134862315708145274.0e284}j=v+8|0;k=v+16|0;m=v+24|0;n=y+16|0;o=y+24|0;p=s+144|0;q=w+16|0;r=t+12|0;d=0;f=c[t+8>>2]|0;e=0;g=0.0;i=0;while(1){if((i|0)>=(c[t>>2]|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];switch(c[f>>2]|0){case 1:case 0:{H=+h[f+8>>3];I=+h[f+24>>3];h[v>>3]=H-I;F=+h[f+16>>3];G=+h[f+32>>3];h[j>>3]=F-G;h[k>>3]=I+H;h[m>>3]=G+F;E=f+80|0;c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2];E=f+96|0;c[E>>2]=c[k>>2];c[E+4>>2]=c[k+4>>2];c[E+8>>2]=c[k+8>>2];c[E+12>>2]=c[k+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];$E(x,u);c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];$E(x,u);break}case 3:case 2:{E=f+80|0;J=f+8|0;aF(A,c[J+4>>2]|0,c[J>>2]|0,x);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2];c[E+16>>2]=c[A+16>>2];c[E+20>>2]=c[A+20>>2];c[E+24>>2]=c[A+24>>2];c[E+28>>2]=c[A+28>>2];break}case 5:case 4:{J=f+80|0;E=f+8|0;aF(B,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[B>>2];c[J+4>>2]=c[B+4>>2];c[J+8>>2]=c[B+8>>2];c[J+12>>2]=c[B+12>>2];c[J+16>>2]=c[B+16>>2];c[J+20>>2]=c[B+20>>2];c[J+24>>2]=c[B+24>>2];c[J+28>>2]=c[B+28>>2];break}case 6:{J=f+80|0;E=f+8|0;aF(C,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];c[J+16>>2]=c[C+16>>2];c[J+20>>2]=c[C+20>>2];c[J+24>>2]=c[C+24>>2];c[J+28>>2]=c[C+28>>2];break}case 7:{J=f+112|0;c[J>>2]=uH(56)|0;E=n1(c[f+40>>2]|0)|0;K=c[J>>2]|0;c[K>>2]=E;a[K+48>>0]=a[97003+(c[f+24>>2]|0)>>0]|0;c[y>>2]=e;h[n>>3]=g;c[o>>2]=c[o>>2]&-128|d&127;K=c[p>>2]|0;K=nb[c[K>>2]&63](K,y,1)|0;E=c[J>>2]|0;c[E+4>>2]=K;wL(u,s,E);bF(w,+h[f+8>>3],+h[f+16>>3],c[J>>2]|0);J=f+80|0;c[J>>2]=c[w>>2];c[J+4>>2]=c[w+4>>2];c[J+8>>2]=c[w+8>>2];c[J+12>>2]=c[w+12>>2];c[J+16>>2]=c[w+16>>2];c[J+20>>2]=c[w+20>>2];c[J+24>>2]=c[w+24>>2];c[J+28>>2]=c[w+28>>2];c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];$E(x,u);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];$E(x,u);if(!(c[r>>2]|0))c[r>>2]=106;break}case 10:{e=c[f+16>>2]|0;g=+h[f+8>>3];break}case 15:{d=c[f+8>>2]|0;break}default:{}}f=f+120|0;i=i+1|0}c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}l=D;return}function $E(a,b){a=a|0;b=b|0;var c=0.0,d=0;c=+h[b>>3];d=a+16|0;if(c>+h[d>>3])h[d>>3]=c;if(c<+h[a>>3])h[a>>3]=c;c=+h[b+8>>3];b=a+24|0;if(c>+h[b>>3])h[b>>3]=c;b=a+8|0;if(c<+h[b>>3])h[b>>3]=c;return}function aF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;k=r+32|0;n=r;f=+h[b>>3];o=n+16|0;h[o>>3]=f;h[n>>3]=f;f=+h[b+8>>3];p=n+24|0;h[p>>3]=f;m=n+8|0;h[m>>3]=f;j=1;while(1){if((j|0)>=(d|0))break;i=b+24|0;f=+h[i>>3];if(!(f<+h[n>>3])){if(f>+h[o>>3]){g=o;q=5}}else{g=n;q=5}if((q|0)==5){q=0;h[g>>3]=f}f=+h[b+32>>3];if(!(f<+h[m>>3])){if(f>+h[p>>3]){b=o;q=8}}else{b=n;q=8}if((q|0)==8){q=0;h[b+8>>3]=f}j=j+1|0;b=i}c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];$E(e,k);c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];$E(e,k);c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];l=r;return}function bF(b,c,d,e){b=b|0;c=+c;d=+d;e=e|0;var f=0.0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+16|0;i=n+8|0;j=n;f=+h[e+32>>3];k=+h[e+40>>3];switch(a[e+48>>0]|0){case 108:{h[i>>3]=c;f=f+c;g=j;m=5;break}case 110:{f=f*.5;h[i>>3]=c-f;f=f+c;g=j;m=5;break}case 114:{h[j>>3]=c;f=c-f;g=i;m=5;break}default:{c=0.0;f=0.0}}if((m|0)==5){h[g>>3]=f;c=+h[i>>3];f=+h[j>>3]}d=+h[e+16>>3]+d;h[b>>3]=c;h[b+8>>3]=d-k;h[b+16>>3]=f;h[b+24>>3]=d;l=n;return}function cF(a){a=a|0;if((c[a>>2]|0)==7)mH(c[a+112>>2]|0,1);return}function dF(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[46369]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;cP(b,NL(d,nx(d,0,98496,0)|0,191979)|0);c[b+160>>2]=0;eF(b,d);if(j&2|0)fF(b,d);e=Sy(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=Ty(d,e)|0}gF(b,k);while(1){if(!((hF(b)|0)<<24>>24))break;if((iF(b)|0)>1)DO(b);jF(b);while(1){if(!((kF(b)|0)<<24>>24))break;lF(b,d);mF(b)}if((iF(b)|0)>1)EO(b);nF(b,k)}oF(b);l=m;return}function eF(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);zO(a,b);return}function fF(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;WO(b,131718);d=xx(c,137895)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(c,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);zG(b,c);g=Sy(c)|0;while(1){if(!g)break;d=xx(g,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(g,134647)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(g,98392)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(g,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Ex(c,g)|0;while(1){if(!f)break;d=xx(f,137741)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(f,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Gx(c,f)|0}g=Ty(c,g)|0}return}function gF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];Pw(0,97541,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];Pw(0,97541,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function hF(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function iF(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function jF(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function kF(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function lF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{Tw(m,128,f);g=n+212|0;h=c[g>>2]|0;RE(d,m);Ww(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){Uw(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}qQ(xx(e,97006)|0);qF(d);BO(d);UO(d,134232);WO(d,131718);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=uH((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){WG(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))yO(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];XE(d,k);PO(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);rF(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)oH(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;QO(d)}while(0);sF(d,e,o);CO(d);if(h|0){Xw(m);c[n+212>>2]=h}l=p;return}function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];pF(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((kF(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];pF(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function nF(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function oF(a){a=a|0;AO(a);OE(a);return}function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function qF(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];yG(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];yG(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[46369])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[46369]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function rF(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=xx(d,137895)|0;if(!e){j=1;e=134116}else{i=(a[e>>0]|0)==0;j=i&1;e=i?134116:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(b$(e,134297)|0)==0;k=m?134116:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(b$(e,134297)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((uG(k,o,p)|0)<<24>>24)){WO(b,k);UO(b,134297);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];$O(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;WO(b,i);UO(b,134297);tG(d,r)|0;e=c[o+4>>2]|0;h=KL(d,c[46373]|0,0,0)|0;f=+g[p>>2];if(!e)XO(b,134232,h,f);else XO(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];$O(b,q,r);D_(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)wG(b,e);l=s;return}function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)tF(a,b,d);a:do if(!(d&1)){if(d&16|0){JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a);HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);break}if(!(d&8)){f=Sy(b)|0;while(1){if(!f)break a;uF(a,f);e=Ex(b,f)|0;while(1){if(!e)break;uF(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}}HO(a);e=Sy(b)|0;while(1){if(!e)break;if((wF(b,e)|0)<<24>>24)uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if((xF(b,e)|0)<<24>>24)vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}else{HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}while(0);if(g)tF(a,b,d);return}function tF(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((rG(e,u)|0)<<24>>24){if(L)tF(e,u,i);sG(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;qQ(xx(u,97006)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=tG(u,H)|0;if(!j)p=0;else{YO(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=OL(u,0,103230)|0;k=OL(u,0,103238)|0;O=29;break}if(j&8|0){j=OL(u,0,103246)|0;k=OL(u,0,103254)|0;O=29;break}if(j&4|0){j=OL(u,0,103262)|0;k=OL(u,0,103270)|0;O=29;break}j=xx(u,137741)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=xx(u,134647)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=xx(u,98392)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=xx(u,137895)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=OL(u,0,103214)|0;k=OL(u,0,103222)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;O=31}if((O|0)==31){O=0;if(!((uG(n,J,w)|0)<<24>>24)){WO(e,n);k=1}else{WO(e,c[J>>2]|0);k=c[G>>2]|0;m=KL(u,c[46373]|0,0,0)|0;o=+g[w>>2];if(!k)XO(e,134232,m,o);else XO(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[46372]|0;if((m|0?(z=yx(u,m)|0,z|0):0)?a[z>>0]|0:0)fP(e,+LL(u,c[46372]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=KL(u,c[46371]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)UO(e,134297);else UO(e,j);EJ(e,I,4,p,k)}}else{if(!(p&64)){if(KL(u,c[46371]|0,1,0)|0){UO(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}if(!k)break;UO(e,134297);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(KL(u,c[46371]|0,1,0)|0))UO(e,134297);else UO(e,j);if((WE(e,I,n,0)|0)>1){c[N>>2]=ry(u)|0;Pw(3,97374,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,0)}while(0);D_(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)oH(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}QO(e)}a:do if(!F){k=Sy(u)|0;while(1){if(!k)break a;uF(e,k);j=Ex(u,k)|0;while(1){if(!j)break;vF(e,j);j=Gx(u,j)|0}k=Ty(u,k)|0}}while(0);vG(e,f);if(!L)tF(e,u,i)}v=v+1|0}l=P;return}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(jG(b,ez(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(kG(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;cP(b,ry(d)|0);e=NL(d,c[46399]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46387]|0,191979)|0;b:do if(a[e>>0]|0){AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);lG(b,d);ub[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&63](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)oH(b,10,e);mG(b)}while(0);l=j;return}function vF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((yF(d,g)|0)<<24>>24?(f=d+-48|0,(zF(b,d)|0)<<24>>24):0){i=d+48|0;e=W_(ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=C_(e+3+(W_(ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;b0(e,ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(ey(ez(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(W_(e)|0)|0;if(i){a[g>>0]=a[138665]|0;a[g+1>>0]=a[138666]|0;a[g+2>>0]=a[138667]|0}else{a[g>>0]=a[134656]|0;a[g+1>>0]=a[134657]|0;a[g+2>>0]=a[134658]|0}p1(e,ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;cP(b,e);D_(e);e=NL(d,c[46421]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46415]|0,191979)|0;b:do if(!(a[e>>0]|0))e=0;else{AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=185144;break b}if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);BF(b,d,e);CF(b,d,e);DF(b)}while(0);l=h;return}function wF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function xF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function yF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(iG(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((VM(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(VM(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function zF(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,c[46420]|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=NL(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[46397]|0,191979)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((eG(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function AF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[97256]|0){Tw(185408,128,191746);a[97256]=0}Tw(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(cG(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;c[185144+(e<<2)>>2]=c[46353];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;Ww(185408,d)|0;d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;Pw(1,97257,k)|0;c[46286]=0;Xw(j)}else if((d|0)==9){c[m>>2]=b;Pw(1,97291,m)|0;c[46286]=0;Xw(j)}else if((d|0)==12){c[n>>2]=b;Pw(0,97319,n)|0;c[46349]=0;Xw(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;Pw(1,97342,o)|0;c[46286]=0;Xw(j);break}c[185144+(e<<2)>>2]=0;Xw(j);d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}a[d>>0]=0;c[46353]=c[46352]}while(0);l=p;return 185144}function BF(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=NE(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(RL(xx(f,97079)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)YO(d,g);g=c[46436]|0;if((g|0?(i=yx(f,g)|0,i|0):0)?a[i>>0]|0:0)fP(d,+LL(f,c[46436]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(ez(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{Tw(o,128,p);c[z+212>>2]=pH(QE(d,f,o)|0,f)|0;Xw(o);g=xx(f,137973)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=xx(f,108395)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=pH(g,f)|0;g=xx(f,97092)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=xx(f,97101)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=n1(i)|0;q=39}}while(0);if((q|0)==36){g=pH(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=xx(f,97109)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=xx(f,97119)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=n1(i)|0;q=47}}while(0);if((q|0)==44){g=pH(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=xx(f,97128)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=xx(f,97137)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=n1(i)|0}while(0);if((q|0)==52){c[z+220>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=xx(f,97145)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=xx(f,97154)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=n1(i)|0}while(0);if((q|0)==59){c[z+224>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=xx(f,138006)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=pH(g,f)|0;else i=0;g=xx(f,97162)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=pH(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=n1(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=xx(f,97173)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=pH(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=n1(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=xx(f,97185)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=pH(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=n1(i)|0;g=xx(f,97196)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=pH(g,f)|0;break}if(i)c[z+256>>2]=n1(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=xx(f,138019)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=xx(f,97207)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=n1(g)|0}while(0);if((q|0)==94){p=WF(g,f)|0;c[z+228>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=xx(f,97219)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=WF(g,f)|0;c[z+232>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=n1(r)|0;g=xx(f,97232)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=WF(g,f)|0;c[z+236>>2]=pH(r,f)|0;D_(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=n1(s)|0;g=xx(f,97244)|0;if(g|0?a[g>>0]|0:0){s=WF(g,f)|0;c[z+240>>2]=pH(s,f)|0;D_(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=n1(g)|0}while(0);D_(j);D_(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;XF(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;yO(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);NO(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))PO(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function CF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];qQ(xx(e,97006)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+LL(e,c[46418]|0,1.0,0.0);k=NL(e,c[46406]|0,191979)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(b$(i,108091)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(KF(b,e,f,k,q+1|0,N,M)|0))break;else m=134232;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=OL(e,c[46407]|0,m)|0}else{j=103270;g=103262;k=185632;i=185632;p=18}else{j=103254;g=103246;k=185632;i=185632;p=18}else{j=103238;g=103230;k=185632;i=185632;p=18}else{j=103222;g=103214;k=185632;i=185632;p=18}if((p|0)==18){i=c[i>>2]|0;i=OL(e,i,LF(m,g)|0)|0;g=OL(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{UO(b,i);j=g}}if((j|0)!=(m|0))WO(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?134232:i;g=(a[j>>0]|0)==0?134232:j;UO(b,134297);WO(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=kL(O,MF(e)|0,M,0,0)|0;_O(b,c[J+8>>2]|0,c[J>>2]|0,1);NF(J);UO(b,i);if((g|0)!=(i|0))WO(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];KE(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];KE(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){UO(b,i);WO(b,j);break}UO(b,134232);if(!(a[j>>0]|0)){WO(b,134232);break}else{WO(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){aP(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;YO(b,f)}}else aP(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=C_(A)|0;A=C_(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=C_(n)|0;c[z+(o*48|0)>>2]=m;n=C_(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];PF(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];OF(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=n1(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=k1(i,104958)|0;if(!i)break;e=(a[i>>0]|0)==0?134232:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,e);WO(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}aP(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,g);WO(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){UO(b,r);WO(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,3,K,L,N,M,g)}D_(s);g=0;while(1){if((g|0)>=(I|0))break;D_(c[z+(g*48|0)>>2]|0);D_(c[A+(g*48|0)>>2]|0);g=g+1|0}D_(z);D_(A)}while(0);l=P;return}function DF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(QO(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);PO(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);QO(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,j,11,k,i,h,e,g,d);FF(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);FF(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);OO(a);OE(a);l=x;return}function EF(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];JF(a,h)}l=j;return}function FF(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=uH((W_(j)|0)+11|0)|0;switch(e|0){case 11:{m=105198;break}case 7:{m=98557;break}case 6:{m=98567;break}default:qa(135312,96880,2730,97018)}c[o>>2]=j;c[o+4>>2]=m;Y0(n,97034,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){GF(b,d);PO(b,g,h,i,n)}oH(b,e,d);if(k|0)HF(b,d,k);if(j){if(!m){GF(b,d);PO(b,g,h,i,n)}QO(b)}D_(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function GF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;D_(c[i>>2]|0);d=uH(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function HF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(B$(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;IF(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;IF(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];bM(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];YO(b,c[(c[b>>2]|0)+336>>2]|0);UO(b,c[d+8>>2]|0);bP(b,i,3)}l=o;return}function IF(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function JF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;D_(c[j>>2]|0);d=uH(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function KF(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=TE(e,f,k)|0;if((e|0)>1){z=b+48|0;A=ez(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=ry(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(ey(A)|0)!=0;B=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?97053:97058;c[j+8>>2]=B;Pw(3,97063,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{UO(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){UF(F,n,H,E);k=c[H>>2]|0;aP(a,k,c[t>>2]|0,0,0,0);D_(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];UF(G,n/(m+n),H,E);D_(c[G>>2]|0);f=c[H>>2]|0;aP(a,f,c[t>>2]|0,0,0,0);D_(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;D_(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;aP(a,o,c[A>>2]|0,0,0,0);D_(o)}if(c[u>>2]|0){UO(a,c[c[s>>2]>>2]|0);WO(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,2,C,D,h,i,o)}if(c[v>>2]|0){UO(a,e);WO(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;YO(a,d)}while(0);p=p+1|0}UE(r);e=0}l=J;return e|0}function LF(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((W_(d)|0)+1|0,e)|0;b=f+10|0;if((c[46350]|0)<(f|0)){c[46350]=b;b=F_(c[46351]|0,b)|0;c[46351]=b}else b=c[46351]|0;b0(b,d)|0;while(1){e=e+-1|0;b=c[46351]|0;if(!e)break;f=b+(W_(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;p1(b,d)|0}return b|0}function MF(b){b=b|0;var d=0,e=0;d=c[46414]|0;a:do if(!d)e=7;else{d=yx(b,d)|0;switch(a[d>>0]|0){case 110:if(!(b$(d,132627)|0)){d=1;break a}else{e=7;break a}case 102:if(!(b$(d,97040)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(b$(d,97048)|0)){d=3;break a}if(!(b$(d,108195)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(ey(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function NF(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function OF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function PF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function QF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function RF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function SF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function TF(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function UF(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=uH(64)|0;c[e+4>>2]=4;n=uH(64)|0;c[e>>2]=n;XL(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=uH(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+VF(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=uH(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=uH(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];XL(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);D_(n)}l=p;return}function VF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function WF(b,d){b=b|0;d=d|0;d=fz(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=RM(b)|0;else d=OM(b,d)|0;return bG(d)|0}function XF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=vH(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=YF(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;ZF(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}_F(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;D_(g);h=s;g=s}l=q;return}function YF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(ZE(a)|0)){XL(f,a,3,.5,d,e);d=YF(e,YF(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=aG(f,b)|0}l=g;return d|0}function ZF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+$F(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function _F(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=xH(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=xH(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function $F(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function aG(a,b){a=a|0;b=b|0;var d=0;d=vH(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function bG(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function cG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(B$(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((dG(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function dG(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function eG(a,b){a=a|0;b=b|0;return fG(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function fG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;Tw(n,128,o+24|0);Ww(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){Uw(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=m1(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=m1(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=m1(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=gG(b,g,0)|0;f=gG(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(gG(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}Xw(n);l=o;return f|0}function gG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(b$(d,97370)|0)==0:0))f=3;a:do if((f|0)==3){if((hG(d)|0)<<24>>24){e=a2(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(b$(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function hG(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function iG(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function jG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=NL(e,c[46397]|0,191979)|0,(eG(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Jx(d,e)|0))f=1;else{f=Jx(d,e)|0;while(1){if(!f){f=0;break a}g=NL(f,c[46420]|0,191979)|0;if(!(a[g>>0]|0)){f=1;break a}if((eG(b,g)|0)<<24>>24){f=1;break a}f=Kx(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function kG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(iG(f,e)|0)&255;l=d;return b|0}function lG(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=NE(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(ez(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;nG(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=HJ(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=oG(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((pG(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=xx(d,99679)|0;if(!g)g=0;else g=a2(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=uH(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=qG(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=uH(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=uH(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))yO(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);qQ(xx(d,97006)|0);LO(a,d);return}function mG(a){a=a|0;MO(a);OE(a);return}function nG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=xx(e,137973)|0;i=xx(e,138019)|0;k=xx(e,138006)|0;Tw(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=xx(e,108395)|0;g=QE(b,e,j)|0;if(!i)d=0;else d=WF(i,e)|0;PE(b,h,f,d,k,g,e)|0;D_(d);Xw(j);l=m;return}function oG(b){b=b|0;var d=0,e=0;b=OL(b,c[46387]|0,191979)|0;a:do if(!(a[b>>0]|0))b=0;else{AF(b)|0;b=0;d=185144;while(1){e=c[d>>2]|0;if(!e)break a;e=(b$(e,108075)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function pG(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function qG(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=uH(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function rG(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,nx(d,0,98484,0)|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=Sy(d)|0;while(1){if(!e){e=0;break a}if((jG(b,d,e)|0)<<24>>24){e=1;break a}e=Ty(d,e)|0}}else e=0;else e=1;while(0);return e|0}function sG(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);FO(a,b);return}function tG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=xx(b,138e3)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){AF(b)|0;e=185144;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=185144;break a}if(!(b$(f,108075)|0)){g=10;break}if(!(b$(f,103308)|0)){f=e;g=12;break}if(!(b$(f,103315)|0)){f=e;g=14;break}if(!(b$(f,103290)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=(TE(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)Pw(0,97389,i)|0;m=vH((W_(b)|0)+1|0)|0;c[d>>2]=m;b0(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((W_(m)|0)+1)|0;c[d+4>>2]=m;b0(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);UE(j);b=1}else{c[d>>2]=0;UE(j);b=0}l=k;return b|0}function vG(a,b){a=a|0;b=b|0;GO(a,b);OE(a);return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=vH(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];ZO(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;_O(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;aP(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;bP(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];TO(a,p,d);d=j}break}case 8:{WO(a,c[r+8>>2]|0);d=1;break}case 9:{UO(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);WO(a,c[z+4>>2]|0);XO(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);WO(a,j);XO(a,n,d,o);d=3;break}case 14:{Pw(0,97455,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{Pw(0,97495,w)|0;e=0;d=j}break}case 11:{AF(c[r+8>>2]|0)|0;YO(a,185144);i=185144;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)YO(a,c[(c[a>>2]|0)+336>>2]|0);D_(f);l=x;return}function xG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=xH(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function yG(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function zG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;zG(b,e);d=xx(e,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,134647)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,137895)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,98392)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(e,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=f+1|0}return}function AG(a){a=a|0;var b=0,d=0,e=0;b=c[46356]|0;if(!b){b=Cw(20524,c[4555]|0)|0;c[46356]=b}if(!(nb[c[b>>2]&63](b,a,4)|0)){d=c[46356]|0;e=c[d>>2]|0;b=n1(a)|0;nb[e&63](d,b,1)|0;b=1}else b=0;return b|0}function BG(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CG(a){a=a|0;var b=0;b=c[46357]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[46357]=b,(b|0)==0):0){J0(1,c[46358]|0)|0;D_(c[46358]|0)}}else{c[46357]=b+1;if(!b){c[46358]=n1(J0(1,0)|0)|0;J0(1,150481)|0}}return}function DG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)EL();do if((Az(b,134401,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){EG(b);FG(a,b);GG(a,b);CG(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=pC(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=25660;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=uO(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=HG(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(b$(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[46359]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}wO(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[46359]=0;g=27}if((g|0)==27?(g=0,(vO(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=25772;IG(i);JG(i);KG(i,b);LG(i,b);MG(i,b);if(!(c[f>>2]&128))dF(i,b);c[46359]=i}i=qC(a)|0}if((g|0)==13){Pw(1,97653,s)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;s=ry(b)|0;v=+FL();c[t>>2]=s;h[t+8>>3]=v;g1(d,97624,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];Pw(1,97674,p)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[q>>2]=t;h[q+8>>3]=v;g1(d,97624,q)|0;d=-1;break}else if((g|0)==33){CG(0);if(!0){d=0;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[r>>2]=t;h[r+8>>3]=v;g1(d,97624,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){Pw(1,97576,d)|0;if(!0)d=-1;else{d=c[15686]|0;t=ry(b)|0;v=+FL();c[e>>2]=t;h[e+8>>3]=v;g1(d,97624,e)|0;d=-1}}l=u;return d|0}function EG(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;RG(a,b);b=Ty(a,b)|0}return}function FG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=xx(d,102470)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=N1(e,102477,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=xx(d,98076)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=N1(e,102477,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=98080;f=xx(d,98083)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[46371]=nx(d,0,98446,0)|0;c[46372]=nx(d,0,98437,0)|0;c[b+320>>2]=OL(0,c[46381]|0,104968)|0;h[b+328>>3]=+LL(0,c[46380]|0,14.0,1.0);c[b+336>>2]=20560;c[b+188>>2]=ry(d)|0;l=o;return}function GG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){D_(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){D_(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){D_(e);c[g>>2]=0}e=xx(d,97827)|0;if(e){c[b+312>>2]=PG(b,d,e)|0;e=xx(d,97834)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=QG(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function HG(b){b=b|0;b=xx(b,97795)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(b$(b+1|0,97807)|0))b=1;else{b=0;break a}break}case 101:{if(!(b$(b+1|0,97817)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function IG(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function JG(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function KG(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function LG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(i<e|k<f)?!(k>f&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e<k/f;i=(n?i:k)/(n?e:f);h[x>>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=xx(d,97726)|0;if(g){m=C_((W_(g)|0)+1|0)|0;n=C_((W_(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((N1(g,97735,s)|0)==4){g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((N1(g,97755,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;N1(g,97775,t)|0;break}g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);D_(m);D_(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function MG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]<i?I:E)>>3];h[I>>3]=o;e=p;f=I;m=+h[(g<k?I:E)+8>>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i<g){h[e>>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k<m){f=E;j=21}else{r=e;m=k}}if((j|0)==21){h[f+8>>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;OG(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;OG(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){OG(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;OG(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];Pw(0,97706,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];NG(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];NG(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];NG(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];yG(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];yG(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function NG(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function OG(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function PG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=xx(d,97947)|0;i=b+296|0;c[i>>2]=(f|0)==0?97956:f;d=xx(d,97960)|0;f=b+300|0;d=(d|0)==0?97973:d;c[f>>2]=d;d=q1(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];Pw(0,97975,g)|0;c[f>>2]=191979}d=n1(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=k1(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=vH(f<<2)|0;else d=xH(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=xH(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function QG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=vH((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((fG(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;Pw(0,97846,j)|0;D_(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function RG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Ex(a,b)|0;while(1){if(!b)break;SG(b);b=Gx(a,b)|0}return}function SG(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)TG(a);return}function TG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)qa(98114,96880,3994,98128);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function UG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)qa(98144,96880,3968,98156);if(((k>>>0)%3|0|0)!=1)qa(98166,96880,3969,98156);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]<r?j:i)>>3];h[j>>3]=o;s=+h[(+h[f>>3]<p?j:i)+8>>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o<q?j:i)>>3];o=+h[e>>3];h[f>>3]=+h[(s<o?j:i)+8>>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function VG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q<e;g=l?q:e;e=l?e:q;f=(r-q)*o+p;m=+h[c+8>>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p<j;g=l?p:j;f=l?j:p;e=(m-p)/o+q;if(e>=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function WG(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[46360]|0)!=(d|0)){w$(+(d|0)*.15915494309189535,183248,183256);c[46360]=d}g=+h[b>>3];e=+h[22907];f=+h[b+8>>3];i=+h[22906];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function YG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function _G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function $G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g+8|0;e=g;a=xx(a,b)|0;if(a|0?(c[f>>2]=e,(N1(a,98183,f)|0)>0):0)h[d>>3]=+h[e>>3];l=g;return}function bH(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=uH(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=xx(b,98187)|0;if(!e){e=Ta(98196)|0;if(e|0)k=3}else k=3;if((k|0)==3)cb(98208,e|0,1)|0;e=(cH(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=xx(b,98219)|0,c[46362]=e,(e|0)==0):0)c[46362]=c[46361];f=+LL(b,nx(b,0,98229,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=xx(b,98237)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(b$(e,98245)|0)){e=1;break a}break}case 66:{if(!(b$(e,98248)|0)){e=2;break a}break}case 82:{e=(b$(e,98251)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+LL(b,nx(b,0,98254,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=NL(b,nx(b,0,98262,0)|0,0)|0;if(e){c[g>>2]=i;if(N1(e,98183,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(P0(e,98270)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(KL(b,nx(b,0,98278,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=aM(NL(b,nx(b,0,98288,0)|0,0)|0,20572,20588)|0;c[(c[m>>2]|0)+244>>2]=i;dH(b);i=eH(b,98298,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;eH(b,98303,e+48|0)|0;e=QL(xx(b,98308)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=xx(b,98315)|0;do if(!e){e=xx(b,98322)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=xx(b,98334)|0;if(e|0){e=QL(e)|0;k=27}}else{e=(a2(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[46364]=aM(xx(b,98344)|0,20604,20620)|0;a[191874]=QL(xx(b,98356)|0)|0;c[46367]=0;c[46368]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=xx(b,98368)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=xx(b,98372)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+b2(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}fH(b);h[22910]=1.e+37;c[46370]=nx(b,0,98383,0)|0;c[46373]=nx(b,0,137952,0)|0;c[46374]=nx(b,0,102470,0)|0;c[46375]=nx(b,1,137966,0)|0;c[46376]=nx(b,1,138034,0)|0;c[46377]=nx(b,1,105204,0)|0;c[46378]=nx(b,1,137741,0)|0;c[46379]=nx(b,1,98392,0)|0;c[46387]=nx(b,1,138e3,0)|0;c[46380]=nx(b,1,98402,0)|0;c[46381]=nx(b,1,98411,0)|0;c[46382]=nx(b,1,98420,0)|0;k=nx(b,1,105198,0)|0;c[46384]=k;if(!k)c[46384]=nx(b,1,105198,102467)|0;c[46385]=nx(b,1,98430,0)|0;c[46388]=nx(b,1,98278,0)|0;c[46402]=nx(b,1,98437,0)|0;c[46391]=nx(b,1,98383,0)|0;c[46383]=nx(b,1,102470,0)|0;c[46389]=nx(b,1,137994,0)|0;c[46390]=nx(b,1,98446,0)|0;c[46393]=nx(b,1,98458,0)|0;c[46392]=nx(b,1,98322,0)|0;c[46394]=nx(b,1,98463,0)|0;c[46395]=nx(b,1,137942,0)|0;c[46396]=nx(b,1,134215,0)|0;c[46386]=nx(b,1,98474,0)|0;c[46397]=nx(b,1,98484,0)|0;c[46398]=nx(b,1,98490,0)|0;c[46399]=nx(b,1,98496,0)|0;c[46400]=nx(b,1,98504,0)|0;c[46401]=nx(b,1,98513,0)|0;c[46403]=nx(b,1,137952,0)|0;c[46404]=nx(b,2,98515,0)|0;c[46406]=nx(b,2,137741,0)|0;c[46407]=nx(b,2,98392,0)|0;c[46409]=nx(b,2,98402,0)|0;c[46410]=nx(b,2,98411,0)|0;c[46411]=nx(b,2,98420,0)|0;c[46412]=nx(b,2,105198,0)|0;c[46413]=nx(b,2,98430,0)|0;c[46422]=nx(b,2,98522,0)|0;c[46414]=nx(b,2,98533,0)|0;c[46425]=nx(b,2,98537,0)|0;c[46426]=nx(b,2,98547,0)|0;c[46427]=nx(b,2,98557,0)|0;c[46428]=nx(b,2,98567,0)|0;c[46429]=nx(b,2,98577,0)|0;c[46430]=nx(b,2,98591,0)|0;c[46431]=nx(b,2,98605,0)|0;c[46432]=nx(b,2,98620,0)|0;c[46433]=nx(b,2,98634,0)|0;c[46405]=nx(b,2,98645,0)|0;c[46417]=nx(b,2,98278,0)|0;c[46415]=nx(b,2,138e3,0)|0;c[46416]=nx(b,2,98652,0)|0;c[46418]=nx(b,2,98661,0)|0;c[46419]=nx(b,2,98671,0)|0;c[46420]=nx(b,2,98484,0)|0;c[46421]=nx(b,2,98496,0)|0;c[46434]=nx(b,2,98682,0)|0;c[46435]=nx(b,2,98691,0)|0;c[46436]=nx(b,2,98437,0)|0;e=ME(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=xx(b,137978)|0;if(e|0?a[e>>0]|0:0){b=pH(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function cH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=OL(a,nx(a,0,98781,0)|0,98789)|0;if(((((((O$(a,98795)|0)!=0?(O$(a,98803)|0)!=0:0)?(O$(a,98810)|0)!=0:0)?(O$(a,98813)|0)!=0:0)?(O$(a,98824)|0)!=0:0)?(O$(a,98835)|0)!=0:0)?(O$(a,98845)|0)!=0:0)if((O$(a,98856)|0)!=0?(O$(a,98862)|0)!=0:0)if((O$(a,98789)|0)!=0?(O$(a,98867)|0)!=0:0){c[b>>2]=a;Pw(0,98872,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function dH(b){b=b|0;var d=0.0,e=0,f=0;e=xx(b,98739)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(b$(e,98745)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(e,98750)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(b$(e,98759)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(b$(e,98766)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+b2(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function eH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=xx(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(N1(b,98723,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(N1(b,98733,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function fH(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=xx(b,105198)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(Rz(d)|0)!=0;g=+LL(b,nx(b,0,98402,0)|0,14.0,1.0);i=OL(b,nx(b,0,98411,0)|0,104968)|0;d=kH(b,d,e?2:0,g,i,OL(b,nx(b,0,98420,0)|0,134232)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=xx(b,102602)|0;e=(d|0)!=0;do if((fz(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=xx(b,98700)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((fz(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function gH(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){pE(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}D_(c[b+92>>2]|0);b=c[e>>2]|0}while(0);D_(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;nH(c[e+12>>2]|0);Gz(a,0,134401);return}function hH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;switch(a|0){case 0:{a=98945;break}case 1:{a=98813;break}case 2:{a=98951;break}default:{c[b>>2]=a;Pw(1,98915,b)|0;a=98945}}l=d;return a|0}function iH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=vH((W_(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;jH(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;jH(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;jH(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function jH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=uH((k*56|0)+112|0)|0;else n=wH(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[45824]=c[e+4>>2];h[22914]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=nb[c[g>>2]&63](g,183296,1)|0;wL(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function kH(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=uH(88)|0;switch(pz(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=fz(ez(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=fz(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=n1(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=n1(e)|0;a[t+82>>0]=1;if(!(kR(b,t)|0))break a;switch(pz(b)|0){case 0:{c[p>>2]=ry(n)|0;Pw(3,98957,p)|0;break a}case 1:{c[q>>2]=ry(o)|0;Pw(3,98979,q)|0;break a}case 2:{p=ry(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(ey(s)|0)!=0;s=ry(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?134656:138665;c[r+8>>2]=s;Pw(3,99e3,r)|0;break a}default:break a}}case 0:{i=lH(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=RM(i)|0;else i=OM(i,s)|0;D_(c[t>>2]|0);c[t>>2]=i;iH(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:qa(99027,99043,166,99052)}while(0);l=u;return t|0}function lH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(pz(d)|0){case 0:{i=ry(d)|0;g=W_(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 1:{i=ry(ez(d)|0)|0;g=W_(i)|0;j=ry(d)|0;h=W_(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 2:{h=d+48|0;i=ry(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=W_(i)|0;l=ry(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=W_(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=W_(q)|0;m=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=W_(o)|0;j=W_(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=W_(f)|0}else{n=2;f=99063}x=(ey(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=102467;w=f;x=x?138665:134656;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=99075;m=99072;j=102467;i=99066;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=vH(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)D_(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)tb[f&127](g);d=d+56|0;e=e+1|0}D_(a)}return}function nH(d){d=d|0;var e=0;if(d|0){D_(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)XQ(e,1)}else mH(c[e>>2]|0,b[d+76>>1]|0);D_(d)}return}function oH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){RO(d,0);UO(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];TO(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}SO(d);i=18}}else{CQ(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function pH(a,b){a=a|0;b=b|0;return lH(a,b,1)|0}function qH(a){a=a|0;return rH(a,0)|0}function rH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[46437]|0;if(!e){c[46438]=64;e=vH(64)|0;c[46437]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[46438]|0;if((i|0)>(b+-8|0)){e=b<<1;c[46438]=e;e=xH(c[46437]|0,e)|0;c[46437]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(sH(h)|0)!=0:0)k=18;else{f=5;d=99104}break}case 60:{f=4;d=99127;break}case 62:{f=4;d=99110;break}case 45:{f=5;d=99121;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=99097;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=99090;break a}case 39:{f=5;d=99115;break a}case 10:if(j){k=18;break a}else{f=5;d=99084;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:99078}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[46437]|0}function sH(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function tH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[46439]|0;if(!d){c[46440]=64;d=vH(64)|0;c[46439]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[46440]|0;if((i|0)>(f+-8|0)){d=f<<1;c[46440]=d;d=xH(c[46439]|0,d)|0;c[46439]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(sH(b)|0)){g=5;e=99104}else j=12;break}case 60:{g=4;e=99127;break}case 62:{g=4;e=99110;break}case 34:{g=6;e=99090;break}case 39:{g=5;e=99115;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[46439]|0}function uH(a){a=a|0;var b=0;if(!a)a=0;else{b=vH(a)|0;H3(b|0,0,a|0)|0;a=b}return a|0}function vH(a){a=a|0;if(a){a=C_(a)|0;if(!a){E1(108658,14,1,c[15686]|0)|0;a=0}}else a=0;return a|0}function wH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=F_(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)H3(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else E1(108658,14,1,c[15686]|0)|0;return a|0}function xH(a,b){a=a|0;b=b|0;a=F_(a,b)|0;if((b|0)!=0&(a|0)==0)E1(108658,14,1,c[15686]|0)|0;return a|0}\n  function ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=pl(xx(a,87703)|0,b)|0;q=pl(xx(a,87709)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=ry(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=ry(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;Pw(0,87715,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=vH(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(ql(H,h)|0)){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;Pw(0,87756,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(ql(H,h)|0){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;Pw(0,87799,n)|0;K=26;break}if(!(c[C>>2]|0))qa(87841,87852,369,87863);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];rl(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(FE(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(tl((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];rl(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else qa(87880,87852,387,87863);else{if(f)b=FE(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(ql(H,f)|0)){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;Pw(0,87891,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(ql(H,f)|0){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;Pw(0,87934,x)|0;K=52;break}if(!(c[v>>2]|0))qa(87880,87852,429,87863);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];rl(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(tl(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))qa(87841,87852,452,87863);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];rl(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=vH(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}D_(c[I>>2]|0);D_(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function pl(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=vM(d,b)|0;if(!d){c[e>>2]=b;Pw(0,88054,e)|0;d=0}}else d=0;l=f;return d|0}function ql(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function rl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s<k?(f=r+ +(~~((k-q)*(r-t)/(q-s))|0),f>=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t<f?(m=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(m>=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=yl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=yl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=yl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=yl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;Pw(1,87976,B)|0;qa(135312,87852,78,88028)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function tl(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+ul(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)XL(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+ul(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}f=+vl(a,0.0,d>1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}f=+vl(a,0.0,d>1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){XL(k,j,3,f,a,0);d=f}l=m;return d<2.0|0}function ul(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(xl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+48>>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+ul(j,b,g,d,e,f);if(!(b>=0.0))b=+ul(k,g,c,d,e,f)}while(0);l=m;return +b}function vl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(wl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+vl(j,b,g,d,e,f);if(!(b>=0.0))b=+vl(k,g,c,d,e,f)}while(0);l=m;return +b}function wl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function xl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;Y0(b,88042,d)|0;l=c;return b|0}function zl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=C_(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(20,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(65,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(21,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(66,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=D3(183936,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;ca(20,3,88082,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;ia(99,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);D_(t|0);l=v;return}function Al(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function Bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((Al(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Cl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ph(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ph(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}sh(a,o);l=l+1|0}if((r|0)==23)qa(88218,88262,115,88269);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function Dl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((Dl(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Fl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}xj(d);j=Sy(d)|0;while(1){if(!j)break;Gl(d,j);i=Ex(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;Gl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Gx(d,i)|0}j=Ty(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(oz(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(oz(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(oz(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=ry(d)|0;c[p+4>>2]=i;Pw(0,88182,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=ry(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;Pw(1,88124,o)|0;bb(183936,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;Fl(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function Hl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function Il(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;Jl(j,k+512|0,k);e=(a[190690]|0)+1<<24>>24;a[190690]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=Sy(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(SL(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[190690]|0)):0){Kl(b);Ll(j,b,g);Ml(b)}d=Ty(b,d)|0}Nl(j);l=k;return}function Jl(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function Kl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[46023]=0;return}function Ll(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;Ol(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Pl(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[190690]|0))continue;Ql(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[190690]|0)?(e|0)==(SL(e)|0):0)Ol(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=vH(a<<2)|0;else a=xH(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function Nl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Ol(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=uH(16)|0;if(!f)Pw(1,95943,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=uH(4e6)|0;c[f>>2]=b;if(!b){Pw(1,88282,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[190690]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Pl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Ql(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[190690]|0;b=c[46023]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[46023]=d;c[g+164>>2]=0;return}function Rl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Sl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Sl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}Tl(b)}while(0);Ji(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Ul(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Ul(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){Ch(b);Qh(b)}return e|0}function Sl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(ig(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function Tl(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)qa(88339,88322,190,88358);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=vH(d<<6)|0;else a=xH(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=uH(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Ul(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=ig(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Vl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Wl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ph(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ph(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]<f)h[e>>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]<f)h[d>>3]=f;c[g+112>>2]=b}return}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Xl(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Yl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Yl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=vH((c[e>>2]<<2)+8|0)|0;else f=xH(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=uh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Yl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)qa(88302,88322,63,88329);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Xl(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Zl(a){a=a|0;c[46363]=1;rm(a);c[46363]=0;return}function _l(a){a=a|0;c[46363]=2;rm(a);c[46363]=0;return}function $l(a){a=a|0;var b=0;Az(a,134365,304,1)|0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function am(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+64|0;j=s+48|0;o=s+40|0;k=s+24|0;i=s+8|0;q=s+56|0;m=s;do if((b|0)!=0?(r=e+16|0,p=c[(c[r>>2]|0)+132>>2]|0,g=yx(e,b)|0,(a[g>>0]|0)!=0):0){a[q>>0]=0;b=p+8|0;if((c[46366]|0)>2?(c[i>>2]=p,c[i+4>>2]=b,c[i+8>>2]=p+16,c[i+12>>2]=q,(N1(g,88435,i)|0)>2):0){a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;a:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break a;o=p+(b<<3)|0;h[o>>3]=+h[o>>3]/+h[22908];b=b+1|0}}while(0);if((g|0)>3)Hn(e,f,3);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1;break}c[k>>2]=p;c[k+4>>2]=b;c[k+8>>2]=q;if((N1(g,98723,k)|0)<=1){c[j>>2]=ry(e)|0;c[j+4>>2]=g;Pw(1,88449,j)|0;b=0;break}a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break b;k=p+(b<<3)|0;h[k>>3]=+h[k>>3]/+h[22908];b=b+1|0}}while(0);do if((g|0)>2){b=c[46401]|0;if((b|0?(n=yx(e,b)|0,n|0):0)?(c[o>>2]=m,(N1(n,98183,o)|0)==1):0){u=+h[22908];t=+h[m>>3];h[p+16>>3]=u>0.0?t/u:t;Hn(e,f,3);break}In(e,f)}while(0);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1}else b=0;while(0);l=s;return b|0}function bm(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}cm(a);return}function cm(a){a=a|0;if((c[46363]|0)!=0|(c[46025]|0)<0)Fn(a);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function dm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;m=q+32|0;o=q;k=nx(b,0,99611,0)|0;e=nx(b,0,99645,0)|0;p=(RL(xx(b,88493)|0,0)|0)<<24>>24!=0;if(!e)e=nx(b,0,99645,191979)|0;En(b)|0;n=b+16|0;i=0;while(1){j=c[(c[(c[n>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!j){f=12;break}g=j+16|0;f=c[g>>2]|0;if(!(a[f+119>>0]|0)){if(z$(ry(j)|0,104980,7)|0){f=8;break}f=c[g>>2]|0}f=c[f+108>>2]|0;if(f|0)em(j,f,99607);i=i+1|0}a:do if((f|0)==8){p=ry(j)|0;e=ry(b)|0;c[m>>2]=p;c[m+4>>2]=e;Pw(1,88505,m)|0;e=-1}else if((f|0)==12){fm(b,k,e);j=gm(b)|0;e=c[(c[n>>2]|0)+8>>2]|0;if(!(c[e+88>>2]|0))e=0;else{c[e+84>>2]=0;e=1}g=(d|0)!=0;i=(e|0)!=0;if(!(i|g&(c[46363]|0)==1^1)?(tq(b)|0)!=0:0){f=c[(c[n>>2]|0)+12>>2]|0;if(!f)f=1;else{a[f+81>>0]=0;f=1}}else f=0;mM(b);if(i){d=(c[n>>2]|0)+16|0;_E(o,b);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];c[d+16>>2]=c[o+16>>2];c[d+20>>2]=c[o+20>>2];c[d+24>>2]=c[o+24>>2];c[d+28>>2]=c[o+28>>2]}if(!g){c[46367]=1;f=Sy(b)|0;while(1){if(!f)break a;p=c[f+16>>2]|0;o=c[p+132>>2]|0;h[p+16>>3]=+h[o>>3]*72.0;h[p+24>>3]=+h[o+8>>3]*72.0;f=Ty(b,f)|0}}do if(!(p|i)){p=c[n>>2]|0;if(!(+h[p+16>>3]!=0.0)?!(+h[p+24>>3]!=0.0):0)break;cn(b)}while(0);if(!((j|0)!=0&(f|(an(b)|0)<<24>>24!=0))){if((j|0)==2){c[46367]=1;break}}else hm(b);$m(b,0)}while(0);l=q;return e|0}function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;j=k+32|0;f=k+24|0;g=k+16|0;i=k;b=xx(b,e)|0;if(b|0?(c[j>>2]=f,c[j+4>>2]=g,(N1(b,102477,j)|0)==2):0){j=d+56|0;km(i,+h[f>>3],+h[g>>3]);c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];a[d+81>>0]=1}l=k;return}function fm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+32|0;f=m+24|0;g=m+16|0;i=m;j=b+16|0;if((d|0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0)?(n=yx(b,d)|0,c[k>>2]=f,c[k+4>>2]=g,(N1(n,102477,k)|0)==2):0){n=(c[(c[j>>2]|0)+12>>2]|0)+56|0;km(i,+h[f>>3],+h[g>>3]);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1}a:do if(e|0){f=wA(b)|0;while(1){if(!f)break a;lm(f,b,d,e);f=xA(f)|0}}while(0);l=m;return}function gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(by(a)|0){f=nx(a,2,99597,0)|0;if(!((f|0)==0|(c[46363]|0)<2)){b=0;e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=b+((im(f,d)|0)!=0&1)|0;d=Gx(a,d)|0;b=g}e=Ty(a,e)|0}if(b){b=(b|0)==(by(a)|0);b=b?2:1}else b=0}else b=0}else b=2;return b|0}function hm(a){a=a|0;var b=0,d=0,e=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;KM(b);e=b+16|0;nH(c[(c[e>>2]|0)+96>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);nH(c[(c[e>>2]|0)+100>>2]|0);nH(c[(c[e>>2]|0)+104>>2]|0);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function im(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=l;l=l+96|0;z=B+72|0;x=B+56|0;A=B+48|0;y=B+32|0;w=B+16|0;r=B+88|0;s=B+8|0;t=B;u=B+84|0;v=B+80|0;b=yx(d,b)|0;do if(a[b>>0]|0){sE(d,u,v);q=1;f=0;e=0;j=0.0;i=0.0;k=0.0;g=0.0;a:while(1){c[w>>2]=s;c[w+4>>2]=t;c[w+8>>2]=r;if((N1(b,88542,w)|0)==2){p=1;b=b+(c[r>>2]|0)|0;i=+h[s>>3];g=+h[t>>3]}else p=e;c[y>>2]=s;c[y+4>>2]=t;c[y+8>>2]=r;if((N1(b,88554,y)|0)==2){o=1;b=b+(c[r>>2]|0)|0;j=+h[s>>3];k=+h[t>>3]}else o=f;m=jm(b)|0;if(!((m|0)>3&((m|0)%3|0|0)==1)){e=8;break}n=vH(m<<4)|0;e=n;f=m;while(1){if(!f)break;c[x>>2]=s;c[x+4>>2]=t;c[x+8>>2]=r;if((N1(b,88624,x)|0)<2){e=13;break a}C=b+(c[r>>2]|0)|0;h[e>>3]=+h[s>>3];h[e+8>>3]=+h[t>>3];e=e+16|0;f=f+-1|0;b=C}while(1){e=a[b>>0]|0;f=b+1|0;if(!(B$(e<<24>>24)|0))break;else b=f}C=e<<24>>24==0;b=C?b:f;q=C?0:q;f=PK(d,m)|0;if(p|0){c[f+8>>2]=c[u>>2];h[f+16>>3]=i;h[f+24>>3]=g}if(o|0){c[f+12>>2]=c[v>>2];h[f+32>>3]=j;h[f+40>>3]=k}e=0;while(1){if((e|0)>=(m|0))break;C=(c[f>>2]|0)+(e<<4)|0;D=n+(e<<4)|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];e=e+1|0}D_(n);if(!q){e=26;break}else{f=o;e=p}}if((e|0)==8){KM(d);if(a[190691]|0){b=0;break}a[190691]=1;D=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;b=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[A>>2]=D;c[A+4>>2]=b;Pw(0,88567,A)|0;b=0;break}else if((e|0)==13){if(!(a[190691]|0)){a[190691]=1;C=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;D=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[z>>2]=C;c[z+4>>2]=D;Pw(0,88634,z)|0}D_(n);KM(d);b=0;break}else if((e|0)==26){f=d+16|0;b=c[f>>2]|0;e=c[b+96>>2]|0;if(e){em(d,e,99611);b=c[f>>2]|0}e=c[b+108>>2]|0;if(e){em(d,e,99607);b=c[f>>2]|0}e=c[b+100>>2]|0;if(e){em(d,e,99614);b=c[f>>2]|0}b=c[b+104>>2]|0;if(!b){b=1;break}em(d,b,99622);b=1;break}}else b=0;while(0);l=B;return b|0}function jm(b){b=b|0;var c=0,d=0;d=0;do{while(1){c=a[b>>0]|0;if(!(B$(c&255)|0))break;else b=b+1|0}a:do if(!(c<<24>>24))c=0;else{d=d+1|0;while(1){if(!(c<<24>>24)){c=0;break a}if(c<<24>>24==59|(B$(c&255)|0)!=0)break a;c=b+1|0;b=c;c=a[c>>0]|0}}while(0)}while((B$(c&255)|0)!=0);return d|0}function km(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;if((z$(ry(a)|0,104980,7)|0)==0?(mm(a,e,f)|0)!=0:0){Az(a,134401,280,1)|0;i=(c[a+16>>2]|0)+16|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];nm(b,a);fm(a,d,e)}else g=4;a:do if((g|0)==4){a=wA(a)|0;while(1){if(!a)break a;lm(a,b,d,e);a=xA(a)|0}}while(0);l=h;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;i=l;l=l+48|0;j=i+32|0;g=i;k=yx(a,b)|0;a=g+8|0;b=g+24|0;c[j>>2]=g;c[j+4>>2]=a;c[j+8>>2]=g+16;c[j+12>>2]=b;if((N1(k,88682,j)|0)==4){e=+h[a>>3];f=+h[b>>3];if(e>f){h[a>>3]=f;h[b>>3]=e};c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];a=1}else a=0;l=i;return a|0}function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function om(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;m=n+8|0;k=n;i=n+16|0;j=n+12|0;h=xx(b,88698)|0;do if((h|0)!=0?(g=a[h>>0]|0,g<<24>>24!=0):0){g=g&255;if(!(N$(g)|0))if((e|0)==2|(g+-48|0)>>>0<10)e=h;else break;else{if(!(z$(h,88704,4)|0)){e=0;break}if(!(z$(h,102485,7)|0)){e=1;break}if(z$(h,88709,6)|0)if((e|0)==2)e=h;else break;else e=h+6|0}if(!(((d[e>>0]|0)+-48|0)>>>0<10?(c[k>>2]=j,(N1(e,96907,k)|0)>=1):0)){k=H1()|0;k=(db(0)|0)^k;c[j>>2]=k;c[m>>2]=k;Y0(i,96907,m)|0;zx(b,88698,i)|0}c[f>>2]=c[j>>2];e=2}while(0);l=n;return e|0}function pm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f+4|0;c[e>>2]=1;d=om(a,d,e)|0;if((d|0)!=2&(c[46026]|0)!=0)Pw(0,88716,f)|0;if((d|0)==1)qm(a,b);i2(c[e>>2]|0);l=f;return d|0}function qm(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0.0;g=+(d|0);i=6.283185307179586/g;e=Sy(b)|0;f=0.0;while(1){if(!e)break;l=+E(+f)*g;j=c[e+16>>2]|0;k=c[j+132>>2]|0;h[k>>3]=l;h[k+8>>3]=+F(+f)*g;a[j+119>>0]=1;if((c[46366]|0)>2)In(e,d);e=Ty(b,e)|0;f=f+i}return}function rm(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0;r=l;l=l+80|0;d=r+24|0;n=r+32|0;k=r;p=r+28|0;m=r+64|0;q=+h[22908];do if(c[46363]|0){h[22908]=72.0;sm(b);tm(b);if((dm(b,1)|0)<0){Pw(3,88764,d)|0;break}else{PI(b,0);f=32;break}}else{o=RL(xx(b,88493)|0,0)|0;h[22908]=+ML(b);sm(b);g=um(b)|0;Sp(b,k,0)|0;i=vm(b)|0;j=ZD(b,0,n)|0;d=YD(b,-1,8)|0;c[46025]=d;e=(d|0)<0;do if(!j){if((g|0)!=0&e){c[46025]=8;c[n+16>>2]=2;f=11;break}c[n+16>>2]=2;if((d|0)<=-1){wm(b,g,i);Vp(b,k)|0;tm(b);if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else f=11}else if(e){c[46025]=8;f=11}else f=11;while(0);if((f|0)==11){j=dD(b,p,88792,m)|0;d=c[p>>2]|0;do if((d|0)<=1){wm(b,g,i);Vp(b,k)|0;if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else{f=o<<24>>24==0;e=0;while(1){if((e|0)>=(d|0))break;d=c[j+(e<<2)>>2]|0;vD(d)|0;wm(d,g,i);Vp(d,k)|0;$M(d,2);if(f)hn(d);else xm(d);e=e+1|0;d=c[p>>2]|0}if(!(a[m>>0]|0))e=0;else{e=uH(d)|0;a[e>>0]=1;d=c[p>>2]|0}c[n+8>>2]=c[46025];c[n+20>>2]=e;c[n+12>>2]=1;VD(d,j,b,n)|0;D_(e)}while(0);mM(b);tm(b);d=0;while(1){if((d|0)>=(c[p>>2]|0))break;n=c[j+(d<<2)>>2]|0;Fn(n);Cz(n,134401)|0;dz(b,n)|0;d=d+1|0}D_(j)}PI(b,o<<24>>24==0&1);f=32}while(0);if((f|0)==32)h[22908]=q;l=r;return}function sm(a){a=a|0;var d=0,e=0,f=0,g=0;$M(a,2);f=KL(a,nx(a,0,89557,0)|0,2,2)|0;d=(KL(a,nx(a,0,90633,0)|0,f,2)|0)&65535;b[(c[(fz(a)|0)+16>>2]|0)+176>>1]=d;d=c[(c[a+60>>2]|0)+16>>2]|0;g=d+176|0;e=b[g>>1]|0;e=(e&65535)<10?e:10;b[g>>1]=e;e=e&65535;c[46366]=e;b[d+178>>1]=(f|0)<(e|0)?f:e;Hm(a);return}function tm(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;a:do if((c[46366]|0)>2&(c[46401]|0)!=0){b=Sy(a)|0;while(1){if(!b)break a;h[e>>3]=+h[(c[(c[b+16>>2]|0)+132>>2]|0)+16>>3]*72.0;Y0(d,98183,e)|0;rx(b,c[46401]|0,d)|0;b=Ty(a,b)|0}}while(0);l=f;return}function um(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=xx(b,89477)|0;a:do if(!d)b=1;else{switch(a[d>>0]|0){case 0:{b=1;break a}case 75:{if(!(b$(d,89482)|0)){b=0;break a}break}case 109:{if(!(b$(d,89485)|0)){b=1;break a}break}case 104:{if(!(b$(d,89491)|0)){b=2;break a}break}default:{}}b=ry(b)|0;c[e>>2]=d;c[e+4>>2]=b;Pw(0,89496,e)|0;b=1}while(0);l=f;return b|0}function vm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;e=h;d=xx(b,89260)|0;a:do if(!d)b=0;else{switch(a[d>>0]|0){case 0:{b=0;break a}case 99:{if(!(b$(d,89266)|0)){b=1;break a}break}case 115:{if(!(b$(d,89274)|0)){b=2;break a}if(!(b$(d,89281)|0)){b=0;break a}break}case 109:{if(!(b$(d,89291)|0)){if(nx(b,2,90566,0)|0){b=3;break a}c[e>>2]=ry(b)|0;Pw(0,89295,e)|0;Pw(3,89358,f)|0;b=0;break a}break}default:{}}b=ry(b)|0;c[g>>2]=d;c[g+4>>2]=b;Pw(0,89415,g)|0;b=0}while(0);l=h;return b|0}function wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=xx(a,90975)|0;if(!e)if((b|0)==1)e=200;else e=(ay(a)|0)*100|0;else e=a2(e)|0;c[46365]=e;e=yn(a,b)|0;do if(!((e|0)<2|(c[46365]|0)<0))if(!b){zm(a,e,d);break}else{ym(a,e,b,d,c[46366]|0);break}while(0);return}function xm(a){a=a|0;mM(a);$m(a,1);return}function ym(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;r=u+40|0;o=u+24|0;n=u;p=u+48|0;t=u+44|0;q=(d|0)==2;i=pm(a,b,q?0:2)|0;j=Gm(a)|0;k=j|4;s=vH(f<<2)|0;c[s>>2]=vH(O(b<<3,f)|0)|0;g=c[46366]|0;f=1;while(1){if((f|0)>=(g|0))break;c[s+(f<<2)>>2]=(c[s>>2]|0)+((O(f,b)|0)<<3);f=f+1|0}g=(i|0)==0;f=g?k:j;if(0){k=c[15686]|0;j=c[46365]|0;m=+h[22909];c[n>>2]=e;c[n+4>>2]=g&1;c[n+8>>2]=f&3;c[n+12>>2]=j;h[n+16>>3]=m;g1(k,89073,n)|0;E1(89130,15,1,k)|0;EL();E1(89146,13,1,k)|0}n=Cm(a,b,p,d,e,t)|0;if(0){k=c[15686]|0;m=+FL();c[o>>2]=b;h[o+8>>3]=m;g1(k,89160,o)|0}if((d|0)!=1){m=+LL(a,nx(a,0,89179,0)|0,0.0,-1797693134862315708145274.0e284);if(q){f=Gq(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0,m)|0;g=12}else g=14}else{f=qn(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0)|0;g=12}if((g|0)==12)if((f|0)<0)Pw(3,89189,r)|0;else g=14;a:do if((g|0)==14){g=Sy(a)|0;while(1){if(!g)break a;k=c[g+16>>2]|0;i=c[k+120>>2]|0;j=c[46366]|0;k=k+132|0;f=0;while(1){if((f|0)>=(j|0))break;h[(c[k>>2]|0)+(f<<3)>>3]=+h[(c[s+(f<<2)>>2]|0)+(i<<3)>>3];f=f+1|0}g=Ty(a,g)|0}}while(0);br(n);D_(c[s>>2]|0);D_(s);D_(c[t>>2]|0);l=u;return}function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;g=l;l=l+48|0;f=g+32|0;e=g;switch(d|0){case 2:{Am(a,b);break}case 1:{if(!(Cq(a,b)|0)){c[e>>2]=ry(a)|0;Pw(0,88802,e)|0;Pw(3,91952,g+8|0)|0;Pw(3,88854,g+16|0)|0;Pw(3,88926,g+24|0)|0;Wn(a,b)}break}default:{Wn(a,b);if((d|0)==3)Bm(a)}}Kn(a,b);Ln(a,b);if(0){e=c[15686]|0;j=c[46365]|0;i=+h[22909];c[f>>2]=d;c[f+4>>2]=j;h[f+8>>3]=i;g1(e,88964,f)|0;EL()}Mn(a,b);l=g;return}function Am(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;g=Cm(a,b,j,0,2,0)|0;i=ds(g,b)|0;e=a+16|0;a=0;while(1){if((a|0)>=(b|0))break;f=i+(a<<2)|0;d=0;while(1){if((d|0)==(b|0))break;h[(c[(c[(c[e>>2]|0)+160>>2]|0)+(a<<2)>>2]|0)+(d<<3)>>3]=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a=a+1|0}D_(c[i>>2]|0);D_(i);br(g);l=j;return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0;f=a+16|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;g=c[b>>2]&3;e=(c[c[((g|0)==3?b:b+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?b:b+-48|0)+40>>2]>>2]|0)>>>4;if((e|0)!=(g|0)){j=+h[(c[b+16>>2]|0)+136>>3];i=c[(c[f>>2]|0)+160>>2]|0;h[(c[i+(g<<2)>>2]|0)+(e<<3)>>3]=j;h[(c[i+(e<<2)>>2]|0)+(g<<3)>>3]=j}b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Cm(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0;j=by(a)|0;G=GI()|0;if((f|0)==2){k=0;D=0}else{D=nx(a,2,90566,0)|0;k=(c[46404]|0)!=0&1;D=(D|0)!=0}A=(e|1|0)==3;E=vH(b*20|0)|0;F=vH(b<<2)|0;l=(j<<1)+b<<2;m=vH(l)|0;z=A|D;if(z)f=vH(l)|0;else f=0;C=(k|0)!=0;if(C)j=vH(l)|0;else j=0;if(A)k=vH(l)|0;else k=0;l=0;x=Sy(a)|0;y=0;while(1){if(!x)break;JI(G);if((c[(c[x+16>>2]|0)+120>>2]|0)!=(y|0)){B=12;break}c[F+(y<<2)>>2]=x;u=E+(y*20|0)+4|0;c[u>>2]=m;v=E+(y*20|0)+8|0;c[v>>2]=z?f:0;w=E+(y*20|0)+12|0;c[w>>2]=C?j:0;c[E+(y*20|0)+16>>2]=A?k:0;r=1;t=Jx(a,x)|0;s=1;q=l;m=m+4|0;f=z?f+4|0:f;j=C?j+4|0:j;k=A?k+4|0:k;while(1){if(!t)break;n=c[t>>2]&3;p=t+-48|0;l=t+48|0;do if((c[((n|0)==2?t:p)+40>>2]|0)==(c[((n|0)==3?t:l)+40>>2]|0)){n=r;p=s;l=q}else{n=Dm(G,t,r)|0;if((n|0)!=(r|0)){if(C){p=(c[w>>2]|0)+(n<<2)|0;g[p>>2]=+h[(c[t+16>>2]|0)+128>>3]+ +g[p>>2]}if(!D){n=r;p=s;l=q;break}n=(c[v>>2]|0)+(n<<2)|0;H=+h[(c[t+16>>2]|0)+136>>3];o=+(~~+g[n>>2]|0);g[n>>2]=H>o?H:o;n=r;p=s;l=q;break}I=c[t>>2]&3;l=(I|0)==3?t:l;q=q+1|0;n=r+1|0;r=m+4|0;c[m>>2]=c[(c[(c[((c[l+40>>2]|0)==(x|0)?((I|0)==2?t:p):l)+40>>2]|0)+16>>2]|0)+120>>2];if(C){g[j>>2]=+h[(c[t+16>>2]|0)+128>>3];j=j+4|0}if(D){l=f+4|0;g[f>>2]=+h[(c[t+16>>2]|0)+136>>3];if(A){f=l;B=27}else f=l}else if(A){g[f>>2]=1.0;f=f+4|0;B=27}if((B|0)==27){B=0;l=xx(t,98533)|0;if((l|0)!=0?(z$(l,132627,4)|0)==0:0)o=0.0;else o=(x|0)==(c[((c[t>>2]&3|0)==2?t:p)+40>>2]|0)?1.0:-1.0;g[k>>2]=o;k=k+4|0}p=s+1|0;l=q;m=r}while(0);r=n;t=Kx(a,t,x)|0;s=p;q=l}c[E+(y*20|0)>>2]=s;c[c[u>>2]>>2]=y;l=q;x=Ty(a,x)|0;y=y+1|0}if((B|0)==12)qa(89003,89018,819,89030);if(A)Em(E,b,e,F);n=(l|0)/2|0;a:do if((n|0)!=(by(a)|0)){l=(n<<1)+b<<2;k=xH(c[E+4>>2]|0,l)|0;if(D)f=xH(c[E+8>>2]|0,l)|0;if(C){m=0;j=xH(c[E+12>>2]|0,l)|0}else m=0;while(1){if((m|0)>=(b|0))break a;l=c[E+(m*20|0)>>2]|0;c[E+(m*20|0)+4>>2]=k;if(D){c[E+(m*20|0)+8>>2]=f;f=f+(l<<2)|0}if(C){c[E+(m*20|0)+12>>2]=j;j=j+(l<<2)|0}m=m+1|0;k=k+(l<<2)|0}}while(0);c[d>>2]=n;if(!i)D_(F);else c[i>>2]=F;KI(G);return E|0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b>>2]&3;e=c[(c[(c[((f|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;b=c[(c[(c[((f|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;f=(e|0)>(b|0);return LI(a,f?b:e,f?e:b,d)|0}function Em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((g|0)>=(d|0)){g=0;break}h=c[(c[f+(g<<2)>>2]|0)+16>>2]|0;a[h+157>>0]=0;a[h+158>>0]=0;g=g+1|0}while(1){if((g|0)>=(d|0))break;if(!(a[(c[(c[f+(g<<2)>>2]|0)+16>>2]|0)+157>>0]|0))Fm(b,g,e,f);g=g+1|0}return}function Fm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;q=(c[f+(d<<2)>>2]|0)+16|0;l=c[q>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=b+(d*20|0)|0;m=b+(d*20|0)+16|0;n=b+(d*20|0)+4|0;o=(e|0)==3?-1.0:1.0;k=1;a:while(1){if((k|0)>=(c[l>>2]|0)){h=14;break}h=(c[m>>2]|0)+(k<<2)|0;do if(!(+g[h>>2]==1.0)){p=c[(c[n>>2]|0)+(k<<2)>>2]|0;i=c[(c[f+(p<<2)>>2]|0)+16>>2]|0;if(!(a[i+158>>0]|0)){if(a[i+157>>0]|0)break;Fm(b,p,e,f);break}g[h>>2]=o;i=b+(p*20|0)+4|0;j=c[b+(p*20|0)>>2]|0;h=1;while(1){if((h|0)>=(j|0)){h=9;break a}if((c[(c[i>>2]|0)+(h<<2)>>2]|0)==(d|0))break;h=h+1|0}g[(c[b+(p*20|0)+16>>2]|0)+(h<<2)>>2]=-1.0}while(0);k=k+1|0}if((h|0)==9)qa(89044,89018,721,89064);else if((h|0)==14){a[(c[q>>2]|0)+158>>0]=0;return}}function Gm(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=KL(a,nx(a,0,89205,0)|0,2,0)|0;if((a|0)==0|(a|0)>2){c[b>>2]=89205;Pw(0,89214,b)|0;a=2}l=d;return a|0}function Hm(a){a=a|0;var b=0,d=0,e=0;d=ay(a)|0;c[46026]=nx(a,1,99597,0)|0;e=nx(a,1,90570,0)|0;b=Sy(a)|0;while(1){if(!b)break;$l(b);am(c[46026]|0,e,b,d)|0;b=Ty(a,b)|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Im(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Im(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,1.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;a=uH(64)|0;e=a+8|0;f=d+8|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));d=c[d+56>>2]|0;c[a+56>>2]=d;b[(c[d+16>>2]|0)+168>>1]=1;return a|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0<=e>>>0)if(a>>>0>=e>>>0){e=c[b+24>>2]|0;a=c[d+24>>2]|0;if(e>>>0<=a>>>0)if(e>>>0>=a>>>0){a=~~(+h[b+8>>3]-+h[d+8>>3]);if(!a){a=~~(+h[b+16>>3]-+h[d+16>>3]);if(!a){a=~~(+h[b+32>>3]-+h[d+32>>3]);if(!a)a=~~(+h[b+40>>3]-+h[d+40>>3])}}}else a=-1;else a=1}else a=-1;else a=1;return a|0}function Mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0.0;k=l;l=l+16|0;g=k;h=e+16|0;i=b[(c[h>>2]|0)+168>>1]|0;j=i<<16>>16;if(i<<16>>16!=1&(a[191874]|0)==0){i=vH(j<<2)|0;g=0;while(1){if((g|0)>=(j|0))break;c[i+(g<<2)>>2]=e;e=c[(c[e+16>>2]|0)+172>>2]|0;g=g+1|0}m=+(f|0);YK(d,i,0,j,m,m,17764);e=0;while(1){if((e|0)>=(j|0))break;g=c[i+(e<<2)>>2]|0;h=g+16|0;if(c[(c[h>>2]|0)+96>>2]|0){f=ez(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)|0;kM(f,c[(c[h>>2]|0)+96>>2]|0)}dL(g);e=e+1|0}D_(i)}else{c[g>>2]=e;m=+(f|0);YK(d,g,0,1,m,m,17764);if(c[(c[h>>2]|0)+96>>2]|0){j=ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;kM(j,c[(c[h>>2]|0)+96>>2]|0)}dL(e)}l=k;return}function Nm(a){a=a|0;return 0}function Om(a){a=a|0;return 0}function Pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+384|0;O=Q+368|0;P=Q+112|0;j=Q+32|0;r=Q+336|0;K=Q+320|0;L=Q+304|0;M=Q+288|0;N=Q+272|0;i=Q+256|0;H=Q+240|0;I=Q+224|0;J=Q+208|0;t=Q+192|0;u=Q+176|0;v=Q+160|0;z=Q+144|0;A=Q+128|0;B=Q+96|0;D=Q+16|0;G=Q;a:do switch(HJ(b)|0){case 3:case 1:{f=uH(8)|0;z=b+16|0;b=c[z>>2]|0;i=c[b+12>>2]|0;do if(!(e<<24>>24)){b=c[i+8>>2]|0;if((b|0)>2){y=0.0;j=c[i+44>>2]|0;e=0;p=+g[d>>2];q=+g[d+4>>2];break}else{y=+k2()*.01;b=8;j=0;e=1;p=0.0;q=0.0;break}}else if(!(c[i+40>>2]&2048)){q=+h[b+88>>3];p=-q;y=+h[b+80>>3];x=y*-.5;h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;y=y*.5;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}else{jM(r,i);p=+h[r>>3];x=+h[r+8>>3];q=+h[r+16>>3];y=+h[r+24>>3];h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}while(0);c[f+4>>2]=b;r=uH(b<<4)|0;c[f>>2]=r;s=1.0/+(b|0);t=d+8|0;u=d+4|0;v=(b|0)==4;w=-p;x=-q;i=0;while(1){if((b|0)<=(i|0))break a;do if(e){k=+(i|0)*6.283185307179586*s+y;m=+E(+k);k=+F(+k);if(!(a[t>>0]|0)){P=c[z>>2]|0;n=k*+g[u>>2]*+h[P+80>>3];k=m*+g[d>>2]*(+h[P+96>>3]+ +h[P+88>>3])}else{P=c[z>>2]|0;n=(+h[P+80>>3]+ +g[u>>2])*k;k=(+h[P+96>>3]+ +h[P+88>>3]+ +g[d>>2])*m}o=k*.5;k=n*.5}else{if(!(a[t>>0]|0)){o=+h[j+(i<<4)>>3]*p;k=+h[j+(i<<4)+8>>3]*q;break}if(!v){o=+h[j+(i<<4)>>3];k=+h[j+(i<<4)+8>>3];n=+C(+(k*k+o*o));o=(p/n+1.0)*o;k=(q/n+1.0)*k;break}switch(i|0){case 0:{m=q;k=p;break}case 1:{m=q;k=w;break}case 2:{m=x;k=w;break}case 3:{m=x;k=p;break}default:{m=0.0;k=0.0}}o=+h[j+(i<<4)>>3]+k;k=+h[j+(i<<4)+8>>3]+m}while(0);O=c[z>>2]|0;P=b-i+-1|0;h[r+(P<<4)>>3]=+h[O+16>>3]+o;h[r+(P<<4)+8>>3]=+h[O+24>>3]+k;i=i+1|0}}case 2:{G=b+16|0;f=c[(c[G>>2]|0)+12>>2]|0;k=+h[f+16>>3];o=+h[f+24>>3];m=+h[f+32>>3];n=+h[f+40>>3];f=uH(8)|0;c[f+4>>2]=4;b=uH(64)|0;c[f>>2]=b;G=(c[G>>2]|0)+16|0;c[P>>2]=c[G>>2];c[P+4>>2]=c[G+4>>2];c[P+8>>2]=c[G+8>>2];c[P+12>>2]=c[G+12>>2];if(!(a[d+8>>0]|0)){c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(i,k,o,O,d);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];N=(c[f>>2]|0)+16|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(H,k,n,O,d);c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2];N=(c[f>>2]|0)+32|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(I,m,n,O,d);c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];N=(c[f>>2]|0)+48|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(J,m,o,O,d);c[N>>2]=c[J>>2];c[N+4>>2]=c[J+4>>2];c[N+8>>2]=c[J+8>>2];c[N+12>>2]=c[J+12>>2];break a}else{y=k-+g[d>>2];J=d+4|0;x=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(K,y,x,O);c[b>>2]=c[K>>2];c[b+4>>2]=c[K+4>>2];c[b+8>>2]=c[K+8>>2];c[b+12>>2]=c[K+12>>2];K=(c[f>>2]|0)+16|0;x=k-+g[d>>2];y=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(L,x,y,O);c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];L=(c[f>>2]|0)+32|0;y=m+ +g[d>>2];x=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(M,y,x,O);c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];M=(c[f>>2]|0)+48|0;x=m+ +g[d>>2];y=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(N,x,y,O);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];break a}}case 4:{b=b+16|0;f=uH(8)|0;c[f+4>>2]=4;i=uH(64)|0;c[f>>2]=i;j=c[b>>2]|0;N=j+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=c[N+4>>2];c[P+8>>2]=c[N+8>>2];c[P+12>>2]=c[N+12>>2];k=-+h[j+88>>3];if(!(a[d+8>>0]|0)){x=-+h[j+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(A,k,x,O,d);c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];N=(c[f>>2]|0)+16|0;M=c[b>>2]|0;x=-+h[M+88>>3];y=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(B,x,y,O,d);c[N>>2]=c[B>>2];c[N+4>>2]=c[B+4>>2];c[N+8>>2]=c[B+8>>2];c[N+12>>2]=c[B+12>>2];N=(c[f>>2]|0)+32|0;M=c[b>>2]|0;y=+h[M+96>>3];x=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(D,y,x,O,d);c[N>>2]=c[D>>2];c[N+4>>2]=c[D+4>>2];c[N+8>>2]=c[D+8>>2];c[N+12>>2]=c[D+12>>2];N=(c[f>>2]|0)+48|0;M=c[b>>2]|0;x=+h[M+96>>3];y=-+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(G,x,y,O,d);c[N>>2]=c[G>>2];c[N+4>>2]=c[G+4>>2];c[N+8>>2]=c[G+8>>2];c[N+12>>2]=c[G+12>>2];break a}else{y=k-+g[d>>2];M=d+4|0;x=-+h[j+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(t,y,x,O);c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];N=(c[f>>2]|0)+16|0;L=c[b>>2]|0;x=-+h[L+88>>3]-+g[d>>2];y=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(u,x,y,O);c[N>>2]=c[u>>2];c[N+4>>2]=c[u+4>>2];c[N+8>>2]=c[u+8>>2];c[N+12>>2]=c[u+12>>2];N=(c[f>>2]|0)+32|0;L=c[b>>2]|0;y=+h[L+96>>3]+ +g[d>>2];x=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(v,y,x,O);c[N>>2]=c[v>>2];c[N+4>>2]=c[v+4>>2];c[N+8>>2]=c[v+8>>2];c[N+12>>2]=c[v+12>>2];N=(c[f>>2]|0)+48|0;L=c[b>>2]|0;x=+h[L+96>>3]+ +g[d>>2];y=-+h[L+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(z,x,y,O);c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];break a}}default:f=0}while(0);l=Q;return f|0}function Qm(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;c=+h[d+8>>3]+c;h[a>>3]=+h[d>>3]+b;h[a+8>>3]=c;return}function Rm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;c=+g[e+4>>2]*c+ +h[d+8>>3];h[a>>3]=+g[e>>2]*b+ +h[d>>3];h[a+8>>3]=c;return}function Sm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+112|0;j=o+88|0;i=o+72|0;k=o+32|0;m=o+16|0;n=o;f=o+56|0;g=o+40|0;h=b+48|0;r=(c[(c[((c[b>>2]&3|0)==3?b:h)+40>>2]|0)+16>>2]|0)+16|0;p=b+16|0;q=(c[p>>2]|0)+16|0;c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];Tm(f,i,j);c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];f=b+-48|0;q=(c[(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16>>2]|0)+16|0;p=(c[p>>2]|0)+56|0;c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[j>>2]=c[p>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[j+12>>2]=c[p+12>>2];Tm(g,i,j);c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];if(!e){g=-1111;f=-1111}else{r=c[b>>2]&3;g=c[(c[(c[((r|0)==2?b:f)+40>>2]|0)+16>>2]|0)+288>>2]|0;f=c[(c[(c[((r|0)==3?b:h)+40>>2]|0)+16>>2]|0)+288>>2]|0};c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];vU(d,i,f,j,g,k)|0;p=k;q=c[p+4>>2]|0;r=a;c[r>>2]=c[p>>2];c[r+4>>2]=q;l=o;return}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Um(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+144|0;p=u+104|0;q=u+88|0;o=u+80|0;n=u+72|0;j=u+64|0;s=u+128|0;k=u+32|0;m=u+124|0;t=u+16|0;r=u;i=u+120|0;h=(c[b+16>>2]|0)+144|0;g=c[h>>2]|0;h=c[h+4>>2]|0;v=j;c[v>>2]=g;c[v+4>>2]=h;v=g;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];h=g+(h+-1<<4)|0;c[r>>2]=c[h>>2];c[r+4>>2]=c[h+4>>2];c[r+8>>2]=c[h+8>>2];c[r+12>>2]=c[h+12>>2];a:do if(!(f<<24>>24)){g=-1111;f=-1111}else{g=-1111;f=-1111;h=0;while(1){if((h|0)>=(e|0))break a;if((f|0)==-1111){f=c[d+(h<<2)>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];f=(wU(q,p)|0)==0;f=f?-1111:h}if((g|0)==-1111){g=c[d+(h<<2)>>2]|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];g=(wU(q,p)|0)==0;g=g?-1111:h}h=h+1|0}}while(0);Vm(d,e,f,g,i,m);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;h=c[i>>2]|0;v=c[m>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];if((xU(h,v,p,k,s)|0)<0){t=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;v=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[n>>2]=t;c[n+4>>2]=v;Pw(1,89563,n)|0}else{if(0>1){g=c[15686]|0;n=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;f=b+-48|0;v=ry(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)|0;c[o>>2]=n;c[o+4>>2]=v;g1(g,89611,o)|0;g=b}else{f=b+-48|0;g=b}QK(b,c[((c[g>>2]&3|0)==2?b:f)+40>>2]|0,c[s>>2]|0,c[s+4>>2]|0,17764);D_(h);c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];jL(a,b,q,p)}l=u;return}function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;h=0;while(1){if((i|0)>=(b|0))break;if(!((i|0)==(d|0)|(i|0)==(e|0)))h=(c[(c[a+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}o=vH(h<<5)|0;i=0;n=0;while(1){if((n|0)>=(b|0))break;a:do if(!((n|0)==(d|0)|(n|0)==(e|0))){m=a+(n<<2)|0;l=0;while(1){j=c[m>>2]|0;k=c[j+4>>2]|0;if((l|0)>=(k|0))break a;p=l+1|0;q=o+(i<<5)|0;j=(c[j>>2]|0)+(l<<4)|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];j=o+(i<<5)+16|0;k=(c[c[m>>2]>>2]|0)+(((p|0)<(k|0)?p:0)<<4)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];l=p;i=i+1|0}}while(0);n=n+1|0}if((i|0)==(h|0)){c[f>>2]=o;c[g>>2]=h;return}else qa(89625,89632,77,89647)}function Wm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+32|0;k=n+12|0;f=n;uq(f,a);c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;KK(g);g=Gx(a,g)|0}f=Ty(a,f)|0}h=Cw(17728,c[4555]|0)|0;f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;if((c[46363]|0)>1?(i=c[g+16>>2]|0,(c[i+8>>2]|0)!=0):0){o=i+168|0;b[o>>1]=(b[o>>1]|0)+1<<16>>16}else m=14;if((m|0)==14?(m=0,j=Xm(h,g)|0,(j|0)!=(g|0)):0){o=c[j+16>>2]|0;p=o+168|0;b[p>>1]=(b[p>>1]|0)+1<<16>>16;o=o+172|0;c[(c[g+16>>2]|0)+172>>2]=c[o>>2];c[o>>2]=g}g=Gx(a,g)|0}f=Ty(a,f)|0}yw(h)|0;if(!(nb[d&63](a,k,e)|0)){c[46367]=1;f=0}else f=1;l=n;return f|0}function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+64|0;p=q;e=c[b>>2]&3;i=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;do if(i>>>0>=e>>>0){d=b+16|0;if(i>>>0>e>>>0){d=c[d>>2]|0;o=e;e=i;k=+h[d+16>>3];m=+h[d+24>>3];g=+h[d+56>>3];f=+h[d+64>>3];break}o=c[d>>2]|0;j=+h[o+56>>3];n=+h[o+64>>3];g=+h[o+16>>3];f=+h[o+24>>3];if(!(g<j))if(!(g>j)){d=f>n;if(f<n){o=i;e=i;k=j;m=n}else{o=i;e=i;k=g;m=f;g=d?j:g;f=d?n:f}}else{o=i;e=i;k=g;m=f;g=j;f=n}else{o=i;e=i;k=j;m=n}}else{d=c[b+16>>2]|0;o=i;k=+h[d+56>>3];m=+h[d+64>>3];g=+h[d+16>>3];f=+h[d+24>>3]}while(0);c[p+8>>2]=o;h[p+16>>3]=g;h[p+24>>3]=f;c[p+32>>2]=e;h[p+40>>3]=k;h[p+48>>3]=m;c[p+56>>2]=b;p=c[(nb[c[a>>2]&63](a,p,1)|0)+56>>2]|0;l=q;return p|0}function Ym(a,b){a=a|0;b=b|0;return Wm(a,21,b)|0}function Zm(d,e,f){d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0;F=l;l=l+112|0;B=F+88|0;A=F+72|0;t=F+40|0;q=F+8|0;p=F;u=F+64|0;C=F+48|0;D=F+24|0;i=(c[46363]|0)>1&1;do if((f|0)>5){s=uH((ay(d)|0)<<2)|0;o=(f|0)==8;n=o&1;m=Sy(d)|0;r=0;while(1){if(!m)break;j=Pm(m,e,n)|0;k=(c[m+16>>2]|0)+288|0;if(!j){c[k>>2]=-1111;j=r}else{c[k>>2]=r;c[s+(r<<2)>>2]=j;j=r+1|0}m=Ty(d,m)|0;r=j}if(s){j=ms(s,r)|0;if(j|0){if(o){y=0;z=s;x=s;w=1;break}y=sU(s,r)|0;z=s;x=s;w=1;break}if(o){Pw(0,89661,p)|0;j=0;y=0;z=s;x=s;w=1;break}else{G=+g[e+4>>2];h[q>>3]=+g[e>>2];h[q+8>>3]=G;Pw(0,89739,q)|0;j=0;y=0;z=s;x=s;w=1;break}}else{j=0;y=0;z=0;x=0;w=0}}else{j=0;y=0;z=0;r=0;x=0;w=0}while(0);if(0){k=c[15686]|0;if((f|0)==8&(j|0)!=0)m=89845;else m=(y|0)==0?89831:(f|0)==10?107030:89821;c[t>>2]=m;g1(k,89862,t)|0}v=(y|0)!=0;a:do if(!v){if((f|0)==8&(j|0)!=0){cN(d,0);i=1}}else{k=Sy(d)|0;while(1){if(!k)break a;j=Ex(d,k)|0;while(1){if(!j)break;t=(c[j+16>>2]|0)+144|0;Sm(u,j,y,1,0,0);q=u;s=c[q+4>>2]|0;c[t>>2]=c[q>>2];c[t+4>>2]=s;j=Gx(d,j)|0}k=Ty(d,k)|0}}while(0);p=(i|0)==0;q=d+60|0;s=(f|0)==10;i=0;o=Sy(d)|0;j=0;while(1){if(!o)break;t=o+16|0;e=Ex(d,o)|0;while(1){if(!e)break;n=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;k=e+16|0;m=c[k>>2]|0;if(!p?(c[m+8>>2]|0)!=0:0){H=(c[t>>2]|0)+16|0;u=m+16|0;c[A>>2]=c[H>>2];c[A+4>>2]=c[H+4>>2];c[A+8>>2]=c[H+8>>2];c[A+12>>2]=c[H+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(C,A,B);n=(c[n+16>>2]|0)+16|0;u=(c[k>>2]|0)+56|0;c[A>>2]=c[n>>2];c[A+4>>2]=c[n+4>>2];c[A+8>>2]=c[n+8>>2];c[A+12>>2]=c[n+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(D,A,B);c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];c[B>>2]=c[D>>2];c[B+4>>2]=c[D+4>>2];c[B+8>>2]=c[D+8>>2];c[B+12>>2]=c[D+12>>2];jL(d,e,A,B)}else E=35;b:do if((E|0)==35){E=0;H=b[m+168>>1]|0;k=H<<16>>16;if(H<<16>>16){if((o|0)==(n|0)){if(!i){j=uH(96)|0;c[j+84>>2]=uH(((ay(d)|0)<<5)+11520|0)|0;i=j}Mm(i,e,c[(c[(c[q>>2]|0)+16>>2]|0)+248>>2]|0);break}if(!v){zJ(d,e,f,17764);break}k=a[191874]|0?1:k;m=e;n=0;while(1){if((n|0)>=(k|0))break b;if(s)Um(d,m,z,r,1);else _m(d,m);m=c[(c[m+16>>2]|0)+172>>2]|0;n=n+1|0}}}while(0);e=Gx(d,e)|0}o=Ty(d,o)|0}if(v)uU(y);if(i|0){D_(c[i+84>>2]|0);D_(j)}if(w){i=0;while(1){if((i|0)>=(r|0))break;D_(c[z+(i<<2)>>2]|0);i=i+1|0}D_(x)}l=F;return 0}function _m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+96|0;g=k+64|0;f=k+48|0;d=k+40|0;h=k+80|0;e=k+32|0;i=k+16|0;j=k;m=(c[b+16>>2]|0)+144|0;n=c[m>>2]|0;m=c[m+4>>2]|0;o=e;c[o>>2]=n;c[o+4>>2]=m;o=n;c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];m=n+(m+-1<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];oV(g,h);if(0>1){o=c[15686]|0;m=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;e=b+-48|0;n=ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0;c[d>>2]=m;c[d+4>>2]=n;g1(o,89887,d)|0;d=e;e=b}else{d=b+-48|0;e=b}QK(b,c[((c[e>>2]&3|0)==2?b:d)+40>>2]|0,c[h>>2]|0,c[h+4>>2]|0,17764);c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];jL(a,b,f,g);l=k;return}function $m(a,d){a=a|0;d=d|0;var e=0;e=b[(c[a+16>>2]|0)+136>>1]&14;if(d<<24>>24)an(a)|0;if(e<<16>>16)Ym(a,e&65535)|0;return}function an(a){a=a|0;var b=0,d=0,e=0,f=0;d=bn(a)|0;b=Sy(a)|0;while(1){if(!b)break;e=c[b+16>>2]|0;f=c[e+132>>2]|0;h[e+16>>3]=+h[f>>3]*72.0;h[e+24>>3]=+h[f+8>>3]*72.0;b=Ty(a,b)|0}return d|0}function bn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0;a:do if((c[a+60>>2]|0)==(a|0)?(d=a+16|0,e=c[d>>2]|0,(c[(c[e+8>>2]|0)+84>>2]|0)!=0):0){if(!(+h[e+16>>3]!=0.0)?!(+h[e+24>>3]!=0.0):0)b=0;else{cn(a);b=1;e=c[d>>2]|0}j=(c[e+116>>2]&1|0)==0;if(!j){k=e+32|0;i=+h[k>>3];d=e+40|0;h[k>>3]=+h[d>>3];h[d>>3]=i}d=c[e+8>>2]|0;b:do switch(c[d+84>>2]|0){case 2:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(g<1.0|f<1.0)if(g<f){i=1.0;f=f/g;break b}else{i=g/f;f=1.0;break b}else i=g;break}case 5:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(!(g>1.0&f>1.0))break a;f=g<f?g:f;i=f;break}case 1:{g=+h[d+16>>3];f=+h[e+40>>3]/+h[e+32>>3];if(f<g){i=1.0;f=g/f;break b}else{i=f/g;f=1.0;break b}}default:break a}while(0);g=j?f:i;f=j?i:f;c:do if((c[46363]|0)>1){d=Sy(a)|0;while(1){if(!d)break c;b=Ex(a,d)|0;while(1){if(!b)break;if(c[(c[b+16>>2]|0)+8>>2]|0)dn(b,f,g);b=Gx(a,b)|0}d=Ty(a,d)|0}}while(0);b=Sy(a)|0;while(1){if(!b)break;k=c[(c[b+16>>2]|0)+132>>2]|0;h[k>>3]=+h[k>>3]*f;k=k+8|0;h[k>>3]=+h[k>>3]*g;b=Ty(a,b)|0}en(a,f,g);b=1}else b=0;while(0);return b|0}function cn(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;k=n+16|0;m=n;d=(c[b+16>>2]|0)+16|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];f=+h[m>>3];g=f*.013888888888888888;i=+h[m+8>>3];j=i*.013888888888888888;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;o=c[e+132>>2]|0;h[o>>3]=+h[o>>3]-g;o=o+8|0;h[o>>3]=+h[o>>3]-j;e=c[e+108>>2]|0;if(e|0?a[e+81>>0]|0:0){o=e+56|0;h[o>>3]=+h[o>>3]-f;o=e+64|0;h[o>>3]=+h[o>>3]-i}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;if(c[(c[d+16>>2]|0)+8>>2]|0){c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];fn(d,k)}d=Gx(b,d)|0}e=Ty(b,e)|0}c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];gn(b,k);l=n;return}function dn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;p=c[b>>2]&3;i=c[(c[(c[((p|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=(d+-1.0)*72.0;q=s*+h[i>>3];t=(e+-1.0)*72.0;r=t*+h[i+8>>3];p=c[(c[(c[((p|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=s*+h[p>>3];t=t*+h[p+8>>3];p=c[b+16>>2]|0;i=c[p+8>>2]|0;j=c[i+4>>2]|0;k=j+-1|0;b=0;i=c[i>>2]|0;while(1){if((b|0)>=(j|0))break;l=c[i+4>>2]|0;m=l+-1|0;n=(b|0)==(k|0);f=0;g=c[i>>2]|0;while(1){if((f|0)>=(l|0))break;do if(f|b){o=+h[g>>3];if((f|0)==(m|0)&n){h[g>>3]=o+q;u=g+8|0;h[u>>3]=+h[u>>3]+r;break}else{h[g>>3]=o*d;u=g+8|0;h[u>>3]=+h[u>>3]*e;break}}else{h[g>>3]=+h[g>>3]+s;u=g+8|0;h[u>>3]=+h[u>>3]+t}while(0);f=f+1|0;g=g+16|0}if(c[i+8>>2]|0){u=i+16|0;h[u>>3]=+h[u>>3]+s;u=i+24|0;h[u>>3]=+h[u>>3]+t}if(c[i+12>>2]|0){u=i+32|0;h[u>>3]=+h[u>>3]+q;u=i+40|0;h[u>>3]=+h[u>>3]+r}b=b+1|0;i=i+48|0}b=c[p+96>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]*d;u=b+64|0;h[u>>3]=+h[u>>3]*e}b=c[p+100>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+q;u=b+64|0;h[u>>3]=+h[u>>3]+r}b=c[p+104>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+s;u=b+64|0;h[u>>3]=+h[u>>3]+t}return}function en(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0;i=b+16|0;g=c[i>>2]|0;b=g+32|0;h[b>>3]=+h[b>>3]*d;b=g+40|0;h[b>>3]=+h[b>>3]*e;b=g+16|0;h[b>>3]=+h[b>>3]*d;b=g+24|0;h[b>>3]=+h[b>>3]*e;b=c[g+12>>2]|0;if((b|0)!=0?(a[b+81>>0]|0)!=0:0){f=b+56|0;h[f>>3]=+h[f>>3]*d;f=b+64|0;h[f>>3]=+h[f>>3]*e;f=1;b=g}else{f=1;b=g}while(1){if((f|0)>(c[b+180>>2]|0))break;en(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[i>>2]|0}return}function fn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;k=c[b+16>>2]|0;b=c[k+8>>2]|0;j=c[b+4>>2]|0;l=d+8|0;b=c[b>>2]|0;g=0;while(1){if((g|0)>=(j|0))break;i=c[b+4>>2]|0;e=c[b>>2]|0;f=0;while(1){if((f|0)>=(i|0))break;h[e>>3]=+h[e>>3]-+h[d>>3];m=e+8|0;h[m>>3]=+h[m>>3]-+h[l>>3];e=e+16|0;f=f+1|0}if(c[b+8>>2]|0){m=b+16|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+24|0;h[m>>3]=+h[m>>3]-+h[l>>3]}if(c[b+12>>2]|0){m=b+32|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+40|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=b+48|0;g=g+1|0}b=c[k+96>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+108>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+100>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+104>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}return}function gn(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;j=k;g=+h[d>>3];i=b+16|0;b=c[i>>2]|0;e=b+32|0;h[e>>3]=+h[e>>3]-g;f=+h[d+8>>3];e=b+40|0;h[e>>3]=+h[e>>3]-f;e=b+16|0;h[e>>3]=+h[e>>3]-g;e=b+24|0;h[e>>3]=+h[e>>3]-f;e=c[b+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){m=e+56|0;h[m>>3]=+h[m>>3]-g;e=e+64|0;h[e>>3]=+h[e>>3]-f;e=1}else e=1;while(1){if((e|0)>(c[b+180>>2]|0))break;m=c[(c[b+184>>2]|0)+(e<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];gn(m,j);e=e+1|0;b=c[i>>2]|0}l=k;return}function hn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0,j=0;i=l;l=l+16|0;d=i;mM(a);e=a+16|0;b=c[e>>2]|0;f=+h[b+16>>3]*.013888888888888888;g=+h[b+24>>3]*.013888888888888888;b=Sy(a)|0;while(1){if(!b)break;j=c[(c[b+16>>2]|0)+132>>2]|0;h[j>>3]=+h[j>>3]-f;j=j+8|0;h[j>>3]=+h[j>>3]-g;b=Ty(a,b)|0}j=(c[e>>2]|0)+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];jn(a,d);$m(a,1);l=i;return}function jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0;g=l;l=l+16|0;f=g;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];jn(e,f);a=a+1|0}j=+h[b>>3];f=e+32|0;h[f>>3]=+h[f>>3]-j;i=+h[b+8>>3];b=e+40|0;h[b>>3]=+h[b>>3]-i;b=e+16|0;h[b>>3]=+h[b>>3]-j;b=e+24|0;h[b>>3]=+h[b>>3]-i;l=g;return}function kn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=(e|0)>2;n=0;o=0;j=c[f+4>>2]|0;b=c[f>>2]|0;while(1){if((o|0)>=(d|0)){b=0;break}i=c[(c[g+(o<<2)>>2]|0)+16>>2]|0;l=a[i+119>>0]|0;a:do if(!(l<<24>>24)){k=b+8|0;h[b>>3]=+k2();i=j+8|0;h[j>>3]=+k2();if(p){b=2;while(1){if((b|0)==(e|0)){j=n;b=k;break a}q=+k2();h[(c[f+(b<<2)>>2]|0)+(o<<3)>>3]=q;b=b+1|0}}else{j=n;b=k}}else{k=c[i+132>>2]|0;m=b+8|0;h[b>>3]=+h[k>>3];i=j+8|0;h[j>>3]=+h[k+8>>3];b:do if(p){j=2;b=k+16|0;while(1){if((j|0)==(e|0))break b;h[(c[f+(j<<2)>>2]|0)+(o<<3)>>3]=+h[b>>3];j=j+1|0;b=b+8|0}}while(0);j=(l&255)>1?1:n;b=m}while(0);n=j;o=o+1|0;j=i}while(1){if((b|0)>=(e|0))break;Is(d,c[f+(b<<2)>>2]|0);b=b+1|0}return n|0}function ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;d=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;n=wn(b,b,0.0)|0;o=wn(b,b,0.0)|0;a:do if(!(c[a+8>>2]|0)){e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;m=c[(c[j>>2]|0)+(f<<2)>>2]|0;h[(c[n+(m<<2)>>2]|0)+(e<<3)>>3]=-1.0;h[(c[k>>2]|0)+(m<<3)>>3]=-1.0;f=f+1|0}e=e+1|0}}else{e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=a+(e*20|0)+8|0;m=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;p=c[(c[j>>2]|0)+(f<<2)>>2]|0;l=-1.0/+g[(c[k>>2]|0)+(f<<2)>>2];h[(c[n+(p<<2)>>2]|0)+(e<<3)>>3]=l;h[(c[m>>2]|0)+(p<<3)>>3]=l;f=f+1|0}e=e+1|0}}while(0);b:do if(!(Bq(b,n,o)|0)){D_(d);d=0}else{f=0;j=0;m=b;while(1){if((j|0)>=(b|0))break b;k=o+(j<<2)|0;e=j;i=f;while(1){if((e|0)==(b|0))break;if((j|0)==(e|0))l=0.0;else{p=c[k>>2]|0;l=+h[(c[o+(e<<2)>>2]|0)+(e<<3)>>3]+ +h[p+(j<<3)>>3]+ +h[p+(e<<3)>>3]*-2.0}g[d+(i<<2)>>2]=l;e=e+1|0;i=i+1|0}f=f+m|0;j=j+1|0;m=m+-1|0}}while(0);xn(n);xn(o);return d|0}function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;if(c[a+8>>2]|0){d=nn(a,b)|0;f=0.0;e=0;p=0;while(1){if((p|0)>=(b|0))break;e=e+p|0;o=c[a+(p*20|0)>>2]|0;k=a+(p*20|0)+4|0;m=(O(p,b)|0)-e|0;n=a+(p*20|0)+8|0;j=1;while(1){if((j|0)>=(o|0))break;i=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((i|0)>=(p|0)){i=d+(m+i<<2)|0;s=+g[(c[n>>2]|0)+(j<<2)>>2];f=f+ +B(+(+g[i>>2]-s));g[i>>2]=s}j=j+1|0}p=p+1|0}if(0){b=c[15686]|0;h[q>>3]=f;g1(b,89903,q)|0}}else d=0;l=r;return d|0}function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m;i=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;j=uH(b<<2)|0;zq(h,b);d=0;f=0;k=b;while(1){if((d|0)>=(b|0))break;ir(d,a,b,j);e=d;g=f;while(1){if((e|0)==(b|0))break;c[i+(g<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0;g=g+1|0}d=d+1|0;f=f+k|0;k=k+-1|0}D_(j);Aq(h);l=m;return i|0}function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;i=n;j=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;k=uH(b<<2)|0;zq(i,b);d=0;f=0;m=b;while(1){if((d|0)>=(b|0))break;vq(d,a,b,k,i);e=d;h=f;while(1){if((e|0)==(b|0))break;g[j+(h<<2)>>2]=+(c[k+(e<<2)>>2]|0);e=e+1|0;h=h+1|0}d=d+1|0;f=f+m|0;m=m+-1|0}D_(k);Aq(i);l=n;return j|0}function pn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=a+8|0;d=c[r>>2]|0;e=0;f=0;while(1){if((f|0)>=(b|0))break;e=(c[a+(f*20|0)>>2]|0)+e|0;f=f+1|0}f=uH(e<<2)|0;q=uH(b<<2)|0;e=0;while(1){if((e|0)>=(b|0))break;c[q+(e<<2)>>2]=0;e=e+1|0}if(!(c[r>>2]|0)){h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;_r(a,h,q);i=a+(h*20|0)|0;j=c[i>>2]|0;k=a+(h*20|0)+4|0;l=+(j+-1|0);e=1;while(1){if((e|0)>=(j|0))break;p=c[(c[k>>2]|0)+(e<<2)>>2]|0;s=+((c[a+(p*20|0)>>2]|0)+-1|0)+l;g[f+(e<<2)>>2]=s-+((Zr(a,h,p,q)|0)<<1|0);e=e+1|0}$r(a,h,q);f=f+(c[i>>2]<<2)|0;h=h+1|0}f=on(a,b)|0}else{j=0;while(1){if((j|0)>=(b|0))break;_r(a,j,q);k=a+(j*20|0)|0;m=c[k>>2]|0;n=a+(j*20|0)+4|0;o=m+-2|0;p=a+(j*20|0)+8|0;i=1;while(1){if((i|0)>=(m|0))break;e=c[(c[n>>2]|0)+(i<<2)>>2]|0;h=o+(c[a+(e*20|0)>>2]|0)|0;s=+(h-((Zr(a,j,e,q)|0)<<1)|0);l=+g[(c[p>>2]|0)+(i<<2)>>2];if(l<s)l=+(h-((Zr(a,j,e,q)|0)<<1)|0);g[f+(i<<2)>>2]=l;i=i+1|0}$r(a,j,q);c[p>>2]=f;f=f+(c[k>>2]<<2)|0;j=j+1|0}f=nn(a,b)|0}D_(q);D_(c[r>>2]|0);c[r>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;d=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0}}while(0);return f|0}function qn(a,b,e,f,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0;M=l;l=l+80|0;L=M+56|0;K=M+48|0;A=M+40|0;u=M+32|0;t=M+24|0;s=M+16|0;p=M+8|0;o=M;q=k&4;J=k&3;a:do if((n|0)<0)e=0;else{if(0)EL();k=(m|0)==2;b:do if(k){if(0)E1(91878,24,1,c[15686]|0)|0;e=pn(a,b)|0;w=14}else{switch(m|0){case 1:{e=ln(a,b)|0;if(e|0){I=e;break b}Pw(0,91903,o)|0;Pw(3,91952,p)|0;w=15;break b}case 3:break;default:{w=15;break b}}if(0)E1(92005,21,1,c[15686]|0)|0;e=mn(a,b)|0;w=14}while(0);if((w|0)==14)if(!e)w=15;else I=e;do if((w|0)==15){if(0)E1(92027,26,1,c[15686]|0)|0;if(!(c[a+8>>2]|0)){I=on(a,b)|0;break}else{I=nn(a,b)|0;break}}while(0);if(0){H=c[15686]|0;h[s>>3]=+FL();g1(H,92054,s)|0;E1(92066,25,1,H)|0;EL()}c:do if((b|0)>1&(q|0)!=0)if((rn(a,b,f,j,q,J,k&1)|0)<0){u=0;t=0;e=-1;a=0;s=0;q=0;p=0;o=0;m=0;k=0}else{k=0;while(1){if((k|0)>=(j|0)){y=0;w=35;break c}m=f+(k<<2)|0;r=1.0;e=0;while(1){if((e|0)==(b|0))break;x=+B(+(+h[(c[m>>2]|0)+(e<<3)>>3]));r=x>r?x:r;e=e+1|0}r=1.0/r;e=0;while(1){if((e|0)==(b|0)){e=0;break}H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]*r;e=e+1|0}while(1){if((e|0)==(b|0))break;x=(+k2()+-.5)*1.0e-06;H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]+x;e=e+1|0}Is(b,c[m>>2]|0);k=k+1|0}}else{y=kn(0,b,j,f,i)|0;w=35}while(0);d:do if((w|0)==35){if(0){H=c[15686]|0;h[t>>3]=+FL();g1(H,92092,t)|0}if((b|0)==1|(n|0)==0){e=0;break a}if(0){H=c[15686]|0;h[u>>3]=+FL();g1(H,92054,u)|0;E1(89925,26,1,H)|0;EL()}s=j<<2;H=uH(s)|0;t=b<<2;a=O(t,j)|0;G=uH(a)|0;e=0;while(1){if((e|0)>=(j|0))break;m=G+((O(e,b)|0)<<2)|0;c[H+(e<<2)>>2]=m;o=f+(e<<2)|0;k=0;while(1){if((k|0)>=(b|0))break;g[m+(k<<2)>>2]=+h[(c[o>>2]|0)+(k<<3)>>3];k=k+1|0}e=e+1|0}e:do if(!J){p=b+-1|0;e=0;r=0.0;o=0;while(1){if((o|0)>=(p|0))break e;q=b-o|0;m=e;k=1;while(1){e=m+1|0;if((k|0)>=(q|0))break;m=e;r=+g[I+(e<<2)>>2]+r;k=k+1|0}o=o+1|0}}else r=+(b|0)*.5*+(b+-1|0);while(0);C=(O(b+1|0,b)|0)/2|0;D=(J|0)==2;if(D)ct(C,I);dt(C,I);E=b<<3;m=uH(E)|0;H3(m|0,0,E|0)|0;F=b+-1|0;e=0;o=0;while(1){if((o|0)>=(F|0)){e=b;k=0;o=0;break}p=b-o|0;v=0.0;k=1;while(1){e=e+1|0;if((k|0)>=(p|0))break;x=+g[I+(e<<2)>>2];z=m+(k+o<<3)|0;h[z>>3]=+h[z>>3]-x;v=v+x;k=k+1|0}z=m+(o<<3)|0;h[z>>3]=+h[z>>3]-v;o=o+1|0}while(1){if((k|0)>=(b|0))break;g[I+(o<<2)>>2]=+h[m+(k<<3)>>3];z=e+o|0;e=e+-1|0;k=k+1|0;o=z}z=uH(s)|0;c[z>>2]=uH(a)|0;e=1;while(1){if((e|0)>=(j|0))break;c[z+(e<<2)>>2]=(c[z>>2]|0)+((O(e,b)|0)<<2);e=e+1|0}p=uH(t)|0;o=uH(t)|0;k=uH(C<<2)|0;if(0){w=c[15686]|0;h[A>>3]=+FL();g1(w,92054,A)|0;E1(89952,15,1,w)|0;EL()}w=(y|0)==0;y=c[15686]|0;e=0;q=0;x=1797693134862315708145274.0e284;while(1){if(!(q<<24>>24==0&(e|0)<(n|0)))break;H3(m|0,0,E|0)|0;if(D){et(C,I,k);u=0;a=0}else{u=0;a=0}while(1){if((u|0)>=(F|0)){q=b;s=0;a=0;break}t=b-u+-1|0;at(t,0.0,o);q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;at(t,+g[(c[A>>2]|0)+(u<<2)>>2],p);Xs(t,p,-1.0,(c[A>>2]|0)+(u<<2)+4|0);ct(t,p);Ws(t,p,o,o);q=q+1|0}ft(t,o);q=0;while(1){if((q|0)>=(t|0))break;s=o+(q<<2)|0;v=+g[s>>2];if(v>=3402823466385288598117041.0e14|v<0.0)g[s>>2]=0.0;q=q+1|0}q=a+1|0;a=u+1|0;f:do if(D){v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;A=k+(q<<2)|0;N=+g[A>>2]*+g[o+(s<<2)>>2];g[A>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}else{v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;N=+g[o+(s<<2)>>2];g[k+(q<<2)>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}while(0);A=m+(u<<3)|0;h[A>>3]=+h[A>>3]-v;u=a;a=q}while(1){if((s|0)>=(b|0)){q=0;break}g[k+(a<<2)>>2]=+h[m+(s<<3)>>3];A=q+a|0;q=q+-1|0;s=s+1|0;a=A}while(1){if((q|0)>=(j|0)){v=0.0;q=0;break}Us(k,b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0);q=q+1|0}while(1){if((q|0)>=(j|0))break;v=+_s(b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0)+v;q=q+1|0}v=v*2.0+r;q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;Us(I,b,c[A>>2]|0,p);v=v-+_s(b,c[A>>2]|0,p);q=q+1|0}P=x-v;N=+h[22909];q=(v<N?1:(P>=0.0?P:-P)/x<N)&1;a=0;while(1){if((a|0)>=(j|0))break;t=H+(a<<2)|0;s=c[t>>2]|0;g:do if(w){if((Fq(I,s,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}}else{Zs(b,s,p);if((Fq(I,p,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}else s=0;while(1){if((s|0)>=(b|0))break g;if((d[(c[(c[i+(s<<2)>>2]|0)+16>>2]|0)+119>>0]|0)<=1)c[(c[t>>2]|0)+(s<<2)>>2]=c[p+(s<<2)>>2];s=s+1|0}}while(0);a=a+1|0}if(((e|0)%5|0|0)==0&0!=0?(h[K>>3]=v,g1(y,90277,K)|0,((e+5|0)%50|0|0)==0):0)n3(10,y)|0;e=e+1|0;x=v}if(!0)q=0;else{N=+sn(H,I,j,b,J);P=+FL();h[L>>3]=N;c[L+8>>2]=e;h[L+16>>3]=P;g1(y,89968,L)|0;q=0}while(1){if((q|0)>=(j|0)){u=z;t=I;a=G;s=H;q=z;break d}a=H+(q<<2)|0;t=f+(q<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[t>>2]|0)+(s<<3)>>3]=+g[(c[a>>2]|0)+(s<<2)>>2];s=s+1|0}q=q+1|0}}while(0);D_(a);D_(s);D_(t);if(u|0){D_(c[u>>2]|0);D_(q)}D_(p);D_(o);D_(m);D_(k)}while(0);l=M;return e|0}function rn(b,d,e,f,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;R=l;l=l+32|0;o=R+24|0;Q=R+8|0;H=R+4|0;N=R;M=(d|0)<50?d:50;P=vH(M<<2)|0;G=d<<3;n=vH(O(G,M)|0)|0;m=0;while(1){if((m|0)>=(M|0))break;c[P+(m<<2)>>2]=n+((O(m,d)|0)<<3);m=m+1|0}E=M<<1;E=(E|0)>50?E:50;E=(E|0)>(d|0)?d:E;c[o>>2]=0;sr(b,d,E,o,k);tr(c[o>>2]|0,d,E);mt(c[o>>2]|0,E,d,P,M);D_(c[c[o>>2]>>2]|0);D_(c[o>>2]|0);E=d<<2;L=vH(E)|0;m=0;while(1){if((m|0)>=(d|0))break;c[L+(m<<2)>>2]=-1;m=m+1|0}zq(Q,d);J=c[b+8>>2]|0;I=(k|0)!=0;if(I)es(b,d);C=vH(E)|0;K=vH(160)|0;n=vH(d*160|0)|0;D=vH(160)|0;m=0;while(1){if((m|0)==40)break;c[D+(m<<2)>>2]=n+((O(m,d)|0)<<2);m=m+1|0}m=(g2()|0)%(d|0)|0;c[L+(m<<2)>>2]=0;c[K>>2]=m;n=c[D>>2]|0;if(I){cr(m,b,d,n);n=0;o=0}else{vq(m,b,d,n,Q);n=0;o=0}while(1){if((o|0)>=(d|0)){r=1;break}F=c[(c[D>>2]|0)+(o<<2)>>2]|0;c[C+(o<<2)>>2]=F;A=(F|0)>(n|0);m=A?o:m;n=A?F:n;o=o+1|0}while(1){if((r|0)==40){m=0;break}c[L+(m<<2)>>2]=r;c[K+(r<<2)>>2]=m;t=D+(r<<2)|0;n=c[t>>2]|0;if(I){cr(m,b,d,n);q=0;n=0}else{vq(m,b,d,n,Q);q=0;n=0}while(1){if((q|0)>=(d|0))break;o=C+(q<<2)|0;F=c[o>>2]|0;k=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=(F|0)<(k|0)?F:k;c[o>>2]=k;if((k|0)<=(n|0)){if((k|0)==(n|0)?((g2()|0)%(q+1|0)|0|0)==0:0){n=c[o>>2]|0;m=q}}else{n=k;m=q}q=q+1|0}r=r+1|0}while(1){if((m|0)>=(d|0))break;c[C+(m<<2)>>2]=-1;m=m+1|0}w=vH(E)|0;F=vH(d<<4)|0;x=d+-1|0;y=x<<2;A=0;o=0;k=0;n=0;z=0;while(1){if((z|0)>=(d|0))break;m=L+(z<<2)|0;a:do if((c[m>>2]|0)>-1){t=F+(z<<4)+4|0;c[t>>2]=vH(y)|0;v=vH(y)|0;c[F+(z<<4)+8>>2]=v;c[F+(z<<4)>>2]=x;a[F+(z<<4)+12>>0]=1;r=D+(c[m>>2]<<2)|0;m=0;while(1){if((m|0)==(z|0)){q=z;break}c[(c[t>>2]|0)+(m<<2)>>2]=m;c[v+(m<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];m=m+1|0}while(1){m=q+1|0;if((q|0)==(x|0)){m=x;break a}c[(c[t>>2]|0)+(q<<2)>>2]=m;c[v+(q<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];q=m}}else{if((n|0)<40){k=vH(E)|0;o=vH(E)|0;n=d;m=1}else m=0;a[F+(z<<4)+12>>0]=m;c[F+(z<<4)+4>>2]=k;c[F+(z<<4)+8>>2]=o;c[F+(z<<4)>>2]=40;m=0;while(1){if((m|0)==40)break;c[k+(m<<2)>>2]=c[K+(m<<2)>>2];c[o+(m<<2)>>2]=c[(c[D+(m<<2)>>2]|0)+(z<<2)>>2];m=m+1|0}o=o+160|0;k=k+160|0;n=n+-40|0;m=40}while(0);A=m+A|0;z=z+1|0}D_(C);D_(w);if(D|0){D_(c[D>>2]|0);D_(D)}D=vH(d*20|0)|0;q=A+d<<2;r=vH(q)|0;v=(j|0)==2;q=vH(q)|0;t=0;while(1){if((t|0)>=(d|0))break;c[D+(t*20|0)+4>>2]=r;c[D+(t*20|0)+8>>2]=q;m=(c[F+(t<<4)>>2]|0)+1|0;w=D+(t*20|0)|0;c[w>>2]=m;o=(c[F+(t<<4)+8>>2]|0)+-4|0;k=F+(t<<4)+4|0;b:do if(v){p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=+(c[o+(n<<2)>>2]|0);u=-1.0/(u*u);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}else{p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=-1.0/+(c[o+(n<<2)>>2]|0);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}while(0);c[r>>2]=t;g[q>>2]=p;E=c[w>>2]|0;q=q+(E<<2)|0;r=r+(E<<2)|0;t=t+1|0}C=vH(f<<2)|0;c[C>>2]=vH(O(f<<3,M)|0)|0;m=1;while(1){if((m|0)>=(f|0))break;c[C+(m<<2)>>2]=(c[C>>2]|0)+((O(m,M)|0)<<3);m=m+1|0}c:do if(i){m=0;while(1){if((m|0)>=(f|0))break;o=C+(m<<2)|0;n=0;while(1){if((n|0)>=(M|0))break;h[(c[o>>2]|0)+(n<<3)>>3]=0.0;n=n+1|0}m=m+1|0}if((f|0)!=2){m=0;while(1){if((m|0)>=(f|0)){m=0;break c}h[(c[C+(m<<2)>>2]|0)+(m<<3)>>3]=1.0;m=m+1|0}}h[c[C>>2]>>3]=1.0;m=C+4|0;if(!((nt(P,M,d,c[m>>2]|0)|0)<<24>>24)){n=c[m>>2]|0;m=0;while(1){if((m|0)>=(M|0))break;h[n+(m<<3)>>3]=0.0;m=m+1|0}h[n+8>>3]=1.0;m=0}else m=0}else{n=0;while(1){if((n|0)>=(f|0)){m=0;break c}o=C+(n<<2)|0;m=0;while(1){if((m|0)>=(M|0))break;u=+(g2()|0)*4.656612875245797e-10;h[(c[o>>2]|0)+(m<<3)>>3]=u;m=m+1|0}n=n+1|0}}while(0);while(1){if((m|0)>=(f|0))break;Ss(P,d,M,c[C+(m<<2)>>2]|0,c[e+(m<<2)>>2]|0);m=m+1|0}c[H>>2]=0;c[N>>2]=0;Hs(D,P,d,M,H);Fs(P,c[H>>2]|0,M,d,M,N);D_(c[c[H>>2]>>2]|0);D_(c[H>>2]|0);z=vH(G)|0;A=vH(M<<3)|0;m=0;n=0;p=+tn(e,F,f,d,j);d:while(1){if((n|0)<50&m<<24>>24==0)x=0;else break;while(1){if((x|0)>=(f|0))break;y=e+(x<<2)|0;o=0;while(1){if((o|0)>=(d|0))break;q=z+(o<<3)|0;h[q>>3]=0.0;r=(c[F+(o<<4)+8>>2]|0)+-4|0;t=c[D+(o*20|0)+4>>2]|0;v=c[D+(o*20|0)+8>>2]|0;w=D+(o*20|0)|0;s=0.0;k=1;while(1){if((k|0)>=(c[w>>2]|0))break;m=c[t+(k<<2)>>2]|0;u=+gs(e,f,o,m);if(u>1.0e-30){u=-(+g[v+(k<<2)>>2]*+(c[r+(k<<2)>>2]|0))/u;h[q>>3]=u*+h[(c[y>>2]|0)+(m<<3)>>3]+ +h[q>>3];s=s-u}k=k+1|0}h[q>>3]=+h[q>>3]+ +h[(c[y>>2]|0)+(o<<3)>>3]*s;o=o+1|0}Es(P,M,d,z,A);m=C+(x<<2)|0;if(Eq(c[N>>2]|0,c[m>>2]|0,A,M,.001,M,0)|0){n=-1;break d}Ss(P,d,M,c[m>>2]|0,c[y>>2]|0);x=x+1|0}if(!(n&1)){u=+tn(e,F,f,d,j);p=+B(+(u-p))/(u+1.0e-10);m=p<+h[22909]&1;p=u}else m=0;n=n+1|0}D_(A);D_(z);if(I){fs(b,d,J);m=0}else m=0;while(1){if((m|0)>=(d|0))break;if(a[F+(m<<4)+12>>0]|0){D_(c[F+(m<<4)+4>>2]|0);D_(c[F+(m<<4)+8>>2]|0)}m=m+1|0}D_(F);D_(c[D+4>>2]|0);D_(c[D+8>>2]|0);D_(D);D_(L);D_(K);D_(c[C>>2]|0);D_(C);m=c[N>>2]|0;if(m|0){D_(c[m>>2]|0);D_(c[N>>2]|0)}D_(c[P>>2]|0);D_(P);Aq(Q);l=R;return n|0}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;q=e+-1|0;o=(f|0)==2;h=0.0;f=0;m=0;while(1){if((m|0)>=(q|0))break;p=e-m|0;n=1;while(1){f=f+1|0;if((n|0)>=(p|0))break;k=n+m|0;i=0.0;j=0;while(1){if((j|0)>=(d|0))break;r=c[a+(j<<2)>>2]|0;l=+g[r+(m<<2)>>2]-+g[r+(k<<2)>>2];i=i+l*l;j=j+1|0}i=+C(+i);l=+g[b+(f<<2)>>2];if(o){i=1.0/+C(+l)-i;i=i*i}else{i=1.0/l-i;i=i*i}n=n+1|0;h=i*l+h}m=m+1|0}return +h}function tn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;a:do if((f|0)==2){g=0.0;l=0;while(1){if((l|0)>=(e|0))break a;n=c[b+(l<<4)>>2]|0;o=b+(l<<4)+4|0;m=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(n|0))break;j=c[(c[o>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[m>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/(p*p)+g}k=k+1|0}l=l+1|0}}else{l=0;g=0.0;while(1){if((l|0)>=(e|0))break a;m=c[b+(l<<4)>>2]|0;n=b+(l<<4)+4|0;o=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(m|0))break;j=c[(c[n>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[o>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/p+g}k=k+1|0}l=l+1|0}}while(0);return +g}function un(a){a=+a;return +(+C(+a)*a)}function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;i=+h[a+(f<<3)>>3]-+h[b+(f<<3)>>3];h[d+(f<<3)>>3]=i;e=i*i+e;f=f+1|0}return +(+C(+e))}function wn(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=uH(a<<2)|0;f=0;g=uH(O(a<<3,b)|0)|0;while(1){if((f|0)>=(a|0))break;c[i+(f<<2)>>2]=g;e=0;while(1){if((e|0)>=(b|0))break;h[g+(e<<3)>>3]=d;e=e+1|0}f=f+1|0;g=g+(b<<3)|0}return i|0}function xn(a){a=a|0;if(a|0){D_(c[a>>2]|0);D_(a)}return}function yn(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+16|0;n=ay(b)|0;m=by(b)|0;k=nx(b,2,90566,0)|0;a:do if(!d){h[22909]=+(n|0)*.0001;aH(b,105860,183272);g=xx(c[b+60>>2]|0,90006)|0;if(!g)e=.99;else e=+b2(g);h[22911]=e;g=uH((n<<2)+4|0)|0;j=b+16|0;c[(c[j>>2]|0)+152>>2]=g;g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[(c[j>>2]|0)+152>>2]|0)+(g<<2)>>2]=i;p=c[i+16>>2]|0;c[p+120>>2]=g;c[p+124>>2]=-1;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}else{h[22909]=.0001;aH(b,105860,183272);g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[i+16>>2]|0)+120>>2]=g;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}while(0);g=xx(b,90014)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){e=+h[22909];f=+b2(g);if(!(e>f))e=f}else e=e/+(((m|0)>1?m:1)|0)*+C(+(+(n|0)))+1.0;h[22910]=e;if(!(c[46363]|d)){d=wn(n,n,e)|0;p=b+16|0;c[(c[p>>2]|0)+160>>2]=d;d=wn(n,n,1.0)|0;c[(c[p>>2]|0)+164>>2]=d;d=wn(n,c[46366]|0,1.0)|0;c[(c[p>>2]|0)+168>>2]=d;d=Cn(n,n,c[46366]|0)|0;c[(c[p>>2]|0)+172>>2]=d}l=o;return n|0}function zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=0;e=0;j=Jx(a,b)|0;a:while(1){if(!j)break;h=c[j>>2]&3;g=c[((h|0)==2?j:j+-48|0)+40>>2]|0;h=c[((h|0)==3?j:j+48|0)+40>>2]|0;do if((g|0)!=(h|0)){i=(h|0)==(b|0);if((e|0)!=1){f=i?g:h;c[d>>2]=f;e=e+1|0;break}if(!((g|0)==(f|0)&i)?!((g|0)==(b|0)&(h|0)==(f|0)):0){e=2;break a}else e=1}while(0);j=Kx(a,j,b)|0}return e|0}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+60|0;a:while(1){b:while(1){if(!b)break a;switch(zn(a,b,f)|0){case 0:{e=5;break b}case 1:{e=8;break b}default:b=0}}if((e|0)==5){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=0;continue}else if((e|0)==8){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=c[f>>2]|0;continue}}l=h;return d|0}function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;k=l;l=l+32|0;i=k+8|0;g=k;b=Ex(a,b)|0;e=0.0;while(1){if(!b)break;switch(Dn(b,d,g)|0){case 0:{f=+h[g>>3];break}case 2:{c[i>>2]=ry(a)|0;h[i+8>>3]=1.0;Pw(3,90026,i)|0;j=6;break}default:j=6}if((j|0)==6){j=0;h[g>>3]=1.0;f=1.0}h[(c[b+16>>2]|0)+136>>3]=f;b=Gx(a,b)|0;e=f+e}l=k;return +e}function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0;j=uH((a<<2)+4|0)|0;k=(b<<2)+4|0;l=d<<3;g=0;while(1){if((g|0)>=(a|0))break;i=j+(g<<2)|0;c[i>>2]=uH(k)|0;f=0;while(1){if((f|0)>=(b|0))break;e=uH(l)|0;c[(c[i>>2]|0)+(f<<2)>>2]=e;e=0;while(1){if((e|0)>=(d|0))break;h[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+(e<<3)>>3]=0.0;e=e+1|0}f=f+1|0}c[(c[i>>2]|0)+(f<<2)>>2]=0;g=g+1|0}c[j+(g<<2)>>2]=0;return j|0}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;do if((d|0)!=0?(f=yx(b,d)|0,(a[f>>0]|0)!=0):0){c[i>>2]=e;if(((N1(f,98183,i)|0)>=1?(g=+h[e>>3],!(g<0.0)):0)?g!=0.0|(c[46363]|0)!=0:0){b=0;break}c[j>>2]=f;Pw(0,90053,j)|0;b=2}else b=1;while(0);l=k;return b|0}function En(a){a=a|0;return yn(a,0)|0}function Fn(a){a=a|0;a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);if(!(c[46363]|0)){xn(c[(c[a>>2]|0)+160>>2]|0);xn(c[(c[a>>2]|0)+164>>2]|0);xn(c[(c[a>>2]|0)+168>>2]|0);Gn(c[(c[a>>2]|0)+172>>2]|0);c[(c[a>>2]|0)+172>>2]=0}return}function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(a|0){f=0;while(1){g=a+(f<<2)|0;b=c[g>>2]|0;if(!b)break;else e=0;while(1){d=c[b+(e<<2)>>2]|0;if(!d)break;D_(d);e=e+1|0;b=c[g>>2]|0}D_(b);f=f+1|0}D_(a)}return}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+(b|0);b=a+16|0;while(1){if((d|0)>=(c[46366]|0))break;f=+k2()*e;h[(c[(c[b>>2]|0)+132>>2]|0)+(d<<3)>>3]=f;d=d+1|0}return}function In(a,b){a=a|0;b=b|0;Hn(a,b,2);return}function Jn(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;e=+(b|0);f=+k2()*e;d=a+16|0;h[c[(c[d>>2]|0)+132>>2]>>3]=f;e=+k2()*e;h[(c[(c[d>>2]|0)+132>>2]|0)+8>>3]=e;if((c[46366]|0)>2)In(a,b);return}function Kn(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(0)E1(90071,26,1,c[15686]|0)|0;d=pm(b,d,2)|0;a:do if((d|0)!=1){if(!(c[46027]|d)){Pw(0,90098,e)|0;c[46027]=1}e=b+16|0;d=0;while(1){b=c[(c[(c[e>>2]|0)+152>>2]|0)+(d<<2)>>2]|0;if(!b)break a;if(!(a[(c[b+16>>2]|0)+119>>0]|0))Jn(b,1);d=d+1|0}}while(0);l=f;return}function Ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;p=q+80|0;n=q;if(0){E1(90147,25,1,c[15686]|0)|0;EL()}o=a+16|0;f=c[o>>2]|0;k=c[f+164>>2]|0;f=c[f+160>>2]|0;m=0;while(1){if((m|0)>=(b|0))break;i=f+(m<<2)|0;j=k+(m<<2)|0;e=0;while(1){if((e|0)==(m|0))break;g=+h[(c[i>>2]|0)+(e<<3)>>3];g=1.0/(g*g);d=c[(c[o>>2]|0)+152>>2]|0;d=Rx(a,c[d+(m<<2)>>2]|0,c[d+(e<<2)>>2]|0,0,0)|0;if(d)g=+h[(c[d+16>>2]|0)+128>>3]*g;h[(c[k+(e<<2)>>2]|0)+(m<<3)>>3]=g;h[(c[j>>2]|0)+(e<<3)>>3]=g;e=e+1|0}m=m+1|0}a=c[46366]|0;e=0;while(1){if((e|0)<(b|0))d=0;else break;while(1){if((d|0)>=(a|0))break;h[(c[(c[(c[o>>2]|0)+168>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}e=e+1|0}i=0;while(1){d=c[(c[(c[o>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!d)break;a=d+16|0;d=0;while(1){if((d|0)>=(b|0))break;a:do if((i|0)!=(d|0)){g=+vn(c[(c[a>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[o>>2]|0)+152>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+132>>2]|0,n);f=c[46366]|0;g=1.0/g;e=0;while(1){if((e|0)>=(f|0))break a;m=c[o>>2]|0;r=+h[n+(e<<3)>>3];r=(r-+h[(c[(c[m+160>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3]*r*g)*+h[(c[(c[m+164>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3];h[(c[(c[(c[m+172>>2]|0)+(i<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)>>3]=r;m=(c[(c[m+168>>2]|0)+(i<<2)>>2]|0)+(e<<3)|0;h[m>>3]=+h[m>>3]+r;e=e+1|0}}while(0);d=d+1|0}i=i+1|0}if(0){o=c[15686]|0;h[p>>3]=+FL();g1(o,90173,p)|0}l=q;return}function Mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0;i=l;l=l+32|0;g=i+24|0;f=i+8|0;e=i;j=+h[22909];h[22831]=j*j;while(1){d=Nn(a,b)|0;if(!d)break;On(a,b,d)}if(!0)b=a+16|0;else{d=c[15686]|0;h[e>>3]=+Pn(a,b);g1(d,90183,e)|0;b=a+16|0;k=c[(c[b>>2]|0)+156>>2]|0;e=(k|0)==(c[46365]|0)?90197:191979;j=+FL();c[f>>2]=k;c[f+4>>2]=e;h[f+8>>3]=j;g1(d,90199,f)|0}b=c[(c[b>>2]|0)+156>>2]|0;if((b|0)==(c[46365]|0)){k=ry(a)|0;c[g>>2]=b;c[g+4>>2]=k;Pw(0,90226,g)|0}l=i;return}function Nn(a,b){a=a|0;b=b|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;o=(c[46029]|0)+1|0;c[46029]=o;a=c[a+16>>2]|0;if((c[a+156>>2]|0)<(c[46365]|0)){m=c[46366]|0;n=a+152|0;k=a+168|0;a=0;e=0.0;j=0;while(1){if((j|0)>=(b|0))break;g=c[(c[n>>2]|0)+(j<<2)>>2]|0;if((d[(c[g+16>>2]|0)+119>>0]|0)<=1){i=0.0;f=0;while(1){if((f|0)>=(m|0))break;s=+h[(c[(c[k>>2]|0)+(j<<2)>>2]|0)+(f<<3)>>3];i=s*s+i;f=f+1|0}if(i>e){a=g;e=i}}j=j+1|0}if(!(e<+h[22831])){if(0!=0&((o|0)%100|0|0)==0?(p=c[15686]|0,h[q>>3]=+C(+e),g1(p,90277,q)|0,((c[46029]|0)%1e3|0|0)==0):0)n3(10,p)|0}else a=0}else a=0;l=r;return a|0}function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;k=d+16|0;m=c[(c[k>>2]|0)+120>>2]|0;f=c[46028]|0;if(!f){g=c[46366]|0;g=vH(O(g<<3,g)|0)|0}else{g=c[46366]|0;g=xH(f,O(g<<3,g)|0)|0}c[46028]=g;Qn(a,b,m,g);i=c[46366]|0;j=a+16|0;f=0;while(1){if((f|0)>=(i|0))break;h[182656+(f<<3)>>3]=-+h[(c[(c[(c[j>>2]|0)+168>>2]|0)+(m<<2)>>2]|0)+(f<<3)>>3];f=f+1|0}Xt(g,182736,182656,i);f=0;while(1){if((f|0)>=(c[46366]|0))break;e=+h[22911];e=(1.0-e)*2.0*+k2()+e;i=182736+(f<<3)|0;e=e*+h[i>>3];h[i>>3]=e;i=(c[(c[k>>2]|0)+132>>2]|0)+(f<<3)|0;h[i>>3]=+h[i>>3]+e;f=f+1|0}k=(c[j>>2]|0)+156|0;c[k>>2]=(c[k>>2]|0)+1;Rn(a,b,m);if(cM()|0){g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;e=+B(+(+h[182736+(f<<3)>>3]))+e;f=f+1|0}e=+C(+e);m=c[15686]|0;c[n>>2]=ry(d)|0;h[n+8>>3]=e;g1(m,90268,n)|0}l=o;return}function Pn(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=b+-1|0;n=a+16|0;o=c[46366]|0;g=0;d=0.0;a:while(1){if((g|0)>=(q|0))break;m=c[n>>2]|0;p=c[m+152>>2]|0;j=g+1|0;k=(c[p+(g<<2)>>2]|0)+16|0;l=m+164|0;m=m+160|0;i=j;while(1){if((i|0)>=(b|0)){g=j;continue a}f=(c[p+(i<<2)>>2]|0)+16|0;a=0;e=0.0;while(1){if((a|0)>=(o|0))break;r=+h[(c[(c[k>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];a=a+1|0;e=r*r+e}r=+h[(c[(c[m>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3];r=((+C(+e)*-2.0+r)*r+e)*+h[(c[(c[l>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3]+d;i=i+1|0;d=r}}return +d}function Qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+80|0;w=x;v=c[a+16>>2]|0;k=c[v+164>>2]|0;m=c[v+160>>2]|0;v=c[v+152>>2]|0;j=c[v+(d<<2)>>2]|0;g=c[46366]|0;a=0;while(1){if((a|0)>=(g|0))break;i=O(g,a)|0;f=0;while(1){if((f|0)==(g|0))break;h[e+(i+f<<3)>>3]=0.0;f=f+1|0}a=a+1|0}u=c[46366]|0;t=j+16|0;s=k+(d<<2)|0;k=m+(d<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;a:do if((j|0)!=(d|0)){f=(c[v+(j<<2)>>2]|0)+16|0;r=0.0;a=0;while(1){if((a|0)>=(u|0))break;q=+h[(c[(c[t>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];h[w+(a<<3)>>3]=q;r=q*q+r;a=a+1|0}n=1.0/+un(r);i=0;while(1){if((i|0)>=(u|0))break a;f=(c[s>>2]|0)+(j<<3)|0;g=(c[k>>2]|0)+(j<<3)|0;o=+h[w+(i<<3)>>3];a=0;while(1){p=+h[f>>3];q=+h[g>>3];if((a|0)==(i|0))break;m=e+((O(u,a)|0)+i<<3)|0;h[m>>3]=+h[m>>3]+p*n*q*o*+h[w+(a<<3)>>3];a=a+1|0}m=e+((O(u,i)|0)+i<<3)|0;h[m>>3]=(1.0-q*n*(r-o*o))*p+ +h[m>>3];i=i+1|0}}while(0);j=j+1|0}f=c[46366]|0;i=1;while(1){if((i|0)>=(f|0))break;g=O(f,i)|0;a=0;while(1){if((a|0)==(i|0))break;h[e+(g+a<<3)>>3]=+h[e+((O(f,a)|0)+i<<3)>>3];a=a+1|0}i=i+1|0}l=x;return}function Rn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;m=l;l=l+80|0;k=m;j=a+16|0;f=c[j>>2]|0;g=c[(c[f+152>>2]|0)+(d<<2)>>2]|0;e=c[46366]|0;f=f+168|0;a=0;while(1){if((a|0)>=(e|0))break;h[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]=0.0;a=a+1|0}f=g+16|0;a=0;while(1){if((a|0)>=(b|0))break;a:do if((a|0)!=(d|0)){i=+vn(c[(c[f>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[j>>2]|0)+152>>2]|0)+(a<<2)>>2]|0)+16>>2]|0)+132>>2]|0,k);g=c[46366]|0;i=1.0/i;e=0;while(1){if((e|0)>=(g|0))break a;n=c[j>>2]|0;q=c[n+172>>2]|0;r=(c[(c[q+(d<<2)>>2]|0)+(a<<2)>>2]|0)+(e<<3)|0;o=+h[k+(e<<3)>>3];o=(o-+h[(c[(c[n+160>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]*o*i)*+h[(c[(c[n+164>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3];h[r>>3]=o;n=c[n+168>>2]|0;s=(c[n+(d<<2)>>2]|0)+(e<<3)|0;h[s>>3]=+h[s>>3]+o;q=(c[(c[q+(a<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)|0;o=+h[q>>3];p=-+h[r>>3];h[q>>3]=p;n=(c[n+(a<<2)>>2]|0)+(e<<3)|0;h[n>>3]=p-o+ +h[n>>3];e=e+1|0}}while(0);a=a+1|0}l=m;return}function Sn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;d=a+16|0;g=c[46030]|0;b=c[(c[d>>2]|0)+124>>2]|0;while(1){if((b|0)<=0)break;i=(b+-1|0)/2|0;j=g+(i<<2)|0;e=c[j>>2]|0;f=e+16|0;if(+h[(c[f>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[j>>2]=a;c[(c[d>>2]|0)+124>>2]=i;c[g+(b<<2)>>2]=e;c[(c[f>>2]|0)+124>>2]=b;b=i}return}function Tn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=a+16|0;j=c[46031]|0;k=c[46030]|0;g=c[(c[i>>2]|0)+124>>2]|0;while(1){e=g<<1|1;if((e|0)>=(j|0))break;d=e+1|0;if((d|0)<(j|0)){f=c[k+(d<<2)>>2]|0;b=c[k+(e<<2)>>2]|0;if(+h[(c[f+16>>2]|0)+136>>3]<+h[(c[b+16>>2]|0)+136>>3]){e=d;b=f}else l=6}else{b=c[k+(e<<2)>>2]|0;l=6}if((l|0)==6)l=0;d=b+16|0;if(+h[(c[i>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[k+(e<<2)>>2]=a;c[(c[i>>2]|0)+124>>2]=e;c[k+(g<<2)>>2]=b;c[(c[d>>2]|0)+124>>2]=g;g=e}return}function Un(a){a=a|0;var b=0,d=0;b=(c[a+16>>2]|0)+124|0;if((c[b>>2]|0)>=0)qa(90283,90303,643,90311);d=c[46031]|0;c[46031]=d+1;c[b>>2]=d;c[(c[46030]|0)+(d<<2)>>2]=a;if((d|0)>0)Sn(a);return}function Vn(){var a=0,b=0,d=0,e=0;b=c[46031]|0;if(!b)a=0;else{e=c[46030]|0;a=c[e>>2]|0;d=b+-1|0;c[46031]=d;d=c[e+(d<<2)>>2]|0;c[e>>2]=d;c[(c[d+16>>2]|0)+124>>2]=0;if((b|0)>2)Tn(d);c[(c[a+16>>2]|0)+124>>2]=-1}return a|0}function Wn(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;c[46030]=uH((b<<2)+4|0)|0;if(0){E1(90325,28,1,c[15686]|0)|0;EL()}b=Sy(a)|0;while(1){if(!b)break;Xn(a,b);b=Ty(a,b)|0}if(0){a=c[15686]|0;h[d>>3]=+FL();g1(a,90173,d)|0}D_(c[46030]|0);l=e;return}function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0;e=c[(c[a+16>>2]|0)+152>>2]|0;f=+h[22910];d=0;while(1){g=c[e+(d<<2)>>2]|0;if(!g)break;h[(c[g+16>>2]|0)+136>>3]=f;d=d+1|0}c[46032]=b;k=c[b+16>>2]|0;h[k+136>>3]=0.0;c[k+128>>2]=0;Un(b);a:while(1){k=Vn()|0;if(!k)break;d=c[46032]|0;j=k+16|0;if((k|0)!=(d|0))Yn(a,d,k,+h[(c[j>>2]|0)+136>>3]);i=Jx(a,k)|0;while(1){if(!i)continue a;d=c[i>>2]&3;b=c[((d|0)==3?i:i+48|0)+40>>2]|0;if((b|0)==(k|0))b=c[((d|0)==2?i:i+-48|0)+40>>2]|0;d=c[j>>2]|0;f=+h[(c[i+16>>2]|0)+136>>3]+ +h[d+136>>3];e=c[b+16>>2]|0;g=e+136|0;do if(+h[g>>3]>f){h[g>>3]=f;if((c[e+124>>2]|0)>-1){Sn(b);break}else{c[e+128>>2]=(c[d+128>>2]|0)+1;Un(b);break}}while(0);i=Kx(a,i,k)|0}}return}function Yn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;b=c[(c[b+16>>2]|0)+120>>2]|0;d=c[(c[d+16>>2]|0)+120>>2]|0;a=c[(c[a+16>>2]|0)+160>>2]|0;h[(c[a+(d<<2)>>2]|0)+(b<<3)>>3]=e;h[(c[a+(b<<2)>>2]|0)+(d<<3)>>3]=e;return}function Zn(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;_n(a);return}function _n(a){a=a|0;var b=0,d=0,e=0,f=0;b=ay(a)|0;e=uH(b*56|0)|0;b=uH((b<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d*56|0);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;$n(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function $n(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function ao(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;m=u+32|0;i=u+24|0;g=u+16|0;j=u;t=u+72|0;p=u+40|0;if(ay(b)|0){Zn(b);f=xx(b,93136)|0;if(f)if(a[f>>0]|0){d=az(b,f,0)|0;if(!d){c[g>>2]=f;Pw(0,90354,g)|0;Pw(3,90394,i)|0;d=0;s=1}else s=0}else{d=0;s=1}else{d=0;s=0}n=nx(b,1,93136,0)|0;o=(n|0)!=0;f=xx(b,137660)|0;if((f|0?a[f>>0]|0:0)?(k=j+8|0,c[m>>2]=j,c[m+4>>2]=k,(N1(f,102477,m)|0)==1):0)h[k>>3]=+h[j>>3];if(ay(b)|0){m=oD(b,t,0)|0;if((c[t>>2]|0)==1){g=(d|0)!=0;do if(g)e=d;else{if(o?(e=bo(b,n)|0,e|0):0)break;e=0}while(0);f=Zt(b,e)|0;if(!((e|0)!=0|o^1))rx(f,n,139381)|0;r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;tq(b)|0;hn(b);d=(s|0)==0|g?d:f}else{XD(b,2,8,p)|0;c[p+12>>2]=0;k=(s|0)==0;j=0;while(1){if((j|0)>=(c[t>>2]|0))break;g=c[m+(j<<2)>>2]|0;e=(d|0)!=0;if(e?(oz(g,d)|0)!=0:0)f=d;else r=23;do if((r|0)==23){r=0;if(o?(q=bo(g,n)|0,q|0):0){f=q;break}f=0}while(0);vD(g)|0;i=Zt(g,f)|0;d=k|e?d:i;if(o?(f|0)==0|(f|0)==(d|0):0)rx(i,n,139381)|0;tq(g)|0;j=j+1|0}r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;WD(c[t>>2]|0,m,b,p)|0;hn(b)}e=0;while(1){if((e|0)>=(c[t>>2]|0))break;dz(b,c[m+(e<<2)>>2]|0)|0;e=e+1|0}D_(m)}if(s|0)zx(b,93136,ry(d)|0)|0;eJ(b)}l=u;return}function bo(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c){c=0;break}if((QL(yx(c,b)|0)|0)<<24>>24)break;c=Ty(a,c)|0}return c|0}function co(a){a=a|0;var b=0,c=0;b=Sy(a)|0;if(b|0){while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;JM(c);c=Gx(a,c)|0}HM(b);b=Ty(a,b)|0}eo(a)}return}function eo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function fo(a){a=a|0;go(a);if(!((ay(a)|0)==0?!(c[(c[a+16>>2]|0)+180>>2]|0):0)){nu(a);eJ(a)}return}function go(a){a=a|0;c[46377]=nx(a,1,105204,105210)|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;ho(a,0);io(a);return}function ho(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){lo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;mo(b,d);ho(d,0)}else ho(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;g=a+16|0;c[(c[g>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;Az(b,134365,304,1)|0;c[(c[b+16>>2]|0)+112>>2]=f+(d<<2);c[(c[(c[g>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;jo(b);e=Ex(a,b)|0;while(1){if(!e)break;ko(e);e=Gx(a,e)|0}b=Ty(a,b)|0;d=d+1|0}return}function jo(a){a=a|0;zx(a,105204,105210)|0;return}function ko(a){a=a|0;Az(a,134378,304,1)|0;return}function lo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function no(a){a=a|0;var b=0,d=0;b=Sy(a)|0;if(b|0){D_(c[(c[b+16>>2]|0)+112>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}oo(a)}return}function oo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function po(a){a=a|0;var d=0,e=0,f=0;qo(a);ro(a,0);so(a,0);to(a,0);d=c[a+16>>2]|0;if(!(c[(c[d+8>>2]|0)+84>>2]|0)){d=b[d+136>>1]&14;if(d<<16>>16)Ym(a,d&65535)|0}else{d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+132>>2]|0;h[e>>3]=+h[f+16>>3]*.013888888888888888;h[e+8>>3]=+h[f+24>>3]*.013888888888888888;d=Ty(a,d)|0}$m(a,1)}eJ(a);return}function qo(a){a=a|0;var d=0,e=0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;d=Sy(a)|0;while(1){if(!d)break;$l(d);d=Ty(a,d)|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;Az(d,134378,176,1)|0;eM(d)|0;d=Gx(a,d)|0}e=Ty(a,e)|0}return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){yo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;fH(d);zo(b,d);ro(d,0)}else ro(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function so(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+448|0;G=Q+400|0;F=Q+384|0;P=Q+344|0;O=Q+304|0;N=Q+248|0;D=Q+192|0;x=Q+152|0;y=Q+96|0;o=Q+72|0;d=Q+64|0;I=Q+32|0;J=Q;B=Q+416|0;u=Q+328|0;w=Q+288|0;K=Q+232|0;L=Q+176|0;M=Q+136|0;H=Q+80|0;n=c[a+60>>2]|0;if(0>1){uo(b);E=c[15686]|0;c[d>>2]=ry(a)|0;g1(E,90637,d)|0}E=a+16|0;f=b+1|0;d=1;e=0;while(1){g=c[E>>2]|0;if((d|0)>(c[g+180>>2]|0))break;C=c[(c[g+184>>2]|0)+(d<<2)>>2]|0;so(C,f);d=d+1|0;e=(ay(C)|0)+e|0}p=(ay(a)|0)-e|0;d=c[E>>2]|0;C=(c[d+180>>2]|0)+p|0;v=(C|0)==0;if(v?(c[d+12>>2]|0)==0:0){P=d+16|0;c[P>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;h[d+40>>3]=18.0;h[d+32>>3]=18.0}else{d=B+16|0;do if((XD(a,4,4,B)|0)>>>0>=3)if((c[d>>2]|0)==4?(c[B+28>>2]&2|0)!=0:0){e=nx(n,0,96164,0)|0;d=nx(n,1,96164,0)|0;if((e|0)!=0|(d|0)!=0){c[B+24>>2]=uH(C<<2)|0;break}else{c[o>>2]=ry(a)|0;Pw(0,90483,o)|0;d=0;e=0;break}}else{d=0;e=0}else{c[d>>2]=3;d=0;e=0}while(0);z=uH(C<<5)|0;A=uH(C<<2)|0;s=B+24|0;n=(e|0)!=0;r=0;g=1;while(1){f=c[E>>2]|0;if((g|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(g<<2)>>2]|0;t=z+(r<<5)|0;q=(c[f+16>>2]|0)+16|0;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[t+16>>2]=c[q+16>>2];c[t+20>>2]=c[q+20>>2];c[t+24>>2]=c[q+24>>2];c[t+28>>2]=c[q+28>>2];if(n&(c[s>>2]|0)!=0){t=KL(f,e,0,0)|0;c[(c[s>>2]|0)+(r<<2)>>2]=t}c[A+(r<<2)>>2]=f;r=r+1|0;g=g+1|0}a:do if((p|0)>0){o=I+16|0;p=I+24|0;q=(d|0)!=0;n=Sy(a)|0;e=r;while(1){if(!n)break a;f=c[n+16>>2]|0;g=f+112|0;if(!(c[g>>2]|0)){c[g>>2]=a;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;h[o>>3]=+h[f+96>>3]+ +h[f+88>>3];h[p>>3]=+h[f+80>>3];t=z+(e<<5)|0;c[t>>2]=c[I>>2];c[t+4>>2]=c[I+4>>2];c[t+8>>2]=c[I+8>>2];c[t+12>>2]=c[I+12>>2];c[t+16>>2]=c[I+16>>2];c[t+20>>2]=c[I+20>>2];c[t+24>>2]=c[I+24>>2];c[t+28>>2]=c[I+28>>2];if(q&(c[s>>2]|0)!=0){t=KL(n,d,0,0)|0;c[(c[s>>2]|0)+(e<<2)>>2]=t}c[A+(e<<2)>>2]=n;e=e+1|0}n=Ty(a,n)|0}}while(0);t=QD(C,z,B)|0;d=c[s>>2]|0;if(d|0)D_(d);vo(J,2147483647.0,2147483647.0);s=J+16|0;vo(u,-2147483647.0,-2147483647.0);c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];g=I+16|0;n=I+8|0;o=I+24|0;p=J+8|0;q=J+24|0;r=c[15686]|0;d=0;while(1){if((d|0)>=(C|0))break;j=+(c[t+(d<<3)>>2]|0);m=+(c[t+(d<<3)+4>>2]|0);e=z+(d<<5)|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];c[I+16>>2]=c[e+16>>2];c[I+20>>2]=c[e+20>>2];c[I+24>>2]=c[e+24>>2];c[I+28>>2]=c[e+28>>2];i=+h[I>>3]+j;h[I>>3]=i;j=+h[g>>3]+j;h[g>>3]=j;k=+h[n>>3]+m;h[n>>3]=k;m=+h[o>>3]+m;h[o>>3]=m;h[J>>3]=+h[(+h[J>>3]<i?J:I)>>3];h[p>>3]=+h[(+h[p>>3]<k?J:I)+8>>3];h[s>>3]=+h[(+h[s>>3]>j?J:I)+16>>3];h[q>>3]=+h[(+h[q>>3]>m?J:I)+24>>3];e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){u=(c[f>>2]|0)+16|0;c[u>>2]=c[I>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[u+12>>2]=c[I+12>>2];c[u+16>>2]=c[I+16>>2];c[u+20>>2]=c[I+20>>2];c[u+24>>2]=c[I+24>>2];c[u+28>>2]=c[I+28>>2];if(0>1){uo(b);c[y>>2]=ry(e)|0;h[y+8>>3]=i;h[y+16>>3]=k;h[y+24>>3]=j;h[y+32>>3]=m;g1(r,90462,y)|0}}else{u=(c[f>>2]|0)+16|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[G>>2]=c[g>>2];c[G+4>>2]=c[g+4>>2];c[G+8>>2]=c[g+8>>2];c[G+12>>2]=c[g+12>>2];wo(w,F,G);c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];if(0>1){uo(b);u=ry(e)|0;f=c[f>>2]|0;k=+h[f+16>>3];m=+h[f+24>>3];c[x>>2]=u;h[x+8>>3]=k;h[x+16>>3]=m;g1(r,90450,x)|0}}d=d+1|0}e=c[E>>2]|0;d=c[e+12>>2]|0;if(d|0){i=+h[d+24>>3];if(v){j=+h[d+32>>3];c[J>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;c[J+12>>2]=0;h[s>>3]=i;h[q>>3]=j;j=0.0;k=i}else{j=+h[J>>3];k=+h[s>>3]}m=i-(k-j);i=m*.5;if(m>0.0){h[J>>3]=j-i;h[s>>3]=k+i}}if((b|0)>0)i=+((c[B+8>>2]|0)>>>0)*.5;else i=0.0;j=+h[J>>3]-i;h[J>>3]=j;k=+h[s>>3]+i;h[s>>3]=k;m=-i-+h[e+56>>3]+ +h[p>>3];h[p>>3]=m;i=+h[e+88>>3]+i+ +h[q>>3];h[q>>3]=i;if(0>1){uo(b);c[D>>2]=ry(a)|0;h[D+8>>3]=j;h[D+16>>3]=m;h[D+24>>3]=k;h[D+32>>3]=i;g1(r,90462,D)|0}d=0;while(1){if((d|0)>=(C|0))break;e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){D=(c[f>>2]|0)+16|0;c[I>>2]=c[D>>2];c[I+4>>2]=c[D+4>>2];c[I+8>>2]=c[D+8>>2];c[I+12>>2]=c[D+12>>2];c[I+16>>2]=c[D+16>>2];c[I+20>>2]=c[D+20>>2];c[I+24>>2]=c[D+24>>2];c[I+28>>2]=c[D+28>>2];c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(I,F,G);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(K,F,G);c[g>>2]=c[K>>2];c[g+4>>2]=c[K+4>>2];c[g+8>>2]=c[K+8>>2];c[g+12>>2]=c[K+12>>2];D=(c[f>>2]|0)+16|0;c[D>>2]=c[I>>2];c[D+4>>2]=c[I+4>>2];c[D+8>>2]=c[I+8>>2];c[D+12>>2]=c[I+12>>2];c[D+16>>2]=c[I+16>>2];c[D+20>>2]=c[I+20>>2];c[D+24>>2]=c[I+24>>2];c[D+28>>2]=c[I+28>>2];if(0>1){uo(b);D=ry(e)|0;i=+h[I>>3];j=+h[n>>3];k=+h[g>>3];m=+h[o>>3];c[N>>2]=D;h[N+8>>3]=i;h[N+16>>3]=j;h[N+24>>3]=k;h[N+32>>3]=m;g1(r,90462,N)|0}}else{D=(c[f>>2]|0)+16|0;c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(L,F,G);c[D>>2]=c[L>>2];c[D+4>>2]=c[L+4>>2];c[D+8>>2]=c[L+8>>2];c[D+12>>2]=c[L+12>>2];if(0>1){uo(b);D=ry(e)|0;B=c[f>>2]|0;k=+h[B+16>>3];m=+h[B+24>>3];c[O>>2]=D;h[O+8>>3]=k;h[O+16>>3]=m;g1(r,90450,O)|0}}d=d+1|0}c[F>>2]=c[s>>2];c[F+4>>2]=c[s+4>>2];c[F+8>>2]=c[s+8>>2];c[F+12>>2]=c[s+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(M,F,G);c[s>>2]=c[M>>2];c[s+4>>2]=c[M+4>>2];c[s+8>>2]=c[M+8>>2];c[s+12>>2]=c[M+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(H,F,G);c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];O=(c[E>>2]|0)+16|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[O+16>>2]=c[J+16>>2];c[O+20>>2]=c[J+20>>2];c[O+24>>2]=c[J+24>>2];c[O+28>>2]=c[J+28>>2];if(0>1){uo(b);O=ry(a)|0;i=+h[J>>3];j=+h[p>>3];k=+h[s>>3];m=+h[q>>3];c[P>>2]=O;h[P+8>>3]=i;h[P+16>>3]=j;h[P+24>>3]=k;h[P+32>>3]=m;g1(r,90462,P)|0}D_(z);D_(A);D_(t)}l=Q;return}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0;t=l;l=l+80|0;s=t+32|0;i=t+8|0;d=t;r=a+16|0;o=c[r>>2]|0;p=+h[o+16>>3];q=+h[o+24>>3];if(0>1){uo(b);o=c[15686]|0;c[d>>2]=ry(a)|0;g1(o,90435,d)|0}o=(b|0)!=0;a:do if(o){d=Sy(a)|0;e=c[15686]|0;while(1){if(!d)break a;f=d+16|0;g=c[f>>2]|0;if((c[g+112>>2]|0)==(a|0)?(u=g+16|0,h[u>>3]=+h[u>>3]+p,g=g+24|0,h[g>>3]=+h[g>>3]+q,0>1):0){uo(b);u=ry(d)|0;g=c[f>>2]|0;m=+h[g+16>>3];n=+h[g+24>>3];c[i>>2]=u;h[i+8>>3]=m;h[i+16>>3]=n;g1(e,90450,i)|0}d=Ty(a,d)|0}}else e=c[15686]|0;while(0);i=b+1|0;a=1;while(1){d=c[r>>2]|0;if((a|0)>(c[d+180>>2]|0))break;g=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(o){f=g+16|0;d=c[f>>2]|0;j=+h[d+16>>3]+p;k=+h[d+24>>3]+q;m=+h[d+32>>3]+p;n=+h[d+40>>3]+q;if(0>1){uo(b);c[s>>2]=ry(g)|0;h[s+8>>3]=j;h[s+16>>3]=k;h[s+24>>3]=m;h[s+32>>3]=n;g1(e,90462,s)|0;d=c[f>>2]|0}h[d+16>>3]=j;h[d+24>>3]=k;h[d+32>>3]=m;h[d+40>>3]=n}to(g,i);a=a+1|0}l=t;return}function uo(a){a=a|0;var b=0;b=c[15686]|0;while(1){if((a|0)<=0)break;D1(90480,b)|0;a=a+-1|0}return}function vo(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function yo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function zo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Ao(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;HM(b);b=Ty(a,b)|0}Bo(a);return}function Bo(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;a=1;while(1){e=c[b>>2]|0;d=c[e+184>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[d+(a<<2)>>2]|0;nH(c[(c[e+16>>2]|0)+12>>2]|0);Bo(e);a=a+1|0}D_(d);return}function Co(a){a=a|0;var b=0,d=0,e=0;Fz(a,1,134365,304,1);sM(a)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;e=a+16|0;c[(c[e>>2]|0)+152>>2]=b;b=0;d=Sy(a)|0;while(1){if(!d)break;Do(d);c[(c[(c[e>>2]|0)+152>>2]|0)+(b<<2)>>2]=d;c[(c[d+16>>2]|0)+120>>2]=b;b=b+1|0;d=Ty(a,d)|0}e=nx(a,2,90566,0)|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Eo(b,e);b=Gx(a,b)|0}d=Ty(a,d)|0}Fo(a);return}function Do(a){a=a|0;var b=0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function Eo(a,b){a=a|0;b=b|0;var d=0,e=0.0;Az(a,134378,176,1)|0;e=+LL(a,c[46404]|0,1.0,0.0);d=a+16|0;h[(c[d>>2]|0)+128>>3]=e;e=+LL(a,b,+h[1371],0.0);h[(c[d>>2]|0)+136>>3]=e;eM(a)|0;return}function Fo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+32|0;q=r+16|0;p=r;m=r+24|0;n=nx(b,1,99597,0)|0;a:do if(n|0){o=nx(b,1,90570,0)|0;i=b+16|0;j=(o|0)==0;k=c[15686]|0;g=0;while(1){e=c[(c[(c[i>>2]|0)+152>>2]|0)+(g<<2)>>2]|0;if(!e)break a;b=yx(e,n)|0;do if(a[b>>0]|0){f=e+16|0;d=c[(c[f>>2]|0)+132>>2]|0;a[m>>0]=0;c[p>>2]=d;c[p+4>>2]=d+8;c[p+8>>2]=m;if((N1(b,98723,p)|0)<=1){c[q>>2]=ry(e)|0;c[q+4>>2]=b;g1(k,90574,q)|0;break}b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)==2)break b;s=d+(b<<3)|0;h[s>>3]=+h[s>>3]/+h[22908];b=b+1|0}}while(0);b=c[f>>2]|0;a[b+119>>0]=1;if((a[m>>0]|0)!=33){if(j)break;if(!((QL(yx(e,o)|0)|0)<<24>>24))break;b=c[f>>2]|0}a[b+119>>0]=3}while(0);g=g+1|0}}while(0);l=r;return}function Go(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}Ho(a);return}function Ho(a){a=a|0;Io(a);a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);D_(c[(c[a>>2]|0)+140>>2]|0);return}function Io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+16|0;f=1;while(1){e=c[g>>2]|0;b=c[e+184>>2]|0;if((f|0)>(c[e+180>>2]|0))break;e=c[b+(f<<2)>>2]|0;b=e+16|0;nH(c[(c[b>>2]|0)+12>>2]|0);d=c[(c[b>>2]|0)+140>>2]|0;if(d|0){D_(c[d>>2]|0);D_(c[(c[b>>2]|0)+140>>2]|0)}Io(e);f=f+1|0}D_(b);if((fz(a)|0)!=(a|0))Cz(a,134401)|0;return}function Jo(a,b){a=a|0;b=b|0;c[b+4>>2]=nx(a,0,90626,0)|0;c[b+8>>2]=nx(a,0,138034,0)|0;c[b+12>>2]=nx(a,0,137966,0)|0;c[b>>2]=a;c[b+16>>2]=0;c[b+36>>2]=XD(a,2,4,b+20|0)|0;return}function Ko(a){a=a|0;var d=0,e=0;$M(a,2);d=uH(56)|0;e=a+16|0;c[(c[e>>2]|0)+140>>2]=d;d=(KL(a,nx(a,0,90633,0)|0,2,2)|0)&65535;d=(d&65535)<10?d:10;b[(c[e>>2]|0)+176>>1]=d;c[46366]=d&65535;Lo(a,0,a);hp(a);Co(a);return}function Lo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;m=l;l=l+16|0;j=m;k=(d|0)==0;if(k){Mo(j);d=j}g=e+16|0;f=wA(a)|0;while(1){if(!f)break;if(!(z$(ry(f)|0,104980,7)|0)){Az(f,134401,280,1)|0;n=uH(56)|0;p=c[f+16>>2]|0;c[p+140>>2]=n;o=c[g>>2]|0;b[p+176>>1]=b[o+176>>1]|0;c[n+44>>2]=(c[(c[o+140>>2]|0)+44>>2]|0)+1;c[n+48>>2]=e;No(d,f);Lo(f,0,f)}else Lo(f,d,e);f=xA(f)|0}if(k?(h=c[j+8>>2]|0,i=a+16|0,c[(c[i>>2]|0)+180>>2]=h,h|0):0){p=xH(c[j>>2]|0,(h<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=p}l=m;return}function Mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function No(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Oo(a){a=a|0;var b=0,c=0;b=l;l=l+64|0;c=b;Jo(a,c);Po(a,c);Qo(a);Ro(a,a);So(a);l=b;return}function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0;s=l;l=l+64|0;r=s+48|0;e=s+40|0;o=s+56|0;n=s+52|0;m=s;if(0){q=c[15686]|0;c[e>>2]=ry(b)|0;g1(q,90637,e)|0}e=Sy(b)|0;while(1){if(!e)break;c[(c[e+16>>2]|0)+164>>2]=0;e=Ty(b,e)|0}p=To(b,d)|0;q=Iu(p,o,n)|0;e=q;while(1){k=e+4|0;f=c[e>>2]|0;if(!f)break;ip(f,m);e=Sy(f)|0;while(1){if(!e)break;g=Ty(f,e)|0;i=e+16|0;j=c[i>>2]|0;if(c[j+212>>2]|0){v=Uo(e,f)|0;Po(v,d);v=c[(c[v+16>>2]|0)+140>>2]|0;u=+h[v+24>>3];j=c[i>>2]|0;h[j+32>>3]=u;t=+h[v+32>>3];h[j+40>>3]=t;u=u*36.0;h[j+88>>3]=u;h[j+96>>3]=u;h[j+80>>3]=t*72.0;e=g;continue}if(c[(c[j+112>>2]|0)+8>>2]|0){e=g;continue}dz(f,e)|0;e=g}if((ay(f)|0)<=1){e=k;continue}if((c[d>>2]|0)==(b|0))Qp(f)|0;vp(f,m);e=k}e=c[o>>2]|0;if((e|0)<=1)if((e|0)==1){mM(c[q>>2]|0);e=0}else e=0;else{if(!(c[n>>2]|0))f=0;else{f=uH(e)|0;a[f>>0]=1;e=c[o>>2]|0}c[d+40>>2]=f;e=BD(e,q,0,d+20|0)|0;D_(f)}Vo(p,c[o>>2]|0,q,e,b,d);D_(e);f=Sy(p)|0;while(1){if(!f)break;g=c[f+16>>2]|0;e=c[g+212>>2]|0;if(!e){e=c[(c[g+112>>2]|0)+8>>2]|0;if(e|0){o=c[g+132>>2]|0;v=c[(c[e+16>>2]|0)+132>>2]|0;h[v>>3]=+h[o>>3];h[v+8>>3]=+h[o+8>>3]}}else{o=c[g+132>>2]|0;x=+h[g+32>>3];w=+h[o>>3]-x*.5;v=c[(c[e+16>>2]|0)+140>>2]|0;h[v+8>>3]=w;t=+h[g+40>>3];u=+h[o+8>>3]-t*.5;h[v+16>>3]=u;h[v+24>>3]=x+w;h[v+32>>3]=t+u}f=Ty(p,f)|0}v=(c[(c[b+16>>2]|0)+140>>2]|0)+8|0;o=(c[(c[p+16>>2]|0)+140>>2]|0)+8|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];c[v+16>>2]=c[o+16>>2];c[v+20>>2]=c[o+20>>2];c[v+24>>2]=c[o+24>>2];c[v+28>>2]=c[o+28>>2];Wo(p,q);D_(q);if(0){v=c[15686]|0;c[r>>2]=ry(b)|0;g1(v,90648,r)|0}l=s;return}function Qo(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;if(a[e+118>>0]|0){k=c[(c[(c[e+212>>2]|0)+16>>2]|0)+140>>2]|0;j=+h[k+24>>3]-+h[k+8>>3];i=+h[k+32>>3]-+h[k+16>>3];g=j*36.0;f=i*36.0;k=c[e+132>>2]|0;h[k>>3]=j*.5;h[k+8>>3]=i*.5;h[e+32>>3]=j;h[e+40>>3]=i;h[e+96>>3]=g;h[e+88>>3]=g;h[e+80>>3]=i*72.0;e=c[(c[e+12>>2]|0)+44>>2]|0;h[e>>3]=g;h[e+8>>3]=f;i=-g;h[e+16>>3]=i;h[e+24>>3]=f;h[e+32>>3]=i;f=-f;h[e+40>>3]=f;h[e+48>>3]=g;h[e+56>>3]=f}d=Ty(b,d)|0}return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0;i=a+16|0;j=c[(c[i>>2]|0)+140>>2]|0;f=+h[j+8>>3];g=+h[j+16>>3];j=(a|0)!=(b|0);a:do if(j){d=Sy(a)|0;while(1){if(!d){a=1;break a}e=c[d+16>>2]|0;if((c[e+212>>2]|0)==(a|0)){e=c[e+132>>2]|0;h[e>>3]=+h[e>>3]+f;e=e+8|0;h[e>>3]=+h[e>>3]+g}d=Ty(a,d)|0}}else a=1;while(0);while(1){d=c[i>>2]|0;if((a|0)>(c[d+180>>2]|0))break;d=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(j){e=c[(c[d+16>>2]|0)+140>>2]|0;p=e+8|0;n=e+16|0;l=e+24|0;e=e+32|0;o=+h[n>>3]+g;m=+h[l>>3]+f;k=+h[e>>3]+g;h[p>>3]=+h[p>>3]+f;h[n>>3]=o;h[l>>3]=m;h[e>>3]=k}Ro(d,b);a=a+1|0}return}function So(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0;b=a+16|0;a=c[b>>2]|0;d=c[a+140>>2]|0;g=+h[d+16>>3]*72.0;f=+h[d+24>>3]*72.0;e=+h[d+32>>3]*72.0;h[a+16>>3]=+h[d+8>>3]*72.0;h[a+24>>3]=g;h[a+32>>3]=f;h[a+40>>3]=e;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;So(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function To(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+160|0;s=y+24|0;t=y+8|0;g=y;f=y+56|0;w=e+16|0;x=c[w>>2]|0;c[w>>2]=x+1;c[s>>2]=x;Y0(f,90710,s)|0;if(0>1){x=c[15686]|0;w=ry(d)|0;c[g>>2]=f;c[g+4>>2]=w;g1(x,90717,g)|0};a[s>>0]=a[18484]|0;a[s+1>>0]=a[18485]|0;a[s+2>>0]=a[18486]|0;a[s+3>>0]=a[18487]|0;x=Xx(91072,s,0)|0;Az(x,134401,280,1)|0;v=uH(56)|0;w=x+16|0;o=c[w>>2]|0;c[o+140>>2]=v;v=d+16|0;b[o+176>>1]=b[(c[v>>2]|0)+176>>1]|0;ap(d,x,91095);ap(d,x,91700);ap(d,x,90983);o=e+4|0;p=s+16|0;q=s+8|0;r=s+24|0;j=0;n=1;while(1){f=c[v>>2]|0;if((n|0)>(c[f+180>>2]|0))break;c[s>>2]=c[332];c[s+4>>2]=c[333];c[s+8>>2]=c[334];c[s+12>>2]=c[335];c[s+16>>2]=c[336];c[s+20>>2]=c[337];c[s+24>>2]=c[338];c[s+28>>2]=c[339];g=c[(c[f+184>>2]|0)+(n<<2)>>2]|0;fH(g);i=bp(x,ry(g)|0)|0;k=i+16|0;f=c[k>>2]|0;c[f+212>>2]=g;m=j+1|0;c[f+120>>2]=j;if(c[o>>2]|0)cp(g,i,e,s);f=Sy(g)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+164>>2]=i;f=Ty(g,f)|0}f=c[k>>2]|0;if(a[f+119>>0]|0){k=c[f+132>>2]|0;h[k>>3]=(+h[p>>3]+ +h[s>>3])*.5;h[k+8>>3]=(+h[r>>3]+ +h[q>>3])*.5}j=m;n=n+1|0}k=Sy(d)|0;while(1){if(!k)break;f=k+16|0;g=c[f>>2]|0;if(!(c[g+164>>2]|0)){i=g+212|0;s=c[i>>2]|0;if(s|0?(s|0)!=(c[(c[(c[v>>2]|0)+140>>2]|0)+48>>2]|0):0){u=18;break}c[i>>2]=d;if(!(a[g+118>>0]|0)){i=bp(x,ry(k)|0)|0;g=c[f>>2]|0;c[g+164>>2]=i;i=c[i+16>>2]|0;c[i+120>>2]=j;h[i+32>>3]=+h[g+32>>3];h[i+40>>3]=+h[g+40>>3];h[i+88>>3]=+h[g+88>>3];h[i+96>>3]=+h[g+96>>3];h[i+80>>3]=+h[g+80>>3];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];f=a[g+119>>0]|0;if(f<<24>>24){e=c[g+132>>2]|0;s=c[i+132>>2]|0;h[s>>3]=+h[e>>3];h[s+8>>3]=+h[e+8>>3];a[i+119>>0]=f}c[(c[i+112>>2]|0)+8>>2]=k;f=j+1|0}else f=j}else f=j;k=Ty(d,k)|0;j=f}if((u|0)==18){e=ry(k)|0;s=ry(d)|0;u=ry(c[(c[f>>2]|0)+212>>2]|0)|0;c[t>>2]=e;c[t+4>>2]=s;c[t+8>>2]=u;Pw(1,90740,t)|0;bb(184132,1)}m=Sy(d)|0;while(1){if(!m)break;n=c[(c[m+16>>2]|0)+164>>2]|0;o=n+16|0;i=Ex(d,m)|0;while(1){if(!i)break;f=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+164>>2]|0;if((f|0)!=(n|0)){if(f>>>0>n>>>0)k=Rx(x,n,f,0,1)|0;else k=Rx(x,f,n,0,1)|0;Az(k,134378,176,1)|0;g=c[i+16>>2]|0;u=c[k+16>>2]|0;h[u+136>>3]=+h[g+136>>3];h[u+128>>3]=+h[g+128>>3];f=c[(c[f+16>>2]|0)+112>>2]|0;g=f+4|0;c[g>>2]=(c[g>>2]|0)+1;g=c[(c[o>>2]|0)+112>>2]|0;t=g+4|0;c[t>>2]=(c[t>>2]|0)+1;if(!(c[u+172>>2]|0)){c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}dp(k,i)}i=Gx(d,i)|0}m=Ty(d,m)|0}f=c[(c[v>>2]|0)+140>>2]|0;g=c[f>>2]|0;if(g|0){i=uH((c[f+4>>2]<<4)+16|0)|0;c[c[(c[w>>2]|0)+140>>2]>>2]=i;f=0;while(1){if(!(c[g>>2]|0))break;m=c[(c[(c[g+4>>2]|0)+16>>2]|0)+164>>2]|0;if(m){ep(d,g);n=bp(x,190692)|0;o=n+16|0;c[(c[o>>2]|0)+120>>2]=j;if(n>>>0>m>>>0)k=Rx(x,m,n,0,1)|0;else k=Rx(x,n,m,0,1)|0;Az(k,134378,176,1)|0;u=c[g>>2]|0;t=c[u+16>>2]|0;v=c[k+16>>2]|0;h[v+136>>3]=+h[t+136>>3];h[v+128>>3]=+h[t+128>>3];dp(k,u);u=c[(c[o>>2]|0)+112>>2]|0;v=u+4|0;c[v>>2]=(c[v>>2]|0)+1;v=c[(c[m+16>>2]|0)+112>>2]|0;t=v+4|0;c[t>>2]=(c[t>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+1;c[i+4>>2]=n;h[i+8>>3]=+h[g+8>>3];c[i>>2]=k;f=f+1|0;i=i+16|0;j=j+1|0}g=g+16|0}c[(c[(c[w>>2]|0)+140>>2]|0)+4>>2]=f}l=y;return x|0}function Uo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;l=c[a+16>>2]|0;k=c[l+212>>2]|0;l=c[(c[l+112>>2]|0)+4>>2]|0;do if(l|0){j=uH((l<<4)+16|0)|0;f=Zo(a,b)|0;g=f+8|0;b=0;e=f;while(1){if(!(c[e>>2]|0))break;i=e+24|0;if(!(c[i>>2]|0))d=+h[g>>3]+6.283185307179586;else d=+h[e+32>>3];b=_o(a,e,j,b,d)|0;e=i}if((b|0)==(l|0)){a=c[(c[k+16>>2]|0)+140>>2]|0;c[a>>2]=j;c[a+4>>2]=l;D_(f);break}else qa(90656,90666,766,90675)}while(0);return k|0}function Vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;B=l;l=l+32|0;x=B+16|0;A=B;m=c[g+8>>2]|0;j=c[g+12>>2]|0;y=(c[g>>2]|0)==(f|0);z=(b|0)!=0;a:do if(z){p=c[(c[d>>2]|0)+16>>2]|0;k=+h[p+16>>3];m=~~(k+(k>=0.0?.5:-.5));c[A>>2]=m;k=+h[p+24>>3];g=~~(k+(k>=0.0?.5:-.5));u=A+4|0;c[u>>2]=g;k=+h[p+32>>3];n=~~(k+(k>=0.0?.5:-.5));v=A+8|0;c[v>>2]=n;k=+h[p+40>>3];p=~~(k+(k>=0.0?.5:-.5));w=A+12|0;c[w>>2]=p;if((b|0)>1){q=c[e>>2]|0;t=c[e+4>>2]|0;m=q+m|0;c[A>>2]=m;b=t+g|0;c[u>>2]=b;n=q+n|0;c[v>>2]=n;q=x+4|0;r=x+8|0;s=x+12|0;o=e;g=d;t=t+p|0;p=b;while(1){g=g+4|0;j=o+8|0;c[w>>2]=t;b=c[g>>2]|0;if(!b){j=0;r=p;s=t;break a}E=c[b+16>>2]|0;G=+h[E+16>>3];i=+h[E+24>>3];k=+h[E+32>>3];H=+h[E+40>>3];E=~~(H+(H>=0.0?.5:-.5));c[s>>2]=E;b=c[j>>2]|0;F=c[o+12>>2]|0;D=b+~~(G+(G>=0.0?.5:-.5))|0;c[x>>2]=D;C=F+~~(i+(i>=0.0?.5:-.5))|0;c[q>>2]=C;b=b+~~(k+(k>=0.0?.5:-.5))|0;c[r>>2]=b;E=F+E|0;c[s>>2]=E;D=c[((m|0)<(D|0)?A:x)>>2]|0;c[A>>2]=D;C=c[((p|0)<(C|0)?A:x)+4>>2]|0;c[u>>2]=C;b=c[((n|0)>(b|0)?A:x)+8>>2]|0;c[v>>2]=b;o=j;t=c[((t|0)>(E|0)?A:x)+12>>2]|0;m=D;p=C;n=b}}else{j=0;r=g;s=p}}else{c[A>>2]=0;c[A+4>>2]=0;n=KL(f,m,54,3)|0;c[A+8>>2]=n;s=KL(f,j,36,3)|0;c[A+12>>2]=s;j=1;m=0;r=0}while(0);b=f+16|0;o=c[b>>2]|0;g=c[o+12>>2]|0;if(g){H=+h[g+24>>3];g=m-n+~~(H+(H>=0.0?.5:-.5))|0;if((g|0)>0){g=g>>>1;m=m-g|0;c[A>>2]=m;n=n+g|0;c[A+8>>2]=n;g=0}else g=0}else g=j;if(y|(g|0)!=0){j=0;g=o}else{j=KL(a,c[46374]|0,8,0)|0;g=c[b>>2]|0}q=j-m|0;p=~~(+h[g+56>>3]+ +(j-r|0));c[A>>2]=0;c[A+4>>2]=0;o=q+j+n|0;c[A+8>>2]=o;b=~~(+h[g+88>>3]+ +(j+p|0)+ +(s|0));c[A+12>>2]=b;b:do if(z){g=e;c:while(1){n=d+4|0;j=c[d>>2]|0;if(!j)break b;if(!g){m=0;d=q;g=p}else{m=g+8|0;d=(c[g>>2]|0)+q|0;g=(c[g+4>>2]|0)+p|0}k=+(d|0)*.013888888888888888;i=+(g|0)*.013888888888888888;d=Sy(j)|0;while(1){if(!d){d=n;g=m;continue c}F=c[(c[d+16>>2]|0)+132>>2]|0;h[F>>3]=+h[F>>3]+k;F=F+8|0;h[F>>3]=+h[F>>3]+i;d=Ty(j,d)|0}}}while(0);F=c[(c[a+16>>2]|0)+140>>2]|0;E=F+8|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;h[F+24>>3]=+(o|0)*.013888888888888888;h[F+32>>3]=+(b|0)*.013888888888888888;l=B;return}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=c[b>>2]|0;if(!d)break;Xo(d);Cz(d,134401)|0;b=b+4|0}b=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;if(b|0)D_(b);Xo(a);Cz(a,134401)|0;d=Sy(a)|0;while(1){if(!d)break;e=Ty(a,d)|0;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+172>>2]|0);Cz(b,134378)|0;b=Gx(a,b)|0}Yo(d);d=e}$x(a)|0;return}function Xo(a){a=a|0;D_(c[(c[a+16>>2]|0)+140>>2]|0);return}function Yo(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);Cz(a,134365)|0;return}function Zo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;l=c[c[(c[k>>2]|0)+112>>2]>>2]|0;m=uH((l*24|0)+24|0)|0;i=0;j=Jx(b,a)|0;while(1){if(!j)break;f=c[j>>2]&3;e=c[((f|0)==2?j:j+-48|0)+40>>2]|0;if((e|0)==(a|0))e=c[((f|0)==3?j:j+48|0)+40>>2]|0;e=c[(c[e+16>>2]|0)+132>>2]|0;f=c[(c[k>>2]|0)+132>>2]|0;g=+h[e>>3]-+h[f>>3];d=+h[e+8>>3]-+h[f+8>>3];c[m+(i*24|0)>>2]=j;h[m+(i*24|0)+8>>3]=+K(+d,+g);h[m+(i*24|0)+16>>3]=d*d+g*g;i=i+1|0;j=Kx(b,j,a)|0}if((i|0)!=(l|0))qa(90689,90666,642,90698);_0(m,l,24,67);a:do if((l|0)>1){j=l+-1|0;e=0;b:while(1){if((e|0)>=(j|0))break a;g=+h[m+(e*24|0)+8>>3];f=e+1|0;i=f;while(1){if((i|0)>=(l|0))break;if(!(+h[m+(i*24|0)+8>>3]==g))break;i=i+1|0}if((i|0)==(f|0)){e=f;continue}if((i|0)==(l|0))d=3.141592653589793;else d=+h[m+(i*24|0)+8>>3];d=(d-g)/+(i-e|0);d=d>.03490658503988659?.03490658503988659:d;g=0.0;while(1){if((e|0)>=(i|0))continue b;k=m+(e*24|0)+8|0;h[k>>3]=+h[k>>3]+g;g=g+d;e=e+1|0}}}while(0);return m|0}function _o(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0;k=c[d>>2]|0;n=c[k+16>>2]|0;m=b[n+168>>1]|0;o=m<<16>>16;j=c[k>>2]&3;i=c[((j|0)==2?k:k+-48|0)+40>>2]|0;if((i|0)==(a|0))i=c[((j|0)==3?k:k+48|0)+40>>2]|0;p=+h[d+8>>3];g=(g-p)/+(m<<16>>16);g=g>.03490658503988659?.03490658503988659:g;m=i>>>0>a>>>0;l=m?g:-g;d=m?1:-1;k=0;i=c[n+172>>2]|0;j=m?f:f+-1+o|0;g=m?p:g*+(o+-1|0)+p;while(1){if((k|0)>=(o|0))break;n=c[i>>2]|0;c[e+(j<<4)>>2]=n;m=c[n>>2]&3;q=(m|0)==3?n:n+48|0;c[e+(j<<4)+4>>2]=c[((c[(c[(c[q+40>>2]|0)+16>>2]|0)+164>>2]|0)==(a|0)?q:(m|0)==2?n:n+-48|0)+40>>2];h[e+(j<<4)+8>>3]=g;k=k+1|0;i=i+4|0;j=j+d|0;g=g+l}return o+f|0}function $o(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d))if(!(c<d)){d=+h[a+16>>3];c=+h[b+16>>3];if(d>c)a=1;else a=(d<c)<<31>>31}else a=-1;else a=1;return a|0}function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=nx(a,0,c,0)|0;do if(d|0){a=yx(a,d)|0;d=nx(b,0,c,0)|0;if(!d){nx(b,0,c,a)|0;break}else{rx(b,d,a)|0;break}}while(0);return}function bp(a,b){a=a|0;b=b|0;var d=0,f=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;f=uH(32)|0;d=b+16|0;c[(c[d>>2]|0)+112>>2]=f;a=vH((e[(c[a+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[d>>2]|0)+132>>2]=a;return b|0}function cp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;n=q+56|0;m=q+32|0;p=q;o=q+64|0;i=c[e+4>>2]|0;k=yx(b,i)|0;do if(a[k>>0]|0){if((c[e>>2]|0)!=(b|0)){e=yx(yA(b)|0,i)|0;if((e|0)==(k|0))break;if(!(b$(k,e)|0))break}a[o>>0]=0;e=p+8|0;i=p+16|0;j=p+24|0;c[m>>2]=p;c[m+4>>2]=e;c[m+8>>2]=i;c[m+12>>2]=j;c[m+16>>2]=o;if((N1(k,90851,m)|0)<=3){c[n>>2]=ry(b)|0;c[n+4>>2]=k;Pw(0,90869,n)|0;break}g=+h[22908];if(g>0.0){h[p>>3]=+h[p>>3]/g;h[e>>3]=+h[e>>3]/g;h[i>>3]=+h[i>>3]/g;h[j>>3]=+h[j>>3]/g}e=a[o>>0]|0;if(e<<24>>24==33)a[(c[d+16>>2]|0)+119>>0]=3;else a[(c[d+16>>2]|0)+119>>0]=e<<24>>24==63?2:1;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2]}while(0);l=q;return}function dp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;f=c[g>>2]|0;a=b[f+168>>1]|0;f=c[f+172>>2]|0;if(!f){a=a<<16>>16;e=a;a=vH((a<<2)+4|0)|0}else{a=a<<16>>16;e=a;a=xH(f,(a<<2)+4|0)|0}c[a+(e<<2)>>2]=d;d=c[g>>2]|0;c[d+172>>2]=a;d=d+168|0;b[d>>1]=(b[d>>1]|0)+1<<16>>16;return}function ep(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+48|0;h=i+24|0;g=i;e=c[b>>2]|0;d=c[e>>2]&3;f=c[((d|0)==2?e:e+-48|0)+40>>2]|0;d=c[((d|0)==3?e:e+48|0)+40>>2]|0;b=W_(ry(a)|0)|0;j=W_(ry(f)|0)|0;j=(b+8+j+(W_(ry(d)|0)|0)|0)>999;b=ry(a)|0;if(j){d=ry(d)|0;j=ry(f)|0;h=(c[e>>2]|0)>>>4;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=j;j=g+16|0;c[j>>2]=h;c[j+4>>2]=0;Y0(190692,90809,g)|0}else{d=c[(c[d+16>>2]|0)+120>>2]|0;j=c[(c[f+16>>2]|0)+120>>2]|0;g=(c[e>>2]|0)>>>4;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=j;j=h+16|0;c[j>>2]=g;c[j+4>>2]=0;Y0(190692,90828,h)|0}l=i;return}function fp(a){a=a|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;j=4;i=C_(40)|0;c[i>>2]=0;g=+h[22908];o=0;f=+Z(1,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){h[22908]=f;o=0;ia(100,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){i=D3(184132,1,i|0,j|0)|0;j=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,i|0,j|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1)d=0;else d=z}else d=z}else d=z;while(1){if(d|0)break;o=0;ia(101,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}o=0;$(22,a|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}if(b[(c[a+16>>2]|0)+136>>1]&14){o=0;ia(102,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}}o=0;ja(22,a|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else{k=12;break}}if((k|0)==12)h[22908]=g;D_(i|0);return}function gp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;e=a+16|0;f=b[(c[e>>2]|0)+136>>1]&14;d=f&65535;if((f&65535)>8){if(f<<16>>16==12){if(Wm(a,22,10)|0){c[46363]=2;h=5}}else h=5;do if((h|0)==5)if(!(b[(c[e>>2]|0)+136>>1]&1)){Ym(a,d)|0;break}else{Pw(0,90912,g)|0;d=2;break}while(0);c[46363]=0}if((c[46367]|0)<1)Ym(a,d)|0;l=i;return}function hp(a){a=a|0;var b=0.0,d=0.0,e=0;e=l;l=l+16|0;c[45704]=1;c[45705]=1;c[45707]=-1;c[45709]=50;h[22860]=0.0;h[22855]=0.0;h[22856]=1.0;c[45708]=KL(a,nx(a,0,90975,0)|0,600,0)|0;d=+LL(a,nx(a,0,90983,0)|0,.3,0.0);h[22857]=d;h[1371]=d;if(-1.0==-1.0)b=+LL(a,nx(a,0,90985,0)|0,-1.0,0.0);else b=-1.0;h[22858]=b;c[45706]=1;a=om(a,2,182824)|0;c[45718]=a;if(!a){Pw(0,90988,e)|0;c[45706]=2}c[45734]=(O(c[45708]|0,c[45709]|0)|0)/100|0;d=+h[22857];h[22862]=d*d;if(c[45704]|0){b=+h[22860];if(b<=0.0){b=d*3.0;h[22860]=b}h[22861]=b*b}l=e;return}function ip(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=l;l=l+16|0;d=j;g=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;i=jp(a,b)|0;kp(d,a,g);e=+h[d>>3];f=+h[d+8>>3];a:do if(!(c[45704]|0)){b=0;while(1){if((b|0)>=(c[45735]|0))break a;np(a,+lp(b),g);b=b+1|0}}else{d=Ku(ay(a)|0)|0;Pu(d,ay(a)|0);b=0;while(1){if((b|0)>=(c[45735]|0))break;mp(a,+lp(b),g,d);b=b+1|0}Ru(d)}while(0);b:do if(e!=0.0|f!=0.0){b=Sy(a)|0;while(1){if(!b)break b;g=c[(c[b+16>>2]|0)+132>>2]|0;h[g>>3]=+h[g>>3]+e;g=g+8|0;h[g>>3]=+h[g>>3]+f;b=Ty(a,b)|0}}while(0);if(i|0)op();l=j;return}function jp(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0;if(+h[22858]==-1.0){i=ay(a)|0;d=+h[22857];h[22858]=+h[22856]*.2*d*+C(+(+(i|0)));i=1}else{i=0;d=+h[22857]}g=c[45734]|0;h[b+8>>3]=+lp(g);h[b+16>>3]=d;h[b+24>>3]=+h[22855];e=c[45708]|0;a=e-g|0;c[b>>2]=a;f=c[45707]|0;do if((f|0)>-1){if((f|0)<=(g|0)){c[45735]=f;a=0;j=10;break}if((f|0)<=(e|0)){c[45735]=g;a=f-g|0;j=10}}else{c[45735]=g;j=10}while(0);if((j|0)==10)c[b+32>>2]=a;return i|0}function kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0,y=0,z=0;v=ay(d)|0;x=c[(c[(c[d+16>>2]|0)+140>>2]|0)+4>>2]|0;u=Sy(d)|0;q=0;r=0;g=0;k=0;n=0;while(1){if(!u)break;f=c[u+16>>2]|0;if(!(a[f+119>>0]|0))f=r;else{f=c[f+132>>2]|0;i=+h[f>>3];if(!q){k=~~i;g=~~+h[f+8>>3];n=g;f=k}else{p=+(r|0);s=+h[f+8>>3];t=+(g|0);w=+(k|0);o=+(n|0);n=~~(s>o?s:o);f=~~(i<p?i:p);g=~~(s<t?s:t);k=~~(i>w?i:w)}q=q+1|0}u=Ty(d,u)|0;r=f}i=+h[22857]*(+C(+(+(v-x|0)))+1.0);s=i*.6;h[22864]=s;h[22863]=s;if((q|0)!=1)if((q|0)>1){t=+(k+r|0)*.5;w=+(n+g|0)*.5;o=+(k-r|0);p=o*1.2;l=+(n-g|0);m=l*1.2;i=i*2.4*s;j=m*p/i;do if(!(j>=1.0)){if(j>0.0){i=+C(+j)*2.0;j=p/i;h[22863]=j;i=m/i;z=20;break}if(p>0.0){j=o*.6;h[22863]=j;i=i/p*.5;z=20;break}if(m>0.0){j=i/m*.5;h[22863]=j;i=l*.6;z=20}else{i=s;j=s}}else{j=o*.6;h[22863]=j;i=l*.6;z=20}while(0);if((z|0)==20)h[22864]=i;s=+K(+i,+j);j=j/+E(+s);h[22863]=j;i=i/+F(+s);h[22864]=i}else{t=0.0;w=0.0;j=s;i=s}else{t=+(r|0);w=+(g|0);j=s;i=s}h[22865]=j*j;h[22866]=i*i;if((c[45718]|0)==2)f=c[45706]|0;else{f=H1()|0;f=(db(0)|0)^f}i2(f);a:do if(!e){e=Sy(d)|0;if(!q)while(1){if(!e)break a;s=+h[22863];s=(+k2()*2.0+-1.0)*s;z=e+16|0;h[c[(c[z>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[z>>2]|0)+132>>2]|0)+8>>3]=s;e=Ty(d,e)|0}while(1){if(!e)break a;f=e+16|0;g=c[f>>2]|0;if(!(a[g+119>>0]|0)){s=+h[22863];s=(+k2()*2.0+-1.0)*s;h[c[(c[f>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[f>>2]|0)+132>>2]|0)+8>>3]=s}else{z=c[g+132>>2]|0;h[z>>3]=+h[z>>3]-t;z=z+8|0;h[z>>3]=+h[z>>3]-w}e=Ty(d,e)|0}}else{while(1){if(!(c[e>>2]|0))break;u=e+8|0;s=+E(+(+h[u>>3]))*+h[22863]+t;x=c[(c[e+4>>2]|0)+16>>2]|0;v=c[x+132>>2]|0;h[v>>3]=s;h[v+8>>3]=+F(+(+h[u>>3]))*+h[22864]+w;a[x+119>>0]=1;e=e+16|0}l=t*.1;m=w*.1;r=Sy(d)|0;while(1){if(!r)break a;q=r+16|0;e=c[q>>2]|0;if(!((c[(c[e+112>>2]|0)+8>>2]|0)==0?!(c[e+212>>2]|0):0))z=32;do if((z|0)==32){z=0;if(a[e+119>>0]|0){x=c[e+132>>2]|0;h[x>>3]=+h[x>>3]-t;x=x+8|0;h[x>>3]=+h[x>>3]-w;break}n=Jx(d,r)|0;e=0;j=0.0;i=0.0;while(1){if(!n)break;k=c[n>>2]&3;f=(k|0)==2?n:n+-48|0;g=c[f+40>>2]|0;k=(k|0)==3?n:n+48|0;do if((g|0)!=(c[k+40>>2]|0)?(y=c[(c[((g|0)==(r|0)?k:f)+40>>2]|0)+16>>2]|0,(a[y+119>>0]|0)!=0):0)if(!e){x=c[y+132>>2]|0;e=1;j=+h[x>>3];i=+h[x+8>>3];break}else{p=+(e|0);x=c[y+132>>2]|0;e=e+1|0;s=+(e|0);j=(+h[x>>3]+j*p)/s;i=(+h[x+8>>3]+i*p)/s;break}while(0);n=Kx(d,n,r)|0}do if((e|0)<=1)if((e|0)==1){f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j*.98+l;i=i*.9+m;break}else{i=+k2()*6.283185307179586;s=+k2()*.9;p=s*+h[22863]*+E(+i);f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=p;i=+h[22864]*s*+F(+i);break}else{f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j}while(0);h[e+8>>3]=i;a[f+119>>0]=1}while(0);r=Ty(d,r)|0}}while(0);h[b>>3]=t;h[b+8>>3]=w;return}function lp(a){a=a|0;var b=0;b=c[45708]|0;return +(+h[22858]*+(b-a|0)/+(b|0))}function mp(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;if(!(b<=0.0)){Qu(e);f=Sy(a)|0;while(1){if(!f)break;i=c[f+16>>2]|0;g=(c[i+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;i=c[i+132>>2]|0;j=+h[22860];g=~~+A(+(+h[i>>3]/j));Tu(e,g,~~+A(+(+h[i+8>>3]/j)),f);f=Ty(a,f)|0}g=Sy(a)|0;while(1){if(!g)break;f=Ex(a,g)|0;while(1){if(!f)break;i=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((g|0)!=(i|0))qp(g,i,f);f=Gx(a,f)|0}g=Ty(a,g)|0}Vu(e,23);rp(a,b,d)}return}function np(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0;if(!(b<=0.0)){e=Sy(a)|0;while(1){if(!e)break;g=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;e=Ty(a,e)|0}g=Sy(a)|0;while(1){if(!g)break;else e=g;while(1){e=Ty(a,e)|0;if(!e)break;pp(g,e)}e=Ex(a,g)|0;while(1){if(!e)break;f=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;if((g|0)!=(f|0))qp(g,f,e);e=Gx(a,e)|0}g=Ty(a,g)|0}rp(a,b,d)}return}function op(){h[22858]=-1.0;return}function pp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];sp(a,b,d,e,e*e+d*d);return}function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0;j=b+16|0;k=c[(c[j>>2]|0)+132>>2]|0;a=a+16|0;b=c[(c[a>>2]|0)+132>>2]|0;e=+h[k>>3]-+h[b>>3];f=+h[k+8>>3]-+h[b+8>>3];g=e;i=f;e=e*e;f=f*f;while(1){e=e+f;if(!(e==0.0))break;e=+(5-((g2()|0)%10|0)|0);f=+(5-((g2()|0)%10|0)|0);g=e;i=f;e=e*e;f=f*f}f=+C(+e);b=c[d+16>>2]|0;e=+h[b+128>>3];if(!(c[45705]|0))e=e*f/+h[b+136>>3];else e=(f-+h[b+136>>3])*e/f;g=e*g;k=c[(c[j>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]-g;i=e*i;k=k+24|0;h[k>>3]=+h[k>>3]-i;k=c[(c[a>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]+g;k=k+24|0;h[k>>3]=+h[k>>3]+i;return}function rp(b,d,e){b=b|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;o=d*d;n=(e|0)==0;m=Sy(b)|0;while(1){if(!m)break;l=c[m+16>>2]|0;if(!(a[l+119>>0]&2)){k=c[l+112>>2]|0;f=+h[k+16>>3];i=+h[k+24>>3];g=i*i+f*f;if(g<o){e=c[l+132>>2]|0;j=+h[e>>3]+f;f=+h[e+8>>3]+i}else{g=d/+C(+g);e=c[l+132>>2]|0;j=+h[e>>3]+g*f;f=+h[e+8>>3]+g*i}do if(!n){g=+C(+(f*f/+h[22866]+j*j/+h[22865]));if((c[k+8>>2]|0)==0?(c[l+212>>2]|0)==0:0){h[e>>3]=j/g;f=f/g;break}if(!(g>=1.0)){h[e>>3]=j;break}else{h[e>>3]=j*.95/g;f=f*.95/g;break}}else h[e>>3]=j;while(0);h[e+8>>3]=f}m=Ty(b,m)|0}return}function sp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0;g=d;d=f;while(1){if(!(d==0.0))break;d=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);g=d;d=e*e+d*d}if(!(c[45705]|0))d=+h[22862]/d;else{f=+C(+d);d=+h[22862]/(f*d)}j=c[a+16>>2]|0;a=c[j+112>>2]|0;if(((c[a+8>>2]|0)==0?(c[j+212>>2]|0)==0:0)?(i=c[b+16>>2]|0,(c[(c[i+112>>2]|0)+8>>2]|0)==0):0)d=(c[i+212>>2]|0)==0?d*10.0:d;f=d*g;j=c[(c[b+16>>2]|0)+112>>2]|0;b=j+16|0;h[b>>3]=+h[b>>3]+f;g=d*e;j=j+24|0;h[j>>3]=+h[j>>3]+g;j=a+16|0;h[j>>3]=+h[j>>3]-f;j=a+24|0;h[j>>3]=+h[j>>3]-g;return}function tp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[b+8>>2]|0;g=c[b>>2]|0;e=c[b+4>>2]|0;b=f;while(1){if(!b)break;a=f;while(1){if(!a)break;if((b|0)!=(a|0))pp(c[b>>2]|0,c[a>>2]|0);a=c[a+4>>2]|0}b=c[b+4>>2]|0}h=g+-1|0;a=e+-1|0;up(d,h,a,f);up(d,h,e,f);b=e+1|0;up(d,h,b,f);up(d,g,a,f);up(d,g,b,f);g=g+1|0;up(d,g,a,f);up(d,g,e,f);up(d,g,b,f);return 0}function up(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0;a=Wu(a,b,d)|0;if((e|0)!=0&(a|0)!=0){k=a+8|0;do{d=c[e>>2]|0;j=d+16|0;a=k;while(1){a=c[a>>2]|0;if(!a)break;b=c[a>>2]|0;m=c[(c[b+16>>2]|0)+132>>2]|0;l=c[(c[j>>2]|0)+132>>2]|0;f=+h[m>>3]-+h[l>>3];g=+h[m+8>>3]-+h[l+8>>3];i=g*g+f*f;if(i<+h[22861])sp(d,b,f,g,i);a=a+4|0}e=c[e+4>>2]|0}while((e|0)!=0)}return}function vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;e=xx(b,91095)|0;if(0)E1(91032,8,1,c[15686]|0)|0;if(!((e|0)!=0?(a[e>>0]|0)!=0:0))e=91041;f=A$(e,58)|0;do if(!f)f=0;else{if((f|0)!=(e|0)?((a[e>>0]|0)+-48|0)>>>0>=10:0){f=0;break}i=a2(e)|0;e=f+1|0;f=(i|0)>0?i:0}while(0);if(0){i=c[15686]|0;c[g>>2]=f;c[g+4>>2]=e;g1(i,91049,g)|0}if(!((f|0)!=0?!(wp(b,d,f)|0):0))sq(b,e)|0;l=h;return}function wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;t=l;l=l+64|0;r=t;j=t+40|0;s=ay(b)|0;k=by(b)|0;qq(j,b);c[46072]=c[j>>2];c[46073]=c[j+4>>2];c[46074]=c[j+8>>2];if(a[184296]|0){g[46072]=+g[46072]*.013888888888888888;g[46073]=+g[46073]*.013888888888888888}f=xp(b)|0;a:do if(!f)f=0;else{j=r;i=j+40|0;do{c[j>>2]=c[d>>2];j=j+4|0;d=d+4|0}while((j|0)<(i|0));j=r+16|0;q=+h[j>>3];o=+(k|0)*2.0;p=1.0/+(O(s+-1|0,s)|0);i=0;n=q;while(1){if(!((f|0)!=0&(i|0)<(e|0)))break a;yp(s,r);m=+h[22868]*+h[170];h[22869]=m;h[22870]=o*m*p;d=0;while(1){if((d|0)>=(c[45742]|0))break;m=+zp(d);if(m<=0.0)break;f=Ap(b,m)|0;if(!f){f=0;break}else d=d+1|0}m=n+q;h[j>>3]=m;i=i+1|0;n=m}}while(0);l=t;return f|0}function xp(a){a=a|0;var b=0,c=0,d=0,e=0;b=0;e=Sy(a)|0;while(1){if(!e)break;else d=e;while(1){c=Ty(a,d)|0;if(!c)break;d=c;b=(Dp(e,c)|0)+b|0}e=Ty(a,e)|0}return b|0}function yp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0;e=+h[b+16>>3];h[171]=e;c[344]=c[b>>2];f=+h[b+8>>3];h[22872]=f;c[45742]=c[b+32>>2];d=+h[b+24>>3];if(d>0.0)h[170]=d;h[22868]=e*e;if(f==0.0)h[22872]=+C(+(+(a|0)))*.2*e;return}function zp(a){a=a|0;var b=0;b=c[344]|0;return +(+h[22872]*+(b-a|0)/+(b|0))}function Ap(b,d){b=b|0;d=+d;var e=0,f=0,g=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;e=Sy(b)|0;while(1){if(!e)break;j=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;e=Ty(b,e)|0}e=0;j=Sy(b)|0;while(1){if(!j)break;else g=j;while(1){f=Ty(b,g)|0;if(!f)break;g=f;e=(Bp(j,f)|0)+e|0}f=Ex(b,j)|0;while(1){if(!f)break;Cp(j,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0);f=Gx(b,f)|0}j=Ty(b,j)|0}a:do if(!e)e=0;else{m=d*d;g=Sy(b)|0;while(1){if(!g)break a;f=c[g+16>>2]|0;if((a[f+119>>0]|0)!=3){j=c[f+112>>2]|0;k=+h[j+16>>3];i=+h[j+24>>3];l=i*i+k*k;if(l<m){f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k}else{l=+C(+l);f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k*d/l;i=i*d/l}j=f+8|0;h[j>>3]=+h[j>>3]+i}g=Ty(b,g)|0}}while(0);return e|0}function Bp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];return Fp(a,b,d,e,e*e+d*d)|0}function Cp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0.0,k=0.0,l=0,m=0;if(!(Dp(a,b)|0)){i=c[b+16>>2]|0;m=c[i+132>>2]|0;f=c[a+16>>2]|0;l=c[f+132>>2]|0;e=+h[m>>3]-+h[l>>3];d=+h[m+8>>3]-+h[l+8>>3];g=+C(+(d*d+e*e));j=+Ep(a);j=+Ep(b)+j;k=g-j;g=k*k/((+h[171]+j)*g);e=g*e;b=c[i+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-e;d=g*d;b=b+24|0;h[b>>3]=+h[b>>3]-d;b=c[f+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]+e;b=b+24|0;h[b>>3]=+h[b>>3]+d}return}function Dp(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0,l=0;k=c[d+16>>2]|0;l=c[k+132>>2]|0;d=c[b+16>>2]|0;b=c[d+132>>2]|0;i=+h[l>>3]-+h[b>>3];j=+h[l+8>>3]-+h[b+8>>3];j=j<0.0?-j:j;b=(a[184296]|0)==0;e=+h[d+32>>3];if(b){f=+g[46072];e=e*.5*f;f=+h[k+32>>3]*.5*f}else{f=+g[46072];e=e*.5+f;f=+h[k+32>>3]*.5+f}if(!((i<0.0?-i:i)<=f+e))d=0;else{e=+h[d+40>>3];if(b){i=+g[46073];f=e*.5*i;e=+h[k+40>>3]*.5*i}else{i=+g[46073];f=e*.5+i;e=+h[k+40>>3]*.5+i}d=j<=e+f&1}return d|0}function Ep(b){b=b|0;var d=0.0,e=0.0;b=c[b+16>>2]|0;d=+h[b+32>>3];if(!(a[184296]|0)){e=d*.5*+g[46072];d=+h[b+40>>3]*.5*+g[46073]}else{e=d*.5+ +g[46072];d=+h[b+40>>3]*.5+ +g[46073]}return +(+C(+(d*d+e*e)))}function Fp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0,i=0;while(1){if(!(f==0.0))break;f=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);d=f;f=e*e+f*f}g=Dp(a,b)|0;f=((g|0)==0?+h[22870]:+h[22869])/f;d=f*d;b=c[(c[b+16>>2]|0)+112>>2]|0;i=b+16|0;h[i>>3]=+h[i>>3]+d;f=f*e;b=b+24|0;h[b>>3]=+h[b>>3]+f;b=c[(c[a+16>>2]|0)+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-d;b=b+24|0;h[b>>3]=+h[b>>3]-f;return g|0}function Gp(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Hp(a);return}function Hp(a){a=a|0;var b=0,d=0,e=0,f=0;e=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d<<2);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Ip(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Ip(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+4|0;k=n;a[m>>0]=a[18492]|0;a[m+1>>0]=a[18493]|0;a[m+2>>0]=a[18494]|0;a[m+3>>0]=a[18495]|0;m=Xx(91072,m,0)|0;Az(m,91080,280,1)|0;c[(c[b+16>>2]|0)+140>>2]=m;e=Sy(b)|0;while(1){if(!e)break;f=e+16|0;if(!(c[c[(c[f>>2]|0)+112>>2]>>2]|0)){j=Kp(m,ry(e)|0,e)|0;c[c[(c[f>>2]|0)+112>>2]>>2]=j}e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;h=c[e>>2]&3;g=c[c[(c[(c[((h|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;h=c[c[(c[(c[((h|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((g|0)!=(h|0))Az(Rx(m,g,h,0,1)|0,134378,176,1)|0;e=Gx(b,e)|0}f=Ty(b,f)|0}j=oD(m,k,0)|0;f=0;while(1){if((f|0)>=(c[k>>2]|0))break;h=c[j+(f<<2)>>2]|0;e=Sy(h)|0;while(1){if(!e)break;g=Ex(b,c[c[(c[e+16>>2]|0)+112>>2]>>2]|0)|0;while(1){if(!g)break;i=c[c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((e|0)!=(i|0)){i=Rx(m,e,i,0,1)|0;Az(i,134378,176,1)|0;Vx(h,i,1)|0}g=Gx(b,g)|0}e=Ty(h,e)|0}f=f+1|0}e=Sy(m)|0;while(1){if(!e)break;f=Ex(m,e)|0;while(1){if(!f)break;b=uH(8)|0;c[(c[f+16>>2]|0)+120>>2]=b;f=Gx(m,f)|0}e=Ty(m,e)|0}c[d>>2]=c[k>>2];l=n;return j|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;e=uH(40)|0;a=b+16|0;c[(c[a>>2]|0)+112>>2]=e;e=uH(c[46366]<<3)|0;a=c[a>>2]|0;c[a+132>>2]=e;e=c[d+16>>2]|0;h[a+88>>3]=+h[e+88>>3];h[a+96>>3]=+h[e+96>>3];h[a+80>>3]=+h[e+80>>3];c[c[a+112>>2]>>2]=d;return b|0}function Lp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;b=h+32|0;e=h;if(ay(a)|0){g=Jp(a,b)|0;f=c[b>>2]|0;b=c[g>>2]|0;if((f|0)==1){Xu(b,a);Mp(c[g>>2]|0);tq(a)|0}else{d=c[b+60>>2]|0;XD(a,2,8,e)|0;b=0;while(1){if((b|0)>=(f|0))break;i=c[g+(b<<2)>>2]|0;Xu(i,a);tq(i)|0;b=b+1|0}WD(f,g,d,e)|0;b=0;while(1){if((b|0)>=(f|0))break;Mp(c[g+(b<<2)>>2]|0);b=b+1|0}}D_(g)}l=h;return}function Mp(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;e=c[d+132>>2]|0;d=c[(c[(c[c[d+112>>2]>>2]|0)+16>>2]|0)+132>>2]|0;h[d>>3]=+h[e>>3];h[d+8>>3]=+h[e+8>>3];b=Ty(a,b)|0}return}function Np(a){a=a|0;if(ay(a)|0){Gp(a);Lp(a);D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);hn(a);eJ(a)}return}function Op(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;if(b|0){e=a+16|0;Pp(c[(c[e>>2]|0)+140>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}D_(c[(c[e>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401)}return}function Pp(a){a=a|0;var b=0,d=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+120>>2]|0);b=Gx(a,b)|0}b=d+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);d=Ty(a,d)|0}$x(a)|0;return}function Qp(a){a=a|0;var b=0,d=0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0.0,p=0.0;m=l;l=l+16|0;k=m;a:do if(Rp(a,k)|0){b=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;g=+h[b>>3];e=+h[b+8>>3];b=Sy(a)|0;while(1){if(!b)break;f=c[(c[b+16>>2]|0)+132>>2]|0;h[f>>3]=+h[f>>3]-g;f=f+8|0;h[f>>3]=+h[f>>3]-e;b=Ty(a,b)|0}b=(g!=0.0|e!=0.0)&1;d=Sy(a)|0;while(1){if(!d)break a;f=Ex(a,d)|0;if(f|0)break;d=Ty(a,d)|0}n=c[f>>2]&3;d=c[(c[(c[((n|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;f=c[(c[(c[((n|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;i=+h[f+8>>3];j=+h[f>>3];e=+K(+(+h[d+8>>3]-i),+(+h[d>>3]-j));e=+h[k>>3]-e;h[k>>3]=e;if(e!=0.0){g=+E(+e);e=+F(+e);b=Sy(a)|0;while(1){if(!b){b=1;break a}k=c[(c[b+16>>2]|0)+132>>2]|0;p=+h[k>>3]-j;n=k+8|0;o=+h[n>>3]-i;h[k>>3]=p*g+j-o*e;h[n>>3]=p*e+i+o*g;b=Ty(a,b)|0}}}else b=0;while(0);l=m;return b|0}function Rp(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=l;l=l+16|0;f=g;b=xx(b,91085)|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0){e=+c2(b,f);if((c[f>>2]|0)==(b|0))if(!((QL(b)|0)<<24>>24)){b=0;break}else e=0.0;while(1){if(!(e>180.0))break;e=e+-360.0}while(1){if(!(e<=-180.0))break;e=e+360.0}h[d>>3]=e*.017453292519943295;b=1}else b=0;while(0);l=g;return b|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,91095)|0;return Tp(a,(d|0)==0?(c|0?c:191979):d,b)|0}function Tp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+32|0;m=n+16|0;j=n+8|0;i=n;if((d|0)!=0?(a[d>>0]|0)!=0:0){f=17792;while(1){g=c[f+4>>2]|0;if(!g)break;if(!(V$(d,g,c[f+8>>2]|0)|0)){k=6;break}f=f+16|0}if((k|0)==6){if(!(c[f+12>>2]|0)){c[i>>2]=g;Pw(0,91103,i)|0;f=17792}i=c[f>>2]|0;c[e>>2]=i;c[e+4>>2]=c[f+12>>2];if((i|0)==18)Up(b,d+(c[f+8>>2]|0)|0,e)}if(!(c[f+4>>2]|0)){f=RL(d,63)|0;if(f<<24>>24==63){c[j>>2]=d;Pw(0,91145,j)|0;f=0}else f=f&255;f=(f|0)==0;c[e>>2]=f&1;f=f?91192:132627;k=15}}else{c[e>>2]=0;f=132627;k=15}if((k|0)==15)c[e+4>>2]=f;if(0){k=c[15686]|0;j=c[e+8>>2]|0;o=+h[e+16>>3];c[m>>2]=c[e+4>>2];c[m+4>>2]=j;h[m+8>>3]=o;g1(k,91200,m)|0}l=n;return e|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=g;f=(N1(b,134313,f)|0)>0;b=c[g>>2]|0;c[d+8>>2]=f&(b|0)>-1?b:1e3;h[d+16>>3]=+LL(a,nx(a,0,91236,0)|0,-4.0,-1.0e10);l=e;return}function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h+8|0;f=h;do if((ay(a)|0)>=2){d=Qp(a)|0;d=(Wp(a)|0)+d|0;e=c[b>>2]|0;if(e){if(0){e=c[15686]|0;j=ry(a)|0;i=c[b+4>>2]|0;c[f>>2]=j;c[f+4>>2]=i;g1(e,91565,f)|0;e=c[b>>2]|0}if(e>>>0>2){switch(e|0){case 3:{e=Xq(a,1)|0;break}case 4:{e=Xq(a,0)|0;break}case 6:case 5:{e=0;break}case 10:case 9:case 7:case 8:case 14:case 13:case 11:case 12:{Hq(a,e)|0;e=0;break}case 15:{e=Xq(a,-1)|0;break}default:{c[g>>2]=c[b+4>>2];Pw(0,91588,g)|0;e=0}}d=e+d|0;break}if(Xp(a)|0){Yp();D_(c[46075]|0);c[46075]=0;break}Zp(a);if((c[b>>2]|0)==2)e=_p()|0;else e=$p()|0;if(e|0)aq();Yp();D_(c[46075]|0);c[46075]=0;d=e+d|0}}else d=0;while(0);l=h;return d|0}function Wp(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+24|0;f=m+16|0;j=m;b=xx(a,137660)|0;a:do if(((b|0)!=0?(k=j+8|0,c[f>>2]=j,c[f+4>>2]=k,e=N1(b,102477,f)|0,(e|0)!=0):0)?(g=+h[j>>3],!(+B(+g)<1.0e-09)):0){if((e|0)!=1){d=+h[k>>3];if(+B(+d)<1.0e-09){b=0;break}}else{h[k>>3]=g;d=g}if(!(d==1.0&g==1.0)){if(0){f=c[15686]|0;h[i>>3]=g;h[i+8>>3]=d;g1(f,91748,i)|0}b=Sy(a)|0;while(1){if(!b){b=1;break a}i=c[(c[b+16>>2]|0)+132>>2]|0;h[i>>3]=+h[i>>3]*+h[j>>3];i=i+8|0;h[i>>3]=+h[i>>3]*+h[k>>3];b=Ty(a,b)|0}}else b=0}else b=0;while(0);l=m;return b|0}function Xp(b){b=b|0;var d=0,e=0,f=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+16|0;k=n;c[46084]=ay(b)|0;ur();c[46099]=vH((c[46084]|0)*96|0)|0;f=Sy(b)|0;d=c[46099]|0;qq(k,b);i=+g[k>>2];j=+g[k+4>>2];k=(a[k+8>>0]|0)==0;j=k?j:j*.013888888888888888;i=k?i:i*.013888888888888888;k=k?2:1;e=0;while(1){if((e|0)>=(c[46084]|0)){d=0;break}o=c[(c[f+16>>2]|0)+132>>2]|0;h[d+8>>3]=+h[o>>3];h[d+16>>3]=+h[o+8>>3];if(mb[k&3](d+40|0,f,i,j)|0){m=4;break}c[d+24>>2]=e;c[d+28>>2]=1;c[d>>2]=f;c[d+88>>2]=0;d=d+96|0;e=e+1|0;f=Ty(b,f)|0}if((m|0)==4){D_(c[46099]|0);c[46099]=0;d=1}l=n;return d|0}function Yp(){var a=0,b=0;a=c[46099]|0;b=0;while(1){if((b|0)>=(c[46084]|0))break;pt(a+40|0);a=a+96|0;b=b+1|0}ot();Wr();D_(c[46099]|0);return}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+32|0;m=o+16|0;n=o;p=c[46099]|0;i=+h[p+8>>3];k=+h[p+16>>3];f=c[46084]|0;d=p;e=1;g=+h[p+40>>3]+i;i=+h[p+56>>3]+i;j=+h[p+48>>3]+k;k=+h[p+64>>3]+k;while(1){if((e|0)>=(f|0))break;s=+h[d+104>>3];q=+h[d+112>>3];t=+h[d+136>>3]+s;r=+h[d+144>>3]+q;s=+h[d+152>>3]+s;q=+h[d+160>>3]+q;d=d+96|0;e=e+1|0;g=t<g?t:g;i=s>i?s:i;j=r<j?r:j;k=q>k?q:k}d=xx(b,91688)|0;if(d|0?a[d>>0]|0:0)h[173]=+b2(d);s=+h[173];t=s*(k-j);s=s*(i-g);h[m>>3]=g-s;h[m+8>>3]=j-t;h[n>>3]=s+i;h[n+8>>3]=t+k;iq(m,n);l=o;return}function _p(){var a=0,b=0,d=0,e=0;d=l;l=l+16|0;b=d;if(bq(0)|0){cq();a=0;do{pq();a=a+1|0}while((bq(a)|0)!=0);if(!0)a=1;else{e=c[15686]|0;c[b>>2]=a;g1(e,91616,b)|0;a=1}}else a=0;l=d;return a|0}function $p(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g=i;b=bq(0)|0;if(!b)a=0;else{cq();dq(0);Yt(0,1);a=0;e=0;d=0;while(1){fq();d=d+1|0;f=bq(d)|0;if(!f)break;b=(f|0)<(b|0)?0:e+1|0;c[46076]=1;if(b){gq();a=a+1|0}dq(1);Yt(0,1);e=b;b=f}if(0){f=c[15686]|0;c[g>>2]=d;g1(f,91616,g)|0;c[h>>2]=a;g1(f,91643,h)|0}hq();a=1}l=i;return a|0}function aq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=c[46099]|0;b=0;while(1){if((b|0)>=(d|0))break;e=c[(c[(c[a>>2]|0)+16>>2]|0)+132>>2]|0;h[e>>3]=+h[a+8>>3];h[e+8>>3]=+h[a+16>>3];a=a+96|0;b=b+1|0}return}function bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;o=q+24|0;n=q+8|0;p=q;d=c[46099]|0;e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0)){f=0;b=0;break}c[d+(b*96|0)+32>>2]=0;b=b+1|0}a:while(1){if((b|0)>=(e+-1|0))break;m=d+96|0;b=b+1|0;j=d+8|0;k=d+40|0;i=d+32|0;g=m;h=b;while(1){if((h|0)>=(e|0)){d=m;continue a}e=g+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];if(!(yt(n,k,o,g+40|0)|0))d=f;else{c[i>>2]=1;c[g+32>>2]=1;d=f+1|0}g=g+96|0;h=h+1|0;f=d;e=c[46084]|0}}if(0>1){o=c[15686]|0;c[p>>2]=a;c[p+4>>2]=f;g1(o,91669,p)|0}l=q;return f|0}function cq(){var a=0,b=0,d=0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;nq();k=c[46078]|0;l=c[46099]|0;a=c[46075]|0;a:while(1){i=a;if(a>>>0>=k>>>0)break;b=a+4|0;if(b>>>0>=k>>>0){a=b;continue}f=c[b>>2]|0;d=c[a>>2]|0;g=+h[d>>3];if(+h[f>>3]!=g){a=b;continue}e=+h[d+8>>3];if(+h[f+8>>3]!=e){a=b;continue}j=a+8|0;f=2;while(1){if(j>>>0>=k>>>0)break;d=c[j>>2]|0;if(!(+h[d>>3]==g)){m=11;break}if(!(+h[d+8>>3]==e)){m=11;break}j=j+4|0;f=f+1|0}if((m|0)==11){m=0;d=c[j>>2]|0;if(+h[d+8>>3]==e){e=(+h[d>>3]-g)/+(f|0);d=(((j>>>0>b>>>0?j:b)+-1+(0-i)|0)>>>2)+1|0;a=1;while(1){if((a|0)==(d|0)){a=j;continue a}i=c[b>>2]|0;h[i>>3]=+h[i>>3]+e*+(a|0);a=a+1|0;b=b+4|0}}}while(1){if(b>>>0>=j>>>0){a=j;continue a}f=c[a>>2]|0;n=c[f+16>>2]|0;i=c[b>>2]|0;d=c[i+16>>2]|0;h[i>>3]=(+h[l+(n*96|0)+56>>3]-+h[l+(n*96|0)+40>>3]+ +h[l+(d*96|0)+56>>3]-+h[l+(d*96|0)+40>>3])*.5+ +h[f>>3];b=b+4|0;a=a+4|0}}return}function dq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;if(a|0)nq();i=c[46075]|0;j=c[i>>2]|0;d=+h[j>>3];h[22887]=d;k=c[46084]|0;f=1;g=+h[j>>3];while(1){if((f|0)>=(k|0))break;a=c[i+(f<<2)>>2]|0;b=+h[a>>3];if(b<d){h[22887]=b;e=+h[a>>3]}else{e=b;b=d}f=f+1|0;d=b;g=e>g?e:g}e=+h[j+8>>3];h[22888]=e;h[22890]=+h[(c[i+(k+-1<<2)>>2]|0)+8>>3]-e;h[22889]=g-d;return}function eq(){var a=0;a=c[46077]|0;if(a>>>0<(c[46078]|0)>>>0){c[46077]=a+4;a=c[a>>2]|0}else a=0;return a|0}function fq(){var a=0,b=0,d=0;a=c[46099]|0;jq();d=(c[46076]|0)==0;b=0;while(1){if((b|0)>=(c[46084]|0))break;if(!(d?!(c[a+32>>2]|0):0))kq(a);a=a+96|0;b=b+1|0}return}function gq(){var a=0,b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;a=l;l=l+32|0;c=a+16|0;b=a;j=+h[22883];i=+h[22881];g=+h[22884];e=+h[22882];d=(i-e)*.05;f=(j-g)*.05;h[b>>3]=f+j;h[b+8>>3]=i+d;h[c>>3]=g-f;h[c+8>>3]=e-d;iq(c,b);l=a;return}function hq(){Hr();Jr();Kt();nr();return}function iq(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;f=+h[a>>3];h[22884]=f;e=+h[b>>3];h[22883]=e;c=+h[a+8>>3];h[22882]=c;d=+h[b+8>>3];h[22881]=d;h[22873]=f;h[22875]=f;h[22877]=e;h[22879]=e;h[22880]=d;h[22876]=d;h[22878]=c;h[22874]=c;return}function jq(){var a=0,b=0.0,d=0.0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0;m=c[46099]|0;g=m+8|0;f=+vr(g,182984);e=+vr(g,183e3);d=+vr(g,183016);a=1;b=+vr(g,183032);g=m;i=m;j=m;k=m;while(1){l=m+96|0;if((a|0)>=(c[46084]|0))break;q=m+104|0;r=+vr(q,182984);n=r<f;t=+vr(q,183016);p=t<d;s=+vr(q,183e3);o=s<e;u=+vr(q,183032);q=u<b;a=a+1|0;b=q?u:b;d=p?t:d;e=o?s:e;f=n?r:f;g=q?l:g;i=p?l:i;j=o?l:j;k=n?l:k;m=l}Xr(k+8|0,+h[22873],+h[22874]);Xr(i+8|0,+h[22877],+h[22878]);Xr(j+8|0,+h[22875],+h[22876]);Xr(g+8|0,+h[22879],+h[22880]);return}function kq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+64|0;j=p+48|0;i=p+32|0;g=p+16|0;m=p+8|0;n=p;k=c[a+88>>2]|0;o=k+8|0;b=0.0;d=0.0;e=0.0;k=c[k>>2]|0;while(1){f=c[k>>2]|0;if(!f)break;s=k+8|0;r=f+8|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];q=+lq(g,i,j);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];mq(g,i,j,m,n);b=+h[n>>3]*q+b;d=+h[m>>3]*q+d;e=q+e;k=f}h[a+8>>3]=d/e;h[a+16>>3]=b/e;l=p;return}function lq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+h[b+8>>3];f=+h[c+8>>3];e=+h[a+8>>3];return +(+B(+((f-e)*+h[b>>3]+(d-f)*+h[a>>3]+ +h[c>>3]*(e-d)))*.5)}function mq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;h[d>>3]=(+h[b>>3]+ +h[a>>3]+ +h[c>>3])*.3333333333333333;h[e>>3]=(+h[b+8>>3]+ +h[a+8>>3]+ +h[c+8>>3])*.3333333333333333;return}function nq(){var a=0,b=0,d=0,e=0;a=c[46075]|0;if(!a){a=vH(c[46084]<<2)|0;c[46075]=a;c[46078]=a+(c[46084]<<2)}d=c[46099]|0;Wr();e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0))break;c[a>>2]=d+8;c[d+88>>2]=0;c[d+28>>2]=1;d=d+96|0;a=a+4|0;b=b+1|0}_0(c[46075]|0,e,4,68);c[46077]=c[46075];return}function oq(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;d=+h[a+8>>3];e=+h[b+8>>3];if(!(d<e))if(!(d>e)){e=+h[a>>3];d=+h[b>>3];if(e<d)a=-1;else a=e>d&1}else a=1;else a=-1;return a|0}function pq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=0;b=c[46099]|0;while(1){if((a|0)>=(d|0))break;e=b+8|0;h[e>>3]=+h[e>>3]*1.05;e=b+16|0;h[e>>3]=+h[e>>3]*1.05;a=a+1|0;b=b+96|0}return}function qq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91700)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91704)|0;if(e|0?rq(e,j,.800000011920929,4.0)|0:0)break;g[j+4>>2]=4.0;g[j>>2]=4.0;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91709,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function rq(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;o=l;l=l+16|0;m=o;j=o+12|0;k=o+8|0;while(1){h=a[b>>0]|0;i=b+1|0;if(!(B$(h<<24>>24)|0))break;else b=i}p=h<<24>>24==43;h=d+8|0;a[h>>0]=p&1;c[m>>2]=j;c[m+4>>2]=k;switch(N1(p?i:b,91742,m)|0){case 0:{b=0;break}case 1:{c[k>>2]=c[j>>2];n=5;break}default:n=5}if((n|0)==5){do if(a[h>>0]|0){if(e>1.0){q=+g[j>>2]/e;g[d>>2]=q>f?f:q;e=+g[k>>2]/e;e=e>f?f:e;break}if(e<1.0){q=+g[j>>2]/e;g[d>>2]=q<f?f:q;e=+g[k>>2]/e;e=e<f?f:e;break}else{c[d>>2]=c[j>>2];e=+g[k>>2];break}}else{g[d>>2]=+g[j>>2]/e+1.0;e=+g[k>>2]/e+1.0}while(0);g[d+4>>2]=e;b=1}l=o;return b|0}function sq(a,b){a=a|0;b=b|0;var c=0,d=0;d=l;l=l+32|0;c=d;if((ay(a)|0)<2)a=0;else{Tp(a,b,c)|0;a=Vp(a,c)|0}l=d;return a|0}function tq(a){a=a|0;return sq(a,xx(a,91095)|0)|0}function uq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91704)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91700)|0;if(e|0?rq(e,j,1.25,3.200000047683716)|0:0)break;g[j+4>>2]=3.200000047683716;g[j>>2]=3.200000047683716;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91771,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;o=p;h=0;while(1){if((h|0)>=(d|0))break;c[e+(h<<2)>>2]=-1;h=h+1|0}c[e+(a<<2)>>2]=0;wq(f,a);a:do if(!(c[b+8>>2]|0)){h=2147483647;b:while(1){if(!((xq(f,o)|0)<<24>>24))break a;j=c[o>>2]|0;h=c[e+(j<<2)>>2]|0;i=b+(j*20|0)|0;j=b+(j*20|0)+4|0;k=h+1|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue b;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=k;yq(f,m)|0}a=a+1|0}}}else{h=2147483647;c:while(1){if(!((xq(f,o)|0)<<24>>24))break a;k=c[o>>2]|0;h=c[e+(k<<2)>>2]|0;i=b+(k*20|0)|0;j=b+(k*20|0)+4|0;k=b+(k*20|0)+8|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue c;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=h+~~+g[(c[k>>2]|0)+(a<<2)>>2];yq(f,m)|0}a=a+1|0}}}while(0);a=h+10|0;h=0;while(1){if((h|0)>=(d|0))break;i=e+(h<<2)|0;if((c[i>>2]|0)<0)c[i>>2]=a;h=h+1|0}l=p;return}function wq(a,b){a=a|0;b=b|0;c[c[a>>2]>>2]=b;c[a+12>>2]=0;c[a+8>>2]=1;return}function xq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<(c[a+8>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[b>>2]=c[a+(e<<2)>>2];a=1}else a=0;return a|0}function yq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<(c[a+4>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[a+(e<<2)>>2]=b;a=1}else a=0;return a|0}function zq(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<2)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;return}function Aq(a){a=a|0;D_(c[a>>2]|0);return}function Bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;if(!0)g=0;else{E1(91804,25,1,c[15686]|0)|0;g=0}while(1){if((g|0)>=(a|0))break;i=b+(g<<2)|0;f=0;e=0.0;while(1){if((f|0)==(a|0))break;if((g|0)!=(f|0))e=+h[(c[i>>2]|0)+(f<<3)>>3]+e;f=f+1|0}h[(c[i>>2]|0)+(g<<3)>>3]=-e;g=g+1|0}return xs(b,d,a+-1|0)|0}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0;j=wn(b,b,0.0)|0;k=wn(b,b,0.0)|0;e=Sy(a)|0;while(1){if(!e)break;d=Jx(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;f=(c[c[((g|0)==3?d:d+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?d:d+-48|0)+40>>2]>>2]|0)>>>4;if((f|0)!=(g|0)){l=-1.0/+h[(c[d+16>>2]|0)+136>>3];h[(c[j+(g<<2)>>2]|0)+(f<<3)>>3]=l;h[(c[j+(f<<2)>>2]|0)+(g<<3)>>3]=l}d=Kx(a,d,e)|0}e=Ty(a,e)|0}i=Bq(b,j,k)|0;a:do if(i|0){f=a+16|0;e=0;while(1){if((e|0)>=(b|0))break a;g=k+(e<<2)|0;d=0;while(1){if((d|0)==(b|0))break;a=c[g>>2]|0;h[(c[(c[(c[f>>2]|0)+160>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=+h[(c[k+(d<<2)>>2]|0)+(d<<3)>>3]+ +h[a+(e<<3)>>3]+ +h[a+(d<<3)>>3]*-2.0;d=d+1|0}e=e+1|0}}while(0);xn(j);xn(k);return i|0}function Dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;n=d<<3;o=vH(n)|0;p=vH(n)|0;q=vH(n)|0;k=vH(n)|0;m=vH(n)|0;n=vH(n)|0;Ps(d,c,n);Is(d,n);Is(d,b);Ks(a,d,b,k);Ms(d,n,k,o);Ps(d,o,p);i=f+-1|0;c=0;g=+Qs(d,o,o);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,o)>e)){c=0;break}Ks(a,d,p,q);h=+Qs(d,p,q);if(h==0.0){c=0;break}h=g/h;Os(d,p,h,m);Ns(d,b,m,b);if((c|0)<(i|0)){Os(d,q,h,q);Ms(d,o,q,o);h=+Qs(d,o,o);if(g==0.0){r=7;break}Os(d,p,h/g,p);Ns(d,o,p,p);g=h}c=c+1|0}if((r|0)==7){Pw(1,91830,j)|0;c=1}D_(o);D_(p);D_(q);D_(k);D_(m);D_(n);l=s;return c|0}function Eq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;var h=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;o=d<<3;p=vH(o)|0;q=vH(o)|0;k=vH(o)|0;m=vH(o)|0;n=vH(o)|0;o=vH(o)|0;Ps(d,c,o);if(g<<24>>24){Is(d,o);Is(d,b)}Ls(a,d,b,m);Ms(d,o,m,p);Ps(d,p,q);g=f+-1|0;c=0;h=+Qs(d,p,p);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,p)>e)){c=0;break}Ls(a,d,q,k);i=+Qs(d,q,k);if(i==0.0){c=0;break}i=h/i;Os(d,q,i,n);Ns(d,b,n,b);if((c|0)<(g|0)){Os(d,k,i,k);Ms(d,p,k,p);i=+Qs(d,p,p);if(h==0.0){r=9;break}Os(d,q,i/h,q);Ns(d,p,q,q);h=i}c=c+1|0}if((r|0)==9){Pw(1,91830,j)|0;c=1}D_(p);D_(q);D_(k);D_(m);D_(n);D_(o);l=s;return c|0}function Fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;j=q;k=d<<2;m=uH(k)|0;n=uH(k)|0;o=uH(k)|0;k=uH(k)|0;Ts(d,b);Ts(d,c);Us(a,d,b,k);Ts(d,k);Vs(d,c,k,m);Zs(d,m,n);i=f+-1|0;c=0;g=+_s(d,m,m);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+bt(d,m)>e)){c=0;break}Ts(d,n);Ts(d,b);Ts(d,m);Us(a,d,n,o);Ts(d,o);h=+_s(d,n,o);if(h==0.0){c=0;break}h=g/h;Xs(d,b,h,n);if((c|0)<(i|0)){Xs(d,m,-h,o);h=+_s(d,m,m);if(g==0.0){p=7;break}Ys(d,n,h/g,n);Ws(d,m,n,n);g=h}c=c+1|0}if((p|0)==7){Pw(1,91830,j)|0;c=1}D_(m);D_(n);D_(o);D_(k);l=q;return c|0}function Gq(a,b,d,e,f,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=+n;var o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=l;l=l+48|0;F=M+24|0;E=M+16|0;D=M+8|0;C=M;J=M+40|0;K=M+36|0;H=M+32|0;s=j&4;c[J>>2]=0;c[K>>2]=0;a:do if(c[a+16>>2]|0){p=0;o=0;while(1){if((p|0)>=(b|0))break;t=c[a+(p*20|0)>>2]|0;u=a+(p*20|0)+16|0;r=1;while(1){if((r|0)>=(t|0))break;if(!(o<<24>>24))o=+g[(c[u>>2]|0)+(r<<2)>>2]!=0.0;else o=1;r=r+1|0;o=o&1}p=p+1|0}if(o<<24>>24){z=(s|0)!=0;if(z){r=e+4|0;b:do if((i|0)>2){o=i+-1|0;if((qn(a,b,d,r,f,o,j,k,15)|0)<0){o=-1;break a}p=e+(o<<2)|0;o=0;while(1){if((o|0)>=(b|0))break b;h[(c[p>>2]|0)+(o<<3)>>3]=+h[(c[r>>2]|0)+(o<<3)>>3];o=o+1|0}}while(0);y=c[e>>2]|0;w=c[r>>2]|0;if((kt(a,b,w,b)|0)==0?(kv(a,b,.01,.1,w,J,K,H)|0)==0:0){x=c[H>>2]|0;if((x|0)<1){o=qn(a,b,d,e,f,i,j,k,m)|0;break}c:do if(n>0.0){s=c[J>>2]|0;t=c[K>>2]|0;u=x+-1|0;q=0.0;r=0;while(1){if((r|0)>=(x|0))break c;o=c[t+(r<<2)>>2]|0;A=n-q-+h[w+(c[s+(o<<2)>>2]<<3)>>3]+ +h[w+(c[s+(o+-1<<2)>>2]<<3)>>3];q=(A<0.0?0.0:A)+q;if((r|0)<(u|0))p=c[t+(r+1<<2)>>2]|0;else p=b;while(1){if((o|0)>=(p|0))break;I=w+(c[s+(o<<2)>>2]<<3)|0;h[I>>3]=+h[I>>3]+q;o=o+1|0}r=r+1|0}}while(0);if((i|0)==2?(Qt(a,b,w,y,+h[22909])|0)!=0:0){p=0;o=-1}else L=33}else{p=0;o=-1}}else{kn(a,b,i,e,f)|0;if(!(kv(a,b,.01,.1,0,J,K,H)|0))L=33;else{p=0;o=-1}}d:do if((L|0)==33){if((b|0)==1){o=0;break a}I=vH(c[H>>2]<<2)|0;if(!m){o=0;break a}if(0)EL();switch(k|0){case 2:{if(0)E1(91878,24,1,c[15686]|0)|0;o=pn(a,b)|0;L=46;break}case 1:{o=ln(a,b)|0;if(!o){Pw(0,91903,C)|0;Pw(3,91952,D)|0;L=47}else G=o;break}case 3:{if(0)E1(92005,21,1,c[15686]|0)|0;o=mn(a,b)|0;L=46;break}default:L=47}if((L|0)==46)if(!o)L=47;else G=o;if((L|0)==47){if(0)E1(92027,26,1,c[15686]|0)|0;G=on(a,b)|0}if(0){a=c[15686]|0;h[E>>3]=+FL();g1(a,92054,E)|0;E1(92066,25,1,a)|0;EL()}a=b+-1|0;y=(O(a,b)|0)/2|0;E=y+b|0;e:do if(!z){q=1.0;p=0;while(1){if((p|0)>=(i|0))break;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;A=+B(+(+h[(c[r>>2]|0)+(o<<3)>>3]));q=A>q?A:q;o=o+1|0}p=p+1|0}q=1.0/q;p=0;while(1){if((p|0)>=(i|0))break e;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;D=(c[r>>2]|0)+(o<<3)|0;h[D>>3]=+h[D>>3]*(10.0*q);o=o+1|0}p=p+1|0}}while(0);f:do if(n>0.0){v=+(y|0);o=0;q=0.0;s=0;g:while(1){if((s|0)>=(a|0))break;t=s+1|0;r=o;p=t;while(1){o=r+1|0;if((p|0)>=(b|0)){s=t;continue g}A=+gs(e,i,s,p);r=o;q=A/+g[G+(o<<2)>>2]+q;p=p+1|0}}q=q/v;o=0;while(1){if((o|0)>=(E|0)){o=0;break f}D=G+(o<<2)|0;g[D>>2]=+g[D>>2]*q;o=o+1|0}}else o=0;while(0);while(1){if((o|0)>=(i|0))break;Is(b,c[e+(o<<2)>>2]|0);o=o+1|0}p=c[e+4>>2]|0;q=+h[p>>3];o=0;while(1){if((o|0)>=(b|0))break;D=p+(o<<3)|0;h[D>>3]=+h[D>>3]-q;o=o+1|0}u=i<<2;D=vH(u)|0;x=b<<2;w=O(x,i)|0;r=vH(w)|0;o=0;while(1){if((o|0)>=(i|0))break;s=r+((O(o,b)|0)<<2)|0;c[D+(o<<2)>>2]=s;t=e+(o<<2)|0;p=0;while(1){if((p|0)>=(b|0))break;g[s+(p<<2)>>2]=+h[(c[t>>2]|0)+(p<<3)>>3];p=p+1|0}o=o+1|0}v=+(y|0);if(0){C=c[15686]|0;h[F>>3]=+FL();g1(C,92092,F)|0}ct(E,G);dt(E,G);C=vH(b<<3)|0;$s(b,0.0,C);o=0;r=0;while(1){if((r|0)>=(a|0)){o=b;p=0;r=0;break}s=b-r|0;q=0.0;p=1;while(1){o=o+1|0;if((p|0)>=(s|0))break;A=+g[G+(o<<2)>>2];F=C+(p+r<<3)|0;h[F>>3]=+h[F>>3]-A;q=q+A;p=p+1|0}F=C+(r<<3)|0;h[F>>3]=+h[F>>3]-q;r=r+1|0}while(1){if((p|0)>=(b|0))break;g[G+(r<<2)>>2]=+h[C+(p<<3)>>3];F=o+r|0;o=o+-1|0;p=p+1|0;r=F}k=vH(u)|0;c[k>>2]=vH(w)|0;o=1;while(1){if((o|0)>=(i|0))break;c[k+(o<<2)>>2]=(c[k>>2]|0)+((O(o,b)|0)<<2);o=o+1|0}z=vH(x)|0;f=vH(x)|0;j=vH(E<<2)|0;p=Et(G,b)|0;d=Jt(G,b,c[J>>2]|0,c[K>>2]|0,c[H>>2]|0)|0;y=k+4|0;r=0;A=1797693134862315708145274.0e284;o=0;while(1){if(!(r<<24>>24==0&(o|0)<(m|0)))break;$s(b,0.0,C);et(E,G,j);w=0;t=0;while(1){if((w|0)>=(a|0)){r=0;s=b;t=0;break}x=b-w+-1|0;at(b,0.0,f);r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;at(x,+g[(c[H>>2]|0)+(w<<2)>>2],z);Xs(x,z,-1.0,(c[H>>2]|0)+(w<<2)+4|0);ct(x,z);Ws(x,z,f,f);r=r+1|0}ft(x,f);r=0;while(1){if((r|0)>=(x|0))break;s=f+(r<<2)|0;q=+g[s>>2];if(q>=3402823466385288598117041.0e14|q<0.0)g[s>>2]=0.0;r=r+1|0}u=w+1|0;q=0.0;r=t;s=0;while(1){r=r+1|0;if((s|0)>=(x|0))break;H=j+(r<<2)|0;N=+g[H>>2]*+g[f+(s<<2)>>2];g[H>>2]=N;H=C+(u+s<<3)|0;h[H>>3]=+h[H>>3]-N;q=q+N;s=s+1|0}t=C+(w<<3)|0;h[t>>3]=+h[t>>3]-q;w=u;t=r}while(1){if((r|0)>=(b|0)){r=0;break}g[j+(t<<2)>>2]=+h[C+(r<<3)>>3];H=s+t|0;r=r+1|0;s=s+-1|0;t=H}while(1){if((r|0)>=(i|0)){q=0.0;r=0;break}Us(j,b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0);r=r+1|0}while(1){if((r|0)>=(i|0))break;q=+_s(b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0)+q;r=r+1|0}q=q*2.0+v;r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;Us(G,b,c[H>>2]|0,z);q=q-+_s(b,c[H>>2]|0,z);r=r+1|0}N=+B(+(q-A))/+B(+(A+1.0e-10));r=((o|0)>1&q>A|N<+h[22909])&1;s=0;while(1){if((s|0)>=(i|0))break;if((s|0)!=1){if(Fq(G,c[D+(s<<2)>>2]|0,c[k+(s<<2)>>2]|0,b,.001,b)|0){o=-1;break d}}else Ft(d,c[y>>2]|0,D,i,1,15,I,n)|0;s=s+1|0}A=q;o=o+1|0}D_(I);It(d);if(D|0){r=0;while(1){if((r|0)>=(i|0))break;t=D+(r<<2)|0;u=e+(r<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[u>>2]|0)+(s<<3)>>3]=+g[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}r=r+1|0}D_(c[D>>2]|0);D_(D)}if(k|0){D_(c[k>>2]|0);D_(k)}D_(z);D_(f);D_(C);D_(G);D_(j)}while(0);D_(c[J>>2]|0);D_(c[K>>2]|0);if(p){D_(c[p>>2]|0);D_(p)}}else L=10}else L=10;while(0);if((L|0)==10)o=qn(a,b,d,e,f,i,j,k,m)|0;l=M;return o|0}function Hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;f=m+24|0;g=m+12|0;d=m;i=ay(a)|0;k=vH(i*48|0)|0;qq(d,a);c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];d=Sy(a)|0;e=k;while(1){if(!d)break;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];Iq(d,e,f);d=Ty(a,d)|0;e=e+48|0}a:do if(!(Jq(k,i)|0))d=0;else{switch(b|0){case 9:{Lq(a,k,i,69,1);Nq(a,k,i,70,1);d=0;e=k;break}case 10:{Nq(a,k,i,70,1);Lq(a,k,i,69,1);d=0;e=k;break}case 7:{Lq(a,k,i,71,1);Nq(a,k,i,70,1);j=9;break}case 8:{j=9;break}case 13:{j=10;break}case 14:{Nq(a,k,i,70,0);Lq(a,k,i,69,0);d=0;e=k;break}case 12:{Nq(a,k,i,72,0);Lq(a,k,i,69,0);d=0;e=k;break}default:{Lq(a,k,i,71,0);Nq(a,k,i,70,0);d=0;e=k}}if((j|0)==9){Nq(a,k,i,72,1);Lq(a,k,i,69,1);j=10}if((j|0)==10){Lq(a,k,i,69,0);Nq(a,k,i,70,0);d=0;e=k}while(1){if((d|0)>=(i|0)){d=1;break a}g=c[e+16>>2]|0;j=c[(c[(c[e+20>>2]|0)+16>>2]|0)+132>>2]|0;h[j>>3]=+(c[e+12>>2]|0)*1.3888888888888887e-03;h[j+8>>3]=+(g|0)*1.3888888888888887e-03;d=d+1|0;e=e+48|0}}while(0);D_(k);l=m;return d|0}function Iq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,l=0.0,m=0.0;f=c[b+16>>2]|0;k=c[f+132>>2]|0;l=+h[k>>3]*720.0;j=~~(l+(l>=0.0?.5:-.5));l=+h[k+8>>3]*720.0;k=~~(l+(l>=0.0?.5:-.5));if(!(a[e+8>>0]|0)){m=+h[f+32>>3]*72.0*(+g[e>>2]*5.0);l=+h[f+40>>3]*72.0*(+g[e+4>>2]*5.0);i=~~(m+(m>=0.0?.5:-.5));f=~~(l+(l>=0.0?.5:-.5))}else{l=+h[f+32>>3]*36.0;m=+h[f+40>>3]*36.0;i=~~((+g[e>>2]+ +(~~(l+(l>=0.0?.5:-.5))|0))*10.0);f=~~((+g[e+4>>2]+ +(~~(m+(m>=0.0?.5:-.5))|0))*10.0)}c[d+12>>2]=j;c[d+16>>2]=k;c[d+20>>2]=b;c[d+32>>2]=j-i;c[d+36>>2]=k-f;c[d+40>>2]=i+j;c[d+44>>2]=f+k;return}function Jq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+-1|0;d=0;a:while(1){if((d|0)>=(k|0)){a=0;break}j=a+48|0;d=d+1|0;g=a+32|0;h=a+40|0;i=a+36|0;f=a+44|0;a=j;e=d;while(1){if((e|0)>=(b|0)){a=j;continue a}if((((c[g>>2]|0)<=(c[a+40>>2]|0)?(c[a+32>>2]|0)<=(c[h>>2]|0):0)?(c[i>>2]|0)<=(c[a+44>>2]|0):0)?(c[a+36>>2]|0)<=(c[f>>2]|0):0){a=1;break a}a=a+48|0;e=e+1|0}}return a|0}function Kq(a,b){a=a|0;b=b|0;if((c[a+36>>2]|0)>(c[b+44>>2]|0))a=0;else a=(c[b+36>>2]|0)<=(c[a+44>>2]|0)&1;return a|0}function Lq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+12>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,73)|0;else h=Sq(i,e,73)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+12|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+32|0;c[f>>2]=(c[f>>2]|0)+e;f=b+40|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Mq(a,b){a=a|0;b=b|0;if((c[a+32>>2]|0)>(c[b+40>>2]|0))a=0;else a=(c[b+32>>2]|0)<=(c[a+40>>2]|0)&1;return a|0}function Nq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+16>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,74)|0;else h=Sq(i,e,74)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+16|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+36|0;c[f>>2]=(c[f>>2]|0)+e;f=b+44|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[a+36>>2]|0)<=(c[b+44>>2]|0)?(c[b+36>>2]|0)<=(c[a+44>>2]|0):0)if((c[a+40>>2]|0)<(c[e>>2]|0))a=1;else{g=Rq(d,e)|0;g=g-(c[b+12>>2]|0)+(c[a+12>>2]|0)|0;b=c[b+16>>2]|0;a=c[a+16>>2]|0;f=(b|0)<(a|0);e=Qq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[d>>2]|0)<=(c[b+40>>2]|0)?(c[e>>2]|0)<=(c[a+40>>2]|0):0)if((c[a+44>>2]|0)<(c[b+36>>2]|0))a=1;else{g=Qq(d,e)|0;g=g-(c[b+16>>2]|0)+(c[a+16>>2]|0)|0;b=c[b+12>>2]|0;a=c[a+12>>2]|0;f=(b|0)<(a|0);e=Rq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Qq(a,b){a=a|0;b=b|0;return ((c[a+12>>2]|0)-(c[a+4>>2]|0)+(c[b+12>>2]|0)-(c[b+4>>2]|0)|0)/2|0|0}function Rq(a,b){a=a|0;b=b|0;return ((c[a+8>>2]|0)-(c[a>>2]|0)+(c[b+8>>2]|0)-(c[b>>2]|0)|0)/2|0|0}function Sq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;v=x;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;w=Xx(92103,v,0)|0;Az(w,134401,280,1)|0;g=Aw(d)|0;h=-2147483647;u=0;while(1){if(!g)break;s=c[g+8>>2]|0;t=u+((h|0)!=(s|0)&1)|0;g=c[g>>2]|0;h=s;u=t}s=w+16|0;t=(u<<3)+-4|0;n=0;j=0;g=0;h=0;m=0;r=Aw(d)|0;i=-2147483647;while(1){if(!r)break;q=c[r+8>>2]|0;if((i|0)!=(q|0)){p=az(w,ry(c[r+20>>2]|0)|0,1)|0;Az(p,134365,304,1)|0;o=p+16|0;g=c[o>>2]|0;c[g+112>>2]=r;if(!h){c[(c[s>>2]|0)+192>>2]=p;n=p}else{c[(c[n+16>>2]|0)+164>>2]=p;n=h}c[g+176>>2]=0;k=j+1|0;i=uH(k<<2)|0;c[(c[o>>2]|0)+172>>2]=i;if(!m){j=k;k=p;m=p;g=p;h=n;i=q}else{i=m+16|0;c[(c[i>>2]|0)+184>>2]=0;j=uH((m|0)==(n|0)?t:u-j<<2)|0;c[(c[i>>2]|0)+180>>2]=j;j=Rx(w,m,p,0,1)|0;Az(j,134378,176,1)|0;g=c[j+16>>2]|0;b[g+170>>1]=10;c[g+156>>2]=1;g=c[i>>2]|0;h=c[g+180>>2]|0;if(!h)g=vH((c[g+184>>2]<<2)+8|0)|0;else g=xH(h,(c[g+184>>2]<<2)+8|0)|0;m=c[i>>2]|0;c[m+180>>2]=g;m=m+184|0;h=c[m>>2]|0;c[m>>2]=h+1;c[g+(h<<2)>>2]=j;g=c[i>>2]|0;c[(c[g+180>>2]|0)+(c[g+184>>2]<<2)>>2]=0;g=c[o>>2]|0;h=c[g+172>>2]|0;if(!h)g=vH((c[g+176>>2]<<2)+8|0)|0;else g=xH(h,(c[g+176>>2]<<2)+8|0)|0;h=c[o>>2]|0;c[h+172>>2]=g;h=h+176|0;m=c[h>>2]|0;c[h>>2]=m+1;c[g+(m<<2)>>2]=j;j=c[o>>2]|0;c[(c[j+172>>2]|0)+(c[j+176>>2]<<2)>>2]=0;j=k;k=p;m=p;g=p;h=n;i=q}}else{k=g;g=n}c[r+24>>2]=k;n=g;g=k;r=c[r>>2]|0}m=m+16|0;c[(c[m>>2]|0)+184>>2]=0;g=uH(4)|0;c[(c[m>>2]|0)+180>>2]=g;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;m=Xx(92150,v,0)|0;g=Aw(d)|0;while(1){if(!g)break;v=az(m,ry(c[g+20>>2]|0)|0,1)|0;Az(v,134365,304,1)|0;c[g+28>>2]=v;c[(c[v+16>>2]|0)+112>>2]=g;g=c[g>>2]|0}g=0;k=Aw(d)|0;h=-2147483647;a:while(1){if(!k)break;j=c[k+8>>2]|0;b:do if((h|0)==(j|0))j=h;else{g=k;while(1){g=c[g>>2]|0;if(!g)break a;if((c[g+8>>2]|0)!=(j|0))break b}}while(0);i=k+28|0;h=g;while(1){if(!h)break;if(lb[e&127](k,h)|0)Rx(m,c[i>>2]|0,c[h+28>>2]|0,0,1)|0;h=c[h>>2]|0}k=c[k>>2]|0;h=j}Vq(m,w,f);$x(m)|0;l=x;return w|0}function Tq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;r=s;a[r>>0]=a[18484]|0;a[r+1>>0]=a[18485]|0;a[r+2>>0]=a[18486]|0;a[r+3>>0]=a[18487]|0;r=Xx(92103,r,0)|0;Az(r,134401,280,1)|0;k=r+16|0;h=Aw(e)|0;i=0;while(1){if(!h)break;j=az(r,ry(c[h+20>>2]|0)|0,1)|0;Az(j,134365,304,1)|0;p=j+16|0;n=c[p>>2]|0;c[n+112>>2]=h;c[h+24>>2]=j;c[n+176>>2]=0;n=uH(4)|0;o=c[p>>2]|0;c[o+172>>2]=n;c[o+184>>2]=0;o=uH(4)|0;c[(c[p>>2]|0)+180>>2]=o;if(!i)c[(c[k>>2]|0)+192>>2]=j;else c[(c[i+16>>2]|0)+164>>2]=j;h=c[h>>2]|0;i=j}m=Aw(e)|0;a:while(1){if(!m)break;n=m+32|0;o=m+24|0;p=m+20|0;h=m;while(1){h=c[h>>2]|0;if(!h)break;if(lb[f&127](m,h)|0){i=lb[g&127](n,h+32|0)|0;j=Rx(r,c[o>>2]|0,c[h+24>>2]|0,0,1)|0;Az(j,134378,176,1)|0;if((i|0)>=65536){q=13;break a}k=j+16|0;t=c[k>>2]|0;b[t+170>>1]=i;c[t+156>>2]=1;if(j|0?Rx(d,c[p>>2]|0,c[h+20>>2]|0,0,0)|0:0)c[(c[k>>2]|0)+156>>2]=100}}m=c[m>>2]|0}if((q|0)==13)qa(92106,92122,254,92135);m=Aw(e)|0;while(1){if(!m)break;k=c[m+24>>2]|0;n=k+16|0;k=Ex(r,k)|0;while(1){if(!k)break;h=c[n>>2]|0;i=c[h+180>>2]|0;if(!i)h=vH((c[h+184>>2]<<2)+8|0)|0;else h=xH(i,(c[h+184>>2]<<2)+8|0)|0;i=c[n>>2]|0;c[i+180>>2]=h;i=i+184|0;j=c[i>>2]|0;c[i>>2]=j+1;c[h+(j<<2)>>2]=k;j=c[n>>2]|0;c[(c[j+180>>2]|0)+(c[j+184>>2]<<2)>>2]=0;j=k+-48|0;h=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;i=c[h+172>>2]|0;if(!i)h=vH((c[h+176>>2]<<2)+8|0)|0;else h=xH(i,(c[h+176>>2]<<2)+8|0)|0;c[(c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0)+172>>2]=h;g=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;q=c[g+172>>2]|0;g=g+176|0;t=c[g>>2]|0;c[g>>2]=t+1;c[q+(t<<2)>>2]=k;t=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;c[(c[t+172>>2]|0)+(c[t+176>>2]<<2)>>2]=0;k=Gx(r,k)|0}m=c[m>>2]|0}l=s;return r|0}function Uq(a){a=a|0;var b=0,d=0,e=0,f=0;f=Sy(a)|0;while(1){if(!f)break;d=f+16|0;b=c[d>>2]|0;e=c[b+172>>2]|0;if(e){D_(e);b=c[d>>2]|0}b=c[b+180>>2]|0;if(b|0)D_(b);f=Ty(a,f)|0}$x(a)|0;return}function Vq(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=Sy(a)|0;while(1){if(!k)break;n=c[(c[k+16>>2]|0)+112>>2]|0;m=c[n+24>>2]|0;n=n+32|0;o=m+16|0;l=Ex(a,k)|0;while(1){if(!l)break;h=c[(c[(c[((c[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;p=lb[e&127](n,h+32|0)|0;h=c[h+24>>2]|0;i=Rx(d,m,h,0,1)|0;Az(i,134378,176,1)|0;j=i+16|0;f=c[j>>2]|0;c[f+156>>2]=1;g=b[f+170>>1]|0;if((p|0)>(g&65535|0)){if(!(g<<16>>16)){f=c[o>>2]|0;g=c[f+180>>2]|0;if(!g)f=vH((c[f+184>>2]<<2)+8|0)|0;else f=xH(g,(c[f+184>>2]<<2)+8|0)|0;q=c[o>>2]|0;c[q+180>>2]=f;q=q+184|0;g=c[q>>2]|0;c[q>>2]=g+1;c[f+(g<<2)>>2]=i;f=c[o>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;h=h+16|0;f=c[h>>2]|0;g=c[f+172>>2]|0;if(!g)f=vH((c[f+176>>2]<<2)+8|0)|0;else f=xH(g,(c[f+176>>2]<<2)+8|0)|0;g=c[h>>2]|0;c[g+172>>2]=f;g=g+176|0;q=c[g>>2]|0;c[g>>2]=q+1;c[f+(q<<2)>>2]=i;f=c[h>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;f=c[j>>2]|0}b[f+170>>1]=p}l=Gx(a,l)|0}k=Ty(a,k)|0}return}function Wq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function Xq(b,d){b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;u=y+24|0;s=y+16|0;r=y+52|0;q=y+40|0;t=y;w=ay(b)|0;x=vH(w*72|0)|0;qq(q,b);k=+g[q>>2];m=+g[q+4>>2];q=(a[q+8>>0]|0)!=0;k=q?k*.013888888888888888:k;m=q?m*.013888888888888888:m;n=k*.5;o=m*.5;e=x;f=Sy(b)|0;while(1){if(!f)break;p=c[f+16>>2]|0;i=+h[p+32>>3];if(q){j=+h[p+40>>3]*.5+m;i=i*.5+k}else{j=o*+h[p+40>>3];i=n*i}p=c[p+132>>2]|0;A=+h[p>>3];h[e>>3]=A;z=+h[p+8>>3];h[e+8>>3]=z;h[e+16>>3]=A-i;h[e+24>>3]=z-j;h[e+32>>3]=A+i;h[e+40>>3]=z+j;h[e+48>>3]=i;h[e+56>>3]=j;c[e+64>>2]=f;e=e+72|0;f=Ty(b,f)|0}do if((d|0)<0){i=+Yq(x,w);if(i==0.0){D_(x);e=0;break}if(!0){k=i;j=i;v=19}else{v=c[15686]|0;h[s>>3]=i;g1(v,92153,s)|0;k=i;j=i;v=19}}else{f=Zq(x,w,r)|0;e=c[r>>2]|0;if(!e){D_(f);D_(x);e=0;break}if(!d){$q(t,f,e);i=+h[t>>3];j=+h[t+8>>3]}else{j=+_q(f,e);i=j}D_(f);if(!0){k=i;v=19}else{v=c[15686]|0;h[u>>3]=i;h[u+8>>3]=j;g1(v,92167,u)|0;k=i;v=19}}while(0);if((v|0)==19){e=0;f=x;while(1){if((e|0)>=(w|0))break;v=c[(c[(c[f+64>>2]|0)+16>>2]|0)+132>>2]|0;h[v>>3]=+h[f>>3]*k;h[v+8>>3]=+h[f+8>>3]*j;e=e+1|0;f=f+72|0}D_(x);e=1}l=y;return e|0}function Yq(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=0.0;d=0;a:while(1){if((d|0)>=(b|0))break;r=a+72|0;d=d+1|0;m=a+16|0;n=a+8|0;o=a+56|0;p=a+48|0;q=a+32|0;k=a+24|0;l=a+40|0;i=d;j=r;while(1){if((i|0)>=(b|0)){a=r;continue a}if(((+h[m>>3]<=+h[j+32>>3]?+h[j+16>>3]<=+h[q>>3]:0)?+h[k>>3]<=+h[j+40>>3]:0)?+h[j+24>>3]<=+h[l>>3]:0){c=0.0;break a}e=+h[a>>3];f=+h[j>>3];if(e==f)g=t;else{g=+B(+(e-f));g=(+h[j+48>>3]+ +h[p>>3])/g}e=+h[n>>3];f=+h[j+8>>3];if(e==f)e=t;else{e=+B(+(e-f));e=(+h[j+56>>3]+ +h[o>>3])/e}g=e<g?e:g;i=i+1|0;j=j+72|0;c=g>c?g:c}}return +c}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=vH((b<<4)+16|0)|0;m=0;e=0;n=k;o=b;i=k;a:while(1){if((e|0)>=(b|0))break;z=a+72|0;e=e+1|0;y=a+16|0;r=a+32|0;s=a+24|0;u=a+40|0;v=a+8|0;w=a+56|0;x=a+48|0;p=e;q=z;l=i;while(1){if((p|0)==(b|0)){a=z;i=l;continue a}if(((+h[y>>3]<=+h[q+32>>3]?+h[q+16>>3]<=+h[r>>3]:0)?+h[s>>3]<=+h[q+40>>3]:0)?+h[q+24>>3]<=+h[u>>3]:0){i=o+b|0;if((m|0)==(o|0)){k=xH(k,(i<<4)+16|0)|0;n=k;l=k}else i=o;f=+h[a>>3];g=+h[q>>3];if(!(f==g)){f=(+h[q+48>>3]+ +h[x>>3])/+B(+(f-g));if(f<1.0){f=1.0;A=13}}else{f=t;A=13}if((A|0)==13)A=0;g=+h[v>>3];j=+h[q+8>>3];if(!(g==j)){g=(+h[q+56>>3]+ +h[w>>3])/+B(+(g-j));if(g<1.0){g=1.0;A=16}}else{g=t;A=16}if((A|0)==16)A=0;m=m+1|0;h[n+(m<<4)>>3]=f;h[n+(m<<4)+8>>3]=g}else i=o;p=p+1|0;q=q+72|0;o=i}}A=xH(i,(m<<4)+16|0)|0;c[d>>2]=m;return A|0}function _q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0;d=1;e=0.0;while(1){c=a+16|0;if((d|0)>(b|0))break;g=+h[c>>3];f=+h[a+24>>3];f=g<f?g:f;d=d+1|0;e=f>e?f:e;a=c}return +e}function $q(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,i=0.0;h[b>>3]=1.0;h[b+8>>3]=t;_0(b+16|0,c,16,75);g=vH((c<<4)+16|0)|0;h[g+(c<<4)>>3]=+h[b+(c<<4)>>3];f=c;d=1.0;while(1){h[g+(f<<4)+8>>3]=d;e=f+-1|0;if((f|0)<=0){d=t;e=0;f=0;break}h[g+(e<<4)>>3]=+h[b+(e<<4)>>3];i=+h[(+h[b+(f<<4)+8>>3]>d?b:g)+(f<<4)+8>>3];f=e;d=i}while(1){if((f|0)>(c|0))break;i=+h[g+(f<<4)+8>>3]*+h[g+(f<<4)>>3];b=i<d;d=b?i:d;e=b?f:e;f=f+1|0}if(d<t){i=+h[g+(e<<4)+8>>3];h[a>>3]=+h[g+(e<<4)>>3];h[a+8>>3]=i;return}else qa(92184,92122,832,92204)}function ar(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3];d=+h[b>>3];if(!(c<d))if(!(c>d)){d=+h[a+8>>3];c=+h[b+8>>3];if(d<c)a=-1;else a=d>c&1}else a=1;else a=-1;return a|0}function br(a){a=a|0;var b=0;if(a|0){b=c[a+4>>2]|0;if(b|0)D_(b);b=c[a+8>>2]|0;if(b|0)D_(b);b=c[a+16>>2]|0;if(b|0)D_(b);D_(a)}return}function cr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;k=F_(c[46079]|0,d<<2)|0;c[46079]=k;f=0;while(1){if((f|0)>=(d|0))break;c[e+(f<<2)>>2]=2147483647;f=f+1|0}c[e+(a<<2)>>2]=0;h=b+(a*20|0)|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(c[h>>2]|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=~~+g[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}dr(n,a,k,e,d);i=-2147483639;while(1){if(!((er(n,m,c[46079]|0,e)|0)<<24>>24)){f=0;break}f=c[m>>2]|0;a=c[e+(f<<2)>>2]|0;if((a|0)==2147483647){f=0;break}i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))break;fr(n,c[(c[j>>2]|0)+(f<<2)>>2]|0,a+~~+g[(c[h>>2]|0)+(f<<2)>>2]|0,c[46079]|0,e);f=f+1|0}i=a+10|0}while(1){if((f|0)>=(d|0))break;h=e+(f<<2)|0;if((c[h>>2]|0)==2147483647)c[h>>2]=i;f=f+1|0}gr(n);l=o;return}function dr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if((f|0)==1)i=0;else i=vH((f<<2)+-4|0)|0;c[a>>2]=i;j=f+-1|0;c[a+4>>2]=j;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[i+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(j|0)/2|0;while(1){if((g|0)<=-1)break;hr(a,g,d,e);g=g+-1|0}return}function er(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;hr(a,0,d,e);a=1}return a|0}function fr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+(b<<2)|0;if((c[g>>2]|0)>(d|0)){j=e+(b<<2)|0;i=c[j>>2]|0;c[g>>2]=d;g=c[a>>2]|0;a=i;while(1){if((a|0)<=0)break;h=a>>>1;i=c[g+(h<<2)>>2]|0;if((c[f+(i<<2)>>2]|0)<=(d|0))break;c[g+(a<<2)>>2]=i;c[e+(i<<2)>>2]=a;a=h}c[g+(a<<2)>>2]=b;c[j>>2]=a}return}function gr(a){a=a|0;a=c[a>>2]|0;if(a|0)D_(a);return}function hr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;while(1){f=b<<1;g=f|1;h=c[i>>2]|0;if(!((f|0)<(h|0)?(j=c[a>>2]|0,(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(b<<2)>>2]<<2)>>2]|0)):0))f=b;if((g|0)<(h|0)){j=c[a>>2]|0;f=(c[e+(c[j+(g<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)?g:f}if((f|0)==(b|0))break;j=c[a>>2]|0;h=j+(f<<2)|0;g=c[h>>2]|0;j=j+(b<<2)|0;c[h>>2]=c[j>>2];c[j>>2]=g;c[d+(c[h>>2]<<2)>>2]=f;c[d+(c[j>>2]<<2)>>2]=b;b=f}return}function ir(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+8|0;n=p;c[n>>2]=0;o=vH(d<<2)|0;f=0;while(1){if((f|0)>=(d|0))break;g[e+(f<<2)>>2]=3402823466385288598117041.0e14;f=f+1|0}g[e+(a<<2)>>2]=0.0;h=c[b+(a*20|0)>>2]|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(h|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=c[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}jr(m,a,o,e,d);a:while(1){if(!((kr(m,n,o,e)|0)<<24>>24))break;f=c[n>>2]|0;k=+g[e+(f<<2)>>2];if(k==3402823466385288598117041.0e14)break;i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))continue a;lr(m,c[(c[j>>2]|0)+(f<<2)>>2]|0,+g[(c[h>>2]|0)+(f<<2)>>2]+k,o,e);f=f+1|0}}gr(m);D_(o);l=p;return}function jr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+-1|0;j=vH(i<<2)|0;c[a>>2]=j;c[a+4>>2]=i;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[j+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(i|0)/2|0;while(1){if((g|0)<=-1)break;mr(a,g,d,e);g=g+-1|0}return}function kr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;mr(a,0,d,e);a=1}return a|0}function lr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;h=f+(b<<2)|0;if(!(+g[h>>2]<=d)){k=e+(b<<2)|0;j=c[k>>2]|0;g[h>>2]=d;h=c[a>>2]|0;a=j;while(1){if((a|0)<=0)break;i=a>>>1;j=c[h+(i<<2)>>2]|0;if(!(+g[f+(j<<2)>>2]>d))break;c[h+(a<<2)>>2]=j;c[e+(j<<2)>>2]=a;a=i}c[h+(a<<2)>>2]=b;c[k>>2]=a}return}function mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;j=a+4|0;while(1){f=b<<1;h=f|1;i=c[j>>2]|0;if(!((f|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(f<<2)>>2]<<2)>>2]<+g[e+(c[k+(b<<2)>>2]<<2)>>2]):0))f=b;if((h|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(h<<2)>>2]<<2)>>2]<+g[e+(c[k+(f<<2)>>2]<<2)>>2]):0)f=h;if((f|0)==(b|0))break;k=c[a>>2]|0;i=k+(f<<2)|0;h=c[i>>2]|0;k=k+(b<<2)|0;c[i>>2]=c[k>>2];c[k>>2]=h;c[d+(c[i>>2]<<2)>>2]=f;c[d+(c[k>>2]<<2)>>2]=b;b=f}return}function nr(){gt(184320,48);c[46083]=0;return}function or(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0;i=it(184320)|0;c[i+32>>2]=a;c[i+36>>2]=b;Pt(a);Pt(b);c[i+24>>2]=0;c[i+28>>2]=0;f=+h[a>>3];g=+h[b>>3]-f;e=+h[a+8>>3];d=+h[b+8>>3]-e;f=d*e+g*f+(d*d+g*g)*.5;b=i+16|0;h[b>>3]=f;if((g>0.0?g:-g)>(d>0.0?d:-d)){h[i>>3]=1.0;e=d/g;d=g;a=i+8|0}else{h[i+8>>3]=1.0;e=g/d;a=i}h[a>>3]=e;h[b>>3]=f/d;b=c[46083]|0;c[i+40>>2]=b;c[46083]=b+1;return i|0}function pr(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;l=+h[a>>3];a:do if(l==1.0){if(!(+h[a+8>>3]>=0.0)){b=c[a+28>>2]|0;d=c[a+24>>2]|0;if(!d)m=9;else m=5}else{b=c[a+24>>2]|0;d=c[a+28>>2]|0;if(!d)m=9;else m=5}do if((m|0)==5){e=+h[d+8>>3];if(e>+h[22881])break a;f=+h[22882];if(!(e>=f)){i=f;e=+h[a+16>>3]-+h[a+8>>3]*f;break}else{i=e;e=+h[d>>3];break}}else if((m|0)==9){f=+h[22882];i=f;e=+h[a+16>>3]-+h[a+8>>3]*f}while(0);do if(b){g=+h[b+8>>3];if(g<f)break a;f=+h[22881];if(!(g<=f)){g=f;f=+h[a+16>>3]-+h[a+8>>3]*f;break}else{f=+h[b>>3];break}}else{f=+h[22881];g=f;f=+h[a+16>>3]-+h[a+8>>3]*f}while(0);j=+h[22883];b=e>j;d=f>j;k=+h[22884];if(!(b&d|e<k&f<k)){if(b){i=(+h[a+16>>3]-j)/+h[a+8>>3];e=j}if(e<k){i=(+h[a+16>>3]-k)/+h[a+8>>3];e=k}if(d){g=(+h[a+16>>3]-j)/+h[a+8>>3];f=j}if(f<k){g=(+h[a+16>>3]-k)/+h[a+8>>3];f=k;m=46}else m=46}}else{d=c[a+28>>2]|0;b=c[a+24>>2]|0;do if(b){e=+h[b>>3];if(e>+h[22883])break a;g=+h[22884];if(!(e>=g)){i=+h[a+16>>3]-g*l;e=g;break}else{i=+h[b+8>>3];break}}else{g=+h[22884];i=+h[a+16>>3]-g*l;e=g}while(0);do if(d){f=+h[d>>3];if(f<g)break a;j=+h[22883];if(!(f<=j)){g=+h[a+16>>3]-l*j;f=j;break}else{g=+h[d+8>>3];break}}else{f=+h[22883];g=+h[a+16>>3]-l*f}while(0);j=+h[22881];b=i>j;d=g>j;k=+h[22882];if(!(b&d|i<k&g<k)){if(b){i=j;e=(+h[a+16>>3]-j)/l}if(i<k){i=k;e=(+h[a+16>>3]-k)/l}if(d){g=j;f=(+h[a+16>>3]-j)/l}if(g<k){g=k;f=(+h[a+16>>3]-k)/l;m=46}else m=46}}while(0);if((m|0)==46)qr(a,e,i,f,g);return}function qr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0;g=a+32|0;Xr(c[g>>2]|0,b,d);Xr(c[g>>2]|0,e,f);a=a+36|0;Xr(c[a>>2]|0,b,d);Xr(c[a>>2]|0,e,f);return}function rr(a,b,d){a=a|0;b=b|0;d=d|0;c[a+24+(b<<2)>>2]=d;Pt(d);if(c[a+24+(1-b<<2)>>2]|0){pr(a);Ot(c[a+32>>2]|0);Ot(c[a+36>>2]|0);jt(a,184320)}return}function sr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;o=p;m=b<<2;h=vH(O(m,d)|0)|0;g=c[e>>2]|0;m=vH(m)|0;n=c[a+8>>2]|0;if(g|0){D_(c[g>>2]|0);D_(g)}k=vH(d<<2)|0;c[e>>2]=k;g=0;while(1){if((g|0)>=(d|0))break;c[k+(g<<2)>>2]=h+((O(g,b)|0)<<2);g=g+1|0}j=(f|0)!=0;if(j)es(a,b);e=(g2()|0)%(b|0)|0;zq(o,b);g=c[k>>2]|0;if(j){cr(e,a,b,g);f=0;g=0}else{vq(e,a,b,g,o);f=0;g=0}while(1){if((g|0)>=(b|0)){i=1;break}h=c[(c[k>>2]|0)+(g<<2)>>2]|0;c[m+(g<<2)>>2]=h;i=(h|0)>(f|0);f=i?h:f;e=i?g:e;g=g+1|0}while(1){if((i|0)>=(d|0))break;h=k+(i<<2)|0;g=c[h>>2]|0;if(j){cr(e,a,b,g);g=0;f=0}else{vq(e,a,b,g,o);g=0;f=0}while(1){if((g|0)>=(b|0))break;s=m+(g<<2)|0;q=c[s>>2]|0;r=c[(c[h>>2]|0)+(g<<2)>>2]|0;r=(q|0)<(r|0)?q:r;c[s>>2]=r;s=(r|0)>(f|0);q=s?g:e;g=g+1|0;f=s?r:f;e=q}i=i+1|0}D_(m);if(j)fs(a,b,n);l=p;return}function tr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0,k=0;i=1.0/+(b|0);h=0;while(1){if((h|0)>=(d|0))break;j=a+(h<<2)|0;e=0.0;f=0;while(1){if((f|0)>=(b|0))break;e=e+ +(c[(c[j>>2]|0)+(f<<2)>>2]|0);f=f+1|0}g=~~(e*i);f=0;while(1){if((f|0)>=(b|0))break;k=(c[j>>2]|0)+(f<<2)|0;c[k>>2]=(c[k>>2]|0)-g;f=f+1|0}h=h+1|0}return}function ur(){c[46085]=~~+C(+(+((c[46084]|0)+4|0)));return}function vr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function wr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=+h[b+8>>3]-+h[c+8>>3];return}function xr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=+h[c+8>>3]+ +h[b+8>>3];return}function yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return +((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))}function zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=+yr(h,g,f)>0.0&1;l=e;return d|0}function Ar(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;o=+h[a>>3];p=+h[d+8>>3];q=+h[c+8>>3];m=(p-q)*o;n=+h[b>>3];l=+h[d>>3];k=+h[b+8>>3];i=+h[a+8>>3];j=k-i;f=+h[c>>3];g=m+n*(q-p)+j*l+f*(i-k);if(g==0.0)d=0;else{p=(f*(i-p)+m+(q-i)*l)/g;q=-(f*j+((q-k)*o+(i-q)*n))/g;h[e>>3]=p*(n-o)+o;h[e+8>>3]=j*p+i;d=q<=1.0&(q>=0.0&(p>=0.0&p<=1.0))&1}return d|0}function Br(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0.0,i=0;c[a+20>>2]=b;Pt(b);i=a+24|0;h[i>>3]=+h[b+8>>3]+d;e=c[46086]|0;e=e+((Cr(a)|0)*40|0)|0;while(1){f=e+32|0;e=c[f>>2]|0;if(!e)break;d=+h[i>>3];g=+h[e+24>>3];if(d>g)continue;if(!(d==g))break;if(!(+h[b>>3]>+h[c[e+20>>2]>>3]))break}c[a+32>>2]=e;c[f>>2]=a;c[46087]=(c[46087]|0)+1;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0.0;d=c[46088]|0;e=+(d|0);b=(+h[a+24>>3]-+h[22888])/+h[22890]*e;do if(!(b<0.0))if(!(b>=e)){a=~~b;break}else{a=d+-1|0;break}else a=0;while(0);if((a|0)<(c[46089]|0))c[46089]=a;return a|0}function Dr(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;if(c[d>>2]|0){b=c[46086]|0;b=b+((Cr(a)|0)*40|0)|0;do{e=b+32|0;b=c[e>>2]|0}while((b|0)!=(a|0));c[e>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;Ot(c[d>>2]|0);c[d>>2]=0}return}function Er(){return (c[46087]|0)==0|0}function Fr(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=c[46086]|0;d=c[46089]|0;while(1){e=c[b+(d*40|0)+32>>2]|0;if(e|0)break;e=d+1|0;c[46089]=e;d=e}f=+h[e+24>>3];h[a>>3]=+h[c[e+20>>2]>>3];h[a+8>>3]=f;return}function Gr(){var a=0,b=0;b=(c[46086]|0)+((c[46089]|0)*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;return a|0}function Hr(){D_(c[46086]|0);c[46086]=0;return}function Ir(){var a=0,b=0,d=0;c[46087]=0;c[46089]=0;a=c[46085]|0;b=a<<2;c[46088]=b;d=c[46086]|0;if(!d){d=vH(a*160|0)|0;c[46086]=d;b=c[46088]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a*40|0)+32>>2]=0;a=a+1|0}return}function Jr(){gt(184368,40);D_(c[46095]|0);c[46095]=0;return}function Kr(){var a=0,b=0,d=0;gt(184368,40);a=c[46085]|0;b=a<<1;c[46096]=b;d=c[46095]|0;if(!d){d=vH(a<<3)|0;c[46095]=d;b=c[46096]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a<<2)>>2]=0;a=a+1|0}c[46090]=Lr(0,0)|0;c[46091]=Lr(0,0)|0;c[c[46090]>>2]=0;d=c[46091]|0;b=c[46090]|0;c[b+4>>2]=d;c[d>>2]=b;c[(c[46091]|0)+4>>2]=0;d=c[46095]|0;c[d>>2]=c[46090];c[d+((c[46096]|0)+-1<<2)>>2]=c[46091];return}function Lr(b,d){b=b|0;d=d|0;var e=0;e=it(184368)|0;c[e+8>>2]=b;a[e+16>>0]=d;c[e+32>>2]=0;c[e+20>>2]=0;c[e+12>>2]=0;return e|0}function Mr(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0;i=c[b+8>>2]|0;k=c[d+8>>2]|0;do if((!((i|0)==0|(k|0)==0)?(o=c[i+36>>2]|0,e=c[k+36>>2]|0,(o|0)!=(e|0)):0)?(j=+h[i>>3],f=+h[k+8>>3],g=+h[i+8>>3],l=+h[k>>3],m=f*j-l*g,!(m>-1.0e-10&m<1.0e-10)):0){p=+h[i+16>>3];q=+h[k+16>>3];n=(p*f-q*g)/m;j=(q*j-p*l)/m;f=+h[o+8>>3];g=+h[e+8>>3];do if(f<g)e=o;else{if(f==g?+h[o>>3]<+h[e>>3]:0){e=o;break}b=d}while(0);b=a[b+16>>0]|0;if(!(n>=+h[e>>3])){if(b<<24>>24==1){b=0;break}}else if(!(b<<24>>24)){b=0;break}b=Lt()|0;c[b+20>>2]=0;h[b>>3]=n;h[b+8>>3]=j}else b=0;while(0);return b|0}function Nr(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0,o=0.0,p=0;n=c[b+8>>2]|0;k=c[n+36>>2]|0;l=+h[d>>3];o=+h[k>>3];m=l>o;p=a[b+16>>0]|0;if(m)if(!(p<<24>>24))b=1;else f=4;else if(p<<24>>24==1)b=0;else f=4;if((f|0)==4){e=+h[n>>3];a:do if(e==1.0){e=+h[d+8>>3];g=e-+h[k+8>>3];i=l-o;j=+h[n+8>>3];d=j<0.0;do if(m?j>=0.0:d){if(g>=j*i){b=1;break a}}else{b=j*e+l>+h[n+16>>3];if(d)if(b){b=0;break a}else break;else if(b)break;else{b=0;break a}}while(0);o=o-+h[c[n+32>>2]>>3];b=j*(i*i-g*g)<o*g*(i*2.0/o+1.0+j*j);if(d)b=b^1}else{i=+h[n+16>>3]-l*e;j=+h[d+8>>3]-i;o=l-o;l=i-+h[k+8>>3];b=j*j>l*l+o*o}while(0);b=(b^p<<24>>24!=0)&1}return b|0}function Or(a,b){a=a|0;b=b|0;c[b>>2]=a;a=a+4|0;c[b+4>>2]=c[a>>2];c[c[a>>2]>>2]=b;c[a>>2]=b;return}function Pr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46096]|0;b=~~((+h[a>>3]-+h[22887])/+h[22889]*+(f|0));b=(b|0)>0?b:0;f=(b|0)<(f|0)?b:f+-1|0;b=Qr(f)|0;if(!b){d=1;while(1){b=Qr(f-d|0)|0;if(b|0)break;b=Qr(d+f|0)|0;if(b|0)break;d=d+1|0}c[46097]=(c[46097]|0)+d}c[46098]=(c[46098]|0)+1;e=c[46090]|0;d=c[46091]|0;a:do if((b|0)==(e|0))g=9;else{if((b|0)!=(d|0)?(Nr(b,a)|0)!=0:0){g=9;break}while(1){b=c[b>>2]|0;if((b|0)==(e|0))break a;if(Nr(b,a)|0){e=b;break}}}while(0);if((g|0)==9){while(1){b=c[b+4>>2]|0;if((b|0)==(d|0))break;if(!(Nr(b,a)|0))break;else g=9}e=c[b>>2]|0}if((f|0)>0?(f|0)<((c[46096]|0)+-1|0):0){b=(c[46095]|0)+(f<<2)|0;d=c[b>>2]|0;if(d|0){g=d+12|0;c[g>>2]=(c[g>>2]|0)+-1}c[b>>2]=e;g=e+12|0;c[g>>2]=(c[g>>2]|0)+1}return e|0}function Qr(a){a=a|0;var b=0,d=0;if((a|0)>-1&(c[46096]|0)>(a|0)?(d=(c[46095]|0)+(a<<2)|0,b=c[d>>2]|0,(b|0)!=0):0){if((c[b+8>>2]|0)==(-2|0)){c[d>>2]=0;a=b+12|0;d=(c[a>>2]|0)+-1|0;c[a>>2]=d;if(!d){jt(b,184368);b=0}else b=0}}else b=0;return b|0}function Rr(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[a>>2]|0;c[d+4>>2]=c[b>>2];c[c[b>>2]>>2]=d;c[a+8>>2]=-2;return}function Sr(a){a=a|0;return c[a+4>>2]|0}function Tr(a){a=a|0;return c[a>>2]|0}function Ur(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+32|0:d+36|0;return c[b>>2]|0}function Vr(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+36|0:d+32|0;return c[b>>2]|0}function Wr(){gt(184400,24);return}function Xr(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j;g=(c[46099]|0)+((c[a+16>>2]|0)*96|0)+88|0;f=c[g>>2]|0;h[i+8>>3]=b;h[i+16>>3]=d;e=Yr(a,i,f)|0;do if(e|0){if((e|0)<0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[i>>2]=f;c[g>>2]=i;break}while(1){e=c[f>>2]|0;g=Yr(a,i,e)|0;if((g|0)>0)f=e;else break}if(g|0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[f>>2]=i;c[i>>2]=e}}while(0);l=j;return}function Yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;do if(c){e=+h[b+8>>3];i=+h[c+8>>3];d=+h[b+16>>3];f=+h[c+16>>3];if(!(e==i&d==f)){k=+h[a>>3];j=e-k;e=+h[a+8>>3];g=d-e;i=i-k;d=f-e;if(!(j>=0.0)){if(i>=0.0){b=1;break}e=d/i;d=g/j;if(d<e){b=-1;break}if(d>e){b=1;break}b=j>i?-1:1;break}if(!(i<0.0)){b=i>0.0;if(!(j>0.0)){if(b){b=!(g<=0.0)?1:-1;break}if(g<d){b=!(d<=0.0)?-1:1;break}else{b=!(g<=0.0)?1:-1;break}}else{if(!b){b=d>0.0?-1:1;break}e=d/i;d=g/j;if(d<e){b=-1;break}if(d>e){b=1;break}b=j<i?-1:1;break}}else b=-1}else b=0}else b=-1;while(0);return b|0}function Zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+(d*20|0)>>2]|0;d=a+(d*20|0)+4|0;b=1;a=0;while(1){if((b|0)>=(f|0))break;g=a+((c[e+(c[(c[d>>2]|0)+(b<<2)>>2]<<2)>>2]|0)>0&1)|0;b=b+1|0;a=g}return a|0}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=1;a=a+1|0}return}function $r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=0;a=a+1|0}return}function as(a,b){a=a|0;b=b|0;if(!(c[a+8>>2]|0))a=cs(a,b)|0;else a=bs(a,b)|0;return a|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=b<<2;e=vH(O(f,b)|0)|0;f=vH(f)|0;d=0;while(1){if((d|0)>=(b|0)){d=0;break}c[f+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}while(1){if((d|0)>=(b|0))break;cr(d,a,b,c[f+(d<<2)>>2]|0);d=d+1|0}return f|0}function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=b<<2;e=vH(O(g,b)|0)|0;g=vH(g)|0;d=0;while(1){if((d|0)>=(b|0))break;c[g+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}zq(f,b);d=0;while(1){if((d|0)>=(b|0))break;vq(d,a,b,c[g+(d<<2)>>2]|0,f);d=d+1|0}Aq(f);l=h;return g|0}function ds(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+8>>2]|0;es(a,b);d=bs(a,b)|0;fs(a,b,e);return d|0}function es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=vH(b<<2)|0;d=0;e=0;while(1){if((d|0)>=(b|0))break;k=(c[a+(d*20|0)>>2]|0)+e|0;d=d+1|0;e=k}e=vH(e<<2)|0;d=0;while(1){if((d|0)>=(b|0))break;c[l+(d<<2)>>2]=0;d=d+1|0}f=0;while(1){if((f|0)>=(b|0))break;c[a+(f*20|0)+8>>2]=e;_r(a,f,l);h=a+(f*20|0)|0;i=c[h>>2]|0;j=a+(f*20|0)+4|0;k=i+-2|0;d=1;while(1){if((d|0)>=(i|0))break;m=c[(c[j>>2]|0)+(d<<2)>>2]|0;n=c[a+(m*20|0)>>2]|0;g[e+(d<<2)>>2]=+(k+n-((Zr(a,0,m,l)|0)<<1)|0);d=d+1|0}$r(a,f,l);e=e+(c[h>>2]<<2)|0;f=f+1|0}D_(l);return}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;D_(c[e>>2]|0);c[e>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;f=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0;d=f}}while(0);return}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0;f=0;g=0.0;while(1){if((f|0)>=(b|0))break;j=c[a+(f<<2)>>2]|0;i=+h[j+(d<<3)>>3]-+h[j+(e<<3)>>3];f=f+1|0;g=i*i+g}return +(+C(+g))}function hs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((e|0)>(d|0)){c[46103]=a;_0(b+(d<<2)|0,1-d+e|0,4,76)}return}function is(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[46103]|0;e=+g[f+(c[a>>2]<<2)>>2];d=+g[f+(c[b>>2]<<2)>>2];return (e<d?-1:e>d&1)|0}function js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;if((d|0)<(e|0)){ks(a,b,d,e,f);g=c[f>>2]|0;f=g+-1|0;js(a,b,d,f);g=g+1|0;js(a,b,g,e);if(!(ls(a,b,d,f)|0))js(a,b,d,f);if(!(ls(a,b,g,e)|0))js(a,b,g,e)}l=h;return}function ks(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,n=0;g=g2()|0;g=b+(((((g2()|0)<<16|g)>>>0)%((1-d+e|0)>>>0)|0)+d<<2)|0;j=c[g>>2]|0;k=b+(d<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;l=+h[a+(j<<3)>>3];g=d+1|0;d=e;a:while(1){if((g|0)>=(d|0))break;while(1){if((g|0)>=(d|0))break;if(!(+h[a+(c[b+(g<<2)>>2]<<3)>>3]<=l))break;g=g+1|0}while(1){if((g|0)>=(d|0))continue a;e=b+(d<<2)|0;i=c[e>>2]|0;if(!(+h[a+(i<<3)>>3]>l))break;d=d+-1|0}n=b+(g<<2)|0;m=c[n>>2]|0;c[n>>2]=i;c[e>>2]=m;g=g+1|0;d=d+-1|0}n=g+((+h[a+(c[b+(g<<2)>>2]<<3)>>3]>l)<<31>>31)|0;c[f>>2]=n;n=b+(n<<2)|0;c[k>>2]=c[n>>2];c[n>>2]=j;return}function ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=1;while(1){f=d+1|0;if(!((d|0)<(e|0)&(g|0)!=0))break;g=+h[a+(c[b+(d<<2)>>2]<<3)>>3]>+h[a+(c[b+(f<<2)>>2]<<3)>>3]?0:g;d=f}return g|0}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,A=0.0;x=l;l=l+16|0;v=4;w=C_(40)|0;c[w>>2]=0;t=x;o=0;u=$(23,b*40|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;r=0;while(1){if((d|0)>=(b|0))break;s=(c[(c[a+(d<<2)>>2]|0)+4>>2]|0)+r|0;d=d+1|0;r=s}o=0;s=$(23,r*24|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;m=0;while(1){if((m|0)>=(b|0))break;n=u+(m*40|0)|0;c[n>>2]=s+(d*24|0);q=a+(m<<2)|0;f=0;g=1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;k=1797693134862315708145274.0e284;while(1){e=c[q>>2]|0;if((f|0)>=(c[e+4>>2]|0))break;e=c[e>>2]|0;A=+h[e+(f<<4)>>3];y=+h[e+(f<<4)+8>>3];h[s+(d*24|0)>>3]=A;h[s+(d*24|0)+8>>3]=y;c[s+(d*24|0)+16>>2]=n;c[s+(d*24|0)+20>>2]=0;f=f+1|0;d=d+1|0;g=g<A?g:A;i=i>A?i:A;j=j>y?j:y;k=k<y?k:y}c[u+(m*40|0)+4>>2]=s+((d+-1|0)*24|0);h[u+(m*40|0)+8>>3]=g;h[u+(m*40|0)+16>>3]=k;h[u+(m*40|0)+24>>3]=i;h[u+(m*40|0)+32>>3]=j;m=m+1|0}c[t>>2]=r;c[t+4>>2]=b;w=D3(184416,1,w|0,v|0)|0;v=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;q=s;m=s;n=u}else{d=0;q=s;m=s;n=u}}else{d=z;q=0;m=s;n=u}}else{d=z;q=0;m=0;n=0}while(1){if(d|0){o=0;ia(103,u|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}else{e=17;break}}o=0;d=aa(77,q|0,t|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}if(!d){o=0;d=ca(24,a|0,b|0,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}}o=0;ia(103,u|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s}else{e=24;break}}if((e|0)==17)d=0;else if((e|0)==24)d=(d|0)==0&1;D_(w|0);l=x;return d|0}function ns(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;q=v;o=v+8|0;p=v+4|0;c[b+8>>2]=0;u=vH(c[b>>2]<<2)|0;f=c[b>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=a+(e*24|0);e=e+1|0}_0(u,f,4,78);m=0;g=0;f=0;h=0;a:while(1){if((m|0)>=(c[b>>2]|0)){s=0;d=g;t=h;break}n=u+(m<<2)|0;e=c[n>>2]|0;c[o>>2]=e;a=c[e+16>>2]|0;if((c[a>>2]|0)==(e|0))e=c[a+4>>2]|0;else e=e+-24|0;c[p>>2]=e;k=0;a=g;j=h;while(1){if((k|0)>=2)break;switch(ps(o,p)|0){case -1:{g=0;h=a;while(1){if((g|0)>=(j|0))break;i=qs(c[h>>2]|0,e)|0;if(i|0){s=i;d=a;t=j;break a}g=g+1|0;h=c[h+4>>2]|0}g=vH(12)|0;if(!j){f=0;a=g}else c[f+4>>2]=g;c[g+8>>2]=f;c[g>>2]=e;c[g+4>>2]=0;c[e+20>>2]=g;h=j+1|0;break}case 1:{e=e+20|0;g=c[e>>2]|0;if(!g){r=19;break a}do if((j|0)!=1){if((g|0)==(a|0)){a=c[a+4>>2]|0;c[a+8>>2]=0;break}if((g|0)==(f|0)){f=c[f+8>>2]|0;c[f+4>>2]=0;break}else{i=g+4|0;h=c[g+8>>2]|0;c[h+4>>2]=c[i>>2];c[(c[i>>2]|0)+8>>2]=h;break}}else{a=0;f=0}while(0);D_(g);c[e>>2]=0;g=f;h=j+-1|0;break}default:{g=f;h=j}}e=c[n>>2]|0;f=c[e+16>>2]|0;if((e|0)==(c[f+4>>2]|0))f=c[f>>2]|0;else f=e+24|0;c[p>>2]=f;k=k+1|0;f=g;j=h}m=m+1|0;g=a;h=j}if((r|0)==19){Pw(1,92219,q)|0;bb(184416,1)}e=0;while(1){if((e|0)>=(t|0))break;r=c[d+4>>2]|0;D_(d);e=e+1|0;d=r}D_(u);l=v;return s|0}function os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=l;l=l+48|0;o=D+24|0;n=D+16|0;u=D;e=0;a:while(1){if((e|0)>=(b|0)){e=0;break}z=c[a+(e<<2)>>2]|0;A=c[z>>2]|0;c[u>>2]=c[A>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[u+12>>2]=c[A+12>>2];A=e+1|0;B=d+(e*40|0)+8|0;p=d+(e*40|0)+24|0;q=d+(e*40|0)+32|0;g=d+(e*40|0)+16|0;e=A;while(1){if((e|0)>=(b|0)){e=A;continue a}i=c[a+(e<<2)>>2]|0;j=+h[B>>3];k=+h[d+(e*40|0)+24>>3];m=!(j<=k);f=+h[d+(e*40|0)+8>>3];if((((!(m|!(j>=f))?(r=+h[g>>3],s=+h[d+(e*40|0)+32>>3],r<=s):0)?(t=+h[d+(e*40|0)+16>>3],r>=t):0)?(E=+h[p>>3],!(!(E<=k)|!(E>=f))):0)?(E=+h[q>>3],!(!(E<=s)|!(E>=t))):0){c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];if(wU(n,o)|0){e=1;break a}}else C=11;if((((((C|0)==11?(C=0,v=+h[p>>3],!(!(f<=v)|!(f>=j))):0)?(w=+h[d+(e*40|0)+16>>3],x=+h[q>>3],w<=x):0)?(y=+h[g>>3],!(!(w>=y)|(!(k<=v)|m))):0)?(E=+h[d+(e*40|0)+32>>3],!(!(E<=x)|!(E>=y))):0)?(m=c[i>>2]|0,c[n>>2]=c[z>>2],c[n+4>>2]=c[z+4>>2],c[o>>2]=c[m>>2],c[o+4>>2]=c[m+4>>2],c[o+8>>2]=c[m+8>>2],c[o+12>>2]=c[m+12>>2],wU(n,o)|0):0){e=1;break a}e=e+1|0}}l=D;return e|0}function ps(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[a>>2]|0;a=c[b>>2]|0;d=+h[e>>3]-+h[a>>3];if(!(d!=0.0)){d=+h[e+8>>3]-+h[a+8>>3];if(d==0.0)a=0;else a=d>0.0?1:-1}else a=d>0.0?1:-1;return a|0}function qs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;g=m+32|0;i=m+24|0;j=m+16|0;k=m;f=m+48|0;rs(a,b,f);d=f+8|0;e=c[d>>2]|0;do if((e|0)>0)d=0;else{if((e|0)<0){rs(b,a,f);d=c[d>>2]|0;if((d|0)>0){d=0;break}if((d|0)<0)d=3;else{d=c[f>>2]|0;d=ss(b,a,(d|0)>-1?d:0-d|0)|0}if(!(ts(a,b,i,j,d)|0)){d=0;break}}else{d=c[f>>2]|0;if((d|0)==(c[f+4>>2]|0)){d=ss(a,b,0)|0;d=(ss(a,b,(d|0)<=(ss(a,b,1)|0)&1)|0)<<1}else d=ss(a,b,(d|0)>-1?d:0-d|0)|0;if(!(ts(a,b,i,j,d)|0)){d=0;break}}h[k>>3]=+h[i>>3];h[k+8>>3]=+h[j>>3];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];d=us(a,b,g)|0}while(0);l=m;return d|0}function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;i=+h[a>>3];j=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0)){a=c[e>>2]|0;e=a}else{e=a+24|0;a=a+24|0}g=+h[e>>3]-i;f=+h[a+8>>3]-j;e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0)){a=c[e>>2]|0;e=a}else{e=b+24|0;a=b+24|0}k=+h[e>>3]-i;l=+h[a+8>>3]-j;j=(+h[b+8>>3]-j)*g-(+h[b>>3]-i)*f;b=j==0.0?0:j>0.0?1:-1;c[d>>2]=b;j=l*g-k*f;a=j==0.0?0:j>0.0?1:-1;c[d+4>>2]=a;c[d+8>>2]=O(a,b)|0;return}function ss(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;k=+h[a>>3];l=+h[a+8>>3];f=c[a+16>>2]|0;if((c[f+4>>2]|0)==(a|0))a=c[f>>2]|0;else a=a+24|0;j=+h[a>>3];i=+h[a+8>>3];do if(d){a=c[b+16>>2]|0;if((c[a+4>>2]|0)==(b|0)){b=c[a>>2]|0;break}else{b=b+24|0;break}}while(0);g=+h[b>>3];e=+h[b+8>>3];if(k==j)if(k==g)b=(ws(l,e,i)|0)!=-1&1;else b=0;else b=ws(k,g,j)|0;return b|0}function ts(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do if((f|0)<1)g=0;else{n=+h[a>>3];p=+h[a+8>>3];g=c[a+16>>2]|0;if((c[g+4>>2]|0)==(a|0))g=c[g>>2]|0;else g=a+24|0;l=+h[g>>3];j=+h[g+8>>3];m=+h[b>>3];o=+h[b+8>>3];g=c[b+16>>2]|0;if((c[g+4>>2]|0)==(b|0))g=c[g>>2]|0;else g=b+24|0;k=+h[g>>3];i=+h[g+8>>3];b:do switch(f|0){case 3:{if(n==l){h[d>>3]=n;i=(o-i)/(m-k)*(n-k)+i;break b}if(m==k){h[d>>3]=m;i=(p-j)/(n-l)*(m-l)+j;break b}else{k=(o-i)/(m-k);l=(p-j)/(n-l);o=o-k*m;p=p-l*n;i=k-l;h[d>>3]=(p-o)/i;i=(k*p-o*l)/i;break b}}case 2:{if((ss(a,b,0)|0)==-1)if((ss(b,a,1)|0)==-1){f=(ss(b,a,0)|0)==-1;l=f?l:n;k=m;j=f?j:p;i=o}else{l=k;k=m;j=i;i=o}else if((ss(a,b,1)|0)!=-1)if((ss(b,a,0)|0)==-1){k=n;i=p}else{g=0;break a}else{l=m;j=o}h[d>>3]=(k+l)*.5;i=(i+j)*.5;break}case 1:if((o-p)*(n-l)==(m-n)*(p-j)){h[d>>3]=m;i=o;break b}else{h[d>>3]=k;break b}default:{g=1;break a}}while(0);h[e>>3]=i;g=1}while(0);return g|0}function us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;o=+h[a>>3];p=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0))e=c[e>>2]|0;else e=a+24|0;m=+h[e>>3];j=+h[e+8>>3];k=+h[b>>3];n=+h[b+8>>3];e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0))e=c[e>>2]|0;else e=b+24|0;i=+h[e>>3];g=+h[e+8>>3];a:do if(!(o!=m&k!=i)){do if(o==m){f=+h[d>>3];if(o==f?p==+h[d+8>>3]:0)break;if(!(m==f)){r=18;break a}if(!(j==+h[d+8>>3])){r=18;break a}}while(0);if(k==i){f=+h[d>>3];if(k==f?n==+h[d+8>>3]:0){e=0;break}if(i==f?g==+h[d+8>>3]:0)e=0;else r=18}else e=0}else r=18;while(0);if((r|0)==18)if(0>1){e=c[15686]|0;p=+h[d+8>>3];h[q>>3]=+h[d>>3];h[q+8>>3]=p;g1(e,92248,q)|0;vs(1,a);vs(2,b);e=1}else e=1;l=s;return e|0}function vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0;k=l;l=l+48|0;j=k;f=c[15686]|0;g=+h[b>>3];i=+h[b+8>>3];d=c[b+16>>2]|0;if((c[d+4>>2]|0)==(b|0)){d=c[d>>2]|0;e=d}else{e=b+24|0;d=b+24|0}n=+h[e>>3];m=+h[d+8>>3];c[j>>2]=a;h[j+8>>3]=g;h[j+16>>3]=i;h[j+24>>3]=n;h[j+32>>3]=m;g1(f,92276,j)|0;l=k;return}function ws(a,b,c){a=+a;b=+b;c=+c;return (a==b|b==c?0:(a<b?b<c:c<b)?1:-1)|0}function xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;a:do if(!(lv(a,d)|0))a=0;else{f=uH(d<<3)|0;a=0;while(1){if((a|0)<(d|0))e=0;else break;while(1){if((e|0)==(d|0))break;h[f+(e<<3)>>3]=0.0;e=e+1|0}h[f+(a<<3)>>3]=1.0;mv(c[b+(a<<2)>>2]|0,f,d);a=a+1|0}D_(f);f=0;while(1){if((f|0)>=(d|0)){a=1;break a}e=b+(f<<2)|0;a=0;while(1){if((a|0)==(f|0))break;j=(c[e>>2]|0)+(a<<3)|0;i=+h[j>>3];g=(c[b+(a<<2)>>2]|0)+(f<<3)|0;h[j>>3]=+h[g>>3];h[g>>3]=i;a=a+1|0}f=f+1|0}}while(0);return a|0}function ys(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=b<<3;p=vH(q)|0;q=vH(q)|0;r=b*30|0;n=(d|0)<(b|0)?d:b;o=b+-1|0;m=(g|0)==0;d=0;i=0;a:while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;do{b:do if(m)d=0;else{d=0;while(1){if((d|0)==(b|0)){d=0;break b}h[k+(d<<3)>>3]=+((g2()|0)%100|0|0);d=d+1|0}}while(0);while(1){if((d|0)==(i|0))break;g=c[e+(d<<2)>>2]|0;As(k,0,o,-+zs(g,0,o,k),g);d=d+1|0}j=+Bs(k,0,o)}while(j<1.0e-10);Cs(k,0,o,1.0/j,k);d=0;do{Ds(q,0,o,k);Es(a,b,b,k,p);Ds(k,0,o,p);g=0;while(1){if((g|0)==(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}s=d;d=d+1|0;j=+Bs(k,0,o);if(!((s|0)<(r|0)&!(j<1.0e-10)))break a;Cs(k,0,o,1.0/j,k);l=+zs(k,0,o,q)}while(+B(+l)<.999);h[f+(i<<3)>>3]=l*j;i=i+1|0}while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;g=0;while(1){if((g|0)>=(b|0)){g=0;break}h[k+(g<<3)>>3]=+((g2()|0)%100|0|0);g=g+1|0}while(1){if((g|0)>=(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}Cs(k,0,o,1.0/+Bs(k,0,o),k);h[f+(i<<3)>>3]=0.0;i=i+1|0}m=n+-1|0;i=0;while(1){if((i|0)>=(m|0))break;a=f+(i<<3)|0;b=i+1|0;j=+h[a>>3];g=i;k=b;while(1){if((k|0)>=(n|0))break;l=+h[f+(k<<3)>>3];s=j<l;j=s?l:j;g=s?k:g;k=k+1|0}if((g|0)==(i|0)){i=b;continue}k=e+(i<<2)|0;Ds(p,0,o,c[k>>2]|0);s=e+(g<<2)|0;Ds(c[k>>2]|0,0,o,c[s>>2]|0);Ds(c[s>>2]|0,0,o,p);h[f+(g<<3)>>3]=+h[a>>3];h[a>>3]=j;i=b}D_(p);D_(q);return (d|0)<=(r|0)|0}function zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0;f=0.0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;f=+h[d>>3]*+h[c>>3]+f;e=e+-1|0;d=d+8|0;c=c+8|0}return +f}function As(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[c>>3]+ +h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Bs(a,b,c){a=a|0;b=b|0;c=c|0;return +(+C(+(+zs(a,b,c,a))))}function Cs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;h[c>>3]=+h[d>>3];e=e+-1|0;d=d+8|0;c=c+8|0}return}function Es(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;g=0.0;i=0;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[k>>2]|0)+(i<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Fs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0;k=c[i>>2]|0;if(!k){o=d<<2;j=C_(O(o,f)|0)|0;o=C_(o)|0}else{o=d<<2;j=F_(c[k>>2]|0,O(o,f)|0)|0;o=F_(k,o)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<2)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){j=0;l=0.0}else break;while(1){if((j|0)>=(e|0))break;p=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0;l=p}g[(c[n>>2]|0)+(k<<2)>>2]=l;k=k+1|0}i=i+1|0}return}function Gs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0;k=c[i>>2]|0;if(!k){j=C_(O(d<<3,f)|0)|0;o=C_(d<<2)|0}else{j=F_(c[k>>2]|0,O(d<<3,f)|0)|0;o=F_(k,d<<2)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<3)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){l=0.0;j=0}else break;while(1){if((j|0)>=(e|0))break;l=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0}h[(c[n>>2]|0)+(k<<3)>>3]=l;k=k+1|0}i=i+1|0}return}function Hs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0;j=c[f>>2]|0;if(!j){i=C_(O(d*20|0,e)|0)|0;q=C_(d<<2)|0}else{i=F_(c[j>>2]|0,O(d*20|0,e)|0)|0;q=F_(j,d<<2)|0}c[f>>2]=q;j=0;while(1){if((j|0)>=(d|0)){f=0;break}c[q+(j<<2)>>2]=i;j=j+1|0;i=i+(e<<2)|0}while(1){if((f|0)>=(d|0))break;l=c[a+(f*20|0)+4>>2]|0;m=c[a+(f*20|0)+8>>2]|0;n=c[a+(f*20|0)>>2]|0;o=q+(f<<2)|0;i=0;while(1){if((i|0)>=(e|0))break;p=b+(i<<2)|0;k=0.0;j=0;while(1){if((j|0)>=(n|0))break;k=+h[(c[p>>2]|0)+(c[l+(j<<2)>>2]<<3)>>3]*+g[m+(j<<2)>>2]+k;j=j+1|0}g[(c[o>>2]|0)+(i<<2)>>2]=k;i=i+1|0}f=f+1|0}return}function Is(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+h[d>>3]+c;d=d+8|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;h[b>>3]=+h[b>>3]-c;b=b+8|0;a=a+-1|0}return}function Js(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=(a|0))break;h[b+(c<<3)>>3]=+((g2()|0)%500|0|0);c=c+1|0}Is(a,b);return}function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;k=c[a+(j*20|0)>>2]|0;l=a+(j*20|0)+8|0;m=a+(j*20|0)+4|0;f=0.0;i=0;while(1){if((i|0)>=(k|0))break;f=+h[d+(c[(c[m>>2]|0)+(i<<2)>>2]<<3)>>3]*+g[(c[l>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;f=0.0;i=0;while(1){if((i|0)==(b|0))break;f=+h[d+(i<<3)>>3]*+g[(c[k>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]-+h[c+(e<<3)>>3];e=e+1|0}return}function Ns(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[c+(e<<3)>>3]+ +h[b+(e<<3)>>3];e=e+1|0}return}function Os(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]*c;e=e+1|0}return}function Ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=+h[b+(d<<3)>>3];d=d+1|0}return}function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=+h[c+(e<<3)>>3]*+h[b+(e<<3)>>3]+d;e=e+1|0}return +d}function Rs(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;d=-1.e+50;while(1){if((c|0)>=(a|0))break;e=+B(+(+h[b+(c<<3)>>3]));c=c+1|0;d=e>d?e:d}return +d}function Ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0;j=0;while(1){if((j|0)<(b|0)){g=0.0;i=0}else break;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[a+(i<<2)>>2]|0)+(j<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Ts(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+g[d>>2]+c;d=d+4|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;g[b>>2]=+g[b>>2]-c;b=b+4|0;a=a+-1|0}return}function Us(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0;e=0;while(1){if((e|0)>=(b|0)){h=0;j=0;m=b;break}g[d+(e<<2)>>2]=0.0;e=e+1|0}while(1){if((j|0)>=(b|0))break;l=+g[c+(j<<2)>>2];k=j+1|0;f=+g[a+(h<<2)>>2]*l;i=k;e=h;while(1){e=e+1|0;if((i|0)==(b|0))break;p=+g[a+(e<<2)>>2];n=+g[c+(i<<2)>>2]*p+f;o=d+(i<<2)|0;g[o>>2]=+g[o>>2]+p*l;f=n;i=i+1|0}o=d+(j<<2)|0;g[o>>2]=+g[o>>2]+f;h=h+m|0;j=k;m=m+-1|0}return}function Vs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]-+g[c+(e<<2)>>2];e=e+1|0}return}function Ws(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[c+(e<<2)>>2]+ +g[b+(e<<2)>>2];e=e+1|0}return}function Xs(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0;e=0;while(1){if((e|0)>=(a|0))break;f=b+(e<<2)|0;g[f>>2]=+g[d+(e<<2)>>2]*c+ +g[f>>2];e=e+1|0}return}function Ys(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]*c;e=e+1|0}return}function Zs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;c[d+(e<<2)>>2]=c[b+(e<<2)>>2];e=e+1|0}return}function _s(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=d+ +g[c+(e<<2)>>2]*+g[b+(e<<2)>>2];e=e+1|0}return +d}function $s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=b;d=d+1|0}return}function at(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;g[c+(d<<2)>>2]=b;d=d+1|0}return}function bt(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;c=-1000000015047466219876688.0e6;d=0;while(1){if((d|0)>=(a|0))break;e=+B(+(+g[b+(d<<2)>>2]));c=e>c?e:c;d=d+1|0}return +c}function ct(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];g[d>>2]=e*e;c=c+1|0}return}function dt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e!=0.0)g[d>>2]=1.0/e;c=c+1|0}return}function et(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0;d=0;while(1){if((d|0)>=(a|0))break;e=+g[b+(d<<2)>>2];if(e>=0.0)g[c+(d<<2)>>2]=+C(+e);d=d+1|0}return}function ft(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e>0.0)g[d>>2]=1.0/+C(+e);c=c+1|0}return}function gt(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=0;if(b&3)if(!(4%(b>>>0)|0))b=4;else b=O(4/((ht(b)|0)>>>0)|0,b)|0;c[a+8>>2]=b;a=a+4|0;b=c[a>>2]|0;a:do if(b|0)while(1){if(!b)break a;d=c[b>>2]|0;D_(c[b+4>>2]|0);D_(b);b=d}while(0);c[a>>2]=0;return}function ht(a){a=a|0;var b=0,c=0;c=4;a:while(1){b=c;while(1){if((b|0)==(a|0))break a;if((b|0)<=(a|0))break;b=b-a|0}c=b;a=a-b|0}return a|0}function it(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(!b){d=c[a+8>>2]|0;e=vH(8)|0;f=vH(O(c[46085]|0,d)|0)|0;c[e+4>>2]=f;b=0;while(1){if((b|0)>=(c[46085]|0))break;jt(f+(O(b,d)|0)|0,a);b=b+1|0}b=a+4|0;c[e>>2]=c[b>>2];c[b>>2]=e;b=c[a>>2]|0}c[a>>2]=c[b>>2];return b|0}function jt(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[b>>2]=a;return}function kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=uH(b<<3)|0;l=a+8|0;f=c[l>>2]|0;lt(a,b,m);Js(b,d);h=0;i=0;while(1){if((i|0)>=(b|0))break;h=(c[a+(i*20|0)>>2]|0)+h|0;i=i+1|0}h=vH(h<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;c[a+(j*20|0)+8>>2]=h;k=c[a+(j*20|0)>>2]|0;g[h>>2]=+(1-k|0);i=1;while(1){if((i|0)>=(k|0))break;g[h+(i<<2)>>2]=1.0;i=i+1|0}h=h+(k<<2)|0;j=j+1|0}i=Dq(a,d,m,b,.001,e)|0;D_(c[l>>2]|0);h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;f=f+(c[a+(h*20|0)>>2]<<2)|0;h=h+1|0}D_(m);return i>>>31|0}function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;i=0;while(1){if((i|0)>=(b|0))break;if(c[k>>2]|0){l=c[a+(i*20|0)>>2]|0;m=a+(i*20|0)+8|0;j=a+(i*20|0)+16|0;e=0.0;f=1;while(1){if((f|0)>=(l|0))break;e=e+ +g[(c[j>>2]|0)+(f<<2)>>2]*+g[(c[m>>2]|0)+(f<<2)>>2];f=f+1|0}h[d+(i<<3)>>3]=e}i=i+1|0}return}function mt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=vH(f<<2)|0;i=b<<3;g=0;while(1){if((g|0)>=(f|0))break;c[r+(g<<2)>>2]=vH(i)|0;g=g+1|0}p=vH(f<<3)|0;q=vH(b<<2)|0;g=vH(O(i,b)|0)|0;i=0;while(1){if((i|0)>=(b|0))break;c[q+(i<<2)>>2]=g;g=g+(b<<3)|0;i=i+1|0}k=0;o=1;while(1){if((k|0)>=(b|0))break;l=a+(k<<2)|0;m=q+(k<<2)|0;i=0;while(1){if((i|0)==(o|0))break;n=a+(i<<2)|0;g=0;j=0.0;while(1){if((g|0)>=(d|0))break;s=j+ +(O(c[(c[n>>2]|0)+(g<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0)|0);g=g+1|0;j=s}h[(c[q+(i<<2)>>2]|0)+(k<<3)>>3]=j;h[(c[m>>2]|0)+(i<<3)>>3]=j;i=i+1|0}k=k+1|0;o=o+1|0}ys(q,b,f,r,p,1)|0;i=0;while(1){if((i|0)>=(f|0)){g=0;break}l=r+(i<<2)|0;m=e+(i<<2)|0;k=0;while(1){if((k|0)<(d|0)){g=0;j=0.0}else break;while(1){if((g|0)>=(b|0))break;s=+h[(c[l>>2]|0)+(g<<3)>>3]*+(c[(c[a+(g<<2)>>2]|0)+(k<<2)>>2]|0)+j;g=g+1|0;j=s}h[(c[m>>2]|0)+(k<<3)>>3]=j;k=k+1|0}i=i+1|0}while(1){if((g|0)>=(f|0))break;D_(c[r+(g<<2)>>2]|0);g=g+1|0}D_(r);D_(p);D_(c[q>>2]|0);D_(q);return}function nt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;j=f+20|0;i=f+12|0;h=f+8|0;c[g>>2]=e;c[i>>2]=0;c[h>>2]=0;$u(c[a>>2]|0,d,d<<2,j);Hs(c[j>>2]|0,a,d,b,i);Gs(a,c[i>>2]|0,b,d,b,h);D_(c[c[i>>2]>>2]|0);D_(c[i>>2]|0);e=(ys(c[h>>2]|0,b,1,g,f,1)|0)&255;l=f;return e|0}function ot(){c[46143]=0;D_(c[46144]|0);D_(c[46145]|0);D_(c[46146]|0);c[46144]=0;c[46145]=0;c[46146]=0;return}function pt(a){a=a|0;D_(c[a+36>>2]|0);return}function qt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;o=r+64|0;q=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;n=d+16|0;g=c[n>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{g=c[n>>2]|0;j=c[g+12>>2]|0;k=c[j+8>>2]|0;c[q>>2]=k;g=c[c[g+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))p=11;else p=8;break}case 112:{if((b$(g,102695)|0)==0?(rt(c[j+44>>2]|0,k)|0)!=0:0)p=11;else p=8;break}default:p=8}do if((p|0)==8)if((k|0)<3){c[b+40>>2]=(c[j>>2]|0)==0?0:2;p=17;break}else{g=b+40|0;c[g>>2]=0;break}else if((p|0)==11){g=b+40|0;c[g>>2]=1;if((k|0)<=2)p=17}while(0);if((p|0)==17){i=st(d,q,e,f)|0;p=21;break a}i=vH(k<<4)|0;j=j+44|0;if((c[g>>2]|0)==1){p=c[j>>2]|0;s=e;h[i>>3]=+h[p>>3]*.013888888888888888+s;e=f;h[i+8>>3]=+h[p+8>>3]*.013888888888888888+e;h[i+16>>3]=+h[p+16>>3]*.013888888888888888-s;h[i+24>>3]=+h[p+24>>3]*.013888888888888888+e;h[i+32>>3]=+h[p+32>>3]*.013888888888888888-s;h[i+40>>3]=+h[p+40>>3]*.013888888888888888-e;h[i+48>>3]=+h[p+48>>3]*.013888888888888888+s;h[i+56>>3]=+h[p+56>>3]*.013888888888888888-e;p=21;break a}g=0;while(1){if((g|0)>=(k|0)){p=21;break a}p=c[j>>2]|0;u=+h[p+(g<<4)>>3];s=+h[p+(g<<4)+8>>3];t=+C(+(s*s+u*u));h[i+(g<<4)>>3]=(e/t+1.0)*u*.013888888888888888;h[i+(g<<4)+8>>3]=(f/t+1.0)*s*.013888888888888888;g=g+1|0}}case 2:{c[q>>2]=4;p=vH(64)|0;d=c[(c[n>>2]|0)+12>>2]|0;v=+h[d+32>>3];t=+h[d+40>>3];o=~~+h[d+16>>3];d=~~+h[d+24>>3];u=-e;s=-f;tt(i,o,d,u,s);c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];i=p+16|0;n=~~v;tt(j,n,d,e,s);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=p+32|0;d=~~t;tt(k,n,d,e,f);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=p+48|0;tt(m,o,d,u,f);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=p;p=21;break a}case 3:{c[b+40>>2]=2;i=st(d,q,e,f)|0;p=21;break a}default:{c[o>>2]=c[c[(c[n>>2]|0)+8>>2]>>2];Pw(1,92312,o)|0;g=1;break a}}else{c[q>>2]=4;u=+h[g+32>>3]*.5+e;v=+h[g+40>>3]*.5+f;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;p=21}while(0);if((p|0)==21){c[b+36>>2]=i;g=c[q>>2]|0;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function rt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;do if((b|0)==4){c=+h[a+8>>3];b=a+16|0;d=+h[a+24>>3];if(c==d){if(!(+h[a+40>>3]==+h[a+56>>3])){b=0;break}if(!(+h[a>>3]==+h[a+48>>3])){b=0;break}b=+h[b>>3]==+h[a+32>>3];break}if((+h[a>>3]==+h[b>>3]?+h[a+32>>3]==+h[a+48>>3]:0)?c==+h[a+56>>3]:0)b=d==+h[a+40>>3];else b=0}else b=0;while(0);return b&1|0}function st(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0.0,i=0,j=0,k=0.0,l=0;f=xx(a,99679)|0;if(!f)f=0;else f=a2(f)|0;i=(f|0)<3?20:f;j=vH(i<<4)|0;a=a+16|0;g=1.0/+(i|0);f=0;while(1){if((f|0)>=(i|0))break;l=c[a>>2]|0;k=g*+(f|0)*6.283185307179586;h[j+(f<<4)>>3]=(+h[l+32>>3]*.5+d)*+E(+k);h[j+(f<<4)+8>>3]=(+h[l+40>>3]*.5+e)*+F(+k);f=f+1|0}c[b>>2]=i;return j|0}function tt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;h[a>>3]=+(b|0)*.013888888888888888+d;h[a+8>>3]=+(c|0)*.013888888888888888+e;return}function ut(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0;j=+h[a>>3];i=+h[a+8>>3];e=1;f=i;g=j;while(1){if((e|0)>=(b|0))break;k=a+16|0;l=+h[k>>3];m=+h[a+24>>3];e=e+1|0;f=m>f?m:f;g=l>g?l:g;i=m<i?m:i;j=l<j?l:j;a=k}h[c>>3]=j;h[c+8>>3]=i;h[d>>3]=g;h[d+8>>3]=f;return}function vt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;n=r+64|0;p=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;o=d+16|0;g=c[o>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{m=c[(c[o>>2]|0)+12>>2]|0;n=m+8|0;k=c[n>>2]|0;c[p>>2]=k;b:do if((k|0)>2){i=vH(k<<4)|0;j=m+44|0;g=0;while(1){if((g|0)>=(k|0))break b;d=c[j>>2]|0;h[i+(g<<4)>>3]=+h[d+(g<<4)>>3]*.013888888888888888;h[i+(g<<4)+8>>3]=+h[d+(g<<4)+8>>3]*.013888888888888888;g=g+1|0}}else i=st(d,p,0.0,0.0)|0;while(0);g=c[c[(c[o>>2]|0)+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))g=1;else q=13;break}case 112:{if((b$(g,102695)|0)==0?(rt(i,c[p>>2]|0)|0)!=0:0)g=1;else q=13;break}default:q=13}do if((q|0)==13){if((c[n>>2]|0)<3?c[m>>2]|0:0){g=2;break}g=0}while(0);c[b+40>>2]=g;q=20;break a}case 2:{c[p>>2]=4;q=vH(64)|0;o=c[(c[o>>2]|0)+12>>2]|0;t=+h[o+16>>3];v=+h[o+24>>3];u=+h[o+32>>3];s=+h[o+40>>3];wt(i,t,v);c[q>>2]=c[i>>2];c[q+4>>2]=c[i+4>>2];c[q+8>>2]=c[i+8>>2];c[q+12>>2]=c[i+12>>2];i=q+16|0;wt(j,u,v);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=q+32|0;wt(k,u,s);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=q+48|0;wt(m,t,s);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=q;q=20;break a}case 3:{c[b+40>>2]=2;i=st(d,p,0.0,0.0)|0;q=20;break a}default:{c[n>>2]=c[c[(c[o>>2]|0)+8>>2]>>2];Pw(1,92348,n)|0;g=1;break a}}else{c[p>>2]=4;u=+h[g+32>>3]*.5;v=+h[g+40>>3]*.5;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;q=20}while(0);if((q|0)==20){g=c[p>>2]|0;if(e!=1.0|f!=1.0)xt(i,g,e,f);c[b+36>>2]=i;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function wt(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b*.013888888888888888;h[a+8>>3]=c*.013888888888888888;return}function xt(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0;e=0;while(1){if((e|0)>=(b|0))break;h[a>>3]=+h[a>>3]*c;f=a+8|0;h[f>>3]=+h[f>>3]*d;a=a+16|0;e=e+1|0}return}function yt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0;r=l;l=l+128|0;o=r+112|0;n=r+96|0;m=r+80|0;f=r+64|0;p=r+48|0;q=r+32|0;j=r+16|0;k=r;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];xr(p,n,o);g=b+16|0;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];xr(q,n,o);c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];xr(j,n,o);i=e+16|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];xr(k,n,o);c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];do if(zt(f,m,n,o)|0){f=c[b+40>>2]|0;if(f&1|0?c[e+40>>2]&1|0:0){f=1;break}if(f&2|0?c[e+40>>2]&2|0:0){s=+h[g>>3]-+h[b>>3]+ +h[i>>3]-+h[e>>3];t=+h[a>>3]-+h[d>>3];u=+h[a+8>>3]-+h[d+8>>3];f=!(u*u+t*t>s*s*.25);break}f=c[46144]|0;if(!f){c[46144]=vH(c[46143]<<4)|0;i=vH(c[46143]<<4)|0;c[46145]=i;f=c[46144]|0}else i=c[46145]|0;v=c[b+36>>2]|0;b=b+32|0;g=c[b>>2]|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];At(v,g,o,f);a=c[e+36>>2]|0;g=e+32|0;e=c[g>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];At(a,e,o,i);if(!(Bt(f,i,c[b>>2]|0,c[g>>2]|0)|0)){f=c[46144]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];if(Ct(m,n,o)|0?(k=c[46145]|0,v=c[g>>2]|0,c[o>>2]=c[f>>2],c[o+4>>2]=c[f+4>>2],c[o+8>>2]=c[f+8>>2],c[o+12>>2]=c[f+12>>2],Dt(k,v,o)|0):0){f=1;break}f=c[46145]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];if(!(Ct(m,n,o)|0))f=0;else{q=c[46144]|0;v=c[b>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];f=(Dt(q,v,o)|0)!=0}}else f=1}else f=0;while(0);l=r;return f&1|0}function zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((+h[a>>3]<=+h[d>>3]?+h[c>>3]<=+h[b>>3]:0)?+h[a+8>>3]<=+h[d+8>>3]:0)a=+h[c+8>>3]<=+h[b+8>>3]&1;else a=0;return a|0}function At(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=c+8|0;e=0;while(1){if((e|0)>=(b|0))break;h[d>>3]=+h[c>>3]+ +h[a>>3];h[d+8>>3]=+h[f>>3]+ +h[a+8>>3];e=e+1|0;a=a+16|0;d=d+16|0}return}function Bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+112|0;s=A+96|0;r=A+80|0;q=A+64|0;p=A+48|0;u=A+32|0;v=A+16|0;w=A;x=d+-1|0;y=e+-1|0;z=d<<1;t=e<<1;f=0;g=0;h=0;i=0;while(1){B=a+(f<<4)|0;C=a+(((x+f|0)%(d|0)|0)<<4)|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[C>>2];c[s+4>>2]=c[C+4>>2];c[s+8>>2]=c[C+8>>2];c[s+12>>2]=c[C+12>>2];wr(u,r,s);o=b+(g<<4)|0;n=b+(((y+g|0)%(e|0)|0)<<4)|0;c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];wr(v,r,s);c[q>>2]=c[45770];c[q+4>>2]=c[45771];c[q+8>>2]=c[45772];c[q+12>>2]=c[45773];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];j=+yr(q,r,s);c[q>>2]=c[C>>2];c[q+4>>2]=c[C+4>>2];c[q+8>>2]=c[C+8>>2];c[q+12>>2]=c[C+12>>2];c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];k=zr(q,r,s)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[B>>2];c[s+4>>2]=c[B+4>>2];c[s+8>>2]=c[B+8>>2];c[s+12>>2]=c[B+12>>2];m=zr(q,r,s)|0;c[p>>2]=c[C>>2];c[p+4>>2]=c[C+4>>2];c[p+8>>2]=c[C+8>>2];c[p+12>>2]=c[C+12>>2];c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];if(Ar(p,q,r,s,w)|0){f=1;break}n=(k|0)==0;o=(m|0)==0;do if(j!=0.0|(m|k|0)!=0)if(!(j>=0.0))if(o){f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{g=(g+1|0)%(e|0)|0;i=i+1|0;break}else if(n){g=(g+1|0)%(e|0)|0;i=i+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0}while(0);if(!((i|0)<(t|0)&((h|0)<(z|0)&((i|0)<(e|0)|(h|0)<(d|0))))){f=0;break}}l=A;return f|0}function Ct(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[a>>3];if((e<=+h[c>>3]?e>=+h[b>>3]:0)?(d=+h[a+8>>3],d<=+h[c+8>>3]):0)a=d>=+h[b+8>>3]&1;else a=0;return a|0}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,l=0;e=c[46146]|0;if(!e){e=vH(c[46143]<<4)|0;c[46146]=e}i=d+8|0;g=0;while(1){if((g|0)>=(b|0))break;h[e+(g<<4)>>3]=+h[a+(g<<4)>>3]-+h[d>>3];h[e+(g<<4)+8>>3]=+h[a+(g<<4)+8>>3]-+h[i>>3];g=g+1|0}d=b+-1|0;f=0.0;a=0;a:while(1){if((a|0)>=(b|0)){l=19;break}g=(d+a|0)%(b|0)|0;j=+h[e+(a<<4)+8>>3];i=j==0.0;if(i?+h[e+(g<<4)+8>>3]==0.0:0){if(+h[e+(g<<4)>>3]*+h[e+(a<<4)>>3]<0.0){e=1;break}}else l=11;do if((l|0)==11){l=0;k=+h[e+(g<<4)+8>>3];if(!(j>=0.0)|!(k<=0.0)?!(k>=0.0)|!(j<=0.0):0)break;j=(k*+h[e+(a<<4)>>3]-j*+h[e+(g<<4)>>3])/(k-j);if(j==0.0){e=1;break a}if(j>0.0)if(k==0.0|i){f=f+.5;break}else{f=f+1.0;break}}while(0);a=a+1|0}if((l|0)==19)e=((~~f|0)%2|0|0)==1&1;return e|0}function Et(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=vH(b<<2)|0;i=O(b,b)|0;d=vH(i<<2)|0;c[j>>2]=d;at(i,0.0,d);d=1;while(1){if((d|0)>=(b|0)){d=0;g=0;i=b;break}c[j+(d<<2)>>2]=(c[j>>2]|0)+((O(d,b)|0)<<2);d=d+1|0}while(1){if((g|0)>=(b|0))break;h=j+(g<<2)|0;e=g;f=d;while(1){if((e|0)==(b|0))break;k=c[a+(f<<2)>>2]|0;c[(c[h>>2]|0)+(e<<2)>>2]=k;c[(c[j+(e<<2)>>2]|0)+(g<<2)>>2]=k;e=e+1|0;f=f+1|0}d=d+i|0;g=g+1|0;i=i+-1|0}return j|0}function Ft(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;var k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=c[d+(f<<2)>>2]|0;C=c[a+4>>2]|0;D=c[a>>2]|0;E=c[a+48>>2]|0;F=c[a+52>>2]|0;G=c[a+56>>2]|0;a:do if((h|0)<1)d=0;else{Ht(M,C,E,F,G,j);H=c[a+28>>2]|0;I=c[a+32>>2]|0;J=c[a+36>>2]|0;K=c[a+12>>2]|0;L=c[a+16>>2]|0;f=0;e=0;d=-1;while(1){if((f|0)>=(C|0))break;if((f|0)>=(e|0)){d=d+1|0;if((d|0)==(G|0)){e=C;d=G}else e=c[F+(d<<2)>>2]|0}c[L+(c[E+(f<<2)>>2]<<2)>>2]=d;f=f+1|0}z=c[a+40>>2]|0;A=I+(C+-1<<2)|0;d=0;e=0;while(1){if(e<<24>>24==0&(d|0)<(h|0)){k=-1.0e9;f=0;e=1}else break a;b:while(1){x=f;while(1){if((x|0)>=(C|0))break b;f=c[E+(x<<2)>>2]|0;y=+g[M+(f<<2)>>2];l=y;w=x;m=0.0;while(1){g[z+(f<<2)>>2]=m;f=w+1|0;if((f|0)>=(C|0)){v=0;break}l=(c[L+(f<<2)>>2]|0)>(c[L+(w<<2)>>2]|0)?l+j:l;a=c[E+(f<<2)>>2]|0;m=+g[M+(a<<2)>>2];if(+B(+(m-l))>1.0e-09){v=1;break}w=f;m=m-y;f=a}n=x;while(1){if((n|0)>(w|0)){a=0;o=x;break}o=c[E+(n<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;a=0;l=-+g[b+(o<<2)>>2];while(1){if((a|0)>=(C|0))break;if((a|0)!=(o|0))l=+g[M+(a<<2)>>2]*+g[p+(a<<2)>>2]+l;a=a+1|0}g[H+(o<<2)>>2]=l/-+g[p+(o<<2)>>2]-+g[z+(o<<2)>>2];n=n+1|0}c:while(1){if((o|0)>(w|0)){m=0.0;q=0.0;r=0;break}n=c[L+(c[E+(o<<2)>>2]<<2)>>2]|0;if((n|0)==(G|0))r=f;else{r=c[F+(n<<2)>>2]|0;r=(f|0)<(r|0)?f:r}p=o;while(1){if((p|0)>=(r|0)){p=o;break}n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]<y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((p|0)>=(r|0))break;n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]==y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((o|0)>=(r|0)){o=r;continue c}n=c[E+(o<<2)>>2]|0;if(+g[H+(n<<2)>>2]>y){c[K+(a<<2)>>2]=n;a=a+1|0}o=o+1|0}}while(1){if((r|0)>=(a|0))break;o=c[K+(r<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;l=0.0;n=0;while(1){if((n|0)==(r|0))break;l=l-+g[p+(c[K+(n<<2)>>2]<<2)>>2];n=n+1|0}N=l*2.0;u=p+(o<<2)|0;s=+g[u>>2];l=N+m;s=(N*y+m*q-+g[H+(o<<2)>>2]*s)/(l-s);g[I+(r<<2)>>2]=s;m=l-+g[u>>2];q=s;r=r+1|0}p=(a|0)==(C|0);if(p)g[A>>2]=y;u=a+-1|0;m=0.0;q=0.0;o=u;while(1){if((o|0)<=-1)break;r=c[K+(o<<2)>>2]|0;t=c[D+(r<<2)>>2]|0;l=0.0;n=o;while(1){n=n+1|0;if((n|0)>=(a|0))break;l=l-+g[t+(c[K+(n<<2)>>2]<<2)>>2]}l=l*2.0;t=t+(r<<2)|0;N=+g[t>>2];s=l+m;N=(l*y+m*q-+g[H+(r<<2)>>2]*N)/(s-N);g[J+(o<<2)>>2]=N;m=s-+g[t>>2];q=N;o=o+-1|0}if(p){g[J>>2]=y;s=0.0;n=-1;p=0}else{s=0.0;n=-1;p=0}while(1){if((a|0)<=(p|0))break;q=+g[J+(p<<2)>>2];if((p|0)>0)l=+g[I+(p+-1<<2)>>2];else l=q;do if(q<l){o=l>y;if(q<y){l=o?y:l;m=l;break}if(o){m=q;l=q}else m=q}else m=q;while(0);N=+B(+(m-y))*+(a-p|0)+ +B(+(l-y))*+(p|0);t=N>s;s=t?N:s;n=t?p:n;p=p+1|0}if((n|0)>-1)break;if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0){k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;x=f;continue}k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];x=f}m=+g[J+(n<<2)>>2];if(!n)q=m;else q=+g[I+(n+-1<<2)>>2];if(v){t=c[E+(f<<2)>>2]|0;l=+g[M+(t<<2)>>2];l=((c[L+(t<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0)?l-j:l)-+g[z+(c[K+(u<<2)>>2]<<2)>>2]}else l=1.0e9;l=m<l?m:l;k=q>k?q:k;do if(l<k){o=k>y;if(l<y){l=o?y:k;m=l;break}if(o)m=l;else{m=l;l=k}}else{m=l;l=k}while(0);o=0;while(1){if((o|0)>=(n|0))break;t=c[K+(o<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+l;o=o+1|0}while(1){if((n|0)>=(a|0))break;t=c[K+(n<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+m;n=n+1|0}if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0)k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;else k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];a=x;while(1){if((a|0)>(w|0))break;c[E+(a<<2)>>2]=c[K+(a-x<<2)>>2];a=a+1|0}if(e<<24>>24!=0?+B(+(l-y))<.01:0)e=+B(+(m-y))<.01;else e=0;e=e&1}Ts(C,M);Gt(M,E,F,G,i);d=d+1|0}}while(0);return d|0}function Gt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=0;while(1){if((g|0)>=(e|0))break;c[f+(g<<2)>>2]=c[a+(c[b+((c[d+(g<<2)>>2]|0)+-1<<2)>>2]<<2)>>2];g=g+1|0}return}function Ht(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0.0,j=0,k=0,l=0,m=0;i=-1.0e9;k=0;j=-1;m=0;while(1){if((m|0)>=(b|0))break;if((m|0)<(k|0))l=k;else{j=j+1|0;if((j|0)==(f|0))k=b;else k=c[e+(j<<2)>>2]|0;if((m|0)>0)i=+g[a+(c[d+(m+-1<<2)>>2]<<2)>>2]+h;else i=-1.0e9;hs(a,d,m,k+-1|0);l=k}k=a+(c[d+(m<<2)>>2]<<2)|0;if(+g[k>>2]<i)g[k>>2]=i;k=l;m=m+1|0}return}function It(a){a=a|0;D_(c[c[a>>2]>>2]|0);D_(c[a>>2]|0);D_(c[a+8>>2]|0);D_(c[a+28>>2]|0);D_(c[a+32>>2]|0);D_(c[a+36>>2]|0);D_(c[a+40>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);D_(a);return}function Jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=vH(60)|0;c[k>>2]=0;l=k+4|0;c[l>>2]=b;c[k+48>>2]=d;c[k+52>>2]=e;c[k+56>>2]=f;c[k>>2]=Et(a,b)|0;i=b<<2;j=vH(i)|0;c[k+8>>2]=j;h=0;b=0;a=-1;while(1){if((h|0)>=(c[l>>2]|0))break;g=a+1|0;if((h|0)>=(b|0)){b=c[((g|0)==(f|0)?l:e+(g<<2)|0)>>2]|0;a=g}c[j+(c[d+(h<<2)>>2]<<2)>>2]=a;h=h+1|0}c[k+28>>2]=vH(i)|0;c[k+32>>2]=vH(i)|0;c[k+36>>2]=vH(i)|0;c[k+40>>2]=vH(i)|0;c[k+12>>2]=vH(i)|0;c[k+16>>2]=vH(i)|0;c[k+20>>2]=vH(i)|0;c[k+24>>2]=vH(i)|0;return k|0}function Kt(){gt(184592,24);c[46151]=0;return}function Lt(){return it(184592)|0}function Mt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function Nt(a){a=a|0;var b=0;b=c[46151]|0;c[a+16>>2]=b;c[46151]=b+1;return}function Ot(a){a=a|0;var b=0,d=0;d=a+20|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;if(!b)jt(a,184592);return}function Pt(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;return}function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+16|0;o=x;c[o>>2]=e;q=b<<2;v=vH(q)|0;m=b<<3;w=vH(m)|0;u=as(a,b)|0;a=0;while(1){if((a|0)>=(b|0))break;k=u+(a<<2)|0;j=0;while(1){if((j|0)==(b|0))break;s=(c[k>>2]|0)+(j<<2)|0;c[s>>2]=c[s>>2]<<8;j=j+1|0}a=a+1|0}if(!d)qa(92381,92389,283,92403);s=vH(m)|0;a=0;while(1){if((a|0)>=(b|0))break;h[s+(a<<3)>>3]=+h[d+(a<<3)>>3];a=a+1|0}Rt(s,b);i=0.0;n=0.0;m=1;while(1){if((m|0)>=(b|0))break;j=u+(m<<2)|0;k=d+(m<<3)|0;a=0;while(1){if((a|0)==(m|0))break;y=c[(c[j>>2]|0)+(a<<2)>>2]|0;r=+h[k>>3]-+h[d+(a<<3)>>3];i=r*r*(1.0/+(O(y,y)|0))+i;n=+B(+r)*(1.0/+(y|0))+n;a=a+1|0}m=m+1|0}r=n/i;a=0;while(1){if((a|0)>=(b|0))break;y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*r;a=a+1|0}St(b,o,f,d,u);k=vH(O(q,b)|0)|0;j=0;while(1){if((j|0)>=(b|0)){k=1;break}m=k+((O(j,b)|0)<<2)|0;c[v+(j<<2)>>2]=m;o=u+(j<<2)|0;i=0.0;a=0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+(c[(c[o>>2]|0)+(a<<2)>>2]|0);p=-1.0/(p*p);g[m+(a<<2)>>2]=p;i=i-p}a=a+1|0}g[m+(j<<2)>>2]=i;j=j+1|0}while(1){if((k|0)>=(b|0)){j=0;break}i=+h[d+(k<<3)>>3];j=u+(k<<2)|0;a=0;while(1){if((a|0)==(k|0))break;y=(c[j>>2]|0)+(a<<2)|0;n=+(c[y>>2]|0);p=i-+h[d+(a<<3)>>3];p=n*n-p*p;q=~~+C(+p);q=p>0.0?q:0;c[(c[u+(a<<2)>>2]|0)+(k<<2)>>2]=q;c[y>>2]=q;a=a+1|0}k=k+1|0}while(1){if((j|0)>=(b|0)){q=0;a=0;break}n=+h[e+(j<<3)>>3];m=w+(j<<3)|0;h[m>>3]=0.0;o=u+(j<<2)|0;k=v+(j<<2)|0;a=0;i=0.0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+g[(c[k>>2]|0)+(a<<2)>>2]*+(c[(c[o>>2]|0)+(a<<2)>>2]|0);i=i+(n>=+h[e+(a<<3)>>3]?-p:p);h[m>>3]=i}a=a+1|0}j=j+1|0}while(1){if(!(a<<24>>24==0&(q|0)<200)){t=42;break}if((Eq(v,e,w,b,f,b,1)|0)<0){a=1;break}else{a=1;o=0}while(1){if((o|0)>=(b|0))break;p=+h[e+(o<<3)>>3];k=u+(o<<2)|0;m=v+(o<<2)|0;i=0.0;j=0;while(1){if((j|0)==(b|0))break;do if((j|0)!=(o|0)){n=+g[(c[m>>2]|0)+(j<<2)>>2]*+(c[(c[k>>2]|0)+(j<<2)>>2]|0);if(!(p>=+h[e+(j<<3)>>3])){i=i+n;break}else{i=i+-n;break}}while(0);j=j+1|0}j=w+(o<<3)|0;p=+h[j>>3];if(i!=p?+B(+(1.0-i/p))>1.0e-05:0){h[j>>3]=i;a=0}o=o+1|0}q=q+1|0}a:do if((t|0)==42){i=1.0/r;a=0;while(1){if((a|0)>=(b|0)){a=0;break a}y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*i;y=e+(a<<3)|0;h[y>>3]=+h[y>>3]*i;a=a+1|0}}while(0);D_(c[u>>2]|0);D_(u);D_(c[v>>2]|0);D_(v);D_(s);D_(w);l=x;return a|0}function Rt(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0;c=0;d=0.0;while(1){if((c|0)>=(b|0))break;e=+h[a+(c<<3)>>3]+d;c=c+1|0;d=e}d=d/+(b|0);c=0;while(1){if((c|0)>=(b|0))break;f=a+(c<<3)|0;h[f>>3]=+h[f>>3]-d;c=c+1|0}f=b+-1|0;Cs(a,0,f,1.0/+Bs(a,0,f),a);return}function St(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;k=Tt(f,a)|0;l=vH(8)|0;if(!e){f=0;j=0}else{g=vH(a<<3)|0;f=0;while(1){if((f|0)>=(a|0))break;h[g+(f<<3)>>3]=+h[e+(f<<3)>>3];f=f+1|0}Rt(g,a);f=g;j=g}Ut(k,a,b,l,f,d);e=0;while(1){if((e|0)==1)break;g=l+(e<<3)|0;i=b+(e<<2)|0;f=0;while(1){if((f|0)>=(a|0))break;d=+C(+(+B(+(+h[g>>3]))));m=(c[i>>2]|0)+(f<<3)|0;h[m>>3]=+h[m>>3]*d;f=f+1|0}e=e+1|0}D_(c[k>>2]|0);D_(k);D_(l);D_(j);return}function Tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+16|0;f=o;n=b<<2;e=vH(O(n,b)|0)|0;n=vH(n)|0;d=0;while(1){if((d|0)>=(b|0))break;c[n+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}m=Wt(a,b,f)|0;h=+g[f>>2];e=0;k=1;while(1){if((e|0)>=(b|0))break;f=a+(e<<2)|0;i=m+(e<<2)|0;j=n+(e<<2)|0;d=0;while(1){if((d|0)==(k|0))break;p=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);p=+g[m+(d<<2)>>2]+ +g[i>>2]-p*p-h;g[(c[j>>2]|0)+(d<<2)>>2]=p;g[(c[n+(d<<2)>>2]|0)+(e<<2)>>2]=p;d=d+1|0}e=e+1|0;k=k+1|0}D_(m);l=o;return n|0}function Ut(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0;r=b<<3;q=vH(r)|0;r=vH(r)|0;n=1.0-g;o=(b|0)<1?b:1;p=b+-1|0;k=(f|0)==0;j=0;a:while(1){if((j|0)>=(o|0))break;l=c[d+(j<<2)>>2]|0;do{i=0;while(1){if((i|0)==(b|0))break;h[l+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}if(k)i=0;else{As(l,0,p,-+zs(f,0,p,l),f);i=0}while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p)}while(g<1.0e-10);Cs(l,0,p,1.0/g,l);do{Ds(r,0,p,l);Vt(a,b,b,l,q,f);Ds(l,0,p,q);i=0;while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p);if(g<1.0e-10)break a;Cs(l,0,p,1.0/g,l);m=+zs(l,0,p,r)}while(+B(+m)<n);h[e+(j<<3)>>3]=m*g;j=j+1|0}while(1){if((j|0)>=(o|0))break;k=c[d+(j<<2)>>2]|0;i=0;while(1){if((i|0)>=(b|0)){i=0;break}h[k+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}while(1){if((i|0)>=(j|0))break;s=d+(i<<2)|0;n=-+zs(c[s>>2]|0,0,p,k);As(k,0,p,n,c[s>>2]|0);i=i+1|0}Cs(k,0,p,1.0/+Bs(k,0,p),k);h[e+(j<<3)>>3]=0.0;j=j+1|0}l=o+-1|0;j=0;while(1){if((j|0)>=(l|0))break;a=e+(j<<3)|0;f=j+1|0;g=+h[a>>3];i=j;k=f;while(1){if((k|0)>=(o|0))break;n=+h[e+(k<<3)>>3];s=g<n;g=s?n:g;i=s?k:i;k=k+1|0}if((i|0)==(j|0)){j=f;continue}b=d+(j<<2)|0;Ds(q,0,p,c[b>>2]|0);s=d+(i<<2)|0;Ds(c[b>>2]|0,0,p,c[s>>2]|0);Ds(c[s>>2]|0,0,p,q);h[e+(i<<3)>>3]=+h[a>>3];h[a>>3]=g;j=f}D_(q);D_(r);return}function Vt(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0.0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;m=a+(j<<2)|0;k=0.0;l=0;while(1){if((l|0)>=(d|0))break;k=+h[e+(l<<3)>>3]*+g[(c[m>>2]|0)+(l<<2)>>2]+k;l=l+1|0}h[f+(j<<3)>>3]=k;j=j+1|0}j=b+-1|0;if(i|0)As(f,0,j,-+zs(f,0,j,i),i);return}function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;j=vH(b<<2)|0;k=1.0/+(b|0);e=0.0;i=0;while(1){if((i|0)>=(b|0))break;l=a+(i<<2)|0;f=0.0;h=0;while(1){if((h|0)==(b|0))break;m=+(c[(c[l>>2]|0)+(h<<2)>>2]|0);m=m*m;f=m+f;h=h+1|0;e=m+e}g[j+(i<<2)>>2]=k*f;i=i+1|0}g[d>>2]=e/+(O(b,b)|0);return j|0}function Xt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;q=O(d,d)|0;r=vH(q<<3)|0;s=vH(d<<3)|0;e=0;while(1){if((e|0)>=(d|0))break;h[s+(e<<3)>>3]=+h[c+(e<<3)>>3];e=e+1|0}e=0;while(1){if((e|0)>=(q|0))break;h[r+(e<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}p=d+-1|0;g=0;o=0;a:while(1){if((o|0)<(p|0)){f=0.0;e=o}else{l=21;break}while(1){if((e|0)>=(d|0))break;t=+B(+(+h[a+((O(e,d)|0)+o<<3)>>3]));m=t<f;n=m?g:e;f=m?f:t;e=e+1|0;g=n}if(f<1.0e-10){l=33;break}i=O(g,d)|0;n=O(o,d)|0;e=o;while(1){if((e|0)>=(d|0))break;l=a+(e+i<<3)|0;t=+h[l>>3];m=a+(e+n<<3)|0;h[l>>3]=+h[m>>3];h[m>>3]=t;e=e+1|0}m=c+(g<<3)|0;t=+h[m>>3];j=c+(o<<3)|0;h[m>>3]=+h[j>>3];h[j>>3]=t;m=o+1|0;k=a+(n+o<<3)|0;e=m;while(1){if((e|0)>=(d|0)){o=m;continue a}l=O(e,d)|0;f=+h[a+(l+o<<3)>>3]/+h[k>>3];i=c+(e<<3)|0;h[i>>3]=+h[i>>3]-+h[j>>3]*f;i=0;while(1){if((i|0)>=(d|0))break;u=a+(i+l<<3)|0;h[u>>3]=+h[u>>3]-+h[a+(i+n<<3)>>3]*f;i=i+1|0}e=e+1|0}}if((l|0)==21){f=+h[a+(q+-1<<3)>>3];if(+B(+f)<1.0e-10)l=33;else{h[b+(p<<3)>>3]=+h[c+(p<<3)>>3]/f;e=0;while(1){if((e|0)>=(p|0)){e=0;break}g=d-e|0;i=g+-2|0;f=+h[c+(i<<3)>>3];j=b+(i<<3)|0;h[j>>3]=f;k=O(i,d)|0;g=g+-1|0;while(1){if((g|0)>=(d|0))break;t=f-+h[b+(g<<3)>>3]*+h[a+(g+k<<3)>>3];h[j>>3]=t;g=g+1|0;f=t}h[j>>3]=f/+h[a+(k+i<<3)>>3];e=e+1|0}while(1){if((e|0)>=(d|0)){e=0;break}h[c+(e<<3)>>3]=+h[s+(e<<3)>>3];e=e+1|0}while(1){if((e|0)>=(q|0))break;h[a+(e<<3)>>3]=+h[r+(e<<3)>>3];e=e+1|0}D_(r);D_(s)}}if((l|0)==33){k3(92418)|0;D_(r);D_(s)}return}function Yt(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=l;l=l+16|0;r=s;nr();Kt();Ir();c[46147]=jb[d&3]()|0;Kr();q=r+8|0;p=jb[d&3]()|0;e=0.0;f=0.0;a:while(1){n=(p|0)==0;o=p+8|0;while(1){if(!(Er()|0)){Fr(r);e=+h[r>>3];f=+h[q>>3]}if(!n){if(Er()|0)break;g=+h[o>>3];if(g<f)break;if(g==f?+h[p>>3]<e:0)break}if(Er()|0)break a;t=Gr()|0;b=Tr(t)|0;v=Sr(t)|0;i=Sr(v)|0;m=Ur(t)|0;u=Vr(v)|0;j=c[t+20>>2]|0;Nt(j);rr(c[t+8>>2]|0,a[t+16>>0]|0,j);rr(c[v+8>>2]|0,a[v+16>>0]|0,j);Rr(t);Dr(v);Rr(v);v=+h[m+8>>3]>+h[u+8>>3];t=v&1;k=v?u:m;u=or(k,v?m:u)|0;m=Lr(u,t)|0;Or(b,m);rr(u,(t^1)&255,j);Ot(j);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,k))}b=Mr(m,i)|0;if(!b)continue;Br(m,b,+Mt(b,k))}b=Pr(p)|0;k=Sr(b)|0;i=or(Vr(b)|0,p)|0;m=Lr(i,0)|0;Or(b,m);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,p))}i=Lr(i,1)|0;Or(m,i);b=Mr(i,k)|0;if(b|0)Br(i,b,+Mt(b,p));p=jb[d&3]()|0}b=c[46090]|0;while(1){b=Sr(b)|0;if((b|0)==(c[46091]|0))break;pr(c[b+8>>2]|0)}l=s;return}function Zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g+8|0;e=g;do if((ay(a)|0)!=1){_t(a);if(!b)b=$t(a)|0;d=au(a,b)|0;if(0){h=c[15686]|0;c[e>>2]=ry(b)|0;c[e+4>>2]=d;g1(h,92434,e)|0}if((d|0)<0){Pw(1,92468,f)|0;break}else{bu(a);cu(a,b);du(a,b);eu(a,d);break}}else{h=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0}while(0);l=g;return b|0}function _t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=ay(a)|0;d=O(d,d)|0;b=Sy(a)|0;while(1){if(!b)break;e=b+16|0;f=c[(c[e>>2]|0)+112>>2]|0;g=f+24|0;c[g>>2]=d;c[g+4>>2]=0;h[f+48>>3]=10.0;f=(mu(a,b)|0)==0;e=c[(c[e>>2]|0)+112>>2]|0;c[e>>2]=f?d:0;c[e+4>>2]=f?0:0;b=Ty(a,b)|0}return}function $t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=(ay(a)|0)<3;b=Sy(a)|0;a:do if(!e){while(1){if(!b)break;e=c[(c[b+16>>2]|0)+112>>2]|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)lu(a,b,0);b=Ty(a,b)|0}d=0;b=0;e=Sy(a)|0;while(1){if(!e)break a;h=c[(c[e+16>>2]|0)+112>>2]|0;g=c[h>>2]|0;h=c[h+4>>2]|0;f=((d|0)<0)<<31>>31;f=h>>>0>f>>>0|(h|0)==(f|0)&g>>>0>d>>>0;d=f?g:d;b=f?e:b;e=Ty(a,e)|0}}while(0);return b|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[b+16>>2]|0)+112>>2]|0;f=d+24|0;e=c[f>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[d+32>>2]=0;iu(a,b);d=Sy(a)|0;e=y3(0,e|0,32)|0;f=z;b=0;while(1){if(!d)break;h=(c[(c[d+16>>2]|0)+112>>2]|0)+24|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if((g|0)==(e|0)&(h|0)==(f|0)){b=-1;break}i=((b|0)<0)<<31>>31;b=h>>>0>i>>>0|(h|0)==(i|0)&g>>>0>b>>>0?g:b;d=Ty(a,d)|0}return b|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0;d=Sy(a)|0;while(1){if(!d)break;b=c[(c[d+16>>2]|0)+112>>2]|0;e=b+16|0;a:do if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)while(1){e=b+8|0;f=e;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[e>>2]=f;c[e+4>>2]=z;b=c[b+32>>2]|0;if(!b)break a;b=c[(c[b+16>>2]|0)+112>>2]|0}while(0);d=Ty(a,d)|0}return}function cu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+40>>3]=6.283185307179586;hu(a,b);return}function du(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+48>>3]=0.0;gu(a,b);return}function eu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+16|0;f=i;g=fu(a,b)|0;if(0){e=c[15686]|0;D1(92524,e)|0;d=0;while(1){if((d|0)>(b|0))break;h[f>>3]=+h[g+(d<<3)>>3];g1(e,92543,f)|0;d=d+1|0}D1(150517,e)|0}d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+112>>2]|0;j=+h[g+(c[e+24>>2]<<3)>>3];e=e+48|0;k=+E(+(+h[e>>3]))*j;f=c[f+132>>2]|0;h[f>>3]=k;h[f+8>>3]=+F(+(+h[e>>3]))*j;d=Ty(a,d)|0}D_(g);l=i;return}function fu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;m=uH((d<<3)+8|0)|0;b=NL(b,nx(c[b+60>>2]|0,0,98262,0)|0,0)|0;a:do if(!b){f=1.0;e=0.0;b=1}else{i=0.0;e=0.0;g=1;b:while(1){if((g|0)>(d|0)){f=i;b=g;break a}f=+c2(b,k);if(!(f>0.0)){f=i;b=g;break a}i=f>.02?f:.02;e=i+e;j=g+1|0;h[m+(g<<3)>>3]=e;b=c[k>>2]|0;while(1){g=a[b>>0]|0;if(!(g<<24>>24)){g=j;continue b}if(!(g<<24>>24==58|(B$(g<<24>>24)|0)!=0)){g=j;continue b}b=b+1|0}}}while(0);while(1){if((b|0)>(d|0))break;i=e+f;h[m+(b<<3)>>3]=i;b=b+1|0;e=i}l=n;return m|0}function gu(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0.0;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+32>>2]|0))e=0.0;else e=+h[d+48>>3]-+h[d+40>>3]*.5;g=Jx(a,b)|0;while(1){if(!g)break;d=c[g>>2]&3;f=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((f|0)==(b|0))f=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[f+16>>2]|0)+112>>2]|0;if((c[d+32>>2]|0)==(b|0)?(i=d+48|0,!(+h[i>>3]!=10.0)):0){j=+h[d+40>>3];h[i>>3]=j*.5+e;e=j+e;d=d+16|0;if(!((c[d>>2]|0)==0&(c[d+4>>2]|0)==0))gu(a,f)}g=Kx(a,g,b)|0}return}function hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0;e=c[(c[b+16>>2]|0)+112>>2]|0;f=e+8|0;g=+h[e+40>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+((c[f+4>>2]|0)>>>0));f=Jx(a,b)|0;while(1){if(!f)break;e=c[f>>2]&3;d=c[((e|0)==3?f:f+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?f:f+-48|0)+40>>2]|0;e=c[(c[d+16>>2]|0)+112>>2]|0;if(((c[e+32>>2]|0)==(b|0)?(i=e+40|0,!(+h[i>>3]!=0.0)):0)?(j=e+8|0,h[i>>3]=g*(+((c[j>>2]|0)>>>0)+4294967296.0*+((c[j+4>>2]|0)>>>0)),e=e+16|0,!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)):0)hu(a,d);f=Kx(a,f,b)|0}return}function iu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+16|0;n=p;o=nx(b,2,98515,0)|0;c[n+4>>2]=0;c[n>>2]=0;ju(n,d);j=(o|0)==0;a:while(1){k=ku(n)|0;if(!k)break;m=k+16|0;h=c[(c[(c[m>>2]|0)+112>>2]|0)+24>>2]|0;g=Jx(b,k)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)continue a;if(!((!j?(a[(yx(g,o)|0)>>0]|0)==48:0)?!(b$(yx(g,o)|0,135312)|0):0)){d=c[g>>2]&3;e=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(k|0))e=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[e+16>>2]|0)+112>>2]|0;f=d+24|0;q=f;r=c[q+4>>2]|0;if(i>>>0<r>>>0|((i|0)==(r|0)?h>>>0<(c[q>>2]|0)>>>0:0)){r=f;c[r>>2]=h;c[r+4>>2]=i;c[d+32>>2]=k;r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;q=r;q=s3(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;c[r>>2]=q;c[r+4>>2]=z;ju(n,e)}}g=Kx(b,g,k)|0}}l=p;return}function ju(a,b){a=a|0;b=b|0;var d=0,e=0;d=uH(8)|0;c[d>>2]=b;b=a+4|0;e=c[b>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=d;c[b>>2]=d;return}function ku(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=c[d>>2]|0;c[a>>2]=c[d+4>>2];D_(d);if(!(c[a>>2]|0))c[a+4>>2]=0}else b=0;return b|0}function lu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c[c[(c[b+16>>2]|0)+112>>2]>>2]|0;g=Jx(a,b)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)!=(d|0)?(j=c[(c[e+16>>2]|0)+112>>2]|0,f=j,k=c[f+4>>2]|0,i>>>0<k>>>0|((i|0)==(k|0)?h>>>0<(c[f>>2]|0)>>>0:0)):0){k=j;c[k>>2]=h;c[k+4>>2]=i;lu(a,e,b)}g=Kx(a,g,b)|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=0;g=Jx(a,b)|0;while(1){if(!g){d=1;break}e=c[g>>2]&3;d=c[((e|0)==3?g:g+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?g:g+-48|0)+40>>2]|0;if((d|0)!=(b|0)){if(f)if((f|0)==(d|0))d=f;else{d=0;break}}else d=f;f=d;g=Kx(a,g,b)|0}return d|0}function nu(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=l;l=l+32|0;e=b;d=nx(a,1,92551,0)|0;g=nx(a,0,92551,0)|0;a=ou(a,g,d,nx(a,0,92556,0)|0)|0;d=a+16|0;f=+C(+(+h[a>>3]+.1));zu(e,0.0,0.0,f,f);c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[d+28>>2]=c[e+28>>2];pu(a);qu(a);ru(a);l=b;return}function ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=uH(72)|0;c[o+60>>2]=0;c[o+56>>2]=a;k=a+16|0;f=0.0;l=0;i=1;j=0;m=0;while(1){g=c[k>>2]|0;if((i|0)>(c[g+180>>2]|0))break;g=ou(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,b,d,e)|0;f=+h[g>>3]+f;if(j|0)c[j+52>>2]=g;l=l+1|0;i=i+1|0;j=g;m=(m|0)==0?g:m}n=Sy(a)|0;g=m;while(1){if(!n)break;i=n+16|0;if(!(c[c[(c[i>>2]|0)+112>>2]>>2]|0)){k=uu(n,d)|0;f=+h[k>>3]+f;if(j|0)c[j+52>>2]=k;c[c[(c[i>>2]|0)+112>>2]>>2]=a;i=l+1|0;j=k;g=(g|0)==0?k:g}else i=l;n=Ty(a,n)|0;l=i}c[o+64>>2]=l;if(!l)f=+wu(a,b);else{h[o+8>>3]=f;f=+vu(o,e)}h[o>>3]=f;c[o+48>>2]=g;return o|0}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;p=l;l=l+176|0;f=p+144|0;n=p+64|0;k=p+32|0;i=p;o=c[a+64>>2]|0;a:do if(o|0){m=uH(o<<2)|0;b=a+48|0;e=0;d=b;while(1){d=c[d>>2]|0;if((e|0)>=(o|0))break;c[m+(e<<2)>>2]=d;e=e+1|0;d=d+52|0}_0(m,o,4,79);j=uH(o<<3)|0;d=0;while(1){if((d|0)>=(o|0))break;h[j+(d<<3)>>3]=+h[c[m+(d<<2)>>2]>>3];d=d+1|0}g=+h[a+8>>3];if(+h[a>>3]==g){i=a+16|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}else{q=+h[a+40>>3];r=+h[a+32>>3];h[i>>3]=+h[a+16>>3];h[i+8>>3]=+h[a+24>>3];s=q-r;g=(r+q-+C(+(g*4.0+s*s)))*.5;h[i+16>>3]=r-g;h[i+24>>3]=q-g;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}if(0){f=c[15686]|0;q=+h[a+24>>3];r=+h[a+32>>3];s=+h[a+40>>3];h[k>>3]=+h[a+16>>3];h[k+8>>3]=q;h[k+16>>3]=r;h[k+24>>3]=s;g1(f,92603,k)|0}e=c[15686]|0;d=0;while(1){if((d|0)>=(o|0))break;k=(c[m+(d<<2)>>2]|0)+16|0;f=i+(d<<5)|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];c[k+28>>2]=c[f+28>>2];if(0){g=+h[f>>3];r=+h[i+(d<<5)+16>>3];u=r*.5;q=+h[i+(d<<5)+8>>3];s=+h[i+(d<<5)+24>>3];t=s*.5;h[n>>3]=+h[j+(d<<3)>>3];h[n+8>>3]=g-u;h[n+16>>3]=q-t;h[n+24>>3]=u+g;h[n+32>>3]=t+q;h[n+40>>3]=s*r;h[n+48>>3]=g;h[n+56>>3]=q;h[n+64>>3]=r;h[n+72>>3]=s;g1(e,92620,n)|0}d=d+1|0}D_(m);D_(j);D_(i);d=0;while(1){b=c[b>>2]|0;if((d|0)>=(o|0))break a;if(!(c[b+60>>2]|0))pu(b);b=b+52|0;d=d+1|0}}while(0);l=p;return}function qu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;f=l;l=l+48|0;e=f;if(c[a+60>>2]|0){k=+h[a+24>>3];i=+h[a+32>>3];g=+h[a+40>>3];b=c[a+56>>2]|0;d=b+16|0;j=c[d>>2]|0;h[j+16>>3]=+h[a+16>>3];h[j+24>>3]=k;a=c[d>>2]|0;h[a+32>>3]=i*.013888888888888888;h[a+40>>3]=g*.013888888888888888;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);su(b);if(0){j=c[15686]|0;a=ry(b)|0;d=c[d>>2]|0;m=+h[d+16>>3];g=+h[d+24>>3];i=+h[d+80>>3];k=+h[d+96>>3]+ +h[d+88>>3];c[e>>2]=a;h[e+8>>3]=m;h[e+16>>3]=g;h[e+24>>3]=i;h[e+32>>3]=k;g1(j,92562,e)|0}}else{b=a+48|0;while(1){b=c[b>>2]|0;if(!b)break;qu(b);b=b+52|0}i=+h[a+32>>3];m=+h[a+40>>3];g=+h[a+16>>3]-i*.5;k=+h[a+24>>3]-m*.5;j=c[(c[a+56>>2]|0)+16>>2]|0;h[j+16>>3]=g;h[j+24>>3]=k;h[j+32>>3]=g+i;h[j+40>>3]=k+m}l=f;return}function ru(a){a=a|0;var b=0,d=0,e=0;e=c[a+64>>2]|0;b=a+48|0;d=0;while(1){b=c[b>>2]|0;if((d|0)>=(e|0))break;ru(b);b=b+52|0;d=d+1|0}D_(a);return}function su(b){b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;d=g+8|0;e=c[46380]|0;if(e|0?(a[(yx(b,e)|0)>>0]|0)==0:0){h[f>>3]=+h[(c[b+16>>2]|0)+80>>3]*.7;Y0(d,92597,f)|0;rx(b,c[46380]|0,d)|0}dM(b);l=g;return}function tu(a,b){a=a|0;b=b|0;var d=0.0;d=+h[c[a>>2]>>3]-+h[c[b>>2]>>3];return (d<0.0?1:(d>0.0)<<31>>31)|0}function uu(a,b){a=a|0;b=b|0;var d=0;d=uH(72)|0;h[d>>3]=+wu(a,b);c[d+60>>2]=1;c[d+56>>2]=a;return d|0}function vu(a,b){a=a|0;b=b|0;var d=0.0;d=+LL(c[a+56>>2]|0,b,0.0,0.0);if(d==0.0)d=+h[a+8>>3];else{d=+C(+(+h[a+8>>3]))+d*2.0;d=d*d}return +d}function wu(a,b){a=a|0;b=b|0;var c=0.0;c=+LL(a,b,1.0,0.0);return +(c==0.0?1.0e3:c*1.0e3)}function xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i;e=0;f=0.0;while(1){if((e|0)>=(a|0))break;j=+h[b+(e<<3)>>3]+f;e=e+1|0;f=j}if(f>+h[d+24>>3]*+h[d+16>>3]+.001)e=0;else{e=uH(a<<5)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[g+16>>2]=c[d+16>>2];c[g+20>>2]=c[d+20>>2];c[g+24>>2]=c[d+24>>2];c[g+28>>2]=c[d+28>>2];yu(a,b,e,0,0.0,1.0,0.0,1.0,g)}l=i;return e|0}function yu(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=+i;j=+j;k=k|0;var m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0;z=l;l=l+112|0;y=z+72|0;u=z+40|0;p=z+32|0;m=z;w=k+16|0;q=+h[w>>3];x=k+24|0;r=+h[x>>3];v=+h[k+16+((!(q<r)&1)<<3)>>3];do if((a|0)>=1){if(0){A=c[15686]|0;B=+h[k+8>>3];h[m>>3]=+h[k>>3];h[m+8>>3]=q;h[m+16>>3]=B;h[m+24>>3]=r;g1(A,92657,m)|0;c[p>>2]=e;g1(A,92703,p)|0}if(!e){i=+h[b>>3];B=v*v;v=i/B;B=B/i;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,1,i,i,i,v>B?v:B,y);break}if((a|0)>(e|0)?(t=+h[b+(e<<3)>>3],n=t<f?f:t,s=t>g?g:t,t=t+i,o=t/v,o=o*o,B=o/s,o=n/o,o=B>o?B:o,o<=j):0){c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,e+1|0,n,s,t,o,y);break}q=i/v;if(0){A=c[15686]|0;c[u>>2]=e;h[u+8>>3]=i;h[u+16>>3]=v;h[u+24>>3]=q;g1(A,92728,u)|0}n=+h[w>>3];if(v==n){o=1.0/q;p=k+8|0;n=+h[k>>3]-n*.5;m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+24>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+16>>3]=B;h[d+(m<<5)+8>>3]=(+h[x>>3]-q)*.5+ +h[p>>3];h[d+(m<<5)>>3]=B*.5+n;n=B+n;m=m+1|0}h[p>>3]=+h[p>>3]-q*.5;m=1}else{o=1.0/q;n=+h[x>>3]*.5+ +h[k+8>>3];m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+16>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+24>>3]=B;h[d+(m<<5)>>3]=(q-+h[w>>3])*.5+ +h[k>>3];h[d+(m<<5)+8>>3]=n-B*.5;n=n-B;m=m+1|0}h[k>>3]=+h[k>>3]+q*.5;m=0}A=k+16+(m<<3)|0;h[A>>3]=+h[A>>3]-q;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a-e|0,b+(e<<3)|0,d+(e<<5)|0,0,0.0,0.0,0.0,1.0,y)}while(0);l=z;return}function zu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Au(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=l;l=l+96|0;C=D+48|0;B=D+24|0;A=D+16|0;z=D+8|0;u=D+80|0;v=D;w=a+16|0;x=d+4|0;y=u+4|0;s=Sy(a)|0;e=0;f=0;i=0;j=0;while(1){if(!s)break;t=Ex(a,s)|0;q=e;r=j;while(1){if(!t)break;e=(b[(c[t+16>>2]|0)+168>>1]|0)==0;do if((s|0)==(c[((c[t>>2]&3|0)==2?t:t+-48|0)+40>>2]|0))if(e){j=q;e=r}else{if(!f){e=uH(96)|0;c[e+84>>2]=uH(((ay(a)|0)<<5)+11520|0)|0;f=e}else e=r;Mm(f,t,c[(c[w>>2]|0)+248>>2]|0);j=q}else if(!e){i=Bu(t,d)|0;j=i+8|0;if(ms(c[j>>2]|0,c[i>>2]|0)|0){k=sU(c[j>>2]|0,c[i>>2]|0)|0;if(!k){Pw(0,92781,z)|0;j=1;e=r;break}else e=t;while(1){if(!e)break;E=e+16|0;F=(c[E>>2]|0)+144|0;Sm(v,e,k,0,c[j>>2]|0,c[i>>2]|0);H=v;G=c[H+4>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;Um(a,e,c[j>>2]|0,c[i>>2]|0,0);e=c[(c[E>>2]|0)+172>>2]|0}Cu(i);j=q;e=r;break}if(!q){qq(u,a);e=YD(a,8,8)|0;Pw(0,92865,A)|0;n=+(e|0);o=+g[d>>2];p=+g[x>>2];if(!(o>=n)&!(p>=n)){m=+g[u>>2];n=+g[y>>2];if(!(!(m<=o)&!(n<=p))){h[C>>3]=m;h[C+8>>3]=n;h[C+16>>3]=o;h[C+24>>3]=p;Pw(3,92981,C)|0}}else{c[B>>2]=e;h[B+8>>3]=o;h[B+16>>3]=p;Pw(3,92931,B)|0}j=1;e=r}else{j=q;e=r}}else{j=q;e=r}while(0);t=Gx(a,t)|0;q=j;r=e}s=Ty(a,s)|0;e=q;j=r}Du(i);if(f|0){D_(c[f+84>>2]|0);D_(j)}l=D;return e|0}function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;m=p+4|0;n=p;e=c[b>>2]&3;f=c[((e|0)==2?b:b+-48|0)+40>>2]|0;e=c[((e|0)==3?b:b+48|0)+40>>2]|0;q=f+16|0;h=c[(c[q>>2]|0)+212>>2]|0;c[m>>2]=h;i=e+16|0;g=c[(c[i>>2]|0)+212>>2]|0;c[n>>2]=g;k=uH(12)|0;b=h;j=g;if(a[(c[q>>2]|0)+118>>0]|0){b=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2]|0;c[m>>2]=b;f=h;h=b}if(!(a[(c[i>>2]|0)+118>>0]|0))i=j;else{i=c[(c[(c[j+16>>2]|0)+140>>2]|0)+48>>2]|0;c[n>>2]=i;e=g;g=i}h=c[(c[(c[h+16>>2]|0)+140>>2]|0)+44>>2]|0;g=c[(c[(c[g+16>>2]|0)+140>>2]|0)+44>>2]|0;if((h|0)<=(g|0))if((g|0)>(h|0)){Eu(k,g,e,h,n,d);b=c[n>>2]|0;g=b;e=n;o=11}else h=i;else{Eu(k,h,f,g,m,d);b=c[m>>2]|0;f=b;g=e;e=m;o=11}while(1){if((o|0)==11){c[e>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];e=g;b=c[m>>2]|0;h=c[n>>2]|0}if((b|0)==(h|0))break;Fu(k,b,0,f,d);Fu(k,h,e,0,d);c[m>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];f=b;g=h;e=n;b=h;o=11}Fu(k,h,e,f,d);l=p;return k|0}function Cu(a){a=a|0;c[a>>2]=0;return}function Du(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Eu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;while(1){h=c[i>>2]|0;if((b|0)<=(e|0))break;Fu(a,h,d,0,g);b=b+-1|0;i=(c[(c[h+16>>2]|0)+140>>2]|0)+48|0;d=h}c[f>>2]=d;return}function Fu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Sy(d)|0;while(1){if(!h)break;i=c[h+16>>2]|0;if(!((h|0)==(f|0)|((h|0)==(e|0)?1:(c[i+212>>2]|0)!=(d|0)))?(a[i+118>>0]|0)==0:0)Gu(b,Pm(h,g,0)|0);h=Ty(d,h)|0}i=d+16|0;d=1;while(1){h=c[i>>2]|0;if((d|0)>(c[h+180>>2]|0))break;h=c[(c[h+184>>2]|0)+(d<<2)>>2]|0;if(!((h|0)==(e|0)|(h|0)==(f|0)))Gu(b,Hu(h,g)|0);d=d+1|0}return}function Gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+4|0;f=c[e>>2]|0;g=a+8|0;d=c[g>>2]|0;do if((f|0)==(c[a>>2]|0))if(!d){d=vH(400)|0;c[g>>2]=d;c[e>>2]=100;break}else{c[e>>2]=f<<1;d=xH(d,f<<3)|0;c[g>>2]=d;break}while(0);g=c[a>>2]|0;c[a>>2]=g+1;c[d+(g<<2)>>2]=b;return}function Hu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0;m=uH(8)|0;b=c[b+16>>2]|0;e=+h[b+16>>3];l=+h[b+24>>3];f=+h[b+32>>3];k=+h[b+40>>3];c[m+4>>2]=4;b=uH(64)|0;c[m>>2]=b;if(!(a[d+8>>0]|0)){p=+g[d>>2];o=+g[d+4>>2];i=(f+e)*.5*(p+-1.0);n=(k+l)*.5*(o+-1.0);j=e*p-i;i=f*p-i;f=k*o-n;e=l*o-n}else{i=+g[d>>2];p=+g[d+4>>2];j=e-i;i=f+i;f=k+p;e=l-p}h[b>>3]=j;h[b+8>>3]=e;h[b+16>>3]=j;h[b+24>>3]=f;h[b+32>>3]=i;h[b+40>>3]=f;h[b+48>>3]=i;h[b+56>>3]=e;return m|0}function Iu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+160|0;n=o+16|0;j=o+8|0;g=o;k=o+24|0;m=uH(ay(b)|0)|0;h=b+16|0;f=c[c[(c[h>>2]|0)+140>>2]>>2]|0;a:do if(!f){g=0;f=0}else{p=ry(b)|0;i=c[46152]|0;c[g>>2]=p;c[g+4>>2]=i;Y0(k,93041,g)|0;i=vA(b,k,1)|0;Az(i,134401,280,1)|0;g=uH(56)|0;c[(c[i+16>>2]|0)+140>>2]=g;c[g>>2]=f;c[g+4>>2]=c[(c[(c[h>>2]|0)+140>>2]|0)+4>>2];while(1){g=c[f+4>>2]|0;if(!g){g=i;f=1;break a}if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,i,m);f=f+16|0}}while(0);h=0;i=Sy(b)|0;while(1){if(!i)break;p=c[i+16>>2]|0;if((a[m+(c[p+120>>2]|0)>>0]|0)==0?(a[p+119>>0]|0)==3:0){if(!g){p=ry(b)|0;g=(c[46152]|0)+f|0;c[j>>2]=p;c[j+4>>2]=g;Y0(k,93041,j)|0;g=vA(b,k,1)|0;Az(g,134401,280,1)|0;p=uH(56)|0;c[(c[g+16>>2]|0)+140>>2]=p;f=f+1|0}Ju(b,i,g,m);h=1}i=Ty(b,i)|0}if(g|0)vD(g)|0;g=Sy(b)|0;while(1){if(!g)break;if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0)){j=ry(b)|0;p=(c[46152]|0)+f|0;c[n>>2]=j;c[n+4>>2]=p;Y0(k,93049,n)|0;p=vA(b,k,1)|0;Az(p,134401,280,1)|0;j=uH(56)|0;c[(c[p+16>>2]|0)+140>>2]=j;Ju(b,g,p,m);vD(p)|0;f=f+1|0}g=Ty(b,g)|0}D_(m);c[46152]=(c[46152]|0)+f;if(d|0)c[d>>2]=f;if(e|0)c[e>>2]=h;i=uH((f<<2)+4|0)|0;h=i;g=wA(b)|0;while(1){if(!g)break;c[h>>2]=g;h=h+4|0;g=xA(g)|0;f=f+-1|0}if(!f){c[h>>2]=0;l=o;return i|0}else qa(93057,93068,134,93075);return 0}function Ju(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a[f+(c[(c[d+16>>2]|0)+120>>2]|0)>>0]=1;Xy(e,d,1)|0;i=Jx(b,d)|0;while(1){if(!i)break;h=c[i>>2]&3;g=c[((h|0)==3?i:i+48|0)+40>>2]|0;if((g|0)==(d|0))g=c[((h|0)==2?i:i+-48|0)+40>>2]|0;if(!(a[f+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,e,f);i=Kx(b,i,d)|0}return}function Ku(a){a=a|0;var b=0;b=vH(24)|0;c[46153]=b;c[b>>2]=Cw(18100,c[4555]|0)|0;c[b+16>>2]=0;c[b+12>>2]=0;c[b+4>>2]=Lu(a)|0;return b|0}function Lu(a){a=a|0;var b=0,d=0;b=vH(16)|0;c[b+12>>2]=0;d=vH(a*20|0)|0;c[b>>2]=d;c[b+8>>2]=d+(a*20|0);c[b+4>>2]=d;return b|0}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;d=Ou(c[46153]|0)|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=0;return d|0}function Nu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b>>2]|0)-(c[d>>2]|0)|0;if(!a)a=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;return a|0}function Ou(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+8|0;a=c[f>>2]|0;b=c[a+4>>2]|0;if((b|0)==(c[a+8>>2]|0)){d=a+12|0;e=c[d>>2]|0;if(!e){a=Lu(((b-(c[a>>2]|0)|0)/20|0)<<1)|0;c[d>>2]=a}else a=e;c[f>>2]=a;b=c[a>>2]|0;c[a+4>>2]=b}c[a+4>>2]=b+20;return b|0}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+12|0;d=c[f>>2]|0;if((d|0)<(b|0)){e=d<<1;e=(e|0)<(b|0)?b:e;b=a+16|0;d=c[b>>2]|0;if(d|0)D_(d);c[b>>2]=vH(e<<3)|0;c[f>>2]=e}return}function Qu(a){a=a|0;var b=0;b=c[a>>2]|0;nb[c[b>>2]&63](b,0,64)|0;c[a+20>>2]=c[a+16>>2];b=c[a+4>>2]|0;c[a+8>>2]=b;c[b+4>>2]=c[b>>2];return}function Ru(a){a=a|0;yw(c[a>>2]|0)|0;Su(c[a+4>>2]|0);D_(c[a+16>>2]|0);D_(a);return}function Su(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;h=g+12|0;c[h>>2]=b;c[h+4>>2]=d;i=c[a>>2]|0;h=(nb[c[i>>2]&63](i,h,1)|0)+8|0;c[h>>2]=Uu(a,e,c[h>>2]|0)|0;if(0>2){i=c[15686]|0;h=ry(e)|0;c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=h;g1(i,93085,f)|0}l=g;return}function Uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+20|0;a=c[e>>2]|0;c[e>>2]=a+8;c[a>>2]=b;c[a+4>>2]=d;return a|0}function Vu(a,b){a=a|0;b=b|0;Jw(c[a>>2]|0,b,a)|0;return}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;c[f>>2]=b;c[f+4>>2]=d;d=c[a>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function Xu(a,b){a=a|0;b=b|0;if((ay(a)|0)==1){a=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}else{Yu(a);if(!((QL(xx(b,93102)|0)|0)<<24>>24))b=tv(a,183128)|0;else b=Zu(a)|0;Cv(a,b,183128);_u(b)}return}function Yu(a){a=a|0;var b=0;b=ez(c[c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]>>2]|0)|0;a=c[46154]|0;if((b|0)!=(a|0)){c[45785]=0;c[46154]=b;c[46155]=nx(b,0,93111,0)|0;c[46156]=nx(c[46154]|0,1,93119,0)|0;c[46157]=nx(c[46154]|0,1,93136,0)|0;a=c[46154]|0}c[46158]=xx(a,93136)|0;nv(183128);c[45784]=1;h[22895]=+LL(c[46154]|0,c[46155]|0,1.0,0.0);c[45786]=c[46156];c[45787]=c[46157];c[45788]=c[46158];return}function Zu(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;e=f;d=f+8|0;b=c[45785]|0;c[45785]=b+1;c[e>>2]=b;Y0(d,93152,e)|0;d=ov(vA(a,d,1)|0)|0;e=d+8|0;b=Sy(a)|0;while(1){if(!b)break;Xy(c[e>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=d;b=Ty(a,b)|0}l=f;return d|0}function _u(a){a=a|0;Bv(a);return}function $u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;av(f,c);bv(a,b,c,f);cv(b,f,d);dv(f);l=e;return}function av(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<4)|0;c[a+4>>2]=b;c[a+8>>2]=0;return}function bv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+64|0;r=D+32|0;u=D+48|0;v=D+16|0;w=D;t=b<<2;A=vH(t)|0;C=vH(t)|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;s=vH(t)|0;t=vH(t)|0;f=0;while(1){if((f|0)>=(b|0))break;c[s+(f<<2)>>2]=f;f=f+1|0}q=b+-1|0;js(a,s,0,q);f=0;while(1){if((f|0)>=(b|0))break;c[t+(c[s+(f<<2)>>2]<<2)>>2]=f;f=f+1|0}fv(u,a,s,b);f=1;while(1){if((f|0)>=(b|0)){f=0;break}c[A+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(f+-1<<2)>>2];f=f+1|0}while(1){if((f|0)>=(q|0))break;p=f+1|0;c[C+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(p<<2)>>2];f=p}k=e+8|0;m=e+4|0;n=v+4|0;o=w+4|0;p=w+8|0;j=0;while(1){if((j|0)>=(d|0))break;if(!((gv(u,v)|0)<<24>>24))break;f=c[k>>2]|0;b=c[m>>2]|0;if((f|0)<(b|0))b=c[e>>2]|0;else{c[m>>2]=b<<1;b=F_(c[e>>2]|0,b<<5)|0;c[e>>2]=b;f=c[k>>2]|0}c[k>>2]=f+1;f=b+(f<<4)|0;c[f>>2]=c[v>>2];c[f+4>>2]=c[v+4>>2];c[f+8>>2]=c[v+8>>2];c[f+12>>2]=c[v+12>>2];f=c[v>>2]|0;b=c[t+(f<<2)>>2]|0;g=c[n>>2]|0;i=c[t+(g<<2)>>2]|0;if((b|0)>0?(x=c[s+(b+-1<<2)>>2]|0,y=C+(x<<2)|0,(c[t+(c[y>>2]<<2)>>2]|0)<(i|0)):0){c[w>>2]=x;c[o>>2]=g;h[p>>3]=+h[a+(g<<3)>>3]-+h[a+(x<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[y>>2]=g;c[A+(g<<2)>>2]=x}if((i|0)<(q|0)?(z=c[s+(i+1<<2)>>2]|0,B=A+(z<<2)|0,(c[t+(c[B>>2]<<2)>>2]|0)>(b|0)):0){c[w>>2]=f;c[o>>2]=z;h[p>>3]=+h[a+(z<<3)>>3]-+h[a+(f<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[B>>2]=f;c[C+(f<<2)>>2]=z}j=j+1|0}D_(A);D_(C);D_(s);D_(t);iv(u);l=D;return}function cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=vH(a<<2)|0;l=b+8|0;i=c[l>>2]|0;j=(i<<1)+a|0;h=j<<2;e=vH(h)|0;h=vH(h)|0;f=0;while(1){if((f|0)>=(a|0))break;c[k+(f<<2)>>2]=1;f=f+1|0}f=0;while(1){if((f|0)>=(i|0)){f=0;break}n=c[b>>2]|0;m=c[n+(f<<4)+4>>2]|0;n=k+(c[n+(f<<4)>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;m=k+(m<<2)|0;c[m>>2]=(c[m>>2]|0)+1;f=f+1|0}while(1){if((f|0)>=(j|0))break;g[h+(f<<2)>>2]=1.0;f=f+1|0}i=vH(a*20|0)|0;c[d>>2]=i;f=0;while(1){if((f|0)>=(a|0))break;c[i+(f*20|0)>>2]=1;c[i+(f*20|0)+8>>2]=h;c[i+(f*20|0)+4>>2]=e;c[e>>2]=f;g[h>>2]=0.0;n=c[k+(f<<2)>>2]|0;h=h+(n<<2)|0;e=e+(n<<2)|0;f=f+1|0}D_(k);while(1){e=c[l>>2]|0;if(!e)break;n=e+-1|0;c[l>>2]=n;m=c[b>>2]|0;ev(i,c[m+(n<<4)>>2]|0,c[m+(n<<4)+4>>2]|0)}return}function dv(a){a=a|0;D_(c[a>>2]|0);return}function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;f=a+(b*20|0)|0;h=c[f>>2]|0;i=c[a+(b*20|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0)){j=4;break}if((c[i+(e<<2)>>2]|0)==(d|0))break;else e=e+1|0}if((j|0)==4?(c[f>>2]=h+1,c[i+(h<<2)>>2]=d,i=c[a+(d*20|0)+4>>2]|0,h=a+(d*20|0)|0,j=c[h>>2]|0,c[h>>2]=j+1,c[i+(j<<2)>>2]=b,c[a+8>>2]|0):0){j=c[a+(b*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0;j=c[a+(d*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0}return}function fv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0,l=0;f=e+-1|0;c[a+4>>2]=f;c[a+8>>2]=f;c[a>>2]=vH(f<<4)|0;e=0;while(1){if((e|0)>=(f|0))break;l=c[d+(e<<2)>>2]|0;g=e+1|0;k=c[d+(g<<2)>>2]|0;j=+h[b+(k<<3)>>3]-+h[b+(l<<3)>>3];i=c[a>>2]|0;c[i+(e<<4)>>2]=l;c[i+(e<<4)+4>>2]=k;h[i+(e<<4)+8>>3]=j;e=g}e=(f|0)/2|0;while(1){if((e|0)<=-1)break;jv(a,e);e=e+-1|0}return}function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;if(!(c[d>>2]|0))a=0;else{e=c[a>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];b=c[a>>2]|0;e=b+((c[d>>2]|0)+-1<<4)|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[d>>2]=(c[d>>2]|0)+-1;jv(a,0);a=1}return a|0}function hv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;j=a+4|0;g=c[j>>2]|0;d=a+8|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=g<<1;d=F_(c[a>>2]|0,g<<5)|0;c[a>>2]=d;k=a;i=c[j>>2]|0}else{k=a;i=g;d=c[a>>2]|0}c[j>>2]=i+1;j=d+(g<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];while(1){if((g|0)<=0)break;d=c[k>>2]|0;e=+h[d+(g<<4)+8>>3];a=g>>>1;f=+h[d+(a<<4)+8>>3];if(!(e<f)){if(!(e==f))break;if(!((g2()|0)&1))break;d=c[k>>2]|0}j=d+(g<<4)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];b=d+(a<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];j=(c[k>>2]|0)+(a<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];g=a}l=n;return}function iv(a){a=a|0;D_(c[a>>2]|0);return}function jv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;i=m;j=a+4|0;while(1){d=b<<1;g=d|1;if((d|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(d<<4)+8>>3];f=+h[n+(b<<4)+8>>3];if(!(e<f))if(!(e==f?((g2()|0)&1|0)!=0:0))k=6}else k=6;if((k|0)==6){k=0;d=b}do if((g|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(g<<4)+8>>3];f=+h[n+(d<<4)+8>>3];if(!(e<f)){if(!(e==f))break;if(!((g2()|0)&1))break}d=g}while(0);if((d|0)==(b|0))break;g=c[a>>2]|0;n=g+(d<<4)|0;c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];g=g+(b<<4)|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];n=(c[a>>2]|0)+(b<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];b=d}l=m;return}function kv(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0;l=(f|0)!=0;if(!l){f=vH(b<<3)|0;if(!(kt(a,b,f,b)|0))m=3;else{a=1;m=17}}else m=3;if((m|0)==3){k=uH(b<<2)|0;c[g>>2]=k;a=0;while(1){if((a|0)>=(b|0))break;c[k+(a<<2)>>2]=a;a=a+1|0}a=b+-1|0;js(f,k,0,a);n=+h[f+(c[k>>2]<<3)>>3];e=(+h[f+(c[k+(a<<2)>>2]<<3)>>3]-n)*e/+(a|0);e=e<d?d:e;a=0;g=1;d=n;while(1){if((g|0)>=(b|0))break;n=+h[f+(c[k+(g<<2)>>2]<<3)>>3];a=a+(n-d>e&1)|0;g=g+1|0;d=n}c[j>>2]=a;a:do if(!a){k=vH(4)|0;c[i>>2]=k;c[k>>2]=b}else{j=vH(a<<2)|0;c[i>>2]=j;a=0;g=1;while(1){if((g|0)>=(b|0))break a;if(+h[f+(c[k+(g<<2)>>2]<<3)>>3]-+h[f+(c[k+(g+-1<<2)>>2]<<3)>>3]>e){c[j+(a<<2)>>2]=g;a=a+1|0}g=g+1|0}}while(0);if(l)a=0;else{a=0;m=17}}if((m|0)==17)D_(f);return a|0}function lv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c[46159]|0;if(d|0)xn(d);c[46159]=wn(b,b,0.0)|0;d=c[46160]|0;if(d|0)D_(d);c[46160]=uH(b<<2)|0;d=c[46161]|0;if(d|0)D_(d);n=uH(b<<3)|0;c[46161]=n;o=c[46159]|0;p=c[46160]|0;i=0;while(1){if((i|0)>=(b|0)){e=10;break}e=a+(i<<2)|0;g=o+(i<<2)|0;f=0.0;d=0;while(1){if((d|0)==(b|0))break;j=+h[(c[e>>2]|0)+(d<<3)>>3];h[(c[g>>2]|0)+(d<<3)>>3]=j;j=+B(+j);f=f<j?j:f;d=d+1|0}if(!(f!=0.0)){e=15;break}h[n+(i<<3)>>3]=1.0/f;c[p+(i<<2)>>2]=i;i=i+1|0}a:do if((e|0)==10){m=b+-1|0;d=0;l=0;b:while(1){if((l|0)<(m|0)){e=l;k=d;f=0.0}else break;while(1){if((e|0)>=(b|0))break;a=c[p+(e<<2)>>2]|0;j=+B(+(+h[(c[o+(a<<2)>>2]|0)+(l<<3)>>3]));j=+h[n+(a<<3)>>3]*j;a=f<j;i=a?e:k;e=e+1|0;k=i;f=a?j:f}if(f==0.0){d=0;break a}d=p+(l<<2)|0;if((k|0)!=(l|0)){i=c[d>>2]|0;a=p+(k<<2)|0;c[d>>2]=c[a>>2];c[a>>2]=i}g=c[o+(c[d>>2]<<2)>>2]|0;a=l+1|0;f=1.0/+h[g+(l<<3)>>3];e=a;while(1){if((e|0)>=(b|0)){d=k;l=a;continue b}i=c[o+(c[p+(e<<2)>>2]<<2)>>2]|0;d=i+(l<<3)|0;j=+h[d>>3]*f;h[d>>3]=j;c:do if(j!=0.0){d=a;while(1){if((d|0)>=(b|0))break c;q=i+(d<<3)|0;h[q>>3]=+h[q>>3]-+h[g+(d<<3)>>3]*j;d=d+1|0}}while(0);e=e+1|0}}d=+h[(c[o+(c[p+(m<<2)>>2]<<2)>>2]|0)+(m<<3)>>3]!=0.0&1}else if((e|0)==15){h[n+(i<<3)>>3]=0.0;d=0}while(0);return d|0}function mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0;k=c[46159]|0;l=c[46160]|0;j=0;while(1){if((j|0)>=(d|0)){e=d;break}g=c[l+(j<<2)>>2]|0;i=k+(g<<2)|0;f=0.0;e=0;while(1){if((e|0)==(j|0))break;f=+h[a+(e<<3)>>3]*+h[(c[i>>2]|0)+(e<<3)>>3]+f;e=e+1|0}h[a+(j<<3)>>3]=+h[b+(g<<3)>>3]-f;j=j+1|0}while(1){b=e+-1|0;if((e|0)<=0)break;g=l+(b<<2)|0;f=0.0;while(1){if((e|0)>=(d|0))break;f=+h[a+(e<<3)>>3]*+h[(c[k+(c[g>>2]<<2)>>2]|0)+(e<<3)>>3]+f;e=e+1|0}e=a+(b<<3)|0;h[e>>3]=(+h[e>>3]-f)/+h[(c[k+(c[g>>2]<<2)>>2]|0)+(b<<3)>>3];e=b}return}function nv(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function ov(a){a=a|0;var b=0;b=uH(64)|0;nv(b+36|0);c[b+8>>2]=a;return b|0}function pv(a){a=a|0;if(a|0){Lv(c[a+32>>2]|0);D_(a)}return}function qv(a){a=a|0;return ay(c[a+8>>2]|0)|0}function rv(a,b){a=a|0;b=b|0;var d=0,e=0;c[b+4>>2]=0;d=a+4|0;e=c[d>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=b;c[d>>2]=b;return}function sv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(!d){c[a>>2]=b;a=a+4|0}else c[b+4>>2]=d;c[a>>2]=b;return}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;uv(a,b);j=c[b>>2]|0;h=c[j+4>>2]|0;while(1){if(!h)break;k=c[h+8>>2]|0;i=Sy(k)|0;d=c[(c[i+16>>2]|0)+112>>2]|0;a=c[d+16+4>>2]|0;d=c[d+8>>2]|0;f=i;i=Ty(k,i)|0;while(1){if(!i)break;e=c[(c[i+16>>2]|0)+112>>2]|0;g=c[e+16+4>>2]|0;if((g|0)<(a|0)){f=i;d=c[e+8>>2]|0;a=g}i=Ty(k,i)|0}i=c[(c[d+16>>2]|0)+112>>2]|0;k=i+4|0;c[k>>2]=c[k>>2]|8;c[h>>2]=f;k=c[h+4>>2]|0;rv((c[i+12>>2]|0)+36|0,h);h=k}nv(b);return j|0}function uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;g=i+8|0;e=c[b+24>>2]|0;if(!((e|0)!=0?(d=az(a,e,0)|0,(d|0)!=0):0))f=3;a:do if((f|0)==3){e=b+20|0;b:do if(c[e>>2]|0){d=Sy(a)|0;while(1){if(!d)break b;if((PL(c[c[(c[d+16>>2]|0)+112>>2]>>2]|0,c[e>>2]|0,0)|0)<<24>>24)break a;d=Ty(a,d)|0}}while(0);d=Sy(a)|0}while(0);if(0){f=c[15686]|0;c[h>>2]=ry(d)|0;g1(f,93141,h)|0}c[g+4>>2]=0;c[g>>2]=0;vv(a,d,b,1,g);l=i;return}function vv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+8|0;k=c[l>>2]|0;c[l>>2]=k+1;l=b+16|0;c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]=k;c[(c[(c[l>>2]|0)+112>>2]|0)+24>>2]=k;k=(e|0)==0;j=Jx(a,b)|0;while(1){if(!j)break;e=c[j>>2]&3;g=c[((e|0)==2?j:j+-48|0)+40>>2]|0;if((g|0)==(b|0)){e=c[((e|0)==3?j:j+48|0)+40>>2]|0;g=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[g>>2]|0))c[g>>2]=-1}else{e=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[e>>2]|0)){c[e>>2]=1;e=g}else e=g}g=e+16|0;h=c[(c[g>>2]|0)+112>>2]|0;i=c[h+16+4>>2]|0;do if(!i){c[h+8>>2]=b;wv(f,j);vv(a,e,d,0,f);i=(c[(c[l>>2]|0)+112>>2]|0)+24|0;c[i>>2]=c[(c[(c[((c[i>>2]|0)<(c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)?b:e)+16>>2]|0)+112>>2]|0)+24>>2];if((c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)>=(c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]|0)){e=0;do{h=xv(f)|0;g=(c[c[(c[h+16>>2]|0)+120>>2]>>2]|0)==1;g=c[((c[h>>2]&3|0)==((g?2:3)|0)?h:h+((g?-1:1)*48|0)|0)+40>>2]|0;if(!(c[(c[(c[g+16>>2]|0)+112>>2]|0)+12>>2]|0)){if(!e)e=yv(a,d)|0;zv(e,g)}}while((h|0)!=(j|0));if(e|0){if((c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0?(qv(e)|0)>1:0)zv(e,b);if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==(e|0):0){sv(d,e);break}rv(d,e)}}}else{g=c[(c[l>>2]|0)+112>>2]|0;if((c[g+8>>2]|0)!=(e|0)){h=g+24|0;g=c[h>>2]|0;c[h>>2]=(g|0)<(i|0)?g:i}}while(0);j=Kx(a,j,b)|0}if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0:0){l=yv(a,d)|0;zv(l,b);sv(d,l)}return}function wv(a,b){a=a|0;b=b|0;c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2]=c[a>>2];c[a>>2]=b;b=a+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function xv(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)qa(135312,93172,65,93184);d=a+4|0;e=c[d>>2]|0;if((e|0)>0){c[a>>2]=c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2];c[d>>2]=e+-1;return b|0}else qa(93162,93172,61,93184);return 0}function yv(a,b){a=a|0;b=b|0;return ov(Av(a,b)|0)|0}function zv(a,b){a=a|0;b=b|0;Xy(c[a+8>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=a;return}function Av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+144|0;f=d;e=d+8|0;g=b+12|0;b=c[g>>2]|0;c[g>>2]=b+1;c[f>>2]=b;Y0(e,93152,f)|0;b=vA(a,e,1)|0;Az(b,134401,280,1)|0;l=d;return b|0}function Bv(a){a=a|0;var b=0,d=0;b=c[a+36>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;Bv(b);b=d}pv(a);return}function Cv(a,b,c){a=a|0;b=b|0;c=c|0;Dv(a,b,+h[c+32>>3]);return}function Dv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;e=b+36|0;f=0;while(1){e=c[e>>2]|0;if(!e)break;Dv(a,e,d);e=e+4|0;f=f+1|0}e=Vv(a,b,d)|0;c[b+32>>2]=e;a=Sv(e)|0;if((f|0)>0)d=+Ev(f,a,e,b,d);else d=3.141592653589793;if((((a|0)==1?(g=c[b>>2]|0,g|0):0)?c[(c[(c[g+16>>2]|0)+112>>2]|0)+8>>2]|0:0)?(i=b+48|0,h[i>>3]=d,d<0.0):0)h[i>>3]=d+6.283185307179586;return}function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+48|0;t=v;u=uH(a*56|0)|0;c[t+40>>2]=c[e+36>>2];p=e+16|0;j=+h[p>>3];q=t+8|0;h[q>>3]=j;h[t>>3]=j;c[t+44>>2]=c[e>>2];j=6.283185307179586/+(b|0);h[t+16>>3]=j;r=t+24|0;h[r>>3]=-1.0;s=t+32|0;h[s>>3]=-1.0;k=0;o=0;g=0.0;while(1){i=c[d>>2]|0;if(!i)break;d=c[i>>2]|0;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&8))d=o;else{n=u+(o*56|0)|0;c[n>>2]=d;h[u+(o*56|0)+8>>3]=j*+(k|0);d=o+1|0;g=+Fv(n,t,f)}k=k+1|0;o=d;d=i+4|0}a:do switch(o|0){case 1:{h[u+40>>3]=1.0;d=0;break}case 2:{j=+h[u+64>>3]-+h[u+8>>3];Gv(u,u+56|0,j>3.141592653589793?6.283185307179586-j:j);d=0;break}default:{n=u+8|0;m=u;d=0;while(1){if((d|0)>=(o|0)){d=0;break a}d=d+1|0;if((d|0)==(o|0)){i=u;j=+h[n>>3]+6.283185307179586-+h[m+8>>3];k=m+56|0}else{k=m+56|0;i=k;j=+h[m+64>>3]-+h[m+8>>3]}Gv(m,i,j);m=k}}}while(0);while(1){if((d|0)>=(o|0))break;Hv(u+(d*56|0)|0,t,b,f);d=d+1|0}D_(u);if((a|0)==1){f=g+f*.5;Iv(e,-f,0.0,0.0);h[p>>3]=+h[p>>3]+f;u=e+56|0;c[u>>2]=c[u>>2]|1}else h[p>>3]=+h[q>>3];l=v;return +((+h[s>>3]+ +h[r>>3])*.5+-3.141592653589793)}function Fv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0;i=0;f=0.0;g=0.0;e=b+40|0;while(1){j=c[e>>2]|0;if(!j)break;e=c[j>>2]|0;if(!e)e=0;else e=c[(c[(c[e+16>>2]|0)+112>>2]|0)+8>>2]|0;if((e|0)==(c[a>>2]|0)){k=+h[j+16>>3];e=i+1|0;f=f+d+k*2.0;g=g<k?k:g}else e=i;i=e;e=j+4|0}h[a+32>>3]=f;c[a+48>>2]=i;h[a+16>>3]=g+d+ +h[b>>3];h[a+24>>3]=g;return +g}function Gv(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=+h[b+16>>3];d=+h[a+16>>3];c=(d*+h[b+32>>3]+e*+h[a+32>>3])/(c*2.0*e*d);c=c<1.0?1.0:c;a=a+40|0;if(c>+h[a>>3])h[a>>3]=c;a=b+40|0;if(c>+h[a>>3])h[a>>3]=c;return}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,G=0.0;z=b+8|0;y=+h[z>>3];A=b+24|0;k=+h[A>>3];B=b+32|0;j=+h[B>>3];f=+h[a+16>>3]*+h[a+40>>3];x=(d|0)==1;if(x){v=+h[a+32>>3];g=v*.15915494309189535;g=f>g?f:g;f=g*6.283185307179586-v;if(f>0.0){e=f/+(c[a+48>>2]|0)+e;l=0.0;f=g}else{l=0.0;f=g}}else l=+h[a+8>>3]-+h[a+32>>3]/(f*2.0);q=+h[a+24>>3]+f;r=q>y;s=a+48|0;t=((c[s>>2]|0)+1|0)/2|0;u=1.0/f;v=e/f*.5;w=a+8|0;n=b+40|0;o=0;p=0.0;g=l;while(1){n=c[n>>2]|0;if(!n)break;i=c[n>>2]|0;if(!i)i=0;else i=c[(c[(c[i+16>>2]|0)+112>>2]|0)+8>>2]|0;if((i|0)==(c[a>>2]|0)?(Sv(c[n+32>>2]|0)|0)>=1:0){l=+h[n+16>>3];m=l*u;do if(!x)if((c[s>>2]|0)==1){g=+h[w>>3];break}else{g=g+v+m;break}else{if(g!=0.0)g=(c[s>>2]|0)==2?3.141592653589793:m+g;j=g;k=k<0.0?g:k}while(0);G=+E(+g)*f;D=+F(+g)*f;Iv(n,G,D,+Jv(n,G,D,g));g=(x?(l+e)*u:m+v)+g;o=o+1|0;i=o;l=(o|0)==(t|0)?g:p}else{i=o;l=p}n=n+4|0;o=i;p=l}f=r?q:y;if((d|0)>1?(C=c[a>>2]|0,(C|0)==(c[b+44>>2]|0)):0)h[(c[(c[C+16>>2]|0)+112>>2]|0)+24>>3]=p;h[z>>3]=f;h[A>>3]=k;h[B>>3]=j;return}function Iv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;m=c[a+8>>2]|0;n=e!=0.0;f=Sy(m)|0;while(1){if(!f)break;k=c[(c[f+16>>2]|0)+132>>2]|0;i=+h[k>>3];l=k+8|0;g=+h[l>>3];if(n){o=+E(+e);p=+F(+e);j=o*i-p*g;g=p*i+o*g}else j=i;h[k>>3]=j+b;h[l>>3]=g+d;f=Ty(m,f)|0}f=a+36|0;while(1){f=c[f>>2]|0;if(!f)break;Iv(f,b,d,e);f=f+4|0}return}function Jv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0.0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;m=c[a+8>>2]|0;f=+h[a+48>>3];do if(!(f>=0.0)){if((Sv(c[a+32>>2]|0)|0)==2){f=e+-1.5707963267948966;break}l=c[a>>2]|0;n=l+16|0;i=c[(c[n>>2]|0)+132>>2]|0;f=+h[i>>3]+b;k=+h[i+8>>3]+d;f=k*k+f*f;i=Sy(m)|0;g=l;while(1){if(!i)break;if((i|0)!=(l|0)?(o=c[(c[i+16>>2]|0)+132>>2]|0,j=+h[o>>3]+b,k=+h[o+8>>3]+d,j=k*k+j*j,j<f):0){f=j;g=i}i=Ty(m,i)|0}if((l|0)!=(g|0)){j=+h[a+24>>3];k=+h[a+16>>3]-j;g=c[n>>2]|0;i=c[g+132>>2]|0;f=+h[i>>3];if(f>-k?(c[a+56>>2]&1|0)!=0:0){d=+C(+(d*d+b*b));b=+K(+(+h[i+8>>3]),+(f+k));f=+E(+b);f=e+1.5707963267948966-b-+I(+((k-j/f)/d*f));break}else{f=+K(+(+h[i+8>>3]),+f);f=e+3.141592653589793-f-+h[(c[g+112>>2]|0)+24>>3];f=f>6.283185307179586?f+-6.283185307179586:f;break}}else f=0.0}else{f=3.141592653589793-f+e;f=f<0.0?f+6.283185307179586:f}while(0);return +f}function Kv(){return uH(12)|0}function Lv(a){a=a|0;var b=0,d=0;if(a|0){b=c[a>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;D_(b);b=d}D_(a)}return}function Mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Nv(d)|0;d=a+8|0;c[d>>2]=(c[d>>2]|0)+1;d=a+4|0;e=c[d>>2]|0;if((b|0)==0|(e|0)==(b|0)){c[(e|0?e+4|0:a)>>2]=f;c[f+8>>2]=e;e=0}else{e=b+4|0;d=c[e>>2]|0;c[e>>2]=f;c[f+8>>2]=b;e=d;d=d+8|0}c[d>>2]=f;c[f+4>>2]=e;return}function Nv(a){a=a|0;var b=0;b=uH(12)|0;c[b>>2]=a;return b|0}function Ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a>>2]|0;d=b;while(1){if(!b)break;g=b+4|0;e=c[g>>2]|0;f=b+8|0;c[g>>2]=c[f>>2];c[f>>2]=e;b=e}f=a+4|0;g=c[f>>2]|0;c[f>>2]=d;c[a>>2]=g;return a|0}function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;if((d|0)!=(b|0)){f=b+8|0;e=c[f>>2]|0;c[a>>2]=b;c[f>>2]=0;b=a+4|0;a=c[b>>2]|0;c[a+4>>2]=d;c[d+8>>2]=a;c[b>>2]=e;c[e+4>>2]=0}return}function Qv(a){a=a|0;var b=0,d=0,e=0;d=Kv()|0;e=d+4|0;b=0;while(1){a=c[a>>2]|0;if(!a)break;Mv(d,b,c[a>>2]|0);b=c[e>>2]|0;a=a+4|0}return d|0}\n  function Bb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function Cb(){return l|0}function Db(a){a=a|0;l=a}function Eb(a,b){a=a|0;b=b|0;l=a;m=b}function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Gb(a){a=a|0;z=a}function Hb(){return z|0}function Ib(a){a=a|0;c[45884]=a;return 0}function Jb(){return c[45884]|0}function Kb(a,b){a=a|0;b=b|0;Oa(0,a|0,b|0)|0;return}function Lb(a){a=a|0;c[46369]=a;return}function Mb(a){a=a|0;if(a|0)c[46363]=a;return}function Nb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=ZC()|0;cD(h,10976);cD(h,17220);cD(h,17440);Ow(1)|0;Nw(18)|0;Tz(1);while(1){a=Gy(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){_C(h,a,d)|0;bD(h,a,b,f,g)|0;WB(h,a)|0}$x(a)|0;a=191979}l=i;return e|0}function Ob(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{uI(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)FM(f);break}case 4:case 5:case 6:{rI(f,e,d);Rb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Pb(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[45885]|0)){c[45885]=c[4652];c[45886]=57;c[45887]=19}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=183540;switch(c[a+64>>2]|0){case 2:{hI(a,d,a,0);break}case 3:{hI(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}case 6:case 5:case 4:{Qb(d);if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Qb(b){b=b|0;var d=0,e=0;d=c[45889]|0;if((d|0)!=(c[45888]|0)){e=c[c[45920]>>2]|0;if(!e){e=LM(b,0,96782,191979)|0;c[c[45920]>>2]=e;d=c[45889]|0}if(d>>>0>=(c[45890]|0)>>>0){Uw(183552,1)|0;d=c[45889]|0}a[d>>0]=0;d=c[45888]|0;c[45889]=d;rx(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[45920]|0)+4>>2]|0;d=c[45905]|0;if(d>>>0>=(c[45906]|0)>>>0){Uw(183616,1)|0;d=c[45905]|0}a[d>>0]=0;d=c[45904]|0;c[45905]=d;rx(b,e,d)|0}Ax(b,66649,c[(c[45920]|0)+8236>>2]|0,191979)|0;d=0;while(1){if((d|0)==8)break;Xw(183552+(d<<4)|0);d=d+1|0}D_(c[45920]|0);h[1]=1.0;h[5]=1.0;c[45921]=0;c[45925]=0;return}function Rb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=C_(8240)|0;c[45920]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=66665;break}case 5:{b[i+8232>>1]=12;g=66669;break}default:{g=xx(d,66649)|0;if((g|0?a[g>>0]|0:0)?(h=Sb(g)|0,(h&65535)>10):0){i=c[45920]|0;b[i+8232>>1]=h;break a}g=Sb(66661)|0;i=c[45920]|0;b[i+8232>>1]=g;g=66661}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=LM(d,0,96782,191979)|0;i=c[45920]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=LM(d,0,66673,191979)|0;c[(c[45920]|0)+4>>2]=g;i=LM(d,1,96782,191979)|0;c[(c[45920]|0)+8>>2]=i;i=LM(d,1,66673,191979)|0;c[(c[45920]|0)+12>>2]=i;i=LM(d,2,96782,191979)|0;g=c[45920]|0;c[g+16>>2]=i;if(!f)h=0;else{h=LM(d,2,66681,191979)|0;g=c[45920]|0}c[g+20>>2]=h;if(!e)h=0;else{h=LM(d,2,66689,191979)|0;g=c[45920]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=LM(d,2,66673,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=LM(d,2,66697,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=LM(d,2,66706,191979)|0;g=c[45920]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;Tw(183552+(g<<4)|0,1024,(c[45920]|0)+40+(g<<10)|0);g=g+1|0}return}function Sb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;Pw(0,66715,h)|0}a[g+f>>0]=0;i=(a2(g)|0)&65535;l=j;return i|0}function Tb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[45920]>>2]|0;b=c[45893]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[45920]|0)+4>>2]|0;b=c[45909]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[45922]=0;c[45926]=0;return}function Ub(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+8>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+12>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[45929]=0;c[45931]=0;return}function Vb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+16>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45897]|0;if((c[45896]|0)!=(b|0)){d=c[(c[45920]|0)+24>>2]|0;if(b>>>0>=(c[45898]|0)>>>0){Uw(183584,1)|0;b=c[45897]|0}a[b>>0]=0;b=c[45896]|0;c[45897]=b;rx(e,d,b)|0}b=c[45901]|0;if((c[45900]|0)!=(b|0)){d=c[(c[45920]|0)+20>>2]|0;if(b>>>0>=(c[45902]|0)>>>0){Uw(183600,1)|0;b=c[45901]|0}a[b>>0]=0;b=c[45900]|0;c[45901]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+28>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}b=c[45913]|0;if((c[45912]|0)!=(b|0)){d=c[(c[45920]|0)+36>>2]|0;if(b>>>0>=(c[45914]|0)>>>0){Uw(183648,1)|0;b=c[45913]|0}a[b>>0]=0;b=c[45912]|0;c[45913]=b;rx(e,d,b)|0}b=c[45917]|0;if((c[45916]|0)!=(b|0)){d=c[(c[45920]|0)+32>>2]|0;if(b>>>0>=(c[45918]|0)>>>0){Uw(183664,1)|0;b=c[45917]|0}a[b>>0]=0;b=c[45916]|0;c[45917]=b;rx(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[45930]=0;c[45932]=0;c[45923]=0;c[45924]=0;c[45927]=0;c[45928]=0;return}function Wb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11416+(o<<2)>>2]|0;Ww(p,66812)|0;g=f+4|0;dc(k,+h[(c[g>>2]|0)+16>>3]);Ww(p,k)|0;gc(d,191979,c[c[g>>2]>>2]|0);ac(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[45920]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11464+((i&65535)+-15<<2)>>2]&g,n=183684+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;Y0(k,66815,r)|0;Ww(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];Ww(p,66821)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];cc(p,j);c[s>>2]=q;Y0(k,99194,s)|0;Ww(p,k)|0;dc(k,+h[f+32>>3]);Ww(p,k)|0;gc(d,191979,c[f>>2]|0);l=t;return}function Xb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;$b(a);ac(a);if(!d){a=c[11416+(e<<2)>>2]|0;Ww(a,66809)|0}else{if((d|1|0)==3)ic(a,d,b,2);else jc(a);a=c[11416+(e<<2)>>2]|0;Ww(a,66806)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];cc(a,f);dc(g,+h[b+16>>3]-+h[b>>3]);Ww(a,g)|0;dc(g,+h[b+24>>3]-+h[b+8>>3]);Ww(a,g)|0;l=i;return}function Yb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$b(a);ac(a);if(!d)bc(a,112,b,c);else{if((d|1|0)==3)ic(a,d,b,c);else jc(a);bc(a,80,b,c)}return}function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$b(a);ac(a);if(!f)bc(a,66,b,c);else{if((f|1|0)==3)ic(a,f,b,c);else jc(a);bc(a,98,b,c)}return}function _b(a,b,c){a=a|0;b=b|0;c=c|0;$b(a);ac(a);bc(a,76,b,c);return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;Tw(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;Ww(m,66778)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];Y0(f,66792,i)|0;ec(f,0);Ww(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;gc(b,66797,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(b$(d,108075)|0)){d=i;continue a}break}case 98:{if(!(b$(d,108057)|0)){d=i;continue a}break}case 115:{if(!(b$(d,108062)|0)){d=i;continue a}break}default:{}}Ww(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}Ww(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;gc(b,66797,d);d=i}Xw(m)}l=n;return}function ac(a){a=a|0;fc((c[a+16>>2]|0)+16|0);gc(a,75730,190678);return}function bc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11416+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;Y0(i,66742,j)|0;Ww(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];cc(h,j);b=b+1|0}l=k;return}function cc(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,+h[b>>3]);Ww(a,d)|0;dc(d,+gI(+h[b+8>>3]));Ww(a,d)|0;l=c;return}function dc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;Y0(a,66747,d)|0;ec(a,1);l=c;return}function ec(b,c){b=b|0;c=c|0;var d=0,e=0;d=A$(b,46)|0;if(!d){if(c|0){d=b+(W_(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function fc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;Y0(190678,75610,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;Y0(190678,66760,i)|0}l=j;return}function gc(a,b,d){a=a|0;b=b|0;d=d|0;hc(c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=W_(e)|0;c[h>>2]=d;c[h+4>>2]=i;Y0(g,66753,h)|0;Ww(b,g)|0;Ww(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function ic(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[45920]|0)+8232>>1]|0)<14)jc(b);else{Tw(w,1024,x+96|0);v=(d|0)==2;if(v){aN(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];cc(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t)}else{aN(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];cc(w,t);kc(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t);kc(w,q)}Ww(w,66803)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){lc(w,j,f);lc(w,+g[d>>2],u+96|0)}else{lc(w,0.0,f);lc(w,1.0,u+96|0)}Yw(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;gc(b,66800,v);Xw(w)}l=x;return}function jc(a){a=a|0;fc((c[a+16>>2]|0)+56|0);gc(a,66800,190678);return}function kc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,b);Ww(a,d)|0;l=c;return}function lc(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;Y0(e,92597,f)|0;ec(e,1);fc(c);hc(a,e,190678);l=d;return}function mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;Ww(g,66909)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];cc(g,i);dc(f,+h[d+16>>3]-+h[d>>3]);Ww(g,f)|0;dc(f,+h[d+24>>3]-+h[d+8>>3]);Ww(g,f)|0;gc(a,191979,c[b+8>>2]|0);l=e;return}function nc(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=lC(c[a>>2]|0)|0;$C(b,c[(c[a+16>>2]|0)+8>>2]|0,67693,0)|0;mC(b);break}case 1:{uI(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function oc(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[45933]|0)){c[45933]=c[4652];c[45934]=57;c[45935]=19}c[(c[e+64>>2]|0)+8>>2]=183732;pc(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;qc(e,b,1,d);l=f;return}function pc(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;pc(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Cw(11836,c[4555]|0)|0;Fz(a,1,137978,12,0);Fz(a,2,137978,12,0);Fz(a,0,137978,-12,0);f=rc(a,0,m)|0;j=Sy(a)|0;i=0;g=0;while(1){if(!j)break;if(!(z$(ry(j)|0,104980,7)|0)){k=g;g=sc(m,ry(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(yz(j,137978,0)|0)+8>>2]=g;h=Ex(a,j)|0;g=i;while(1){if(!h)break;c[(yz(h,137978,0)|0)+8>>2]=g;h=Gx(a,h)|0;g=g+1|0}j=Ty(a,j)|0;i=g;g=k}yw(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;tc(b,m);$B(b,94292)|0;uc(a,b,d,e);vc(a,b,e);$B(b,94263)|0;tc(b,c[e>>2]|0);if(n){c[o>>2]=f;fC(b,66912,o)}else{c[p>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66932,p)}xc(a,b,d,wc(a,b,d,e)|0,e);yc(a,b,d,e);$B(b,150517)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;tc(b,p);if(n)$B(b,107982)|0;else $B(b,75253)|0;l=q;return}function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((fz(a)|0)!=(a|0)){e=b+1|0;c[(yz(a,137978,0)|0)+8>>2]=b;if(!(z$(ry(a)|0,104980,7)|0)){b=ry(a)|0;Kc(d,b,c[(yz(a,137978,0)|0)+8>>2]|0);b=e}else b=e}e=wA(a)|0;while(1){if(!e)break;a=rc(e,b,d)|0;e=xA(e)|0;b=a}return b|0}function sc(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function tc(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;$B(a,90480)|0;b=b+-1|0}return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=ry(a)|0;tc(b,c[e>>2]|0);c[i>>2]=Bc(j,e)|0;fC(b,67020,i);if(d|0){$B(b,94263)|0;tc(b,c[e>>2]|0);j=(ey(a)|0)!=0;c[f>>2]=j?104626:134226;fC(b,67634,f);tc(b,c[e>>2]|0);j=(gy(a)|0)!=0;c[g>>2]=j?104626:134226;fC(b,67651,g)}l=h;return}function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=fz(b)|0;j=c[b>>2]&3;f=sx(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=yx(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(b$(g,105198)|0)break}$B(d,94263)|0;tc(d,c[e>>2]|0);c[m>>2]=Bc(c[h>>2]|0,e)|0;fC(d,67070,m);if(a[k>>0]|0?Dc(c[h>>2]|0)|0:0){Ec(yx(b,f)|0,d,e);break}c[n>>2]=Bc(yx(b,f)|0,e)|0;fC(d,67077,n)}while(0);f=sx(i,j,f)|0}}while(0);l=o;return}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=wA(a)|0;if(f){$B(b,94263)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(b,g);g=(d|0)!=0;if(g){$B(b,66994)|0;a=0;d=f}else{$B(b,67054)|0;tc(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else $B(b,94263)|0;if(g)Cc(d,b,e);else{c[h>>2]=c[(yz(d,137978,0)|0)+8>>2];fC(b,134313,h)}d=xA(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0;a=1}}else a=0;l=i;return a|0}function xc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Sy(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}}else{$B(b,94263)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,66994)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,67008)|0;tc(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(z$(ry(g)|0,104980,7)|0){do if(e)if(h){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else e=1;while(0);Ac(g,b,d,f)}g=Ty(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}return}function yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Sy(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Ex(a,f)|0)break;f=Ty(a,f)|0}$B(b,94263)|0;i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,66944)|0;i=(d|0)!=0;if(i)g=0;else{tc(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Ex(a,f)|0;while(1){if(!h)break;do if(g)if(i){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else g=1;while(0);zc(h,b,d,e);h=Gx(a,h)|0}f=Ty(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0}while(0);return}function zc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=c[(yz(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66970,g);tc(b,c[e>>2]|0);c[h>>2]=c[(yz(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66983,h);vc(a,b,e);$B(b,150517)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;tc(b,i);$B(b,75253)|0}l=j;return}function Ac(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;tc(b,h);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=Bc(ry(a)|0,e)|0;fC(b,67020,g);vc(a,b,e);$B(b,150517)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;tc(b,h);$B(b,75253)|0}l=i;return}function Bc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=RM(b)|0;if(!(c[45936]|0)){Tw(183744,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{Ww(183744,67033)|0;break}case 92:{Ww(183744,93534)|0;break}case 47:{Ww(183744,67036)|0;break}case 8:{Ww(183744,67039)|0;break}case 12:{Ww(183744,67042)|0;break}case 10:{Ww(183744,67045)|0;break}case 13:{Ww(183744,67048)|0;break}case 9:{Ww(183744,67051)|0;break}default:{d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}c[45937]=d+1;a[d>>0]=f}}e=e+1|0}d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}a[d>>0]=0;d=c[45936]|0;c[45937]=d;if(a[g>>0]|0)D_(b);return d|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;qc(a,b,0,c);a=wA(a)|0;while(1){if(!a)break;$B(b,94263)|0;Cc(a,b,c);a=xA(a)|0}return}function Dc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(b$(c,67591)|0)){b=1;break a}break}case 2:{if(!(b$(c,67597)|0)){b=1;break a}break}case 1:{if(!(b$(c,67604)|0)){b=1;break a}return (b$(c,67618)|0)==0|0}case 4:{if(!(b$(c,67611)|0)){b=1;break a}b=(b$(c,67626)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=oE(b)|0;if(!h){c[f>>2]=b;Pw(0,67082,f)|0;break}$B(d,150517)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(d,g);$B(d,67109)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else $B(d,94263)|0;Fc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;$B(d,150517)|0;tc(d,c[e>>2]|0);$B(d,94258)|0;pE(h)}while(0);l=i;return}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;tc(b,e);$B(b,94292)|0;tc(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;fC(b,67112,f);tc(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;fC(b,67125,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;fC(b,67112,z);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;fC(b,67112,i);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 6:{fC(b,67160,A+56|0);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 7:{fC(b,67172,A+64|0);tc(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;fC(b,67184,j);tc(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;fC(b,67206,k);tc(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];fC(b,67222,m);tc(b,c[d>>2]|0);c[n>>2]=Bc(c[a+40>>2]|0,d)|0;fC(b,67239,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;fC(b,67112,o);tc(b,c[d>>2]|0);fC(b,67253,A+120|0);tc(b,c[d>>2]|0);c[p>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67270,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;fC(b,67112,q);tc(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{fC(b,67253,A+144|0);tc(b,c[d>>2]|0);c[r>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67270,r);break a}case 1:{fC(b,67285,A+160|0);tc(b,c[d>>2]|0);Hc(b,a+16|0,d);break a}default:{fC(b,67304,A+168|0);tc(b,c[d>>2]|0);Ic(b,a+16|0,d);break a}}}case 10:{fC(b,67323,s);tc(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];fC(b,67335,t);tc(b,c[d>>2]|0);c[u>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67351,u);break}case 11:{fC(b,67365,v);tc(b,c[d>>2]|0);c[w>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67377,w);break}case 15:{fC(b,67392,x);tc(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];fC(b,67404,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;tc(b,z);$B(b,75253)|0;l=A;return}function Gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;fC(a,67565,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)fC(a,97973,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;fC(a,67577,g);b=b+1|0}fC(a,67518,i);l=j;return}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;fC(a,67521,i);tc(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;fC(a,67543,f);tc(a,c[d>>2]|0);Jc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;fC(a,67420,j);tc(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,67448,f);tc(a,c[d>>2]|0);Jc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function Jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;fC(a,67476,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)fC(a,97973,i);o=+g[d+(f<<3)>>2];n=Bc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;fC(a,67487,j);f=f+1|0}fC(a,67518,k);l=m;return}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=nb[c[a>>2]&63](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;Pw(0,67664,f)|0}}else{f=E_(1,16)|0;c[f+8>>2]=n1(b)|0;c[f+12>>2]=d;nb[c[a>>2]&63](a,f,1)|0}l=g;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function Mc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function Nc(a){a=a|0;$B(a,68500)|0;return}function Oc(a){a=a|0;c[45940]=2;return}function Pc(a){a=a|0;c[45940]=1;return}function Qc(a){a=a|0;c[45940]=2;return}function Rc(a){a=a|0;c[45940]=0;return}function Sc(a){a=a|0;c[45940]=2;return}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[45940]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((W_(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=bd(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;fC(b,68445,o);l=p;return}function Uc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(ad(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}default:qa(135312,67785,163,67816)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45940]|0;_c(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function Wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45940]|0;_c(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);$c(a,b,d,1);l=f;return}function Xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[45940]|0;if((d|0)<=3)qa(67778,67785,360,67805);t=C_((d*140|0)+140|0)|0;_c(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45940]|0;_c(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);$c(a,b,d,0);l=e;return}function Zc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function _c(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function $c(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function ad(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45941]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[187600+(g<<1)>>1]|0)-d|0;n=(b[188112+(g<<1)>>1]|0)-e|0;j=(b[188624+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45941]=k+1;if((k|0)==256)g=i;else{b[187600+(g<<1)>>1]=d;b[188112+(g<<1)>>1]=e;b[188624+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function bd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45942]|0;if(!d){c[45943]=64;d=C_(64)|0;c[45942]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45943]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45943]=d;d=F_(c[45942]|0,d)|0;c[45942]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45942]|0}function cd(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{$B(b,68116)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,150517)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,99578)|0;$B(b,qH(ry(c[e+8>>2]|0)|0)|0)|0;$B(b,150517)|0}break}case 3:{f=qH(ry(c[e+8>>2]|0)|0)|0;$B(b,68139)|0;$B(b,f)|0;$B(b,68149)|0;$B(b,f)|0;$B(b,68104)|0;break}default:{}}return}function dd(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);$B(a,68108)|0;break}default:{}}return}function ed(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;fd(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function fd(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[45944]|0)<(f|0)){c[45944]=m;o=F_(c[45945]|0,m<<3)|0;c[45945]=o}else o=c[45945]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;fC(b,67850,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;fC(b,67871,v);break a}case 2:{c[q>>2]=g;fC(b,67891,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[45945]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;fC(b,67899,w);m=m+1|0}$B(b,150517)|0;break a}default:qa(135312,67906,63,67926)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;fC(b,67943,r);break}else qa(135312,67906,75,67926)}if((m&-2|0)==2){switch(d|0){case 1:{$B(b,67976)|0;break}case 0:{$B(b,67997)|0;break}case 2:{$B(b,68016)|0;break}default:qa(135312,67906,91,67926)}if(k|0?a[k>>0]|0:0){$B(b,73496)|0;$B(b,tH(k)|0)|0;$B(b,95669)|0}if(e?a[g>>0]|0:0){$B(b,68035)|0;$B(b,tH(g)|0)|0;$B(b,95669)|0}if(j|0?a[j>>0]|0:0){$B(b,74455)|0;$B(b,qH(j)|0)|0;$B(b,95669)|0}if(i|0?a[i>>0]|0:0){$B(b,68043)|0;$B(b,qH(i)|0)|0;$B(b,95669)|0}$B(b,68052)|0;$B(b,68060)|0;b:do switch(d|0){case 1:{f=c[45945]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;fC(b,68070,s);break}case 0:{v=c[45945]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;fC(b,68079,t);break}case 2:{w=c[45945]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;fC(b,68091,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[45945]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;fC(b,68097,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){$B(b,73320)|0;break}else{$B(b,68104)|0;break}}}while(0);l=y;return}function gd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function hd(a){a=a|0;$B(a,68500)|0;return}function id(a){a=a|0;c[45946]=2;return}function jd(a){a=a|0;c[45946]=1;return}function kd(a){a=a|0;c[45946]=2;return}function ld(a){a=a|0;c[45946]=0;return}function md(a){a=a|0;c[45946]=2;return}function nd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[45946]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=xd(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;fC(b,68445,m);l=n;return}function od(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(wd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}case 0:{f=0;k=10;break}default:qa(135312,68409,168,68428)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45946]|0;ud(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45946]|0;ud(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);vd(a,b,d,1);l=f;return}function rd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[45946]|0;t=C_((d*140|0)+140|0)|0;ud(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45946]|0;ud(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);vd(a,b,d,0);l=e;return}function td(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function wd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45947]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[189136+(g<<1)>>1]|0)-d|0;n=(b[189648+(g<<1)>>1]|0)-e|0;j=(b[190160+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45947]=k+1;if((k|0)==256)g=i;else{b[189136+(g<<1)>>1]=d;b[189648+(g<<1)>>1]=e;b[190160+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function xd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45948]|0;if(!d){c[45949]=64;d=C_(64)|0;c[45948]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45949]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45949]=d;d=F_(c[45948]|0,d)|0;c[45948]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45948]|0}function yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;$B(a,73228)|0;if((c[a+64>>2]|0)==2)$B(a,73243)|0;else $B(a,150517)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;fC(a,73254,b);l=d;return}function zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;$B(a,73182)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];fC(a,73193,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;fC(a,69562,f)}$B(a,73208)|0;$B(a,73221)|0;l=g;return}function Ad(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[190688]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=ry(c[h>>2]|0)|0;fC(b,69493,i);d=b+64|0;if((c[d>>2]|0)==2)$B(b,69526)|0;else $B(b,69508)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;fC(b,69562,f);break}else{$B(b,69538)|0;break}while(0);$B(b,69592)|0;jJ(b,c[(c[e>>2]|0)+24>>2]|0,13e3);lJ(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;jJ(b,0,i)}}c[45950]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[190688]|0)){$B(b,69612)|0;a[190688]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=mJ(d,c[45950]|0)|0;fC(b,69625,j)}l=k;return}function Bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;fC(a,69477,f);l=b;return}function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;fC(a,69104,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;fC(a,69121,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?69155:69165;fC(a,69174,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;fC(a,69199,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;fC(a,69238,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;fC(a,69258,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;fC(a,69298,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;ub[t&63](69341,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;fC(a,69436,r)}l=s;return}function Dd(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){$B(a,69028)|0;jJ(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}$B(a,69045)|0;$B(a,69072)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];fC(a,69087,d);l=e;return}function Ed(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,69021,d);$B(a,69014)|0;l=b;return}function Fd(a){a=a|0;$B(a,84457)|0;return}function Gd(a){a=a|0;$B(a,69014)|0;return}function Hd(a){a=a|0;$B(a,84457)|0;return}function Id(a){a=a|0;$B(a,69014)|0;return}function Jd(a){a=a|0;$B(a,84457)|0;return}function Kd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){$B(a,68910)|0;jC(a,c[g>>2]|0,2);$B(a,68921)|0;c[d>>2]=mJ(b,c[45950]|0)|0;fC(a,68925,d)}l=e;return}function Ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Sd(b,f+16|0);i=e+4|0;gC(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];fC(b,68869,j);i=mJ(c[e>>2]|0,c[45950]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];iC(b,j);$B(b,68884)|0;gC(b,+h[f>>3]);c[k>>2]=i;fC(b,68893,k)}l=m;return}function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Sd(a,e+56|0);jC(a,f,2);$B(a,68827)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[b>>2]|0)+16|0);jC(a,f,2);$B(a,68847)|0}l=g;return}function Nd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Sd(a,f+56|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68793)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[g>>2]|0)+16|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68809)|0}l=j;return}function Od(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68793)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68775)|0}l=k;return}function Pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[e>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];iC(a,f);$B(a,68766)|0;e=e+1|0}$B(a,68775)|0}l=g;return}function Qd(a,b){a=a|0;b=b|0;$B(a,68745)|0;$B(a,b)|0;$B(a,150517)|0;return}function Rd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[k>>2]=e;c[k+4>>2]=b;fC(a,68662,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[m>>2]=e;c[m+4>>2]=b;fC(a,68678,m)}l=n;return}function Sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=108412;break}case 2:{d=108399;break}case 3:{d=108368;break}default:d=68714}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;fC(a,68721,e)}l=f;return}function Td(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;gC(b,+h[i+152>>3]);$B(b,68695)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(b$(f,108062)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;fC(b,68710,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(b$(f,131253)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;fC(b,93588,k);d=i}l=m;return}function Ud(b){b=b|0;var d=0;$B(b,74734)|0;d=xx(c[(c[b>>2]|0)+168>>2]|0,74790)|0;if(d|0?a[d>>0]|0:0){$B(b,74801)|0;$B(b,d)|0;$B(b,74825)|0}$B(b,74846)|0;$B(b,74894)|0;$B(b,74948)|0;d=b+12|0;$B(b,qH(c[c[c[d>>2]>>2]>>2]|0)|0)|0;$B(b,78077)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;$B(b,78087)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;$B(b,75330)|0;$B(b,75354)|0;return}function Vd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;$B(b,74569)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,74574,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;fC(b,74590,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;fC(b,74623,g);$B(b,74654)|0;$B(b,74690)|0;$B(b,76284)|0;l=i;return}function Wd(a){a=a|0;$B(a,74561)|0;return}function Xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;se(a,b,0,98484,c[(c[a+16>>2]|0)+8>>2]|0);$B(a,76284)|0;return}function Yd(a){a=a|0;$B(a,74409)|0;return}function Zd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;se(b,c[g+212>>2]|0,0,108412,c[d>>2]|0);$B(b,74513)|0;gC(b,+h[b+488>>3]);$B(b,99578)|0;gC(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);fC(b,74532,f);gC(b,+h[b+504>>3]);$B(b,99578)|0;gC(b,-+h[b+512>>3]);$B(b,74556)|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,74465)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0;$B(b,74473)|0}l=e;return}function _d(a){a=a|0;$B(a,74409)|0;return}function $d(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,104980,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[b>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ae(a){a=a|0;$B(a,74409)|0;return}function be(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;se(a,c[d+212>>2]|0,b,108399,c[e>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[e>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ce(a){a=a|0;$B(a,74409)|0;return}function de(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,108368,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;b=pH(99069,c[b>>2]|0)|0;$B(a,qH(b)|0)|0;D_(b);$B(a,74473)|0;return}function ee(a){a=a|0;$B(a,74409)|0;return}function fe(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$B(b,74415)|0;if(f|0){$B(b,74418)|0;$B(b,qH(f)|0)|0;$B(b,95669)|0}$B(b,74308)|0;$B(b,76245)|0;if(c|0?a[c>>0]|0:0){$B(b,74426)|0;$B(b,c)|0;$B(b,95669)|0}if(d|0?a[d>>0]|0:0){$B(b,74440)|0;$B(b,rH(d,1)|0)|0;$B(b,95669)|0}if(e|0?a[e>>0]|0:0){$B(b,74455)|0;$B(b,qH(e)|0)|0;$B(b,95669)|0}$B(b,76284)|0;return}function ge(a){a=a|0;$B(a,76239)|0;$B(a,74409)|0;return}function he(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;$B(e,73940)|0;switch(a[g+48>>0]|0){case 108:{$B(e,73946)|0;break}case 114:{$B(e,73967)|0;break}default:$B(e,73986)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){$B(e,74008)|0;gC(e,+h[f>>3]);$B(e,74013)|0;gC(e,-G);$B(e,95669)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];fC(e,74019,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;fC(e,74036,p)}$B(e,95669)|0;if(f|0){c[r>>2]=f;fC(e,74040,r)}if(k|0){c[s>>2]=k;fC(e,74058,s)}if(!j)j=0;else{c[q>>2]=j;fC(e,74077,q)}}else{c[i>>2]=c[f>>2];fC(e,74094,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))fC(e,74112,t);if(!((j|0)!=0|(z&2|0)==0))fC(e,74132,u);if(z&100|0){fC(e,74153,v);if(!(z&4))f=0;else{fC(e,102960,w);f=1}if(z&64){c[y>>2]=f|0?97973:191979;fC(e,74172,y);f=1}if(z&32|0){c[A>>2]=f|0?97973:191979;fC(e,74183,A)}fC(e,95669,B)}if(z&8|0)fC(e,74198,C);if(z&16|0)fC(e,74222,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];fC(e,74244,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(O$(f,134232)|0){c[J>>2]=f;fC(e,74262,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;fC(e,74273,F);break}default:qa(135312,73454,486,74295)}$B(e,74308)|0;if(b[H>>1]&512){c[K>>2]=qH(c[I+212>>2]|0)|0;fC(e,74310,K);$B(e,74359)|0;gC(e,-G);$B(e,74377)|0}$B(e,rH(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)fC(e,74380,L);$B(e,74400)|0;l=M;return}function ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=pe(a,b,2)|0;break}case 3:{d=qe(a)|0;break}default:d=0}$B(a,73904)|0;ne(a,c,d);$B(a,73913)|0;gC(a,+h[b>>3]);$B(a,73919)|0;c=b+8|0;gC(a,-+h[c>>3]);$B(a,73926)|0;gC(a,+h[b+16>>3]-+h[b>>3]);$B(a,73933)|0;gC(a,+h[b+24>>3]-+h[c>>3]);$B(a,73320)|0;return}function je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=pe(a,b,c)|0;break}case 3:{e=qe(a)|0;break}default:e=0}$B(a,73895)|0;ne(a,d,e);$B(a,73310)|0;e=0;while(1){if((e|0)>=(c|0))break;gC(a,+h[b+(e<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(e<<4)+8>>3]);$B(a,99578)|0;e=e+1|0}gC(a,+h[b>>3]);$B(a,97973)|0;gC(a,-+h[b+8>>3]);$B(a,73320)|0;return}function ke(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=pe(a,d,e)|0;break}case 3:{f=qe(a)|0;break}default:f=0}$B(a,73490)|0;if(b[g+260>>1]&512){$B(a,73496)|0;$B(a,qH(c[g+212>>2]|0)|0)|0;$B(a,73502)|0}ne(a,h,f);$B(a,73507)|0;re(a,d,e);$B(a,73320)|0;return}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;$B(a,73300)|0;ne(a,0,0);$B(a,73310)|0;d=0;while(1){if((d|0)>=(c|0))break;gC(a,+h[b+(d<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(d<<4)+8>>3]);$B(a,99578)|0;d=d+1|0}$B(a,73320)|0;return}function me(a,b){a=a|0;b=b|0;$B(a,73294)|0;$B(a,qH(b)|0)|0;$B(a,75354)|0;return}function ne(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;$B(b,73325)|0;a:do switch(d|0){case 2:{c[f>>2]=e;fC(b,73333,f);break}case 3:{c[g>>2]=e;fC(b,73344,g);break}case 0:{$B(b,132627)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,73355,j)}}}while(0);$B(b,73374)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);d=m+152|0;if(+h[d>>3]!=1.0){$B(b,73385)|0;gC(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=73425;fC(b,73402,o);break}case 2:{c[n>>2]=73429;fC(b,73402,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;fC(b,73433,p)}while(0);$B(b,95669)|0;l=q;return}function oe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,134297)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,73454,117,73474)}while(0);l=g;return}function pe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[45952]|0;c[45952]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;aN(d,k,e,f,0);c[o>>2]=q;fC(b,73727,o);$B(b,73792)|0;gC(b,+h[k>>3]);$B(b,73797)|0;gC(b,+h[k+8>>3]);$B(b,73804)|0;gC(b,+h[k+16>>3]);$B(b,73811)|0;gC(b,+h[k+24>>3]);$B(b,73818)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;fC(b,73823,i)}else $B(b,73599)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;fC(b,96586,m)}else s=7;while(0);if((s|0)==7)$B(b,73650)|0;$B(b,73653)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;fC(b,73823,n)}else $B(b,73659)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;fC(b,96586,r)}else s=14;while(0);if((s|0)==14)$B(b,73650)|0;$B(b,73863)|0;l=t;return q|0}function qe(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[45951]|0;c[45951]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;fC(b,73515,k);$B(b,73599)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,96586,j)}else p=6;while(0);if((p|0)==6)$B(b,73650)|0;$B(b,73653)|0;$B(b,73659)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;fC(b,96586,o)}else p=10;while(0);if((p|0)==10)$B(b,73650)|0;$B(b,73695)|0;l=q;return n|0}function re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;fC(a,73512,g);gC(a,+h[b+(f<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function se(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;$B(b,74483)|0;$B(b,qH(d)|0)|0;if(e|0){c[h>>2]=qH(e)|0;fC(b,74491,h)}c[i>>2]=f;fC(b,74495,i);d=xx(g,74507)|0;if(d|0?a[d>>0]|0:0){$B(b,99578)|0;$B(b,qH(d)|0)|0}$B(b,95669)|0;l=j;return}function te(a){a=a|0;var b=0;$B(a,75314)|0;b=a+12|0;$B(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,75330)|0;return}function ue(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;$B(b,75291)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,De(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,75302,e);c[45953]=0;l=f;return}function ve(a){a=a|0;c[45953]=1;return}function we(a){a=a|0;c[45953]=-1;return}function xe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){Ee(b);$B(b,75230)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];iC(b,i);$B(b,75244)|0;$B(b,c[e>>2]|0)|0;$B(b,75253)|0;$B(b,75051)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));Fe(b,i);$B(b,75255)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;$B(b,95669)|0;$B(b,k)|0;$B(b,95669)|0;c[m>>2]=j;fC(b,75264,m);switch(a[e+48>>0]|0){case 108:{$B(b,75269)|0;break}case 114:{$B(b,75280)|0;break}default:{}}Ge(b);$B(b,150517)|0}l=n;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;Ee(a);$B(a,75216)|0;jC(a,b,2);$B(a,75051)|0;do if(!d)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){Ee(a);$B(a,75188)|0;jC(a,b,d);$B(a,75051)|0;do if(!e)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Fe(a,i);$B(a,75162)|0;gC(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){$B(a,75059)|0;e=c[k>>2]|0}if((e|0)==2)$B(a,75068)|0;$B(a,75171)|0;Ge(a);$B(a,150517)|0}l=m;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));Fe(a,g);b=c[h>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[h>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=i;return}function Ce(a,b){a=a|0;b=b|0;$B(a,75034)|0;$B(a,De(b)|0)|0;$B(a,150517)|0;return}function De(a){a=a|0;return a|0}function Ee(b){b=b|0;if(!(a[b+144>>0]|0))$B(b,75159)|0;else $B(b,c[b+148>>2]|0)|0;return}function Fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,94227)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75077,49,75141)}while(0);l=g;return}function Ge(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=108399;e=f+8|0;break}case 10:{b=0;d=108399;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=108368;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=108368;e=f+8|0;break}case 0:{b=1;d=108412;e=f+8|0;break}case 4:{b=0;d=75113;e=f+8|0;break}case 1:{b=1;d=108412;e=f+8|0;break}case 5:{b=0;d=108412;e=f+8|0;break}default:qa(135312,75077,106,75096)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;fC(a,75125,g);l=h;return}function He(a){a=a|0;var b=0;$B(a,78049)|0;$B(a,78057)|0;b=a+12|0;$B(a,Se(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,78090)|0;return}function Ie(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[45957]=~~(+h[b+232>>3]-+h[b+216>>3]);c[45956]=~~(+h[b+224>>3]-+h[b+208>>3]);$B(b,76736)|0;$B(b,76743)|0;d=ry(c[d+8>>2]|0)|0;if(a[d>>0]|0){$B(b,76812)|0;$B(b,Se(d)|0)|0;$B(b,76820)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,76829,e);$B(b,76849)|0;$B(b,76884)|0;$B(b,76912)|0;$B(b,76918)|0;$B(b,76961)|0;$B(b,77002)|0;$B(b,77021)|0;$B(b,77038)|0;$B(b,77086)|0;$B(b,77139)|0;$B(b,77215)|0;$B(b,77291)|0;$B(b,77300)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77614)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77627)|0;$B(b,77635)|0;$B(b,77641)|0;$B(b,77655)|0;$B(b,77663)|0;$B(b,77696)|0;e=(c[45957]|0)+10|0;c[f>>2]=c[45956];c[f+4>>2]=e;fC(b,77773,f);$B(b,77803)|0;$B(b,77812)|0;$B(b,77870)|0;$B(b,77880)|0;$B(b,77945)|0;f=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=f;fC(b,77982,g);g=c[45957]|0;c[i>>2]=c[45956];c[i+4>>2]=g;fC(b,78010,i);l=j;return}function Je(a){a=a|0;$B(a,76287)|0;$B(a,76299)|0;$B(a,76307)|0;$B(a,76370)|0;$B(a,76299)|0;$B(a,76415)|0;$B(a,76464)|0;$B(a,76518)|0;$B(a,76299)|0;$B(a,76618)|0;$B(a,76667)|0;$B(a,76299)|0;$B(a,76719)|0;return}function Ke(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;$B(b,76245)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=Se(d)|0;fC(b,76248,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=Se(e)|0;fC(b,76259,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=Se(f)|0;fC(b,76271,i)}$B(b,76284)|0;l=j;return}function Le(a){a=a|0;$B(a,76239)|0;return}function Me(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i<k){i=k*1.1+1.0;h[g>>3]=i}B=j+-8.0;k=+((c[45957]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);fC(b,75901,n);h[o>>3]=B;h[o+8>>3]=k;fC(b,75838,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;fC(b,75862,p);$B(b,75936)|0;$B(b,75970)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];fC(b,76060,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;fC(b,76079,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;fC(b,76096,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;fC(b,76114,v)}}else{c[q>>2]=c[g>>2];fC(b,76060,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];fC(b,76130,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(O$(g,134232)|0){c[z>>2]=g;fC(b,76150,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;fC(b,76160,y);break}default:qa(135312,75624,438,76181)}$B(b,76194)|0;$B(b,Se(c[f>>2]|0)|0)|0;$B(b,76205)|0;$B(b,76228)|0;l=A;return}function Ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;$B(a,75802)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[45957]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;fC(a,75838,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;fC(a,75862,f);We(a,d);$B(a,75684)|0;Ue(a);$B(a,75890)|0;l=e;return}function Oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;$B(a,75407)|0;n=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=n;fC(a,75660,g);We(a,e);$B(a,75684)|0;Ue(a);$B(a,75687)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){$B(a,75714)|0;h[j>>3]=i;h[j+8>>3]=f;fC(a,75780,j);$B(a,75791)|0}else{h[k>>3]=i;h[k+8>>3]=f;fC(a,75780,k)}if((e|0)==(g|0))$B(a,75794)|0;e=e+1|0}$B(a,75523)|0;l=m;return}function Pe(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;$B(a,75407)|0;h=c[45957]|0;c[e>>2]=c[45956];c[e+4>>2]=h;fC(a,75660,e);We(a,g);$B(a,75684)|0;Ue(a);$B(a,75687)|0;Xe(a,b,d);$B(a,75700)|0;l=f;return}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;$B(a,75407)|0;g=c[45957]|0;c[f>>2]=c[45956];c[f+4>>2]=g;fC(a,75444,f);$B(a,75484)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){$B(a,75496)|0;m=+((c[45957]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;fC(a,75500,i);$B(a,75511)|0}else{m=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;fC(a,75500,j)}if((e|0)==(f|0))$B(a,75515)|0;e=e+1|0}$B(a,75519)|0;Ue(a);$B(a,75523)|0;l=k;return}function Re(a,b){a=a|0;b=b|0;$B(a,75342)|0;$B(a,Se(b)|0)|0;$B(a,75354)|0;return}function Se(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[45954]|0;if(!d){c[45955]=64;d=vH(64)|0;c[45954]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[45955]|0;if((q|0)>(b+-8|0)){d=b<<1;c[45955]=d;d=xH(c[45954]|0,d)|0;c[45954]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=99127;t=26;break b}case 62:{e=4;b=99110;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=99121;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=99090;t=26;break b}case 39:{e=5;b=99115;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=A3(j|0,f|0,6)|0;g=s3(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Te(p)|0)==0;e=b?5:1;b=b?99104:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?99097:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=x3(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=w3(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){E1(75360,46,1,c[15686]|0)|0;Sa(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[45954]|0}return 0}function Te(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Ue(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;$B(a,75535)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ve(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;fC(a,75553,j)}switch(c[i+144>>2]|0){case 1:{$B(a,75570)|0;break}case 2:{$B(a,75588)|0;break}default:{}}$B(a,75605)|0;l=k;return}function Ve(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,132627)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75624,94,75644)}while(0);l=g;return}function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)$B(a,75763)|0;else{d=c[a+16>>2]|0;$B(a,75733)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ve(a,f);$B(a,75760)|0}l=g;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=75714;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[45957]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;fC(a,75717,g);e=(f|0)==0?75730:191979;f=f+1|0}$B(a,95669)|0;l=i;return}function Ye(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;$B(a,80347)|0;$B(a,80362)|0;$B(a,80401)|0;$B(a,80450)|0;c[e>>2]=134232;c[e+4>>2]=80538;fC(a,80519,e);c[d>>2]=134116;c[d+4>>2]=80544;fC(a,80519,d);l=b;return}function Ze(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79300,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;fC(a,79322,d);$B(a,79469)|0;$B(a,80299)|0;l=b;return}function _e(a){a=a|0;$B(a,79283)|0;return}function $e(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;fC(a,79253,h);g[45958]=+(O(d,-10)|0);l=f;return}function af(a){a=a|0;$B(a,79236)|0;return}function bf(a){a=a|0;$B(a,79218)|0;return}function cf(a){a=a|0;$B(a,79202)|0;return}function df(a){a=a|0;$B(a,79181)|0;g[45958]=+g[45958]+-2.0;return}function ef(a){a=a|0;$B(a,79162)|0;return}function ff(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79140,d);l=b;return}function gf(a){a=a|0;$B(a,79124)|0;return}function hf(a){a=a|0;$B(a,79106)|0;g[45958]=+g[45958]+-5.0;return}function jf(a){a=a|0;$B(a,79090)|0;g[45958]=+g[45958]+5.0;return}function kf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;fC(b,78936,n);g[45959]=+g[45958]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=qf(b,78988,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=qf(b,78205,m)|0;f=+g[45959];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=qf(b,78237,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=rf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=79075;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=qf(b,79e3,q)|0;$B(b,q)|0;D_(q);D_(i);D_(o);D_(d);D_(n);l=r;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;$B(a,78813)|0;g[45959]=+g[45958]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=qf(a,78173,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=qf(a,78205,e)|0;A=+g[45959];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=qf(a,78237,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=rf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=qf(a,78828,n)|0;$B(a,w)|0;D_(b);D_(e);D_(f);D_(v);D_(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=qf(a,78173,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=qf(a,78205,r)|0;A=+g[45959];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=qf(a,78237,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=rf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=qf(a,78874,y)|0;$B(a,y)|0;D_(f);D_(e);D_(b);D_(x);D_(y)}l=z;return}function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;$B(a,78678)|0;g[45959]=+g[45958]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=qf(a,78173,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=qf(a,78205,m)|0;L=+g[45959]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=qf(a,78237,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,0.0)|0;c[f>>2]=78300;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=qf(a,78269,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=qf(a,78314,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=qf(a,78343,r)|0;D_(M);D_(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=qf(a,78314,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=qf(a,78343,t)|0;D_(x);D_(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=qf(a,78693,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=qf(a,78398,v)|0;D_(x);$B(a,M)|0;D_(k);D_(m);D_(n);D_(j);D_(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=qf(a,78173,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=qf(a,78205,z)|0;N=+g[45959]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=qf(a,78237,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,.25)|0;c[D>>2]=d;i=0;f=qf(a,78738,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=qf(a,78753,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=qf(a,78775,H)|0;D_(D);D_(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=qf(a,78785,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=qf(a,78398,J)|0;D_(I);$B(a,M)|0;D_(n);D_(m);D_(k);D_(j);D_(M)}l=K;return}function nf(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;$B(a,78605)|0;g[45959]=+g[45958]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=qf(a,78173,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=qf(a,78205,s)|0;C=+g[45959]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=qf(a,78237,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=rf(a,e,0.0)|0;c[k>>2]=78619;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=qf(a,78269,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=qf(a,78314,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=qf(a,78343,w)|0;D_(k);D_(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=qf(a,78314,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=qf(a,78343,y)|0;D_(k);D_(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=qf(a,78628,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=qf(a,78398,A)|0;D_(b);$B(a,d)|0;D_(r);D_(s);D_(t);D_(n);D_(d);l=B;return}function of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;$B(a,78157)|0;g[45959]=+g[45958]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=qf(a,78173,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=qf(a,78205,n)|0;w=+g[45959];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=qf(a,78237,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=rf(a,e,0.0)|0;c[m>>2]=78300;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=qf(a,78269,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=qf(a,78314,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=qf(a,78343,s)|0;D_(x);D_(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=qf(a,78352,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=qf(a,78398,u)|0;D_(t);$B(a,x)|0;D_(q);D_(n);D_(o);D_(i);D_(x);l=v;return}function pf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,78138,e);l=d;return}function qf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=q0(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=C_(g+1|0)|0;c[f>>2]=d;Z0(a,b,f)|0;break}else{a=n1(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=c$(c[(O_()|0)>>2]|0)|0;ub[a&63](78583,h);a=n1(191979)|0}while(0);l=i;return a|0}function rf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(b$(f,133220)|0)){c[k>>2]=78420;h[k+8>>3]=e;f=qf(a,78403,k)|0;break a}if(!(b$(f,130350)|0)){c[m>>2]=78424;h[m+8>>3]=e;f=qf(a,78403,m)|0;break a}if(!(b$(f,128349)|0)){c[p>>2]=78430;h[p+8>>3]=e;f=qf(a,78403,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=qf(a,78403,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=qf(a,78435,i)|0;break}default:{p=c[15686]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;g1(p,78474,j)|0;qa(135312,78524,436,78544)}}while(0);c[o>>2]=f;p=qf(a,78561,o)|0;D_(f);l=q;return p|0}function sf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=80990;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;fC(a,83609,g);f=ry(c[f+8>>2]|0)|0;c[e>>2]=80990;c[e+4>>2]=f;fC(a,83641,e);c[d>>2]=80990;fC(a,83655,d);l=b;return}function tf(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=80990;fC(a,83557,d);l=b;return}function uf(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4025]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}Gf();c[4025]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;fC(a,81177,m);c[n>>2]=80990;fC(a,81192,n);if(d>0.0){b=+j$(d);h[18829]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[18829]=b;h[B>>3]=b;h[B+8>>3]=b;fC(a,81361,B);c[S>>2]=80990;fC(a,81396,S);c[o>>2]=80990;fC(a,81454,o);c[p>>2]=80990;fC(a,81514,p);c[q>>2]=80990;fC(a,81563,q);c[r>>2]=80990;fC(a,81602,r);c[s>>2]=80990;fC(a,81653,s);c[t>>2]=80990;fC(a,81715,t);c[u>>2]=80990;fC(a,81825,u);c[v>>2]=80990;fC(a,81916,v);c[w>>2]=80990;fC(a,81970,w);c[x>>2]=80990;fC(a,82039,x);fC(a,82075,y);c[z>>2]=80990;fC(a,82200,z);c[A>>2]=80990;fC(a,82229,A);fC(a,82269,C);c[E>>2]=80990;fC(a,82362,E);c[F>>2]=80990;fC(a,82421,F);c[G>>2]=80990;fC(a,82502,G);fC(a,82572,H);c[I>>2]=80990;fC(a,82661,I);c[J>>2]=80990;fC(a,82766,J);c[K>>2]=80990;fC(a,82842,K);c[L>>2]=80990;fC(a,82881,L);c[M>>2]=80990;fC(a,82980,M);c[N>>2]=80990;fC(a,83026,N);fC(a,83115,O);c[P>>2]=80990;fC(a,83156,P);c[Q>>2]=80990;fC(a,83239,Q);c[R>>2]=80990;fC(a,83340,R);h[T>>3]=e;h[T+8>>3]=d;fC(a,83404,T);fC(a,83432,U);fC(a,83440,V);l=W;return}function vf(a){a=a|0;var b=0;b=l;l=l+16|0;fC(a,81170,b);l=b;return}function wf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[45960]|0;if(d|0?(b$(d,f)|0)==0:0)break;c[o>>2]=Ef(f)|0;fC(b,81069,o);o=c[m>>2]|0;c[45960]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[45961]|0)){j=+h[18829];c[p>>2]=f;h[p+8>>3]=j;fC(b,81077,p);c[45961]=f}c[q>>2]=Ff(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;fC(b,81098,q);l=r;return}function xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?81011:191979;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;fC(a,81017,f);l=e;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,1);l=e;return}function zf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=C_((d*140|0)+140|0)|0;Cf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(Y0(j,80995,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;fC(a,81002,q);D_(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,s);e=e+1|0}$B(a,150517)|0;l=t;return}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,0);l=e;return}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=80990;c[e+4>>2]=b;fC(a,80983,e);l=d;return}function Cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function Ef(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15828;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(b$(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=81151;c[f+4>>2]=b;Pw(1,81125,f)|0;d=o1(b,45)|0;if(!d){d=81168;break}a[d>>0]=0}l=h;return d|0}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45962]|0;if(!d){c[45963]=64;d=C_(64)|0;c[45962]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45963]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45963]=d;d=F_(c[45962]|0,d)|0;c[45962]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45962]|0}function Gf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=81151;c[b+4>>2]=83548;Pw(0,83530,b)|0;l=a;return}function Hf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;fC(a,84128,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,84170,f);l=e;return}function If(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;fC(a,84215,f);$B(a,84307)|0;l=e;return}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)qa(108200,84312,212,84331);if(!b)qa(108230,84312,213,84331);p=b+8|0;if(!(c[p>>2]|0))qa(108233,84312,214,84331);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){fC(a,84352,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;fC(a,84355,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;fC(a,84355,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;fC(a,84362,n)}fC(a,84352,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;fC(a,84355,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;fC(a,84355,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;fC(a,84377,s)}l=t;return}function Lf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)qa(108200,84312,153,84393);if(!d)qa(108230,84312,154,84393);if(!(c[d+8>>2]|0))qa(108233,84312,155,84393);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==98)g=18;else{tb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((zC(d)|0)<<24>>24))break;f=j3(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){J1(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=U_(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=98;AC(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;fC(b,84411,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];fC(b,84442,m)}else kJ(b,d);fC(b,84457,n)}l=o;return}function Mf(a){a=a|0;S_(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function Nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)qa(108200,84312,121,84467);e=c[a+16>>2]|0;if(!e)qa(96876,84312,123,84467);if(!b)qa(108230,84312,124,84467);d=b+8|0;if(!(c[d>>2]|0))qa(108233,84312,125,84467);if(!(c[e+8>>2]|0))qa(135797,84312,128,84467);else{fC(a,84487,g);fC(a,84496,g+8|0);fC(a,84523,g+16|0);fC(a,84548,g+24|0);fC(a,84577,g+32|0);fC(a,84605,g+40|0);c[f>>2]=c[d>>2];fC(a,84612,f);fC(a,84651,g+56|0);fC(a,107982,g+64|0);l=g;return}}function Of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)qa(108200,84312,97,84656);if(!b)qa(108230,84312,98,84656);e=c[b+8>>2]|0;if(!e)qa(108233,84312,99,84656);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;fC(a,84675,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;fC(a,84733,g);l=i;return}}function Pf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)qa(108200,84312,53,84765);if(!b)qa(108230,84312,54,84765);e=b+8|0;if(!(c[e>>2]|0))qa(108233,84312,55,84765);$B(a,84784)|0;$B(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;fC(a,84913,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;fC(a,84804,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;fC(a,84883,m)}$B(a,84992)|0;l=o;return}function Qf(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;Rf(b);b=Ty(a,b)|0}c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;Sf(b);b=Gx(a,b)|0}c=Ty(a,c)|0}return}function Rf(a){a=a|0;var b=0,d=0;Az(a,134365,304,1)|0;dM(a);bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=uH(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=uH(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=uH(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=uH(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=uH(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Sf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;Az(d,134378,176,1)|0;eM(d)|0;h=KL(d,c[46404]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=NL(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[46398]|0,191979)|0;i=NL(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[46398]|0,191979)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(Ok(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(KL(d,c[46417]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(KL(d,c[46405]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Tf(a){a=a|0;var b=0,d=0;Uf(c[(c[a+16>>2]|0)+192>>2]|0);d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}Vf(d);d=Ty(a,d)|0}Wf(a);return}function Uf(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;Xf(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}D_(d);D_(b);b=g}return}function Vf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){D_(d);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)tb[c[(c[b+4>>2]|0)+4>>2]&127](a);Cz(a,134365)|0;return}function Wf(a){a=a|0;var d=0,e=0,f=0;d=wA(a)|0;while(1){if(!d)break;Wf(d);d=xA(d)|0}if(Az(a,134401,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){D_(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;D_(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){D_(e+-64|0);break}else{D_(e);break}}while(0);if((fz(a)|0)!=(a|0)){nH(c[(c[f>>2]|0)+12>>2]|0);Cz(a,134401)|0}}return}function Xf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a}return}function Yf(a){a=a|0;if(ay(a)|0)Zf(a);eJ(a);return}function Zf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=YD(a,-1,8)|0;d=ZD(a,0,f)|0;XD(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)_f(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=rD(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){_f(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){_f(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;$f(b,a);_f(b);d=d+1|0;b=c[g>>2]|0}ag(a);WD(c[g>>2]|0,e,a,f)|0;bg(a);cg(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;D_(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Wf(c[f>>2]|0);dz(a,c[f>>2]|0)|0;b=b+1|0}D_(e)}l=h;return}function _f(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=KL(a,nx(a,0,85007,0)|0,-1,1)|0;$M(a,10);d=Nk(a,e)|0;eg(a,a);Qf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){zj(a,d);if(f){d=3;break}if(c[g>>2]|0){Pw(0,85013,k)|0;c[e>>2]=0;d=0}Jh(a,(d|0)!=0&1);if(h){d=7;break}Mi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)fg(a,1);else if((d|0)==7)fg(a,2);else if((d|0)==9)fg(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)gg(a);tk(a);kg(a);if((QL(xx(a,85104)|0)|0)<<24>>24)nl(a)}l=m;return}function $f(b,d){b=b|0;d=d|0;var e=0,f=0;Az(b,134401,280,1)|0;e=uH(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function ag(a){a=a|0;var b=0,d=0,e=0;b=uH((ay(a)|0)<<4)|0;d=Sy(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=Ty(a,d)|0}return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=Ty(a,d)|0}D_(e);return}function cg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=uH((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=qD(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;dg(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function dg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;Az(d,134401,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=uH((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=qD(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;dg(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function eg(a,b){a=a|0;b=b|0;if((fz(a)|0)!=(a|0))Az(a,134401,280,1)|0;if((a|0)==(b|0))c[(c[(fz(a)|0)+16>>2]|0)+188>>2]=a;a=wA(a)|0;while(1){if(!a)break;eg(a,b);a=xA(a)|0}return}function fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=nx(a,1,87076,191979)|0;g=nx(a,1,85147,191979)|0;h=(b|0)>0;d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],Y0(e,134313,j)|0,rx(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];Y0(e,134313,k)|0;rx(b,g,e)|0}b=Ty(a,b)|0}l=m;return}function gg(a){a=a|0;var b=0,c=0,d=0;c=vA(a,86580,0)|0;if(c|0){b=Sy(c)|0;while(1){if(!b)break;d=Ty(c,b)|0;sh(a,b);hg(a,b);Vf(b);cz(a,b)|0;b=d}zA(a,c)|0}return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)qa(85113,85120,248,85130);return}function ig(a){a=a|0;return c[(c[(fz(a)|0)+16>>2]|0)+188>>2]|0}function jg(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function kg(a){a=a|0;lg(a,1);return}function lg(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{Pw(0,85153,f)|0;A=9}}else if(X<<16>>16==8){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){cN(d,0);n=0;m=0;k=0;break}else{ng(d);cN(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){ll(d);if(qJ()|0)break;W=uH(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=uH(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_<y?y:_)}else g=I;B=f+-16|0;z=g+16|0;x=0;t=L;r=M;q=j;u=E;v=m;g=k;f=p;while(1){if((x|0)>=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?(kb[c[17300>>2]&63](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{og(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=xH(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;og(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=xH(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}og(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=xH(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)qa(85221,85234,313,85247);c[Y>>2]=H;c[F>>2]=I;_0(E,L,4,58);c[W+84>>2]=uH((D<<5)+11520|0)|0;c[Y+16>>2]=uH(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=rg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(rg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=uH(w<<2)|0;c[f>>2]=rg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}AJ(d,f,w,P,17296);if((w|0)>1)D_(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){sg(d,Y,W,M,x,w,P);x=u;continue}else{tg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);YK(W,M,x,w,y,+((f|0)/2|0|0),17296);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)kM(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);kM(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{ug(d);n=W;k=W}}f:do if((c[46427]|0)!=0|(c[46428]|0)!=0?(c[46433]|0)!=0|(c[46432]|0)!=0:0){j=Sy(d)|0;while(1){if(!j)break f;g:do if(c[46427]|0){f=Hx(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){eL(i,1)|0;kM(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Ix(d,f)|0}}while(0);h:do if(c[46428]|0){f=Ex(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?eL(f,0)|0:0)kM(d,c[(c[g>>2]|0)+104>>2]|0);f=Gx(d,f)|0}}while(0);j=Ty(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{D_(m);D_(c[n+84>>2]|0);D_(k);D_(c[Y+16>>2]|0);rJ()}}c[46367]=1;c[46368]=1}while(0);l=Z;return}function mg(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=Ty(a,b)|0}return}function ng(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;qg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}kM(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)qa(85421,85234,234,85440);else if((d|0)==12)return}function og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function pg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=rg(C)|0;r=rg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){F3(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{F3(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function qg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function rg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function sg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){F3(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Sg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Tg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Vg(b,d,e,o,q,y,1);Vg(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[18830]=G;h[18831]=E;k=k+1|0;C=+(k|0);D=v*C;h[18832]=F+D;C=E+m*C;h[18833]=C;h[18834]=G;h[18835]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[18836]=G;h[18837]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[18840]=G;h[18839]=F;h[18838]=E-D;h[18841]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=150640+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];SK(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);o=n}if(p)n=sJ(e,A)|0;else n=yJ(e,A)|0;o=c[A>>2]|0;if(!o)break a;QK(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17296);c[q>>2]=0}}Ug(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Rg(b,f,g,i,q,j);l=B;return}function tg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[45964]|0)){c[45964]=vH(32e3)|0;c[45965]=vH(32e3)|0;c[45966]=2e3;c[45967]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;F3(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{F3(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=rg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=xg(b,K,c[45964]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;yg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];TK(e,K,1,T,zg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if((kb[c[17300>>2]&63](p)|0)<<24>>24)break b;o=t|1;ca=150640+(t<<5)|0;Bg(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=Cg(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=150640+(o<<5)|0;yg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}yg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];WK(e,u,1,U,zg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;Dg(e,I,u,T,U,o);if(!G){k=yJ(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];G3(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=sJ(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[45966]|0)){c[45966]=p<<1;t=xH(c[45964]|0,p<<5)|0;c[45964]=t;o=c[X>>2]|0}else t=c[45964]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=Eg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;Fg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;yg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];TK(e,o,1,T,zg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=150640+(t<<5)|0;Bg(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];yg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;WK(e,r?Y:u,1,U,zg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}Dg(e,I,u,T,U,k);if(G)q=sJ(e,X)|0;else q=yJ(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];G3(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[45966]|0)){c[45966]=n<<1;p=xH(c[45964]|0,n<<5)|0;c[45964]=p;k=c[X>>2]|0}else p=c[45964]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;Fg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){QK(K,c[_>>2]|0,c[45964]|0,v,17296);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[45966]|0;if((k|0)>(c[45967]|0)){c[45967]=k;o=xH(c[45965]|0,k<<4)|0;c[45965]=o;n=c[45964]|0}else o=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}QK(K,c[_>>2]|0,o,v,17296);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;F3(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}QK(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17296);q=q+1|0}}while(0);l=ba;return}function ug(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;if((kb[c[4324]&63](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)vg(e);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function vg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=vH(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}wg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;D_(c[d+(b*48|0)>>2]|0);b=b+1|0}D_(d);c[a>>2]=g;return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=vH(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function xg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Qg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function yg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=Lg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=Mg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j<m?j:m;k=~~(o+(o>=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=Lg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=Mg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j<o)j=p}p=+h[q+24>>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function zg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function Ag(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{Kg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{Kg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function Bg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function Cg(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function Dg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=Hg(b,-1)|0;b=Hg(b,1)|0;if(!((h|0)!=0?!(fL(h)|0):0))i=3;do if((i|0)==3){if(b|0?(fL(b)|0)==0:0)break;h=Ig(d,-1)|0;b=Ig(d,1)|0;if(h|0?(fL(h)|0)==0:0)break;if(b|0?(fL(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];SK(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=150640+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];SK(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];SK(a,j);h=b}Jg(a,d,i)}while(0);l=k;return}function Eg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function Fg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if((kb[c[17300>>2]&63](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){Gg(j,i,~~((f+g)*.5),~~f);break}else{Gg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function Gg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Jg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0<e)){g=j;continue}h[f>>3]=e+16.0;g=j}return}function Kg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Lg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((Og(b,d,e,f)|0)<<24>>24!=0);return b|0}function Mg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(Ng(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(Ng(d,e)|0)==0;return (e?0:d)|0}}return d|0}function Ng(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function Og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Rg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((HJ(J)|0)!=2?(HJ(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Tg(J,B,d,e,f,i);break}else{Yg(J,B,d,e,f,i,g);break}y=uH(156)|0;z=Zg(b,y)|0;t=vA(z,85383,1)|0;Az(t,134401,280,1)|0;zx(t,87076,87090)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=_g(t,q)|0;u=_g(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=$g(z,t,u,o)|0;else k=$g(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=Rx(z,t,u,0,1)|0;else x=g;rx(x,c[46404]|0,85387)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;$M(z,i);Qf(z);zj(z,0);Jh(z,0);Mi(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}tk(z);lg(z,0);eJ(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=PK(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];YE((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;kM(b,T)}}r=r+1|0}bh(z,y)}else Q=3;while(0);if((Q|0)==3?(c[45968]|0)==0:0){c[45968]=1;Pw(0,85260,O)|0;Q=ry(J)|0;S=(ey(b)|0)!=0;T=ry(B)|0;c[P>>2]=Q;c[P+4>>2]=S?134656:138665;c[P+8>>2]=T;Pw(3,85366,P)|0}l=R;return}function Sg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Vg(b,d,e,p,f,t,1);Vg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[18830]=A;h[18831]=+h[t+56+(m<<5)+24>>3];h[18832]=E;h[18833]=B;h[18834]=A;h[18835]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[18836]=A;h[18837]=D;h[18838]=C;h[18841]=B;h[18839]=+h[v+56+(i<<5)+24>>3];h[18840]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];SK(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=150640+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];SK(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];SK(e,u);j=i}if((g|0)==10)j=sJ(e,w)|0;else j=yJ(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Pg(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Pg(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)QK(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17296);l=z;return}function Tg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Pg(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Pg(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Xg(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Xg(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Xg(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Xg(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Xg(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Xg(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Xg(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Xg(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;QK(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17296);i=i+z;b=b+1|0}l=N;return}function Ug(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Wg(a,d,e,q,j,w,1);Wg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[18830]=D;h[18833]=B;m=m+1|0;z=+(m|0);A=s*z;h[18832]=C+A;z=B-n*z;h[18831]=z;h[18834]=D;h[18837]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[18836]=D;h[18835]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[18840]=D;h[18841]=C;h[18838]=B-A;h[18839]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=150640+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];SK(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);p=o}if(a)o=yJ(e,v)|0;else o=sJ(e,v)|0;p=c[v>>2]|0;if(!p)break;QK(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17296);c[d>>2]=0}l=x;return}function Vg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Wg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Xg(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Yg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=uH(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}_0(U,g,4,59);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Pg(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Pg(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];QK(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17296);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0;p=t}D_(U)}while(0);l=Y;return}function Zg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(ey(b)|0)==0;j=j?18488:18480;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=Xx(85398,f,0)|0;Az(f,134401,280,1)|0;nx(f,0,87076,191979)|0;j=uH(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=sx(fz(b)|0,1,0)|0;while(1){if(!e)break;nx(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,1,e)|0}e=sx(fz(b)|0,2,0)|0;while(1){if(!e)break;nx(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,2,e)|0}if(!(nx(f,2,108382,0)|0))nx(f,2,108382,191979)|0;if(!(nx(f,2,108373,0)|0))nx(f,2,108373,191979)|0;ch(f,d);l=g;return f|0}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=az(a,ry(b)|0,1)|0;Az(a,134365,304,1)|0;Bx(b,a)|0;if((HJ(b)|0)==2){f=b+16|0;b=vH((W_(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];Y0(b,85393,d)|0;zx(a,105198,b)|0}l=e;return a|0}function $g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Rx(a,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(d,c)|0;return c|0}function ah(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Pg(a,f,g);l=i;return}function bh(a,b){a=a|0;b=b|0;c[46419]=c[b>>2];c[46423]=c[b+4>>2];c[46424]=c[b+8>>2];c[46404]=c[b+12>>2];c[46405]=c[b+16>>2];c[46411]=c[b+20>>2];c[46410]=c[b+24>>2];c[46409]=c[b+28>>2];c[46435]=c[b+32>>2];c[46427]=c[b+36>>2];c[46412]=c[b+40>>2];c[46422]=c[b+44>>2];c[46431]=c[b+48>>2];c[46430]=c[b+52>>2];c[46429]=c[b+56>>2];c[46434]=c[b+60>>2];c[46428]=c[b+64>>2];c[46413]=c[b+68>>2];c[46375]=c[b+72>>2];c[46376]=c[b+76>>2];c[46377]=c[b+80>>2];c[46387]=c[b+84>>2];c[46380]=c[b+88>>2];c[46381]=c[b+92>>2];c[46382]=c[b+96>>2];c[46384]=c[b+100>>2];c[46385]=c[b+104>>2];c[46388]=c[b+108>>2];c[46391]=c[b+112>>2];c[46389]=c[b+116>>2];c[46390]=c[b+120>>2];c[46393]=c[b+124>>2];c[46392]=c[b+128>>2];c[46394]=c[b+132>>2];c[46395]=c[b+136>>2];c[46386]=c[b+140>>2];c[46398]=c[b+144>>2];c[46370]=c[b+148>>2];c[46367]=c[b+152>>2];D_(b);Tf(a);$x(a)|0;return}function ch(a,b){a=a|0;b=b|0;c[b>>2]=c[46419];c[b+4>>2]=c[46423];c[b+8>>2]=c[46424];c[b+12>>2]=c[46404];c[b+16>>2]=c[46405];c[b+20>>2]=c[46411];c[b+24>>2]=c[46410];c[b+28>>2]=c[46409];c[b+32>>2]=c[46435];c[b+36>>2]=c[46427];c[b+40>>2]=c[46412];c[b+44>>2]=c[46422];c[b+48>>2]=c[46431];c[b+52>>2]=c[46430];c[b+56>>2]=c[46429];c[b+60>>2]=c[46434];c[b+64>>2]=c[46428];c[b+68>>2]=c[46413];c[b+72>>2]=c[46375];c[b+76>>2]=c[46376];c[b+80>>2]=c[46377];c[b+84>>2]=c[46387];c[b+88>>2]=c[46380];c[b+92>>2]=c[46381];c[b+96>>2]=c[46382];c[b+100>>2]=c[46384];c[b+104>>2]=c[46385];c[b+108>>2]=c[46388];c[b+112>>2]=c[46391];c[b+116>>2]=c[46389];c[b+120>>2]=c[46390];c[b+124>>2]=c[46393];c[b+128>>2]=c[46392];c[b+132>>2]=c[46394];c[b+136>>2]=c[46395];c[b+140>>2]=c[46386];c[b+144>>2]=c[46398];c[b+152>>2]=c[46367];c[b+148>>2]=c[46370];c[46419]=0;c[46423]=nx(a,2,87317,0)|0;c[46424]=nx(a,2,87326,0)|0;b=nx(a,2,98515,0)|0;c[46404]=b;if(!b)c[46404]=nx(a,2,98515,191979)|0;c[46405]=0;c[46411]=0;c[46410]=nx(a,2,98411,0)|0;c[46409]=nx(a,2,98402,0)|0;c[46435]=nx(a,2,98691,0)|0;c[46427]=0;c[46412]=nx(a,2,105198,0)|0;c[46422]=nx(a,2,85403,0)|0;c[46431]=0;c[46430]=nx(a,2,98591,0)|0;c[46429]=nx(a,2,98577,0)|0;c[46434]=nx(a,2,98682,0)|0;c[46428]=0;c[46413]=0;c[46375]=nx(a,1,137966,0)|0;c[46376]=nx(a,1,138034,0)|0;c[46377]=nx(a,1,105204,0)|0;c[46387]=0;c[46380]=nx(a,1,98402,0)|0;c[46381]=nx(a,1,98411,0)|0;c[46382]=0;c[46384]=nx(a,1,105198,0)|0;c[46385]=0;c[46388]=0;c[46391]=nx(a,1,98383,0)|0;c[46389]=nx(a,1,137994,0)|0;c[46390]=nx(a,1,98446,0)|0;c[46393]=nx(a,1,98458,0)|0;c[46392]=nx(a,1,98322,0)|0;c[46394]=nx(a,1,98463,0)|0;c[46395]=nx(a,1,85415,0)|0;c[46386]=0;c[46398]=0;c[46370]=nx(a,0,98383,0)|0;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(f<e))if(i>g)a=-1;else a=i<g&1;else a=1;else a=-1;else a=b&1;return a|0}function eh(a){a=a|0;var b=0,d=0,e=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function ih(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=vH((c[d+184>>2]<<2)+8|0)|0;else b=xH(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function kh(a){a=a|0;if(!a)qa(85456,85466,117,85475);else{jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function lh(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=vH((c[d+208>>2]<<2)+8|0)|0;else b=xH(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function mh(a){a=a|0;nh(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=vH((e<<2)+8|0)|0;else d=xH(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function oh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=uH(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=uH(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function ph(a,b,c){a=a|0;b=b|0;c=c|0;return ih(oh(a,b,c)|0)|0}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))qa(85492,85466,215,85508);else return}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))qa(85518,85466,220,85525);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)qa(85538,85466,221,85525);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(th(a,b)|0))qa(85557,85466,231,85578);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function th(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function uh(b){b=b|0;var d=0,e=0,f=0,g=0;d=uH(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=uH(304)|0;c[d+24>>2]=fz(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=uH(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=uH(20)|0;c[(c[e>>2]|0)+180>>2]=f;qh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function vh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=vH((c[e+192>>2]<<2)+8|0)|0;else e=xH(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=vH((c[e+200>>2]<<2)+8|0)|0;else e=xH(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(ig(b)|0)+16>>2]|0)+240>>0]=1;return}function wh(a){a=a|0;var b=0,d=0;if(!a)qa(85456,85466,269,85595);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;yh(a,b);break}else qa(87498,85466,340,85633);else Pw(0,85612,f)|0;while(0);l=f;return}function yh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function zh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;Ah(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))Bh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;Ah(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function Ah(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function Bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)qa(85456,85466,128,85646);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))jh(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){jh(d,a);b=c[a>>2]|0}f=f+1|0}return}function Ch(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[18484]|0;a[n+1>>0]=a[18485]|0;a[n+2>>0]=a[18486]|0;a[n+3>>0]=a[18487]|0;d=Xx(85668,n,0)|0}c[o>>2]=g;Y0(m,134313,o)|0;t=az(d,m,1)|0;Az(t,91080,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if((ay(d)|0)>1)Dh(d,h);$x(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=Sy(a)|0;a:while(1){if(!h)break;i=Ty(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))Rx(a,h,g,0,1)|0}else{Rx(a,g,h,0,1)|0;d=1}g=Ty(a,g)|0}}do if(d|0){h=vA(a,85671,1)|0;j=uH((ay(a)|0)<<2)|0;i=uH((ay(a)|0)<<2)|0;f=b+4|0;e=Sy(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?cy(a,e,1,1)|0:0){c:do if(Eh(a,e,h,i)|0){g=ay(h)|0;if((Fh(a,h,j)|0)!=(g|0)){d=17;break b}_0(i,g,4,60);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);Hh(h)}e=Ty(a,e)|0}if((d|0)==17)qa(85676,85686,265,85697);else if((d|0)==23){D_(j);break}}while(0);return}function Eh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((ay(d)|0)<<2)>>2]=h;Xy(d,b,1)|0;h=Ex(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Gx(a,h)|0}h=Hx(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Ix(a,h)|0}return f|0}function Fh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=Ih(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];cz(b,e)|0;e=Ex(a,e)|0;while(1){if(!e)break;g=Gx(a,e)|0;Ux(a,e)|0;e=g}f=f+1|0}return f|0}function Gh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function Hh(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;c=Ty(a,b)|0;cz(a,b)|0;b=c}return}function Ih(a,b){a=a|0;b=b|0;var c=0;c=Sy(b)|0;while(1){if(!c){c=0;break}if(!(cy(a,c,1,0)|0))break;c=Ty(b,c)|0}return c|0}function Jh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;Kh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;Lh(b,f);f=f+1|0;e=(Mh(b,0,d)|0)+e|0}Nh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(Oh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=xx(b,85711)|0;if(f|0?(QL(f)|0)<<24>>24==0:0)break;ll(b);a[190689]=1;e=Mh(b,2,d)|0}while(0);Ph(b,e);return}function Kh(d){d=d|0;var e=0;if(0)EL();a[190689]=0;c[45971]=d;e=((by(ig(d)|0)|0)<<2)+4|0;c[45970]=uH(e)|0;c[45969]=uH(e)|0;Fi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)Gi(d);Uk(d);Il(d,1);Hi(d);Wh(d);e=c[e>>2]|0;c[45972]=b[e+236>>1];c[45973]=b[e+238>>1];return}function Lh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function Mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=ki(0)|0;li(a)}else e=2147483647;m=c[15686]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[46365]|0;if((k|0)==2)if((e|0)>(b|0)){ni(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((ig(a)|0)==(a|0))mi(a,k);if(!k)Xh(a);Yh(a);g=ki(0)|0;if((g|0)>(b|0)){f=e;e=g}else{li(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;g1(m,86104,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[45974]|0))break;oi(a,j);e=ki(0)|0;if((e|0)>(b|0))g=i;else{li(a);g=+h[22830]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))ni(a);if((b|0)>0){pi(a,0);e=ki(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;qi(a);b=b+1|0}}while(0);l=o;return e|0}function Nh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;ji(a);k=a+16|0;d=c[k>>2]|0;m=c[15686]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=ry(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;g1(m,86054,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function Oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;fl(a);Wh(a);Xh(a);Yh(a);f=a+16|0;d=Mh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(Oh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Zh(a);return d|0}function Ph(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[45969]|0;if(f|0){D_(f);c[45969]=0}f=c[45970]|0;if(f|0){D_(f);c[45970]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Qh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){wh(i);D_(c[j>>2]|0);D_(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Rh(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[15686]|0;d=ry(d)|0;r=+FL();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;g1(o,85722,p)|0}l=q;return}function Qh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Qh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Sh(a,j,-1)|0;j=Sh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Rh(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Th(b,c)|0;if(!b)break;if(Uh(a,b)|0){d=b;continue}e=(Vh(a,b)|0)==0;d=e?d:b}return d|0}function Th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)qa(85761,85686,1023,85763);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else qa(85772,85686,1029,85763);else g=0}return g|0}function Uh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(oz(b,d)|0)!=0&1;else b=0;return b|0}function Vh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(oz(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Wh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[46370]|0;a:do if((d|0)!=0|(c[46391]|0)!=0){d=NL(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(b$(d,85974)|0)){ei(b,1);break a}break}case 105:{if(!(b$(d,95660)|0)){ei(b,0);break a}break}default:{}}c[e>>2]=d;Pw(1,85978,e)|0;break}d=wA(b)|0;while(1){if(!d)break;if(!(Rj(d)|0))Wh(d);d=xA(d)|0}if(c[46391]|0)fi(b)}while(0);l=f;return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=ci(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){di(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Yh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=vH(e)|0;else p=xH(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((_h(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((_h(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=($h(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(_h(d,g)|0){t=37;break a}wh(g);ai(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)qa(85820,85686,1561,85859);if(h|0)D_(q)}return}function Zh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function _h(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(bi(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(bi(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((_h(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=($h(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else qa(85872,85686,1490,85888);return 0}function ai(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}xh(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=vH((c[e+208>>2]<<2)+8|0)|0;else e=xH(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=oh(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];vh(b,m)}return}function bi(a,b){a=a|0;b=b|0;var c=0;c=Uh(a,b)|0;return Vh(a,b)|0|c|0}function ci(a,b){a=a|0;b=b|0;var d=0;d=uH(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=uH(O(b,a)|0)|0;return d|0}function di(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(ig(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((oz(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(oz(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;wh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;ai(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;di(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)qa(85898,85686,1251,85930);else if((q|0)==12)qa(85942,85686,1252,85930);else if((q|0)==16)qa(85898,85686,1260,85930);else if((q|0)==18)qa(85942,85686,1261,85930)}else p=e;while(0);a[p+158>>0]=0;return}function ei(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c)break;gi(a,c,b);c=Ty(a,c)|0}return}function fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=Sy(b)|0;while(1){if(!d)break;e=NL(d,c[46391]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(b$(e,85974)|0)){gi(b,d,1);break a}break}case 105:{if(!(b$(e,95660)|0)){gi(b,d,0);break a}break}default:{}}h=ry(d)|0;c[f>>2]=e;c[f+4>>2]=h;Pw(1,86009,f)|0}while(0);d=Ty(b,d)|0}l=g;return}function gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[45970]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;_0(j,d,4,61);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(hh(e,d)|0)break a;i=oh(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;vh(b,i);f=f+1|0}}}while(0);return}function hi(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function ii(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function ji(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[45972];b[f+238>>1]=c[45973]}return}function ki(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[45971]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=Di(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function li(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function mi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=GL(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;IL(o,g);while(1){f=JL(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){kl(d,f,e,o);continue}else{Bi(d,f);Ci(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(JL(o)|0)Pw(1,86217,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;vi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((ig(d)|0)==(d|0)?(ki(0)|0)>0:0)pi(d,0);HL(o);l=r;return}function ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;_0(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,62);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function oi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[45971]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[45971]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;yi(a,d,g,(xi(a,d,d-f|0)|0)&255);d=d+f|0}pi(a,g^1);return}function pi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(wi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function qi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ri(d,i,j)|0)continue;if(p){f=si(i,j)|0;h=si(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ti(i,j)|0)+f|0;h=(ti(j,i)|0)+h|0}if((h|0)<=(f|0))break}ui(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)qa(86168,85686,721,86194);else if((e|0)==16)return}function ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[190689]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function si(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ti(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ui(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}vi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))vi(e,f)}return}function vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[45971]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function wi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ri(d,j,k)|0)continue;if(r){f=si(j,k)|0;g=si(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ti(j,k)|0)+f|0;g=(ti(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}vi(j,k);i=f-g+i|0;g=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)qa(86168,85686,770,86202);else if((f|0)==17)return i|0;return 0}function xi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[45969]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{_0(p,a,4,60);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(zi(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function yi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(ri(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}vi(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function zi(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function Ai(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function Bi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))qa(86282,85686,1346,86318);g=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=ry(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;Pw(1,86334,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;Pw(1,86407,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=ry(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;Pw(1,86468,o)|0}}else{n=ry(a)|0;o=ry(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;Pw(1,86227,f)|0}while(0);l=p;return}function Ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function Di(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[45975]|0)>(d|0))q=c[45976]|0;else{d=d+1|0;c[45975]=d;f=c[45976]|0;if(!f)d=vH(d<<2)|0;else d=xH(f,d<<2)|0;c[45976]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(Ei(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(Ei(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function Fi(a){a=a|0;var b=0.0,d=0.0;c[45974]=8;c[46365]=24;h[22830]=.995;a=xx(a,86590)|0;if(a|0?(b=+b2(a),b>0.0):0){d=b*+(c[45974]|0);c[45974]=~~(d>1.0?d:1.0);b=b*+(c[46365]|0);c[46365]=~~(b>1.0?b:1.0)}return}function Gi(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=uH(e<<2)|0;Ii(a,d,e,0)|0;D_(d);return}function Hi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=uH((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=Sy(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Gx(a,f)|0}g=Ty(a,g)|0}f=uH((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=uH((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}D_(i);return}function Ii(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=Ii(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((ig(a)|0)!=(a|0)){H3(d|0,0,e<<2|0)|0;g=Sy(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Ex(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Gx(a,i)|0}g=Ty(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=vA(ig(a)|0,86580,1)|0;g=az(f,0,1)|0;Az(g,134365,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=uH(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=uH(20)|0;c[(c[l>>2]|0)+180>>2]=k;Xy(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function Ji(a){a=a|0;var b=0,d=0;Zh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ji(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function Ki(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=Li(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17308+(d*12|0)+((Li(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function Li(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function Mi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){ll(b);Ni(b);if(a[191874]|0)zl(b);Oi(b);if(Rl(b)|0)Ni(b);Pi(b);if(fI(b,2,Qi(b)|0)|0?(Ri(b),fI(b,2,Qi(b)|0)|0):0)qa(86598,86626,134,86637);Si(b);Ti(b,d);Ui(b)}return}function Ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]<j){h[q>>3]=j;h[p>>3]=j}if(+h[r>>3]<j){h[s>>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=KL(f,c[46374]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=tj(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){uj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function Oi(a){a=a|0;var b=0,d=0,e=0;pj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){qj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{qj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Pi(a){a=a|0;bj(a);cj(a);dj(a);ej(a);fj(a);return}function Qi(a){a=a|0;var b=0,c=0.0;b=xx(a,86826)|0;if(!b)a=2147483647;else{c=+b2(b);a=~~(c*+(ay(a)|0))}return a|0}function Ri(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=uh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;$i(o,f,0.0,0)|0;$i(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)qa(86734,86626,111,86737);else if((s|0)==19)return}function Si(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ti(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Vi(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Wi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i<l?i:l;if(i>1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f<i){l=1.0;f=i/f;break}else{l=f/i;f=1.0;break}}else{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i<f){l=1.0;f=f/i;break}else{l=i/f;f=1.0;break}else l=i}while(0);e=(c[k+116>>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Xi(a,f,i)}while(0);if(d|0)Yi(a,d);return}function Ui(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;D_(c[e+16>>2]|0);D_(e);d=d+1|0}if(f){D_(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){D_(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;D_(e);D_(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Vi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}_i(a,b);return}function Wi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Zi(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Zi(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o<q?o:q;o=o>.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Xi(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Xi(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Yi(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[15686]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;g1(n,86650,f)|0;c[g>>2]=zk(a)|0;g1(n,86675,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){E1(86685,34,1,c[15686]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[15686]|0;c[j>>2]=c[b+24>>2];g1(n,86720,j)|0}l=m;return}function Zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function _i(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(ig(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g<m;l=c[(c[s>>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g<x?g:x}}else{i=+(c[(c[(c[w+260>>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function $i(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=uH(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=uH(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){aj(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;ih(i)|0;return i|0}function aj(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;Pw(1,86750,d)|0;l=b;return}function bj(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=uH((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=uH(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function cj(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(XK(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];$i(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(nj(g,f)|0))$i(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(nj(d,f)|0)){$i(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=fh(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))$i(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i<A?A:i);if((f|0)>65535){aj(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function dj(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=uh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;$i(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;$i(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function ej(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){ij(a);jj(a);kj(a);lj(a)}return}function fj(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){gj(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;$i(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function gj(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=KL(a,c[46374]|0,8,0)|0;hj(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=ry(a)|0;c[m+4>>2]=e;Pw(1,86834,m)|0;break}else{$i(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;$i(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function hj(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=uh(ig(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=uh(ig(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(ig(b)|0)!=(b|0):0)?(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;$i(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function ij(a){a=a|0;var b=0,d=0;do if((ig(a)|0)!=(a|0)){gj(a);a=a+16|0;b=c[a>>2]|0;b=fh(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;$i(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;ij(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function jj(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=KL(d,c[46374]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(mj(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;$i(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(mj(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}$i(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;jj(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function kj(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=KL(a,c[46374]|0,8,0)|0;hj(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;hj(e);f=c[b>>2]|0;g=e+16|0;$i(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;$i(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;kj(e);a=a+1|0}return}function lj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=KL(a,c[46374]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;hj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);$i(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}lj(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function mj(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(oz(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(oz(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function nj(a,b){a=a|0;b=b|0;return oj(a,b)|0}function oj(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!(oj(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function pj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=vH((i<<2)+4|0)|0;else d=xH(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];rj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Hx(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=vH((c[e+176>>2]<<2)+8|0)|0;else e=xH(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Ix(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Ex(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=vH((c[e+184>>2]<<2)+8|0)|0;else e=xH(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Gx(a,i)|0}}}while(0);l=o;return}function rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ez(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function sj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=ig(b)|0;g=SL(d)|0;if((g|0)!=(d|0))rh(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];rj(a,d,h);l=i;return}function tj(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))j=8.0;else j=+(KL(a,c[46374]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=tj(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((ig(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(fz(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((ig(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function uj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))e=0;else e=KL(a,c[46374]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;uj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((ig(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)vj(a,~~p,d);if((ig(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function vj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(ig(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function wj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function xj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=Sy(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=Ty(a,h)|0}c[e+264>>2]=d;return}function yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=xx(a,86879)|0;if(!b)b=2147483647;else{g=+b2(b);b=~~(g*+(ay(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];fI(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function zj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(xx(a,86888)|0))Bj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;Aj(a,d)}if(0){g=c[15686]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;g1(g,86896,e)|0}l=f;return}function Aj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[45977]=0;a[h>>0]=a[18484]|0;a[h+1>>0]=a[18485]|0;a[h+2>>0]=a[18486]|0;a[h+3>>0]=a[18487]|0;h=Xx(87106,h,0)|0;Az(h,87135,280,1)|0;mz(h,17404,17344);Cj(b);e=xx(b,86879)|0;if(!e)f=2147483647;else{j=+b2(e);f=~~(j*+(ay(b)|0))}Sj(b,0);Tj(b,h);Uj(b,h);Vj(b,h,0,0);Wj(h);g=Xj(h)|0;Yj(h);if(d|0){Mk(h);Ak(h)}e=xx(b,99560)|0;if(!e)e=-1;else e=a2(e)|0;yH(h,1,f,e)|0;Zj(b,h,g);$x(h)|0;l=i;return}function Bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;Cj(a);do if(!b){Dj(a,a);Pk(a);Ej(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;Il(a,0);b=0}else{Mk(a);Ak(a);Dj(a,a);Pk(a);Ej(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;Il(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);xk(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(Fj(a,f)|0)Il(a,0);if(!b)yj(a);else Bk(a,b);Gj(a,b);Hj(a);l=g;return}function Cj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=Sy(d)|0;while(1){if(!g)break;f=Ex(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Gx(d,f)|0}g=Ty(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function Dj(a,b){a=a|0;b=b|0;var d=0;b=wA(b)|0;while(1){if(!b)break;d=Pj(b)|0;do if(d)if((d|0)==7&(c[46364]|0)==100){Lj(a,b);break}else{Qj(a,b,d);break}else Dj(a,b);while(0);b=xA(b)|0}return}function Ej(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=SL(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=SL(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(SL(h)|0)){g=9;break}wk(d);d=c[e>>2]|0}if((g|0)==9)qa(86999,86939,346,87031);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(SL(i)|0))break;wk(d);d=c[e>>2]|0}qa(87044,86939,353,87031)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function Fj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=Sy(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(SL(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ph(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ph(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=Ty(a,g)|0}}while(0);return (d|0)!=0|0}function Gj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=Sy(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=SL(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:UL(g)}g=Ty(d,g)|0}if((ig(d)|0)==(d|0)){if((c[46364]|0)==100)e=1;else{Kj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;Jj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function Hj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;Ij((c[i>>2]|0)+172|0);Ij((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=Sy(b)|0;while(1){if(!i)break;h=Ex(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=Sy(b)|0;while(1){if(!d)break;e=Ex(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Gx(b,e)|0}d=Ty(b,d)|0}D_(c[k>>2]|0);D_(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Gx(b,h)|0}i=Ty(b,i)|0}D_(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function Ij(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function Jj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;Jj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function Kj(b){b=b|0;var d=0;d=wA(ig(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)Lj(b,d);d=xA(d)|0}return}function Lj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,Mj(a,b),Sy(b)|0):0){Nj(a,b);if((c[46364]|0)==100){Bj(b,0);Oj(b);break}else{xj(b);break}}while(0);return}function Mj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=Sy(d)|0;while(1){if(!g)break;i=Ty(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{dz(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(oz(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))dz(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=Sy(d)|0;while(1){if(!e)break;b=Ex(ig(d)|0,e)|0;while(1){if(!b)break;if(oz(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)Vx(d,b,1)|0;b=Gx(ig(d)|0,b)|0}e=Ty(d,e)|0}return}function Nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function Oj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)qa(86924,86939,238,86946);c[g+264>>2]=h;d=Sy(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}TL(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=Ty(b,d)|0}if((d|0)==11)qa(86961,86939,242,86946);else if((d|0)==13)return}function Pj(b){b=b|0;var d=0;if(!(Rj(b)|0)){d=aM(xx(b,87076)|0,17356,17380)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Qj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=Sy(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=Ty(d,f)|0;if(!f)break;TL(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Rj(a){a=a|0;return (z$(ry(a)|0,104980,7)|0)==0|0}function Sj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(lk(b)|0)){do if(qM(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;mk(b,d);d=b;break}while(0);e=wA(b)|0;while(1){if(!e)break;Sj(e,d);e=xA(e)|0}a:do if(qM(b)|0){e=Sy(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=Ty(b,e)|0}}while(0);switch(nk(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{ok(b)|0;break}case 6:break;default:{e=ry(b)|0;f=xx(b,87076)|0;c[g>>2]=e;c[g+4>>2]=f;Pw(0,87259,g)|0}}if((k|0)==19){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((qM(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=ok(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Tj(a,b){a=a|0;b=b|0;var d=0,e=0;c[45977]=0;d=Sy(a)|0;while(1){if(!d)break;if((_j(d)|0)==(d|0)){e=bk(b,ry(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=Ty(a,d)|0}d=Sy(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(_j(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=Ty(a,d)|0}return}function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Sy(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Ex(a,h)|0;while(1){if(!i)break;do if((gk(i)|0)==0?(j=i+-48|0,k=c[(c[(_j(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(hk(i)|0)){if((fk(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(fk(f)|0)==0:0){ik(b,d,k,i);break}jk(b,d,k,i);break}else{f=_j(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=_j(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}ik(b,d,e,i);break}}while(0);i=Gx(a,i)|0}h=Ty(a,h)|0}return}function Vj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((qM(a)|0)!=0?(fk(a)|0)!=0:0){g=Sy(a)|0;while(1){if(!g)break;if(!(Hx(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=bk(b,87157)|0;Rx(b,d,f,0,1)|0}if(!(Ex(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=bk(b,87162)|0;Rx(b,f,e,0,1)|0}g=Ty(a,g)|0}if((e|0)!=0&(d|0)!=0){ek(Rx(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=wA(a)|0;while(1){if(!d)break;Vj(d,b,f,e);d=xA(d)|0}return}function Wj(b){b=b|0;var d=0,e=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=Ty(b,d)|0}d=Sy(b)|0;while(1){if(!d)break;ck(b,d);d=Ty(b,d)|0}return}function Xj(a){a=a|0;var b=0,d=0,e=0,f=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=Ty(a,b)|0}b=0;e=Sy(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){ak(a,e,d);b=d}e=Ty(a,e)|0}a:do if((b|0)>1){f=bk(a,87151)|0;d=1;e=Sy(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){Rx(a,f,e,0,1)|0;d=d+1|0}e=Ty(a,e)|0}}while(0);return b|0}function Yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Sy(a)|0;while(1){if(!g)break;h=g+16|0;f=Ex(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=vH((c[b+184>>2]<<2)+8|0)|0;else b=xH(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Gx(a,f)|0}g=Ty(a,g)|0}return}function Zj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=uH((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=Sy(a)|0;while(1){if(!h)break;j=c[(c[(c[(_j(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=Ty(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=Sy(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=Ty(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=Sy(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=Ty(a,f)|0}}while(0);$j(a,f);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){D_(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)D_(f);i=Ty(d,i)|0}D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);f=Sy(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=Ty(a,f)|0}if(j)D_(o);return}function _j(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=_j(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function $j(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;$j(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=Sy(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=Ty(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Ex(a,b)|0;while(1){if(!e)break;ak(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break a;ak(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Ix(a,e)|0}}while(0);return}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=az(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=uH(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=uH(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[45977]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[45977]=f;c[b+164>>2]=0;return f|0}function ck(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Ex(b,d)|0;while(1){if(!d)break;e=Gx(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){dk(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}ck(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function dk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;ek(d,e[g+170>>1]|0,c[g+156>>2]|0);dz(a,b)|0;return}function ek(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function fk(a){a=a|0;return (RL(xx(a,87167)|0,0)|0)&255|0}function gk(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function hk(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=kk(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function ik(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=Rx(a,b,d,0,0)|0;if(!g){g=Rx(a,d,b,0,0)|0;if(!g){g=Rx(a,b,d,0,1)|0;if(!g){b=ry(b)|0;f=ry(d)|0;c[h>>2]=b;c[h+4>>2]=f;Pw(1,87184,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;ek(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function jk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Hx(a,d)|0;while(1){if(!h){k=6;break}n=Ex(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Ix(a,h)|0}if((k|0)==6){n=c[45978]|0;c[45978]=n+1;c[j>>2]=n;Y0(i,87175,j)|0;i=bk(a,i)|0;n=Rx(a,i,d,0,1)|0;i=Rx(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function kk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function lk(a){a=a|0;return (Sy(a)|0)==0|0}function mk(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;Nj(b,a);Mj(b,a);return}function nk(b){b=b|0;var c=0;b=xx(b,87076)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(b$(b,87086)|0)if(b$(b,87090)|0)if(b$(b,87097)|0)if(b$(b,87101)|0)if(!(b$(b,87081)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function ok(a){a=a|0;var b=0,c=0;c=Sy(a)|0;a:do if(!c)b=0;else{b=_j(c)|0;while(1){c=Ty(a,c)|0;if(!c)break a;pk(b,c)|0}}while(0);return b|0}function pk(a,b){a=a|0;b=b|0;if(b){a=_j(a)|0;c[(c[(_j(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function qk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87135,c[d>>2]|0,1)|0;return}function rk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87302,c[d+4>>2]|0,1)|0;return}function sk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87287,c[d+8>>2]|0,1)|0;return}function tk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[46423]=nx(b,2,87317,0)|0;k=nx(b,2,87326,0)|0;c[46424]=k;a:do if((k|0)!=0|(c[46423]|0)!=0){k=Sy(b)|0;while(1){if(!k)break a;j=0;d=0;i=Jx(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[46423]|0;do if((f|0)==(k|0)&(g|0)!=0){f=yx(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=uk(m,d,k,i,f)|0;break b}}while(0);f=c[46424]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=yx(i,f)|0,(a[o>>0]|0)!=0):0)e=uk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Kx(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)vk(k,e);e=c[e>>2]|0;if(e|0)D_(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)vk(k,d);d=c[d>>2]|0;if(d|0)D_(d);e=e+1|0}k=Ty(b,k)|0}}while(0);l=p;return}function uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(b$(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=vH((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=xH(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=ry(e)|0;c[k>>2]=5;c[k+4>>2]=r;Pw(1,87335,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=uH(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){sE(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+wE(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function vk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+u$(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+u$(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;NK(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;sE(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function wk(a){a=a|0;var b=0,d=0,e=0;kh(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=fh(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ph(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else xh(a,b);return}function xk(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;yk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function yk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))yk(d)}else{wk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function zk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=Sy(a)|0;b=0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Gx(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=Ty(a,e)|0}return b|0}function Ak(b){b=b|0;var d=0,e=0,f=0,g=0;e=Sy(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=Ty(b,e)|0}return}function Bk(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;Ck(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[15686]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=Sy(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=Ty(a,d)|0}yj(a);e=+Dk(a);h[m>>3]=e;if(0){h[o>>3]=e;g1(n,87387,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}Ek(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}yj(a);Fk(a);Gk();h[m>>3]=+Dk(a);l=q;return}function Ck(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[45982]=vH((ay(a)|0)*24|0)|0;c[45981]=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=Ty(a,b)|0}i=Sy(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=uH(4)|0;g=c[45982]|0;k=c[45981]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[45981]=k+1}else{g=SL(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[45982]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l<m?m:l;c[k+120>>2]=d;break}d=uH(c[b+216>>2]<<2)|0;e=c[45982]|0;f=c[45981]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[45981]=f+1}while(0);i=Ty(a,i)|0}return}function Dk(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;Fk(a);g=c[45979]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[45980]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d<i?i:d}return +(d/b)}function Ek(a){a=a|0;var b=0;c[45983]=uH((ay(a)|0)<<2)|0;b=0;while(1){if((b|0)>=(ay(a)|0))break;c[(c[45983]|0)+(b<<2)>>2]=b;b=b+1|0}Fk(a);Hk(a);Ik(a);return}function Fk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[45979]=0;b=c[45980]|0;if(b|0){e=0;while(1){if((e|0)>=(c[45981]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){D_(d);b=c[45980]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){D_(d);b=c[45980]|0}e=e+1|0}D_(b)}c[45980]=uH((c[45981]|0)*40|0)|0;b=0;while(1){d=c[45981]|0;if((b|0)>=(d|0))break;k=uH(d<<2)|0;c[(c[45980]|0)+(b*40|0)+4>>2]=k;k=uH(c[45981]<<2)|0;l=c[45980]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[45980]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Gx(a,d)|0}e=Ty(a,e)|0}i=c[45981]|0;k=c[45982]|0;l=c[45980]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[45979]|0))c[45979]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]<j)h[g>>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function Gk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[45979]|0;l=c[45980]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function Hk(a){a=a|0;var b=0;b=c[45983]|0;_0(b,ay(a)|0,4,63);return}function Ik(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[45979]|0;k=c[45980]|0;g=c[45983]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){_0(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,64);g=c[45980]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(ph(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[45980]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function Jk(a,b){a=a|0;b=b|0;a=Kk(c[a>>2]|0)|0;b=Kk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function Kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ez(e)|0;e=Ex(g,e)|0;while(1){if(!e)break;e=Gx(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function Lk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[45980]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e<d&1)|0}function Mk(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+216>>2]=0;b=Ty(a,b)|0}return}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=xx(a,96579)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(N1(a,87402,e)|0)>=1):0)Pw(0,87409,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function Ok(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Pk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;il(a);b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(Ok(d)|0)==0:0)?(e=d+48|0,f=SL(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=SL(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=fh(f,h)|0;if(!i){ph(f,h,d)|0;break}else{xh(d,i);break}}i=c[d>>2]&3;Qk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function Qk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=uh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=SL(d)|0;d=SL(f)|0;f=$i(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[($i(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Rk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)qa(87498,87520,148,87529);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Sk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Sk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Tk(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(wj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Uk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;il(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;jl(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=Sy(b)|0;while(1){if(!h)break;g=Ex(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Gx(b,g)|0}h=Ty(b,h)|0}m=Sy(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(SL(m)|0):0){qh(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Ex(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Vk(l)|0){if(!(Tk(d,l)|0)){Wk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Rk(b,l,e,0);lh(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;xh(l,d);lh(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){xh(l,d);lh(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(wj(l,d)|0)!=0:0)if(!(a[191874]|0)){Rk(b,l,c[(c[o>>2]|0)+172>>2]|0,1);lh(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){lh(l);d=l;break}e=SL(e)|0;f=SL(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){vh(b,l);d=l;break}if((h|0)>(g|0)){Xk(b,e,f,l);d=l;break}e=Rx(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Xk(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(wj(l,e)|0))break;if(!(a[191874]|0)){lh(l);Rk(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Xk(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Gx(b,l)|0}m=Ty(b,m)|0}if((ig(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=vH(4)|0;else d=xH(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Vk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Wk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=_k(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=_k(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=fh(f,e)|0;if(h|0){Rk(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Xk(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)qa(87541,87520,89,87566);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Yk(a,e)|0;else f=Zk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;Ki(ph(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))qa(87577,87520,103,87566);else return}function Yk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=uh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(fz(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Zk(a){a=a|0;var b=0;b=uh(a)|0;Sk(a,b);return b|0}function _k(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=SL(b)|0;return b|0}function $k(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=ig(a)|0;h=Sy(a)|0;while(1){if(!h)break;b=Jx(j,h)|0;i=0;while(1){if(!b)break;l=Kx(j,b,h)|0;if(oz(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Tk(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Rk(a,k,b,0);mh(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){al(b,e,k);b=l;i=k;continue}else{al(e,b,k);b=l;i=k;continue}b=hh(b,e)|0;if(!b){vh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}mh(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}xh(k,b);m=i;b=l;i=m}h=Ty(a,h)|0}return}function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=bl(a)|0;e=bl(b)|0;cl(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function bl(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function cl(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))qa(87602,87630,81,87640);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=fh(d,e)|0,j|0):0)?wj(f,j)|0:0){xh(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=ig(d)|0;j=g+-48|0;i=dl(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ph(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=fh(d,e)|0;if(g|0?wj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=ph(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=ph(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;kh(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ph(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;kh(g)}}}while(0);return}function dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;el(a,e,c[b+236>>2]|0,2);b=uh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function el(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function fl(a){a=a|0;var b=0;Uk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];Hi(a);mi(a,0);gl(a);$k(a);hl(a);return}function gl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=ig(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;el(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=fz(k)|0;sh(d,e);qh(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function hl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;kh(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;kh(d);d=c[g>>2]|0}sh(ig(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function il(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=Sy(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){UL(f);d=c[e>>2]|0}c[d+212>>2]=0;f=Ty(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=Sy(h)|0;a:while(1){if(!d)break;j=Ty(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=ry(d)|0;g=ry(b)|0;c[n>>2]=f;c[n+4>>2]=g;Pw(0,87649,n)|0;dz(h,d)|0;d=j;continue}VL(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Ex(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(h,g)|0}}k=k+1|0}l=o;return}function jl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=uH((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=uh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ph(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=Sy(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Gx(e,f)|0}j=Ty(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function kl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;Bi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;Ci(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function ll(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Sy(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Ex(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(b,g)|0}h=Ty(b,h)|0}ml(b);return}function ml(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;ml(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=Sy(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Ex(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Gx(b,h)|0}i=Ty(b,i)|0}return}function nl(a){a=a|0;var b=0,c=0,d=0;d=tM(a)|0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;ol(b,d);b=Gx(a,b)|0}c=Ty(a,c)|0}yw(d)|0;return}\n  function yH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=C_(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ka(62,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[15686]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=99176;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;ca(29,j|0,99132,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ha(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=$(27,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ha(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[46441]=(e|0)>-1?e:30;t=D3(185768,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ha(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[15686]|0;m=0;while(1){o=0;j=_(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=$(28,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ja(25,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;aa(91,99176,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;ca(29,a|0,99194,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;ca(29,a|0,99194,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ha(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ha(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ha(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[46481]|0;g=c[46482]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=99176;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;ca(29,a|0,99198,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);D_(t|0);l=u;return f|0}function zH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function AH(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[46484]=b;c[46491]=0;c[46482]=0;c[46481]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[46481]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[46482]=k;b=b+1|0;f=k}b=g+164|0}b=c[46492]|0;if(!b)b=vH(h<<2)|0;else b=xH(b,h<<2)|0;c[46492]=b;c[46493]=0;b=c[46486]|0;if(!b)b=vH(c[46481]<<2)|0;else b=xH(b,c[46481]<<2)|0;c[46486]=b;c[46485]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=uH((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=uH(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function BH(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=GL(c[46481]|0)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){IL(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=JL(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){IL(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[46481]|0)){Pw(1,99530,k)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=ry(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;Pw(3,99552,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);HL(m);l=o;return}function CH(){var b=0,d=0,e=0;b=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function DH(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=uH(c[46481]<<2)|0;e=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=QH(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=RH(f,e)|0;while(1){if((SH(a)|0)<=1)break;WH(a,c[(VH(UH(TH(a)|0)|0)|0)+8>>2]|0)}D_(a);a=0;while(1){if((a|0)>=(e|0))break;D_(c[f+(a<<2)>>2]|0);a=a+1|0}D_(f);if((c[46485]|0)==((c[46481]|0)+-1|0)){XH();return}else qa(99275,99305,523,99310)}function EH(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[46491]|0;f=c[46485]|0;j=c[46486]|0;k=c[46441]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[46491]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[46491]=f}return a|0}function FH(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[46487]=0;c[46488]=2147483647;d=c[a+16>>2]|0;c[46489]=c[d+284>>2];c[46490]=c[d+288>>2];if(b)PH(a);else OH(a);return c[46487]|0}function GH(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){KH(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){KH(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){KH(h,g);break}else{KH(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=LH(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((LH(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;MH(a,b);n=c[g+16>>2]|0;NH(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{Pw(1,99236,n)|0;bb(185768,1)}}function HH(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;JH();m=uH((c[46483]<<2)+4|0)|0;d=c[46483]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[46484]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[46483]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){D_(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}D_(m);return}function IH(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[46485]|0))break;a=c[(c[46486]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=FH(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){KH(g,f>>>1);break}else{KH(a,(f|0)/-2|0);break}}while(0);b=b+1|0}CH();return}function JH(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[46483]=-2147483647;b=(c[(c[46484]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[46483]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[46483]=f-g;c[h>>2]=0}l=i;return}function KH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function LH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function MH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[46486]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function NH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function OH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))OH(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){OH(b);a=c[i>>2]|0}d=d+1|0}return}function PH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))PH(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){PH(b);a=c[i>>2]|0}d=d+1|0}return}function QH(a){a=a|0;var b=0;b=uH(16)|0;c[b>>2]=a;c[b+4>>2]=eI(a,b)|0;c[b+12>>2]=b;return b|0}function RH(a,b){a=a|0;b=b|0;var d=0,e=0;e=uH(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;WH(e,d);d=d+-1|0}return e|0}function SH(a){a=a|0;return c[a+4>>2]|0}function TH(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;WH(a,0);return b|0}function UH(a){a=a|0;return dI(c[a>>2]|0,0,0)|0}function VH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)qa(99324,99305,463,99338);g=a+48|0;d=$H(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=$H(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)aI(c[d>>2]|0,0,b);else aI(c[f>>2]|0,0,0-b|0);bI(a);return cI(d,f)|0}function WH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function XH(){NH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0,1)|0;YH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0);return}function YH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))YH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){YH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)ZH(b);return}function ZH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=(_H(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=(_H(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function _H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function $H(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function bI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){Pw(1,99427,h)|0;bb(185768,1)}g=c[46485]|0;c[d>>2]=g;d=c[46486]|0;c[46485]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){Pw(1,99461,h+8|0)|0;bb(185768,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){Pw(1,99496,h+16|0)|0;bb(185768,1)}else{l=h;return}}function cI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else qa(99350,99305,327,99397);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else qa(99408,99305,335,99397)}else i=a;return i|0}function dI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=$H(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=dI(h,a,d)|0}else if(($H(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=dI(i,a,d)|0}else if(($H(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function eI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){bI(g);a=(eI(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){bI(f);a=(eI(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function fI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,99560)|0;if(!d)d=30;else d=a2(d)|0;return yH(a,b,c,d)|0}function gI(a){a=+a;return +((c[46369]|0)==0?a:+h[22916]-a)}function hI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[46494]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];iI(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];jI(e,99571,+h[b+352>>3]);jI(e,99578,t*.013888888888888888);jI(e,99578,s*.013888888888888888);kI(e);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){lI(e,99580,JA(ry(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];mI(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ez(i)|0;b=nI(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=JA(yx(i,c[46384]|0)|0)|0;jI(e,99578,+h[(c[g>>2]|0)+32>>3]);jI(e,99578,+h[(c[g>>2]|0)+40>>3]);lI(e,99578,b);lI(e,99578,OL(i,c[46387]|0,108041)|0);lI(e,99578,c[c[(c[g>>2]|0)+8>>2]>>2]|0);lI(e,99578,OL(i,c[46378]|0,134232)|0);b=OL(i,c[46379]|0,191979)|0;if(!(a[b>>0]|0))b=OL(i,c[46378]|0,131718)|0;lI(e,99578,b);kI(e)}i=Ty(d,i)|0}o=f<<24>>24==0;n=Sy(d)|0;while(1){if(!n)break;m=Ex(d,n)|0;while(1){if(!m)break;if(o){f=191979;j=191979}else{j=xx(m,108373)|0;f=xx(m,108382)|0;f=f|0?f:191979;j=j|0?j:191979}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}lI(e,0,108368);oI(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);oI(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);pI(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=ez(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;lI(e,99578,nI(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q)}lI(e,99578,OL(m,c[46415]|0,108041)|0);lI(e,99578,OL(m,c[46406]|0,134232)|0);kI(e);m=Gx(d,m)|0}n=Ty(d,n)|0}qI(99586,e);l=r;return}function iI(a){a=a|0;var b=0.0;if(c[46369]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[22916]=b;h[22917]=b*.013888888888888888}return}function jI(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)qI(b,a);h[e>>3]=c;Y0(d,99592,e)|0;qI(d,a);l=f;return}function kI(b){b=b|0;a[191875]=10;lb[c[46494]&127](b,191875)|0;return}function lI(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)qI(b,a);qI(c,a);return}function mI(a,b){a=a|0;b=b|0;var d=0.0;jI(a,99578,+h[b>>3]*.013888888888888888);if(!(c[46369]|0))d=+h[b+8>>3];else d=+h[22916]-+h[b+8>>3];jI(a,99578,d*.013888888888888888);return}function nI(a,b){a=a|0;b=b|0;var c=0;c=Oz(a,b)|0;b=JA(c)|0;Qz(a,c)|0;return b|0}function oI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=JA(ry(d)|0)|0;else{f=ez(d)|0;d=nI(f,(A$(ry(d)|0,58)|0)+1|0)|0}lI(b,99578,d);if(e|0?a[e>>0]|0:0)lI(b,104958,JA(e)|0);return}function pI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;qI(99578,a);c[f>>2]=b;Y0(e,134313,f)|0;qI(e,a);l=d;return}function qI(a,b){a=a|0;b=b|0;lb[c[46494]&127](b,a)|0;return}function rI(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;CG(1);iI(d);Tw(H,1024,Y+240|0);LM(d,1,99597,191979)|0;LM(d,1,99601,191979)|0;c[46376]=LM(d,1,138034,191979)|0;c[46375]=LM(d,1,137966,191979)|0;LM(d,2,99597,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){LM(d,1,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){LM(d,2,99611,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){LM(d,2,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){LM(d,2,99614,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){LM(d,2,99622,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=LM(d,0,99611,191979)|0;w=LM(d,0,99630,191979)|0;v=LM(d,0,99637,191979)|0}z=LM(d,0,99645,191979)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=Sy(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[46369]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;Y0(G,99648,J)|0;Ww(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;Y0(G,99663,Q)|0;Ww(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;zx(y,99597,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;Y0(G,99669,X)|0;zx(y,99597,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;Y0(G,99592,K)|0;rx(s,c[46375]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;Y0(G,99592,L)|0;rx(s,c[46376]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;Y0(G,99669,M)|0;zx(s,99607,G)|0;j=c[t>>2]|0}if(b$(c[c[j+8>>2]>>2]|0,103194)|0){if(c[46400]|0?(UJ(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=xx(s,99679)|0;if(!j)j=8;else j=a2(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[46369]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[22917]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;Y0(G,99692,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[46369]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[22917]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;Y0(G,99692,O)|0}Ww(H,G)|0;n=n+1|0}k=c[46400]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;rx(s,k,t)|0}}else{sI(y,c[j+12>>2]|0,H);Yw(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;zx(s,99601,t)|0}a:do if((c[46367]|0)>0){t=Ex(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[22916]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;Y0(G,99702,P)|0;Ww(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[22916]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;Y0(G,99715,R)|0;Ww(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;Y0(G,99669,S)|0;Ww(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;zx(t,99597,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;Y0(G,99669,T)|0;zx(t,99611,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;Y0(G,99669,U)|0;zx(t,99607,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;Y0(G,99669,V)|0;zx(t,99614,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;Y0(G,99669,W)|0;zx(t,99622,G)|0}while(0);t=Gx(d,t)|0}}else j=u;while(0);u=j;y=Ty(d,y)|0}tI(d,z,x,w,v);Xw(H);if(b[(c[I>>2]|0)+136>>1]&1)FM(d);c[f>>2]=i;c[g>>2]=u;CG(0);l=Y;return}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[46369]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[22916]-+h[b+24>>3]-g;g=+h[22916]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;Y0(j,99753,k)|0;Ww(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;sI(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function tI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[46369]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[22916];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;Y0(n,99728,j)|0;rx(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[46369]|0)==0?t:+h[22916]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;Y0(n,99669,p)|0;rx(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;Y0(n,99748,q)|0;rx(b,f,n)|0;h[o>>3]=t*.013888888888888888;Y0(n,99748,o)|0;rx(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;tI(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function uI(a){a=a|0;var b=0;b=l;l=l+16|0;rI(a,b,b+4|0);l=b;return}function vI(){return Cw(20636,c[4555]|0)|0}function wI(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function xI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function yI(a){a=a|0;yw(a)|0;return}function zI(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=AI(e)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=d;return}function AI(a){a=a|0;var b=0,d=0,e=0;b=uH(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function BI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=AI(f)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=e;return}function CI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(nb[c[a>>2]&63](a,e,4)|0)!=0&1;l=d;return b|0}function DI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(nb[c[a>>2]&63](a,f,4)|0)!=0&1;l=e;return d|0}function EI(a){a=a|0;return Ew(a)|0}function FI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH((Ew(a)|0)<<3)|0;b=d;a=Aw(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function GI(){var a=0,b=0,d=0,e=0;a=vH(40)|0;b=a;d=20672;e=b+36|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[a+36>>2]=0;return Cw(a,c[4555]|0)|0}function HI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=d+36|0;a=c[d>>2]|0;if(!a)a=vH(20)|0;else c[d>>2]=c[a>>2];f=b+8|0;e=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=e;c[a+16>>2]=c[b+16>>2];return a|0}function II(a,b,d){a=a|0;b=b|0;d=d|0;d=d+36|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}function JI(a){a=a|0;nb[c[a>>2]&63](a,0,64)|0;return}function KI(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;yw(a)|0;a=c[b+36>>2]|0;while(1){if(!a)break;d=c[a>>2]|0;D_(a);a=d}D_(b);return}function LI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g+8>>2]=b;c[g+12>>2]=d;c[g+16>>2]=e;e=c[(nb[c[a>>2]&63](a,g,1)|0)+16>>2]|0;l=f;return e|0}function MI(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){NI(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];OI(d,q);p=d+16|0;NI(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];OI(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{NI(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];OI(d,q);n=d+16|0;NI(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];OI(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];OI(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;MI(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function NI(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function OI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[46495]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];ZG(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[22918];e=b+8|0;h[e>>3]=+h[e>>3]-+h[22919];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function PI(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[46495]=m&3;m=m&1;a[191877]=m;if(!(m<<24>>24))RI(b);else QI(b);SI(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[191877]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[46495]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[46495]|0){case 0:{q=m+16|0;c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}case 1:{NI(o,-+h[m+40>>3],+h[m+16>>3]);c[45836]=c[o>>2];c[45837]=c[o+4>>2];c[45838]=c[o+8>>2];c[45839]=c[o+12>>2];break}case 2:{NI(p,+h[m+16>>3],-+h[m+40>>3]);c[45836]=c[p>>2];c[45837]=c[p+4>>2];c[45838]=c[p+8>>2];c[45839]=c[p+12>>2];break}case 3:{NI(q,+h[m+24>>3],+h[m+16>>3]);c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}default:{}}TI(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];UI(b,s)}if(!0){l=w;return}if(!(a[191877]|0)){n=+h[22919];k=+h[22918];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;Y0(s,99989,v)|0}else{k=+h[22918];n=+h[22919];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;Y0(s,99774,u)|0}n1(s)|0;ab()}function QI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((fz(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;QI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function RI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((fz(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;RI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function SI(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[46368]|0)!=0:0)){u=g<<16>>16==0;n=Sy(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Ex(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=WI(e)|0;t=j+i|0;if(t|0){q=h+j+o+(ay(e)|0)|0;r=uH(q*40|0)|0;s=uH(t*40|0)|0;NI(M,2147483647.0,2147483647.0);g=M+16|0;NI(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=Sy(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];ZI(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Ex(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];Pw(0,100801,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){_I(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];Pw(0,100836,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$I(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];Pw(0,100876,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];Pw(0,100916,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));aJ(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=PL(e,nx(e,0,100952,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];SP(r,q,s,t,O)|0;if(0)bJ(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;cJ(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];kM(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;Pw(0,100997,R)|0}}else{R=c[15686]|0;c[Q>>2]=f;c[Q+4>>2]=t;g1(R,100964,Q)|0}D_(r);D_(s)}}l=S;return}function TI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[22918]!=0.0|+h[22919]!=0.0|(c[46495]|0)!=0){d=Sy(a)|0;while(1){if(!d)break;if(c[46495]|0)bN(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[46367]|0)==1){b=Ex(a,d)|0;while(1){if(!b)break a;VI(b);b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}MI(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function UI(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function VI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[191874]|0)==0?(a[d+112>>0]|0)!=6:0){q=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;Pw(1,100784,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function WI(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((fz(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(WI(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function XI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function YI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function ZI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[191877]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function _I(a,b){a=a|0;b=b|0;b=fL(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function $I(a,b){a=a|0;b=b|0;var d=0;b=fL(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function aJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));aJ(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((fz(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];YI(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function bJ(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[15686]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;g1(q,101039,o)|0;a:do if(0>=2){E1(101099,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=191979;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;g1(q,101108,p)|0;o=o+1|0;a=a+40|0}E1(101151,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;g1(q,101160,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function cJ(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function dJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]<j?d:b)>>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]<i?d:b)+8>>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function eJ(a){a=a|0;PI(a,1);return}function fJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=ZL(xx(a,102500)|0)|0;if(b){b=gJ(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=uH(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=ry(a)|0;Pw(0,101208,d)|0}l=e;return}function gJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[46496]|0;if(!d){d=Cw(20708,c[4555]|0)|0;c[46496]=d}d=nb[c[d>>2]&63](d,b,512)|0;do if(!d){g=L1(b,135739)|0;if(!g){c[e>>2]=b;Pw(0,101257,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(O0(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(N1(f,101285,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(P0(f,101314)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;Pw(0,101319,i)|0;d=0}else f=12;if((f|0)==12){q=vH(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[46497]|0;c[46497]=o+1;c[q+12>>2]=o;J1(j3(g)|0,j)|0;o=c[j+36>>2]|0;n=vH(o+1|0)|0;c[q+52>>2]=n;Z1(g,0,0)|0;g3(n,o,1,g)|0;a[n+o>>0]=0;o=c[46496]|0;nb[c[o>>2]&63](o,q,1)|0;a[q+16>>0]=d;d=q}s1(g)|0}while(0);l=p;return d|0}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+52>>2]|0);return}function iJ(a){a=a|0;D_(c[(c[a+16>>2]|0)+12>>2]|0);return}function jJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;$B(b,f)|0;$B(b,150517)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=ZL(f)|0;if(!e){c[k>>2]=f;Pw(0,101358,k)|0;break}g=L1(e,135739)|0;if(!g){c[m>>2]=e;Pw(0,101386,m)|0;break}while(1){f=YL(g)|0;if(!f)break;$B(b,f)|0}$B(b,150517)|0;s1(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function kJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((V$(e,101414,3)|0)!=0?(V$(e,101418,5)|0)!=0:0)?(V$(e,101424,3)|0)!=0:0)?(V$(e,101428,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}aC(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;aC(b,10)|0}return}function lJ(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[46496]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];fC(b,101436,e);$B(b,101454)|0;kJ(b,d);$B(b,101472)|0;$B(b,101487)|0}g=c[46496]|0;d=nb[c[g>>2]&63](g,d,8)|0}}while(0);l=f;return}function mJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=SM(b)|0;break}default:{switch(nJ(b)|0){case 2:break;case 1:{f=SM(b)|0;break a}default:{f=b;break a}}if(!(c[46498]|0)){Pw(0,101499,e)|0;c[46498]=1;f=b}else f=b}}while(0);if(!(c[46499]|0))Tw(185996,0,0);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=92;break}default:{}}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}h=a[e>>0]|0;c[46500]=d+1;a[d>>0]=h;e=e+1|0}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=41;if((f|0)!=(b|0))D_(f);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}a[d>>0]=0;h=c[46499]|0;c[46500]=h;l=g;return h|0}function nJ(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function oJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((TU(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[46504]|0;if((a|0)>(c[46503]|0)){if(!f)a=vH(a<<5)|0;else a=xH(f,a<<5)|0;c[46504]=a;g=c[b>>2]|0;c[46503]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((xU(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];oV(i,m)}a=m+4|0;if(!(pJ(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[46505]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function pJ(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46506]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=xH(c[46505]|0,a<<4)|0;c[46505]=b;if(!b){Pw(1,101589,d)|0;a=1;break}else{c[46506]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function qJ(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+1;do if((d|0)<=0){d=vH(4800)|0;c[46505]=d;if(!d){Pw(1,101612,a)|0;a=1;break}c[46506]=300;c[46508]=0;c[46509]=0;if(0){EL();a=0}else a=0}else a=0;while(0);l=b;return a|0}function rJ(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+-1;if((d|0)<=1?(D_(c[46505]|0),0):0){d=c[15686]|0;g=c[46508]|0;f=c[46509]|0;e=+FL();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;g1(d,101650,a)|0}l=b;return}function sJ(a,b){a=a|0;b=b|0;return tJ(a,b,0)|0}function tJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[46508]=(c[46508]|0)+1;H=c[b+80>>2]|0;c[46509]=(c[46509]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){Pw(1,101693,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(uJ(H,B,b)|0)){g=H<<3;if((g|0)>(c[46510]|0)){f=c[46511]|0;if(!f)f=vH(H<<7)|0;else f=xH(f,H<<7)|0;c[46511]=f;c[46510]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=ry(f)|0;Pw(1,101800,i)|0;f=0;break}o=H+-1|0;q=c[46511]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;Pw(1,101735,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;Pw(1,101735,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((TU(t,u,I)|0)<0){Pw(1,101839,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[46504]|0;if((g|0)>(c[46503]|0)){if(!f)f=vH(g<<5)|0;else f=xH(f,g<<5)|0;c[46504]=f;g=c[i>>2]|0;c[46503]=g}j=c[46511]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((xU(f,g,G,w,y)|0)<0){Pw(1,101878,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,y)}n=y+4|0;if(!(pJ(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[46505]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;vJ(B,H,c[46505]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=ry(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=ry(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;Pw(0,101916,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,J);vJ(B,H,c[J>>2]|0,c[J+4>>2]|0,10);D_(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[46505]|0}else f=0}else f=0}while(0);l=L;return f|0}function uJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[15686]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]<f;e=v&1;C=b+(w<<5)|0;u=+h[C>>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]<m;j=t&1;y=b+(w<<5)+8|0;k=+h[y>>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;g1(M,102116,I)|0;wJ(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=xJ(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=xJ(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q<s;h[(B?(w?G:C):w?E:F)>>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m<f;h[(B?(w?G:C):w?E:F)+8>>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;Pw(1,102070,H)|0;wJ(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f<g)?!(f>+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){E1(102159,42,1,M)|0;wJ(d);g=+h[b>>3];f=+h[d>>3]}if(f<g)h[d>>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g<f){h[e>>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f<g)?!(f>+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){E1(102202,39,1,M)|0;wJ(d);g=+h[e>>3];f=+h[i>>3]}if(f<g){h[i>>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f<g)h[e>>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){Pw(1,102025,k)|0;wJ(d);e=1}l=R;return e|0}function vJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]<m)h[e>>3]=m}f=f+1|0}g=g+1|0}}return}function wJ(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[15686]|0;f=b+80|0;c[g>>2]=c[f>>2];g1(e,102242,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;g1(e,102253,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?102284:102296;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;g1(e,102312,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?102284:102296;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;g1(e,102363,j)|0;l=m;return}function xJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function yJ(a,b){a=a|0;b=b|0;return tJ(a,b,1)|0}function zJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;g=j;i=1;f=b;while(1){h=f;f=c[(c[f+16>>2]|0)+172>>2]|0;if(!((f|0)!=0&(h|0)!=(f|0)))break;else i=i+1|0}if((i|0)>=21)g=uH(i<<2)|0;h=0;f=b;while(1){if((h|0)>=(i|0))break;c[g+(h<<2)>>2]=f;h=h+1|0;f=c[(c[f+16>>2]|0)+172>>2]|0}AJ(a,g,i,d,e);if((i|0)>20)D_(g);l=j;return}function AJ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];BJ(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];BJ(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[191874]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];oV(A,B);QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){CJ(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];DJ(G,A)}QK(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,j,z,A)}while(0);l=K;return}function BJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function CJ(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[22920]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[22921]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[45840];c[a+4>>2]=c[45841];c[a+8>>2]=c[45842];c[a+12>>2]=c[45843];return}function DJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function EJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)FJ(a,b,d,f);else{D=uH((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o<m?o:m}k=(g|16777216|0)==83886080;n=(A|0)==4;j=(g|0)==16777216;e=0;i=0;while(1){if((i|0)>=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=uH(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];_O(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];bP(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];bP(a,B,4);D_(G);break}else qa(102412,102423,737,102432)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=uH(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=uH(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=uH(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;_O(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=vH((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];aP(a,G,j,0,0,f&255);D_(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}_O(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];bP(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=uH(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];_O(a,i,g,f);D_(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];bP(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];bP(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];bP(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=uH(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];_O(a,G,6,f);D_(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];bP(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];bP(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];bP(a,B,2);break}else qa(102412,102423,714,102432)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=uH(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;_O(a,w,d,f);D_(w);G=uH(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=uH(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);y=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;_O(a,y,d,f);D_(y);y=uH(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);G=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;_O(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;bP(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 268435456:break;default:break a}G=uH(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];_O(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;bP(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;bP(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;bP(a,B,2);D_(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=uH(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;_O(a,y,d,f);D_(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];bP(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;bP(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;bP(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=uH(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;_O(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=uH(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;_O(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];_O(a,G,d,f);D_(G);break}}while(0);D_(D)}l=E;return}function FJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];aP(a,b,d,0,0,e&255);aP(a,g,7,0,0,0);l=f;return}function GJ(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function HJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=89)if((a|0)==92)a=2;else return ((a|0)==91?3:(a|0)==94?4:0)|0;else a=1}else a=0;return a|0}function IJ(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=uH(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1616;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(QL(xx(b,102485)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+SJ(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f<k?f:k)*72.0;k=+(~~(k+(k>=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=KL(b,c[46390]|0,d,0)|0;V=+LL(b,c[46392]|0,0.0,-360.0)+m;if(!e){U=+LL(b,c[46393]|0,0.0,-100.0);I=KL(b,c[46389]|0,4,0)|0;T=+LL(b,c[46394]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=xx(b,102470)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=N1(d,102477,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(ez(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+TJ(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+TJ(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=xx(b,105999)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){CC(A,ez(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[G>>2]=e;c[G+4>>2]=d;Pw(0,102561,G)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(b$(d,102493)|0)==0:0){e=xx(b,102500)|0;CC(D,ez(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[H>>2]=e|0?e:102510;c[H+4>>2]=d;Pw(0,102516,H)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=xx(b,102602)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];ub[p&63](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=NL(b,c[46395]|0,134226)|0;if((a[g>>0]|0)==115?(b$(g,105204)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((QL(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=ry(b)|0;M=ry(ez(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;Pw(0,102611,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((QL(NL(b,c[46386]|0,134226)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P<f){f=+h[_>>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P<r?r-P+x:x)+P}j=(W|0)>1;g=j?W:1;a:do if((e|0)<3){g=uH(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=uH(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+u$(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;w$((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;w$(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;w$(+K(+o,+x)+v,R,S);x=+u$(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{ub[c[i+4>>2]&63](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);w$(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function JJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[46512]=f;f=W_(f)|0;f=uH(((f|0)>1?f:1)+1|0)|0;b=LJ(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];Pw(1,102446,e)|0;c[46512]=102467;b=LJ(a,d,1,f)|0}D_(f);MJ(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((QL(NL(a,c[46395]|0,134226)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(QL(NL(a,c[46386]|0,134226)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];NJ(b,j,a);OJ(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];PJ(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function KJ(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=uH(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+LL(a,c[46376]|0,1797693134862315708145274.0e284,0.0);b=+LL(a,c[46375]|0,1797693134862315708145274.0e284,0.0);f=f<b?f:b;f=b==1797693134862315708145274.0e284&f==1797693134862315708145274.0e284?.05:f>0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=KL(a,c[46390]|0,g,0)|0;i=uH((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function LJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=uH(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[46512]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=uH(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[46512]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[46512]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[46512]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=LJ(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=n1(f)|0;c[46512]=(c[46512]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[46512]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=uH(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=n1(f)|0;c[k+52>>2]=kH(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[46512]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[46512]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[46512]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[46512]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[46512]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[46512]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){QJ(g,r);g=0}else if((E|0)==27){QJ(g,r);g=0}else if((E|0)==34){QJ(g,r);g=0}else if((E|0)==36){QJ(g,r);g=0}else if((E|0)==38){QJ(g,r);g=0}else if((E|0)==51){c[46512]=i+1;c[g+48>>2]=m}else if((E|0)==59){QJ(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function MJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;MJ(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=xx(d,102470)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=N1(j,102477,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function NJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))OJ(p,q,+h[b+8>>3]+ +(d|0));else OJ(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];NJ(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function OJ(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function PJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];OJ(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;OJ(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];PJ(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function QJ(a,b){a=a|0;b=b|0;RJ(a);D_(b);return}function RJ(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;RJ(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}D_(c[a+60>>2]|0);nH(c[a+52>>2]|0);D_(c[e>>2]|0);D_(a);return}function SJ(a){a=a|0;var b=0.0,d=0.0;d=+LL(a,c[46376]|0,0.0,.01);b=+LL(a,c[46375]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function TJ(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05<a&1)+c|0)*b)}function UJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==89&1;return a|0}function VJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[46513]|0;a:do if(!f)d=0;else{g=c[46514]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(b$(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function WJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(ZL(xx(d,102500)|0)|0)if((a[b>>0]|0)==101?(b$(b,102659)|0)==0:0){d=101;g=6}else{b=102493;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(b$(b,102493)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=20744;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(b$(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=XJ(b)|0;return b|0}function XJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=VJ(b)|0;if(!d){f=c[46514]|0;d=f+1|0;c[46514]=d;e=c[46513]|0;if(!e)d=vH(d<<2)|0;else d=xH(e,d<<2)|0;c[46513]=d;d=uH(16)|0;c[(c[46513]|0)+(f<<2)>>2]=d;c[d>>2]=c[5186];c[d+4>>2]=c[5187];c[d+8>>2]=c[5188];c[d+12>>2]=c[5189];e=n1(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(b$(b,102493)|0)==0:0){e=1;break}c[g>>2]=c[5186];c[g+4>>2]=e;Pw(0,102664,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function YJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function ZJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function _J(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){D_(c[a+44>>2]|0);D_(a)}return}function $J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4208;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?103330:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=_Q(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(nK(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=ry(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;Pw(0,103332,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1664)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(nK(d,0,g,e,c[n>>2]|0,h)|0)oK(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function aK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[46517]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];ZG(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[46517]|0)){f=c[46518]|0;g=c[46520]|0;i=c[46519]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[46521]=g;i=c[g+44>>2]|0;c[46519]=i;f=c[g+8>>2]|0;c[46518]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[46520]=g;c[46517]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[45844];c[p+4>>2]=c[45845];c[p+8>>2]=c[45846];c[p+12>>2]=c[45847];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((mK(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function bK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=bR(b,d,0,f,g)|0;else b=0;return b|0}function cK(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){PO(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[46515]|0)<(K|0)){i=K+5|0;c[46515]=i;j=c[46516]|0;if(!j)i=vH(i<<4)|0;else i=xH(j,i<<4)|0;c[46516]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=dK(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=OL(f,0,103230)|0;UO(e,s);WO(e,OL(f,0,103238)|0);j=0;i=1;break}if(i&8|0){s=OL(f,0,103246)|0;UO(e,s);WO(e,OL(f,0,103254)|0);j=0;i=1;break}if(i&4|0){s=OL(f,0,103262)|0;UO(e,s);WO(e,OL(f,0,103270)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=eK(f)|0;i=1}else{j=eK(f)|0;if(!((uG(j,L,n)|0)<<24>>24)){WO(e,j);i=1}else{WO(e,c[L>>2]|0);i=c[L+4>>2]|0;m=KL(f,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(e,134232,m,k);else XO(e,i,m,k);i=(D&2)>>>1|2}}s=fK(e,f)|0}else{s=OL(f,0,103214)|0;UO(e,s);WO(e,OL(f,0,103222)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(b$(m,102493)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{UO(e,134297);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,o,j)|0)>1){c[z>>2]=ry(f)|0;Pw(3,103278,z)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(!y)gK(e,f)}else{if(!x){if((t|0)==0?(WE(e,o,j,1)|0)>1:0){c[A>>2]=ry(f)|0;Pw(3,103278,A)|0}_O(e,c[46516]|0,K,0);break}if(!p){UO(e,134297);_O(e,c[46516]|0,K,i&255);UO(e,s);bP(e,(c[46516]|0)+32|0,2);break}i=i&255;if(q){_O(e,o,K,i);break}else{EJ(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=xx(f,105999)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(b$(m,102493)|0)==0:0){m=xx(f,102500)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,n,j)|0)>1){c[G>>2]=ry(f)|0;Pw(3,103278,G)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(y)break;gK(e,f);break}if(x)if(!(D&12)){_O(e,n,K,m);break}else{EJ(e,n,K,D,m);break}else{if((WE(e,n,j,1)|0)>1){c[H>>2]=ry(f)|0;Pw(3,103278,H)|0}_O(e,c[46516]|0,K,0);break}}while(0);R=c[46516]|0;dP(e,o,R,K,i,NL(f,c[46396]|0,134226)|0)}D_(c[L>>2]|0);oH(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)PO(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);QO(e)}l=P;return}function dK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=jK(d,f)|0;if(e|0)YO(b,e);e=c[46402]|0;if((e|0?(g=yx(d,e)|0,g|0):0)?a[g>>0]|0:0)fP(b,+LL(d,c[46402]|0,1.0,0.0));l=h;return c[f>>2]|0}function eK(a){a=a|0;return iK(a,131718)|0}function fK(b,d){b=b|0;d=d|0;d=OL(d,c[46378]|0,191979)|0;d=a[d>>0]|0?d:134232;UO(b,d);return d|0}function gK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];hK(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;bP(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;bP(a,e,2);l=d;return}function hK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function iK(b,d){b=b|0;d=d|0;var e=0;e=OL(b,c[46379]|0,191979)|0;if(!(a[e>>0]|0)){e=OL(b,c[46378]|0,191979)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function jK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=OL(b,c[46387]|0,191979)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=AF(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(b$(f,108075)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(b$(f,103290)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(b$(f,103308)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(b$(f,103298)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(b$(f,131253)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((b$(f,103315)|0)==0?kK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((b$(f,103323)|0)==0?lK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function kK(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function lK(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function mK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function nK(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];OJ(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{pK(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;pK(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{pK(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{pK(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];YG(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=qK(g,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+rK(j,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function oK(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=ry(a)|0;c[e+4>>2]=b;Pw(0,103393,e)|0;l=d;return}function pK(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];YG(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];MK(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];ZG(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function qK(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function rK(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function sK(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];ZG(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function tK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){PO(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;g1(g,103424,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];oH(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)PO(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);QO(a)}}l=n;return}function uK(a){a=a|0;RJ(c[(c[a+16>>2]|0)+12>>2]|0);return}function vK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4208;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?103330:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=BK(i,f)|0;if(!j){if(nK(e,i+16|0,h,f,15,0)|0)oK(e,f)}else if(nK(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=ry(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;Pw(0,103332,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function wK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];ZG(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function xK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];_G(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function yK(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)PO(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=dK(d,e)|0;fK(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=eK(e)|0;if(!((uG(i,s,n)|0)<<24>>24)){WO(d,i);i=1}else{WO(d,c[s>>2]|0);i=c[s+4>>2]|0;j=KL(e,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(d,134232,j,k);else XO(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(b$(j,103201)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];$O(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];EJ(d,r,4,f,i)}zK(d,e,o);D_(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)PO(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);QO(d)}l=w;return}function zK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];AK(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];hK(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];oH(b,10,c[j>>2]|0);fK(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];bP(b,q,2)}zK(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function AK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function BK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(b$(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=BK(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function CK(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function DK(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function EK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];ZG(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[46522]|0)){d=+h[22924];e=+h[22925];i=+h[22926]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[46523]=b;c[46524]=c[b+44>>2];c[46525]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?183416:183424)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?183424:183416)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{jM(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?183416:183424)>>3]=i;h[(o?183424:183416)>>3]=f}d=+h[22927];if(d==0.0){h[22927]=1.0;d=1.0}e=+h[22928];if(e==0.0){h[22928]=1.0;e=1.0}d=i/d;h[22924]=d;e=f/e;h[22925]=e;i=i*.5;h[22926]=i;h[22929]=f*.5;o=O((c[(c[46523]|0)+4>>2]|0)+-1|0,c[46525]|0)|0;c[46526]=(o|0)>0?o:0;c[46522]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[22929],!(e>p)):0){o=c[46525]|0;if((o|0)<3){a=+u$(f/i,d/p)<1.0;break}b=(c[46527]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[46524]|0;m=c[46526]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(mK(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[45860];c[u+4>>2]=c[45861];c[u+8>>2]=c[45862];c[u+12>>2]=c[45863];n=(mK(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[45860],c[t+4>>2]=c[45861],c[t+8>>2]=c[45862],c[t+12>>2]=c[45863],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(mK(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(mK(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[46527]=g;a=0;break}else if((b|0)==31){c[46527]=j;a=1;break}}else a=0}else a=0}else{c[46522]=0;a=0}while(0);l=x;return a&1|0}function FK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[46530]|0))d=+h[22932];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[22932]=d;c[46530]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+u$(g,e)<=d&1}else{c[46530]=0;a=0}l=j;return a|0}function GK(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){PO(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[46528]|0)<(p|0)){g=p+2|0;c[46528]=g;i=c[46529]|0;if(!i)g=vH(g<<4)|0;else g=xH(i,g<<4)|0;c[46529]=g}jK(f,j)|0;if(!(c[j>>2]&32))YO(e,21916);else YO(e,21912);g=c[46402]|0;if(g|0)fP(e,+LL(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){UO(e,OL(f,0,103230)|0);g=OL(f,0,103238)|0;WO(e,g);break}if(g&8|0){UO(e,OL(f,0,103246)|0);g=OL(f,0,103254)|0;WO(e,g);break}if(!(g&4)){g=iK(f,134232)|0;WO(e,g);fK(e,f)|0;break}else{UO(e,OL(f,0,103262)|0);g=OL(f,0,103270)|0;WO(e,g);break}}else{UO(e,OL(f,0,103214)|0);g=OL(f,0,103222)|0;WO(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{UO(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[46529]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}ZO(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);QO(e)}l=t;return}function HK(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=IK(b,e,f)|0;c[h+36>>2]=c[f+36>>2];nK(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function IK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(ez(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<<k&y){switch(k|0){case 0:{e=u;b=t;break}case 1:{e=r;b=q;break}case 2:{e=u;b=p;break}case 3:{e=o;b=q;break}default:{}}e=x+e|0;b=v+b|0;f=e-w|0;C=b-s|0;f=(O(C,C)|0)+(O(f,f)|0)|0;if((d|0)==0|(f|0)<(g|0))d=c[21924+(k<<2)>>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function JK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function KK(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;f=i+40|0;h=i;g=b+16|0;e=c[g>>2]|0;d=e+16|0;if(a[e+47>>0]|0){e=c[b>>2]&3;HK(f,c[((e|0)==3?b:b+48|0)+40>>2]|0,c[((e|0)==2?b:b+-48|0)+40>>2]|0,d);e=f;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));e=c[g>>2]|0}d=e+56|0;if(a[e+87>>0]|0){e=c[b>>2]&3;HK(h,c[((e|0)==2?b:b+-48|0)+40>>2]|0,c[((e|0)==3?b:b+48|0)+40>>2]|0,d);e=h;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0))}l=i;return}function LK(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];EK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];FK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];aK(0,b)|0;l=a;return}function MK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;XL(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((lb[b&127](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function NK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=lb[k&127](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;OK(f,a,b,k)}l=m;return}function OK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}MK(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function PK(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=uH(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=vH(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=xH(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=uH(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function QK(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ez(m)|0;B=PK(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[q&127](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;OK(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[g&127](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;OK(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;RK(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];YE((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function RK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=(kb[c[i>>2]&63](o)|0)&255;else j=0;sE(o,m,n);k=i+4|0;if((kb[c[k>>2]&63](d)|0)<<24>>24)c[n>>2]=0;if((kb[c[k>>2]&63](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=HE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=FE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)IE(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function SK(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function TK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){HK(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];UK(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+VK(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=pb[n&127](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,569,103498);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function UK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function VK(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function WK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){HK(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];UK(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+VK(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else qa(103508,103488,606,103532)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=pb[o&127](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,765,103532);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function XK(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function YK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){_K(d,e,f,g,h,i);break}if(!(k&1))qa(135312,103488,1231,103540);else{aL(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){$K(d,e,f,g,h,i);break}_K(d,e,f,g,h,i)}while(0);if((l|0)==6)ZK(d,e,f,g,h,i);return}function ZK(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function _K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s<p?s:p;n=s<o?s:o;while(1){if((t|0)>=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;cL(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;cL(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];cL(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;cL(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];cL(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function $K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function aL(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o<m?o:m;n=o<n?o:n;q=0;while(1){if((q|0)>=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;cL(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;cL(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];cL(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;cL(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];cL(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;QK(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function bL(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21940+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21940+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21972+(d<<5)+(b<<2)>>2]|0;return d|0}function cL(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function dL(b){b=b|0;var d=0,e=0;if((c[46433]|0)!=0|(c[46432]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,1)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,0)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function eL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[46433]|0;if(!((e|0)!=0?(a[(yx(b,e)|0)>>0]|0)!=0:0)){e=c[46432]|0;if(!e){e=0;break}if(!(a[(yx(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=fL(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}XL(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}XL(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+LL(b,c[46433]|0,-25.0,-180.0)*.017453292519943295+r;j=+LL(b,c[46432]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function fL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;Pw(1,103553,f)|0;d=0}l=h;return d|0}function gL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;hL(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];bM(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{iL(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function hL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function iL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)qa(135630,103488,1316,103615)}function jL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dL(b);return}function kL(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=lL(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+mL(+(n+-1|0),C);A=n+1|0;L=~~+mL(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+nL(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+nL(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+hb[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+mL(q+-1.5707963267948966,6.283185307179586);b=1;p=+mL(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=uH(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];oL(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)pL(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)qL(o,m,l,j,i,k);else{oL(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;oL(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)pL(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)qL(o,k,l,j,i,i+3.141592653589793);rL(J);return o|0}function lL(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=sL()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];tL(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}XL(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+uL(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];tL(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}vL(o);l=q;return o|0}function mL(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function nL(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function oL(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=xH(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function pL(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){qL(h,a,b,c,e+i,i);break}else{oL(h,+E(+i)*c+a,+F(+i)*c+a);break}}else oL(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function qL(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;oL(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);oL(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function rL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function sL(){var a=0;a=uH(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=uH(128e3)|0;return a|0}function tL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=xH(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function uL(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function vL(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=xH(c[a>>2]|0,b<<6)|0;return}function wL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)qa(103632,103643,203,103654);e=c[h>>2]|0;if(!e)qa(103668,103643,206,103654);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=xL(e)|0;if(!0)e=0;else{e=(AG(c[h>>2]|0)|0)==0;e=e?0:g}if(!((OP(b,d,e)|0)<<24>>24))yL(d,e);do if(e|0){f=c[g>>2]|0;b=c[15686]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;g1(b,103711,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;g1(b,103679,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function xL(a){a=a|0;var b=0;b=c[46531]|0;if((b|0)!=0?(O$(b,a)|0)==0:0)a=c[46540]|0;else{D_(b);c[46531]=n1(a)|0;a=e2(186124,22228,35,36,93)|0;c[46540]=a}return a|0}function yL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(V$(e,103745,4)|0)if((V$(e,103750,5)|0)!=0?(V$(e,103756,9)|0)!=0:0){g=4248;e=103766}else{g=8344;e=103802}else{g=6296;e=103783}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function zL(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function AL(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=30;c[a+124>>2]=63;c[a+128>>2]=55;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Cw(b,c[4555]|0)|0;c[a+144>>2]=b;return b|0}function BL(a,b,d){a=a|0;b=b|0;d=d|0;d=E_(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=n1(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=n1(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function CL(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b>>2]|0);D_(c[b+4>>2]|0);D_(b);return}function DL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=b$(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=b$(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(g<f)a=-1;else a=g>f&1}}while(0);return a|0}function EL(){eb(186164)|0;return}function FL(){var a=0,b=0;b=l;l=l+16|0;a=b;eb(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[46541]|0)-(c[46542]|0)|0)*.016666666666666666)}function GL(a){a=a|0;var b=0,d=0;b=uH(16)|0;a=(a|0)>2?a:2;d=uH(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function HL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function IL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function JL(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function KL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=i1(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function LL(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+c2(h,g);e=(h|0)==(c[g>>2]|0)?e:j<f?f:j}l=i;return +e}function ML(a){a=a|0;var b=0.0;b=+h[22908];if(!(b>0.0)){b=+LL(a,nx(a,0,104612,0)|0,-1.0,0.0);b=b==0.0?72.0:b}return +b}function NL(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=yx(a,b)|0;return c|0}function OL(b,c,d){b=b|0;c=c|0;d=d|0;b=NL(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function PL(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=QL(yx(a,b)|0)|0;return a|0}function QL(a){a=a|0;return RL(a,0)|0}function RL(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((O$(b,134226)|0)!=0?(O$(b,104623)|0)!=0:0)if((O$(b,104626)|0)!=0?(O$(b,104631)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(a2(b)|0)&255}else c=1;else c=0;return c|0}function SL(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function TL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=SL(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=SL(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function UL(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function VL(a,b){a=a|0;b=b|0;if((SL(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else qa(104643,104635,194,104659)}function WL(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function XL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function YL(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[46545]|0;f=d+1024|0;if((d-e|0)<1024){c[46545]=f;f=xH(c[46546]|0,f)|0;c[46546]=f;d=c[46545]|0}else f=c[46546]|0;d=O0(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(W_(d)|0)+e|0;d=c[46546]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[46546]|0;return ((e|0)>0?d:0)|0}function ZL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[46362]|0;e=c[46548]|0;if((c[46547]|0)==(d|0))d=e;else{if(e){D_(c[e>>2]|0);D_(c[46548]|0);c[46548]=0;d=c[46362]|0}c[46547]=d;if(!d)break;if(!(a[d>>0]|0))break;d=_L(d)|0;c[46548]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=$L(d,c[46549]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function _L(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=n1(a)|0;d=0;while(1){b=k1(b,104958)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=vH(a)|0;else a=xH(d,a)|0;c[a+(g<<2)>>2]=b;f=W_(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[46549]=e;return f|0}function $L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[46550]|0;c[46550]=F_(h,b+2+(W_(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[46550]|0;c[e>>2]=b;c[e+4>>2]=104956;c[e+8>>2]=d;Y0(h,104949,e)|0;if(!(K1(c[46550]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[46550]|0;l=g;return a|0}function aM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(b$(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function bM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q<g;C=A?r:e;r=r+1|0;b=A?f:b;e=C;g=A?q:g}f=f+1|0}f=c[v+(b*48|0)>>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;XL(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k<j;m=m-q;n=n-o;n=n*n+m*m;g=C?p:g;i=C?i:p;j=C?n:j;k=C?k:n}h[a>>3]=m;h[a+8>>3]=n;l=z;return}function cM(){return 0}function dM(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+LL(b,c[46376]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+LL(b,c[46375]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=WJ(OL(b,c[46377]|0,104960)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=yx(b,c[46384]|0)|0;d=+LL(b,c[46380]|0,14.0,1.0);e=OL(b,c[46381]|0,104968)|0;f=OL(b,c[46382]|0,134232)|0;i=(Rz(l)|0)!=0;k=(HJ(b)|0)==2;i=kH(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[46385]|0;if((i|0?(j=yx(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(Rz(j)|0)!=0;l=kH(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ez(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(KL(b,c[46388]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;tb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function eM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ez(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[46412]|0;if(((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){fM(b,m);t=(Rz(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=kH(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=QL(NL(b,c[46422]|0,134226)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[46413]|0;if((f|0?(j=yx(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){fM(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(Rz(j)|0)!=0;j=kH(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[46427]|0;if(((d|0)!=0?(k=yx(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){gM(b,m,n);j=(Rz(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=kH(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[46428]|0;if((f|0?(q=yx(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){gM(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(Rz(q)|0)!=0;q=kH(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=xx(b,108373)|0;d=d|0?d:191979;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;hM(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46434]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=xx(b,108382)|0;d=d|0?d:191979;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;hM(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46435]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function fM(a,b){a=a|0;b=b|0;h[b>>3]=+LL(a,c[46409]|0,14.0,1.0);c[b+8>>2]=OL(a,c[46410]|0,104968)|0;c[b+12>>2]=OL(a,c[46411]|0,134232)|0;return}function gM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))fM(a,b);h[d>>3]=+LL(a,c[46429]|0,+h[b>>3],1.0);c[d+8>>2]=OL(a,c[46430]|0,c[e>>2]|0)|0;c[d+12>>2]=OL(a,c[46431]|0,c[b+12>>2]|0)|0;return}function hM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=A$(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;xb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{xb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function iM(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=yx(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(QL(d)|0)<<24>>24==0&1;else b=0;return b|0}function jM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]<o?i:m)>>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]<n?i:m)+8>>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function kM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];lM(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function lM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function mM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if((ay(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){nM(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;nM(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{nM(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;nM(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=Sy(b)|0;while(1){if(!n)break;WL(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];oM(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];pM(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Ex(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]<N?K:B)>>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]<M?K:B)+8>>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Gx(b,m)|0}n=Ty(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]<P?K:G)>>3];h[D>>3]=+h[(+h[D>>3]<O?K:G)+8>>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function nM(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function oM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function pM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function qM(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(V$(ry(a)|0,104980,7)|0)==0&1;return a|0}function rM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:do if(!e)switch(pz(b)|0){case 0:{e=nx(a,0,c,191979)|0;break a}case 1:{e=nx(a,1,c,191979)|0;break a}case 2:{e=nx(a,2,c,191979)|0;break a}default:{e=0;break a}}while(0);rx(b,e,d)|0;return e|0}function sM(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+144|0;g=k;i=tM(d)|0;h=Cw(23488,c[4555]|0)|0;j=vA(d,104988,1)|0;Az(j,134401,280,1)|0;Tw(g,128,k+16|0);e=Sy(d)|0;while(1){if(!e)break;a:do if(!(a[(c[e+16>>2]|0)+118>>0]|0)){f=Ex(d,e)|0;while(1){if(!f)break a;uM(f,j,g,h,i);f=Gx(d,f)|0}}while(0);e=Ty(d,e)|0}Xw(g);yw(h)|0;f=ay(j)|0;e=Sy(j)|0;while(1){if(!e)break;h=Ty(j,e)|0;dz(d,e)|0;e=h}$x(j)|0;if(f|0){j=(c[d+16>>2]|0)+136|0;b[j>>1]=b[j>>1]|1}yw(i)|0;l=k;return f|0}function tM(a){a=a|0;var b=0;b=Cw(23524,c[4555]|0)|0;DM(a,b);return b|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;p=t+24|0;s=t+16|0;r=t+8|0;k=t;n=c[b>>2]&3;m=c[((n|0)==3?b:b+48|0)+40>>2]|0;n=c[((n|0)==2?b:b+-48|0)+40>>2]|0;do if(!(a[(c[n+16>>2]|0)+118>>0]|0)){if(!(z$(ry(m)|0,104980,7)|0))o=vM(g,ry(m)|0)|0;else o=0;if(!(z$(ry(n)|0,104980,7)|0))i=vM(g,ry(n)|0)|0;else i=0;h=(o|0)!=0;j=(i|0)!=0;if(h|j){if((o|0)==(i|0)){r=ry(m)|0;s=ry(m)|0;c[k>>2]=r;c[k+4>>2]=s;Pw(0,105003,k)|0;break}g=wM(f,b)|0;if(g|0){xM(b,c[g+16>>2]|0,c[g+20>>2]|0)|0;break}if(!j)if(!(oz(o,n)|0)){zM(f,m,n,xM(b,yM(m,o,e,d)|0,n)|0);break}else{r=ry(n)|0;s=ry(o)|0;c[q>>2]=r;c[q+4>>2]=s;Pw(0,105158,q)|0;break}if(!h)if(!(oz(i,m)|0)){zM(f,m,n,xM(b,m,yM(n,i,e,d)|0)|0);break}else{r=ry(m)|0;s=ry(i)|0;c[p>>2]=r;c[p+4>>2]=s;Pw(0,105121,p)|0;break}if(oz(i,o)|0){q=ry(o)|0;s=ry(i)|0;c[r>>2]=q;c[r+4>>2]=s;Pw(0,105041,r)|0;break}if(!(oz(o,i)|0)){s=yM(m,o,e,d)|0;zM(f,m,n,xM(b,s,yM(n,i,e,d)|0)|0);break}else{q=ry(i)|0;r=ry(o)|0;c[s>>2]=q;c[s+4>>2]=r;Pw(0,105081,s)|0;break}}}while(0);l=t;return}function vM(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function wM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=c[b>>2]&3;c[e>>2]=c[((f|0)==3?b:b+48|0)+40>>2];c[e+4>>2]=c[((f|0)==2?b:b+-48|0)+40>>2];b=nb[c[a>>2]&63](a,e,512)|0;l=d;return b|0}function xM(a,b,c){a=a|0;b=b|0;c=c|0;c=Rx(ez(b)|0,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(a,c)|0;return c|0}function yM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+112|0;g=k;j=k+4|0;Ww(e,105195)|0;i=c[46551]|0;c[46551]=i+1;c[g>>2]=i;Y0(j,134313,g)|0;Ww(e,j)|0;j=e+4|0;g=c[j>>2]|0;i=e+8|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=58;Ww(e,ry(d)|0)|0;h=fz(d)|0;g=c[j>>2]|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}a[g>>0]=0;e=c[e>>2]|0;c[j>>2]=e;j=az(h,e,1)|0;Az(j,134365,304,1)|0;a[(c[j+16>>2]|0)+118>>0]=1;Xy(d,j,1)|0;Xy(f,b,1)|0;f=ez(j)|0;c[46384]=rM(f,j,105198,191979,c[46384]|0)|0;f=ez(j)|0;c[46387]=rM(f,j,138e3,131253,c[46387]|0)|0;f=ez(j)|0;c[46377]=rM(f,j,105204,105210,c[46377]|0)|0;l=k;return j|0}function zM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f;n=g+8|0;c[n>>2]=b;m=g+12|0;c[m>>2]=d;o=c[e>>2]&3;i=e+48|0;j=g+16|0;c[j>>2]=c[((o|0)==3?e:i)+40>>2];k=e+-48|0;h=g+20|0;c[h>>2]=c[((o|0)==2?e:k)+40>>2];nb[c[a>>2]&63](a,g,1)|0;c[n>>2]=d;c[m>>2]=b;d=c[e>>2]&3;c[j>>2]=c[((d|0)==2?e:k)+40>>2];c[h>>2]=c[((d|0)==3?e:i)+40>>2];nb[c[a>>2]&63](a,g,1)|0;l=f;return}function AM(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(24)|0;c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];return d|0}function BM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0>=e>>>0)if(a>>>0>e>>>0)a=1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return (b>>>0<d>>>0?-1:b>>>0>d>>>0&1)|0}else a=-1;return a|0}function DM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=ry(a)|0;if(!(nb[c[b>>2]&63](b,d,512)|0)){i=uH(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;nb[c[b>>2]&63](b,i,1)|0}else{c[g>>2]=d;Pw(0,105214,g)|0}DM(a,b);e=e+1|0}l=h;return}function EM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function FM(a){a=a|0;var b=0,c=0,d=0;d=vA(a,104988,1)|0;Az(d,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;GM(c,d);c=Gx(a,c)|0}b=Ty(a,b)|0}b=Sy(d)|0;while(1){if(!b)break;c=Ty(d,b)|0;HM(b);dz(a,b)|0;b=c}$x(d)|0;return}function GM(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=IM(f,d)|0;e=xM(b,f,IM(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;JM(b)}return}function HM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){tb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);Cz(a,134365)|0;return}function IM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ez(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){Xy(d,b,1)|0;b=A$(ry(b)|0,58)|0;if(!b)qa(108182,104635,1225,105266);d=b+1|0;b=az(f,d,0)|0;if(!b){b=az(f,d,1)|0;Az(b,134365,304,1)|0;d=sx(f,1,0)|0;while(1){if(!d)break a;g=yx(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))rx(b,d,e)|0;d=sx(f,1,d)|0}}}while(0);return b|0}function JM(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+144>>2]|0);KM(a);nH(c[(c[b>>2]|0)+96>>2]|0);nH(c[(c[b>>2]|0)+108>>2]|0);nH(c[(c[b>>2]|0)+100>>2]|0);nH(c[(c[b>>2]|0)+104>>2]|0);Cz(a,134378)|0;return}function KM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;D_(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}D_(a);D_(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function LM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=nx(a,b,c,0)|0;if(!e)e=nx(a,b,c,d)|0;return e|0}function MM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;i=o;h=o+8|0;j=o+16|0;m=A$(b,59)|0;n=d+4|0;e=c[n>>2]|0;k=d+8|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;e=c[n>>2]|0}c[n>>2]=e+1;a[e>>0]=38;if(((m|0)!=0?(f=m-b|0,(f+-2|0)>>>0<=6):0)?(U0(j,b,f)|0,a[j+f>>0]=0,c[h>>2]=j,g=e2(h,23560,252,8,94)|0,(g|0)!=0):0){c[i>>2]=c[g+4>>2];Y0(j,134313,i)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=35;Ww(d,j)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=59;b=m+1|0}l=o;return b|0}function NM(a,b){a=a|0;b=b|0;return b$(c[a>>2]|0,c[b>>2]|0)|0}function OM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[46552]|0)!=(d|0)){c[46552]=d;a[191878]=0}Tw(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=QM(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[191878]|0)){c[j>>2]=ry(d)|0;Pw(0,106681,j)|0;a[191878]=1}h=-1;e=PM(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[191878]|0)){g=ry(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;Pw(0,106802,k)|0;a[191878]=1}e=PM(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=n1(n)|0;Xw(o);l=q;return p|0}function PM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=RM(g)|0;h=d+4|0;i=d+8|0;e=W_(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;D_(g);l=j;return k|0}function QM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=e2(h,23560,252,8,94)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function RM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;Tw(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=QM(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=n1(h)|0;Xw(i);l=k;return j|0}function SM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;Tw(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=n1(f)|0;Xw(g);l=i;return h|0}function TM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];UM(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];oM(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=lb[d&127](f,e)|0}else d=0;l=n;return d|0}function UM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function VM(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];oM(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];pM(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function WM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(XM(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((YM(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(VM(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}function XM(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function YM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)qa(106911,104635,1637,106919);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((VG(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function ZM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];JE(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function _M(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(O$(e,106934)|0)){d=4;break a}if(!(O$(e,106940)|0)){d=12;break a}break}case 70:case 102:{if(!(O$(b+1|0,106948)|0)){d=2;break a}break}case 76:case 108:{if(!(O$(b+1|0,106953)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(O$(e,106957)|0)){d=0;break a}if(!(O$(e,106961)|0)){d=2;break a}break}case 79:case 111:{if(!(O$(b+1|0,106963)|0)){d=8;break a}break}case 80:case 112:{if(!(O$(b+1|0,106968)|0)){d=6;break a}break}case 83:case 115:{if(!(O$(b+1|0,106976)|0)){d=10;break a}break}case 84:case 116:{if(!(O$(b+1|0,106982)|0)){d=10;break a}break}case 89:case 121:{if(!(O$(b+1|0,106986)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;Pw(0,106989,f)|0}while(0);l=g;return d|0}function $M(d,f){d=d|0;f=f|0;var g=0;g=xx(d,107030)|0;if(g)if(!(a[g>>0]|0))f=0;else f=_M(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function aN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q<f?w:p)>>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s<i?w:p)+8>>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function bN(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function cN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=C_(40)|0;c[w>>2]=0;s=y;o=0;e=$(29,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=$(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=E3(c[f>>2]|0,w|0,x|0)|0;if(!e)bb(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[191874]|0))t=0;else{o=0;e=_(3)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=aa(95,b|0,107038)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[46553]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[46553]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;ca(20,0,107042,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=aa(96,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[46553]&2|0){o=0;ja(26,c[15686]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=$(25,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=aa(97,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!((c[46363]|0)==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[191874]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=ca(31,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=ca(31,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;d=$(30,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=d;i=i+1|0}while(0);o=0;e=aa(98,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=aa(84,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=$(31,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ma(28,v|0,n|0,8,99);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;ia(107,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[15686]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[46553]&16|0:0){o=0;ja(26,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ma(29,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ka(65,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ka(65,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=ca(32,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ma(30,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;ia(108,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ha(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=$(32,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=$(33,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ka(66,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=D3(186216,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;ia(109,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[46553]&4|0){o=0;na(8,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;oa(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[191874]|0))e=0;else{o=0;ia(110,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;ia(103,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;ia(103,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(111,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(103,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}D_(w|0);l=y;return}function dN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;D1(107909,a)|0;D1(107920,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){YN(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{_N(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;g1(a,107940,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;g1(a,107960,p)|0;d=d+1|0}D1(107982,a)|0;l=q;return}function eN(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function fN(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function gN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;YN(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){WN(j,h,c[h+24>>2]|0);pO(b,f,h,0.0)|0;break}else{WN(j,h,i);pO(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function hN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;YN(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;WN(h,g,e);pO(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function iN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=uH((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;WN(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=XN(j,i)|0;NR(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){WN(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{YN(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}ZN(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){WN(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];ZN(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=F_(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function jN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];RN(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function kN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];RN(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function lN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;QN(uN(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function mN(a){a=a|0;var b=0,d=0;d=a+20|0;wN(c[d>>2]|0);b=a+24|0;wN(c[b>>2]|0);xN(c[d>>2]|0);xN(c[b>>2]|0);yN(c[d>>2]|0,a);yN(c[b>>2]|0,a);zN(c[d>>2]|0);zN(c[b>>2]|0);return}function nN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;D1(107157,a)|0;c[n>>2]=10;c[n+4>>2]=10;g1(a,107563,n)|0;D1(135183,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;g1(a,135202,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];vN(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}D1(107580,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;g1(a,135239,y)|0;h[u>>3]=+h[(+h[u>>3]<E?u:t)>>3];h[v>>3]=+h[(+h[v>>3]<A?u:t)+8>>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;g1(a,107605,x)|0;l=z;return}function oN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[15686]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];pN(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];pN(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)D_(i);p=vH(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(rN(u,d)|0);j=+h[I>>3]}else{j=+qN(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(rN(q,d)|0);else j=+qN(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(rN(q,d)|0);j=+h[J>>3]}else{j=+qN(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=ry(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=ry(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;g1(G,107116,M)|0}QK(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,25576);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];jL(b,z,E,F)}v=v+1|0}D_(o);l=N;return}function pN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function qN(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=uN(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function rN(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=uN(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function sN(a){a=a|0;return 0}function tN(a){a=a|0;return 0}function uN(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b+8|0,512)|0;if(!a)qa(107129,107135,423,107143);a=c[a+16>>2]|0;a=nb[c[a>>2]&63](a,b+16|0,512)|0;if(!a)qa(107154,107135,425,107143);else return a|0;return 0}function vN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=rN(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+qN(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p<r?p:r;h[i>>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q<s?q:s;h[v>>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;g1(d,107656,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=rN(m,g)|0;else f=~~+qN(m,g);B=+(f|0);D=p<B?p:B;h[i>>3]=D;k=+(j|0);C=q<k?q:k;h[v>>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;g1(d,107678,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=rN(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+qN(m,g)}A=~~k;C=+(A|0);h[i>>3]=p<C?p:C;D=+(j|0);h[v>>3]=q<D?q:D;h[w>>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;g1(d,107692,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function wN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=$N(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function xN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)PN(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function yN(a,b){a=a|0;b=b|0;var d=0;d=Aw(a)|0;while(1){if(!d)break;a=Aw(c[d+16>>2]|0)|0;while(1){if(!a)break;DN(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function zN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Aw(a)|0;while(1){if(!e)break;i=e+8|0;f=Aw(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[46553]&8|0)AN(f,~~+h[i>>3]);g=f+32|0;eO(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function AN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[15686]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;g1(i,107713,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Ew(e)|0){BN(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);D1(107733,i)|0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d)break b;D1(107738,i)|0;BN(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);D1(150517,i)|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function BN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=CN(c[d+32>>2]|0)|0;e=CN(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;g1(b,107744,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=CN(c[d+32>>2]|0)|0;i=CN(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;g1(b,107744,e)|0}l=g;return}function CN(a){a=a|0;switch(a|0){case 0:{a=107795;break}case 1:{a=107790;break}case 2:{a=107783;break}case 3:{a=107776;break}case 4:{a=107768;break}default:a=0}return a|0}function DN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((dO(u,j,k)|0)==0?(dO(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,EN(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;FN(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;FN(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function EN(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))qa(107866,107135,843,107897);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function FN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=IN(b,e)|0;if(!b){h=0;break}d=IN(d,f)|0;if(!d){i=6;break}if(!(EN(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)qa(135312,107135,871,107815);else if((i|0)==7)h=KN(b,JN(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function GN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=uN(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;bO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=IN(b,e)|0;m=IN(d,f)|0;do if(!(a[b>>0]|0)){j=uN(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=uN(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function HN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(EN(b,d)|0))break;g=IN(b,1)|0;d=IN(d,e)|0;b=g}g=c[(uN(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;cO(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function IN(a,b){a=a|0;b=b|0;if(!a)qa(107802,107135,798,107806);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function JN(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=LN(b,c,3,1)|0;else b=LN(b,c,4,2)|0;l=f;return b|0}Pw(1,107828,e)|0;bb(186216,1);return 0}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=IN(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function LN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j<k)?(g=+h[a+16>>3],i=+h[b+24>>3],!(g>i)):0){if(k<j&g<k){b=MN(a,b,d,e)|0;break}if(k<g&g<i){b=0-(MN(b,a,d,e)|0)|0;break}if(!(g==k))if(j==k){d=c[a+36>>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j<i){o=(c[a+36>>2]|0)==(d|0);d=ON(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=ON(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=NN(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(NN(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=NN(f,o,d)|0;break}else{b=0-(NN(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function MN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i<j){a=c[a+36>>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=ON(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(ON(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function NN(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function ON(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function PN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(JN(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{bO(d,a,b);break}case -1:{bO(d,b,a);break}default:{}}b=b+1|0}}return}function QN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=vH(d<<2)|0;else a=xH(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function RN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=nb[c[a>>2]&63](a,f,512)|0;if(!e){e=uH(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Cw(25624,c[4555]|0)|0;nb[c[a>>2]&63](a,e,1)|0}f=c[e+16>>2]|0;nb[c[f>>2]&63](f,b,1)|0;l=g;return}function SN(a,b,d){a=a|0;b=b|0;d=d|0;aO(c[b+32>>2]|0);D_(c[b+28>>2]|0);D_(b);return}function TN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e<f)a=!(+h[b+8>>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function UN(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+16>>2]|0)|0;D_(b);return}function VN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f<e)<<31>>31)|0}function WN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function XN(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function YN(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function ZN(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f<g){k=0;l=i;d=j;e=f;f=g}else{k=1;l=j;d=i;e=g}h[b+24>>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function _N(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function $N(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=uH(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=yR()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function aO(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;yw(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}D_(e);D_(a);return}function bO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,1)|0;l=e;return}function cO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;nb[c[g>>2]&63](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,2)|0;l=e;return}function dO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(nb[c[d>>2]&63](d,f,512)|0)!=0&1;l=e;return d|0}function eO(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=fO(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=gO(a,d,b,e)|0;d=d+1|0}while(1){d=hO(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}iO(e)}}return}function fO(a){a=a|0;var b=0;b=uH(8)|0;c[b+4>>2]=uH(a<<2)|0;c[b>>2]=-1;return b|0}function gO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Aw(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=gO(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;jO(e,b);return d+1|0}function hO(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function iO(a){a=a|0;D_(c[a+4>>2]|0);D_(a);return}function jO(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function kO(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function lO(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function mO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=uH(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=uH((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function nO(a){a=a|0;var b=0;b=uH(24)|0;c[b>>2]=0;c[b+16>>2]=uH(a*40|0)|0;return b|0}function oO(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function pO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;qO(b,f);qO(d,f);return a|0}function qO(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function rO(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+28>>2]|0);D_(c[b>>2]|0);D_(c[a+20>>2]|0);D_(a);return}function sO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}GR();a:do if(!(JR(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=LR()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=tO(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(JR(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;MR(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function tO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function uO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;wC(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function vO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(XB(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){tb[d&127](a);a=0}else a=0;else a=1;return a|0}function wO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;dC(a);return}function xO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function yO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function zO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)tb[d&127](a);return}function AO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)tb[d&127](a);cC(a);return}function BO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)tb[d&127](a);return}function CO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)tb[d&127](a);return}function DO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;xb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function EO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)tb[d&127](a);return}function FO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)tb[d&127](a);return}function GO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)tb[d&127](a);return}function HO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)tb[d&127](a);return}function IO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)tb[d&127](a);return}function JO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)tb[d&127](a);return}function KO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)tb[d&127](a);return}function LO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)tb[d&127](a);return}function MO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)tb[d&127](a);return}function NO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)tb[d&127](a);return}function OO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)tb[d&127](a);return}function PO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)yb[h&15](a,b,d,e,f);return}function QO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)tb[d&127](a);return}function RO(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)ub[e&63](a,b);return}function SO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)tb[d&127](a);return}function TO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];xO(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vb[g&127](b,f,e)}}while(0);l=k;return}function UO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function VO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=iQ(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(e2(e,f,c[a+20>>2]|0,4,100)|0)!=0:0))h=3;a:do if((h|0)==3){switch(jQ(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{Pw(1,108020,g)|0;break a}}a=vH((W_(b)|0)+16|0)|0;c[i>>2]=b;Y0(a,107985,i)|0;if(AG(a)|0){c[j>>2]=b;Pw(0,107994,j)|0}D_(a)}while(0);l=k;return}function WO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(VO(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)ub[f&63](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function YO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(b$(b,108041)|0)){c[j>>2]=3;b=f;continue b}if(!(b$(b,108062)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+b2(d);b=f;continue b}break}case 100:{if(!(b$(b,134245)|0)){c[j>>2]=1;b=f;continue b}if(!(b$(b,134238)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(b$(b,131253)|0?b$(b,108047)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(b$(b,108057)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(b$(b,108075)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(b$(b,108082)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(b$(b,108091)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;Pw(0,108099,k)|0;b=f}}while(0);l=m;return}function ZO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){yO(a,g,g,2)|0;f=c[i>>2]|0}vb[f&127](a,g,e)}l=j;return}function _O(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;xb[c[n>>2]&31](a,e,d,f)}else xb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function $O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];_O(a,f,4,d);l=e;return}function aP(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){zb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=h;h=xH(c[46594]|0,h<<4)|0;c[46594]=h}else h=c[46594]|0;yO(a,b,h,d)|0;zb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function bP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){vb[f&127](a,b,d);break}e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;vb[c[g>>2]&127](a,e,d)}while(0);return}function cP(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)ub[f&63](b,d);return}function dP(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)qa(108200,108152,691,108163);if(!d)qa(108182,108152,692,108163);if(!(a[d>>0]|0))qa(108187,108152,693,108163);D=yC(d)|0;if(!D){if((C|0)!=0&(VJ(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)yb[m&15](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];BC(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]<v?E:G)>>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]<w?E:G)+8>>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(eP(i)|0){case 1:if(q<r){p=q*p;o=q*o;break a}else{p=r*p;o=r*o;break a}case 2:{p=q*p;break}case 3:{o=r*o;break}case 4:{p=q*p;o=r*o;break}default:{}}while(0);if(p<t){t=(t-p)*.5;j=j+t;h[E>>3]=j;k=k-t;h[n>>3]=k}if(o<w){w=(w-o)*.5;h[z>>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];xO(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];xO(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];gP(b,D,B,g,G)}}}l=F;return}function eP(b){b=b|0;if(a[b>>0]|0)if(O$(b,138034)|0)if(O$(b,137966)|0)if(!(O$(b,108195)|0))b=4;else b=(QL(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function fP(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return}\n  function SX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-20;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=17;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=28;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=26;break b}else h=4;break}default:{h=29;break b}}e=e+h|0}if((h|0)==17){c[g>>2]=e;f=0;break}else if((h|0)==20){c[g>>2]=e;f=0;break}else if((h|0)==23){c[g>>2]=e;f=0;break}else if((h|0)==26){c[g>>2]=e;f=0;break}else if((h|0)==28){c[g>>2]=e;f=20;break}else if((h|0)==29){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function TX(){return 58116}function UX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;c[g>>2]=d;h=c[b>>2]|0;a=f-(c[e>>2]|0)|0;if((d-h|0)>(a|0)){a=h+a|0;c[g>>2]=a;f=1}else{f=0;a=d}fX(h,g);h=c[g>>2]|0;d=c[b>>2]|0;g=h-d|0;F3(c[e>>2]|0,d|0,g|0)|0;c[b>>2]=(c[b>>2]|0)+g;c[e>>2]=(c[e>>2]|0)+g;l=i;return (f?2:h>>>0<a>>>0&1)|0}function VX(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=d+72|0;k=f;l=h;m=c[e>>2]|0;n=c[g>>2]|0;a:while(1){d=m>>>0<f>>>0;if(!(n>>>0<h>>>0&d)){o=12;break}d=a[m>>0]|0;i=d&255;switch(a[j+i>>0]|0){case 5:{if((k-m|0)<2){d=1;break a}b[n>>1]=(d&31)<<6|a[m+1>>0]&63;m=m+2|0;n=n+2|0;continue a}case 6:{if((k-m|0)<3){d=1;break a}b[n>>1]=(a[m+1>>0]&63)<<6|i<<12|a[m+2>>0]&63;m=m+3|0;n=n+2|0;continue a}case 7:{if((l-n|0)<4){d=2;break a}if((k-m|0)<4){d=1;break a}i=((a[m+1>>0]&63)<<12|(d&7)<<18|(a[m+2>>0]&63)<<6|a[m+3>>0]&63)+-65536|0;b[n>>1]=i>>>10|55296;b[n+2>>1]=i&1023|56320;m=m+4|0;n=n+4|0;continue a}default:{b[n>>1]=d<<24>>24;m=m+1|0;n=n+2|0;continue a}}}if((o|0)==12)d=d?2:0;c[e>>2]=m;c[g>>2]=n;return d|0}function WX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function XX(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function YX(a,b){a=a|0;b=b|0;return 0}function ZX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function _X(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function $X(a,b){a=a|0;b=b|0;if((d[b>>0]|0)<194)return 1;else{b=d[b+1>>0]|0;return b>>>7^1|(b&192|0)==192|0}return 0}function aY(b,c){b=b|0;c=c|0;var d=0;b=a[c+2>>0]|0;do if(b<<24>>24>-1)b=1;else{d=a[c>>0]|0;if(d<<24>>24==-17?(a[c+1>>0]|0)==-65:0)if((b&255)>189){b=1;break}else{b=191;c=-65}else{if((b&255)>191){b=1;break}c=a[c+1>>0]|0;b=c&255;if(d<<24>>24==-32){b=(c&255)<160|(b&192|0)==192;break}}b=(b&128|0)==0?1:d<<24>>24==-19?(c&255)>159:(b&192|0)==192}while(0);return b&1|0}function bY(b,c){b=b|0;c=c|0;var e=0;e=d[c+3>>0]|0;do if(!((e&128|0)==0|(e&192|0)==192)?(e=d[c+2>>0]|0,!((e&128|0)==0|(e&192|0)==192)):0){e=a[c>>0]|0;b=a[c+1>>0]|0;c=b&255;if(e<<24>>24==-16){b=(b&255)<144|(c&192|0)==192;break}else{b=(c&128|0)==0?1:e<<24>>24==-12?(b&255)>143:(c&192|0)==192;break}}else b=1;while(0);return b&1|0}function cY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e+1>>0]|0;if(!(f<<24>>24)){h=a[e>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=EY(12,b,e+2|0,m,g)|0;break a}case 13:{f=EY(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 16:{f=FY(b,e+4|0,m,g)|0;break a}case 15:{f=AY(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=uY(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+5>>0]|0)==0?(a[e+4>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=GY(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[i+3>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h+1>>0]|0;j=a[h>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[h+3>>0]|0;i=a[k>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function dY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;do switch(f|0){case 2:{f=xY(b,e+2|0,i,g)|0;break a}case 3:{f=tY(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b+1>>0]|0;i=a[b>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[b+3>>0]|0){b=h;continue b}if((a[h>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[b+5>>0]|0){b=h;continue b}if((a[i>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function eY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b+1>>0]|0;h=a[b>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function fY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}h=(a[b>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function gY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function hY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=uY(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function iY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b+1>>0]|0){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function jY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function kY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c+1>>0]|0;e=a[c>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function lY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;i=e+3|0;h=a[i>>0]|0;j=h<<24>>24==0;k=a[l>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+5>>0]|0;b=a[e+4>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function mY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if((a[c+5>>0]|0)==0?(a[b>>0]|0)==120:0){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c+1>>0]|0)){d=a[c>>0]|0;if(d<<24>>24==59){e=17;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8){e=0;b=d+-48|b<<4}else if((e|0)==9){e=0;b=(b<<4)+-55+d|0}else if((e|0)==10){e=0;b=(b<<4)+-87+d|0}if((b|0)<1114112)c=c+2|0;else{b=-1;break}}}else{d=b;b=0;e=13}while(0);c:do if((e|0)==13)while(1){e=0;if(!(a[d+1>>0]|0)){c=a[d>>0]|0;if(c<<24>>24==59){e=17;break c}c=c<<24>>24}else c=-1;b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;break}else{d=d+2|0;e=13}}while(0);if((e|0)==17)b=jX(b)|0;return b|0}function nY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+3>>0]|0)==0?(a[c+2>>0]|0)==116:0){if(!(a[c+1>>0]|0))b=a[c>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c+1>>0]|0)==0?(a[c>>0]|0)==97:0)?(a[c+3>>0]|0)==0:0)?(a[c+2>>0]|0)==109:0)?(a[c+5>>0]|0)==0:0)?(a[c+4>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c+1>>0]|0))switch(a[c>>0]|0){case 113:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=117){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=112){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function oY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e+1>>0]|0;h=a[e>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[e+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function pY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f+-2|0;i=b+72|0;f=e;a:while(1){h=f+2|0;if((j-h|0)<=1){f=1;break}f=a[f+3>>0]|0;b=f<<24>>24==0;e=a[h>>0]|0;if(b)f=d[i+(e&255)>>0]|0;else f=sY(f,e)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{f=h;continue a}case 21:if(b&e<<24>>24==9){k=12;break a}else{f=h;continue a}case 22:case 26:{if(!b){k=12;break a}if(e<<24>>24>=0){f=h;continue a}break}default:if(!b){k=12;break a}}switch(e<<24>>24|0){case 64:case 36:{f=h;break}default:{k=12;break a}}}if((k|0)==12){c[g>>2]=h;f=0}return f|0}function qY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j>>0]|0;b=a[j+1>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[b>>0]|0;f=(o<<4&48|i>>>6|a[j+3>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function rY(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k+1>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0<e>>>0;k=c[h>>2]|0;if(!(j&k>>>0<i>>>0))break;j=((d[g+1>>0]|0)<<8|(d[g>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function sY(a,b){a=a|0;b=b|0;var c=0;switch(a<<24>>24){case -37:case -38:case -39:case -40:{a=7;break}case -33:case -34:case -35:case -36:{a=8;break}case -1:{if((b&255)>253)a=0;else c=4;break}default:c=4}if((c|0)==4)a=29;return a|0}function tY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=vY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[j+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))f=d[k+(h&255)>>0]|0;else f=sY(b,h)|0;switch(f|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else j=i}if((h|0)==22){c[g>>2]=i;b=0;break}else if((h|0)==23){c[g>>2]=i;b=0;break}else if((h|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==28){c[g>>2]=j+4;b=9;break}else if((h|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function uY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function vY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e+1>>0]|0;h=a[e>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=wY(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[b+3>>0]|0;f=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function wY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function xY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[e+3>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[i>>0]|0)>>0]|0;else h=sY(h,a[i>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+4|0,f,g)|0;break a}case 20:{h=zY(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=AY(b,e+2|0,f,g)|0;break a}case 17:{h=BY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h+1>>0]|0;k=a[h>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}k=h+2|0;e=o-k|0;if((e|0)<=1){h=-1;break a}l=a[h+3>>0]|0;i=a[k>>0]|0;if(!(l<<24>>24))j=d[m+(i&255)>>0]|0;else j=sY(l,i)|0;switch(j|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140706+(l&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=k;h=0;break a}case 49:{c[g>>2]=k;h=0;break a}case 50:{if((e|0)<3){h=-2;break a}c[g>>2]=k;h=0;break a}case 52:{if((e|0)<4){h=-2;break a}c[g>>2]=k;h=0;break a}case 54:{c[g>>2]=k;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[h+3>>0]|0;e=a[i>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=CY(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[h+3>>0]|0)==0?(a[i>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function yY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e+1>>0]|0)==0?(a[e>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h+1>>0]|0;b=a[h>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[h+3>>0]|0){h=f;continue b}if((a[f>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[h+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function zY(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b+1>>0]|0){d=0;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function AY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;j=o-e|0;a:do if((j|0)>1){f=a[e+1>>0]|0;if(!(f<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(f,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(f&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[k+3>>0]|0;j=a[f>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j+1>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[j+3>>0]|0){j=f;continue c}if((a[f>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[k+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function BY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[j+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function CY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e+1>>0]|0;j=a[e>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[h>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}e=a[e+3>>0]|0;h=a[i>>0]|0;if(!(e<<24>>24))e=d[o+(h&255)>>0]|0;else e=sY(e,h)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e+1>>0]|0;i=a[e>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=tY(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;j=a[i>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[i>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[i+3>>0]|0)==0?(a[h>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function DY(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b+1>>0]|0)==0:0){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+3>>0]|0)){switch(a[b+2>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+5>>0]|0)){switch(a[b+4>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function EY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f+1>>0]|0;i=a[f>>0]|0;if(!(e<<24>>24))e=d[k+(i&255)>>0]|0;else e=sY(e,i)|0;switch(e|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{i=f+2|0;if((e|0)==(b|0)){l=12;break a}else{f=i;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-i|0)>1){c[h>>2]=i;g=a[f+3>>0]|0;f=a[i>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function FY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+5>>0]|0;h=a[e+4>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function GY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}h=a[h+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[b+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function HY(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=67;c[b+4>>2]=68;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function IY(a){a=a|0;var b=0;a:do if(!a)b=6;else{b=0;while(1){if((b|0)>=6){b=-1;break a}if(qZ(a,c[59964+(b<<2)>>2]|0)|0)break a;b=b+1|0}}while(0);return b|0}function JY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,0,b,c,d)|0}function KY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,1,b,c,d)|0}function LY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;BX(58480,b,c,d);return}function MY(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;a:do if(f>>>0<g>>>0){l=c[d+72>>2]|0;i=f+1|0;b:do if((i|0)==(g|0)){i=a[d+69>>0]|0;if(((i<<24>>24)+-3|0)>>>0<3){i=-1;break a}switch(a[f>>0]|0){case 60:case 0:{i=-1;break a}case -17:case -1:case -2:break;default:break b}if(!((e|0)==1&i<<24>>24==0)){i=-1;break a}}else{k=a[f>>0]|0;i=a[i>>0]|0;j=((k&255)<<8|i&255)&65535;c:do if(j<<16>>16<-2){if(j<<16>>16>=-257){switch(j<<16>>16){case -257:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+16>>2];i=14;break a}switch(j<<16>>16){case -4165:break;default:break c}if((e|0)==1)switch(a[d+69>>0]|0){case 0:case 3:case 4:case 5:break b;default:{}}i=f+2|0;if((i|0)==(g|0)){i=-1;break a}if((a[i>>0]|0)!=-65)break b;c[h>>2]=f+3;c[l>>2]=c[b+8>>2];i=14;break a}else{if(j<<16>>16<15360){switch(j<<16>>16){case -2:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+20>>2];i=14;break a}switch(j<<16>>16){case 15360:break;default:break c}i=a[d+69>>0]|0;if(i<<24>>24==4){if((e|0)==1)break b}else if((e|0)==1&i<<24>>24==3)break b;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);if(k<<24>>24){if((e|0)==1|i<<24>>24!=0)break;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}if((e|0)==1?(a[d+69>>0]|0)==5:0)break;i=c[b+16>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);i=c[b+(a[d+69>>0]<<2)>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0}else i=-4;while(0);return i|0}function NY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0<f>>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e>>0]|0;if(!(f<<24>>24)){h=a[e+1>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=mZ(12,b,e+2|0,m,g)|0;break a}case 13:{f=mZ(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 16:{f=nZ(b,e+4|0,m,g)|0;break a}case 15:{f=iZ(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=cZ(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+4>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=oZ(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[j>>0]|0;h=a[i+3>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h>>0]|0;j=a[h+1>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[k>>0]|0;i=a[h+3>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function OY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;do switch(f|0){case 2:{f=fZ(b,e+2|0,i,g)|0;break a}case 3:{f=bZ(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b>>0]|0;i=a[b+1>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[h>>0]|0){b=h;continue b}if((a[b+3>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[i>>0]|0){b=h;continue b}if((a[b+5>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function PY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0<f>>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b>>0]|0;h=a[b+1>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function QY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}h=(a[f+5>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+5>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function RY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function SY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0<f>>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=cZ(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function TY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b>>0]|0){b=0;break}if((a[b+1>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function UY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function VY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c>>0]|0;e=a[c+1>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function WY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;h=a[l>>0]|0;j=h<<24>>24==0;i=e+3|0;k=a[i>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+4>>0]|0;b=a[e+5>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function XY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if(!(a[b>>0]|0))if((a[c+5>>0]|0)==120){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c>>0]|0)){d=a[c+1>>0]|0;if(d<<24>>24==59){e=18;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8)b=d+-48|b<<4;else if((e|0)==9)b=(b<<4)+-55+d|0;else if((e|0)==10)b=(b<<4)+-87+d|0;if((b|0)<1114112)c=c+2|0;else{b=-1;e=19;break}}}else{c=b;b=0;e=13}else{d=b;b=0;c=-1;e=16}while(0);while(1)if((e|0)==13){if(a[c>>0]|0){d=c;c=-1;e=16;continue}if((a[c+1>>0]|0)==59){e=18;continue}d=c;c=a[c+1>>0]|0;e=16;continue}else if((e|0)==16){b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;e=19;continue}c=d+2|0;e=13;continue}else if((e|0)==18){b=jX(b)|0;e=19;continue}else if((e|0)==19)return b|0;return 0}function YY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+2>>0]|0)==0?(a[c+3>>0]|0)==116:0){if(!(a[c>>0]|0))b=a[c+1>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c>>0]|0)==0?(a[c+1>>0]|0)==97:0)?(a[c+2>>0]|0)==0:0)?(a[c+3>>0]|0)==109:0)?(a[c+4>>0]|0)==0:0)?(a[c+5>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c>>0]|0))switch(a[c+1>>0]|0){case 113:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=117){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=112){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function ZY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e>>0]|0;h=a[e+1>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[i>>0]|0;h=a[e+3>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function _Y(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f+-2|0;j=b+72|0;a:while(1){h=e+2|0;if((k-h|0)<=1){f=1;break}f=a[h>>0]|0;i=f<<24>>24==0;b=a[e+3>>0]|0;if(i)f=d[j+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{e=h;continue a}case 21:if(i&b<<24>>24==9){l=12;break a}else{e=h;continue a}case 22:case 26:{if(!i){l=12;break a}if(b<<24>>24>=0){e=h;continue a}break}default:if(!i){l=12;break a}}switch(b<<24>>24|0){case 64:case 36:{e=h;break}default:{l=12;break a}}}if((l|0)==12){c[g>>2]=h;f=0}return f|0}function $Y(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j+1>>0]|0;b=a[j>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[j+3>>0]|0;f=(o<<4&48|i>>>6|a[b>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function aZ(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0<e>>>0;k=c[h>>2]|0;if(!(j&k>>>0<i>>>0))break;j=((d[g>>0]|0)<<8|(d[g+1>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function bZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=dZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[i>>0]|0;f=a[j+3>>0]|0;if(!(b<<24>>24))h=d[k+(f&255)>>0]|0;else h=sY(b,f)|0;switch(h|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{f=23;break b}case 6:{f=24;break b}case 7:{f=26;break b}case 18:{f=28;break b}case 29:break;default:{f=29;break b}}e=f&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else j=i}if((f|0)==22){c[g>>2]=i;b=0;break}else if((f|0)==23){c[g>>2]=i;b=0;break}else if((f|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==28){c[g>>2]=j+4;b=9;break}else if((f|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function cZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function dZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e>>0]|0;h=a[e+1>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=eZ(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[i>>0]|0;f=a[b+3>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function eZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function fZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[i>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+3>>0]|0)>>0]|0;else h=sY(h,a[e+3>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+4|0,f,g)|0;break a}case 20:{h=hZ(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=iZ(b,e+2|0,f,g)|0;break a}case 17:{h=jZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h>>0]|0;k=a[h+1>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}e=h+2|0;l=o-e|0;if((l|0)<=1){h=-1;break a}i=a[e>>0]|0;j=a[h+3>>0]|0;if(!(i<<24>>24))k=d[m+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{l=j&255;if(!(1<<(l&31)&c[56836+((l>>>5|d[140706+(i&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=e;h=0;break a}case 49:{c[g>>2]=e;h=0;break a}case 50:{if((l|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 52:{if((l|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 54:{c[g>>2]=e;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[i>>0]|0;e=a[h+3>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=kZ(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[i>>0]|0)==0?(a[h+3>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function gZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e>>0]|0)==0?(a[e+1>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h>>0]|0;b=a[h+1>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[f>>0]|0){h=f;continue b}if((a[h+3>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[h+5>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function hZ(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b>>0]|0){d=0;break}if((a[b+1>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function iZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;i=o-e|0;a:do if((i|0)>1){j=a[e>>0]|0;if(!(j<<24>>24)){h=a[e+1>>0]|0;f=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;f=sY(j,h)|0}switch(f|0){case 29:{m=h&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(j&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[f>>0]|0;j=a[k+3>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j>>0]|0;h=a[j+1>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[f>>0]|0){j=f;continue c}if((a[j+3>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[k+5>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function jZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[j>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[j+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function kZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e>>0]|0;j=a[e+1>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[h>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}h=a[i>>0]|0;e=a[e+3>>0]|0;if(!(h<<24>>24))e=d[o+(e&255)>>0]|0;else e=sY(h,e)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e>>0]|0;i=a[e+1>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=bZ(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[i>>0]|0;j=a[e+3>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[i>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[h>>0]|0)==0?(a[i+3>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function lZ(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b>>0]|0)==0:0){switch(a[b+1>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+2>>0]|0)){switch(a[b+3>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+4>>0]|0)){switch(a[b+5>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function mZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f>>0]|0;i=a[f+1>>0]|0;if(!(e<<24>>24))i=d[k+(i&255)>>0]|0;else i=sY(e,i)|0;switch(i|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{e=f+2|0;if((i|0)==(b|0)){l=12;break a}else{f=e;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-e|0)>1){c[h>>2]=e;g=a[e>>0]|0;f=a[f+3>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function nZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+4>>0]|0;h=a[e+5>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function oZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}j=a[k>>0]|0;h=a[h+3>>0]|0;if(!(j<<24>>24))i=d[b+(h&255)>>0]|0;else i=sY(j,h)|0;switch(i|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(j&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function pZ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;while(1){b=c[d>>2]|0;h=b>>>0<e>>>0;i=c[f>>2]|0;if(!(h&i>>>0<g>>>0))break;c[d>>2]=b+1;h=a[b>>0]|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i>>0]=h}return ((i|0)!=(g|0)|h^1?0:2)|0}function qZ(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:while(1){f=a[b>>0]|0;g=a[c>>0]|0;f=(f+-97&255)<26?(f&255)+224&255:f;switch((f<<24>>24==((g+-97&255)<26?(g&255)+224&255:g)<<24>>24?(f<<24>>24==0?2:0):1)&3){case 0:{c=c+1|0;b=b+1|0;break}case 1:{e=3;break a}case 2:{d=1;break a}default:{e=5;break a}}}if((e|0)==3)d=0;return d|0}function rZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(36,a,b,c,d,e,f,g,h,i,j)|0}function sZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[58844+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function tZ(a,b,d,e,f,g,h,i,j,k,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;t=v+8|0;q=v+12|0;o=v+4|0;p=v;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;u=d+64|0;s=c[u>>2]|0;r=e+(s*5|0)|0;c[t>>2]=r;s=f+(0-(s<<1))|0;r=(uZ(d,r,s,o,p,q,t)|0)!=0;n=c[o>>2]|0;e=n;a:do if(r&(n|0)!=0){r=d+24|0;f=c[p>>2]|0;do if(!(ob[c[r>>2]&127](d,n,f,141258)|0)){if(!b){c[g>>2]=e;e=0;break a}}else{if(h|0)c[h>>2]=c[q>>2];if(!i)e=c[t>>2]|0;else{e=c[t>>2]|0;c[i>>2]=e}if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break a}f=c[o>>2]|0;if(f|0){e=f;n=f;f=c[p>>2]|0;break}if(!b){e=1;break a}c[g>>2]=c[t>>2];e=0;break a}while(0);if(ob[c[r>>2]&127](d,n,f,141266)|0){f=c[q>>2]|0;e=f;if((((vZ(d,f,s)|0)&-33)+-65|0)>>>0>=26){c[g>>2]=e;e=0;break}if(j|0)c[j>>2]=e;e=c[t>>2]|0;if(k|0)c[k>>2]=nb[a&63](d,f,e+(0-(c[u>>2]|0))|0)|0;if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break}e=c[o>>2]|0;if(!e){e=1;break}n=e;f=c[p>>2]|0}if((b|0)!=0|(ob[c[r>>2]&127](d,n,f,141275)|0)==0){c[g>>2]=e;e=0;break}f=c[q>>2]|0;e=c[t>>2]|0;n=f;if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104631)|0)){if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104623)|0)){c[g>>2]=n;e=0;break}if(m)c[m>>2]=0}else if(m)c[m>>2]=1;while(1){if(!(wZ(vZ(d,e,s)|0)|0))break;e=e+(c[u>>2]|0)|0}c[t>>2]=e;if((e|0)==(s|0))e=1;else{c[g>>2]=e;e=0}}else{c[g>>2]=c[t>>2];e=0}while(0);l=v;return e|0}function uZ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a:do if((b|0)!=(d|0)){if(!(wZ(vZ(a,b,d)|0)|0)){c[h>>2]=b;b=0;break}j=a+64|0;do b=b+(c[j>>2]|0)|0;while((wZ(vZ(a,b,d)|0)|0)!=0);if((b|0)==(d|0)){c[e>>2]=0;b=1;break}c[e>>2]=b;b:while(1){i=vZ(a,b,d)|0;switch(i|0){case -1:{i=11;break b}case 61:{i=12;break b}default:{}}if(wZ(i)|0){i=14;break}b=b+(c[j>>2]|0)|0}if((i|0)==11){c[h>>2]=b;b=0;break}else if((i|0)==12)c[f>>2]=b;else if((i|0)==14){c[f>>2]=b;do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);if((i|0)!=61){c[h>>2]=b;b=0;break}}if((b|0)==(c[e>>2]|0)){c[h>>2]=b;b=0;break}do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);switch(i|0){case 34:case 39:break;default:{c[h>>2]=b;b=0;break a}}f=b+(c[j>>2]|0)|0;c[g>>2]=f;b=i<<24>>24;c:while(1){i=vZ(a,f,d)|0;if((i|0)==(b|0)){i=30;break}if((i+-48|0)>>>0>9&((i&-33)+-65|0)>>>0>25)switch(i|0){case 45:case 46:case 95:break;default:{i=28;break c}}f=f+(c[j>>2]|0)|0}if((i|0)==28){c[h>>2]=f;b=0;break}else if((i|0)==30){c[h>>2]=f+(c[j>>2]|0);b=1;break}}else{c[e>>2]=0;b=1}while(0);return b|0}function vZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+1|0)|0;l=h;return ((c[g>>2]|0)==(f|0)?-1:a[f>>0]|0)|0}function wZ(a){a=a|0;switch(a|0){case 9:case 10:case 13:case 32:{a=1;break}default:a=0}return a|0}function xZ(){return 59988}function yZ(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=69;c[b+4>>2]=70;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function zZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,0,b,c,d)|0}function AZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,1,b,c,d)|0}function BZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(37,a,b,c,d,e,f,g,h,i,j)|0}function CZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[60352+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function DZ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=iX(b,c,d,e)|0;if(b|0)a[b+72+58>>0]=23;return b|0}function EZ(a){a=a|0;c[a>>2]=15;c[a+16>>2]=1;c[a+12>>2]=0;c[a+20>>2]=0;return}function FZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{c[a>>2]=16;a=0;break}case 12:{c[a>>2]=16;a=1;break}case 11:{c[a>>2]=16;a=55;break}case 13:{c[a>>2]=16;a=56;break}case 14:{a=0;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=9;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function GZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 14:case 15:{a=0;break}case 11:{a=55;break}case 13:{a=56;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=7;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=7}if((g|0)==7)a=JZ(a,b)|0;return a|0}function HZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 41:case 18:{c[a>>2]=19;a=4;break}default:a=JZ(a,b)|0}return a|0}function IZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function JZ(a,b){a=a|0;b=b|0;if((b|0)==28&(c[a+16>>2]|0)==0)a=59;else{c[a>>2]=18;a=-1}return a|0}function KZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=22;a=3;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=8;else{c[a>>2]=23;a=3}break}default:h=8}while(0);if((h|0)==8)a=JZ(a,b)|0;return a|0}function LZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case -4:case 15:{a=0;break}case 16:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141308)|0){c[a>>2]=24;a=11;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141315)|0){c[a>>2]=25;a=33;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141323)|0){c[a>>2]=26;a=39;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141331)|0))i=14;else{c[a>>2]=27;a=17}break}case 11:{a=55;break}case 13:{a=56;break}case 28:{a=60;break}case 26:{c[a>>2]=28;a=3;break}default:i=14}while(0);if((i|0)==14)a=JZ(a,b)|0;return a|0}function MZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+-11|0;switch(f>>>1|f<<31|0){case 2:{a=0;break}case 0:{a=55;break}case 1:{a=56;break}case 9:{c[a>>2]=18;a=2;break}default:a=JZ(a,b)|0}return a|0}function NZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=29;a=5;break}default:a=JZ(a,b)|0}return a|0}function OZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=22;a=6;break}default:a=JZ(a,b)|0}return a|0}function PZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function QZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 22:{c[a>>2]=30;a=11;break}case 18:{c[a>>2]=31;a=9;break}default:a=JZ(a,b)|0}return a|0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:{c[a>>2]=32;a=34;break}default:a=JZ(a,b)|0}return a|0}function SZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=33;a=40;break}default:a=JZ(a,b)|0}return a|0}function TZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 18:{c[a>>2]=34;a=18;break}default:a=JZ(a,b)|0}return a|0}function UZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function VZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=17;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=35;a=17;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=6;else{c[a>>2]=36;a=17}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function WZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}default:a=JZ(a,b)|0}return a|0}function XZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=38;a=21;break}default:a=JZ(a,b)|0}return a|0}function YZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=20;break}default:a=JZ(a,b)|0}return a|0}function ZZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=c[a+8>>2]|0;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=c[a+8>>2]|0;break}default:a=JZ(a,b)|0}return a|0}function _Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 33:{c[a>>2]=40;d=0;break}case 34:{d=a+12|0;e=c[d>>2]|0;if(!e)g=7;else{c[d>>2]=e+-1;d=0}break}case 15:{d=0;break}case 26:{g=7;break}case -4:{if(!(c[a+12>>2]|0))d=0;else g=7;break}default:d=LZ(a,b,d,e,f)|0}if((g|0)==7)d=JZ(a,b)|0;return d|0}function $Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=0;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141340)|0){c[a>>2]=41;a=0;break a}if(!(ob[c[g>>2]&127](f,d,e,141348)|0))h=6;else{c[a>>2]=42;a=0}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function a_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=a+12|0;c[a>>2]=(c[a>>2]|0)+1;a=0;break}default:a=JZ(a,b)|0}return a|0}function b_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=58;break}default:a=JZ(a,b)|0}return a|0}function c_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=39;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141355)|0){c[a>>2]=37;c[a+8>>2]=39;a=42;break a}if(!(ob[c[g>>2]&127](f,d,e,141361)|0))h=7;else{c[a>>2]=37;c[a+8>>2]=39;a=41}break}case 23:{c[a>>2]=43;c[a+4>>2]=1;a=44;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function d_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=39;break}case 20:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]|0)|0,e,141365)|0))g=9;else{c[a>>2]=44;a=43}break}case 23:{c[a+4>>2]=2;c[a>>2]=45;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function e_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{c[a>>2]=37;c[a+8>>2]=39;a=45;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function f_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 23:{a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:a=JZ(a,b)|0}return a|0}function g_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=45}else a=45;break}case 36:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=46}else a=46;break}case 35:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=47}else a=47;break}case 37:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=48}else a=48;break}case 38:{c[a>>2]=45;a=50;break}case 21:{c[a>>2]=45;a=49;break}default:a=JZ(a,b)|0}return a|0}function h_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=48;a=51;break}default:a=JZ(a,b)|0}return a|0}function i_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function j_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=33;break}case 41:case 18:{c[a>>2]=49;a=22;break}default:a=JZ(a,b)|0}return a|0}function k_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do switch(b|0){case 15:{g=33;break}case 18:{h=f+24|0;g=0;while(1){i=c[h>>2]|0;if((g|0)>=8)break;if(ob[i&127](f,d,e,c[62200+(g<<2)>>2]|0)|0){j=6;break}g=g+1|0}if((j|0)==6){c[a>>2]=50;g=g+23|0;break a}if(!(ob[i&127](f,d,e,141331)|0))j=10;else{c[a>>2]=51;g=33}break}case 23:{c[a>>2]=52;g=33;break}default:j=10}while(0);if((j|0)==10)g=JZ(a,b)|0;return g|0}function l_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case 15:{a=33;break}case 20:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141372)|0){c[a>>2]=32;a=35;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141380)|0){c[a>>2]=32;a=36;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141389)|0))i=9;else{c[a>>2]=53;a=33}break}case 27:{c[a>>2]=32;a=37;break}default:i=9}while(0);if((i|0)==9)a=JZ(a,b)|0;return a|0}function m_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 23:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function n_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:case 19:{c[a>>2]=55;a=31;break}default:a=JZ(a,b)|0}return a|0}function o_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=52;a=33;break}default:a=JZ(a,b)|0}return a|0}function p_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 18:{c[a>>2]=56;a=32;break}default:a=JZ(a,b)|0}return a|0}function q_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function r_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 27:{c[a>>2]=32;a=38;break}default:a=JZ(a,b)|0}return a|0}function s_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=57;a=10;break}default:a=JZ(a,b)|0}return a|0}function t_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=58;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=59;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=60;a=13;break}default:a=JZ(a,b)|0}return a|0}function v_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=58;a=14;break}default:a=JZ(a,b)|0}return a|0}function w_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}case 18:{if(!(ob[c[f+24>>2]&127](f,d,e,141443)|0))g=5;else{c[a>>2]=61;a=11}break}default:g=5}if((g|0)==5)a=JZ(a,b)|0;return a|0}function x_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=37;c[a+8>>2]=11;a=16;break}default:a=JZ(a,b)|0}return a|0}function y_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=62;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=63;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function z_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=64;a=13;break}default:a=JZ(a,b)|0}return a|0}function A_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=62;a=14;break}default:a=JZ(a,b)|0}return a|0}function B_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}default:a=JZ(a,b)|0}return a|0}function C_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[46749]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=187036+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[46749]=o&~(1<<b);else{c[g+12>>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[46751]|0;if(m>>>0>n>>>0){if(d|0){b=2<<a;b=d<<a&(b|0-b);b=(b&0-b)+-1|0;i=b>>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=187036+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<<e);c[46749]=a}else{c[d+12>>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=f;w=i;l=x;return w|0}j=c[46750]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[187300+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0<d>>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=187300+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[46750]=j&~(1<<b);break}}else{c[f+16+(((c[f+16>>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<<b;if(!(o&b)){c[46749]=o|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[46750]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<<o;n=(v+520192|0)>>>16&4;v=v<<n;j=(v+245760|0)>>>16&2;j=14-(n|o|j)+(v<<j>>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[187300+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0<e>>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<<j;a=k&(a|0-a);if(!a){n=m;break}o=(a&0-a)+-1|0;i=o>>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[187300+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0<e>>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[46751]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=187300+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<<a);c[46750]=e;break}}else{c[f+16+(((c[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=187300+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(e&a)){c[46750]=e|a;c[d>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[46751]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[46754]|0;if(b>>>0>15){w=a+n|0;c[46754]=w;c[46751]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[46751]=0;c[46754]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[46752]|0;if(i>>>0>n>>>0){u=i-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[46867]|0)){c[46869]=4096;c[46868]=4096;c[46870]=-1;c[46871]=-1;c[46872]=0;c[46860]=0;c[46867]=p&-16^1431655768;a=4096}else a=c[46869]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[46859]|0;if(a|0?(o=c[46857]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[46860]&4)){d=c[46755]|0;c:do if(d){e=187444;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=I3(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=I3(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[46868]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[46857]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[46859]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=I3(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[46869]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((I3(a|0)|0)==(-1|0)){I3(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[46860]=c[46860]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=I3(m|0)|0,s=I3(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0<s>>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[46857]|0)+h|0;c[46857]=b;if(b>>>0>(c[46858]|0)>>>0)c[46858]=b;j=c[46755]|0;do if(j){b=187444;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[46752]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[46756]=c[46871];break}if(g>>>0<(c[46753]|0)>>>0)c[46753]=g;a=g+h|0;b=187444;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=187444;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[46754]|0)==(b|0)){w=(c[46751]|0)+i|0;c[46751]=w;c[46754]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=187300+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[46750]=c[46750]&~(1<<d);break d}while(0);c[a+24>>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=187300+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[46750]|0;d=1<<b;if(!(a&d)){c[46750]=a|d;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[46752]|0)+i|0;c[46752]=w;c[46755]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=187444;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0<f>>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[46756]=c[46871];d=a+4|0;c[d>>2]=27;c[b>>2]=c[46861];c[b+4>>2]=c[46862];c[b+8>>2]=c[46863];c[b+12>>2]=c[46864];c[46861]=g;c[46862]=h;c[46864]=0;c[46863]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0<w>>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;d=(w+245760|0)>>>16&2;d=14-(u|v|d)+(w<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=187300+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[46750]|0;a=1<<d;if(!(b&a)){c[46750]=b|a;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[46753]|0;if((w|0)==0|g>>>0<w>>>0)c[46753]=g;c[46861]=g;c[46862]=h;c[46864]=0;c[46758]=c[46867];c[46757]=-1;c[46762]=187036;c[46761]=187036;c[46764]=187044;c[46763]=187044;c[46766]=187052;c[46765]=187052;c[46768]=187060;c[46767]=187060;c[46770]=187068;c[46769]=187068;c[46772]=187076;c[46771]=187076;c[46774]=187084;c[46773]=187084;c[46776]=187092;c[46775]=187092;c[46778]=187100;c[46777]=187100;c[46780]=187108;c[46779]=187108;c[46782]=187116;c[46781]=187116;c[46784]=187124;c[46783]=187124;c[46786]=187132;c[46785]=187132;c[46788]=187140;c[46787]=187140;c[46790]=187148;c[46789]=187148;c[46792]=187156;c[46791]=187156;c[46794]=187164;c[46793]=187164;c[46796]=187172;c[46795]=187172;c[46798]=187180;c[46797]=187180;c[46800]=187188;c[46799]=187188;c[46802]=187196;c[46801]=187196;c[46804]=187204;c[46803]=187204;c[46806]=187212;c[46805]=187212;c[46808]=187220;c[46807]=187220;c[46810]=187228;c[46809]=187228;c[46812]=187236;c[46811]=187236;c[46814]=187244;c[46813]=187244;c[46816]=187252;c[46815]=187252;c[46818]=187260;c[46817]=187260;c[46820]=187268;c[46819]=187268;c[46822]=187276;c[46821]=187276;c[46824]=187284;c[46823]=187284;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[46756]=c[46871]}while(0);b=c[46752]|0;if(b>>>0>n>>>0){u=b-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(O_()|0)>>2]=12;w=0;l=x;return w|0}function D_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[46753]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0<f>>>0)return;if((c[46754]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[46751]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<<d);i=h;b=g;break}else{c[a+12>>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=187300+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[46750]=c[46750]&~(1<<b);i=h;b=g;break}}else{c[f+16+(((c[f+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[46755]|0)==(j|0)){j=(c[46752]|0)+b|0;c[46752]=j;c[46755]=i;c[i+4>>2]=j|1;if((i|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(j|0)){j=(c[46751]|0)+b|0;c[46751]=j;c[46754]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[46749]=c[46749]&~(1<<d);break}else{c[b+12>>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=187300+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[46750]=c[46750]&~(1<<a);break}}else{c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=187036+(a<<1<<2)|0;b=c[46749]|0;a=1<<a;if(!(b&a)){c[46749]=b|a;a=d;b=d+8|0}else{b=d+8|0;a=c[b>>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=187300+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[46750]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[46750]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[46757]|0)+-1|0;c[46757]=j;if(!j)a=187452;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[46757]=-1;return}function E_(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=C_(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;H3(a|0,0,d|0)|0;return a|0}function F_(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=C_(b)|0;return b|0}if(b>>>0>4294967231){c[(O_()|0)>>2]=12;b=0;return b|0}d=G_(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=C_(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;F3(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;D_(a);b=d;return b|0}function G_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[46869]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;H_(k,d);return a|0}if((c[46755]|0)==(i|0)){k=(c[46752]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[46755]=e;c[46752]=d;return a|0}if((c[46754]|0)==(i|0)){e=(c[46751]|0)+d|0;if(e>>>0<b>>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[46751]=d;c[46754]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0<b>>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[46749]=c[46749]&~(1<<f);break}else{c[e+12>>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[46750]=c[46750]&~(1<<d);break}}else{c[h+16+(((c[h+16>>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;H_(i,k);return a|0}return 0}function H_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[46754]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[46751]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[46750]=c[46750]&~(1<<d);break}}else{c[g+16+(((c[g+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[46755]|0)==(i|0)){i=(c[46752]|0)+b|0;c[46752]=i;c[46755]=h;c[h+4>>2]=i|1;if((h|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(i|0)){i=(c[46751]|0)+b|0;c[46751]=i;c[46754]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<<d);break}else{c[a+12>>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=187300+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[46750]=c[46750]&~(1<<b);break}}else{c[g+16+(((c[g+16>>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<<b;if(!(a&b)){c[46749]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<<g;e=(i+520192|0)>>>16&4;i=i<<e;b=(i+245760|0)>>>16&2;b=14-(e|g|b)+(i<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=187300+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[46750]|0;d=1<<b;if(!(a&d)){c[46750]=a|d;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function I_(a,b){a=a|0;b=b|0;if(a>>>0<9){b=C_(b)|0;return b|0}else{b=J_(a,b)|0;return b|0}return 0}function J_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0<a>>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(O_()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=C_(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;H_(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;H_(f,i)}i=b+8|0;return i|0}function K_(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(c[a+60>>2]|0)|0;a=N_(Ja(6,d|0)|0)|0;l=b;return a|0}function L_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=N_(ya(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function M_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((N_(xa(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function N_(a){a=a|0;if(a>>>0>4294963200){c[(O_()|0)>>2]=0-a;a=-1}return a|0}function O_(){return 187492}function P_(a){a=a|0;return a|0}function Q_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=18;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ia(54,f|0)|0):0)a[b+75>>0]=-1;f=R_(b,d,e)|0;l=g;return f|0}function R_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=N_(za(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=N_(za(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function S_(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ka(91,e|0)|0)|0;l=d;return b|0}function T_(){return}function U_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(O_()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=N_(Aa(192,h|0)|0)|0}else{c[(O_()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function V_(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(W_(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function W_(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function X_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;g=h+16|0;f=h;e=h+32|0;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=Ha(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}i=N_(e)|0;l=h;return i|0}function Y_(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[141449+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=141537;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=141537;else{f=141537;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return Z_(f,c[e+20>>2]|0)|0}function Z_(a,b){a=a|0;b=b|0;return __(a,b)|0}function __(a,b){a=a|0;b=b|0;if(!b)b=0;else b=$_(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function $_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=a$(c[b+8>>2]|0,o)|0;f=a$(c[b+12>>2]|0,o)|0;g=a$(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=a$(c[b+(g<<2)>>2]|0,o)|0;g=a$(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=b$(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=a$(c[b+(f<<2)>>2]|0,o)|0;f=a$(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function a$(a,b){a=a|0;b=b|0;var c=0;c=C3(a|0)|0;return ((b|0)==0?a:c)|0}function b$(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function c$(a){a=a|0;return Y_(a,c[(d$()|0)+188>>2]|0)|0}function d$(){return e$()|0}function e$(){return 62872}function f$(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function g$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function h$(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=z3(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+h$(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function i$(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function j$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function k$(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=z3(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=l$(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function l$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[63116+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[63132+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+m$(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<<u)|0;c[s>>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+m$(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[63132+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+m$(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+m$(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10904+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function m$(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=A3(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function n$(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=s3(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function o$(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function p$(a,b){a=+a;b=+b;return +(+o$(a,b))}function q$(a,b){a=+a;b=b|0;return +(+m$(a,b))}function r$(a,b){a=+a;b=+b;return +(+s$(a,b))}function s$(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=z3(i|0,l|0,52)|0;e=e&2047;m=z3(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=A3(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=t$(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=A3(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=A3(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=A3(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=A3(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=A3(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=A3(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=A3(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=A3(f|0,d|0,1)|0;g=z;e=e+-1|0;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=A3(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=s3(f|0,d|0,0,-1048576)|0;d=z;e=A3(e|0,0,52)|0;d=d|z;e=o|e}else{e=z3(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function t$(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function u$(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0<f>>>0|(g|0)==(f|0)&t>>>0<e>>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=z3(s|0,r|0,52)|0;i=z3(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}v$(m,n,b);v$(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function v$(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function w$(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+f$(a,0.0,0);h[d>>3]=+i$(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=k$(a,g)|0;m=g+8|0;e=+f$(+h[g>>3],+h[m>>3],1);a=+i$(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function x$(a,b){a=+a;b=b|0;return +(+h$(a,b))}function y$(a){a=a|0;if(a>>>0<131072)a=(d[143341+((d[143341+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function z$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function A$(b,c){b=b|0;c=c|0;b=V_(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function B$(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function C$(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-1,0)|0;return c|0}function D$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function E$(a){a=a|0;return (a+-48|0)>>>0<10|0}function F$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;G$(h,0);d=H$(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function G$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function H$(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(O_()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while((B$(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=I$(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((d[146510+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){G$(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[146510+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;G$(b,0);c[(O_()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=r3(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=s3(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=I$(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[146766+((e*23|0)>>>5&7)>>0]|0;f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<<n;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=z3(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0<k>>>0|(m|0)==(k|0)&l>>>0<i>>>0)){f=k;n=72;break}else j=k;while(1){i=A3(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=w3(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=r3(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=s3(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[146510+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while(e>>>0>(d[146510+i>>0]|0)>>>0);c[(O_()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0<h>>>0|(e|0)==(h|0)&i>>>0<g>>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(O_()|0)>>2]=34;g=s3(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(O_()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=t3(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function I$(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=J$(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function J$(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((K$(a)|0)==0?(nb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function K$(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)nb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function L$(a){a=a|0;return (a+-48|0)>>>0<10|0}function M$(a){a=a|0;if(!(N$(a)|0))a=(E$(a)|0)!=0&1;else a=1;return a|0}function N$(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function O$(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=P$(f)|0,(f|0)!=(P$(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=P$(b&255)|0;return g-(P$(d[c>>0]|0)|0)|0}function P$(a){a=a|0;var b=0;b=(Q$(a)|0)==0;return (b?a:a|32)|0}function Q$(a){a=a|0;return (a+-65|0)>>>0<26|0}function R$(a){a=a|0;return S$(a,0)|0}function S$(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(T$(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[66242+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[66242+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[66242+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[65754+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[65754+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[65754+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function T$(a){a=a|0;if(a>>>0<131072)a=(d[146775+((d[146775+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function U$(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function V$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=P$(f)|0,(g|0)!=(P$(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=P$(b&255)|0;b=b-(P$(d[c>>0]|0)|0)|0}return b|0}function W$(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function X$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?187560:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[($$()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[62280+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(O_()|0)>>2]=84;f=-1}l=k;return f|0}function Y$(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Z$(a,b,0)|0;return a|0}function Z$(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(_$()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(O_()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(O_()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function _$(){return e$()|0}function $$(){return e$()|0}function a0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Ta(149751)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149758+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149830)|0;if(d|0?a[d>>0]|0:0)break;d=149835}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=149835;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((b$(k,149835)|0)!=0?(b$(k,149843)|0)!=0:0){d=c[46891]|0;if(d|0)do{if(!(b$(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);ta(187568);d=c[46891]|0;c:do if(d|0){while(1){if(!(b$(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}La(187568);break b}while(0);d:do if(((c[46876]|0)==0?(g=Ta(149849)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=V_(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0<i>>>0){F3(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;F3(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=ua(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=C_(28)|0;if(!d){S_(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d;break}}else m=41;while(0);if((m|0)==41){d=C_(28)|0;if(d){c[d>>2]=c[15558];c[d+4>>2]=c[15559];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d}}La(187568);d=(b|0)==0&(d|0)==0?62232:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=62232;break}d=0}while(0);l=p;return d|0}function b0(a,b){a=a|0;b=b|0;c0(a,b)|0;return a|0}function c0(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function d0(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function e0(a){a=a|0;if(!a)a=0;else a=(f0(63396,a)|0)!=0&1;return a|0}function f0(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((U$(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function g0(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=h0(a)|0;break}case 2:{a=T$(a)|0;break}case 3:{a=i0(a)|0;break}case 4:{a=j0(a)|0;break}case 5:{a=L$(a)|0;break}case 6:{a=k0(a)|0;break}case 7:{a=l0(a)|0;break}case 8:{a=W$(a)|0;break}case 9:{a=y$(a)|0;break}case 10:{a=e0(a)|0;break}case 11:{a=m0(a)|0;break}case 12:{a=n0(a)|0;break}default:a=0}while(0);return a|0}function h0(a){a=a|0;if(!(L$(a)|0))a=(T$(a)|0)!=0&1;else a=1;return a|0}function i0(a){a=a|0;return d0(a)|0}function j0(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function k0(a){a=a|0;if(!(e0(a)|0))a=(W$(a)|0)!=0&1;else a=0;return a|0}function l0(a){a=a|0;return (R$(a)|0)!=(a|0)|0}function m0(a){a=a|0;return (o0(a)|0)!=(a|0)|0}function n0(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function o0(a){a=a|0;return S$(a,1)|0}function p0(a){a=a|0;return (a+-97|0)>>>0<26|0}function q0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=63484;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(O_()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=r0(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function r0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((s0(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=t0(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=s0(b,d,n,q,p)|0;if(h){nb[c[b+36>>2]&63](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=s0(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)u0(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function s0(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(O_()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)v0(d,r,j);if(j|0)continue;u=(E$(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<<u&75913|0)==0)m=0;else{m=0;do{m=1<<(k<<24>>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<<u&75913|0)==0))}if(k<<24>>24==42){if((E$(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=w0(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=w0(D)|0;j=c[D>>2]|0;break}if(E$(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(149862+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}x0(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=z0(j,k,x)|0;m=y-o|0;q=0;n=150326;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=t3(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=150326;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?150326:150328):150327;v=67;break d}}case 117:{k=E;m=0;n=150326;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=150326;o=x;k=1;break}case 109:{k=c$(c[(O_()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:150336;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){B0(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=C0(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=150326;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=y0(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?150326:150326+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=A0(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=D$(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=150326;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=Y$(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}B0(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=Y$(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}v0(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;B0(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;B0(d,32,m,s,j);v0(d,n,q);B0(d,48,m,s,j^65536);B0(d,48,o,p,0);v0(d,r,p);B0(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;x0(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function t0(a){a=a|0;return 0}function u0(a){a=a|0;return}function v0(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))E0(b,d,a)|0;return}function w0(b){b=b|0;var d=0,e=0;if(!(E$(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((E$(a[e>>0]|0)|0)!=0)}return d|0}function x0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function y0(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[150374+(b&15)>>0]|0|f;b=z3(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function z0(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=z3(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function A0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=x3(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=w3(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function B0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;H3(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{v0(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}v0(a,f,e)}l=g;return}function C0(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;D0(e)|0;if((z|0)<0){e=-e;C=1;B=150343}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?150344:150349):150346}D0(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;B0(b,32,f,j,h&-65537);v0(b,B,C);v0(b,e!=e|0.0!=0.0?(G?150511:150370):G?150362:150366,3);B0(b,32,f,j,h^8192)}else{r=+x$(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=A0(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[150374+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;B0(b,32,f,F,h);v0(b,s,q);B0(b,48,f,F,h^65536);v0(b,G,k);B0(b,48,j-k|0,0,0);v0(b,o,E);B0(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=A3(c[j>>2]|0,0,o|0)|0;x=s3(x|0,z|0,m|0,0)|0;y=z;v=x3(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=w3(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=A0(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;B0(b,32,f,j,h);v0(b,B,C);B0(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=A0(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)v0(b,150390,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=A0(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}B0(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=A0(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;v0(b,m,1);if(s&(k|0)<1){m=n;break}v0(b,150390,1);m=n}else{if(m>>>0<=G>>>0)break;H3(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;v0(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}B0(b,48,k+18|0,18,0);v0(b,v,E-v|0)}B0(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function D0(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function E0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(F0(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=nb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=nb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);F3(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function F0(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function G0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;F3(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function H0(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=150392;f=97;while(1){if(e<<24>>24==f<<24>>24?(b$(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function I0(a){a=a|0;var b=0;b=(p0(a)|0)==0;return (b?a:a&95)|0}function J0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{ta(187576);if((b|0)!=6){d=K0(b,d)|0;La(187576);break}if(!d){d=194052;b=0}else{b=g;e=150465;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=V_(d,59)|0;e=b-d|0;if((e|0)<16){F3(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}K0(f,g)|0;f=f+1|0}while((f|0)!=6);d=194052;b=0}while(1){f=c[187536+(b<<2)>>2]|0;f=f|0?f+8|0:150481;e=W_(f)|0;F3(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;La(187576);d=194052}while(0);l=h;return d|0}function K0(a,b){a=a|0;b=b|0;if(!b)a=c[187536+(a<<2)>>2]|0;else{b=a0(a,b)|0;c[187536+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:150481)|0}function L0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function M0(a){a=a|0;return N0(a)|0}function N0(a){a=a|0;return B3(a|0)|0}function O0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=t0(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)u0(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=D$(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0<g>>>0?i:g;F3(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=J$(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)u0(f)}return b|0}function P0(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=A$(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=Q0(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=R0(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=S0(b,c)|0;break}else{b=T0(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function Q0(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function R0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function S0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function T0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(L0(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0<s>>>0){i=D$(g,0,k)|0;if(i)if((i-h|0)>>>0<s>>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0<f>>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function U0(a,b,c){a=a|0;b=b|0;c=c|0;V0(a,b,c)|0;return a|0}function V0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);H3(b|0,0,e|0)|0;return b|0}function W0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function X0(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(a)|0;a=Ja(6,d|0)|0;a=N_((a|0)==-4?0:a)|0;l=b;return a|0}function Y0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Z0(a,b,f)|0;l=e;return d|0}function Z0(a,b,c){a=a|0;b=b|0;c=c|0;return q0(a,2147483647,b,c)|0}function _0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0<h>>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)$0(a,d,e,f,j);else b1(a,d,e,k,f,0,j);if((f|0)==1){c1(k,1);f=0;break}else{c1(k,b);f=1;break}}else{$0(a,d,e,f,j);a1(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0<g>>>0)}else{f=1;b=1}b1(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){c1(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;a1(k,1);b1(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);c1(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;b1(h,d,e,k,n,1,j);a=h;f=n;continue}b=d1(k)|0;a1(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function $0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((lb[d&127](a,g)|0)>-1?(lb[d&127](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((lb[d&127](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);f1(b,m,e);l=n;return}function a1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function b1(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(lb[d&127](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((lb[d&127](g,j)|0)>-1){i=10;break a}if((lb[d&127](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=d1(n)|0;a1(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((lb[d&127](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){f1(b,o,e);$0(a,b,d,f,h)}l=p;return}function c1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<<b;c[a>>2]=d<<b;return}function d1(a){a=a|0;var b=0;b=e1((c[a>>2]|0)+-1|0)|0;if(!b){b=e1(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function e1(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function f1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;F3(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;F3(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function g1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=r0(a,b,f)|0;l=e;return d|0}function h1(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;sa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function i1(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-2147483648,0)|0;return c|0}function j1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){H3(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=V_(b,e<<24>>24)|0;l=h;return e-b|0}function k1(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[46896]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[46896]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[46896]=d;if(!(a[d>>0]|0)){c[46896]=0;break}else{c[46896]=d+1;a[d>>0]=0;break}}while(0);return b|0}function l1(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function m1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function n1(a){a=a|0;var b=0,c=0;b=(W_(a)|0)+1|0;c=C_(b)|0;if(!c)a=0;else a=F3(c|0,a|0,b|0)|0;return a|0}function o1(a,b){a=a|0;b=b|0;return l1(a,b,(W_(a)|0)+1|0)|0}function p1(a,b){a=a|0;b=b|0;b0(a+(W_(a)|0)|0,b)|0;return a|0}function q1(b,c){b=b|0;c=c|0;c=b+(j1(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function r1(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function s1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=t0(a)|0;else f=0;t1(a);g=(c[a>>2]&1|0)!=0;if(!g){e=u1()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;v1()}b=w1(a)|0;b=kb[c[a+12>>2]&63](a)|0|b;d=c[a+92>>2]|0;if(d|0)D_(d);if(g){if(f|0)u0(a)}else D_(a);return b|0}function t1(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(y1()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function u1(){ta(187588);return 187596}function v1(){La(187588);return}function w1(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=x1(a)|0;break}d=(t0(a)|0)==0;b=x1(a)|0;if(!d)u0(a)}else{if(!(c[15685]|0))b=0;else b=w1(c[15685]|0)|0;a=c[(u1()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=t0(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=x1(a)|0|b;if(d|0)u0(a);a=c[a+56>>2]|0}while((a|0)!=0);v1()}while(0);return b|0}function x1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)nb[c[a+40>>2]&63](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function y1(){return e$()|0}function z1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(A$(150498,a[d>>0]|0)|0){e=C_(1156)|0;if(!e)e=0;else{H3(e|0,0,124)|0;if(!(A$(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(A$(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;Ea(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=Ea(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;Ea(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ia(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=15;c[e+36>>2]=18;c[e+40>>2]=16;c[e+12>>2]=17;if(!(c[46875]|0))c[e+76>>2]=-1;A1(e)|0}}else{c[(O_()|0)>>2]=22;e=0}l=k;return e|0}function A1(a){a=a|0;var b=0,d=0;b=u1()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;v1();return a|0}function B1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(C1()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[62280+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(O_()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function C1(){return e$()|0}function D1(a,b){a=a|0;b=b|0;var c=0;c=W_(a)|0;return ((E1(a,1,c,b)|0)!=(c|0))<<31>>31|0}function E1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(t0(e)|0)==0;a=E0(a,f,e)|0;if(!g)u0(e)}else a=E0(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function F1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(F0(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((nb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function G1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=N_(Fa(3,f|0)|0)|0;l=e;return d|0}function H1(){var a=0,b=0;b=l;l=l+16|0;a=Da(20,b|0)|0;l=b;return a|0}function I1(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=150483;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function J1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=Ca(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(Ea(221,e|0)|0)>=0):0){I1(e,a);c[f>>2]=e;c[f+4>>2]=b;b=N_(Ba(195,f|0)|0)|0}else b=N_(d)|0;l=g;return b|0}function K1(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ga(33,e|0)|0)|0;l=d;return b|0}function L1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(A$(150498,a[d>>0]|0)|0){f=M1(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=N_(Ha(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}b=z1(e,d)|0;if(!b){c[h>>2]=e;Ja(6,h|0)|0;b=0}}else b=0}else{c[(O_()|0)>>2]=22;b=0}l=i;return b|0}function M1(b){b=b|0;var c=0,d=0,e=0;d=(A$(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(A$(b,120)|0)==0;d=e?d:d|128;b=(A$(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function N1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=O1(a,b,f)|0;l=e;return d|0}function O1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=38;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=Q1(e,b,d)|0;l=g;return h|0}function P1(a,b,c){a=a|0;b=b|0;c=c|0;return Y1(a,b,c)|0}function Q1(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=t0(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(B$(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(E$(n&255)|0?(a[p+2>>0]|0)==36:0){w=R1(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(E$(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((E$(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{S1(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{G$(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0}while((B$(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}G$(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0<n>>>0)c[y>>2]=p+1;else{if((I$(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){H3(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;H3(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=C_(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(X$(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=F_(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(T1(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=C_(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=F_(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+U1(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=H$(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{S1(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;G$(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(B$(d[k>>0]|0)|0))break;else m=k}G$(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0}while((B$(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){D_(j);D_(i)}}else e=0;while(0);if(K|0)u0(b);l=L;return e|0}function R1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function S1(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function T1(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function U1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0}while((B$(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=I$(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[150502+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[150511+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=I$(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|32|0)==120){g=+V1(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+W1(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function V1(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=I$(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=I$(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=I$(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=I$(a)|0;l=s3(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=s3(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=I$(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else G$(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=s3(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=X1(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){G$(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=A3(q|0,p|0,2)|0;l=s3(l|0,z|0,-32,-1)|0;l=s3(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(O_()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0<y>>>0){c[(O_()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=s3(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=t3(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=s3(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0<b>>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+p$(+m$(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(O_()|0)>>2]=34;h=+q$(h,l)}while(0);return +h}function W1(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=I$(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48){k=0;b=0;while(1){k=s3(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=s3(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=X1(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){G$(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=s3(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(O_()|0)>>2]=22;G$(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(O_()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0<a>>>0){c[(O_()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[63608+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[63608+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[63608+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=A3(c[p>>2]|0,0,29)|0;k=s3(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=w3(k|0,m|0,1e9,0)|0;k=x3(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[63640+(p<<2)>>2]|0;if(n>>>0<o>>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<<v)+-1|0;u=1e9>>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+p$(+m$(1.0,105-n|0),j);r=+r$(j,+m$(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+r$(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(O_()|0)>>2]=34}while(0);i=+q$(i,b)}while(0);l=J;return +i}function X1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=r3(g|0,b|0,10,0)|0;g=z;e=s3(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=s3(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=t3(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function Y1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=D$(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0<d>>>0?f:d;F3(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Z1(a,b,c){a=a|0;b=b|0;c=c|0;return _1(a,b,c)|0}function _1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(t0(a)|0)==0;b=$1(a,b,d)|0;if(!e)u0(a)}else b=$1(a,b,d)|0;return b|0}function $1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((nb[c[a+40>>2]&63](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function a2(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(B$(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(E$(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((E$(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function b2(a){a=a|0;return +(+c2(a,0))}function c2(a,b){a=a|0;b=b|0;return +(+d2(a,b,1))}function d2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;G$(h,0);e=+U1(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function e2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=lb[e&127](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function f2(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=r3((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=s3(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=z3(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function g2(){var a=0,b=0,d=0;b=183528;b=r3(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=s3(b|0,z|0,1,0)|0;a=z;d=183528;c[d>>2]=b;c[d+4>>2]=a;a=z3(b|0,a|0,33)|0;return a|0}function h2(a){a=a|0;F3(190672,65740,6)|0;F3(65740,a|0,6)|0;return 190672}function i2(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;h2(d)|0;l=c;return}function j2(a){a=a|0;var b=0;b=f2(a,65746)|0;b=A3(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function k2(){return +(+j2(65740))}function l2(a,b){a=a|0;b=b|0;if(!a)b=E_(1,24)|0;else H3(b|0,0,24)|0;return b|0}function m2(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{D_(c[b>>2]|0);d=b;b=c[b+4>>2]|0;D_(d)}while((b|0)!=0);D_(a);return}function n2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0<f>>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=C_(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=C_(g)|0;c[j>>2]=b;d=b;if(!b){D_(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)H3(b|0,0,d|0)|0}else b=0;while(0);return b|0}function o2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=p2()|0;a:do if(!t)b=12;else{u=l2(0,0)|0;if(!u){q2(t);b=12;break}H3(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=r2(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=E_(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=s2(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=C_((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;H3(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=E_(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=E_(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=s2(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=t2(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=u2(u,0,0,b)|0;if((b|0)!=0?(s=v2(u,i,b)|0,(s|0)!=0):0){b=w2(u,t,s)|0;if(!b){o=C_(c[p>>2]<<2)|0;if(o){q=C_(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)H3(o|0,0,b<<2|0)|0;x2(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=E_(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=x2(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=E_(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=C_(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}F3(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;m2(u);q2(t);D_(o);D_(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);m2(u);q2(t);if(h|0)D_(f);if(i|0)D_(e);c[a+4>>2]=g;y2(a)}while(0);l=v;return b|0}function p2(){var a=0,b=0;a=C_(20)|0;do if(a){b=C_(2048)|0;c[a+16>>2]=b;if(!b){D_(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function q2(a){a=a|0;D_(c[a+16>>2]|0);D_(a);return}function r2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=C2(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=u2(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=R2(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=S2(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=u2(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=M2(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=v2(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=N2(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=N2(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=T2(b,d,D2(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=E2(t)|0;h=h+-1|0;i=E2(t)|0}if((j|0)==40){f=1;d=N2(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=B2(t,f)|0;if(d|0)break a;d=B2(t,g)|0;if(d|0)break a;d=C2(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function s2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=A2(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=C_((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=C_((c[g>>2]<<2)+4|0)|0;if(!A){D_(z);g=12;break}c[A>>2]=-1;B=C_((c[g>>2]<<3)+8|0)|0;if(!B){D_(z);D_(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);B2(d,e)|0;g=C2(d,0)|0;a:do if((g|0)!=0|(A2(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(D2(d)|0){case 6:{i=D2(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=E2(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=C_((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=C2(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=C2(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=B2(d,q)|0;if(!g){g=C2(d,5)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(!g){i=k+20|0;g=C2(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=C2(d,g)|0;if(!g){g=C2(d,4)|0;if(!g){g=B2(d,k)|0;if(!g){p=i;g=C2(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=C2(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=C2(d,m)|0;if(g|0){p=t;o=s;break c}g=C2(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=B2(d,q)|0;if(!g){g=C2(d,1)|0;if(!g){g=B2(d,c[i>>2]|0)|0;if(!g){g=C2(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=C2(d,i?p:t)|0;if(!g){g=C2(d,i?t:m)|0;if(!g){g=B2(d,e)|0;if(!g){g=C2(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=B2(d,q)|0;if(!g){g=B2(d,j)|0;if(!g){g=B2(d,k)|0;if(!g){g=C2(d,3)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(g|0){p=t;o=s;break c}g=C2(d,2)|0;if(g|0){p=t;o=s;break c}g=B2(d,k)|0;if(g|0){p=t;o=s;break c}g=C2(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=E2(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(D2(d)|0)+i;i=0;l=-1}else{q=D2(d)|0;r=D2(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=D2(d)|0;j=D2(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=E2(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=E2(d)|0;o=E2(d)|0;g=E2(d)|0;e=D2(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=E2(d)|0;i=D2(d)|0;k=D2(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=Q2(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=Q2(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(A2(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(P2(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;D_(z);D_(A);D_(B)}while(0);return g|0}function t2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=A2(b)|0;c[t>>2]=0;c[x>>2]=0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d){b:do if((A2(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=D2(b)|0;r=E2(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=C2(b,j)|0;if(d|0)break b;d=B2(b,r)|0;if(d|0)break b;d=C2(b,1)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=C2(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=D2(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=L2(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=v2(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=L2(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=M2(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=v2(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=u2(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=N2(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=v2(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((A2(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function u2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=n2(a,0,0,1,20)|0;a=K2(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function v2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function w2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=A2(b)|0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d)if((A2(b)|0)>(m|0)){b:while(1){h=D2(b)|0;i=E2(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=F2(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=G2(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=G2(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=F2(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,1)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 1:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,2)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 2:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,3)|0;if(d|0)break a;d=B2(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=H2(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=H2(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=H2(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=H2(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((A2(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)D_(e);else if((n|0)==52)D_(e)}else d=0}while(0);l=o;return d|0}function x2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=z2(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=x2(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=z2(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=x2(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function y2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){D_(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){D_(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)D_(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)D_(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}D_(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){D_(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0<b>>>0)}D_(a)}a=c[h+32>>2]|0;if(a|0)D_(a);a=c[h+20>>2]|0;if(a|0)D_(a);a=c[h+36>>2]|0;if(a|0)D_(a);D_(h)}return}function z2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=C_(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)D_(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=C_((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function A2(a){a=a|0;return c[a+12>>2]|0}function B2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function C2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function D2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function E2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function F2(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=n2(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function G2(a){a=a|0;a=n2(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function H2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=n2(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=n2(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=n2(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function I2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=A2(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=B2(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((A2(a)|0)>(o|0))while(1){b=E2(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=B2(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=B2(a,k)|0,g|0):0)break a;if((A2(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function J2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=F_(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];J2(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function K2(a,b,d){a=a|0;b=b|0;d=d|0;a=n2(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function L2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=A2(d)|0;B2(d,e)|0;e=C2(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(D2(d)|0){case 1:{i=7;break c}case 0:{e=E2(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((A2(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=E2(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=M2(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=u2(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=N2(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,m+4|0)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=C2(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=v2(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,k)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=C2(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function M2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=n2(b,0,0,1,16)|0;b=K2(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function N2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function O2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function P2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function Q2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function R2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=V2(b,d+1|0)|0;break}case 92:{e=d+1|0;f=W2(e)|0;if(f|0){e=R2(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=u2(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=u2(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=u2(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=u2(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=X2(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=u2(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=u2(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=u2(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=u2(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=N2(c[b>>2]|0,f,e)|0;else e=0}else e=u2(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=u2(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=u2(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=B1(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((m0(c[j>>2]|0)|0)==0?(l0(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=R$(c[j>>2]|0)|0;g=R$(c[j>>2]|0)|0;f=b+24|0;g=u2(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=o0(c[j>>2]|0)|0;d=o0(c[j>>2]|0)|0;d=u2(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=N2(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=u2(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function S2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=U2(b,i)|0;if((a[b>>0]|0)==44){b=U2(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function T2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=u2(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=v2(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function U2(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(E$(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(E$(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function V2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=C_(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=Y2(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){_0(c[r>>2]|0,c[h>>2]|0,4,109);d=_2(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=n2(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}F3(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=K2(c[b>>2]|0,0,j)|0;e=N2(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);D_(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function W2(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[63648+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[63648+(b<<3)+4>>2]|0}function X2(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function Y2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=B1(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}F3(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=H0(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=B1(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=_2(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?($2(e,m,g)|0)!=0:0){g=12;break a}}j=B1(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function Z2(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function _2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=F_(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=n2(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function $2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(l0(b)|0)){if(!(m0(b)|0)){b=b+1|0;break}f=o0(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((o0(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=R$(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((R$(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=_2(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function a3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=C_(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=c3(i,b,g,f,k)|0;else a=b3(i,b,g,f,k)|0;if(!a)d3(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)D_(d)}l=n;return a|0}function b3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=l2(0,0)|0;a:do if(U){p=n2(U,0,0,0,32)|0;if(!p){m2(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=C_(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=C_(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=C_(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)H3(g|0,0,n<<2|0)|0;G=e+q|0;e=B1(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(h0(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(h0(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(h0(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(h0(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(h0(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(h0(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(h0(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(h0(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=n2(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=n2(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(f3(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;d3(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(z$(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0<q>>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(h0(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(h0(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(h0(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(h0(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(h0(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(h0(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(h0(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(h0(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(g0(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=o0(q)|0;e=w+24|0;if(g0(x,c[e>>2]|0)|0)break;x=R$(q)|0;if(!(g0(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(e3(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=n2(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=n2(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==60){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==145){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==152){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);m2(U);if(j|0)D_(i);if(m|0)D_(h);if(k)D_(g)}else e=12;while(0);l=V;return e|0}function c3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=C_(e)|0;if(!U)e=12;else{H3(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=B1(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(h0(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(h0(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(h0(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(h0(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(h0(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(h0(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(h0(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)H3(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=B1(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(h0(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(h0(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(h0(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(h0(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(h0(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(h0(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(h0(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(g0(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=o0(h)|0;a=k+24|0;if(g0(A,c[a>>2]|0)|0)break;A=R$(h)|0;if(!(g0(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(e3(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(f3(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);D_(U)}l=W;return e|0}function d3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0<a>>>0&j>>>0<n>>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0<a>>>0&d>>>0<n>>>0)}else d=0}else d=0;if(d>>>0<a>>>0)H3(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function e3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(g0(b,d)|0){d=1;break a}}else{e=R$(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}e=o0(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function f3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function g3(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=t0(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0<k>>>0?i:k;F3(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(K$(f)|0)break;h=nb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)u0(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)u0(f);return e|0}function h3(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=i3(a)|0}else a=i3(a)|0;return a|0}function i3(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=nb[c[a+40>>2]&63](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function j3(a){a=a|0;(c[a+76>>2]|0)>-1?t0(a)|0:0;return c[a+60>>2]|0}function k3(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[15653]|0;if((c[f+76>>2]|0)>-1)g=t0(f)|0;else g=0;do if((D1(b,f)|0)<0)b=-1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;b=0;break}b=(F1(f,10)|0)>>31}while(0);if(g|0)u0(f);return b|0}function l3(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=150604;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){h1(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=N_(Ha(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;wa(10,h|0)|0;b=z1(f,150624)|0;if(!b){c[i>>2]=f;Ja(6,i|0)|0;b=0}}l=k;return b|0}function m3(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(t0(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=J$(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=J$(a)|0;break}}while(0);return b|0}function n3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(t0(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=F1(d,b)|0;u0(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=F1(d,b)|0}while(0);return e|0}function o3(a){a=a|0;return h3(a)|0}function p3(){}function q3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function r3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=q3(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function s3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function t3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function u3(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}\n  function v3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=u3(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((u3(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (z=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=s3(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;t3(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=t3(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function w3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return v3(a,b,c,d,0)|0}function x3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;v3(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function y3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=(b|0)<0?-1:0;return b>>c-32|0}function z3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=0;return b>>>c-32|0}function A3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}z=a<<c-32;return 0}function B3(a){a=a|0;return (a&255)<<8|a>>8&255|0}function C3(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function D3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=F_(d|0,8*(e+1|0)|0)|0;d=D3(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function E3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function F3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return Ra(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function G3(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else F3(b,c,d)|0;return b|0}function H3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function I3(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;va(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;va(12);return -1}return d|0}function J3(a){a=a|0;return +gb[a&1]()}function K3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +hb[a&7](+b,+c,+d)}function L3(a,b){a=a|0;b=b|0;return +ib[a&1](b|0)}function M3(a){a=a|0;return jb[a&3]()|0}function N3(a,b){a=a|0;b=b|0;return kb[a&63](b|0)|0}function O3(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&127](b|0,c|0)|0}function P3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return mb[a&3](b|0,c|0,+d,+e)|0}function Q3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nb[a&63](b|0,c|0,d|0)|0}function R3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ob[a&127](b|0,c|0,d|0,e|0)|0}function S3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return pb[a&127](b|0,c|0,d|0,e|0,f|0)|0}function T3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return qb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function U3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return rb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function V3(a){a=a|0;sb[a&15]()}function W3(a,b){a=a|0;b=b|0;tb[a&127](b|0)}function X3(a,b,c){a=a|0;b=b|0;c=c|0;ub[a&63](b|0,c|0)}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&127](b|0,c|0,d|0)}function Z3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;wb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function _3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xb[a&31](b|0,c|0,d|0,e|0)}function $3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;yb[a&15](b|0,c|0,d|0,e|0,f|0)}function a4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;zb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function b4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Ab[a&0](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function c4(){S(0);return 0.0}function d4(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function e4(a){a=a|0;S(2);return 0.0}function f4(){S(3);return 0}function g4(a){a=a|0;S(4);return 0}function h4(a,b){a=a|0;b=b|0;S(5);return 0}function i4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;S(6);return 0}function j4(a,b,c){a=a|0;b=b|0;c=c|0;S(7);return 0}function k4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(8);return 0}function l4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(9);return 0}function m4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(10);return 0}function n4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;S(11);return 0}function o4(){S(12)}function p4(a){a=a|0;S(13)}function q4(a,b){a=a|0;b=b|0;S(14)}function r4(a,b,c){a=a|0;b=b|0;c=c|0;S(15)}function s4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(16)}function t4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(17)}function u4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(18)}function v4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(19)}function w4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;S(20)}\n  \n  // EMSCRIPTEN_END_FUNCS\n  var gb=[c4,FL];var hb=[d4,RF,QF,SF,TF,d4,d4,d4];var ib=[e4,ML];var jb=[f4,eq,EH,vI];var kb=[g4,eh,zg,Nm,Om,Fy,Iy,sN,tN,iP,jP,kP,lP,mP,nP,oP,pP,K_,Ib,bC,Al,Dl,an,vH,ay,Sy,$x,AH,FH,by,eN,uH,jN,kN,bV,C_,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4];var lb=[h4,hy,Ey,Jy,EK,FK,wK,sK,aK,KT,LT,MT,NT,OT,PT,RT,ST,TT,UT,VT,WT,XT,YT,ZT,_T,$T,aU,bU,cU,dU,eU,fU,gU,hU,iU,jU,kU,lU,mU,nU,wX,xX,zX,WX,XX,YX,ZX,_X,$X,aY,bY,UY,VY,XY,jY,kY,mY,$B,pg,dh,Gh,ii,Ai,Lk,Jk,Bl,El,$o,oq,Kq,Mq,Oq,Pq,Rq,Qq,ar,is,ns,ps,tu,mB,lB,kB,gD,Ty,xH,tD,JD,ED,FD,GE,D1,n3,zL,NM,xx,PR,Ex,Gx,fN,b$,oQ,JT,ZU,_U,F_,kX,lX,mX,Z2,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4];var mb=[i4,qt,vt,i4];var nb=[j4,Jm,Mu,kw,sw,Bw,Gw,Dy,Hy,HI,AM,zR,AX,YY,nY,L_,M_,Q_,R_,G0,Pw,Zm,Au,tp,os,Iw,eD,Y0,vA,g1,BL,DI,sO,WU,HY,yZ,sZ,CZ,P1,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4];var ob=[k4,Lm,Wq,Nu,mw,uw,Cx,AA,Dx,Wx,jy,ly,wy,vy,Ky,Oy,Qy,xI,CM,VN,TN,PP,BR,XR,WR,pX,qX,rX,sX,tX,uX,vX,yX,CX,NY,OY,PY,QY,RY,SY,TY,WY,_Y,cY,dY,eY,fY,gY,hY,iY,lY,pY,Lw,Az,iD,DL,QV,TV,_V,jW,sW,yW,wW,zW,iX,DZ,XW,JY,KY,zZ,AZ,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4];var pb=[l4,iy,bK,xK,DX,EX,UX,VX,pZ,$Y,aZ,qY,rY,nX,oX,FZ,GZ,HZ,IZ,KZ,LZ,MZ,NZ,OZ,QZ,RZ,SZ,TZ,UZ,PZ,s_,t_,j_,c_,VZ,WZ,XZ,ZZ,YZ,_Z,$Z,a_,b_,d_,e_,f_,g_,h_,i_,k_,l_,m_,n_,r_,p_,o_,q_,y_,u_,v_,w_,x_,z_,A_,B_,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4];var qb=[m4,AU];var rb=[n4,rZ,BZ,n4];var sb=[o4,EL,BH,CH,DH,HH,IH,JH,FR,o4,o4,o4,o4,o4,o4,o4];var tb=[p4,Ob,Pb,Tb,Ub,Vb,nc,oc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,cd,dd,gd,hd,id,jd,kd,ld,md,yd,zd,Ad,Cd,Dd,Ed,Fd,Gd,Hd,Id,Jd,Ud,Vd,Wd,Yd,Zd,_d,$d,ae,be,ce,de,ee,ge,te,ue,ve,we,He,Ie,Je,Le,Ye,Ze,_e,af,bf,cf,df,ef,ff,gf,hf,jf,sf,tf,uf,vf,Yf,Tf,rm,bm,fp,Go,ao,co,Np,Op,Zl,_l,fo,no,po,Ao,my,IJ,_J,KJ,JJ,uK,fJ,iJ,qP,vP,Mf,Fl,Ko,Oo,gp,D_,ax,jD,cF,ER,lO,mN,yI,YR,zU,UU,VU,$U,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4];var ub=[q4,Uc,Zc,od,td,Qd,me,Ce,Re,pf,Bf,Ly,cK,GK,yK,tK,YJ,ZJ,CK,DK,tP,xP,PI,Sw,fD,GH,dN,AT,yU,XU,YU,aV,cV,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4];var vb=[r4,Wb,Xb,_b,Lc,Tc,Vc,Yc,nd,pd,sd,Ld,Md,Pd,he,ie,le,xe,ye,Be,Me,Ne,Qe,kf,lf,of,wf,xf,Af,qk,rk,sk,Km,lw,tw,Zw,ny,Py,wz,BA,YC,BG,wI,II,hJ,BM,EM,UN,SN,rP,sP,uP,wP,yP,AR,nT,mT,qx,Sx,bz,Ez,Hz,zH,CL,BI,hN,lN,oT,qT,rT,zT,BT,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4];var wb=[s4,xE,yE,zE,AE,BE,CE,DE,EE,s4,s4,s4,s4,s4,s4,s4];var xb=[t4,Yb,Wc,qd,Bd,Nd,Xd,je,ze,Oe,$e,mf,yf,Pf,Of,Nf,Lf,Kf,Jf,mc,If,Hf,ky,$J,vK,BX,ZY,oY,_0,gN,iN,LY];var yb=[u4,ed,Kd,Rd,fe,Ke,Cl,hD,nN,u4,u4,u4,u4,u4,u4,u4];var zb=[v4,Zb,Xc,rd,Od,ke,Ae,Pe,nf,zf,oN,v4,v4,v4,v4,v4];var Ab=[w4];return{___errno_location:O_,___muldi3:r3,___udivdi3:w3,___uremdi3:x3,_bitshift64Ashr:y3,_bitshift64Lshr:z3,_bitshift64Shl:A3,_dtextract:zw,_free:D_,_htons:M0,_i64Add:s3,_i64Subtract:t3,_llvm_bswap_i16:B3,_llvm_bswap_i32:C3,_malloc:C_,_memalign:I_,_memcpy:F3,_memmove:G3,_memset:H3,_realloc:F_,_saveSetjmp:D3,_sbrk:I3,_testSetjmp:E3,_vizCreateFile:Kb,_vizLastErrorMessage:Jb,_vizRenderFromString:Nb,_vizSetNop:Mb,_vizSetY_invert:Lb,dynCall_d:J3,dynCall_dddd:K3,dynCall_di:L3,dynCall_i:M3,dynCall_ii:N3,dynCall_iii:O3,dynCall_iiidd:P3,dynCall_iiii:Q3,dynCall_iiiii:R3,dynCall_iiiiii:S3,dynCall_iiiiiii:T3,dynCall_iiiiiiiiiii:U3,dynCall_v:V3,dynCall_vi:W3,dynCall_vii:X3,dynCall_viii:Y3,dynCall_viiiddi:Z3,dynCall_viiii:_3,dynCall_viiiii:$3,dynCall_viiiiii:a4,dynCall_viiiiiiiii:b4,establishStackSpace:Eb,getTempRet0:Hb,runPostSets:p3,setTempRet0:Gb,setThrew:Fb,stackAlloc:Bb,stackRestore:Db,stackSave:Cb}})\n  \n  \n  // EMSCRIPTEN_END_ASM\n  (Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Ashr=Module[\"_bitshift64Ashr\"]=asm[\"_bitshift64Ashr\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _dtextract=Module[\"_dtextract\"]=asm[\"_dtextract\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _htons=Module[\"_htons\"]=asm[\"_htons\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _llvm_bswap_i16=Module[\"_llvm_bswap_i16\"]=asm[\"_llvm_bswap_i16\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _memalign=Module[\"_memalign\"]=asm[\"_memalign\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memmove=Module[\"_memmove\"]=asm[\"_memmove\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _realloc=Module[\"_realloc\"]=asm[\"_realloc\"];var _saveSetjmp=Module[\"_saveSetjmp\"]=asm[\"_saveSetjmp\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _testSetjmp=Module[\"_testSetjmp\"]=asm[\"_testSetjmp\"];var _vizCreateFile=Module[\"_vizCreateFile\"]=asm[\"_vizCreateFile\"];var _vizLastErrorMessage=Module[\"_vizLastErrorMessage\"]=asm[\"_vizLastErrorMessage\"];var _vizRenderFromString=Module[\"_vizRenderFromString\"]=asm[\"_vizRenderFromString\"];var _vizSetNop=Module[\"_vizSetNop\"]=asm[\"_vizSetNop\"];var _vizSetY_invert=Module[\"_vizSetY_invert\"]=asm[\"_vizSetY_invert\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var dynCall_d=Module[\"dynCall_d\"]=asm[\"dynCall_d\"];var dynCall_dddd=Module[\"dynCall_dddd\"]=asm[\"dynCall_dddd\"];var dynCall_di=Module[\"dynCall_di\"]=asm[\"dynCall_di\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiidd=Module[\"dynCall_iiidd\"]=asm[\"dynCall_iiidd\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_iiiiiiiiiii=Module[\"dynCall_iiiiiiiiiii\"]=asm[\"dynCall_iiiiiiiiiii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_viiiddi=Module[\"dynCall_viiiddi\"]=asm[\"dynCall_viiiddi\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=asm[\"dynCall_viiiiiiiii\"];Module[\"asm\"]=asm;Module[\"ccall\"]=ccall;Module[\"Pointer_stringify\"]=Pointer_stringify;Module[\"UTF8ToString\"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module[\"locateFile\"]===\"function\"){memoryInitializer=Module[\"locateFile\"](memoryInitializer)}else if(Module[\"memoryInitializerPrefixURL\"]){memoryInitializer=Module[\"memoryInitializerPrefixURL\"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module[\"readBinary\"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")});function doBrowserLoad(){Module[\"readAsync\"](memoryInitializer,applyMemoryInitializer,(function(){throw\"could not load memory initializer \"+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){function useRequest(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=exit;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run()\n  \n  \n  \n  \n    return Module;\n  };\n  \n  function render(instance, src, options) {\n    var i;\n    for (i = 0; i < options.files.length; i++) {\n      instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]);\n    }\n  \n    instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);\n    instance['ccall']('vizSetNop', 'number', ['number'], [options.nop ? options.nop : 0]);\n    \n    var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);\n    var resultString = instance['Pointer_stringify'](resultPointer);\n    instance['ccall']('free', 'number', ['number'], [resultPointer]);\n  \n    var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []);\n    var errorMessageString = instance['Pointer_stringify'](errorMessagePointer);\n    instance['ccall']('free', 'number', ['number'], [errorMessagePointer]);\n  \n    if (errorMessageString != '') {\n      throw new Error(errorMessageString);\n    }\n    \n    return resultString;\n  }\n  \n  if (typeof importScripts === \"function\") {\n    var instance = Module();\n    \n    onmessage = function(event) {\n      var id = event.data.id;\n      var src = event.data.src;\n      var options = event.data.options;\n    \n      try {\n        var result = render(instance, src, options);\n        postMessage({ id: id, result: result });\n      } catch (e) {\n        var error;\n        if (e instanceof Error) {\n          error = { message: e.message, fileName: e.fileName, lineNumber: e.lineNumber };\n        } else {\n          error = { message: e.toString() };\n        }\n        postMessage({ id: id, error: error });\n      }\n    }\n  }\n  \n  if (typeof exports === 'object' && typeof module !== 'undefined') {\n    module.exports = { render: render, Module: Module };\n  } else if (typeof define === 'function' && define.amd) {\n    define(function() { return { render: render, Module: Module }; });\n  }\n  \n  if (typeof global.Viz !== 'undefined') {\n    global.Viz.render = render;\n    global.Viz.Module = Module;\n  }\n  \n  })(typeof self !== 'undefined' ? self : this);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/graphviz/viz.js",
    "content": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\nCopyright (c) 2014-2018 Michael Daines\nLicensed under MIT license\n\nThis distribution contains other software in object code form:\n\nGraphviz\nLicensed under Eclipse Public License - v 1.0\nhttp://www.graphviz.org\n\nExpat\nCopyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper\nCopyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.\nLicensed under MIT license\nhttp://www.libexpat.org\n\nzlib\nCopyright (C) 1995-2013 Jean-loup Gailly and Mark Adler\nhttp://www.zlib.net/zlib_license.html\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.Viz = factory());\n}(this, (function () { 'use strict';\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n\n  var classCallCheck = function (instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n\n  var createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n  var _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  var WorkerWrapper = function () {\n    function WorkerWrapper(worker) {\n      var _this = this;\n\n      classCallCheck(this, WorkerWrapper);\n\n      this.worker = worker;\n      this.listeners = [];\n      this.nextId = 0;\n\n      this.worker.addEventListener('message', function (event) {\n        var id = event.data.id;\n        var error = event.data.error;\n        var result = event.data.result;\n\n        _this.listeners[id](error, result);\n        delete _this.listeners[id];\n      });\n    }\n\n    createClass(WorkerWrapper, [{\n      key: 'render',\n      value: function render(src, options) {\n        var _this2 = this;\n\n        return new Promise(function (resolve, reject) {\n          var id = _this2.nextId++;\n\n          _this2.listeners[id] = function (error, result) {\n            if (error) {\n              reject(new Error(error.message, error.fileName, error.lineNumber));\n              return;\n            }\n            resolve(result);\n          };\n\n          _this2.worker.postMessage({ id: id, src: src, options: options });\n        });\n      }\n    }]);\n    return WorkerWrapper;\n  }();\n\n  var ModuleWrapper = function ModuleWrapper(module, render) {\n    classCallCheck(this, ModuleWrapper);\n\n    var instance = module();\n    this.render = function (src, options) {\n      return new Promise(function (resolve, reject) {\n        try {\n          resolve(render(instance, src, options));\n        } catch (error) {\n          reject(error);\n        }\n      });\n    };\n  };\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n\n\n  function b64EncodeUnicode(str) {\n    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n      return String.fromCharCode('0x' + p1);\n    }));\n  }\n\n  function defaultScale() {\n    if ('devicePixelRatio' in window && window.devicePixelRatio > 1) {\n      return window.devicePixelRatio;\n    } else {\n      return 1;\n    }\n  }\n\n  function svgXmlToImageElement(svgXml) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref$scale = _ref.scale,\n        scale = _ref$scale === undefined ? defaultScale() : _ref$scale,\n        _ref$mimeType = _ref.mimeType,\n        mimeType = _ref$mimeType === undefined ? \"image/png\" : _ref$mimeType,\n        _ref$quality = _ref.quality,\n        quality = _ref$quality === undefined ? 1 : _ref$quality;\n\n    return new Promise(function (resolve, reject) {\n      var svgImage = new Image();\n\n      svgImage.onload = function () {\n        var canvas = document.createElement('canvas');\n        canvas.width = svgImage.width * scale;\n        canvas.height = svgImage.height * scale;\n\n        var context = canvas.getContext(\"2d\");\n        context.drawImage(svgImage, 0, 0, canvas.width, canvas.height);\n\n        canvas.toBlob(function (blob) {\n          var image = new Image();\n          image.src = URL.createObjectURL(blob);\n          image.width = svgImage.width;\n          image.height = svgImage.height;\n\n          resolve(image);\n        }, mimeType, quality);\n      };\n\n      svgImage.onerror = function (e) {\n        var error;\n\n        if ('error' in e) {\n          error = e.error;\n        } else {\n          error = new Error('Error loading SVG');\n        }\n\n        reject(error);\n      };\n\n      svgImage.src = 'data:image/svg+xml;base64,' + b64EncodeUnicode(svgXml);\n    });\n  }\n\n  function svgXmlToImageElementFabric(svgXml) {\n    var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref2$scale = _ref2.scale,\n        scale = _ref2$scale === undefined ? defaultScale() : _ref2$scale,\n        _ref2$mimeType = _ref2.mimeType,\n        mimeType = _ref2$mimeType === undefined ? 'image/png' : _ref2$mimeType,\n        _ref2$quality = _ref2.quality,\n        quality = _ref2$quality === undefined ? 1 : _ref2$quality;\n\n    var multiplier = scale;\n\n    var format = void 0;\n    if (mimeType == 'image/jpeg') {\n      format = 'jpeg';\n    } else if (mimeType == 'image/png') {\n      format = 'png';\n    }\n\n    return new Promise(function (resolve, reject) {\n      fabric.loadSVGFromString(svgXml, function (objects, options) {\n        // If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one <g> element back even given an empty graph, so we will assume an error in this case.\n        if (objects.length == 0) {\n          reject(new Error('Error loading SVG with Fabric'));\n        }\n\n        var element = document.createElement(\"canvas\");\n        element.width = options.width;\n        element.height = options.height;\n\n        var canvas = new fabric.Canvas(element, { enableRetinaScaling: false });\n        var obj = fabric.util.groupSVGElements(objects, options);\n        canvas.add(obj).renderAll();\n\n        var image = new Image();\n        image.src = canvas.toDataURL({ format: format, multiplier: multiplier, quality: quality });\n        image.width = options.width;\n        image.height = options.height;\n\n        resolve(image);\n      });\n    });\n  }\n\n  var Viz = function () {\n    function Viz() {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          workerURL = _ref3.workerURL,\n          worker = _ref3.worker,\n          Module = _ref3.Module,\n          render = _ref3.render;\n\n      classCallCheck(this, Viz);\n\n      if (typeof workerURL !== 'undefined') {\n        this.wrapper = new WorkerWrapper(new Worker(workerURL));\n      } else if (typeof worker !== 'undefined') {\n        this.wrapper = new WorkerWrapper(worker);\n      } else if (typeof Module !== 'undefined' && typeof render !== 'undefined') {\n        this.wrapper = new ModuleWrapper(Module, render);\n      } else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') {\n        this.wrapper = new ModuleWrapper(Viz.Module, Viz.render);\n      } else {\n        throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.');\n      }\n    }\n\n    createClass(Viz, [{\n      key: 'renderString',\n      value: function renderString(src) {\n        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            _ref4$format = _ref4.format,\n            format = _ref4$format === undefined ? 'svg' : _ref4$format,\n            _ref4$engine = _ref4.engine,\n            engine = _ref4$engine === undefined ? 'dot' : _ref4$engine,\n            _ref4$files = _ref4.files,\n            files = _ref4$files === undefined ? [] : _ref4$files,\n            _ref4$images = _ref4.images,\n            images = _ref4$images === undefined ? [] : _ref4$images,\n            _ref4$yInvert = _ref4.yInvert,\n            yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert,\n            _ref4$nop = _ref4.nop,\n            nop = _ref4$nop === undefined ? 0 : _ref4$nop;\n\n        for (var i = 0; i < images.length; i++) {\n          files.push({\n            path: images[i].path,\n            data: '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n<svg width=\"' + images[i].width + '\" height=\"' + images[i].height + '\"></svg>'\n          });\n        }\n\n        return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert, nop: nop });\n      }\n    }, {\n      key: 'renderSVGElement',\n      value: function renderSVGElement(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n          var parser = new DOMParser();\n          return parser.parseFromString(str, 'image/svg+xml').documentElement;\n        });\n      }\n    }, {\n      key: 'renderImageElement',\n      value: function renderImageElement(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var scale = options.scale,\n            mimeType = options.mimeType,\n            quality = options.quality;\n\n\n        return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n          if ((typeof fabric === 'undefined' ? 'undefined' : _typeof(fabric)) === \"object\" && fabric.loadSVGFromString) {\n            return svgXmlToImageElementFabric(str, { scale: scale, mimeType: mimeType, quality: quality });\n          } else {\n            return svgXmlToImageElement(str, { scale: scale, mimeType: mimeType, quality: quality });\n          }\n        });\n      }\n    }, {\n      key: 'renderJSONObject',\n      value: function renderJSONObject(src) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var format = options.format;\n\n\n        if (format !== 'json' || format !== 'json0') {\n          format = 'json';\n        }\n\n        return this.renderString(src, _extends({}, options, { format: format })).then(function (str) {\n          return JSON.parse(str);\n        });\n      }\n    }]);\n    return Viz;\n  }();\n\n  return Viz;\n\n})));\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/highlight.pack.js",
    "content": "/*\n  Highlight.js 10.7.2 (00233d63)\n  License: BSD-3-Clause\n  Copyright (c) 2006-2021, Ivan Sagalaev\n*/\nvar hljs=function(){\"use strict\";function e(t){\nreturn t instanceof Map?t.clear=t.delete=t.set=()=>{\nthrow Error(\"map is read-only\")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{\nthrow Error(\"set is read-only\")\n}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{var i=t[n]\n;\"object\"!=typeof i||Object.isFrozen(i)||e(i)})),t}var t=e,n=e;t.default=n\n;class i{constructor(e){\nvoid 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}\nignoreMatch(){this.isMatchIgnored=!0}}function s(e){\nreturn e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\")\n}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]\n;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const r=e=>!!e.kind\n;class l{constructor(e,t){\nthis.buffer=\"\",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){\nthis.buffer+=s(e)}openNode(e){if(!r(e))return;let t=e.kind\n;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){\nr(e)&&(this.buffer+=\"</span>\")}value(){return this.buffer}span(e){\nthis.buffer+=`<span class=\"${e}\">`}}class o{constructor(){this.rootNode={\nchildren:[]},this.stack=[this.rootNode]}get top(){\nreturn this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){\nthis.top.children.push(e)}openNode(e){const t={kind:e,children:[]}\n;this.add(t),this.stack.push(t)}closeNode(){\nif(this.stack.length>1)return this.stack.pop()}closeAllNodes(){\nfor(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}\nwalk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){\nreturn\"string\"==typeof t?e.addText(t):t.children&&(e.openNode(t),\nt.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){\n\"string\"!=typeof e&&e.children&&(e.children.every((e=>\"string\"==typeof e))?e.children=[e.children.join(\"\")]:e.children.forEach((e=>{\no._collapse(e)})))}}class c extends o{constructor(e){super(),this.options=e}\naddKeyword(e,t){\"\"!==e&&(this.openNode(t),this.addText(e),this.closeNode())}\naddText(e){\"\"!==e&&this.add(e)}addSublanguage(e,t){const n=e.root\n;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){\nreturn new l(this,this.options).value()}finalize(){return!0}}function g(e){\nreturn e?\"string\"==typeof e?e:e.source:null}\nconst u=/\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./,h=\"[a-zA-Z]\\\\w*\",d=\"[a-zA-Z_]\\\\w*\",f=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",p=\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",m=\"\\\\b(0b[01]+)\",b={\nbegin:\"\\\\\\\\[\\\\s\\\\S]\",relevance:0},E={className:\"string\",begin:\"'\",end:\"'\",\nillegal:\"\\\\n\",contains:[b]},x={className:\"string\",begin:'\"',end:'\"',\nillegal:\"\\\\n\",contains:[b]},v={\nbegin:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n},w=(e,t,n={})=>{const i=a({className:\"comment\",begin:e,end:t,contains:[]},n)\n;return i.contains.push(v),i.contains.push({className:\"doctag\",\nbegin:\"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):\",relevance:0}),i\n},y=w(\"//\",\"$\"),N=w(\"/\\\\*\",\"\\\\*/\"),R=w(\"#\",\"$\");var _=Object.freeze({\n__proto__:null,MATCH_NOTHING_RE:/\\b\\B/,IDENT_RE:h,UNDERSCORE_IDENT_RE:d,\nNUMBER_RE:f,C_NUMBER_RE:p,BINARY_NUMBER_RE:m,\nRE_STARTERS_RE:\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",\nSHEBANG:(e={})=>{const t=/^#![ ]*\\//\n;return e.binary&&(e.begin=((...e)=>e.map((e=>g(e))).join(\"\"))(t,/.*\\b/,e.binary,/\\b.*/)),\na({className:\"meta\",begin:t,end:/$/,relevance:0,\"on:begin\":(e,t)=>{\n0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:b,APOS_STRING_MODE:E,\nQUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:v,COMMENT:w,C_LINE_COMMENT_MODE:y,\nC_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:R,NUMBER_MODE:{className:\"number\",\nbegin:f,relevance:0},C_NUMBER_MODE:{className:\"number\",begin:p,relevance:0},\nBINARY_NUMBER_MODE:{className:\"number\",begin:m,relevance:0},CSS_NUMBER_MODE:{\nclassName:\"number\",\nbegin:f+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\nrelevance:0},REGEXP_MODE:{begin:/(?=\\/[^/\\n]*\\/)/,contains:[{className:\"regexp\",\nbegin:/\\//,end:/\\/[gimuy]*/,illegal:/\\n/,contains:[b,{begin:/\\[/,end:/\\]/,\nrelevance:0,contains:[b]}]}]},TITLE_MODE:{className:\"title\",begin:h,relevance:0\n},UNDERSCORE_TITLE_MODE:{className:\"title\",begin:d,relevance:0},METHOD_GUARD:{\nbegin:\"\\\\.\\\\s*[a-zA-Z_]\\\\w*\",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{\n\"on:begin\":(e,t)=>{t.data._beginMatch=e[1]},\"on:end\":(e,t)=>{\nt.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function k(e,t){\n\".\"===e.input[e.index-1]&&t.ignoreMatch()}function M(e,t){\nt&&e.beginKeywords&&(e.begin=\"\\\\b(\"+e.beginKeywords.split(\" \").join(\"|\")+\")(?!\\\\.)(?=\\\\b|\\\\s)\",\ne.__beforeBegin=k,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,\nvoid 0===e.relevance&&(e.relevance=0))}function O(e,t){\nArray.isArray(e.illegal)&&(e.illegal=((...e)=>\"(\"+e.map((e=>g(e))).join(\"|\")+\")\")(...e.illegal))\n}function A(e,t){if(e.match){\nif(e.begin||e.end)throw Error(\"begin & end are not supported with match\")\n;e.begin=e.match,delete e.match}}function L(e,t){\nvoid 0===e.relevance&&(e.relevance=1)}\nconst I=[\"of\",\"and\",\"for\",\"in\",\"not\",\"or\",\"if\",\"then\",\"parent\",\"list\",\"value\"]\n;function j(e,t,n=\"keyword\"){const i={}\n;return\"string\"==typeof e?s(n,e.split(\" \")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{\nObject.assign(i,j(e[n],t,n))})),i;function s(e,n){\nt&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split(\"|\")\n;i[n[0]]=[e,B(n[0],n[1])]}))}}function B(e,t){\nreturn t?Number(t):(e=>I.includes(e.toLowerCase()))(e)?0:1}\nfunction T(e,{plugins:t}){function n(t,n){\nreturn RegExp(g(t),\"m\"+(e.case_insensitive?\"i\":\"\")+(n?\"g\":\"\"))}class i{\nconstructor(){\nthis.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}\naddRule(e,t){\nt.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),\nthis.matchAt+=(e=>RegExp(e.toString()+\"|\").exec(\"\").length-1)(e)+1}compile(){\n0===this.regexes.length&&(this.exec=()=>null)\n;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(((e,t=\"|\")=>{let n=0\n;return e.map((e=>{n+=1;const t=n;let i=g(e),s=\"\";for(;i.length>0;){\nconst e=u.exec(i);if(!e){s+=i;break}\ns+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),\n\"\\\\\"===e[0][0]&&e[1]?s+=\"\\\\\"+(Number(e[1])+t):(s+=e[0],\"(\"===e[0]&&n++)}return s\n})).map((e=>`(${e})`)).join(t)})(e),!0),this.lastIndex=0}exec(e){\nthis.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e)\n;if(!t)return null\n;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]\n;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){\nthis.rules=[],this.multiRegexes=[],\nthis.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){\nif(this.multiRegexes[e])return this.multiRegexes[e];const t=new i\n;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),\nt.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){\nreturn 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){\nthis.rules.push([e,t]),\"begin\"===t.type&&this.count++}exec(e){\nconst t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex\n;let n=t.exec(e)\n;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{\nconst t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}\nreturn n&&(this.regexIndex+=n.position+1,\nthis.regexIndex===this.count&&this.considerAll()),n}}\nif(e.compilerExtensions||(e.compilerExtensions=[]),\ne.contains&&e.contains.includes(\"self\"))throw Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\")\n;return e.classNameAliases=a(e.classNameAliases||{}),function t(i,r){const l=i\n;if(i.isCompiled)return l\n;[A].forEach((e=>e(i,r))),e.compilerExtensions.forEach((e=>e(i,r))),\ni.__beforeBegin=null,[M,O,L].forEach((e=>e(i,r))),i.isCompiled=!0;let o=null\n;if(\"object\"==typeof i.keywords&&(o=i.keywords.$pattern,\ndelete i.keywords.$pattern),\ni.keywords&&(i.keywords=j(i.keywords,e.case_insensitive)),\ni.lexemes&&o)throw Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \")\n;return o=o||i.lexemes||/\\w+/,\nl.keywordPatternRe=n(o,!0),r&&(i.begin||(i.begin=/\\B|\\b/),\nl.beginRe=n(i.begin),i.endSameAsBegin&&(i.end=i.begin),\ni.end||i.endsWithParent||(i.end=/\\B|\\b/),\ni.end&&(l.endRe=n(i.end)),l.terminatorEnd=g(i.end)||\"\",\ni.endsWithParent&&r.terminatorEnd&&(l.terminatorEnd+=(i.end?\"|\":\"\")+r.terminatorEnd)),\ni.illegal&&(l.illegalRe=n(i.illegal)),\ni.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{\nvariants:null},t)))),e.cachedVariants?e.cachedVariants:S(e)?a(e,{\nstarts:e.starts?a(e.starts):null\n}):Object.isFrozen(e)?a(e):e))(\"self\"===e?i:e)))),i.contains.forEach((e=>{t(e,l)\n})),i.starts&&t(i.starts,r),l.matcher=(e=>{const t=new s\n;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:\"begin\"\n}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:\"end\"\n}),e.illegal&&t.addRule(e.illegal,{type:\"illegal\"}),t})(l),l}(e)}function S(e){\nreturn!!e&&(e.endsWithParent||S(e.starts))}function P(e){const t={\nprops:[\"language\",\"code\",\"autodetect\"],data:()=>({detectedLanguage:\"\",\nunknownLanguage:!1}),computed:{className(){\nreturn this.unknownLanguage?\"\":\"hljs \"+this.detectedLanguage},highlighted(){\nif(!this.autoDetect&&!e.getLanguage(this.language))return console.warn(`The language \"${this.language}\" you specified could not be found.`),\nthis.unknownLanguage=!0,s(this.code);let t={}\n;return this.autoDetect?(t=e.highlightAuto(this.code),\nthis.detectedLanguage=t.language):(t=e.highlight(this.language,this.code,this.ignoreIllegals),\nthis.detectedLanguage=this.language),t.value},autoDetect(){\nreturn!(this.language&&(e=this.autodetect,!e&&\"\"!==e));var e},\nignoreIllegals:()=>!0},render(e){return e(\"pre\",{},[e(\"code\",{\nclass:this.className,domProps:{innerHTML:this.highlighted}})])}};return{\nComponent:t,VuePlugin:{install(e){e.component(\"highlightjs\",t)}}}}const D={\n\"after:highlightElement\":({el:e,result:t,text:n})=>{const i=H(e)\n;if(!i.length)return;const a=document.createElement(\"div\")\n;a.innerHTML=t.value,t.value=((e,t,n)=>{let i=0,a=\"\";const r=[];function l(){\nreturn e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset<t[0].offset?e:t:\"start\"===t[0].event?e:t:e.length?e:t\n}function o(e){a+=\"<\"+C(e)+[].map.call(e.attributes,(function(e){\nreturn\" \"+e.nodeName+'=\"'+s(e.value)+'\"'})).join(\"\")+\">\"}function c(e){\na+=\"</\"+C(e)+\">\"}function g(e){(\"start\"===e.event?o:c)(e.node)}\nfor(;e.length||t.length;){let t=l()\n;if(a+=s(n.substring(i,t[0].offset)),i=t[0].offset,t===e){r.reverse().forEach(c)\n;do{g(t.splice(0,1)[0]),t=l()}while(t===e&&t.length&&t[0].offset===i)\n;r.reverse().forEach(o)\n}else\"start\"===t[0].event?r.push(t[0].node):r.pop(),g(t.splice(0,1)[0])}\nreturn a+s(n.substr(i))})(i,H(a),n)}};function C(e){\nreturn e.nodeName.toLowerCase()}function H(e){const t=[];return function e(n,i){\nfor(let s=n.firstChild;s;s=s.nextSibling)3===s.nodeType?i+=s.nodeValue.length:1===s.nodeType&&(t.push({\nevent:\"start\",offset:i,node:s}),i=e(s,i),C(s).match(/br|hr|img|input/)||t.push({\nevent:\"stop\",offset:i,node:s}));return i}(e,0),t}const $={},U=e=>{\nconsole.error(e)},z=(e,...t)=>{console.log(\"WARN: \"+e,...t)},K=(e,t)=>{\n$[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),$[`${e}/${t}`]=!0)\n},G=s,V=a,W=Symbol(\"nomatch\");return(e=>{\nconst n=Object.create(null),s=Object.create(null),a=[];let r=!0\n;const l=/(^(<[^>]+>|\\t|)+|\\n)/gm,o=\"Could not find the language '{}', did you forget to load/include a language module?\",g={\ndisableAutodetect:!0,name:\"Plain text\",contains:[]};let u={\nnoHighlightRe:/^(no-?highlight)$/i,\nlanguageDetectRe:/\\blang(?:uage)?-([\\w-]+)\\b/i,classPrefix:\"hljs-\",\ntabReplace:null,useBR:!1,languages:null,__emitter:c};function h(e){\nreturn u.noHighlightRe.test(e)}function d(e,t,n,i){let s=\"\",a=\"\"\n;\"object\"==typeof t?(s=e,\nn=t.ignoreIllegals,a=t.language,i=void 0):(K(\"10.7.0\",\"highlight(lang, code, ...args) has been deprecated.\"),\nK(\"10.7.0\",\"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\"),\na=e,s=t);const r={code:s,language:a};M(\"before:highlight\",r)\n;const l=r.result?r.result:f(r.language,r.code,n,i)\n;return l.code=r.code,M(\"after:highlight\",l),l}function f(e,t,s,l){\nfunction c(e,t){const n=v.case_insensitive?t[0].toLowerCase():t[0]\n;return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]}\nfunction g(){null!=R.subLanguage?(()=>{if(\"\"===M)return;let e=null\n;if(\"string\"==typeof R.subLanguage){\nif(!n[R.subLanguage])return void k.addText(M)\n;e=f(R.subLanguage,M,!0,_[R.subLanguage]),_[R.subLanguage]=e.top\n}else e=p(M,R.subLanguage.length?R.subLanguage:null)\n;R.relevance>0&&(O+=e.relevance),k.addSublanguage(e.emitter,e.language)\n})():(()=>{if(!R.keywords)return void k.addText(M);let e=0\n;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M),n=\"\";for(;t;){\nn+=M.substring(e,t.index);const i=c(R,t);if(i){const[e,s]=i\n;if(k.addText(n),n=\"\",O+=s,e.startsWith(\"_\"))n+=t[0];else{\nconst n=v.classNameAliases[e]||e;k.addKeyword(t[0],n)}}else n+=t[0]\n;e=R.keywordPatternRe.lastIndex,t=R.keywordPatternRe.exec(M)}\nn+=M.substr(e),k.addText(n)})(),M=\"\"}function h(e){\nreturn e.className&&k.openNode(v.classNameAliases[e.className]||e.className),\nR=Object.create(e,{parent:{value:R}}),R}function d(e,t,n){let s=((e,t)=>{\nconst n=e&&e.exec(t);return n&&0===n.index})(e.endRe,n);if(s){if(e[\"on:end\"]){\nconst n=new i(e);e[\"on:end\"](t,n),n.isMatchIgnored&&(s=!1)}if(s){\nfor(;e.endsParent&&e.parent;)e=e.parent;return e}}\nif(e.endsWithParent)return d(e.parent,t,n)}function m(e){\nreturn 0===R.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function b(e){\nconst n=e[0],i=t.substr(e.index),s=d(R,e,i);if(!s)return W;const a=R\n;a.skip?M+=n:(a.returnEnd||a.excludeEnd||(M+=n),g(),a.excludeEnd&&(M=n));do{\nR.className&&k.closeNode(),R.skip||R.subLanguage||(O+=R.relevance),R=R.parent\n}while(R!==s.parent)\n;return s.starts&&(s.endSameAsBegin&&(s.starts.endRe=s.endRe),\nh(s.starts)),a.returnEnd?0:n.length}let E={};function x(n,a){const l=a&&a[0]\n;if(M+=n,null==l)return g(),0\n;if(\"begin\"===E.type&&\"end\"===a.type&&E.index===a.index&&\"\"===l){\nif(M+=t.slice(a.index,a.index+1),!r){const t=Error(\"0 width match regex\")\n;throw t.languageName=e,t.badRule=E.rule,t}return 1}\nif(E=a,\"begin\"===a.type)return function(e){\nconst t=e[0],n=e.rule,s=new i(n),a=[n.__beforeBegin,n[\"on:begin\"]]\n;for(const n of a)if(n&&(n(e,s),s.isMatchIgnored))return m(t)\n;return n&&n.endSameAsBegin&&(n.endRe=RegExp(t.replace(/[-/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"),\"m\")),\nn.skip?M+=t:(n.excludeBegin&&(M+=t),\ng(),n.returnBegin||n.excludeBegin||(M=t)),h(n),n.returnBegin?0:t.length}(a)\n;if(\"illegal\"===a.type&&!s){\nconst e=Error('Illegal lexeme \"'+l+'\" for mode \"'+(R.className||\"<unnamed>\")+'\"')\n;throw e.mode=R,e}if(\"end\"===a.type){const e=b(a);if(e!==W)return e}\nif(\"illegal\"===a.type&&\"\"===l)return 1\n;if(L>1e5&&L>3*a.index)throw Error(\"potential infinite loop, way more iterations than matches\")\n;return M+=l,l.length}const v=N(e)\n;if(!v)throw U(o.replace(\"{}\",e)),Error('Unknown language: \"'+e+'\"')\n;const w=T(v,{plugins:a});let y=\"\",R=l||w;const _={},k=new u.__emitter(u);(()=>{\nconst e=[];for(let t=R;t!==v;t=t.parent)t.className&&e.unshift(t.className)\n;e.forEach((e=>k.openNode(e)))})();let M=\"\",O=0,A=0,L=0,I=!1;try{\nfor(R.matcher.considerAll();;){\nL++,I?I=!1:R.matcher.considerAll(),R.matcher.lastIndex=A\n;const e=R.matcher.exec(t);if(!e)break;const n=x(t.substring(A,e.index),e)\n;A=e.index+n}return x(t.substr(A)),k.closeAllNodes(),k.finalize(),y=k.toHTML(),{\nrelevance:Math.floor(O),value:y,language:e,illegal:!1,emitter:k,top:R}}catch(n){\nif(n.message&&n.message.includes(\"Illegal\"))return{illegal:!0,illegalBy:{\nmsg:n.message,context:t.slice(A-100,A+100),mode:n.mode},sofar:y,relevance:0,\nvalue:G(t),emitter:k};if(r)return{illegal:!1,relevance:0,value:G(t),emitter:k,\nlanguage:e,top:R,errorRaised:n};throw n}}function p(e,t){\nt=t||u.languages||Object.keys(n);const i=(e=>{const t={relevance:0,\nemitter:new u.__emitter(u),value:G(e),illegal:!1,top:g}\n;return t.emitter.addText(e),t})(e),s=t.filter(N).filter(k).map((t=>f(t,e,!1)))\n;s.unshift(i);const a=s.sort(((e,t)=>{\nif(e.relevance!==t.relevance)return t.relevance-e.relevance\n;if(e.language&&t.language){if(N(e.language).supersetOf===t.language)return 1\n;if(N(t.language).supersetOf===e.language)return-1}return 0})),[r,l]=a,o=r\n;return o.second_best=l,o}const m={\"before:highlightElement\":({el:e})=>{\nu.useBR&&(e.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ /]*>/g,\"\\n\"))\n},\"after:highlightElement\":({result:e})=>{\nu.useBR&&(e.value=e.value.replace(/\\n/g,\"<br>\"))}},b=/^(<[^>]+>|\\t)+/gm,E={\n\"after:highlightElement\":({result:e})=>{\nu.tabReplace&&(e.value=e.value.replace(b,(e=>e.replace(/\\t/g,u.tabReplace))))}}\n;function x(e){let t=null;const n=(e=>{let t=e.className+\" \"\n;t+=e.parentNode?e.parentNode.className:\"\";const n=u.languageDetectRe.exec(t)\n;if(n){const t=N(n[1])\n;return t||(z(o.replace(\"{}\",n[1])),z(\"Falling back to no-highlight mode for this block.\",e)),\nt?n[1]:\"no-highlight\"}return t.split(/\\s+/).find((e=>h(e)||N(e)))})(e)\n;if(h(n))return;M(\"before:highlightElement\",{el:e,language:n}),t=e\n;const i=t.textContent,a=n?d(i,{language:n,ignoreIllegals:!0}):p(i)\n;M(\"after:highlightElement\",{el:e,result:a,text:i\n}),e.innerHTML=a.value,((e,t,n)=>{const i=t?s[t]:n\n;e.classList.add(\"hljs\"),i&&e.classList.add(i)})(e,n,a.language),e.result={\nlanguage:a.language,re:a.relevance,relavance:a.relevance\n},a.second_best&&(e.second_best={language:a.second_best.language,\nre:a.second_best.relevance,relavance:a.second_best.relevance})}const v=()=>{\nv.called||(v.called=!0,\nK(\"10.6.0\",\"initHighlighting() is deprecated.  Use highlightAll() instead.\"),\ndocument.querySelectorAll(\"pre code\").forEach(x))};let w=!1;function y(){\n\"loading\"!==document.readyState?document.querySelectorAll(\"pre code\").forEach(x):w=!0\n}function N(e){return e=(e||\"\").toLowerCase(),n[e]||n[s[e]]}\nfunction R(e,{languageName:t}){\"string\"==typeof e&&(e=[e]),e.forEach((e=>{\ns[e.toLowerCase()]=t}))}function k(e){const t=N(e)\n;return t&&!t.disableAutodetect}function M(e,t){const n=e;a.forEach((e=>{\ne[n]&&e[n](t)}))}\n\"undefined\"!=typeof window&&window.addEventListener&&window.addEventListener(\"DOMContentLoaded\",(()=>{\nw&&y()}),!1),Object.assign(e,{highlight:d,highlightAuto:p,highlightAll:y,\nfixMarkup:e=>{\nreturn K(\"10.2.0\",\"fixMarkup will be removed entirely in v11.0\"),K(\"10.2.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2534\"),\nt=e,\nu.tabReplace||u.useBR?t.replace(l,(e=>\"\\n\"===e?u.useBR?\"<br>\":e:u.tabReplace?e.replace(/\\t/g,u.tabReplace):e)):t\n;var t},highlightElement:x,\nhighlightBlock:e=>(K(\"10.7.0\",\"highlightBlock will be removed entirely in v12.0\"),\nK(\"10.7.0\",\"Please use highlightElement now.\"),x(e)),configure:e=>{\ne.useBR&&(K(\"10.3.0\",\"'useBR' will be removed entirely in v11.0\"),\nK(\"10.3.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2559\")),\nu=V(u,e)},initHighlighting:v,initHighlightingOnLoad:()=>{\nK(\"10.6.0\",\"initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.\"),\nw=!0},registerLanguage:(t,i)=>{let s=null;try{s=i(e)}catch(e){\nif(U(\"Language definition for '{}' could not be registered.\".replace(\"{}\",t)),\n!r)throw e;U(e),s=g}\ns.name||(s.name=t),n[t]=s,s.rawDefinition=i.bind(null,e),s.aliases&&R(s.aliases,{\nlanguageName:t})},unregisterLanguage:e=>{delete n[e]\n;for(const t of Object.keys(s))s[t]===e&&delete s[t]},\nlistLanguages:()=>Object.keys(n),getLanguage:N,registerAliases:R,\nrequireLanguage:e=>{\nK(\"10.4.0\",\"requireLanguage will be removed entirely in v11.\"),\nK(\"10.4.0\",\"Please see https://github.com/highlightjs/highlight.js/pull/2844\")\n;const t=N(e);if(t)return t\n;throw Error(\"The '{}' language is required, but not loaded.\".replace(\"{}\",e))},\nautoDetection:k,inherit:V,addPlugin:e=>{(e=>{\ne[\"before:highlightBlock\"]&&!e[\"before:highlightElement\"]&&(e[\"before:highlightElement\"]=t=>{\ne[\"before:highlightBlock\"](Object.assign({block:t.el},t))\n}),e[\"after:highlightBlock\"]&&!e[\"after:highlightElement\"]&&(e[\"after:highlightElement\"]=t=>{\ne[\"after:highlightBlock\"](Object.assign({block:t.el},t))})})(e),a.push(e)},\nvuePlugin:P(e).VuePlugin}),e.debugMode=()=>{r=!1},e.safeMode=()=>{r=!0\n},e.versionString=\"10.7.2\";for(const e in _)\"object\"==typeof _[e]&&t(_[e])\n;return Object.assign(e,_),e.addPlugin(m),e.addPlugin(D),e.addPlugin(E),e})({})\n}();\"object\"==typeof exports&&\"undefined\"!=typeof module&&(module.exports=hljs);hljs.registerLanguage(\"nginx\",(()=>{\"use strict\";return e=>{const n={\nclassName:\"variable\",variants:[{begin:/\\$\\d+/},{begin:/\\$\\{/,end:/\\}/},{\nbegin:/[$@]/+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{\n$pattern:\"[a-z/_]+\",\nliteral:\"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll\"\n},relevance:0,illegal:\"=>\",contains:[e.HASH_COMMENT_MODE,{className:\"string\",\ncontains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/\"/,end:/\"/},{begin:/'/,end:/'/\n}]},{begin:\"([a-z]+):/\",end:\"\\\\s\",endsWithParent:!0,excludeEnd:!0,contains:[n]\n},{className:\"regexp\",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:\"\\\\s\\\\^\",\nend:\"\\\\s|\\\\{|;\",returnEnd:!0},{begin:\"~\\\\*?\\\\s+\",end:\"\\\\s|\\\\{|;\",returnEnd:!0},{\nbegin:\"\\\\*(\\\\.[a-z\\\\-]+)+\"},{begin:\"([a-z\\\\-]+\\\\.)+\\\\*\"}]},{className:\"number\",\nbegin:\"\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b\"},{\nclassName:\"number\",begin:\"\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b\",relevance:0},n]};return{\nname:\"Nginx config\",aliases:[\"nginxconf\"],contains:[e.HASH_COMMENT_MODE,{\nbegin:e.UNDERSCORE_IDENT_RE+\"\\\\s+\\\\{\",returnBegin:!0,end:/\\{/,contains:[{\nclassName:\"section\",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{\nbegin:e.UNDERSCORE_IDENT_RE+\"\\\\s\",end:\";|\\\\{\",returnBegin:!0,contains:[{\nclassName:\"attribute\",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],\nillegal:\"[^\\\\s\\\\}]\"}}})());hljs.registerLanguage(\"less\",(()=>{\"use strict\"\n;const e=[\"a\",\"abbr\",\"address\",\"article\",\"aside\",\"audio\",\"b\",\"blockquote\",\"body\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"mark\",\"menu\",\"nav\",\"object\",\"ol\",\"p\",\"q\",\"quote\",\"samp\",\"section\",\"span\",\"strong\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"ul\",\"var\",\"video\"],t=[\"any-hover\",\"any-pointer\",\"aspect-ratio\",\"color\",\"color-gamut\",\"color-index\",\"device-aspect-ratio\",\"device-height\",\"device-width\",\"display-mode\",\"forced-colors\",\"grid\",\"height\",\"hover\",\"inverted-colors\",\"monochrome\",\"orientation\",\"overflow-block\",\"overflow-inline\",\"pointer\",\"prefers-color-scheme\",\"prefers-contrast\",\"prefers-reduced-motion\",\"prefers-reduced-transparency\",\"resolution\",\"scan\",\"scripting\",\"update\",\"width\",\"min-width\",\"max-width\",\"min-height\",\"max-height\"],i=[\"active\",\"any-link\",\"blank\",\"checked\",\"current\",\"default\",\"defined\",\"dir\",\"disabled\",\"drop\",\"empty\",\"enabled\",\"first\",\"first-child\",\"first-of-type\",\"fullscreen\",\"future\",\"focus\",\"focus-visible\",\"focus-within\",\"has\",\"host\",\"host-context\",\"hover\",\"indeterminate\",\"in-range\",\"invalid\",\"is\",\"lang\",\"last-child\",\"last-of-type\",\"left\",\"link\",\"local-link\",\"not\",\"nth-child\",\"nth-col\",\"nth-last-child\",\"nth-last-col\",\"nth-last-of-type\",\"nth-of-type\",\"only-child\",\"only-of-type\",\"optional\",\"out-of-range\",\"past\",\"placeholder-shown\",\"read-only\",\"read-write\",\"required\",\"right\",\"root\",\"scope\",\"target\",\"target-within\",\"user-invalid\",\"valid\",\"visited\",\"where\"],o=[\"after\",\"backdrop\",\"before\",\"cue\",\"cue-region\",\"first-letter\",\"first-line\",\"grammar-error\",\"marker\",\"part\",\"placeholder\",\"selection\",\"slotted\",\"spelling-error\"],n=[\"align-content\",\"align-items\",\"align-self\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"auto\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"clip-path\",\"color\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"cursor\",\"direction\",\"display\",\"empty-cells\",\"filter\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"font\",\"font-display\",\"font-family\",\"font-feature-settings\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-smoothing\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-variant-ligatures\",\"font-variation-settings\",\"font-weight\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"ime-mode\",\"inherit\",\"initial\",\"justify-content\",\"left\",\"letter-spacing\",\"line-height\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marks\",\"mask\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"none\",\"normal\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"perspective\",\"perspective-origin\",\"pointer-events\",\"position\",\"quotes\",\"resize\",\"right\",\"src\",\"tab-size\",\"table-layout\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-style\",\"text-indent\",\"text-overflow\",\"text-rendering\",\"text-shadow\",\"text-transform\",\"text-underline-position\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"white-space\",\"widows\",\"width\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\"].reverse(),r=i.concat(o)\n;return a=>{const s=(e=>({IMPORTANT:{className:\"meta\",begin:\"!important\"},\nHEXCOLOR:{className:\"number\",begin:\"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\"},\nATTRIBUTE_SELECTOR_MODE:{className:\"selector-attr\",begin:/\\[/,end:/\\]/,\nillegal:\"$\",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}\n}))(a),l=r,d=\"([\\\\w-]+|@\\\\{[\\\\w-]+\\\\})\",c=[],g=[],b=e=>({className:\"string\",\nbegin:\"~?\"+e+\".*?\"+e}),m=(e,t,i)=>({className:e,begin:t,relevance:i}),u={\n$pattern:/[a-z-]+/,keyword:\"and or not only\",attribute:t.join(\" \")},p={\nbegin:\"\\\\(\",end:\"\\\\)\",contains:g,keywords:u,relevance:0}\n;g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,b(\"'\"),b('\"'),a.CSS_NUMBER_MODE,{\nbegin:\"(url|data-uri)\\\\(\",starts:{className:\"string\",end:\"[\\\\)\\\\n]\",\nexcludeEnd:!0}\n},s.HEXCOLOR,p,m(\"variable\",\"@@?[\\\\w-]+\",10),m(\"variable\",\"@\\\\{[\\\\w-]+\\\\}\"),m(\"built_in\",\"~?`[^`]*?`\"),{\nclassName:\"attribute\",begin:\"[\\\\w-]+\\\\s*:\",end:\":\",returnBegin:!0,excludeEnd:!0\n},s.IMPORTANT);const f=g.concat({begin:/\\{/,end:/\\}/,contains:c}),h={\nbeginKeywords:\"when\",endsWithParent:!0,contains:[{beginKeywords:\"and not\"\n}].concat(g)},w={begin:d+\"\\\\s*:\",returnBegin:!0,end:/[;}]/,relevance:0,\ncontains:[{begin:/-(webkit|moz|ms|o)-/},{className:\"attribute\",\nbegin:\"\\\\b(\"+n.join(\"|\")+\")\\\\b\",end:/(?=:)/,starts:{endsWithParent:!0,\nillegal:\"[<=$]\",relevance:0,contains:g}}]},v={className:\"keyword\",\nbegin:\"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b\",\nstarts:{end:\"[;{}]\",keywords:u,returnEnd:!0,contains:g,relevance:0}},y={\nclassName:\"variable\",variants:[{begin:\"@[\\\\w-]+\\\\s*:\",relevance:15},{\nbegin:\"@[\\\\w-]+\"}],starts:{end:\"[;}]\",returnEnd:!0,contains:f}},k={variants:[{\nbegin:\"[\\\\.#:&\\\\[>]\",end:\"[;{}]\"},{begin:d,end:/\\{/}],returnBegin:!0,\nreturnEnd:!0,illegal:\"[<='$\\\"]\",relevance:0,\ncontains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,h,m(\"keyword\",\"all\\\\b\"),m(\"variable\",\"@\\\\{[\\\\w-]+\\\\}\"),{\nbegin:\"\\\\b(\"+e.join(\"|\")+\")\\\\b\",className:\"selector-tag\"\n},m(\"selector-tag\",d+\"%?\",0),m(\"selector-id\",\"#\"+d),m(\"selector-class\",\"\\\\.\"+d,0),m(\"selector-tag\",\"&\",0),s.ATTRIBUTE_SELECTOR_MODE,{\nclassName:\"selector-pseudo\",begin:\":(\"+i.join(\"|\")+\")\"},{\nclassName:\"selector-pseudo\",begin:\"::(\"+o.join(\"|\")+\")\"},{begin:\"\\\\(\",end:\"\\\\)\",\ncontains:f},{begin:\"!important\"}]},E={begin:`[\\\\w-]+:(:)?(${l.join(\"|\")})`,\nreturnBegin:!0,contains:[k]}\n;return c.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,v,y,E,w,k),{\nname:\"Less\",case_insensitive:!0,illegal:\"[=>'/<($\\\"]\",contains:c}}})());hljs.registerLanguage(\"python\",(()=>{\"use strict\";return e=>{const n={\n$pattern:/[A-Za-z]\\w+|__\\w+__/,\nkeyword:[\"and\",\"as\",\"assert\",\"async\",\"await\",\"break\",\"class\",\"continue\",\"def\",\"del\",\"elif\",\"else\",\"except\",\"finally\",\"for\",\"from\",\"global\",\"if\",\"import\",\"in\",\"is\",\"lambda\",\"nonlocal|10\",\"not\",\"or\",\"pass\",\"raise\",\"return\",\"try\",\"while\",\"with\",\"yield\"],\nbuilt_in:[\"__import__\",\"abs\",\"all\",\"any\",\"ascii\",\"bin\",\"bool\",\"breakpoint\",\"bytearray\",\"bytes\",\"callable\",\"chr\",\"classmethod\",\"compile\",\"complex\",\"delattr\",\"dict\",\"dir\",\"divmod\",\"enumerate\",\"eval\",\"exec\",\"filter\",\"float\",\"format\",\"frozenset\",\"getattr\",\"globals\",\"hasattr\",\"hash\",\"help\",\"hex\",\"id\",\"input\",\"int\",\"isinstance\",\"issubclass\",\"iter\",\"len\",\"list\",\"locals\",\"map\",\"max\",\"memoryview\",\"min\",\"next\",\"object\",\"oct\",\"open\",\"ord\",\"pow\",\"print\",\"property\",\"range\",\"repr\",\"reversed\",\"round\",\"set\",\"setattr\",\"slice\",\"sorted\",\"staticmethod\",\"str\",\"sum\",\"super\",\"tuple\",\"type\",\"vars\",\"zip\"],\nliteral:[\"__debug__\",\"Ellipsis\",\"False\",\"None\",\"NotImplemented\",\"True\"],\ntype:[\"Any\",\"Callable\",\"Coroutine\",\"Dict\",\"List\",\"Literal\",\"Generic\",\"Optional\",\"Sequence\",\"Set\",\"Tuple\",\"Type\",\"Union\"]\n},a={className:\"meta\",begin:/^(>>>|\\.\\.\\.) /},i={className:\"subst\",begin:/\\{/,\nend:/\\}/,keywords:n,illegal:/#/},s={begin:/\\{\\{/,relevance:0},t={\nclassName:\"string\",contains:[e.BACKSLASH_ESCAPE],variants:[{\nbegin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,\ncontains:[e.BACKSLASH_ESCAPE,a],relevance:10},{\nbegin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,end:/\"\"\"/,\ncontains:[e.BACKSLASH_ESCAPE,a],relevance:10},{\nbegin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,\ncontains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/([fF][rR]|[rR][fF]|[fF])\"\"\"/,\nend:/\"\"\"/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/([uU]|[rR])'/,end:/'/,\nrelevance:10},{begin:/([uU]|[rR])\"/,end:/\"/,relevance:10},{\nbegin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])\"/,\nend:/\"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,\ncontains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/([fF][rR]|[rR][fF]|[fF])\"/,end:/\"/,\ncontains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]\n},r=\"[0-9](_?[0-9])*\",l=`(\\\\b(${r}))?\\\\.(${r})|\\\\b(${r})\\\\.`,b={\nclassName:\"number\",relevance:0,variants:[{\nbegin:`(\\\\b(${r})|(${l}))[eE][+-]?(${r})[jJ]?\\\\b`},{begin:`(${l})[jJ]?`},{\nbegin:\"\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\\\b\"},{\nbegin:\"\\\\b0[bB](_?[01])+[lL]?\\\\b\"},{begin:\"\\\\b0[oO](_?[0-7])+[lL]?\\\\b\"},{\nbegin:\"\\\\b0[xX](_?[0-9a-fA-F])+[lL]?\\\\b\"},{begin:`\\\\b(${r})[jJ]\\\\b`}]},o={\nclassName:\"comment\",\nbegin:(d=/# type:/,((...e)=>e.map((e=>(e=>e?\"string\"==typeof e?e:e.source:null)(e))).join(\"\"))(\"(?=\",d,\")\")),\nend:/$/,keywords:n,contains:[{begin:/# type:/},{begin:/#/,end:/\\b\\B/,\nendsWithParent:!0}]},c={className:\"params\",variants:[{className:\"\",\nbegin:/\\(\\s*\\)/,skip:!0},{begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,\nkeywords:n,contains:[\"self\",a,b,t,e.HASH_COMMENT_MODE]}]};var d\n;return i.contains=[t,b,a],{name:\"Python\",aliases:[\"py\",\"gyp\",\"ipython\"],\nkeywords:n,illegal:/(<\\/|->|\\?)|=>/,contains:[a,b,{begin:/\\bself\\b/},{\nbeginKeywords:\"if\",relevance:0},t,o,e.HASH_COMMENT_MODE,{variants:[{\nclassName:\"function\",beginKeywords:\"def\"},{className:\"class\",\nbeginKeywords:\"class\"}],end:/:/,illegal:/[${=;\\n,]/,\ncontains:[e.UNDERSCORE_TITLE_MODE,c,{begin:/->/,endsWithParent:!0,keywords:n}]\n},{className:\"meta\",begin:/^[\\t ]*@/,end:/(?=#)|$/,contains:[b,c,t]}]}}})());hljs.registerLanguage(\"r\",(()=>{\"use strict\";function e(...e){return e.map((e=>{\nreturn(a=e)?\"string\"==typeof a?a:a.source:null;var a})).join(\"\")}return a=>{\nconst n=/(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;return{name:\"R\",\nillegal:/->/,keywords:{$pattern:n,\nkeyword:\"function if in break next repeat else for while\",\nliteral:\"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10\",\nbuilt_in:\"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm\"\n},compilerExtensions:[(a,n)=>{if(!a.beforeMatch)return\n;if(a.starts)throw Error(\"beforeMatch cannot be used with starts\")\n;const i=Object.assign({},a);Object.keys(a).forEach((e=>{delete a[e]\n})),a.begin=e(i.beforeMatch,e(\"(?=\",i.begin,\")\")),a.starts={relevance:0,\ncontains:[Object.assign(i,{endsParent:!0})]},a.relevance=0,delete i.beforeMatch\n}],contains:[a.COMMENT(/#'/,/$/,{contains:[{className:\"doctag\",\nbegin:\"@examples\",starts:{contains:[{begin:/\\n/},{begin:/#'\\s*(?=@[a-zA-Z]+)/,\nendsParent:!0},{begin:/#'/,end:/$/,excludeBegin:!0}]}},{className:\"doctag\",\nbegin:\"@param\",end:/$/,contains:[{className:\"variable\",variants:[{begin:n},{\nbegin:/`(?:\\\\.|[^`\\\\])+`/}],endsParent:!0}]},{className:\"doctag\",\nbegin:/@[a-zA-Z]+/},{className:\"meta-keyword\",begin:/\\\\[a-zA-Z]+/}]\n}),a.HASH_COMMENT_MODE,{className:\"string\",contains:[a.BACKSLASH_ESCAPE],\nvariants:[a.END_SAME_AS_BEGIN({begin:/[rR]\"(-*)\\(/,end:/\\)(-*)\"/\n}),a.END_SAME_AS_BEGIN({begin:/[rR]\"(-*)\\{/,end:/\\}(-*)\"/\n}),a.END_SAME_AS_BEGIN({begin:/[rR]\"(-*)\\[/,end:/\\](-*)\"/\n}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\(/,end:/\\)(-*)'/\n}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\{/,end:/\\}(-*)'/\n}),a.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\[/,end:/\\](-*)'/}),{begin:'\"',end:'\"',\nrelevance:0},{begin:\"'\",end:\"'\",relevance:0}]},{className:\"number\",relevance:0,\nbeforeMatch:/([^a-zA-Z0-9._])/,variants:[{\nmatch:/0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/},{\nmatch:/0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/},{\nmatch:/(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/}]},{begin:\"%\",end:\"%\"},{\nbegin:e(/[a-zA-Z][a-zA-Z_0-9]*/,\"\\\\s+<-\\\\s+\")},{begin:\"`\",end:\"`\",contains:[{\nbegin:/\\\\./}]}]}}})());hljs.registerLanguage(\"bash\",(()=>{\"use strict\";function e(...e){\nreturn e.map((e=>{return(s=e)?\"string\"==typeof s?s:s.source:null;var s\n})).join(\"\")}return s=>{const n={},t={begin:/\\$\\{/,end:/\\}/,contains:[\"self\",{\nbegin:/:-/,contains:[n]}]};Object.assign(n,{className:\"variable\",variants:[{\nbegin:e(/\\$[\\w\\d#@][\\w\\d_]*/,\"(?![\\\\w\\\\d])(?![$])\")},t]});const a={\nclassName:\"subst\",begin:/\\$\\(/,end:/\\)/,contains:[s.BACKSLASH_ESCAPE]},i={\nbegin:/<<-?\\s*(?=\\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\\w+)/,\nend:/(\\w+)/,className:\"string\"})]}},c={className:\"string\",begin:/\"/,end:/\"/,\ncontains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\\$\\(\\(/,\nend:/\\)\\)/,contains:[{begin:/\\d+#[0-9a-f]+/,className:\"number\"},s.NUMBER_MODE,n]\n},r=s.SHEBANG({binary:\"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)\",relevance:10\n}),l={className:\"function\",begin:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,returnBegin:!0,\ncontains:[s.inherit(s.TITLE_MODE,{begin:/\\w[\\w\\d_]*/})],relevance:0};return{\nname:\"Bash\",aliases:[\"sh\",\"zsh\"],keywords:{$pattern:/\\b[a-z._-]+\\b/,\nkeyword:\"if then else elif fi for while in do done case esac function\",\nliteral:\"true false\",\nbuilt_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\"\n},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:\"\",begin:/\\\\\"/\n},{className:\"string\",begin:/'/,end:/'/},n]}}})());hljs.registerLanguage(\"shell\",(()=>{\"use strict\";return s=>({\nname:\"Shell Session\",aliases:[\"console\"],contains:[{className:\"meta\",\nbegin:/^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#]/,starts:{end:/[^\\\\](?=\\s*$)/,\nsubLanguage:\"bash\"}}]})})());hljs.registerLanguage(\"gradle\",(()=>{\"use strict\";return e=>({name:\"Gradle\",\ncase_insensitive:!0,keywords:{\nkeyword:\"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine\"\n},\ncontains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]\n})})());hljs.registerLanguage(\"properties\",(()=>{\"use strict\";return e=>{\nvar n=\"[ \\\\t\\\\f]*\",a=n+\"[:=]\"+n,t=\"(\"+a+\"|[ \\\\t\\\\f]+)\",r=\"([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+\",s=\"([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+\",i={\nend:t,relevance:0,starts:{className:\"string\",end:/$/,relevance:0,contains:[{\nbegin:\"\\\\\\\\\\\\\\\\\"},{begin:\"\\\\\\\\\\\\n\"}]}};return{name:\".properties\",\ncase_insensitive:!0,illegal:/\\S/,contains:[e.COMMENT(\"^\\\\s*[!#]\",\"$\"),{\nreturnBegin:!0,variants:[{begin:r+a,relevance:1},{begin:r+\"[ \\\\t\\\\f]+\",\nrelevance:0}],contains:[{className:\"attr\",begin:r,endsParent:!0,relevance:0}],\nstarts:i},{begin:s+t,returnBegin:!0,relevance:0,contains:[{className:\"meta\",\nbegin:s,endsParent:!0,relevance:0}],starts:i},{className:\"attr\",relevance:0,\nbegin:s+n+\"$\"}]}}})());hljs.registerLanguage(\"xml\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function n(e){return a(\"(?=\",e,\")\")}\nfunction a(...n){return n.map((n=>e(n))).join(\"\")}function s(...n){\nreturn\"(\"+n.map((n=>e(n))).join(\"|\")+\")\"}return e=>{\nconst t=a(/[A-Z_]/,a(\"(\",/[A-Z0-9_.-]*:/,\")?\"),/[A-Z0-9_.-]*/),i={\nclassName:\"symbol\",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\\s/,\ncontains:[{className:\"meta-keyword\",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\\n/}]\n},c=e.inherit(r,{begin:/\\(/,end:/\\)/}),l=e.inherit(e.APOS_STRING_MODE,{\nclassName:\"meta-string\"}),g=e.inherit(e.QUOTE_STRING_MODE,{\nclassName:\"meta-string\"}),m={endsWithParent:!0,illegal:/</,relevance:0,\ncontains:[{className:\"attr\",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\\s*/,\nrelevance:0,contains:[{className:\"string\",endsParent:!0,variants:[{begin:/\"/,\nend:/\"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\\s\"'=<>`]+/}]}]\n}]};return{name:\"HTML, XML\",\naliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xjb\",\"xsd\",\"xsl\",\"plist\",\"wsf\",\"svg\"],\ncase_insensitive:!0,contains:[{className:\"meta\",begin:/<![a-z]/,end:/>/,\nrelevance:10,contains:[r,g,l,c,{begin:/\\[/,end:/\\]/,contains:[{className:\"meta\",\nbegin:/<![a-z]/,end:/>/,contains:[r,c,g,l]}]}]},e.COMMENT(/<!--/,/-->/,{\nrelevance:10}),{begin:/<!\\[CDATA\\[/,end:/\\]\\]>/,relevance:10},i,{\nclassName:\"meta\",begin:/<\\?xml/,end:/\\?>/,relevance:10},{className:\"tag\",\nbegin:/<style(?=\\s|>)/,end:/>/,keywords:{name:\"style\"},contains:[m],starts:{\nend:/<\\/style>/,returnEnd:!0,subLanguage:[\"css\",\"xml\"]}},{className:\"tag\",\nbegin:/<script(?=\\s|>)/,end:/>/,keywords:{name:\"script\"},contains:[m],starts:{\nend:/<\\/script>/,returnEnd:!0,subLanguage:[\"javascript\",\"handlebars\",\"xml\"]}},{\nclassName:\"tag\",begin:/<>|<\\/>/},{className:\"tag\",\nbegin:a(/</,n(a(t,s(/\\/>/,/>/,/\\s/)))),end:/\\/?>/,contains:[{className:\"name\",\nbegin:t,relevance:0,starts:m}]},{className:\"tag\",begin:a(/<\\//,n(a(t,/>/))),\ncontains:[{className:\"name\",begin:t,relevance:0},{begin:/>/,relevance:0,\nendsParent:!0}]}]}}})());hljs.registerLanguage(\"c\",(()=>{\"use strict\";function e(e){\nreturn((...e)=>e.map((e=>(e=>e?\"string\"==typeof e?e:e.source:null)(e))).join(\"\"))(\"(\",e,\")?\")\n}return t=>{const n=t.COMMENT(\"//\",\"$\",{contains:[{begin:/\\\\\\n/}]\n}),r=\"[a-zA-Z_]\\\\w*::\",a=\"(decltype\\\\(auto\\\\)|\"+e(r)+\"[a-zA-Z_]\\\\w*\"+e(\"<[^<>]+>\")+\")\",i={\nclassName:\"keyword\",begin:\"\\\\b[a-z\\\\d_]*_t\\\\b\"},s={className:\"string\",\nvariants:[{begin:'(u8?|U|L)?\"',end:'\"',illegal:\"\\\\n\",\ncontains:[t.BACKSLASH_ESCAPE]},{\nbegin:\"(u8?|U|L)?'(\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)|.)\",\nend:\"'\",illegal:\".\"},t.END_SAME_AS_BEGIN({\nbegin:/(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,end:/\\)([^()\\\\ ]{0,16})\"/})]},o={\nclassName:\"number\",variants:[{begin:\"\\\\b(0b[01']+)\"},{\nbegin:\"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\"\n},{\nbegin:\"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n}],relevance:0},c={className:\"meta\",begin:/#\\s*[a-z]+\\b/,end:/$/,keywords:{\n\"meta-keyword\":\"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\"\n},contains:[{begin:/\\\\\\n/,relevance:0},t.inherit(s,{className:\"meta-string\"}),{\nclassName:\"meta-string\",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},l={\nclassName:\"title\",begin:e(r)+t.IDENT_RE,relevance:0\n},d=e(r)+t.IDENT_RE+\"\\\\s*\\\\(\",u={\nkeyword:\"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq\",\nbuilt_in:\"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary\",\nliteral:\"true false nullptr NULL\"},m=[c,i,n,t.C_BLOCK_COMMENT_MODE,o,s],p={\nvariants:[{begin:/=/,end:/;/},{begin:/\\(/,end:/\\)/},{\nbeginKeywords:\"new throw return else\",end:/;/}],keywords:u,contains:m.concat([{\nbegin:/\\(/,end:/\\)/,keywords:u,contains:m.concat([\"self\"]),relevance:0}]),\nrelevance:0},_={className:\"function\",begin:\"(\"+a+\"[\\\\*&\\\\s]+)+\"+d,\nreturnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\\w\\s\\*&:<>.]/,\ncontains:[{begin:\"decltype\\\\(auto\\\\)\",keywords:u,relevance:0},{begin:d,\nreturnBegin:!0,contains:[l],relevance:0},{className:\"params\",begin:/\\(/,\nend:/\\)/,keywords:u,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,s,o,i,{\nbegin:/\\(/,end:/\\)/,keywords:u,relevance:0,\ncontains:[\"self\",n,t.C_BLOCK_COMMENT_MODE,s,o,i]}]\n},i,n,t.C_BLOCK_COMMENT_MODE,c]};return{name:\"C\",aliases:[\"h\"],keywords:u,\ndisableAutodetect:!0,illegal:\"</\",contains:[].concat(p,_,m,[c,{\nbegin:\"\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",\nend:\">\",keywords:u,contains:[\"self\",i]},{begin:t.IDENT_RE+\"::\",keywords:u},{\nclassName:\"class\",beginKeywords:\"enum class struct union\",end:/[{;:<>=]/,\ncontains:[{beginKeywords:\"final class struct\"},t.TITLE_MODE]}]),exports:{\npreprocessor:c,strings:s,keywords:u}}}})());hljs.registerLanguage(\"ruby\",(()=>{\"use strict\";function e(...e){\nreturn e.map((e=>{return(n=e)?\"string\"==typeof n?n:n.source:null;var n\n})).join(\"\")}return n=>{\nconst a=\"([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)\",i={\nkeyword:\"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__\",\nbuilt_in:\"proc lambda\",literal:\"true false nil\"},s={className:\"doctag\",\nbegin:\"@[A-Za-z]+\"},r={begin:\"#<\",end:\">\"},b=[n.COMMENT(\"#\",\"$\",{contains:[s]\n}),n.COMMENT(\"^=begin\",\"^=end\",{contains:[s],relevance:10\n}),n.COMMENT(\"^__END__\",\"\\\\n$\")],c={className:\"subst\",begin:/#\\{/,end:/\\}/,\nkeywords:i},t={className:\"string\",contains:[n.BACKSLASH_ESCAPE,c],variants:[{\nbegin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\\(/,\nend:/\\)/},{begin:/%[qQwWx]?\\[/,end:/\\]/},{begin:/%[qQwWx]?\\{/,end:/\\}/},{\nbegin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\\//,end:/\\//},{begin:/%[qQwWx]?%/,\nend:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\\|/,end:/\\|/},{\nbegin:/\\B\\?(\\\\\\d{1,3})/},{begin:/\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/},{\nbegin:/\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/},{\nbegin:/\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/},{\nbegin:/\\B\\?\\\\(c|C-)[\\x20-\\x7e]/},{begin:/\\B\\?\\\\?\\S/},{\nbegin:/<<[-~]?'?(\\w+)\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/,returnBegin:!0,contains:[{\nbegin:/<<[-~]?'?/},n.END_SAME_AS_BEGIN({begin:/(\\w+)/,end:/(\\w+)/,\ncontains:[n.BACKSLASH_ESCAPE,c]})]}]},g=\"[0-9](_?[0-9])*\",d={className:\"number\",\nrelevance:0,variants:[{\nbegin:`\\\\b([1-9](_?[0-9])*|0)(\\\\.(${g}))?([eE][+-]?(${g})|r)?i?\\\\b`},{\nbegin:\"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\"},{begin:\"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\"\n},{begin:\"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\"},{\nbegin:\"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\"},{\nbegin:\"\\\\b0(_?[0-7])+r?i?\\\\b\"}]},l={className:\"params\",begin:\"\\\\(\",end:\"\\\\)\",\nendsParent:!0,keywords:i},o=[t,{className:\"class\",beginKeywords:\"class module\",\nend:\"$|;\",illegal:/=/,contains:[n.inherit(n.TITLE_MODE,{\nbegin:\"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|!)?\"}),{begin:\"<\\\\s*\",contains:[{\nbegin:\"(\"+n.IDENT_RE+\"::)?\"+n.IDENT_RE,relevance:0}]}].concat(b)},{\nclassName:\"function\",begin:e(/def\\s+/,(_=a+\"\\\\s*(\\\\(|;|$)\",e(\"(?=\",_,\")\"))),\nrelevance:0,keywords:\"def\",end:\"$|;\",contains:[n.inherit(n.TITLE_MODE,{begin:a\n}),l].concat(b)},{begin:n.IDENT_RE+\"::\"},{className:\"symbol\",\nbegin:n.UNDERSCORE_IDENT_RE+\"(!|\\\\?)?:\",relevance:0},{className:\"symbol\",\nbegin:\":(?!\\\\s)\",contains:[t,{begin:a}],relevance:0},d,{className:\"variable\",\nbegin:\"(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])\"},{\nclassName:\"params\",begin:/\\|/,end:/\\|/,relevance:0,keywords:i},{\nbegin:\"(\"+n.RE_STARTERS_RE+\"|unless)\\\\s*\",keywords:\"unless\",contains:[{\nclassName:\"regexp\",contains:[n.BACKSLASH_ESCAPE,c],illegal:/\\n/,variants:[{\nbegin:\"/\",end:\"/[a-z]*\"},{begin:/%r\\{/,end:/\\}[a-z]*/},{begin:\"%r\\\\(\",\nend:\"\\\\)[a-z]*\"},{begin:\"%r!\",end:\"![a-z]*\"},{begin:\"%r\\\\[\",end:\"\\\\][a-z]*\"}]\n}].concat(r,b),relevance:0}].concat(r,b);var _;c.contains=o,l.contains=o\n;const E=[{begin:/^\\s*=>/,starts:{end:\"$\",contains:o}},{className:\"meta\",\nbegin:\"^([>?]>|[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>|(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>)(?=[ ])\",\nstarts:{end:\"$\",contains:o}}];return b.unshift(r),{name:\"Ruby\",\naliases:[\"rb\",\"gemspec\",\"podspec\",\"thor\",\"irb\"],keywords:i,illegal:/\\/\\*/,\ncontains:[n.SHEBANG({binary:\"ruby\"})].concat(E).concat(b).concat(o)}}})());hljs.registerLanguage(\"php\",(()=>{\"use strict\";return e=>{const r={\nclassName:\"variable\",\nbegin:\"\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(?![A-Za-z0-9])(?![$])\"},t={\nclassName:\"meta\",variants:[{begin:/<\\?php/,relevance:10},{begin:/<\\?[=]?/},{\nbegin:/\\?>/}]},a={className:\"subst\",variants:[{begin:/\\$\\w+/},{begin:/\\{\\$/,\nend:/\\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null\n}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,\ncontains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({\nbegin:/<<<[ \\t]*(\\w+)\\n/,end:/[ \\t]*(\\w+)\\b/,\ncontains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:\"string\",\ncontains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:\"b'\",end:\"'\"\n}),e.inherit(i,{begin:'b\"',end:'\"'}),i,n,o]},s={className:\"number\",variants:[{\nbegin:\"\\\\b0b[01]+(?:_[01]+)*\\\\b\"},{begin:\"\\\\b0o[0-7]+(?:_[0-7]+)*\\\\b\"},{\nbegin:\"\\\\b0x[\\\\da-f]+(?:_[\\\\da-f]+)*\\\\b\"},{\nbegin:\"(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:e[+-]?\\\\d+)?\"\n}],relevance:0},c={\nkeyword:\"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield\",\nliteral:\"false null true\",\nbuilt_in:\"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass\"\n};return{aliases:[\"php3\",\"php4\",\"php5\",\"php6\",\"php7\",\"php8\"],\ncase_insensitive:!0,keywords:c,\ncontains:[e.HASH_COMMENT_MODE,e.COMMENT(\"//\",\"$\",{contains:[t]\n}),e.COMMENT(\"/\\\\*\",\"\\\\*/\",{contains:[{className:\"doctag\",begin:\"@[A-Za-z]+\"}]\n}),e.COMMENT(\"__halt_compiler.+?;\",!1,{endsWithParent:!0,\nkeywords:\"__halt_compiler\"}),t,{className:\"keyword\",begin:/\\$this\\b/},r,{\nbegin:/(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{className:\"function\",\nrelevance:0,beginKeywords:\"fn function\",end:/[;{]/,excludeEnd:!0,\nillegal:\"[$%\\\\[]\",contains:[{beginKeywords:\"use\"},e.UNDERSCORE_TITLE_MODE,{\nbegin:\"=>\",endsParent:!0},{className:\"params\",begin:\"\\\\(\",end:\"\\\\)\",\nexcludeBegin:!0,excludeEnd:!0,keywords:c,\ncontains:[\"self\",r,e.C_BLOCK_COMMENT_MODE,l,s]}]},{className:\"class\",variants:[{\nbeginKeywords:\"enum\",illegal:/[($\"]/},{beginKeywords:\"class interface trait\",\nillegal:/[:($\"]/}],relevance:0,end:/\\{/,excludeEnd:!0,contains:[{\nbeginKeywords:\"extends implements\"},e.UNDERSCORE_TITLE_MODE]},{\nbeginKeywords:\"namespace\",relevance:0,end:\";\",illegal:/[.']/,\ncontains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:\"use\",relevance:0,end:\";\",\ncontains:[e.UNDERSCORE_TITLE_MODE]},l,s]}}})());hljs.registerLanguage(\"stata\",(()=>{\"use strict\";return e=>({name:\"Stata\",\naliases:[\"do\",\"ado\"],case_insensitive:!0,\nkeywords:\"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5\",\ncontains:[{className:\"symbol\",begin:/`[a-zA-Z0-9_]+'/},{className:\"variable\",\nbegin:/\\$\\{?[a-zA-Z0-9_]+\\}?/},{className:\"string\",variants:[{\nbegin:'`\"[^\\r\\n]*?\"\\''},{begin:'\"[^\\r\\n\"]*\"'}]},{className:\"built_in\",\nvariants:[{\nbegin:\"\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\()\"\n}]},e.COMMENT(\"^[ \\t]*\\\\*.*$\",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]\n})})());hljs.registerLanguage(\"typescript\",(()=>{\"use strict\"\n;const e=\"[A-Za-z$_][0-9A-Za-z$_]*\",n=[\"as\",\"in\",\"of\",\"if\",\"for\",\"while\",\"finally\",\"var\",\"new\",\"function\",\"do\",\"return\",\"void\",\"else\",\"break\",\"catch\",\"instanceof\",\"with\",\"throw\",\"case\",\"default\",\"try\",\"switch\",\"continue\",\"typeof\",\"delete\",\"let\",\"yield\",\"const\",\"class\",\"debugger\",\"async\",\"await\",\"static\",\"import\",\"from\",\"export\",\"extends\"],a=[\"true\",\"false\",\"null\",\"undefined\",\"NaN\",\"Infinity\"],s=[].concat([\"setInterval\",\"setTimeout\",\"clearInterval\",\"clearTimeout\",\"require\",\"exports\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"unescape\"],[\"arguments\",\"this\",\"super\",\"console\",\"window\",\"document\",\"localStorage\",\"module\",\"global\"],[\"Intl\",\"DataView\",\"Number\",\"Math\",\"Date\",\"String\",\"RegExp\",\"Object\",\"Function\",\"Boolean\",\"Error\",\"Symbol\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\",\"Proxy\",\"Reflect\",\"JSON\",\"Promise\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Float32Array\",\"Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"ArrayBuffer\",\"BigInt64Array\",\"BigUint64Array\",\"BigInt\"],[\"EvalError\",\"InternalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\"])\n;function t(e){return r(\"(?=\",e,\")\")}function r(...e){return e.map((e=>{\nreturn(n=e)?\"string\"==typeof n?n:n.source:null;var n})).join(\"\")}return i=>{\nconst c={$pattern:e,\nkeyword:n.concat([\"type\",\"namespace\",\"typedef\",\"interface\",\"public\",\"private\",\"protected\",\"implements\",\"declare\",\"abstract\",\"readonly\"]),\nliteral:a,\nbuilt_in:s.concat([\"any\",\"void\",\"number\",\"boolean\",\"string\",\"object\",\"never\",\"enum\"])\n},o={className:\"meta\",begin:\"@[A-Za-z$_][0-9A-Za-z$_]*\"},l=(e,n,a)=>{\nconst s=e.contains.findIndex((e=>e.label===n))\n;if(-1===s)throw Error(\"can not find mode to replace\");e.contains.splice(s,1,a)\n},b=(i=>{const c=e,o={begin:/<[A-Za-z0-9\\\\._:-]+/,\nend:/\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,isTrulyOpeningTag:(e,n)=>{\nconst a=e[0].length+e.index,s=e.input[a];\"<\"!==s?\">\"===s&&(((e,{after:n})=>{\nconst a=\"</\"+e[0].slice(1);return-1!==e.input.indexOf(a,n)})(e,{after:a\n})||n.ignoreMatch()):n.ignoreMatch()}},l={$pattern:e,keyword:n,literal:a,\nbuilt_in:s},b=\"\\\\.([0-9](_?[0-9])*)\",d=\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\",g={\nclassName:\"number\",variants:[{\nbegin:`(\\\\b(${d})((${b})|\\\\.)?|(${b}))[eE][+-]?([0-9](_?[0-9])*)\\\\b`},{\nbegin:`\\\\b(${d})\\\\b((${b})\\\\b|\\\\.)?|(${b})\\\\b`},{\nbegin:\"\\\\b(0|[1-9](_?[0-9])*)n\\\\b\"},{\nbegin:\"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"},{\nbegin:\"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"},{begin:\"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"},{\nbegin:\"\\\\b0[0-7]+n?\\\\b\"}],relevance:0},u={className:\"subst\",begin:\"\\\\$\\\\{\",\nend:\"\\\\}\",keywords:l,contains:[]},E={begin:\"html`\",end:\"\",starts:{end:\"`\",\nreturnEnd:!1,contains:[i.BACKSLASH_ESCAPE,u],subLanguage:\"xml\"}},m={\nbegin:\"css`\",end:\"\",starts:{end:\"`\",returnEnd:!1,\ncontains:[i.BACKSLASH_ESCAPE,u],subLanguage:\"css\"}},y={className:\"string\",\nbegin:\"`\",end:\"`\",contains:[i.BACKSLASH_ESCAPE,u]},_={className:\"comment\",\nvariants:[i.COMMENT(/\\/\\*\\*(?!\\/)/,\"\\\\*/\",{relevance:0,contains:[{\nclassName:\"doctag\",begin:\"@[A-Za-z]+\",contains:[{className:\"type\",begin:\"\\\\{\",\nend:\"\\\\}\",relevance:0},{className:\"variable\",begin:c+\"(?=\\\\s*(-)|$)\",\nendsParent:!0,relevance:0},{begin:/(?=[^\\n])\\s/,relevance:0}]}]\n}),i.C_BLOCK_COMMENT_MODE,i.C_LINE_COMMENT_MODE]\n},p=[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,E,m,y,g,i.REGEXP_MODE]\n;u.contains=p.concat({begin:/\\{/,end:/\\}/,keywords:l,contains:[\"self\"].concat(p)\n});const N=[].concat(_,u.contains),f=N.concat([{begin:/\\(/,end:/\\)/,keywords:l,\ncontains:[\"self\"].concat(N)}]),A={className:\"params\",begin:/\\(/,end:/\\)/,\nexcludeBegin:!0,excludeEnd:!0,keywords:l,contains:f};return{name:\"Javascript\",\naliases:[\"js\",\"jsx\",\"mjs\",\"cjs\"],keywords:l,exports:{PARAMS_CONTAINS:f},\nillegal:/#(?![$_A-z])/,contains:[i.SHEBANG({label:\"shebang\",binary:\"node\",\nrelevance:5}),{label:\"use_strict\",className:\"meta\",relevance:10,\nbegin:/^\\s*['\"]use (strict|asm)['\"]/\n},i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,E,m,y,_,g,{\nbegin:r(/[{,\\n]\\s*/,t(r(/(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,c+\"\\\\s*:\"))),\nrelevance:0,contains:[{className:\"attr\",begin:c+t(\"\\\\s*:\"),relevance:0}]},{\nbegin:\"(\"+i.RE_STARTERS_RE+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",\nkeywords:\"return throw case\",contains:[_,i.REGEXP_MODE,{className:\"function\",\nbegin:\"(\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)|\"+i.UNDERSCORE_IDENT_RE+\")\\\\s*=>\",\nreturnBegin:!0,end:\"\\\\s*=>\",contains:[{className:\"params\",variants:[{\nbegin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\(\\s*\\)/,skip:!0\n},{begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:f}]}]\n},{begin:/,/,relevance:0},{className:\"\",begin:/\\s/,end:/\\s*/,skip:!0},{\nvariants:[{begin:\"<>\",end:\"</>\"},{begin:o.begin,\"on:begin\":o.isTrulyOpeningTag,\nend:o.end}],subLanguage:\"xml\",contains:[{begin:o.begin,end:o.end,skip:!0,\ncontains:[\"self\"]}]}],relevance:0},{className:\"function\",\nbeginKeywords:\"function\",end:/[{;]/,excludeEnd:!0,keywords:l,\ncontains:[\"self\",i.inherit(i.TITLE_MODE,{begin:c}),A],illegal:/%/},{\nbeginKeywords:\"while if switch catch for\"},{className:\"function\",\nbegin:i.UNDERSCORE_IDENT_RE+\"\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)\\\\s*\\\\{\",\nreturnBegin:!0,contains:[A,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{\nbegin:\"\\\\.\"+c},{begin:\"\\\\$\"+c}],relevance:0},{className:\"class\",\nbeginKeywords:\"class\",end:/[{;=]/,excludeEnd:!0,illegal:/[:\"[\\]]/,contains:[{\nbeginKeywords:\"extends\"},i.UNDERSCORE_TITLE_MODE]},{begin:/\\b(?=constructor)/,\nend:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),\"self\",A]\n},{begin:\"(get|set)\\\\s+(?=\"+c+\"\\\\()\",end:/\\{/,keywords:\"get set\",\ncontains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\\(\\)/},A]},{begin:/\\$[(.]/}]\n}})(i)\n;return Object.assign(b.keywords,c),b.exports.PARAMS_CONTAINS.push(o),b.contains=b.contains.concat([o,{\nbeginKeywords:\"namespace\",end:/\\{/,excludeEnd:!0},{beginKeywords:\"interface\",\nend:/\\{/,excludeEnd:!0,keywords:\"interface extends\"\n}]),l(b,\"shebang\",i.SHEBANG()),l(b,\"use_strict\",{className:\"meta\",relevance:10,\nbegin:/^\\s*['\"]use strict['\"]/\n}),b.contains.find((e=>\"function\"===e.className)).relevance=0,Object.assign(b,{\nname:\"TypeScript\",aliases:[\"ts\",\"tsx\"]}),b}})());hljs.registerLanguage(\"vbnet\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function n(...n){\nreturn n.map((n=>e(n))).join(\"\")}function t(...n){\nreturn\"(\"+n.map((n=>e(n))).join(\"|\")+\")\"}return e=>{\nconst a=/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/,i=/\\d{4}-\\d{1,2}-\\d{1,2}/,s=/(\\d|1[012])(:\\d+){0,2} *(AM|PM)/,r=/\\d{1,2}(:\\d{1,2}){1,2}/,o={\nclassName:\"literal\",variants:[{begin:n(/# */,t(i,a),/ *#/)},{\nbegin:n(/# */,r,/ *#/)},{begin:n(/# */,s,/ *#/)},{\nbegin:n(/# */,t(i,a),/ +/,t(s,r),/ *#/)}]},l=e.COMMENT(/'''/,/$/,{contains:[{\nclassName:\"doctag\",begin:/<\\/?/,end:/>/}]}),c=e.COMMENT(null,/$/,{variants:[{\nbegin:/'/},{begin:/([\\t ]|^)REM(?=\\s)/}]});return{name:\"Visual Basic .NET\",\naliases:[\"vb\"],case_insensitive:!0,classNameAliases:{label:\"symbol\"},keywords:{\nkeyword:\"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield\",\nbuilt_in:\"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort\",\ntype:\"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort\",\nliteral:\"true false nothing\"},\nillegal:\"//|\\\\{|\\\\}|endif|gosub|variant|wend|^\\\\$ \",contains:[{\nclassName:\"string\",begin:/\"(\"\"|[^/n])\"C\\b/},{className:\"string\",begin:/\"/,\nend:/\"/,illegal:/\\n/,contains:[{begin:/\"\"/}]},o,{className:\"number\",relevance:0,\nvariants:[{begin:/\\b\\d[\\d_]*((\\.[\\d_]+(E[+-]?[\\d_]+)?)|(E[+-]?[\\d_]+))[RFD@!#]?/\n},{begin:/\\b\\d[\\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\\dA-F_]+((U?[SIL])|[%&])?/},{\nbegin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{\nclassName:\"label\",begin:/^\\w+:/},l,c,{className:\"meta\",\nbegin:/[\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\b/,\nend:/$/,keywords:{\n\"meta-keyword\":\"const disable else elseif enable end externalsource if region then\"\n},contains:[c]}]}}})());hljs.registerLanguage(\"fortran\",(()=>{\"use strict\";function e(...e){\nreturn e.map((e=>{return(n=e)?\"string\"==typeof n?n:n.source:null;var n\n})).join(\"\")}return n=>{const a={variants:[n.COMMENT(\"!\",\"$\",{relevance:0\n}),n.COMMENT(\"^C[ ]\",\"$\",{relevance:0}),n.COMMENT(\"^C$\",\"$\",{relevance:0})]\n},t=/(_[a-z_\\d]+)?/,i=/([de][+-]?\\d+)?/,c={className:\"number\",variants:[{\nbegin:e(/\\b\\d+/,/\\.(\\d*)/,i,t)},{begin:e(/\\b\\d+/,i,t)},{begin:e(/\\.\\d+/,i,t)}],\nrelevance:0},o={className:\"function\",\nbeginKeywords:\"subroutine function program\",illegal:\"[${=\\\\n]\",\ncontains:[n.UNDERSCORE_TITLE_MODE,{className:\"params\",begin:\"\\\\(\",end:\"\\\\)\"}]}\n;return{name:\"Fortran\",case_insensitive:!0,aliases:[\"f90\",\"f95\"],keywords:{\nliteral:\".False. .True.\",\nkeyword:\"kind do concurrent local shared while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock endassociate public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure impure integer real character complex logical codimension dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data\",\nbuilt_in:\"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image sync change team co_broadcast co_max co_min co_sum co_reduce\"\n},illegal:/\\/\\*/,contains:[{className:\"string\",relevance:0,\nvariants:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},o,{begin:/^C\\s*=(?!=)/,\nrelevance:0},a,c]}}})());hljs.registerLanguage(\"kotlin\",(()=>{\"use strict\"\n;var e=\"\\\\.([0-9](_*[0-9])*)\",n=\"[0-9a-fA-F](_*[0-9a-fA-F])*\",a={\nclassName:\"number\",variants:[{\nbegin:`(\\\\b([0-9](_*[0-9])*)((${e})|\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\b`\n},{begin:`\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)`},{\nbegin:`(${e})[fFdD]?\\\\b`},{begin:\"\\\\b([0-9](_*[0-9])*)[fFdD]\\\\b\"},{\nbegin:`\\\\b0[xX]((${n})\\\\.?|(${n})?\\\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\b`\n},{begin:\"\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b\"},{begin:`\\\\b0[xX](${n})[lL]?\\\\b`},{\nbegin:\"\\\\b0(_*[0-7])*[lL]?\\\\b\"},{begin:\"\\\\b0[bB][01](_*[01])*[lL]?\\\\b\"}],\nrelevance:0};return e=>{const n={\nkeyword:\"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual\",\nbuilt_in:\"Byte Short Char Int Long Boolean Float Double Void Unit Nothing\",\nliteral:\"true false null\"},i={className:\"symbol\",begin:e.UNDERSCORE_IDENT_RE+\"@\"\n},s={className:\"subst\",begin:/\\$\\{/,end:/\\}/,contains:[e.C_NUMBER_MODE]},t={\nclassName:\"variable\",begin:\"\\\\$\"+e.UNDERSCORE_IDENT_RE},r={className:\"string\",\nvariants:[{begin:'\"\"\"',end:'\"\"\"(?=[^\"])',contains:[t,s]},{begin:\"'\",end:\"'\",\nillegal:/\\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'\"',end:'\"',illegal:/\\n/,\ncontains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={\nclassName:\"meta\",\nbegin:\"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*\"+e.UNDERSCORE_IDENT_RE+\")?\"\n},c={className:\"meta\",begin:\"@\"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\\(/,\nend:/\\)/,contains:[e.inherit(r,{className:\"meta-string\"})]}]\n},o=a,b=e.COMMENT(\"/\\\\*\",\"\\\\*/\",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={\nvariants:[{className:\"type\",begin:e.UNDERSCORE_IDENT_RE},{begin:/\\(/,end:/\\)/,\ncontains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d],\n{name:\"Kotlin\",aliases:[\"kt\",\"kts\"],keywords:n,\ncontains:[e.COMMENT(\"/\\\\*\\\\*\",\"\\\\*/\",{relevance:0,contains:[{className:\"doctag\",\nbegin:\"@[A-Za-z]+\"}]}),e.C_LINE_COMMENT_MODE,b,{className:\"keyword\",\nbegin:/\\b(break|continue|return|this)\\b/,starts:{contains:[{className:\"symbol\",\nbegin:/@\\w+/}]}},i,l,c,{className:\"function\",beginKeywords:\"fun\",end:\"[(]|$\",\nreturnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{\nbegin:e.UNDERSCORE_IDENT_RE+\"\\\\s*\\\\(\",returnBegin:!0,relevance:0,\ncontains:[e.UNDERSCORE_TITLE_MODE]},{className:\"type\",begin:/</,end:/>/,\nkeywords:\"reified\",relevance:0},{className:\"params\",begin:/\\(/,end:/\\)/,\nendsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\\/]/,\nendsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0\n},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:\"class\",\nbeginKeywords:\"class interface trait\",end:/[:\\{(]|$/,excludeEnd:!0,\nillegal:\"extends implements\",contains:[{\nbeginKeywords:\"public protected internal private constructor\"\n},e.UNDERSCORE_TITLE_MODE,{className:\"type\",begin:/</,end:/>/,excludeBegin:!0,\nexcludeEnd:!0,relevance:0},{className:\"type\",begin:/[,:]\\s*/,end:/[<\\(,]|$/,\nexcludeBegin:!0,returnEnd:!0},l,c]},r,{className:\"meta\",begin:\"^#!/usr/bin/env\",\nend:\"$\",illegal:\"\\n\"},o]}}})());hljs.registerLanguage(\"erb\",(()=>{\"use strict\";return e=>({name:\"ERB\",\nsubLanguage:\"xml\",contains:[e.COMMENT(\"<%#\",\"%>\"),{begin:\"<%[%=-]?\",\nend:\"[%-]?%>\",subLanguage:\"ruby\",excludeBegin:!0,excludeEnd:!0}]})})());hljs.registerLanguage(\"mathematica\",(()=>{\"use strict\"\n;const e=[\"AASTriangle\",\"AbelianGroup\",\"Abort\",\"AbortKernels\",\"AbortProtect\",\"AbortScheduledTask\",\"Above\",\"Abs\",\"AbsArg\",\"AbsArgPlot\",\"Absolute\",\"AbsoluteCorrelation\",\"AbsoluteCorrelationFunction\",\"AbsoluteCurrentValue\",\"AbsoluteDashing\",\"AbsoluteFileName\",\"AbsoluteOptions\",\"AbsolutePointSize\",\"AbsoluteThickness\",\"AbsoluteTime\",\"AbsoluteTiming\",\"AcceptanceThreshold\",\"AccountingForm\",\"Accumulate\",\"Accuracy\",\"AccuracyGoal\",\"ActionDelay\",\"ActionMenu\",\"ActionMenuBox\",\"ActionMenuBoxOptions\",\"Activate\",\"Active\",\"ActiveClassification\",\"ActiveClassificationObject\",\"ActiveItem\",\"ActivePrediction\",\"ActivePredictionObject\",\"ActiveStyle\",\"AcyclicGraphQ\",\"AddOnHelpPath\",\"AddSides\",\"AddTo\",\"AddToSearchIndex\",\"AddUsers\",\"AdjacencyGraph\",\"AdjacencyList\",\"AdjacencyMatrix\",\"AdjacentMeshCells\",\"AdjustmentBox\",\"AdjustmentBoxOptions\",\"AdjustTimeSeriesForecast\",\"AdministrativeDivisionData\",\"AffineHalfSpace\",\"AffineSpace\",\"AffineStateSpaceModel\",\"AffineTransform\",\"After\",\"AggregatedEntityClass\",\"AggregationLayer\",\"AircraftData\",\"AirportData\",\"AirPressureData\",\"AirTemperatureData\",\"AiryAi\",\"AiryAiPrime\",\"AiryAiZero\",\"AiryBi\",\"AiryBiPrime\",\"AiryBiZero\",\"AlgebraicIntegerQ\",\"AlgebraicNumber\",\"AlgebraicNumberDenominator\",\"AlgebraicNumberNorm\",\"AlgebraicNumberPolynomial\",\"AlgebraicNumberTrace\",\"AlgebraicRules\",\"AlgebraicRulesData\",\"Algebraics\",\"AlgebraicUnitQ\",\"Alignment\",\"AlignmentMarker\",\"AlignmentPoint\",\"All\",\"AllowAdultContent\",\"AllowedCloudExtraParameters\",\"AllowedCloudParameterExtensions\",\"AllowedDimensions\",\"AllowedFrequencyRange\",\"AllowedHeads\",\"AllowGroupClose\",\"AllowIncomplete\",\"AllowInlineCells\",\"AllowKernelInitialization\",\"AllowLooseGrammar\",\"AllowReverseGroupClose\",\"AllowScriptLevelChange\",\"AllowVersionUpdate\",\"AllTrue\",\"Alphabet\",\"AlphabeticOrder\",\"AlphabeticSort\",\"AlphaChannel\",\"AlternateImage\",\"AlternatingFactorial\",\"AlternatingGroup\",\"AlternativeHypothesis\",\"Alternatives\",\"AltitudeMethod\",\"AmbientLight\",\"AmbiguityFunction\",\"AmbiguityList\",\"Analytic\",\"AnatomyData\",\"AnatomyForm\",\"AnatomyPlot3D\",\"AnatomySkinStyle\",\"AnatomyStyling\",\"AnchoredSearch\",\"And\",\"AndersonDarlingTest\",\"AngerJ\",\"AngleBisector\",\"AngleBracket\",\"AnglePath\",\"AnglePath3D\",\"AngleVector\",\"AngularGauge\",\"Animate\",\"AnimationCycleOffset\",\"AnimationCycleRepetitions\",\"AnimationDirection\",\"AnimationDisplayTime\",\"AnimationRate\",\"AnimationRepetitions\",\"AnimationRunning\",\"AnimationRunTime\",\"AnimationTimeIndex\",\"Animator\",\"AnimatorBox\",\"AnimatorBoxOptions\",\"AnimatorElements\",\"Annotate\",\"Annotation\",\"AnnotationDelete\",\"AnnotationKeys\",\"AnnotationRules\",\"AnnotationValue\",\"Annuity\",\"AnnuityDue\",\"Annulus\",\"AnomalyDetection\",\"AnomalyDetector\",\"AnomalyDetectorFunction\",\"Anonymous\",\"Antialiasing\",\"AntihermitianMatrixQ\",\"Antisymmetric\",\"AntisymmetricMatrixQ\",\"Antonyms\",\"AnyOrder\",\"AnySubset\",\"AnyTrue\",\"Apart\",\"ApartSquareFree\",\"APIFunction\",\"Appearance\",\"AppearanceElements\",\"AppearanceRules\",\"AppellF1\",\"Append\",\"AppendCheck\",\"AppendLayer\",\"AppendTo\",\"Apply\",\"ApplySides\",\"ArcCos\",\"ArcCosh\",\"ArcCot\",\"ArcCoth\",\"ArcCsc\",\"ArcCsch\",\"ArcCurvature\",\"ARCHProcess\",\"ArcLength\",\"ArcSec\",\"ArcSech\",\"ArcSin\",\"ArcSinDistribution\",\"ArcSinh\",\"ArcTan\",\"ArcTanh\",\"Area\",\"Arg\",\"ArgMax\",\"ArgMin\",\"ArgumentCountQ\",\"ARIMAProcess\",\"ArithmeticGeometricMean\",\"ARMAProcess\",\"Around\",\"AroundReplace\",\"ARProcess\",\"Array\",\"ArrayComponents\",\"ArrayDepth\",\"ArrayFilter\",\"ArrayFlatten\",\"ArrayMesh\",\"ArrayPad\",\"ArrayPlot\",\"ArrayQ\",\"ArrayResample\",\"ArrayReshape\",\"ArrayRules\",\"Arrays\",\"Arrow\",\"Arrow3DBox\",\"ArrowBox\",\"Arrowheads\",\"ASATriangle\",\"Ask\",\"AskAppend\",\"AskConfirm\",\"AskDisplay\",\"AskedQ\",\"AskedValue\",\"AskFunction\",\"AskState\",\"AskTemplateDisplay\",\"AspectRatio\",\"AspectRatioFixed\",\"Assert\",\"AssociateTo\",\"Association\",\"AssociationFormat\",\"AssociationMap\",\"AssociationQ\",\"AssociationThread\",\"AssumeDeterministic\",\"Assuming\",\"Assumptions\",\"AstronomicalData\",\"Asymptotic\",\"AsymptoticDSolveValue\",\"AsymptoticEqual\",\"AsymptoticEquivalent\",\"AsymptoticGreater\",\"AsymptoticGreaterEqual\",\"AsymptoticIntegrate\",\"AsymptoticLess\",\"AsymptoticLessEqual\",\"AsymptoticOutputTracker\",\"AsymptoticProduct\",\"AsymptoticRSolveValue\",\"AsymptoticSolve\",\"AsymptoticSum\",\"Asynchronous\",\"AsynchronousTaskObject\",\"AsynchronousTasks\",\"Atom\",\"AtomCoordinates\",\"AtomCount\",\"AtomDiagramCoordinates\",\"AtomList\",\"AtomQ\",\"AttentionLayer\",\"Attributes\",\"Audio\",\"AudioAmplify\",\"AudioAnnotate\",\"AudioAnnotationLookup\",\"AudioBlockMap\",\"AudioCapture\",\"AudioChannelAssignment\",\"AudioChannelCombine\",\"AudioChannelMix\",\"AudioChannels\",\"AudioChannelSeparate\",\"AudioData\",\"AudioDelay\",\"AudioDelete\",\"AudioDevice\",\"AudioDistance\",\"AudioEncoding\",\"AudioFade\",\"AudioFrequencyShift\",\"AudioGenerator\",\"AudioIdentify\",\"AudioInputDevice\",\"AudioInsert\",\"AudioInstanceQ\",\"AudioIntervals\",\"AudioJoin\",\"AudioLabel\",\"AudioLength\",\"AudioLocalMeasurements\",\"AudioLooping\",\"AudioLoudness\",\"AudioMeasurements\",\"AudioNormalize\",\"AudioOutputDevice\",\"AudioOverlay\",\"AudioPad\",\"AudioPan\",\"AudioPartition\",\"AudioPause\",\"AudioPitchShift\",\"AudioPlay\",\"AudioPlot\",\"AudioQ\",\"AudioRecord\",\"AudioReplace\",\"AudioResample\",\"AudioReverb\",\"AudioReverse\",\"AudioSampleRate\",\"AudioSpectralMap\",\"AudioSpectralTransformation\",\"AudioSplit\",\"AudioStop\",\"AudioStream\",\"AudioStreams\",\"AudioTimeStretch\",\"AudioTracks\",\"AudioTrim\",\"AudioType\",\"AugmentedPolyhedron\",\"AugmentedSymmetricPolynomial\",\"Authenticate\",\"Authentication\",\"AuthenticationDialog\",\"AutoAction\",\"Autocomplete\",\"AutocompletionFunction\",\"AutoCopy\",\"AutocorrelationTest\",\"AutoDelete\",\"AutoEvaluateEvents\",\"AutoGeneratedPackage\",\"AutoIndent\",\"AutoIndentSpacings\",\"AutoItalicWords\",\"AutoloadPath\",\"AutoMatch\",\"Automatic\",\"AutomaticImageSize\",\"AutoMultiplicationSymbol\",\"AutoNumberFormatting\",\"AutoOpenNotebooks\",\"AutoOpenPalettes\",\"AutoQuoteCharacters\",\"AutoRefreshed\",\"AutoRemove\",\"AutorunSequencing\",\"AutoScaling\",\"AutoScroll\",\"AutoSpacing\",\"AutoStyleOptions\",\"AutoStyleWords\",\"AutoSubmitting\",\"Axes\",\"AxesEdge\",\"AxesLabel\",\"AxesOrigin\",\"AxesStyle\",\"AxiomaticTheory\",\"Axis\",\"BabyMonsterGroupB\",\"Back\",\"Background\",\"BackgroundAppearance\",\"BackgroundTasksSettings\",\"Backslash\",\"Backsubstitution\",\"Backward\",\"Ball\",\"Band\",\"BandpassFilter\",\"BandstopFilter\",\"BarabasiAlbertGraphDistribution\",\"BarChart\",\"BarChart3D\",\"BarcodeImage\",\"BarcodeRecognize\",\"BaringhausHenzeTest\",\"BarLegend\",\"BarlowProschanImportance\",\"BarnesG\",\"BarOrigin\",\"BarSpacing\",\"BartlettHannWindow\",\"BartlettWindow\",\"BaseDecode\",\"BaseEncode\",\"BaseForm\",\"Baseline\",\"BaselinePosition\",\"BaseStyle\",\"BasicRecurrentLayer\",\"BatchNormalizationLayer\",\"BatchSize\",\"BatesDistribution\",\"BattleLemarieWavelet\",\"BayesianMaximization\",\"BayesianMaximizationObject\",\"BayesianMinimization\",\"BayesianMinimizationObject\",\"Because\",\"BeckmannDistribution\",\"Beep\",\"Before\",\"Begin\",\"BeginDialogPacket\",\"BeginFrontEndInteractionPacket\",\"BeginPackage\",\"BellB\",\"BellY\",\"Below\",\"BenfordDistribution\",\"BeniniDistribution\",\"BenktanderGibratDistribution\",\"BenktanderWeibullDistribution\",\"BernoulliB\",\"BernoulliDistribution\",\"BernoulliGraphDistribution\",\"BernoulliProcess\",\"BernsteinBasis\",\"BesselFilterModel\",\"BesselI\",\"BesselJ\",\"BesselJZero\",\"BesselK\",\"BesselY\",\"BesselYZero\",\"Beta\",\"BetaBinomialDistribution\",\"BetaDistribution\",\"BetaNegativeBinomialDistribution\",\"BetaPrimeDistribution\",\"BetaRegularized\",\"Between\",\"BetweennessCentrality\",\"BeveledPolyhedron\",\"BezierCurve\",\"BezierCurve3DBox\",\"BezierCurve3DBoxOptions\",\"BezierCurveBox\",\"BezierCurveBoxOptions\",\"BezierFunction\",\"BilateralFilter\",\"Binarize\",\"BinaryDeserialize\",\"BinaryDistance\",\"BinaryFormat\",\"BinaryImageQ\",\"BinaryRead\",\"BinaryReadList\",\"BinarySerialize\",\"BinaryWrite\",\"BinCounts\",\"BinLists\",\"Binomial\",\"BinomialDistribution\",\"BinomialProcess\",\"BinormalDistribution\",\"BiorthogonalSplineWavelet\",\"BipartiteGraphQ\",\"BiquadraticFilterModel\",\"BirnbaumImportance\",\"BirnbaumSaundersDistribution\",\"BitAnd\",\"BitClear\",\"BitGet\",\"BitLength\",\"BitNot\",\"BitOr\",\"BitSet\",\"BitShiftLeft\",\"BitShiftRight\",\"BitXor\",\"BiweightLocation\",\"BiweightMidvariance\",\"Black\",\"BlackmanHarrisWindow\",\"BlackmanNuttallWindow\",\"BlackmanWindow\",\"Blank\",\"BlankForm\",\"BlankNullSequence\",\"BlankSequence\",\"Blend\",\"Block\",\"BlockchainAddressData\",\"BlockchainBase\",\"BlockchainBlockData\",\"BlockchainContractValue\",\"BlockchainData\",\"BlockchainGet\",\"BlockchainKeyEncode\",\"BlockchainPut\",\"BlockchainTokenData\",\"BlockchainTransaction\",\"BlockchainTransactionData\",\"BlockchainTransactionSign\",\"BlockchainTransactionSubmit\",\"BlockMap\",\"BlockRandom\",\"BlomqvistBeta\",\"BlomqvistBetaTest\",\"Blue\",\"Blur\",\"BodePlot\",\"BohmanWindow\",\"Bold\",\"Bond\",\"BondCount\",\"BondList\",\"BondQ\",\"Bookmarks\",\"Boole\",\"BooleanConsecutiveFunction\",\"BooleanConvert\",\"BooleanCountingFunction\",\"BooleanFunction\",\"BooleanGraph\",\"BooleanMaxterms\",\"BooleanMinimize\",\"BooleanMinterms\",\"BooleanQ\",\"BooleanRegion\",\"Booleans\",\"BooleanStrings\",\"BooleanTable\",\"BooleanVariables\",\"BorderDimensions\",\"BorelTannerDistribution\",\"Bottom\",\"BottomHatTransform\",\"BoundaryDiscretizeGraphics\",\"BoundaryDiscretizeRegion\",\"BoundaryMesh\",\"BoundaryMeshRegion\",\"BoundaryMeshRegionQ\",\"BoundaryStyle\",\"BoundedRegionQ\",\"BoundingRegion\",\"Bounds\",\"Box\",\"BoxBaselineShift\",\"BoxData\",\"BoxDimensions\",\"Boxed\",\"Boxes\",\"BoxForm\",\"BoxFormFormatTypes\",\"BoxFrame\",\"BoxID\",\"BoxMargins\",\"BoxMatrix\",\"BoxObject\",\"BoxRatios\",\"BoxRotation\",\"BoxRotationPoint\",\"BoxStyle\",\"BoxWhiskerChart\",\"Bra\",\"BracketingBar\",\"BraKet\",\"BrayCurtisDistance\",\"BreadthFirstScan\",\"Break\",\"BridgeData\",\"BrightnessEqualize\",\"BroadcastStationData\",\"Brown\",\"BrownForsytheTest\",\"BrownianBridgeProcess\",\"BrowserCategory\",\"BSplineBasis\",\"BSplineCurve\",\"BSplineCurve3DBox\",\"BSplineCurve3DBoxOptions\",\"BSplineCurveBox\",\"BSplineCurveBoxOptions\",\"BSplineFunction\",\"BSplineSurface\",\"BSplineSurface3DBox\",\"BSplineSurface3DBoxOptions\",\"BubbleChart\",\"BubbleChart3D\",\"BubbleScale\",\"BubbleSizes\",\"BuildingData\",\"BulletGauge\",\"BusinessDayQ\",\"ButterflyGraph\",\"ButterworthFilterModel\",\"Button\",\"ButtonBar\",\"ButtonBox\",\"ButtonBoxOptions\",\"ButtonCell\",\"ButtonContents\",\"ButtonData\",\"ButtonEvaluator\",\"ButtonExpandable\",\"ButtonFrame\",\"ButtonFunction\",\"ButtonMargins\",\"ButtonMinHeight\",\"ButtonNote\",\"ButtonNotebook\",\"ButtonSource\",\"ButtonStyle\",\"ButtonStyleMenuListing\",\"Byte\",\"ByteArray\",\"ByteArrayFormat\",\"ByteArrayQ\",\"ByteArrayToString\",\"ByteCount\",\"ByteOrdering\",\"C\",\"CachedValue\",\"CacheGraphics\",\"CachePersistence\",\"CalendarConvert\",\"CalendarData\",\"CalendarType\",\"Callout\",\"CalloutMarker\",\"CalloutStyle\",\"CallPacket\",\"CanberraDistance\",\"Cancel\",\"CancelButton\",\"CandlestickChart\",\"CanonicalGraph\",\"CanonicalizePolygon\",\"CanonicalizePolyhedron\",\"CanonicalName\",\"CanonicalWarpingCorrespondence\",\"CanonicalWarpingDistance\",\"CantorMesh\",\"CantorStaircase\",\"Cap\",\"CapForm\",\"CapitalDifferentialD\",\"Capitalize\",\"CapsuleShape\",\"CaptureRunning\",\"CardinalBSplineBasis\",\"CarlemanLinearize\",\"CarmichaelLambda\",\"CaseOrdering\",\"Cases\",\"CaseSensitive\",\"Cashflow\",\"Casoratian\",\"Catalan\",\"CatalanNumber\",\"Catch\",\"CategoricalDistribution\",\"Catenate\",\"CatenateLayer\",\"CauchyDistribution\",\"CauchyWindow\",\"CayleyGraph\",\"CDF\",\"CDFDeploy\",\"CDFInformation\",\"CDFWavelet\",\"Ceiling\",\"CelestialSystem\",\"Cell\",\"CellAutoOverwrite\",\"CellBaseline\",\"CellBoundingBox\",\"CellBracketOptions\",\"CellChangeTimes\",\"CellContents\",\"CellContext\",\"CellDingbat\",\"CellDynamicExpression\",\"CellEditDuplicate\",\"CellElementsBoundingBox\",\"CellElementSpacings\",\"CellEpilog\",\"CellEvaluationDuplicate\",\"CellEvaluationFunction\",\"CellEvaluationLanguage\",\"CellEventActions\",\"CellFrame\",\"CellFrameColor\",\"CellFrameLabelMargins\",\"CellFrameLabels\",\"CellFrameMargins\",\"CellGroup\",\"CellGroupData\",\"CellGrouping\",\"CellGroupingRules\",\"CellHorizontalScrolling\",\"CellID\",\"CellLabel\",\"CellLabelAutoDelete\",\"CellLabelMargins\",\"CellLabelPositioning\",\"CellLabelStyle\",\"CellLabelTemplate\",\"CellMargins\",\"CellObject\",\"CellOpen\",\"CellPrint\",\"CellProlog\",\"Cells\",\"CellSize\",\"CellStyle\",\"CellTags\",\"CellularAutomaton\",\"CensoredDistribution\",\"Censoring\",\"Center\",\"CenterArray\",\"CenterDot\",\"CentralFeature\",\"CentralMoment\",\"CentralMomentGeneratingFunction\",\"Cepstrogram\",\"CepstrogramArray\",\"CepstrumArray\",\"CForm\",\"ChampernowneNumber\",\"ChangeOptions\",\"ChannelBase\",\"ChannelBrokerAction\",\"ChannelDatabin\",\"ChannelHistoryLength\",\"ChannelListen\",\"ChannelListener\",\"ChannelListeners\",\"ChannelListenerWait\",\"ChannelObject\",\"ChannelPreSendFunction\",\"ChannelReceiverFunction\",\"ChannelSend\",\"ChannelSubscribers\",\"ChanVeseBinarize\",\"Character\",\"CharacterCounts\",\"CharacterEncoding\",\"CharacterEncodingsPath\",\"CharacteristicFunction\",\"CharacteristicPolynomial\",\"CharacterName\",\"CharacterNormalize\",\"CharacterRange\",\"Characters\",\"ChartBaseStyle\",\"ChartElementData\",\"ChartElementDataFunction\",\"ChartElementFunction\",\"ChartElements\",\"ChartLabels\",\"ChartLayout\",\"ChartLegends\",\"ChartStyle\",\"Chebyshev1FilterModel\",\"Chebyshev2FilterModel\",\"ChebyshevDistance\",\"ChebyshevT\",\"ChebyshevU\",\"Check\",\"CheckAbort\",\"CheckAll\",\"Checkbox\",\"CheckboxBar\",\"CheckboxBox\",\"CheckboxBoxOptions\",\"ChemicalData\",\"ChessboardDistance\",\"ChiDistribution\",\"ChineseRemainder\",\"ChiSquareDistribution\",\"ChoiceButtons\",\"ChoiceDialog\",\"CholeskyDecomposition\",\"Chop\",\"ChromaticityPlot\",\"ChromaticityPlot3D\",\"ChromaticPolynomial\",\"Circle\",\"CircleBox\",\"CircleDot\",\"CircleMinus\",\"CirclePlus\",\"CirclePoints\",\"CircleThrough\",\"CircleTimes\",\"CirculantGraph\",\"CircularOrthogonalMatrixDistribution\",\"CircularQuaternionMatrixDistribution\",\"CircularRealMatrixDistribution\",\"CircularSymplecticMatrixDistribution\",\"CircularUnitaryMatrixDistribution\",\"Circumsphere\",\"CityData\",\"ClassifierFunction\",\"ClassifierInformation\",\"ClassifierMeasurements\",\"ClassifierMeasurementsObject\",\"Classify\",\"ClassPriors\",\"Clear\",\"ClearAll\",\"ClearAttributes\",\"ClearCookies\",\"ClearPermissions\",\"ClearSystemCache\",\"ClebschGordan\",\"ClickPane\",\"Clip\",\"ClipboardNotebook\",\"ClipFill\",\"ClippingStyle\",\"ClipPlanes\",\"ClipPlanesStyle\",\"ClipRange\",\"Clock\",\"ClockGauge\",\"ClockwiseContourIntegral\",\"Close\",\"Closed\",\"CloseKernels\",\"ClosenessCentrality\",\"Closing\",\"ClosingAutoSave\",\"ClosingEvent\",\"ClosingSaveDialog\",\"CloudAccountData\",\"CloudBase\",\"CloudConnect\",\"CloudConnections\",\"CloudDeploy\",\"CloudDirectory\",\"CloudDisconnect\",\"CloudEvaluate\",\"CloudExport\",\"CloudExpression\",\"CloudExpressions\",\"CloudFunction\",\"CloudGet\",\"CloudImport\",\"CloudLoggingData\",\"CloudObject\",\"CloudObjectInformation\",\"CloudObjectInformationData\",\"CloudObjectNameFormat\",\"CloudObjects\",\"CloudObjectURLType\",\"CloudPublish\",\"CloudPut\",\"CloudRenderingMethod\",\"CloudSave\",\"CloudShare\",\"CloudSubmit\",\"CloudSymbol\",\"CloudUnshare\",\"CloudUserID\",\"ClusterClassify\",\"ClusterDissimilarityFunction\",\"ClusteringComponents\",\"ClusteringTree\",\"CMYKColor\",\"Coarse\",\"CodeAssistOptions\",\"Coefficient\",\"CoefficientArrays\",\"CoefficientDomain\",\"CoefficientList\",\"CoefficientRules\",\"CoifletWavelet\",\"Collect\",\"Colon\",\"ColonForm\",\"ColorBalance\",\"ColorCombine\",\"ColorConvert\",\"ColorCoverage\",\"ColorData\",\"ColorDataFunction\",\"ColorDetect\",\"ColorDistance\",\"ColorFunction\",\"ColorFunctionScaling\",\"Colorize\",\"ColorNegate\",\"ColorOutput\",\"ColorProfileData\",\"ColorQ\",\"ColorQuantize\",\"ColorReplace\",\"ColorRules\",\"ColorSelectorSettings\",\"ColorSeparate\",\"ColorSetter\",\"ColorSetterBox\",\"ColorSetterBoxOptions\",\"ColorSlider\",\"ColorsNear\",\"ColorSpace\",\"ColorToneMapping\",\"Column\",\"ColumnAlignments\",\"ColumnBackgrounds\",\"ColumnForm\",\"ColumnLines\",\"ColumnsEqual\",\"ColumnSpacings\",\"ColumnWidths\",\"CombinedEntityClass\",\"CombinerFunction\",\"CometData\",\"CommonDefaultFormatTypes\",\"Commonest\",\"CommonestFilter\",\"CommonName\",\"CommonUnits\",\"CommunityBoundaryStyle\",\"CommunityGraphPlot\",\"CommunityLabels\",\"CommunityRegionStyle\",\"CompanyData\",\"CompatibleUnitQ\",\"CompilationOptions\",\"CompilationTarget\",\"Compile\",\"Compiled\",\"CompiledCodeFunction\",\"CompiledFunction\",\"CompilerOptions\",\"Complement\",\"ComplementedEntityClass\",\"CompleteGraph\",\"CompleteGraphQ\",\"CompleteKaryTree\",\"CompletionsListPacket\",\"Complex\",\"ComplexContourPlot\",\"Complexes\",\"ComplexExpand\",\"ComplexInfinity\",\"ComplexityFunction\",\"ComplexListPlot\",\"ComplexPlot\",\"ComplexPlot3D\",\"ComplexRegionPlot\",\"ComplexStreamPlot\",\"ComplexVectorPlot\",\"ComponentMeasurements\",\"ComponentwiseContextMenu\",\"Compose\",\"ComposeList\",\"ComposeSeries\",\"CompositeQ\",\"Composition\",\"CompoundElement\",\"CompoundExpression\",\"CompoundPoissonDistribution\",\"CompoundPoissonProcess\",\"CompoundRenewalProcess\",\"Compress\",\"CompressedData\",\"CompressionLevel\",\"ComputeUncertainty\",\"Condition\",\"ConditionalExpression\",\"Conditioned\",\"Cone\",\"ConeBox\",\"ConfidenceLevel\",\"ConfidenceRange\",\"ConfidenceTransform\",\"ConfigurationPath\",\"ConformAudio\",\"ConformImages\",\"Congruent\",\"ConicHullRegion\",\"ConicHullRegion3DBox\",\"ConicHullRegionBox\",\"ConicOptimization\",\"Conjugate\",\"ConjugateTranspose\",\"Conjunction\",\"Connect\",\"ConnectedComponents\",\"ConnectedGraphComponents\",\"ConnectedGraphQ\",\"ConnectedMeshComponents\",\"ConnectedMoleculeComponents\",\"ConnectedMoleculeQ\",\"ConnectionSettings\",\"ConnectLibraryCallbackFunction\",\"ConnectSystemModelComponents\",\"ConnesWindow\",\"ConoverTest\",\"ConsoleMessage\",\"ConsoleMessagePacket\",\"Constant\",\"ConstantArray\",\"ConstantArrayLayer\",\"ConstantImage\",\"ConstantPlusLayer\",\"ConstantRegionQ\",\"Constants\",\"ConstantTimesLayer\",\"ConstellationData\",\"ConstrainedMax\",\"ConstrainedMin\",\"Construct\",\"Containing\",\"ContainsAll\",\"ContainsAny\",\"ContainsExactly\",\"ContainsNone\",\"ContainsOnly\",\"ContentFieldOptions\",\"ContentLocationFunction\",\"ContentObject\",\"ContentPadding\",\"ContentsBoundingBox\",\"ContentSelectable\",\"ContentSize\",\"Context\",\"ContextMenu\",\"Contexts\",\"ContextToFileName\",\"Continuation\",\"Continue\",\"ContinuedFraction\",\"ContinuedFractionK\",\"ContinuousAction\",\"ContinuousMarkovProcess\",\"ContinuousTask\",\"ContinuousTimeModelQ\",\"ContinuousWaveletData\",\"ContinuousWaveletTransform\",\"ContourDetect\",\"ContourGraphics\",\"ContourIntegral\",\"ContourLabels\",\"ContourLines\",\"ContourPlot\",\"ContourPlot3D\",\"Contours\",\"ContourShading\",\"ContourSmoothing\",\"ContourStyle\",\"ContraharmonicMean\",\"ContrastiveLossLayer\",\"Control\",\"ControlActive\",\"ControlAlignment\",\"ControlGroupContentsBox\",\"ControllabilityGramian\",\"ControllabilityMatrix\",\"ControllableDecomposition\",\"ControllableModelQ\",\"ControllerDuration\",\"ControllerInformation\",\"ControllerInformationData\",\"ControllerLinking\",\"ControllerManipulate\",\"ControllerMethod\",\"ControllerPath\",\"ControllerState\",\"ControlPlacement\",\"ControlsRendering\",\"ControlType\",\"Convergents\",\"ConversionOptions\",\"ConversionRules\",\"ConvertToBitmapPacket\",\"ConvertToPostScript\",\"ConvertToPostScriptPacket\",\"ConvexHullMesh\",\"ConvexPolygonQ\",\"ConvexPolyhedronQ\",\"ConvolutionLayer\",\"Convolve\",\"ConwayGroupCo1\",\"ConwayGroupCo2\",\"ConwayGroupCo3\",\"CookieFunction\",\"Cookies\",\"CoordinateBoundingBox\",\"CoordinateBoundingBoxArray\",\"CoordinateBounds\",\"CoordinateBoundsArray\",\"CoordinateChartData\",\"CoordinatesToolOptions\",\"CoordinateTransform\",\"CoordinateTransformData\",\"CoprimeQ\",\"Coproduct\",\"CopulaDistribution\",\"Copyable\",\"CopyDatabin\",\"CopyDirectory\",\"CopyFile\",\"CopyTag\",\"CopyToClipboard\",\"CornerFilter\",\"CornerNeighbors\",\"Correlation\",\"CorrelationDistance\",\"CorrelationFunction\",\"CorrelationTest\",\"Cos\",\"Cosh\",\"CoshIntegral\",\"CosineDistance\",\"CosineWindow\",\"CosIntegral\",\"Cot\",\"Coth\",\"Count\",\"CountDistinct\",\"CountDistinctBy\",\"CounterAssignments\",\"CounterBox\",\"CounterBoxOptions\",\"CounterClockwiseContourIntegral\",\"CounterEvaluator\",\"CounterFunction\",\"CounterIncrements\",\"CounterStyle\",\"CounterStyleMenuListing\",\"CountRoots\",\"CountryData\",\"Counts\",\"CountsBy\",\"Covariance\",\"CovarianceEstimatorFunction\",\"CovarianceFunction\",\"CoxianDistribution\",\"CoxIngersollRossProcess\",\"CoxModel\",\"CoxModelFit\",\"CramerVonMisesTest\",\"CreateArchive\",\"CreateCellID\",\"CreateChannel\",\"CreateCloudExpression\",\"CreateDatabin\",\"CreateDataStructure\",\"CreateDataSystemModel\",\"CreateDialog\",\"CreateDirectory\",\"CreateDocument\",\"CreateFile\",\"CreateIntermediateDirectories\",\"CreateManagedLibraryExpression\",\"CreateNotebook\",\"CreatePacletArchive\",\"CreatePalette\",\"CreatePalettePacket\",\"CreatePermissionsGroup\",\"CreateScheduledTask\",\"CreateSearchIndex\",\"CreateSystemModel\",\"CreateTemporary\",\"CreateUUID\",\"CreateWindow\",\"CriterionFunction\",\"CriticalityFailureImportance\",\"CriticalitySuccessImportance\",\"CriticalSection\",\"Cross\",\"CrossEntropyLossLayer\",\"CrossingCount\",\"CrossingDetect\",\"CrossingPolygon\",\"CrossMatrix\",\"Csc\",\"Csch\",\"CTCLossLayer\",\"Cube\",\"CubeRoot\",\"Cubics\",\"Cuboid\",\"CuboidBox\",\"Cumulant\",\"CumulantGeneratingFunction\",\"Cup\",\"CupCap\",\"Curl\",\"CurlyDoubleQuote\",\"CurlyQuote\",\"CurrencyConvert\",\"CurrentDate\",\"CurrentImage\",\"CurrentlySpeakingPacket\",\"CurrentNotebookImage\",\"CurrentScreenImage\",\"CurrentValue\",\"Curry\",\"CurryApplied\",\"CurvatureFlowFilter\",\"CurveClosed\",\"Cyan\",\"CycleGraph\",\"CycleIndexPolynomial\",\"Cycles\",\"CyclicGroup\",\"Cyclotomic\",\"Cylinder\",\"CylinderBox\",\"CylindricalDecomposition\",\"D\",\"DagumDistribution\",\"DamData\",\"DamerauLevenshteinDistance\",\"DampingFactor\",\"Darker\",\"Dashed\",\"Dashing\",\"DatabaseConnect\",\"DatabaseDisconnect\",\"DatabaseReference\",\"Databin\",\"DatabinAdd\",\"DatabinRemove\",\"Databins\",\"DatabinUpload\",\"DataCompression\",\"DataDistribution\",\"DataRange\",\"DataReversed\",\"Dataset\",\"DatasetDisplayPanel\",\"DataStructure\",\"DataStructureQ\",\"Date\",\"DateBounds\",\"Dated\",\"DateDelimiters\",\"DateDifference\",\"DatedUnit\",\"DateFormat\",\"DateFunction\",\"DateHistogram\",\"DateInterval\",\"DateList\",\"DateListLogPlot\",\"DateListPlot\",\"DateListStepPlot\",\"DateObject\",\"DateObjectQ\",\"DateOverlapsQ\",\"DatePattern\",\"DatePlus\",\"DateRange\",\"DateReduction\",\"DateString\",\"DateTicksFormat\",\"DateValue\",\"DateWithinQ\",\"DaubechiesWavelet\",\"DavisDistribution\",\"DawsonF\",\"DayCount\",\"DayCountConvention\",\"DayHemisphere\",\"DaylightQ\",\"DayMatchQ\",\"DayName\",\"DayNightTerminator\",\"DayPlus\",\"DayRange\",\"DayRound\",\"DeBruijnGraph\",\"DeBruijnSequence\",\"Debug\",\"DebugTag\",\"Decapitalize\",\"Decimal\",\"DecimalForm\",\"DeclareKnownSymbols\",\"DeclarePackage\",\"Decompose\",\"DeconvolutionLayer\",\"Decrement\",\"Decrypt\",\"DecryptFile\",\"DedekindEta\",\"DeepSpaceProbeData\",\"Default\",\"DefaultAxesStyle\",\"DefaultBaseStyle\",\"DefaultBoxStyle\",\"DefaultButton\",\"DefaultColor\",\"DefaultControlPlacement\",\"DefaultDuplicateCellStyle\",\"DefaultDuration\",\"DefaultElement\",\"DefaultFaceGridsStyle\",\"DefaultFieldHintStyle\",\"DefaultFont\",\"DefaultFontProperties\",\"DefaultFormatType\",\"DefaultFormatTypeForStyle\",\"DefaultFrameStyle\",\"DefaultFrameTicksStyle\",\"DefaultGridLinesStyle\",\"DefaultInlineFormatType\",\"DefaultInputFormatType\",\"DefaultLabelStyle\",\"DefaultMenuStyle\",\"DefaultNaturalLanguage\",\"DefaultNewCellStyle\",\"DefaultNewInlineCellStyle\",\"DefaultNotebook\",\"DefaultOptions\",\"DefaultOutputFormatType\",\"DefaultPrintPrecision\",\"DefaultStyle\",\"DefaultStyleDefinitions\",\"DefaultTextFormatType\",\"DefaultTextInlineFormatType\",\"DefaultTicksStyle\",\"DefaultTooltipStyle\",\"DefaultValue\",\"DefaultValues\",\"Defer\",\"DefineExternal\",\"DefineInputStreamMethod\",\"DefineOutputStreamMethod\",\"DefineResourceFunction\",\"Definition\",\"Degree\",\"DegreeCentrality\",\"DegreeGraphDistribution\",\"DegreeLexicographic\",\"DegreeReverseLexicographic\",\"DEigensystem\",\"DEigenvalues\",\"Deinitialization\",\"Del\",\"DelaunayMesh\",\"Delayed\",\"Deletable\",\"Delete\",\"DeleteAnomalies\",\"DeleteBorderComponents\",\"DeleteCases\",\"DeleteChannel\",\"DeleteCloudExpression\",\"DeleteContents\",\"DeleteDirectory\",\"DeleteDuplicates\",\"DeleteDuplicatesBy\",\"DeleteFile\",\"DeleteMissing\",\"DeleteObject\",\"DeletePermissionsKey\",\"DeleteSearchIndex\",\"DeleteSmallComponents\",\"DeleteStopwords\",\"DeleteWithContents\",\"DeletionWarning\",\"DelimitedArray\",\"DelimitedSequence\",\"Delimiter\",\"DelimiterFlashTime\",\"DelimiterMatching\",\"Delimiters\",\"DeliveryFunction\",\"Dendrogram\",\"Denominator\",\"DensityGraphics\",\"DensityHistogram\",\"DensityPlot\",\"DensityPlot3D\",\"DependentVariables\",\"Deploy\",\"Deployed\",\"Depth\",\"DepthFirstScan\",\"Derivative\",\"DerivativeFilter\",\"DerivedKey\",\"DescriptorStateSpace\",\"DesignMatrix\",\"DestroyAfterEvaluation\",\"Det\",\"DeviceClose\",\"DeviceConfigure\",\"DeviceExecute\",\"DeviceExecuteAsynchronous\",\"DeviceObject\",\"DeviceOpen\",\"DeviceOpenQ\",\"DeviceRead\",\"DeviceReadBuffer\",\"DeviceReadLatest\",\"DeviceReadList\",\"DeviceReadTimeSeries\",\"Devices\",\"DeviceStreams\",\"DeviceWrite\",\"DeviceWriteBuffer\",\"DGaussianWavelet\",\"DiacriticalPositioning\",\"Diagonal\",\"DiagonalizableMatrixQ\",\"DiagonalMatrix\",\"DiagonalMatrixQ\",\"Dialog\",\"DialogIndent\",\"DialogInput\",\"DialogLevel\",\"DialogNotebook\",\"DialogProlog\",\"DialogReturn\",\"DialogSymbols\",\"Diamond\",\"DiamondMatrix\",\"DiceDissimilarity\",\"DictionaryLookup\",\"DictionaryWordQ\",\"DifferenceDelta\",\"DifferenceOrder\",\"DifferenceQuotient\",\"DifferenceRoot\",\"DifferenceRootReduce\",\"Differences\",\"DifferentialD\",\"DifferentialRoot\",\"DifferentialRootReduce\",\"DifferentiatorFilter\",\"DigitalSignature\",\"DigitBlock\",\"DigitBlockMinimum\",\"DigitCharacter\",\"DigitCount\",\"DigitQ\",\"DihedralAngle\",\"DihedralGroup\",\"Dilation\",\"DimensionalCombinations\",\"DimensionalMeshComponents\",\"DimensionReduce\",\"DimensionReducerFunction\",\"DimensionReduction\",\"Dimensions\",\"DiracComb\",\"DiracDelta\",\"DirectedEdge\",\"DirectedEdges\",\"DirectedGraph\",\"DirectedGraphQ\",\"DirectedInfinity\",\"Direction\",\"Directive\",\"Directory\",\"DirectoryName\",\"DirectoryQ\",\"DirectoryStack\",\"DirichletBeta\",\"DirichletCharacter\",\"DirichletCondition\",\"DirichletConvolve\",\"DirichletDistribution\",\"DirichletEta\",\"DirichletL\",\"DirichletLambda\",\"DirichletTransform\",\"DirichletWindow\",\"DisableConsolePrintPacket\",\"DisableFormatting\",\"DiscreteAsymptotic\",\"DiscreteChirpZTransform\",\"DiscreteConvolve\",\"DiscreteDelta\",\"DiscreteHadamardTransform\",\"DiscreteIndicator\",\"DiscreteLimit\",\"DiscreteLQEstimatorGains\",\"DiscreteLQRegulatorGains\",\"DiscreteLyapunovSolve\",\"DiscreteMarkovProcess\",\"DiscreteMaxLimit\",\"DiscreteMinLimit\",\"DiscretePlot\",\"DiscretePlot3D\",\"DiscreteRatio\",\"DiscreteRiccatiSolve\",\"DiscreteShift\",\"DiscreteTimeModelQ\",\"DiscreteUniformDistribution\",\"DiscreteVariables\",\"DiscreteWaveletData\",\"DiscreteWaveletPacketTransform\",\"DiscreteWaveletTransform\",\"DiscretizeGraphics\",\"DiscretizeRegion\",\"Discriminant\",\"DisjointQ\",\"Disjunction\",\"Disk\",\"DiskBox\",\"DiskMatrix\",\"DiskSegment\",\"Dispatch\",\"DispatchQ\",\"DispersionEstimatorFunction\",\"Display\",\"DisplayAllSteps\",\"DisplayEndPacket\",\"DisplayFlushImagePacket\",\"DisplayForm\",\"DisplayFunction\",\"DisplayPacket\",\"DisplayRules\",\"DisplaySetSizePacket\",\"DisplayString\",\"DisplayTemporary\",\"DisplayWith\",\"DisplayWithRef\",\"DisplayWithVariable\",\"DistanceFunction\",\"DistanceMatrix\",\"DistanceTransform\",\"Distribute\",\"Distributed\",\"DistributedContexts\",\"DistributeDefinitions\",\"DistributionChart\",\"DistributionDomain\",\"DistributionFitTest\",\"DistributionParameterAssumptions\",\"DistributionParameterQ\",\"Dithering\",\"Div\",\"Divergence\",\"Divide\",\"DivideBy\",\"Dividers\",\"DivideSides\",\"Divisible\",\"Divisors\",\"DivisorSigma\",\"DivisorSum\",\"DMSList\",\"DMSString\",\"Do\",\"DockedCells\",\"DocumentGenerator\",\"DocumentGeneratorInformation\",\"DocumentGeneratorInformationData\",\"DocumentGenerators\",\"DocumentNotebook\",\"DocumentWeightingRules\",\"Dodecahedron\",\"DomainRegistrationInformation\",\"DominantColors\",\"DOSTextFormat\",\"Dot\",\"DotDashed\",\"DotEqual\",\"DotLayer\",\"DotPlusLayer\",\"Dotted\",\"DoubleBracketingBar\",\"DoubleContourIntegral\",\"DoubleDownArrow\",\"DoubleLeftArrow\",\"DoubleLeftRightArrow\",\"DoubleLeftTee\",\"DoubleLongLeftArrow\",\"DoubleLongLeftRightArrow\",\"DoubleLongRightArrow\",\"DoubleRightArrow\",\"DoubleRightTee\",\"DoubleUpArrow\",\"DoubleUpDownArrow\",\"DoubleVerticalBar\",\"DoublyInfinite\",\"Down\",\"DownArrow\",\"DownArrowBar\",\"DownArrowUpArrow\",\"DownLeftRightVector\",\"DownLeftTeeVector\",\"DownLeftVector\",\"DownLeftVectorBar\",\"DownRightTeeVector\",\"DownRightVector\",\"DownRightVectorBar\",\"Downsample\",\"DownTee\",\"DownTeeArrow\",\"DownValues\",\"DragAndDrop\",\"DrawEdges\",\"DrawFrontFaces\",\"DrawHighlighted\",\"Drop\",\"DropoutLayer\",\"DSolve\",\"DSolveValue\",\"Dt\",\"DualLinearProgramming\",\"DualPolyhedron\",\"DualSystemsModel\",\"DumpGet\",\"DumpSave\",\"DuplicateFreeQ\",\"Duration\",\"Dynamic\",\"DynamicBox\",\"DynamicBoxOptions\",\"DynamicEvaluationTimeout\",\"DynamicGeoGraphics\",\"DynamicImage\",\"DynamicLocation\",\"DynamicModule\",\"DynamicModuleBox\",\"DynamicModuleBoxOptions\",\"DynamicModuleParent\",\"DynamicModuleValues\",\"DynamicName\",\"DynamicNamespace\",\"DynamicReference\",\"DynamicSetting\",\"DynamicUpdating\",\"DynamicWrapper\",\"DynamicWrapperBox\",\"DynamicWrapperBoxOptions\",\"E\",\"EarthImpactData\",\"EarthquakeData\",\"EccentricityCentrality\",\"Echo\",\"EchoFunction\",\"EclipseType\",\"EdgeAdd\",\"EdgeBetweennessCentrality\",\"EdgeCapacity\",\"EdgeCapForm\",\"EdgeColor\",\"EdgeConnectivity\",\"EdgeContract\",\"EdgeCost\",\"EdgeCount\",\"EdgeCoverQ\",\"EdgeCycleMatrix\",\"EdgeDashing\",\"EdgeDelete\",\"EdgeDetect\",\"EdgeForm\",\"EdgeIndex\",\"EdgeJoinForm\",\"EdgeLabeling\",\"EdgeLabels\",\"EdgeLabelStyle\",\"EdgeList\",\"EdgeOpacity\",\"EdgeQ\",\"EdgeRenderingFunction\",\"EdgeRules\",\"EdgeShapeFunction\",\"EdgeStyle\",\"EdgeTaggedGraph\",\"EdgeTaggedGraphQ\",\"EdgeTags\",\"EdgeThickness\",\"EdgeWeight\",\"EdgeWeightedGraphQ\",\"Editable\",\"EditButtonSettings\",\"EditCellTagsSettings\",\"EditDistance\",\"EffectiveInterest\",\"Eigensystem\",\"Eigenvalues\",\"EigenvectorCentrality\",\"Eigenvectors\",\"Element\",\"ElementData\",\"ElementwiseLayer\",\"ElidedForms\",\"Eliminate\",\"EliminationOrder\",\"Ellipsoid\",\"EllipticE\",\"EllipticExp\",\"EllipticExpPrime\",\"EllipticF\",\"EllipticFilterModel\",\"EllipticK\",\"EllipticLog\",\"EllipticNomeQ\",\"EllipticPi\",\"EllipticReducedHalfPeriods\",\"EllipticTheta\",\"EllipticThetaPrime\",\"EmbedCode\",\"EmbeddedHTML\",\"EmbeddedService\",\"EmbeddingLayer\",\"EmbeddingObject\",\"EmitSound\",\"EmphasizeSyntaxErrors\",\"EmpiricalDistribution\",\"Empty\",\"EmptyGraphQ\",\"EmptyRegion\",\"EnableConsolePrintPacket\",\"Enabled\",\"Encode\",\"Encrypt\",\"EncryptedObject\",\"EncryptFile\",\"End\",\"EndAdd\",\"EndDialogPacket\",\"EndFrontEndInteractionPacket\",\"EndOfBuffer\",\"EndOfFile\",\"EndOfLine\",\"EndOfString\",\"EndPackage\",\"EngineEnvironment\",\"EngineeringForm\",\"Enter\",\"EnterExpressionPacket\",\"EnterTextPacket\",\"Entity\",\"EntityClass\",\"EntityClassList\",\"EntityCopies\",\"EntityFunction\",\"EntityGroup\",\"EntityInstance\",\"EntityList\",\"EntityPrefetch\",\"EntityProperties\",\"EntityProperty\",\"EntityPropertyClass\",\"EntityRegister\",\"EntityStore\",\"EntityStores\",\"EntityTypeName\",\"EntityUnregister\",\"EntityValue\",\"Entropy\",\"EntropyFilter\",\"Environment\",\"Epilog\",\"EpilogFunction\",\"Equal\",\"EqualColumns\",\"EqualRows\",\"EqualTilde\",\"EqualTo\",\"EquatedTo\",\"Equilibrium\",\"EquirippleFilterKernel\",\"Equivalent\",\"Erf\",\"Erfc\",\"Erfi\",\"ErlangB\",\"ErlangC\",\"ErlangDistribution\",\"Erosion\",\"ErrorBox\",\"ErrorBoxOptions\",\"ErrorNorm\",\"ErrorPacket\",\"ErrorsDialogSettings\",\"EscapeRadius\",\"EstimatedBackground\",\"EstimatedDistribution\",\"EstimatedProcess\",\"EstimatorGains\",\"EstimatorRegulator\",\"EuclideanDistance\",\"EulerAngles\",\"EulerCharacteristic\",\"EulerE\",\"EulerGamma\",\"EulerianGraphQ\",\"EulerMatrix\",\"EulerPhi\",\"Evaluatable\",\"Evaluate\",\"Evaluated\",\"EvaluatePacket\",\"EvaluateScheduledTask\",\"EvaluationBox\",\"EvaluationCell\",\"EvaluationCompletionAction\",\"EvaluationData\",\"EvaluationElements\",\"EvaluationEnvironment\",\"EvaluationMode\",\"EvaluationMonitor\",\"EvaluationNotebook\",\"EvaluationObject\",\"EvaluationOrder\",\"Evaluator\",\"EvaluatorNames\",\"EvenQ\",\"EventData\",\"EventEvaluator\",\"EventHandler\",\"EventHandlerTag\",\"EventLabels\",\"EventSeries\",\"ExactBlackmanWindow\",\"ExactNumberQ\",\"ExactRootIsolation\",\"ExampleData\",\"Except\",\"ExcludedForms\",\"ExcludedLines\",\"ExcludedPhysicalQuantities\",\"ExcludePods\",\"Exclusions\",\"ExclusionsStyle\",\"Exists\",\"Exit\",\"ExitDialog\",\"ExoplanetData\",\"Exp\",\"Expand\",\"ExpandAll\",\"ExpandDenominator\",\"ExpandFileName\",\"ExpandNumerator\",\"Expectation\",\"ExpectationE\",\"ExpectedValue\",\"ExpGammaDistribution\",\"ExpIntegralE\",\"ExpIntegralEi\",\"ExpirationDate\",\"Exponent\",\"ExponentFunction\",\"ExponentialDistribution\",\"ExponentialFamily\",\"ExponentialGeneratingFunction\",\"ExponentialMovingAverage\",\"ExponentialPowerDistribution\",\"ExponentPosition\",\"ExponentStep\",\"Export\",\"ExportAutoReplacements\",\"ExportByteArray\",\"ExportForm\",\"ExportPacket\",\"ExportString\",\"Expression\",\"ExpressionCell\",\"ExpressionGraph\",\"ExpressionPacket\",\"ExpressionUUID\",\"ExpToTrig\",\"ExtendedEntityClass\",\"ExtendedGCD\",\"Extension\",\"ExtentElementFunction\",\"ExtentMarkers\",\"ExtentSize\",\"ExternalBundle\",\"ExternalCall\",\"ExternalDataCharacterEncoding\",\"ExternalEvaluate\",\"ExternalFunction\",\"ExternalFunctionName\",\"ExternalIdentifier\",\"ExternalObject\",\"ExternalOptions\",\"ExternalSessionObject\",\"ExternalSessions\",\"ExternalStorageBase\",\"ExternalStorageDownload\",\"ExternalStorageGet\",\"ExternalStorageObject\",\"ExternalStoragePut\",\"ExternalStorageUpload\",\"ExternalTypeSignature\",\"ExternalValue\",\"Extract\",\"ExtractArchive\",\"ExtractLayer\",\"ExtractPacletArchive\",\"ExtremeValueDistribution\",\"FaceAlign\",\"FaceForm\",\"FaceGrids\",\"FaceGridsStyle\",\"FacialFeatures\",\"Factor\",\"FactorComplete\",\"Factorial\",\"Factorial2\",\"FactorialMoment\",\"FactorialMomentGeneratingFunction\",\"FactorialPower\",\"FactorInteger\",\"FactorList\",\"FactorSquareFree\",\"FactorSquareFreeList\",\"FactorTerms\",\"FactorTermsList\",\"Fail\",\"Failure\",\"FailureAction\",\"FailureDistribution\",\"FailureQ\",\"False\",\"FareySequence\",\"FARIMAProcess\",\"FeatureDistance\",\"FeatureExtract\",\"FeatureExtraction\",\"FeatureExtractor\",\"FeatureExtractorFunction\",\"FeatureNames\",\"FeatureNearest\",\"FeatureSpacePlot\",\"FeatureSpacePlot3D\",\"FeatureTypes\",\"FEDisableConsolePrintPacket\",\"FeedbackLinearize\",\"FeedbackSector\",\"FeedbackSectorStyle\",\"FeedbackType\",\"FEEnableConsolePrintPacket\",\"FetalGrowthData\",\"Fibonacci\",\"Fibonorial\",\"FieldCompletionFunction\",\"FieldHint\",\"FieldHintStyle\",\"FieldMasked\",\"FieldSize\",\"File\",\"FileBaseName\",\"FileByteCount\",\"FileConvert\",\"FileDate\",\"FileExistsQ\",\"FileExtension\",\"FileFormat\",\"FileHandler\",\"FileHash\",\"FileInformation\",\"FileName\",\"FileNameDepth\",\"FileNameDialogSettings\",\"FileNameDrop\",\"FileNameForms\",\"FileNameJoin\",\"FileNames\",\"FileNameSetter\",\"FileNameSplit\",\"FileNameTake\",\"FilePrint\",\"FileSize\",\"FileSystemMap\",\"FileSystemScan\",\"FileTemplate\",\"FileTemplateApply\",\"FileType\",\"FilledCurve\",\"FilledCurveBox\",\"FilledCurveBoxOptions\",\"Filling\",\"FillingStyle\",\"FillingTransform\",\"FilteredEntityClass\",\"FilterRules\",\"FinancialBond\",\"FinancialData\",\"FinancialDerivative\",\"FinancialIndicator\",\"Find\",\"FindAnomalies\",\"FindArgMax\",\"FindArgMin\",\"FindChannels\",\"FindClique\",\"FindClusters\",\"FindCookies\",\"FindCurvePath\",\"FindCycle\",\"FindDevices\",\"FindDistribution\",\"FindDistributionParameters\",\"FindDivisions\",\"FindEdgeCover\",\"FindEdgeCut\",\"FindEdgeIndependentPaths\",\"FindEquationalProof\",\"FindEulerianCycle\",\"FindExternalEvaluators\",\"FindFaces\",\"FindFile\",\"FindFit\",\"FindFormula\",\"FindFundamentalCycles\",\"FindGeneratingFunction\",\"FindGeoLocation\",\"FindGeometricConjectures\",\"FindGeometricTransform\",\"FindGraphCommunities\",\"FindGraphIsomorphism\",\"FindGraphPartition\",\"FindHamiltonianCycle\",\"FindHamiltonianPath\",\"FindHiddenMarkovStates\",\"FindImageText\",\"FindIndependentEdgeSet\",\"FindIndependentVertexSet\",\"FindInstance\",\"FindIntegerNullVector\",\"FindKClan\",\"FindKClique\",\"FindKClub\",\"FindKPlex\",\"FindLibrary\",\"FindLinearRecurrence\",\"FindList\",\"FindMatchingColor\",\"FindMaximum\",\"FindMaximumCut\",\"FindMaximumFlow\",\"FindMaxValue\",\"FindMeshDefects\",\"FindMinimum\",\"FindMinimumCostFlow\",\"FindMinimumCut\",\"FindMinValue\",\"FindMoleculeSubstructure\",\"FindPath\",\"FindPeaks\",\"FindPermutation\",\"FindPostmanTour\",\"FindProcessParameters\",\"FindRepeat\",\"FindRoot\",\"FindSequenceFunction\",\"FindSettings\",\"FindShortestPath\",\"FindShortestTour\",\"FindSpanningTree\",\"FindSystemModelEquilibrium\",\"FindTextualAnswer\",\"FindThreshold\",\"FindTransientRepeat\",\"FindVertexCover\",\"FindVertexCut\",\"FindVertexIndependentPaths\",\"Fine\",\"FinishDynamic\",\"FiniteAbelianGroupCount\",\"FiniteGroupCount\",\"FiniteGroupData\",\"First\",\"FirstCase\",\"FirstPassageTimeDistribution\",\"FirstPosition\",\"FischerGroupFi22\",\"FischerGroupFi23\",\"FischerGroupFi24Prime\",\"FisherHypergeometricDistribution\",\"FisherRatioTest\",\"FisherZDistribution\",\"Fit\",\"FitAll\",\"FitRegularization\",\"FittedModel\",\"FixedOrder\",\"FixedPoint\",\"FixedPointList\",\"FlashSelection\",\"Flat\",\"Flatten\",\"FlattenAt\",\"FlattenLayer\",\"FlatTopWindow\",\"FlipView\",\"Floor\",\"FlowPolynomial\",\"FlushPrintOutputPacket\",\"Fold\",\"FoldList\",\"FoldPair\",\"FoldPairList\",\"FollowRedirects\",\"Font\",\"FontColor\",\"FontFamily\",\"FontForm\",\"FontName\",\"FontOpacity\",\"FontPostScriptName\",\"FontProperties\",\"FontReencoding\",\"FontSize\",\"FontSlant\",\"FontSubstitutions\",\"FontTracking\",\"FontVariations\",\"FontWeight\",\"For\",\"ForAll\",\"ForceVersionInstall\",\"Format\",\"FormatRules\",\"FormatType\",\"FormatTypeAutoConvert\",\"FormatValues\",\"FormBox\",\"FormBoxOptions\",\"FormControl\",\"FormFunction\",\"FormLayoutFunction\",\"FormObject\",\"FormPage\",\"FormTheme\",\"FormulaData\",\"FormulaLookup\",\"FortranForm\",\"Forward\",\"ForwardBackward\",\"Fourier\",\"FourierCoefficient\",\"FourierCosCoefficient\",\"FourierCosSeries\",\"FourierCosTransform\",\"FourierDCT\",\"FourierDCTFilter\",\"FourierDCTMatrix\",\"FourierDST\",\"FourierDSTMatrix\",\"FourierMatrix\",\"FourierParameters\",\"FourierSequenceTransform\",\"FourierSeries\",\"FourierSinCoefficient\",\"FourierSinSeries\",\"FourierSinTransform\",\"FourierTransform\",\"FourierTrigSeries\",\"FractionalBrownianMotionProcess\",\"FractionalGaussianNoiseProcess\",\"FractionalPart\",\"FractionBox\",\"FractionBoxOptions\",\"FractionLine\",\"Frame\",\"FrameBox\",\"FrameBoxOptions\",\"Framed\",\"FrameInset\",\"FrameLabel\",\"Frameless\",\"FrameMargins\",\"FrameRate\",\"FrameStyle\",\"FrameTicks\",\"FrameTicksStyle\",\"FRatioDistribution\",\"FrechetDistribution\",\"FreeQ\",\"FrenetSerretSystem\",\"FrequencySamplingFilterKernel\",\"FresnelC\",\"FresnelF\",\"FresnelG\",\"FresnelS\",\"Friday\",\"FrobeniusNumber\",\"FrobeniusSolve\",\"FromAbsoluteTime\",\"FromCharacterCode\",\"FromCoefficientRules\",\"FromContinuedFraction\",\"FromDate\",\"FromDigits\",\"FromDMS\",\"FromEntity\",\"FromJulianDate\",\"FromLetterNumber\",\"FromPolarCoordinates\",\"FromRomanNumeral\",\"FromSphericalCoordinates\",\"FromUnixTime\",\"Front\",\"FrontEndDynamicExpression\",\"FrontEndEventActions\",\"FrontEndExecute\",\"FrontEndObject\",\"FrontEndResource\",\"FrontEndResourceString\",\"FrontEndStackSize\",\"FrontEndToken\",\"FrontEndTokenExecute\",\"FrontEndValueCache\",\"FrontEndVersion\",\"FrontFaceColor\",\"FrontFaceOpacity\",\"Full\",\"FullAxes\",\"FullDefinition\",\"FullForm\",\"FullGraphics\",\"FullInformationOutputRegulator\",\"FullOptions\",\"FullRegion\",\"FullSimplify\",\"Function\",\"FunctionCompile\",\"FunctionCompileExport\",\"FunctionCompileExportByteArray\",\"FunctionCompileExportLibrary\",\"FunctionCompileExportString\",\"FunctionDomain\",\"FunctionExpand\",\"FunctionInterpolation\",\"FunctionPeriod\",\"FunctionRange\",\"FunctionSpace\",\"FussellVeselyImportance\",\"GaborFilter\",\"GaborMatrix\",\"GaborWavelet\",\"GainMargins\",\"GainPhaseMargins\",\"GalaxyData\",\"GalleryView\",\"Gamma\",\"GammaDistribution\",\"GammaRegularized\",\"GapPenalty\",\"GARCHProcess\",\"GatedRecurrentLayer\",\"Gather\",\"GatherBy\",\"GaugeFaceElementFunction\",\"GaugeFaceStyle\",\"GaugeFrameElementFunction\",\"GaugeFrameSize\",\"GaugeFrameStyle\",\"GaugeLabels\",\"GaugeMarkers\",\"GaugeStyle\",\"GaussianFilter\",\"GaussianIntegers\",\"GaussianMatrix\",\"GaussianOrthogonalMatrixDistribution\",\"GaussianSymplecticMatrixDistribution\",\"GaussianUnitaryMatrixDistribution\",\"GaussianWindow\",\"GCD\",\"GegenbauerC\",\"General\",\"GeneralizedLinearModelFit\",\"GenerateAsymmetricKeyPair\",\"GenerateConditions\",\"GeneratedCell\",\"GeneratedDocumentBinding\",\"GenerateDerivedKey\",\"GenerateDigitalSignature\",\"GenerateDocument\",\"GeneratedParameters\",\"GeneratedQuantityMagnitudes\",\"GenerateFileSignature\",\"GenerateHTTPResponse\",\"GenerateSecuredAuthenticationKey\",\"GenerateSymmetricKey\",\"GeneratingFunction\",\"GeneratorDescription\",\"GeneratorHistoryLength\",\"GeneratorOutputType\",\"Generic\",\"GenericCylindricalDecomposition\",\"GenomeData\",\"GenomeLookup\",\"GeoAntipode\",\"GeoArea\",\"GeoArraySize\",\"GeoBackground\",\"GeoBoundingBox\",\"GeoBounds\",\"GeoBoundsRegion\",\"GeoBubbleChart\",\"GeoCenter\",\"GeoCircle\",\"GeoContourPlot\",\"GeoDensityPlot\",\"GeodesicClosing\",\"GeodesicDilation\",\"GeodesicErosion\",\"GeodesicOpening\",\"GeoDestination\",\"GeodesyData\",\"GeoDirection\",\"GeoDisk\",\"GeoDisplacement\",\"GeoDistance\",\"GeoDistanceList\",\"GeoElevationData\",\"GeoEntities\",\"GeoGraphics\",\"GeogravityModelData\",\"GeoGridDirectionDifference\",\"GeoGridLines\",\"GeoGridLinesStyle\",\"GeoGridPosition\",\"GeoGridRange\",\"GeoGridRangePadding\",\"GeoGridUnitArea\",\"GeoGridUnitDistance\",\"GeoGridVector\",\"GeoGroup\",\"GeoHemisphere\",\"GeoHemisphereBoundary\",\"GeoHistogram\",\"GeoIdentify\",\"GeoImage\",\"GeoLabels\",\"GeoLength\",\"GeoListPlot\",\"GeoLocation\",\"GeologicalPeriodData\",\"GeomagneticModelData\",\"GeoMarker\",\"GeometricAssertion\",\"GeometricBrownianMotionProcess\",\"GeometricDistribution\",\"GeometricMean\",\"GeometricMeanFilter\",\"GeometricOptimization\",\"GeometricScene\",\"GeometricTransformation\",\"GeometricTransformation3DBox\",\"GeometricTransformation3DBoxOptions\",\"GeometricTransformationBox\",\"GeometricTransformationBoxOptions\",\"GeoModel\",\"GeoNearest\",\"GeoPath\",\"GeoPosition\",\"GeoPositionENU\",\"GeoPositionXYZ\",\"GeoProjection\",\"GeoProjectionData\",\"GeoRange\",\"GeoRangePadding\",\"GeoRegionValuePlot\",\"GeoResolution\",\"GeoScaleBar\",\"GeoServer\",\"GeoSmoothHistogram\",\"GeoStreamPlot\",\"GeoStyling\",\"GeoStylingImageFunction\",\"GeoVariant\",\"GeoVector\",\"GeoVectorENU\",\"GeoVectorPlot\",\"GeoVectorXYZ\",\"GeoVisibleRegion\",\"GeoVisibleRegionBoundary\",\"GeoWithinQ\",\"GeoZoomLevel\",\"GestureHandler\",\"GestureHandlerTag\",\"Get\",\"GetBoundingBoxSizePacket\",\"GetContext\",\"GetEnvironment\",\"GetFileName\",\"GetFrontEndOptionsDataPacket\",\"GetLinebreakInformationPacket\",\"GetMenusPacket\",\"GetPageBreakInformationPacket\",\"Glaisher\",\"GlobalClusteringCoefficient\",\"GlobalPreferences\",\"GlobalSession\",\"Glow\",\"GoldenAngle\",\"GoldenRatio\",\"GompertzMakehamDistribution\",\"GoochShading\",\"GoodmanKruskalGamma\",\"GoodmanKruskalGammaTest\",\"Goto\",\"Grad\",\"Gradient\",\"GradientFilter\",\"GradientOrientationFilter\",\"GrammarApply\",\"GrammarRules\",\"GrammarToken\",\"Graph\",\"Graph3D\",\"GraphAssortativity\",\"GraphAutomorphismGroup\",\"GraphCenter\",\"GraphComplement\",\"GraphData\",\"GraphDensity\",\"GraphDiameter\",\"GraphDifference\",\"GraphDisjointUnion\",\"GraphDistance\",\"GraphDistanceMatrix\",\"GraphElementData\",\"GraphEmbedding\",\"GraphHighlight\",\"GraphHighlightStyle\",\"GraphHub\",\"Graphics\",\"Graphics3D\",\"Graphics3DBox\",\"Graphics3DBoxOptions\",\"GraphicsArray\",\"GraphicsBaseline\",\"GraphicsBox\",\"GraphicsBoxOptions\",\"GraphicsColor\",\"GraphicsColumn\",\"GraphicsComplex\",\"GraphicsComplex3DBox\",\"GraphicsComplex3DBoxOptions\",\"GraphicsComplexBox\",\"GraphicsComplexBoxOptions\",\"GraphicsContents\",\"GraphicsData\",\"GraphicsGrid\",\"GraphicsGridBox\",\"GraphicsGroup\",\"GraphicsGroup3DBox\",\"GraphicsGroup3DBoxOptions\",\"GraphicsGroupBox\",\"GraphicsGroupBoxOptions\",\"GraphicsGrouping\",\"GraphicsHighlightColor\",\"GraphicsRow\",\"GraphicsSpacing\",\"GraphicsStyle\",\"GraphIntersection\",\"GraphLayout\",\"GraphLinkEfficiency\",\"GraphPeriphery\",\"GraphPlot\",\"GraphPlot3D\",\"GraphPower\",\"GraphPropertyDistribution\",\"GraphQ\",\"GraphRadius\",\"GraphReciprocity\",\"GraphRoot\",\"GraphStyle\",\"GraphUnion\",\"Gray\",\"GrayLevel\",\"Greater\",\"GreaterEqual\",\"GreaterEqualLess\",\"GreaterEqualThan\",\"GreaterFullEqual\",\"GreaterGreater\",\"GreaterLess\",\"GreaterSlantEqual\",\"GreaterThan\",\"GreaterTilde\",\"Green\",\"GreenFunction\",\"Grid\",\"GridBaseline\",\"GridBox\",\"GridBoxAlignment\",\"GridBoxBackground\",\"GridBoxDividers\",\"GridBoxFrame\",\"GridBoxItemSize\",\"GridBoxItemStyle\",\"GridBoxOptions\",\"GridBoxSpacings\",\"GridCreationSettings\",\"GridDefaultElement\",\"GridElementStyleOptions\",\"GridFrame\",\"GridFrameMargins\",\"GridGraph\",\"GridLines\",\"GridLinesStyle\",\"GroebnerBasis\",\"GroupActionBase\",\"GroupBy\",\"GroupCentralizer\",\"GroupElementFromWord\",\"GroupElementPosition\",\"GroupElementQ\",\"GroupElements\",\"GroupElementToWord\",\"GroupGenerators\",\"Groupings\",\"GroupMultiplicationTable\",\"GroupOrbits\",\"GroupOrder\",\"GroupPageBreakWithin\",\"GroupSetwiseStabilizer\",\"GroupStabilizer\",\"GroupStabilizerChain\",\"GroupTogetherGrouping\",\"GroupTogetherNestedGrouping\",\"GrowCutComponents\",\"Gudermannian\",\"GuidedFilter\",\"GumbelDistribution\",\"HaarWavelet\",\"HadamardMatrix\",\"HalfLine\",\"HalfNormalDistribution\",\"HalfPlane\",\"HalfSpace\",\"HalftoneShading\",\"HamiltonianGraphQ\",\"HammingDistance\",\"HammingWindow\",\"HandlerFunctions\",\"HandlerFunctionsKeys\",\"HankelH1\",\"HankelH2\",\"HankelMatrix\",\"HankelTransform\",\"HannPoissonWindow\",\"HannWindow\",\"HaradaNortonGroupHN\",\"HararyGraph\",\"HarmonicMean\",\"HarmonicMeanFilter\",\"HarmonicNumber\",\"Hash\",\"HatchFilling\",\"HatchShading\",\"Haversine\",\"HazardFunction\",\"Head\",\"HeadCompose\",\"HeaderAlignment\",\"HeaderBackground\",\"HeaderDisplayFunction\",\"HeaderLines\",\"HeaderSize\",\"HeaderStyle\",\"Heads\",\"HeavisideLambda\",\"HeavisidePi\",\"HeavisideTheta\",\"HeldGroupHe\",\"HeldPart\",\"HelpBrowserLookup\",\"HelpBrowserNotebook\",\"HelpBrowserSettings\",\"Here\",\"HermiteDecomposition\",\"HermiteH\",\"HermitianMatrixQ\",\"HessenbergDecomposition\",\"Hessian\",\"HeunB\",\"HeunBPrime\",\"HeunC\",\"HeunCPrime\",\"HeunD\",\"HeunDPrime\",\"HeunG\",\"HeunGPrime\",\"HeunT\",\"HeunTPrime\",\"HexadecimalCharacter\",\"Hexahedron\",\"HexahedronBox\",\"HexahedronBoxOptions\",\"HiddenItems\",\"HiddenMarkovProcess\",\"HiddenSurface\",\"Highlighted\",\"HighlightGraph\",\"HighlightImage\",\"HighlightMesh\",\"HighpassFilter\",\"HigmanSimsGroupHS\",\"HilbertCurve\",\"HilbertFilter\",\"HilbertMatrix\",\"Histogram\",\"Histogram3D\",\"HistogramDistribution\",\"HistogramList\",\"HistogramTransform\",\"HistogramTransformInterpolation\",\"HistoricalPeriodData\",\"HitMissTransform\",\"HITSCentrality\",\"HjorthDistribution\",\"HodgeDual\",\"HoeffdingD\",\"HoeffdingDTest\",\"Hold\",\"HoldAll\",\"HoldAllComplete\",\"HoldComplete\",\"HoldFirst\",\"HoldForm\",\"HoldPattern\",\"HoldRest\",\"HolidayCalendar\",\"HomeDirectory\",\"HomePage\",\"Horizontal\",\"HorizontalForm\",\"HorizontalGauge\",\"HorizontalScrollPosition\",\"HornerForm\",\"HostLookup\",\"HotellingTSquareDistribution\",\"HoytDistribution\",\"HTMLSave\",\"HTTPErrorResponse\",\"HTTPRedirect\",\"HTTPRequest\",\"HTTPRequestData\",\"HTTPResponse\",\"Hue\",\"HumanGrowthData\",\"HumpDownHump\",\"HumpEqual\",\"HurwitzLerchPhi\",\"HurwitzZeta\",\"HyperbolicDistribution\",\"HypercubeGraph\",\"HyperexponentialDistribution\",\"Hyperfactorial\",\"Hypergeometric0F1\",\"Hypergeometric0F1Regularized\",\"Hypergeometric1F1\",\"Hypergeometric1F1Regularized\",\"Hypergeometric2F1\",\"Hypergeometric2F1Regularized\",\"HypergeometricDistribution\",\"HypergeometricPFQ\",\"HypergeometricPFQRegularized\",\"HypergeometricU\",\"Hyperlink\",\"HyperlinkAction\",\"HyperlinkCreationSettings\",\"Hyperplane\",\"Hyphenation\",\"HyphenationOptions\",\"HypoexponentialDistribution\",\"HypothesisTestData\",\"I\",\"IconData\",\"Iconize\",\"IconizedObject\",\"IconRules\",\"Icosahedron\",\"Identity\",\"IdentityMatrix\",\"If\",\"IgnoreCase\",\"IgnoreDiacritics\",\"IgnorePunctuation\",\"IgnoreSpellCheck\",\"IgnoringInactive\",\"Im\",\"Image\",\"Image3D\",\"Image3DProjection\",\"Image3DSlices\",\"ImageAccumulate\",\"ImageAdd\",\"ImageAdjust\",\"ImageAlign\",\"ImageApply\",\"ImageApplyIndexed\",\"ImageAspectRatio\",\"ImageAssemble\",\"ImageAugmentationLayer\",\"ImageBoundingBoxes\",\"ImageCache\",\"ImageCacheValid\",\"ImageCapture\",\"ImageCaptureFunction\",\"ImageCases\",\"ImageChannels\",\"ImageClip\",\"ImageCollage\",\"ImageColorSpace\",\"ImageCompose\",\"ImageContainsQ\",\"ImageContents\",\"ImageConvolve\",\"ImageCooccurrence\",\"ImageCorners\",\"ImageCorrelate\",\"ImageCorrespondingPoints\",\"ImageCrop\",\"ImageData\",\"ImageDeconvolve\",\"ImageDemosaic\",\"ImageDifference\",\"ImageDimensions\",\"ImageDisplacements\",\"ImageDistance\",\"ImageEffect\",\"ImageExposureCombine\",\"ImageFeatureTrack\",\"ImageFileApply\",\"ImageFileFilter\",\"ImageFileScan\",\"ImageFilter\",\"ImageFocusCombine\",\"ImageForestingComponents\",\"ImageFormattingWidth\",\"ImageForwardTransformation\",\"ImageGraphics\",\"ImageHistogram\",\"ImageIdentify\",\"ImageInstanceQ\",\"ImageKeypoints\",\"ImageLabels\",\"ImageLegends\",\"ImageLevels\",\"ImageLines\",\"ImageMargins\",\"ImageMarker\",\"ImageMarkers\",\"ImageMeasurements\",\"ImageMesh\",\"ImageMultiply\",\"ImageOffset\",\"ImagePad\",\"ImagePadding\",\"ImagePartition\",\"ImagePeriodogram\",\"ImagePerspectiveTransformation\",\"ImagePosition\",\"ImagePreviewFunction\",\"ImagePyramid\",\"ImagePyramidApply\",\"ImageQ\",\"ImageRangeCache\",\"ImageRecolor\",\"ImageReflect\",\"ImageRegion\",\"ImageResize\",\"ImageResolution\",\"ImageRestyle\",\"ImageRotate\",\"ImageRotated\",\"ImageSaliencyFilter\",\"ImageScaled\",\"ImageScan\",\"ImageSize\",\"ImageSizeAction\",\"ImageSizeCache\",\"ImageSizeMultipliers\",\"ImageSizeRaw\",\"ImageSubtract\",\"ImageTake\",\"ImageTransformation\",\"ImageTrim\",\"ImageType\",\"ImageValue\",\"ImageValuePositions\",\"ImagingDevice\",\"ImplicitRegion\",\"Implies\",\"Import\",\"ImportAutoReplacements\",\"ImportByteArray\",\"ImportOptions\",\"ImportString\",\"ImprovementImportance\",\"In\",\"Inactivate\",\"Inactive\",\"IncidenceGraph\",\"IncidenceList\",\"IncidenceMatrix\",\"IncludeAromaticBonds\",\"IncludeConstantBasis\",\"IncludeDefinitions\",\"IncludeDirectories\",\"IncludeFileExtension\",\"IncludeGeneratorTasks\",\"IncludeHydrogens\",\"IncludeInflections\",\"IncludeMetaInformation\",\"IncludePods\",\"IncludeQuantities\",\"IncludeRelatedTables\",\"IncludeSingularTerm\",\"IncludeWindowTimes\",\"Increment\",\"IndefiniteMatrixQ\",\"Indent\",\"IndentingNewlineSpacings\",\"IndentMaxFraction\",\"IndependenceTest\",\"IndependentEdgeSetQ\",\"IndependentPhysicalQuantity\",\"IndependentUnit\",\"IndependentUnitDimension\",\"IndependentVertexSetQ\",\"Indeterminate\",\"IndeterminateThreshold\",\"IndexCreationOptions\",\"Indexed\",\"IndexEdgeTaggedGraph\",\"IndexGraph\",\"IndexTag\",\"Inequality\",\"InexactNumberQ\",\"InexactNumbers\",\"InfiniteFuture\",\"InfiniteLine\",\"InfinitePast\",\"InfinitePlane\",\"Infinity\",\"Infix\",\"InflationAdjust\",\"InflationMethod\",\"Information\",\"InformationData\",\"InformationDataGrid\",\"Inherited\",\"InheritScope\",\"InhomogeneousPoissonProcess\",\"InitialEvaluationHistory\",\"Initialization\",\"InitializationCell\",\"InitializationCellEvaluation\",\"InitializationCellWarning\",\"InitializationObjects\",\"InitializationValue\",\"Initialize\",\"InitialSeeding\",\"InlineCounterAssignments\",\"InlineCounterIncrements\",\"InlineRules\",\"Inner\",\"InnerPolygon\",\"InnerPolyhedron\",\"Inpaint\",\"Input\",\"InputAliases\",\"InputAssumptions\",\"InputAutoReplacements\",\"InputField\",\"InputFieldBox\",\"InputFieldBoxOptions\",\"InputForm\",\"InputGrouping\",\"InputNamePacket\",\"InputNotebook\",\"InputPacket\",\"InputSettings\",\"InputStream\",\"InputString\",\"InputStringPacket\",\"InputToBoxFormPacket\",\"Insert\",\"InsertionFunction\",\"InsertionPointObject\",\"InsertLinebreaks\",\"InsertResults\",\"Inset\",\"Inset3DBox\",\"Inset3DBoxOptions\",\"InsetBox\",\"InsetBoxOptions\",\"Insphere\",\"Install\",\"InstallService\",\"InstanceNormalizationLayer\",\"InString\",\"Integer\",\"IntegerDigits\",\"IntegerExponent\",\"IntegerLength\",\"IntegerName\",\"IntegerPart\",\"IntegerPartitions\",\"IntegerQ\",\"IntegerReverse\",\"Integers\",\"IntegerString\",\"Integral\",\"Integrate\",\"Interactive\",\"InteractiveTradingChart\",\"Interlaced\",\"Interleaving\",\"InternallyBalancedDecomposition\",\"InterpolatingFunction\",\"InterpolatingPolynomial\",\"Interpolation\",\"InterpolationOrder\",\"InterpolationPoints\",\"InterpolationPrecision\",\"Interpretation\",\"InterpretationBox\",\"InterpretationBoxOptions\",\"InterpretationFunction\",\"Interpreter\",\"InterpretTemplate\",\"InterquartileRange\",\"Interrupt\",\"InterruptSettings\",\"IntersectedEntityClass\",\"IntersectingQ\",\"Intersection\",\"Interval\",\"IntervalIntersection\",\"IntervalMarkers\",\"IntervalMarkersStyle\",\"IntervalMemberQ\",\"IntervalSlider\",\"IntervalUnion\",\"Into\",\"Inverse\",\"InverseBetaRegularized\",\"InverseCDF\",\"InverseChiSquareDistribution\",\"InverseContinuousWaveletTransform\",\"InverseDistanceTransform\",\"InverseEllipticNomeQ\",\"InverseErf\",\"InverseErfc\",\"InverseFourier\",\"InverseFourierCosTransform\",\"InverseFourierSequenceTransform\",\"InverseFourierSinTransform\",\"InverseFourierTransform\",\"InverseFunction\",\"InverseFunctions\",\"InverseGammaDistribution\",\"InverseGammaRegularized\",\"InverseGaussianDistribution\",\"InverseGudermannian\",\"InverseHankelTransform\",\"InverseHaversine\",\"InverseImagePyramid\",\"InverseJacobiCD\",\"InverseJacobiCN\",\"InverseJacobiCS\",\"InverseJacobiDC\",\"InverseJacobiDN\",\"InverseJacobiDS\",\"InverseJacobiNC\",\"InverseJacobiND\",\"InverseJacobiNS\",\"InverseJacobiSC\",\"InverseJacobiSD\",\"InverseJacobiSN\",\"InverseLaplaceTransform\",\"InverseMellinTransform\",\"InversePermutation\",\"InverseRadon\",\"InverseRadonTransform\",\"InverseSeries\",\"InverseShortTimeFourier\",\"InverseSpectrogram\",\"InverseSurvivalFunction\",\"InverseTransformedRegion\",\"InverseWaveletTransform\",\"InverseWeierstrassP\",\"InverseWishartMatrixDistribution\",\"InverseZTransform\",\"Invisible\",\"InvisibleApplication\",\"InvisibleTimes\",\"IPAddress\",\"IrreduciblePolynomialQ\",\"IslandData\",\"IsolatingInterval\",\"IsomorphicGraphQ\",\"IsotopeData\",\"Italic\",\"Item\",\"ItemAspectRatio\",\"ItemBox\",\"ItemBoxOptions\",\"ItemDisplayFunction\",\"ItemSize\",\"ItemStyle\",\"ItoProcess\",\"JaccardDissimilarity\",\"JacobiAmplitude\",\"Jacobian\",\"JacobiCD\",\"JacobiCN\",\"JacobiCS\",\"JacobiDC\",\"JacobiDN\",\"JacobiDS\",\"JacobiNC\",\"JacobiND\",\"JacobiNS\",\"JacobiP\",\"JacobiSC\",\"JacobiSD\",\"JacobiSN\",\"JacobiSymbol\",\"JacobiZeta\",\"JankoGroupJ1\",\"JankoGroupJ2\",\"JankoGroupJ3\",\"JankoGroupJ4\",\"JarqueBeraALMTest\",\"JohnsonDistribution\",\"Join\",\"JoinAcross\",\"Joined\",\"JoinedCurve\",\"JoinedCurveBox\",\"JoinedCurveBoxOptions\",\"JoinForm\",\"JordanDecomposition\",\"JordanModelDecomposition\",\"JulianDate\",\"JuliaSetBoettcher\",\"JuliaSetIterationCount\",\"JuliaSetPlot\",\"JuliaSetPoints\",\"K\",\"KagiChart\",\"KaiserBesselWindow\",\"KaiserWindow\",\"KalmanEstimator\",\"KalmanFilter\",\"KarhunenLoeveDecomposition\",\"KaryTree\",\"KatzCentrality\",\"KCoreComponents\",\"KDistribution\",\"KEdgeConnectedComponents\",\"KEdgeConnectedGraphQ\",\"KeepExistingVersion\",\"KelvinBei\",\"KelvinBer\",\"KelvinKei\",\"KelvinKer\",\"KendallTau\",\"KendallTauTest\",\"KernelExecute\",\"KernelFunction\",\"KernelMixtureDistribution\",\"KernelObject\",\"Kernels\",\"Ket\",\"Key\",\"KeyCollisionFunction\",\"KeyComplement\",\"KeyDrop\",\"KeyDropFrom\",\"KeyExistsQ\",\"KeyFreeQ\",\"KeyIntersection\",\"KeyMap\",\"KeyMemberQ\",\"KeypointStrength\",\"Keys\",\"KeySelect\",\"KeySort\",\"KeySortBy\",\"KeyTake\",\"KeyUnion\",\"KeyValueMap\",\"KeyValuePattern\",\"Khinchin\",\"KillProcess\",\"KirchhoffGraph\",\"KirchhoffMatrix\",\"KleinInvariantJ\",\"KnapsackSolve\",\"KnightTourGraph\",\"KnotData\",\"KnownUnitQ\",\"KochCurve\",\"KolmogorovSmirnovTest\",\"KroneckerDelta\",\"KroneckerModelDecomposition\",\"KroneckerProduct\",\"KroneckerSymbol\",\"KuiperTest\",\"KumaraswamyDistribution\",\"Kurtosis\",\"KuwaharaFilter\",\"KVertexConnectedComponents\",\"KVertexConnectedGraphQ\",\"LABColor\",\"Label\",\"Labeled\",\"LabeledSlider\",\"LabelingFunction\",\"LabelingSize\",\"LabelStyle\",\"LabelVisibility\",\"LaguerreL\",\"LakeData\",\"LambdaComponents\",\"LambertW\",\"LaminaData\",\"LanczosWindow\",\"LandauDistribution\",\"Language\",\"LanguageCategory\",\"LanguageData\",\"LanguageIdentify\",\"LanguageOptions\",\"LaplaceDistribution\",\"LaplaceTransform\",\"Laplacian\",\"LaplacianFilter\",\"LaplacianGaussianFilter\",\"Large\",\"Larger\",\"Last\",\"Latitude\",\"LatitudeLongitude\",\"LatticeData\",\"LatticeReduce\",\"Launch\",\"LaunchKernels\",\"LayeredGraphPlot\",\"LayerSizeFunction\",\"LayoutInformation\",\"LCHColor\",\"LCM\",\"LeaderSize\",\"LeafCount\",\"LeapYearQ\",\"LearnDistribution\",\"LearnedDistribution\",\"LearningRate\",\"LearningRateMultipliers\",\"LeastSquares\",\"LeastSquaresFilterKernel\",\"Left\",\"LeftArrow\",\"LeftArrowBar\",\"LeftArrowRightArrow\",\"LeftDownTeeVector\",\"LeftDownVector\",\"LeftDownVectorBar\",\"LeftRightArrow\",\"LeftRightVector\",\"LeftTee\",\"LeftTeeArrow\",\"LeftTeeVector\",\"LeftTriangle\",\"LeftTriangleBar\",\"LeftTriangleEqual\",\"LeftUpDownVector\",\"LeftUpTeeVector\",\"LeftUpVector\",\"LeftUpVectorBar\",\"LeftVector\",\"LeftVectorBar\",\"LegendAppearance\",\"Legended\",\"LegendFunction\",\"LegendLabel\",\"LegendLayout\",\"LegendMargins\",\"LegendMarkers\",\"LegendMarkerSize\",\"LegendreP\",\"LegendreQ\",\"LegendreType\",\"Length\",\"LengthWhile\",\"LerchPhi\",\"Less\",\"LessEqual\",\"LessEqualGreater\",\"LessEqualThan\",\"LessFullEqual\",\"LessGreater\",\"LessLess\",\"LessSlantEqual\",\"LessThan\",\"LessTilde\",\"LetterCharacter\",\"LetterCounts\",\"LetterNumber\",\"LetterQ\",\"Level\",\"LeveneTest\",\"LeviCivitaTensor\",\"LevyDistribution\",\"Lexicographic\",\"LibraryDataType\",\"LibraryFunction\",\"LibraryFunctionError\",\"LibraryFunctionInformation\",\"LibraryFunctionLoad\",\"LibraryFunctionUnload\",\"LibraryLoad\",\"LibraryUnload\",\"LicenseID\",\"LiftingFilterData\",\"LiftingWaveletTransform\",\"LightBlue\",\"LightBrown\",\"LightCyan\",\"Lighter\",\"LightGray\",\"LightGreen\",\"Lighting\",\"LightingAngle\",\"LightMagenta\",\"LightOrange\",\"LightPink\",\"LightPurple\",\"LightRed\",\"LightSources\",\"LightYellow\",\"Likelihood\",\"Limit\",\"LimitsPositioning\",\"LimitsPositioningTokens\",\"LindleyDistribution\",\"Line\",\"Line3DBox\",\"Line3DBoxOptions\",\"LinearFilter\",\"LinearFractionalOptimization\",\"LinearFractionalTransform\",\"LinearGradientImage\",\"LinearizingTransformationData\",\"LinearLayer\",\"LinearModelFit\",\"LinearOffsetFunction\",\"LinearOptimization\",\"LinearProgramming\",\"LinearRecurrence\",\"LinearSolve\",\"LinearSolveFunction\",\"LineBox\",\"LineBoxOptions\",\"LineBreak\",\"LinebreakAdjustments\",\"LineBreakChart\",\"LinebreakSemicolonWeighting\",\"LineBreakWithin\",\"LineColor\",\"LineGraph\",\"LineIndent\",\"LineIndentMaxFraction\",\"LineIntegralConvolutionPlot\",\"LineIntegralConvolutionScale\",\"LineLegend\",\"LineOpacity\",\"LineSpacing\",\"LineWrapParts\",\"LinkActivate\",\"LinkClose\",\"LinkConnect\",\"LinkConnectedQ\",\"LinkCreate\",\"LinkError\",\"LinkFlush\",\"LinkFunction\",\"LinkHost\",\"LinkInterrupt\",\"LinkLaunch\",\"LinkMode\",\"LinkObject\",\"LinkOpen\",\"LinkOptions\",\"LinkPatterns\",\"LinkProtocol\",\"LinkRankCentrality\",\"LinkRead\",\"LinkReadHeld\",\"LinkReadyQ\",\"Links\",\"LinkService\",\"LinkWrite\",\"LinkWriteHeld\",\"LiouvilleLambda\",\"List\",\"Listable\",\"ListAnimate\",\"ListContourPlot\",\"ListContourPlot3D\",\"ListConvolve\",\"ListCorrelate\",\"ListCurvePathPlot\",\"ListDeconvolve\",\"ListDensityPlot\",\"ListDensityPlot3D\",\"Listen\",\"ListFormat\",\"ListFourierSequenceTransform\",\"ListInterpolation\",\"ListLineIntegralConvolutionPlot\",\"ListLinePlot\",\"ListLogLinearPlot\",\"ListLogLogPlot\",\"ListLogPlot\",\"ListPicker\",\"ListPickerBox\",\"ListPickerBoxBackground\",\"ListPickerBoxOptions\",\"ListPlay\",\"ListPlot\",\"ListPlot3D\",\"ListPointPlot3D\",\"ListPolarPlot\",\"ListQ\",\"ListSliceContourPlot3D\",\"ListSliceDensityPlot3D\",\"ListSliceVectorPlot3D\",\"ListStepPlot\",\"ListStreamDensityPlot\",\"ListStreamPlot\",\"ListSurfacePlot3D\",\"ListVectorDensityPlot\",\"ListVectorPlot\",\"ListVectorPlot3D\",\"ListZTransform\",\"Literal\",\"LiteralSearch\",\"LocalAdaptiveBinarize\",\"LocalCache\",\"LocalClusteringCoefficient\",\"LocalizeDefinitions\",\"LocalizeVariables\",\"LocalObject\",\"LocalObjects\",\"LocalResponseNormalizationLayer\",\"LocalSubmit\",\"LocalSymbol\",\"LocalTime\",\"LocalTimeZone\",\"LocationEquivalenceTest\",\"LocationTest\",\"Locator\",\"LocatorAutoCreate\",\"LocatorBox\",\"LocatorBoxOptions\",\"LocatorCentering\",\"LocatorPane\",\"LocatorPaneBox\",\"LocatorPaneBoxOptions\",\"LocatorRegion\",\"Locked\",\"Log\",\"Log10\",\"Log2\",\"LogBarnesG\",\"LogGamma\",\"LogGammaDistribution\",\"LogicalExpand\",\"LogIntegral\",\"LogisticDistribution\",\"LogisticSigmoid\",\"LogitModelFit\",\"LogLikelihood\",\"LogLinearPlot\",\"LogLogisticDistribution\",\"LogLogPlot\",\"LogMultinormalDistribution\",\"LogNormalDistribution\",\"LogPlot\",\"LogRankTest\",\"LogSeriesDistribution\",\"LongEqual\",\"Longest\",\"LongestCommonSequence\",\"LongestCommonSequencePositions\",\"LongestCommonSubsequence\",\"LongestCommonSubsequencePositions\",\"LongestMatch\",\"LongestOrderedSequence\",\"LongForm\",\"Longitude\",\"LongLeftArrow\",\"LongLeftRightArrow\",\"LongRightArrow\",\"LongShortTermMemoryLayer\",\"Lookup\",\"Loopback\",\"LoopFreeGraphQ\",\"Looping\",\"LossFunction\",\"LowerCaseQ\",\"LowerLeftArrow\",\"LowerRightArrow\",\"LowerTriangularize\",\"LowerTriangularMatrixQ\",\"LowpassFilter\",\"LQEstimatorGains\",\"LQGRegulator\",\"LQOutputRegulatorGains\",\"LQRegulatorGains\",\"LUBackSubstitution\",\"LucasL\",\"LuccioSamiComponents\",\"LUDecomposition\",\"LunarEclipse\",\"LUVColor\",\"LyapunovSolve\",\"LyonsGroupLy\",\"MachineID\",\"MachineName\",\"MachineNumberQ\",\"MachinePrecision\",\"MacintoshSystemPageSetup\",\"Magenta\",\"Magnification\",\"Magnify\",\"MailAddressValidation\",\"MailExecute\",\"MailFolder\",\"MailItem\",\"MailReceiverFunction\",\"MailResponseFunction\",\"MailSearch\",\"MailServerConnect\",\"MailServerConnection\",\"MailSettings\",\"MainSolve\",\"MaintainDynamicCaches\",\"Majority\",\"MakeBoxes\",\"MakeExpression\",\"MakeRules\",\"ManagedLibraryExpressionID\",\"ManagedLibraryExpressionQ\",\"MandelbrotSetBoettcher\",\"MandelbrotSetDistance\",\"MandelbrotSetIterationCount\",\"MandelbrotSetMemberQ\",\"MandelbrotSetPlot\",\"MangoldtLambda\",\"ManhattanDistance\",\"Manipulate\",\"Manipulator\",\"MannedSpaceMissionData\",\"MannWhitneyTest\",\"MantissaExponent\",\"Manual\",\"Map\",\"MapAll\",\"MapAt\",\"MapIndexed\",\"MAProcess\",\"MapThread\",\"MarchenkoPasturDistribution\",\"MarcumQ\",\"MardiaCombinedTest\",\"MardiaKurtosisTest\",\"MardiaSkewnessTest\",\"MarginalDistribution\",\"MarkovProcessProperties\",\"Masking\",\"MatchingDissimilarity\",\"MatchLocalNameQ\",\"MatchLocalNames\",\"MatchQ\",\"Material\",\"MathematicalFunctionData\",\"MathematicaNotation\",\"MathieuC\",\"MathieuCharacteristicA\",\"MathieuCharacteristicB\",\"MathieuCharacteristicExponent\",\"MathieuCPrime\",\"MathieuGroupM11\",\"MathieuGroupM12\",\"MathieuGroupM22\",\"MathieuGroupM23\",\"MathieuGroupM24\",\"MathieuS\",\"MathieuSPrime\",\"MathMLForm\",\"MathMLText\",\"Matrices\",\"MatrixExp\",\"MatrixForm\",\"MatrixFunction\",\"MatrixLog\",\"MatrixNormalDistribution\",\"MatrixPlot\",\"MatrixPower\",\"MatrixPropertyDistribution\",\"MatrixQ\",\"MatrixRank\",\"MatrixTDistribution\",\"Max\",\"MaxBend\",\"MaxCellMeasure\",\"MaxColorDistance\",\"MaxDate\",\"MaxDetect\",\"MaxDuration\",\"MaxExtraBandwidths\",\"MaxExtraConditions\",\"MaxFeatureDisplacement\",\"MaxFeatures\",\"MaxFilter\",\"MaximalBy\",\"Maximize\",\"MaxItems\",\"MaxIterations\",\"MaxLimit\",\"MaxMemoryUsed\",\"MaxMixtureKernels\",\"MaxOverlapFraction\",\"MaxPlotPoints\",\"MaxPoints\",\"MaxRecursion\",\"MaxStableDistribution\",\"MaxStepFraction\",\"MaxSteps\",\"MaxStepSize\",\"MaxTrainingRounds\",\"MaxValue\",\"MaxwellDistribution\",\"MaxWordGap\",\"McLaughlinGroupMcL\",\"Mean\",\"MeanAbsoluteLossLayer\",\"MeanAround\",\"MeanClusteringCoefficient\",\"MeanDegreeConnectivity\",\"MeanDeviation\",\"MeanFilter\",\"MeanGraphDistance\",\"MeanNeighborDegree\",\"MeanShift\",\"MeanShiftFilter\",\"MeanSquaredLossLayer\",\"Median\",\"MedianDeviation\",\"MedianFilter\",\"MedicalTestData\",\"Medium\",\"MeijerG\",\"MeijerGReduce\",\"MeixnerDistribution\",\"MellinConvolve\",\"MellinTransform\",\"MemberQ\",\"MemoryAvailable\",\"MemoryConstrained\",\"MemoryConstraint\",\"MemoryInUse\",\"MengerMesh\",\"Menu\",\"MenuAppearance\",\"MenuCommandKey\",\"MenuEvaluator\",\"MenuItem\",\"MenuList\",\"MenuPacket\",\"MenuSortingValue\",\"MenuStyle\",\"MenuView\",\"Merge\",\"MergeDifferences\",\"MergingFunction\",\"MersennePrimeExponent\",\"MersennePrimeExponentQ\",\"Mesh\",\"MeshCellCentroid\",\"MeshCellCount\",\"MeshCellHighlight\",\"MeshCellIndex\",\"MeshCellLabel\",\"MeshCellMarker\",\"MeshCellMeasure\",\"MeshCellQuality\",\"MeshCells\",\"MeshCellShapeFunction\",\"MeshCellStyle\",\"MeshConnectivityGraph\",\"MeshCoordinates\",\"MeshFunctions\",\"MeshPrimitives\",\"MeshQualityGoal\",\"MeshRange\",\"MeshRefinementFunction\",\"MeshRegion\",\"MeshRegionQ\",\"MeshShading\",\"MeshStyle\",\"Message\",\"MessageDialog\",\"MessageList\",\"MessageName\",\"MessageObject\",\"MessageOptions\",\"MessagePacket\",\"Messages\",\"MessagesNotebook\",\"MetaCharacters\",\"MetaInformation\",\"MeteorShowerData\",\"Method\",\"MethodOptions\",\"MexicanHatWavelet\",\"MeyerWavelet\",\"Midpoint\",\"Min\",\"MinColorDistance\",\"MinDate\",\"MinDetect\",\"MineralData\",\"MinFilter\",\"MinimalBy\",\"MinimalPolynomial\",\"MinimalStateSpaceModel\",\"Minimize\",\"MinimumTimeIncrement\",\"MinIntervalSize\",\"MinkowskiQuestionMark\",\"MinLimit\",\"MinMax\",\"MinorPlanetData\",\"Minors\",\"MinRecursion\",\"MinSize\",\"MinStableDistribution\",\"Minus\",\"MinusPlus\",\"MinValue\",\"Missing\",\"MissingBehavior\",\"MissingDataMethod\",\"MissingDataRules\",\"MissingQ\",\"MissingString\",\"MissingStyle\",\"MissingValuePattern\",\"MittagLefflerE\",\"MixedFractionParts\",\"MixedGraphQ\",\"MixedMagnitude\",\"MixedRadix\",\"MixedRadixQuantity\",\"MixedUnit\",\"MixtureDistribution\",\"Mod\",\"Modal\",\"Mode\",\"Modular\",\"ModularInverse\",\"ModularLambda\",\"Module\",\"Modulus\",\"MoebiusMu\",\"Molecule\",\"MoleculeContainsQ\",\"MoleculeEquivalentQ\",\"MoleculeGraph\",\"MoleculeModify\",\"MoleculePattern\",\"MoleculePlot\",\"MoleculePlot3D\",\"MoleculeProperty\",\"MoleculeQ\",\"MoleculeRecognize\",\"MoleculeValue\",\"Moment\",\"Momentary\",\"MomentConvert\",\"MomentEvaluate\",\"MomentGeneratingFunction\",\"MomentOfInertia\",\"Monday\",\"Monitor\",\"MonomialList\",\"MonomialOrder\",\"MonsterGroupM\",\"MoonPhase\",\"MoonPosition\",\"MorletWavelet\",\"MorphologicalBinarize\",\"MorphologicalBranchPoints\",\"MorphologicalComponents\",\"MorphologicalEulerNumber\",\"MorphologicalGraph\",\"MorphologicalPerimeter\",\"MorphologicalTransform\",\"MortalityData\",\"Most\",\"MountainData\",\"MouseAnnotation\",\"MouseAppearance\",\"MouseAppearanceTag\",\"MouseButtons\",\"Mouseover\",\"MousePointerNote\",\"MousePosition\",\"MovieData\",\"MovingAverage\",\"MovingMap\",\"MovingMedian\",\"MoyalDistribution\",\"Multicolumn\",\"MultiedgeStyle\",\"MultigraphQ\",\"MultilaunchWarning\",\"MultiLetterItalics\",\"MultiLetterStyle\",\"MultilineFunction\",\"Multinomial\",\"MultinomialDistribution\",\"MultinormalDistribution\",\"MultiplicativeOrder\",\"Multiplicity\",\"MultiplySides\",\"Multiselection\",\"MultivariateHypergeometricDistribution\",\"MultivariatePoissonDistribution\",\"MultivariateTDistribution\",\"N\",\"NakagamiDistribution\",\"NameQ\",\"Names\",\"NamespaceBox\",\"NamespaceBoxOptions\",\"Nand\",\"NArgMax\",\"NArgMin\",\"NBernoulliB\",\"NBodySimulation\",\"NBodySimulationData\",\"NCache\",\"NDEigensystem\",\"NDEigenvalues\",\"NDSolve\",\"NDSolveValue\",\"Nearest\",\"NearestFunction\",\"NearestMeshCells\",\"NearestNeighborGraph\",\"NearestTo\",\"NebulaData\",\"NeedCurrentFrontEndPackagePacket\",\"NeedCurrentFrontEndSymbolsPacket\",\"NeedlemanWunschSimilarity\",\"Needs\",\"Negative\",\"NegativeBinomialDistribution\",\"NegativeDefiniteMatrixQ\",\"NegativeIntegers\",\"NegativeMultinomialDistribution\",\"NegativeRationals\",\"NegativeReals\",\"NegativeSemidefiniteMatrixQ\",\"NeighborhoodData\",\"NeighborhoodGraph\",\"Nest\",\"NestedGreaterGreater\",\"NestedLessLess\",\"NestedScriptRules\",\"NestGraph\",\"NestList\",\"NestWhile\",\"NestWhileList\",\"NetAppend\",\"NetBidirectionalOperator\",\"NetChain\",\"NetDecoder\",\"NetDelete\",\"NetDrop\",\"NetEncoder\",\"NetEvaluationMode\",\"NetExtract\",\"NetFlatten\",\"NetFoldOperator\",\"NetGANOperator\",\"NetGraph\",\"NetInformation\",\"NetInitialize\",\"NetInsert\",\"NetInsertSharedArrays\",\"NetJoin\",\"NetMapOperator\",\"NetMapThreadOperator\",\"NetMeasurements\",\"NetModel\",\"NetNestOperator\",\"NetPairEmbeddingOperator\",\"NetPort\",\"NetPortGradient\",\"NetPrepend\",\"NetRename\",\"NetReplace\",\"NetReplacePart\",\"NetSharedArray\",\"NetStateObject\",\"NetTake\",\"NetTrain\",\"NetTrainResultsObject\",\"NetworkPacketCapture\",\"NetworkPacketRecording\",\"NetworkPacketRecordingDuring\",\"NetworkPacketTrace\",\"NeumannValue\",\"NevilleThetaC\",\"NevilleThetaD\",\"NevilleThetaN\",\"NevilleThetaS\",\"NewPrimitiveStyle\",\"NExpectation\",\"Next\",\"NextCell\",\"NextDate\",\"NextPrime\",\"NextScheduledTaskTime\",\"NHoldAll\",\"NHoldFirst\",\"NHoldRest\",\"NicholsGridLines\",\"NicholsPlot\",\"NightHemisphere\",\"NIntegrate\",\"NMaximize\",\"NMaxValue\",\"NMinimize\",\"NMinValue\",\"NominalVariables\",\"NonAssociative\",\"NoncentralBetaDistribution\",\"NoncentralChiSquareDistribution\",\"NoncentralFRatioDistribution\",\"NoncentralStudentTDistribution\",\"NonCommutativeMultiply\",\"NonConstants\",\"NondimensionalizationTransform\",\"None\",\"NoneTrue\",\"NonlinearModelFit\",\"NonlinearStateSpaceModel\",\"NonlocalMeansFilter\",\"NonNegative\",\"NonNegativeIntegers\",\"NonNegativeRationals\",\"NonNegativeReals\",\"NonPositive\",\"NonPositiveIntegers\",\"NonPositiveRationals\",\"NonPositiveReals\",\"Nor\",\"NorlundB\",\"Norm\",\"Normal\",\"NormalDistribution\",\"NormalGrouping\",\"NormalizationLayer\",\"Normalize\",\"Normalized\",\"NormalizedSquaredEuclideanDistance\",\"NormalMatrixQ\",\"NormalsFunction\",\"NormFunction\",\"Not\",\"NotCongruent\",\"NotCupCap\",\"NotDoubleVerticalBar\",\"Notebook\",\"NotebookApply\",\"NotebookAutoSave\",\"NotebookClose\",\"NotebookConvertSettings\",\"NotebookCreate\",\"NotebookCreateReturnObject\",\"NotebookDefault\",\"NotebookDelete\",\"NotebookDirectory\",\"NotebookDynamicExpression\",\"NotebookEvaluate\",\"NotebookEventActions\",\"NotebookFileName\",\"NotebookFind\",\"NotebookFindReturnObject\",\"NotebookGet\",\"NotebookGetLayoutInformationPacket\",\"NotebookGetMisspellingsPacket\",\"NotebookImport\",\"NotebookInformation\",\"NotebookInterfaceObject\",\"NotebookLocate\",\"NotebookObject\",\"NotebookOpen\",\"NotebookOpenReturnObject\",\"NotebookPath\",\"NotebookPrint\",\"NotebookPut\",\"NotebookPutReturnObject\",\"NotebookRead\",\"NotebookResetGeneratedCells\",\"Notebooks\",\"NotebookSave\",\"NotebookSaveAs\",\"NotebookSelection\",\"NotebookSetupLayoutInformationPacket\",\"NotebooksMenu\",\"NotebookTemplate\",\"NotebookWrite\",\"NotElement\",\"NotEqualTilde\",\"NotExists\",\"NotGreater\",\"NotGreaterEqual\",\"NotGreaterFullEqual\",\"NotGreaterGreater\",\"NotGreaterLess\",\"NotGreaterSlantEqual\",\"NotGreaterTilde\",\"Nothing\",\"NotHumpDownHump\",\"NotHumpEqual\",\"NotificationFunction\",\"NotLeftTriangle\",\"NotLeftTriangleBar\",\"NotLeftTriangleEqual\",\"NotLess\",\"NotLessEqual\",\"NotLessFullEqual\",\"NotLessGreater\",\"NotLessLess\",\"NotLessSlantEqual\",\"NotLessTilde\",\"NotNestedGreaterGreater\",\"NotNestedLessLess\",\"NotPrecedes\",\"NotPrecedesEqual\",\"NotPrecedesSlantEqual\",\"NotPrecedesTilde\",\"NotReverseElement\",\"NotRightTriangle\",\"NotRightTriangleBar\",\"NotRightTriangleEqual\",\"NotSquareSubset\",\"NotSquareSubsetEqual\",\"NotSquareSuperset\",\"NotSquareSupersetEqual\",\"NotSubset\",\"NotSubsetEqual\",\"NotSucceeds\",\"NotSucceedsEqual\",\"NotSucceedsSlantEqual\",\"NotSucceedsTilde\",\"NotSuperset\",\"NotSupersetEqual\",\"NotTilde\",\"NotTildeEqual\",\"NotTildeFullEqual\",\"NotTildeTilde\",\"NotVerticalBar\",\"Now\",\"NoWhitespace\",\"NProbability\",\"NProduct\",\"NProductFactors\",\"NRoots\",\"NSolve\",\"NSum\",\"NSumTerms\",\"NuclearExplosionData\",\"NuclearReactorData\",\"Null\",\"NullRecords\",\"NullSpace\",\"NullWords\",\"Number\",\"NumberCompose\",\"NumberDecompose\",\"NumberExpand\",\"NumberFieldClassNumber\",\"NumberFieldDiscriminant\",\"NumberFieldFundamentalUnits\",\"NumberFieldIntegralBasis\",\"NumberFieldNormRepresentatives\",\"NumberFieldRegulator\",\"NumberFieldRootsOfUnity\",\"NumberFieldSignature\",\"NumberForm\",\"NumberFormat\",\"NumberLinePlot\",\"NumberMarks\",\"NumberMultiplier\",\"NumberPadding\",\"NumberPoint\",\"NumberQ\",\"NumberSeparator\",\"NumberSigns\",\"NumberString\",\"Numerator\",\"NumeratorDenominator\",\"NumericalOrder\",\"NumericalSort\",\"NumericArray\",\"NumericArrayQ\",\"NumericArrayType\",\"NumericFunction\",\"NumericQ\",\"NuttallWindow\",\"NValues\",\"NyquistGridLines\",\"NyquistPlot\",\"O\",\"ObservabilityGramian\",\"ObservabilityMatrix\",\"ObservableDecomposition\",\"ObservableModelQ\",\"OceanData\",\"Octahedron\",\"OddQ\",\"Off\",\"Offset\",\"OLEData\",\"On\",\"ONanGroupON\",\"Once\",\"OneIdentity\",\"Opacity\",\"OpacityFunction\",\"OpacityFunctionScaling\",\"Open\",\"OpenAppend\",\"Opener\",\"OpenerBox\",\"OpenerBoxOptions\",\"OpenerView\",\"OpenFunctionInspectorPacket\",\"Opening\",\"OpenRead\",\"OpenSpecialOptions\",\"OpenTemporary\",\"OpenWrite\",\"Operate\",\"OperatingSystem\",\"OperatorApplied\",\"OptimumFlowData\",\"Optional\",\"OptionalElement\",\"OptionInspectorSettings\",\"OptionQ\",\"Options\",\"OptionsPacket\",\"OptionsPattern\",\"OptionValue\",\"OptionValueBox\",\"OptionValueBoxOptions\",\"Or\",\"Orange\",\"Order\",\"OrderDistribution\",\"OrderedQ\",\"Ordering\",\"OrderingBy\",\"OrderingLayer\",\"Orderless\",\"OrderlessPatternSequence\",\"OrnsteinUhlenbeckProcess\",\"Orthogonalize\",\"OrthogonalMatrixQ\",\"Out\",\"Outer\",\"OuterPolygon\",\"OuterPolyhedron\",\"OutputAutoOverwrite\",\"OutputControllabilityMatrix\",\"OutputControllableModelQ\",\"OutputForm\",\"OutputFormData\",\"OutputGrouping\",\"OutputMathEditExpression\",\"OutputNamePacket\",\"OutputResponse\",\"OutputSizeLimit\",\"OutputStream\",\"Over\",\"OverBar\",\"OverDot\",\"Overflow\",\"OverHat\",\"Overlaps\",\"Overlay\",\"OverlayBox\",\"OverlayBoxOptions\",\"Overscript\",\"OverscriptBox\",\"OverscriptBoxOptions\",\"OverTilde\",\"OverVector\",\"OverwriteTarget\",\"OwenT\",\"OwnValues\",\"Package\",\"PackingMethod\",\"PackPaclet\",\"PacletDataRebuild\",\"PacletDirectoryAdd\",\"PacletDirectoryLoad\",\"PacletDirectoryRemove\",\"PacletDirectoryUnload\",\"PacletDisable\",\"PacletEnable\",\"PacletFind\",\"PacletFindRemote\",\"PacletInformation\",\"PacletInstall\",\"PacletInstallSubmit\",\"PacletNewerQ\",\"PacletObject\",\"PacletObjectQ\",\"PacletSite\",\"PacletSiteObject\",\"PacletSiteRegister\",\"PacletSites\",\"PacletSiteUnregister\",\"PacletSiteUpdate\",\"PacletUninstall\",\"PacletUpdate\",\"PaddedForm\",\"Padding\",\"PaddingLayer\",\"PaddingSize\",\"PadeApproximant\",\"PadLeft\",\"PadRight\",\"PageBreakAbove\",\"PageBreakBelow\",\"PageBreakWithin\",\"PageFooterLines\",\"PageFooters\",\"PageHeaderLines\",\"PageHeaders\",\"PageHeight\",\"PageRankCentrality\",\"PageTheme\",\"PageWidth\",\"Pagination\",\"PairedBarChart\",\"PairedHistogram\",\"PairedSmoothHistogram\",\"PairedTTest\",\"PairedZTest\",\"PaletteNotebook\",\"PalettePath\",\"PalindromeQ\",\"Pane\",\"PaneBox\",\"PaneBoxOptions\",\"Panel\",\"PanelBox\",\"PanelBoxOptions\",\"Paneled\",\"PaneSelector\",\"PaneSelectorBox\",\"PaneSelectorBoxOptions\",\"PaperWidth\",\"ParabolicCylinderD\",\"ParagraphIndent\",\"ParagraphSpacing\",\"ParallelArray\",\"ParallelCombine\",\"ParallelDo\",\"Parallelepiped\",\"ParallelEvaluate\",\"Parallelization\",\"Parallelize\",\"ParallelMap\",\"ParallelNeeds\",\"Parallelogram\",\"ParallelProduct\",\"ParallelSubmit\",\"ParallelSum\",\"ParallelTable\",\"ParallelTry\",\"Parameter\",\"ParameterEstimator\",\"ParameterMixtureDistribution\",\"ParameterVariables\",\"ParametricFunction\",\"ParametricNDSolve\",\"ParametricNDSolveValue\",\"ParametricPlot\",\"ParametricPlot3D\",\"ParametricRampLayer\",\"ParametricRegion\",\"ParentBox\",\"ParentCell\",\"ParentConnect\",\"ParentDirectory\",\"ParentForm\",\"Parenthesize\",\"ParentList\",\"ParentNotebook\",\"ParetoDistribution\",\"ParetoPickandsDistribution\",\"ParkData\",\"Part\",\"PartBehavior\",\"PartialCorrelationFunction\",\"PartialD\",\"ParticleAcceleratorData\",\"ParticleData\",\"Partition\",\"PartitionGranularity\",\"PartitionsP\",\"PartitionsQ\",\"PartLayer\",\"PartOfSpeech\",\"PartProtection\",\"ParzenWindow\",\"PascalDistribution\",\"PassEventsDown\",\"PassEventsUp\",\"Paste\",\"PasteAutoQuoteCharacters\",\"PasteBoxFormInlineCells\",\"PasteButton\",\"Path\",\"PathGraph\",\"PathGraphQ\",\"Pattern\",\"PatternFilling\",\"PatternSequence\",\"PatternTest\",\"PauliMatrix\",\"PaulWavelet\",\"Pause\",\"PausedTime\",\"PDF\",\"PeakDetect\",\"PeanoCurve\",\"PearsonChiSquareTest\",\"PearsonCorrelationTest\",\"PearsonDistribution\",\"PercentForm\",\"PerfectNumber\",\"PerfectNumberQ\",\"PerformanceGoal\",\"Perimeter\",\"PeriodicBoundaryCondition\",\"PeriodicInterpolation\",\"Periodogram\",\"PeriodogramArray\",\"Permanent\",\"Permissions\",\"PermissionsGroup\",\"PermissionsGroupMemberQ\",\"PermissionsGroups\",\"PermissionsKey\",\"PermissionsKeys\",\"PermutationCycles\",\"PermutationCyclesQ\",\"PermutationGroup\",\"PermutationLength\",\"PermutationList\",\"PermutationListQ\",\"PermutationMax\",\"PermutationMin\",\"PermutationOrder\",\"PermutationPower\",\"PermutationProduct\",\"PermutationReplace\",\"Permutations\",\"PermutationSupport\",\"Permute\",\"PeronaMalikFilter\",\"Perpendicular\",\"PerpendicularBisector\",\"PersistenceLocation\",\"PersistenceTime\",\"PersistentObject\",\"PersistentObjects\",\"PersistentValue\",\"PersonData\",\"PERTDistribution\",\"PetersenGraph\",\"PhaseMargins\",\"PhaseRange\",\"PhysicalSystemData\",\"Pi\",\"Pick\",\"PIDData\",\"PIDDerivativeFilter\",\"PIDFeedforward\",\"PIDTune\",\"Piecewise\",\"PiecewiseExpand\",\"PieChart\",\"PieChart3D\",\"PillaiTrace\",\"PillaiTraceTest\",\"PingTime\",\"Pink\",\"PitchRecognize\",\"Pivoting\",\"PixelConstrained\",\"PixelValue\",\"PixelValuePositions\",\"Placed\",\"Placeholder\",\"PlaceholderReplace\",\"Plain\",\"PlanarAngle\",\"PlanarGraph\",\"PlanarGraphQ\",\"PlanckRadiationLaw\",\"PlaneCurveData\",\"PlanetaryMoonData\",\"PlanetData\",\"PlantData\",\"Play\",\"PlayRange\",\"Plot\",\"Plot3D\",\"Plot3Matrix\",\"PlotDivision\",\"PlotJoined\",\"PlotLabel\",\"PlotLabels\",\"PlotLayout\",\"PlotLegends\",\"PlotMarkers\",\"PlotPoints\",\"PlotRange\",\"PlotRangeClipping\",\"PlotRangeClipPlanesStyle\",\"PlotRangePadding\",\"PlotRegion\",\"PlotStyle\",\"PlotTheme\",\"Pluralize\",\"Plus\",\"PlusMinus\",\"Pochhammer\",\"PodStates\",\"PodWidth\",\"Point\",\"Point3DBox\",\"Point3DBoxOptions\",\"PointBox\",\"PointBoxOptions\",\"PointFigureChart\",\"PointLegend\",\"PointSize\",\"PoissonConsulDistribution\",\"PoissonDistribution\",\"PoissonProcess\",\"PoissonWindow\",\"PolarAxes\",\"PolarAxesOrigin\",\"PolarGridLines\",\"PolarPlot\",\"PolarTicks\",\"PoleZeroMarkers\",\"PolyaAeppliDistribution\",\"PolyGamma\",\"Polygon\",\"Polygon3DBox\",\"Polygon3DBoxOptions\",\"PolygonalNumber\",\"PolygonAngle\",\"PolygonBox\",\"PolygonBoxOptions\",\"PolygonCoordinates\",\"PolygonDecomposition\",\"PolygonHoleScale\",\"PolygonIntersections\",\"PolygonScale\",\"Polyhedron\",\"PolyhedronAngle\",\"PolyhedronCoordinates\",\"PolyhedronData\",\"PolyhedronDecomposition\",\"PolyhedronGenus\",\"PolyLog\",\"PolynomialExtendedGCD\",\"PolynomialForm\",\"PolynomialGCD\",\"PolynomialLCM\",\"PolynomialMod\",\"PolynomialQ\",\"PolynomialQuotient\",\"PolynomialQuotientRemainder\",\"PolynomialReduce\",\"PolynomialRemainder\",\"Polynomials\",\"PoolingLayer\",\"PopupMenu\",\"PopupMenuBox\",\"PopupMenuBoxOptions\",\"PopupView\",\"PopupWindow\",\"Position\",\"PositionIndex\",\"Positive\",\"PositiveDefiniteMatrixQ\",\"PositiveIntegers\",\"PositiveRationals\",\"PositiveReals\",\"PositiveSemidefiniteMatrixQ\",\"PossibleZeroQ\",\"Postfix\",\"PostScript\",\"Power\",\"PowerDistribution\",\"PowerExpand\",\"PowerMod\",\"PowerModList\",\"PowerRange\",\"PowerSpectralDensity\",\"PowersRepresentations\",\"PowerSymmetricPolynomial\",\"Precedence\",\"PrecedenceForm\",\"Precedes\",\"PrecedesEqual\",\"PrecedesSlantEqual\",\"PrecedesTilde\",\"Precision\",\"PrecisionGoal\",\"PreDecrement\",\"Predict\",\"PredictionRoot\",\"PredictorFunction\",\"PredictorInformation\",\"PredictorMeasurements\",\"PredictorMeasurementsObject\",\"PreemptProtect\",\"PreferencesPath\",\"Prefix\",\"PreIncrement\",\"Prepend\",\"PrependLayer\",\"PrependTo\",\"PreprocessingRules\",\"PreserveColor\",\"PreserveImageOptions\",\"Previous\",\"PreviousCell\",\"PreviousDate\",\"PriceGraphDistribution\",\"PrimaryPlaceholder\",\"Prime\",\"PrimeNu\",\"PrimeOmega\",\"PrimePi\",\"PrimePowerQ\",\"PrimeQ\",\"Primes\",\"PrimeZetaP\",\"PrimitivePolynomialQ\",\"PrimitiveRoot\",\"PrimitiveRootList\",\"PrincipalComponents\",\"PrincipalValue\",\"Print\",\"PrintableASCIIQ\",\"PrintAction\",\"PrintForm\",\"PrintingCopies\",\"PrintingOptions\",\"PrintingPageRange\",\"PrintingStartingPageNumber\",\"PrintingStyleEnvironment\",\"Printout3D\",\"Printout3DPreviewer\",\"PrintPrecision\",\"PrintTemporary\",\"Prism\",\"PrismBox\",\"PrismBoxOptions\",\"PrivateCellOptions\",\"PrivateEvaluationOptions\",\"PrivateFontOptions\",\"PrivateFrontEndOptions\",\"PrivateKey\",\"PrivateNotebookOptions\",\"PrivatePaths\",\"Probability\",\"ProbabilityDistribution\",\"ProbabilityPlot\",\"ProbabilityPr\",\"ProbabilityScalePlot\",\"ProbitModelFit\",\"ProcessConnection\",\"ProcessDirectory\",\"ProcessEnvironment\",\"Processes\",\"ProcessEstimator\",\"ProcessInformation\",\"ProcessObject\",\"ProcessParameterAssumptions\",\"ProcessParameterQ\",\"ProcessStateDomain\",\"ProcessStatus\",\"ProcessTimeDomain\",\"Product\",\"ProductDistribution\",\"ProductLog\",\"ProgressIndicator\",\"ProgressIndicatorBox\",\"ProgressIndicatorBoxOptions\",\"Projection\",\"Prolog\",\"PromptForm\",\"ProofObject\",\"Properties\",\"Property\",\"PropertyList\",\"PropertyValue\",\"Proportion\",\"Proportional\",\"Protect\",\"Protected\",\"ProteinData\",\"Pruning\",\"PseudoInverse\",\"PsychrometricPropertyData\",\"PublicKey\",\"PublisherID\",\"PulsarData\",\"PunctuationCharacter\",\"Purple\",\"Put\",\"PutAppend\",\"Pyramid\",\"PyramidBox\",\"PyramidBoxOptions\",\"QBinomial\",\"QFactorial\",\"QGamma\",\"QHypergeometricPFQ\",\"QnDispersion\",\"QPochhammer\",\"QPolyGamma\",\"QRDecomposition\",\"QuadraticIrrationalQ\",\"QuadraticOptimization\",\"Quantile\",\"QuantilePlot\",\"Quantity\",\"QuantityArray\",\"QuantityDistribution\",\"QuantityForm\",\"QuantityMagnitude\",\"QuantityQ\",\"QuantityUnit\",\"QuantityVariable\",\"QuantityVariableCanonicalUnit\",\"QuantityVariableDimensions\",\"QuantityVariableIdentifier\",\"QuantityVariablePhysicalQuantity\",\"Quartics\",\"QuartileDeviation\",\"Quartiles\",\"QuartileSkewness\",\"Query\",\"QueueingNetworkProcess\",\"QueueingProcess\",\"QueueProperties\",\"Quiet\",\"Quit\",\"Quotient\",\"QuotientRemainder\",\"RadialGradientImage\",\"RadialityCentrality\",\"RadicalBox\",\"RadicalBoxOptions\",\"RadioButton\",\"RadioButtonBar\",\"RadioButtonBox\",\"RadioButtonBoxOptions\",\"Radon\",\"RadonTransform\",\"RamanujanTau\",\"RamanujanTauL\",\"RamanujanTauTheta\",\"RamanujanTauZ\",\"Ramp\",\"Random\",\"RandomChoice\",\"RandomColor\",\"RandomComplex\",\"RandomEntity\",\"RandomFunction\",\"RandomGeoPosition\",\"RandomGraph\",\"RandomImage\",\"RandomInstance\",\"RandomInteger\",\"RandomPermutation\",\"RandomPoint\",\"RandomPolygon\",\"RandomPolyhedron\",\"RandomPrime\",\"RandomReal\",\"RandomSample\",\"RandomSeed\",\"RandomSeeding\",\"RandomVariate\",\"RandomWalkProcess\",\"RandomWord\",\"Range\",\"RangeFilter\",\"RangeSpecification\",\"RankedMax\",\"RankedMin\",\"RarerProbability\",\"Raster\",\"Raster3D\",\"Raster3DBox\",\"Raster3DBoxOptions\",\"RasterArray\",\"RasterBox\",\"RasterBoxOptions\",\"Rasterize\",\"RasterSize\",\"Rational\",\"RationalFunctions\",\"Rationalize\",\"Rationals\",\"Ratios\",\"RawArray\",\"RawBoxes\",\"RawData\",\"RawMedium\",\"RayleighDistribution\",\"Re\",\"Read\",\"ReadByteArray\",\"ReadLine\",\"ReadList\",\"ReadProtected\",\"ReadString\",\"Real\",\"RealAbs\",\"RealBlockDiagonalForm\",\"RealDigits\",\"RealExponent\",\"Reals\",\"RealSign\",\"Reap\",\"RebuildPacletData\",\"RecognitionPrior\",\"RecognitionThreshold\",\"Record\",\"RecordLists\",\"RecordSeparators\",\"Rectangle\",\"RectangleBox\",\"RectangleBoxOptions\",\"RectangleChart\",\"RectangleChart3D\",\"RectangularRepeatingElement\",\"RecurrenceFilter\",\"RecurrenceTable\",\"RecurringDigitsForm\",\"Red\",\"Reduce\",\"RefBox\",\"ReferenceLineStyle\",\"ReferenceMarkers\",\"ReferenceMarkerStyle\",\"Refine\",\"ReflectionMatrix\",\"ReflectionTransform\",\"Refresh\",\"RefreshRate\",\"Region\",\"RegionBinarize\",\"RegionBoundary\",\"RegionBoundaryStyle\",\"RegionBounds\",\"RegionCentroid\",\"RegionDifference\",\"RegionDimension\",\"RegionDisjoint\",\"RegionDistance\",\"RegionDistanceFunction\",\"RegionEmbeddingDimension\",\"RegionEqual\",\"RegionFillingStyle\",\"RegionFunction\",\"RegionImage\",\"RegionIntersection\",\"RegionMeasure\",\"RegionMember\",\"RegionMemberFunction\",\"RegionMoment\",\"RegionNearest\",\"RegionNearestFunction\",\"RegionPlot\",\"RegionPlot3D\",\"RegionProduct\",\"RegionQ\",\"RegionResize\",\"RegionSize\",\"RegionSymmetricDifference\",\"RegionUnion\",\"RegionWithin\",\"RegisterExternalEvaluator\",\"RegularExpression\",\"Regularization\",\"RegularlySampledQ\",\"RegularPolygon\",\"ReIm\",\"ReImLabels\",\"ReImPlot\",\"ReImStyle\",\"Reinstall\",\"RelationalDatabase\",\"RelationGraph\",\"Release\",\"ReleaseHold\",\"ReliabilityDistribution\",\"ReliefImage\",\"ReliefPlot\",\"RemoteAuthorizationCaching\",\"RemoteConnect\",\"RemoteConnectionObject\",\"RemoteFile\",\"RemoteRun\",\"RemoteRunProcess\",\"Remove\",\"RemoveAlphaChannel\",\"RemoveAsynchronousTask\",\"RemoveAudioStream\",\"RemoveBackground\",\"RemoveChannelListener\",\"RemoveChannelSubscribers\",\"Removed\",\"RemoveDiacritics\",\"RemoveInputStreamMethod\",\"RemoveOutputStreamMethod\",\"RemoveProperty\",\"RemoveScheduledTask\",\"RemoveUsers\",\"RemoveVideoStream\",\"RenameDirectory\",\"RenameFile\",\"RenderAll\",\"RenderingOptions\",\"RenewalProcess\",\"RenkoChart\",\"RepairMesh\",\"Repeated\",\"RepeatedNull\",\"RepeatedString\",\"RepeatedTiming\",\"RepeatingElement\",\"Replace\",\"ReplaceAll\",\"ReplaceHeldPart\",\"ReplaceImageValue\",\"ReplaceList\",\"ReplacePart\",\"ReplacePixelValue\",\"ReplaceRepeated\",\"ReplicateLayer\",\"RequiredPhysicalQuantities\",\"Resampling\",\"ResamplingAlgorithmData\",\"ResamplingMethod\",\"Rescale\",\"RescalingTransform\",\"ResetDirectory\",\"ResetMenusPacket\",\"ResetScheduledTask\",\"ReshapeLayer\",\"Residue\",\"ResizeLayer\",\"Resolve\",\"ResourceAcquire\",\"ResourceData\",\"ResourceFunction\",\"ResourceObject\",\"ResourceRegister\",\"ResourceRemove\",\"ResourceSearch\",\"ResourceSubmissionObject\",\"ResourceSubmit\",\"ResourceSystemBase\",\"ResourceSystemPath\",\"ResourceUpdate\",\"ResourceVersion\",\"ResponseForm\",\"Rest\",\"RestartInterval\",\"Restricted\",\"Resultant\",\"ResumePacket\",\"Return\",\"ReturnEntersInput\",\"ReturnExpressionPacket\",\"ReturnInputFormPacket\",\"ReturnPacket\",\"ReturnReceiptFunction\",\"ReturnTextPacket\",\"Reverse\",\"ReverseApplied\",\"ReverseBiorthogonalSplineWavelet\",\"ReverseElement\",\"ReverseEquilibrium\",\"ReverseGraph\",\"ReverseSort\",\"ReverseSortBy\",\"ReverseUpEquilibrium\",\"RevolutionAxis\",\"RevolutionPlot3D\",\"RGBColor\",\"RiccatiSolve\",\"RiceDistribution\",\"RidgeFilter\",\"RiemannR\",\"RiemannSiegelTheta\",\"RiemannSiegelZ\",\"RiemannXi\",\"Riffle\",\"Right\",\"RightArrow\",\"RightArrowBar\",\"RightArrowLeftArrow\",\"RightComposition\",\"RightCosetRepresentative\",\"RightDownTeeVector\",\"RightDownVector\",\"RightDownVectorBar\",\"RightTee\",\"RightTeeArrow\",\"RightTeeVector\",\"RightTriangle\",\"RightTriangleBar\",\"RightTriangleEqual\",\"RightUpDownVector\",\"RightUpTeeVector\",\"RightUpVector\",\"RightUpVectorBar\",\"RightVector\",\"RightVectorBar\",\"RiskAchievementImportance\",\"RiskReductionImportance\",\"RogersTanimotoDissimilarity\",\"RollPitchYawAngles\",\"RollPitchYawMatrix\",\"RomanNumeral\",\"Root\",\"RootApproximant\",\"RootIntervals\",\"RootLocusPlot\",\"RootMeanSquare\",\"RootOfUnityQ\",\"RootReduce\",\"Roots\",\"RootSum\",\"Rotate\",\"RotateLabel\",\"RotateLeft\",\"RotateRight\",\"RotationAction\",\"RotationBox\",\"RotationBoxOptions\",\"RotationMatrix\",\"RotationTransform\",\"Round\",\"RoundImplies\",\"RoundingRadius\",\"Row\",\"RowAlignments\",\"RowBackgrounds\",\"RowBox\",\"RowHeights\",\"RowLines\",\"RowMinHeight\",\"RowReduce\",\"RowsEqual\",\"RowSpacings\",\"RSolve\",\"RSolveValue\",\"RudinShapiro\",\"RudvalisGroupRu\",\"Rule\",\"RuleCondition\",\"RuleDelayed\",\"RuleForm\",\"RulePlot\",\"RulerUnits\",\"Run\",\"RunProcess\",\"RunScheduledTask\",\"RunThrough\",\"RuntimeAttributes\",\"RuntimeOptions\",\"RussellRaoDissimilarity\",\"SameQ\",\"SameTest\",\"SameTestProperties\",\"SampledEntityClass\",\"SampleDepth\",\"SampledSoundFunction\",\"SampledSoundList\",\"SampleRate\",\"SamplingPeriod\",\"SARIMAProcess\",\"SARMAProcess\",\"SASTriangle\",\"SatelliteData\",\"SatisfiabilityCount\",\"SatisfiabilityInstances\",\"SatisfiableQ\",\"Saturday\",\"Save\",\"Saveable\",\"SaveAutoDelete\",\"SaveConnection\",\"SaveDefinitions\",\"SavitzkyGolayMatrix\",\"SawtoothWave\",\"Scale\",\"Scaled\",\"ScaleDivisions\",\"ScaledMousePosition\",\"ScaleOrigin\",\"ScalePadding\",\"ScaleRanges\",\"ScaleRangeStyle\",\"ScalingFunctions\",\"ScalingMatrix\",\"ScalingTransform\",\"Scan\",\"ScheduledTask\",\"ScheduledTaskActiveQ\",\"ScheduledTaskInformation\",\"ScheduledTaskInformationData\",\"ScheduledTaskObject\",\"ScheduledTasks\",\"SchurDecomposition\",\"ScientificForm\",\"ScientificNotationThreshold\",\"ScorerGi\",\"ScorerGiPrime\",\"ScorerHi\",\"ScorerHiPrime\",\"ScreenRectangle\",\"ScreenStyleEnvironment\",\"ScriptBaselineShifts\",\"ScriptForm\",\"ScriptLevel\",\"ScriptMinSize\",\"ScriptRules\",\"ScriptSizeMultipliers\",\"Scrollbars\",\"ScrollingOptions\",\"ScrollPosition\",\"SearchAdjustment\",\"SearchIndexObject\",\"SearchIndices\",\"SearchQueryString\",\"SearchResultObject\",\"Sec\",\"Sech\",\"SechDistribution\",\"SecondOrderConeOptimization\",\"SectionGrouping\",\"SectorChart\",\"SectorChart3D\",\"SectorOrigin\",\"SectorSpacing\",\"SecuredAuthenticationKey\",\"SecuredAuthenticationKeys\",\"SeedRandom\",\"Select\",\"Selectable\",\"SelectComponents\",\"SelectedCells\",\"SelectedNotebook\",\"SelectFirst\",\"Selection\",\"SelectionAnimate\",\"SelectionCell\",\"SelectionCellCreateCell\",\"SelectionCellDefaultStyle\",\"SelectionCellParentStyle\",\"SelectionCreateCell\",\"SelectionDebuggerTag\",\"SelectionDuplicateCell\",\"SelectionEvaluate\",\"SelectionEvaluateCreateCell\",\"SelectionMove\",\"SelectionPlaceholder\",\"SelectionSetStyle\",\"SelectWithContents\",\"SelfLoops\",\"SelfLoopStyle\",\"SemanticImport\",\"SemanticImportString\",\"SemanticInterpretation\",\"SemialgebraicComponentInstances\",\"SemidefiniteOptimization\",\"SendMail\",\"SendMessage\",\"Sequence\",\"SequenceAlignment\",\"SequenceAttentionLayer\",\"SequenceCases\",\"SequenceCount\",\"SequenceFold\",\"SequenceFoldList\",\"SequenceForm\",\"SequenceHold\",\"SequenceLastLayer\",\"SequenceMostLayer\",\"SequencePosition\",\"SequencePredict\",\"SequencePredictorFunction\",\"SequenceReplace\",\"SequenceRestLayer\",\"SequenceReverseLayer\",\"SequenceSplit\",\"Series\",\"SeriesCoefficient\",\"SeriesData\",\"SeriesTermGoal\",\"ServiceConnect\",\"ServiceDisconnect\",\"ServiceExecute\",\"ServiceObject\",\"ServiceRequest\",\"ServiceResponse\",\"ServiceSubmit\",\"SessionSubmit\",\"SessionTime\",\"Set\",\"SetAccuracy\",\"SetAlphaChannel\",\"SetAttributes\",\"Setbacks\",\"SetBoxFormNamesPacket\",\"SetCloudDirectory\",\"SetCookies\",\"SetDelayed\",\"SetDirectory\",\"SetEnvironment\",\"SetEvaluationNotebook\",\"SetFileDate\",\"SetFileLoadingContext\",\"SetNotebookStatusLine\",\"SetOptions\",\"SetOptionsPacket\",\"SetPermissions\",\"SetPrecision\",\"SetProperty\",\"SetSecuredAuthenticationKey\",\"SetSelectedNotebook\",\"SetSharedFunction\",\"SetSharedVariable\",\"SetSpeechParametersPacket\",\"SetStreamPosition\",\"SetSystemModel\",\"SetSystemOptions\",\"Setter\",\"SetterBar\",\"SetterBox\",\"SetterBoxOptions\",\"Setting\",\"SetUsers\",\"SetValue\",\"Shading\",\"Shallow\",\"ShannonWavelet\",\"ShapiroWilkTest\",\"Share\",\"SharingList\",\"Sharpen\",\"ShearingMatrix\",\"ShearingTransform\",\"ShellRegion\",\"ShenCastanMatrix\",\"ShiftedGompertzDistribution\",\"ShiftRegisterSequence\",\"Short\",\"ShortDownArrow\",\"Shortest\",\"ShortestMatch\",\"ShortestPathFunction\",\"ShortLeftArrow\",\"ShortRightArrow\",\"ShortTimeFourier\",\"ShortTimeFourierData\",\"ShortUpArrow\",\"Show\",\"ShowAutoConvert\",\"ShowAutoSpellCheck\",\"ShowAutoStyles\",\"ShowCellBracket\",\"ShowCellLabel\",\"ShowCellTags\",\"ShowClosedCellArea\",\"ShowCodeAssist\",\"ShowContents\",\"ShowControls\",\"ShowCursorTracker\",\"ShowGroupOpenCloseIcon\",\"ShowGroupOpener\",\"ShowInvisibleCharacters\",\"ShowPageBreaks\",\"ShowPredictiveInterface\",\"ShowSelection\",\"ShowShortBoxForm\",\"ShowSpecialCharacters\",\"ShowStringCharacters\",\"ShowSyntaxStyles\",\"ShrinkingDelay\",\"ShrinkWrapBoundingBox\",\"SiderealTime\",\"SiegelTheta\",\"SiegelTukeyTest\",\"SierpinskiCurve\",\"SierpinskiMesh\",\"Sign\",\"Signature\",\"SignedRankTest\",\"SignedRegionDistance\",\"SignificanceLevel\",\"SignPadding\",\"SignTest\",\"SimilarityRules\",\"SimpleGraph\",\"SimpleGraphQ\",\"SimplePolygonQ\",\"SimplePolyhedronQ\",\"Simplex\",\"Simplify\",\"Sin\",\"Sinc\",\"SinghMaddalaDistribution\",\"SingleEvaluation\",\"SingleLetterItalics\",\"SingleLetterStyle\",\"SingularValueDecomposition\",\"SingularValueList\",\"SingularValuePlot\",\"SingularValues\",\"Sinh\",\"SinhIntegral\",\"SinIntegral\",\"SixJSymbol\",\"Skeleton\",\"SkeletonTransform\",\"SkellamDistribution\",\"Skewness\",\"SkewNormalDistribution\",\"SkinStyle\",\"Skip\",\"SliceContourPlot3D\",\"SliceDensityPlot3D\",\"SliceDistribution\",\"SliceVectorPlot3D\",\"Slider\",\"Slider2D\",\"Slider2DBox\",\"Slider2DBoxOptions\",\"SliderBox\",\"SliderBoxOptions\",\"SlideView\",\"Slot\",\"SlotSequence\",\"Small\",\"SmallCircle\",\"Smaller\",\"SmithDecomposition\",\"SmithDelayCompensator\",\"SmithWatermanSimilarity\",\"SmoothDensityHistogram\",\"SmoothHistogram\",\"SmoothHistogram3D\",\"SmoothKernelDistribution\",\"SnDispersion\",\"Snippet\",\"SnubPolyhedron\",\"SocialMediaData\",\"Socket\",\"SocketConnect\",\"SocketListen\",\"SocketListener\",\"SocketObject\",\"SocketOpen\",\"SocketReadMessage\",\"SocketReadyQ\",\"Sockets\",\"SocketWaitAll\",\"SocketWaitNext\",\"SoftmaxLayer\",\"SokalSneathDissimilarity\",\"SolarEclipse\",\"SolarSystemFeatureData\",\"SolidAngle\",\"SolidData\",\"SolidRegionQ\",\"Solve\",\"SolveAlways\",\"SolveDelayed\",\"Sort\",\"SortBy\",\"SortedBy\",\"SortedEntityClass\",\"Sound\",\"SoundAndGraphics\",\"SoundNote\",\"SoundVolume\",\"SourceLink\",\"Sow\",\"Space\",\"SpaceCurveData\",\"SpaceForm\",\"Spacer\",\"Spacings\",\"Span\",\"SpanAdjustments\",\"SpanCharacterRounding\",\"SpanFromAbove\",\"SpanFromBoth\",\"SpanFromLeft\",\"SpanLineThickness\",\"SpanMaxSize\",\"SpanMinSize\",\"SpanningCharacters\",\"SpanSymmetric\",\"SparseArray\",\"SpatialGraphDistribution\",\"SpatialMedian\",\"SpatialTransformationLayer\",\"Speak\",\"SpeakerMatchQ\",\"SpeakTextPacket\",\"SpearmanRankTest\",\"SpearmanRho\",\"SpeciesData\",\"SpecificityGoal\",\"SpectralLineData\",\"Spectrogram\",\"SpectrogramArray\",\"Specularity\",\"SpeechCases\",\"SpeechInterpreter\",\"SpeechRecognize\",\"SpeechSynthesize\",\"SpellingCorrection\",\"SpellingCorrectionList\",\"SpellingDictionaries\",\"SpellingDictionariesPath\",\"SpellingOptions\",\"SpellingSuggestionsPacket\",\"Sphere\",\"SphereBox\",\"SpherePoints\",\"SphericalBesselJ\",\"SphericalBesselY\",\"SphericalHankelH1\",\"SphericalHankelH2\",\"SphericalHarmonicY\",\"SphericalPlot3D\",\"SphericalRegion\",\"SphericalShell\",\"SpheroidalEigenvalue\",\"SpheroidalJoiningFactor\",\"SpheroidalPS\",\"SpheroidalPSPrime\",\"SpheroidalQS\",\"SpheroidalQSPrime\",\"SpheroidalRadialFactor\",\"SpheroidalS1\",\"SpheroidalS1Prime\",\"SpheroidalS2\",\"SpheroidalS2Prime\",\"Splice\",\"SplicedDistribution\",\"SplineClosed\",\"SplineDegree\",\"SplineKnots\",\"SplineWeights\",\"Split\",\"SplitBy\",\"SpokenString\",\"Sqrt\",\"SqrtBox\",\"SqrtBoxOptions\",\"Square\",\"SquaredEuclideanDistance\",\"SquareFreeQ\",\"SquareIntersection\",\"SquareMatrixQ\",\"SquareRepeatingElement\",\"SquaresR\",\"SquareSubset\",\"SquareSubsetEqual\",\"SquareSuperset\",\"SquareSupersetEqual\",\"SquareUnion\",\"SquareWave\",\"SSSTriangle\",\"StabilityMargins\",\"StabilityMarginsStyle\",\"StableDistribution\",\"Stack\",\"StackBegin\",\"StackComplete\",\"StackedDateListPlot\",\"StackedListPlot\",\"StackInhibit\",\"StadiumShape\",\"StandardAtmosphereData\",\"StandardDeviation\",\"StandardDeviationFilter\",\"StandardForm\",\"Standardize\",\"Standardized\",\"StandardOceanData\",\"StandbyDistribution\",\"Star\",\"StarClusterData\",\"StarData\",\"StarGraph\",\"StartAsynchronousTask\",\"StartExternalSession\",\"StartingStepSize\",\"StartOfLine\",\"StartOfString\",\"StartProcess\",\"StartScheduledTask\",\"StartupSound\",\"StartWebSession\",\"StateDimensions\",\"StateFeedbackGains\",\"StateOutputEstimator\",\"StateResponse\",\"StateSpaceModel\",\"StateSpaceRealization\",\"StateSpaceTransform\",\"StateTransformationLinearize\",\"StationaryDistribution\",\"StationaryWaveletPacketTransform\",\"StationaryWaveletTransform\",\"StatusArea\",\"StatusCentrality\",\"StepMonitor\",\"StereochemistryElements\",\"StieltjesGamma\",\"StippleShading\",\"StirlingS1\",\"StirlingS2\",\"StopAsynchronousTask\",\"StoppingPowerData\",\"StopScheduledTask\",\"StrataVariables\",\"StratonovichProcess\",\"StreamColorFunction\",\"StreamColorFunctionScaling\",\"StreamDensityPlot\",\"StreamMarkers\",\"StreamPlot\",\"StreamPoints\",\"StreamPosition\",\"Streams\",\"StreamScale\",\"StreamStyle\",\"String\",\"StringBreak\",\"StringByteCount\",\"StringCases\",\"StringContainsQ\",\"StringCount\",\"StringDelete\",\"StringDrop\",\"StringEndsQ\",\"StringExpression\",\"StringExtract\",\"StringForm\",\"StringFormat\",\"StringFreeQ\",\"StringInsert\",\"StringJoin\",\"StringLength\",\"StringMatchQ\",\"StringPadLeft\",\"StringPadRight\",\"StringPart\",\"StringPartition\",\"StringPosition\",\"StringQ\",\"StringRepeat\",\"StringReplace\",\"StringReplaceList\",\"StringReplacePart\",\"StringReverse\",\"StringRiffle\",\"StringRotateLeft\",\"StringRotateRight\",\"StringSkeleton\",\"StringSplit\",\"StringStartsQ\",\"StringTake\",\"StringTemplate\",\"StringToByteArray\",\"StringToStream\",\"StringTrim\",\"StripBoxes\",\"StripOnInput\",\"StripWrapperBoxes\",\"StrokeForm\",\"StructuralImportance\",\"StructuredArray\",\"StructuredArrayHeadQ\",\"StructuredSelection\",\"StruveH\",\"StruveL\",\"Stub\",\"StudentTDistribution\",\"Style\",\"StyleBox\",\"StyleBoxAutoDelete\",\"StyleData\",\"StyleDefinitions\",\"StyleForm\",\"StyleHints\",\"StyleKeyMapping\",\"StyleMenuListing\",\"StyleNameDialogSettings\",\"StyleNames\",\"StylePrint\",\"StyleSheetPath\",\"Subdivide\",\"Subfactorial\",\"Subgraph\",\"SubMinus\",\"SubPlus\",\"SubresultantPolynomialRemainders\",\"SubresultantPolynomials\",\"Subresultants\",\"Subscript\",\"SubscriptBox\",\"SubscriptBoxOptions\",\"Subscripted\",\"Subsequences\",\"Subset\",\"SubsetCases\",\"SubsetCount\",\"SubsetEqual\",\"SubsetMap\",\"SubsetPosition\",\"SubsetQ\",\"SubsetReplace\",\"Subsets\",\"SubStar\",\"SubstitutionSystem\",\"Subsuperscript\",\"SubsuperscriptBox\",\"SubsuperscriptBoxOptions\",\"SubtitleEncoding\",\"SubtitleTracks\",\"Subtract\",\"SubtractFrom\",\"SubtractSides\",\"SubValues\",\"Succeeds\",\"SucceedsEqual\",\"SucceedsSlantEqual\",\"SucceedsTilde\",\"Success\",\"SuchThat\",\"Sum\",\"SumConvergence\",\"SummationLayer\",\"Sunday\",\"SunPosition\",\"Sunrise\",\"Sunset\",\"SuperDagger\",\"SuperMinus\",\"SupernovaData\",\"SuperPlus\",\"Superscript\",\"SuperscriptBox\",\"SuperscriptBoxOptions\",\"Superset\",\"SupersetEqual\",\"SuperStar\",\"Surd\",\"SurdForm\",\"SurfaceAppearance\",\"SurfaceArea\",\"SurfaceColor\",\"SurfaceData\",\"SurfaceGraphics\",\"SurvivalDistribution\",\"SurvivalFunction\",\"SurvivalModel\",\"SurvivalModelFit\",\"SuspendPacket\",\"SuzukiDistribution\",\"SuzukiGroupSuz\",\"SwatchLegend\",\"Switch\",\"Symbol\",\"SymbolName\",\"SymletWavelet\",\"Symmetric\",\"SymmetricGroup\",\"SymmetricKey\",\"SymmetricMatrixQ\",\"SymmetricPolynomial\",\"SymmetricReduction\",\"Symmetrize\",\"SymmetrizedArray\",\"SymmetrizedArrayRules\",\"SymmetrizedDependentComponents\",\"SymmetrizedIndependentComponents\",\"SymmetrizedReplacePart\",\"SynchronousInitialization\",\"SynchronousUpdating\",\"Synonyms\",\"Syntax\",\"SyntaxForm\",\"SyntaxInformation\",\"SyntaxLength\",\"SyntaxPacket\",\"SyntaxQ\",\"SynthesizeMissingValues\",\"SystemCredential\",\"SystemCredentialData\",\"SystemCredentialKey\",\"SystemCredentialKeys\",\"SystemCredentialStoreObject\",\"SystemDialogInput\",\"SystemException\",\"SystemGet\",\"SystemHelpPath\",\"SystemInformation\",\"SystemInformationData\",\"SystemInstall\",\"SystemModel\",\"SystemModeler\",\"SystemModelExamples\",\"SystemModelLinearize\",\"SystemModelParametricSimulate\",\"SystemModelPlot\",\"SystemModelProgressReporting\",\"SystemModelReliability\",\"SystemModels\",\"SystemModelSimulate\",\"SystemModelSimulateSensitivity\",\"SystemModelSimulationData\",\"SystemOpen\",\"SystemOptions\",\"SystemProcessData\",\"SystemProcesses\",\"SystemsConnectionsModel\",\"SystemsModelDelay\",\"SystemsModelDelayApproximate\",\"SystemsModelDelete\",\"SystemsModelDimensions\",\"SystemsModelExtract\",\"SystemsModelFeedbackConnect\",\"SystemsModelLabels\",\"SystemsModelLinearity\",\"SystemsModelMerge\",\"SystemsModelOrder\",\"SystemsModelParallelConnect\",\"SystemsModelSeriesConnect\",\"SystemsModelStateFeedbackConnect\",\"SystemsModelVectorRelativeOrders\",\"SystemStub\",\"SystemTest\",\"Tab\",\"TabFilling\",\"Table\",\"TableAlignments\",\"TableDepth\",\"TableDirections\",\"TableForm\",\"TableHeadings\",\"TableSpacing\",\"TableView\",\"TableViewBox\",\"TableViewBoxBackground\",\"TableViewBoxItemSize\",\"TableViewBoxOptions\",\"TabSpacings\",\"TabView\",\"TabViewBox\",\"TabViewBoxOptions\",\"TagBox\",\"TagBoxNote\",\"TagBoxOptions\",\"TaggingRules\",\"TagSet\",\"TagSetDelayed\",\"TagStyle\",\"TagUnset\",\"Take\",\"TakeDrop\",\"TakeLargest\",\"TakeLargestBy\",\"TakeList\",\"TakeSmallest\",\"TakeSmallestBy\",\"TakeWhile\",\"Tally\",\"Tan\",\"Tanh\",\"TargetDevice\",\"TargetFunctions\",\"TargetSystem\",\"TargetUnits\",\"TaskAbort\",\"TaskExecute\",\"TaskObject\",\"TaskRemove\",\"TaskResume\",\"Tasks\",\"TaskSuspend\",\"TaskWait\",\"TautologyQ\",\"TelegraphProcess\",\"TemplateApply\",\"TemplateArgBox\",\"TemplateBox\",\"TemplateBoxOptions\",\"TemplateEvaluate\",\"TemplateExpression\",\"TemplateIf\",\"TemplateObject\",\"TemplateSequence\",\"TemplateSlot\",\"TemplateSlotSequence\",\"TemplateUnevaluated\",\"TemplateVerbatim\",\"TemplateWith\",\"TemporalData\",\"TemporalRegularity\",\"Temporary\",\"TemporaryVariable\",\"TensorContract\",\"TensorDimensions\",\"TensorExpand\",\"TensorProduct\",\"TensorQ\",\"TensorRank\",\"TensorReduce\",\"TensorSymmetry\",\"TensorTranspose\",\"TensorWedge\",\"TestID\",\"TestReport\",\"TestReportObject\",\"TestResultObject\",\"Tetrahedron\",\"TetrahedronBox\",\"TetrahedronBoxOptions\",\"TeXForm\",\"TeXSave\",\"Text\",\"Text3DBox\",\"Text3DBoxOptions\",\"TextAlignment\",\"TextBand\",\"TextBoundingBox\",\"TextBox\",\"TextCases\",\"TextCell\",\"TextClipboardType\",\"TextContents\",\"TextData\",\"TextElement\",\"TextForm\",\"TextGrid\",\"TextJustification\",\"TextLine\",\"TextPacket\",\"TextParagraph\",\"TextPosition\",\"TextRecognize\",\"TextSearch\",\"TextSearchReport\",\"TextSentences\",\"TextString\",\"TextStructure\",\"TextStyle\",\"TextTranslation\",\"Texture\",\"TextureCoordinateFunction\",\"TextureCoordinateScaling\",\"TextWords\",\"Therefore\",\"ThermodynamicData\",\"ThermometerGauge\",\"Thick\",\"Thickness\",\"Thin\",\"Thinning\",\"ThisLink\",\"ThompsonGroupTh\",\"Thread\",\"ThreadingLayer\",\"ThreeJSymbol\",\"Threshold\",\"Through\",\"Throw\",\"ThueMorse\",\"Thumbnail\",\"Thursday\",\"Ticks\",\"TicksStyle\",\"TideData\",\"Tilde\",\"TildeEqual\",\"TildeFullEqual\",\"TildeTilde\",\"TimeConstrained\",\"TimeConstraint\",\"TimeDirection\",\"TimeFormat\",\"TimeGoal\",\"TimelinePlot\",\"TimeObject\",\"TimeObjectQ\",\"TimeRemaining\",\"Times\",\"TimesBy\",\"TimeSeries\",\"TimeSeriesAggregate\",\"TimeSeriesForecast\",\"TimeSeriesInsert\",\"TimeSeriesInvertibility\",\"TimeSeriesMap\",\"TimeSeriesMapThread\",\"TimeSeriesModel\",\"TimeSeriesModelFit\",\"TimeSeriesResample\",\"TimeSeriesRescale\",\"TimeSeriesShift\",\"TimeSeriesThread\",\"TimeSeriesWindow\",\"TimeUsed\",\"TimeValue\",\"TimeWarpingCorrespondence\",\"TimeWarpingDistance\",\"TimeZone\",\"TimeZoneConvert\",\"TimeZoneOffset\",\"Timing\",\"Tiny\",\"TitleGrouping\",\"TitsGroupT\",\"ToBoxes\",\"ToCharacterCode\",\"ToColor\",\"ToContinuousTimeModel\",\"ToDate\",\"Today\",\"ToDiscreteTimeModel\",\"ToEntity\",\"ToeplitzMatrix\",\"ToExpression\",\"ToFileName\",\"Together\",\"Toggle\",\"ToggleFalse\",\"Toggler\",\"TogglerBar\",\"TogglerBox\",\"TogglerBoxOptions\",\"ToHeldExpression\",\"ToInvertibleTimeSeries\",\"TokenWords\",\"Tolerance\",\"ToLowerCase\",\"Tomorrow\",\"ToNumberField\",\"TooBig\",\"Tooltip\",\"TooltipBox\",\"TooltipBoxOptions\",\"TooltipDelay\",\"TooltipStyle\",\"ToonShading\",\"Top\",\"TopHatTransform\",\"ToPolarCoordinates\",\"TopologicalSort\",\"ToRadicals\",\"ToRules\",\"ToSphericalCoordinates\",\"ToString\",\"Total\",\"TotalHeight\",\"TotalLayer\",\"TotalVariationFilter\",\"TotalWidth\",\"TouchPosition\",\"TouchscreenAutoZoom\",\"TouchscreenControlPlacement\",\"ToUpperCase\",\"Tr\",\"Trace\",\"TraceAbove\",\"TraceAction\",\"TraceBackward\",\"TraceDepth\",\"TraceDialog\",\"TraceForward\",\"TraceInternal\",\"TraceLevel\",\"TraceOff\",\"TraceOn\",\"TraceOriginal\",\"TracePrint\",\"TraceScan\",\"TrackedSymbols\",\"TrackingFunction\",\"TracyWidomDistribution\",\"TradingChart\",\"TraditionalForm\",\"TraditionalFunctionNotation\",\"TraditionalNotation\",\"TraditionalOrder\",\"TrainingProgressCheckpointing\",\"TrainingProgressFunction\",\"TrainingProgressMeasurements\",\"TrainingProgressReporting\",\"TrainingStoppingCriterion\",\"TrainingUpdateSchedule\",\"TransferFunctionCancel\",\"TransferFunctionExpand\",\"TransferFunctionFactor\",\"TransferFunctionModel\",\"TransferFunctionPoles\",\"TransferFunctionTransform\",\"TransferFunctionZeros\",\"TransformationClass\",\"TransformationFunction\",\"TransformationFunctions\",\"TransformationMatrix\",\"TransformedDistribution\",\"TransformedField\",\"TransformedProcess\",\"TransformedRegion\",\"TransitionDirection\",\"TransitionDuration\",\"TransitionEffect\",\"TransitiveClosureGraph\",\"TransitiveReductionGraph\",\"Translate\",\"TranslationOptions\",\"TranslationTransform\",\"Transliterate\",\"Transparent\",\"TransparentColor\",\"Transpose\",\"TransposeLayer\",\"TrapSelection\",\"TravelDirections\",\"TravelDirectionsData\",\"TravelDistance\",\"TravelDistanceList\",\"TravelMethod\",\"TravelTime\",\"TreeForm\",\"TreeGraph\",\"TreeGraphQ\",\"TreePlot\",\"TrendStyle\",\"Triangle\",\"TriangleCenter\",\"TriangleConstruct\",\"TriangleMeasurement\",\"TriangleWave\",\"TriangularDistribution\",\"TriangulateMesh\",\"Trig\",\"TrigExpand\",\"TrigFactor\",\"TrigFactorList\",\"Trigger\",\"TrigReduce\",\"TrigToExp\",\"TrimmedMean\",\"TrimmedVariance\",\"TropicalStormData\",\"True\",\"TrueQ\",\"TruncatedDistribution\",\"TruncatedPolyhedron\",\"TsallisQExponentialDistribution\",\"TsallisQGaussianDistribution\",\"TTest\",\"Tube\",\"TubeBezierCurveBox\",\"TubeBezierCurveBoxOptions\",\"TubeBox\",\"TubeBoxOptions\",\"TubeBSplineCurveBox\",\"TubeBSplineCurveBoxOptions\",\"Tuesday\",\"TukeyLambdaDistribution\",\"TukeyWindow\",\"TunnelData\",\"Tuples\",\"TuranGraph\",\"TuringMachine\",\"TuttePolynomial\",\"TwoWayRule\",\"Typed\",\"TypeSpecifier\",\"UnateQ\",\"Uncompress\",\"UnconstrainedParameters\",\"Undefined\",\"UnderBar\",\"Underflow\",\"Underlined\",\"Underoverscript\",\"UnderoverscriptBox\",\"UnderoverscriptBoxOptions\",\"Underscript\",\"UnderscriptBox\",\"UnderscriptBoxOptions\",\"UnderseaFeatureData\",\"UndirectedEdge\",\"UndirectedGraph\",\"UndirectedGraphQ\",\"UndoOptions\",\"UndoTrackedVariables\",\"Unequal\",\"UnequalTo\",\"Unevaluated\",\"UniformDistribution\",\"UniformGraphDistribution\",\"UniformPolyhedron\",\"UniformSumDistribution\",\"Uninstall\",\"Union\",\"UnionedEntityClass\",\"UnionPlus\",\"Unique\",\"UnitaryMatrixQ\",\"UnitBox\",\"UnitConvert\",\"UnitDimensions\",\"Unitize\",\"UnitRootTest\",\"UnitSimplify\",\"UnitStep\",\"UnitSystem\",\"UnitTriangle\",\"UnitVector\",\"UnitVectorLayer\",\"UnityDimensions\",\"UniverseModelData\",\"UniversityData\",\"UnixTime\",\"Unprotect\",\"UnregisterExternalEvaluator\",\"UnsameQ\",\"UnsavedVariables\",\"Unset\",\"UnsetShared\",\"UntrackedVariables\",\"Up\",\"UpArrow\",\"UpArrowBar\",\"UpArrowDownArrow\",\"Update\",\"UpdateDynamicObjects\",\"UpdateDynamicObjectsSynchronous\",\"UpdateInterval\",\"UpdatePacletSites\",\"UpdateSearchIndex\",\"UpDownArrow\",\"UpEquilibrium\",\"UpperCaseQ\",\"UpperLeftArrow\",\"UpperRightArrow\",\"UpperTriangularize\",\"UpperTriangularMatrixQ\",\"Upsample\",\"UpSet\",\"UpSetDelayed\",\"UpTee\",\"UpTeeArrow\",\"UpTo\",\"UpValues\",\"URL\",\"URLBuild\",\"URLDecode\",\"URLDispatcher\",\"URLDownload\",\"URLDownloadSubmit\",\"URLEncode\",\"URLExecute\",\"URLExpand\",\"URLFetch\",\"URLFetchAsynchronous\",\"URLParse\",\"URLQueryDecode\",\"URLQueryEncode\",\"URLRead\",\"URLResponseTime\",\"URLSave\",\"URLSaveAsynchronous\",\"URLShorten\",\"URLSubmit\",\"UseGraphicsRange\",\"UserDefinedWavelet\",\"Using\",\"UsingFrontEnd\",\"UtilityFunction\",\"V2Get\",\"ValenceErrorHandling\",\"ValidationLength\",\"ValidationSet\",\"Value\",\"ValueBox\",\"ValueBoxOptions\",\"ValueDimensions\",\"ValueForm\",\"ValuePreprocessingFunction\",\"ValueQ\",\"Values\",\"ValuesData\",\"Variables\",\"Variance\",\"VarianceEquivalenceTest\",\"VarianceEstimatorFunction\",\"VarianceGammaDistribution\",\"VarianceTest\",\"VectorAngle\",\"VectorAround\",\"VectorAspectRatio\",\"VectorColorFunction\",\"VectorColorFunctionScaling\",\"VectorDensityPlot\",\"VectorGlyphData\",\"VectorGreater\",\"VectorGreaterEqual\",\"VectorLess\",\"VectorLessEqual\",\"VectorMarkers\",\"VectorPlot\",\"VectorPlot3D\",\"VectorPoints\",\"VectorQ\",\"VectorRange\",\"Vectors\",\"VectorScale\",\"VectorScaling\",\"VectorSizes\",\"VectorStyle\",\"Vee\",\"Verbatim\",\"Verbose\",\"VerboseConvertToPostScriptPacket\",\"VerificationTest\",\"VerifyConvergence\",\"VerifyDerivedKey\",\"VerifyDigitalSignature\",\"VerifyFileSignature\",\"VerifyInterpretation\",\"VerifySecurityCertificates\",\"VerifySolutions\",\"VerifyTestAssumptions\",\"Version\",\"VersionedPreferences\",\"VersionNumber\",\"VertexAdd\",\"VertexCapacity\",\"VertexColors\",\"VertexComponent\",\"VertexConnectivity\",\"VertexContract\",\"VertexCoordinateRules\",\"VertexCoordinates\",\"VertexCorrelationSimilarity\",\"VertexCosineSimilarity\",\"VertexCount\",\"VertexCoverQ\",\"VertexDataCoordinates\",\"VertexDegree\",\"VertexDelete\",\"VertexDiceSimilarity\",\"VertexEccentricity\",\"VertexInComponent\",\"VertexInDegree\",\"VertexIndex\",\"VertexJaccardSimilarity\",\"VertexLabeling\",\"VertexLabels\",\"VertexLabelStyle\",\"VertexList\",\"VertexNormals\",\"VertexOutComponent\",\"VertexOutDegree\",\"VertexQ\",\"VertexRenderingFunction\",\"VertexReplace\",\"VertexShape\",\"VertexShapeFunction\",\"VertexSize\",\"VertexStyle\",\"VertexTextureCoordinates\",\"VertexWeight\",\"VertexWeightedGraphQ\",\"Vertical\",\"VerticalBar\",\"VerticalForm\",\"VerticalGauge\",\"VerticalSeparator\",\"VerticalSlider\",\"VerticalTilde\",\"Video\",\"VideoEncoding\",\"VideoExtractFrames\",\"VideoFrameList\",\"VideoFrameMap\",\"VideoPause\",\"VideoPlay\",\"VideoQ\",\"VideoStop\",\"VideoStream\",\"VideoStreams\",\"VideoTimeSeries\",\"VideoTracks\",\"VideoTrim\",\"ViewAngle\",\"ViewCenter\",\"ViewMatrix\",\"ViewPoint\",\"ViewPointSelectorSettings\",\"ViewPort\",\"ViewProjection\",\"ViewRange\",\"ViewVector\",\"ViewVertical\",\"VirtualGroupData\",\"Visible\",\"VisibleCell\",\"VoiceStyleData\",\"VoigtDistribution\",\"VolcanoData\",\"Volume\",\"VonMisesDistribution\",\"VoronoiMesh\",\"WaitAll\",\"WaitAsynchronousTask\",\"WaitNext\",\"WaitUntil\",\"WakebyDistribution\",\"WalleniusHypergeometricDistribution\",\"WaringYuleDistribution\",\"WarpingCorrespondence\",\"WarpingDistance\",\"WatershedComponents\",\"WatsonUSquareTest\",\"WattsStrogatzGraphDistribution\",\"WaveletBestBasis\",\"WaveletFilterCoefficients\",\"WaveletImagePlot\",\"WaveletListPlot\",\"WaveletMapIndexed\",\"WaveletMatrixPlot\",\"WaveletPhi\",\"WaveletPsi\",\"WaveletScale\",\"WaveletScalogram\",\"WaveletThreshold\",\"WeaklyConnectedComponents\",\"WeaklyConnectedGraphComponents\",\"WeaklyConnectedGraphQ\",\"WeakStationarity\",\"WeatherData\",\"WeatherForecastData\",\"WebAudioSearch\",\"WebElementObject\",\"WeberE\",\"WebExecute\",\"WebImage\",\"WebImageSearch\",\"WebSearch\",\"WebSessionObject\",\"WebSessions\",\"WebWindowObject\",\"Wedge\",\"Wednesday\",\"WeibullDistribution\",\"WeierstrassE1\",\"WeierstrassE2\",\"WeierstrassE3\",\"WeierstrassEta1\",\"WeierstrassEta2\",\"WeierstrassEta3\",\"WeierstrassHalfPeriods\",\"WeierstrassHalfPeriodW1\",\"WeierstrassHalfPeriodW2\",\"WeierstrassHalfPeriodW3\",\"WeierstrassInvariantG2\",\"WeierstrassInvariantG3\",\"WeierstrassInvariants\",\"WeierstrassP\",\"WeierstrassPPrime\",\"WeierstrassSigma\",\"WeierstrassZeta\",\"WeightedAdjacencyGraph\",\"WeightedAdjacencyMatrix\",\"WeightedData\",\"WeightedGraphQ\",\"Weights\",\"WelchWindow\",\"WheelGraph\",\"WhenEvent\",\"Which\",\"While\",\"White\",\"WhiteNoiseProcess\",\"WhitePoint\",\"Whitespace\",\"WhitespaceCharacter\",\"WhittakerM\",\"WhittakerW\",\"WienerFilter\",\"WienerProcess\",\"WignerD\",\"WignerSemicircleDistribution\",\"WikidataData\",\"WikidataSearch\",\"WikipediaData\",\"WikipediaSearch\",\"WilksW\",\"WilksWTest\",\"WindDirectionData\",\"WindingCount\",\"WindingPolygon\",\"WindowClickSelect\",\"WindowElements\",\"WindowFloating\",\"WindowFrame\",\"WindowFrameElements\",\"WindowMargins\",\"WindowMovable\",\"WindowOpacity\",\"WindowPersistentStyles\",\"WindowSelected\",\"WindowSize\",\"WindowStatusArea\",\"WindowTitle\",\"WindowToolbars\",\"WindowWidth\",\"WindSpeedData\",\"WindVectorData\",\"WinsorizedMean\",\"WinsorizedVariance\",\"WishartMatrixDistribution\",\"With\",\"WolframAlpha\",\"WolframAlphaDate\",\"WolframAlphaQuantity\",\"WolframAlphaResult\",\"WolframLanguageData\",\"Word\",\"WordBoundary\",\"WordCharacter\",\"WordCloud\",\"WordCount\",\"WordCounts\",\"WordData\",\"WordDefinition\",\"WordFrequency\",\"WordFrequencyData\",\"WordList\",\"WordOrientation\",\"WordSearch\",\"WordSelectionFunction\",\"WordSeparators\",\"WordSpacings\",\"WordStem\",\"WordTranslation\",\"WorkingPrecision\",\"WrapAround\",\"Write\",\"WriteLine\",\"WriteString\",\"Wronskian\",\"XMLElement\",\"XMLObject\",\"XMLTemplate\",\"Xnor\",\"Xor\",\"XYZColor\",\"Yellow\",\"Yesterday\",\"YuleDissimilarity\",\"ZernikeR\",\"ZeroSymmetric\",\"ZeroTest\",\"ZeroWidthTimes\",\"Zeta\",\"ZetaZero\",\"ZIPCodeData\",\"ZipfDistribution\",\"ZoomCenter\",\"ZoomFactor\",\"ZTest\",\"ZTransform\",\"$Aborted\",\"$ActivationGroupID\",\"$ActivationKey\",\"$ActivationUserRegistered\",\"$AddOnsDirectory\",\"$AllowDataUpdates\",\"$AllowExternalChannelFunctions\",\"$AllowInternet\",\"$AssertFunction\",\"$Assumptions\",\"$AsynchronousTask\",\"$AudioDecoders\",\"$AudioEncoders\",\"$AudioInputDevices\",\"$AudioOutputDevices\",\"$BaseDirectory\",\"$BasePacletsDirectory\",\"$BatchInput\",\"$BatchOutput\",\"$BlockchainBase\",\"$BoxForms\",\"$ByteOrdering\",\"$CacheBaseDirectory\",\"$Canceled\",\"$ChannelBase\",\"$CharacterEncoding\",\"$CharacterEncodings\",\"$CloudAccountName\",\"$CloudBase\",\"$CloudConnected\",\"$CloudConnection\",\"$CloudCreditsAvailable\",\"$CloudEvaluation\",\"$CloudExpressionBase\",\"$CloudObjectNameFormat\",\"$CloudObjectURLType\",\"$CloudRootDirectory\",\"$CloudSymbolBase\",\"$CloudUserID\",\"$CloudUserUUID\",\"$CloudVersion\",\"$CloudVersionNumber\",\"$CloudWolframEngineVersionNumber\",\"$CommandLine\",\"$CompilationTarget\",\"$ConditionHold\",\"$ConfiguredKernels\",\"$Context\",\"$ContextPath\",\"$ControlActiveSetting\",\"$Cookies\",\"$CookieStore\",\"$CreationDate\",\"$CurrentLink\",\"$CurrentTask\",\"$CurrentWebSession\",\"$DataStructures\",\"$DateStringFormat\",\"$DefaultAudioInputDevice\",\"$DefaultAudioOutputDevice\",\"$DefaultFont\",\"$DefaultFrontEnd\",\"$DefaultImagingDevice\",\"$DefaultLocalBase\",\"$DefaultMailbox\",\"$DefaultNetworkInterface\",\"$DefaultPath\",\"$DefaultProxyRules\",\"$DefaultSystemCredentialStore\",\"$Display\",\"$DisplayFunction\",\"$DistributedContexts\",\"$DynamicEvaluation\",\"$Echo\",\"$EmbedCodeEnvironments\",\"$EmbeddableServices\",\"$EntityStores\",\"$Epilog\",\"$EvaluationCloudBase\",\"$EvaluationCloudObject\",\"$EvaluationEnvironment\",\"$ExportFormats\",\"$ExternalIdentifierTypes\",\"$ExternalStorageBase\",\"$Failed\",\"$FinancialDataSource\",\"$FontFamilies\",\"$FormatType\",\"$FrontEnd\",\"$FrontEndSession\",\"$GeoEntityTypes\",\"$GeoLocation\",\"$GeoLocationCity\",\"$GeoLocationCountry\",\"$GeoLocationPrecision\",\"$GeoLocationSource\",\"$HistoryLength\",\"$HomeDirectory\",\"$HTMLExportRules\",\"$HTTPCookies\",\"$HTTPRequest\",\"$IgnoreEOF\",\"$ImageFormattingWidth\",\"$ImageResolution\",\"$ImagingDevice\",\"$ImagingDevices\",\"$ImportFormats\",\"$IncomingMailSettings\",\"$InitialDirectory\",\"$Initialization\",\"$InitializationContexts\",\"$Input\",\"$InputFileName\",\"$InputStreamMethods\",\"$Inspector\",\"$InstallationDate\",\"$InstallationDirectory\",\"$InterfaceEnvironment\",\"$InterpreterTypes\",\"$IterationLimit\",\"$KernelCount\",\"$KernelID\",\"$Language\",\"$LaunchDirectory\",\"$LibraryPath\",\"$LicenseExpirationDate\",\"$LicenseID\",\"$LicenseProcesses\",\"$LicenseServer\",\"$LicenseSubprocesses\",\"$LicenseType\",\"$Line\",\"$Linked\",\"$LinkSupported\",\"$LoadedFiles\",\"$LocalBase\",\"$LocalSymbolBase\",\"$MachineAddresses\",\"$MachineDomain\",\"$MachineDomains\",\"$MachineEpsilon\",\"$MachineID\",\"$MachineName\",\"$MachinePrecision\",\"$MachineType\",\"$MaxExtraPrecision\",\"$MaxLicenseProcesses\",\"$MaxLicenseSubprocesses\",\"$MaxMachineNumber\",\"$MaxNumber\",\"$MaxPiecewiseCases\",\"$MaxPrecision\",\"$MaxRootDegree\",\"$MessageGroups\",\"$MessageList\",\"$MessagePrePrint\",\"$Messages\",\"$MinMachineNumber\",\"$MinNumber\",\"$MinorReleaseNumber\",\"$MinPrecision\",\"$MobilePhone\",\"$ModuleNumber\",\"$NetworkConnected\",\"$NetworkInterfaces\",\"$NetworkLicense\",\"$NewMessage\",\"$NewSymbol\",\"$NotebookInlineStorageLimit\",\"$Notebooks\",\"$NoValue\",\"$NumberMarks\",\"$Off\",\"$OperatingSystem\",\"$Output\",\"$OutputForms\",\"$OutputSizeLimit\",\"$OutputStreamMethods\",\"$Packages\",\"$ParentLink\",\"$ParentProcessID\",\"$PasswordFile\",\"$PatchLevelID\",\"$Path\",\"$PathnameSeparator\",\"$PerformanceGoal\",\"$Permissions\",\"$PermissionsGroupBase\",\"$PersistenceBase\",\"$PersistencePath\",\"$PipeSupported\",\"$PlotTheme\",\"$Post\",\"$Pre\",\"$PreferencesDirectory\",\"$PreInitialization\",\"$PrePrint\",\"$PreRead\",\"$PrintForms\",\"$PrintLiteral\",\"$Printout3DPreviewer\",\"$ProcessID\",\"$ProcessorCount\",\"$ProcessorType\",\"$ProductInformation\",\"$ProgramName\",\"$PublisherID\",\"$RandomState\",\"$RecursionLimit\",\"$RegisteredDeviceClasses\",\"$RegisteredUserName\",\"$ReleaseNumber\",\"$RequesterAddress\",\"$RequesterWolframID\",\"$RequesterWolframUUID\",\"$RootDirectory\",\"$ScheduledTask\",\"$ScriptCommandLine\",\"$ScriptInputString\",\"$SecuredAuthenticationKeyTokens\",\"$ServiceCreditsAvailable\",\"$Services\",\"$SessionID\",\"$SetParentLink\",\"$SharedFunctions\",\"$SharedVariables\",\"$SoundDisplay\",\"$SoundDisplayFunction\",\"$SourceLink\",\"$SSHAuthentication\",\"$SubtitleDecoders\",\"$SubtitleEncoders\",\"$SummaryBoxDataSizeLimit\",\"$SuppressInputFormHeads\",\"$SynchronousEvaluation\",\"$SyntaxHandler\",\"$System\",\"$SystemCharacterEncoding\",\"$SystemCredentialStore\",\"$SystemID\",\"$SystemMemory\",\"$SystemShell\",\"$SystemTimeZone\",\"$SystemWordLength\",\"$TemplatePath\",\"$TemporaryDirectory\",\"$TemporaryPrefix\",\"$TestFileName\",\"$TextStyle\",\"$TimedOut\",\"$TimeUnit\",\"$TimeZone\",\"$TimeZoneEntity\",\"$TopDirectory\",\"$TraceOff\",\"$TraceOn\",\"$TracePattern\",\"$TracePostAction\",\"$TracePreAction\",\"$UnitSystem\",\"$Urgent\",\"$UserAddOnsDirectory\",\"$UserAgentLanguages\",\"$UserAgentMachine\",\"$UserAgentName\",\"$UserAgentOperatingSystem\",\"$UserAgentString\",\"$UserAgentVersion\",\"$UserBaseDirectory\",\"$UserBasePacletsDirectory\",\"$UserDocumentsDirectory\",\"$Username\",\"$UserName\",\"$UserURLBase\",\"$Version\",\"$VersionNumber\",\"$VideoDecoders\",\"$VideoEncoders\",\"$VoiceStyles\",\"$WolframDocumentsDirectory\",\"$WolframID\",\"$WolframUUID\"]\n;function t(e){return e?\"string\"==typeof e?e:e.source:null}function i(e){\nreturn o(\"(\",e,\")?\")}function o(...e){return e.map((e=>t(e))).join(\"\")}\nfunction a(...e){return\"(\"+e.map((e=>t(e))).join(\"|\")+\")\"}return t=>{\nconst n=a(o(/([2-9]|[1-2]\\d|[3][0-5])\\^\\^/,/(\\w*\\.\\w+|\\w+\\.\\w*|\\w+)/),/(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/),r={\nclassName:\"number\",relevance:0,\nbegin:o(n,i(a(/``[+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/,/`([+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+))?/)),i(/\\*\\^[+-]?\\d+/))\n},l=/[a-zA-Z$][a-zA-Z0-9$]*/,s=new Set(e),c={variants:[{\nclassName:\"builtin-symbol\",begin:l,\"on:begin\":(e,t)=>{\ns.has(e[0])||t.ignoreMatch()}},{className:\"symbol\",relevance:0,begin:l}]},u={\nclassName:\"message-name\",relevance:0,begin:o(\"::\",l)};return{name:\"Mathematica\",\naliases:[\"mma\",\"wl\"],classNameAliases:{brace:\"punctuation\",pattern:\"type\",\nslot:\"type\",symbol:\"variable\",\"named-character\":\"variable\",\n\"builtin-symbol\":\"built_in\",\"message-name\":\"string\"},\ncontains:[t.COMMENT(/\\(\\*/,/\\*\\)/,{contains:[\"self\"]}),{className:\"pattern\",\nrelevance:0,begin:/([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/},{\nclassName:\"slot\",relevance:0,begin:/#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/},u,c,{\nclassName:\"named-character\",begin:/\\\\\\[[$a-zA-Z][$a-zA-Z0-9]+\\]/\n},t.QUOTE_STRING_MODE,r,{className:\"operator\",relevance:0,\nbegin:/[+\\-*/,;.:@~=><&|_`'^?!%]+/},{className:\"brace\",relevance:0,\nbegin:/[[\\](){}]/}]}}})());hljs.registerLanguage(\"matlab\",(()=>{\"use strict\";return e=>{var a={relevance:0,\ncontains:[{begin:\"('|\\\\.')+\"}]};return{name:\"Matlab\",keywords:{\nkeyword:\"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while\",\nbuilt_in:\"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell \"\n},illegal:'(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',contains:[{className:\"function\",\nbeginKeywords:\"function\",end:\"$\",contains:[e.UNDERSCORE_TITLE_MODE,{\nclassName:\"params\",variants:[{begin:\"\\\\(\",end:\"\\\\)\"},{begin:\"\\\\[\",end:\"\\\\]\"}]}]\n},{className:\"built_in\",begin:/true|false/,relevance:0,starts:a},{\nbegin:\"[a-zA-Z][a-zA-Z_0-9]*('|\\\\.')+\",relevance:0},{className:\"number\",\nbegin:e.C_NUMBER_RE,relevance:0,starts:a},{className:\"string\",begin:\"'\",end:\"'\",\ncontains:[e.BACKSLASH_ESCAPE,{begin:\"''\"}]},{begin:/\\]|\\}|\\)/,relevance:0,\nstarts:a},{className:\"string\",begin:'\"',end:'\"',contains:[e.BACKSLASH_ESCAPE,{\nbegin:'\"\"'}],starts:a\n},e.COMMENT(\"^\\\\s*%\\\\{\\\\s*$\",\"^\\\\s*%\\\\}\\\\s*$\"),e.COMMENT(\"%\",\"$\")]}}})());hljs.registerLanguage(\"csharp\",(()=>{\"use strict\";return e=>{const n={\nkeyword:[\"abstract\",\"as\",\"base\",\"break\",\"case\",\"class\",\"const\",\"continue\",\"do\",\"else\",\"event\",\"explicit\",\"extern\",\"finally\",\"fixed\",\"for\",\"foreach\",\"goto\",\"if\",\"implicit\",\"in\",\"interface\",\"internal\",\"is\",\"lock\",\"namespace\",\"new\",\"operator\",\"out\",\"override\",\"params\",\"private\",\"protected\",\"public\",\"readonly\",\"record\",\"ref\",\"return\",\"sealed\",\"sizeof\",\"stackalloc\",\"static\",\"struct\",\"switch\",\"this\",\"throw\",\"try\",\"typeof\",\"unchecked\",\"unsafe\",\"using\",\"virtual\",\"void\",\"volatile\",\"while\"].concat([\"add\",\"alias\",\"and\",\"ascending\",\"async\",\"await\",\"by\",\"descending\",\"equals\",\"from\",\"get\",\"global\",\"group\",\"init\",\"into\",\"join\",\"let\",\"nameof\",\"not\",\"notnull\",\"on\",\"or\",\"orderby\",\"partial\",\"remove\",\"select\",\"set\",\"unmanaged\",\"value|0\",\"var\",\"when\",\"where\",\"with\",\"yield\"]),\nbuilt_in:[\"bool\",\"byte\",\"char\",\"decimal\",\"delegate\",\"double\",\"dynamic\",\"enum\",\"float\",\"int\",\"long\",\"nint\",\"nuint\",\"object\",\"sbyte\",\"short\",\"string\",\"ulong\",\"uint\",\"ushort\"],\nliteral:[\"default\",\"false\",\"null\",\"true\"]},a=e.inherit(e.TITLE_MODE,{\nbegin:\"[a-zA-Z](\\\\.?\\\\w)*\"}),i={className:\"number\",variants:[{\nbegin:\"\\\\b(0b[01']+)\"},{\nbegin:\"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\"},{\nbegin:\"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n}],relevance:0},s={className:\"string\",begin:'@\"',end:'\"',contains:[{begin:'\"\"'}]\n},t=e.inherit(s,{illegal:/\\n/}),r={className:\"subst\",begin:/\\{/,end:/\\}/,\nkeywords:n},l=e.inherit(r,{illegal:/\\n/}),c={className:\"string\",begin:/\\$\"/,\nend:'\"',illegal:/\\n/,contains:[{begin:/\\{\\{/},{begin:/\\}\\}/\n},e.BACKSLASH_ESCAPE,l]},o={className:\"string\",begin:/\\$@\"/,end:'\"',contains:[{\nbegin:/\\{\\{/},{begin:/\\}\\}/},{begin:'\"\"'},r]},d=e.inherit(o,{illegal:/\\n/,\ncontains:[{begin:/\\{\\{/},{begin:/\\}\\}/},{begin:'\"\"'},l]})\n;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE],\nl.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{\nillegal:/\\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]\n},E={begin:\"<\",end:\">\",contains:[{beginKeywords:\"in out\"},a]\n},_=e.IDENT_RE+\"(<\"+e.IDENT_RE+\"(\\\\s*,\\\\s*\"+e.IDENT_RE+\")*>)?(\\\\[\\\\])?\",b={\nbegin:\"@\"+e.IDENT_RE,relevance:0};return{name:\"C#\",aliases:[\"cs\",\"c#\"],\nkeywords:n,illegal:/::/,contains:[e.COMMENT(\"///\",\"$\",{returnBegin:!0,\ncontains:[{className:\"doctag\",variants:[{begin:\"///\",relevance:0},{\nbegin:\"\\x3c!--|--\\x3e\"},{begin:\"</?\",end:\">\"}]}]\n}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\"meta\",begin:\"#\",\nend:\"$\",keywords:{\n\"meta-keyword\":\"if else elif endif define undef warning error line region endregion pragma checksum\"\n}},g,i,{beginKeywords:\"class interface\",relevance:0,end:/[{;=]/,\nillegal:/[^\\s:,]/,contains:[{beginKeywords:\"where class\"\n},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:\"namespace\",\nrelevance:0,end:/[{;=]/,illegal:/[^\\s:]/,\ncontains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{\nbeginKeywords:\"record\",relevance:0,end:/[{;=]/,illegal:/[^\\s:]/,\ncontains:[a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:\"meta\",\nbegin:\"^\\\\s*\\\\[\",excludeBegin:!0,end:\"\\\\]\",excludeEnd:!0,contains:[{\nclassName:\"meta-string\",begin:/\"/,end:/\"/}]},{\nbeginKeywords:\"new return throw await else\",relevance:0},{className:\"function\",\nbegin:\"(\"+_+\"\\\\s+)+\"+e.IDENT_RE+\"\\\\s*(<.+>\\\\s*)?\\\\(\",returnBegin:!0,\nend:/\\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{\nbeginKeywords:\"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial\",\nrelevance:0},{begin:e.IDENT_RE+\"\\\\s*(<.+>\\\\s*)?\\\\(\",returnBegin:!0,\ncontains:[e.TITLE_MODE,E],relevance:0},{className:\"params\",begin:/\\(/,end:/\\)/,\nexcludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,\ncontains:[g,i,e.C_BLOCK_COMMENT_MODE]\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})());hljs.registerLanguage(\"lisp\",(()=>{\"use strict\";return e=>{\nvar n=\"[a-zA-Z_\\\\-+\\\\*\\\\/<=>&#][a-zA-Z0-9_\\\\-+*\\\\/<=>&#!]*\",a=\"\\\\|[^]*?\\\\|\",i=\"(-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|-)?\\\\d+)?\",s={\nclassName:\"literal\",begin:\"\\\\b(t{1}|nil)\\\\b\"},l={className:\"number\",variants:[{\nbegin:i,relevance:0},{begin:\"#(b|B)[0-1]+(/[0-1]+)?\"},{\nbegin:\"#(o|O)[0-7]+(/[0-7]+)?\"},{begin:\"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?\"},{\nbegin:\"#(c|C)\\\\(\"+i+\" +\"+i,end:\"\\\\)\"}]},b=e.inherit(e.QUOTE_STRING_MODE,{\nillegal:null}),g=e.COMMENT(\";\",\"$\",{relevance:0}),r={begin:\"\\\\*\",end:\"\\\\*\"},t={\nclassName:\"symbol\",begin:\"[:&]\"+n},c={begin:n,relevance:0},d={begin:a},o={\ncontains:[l,b,r,t,{begin:\"\\\\(\",end:\"\\\\)\",contains:[\"self\",s,b,l,c]},c],\nvariants:[{begin:\"['`]\\\\(\",end:\"\\\\)\"},{begin:\"\\\\(quote \",end:\"\\\\)\",keywords:{\nname:\"quote\"}},{begin:\"'\"+a}]},v={variants:[{begin:\"'\"+n},{\nbegin:\"#'\"+n+\"(::\"+n+\")*\"}]},m={begin:\"\\\\(\\\\s*\",end:\"\\\\)\"},u={endsWithParent:!0,\nrelevance:0};return m.contains=[{className:\"name\",variants:[{begin:n,relevance:0\n},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:\"Lisp\",illegal:/\\S/,\ncontains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})());hljs.registerLanguage(\"diff\",(()=>{\"use strict\";return e=>({name:\"Diff\",\naliases:[\"patch\"],contains:[{className:\"meta\",relevance:10,variants:[{\nbegin:/^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/},{begin:/^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},{\nbegin:/^--- +\\d+,\\d+ +----$/}]},{className:\"comment\",variants:[{begin:/Index: /,\nend:/$/},{begin:/^index/,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^-{3}/,end:/$/\n},{begin:/^\\*{3} /,end:/$/},{begin:/^\\+{3}/,end:/$/},{begin:/^\\*{15}$/},{\nbegin:/^diff --git/,end:/$/}]},{className:\"addition\",begin:/^\\+/,end:/$/},{\nclassName:\"deletion\",begin:/^-/,end:/$/},{className:\"addition\",begin:/^!/,\nend:/$/}]})})());hljs.registerLanguage(\"ada\",(()=>{\"use strict\";return e=>{\nconst n=\"[A-Za-z](_?[A-Za-z0-9.])*\",s=\"[]\\\\{\\\\}%#'\\\"\",a=e.COMMENT(\"--\",\"$\"),r={\nbegin:\"\\\\s+:\\\\s+\",end:\"\\\\s*(:=|;|\\\\)|=>|$)\",illegal:s,contains:[{\nbeginKeywords:\"loop for declare others\",endsParent:!0},{className:\"keyword\",\nbeginKeywords:\"not null constant access function procedure in out aliased exception\"\n},{className:\"type\",begin:n,endsParent:!0,relevance:0}]};return{name:\"Ada\",\ncase_insensitive:!0,keywords:{\nkeyword:\"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor\",\nliteral:\"True False\"},contains:[a,{className:\"string\",begin:/\"/,end:/\"/,\ncontains:[{begin:/\"\"/,relevance:0}]},{className:\"string\",begin:/'.'/},{\nclassName:\"number\",\nbegin:\"\\\\b(\\\\d(_|\\\\d)*#\\\\w+(\\\\.\\\\w+)?#([eE][-+]?\\\\d(_|\\\\d)*)?|\\\\d(_|\\\\d)*(\\\\.\\\\d(_|\\\\d)*)?([eE][-+]?\\\\d(_|\\\\d)*)?)\",\nrelevance:0},{className:\"symbol\",begin:\"'\"+n},{className:\"title\",\nbegin:\"(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?\",\nend:\"(is|$)\",keywords:\"package body\",excludeBegin:!0,excludeEnd:!0,illegal:s},{\nbegin:\"(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+\",\nend:\"(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)\",\nkeywords:\"overriding function procedure with is renames return\",returnBegin:!0,\ncontains:[a,{className:\"title\",\nbegin:\"(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+\",end:\"(\\\\(|\\\\s+|$)\",\nexcludeBegin:!0,excludeEnd:!0,illegal:s},r,{className:\"type\",\nbegin:\"\\\\breturn\\\\s+\",end:\"(\\\\s+|;|$)\",keywords:\"return\",excludeBegin:!0,\nexcludeEnd:!0,endsParent:!0,illegal:s}]},{className:\"type\",\nbegin:\"\\\\b(sub)?type\\\\s+\",end:\"\\\\s+\",keywords:\"type\",excludeBegin:!0,illegal:s\n},r]}}})());hljs.registerLanguage(\"pgsql\",(()=>{\"use strict\";return E=>{\nconst T=E.COMMENT(\"--\",\"$\"),N=\"\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$\",A=\"BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 \",R=A.trim().split(\" \").map((E=>E.split(\"|\")[0])).join(\"|\"),I=\"ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST\".split(\" \").map((E=>E.split(\"|\")[0])).join(\"|\")\n;return{name:\"PostgreSQL\",aliases:[\"postgres\",\"postgresql\"],case_insensitive:!0,\nkeywords:{\nkeyword:\"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS \",\nbuilt_in:\"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED \"\n},illegal:/:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|\\{\\{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\ncontains:[{className:\"keyword\",variants:[{begin:/\\bTEXT\\s*SEARCH\\b/},{\nbegin:/\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/},{\nbegin:/\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/},{\nbegin:/\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/},{\nbegin:/\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/},{begin:/\\bNULLS\\s+(FIRST|LAST)\\b/},{\nbegin:/\\bEVENT\\s+TRIGGER\\b/},{begin:/\\b(MAPPING|OR)\\s+REPLACE\\b/},{\nbegin:/\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/},{\nbegin:/\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/},{\nbegin:/\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/},{\nbegin:/\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/\n},{begin:/\\bPRESERVE\\s+ROWS\\b/},{begin:/\\bDISCARD\\s+PLANS\\b/},{\nbegin:/\\bREFERENCING\\s+(OLD|NEW)\\b/},{begin:/\\bSKIP\\s+LOCKED\\b/},{\nbegin:/\\bGROUPING\\s+SETS\\b/},{\nbegin:/\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/},{\nbegin:/\\b(WITH|WITHOUT)\\s+HOLD\\b/},{\nbegin:/\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/},{\nbegin:/\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/},{\nbegin:/\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/},{\nbegin:/\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/},{begin:/\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/\n},{begin:/\\bSECURITY\\s+LABEL\\b/},{begin:/\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/\n},{begin:/\\bWITH\\s+(NO\\s+)?DATA\\b/},{begin:/\\b(FOREIGN|SET)\\s+DATA\\b/},{\nbegin:/\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/},{begin:/\\b(WITH|FOR)\\s+ORDINALITY\\b/},{\nbegin:/\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/},{\nbegin:/\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/},{\nbegin:/\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/},{\nbegin:/\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/},{\nbegin:/\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/},{begin:/\\bAT\\s+TIME\\s+ZONE\\b/},{\nbegin:/\\bGRANTED\\s+BY\\b/},{begin:/\\bRETURN\\s+(QUERY|NEXT)\\b/},{\nbegin:/\\b(ATTACH|DETACH)\\s+PARTITION\\b/},{\nbegin:/\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/},{\nbegin:/\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/\n},{begin:/\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/}]},{\nbegin:/\\b(FORMAT|FAMILY|VERSION)\\s*\\(/},{begin:/\\bINCLUDE\\s*\\(/,\nkeywords:\"INCLUDE\"},{begin:/\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\n},{\nbegin:/\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\n},{begin:/\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,relevance:10},{\nbegin:/\\bEXTRACT\\s*\\(/,end:/\\bFROM\\b/,returnEnd:!0,keywords:{\ntype:\"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR\"\n}},{begin:/\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,keywords:{keyword:\"NAME\"}},{\nbegin:/\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,keywords:{\nkeyword:\"DOCUMENT CONTENT\"}},{beginKeywords:\"CACHE INCREMENT MAXVALUE MINVALUE\",\nend:E.C_NUMBER_RE,returnEnd:!0,keywords:\"BY CACHE INCREMENT MAXVALUE MINVALUE\"\n},{className:\"type\",begin:/\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/},{className:\"type\",\nbegin:/\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\n},{\nbegin:/\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\nkeywords:{keyword:\"RETURNS\",\ntype:\"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER\"\n}},{begin:\"\\\\b(\"+I+\")\\\\s*\\\\(\"},{begin:\"\\\\.(\"+R+\")\\\\b\"},{\nbegin:\"\\\\b(\"+R+\")\\\\s+PATH\\\\b\",keywords:{keyword:\"PATH\",\ntype:A.replace(\"PATH \",\"\")}},{className:\"type\",begin:\"\\\\b(\"+R+\")\\\\b\"},{\nclassName:\"string\",begin:\"'\",end:\"'\",contains:[{begin:\"''\"}]},{\nclassName:\"string\",begin:\"(e|E|u&|U&)'\",end:\"'\",contains:[{begin:\"\\\\\\\\.\"}],\nrelevance:10},E.END_SAME_AS_BEGIN({begin:N,end:N,contains:[{\nsubLanguage:[\"pgsql\",\"perl\",\"python\",\"tcl\",\"r\",\"lua\",\"java\",\"php\",\"ruby\",\"bash\",\"scheme\",\"xml\",\"json\"],\nendsWithParent:!0}]}),{begin:'\"',end:'\"',contains:[{begin:'\"\"'}]\n},E.C_NUMBER_MODE,E.C_BLOCK_COMMENT_MODE,T,{className:\"meta\",variants:[{\nbegin:\"%(ROW)?TYPE\",relevance:10},{begin:\"\\\\$\\\\d+\"},{begin:\"^#\\\\w\",end:\"$\"}]},{\nclassName:\"symbol\",begin:\"<<\\\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\\\s*>>\",relevance:10}]}}\n})());hljs.registerLanguage(\"rust\",(()=>{\"use strict\";return e=>{\nconst n=\"([ui](8|16|32|64|128|size)|f(32|64))?\",t=\"drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!\"\n;return{name:\"Rust\",aliases:[\"rs\"],keywords:{$pattern:e.IDENT_RE+\"!?\",\nkeyword:\"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield\",\nliteral:\"true false Some None Ok Err\",built_in:t},illegal:\"</\",\ncontains:[e.C_LINE_COMMENT_MODE,e.COMMENT(\"/\\\\*\",\"\\\\*/\",{contains:[\"self\"]\n}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?\"/,illegal:null}),{\nclassName:\"string\",variants:[{begin:/r(#*)\"(.|\\n)*?\"\\1(?!#)/},{\nbegin:/b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/}]},{className:\"symbol\",\nbegin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:\"number\",variants:[{\nbegin:\"\\\\b0b([01_]+)\"+n},{begin:\"\\\\b0o([0-7_]+)\"+n},{\nbegin:\"\\\\b0x([A-Fa-f0-9_]+)\"+n},{\nbegin:\"\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)\"+n}],relevance:0},{\nclassName:\"function\",beginKeywords:\"fn\",end:\"(\\\\(|<)\",excludeEnd:!0,\ncontains:[e.UNDERSCORE_TITLE_MODE]},{className:\"meta\",begin:\"#!?\\\\[\",end:\"\\\\]\",\ncontains:[{className:\"meta-string\",begin:/\"/,end:/\"/}]},{className:\"class\",\nbeginKeywords:\"type\",end:\";\",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{\nendsParent:!0})],illegal:\"\\\\S\"},{className:\"class\",\nbeginKeywords:\"trait enum struct union\",end:/\\{/,\ncontains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})],illegal:\"[\\\\w\\\\d]\"\n},{begin:e.IDENT_RE+\"::\",keywords:{built_in:t}},{begin:\"->\"}]}}})());hljs.registerLanguage(\"yaml\",(()=>{\"use strict\";return e=>{\nvar n=\"true false yes no null\",a=\"[\\\\w#;/?:@&=+$,.~*'()[\\\\]]+\",s={\nclassName:\"string\",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/\n},{begin:/\\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:\"template-variable\",\nvariants:[{begin:/\\{\\{/,end:/\\}\\}/},{begin:/%\\{/,end:/\\}/}]}]},i=e.inherit(s,{\nvariants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/[^\\s,{}[\\]]+/}]}),l={\nend:\",\",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\\{/,\nend:/\\}/,contains:[l],illegal:\"\\\\n\",relevance:0},g={begin:\"\\\\[\",end:\"\\\\]\",\ncontains:[l],illegal:\"\\\\n\",relevance:0},b=[{className:\"attr\",variants:[{\nbegin:\"\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)\"},{begin:'\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)'},{\nbegin:\"'\\\\w[\\\\w :\\\\/.-]*':(?=[ \\t]|$)\"}]},{className:\"meta\",begin:\"^---\\\\s*$\",\nrelevance:10},{className:\"string\",\nbegin:\"[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*\"},{\nbegin:\"<%[%=-]?\",end:\"[%-]?%>\",subLanguage:\"ruby\",excludeBegin:!0,excludeEnd:!0,\nrelevance:0},{className:\"type\",begin:\"!\\\\w+!\"+a},{className:\"type\",\nbegin:\"!<\"+a+\">\"},{className:\"type\",begin:\"!\"+a},{className:\"type\",begin:\"!!\"+a\n},{className:\"meta\",begin:\"&\"+e.UNDERSCORE_IDENT_RE+\"$\"},{className:\"meta\",\nbegin:\"\\\\*\"+e.UNDERSCORE_IDENT_RE+\"$\"},{className:\"bullet\",begin:\"-(?=[ ]|$)\",\nrelevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{\nclassName:\"number\",\nbegin:\"\\\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\\\.[0-9]*)?([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\\\b\"\n},{className:\"number\",begin:e.C_NUMBER_RE+\"\\\\b\",relevance:0},t,g,s],r=[...b]\n;return r.pop(),r.push(i),l.contains=r,{name:\"YAML\",case_insensitive:!0,\naliases:[\"yml\"],contains:b}}})());hljs.registerLanguage(\"json\",(()=>{\"use strict\";return n=>{const e={\nliteral:\"true false null\"\n},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],a=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],l={\nend:\",\",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:e},t={begin:/\\{/,\nend:/\\}/,contains:[{className:\"attr\",begin:/\"/,end:/\"/,\ncontains:[n.BACKSLASH_ESCAPE],illegal:\"\\\\n\"},n.inherit(l,{begin:/:/\n})].concat(i),illegal:\"\\\\S\"},s={begin:\"\\\\[\",end:\"\\\\]\",contains:[n.inherit(l)],\nillegal:\"\\\\S\"};return a.push(t,s),i.forEach((n=>{a.push(n)})),{name:\"JSON\",\ncontains:a,keywords:e,illegal:\"\\\\S\"}}})());hljs.registerLanguage(\"makefile\",(()=>{\"use strict\";return e=>{const i={\nclassName:\"variable\",variants:[{begin:\"\\\\$\\\\(\"+e.UNDERSCORE_IDENT_RE+\"\\\\)\",\ncontains:[e.BACKSLASH_ESCAPE]},{begin:/\\$[@%<?\\^\\+\\*]/}]},a={className:\"string\",\nbegin:/\"/,end:/\"/,contains:[e.BACKSLASH_ESCAPE,i]},n={className:\"variable\",\nbegin:/\\$\\([\\w-]+\\s/,end:/\\)/,keywords:{\nbuilt_in:\"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value\"\n},contains:[i]},s={begin:\"^\"+e.UNDERSCORE_IDENT_RE+\"\\\\s*(?=[:+?]?=)\"},r={\nclassName:\"section\",begin:/^[^\\s]+:/,end:/$/,contains:[i]};return{\nname:\"Makefile\",aliases:[\"mk\",\"mak\",\"make\"],keywords:{$pattern:/[\\w-]+/,\nkeyword:\"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath\"\n},contains:[e.HASH_COMMENT_MODE,i,a,n,s,{className:\"meta\",begin:/^\\.PHONY:/,\nend:/$/,keywords:{$pattern:/[\\.\\w]+/,\"meta-keyword\":\".PHONY\"}},r]}}})());hljs.registerLanguage(\"sql_more\",(()=>{\"use strict\";return e=>{\nvar t=e.COMMENT(\"--\",\"$\");return{name:\"SQL (more)\",aliases:[\"mysql\",\"oracle\"],\ndisableAutodetect:!0,case_insensitive:!0,illegal:/[<>{}*]/,contains:[{\nbeginKeywords:\"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with\",\nend:/;/,endsWithParent:!0,keywords:{$pattern:/[\\w\\.]+/,\nkeyword:\"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek\",\nliteral:\"true false null unknown\",\nbuilt_in:\"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void\"\n},contains:[{className:\"string\",begin:\"'\",end:\"'\",contains:[{begin:\"''\"}]},{\nclassName:\"string\",begin:'\"',end:'\"',contains:[{begin:'\"\"'}]},{\nclassName:\"string\",begin:\"`\",end:\"`\"\n},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]\n},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}})());hljs.registerLanguage(\"julia\",(()=>{\"use strict\";return e=>{\nvar r=\"[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*\",t={$pattern:r,\nkeyword:[\"baremodule\",\"begin\",\"break\",\"catch\",\"ccall\",\"const\",\"continue\",\"do\",\"else\",\"elseif\",\"end\",\"export\",\"false\",\"finally\",\"for\",\"function\",\"global\",\"if\",\"import\",\"in\",\"isa\",\"let\",\"local\",\"macro\",\"module\",\"quote\",\"return\",\"true\",\"try\",\"using\",\"where\",\"while\"],\nliteral:[\"ARGS\",\"C_NULL\",\"DEPOT_PATH\",\"ENDIAN_BOM\",\"ENV\",\"Inf\",\"Inf16\",\"Inf32\",\"Inf64\",\"InsertionSort\",\"LOAD_PATH\",\"MergeSort\",\"NaN\",\"NaN16\",\"NaN32\",\"NaN64\",\"PROGRAM_FILE\",\"QuickSort\",\"RoundDown\",\"RoundFromZero\",\"RoundNearest\",\"RoundNearestTiesAway\",\"RoundNearestTiesUp\",\"RoundToZero\",\"RoundUp\",\"VERSION|0\",\"devnull\",\"false\",\"im\",\"missing\",\"nothing\",\"pi\",\"stderr\",\"stdin\",\"stdout\",\"true\",\"undef\",\"\\u03c0\",\"\\u212f\"],\nbuilt_in:[\"AbstractArray\",\"AbstractChannel\",\"AbstractChar\",\"AbstractDict\",\"AbstractDisplay\",\"AbstractFloat\",\"AbstractIrrational\",\"AbstractMatrix\",\"AbstractRange\",\"AbstractSet\",\"AbstractString\",\"AbstractUnitRange\",\"AbstractVecOrMat\",\"AbstractVector\",\"Any\",\"ArgumentError\",\"Array\",\"AssertionError\",\"BigFloat\",\"BigInt\",\"BitArray\",\"BitMatrix\",\"BitSet\",\"BitVector\",\"Bool\",\"BoundsError\",\"CapturedException\",\"CartesianIndex\",\"CartesianIndices\",\"Cchar\",\"Cdouble\",\"Cfloat\",\"Channel\",\"Char\",\"Cint\",\"Cintmax_t\",\"Clong\",\"Clonglong\",\"Cmd\",\"Colon\",\"Complex\",\"ComplexF16\",\"ComplexF32\",\"ComplexF64\",\"CompositeException\",\"Condition\",\"Cptrdiff_t\",\"Cshort\",\"Csize_t\",\"Cssize_t\",\"Cstring\",\"Cuchar\",\"Cuint\",\"Cuintmax_t\",\"Culong\",\"Culonglong\",\"Cushort\",\"Cvoid\",\"Cwchar_t\",\"Cwstring\",\"DataType\",\"DenseArray\",\"DenseMatrix\",\"DenseVecOrMat\",\"DenseVector\",\"Dict\",\"DimensionMismatch\",\"Dims\",\"DivideError\",\"DomainError\",\"EOFError\",\"Enum\",\"ErrorException\",\"Exception\",\"ExponentialBackOff\",\"Expr\",\"Float16\",\"Float32\",\"Float64\",\"Function\",\"GlobalRef\",\"HTML\",\"IO\",\"IOBuffer\",\"IOContext\",\"IOStream\",\"IdDict\",\"IndexCartesian\",\"IndexLinear\",\"IndexStyle\",\"InexactError\",\"InitError\",\"Int\",\"Int128\",\"Int16\",\"Int32\",\"Int64\",\"Int8\",\"Integer\",\"InterruptException\",\"InvalidStateException\",\"Irrational\",\"KeyError\",\"LinRange\",\"LineNumberNode\",\"LinearIndices\",\"LoadError\",\"MIME\",\"Matrix\",\"Method\",\"MethodError\",\"Missing\",\"MissingException\",\"Module\",\"NTuple\",\"NamedTuple\",\"Nothing\",\"Number\",\"OrdinalRange\",\"OutOfMemoryError\",\"OverflowError\",\"Pair\",\"PartialQuickSort\",\"PermutedDimsArray\",\"Pipe\",\"ProcessFailedException\",\"Ptr\",\"QuoteNode\",\"Rational\",\"RawFD\",\"ReadOnlyMemoryError\",\"Real\",\"ReentrantLock\",\"Ref\",\"Regex\",\"RegexMatch\",\"RoundingMode\",\"SegmentationFault\",\"Set\",\"Signed\",\"Some\",\"StackOverflowError\",\"StepRange\",\"StepRangeLen\",\"StridedArray\",\"StridedMatrix\",\"StridedVecOrMat\",\"StridedVector\",\"String\",\"StringIndexError\",\"SubArray\",\"SubString\",\"SubstitutionString\",\"Symbol\",\"SystemError\",\"Task\",\"TaskFailedException\",\"Text\",\"TextDisplay\",\"Timer\",\"Tuple\",\"Type\",\"TypeError\",\"TypeVar\",\"UInt\",\"UInt128\",\"UInt16\",\"UInt32\",\"UInt64\",\"UInt8\",\"UndefInitializer\",\"UndefKeywordError\",\"UndefRefError\",\"UndefVarError\",\"Union\",\"UnionAll\",\"UnitRange\",\"Unsigned\",\"Val\",\"Vararg\",\"VecElement\",\"VecOrMat\",\"Vector\",\"VersionNumber\",\"WeakKeyDict\",\"WeakRef\"]\n},n={keywords:t,illegal:/<\\//},a={className:\"subst\",begin:/\\$\\(/,end:/\\)/,\nkeywords:t},i={className:\"variable\",begin:\"\\\\$\"+r},o={className:\"string\",\ncontains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\\w*\"\"\"/,end:/\"\"\"\\w*/,\nrelevance:10},{begin:/\\w*\"/,end:/\"\\w*/}]},s={className:\"string\",\ncontains:[e.BACKSLASH_ESCAPE,a,i],begin:\"`\",end:\"`\"},l={className:\"meta\",\nbegin:\"@\"+r};return n.name=\"Julia\",n.contains=[{className:\"number\",\nbegin:/(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\nrelevance:0},{className:\"string\",begin:/'(.|\\\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{\nclassName:\"comment\",variants:[{begin:\"#=\",end:\"=#\",relevance:10},{begin:\"#\",\nend:\"$\"}]},e.HASH_COMMENT_MODE,{className:\"keyword\",\nbegin:\"\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b\"},{begin:/<:/\n}],a.contains=n.contains,n}})());hljs.registerLanguage(\"julia-repl\",(()=>{\"use strict\";return a=>({\nname:\"Julia REPL\",contains:[{className:\"meta\",begin:/^julia>/,relevance:10,\nstarts:{end:/^(?![ ]{6})/,subLanguage:\"julia\"},aliases:[\"jldoctest\"]}]})})());hljs.registerLanguage(\"css\",(()=>{\"use strict\"\n;const e=[\"a\",\"abbr\",\"address\",\"article\",\"aside\",\"audio\",\"b\",\"blockquote\",\"body\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"mark\",\"menu\",\"nav\",\"object\",\"ol\",\"p\",\"q\",\"quote\",\"samp\",\"section\",\"span\",\"strong\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"ul\",\"var\",\"video\"],t=[\"any-hover\",\"any-pointer\",\"aspect-ratio\",\"color\",\"color-gamut\",\"color-index\",\"device-aspect-ratio\",\"device-height\",\"device-width\",\"display-mode\",\"forced-colors\",\"grid\",\"height\",\"hover\",\"inverted-colors\",\"monochrome\",\"orientation\",\"overflow-block\",\"overflow-inline\",\"pointer\",\"prefers-color-scheme\",\"prefers-contrast\",\"prefers-reduced-motion\",\"prefers-reduced-transparency\",\"resolution\",\"scan\",\"scripting\",\"update\",\"width\",\"min-width\",\"max-width\",\"min-height\",\"max-height\"],i=[\"active\",\"any-link\",\"blank\",\"checked\",\"current\",\"default\",\"defined\",\"dir\",\"disabled\",\"drop\",\"empty\",\"enabled\",\"first\",\"first-child\",\"first-of-type\",\"fullscreen\",\"future\",\"focus\",\"focus-visible\",\"focus-within\",\"has\",\"host\",\"host-context\",\"hover\",\"indeterminate\",\"in-range\",\"invalid\",\"is\",\"lang\",\"last-child\",\"last-of-type\",\"left\",\"link\",\"local-link\",\"not\",\"nth-child\",\"nth-col\",\"nth-last-child\",\"nth-last-col\",\"nth-last-of-type\",\"nth-of-type\",\"only-child\",\"only-of-type\",\"optional\",\"out-of-range\",\"past\",\"placeholder-shown\",\"read-only\",\"read-write\",\"required\",\"right\",\"root\",\"scope\",\"target\",\"target-within\",\"user-invalid\",\"valid\",\"visited\",\"where\"],o=[\"after\",\"backdrop\",\"before\",\"cue\",\"cue-region\",\"first-letter\",\"first-line\",\"grammar-error\",\"marker\",\"part\",\"placeholder\",\"selection\",\"slotted\",\"spelling-error\"],r=[\"align-content\",\"align-items\",\"align-self\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"auto\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"clip-path\",\"color\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"cursor\",\"direction\",\"display\",\"empty-cells\",\"filter\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"font\",\"font-display\",\"font-family\",\"font-feature-settings\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-smoothing\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-variant-ligatures\",\"font-variation-settings\",\"font-weight\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"ime-mode\",\"inherit\",\"initial\",\"justify-content\",\"left\",\"letter-spacing\",\"line-height\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marks\",\"mask\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"none\",\"normal\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"perspective\",\"perspective-origin\",\"pointer-events\",\"position\",\"quotes\",\"resize\",\"right\",\"src\",\"tab-size\",\"table-layout\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-style\",\"text-indent\",\"text-overflow\",\"text-rendering\",\"text-shadow\",\"text-transform\",\"text-underline-position\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"white-space\",\"widows\",\"width\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\"].reverse()\n;return n=>{const a=(e=>({IMPORTANT:{className:\"meta\",begin:\"!important\"},\nHEXCOLOR:{className:\"number\",begin:\"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\"},\nATTRIBUTE_SELECTOR_MODE:{className:\"selector-attr\",begin:/\\[/,end:/\\]/,\nillegal:\"$\",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}\n}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:\"CSS\",\ncase_insensitive:!0,illegal:/[=|'\\$]/,keywords:{keyframePosition:\"from to\"},\nclassNameAliases:{keyframePosition:\"selector-tag\"},\ncontains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/\n},n.CSS_NUMBER_MODE,{className:\"selector-id\",begin:/#[A-Za-z0-9_-]+/,relevance:0\n},{className:\"selector-class\",begin:\"\\\\.[a-zA-Z-][a-zA-Z0-9_-]*\",relevance:0\n},a.ATTRIBUTE_SELECTOR_MODE,{className:\"selector-pseudo\",variants:[{\nbegin:\":(\"+i.join(\"|\")+\")\"},{begin:\"::(\"+o.join(\"|\")+\")\"}]},{\nclassName:\"attribute\",begin:\"\\\\b(\"+r.join(\"|\")+\")\\\\b\"},{begin:\":\",end:\"[;}]\",\ncontains:[a.HEXCOLOR,a.IMPORTANT,n.CSS_NUMBER_MODE,...l,{\nbegin:/(url|data-uri)\\(/,end:/\\)/,relevance:0,keywords:{built_in:\"url data-uri\"\n},contains:[{className:\"string\",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]\n},{className:\"built_in\",begin:/[\\w-]+(?=\\()/}]},{\nbegin:(s=/@/,((...e)=>e.map((e=>(e=>e?\"string\"==typeof e?e:e.source:null)(e))).join(\"\"))(\"(?=\",s,\")\")),\nend:\"[{;]\",relevance:0,illegal:/:/,contains:[{className:\"keyword\",\nbegin:/@-?\\w[\\w]*(-\\w+)*/},{begin:/\\s/,endsWithParent:!0,excludeEnd:!0,\nrelevance:0,keywords:{$pattern:/[a-z-]+/,keyword:\"and or not only\",\nattribute:t.join(\" \")},contains:[{begin:/[a-z-]+(?=:)/,className:\"attribute\"\n},...l,n.CSS_NUMBER_MODE]}]},{className:\"selector-tag\",\nbegin:\"\\\\b(\"+e.join(\"|\")+\")\\\\b\"}]};var s}})());hljs.registerLanguage(\"ini\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function n(...n){\nreturn n.map((n=>e(n))).join(\"\")}return s=>{const a={className:\"number\",\nrelevance:0,variants:[{begin:/([+-]+)?[\\d]+_[\\d_]+/},{begin:s.NUMBER_RE}]\n},i=s.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const t={\nclassName:\"variable\",variants:[{begin:/\\$[\\w\\d\"][\\w\\d_]*/},{begin:/\\$\\{(.*?)\\}/\n}]},r={className:\"literal\",begin:/\\bon|off|true|false|yes|no\\b/},l={\nclassName:\"string\",contains:[s.BACKSLASH_ESCAPE],variants:[{begin:\"'''\",\nend:\"'''\",relevance:10},{begin:'\"\"\"',end:'\"\"\"',relevance:10},{begin:'\"',end:'\"'\n},{begin:\"'\",end:\"'\"}]},c={begin:/\\[/,end:/\\]/,contains:[i,r,t,l,a,\"self\"],\nrelevance:0\n},g=\"(\"+[/[A-Za-z0-9_-]+/,/\"(\\\\\"|[^\"])*\"/,/'[^']*'/].map((n=>e(n))).join(\"|\")+\")\"\n;return{name:\"TOML, also INI\",aliases:[\"toml\"],case_insensitive:!0,illegal:/\\S/,\ncontains:[i,{className:\"section\",begin:/\\[+/,end:/\\]+/},{\nbegin:n(g,\"(\\\\s*\\\\.\\\\s*\",g,\")*\",n(\"(?=\",/\\s*=\\s*[^#\\s]/,\")\")),className:\"attr\",\nstarts:{end:/$/,contains:[i,c,r,t,l,a]}}]}}})());hljs.registerLanguage(\"markdown\",(()=>{\"use strict\";function n(...n){\nreturn n.map((n=>{return(e=n)?\"string\"==typeof e?e:e.source:null;var e\n})).join(\"\")}return e=>{const a={begin:/<\\/?[A-Za-z_]/,end:\">\",\nsubLanguage:\"xml\",relevance:0},i={variants:[{begin:/\\[.+?\\]\\[.*?\\]/,relevance:0\n},{begin:/\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\nrelevance:2},{begin:n(/\\[.+?\\]\\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\\/\\/.*?\\)/),\nrelevance:2},{begin:/\\[.+?\\]\\([./?&#].*?\\)/,relevance:1},{\nbegin:/\\[.+?\\]\\(.*?\\)/,relevance:0}],returnBegin:!0,contains:[{\nclassName:\"string\",relevance:0,begin:\"\\\\[\",end:\"\\\\]\",excludeBegin:!0,\nreturnEnd:!0},{className:\"link\",relevance:0,begin:\"\\\\]\\\\(\",end:\"\\\\)\",\nexcludeBegin:!0,excludeEnd:!0},{className:\"symbol\",relevance:0,begin:\"\\\\]\\\\[\",\nend:\"\\\\]\",excludeBegin:!0,excludeEnd:!0}]},s={className:\"strong\",contains:[],\nvariants:[{begin:/_{2}/,end:/_{2}/},{begin:/\\*{2}/,end:/\\*{2}/}]},c={\nclassName:\"emphasis\",contains:[],variants:[{begin:/\\*(?!\\*)/,end:/\\*/},{\nbegin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s)\n;let t=[a,i]\n;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t),\nt=t.concat(s,c),{name:\"Markdown\",aliases:[\"md\",\"mkdown\",\"mkd\"],contains:[{\nclassName:\"section\",variants:[{begin:\"^#{1,6}\",end:\"$\",contains:t},{\nbegin:\"(?=^.+?\\\\n[=-]{2,}$)\",contains:[{begin:\"^[=-]*$\"},{begin:\"^\",end:\"\\\\n\",\ncontains:t}]}]},a,{className:\"bullet\",begin:\"^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)\",\nend:\"\\\\s+\",excludeEnd:!0},s,c,{className:\"quote\",begin:\"^>\\\\s+\",contains:t,\nend:\"$\"},{className:\"code\",variants:[{begin:\"(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*\"},{\nbegin:\"(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*\"},{begin:\"```\",end:\"```+[ ]*$\"},{\nbegin:\"~~~\",end:\"~~~+[ ]*$\"},{begin:\"`.+?`\"},{begin:\"(?=^( {4}|\\\\t))\",\ncontains:[{begin:\"^( {4}|\\\\t)\",end:\"(\\\\n)$\"}],relevance:0}]},{\nbegin:\"^[-\\\\*]{3,}\",end:\"$\"},i,{begin:/^\\[[^\\n]+\\]:/,returnBegin:!0,contains:[{\nclassName:\"symbol\",begin:/\\[/,end:/\\]/,excludeBegin:!0,excludeEnd:!0},{\nclassName:\"link\",begin:/:\\s*/,end:/$/,excludeBegin:!0}]}]}}})());hljs.registerLanguage(\"dart\",(()=>{\"use strict\";return e=>{const n={\nclassName:\"subst\",variants:[{begin:\"\\\\$[A-Za-z0-9_]+\"}]},a={className:\"subst\",\nvariants:[{begin:/\\$\\{/,end:/\\}/}],keywords:\"true false null this is new super\"\n},t={className:\"string\",variants:[{begin:\"r'''\",end:\"'''\"},{begin:'r\"\"\"',\nend:'\"\"\"'},{begin:\"r'\",end:\"'\",illegal:\"\\\\n\"},{begin:'r\"',end:'\"',illegal:\"\\\\n\"\n},{begin:\"'''\",end:\"'''\",contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'\"\"\"',\nend:'\"\"\"',contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:\"'\",end:\"'\",illegal:\"\\\\n\",\ncontains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'\"',end:'\"',illegal:\"\\\\n\",\ncontains:[e.BACKSLASH_ESCAPE,n,a]}]};a.contains=[e.C_NUMBER_MODE,t]\n;const i=[\"Comparable\",\"DateTime\",\"Duration\",\"Function\",\"Iterable\",\"Iterator\",\"List\",\"Map\",\"Match\",\"Object\",\"Pattern\",\"RegExp\",\"Set\",\"Stopwatch\",\"String\",\"StringBuffer\",\"StringSink\",\"Symbol\",\"Type\",\"Uri\",\"bool\",\"double\",\"int\",\"num\",\"Element\",\"ElementList\"],r=i.map((e=>e+\"?\"))\n;return{name:\"Dart\",keywords:{\nkeyword:\"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is late library mixin new null on operator part required rethrow return set show static super switch sync this throw true try typedef var void while with yield\",\nbuilt_in:i.concat(r).concat([\"Never\",\"Null\",\"dynamic\",\"print\",\"document\",\"querySelector\",\"querySelectorAll\",\"window\"]),\n$pattern:/[A-Za-z][A-Za-z0-9_]*\\??/},\ncontains:[t,e.COMMENT(/\\/\\*\\*(?!\\/)/,/\\*\\//,{subLanguage:\"markdown\",relevance:0\n}),e.COMMENT(/\\/{3,} ?/,/$/,{contains:[{subLanguage:\"markdown\",begin:\".\",\nend:\"$\",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{\nclassName:\"class\",beginKeywords:\"class interface\",end:/\\{/,excludeEnd:!0,\ncontains:[{beginKeywords:\"extends implements\"},e.UNDERSCORE_TITLE_MODE]\n},e.C_NUMBER_MODE,{className:\"meta\",begin:\"@[A-Za-z]+\"},{begin:\"=>\"}]}}})());hljs.registerLanguage(\"apache\",(()=>{\"use strict\";return e=>{const n={\nclassName:\"number\",begin:/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?/}\n;return{name:\"Apache config\",aliases:[\"apacheconf\"],case_insensitive:!0,\ncontains:[e.HASH_COMMENT_MODE,{className:\"section\",begin:/<\\/?/,end:/>/,\ncontains:[n,{className:\"number\",begin:/:\\d{1,5}/\n},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:\"attribute\",\nbegin:/\\w+/,relevance:0,keywords:{\nnomarkup:\"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername\"\n},starts:{end:/$/,relevance:0,keywords:{literal:\"on off all deny allow\"},\ncontains:[{className:\"meta\",begin:/\\s\\[/,end:/\\]$/},{className:\"variable\",\nbegin:/[\\$%]\\{/,end:/\\}/,contains:[\"self\",{className:\"number\",begin:/[$%]\\d+/}]\n},n,{className:\"number\",begin:/\\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\\S/}}\n})());hljs.registerLanguage(\"go\",(()=>{\"use strict\";return e=>{const n={\nkeyword:\"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune\",\nliteral:\"true false iota nil\",\nbuilt_in:\"append cap close complex copy imag len make new panic print println real recover delete\"\n};return{name:\"Go\",aliases:[\"golang\"],keywords:n,illegal:\"</\",\ncontains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\"string\",\nvariants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:\"`\",end:\"`\"}]},{\nclassName:\"number\",variants:[{begin:e.C_NUMBER_RE+\"[i]\",relevance:1\n},e.C_NUMBER_MODE]},{begin:/:=/},{className:\"function\",beginKeywords:\"func\",\nend:\"\\\\s*(\\\\{|$)\",excludeEnd:!0,contains:[e.TITLE_MODE,{className:\"params\",\nbegin:/\\(/,end:/\\)/,keywords:n,illegal:/[\"']/}]}]}}})());hljs.registerLanguage(\"perl\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function n(...n){\nreturn n.map((n=>e(n))).join(\"\")}function t(...n){\nreturn\"(\"+n.map((n=>e(n))).join(\"|\")+\")\"}return e=>{\nconst r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\\w.]+/,\nkeyword:\"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0\"\n},i={className:\"subst\",begin:\"[$@]\\\\{\",end:\"\\\\}\",keywords:s},a={begin:/->\\{/,\nend:/\\}/},o={variants:[{begin:/\\$\\d/},{\nbegin:n(/[$%@](\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/,\"(?![A-Za-z])(?![@$%])\")\n},{begin:/[$%@][^\\s\\w{]/,relevance:0}]\n},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\\//,/\\|/,/\\?/,/'/,/\"/,/#/],l=(e,t,s=\"\\\\1\")=>{\nconst i=\"\\\\1\"===s?s:n(s,t)\n;return n(n(\"(?:\",e,\")\"),t,/(?:\\\\.|[^\\\\\\/])*?/,i,/(?:\\\\.|[^\\\\\\/])*?/,s,r)\n},d=(e,t,s)=>n(n(\"(?:\",e,\")\"),t,/(?:\\\\.|[^\\\\\\/])*?/,s,r),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\\w/,/=cut/,{\nendsWithParent:!0}),a,{className:\"string\",contains:c,variants:[{\nbegin:\"q[qwxr]?\\\\s*\\\\(\",end:\"\\\\)\",relevance:5},{begin:\"q[qwxr]?\\\\s*\\\\[\",\nend:\"\\\\]\",relevance:5},{begin:\"q[qwxr]?\\\\s*\\\\{\",end:\"\\\\}\",relevance:5},{\nbegin:\"q[qwxr]?\\\\s*\\\\|\",end:\"\\\\|\",relevance:5},{begin:\"q[qwxr]?\\\\s*<\",end:\">\",\nrelevance:5},{begin:\"qw\\\\s+q\",end:\"q\",relevance:5},{begin:\"'\",end:\"'\",\ncontains:[e.BACKSLASH_ESCAPE]},{begin:'\"',end:'\"'},{begin:\"`\",end:\"`\",\ncontains:[e.BACKSLASH_ESCAPE]},{begin:/\\{\\w+\\}/,relevance:0},{\nbegin:\"-?\\\\w+\\\\s*=>\",relevance:0}]},{className:\"number\",\nbegin:\"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\nrelevance:0},{\nbegin:\"(\\\\/\\\\/|\"+e.RE_STARTERS_RE+\"|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*\",\nkeywords:\"split return print reverse grep\",relevance:0,\ncontains:[e.HASH_COMMENT_MODE,{className:\"regexp\",variants:[{\nbegin:l(\"s|tr|y\",t(...g))},{begin:l(\"s|tr|y\",\"\\\\(\",\"\\\\)\")},{\nbegin:l(\"s|tr|y\",\"\\\\[\",\"\\\\]\")},{begin:l(\"s|tr|y\",\"\\\\{\",\"\\\\}\")}],relevance:2},{\nclassName:\"regexp\",variants:[{begin:/(m|qr)\\/\\//,relevance:0},{\nbegin:d(\"(?:m|qr)?\",/\\//,/\\//)},{begin:d(\"m|qr\",t(...g),/\\1/)},{\nbegin:d(\"m|qr\",/\\(/,/\\)/)},{begin:d(\"m|qr\",/\\[/,/\\]/)},{\nbegin:d(\"m|qr\",/\\{/,/\\}/)}]}]},{className:\"function\",beginKeywords:\"sub\",\nend:\"(\\\\s*\\\\(.*?\\\\))?[;{]\",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{\nbegin:\"-\\\\w\\\\b\",relevance:0},{begin:\"^__DATA__$\",end:\"^__END__$\",\nsubLanguage:\"mojolicious\",contains:[{begin:\"^@@.*\",end:\"$\",className:\"comment\"}]\n}];return i.contains=p,a.contains=p,{name:\"Perl\",aliases:[\"pl\",\"pm\"],keywords:s,\ncontains:p}}})());hljs.registerLanguage(\"lua\",(()=>{\"use strict\";return e=>{\nconst t=\"\\\\[=*\\\\[\",a=\"\\\\]=*\\\\]\",n={begin:t,end:a,contains:[\"self\"]\n},o=[e.COMMENT(\"--(?!\\\\[=*\\\\[)\",\"$\"),e.COMMENT(\"--\\\\[=*\\\\[\",a,{contains:[n],\nrelevance:10})];return{name:\"Lua\",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,\nliteral:\"true false nil\",\nkeyword:\"and break do else elseif end for goto if in local not or repeat return then until while\",\nbuilt_in:\"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove\"\n},contains:o.concat([{className:\"function\",beginKeywords:\"function\",end:\"\\\\)\",\ncontains:[e.inherit(e.TITLE_MODE,{\nbegin:\"([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*\"}),{className:\"params\",\nbegin:\"\\\\(\",endsWithParent:!0,contains:o}].concat(o)\n},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:\"string\",\nbegin:t,end:a,contains:[n],relevance:5}])}}})());hljs.registerLanguage(\"cpp\",(()=>{\"use strict\";function e(e){\nreturn t(\"(\",e,\")?\")}function t(...e){return e.map((e=>{\nreturn(t=e)?\"string\"==typeof t?t:t.source:null;var t})).join(\"\")}return n=>{\nconst r=n.COMMENT(\"//\",\"$\",{contains:[{begin:/\\\\\\n/}]\n}),a=\"[a-zA-Z_]\\\\w*::\",i=\"(decltype\\\\(auto\\\\)|\"+e(a)+\"[a-zA-Z_]\\\\w*\"+e(\"<[^<>]+>\")+\")\",s={\nclassName:\"keyword\",begin:\"\\\\b[a-z\\\\d_]*_t\\\\b\"},c={className:\"string\",\nvariants:[{begin:'(u8?|U|L)?\"',end:'\"',illegal:\"\\\\n\",\ncontains:[n.BACKSLASH_ESCAPE]},{\nbegin:\"(u8?|U|L)?'(\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)|.)\",\nend:\"'\",illegal:\".\"},n.END_SAME_AS_BEGIN({\nbegin:/(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,end:/\\)([^()\\\\ ]{0,16})\"/})]},o={\nclassName:\"number\",variants:[{begin:\"\\\\b(0b[01']+)\"},{\nbegin:\"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\"\n},{\nbegin:\"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n}],relevance:0},l={className:\"meta\",begin:/#\\s*[a-z]+\\b/,end:/$/,keywords:{\n\"meta-keyword\":\"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\"\n},contains:[{begin:/\\\\\\n/,relevance:0},n.inherit(c,{className:\"meta-string\"}),{\nclassName:\"meta-string\",begin:/<.*?>/},r,n.C_BLOCK_COMMENT_MODE]},d={\nclassName:\"title\",begin:e(a)+n.IDENT_RE,relevance:0\n},u=e(a)+n.IDENT_RE+\"\\\\s*\\\\(\",m={\nkeyword:\"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq\",\nbuilt_in:\"_Bool _Complex _Imaginary\",\n_relevance_hints:[\"asin\",\"atan2\",\"atan\",\"calloc\",\"ceil\",\"cosh\",\"cos\",\"exit\",\"exp\",\"fabs\",\"floor\",\"fmod\",\"fprintf\",\"fputs\",\"free\",\"frexp\",\"auto_ptr\",\"deque\",\"list\",\"queue\",\"stack\",\"vector\",\"map\",\"set\",\"pair\",\"bitset\",\"multiset\",\"multimap\",\"unordered_set\",\"fscanf\",\"future\",\"isalnum\",\"isalpha\",\"iscntrl\",\"isdigit\",\"isgraph\",\"islower\",\"isprint\",\"ispunct\",\"isspace\",\"isupper\",\"isxdigit\",\"tolower\",\"toupper\",\"labs\",\"ldexp\",\"log10\",\"log\",\"malloc\",\"realloc\",\"memchr\",\"memcmp\",\"memcpy\",\"memset\",\"modf\",\"pow\",\"printf\",\"putchar\",\"puts\",\"scanf\",\"sinh\",\"sin\",\"snprintf\",\"sprintf\",\"sqrt\",\"sscanf\",\"strcat\",\"strchr\",\"strcmp\",\"strcpy\",\"strcspn\",\"strlen\",\"strncat\",\"strncmp\",\"strncpy\",\"strpbrk\",\"strrchr\",\"strspn\",\"strstr\",\"tanh\",\"tan\",\"unordered_map\",\"unordered_multiset\",\"unordered_multimap\",\"priority_queue\",\"make_pair\",\"array\",\"shared_ptr\",\"abort\",\"terminate\",\"abs\",\"acos\",\"vfprintf\",\"vprintf\",\"vsprintf\",\"endl\",\"initializer_list\",\"unique_ptr\",\"complex\",\"imaginary\",\"std\",\"string\",\"wstring\",\"cin\",\"cout\",\"cerr\",\"clog\",\"stdin\",\"stdout\",\"stderr\",\"stringstream\",\"istringstream\",\"ostringstream\"],\nliteral:\"true false nullptr NULL\"},p={className:\"function.dispatch\",relevance:0,\nkeywords:m,\nbegin:t(/\\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!while)/,n.IDENT_RE,(_=/\\s*\\(/,\nt(\"(?=\",_,\")\")))};var _;const g=[p,l,s,r,n.C_BLOCK_COMMENT_MODE,o,c],b={\nvariants:[{begin:/=/,end:/;/},{begin:/\\(/,end:/\\)/},{\nbeginKeywords:\"new throw return else\",end:/;/}],keywords:m,contains:g.concat([{\nbegin:/\\(/,end:/\\)/,keywords:m,contains:g.concat([\"self\"]),relevance:0}]),\nrelevance:0},f={className:\"function\",begin:\"(\"+i+\"[\\\\*&\\\\s]+)+\"+u,\nreturnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\\w\\s\\*&:<>.]/,\ncontains:[{begin:\"decltype\\\\(auto\\\\)\",keywords:m,relevance:0},{begin:u,\nreturnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,\nendsWithParent:!0,contains:[c,o]},{className:\"params\",begin:/\\(/,end:/\\)/,\nkeywords:m,relevance:0,contains:[r,n.C_BLOCK_COMMENT_MODE,c,o,s,{begin:/\\(/,\nend:/\\)/,keywords:m,relevance:0,contains:[\"self\",r,n.C_BLOCK_COMMENT_MODE,c,o,s]\n}]},s,r,n.C_BLOCK_COMMENT_MODE,l]};return{name:\"C++\",\naliases:[\"cc\",\"c++\",\"h++\",\"hpp\",\"hh\",\"hxx\",\"cxx\"],keywords:m,illegal:\"</\",\nclassNameAliases:{\"function.dispatch\":\"built_in\"},\ncontains:[].concat(b,f,p,g,[l,{\nbegin:\"\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",\nend:\">\",keywords:m,contains:[\"self\",s]},{begin:n.IDENT_RE+\"::\",keywords:m},{\nclassName:\"class\",beginKeywords:\"enum class struct union\",end:/[{;:<>=]/,\ncontains:[{beginKeywords:\"final class struct\"},n.TITLE_MODE]}]),exports:{\npreprocessor:l,strings:c,keywords:m}}}})());hljs.registerLanguage(\"scss\",(()=>{\"use strict\"\n;const e=[\"a\",\"abbr\",\"address\",\"article\",\"aside\",\"audio\",\"b\",\"blockquote\",\"body\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"mark\",\"menu\",\"nav\",\"object\",\"ol\",\"p\",\"q\",\"quote\",\"samp\",\"section\",\"span\",\"strong\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"ul\",\"var\",\"video\"],t=[\"any-hover\",\"any-pointer\",\"aspect-ratio\",\"color\",\"color-gamut\",\"color-index\",\"device-aspect-ratio\",\"device-height\",\"device-width\",\"display-mode\",\"forced-colors\",\"grid\",\"height\",\"hover\",\"inverted-colors\",\"monochrome\",\"orientation\",\"overflow-block\",\"overflow-inline\",\"pointer\",\"prefers-color-scheme\",\"prefers-contrast\",\"prefers-reduced-motion\",\"prefers-reduced-transparency\",\"resolution\",\"scan\",\"scripting\",\"update\",\"width\",\"min-width\",\"max-width\",\"min-height\",\"max-height\"],i=[\"active\",\"any-link\",\"blank\",\"checked\",\"current\",\"default\",\"defined\",\"dir\",\"disabled\",\"drop\",\"empty\",\"enabled\",\"first\",\"first-child\",\"first-of-type\",\"fullscreen\",\"future\",\"focus\",\"focus-visible\",\"focus-within\",\"has\",\"host\",\"host-context\",\"hover\",\"indeterminate\",\"in-range\",\"invalid\",\"is\",\"lang\",\"last-child\",\"last-of-type\",\"left\",\"link\",\"local-link\",\"not\",\"nth-child\",\"nth-col\",\"nth-last-child\",\"nth-last-col\",\"nth-last-of-type\",\"nth-of-type\",\"only-child\",\"only-of-type\",\"optional\",\"out-of-range\",\"past\",\"placeholder-shown\",\"read-only\",\"read-write\",\"required\",\"right\",\"root\",\"scope\",\"target\",\"target-within\",\"user-invalid\",\"valid\",\"visited\",\"where\"],o=[\"after\",\"backdrop\",\"before\",\"cue\",\"cue-region\",\"first-letter\",\"first-line\",\"grammar-error\",\"marker\",\"part\",\"placeholder\",\"selection\",\"slotted\",\"spelling-error\"],r=[\"align-content\",\"align-items\",\"align-self\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"auto\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"clip-path\",\"color\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"cursor\",\"direction\",\"display\",\"empty-cells\",\"filter\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"font\",\"font-display\",\"font-family\",\"font-feature-settings\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-smoothing\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-variant-ligatures\",\"font-variation-settings\",\"font-weight\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"ime-mode\",\"inherit\",\"initial\",\"justify-content\",\"left\",\"letter-spacing\",\"line-height\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marks\",\"mask\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"none\",\"normal\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"perspective\",\"perspective-origin\",\"pointer-events\",\"position\",\"quotes\",\"resize\",\"right\",\"src\",\"tab-size\",\"table-layout\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-style\",\"text-indent\",\"text-overflow\",\"text-rendering\",\"text-shadow\",\"text-transform\",\"text-underline-position\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"white-space\",\"widows\",\"width\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\"].reverse()\n;return a=>{const n=(e=>({IMPORTANT:{className:\"meta\",begin:\"!important\"},\nHEXCOLOR:{className:\"number\",begin:\"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\"},\nATTRIBUTE_SELECTOR_MODE:{className:\"selector-attr\",begin:/\\[/,end:/\\]/,\nillegal:\"$\",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}\n}))(a),l=o,s=i,d=\"@[a-z-]+\",c={className:\"variable\",\nbegin:\"(\\\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\\\b\"};return{name:\"SCSS\",case_insensitive:!0,\nillegal:\"[=/|']\",contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,{\nclassName:\"selector-id\",begin:\"#[A-Za-z0-9_-]+\",relevance:0},{\nclassName:\"selector-class\",begin:\"\\\\.[A-Za-z0-9_-]+\",relevance:0\n},n.ATTRIBUTE_SELECTOR_MODE,{className:\"selector-tag\",\nbegin:\"\\\\b(\"+e.join(\"|\")+\")\\\\b\",relevance:0},{className:\"selector-pseudo\",\nbegin:\":(\"+s.join(\"|\")+\")\"},{className:\"selector-pseudo\",\nbegin:\"::(\"+l.join(\"|\")+\")\"},c,{begin:/\\(/,end:/\\)/,contains:[a.CSS_NUMBER_MODE]\n},{className:\"attribute\",begin:\"\\\\b(\"+r.join(\"|\")+\")\\\\b\"},{\nbegin:\"\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\"\n},{begin:\":\",end:\";\",\ncontains:[c,n.HEXCOLOR,a.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.IMPORTANT]\n},{begin:\"@(page|font-face)\",lexemes:d,keywords:\"@page @font-face\"},{begin:\"@\",\nend:\"[{;]\",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,\nkeyword:\"and or not only\",attribute:t.join(\" \")},contains:[{begin:d,\nclassName:\"keyword\"},{begin:/[a-z-]+(?=:)/,className:\"attribute\"\n},c,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.HEXCOLOR,a.CSS_NUMBER_MODE]}]}}\n})());hljs.registerLanguage(\"http\",(()=>{\"use strict\";function e(...e){\nreturn e.map((e=>{return(n=e)?\"string\"==typeof n?n:n.source:null;var n\n})).join(\"\")}return n=>{const a=\"HTTP/(2|1\\\\.[01])\",s={className:\"attribute\",\nbegin:e(\"^\",/[A-Za-z][A-Za-z0-9-]*/,\"(?=\\\\:\\\\s)\"),starts:{contains:[{\nclassName:\"punctuation\",begin:/: /,relevance:0,starts:{end:\"$\",relevance:0}}]}\n},t=[s,{begin:\"\\\\n\\\\n\",starts:{subLanguage:[],endsWithParent:!0}}];return{\nname:\"HTTP\",aliases:[\"https\"],illegal:/\\S/,contains:[{begin:\"^(?=\"+a+\" \\\\d{3})\",\nend:/$/,contains:[{className:\"meta\",begin:a},{className:\"number\",\nbegin:\"\\\\b\\\\d{3}\\\\b\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:t}},{\nbegin:\"(?=^[A-Z]+ (.*?) \"+a+\"$)\",end:/$/,contains:[{className:\"string\",\nbegin:\" \",end:\" \",excludeBegin:!0,excludeEnd:!0},{className:\"meta\",begin:a},{\nclassName:\"keyword\",begin:\"[A-Z]+\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:t}\n},n.inherit(s,{relevance:0})]}}})());hljs.registerLanguage(\"plaintext\",(()=>{\"use strict\";return t=>({\nname:\"Plain text\",aliases:[\"text\",\"txt\"],disableAutodetect:!0})})());hljs.registerLanguage(\"powershell\",(()=>{\"use strict\";return e=>{const n={\n$pattern:/-?[A-z\\.\\-]+\\b/,\nkeyword:\"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter\",\nbuilt_in:\"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write\"\n},s={begin:\"`[\\\\s\\\\S]\",relevance:0},i={className:\"variable\",variants:[{\nbegin:/\\$\\B/},{className:\"keyword\",begin:/\\$this/},{begin:/\\$[\\w\\d][\\w\\d_:]*/}]\n},a={className:\"string\",variants:[{begin:/\"/,end:/\"/},{begin:/@\"/,end:/^\"@/}],\ncontains:[s,i,{className:\"variable\",begin:/\\$[A-z]/,end:/[^A-z]/}]},t={\nclassName:\"string\",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]\n},r=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,\nend:/#>/}],contains:[{className:\"doctag\",variants:[{\nbegin:/\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/\n},{\nbegin:/\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/\n}]}]}),c={className:\"class\",beginKeywords:\"class enum\",end:/\\s*[{]/,\nexcludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:\"function\",\nbegin:/function\\s+/,end:/\\s*\\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,\ncontains:[{begin:\"function\",relevance:0,className:\"keyword\"},{className:\"title\",\nbegin:/\\w[\\w\\d]*((-)[\\w\\d]+)*/,relevance:0},{begin:/\\(/,end:/\\)/,\nclassName:\"params\",relevance:0,contains:[i]}]},o={begin:/using\\s/,end:/$/,\nreturnBegin:!0,contains:[a,t,{className:\"keyword\",\nbegin:/(using|assembly|command|module|namespace|type)/}]},p={\nclassName:\"function\",begin:/\\[.*\\]\\s*[\\w]+[ ]??\\(/,end:/$/,returnBegin:!0,\nrelevance:0,contains:[{className:\"keyword\",\nbegin:\"(\".concat(n.keyword.toString().replace(/\\s/g,\"|\"),\")\\\\b\"),endsParent:!0,\nrelevance:0},e.inherit(e.TITLE_MODE,{endsParent:!0})]\n},g=[p,r,s,e.NUMBER_MODE,a,t,{className:\"built_in\",variants:[{\nbegin:\"(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\\\w\\\\d]+\"\n}]},i,{className:\"literal\",begin:/\\$(null|true|false)\\b/},{\nclassName:\"selector-tag\",begin:/@\\B/,relevance:0}],m={begin:/\\[/,end:/\\]/,\nexcludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat(\"self\",g,{\nbegin:\"(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)\",\nclassName:\"built_in\",relevance:0},{className:\"type\",begin:/[\\.\\w\\d]+/,\nrelevance:0})};return p.contains.unshift(m),{name:\"PowerShell\",\naliases:[\"ps\",\"ps1\"],case_insensitive:!0,keywords:n,contains:g.concat(c,l,o,{\nvariants:[{className:\"operator\",\nbegin:\"(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\\\b\"\n},{className:\"literal\",begin:/(-)[\\w\\d]+/,relevance:0}]},m)}}})());hljs.registerLanguage(\"sql\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function r(...r){\nreturn r.map((r=>e(r))).join(\"\")}function t(...r){\nreturn\"(\"+r.map((r=>e(r))).join(\"|\")+\")\"}return e=>{\nconst n=e.COMMENT(\"--\",\"$\"),a=[\"true\",\"false\",\"unknown\"],i=[\"bigint\",\"binary\",\"blob\",\"boolean\",\"char\",\"character\",\"clob\",\"date\",\"dec\",\"decfloat\",\"decimal\",\"float\",\"int\",\"integer\",\"interval\",\"nchar\",\"nclob\",\"national\",\"numeric\",\"real\",\"row\",\"smallint\",\"time\",\"timestamp\",\"varchar\",\"varying\",\"varbinary\"],s=[\"abs\",\"acos\",\"array_agg\",\"asin\",\"atan\",\"avg\",\"cast\",\"ceil\",\"ceiling\",\"coalesce\",\"corr\",\"cos\",\"cosh\",\"count\",\"covar_pop\",\"covar_samp\",\"cume_dist\",\"dense_rank\",\"deref\",\"element\",\"exp\",\"extract\",\"first_value\",\"floor\",\"json_array\",\"json_arrayagg\",\"json_exists\",\"json_object\",\"json_objectagg\",\"json_query\",\"json_table\",\"json_table_primitive\",\"json_value\",\"lag\",\"last_value\",\"lead\",\"listagg\",\"ln\",\"log\",\"log10\",\"lower\",\"max\",\"min\",\"mod\",\"nth_value\",\"ntile\",\"nullif\",\"percent_rank\",\"percentile_cont\",\"percentile_disc\",\"position\",\"position_regex\",\"power\",\"rank\",\"regr_avgx\",\"regr_avgy\",\"regr_count\",\"regr_intercept\",\"regr_r2\",\"regr_slope\",\"regr_sxx\",\"regr_sxy\",\"regr_syy\",\"row_number\",\"sin\",\"sinh\",\"sqrt\",\"stddev_pop\",\"stddev_samp\",\"substring\",\"substring_regex\",\"sum\",\"tan\",\"tanh\",\"translate\",\"translate_regex\",\"treat\",\"trim\",\"trim_array\",\"unnest\",\"upper\",\"value_of\",\"var_pop\",\"var_samp\",\"width_bucket\"],o=[\"create table\",\"insert into\",\"primary key\",\"foreign key\",\"not null\",\"alter table\",\"add constraint\",\"grouping sets\",\"on overflow\",\"character set\",\"respect nulls\",\"ignore nulls\",\"nulls first\",\"nulls last\",\"depth first\",\"breadth first\"],c=s,l=[\"abs\",\"acos\",\"all\",\"allocate\",\"alter\",\"and\",\"any\",\"are\",\"array\",\"array_agg\",\"array_max_cardinality\",\"as\",\"asensitive\",\"asin\",\"asymmetric\",\"at\",\"atan\",\"atomic\",\"authorization\",\"avg\",\"begin\",\"begin_frame\",\"begin_partition\",\"between\",\"bigint\",\"binary\",\"blob\",\"boolean\",\"both\",\"by\",\"call\",\"called\",\"cardinality\",\"cascaded\",\"case\",\"cast\",\"ceil\",\"ceiling\",\"char\",\"char_length\",\"character\",\"character_length\",\"check\",\"classifier\",\"clob\",\"close\",\"coalesce\",\"collate\",\"collect\",\"column\",\"commit\",\"condition\",\"connect\",\"constraint\",\"contains\",\"convert\",\"copy\",\"corr\",\"corresponding\",\"cos\",\"cosh\",\"count\",\"covar_pop\",\"covar_samp\",\"create\",\"cross\",\"cube\",\"cume_dist\",\"current\",\"current_catalog\",\"current_date\",\"current_default_transform_group\",\"current_path\",\"current_role\",\"current_row\",\"current_schema\",\"current_time\",\"current_timestamp\",\"current_path\",\"current_role\",\"current_transform_group_for_type\",\"current_user\",\"cursor\",\"cycle\",\"date\",\"day\",\"deallocate\",\"dec\",\"decimal\",\"decfloat\",\"declare\",\"default\",\"define\",\"delete\",\"dense_rank\",\"deref\",\"describe\",\"deterministic\",\"disconnect\",\"distinct\",\"double\",\"drop\",\"dynamic\",\"each\",\"element\",\"else\",\"empty\",\"end\",\"end_frame\",\"end_partition\",\"end-exec\",\"equals\",\"escape\",\"every\",\"except\",\"exec\",\"execute\",\"exists\",\"exp\",\"external\",\"extract\",\"false\",\"fetch\",\"filter\",\"first_value\",\"float\",\"floor\",\"for\",\"foreign\",\"frame_row\",\"free\",\"from\",\"full\",\"function\",\"fusion\",\"get\",\"global\",\"grant\",\"group\",\"grouping\",\"groups\",\"having\",\"hold\",\"hour\",\"identity\",\"in\",\"indicator\",\"initial\",\"inner\",\"inout\",\"insensitive\",\"insert\",\"int\",\"integer\",\"intersect\",\"intersection\",\"interval\",\"into\",\"is\",\"join\",\"json_array\",\"json_arrayagg\",\"json_exists\",\"json_object\",\"json_objectagg\",\"json_query\",\"json_table\",\"json_table_primitive\",\"json_value\",\"lag\",\"language\",\"large\",\"last_value\",\"lateral\",\"lead\",\"leading\",\"left\",\"like\",\"like_regex\",\"listagg\",\"ln\",\"local\",\"localtime\",\"localtimestamp\",\"log\",\"log10\",\"lower\",\"match\",\"match_number\",\"match_recognize\",\"matches\",\"max\",\"member\",\"merge\",\"method\",\"min\",\"minute\",\"mod\",\"modifies\",\"module\",\"month\",\"multiset\",\"national\",\"natural\",\"nchar\",\"nclob\",\"new\",\"no\",\"none\",\"normalize\",\"not\",\"nth_value\",\"ntile\",\"null\",\"nullif\",\"numeric\",\"octet_length\",\"occurrences_regex\",\"of\",\"offset\",\"old\",\"omit\",\"on\",\"one\",\"only\",\"open\",\"or\",\"order\",\"out\",\"outer\",\"over\",\"overlaps\",\"overlay\",\"parameter\",\"partition\",\"pattern\",\"per\",\"percent\",\"percent_rank\",\"percentile_cont\",\"percentile_disc\",\"period\",\"portion\",\"position\",\"position_regex\",\"power\",\"precedes\",\"precision\",\"prepare\",\"primary\",\"procedure\",\"ptf\",\"range\",\"rank\",\"reads\",\"real\",\"recursive\",\"ref\",\"references\",\"referencing\",\"regr_avgx\",\"regr_avgy\",\"regr_count\",\"regr_intercept\",\"regr_r2\",\"regr_slope\",\"regr_sxx\",\"regr_sxy\",\"regr_syy\",\"release\",\"result\",\"return\",\"returns\",\"revoke\",\"right\",\"rollback\",\"rollup\",\"row\",\"row_number\",\"rows\",\"running\",\"savepoint\",\"scope\",\"scroll\",\"search\",\"second\",\"seek\",\"select\",\"sensitive\",\"session_user\",\"set\",\"show\",\"similar\",\"sin\",\"sinh\",\"skip\",\"smallint\",\"some\",\"specific\",\"specifictype\",\"sql\",\"sqlexception\",\"sqlstate\",\"sqlwarning\",\"sqrt\",\"start\",\"static\",\"stddev_pop\",\"stddev_samp\",\"submultiset\",\"subset\",\"substring\",\"substring_regex\",\"succeeds\",\"sum\",\"symmetric\",\"system\",\"system_time\",\"system_user\",\"table\",\"tablesample\",\"tan\",\"tanh\",\"then\",\"time\",\"timestamp\",\"timezone_hour\",\"timezone_minute\",\"to\",\"trailing\",\"translate\",\"translate_regex\",\"translation\",\"treat\",\"trigger\",\"trim\",\"trim_array\",\"true\",\"truncate\",\"uescape\",\"union\",\"unique\",\"unknown\",\"unnest\",\"update   \",\"upper\",\"user\",\"using\",\"value\",\"values\",\"value_of\",\"var_pop\",\"var_samp\",\"varbinary\",\"varchar\",\"varying\",\"versioning\",\"when\",\"whenever\",\"where\",\"width_bucket\",\"window\",\"with\",\"within\",\"without\",\"year\",\"add\",\"asc\",\"collation\",\"desc\",\"final\",\"first\",\"last\",\"view\"].filter((e=>!s.includes(e))),u={\nbegin:r(/\\b/,t(...c),/\\s*\\(/),keywords:{built_in:c}};return{name:\"SQL\",\ncase_insensitive:!0,illegal:/[{}]|<\\//,keywords:{$pattern:/\\b[\\w\\.]+/,\nkeyword:((e,{exceptions:r,when:t}={})=>{const n=t\n;return r=r||[],e.map((e=>e.match(/\\|\\d+$/)||r.includes(e)?e:n(e)?e+\"|0\":e))\n})(l,{when:e=>e.length<3}),literal:a,type:i,\nbuilt_in:[\"current_catalog\",\"current_date\",\"current_default_transform_group\",\"current_path\",\"current_role\",\"current_schema\",\"current_transform_group_for_type\",\"current_user\",\"session_user\",\"system_time\",\"system_user\",\"current_time\",\"localtime\",\"current_timestamp\",\"localtimestamp\"]\n},contains:[{begin:t(...o),keywords:{$pattern:/[\\w\\.]+/,keyword:l.concat(o),\nliteral:a,type:i}},{className:\"type\",\nbegin:t(\"double precision\",\"large object\",\"with timezone\",\"without timezone\")\n},u,{className:\"variable\",begin:/@[a-z0-9]+/},{className:\"string\",variants:[{\nbegin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/\"/,end:/\"/,contains:[{\nbegin:/\"\"/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:\"operator\",\nbegin:/[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})());hljs.registerLanguage(\"javascript\",(()=>{\"use strict\"\n;const e=\"[A-Za-z$_][0-9A-Za-z$_]*\",n=[\"as\",\"in\",\"of\",\"if\",\"for\",\"while\",\"finally\",\"var\",\"new\",\"function\",\"do\",\"return\",\"void\",\"else\",\"break\",\"catch\",\"instanceof\",\"with\",\"throw\",\"case\",\"default\",\"try\",\"switch\",\"continue\",\"typeof\",\"delete\",\"let\",\"yield\",\"const\",\"class\",\"debugger\",\"async\",\"await\",\"static\",\"import\",\"from\",\"export\",\"extends\"],a=[\"true\",\"false\",\"null\",\"undefined\",\"NaN\",\"Infinity\"],s=[].concat([\"setInterval\",\"setTimeout\",\"clearInterval\",\"clearTimeout\",\"require\",\"exports\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"unescape\"],[\"arguments\",\"this\",\"super\",\"console\",\"window\",\"document\",\"localStorage\",\"module\",\"global\"],[\"Intl\",\"DataView\",\"Number\",\"Math\",\"Date\",\"String\",\"RegExp\",\"Object\",\"Function\",\"Boolean\",\"Error\",\"Symbol\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\",\"Proxy\",\"Reflect\",\"JSON\",\"Promise\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Float32Array\",\"Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"ArrayBuffer\",\"BigInt64Array\",\"BigUint64Array\",\"BigInt\"],[\"EvalError\",\"InternalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\"])\n;function r(e){return t(\"(?=\",e,\")\")}function t(...e){return e.map((e=>{\nreturn(n=e)?\"string\"==typeof n?n:n.source:null;var n})).join(\"\")}return i=>{\nconst c=e,o={begin:/<[A-Za-z0-9\\\\._:-]+/,end:/\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\nisTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a]\n;\"<\"!==s?\">\"===s&&(((e,{after:n})=>{const a=\"</\"+e[0].slice(1)\n;return-1!==e.input.indexOf(a,n)})(e,{after:a\n})||n.ignoreMatch()):n.ignoreMatch()}},l={$pattern:e,keyword:n,literal:a,\nbuilt_in:s},g=\"\\\\.([0-9](_?[0-9])*)\",b=\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\",d={\nclassName:\"number\",variants:[{\nbegin:`(\\\\b(${b})((${g})|\\\\.)?|(${g}))[eE][+-]?([0-9](_?[0-9])*)\\\\b`},{\nbegin:`\\\\b(${b})\\\\b((${g})\\\\b|\\\\.)?|(${g})\\\\b`},{\nbegin:\"\\\\b(0|[1-9](_?[0-9])*)n\\\\b\"},{\nbegin:\"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"},{\nbegin:\"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"},{begin:\"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"},{\nbegin:\"\\\\b0[0-7]+n?\\\\b\"}],relevance:0},E={className:\"subst\",begin:\"\\\\$\\\\{\",\nend:\"\\\\}\",keywords:l,contains:[]},u={begin:\"html`\",end:\"\",starts:{end:\"`\",\nreturnEnd:!1,contains:[i.BACKSLASH_ESCAPE,E],subLanguage:\"xml\"}},_={\nbegin:\"css`\",end:\"\",starts:{end:\"`\",returnEnd:!1,\ncontains:[i.BACKSLASH_ESCAPE,E],subLanguage:\"css\"}},m={className:\"string\",\nbegin:\"`\",end:\"`\",contains:[i.BACKSLASH_ESCAPE,E]},y={className:\"comment\",\nvariants:[i.COMMENT(/\\/\\*\\*(?!\\/)/,\"\\\\*/\",{relevance:0,contains:[{\nclassName:\"doctag\",begin:\"@[A-Za-z]+\",contains:[{className:\"type\",begin:\"\\\\{\",\nend:\"\\\\}\",relevance:0},{className:\"variable\",begin:c+\"(?=\\\\s*(-)|$)\",\nendsParent:!0,relevance:0},{begin:/(?=[^\\n])\\s/,relevance:0}]}]\n}),i.C_BLOCK_COMMENT_MODE,i.C_LINE_COMMENT_MODE]\n},N=[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,u,_,m,d,i.REGEXP_MODE]\n;E.contains=N.concat({begin:/\\{/,end:/\\}/,keywords:l,contains:[\"self\"].concat(N)\n});const A=[].concat(y,E.contains),f=A.concat([{begin:/\\(/,end:/\\)/,keywords:l,\ncontains:[\"self\"].concat(A)}]),p={className:\"params\",begin:/\\(/,end:/\\)/,\nexcludeBegin:!0,excludeEnd:!0,keywords:l,contains:f};return{name:\"Javascript\",\naliases:[\"js\",\"jsx\",\"mjs\",\"cjs\"],keywords:l,exports:{PARAMS_CONTAINS:f},\nillegal:/#(?![$_A-z])/,contains:[i.SHEBANG({label:\"shebang\",binary:\"node\",\nrelevance:5}),{label:\"use_strict\",className:\"meta\",relevance:10,\nbegin:/^\\s*['\"]use (strict|asm)['\"]/\n},i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,u,_,m,y,d,{\nbegin:t(/[{,\\n]\\s*/,r(t(/(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,c+\"\\\\s*:\"))),\nrelevance:0,contains:[{className:\"attr\",begin:c+r(\"\\\\s*:\"),relevance:0}]},{\nbegin:\"(\"+i.RE_STARTERS_RE+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",\nkeywords:\"return throw case\",contains:[y,i.REGEXP_MODE,{className:\"function\",\nbegin:\"(\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)|\"+i.UNDERSCORE_IDENT_RE+\")\\\\s*=>\",\nreturnBegin:!0,end:\"\\\\s*=>\",contains:[{className:\"params\",variants:[{\nbegin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\(\\s*\\)/,skip:!0\n},{begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:f}]}]\n},{begin:/,/,relevance:0},{className:\"\",begin:/\\s/,end:/\\s*/,skip:!0},{\nvariants:[{begin:\"<>\",end:\"</>\"},{begin:o.begin,\"on:begin\":o.isTrulyOpeningTag,\nend:o.end}],subLanguage:\"xml\",contains:[{begin:o.begin,end:o.end,skip:!0,\ncontains:[\"self\"]}]}],relevance:0},{className:\"function\",\nbeginKeywords:\"function\",end:/[{;]/,excludeEnd:!0,keywords:l,\ncontains:[\"self\",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{\nbeginKeywords:\"while if switch catch for\"},{className:\"function\",\nbegin:i.UNDERSCORE_IDENT_RE+\"\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)\\\\s*\\\\{\",\nreturnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{\nbegin:\"\\\\.\"+c},{begin:\"\\\\$\"+c}],relevance:0},{className:\"class\",\nbeginKeywords:\"class\",end:/[{;=]/,excludeEnd:!0,illegal:/[:\"[\\]]/,contains:[{\nbeginKeywords:\"extends\"},i.UNDERSCORE_TITLE_MODE]},{begin:/\\b(?=constructor)/,\nend:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),\"self\",p]\n},{begin:\"(get|set)\\\\s+(?=\"+c+\"\\\\()\",end:/\\{/,keywords:\"get set\",\ncontains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\\(\\)/},p]},{begin:/\\$[(.]/}]\n}}})());hljs.registerLanguage(\"java\",(()=>{\"use strict\"\n;var e=\"\\\\.([0-9](_*[0-9])*)\",n=\"[0-9a-fA-F](_*[0-9a-fA-F])*\",a={\nclassName:\"number\",variants:[{\nbegin:`(\\\\b([0-9](_*[0-9])*)((${e})|\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\b`\n},{begin:`\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)`},{\nbegin:`(${e})[fFdD]?\\\\b`},{begin:\"\\\\b([0-9](_*[0-9])*)[fFdD]\\\\b\"},{\nbegin:`\\\\b0[xX]((${n})\\\\.?|(${n})?\\\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\b`\n},{begin:\"\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b\"},{begin:`\\\\b0[xX](${n})[lL]?\\\\b`},{\nbegin:\"\\\\b0(_*[0-7])*[lL]?\\\\b\"},{begin:\"\\\\b0[bB][01](_*[01])*[lL]?\\\\b\"}],\nrelevance:0};return e=>{\nvar n=\"false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do\",s={\nclassName:\"meta\",begin:\"@[\\xc0-\\u02b8a-zA-Z_$][\\xc0-\\u02b8a-zA-Z_$0-9]*\",\ncontains:[{begin:/\\(/,end:/\\)/,contains:[\"self\"]}]};const r=a;return{\nname:\"Java\",aliases:[\"jsp\"],keywords:n,illegal:/<\\/|#/,\ncontains:[e.COMMENT(\"/\\\\*\\\\*\",\"\\\\*/\",{relevance:0,contains:[{begin:/\\w+@/,\nrelevance:0},{className:\"doctag\",begin:\"@[A-Za-z]+\"}]}),{\nbegin:/import java\\.[a-z]+\\./,keywords:\"import\",relevance:2\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{\nclassName:\"class\",beginKeywords:\"class interface enum\",end:/[{;=]/,\nexcludeEnd:!0,relevance:1,keywords:\"class interface enum\",illegal:/[:\"\\[\\]]/,\ncontains:[{beginKeywords:\"extends implements\"},e.UNDERSCORE_TITLE_MODE]},{\nbeginKeywords:\"new throw return else\",relevance:0},{className:\"class\",\nbegin:\"record\\\\s+\"+e.UNDERSCORE_IDENT_RE+\"\\\\s*\\\\(\",returnBegin:!0,excludeEnd:!0,\nend:/[{;=]/,keywords:n,contains:[{beginKeywords:\"record\"},{\nbegin:e.UNDERSCORE_IDENT_RE+\"\\\\s*\\\\(\",returnBegin:!0,relevance:0,\ncontains:[e.UNDERSCORE_TITLE_MODE]},{className:\"params\",begin:/\\(/,end:/\\)/,\nkeywords:n,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE]\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:\"function\",\nbegin:\"([\\xc0-\\u02b8a-zA-Z_$][\\xc0-\\u02b8a-zA-Z_$0-9]*(<[\\xc0-\\u02b8a-zA-Z_$][\\xc0-\\u02b8a-zA-Z_$0-9]*(\\\\s*,\\\\s*[\\xc0-\\u02b8a-zA-Z_$][\\xc0-\\u02b8a-zA-Z_$0-9]*)*>)?\\\\s+)+\"+e.UNDERSCORE_IDENT_RE+\"\\\\s*\\\\(\",\nreturnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{\nbegin:e.UNDERSCORE_IDENT_RE+\"\\\\s*\\\\(\",returnBegin:!0,relevance:0,\ncontains:[e.UNDERSCORE_TITLE_MODE]},{className:\"params\",begin:/\\(/,end:/\\)/,\nkeywords:n,relevance:0,\ncontains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_BLOCK_COMMENT_MODE]\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,s]}}})());hljs.registerLanguage(\"php-template\",(()=>{\"use strict\";return n=>({\nname:\"PHP template\",subLanguage:\"xml\",contains:[{begin:/<\\?(php|=)?/,end:/\\?>/,\nsubLanguage:\"php\",contains:[{begin:\"/\\\\*\",end:\"\\\\*/\",skip:!0},{begin:'b\"',\nend:'\"',skip:!0},{begin:\"b'\",end:\"'\",skip:!0},n.inherit(n.APOS_STRING_MODE,{\nillegal:null,className:null,contains:null,skip:!0\n}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,\nskip:!0})]}]})})());hljs.registerLanguage(\"python-repl\",(()=>{\"use strict\";return s=>({\naliases:[\"pycon\"],contains:[{className:\"meta\",starts:{end:/ |$/,starts:{end:\"$\",\nsubLanguage:\"python\"}},variants:[{begin:/^>>>(?=[ ]|$)/},{\nbegin:/^\\.\\.\\.(?=[ ]|$)/}]}]})})());hljs.registerLanguage(\"swift\",(()=>{\"use strict\";function e(e){\nreturn e?\"string\"==typeof e?e:e.source:null}function n(e){return a(\"(?=\",e,\")\")}\nfunction a(...n){return n.map((n=>e(n))).join(\"\")}function t(...n){\nreturn\"(\"+n.map((n=>e(n))).join(\"|\")+\")\"}\nconst i=e=>a(/\\b/,e,/\\w$/.test(e)?/\\b/:/\\B/),s=[\"Protocol\",\"Type\"].map(i),u=[\"init\",\"self\"].map(i),c=[\"Any\",\"Self\"],r=[\"associatedtype\",\"async\",\"await\",/as\\?/,/as!/,\"as\",\"break\",\"case\",\"catch\",\"class\",\"continue\",\"convenience\",\"default\",\"defer\",\"deinit\",\"didSet\",\"do\",\"dynamic\",\"else\",\"enum\",\"extension\",\"fallthrough\",/fileprivate\\(set\\)/,\"fileprivate\",\"final\",\"for\",\"func\",\"get\",\"guard\",\"if\",\"import\",\"indirect\",\"infix\",/init\\?/,/init!/,\"inout\",/internal\\(set\\)/,\"internal\",\"in\",\"is\",\"lazy\",\"let\",\"mutating\",\"nonmutating\",/open\\(set\\)/,\"open\",\"operator\",\"optional\",\"override\",\"postfix\",\"precedencegroup\",\"prefix\",/private\\(set\\)/,\"private\",\"protocol\",/public\\(set\\)/,\"public\",\"repeat\",\"required\",\"rethrows\",\"return\",\"set\",\"some\",\"static\",\"struct\",\"subscript\",\"super\",\"switch\",\"throws\",\"throw\",/try\\?/,/try!/,\"try\",\"typealias\",/unowned\\(safe\\)/,/unowned\\(unsafe\\)/,\"unowned\",\"var\",\"weak\",\"where\",\"while\",\"willSet\"],o=[\"false\",\"nil\",\"true\"],l=[\"assignment\",\"associativity\",\"higherThan\",\"left\",\"lowerThan\",\"none\",\"right\"],m=[\"#colorLiteral\",\"#column\",\"#dsohandle\",\"#else\",\"#elseif\",\"#endif\",\"#error\",\"#file\",\"#fileID\",\"#fileLiteral\",\"#filePath\",\"#function\",\"#if\",\"#imageLiteral\",\"#keyPath\",\"#line\",\"#selector\",\"#sourceLocation\",\"#warn_unqualified_access\",\"#warning\"],d=[\"abs\",\"all\",\"any\",\"assert\",\"assertionFailure\",\"debugPrint\",\"dump\",\"fatalError\",\"getVaList\",\"isKnownUniquelyReferenced\",\"max\",\"min\",\"numericCast\",\"pointwiseMax\",\"pointwiseMin\",\"precondition\",\"preconditionFailure\",\"print\",\"readLine\",\"repeatElement\",\"sequence\",\"stride\",\"swap\",\"swift_unboxFromSwiftValueWithType\",\"transcode\",\"type\",\"unsafeBitCast\",\"unsafeDowncast\",\"withExtendedLifetime\",\"withUnsafeMutablePointer\",\"withUnsafePointer\",\"withVaList\",\"withoutActuallyEscaping\",\"zip\"],p=t(/[/=\\-+!*%<>&|^~?]/,/[\\u00A1-\\u00A7]/,/[\\u00A9\\u00AB]/,/[\\u00AC\\u00AE]/,/[\\u00B0\\u00B1]/,/[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/,/[\\u2016-\\u2017]/,/[\\u2020-\\u2027]/,/[\\u2030-\\u203E]/,/[\\u2041-\\u2053]/,/[\\u2055-\\u205E]/,/[\\u2190-\\u23FF]/,/[\\u2500-\\u2775]/,/[\\u2794-\\u2BFF]/,/[\\u2E00-\\u2E7F]/,/[\\u3001-\\u3003]/,/[\\u3008-\\u3020]/,/[\\u3030]/),F=t(p,/[\\u0300-\\u036F]/,/[\\u1DC0-\\u1DFF]/,/[\\u20D0-\\u20FF]/,/[\\uFE00-\\uFE0F]/,/[\\uFE20-\\uFE2F]/),b=a(p,F,\"*\"),h=t(/[a-zA-Z_]/,/[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/,/[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/,/[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/,/[\\u1E00-\\u1FFF]/,/[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/,/[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/,/[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/,/[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/,/[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/,/[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/),f=t(h,/\\d/,/[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/),w=a(h,f,\"*\"),y=a(/[A-Z]/,f,\"*\"),g=[\"autoclosure\",a(/convention\\(/,t(\"swift\",\"block\",\"c\"),/\\)/),\"discardableResult\",\"dynamicCallable\",\"dynamicMemberLookup\",\"escaping\",\"frozen\",\"GKInspectable\",\"IBAction\",\"IBDesignable\",\"IBInspectable\",\"IBOutlet\",\"IBSegueAction\",\"inlinable\",\"main\",\"nonobjc\",\"NSApplicationMain\",\"NSCopying\",\"NSManaged\",a(/objc\\(/,w,/\\)/),\"objc\",\"objcMembers\",\"propertyWrapper\",\"requires_stored_property_inits\",\"testable\",\"UIApplicationMain\",\"unknown\",\"usableFromInline\"],E=[\"iOS\",\"iOSApplicationExtension\",\"macOS\",\"macOSApplicationExtension\",\"macCatalyst\",\"macCatalystApplicationExtension\",\"watchOS\",\"watchOSApplicationExtension\",\"tvOS\",\"tvOSApplicationExtension\",\"swift\"]\n;return e=>{const p={match:/\\s+/,relevance:0},h=e.COMMENT(\"/\\\\*\",\"\\\\*/\",{\ncontains:[\"self\"]}),v=[e.C_LINE_COMMENT_MODE,h],N={className:\"keyword\",\nbegin:a(/\\./,n(t(...s,...u))),end:t(...s,...u),excludeBegin:!0},A={\nmatch:a(/\\./,t(...r)),relevance:0\n},C=r.filter((e=>\"string\"==typeof e)).concat([\"_|0\"]),_={variants:[{\nclassName:\"keyword\",\nmatch:t(...r.filter((e=>\"string\"!=typeof e)).concat(c).map(i),...u)}]},D={\n$pattern:t(/\\b\\w+/,/#\\w+/),keyword:C.concat(m),literal:o},B=[N,A,_],k=[{\nmatch:a(/\\./,t(...d)),relevance:0},{className:\"built_in\",\nmatch:a(/\\b/,t(...d),/(?=\\()/)}],M={match:/->/,relevance:0},S=[M,{\nclassName:\"operator\",relevance:0,variants:[{match:b},{match:`\\\\.(\\\\.|${F})+`}]\n}],x=\"([0-9a-fA-F]_*)+\",I={className:\"number\",relevance:0,variants:[{\nmatch:\"\\\\b(([0-9]_*)+)(\\\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\\\b\"},{\nmatch:`\\\\b0x(${x})(\\\\.(${x}))?([pP][+-]?(([0-9]_*)+))?\\\\b`},{\nmatch:/\\b0o([0-7]_*)+\\b/},{match:/\\b0b([01]_*)+\\b/}]},O=(e=\"\")=>({\nclassName:\"subst\",variants:[{match:a(/\\\\/,e,/[0\\\\tnr\"']/)},{\nmatch:a(/\\\\/,e,/u\\{[0-9a-fA-F]{1,8}\\}/)}]}),T=(e=\"\")=>({className:\"subst\",\nmatch:a(/\\\\/,e,/[\\t ]*(?:[\\r\\n]|\\r\\n)/)}),L=(e=\"\")=>({className:\"subst\",\nlabel:\"interpol\",begin:a(/\\\\/,e,/\\(/),end:/\\)/}),P=(e=\"\")=>({begin:a(e,/\"\"\"/),\nend:a(/\"\"\"/,e),contains:[O(e),T(e),L(e)]}),$=(e=\"\")=>({begin:a(e,/\"/),\nend:a(/\"/,e),contains:[O(e),L(e)]}),K={className:\"string\",\nvariants:[P(),P(\"#\"),P(\"##\"),P(\"###\"),$(),$(\"#\"),$(\"##\"),$(\"###\")]},j={\nmatch:a(/`/,w,/`/)},z=[j,{className:\"variable\",match:/\\$\\d+/},{\nclassName:\"variable\",match:`\\\\$${f}+`}],q=[{match:/(@|#)available/,\nclassName:\"keyword\",starts:{contains:[{begin:/\\(/,end:/\\)/,keywords:E,\ncontains:[...S,I,K]}]}},{className:\"keyword\",match:a(/@/,t(...g))},{\nclassName:\"meta\",match:a(/@/,w)}],U={match:n(/\\b[A-Z]/),relevance:0,contains:[{\nclassName:\"type\",\nmatch:a(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,\"+\")\n},{className:\"type\",match:y,relevance:0},{match:/[?!]+/,relevance:0},{\nmatch:/\\.\\.\\./,relevance:0},{match:a(/\\s+&\\s+/,n(y)),relevance:0}]},Z={\nbegin:/</,end:/>/,keywords:D,contains:[...v,...B,...q,M,U]};U.contains.push(Z)\n;const G={begin:/\\(/,end:/\\)/,relevance:0,keywords:D,contains:[\"self\",{\nmatch:a(w,/\\s*:/),keywords:\"_|0\",relevance:0\n},...v,...B,...k,...S,I,K,...z,...q,U]},H={beginKeywords:\"func\",contains:[{\nclassName:\"title\",match:t(j.match,w,b),endsParent:!0,relevance:0},p]},R={\nbegin:/</,end:/>/,contains:[...v,U]},V={begin:/\\(/,end:/\\)/,keywords:D,\ncontains:[{begin:t(n(a(w,/\\s*:/)),n(a(w,/\\s+/,w,/\\s*:/))),end:/:/,relevance:0,\ncontains:[{className:\"keyword\",match:/\\b_\\b/},{className:\"params\",match:w}]\n},...v,...B,...S,I,K,...q,U,G],endsParent:!0,illegal:/[\"']/},W={\nclassName:\"function\",match:n(/\\bfunc\\b/),contains:[H,R,V,p],illegal:[/\\[/,/%/]\n},X={className:\"function\",match:/\\b(subscript|init[?!]?)\\s*(?=[<(])/,keywords:{\nkeyword:\"subscript init init? init!\",$pattern:/\\w+[?!]?/},contains:[R,V,p],\nillegal:/\\[|%/},J={beginKeywords:\"operator\",end:e.MATCH_NOTHING_RE,contains:[{\nclassName:\"title\",match:b,endsParent:!0,relevance:0}]},Q={\nbeginKeywords:\"precedencegroup\",end:e.MATCH_NOTHING_RE,contains:[{\nclassName:\"title\",match:y,relevance:0},{begin:/{/,end:/}/,relevance:0,\nendsParent:!0,keywords:[...l,...o],contains:[U]}]};for(const e of K.variants){\nconst n=e.contains.find((e=>\"interpol\"===e.label));n.keywords=D\n;const a=[...B,...k,...S,I,K,...z];n.contains=[...a,{begin:/\\(/,end:/\\)/,\ncontains:[\"self\",...a]}]}return{name:\"Swift\",keywords:D,contains:[...v,W,X,{\nclassName:\"class\",beginKeywords:\"struct protocol class extension enum\",\nend:\"\\\\{\",excludeEnd:!0,keywords:D,contains:[e.inherit(e.TITLE_MODE,{\nbegin:/[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/}),...B]},J,Q,{\nbeginKeywords:\"import\",end:/$/,contains:[...v],relevance:0\n},...B,...k,...S,I,K,...z,...q,U,G]}}})());hljs.registerLanguage(\"clojure\",(()=>{\"use strict\";return e=>{\nconst t=\"a-zA-Z_\\\\-!.?+*=<>&#'\",n=\"[\"+t+\"][\"+t+\"0-9/;:]*\",r=\"def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord\",a={\n$pattern:n,\n\"builtin-name\":r+\" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize\"\n},s={begin:n,relevance:0},o={className:\"number\",begin:\"[-+]?\\\\d+(\\\\.\\\\d+)?\",\nrelevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null\n}),c=e.COMMENT(\";\",\"$\",{relevance:0}),d={className:\"literal\",\nbegin:/\\b(true|false|nil)\\b/},l={begin:\"[\\\\[\\\\{]\",end:\"[\\\\]\\\\}]\"},m={\nclassName:\"comment\",begin:\"\\\\^\"+n},p=e.COMMENT(\"\\\\^\\\\{\",\"\\\\}\"),u={\nclassName:\"symbol\",begin:\"[:]{1,2}\"+n},f={begin:\"\\\\(\",end:\"\\\\)\"},h={\nendsWithParent:!0,relevance:0},y={keywords:a,className:\"name\",begin:n,\nrelevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,lexemes:n,\nend:'(\\\\[|#|\\\\d|\"|:|\\\\{|\\\\)|\\\\(|$)',contains:[{className:\"title\",begin:n,\nrelevance:0,excludeEnd:!0,endsParent:!0}].concat(g)}\n;return f.contains=[e.COMMENT(\"comment\",\"\"),b,y,h],\nh.contains=g,l.contains=g,p.contains=[l],{name:\"Clojure\",aliases:[\"clj\"],\nillegal:/\\S/,contains:[f,i,m,p,c,u,l,o,d]}}})());hljs.registerLanguage(\"haskell\",(()=>{\"use strict\";return e=>{const n={\nvariants:[e.COMMENT(\"--\",\"$\"),e.COMMENT(/\\{-/,/-\\}/,{contains:[\"self\"]})]},i={\nclassName:\"meta\",begin:/\\{-#/,end:/#-\\}/},a={className:\"meta\",begin:\"^#\",end:\"$\"\n},s={className:\"type\",begin:\"\\\\b[A-Z][\\\\w']*\",relevance:0},l={begin:\"\\\\(\",\nend:\"\\\\)\",illegal:'\"',contains:[i,a,{className:\"type\",\nbegin:\"\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?\"},e.inherit(e.TITLE_MODE,{\nbegin:\"[_a-z][\\\\w']*\"}),n]};return{name:\"Haskell\",aliases:[\"hs\"],\nkeywords:\"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec\",\ncontains:[{beginKeywords:\"module\",end:\"where\",keywords:\"module where\",\ncontains:[l,n],illegal:\"\\\\W\\\\.|;\"},{begin:\"\\\\bimport\\\\b\",end:\"$\",\nkeywords:\"import qualified as hiding\",contains:[l,n],illegal:\"\\\\W\\\\.|;\"},{\nclassName:\"class\",begin:\"^(\\\\s*)?(class|instance)\\\\b\",end:\"where\",\nkeywords:\"class family instance where\",contains:[s,l,n]},{className:\"class\",\nbegin:\"\\\\b(data|(new)?type)\\\\b\",end:\"$\",\nkeywords:\"data family type newtype deriving\",contains:[i,s,l,{begin:/\\{/,\nend:/\\}/,contains:l.contains},n]},{beginKeywords:\"default\",end:\"$\",\ncontains:[s,l,n]},{beginKeywords:\"infix infixl infixr\",end:\"$\",\ncontains:[e.C_NUMBER_MODE,n]},{begin:\"\\\\bforeign\\\\b\",end:\"$\",\nkeywords:\"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe\",\ncontains:[s,e.QUOTE_STRING_MODE,n]},{className:\"meta\",\nbegin:\"#!\\\\/usr\\\\/bin\\\\/env runhaskell\",end:\"$\"\n},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{\nbegin:\"^[_a-z][\\\\w']*\"}),n,{begin:\"->|<-\"}]}}})());hljs.registerLanguage(\"cmake\",(()=>{\"use strict\";return e=>({name:\"CMake\",\naliases:[\"cmake.in\"],case_insensitive:!0,keywords:{\nkeyword:\"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined\"\n},contains:[{className:\"variable\",begin:/\\$\\{/,end:/\\}/\n},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})());hljs.registerLanguage(\"objectivec\",(()=>{\"use strict\";return e=>{\nconst n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,\nkeyword:\"@interface @class @protocol @implementation\"};return{\nname:\"Objective-C\",aliases:[\"mm\",\"objc\",\"obj-c\",\"obj-c++\",\"objective-c++\"],\nkeywords:{$pattern:n,\nkeyword:\"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN\",\nliteral:\"false true FALSE TRUE nil YES NO NULL\",\nbuilt_in:\"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once\"\n},illegal:\"</\",contains:[{className:\"built_in\",\nbegin:\"\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+\"\n},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{\nclassName:\"string\",variants:[{begin:'@\"',end:'\"',illegal:\"\\\\n\",\ncontains:[e.BACKSLASH_ESCAPE]}]},{className:\"meta\",begin:/#\\s*[a-z]+\\b/,end:/$/,\nkeywords:{\n\"meta-keyword\":\"if else elif endif define undef warning error line pragma ifdef ifndef include\"\n},contains:[{begin:/\\\\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{\nclassName:\"meta-string\"}),{className:\"meta-string\",begin:/<.*?>/,end:/$/,\nillegal:\"\\\\n\"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{\nclassName:\"class\",begin:\"(\"+_.keyword.split(\" \").join(\"|\")+\")\\\\b\",end:/(\\{|$)/,\nexcludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{\nbegin:\"\\\\.\"+e.UNDERSCORE_IDENT_RE,relevance:0}]}}})());hljs.registerLanguage(\"coffeescript\",(()=>{\"use strict\"\n;const e=[\"as\",\"in\",\"of\",\"if\",\"for\",\"while\",\"finally\",\"var\",\"new\",\"function\",\"do\",\"return\",\"void\",\"else\",\"break\",\"catch\",\"instanceof\",\"with\",\"throw\",\"case\",\"default\",\"try\",\"switch\",\"continue\",\"typeof\",\"delete\",\"let\",\"yield\",\"const\",\"class\",\"debugger\",\"async\",\"await\",\"static\",\"import\",\"from\",\"export\",\"extends\"],n=[\"true\",\"false\",\"null\",\"undefined\",\"NaN\",\"Infinity\"],a=[].concat([\"setInterval\",\"setTimeout\",\"clearInterval\",\"clearTimeout\",\"require\",\"exports\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"unescape\"],[\"arguments\",\"this\",\"super\",\"console\",\"window\",\"document\",\"localStorage\",\"module\",\"global\"],[\"Intl\",\"DataView\",\"Number\",\"Math\",\"Date\",\"String\",\"RegExp\",\"Object\",\"Function\",\"Boolean\",\"Error\",\"Symbol\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\",\"Proxy\",\"Reflect\",\"JSON\",\"Promise\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Float32Array\",\"Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"ArrayBuffer\",\"BigInt64Array\",\"BigUint64Array\",\"BigInt\"],[\"EvalError\",\"InternalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\"])\n;return r=>{const t={\nkeyword:e.concat([\"then\",\"unless\",\"until\",\"loop\",\"by\",\"when\",\"and\",\"or\",\"is\",\"isnt\",\"not\"]).filter((i=[\"var\",\"const\",\"let\",\"function\",\"static\"],\ne=>!i.includes(e))),literal:n.concat([\"yes\",\"no\",\"on\",\"off\"]),\nbuilt_in:a.concat([\"npm\",\"print\"])};var i;const s=\"[A-Za-z$_][0-9A-Za-z$_]*\",o={\nclassName:\"subst\",begin:/#\\{/,end:/\\}/,keywords:t\n},c=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:\"(\\\\s*/)?\",\nrelevance:0}}),{className:\"string\",variants:[{begin:/'''/,end:/'''/,\ncontains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]\n},{begin:/\"\"\"/,end:/\"\"\"/,contains:[r.BACKSLASH_ESCAPE,o]},{begin:/\"/,end:/\"/,\ncontains:[r.BACKSLASH_ESCAPE,o]}]},{className:\"regexp\",variants:[{begin:\"///\",\nend:\"///\",contains:[o,r.HASH_COMMENT_MODE]},{begin:\"//[gim]{0,3}(?=\\\\W)\",\nrelevance:0},{begin:/\\/(?![ *]).*?(?![\\\\]).\\/[gim]{0,3}(?=\\W)/}]},{begin:\"@\"+s\n},{subLanguage:\"javascript\",excludeBegin:!0,excludeEnd:!0,variants:[{\nbegin:\"```\",end:\"```\"},{begin:\"`\",end:\"`\"}]}];o.contains=c\n;const l=r.inherit(r.TITLE_MODE,{begin:s}),d=\"(\\\\(.*\\\\)\\\\s*)?\\\\B[-=]>\",g={\nclassName:\"params\",begin:\"\\\\([^\\\\(]\",returnBegin:!0,contains:[{begin:/\\(/,\nend:/\\)/,keywords:t,contains:[\"self\"].concat(c)}]};return{name:\"CoffeeScript\",\naliases:[\"coffee\",\"cson\",\"iced\"],keywords:t,illegal:/\\/\\*/,\ncontains:c.concat([r.COMMENT(\"###\",\"###\"),r.HASH_COMMENT_MODE,{\nclassName:\"function\",begin:\"^\\\\s*\"+s+\"\\\\s*=\\\\s*\"+d,end:\"[-=]>\",returnBegin:!0,\ncontains:[l,g]},{begin:/[:\\(,=]\\s*/,relevance:0,contains:[{className:\"function\",\nbegin:d,end:\"[-=]>\",returnBegin:!0,contains:[g]}]},{className:\"class\",\nbeginKeywords:\"class\",end:\"$\",illegal:/[:=\"\\[\\]]/,contains:[{\nbeginKeywords:\"extends\",endsWithParent:!0,illegal:/[:=\"\\[\\]]/,contains:[l]},l]\n},{begin:s+\":\",end:\":\",returnBegin:!0,returnEnd:!0,relevance:0}])}}})());"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/abap.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #ff0000 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #0000ff }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #0000ff }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #0000ff }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #0000ff }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #0000ff }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #0000ff }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #0000ff }\n/* Name */ .highlight-chroma .highlight-n { color: #000000 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #000000 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #000000 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #000000 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #000000 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #000000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #000000 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #000000 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #000000 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #000000 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #000000 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #000000 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #000000 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #000000 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #000000 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #000000 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #000000 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #000000 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #000000 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #000000 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #000000 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #55aa22 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #55aa22 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #55aa22 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #55aa22 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #55aa22 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #55aa22 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #55aa22 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #55aa22 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #55aa22 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #55aa22 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #55aa22 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #55aa22 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #55aa22 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #55aa22 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #33aaff }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #33aaff }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #33aaff }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #33aaff }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #33aaff }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #33aaff }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #33aaff }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #0000ff }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #888888; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #888888; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #888888; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #888888; font-style: italic }\n/*\n\nGoogle Code style (c) Aahan Krish <geekpanth3r@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: white;\n    color: black;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #800;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-title,\n.hljs-name {\n    color: #008;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n    color: #660;\n}\n\n.hljs-string,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-regexp {\n    color: #080;\n}\n\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-meta,\n.hljs-number,\n.hljs-link {\n    color: #066;\n}\n\n.hljs-title,\n.hljs-doctag,\n.hljs-type,\n.hljs-attr,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n    color: #606;\n}\n\n.hljs-attribute,\n.hljs-subst {\n    color: #000;\n}\n\n.hljs-formula {\n    background-color: #eee;\n    font-style: italic;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #9B703F\n}\n\n.hljs-addition {\n    background-color: #baeeba;\n}\n\n.hljs-deletion {\n    background-color: #ffc8bd;\n}\n\n.hljs-doctag,\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/algol.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { font-weight: bold; text-decoration: underline }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { font-weight: bold; text-decoration: underline }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { font-weight: bold; font-style: italic; text-decoration: underline }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { font-weight: bold; text-decoration: underline }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { font-weight: bold; text-decoration: underline }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { font-weight: bold; text-decoration: underline }\n/* KeywordType */ .highlight-chroma .highlight-kt { font-weight: bold; text-decoration: underline }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { font-weight: bold; font-style: italic }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { font-weight: bold; font-style: italic }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #666666; font-weight: bold; font-style: italic }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #666666; font-weight: bold; font-style: italic }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #666666; font-weight: bold; font-style: italic }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #666666; font-weight: bold; font-style: italic }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #666666; font-weight: bold; font-style: italic }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #666666; font-style: italic }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #666666; font-style: italic }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #666666; font-style: italic }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #666666; font-style: italic }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #666666; font-style: italic }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #666666; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #666666; font-style: italic }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #666666; font-style: italic }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #666666; font-style: italic }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #666666; font-style: italic }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #666666; font-style: italic }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #666666; font-style: italic }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #666666; font-style: italic }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #666666; font-style: italic }\n/* OperatorWord */ .highlight-chroma .highlight-ow { font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #888888; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #888888; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #888888; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #888888; font-weight: bold }\n/*\nDocco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #000;\n    background: #f8f8ff;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #408080;\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-subst {\n    color: #954121;\n}\n\n.hljs-number {\n    color: #40a070;\n}\n\n.hljs-string,\n.hljs-doctag {\n    color: #219161;\n}\n\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-section,\n.hljs-type {\n    color: #19469d;\n}\n\n.hljs-params {\n    color: #00f;\n}\n\n.hljs-title {\n    color: #458;\n    font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n    color: #000080;\n    font-weight: normal;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n    color: #008080;\n}\n\n.hljs-regexp,\n.hljs-link {\n    color: #b68;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n    color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n    color: #0086b3;\n}\n\n.hljs-meta {\n    color: #999;\n    font-weight: bold;\n}\n\n.hljs-deletion {\n    background: #fdd;\n}\n\n.hljs-addition {\n    background: #dfd;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/algol_nu.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { font-weight: bold; font-style: italic }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { font-weight: bold }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { font-weight: bold; font-style: italic }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { font-weight: bold; font-style: italic }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #666666; font-weight: bold; font-style: italic }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #666666; font-weight: bold; font-style: italic }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #666666; font-weight: bold; font-style: italic }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #666666; font-weight: bold; font-style: italic }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #666666; font-weight: bold; font-style: italic }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #666666; font-style: italic }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #666666; font-style: italic }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #666666; font-style: italic }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #666666; font-style: italic }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #666666; font-style: italic }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #666666; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #666666; font-style: italic }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #666666; font-style: italic }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #666666; font-style: italic }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #666666; font-style: italic }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #666666; font-style: italic }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #666666; font-style: italic }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #666666; font-style: italic }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #666666; font-style: italic }\n/* OperatorWord */ .highlight-chroma .highlight-ow { font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #888888; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #888888; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #888888; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #888888; font-weight: bold }\n/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: white;\n    color: black;\n}\n\n.hljs-string,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-section,\n.hljs-addition,\n.hljs-attribute,\n.hljs-link {\n    color: #888;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-meta,\n.hljs-deletion {\n    color: #ccc;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-name,\n.hljs-type,\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/ant-design.css",
    "content": "/* Background */\n.highlight-chroma {\n    display: block;\n    padding: 16px 32px;\n    color: rgba(0, 0, 0, .85);\n    font-size: 14px;\n    font-family: lucida console, Consolas, Monaco, andale mono, ubuntu mono, monospace;\n    line-height: 2;\n    white-space: pre;\n    background: white;\n    border: 1px solid #e9e9e9;\n    border-radius: 2px;\n}\n\n.highlight-chroma::selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n.highlight-o {\n    color: #0b8235;\n}\n.highlight-p {\n    color: #999;\n}\n/* Error */\n.highlight-chroma .highlight-err {\n    color: #a61717;\n    background-color: #e3d2d2\n}\n\n/* LineTableTD */\n.highlight-chroma .highlight-lntd {\n    vertical-align: top;\n    padding: 0;\n    margin: 0;\n    border: 0;\n}\n\n/* LineTable */\n.highlight-chroma .highlight-lntable {\n    border-spacing: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n    width: auto;\n    overflow: auto;\n    display: block;\n}\n\n/* LineHighlight */\n.highlight-chroma .highlight-hl {\n    display: block;\n    width: 100%;\n    background-color: #363636\n}\n\n/* LineNumbersTable */\n.highlight-chroma .highlight-lnt {\n    margin-right: 0.4em;\n    padding: 0 0.4em 0 0.4em;\n    color: #686868\n}\n\n/* LineNumbers */\n.highlight-chroma .highlight-ln {\n    margin-right: 0.4em;\n    padding: 0 0.4em 0 0.4em;\n    color: #686868\n}\n\n/* Keyword */\n.highlight-chroma .highlight-k {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* KeywordConstant */\n.highlight-chroma .highlight-kc {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* KeywordDeclaration */\n.highlight-chroma .highlight-kd {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* KeywordNamespace */\n.highlight-chroma .highlight-kn {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* KeywordPseudo */\n.highlight-chroma .highlight-kp {\n    color: #6ab825\n}\n\n/* KeywordReserved */\n.highlight-chroma .highlight-kr {\n    color: #008dff;\n}\n\n/* KeywordType */\n.highlight-chroma .highlight-kt {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* NameAttribute */\n.highlight-chroma .highlight-na {\n    color: #bbbbbb\n}\n\n/* NameBuiltin */\n.highlight-chroma .highlight-nb {\n    color: #24909d\n}\n\n/* NameClass */\n.highlight-chroma .highlight-nc {\n    color: #447fcf;\n    text-decoration: underline\n}\n\n/* NameConstant */\n.highlight-chroma .highlight-no {\n    color: #40ffff\n}\n\n/* NameDecorator */\n.highlight-chroma .highlight-nd {\n    color: #ffa500\n}\n\n/* NameException */\n.highlight-chroma .highlight-ne {\n    color: #bbbbbb\n}\n\n/* NameFunction */\n.highlight-chroma .highlight-nf {\n    color: #447fcf\n}\n\n/* NameNamespace */\n.highlight-chroma .highlight-nn {\n    color: #447fcf;\n    text-decoration: underline\n}\n\n/* NameTag */\n.highlight-chroma .highlight-nt {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* NameVariable */\n.highlight-chroma .highlight-nv {\n    color: #40ffff\n}\n\n/* LiteralString */\n.highlight-chroma .highlight-s {\n    color: #ed9d13\n}\n\n/* LiteralStringAffix */\n.highlight-chroma .highlight-sa {\n    color: #ed9d13\n}\n\n/* LiteralStringBacktick */\n.highlight-chroma .highlight-sb {\n    color: #ed9d13\n}\n\n/* LiteralStringChar */\n.highlight-chroma .highlight-sc {\n    color: #ed9d13\n}\n\n/* LiteralStringDelimiter */\n.highlight-chroma .highlight-dl {\n    color: #ed9d13\n}\n\n/* LiteralStringDoc */\n.highlight-chroma .highlight-sd {\n    color: #ed9d13\n}\n\n/* LiteralStringDouble */\n.highlight-chroma .highlight-s2 {\n    color: #ed9d13\n}\n\n/* LiteralStringEscape */\n.highlight-chroma .highlight-se {\n    color: #ed9d13\n}\n\n/* LiteralStringHeredoc */\n.highlight-chroma .highlight-sh {\n    color: #ed9d13\n}\n\n/* LiteralStringInterpol */\n.highlight-chroma .highlight-si {\n    color: #ed9d13\n}\n\n/* LiteralStringOther */\n.highlight-chroma .highlight-sx {\n    color: #ffa500\n}\n\n/* LiteralStringRegex */\n.highlight-chroma .highlight-sr {\n    color: #e90;\n}\n\n/* LiteralStringSingle */\n.highlight-chroma .highlight-s1 {\n    color: #0b8235\n}\n\n/* LiteralStringSymbol */\n.highlight-chroma .highlight-ss {\n    color: #ed9d13\n}\n\n/* LiteralNumber */\n.highlight-chroma .highlight-m {\n    color: #3677a9\n}\n\n/* LiteralNumberBin */\n.highlight-chroma .highlight-mb {\n    color: #3677a9\n}\n\n/* LiteralNumberFloat */\n.highlight-chroma .highlight-mf {\n    color: #3677a9\n}\n\n/* LiteralNumberHex */\n.highlight-chroma .highlight-mh {\n    color: #3677a9\n}\n\n/* LiteralNumberInteger */\n.highlight-chroma .highlight-mi {\n    color: #3677a9\n}\n\n/* LiteralNumberIntegerLong */\n.highlight-chroma .highlight-il {\n    color: #3677a9\n}\n\n/* LiteralNumberOct */\n.highlight-chroma .highlight-mo {\n    color: #3677a9\n}\n\n/* OperatorWord */\n.highlight-chroma .highlight-ow {\n    color: #6ab825;\n    font-weight: bold\n}\n\n/* Comment */\n.highlight-chroma .highlight-c {\n    color: #999999;\n    font-style: italic\n}\n\n/* CommentHashbang */\n.highlight-chroma .highlight-ch {\n    color: #999999;\n    font-style: italic\n}\n\n/* CommentMultiline */\n.highlight-chroma .highlight-cm {\n    color: #999999;\n    font-style: italic\n}\n\n/* CommentSingle */\n.highlight-chroma .highlight-c1 {\n    color: #708090;\n    font-style: italic\n}\n\n/* CommentSpecial */\n.highlight-chroma .highlight-cs {\n    color: #e50808;\n    background-color: #520000;\n    font-weight: bold\n}\n\n/* CommentPreproc */\n.highlight-chroma .highlight-cp {\n    color: #cd2828;\n    font-weight: bold\n}\n\n/* CommentPreprocFile */\n.highlight-chroma .highlight-cpf {\n    color: #cd2828;\n    font-weight: bold\n}\n\n/* GenericDeleted */\n.highlight-chroma .highlight-gd {\n    color: #d22323\n}\n\n/* GenericEmph */\n.highlight-chroma .highlight-ge {\n    font-style: italic\n}\n\n/* GenericError */\n.highlight-chroma .highlight-gr {\n    color: #d22323\n}\n\n/* GenericHeading */\n.highlight-chroma .highlight-gh {\n    color: #ffffff;\n    font-weight: bold\n}\n\n/* GenericInserted */\n.highlight-chroma .highlight-gi {\n    color: #589819\n}\n\n/* GenericOutput */\n.highlight-chroma .highlight-go {\n    color: #cccccc\n}\n\n/* GenericPrompt */\n.highlight-chroma .highlight-gp {\n    color: #aaaaaa\n}\n\n/* GenericStrong */\n.highlight-chroma .highlight-gs {\n    font-weight: bold\n}\n\n/* GenericSubheading */\n.highlight-chroma .highlight-gu {\n    color: #ffffff;\n    text-decoration: underline\n}\n\n/* GenericTraceback */\n.highlight-chroma .highlight-gt {\n    color: #d22323\n}\n\n/* GenericUnderline */\n.highlight-chroma .highlight-gl {\n    text-decoration: underline\n}\n\n/* TextWhitespace */\n.highlight-chroma .highlight-w {\n    color: #666666\n}\n\n.hljs {\n    display: block;\n    padding: 16px 32px;\n    color: rgba(0, 0, 0, .85);\n    font-size: 14px;\n    font-family: lucida console, Consolas, Monaco, andale mono, ubuntu mono, monospace;\n    line-height: 2;\n    white-space: pre;\n    background: white;\n    border: 1px solid #e9e9e9;\n    border-radius: 2px;\n}\n\n.hljs::selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #708090;\n    font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n    color: #008dff;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n    color: #999;\n}\n\n.hljs-literal {\n    color: #56b6c2;\n}\n\n\n.hljs-regexp {\n    color: #e90;\n}\n.hljs-string,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n    color: #0b8235;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n    color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n    color: #f81d22;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n    color: #f81d22;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-link {\n    text-decoration: underline;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/arduino.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #728e00 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #00979d }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #728e00 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #728e00 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #00979d }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #00979d }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00979d }\n/* Name */ .highlight-chroma .highlight-n { color: #434f54 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #434f54 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #728e00 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #434f54 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #434f54 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #434f54 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #434f54 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #434f54 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #434f54 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #d35400 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #434f54 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #434f54 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #434f54 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #728e00 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #434f54 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #434f54 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #434f54 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #434f54 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #434f54 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #434f54 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #434f54 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #7f8c8d }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #7f8c8d }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #7f8c8d }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #7f8c8d }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #7f8c8d }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #7f8c8d }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #7f8c8d }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #7f8c8d }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #7f8c8d }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #7f8c8d }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #7f8c8d }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #7f8c8d }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #7f8c8d }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #7f8c8d }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #8a7b52 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #8a7b52 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #8a7b52 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #8a7b52 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #8a7b52 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #8a7b52 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #8a7b52 }\n/* Operator */ .highlight-chroma .highlight-o { color: #728e00 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #728e00 }\n/* Comment */ .highlight-chroma .highlight-c { color: #95a5a6 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #95a5a6 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #95a5a6 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #95a5a6 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #95a5a6 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #728e00 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #728e00 }\n\n/*\n\nArduino® Light Theme - Stefania Mellai <s.mellai@arduino.cc>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #FFFFFF;\n}\n\n.hljs,\n.hljs-subst {\n    color: #434f54;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-doctag,\n.hljs-name {\n    color: #00979D;\n}\n\n.hljs-built_in,\n.hljs-literal,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #D35400;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #00979D;\n}\n\n.hljs-type,\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #005C5F;\n}\n\n.hljs-title,\n.hljs-section {\n    color: #880000;\n    font-weight: bold;\n}\n\n.hljs-comment {\n    color: rgba(149,165,166,.8);\n}\n\n.hljs-meta-keyword {\n    color: #728E00;\n}\n\n.hljs-meta {\n    color: #728E00;\n    color: #434f54;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-function {\n    color: #728E00;\n}\n\n.hljs-number {\n    color: #8A7B52;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/autumn.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #ff0000; background-color: #ffaaaa }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #0000aa }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #0000aa }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #0000aa }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #0000aa }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #0000aa }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #0000aa }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00aaaa }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #1e90ff }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #00aaaa }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #00aa00; text-decoration: underline }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #aa0000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #888888 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #880000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #00aa00 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #00aaaa; text-decoration: underline }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #1e90ff; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #aa0000 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #aa5500 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #aa5500 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #aa5500 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #aa5500 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #aa5500 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #aa5500 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #aa5500 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #aa5500 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #aa5500 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #aa5500 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #aa5500 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #009999 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #aa5500 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #0000aa }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #009999 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #009999 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #009999 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #009999 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #009999 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #009999 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #009999 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #0000aa }\n/* Comment */ .highlight-chroma .highlight-c { color: #aaaaaa; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #aaaaaa; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #aaaaaa; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #aaaaaa; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #0000aa; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #4c8317 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #4c8317 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #aa0000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00aa00 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n\n/* Base16 Atelier Heath Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Heath Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #776977;\n}\n\n/* Atelier-Heath Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #ca402b;\n}\n\n/* Atelier-Heath Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n    color: #a65926;\n}\n\n/* Atelier-Heath Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n    color: #918b3b;\n}\n\n/* Atelier-Heath Blue */\n.hljs-title,\n.hljs-section {\n    color: #516aec;\n}\n\n/* Atelier-Heath Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #7b59c0;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #f7f3f7;\n    color: #695d69;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/borland.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #000080; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #000080; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #000080; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #000080; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #000080; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #000080; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #000080; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #ff0000 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #000080; font-weight: bold }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #0000ff }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #0000ff }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #0000ff }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #800080 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #0000ff }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #0000ff }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #0000ff }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #0000ff }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #0000ff }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #0000ff }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #0000ff }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #0000ff }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #0000ff }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #0000ff }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #0000ff }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #0000ff }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #0000ff }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #0000ff }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #0000ff }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #0000ff }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #0000ff }\n/* OperatorWord */ .highlight-chroma .highlight-ow { font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #008800; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #008800; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #008800; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #008800; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #008800; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #008080 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #008080 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #000000; background-color: #ffdddd }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #999999 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #000000; background-color: #ddffdd }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #aaaaaa }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nLightfair style (c) Tristian Kelly <tristian.kelly560@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n}\n\n.hljs-name {\n    color:#01a3a3;\n}\n\n.hljs-tag,.hljs-meta {\n    color:#778899;\n}\n\n.hljs,\n.hljs-subst {\n    color: #444\n}\n\n.hljs-comment {\n    color: #888888\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    font-weight: bold\n}\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #4286f4\n}\n\n.hljs-title,\n.hljs-section {\n    color: #4286f4;\n    font-weight: bold\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #BC6060\n}\n\n.hljs-literal {\n    color: #62bcbc\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #25c6c6\n}\n\n.hljs-meta-string {\n    color: #4d99bf\n}\n\n.hljs-emphasis {\n    font-style: italic\n}\n\n.hljs-strong {\n    font-weight: bold\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/bw.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp {  }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt {  }\n/* NameClass */ .highlight-chroma .highlight-nc { font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { font-weight: bold }\n/* LiteralString */ .highlight-chroma .highlight-s { font-style: italic }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { font-style: italic }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { font-style: italic }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { font-style: italic }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { font-style: italic }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { font-style: italic }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { font-weight: bold; font-style: italic }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { font-style: italic }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { font-weight: bold; font-style: italic }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { font-style: italic }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { font-style: italic }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { font-style: italic }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { font-style: italic }\n/* OperatorWord */ .highlight-chroma .highlight-ow { font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp {  }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf {  }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { font-weight: bold }\n\n/*\n\ngrayscale style (c) MY Sun <simonmysun@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #333;\n    background: #fff;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #777;\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n    color: #333;\n    font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal {\n    color: #777;\n}\n\n.hljs-string,\n.hljs-doctag,\n.hljs-formula {\n    color: #333;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n    color: #000;\n    font-weight: bold;\n}\n\n.hljs-subst {\n    font-weight: normal;\n}\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-name {\n    color: #333;\n    font-weight: bold;\n}\n\n.hljs-tag {\n    color: #333;\n}\n\n.hljs-regexp {\n    color: #333;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link {\n    color: #000;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n    color: #000;\n    text-decoration: underline;\n}\n\n.hljs-meta {\n    color: #999;\n    font-weight: bold;\n}\n\n.hljs-deletion {\n    color: #fff;\n    background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-addition {\n    color: #000;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/colorful.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #ff0000; background-color: #ffaaaa }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #008800; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #008800; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #008800; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #008800; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #003388; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #008800; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #333399; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #0000cc }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #007020 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #bb0066; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #003366; font-weight: bold }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #555555; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #880000; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #ff0000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #0066bb; font-weight: bold }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #997700; font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #0e84b5; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #007700 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #996633 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #336699 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #dd7700; font-weight: bold }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #3333bb }\n/* LiteralString */ .highlight-chroma .highlight-s { background-color: #fff0f0 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { background-color: #fff0f0 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { background-color: #fff0f0 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #0044dd; background-color: #fff0f0 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { background-color: #fff0f0 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #dd4422; background-color: #fff0f0 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { background-color: #fff0f0 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #666666; background-color: #fff0f0; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { background-color: #fff0f0 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { background-color: #eeeeee }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #000000; background-color: #fff0ff }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { background-color: #fff0f0 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #aa6600; background-color: #fff0f0 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #6600ee; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #6600ee; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #6600ee; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #005588; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #0000dd; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #6600ee; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #4400ee; font-weight: bold }\n/* Operator */ .highlight-chroma .highlight-o { color: #333333 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #888888 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #cc0000; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #557799 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #557799 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a00000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #c65d09; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n\n/* Base16 Atelier Plateau Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Plateau Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #655d5d;\n}\n\n/* Atelier-Plateau Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #ca4949;\n}\n\n/* Atelier-Plateau Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n    color: #b45a3c;\n}\n\n/* Atelier-Plateau Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n    color: #4b8b8b;\n}\n\n/* Atelier-Plateau Blue */\n.hljs-title,\n.hljs-section {\n    color: #7272ca;\n}\n\n/* Atelier-Plateau Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #8464c4;\n}\n\n.hljs-deletion,\n.hljs-addition {\n    color: #1b1818;\n    display: inline-block;\n    width: 100%;\n}\n\n.hljs-deletion {\n    background-color: #ca4949;\n}\n\n.hljs-addition {\n    background-color: #4b8b8b;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #f4ecec;\n    color: #585050;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/dracula.css",
    "content": "/* Background */ .highlight-bg { color: #f8f8f2; background-color: #282a36 }\n/* PreWrapper */ .highlight-chroma { color: #f8f8f2; background-color: #282a36; }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #3d3f4a }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #ff79c6 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #ff79c6 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #8be9fd; font-style: italic }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #ff79c6 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #ff79c6 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #ff79c6 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #8be9fd }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #50fa7b }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #8be9fd; font-style: italic }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #50fa7b }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #50fa7b }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #8be9fd; font-style: italic }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #ff79c6 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #8be9fd; font-style: italic }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #8be9fd; font-style: italic }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #8be9fd; font-style: italic }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #8be9fd; font-style: italic }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #f1fa8c }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #f1fa8c }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #f1fa8c }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #f1fa8c }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #f1fa8c }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #f1fa8c }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #f1fa8c }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #f1fa8c }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #f1fa8c }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #f1fa8c }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #f1fa8c }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #f1fa8c }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #f1fa8c }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #f1fa8c }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #bd93f9 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #bd93f9 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #bd93f9 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #bd93f9 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #bd93f9 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #bd93f9 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #bd93f9 }\n/* Operator */ .highlight-chroma .highlight-o { color: #ff79c6 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #ff79c6 }\n/* Comment */ .highlight-chroma .highlight-c { color: #6272a4 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #6272a4 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #6272a4 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #6272a4 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #6272a4 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #ff79c6 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #ff79c6 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #ff5555 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { text-decoration: underline }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #50fa7b; font-weight: bold }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #44475a }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { font-weight: bold }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/*\n\nDarcula color scheme from the JetBrains family of IDEs\n\n*/\n\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #2b2b2b;\n}\n\n.hljs {\n    color: #bababa;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n    color: #a8a8a2;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-link,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n    color: #6896ba;\n}\n\n.hljs-code,\n.hljs-selector-class {\n    color: #a6e22e;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-attribute,\n.hljs-name,\n.hljs-variable {\n    color: #cb7832;\n}\n\n.hljs-params {\n    color: #b9b9b9;\n}\n\n.hljs-string {\n    color: #6a8759;\n}\n\n.hljs-subst,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-symbol,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n    color: #e0c46c;\n}\n\n.hljs-comment,\n.hljs-deletion,\n.hljs-meta {\n    color: #7f7f7f;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/emacs.css",
    "content": "/* Background */ .highlight-bg { background-color: #f8f8f8 }\n/* PreWrapper */ .highlight-chroma { background-color: #f8f8f8; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #dfdfdf }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #aa22ff; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #aa22ff; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #aa22ff; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #aa22ff; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #aa22ff }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #aa22ff; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00bb00; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #bb4444 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #aa22ff }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #0000ff }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #880000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #aa22ff }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #999999; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #d2413a; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #00a000 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #a0a000 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #0000ff; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #008000; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #b8860b }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #bb4444 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #bb4444 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #bb4444 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #bb4444 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #bb4444 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #bb4444; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #bb4444 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #bb6622; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #bb4444 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #bb6688; font-weight: bold }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #008000 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #bb6688 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #bb4444 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #b8860b }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #666666 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #666666 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #666666 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #666666 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #666666 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #666666 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #666666 }\n/* Operator */ .highlight-chroma .highlight-o { color: #666666 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #aa22ff; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #008800; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #008800; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #008800; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #008800; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #008800; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #008800 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #008800 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a00000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #000080; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nAtom One Light by Daniel Gamage\nOriginal One Light Syntax theme from https://github.com/atom/one-light-syntax\n\nbase:    #fafafa\nmono-1:  #383a42\nmono-2:  #686b77\nmono-3:  #a0a1a7\nhue-1:   #0184bb\nhue-2:   #4078f2\nhue-3:   #a626a4\nhue-4:   #50a14f\nhue-5:   #e45649\nhue-5-2: #c91243\nhue-6:   #986801\nhue-6-2: #c18401\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #383a42;\n    background: #fafafa;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #a0a1a7;\n    font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n    color: #a626a4;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n    color: #e45649;\n}\n\n.hljs-literal {\n    color: #0184bb;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n    color: #50a14f;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n    color: #c18401;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n    color: #986801;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n    color: #4078f2;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-link {\n    text-decoration: underline;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/friendly.css",
    "content": "/* Background */ .highlight-bg { background-color: #f0f0f0 }\n/* PreWrapper */ .highlight-chroma { background-color: #f0f0f0; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #d8d8d8 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #007020; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #007020; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #007020; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #007020; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #007020 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #007020; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #902000 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #4070a0 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #007020 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #0e84b5; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #60add5 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #555555; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #d55537; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #007020 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #06287e }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #002070; font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #0e84b5; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #062873; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #bb60d5 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #4070a0 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #4070a0 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #4070a0 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #4070a0 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #4070a0 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #4070a0; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #4070a0 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #4070a0; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #4070a0 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #70a0d0; font-style: italic }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #c65d09 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #235388 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #4070a0 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #517918 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #40a070 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #40a070 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #40a070 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #40a070 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #40a070 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #40a070 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #40a070 }\n/* Operator */ .highlight-chroma .highlight-o { color: #666666 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #007020; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #60a0b0; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #60a0b0; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #60a0b0; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #60a0b0; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #60a0b0; background-color: #fff0f0 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #007020 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #007020 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a00000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #c65d09; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nISBL Editor style light color schemec (c) Dmitriy Tarasov <dimatar@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: white;\n    color: black;\n}\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n    color: #000000;\n}\n\n.hljs-comment {\n    color: #555555;\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    color: #000000;\n    font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-string {\n    color: #000080;\n}\n\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #000000;\n}\n\n.hljs-title,\n.hljs-section {\n    color: #fb2c00;\n}\n\n.hljs-title>.hljs-built_in {\n    color: #008080;\n    font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #5e1700;\n}\n\n/* Language color: hue: 90; */\n\n.hljs-built_in,\n.hljs-literal {\n    color: #000080;\n    font-weight: bold;\n}\n\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #397300;\n}\n\n.hljs-class  {\n    color: #6f1C00;\n    font-weight: bold;\n}\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n    color: #1f7199;\n}\n\n.hljs-meta-string {\n    color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/fruity.css",
    "content": "/* Background */ .highlight-bg { color: #ffffff; background-color: #111111 }\n/* PreWrapper */ .highlight-chroma { color: #ffffff; background-color: #111111; }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #282828 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #fb660a; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #fb660a; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #fb660a; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #fb660a; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #fb660a }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #fb660a; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #cdcaa9; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #ff0086; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #0086d2 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #ff0086; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #fb660a; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #fb660a }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #0086d2 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #0086d2 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #0086d2 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #0086d2 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #0086d2 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #0086d2 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #0086d2 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #0086d2 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #0086d2 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #0086d2 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #0086d2 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #0086d2 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #0086d2 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #0086d2 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #0086f7; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #0086f7; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #0086f7; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #0086f7; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #0086f7; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #0086f7; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #0086f7; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #008800; background-color: #0f140f; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #008800; background-color: #0f140f; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #008800; background-color: #0f140f; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #008800; background-color: #0f140f; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #008800; background-color: #0f140f; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #ff0007; background-color: #0f140f; font-weight: bold; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #ff0007; background-color: #0f140f; font-weight: bold; font-style: italic }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #444444; background-color: #222222 }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { font-weight: bold }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #888888 }\n\n\n/* Base16 Atelier Forest Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Forest Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #9c9491;\n}\n\n/* Atelier-Forest Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #f22c40;\n}\n\n/* Atelier-Forest Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n    color: #df5320;\n}\n\n/* Atelier-Forest Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n    color: #7b9726;\n}\n\n/* Atelier-Forest Blue */\n.hljs-title,\n.hljs-section {\n    color: #407ee7;\n}\n\n/* Atelier-Forest Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #6666ea;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #1b1918;\n    color: #a8a19f;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/github.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #000000; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #000000; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #000000; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #000000; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #000000; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #000000; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #445588; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #008080 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #0086b3 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #999999 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #445588; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #008080 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #3c5d5d; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #800080 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #990000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #990000; font-weight: bold }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #990000; font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #555555 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #000080 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #008080 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #008080 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #008080 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #008080 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #dd1144 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #dd1144 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #dd1144 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #dd1144 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #dd1144 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #dd1144 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #dd1144 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #dd1144 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #dd1144 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #dd1144 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #dd1144 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #009926 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #dd1144 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #990073 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #009999 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #009999 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #009999 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #009999 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #009999 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #009999 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #009999 }\n/* Operator */ .highlight-chroma .highlight-o { color: #000000; font-weight: bold }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #999988; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #999988; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #999988; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #999988; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #999999; font-weight: bold; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #999999; font-weight: bold; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #999999; font-weight: bold; font-style: italic }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #000000; background-color: #ffdddd }\n/* GenericEmph */ .highlight-chroma .highlight-ge { color: #000000; font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #999999 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #000000; background-color: #ddffdd }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #aaaaaa }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #333;\n    background: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #998;\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n    color: #333;\n    font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag .hljs-attr {\n    color: #008080;\n}\n\n.hljs-string,\n.hljs-doctag {\n    color: #d14;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n    color: #900;\n    font-weight: bold;\n}\n\n.hljs-subst {\n    font-weight: normal;\n}\n\n.hljs-type,\n.hljs-class .hljs-title {\n    color: #458;\n    font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n    color: #000080;\n    font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-link {\n    color: #009926;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n    color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n    color: #0086b3;\n}\n\n.hljs-meta {\n    color: #999;\n    font-weight: bold;\n}\n\n.hljs-deletion {\n    background: #fdd;\n}\n\n.hljs-addition {\n    background: #dfd;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/igor.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #0000ff }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #0000ff }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #0000ff }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #0000ff }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #0000ff }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #0000ff }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #0000ff }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #007575 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #cc00a3 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #c34e00 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #009c00 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #009c00 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #009c00 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #009c00 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #009c00 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #009c00 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #009c00 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #009c00 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #009c00 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #009c00 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #009c00 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #009c00 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #009c00 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #009c00 }\n/* Comment */ .highlight-chroma .highlight-c { color: #ff0000; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #ff0000; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #ff0000; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #ff0000; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #ff0000; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #ff0000; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #ff0000; font-style: italic }\n\n/*\n\nQt Creator light color scheme\n\n*/\n\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #ffffff;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag,\n.hljs-title {\n    color: #000000;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n    color: #000000;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n    color: #000080;\n}\n\n.hljs-code\n.hljs-selector-class {\n    color: #800080;\n}\n\n.hljs-emphasis,\n.hljs-stronge,\n.hljs-type {\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function,\n.hljs-section,\n.hljs-symbol,\n.hljs-name {\n    color: #808000;\n}\n\n.hljs-attribute {\n    color: #800000;\n}\n\n.hljs-variable,\n.hljs-params,\n.hljs-class .hljs-title {\n    color: #0055AF;\n}\n\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition,\n.hljs-link {\n    color: #008000;\n}\n\n.hljs-comment,\n.hljs-meta,\n.hljs-deletion {\n    color: #008000;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/lovelace.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { background-color: #a848a8 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #2838b0 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #444444; font-style: italic }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #2838b0; font-style: italic }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #2838b0 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #2838b0 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #2838b0 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #2838b0; font-style: italic }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #388038 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #388038 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { font-style: italic }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #287088 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #b85820 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #287088 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #709030 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #908828 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #785840 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #b85820 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #289870 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #289870 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #2838b0 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #b04040 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #908828 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #b85820 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #b83838 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #444444 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #b83838 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #a848a8 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #b85820 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #b85820; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #b83838 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #709030 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #b83838 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #b83838; text-decoration: underline }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #a848a8 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #a848a8 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #b83838 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #b83838 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #444444 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #444444 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #444444 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #444444 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #444444 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #444444 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #444444 }\n/* Operator */ .highlight-chroma .highlight-o { color: #666666 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #a848a8 }\n/* Punctuation */ .highlight-chroma .highlight-p { color: #888888 }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #287088; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #888888; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #289870 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #289870 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #c02828 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #c02828 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #666666 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #388038 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #666666 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #444444 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #444444 }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #2838b0 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #a89028 }\n/*\nDescription: Magula style for highligh.js\nAuthor: Ruslan Keba <rukeba@gmail.com>\nWebsite: http://rukeba.com/\nVersion: 1.0\nDate: 2009-01-03\nMusic: Aphex Twin / Xtal\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background-color: #f4f4f4;\n}\n\n.hljs,\n.hljs-subst {\n    color: black;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n    color: #050;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #777;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-type,\n.hljs-link {\n    color: #800;\n}\n\n.hljs-deletion,\n.hljs-meta {\n    color: #00e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-tag,\n.hljs-name {\n    font-weight: bold;\n    color: navy;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/manni.css",
    "content": "/* Background */ .highlight-bg { background-color: #f0f3f3 }\n/* PreWrapper */ .highlight-chroma { background-color: #f0f3f3; }\n/* Error */ .highlight-chroma .highlight-err { color: #aa0000; background-color: #ffaaaa }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #d8dada }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #006699; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #006699; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #006699; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #006699; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #006699 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #006699; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #007788; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #330099 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #336666 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #00aa88; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #336600 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #9999ff }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #999999; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #cc0000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #cc00ff }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #9999ff }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #00ccff; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #330099; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #003333 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #cc3300 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #cc3300 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #cc3300 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #cc3300 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #cc3300 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #cc3300; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #cc3300 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #cc3300; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #cc3300 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #aa0000 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #cc3300 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #33aaaa }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #cc3300 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #ffcc33 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #ff6600 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #ff6600 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #ff6600 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #ff6600 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #ff6600 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #ff6600 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #ff6600 }\n/* Operator */ .highlight-chroma .highlight-o { color: #555555 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #0099ff; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #0099ff; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #0099ff; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #0099ff; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #0099ff; font-weight: bold; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #009999 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #009999 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { background-color: #ffcccc }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #003300; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { background-color: #ccffcc }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #aaaaaa }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #000099; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #003300; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #99cc66 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/* Base16 Atelier Sulphurpool Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Sulphurpool Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #6b7394;\n}\n\n/* Atelier-Sulphurpool Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #c94922;\n}\n\n/* Atelier-Sulphurpool Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n    color: #c76b29;\n}\n\n/* Atelier-Sulphurpool Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n    color: #ac9739;\n}\n\n/* Atelier-Sulphurpool Blue */\n.hljs-title,\n.hljs-section {\n    color: #3d8fd1;\n}\n\n/* Atelier-Sulphurpool Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #6679cc;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #f5f7ff;\n    color: #5e6687;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/monokai.css",
    "content": "/* Background */ .highlight-bg { color: #f8f8f2; background-color: #272822 }\n/* PreWrapper */ .highlight-chroma { color: #f8f8f2; background-color: #272822; }\n/* Error */ .highlight-chroma .highlight-err { color: #960050; background-color: #1e0010 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #3c3d38 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #66d9ef }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #66d9ef }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #66d9ef }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #f92672 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #66d9ef }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #66d9ef }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #66d9ef }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #a6e22e }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #a6e22e }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #66d9ef }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #a6e22e }\n/* NameException */ .highlight-chroma .highlight-ne { color: #a6e22e }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #a6e22e }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #a6e22e }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #f92672 }\n/* Literal */ .highlight-chroma .highlight-l { color: #ae81ff }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #e6db74 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #e6db74 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #e6db74 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #e6db74 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #e6db74 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #e6db74 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #e6db74 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #e6db74 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #ae81ff }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #e6db74 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #e6db74 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #e6db74 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #e6db74 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #e6db74 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #e6db74 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #ae81ff }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #ae81ff }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #ae81ff }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #ae81ff }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #ae81ff }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #ae81ff }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #ae81ff }\n/* Operator */ .highlight-chroma .highlight-o { color: #f92672 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #f92672 }\n/* Comment */ .highlight-chroma .highlight-c { color: #75715e }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #75715e }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #75715e }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #75715e }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #75715e }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #75715e }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #75715e }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #f92672 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #a6e22e }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #75715e }\n/*\nMonokai style - ported by Luigi Maselli - http://grigio.org\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #272822; color: #ddd;\n}\n\n.hljs-tag,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-strong,\n.hljs-name {\n    color: #f92672;\n}\n\n.hljs-code {\n    color: #66d9ef;\n}\n\n.hljs-class .hljs-title {\n    color: white;\n}\n\n.hljs-attribute,\n.hljs-symbol,\n.hljs-regexp,\n.hljs-link {\n    color: #bf79db;\n}\n\n.hljs-string,\n.hljs-bullet,\n.hljs-subst,\n.hljs-title,\n.hljs-section,\n.hljs-emphasis,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n    color: #a6e22e;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n    color: #75715e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-selector-id {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/monokailight.css",
    "content": "/* Background */ .highlight-bg { color: #272822; background-color: #fafafa }\n/* PreWrapper */ .highlight-chroma { color: #272822; background-color: #fafafa; }\n/* Error */ .highlight-chroma .highlight-err { color: #960050; background-color: #1e0010 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e1e1e1 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #00a8c8 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #00a8c8 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #00a8c8 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #f92672 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #00a8c8 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #00a8c8 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00a8c8 }\n/* Name */ .highlight-chroma .highlight-n { color: #111111 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #75af00 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #111111 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #111111 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #75af00 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #00a8c8 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #75af00 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #111111 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #75af00 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #75af00 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #111111 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #111111 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #111111 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #75af00 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #111111 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #f92672 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #111111 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #111111 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #111111 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #111111 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #111111 }\n/* Literal */ .highlight-chroma .highlight-l { color: #ae81ff }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #d88200 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #d88200 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #d88200 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #d88200 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #d88200 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #d88200 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #d88200 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #d88200 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #8045ff }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #d88200 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #d88200 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #d88200 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #d88200 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #d88200 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #d88200 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #ae81ff }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #ae81ff }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #ae81ff }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #ae81ff }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #ae81ff }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #ae81ff }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #ae81ff }\n/* Operator */ .highlight-chroma .highlight-o { color: #f92672 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #f92672 }\n/* Punctuation */ .highlight-chroma .highlight-p { color: #111111 }\n/* Comment */ .highlight-chroma .highlight-c { color: #75715e }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #75715e }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #75715e }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #75715e }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #75715e }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #75715e }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #75715e }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/*\n\nGruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox)\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #fbf1c7;\n}\n\n.hljs,\n.hljs-subst {\n    color: #3c3836;\n}\n\n/* Gruvbox Red */\n.hljs-deletion,\n.hljs-formula,\n.hljs-keyword,\n.hljs-link,\n.hljs-selector-tag {\n    color: #9d0006;\n}\n\n/* Gruvbox Blue */\n.hljs-built_in,\n.hljs-emphasis,\n.hljs-name,\n.hljs-quote,\n.hljs-strong,\n.hljs-title,\n.hljs-variable {\n    color: #076678;\n}\n\n/* Gruvbox Yellow */\n.hljs-attr,\n.hljs-params,\n.hljs-template-tag,\n.hljs-type {\n    color: #b57614;\n}\n\n/* Gruvbox Purple */\n.hljs-builtin-name,\n.hljs-doctag,\n.hljs-literal,\n.hljs-number {\n    color: #8f3f71;\n}\n\n/* Gruvbox Orange */\n.hljs-code,\n.hljs-meta,\n.hljs-regexp,\n.hljs-selector-id,\n.hljs-template-variable {\n    color: #af3a03;\n}\n\n/* Gruvbox Green */\n.hljs-addition,\n.hljs-meta-string,\n.hljs-section,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-string,\n.hljs-symbol {\n    color: #79740e;\n}\n\n/* Gruvbox Aqua */\n.hljs-attribute,\n.hljs-bullet,\n.hljs-class,\n.hljs-function,\n.hljs-function .hljs-keyword,\n.hljs-meta-keyword,\n.hljs-selector-pseudo,\n.hljs-tag {\n    color: #427b58;\n}\n\n/* Gruvbox Gray */\n.hljs-comment {\n    color: #928374;\n}\n\n/* Gruvbox Purple */\n.hljs-link_label,\n.hljs-literal,\n.hljs-number {\n    color: #8f3f71;\n}\n\n.hljs-comment,\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-section,\n.hljs-strong,\n.hljs-tag {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/murphy.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #ff0000; background-color: #ffaaaa }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #228899; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #228899; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #228899; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #228899; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #0088ff; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #228899; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #6666ff; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #000077 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #007722 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #ee99ee; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #55eedd; font-weight: bold }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #555555; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #880000 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #ff0000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #55eedd; font-weight: bold }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #997700; font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #0e84b5; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #007700 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #003366 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #ccccff }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #ff8844 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #aaaaff }\n/* LiteralString */ .highlight-chroma .highlight-s { background-color: #e0e0ff }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { background-color: #e0e0ff }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { background-color: #e0e0ff }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #8888ff; background-color: #e0e0ff }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { background-color: #e0e0ff }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #dd4422; background-color: #e0e0ff }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { background-color: #e0e0ff }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #666666; background-color: #e0e0ff; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { background-color: #e0e0ff }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { background-color: #eeeeee }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #ff8888; background-color: #e0e0ff }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #000000; background-color: #e0e0ff }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { background-color: #e0e0ff }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #ffcc88; background-color: #e0e0ff }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #6600ee; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #6600ee; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #6600ee; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #005588; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #6666ff; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #6600ee; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #4400ee; font-weight: bold }\n/* Operator */ .highlight-chroma .highlight-o { color: #333333 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #666666; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #666666; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #666666; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #666666; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #cc0000; font-weight: bold; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #557799 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #557799 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a00000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #c65d09; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nColorbrewer theme\nOriginal: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org>\nPorted by Fabrício Tavares de Oliveira\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #fff;\n}\n\n.hljs,\n.hljs-subst {\n    color: #000;\n}\n\n.hljs-string,\n.hljs-meta,\n.hljs-symbol,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n    color: #756bb1;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #636363;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-bullet,\n.hljs-link {\n    color: #31a354;\n}\n\n.hljs-deletion,\n.hljs-variable {\n    color: #88f;\n}\n\n\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-doctag,\n.hljs-type,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-strong {\n    color: #3182bd;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-attribute {\n    color: #e6550d;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/native.css",
    "content": "/* Background */ .highlight-bg { color: #d0d0d0; background-color: #202020 }\n/* PreWrapper */ .highlight-chroma { color: #d0d0d0; background-color: #202020; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #363636 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #686868 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #686868 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #6ab825; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #6ab825; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #6ab825; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #6ab825; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #6ab825 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #6ab825; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #6ab825; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #bbbbbb }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #24909d }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #447fcf; text-decoration: underline }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #40ffff }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #ffa500 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #bbbbbb }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #447fcf }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #447fcf; text-decoration: underline }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #6ab825; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #40ffff }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #ed9d13 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #ed9d13 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #ed9d13 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #ed9d13 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #ed9d13 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #ed9d13 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #ed9d13 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #ed9d13 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #ed9d13 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #ed9d13 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #ffa500 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #ed9d13 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #ed9d13 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #ed9d13 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #3677a9 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #3677a9 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #3677a9 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #3677a9 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #3677a9 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #3677a9 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #3677a9 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #6ab825; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #999999; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #999999; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #999999; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #999999; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #e50808; background-color: #520000; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #cd2828; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #cd2828; font-weight: bold }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #d22323 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #d22323 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #ffffff; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #589819 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #cccccc }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #aaaaaa }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #ffffff; text-decoration: underline }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #d22323 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #666666 }\n/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase:    #282c34\nmono-1:  #abb2bf\nmono-2:  #818896\nmono-3:  #5c6370\nhue-1:   #56b6c2\nhue-2:   #61aeee\nhue-3:   #c678dd\nhue-4:   #98c379\nhue-5:   #e06c75\nhue-5-2: #be5046\nhue-6:   #d19a66\nhue-6-2: #e6c07b\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #abb2bf;\n    background: #282c34;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #5c6370;\n    font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n    color: #c678dd;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n    color: #e06c75;\n}\n\n.hljs-literal {\n    color: #56b6c2;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n    color: #98c379;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n    color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n    color: #d19a66;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n    color: #61aeee;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-link {\n    text-decoration: underline;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/paraiso-dark.css",
    "content": "/* Background */ .highlight-bg { color: #e7e9db; background-color: #2f1e2e }\n/* PreWrapper */ .highlight-chroma { color: #e7e9db; background-color: #2f1e2e; }\n/* Error */ .highlight-chroma .highlight-err { color: #ef6155 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #433442 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #815ba4 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #815ba4 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #815ba4 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #5bc4bf }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #815ba4 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #815ba4 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #fec418 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #06b6ef }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #fec418 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #ef6155 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #5bc4bf }\n/* NameException */ .highlight-chroma .highlight-ne { color: #ef6155 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #06b6ef }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #fec418 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #06b6ef }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #5bc4bf }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #ef6155 }\n/* Literal */ .highlight-chroma .highlight-l { color: #f99b15 }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #48b685 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #48b685 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #48b685 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #48b685 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #48b685 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #776e71 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #48b685 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #f99b15 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #48b685 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #f99b15 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #48b685 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #48b685 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #48b685 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #48b685 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #f99b15 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #f99b15 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #f99b15 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #f99b15 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #f99b15 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #f99b15 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #f99b15 }\n/* Operator */ .highlight-chroma .highlight-o { color: #5bc4bf }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #5bc4bf }\n/* Comment */ .highlight-chroma .highlight-c { color: #776e71 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #776e71 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #776e71 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #776e71 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #776e71 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #776e71 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #776e71 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #ef6155 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #48b685 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #776e71; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #5bc4bf; font-weight: bold }\n/*\nParaíso (dark)\nCreated by Jan T. Sott (http://github.com/idleberg)\nInspired by the art of Rubens LP (http://www.rubenslp.com.br)\n*/\n\n/* Paraíso Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #8d8687;\n}\n\n/* Paraíso Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-link,\n.hljs-meta {\n    color: #ef6155;\n}\n\n/* Paraíso Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion {\n    color: #f99b15;\n}\n\n/* Paraíso Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n    color: #fec418;\n}\n\n/* Paraíso Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n    color: #48b685;\n}\n\n/* Paraíso Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #815ba4;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #2f1e2e;\n    color: #a39e9b;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/paraiso-light.css",
    "content": "/* Background */ .highlight-bg { color: #2f1e2e; background-color: #e7e9db }\n/* PreWrapper */ .highlight-chroma { color: #2f1e2e; background-color: #e7e9db; }\n/* Error */ .highlight-chroma .highlight-err { color: #ef6155 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #cfd1c5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #815ba4 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #815ba4 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #815ba4 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #5bc4bf }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #815ba4 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #815ba4 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #fec418 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #06b6ef }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #fec418 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #ef6155 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #5bc4bf }\n/* NameException */ .highlight-chroma .highlight-ne { color: #ef6155 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #06b6ef }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #fec418 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #06b6ef }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #5bc4bf }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #ef6155 }\n/* Literal */ .highlight-chroma .highlight-l { color: #f99b15 }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #48b685 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #48b685 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #48b685 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #48b685 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #48b685 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #8d8687 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #48b685 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #f99b15 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #48b685 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #f99b15 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #48b685 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #48b685 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #48b685 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #48b685 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #f99b15 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #f99b15 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #f99b15 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #f99b15 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #f99b15 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #f99b15 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #f99b15 }\n/* Operator */ .highlight-chroma .highlight-o { color: #5bc4bf }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #5bc4bf }\n/* Comment */ .highlight-chroma .highlight-c { color: #8d8687 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #8d8687 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #8d8687 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #8d8687 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #8d8687 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #8d8687 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #8d8687 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #ef6155 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #48b685 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #8d8687; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #5bc4bf; font-weight: bold }\n/*\nParaíso (light)\nCreated by Jan T. Sott (http://github.com/idleberg)\nInspired by the art of Rubens LP (http://www.rubenslp.com.br)\n*/\n\n/* Paraíso Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #776e71;\n}\n\n/* Paraíso Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-link,\n.hljs-meta {\n    color: #ef6155;\n}\n\n/* Paraíso Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion {\n    color: #f99b15;\n}\n\n/* Paraíso Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n    color: #fec418;\n}\n\n/* Paraíso Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n    color: #48b685;\n}\n\n/* Paraíso Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #815ba4;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #e7e9db;\n    color: #4f424c;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/pastie.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #008800; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #008800; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #008800; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #008800; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #008800 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #008800; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #888888; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #336699 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #003388 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #bb0066; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #003366; font-weight: bold }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #555555 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #bb0066; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #0066bb; font-weight: bold }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #336699; font-style: italic }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #bb0066; font-weight: bold }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #336699; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #bb0066; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #336699 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #336699 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #dd7700 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #3333bb }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #0044dd; background-color: #fff0f0 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #3333bb; background-color: #fff0f0 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #22bb22; background-color: #f0fff0 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #008800; background-color: #fff0ff }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #dd2200; background-color: #fff0f0 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #aa6600; background-color: #fff0f0 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #0000dd; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #0000dd; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #0000dd; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #0000dd; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #0000dd; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #0000dd; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #0000dd; font-weight: bold }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #008800 }\n/* Comment */ .highlight-chroma .highlight-c { color: #888888 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #888888 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #888888 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #888888 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #cc0000; background-color: #fff0f0; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #cc0000; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #cc0000; font-weight: bold }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #000000; background-color: #ffdddd }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #333333 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #000000; background-color: #ddffdd }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #666666 }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nhighlight.js style for Microtik RouterOS script\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #F0F0F0;\n}\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n    color: #444;\n}\n\n.hljs-comment {\n    color: #888888;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    font-weight: bold;\n}\n\n.hljs-attribute {\n    color: #0E9A00;\n}\n\n.hljs-function {\n    color: #99069A;\n}\n\n.hljs-builtin-name {\n    color: #99069A;\n}\n\n/* User color: hue: 0 */\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #880000;\n}\n\n.hljs-title,\n.hljs-section {\n    color: #880000;\n    font-weight: bold;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #BC6060;\n}\n\n\n/* Language color: hue: 90; */\n\n.hljs-literal {\n    color: #78A960;\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #0C9A9A;\n}\n\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n    color: #1f7199;\n}\n\n.hljs-meta-string {\n    color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/perldoc.css",
    "content": "/* Background */ .highlight-bg { background-color: #eeeedd }\n/* PreWrapper */ .highlight-chroma { background-color: #eeeedd; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #d6d6c6 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #8b008b; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #8b008b; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #8b008b; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #8b008b; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #8b008b; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #8b008b; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00688b; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #658b00 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #658b00 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #008b45; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #00688b }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #707a7c }\n/* NameException */ .highlight-chroma .highlight-ne { color: #008b45; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #008b45 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #008b45; text-decoration: underline }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #8b008b; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #00688b }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #cd5555 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #cd5555 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #cd5555 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #cd5555 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #cd5555 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #cd5555 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #cd5555 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #cd5555 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #1c7e71; font-style: italic }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #cd5555 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #cb6c20 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #1c7e71 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #cd5555 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #cd5555 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #b452cd }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #b452cd }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #b452cd }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #b452cd }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #b452cd }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #b452cd }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #b452cd }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #8b008b }\n/* Comment */ .highlight-chroma .highlight-c { color: #228b22 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #228b22 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #228b22 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #228b22 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #8b008b; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #1e889b }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #1e889b }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #aa0000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00aa00 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\nName:     Kimbie (light)\nAuthor:   Jan T. Sott\nLicense:  Creative Commons Attribution-ShareAlike 4.0 Unported License\nURL:      https://github.com/idleberg/Kimbie-highlight.js\n*/\n\n/* Kimbie Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #a57a4c;\n}\n\n/* Kimbie Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-meta {\n    color: #dc3958;\n}\n\n/* Kimbie Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion,\n.hljs-link {\n    color: #f79a32;\n}\n\n/* Kimbie Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n    color: #f06431;\n}\n\n/* Kimbie Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n    color: #889b4a;\n}\n\n/* Kimbie Purple */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function {\n    color: #98676a;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #fbebd4;\n    color: #84613d;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/pygments.css",
    "content": "/* Background */ .highlight-bg {  }\n/* PreWrapper */ .highlight-chroma { ; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #008000; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #008000; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #008000; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #008000; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #008000 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #008000; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #b00040 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #7d9029 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #008000 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #0000ff; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #880000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #aa22ff }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #999999; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #d2413a; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #0000ff }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #a0a000 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #0000ff; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #008000; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #19177c }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #ba2121 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #ba2121 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #ba2121 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #ba2121 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #ba2121 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #ba2121; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #ba2121 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #bb6622; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #ba2121 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #bb6688; font-weight: bold }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #008000 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #bb6688 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #ba2121 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #19177c }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #666666 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #666666 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #666666 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #666666 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #666666 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #666666 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #666666 }\n/* Operator */ .highlight-chroma .highlight-o { color: #666666 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #aa22ff; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #408080; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #408080; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #408080; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #408080; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #408080; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #bc7a00 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #bc7a00 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a00000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #000080; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #eee; color: black;\n}\n\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n    color: #070;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n    color: #d14;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-quote,\n.hljs-comment {\n    color: #998;\n    font-style: italic;\n}\n\n.hljs-section,\n.hljs-title {\n    color: #900;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n    color: #458;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n    color: #336699;\n}\n\n.hljs-bullet {\n    color: #997700;\n}\n\n.hljs-meta {\n    color: #3344bb;\n}\n\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #099;\n}\n\n.hljs-regexp {\n    background-color: #fff0ff;\n    color: #880088;\n}\n\n.hljs-symbol {\n    color: #990073;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #007700;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/rainbow_dash.css",
    "content": "/* Background */ .highlight-bg { color: #4d4d4d; background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { color: #4d4d4d; background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #ffffff; background-color: #cc0000 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #2c5dcd; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #2c5dcd; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #2c5dcd; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #2c5dcd; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #2c5dcd }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #2c5dcd; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #5918bb; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #2c5dcd; font-style: italic }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #5918bb; font-weight: bold }\n/* NameClass */ .highlight-chroma .highlight-nc { text-decoration: underline }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #318495 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #ff8000; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #5918bb; font-weight: bold }\n/* NameException */ .highlight-chroma .highlight-ne { color: #5918bb; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #ff8000; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #2c5dcd; font-weight: bold }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #00cc66 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #00cc66 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #00cc66 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #00cc66 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #00cc66 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #00cc66; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #00cc66 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #c5060b; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #00cc66 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #00cc66 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #318495 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #00cc66 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #00cc66 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #c5060b; font-weight: bold }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #5918bb; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #5918bb; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #5918bb; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #5918bb; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #5918bb; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #5918bb; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #5918bb; font-weight: bold }\n/* Operator */ .highlight-chroma .highlight-o { color: #2c5dcd }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #2c5dcd; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #0080ff; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #0080ff; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #0080ff; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #0080ff; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #0080ff; font-weight: bold; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #0080ff }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #0080ff }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { background-color: #ffcccc }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #2c5dcd; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { background-color: #ccffcc }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #aaaaaa }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #2c5dcd; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #2c5dcd; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #c5060b }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #cbcbcb }\n/*\n\nIntellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    color: #000;\n    background: #fff;\n}\n\n.hljs-subst,\n.hljs-title {\n    font-weight: normal;\n    color: #000;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #808080;\n    font-style: italic;\n}\n\n.hljs-meta {\n    color: #808000;\n}\n\n.hljs-tag {\n    background: #efefef;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type,\n.hljs-selector-id,\n.hljs-selector-class {\n    font-weight: bold;\n    color: #000080;\n}\n\n.hljs-attribute,\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n    font-weight: bold;\n    color: #0000ff;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n    font-weight: normal;\n}\n\n.hljs-string {\n    color: #008000;\n    font-weight: bold;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-formula {\n    color: #000;\n    background: #d0eded;\n    font-style: italic;\n}\n\n.hljs-doctag {\n    text-decoration: underline;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n    color: #660e7a;\n}\n\n.hljs-addition {\n    background: #baeeba;\n}\n\n.hljs-deletion {\n    background: #ffc8bd;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/rrt.css",
    "content": "/* Background */ .highlight-bg { color: #f8f8f2; background-color: #000000 }\n/* PreWrapper */ .highlight-chroma { color: #f8f8f2; background-color: #000000; }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #191919 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7c7c79 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7c7c79 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #ff0000 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #ff0000 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #ff0000 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #ff0000 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #ff0000 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #ff0000 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #ee82ee }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #7fffd4 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #ffff00 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #eedd82 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #87ceeb }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #87ceeb }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #87ceeb }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #87ceeb }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #87ceeb }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #87ceeb }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #87ceeb }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #87ceeb }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #87ceeb }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #87ceeb }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #87ceeb }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #87ceeb }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #87ceeb }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #ff6600 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #ff6600 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #ff6600 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #ff6600 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #ff6600 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #ff6600 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #ff6600 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #ff6600 }\n/* Comment */ .highlight-chroma .highlight-c { color: #00ff00 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #00ff00 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #00ff00 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #00ff00 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #00ff00 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #e5e5e5 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #e5e5e5 }\n/*\n\nISBL Editor style dark color scheme (c) Dmitriy Tarasov <dimatar@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #404040;\n    color: #f0f0f0;\n}\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n    color: #f0f0f0;\n}\n\n.hljs-comment {\n    color: #b5b5b5;\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    color: #f0f0f0;\n    font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-string {\n    color: #97bf0d;\n}\n\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #f0f0f0;\n}\n\n.hljs-title,\n.hljs-section {\n    color: #df471e;\n}\n\n.hljs-title>.hljs-built_in {\n    color: #81bce9;\n    font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #e2c696;\n}\n\n/* Language color: hue: 90; */\n\n.hljs-built_in,\n.hljs-literal {\n    color: #97bf0d;\n    font-weight: bold;\n}\n\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #397300;\n}\n\n.hljs-class  {\n    color: #ce9d4d;\n    font-weight: bold;\n}\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n    color: #1f7199;\n}\n\n.hljs-meta-string {\n    color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/solarized-dark.css",
    "content": "/* Background */ .highlight-bg { color: #93a1a1; background-color: #002b36 }\n/* PreWrapper */ .highlight-chroma { color: #93a1a1; background-color: #002b36; }\n/* Other */ .highlight-chroma .highlight-x { color: #cb4b16 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #19404a }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #495050 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #495050 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #719e07 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #cb4b16 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #268bd2 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #719e07 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #719e07 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #268bd2 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #dc322f }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #b58900 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #268bd2 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #268bd2 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #cb4b16 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #268bd2 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #cb4b16 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #cb4b16 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #268bd2 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #268bd2 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #268bd2 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #2aa198 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #2aa198 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #586e75 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #2aa198 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #2aa198 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #2aa198 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #cb4b16 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #2aa198 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #2aa198 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #dc322f }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #2aa198 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #2aa198 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #2aa198 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #2aa198 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #2aa198 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #2aa198 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #2aa198 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #2aa198 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #2aa198 }\n/* Operator */ .highlight-chroma .highlight-o { color: #719e07 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #719e07 }\n/* Comment */ .highlight-chroma .highlight-c { color: #586e75 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #586e75 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #586e75 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #586e75 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #719e07 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #719e07 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #719e07 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #dc322f }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #dc322f; font-weight: bold }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #cb4b16 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #719e07 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #268bd2 }\n/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #002b36;\n    color: #839496;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #586e75;\n}\n\n/* Solarized Green */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-addition {\n    color: #859900;\n}\n\n/* Solarized Cyan */\n.hljs-number,\n.hljs-string,\n.hljs-meta .hljs-meta-string,\n.hljs-literal,\n.hljs-doctag,\n.hljs-regexp {\n    color: #2aa198;\n}\n\n/* Solarized Blue */\n.hljs-title,\n.hljs-section,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #268bd2;\n}\n\n/* Solarized Yellow */\n.hljs-attribute,\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-class .hljs-title,\n.hljs-type {\n    color: #b58900;\n}\n\n/* Solarized Orange */\n.hljs-symbol,\n.hljs-bullet,\n.hljs-subst,\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-link {\n    color: #cb4b16;\n}\n\n/* Solarized Red */\n.hljs-built_in,\n.hljs-deletion {\n    color: #dc322f;\n}\n\n.hljs-formula {\n    background: #073642;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/solarized-dark256.css",
    "content": "/* Background */ .highlight-bg { color: #8a8a8a; background-color: #1c1c1c }\n/* PreWrapper */ .highlight-chroma { color: #8a8a8a; background-color: #1c1c1c; }\n/* Other */ .highlight-chroma .highlight-x { color: #d75f00 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #323232 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #454545 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #454545 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #5f8700 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #d75f00 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #0087ff }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #d75f00 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #5f8700 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #0087ff }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #af0000 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #0087ff }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #0087ff }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #0087ff }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #d75f00 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #0087ff }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #d75f00 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #af8700 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #0087ff }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #0087ff }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #0087ff }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #00afaf }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #00afaf }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #4e4e4e }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #00afaf }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #00afaf }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #00afaf }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #00afaf }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #af0000 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #00afaf }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #00afaf }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #00afaf }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #af0000 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #00afaf }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #00afaf }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #00afaf }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #00afaf }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #00afaf }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #00afaf }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #00afaf }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #00afaf }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #00afaf }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #5f8700 }\n/* Comment */ .highlight-chroma .highlight-c { color: #4e4e4e }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #4e4e4e }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #4e4e4e }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #4e4e4e }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #5f8700 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #5f8700 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #5f8700 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #af0000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #af0000; font-weight: bold }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #d75f00 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #5f8700 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #0087ff }\n/* Base16 Atelier Cave Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Cave Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #7e7887;\n}\n\n/* Atelier-Cave Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-regexp,\n.hljs-link,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #be4678;\n}\n\n/* Atelier-Cave Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n    color: #aa573c;\n}\n\n/* Atelier-Cave Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n    color: #2a9292;\n}\n\n/* Atelier-Cave Blue */\n.hljs-title,\n.hljs-section {\n    color: #576ddb;\n}\n\n/* Atelier-Cave Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #955ae7;\n}\n\n.hljs-deletion,\n.hljs-addition {\n    color: #19171c;\n    display: inline-block;\n    width: 100%;\n}\n\n.hljs-deletion {\n    background-color: #be4678;\n}\n\n.hljs-addition {\n    background-color: #2a9292;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #19171c;\n    color: #8b8792;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/solarized-light.css",
    "content": "/* Background */ .highlight-bg { color: #586e75; background-color: #eee8d5 }\n/* PreWrapper */ .highlight-chroma { color: #586e75; background-color: #eee8d5; }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #d6d0bf }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #859900 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #859900; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #859900 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #dc322f; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #859900 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #859900 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #859900; font-weight: bold }\n/* Name */ .highlight-chroma .highlight-n { color: #268bd2 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #268bd2 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #cb4b16 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #268bd2 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #cb4b16 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #268bd2 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #268bd2 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #268bd2 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #268bd2 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #268bd2 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #268bd2 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #268bd2 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #268bd2 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #268bd2 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #268bd2 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #268bd2; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #268bd2 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #268bd2 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #268bd2 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #268bd2 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #268bd2 }\n/* Literal */ .highlight-chroma .highlight-l { color: #2aa198 }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #2aa198 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #2aa198 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #2aa198 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #2aa198 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #2aa198 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #2aa198 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #2aa198 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #2aa198 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #2aa198 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #2aa198 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #2aa198 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #2aa198 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #2aa198 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #2aa198 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #2aa198 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #2aa198; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #2aa198; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #2aa198; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #2aa198; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #2aa198; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #2aa198; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #2aa198; font-weight: bold }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #859900 }\n/* Comment */ .highlight-chroma .highlight-c { color: #93a1a1; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #93a1a1; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #93a1a1; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #93a1a1; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #93a1a1; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #93a1a1; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #93a1a1; font-style: italic }\n/* Generic */ .highlight-chroma .highlight-g { color: #d33682 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #d33682 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { color: #d33682 }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #d33682 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #d33682 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #d33682 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #d33682 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #d33682 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { color: #d33682 }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #d33682 }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #d33682 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { color: #d33682 }\n/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #fdf6e3;\n    color: #657b83;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #93a1a1;\n}\n\n/* Solarized Green */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-addition {\n    color: #859900;\n}\n\n/* Solarized Cyan */\n.hljs-number,\n.hljs-string,\n.hljs-meta .hljs-meta-string,\n.hljs-literal,\n.hljs-doctag,\n.hljs-regexp {\n    color: #2aa198;\n}\n\n/* Solarized Blue */\n.hljs-title,\n.hljs-section,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #268bd2;\n}\n\n/* Solarized Yellow */\n.hljs-attribute,\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-class .hljs-title,\n.hljs-type {\n    color: #b58900;\n}\n\n/* Solarized Orange */\n.hljs-symbol,\n.hljs-bullet,\n.hljs-subst,\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-link {\n    color: #cb4b16;\n}\n\n/* Solarized Red */\n.hljs-built_in,\n.hljs-deletion {\n    color: #dc322f;\n}\n\n.hljs-formula {\n    background: #eee8d5;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/swapoff.css",
    "content": "/* Background */ .highlight-bg { color: #e5e5e5; background-color: #000000 }\n/* PreWrapper */ .highlight-chroma { color: #e5e5e5; background-color: #000000; }\n/* Error */ .highlight-chroma .highlight-err { color: #ff0000 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #191919 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #727272 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #727272 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #ffffff; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #ffffff; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #ffffff; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #ffffff; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #ffffff; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #ffffff; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #ffffff; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #007f7f }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #ffffff; font-weight: bold }\n/* NameTag */ .highlight-chroma .highlight-nt { font-weight: bold }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #ffff00; font-weight: bold }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #00ffff; font-weight: bold }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #00ffff; font-weight: bold }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #00ffff; font-weight: bold }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #00ffff; font-weight: bold }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #00ffff; font-weight: bold }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #00ffff; font-weight: bold }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #00ffff; font-weight: bold }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #00ffff; font-weight: bold }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #00ffff; font-weight: bold }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #00ffff; font-weight: bold }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #00ffff; font-weight: bold }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #00ffff; font-weight: bold }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #00ffff; font-weight: bold }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #00ffff; font-weight: bold }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #ffff00; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #ffff00; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #ffff00; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #ffff00; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #ffff00; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #ffff00; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #ffff00; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #007f7f }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #007f7f }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #007f7f }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #007f7f }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #007f7f }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #00ff00; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #00ff00; font-weight: bold }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { font-weight: bold }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/*\n  xt256.css\n\n  Contact: initbar [at] protonmail [dot] ch\n         : github.com/initbar\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    color: #eaeaea;\n    background: #000;\n    padding: 0.5em;\n}\n\n.hljs-subst {\n    color: #eaeaea;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-builtin-name,\n.hljs-type {\n    color: #eaeaea;\n}\n\n.hljs-params {\n    color: #da0000;\n}\n\n.hljs-literal,\n.hljs-number,\n.hljs-name {\n    color: #ff0000;\n    font-weight: bolder;\n}\n\n.hljs-comment {\n    color: #969896;\n}\n\n.hljs-selector-id,\n.hljs-quote {\n    color: #00ffff;\n}\n\n.hljs-template-variable,\n.hljs-variable,\n.hljs-title {\n    color: #00ffff;\n    font-weight: bold;\n}\n\n.hljs-selector-class,\n.hljs-keyword,\n.hljs-symbol {\n    color: #fff000;\n}\n\n.hljs-string,\n.hljs-bullet {\n    color: #00ff00;\n}\n\n.hljs-tag,\n.hljs-section {\n    color: #000fff;\n}\n\n.hljs-selector-tag {\n    color: #000fff;\n    font-weight: bold;\n}\n\n.hljs-attribute,\n.hljs-built_in,\n.hljs-regexp,\n.hljs-link {\n    color: #ff00ff;\n}\n\n.hljs-meta {\n    color: #fff;\n    font-weight: bolder;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/tango.css",
    "content": "/* Background */ .highlight-bg { background-color: #f8f8f8 }\n/* PreWrapper */ .highlight-chroma { background-color: #f8f8f8; }\n/* Other */ .highlight-chroma .highlight-x { color: #000000 }\n/* Error */ .highlight-chroma .highlight-err { color: #a40000 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #dfdfdf }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #204a87; font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #204a87; font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #204a87; font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #204a87; font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #204a87; font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #204a87; font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #204a87; font-weight: bold }\n/* Name */ .highlight-chroma .highlight-n { color: #000000 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #c4a000 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #204a87 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #3465a4 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #000000 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #000000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #5c35cc; font-weight: bold }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #ce5c00 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #cc0000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #000000 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #000000 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #f57900 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #000000 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #000000 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #000000 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #204a87; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #000000 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #000000 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #000000 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #000000 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #000000 }\n/* Literal */ .highlight-chroma .highlight-l { color: #000000 }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #000000 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #4e9a06 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #4e9a06 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #4e9a06 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #4e9a06 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #4e9a06 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #8f5902; font-style: italic }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #4e9a06 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #4e9a06 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #4e9a06 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #4e9a06 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #4e9a06 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #4e9a06 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #4e9a06 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #4e9a06 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #0000cf; font-weight: bold }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #0000cf; font-weight: bold }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #0000cf; font-weight: bold }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #0000cf; font-weight: bold }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #0000cf; font-weight: bold }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #0000cf; font-weight: bold }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #0000cf; font-weight: bold }\n/* Operator */ .highlight-chroma .highlight-o { color: #ce5c00; font-weight: bold }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #204a87; font-weight: bold }\n/* Punctuation */ .highlight-chroma .highlight-p { color: #000000; font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #8f5902; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #8f5902; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #8f5902; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #8f5902; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #8f5902; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #8f5902; font-style: italic }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #8f5902; font-style: italic }\n/* Generic */ .highlight-chroma .highlight-g { color: #000000 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #a40000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { color: #000000; font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ef2929 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00a000 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #000000; font-style: italic }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #8f5902 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { color: #000000; font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #a40000; font-weight: bold }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { color: #000000; text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #f8f8f8; text-decoration: underline }\n/* a11y-light theme */\n/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */\n/* @author: ericwbailey */\n\n/* Comment */\n.hljs-comment,\n.hljs-quote {\n    color: #696969;\n}\n\n/* Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n    color: #d91e18;\n}\n\n/* Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n    color: #aa5d00;\n}\n\n/* Yellow */\n.hljs-attribute {\n    color: #aa5d00;\n}\n\n/* Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n    color: #008000;\n}\n\n/* Blue */\n.hljs-title,\n.hljs-section {\n    color: #007faa;\n}\n\n/* Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n    color: #7928a1;\n}\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    background: #fefefe;\n    color: #545454;\n    padding: 0.5em;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n@media screen and (-ms-high-contrast: active) {\n    .hljs-addition,\n    .hljs-attribute,\n    .hljs-built_in,\n    .hljs-builtin-name,\n    .hljs-bullet,\n    .hljs-comment,\n    .hljs-link,\n    .hljs-literal,\n    .hljs-meta,\n    .hljs-number,\n    .hljs-params,\n    .hljs-string,\n    .hljs-symbol,\n    .hljs-type,\n    .hljs-quote {\n        color: highlight;\n    }\n\n    .hljs-keyword,\n    .hljs-selector-tag {\n        font-weight: bold;\n    }\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/trac.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #a61717; background-color: #e3d2d2 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { font-weight: bold }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { font-weight: bold }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { font-weight: bold }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { font-weight: bold }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { font-weight: bold }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { font-weight: bold }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #445588; font-weight: bold }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #008080 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #999999 }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #445588; font-weight: bold }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #008080 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #800080 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #990000; font-weight: bold }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #990000; font-weight: bold }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #555555 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #000080 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #008080 }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #bb8844 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #bb8844 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #bb8844 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #bb8844 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #bb8844 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #bb8844 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #bb8844 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #bb8844 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #bb8844 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #bb8844 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #bb8844 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #808000 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #bb8844 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #bb8844 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #009999 }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #009999 }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #009999 }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #009999 }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #009999 }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #009999 }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #009999 }\n/* Operator */ .highlight-chroma .highlight-o { font-weight: bold }\n/* OperatorWord */ .highlight-chroma .highlight-ow { font-weight: bold }\n/* Comment */ .highlight-chroma .highlight-c { color: #999988; font-style: italic }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #999988; font-style: italic }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #999988; font-style: italic }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #999988; font-style: italic }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #999999; font-weight: bold; font-style: italic }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #999999; font-weight: bold }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #999999; font-weight: bold }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #000000; background-color: #ffdddd }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #aa0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #999999 }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #000000; background-color: #ddffdd }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #555555 }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #aaaaaa }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #aa0000 }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/* TextWhitespace */ .highlight-chroma .highlight-w { color: #bbbbbb }\n/*\n\nOriginal highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #F0F0F0;\n}\n\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n    color: #444;\n}\n\n.hljs-comment {\n    color: #888888;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #880000;\n}\n\n.hljs-title,\n.hljs-section {\n    color: #880000;\n    font-weight: bold;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #BC6060;\n}\n\n\n/* Language color: hue: 90; */\n\n.hljs-literal {\n    color: #78A960;\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #397300;\n}\n\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n    color: #1f7199;\n}\n\n.hljs-meta-string {\n    color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/vim.css",
    "content": "/* Background */ .highlight-bg { color: #cccccc; background-color: #000000 }\n/* PreWrapper */ .highlight-chroma { color: #cccccc; background-color: #000000; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #191919 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #cdcd00 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #cdcd00 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #00cd00 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #cd00cd }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #cdcd00 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #cdcd00 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #00cd00 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #cd00cd }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #00cdcd }\n/* NameException */ .highlight-chroma .highlight-ne { color: #666699; font-weight: bold }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #00cdcd }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #cd0000 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #cd0000 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #cd0000 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #cd0000 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #cd0000 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #cd0000 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #cd0000 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #cd0000 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #cd0000 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #cd0000 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #cd0000 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #cd0000 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #cd0000 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #cd0000 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #cd00cd }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #cd00cd }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #cd00cd }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #cd00cd }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #cd00cd }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #cd00cd }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #cd00cd }\n/* Operator */ .highlight-chroma .highlight-o { color: #3399cc }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #cdcd00 }\n/* Comment */ .highlight-chroma .highlight-c { color: #000080 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #000080 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #000080 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #000080 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #cd0000; font-weight: bold }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #000080 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #000080 }\n/* GenericDeleted */ .highlight-chroma .highlight-gd { color: #cd0000 }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericError */ .highlight-chroma .highlight-gr { color: #ff0000 }\n/* GenericHeading */ .highlight-chroma .highlight-gh { color: #000080; font-weight: bold }\n/* GenericInserted */ .highlight-chroma .highlight-gi { color: #00cd00 }\n/* GenericOutput */ .highlight-chroma .highlight-go { color: #888888 }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { color: #000080; font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { color: #800080; font-weight: bold }\n/* GenericTraceback */ .highlight-chroma .highlight-gt { color: #0044dd }\n/* GenericUnderline */ .highlight-chroma .highlight-gl { text-decoration: underline }\n/*\n\nQt Creator dark color scheme\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #000000;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag,\n.hljs-title {\n    color: #aaaaaa;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n    color: #a8a8a2;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n    color: #ff55ff;\n}\n\n.hljs-code\n.hljs-selector-class {\n    color: #aaaaff;\n}\n\n.hljs-emphasis,\n.hljs-stronge,\n.hljs-type {\n    font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function,\n.hljs-section,\n.hljs-symbol,\n.hljs-name {\n    color: #ffff55;\n}\n\n.hljs-attribute {\n    color: #ff5555;\n}\n\n.hljs-variable,\n.hljs-params,\n.hljs-class .hljs-title {\n    color: #8888ff;\n}\n\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition,\n.hljs-link {\n    color: #ff55ff;\n}\n\n.hljs-comment,\n.hljs-meta,\n.hljs-deletion {\n    color: #55ffff;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/vs.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err {  }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #0000ff }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #0000ff }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #0000ff }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #0000ff }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #0000ff }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #0000ff }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #2b91af }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #2b91af }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #a31515 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #a31515 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #a31515 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #a31515 }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #a31515 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #a31515 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #a31515 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #a31515 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #a31515 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #a31515 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #a31515 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #a31515 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #a31515 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #a31515 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #0000ff }\n/* Comment */ .highlight-chroma .highlight-c { color: #008000 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #008000 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #008000 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #008000 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #008000 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #0000ff }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #0000ff }\n/* GenericEmph */ .highlight-chroma .highlight-ge { font-style: italic }\n/* GenericHeading */ .highlight-chroma .highlight-gh { font-weight: bold }\n/* GenericPrompt */ .highlight-chroma .highlight-gp { font-weight: bold }\n/* GenericStrong */ .highlight-chroma .highlight-gs { font-weight: bold }\n/* GenericSubheading */ .highlight-chroma .highlight-gu { font-weight: bold }\n/*\n\nVisual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>\n\n*/\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: white;\n    color: black;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-variable {\n    color: #008000;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-built_in,\n.hljs-name,\n.hljs-tag {\n    color: #00f;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-section,\n.hljs-attribute,\n.hljs-literal,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-addition {\n    color: #a31515;\n}\n\n.hljs-deletion,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-meta {\n    color: #2b91af;\n}\n\n.hljs-doctag {\n    color: #808080;\n}\n\n.hljs-attr {\n    color: #f00;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link {\n    color: #00b0e8;\n}\n\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n.hljs-strong {\n    font-weight: bold;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/highlight.js/styles/xcode.css",
    "content": "/* Background */ .highlight-bg { background-color: #ffffff }\n/* PreWrapper */ .highlight-chroma { background-color: #ffffff; }\n/* Error */ .highlight-chroma .highlight-err { color: #000000 }\n/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }\n/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }\n/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 }\n/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }\n/* Line */ .highlight-chroma .highlight-line { display: flex; }\n/* Keyword */ .highlight-chroma .highlight-k { color: #a90d91 }\n/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #a90d91 }\n/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #a90d91 }\n/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #a90d91 }\n/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #a90d91 }\n/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #a90d91 }\n/* KeywordType */ .highlight-chroma .highlight-kt { color: #a90d91 }\n/* Name */ .highlight-chroma .highlight-n { color: #000000 }\n/* NameAttribute */ .highlight-chroma .highlight-na { color: #836c28 }\n/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #a90d91 }\n/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #5b269a }\n/* NameClass */ .highlight-chroma .highlight-nc { color: #3f6e75 }\n/* NameConstant */ .highlight-chroma .highlight-no { color: #000000 }\n/* NameDecorator */ .highlight-chroma .highlight-nd { color: #000000 }\n/* NameEntity */ .highlight-chroma .highlight-ni { color: #000000 }\n/* NameException */ .highlight-chroma .highlight-ne { color: #000000 }\n/* NameFunction */ .highlight-chroma .highlight-nf { color: #000000 }\n/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #000000 }\n/* NameLabel */ .highlight-chroma .highlight-nl { color: #000000 }\n/* NameNamespace */ .highlight-chroma .highlight-nn { color: #000000 }\n/* NameOther */ .highlight-chroma .highlight-nx { color: #000000 }\n/* NameProperty */ .highlight-chroma .highlight-py { color: #000000 }\n/* NameTag */ .highlight-chroma .highlight-nt { color: #000000 }\n/* NameVariable */ .highlight-chroma .highlight-nv { color: #000000 }\n/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #000000 }\n/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #000000 }\n/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #000000 }\n/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #000000 }\n/* Literal */ .highlight-chroma .highlight-l { color: #1c01ce }\n/* LiteralDate */ .highlight-chroma .highlight-ld { color: #1c01ce }\n/* LiteralString */ .highlight-chroma .highlight-s { color: #c41a16 }\n/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #c41a16 }\n/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #c41a16 }\n/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #2300ce }\n/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #c41a16 }\n/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #c41a16 }\n/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #c41a16 }\n/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #c41a16 }\n/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #c41a16 }\n/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #c41a16 }\n/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #c41a16 }\n/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #c41a16 }\n/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #c41a16 }\n/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #c41a16 }\n/* LiteralNumber */ .highlight-chroma .highlight-m { color: #1c01ce }\n/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #1c01ce }\n/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #1c01ce }\n/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #1c01ce }\n/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #1c01ce }\n/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #1c01ce }\n/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #1c01ce }\n/* Operator */ .highlight-chroma .highlight-o { color: #000000 }\n/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000 }\n/* Comment */ .highlight-chroma .highlight-c { color: #177500 }\n/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #177500 }\n/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #177500 }\n/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #177500 }\n/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #177500 }\n/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #633820 }\n/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #633820 }\n/*\n\nXCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>\n\n*/\n\n.hljs {\n    display: block;\n    overflow-x: auto;\n    padding: 0.5em;\n    background: #fff;\n    color: black;\n}\n\n/* Gray DOCTYPE selectors like WebKit */\n.xml .hljs-meta {\n    color: #c0c0c0;\n}\n\n.hljs-comment,\n.hljs-quote {\n    color: #007400;\n}\n\n.hljs-tag,\n.hljs-attribute,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-name {\n    color: #aa0d91;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n    color: #3F6E74;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string {\n    color: #c41a16;\n}\n\n.hljs-regexp,\n.hljs-link {\n    color: #0E0EFF;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-number {\n    color: #1c00cf;\n}\n\n.hljs-section,\n.hljs-meta {\n    color: #643820;\n}\n\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n    color: #5c2699;\n}\n\n.hljs-attr {\n    color: #836C28;\n}\n\n.hljs-subst {\n    color: #000;\n}\n\n.hljs-formula {\n    background-color: #eee;\n    font-style: italic;\n}\n\n.hljs-addition {\n    background-color: #baeeba;\n}\n\n.hljs-deletion {\n    background-color: #ffc8bd;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n    color: #9b703f;\n}\n\n.hljs-doctag,\n.hljs-strong {\n    font-weight: bold;\n}\n\n.hljs-emphasis {\n    font-style: italic;\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/en_US.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Center',\n  'alignLeft': 'Left',\n  'alignRight': 'Right',\n  'alternateText': 'Alternate text',\n  'bold': 'Bold',\n  'both': 'editor & preview',\n  'check': 'Task List',\n  'close': 'Close',\n  'code': 'Code Block',\n  'code-theme': 'Code Block Theme Preview',\n  'column': 'Column',\n  'comment': 'Comment',\n  'confirm': 'Confirm',\n  'content-theme': 'Content Theme Preview',\n  'copied': 'Copied',\n  'copy': 'Copy',\n  'delete-column': 'Delete Row',\n  'delete-row': 'Delete Column',\n  'devtools': 'DevTools',\n  'down': 'Down',\n  'downloadTip': 'The browser does not support the download function',\n  'edit': 'Edit',\n  'edit-mode': 'Toggle Edit Mode',\n  'emoji': 'Emoji',\n  'export': 'Export',\n  'fileTypeError': 'file type is error',\n  'footnoteRef': 'Footnote Ref',\n  'fullscreen': 'Toggle Fullscreen',\n  'generate': 'Generating',\n  'headings': 'Headings',\n  'heading1': 'Heading 1',\n  'heading2': 'Heading 2',\n  'heading3': 'Heading 3',\n  'heading4': 'Heading 4',\n  'heading5': 'Heading 5',\n  'heading6': 'Heading 6',\n  'help': 'Help',\n  'imageURL': 'image URL',\n  'indent': 'Indent',\n  'info': 'Info',\n  'inline-code': 'Inline Code',\n  'insert-after': 'Insert line after',\n  'insert-before': 'Insert line before',\n  'insertColumnLeft': 'Insert 1 left',\n  'insertColumnRight': 'Insert 1 right',\n  'insertRowAbove': 'Insert 1 above',\n  'insertRowBelow': 'Insert 1 below',\n  'instantRendering': 'Instant Rendering',\n  'italic': 'Italic',\n  'language': 'Language',\n  'line': 'Line',\n  'link': 'Link',\n  'linkRef': 'Link Ref',\n  'list': 'List',\n  'more': 'More',\n  'nameEmpty': 'Name is empty',\n  'ordered-list': 'Order List',\n  'outdent': 'Outdent',\n  'outline': 'Outline',\n  'over': 'over',\n  'performanceTip': 'Real-time preview requires ${x}ms, you can close it',\n  'preview': 'Preview',\n  'quote': 'Quote',\n  'record': 'Start Record/End Record',\n  'record-tip': 'The device does not support recording',\n  'recording': 'recording...',\n  'redo': 'Redo',\n  'remove': 'Remove',\n  'row': 'Row',\n  'spin': 'Spin',\n  'splitView': 'Split View',\n  'strike': 'Strike',\n  'table': 'Table',\n  'textIsNotEmpty': 'text(no empty)',\n  'title': 'Title',\n  'tooltipText': 'Tooltip text',\n  'undo': 'Undo',\n  'up': 'Up',\n  'update': 'Update',\n  'upload': 'Upload image or file',\n  'uploadError': 'upload error',\n  'uploading': 'uploading...',\n  'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/fr_FR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Centré',\n  'alignLeft': 'Gauche',\n  'alignRight': 'Droite',\n  'alternateText': 'Texte de remplacement',\n  'bold': 'Gras',\n  'both': 'éditeur & prévisualisation',\n  'check': 'Liste de tâches',\n  'close': 'Fermer',\n  'code': 'Bloc de code',\n  'code-theme': 'Thème pour le bloc de code',\n  'column': 'Colonne',\n  'comment': 'Commentaire',\n  'confirm': 'Confirmez',\n  'content-theme': 'Thème pour le contenu',\n  'copied': 'Copié',\n  'copy': 'Copier',\n  'delete-column': 'Enlever ligne',\n  'delete-row': 'Enlever colonne',\n  'devtools': 'Outils de dev',\n  'down': 'Bas',\n  'downloadTip': 'Le navigateur ne permet pas le téléversement',\n  'edit': 'Editer',\n  'edit-mode': 'Changer le mode d\\'édition',\n  'emoji': 'Emoji',\n  'export': 'Export',\n  'fileTypeError': 'erreur de type de fichier',\n  'footnoteRef': 'Ref. notes de pied de page',\n  'fullscreen': 'Bascule en plein écran',\n  'generate': 'Création',\n  'headings': 'Titres',\n  'heading1': 'Titre 1',\n  'heading2': 'Titre 2',\n  'heading3': 'Titre 3',\n  'heading4': 'Titre 4',\n  'heading5': 'Titre 5',\n  'heading6': 'Titre 6',\n  'help': 'Aide',\n  'imageURL': 'URL de l\\'image',\n  'indent': 'Augmenter le retrait',\n  'info': 'Info',\n  'inline-code': 'Code en ligne',\n  'insert-after': 'Insérer une ligne après',\n  'insert-before': 'Insérer une ligne avant',\n  'insertColumnLeft': 'Insérer col. à gauche',\n  'insertColumnRight': 'Insérer col. à droite',\n  'insertRowAbove': 'Insérer 1 au dessus',\n  'insertRowBelow': 'Insérer 1 en dessous',\n  'instantRendering': 'Aperçu instantané',\n  'italic': 'Italique',\n  'language': 'Langage',\n  'line': 'Ligne',\n  'link': 'Lien',\n  'linkRef': 'Réf. Lien',\n  'list': 'Liste',\n  'more': 'Plus',\n  'nameEmpty': 'Nom est vide',\n  'ordered-list': 'Liste ordonnée',\n  'outdent': 'Réduire le retrait',\n  'outline': 'Table des matières',\n  'over': 'survol',\n  'performanceTip': 'La prévisualisation temps réel prend ${x}ms, vous pouvez fermer',\n  'preview': 'Prévisualisation',\n  'quote': 'Citation',\n  'record': 'Démarrer/Stopper l\\'enregistrement',\n  'record-tip': 'L\\'appareil ne supporte pas l\\'enregistrement',\n  'recording': 'Enregistrement en cours...',\n  'redo': 'Rétablir',\n  'remove': 'Enlever',\n  'row': 'Ligne',\n  'spin': 'Rotation',\n  'splitView': 'Vue scindée',\n  'strike': 'Barré',\n  'table': 'Table',\n  'textIsNotEmpty': 'texte(pas vide)',\n  'title': 'Titre',\n  'tooltipText': 'Texte au survol',\n  'undo': 'Annuler',\n  'up': 'Haut',\n  'update': 'Mettre à jour',\n  'upload': 'Téléverser image ou fichier',\n  'uploadError': 'erreur de téléversement',\n  'uploading': 'Téléversement en cours...',\n  'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/ja_JP.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '中央',\n  'alignLeft': '左側',\n  'alignRight': '右側',\n  'alternateText': 'イメージタグ',\n  'bold': '太く',\n  'both': 'エディター & プレビュー',\n  'check': 'チェックリスト',\n  'close': '閉じる',\n  'code': 'コードブロック挿入',\n  'code-theme': 'コードブロックテーマ',\n  'column': '行列',\n  'comment': 'コメント',\n  'confirm': '確認',\n  'content-theme': 'コンテンツテーマ',\n  'copied': 'コピー完了',\n  'copy': 'コピー',\n  'delete-column': '列 消去',\n  'delete-row': '行 消去',\n  'devtools': '開発ツール',\n  'down': '下げる',\n  'downloadTip': 'ブラウザがダウンロード機能をサポートしていません。',\n  'edit': '修正',\n  'edit-mode': '編集モード',\n  'emoji': '絵文字',\n  'export': 'エクスポート',\n  'fileTypeError': 'サポートしていません。',\n  'footnoteRef': '脚注参照',\n  'fullscreen': 'フルスクリーン',\n  'generate': '作成する',\n  'headings': '見出しの大きさ',\n  'heading1': '見出し1',\n  'heading2': '見出し2',\n  'heading3': '見出し3',\n  'heading4': '見出し4',\n  'heading5': '見出し5',\n  'heading6': '見出し6',\n  'help': 'ヘルプ',\n  'imageURL': 'イメージ URL',\n  'indent': '字下げ',\n  'info': '情報',\n  'inline-code': 'インラインコード',\n  'insert-after': 'ブロックの後ろに入力',\n  'insert-before': 'ブロックの前に入力',\n  'insertColumnLeft': '左側に列を挿入',\n  'insertColumnRight': '右側に列を挿入',\n  'insertRowAbove': '上に行を挿入',\n  'insertRowBelow': '下に行を挿入',\n  'instantRendering': 'インスタントレンダリング',\n  'italic': '斜体',\n  'language': '言語',\n  'line': '段落分割',\n  'link': 'リンク',\n  'linkRef': 'リンク参照',\n  'list': 'リスト',\n  'more': '詳しく見る',\n  'nameEmpty': '名前が入力されていません。',\n  'ordered-list': '順序のあるリスト',\n  'outdent': 'ぶら下げインデント',\n  'outline': '概要',\n  'over': 'オーバー',\n  'performanceTip': 'リアルタイムプレビューには、${x}msが必要でエディター/プレビューボタンをクリックして閉じる事が出来ます。',\n  'preview': 'プレビュー',\n  'quote': '引用段落',\n  'record': '録音開始/録音終了',\n  'record-tip': '録音がサポートされていません。',\n  'recording': '録音中...',\n  'redo': '戻る',\n  'remove': '消去',\n  'row': '列',\n  'spin': 'スピン',\n  'splitView': 'マークダウン',\n  'strike': '取り消し線',\n  'table': '表 挿入',\n  'textIsNotEmpty': 'テキスト(空白は不可)',\n  'title': '題名',\n  'tooltipText': 'ツールチップ',\n  'undo': '取り消す',\n  'up': '上げる',\n  'update': 'アップデート',\n  'upload': 'イメージをアップロードする',\n  'uploadError': 'アップロード失敗',\n  'uploading': 'アップロード中',\n  'wysiwyg': 'ウィジウィグ',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/ko_KR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '가운데',\n  'alignLeft': '왼쪽',\n  'alignRight': '오른쪽',\n  'alternateText': '이미지 태그',\n  'bold': '굵게',\n  'both': '에디터 & 미리보기',\n  'check': '체크박스',\n  'close': '닫기',\n  'code': '코드블럭삽입',\n  'code-theme': '코드블럭테마',\n  'column': '행',\n  'comment': '코멘트',\n  'confirm': '확인',\n  'content-theme': '컨텐츠테마',\n  'copied': '복사완료',\n  'copy': '복사',\n  'delete-column': '열 삭제',\n  'delete-row': '행 삭제',\n  'devtools': '개발툴',\n  'down': '다운',\n  'downloadTip': '브라우저가 다운로드 기능을 지원하지 않습니다',\n  'edit': '수정',\n  'edit-mode': '편집모드',\n  'emoji': '이모지',\n  'export': '내보내기',\n  'fileTypeError': '지원하지않습니다.',\n  'footnoteRef': '각주참조',\n  'fullscreen': '전체화면',\n  'generate': '생성',\n  'headings': '제목크기',\n  'heading1': '첫 번째 수준 제목',\n  'heading2': '두 번째 수준 제목',\n  'heading3': '3 단계 제목',\n  'heading4': '제목 4',\n  'heading5': '5 단계 제목',\n  'heading6': '6 단계 제목',\n  'help': '도움말',\n  'imageURL': '이미지 URL',\n  'indent': '들여쓰기',\n  'info': '정보',\n  'inline-code': '인라인코드',\n  'insert-after': '블락 뒤로 입력',\n  'insert-before': '블락 앞으로 입력',\n  'insertColumnLeft': '왼쪽에 열 삽입',\n  'insertColumnRight': '오른쪽에 열 삽입',\n  'insertRowAbove': '위에 행 삽입',\n  'insertRowBelow': '아래에 행 삽입',\n  'instantRendering': '타이포라',\n  'italic': '기울임꼴',\n  'language': '언어',\n  'line': '문단나눔',\n  'link': '링크',\n  'linkRef': '링크 참조',\n  'list': '순서없는 목록',\n  'more': '더보기',\n  'nameEmpty': '이름이 비어있습니다.',\n  'ordered-list': '순서있는 목록',\n  'outdent': '내어쓰기',\n  'outline': '개요',\n  'over': '오버',\n  'performanceTip': '실시간 미리보기에는 ${x}ms가 필요하며 에디터/미리보기 버튼을 클릭하여 닫을 수 있습니다.',\n  'preview': '미리보기',\n  'quote': '인용단락',\n  'record': '녹음시작/녹음종료',\n  'record-tip': '녹음을 지원하지 않습니다.',\n  'recording': '녹음중...',\n  'redo': '되돌리기',\n  'remove': '삭제',\n  'row': '열',\n  'spin': '회전',\n  'splitView': '마크다운',\n  'strike': '취소선',\n  'table': '표삽입',\n  'textIsNotEmpty': '텍스트(no empty)',\n  'title': '표제',\n  'tooltipText': '툴팁',\n  'undo': '취소하기',\n  'up': '위로',\n  'update': '업데이트',\n  'upload': '이미지 업로드하기',\n  'uploadError': '업로드 실패',\n  'uploading': '업로드중...',\n  'wysiwyg': '위지위그',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/pt_BR.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Centralizar',\n  'alignLeft': 'Alinhar à esquerda',\n  'alignRight': 'Alinhar à direita',\n  'alternateText': 'Texto alternativo',\n  'bold': 'Negrito',\n  'both': 'Editor e visualização',\n  'check': 'Lista de tarefas',\n  'close': 'Fechar',\n  'code': 'Bloco de código',\n  'code-theme': 'Tema de bloco de código',\n  'column': 'Coluna',\n  'comment': 'Comentário',\n  'confirm': 'Confirmar',\n  'content-theme': 'Tema de conteúdo',\n  'copied': 'Copiado',\n  'copy': 'Copiar',\n  'delete-column': 'Excluir coluna',\n  'delete-row': 'Excluir linha',\n  'devtools': 'Ferramentas de desenvolvimento',\n  'down': 'Para baixo',\n  'downloadTip': 'O navegador não suporta a função de download',\n  'edit': 'Editar',\n  'edit-mode': 'Alternar modo de edição',\n  'emoji': 'Emoji',\n  'export': 'Exportar',\n  'fileTypeError': 'Tipo de arquivo incorreto',\n  'footnoteRef': 'Referência de rodapé',\n  'fullscreen': 'Alternar tela cheia',\n  'generate': 'Gerando',\n  'headings': 'Cabeçalhos',\n  'heading1': 'Cabeçalho 1',\n  'heading2': 'Cabeçalho 2',\n  'heading3': 'Cabeçalho 3',\n  'heading4': 'Cabeçalho 4',\n  'heading5': 'Cabeçalho 5',\n  'heading6': 'Cabeçalho 6',\n  'help': 'Ajuda',\n  'imageURL': 'URL da imagem',\n  'indent': 'Recuar',\n  'info': 'Informação',\n  'inline-code': 'Código em linha',\n  'insert-after': 'Inserir linha depois',\n  'insert-before': 'Inserir linha antes',\n  'insertColumnLeft': 'Inserir 1 à esquerda',\n  'insertColumnRight': 'Inserir 1 à direita',\n  'insertRowAbove': 'Inserir 1 acima',\n  'insertRowBelow': 'Inserir 1 abaixo',\n  'instantRendering': 'Renderização instantânea',\n  'italic': 'Itálico',\n  'language': 'Idioma',\n  'line': 'Linha',\n  'link': 'Link',\n  'linkRef': 'Referência de link',\n  'list': 'Lista',\n  'more': 'Mais',\n  'nameEmpty': 'Nome está vazio',\n  'ordered-list': 'Lista ordenada',\n  'outdent': 'Recuar para fora',\n  'outline': 'Esboço',\n  'over': 'sobre',\n  'performanceTip': 'A visualização em tempo real requer ${x}ms, você pode fechá-la',\n  'preview': 'Visualização',\n  'quote': 'Citação',\n  'record': 'Iniciar gravação/Encerrar gravação',\n  'record-tip': 'O dispositivo não suporta gravação',\n  'recording': 'gravando...',\n  'redo': 'Refazer',\n'remove': 'Remover',\n'row': 'Linha',\n'spin': 'Girar',\n'splitView': 'Visão dividida',\n'strike': 'Riscado',\n'table': 'Tabela',\n'textIsNotEmpty': 'Texto (não vazio)',\n'title': 'Título',\n'tooltipText': 'Texto da dica de ferramenta',\n'undo': 'Desfazer',\n'up': 'Para cima',\n'update': 'Atualizar',\n'upload': 'Enviar imagem ou arquivo',\n'uploadError': 'Erro no envio',\n'uploading': 'Enviando...',\n'wysiwyg': 'WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/ru_RU.js",
    "content": "window.VditorI18n = {\n  'alignCenter': 'Выровнять по центру',\n  'alignLeft': 'Выровнять по левому краю',\n  'alignRight': 'Выровнять по правому краю',\n  'alternateText': 'Альтернативный текст',\n  'bold': 'Полужирный текст',\n  'both': 'Редактор с предпросмотром',\n  'check': 'Список задач',\n  'close': 'Закрыть',\n  'code': 'Блок кода',\n  'code-theme': 'Тема отображения блока кода',\n  'column': 'Количество столбцов',\n  'comment': 'Комментарий',\n  'confirm': 'Подтвердить',\n  'content-theme': 'Тема отображения контента',\n  'copied': 'Скопировано',\n  'copy': 'Копировать',\n  'delete-column': 'Удалить столбец',\n  'delete-row': 'Удалить строку',\n  'devtools': 'Граф документа',\n  'down': 'Переместить вниз',\n  'downloadTip': 'Браузер не поддерживает функции загрузки',\n  'edit': 'Редактирование',\n  'edit-mode': 'Переключить режим редактирования',\n  'emoji': 'Смайлы',\n  'export': 'Экспорт',\n  'fileTypeError': 'Ошибка типа файла',\n  'footnoteRef': 'Сноска',\n  'fullscreen': 'Переключиться на полный экран',\n  'generate': 'Генерация',\n  'headings': 'Заголовки',\n  'heading1': 'Заголовок первого уровня',\n  'heading2': 'Заголовок второго уровня',\n  'heading3': 'Трехуровневый заголовок',\n  'heading4': 'Заголовок 4',\n  'heading5': 'Пятиуровневый заголовок',\n  'heading6': 'Шестиуровневый заголовок',\n  'help': 'Помощь',\n  'imageURL': 'Ссылка на картинку',\n  'indent': 'Отступ',\n  'info': 'Информация о редакторе',\n  'inline-code': 'Встроенный код ',\n  'insert-after': 'Вставить линию после этой строки',\n  'insert-before': 'Вставить линию перед этой строкой',\n  'insertColumnLeft': 'Вставить столбец слева',\n  'insertColumnRight': 'Вставить столбец справа',\n  'insertRowAbove': 'Вставить строку сверху',\n  'insertRowBelow': 'Вставить строку снизу',\n  'instantRendering': 'Мгновенный рендеринг',\n  'italic': 'Курсив',\n  'language': 'Синтаксис',\n  'line': 'Линия',\n  'link': 'Ссылка',\n  'linkRef': 'Вставить ссылку',\n  'list': 'Список',\n  'more': 'Дополнительно',\n  'nameEmpty': 'Имя пустое',\n  'ordered-list': 'Упорядоченный список',\n  'outdent': 'Выступ',\n  'outline': 'Содержание',\n  'over': 'Над',\n  'performanceTip': 'Предварительный просмотр в реальном времени требует ${x}мс, вы можете закрыть его',\n  'preview': 'Предпросмотр',\n  'quote': 'Цитата',\n  'record': 'Начать запись/Завершить запись',\n  'record-tip': 'Устройство не поддерживает запись',\n  'recording': 'Запись...',\n  'redo': 'Вернуть',\n  'remove': 'Удалить',\n  'row': 'Количество строк',\n  'spin': 'Прокрутка',\n  'splitView': 'Разделенный просмотр',\n  'strike': 'Зачеркнутый текст',\n  'table': 'Таблица',\n  'textIsNotEmpty': 'Текст (непустой)',\n  'title': 'Заголовок',\n  'tooltipText': 'Текст всплывающей подсказки',\n  'undo': 'Отменить',\n  'up': 'Переместить вверх',\n  'update': 'Обновить',\n  'upload': 'Загрузить изображение или файл',\n  'uploadError': 'Ошибка загрузки',\n  'uploading': 'Загрузка...',\n  'wysiwyg': 'Редактор WYSIWYG',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/sv_SE.js",
    "content": "﻿window.VditorI18n = {\r\n  'alignCenter': 'Centrera',\r\n  'alignLeft': 'Vänsterställ',\r\n  'alignRight': 'Högerställ',\r\n  'alternateText': 'Alternativ text',\r\n  'bold': 'Fet',\r\n  'both': 'editera & granska',\r\n  'check': 'Att göra lista',\r\n  'close': 'Stäng',\r\n  'code': 'Kodblock',\r\n  'code-theme': 'Granska tema för kodblock',\r\n  'column': 'Kolumn',\r\n  'comment': 'Kommentera',\r\n  'confirm': 'Bekräfta',\r\n  'content-theme': 'Granska tema för innehåll',\r\n  'copied': 'Kopierad',\r\n  'copy': 'Kopiera',\r\n  'delete-column': 'Radera Kolumn',\r\n  'delete-row': 'Radera Rad',\r\n  'devtools': 'Utveckingsverktyg',\r\n  'down': 'Ner',\r\n  'downloadTip': 'Webläsaren kan ej hantera funktionen nedladdning',\r\n  'edit': 'Redigera',\r\n  'edit-mode': 'Skfta Redigeringsläge',\r\n  'emoji': 'Emoji',\r\n  'export': 'Exportera',\r\n  'fileTypeError': 'Fel filtyp',\r\n  'footnoteRef': 'Fotnotreferens',\r\n  'fullscreen': 'Skifta fullskärmsläge',\r\n  'generate': 'Genererar',\r\n  'headings': 'Rubriker',\r\n  'heading1': 'Rubriknivå 1',\r\n  'heading2': 'Rubriknivå 2',\r\n  'heading3': 'Rubriknivå 3',\r\n  'heading4': 'Rubriknivå 4',\r\n  'heading5': 'Rubriknivå 5',\r\n  'heading6': 'Rubriknivå 6',\r\n  'help': 'Hjälp',\r\n  'imageURL': 'Bildlänk (URL)',\r\n  'indent': 'Dra in',\r\n  'info': 'Info',\r\n  'inline-code': 'Dra in kod',\r\n  'insert-after': 'Infoga rad efter',\r\n  'insert-before': 'Infoga rad innan',\r\n  'insertColumnLeft': 'Infoga kolumn till vänster',\r\n  'insertColumnRight': 'Infoga kolumn till höger',\r\n  'insertRowAbove': 'Infoga rad ovan',\r\n  'insertRowBelow': 'Infoga rad under',\r\n  'instantRendering': 'Omedelbar Rendering',\r\n  'italic': 'Kursiv',\r\n  'language': 'Språk',\r\n  'line': 'Linje',\r\n  'link': 'Länk',\r\n  'linkRef': 'Länk Ref',\r\n  'list': 'Lista',\r\n  'more': 'Mer',\r\n  'nameEmpty': 'Namn saknas',\r\n  'ordered-list': 'Ordnad Lista',\r\n  'outdent': 'Dra ut',\r\n  'outline': 'Disponera',\r\n  'over': 'över',\r\n  'performanceTip': 'Granskning i realtid kräver ${x}ms, du kan stänga det',\r\n  'preview': 'Granska',\r\n  'quote': 'Citera',\r\n  'record': 'Börja inspelning/Avsluta inspelning',\r\n  'record-tip': 'Enheten stödjer inte inspelning',\r\n  'recording': 'spelar in...',\r\n  'redo': 'Gör om',\r\n  'remove': 'Ta bort',\r\n  'row': 'Rad',\r\n  'spin': 'Snurra',\r\n  'splitView': 'Splittad Vy',\r\n  'strike': 'Genomstruket',\r\n  'table': 'Tabell',\r\n  'textIsNotEmpty': 'text(ej tom)',\r\n  'title': 'Titel',\r\n  'tooltipText': 'Tooltip text',\r\n  'undo': 'Ångra',\r\n  'up': 'Upp',\r\n  'update': 'Uppdatera',\r\n  'upload': 'Ladda upp bild eller fil',\r\n  'uploadError': 'uppladdningsfel',\r\n  'uploading': 'laddar upp...',\r\n  'wysiwyg': 'WYSIWYG',\r\n}\r\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/zh_CN.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '居中',\n  'alignLeft': '居左',\n  'alignRight': '居右',\n  'alternateText': '替代文本',\n  'bold': '粗体',\n  'both': '编辑 & 预览',\n  'check': '任务列表',\n  'close': '关闭',\n  'code': '代码块',\n  'code-theme': '代码块主题预览',\n  'column': '列',\n  'comment': '评论',\n  'confirm': '确定',\n  'content-theme': '内容主题预览',\n  'copied': '已复制',\n  'copy': '复制',\n  'delete-column': '删除列',\n  'delete-row': '删除行',\n  'devtools': '开发者工具',\n  'down': '下',\n  'downloadTip': '该浏览器不支持下载功能',\n  'edit': '编辑',\n  'edit-mode': '切换编辑模式',\n  'emoji': '表情',\n  'export': '导出',\n  'fileTypeError': '文件类型不允许上传，请压缩后再试',\n  'footnoteRef': '脚注标识',\n  'fullscreen': '全屏切换',\n  'generate': '生成中',\n  'headings': '标题',\n  'heading1': '一级标题',\n  'heading2': '二级标题',\n  'heading3': '三级标题',\n  'heading4': '四级标题',\n  'heading5': '五级标题',\n  'heading6': '六级标题',\n  'help': '帮助',\n  'imageURL': '图片地址',\n  'indent': '列表缩进',\n  'info': '关于',\n  'inline-code': '行内代码',\n  'insert-after': '末尾插入行',\n  'insert-before': '起始插入行',\n  'insertColumnLeft': '在左边插入一列',\n  'insertColumnRight': '在右边插入一列',\n  'insertRowAbove': '在上方插入一行',\n  'insertRowBelow': '在下方插入一行',\n  'instantRendering': '即时渲染',\n  'italic': '斜体',\n  'language': '语言',\n  'line': '分隔线',\n  'link': '链接',\n  'linkRef': '引用标识',\n  'list': '无序列表',\n  'more': '更多',\n  'nameEmpty': '文件名不能为空',\n  'ordered-list': '有序列表',\n  'outdent': '列表反向缩进',\n  'outline': '大纲',\n  'over': '超过',\n  'performanceTip': '实时预览需 ${x}ms，可点击编辑 & 预览按钮进行关闭',\n  'preview': '预览',\n  'quote': '引用',\n  'record': '开始录音/结束录音',\n  'record-tip': '该设备不支持录音功能',\n  'recording': '录音中...',\n  'redo': '重做',\n  'remove': '删除',\n  'row': '行',\n  'spin': '旋转',\n  'splitView': '分屏预览',\n  'strike': '删除线',\n  'table': '表格',\n  'textIsNotEmpty': '文本（不能为空）',\n  'title': '标题',\n  'tooltipText': '提示文本',\n  'undo': '撤销',\n  'up': '上',\n  'update': '更新',\n  'upload': '上传图片或文件',\n  'uploadError': '上传错误',\n  'uploading': '上传中...',\n  'wysiwyg': '所见即所得',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/i18n/zh_TW.js",
    "content": "window.VditorI18n = {\n  'alignCenter': '置中',\n  'alignLeft': '置左',\n  'alignRight': '置右',\n  'alternateText': '替代文字',\n  'bold': '粗體',\n  'both': '編輯 & 預覽',\n  'check': '任務列表',\n  'close': '關閉',\n  'code': '代碼塊',\n  'code-theme': '代碼塊主題預覽',\n  'column': '欄',\n  'comment': '評論',\n  'confirm': '確定',\n  'content-theme': '內容主題預覽',\n  'copied': '已複製',\n  'copy': '複製',\n  'delete-column': '刪除欄',\n  'delete-row': '刪除列',\n  'devtools': '開發者工具',\n  'down': '下',\n  'downloadTip': '該瀏覽器不支持下載功能',\n  'edit': '編輯',\n  'edit-mode': '切換編輯模式',\n  'emoji': '表情',\n  'export': '匯出',\n  'fileTypeError': '檔案類型不允許上傳',\n  'footnoteRef': '腳註參考',\n  'fullscreen': '全螢幕切換',\n  'generate': '生成中',\n  'headings': '標題',\n  'heading1': '一級標題',\n  'heading2': '二級標題',\n  'heading3': '三級標題',\n  'heading4': '四級標題',\n  'heading5': '五級標題',\n  'heading6': '六級標題',\n  'help': '幫助',\n  'imageURL': '圖片位址',\n  'indent': '列表縮排',\n  'info': '關於',\n  'inline-code': '行內代碼',\n  'insert-after': '末尾插入列',\n  'insert-before': '起始插入列',\n  'insertColumnLeft': '在左邊插入一欄',\n  'insertColumnRight': '在右邊插入一欄',\n  'insertRowAbove': '在上方插入一行',\n  'insertRowBelow': '在下方插入一行',\n  'instantRendering': '即時渲染',\n  'italic': '斜體',\n  'language': '語言',\n  'line': '分隔線',\n  'link': '連結',\n  'linkRef': '連結參考',\n  'list': '無序列表',\n  'more': '更多',\n  'nameEmpty': '文件名不能為空',\n  'ordered-list': '有序列表',\n  'outdent': '列表反向縮排',\n  'outline': '大綱',\n  'over': '超過',\n  'performanceTip': '即時預覽需 ${x}ms，可點擊編輯 & 預覽按鈕進行關閉',\n  'preview': '預覽',\n  'quote': '引用',\n  'record': '開始錄音/結束錄音',\n  'record-tip': '該設備不支持錄音功能',\n  'recording': '錄音中...',\n  'redo': '重做',\n  'remove': '刪除',\n  'row': '列',\n  'spin': '旋轉',\n  'splitView': '分割預覽',\n  'strike': '刪除線',\n  'table': '表格',\n  'textIsNotEmpty': '文字（不能為空）',\n  'title': '標題',\n  'tooltipText': '提示文字',\n  'undo': '撤銷',\n  'up': '上',\n  'update': '更新',\n  'upload': '上傳圖片或文件',\n  'uploadError': '上傳錯誤',\n  'uploading': '上傳中...',\n  'wysiwyg': '所見即所得',\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/icons/ant.js",
    "content": "document.body.insertAdjacentHTML('afterBegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <defs>\n    <symbol id=\"vditor-icon-comment\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.177 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428zM8.178 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428z\"></path>\n      <path d=\"M29.641 10.251c-1.637-2.234-3.964-3.878-6.663-4.622l-0.086-0.020v0.004c-0.611-0.679-1.3-1.303-2.071-1.861-5.846-4.25-14.053-2.953-18.32 2.893-3.439 4.75-3.293 11.139 0.214 15.678l0.029 4.735c0 0.114 0.018 0.229 0.054 0.336 0.15 0.467 0.581 0.799 1.089 0.799 0.123 0 0.241-0.019 0.351-0.055l-0.008 0.002 4.521-1.425c1.196 0.425 2.432 0.668 3.66 0.736l-0.018 0.014c3.182 2.318 7.353 3.014 11.178 1.75l4.539 1.478c0.114 0.036 0.232 0.057 0.354 0.057 0.632 0 1.143-0.511 1.143-1.143v-4.785c3.146-4.271 3.228-10.174 0.036-14.571zM9.249 24.179l-0.429-0.179-3.535 1.107-0.036-3.714-0.286-0.321c-3.021-3.686-3.221-8.996-0.393-12.892 3.443-4.721 10.042-5.764 14.749-2.357 4.721 3.432 5.767 10.021 2.357 14.713-2.861 3.925-7.982 5.375-12.428 3.643zM27.284 23.572l-0.286 0.357 0.036 3.714-3.5-1.178-0.429 0.179c-2 0.743-4.132 0.803-6.107 0.25l-0.007-0.004c2.782-0.871 5.098-2.559 6.731-4.781l0.026-0.036c2.728-3.761 3.171-8.485 1.586-12.514l0.021 0.014c0.821 0.589 1.575 1.325 2.214 2.214 2.593 3.557 2.446 8.399-0.286 11.785z\"></path>\n      <path d=\"M13.177 12.965c-0.825 0-1.464 0.639-1.464 1.428s0.639 1.428 1.464 1.428c0.754 0 1.393-0.639 1.393-1.428s-0.639-1.428-1.393-1.428z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-mp-wechat\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.927 17.719s-3.040-3.431-2.915-6.942c0.16-4.453 4.738-10.257 11.359-10.257 1.884 0 5.653 0 10.328 5.52 0.249 0.302-15.075-3.84-18.772 11.679z\"></path>\n      <path d=\"M17.477 9.301s3.946-1.298 7.271-0.178c4.222 1.422 8.693 6.826 6.809 13.182-0.533 1.804-1.609 5.413-8.231 8.32-0.356 0.16 10.613-13.351-5.849-21.323z\"></path>\n      <path d=\"M10.944 24.332c-1.938 2.035-3.751 1.742-3.751 1.742l0.578-3.191c-5.235-3.44-6.373-10.328-6.453-10.106-2.444 6.817-0.916 11.377 0.027 13.004 3.315 5.733 11.982 7.351 17.484 3.893 2.969-1.867 4.533-7.057 4.533-7.057-5.298 2.338-9.342 2.569-12.417 1.715z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.785 24.935c1.681 0 3.054-1.392 3.054-3.096 0-2.058-3.054-5.416-3.054-5.416s-3.054 3.358-3.054 5.416c0 1.704 1.373 3.096 3.054 3.096zM11.28 23.239c0.273 0.273 0.715 0.273 0.985 0l9.851-9.847c0.273-0.273 0.273-0.715 0-0.985l-9.847-9.847c-0.023-0.023-0.050-0.046-0.077-0.065l-3.008-3.008c-0.063-0.062-0.15-0.101-0.246-0.101s-0.183 0.039-0.246 0.101l-1.846 1.846c-0.062 0.063-0.101 0.15-0.101 0.246s0.039 0.183 0.101 0.246l2.585 2.585-7.993 7.997c-0.273 0.273-0.273 0.715 0 0.985l9.843 9.847zM11.777 5.984l6.881 6.881h-13.759l6.878-6.881zM31.078 27.693h-30.157c-0.169 0-0.308 0.138-0.308 0.308v3.077c0 0.169 0.138 0.308 0.308 0.308h30.157c0.169 0 0.308-0.138 0.308-0.308v-3.077c0-0.169-0.138-0.308-0.308-0.308z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-quote\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.452 15.517l-30.82-15.452c-0.125-0.063-0.269-0.077-0.405-0.044-0.313 0.077-0.508 0.394-0.431 0.711l3.176 12.976c0.048 0.195 0.192 0.354 0.383 0.416l5.442 1.868-5.438 1.868c-0.192 0.066-0.335 0.221-0.38 0.416l-3.183 12.995c-0.033 0.136-0.018 0.28 0.044 0.402 0.144 0.291 0.497 0.409 0.792 0.265l30.82-15.364c0.114-0.055 0.206-0.151 0.265-0.262 0.144-0.295 0.026-0.648-0.265-0.796zM3.429 27.58l1.853-7.575 10.876-3.732c0.085-0.029 0.155-0.096 0.184-0.184 0.052-0.155-0.029-0.321-0.184-0.376l-10.876-3.729-1.846-7.546 23.138 11.602-23.145 11.54z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-after\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.636 28.045h-31.272c-0.202 0-0.364 0.162-0.364 0.36v2.697c0 0.198 0.162 0.36 0.364 0.36h31.272c0.202 0 0.364-0.162 0.364-0.36v-2.697c0-0.198-0.162-0.36-0.364-0.36zM15.717 23.056c0.066 0.084 0.169 0.138 0.283 0.138s0.217-0.054 0.283-0.137l0.001-0.001 5.034-6.369c0.184-0.234 0.018-0.58-0.283-0.58h-3.33v-15.209c0-0.198-0.162-0.36-0.36-0.36h-2.697c-0.198 0-0.36 0.162-0.36 0.36v15.204h-3.321c-0.301 0-0.467 0.346-0.283 0.58l5.034 6.373z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-before\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.636 0.539h-31.272c-0.202 0-0.364 0.162-0.364 0.36v2.697c0 0.198 0.162 0.36 0.364 0.36h31.272c0.202 0 0.364-0.162 0.364-0.36v-2.697c0-0.198-0.162-0.36-0.364-0.36zM16.283 8.944c-0.066-0.084-0.169-0.138-0.283-0.138s-0.217 0.054-0.283 0.137l-0.001 0.001-5.034 6.369c-0.048 0.060-0.076 0.137-0.076 0.221 0 0.198 0.161 0.359 0.359 0.359 0 0 0.001 0 0.001 0h3.321v15.209c0 0.198 0.162 0.36 0.36 0.36h2.697c0.198 0 0.36-0.162 0.36-0.36v-15.204h3.33c0.301 0 0.467-0.346 0.283-0.58l-5.034-6.373z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-headings\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.889 14.222h14.222v-12.444c0-0.982 0.796-1.778 1.778-1.778s1.778 0.796 1.778 1.778v0 28.444c0 0.982-0.796 1.778-1.778 1.778s-1.778-0.796-1.778-1.778v0-12.444h-14.222v12.444c0 0.982-0.796 1.778-1.778 1.778s-1.778-0.796-1.778-1.778v0-28.444c0-0.982 0.796-1.778 1.778-1.778s1.778 0.796 1.778 1.778v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-line\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 14.56h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.862 16.604c0.27-0.583 0.144-1.297-0.358-1.749l-6.422-5.782c-0.617-0.555-1.567-0.506-2.122 0.111s-0.506 1.567 0.111 2.122l5.206 4.688-5.237 4.716c-0.617 0.555-0.667 1.506-0.111 2.122s1.506 0.667 2.122 0.111l6.422-5.782c0.177-0.159 0.307-0.351 0.39-0.557zM3.725 15.981l5.206-4.688c0.617-0.555 0.667-1.506 0.111-2.122s-1.506-0.667-2.122-0.111l-6.422 5.782c-0.502 0.452-0.629 1.166-0.358 1.749 0.083 0.207 0.213 0.398 0.39 0.557l6.422 5.782c0.617 0.555 1.567 0.506 2.122-0.111s0.506-1.567-0.111-2.122l-5.237-4.716zM20.305 4.173c0.78 0.284 1.182 1.146 0.898 1.926l-7.581 20.83c-0.284 0.78-1.146 1.182-1.926 0.898s-1.182-1.146-0.898-1.926l7.581-20.83c0.284-0.78 1.146-1.182 1.926-0.898z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-inline-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.862 16.604c0.27-0.583 0.144-1.297-0.358-1.749l-6.422-5.782c-0.617-0.555-1.567-0.506-2.122 0.111v0 0c-0.555 0.617-0.506 1.567 0.111 2.122l5.206 4.688-5.237 4.716c-0.617 0.555-0.667 1.506-0.111 2.122s1.506 0.667 2.122 0.111l6.422-5.782c0.177-0.159 0.307-0.351 0.39-0.557zM3.725 15.981l5.206-4.688c0.617-0.555 0.667-1.506 0.111-2.122v0 0c-0.555-0.617-1.506-0.667-2.122-0.111v0l-6.422 5.782c-0.502 0.452-0.629 1.166-0.358 1.749 0.083 0.207 0.213 0.398 0.39 0.557l6.422 5.782c0.617 0.555 1.567 0.506 2.122-0.111s0.506-1.567-0.111-2.122l-5.237-4.716z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-both\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.858 22.232l-0.007-0.007c-1.575-3.332-4.014-5.047-7.261-5.047s-5.686 1.718-7.265 5.047v0.004c-0.193 0.411-0.193 0.889 0 1.3 1.579 3.329 4.018 5.043 7.265 5.043s5.686-1.718 7.265-5.047c0.193-0.411 0.193-0.886 0.004-1.293zM24.59 26.286c-2.218 0-3.836-1.071-5.040-3.411 1.2-2.339 2.822-3.411 5.040-3.411s3.836 1.071 5.040 3.411c-1.2 2.339-2.822 3.411-5.040 3.411z\"></path>\n      <path d=\"M22.607 22.893c0 1.105 0.895 2 2 2s2-0.895 2-2v0c0-1.105-0.895-2-2-2s-2 0.895-2 2v0z\"></path>\n      <path d=\"M2.571 6h25.144v9.036h2.572v-10.465c0-0.632-0.511-1.143-1.143-1.143h-28.001c-0.632 0-1.143 0.511-1.143 1.143v18.572c0 0.632 0.511 1.143 1.143 1.143h12.572v-2.572h-11.143v-15.715z\"></path>\n      <path d=\"M23.604 9.789l-1.314-1.314c-0.111-0.111-0.293-0.111-0.404 0l-6.565 6.572-3.075-3.079c-0.111-0.111-0.293-0.111-0.404 0l-5.154 5.154c-0.111 0.111-0.111 0.293 0 0.404l1.314 1.314c0.111 0.111 0.293 0.111 0.404 0l3.636-3.636 3.075 3.079c0.111 0.111 0.293 0.111 0.404 0l8.082-8.090c0.114-0.111 0.114-0.293 0-0.404z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.249 0.637h-8.207c-0.693 0-1.309 0.474-1.473 1.166-0.497 2.102-2.38 3.61-4.569 3.61s-4.072-1.508-4.569-3.61c-0.161-0.673-0.758-1.166-1.47-1.166-0.001 0-0.002 0-0.003 0h-8.207c-0.967 0-1.751 0.784-1.751 1.751v0 10.030c0 0.967 0.784 1.751 1.751 1.751v0h2.985v15.443c0 0.967 0.784 1.751 1.751 1.751v0h19.025c0.967 0 1.751-0.784 1.751-1.751v0-15.443h2.985c0.967 0 1.751-0.784 1.751-1.751v0-10.030c0-0.967-0.784-1.751-1.751-1.751v0zM29.134 11.303h-4.736v17.194h-16.796v-17.194h-4.736v-7.801h6.101c1.122 2.834 3.881 4.776 7.033 4.776s5.91-1.942 7.033-4.776h6.102v7.801z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-resize\" viewBox=\"0 0 128 32\">\n      <path d=\"M1.28 0c-0.704 0-1.28 0.163-1.28 0.365 0 0.291 0 2.618 0 2.909 0 0.198 0.576 0.362 1.28 0.362 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.362 0-0.291 0-2.618 0-2.909 0-0.202-0.576-0.365-1.28-0.365-25.088 0-112.896 0-125.44 0zM1.28 28.365c-0.704 0-1.28 0.163-1.28 0.362 0 0.291 0 2.618 0 2.909 0 0.202 0.576 0.365 1.28 0.365 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.365 0-0.291 0-2.618 0-2.909 0-0.198-0.576-0.362-1.28-0.362-25.088 0-112.896 0-125.44 0zM1.28 14.182c-0.704 0-1.28 0.163-1.28 0.362 0 0.291 0 2.621 0 2.912 0 0.198 0.576 0.362 1.28 0.362 12.544 0 112.896 0 125.44 0 0.704 0 1.28-0.163 1.28-0.362 0-0.291 0-2.621 0-2.912 0-0.198-0.576-0.362-1.28-0.362-25.088 0-112.896 0-125.44 0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-export\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.399 26.042h-2.202c-0.172 0-0.315 0.143-0.315 0.315v2.529h-25.769v-25.773h25.773v2.529c0 0.172 0.143 0.315 0.315 0.315h2.202c0.172 0 0.315-0.139 0.315-0.315v-4.1c0-0.696-0.561-1.256-1.256-1.256h-28.92c-0.696 0-1.256 0.561-1.256 1.256v28.916c0 0.696 0.561 1.256 1.256 1.256h28.916c0.696 0 1.256-0.561 1.256-1.256v-4.1c0-0.176-0.143-0.315-0.315-0.315zM32.16 15.742l-5.807-4.583c-0.217-0.172-0.532-0.016-0.532 0.258v3.11h-12.85c-0.18 0-0.327 0.147-0.327 0.327v2.292c0 0.18 0.147 0.327 0.327 0.327h12.85v3.11c0 0.274 0.319 0.43 0.532 0.258l5.807-4.583c0.077-0.060 0.126-0.153 0.126-0.258s-0.049-0.197-0.125-0.257l-0.001-0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-copy\" viewBox=\"0 0 32 32\">\n      <path d=\"M27.429 0h-19.143c-0.157 0-0.286 0.129-0.286 0.286v2c0 0.157 0.129 0.286 0.286 0.286h17.714v24.571c0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286v-26c0-0.632-0.511-1.143-1.143-1.143zM22.857 4.571h-18.286c-0.632 0-1.143 0.511-1.143 1.143v18.954c0 0.304 0.121 0.593 0.336 0.807l6.189 6.189c0.079 0.079 0.168 0.143 0.264 0.196v0.068h0.15c0.125 0.046 0.257 0.071 0.393 0.071h12.096c0.632 0 1.143-0.511 1.143-1.143v-25.143c0-0.632-0.511-1.143-1.143-1.143zM10.214 28.293l-3.075-3.079h3.075v3.079zM21.429 29.429h-8.929v-5.071c0-0.789-0.639-1.429-1.429-1.429h-5.071v-15.786h15.429v22.286z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-pause\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.095 0h3.81v32h-3.81zM25.524 0h-3.048c-0.21 0-0.381 0.171-0.381 0.381v31.238c0 0.21 0.171 0.381 0.381 0.381h3.048c0.21 0 0.381-0.171 0.381-0.381v-31.238c0-0.21-0.171-0.381-0.381-0.381z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-preview\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.788 15.053c-3.479-7.329-8.738-11.017-15.788-11.017-7.054 0-12.309 3.688-15.788 11.021-0.134 0.277-0.212 0.602-0.212 0.945s0.078 0.668 0.218 0.958l-0.006-0.013c3.479 7.329 8.738 11.017 15.788 11.017 7.054 0 12.309-3.688 15.788-11.021 0.283-0.595 0.283-1.284 0-1.89zM16 25.322c-5.92 0-10.254-3.002-13.311-9.322 3.057-6.32 7.391-9.322 13.311-9.322s10.254 3.002 13.311 9.322c-3.053 6.32-7.388 9.322-13.311 9.322zM15.853 9.541c-3.567 0-6.459 2.892-6.459 6.459s2.892 6.459 6.459 6.459 6.459-2.892 6.459-6.459-2.892-6.459-6.459-6.459zM15.853 20.11c-2.272 0-4.11-1.839-4.11-4.11s1.839-4.11 4.11-4.11 4.11 1.839 4.11 4.11-1.839 4.11-4.11 4.11z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-edit\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 16h-2.24c-0.176 0-0.32 0.144-0.32 0.32v12.8h-26.239v-26.239h12.8c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-14.4c-0.708 0-1.28 0.572-1.28 1.28v29.439c0 0.708 0.572 1.28 1.28 1.28h29.439c0.708 0 1.28-0.572 1.28-1.28v-14.4c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n      <path d=\"M9.756 16.916l-0.076 4.756c-0.004 0.356 0.284 0.648 0.64 0.648h0.016l4.72-0.116c0.080-0.004 0.16-0.036 0.216-0.092l16.635-16.599c0.124-0.124 0.124-0.328 0-0.452l-4.972-4.968c-0.064-0.064-0.144-0.092-0.228-0.092s-0.164 0.032-0.228 0.092l-16.631 16.599c-0.056 0.058-0.091 0.137-0.092 0.224v0zM12.296 17.86l14.412-14.38 1.808 1.804-14.42 14.388-1.828 0.044 0.028-1.856z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-info\" viewBox=\"0 0 32 32\">\n      <path d=\"M13.124 3.056c0 1.589 1.288 2.876 2.876 2.876s2.876-1.288 2.876-2.876v0c0-1.589-1.288-2.876-2.876-2.876s-2.876 1.288-2.876 2.876v0zM17.438 10.607h-2.876c-0.198 0-0.36 0.162-0.36 0.36v20.854c0 0.198 0.162 0.36 0.36 0.36h2.876c0.198 0 0.36-0.162 0.36-0.36v-20.854c0-0.198-0.162-0.36-0.36-0.36z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-help\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.419 6.445c-0.579-1.265-1.402-2.402-2.452-3.374-2.133-1.98-4.965-3.072-7.967-3.072s-5.834 1.091-7.967 3.068c-1.050 0.976-1.873 2.109-2.452 3.378-0.604 1.323-0.91 2.725-0.91 4.172v1.116c0 0.256 0.207 0.463 0.463 0.463h2.233c0.256 0 0.463-0.207 0.463-0.463v-1.116c0-4.114 3.663-7.458 8.169-7.458s8.169 3.345 8.169 7.458c0 1.687-0.599 3.274-1.736 4.597-1.125 1.311-2.712 2.249-4.469 2.646-1.005 0.227-1.91 0.794-2.551 1.604-0.615 0.772-0.987 1.76-0.988 2.836v1.299c0 0.256 0.207 0.463 0.463 0.463h2.233c0.256 0 0.463-0.207 0.463-0.463v-1.298c0-0.649 0.451-1.22 1.075-1.36 2.414-0.546 4.606-1.848 6.173-3.667 0.79-0.922 1.406-1.947 1.832-3.059 0.442-1.153 0.666-2.365 0.666-3.597 0-1.447-0.306-2.853-0.91-4.172zM16 27.369c-1.278 0-2.315 1.038-2.315 2.315s1.038 2.315 2.315 2.315 2.315-1.038 2.315-2.315-1.038-2.315-2.315-2.315z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-strike\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.714 14.643h-13.646c-0.357-0.071-0.732-0.143-1.129-0.214-0.568-0.104-0.793-0.146-1.1-0.207-1.832-0.357-2.936-0.714-3.814-1.221-1.254-0.732-1.864-1.725-1.864-3.039 0-1.321 0.543-2.418 1.571-3.179 1.014-0.75 2.457-1.146 4.171-1.146 1.957 0 3.468 0.514 4.493 1.529 0.521 0.514 0.904 1.146 1.136 1.879 0.046 0.146 0.1 0.357 0.154 0.636 0.032 0.171 0.186 0.293 0.354 0.293h2.6c0.2 0 0.361-0.164 0.361-0.361v-0.036c-0.025-0.243-0.046-0.432-0.071-0.571-0.261-1.554-1-2.918-2.132-3.939-1.586-1.446-3.918-2.207-6.739-2.207-2.582 0-4.907 0.646-6.546 1.818-0.914 0.657-1.621 1.471-2.093 2.418-0.482 0.968-0.725 2.086-0.725 3.318 0 1.054 0.204 1.946 0.618 2.732 0.296 0.561 0.7 1.054 1.218 1.5h-8.243c-0.157 0-0.286 0.129-0.286 0.286v2.143c0 0.157 0.129 0.286 0.286 0.286h15.471c0.075 0.014 0.139 0.029 0.211 0.043 1.104 0.221 1.768 0.371 2.379 0.543 0.821 0.232 1.45 0.475 1.971 0.768 1.279 0.721 1.904 1.757 1.904 3.179 0 1.261-0.554 2.386-1.557 3.171-1.089 0.854-2.7 1.3-4.661 1.3-1.561 0-2.882-0.304-3.936-0.893-1.039-0.582-1.754-1.421-2.132-2.482-0.029-0.079-0.061-0.186-0.096-0.321-0.043-0.157-0.189-0.268-0.346-0.268h-2.846c-0.2 0-0.361 0.164-0.361 0.361v0.036c0.007 0.082 0.014 0.15 0.021 0.204 0.232 1.743 1.082 3.171 2.525 4.243 1.682 1.243 4.050 1.9 6.85 1.9 3.007 0 5.529-0.707 7.293-2.046 0.893-0.675 1.579-1.507 2.039-2.464 0.464-0.968 0.704-2.068 0.704-3.268 0-1.136-0.207-2.086-0.636-2.907-0.207-0.4-0.468-0.768-0.779-1.1h7.411c0.157 0 0.286-0.129 0.286-0.286v-2.143c-0.002-0.156-0.129-0.282-0.286-0.282 0 0 0 0-0 0v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-contract\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.9 2.040l-1.94-1.94c-0.062-0.062-0.148-0.1-0.243-0.1s-0.181 0.038-0.243 0.1l-6.774 6.778-2.352-2.353c-0.062-0.062-0.147-0.1-0.241-0.1-0.175 0-0.319 0.131-0.339 0.3l-0 0.002-1.011 8.133c-0.026 0.224 0.159 0.409 0.383 0.383l8.137-1.011c0.284-0.034 0.4-0.378 0.202-0.581l-2.352-2.352 6.778-6.778c0.129-0.129 0.129-0.348-0.004-0.482zM12.86 18.757l-8.137 1.011c-0.284 0.034-0.4 0.383-0.202 0.581l2.353 2.352-6.774 6.774c-0.062 0.062-0.1 0.148-0.1 0.243s0.038 0.181 0.1 0.243l1.94 1.94c0.133 0.133 0.353 0.133 0.486 0l6.778-6.778 2.352 2.352c0.062 0.062 0.147 0.1 0.241 0.1 0.175 0 0.319-0.131 0.339-0.3l0-0.002 1.006-8.133c0.002-0.014 0.003-0.030 0.003-0.046 0-0.188-0.152-0.34-0.34-0.34-0.016 0-0.032 0.001-0.048 0.003l0.002-0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-record\" viewBox=\"0 0 32 32\">\n      <path d=\"M27.786 13.929c0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 5.011-4.061 9.071-9.071 9.071s-9.071-4.061-9.071-9.071c0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 6.025 4.521 10.996 10.357 11.7v3.657h-5.189c-0.489 0-0.882 0.511-0.882 1.143v1.286c0 0.157 0.1 0.286 0.221 0.286h14.557c0.121 0 0.221-0.129 0.221-0.286v-1.286c0-0.632-0.393-1.143-0.882-1.143h-5.332v-3.639c5.904-0.643 10.5-5.643 10.5-11.718zM16 20c3.354 0 6.071-2.686 6.071-6v-8c0-3.314-2.718-6-6.071-6s-6.071 2.686-6.071 6v8c0 3.314 2.718 6 6.071 6zM12.643 6c0-1.807 1.496-3.286 3.357-3.286s3.357 1.479 3.357 3.286v8c0 1.807-1.496 3.286-3.357 3.286s-3.357-1.479-3.357-3.286v-8z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bold\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.078 14.67c1.461-1.522 2.357-3.578 2.357-5.839v-0.443c0-4.678-3.83-8.474-8.552-8.474h-12.865c-0.657 0-1.191 0.535-1.191 1.191v29.526c0 0.709 0.574 1.283 1.283 1.283h13.857c5.087 0 9.209-4.096 9.209-9.152v-0.478c0-3.174-1.626-5.97-4.096-7.613zM8 4.087h9.77c2.483 0 4.491 1.93 4.491 4.317v0.413c0 2.383-2.013 4.317-4.491 4.317h-9.77v-9.048zM23.939 22.757c0 2.735-2.248 4.952-5.022 4.952h-10.917v-10.374h10.917c2.774 0 5.022 2.217 5.022 4.952v0.47z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bug\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.571 7.714h2c0.157 0 0.286-0.129 0.286-0.286 0-1.011 0.211-1.9 0.611-2.625 0.379-0.693 0.929-1.243 1.621-1.621 0.729-0.396 1.614-0.611 2.625-0.611h0.571c1.011 0 1.9 0.211 2.625 0.611 0.693 0.379 1.243 0.929 1.621 1.621 0.396 0.729 0.611 1.614 0.611 2.625 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-1.429-0.314-2.739-0.925-3.861-0.614-1.125-1.518-2.029-2.643-2.643-1.121-0.611-2.432-0.925-3.861-0.925h-0.571c-1.429 0-2.739 0.314-3.861 0.925-1.125 0.614-2.029 1.518-2.643 2.643-0.611 1.121-0.925 2.432-0.925 3.861 0 0.157 0.129 0.286 0.286 0.286z\"></path>\n      <path d=\"M31.286 16h-5.286v-3.571c2.743 0 4.964-2.221 4.964-4.964 0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 1.243-1.007 2.25-2.25 2.25h-20c-1.243 0-2.25-1.007-2.25-2.25 0-0.157-0.129-0.286-0.286-0.286h-2.143c-0.157 0-0.286 0.129-0.286 0.286 0 2.743 2.221 4.964 4.964 4.964v3.571h-5.286c-0.157 0-0.286 0.129-0.286 0.286v2c0 0.157 0.129 0.286 0.286 0.286h5.286v3.429c0 0.232 0.007 0.464 0.025 0.689-2.45 1.046-4.168 3.479-4.168 6.311 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-1.579 0.854-2.961 2.129-3.704 0.214 0.614 0.486 1.2 0.811 1.75 0.868 1.482 2.107 2.721 3.589 3.589s3.204 1.364 5.043 1.364 3.564-0.496 5.046-1.364c1.482-0.868 2.721-2.107 3.589-3.589 0.325-0.554 0.596-1.139 0.811-1.75 1.271 0.743 2.125 2.125 2.125 3.704 0 0.157 0.129 0.286 0.286 0.286h2c0.157 0 0.286-0.129 0.286-0.286 0-2.832-1.718-5.264-4.168-6.311 0.014-0.229 0.025-0.457 0.025-0.689v-3.429h5.286c0.157 0 0.286-0.129 0.286-0.286v-2c0-0.157-0.129-0.286-0.286-0.286zM23.286 22c0 1.314-0.346 2.571-0.993 3.675-0.632 1.082-1.536 1.986-2.618 2.618-1.104 0.646-2.361 0.993-3.675 0.993s-2.571-0.346-3.675-0.993c-1.082-0.632-1.986-1.536-2.618-2.618-0.646-1.104-0.993-2.361-0.993-3.675v-9.571h14.571v9.571z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-play\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.263 15.159l-17.308-14.927c-0.645-0.555-1.591-0.055-1.591 0.841v29.853c0 0.895 0.945 1.395 1.591 0.841l17.308-14.927c0.495-0.427 0.495-1.255 0-1.682z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-check\" viewBox=\"0 0 32 32\">\n      <path d=\"M12.844 21.828c0.234 0.323 0.61 0.531 1.034 0.531s0.8-0.208 1.031-0.527l0.003-0.004 8.424-11.68c0.152-0.212 0-0.508-0.26-0.508h-1.876c-0.408 0-0.796 0.196-1.036 0.532l-6.284 8.72-2.848-3.952c-0.24-0.332-0.624-0.532-1.036-0.532h-1.876c-0.26 0-0.412 0.296-0.26 0.508l4.984 6.912z\"></path>\n      <path d=\"M30.72 0h-29.44c-0.708 0-1.28 0.572-1.28 1.28v29.44c0 0.708 0.572 1.28 1.28 1.28h29.44c0.708 0 1.28-0.572 1.28-1.28v-29.44c0-0.708-0.572-1.28-1.28-1.28zM29.12 29.12h-26.24v-26.24h26.24v26.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-upload\" viewBox=\"0 0 32 32\">\n      <path d=\"M16.225 14.107c-0.053-0.067-0.134-0.11-0.225-0.11s-0.172 0.043-0.225 0.109l-0 0.001-4 5.061c-0.038 0.048-0.061 0.109-0.061 0.176 0 0.157 0.128 0.285 0.285 0.285 0 0 0 0 0.001 0h2.639v8.657c0 0.157 0.129 0.286 0.286 0.286h2.143c0.157 0 0.286-0.129 0.286-0.286v-8.654h2.646c0.239 0 0.371-0.275 0.225-0.461l-4-5.064z\"></path>\n      <path d=\"M26.693 10.811c-1.636-4.314-5.804-7.382-10.686-7.382s-9.050 3.064-10.686 7.379c-3.061 0.804-5.321 3.593-5.321 6.907 0 3.946 3.196 7.143 7.139 7.143h1.432c0.157 0 0.286-0.129 0.286-0.286v-2.143c0-0.157-0.129-0.286-0.286-0.286h-1.432c-1.204 0-2.336-0.479-3.179-1.346-0.839-0.864-1.286-2.029-1.246-3.236 0.032-0.943 0.354-1.829 0.936-2.575 0.596-0.761 1.432-1.314 2.361-1.561l1.354-0.354 0.496-1.307c0.307-0.814 0.736-1.575 1.275-2.264 0.537-0.685 1.154-1.273 1.844-1.764l0.027-0.018c1.468-1.032 3.196-1.579 5-1.579s3.532 0.546 5 1.579c0.711 0.5 1.339 1.1 1.871 1.782 0.539 0.689 0.968 1.454 1.275 2.264l0.493 1.304 1.35 0.357c1.936 0.521 3.289 2.282 3.289 4.289 0 1.182-0.461 2.296-1.296 3.132-0.796 0.801-1.899 1.296-3.117 1.296-0.004 0-0.008 0-0.012 0h-1.431c-0.157 0-0.286 0.129-0.286 0.286v2.143c0 0.157 0.129 0.286 0.286 0.286h1.432c3.943 0 7.139-3.196 7.139-7.143 0-3.311-2.254-6.096-5.307-6.904z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-trashcan\" viewBox=\"0 0 32 32\">\n      <path d=\"M9.92 2.88h-0.32c0.176 0 0.32-0.144 0.32-0.32v0.32h12.16v-0.32c0 0.176 0.144 0.32 0.32 0.32h-0.32v2.88h2.88v-3.2c0-1.412-1.148-2.56-2.56-2.56h-12.8c-1.412 0-2.56 1.148-2.56 2.56v3.2h2.88v-2.88zM30.080 5.76h-28.16c-0.708 0-1.28 0.572-1.28 1.28v1.28c0 0.176 0.144 0.32 0.32 0.32h2.416l0.988 20.92c0.064 1.364 1.192 2.44 2.556 2.44h18.16c1.368 0 2.492-1.072 2.556-2.44l0.988-20.92h2.416c0.176 0 0.32-0.144 0.32-0.32v-1.28c0-0.708-0.572-1.28-1.28-1.28zM24.772 29.12h-17.544l-0.968-20.48h19.48l-0.968 20.48z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-more\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0zM13.333 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0zM26.667 15.952c0 1.473 1.194 2.667 2.667 2.667s2.667-1.194 2.667-2.667v0c0-1.473-1.194-2.667-2.667-2.667s-2.667 1.194-2.667 2.667v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-fullscreen\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.592 0.003l-8.601 1.068c-0.3 0.036-0.423 0.4-0.214 0.614l2.487 2.487-6.978 6.978c-0.065 0.066-0.106 0.157-0.106 0.257s0.040 0.191 0.106 0.257l2.050 2.050c0.141 0.141 0.373 0.141 0.514 0l6.983-6.983 2.487 2.487c0.065 0.065 0.155 0.106 0.255 0.106 0.185 0 0.337-0.139 0.358-0.318l0-0.002 1.064-8.596c0.002-0.015 0.003-0.032 0.003-0.049 0-0.198-0.161-0.359-0.359-0.359-0.017 0-0.034 0.001-0.051 0.004l0.002-0zM11.663 18.287c-0.066-0.065-0.157-0.106-0.257-0.106s-0.191 0.040-0.257 0.106l-6.978 6.982-2.487-2.487c-0.065-0.065-0.155-0.106-0.255-0.106-0.185 0-0.337 0.139-0.358 0.318l-0 0.002-1.068 8.596c-0.027 0.236 0.168 0.432 0.405 0.405l8.601-1.068c0.3-0.036 0.423-0.4 0.214-0.614l-2.487-2.487 6.983-6.983c0.141-0.141 0.141-0.373 0-0.514l-2.055-2.046z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-emoji\" viewBox=\"0 0 32 32\">\n      <path d=\"M8 12.75c0 0.947 0.768 1.714 1.714 1.714s1.714-0.768 1.714-1.714v0c0-0.947-0.768-1.714-1.714-1.714s-1.714 0.768-1.714 1.714v0zM20.571 12.75c0 0.947 0.767 1.714 1.714 1.714s1.714-0.768 1.714-1.714v0c0-0.947-0.767-1.714-1.714-1.714s-1.714 0.768-1.714 1.714v0zM16 0c-8.836 0-16 7.164-16 16s7.164 16 16 16 16-7.164 16-16-7.164-16-16-16zM25.393 25.393c-1.221 1.221-2.643 2.179-4.225 2.85-1.632 0.693-3.371 1.043-5.168 1.043s-3.536-0.35-5.171-1.043c-1.643-0.704-3.045-1.666-4.225-2.85l-0-0c-1.221-1.221-2.179-2.643-2.85-4.225-0.689-1.632-1.039-3.371-1.039-5.168s0.35-3.536 1.043-5.171c0.704-1.643 1.666-3.045 2.85-4.225l0-0c1.221-1.221 2.643-2.179 4.225-2.85 1.632-0.689 3.371-1.039 5.168-1.039s3.536 0.35 5.171 1.043c1.643 0.704 3.045 1.666 4.225 2.85l0 0c1.221 1.221 2.179 2.643 2.85 4.225 0.689 1.632 1.039 3.371 1.039 5.168s-0.35 3.536-1.043 5.171c-0.703 1.642-1.665 3.043-2.849 4.221l-0.001 0.001zM21.429 16.75h-1.718c-0.15 0-0.279 0.114-0.289 0.264-0.136 1.768-1.618 3.164-3.421 3.164s-3.289-1.396-3.421-3.164c-0.011-0.15-0.139-0.264-0.289-0.264h-1.718c-0 0-0 0-0 0-0.158 0-0.286 0.128-0.286 0.286 0 0.005 0 0.010 0 0.015l-0-0.001c0.157 3.011 2.661 5.414 5.714 5.414s5.557-2.404 5.714-5.414c0-0.004 0-0.009 0-0.014 0-0.158-0.128-0.286-0.286-0.286-0 0-0 0-0 0h0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-center\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.080 4.72h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM25.92 21.68c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-left\" viewBox=\"0 0 32 32\">\n      <path d=\"M0.32 4.72h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM0.32 21.68h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-right\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.68 1.84h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 18.8h-19.84c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h19.84c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.28h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 10.32h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M21.563 21.195c-0.056-0.048-0.128-0.076-0.204-0.076h-2.188c-0.096 0-0.184 0.044-0.244 0.116l-2.928 3.512-2.924-3.512c-0.060-0.072-0.152-0.116-0.244-0.116h-2.192c-0.076 0-0.148 0.028-0.204 0.076-0.136 0.112-0.156 0.316-0.040 0.452l4.091 4.911-4.096 4.915c-0.112 0.136-0.096 0.336 0.040 0.452 0.056 0.048 0.128 0.076 0.204 0.076h2.188c0.096 0 0.184-0.044 0.244-0.116l2.924-3.512 2.924 3.512c0.060 0.072 0.152 0.116 0.244 0.116h2.2c0.076 0 0.148-0.028 0.204-0.076 0.136-0.112 0.156-0.316 0.040-0.452l-4.091-4.915 4.096-4.915c0.112-0.136 0.092-0.336-0.044-0.448zM14.4 17.28h3.2c0.176 0 0.32-0.144 0.32-0.32v-16.638c0-0.176-0.144-0.32-0.32-0.32h-3.2c-0.176 0-0.32 0.144-0.32 0.32v16.638c0 0.176 0.144 0.32 0.32 0.32zM9.521 10.961h-6.639v-9.999c0-0.132-0.108-0.24-0.24-0.24h-2.4c-0.132 0-0.24 0.108-0.24 0.24v11.679c0 0.664 0.536 1.2 1.2 1.2h8.319c0.132 0 0.24-0.108 0.24-0.24v-2.4c0-0.132-0.108-0.24-0.24-0.24zM31.758 0.722h-2.4c-0.132 0-0.24 0.108-0.24 0.24v9.999h-6.639c-0.132 0-0.24 0.108-0.24 0.24v2.4c0 0.132 0.108 0.24 0.24 0.24h8.319c0.664 0 1.2-0.536 1.2-1.2v-11.679c0-0.132-0.108-0.24-0.24-0.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.129 16l4.035-4.843c0.11-0.134 0.095-0.331-0.039-0.445-0.055-0.047-0.126-0.075-0.201-0.075h-2.156c-0.095 0-0.181 0.043-0.24 0.114l-2.888 3.464-2.881-3.46c-0.059-0.071-0.15-0.114-0.24-0.114h-2.159c-0.075 0-0.146 0.028-0.201 0.075-0.134 0.11-0.154 0.311-0.039 0.445l4.031 4.839-4.035 4.843c-0.11 0.134-0.095 0.331 0.039 0.445 0.055 0.047 0.126 0.075 0.201 0.075h2.156c0.095 0 0.181-0.043 0.24-0.114l2.881-3.46 2.881 3.46c0.059 0.071 0.15 0.114 0.24 0.114h2.167c0.075 0 0.146-0.028 0.201-0.075 0.134-0.11 0.154-0.311 0.039-0.445l-4.031-4.843zM16.946 14.108h-16.393c-0.173 0-0.315 0.142-0.315 0.315v3.153c0 0.173 0.142 0.315 0.315 0.315h16.393c0.173 0 0.315-0.142 0.315-0.315v-3.152c0-0.173-0.142-0.315-0.315-0.315zM13.636 22.147h-2.364c-0.13 0-0.236 0.106-0.236 0.236v6.541h-9.852c-0.13 0-0.236 0.106-0.236 0.236v2.364c0 0.13 0.106 0.236 0.236 0.236h11.507c0.654 0 1.182-0.528 1.182-1.182v-8.197c0-0.13-0.106-0.236-0.236-0.236zM1.183 3.075h9.852v6.541c0 0.13 0.106 0.236 0.236 0.236h2.364c0.13 0 0.236-0.106 0.236-0.236v-8.197c0-0.654-0.528-1.182-1.182-1.182h-11.507c-0.13 0-0.236 0.106-0.236 0.236v2.364c0 0.13 0.106 0.236 0.236 0.236z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-down\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.663 5.221h-3.158c-0.215 0-0.417 0.105-0.543 0.278l-11.962 16.489-11.962-16.489c-0.126-0.173-0.328-0.278-0.543-0.278h-3.158c-0.274 0-0.434 0.312-0.274 0.535l14.847 20.468c0.539 0.741 1.642 0.741 2.177 0l14.847-20.468c0.164-0.223 0.004-0.535-0.269-0.535z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.668 23.040h-29.336c-0.736 0-1.332-0.572-1.332-1.28v-18.56c0-0.708 0.596-1.28 1.332-1.28h29.332c0.736 0 1.332 0.572 1.332 1.28v18.56c0.004 0.708-0.592 1.28-1.328 1.28zM9.92 4.8h-7.040v6.4h7.040v-6.4zM9.92 13.76h-7.040v6.4h7.040v-6.4zM19.52 4.8h-7.040v6.4h7.040v-6.4zM19.52 13.76h-7.040v6.4h7.040v-6.4zM29.12 4.8h-7.040v6.4h7.040v-6.4zM29.12 13.76h-7.040v6.4h7.040v-6.4zM31.68 30.080h-31.36c-0.176 0-0.32-0.144-0.32-0.32v-3.2c0-0.176 0.144-0.32 0.32-0.32h31.36c0.176 0 0.32 0.144 0.32 0.32v3.2c0 0.176-0.144 0.32-0.32 0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-rowb\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.668 8.96h-29.336c-0.736 0-1.332 0.572-1.332 1.28v18.56c0 0.708 0.596 1.28 1.332 1.28h29.332c0.736 0 1.332-0.572 1.332-1.28v-18.56c0.004-0.708-0.592-1.28-1.328-1.28zM9.92 27.2h-7.040v-6.4h7.040v6.4zM9.92 18.24h-7.040v-6.4h7.040v6.4zM19.52 27.2h-7.040v-6.4h7.040v6.4zM19.52 18.24h-7.040v-6.4h7.040v6.4zM29.12 27.2h-7.040v-6.4h7.040v6.4zM29.12 18.24h-7.040v-6.4h7.040v6.4zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v3.2c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-3.2c0-0.176-0.144-0.32-0.32-0.32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M29.76 0h-3.2c-0.176 0-0.32 0.144-0.32 0.32v31.36c0 0.176 0.144 0.32 0.32 0.32h3.2c0.176 0 0.32-0.144 0.32-0.32v-31.36c0-0.176-0.144-0.32-0.32-0.32zM21.76 0h-18.56c-0.708 0-1.28 0.596-1.28 1.332v29.332c0 0.736 0.572 1.332 1.28 1.332h18.56c0.708 0 1.28-0.596 1.28-1.332v-29.332c0-0.736-0.572-1.332-1.28-1.332zM11.2 29.12h-6.4v-7.040h6.4v7.040zM11.2 19.52h-6.4v-7.040h6.4v7.040zM11.2 9.92h-6.4v-7.040h6.4v7.040zM20.16 29.12h-6.4v-7.040h6.4v7.040zM20.16 19.52h-6.4v-7.040h6.4v7.040zM20.16 9.92h-6.4v-7.040h6.4v7.040z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-columnb\" viewBox=\"0 0 32 32\">\n      <path d=\"M2.24 32h3.2c0.176 0 0.32-0.144 0.32-0.32v-31.36c0-0.176-0.144-0.32-0.32-0.32h-3.2c-0.176 0-0.32 0.144-0.32 0.32v31.36c0 0.176 0.144 0.32 0.32 0.32zM10.24 32h18.56c0.708 0 1.28-0.596 1.28-1.332v-29.332c0-0.736-0.572-1.332-1.28-1.332h-18.56c-0.708 0-1.28 0.596-1.28 1.332v29.332c0 0.736 0.572 1.332 1.28 1.332zM20.8 2.88h6.4v7.040h-6.4v-7.040zM20.8 12.48h6.4v7.040h-6.4v-7.040zM20.8 22.080h6.4v7.040h-6.4v-7.040zM11.84 2.88h6.4v7.040h-6.4v-7.040zM11.84 12.48h6.4v7.040h-6.4v-7.040zM11.84 22.080h6.4v7.040h-6.4v-7.040z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-italic\" viewBox=\"0 0 32 32\">\n      <path d=\"M29 0h-19.636c-0.2 0-0.364 0.164-0.364 0.364v2.909c0 0.2 0.164 0.364 0.364 0.364h8.236l-7.091 24.727h-7.373c-0.2 0-0.364 0.164-0.364 0.364v2.909c0 0.2 0.164 0.364 0.364 0.364h19.636c0.2 0 0.364-0.164 0.364-0.364v-2.909c0-0.2-0.164-0.364-0.364-0.364h-8.482l7.091-24.727h7.618c0.2 0 0.364-0.164 0.364-0.364v-2.909c0-0.2-0.164-0.364-0.364-0.364z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-link\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.583 22.391c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-4.841 4.841c-2.242 2.242-6.025 2.479-8.5 0-2.479-2.479-2.242-6.258 0-8.5l4.841-4.841c0.129-0.129 0.129-0.342 0-0.471l-1.658-1.658c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-4.841 4.841c-3.525 3.525-3.525 9.229 0 12.75s9.229 3.525 12.75 0l4.841-4.841c0.129-0.129 0.129-0.342 0-0.471l-1.65-1.65zM29.358 2.642c-3.525-3.525-9.229-3.525-12.75 0l-4.846 4.841c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.654 1.654c0.129 0.129 0.342 0.129 0.471 0l4.842-4.841c2.242-2.242 6.025-2.479 8.5 0 2.479 2.479 2.242 6.258 0 8.5l-4.841 4.841c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.658 1.658c0.129 0.129 0.342 0.129 0.471 0l4.841-4.841c3.521-3.525 3.521-9.229 0-12.754zM20.087 10.179c-0.060-0.060-0.144-0.097-0.235-0.097s-0.175 0.037-0.235 0.097l-9.437 9.433c-0.060 0.060-0.097 0.144-0.097 0.235s0.037 0.175 0.097 0.235l1.65 1.65c0.129 0.129 0.342 0.129 0.471 0l9.433-9.433c0.129-0.129 0.129-0.342 0-0.471l-1.646-1.65z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-outdent\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 13.2h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM11.52 21.36c0 0.176 0.144 0.32 0.32 0.32h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.2h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM0.136 16.276l6.252 4.924c0.232 0.184 0.576 0.020 0.576-0.276v-9.848c0-0.296-0.34-0.46-0.576-0.276l-6.252 4.924c-0.082 0.065-0.135 0.164-0.135 0.276s0.053 0.211 0.134 0.275l0.001 0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-indent\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 13.2h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32zM11.52 21.36c0 0.176 0.144 0.32 0.32 0.32h19.2c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32h-19.2c-0.176 0-0.32 0.144-0.32 0.32v2.24zM31.68 1.92h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM31.68 27.2h-31.36c-0.176 0-0.32 0.144-0.32 0.32v2.24c0 0.176 0.144 0.32 0.32 0.32h31.36c0.176 0 0.32-0.144 0.32-0.32v-2.24c0-0.176-0.144-0.32-0.32-0.32zM1.216 21.204l6.252-4.924c0.083-0.065 0.135-0.166 0.135-0.278s-0.053-0.213-0.134-0.277l-0.001-0.001-6.252-4.928c-0.232-0.184-0.576-0.020-0.576 0.276v9.852c0 0 0 0 0 0 0 0.197 0.159 0.356 0.356 0.356 0.083 0 0.16-0.029 0.221-0.077l-0.001 0.001z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-ordered-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.692 25.538h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM31.692 3.692h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM31.692 14.615h-22.462c-0.169 0-0.308 0.138-0.308 0.308v2.154c0 0.169 0.138 0.308 0.308 0.308h22.462c0.169 0 0.308-0.138 0.308-0.308v-2.154c0-0.169-0.138-0.308-0.308-0.308zM4.615 23.692h-4.462c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h2.785v0.788h-1.373c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h1.373v0.827h-2.785c-0.085 0-0.154 0.069-0.154 0.154v1.308c0 0.085 0.069 0.154 0.154 0.154h4.462c0.085 0 0.154-0.069 0.154-0.154v-6.154c0-0.085-0.069-0.154-0.154-0.154zM0.154 3.538h1.462v4.615c0 0.085 0.069 0.154 0.154 0.154h1.538c0.085 0 0.154-0.069 0.154-0.154v-6c0-0.169-0.138-0.308-0.308-0.308h-3c-0.085 0-0.154 0.069-0.154 0.154v1.385c0 0.085 0.069 0.154 0.154 0.154zM4.615 12.769h-4.462c-0.085 0-0.154 0.069-0.154 0.154v1.385c0 0.085 0.069 0.154 0.154 0.154h2.631l-2.704 2.988c-0.049 0.055-0.080 0.128-0.081 0.207v1.419c0 0.085 0.069 0.154 0.154 0.154h4.462c0.085 0 0.154-0.069 0.154-0.154v-1.385c0-0.085-0.069-0.154-0.154-0.154h-2.631l2.704-2.988c0.049-0.055 0.080-0.128 0.081-0.207v-1.419c0-0.085-0.069-0.154-0.154-0.154z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-redo\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.848 29.084c3.744-2.928 6.152-7.488 6.152-12.608 0-8.836-7.14-15.984-15.976-15.996-8.848-0.012-16.024 7.152-16.024 15.996 0 5.008 2.3 9.476 5.904 12.408 0.14 0.112 0.344 0.088 0.456-0.052l1.576-2.020c0.108-0.136 0.084-0.332-0.048-0.444-0.324-0.264-0.636-0.548-0.936-0.848-1.14-1.136-2.066-2.486-2.712-3.985l-0.032-0.083c-0.672-1.572-1.008-3.248-1.008-4.976s0.336-3.404 1.004-4.98c0.644-1.524 1.568-2.892 2.744-4.068s2.544-2.1 4.068-2.744c1.58-0.668 3.256-1.004 4.984-1.004s3.404 0.336 4.98 1.004c1.524 0.644 2.892 1.568 4.068 2.744s2.1 2.544 2.744 4.068c0.668 1.576 1.004 3.252 1.004 4.98s-0.336 3.404-1.004 4.98c-0.678 1.582-1.604 2.932-2.744 4.068l-0 0c-0.372 0.372-0.764 0.72-1.172 1.040l-1.628-2.084c-0.059-0.076-0.15-0.124-0.253-0.124-0.15 0-0.276 0.103-0.31 0.242l-0 0.002-1.584 6.488c-0.048 0.2 0.104 0.396 0.308 0.396l6.68 0.032c0.268 0 0.42-0.308 0.252-0.516l-1.492-1.916z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-table\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.857 3.429h-29.714c-0.632 0-1.143 0.511-1.143 1.143v22.857c0 0.632 0.511 1.143 1.143 1.143h29.714c0.632 0 1.143-0.511 1.143-1.143v-22.857c0-0.632-0.511-1.143-1.143-1.143zM29.429 10.857h-7.571v-4.857h7.571v4.857zM29.429 18.857h-7.571v-5.714h7.571v5.714zM12.429 13.143h7.143v5.714h-7.143v-5.714zM19.571 10.857h-7.143v-4.857h7.143v4.857zM2.571 13.143h7.571v5.714h-7.571v-5.714zM2.571 6h7.571v4.857h-7.571v-4.857zM2.571 21.143h7.571v4.857h-7.571v-4.857zM12.429 21.143h7.143v4.857h-7.143v-4.857zM29.429 26h-7.571v-4.857h7.571v4.857z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-undo\" viewBox=\"0 0 32 32\">\n      <path d=\"M15.976 0.48c-8.836 0.012-15.976 7.16-15.976 15.996 0 5.12 2.408 9.68 6.152 12.608l-1.5 1.92c-0.164 0.212-0.012 0.52 0.252 0.516l6.68-0.032c0.208 0 0.36-0.196 0.308-0.396l-1.58-6.492c-0.035-0.141-0.161-0.244-0.311-0.244-0.103 0-0.194 0.048-0.253 0.123l-0.001 0.001-1.628 2.084c-0.408-0.32-0.8-0.668-1.172-1.040-1.14-1.136-2.066-2.486-2.712-3.985l-0.032-0.083c-0.668-1.576-1.004-3.252-1.004-4.98s0.336-3.404 1.004-4.98c0.644-1.524 1.568-2.892 2.744-4.068s2.544-2.1 4.068-2.744c1.58-0.668 3.256-1.004 4.984-1.004s3.404 0.336 4.98 1.004c1.524 0.644 2.892 1.568 4.068 2.744s2.1 2.544 2.744 4.068c0.668 1.576 1.004 3.252 1.004 4.98s-0.336 3.404-1.004 4.98c-0.678 1.582-1.604 2.932-2.744 4.068l-0 0c-0.3 0.3-0.612 0.58-0.936 0.848-0.072 0.059-0.117 0.147-0.117 0.246 0 0.075 0.026 0.144 0.070 0.198l-0-0.001 1.576 2.020c0.112 0.14 0.316 0.164 0.456 0.052 3.604-2.936 5.904-7.404 5.904-12.412 0-8.844-7.176-16.008-16.024-15.996z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.686 3.451h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM31.686 14.588h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM31.686 25.726h-22.902c-0.173 0-0.314 0.141-0.314 0.314v2.196c0 0.173 0.141 0.314 0.314 0.314h22.902c0.173 0 0.314-0.141 0.314-0.314v-2.196c0-0.173-0.141-0.314-0.314-0.314zM0 4.863c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0zM0 16c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0zM0 27.137c0 1.213 0.983 2.196 2.196 2.196s2.196-0.983 2.196-2.196v0c0-1.213-0.983-2.196-2.196-2.196s-2.196 0.983-2.196 2.196v0z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-up\" viewBox=\"0 0 32 32\">\n      <path d=\"M31.936 26.244l-14.846-20.466c-0.539-0.741-1.642-0.741-2.177 0l-14.85 20.466c-0.040 0.055-0.064 0.124-0.064 0.198 0 0.186 0.151 0.337 0.337 0.337 0 0 0.001 0 0.001 0h3.158c0.215 0 0.417-0.105 0.543-0.278l11.961-16.488 11.961 16.488c0.126 0.173 0.328 0.278 0.543 0.278h3.158c0.274 0 0.434-0.312 0.274-0.535z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-zhihu\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.245 3.993v24.401h2.555l1.073 3.041 4.532-3.041h5.601v-24.401h-13.761zM28.795 25.162h-2.551l-3.199 2.147-0.758-2.147h-0.767v-17.837h7.27v17.837zM16.601 14.931h-5.656c0.089-1.912 0.183-4.442 0.281-7.364h5.575l-0.004-0.345c0-0.026-0.009-0.626-0.098-1.239-0.089-0.639-0.281-1.486-0.894-1.486h-9.353c0.187-0.877 0.669-2.969 1.252-3.995l0.273-0.477-0.549-0.030c-0.034 0-0.835-0.038-1.763 0.451-1.521 0.809-2.202 2.402-2.5 3.595-0.784 3.113-1.9 5.277-2.372 6.201-0.141 0.273-0.226 0.434-0.264 0.545-0.077 0.209-0.034 0.417 0.119 0.554 0.447 0.405 1.627-0.124 1.64-0.128 0.026-0.013 0.055-0.026 0.094-0.043 0.592-0.268 2.347-1.065 2.973-3.599h2.415c0.030 1.371 0.132 5.895 0.124 7.364h-6.005l-0.089 0.064c-0.984 0.72-1.299 2.692-1.312 2.777l-0.060 0.392h7.113c-0.524 3.335-1.129 4.83-1.448 5.426-0.158 0.298-0.311 0.596-0.456 0.886-0.907 1.797-1.849 3.654-5.379 6.542-0.153 0.119-0.298 0.341-0.204 0.584 0.102 0.268 0.396 0.388 1.048 0.388 0.23 0 0.503-0.013 0.826-0.043 2.125-0.187 4.293-0.767 5.754-3.731 0.724-1.495 1.35-3.054 1.87-4.638l5.814 6.815 0.213-0.511c0.034-0.081 0.809-1.972 0.217-4.085l-0.021-0.077-4.604-5.239-0.937 0.707c0.273-1.112 0.451-2.125 0.532-3.028h6.759v-0.341c0-1.708-0.788-2.722-0.818-2.764l-0.102-0.128z\"></path>\n    </symbol>\n  </defs>\n</svg>`)\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/icons/material.js",
    "content": "document.body.insertAdjacentHTML('afterBegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <defs>\n    <symbol id=\"vditor-icon-comment\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.8 24.272l-1.872-1.872h-23.728v-19.2h25.6v21.072zM28.8 0h-25.6c-1.76 0-3.2 1.44-3.2 3.2v19.2c0 1.76 1.44 3.2 3.2 3.2h22.4l6.4 6.4v-28.8c0-1.76-1.44-3.2-3.2-3.2z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-headings\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.050 0.007h6.279v31.993h-6.279v-31.993z\"></path>\n      <path d=\"M24.671 0h6.279v31.993h-6.279v-31.993z\"></path>\n      <path d=\"M5.159 12.845h21.683v6.317h-21.683v-6.317z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-before\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 26.507h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M1.462 9.928h16.48v-3.276h-16.48v3.276z\"></path>\n      <path d=\"M1.462 18.217h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M24.366 8.29l6.171-5.952-2.43-2.338-8.619 8.29 8.619 8.29 2.43-2.337-6.171-5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-after\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 5.493h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M1.462 22.072h16.48v3.276h-16.48v-3.276z\"></path>\n      <path d=\"M1.462 13.783h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M24.366 23.71l6.171 5.952-2.43 2.338-8.619-8.29 8.619-8.29 2.43 2.337-6.171 5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M5.279 0v23.265h3.538v-23.265h-3.538z\"></path>\n      <path d=\"M23.183 0v23.265h3.538v-23.265h-3.538z\"></path>\n      <path d=\"M14.231 0v17.797h3.538v-17.797h-3.538z\"></path>\n      <path d=\"M16 28.387l3.613 3.613 2.023-2.023-3.613-3.613 3.613-3.613-2.023-2.023-3.613 3.613-3.613-3.613-2.023 2.023 3.613 3.613-3.613 3.613 2.023 2.023 3.613-3.613z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-delete-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 5.279h23.265v3.538h-23.265v-3.538z\"></path>\n      <path d=\"M0 23.183h23.265v3.538h-23.265v-3.538z\"></path>\n      <path d=\"M0 14.231h17.797v3.538h-17.797v-3.538z\"></path>\n      <path d=\"M28.387 16l3.613 3.613-2.023 2.023-3.613-3.613-3.613 3.613-2.023-2.023 3.613-3.613-3.613-3.613 2.023-2.023 3.613 3.613 3.613-3.613 2.023 2.023-3.613 3.613z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-row\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 5.493h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M1.462 22.072h16.48v3.276h-16.48v-3.276z\"></path>\n      <path d=\"M1.462 13.783h21.543v3.276h-21.543v-3.276z\"></path>\n      <path d=\"M24.366 23.71l6.171 5.952-2.43 2.338-8.619-8.29 8.619-8.29 2.43 2.337-6.171 5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-rowb\" viewBox=\"0 0 32 32\">\n      <path d=\"M1.462 26.507h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M1.462 9.928h16.48v-3.276h-16.48v3.276z\"></path>\n      <path d=\"M1.462 18.217h21.543v-3.276h-21.543v3.276z\"></path>\n      <path d=\"M24.366 8.29l6.171-5.952-2.43-2.338-8.619 8.29 8.619 8.29 2.43-2.337-6.171-5.953z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-column\" viewBox=\"0 0 32 32\">\n      <path d=\"M5.493 1.462v21.543h3.276v-21.543h-3.276z\"></path>\n      <path d=\"M22.072 1.462v16.48h3.276v-16.48h-3.276z\"></path>\n      <path d=\"M13.783 1.462v21.543h3.276v-21.543h-3.276z\"></path>\n      <path d=\"M23.71 24.366l5.952 6.171 2.338-2.43-8.29-8.619-8.29 8.619 2.337 2.43 5.953-6.171z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-insert-columnb\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.507 1.462v21.543h-3.276v-21.543h3.276z\"></path>\n      <path d=\"M9.928 1.462v16.48h-3.276v-16.48h3.276z\"></path>\n      <path d=\"M18.217 1.462v21.543h-3.276v-21.543h3.276z\"></path>\n      <path d=\"M8.29 24.366l-5.952 6.171-2.338-2.43 8.29-8.619 8.29 8.619-2.337 2.43-5.953-6.171z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code-theme\" viewBox=\"0 0 32 32\">\n        <path d=\"M28.444 12.444v16h-24.924v-24.889h16v-3.556h-15.964c-1.956 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.6 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-16h-3.556zM23.218 8.782l1.671 3.662 1.671-3.662 3.662-1.671-3.662-1.671-1.671-3.662-1.671 3.662-3.662 1.671zM16 8.889l-2.222 4.889-4.889 2.222 4.889 2.222 2.222 4.889 2.222-4.889 4.889-2.222-4.889-2.222z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-code\" viewBox=\"0 0 32 32\">\n        <path d=\"M9.946 8.501l-2.204-1.832-7.742 9.331 7.742 9.331 2.204-1.832-6.225-7.499 6.225-7.499zM8.844 17.431h2.862v-2.862h-2.862v2.862zM23.156 14.569h-2.862v2.862h2.862v-2.862zM14.569 17.431h2.862v-2.862h-2.862v2.862zM24.258 6.669l-2.204 1.832 6.225 7.499-6.225 7.499 2.204 1.832 7.742-9.331-7.742-9.331z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-table\" viewBox=\"0 0 32 32\">\n        <path d=\"M22.801 2.286h-22.801v27.429h32v-27.429h-9.199zM19.372 5.714v4.571h-6.801v-4.571h6.801zM19.372 13.714v4.571h-6.801v-4.571h6.801zM3.429 5.714h5.714v4.571h-5.714v-4.571zM3.429 13.714h5.714v4.571h-5.714v-4.571zM3.429 26.286v-4.571h5.714v4.571h-5.714zM12.571 26.286v-4.571h6.801v4.571h-6.801zM28.571 26.286h-5.77v-4.571h5.77v4.571zM28.571 18.286h-5.77v-4.571h5.77v4.571zM22.801 10.286v-4.571h5.77v4.571h-5.77z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-export\" viewBox=\"0 0 32 32\">\n        <path d=\"M28.444 28.444h-24.889v-24.889h12.444v-3.556h-12.444c-1.973 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.582 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-12.444h-3.556v12.444zM19.556 0v3.556h6.382l-17.476 17.476 2.507 2.507 17.476-17.476v6.382h3.556v-12.444h-12.444z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-resize\" viewBox=\"0 0 128 32\">\n        <path d=\"M128 32v-5.334h-128v5.334h128zM128 18.666v-5.331h-128v5.331h128zM0 5.334h128v-5.334h-128v5.334z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-edit\" viewBox=\"0 0 32 32\">\n        <path d=\"M19.66 10.703l1.635 1.635-16.104 16.104h-1.635v-1.635l16.104-16.104zM26.059 0.002c-0.444 0-0.907 0.178-1.244 0.515l-3.253 3.253 6.666 6.666 3.253-3.253c0.693-0.693 0.693-1.813 0-2.506l-4.159-4.159c-0.355-0.355-0.8-0.515-1.262-0.515zM19.66 5.673l-19.66 19.66v6.666h6.666l19.66-19.66-6.666-6.666z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-quote\" viewBox=\"0 0 32 32\">\n        <path d=\"M27.769 26.667h-9.316l3.556-7.111h-4.231v-14.222h14.222v12.871l-4.231 8.462zM24.213 23.111h1.351l2.88-5.76v-8.462h-7.111v7.111h6.436l-3.556 7.111zM9.991 26.667h-9.316l3.556-7.111h-4.231v-14.222h14.222v12.871l-4.231 8.462zM6.436 23.111h1.351l2.88-5.76v-8.462h-7.111v7.111h6.436l-3.556 7.111z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-strike\" viewBox=\"0 0 32 32\">\n        <path d=\"M12.444 29.333h7.111v-5.333h-7.111v5.333zM3.556 2.667v5.333h8.889v5.333h7.111v-5.333h8.889v-5.333h-24.889zM0 20.444h32v-3.556h-32v3.556z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-line\" viewBox=\"0 0 32 32\">\n        <path d=\"M0 14h32v4h-32v-4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-both\" viewBox=\"0 0 32 32\">\n        <path d=\"M2.909 3.636h26.182c1.6 0 2.909 1.309 2.909 2.909v18.909c0 1.6-1.309 2.909-2.909 2.909h-26.182c-1.6 0-2.909-1.309-2.909-2.909v-18.909c0-1.6 1.309-2.909 2.909-2.909zM29.091 25.455v-18.909h-11.636v18.909h11.636zM2.909 25.455h11.636v-18.909h-11.636v18.909zM13.091 11.636h-8.727v2.182h8.727zM13.091 15.273h-8.727v2.182h8.727zM13.091 18.909h-8.727v2.182h8.727z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-copy\" viewBox=\"0 0 32 32\">\n      <path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-trashcan\" viewBox=\"0 0 32 32\">\n      <path d=\"M23.111 10.667v17.778h-14.222v-17.778h14.222zM20.444 0h-8.889l-1.778 1.778h-6.222v3.556h24.889v-3.556h-6.222l-1.778-1.778zM26.667 7.111h-21.333v21.333c0 1.956 1.6 3.556 3.556 3.556h14.222c1.956 0 3.556-1.6 3.556-3.556v-21.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-more\" viewBox=\"0 0 32 32\">\n      <path d=\"M4 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM28 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zM16 12c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-upload\" viewBox=\"0 0 32 32\">\n      <path d=\"M25.8 13.387c-0.907-4.6-4.947-8.053-9.8-8.053-3.853 0-7.2 2.187-8.867 5.387-4.013 0.427-7.133 3.827-7.133 7.947 0 4.413 3.587 8 8 8h17.333c3.68 0 6.667-2.987 6.667-6.667 0-3.52-2.733-6.373-6.2-6.613zM25.333 24h-17.333c-2.947 0-5.333-2.387-5.333-5.333 0-2.733 2.040-5.013 4.747-5.293l1.427-0.147 0.667-1.267c1.267-2.44 3.747-3.96 6.493-3.96 3.493 0 6.507 2.48 7.187 5.907l0.4 2 2.040 0.147c2.080 0.133 3.707 1.88 3.707 3.947 0 2.2-1.8 4-4 4zM10.667 17.333h3.4v4h3.867v-4h3.4l-5.333-5.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bug\" viewBox=\"0 0 32 32\">\n      <path d=\"M30.222 8.889h-4.996c-0.8-1.387-1.902-2.578-3.236-3.484l2.898-2.898-2.507-2.507-3.858 3.858c-0.818-0.196-1.653-0.302-2.524-0.302s-1.707 0.107-2.507 0.302l-3.876-3.858-2.507 2.507 2.88 2.898c-1.316 0.907-2.418 2.098-3.218 3.484h-4.996v3.556h3.716c-0.089 0.587-0.16 1.173-0.16 1.778v1.778h-3.556v3.556h3.556v1.778c0 0.604 0.071 1.191 0.16 1.778h-3.716v3.556h4.996c1.849 3.182 5.28 5.333 9.227 5.333s7.378-2.151 9.227-5.333h4.996v-3.556h-3.716c0.089-0.587 0.16-1.173 0.16-1.778v-1.778h3.556v-3.556h-3.556v-1.778c0-0.604-0.071-1.191-0.16-1.778h3.716v-3.556zM23.111 16v5.333c0 0.391-0.053 0.836-0.124 1.244l-0.178 1.156-0.658 1.156c-1.28 2.204-3.627 3.556-6.151 3.556s-4.871-1.369-6.151-3.556l-0.658-1.138-0.178-1.156c-0.071-0.409-0.124-0.853-0.124-1.262v-7.111c0-0.409 0.053-0.853 0.124-1.244l0.178-1.156 0.658-1.156c0.533-0.924 1.28-1.724 2.151-2.329l1.013-0.693 1.316-0.32c0.551-0.142 1.12-0.213 1.671-0.213 0.569 0 1.12 0.071 1.689 0.213l1.209 0.284 1.084 0.747c0.889 0.604 1.618 1.387 2.151 2.329l0.676 1.156 0.178 1.156c0.071 0.391 0.124 0.836 0.124 1.227v1.778zM12.444 19.556h7.111v3.556h-7.111zM12.444 12.445h7.111v3.556h-7.111z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-contract\" viewBox=\"0 0 32 32\">\n      <path d=\"M32 2.256l-8.464 8.464 5.264 5.28h-12.8v-12.8l5.264 5.264 8.48-8.464 2.256 2.256zM2.256 32l8.464-8.464 5.28 5.264v-12.8h-12.8l5.264 5.264-8.464 8.48 2.256 2.256z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-inline-code\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.84 23.36l-7.36-7.36 7.36-7.36-2.24-2.24-9.6 9.6 9.6 9.6 2.24-2.24zM20.16 23.36l7.36-7.36-7.36-7.36 2.24-2.24 9.6 9.6-9.6 9.6-2.24-2.24z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-down\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-up\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.76 25.88l12.24-12.213 12.24 12.213 3.76-3.76-16-16-16 16 3.76 3.76z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-check\" viewBox=\"0 0 32 32\">\n      <path d=\"M28.444 0h-24.889c-1.956 0-3.556 1.6-3.556 3.556v24.889c0 1.956 1.6 3.556 3.556 3.556h24.889c1.956 0 3.556-1.6 3.556-3.556v-24.889c0-1.956-1.6-3.556-3.556-3.556zM28.444 28.445h-24.889v-24.889h24.889v24.889zM26.649 10.667l-2.507-2.524-11.716 11.716-4.587-4.569-2.524 2.507 7.111 7.093z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-theme\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 32c-8.816 0-16-7.184-16-16s7.184-16 16-16 16 6.464 16 14.4c0 5.296-4.304 9.6-9.6 9.6h-2.832c-0.448 0-0.8 0.352-0.8 0.8 0 0.192 0.080 0.368 0.208 0.528 0.656 0.752 1.024 1.696 1.024 2.672 0 2.208-1.792 4-4 4zM16 3.2c-7.056 0-12.8 5.744-12.8 12.8s5.744 12.8 12.8 12.8c0.448 0 0.8-0.352 0.8-0.8 0-0.256-0.128-0.448-0.224-0.56-0.656-0.736-1.008-1.68-1.008-2.64 0-2.208 1.792-4 4-4h2.832c3.536 0 6.4-2.864 6.4-6.4 0-6.176-5.744-11.2-12.8-11.2z\"></path>\n      <path d=\"M9.6 15.2c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M14.4 8.8c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M22.4 8.8c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n      <path d=\"M27.2 15.2c0 1.325-1.075 2.4-2.4 2.4s-2.4-1.075-2.4-2.4c0-1.325 1.075-2.4 2.4-2.4s2.4 1.075 2.4 2.4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-help\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.4 25.6h3.2v-3.2h-3.2v3.2zM16 0c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM16 28.8c-7.056 0-12.8-5.744-12.8-12.8s5.744-12.8 12.8-12.8 12.8 5.744 12.8 12.8-5.744 12.8-12.8 12.8zM16 6.4c-3.536 0-6.4 2.864-6.4 6.4h3.2c0-1.76 1.44-3.2 3.2-3.2s3.2 1.44 3.2 3.2c0 3.2-4.8 2.8-4.8 8h3.2c0-3.6 4.8-4 4.8-8 0-3.536-2.864-6.4-6.4-6.4z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-info\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.4 8h3.2v3.2h-3.2zM14.4 14.4h3.2v9.6h-3.2zM16 0c-8.832 0-16 7.168-16 16s7.168 16 16 16 16-7.168 16-16-7.168-16-16-16zM16 28.8c-7.056 0-12.8-5.744-12.8-12.8s5.744-12.8 12.8-12.8 12.8 5.744 12.8 12.8-5.744 12.8-12.8 12.8z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-fullscreen\" viewBox=\"0 0 32 32\">\n      <path d=\"M32 14.222v-14.222h-14.222l5.849 5.849-17.778 17.778-5.849-5.849v14.222h14.222l-5.849-5.849 17.778-17.778z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-preview\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 8c5.513 0 10.429 3.098 12.829 8-2.4 4.902-7.302 8-12.829 8s-10.429-3.098-12.829-8c2.4-4.902 7.316-8 12.829-8zM16 5.091c-7.273 0-13.484 4.524-16 10.909 2.516 6.385 8.727 10.909 16 10.909s13.484-4.524 16-10.909c-2.516-6.385-8.727-10.909-16-10.909zM16 12.364c2.007 0 3.636 1.629 3.636 3.636s-1.629 3.636-3.636 3.636-3.636-1.629-3.636-3.636 1.629-3.636 3.636-3.636zM16 9.455c-3.607 0-6.545 2.938-6.545 6.545s2.938 6.545 6.545 6.545 6.545-2.938 6.545-6.545-2.938-6.545-6.545-6.545z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-record\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.928 15.17h2.844q0 4.267-2.963 7.467t-7.151 3.832v5.531h-3.319v-5.531q-4.188-0.632-7.151-3.832t-2.963-7.467h2.844q0 3.714 2.647 6.123t6.281 2.41 6.281-2.41 2.647-6.123zM13.946 4.899v10.43q0 0.79 0.593 1.383t1.462 0.593q0.79 0 1.383-0.553t0.593-1.422l0.079-10.43q0-0.869-0.632-1.462t-1.422-0.593-1.422 0.593-0.632 1.462zM16 20.227q-2.054 0-3.556-1.501t-1.501-3.556v-10.114q0-2.054 1.501-3.556t3.556-1.501 3.556 1.501 1.501 3.556v10.114q0 2.054-1.501 3.556t-3.556 1.501z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-pause\" viewBox=\"0 0 32 32\">\n      <path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-play\" viewBox=\"0 0 32 32\">\n      <path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-emoji\" viewBox=\"0 0 32 32\">\n      <path d=\"M16 24.789q-2.779 0-4.995-1.54t-3.192-4.019h2.629q1.878 3.155 5.559 3.155t5.559-3.155h2.629q-0.977 2.479-3.192 4.019t-4.995 1.54zM16 28.845q5.258 0 9.052-3.793t3.793-9.052-3.793-9.052-9.052-3.793-9.052 3.793-3.793 9.052 3.793 9.052 9.052 3.793zM16 0q6.61 0 11.305 4.695t4.695 11.305-4.695 11.305-11.305 4.695-11.305-4.695-4.695-11.305 4.695-11.305 11.305-4.695zM10.366 14.423q-0.977 0-1.69-0.714t-0.714-1.69 0.714-1.69 1.69-0.714 1.69 0.714 0.714 1.69-0.714 1.69-1.69 0.714zM21.634 14.423q-0.977 0-1.69-0.714t-0.714-1.69 0.714-1.69 1.69-0.714 1.69 0.714 0.714 1.69-0.714 1.69-1.69 0.714z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-link\" viewBox=\"0 0 32 32\">\n      <path d=\"M24.038 7.962q3.305 0 5.634 2.366t2.329 5.671-2.329 5.671-5.634 2.366h-6.46v-3.080h6.46q2.028 0 3.493-1.465t1.465-3.493-1.465-3.493-3.493-1.465h-6.46v-3.080h6.46zM9.615 17.577v-3.155h12.77v3.155h-12.77zM3.005 16q0 2.028 1.465 3.493t3.493 1.465h6.46v3.080h-6.46q-3.305 0-5.634-2.366t-2.329-5.671 2.329-5.671 5.634-2.366h6.46v3.080h-6.46q-2.028 0-3.493 1.465t-1.465 3.493z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-redo\" viewBox=\"0 0 32 32\">\n      <path d=\"M26.422 14.605l5.578-5.651v14.092h-14.092l5.725-5.651q-3.523-2.936-8.073-2.936-3.743 0-7.229 2.495t-4.661 6.092l-3.67-1.174q1.615-4.991 5.908-8.147t9.651-3.156q6.239 0 10.862 4.037z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-undo\" viewBox=\"0 0 32 32\">\n      <path d=\"M16.44 10.569q5.358 0 9.615 3.156t5.945 8.147l-3.67 1.174q-1.248-3.817-4.514-6.202t-7.376-2.385q-4.55 0-8.073 2.936l5.725 5.651h-14.092v-14.092l5.578 5.651q4.624-4.037 10.862-4.037z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-center\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM7.083 7.083h17.833v3.583h-17.833v-3.583zM0 17.75v-3.5h32v3.5h-32zM0 32v-3.583h32v3.583h-32zM7.083 21.333h17.833v3.583h-17.833v-3.583z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-left\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM0 32v-3.583h32v3.583h-32zM0 17.75v-3.5h32v3.5h-32zM21.333 7.083v3.583h-21.333v-3.583h21.333zM21.333 21.333v3.583h-21.333v-3.583h21.333z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-align-right\" viewBox=\"0 0 32 32\">\n      <path d=\"M0 0h32v3.583h-32v-3.583zM10.667 10.667v-3.583h21.333v3.583h-21.333zM0 17.75v-3.5h32v3.5h-32zM10.667 24.917v-3.583h21.333v3.583h-21.333zM0 32v-3.583h32v3.583h-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-bold\" viewBox=\"0 0 32 32\">\n      <path d=\"M18.569 26.328q1.498 0 2.462-1.017t0.963-2.408-0.963-2.408-2.462-1.017h-8.027v6.849h8.027zM10.542 5.779v6.85h6.85q1.391 0 2.408-1.017t1.017-2.408-1.017-2.408-2.408-1.017h-6.849zM23.385 15.518q4.923 2.248 4.923 7.813 0 3.639-2.408 6.154t-6.047 2.515h-16.161v-32h14.341q3.853 0 6.475 2.676t2.622 6.528-3.746 6.314z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-indent\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.25 17.75v-3.5h17.75v3.5h-17.75zM14.25 10.667v-3.583h17.75v3.583h-17.75zM0 0h32v3.583h-32v-3.583zM14.25 24.917v-3.583h17.75v3.583h-17.75zM0 8.917l7.083 7.083-7.083 7.083v-14.167zM0 32v-3.583h32v3.583h-32z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-outdent\" viewBox=\"0 0 32 32\">\n      <path d=\"M14.25 17.75v-3.5h17.75v3.5h-17.75zM14.25 10.667v-3.583h17.75v3.583h-17.75zM0 0h32v3.583h-32v-3.583zM0 32v-3.583h32v3.583h-32zM0 16l7.083-7.083v14.167zM14.25 24.917v-3.583h17.75v3.583h-17.75z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-italic\" viewBox=\"0 0 32 32\">\n      <path d=\"M11.398 0h18.301v6.849h-6.421l-7.706 18.301h5.030v6.849h-18.301v-6.849h6.421l7.706-18.301h-5.030v-6.849z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M7.777 3.929h24.223v3.403h-24.223v-3.403zM7.777 17.701v-3.403h24.223v3.403h-24.223zM7.777 28.071v-3.403h24.223v3.403h-24.223zM2.592 23.777q1.053 0 1.823 0.77t0.77 1.823-0.77 1.823-1.823 0.77-1.823-0.77-0.77-1.823 0.77-1.823 1.823-0.77zM2.592 3.038q1.053 0 1.823 0.729t0.77 1.863-0.77 1.863-1.823 0.729-1.823-0.729-0.77-1.863 0.77-1.863 1.823-0.729zM2.592 13.408q1.053 0 1.823 0.729t0.77 1.863-0.77 1.863-1.823 0.729-1.823-0.729-0.77-1.863 0.77-1.863 1.823-0.729z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-ordered-list\" viewBox=\"0 0 32 32\">\n      <path d=\"M8.375 17.659v-3.319h23.625v3.319h-23.625zM8.375 27.773v-3.319h23.625v3.319h-23.625zM8.375 4.227h23.625v3.319h-23.625v-3.319zM0 14.341v-1.738h5.057v1.58l-3.081 3.477h3.081v1.738h-5.057v-1.58l3.002-3.477h-3.002zM1.659 9.284v-5.057h-1.659v-1.738h3.319v6.795h-1.659zM0 24.454v-1.738h5.057v6.795h-5.057v-1.738h3.319v-0.79h-1.659v-1.738h1.659v-0.79h-3.319z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-mp-wechat\" viewBox=\"0 0 32 32\">\n      <path d=\"M6.927 17.719s-3.040-3.431-2.915-6.942c0.16-4.453 4.738-10.257 11.359-10.257 1.884 0 5.653 0 10.328 5.52 0.249 0.302-15.075-3.84-18.772 11.679z\"></path>\n      <path d=\"M17.477 9.301s3.946-1.298 7.271-0.178c4.222 1.422 8.693 6.826 6.809 13.182-0.533 1.804-1.609 5.413-8.231 8.32-0.356 0.16 10.613-13.351-5.849-21.323z\"></path>\n      <path d=\"M10.944 24.332c-1.938 2.035-3.751 1.742-3.751 1.742l0.578-3.191c-5.235-3.44-6.373-10.328-6.453-10.106-2.444 6.817-0.916 11.377 0.027 13.004 3.315 5.733 11.982 7.351 17.484 3.893 2.969-1.867 4.533-7.057 4.533-7.057-5.298 2.338-9.342 2.569-12.417 1.715z\"></path>\n    </symbol>\n    <symbol id=\"vditor-icon-zhihu\" viewBox=\"0 0 32 32\">\n      <path d=\"M17.167 17.769s0-2.583-1.25-2.667c-1.25-0.167-5.167 0-5.167 0v-8h5.833s-0.083-2.667-1.167-2.667h-9.5l1.583-4.25s-2.333 0.167-3.25 1.667c-0.833 1.5-3.5 9.167-3.5 9.167s0.917 0.417 2.417-0.75c1.5-1.083 2-3.083 2-3.083l2.75-0.167 0.083 8.083s-4.917-0.083-5.833 0c-1 0.083-1.5 2.667-1.5 2.667h7.417s-0.667 4.583-2.5 7.75c-1.917 3.333-5.583 5.917-5.583 5.917s2.583 1.083 5.167-0.417 4.417-8.083 4.417-8.083l5.917 7.417s0.5-3.5-0.083-4.583c-0.667-1-4.167-5-4.167-5l-1.5 1.333 1.083-4.417 6.333 0.083zM18.667 4.269l-0.083 23.999h2.417l0.833 2.917 4.25-2.917h5.917v-23.999h-13.333zM29.333 25.602h-2.75l-3.5 2.667-0.75-2.667h-0.75v-18.582h7.75v18.582z\"></path>\n    </symbol>\n  </defs>\n</svg>`)\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/markmap/prism.css",
    "content": "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: black;\n\tbackground: none;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*=\"language-\"],\n\tpre[class*=\"language-\"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.token.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #9a6e3a;\n\t/* This background color was intended by the author of this theme. */\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function,\n.token.class-name {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/a11y/assistive-mml.js",
    "content": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=5)}([function(t,e,i){\"use strict\";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,o,r=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(o)throw o.error}}return s},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t},l=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AssistiveMmlHandler=e.AssistiveMmlMathDocumentMixin=e.AssistiveMmlMathItemMixin=e.LimitedMmlVisitor=void 0;var u=i(2),c=i(3),p=i(4),h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.getAttributes=function(e){return t.prototype.getAttributes.call(this,e).replace(/ ?id=\".*?\"/,\"\")},e}(c.SerializedMmlVisitor);function m(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.assistiveMml=function(t,e){if(void 0===e&&(e=!1),!(this.state()>=u.STATE.ASSISTIVEMML)){if(!this.isEscaped&&(t.options.enableAssistiveMml||e)){var i=t.adaptor,n=t.toMML(this.root).replace(/\\n */g,\"\").replace(/<!--.*?-->/g,\"\"),o=i.firstChild(i.body(i.parse(n,\"text/html\"))),r=i.node(\"mjx-assistive-mml\",{role:\"presentation\",unselectable:\"on\",display:this.display?\"block\":\"inline\"},[o]);i.setAttribute(this.typesetRoot,\"role\",\"presentation\"),i.setAttribute(i.firstChild(this.typesetRoot),\"aria-hidden\",\"true\"),i.setStyle(this.typesetRoot,\"position\",\"relative\"),i.append(this.typesetRoot,r)}this.state(u.STATE.ASSISTIVEMML)}},e}(t)}function f(t){var e;return(e=function(t){function e(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var n=t.apply(this,a(e))||this,o=n.constructor,r=o.ProcessBits;return r.has(\"assistive-mml\")||r.allocate(\"assistive-mml\"),n.visitor=new h(n.mmlFactory),n.options.MathItem=m(n.options.MathItem),\"addStyles\"in n&&n.addStyles(o.assistiveStyles),n}return o(e,t),e.prototype.toMML=function(t){return this.visitor.visitTree(t)},e.prototype.assistiveMml=function(){var t,e;if(!this.processed.isSet(\"assistive-mml\")){try{for(var i=l(this.math),n=i.next();!n.done;n=i.next()){n.value.assistiveMml(this)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}this.processed.set(\"assistive-mml\")}return this},e.prototype.state=function(e,i){return void 0===i&&(i=!1),t.prototype.state.call(this,e,i),e<u.STATE.ASSISTIVEMML&&this.processed.clear(\"assistive-mml\"),this},e}(t)).OPTIONS=r(r({},t.OPTIONS),{enableAssistiveMml:!0,renderActions:p.expandable(r(r({},t.OPTIONS.renderActions),{assistiveMml:[u.STATE.ASSISTIVEMML]}))}),e.assistiveStyles={\"mjx-assistive-mml\":{position:\"absolute !important\",top:\"0px\",left:\"0px\",clip:\"rect(1px, 1px, 1px, 1px)\",padding:\"1px 0px 0px 0px !important\",border:\"0px !important\",display:\"block !important\",width:\"auto !important\",overflow:\"hidden !important\",\"-webkit-touch-callout\":\"none\",\"-webkit-user-select\":\"none\",\"-khtml-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},'mjx-assistive-mml[display=\"block\"]':{width:\"100% !important\"}},e}e.LimitedMmlVisitor=h,u.newState(\"ASSISTIVEMML\",153),e.AssistiveMmlMathItemMixin=m,e.AssistiveMmlMathDocumentMixin=f,e.AssistiveMmlHandler=function(t){return t.documentClass=f(t.documentClass),t}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";i.r(e);var n=i(1),o=i(0);Object(n.combineWithMathJax)({_:{a11y:{\"assistive-mml\":o}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(o.AssistiveMmlHandler)(t)}))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/a11y/complexity.js",
    "content": "!function(t){var e={};function i(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=t,i.c=e,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)i.d(o,r,function(e){return t[e]}.bind(null,r));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=9)}([function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var o,r,n=i.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(o=n.next()).done;)s.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(i=n.return)&&i.call(n)}finally{if(r)throw r.error}}return s},l=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ComplexityHandler=e.ComplexityMathDocumentMixin=e.ComplexityMathItemMixin=void 0;var c=i(7),p=i(2),u=i(3),h=i(5);function y(t,e){return function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.complexity=function(t,i){void 0===i&&(i=!1),this.state()>=c.STATE.COMPLEXITY||(this.isEscaped||!t.options.enableComplexity&&!i||(this.enrich(t,!0),e(this.root)),this.state(c.STATE.COMPLEXITY))},i}(t)}function d(t){var e;return(e=function(t){function e(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var o=t.apply(this,l(e))||this,r=o.constructor.ProcessBits;r.has(\"complexity\")||r.allocate(\"complexity\");var n=h.selectOptionsFromKeys(o.options,o.options.ComplexityVisitor.OPTIONS);o.complexityVisitor=new o.options.ComplexityVisitor(o.mmlFactory,n);var s=function(t){return o.complexityVisitor.visitTree(t)};return o.options.MathItem=y(o.options.MathItem,s),o}return r(e,t),e.prototype.complexity=function(){var t,e;if(!this.processed.isSet(\"complexity\")){if(this.options.enableComplexity)try{for(var i=a(this.math),o=i.next();!o.done;o=i.next()){o.value.complexity(this)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}this.processed.set(\"complexity\")}return this},e.prototype.state=function(e,i){return void 0===i&&(i=!1),t.prototype.state.call(this,e,i),e<c.STATE.COMPLEXITY&&this.processed.clear(\"complexity\"),this},e}(t)).OPTIONS=n(n(n({},t.OPTIONS),u.ComplexityVisitor.OPTIONS),{enableComplexity:!0,ComplexityVisitor:u.ComplexityVisitor,renderActions:h.expandable(n(n({},t.OPTIONS.renderActions),{complexity:[c.STATE.COMPLEXITY]}))}),e}c.newState(\"COMPLEXITY\",40),e.ComplexityMathItemMixin=y,e.ComplexityMathDocumentMixin=d,e.ComplexityHandler=function(t,e){return void 0===e&&(e=null),!t.documentClass.prototype.enrich&&e&&(t=p.EnrichHandler(t,e)),t.documentClass=d(t.documentClass),t}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichedMathItemMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathItemMixin,e.EnrichedMathDocumentMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathDocumentMixin,e.EnrichHandler=MathJax._.a11y[\"semantic-enrich\"].EnrichHandler},function(t,e,i){\"use strict\";var o,r=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ComplexityVisitor=void 0;var s=i(8),l=i(4),a=i(5),c=function(t){function e(e,i){var o=t.call(this,e)||this;o.complexity={text:.5,token:.5,child:1,script:.8,sqrt:2,subsup:2,underover:2,fraction:2,enclose:2,action:2,phantom:0,xml:2,glyph:2};var r=o.constructor;return o.options=a.userOptions(a.defaultOptions({},r.OPTIONS),i),o.collapse=new o.options.Collapse(o),o.factory=e,o}return r(e,t),e.prototype.visitTree=function(e){t.prototype.visitTree.call(this,e,!0),this.options.makeCollapsible&&this.collapse.makeCollapse(e)},e.prototype.visitNode=function(e,i){if(!e.attributes.get(\"data-semantic-complexity\"))return t.prototype.visitNode.call(this,e,i)},e.prototype.visitDefault=function(t,e){var i;if(t.isToken){var o=t.getText();i=this.complexity.text*o.length+this.complexity.token}else i=this.childrenComplexity(t);return this.setComplexity(t,i,e)},e.prototype.visitMfracNode=function(t,e){var i=this.childrenComplexity(t)*this.complexity.script+this.complexity.fraction;return this.setComplexity(t,i,e)},e.prototype.visitMsqrtNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.sqrt;return this.setComplexity(t,i,e)},e.prototype.visitMrootNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.sqrt-(1-this.complexity.script)*this.getComplexity(t.childNodes[1]);return this.setComplexity(t,i,e)},e.prototype.visitMphantomNode=function(t,e){return this.setComplexity(t,this.complexity.phantom,e)},e.prototype.visitMsNode=function(t,e){var i=(t.attributes.get(\"lquote\")+t.getText()+t.attributes.get(\"rquote\")).length*this.complexity.text;return this.setComplexity(t,i,e)},e.prototype.visitMsubsupNode=function(e,i){t.prototype.visitDefault.call(this,e,!0);var o=e.childNodes[e.sub],r=e.childNodes[e.sup],n=e.childNodes[e.base],s=Math.max(o?this.getComplexity(o):0,r?this.getComplexity(r):0)*this.complexity.script;return s+=this.complexity.child*((o?1:0)+(r?1:0)),s+=n?this.getComplexity(n)+this.complexity.child:0,s+=this.complexity.subsup,this.setComplexity(e,s,i)},e.prototype.visitMsubNode=function(t,e){return this.visitMsubsupNode(t,e)},e.prototype.visitMsupNode=function(t,e){return this.visitMsubsupNode(t,e)},e.prototype.visitMunderoverNode=function(e,i){t.prototype.visitDefault.call(this,e,!0);var o=e.childNodes[e.under],r=e.childNodes[e.over],n=e.childNodes[e.base],s=Math.max(o?this.getComplexity(o):0,r?this.getComplexity(r):0)*this.complexity.script;return n&&(s=Math.max(this.getComplexity(n),s)),s+=this.complexity.child*((o?1:0)+(r?1:0)+(n?1:0)),s+=this.complexity.underover,this.setComplexity(e,s,i)},e.prototype.visitMunderNode=function(t,e){return this.visitMunderoverNode(t,e)},e.prototype.visitMoverNode=function(t,e){return this.visitMunderoverNode(t,e)},e.prototype.visitMencloseNode=function(t,e){var i=this.childrenComplexity(t)+this.complexity.enclose;return this.setComplexity(t,i,e)},e.prototype.visitMactionNode=function(t,e){this.childrenComplexity(t);var i=this.getComplexity(t.selected);return this.setComplexity(t,i,e)},e.prototype.visitMsemanticsNode=function(t,e){var i=t.childNodes[0],o=0;return i&&(this.visitNode(i,!0),o=this.getComplexity(i)),this.setComplexity(t,o,e)},e.prototype.visitAnnotationNode=function(t,e){return this.setComplexity(t,this.complexity.xml,e)},e.prototype.visitAnnotation_xmlNode=function(t,e){return this.setComplexity(t,this.complexity.xml,e)},e.prototype.visitMglyphNode=function(t,e){return this.setComplexity(t,this.complexity.glyph,e)},e.prototype.getComplexity=function(t){var e=t.getProperty(\"collapsedComplexity\");return null!=e?e:t.attributes.get(\"data-semantic-complexity\")},e.prototype.setComplexity=function(t,e,i){return i&&(this.options.identifyCollapsible&&(e=this.collapse.check(t,e)),t.attributes.set(\"data-semantic-complexity\",e)),e},e.prototype.childrenComplexity=function(e){var i,o;t.prototype.visitDefault.call(this,e,!0);var r=0;try{for(var s=n(e.childNodes),l=s.next();!l.done;l=s.next()){var a=l.value;r+=this.getComplexity(a)}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return e.childNodes.length>1&&(r+=e.childNodes.length*this.complexity.child),r},e.OPTIONS={identifyCollapsible:!0,makeCollapsible:!0,Collapse:l.Collapse},e}(s.MmlVisitor);e.ComplexityVisitor=c},function(t,e,i){\"use strict\";var o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,i=e&&t[e],o=0;if(i)return i.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Collapse=void 0;var r=function(){function t(e){var i=this;this.cutoff={identifier:3,number:3,text:10,infixop:15,relseq:15,multirel:15,fenced:18,bigop:20,integral:20,fraction:12,sqrt:9,root:12,vector:15,matrix:15,cases:15,superscript:9,subscript:9,subsup:9,punctuated:{endpunct:t.NOCOLLAPSE,startpunct:t.NOCOLLAPSE,value:12}},this.marker={identifier:\"x\",number:\"#\",text:\"...\",appl:{\"limit function\":\"lim\",value:\"f()\"},fraction:\"/\",sqrt:\"\\u221a\",root:\"\\u221a\",superscript:\"\\u25fd\\u02d9\",subscript:\"\\u25fd.\",subsup:\"\\u25fd:\",vector:{binomial:\"(:)\",determinant:\"|:|\",value:\"\\u27e8:\\u27e9\"},matrix:{squarematrix:\"[::]\",rowvector:\"\\u27e8\\u22ef\\u27e9\",columnvector:\"\\u27e8\\u22ee\\u27e9\",determinant:\"|::|\",value:\"(::)\"},cases:\"{:\",infixop:{addition:\"+\",subtraction:\"\\u2212\",multiplication:\"\\u22c5\",implicit:\"\\u22c5\",value:\"+\"},punctuated:{text:\"...\",value:\",\"}},this.collapse=new Map([[\"fenced\",function(t,e){return(e=i.uncollapseChild(e,t,1))>i.cutoff.fenced&&\"leftright\"===t.attributes.get(\"data-semantic-role\")&&(e=i.recordCollapse(t,e,i.getText(t.childNodes[0])+i.getText(t.childNodes[t.childNodes.length-1]))),e}],[\"appl\",function(t,e){if(i.canUncollapse(t,2,2)){e=i.complexity.visitNode(t,!1);var o=i.marker.appl,r=o[t.attributes.get(\"data-semantic-role\")]||o.value;e=i.recordCollapse(t,e,r)}return e}],[\"sqrt\",function(t,e){return(e=i.uncollapseChild(e,t,0))>i.cutoff.sqrt&&(e=i.recordCollapse(t,e,i.marker.sqrt)),e}],[\"root\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.sqrt&&(e=i.recordCollapse(t,e,i.marker.sqrt)),e}],[\"enclose\",function(t,e){if(1===i.splitAttribute(t,\"children\").length){var o=i.canUncollapse(t,1);if(o){var r=o.getProperty(\"collapse-marker\");i.unrecordCollapse(o),e=i.recordCollapse(t,i.complexity.visitNode(t,!1),r)}}return e}],[\"bigop\",function(t,e){if(e>i.cutoff.bigop||!t.isKind(\"mo\")){var o=i.splitAttribute(t,\"content\").pop(),r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"integral\",function(t,e){if(e>i.cutoff.integral||!t.isKind(\"mo\")){var o=i.splitAttribute(t,\"content\").pop(),r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"relseq\",function(t,e){if(e>i.cutoff.relseq){var o=i.splitAttribute(t,\"content\")[0],r=i.findChildText(t,o);e=i.recordCollapse(t,e,r)}return e}],[\"multirel\",function(t,e){if(e>i.cutoff.relseq){var o=i.splitAttribute(t,\"content\")[0],r=i.findChildText(t,o)+\"\\u22ef\";e=i.recordCollapse(t,e,r)}return e}],[\"superscript\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.superscript&&(e=i.recordCollapse(t,e,i.marker.superscript)),e}],[\"subscript\",function(t,e){return(e=i.uncollapseChild(e,t,0,2))>i.cutoff.subscript&&(e=i.recordCollapse(t,e,i.marker.subscript)),e}],[\"subsup\",function(t,e){return(e=i.uncollapseChild(e,t,0,3))>i.cutoff.subsup&&(e=i.recordCollapse(t,e,i.marker.subsup)),e}]]),this.idCount=0,this.complexity=e}return t.prototype.check=function(t,e){var i=t.attributes.get(\"data-semantic-type\");return this.collapse.has(i)?this.collapse.get(i).call(this,t,e):this.cutoff.hasOwnProperty(i)?this.defaultCheck(t,e,i):e},t.prototype.defaultCheck=function(t,e,i){var o=t.attributes.get(\"data-semantic-role\"),r=this.cutoff[i];if(e>(\"number\"==typeof r?r:r[o]||r.value)){var n=this.marker[i]||\"??\",s=\"string\"==typeof n?n:n[o]||n.value;e=this.recordCollapse(t,e,s)}return e},t.prototype.recordCollapse=function(t,e,i){return i=\"\\u25c2\"+i+\"\\u25b8\",t.setProperty(\"collapse-marker\",i),t.setProperty(\"collapse-complexity\",e),i.length*this.complexity.complexity.text},t.prototype.unrecordCollapse=function(t){var e=t.getProperty(\"collapse-complexity\");null!=e&&(t.attributes.set(\"data-semantic-complexity\",e),t.removeProperty(\"collapse-complexity\"),t.removeProperty(\"collapse-marker\"))},t.prototype.canUncollapse=function(t,e,i){if(void 0===i&&(i=1),this.splitAttribute(t,\"children\").length===i){var o=1===t.childNodes.length&&t.childNodes[0].isInferred?t.childNodes[0]:t;if(o&&o.childNodes[e]){var r=o.childNodes[e];if(r.getProperty(\"collapse-marker\"))return r}}return null},t.prototype.uncollapseChild=function(t,e,i,o){void 0===o&&(o=1);var r=this.canUncollapse(e,i,o);return r&&(this.unrecordCollapse(r),r.parent!==e&&r.parent.attributes.set(\"data-semantic-complexity\",void 0),t=this.complexity.visitNode(e,!1)),t},t.prototype.splitAttribute=function(t,e){return(t.attributes.get(\"data-semantic-\"+e)||\"\").split(/,/)},t.prototype.getText=function(t){var e=this;return t.isToken?t.getText():t.childNodes.map((function(t){return e.getText(t)})).join(\"\")},t.prototype.findChildText=function(t,e){var i=this.findChild(t,e);return this.getText(i.coreMO()||i)},t.prototype.findChild=function(t,e){var i,r;if(!t||t.attributes.get(\"data-semantic-id\")===e)return t;if(!t.isToken)try{for(var n=o(t.childNodes),s=n.next();!s.done;s=n.next()){var l=s.value,a=this.findChild(l,e);if(a)return a}}catch(t){i={error:t}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return null},t.prototype.makeCollapse=function(t){var e=[];t.walkTree((function(t){t.getProperty(\"collapse-marker\")&&e.push(t)})),this.makeActions(e)},t.prototype.makeActions=function(t){var e,i;try{for(var r=o(t),n=r.next();!n.done;n=r.next()){var s=n.value;this.makeAction(s)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(e)throw e.error}}},t.prototype.makeId=function(){return\"mjx-collapse-\"+this.idCount++},t.prototype.makeAction=function(t){t.isKind(\"math\")&&(t=this.addMrow(t));var e=this.complexity.factory,i=t.getProperty(\"collapse-marker\"),o=t.parent,r=e.create(\"maction\",{actiontype:\"toggle\",selection:2,\"data-collapsible\":!0,id:this.makeId(),\"data-semantic-complexity\":t.attributes.get(\"data-semantic-complexity\")},[e.create(\"mtext\",{mathcolor:\"blue\"},[e.create(\"text\").setText(i)])]);r.inheritAttributesFrom(t),t.attributes.set(\"data-semantic-complexity\",t.getProperty(\"collapse-complexity\")),t.removeProperty(\"collapse-marker\"),t.removeProperty(\"collapse-complexity\"),o.replaceChild(r,t),r.appendChild(t)},t.prototype.addMrow=function(t){var e,i,r=this.complexity.factory.create(\"mrow\",null,t.childNodes[0].childNodes);t.childNodes[0].setChildren([r]);var n=t.attributes.getAllAttributes();try{for(var s=o(Object.keys(n)),l=s.next();!l.done;l=s.next()){var a=l.value;\"data-semantic-\"===a.substr(0,14)&&(r.attributes.set(a,n[a]),delete n[a])}}catch(t){e={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(e)throw e.error}}return r.setProperty(\"collapse-marker\",t.getProperty(\"collapse-marker\")),r.setProperty(\"collapse-complexity\",t.getProperty(\"collapse-complexity\")),t.removeProperty(\"collapse-marker\"),t.removeProperty(\"collapse-complexity\"),r},t.NOCOLLAPSE=1e7,t}();e.Collapse=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=MathJax._.a11y.sre.sreReady},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=MathJax._.core.MmlTree.MmlVisitor.MmlVisitor},function(t,e,i){\"use strict\";i.r(e);var o=i(0),r=i(1),n=i(4),s=i(3),l=i(2),a=i(6);Object(o.combineWithMathJax)({_:{a11y:{complexity_ts:r,complexity:{collapse:n,visitor:s},\"semantic-enrich\":l,sre:a}}}),MathJax.startup&&(MathJax.startup.extendHandler((function(t){return Object(r.ComplexityHandler)(t)})),Object(o.combineDefaults)(MathJax.config,\"options\",MathJax.config[\"a11y/complexity\"]||{}))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/a11y/explorer.js",
    "content": "!function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=14)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=MathJax._.a11y.sre.sreReady},function(t,e,o){\"use strict\";var r=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],r=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractExplorer=void 0,o(0);var a=function(){function t(t,e,o){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];this.document=t,this.region=e,this.node=o,this.stoppable=!0,this.events=[],this.highlighter=this.getHighlighter(),this._active=!1}return t.stopEvent=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopImmediatePropagation?t.stopImmediatePropagation():t.stopPropagation&&t.stopPropagation(),t.cancelBubble=!0},t.create=function(t,e,o){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var a=new(this.bind.apply(this,n([void 0,t,e,o],r)));return a},t.prototype.Events=function(){return this.events},Object.defineProperty(t.prototype,\"active\",{get:function(){return this._active},set:function(t){this._active=t},enumerable:!1,configurable:!0}),t.prototype.Attach=function(){this.AddEvents()},t.prototype.Detach=function(){this.RemoveEvents()},t.prototype.Start=function(){this.highlighter=this.getHighlighter(),this.active=!0},t.prototype.Stop=function(){this.active&&(this.region.Clear(),this.region.Hide(),this.active=!1)},t.prototype.AddEvents=function(){var t,e;try{for(var o=i(this.events),n=o.next();!n.done;n=o.next()){var a=r(n.value,2),s=a[0],l=a[1];this.node.addEventListener(s,l)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}},t.prototype.RemoveEvents=function(){var t,e;try{for(var o=i(this.events),n=o.next();!n.done;n=o.next()){var a=r(n.value,2),s=a[0],l=a[1];this.node.removeEventListener(s,l)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}},t.prototype.Update=function(t){void 0===t&&(t=!1)},t.prototype.getHighlighter=function(){var t=this.document.options.a11y,e={color:t.foregroundColor.toLowerCase(),alpha:t.foregroundOpacity/100},o={color:t.backgroundColor.toLowerCase(),alpha:t.backgroundOpacity/100};return sre.HighlighterFactory.highlighter(o,e,{renderer:this.document.outputJax.name,browser:\"v3\"})},t.prototype.stopEvent=function(e){this.stoppable&&t.stopEvent(e)},t}();e.AbstractExplorer=a},function(t,e,o){\"use strict\";var r,n,i,a,s=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HoverRegion=e.LiveRegion=e.ToolTip=e.StringRegion=e.DummyRegion=e.AbstractRegion=void 0;var l=o(13);o(0);var c=function(){function t(t){this.document=t,this.CLASS=this.constructor,this.AddStyles(),this.AddElement()}return t.prototype.AddStyles=function(){if(!this.CLASS.styleAdded){var t=this.document.adaptor.node(\"style\");t.innerHTML=this.CLASS.style.cssText,this.document.adaptor.head(this.document.adaptor.document).appendChild(t),this.CLASS.styleAdded=!0}},t.prototype.AddElement=function(){var t=this.document.adaptor.node(\"div\");t.classList.add(this.CLASS.className),t.style.backgroundColor=\"white\",this.div=t,this.inner=this.document.adaptor.node(\"div\"),this.div.appendChild(this.inner),this.document.adaptor.body(this.document.adaptor.document).appendChild(this.div)},t.prototype.Show=function(t,e){this.position(t),this.highlight(e),this.div.classList.add(this.CLASS.className+\"_Show\")},t.prototype.Hide=function(){this.div.classList.remove(this.CLASS.className+\"_Show\")},t.prototype.stackRegions=function(t){for(var e=t.getBoundingClientRect(),o=0,r=Number.POSITIVE_INFINITY,n=this.document.adaptor.document.getElementsByClassName(this.CLASS.className+\"_Show\"),i=0,a=void 0;a=n[i];i++)a!==this.div&&(o=Math.max(a.getBoundingClientRect().bottom,o),r=Math.min(a.getBoundingClientRect().left,r));var s=(o||e.bottom+10)+window.pageYOffset,l=(r<Number.POSITIVE_INFINITY?r:e.left)+window.pageXOffset;this.div.style.top=s+\"px\",this.div.style.left=l+\"px\"},t.styleAdded=!1,t}();e.AbstractRegion=c;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.Clear=function(){},e.prototype.Update=function(){},e.prototype.Hide=function(){},e.prototype.Show=function(){},e.prototype.AddElement=function(){},e.prototype.AddStyles=function(){},e.prototype.position=function(){},e.prototype.highlight=function(t){},e}(c);e.DummyRegion=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.Clear=function(){this.Update(\"\"),this.inner.style.top=\"\",this.inner.style.backgroundColor=\"\"},e.prototype.Update=function(t){this.inner.textContent=\"\",this.inner.textContent=t},e.prototype.position=function(t){this.stackRegions(t)},e.prototype.highlight=function(t){var e=t.colorString();this.inner.style.backgroundColor=e.background,this.inner.style.color=e.foreground},e}(c);e.StringRegion=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.className=\"MJX_ToolTip\",e.style=new l.CssStyles(((n={})[\".\"+e.className]={position:\"absolute\",display:\"inline-block\",height:\"1px\",width:\"1px\"},n[\".\"+e.className+\"_Show\"]={width:\"auto\",height:\"auto\",opacity:1,\"text-align\":\"center\",\"border-radius\":\"6px\",padding:\"0px 0px\",\"border-bottom\":\"1px dotted black\",position:\"absolute\",\"z-index\":202},n)),e}(u);e.ToolTip=p;var d=function(t){function e(e){var o=t.call(this,e)||this;return o.document=e,o.div.setAttribute(\"aria-live\",\"assertive\"),o}return s(e,t),e.className=\"MJX_LiveRegion\",e.style=new l.CssStyles(((i={})[\".\"+e.className]={position:\"absolute\",top:\"0\",height:\"1px\",width:\"1px\",padding:\"1px\",overflow:\"hidden\"},i[\".\"+e.className+\"_Show\"]={top:\"0\",position:\"absolute\",width:\"auto\",height:\"auto\",padding:\"0px 0px\",opacity:1,\"z-index\":\"202\",left:0,right:0,margin:\"0 auto\",\"background-color\":\"rgba(0, 0, 255, 0.2)\",\"box-shadow\":\"0px 10px 20px #888\",border:\"2px solid #CCCCCC\"},i)),e}(u);e.LiveRegion=d;var f=function(t){function e(e){var o=t.call(this,e)||this;return o.document=e,o.inner.style.lineHeight=\"0\",o}return s(e,t),e.prototype.position=function(t){var e,o=t.getBoundingClientRect(),r=this.div.getBoundingClientRect(),n=o.left+o.width/2-r.width/2;switch(n=n<0?0:n,n+=window.pageXOffset,this.document.options.a11y.align){case\"top\":e=o.top-r.height-10;break;case\"bottom\":e=o.bottom+10;break;case\"center\":default:e=o.top+o.height/2-r.height/2}e=(e+=window.pageYOffset)<0?0:e,this.div.style.top=e+\"px\",this.div.style.left=n+\"px\"},e.prototype.highlight=function(t){if(!this.inner.firstChild||this.inner.firstChild.hasAttribute(\"sre-highlight\")){var e=t.colorString();this.inner.style.backgroundColor=e.background,this.inner.style.color=e.foreground}},e.prototype.Show=function(e,o){this.div.style.fontSize=this.document.options.a11y.magnify,this.Update(e),t.prototype.Show.call(this,e,o)},e.prototype.Clear=function(){this.inner.textContent=\"\",this.inner.style.top=\"\",this.inner.style.backgroundColor=\"\"},e.prototype.Update=function(t){this.Clear();var e=this.cloneNode(t);this.inner.appendChild(e)},e.prototype.cloneNode=function(t){var e=t.cloneNode(!0);if(\"MJX-CONTAINER\"!==e.nodeName){\"g\"!==e.nodeName&&(e.style.marginLeft=e.style.marginRight=\"0\");for(var o=t;o&&\"MJX-CONTAINER\"!==o.nodeName;)o=o.parentNode;if(\"MJX-MATH\"!==e.nodeName&&\"svg\"!==e.nodeName)if(\"svg\"===(e=o.firstChild.cloneNode(!1).appendChild(e).parentNode).nodeName){e.firstChild.setAttribute(\"transform\",\"matrix(1 0 0 -1 0 0)\");var r=parseFloat(e.getAttribute(\"viewBox\").split(/ /)[2]),n=parseFloat(e.getAttribute(\"width\")),i=t.getBBox(),a=i.x,s=i.y,l=i.width,c=i.height;e.setAttribute(\"viewBox\",[a,-(s+c),l,c].join(\" \")),e.removeAttribute(\"style\"),e.setAttribute(\"width\",n/r*l+\"ex\"),e.setAttribute(\"height\",n/r*c+\"ex\"),o.setAttribute(\"sre-highlight\",\"false\")}(e=o.cloneNode(!1).appendChild(e).parentNode).style.margin=\"0\"}return e},e.className=\"MJX_HoverRegion\",e.style=new l.CssStyles(((a={})[\".\"+e.className]={position:\"absolute\",height:\"1px\",width:\"1px\",padding:\"1px\",overflow:\"hidden\"},a[\".\"+e.className+\"_Show\"]={position:\"absolute\",width:\"max-content\",height:\"auto\",padding:\"0px 0px\",opacity:1,\"z-index\":\"202\",margin:\"0 auto\",\"background-color\":\"rgba(0, 0, 255, 0.2)\",\"box-shadow\":\"0px 10px 20px #888\",border:\"2px solid #CCCCCC\"},a)),e}(c);e.HoverRegion=f},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,o=1,r=arguments.length;o<r;o++)for(var n in e=arguments[o])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],r=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a},l=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.setA11yOption=e.setA11yOptions=e.ExplorerHandler=e.ExplorerMathDocumentMixin=e.ExplorerMathItemMixin=void 0;var c=o(8),h=o(9),u=o(10),p=o(11),d=o(12),f=o(5),y=o(6),v=o(7),g=o(2);function m(t,e){return function(t){function o(){var e=null!==t&&t.apply(this,arguments)||this;return e.explorers={},e.attached=[],e.restart=!1,e.refocus=!1,e.savedId=null,e}return n(o,t),o.prototype.explorable=function(t,o){if(void 0===o&&(o=!1),!(this.state()>=c.STATE.EXPLORER)){if(!this.isEscaped&&(t.options.enableExplorer||o)){var r=this.typesetRoot,n=e(this.root);this.savedId&&(this.typesetRoot.setAttribute(\"sre-explorer-id\",this.savedId),this.savedId=null),this.explorers=function(t,e,o){var r,n,i={};try{for(var s=a(Object.keys(_)),l=s.next();!l.done;l=s.next()){var c=l.value;i[c]=_[c](t,e,o)}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return i}(t,r,n),this.attachExplorers(t)}this.state(c.STATE.EXPLORER)}},o.prototype.attachExplorers=function(t){var e,o;this.attached=[];try{for(var r=a(Object.keys(this.explorers)),n=r.next();!n.done;n=r.next()){var i=n.value,s=this.explorers[i];t.options.a11y[i]?(s.Attach(),this.attached.push(s)):s.Detach()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(o=r.return)&&o.call(r)}finally{if(e)throw e.error}}this.addExplorers(this.attached)},o.prototype.rerender=function(e,o){var r,n;void 0===o&&(o=c.STATE.RERENDER),this.savedId=this.typesetRoot.getAttribute(\"sre-explorer-id\"),this.refocus=window.document.activeElement===this.typesetRoot;try{for(var i=a(this.attached),s=i.next();!s.done;s=i.next()){var l=s.value;l.active&&(this.restart=!0,l.Stop())}}catch(t){r={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}t.prototype.rerender.call(this,e,o)},o.prototype.updateDocument=function(e){t.prototype.updateDocument.call(this,e),this.refocus&&this.typesetRoot.focus(),this.restart&&this.attached.forEach((function(t){return t.Start()})),this.refocus=this.restart=!1},o.prototype.addExplorers=function(t){var e,o;if(!(t.length<=1)){var r=null;try{for(var n=a(this.attached),i=n.next();!i.done;i=n.next()){var s=i.value;s instanceof f.AbstractKeyExplorer&&(s.stoppable=!1,r=s)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(e)throw e.error}}r&&(r.stoppable=!0)}},o}(t)}function b(t){var e;return(e=function(t){function e(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];var r=t.apply(this,l(e))||this,n=r.constructor.ProcessBits;n.has(\"explorer\")||n.allocate(\"explorer\");var i=new p.SerializedMmlVisitor(r.mmlFactory),a=function(t){return i.visitTree(t)};return r.options.MathItem=m(r.options.MathItem,a),r.explorerRegions=x(r),r}return n(e,t),e.prototype.explorable=function(){var t,e;if(!this.processed.isSet(\"explorer\")){if(this.options.enableExplorer)try{for(var o=a(this.math),r=o.next();!r.done;r=o.next()){r.value.explorable(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}this.processed.set(\"explorer\")}return this},e.prototype.state=function(e,o){return void 0===o&&(o=!1),t.prototype.state.call(this,e,o),e<c.STATE.EXPLORER&&this.processed.clear(\"explorer\"),this},e}(t)).OPTIONS=i(i({},t.OPTIONS),{enrichSpeech:\"shallow\",enableExplorer:!0,renderActions:u.expandable(i(i({},t.OPTIONS.renderActions),{explorable:[c.STATE.EXPLORER]})),a11y:{align:\"top\",backgroundColor:\"Blue\",backgroundOpacity:20,braille:!1,flame:!1,foregroundColor:\"Black\",foregroundOpacity:100,highlight:\"None\",hover:!1,infoPrefix:!1,infoRole:!1,infoType:!1,keyMagnifier:!1,locale:\"en\",magnification:\"None\",magnify:\"400%\",mouseMagnifier:!1,speech:!0,speechRules:\"mathspeak-default\",subtitles:!0,treeColoring:!1,viewBraille:!1}}),e}function x(t){return{speechRegion:new g.LiveRegion(t),brailleRegion:new g.LiveRegion(t),magnifier:new g.HoverRegion(t),tooltip1:new g.ToolTip(t),tooltip2:new g.ToolTip(t),tooltip3:new g.ToolTip(t)}}c.newState(\"EXPLORER\",160),e.ExplorerMathItemMixin=m,e.ExplorerMathDocumentMixin=b,e.ExplorerHandler=function(t,e){return void 0===e&&(e=null),!t.documentClass.prototype.enrich&&e&&(t=h.EnrichHandler(t,e)),t.documentClass=b(t.documentClass),t};var _={speech:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=(o=f.SpeechExplorer).create.apply(o,l([t,t.explorerRegions.speechRegion,e],r)),a=s(t.options.a11y.speechRules.split(\"-\"),2),c=a[0],h=a[1];return i.speechGenerator.setOptions({locale:t.options.a11y.locale,domain:c,style:h,modality:\"speech\",cache:!1}),i.showRegion=\"subtitles\",i},braille:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=(o=f.SpeechExplorer).create.apply(o,l([t,t.explorerRegions.brailleRegion,e],r));return i.speechGenerator.setOptions({locale:\"nemeth\",domain:\"default\",style:\"default\",modality:\"braille\"}),i.showRegion=\"viewBraille\",i},keyMagnifier:function(t,e){for(var o,r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return(o=f.Magnifier).create.apply(o,l([t,t.explorerRegions.magnifier,e],r))},mouseMagnifier:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ContentHoverer.create(t,t.explorerRegions.magnifier,e,(function(t){return t.hasAttribute(\"data-semantic-type\")}),(function(t){return t}))},hover:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.FlameHoverer.create(t,null,e)},infoType:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip1,e,(function(t){return t.hasAttribute(\"data-semantic-type\")}),(function(t){return t.getAttribute(\"data-semantic-type\")}))},infoRole:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip2,e,(function(t){return t.hasAttribute(\"data-semantic-role\")}),(function(t){return t.getAttribute(\"data-semantic-role\")}))},infoPrefix:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return y.ValueHoverer.create(t,t.explorerRegions.tooltip3,e,(function(t){return t.hasAttribute(\"data-semantic-prefix\")}),(function(t){return t.getAttribute(\"data-semantic-prefix\")}))},flame:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return v.FlameColorer.create(t,null,e)},treeColoring:function(t,e){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];return v.TreeColorer.create.apply(v.TreeColorer,l([t,null,e],o))}};function M(t,e,o){switch(e){case\"magnification\":switch(o){case\"None\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!1,t.options.a11y.mouseMagnifier=!1;break;case\"Keyboard\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!0,t.options.a11y.mouseMagnifier=!1;break;case\"Mouse\":t.options.a11y.magnification=o,t.options.a11y.keyMagnifier=!1,t.options.a11y.mouseMagnifier=!0}break;case\"highlight\":switch(o){case\"None\":t.options.a11y.highlight=o,t.options.a11y.hover=!1,t.options.a11y.flame=!1;break;case\"Hover\":t.options.a11y.highlight=o,t.options.a11y.hover=!0,t.options.a11y.flame=!1;break;case\"Flame\":t.options.a11y.highlight=o,t.options.a11y.hover=!1,t.options.a11y.flame=!0}break;default:t.options.a11y[e]=o}}e.setA11yOptions=function(t,e){var o,r;for(var n in e)void 0!==t.options.a11y[n]&&M(t,n,e[n]);try{for(var i=a(t.math),s=i.next();!s.done;s=i.next()){s.value.attachExplorers(t)}}catch(t){o={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}},e.setA11yOption=M;var S={},O=function(t,e){var o,r,n=sre.ClearspeakPreferences.getLocalePreferences()[e];if(!n){var i=t.findID(\"Accessibility\",\"Speech\",\"Clearspeak\");return i&&i.disable(),null}!function(t,e){var o,r,n=t.pool.lookup(\"speechRules\"),i=function(e){if(S[e])return\"continue\";t.factory.get(\"variable\")(t.factory,{name:\"csprf_\"+e,setter:function(t){S[e]=t,n.setValue(\"clearspeak-\"+sre.ClearspeakPreferences.addPreference(sre.Engine.DOMAIN_TO_STYLES.clearspeak,e,t))},getter:function(){return S[e]||\"Auto\"}},t.pool)};try{for(var s=a(e),l=s.next();!l.done;l=s.next())i(l.value)}catch(t){o={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(o)throw o.error}}}(t,Object.keys(n));var s=[],l=function(t){s.push({title:t,values:n[t].map((function(e){return e.replace(RegExp(\"^\"+t+\"_\"),\"\")})),variable:\"csprf_\"+t})};try{for(var c=a(Object.getOwnPropertyNames(n)),h=c.next();!h.done;h=c.next()){l(h.value)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(r=c.return)&&r.call(c)}finally{if(o)throw o.error}}var u=t.factory.get(\"selectionBox\")(t.factory,{title:\"Clearspeak Preferences\",signature:\"\",order:\"alphabetic\",grid:\"square\",selections:s},t);return{type:\"command\",id:\"ClearspeakPreferences\",content:\"Select Preferences\",action:function(){return u.post(0,0)}}};d.MJContextMenu.DynamicSubmenus.set(\"Clearspeak\",(function(t,e){var o=t.pool.lookup(\"locale\").getValue(),r=O(t,o),n=sre.ClearspeakPreferences.smartPreferences(t.mathItem,o);return r&&n.splice(2,0,r),t.factory.get(\"subMenu\")(t.factory,{items:n,id:\"Clearspeak\"},e)}));var w={de:\"German\",en:\"English\",es:\"Spanish\",fr:\"French\"};d.MJContextMenu.DynamicSubmenus.set(\"A11yLanguage\",(function(t,e){var o,r,n=[];try{for(var i=a(sre.Variables.LOCALES),s=i.next();!s.done;s=i.next()){var l=s.value;\"nemeth\"!==l&&n.push({type:\"radio\",id:l,content:w[l]||l,variable:\"locale\"})}}catch(t){o={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return n.sort((function(t,e){return t.content.localeCompare(e.content,\"en\")})),t.factory.get(\"subMenu\")(t.factory,{items:n,id:\"Language\"},e)}))},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Magnifier=e.SpeechExplorer=e.AbstractKeyExplorer=void 0;var a=o(1),s=o(0),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.events=t.prototype.Events.call(e).concat([[\"keydown\",e.KeyDown.bind(e)],[\"focusin\",e.FocusIn.bind(e)],[\"focusout\",e.FocusOut.bind(e)]]),e.oldIndex=null,e}return n(e,t),e.prototype.FocusIn=function(t){},e.prototype.FocusOut=function(t){this.Stop()},e.prototype.Update=function(t){void 0===t&&(t=!1),(this.active||t)&&(this.highlighter.unhighlight(),this.highlighter.highlight(this.walker.getFocus(!0).getNodes()))},e.prototype.Attach=function(){t.prototype.Attach.call(this),this.oldIndex=this.node.tabIndex,this.node.tabIndex=1,this.node.setAttribute(\"role\",\"application\")},e.prototype.Detach=function(){this.node.tabIndex=this.oldIndex,this.oldIndex=null,this.node.removeAttribute(\"role\"),t.prototype.Detach.call(this)},e.prototype.Stop=function(){this.active&&(this.highlighter.unhighlight(),this.walker.deactivate()),t.prototype.Stop.call(this)},e}(a.AbstractExplorer);e.AbstractKeyExplorer=l;var c=function(t){function e(e,o,r,n){var i=t.call(this,e,o,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.showRegion=\"subtitles\",i.init=!1,i.restarted=!1,i.initWalker(),i}return n(e,t),e.prototype.Start=function(){var e=this,o=this.getOptions();if(!this.init)return this.init=!0,void s.sreReady().then((function(){SRE.engineSetup().locale!==o.locale&&SRE.setupEngine({locale:o.locale}),s.sreReady().then((function(){e.Speech(e.walker),e.Start()}))})).catch((function(t){return console.log(t.message)}));t.prototype.Start.call(this),this.speechGenerator=sre.SpeechGeneratorFactory.generator(\"Direct\"),this.speechGenerator.setOptions(o),this.walker=sre.WalkerFactory.walker(\"table\",this.node,this.speechGenerator,this.highlighter,this.mml),this.walker.activate(),this.Update(),this.document.options.a11y[this.showRegion]&&this.region.Show(this.node,this.highlighter),this.restarted=!0},e.prototype.Update=function(e){void 0===e&&(e=!1),t.prototype.Update.call(this,e),this.region.Update(this.walker.speech());var o=this.speechGenerator.getOptions();\"speech\"===o.modality&&(this.document.options.a11y.speechRules=o.domain+\"-\"+o.style)},e.prototype.Speech=function(t){t.speech(),this.node.setAttribute(\"hasspeech\",\"true\"),this.Update(),this.restarted&&this.document.options.a11y[this.showRegion]&&this.region.Show(this.node,this.highlighter)},e.prototype.KeyDown=function(t){var e=t.keyCode;return 27===e?(this.Stop(),void this.stopEvent(t)):this.active?(this.Move(e),void this.stopEvent(t)):void((32===e&&t.shiftKey||13===e)&&(this.Start(),this.stopEvent(t)))},e.prototype.Move=function(t){this.walker.move(t),this.Update()},e.prototype.initWalker=function(){this.speechGenerator=sre.SpeechGeneratorFactory.generator(\"Tree\");var t=sre.WalkerFactory.walker(\"dummy\",this.node,this.speechGenerator,this.highlighter,this.mml);this.walker=t},e.prototype.getOptions=function(){var t=this.speechGenerator.getOptions(),e=i(this.document.options.a11y.speechRules.split(\"-\"),2),o=e[0],r=e[1];return\"speech\"!==t.modality||t.locale===this.document.options.a11y.locale&&t.domain===o&&t.style===r||(t.domain=o,t.style=r,t.locale=this.document.options.a11y.locale,this.walker.update(t)),t},e}(l);e.SpeechExplorer=c;var h=function(t){function e(e,o,r,n){var i=t.call(this,e,o,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.walker=sre.WalkerFactory.walker(\"table\",i.node,sre.SpeechGeneratorFactory.generator(\"Dummy\"),i.highlighter,i.mml),i}return n(e,t),e.prototype.Update=function(e){void 0===e&&(e=!1),t.prototype.Update.call(this,e),this.showFocus()},e.prototype.Start=function(){t.prototype.Start.call(this),this.region.Show(this.node,this.highlighter),this.walker.activate(),this.Update()},e.prototype.showFocus=function(){var t=this.walker.getFocus().getNodes()[0];this.region.Show(t,this.highlighter)},e.prototype.Move=function(t){this.walker.move(t)&&this.Update()},e.prototype.KeyDown=function(t){var e=t.keyCode;return 27===e?(this.Stop(),void this.stopEvent(t)):this.active&&13!==e?(this.Move(e),void this.stopEvent(t)):void((32===e&&t.shiftKey||13===e)&&(this.Start(),this.stopEvent(t)))},e}(l);e.Magnifier=h},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}),i=this&&this.__read||function(t,e){var o=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!o)return t;var r,n,i=o.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FlameHoverer=e.ContentHoverer=e.ValueHoverer=e.Hoverer=e.AbstractMouseExplorer=void 0;var a=o(2),s=o(1);o(0);var l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.events=t.prototype.Events.call(e).concat([[\"mouseover\",e.MouseOver.bind(e)],[\"mouseout\",e.MouseOut.bind(e)]]),e}return n(e,t),e.prototype.MouseOver=function(t){this.Start()},e.prototype.MouseOut=function(t){this.Stop()},e}(s.AbstractExplorer);e.AbstractMouseExplorer=l;var c=function(t){function e(e,o,r,n,i){var a=t.call(this,e,o,r)||this;return a.document=e,a.region=o,a.node=r,a.nodeQuery=n,a.nodeAccess=i,a}return n(e,t),e.prototype.MouseOut=function(e){e.clientX===this.coord[0]&&e.clientY===this.coord[1]||(this.highlighter.unhighlight(),this.region.Hide(),t.prototype.MouseOut.call(this,e))},e.prototype.MouseOver=function(e){t.prototype.MouseOver.call(this,e);var o=e.target;this.coord=[e.clientX,e.clientY];var r=i(this.getNode(o),2),n=r[0],a=r[1];n&&(this.highlighter.unhighlight(),this.highlighter.highlight([n]),this.region.Update(a),this.region.Show(n,this.highlighter))},e.prototype.getNode=function(t){for(var e=t;t&&t!==this.node;){if(this.nodeQuery(t))return[t,this.nodeAccess(t)];t=t.parentNode}for(t=e;t;){if(this.nodeQuery(t))return[t,this.nodeAccess(t)];var o=t.childNodes[0];t=o&&\"defs\"===o.tagName?t.childNodes[1]:o}return[null,null]},e}(l);e.Hoverer=c;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(c);e.ValueHoverer=h;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(c);e.ContentHoverer=u;var p=function(t){function e(e,o,r){var n=t.call(this,e,new a.DummyRegion(e),r,(function(t){return n.highlighter.isMactionNode(t)}),(function(){}))||this;return n.document=e,n.node=r,n}return n(e,t),e}(c);e.FlameHoverer=p},function(t,e,o){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o])})(t,e)},function(t,e){function o(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TreeColorer=e.FlameColorer=e.AbstractTreeExplorer=void 0;var i=o(1);o(0);var a=function(t){function e(e,o,r,n){var i=t.call(this,e,null,r)||this;return i.document=e,i.region=o,i.node=r,i.mml=n,i.stoppable=!1,i}return n(e,t),e.prototype.Attach=function(){t.prototype.Attach.call(this),this.Start()},e.prototype.Detach=function(){this.Stop(),t.prototype.Detach.call(this)},e}(i.AbstractExplorer);e.AbstractTreeExplorer=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.Start=function(){this.active||(this.active=!0,this.highlighter.highlightAll(this.node))},e.prototype.Stop=function(){this.active&&this.highlighter.unhighlightAll(this.node),this.active=!1},e}(a);e.FlameColorer=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.Start=function(){if(!this.active){this.active=!0;var t=sre.SpeechGeneratorFactory.generator(\"Color\");this.node.hasAttribute(\"hasforegroundcolor\")||(t.generateSpeech(this.node,this.mml),this.node.setAttribute(\"hasforegroundcolor\",\"true\")),this.highlighter.colorizeAll(this.node)}},e.prototype.Stop=function(){this.active&&this.highlighter.uncolorizeAll(this.node),this.active=!1},e}(a);e.TreeColorer=l},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichedMathItemMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathItemMixin,e.EnrichedMathDocumentMixin=MathJax._.a11y[\"semantic-enrich\"].EnrichedMathDocumentMixin,e.EnrichHandler=MathJax._.a11y[\"semantic-enrich\"].EnrichHandler},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MJContextMenu=MathJax._.ui.menu.MJContextMenu.MJContextMenu},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=MathJax._.util.StyleList.CssStyles},function(t,e,o){\"use strict\";o.r(e);var r=o(4),n=o(3),i=o(1),a=o(5),s=o(6),l=o(2),c=o(7),h=o(0);Object(r.combineWithMathJax)({_:{a11y:{explorer_ts:n,explorer:{Explorer:i,KeyExplorer:a,MouseExplorer:s,Region:l,TreeExplorer:c},sre:h}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(n.ExplorerHandler)(t)}))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/a11y/semantic-enrich.js",
    "content": "!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sreReady=void 0;var r=n(8),i=\"undefined\"==typeof window?\"./a11y/sre-node.js\":\"../../../speech-rule-engine/lib/sre_browser.js\",a=\"undefined\"==typeof sre?r.asyncLoad(i):Promise.resolve();e.sreReady=function(){return new Promise((function(t,e){a.then((function(){var n=(new Date).getTime(),r=function(){sre.Engine.isReady()?t():(new Date).getTime()-n<2e4?setTimeout(r,100):e(\"Timed out waiting for Speech-Rule-Engine\")};r()})).catch((function(t){return e(t.message||t)}))}))}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,n){\"use strict\";var r,i=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),a=this&&this.__assign||function(){return(a=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,a=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o},c=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnrichHandler=e.EnrichedMathDocumentMixin=e.EnrichedMathItemMixin=void 0;var l=n(4),u=n(5),h=n(6),p=n(7),f=n(0),d=\"none\";function y(t,e,n){return function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r.prototype.serializeMml=function(t){if(\"outerHTML\"in t)return t.outerHTML;if(\"undefined\"!=typeof Element&&\"undefined\"!=typeof window&&t instanceof Element){var e=window.document.createElement(\"div\");return e.appendChild(t),e.innerHTML}return t.toString()},r.prototype.enrich=function(t,r){if(void 0===r&&(r=!1),!(this.state()>=u.STATE.ENRICHED)){if(!this.isEscaped&&(t.options.enableEnrichment||r)){\"undefined\"!=typeof sre&&sre.Engine.isReady()||l.mathjax.retryAfter(f.sreReady()),t.options.enrichSpeech!==d&&(SRE.setupEngine({speech:t.options.enrichSpeech}),d=t.options.enrichSpeech);var i=new t.options.MathItem(\"\",e);i.math=this.serializeMml(SRE.toEnriched(n(this.root))),i.display=this.display,i.compile(t),this.root=i.root,this.inputData.originalMml=i.math}this.state(u.STATE.ENRICHED)}},r.prototype.attachSpeech=function(t){var e,n;if(!(this.state()>=u.STATE.ATTACHSPEECH)){var r=this.root.attributes.get(\"aria-label\")||this.getSpeech(this.root);if(r){var i=t.adaptor,a=this.typesetRoot;i.setAttribute(a,\"aria-label\",r);try{for(var s=o(i.childNodes(a)),c=s.next();!c.done;c=s.next()){var l=c.value;i.setAttribute(l,\"aria-hidden\",\"true\")}}catch(t){e={error:t}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}}this.state(u.STATE.ATTACHSPEECH)}},r.prototype.getSpeech=function(t){var e,n,r=t.attributes;if(!r)return\"\";var i=r.getExplicit(\"data-semantic-speech\");if(!r.getExplicit(\"data-semantic-parent\")&&i)return i;try{for(var a=o(t.childNodes),s=a.next();!s.done;s=a.next()){var c=s.value,l=this.getSpeech(c);if(null!=l)return l}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}return\"\"},r}(t)}function M(t,e){var n;return(n=function(t){function n(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,c(n))||this;e.setMmlFactory(i.mmlFactory);var a=i.constructor.ProcessBits;a.has(\"enriched\")||(a.allocate(\"enriched\"),a.allocate(\"attach-speech\"));var o=new h.SerializedMmlVisitor(i.mmlFactory),s=function(t){return o.visitTree(t)};return i.options.MathItem=y(i.options.MathItem,e,s),i}return i(n,t),n.prototype.attachSpeech=function(){var t,e;if(!this.processed.isSet(\"attach-speech\")){try{for(var n=o(this.math),r=n.next();!r.done;r=n.next()){r.value.attachSpeech(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.processed.set(\"attach-speech\")}return this},n.prototype.enrich=function(){var t,e;if(!this.processed.isSet(\"enriched\")){if(this.options.enableEnrichment)try{for(var n=o(this.math),r=n.next();!r.done;r=n.next()){r.value.enrich(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.processed.set(\"enriched\")}return this},n.prototype.state=function(e,n){return void 0===n&&(n=!1),t.prototype.state.call(this,e,n),e<u.STATE.ENRICHED&&this.processed.clear(\"enriched\"),this},n}(t)).OPTIONS=a(a({},t.OPTIONS),{enableEnrichment:!0,enrichSpeech:\"none\",renderActions:p.expandable(a(a({},t.OPTIONS.renderActions),{enrich:[u.STATE.ENRICHED],attachSpeech:[u.STATE.ATTACHSPEECH]}))}),n}u.newState(\"ENRICHED\",30),u.newState(\"ATTACHSPEECH\",155),e.EnrichedMathItemMixin=y,e.EnrichedMathDocumentMixin=M,e.EnrichHandler=function(t,e){return e.setAdaptor(t.adaptor),t.documentClass=M(t.documentClass,e),t}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathML=MathJax._.input.mathml_ts.MathML},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DATAMJX=MathJax._.core.MmlTree.SerializedMmlVisitor.DATAMJX,e.toEntity=MathJax._.core.MmlTree.SerializedMmlVisitor.toEntity,e.SerializedMmlVisitor=MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.asyncLoad=MathJax._.util.AsyncLoad.asyncLoad},function(t,e,n){\"use strict\";n.r(e);var r=n(1),i=n(2),a=n(0);Object(r.combineWithMathJax)({_:{a11y:{\"semantic-enrich\":i,sre:a}}});var o=n(3);MathJax.loader&&Object(r.combineDefaults)(MathJax.config.loader,\"a11y/semantic-enrich\",{checkReady:function(){return Object(a.sreReady)()}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(i.EnrichHandler)(t,new o.MathML)}))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/asciimath.js",
    "content": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,i),a.l=!0,a.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)i.d(n,a,function(e){return t[e]}.bind(null,a));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=16)}([function(t,e,i){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var a in e=arguments[i])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},r=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,s=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(n=s.next()).done;)r.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}return r};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AsciiMath=void 0;var o=i(3),l=i(4),u=i(12),h=i(1),p=function(t){function e(i){var n=this,a=r(u.separateOptions(i,h.FindAsciiMath.OPTIONS,e.OPTIONS),3),s=a[1],o=a[2];return(n=t.call(this,o)||this).findAsciiMath=n.options.FindAsciiMath||new h.FindAsciiMath(s),n}return a(e,t),e.prototype.compile=function(t,e){return l.LegacyAsciiMath.Compile(t.math,t.display)},e.prototype.findMath=function(t){return this.findAsciiMath.findMath(t)},e.NAME=\"AsciiMath\",e.OPTIONS=s(s({},o.AbstractInputJax.OPTIONS),{FindAsciiMath:null}),e}(o.AbstractInputJax);e.AsciiMath=p},function(t,e,i){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__read||function(t,e){var i=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,s=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(n=s.next()).done;)r.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}return r};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindAsciiMath=void 0;var r=i(13),o=i(14),l=i(15),u=function(t){function e(e){var i=t.call(this,e)||this;return i.getPatterns(),i}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,i=[];this.end={},e.delimiters.forEach((function(e){return t.addPattern(i,e,!1)})),this.start=new RegExp(i.join(\"|\"),\"g\"),this.hasPatterns=i.length>0},e.prototype.addPattern=function(t,e,i){var n=s(e,2),a=n[0],r=n[1];t.push(o.quotePattern(a)),this.end[a]=[r,i,new RegExp(o.quotePattern(r),\"g\")]},e.prototype.findEnd=function(t,e,i,n){var a=s(n,3),r=a[1],o=a[2],u=o.lastIndex=i.index+i[0].length,h=o.exec(t);return h?l.protoItem(i[0],t.substr(u,h.index-u),h[0],e,i.index,h.index+h[0].length,r):null},e.prototype.findMathInString=function(t,e,i){var n,a;for(this.start.lastIndex=0;n=this.start.exec(i);)(a=this.findEnd(i,e,n,this.end[n[0]]))&&(t.push(a),this.start.lastIndex=a.end.n)},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var i=0,n=t.length;i<n;i++)this.findMathInString(e,i,t[i]);return e},e.OPTIONS={delimiters:[[\"`\",\"`\"]]},e}(r.AbstractFindMath);e.FindAsciiMath=u},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,i){(function(t){MathJax=Object.assign(t.MathJax||{},i(6).MathJax),MathJax.config&&MathJax.config.asciimath&&MathJax.Hub.Config({AsciiMath:MathJax.config.asciimath}),MathJax.Ajax.Preloading(\"[MathJax]/jax/input/AsciiMath/config.js\",\"[MathJax]/jax/input/AsciiMath/jax.js\",\"[MathJax]/jax/element/mml/jax.js\"),i(7),i(8),i(9),i(10);var n=new(0,i(11).MmlFactory);e.LegacyAsciiMath={Compile:function(t,e){var i={type:\"math/asciimath\",innerText:t,MathJax:{}},a=MathJax.InputJax.AsciiMath.Translate(i).root.toMmlNode(n);return a.setInheritedAttributes({},e,0,!1),a},Translate:function(t,e){return this.Compile(t,e)}}}).call(this,i(5))},function(t,e){var i;i=function(){return this}();try{i=i||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(i=window)}t.exports=i},function(t,e){var i,n,a,s,r,o,l={debug:!0},u={MathJax:l},h={},p=null;e.MathJax=l,function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=[],n=function(t){var e=t.constructor;for(var i in e||(e=function(){}),t)\"constructor\"!==i&&t.hasOwnProperty(i)&&(e[i]=t[i]);return e};e.Object=n({constructor:function(){return arguments.callee.Init.call(this,arguments)},Subclass:function(t,e){var n=function(){return arguments.callee.Init.call(this,arguments)};return n.SUPER=this,n.Init=this.Init,n.Subclass=this.Subclass,n.Augment=this.Augment,n.protoFunction=this.protoFunction,n.can=this.can,n.has=this.has,n.isa=this.isa,n.prototype=new this(i),n.prototype.constructor=n,n.Augment(t,e),n},Init:function(t){var e=this;return 1===t.length&&t[0]===i?e:(e instanceof t.callee||(e=new t.callee(i)),e.Init.apply(e,t)||e)},Augment:function(t,e){var i;if(null!=t){for(i in t)t.hasOwnProperty(i)&&this.protoFunction(i,t[i]);t.toString!==this.prototype.toString&&t.toString!=={}.toString&&this.protoFunction(\"toString\",t.toString)}if(null!=e)for(i in e)e.hasOwnProperty(i)&&(this[i]=e[i]);return this},protoFunction:function(t,e){this.prototype[t]=e,\"function\"==typeof e&&(e.SUPER=this.SUPER.prototype)},prototype:{Init:function(){},SUPER:function(t){return t.callee.SUPER},can:function(t){return\"function\"==typeof this[t]},has:function(t){return void 0!==this[t]},isa:function(t){return t instanceof Object&&this instanceof t}},can:function(t){return this.prototype.can.call(this,t)},has:function(t){return this.prototype.has.call(this,t)},isa:function(t){for(var e=this;e;){if(e===t)return!0;e=e.SUPER}return!1},SimpleSUPER:n({constructor:function(t){return this.SimpleSUPER.define(t)},define:function(t){var e={};if(null!=t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=this.wrap(i,t[i]));t.toString!==this.prototype.toString&&t.toString!=={}.toString&&(e.toString=this.wrap(\"toString\",t.toString))}return e},wrap:function(t,e){if(\"function\"!=typeof e||!e.toString().match(/\\.\\s*SUPER\\s*\\(/))return e;var i=function(){this.SUPER=i.SUPER[t];try{var n=e.apply(this,arguments)}catch(t){throw delete this.SUPER,t}return delete this.SUPER,n};return i.toString=function(){return e.toString.apply(e,arguments)},i}})}),e.Object.isArray=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},e.Object.Array=Array}(),function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=function(t){var e=function(){return arguments.callee.execute.apply(arguments.callee,arguments)};for(var n in i.prototype)i.prototype.hasOwnProperty(n)&&(e[n]=void 0!==t[n]?t[n]:i.prototype[n]);return e.toString=i.prototype.toString,e};i.prototype={isCallback:!0,hook:function(){},data:[],object:u,execute:function(){if(!this.called||this.autoReset)return this.called=!this.autoReset,this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var n=function(t){return\"function\"==typeof t&&t.isCallback},a=function(t){return eval.call(u,t)},s=function(){if(a(\"var __TeSt_VaR__ = 1\"),u.__TeSt_VaR__)try{delete u.__TeSt_VaR__}catch(t){u.__TeSt_VaR__=null}else a=u.execScript?function(t){e.__code=t,t=\"try {MathJax.__result = eval(MathJax.__code)} catch(err) {MathJax.__result = err}\",u.execScript(t);var i=e.__result;if(delete e.__result,delete e.__code,i instanceof Error)throw i;return i}:function(t){e.__code=t,t=\"try {MathJax.__result = eval(MathJax.__code)} catch(err) {MathJax.__result = err}\";var i=p.getElementsByTagName(\"head\")[0];i||(i=p.body);var n=p.createElement(\"script\");n.appendChild(p.createTextNode(t)),i.appendChild(n),i.removeChild(n);var a=e.__result;if(delete e.__result,delete e.__code,a instanceof Error)throw a;return a};s=null},r=function(t,e){if(arguments.length>1&&(t=2===arguments.length&&\"function\"!=typeof arguments[0]&&arguments[0]instanceof Object&&\"number\"==typeof arguments[1]?[].slice.call(t,e):[].slice.call(arguments,0)),t instanceof Array&&1===t.length&&(t=t[0]),\"function\"==typeof t)return t.execute===i.prototype.execute?t:i({hook:t});if(t instanceof Array){if(\"string\"==typeof t[0]&&t[1]instanceof Object&&\"function\"==typeof t[1][t[0]])return i({hook:t[1][t[0]],object:t[1],data:t.slice(2)});if(\"function\"==typeof t[0])return i({hook:t[0],data:t.slice(1)});if(\"function\"==typeof t[1])return i({hook:t[1],object:t[0],data:t.slice(2)})}else{if(\"string\"==typeof t)return s&&s(),i({hook:a,data:[t]});if(t instanceof Object)return i(t);if(void 0===t)return i({})}throw Error(\"Can't make callback from given data\")},o=function(t,e){(t=r(t)).called||(c(t,e),e.pending++)},h=function(){var t=this.signal;delete this.signal,this.execute=this.oldExecute,delete this.oldExecute;var e=this.execute.apply(this,arguments);if(n(e)&&!e.called)c(e,t);else for(var i=0,a=t.length;i<a;i++)t[i].pending--,t[i].pending<=0&&t[i].call()},c=function(t,e){e instanceof Array||(e=[e]),t.signal?1===e.length?t.signal.push(e[0]):t.signal=t.signal.concat(e):(t.oldExecute=t.execute,t.execute=h,t.signal=e)},d=function(t){(t=r(t)).pending=0;for(var e=1,i=arguments.length;e<i;e++)arguments[e]&&o(arguments[e],t);if(0===t.pending){var a=t();n(a)&&(t=a)}return t},m=l.Object.Subclass({Init:function(t){this.hooks=[],this.remove=[],this.reset=t,this.running=!1},Add:function(t,e){null==e&&(e=10),n(t)||(t=r(t)),t.priority=e;for(var i=this.hooks.length;i>0&&e<this.hooks[i-1].priority;)i--;return this.hooks.splice(i,0,t),t},Remove:function(t){for(var e=0,i=this.hooks.length;e<i;e++)if(this.hooks[e]===t)return void(this.running?this.remove.push(e):this.hooks.splice(e,1))},Execute:function(){var t=[{}];this.running=!0;for(var e=0,i=this.hooks.length;e<i;e++){this.reset&&this.hooks[e].reset();var a=this.hooks[e].apply(u,arguments);n(a)&&!a.called&&t.push(a)}return this.running=!1,this.remove.length&&this.RemovePending(),1===t.length?null:2===t.length?t[1]:d.apply({},t)},RemovePending:function(){this.remove=this.remove.sort();for(var t=this.remove.length-1;t>=0;t--)this.hooks.splice(t,1);this.remove=[]}}),f=e.Object.Subclass({Init:function(){this.pending=this.running=0,this.queue=[],this.Push.apply(this,arguments)},Push:function(){for(var t,e=0,i=arguments.length;e<i;e++)(t=r(arguments[e]))!==arguments[e]||t.called||(t=r([\"wait\",this,t])),this.queue.push(t);return this.running||this.pending||this.Process(),t},Process:function(t){for(;!this.running&&!this.pending&&this.queue.length;){var e=this.queue[0];t=this.queue.slice(1),this.queue=[],this.Suspend();var i=e();this.Resume(),t.length&&(this.queue=t.concat(this.queue)),n(i)&&!i.called&&o(i,this)}},Suspend:function(){this.running++},Resume:function(){this.running&&this.running--},call:function(){this.Process.apply(this,arguments)},wait:function(t){return t}}),g=f.Subclass({Init:function(t){f.prototype.Init.call(this),this.name=t,this.posted=[],this.listeners=m(!0),this.posting=!1,this.callback=null},Post:function(t,e,i){if(e=r(e),this.posting||this.pending)this.Push([\"Post\",this,t,e,i]);else{this.callback=e,e.reset(),i||this.posted.push(t),this.Suspend(),this.posting=!0;var a=this.listeners.Execute(t);n(a)&&!a.called&&o(a,this),this.Resume(),this.posting=!1,this.pending||this.call()}return e},Clear:function(t){return t=r(t),this.posting||this.pending?t=this.Push([\"Clear\",this,t]):(this.posted=[],t()),t},call:function(){this.callback(this),this.Process()},Interest:function(t,e,i){if(t=r(t),this.listeners.Add(t,i),!e)for(var a=0,s=this.posted.length;a<s;a++){t.reset();var l=t(this.posted[a]);n(l)&&a===this.posted.length-1&&o(l,this)}return t},NoInterest:function(t){this.listeners.Remove(t)},MessageHook:function(t,e,i){e=r(e),this.hooks||(this.hooks={},this.Interest([\"ExecuteHooks\",this])),this.hooks[t]||(this.hooks[t]=m(!0)),this.hooks[t].Add(e,i);for(var n=0,a=this.posted.length;n<a;n++)this.posted[n]==t&&(e.reset(),e(this.posted[n]));return e.msg=t,e},ExecuteHooks:function(t){var e=t instanceof Array?t[0]:t;return this.hooks[e]?this.hooks[e].Execute(t):null},RemoveHook:function(t){this.hooks[t.msg].Remove(t)}},{signals:{},find:function(t){return g.signals[t]||(g.signals[t]=new g(t)),g.signals[t]}});e.Callback=e.CallBack=r,e.Callback.Delay=function(t,e){return(e=r(e)).timeout=setTimeout(e,t),e},e.Callback.After=d,e.Callback.Queue=f,e.Callback.Signal=g.find,e.Callback.Hooks=m,e.Callback.ExecuteHooks=function(t,e,i){if(!t)return null;t instanceof Array||(t=[t]),e instanceof Array||(e=null==e?[]:[e]);for(var n=m(i),a=0,s=t.length;a<s;a++)n.Add(t[a]);return n.Execute.apply(n,e)}}(),function(t){var e=u.MathJax;e||(e=u.MathJax={});var i=\"Apple Computer, Inc.\"===h.vendor&&void 0===h.vendorSub,n=0,a=[],s=function(){for(var t=0,i=a.length;t<i;t++)e.Ajax.head.removeChild(a[t]);a=[]},r={MathJax:\"\"};e.Ajax={loaded:{},loading:{},loadHooks:{},timeout:15e3,styleDelay:1,config:{root:\"\",path:r},STATUS:{OK:1,ERROR:-1},fileURL:function(t){var e=t.match(/^\\[([-._a-z0-9]+)\\]/i);return e&&e[1]in r&&(t=(r[e[1]]||this.config.root)+t.substr(e[1].length+2)),t},fileName:function(t){var e=this.config.root;if(t.substr(0,e.length)===e)t=\"[MathJax]\"+t.substr(e.length);else for(var i in r)if(r.hasOwnProperty(i)&&r[i]&&t.substr(0,r[i].length)===r[i]){t=\"[\"+i+\"]\"+t.substr(r[i].length);break}return t},fileRev:function(t){var i=e.cdnFileVersions[name]||e.cdnVersion;return i&&(i=\"?rev=\"+i),i},urlRev:function(t){return this.fileURL(t)+this.fileRev(t)},Require:function(t,i){var n;if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(n=a.toUpperCase(),t=t[a]);else n=t.split(/\\./).pop().toUpperCase();if(t=this.fileURL(t),this.loaded[t])i(this.loaded[t]);else{var s={};s[n]=t,this.Load(s,i)}return i},Load:function(t,i){var n;if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(n=a.toUpperCase(),t=t[a]);else n=t.split(/\\./).pop().toUpperCase();if(t=this.fileURL(t),this.loading[t])this.addHook(t,i);else{if(this.head=(this.head,null),!this.loader[n])throw Error(\"Can't load files of type \"+n);this.loader[n].call(this,t,i)}return i},LoadHook:function(t,i,n){if(i=e.Callback(i),t instanceof Object)for(var a in t)t.hasOwnProperty(a)&&(t=t[a]);return t=this.fileURL(t),this.loaded[t]?i(this.loaded[t]):this.addHook(t,i,n),i},addHook:function(t,e,i){this.loadHooks[t]||(this.loadHooks[t]=l.Callback.Hooks()),this.loadHooks[t].Add(e,i),e.file=t},removeHook:function(t){this.loadHooks[t.file]&&(this.loadHooks[t.file].Remove(t),this.loadHooks[t.file].hooks.length||delete this.loadHooks[t.file])},Preloading:function(){for(var t=0,e=arguments.length;t<e;t++){var i=this.fileURL(arguments[t]);this.loading[i]||this.loaded[i]||(this.loading[i]={preloaded:!0})}},loader:{JS:function(t,i){var n=this.fileName(t),a=e.Callback([\"loadTimeout\",this,t]);this.loading[t]={callback:i,timeout:setTimeout(a,this.timeout),status:this.STATUS.OK,script:null},this.loading[t].message=e.Message.File(n),u.System?u.System.import(t).catch(a):a()},CSS:function(t,i){var n=this.fileName(t),a=p.createElement(\"link\");a.rel=\"stylesheet\",a.type=\"text/css\",a.href=t+this.fileRev(n),this.loading[t]={callback:i,message:e.Message.File(n),status:this.STATUS.OK},this.head.appendChild(a),this.timer.create.call(this,[this.timer.file,t],a)}},timer:{create:function(t,a){return t=e.Callback(t),\"STYLE\"===a.nodeName&&a.styleSheet&&void 0!==a.styleSheet.cssText||u.chrome&&\"LINK\"===a.nodeName?t(this.STATUS.OK):i?this.timer.start(this,[this.timer.checkSafari2,n++,t],this.styleDelay):this.timer.start(this,[this.timer.checkLength,a,t],this.styleDelay),t},start:function(t,i,n,a){(i=e.Callback(i)).execute=this.execute,i.time=this.time,i.STATUS=t.STATUS,i.timeout=a||t.timeout,i.delay=i.total=n||0,n?setTimeout(i,n):i()},time:function(t){return this.total+=this.delay,this.delay=Math.floor(1.05*this.delay+5),this.total>=this.timeout?(t(this.STATUS.ERROR),1):0},file:function(t,i){i<0?e.Ajax.loadTimeout(t):e.Ajax.loadComplete(t)},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(t,e,i){t.time(i)||(p.styleSheets.length>e&&p.styleSheets[e].cssRules&&p.styleSheets[e].cssRules.length?i(t.STATUS.OK):setTimeout(t,t.delay))},checkLength:function(t,i,n){if(!t.time(n)){var a=0,s=i.sheet||i.styleSheet;try{(s.cssRules||s.rules||[]).length>0&&(a=1)}catch(t){(t.message.match(/protected variable|restricted URI/)||t.message.match(/Security error/))&&(a=1)}a?setTimeout(e.Callback([n,t.STATUS.OK]),0):setTimeout(t,t.delay)}}},loadComplete:function(t){t=this.fileURL(t);var i=this.loading[t];return i&&!i.preloaded?(e.Message.Clear(i.message),i.timeout&&clearTimeout(i.timeout),i.script&&(0===a.length&&setTimeout(s,0),a.push(i.script)),this.loaded[t]=i.status,delete this.loading[t],this.addHook(t,i.callback)):(i&&delete this.loading[t],this.loaded[t]=this.STATUS.OK,i={status:this.STATUS.OK}),this.loadHooks[t]?this.loadHooks[t].Execute(i.status):null},loadTimeout:function(t){this.loading[t].timeout&&clearTimeout(this.loading[t].timeout),this.loading[t].status=this.STATUS.ERROR,this.loadError(t),this.loadComplete(t)},loadError:function(t){e.Message.Set([\"LoadFailed\",\"File failed to load: %1\",t],null,2e3),e.Hub.signal.Post([\"file load error\",t])},Styles:function(t,i){var n=this.StyleString(t);if(\"\"===n)(i=e.Callback(i))();else{var a=p.createElement(\"style\");a.type=\"text/css\",this.head=(this.head,null),this.head.appendChild(a),a.styleSheet&&void 0!==a.styleSheet.cssText?a.styleSheet.cssText=n:a.appendChild(p.createTextNode(n)),i=this.timer.create.call(this,i,a)}return i},StyleString:function(t){if(\"string\"==typeof t)return t;var e,i,n=\"\";for(e in t)if(t.hasOwnProperty(e))if(\"string\"==typeof t[e])n+=e+\" {\"+t[e]+\"}\\n\";else if(t[e]instanceof Array)for(var a=0;a<t[e].length;a++)(i={})[e]=t[e][a],n+=this.StyleString(i);else if(\"@media\"===e.substr(0,6))n+=e+\" {\"+this.StyleString(t[e])+\"}\\n\";else if(null!=t[e]){for(var s in i=[],t[e])t[e].hasOwnProperty(s)&&null!=t[e][s]&&(i[i.length]=s+\": \"+t[e][s]);n+=e+\" {\"+i.join(\"; \")+\"}\\n\"}return n}}}(),l.HTML={setDocument:function(t){p=this.document=t},Element:function(t,e,i){var n,a=p.createElement(t);if(e){if(e.hasOwnProperty(\"style\")){var s=e.style;for(n in e.style={},s)s.hasOwnProperty(n)&&(e.style[n.replace(/-([a-z])/g,this.ucMatch)]=s[n])}for(n in l.Hub.Insert(a,e),e)\"role\"!==n&&\"aria-\"!==n.substr(0,5)||a.setAttribute(n,e[n])}if(i){l.Object.isArray(i)||(i=[i]);for(var r=0,o=i.length;r<o;r++)l.Object.isArray(i[r])?a.appendChild(this.Element(i[r][0],i[r][1],i[r][2])):\"script\"===t?this.setScript(a,i[r]):a.appendChild(p.createTextNode(i[r]))}return a},ucMatch:function(t,e){return e.toUpperCase()},addElement:function(t,e,i,n){return t.appendChild(this.Element(e,i,n))},TextNode:function(t){return p.createTextNode(t)},addText:function(t,e){return t.appendChild(this.TextNode(e))},setScript:function(t,e){if(this.setScriptBug)t.text=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);this.addText(t,e)}},getScript:function(t){return t.innerText}},l.Localization={locale:\"en\",directory:\"[MathJax]/localization\",strings:{ast:{menuTitle:\"asturianu\"},bg:{menuTitle:\"\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\"},bcc:{menuTitle:\"\\u0628\\u0644\\u0648\\u0686\\u06cc\"},br:{menuTitle:\"brezhoneg\"},ca:{menuTitle:\"catal\\xe0\"},cdo:{menuTitle:\"M\\xecng-d\\u0115\\u0324ng-ng\\u1e73\\u0304\"},cs:{menuTitle:\"\\u010de\\u0161tina\"},da:{menuTitle:\"dansk\"},de:{menuTitle:\"Deutsch\"},en:{menuTitle:\"English\",isLoaded:!0},eo:{menuTitle:\"Esperanto\"},es:{menuTitle:\"espa\\xf1ol\"},fa:{menuTitle:\"\\u0641\\u0627\\u0631\\u0633\\u06cc\"},fi:{menuTitle:\"suomi\"},fr:{menuTitle:\"fran\\xe7ais\"},gl:{menuTitle:\"galego\"},he:{menuTitle:\"\\u05e2\\u05d1\\u05e8\\u05d9\\u05ea\"},ia:{menuTitle:\"interlingua\"},it:{menuTitle:\"italiano\"},ja:{menuTitle:\"\\u65e5\\u672c\\u8a9e\"},kn:{menuTitle:\"\\u0c95\\u0ca8\\u0ccd\\u0ca8\\u0ca1\"},ko:{menuTitle:\"\\ud55c\\uad6d\\uc5b4\"},lb:{menuTitle:\"L\\xebtzebuergesch\"},lt:{menuTitle:\"lietuvi\\u0173\"},mk:{menuTitle:\"\\u043c\\u0430\\u043a\\u0435\\u0434\\u043e\\u043d\\u0441\\u043a\\u0438\"},nl:{menuTitle:\"Nederlands\"},oc:{menuTitle:\"occitan\"},pl:{menuTitle:\"polski\"},pt:{menuTitle:\"portugus\\xea\"},\"pt-br\":{menuTitle:\"portugu\\xeas do Brasil\"},ru:{menuTitle:\"\\u0440\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\"},sco:{menuTitle:\"Scots\"},scn:{menuTitle:\"sicilianu\"},sl:{menuTitle:\"sloven\\u0161\\u010dina\"},sv:{menuTitle:\"svenska\"},tr:{menuTitle:\"T\\xfcrk\\xe7e\"},uk:{menuTitle:\"\\u0443\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\"},vi:{menuTitle:\"Ti\\u1ebfng Vi\\u1ec7t\"},\"zh-hans\":{menuTitle:\"\\u4e2d\\u6587\\uff08\\u7b80\\u4f53\\uff09\"}},pattern:/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,SPLIT:3===\"axb\".split(/(x)/).length?function(t,e){return t.split(e)}:function(t,e){var i,n=[],a=0;for(e.lastIndex=0;i=e.exec(t);)n.push(t.substr(a,i.index-a)),n.push.apply(n,i.slice(1)),a=i.index+i[0].length;return n.push(t.substr(a)),n},_:function(t,e){return e instanceof Array?this.processSnippet(t,e):this.processString(this.lookupPhrase(t,e),[].slice.call(arguments,2))},processString:function(t,e,i){var n,a;for(n=0,a=e.length;n<a;n++)i&&e[n]instanceof Array&&(e[n]=this.processSnippet(i,e[n]));var s=this.SPLIT(t,this.pattern);for(n=1,a=s.length;n<a;n+=2){var r=s[n].charAt(0);if(r>=\"0\"&&r<=\"9\")s[n]=e[s[n]-1],\"number\"==typeof s[n]&&(s[n]=this.number(s[n]));else if(\"{\"===r)if((r=s[n].substr(1))>=\"0\"&&r<=\"9\")s[n]=e[s[n].substr(1,s[n].length-2)-1],\"number\"==typeof s[n]&&(s[n]=this.number(s[n]));else{var o=s[n].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/);if(o)if(\"plural\"===o[1]){var l=e[o[2]-1];if(void 0===l)s[n]=\"???\";else{l=this.plural(l)-1;var u=o[3].replace(/(^|[^%])(%%)*%\\|/g,\"$1$2%\\uefef\").split(/\\|/);l>=0&&l<u.length?s[n]=this.processString(u[l].replace(/\\uEFEF/g,\"|\"),e,i):s[n]=\"???\"}}else s[n]=\"%\"+s[n]}null==s[n]&&(s[n]=\"???\")}if(!i)return s.join(\"\");var h=[],p=\"\";for(n=0;n<a;n++)p+=s[n],++n<a&&(s[n]instanceof Array?(h.push(p),h=h.concat(s[n]),p=\"\"):p+=s[n]);return\"\"!==p&&h.push(p),h},processSnippet:function(t,e){for(var i=[],n=0,a=e.length;n<a;n++)if(e[n]instanceof Array){var s=e[n];if(\"string\"==typeof s[1]){var r=s[0];r instanceof Array||(r=[t,r]);var o=this.lookupPhrase(r,s[1]);i=i.concat(this.processMarkdown(o,s.slice(2),t))}else s[1]instanceof Array?i=i.concat(this.processSnippet.apply(this,s)):s.length>=3?i.push([s[0],s[1],this.processSnippet(t,s[2])]):i.push(e[n])}else i.push(e[n]);return i},markdownPattern:/(%.)|(\\*{1,3})((?:%.|.)+?)\\2|(`+)((?:%.|.)+?)\\4|\\[((?:%.|.)+?)\\]\\(([^\\s\\)]+)\\)/,processMarkdown:function(t,e,i){for(var n,a=[],s=t.split(this.markdownPattern),r=s[0],o=1,l=s.length;o<l;o+=8)s[o+1]?((n=this.processString(s[o+2],e,i))instanceof Array||(n=[n]),n=[[\"b\",\"i\",\"i\"][s[o+1].length-1],{},n],3===s[o+1].length&&(n=[\"b\",{},n])):s[o+3]?((n=this.processString(s[o+4].replace(/^\\s/,\"\").replace(/\\s$/,\"\"),e,i))instanceof Array||(n=[n]),n=[\"code\",{},n]):s[o+5]?((n=this.processString(s[o+5],e,i))instanceof Array||(n=[n]),n=[\"a\",{href:this.processString(s[o+6],e),target:\"_blank\"},n]):(r+=s[o],n=null),n&&((a=this.concatString(a,r,e,i)).push(n),r=\"\"),\"\"!==s[o+7]&&(r+=s[o+7]);return a=this.concatString(a,r,e,i)},concatString:function(t,e,i,n){return\"\"!=e&&((e=this.processString(e,i,n))instanceof Array||(e=[e]),t=t.concat(e)),t},lookupPhrase:function(t,e,i){i||(i=\"_\"),t instanceof Array&&(i=t[0]||\"_\",t=t[1]||\"\");var n=this.loadDomain(i);n&&l.Hub.RestartAfter(n);var a=this.strings[this.locale];if(a&&a.domains&&i in a.domains){var s=a.domains[i];s.strings&&t in s.strings&&(e=s.strings[t])}return e},loadFile:function(t,e,i){(i=l.Callback(i),(t=e.file||t).match(/\\.js$/)||(t+=\".js\"),t.match(/^([a-z]+:|\\[MathJax\\])/))||(t=(this.strings[this.locale].directory||this.directory+\"/\"+this.locale||\"[MathJax]/localization/\"+this.locale)+\"/\"+t);var n=l.Ajax.Require(t,(function(){return e.isLoaded=!0,i()}));return n.called?null:n},loadDomain:function(t,e){var i,n=this.strings[this.locale];if(n){if(!n.isLoaded&&(i=this.loadFile(this.locale,n)))return l.Callback.Queue(i,[\"loadDomain\",this,t]).Push(e||{});if(n.domains&&t in n.domains){var a=n.domains[t];if(!a.isLoaded&&(i=this.loadFile(t,a)))return l.Callback.Queue(i).Push(e)}}return l.Callback(e)()},Try:function(t){(t=l.Callback(t)).autoReset=!0;try{t()}catch(e){if(!e.restart)throw e;l.Callback.After([\"Try\",this,t],e.restart)}},resetLocale:function(t){if(t){for(t=t.toLowerCase();!this.strings[t];){var e=t.lastIndexOf(\"-\");if(-1===e)return;t=t.substring(0,e)}var i=this.strings[t].remap;this.locale=i||t}},setLocale:function(t){this.resetLocale(t),l.Menu&&this.loadDomain(\"MathMenu\")},addTranslation:function(t,e,i){var n=this.strings[t],a=!1;n||(n=this.strings[t]={},a=!0),n.domains||(n.domains={}),e&&(n.domains[e]||(n.domains[e]={}),n=n.domains[e]),l.Hub.Insert(n,i),a&&l.Menu.menu&&l.Menu.CreateLocaleMenu()},setCSS:function(t){var e=this.strings[this.locale];return e&&(e.fontFamily&&(t.style.fontFamily=e.fontFamily),e.fontDirection&&(t.style.direction=e.fontDirection,\"rtl\"===e.fontDirection&&(t.style.textAlign=\"right\"))),t},fontFamily:function(){var t=this.strings[this.locale];return t?t.fontFamily:null},fontDirection:function(){var t=this.strings[this.locale];return t?t.fontDirection:null},plural:function(t){var e=this.strings[this.locale];return e&&e.plural?e.plural(t):1==t?1:2},number:function(t){var e=this.strings[this.locale];return e&&e.number?e.number(t):t}},l.Message={localize:function(t){return l.Localization._(t,t)},filterText:function(t,e,i){return\"simple\"===l.Hub.config.messageStyle&&(\"LoadFile\"===i?(this.loading||(this.loading=this.localize(\"Loading\")+\" \"),t=this.loading,this.loading+=\".\"):\"ProcessMath\"===i?(this.processing||(this.processing=this.localize(\"Processing\")+\" \"),t=this.processing,this.processing+=\".\"):\"TypesetMath\"===i&&(this.typesetting||(this.typesetting=this.localize(\"Typesetting\")+\" \"),t=this.typesetting,this.typesetting+=\".\")),t},Set:function(t,e,i){l.debug&&(Array.isArray(t)&&(t=l.Localization._.apply(l.Localization,t)),console.log(\"Message: \"+t))},Clear:function(t,e){},Remove:function(){},File:function(t){return this.Set([\"LoadFile\",\"Loading %1\",t],null,null)},Log:function(){}},l.Hub={config:{root:\"./mathjax2/legacy\",config:[],jax:[],extensions:[],preJax:null,postJax:null,displayAlign:\"center\",displayIndent:\"0\",preRemoveClass:\"MathJax_Preview\",showProcessingMessages:!0,messageStyle:\"normal\",delayStartupUntil:\"none\",skipStartupTypeset:!1,elements:[],positionToHash:!0,showMathMenu:!0,showMathMenuMSIE:!0,menuSettings:{zoom:\"None\",CTRL:!1,ALT:!1,CMD:!1,Shift:!1,discoverable:!1,zscale:\"200%\",renderer:null,font:\"Auto\",context:\"MathJax\",locale:null,mpContext:!1,mpMouse:!1,texHints:!0,FastPreview:null,assistiveMML:null,inTabOrder:!0,semantics:!1},errorSettings:{message:[\"[\",[\"MathProcessingError\",\"Math Processing Error\"],\"]\"],style:{color:\"#CC0000\",\"font-style\":\"italic\"}},ignoreMMLattributes:{}},preProcessors:l.Callback.Hooks(!0),inputJax:{},outputJax:{order:{}},processSectionDelay:50,processUpdateTime:250,processUpdateDelay:10,signal:l.Callback.Signal(\"Hub\"),Config:function(t){this.Insert(this.config,t),this.config.Augment&&this.Augment(this.config.Augment)},CombineConfig:function(t,e){for(var i,n,a=this.config,s=0,r=(t=t.split(/\\./)).length;s<r;s++)a[i=t[s]]||(a[i]={}),n=a,a=a[i];return n[i]=a=this.Insert(e,a),a},Register:{PreProcessor:function(){return l.Hub.preProcessors.Add.apply(l.Hub.preProcessors,arguments)},MessageHook:function(){return l.Hub.signal.MessageHook.apply(l.Hub.signal,arguments)},StartupHook:function(){return l.Hub.Startup.signal.MessageHook.apply(l.Hub.Startup.signal,arguments)},LoadHook:function(){return l.Ajax.LoadHook.apply(l.Ajax,arguments)}},UnRegister:{PreProcessor:function(t){l.Hub.preProcessors.Remove(t)},MessageHook:function(t){l.Hub.signal.RemoveHook(t)},StartupHook:function(t){l.Hub.Startup.signal.RemoveHook(t)},LoadHook:function(t){l.Ajax.removeHook(t)}},setRenderer:function(t,e){if(t){if(l.OutputJax[t]){this.config.menuSettings.renderer=t,null==e&&(e=\"jax/mml\");var i=this.outputJax;return i[e]&&i[e].length&&t!==i[e][0].id?(i[e].unshift(l.OutputJax[t]),this.signal.Post([\"Renderer Selected\",t])):null}this.config.menuSettings.renderer=\"\";var n=\"[MathJax]/jax/output/\"+t+\"/config.js\";return l.Ajax.Require(n,[\"setRenderer\",this,t,e])}},Queue:function(){return this.queue.Push.apply(this.queue,arguments)},RestartAfter:function(t){throw this.Insert(Error(\"restart\"),{restart:l.Callback(t)})},Insert:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(\"object\"!=typeof e[i]||e[i]instanceof Array||\"object\"!=typeof t[i]&&\"function\"!=typeof t[i]?t[i]=e[i]:this.Insert(t[i],e[i]));return t},SplitList:\"trim\"in String.prototype?function(t){return t.trim().split(/\\s+/)}:function(t){return t.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\").split(/\\s+/)}},l.Extension={},l.Hub.Startup={queue:l.Callback.Queue(),signal:l.Callback.Signal(\"Startup\")},l.Ajax.config.root=l.Hub.config.root,i=u.MathJax,n=\"[MathJax]\",a=i.Hub,s=i.Ajax,r=i.Callback,o=l.Object.Subclass({JAXFILE:\"jax.js\",require:null,config:{},Init:function(t,e){return 0===arguments.length?this:this.constructor.Subclass(t,e)()},Augment:function(t,e){var i=this.constructor,n={};if(null!=t){for(var s in t)t.hasOwnProperty(s)&&(\"function\"==typeof t[s]?i.protoFunction(s,t[s]):n[s]=t[s]);t.toString!==i.prototype.toString&&t.toString!=={}.toString&&i.protoFunction(\"toString\",t.toString)}return a.Insert(i.prototype,n),i.Augment(null,e),this},Translate:function(t,e){throw Error(this.directory+\"/\"+this.JAXFILE+\" failed to define the Translate() method\")},Register:function(t){},Config:function(){this.config=a.CombineConfig(this.id,this.config),this.config.Augment&&this.Augment(this.config.Augment)},Startup:function(){},loadComplete:function(t){if(\"config.js\"===t)return s.loadComplete(this.directory+\"/\"+t);var e=r.Queue();return e.Push([\"Post\",a.Startup.signal,this.id+\" Jax Config\"],[\"Config\",this],[\"Post\",a.Startup.signal,this.id+\" Jax Startup\"],[\"Startup\",this],[\"Post\",a.Startup.signal,this.id+\" Jax Ready\"]),this.copyTranslate&&e.Push([function(t){t.preProcess=t.preTranslate,t.Process=t.Translate,t.postProcess=t.postTranslate},this.constructor.prototype]),e.Push([\"loadComplete\",s,this.directory+\"/\"+t])}},{id:\"Jax\",version:\"2.6.0\",directory:n+\"/jax\",extensionDir:n+\"/extensions\"}),i.InputJax=o.Subclass({elementJax:\"mml\",sourceMenuTitle:[\"Original\",\"Original Form\"],copyTranslate:!0,Process:function(t,e){throw Error(\"Input jax failed to load properly\")},needsUpdate:function(t){var e=t.SourceElement();return t.originalText!==i.HTML.getScript(e)},Register:function(t){a.inputJax||(a.inputJax={}),a.inputJax[t]=this}},{id:\"InputJax\",version:\"2.6.0\",directory:o.directory+\"/input\",extensionDir:o.extensionDir}),i.OutputJax=o.Subclass({copyTranslate:!0,preProcess:function(t){throw Error(\"Output jax failed to load properly\")},Register:function(t){var e=a.outputJax;e[t]||(e[t]=[]),e[t].length&&(this.id===a.config.menuSettings.renderer||(e.order[this.id]||0)<(e.order[e[t][0].id]||0))?e[t].unshift(this):e[t].push(this)},Remove:function(t){}},{id:\"OutputJax\",version:\"2.6.0\",directory:o.directory+\"/output\",extensionDir:o.extensionDir,fontDir:n+(i.isPacked?\"\":\"/..\")+\"/fonts\",imageDir:n+(i.isPacked?\"\":\"/..\")+\"/images\"}),i.ElementJax=o.Subclass({Init:function(t,e){return this.constructor.Subclass(t,e)},inputJax:null,outputJax:null,inputID:null,originalText:\"\",mimeType:\"\",sourceMenuTitle:[\"MathMLcode\",\"MathML Code\"],Text:function(t,e){var n=this.SourceElement();return i.HTML.setScript(n,t),n.MathJax.state=this.STATE.UPDATE,a.Update(n,e)},Reprocess:function(t){var e=this.SourceElement();return e.MathJax.state=this.STATE.UPDATE,a.Reprocess(e,t)},Update:function(t){return this.Rerender(t)},Rerender:function(t){var e=this.SourceElement();return e.MathJax.state=this.STATE.OUTPUT,a.Process(e,t)},Remove:function(t){this.hover&&this.hover.clear(this),i.OutputJax[this.outputJax].Remove(this),t||(a.signal.Post([\"Remove Math\",this.inputID]),this.Detach())},needsUpdate:function(){return i.InputJax[this.inputJax].needsUpdate(this)},SourceElement:function(){return p.getElementById(this.inputID)},Attach:function(t,e){var n=t.MathJax.elementJax;return t.MathJax.state===this.STATE.UPDATE?n.Clone(this):(n=t.MathJax.elementJax=this,t.id?this.inputID=t.id:(t.id=this.inputID=i.ElementJax.GetID(),this.newID=1)),n.originalText=i.HTML.getScript(t),n.inputJax=e,n.root&&(n.root.inputID=n.inputID),n},Detach:function(){var t=this.SourceElement();if(t){try{delete t.MathJax}catch(e){t.MathJax=null}this.newID&&(t.id=\"\")}},Clone:function(t){var e;for(e in this)this.hasOwnProperty(e)&&void 0===t[e]&&\"newID\"!==e&&delete this[e];for(e in t)t.hasOwnProperty(e)&&(void 0===this[e]||this[e]!==t[e]&&\"inputID\"!==e)&&(this[e]=t[e])}},{id:\"ElementJax\",version:\"2.6.0\",directory:o.directory+\"/element\",extensionDir:o.extensionDir,ID:0,STATE:{PENDING:1,PROCESSED:2,UPDATE:3,OUTPUT:4},GetID:function(){return this.ID++,\"MathJax-Element-\"+this.ID},Subclass:function(){var t=o.Subclass.apply(this,arguments);return t.loadComplete=this.prototype.loadComplete,t}}),i.ElementJax.prototype.STATE=i.ElementJax.STATE,l.Hub.Browser={Select:function(){}}},function(t,e){MathJax.ElementJax.mml=MathJax.ElementJax({mimeType:\"jax/mml\"},{id:\"mml\",version:\"2.7.2\",directory:MathJax.ElementJax.directory+\"/mml\",extensionDir:MathJax.ElementJax.extensionDir+\"/mml\",optableDir:MathJax.ElementJax.directory+\"/mml/optable\"}),MathJax.ElementJax.mml.Augment({Init:function(){if(1===arguments.length&&\"math\"===arguments[0].type?this.root=arguments[0]:this.root=MathJax.ElementJax.mml.math.apply(this,arguments),this.root.attr&&this.root.attr.mode){this.root.display||\"display\"!==this.root.attr.mode||(this.root.display=\"block\",this.root.attrNames.push(\"display\")),delete this.root.attr.mode;for(var t=0,e=this.root.attrNames.length;t<e;t++)if(\"mode\"===this.root.attrNames[t]){this.root.attrNames.splice(t,1);break}}}},{INHERIT:\"_inherit_\",AUTO:\"_auto_\",SIZE:{INFINITY:\"infinity\",SMALL:\"small\",NORMAL:\"normal\",BIG:\"big\"},COLOR:{TRANSPARENT:\"transparent\"},VARIANT:{NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALIGRAPHIC:\"-tex-caligraphic\",OLDSTYLE:\"-tex-oldstyle\"},FORM:{PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},LINEBREAK:{AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},LINEBREAKSTYLE:{BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},INDENTALIGN:{LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},INDENTSHIFT:{INDENTSHIFT:\"indentshift\"},LINETHICKNESS:{THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},NOTATION:{LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",UPDIAGONALARROW:\"updiagonalarrow\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",PHASORANGLE:\"phasorangle\",MADRUWB:\"madruwb\"},ALIGN:{TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},LINES:{NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},SIDE:{LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},WIDTH:{AUTO:\"auto\",FIT:\"fit\"},ACTIONTYPE:{TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},LENGTH:{VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},OVERFLOW:{LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},UNIT:{EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"},TEXCLASS:{ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},TEXCLASSNAMES:[\"ORD\",\"OP\",\"BIN\",\"REL\",\"OPEN\",\"CLOSE\",\"PUNCT\",\"INNER\",\"VCENTER\"],skipAttributes:{texClass:!0,useHeight:!0,texprimestyle:!0},copyAttributes:{displaystyle:1,scriptlevel:1,open:1,close:1,form:1,actiontype:1,fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,id:!0,class:1,href:!0,style:!0},copyAttributeNames:[\"displaystyle\",\"scriptlevel\",\"open\",\"close\",\"form\",\"actiontype\",\"fontfamily\",\"fontsize\",\"fontweight\",\"fontstyle\",\"color\",\"background\",\"id\",\"class\",\"href\",\"style\"],nocopyAttributes:{fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,id:!0,class:!0,href:!0,style:!0,xmlns:!0},Error:function(t,e){var i=this.merror(t),n=MathJax.Localization.fontDirection(),a=MathJax.Localization.fontFamily();return e&&(i=i.With(e)),(n||a)&&(i=this.mstyle(i),n&&(i.dir=n),a&&(i.style.fontFamily=\"font-family: \"+a)),i}}),function(t){t.mbase=MathJax.Object.Subclass({type:\"base\",isToken:!1,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT},noInherit:{},noInheritAttribute:{texClass:!0},getRemoved:{},linebreakContainer:!1,Init:function(){this.data=[],!this.inferRow||1===arguments.length&&arguments[0].inferred||this.Append(t.mrow().With({inferred:!0,notParent:!0})),this.Append.apply(this,arguments)},With:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);return this},Append:function(){if(this.inferRow&&this.data.length)this.data[0].Append.apply(this.data[0],arguments);else for(var t=0,e=arguments.length;t<e;t++)this.SetData(this.data.length,arguments[t])},SetData:function(e,i){null!=i&&(i instanceof t.mbase||(i=this.isToken||this.isChars?t.chars(i):t.mtext(i)),i.parent=this,i.setInherit(this.inheritFromMe?this:this.inherit)),this.data[e]=i},Parent:function(){for(var t=this.parent;t&&t.notParent;)t=t.parent;return t},Get:function(e,i,n){if(!n){if(null!=this[e])return this[e];if(this.attr&&null!=this.attr[e])return this.attr[e]}var a=this.Parent();if(a&&null!=a[\"adjustChild_\"+e])return a[\"adjustChild_\"+e](this.childPosition(),i);for(var s=this.inherit,r=s;s;){var o=s[e];if(null==o&&s.attr&&(o=s.attr[e]),s.removedStyles&&s.getRemoved[e]&&null==o&&(o=s.removedStyles[s.getRemoved[e]]),null!=o&&s.noInheritAttribute&&!s.noInheritAttribute[e]){var l=s.noInherit[this.type];if(!l||!l[e])return o}r=s,s=s.inherit}if(!i){if(this.defaults[e]===t.AUTO)return this.autoDefault(e);if(this.defaults[e]!==t.INHERIT&&null!=this.defaults[e])return this.defaults[e];if(r)return r.defaults[e]}return null},hasValue:function(t){return null!=this.Get(t,!0)},getValues:function(){for(var t={},e=0,i=arguments.length;e<i;e++)t[arguments[e]]=this.Get(arguments[e]);return t},adjustChild_scriptlevel:function(t,e){return this.Get(\"scriptlevel\",e)},adjustChild_displaystyle:function(t,e){return this.Get(\"displaystyle\",e)},adjustChild_texprimestyle:function(t,e){return this.Get(\"texprimestyle\",e)},childPosition:function(){for(var t=this,e=t.parent;e.notParent;)e=(t=e).parent;for(var i=0,n=e.data.length;i<n;i++)if(e.data[i]===t)return i;return null},setInherit:function(t){if(t!==this.inherit&&null==this.inherit){this.inherit=t;for(var e=0,i=this.data.length;e<i;e++)this.data[e]&&this.data[e].setInherit&&this.data[e].setInherit(t)}},setTeXclass:function(t){return this.getPrevClass(t),void 0!==this.texClass?this:t},getPrevClass:function(t){t&&(this.prevClass=t.Get(\"texClass\"),this.prevLevel=t.Get(\"scriptlevel\"))},updateTeXclass:function(t){t&&(this.prevClass=t.prevClass,delete t.prevClass,this.prevLevel=t.prevLevel,delete t.prevLevel,this.texClass=t.Get(\"texClass\"))},texSpacing:function(){var e=null!=this.prevClass?this.prevClass:t.TEXCLASS.NONE,i=this.Get(\"texClass\")||t.TEXCLASS.ORD;if(e===t.TEXCLASS.NONE||i===t.TEXCLASS.NONE)return\"\";e===t.TEXCLASS.VCENTER&&(e=t.TEXCLASS.ORD),i===t.TEXCLASS.VCENTER&&(i=t.TEXCLASS.ORD);var n=this.TEXSPACE[e][i];return(this.prevLevel>0||this.Get(\"scriptlevel\")>0)&&n>=0?\"\":this.TEXSPACELENGTH[Math.abs(n)]},TEXSPACELENGTH:[\"\",t.LENGTH.THINMATHSPACE,t.LENGTH.MEDIUMMATHSPACE,t.LENGTH.THICKMATHSPACE],TEXSPACE:[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]],autoDefault:function(t){return\"\"},isSpacelike:function(){return!1},isEmbellished:function(){return!1},Core:function(){return this},CoreMO:function(){return this},childIndex:function(t){if(null!=t)for(var e=0,i=this.data.length;e<i;e++)if(t===this.data[e])return e},CoreIndex:function(){return(this.inferRow&&this.data[0]||this).childIndex(this.Core())},hasNewline:function(){if(this.isEmbellished())return this.CoreMO().hasNewline();if(this.isToken||this.linebreakContainer)return!1;for(var t=0,e=this.data.length;t<e;t++)if(this.data[t]&&this.data[t].hasNewline())return!0;return!1},array:function(){return this.inferred?this.data:[this]},toString:function(){return this.type+\"(\"+this.data.join(\",\")+\")\"},getAnnotation:function(){return null}},{childrenSpacelike:function(){for(var t=0,e=this.data.length;t<e;t++)if(!this.data[t].isSpacelike())return!1;return!0},childEmbellished:function(){return this.data[0]&&this.data[0].isEmbellished()},childCore:function(){return this.inferRow&&this.data[0]?this.data[0].Core():this.data[0]},childCoreMO:function(){return this.data[0]?this.data[0].CoreMO():null},setChildTeXclass:function(t){return this.data[0]&&(t=this.data[0].setTeXclass(t),this.updateTeXclass(this.data[0])),t},setBaseTeXclasses:function(e){this.getPrevClass(e),this.texClass=null,this.data[0]?this.isEmbellished()||this.data[0].isa(t.mi)?(e=this.data[0].setTeXclass(e),this.updateTeXclass(this.Core())):(this.data[0].setTeXclass(),e=this):e=this;for(var i=1,n=this.data.length;i<n;i++)this.data[i]&&this.data[i].setTeXclass();return e},setSeparateTeXclasses:function(t){this.getPrevClass(t);for(var e=0,i=this.data.length;e<i;e++)this.data[e]&&this.data[e].setTeXclass();return this.isEmbellished()&&this.updateTeXclass(this.Core()),this}}),t.mi=t.mbase.Subclass({type:\"mi\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.AUTO,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT},autoDefault:function(e){if(\"mathvariant\"===e){var i=(this.data[0]||\"\").toString();return 1===i.length||2===i.length&&i.charCodeAt(0)>=55296&&i.charCodeAt(0)<56320?t.VARIANT.ITALIC:t.VARIANT.NORMAL}return\"\"},setTeXclass:function(e){this.getPrevClass(e);var i=this.data.join(\"\");return i.length>1&&i.match(/^[a-z][a-z0-9]*$/i)&&this.texClass===t.TEXCLASS.ORD&&(this.texClass=t.TEXCLASS.OP,this.autoOP=!0),this}}),t.mn=t.mbase.Subclass({type:\"mn\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT}}),t.mo=t.mbase.Subclass({type:\"mo\",isToken:!0,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,form:t.AUTO,fence:t.AUTO,separator:t.AUTO,lspace:t.AUTO,rspace:t.AUTO,stretchy:t.AUTO,symmetric:t.AUTO,maxsize:t.AUTO,minsize:t.AUTO,largeop:t.AUTO,movablelimits:t.AUTO,accent:t.AUTO,linebreak:t.LINEBREAK.AUTO,lineleading:t.INHERIT,linebreakstyle:t.AUTO,linebreakmultchar:t.INHERIT,indentalign:t.INHERIT,indentshift:t.INHERIT,indenttarget:t.INHERIT,indentalignfirst:t.INHERIT,indentshiftfirst:t.INHERIT,indentalignlast:t.INHERIT,indentshiftlast:t.INHERIT,texClass:t.AUTO},defaultDef:{form:t.FORM.INFIX,fence:!1,separator:!1,lspace:t.LENGTH.THICKMATHSPACE,rspace:t.LENGTH.THICKMATHSPACE,stretchy:!1,symmetric:!1,maxsize:t.SIZE.INFINITY,minsize:\"0em\",largeop:!1,movablelimits:!1,accent:!1,linebreak:t.LINEBREAK.AUTO,lineleading:\"1ex\",linebreakstyle:\"before\",indentalign:t.INDENTALIGN.AUTO,indentshift:\"0\",indenttarget:\"\",indentalignfirst:t.INDENTALIGN.INDENTALIGN,indentshiftfirst:t.INDENTSHIFT.INDENTSHIFT,indentalignlast:t.INDENTALIGN.INDENTALIGN,indentshiftlast:t.INDENTSHIFT.INDENTSHIFT,texClass:t.TEXCLASS.REL},SPACE_ATTR:{lspace:1,rspace:2,form:4},useMMLspacing:7,autoDefault:function(e,i){var n=this.def;if(!n){if(\"form\"===e)return this.useMMLspacing&=~this.SPACE_ATTR.form,this.getForm();for(var a=this.data.join(\"\"),s=[this.Get(\"form\"),t.FORM.INFIX,t.FORM.POSTFIX,t.FORM.PREFIX],r=0,o=s.length;r<o;r++){var l=this.OPTABLE[s[r]][a];if(l){n=this.makeDef(l);break}}n||(n=this.CheckRange(a)),!n&&i?n={}:(n||(n=MathJax.Hub.Insert({},this.defaultDef)),this.parent?this.def=n:n=MathJax.Hub.Insert({},n),n.form=s[0])}return this.useMMLspacing&=~(this.SPACE_ATTR[e]||0),null!=n[e]?n[e]:i?\"\":this.defaultDef[e]},CheckRange:function(e){var i=e.charCodeAt(0);i>=55296&&i<56320&&(i=(i-55296<<10)+(e.charCodeAt(1)-56320)+65536);for(var n=0,a=this.RANGES.length;n<a&&this.RANGES[n][0]<=i;n++)if(i<=this.RANGES[n][1]){if(this.RANGES[n][3]){var s=t.optableDir+\"/\"+this.RANGES[n][3]+\".js\";this.RANGES[n][3]=null,MathJax.Hub.RestartAfter(MathJax.Ajax.Require(s))}var r=t.TEXCLASSNAMES[this.RANGES[n][2]];return r=this.OPTABLE.infix[e]=t.mo.OPTYPES[\"BIN\"===r?\"BIN3\":r],this.makeDef(r)}return null},makeDef:function(e){null==e[2]&&(e[2]=this.defaultDef.texClass),e[3]||(e[3]={});var i=MathJax.Hub.Insert({},e[3]);return i.lspace=this.SPACE[e[0]],i.rspace=this.SPACE[e[1]],i.texClass=e[2],i.texClass===t.TEXCLASS.REL&&(this.movablelimits||this.data.join(\"\").match(/^[a-z]+$/i))&&(i.texClass=t.TEXCLASS.OP),i},getForm:function(){for(var e=this,i=this.parent,n=this.Parent();n&&n.isEmbellished();)e=i,i=n.parent,n=n.Parent();if(i&&\"mrow\"===i.type&&1!==i.NonSpaceLength()){if(i.FirstNonSpace()===e)return t.FORM.PREFIX;if(i.LastNonSpace()===e)return t.FORM.POSTFIX}return t.FORM.INFIX},isEmbellished:function(){return!0},hasNewline:function(){return this.Get(\"linebreak\")===t.LINEBREAK.NEWLINE},CoreParent:function(){for(var e=this;e&&e.isEmbellished()&&e.CoreMO()===this&&!e.isa(t.math);)e=e.Parent();return e},CoreText:function(e){if(!e)return\"\";if(e.isEmbellished())return e.CoreMO().data.join(\"\");for(;((e.isa(t.mrow)||e.isa(t.TeXAtom)||e.isa(t.mstyle)||e.isa(t.mphantom))&&1===e.data.length||e.isa(t.munderover))&&e.data[0];)e=e.data[0];return e.isToken?e.data.join(\"\"):\"\"},remapChars:{\"*\":\"\\u2217\",'\"':\"\\u2033\",\"\\xb0\":\"\\u2218\",\"\\xb2\":\"2\",\"\\xb3\":\"3\",\"\\xb4\":\"\\u2032\",\"\\xb9\":\"1\"},remap:function(t,e){return t=t.replace(/-/g,\"\\u2212\"),e&&1===(t=t.replace(/'/g,\"\\u2032\").replace(/`/g,\"\\u2035\")).length&&(t=e[t]||t),t},setTeXclass:function(e){var i=this.getValues(\"form\",\"lspace\",\"rspace\",\"fence\");return this.useMMLspacing?(this.texClass=t.TEXCLASS.NONE,this):(i.fence&&!this.texClass&&(i.form===t.FORM.PREFIX&&(this.texClass=t.TEXCLASS.OPEN),i.form===t.FORM.POSTFIX&&(this.texClass=t.TEXCLASS.CLOSE)),this.texClass=this.Get(\"texClass\"),\"\\u2061\"===this.data.join(\"\")?(e&&(e.texClass=t.TEXCLASS.OP,e.fnOP=!0),this.texClass=this.prevClass=t.TEXCLASS.NONE,e):this.adjustTeXclass(e))},adjustTeXclass:function(e){if(this.texClass===t.TEXCLASS.NONE)return e;if(e?(!e.autoOP||this.texClass!==t.TEXCLASS.BIN&&this.texClass!==t.TEXCLASS.REL||(e.texClass=t.TEXCLASS.ORD),this.prevClass=e.texClass||t.TEXCLASS.ORD,this.prevLevel=e.Get(\"scriptlevel\")):this.prevClass=t.TEXCLASS.NONE,this.texClass!==t.TEXCLASS.BIN||this.prevClass!==t.TEXCLASS.NONE&&this.prevClass!==t.TEXCLASS.BIN&&this.prevClass!==t.TEXCLASS.OP&&this.prevClass!==t.TEXCLASS.REL&&this.prevClass!==t.TEXCLASS.OPEN&&this.prevClass!==t.TEXCLASS.PUNCT)if(this.prevClass!==t.TEXCLASS.BIN||this.texClass!==t.TEXCLASS.REL&&this.texClass!==t.TEXCLASS.CLOSE&&this.texClass!==t.TEXCLASS.PUNCT){if(this.texClass===t.TEXCLASS.BIN){for(var i=this,n=this.parent;n&&n.parent&&n.isEmbellished()&&(1===n.data.length||\"mrow\"!==n.type&&n.Core()===i);)i=n,n=n.parent;n.data[n.data.length-1]===i&&(this.texClass=t.TEXCLASS.ORD)}}else e.texClass=this.prevClass=t.TEXCLASS.ORD;else this.texClass=t.TEXCLASS.ORD;return this}}),t.mtext=t.mbase.Subclass({type:\"mtext\",isToken:!0,isSpacelike:function(){return!0},texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT}}),t.mspace=t.mbase.Subclass({type:\"mspace\",isToken:!0,isSpacelike:function(){return!0},defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,width:\"0em\",height:\"0ex\",depth:\"0ex\",linebreak:t.LINEBREAK.AUTO},hasDimAttr:function(){return this.hasValue(\"width\")||this.hasValue(\"height\")||this.hasValue(\"depth\")},hasNewline:function(){return!this.hasDimAttr()&&this.Get(\"linebreak\")===t.LINEBREAK.NEWLINE}}),t.ms=t.mbase.Subclass({type:\"ms\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathvariant:t.INHERIT,mathsize:t.INHERIT,mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,lquote:'\"',rquote:'\"'}}),t.mglyph=t.mbase.Subclass({type:\"mglyph\",isToken:!0,texClass:t.TEXCLASS.ORD,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,alt:\"\",src:\"\",width:t.AUTO,height:t.AUTO,valign:\"0em\"}}),t.mrow=t.mbase.Subclass({type:\"mrow\",isSpacelike:t.mbase.childrenSpacelike,inferred:!1,notParent:!1,isEmbellished:function(){for(var t=!1,e=0,i=this.data.length;e<i;e++)if(null!=this.data[e])if(this.data[e].isEmbellished()){if(t)return!1;t=!0,this.core=e}else if(!this.data[e].isSpacelike())return!1;return t},NonSpaceLength:function(){for(var t=0,e=0,i=this.data.length;e<i;e++)this.data[e]&&!this.data[e].isSpacelike()&&t++;return t},FirstNonSpace:function(){for(var t=0,e=this.data.length;t<e;t++)if(this.data[t]&&!this.data[t].isSpacelike())return this.data[t];return null},LastNonSpace:function(){for(var t=this.data.length-1;t>=0;t--)if(this.data[0]&&!this.data[t].isSpacelike())return this.data[t];return null},Core:function(){return this.isEmbellished()&&void 0!==this.core?this.data[this.core]:this},CoreMO:function(){return this.isEmbellished()&&void 0!==this.core?this.data[this.core].CoreMO():this},toString:function(){return this.inferred?\"[\"+this.data.join(\",\")+\"]\":this.SUPER(arguments).toString.call(this)},setTeXclass:function(e){var i,n=this.data.length;if(!this.open&&!this.close||e&&e.fnOP){for(i=0;i<n;i++)this.data[i]&&(e=this.data[i].setTeXclass(e));return this.data[0]&&this.updateTeXclass(this.data[0]),e}for(this.getPrevClass(e),e=null,i=0;i<n;i++)this.data[i]&&(e=this.data[i].setTeXclass(e));return this.hasOwnProperty(\"texClass\")||(this.texClass=t.TEXCLASS.INNER),this},getAnnotation:function(t){return 1!=this.data.length?null:this.data[0].getAnnotation(t)}}),t.mfrac=t.mbase.Subclass({type:\"mfrac\",num:0,den:1,linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,linethickness:t.LINETHICKNESS.MEDIUM,numalign:t.ALIGN.CENTER,denomalign:t.ALIGN.CENTER,bevelled:!1},adjustChild_displaystyle:function(t){return!1},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return(!this.Get(\"displaystyle\")||e>0)&&e++,e},adjustChild_texprimestyle:function(t){return t==this.den||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setSeparateTeXclasses}),t.msqrt=t.mbase.Subclass({type:\"msqrt\",inferRow:!0,linebreakContainer:!0,texClass:t.TEXCLASS.ORD,setTeXclass:t.mbase.setSeparateTeXclasses,adjustChild_texprimestyle:function(t){return!0}}),t.mroot=t.mbase.Subclass({type:\"mroot\",linebreakContainer:!0,texClass:t.TEXCLASS.ORD,adjustChild_displaystyle:function(t){return 1!==t&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return 1===t&&(e+=2),e},adjustChild_texprimestyle:function(t){return 0===t||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mstyle=t.mbase.Subclass({type:\"mstyle\",isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,inferRow:!0,defaults:{scriptlevel:t.INHERIT,displaystyle:t.INHERIT,scriptsizemultiplier:Math.sqrt(.5),scriptminsize:\"8pt\",mathbackground:t.INHERIT,mathcolor:t.INHERIT,dir:t.INHERIT,infixlinebreakstyle:t.LINEBREAKSTYLE.BEFORE,decimalseparator:\".\"},adjustChild_scriptlevel:function(t){var e=this.scriptlevel;if(null==e)e=this.Get(\"scriptlevel\");else if(String(e).match(/^ *[-+]/)){e=this.Get(\"scriptlevel\",null,!0)+parseInt(e)}return e},inheritFromMe:!0,noInherit:{mpadded:{width:!0,height:!0,depth:!0,lspace:!0,voffset:!0},mtable:{width:!0,height:!0,depth:!0,align:!0}},getRemoved:{fontfamily:\"fontFamily\",fontweight:\"fontWeight\",fontstyle:\"fontStyle\",fontsize:\"fontSize\"},setTeXclass:t.mbase.setChildTeXclass}),t.merror=t.mbase.Subclass({type:\"merror\",inferRow:!0,linebreakContainer:!0,texClass:t.TEXCLASS.ORD}),t.mpadded=t.mbase.Subclass({type:\"mpadded\",inferRow:!0,isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,width:\"\",height:\"\",depth:\"\",lspace:0,voffset:0},setTeXclass:t.mbase.setChildTeXclass}),t.mphantom=t.mbase.Subclass({type:\"mphantom\",texClass:t.TEXCLASS.ORD,inferRow:!0,isSpacelike:t.mbase.childrenSpacelike,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,setTeXclass:t.mbase.setChildTeXclass}),t.mfenced=t.mbase.Subclass({type:\"mfenced\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,open:\"(\",close:\")\",separators:\",\"},addFakeNodes:function(){var e=this.getValues(\"open\",\"close\",\"separators\");if(e.open=e.open.replace(/[ \\t\\n\\r]/g,\"\"),e.close=e.close.replace(/[ \\t\\n\\r]/g,\"\"),e.separators=e.separators.replace(/[ \\t\\n\\r]/g,\"\"),\"\"!==e.open&&(this.SetData(\"open\",t.mo(e.open).With({fence:!0,form:t.FORM.PREFIX,texClass:t.TEXCLASS.OPEN})),this.data.open.useMMLspacing=0),\"\"!==e.separators){for(;e.separators.length<this.data.length;)e.separators+=e.separators.charAt(e.separators.length-1);for(var i=1,n=this.data.length;i<n;i++)this.data[i]&&(this.SetData(\"sep\"+i,t.mo(e.separators.charAt(i-1)).With({separator:!0})),this.data[\"sep\"+i].useMMLspacing=0)}\"\"!==e.close&&(this.SetData(\"close\",t.mo(e.close).With({fence:!0,form:t.FORM.POSTFIX,texClass:t.TEXCLASS.CLOSE})),this.data.close.useMMLspacing=0)},texClass:t.TEXCLASS.OPEN,setTeXclass:function(e){this.addFakeNodes(),this.getPrevClass(e),this.data.open&&(e=this.data.open.setTeXclass(e)),this.data[0]&&(e=this.data[0].setTeXclass(e));for(var i=1,n=this.data.length;i<n;i++)this.data[\"sep\"+i]&&(e=this.data[\"sep\"+i].setTeXclass(e)),this.data[i]&&(e=this.data[i].setTeXclass(e));return this.data.close&&(e=this.data.close.setTeXclass(e)),this.updateTeXclass(this.data.open),this.texClass=t.TEXCLASS.INNER,e}}),t.menclose=t.mbase.Subclass({type:\"menclose\",inferRow:!0,linebreakContainer:!0,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,notation:t.NOTATION.LONGDIV,texClass:t.TEXCLASS.ORD},setTeXclass:t.mbase.setSeparateTeXclasses}),t.msubsup=t.mbase.Subclass({type:\"msubsup\",base:0,sub:1,sup:2,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,subscriptshift:\"\",superscriptshift:\"\",texClass:t.AUTO},autoDefault:function(e){return\"texClass\"===e?this.isEmbellished()?this.CoreMO().Get(e):t.TEXCLASS.ORD:0},adjustChild_displaystyle:function(t){return!(t>0)&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\");return t>0&&e++,e},adjustChild_texprimestyle:function(t){return t===this.sub||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setBaseTeXclasses}),t.msub=t.msubsup.Subclass({type:\"msub\"}),t.msup=t.msubsup.Subclass({type:\"msup\",sub:2,sup:1}),t.mmultiscripts=t.msubsup.Subclass({type:\"mmultiscripts\",adjustChild_texprimestyle:function(t){return t%2==1||this.Get(\"texprimestyle\")}}),t.mprescripts=t.mbase.Subclass({type:\"mprescripts\"}),t.none=t.mbase.Subclass({type:\"none\"}),t.munderover=t.mbase.Subclass({type:\"munderover\",base:0,under:1,over:2,sub:1,sup:2,ACCENTS:[\"\",\"accentunder\",\"accent\"],linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,accent:t.AUTO,accentunder:t.AUTO,align:t.ALIGN.CENTER,texClass:t.AUTO,subscriptshift:\"\",superscriptshift:\"\"},autoDefault:function(e){return\"texClass\"===e?this.isEmbellished()?this.CoreMO().Get(e):t.TEXCLASS.ORD:\"accent\"===e&&this.data[this.over]?this.data[this.over].CoreMO().Get(\"accent\"):!(\"accentunder\"!==e||!this.data[this.under])&&this.data[this.under].CoreMO().Get(\"accent\")},adjustChild_displaystyle:function(t){return!(t>0)&&this.Get(\"displaystyle\")},adjustChild_scriptlevel:function(t){var e=this.Get(\"scriptlevel\"),i=this.data[this.base]&&!this.Get(\"displaystyle\")&&this.data[this.base].CoreMO().Get(\"movablelimits\");return t!=this.under||!i&&this.Get(\"accentunder\")||e++,t!=this.over||!i&&this.Get(\"accent\")||e++,e},adjustChild_texprimestyle:function(t){return!(t!==this.base||!this.data[this.over])||this.Get(\"texprimestyle\")},setTeXclass:t.mbase.setBaseTeXclasses}),t.munder=t.munderover.Subclass({type:\"munder\"}),t.mover=t.munderover.Subclass({type:\"mover\",over:1,under:2,sup:1,sub:2,ACCENTS:[\"\",\"accent\",\"accentunder\"]}),t.mtable=t.mbase.Subclass({type:\"mtable\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,align:t.ALIGN.AXIS,rowalign:t.ALIGN.BASELINE,columnalign:t.ALIGN.CENTER,groupalign:\"{left}\",alignmentscope:!0,columnwidth:t.WIDTH.AUTO,width:t.WIDTH.AUTO,rowspacing:\"1ex\",columnspacing:\".8em\",rowlines:t.LINES.NONE,columnlines:t.LINES.NONE,frame:t.LINES.NONE,framespacing:\"0.4em 0.5ex\",equalrows:!1,equalcolumns:!1,displaystyle:!1,side:t.SIDE.RIGHT,minlabelspacing:\"0.8em\",texClass:t.TEXCLASS.ORD,useHeight:1},adjustChild_displaystyle:function(){return null!=this.displaystyle?this.displaystyle:this.defaults.displaystyle},inheritFromMe:!0,noInherit:{mover:{align:!0},munder:{align:!0},munderover:{align:!0},mtable:{align:!0,rowalign:!0,columnalign:!0,groupalign:!0,alignmentscope:!0,columnwidth:!0,width:!0,rowspacing:!0,columnspacing:!0,rowlines:!0,columnlines:!0,frame:!0,framespacing:!0,equalrows:!0,equalcolumns:!0,displaystyle:!0,side:!0,minlabelspacing:!0,texClass:!0,useHeight:1}},linebreakContainer:!0,Append:function(){for(var e=0,i=arguments.length;e<i;e++)arguments[e]instanceof t.mtr||arguments[e]instanceof t.mlabeledtr||(arguments[e]=t.mtr(arguments[e]));this.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mtr=t.mbase.Subclass({type:\"mtr\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,rowalign:t.INHERIT,columnalign:t.INHERIT,groupalign:t.INHERIT},inheritFromMe:!0,noInherit:{mrow:{rowalign:!0,columnalign:!0,groupalign:!0},mtable:{rowalign:!0,columnalign:!0,groupalign:!0}},linebreakContainer:!0,Append:function(){for(var e=0,i=arguments.length;e<i;e++)arguments[e]instanceof t.mtd||(arguments[e]=t.mtd(arguments[e]));this.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:t.mbase.setSeparateTeXclasses}),t.mtd=t.mbase.Subclass({type:\"mtd\",inferRow:!0,linebreakContainer:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,rowspan:1,columnspan:1,rowalign:t.INHERIT,columnalign:t.INHERIT,groupalign:t.INHERIT},setTeXclass:t.mbase.setSeparateTeXclasses}),t.maligngroup=t.mbase.Subclass({type:\"maligngroup\",isSpacelike:function(){return!0},defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,groupalign:t.INHERIT},inheritFromMe:!0,noInherit:{mrow:{groupalign:!0},mtable:{groupalign:!0}}}),t.malignmark=t.mbase.Subclass({type:\"malignmark\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,edge:t.SIDE.LEFT},isSpacelike:function(){return!0}}),t.mlabeledtr=t.mtr.Subclass({type:\"mlabeledtr\"}),t.maction=t.mbase.Subclass({type:\"maction\",defaults:{mathbackground:t.INHERIT,mathcolor:t.INHERIT,actiontype:t.ACTIONTYPE.TOGGLE,selection:1},selected:function(){return this.data[this.Get(\"selection\")-1]||t.NULL},isEmbellished:function(){return this.selected().isEmbellished()},isSpacelike:function(){return this.selected().isSpacelike()},Core:function(){return this.selected().Core()},CoreMO:function(){return this.selected().CoreMO()},setTeXclass:function(e){this.Get(\"actiontype\")===t.ACTIONTYPE.TOOLTIP&&this.data[1]&&this.data[1].setTeXclass();var i=this.selected();return e=i.setTeXclass(e),this.updateTeXclass(i),e}}),t.semantics=t.mbase.Subclass({type:\"semantics\",notParent:!0,isEmbellished:t.mbase.childEmbellished,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,defaults:{definitionURL:null,encoding:null},setTeXclass:t.mbase.setChildTeXclass,getAnnotation:function(t){var e=MathJax.Hub.config.MathMenu.semanticsAnnotations[t];if(e)for(var i=0,n=this.data.length;i<n;i++){var a=this.data[i].Get(\"encoding\");if(a)for(var s=0,r=e.length;s<r;s++)if(e[s]===a)return this.data[i]}return null}}),t.annotation=t.mbase.Subclass({type:\"annotation\",isChars:!0,linebreakContainer:!0,defaults:{definitionURL:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}}),t[\"annotation-xml\"]=t.mbase.Subclass({type:\"annotation-xml\",linebreakContainer:!0,defaults:{definitionURL:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}}),t.math=t.mstyle.Subclass({type:\"math\",defaults:{mathvariant:t.VARIANT.NORMAL,mathsize:t.SIZE.NORMAL,mathcolor:\"\",mathbackground:t.COLOR.TRANSPARENT,dir:\"ltr\",scriptlevel:0,displaystyle:t.AUTO,display:\"inline\",maxwidth:\"\",overflow:t.OVERFLOW.LINEBREAK,altimg:\"\",\"altimg-width\":\"\",\"altimg-height\":\"\",\"altimg-valign\":\"\",alttext:\"\",cdgroup:\"\",scriptsizemultiplier:Math.sqrt(.5),scriptminsize:\"8px\",infixlinebreakstyle:t.LINEBREAKSTYLE.BEFORE,lineleading:\"1ex\",indentshift:\"auto\",indentalign:t.INDENTALIGN.AUTO,indentalignfirst:t.INDENTALIGN.INDENTALIGN,indentshiftfirst:t.INDENTSHIFT.INDENTSHIFT,indentalignlast:t.INDENTALIGN.INDENTALIGN,indentshiftlast:t.INDENTSHIFT.INDENTSHIFT,decimalseparator:\".\",texprimestyle:!1},autoDefault:function(t){return\"displaystyle\"===t?\"block\"===this.Get(\"display\"):\"\"},linebreakContainer:!0,setTeXclass:t.mbase.setChildTeXclass,getAnnotation:function(t){return 1!=this.data.length?null:this.data[0].getAnnotation(t)}}),t.chars=t.mbase.Subclass({type:\"chars\",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){return this.data.join(\"\")},toString:function(){return this.data.join(\"\")}}),t.entity=t.mbase.Subclass({type:\"entity\",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){return\"#x\"===this.data[0].substr(0,2)?parseInt(this.data[0].substr(2),16):\"#\"===this.data[0].substr(0,1)?parseInt(this.data[0].substr(1)):0},toString:function(){var t=this.value();return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}}),t.xml=t.mbase.Subclass({type:\"xml\",Init:function(){return this.div=document.createElement(\"div\"),this.SUPER(arguments).Init.apply(this,arguments)},Append:function(){for(var t=0,e=arguments.length;t<e;t++){var i=this.Import(arguments[t]);this.data.push(i),this.div.appendChild(i)}},Import:function(t){if(document.importNode)return document.importNode(t,!0);var e,i,n;if(1===t.nodeType){for(e=document.createElement(t.nodeName),i=0,n=t.attributes.length;i<n;i++){var a=t.attributes[i];a.specified&&null!=a.nodeValue&&\"\"!=a.nodeValue&&e.setAttribute(a.nodeName,a.nodeValue),\"style\"===a.nodeName&&(e.style.cssText=a.nodeValue)}t.className&&(e.className=t.className)}else if(3===t.nodeType||4===t.nodeType)e=document.createTextNode(t.nodeValue);else{if(8!==t.nodeType)return document.createTextNode(\"\");e=document.createComment(t.nodeValue)}for(i=0,n=t.childNodes.length;i<n;i++)e.appendChild(this.Import(t.childNodes[i]));return e},value:function(){return this.div},toString:function(){return this.div.innerHTML}}),t.TeXAtom=t.mbase.Subclass({type:\"texatom\",linebreakContainer:!0,inferRow:!0,notParent:!0,texClass:t.TEXCLASS.ORD,Core:t.mbase.childCore,CoreMO:t.mbase.childCoreMO,isEmbellished:t.mbase.childEmbellished,setTeXclass:function(t){return this.data[0].setTeXclass(),this.adjustTeXclass(t)},adjustTeXclass:t.mo.prototype.adjustTeXclass}),t.NULL=t.mbase().With({type:\"null\"});var e=t.TEXCLASS,i={ORD:[0,0,e.ORD],ORD11:[1,1,e.ORD],ORD21:[2,1,e.ORD],ORD02:[0,2,e.ORD],ORD55:[5,5,e.ORD],OP:[1,2,e.OP,{largeop:!0,movablelimits:!0,symmetric:!0}],OPFIXED:[1,2,e.OP,{largeop:!0,movablelimits:!0}],INTEGRAL:[0,1,e.OP,{largeop:!0,symmetric:!0}],INTEGRAL2:[1,2,e.OP,{largeop:!0,symmetric:!0}],BIN3:[3,3,e.BIN],BIN4:[4,4,e.BIN],BIN01:[0,1,e.BIN],BIN5:[5,5,e.BIN],TALLBIN:[4,4,e.BIN,{stretchy:!0}],BINOP:[4,4,e.BIN,{largeop:!0,movablelimits:!0}],REL:[5,5,e.REL],REL1:[1,1,e.REL,{stretchy:!0}],REL4:[4,4,e.REL],RELSTRETCH:[5,5,e.REL,{stretchy:!0}],RELACCENT:[5,5,e.REL,{accent:!0}],WIDEREL:[5,5,e.REL,{accent:!0,stretchy:!0}],OPEN:[0,0,e.OPEN,{fence:!0,stretchy:!0,symmetric:!0}],CLOSE:[0,0,e.CLOSE,{fence:!0,stretchy:!0,symmetric:!0}],INNER:[0,0,e.INNER],PUNCT:[0,3,e.PUNCT],ACCENT:[0,0,e.ORD,{accent:!0}],WIDEACCENT:[0,0,e.ORD,{accent:!0,stretchy:!0}]};t.mo.Augment({SPACE:[\"0em\",\"0.1111em\",\"0.1667em\",\"0.2222em\",\"0.2667em\",\"0.3333em\"],RANGES:[[32,127,e.REL,\"BasicLatin\"],[160,255,e.ORD,\"Latin1Supplement\"],[256,383,e.ORD],[384,591,e.ORD],[688,767,e.ORD,\"SpacingModLetters\"],[768,879,e.ORD,\"CombDiacritMarks\"],[880,1023,e.ORD,\"GreekAndCoptic\"],[7680,7935,e.ORD],[8192,8303,e.PUNCT,\"GeneralPunctuation\"],[8304,8351,e.ORD],[8352,8399,e.ORD],[8400,8447,e.ORD,\"CombDiactForSymbols\"],[8448,8527,e.ORD,\"LetterlikeSymbols\"],[8528,8591,e.ORD],[8592,8703,e.REL,\"Arrows\"],[8704,8959,e.BIN,\"MathOperators\"],[8960,9215,e.ORD,\"MiscTechnical\"],[9312,9471,e.ORD],[9472,9631,e.ORD],[9632,9727,e.ORD,\"GeometricShapes\"],[9984,10175,e.ORD,\"Dingbats\"],[10176,10223,e.ORD,\"MiscMathSymbolsA\"],[10224,10239,e.REL,\"SupplementalArrowsA\"],[10496,10623,e.REL,\"SupplementalArrowsB\"],[10624,10751,e.ORD,\"MiscMathSymbolsB\"],[10752,11007,e.BIN,\"SuppMathOperators\"],[11008,11263,e.ORD,\"MiscSymbolsAndArrows\"],[119808,120831,e.ORD]],OPTABLE:{prefix:{\"\\u2200\":i.ORD21,\"\\u2202\":i.ORD21,\"\\u2203\":i.ORD21,\"\\u2207\":i.ORD21,\"\\u220f\":i.OP,\"\\u2210\":i.OP,\"\\u2211\":i.OP,\"\\u2212\":i.BIN01,\"\\u2213\":i.BIN01,\"\\u221a\":[1,1,e.ORD,{stretchy:!0}],\"\\u2220\":i.ORD,\"\\u222b\":i.INTEGRAL,\"\\u222e\":i.INTEGRAL,\"\\u22c0\":i.OP,\"\\u22c1\":i.OP,\"\\u22c2\":i.OP,\"\\u22c3\":i.OP,\"\\u2308\":i.OPEN,\"\\u230a\":i.OPEN,\"\\u27e8\":i.OPEN,\"\\u27ee\":i.OPEN,\"\\u2a00\":i.OP,\"\\u2a01\":i.OP,\"\\u2a02\":i.OP,\"\\u2a04\":i.OP,\"\\u2a06\":i.OP,\"\\xac\":i.ORD21,\"\\xb1\":i.BIN01,\"(\":i.OPEN,\"+\":i.BIN01,\"-\":i.BIN01,\"[\":i.OPEN,\"{\":i.OPEN,\"|\":i.OPEN},postfix:{\"!\":[1,0,e.CLOSE],\"&\":i.ORD,\"\\u2032\":i.ORD02,\"\\u203e\":i.WIDEACCENT,\"\\u2309\":i.CLOSE,\"\\u230b\":i.CLOSE,\"\\u23de\":i.WIDEACCENT,\"\\u23df\":i.WIDEACCENT,\"\\u266d\":i.ORD02,\"\\u266e\":i.ORD02,\"\\u266f\":i.ORD02,\"\\u27e9\":i.CLOSE,\"\\u27ef\":i.CLOSE,\"\\u02c6\":i.WIDEACCENT,\"\\u02c7\":i.WIDEACCENT,\"\\u02c9\":i.WIDEACCENT,\"\\u02ca\":i.ACCENT,\"\\u02cb\":i.ACCENT,\"\\u02d8\":i.ACCENT,\"\\u02d9\":i.ACCENT,\"\\u02dc\":i.WIDEACCENT,\"\\u0302\":i.WIDEACCENT,\"\\xa8\":i.ACCENT,\"\\xaf\":i.WIDEACCENT,\")\":i.CLOSE,\"]\":i.CLOSE,\"^\":i.WIDEACCENT,_:i.WIDEACCENT,\"`\":i.ACCENT,\"|\":i.CLOSE,\"}\":i.CLOSE,\"~\":i.WIDEACCENT},infix:{\"\":i.ORD,\"%\":[3,3,e.ORD],\"\\u2022\":i.BIN4,\"\\u2026\":i.INNER,\"\\u2044\":i.TALLBIN,\"\\u2061\":i.ORD,\"\\u2062\":i.ORD,\"\\u2063\":[0,0,e.ORD,{linebreakstyle:\"after\",separator:!0}],\"\\u2064\":i.ORD,\"\\u2190\":i.WIDEREL,\"\\u2191\":i.RELSTRETCH,\"\\u2192\":i.WIDEREL,\"\\u2193\":i.RELSTRETCH,\"\\u2194\":i.WIDEREL,\"\\u2195\":i.RELSTRETCH,\"\\u2196\":i.RELSTRETCH,\"\\u2197\":i.RELSTRETCH,\"\\u2198\":i.RELSTRETCH,\"\\u2199\":i.RELSTRETCH,\"\\u21a6\":i.WIDEREL,\"\\u21a9\":i.WIDEREL,\"\\u21aa\":i.WIDEREL,\"\\u21bc\":i.WIDEREL,\"\\u21bd\":i.WIDEREL,\"\\u21c0\":i.WIDEREL,\"\\u21c1\":i.WIDEREL,\"\\u21cc\":i.WIDEREL,\"\\u21d0\":i.WIDEREL,\"\\u21d1\":i.RELSTRETCH,\"\\u21d2\":i.WIDEREL,\"\\u21d3\":i.RELSTRETCH,\"\\u21d4\":i.WIDEREL,\"\\u21d5\":i.RELSTRETCH,\"\\u2208\":i.REL,\"\\u2209\":i.REL,\"\\u220b\":i.REL,\"\\u2212\":i.BIN4,\"\\u2213\":i.BIN4,\"\\u2215\":i.TALLBIN,\"\\u2216\":i.BIN4,\"\\u2217\":i.BIN4,\"\\u2218\":i.BIN4,\"\\u2219\":i.BIN4,\"\\u221d\":i.REL,\"\\u2223\":i.REL,\"\\u2225\":i.REL,\"\\u2227\":i.BIN4,\"\\u2228\":i.BIN4,\"\\u2229\":i.BIN4,\"\\u222a\":i.BIN4,\"\\u223c\":i.REL,\"\\u2240\":i.BIN4,\"\\u2243\":i.REL,\"\\u2245\":i.REL,\"\\u2248\":i.REL,\"\\u224d\":i.REL,\"\\u2250\":i.REL,\"\\u2260\":i.REL,\"\\u2261\":i.REL,\"\\u2264\":i.REL,\"\\u2265\":i.REL,\"\\u226a\":i.REL,\"\\u226b\":i.REL,\"\\u227a\":i.REL,\"\\u227b\":i.REL,\"\\u2282\":i.REL,\"\\u2283\":i.REL,\"\\u2286\":i.REL,\"\\u2287\":i.REL,\"\\u228e\":i.BIN4,\"\\u2291\":i.REL,\"\\u2292\":i.REL,\"\\u2293\":i.BIN4,\"\\u2294\":i.BIN4,\"\\u2295\":i.BIN4,\"\\u2296\":i.BIN4,\"\\u2297\":i.BIN4,\"\\u2298\":i.BIN4,\"\\u2299\":i.BIN4,\"\\u22a2\":i.REL,\"\\u22a3\":i.REL,\"\\u22a4\":i.ORD55,\"\\u22a5\":i.REL,\"\\u22a8\":i.REL,\"\\u22c4\":i.BIN4,\"\\u22c5\":i.BIN4,\"\\u22c6\":i.BIN4,\"\\u22c8\":i.REL,\"\\u22ee\":i.ORD55,\"\\u22ef\":i.INNER,\"\\u22f1\":[5,5,e.INNER],\"\\u25b3\":i.BIN4,\"\\u25b5\":i.BIN4,\"\\u25b9\":i.BIN4,\"\\u25bd\":i.BIN4,\"\\u25bf\":i.BIN4,\"\\u25c3\":i.BIN4,\"\\u2758\":i.REL,\"\\u27f5\":i.WIDEREL,\"\\u27f6\":i.WIDEREL,\"\\u27f7\":i.WIDEREL,\"\\u27f8\":i.WIDEREL,\"\\u27f9\":i.WIDEREL,\"\\u27fa\":i.WIDEREL,\"\\u27fc\":i.WIDEREL,\"\\u2a2f\":i.BIN4,\"\\u2a3f\":i.BIN4,\"\\u2aaf\":i.REL,\"\\u2ab0\":i.REL,\"\\xb1\":i.BIN4,\"\\xb7\":i.BIN4,\"\\xd7\":i.BIN4,\"\\xf7\":i.BIN4,\"*\":i.BIN3,\"+\":i.BIN4,\",\":[0,3,e.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"-\":i.BIN4,\".\":[3,3,e.ORD],\"/\":i.ORD11,\":\":[1,2,e.REL],\";\":[0,3,e.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"<\":i.REL,\"=\":i.REL,\">\":i.REL,\"?\":[1,1,e.CLOSE],\"\\\\\":i.ORD,\"^\":i.ORD11,_:i.ORD11,\"|\":[2,2,e.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"#\":i.ORD,$:i.ORD,\".\":[0,3,e.PUNCT,{separator:!0}],\"\\u02b9\":i.ORD,\"\\u0300\":i.ACCENT,\"\\u0301\":i.ACCENT,\"\\u0303\":i.WIDEACCENT,\"\\u0304\":i.ACCENT,\"\\u0306\":i.ACCENT,\"\\u0307\":i.ACCENT,\"\\u0308\":i.ACCENT,\"\\u030c\":i.ACCENT,\"\\u0332\":i.WIDEACCENT,\"\\u0338\":i.REL4,\"\\u2015\":[0,0,e.ORD,{stretchy:!0}],\"\\u2017\":[0,0,e.ORD,{stretchy:!0}],\"\\u2020\":i.BIN3,\"\\u2021\":i.BIN3,\"\\u20d7\":i.ACCENT,\"\\u2111\":i.ORD,\"\\u2113\":i.ORD,\"\\u2118\":i.ORD,\"\\u211c\":i.ORD,\"\\u2205\":i.ORD,\"\\u221e\":i.ORD,\"\\u2305\":i.BIN3,\"\\u2306\":i.BIN3,\"\\u2322\":i.REL4,\"\\u2323\":i.REL4,\"\\u2329\":i.OPEN,\"\\u232a\":i.CLOSE,\"\\u23aa\":i.ORD,\"\\u23af\":[0,0,e.ORD,{stretchy:!0}],\"\\u23b0\":i.OPEN,\"\\u23b1\":i.CLOSE,\"\\u2500\":i.ORD,\"\\u25ef\":i.BIN3,\"\\u2660\":i.ORD,\"\\u2661\":i.ORD,\"\\u2662\":i.ORD,\"\\u2663\":i.ORD,\"\\u3008\":i.OPEN,\"\\u3009\":i.CLOSE,\"\\ufe37\":i.WIDEACCENT,\"\\ufe38\":i.WIDEACCENT}}},{OPTYPES:i});var n=t.mo.prototype.OPTABLE;n.infix[\"^\"]=i.WIDEREL,n.infix._=i.WIDEREL,n.prefix[\"\\u2223\"]=i.OPEN,n.prefix[\"\\u2225\"]=i.OPEN,n.postfix[\"\\u2223\"]=i.CLOSE,n.postfix[\"\\u2225\"]=i.CLOSE}(MathJax.ElementJax.mml),MathJax.ElementJax.mml.loadComplete(\"jax.js\")},function(t,e){MathJax.InputJax.AsciiMath=MathJax.InputJax({id:\"AsciiMath\",version:\"2.7.2\",directory:MathJax.InputJax.directory+\"/AsciiMath\",extensionDir:MathJax.InputJax.extensionDir+\"/AsciiMath\",config:{fixphi:!0,useMathMLspacing:!0,displaystyle:!0,decimalsign:\".\"}}),MathJax.InputJax.AsciiMath.Register(\"math/asciimath\"),MathJax.InputJax.AsciiMath.loadComplete(\"config.js\")},function(t,e){var i,n;!function(t){var e,i=MathJax.Object.Subclass({firstChild:null,lastChild:null,Init:function(){this.childNodes=[]},appendChild:function(t){return t.parent&&t.parent.removeChild(t),this.lastChild&&(this.lastChild.nextSibling=t),this.firstChild||(this.firstChild=t),this.childNodes.push(t),t.parent=this,this.lastChild=t,t},removeChild:function(t){for(var e=0,i=this.childNodes.length;e<i&&this.childNodes[e]!==t;e++);if(e!==i)return this.childNodes.splice(e,1),t===this.firstChild&&(this.firstChild=t.nextSibling),t===this.lastChild&&(this.childNodes.length?this.lastChild=this.childNodes[this.childNodes.length-1]:this.lastChild=null),e&&(this.childNodes[e-1].nextSibling=t.nextSibling),t.nextSibling=t.parent=null,t},replaceChild:function(t,e){for(var i=0,n=this.childNodes.length;i<n&&this.childNodes[i]!==e;i++);return i?this.childNodes[i-1].nextSibling=t:this.firstChild=t,i>=n-1&&(this.lastChild=t),this.childNodes[i]=t,t.nextSibling=e.nextSibling,e.nextSibling=e.parent=null,e},hasChildNodes:function(t){return this.childNodes.length>0},toString:function(){return\"{\"+this.childNodes.join(\"\")+\"}\"}}),n={getElementById:!0,createElementNS:function(i,n){var a=e[n]();return\"mo\"===n&&t.config.useMathMLspacing&&(a.useMMLspacing=128),a},createTextNode:function(t){return e.chars(t).With({nodeValue:t})},createDocumentFragment:function(){return i()}},a={appName:\"MathJax\"},s=\"blue\",r=\"serif\",o=!0,l=!0,u=\".\",h=\"Microsoft\"==a.appName.slice(0,9);function p(t){return h?n.createElement(t):n.createElementNS(\"http://www.w3.org/1999/xhtml\",t)}var c=\"http://www.w3.org/1998/Math/MathML\";function d(t){return h?n.createElement(\"m:\"+t):n.createElementNS(c,t)}function m(t,e){var i;return i=h?n.createElement(\"m:\"+t):n.createElementNS(c,t),e&&i.appendChild(e),i}var f=[\"\\ud835\\udc9c\",\"\\u212c\",\"\\ud835\\udc9e\",\"\\ud835\\udc9f\",\"\\u2130\",\"\\u2131\",\"\\ud835\\udca2\",\"\\u210b\",\"\\u2110\",\"\\ud835\\udca5\",\"\\ud835\\udca6\",\"\\u2112\",\"\\u2133\",\"\\ud835\\udca9\",\"\\ud835\\udcaa\",\"\\ud835\\udcab\",\"\\ud835\\udcac\",\"\\u211b\",\"\\ud835\\udcae\",\"\\ud835\\udcaf\",\"\\ud835\\udcb0\",\"\\ud835\\udcb1\",\"\\ud835\\udcb2\",\"\\ud835\\udcb3\",\"\\ud835\\udcb4\",\"\\ud835\\udcb5\",\"\\ud835\\udcb6\",\"\\ud835\\udcb7\",\"\\ud835\\udcb8\",\"\\ud835\\udcb9\",\"\\u212f\",\"\\ud835\\udcbb\",\"\\u210a\",\"\\ud835\\udcbd\",\"\\ud835\\udcbe\",\"\\ud835\\udcbf\",\"\\ud835\\udcc0\",\"\\ud835\\udcc1\",\"\\ud835\\udcc2\",\"\\ud835\\udcc3\",\"\\u2134\",\"\\ud835\\udcc5\",\"\\ud835\\udcc6\",\"\\ud835\\udcc7\",\"\\ud835\\udcc8\",\"\\ud835\\udcc9\",\"\\ud835\\udcca\",\"\\ud835\\udccb\",\"\\ud835\\udccc\",\"\\ud835\\udccd\",\"\\ud835\\udcce\",\"\\ud835\\udccf\"],g=[\"\\ud835\\udd04\",\"\\ud835\\udd05\",\"\\u212d\",\"\\ud835\\udd07\",\"\\ud835\\udd08\",\"\\ud835\\udd09\",\"\\ud835\\udd0a\",\"\\u210c\",\"\\u2111\",\"\\ud835\\udd0d\",\"\\ud835\\udd0e\",\"\\ud835\\udd0f\",\"\\ud835\\udd10\",\"\\ud835\\udd11\",\"\\ud835\\udd12\",\"\\ud835\\udd13\",\"\\ud835\\udd14\",\"\\u211c\",\"\\ud835\\udd16\",\"\\ud835\\udd17\",\"\\ud835\\udd18\",\"\\ud835\\udd19\",\"\\ud835\\udd1a\",\"\\ud835\\udd1b\",\"\\ud835\\udd1c\",\"\\u2128\",\"\\ud835\\udd1e\",\"\\ud835\\udd1f\",\"\\ud835\\udd20\",\"\\ud835\\udd21\",\"\\ud835\\udd22\",\"\\ud835\\udd23\",\"\\ud835\\udd24\",\"\\ud835\\udd25\",\"\\ud835\\udd26\",\"\\ud835\\udd27\",\"\\ud835\\udd28\",\"\\ud835\\udd29\",\"\\ud835\\udd2a\",\"\\ud835\\udd2b\",\"\\ud835\\udd2c\",\"\\ud835\\udd2d\",\"\\ud835\\udd2e\",\"\\ud835\\udd2f\",\"\\ud835\\udd30\",\"\\ud835\\udd31\",\"\\ud835\\udd32\",\"\\ud835\\udd33\",\"\\ud835\\udd34\",\"\\ud835\\udd35\",\"\\ud835\\udd36\",\"\\ud835\\udd37\"],E=[\"\\ud835\\udd38\",\"\\ud835\\udd39\",\"\\u2102\",\"\\ud835\\udd3b\",\"\\ud835\\udd3c\",\"\\ud835\\udd3d\",\"\\ud835\\udd3e\",\"\\u210d\",\"\\ud835\\udd40\",\"\\ud835\\udd41\",\"\\ud835\\udd42\",\"\\ud835\\udd43\",\"\\ud835\\udd44\",\"\\u2115\",\"\\ud835\\udd46\",\"\\u2119\",\"\\u211a\",\"\\u211d\",\"\\ud835\\udd4a\",\"\\ud835\\udd4b\",\"\\ud835\\udd4c\",\"\\ud835\\udd4d\",\"\\ud835\\udd4e\",\"\\ud835\\udd4f\",\"\\ud835\\udd50\",\"\\u2124\",\"\\ud835\\udd52\",\"\\ud835\\udd53\",\"\\ud835\\udd54\",\"\\ud835\\udd55\",\"\\ud835\\udd56\",\"\\ud835\\udd57\",\"\\ud835\\udd58\",\"\\ud835\\udd59\",\"\\ud835\\udd5a\",\"\\ud835\\udd5b\",\"\\ud835\\udd5c\",\"\\ud835\\udd5d\",\"\\ud835\\udd5e\",\"\\ud835\\udd5f\",\"\\ud835\\udd60\",\"\\ud835\\udd61\",\"\\ud835\\udd62\",\"\\ud835\\udd63\",\"\\ud835\\udd64\",\"\\ud835\\udd65\",\"\\ud835\\udd66\",\"\\ud835\\udd67\",\"\\ud835\\udd68\",\"\\ud835\\udd69\",\"\\ud835\\udd6a\",\"\\ud835\\udd6b\"],y=8,x={input:'\"',tag:\"mtext\",output:\"mbox\",tex:null,ttype:10},T=[{input:\"alpha\",tag:\"mi\",output:\"\\u03b1\",tex:null,ttype:0},{input:\"beta\",tag:\"mi\",output:\"\\u03b2\",tex:null,ttype:0},{input:\"chi\",tag:\"mi\",output:\"\\u03c7\",tex:null,ttype:0},{input:\"delta\",tag:\"mi\",output:\"\\u03b4\",tex:null,ttype:0},{input:\"Delta\",tag:\"mo\",output:\"\\u0394\",tex:null,ttype:0},{input:\"epsi\",tag:\"mi\",output:\"\\u03b5\",tex:\"epsilon\",ttype:0},{input:\"varepsilon\",tag:\"mi\",output:\"\\u025b\",tex:null,ttype:0},{input:\"eta\",tag:\"mi\",output:\"\\u03b7\",tex:null,ttype:0},{input:\"gamma\",tag:\"mi\",output:\"\\u03b3\",tex:null,ttype:0},{input:\"Gamma\",tag:\"mo\",output:\"\\u0393\",tex:null,ttype:0},{input:\"iota\",tag:\"mi\",output:\"\\u03b9\",tex:null,ttype:0},{input:\"kappa\",tag:\"mi\",output:\"\\u03ba\",tex:null,ttype:0},{input:\"lambda\",tag:\"mi\",output:\"\\u03bb\",tex:null,ttype:0},{input:\"Lambda\",tag:\"mo\",output:\"\\u039b\",tex:null,ttype:0},{input:\"lamda\",tag:\"mi\",output:\"\\u03bb\",tex:null,ttype:0},{input:\"Lamda\",tag:\"mo\",output:\"\\u039b\",tex:null,ttype:0},{input:\"mu\",tag:\"mi\",output:\"\\u03bc\",tex:null,ttype:0},{input:\"nu\",tag:\"mi\",output:\"\\u03bd\",tex:null,ttype:0},{input:\"omega\",tag:\"mi\",output:\"\\u03c9\",tex:null,ttype:0},{input:\"Omega\",tag:\"mo\",output:\"\\u03a9\",tex:null,ttype:0},{input:\"phi\",tag:\"mi\",output:\"\\u03d5\",tex:null,ttype:0},{input:\"varphi\",tag:\"mi\",output:\"\\u03c6\",tex:null,ttype:0},{input:\"Phi\",tag:\"mo\",output:\"\\u03a6\",tex:null,ttype:0},{input:\"pi\",tag:\"mi\",output:\"\\u03c0\",tex:null,ttype:0},{input:\"Pi\",tag:\"mo\",output:\"\\u03a0\",tex:null,ttype:0},{input:\"psi\",tag:\"mi\",output:\"\\u03c8\",tex:null,ttype:0},{input:\"Psi\",tag:\"mi\",output:\"\\u03a8\",tex:null,ttype:0},{input:\"rho\",tag:\"mi\",output:\"\\u03c1\",tex:null,ttype:0},{input:\"sigma\",tag:\"mi\",output:\"\\u03c3\",tex:null,ttype:0},{input:\"Sigma\",tag:\"mo\",output:\"\\u03a3\",tex:null,ttype:0},{input:\"tau\",tag:\"mi\",output:\"\\u03c4\",tex:null,ttype:0},{input:\"theta\",tag:\"mi\",output:\"\\u03b8\",tex:null,ttype:0},{input:\"vartheta\",tag:\"mi\",output:\"\\u03d1\",tex:null,ttype:0},{input:\"Theta\",tag:\"mo\",output:\"\\u0398\",tex:null,ttype:0},{input:\"upsilon\",tag:\"mi\",output:\"\\u03c5\",tex:null,ttype:0},{input:\"xi\",tag:\"mi\",output:\"\\u03be\",tex:null,ttype:0},{input:\"Xi\",tag:\"mo\",output:\"\\u039e\",tex:null,ttype:0},{input:\"zeta\",tag:\"mi\",output:\"\\u03b6\",tex:null,ttype:0},{input:\"*\",tag:\"mo\",output:\"\\u22c5\",tex:\"cdot\",ttype:0},{input:\"**\",tag:\"mo\",output:\"\\u2217\",tex:\"ast\",ttype:0},{input:\"***\",tag:\"mo\",output:\"\\u22c6\",tex:\"star\",ttype:0},{input:\"//\",tag:\"mo\",output:\"/\",tex:null,ttype:0},{input:\"\\\\\\\\\",tag:\"mo\",output:\"\\\\\",tex:\"backslash\",ttype:0},{input:\"setminus\",tag:\"mo\",output:\"\\\\\",tex:null,ttype:0},{input:\"xx\",tag:\"mo\",output:\"\\xd7\",tex:\"times\",ttype:0},{input:\"|><\",tag:\"mo\",output:\"\\u22c9\",tex:\"ltimes\",ttype:0},{input:\"><|\",tag:\"mo\",output:\"\\u22ca\",tex:\"rtimes\",ttype:0},{input:\"|><|\",tag:\"mo\",output:\"\\u22c8\",tex:\"bowtie\",ttype:0},{input:\"-:\",tag:\"mo\",output:\"\\xf7\",tex:\"div\",ttype:0},{input:\"divide\",tag:\"mo\",output:\"-:\",tex:null,ttype:y},{input:\"@\",tag:\"mo\",output:\"\\u2218\",tex:\"circ\",ttype:0},{input:\"o+\",tag:\"mo\",output:\"\\u2295\",tex:\"oplus\",ttype:0},{input:\"ox\",tag:\"mo\",output:\"\\u2297\",tex:\"otimes\",ttype:0},{input:\"o.\",tag:\"mo\",output:\"\\u2299\",tex:\"odot\",ttype:0},{input:\"sum\",tag:\"mo\",output:\"\\u2211\",tex:null,ttype:7},{input:\"prod\",tag:\"mo\",output:\"\\u220f\",tex:null,ttype:7},{input:\"^^\",tag:\"mo\",output:\"\\u2227\",tex:\"wedge\",ttype:0},{input:\"^^^\",tag:\"mo\",output:\"\\u22c0\",tex:\"bigwedge\",ttype:7},{input:\"vv\",tag:\"mo\",output:\"\\u2228\",tex:\"vee\",ttype:0},{input:\"vvv\",tag:\"mo\",output:\"\\u22c1\",tex:\"bigvee\",ttype:7},{input:\"nn\",tag:\"mo\",output:\"\\u2229\",tex:\"cap\",ttype:0},{input:\"nnn\",tag:\"mo\",output:\"\\u22c2\",tex:\"bigcap\",ttype:7},{input:\"uu\",tag:\"mo\",output:\"\\u222a\",tex:\"cup\",ttype:0},{input:\"uuu\",tag:\"mo\",output:\"\\u22c3\",tex:\"bigcup\",ttype:7},{input:\"!=\",tag:\"mo\",output:\"\\u2260\",tex:\"ne\",ttype:0},{input:\":=\",tag:\"mo\",output:\":=\",tex:null,ttype:0},{input:\"lt\",tag:\"mo\",output:\"<\",tex:null,ttype:0},{input:\"<=\",tag:\"mo\",output:\"\\u2264\",tex:\"le\",ttype:0},{input:\"lt=\",tag:\"mo\",output:\"\\u2264\",tex:\"leq\",ttype:0},{input:\"gt\",tag:\"mo\",output:\">\",tex:null,ttype:0},{input:\">=\",tag:\"mo\",output:\"\\u2265\",tex:\"ge\",ttype:0},{input:\"gt=\",tag:\"mo\",output:\"\\u2265\",tex:\"geq\",ttype:0},{input:\"-<\",tag:\"mo\",output:\"\\u227a\",tex:\"prec\",ttype:0},{input:\"-lt\",tag:\"mo\",output:\"\\u227a\",tex:null,ttype:0},{input:\">-\",tag:\"mo\",output:\"\\u227b\",tex:\"succ\",ttype:0},{input:\"-<=\",tag:\"mo\",output:\"\\u2aaf\",tex:\"preceq\",ttype:0},{input:\">-=\",tag:\"mo\",output:\"\\u2ab0\",tex:\"succeq\",ttype:0},{input:\"in\",tag:\"mo\",output:\"\\u2208\",tex:null,ttype:0},{input:\"!in\",tag:\"mo\",output:\"\\u2209\",tex:\"notin\",ttype:0},{input:\"sub\",tag:\"mo\",output:\"\\u2282\",tex:\"subset\",ttype:0},{input:\"sup\",tag:\"mo\",output:\"\\u2283\",tex:\"supset\",ttype:0},{input:\"sube\",tag:\"mo\",output:\"\\u2286\",tex:\"subseteq\",ttype:0},{input:\"supe\",tag:\"mo\",output:\"\\u2287\",tex:\"supseteq\",ttype:0},{input:\"-=\",tag:\"mo\",output:\"\\u2261\",tex:\"equiv\",ttype:0},{input:\"~=\",tag:\"mo\",output:\"\\u2245\",tex:\"cong\",ttype:0},{input:\"~~\",tag:\"mo\",output:\"\\u2248\",tex:\"approx\",ttype:0},{input:\"prop\",tag:\"mo\",output:\"\\u221d\",tex:\"propto\",ttype:0},{input:\"and\",tag:\"mtext\",output:\"and\",tex:null,ttype:6},{input:\"or\",tag:\"mtext\",output:\"or\",tex:null,ttype:6},{input:\"not\",tag:\"mo\",output:\"\\xac\",tex:\"neg\",ttype:0},{input:\"=>\",tag:\"mo\",output:\"\\u21d2\",tex:\"implies\",ttype:0},{input:\"if\",tag:\"mo\",output:\"if\",tex:null,ttype:6},{input:\"<=>\",tag:\"mo\",output:\"\\u21d4\",tex:\"iff\",ttype:0},{input:\"AA\",tag:\"mo\",output:\"\\u2200\",tex:\"forall\",ttype:0},{input:\"EE\",tag:\"mo\",output:\"\\u2203\",tex:\"exists\",ttype:0},{input:\"_|_\",tag:\"mo\",output:\"\\u22a5\",tex:\"bot\",ttype:0},{input:\"TT\",tag:\"mo\",output:\"\\u22a4\",tex:\"top\",ttype:0},{input:\"|--\",tag:\"mo\",output:\"\\u22a2\",tex:\"vdash\",ttype:0},{input:\"|==\",tag:\"mo\",output:\"\\u22a8\",tex:\"models\",ttype:0},{input:\"(\",tag:\"mo\",output:\"(\",tex:null,ttype:4},{input:\")\",tag:\"mo\",output:\")\",tex:null,ttype:5},{input:\"[\",tag:\"mo\",output:\"[\",tex:null,ttype:4},{input:\"]\",tag:\"mo\",output:\"]\",tex:null,ttype:5},{input:\"{\",tag:\"mo\",output:\"{\",tex:null,ttype:4},{input:\"}\",tag:\"mo\",output:\"}\",tex:null,ttype:5},{input:\"|\",tag:\"mo\",output:\"|\",tex:null,ttype:9},{input:\"(:\",tag:\"mo\",output:\"\\u2329\",tex:\"langle\",ttype:4},{input:\":)\",tag:\"mo\",output:\"\\u232a\",tex:\"rangle\",ttype:5},{input:\"<<\",tag:\"mo\",output:\"\\u2329\",tex:null,ttype:4},{input:\">>\",tag:\"mo\",output:\"\\u232a\",tex:null,ttype:5},{input:\"{:\",tag:\"mo\",output:\"{:\",tex:null,ttype:4,invisible:!0},{input:\":}\",tag:\"mo\",output:\":}\",tex:null,ttype:5,invisible:!0},{input:\"int\",tag:\"mo\",output:\"\\u222b\",tex:null,ttype:0},{input:\"dx\",tag:\"mi\",output:\"{:d x:}\",tex:null,ttype:y},{input:\"dy\",tag:\"mi\",output:\"{:d y:}\",tex:null,ttype:y},{input:\"dz\",tag:\"mi\",output:\"{:d z:}\",tex:null,ttype:y},{input:\"dt\",tag:\"mi\",output:\"{:d t:}\",tex:null,ttype:y},{input:\"oint\",tag:\"mo\",output:\"\\u222e\",tex:null,ttype:0},{input:\"del\",tag:\"mo\",output:\"\\u2202\",tex:\"partial\",ttype:0},{input:\"grad\",tag:\"mo\",output:\"\\u2207\",tex:\"nabla\",ttype:0},{input:\"+-\",tag:\"mo\",output:\"\\xb1\",tex:\"pm\",ttype:0},{input:\"O/\",tag:\"mo\",output:\"\\u2205\",tex:\"emptyset\",ttype:0},{input:\"oo\",tag:\"mo\",output:\"\\u221e\",tex:\"infty\",ttype:0},{input:\"aleph\",tag:\"mo\",output:\"\\u2135\",tex:null,ttype:0},{input:\"...\",tag:\"mo\",output:\"...\",tex:\"ldots\",ttype:0},{input:\":.\",tag:\"mo\",output:\"\\u2234\",tex:\"therefore\",ttype:0},{input:\":'\",tag:\"mo\",output:\"\\u2235\",tex:\"because\",ttype:0},{input:\"/_\",tag:\"mo\",output:\"\\u2220\",tex:\"angle\",ttype:0},{input:\"/_\\\\\",tag:\"mo\",output:\"\\u25b3\",tex:\"triangle\",ttype:0},{input:\"'\",tag:\"mo\",output:\"\\u2032\",tex:\"prime\",ttype:0},{input:\"tilde\",tag:\"mover\",output:\"~\",tex:null,ttype:1,acc:!0},{input:\"\\\\ \",tag:\"mo\",output:\"\\xa0\",tex:null,ttype:0},{input:\"frown\",tag:\"mo\",output:\"\\u2322\",tex:null,ttype:0},{input:\"quad\",tag:\"mo\",output:\"\\xa0\\xa0\",tex:null,ttype:0},{input:\"qquad\",tag:\"mo\",output:\"\\xa0\\xa0\\xa0\\xa0\",tex:null,ttype:0},{input:\"cdots\",tag:\"mo\",output:\"\\u22ef\",tex:null,ttype:0},{input:\"vdots\",tag:\"mo\",output:\"\\u22ee\",tex:null,ttype:0},{input:\"ddots\",tag:\"mo\",output:\"\\u22f1\",tex:null,ttype:0},{input:\"diamond\",tag:\"mo\",output:\"\\u22c4\",tex:null,ttype:0},{input:\"square\",tag:\"mo\",output:\"\\u25a1\",tex:null,ttype:0},{input:\"|__\",tag:\"mo\",output:\"\\u230a\",tex:\"lfloor\",ttype:0},{input:\"__|\",tag:\"mo\",output:\"\\u230b\",tex:\"rfloor\",ttype:0},{input:\"|~\",tag:\"mo\",output:\"\\u2308\",tex:\"lceiling\",ttype:0},{input:\"~|\",tag:\"mo\",output:\"\\u2309\",tex:\"rceiling\",ttype:0},{input:\"CC\",tag:\"mo\",output:\"\\u2102\",tex:null,ttype:0},{input:\"NN\",tag:\"mo\",output:\"\\u2115\",tex:null,ttype:0},{input:\"QQ\",tag:\"mo\",output:\"\\u211a\",tex:null,ttype:0},{input:\"RR\",tag:\"mo\",output:\"\\u211d\",tex:null,ttype:0},{input:\"ZZ\",tag:\"mo\",output:\"\\u2124\",tex:null,ttype:0},{input:\"f\",tag:\"mi\",output:\"f\",tex:null,ttype:1,func:!0},{input:\"g\",tag:\"mi\",output:\"g\",tex:null,ttype:1,func:!0},{input:\"lim\",tag:\"mo\",output:\"lim\",tex:null,ttype:7},{input:\"Lim\",tag:\"mo\",output:\"Lim\",tex:null,ttype:7},{input:\"sin\",tag:\"mo\",output:\"sin\",tex:null,ttype:1,func:!0},{input:\"cos\",tag:\"mo\",output:\"cos\",tex:null,ttype:1,func:!0},{input:\"tan\",tag:\"mo\",output:\"tan\",tex:null,ttype:1,func:!0},{input:\"sinh\",tag:\"mo\",output:\"sinh\",tex:null,ttype:1,func:!0},{input:\"cosh\",tag:\"mo\",output:\"cosh\",tex:null,ttype:1,func:!0},{input:\"tanh\",tag:\"mo\",output:\"tanh\",tex:null,ttype:1,func:!0},{input:\"cot\",tag:\"mo\",output:\"cot\",tex:null,ttype:1,func:!0},{input:\"sec\",tag:\"mo\",output:\"sec\",tex:null,ttype:1,func:!0},{input:\"csc\",tag:\"mo\",output:\"csc\",tex:null,ttype:1,func:!0},{input:\"arcsin\",tag:\"mo\",output:\"arcsin\",tex:null,ttype:1,func:!0},{input:\"arccos\",tag:\"mo\",output:\"arccos\",tex:null,ttype:1,func:!0},{input:\"arctan\",tag:\"mo\",output:\"arctan\",tex:null,ttype:1,func:!0},{input:\"coth\",tag:\"mo\",output:\"coth\",tex:null,ttype:1,func:!0},{input:\"sech\",tag:\"mo\",output:\"sech\",tex:null,ttype:1,func:!0},{input:\"csch\",tag:\"mo\",output:\"csch\",tex:null,ttype:1,func:!0},{input:\"exp\",tag:\"mo\",output:\"exp\",tex:null,ttype:1,func:!0},{input:\"abs\",tag:\"mo\",output:\"abs\",tex:null,ttype:1,rewriteleftright:[\"|\",\"|\"]},{input:\"norm\",tag:\"mo\",output:\"norm\",tex:null,ttype:1,rewriteleftright:[\"\\u2225\",\"\\u2225\"]},{input:\"floor\",tag:\"mo\",output:\"floor\",tex:null,ttype:1,rewriteleftright:[\"\\u230a\",\"\\u230b\"]},{input:\"ceil\",tag:\"mo\",output:\"ceil\",tex:null,ttype:1,rewriteleftright:[\"\\u2308\",\"\\u2309\"]},{input:\"log\",tag:\"mo\",output:\"log\",tex:null,ttype:1,func:!0},{input:\"ln\",tag:\"mo\",output:\"ln\",tex:null,ttype:1,func:!0},{input:\"det\",tag:\"mo\",output:\"det\",tex:null,ttype:1,func:!0},{input:\"dim\",tag:\"mo\",output:\"dim\",tex:null,ttype:0},{input:\"mod\",tag:\"mo\",output:\"mod\",tex:null,ttype:0},{input:\"gcd\",tag:\"mo\",output:\"gcd\",tex:null,ttype:1,func:!0},{input:\"lcm\",tag:\"mo\",output:\"lcm\",tex:null,ttype:1,func:!0},{input:\"lub\",tag:\"mo\",output:\"lub\",tex:null,ttype:0},{input:\"glb\",tag:\"mo\",output:\"glb\",tex:null,ttype:0},{input:\"min\",tag:\"mo\",output:\"min\",tex:null,ttype:7},{input:\"max\",tag:\"mo\",output:\"max\",tex:null,ttype:7},{input:\"uarr\",tag:\"mo\",output:\"\\u2191\",tex:\"uparrow\",ttype:0},{input:\"darr\",tag:\"mo\",output:\"\\u2193\",tex:\"downarrow\",ttype:0},{input:\"rarr\",tag:\"mo\",output:\"\\u2192\",tex:\"rightarrow\",ttype:0},{input:\"->\",tag:\"mo\",output:\"\\u2192\",tex:\"to\",ttype:0},{input:\">->\",tag:\"mo\",output:\"\\u21a3\",tex:\"rightarrowtail\",ttype:0},{input:\"->>\",tag:\"mo\",output:\"\\u21a0\",tex:\"twoheadrightarrow\",ttype:0},{input:\">->>\",tag:\"mo\",output:\"\\u2916\",tex:\"twoheadrightarrowtail\",ttype:0},{input:\"|->\",tag:\"mo\",output:\"\\u21a6\",tex:\"mapsto\",ttype:0},{input:\"larr\",tag:\"mo\",output:\"\\u2190\",tex:\"leftarrow\",ttype:0},{input:\"harr\",tag:\"mo\",output:\"\\u2194\",tex:\"leftrightarrow\",ttype:0},{input:\"rArr\",tag:\"mo\",output:\"\\u21d2\",tex:\"Rightarrow\",ttype:0},{input:\"lArr\",tag:\"mo\",output:\"\\u21d0\",tex:\"Leftarrow\",ttype:0},{input:\"hArr\",tag:\"mo\",output:\"\\u21d4\",tex:\"Leftrightarrow\",ttype:0},{input:\"sqrt\",tag:\"msqrt\",output:\"sqrt\",tex:null,ttype:1},{input:\"root\",tag:\"mroot\",output:\"root\",tex:null,ttype:2},{input:\"frac\",tag:\"mfrac\",output:\"/\",tex:null,ttype:2},{input:\"/\",tag:\"mfrac\",output:\"/\",tex:null,ttype:3},{input:\"stackrel\",tag:\"mover\",output:\"stackrel\",tex:null,ttype:2},{input:\"overset\",tag:\"mover\",output:\"stackrel\",tex:null,ttype:2},{input:\"underset\",tag:\"munder\",output:\"stackrel\",tex:null,ttype:2},{input:\"_\",tag:\"msub\",output:\"_\",tex:null,ttype:3},{input:\"^\",tag:\"msup\",output:\"^\",tex:null,ttype:3},{input:\"hat\",tag:\"mover\",output:\"^\",tex:null,ttype:1,acc:!0},{input:\"bar\",tag:\"mover\",output:\"\\xaf\",tex:\"overline\",ttype:1,acc:!0},{input:\"vec\",tag:\"mover\",output:\"\\u2192\",tex:null,ttype:1,acc:!0},{input:\"dot\",tag:\"mover\",output:\".\",tex:null,ttype:1,acc:!0},{input:\"ddot\",tag:\"mover\",output:\"..\",tex:null,ttype:1,acc:!0},{input:\"ul\",tag:\"munder\",output:\"\\u0332\",tex:\"underline\",ttype:1,acc:!0},{input:\"ubrace\",tag:\"munder\",output:\"\\u23df\",tex:\"underbrace\",ttype:15,acc:!0},{input:\"obrace\",tag:\"mover\",output:\"\\u23de\",tex:\"overbrace\",ttype:15,acc:!0},{input:\"text\",tag:\"mtext\",output:\"text\",tex:null,ttype:10},{input:\"mbox\",tag:\"mtext\",output:\"mbox\",tex:null,ttype:10},{input:\"color\",tag:\"mstyle\",ttype:2},{input:\"cancel\",tag:\"menclose\",output:\"cancel\",tex:null,ttype:1},x,{input:\"bb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"bold\",output:\"bb\",tex:null,ttype:1},{input:\"mathbf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"bold\",output:\"mathbf\",tex:null,ttype:1},{input:\"sf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"sans-serif\",output:\"sf\",tex:null,ttype:1},{input:\"mathsf\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"sans-serif\",output:\"mathsf\",tex:null,ttype:1},{input:\"bbb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"double-struck\",output:\"bbb\",tex:null,ttype:1,codes:E},{input:\"mathbb\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"double-struck\",output:\"mathbb\",tex:null,ttype:1,codes:E},{input:\"cc\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"script\",output:\"cc\",tex:null,ttype:1,codes:f},{input:\"mathcal\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"script\",output:\"mathcal\",tex:null,ttype:1,codes:f},{input:\"tt\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"monospace\",output:\"tt\",tex:null,ttype:1},{input:\"mathtt\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"monospace\",output:\"mathtt\",tex:null,ttype:1},{input:\"fr\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"fraktur\",output:\"fr\",tex:null,ttype:1,codes:g},{input:\"mathfrak\",tag:\"mstyle\",atname:\"mathvariant\",atval:\"fraktur\",output:\"mathfrak\",tex:null,ttype:1,codes:g}];function C(t,e){return t.input>e.input?1:-1}var b,S,I,N=[];function A(){var t,e=T.length;for(t=0;t<e;t++)T[t].tex&&T.push({input:T[t].tex,tag:T[t].tag,output:T[t].output,ttype:T[t].ttype,acc:T[t].acc||!1});v()}function v(){var t;for(T.sort(C),t=0;t<T.length;t++)N[t]=T[t].input}function R(t,e){var i;i=\"\\\\\"==t.charAt(e)&&\"\\\\\"!=t.charAt(e+1)&&\" \"!=t.charAt(e+1)?t.slice(e+1):t.slice(e);for(var n=0;n<i.length&&i.charCodeAt(n)<=32;n+=1);return i.slice(n)}function O(t,e,i){if(0==i){var n,a;for(i=-1,n=t.length;i+1<n;)t[a=i+n>>1]<e?i=a:n=a;return n}for(var s=i;s<t.length&&t[s]<e;s++);return s}function L(t){for(var e,i,n,a=0,s=\"\",r=!0,o=1;o<=t.length&&r;o++)i=t.slice(0,o),(a=O(N,i,a))<N.length&&t.slice(0,N[a].length)==N[a]&&(e=a,o=(s=N[a]).length),r=a<N.length&&t.slice(0,N[a].length)>=N[a];if(S=I,\"\"!=s)return I=T[e].ttype,T[e];I=0,a=1,i=t.slice(0,1);for(var l=!0;\"0\"<=i&&i<=\"9\"&&a<=t.length;)i=t.slice(a,a+1),a++;if(i==u&&\"0\"<=(i=t.slice(a,a+1))&&i<=\"9\")for(l=!1,a++;\"0\"<=i&&i<=\"9\"&&a<=t.length;)i=t.slice(a,a+1),a++;return l&&a>1||a>2?(i=t.slice(0,a-1),n=\"mn\"):(a=2,n=(\"A\">(i=t.slice(0,1))||i>\"Z\")&&(\"a\">i||i>\"z\")?\"mo\":\"mi\"),\"-\"==i&&3==S?(I=3,{input:i,tag:n,output:i,ttype:1,func:!0}):{input:i,tag:n,output:i,ttype:0}}function M(t){var e;t.hasChildNodes()&&(!t.firstChild.hasChildNodes()||\"mrow\"!=t.nodeName&&\"M:MROW\"!=t.nodeName||\"(\"!=(e=t.firstChild.firstChild.nodeValue)&&\"[\"!=e&&\"{\"!=e||t.removeChild(t.firstChild),!t.lastChild.hasChildNodes()||\"mrow\"!=t.nodeName&&\"M:MROW\"!=t.nodeName||\")\"!=(e=t.lastChild.firstChild.nodeValue)&&\"]\"!=e&&\"}\"!=e||t.removeChild(t.lastChild))}function D(t){var e,i,a,s,r,o=n.createDocumentFragment();if(null==(e=L(t=R(t,0)))||5==e.ttype&&b>0)return[null,t];switch(e.ttype==y&&(e=L(t=e.output+R(t,e.input.length))),e.ttype){case 7:case 0:return t=R(t,e.input.length),[m(e.tag,n.createTextNode(e.output)),t];case 4:return b++,a=k(t=R(t,e.input.length),!0),b--,\"boolean\"==typeof e.invisible&&e.invisible?i=m(\"mrow\",a[0]):(i=m(\"mo\",n.createTextNode(e.output)),(i=m(\"mrow\",i)).appendChild(a[0])),[i,a[1]];case 10:return e!=x&&(t=R(t,e.input.length)),-1==(s=\"{\"==t.charAt(0)?t.indexOf(\"}\"):\"(\"==t.charAt(0)?t.indexOf(\")\"):\"[\"==t.charAt(0)?t.indexOf(\"]\"):e==x?t.slice(1).indexOf('\"')+1:0)&&(s=t.length),\" \"==(r=t.slice(1,s)).charAt(0)&&((i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i)),o.appendChild(m(e.tag,n.createTextNode(r))),\" \"==r.charAt(r.length-1)&&((i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i)),t=R(t,s+1),[m(\"mrow\",o),t];case 15:case 1:if(null==(a=D(t=R(t,e.input.length)))[0])return[m(e.tag,n.createTextNode(e.output)),t];if(\"boolean\"==typeof e.func&&e.func)return\"^\"==(r=t.charAt(0))||\"_\"==r||\"/\"==r||\"|\"==r||\",\"==r||1==e.input.length&&e.input.match(/\\w/)&&\"(\"!=r?[m(e.tag,n.createTextNode(e.output)),t]:((i=m(\"mrow\",m(e.tag,n.createTextNode(e.output)))).appendChild(a[0]),[i,a[1]]);if(M(a[0]),\"sqrt\"==e.input)return[m(e.tag,a[0]),a[1]];if(void 0!==e.rewriteleftright)return(i=m(\"mrow\",m(\"mo\",n.createTextNode(e.rewriteleftright[0])))).appendChild(a[0]),i.appendChild(m(\"mo\",n.createTextNode(e.rewriteleftright[1]))),[i,a[1]];if(\"cancel\"==e.input)return(i=m(e.tag,a[0])).setAttribute(\"notation\",\"updiagonalstrike\"),[i,a[1]];if(\"boolean\"==typeof e.acc&&e.acc)return(i=m(e.tag,a[0])).appendChild(m(\"mo\",n.createTextNode(e.output))),[i,a[1]];if(!h&&void 0!==e.codes)for(s=0;s<a[0].childNodes.length;s++)if(\"mi\"==a[0].childNodes[s].nodeName||\"mi\"==a[0].nodeName){r=\"mi\"==a[0].nodeName?a[0].firstChild.nodeValue:a[0].childNodes[s].firstChild.nodeValue;for(var l=[],u=0;u<r.length;u++)r.charCodeAt(u)>64&&r.charCodeAt(u)<91?l+=e.codes[r.charCodeAt(u)-65]:r.charCodeAt(u)>96&&r.charCodeAt(u)<123?l+=e.codes[r.charCodeAt(u)-71]:l+=r.charAt(u);\"mi\"==a[0].nodeName?a[0]=m(\"mo\").appendChild(n.createTextNode(l)):a[0].replaceChild(m(\"mo\").appendChild(n.createTextNode(l)),a[0].childNodes[s])}return(i=m(e.tag,a[0])).setAttribute(e.atname,e.atval),[i,a[1]];case 2:if(null==(a=D(t=R(t,e.input.length)))[0])return[m(\"mo\",n.createTextNode(e.input)),t];M(a[0]);var p=D(a[1]);return null==p[0]?[m(\"mo\",n.createTextNode(e.input)),t]:(M(p[0]),\"color\"==e.input?(\"{\"==t.charAt(0)?s=t.indexOf(\"}\"):\"(\"==t.charAt(0)?s=t.indexOf(\")\"):\"[\"==t.charAt(0)&&(s=t.indexOf(\"]\")),r=t.slice(1,s),(i=m(e.tag,p[0])).setAttribute(\"mathcolor\",r),[i,p[1]]):(\"root\"!=e.input&&\"stackrel\"!=e.output||o.appendChild(p[0]),o.appendChild(a[0]),\"frac\"==e.input&&o.appendChild(p[0]),[m(e.tag,o),p[1]]));case 3:return t=R(t,e.input.length),[m(\"mo\",n.createTextNode(e.output)),t];case 6:return t=R(t,e.input.length),(i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i),o.appendChild(m(e.tag,n.createTextNode(e.output))),(i=m(\"mspace\")).setAttribute(\"width\",\"1ex\"),o.appendChild(i),[m(\"mrow\",o),t];case 9:return b++,a=k(t=R(t,e.input.length),!1),b--,r=\"\",null!=a[0].lastChild&&(r=a[0].lastChild.firstChild.nodeValue),\"|\"==r?(i=m(\"mo\",n.createTextNode(e.output)),(i=m(\"mrow\",i)).appendChild(a[0]),[i,a[1]]):(i=m(\"mo\",n.createTextNode(\"\\u2223\")),[i=m(\"mrow\",i),t]);default:return t=R(t,e.input.length),[m(e.tag,n.createTextNode(e.output)),t]}}function P(t){var e,i,a,s,r,o;if(i=L(t=R(t,0)),s=(r=D(t))[0],3==(e=L(t=r[1])).ttype&&\"/\"!=e.input){if(null==(r=D(t=R(t,e.input.length)))[0]?r[0]=m(\"mo\",n.createTextNode(\"\\u25a1\")):M(r[0]),t=r[1],o=7==i.ttype||15==i.ttype,\"_\"==e.input)if(\"^\"==(a=L(t)).input){var l=D(t=R(t,a.input.length));M(l[0]),t=l[1],(s=m(o?\"munderover\":\"msubsup\",s)).appendChild(r[0]),s.appendChild(l[0]),s=m(\"mrow\",s)}else(s=m(o?\"munder\":\"msub\",s)).appendChild(r[0]);else\"^\"==e.input&&o?(s=m(\"mover\",s)).appendChild(r[0]):(s=m(e.tag,s)).appendChild(r[0]);void 0!==i.func&&i.func&&3!=(a=L(t)).ttype&&5!=a.ttype&&(r=P(t),(s=m(\"mrow\",s)).appendChild(r[0]),t=r[1])}return[s,t]}function k(t,e){var i,a,s,r,o=n.createDocumentFragment();do{a=(s=P(t=R(t,0)))[0],3==(i=L(t=s[1])).ttype&&\"/\"==i.input?(null==(s=P(t=R(t,i.input.length)))[0]?s[0]=m(\"mo\",n.createTextNode(\"\\u25a1\")):M(s[0]),t=s[1],M(a),(a=m(i.tag,a)).appendChild(s[0]),o.appendChild(a),i=L(t)):null!=a&&o.appendChild(a)}while((5!=i.ttype&&(9!=i.ttype||e)||0==b)&&null!=i&&\"\"!=i.output);if(5==i.ttype||9==i.ttype){var l=o.childNodes.length;if(l>0&&\"mrow\"==o.childNodes[l-1].nodeName&&o.childNodes[l-1].lastChild&&o.childNodes[l-1].lastChild.firstChild){var u=o.childNodes[l-1].lastChild.firstChild.nodeValue;if(\")\"==u||\"]\"==u){var h=o.childNodes[l-1].firstChild.firstChild.nodeValue;if(\"(\"==h&&\")\"==u&&\"}\"!=i.output||\"[\"==h&&\"]\"==u){var p=[],c=!0,d=o.childNodes.length;for(r=0;c&&r<d;r+=2){if(p[r]=[],a=o.childNodes[r],c&&(c=\"mrow\"==a.nodeName&&(r==d-1||\"mo\"==a.nextSibling.nodeName&&\",\"==a.nextSibling.firstChild.nodeValue)&&a.firstChild.firstChild.nodeValue==h&&a.lastChild.firstChild.nodeValue==u),c)for(var f=0;f<a.childNodes.length;f++)\",\"==a.childNodes[f].firstChild.nodeValue&&(p[r][p[r].length]=f);c&&r>1&&(c=p[r].length==p[r-2].length)}if(c=c&&(p.length>1||p[0].length>0)){var g,E,y,x,T=n.createDocumentFragment();for(r=0;r<d;r+=2){for(g=n.createDocumentFragment(),E=n.createDocumentFragment(),y=(a=o.firstChild).childNodes.length,x=0,a.removeChild(a.firstChild),f=1;f<y-1;f++)void 0!==p[r][x]&&f==p[r][x]?(a.removeChild(a.firstChild),g.appendChild(m(\"mtd\",E)),x++):E.appendChild(a.firstChild);g.appendChild(m(\"mtd\",E)),o.childNodes.length>2&&(o.removeChild(o.firstChild),o.removeChild(o.firstChild)),T.appendChild(m(\"mtr\",g))}a=m(\"mtable\",T),\"boolean\"==typeof i.invisible&&i.invisible&&a.setAttribute(\"columnalign\",\"left\"),o.replaceChild(a,o.firstChild)}}}}t=R(t,i.input.length),\"boolean\"==typeof i.invisible&&i.invisible||(a=m(\"mo\",n.createTextNode(i.output)),o.appendChild(a))}return[o,t]}function H(t,e){var i;return b=0,i=m(\"mstyle\",k((t=(t=(t=(t=t.replace(/&nbsp;/g,\"\")).replace(/&gt;/g,\">\")).replace(/&lt;/g,\"<\")).replace(/(Sin|Cos|Tan|Arcsin|Arccos|Arctan|Sinh|Cosh|Tanh|Cot|Sec|Csc|Log|Ln|Abs)/g,(function(t){return t.toLowerCase()}))).replace(/^\\s+/g,\"\"),!1)[0]),\"\"!=s&&i.setAttribute(\"mathcolor\",s),\"\"!=r&&i.setAttribute(\"fontfamily\",r),o&&i.setAttribute(\"displaystyle\",\"true\"),i=m(\"math\",i),l&&i.setAttribute(\"title\",t.replace(/\\s+/g,\" \")),i}l=!1,r=\"\",s=\"\",function(){for(var t=0,e=T.length;t<e;t++)T[t].codes&&delete T[t].codes,T[t].func&&(T[t].tag=\"mi\")}(),t.Augment({AM:{Init:function(){if(o=t.config.displaystyle,u=t.config.decimal||t.config.decimalsign,!t.config.fixphi)for(var n=0,a=T.length;n<a;n++)\"phi\"===T[n].input&&(T[n].output=\"\\u03c6\"),\"varphi\"===T[n].input&&(T[n].output=\"\\u03d5\",n=a);var s;s=(e=MathJax.ElementJax.mml).mbase.prototype.Init,e.mbase.Augment({firstChild:null,lastChild:null,nodeValue:null,nextSibling:null,Init:function(){var t=s.apply(this,arguments)||this;return t.childNodes=t.data,t.nodeName=t.type,t},appendChild:function(t){t.parent&&t.parent.removeChild(t);var e=arguments;t.isa(i)&&(e=t.childNodes,t.data=t.childNodes=[],t.firstChild=t.lastChild=null);for(var n=0,a=e.length;n<a;n++)t=e[n],this.lastChild&&(this.lastChild.nextSibling=t),this.firstChild||(this.firstChild=t),this.Append(t),this.lastChild=t;return t},removeChild:function(t){for(var e=0,i=this.childNodes.length;e<i&&this.childNodes[e]!==t;e++);if(e!==i)return this.childNodes.splice(e,1),t===this.firstChild&&(this.firstChild=t.nextSibling),t===this.lastChild&&(this.childNodes.length?this.lastChild=this.childNodes[this.childNodes.length-1]:this.lastChild=null),e&&(this.childNodes[e-1].nextSibling=t.nextSibling),t.nextSibling=t.parent=null,t},replaceChild:function(t,e){for(var i=0,n=this.childNodes.length;i<n&&this.childNodes[i]!==e;i++);return i?this.childNodes[i-1].nextSibling=t:this.firstChild=t,i>=n-1&&(this.lastChild=t),this.SetData(i,t),t.nextSibling=e.nextSibling,e.nextSibling=e.parent=null,e},hasChildNodes:function(t){return this.childNodes.length>0},setAttribute:function(t,e){this[t]=e}}),A()},Augment:function(t){for(var e in t)if(t.hasOwnProperty(e)){switch(e){case\"displaystyle\":o=t[e];break;case\"decimal\":decimal=t[e];break;case\"parseMath\":H=t[e];break;case\"parseExpr\":k=t[e];break;case\"parseIexpr\":P=t[e];break;case\"parseSexpr\":D=t[e];break;case\"removeBrackets\":M=t[e];break;case\"getSymbol\":L=t[e];break;case\"position\":O=t[e];break;case\"removeCharsAndBlanks\":R=t[e];break;case\"createMmlNode\":m=t[e];break;case\"createElementMathML\":d=t[e];break;case\"createElementXHTML\":p=t[e];break;case\"initSymbols\":A=t[e];break;case\"refreshSymbols\":v=t[e];break;case\"compareNames\":C=t[e]}this[e]=t[e]}},parseMath:H,parseExpr:k,parseIexpr:P,parseSexr:D,removeBrackets:M,getSymbol:L,position:O,removeCharsAndBlanks:R,createMmlNode:m,createElementMathML:d,createElementXHTML:p,initSymbols:A,refreshSymbols:v,compareNames:C,createDocumentFragment:i,document:n,define:function(t,e){T.push({input:t,tag:\"mo\",output:e,tex:null,ttype:y}),v()},newcommand:function(t,e){T.push({input:t,tag:\"mo\",output:e,tex:null,ttype:y}),v()},newsymbol:function(t){T.push(t),v()},symbols:T,names:N,TOKEN:{CONST:0,UNARY:1,BINARY:2,INFIX:3,LEFTBRACKET:4,RIGHTBRACKET:5,SPACE:6,UNDEROVER:7,DEFINITION:y,LEFTRIGHT:9,TEXT:10,UNARYUNDEROVER:15}}})}(MathJax.InputJax.AsciiMath),(i=MathJax.InputJax.AsciiMath).Augment({sourceMenuTitle:[\"AsciiMathInput\",\"AsciiMath Input\"],annotationEncoding:\"text/x-asciimath\",prefilterHooks:MathJax.Callback.Hooks(!0),postfilterHooks:MathJax.Callback.Hooks(!0),Translate:function(t){var e,i=MathJax.HTML.getScript(t),a={math:i,script:t},s=this.prefilterHooks.Execute(a);if(s)return s;i=a.math;try{e=this.AM.parseMath(i)}catch(t){if(!t.asciimathError)throw t;e=this.formatError(t,i)}return a.math=n(e),this.postfilterHooks.Execute(a),this.postfilterHooks.Execute(a)||a.math},formatError:function(t,e,i){var a=t.message.replace(/\\n.*/,\"\");return MathJax.Hub.signal.Post([\"AsciiMath Jax - parse error\",a,e,i]),n.Error(a)},Error:function(t){throw MathJax.Hub.Insert(Error(t),{asciimathError:!0})},Startup:function(){n=MathJax.ElementJax.mml,this.AM.Init()}}),i.loadComplete(\"jax.js\")},function(t,e){var i,n,a;i=MathJax.ElementJax.mml,n=[\"texWithDelims\",\"movesupsub\",\"subsupOK\",\"primes\",\"movablelimits\",\"scriptlevel\",\"open\",\"close\",\"isError\",\"multiline\",\"variantForm\",\"autoOP\",\"fnOP\"],a={texWithDelims:\"withDelims\"},i.mbase.Augment({toMmlNode:function(t){var e=this.type;\"texatom\"===e&&(e=\"TeXAtom\");var i=this.nodeMake(t,e);return\"texClass\"in this&&(i.texClass=this.texClass),i},nodeMake:function(t,e){for(var i=t.MML[\"TeXmathchoice\"===e?\"mathchoice\":e](),n=this.data[0]&&this.data[0].inferred&&this.inferRow?this.data[0].data:this.data,a=0,s=n.length;a<s;a++){var r=n[a];r&&i.appendChild(r.toMmlNode(t))}return this.nodeAddAttributes(i),this.nodeAddProperties(i),i},nodeAddAttributes:function(t){var e=\"mstyle\"===this.type?i.math.prototype.defaults:this.defaults,n=this.attrNames||i.copyAttributeNames,a=i.skipAttributes,s=i.copyAttributes;if(!this.attrNames){for(var r in e)a[r]||s[r]||!e.hasOwnProperty(r)||null!=this[r]&&this[r]!==e[r]&&this.Get(r,null,1)!==this[r]&&t.attributes.set(r,this[r]);this.class&&t.attributes.set(\"class\",this.class)}for(var o=0,l=n.length;o<l;o++)(1!==s[n[o]]||e.hasOwnProperty(n[o]))&&(value=(this.attr||{})[n[o]],null==value&&(value=this[n[o]]),\"true\"!==value&&\"false\"!==value||(value=\"true\"===value),null!=value&&t.attributes.set(n[o],value))},nodeAddProperties:function(t){for(var e=0,s=n.length;e<s;e++){var r=n[e];null==this[r]||null!=this.defaults[r]&&this.defaults[r]!==i.AUTO||t.setProperty(a[r]||r,this[r])}}}),i.chars.Augment({toMmlNode:function(t){return t.MML.text().setText(this.data.join(\"\"))}}),i.entity.Augment({toMmlNode:function(t){return t.MML.text().setText(this.toString())}}),i.msubsup.Augment({toMmlNode:function(t){var e=null==this.data[this.sub]?\"msup\":null==this.data[this.sup]?\"msub\":\"msubsup\";return this.nodeMake(t,e)}}),i.munderover.Augment({toMmlNode:function(t){var e=null==this.data[this.under]?\"mover\":null==this.data[this.over]?\"munder\":\"munderover\";return this.nodeMake(t,e)}}),i.xml.Augment({toMmlNode:function(t){return t.MML.xml(this.data)}})},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlFactory=MathJax._.core.MmlTree.MmlFactory.MmlFactory},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,i){\"use strict\";i.r(e);var n=i(2),a=i(0),s=i(1);Object(n.combineWithMathJax)({_:{input:{asciimath_ts:a,asciimath:{FindAsciiMath:s}}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"asciimath\",a.AsciiMath),MathJax.startup.useInput(\"asciimath\"))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/mml/entities.js",
    "content": "!function(r){var e={};function t(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return r[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=r,t.c=e,t.d=function(r,e,o){t.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:o})},t.r=function(r){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(r,\"__esModule\",{value:!0})},t.t=function(r,e){if(1&e&&(r=t(r)),8&e)return r;if(4&e&&\"object\"==typeof r&&r&&r.__esModule)return r;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:r}),2&e&&\"string\"!=typeof r)for(var a in r)t.d(o,a,function(e){return r[e]}.bind(null,a));return o},t.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(e,\"a\",e),e},t.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},t.p=\"\",t(t.s=1)}([function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(r,e,t){\"use strict\";t.r(e);t(2)},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(3),t(4),t(5),t(6),t(7),t(8),t(9),t(10),t(11),t(12),t(13),t(14),t(15),t(16),t(17),t(18),t(19),t(20),t(21),t(22),t(23),t(24),t(25),t(26),t(27),t(28),t(29),t(30),t(31)},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({AElig:\"\\xc6\",AMP:\"&\",Aacute:\"\\xc1\",Abreve:\"\\u0102\",Acirc:\"\\xc2\",Acy:\"\\u0410\",Agrave:\"\\xc0\",Alpha:\"\\u0391\",Amacr:\"\\u0100\",And:\"\\u2a53\",Aogon:\"\\u0104\",Aring:\"\\xc5\",Assign:\"\\u2254\",Atilde:\"\\xc3\",Auml:\"\\xc4\",aacute:\"\\xe1\",abreve:\"\\u0103\",ac:\"\\u223e\",acE:\"\\u223e\\u0333\",acd:\"\\u223f\",acirc:\"\\xe2\",acy:\"\\u0430\",aelig:\"\\xe6\",af:\"\\u2061\",agrave:\"\\xe0\",alefsym:\"\\u2135\",amacr:\"\\u0101\",andand:\"\\u2a55\",andd:\"\\u2a5c\",andslope:\"\\u2a58\",andv:\"\\u2a5a\",ange:\"\\u29a4\",angle:\"\\u2220\",angmsdaa:\"\\u29a8\",angmsdab:\"\\u29a9\",angmsdac:\"\\u29aa\",angmsdad:\"\\u29ab\",angmsdae:\"\\u29ac\",angmsdaf:\"\\u29ad\",angmsdag:\"\\u29ae\",angmsdah:\"\\u29af\",angrt:\"\\u221f\",angrtvb:\"\\u22be\",angrtvbd:\"\\u299d\",angst:\"\\xc5\",angzarr:\"\\u237c\",aogon:\"\\u0105\",ap:\"\\u2248\",apE:\"\\u2a70\",apacir:\"\\u2a6f\",apid:\"\\u224b\",apos:\"'\",approx:\"\\u2248\",approxeq:\"\\u224a\",aring:\"\\xe5\",ast:\"*\",asymp:\"\\u2248\",asympeq:\"\\u224d\",atilde:\"\\xe3\",auml:\"\\xe4\",awconint:\"\\u2233\",awint:\"\\u2a11\"},\"a\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Barv:\"\\u2ae7\",Barwed:\"\\u2306\",Bcy:\"\\u0411\",Bernoullis:\"\\u212c\",Beta:\"\\u0392\",Bumpeq:\"\\u224e\",bNot:\"\\u2aed\",backcong:\"\\u224c\",backepsilon:\"\\u03f6\",barvee:\"\\u22bd\",barwed:\"\\u2305\",barwedge:\"\\u2305\",bbrk:\"\\u23b5\",bbrktbrk:\"\\u23b6\",bcong:\"\\u224c\",bcy:\"\\u0431\",bdquo:\"\\u201e\",becaus:\"\\u2235\",because:\"\\u2235\",bemptyv:\"\\u29b0\",bepsi:\"\\u03f6\",bernou:\"\\u212c\",bigcap:\"\\u22c2\",bigcup:\"\\u22c3\",bigvee:\"\\u22c1\",bigwedge:\"\\u22c0\",bkarow:\"\\u290d\",blacksquare:\"\\u25aa\",blacktriangleright:\"\\u25b8\",blank:\"\\u2423\",blk12:\"\\u2592\",blk14:\"\\u2591\",blk34:\"\\u2593\",block:\"\\u2588\",bne:\"=\\u20e5\",bnequiv:\"\\u2261\\u20e5\",bnot:\"\\u2310\",bot:\"\\u22a5\",bottom:\"\\u22a5\",boxDL:\"\\u2557\",boxDR:\"\\u2554\",boxDl:\"\\u2556\",boxDr:\"\\u2553\",boxH:\"\\u2550\",boxHD:\"\\u2566\",boxHU:\"\\u2569\",boxHd:\"\\u2564\",boxHu:\"\\u2567\",boxUL:\"\\u255d\",boxUR:\"\\u255a\",boxUl:\"\\u255c\",boxUr:\"\\u2559\",boxV:\"\\u2551\",boxVH:\"\\u256c\",boxVL:\"\\u2563\",boxVR:\"\\u2560\",boxVh:\"\\u256b\",boxVl:\"\\u2562\",boxVr:\"\\u255f\",boxbox:\"\\u29c9\",boxdL:\"\\u2555\",boxdR:\"\\u2552\",boxh:\"\\u2500\",boxhD:\"\\u2565\",boxhU:\"\\u2568\",boxhd:\"\\u252c\",boxhu:\"\\u2534\",boxuL:\"\\u255b\",boxuR:\"\\u2558\",boxv:\"\\u2502\",boxvH:\"\\u256a\",boxvL:\"\\u2561\",boxvR:\"\\u255e\",boxvh:\"\\u253c\",boxvl:\"\\u2524\",boxvr:\"\\u251c\",bprime:\"\\u2035\",breve:\"\\u02d8\",brvbar:\"\\xa6\",bsemi:\"\\u204f\",bsim:\"\\u223d\",bsime:\"\\u22cd\",bsolb:\"\\u29c5\",bsolhsub:\"\\u27c8\",bullet:\"\\u2022\",bump:\"\\u224e\",bumpE:\"\\u2aae\",bumpe:\"\\u224f\",bumpeq:\"\\u224f\"},\"b\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({CHcy:\"\\u0427\",COPY:\"\\xa9\",Cacute:\"\\u0106\",CapitalDifferentialD:\"\\u2145\",Cayleys:\"\\u212d\",Ccaron:\"\\u010c\",Ccedil:\"\\xc7\",Ccirc:\"\\u0108\",Cconint:\"\\u2230\",Cdot:\"\\u010a\",Cedilla:\"\\xb8\",Chi:\"\\u03a7\",ClockwiseContourIntegral:\"\\u2232\",CloseCurlyDoubleQuote:\"\\u201d\",CloseCurlyQuote:\"\\u2019\",Colon:\"\\u2237\",Colone:\"\\u2a74\",Conint:\"\\u222f\",CounterClockwiseContourIntegral:\"\\u2233\",cacute:\"\\u0107\",capand:\"\\u2a44\",capbrcup:\"\\u2a49\",capcap:\"\\u2a4b\",capcup:\"\\u2a47\",capdot:\"\\u2a40\",caps:\"\\u2229\\ufe00\",caret:\"\\u2041\",caron:\"\\u02c7\",ccaps:\"\\u2a4d\",ccaron:\"\\u010d\",ccedil:\"\\xe7\",ccirc:\"\\u0109\",ccups:\"\\u2a4c\",ccupssm:\"\\u2a50\",cdot:\"\\u010b\",cedil:\"\\xb8\",cemptyv:\"\\u29b2\",cent:\"\\xa2\",centerdot:\"\\xb7\",chcy:\"\\u0447\",checkmark:\"\\u2713\",cir:\"\\u25cb\",cirE:\"\\u29c3\",cire:\"\\u2257\",cirfnint:\"\\u2a10\",cirmid:\"\\u2aef\",cirscir:\"\\u29c2\",clubsuit:\"\\u2663\",colone:\"\\u2254\",coloneq:\"\\u2254\",comma:\",\",commat:\"@\",compfn:\"\\u2218\",complement:\"\\u2201\",complexes:\"\\u2102\",cong:\"\\u2245\",congdot:\"\\u2a6d\",conint:\"\\u222e\",coprod:\"\\u2210\",copy:\"\\xa9\",copysr:\"\\u2117\",crarr:\"\\u21b5\",cross:\"\\u2717\",csub:\"\\u2acf\",csube:\"\\u2ad1\",csup:\"\\u2ad0\",csupe:\"\\u2ad2\",cudarrl:\"\\u2938\",cudarrr:\"\\u2935\",cularrp:\"\\u293d\",cupbrcap:\"\\u2a48\",cupcap:\"\\u2a46\",cupcup:\"\\u2a4a\",cupdot:\"\\u228d\",cupor:\"\\u2a45\",cups:\"\\u222a\\ufe00\",curarrm:\"\\u293c\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",curren:\"\\xa4\",curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",cuvee:\"\\u22ce\",cuwed:\"\\u22cf\",cwconint:\"\\u2232\",cwint:\"\\u2231\",cylcty:\"\\u232d\"},\"c\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({DD:\"\\u2145\",DDotrahd:\"\\u2911\",DJcy:\"\\u0402\",DScy:\"\\u0405\",DZcy:\"\\u040f\",Darr:\"\\u21a1\",Dashv:\"\\u2ae4\",Dcaron:\"\\u010e\",Dcy:\"\\u0414\",DiacriticalAcute:\"\\xb4\",DiacriticalDot:\"\\u02d9\",DiacriticalDoubleAcute:\"\\u02dd\",DiacriticalGrave:\"`\",DiacriticalTilde:\"\\u02dc\",Dot:\"\\xa8\",DotDot:\"\\u20dc\",DoubleContourIntegral:\"\\u222f\",DoubleDownArrow:\"\\u21d3\",DoubleLeftArrow:\"\\u21d0\",DoubleLeftRightArrow:\"\\u21d4\",DoubleLeftTee:\"\\u2ae4\",DoubleLongLeftArrow:\"\\u27f8\",DoubleLongLeftRightArrow:\"\\u27fa\",DoubleLongRightArrow:\"\\u27f9\",DoubleRightArrow:\"\\u21d2\",DoubleUpArrow:\"\\u21d1\",DoubleUpDownArrow:\"\\u21d5\",DownArrowBar:\"\\u2913\",DownArrowUpArrow:\"\\u21f5\",DownBreve:\"\\u0311\",DownLeftRightVector:\"\\u2950\",DownLeftTeeVector:\"\\u295e\",DownLeftVectorBar:\"\\u2956\",DownRightTeeVector:\"\\u295f\",DownRightVectorBar:\"\\u2957\",DownTeeArrow:\"\\u21a7\",Dstrok:\"\\u0110\",dArr:\"\\u21d3\",dHar:\"\\u2965\",darr:\"\\u2193\",dash:\"\\u2010\",dashv:\"\\u22a3\",dbkarow:\"\\u290f\",dblac:\"\\u02dd\",dcaron:\"\\u010f\",dcy:\"\\u0434\",dd:\"\\u2146\",ddagger:\"\\u2021\",ddotseq:\"\\u2a77\",demptyv:\"\\u29b1\",dfisht:\"\\u297f\",dharl:\"\\u21c3\",dharr:\"\\u21c2\",diam:\"\\u22c4\",diamond:\"\\u22c4\",diamondsuit:\"\\u2666\",diams:\"\\u2666\",die:\"\\xa8\",disin:\"\\u22f2\",divide:\"\\xf7\",divonx:\"\\u22c7\",djcy:\"\\u0452\",dlcorn:\"\\u231e\",dlcrop:\"\\u230d\",dollar:\"$\",doteq:\"\\u2250\",dotminus:\"\\u2238\",doublebarwedge:\"\\u2306\",downarrow:\"\\u2193\",downdownarrows:\"\\u21ca\",downharpoonleft:\"\\u21c3\",downharpoonright:\"\\u21c2\",drbkarow:\"\\u2910\",drcorn:\"\\u231f\",drcrop:\"\\u230c\",dscy:\"\\u0455\",dsol:\"\\u29f6\",dstrok:\"\\u0111\",dtri:\"\\u25bf\",dtrif:\"\\u25be\",duarr:\"\\u21f5\",duhar:\"\\u296f\",dwangle:\"\\u29a6\",dzcy:\"\\u045f\",dzigrarr:\"\\u27ff\"},\"d\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({ENG:\"\\u014a\",ETH:\"\\xd0\",Eacute:\"\\xc9\",Ecaron:\"\\u011a\",Ecirc:\"\\xca\",Ecy:\"\\u042d\",Edot:\"\\u0116\",Egrave:\"\\xc8\",Emacr:\"\\u0112\",EmptySmallSquare:\"\\u25fb\",EmptyVerySmallSquare:\"\\u25ab\",Eogon:\"\\u0118\",Epsilon:\"\\u0395\",Equal:\"\\u2a75\",Esim:\"\\u2a73\",Eta:\"\\u0397\",Euml:\"\\xcb\",eDDot:\"\\u2a77\",eDot:\"\\u2251\",eacute:\"\\xe9\",easter:\"\\u2a6e\",ecaron:\"\\u011b\",ecirc:\"\\xea\",ecolon:\"\\u2255\",ecy:\"\\u044d\",edot:\"\\u0117\",ee:\"\\u2147\",eg:\"\\u2a9a\",egrave:\"\\xe8\",egsdot:\"\\u2a98\",el:\"\\u2a99\",elinters:\"\\u23e7\",elsdot:\"\\u2a97\",emacr:\"\\u0113\",emptyset:\"\\u2205\",emptyv:\"\\u2205\",emsp:\"\\u2003\",emsp13:\"\\u2004\",emsp14:\"\\u2005\",eng:\"\\u014b\",ensp:\"\\u2002\",eogon:\"\\u0119\",epar:\"\\u22d5\",eparsl:\"\\u29e3\",eplus:\"\\u2a71\",epsilon:\"\\u03b5\",eqcirc:\"\\u2256\",eqcolon:\"\\u2255\",eqsim:\"\\u2242\",eqslantgtr:\"\\u2a96\",eqslantless:\"\\u2a95\",equals:\"=\",equest:\"\\u225f\",equiv:\"\\u2261\",equivDD:\"\\u2a78\",eqvparsl:\"\\u29e5\",erarr:\"\\u2971\",esdot:\"\\u2250\",esim:\"\\u2242\",euml:\"\\xeb\",euro:\"\\u20ac\",excl:\"!\",exist:\"\\u2203\",expectation:\"\\u2130\",exponentiale:\"\\u2147\"},\"e\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Fcy:\"\\u0424\",FilledSmallSquare:\"\\u25fc\",Fouriertrf:\"\\u2131\",fallingdotseq:\"\\u2252\",fcy:\"\\u0444\",female:\"\\u2640\",ffilig:\"\\ufb03\",fflig:\"\\ufb00\",ffllig:\"\\ufb04\",filig:\"\\ufb01\",fjlig:\"fj\",fllig:\"\\ufb02\",fltns:\"\\u25b1\",fnof:\"\\u0192\",forall:\"\\u2200\",forkv:\"\\u2ad9\",fpartint:\"\\u2a0d\",frac12:\"\\xbd\",frac13:\"\\u2153\",frac14:\"\\xbc\",frac15:\"\\u2155\",frac16:\"\\u2159\",frac18:\"\\u215b\",frac23:\"\\u2154\",frac25:\"\\u2156\",frac34:\"\\xbe\",frac35:\"\\u2157\",frac38:\"\\u215c\",frac45:\"\\u2158\",frac56:\"\\u215a\",frac58:\"\\u215d\",frac78:\"\\u215e\",frasl:\"\\u2044\"},\"f\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({GJcy:\"\\u0403\",GT:\">\",Gammad:\"\\u03dc\",Gbreve:\"\\u011e\",Gcedil:\"\\u0122\",Gcirc:\"\\u011c\",Gcy:\"\\u0413\",Gdot:\"\\u0120\",GreaterGreater:\"\\u2aa2\",Gt:\"\\u226b\",gE:\"\\u2267\",gacute:\"\\u01f5\",gammad:\"\\u03dd\",gbreve:\"\\u011f\",gcirc:\"\\u011d\",gcy:\"\\u0433\",gdot:\"\\u0121\",ge:\"\\u2265\",gel:\"\\u22db\",geq:\"\\u2265\",geqq:\"\\u2267\",geqslant:\"\\u2a7e\",ges:\"\\u2a7e\",gescc:\"\\u2aa9\",gesdot:\"\\u2a80\",gesdoto:\"\\u2a82\",gesdotol:\"\\u2a84\",gesl:\"\\u22db\\ufe00\",gesles:\"\\u2a94\",gg:\"\\u226b\",ggg:\"\\u22d9\",gjcy:\"\\u0453\",gl:\"\\u2277\",glE:\"\\u2a92\",gla:\"\\u2aa5\",glj:\"\\u2aa4\",gnapprox:\"\\u2a8a\",gneq:\"\\u2a88\",gneqq:\"\\u2269\",grave:\"`\",gsim:\"\\u2273\",gsime:\"\\u2a8e\",gsiml:\"\\u2a90\",gtcc:\"\\u2aa7\",gtcir:\"\\u2a7a\",gtlPar:\"\\u2995\",gtquest:\"\\u2a7c\",gtrapprox:\"\\u2a86\",gtrarr:\"\\u2978\",gtrdot:\"\\u22d7\",gtreqless:\"\\u22db\",gtreqqless:\"\\u2a8c\",gtrless:\"\\u2277\",gtrsim:\"\\u2273\",gvertneqq:\"\\u2269\\ufe00\",gvnE:\"\\u2269\\ufe00\"},\"g\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({HARDcy:\"\\u042a\",Hcirc:\"\\u0124\",HilbertSpace:\"\\u210b\",HorizontalLine:\"\\u2500\",Hstrok:\"\\u0126\",hArr:\"\\u21d4\",hairsp:\"\\u200a\",half:\"\\xbd\",hamilt:\"\\u210b\",hardcy:\"\\u044a\",harr:\"\\u2194\",harrcir:\"\\u2948\",hcirc:\"\\u0125\",hearts:\"\\u2665\",heartsuit:\"\\u2665\",hercon:\"\\u22b9\",hksearow:\"\\u2925\",hkswarow:\"\\u2926\",hoarr:\"\\u21ff\",homtht:\"\\u223b\",horbar:\"\\u2015\",hslash:\"\\u210f\",hstrok:\"\\u0127\",hybull:\"\\u2043\",hyphen:\"\\u2010\"},\"h\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({IEcy:\"\\u0415\",IJlig:\"\\u0132\",IOcy:\"\\u0401\",Iacute:\"\\xcd\",Icirc:\"\\xce\",Icy:\"\\u0418\",Idot:\"\\u0130\",Igrave:\"\\xcc\",Imacr:\"\\u012a\",Implies:\"\\u21d2\",Int:\"\\u222c\",Iogon:\"\\u012e\",Iota:\"\\u0399\",Itilde:\"\\u0128\",Iukcy:\"\\u0406\",Iuml:\"\\xcf\",iacute:\"\\xed\",ic:\"\\u2063\",icirc:\"\\xee\",icy:\"\\u0438\",iecy:\"\\u0435\",iexcl:\"\\xa1\",iff:\"\\u21d4\",igrave:\"\\xec\",ii:\"\\u2148\",iiiint:\"\\u2a0c\",iiint:\"\\u222d\",iinfin:\"\\u29dc\",iiota:\"\\u2129\",ijlig:\"\\u0133\",imacr:\"\\u012b\",image:\"\\u2111\",imagline:\"\\u2110\",imagpart:\"\\u2111\",imof:\"\\u22b7\",imped:\"\\u01b5\",in:\"\\u2208\",incare:\"\\u2105\",infintie:\"\\u29dd\",inodot:\"\\u0131\",int:\"\\u222b\",integers:\"\\u2124\",intercal:\"\\u22ba\",intlarhk:\"\\u2a17\",intprod:\"\\u2a3c\",iocy:\"\\u0451\",iogon:\"\\u012f\",iprod:\"\\u2a3c\",iquest:\"\\xbf\",isin:\"\\u2208\",isinE:\"\\u22f9\",isindot:\"\\u22f5\",isins:\"\\u22f4\",isinsv:\"\\u22f3\",isinv:\"\\u2208\",it:\"\\u2062\",itilde:\"\\u0129\",iukcy:\"\\u0456\",iuml:\"\\xef\"},\"i\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Jcirc:\"\\u0134\",Jcy:\"\\u0419\",Jsercy:\"\\u0408\",Jukcy:\"\\u0404\",jcirc:\"\\u0135\",jcy:\"\\u0439\",jsercy:\"\\u0458\",jukcy:\"\\u0454\"},\"j\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({KHcy:\"\\u0425\",KJcy:\"\\u040c\",Kappa:\"\\u039a\",Kcedil:\"\\u0136\",Kcy:\"\\u041a\",kcedil:\"\\u0137\",kcy:\"\\u043a\",kgreen:\"\\u0138\",khcy:\"\\u0445\",kjcy:\"\\u045c\"},\"k\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({LJcy:\"\\u0409\",LT:\"<\",Lacute:\"\\u0139\",Lang:\"\\u27ea\",Laplacetrf:\"\\u2112\",Lcaron:\"\\u013d\",Lcedil:\"\\u013b\",Lcy:\"\\u041b\",LeftArrowBar:\"\\u21e4\",LeftDoubleBracket:\"\\u27e6\",LeftDownTeeVector:\"\\u2961\",LeftDownVectorBar:\"\\u2959\",LeftRightVector:\"\\u294e\",LeftTeeArrow:\"\\u21a4\",LeftTeeVector:\"\\u295a\",LeftTriangleBar:\"\\u29cf\",LeftUpDownVector:\"\\u2951\",LeftUpTeeVector:\"\\u2960\",LeftUpVectorBar:\"\\u2958\",LeftVectorBar:\"\\u2952\",LessLess:\"\\u2aa1\",Lmidot:\"\\u013f\",LowerLeftArrow:\"\\u2199\",LowerRightArrow:\"\\u2198\",Lstrok:\"\\u0141\",Lt:\"\\u226a\",lAarr:\"\\u21da\",lArr:\"\\u21d0\",lAtail:\"\\u291b\",lBarr:\"\\u290e\",lE:\"\\u2266\",lHar:\"\\u2962\",lacute:\"\\u013a\",laemptyv:\"\\u29b4\",lagran:\"\\u2112\",lang:\"\\u27e8\",langd:\"\\u2991\",langle:\"\\u27e8\",laquo:\"\\xab\",larr:\"\\u2190\",larrb:\"\\u21e4\",larrbfs:\"\\u291f\",larrfs:\"\\u291d\",larrhk:\"\\u21a9\",larrpl:\"\\u2939\",larrsim:\"\\u2973\",lat:\"\\u2aab\",latail:\"\\u2919\",late:\"\\u2aad\",lates:\"\\u2aad\\ufe00\",lbarr:\"\\u290c\",lbbrk:\"\\u2772\",lbrke:\"\\u298b\",lbrksld:\"\\u298f\",lbrkslu:\"\\u298d\",lcaron:\"\\u013e\",lcedil:\"\\u013c\",lceil:\"\\u2308\",lcub:\"{\",lcy:\"\\u043b\",ldca:\"\\u2936\",ldquo:\"\\u201c\",ldquor:\"\\u201e\",ldrdhar:\"\\u2967\",ldrushar:\"\\u294b\",ldsh:\"\\u21b2\",leftarrow:\"\\u2190\",leftarrowtail:\"\\u21a2\",leftharpoondown:\"\\u21bd\",leftharpoonup:\"\\u21bc\",leftrightarrow:\"\\u2194\",leftrightarrows:\"\\u21c6\",leftrightharpoons:\"\\u21cb\",leftrightsquigarrow:\"\\u21ad\",leg:\"\\u22da\",leq:\"\\u2264\",leqq:\"\\u2266\",leqslant:\"\\u2a7d\",les:\"\\u2a7d\",lescc:\"\\u2aa8\",lesdot:\"\\u2a7f\",lesdoto:\"\\u2a81\",lesdotor:\"\\u2a83\",lesg:\"\\u22da\\ufe00\",lesges:\"\\u2a93\",lessapprox:\"\\u2a85\",lesseqgtr:\"\\u22da\",lesseqqgtr:\"\\u2a8b\",lessgtr:\"\\u2276\",lesssim:\"\\u2272\",lfisht:\"\\u297c\",lfloor:\"\\u230a\",lg:\"\\u2276\",lgE:\"\\u2a91\",lhard:\"\\u21bd\",lharu:\"\\u21bc\",lharul:\"\\u296a\",lhblk:\"\\u2584\",ljcy:\"\\u0459\",ll:\"\\u226a\",llarr:\"\\u21c7\",llcorner:\"\\u231e\",llhard:\"\\u296b\",lltri:\"\\u25fa\",lmidot:\"\\u0140\",lmoustache:\"\\u23b0\",lnapprox:\"\\u2a89\",lneq:\"\\u2a87\",lneqq:\"\\u2268\",loang:\"\\u27ec\",loarr:\"\\u21fd\",lobrk:\"\\u27e6\",longleftarrow:\"\\u27f5\",longleftrightarrow:\"\\u27f7\",longrightarrow:\"\\u27f6\",looparrowleft:\"\\u21ab\",lopar:\"\\u2985\",loplus:\"\\u2a2d\",lotimes:\"\\u2a34\",lowbar:\"_\",lozenge:\"\\u25ca\",lozf:\"\\u29eb\",lpar:\"(\",lparlt:\"\\u2993\",lrarr:\"\\u21c6\",lrcorner:\"\\u231f\",lrhar:\"\\u21cb\",lrhard:\"\\u296d\",lrm:\"\\u200e\",lrtri:\"\\u22bf\",lsaquo:\"\\u2039\",lsh:\"\\u21b0\",lsim:\"\\u2272\",lsime:\"\\u2a8d\",lsimg:\"\\u2a8f\",lsqb:\"[\",lsquo:\"\\u2018\",lsquor:\"\\u201a\",lstrok:\"\\u0142\",ltcc:\"\\u2aa6\",ltcir:\"\\u2a79\",ltdot:\"\\u22d6\",lthree:\"\\u22cb\",ltlarr:\"\\u2976\",ltquest:\"\\u2a7b\",ltrPar:\"\\u2996\",ltrie:\"\\u22b4\",ltrif:\"\\u25c2\",lurdshar:\"\\u294a\",luruhar:\"\\u2966\",lvertneqq:\"\\u2268\\ufe00\",lvnE:\"\\u2268\\ufe00\"},\"l\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Map:\"\\u2905\",Mcy:\"\\u041c\",MediumSpace:\"\\u205f\",Mellintrf:\"\\u2133\",Mu:\"\\u039c\",mDDot:\"\\u223a\",male:\"\\u2642\",maltese:\"\\u2720\",map:\"\\u21a6\",mapsto:\"\\u21a6\",mapstodown:\"\\u21a7\",mapstoleft:\"\\u21a4\",mapstoup:\"\\u21a5\",marker:\"\\u25ae\",mcomma:\"\\u2a29\",mcy:\"\\u043c\",mdash:\"\\u2014\",measuredangle:\"\\u2221\",micro:\"\\xb5\",mid:\"\\u2223\",midast:\"*\",midcir:\"\\u2af0\",middot:\"\\xb7\",minus:\"\\u2212\",minusb:\"\\u229f\",minusd:\"\\u2238\",minusdu:\"\\u2a2a\",mlcp:\"\\u2adb\",mldr:\"\\u2026\",mnplus:\"\\u2213\",models:\"\\u22a7\",mp:\"\\u2213\",mstpos:\"\\u223e\",mumap:\"\\u22b8\"},\"m\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({OElig:\"\\u0152\",Oacute:\"\\xd3\",Ocirc:\"\\xd4\",Ocy:\"\\u041e\",Odblac:\"\\u0150\",Ograve:\"\\xd2\",Omacr:\"\\u014c\",Omicron:\"\\u039f\",OpenCurlyDoubleQuote:\"\\u201c\",OpenCurlyQuote:\"\\u2018\",Or:\"\\u2a54\",Oslash:\"\\xd8\",Otilde:\"\\xd5\",Otimes:\"\\u2a37\",Ouml:\"\\xd6\",OverBracket:\"\\u23b4\",OverParenthesis:\"\\u23dc\",oS:\"\\u24c8\",oacute:\"\\xf3\",oast:\"\\u229b\",ocir:\"\\u229a\",ocirc:\"\\xf4\",ocy:\"\\u043e\",odash:\"\\u229d\",odblac:\"\\u0151\",odiv:\"\\u2a38\",odot:\"\\u2299\",odsold:\"\\u29bc\",oelig:\"\\u0153\",ofcir:\"\\u29bf\",ogon:\"\\u02db\",ograve:\"\\xf2\",ogt:\"\\u29c1\",ohbar:\"\\u29b5\",ohm:\"\\u03a9\",oint:\"\\u222e\",olarr:\"\\u21ba\",olcir:\"\\u29be\",olcross:\"\\u29bb\",oline:\"\\u203e\",olt:\"\\u29c0\",omacr:\"\\u014d\",omid:\"\\u29b6\",ominus:\"\\u2296\",opar:\"\\u29b7\",operp:\"\\u29b9\",oplus:\"\\u2295\",orarr:\"\\u21bb\",ord:\"\\u2a5d\",order:\"\\u2134\",orderof:\"\\u2134\",ordf:\"\\xaa\",ordm:\"\\xba\",origof:\"\\u22b6\",oror:\"\\u2a56\",orslope:\"\\u2a57\",orv:\"\\u2a5b\",oslash:\"\\xf8\",otilde:\"\\xf5\",otimes:\"\\u2297\",otimesas:\"\\u2a36\",ouml:\"\\xf6\",ovbar:\"\\u233d\"},\"o\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({QUOT:'\"',qint:\"\\u2a0c\",qprime:\"\\u2057\",quaternions:\"\\u210d\",quatint:\"\\u2a16\",quest:\"?\",questeq:\"\\u225f\"},\"q\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({SHCHcy:\"\\u0429\",SHcy:\"\\u0428\",SOFTcy:\"\\u042c\",Sacute:\"\\u015a\",Sc:\"\\u2abc\",Scaron:\"\\u0160\",Scedil:\"\\u015e\",Scirc:\"\\u015c\",Scy:\"\\u0421\",ShortDownArrow:\"\\u2193\",ShortLeftArrow:\"\\u2190\",ShortRightArrow:\"\\u2192\",ShortUpArrow:\"\\u2191\",Sub:\"\\u22d0\",Sup:\"\\u22d1\",sacute:\"\\u015b\",sbquo:\"\\u201a\",sc:\"\\u227b\",scE:\"\\u2ab4\",scaron:\"\\u0161\",sccue:\"\\u227d\",sce:\"\\u2ab0\",scedil:\"\\u015f\",scirc:\"\\u015d\",scpolint:\"\\u2a13\",scsim:\"\\u227f\",scy:\"\\u0441\",sdotb:\"\\u22a1\",sdote:\"\\u2a66\",seArr:\"\\u21d8\",searhk:\"\\u2925\",searrow:\"\\u2198\",semi:\";\",seswar:\"\\u2929\",setminus:\"\\u2216\",setmn:\"\\u2216\",sext:\"\\u2736\",sfrown:\"\\u2322\",shchcy:\"\\u0449\",shcy:\"\\u0448\",shortmid:\"\\u2223\",shortparallel:\"\\u2225\",shy:\"\\xad\",sigmaf:\"\\u03c2\",sim:\"\\u223c\",simdot:\"\\u2a6a\",sime:\"\\u2243\",simeq:\"\\u2243\",simg:\"\\u2a9e\",simgE:\"\\u2aa0\",siml:\"\\u2a9d\",simlE:\"\\u2a9f\",simplus:\"\\u2a24\",simrarr:\"\\u2972\",slarr:\"\\u2190\",smallsetminus:\"\\u2216\",smashp:\"\\u2a33\",smeparsl:\"\\u29e4\",smid:\"\\u2223\",smt:\"\\u2aaa\",smte:\"\\u2aac\",smtes:\"\\u2aac\\ufe00\",softcy:\"\\u044c\",sol:\"/\",solb:\"\\u29c4\",solbar:\"\\u233f\",spadesuit:\"\\u2660\",spar:\"\\u2225\",sqcap:\"\\u2293\",sqcaps:\"\\u2293\\ufe00\",sqcup:\"\\u2294\",sqcups:\"\\u2294\\ufe00\",sqsub:\"\\u228f\",sqsube:\"\\u2291\",sqsubset:\"\\u228f\",sqsubseteq:\"\\u2291\",sqsup:\"\\u2290\",sqsupe:\"\\u2292\",sqsupset:\"\\u2290\",sqsupseteq:\"\\u2292\",squ:\"\\u25a1\",square:\"\\u25a1\",squarf:\"\\u25aa\",squf:\"\\u25aa\",srarr:\"\\u2192\",ssetmn:\"\\u2216\",ssmile:\"\\u2323\",sstarf:\"\\u22c6\",star:\"\\u2606\",starf:\"\\u2605\",straightepsilon:\"\\u03f5\",straightphi:\"\\u03d5\",strns:\"\\xaf\",subdot:\"\\u2abd\",sube:\"\\u2286\",subedot:\"\\u2ac3\",submult:\"\\u2ac1\",subplus:\"\\u2abf\",subrarr:\"\\u2979\",subset:\"\\u2282\",subseteq:\"\\u2286\",subseteqq:\"\\u2ac5\",subsetneq:\"\\u228a\",subsetneqq:\"\\u2acb\",subsim:\"\\u2ac7\",subsub:\"\\u2ad5\",subsup:\"\\u2ad3\",succ:\"\\u227b\",succapprox:\"\\u2ab8\",succcurlyeq:\"\\u227d\",succeq:\"\\u2ab0\",succnapprox:\"\\u2aba\",succneqq:\"\\u2ab6\",succnsim:\"\\u22e9\",succsim:\"\\u227f\",sum:\"\\u2211\",sung:\"\\u266a\",sup:\"\\u2283\",sup1:\"\\xb9\",sup2:\"\\xb2\",sup3:\"\\xb3\",supdot:\"\\u2abe\",supdsub:\"\\u2ad8\",supe:\"\\u2287\",supedot:\"\\u2ac4\",suphsol:\"\\u27c9\",suphsub:\"\\u2ad7\",suplarr:\"\\u297b\",supmult:\"\\u2ac2\",supplus:\"\\u2ac0\",supset:\"\\u2283\",supseteq:\"\\u2287\",supseteqq:\"\\u2ac6\",supsetneq:\"\\u228b\",supsetneqq:\"\\u2acc\",supsim:\"\\u2ac8\",supsub:\"\\u2ad4\",supsup:\"\\u2ad6\",swArr:\"\\u21d9\",swarhk:\"\\u2926\",swarrow:\"\\u2199\",swnwar:\"\\u292a\",szlig:\"\\xdf\"},\"s\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({THORN:\"\\xde\",TRADE:\"\\u2122\",TSHcy:\"\\u040b\",TScy:\"\\u0426\",Tab:\"\\t\",Tau:\"\\u03a4\",Tcaron:\"\\u0164\",Tcedil:\"\\u0162\",Tcy:\"\\u0422\",ThickSpace:\"\\u205f\\u200a\",ThinSpace:\"\\u2009\",TripleDot:\"\\u20db\",Tstrok:\"\\u0166\",target:\"\\u2316\",tbrk:\"\\u23b4\",tcaron:\"\\u0165\",tcedil:\"\\u0163\",tcy:\"\\u0442\",tdot:\"\\u20db\",telrec:\"\\u2315\",there4:\"\\u2234\",therefore:\"\\u2234\",thetasym:\"\\u03d1\",thickapprox:\"\\u2248\",thicksim:\"\\u223c\",thinsp:\"\\u2009\",thkap:\"\\u2248\",thksim:\"\\u223c\",thorn:\"\\xfe\",timesb:\"\\u22a0\",timesbar:\"\\u2a31\",timesd:\"\\u2a30\",tint:\"\\u222d\",toea:\"\\u2928\",top:\"\\u22a4\",topbot:\"\\u2336\",topcir:\"\\u2af1\",topfork:\"\\u2ada\",tosa:\"\\u2929\",tprime:\"\\u2034\",trade:\"\\u2122\",triangledown:\"\\u25bf\",triangleleft:\"\\u25c3\",trianglelefteq:\"\\u22b4\",triangleright:\"\\u25b9\",trianglerighteq:\"\\u22b5\",tridot:\"\\u25ec\",trie:\"\\u225c\",triminus:\"\\u2a3a\",triplus:\"\\u2a39\",trisb:\"\\u29cd\",tritime:\"\\u2a3b\",trpezium:\"\\u23e2\",tscy:\"\\u0446\",tshcy:\"\\u045b\",tstrok:\"\\u0167\",twixt:\"\\u226c\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\"},\"t\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Uacute:\"\\xda\",Uarr:\"\\u219f\",Uarrocir:\"\\u2949\",Ubrcy:\"\\u040e\",Ubreve:\"\\u016c\",Ucirc:\"\\xdb\",Ucy:\"\\u0423\",Udblac:\"\\u0170\",Ugrave:\"\\xd9\",Umacr:\"\\u016a\",UnderBracket:\"\\u23b5\",UnderParenthesis:\"\\u23dd\",Uogon:\"\\u0172\",UpArrowBar:\"\\u2912\",UpArrowDownArrow:\"\\u21c5\",UpEquilibrium:\"\\u296e\",UpTeeArrow:\"\\u21a5\",UpperLeftArrow:\"\\u2196\",UpperRightArrow:\"\\u2197\",Upsi:\"\\u03d2\",Uring:\"\\u016e\",Utilde:\"\\u0168\",Uuml:\"\\xdc\",uArr:\"\\u21d1\",uHar:\"\\u2963\",uacute:\"\\xfa\",uarr:\"\\u2191\",ubrcy:\"\\u045e\",ubreve:\"\\u016d\",ucirc:\"\\xfb\",ucy:\"\\u0443\",udarr:\"\\u21c5\",udblac:\"\\u0171\",udhar:\"\\u296e\",ufisht:\"\\u297e\",ugrave:\"\\xf9\",uharl:\"\\u21bf\",uharr:\"\\u21be\",uhblk:\"\\u2580\",ulcorn:\"\\u231c\",ulcorner:\"\\u231c\",ulcrop:\"\\u230f\",ultri:\"\\u25f8\",umacr:\"\\u016b\",uml:\"\\xa8\",uogon:\"\\u0173\",uparrow:\"\\u2191\",updownarrow:\"\\u2195\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",uplus:\"\\u228e\",upsih:\"\\u03d2\",upsilon:\"\\u03c5\",urcorn:\"\\u231d\",urcorner:\"\\u231d\",urcrop:\"\\u230e\",uring:\"\\u016f\",urtri:\"\\u25f9\",utdot:\"\\u22f0\",utilde:\"\\u0169\",utri:\"\\u25b5\",utrif:\"\\u25b4\",uuarr:\"\\u21c8\",uuml:\"\\xfc\",uwangle:\"\\u29a7\"},\"u\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({VDash:\"\\u22ab\",Vbar:\"\\u2aeb\",Vcy:\"\\u0412\",Vdashl:\"\\u2ae6\",Verbar:\"\\u2016\",Vert:\"\\u2016\",VerticalLine:\"|\",VerticalSeparator:\"\\u2758\",VeryThinSpace:\"\\u200a\",vArr:\"\\u21d5\",vBar:\"\\u2ae8\",vBarv:\"\\u2ae9\",vDash:\"\\u22a8\",vangrt:\"\\u299c\",varepsilon:\"\\u03f5\",varkappa:\"\\u03f0\",varnothing:\"\\u2205\",varphi:\"\\u03d5\",varpi:\"\\u03d6\",varpropto:\"\\u221d\",varr:\"\\u2195\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varsubsetneq:\"\\u228a\\ufe00\",varsubsetneqq:\"\\u2acb\\ufe00\",varsupsetneq:\"\\u228b\\ufe00\",varsupsetneqq:\"\\u2acc\\ufe00\",vartheta:\"\\u03d1\",vartriangleleft:\"\\u22b2\",vartriangleright:\"\\u22b3\",vcy:\"\\u0432\",vdash:\"\\u22a2\",vee:\"\\u2228\",veeeq:\"\\u225a\",verbar:\"|\",vert:\"|\",vltri:\"\\u22b2\",vnsub:\"\\u2282\\u20d2\",vnsup:\"\\u2283\\u20d2\",vprop:\"\\u221d\",vrtri:\"\\u22b3\",vsubnE:\"\\u2acb\\ufe00\",vsubne:\"\\u228a\\ufe00\",vsupnE:\"\\u2acc\\ufe00\",vsupne:\"\\u228b\\ufe00\",vzigzag:\"\\u299a\"},\"v\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Wcirc:\"\\u0174\",wcirc:\"\\u0175\",wedbar:\"\\u2a5f\",wedge:\"\\u2227\",wedgeq:\"\\u2259\",wp:\"\\u2118\",wr:\"\\u2240\",wreath:\"\\u2240\"},\"w\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({xcap:\"\\u22c2\",xcirc:\"\\u25ef\",xcup:\"\\u22c3\",xdtri:\"\\u25bd\",xhArr:\"\\u27fa\",xharr:\"\\u27f7\",xlArr:\"\\u27f8\",xlarr:\"\\u27f5\",xmap:\"\\u27fc\",xnis:\"\\u22fb\",xodot:\"\\u2a00\",xoplus:\"\\u2a01\",xotime:\"\\u2a02\",xrArr:\"\\u27f9\",xrarr:\"\\u27f6\",xsqcup:\"\\u2a06\",xuplus:\"\\u2a04\",xutri:\"\\u25b3\",xvee:\"\\u22c1\",xwedge:\"\\u22c0\"},\"x\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({YAcy:\"\\u042f\",YIcy:\"\\u0407\",YUcy:\"\\u042e\",Yacute:\"\\xdd\",Ycirc:\"\\u0176\",Ycy:\"\\u042b\",Yuml:\"\\u0178\",yacute:\"\\xfd\",yacy:\"\\u044f\",ycirc:\"\\u0177\",ycy:\"\\u044b\",yicy:\"\\u0457\",yucy:\"\\u044e\",yuml:\"\\xff\"},\"y\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({ZHcy:\"\\u0416\",Zacute:\"\\u0179\",Zcaron:\"\\u017d\",Zcy:\"\\u0417\",Zdot:\"\\u017b\",ZeroWidthSpace:\"\\u200b\",Zeta:\"\\u0396\",zacute:\"\\u017a\",zcaron:\"\\u017e\",zcy:\"\\u0437\",zdot:\"\\u017c\",zeetrf:\"\\u2128\",zhcy:\"\\u0436\",zwj:\"\\u200d\",zwnj:\"\\u200c\"},\"z\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Afr:\"\\ud835\\udd04\",Bfr:\"\\ud835\\udd05\",Cfr:\"\\u212d\",Dfr:\"\\ud835\\udd07\",Efr:\"\\ud835\\udd08\",Ffr:\"\\ud835\\udd09\",Gfr:\"\\ud835\\udd0a\",Hfr:\"\\u210c\",Ifr:\"\\u2111\",Jfr:\"\\ud835\\udd0d\",Kfr:\"\\ud835\\udd0e\",Lfr:\"\\ud835\\udd0f\",Mfr:\"\\ud835\\udd10\",Nfr:\"\\ud835\\udd11\",Ofr:\"\\ud835\\udd12\",Pfr:\"\\ud835\\udd13\",Qfr:\"\\ud835\\udd14\",Rfr:\"\\u211c\",Sfr:\"\\ud835\\udd16\",Tfr:\"\\ud835\\udd17\",Ufr:\"\\ud835\\udd18\",Vfr:\"\\ud835\\udd19\",Wfr:\"\\ud835\\udd1a\",Xfr:\"\\ud835\\udd1b\",Yfr:\"\\ud835\\udd1c\",Zfr:\"\\u2128\",afr:\"\\ud835\\udd1e\",bfr:\"\\ud835\\udd1f\",cfr:\"\\ud835\\udd20\",dfr:\"\\ud835\\udd21\",efr:\"\\ud835\\udd22\",ffr:\"\\ud835\\udd23\",gfr:\"\\ud835\\udd24\",hfr:\"\\ud835\\udd25\",ifr:\"\\ud835\\udd26\",jfr:\"\\ud835\\udd27\",kfr:\"\\ud835\\udd28\",lfr:\"\\ud835\\udd29\",mfr:\"\\ud835\\udd2a\",nfr:\"\\ud835\\udd2b\",ofr:\"\\ud835\\udd2c\",pfr:\"\\ud835\\udd2d\",qfr:\"\\ud835\\udd2e\",rfr:\"\\ud835\\udd2f\",sfr:\"\\ud835\\udd30\",tfr:\"\\ud835\\udd31\",ufr:\"\\ud835\\udd32\",vfr:\"\\ud835\\udd33\",wfr:\"\\ud835\\udd34\",xfr:\"\\ud835\\udd35\",yfr:\"\\ud835\\udd36\",zfr:\"\\ud835\\udd37\"},\"fr\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Aopf:\"\\ud835\\udd38\",Bopf:\"\\ud835\\udd39\",Copf:\"\\u2102\",Dopf:\"\\ud835\\udd3b\",Eopf:\"\\ud835\\udd3c\",Fopf:\"\\ud835\\udd3d\",Gopf:\"\\ud835\\udd3e\",Hopf:\"\\u210d\",Iopf:\"\\ud835\\udd40\",Jopf:\"\\ud835\\udd41\",Kopf:\"\\ud835\\udd42\",Lopf:\"\\ud835\\udd43\",Mopf:\"\\ud835\\udd44\",Nopf:\"\\u2115\",Oopf:\"\\ud835\\udd46\",Popf:\"\\u2119\",Qopf:\"\\u211a\",Ropf:\"\\u211d\",Sopf:\"\\ud835\\udd4a\",Topf:\"\\ud835\\udd4b\",Uopf:\"\\ud835\\udd4c\",Vopf:\"\\ud835\\udd4d\",Wopf:\"\\ud835\\udd4e\",Xopf:\"\\ud835\\udd4f\",Yopf:\"\\ud835\\udd50\",Zopf:\"\\u2124\",aopf:\"\\ud835\\udd52\",bopf:\"\\ud835\\udd53\",copf:\"\\ud835\\udd54\",dopf:\"\\ud835\\udd55\",eopf:\"\\ud835\\udd56\",fopf:\"\\ud835\\udd57\",gopf:\"\\ud835\\udd58\",hopf:\"\\ud835\\udd59\",iopf:\"\\ud835\\udd5a\",jopf:\"\\ud835\\udd5b\",kopf:\"\\ud835\\udd5c\",lopf:\"\\ud835\\udd5d\",mopf:\"\\ud835\\udd5e\",nopf:\"\\ud835\\udd5f\",oopf:\"\\ud835\\udd60\",popf:\"\\ud835\\udd61\",qopf:\"\\ud835\\udd62\",ropf:\"\\ud835\\udd63\",sopf:\"\\ud835\\udd64\",topf:\"\\ud835\\udd65\",uopf:\"\\ud835\\udd66\",vopf:\"\\ud835\\udd67\",wopf:\"\\ud835\\udd68\",xopf:\"\\ud835\\udd69\",yopf:\"\\ud835\\udd6a\",zopf:\"\\ud835\\udd6b\"},\"opf\")},function(r,e,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),t(0).add({Ascr:\"\\ud835\\udc9c\",Bscr:\"\\u212c\",Cscr:\"\\ud835\\udc9e\",Dscr:\"\\ud835\\udc9f\",Escr:\"\\u2130\",Fscr:\"\\u2131\",Gscr:\"\\ud835\\udca2\",Hscr:\"\\u210b\",Iscr:\"\\u2110\",Jscr:\"\\ud835\\udca5\",Kscr:\"\\ud835\\udca6\",Lscr:\"\\u2112\",Mscr:\"\\u2133\",Nscr:\"\\ud835\\udca9\",Oscr:\"\\ud835\\udcaa\",Pscr:\"\\ud835\\udcab\",Qscr:\"\\ud835\\udcac\",Rscr:\"\\u211b\",Sscr:\"\\ud835\\udcae\",Tscr:\"\\ud835\\udcaf\",Uscr:\"\\ud835\\udcb0\",Vscr:\"\\ud835\\udcb1\",Wscr:\"\\ud835\\udcb2\",Xscr:\"\\ud835\\udcb3\",Yscr:\"\\ud835\\udcb4\",Zscr:\"\\ud835\\udcb5\",ascr:\"\\ud835\\udcb6\",bscr:\"\\ud835\\udcb7\",cscr:\"\\ud835\\udcb8\",dscr:\"\\ud835\\udcb9\",escr:\"\\u212f\",fscr:\"\\ud835\\udcbb\",gscr:\"\\u210a\",hscr:\"\\ud835\\udcbd\",iscr:\"\\ud835\\udcbe\",jscr:\"\\ud835\\udcbf\",kscr:\"\\ud835\\udcc0\",lscr:\"\\ud835\\udcc1\",mscr:\"\\ud835\\udcc2\",nscr:\"\\ud835\\udcc3\",oscr:\"\\u2134\",pscr:\"\\ud835\\udcc5\",qscr:\"\\ud835\\udcc6\",rscr:\"\\ud835\\udcc7\",sscr:\"\\ud835\\udcc8\",tscr:\"\\ud835\\udcc9\",uscr:\"\\ud835\\udcca\",vscr:\"\\ud835\\udccb\",wscr:\"\\ud835\\udccc\",xscr:\"\\ud835\\udccd\",yscr:\"\\ud835\\udcce\",zscr:\"\\ud835\\udccf\"},\"scr\")}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/mml.js",
    "content": "!function(t){var e={};function r(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,o){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(o,a,function(e){return t[e]}.bind(null,a));return o},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=10)}([function(t,e,r){\"use strict\";var o,a=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var o,a,i=r.call(t),n=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)n.push(o.value)}catch(t){a={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return n};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathML=void 0;var n=r(5),s=r(3),l=r(6),c=r(1),u=r(2),h=function(t){function e(e){void 0===e&&(e={});var r=this,o=i(s.separateOptions(e,c.FindMathML.OPTIONS,u.MathMLCompile.OPTIONS),3),a=o[0],n=o[1],h=o[2];return(r=t.call(this,a)||this).findMathML=r.options.FindMathML||new c.FindMathML(n),r.mathml=r.options.MathMLCompile||new u.MathMLCompile(h),r.mmlFilters=new l.FunctionList,r}return a(e,t),e.prototype.setAdaptor=function(e){t.prototype.setAdaptor.call(this,e),this.findMathML.adaptor=e,this.mathml.adaptor=e},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this.mathml.setMmlFactory(e)},Object.defineProperty(e.prototype,\"processStrings\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){var r=t.start.node;if(!r||!t.end.node||this.options.forceReparse||\"#text\"===this.adaptor.kind(r)){var o=this.executeFilters(this.preFilters,t,e,t.math||\"<math></math>\"),a=this.checkForErrors(this.adaptor.parse(o,\"text/\"+this.options.parseAs)),i=this.adaptor.body(a);1!==this.adaptor.childNodes(i).length&&this.error(\"MathML must consist of a single element\"),r=this.adaptor.remove(this.adaptor.firstChild(i)),\"math\"!==this.adaptor.kind(r).replace(/^[a-z]+:/,\"\")&&this.error(\"MathML must be formed by a <math> element, not <\"+this.adaptor.kind(r)+\">\")}return r=this.executeFilters(this.mmlFilters,t,e,r),this.executeFilters(this.postFilters,t,e,this.mathml.compile(r))},e.prototype.checkForErrors=function(t){var e=this.adaptor.tags(this.adaptor.body(t),\"parsererror\")[0];return e&&(\"\"===this.adaptor.textContent(e)&&this.error(\"Error processing MathML\"),this.options.parseError.call(this,e)),t},e.prototype.error=function(t){throw new Error(t)},e.prototype.findMath=function(t){return this.findMathML.findMath(t)},e.NAME=\"MathML\",e.OPTIONS=s.defaultOptions({parseAs:\"html\",forceReparse:!1,FindMathML:null,MathMLCompile:null,parseError:function(t){this.error(this.adaptor.textContent(t).replace(/\\n.*/g,\"\"))}},n.AbstractInputJax.OPTIONS),e}(n.AbstractInputJax);e.MathML=h},function(t,e,r){\"use strict\";var o,a=this&&this.__extends||(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],o=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindMathML=void 0;var n=r(7),s=\"http://www.w3.org/1998/Math/MathML\",l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.findMath=function(t){var e=new Set;this.findMathNodes(t,e),this.findMathPrefixed(t,e);var r=this.adaptor.root(this.adaptor.document);return\"html\"===this.adaptor.kind(r)&&0===e.size&&this.findMathNS(t,e),this.processMath(e)},e.prototype.findMathNodes=function(t,e){var r,o;try{for(var a=i(this.adaptor.tags(t,\"math\")),n=a.next();!n.done;n=a.next()){var s=n.value;e.add(s)}}catch(t){r={error:t}}finally{try{n&&!n.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}},e.prototype.findMathPrefixed=function(t,e){var r,o,a,n,l=this.adaptor.root(this.adaptor.document);try{for(var c=i(this.adaptor.allAttributes(l)),u=c.next();!u.done;u=c.next()){var h=u.value;if(\"xmlns:\"===h.name.substr(0,6)&&h.value===s){var p=h.name.substr(6);try{for(var d=(a=void 0,i(this.adaptor.tags(t,p+\":math\"))),f=d.next();!f.done;f=d.next()){var M=f.value;e.add(M)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(n=d.return)&&n.call(d)}finally{if(a)throw a.error}}}}}catch(t){r={error:t}}finally{try{u&&!u.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}},e.prototype.findMathNS=function(t,e){var r,o;try{for(var a=i(this.adaptor.tags(t,\"math\",s)),n=a.next();!n.done;n=a.next()){var l=n.value;e.add(l)}}catch(t){r={error:t}}finally{try{n&&!n.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}},e.prototype.processMath=function(t){var e,r,o=[];try{for(var a=i(Array.from(t)),n=a.next();!n.done;n=a.next()){var s=n.value,l=\"block\"===this.adaptor.getAttribute(s,\"display\")||\"display\"===this.adaptor.getAttribute(s,\"mode\"),c={node:s,n:0,delim:\"\"},u={node:s,n:0,delim:\"\"};o.push({math:this.adaptor.outerHTML(s),start:c,end:u,display:l})}}catch(t){e={error:t}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return o},e.OPTIONS={},e}(n.AbstractFindMath);e.FindMathML=l},function(t,e,r){\"use strict\";var o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,o=arguments.length;r<o;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],o=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathMLCompile=void 0;var i=r(8),n=r(3),s=r(9),l=function(){function t(t){void 0===t&&(t={});var e=this.constructor;this.options=n.userOptions(n.defaultOptions({},e.OPTIONS),t)}return t.prototype.setMmlFactory=function(t){this.factory=t},t.prototype.compile=function(t){var e=this.makeNode(t);return e.verifyTree(this.options.verify),e.setInheritedAttributes({},!1,0,!1),e.walkTree(this.markMrows),e},t.prototype.makeNode=function(t){var e,r,o=this.adaptor,n=!1,s=o.kind(t).replace(/^.*:/,\"\"),l=o.getAttribute(t,\"data-mjx-texclass\")||\"\";l&&(l=this.filterAttribute(\"data-mjx-texclass\",l)||\"\");var c=l&&\"mrow\"===s?\"TeXAtom\":s;try{for(var u=a(this.filterClassList(o.allClasses(t))),h=u.next();!h.done;h=u.next()){var p=h.value;p.match(/^MJX-TeXAtom-/)?(l=p.substr(12),c=\"TeXAtom\"):\"MJX-fixedlimits\"===p&&(n=!0)}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=u.return)&&r.call(u)}finally{if(e)throw e.error}}this.factory.getNodeClass(c)||this.error('Unknown node type \"'+c+'\"');var d=this.factory.create(c);return\"TeXAtom\"===c?this.texAtom(d,l,n):l&&(d.texClass=i.TEXCLASS[l],d.setProperty(\"texClass\",d.texClass)),this.addAttributes(d,t),this.checkClass(d,t),this.addChildren(d,t),d},t.prototype.addAttributes=function(t,e){var r,o,i=!1;try{for(var n=a(this.adaptor.allAttributes(e)),s=n.next();!s.done;s=n.next()){var l=s.value,c=l.name,u=this.filterAttribute(c,l.value);if(null===u)return;if(\"data-mjx-\"===c.substr(0,9))\"data-mjx-alternate\"===c?t.setProperty(\"variantForm\",!0):\"data-mjx-variant\"===c&&(t.attributes.set(\"mathvariant\",u),i=!0);else if(\"class\"!==c){var h=u.toLowerCase();\"true\"===h||\"false\"===h?t.attributes.set(c,\"true\"===h):i&&\"mathvariant\"===c||t.attributes.set(c,u)}}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}},t.prototype.filterAttribute=function(t,e){return e},t.prototype.filterClassList=function(t){return t},t.prototype.addChildren=function(t,e){var r,o;if(0!==t.arity){var i=this.adaptor;try{for(var n=a(i.childNodes(e)),s=n.next();!s.done;s=n.next()){var l=s.value,c=i.kind(l);if(\"#comment\"!==c)if(\"#text\"===c)this.addText(t,l);else if(t.isKind(\"annotation-xml\"))t.appendChild(this.factory.create(\"XML\").setXML(l,i));else{var u=t.appendChild(this.makeNode(l));0===u.arity&&i.childNodes(l).length&&(this.options.fixMisplacedChildren?this.addChildren(t,l):u.mError(\"There should not be children for \"+u.kind+\" nodes\",this.options.verify,!0))}}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}}},t.prototype.addText=function(t,e){var r=this.adaptor.value(e);(t.isToken||t.getProperty(\"isChars\"))&&t.arity?(t.isToken&&(r=s.translate(r),r=this.trimSpace(r)),t.appendChild(this.factory.create(\"text\").setText(r))):r.match(/\\S/)&&this.error('Unexpected text node \"'+r+'\"')},t.prototype.checkClass=function(t,e){var r,o,i=[];try{for(var n=a(this.filterClassList(this.adaptor.allClasses(e))),s=n.next();!s.done;s=n.next()){var l=s.value;\"MJX-\"===l.substr(0,4)?\"MJX-variant\"===l?t.setProperty(\"variantForm\",!0):\"MJX-TeXAtom\"!==l.substr(0,11)&&t.attributes.set(\"mathvariant\",this.fixCalligraphic(l.substr(3))):i.push(l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}i.length&&t.attributes.set(\"class\",i.join(\" \"))},t.prototype.fixCalligraphic=function(t){return t.replace(/caligraphic/,\"calligraphic\")},t.prototype.texAtom=function(t,e,r){t.texClass=i.TEXCLASS[e],t.setProperty(\"texClass\",t.texClass),\"OP\"!==e||r||(t.setProperty(\"movesupsub\",!0),t.attributes.setInherited(\"movablelimits\",!0))},t.prototype.markMrows=function(t){if(t.isKind(\"mrow\")&&!t.isInferred&&t.childNodes.length>=2){var e=t.childNodes[0],r=t.childNodes[t.childNodes.length-1];e.isKind(\"mo\")&&e.attributes.get(\"fence\")&&r.isKind(\"mo\")&&r.attributes.get(\"fence\")&&(e.childNodes.length&&t.setProperty(\"open\",e.getText()),r.childNodes.length&&t.setProperty(\"close\",r.getText()))}},t.prototype.trimSpace=function(t){return t.replace(/[\\t\\n\\r]/g,\" \").replace(/^ +/,\"\").replace(/ +$/,\"\").replace(/  +/g,\" \")},t.prototype.error=function(t){throw new Error(t)},t.OPTIONS={MmlFactory:null,fixMisplacedChildren:!0,verify:o({},i.AbstractMmlNode.verifyDefaults),translateEntities:!0},t}();e.MathMLCompile=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";r.r(e);var o=r(4),a=r(0),i=r(1),n=r(2);Object(o.combineWithMathJax)({_:{input:{mathml_ts:a,mathml:{FindMathML:i,MathMLCompile:n}}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"mml\",a.MathML),MathJax.startup.useInput(\"mml\"))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/action.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=6)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var o=a(2),n=a(3),i=a(4),r=a(5);e.ActionMethods={},e.ActionMethods.Macro=r.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var a,o=[];\"\\\\endtoggle\"!==(a=t.GetArgument(e));)o.push(new n.default(a,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",o,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var a=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[a,o],{actiontype:\"tooltip\"}))},new i.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=o.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{action:{ActionConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/all-packages.js",
    "content": "!function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=78)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var a=r(3),n=r(4),o=r(6),i=r(5),s=r(2),c=r(12),l=r(8),u=r(7);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,n,o,i,s){var c=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=l.default.EqnArray(t,e,r,n,o,i,s);return a.default.setArrayAlign(u,c)},e.AmsMethods.AlignAt=function(t,r,n,o){var i,c,l=r.getName(),u=\"\",d=[];if(o||(c=t.GetBrackets(\"\\\\begin{\"+l+\"}\")),(i=t.GetArgument(\"\\\\begin{\"+l+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+l+\"}\");for(var p=parseInt(i,10);p>0;)u+=\"rl\",d.push(\"0em 0em\"),p--;var f=d.join(\" \");if(o)return e.AmsMethods.EqnArray(t,r,n,o,u,f);var m=e.AmsMethods.EqnArray(t,r,n,o,u,f);return a.default.setArrayAlign(m,c)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),a.default.checkEqnEnv(t);var n=t.itemFactory.create(\"multline\",r,t.stack);return n.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},n},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var n=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",o=a.default.trimSpaces(t.GetArgument(r));\"\\\\\"===o.charAt(0)&&(o=o.substr(1));var i=t.GetArgument(r);i.match(/\\\\text/)||(i=i.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(o,new c.Macro(o,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+i+\"}\"+n]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=a.default.trimSpaces(t.GetArgument(e));n.match(/\\\\text/)||(n=n.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+n+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),a=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=a)},e.AmsMethods.MultiIntegral=function(t,e,r){var a=t.GetNext();if(\"\\\\\"===a){var n=t.i;a=t.GetArgument(e),t.i=n,\"\\\\limits\"===a&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,o,s){var c={width:\"+\"+a.default.Em((o+s)/18),lspace:a.default.Em(o/18)},l=t.GetBrackets(e),d=t.ParseArg(e),p=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(r)),f=t.create(\"node\",\"munderover\",[p]),m=t.create(\"node\",\"mpadded\",[d],c);if(n.default.setAttribute(m,\"voffset\",\".15em\"),n.default.setChild(f,f.over,m),l){var h=new i.default(l,t.stack.env,t.configuration).mml();m=t.create(\"node\",\"mpadded\",[h],c),n.default.setAttribute(m,\"voffset\",\"-.24em\"),n.default.setChild(f,f.under,m)}n.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},e.AmsMethods.HandleShove=function(t,e,r){var a=t.stack.Top();if(\"multline\"!==a.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(a.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);a.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=a.default.trimSpaces(t.GetBrackets(e,\"\")),c=t.GetArgument(e),l=t.GetArgument(e),u={l:o.TexConstant.Align.LEFT,r:o.TexConstant.Align.RIGHT,\"\":\"\"},d=new i.default(\"\\\\strut\\\\textstyle{\"+c+\"}\",t.stack.env,t.configuration).mml(),p=new i.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),f=t.create(\"node\",\"mfrac\",[d,p]);if(null==(r=u[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&n.default.setProperties(f,{numalign:r,denomalign:r}),t.Push(f)},e.AmsMethods.Genfrac=function(t,e,r,o,i,c){null==r&&(r=t.GetDelimiterArg(e)),null==o&&(o=t.GetDelimiterArg(e)),null==i&&(i=t.GetArgument(e)),null==c&&(c=a.default.trimSpaces(t.GetArgument(e)));var l=t.ParseArg(e),u=t.ParseArg(e),d=t.create(\"node\",\"mfrac\",[l,u]);if(\"\"!==i&&n.default.setAttribute(d,\"linethickness\",i),(r||o)&&(n.default.setProperty(d,\"withDelims\",!0),d=a.default.fixedFence(t.configuration,r,d,o)),\"\"!==c){var p=parseInt(c,10),f=[\"D\",\"T\",\"S\",\"SS\"][p];if(null==f)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);d=t.create(\"node\",\"mstyle\",[d]),\"D\"===f?n.default.setProperties(d,{displaystyle:!0,scriptlevel:0}):n.default.setProperties(d,{displaystyle:!1,scriptlevel:p-1})}t.Push(d)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),n=a.default.trimSpaces(t.GetArgument(e));t.tags.tag(n,r)},e.AmsMethods.HandleNoTag=l.default.HandleNoTag,e.AmsMethods.HandleRef=l.default.HandleRef,e.AmsMethods.Macro=l.default.Macro,e.AmsMethods.Accent=l.default.Accent,e.AmsMethods.Tilde=l.default.Tilde,e.AmsMethods.Array=l.default.Array,e.AmsMethods.Spacer=l.default.Spacer,e.AmsMethods.NamedOp=l.default.NamedOp,e.AmsMethods.EqnArray=l.default.EqnArray},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlStack=MathJax._.input.tex.StackItem.MmlStack,e.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var i=r(0),s=r(1),c=r(2),l=r(20),u=r(28),d=r(76),p=r(77),f=r(10),m=l.MathJax.config;function h(t,e){var r,n=t.parseOptions.options.require,o=t.parseOptions.packageData.get(\"require\").required,s=e.substr(n.prefix.length);if(o.indexOf(s)<0){o.push(s),function(t,e){var r,n;void 0===e&&(e=[]);var o=t.parseOptions.options.require.prefix;try{for(var i=a(e),s=i.next();!s.done;s=i.next()){var c=s.value;c.substr(0,o.length)===o&&h(t,c)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}(t,d.CONFIG.dependencies[e]);var c=i.ConfigurationHandler.get(s);if(c){var l=m[e]||{};c.options&&1===Object.keys(c.options).length&&c.options[s]&&((r={})[s]=l,l=r),t.configuration.add(c,t,l);var u=t.parseOptions.packageData.get(\"require\").configured;c.preprocessors.length&&!u.has(s)&&(u.set(s,!0),p.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,a=r.allow,n=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(a.hasOwnProperty(n)?a[n]:a.hasOwnProperty(e)?a[e]:r.defaultAllow))throw new c.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',n);u.Package.packages.has(n)?h(t.configuration.packageData.get(\"require\").jax,n):p.mathjax.retryAfter(d.Loader.load(n))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new c.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:f.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:o(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,a=r.prefix;if(a.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");d.CONFIG.paths[a]||(d.CONFIG.paths[a]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+a+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,r(22),r(29),r(30),r(33),r(36),r(37),r(38),r(42),r(47),r(48),r(52),r(53),r(24),r(54),r(57),r(59),r(26),r(61),r(62),r(63),r(67),r(68),r(73),r(75),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,r){\"use strict\";var a,n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var i=r(4),s=r(3),c=null,l=null,u=function(t){return l.root=t,c.outputJax.getBBox(l,c).w},d=function(t){for(var e=0;t&&!i.default.isType(t,\"mtable\");){if(i.default.isType(t,\"text\"))return null;i.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},p=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},f=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},m=function(t){return f(t,0)},h=function(t){return f(t,t.childNodes.length-1)},g=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(t){for(;t&&!i.default.isType(t,\"mtd\");)t=t.parent;return t},y=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},x=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},b=function(t,e,r){void 0===r&&(r=!1);var a=0;if(t===e)return a;if(t!==e.parent){var n=t.childNodes,o=r?n.length-1:0;i.default.isType(n[o],\"mspace\")&&(a+=u(n[o])),t=e.parent}if(t===e)return a;var s=t.childNodes,c=r?s.length-1:0;return s[c]!==e&&(a+=u(s[c])),a},_=function(t,r){void 0===r&&(r=!1);var a=d(t),n=g(a,e.getProperty(a,\"inferenceRule\"));return b(t,a,r)+(u(a)-u(n))/2},M=function(t,r,a,n){if(void 0===n&&(n=!1),e.getProperty(r,\"inferenceRule\")||e.getProperty(r,\"labelledRule\")){var o=t.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(o,r),o.setChildren([r]),A(r,o),r=o}var c=n?r.childNodes.length-1:0,l=r.childNodes[c];i.default.isType(l,\"mspace\")?i.default.setAttribute(l,\"width\",s.default.Em(s.default.dimen2em(i.default.getAttribute(l,\"width\"))+a)):(l=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(a)}),n?r.appendChild(l):(l.parent=r,r.childNodes.unshift(l)))},A=function(t,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(a){var n=e.getProperty(t,a);null!=n&&(e.setProperty(r,a,n),e.removeProperty(t,a))}))},w=function(t,r,a,n,o){var i=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(o)});if(\"left\"===n){var c=r.childNodes[a].childNodes[0];i.parent=c,c.childNodes.unshift(i)}else r.childNodes[a].appendChild(i);e.setProperty(r.parent,\"sequentAdjust_\"+n,o)},C=function(t,r){for(var a=r.pop();r.length;){var o=r.pop(),i=n(S(a,o),2),s=i[0],c=i[1];e.getProperty(a.parent,\"axiom\")&&(w(t,s<0?a:o,0,\"left\",Math.abs(s)),w(t,c<0?a:o,2,\"right\",Math.abs(c))),a=o}},S=function(t,e){var r=u(t.childNodes[2]),a=u(e.childNodes[2]);return[u(t.childNodes[0])-u(e.childNodes[0]),r-a]};e.balanceRules=function(t){var r,a;l=new t.document.options.MathItem(\"\",null,t.math.display);var n=t.data;!function(t){var r=t.nodeLists.sequent;if(r)for(var a=r.length-1,n=void 0;n=r[a];a--)if(e.getProperty(n,\"sequentProcessed\"))e.removeProperty(n,\"sequentProcessed\");else{var o=[],i=x(n);if(1===e.getProperty(i,\"inference\")){for(o.push(n);1===e.getProperty(i,\"inference\");){i=d(i);var s=m(p(i,e.getProperty(i,\"inferenceRule\"))),c=e.getProperty(s,\"inferenceRule\")?g(s,e.getProperty(s,\"inferenceRule\")):s;e.getProperty(c,\"sequent\")&&(n=c.childNodes[0],o.push(n),e.setProperty(n,\"sequentProcessed\",!0)),i=s}C(t,o)}}}(n);var i=n.nodeLists.inference||[];try{for(var s=o(i),c=s.next();!c.done;c=s.next()){var u=c.value,f=e.getProperty(u,\"proof\"),A=d(u),w=p(A,e.getProperty(A,\"inferenceRule\")),S=m(w);if(e.getProperty(S,\"inference\")){var P=_(S);if(P){M(n,S,-P);var k=b(u,A,!1);M(n,u,P-k)}}var O=h(w);if(null!=e.getProperty(O,\"inference\")){var T=_(O,!0);M(n,O,-T,!0);var q=b(u,A,!0),E=e.getProperty(u,\"maxAdjust\");null!=E&&(T=Math.max(T,E));var I=void 0;if(!f&&(I=v(u))){var N=y(I);if(N){var B=n.nodeFactory.create(\"node\",\"mspace\",[],{width:T-q+\"em\"});N.appendChild(B),u.removeProperty(\"maxAdjust\")}else{var G=x(I);G&&(T=e.getProperty(G,\"maxAdjust\")?Math.max(e.getProperty(G,\"maxAdjust\"),T):T,e.setProperty(G,\"maxAdjust\",T))}}else M(n,e.getProperty(u,\"proof\")?u:u.parent,T-q,!0)}}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}};var P=((a={}).bspr_maxAdjust=!0,a);e.setProperty=function(t,e,r){i.default.setProperty(t,\"bspr_\"+e,r)},e.getProperty=function(t,e){return i.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var r=[];t.getPropertyNames().forEach((function(e){!P[e]&&e.match(RegExp(\"^bspr_\"))&&r.push(e+\":\"+t.getProperty(e))})),r.length&&i.default.setAttribute(t,\"semantics\",r.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(c=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){c=null}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a,n=r(3),o=r(2),i=r(12);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var a in e.attributes)r.push(a),r.push(e.attributes[a]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],a={},n=2;n<t.length;n+=2)a[t[n]]=t[n+1];return new i.Symbol(e,r,a)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new o.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return n.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var a=t.GetNext(),n=[],i=0,s=t.i;t.i<t.string.length;){if(\"#\"===(a=t.GetNext())){if(s!==t.i&&(n[i]=t.string.substr(s,t.i-s)),!(a=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new o.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(a)!==++i)throw new o.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===a)return s!==t.i&&(n[i]=t.string.substr(s,t.i-s)),n.length>0?[i.toString()].concat(n):i;t.i++}throw new o.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,a){if(null==a)return t.GetArgument(r);for(var n=t.i,i=0,s=0;t.i<t.string.length;){var c=t.string.charAt(t.i);if(\"{\"===c)t.i===n&&(s=1),t.GetArgument(r),i=t.i-n;else{if(e(t,a))return s&&(n++,i-=2),t.string.substr(n,i);if(\"\\\\\"===c){t.i++,i++,s=0;var l=t.string.substr(t.i).match(/[a-z]+|./i);l&&(t.i+=l[0].length,i=t.i-n)}else t.i++,i++,s=0}}throw new o.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,a,n){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new i.Symbol(r,a,n))},t.addMacro=function(e,r,a,n,o){void 0===o&&(o=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new i.Macro(o||r,a,n))},t.addEnvironment=function(e,r,a,n){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new i.Macro(r,a,n))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var o=r(0),i=r(1),s=r(12),c=r(14),l=r(28),u=r(10);function d(t,e,r,o){var i,s,u,d;if(l.Package.packages.has(t.options.require.prefix+r)){var m=t.options.autoload[r],h=a(2===m.length&&Array.isArray(m[0])?m:[m,[]],2),g=h[0],v=h[1];try{for(var y=n(g),x=y.next();!x.done;x=y.next()){var b=x.value;p.remove(b)}}catch(t){i={error:t}}finally{try{x&&!x.done&&(s=y.return)&&s.call(y)}finally{if(i)throw i.error}}try{for(var _=n(v),M=_.next();!M.done;M=_.next()){var A=M.value;f.remove(A)}}catch(t){u={error:t}}finally{try{M&&!M.done&&(d=_.return)&&d.call(_)}finally{if(u)throw u.error}}t.string=(o?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}c.RequireLoad(t,r)}var p=new i.CommandMap(\"autoload-macros\",{},{}),f=new i.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=o.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:u.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,o,i,l,u,m,h=e.parseOptions,g=h.handlers.get(\"macro\"),v=h.handlers.get(\"environment\"),y=h.options.autoload;h.packageData.set(\"autoload\",{Autoload:d});try{for(var x=n(Object.keys(y)),b=x.next();!b.done;b=x.next()){var _=b.value,M=y[_],A=a(2===M.length&&Array.isArray(M[0])?M:[M,[]],2),w=A[0],C=A[1];try{for(var S=(i=void 0,n(w)),P=S.next();!P.done;P=S.next()){var k=P.value;g.lookup(k)&&\"color\"!==k||p.add(k,new s.Macro(k,d,[_,!0]))}}catch(t){i={error:t}}finally{try{P&&!P.done&&(l=S.return)&&l.call(S)}finally{if(i)throw i.error}}try{for(var O=(u=void 0,n(C)),T=O.next();!T.done;T=O.next()){var q=T.value;v.lookup(q)||f.add(q,new s.Macro(q,d,[_,!1]))}}catch(t){u={error:t}}finally{try{T&&!T.done&&(m=O.return)&&m.call(O)}finally{if(u)throw u.error}}}}catch(t){r={error:t}}finally{try{b&&!b.done&&(o=x.return)&&o.call(x)}finally{if(r)throw r.error}}h.packageData.get(\"require\")||c.RequireConfiguration.config(t,e)},init:function(t){t.options.require||u.defaultOptions(t.options,c.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Other=MathJax._.input.tex.base.BaseConfiguration.Other,e.BaseTags=MathJax._.input.tex.base.BaseConfiguration.BaseTags,e.BaseConfiguration=MathJax._.input.tex.base.BaseConfiguration.BaseConfiguration},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var a=r(0),n=r(1),o=r(3);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,r){var a=t.GetArgument(r).replace(/,/g,\" \"),n=t.GetBrackets(r,\"\"),i=t.ParseArg(r),s=o.default.keyvalOptions(n,e.ENCLOSE_OPTIONS);s.notation=a,t.Push(t.create(\"node\",\"menclose\",[i],s))},new n.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=a.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(2),n=r(1),o=r(8),i=r(3),s=r(19),c={NewCommand:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),n=t.GetBrackets(e),o=t.GetBrackets(e),l=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new a.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(n&&!(n=i.default.trimSpaces(n)).match(/^[0-9]+$/))throw new a.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,c.Macro,[l,n,o])},NewEnvironment:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),n=t.GetBrackets(e),o=t.GetBrackets(e),l=t.GetArgument(e),u=t.GetArgument(e);if(n&&!(n=i.default.trimSpaces(n)).match(/^[0-9]+$/))throw new a.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,c.BeginEnv,[!0,l,u,n,o])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),a=s.default.GetTemplate(t,e,\"\\\\\"+r),n=t.GetArgument(e);a instanceof Array?s.default.addMacro(t,r,c.MacroWithTemplate,[n].concat(a)):s.default.addMacro(t,r,c.Macro,[n,a])},Let:function(t,e){var r=s.default.GetCSname(t,e),a=t.GetNext();\"=\"===a&&(t.i++,a=t.GetNext());var o=t.configuration.handlers;if(\"\\\\\"!==a){t.i++;var i=o.get(\"delimiter\").lookup(a);i?s.default.addDelimiter(t,\"\\\\\"+r,i.char,i.attributes):s.default.addMacro(t,r,c.Macro,[a])}else{e=s.default.GetCSname(t,e);var l=o.get(\"delimiter\").lookup(\"\\\\\"+e);if(l)return void s.default.addDelimiter(t,\"\\\\\"+r,l.char,l.attributes);var u=o.get(\"macro\").applicable(e);if(!u)return;if(u instanceof n.MacroMap){var d=u.lookup(e);return void s.default.addMacro(t,r,d.func,d.args,d.symbol)}l=u.lookup(e);var p=s.default.disassembleSymbol(r,l);s.default.addMacro(t,r,(function(t,e){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];var n=s.default.assembleSymbol(r);return u.parser(t,n)}),p)}},MacroWithTemplate:function(t,e,r,n){for(var o=[],c=4;c<arguments.length;c++)o[c-4]=arguments[c];var l=parseInt(n,10);if(l){var u=[];if(t.GetNext(),o[0]&&!s.default.MatchParam(t,o[0]))throw new a.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var d=0;d<l;d++)u.push(s.default.GetParameter(t,e,o[d+1]));r=i.default.substituteArgs(t,u,r)}if(t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,a,n,o){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=a,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(n){var c=[];if(null!=o){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");c.push(null==l?o:l)}for(var u=c.length;u<n;u++)c.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=i.default.substituteArgs(t,c,r),a=i.default.substituteArgs(t,[],a)}return t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};c.Macro=o.default.Macro,e.default=c},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var n=r(0),o=r(55),i=r(19);r(56);var s=r(9),c=r(1);e.NewcommandConfiguration=n.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(a={},a[o.BeginEnvItem.prototype.kind]=o.BeginEnvItem,a),options:{maxMacros:1e3},init:function(t){new c.DelimiterMap(i.default.NEW_DELIMITER,s.default.delimiter,{}),new c.CommandMap(i.default.NEW_COMMAND,{},{}),new c.EnvironmentMap(i.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(n.Configuration.local({handler:{character:[],delimiter:[i.default.NEW_DELIMITER],macro:[i.default.NEW_DELIMITER,i.default.NEW_COMMAND],environment:[i.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var a=r(5),n=r(71),o=r(8);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var r,n,o=t.i,i=0;n=t.GetNext();)switch(r=t.i++,n){case\"\\\\\":\")\"===t.GetCS()&&(n=\"\\\\(\");case\"$\":if(0===i&&e===n){var s=t.texParser.configuration,c=new a.default(t.string.substr(o,r-o),t.stack.env,s).mml();return void t.PushMath(c)}break;case\"{\":i++;break;case\"}\":0===i&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),i--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var r=t.stack.env;t.envStack.push(r),t.stack.env=Object.assign({},r)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,r){t.text+=r},Accent:function(t,e,r){var a=t.ParseArg(name),n=t.create(\"token\",\"mo\",{},r);t.addAttributes(n),t.Push(t.create(\"node\",\"mover\",[a,n]))},Emph:function(t,e){var r=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:r}))},SetFont:function(t,e,r){t.saveText(),t.stack.env.mathvariant=r},SetSize:function(t,e,r){t.saveText(),t.stack.env.mathsize=r},CheckAutoload:function(t,e){var r=t.configuration.packageData.get(\"autoload\"),a=t.texParser;e=e.slice(1);var o=a.lookup(\"macro\",e);if(!o||r&&o._func===r.Autoload){if(a.parse(\"macro\",[a,e]),!o)return;n.retryAfter(Promise.resolve())}a.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var a=r(0),n=r(5),o=r(1),i=r(8);e.ActionMethods={},e.ActionMethods.Macro=i.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var r,a=[];\"\\\\endtoggle\"!==(r=t.GetArgument(e));)a.push(new n.default(r,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",a,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var r=t.ParseArg(e),a=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[r,a],{actiontype:\"tooltip\"}))},new o.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=a.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,r){\"use strict\";var a,n,o=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var i=r(0),s=r(31),c=r(17),l=r(11);r(32);var u=r(1),d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(c.AbstractTags);e.AmsTags=d;e.AmsConfiguration=i.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(n={},n[s.MultlineItem.prototype.kind]=s.MultlineItem,n),tags:{ams:d},init:function(t){new u.CommandMap(l.NEW_OPS,{},{}),t.append(i.Configuration.local({handler:{macro:[l.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var o=r(16),i=r(3),s=r(4),c=r(2),l=r(6),u=function(t){function e(e){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];var n=t.call(this,e)||this;return n.factory.configuration.tags.start(\"multline\",!0,r[0]),n}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&i.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new c.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",l.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",l.TexConstant.Align.RIGHT);var a=this.factory.configuration.tags.getTag();if(a){r=this.arraydef.side===l.TexConstant.Align.LEFT?0:this.table.length-1;var n=this.table[r],o=this.create(\"node\",\"mlabeledtr\",[a].concat(s.default.getChildren(n)));s.default.copyAttributes(n,o),this.table[r]=o}}this.factory.configuration.tags.end()},e}(o.ArrayItem);e.MultlineItem=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(11),n=r(1),o=r(6),i=r(9),s=r(3),c=r(7),l=function(t){for(var e=[],r=0,a=t.length;r<a;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new n.CharacterMap(\"AMSmath-mathchar0mo\",i.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:c.TEXCLASS.OP}]}),new n.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",o.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",o.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",o.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",o.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},a.AmsMethods),new n.EnvironmentMap(\"AMSmath-environment\",i.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+o.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",l([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",l([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,l([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",l([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},a.AmsMethods),new n.DelimiterMap(\"AMSmath-delimiter\",i.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:c.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:c.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:c.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:c.TEXCLASS.CLOSE}]}),new n.CharacterMap(\"AMSsymbols-mathchar0mi\",i.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:o.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:o.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:o.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:o.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:o.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:o.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:o.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:o.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:o.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:o.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:o.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new n.CharacterMap(\"AMSsymbols-mathchar0m0\",i.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new n.DelimiterMap(\"AMSsymbols-delimiter\",i.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new n.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},a.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var a=r(0);r(34),e.AmsCdConfiguration=a.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(9),o=r(35);new a.EnvironmentMap(\"amscd_environment\",n.default.environment,{CD:\"CD\"},o.default),new a.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new a.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(5),n=r(22),o=r(7),i=r(4),s={CD:function(t,e){t.Push(e);var r=t.itemFactory.create(\"array\"),a=t.configuration.options.amscd;return r.setProperties({minw:t.stack.env.CD_minw||a.harrowsize,minh:t.stack.env.CD_minh||a.varrowsize}),r.arraydef={columnalign:\"center\",columnspacing:a.colspace,rowspacing:a.rowspace,displaystyle:!0},r},arrow:function(t,e){var r=t.string.charAt(t.i);if(!r.match(/[><VA.|=]/))return n.Other(t,e);t.i++;var c=t.stack.Top();c.isKind(\"array\")&&!c.Size()||(s.cell(t,e),c=t.stack.Top());for(var l,u=c,d=u.table.length%2==1,p=(u.row.length+(d?0:1))%2;p;)s.cell(t,e),p--;var f={minsize:u.getProperty(\"minw\"),stretchy:!0},m={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===r);else if(\"|\"===r)l=t.create(\"token\",\"mo\",m,\"\\u2225\");else if(\"=\"===r)l=t.create(\"token\",\"mo\",f,\"=\");else{var h={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[r],g=t.GetUpTo(e+r,r),v=t.GetUpTo(e+r,r);if(\">\"===r||\"<\"===r){if(l=t.create(\"token\",\"mo\",f,h),g||(g=\"\\\\kern \"+u.getProperty(\"minw\")),g||v){var y={width:\".67em\",lspace:\".33em\"};if(l=t.create(\"node\",\"munderover\",[l]),g){var x=new a.default(g,t.stack.env,t.configuration).mml(),b=t.create(\"node\",\"mpadded\",[x],y);i.default.setAttribute(b,\"voffset\",\".1em\"),i.default.setChild(l,l.over,b)}if(v){var _=new a.default(v,t.stack.env,t.configuration).mml();i.default.setChild(l,l.under,t.create(\"node\",\"mpadded\",[_],y))}t.configuration.options.amscd.hideHorizontalLabels&&(l=t.create(\"node\",\"mpadded\",l,{depth:0,height:\".67em\"}))}}else{var M=t.create(\"token\",\"mo\",m,h);l=M,(g||v)&&(l=t.create(\"node\",\"mrow\"),g&&i.default.appendChildren(l,[new a.default(\"\\\\scriptstyle\\\\llap{\"+g+\"}\",t.stack.env,t.configuration).mml()]),M.texClass=o.TEXCLASS.ORD,i.default.appendChildren(l,[M]),v&&i.default.appendChildren(l,[new a.default(\"\\\\scriptstyle\\\\rlap{\"+v+\"}\",t.stack.env,t.configuration).mml()]))}}l&&t.Push(l),s.cell(t,e)},cell:function(t,e){var r=t.stack.Top();(r.table||[]).length%2==0&&0===(r.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=s},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var a=r(0),n=r(1),o=r(2);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var r,a,n,c=t.GetBrackets(e,\"\"),l=t.ParseArg(e),u=c.split(/,/),d=0,p=u.length;d<p;d++){var f=u[d].trim(),m=f.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(m){if(r)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var h=s(m[1]+m[3]);h&&(r={height:\"+\"+h,depth:\"+\"+h,lspace:h,width:\"+\"+2*parseInt(m[1],10)+m[3]})}else if(f.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(a)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);a=f}else if(f.match(/^[-a-z]+:/i)){if(n)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);n=i(f)}else if(\"\"!==f)throw new o.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',f)}r&&(l=t.create(\"node\",\"mpadded\",[l],r)),(a||n)&&(r={},a&&Object.assign(r,{mathbackground:a}),n&&Object.assign(r,{style:n}),l=t.create(\"node\",\"mstyle\",[l],r)),t.Push(l)};var i=function(t){return t},s=function(t){return t};new n.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=a.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var n=r(0),o=r(4),i=r(6),s=r(1),c=r(23),l={};function u(t,e,r,a){var n=c.NodeFactory.createToken(t,e,r,a);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(o.default.setProperty(n,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",n)),n}function d(t){var e,r;try{for(var n=a(t.data.getList(\"fixBold\")),s=n.next();!s.done;s=n.next()){var c=s.value;if(o.default.getProperty(c,\"fixBold\")){var u=o.default.getAttribute(c,\"mathvariant\");null==u?o.default.setAttribute(c,\"mathvariant\",i.TexConstant.Variant.BOLD):o.default.setAttribute(c,\"mathvariant\",l[u]||u),o.default.removeProperties(c,\"fixBold\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}}l[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,l[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,l[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,l[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,l[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,l[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",l[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var r=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var a=t.ParseArg(e);t.stack.env.boldsymbol=r,t.Push(a)},new s.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=u,e.rewriteBoldTokens=d,e.BoldsymbolConfiguration=n.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:u},postprocessors:[d]})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var n=r(0),o=r(39);r(40),e.BraketConfiguration=n.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(a={},a[o.BraketItem.prototype.kind]=o.BraketItem,a)})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var o=r(13),i=r(7),s=r(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:o.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.getProperty(\"open\"),a=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return s.default.fenced(this.factory.configuration,r,e,a);var n={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},o=this.create(\"token\",\"mo\",n,r);n.texClass=i.TEXCLASS.CLOSE;var c=this.create(\"token\",\"mo\",n,a);return this.create(\"node\",\"mrow\",[o,e,c],{open:r,close:a,texClass:i.TEXCLASS.INNER})},e}(o.BaseItem);e.BraketItem=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(41);new a.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},n.default),new a.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(8),n=r(7),o=r(2),i={};i.Macro=a.default.Macro,i.Braket=function(t,e,r,a,n,i){var s=t.GetNext();if(\"\"===s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var c=!0;\"{\"===s&&(t.i++,c=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:a,stretchy:n,single:c}))},i.Bar=function(t,e){var r=\"|\"===e?\"|\":\"\\u2225\",a=t.stack.Top();if(\"braket\"!==a.kind||a.getProperty(\"barcount\")>=a.getProperty(\"barmax\")){var o=t.create(\"token\",\"mo\",{texClass:n.TEXCLASS.ORD,stretchy:!1},r);t.Push(o)}else{if(\"|\"===r&&\"|\"===t.GetNext()&&(t.i++,r=\"\\u2225\"),a.getProperty(\"stretchy\")){var i=t.create(\"node\",\"TeXAtom\",[],{texClass:n.TEXCLASS.CLOSE});t.Push(i),a.setProperty(\"barcount\",a.getProperty(\"barcount\")+1),i=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),t.Push(i),i=t.create(\"node\",\"TeXAtom\",[],{texClass:n.TEXCLASS.OPEN}),t.Push(i)}else{var s=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);t.Push(s)}}},e.default=i},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var n=r(0),o=r(43),i=r(18);r(45),e.BussproofsConfiguration=n.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(a={},a[o.ProofTreeItem.prototype.kind]=o.ProofTreeItem,a),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var o=r(2),i=r(13),s=r(44),c=r(18),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new s.default(e.factory,{},!0),e}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return c.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),i.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var a=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[a,e],{})},e}(i.BaseItem);e.ProofTreeItem=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.Stack.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(46),n=r(9),o=r(1);new o.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},a.default),new o.EnvironmentMap(\"Bussproofs-environments\",n.default.environment,{prooftree:[\"Prooftree\",null,!1]},a.default)},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(2),i=r(5),s=r(3),c=r(18),l={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=u(t,t.GetArgument(e));c.setProperty(a,\"axiom\",!0),r.Push(a)}},u=function(t,e){var r=s.default.internalMath(t,s.default.trimSpaces(e),0);if(!r[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var a=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),o=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",n([a],r,[o]))};function d(t,e,r,a,n,o,i){var s,l,u,d,p=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),f=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",r,{})],{}),m=t.create(\"node\",\"mtable\",i?[f,p]:[p,f],{align:\"top 2\",rowlines:o,framespacing:\"0 0\"});if(c.setProperty(m,\"inferenceRule\",i?\"up\":\"down\"),a&&(s=t.create(\"node\",\"mpadded\",[a],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),c.setProperty(s,\"prooflabel\",\"left\")),n&&(l=t.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),c.setProperty(l,\"prooflabel\",\"right\")),a&&n)u=[s,m,l],d=\"both\";else if(a)u=[s,m],d=\"left\";else{if(!n)return m;u=[m,l],d=\"right\"}return m=t.create(\"node\",\"mrow\",u),c.setProperty(m,\"labelledRule\",d),m}function p(t,e){if(\"$\"!==t.GetNext())throw new o.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var r=t.GetUpTo(e,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new o.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var n=a(r.split(\"\\\\fCenter\"),2),s=n[0],l=n[1],u=new i.default(s,t.stack.env,t.configuration).mml(),d=new i.default(l,t.stack.env,t.configuration).mml(),p=new i.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),f=t.create(\"node\",\"mtd\",[u],{}),m=t.create(\"node\",\"mtd\",[p],{}),h=t.create(\"node\",\"mtd\",[d],{}),g=t.create(\"node\",\"mtr\",[f,m,h],{}),v=t.create(\"node\",\"mtable\",[g],{columnspacing:\".5ex\",columnalign:\"center 2\"});return c.setProperty(v,\"sequent\",!0),t.configuration.addNode(\"sequent\",g),v}l.Inference=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(a.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=a.getProperty(\"rootAtTop\"),i=1!==r||a.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[a.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var l=t.create(\"node\",\"mtr\",s,{}),p=t.create(\"node\",\"mtable\",[l],{framespacing:\"0 0\"}),f=u(t,t.GetArgument(e)),m=a.getProperty(\"currentLine\");m!==a.getProperty(\"line\")&&a.setProperty(\"currentLine\",a.getProperty(\"line\"));var h=d(t,p,[f],a.getProperty(\"left\"),a.getProperty(\"right\"),m,n);a.setProperty(\"left\",null),a.setProperty(\"right\",null),c.setProperty(h,\"inference\",i),t.configuration.addNode(\"inference\",h),a.Push(h)},l.Label=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=s.default.internalMath(t,t.GetArgument(e),0),i=n.length>1?t.create(\"node\",\"mrow\",n,{}):n[0];a.setProperty(r,i)},l.SetLine=function(t,e,r,a){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"currentLine\",r),a&&n.setProperty(\"line\",r)},l.RootAtTop=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");a.setProperty(\"rootAtTop\",r)},l.AxiomF=function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=p(t,e);c.setProperty(a,\"axiom\",!0),r.Push(a)},l.FCenter=function(t,e){},l.InferenceF=function(t,e,r){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(a.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=a.getProperty(\"rootAtTop\"),i=1!==r||a.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[a.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var l=t.create(\"node\",\"mtr\",s,{}),u=t.create(\"node\",\"mtable\",[l],{framespacing:\"0 0\"}),f=p(t,e),m=a.getProperty(\"currentLine\");m!==a.getProperty(\"line\")&&a.setProperty(\"currentLine\",a.getProperty(\"line\"));var h=d(t,u,[f],a.getProperty(\"left\"),a.getProperty(\"right\"),m,n);a.setProperty(\"left\",null),a.setProperty(\"right\",null),c.setProperty(h,\"inference\",i),t.configuration.addNode(\"inference\",h),a.Push(h)},e.default=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var a=r(0),n=r(6),o=r(1),i=r(3),s=r(24);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,r){var a=t.GetBrackets(e,\"\"),n=t.ParseArg(e),o=i.default.keyvalOptions(a,s.ENCLOSE_OPTIONS);o.notation=r,t.Push(t.create(\"node\",\"menclose\",[n],o))},e.CancelMethods.CancelTo=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.ParseArg(e),o=t.ParseArg(e),c=i.default.keyvalOptions(r,s.ENCLOSE_OPTIONS);c.notation=[n.TexConstant.Notation.UPDIAGONALSTRIKE,n.TexConstant.Notation.UPDIAGONALARROW,n.TexConstant.Notation.NORTHEASTARROW].join(\" \"),a=t.create(\"node\",\"mpadded\",[a],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[o],c),a]))},new o.CommandMap(\"cancel\",{cancel:[\"Cancel\",n.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",n.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",n.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+n.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=a.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var a=r(1),n=r(0),o=r(49),i=r(50);new a.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},o.ColorMethods);e.ColorConfiguration=n.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new i.ColorModel})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var a=r(4),n=r(3);function o(t){var e=\"+\"+t,r=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+r,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.GetArgument(e),n=t.configuration.packageData.get(\"color\").model.getColor(r,a),o=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:n}});t.stack.env.color=n,t.Push(o)},e.ColorMethods.TextColor=function(t,e){var r=t.GetBrackets(e,\"\"),a=t.GetArgument(e),n=t.configuration.packageData.get(\"color\").model.getColor(r,a),o=t.stack.env.color;t.stack.env.color=n;var i=t.ParseArg(e);o?t.stack.env.color=o:delete t.stack.env.color;var s=t.create(\"node\",\"mstyle\",[i],{mathcolor:n});t.Push(s)},e.ColorMethods.DefineColor=function(t,e){var r=t.GetArgument(e),a=t.GetArgument(e),n=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(a,r,n)},e.ColorMethods.ColorBox=function(t,e){var r=t.GetArgument(e),i=n.default.internalMath(t,t.GetArgument(e)),s=t.configuration.packageData.get(\"color\").model,c=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",r)});a.default.setProperties(c,o(t.options.color.padding)),t.Push(c)},e.ColorMethods.FColorBox=function(t,e){var r=t.GetArgument(e),i=t.GetArgument(e),s=n.default.internalMath(t,t.GetArgument(e)),c=t.options.color,l=t.configuration.packageData.get(\"color\").model,u=t.create(\"node\",\"mpadded\",s,{mathbackground:l.getColor(\"named\",i),style:\"border: \"+c.borderWidth+\" solid \"+l.getColor(\"named\",r)});a.default.setProperties(u,o(c.padding)),t.Push(u)}},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var n=r(2),o=r(51),i=new Map,s=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(i.has(t))return i.get(t)(e);throw new n.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):o.COLORS.has(t)?o.COLORS.get(t):t},t.prototype.defineColor=function(t,e,r){var a=this.normalizeColor(t,r);this.userColors.set(e,a)},t}();e.ColorModel=s,i.set(\"rgb\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var s=a(o),c=s.next();!c.done;c=s.next()){var l=c.value;if(!l.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var u=parseFloat(l);if(u<0||u>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var d=Math.floor(255*u).toString(16);d.length<2&&(d=\"0\"+d),i+=d}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"RGB\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var s=a(o),c=s.next();!c.done;c=s.next()){var l=c.value;if(!l.match(/^\\d+$/))throw new n.default(\"InvalidNumber\",\"Invalid number\");var u=parseInt(l);if(u>255)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var d=u.toString(16);d.length<2&&(d=\"0\"+d),i+=d}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var r=Math.floor(255*e).toString(16);return r.length<2&&(r=\"0\"+r),\"#\"+r+r+r}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var a=r(1),n=r(0);e.ColorV2Methods={Color:function(t,e){var r=t.GetArgument(e),a=t.stack.env.color;t.stack.env.color=r;var n=t.ParseArg(e);a?t.stack.env.color=a:delete t.stack.env.color;var o=t.create(\"node\",\"mstyle\",[n],{mathcolor:r});t.Push(o)}},new a.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var n=r(0),o=r(10),i=r(1),s=r(12),c=r(25);e.ConfigMacrosConfiguration=n.Configuration.create(\"configmacros\",{init:function(t){new i.CommandMap(\"configmacros-map\",{},{}),t.append(n.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,n,o=e.parseOptions.handlers.retrieve(\"configmacros-map\"),i=e.parseOptions.options.macros;try{for(var l=a(Object.keys(i)),u=l.next();!u.done;u=l.next()){var d=u.value,p=\"string\"==typeof i[d]?[i[d]]:i[d],f=Array.isArray(p[2])?new s.Macro(d,c.default.MacroWithTemplate,p.slice(0,2).concat(p[2])):new s.Macro(d,c.default.Macro,p);o.add(d,f)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}},options:{macros:o.expandable({})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var a=r(0),n=r(1),o=r(11),i=r(19),s=r(26),c=r(2);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=o.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,r){var a=t.GetArgument(r),n=t.GetArgument(r),o=t.GetArgument(r);if(!a.match(/^\\\\([a-z]+|.)$/i))throw new c.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",r);if(!n.match(/^(\\d+),(\\d+)$/))throw new c.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",r);if(!o.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new c.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",r);a=a.substr(1);var s=n.split(\",\");i.default.addMacro(t,a,e.ExtpfeilMethods.xArrow,[parseInt(o),parseInt(s[0]),parseInt(s[1])])},new n.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=a.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){s.NewcommandConfiguration.init(t)}})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var o=r(2),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new o.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(13).BaseItem);e.BeginEnvItem=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(25);new(r(1).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var a=r(0),n=r(1),o=r(58);new n.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=a.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(4),n={Href:function(t,e){var r=t.GetArgument(e),n=o(t,e);a.default.setAttribute(n,\"href\",r),t.Push(n)},Class:function(t,e){var r=t.GetArgument(e),n=o(t,e),i=a.default.getAttribute(n,\"class\");i&&(r=i+\" \"+r),a.default.setAttribute(n,\"class\",r),t.Push(n)},Style:function(t,e){var r=t.GetArgument(e),n=o(t,e),i=a.default.getAttribute(n,\"style\");i&&(\";\"!==r.charAt(r.length-1)&&(r+=\";\"),r=i+\" \"+r),a.default.setAttribute(n,\"style\",r),t.Push(n)},Id:function(t,e){var r=t.GetArgument(e),n=o(t,e);a.default.setAttribute(n,\"id\",r),t.Push(n)}},o=function(t,e){var r=t.ParseArg(e);if(!a.default.isInferred(r))return r;var n=a.default.getChildren(r);if(1===n.length)return n[0];var o=t.create(\"node\",\"mrow\");return a.default.copyChildren(r,o),a.default.copyAttributes(r,o),o};e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var a=r(0),n=r(1),o=r(2),i=r(8),s=r(11),c=r(60),l={};l.Macro=i.default.Macro,l.xArrow=s.AmsMethods.xArrow,l.Machine=function(t,e,r){try{var a=t.GetArgument(e),n=c.mhchemParser.go(a,r),i=c.texify.go(n);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new o.default(t[0],t[1],t.slice(2))}},new n.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},l),e.MhchemConfiguration=a.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var r,n=\"0\",o={};o.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,s=[];;){r!==t?(i=10,r=t):i--;var c=a.stateMachines[e],l=c.transitions[n]||c.transitions[\"*\"];t:for(var u=0;u<l.length;u++){var d=a.patterns.match_(l[u].pattern,t);if(d){for(var p=l[u].task,f=0;f<p.action_.length;f++){var m;if(c.actions[p.action_[f].type_])m=c.actions[p.action_[f].type_](o,d.match_,p.action_[f].option);else{if(!a.actions[p.action_[f].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+p.action_[f].type_+\")\"];m=a.actions[p.action_[f].type_](o,d.match_,p.action_[f].option)}a.concatArray(s,m)}if(n=p.nextState||n,!(t.length>0))return s;if(p.revisit||(t=d.remainder),!p.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var r=0;r<e.length;r++)t.push(e[r]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=a.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var r=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return r?{match_:r[0],remainder:t.substr(r[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return a.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return a.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return a.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return a.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return a.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return a.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return a.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return a.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return a.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return a.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return a.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var r=a.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return r&&(e=r.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,r,a,n,o,i,s,c,l){var u=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var r=t.match(e);return r?r[0]:null},d=u(t,e);if(null===d)return null;if(t=t.substr(d.length),null===(d=u(t,r)))return null;var p=function(t,e,r){for(var a=0;e<t.length;){var n=t.charAt(e),o=u(t.substr(e),r);if(null!==o&&0===a)return{endMatchBegin:e,endMatchEnd:e+o.length};if(\"{\"===n)a++;else if(\"}\"===n){if(0===a)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];a--}e++}return null}(t,d.length,a||n);if(null===p)return null;var f=t.substring(0,a?p.endMatchEnd:p.endMatchBegin);if(o||i){var m=this.findObserveGroups(t.substr(p.endMatchEnd),o,i,s,c);if(null===m)return null;var h=[f,m.match_];return{match_:l?h.join(\"\"):h,remainder:m.remainder}}return{match_:f,remainder:t.substr(p.endMatchEnd)}},match_:function(t,e){var r=a.patterns.patterns[t];if(void 0===r)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof r)return a.patterns.patterns[t](e);var n=e.match(r);return n?{match_:n[2]?[n[1],n[2]]:n[1]?n[1]:n[0],remainder:e.substr(n[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,r){return{type_:r}},\"insert+p1\":function(t,e,r){return{type_:r,p1:e}},\"insert+p1+p2\":function(t,e,r){return{type_:r,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return a.go(e,\"text\")},\"{text}\":function(t,e){var r=[\"{\"];return a.concatArray(r,a.go(e,\"text\")),r.push(\"}\"),r},\"tex-math\":function(t,e){return a.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return a.go(e,\"tex-math tight\")},bond:function(t,e,r){return{type_:\"bond\",kind_:r||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return a.go(e)},\"1/2\":function(t,e){var r=[];e.match(/^[+\\-]/)&&(r.push(e.substr(0,1)),e=e.substr(1));var a=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return a[1]=a[1].replace(/\\$/g,\"\"),r.push({type_:\"frac\",p1:a[1],p2:a[2]}),a[3]&&(a[3]=a[3].replace(/\\$/g,\"\"),r.push({type_:\"tex-math\",p1:a[3]})),r},\"9,9\":function(t,e){return a.go(e,\"9,9\")}},createTransitions:function(t){var e,r,a,n,o={};for(e in t)for(r in t[e])for(a=r.split(\"|\"),t[e][r].stateArray=a,n=0;n<a.length;n++)o[a[n]]=[];for(e in t)for(r in t[e])for(a=t[e][r].stateArray||[],n=0;n<a.length;n++){var i=t[e][r];if(i.action_){i.action_=[].concat(i.action_);for(var s=0;s<i.action_.length;s++)\"string\"==typeof i.action_[s]&&(i.action_[s]={type_:i.action_[s]})}else i.action_=[];for(var c=e.split(\"|\"),l=0;l<c.length;l++)if(\"*\"===a[n])for(var u in o)o[u].push({pattern:c[l],task:i});else o[a[n]].push({pattern:c[l],task:i})}return o},stateMachines:{}};a.stateMachines={ce:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var r;if((t.d||\"\").match(/^[0-9]+$/)){var n=t.d;t.d=void 0,r=this.output(t),t.b=n}else r=this.output(t);return a.actions[\"o=\"](t,e),r},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var r=[];return a.concatArray(r,this.output(t)),a.concatArray(r,a.actions.bond(t,e,\"-\")),r}t.d=e},\"- after o/d\":function(t,e,r){var n=a.patterns.match_(\"orbital\",t.o||\"\"),o=a.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=a.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),s=a.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),c=\"-\"===e&&(n&&\"\"===n.remainder||o||i||s);!c||t.a||t.b||t.p||t.d||t.q||n||!i||(t.o=\"$\"+t.o+\"$\");var l=[];return c?(a.concatArray(l,this.output(t)),l.push({type_:\"hyphen\"})):(n=a.patterns.match_(\"digits\",t.d||\"\"),r&&n&&\"\"===n.remainder?(a.concatArray(l,a.actions[\"d=\"](t,e)),a.concatArray(l,this.output(t))):(a.concatArray(l,this.output(t)),a.concatArray(l,a.actions.bond(t,e,\"-\")))),l},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:a.go(e,\"o\")}},comma:function(t,e){var r=e.replace(/\\s*$/,\"\");return r!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:r}:{type_:\"comma enumeration M\",p1:r}},output:function(t,e,r){var n,o,i;t.r?(o=\"M\"===t.rdt?a.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:a.go(t.rd),i=\"M\"===t.rqt?a.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:a.go(t.rq),n={type_:\"arrow\",r:t.r,rd:o,rq:i}):(n=[],(t.a||t.b||t.p||t.o||t.q||t.d||r)&&(t.sb&&n.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===r?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&a.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),n.push({type_:\"chemfive\",a:a.go(t.a,\"a\"),b:a.go(t.b,\"bd\"),p:a.go(t.p,\"pq\"),o:a.go(t.o,\"o\"),q:a.go(t.q,\"pq\"),d:a.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var s in t)\"parenthesisLevel\"!==s&&\"beginsWithBond\"!==s&&delete t[s];return n},\"oxidation-output\":function(t,e){var r=[\"{\"];return a.concatArray(r,a.go(e,\"oxidation\")),r.push(\"}\"),r},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:a.go(e[0]),p2:a.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:a.go(e[0]),p2:a.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:a.go(e[0]),p2:a.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:a.go(e[0]),p2:a.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}}}},a:{transitions:a.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:a.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var r in t)delete t[r];return e}}}},pq:{transitions:a.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:a.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1],\"pq\")}}}},bd:{transitions:a.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:a.go(e[1],\"bd\")}}}},oxidation:{transitions:a.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"tex-math tight\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"9,9\":{transitions:a.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),e[1]&&(a.concatArray(r,a.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?a.concatArray(r,a.go(e[2],\"pu-9,9\")):r.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?r.push({type_:\"cdot\"}):r.push({type_:\"times\"}))),e[3]&&r.push(\"10^{\"+e[5]+\"}\"),r},\"number^\":function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),a.concatArray(r,a.go(e[1],\"pu-9,9\")),r.push(\"^{\"+e[2]+\"}\"),r},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,r=a.patterns.match_(\"{(...)}\",t.d||\"\");r&&\"\"===r.remainder&&(t.d=r.match_);var n=a.patterns.match_(\"{(...)}\",t.q||\"\");if(n&&\"\"===n.remainder&&(t.q=n.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var o={d:a.go(t.d,\"pu\"),q:a.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:o.d,p2:o.q}:(e=o.d,o.d.length>1||o.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),a.concatArray(e,o.q))}else e=a.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:a.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var r=a.patterns.match_(\"{(...)}\",t.rm||\"\");e=r&&\"\"===r.remainder?a.go(r.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var n in t)delete t[n];return e}}},\"pu-9,9\":{transitions:a.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var r=t.text_.length%3;0===r&&(r=3);for(var a=t.text_.length-3;a>0;a-=3)e.push(t.text_.substr(a,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,r)),e.reverse()}else e.push(t.text_);for(var n in t)delete t[n];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var r=t.text_.length-3,a=0;a<r;a+=3)e.push(t.text_.substr(a,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(a))}else e.push(t.text_);for(var n in t)delete t[n];return e}}}};var n={go:function(t,e){if(!t)return\"\";for(var r=\"\",a=!1,o=0;o<t.length;o++){var i=t[o];\"string\"==typeof i?r+=i:(r+=n._go2(i),\"1st-level escape\"===i.type_&&(a=!0))}return e||a||!r||(r=\"{\"+r+\"}\"),r},_goInner:function(t){return t?n.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var r={a:n._goInner(t.a),b:n._goInner(t.b),p:n._goInner(t.p),o:n._goInner(t.o),q:n._goInner(t.q),d:n._goInner(t.d)};r.a&&(r.a.match(/^[+\\-]/)&&(r.a=\"{\"+r.a+\"}\"),e+=r.a+\"\\\\,\"),(r.b||r.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(r.b||\"\")+\"}}_{\\\\hphantom{\"+(r.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(r.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(r.p||\"\")+\"}}}\"),r.o&&(r.o.match(/^[+\\-]/)&&(r.o=\"{\"+r.o+\"}\"),e+=r.o),\"kv\"===t.dType?((r.d||r.q)&&(e+=\"{\\\\vphantom{X}}\"),r.d&&(e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):\"oxidation\"===t.dType?(r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):(r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\"),r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+n._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+n._goInner(t.p1);break;case\"bond\":if(!(e=n._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var a=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+a+\"}{\"+a+\"}{\"+a+\"}{\"+a+\"}\";break;case\"pu-frac\":var o=\"\\\\frac{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+o+\"}{\"+o+\"}{\"+o+\"}{\"+o+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+n._goInner(t.p1)+\"}{\"+n._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+n._goInner(t.p1)+\"}_{\"+n._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+n._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:n._goInner(t.rd),rq:n._goInner(t.rq)},s=n._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(s=\"\\\\long\"+s,i.rd&&(s=\"\\\\overset{\"+i.rd+\"}{\"+s+\"}\"),i.rq&&(s=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+s+\"}\"),s=\" {}\\\\mathrel{\"+s+\"}{} \"):(i.rq&&(s+=\"[{\"+i.rq+\"}]\"),s=\" {}\\\\mathrel{\\\\x\"+(s+=\"{\"+i.rd+\"}\")+\"}{} \"):s=\" {}\\\\mathrel{\\\\long\"+s+\"}{} \",e=s;break;case\"operator\":e=n._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function o(t){}function i(t){}e.mhchemParser=a,e.texify=n,e.assertNever=o,e.assertString=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var a=r(0);e.NoErrorsConfiguration=a.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,r,a){var n=t.create(\"token\",\"mtext\",{},a.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e,title:e})}}})},function(t,e,r){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var n=r(0);e.NoUndefinedConfiguration=n.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,n,o=t.create(\"text\",\"\\\\\"+e),i=t.options.noundefined||{},s={};try{for(var c=a([\"color\",\"background\",\"size\"]),l=c.next();!l.done;l=c.next()){var u=l.value;i[u]&&(s[\"math\"+u]=i[u])}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,o))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var n=r(0),o=r(64);r(65),e.PhysicsConfiguration=n.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(a={},a[o.AutoOpen.prototype.kind]=o.AutoOpen,a)})},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var o=r(13),i=r(3),s=r(5),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,r=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var a=t.prototype.toMml.call(this),n=e.create(\"node\",\"mpadded\",[a],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[n]))}r&&this.Push(new s.default(r,e.stack.env,e.configuration).mml());var o=t.prototype.toMml.call(this);return i.default.fenced(this.factory.configuration,this.getProperty(\"open\"),o,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var r=e.getProperty(\"autoclose\");return r&&r===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(o.BaseItem);e.AutoOpen=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(66),o=r(6),i=r(9),s=r(7);new a.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",o.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},n.default),new a.CharacterMap(\"Physics-vector-chars\",i.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:o.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:o.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:o.TexConstant.Variant.NORMAL}]}),new a.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},n.default),new a.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},n.default),new a.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},n.default),new a.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},n.default),new a.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},n.default),new a.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},n.default),new a.EnvironmentMap(\"Physics-aux-envs\",i.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},n.default),new a.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},n.default)},function(t,e,r){\"use strict\";var a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(8),o=r(5),i=r(2),s=r(7),c=r(3),l=r(4),u=r(23),d={},p={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},f=/^(b|B)i(g{1,2})$/;d.Quantity=function(t,e,r,a,n,u,d){void 0===r&&(r=\"(\"),void 0===a&&(a=\")\"),void 0===n&&(n=!1),void 0===u&&(u=\"\"),void 0===d&&(d=\"\");var m=!!n&&t.GetStar(),h=t.GetNext(),g=t.i,v=null;if(\"\\\\\"===h){if(t.i++,!(v=t.GetCS()).match(f)){var y=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,r,y,a)),void(t.i=g)}h=t.GetNext()}var x=p[h];if(n&&\"{\"!==h)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!x){y=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,r,y,a)),void(t.i=g)}if(u){var b=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);d&&l.default.setAttribute(b,\"mathvariant\",d),t.Push(t.itemFactory.create(\"fn\",b))}if(\"{\"===h){var _=t.GetArgument(e);return h=n?r:\"\\\\{\",x=n?a:\"\\\\}\",_=m?h+\" \"+_+\" \"+x:v?\"\\\\\"+v+\"l\"+h+\" \"+_+\" \\\\\"+v+\"r\"+x:\"\\\\left\"+h+\" \"+_+\" \\\\right\"+x,void t.Push(new o.default(_,t.stack.env,t.configuration).mml())}n&&(h=r,x=a),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:h,close:x,big:v}))},d.Eval=function(t,e){var r=t.GetStar(),a=t.GetNext();if(\"{\"!==a){if(\"(\"===a||\"[\"===a)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:a,close:\"|\",smash:r,right:\"\\\\vphantom{\\\\int}\"}));throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var n=t.GetArgument(e),o=\"\\\\left. \"+(r?\"\\\\smash{\"+n+\"}\":n)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+o+t.string.slice(t.i)},d.Commutator=function(t,e,r,a){void 0===r&&(r=\"[\"),void 0===a&&(a=\"]\");var n=t.GetStar(),s=t.GetNext(),c=null;if(\"\\\\\"===s){if(t.i++,!(c=t.GetCS()).match(f))throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=t.GetArgument(e)+\",\"+t.GetArgument(e);l=n?r+\" \"+l+\" \"+a:c?\"\\\\\"+c+\"l\"+r+\" \"+l+\" \\\\\"+c+\"r\"+a:\"\\\\left\"+r+\" \"+l+\" \\\\right\"+a,t.Push(new o.default(l,t.stack.env,t.configuration).mml())};var m=[65,90],h=[97,122],g=[913,937],v=[945,969],y=[48,57];function x(t,e){return t>=e[0]&&t<=e[1]}function b(t,e,r,a){var n=t.configuration.parser,o=u.NodeFactory.createToken(t,e,r,a),i=a.codePointAt(0);return 1===a.length&&!n.stack.env.font&&n.stack.env.vectorFont&&(x(i,m)||x(i,h)||x(i,g)||x(i,y)||x(i,v)&&n.stack.env.vectorStar||l.default.getAttribute(o,\"accent\"))&&l.default.setAttribute(o,\"mathvariant\",n.stack.env.vectorFont),o}d.VectorBold=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=t.configuration.nodeFactory.get(\"token\"),i=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",b),t.stack.env.vectorFont=r?\"bold-italic\":\"bold\",t.stack.env.vectorStar=r;var s=new o.default(a,t.stack.env,t.configuration).mml();i&&(t.stack.env.font=i),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",n),t.Push(s)},d.StarMacro=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];var o=t.GetStar(),s=[];if(r)for(var l=s.length;l<r;l++)s.push(t.GetArgument(e));var u=a.join(o?\"*\":\"\");if(u=c.default.substituteArgs(t,s,u),t.string=c.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var _=function(t,e,r,a,n){var i=new o.default(a,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,i));var s=t.GetNext(),c=p[s];if(c){var l=-1!==n.indexOf(s);if(\"{\"===s){var u=(l?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(r)+\" \"+(l?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}l&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:c})))}};function M(t,e,r){var n=a(t,3),o=n[0],i=n[1],s=n[2];return e&&r?\"\\\\left\\\\langle{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+o+\"}\\\\vert{\"+i+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+o+\"}\\\\right\\\\vert{\"+i+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}d.OperatorApplication=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];_(t,\"fn\",e,r,a)},d.VectorOperator=function(t,e,r){for(var a=[],n=3;n<arguments.length;n++)a[n-3]=arguments[n];_(t,\"mml\",e,r,a)},d.Expression=function(t,e,r,a){void 0===r&&(r=!0),void 0===a&&(a=\"\"),a=a||e.slice(1);var n=r?t.GetBrackets(e):null,i=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},a);if(n){var c=new o.default(n,t.stack.env,t.configuration).mml();i=t.create(\"node\",\"msup\",[i,c])}t.Push(t.itemFactory.create(\"fn\",i)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},d.Qqtext=function(t,e,r){var a=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(r||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+a+t.string.slice(t.i)},d.Differential=function(t,e,r){var a=t.GetBrackets(e),n=null!=a?\"^{\"+a+\"}\":\" \",i=\"(\"===t.GetNext(),c=\"{\"===t.GetNext(),l=r+n;if(i||c)if(c){l+=t.GetArgument(e);u=new o.default(l,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new o.default(l,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{l+=t.GetArgument(e,!0)||\"\";var u=new o.default(l,t.stack.env,t.configuration).mml();t.Push(u)}},d.Derivative=function(t,e,r,a){var n=t.GetStar(),i=t.GetBrackets(e),s=1,c=[];for(c.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<r;)c.push(t.GetArgument(e)),s++;var l=!1,u=\" \",d=\" \";r>2&&c.length>2?(u=\"^{\"+(c.length-1)+\"}\",l=!0):null!=i&&(r>2&&c.length>1&&(l=!0),d=u=\"^{\"+i+\"}\");for(var p=n?\"\\\\flatfrac\":\"\\\\frac\",f=c.length>1?c[0]:\"\",m=c.length>1?c[1]:c[0],h=\"\",g=2,v=void 0;v=c[g];g++)h+=a+\" \"+v;var y=p+\"{\"+a+u+f+\"}{\"+a+\" \"+m+d+\" \"+h+\"}\";t.Push(new o.default(y,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:l})))},d.Bra=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=\"\",i=!1,s=!1;if(\"\\\\\"===t.GetNext()){var c=t.i;t.i++;var l=t.GetCS(),u=t.lookup(\"macro\",l);u&&\"ket\"===u.symbol?(i=!0,c=t.i,s=t.GetStar(),\"{\"===t.GetNext()?n=t.GetArgument(l,!0):(t.i=c,s=!1)):t.i=c}var d=\"\";d=i?r||s?\"\\\\langle{\"+a+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":r||s?\"\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\langle{\"+a+\"}\\\\right\\\\vert{\"+n+\"}\",t.Push(new o.default(d,t.stack.env,t.configuration).mml())},d.Ket=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=r?\"\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+a+\"}\\\\right\\\\rangle\";t.Push(new o.default(n,t.stack.env,t.configuration).mml())},d.BraKet=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var i=\"\";i=null==n?r?\"\\\\langle{\"+a+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\":r?\"\\\\langle{\"+a+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+a+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},d.KetBra=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var i=\"\";i=null==n?r?\"\\\\vert{\"+a+\"}\\\\rangle\\\\!\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\vert{\"+a+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+a+\"}\\\\right\\\\vert\":r?\"\\\\vert{\"+a+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+a+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},d.Expectation=function(t,e){var r=t.GetStar(),a=r&&t.GetStar(),n=t.GetArgument(e),i=null;\"{\"===t.GetNext()&&(i=t.GetArgument(e,!0));var s=n&&i?M([i,n,i],r,a):r?\"\\\\langle {\"+n+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+n+\"} \\\\right\\\\rangle\";t.Push(new o.default(s,t.stack.env,t.configuration).mml())},d.MatrixElement=function(t,e){var r=t.GetStar(),a=r&&t.GetStar(),n=M([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],r,a);t.Push(new o.default(n,t.stack.env,t.configuration).mml())},d.MatrixQuantity=function(t,e,r){var a=t.GetStar(),n=r?\"smallmatrix\":\"array\",i=\"\",s=\"\",c=\"\";switch(t.GetNext()){case\"{\":i=t.GetArgument(e);break;case\"(\":t.i++,s=a?\"\\\\lgroup\":\"(\",c=a?\"\\\\rgroup\":\")\",i=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",c=\"]\",i=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",c=\"|\",i=t.GetUpTo(e,\"|\");break;default:s=\"(\",c=\")\"}var l=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+n+\"}{} \"+i+\"\\\\end{\"+n+\"}\"+(s?\"\\\\right\":\"\")+c;t.Push(new o.default(l,t.stack.env,t.configuration).mml())},d.IdentityMatrix=function(t,e){var r=t.GetArgument(e),a=parseInt(r,10);if(isNaN(a))throw new i.default(\"InvalidNumber\",\"Invalid number\");if(a<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var n=Array(a).fill(\"0\"),o=[],s=0;s<a;s++){var c=n.slice();c[s]=\"1\",o.push(c.join(\" & \"))}t.string=o.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},d.XMatrix=function(t,e){var r=t.GetStar(),a=t.GetArgument(e),n=t.GetArgument(e),o=t.GetArgument(e),s=parseInt(n,10),c=parseInt(o,10);if(isNaN(s)||isNaN(c)||c.toString()!==o||s.toString()!==n)throw new i.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,c=c<1?1:c,!r){var l=Array(c).fill(a).join(\" & \"),u=Array(s).fill(l).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var d=\"\";if(1===s&&1===c)d=a;else if(1===s){l=[];for(var p=1;p<=c;p++)l.push(a+\"_{\"+p+\"}\");d=l.join(\" & \")}else if(1===c){for(l=[],p=1;p<=s;p++)l.push(a+\"_{\"+p+\"}\");d=l.join(\"\\\\\\\\ \")}else{var f=[];for(p=1;p<=s;p++){l=[];for(var m=1;m<=c;m++)l.push(a+\"_{{\"+p+\"}{\"+m+\"}}\");f.push(l.join(\" & \"))}d=f.join(\"\\\\\\\\ \")}t.string=d+t.string.slice(t.i),t.i=0},d.PauliMatrix=function(t,e){var r=t.GetArgument(e),a=r.slice(1);switch(r[0]){case\"0\":a+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":a+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":a+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":a+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=a+t.string.slice(t.i),t.i=0},d.DiagonalMatrix=function(t,e,r){if(\"{\"===t.GetNext()){var a=t.i;t.GetArgument(e);var n=t.i;t.i=a+1;for(var o=[],i=\"\",s=t.i;s<n;){try{i=t.GetUpTo(e,\",\")}catch(e){t.i=n,o.push(t.string.slice(s,n-1));break}if(t.i>=n){o.push(t.string.slice(s,n));break}s=t.i,o.push(i)}t.string=function(t,e){for(var r=t.length,a=[],n=0;n<r;n++)a.push(Array(e?r-n:n+1).join(\"&\")+\"\\\\mqty{\"+t[n]+\"}\");return a.join(\"\\\\\\\\ \")}(o,r)+t.string.slice(n),t.i=0}},d.AutoClose=function(t,e,r){var a=t.create(\"token\",\"mo\",{stretchy:!1},e),n=t.itemFactory.create(\"mml\",a).setProperties({autoclose:e});t.Push(n)},d.Macro=n.default.Macro,d.NamedFn=n.default.NamedFn,d.Array=n.default.Array,e.default=d},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var o=r(0),i=r(17),s=0;function c(t,e){var r=e.parseOptions.options.tags;\"base\"!==r&&t.tags.hasOwnProperty(r)&&i.TagsFactory.add(r,t.tags[r]);var a=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return n(r,t),r.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},r.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},r.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},r.prototype.formatUrl=function(t,r){return e.parseOptions.options.tagformat.url(t,r)},r}(i.TagsFactory.create(e.parseOptions.options.tags).constructor),o=\"configTags-\"+ ++s;i.TagsFactory.add(o,a),e.parseOptions.options.tags=o}e.tagformatConfig=c,e.TagFormatConfiguration=o.Configuration.create(\"tagformat\",{config:[c,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,r){\"use strict\";var a;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var n=r(0),o=r(69),i=r(17),s=r(16),c=r(70),l=r(27);function u(t,e,r,a){var n=t.configuration.packageData.get(\"textmacros\");return t instanceof c.TextParser||(n.texParser=t),[new c.TextParser(e,a?{mathvariant:a}:{},n.parseOptions,r).mml()]}r(72),e.textBase=n.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var r=t.texParser,a=r.lookup(\"macro\",e);a&&a._func!==l.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),r.parse(\"macro\",[a?t:r,e])}},items:(a={},a[s.StartItem.prototype.kind]=s.StartItem,a[s.StopItem.prototype.kind]=s.StopItem,a[s.MmlItem.prototype.kind]=s.MmlItem,a[s.StyleItem.prototype.kind]=s.StyleItem,a)}),n.Configuration.create(\"textmacros\",{config:function(t,r){var a=new n.ParserConfiguration([]);a.append(e.textBase),a.init();var s=new o.default(a,[]);s.options=r.parseOptions.options,a.config(r),i.TagsFactory.addTags(a.tags),s.tags=i.TagsFactory.getDefault(),s.tags.configuration=s,s.packageData=r.parseOptions.packageData,s.packageData.set(\"textmacros\",{parseOptions:s,jax:r,texParser:null}),s.options.internalMath=u},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseOptions.default},function(t,e,r){\"use strict\";var a,n=this&&this.__extends||(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],a=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var a,n,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var c=r(5),l=r(2),u=r(3),d=r(7),p=r(4),f=r(16),m=function(t){function e(e,r,a,n){var o=t.call(this,e,r,a)||this;return o.level=n,o}return n(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=u.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof f.StopItem)return t.prototype.Push.call(this,e);e instanceof f.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof d.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,r,a=this.stack.env;try{for(var n=o([\"mathsize\",\"mathcolor\"]),i=n.next();!i.done;i=n.next()){var s=i.value;a[s]&&!t.attributes.getExplicit(s)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),p.default.setAttribute(t,s,a[s]))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,r,a=this.stack.env;if(t.isToken)try{for(var n=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),i=n.next();!i.done;i=n.next()){var s=i.value;a[s]&&!t.attributes.getExplicit(s)&&p.default.setAttribute(t,s,a[s])}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,r){return new e(this.GetArgument(t),r=Object.assign(Object.assign({},this.stack.env),r),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];throw new(l.default.bind.apply(l.default,s([void 0,t,e],r)))},e}(c.default);e.TextParser=m},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(1),n=r(6),o=r(27);new a.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new a.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",n.TexConstant.Variant.NORMAL],mit:[\"SetFont\",n.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",n.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",n.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",n.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",n.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",n.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",n.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",n.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",n.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",n.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",n.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",n.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",n.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",n.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",n.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",n.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var a=r(0),n=r(2),o=r(1),i=r(3),s=r(4),c=r(74);e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(t,e){var r=t.GetBrackets(e),a=null,o=null;r&&(r.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(a=r.replace(/ /g,\"\").split(/,/),o=t.GetBrackets(e)):o=r);var u=i.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!u.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new n.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var d=parseInt(u.match(/^x/)?\"0\"+u:u);l[d]?o||(o=l[d][2]):l[d]=[800,200,o,d],a&&(l[d][0]=Math.floor(1e3*parseFloat(a[0])),l[d][1]=Math.floor(1e3*parseFloat(a[1])));var p=t.stack.env.font,f={};o?(l[d][2]=f.fontfamily=o.replace(/'/g,\"'\"),p&&(p.match(/bold/)&&(f.fontweight=\"bold\"),p.match(/italic|-mathit/)&&(f.fontstyle=\"italic\"))):p&&(f.mathvariant=p);var m=t.create(\"token\",\"mtext\",f,c.numeric(u));s.default.setProperty(m,\"unicode\",!0),t.Push(m)},new o.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=a.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var a=r(0),n=r(6),o=r(1),i=r(2);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var r=t.GetNext(),a=++t.i;if(\"\"===r)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==r;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(a,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:n.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=a.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";r.r(e);var a=r(20),n=r(15),o=r(21),i=r(14);Object(a.combineWithMathJax)({_:{input:{tex:{AllPackages:n,autoload:{AutoloadConfiguration:o},require:{RequireConfiguration:i}}}}});var s,c=r(10);function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,a=new Array(e);r<e;r++)a[r]=t[r];return a}if(MathJax.loader&&MathJax.loader.preLoad(\"[tex]/autoload\",\"[tex]/require\"),MathJax.startup){MathJax.config.tex||(MathJax.config.tex={});var u=MathJax.config.tex.packages;MathJax.config.tex.packages=[\"autoload\",\"require\"].concat(function(t){if(Array.isArray(t))return l(t)}(s=n.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(s)||function(t,e){if(t){if(\"string\"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}(s)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),u&&Object(c.insert)(MathJax.config.tex,{packages:u})}}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/ams.js",
    "content": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=18)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var r=a(1),n=a(4),i=a(2),o=a(13),l=a(5),s=a(14),m=a(15),u=a(6);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,a,n,i,o,l){var s=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=m.default.EqnArray(t,e,a,n,i,o,l);return r.default.setArrayAlign(u,s)},e.AmsMethods.AlignAt=function(t,a,n,i){var o,s,m=a.getName(),u=\"\",c=[];if(i||(s=t.GetBrackets(\"\\\\begin{\"+m+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+m+\"}\")).match(/[^0-9]/))throw new l.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+m+\"}\");for(var d=parseInt(o,10);d>0;)u+=\"rl\",c.push(\"0em 0em\"),d--;var h=c.join(\" \");if(i)return e.AmsMethods.EqnArray(t,a,n,i,u,h);var p=e.AmsMethods.EqnArray(t,a,n,i,u,h);return r.default.setArrayAlign(p,s)},e.AmsMethods.Multline=function(t,e,a){t.Push(e),r.default.checkEqnEnv(t);var n=t.itemFactory.create(\"multline\",a,t.stack);return n.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},n},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,a){var n=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",i=r.default.trimSpaces(t.GetArgument(a));\"\\\\\"===i.charAt(0)&&(i=i.substr(1));var o=t.GetArgument(a);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(i,new s.Macro(i,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+n]))},e.AmsMethods.HandleOperatorName=function(t,e){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=r.default.trimSpaces(t.GetArgument(e));n.match(/\\\\text/)||(n=n.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+n+\"}\"+a+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var a=t.GetNext(),r=t.i;\"\\\\\"===a&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=r)},e.AmsMethods.MultiIntegral=function(t,e,a){var r=t.GetNext();if(\"\\\\\"===r){var n=t.i;r=t.GetArgument(e),t.i=n,\"\\\\limits\"===r&&(a=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+a+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+a+\"}\")}t.string=a+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,a,i,l){var s={width:\"+\"+r.default.Em((i+l)/18),lspace:r.default.Em(i/18)},m=t.GetBrackets(e),c=t.ParseArg(e),d=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(a)),h=t.create(\"node\",\"munderover\",[d]),p=t.create(\"node\",\"mpadded\",[c],s);if(n.default.setAttribute(p,\"voffset\",\".15em\"),n.default.setChild(h,h.over,p),m){var f=new o.default(m,t.stack.env,t.configuration).mml();p=t.create(\"node\",\"mpadded\",[f],s),n.default.setAttribute(p,\"voffset\",\"-.24em\"),n.default.setChild(h,h.under,p)}n.default.setProperty(h,\"subsupOK\",!0),t.Push(h)},e.AmsMethods.HandleShove=function(t,e,a){var r=t.stack.Top();if(\"multline\"!==r.kind)throw new l.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(r.Size())throw new l.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);r.setProperty(\"shove\",a)},e.AmsMethods.CFrac=function(t,e){var a=r.default.trimSpaces(t.GetBrackets(e,\"\")),s=t.GetArgument(e),m=t.GetArgument(e),u={l:i.TexConstant.Align.LEFT,r:i.TexConstant.Align.RIGHT,\"\":\"\"},c=new o.default(\"\\\\strut\\\\textstyle{\"+s+\"}\",t.stack.env,t.configuration).mml(),d=new o.default(\"\\\\strut\\\\textstyle{\"+m+\"}\",t.stack.env,t.configuration).mml(),h=t.create(\"node\",\"mfrac\",[c,d]);if(null==(a=u[a]))throw new l.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);a&&n.default.setProperties(h,{numalign:a,denomalign:a}),t.Push(h)},e.AmsMethods.Genfrac=function(t,e,a,i,o,s){null==a&&(a=t.GetDelimiterArg(e)),null==i&&(i=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==s&&(s=r.default.trimSpaces(t.GetArgument(e)));var m=t.ParseArg(e),u=t.ParseArg(e),c=t.create(\"node\",\"mfrac\",[m,u]);if(\"\"!==o&&n.default.setAttribute(c,\"linethickness\",o),(a||i)&&(n.default.setProperty(c,\"withDelims\",!0),c=r.default.fixedFence(t.configuration,a,c,i)),\"\"!==s){var d=parseInt(s,10),h=[\"D\",\"T\",\"S\",\"SS\"][d];if(null==h)throw new l.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);c=t.create(\"node\",\"mstyle\",[c]),\"D\"===h?n.default.setProperties(c,{displaystyle:!0,scriptlevel:0}):n.default.setProperties(c,{displaystyle:!1,scriptlevel:d-1})}t.Push(c)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new l.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new l.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var a=t.GetStar(),n=r.default.trimSpaces(t.GetArgument(e));t.tags.tag(n,a)},e.AmsMethods.HandleNoTag=m.default.HandleNoTag,e.AmsMethods.HandleRef=m.default.HandleRef,e.AmsMethods.Macro=m.default.Macro,e.AmsMethods.Accent=m.default.Accent,e.AmsMethods.Tilde=m.default.Tilde,e.AmsMethods.Array=m.default.Array,e.AmsMethods.Spacer=m.default.Spacer,e.AmsMethods.NamedOp=m.default.NamedOp,e.AmsMethods.EqnArray=m.default.EqnArray},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var i=a(11),o=a(1),l=a(4),s=a(5),m=a(2),u=function(t){function e(e){for(var a=[],r=1;r<arguments.length;r++)a[r-1]=arguments[r];var n=t.call(this,e)||this;return n.factory.configuration.tags.start(\"multline\",!0,a[0]),n}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new s.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,a=-1;l.default.getAttribute(l.default.getChildren(this.table[0])[0],\"columnalign\")||l.default.setAttribute(l.default.getChildren(this.table[0])[0],\"columnalign\",m.TexConstant.Align.LEFT),l.default.getAttribute(l.default.getChildren(this.table[e])[0],\"columnalign\")||l.default.setAttribute(l.default.getChildren(this.table[e])[0],\"columnalign\",m.TexConstant.Align.RIGHT);var r=this.factory.configuration.tags.getTag();if(r){a=this.arraydef.side===m.TexConstant.Align.LEFT?0:this.table.length-1;var n=this.table[a],i=this.create(\"node\",\"mlabeledtr\",[r].concat(l.default.getChildren(n)));l.default.copyAttributes(n,i),this.table[a]=i}}this.factory.configuration.tags.end()},e}(i.ArrayItem);e.MultlineItem=u},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var r,n,i=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=a(10),l=a(3),s=a(12),m=a(0);a(16);var u=a(7),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(s.AbstractTags);e.AmsTags=c;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(n={},n[l.MultlineItem.prototype.kind]=l.MultlineItem,n),tags:{ams:c},init:function(t){new u.CommandMap(m.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[m.NEW_OPS]},priority:-1}))}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=a(0),n=a(7),i=a(2),o=a(17),l=a(1),s=a(6),m=function(t){for(var e=[],a=0,r=t.length;a<r;a++)e[a]=l.default.Em(t[a]);return e.join(\" \")};new n.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:s.TEXCLASS.OP}]}),new n.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",i.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",i.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",i.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},r.AmsMethods),new n.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",m([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",m([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,m([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",m([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},r.AmsMethods),new n.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:s.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:s.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:s.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:s.TEXCLASS.CLOSE}]}),new n.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:i.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:i.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:i.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:i.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:i.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:i.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:i.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:i.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:i.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:i.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:i.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new n.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new n.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new n.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},r.AmsMethods)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,a){\"use strict\";a.r(e);var r=a(8),n=a(9),i=a(3),o=a(0);Object(r.combineWithMathJax)({_:{input:{tex:{ams:{AmsConfiguration:n,AmsItems:i,AmsMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/amscd.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=11)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(7),r=a(8),o=a(9),i=a(10),c={CD:function(e,t){e.Push(t);var a=e.itemFactory.create(\"array\"),n=e.configuration.options.amscd;return a.setProperties({minw:e.stack.env.CD_minw||n.harrowsize,minh:e.stack.env.CD_minh||n.varrowsize}),a.arraydef={columnalign:\"center\",columnspacing:n.colspace,rowspacing:n.rowspace,displaystyle:!0},a},arrow:function(e,t){var a=e.string.charAt(e.i);if(!a.match(/[><VA.|=]/))return r.Other(e,t);e.i++;var l=e.stack.Top();l.isKind(\"array\")&&!l.Size()||(c.cell(e,t),l=e.stack.Top());for(var s,u=l,d=u.table.length%2==1,m=(u.row.length+(d?0:1))%2;m;)c.cell(e,t),m--;var p={minsize:u.getProperty(\"minw\"),stretchy:!0},f={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===a);else if(\"|\"===a)s=e.create(\"token\",\"mo\",f,\"\\u2225\");else if(\"=\"===a)s=e.create(\"token\",\"mo\",p,\"=\");else{var M={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[a],h=e.GetUpTo(t+a,a),b=e.GetUpTo(t+a,a);if(\">\"===a||\"<\"===a){if(s=e.create(\"token\",\"mo\",p,M),h||(h=\"\\\\kern \"+u.getProperty(\"minw\")),h||b){var _={width:\".67em\",lspace:\".33em\"};if(s=e.create(\"node\",\"munderover\",[s]),h){var x=new n.default(h,e.stack.env,e.configuration).mml(),g=e.create(\"node\",\"mpadded\",[x],_);i.default.setAttribute(g,\"voffset\",\".1em\"),i.default.setChild(s,s.over,g)}if(b){var v=new n.default(b,e.stack.env,e.configuration).mml();i.default.setChild(s,s.under,e.create(\"node\",\"mpadded\",[v],_))}e.configuration.options.amscd.hideHorizontalLabels&&(s=e.create(\"node\",\"mpadded\",s,{depth:0,height:\".67em\"}))}}else{var C=e.create(\"token\",\"mo\",f,M);s=C,(h||b)&&(s=e.create(\"node\",\"mrow\"),h&&i.default.appendChildren(s,[new n.default(\"\\\\scriptstyle\\\\llap{\"+h+\"}\",e.stack.env,e.configuration).mml()]),C.texClass=o.TEXCLASS.ORD,i.default.appendChildren(s,[C]),b&&i.default.appendChildren(s,[new n.default(\"\\\\scriptstyle\\\\rlap{\"+b+\"}\",e.stack.env,e.configuration).mml()]))}}s&&e.Push(s),c.cell(e,t)},cell:function(e,t){var a=e.stack.Top();(a.table||[]).length%2==0&&0===(a.row||[]).length&&e.Push(e.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),e.Push(e.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:t}))},minCDarrowwidth:function(e,t){e.stack.env.CD_minw=e.GetDimen(t)},minCDarrowheight:function(e,t){e.stack.env.CD_minh=e.GetDimen(t)}};t.default=c},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AmsCdConfiguration=void 0;var n=a(3);a(4),t.AmsCdConfiguration=n.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(5),r=a(6),o=a(1);new n.EnvironmentMap(\"amscd_environment\",r.default.environment,{CD:\"CD\"},o.default),new n.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new n.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Other=MathJax._.input.tex.base.BaseConfiguration.Other,t.BaseTags=MathJax._.input.tex.base.BaseConfiguration.BaseTags,t.BaseConfiguration=MathJax._.input.tex.base.BaseConfiguration.BaseConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},function(e,t,a){\"use strict\";a.r(t);var n=a(0),r=a(2),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{amscd:{AmsCdConfiguration:r,AmsCdMethods:o}}}}}),function(e,t,a){var r,o,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,s=l.indexOf(e);s>=0&&(l[s]=t),a&&c[e]&&(Object(n.combineConfig)(c,(r={},o=t,i=c[e],o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i,r)),delete c[e])}}(\"amsCd\",\"amscd\",!0)}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/autoload.js",
    "content": "!function(e){var t={};function o(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)o.d(a,r,function(t){return e[t]}.bind(null,r));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p=\"\",o(o.s=8)}([function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,o){\"use strict\";var a=this&&this.__read||function(e,t){var o=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var a,r,n=o.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(a=n.next()).done;)i.push(a.value)}catch(e){r={error:e}}finally{try{a&&!a.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}return i},r=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,o=t&&e[t],a=0;if(o)return o.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&a>=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(t,\"__esModule\",{value:!0}),t.AutoloadConfiguration=void 0;var n=o(2),i=o(3),l=o(4),u=o(5),c=o(6),s=o(7);function p(e,t,o,n){var i,l,s,p;if(c.Package.packages.has(e.options.require.prefix+o)){var x=e.options.autoload[o],M=a(2===x.length&&Array.isArray(x[0])?x:[x,[]],2),b=M[0],h=M[1];try{for(var y=r(b),m=y.next();!m.done;m=y.next()){var _=m.value;f.remove(_)}}catch(e){i={error:e}}finally{try{m&&!m.done&&(l=y.return)&&l.call(y)}finally{if(i)throw i.error}}try{for(var g=r(h),v=g.next();!v.done;v=g.next()){var O=v.value;d.remove(O)}}catch(e){s={error:e}}finally{try{v&&!v.done&&(p=g.return)&&p.call(g)}finally{if(s)throw s.error}}e.string=(n?t:\"\\\\begin{\"+t.slice(1)+\"}\")+e.string.slice(e.i),e.i=0}u.RequireLoad(e,o)}var f=new i.CommandMap(\"autoload-macros\",{},{}),d=new i.CommandMap(\"autoload-environments\",{},{});t.AutoloadConfiguration=n.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:s.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(e,t){var o,n,i,c,s,x,M=t.parseOptions,b=M.handlers.get(\"macro\"),h=M.handlers.get(\"environment\"),y=M.options.autoload;M.packageData.set(\"autoload\",{Autoload:p});try{for(var m=r(Object.keys(y)),_=m.next();!_.done;_=m.next()){var g=_.value,v=y[g],O=a(2===v.length&&Array.isArray(v[0])?v:[v,[]],2),J=O[0],C=O[1];try{for(var P=(i=void 0,r(J)),S=P.next();!S.done;S=P.next()){var w=S.value;b.lookup(w)&&\"color\"!==w||f.add(w,new l.Macro(w,p,[g,!0]))}}catch(e){i={error:e}}finally{try{S&&!S.done&&(c=P.return)&&c.call(P)}finally{if(i)throw i.error}}try{for(var k=(s=void 0,r(C)),q=k.next();!q.done;q=k.next()){var j=q.value;h.lookup(j)||d.add(j,new l.Macro(j,p,[g,!1]))}}catch(e){s={error:e}}finally{try{q&&!q.done&&(x=k.return)&&x.call(k)}finally{if(s)throw s.error}}}}catch(e){o={error:e}}finally{try{_&&!_.done&&(n=m.return)&&n.call(m)}finally{if(o)throw o.error}}M.packageData.get(\"require\")||u.RequireConfiguration.config(e,t)},init:function(e){e.options.require||s.defaultOptions(e.options,u.RequireConfiguration.options)},priority:10})},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Symbol=MathJax._.input.tex.Symbol.Symbol,t.Macro=MathJax._.input.tex.Symbol.Macro},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.RequireLoad=MathJax._.input.tex.require.RequireConfiguration.RequireLoad,t.RequireMethods=MathJax._.input.tex.require.RequireConfiguration.RequireMethods,t.options=MathJax._.input.tex.require.RequireConfiguration.options,t.RequireConfiguration=MathJax._.input.tex.require.RequireConfiguration.RequireConfiguration},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.PackageError=MathJax._.components.package.PackageError,t.Package=MathJax._.components.package.Package},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.APPEND=MathJax._.util.Options.APPEND,t.REMOVE=MathJax._.util.Options.REMOVE,t.Expandable=MathJax._.util.Options.Expandable,t.expandable=MathJax._.util.Options.expandable,t.makeArray=MathJax._.util.Options.makeArray,t.keys=MathJax._.util.Options.keys,t.copy=MathJax._.util.Options.copy,t.insert=MathJax._.util.Options.insert,t.defaultOptions=MathJax._.util.Options.defaultOptions,t.userOptions=MathJax._.util.Options.userOptions,t.selectOptions=MathJax._.util.Options.selectOptions,t.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,t.separateOptions=MathJax._.util.Options.separateOptions},function(e,t,o){\"use strict\";o.r(t);var a=o(0),r=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{autoload:{AutoloadConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/bbox.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=5)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var o=a(2),n=a(3),i=a(4);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var a,o,n,l=t.GetBrackets(e,\"\"),c=t.ParseArg(e),p=l.split(/,/),f=0,s=p.length;f<s;f++){var b=p[f].trim(),d=b.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(d){if(a)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var M=u(d[1]+d[3]);M&&(a={height:\"+\"+M,depth:\"+\"+M,lspace:M,width:\"+\"+2*parseInt(d[1],10)+d[3]})}else if(b.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(o)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);o=b}else if(b.match(/^[-a-z]+:/i)){if(n)throw new i.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);n=r(b)}else if(\"\"!==b)throw new i.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',b)}a&&(c=t.create(\"node\",\"mpadded\",[c],a)),(o||n)&&(a={},o&&Object.assign(a,{mathbackground:o}),n&&Object.assign(a,{style:n}),c=t.create(\"node\",\"mstyle\",[c],a)),t.Push(c)};var r=function(t){return t},u=function(t){return t};new n.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=o.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{bbox:{BboxConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/boldsymbol.js",
    "content": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,a){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(a,n,function(e){return t[e]}.bind(null,n));return a},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=7)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";var a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,o=e&&t[e],a=0;if(o)return o.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var n=o(2),r=o(3),i=o(4),l=o(5),u=o(6),s={};function c(t,e,o,a){var n=u.NodeFactory.createToken(t,e,o,a);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(r.default.setProperty(n,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",n)),n}function d(t){var e,o;try{for(var n=a(t.data.getList(\"fixBold\")),l=n.next();!l.done;l=n.next()){var u=l.value;if(r.default.getProperty(u,\"fixBold\")){var c=r.default.getAttribute(u,\"mathvariant\");null==c?r.default.setAttribute(u,\"mathvariant\",i.TexConstant.Variant.BOLD):r.default.setAttribute(u,\"mathvariant\",s[c]||c),r.default.removeProperties(u,\"fixBold\")}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(o=n.return)&&o.call(n)}finally{if(e)throw e.error}}}s[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,s[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,s[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,s[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,s[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,s[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",s[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var o=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var a=t.ParseArg(e);t.stack.env.boldsymbol=o,t.Push(a)},new l.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=c,e.rewriteBoldTokens=d,e.BoldsymbolConfiguration=n.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:c},postprocessors:[d]})},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,o){\"use strict\";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{boldsymbol:{BoldsymbolConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/braket.js",
    "content": "!function(e){var t={};function r(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(a,o,function(t){return e[t]}.bind(null,o));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=12)}([function(e,t,r){\"use strict\";var a,o=this&&this.__extends||(a=function(e,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.BraketItem=void 0;var n=r(6),i=r(2),c=r(7),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:t.isKind(\"mml\")?(this.Push(t.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:n.BaseItem.fail):e.prototype.checkItem.call(this,t)},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),r=this.getProperty(\"open\"),a=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return c.default.fenced(this.factory.configuration,r,t,a);var o={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},n=this.create(\"token\",\"mo\",o,r);o.texClass=i.TEXCLASS.CLOSE;var u=this.create(\"token\",\"mo\",o,a);return this.create(\"node\",\"mrow\",[n,t,u],{open:r,close:a,texClass:i.TEXCLASS.INNER})},t}(n.BaseItem);t.BraketItem=u},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(10),o=r(2),n=r(11),i={};i.Macro=a.default.Macro,i.Braket=function(e,t,r,a,o,i){var c=e.GetNext();if(\"\"===c)throw new n.default(\"MissingArgFor\",\"Missing argument for %1\",e.currentCS);var u=!0;\"{\"===c&&(e.i++,u=!1),e.Push(e.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:a,stretchy:o,single:u}))},i.Bar=function(e,t){var r=\"|\"===t?\"|\":\"\\u2225\",a=e.stack.Top();if(\"braket\"!==a.kind||a.getProperty(\"barcount\")>=a.getProperty(\"barmax\")){var n=e.create(\"token\",\"mo\",{texClass:o.TEXCLASS.ORD,stretchy:!1},r);e.Push(n)}else{if(\"|\"===r&&\"|\"===e.GetNext()&&(e.i++,r=\"\\u2225\"),a.getProperty(\"stretchy\")){var i=e.create(\"node\",\"TeXAtom\",[],{texClass:o.TEXCLASS.CLOSE});e.Push(i),a.setProperty(\"barcount\",a.getProperty(\"barcount\")+1),i=e.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),e.Push(i),i=e.create(\"node\",\"TeXAtom\",[],{texClass:o.TEXCLASS.OPEN}),e.Push(i)}else{var c=e.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);e.Push(c)}}},t.default=i},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,r){\"use strict\";var a;Object.defineProperty(t,\"__esModule\",{value:!0}),t.BraketConfiguration=void 0;var o=r(5),n=r(0);r(8),t.BraketConfiguration=o.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(a={},a[n.BraketItem.prototype.kind]=n.BraketItem,a)})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(9),o=r(1);new a.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},o.default),new a.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},o.default)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,r){\"use strict\";r.r(t);var a=r(3),o=r(4),n=r(0),i=r(1);Object(a.combineWithMathJax)({_:{input:{tex:{braket:{BraketConfiguration:o,BraketItems:n,BraketMethods:i}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/bussproofs.js",
    "content": "!function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=15)}([function(e,t,r){\"use strict\";var o,n=this&&this.__read||function(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},a=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(t,\"__esModule\",{value:!0}),t.clearDocument=t.saveDocument=t.makeBsprAttributes=t.removeProperty=t.getProperty=t.setProperty=t.balanceRules=void 0;var i=r(10),l=r(4),u=null,f=null,s=function(e){return f.root=e,u.outputJax.getBBox(f,u).w},c=function(e){for(var t=0;e&&!i.default.isType(e,\"mtable\");){if(i.default.isType(e,\"text\"))return null;i.default.isType(e,\"mrow\")?(e=e.childNodes[0],t=0):(e=e.parent.childNodes[t],t++)}return e},d=function(e,t){return e.childNodes[\"up\"===t?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},p=function(e,t){return e.childNodes[t].childNodes[0].childNodes[0]},m=function(e){return p(e,0)},h=function(e){return p(e,e.childNodes.length-1)},y=function(e,t){return e.childNodes[\"up\"===t?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(e){for(;e&&!i.default.isType(e,\"mtd\");)e=e.parent;return e},P=function(e){return e.parent.childNodes[e.parent.childNodes.indexOf(e)+1]},g=function(e){for(;e&&null==t.getProperty(e,\"inference\");)e=e.parent;return e},b=function(e,t,r){void 0===r&&(r=!1);var o=0;if(e===t)return o;if(e!==t.parent){var n=e.childNodes,a=r?n.length-1:0;i.default.isType(n[a],\"mspace\")&&(o+=s(n[a])),e=t.parent}if(e===t)return o;var l=e.childNodes,u=r?l.length-1:0;return l[u]!==t&&(o+=s(l[u])),o},x=function(e,r){void 0===r&&(r=!1);var o=c(e),n=y(o,t.getProperty(o,\"inferenceRule\"));return b(e,o,r)+(s(o)-s(n))/2},M=function(e,r,o,n){if(void 0===n&&(n=!1),t.getProperty(r,\"inferenceRule\")||t.getProperty(r,\"labelledRule\")){var a=e.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(a,r),a.setChildren([r]),_(r,a),r=a}var u=n?r.childNodes.length-1:0,f=r.childNodes[u];i.default.isType(f,\"mspace\")?i.default.setAttribute(f,\"width\",l.default.Em(l.default.dimen2em(i.default.getAttribute(f,\"width\"))+o)):(f=e.nodeFactory.create(\"node\",\"mspace\",[],{width:l.default.Em(o)}),n?r.appendChild(f):(f.parent=r,r.childNodes.unshift(f)))},_=function(e,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(o){var n=t.getProperty(e,o);null!=n&&(t.setProperty(r,o,n),t.removeProperty(e,o))}))},w=function(e,r,o,n,a){var i=e.nodeFactory.create(\"node\",\"mspace\",[],{width:l.default.Em(a)});if(\"left\"===n){var u=r.childNodes[o].childNodes[0];i.parent=u,u.childNodes.unshift(i)}else r.childNodes[o].appendChild(i);t.setProperty(r.parent,\"sequentAdjust_\"+n,a)},T=function(e,r){for(var o=r.pop();r.length;){var a=r.pop(),i=n(C(o,a),2),l=i[0],u=i[1];t.getProperty(o.parent,\"axiom\")&&(w(e,l<0?o:a,0,\"left\",Math.abs(l)),w(e,u<0?o:a,2,\"right\",Math.abs(u))),o=a}},C=function(e,t){var r=s(e.childNodes[2]),o=s(t.childNodes[2]);return[s(e.childNodes[0])-s(t.childNodes[0]),r-o]};t.balanceRules=function(e){var r,o;f=new e.document.options.MathItem(\"\",null,e.math.display);var n=e.data;!function(e){var r=e.nodeLists.sequent;if(r)for(var o=r.length-1,n=void 0;n=r[o];o--)if(t.getProperty(n,\"sequentProcessed\"))t.removeProperty(n,\"sequentProcessed\");else{var a=[],i=g(n);if(1===t.getProperty(i,\"inference\")){for(a.push(n);1===t.getProperty(i,\"inference\");){i=c(i);var l=m(d(i,t.getProperty(i,\"inferenceRule\"))),u=t.getProperty(l,\"inferenceRule\")?y(l,t.getProperty(l,\"inferenceRule\")):l;t.getProperty(u,\"sequent\")&&(n=u.childNodes[0],a.push(n),t.setProperty(n,\"sequentProcessed\",!0)),i=l}T(e,a)}}}(n);var i=n.nodeLists.inference||[];try{for(var l=a(i),u=l.next();!u.done;u=l.next()){var s=u.value,p=t.getProperty(s,\"proof\"),_=c(s),w=d(_,t.getProperty(_,\"inferenceRule\")),C=m(w);if(t.getProperty(C,\"inference\")){var I=x(C);if(I){M(n,C,-I);var S=b(s,_,!1);M(n,s,I-S)}}var N=h(w);if(null!=t.getProperty(N,\"inference\")){var A=x(N,!0);M(n,N,-A,!0);var j=b(s,_,!0),L=t.getProperty(s,\"maxAdjust\");null!=L&&(A=Math.max(A,L));var k=void 0;if(!p&&(k=v(s))){var O=P(k);if(O){var J=n.nodeFactory.create(\"node\",\"mspace\",[],{width:A-j+\"em\"});O.appendChild(J),s.removeProperty(\"maxAdjust\")}else{var B=g(k);B&&(A=t.getProperty(B,\"maxAdjust\")?Math.max(t.getProperty(B,\"maxAdjust\"),A):A,t.setProperty(B,\"maxAdjust\",A))}}else M(n,t.getProperty(s,\"proof\")?s:s.parent,A-j,!0)}}}catch(e){r={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}};var I=((o={}).bspr_maxAdjust=!0,o);t.setProperty=function(e,t,r){i.default.setProperty(e,\"bspr_\"+t,r)},t.getProperty=function(e,t){return i.default.getProperty(e,\"bspr_\"+t)},t.removeProperty=function(e,t){e.removeProperty(\"bspr_\"+t)},t.makeBsprAttributes=function(e){e.data.root.walkTree((function(e,t){var r=[];e.getPropertyNames().forEach((function(t){!I[t]&&t.match(RegExp(\"^bspr_\"))&&r.push(t+\":\"+e.getProperty(t))})),r.length&&i.default.setAttribute(e,\"semantics\",r.join(\";\"))}))},t.saveDocument=function(e){if(!(\"getBBox\"in(u=e.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},t.clearDocument=function(e){u=null}},function(e,t,r){\"use strict\";var o,n=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.ProofTreeItem=void 0;var a=r(3),i=r(8),l=r(9),u=r(0),f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.leftLabel=null,t.rigthLabel=null,t.innerStack=new l.default(t.factory,{},!0),t}return n(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){if(e.isKind(\"end\")&&\"prooftree\"===e.getName()){var t=this.toMml();return u.setProperty(t,\"proof\",!0),[[this.factory.create(\"mml\",t),e],!0]}if(e.isKind(\"stop\"))throw new a.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(e),i.BaseItem.fail},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return t;this.innerStack.Push(this.factory.create(\"stop\"));var o=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[o,t],{})},t}(i.BaseItem);t.ProofTreeItem=f},function(e,t,r){\"use strict\";var o=this&&this.__read||function(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)i.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},n=this&&this.__spread||function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e};Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(3),i=r(12),l=r(4),u=r(0),f={Prooftree:function(e,t){return e.Push(t),e.itemFactory.create(\"proofTree\").setProperties({name:t.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(e,t){var r=e.stack.Top();if(\"proofTree\"!==r.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var o=s(e,e.GetArgument(t));u.setProperty(o,\"axiom\",!0),r.Push(o)}},s=function(e,t){var r=l.default.internalMath(e,l.default.trimSpaces(t),0);if(!r[0].childNodes[0].childNodes.length)return e.create(\"node\",\"mrow\",[]);var o=e.create(\"node\",\"mspace\",[],{width:\".5ex\"}),a=e.create(\"node\",\"mspace\",[],{width:\".5ex\"});return e.create(\"node\",\"mrow\",n([o],r,[a]))};function c(e,t,r,o,n,a,i){var l,f,s,c,d=e.create(\"node\",\"mtr\",[e.create(\"node\",\"mtd\",[t],{})],{}),p=e.create(\"node\",\"mtr\",[e.create(\"node\",\"mtd\",r,{})],{}),m=e.create(\"node\",\"mtable\",i?[p,d]:[d,p],{align:\"top 2\",rowlines:a,framespacing:\"0 0\"});if(u.setProperty(m,\"inferenceRule\",i?\"up\":\"down\"),o&&(l=e.create(\"node\",\"mpadded\",[o],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),u.setProperty(l,\"prooflabel\",\"left\")),n&&(f=e.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),u.setProperty(f,\"prooflabel\",\"right\")),o&&n)s=[l,m,f],c=\"both\";else if(o)s=[l,m],c=\"left\";else{if(!n)return m;s=[m,f],c=\"right\"}return m=e.create(\"node\",\"mrow\",s),u.setProperty(m,\"labelledRule\",c),m}function d(e,t){if(\"$\"!==e.GetNext())throw new a.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",t);e.i++;var r=e.GetUpTo(t,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new a.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",t);var n=o(r.split(\"\\\\fCenter\"),2),l=n[0],f=n[1],s=new i.default(l,e.stack.env,e.configuration).mml(),c=new i.default(f,e.stack.env,e.configuration).mml(),d=new i.default(\"\\\\fCenter\",e.stack.env,e.configuration).mml(),p=e.create(\"node\",\"mtd\",[s],{}),m=e.create(\"node\",\"mtd\",[d],{}),h=e.create(\"node\",\"mtd\",[c],{}),y=e.create(\"node\",\"mtr\",[p,m,h],{}),v=e.create(\"node\",\"mtable\",[y],{columnspacing:\".5ex\",columnalign:\"center 2\"});return u.setProperty(v,\"sequent\",!0),e.configuration.addNode(\"sequent\",y),v}f.Inference=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(o.Size()<r)throw new a.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=o.getProperty(\"rootAtTop\"),i=1!==r||o.Peek()[0].childNodes.length?r:0,l=[];do{l.length&&l.unshift(e.create(\"node\",\"mtd\",[],{})),l.unshift(e.create(\"node\",\"mtd\",[o.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var f=e.create(\"node\",\"mtr\",l,{}),d=e.create(\"node\",\"mtable\",[f],{framespacing:\"0 0\"}),p=s(e,e.GetArgument(t)),m=o.getProperty(\"currentLine\");m!==o.getProperty(\"line\")&&o.setProperty(\"currentLine\",o.getProperty(\"line\"));var h=c(e,d,[p],o.getProperty(\"left\"),o.getProperty(\"right\"),m,n);o.setProperty(\"left\",null),o.setProperty(\"right\",null),u.setProperty(h,\"inference\",i),e.configuration.addNode(\"inference\",h),o.Push(h)},f.Label=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=l.default.internalMath(e,e.GetArgument(t),0),i=n.length>1?e.create(\"node\",\"mrow\",n,{}):n[0];o.setProperty(r,i)},f.SetLine=function(e,t,r,o){var n=e.stack.Top();if(\"proofTree\"!==n.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"currentLine\",r),o&&n.setProperty(\"line\",r)},f.RootAtTop=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");o.setProperty(\"rootAtTop\",r)},f.AxiomF=function(e,t){var r=e.stack.Top();if(\"proofTree\"!==r.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var o=d(e,t);u.setProperty(o,\"axiom\",!0),r.Push(o)},f.FCenter=function(e,t){},f.InferenceF=function(e,t,r){var o=e.stack.Top();if(\"proofTree\"!==o.kind)throw new a.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(o.Size()<r)throw new a.default(\"BadProofTree\",\"Proof tree badly specified.\");var n=o.getProperty(\"rootAtTop\"),i=1!==r||o.Peek()[0].childNodes.length?r:0,l=[];do{l.length&&l.unshift(e.create(\"node\",\"mtd\",[],{})),l.unshift(e.create(\"node\",\"mtd\",[o.Pop()],{rowalign:n?\"top\":\"bottom\"})),r--}while(r>0);var f=e.create(\"node\",\"mtr\",l,{}),s=e.create(\"node\",\"mtable\",[f],{framespacing:\"0 0\"}),p=d(e,t),m=o.getProperty(\"currentLine\");m!==o.getProperty(\"line\")&&o.setProperty(\"currentLine\",o.getProperty(\"line\"));var h=c(e,s,[p],o.getProperty(\"left\"),o.getProperty(\"right\"),m,n);o.setProperty(\"left\",null),o.setProperty(\"right\",null),u.setProperty(h,\"inference\",i),e.configuration.addNode(\"inference\",h),o.Push(h)},t.default=f},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,r){\"use strict\";var o;Object.defineProperty(t,\"__esModule\",{value:!0}),t.BussproofsConfiguration=void 0;var n=r(7),a=r(1),i=r(0);r(11),t.BussproofsConfiguration=n.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(o={},o[a.ProofTreeItem.prototype.kind]=a.ProofTreeItem,o),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.Stack.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var o=r(2),n=r(13),a=r(14);new a.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},o.default),new a.EnvironmentMap(\"Bussproofs-environments\",n.default.environment,{prooftree:[\"Prooftree\",null,!1]},o.default)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,r){\"use strict\";r.r(t);var o=r(5),n=r(6),a=r(1),i=r(2),l=r(0);Object(o.combineWithMathJax)({_:{input:{tex:{bussproofs:{BussproofsConfiguration:n,BussproofsItems:a,BussproofsMethods:i,BussproofsUtil:l}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/cancel.js",
    "content": "!function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=7)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.CancelConfiguration=t.CancelMethods=void 0;var a=n(2),o=n(3),i=n(4),r=n(5),c=n(6);t.CancelMethods={},t.CancelMethods.Cancel=function(e,t,n){var a=e.GetBrackets(t,\"\"),o=e.ParseArg(t),i=r.default.keyvalOptions(a,c.ENCLOSE_OPTIONS);i.notation=n,e.Push(e.create(\"node\",\"menclose\",[o],i))},t.CancelMethods.CancelTo=function(e,t){var n=e.GetBrackets(t,\"\"),a=e.ParseArg(t),i=e.ParseArg(t),u=r.default.keyvalOptions(n,c.ENCLOSE_OPTIONS);u.notation=[o.TexConstant.Notation.UPDIAGONALSTRIKE,o.TexConstant.Notation.UPDIAGONALARROW,o.TexConstant.Notation.NORTHEASTARROW].join(\" \"),a=e.create(\"node\",\"mpadded\",[a],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),e.Push(e.create(\"node\",\"msup\",[e.create(\"node\",\"menclose\",[i],u),a]))},new i.CommandMap(\"cancel\",{cancel:[\"Cancel\",o.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",o.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",o.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+o.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},t.CancelMethods),t.CancelConfiguration=a.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.ENCLOSE_OPTIONS=MathJax._.input.tex.enclose.EncloseConfiguration.ENCLOSE_OPTIONS,t.EncloseMethods=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseMethods,t.EncloseConfiguration=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseConfiguration},function(e,t,n){\"use strict\";n.r(t);var a=n(0),o=n(1);Object(a.combineWithMathJax)({_:{input:{tex:{cancel:{CancelConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/color.js",
    "content": "!function(e){var o={};function t(r){if(o[r])return o[r].exports;var n=o[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:r})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,o){if(1&o&&(e=t(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var n in e)t.d(r,n,function(o){return e[o]}.bind(null,n));return r},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},t.p=\"\",t(t.s=10)}([function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorMethods=void 0;var r=t(7),n=t(8);function a(e){var o=\"+\"+e,t=e.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(o)+t,height:o,depth:o,lspace:e}}o.ColorMethods={},o.ColorMethods.Color=function(e,o){var t=e.GetBrackets(o,\"\"),r=e.GetArgument(o),n=e.configuration.packageData.get(\"color\").model.getColor(t,r),a=e.itemFactory.create(\"style\").setProperties({styles:{mathcolor:n}});e.stack.env.color=n,e.Push(a)},o.ColorMethods.TextColor=function(e,o){var t=e.GetBrackets(o,\"\"),r=e.GetArgument(o),n=e.configuration.packageData.get(\"color\").model.getColor(t,r),a=e.stack.env.color;e.stack.env.color=n;var l=e.ParseArg(o);a?e.stack.env.color=a:delete e.stack.env.color;var i=e.create(\"node\",\"mstyle\",[l],{mathcolor:n});e.Push(i)},o.ColorMethods.DefineColor=function(e,o){var t=e.GetArgument(o),r=e.GetArgument(o),n=e.GetArgument(o);e.configuration.packageData.get(\"color\").model.defineColor(r,t,n)},o.ColorMethods.ColorBox=function(e,o){var t=e.GetArgument(o),l=n.default.internalMath(e,e.GetArgument(o)),i=e.configuration.packageData.get(\"color\").model,u=e.create(\"node\",\"mpadded\",l,{mathbackground:i.getColor(\"named\",t)});r.default.setProperties(u,a(e.options.color.padding)),e.Push(u)},o.ColorMethods.FColorBox=function(e,o){var t=e.GetArgument(o),l=e.GetArgument(o),i=n.default.internalMath(e,e.GetArgument(o)),u=e.options.color,d=e.configuration.packageData.get(\"color\").model,c=e.create(\"node\",\"mpadded\",i,{mathbackground:d.getColor(\"named\",l),style:\"border: \"+u.borderWidth+\" solid \"+d.getColor(\"named\",t)});r.default.setProperties(c,a(u.padding)),e.Push(c)}},function(e,o,t){\"use strict\";var r=this&&this.__values||function(e){var o=\"function\"==typeof Symbol&&Symbol.iterator,t=o&&e[o],r=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(o?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorModel=void 0;var n=t(9),a=t(2),l=new Map,i=function(){function e(){this.userColors=new Map}return e.prototype.normalizeColor=function(e,o){if(!e||\"named\"===e)return o;if(l.has(e))return l.get(e)(o);throw new n.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",e)},e.prototype.getColor=function(e,o){return e&&\"named\"!==e?this.normalizeColor(e,o):this.getColorByName(o)},e.prototype.getColorByName=function(e){return this.userColors.has(e)?this.userColors.get(e):a.COLORS.has(e)?a.COLORS.get(e):e},e.prototype.defineColor=function(e,o,t){var r=this.normalizeColor(e,t);this.userColors.set(o,r)},e}();o.ColorModel=i,l.set(\"rgb\",(function(e){var o,t,a=e.trim().split(/\\s*,\\s*/),l=\"#\";if(3!==a.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var i=r(a),u=i.next();!u.done;u=i.next()){var d=u.value;if(!d.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var c=parseFloat(d);if(c<0||c>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var s=Math.floor(255*c).toString(16);s.length<2&&(s=\"0\"+s),l+=s}}catch(e){o={error:e}}finally{try{u&&!u.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return l})),l.set(\"RGB\",(function(e){var o,t,a=e.trim().split(/\\s*,\\s*/),l=\"#\";if(3!==a.length)throw new n.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var i=r(a),u=i.next();!u.done;u=i.next()){var d=u.value;if(!d.match(/^\\d+$/))throw new n.default(\"InvalidNumber\",\"Invalid number\");var c=parseInt(d);if(c>255)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var s=c.toString(16);s.length<2&&(s=\"0\"+s),l+=s}}catch(e){o={error:e}}finally{try{u&&!u.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return l})),l.set(\"gray\",(function(e){if(!e.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new n.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var o=parseFloat(e);if(o<0||o>1)throw new n.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var t=Math.floor(255*o).toString(16);return t.length<2&&(t=\"0\"+t),\"#\"+t+t+t}))},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.COLORS=void 0,o.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.isObject=MathJax._.components.global.isObject,o.combineConfig=MathJax._.components.global.combineConfig,o.combineDefaults=MathJax._.components.global.combineDefaults,o.combineWithMathJax=MathJax._.components.global.combineWithMathJax,o.MathJax=MathJax._.components.global.MathJax},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.ColorConfiguration=void 0;var r=t(5),n=t(6),a=t(0),l=t(1);new r.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},a.ColorMethods);o.ColorConfiguration=n.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(e,o){o.parseOptions.packageData.set(\"color\",{model:new l.ColorModel})}})},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,o.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,o.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,o.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,o.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,o.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,o.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,o.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.Configuration=MathJax._.input.tex.Configuration.Configuration,o.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,o.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.NodeUtil.default},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.ParseUtil.default},function(e,o,t){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=MathJax._.input.tex.TexError.default},function(e,o,t){\"use strict\";t.r(o);var r=t(3),n=t(4),a=t(2),l=t(0),i=t(1);Object(r.combineWithMathJax)({_:{input:{tex:{color:{ColorConfiguration:n,ColorConstants:a,ColorMethods:l,ColorUtil:i}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/colorV2.js",
    "content": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,a){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(a,n,function(e){return t[e]}.bind(null,n));return a},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=4)}([function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var a=o(2),n=o(3);e.ColorV2Methods={Color:function(t,e){var o=t.GetArgument(e),a=t.stack.env.color;t.stack.env.color=o;var n=t.ParseArg(e);a?t.stack.env.color=a:delete t.stack.env.color;var r=t.create(\"node\",\"mstyle\",[n],{mathcolor:o});t.Push(r)}},new a.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){\"use strict\";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{colorv2:{ColorV2Configuration:n}}}}}),function(t,e,o){var n,r,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,u=l.indexOf(t);u>=0&&(l[u]=e),o&&c[t]&&(Object(a.combineConfig)(c,(n={},r=e,i=c[t],r in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,n)),delete c[t])}}(\"colorV2\",\"colorv2\",!1)}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/configMacros.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=7)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,a=e&&t[e],n=0;if(a)return a.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var o=a(2),i=a(3),r=a(4),u=a(5),c=a(6);e.ConfigMacrosConfiguration=o.Configuration.create(\"configmacros\",{init:function(t){new r.CommandMap(\"configmacros-map\",{},{}),t.append(o.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var a,o,i=e.parseOptions.handlers.retrieve(\"configmacros-map\"),r=e.parseOptions.options.macros;try{for(var l=n(Object.keys(r)),p=l.next();!p.done;p=l.next()){var s=p.value,f=\"string\"==typeof r[s]?[r[s]]:r[s],M=Array.isArray(f[2])?new u.Macro(s,c.default.MacroWithTemplate,f.slice(0,2).concat(f[2])):new u.Macro(s,c.default.Macro,f);i.add(s,M)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}},options:{macros:i.expandable({})}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandMethods.default},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{configmacros:{ConfigMacrosConfiguration:o}}}}}),function(t,e,a){var o,i,r,u=MathJax.config.tex;if(u&&u.packages){var c=u.packages,l=c.indexOf(t);l>=0&&(c[l]=e),a&&u[t]&&(Object(n.combineConfig)(u,(o={},i=e,r=u[t],i in o?Object.defineProperty(o,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):o[i]=r,o)),delete u[t])}}(\"configMacros\",\"configmacros\",!1)}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/enclose.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=5)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.EncloseConfiguration=t.EncloseMethods=t.ENCLOSE_OPTIONS=void 0;var n=a(2),o=a(3),r=a(4);t.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},t.EncloseMethods={},t.EncloseMethods.Enclose=function(e,a){var n=e.GetArgument(a).replace(/,/g,\" \"),o=e.GetBrackets(a,\"\"),i=e.ParseArg(a),u=r.default.keyvalOptions(o,t.ENCLOSE_OPTIONS);u.notation=n,e.Push(e.create(\"node\",\"menclose\",[i],u))},new o.CommandMap(\"enclose\",{enclose:\"Enclose\"},t.EncloseMethods),t.EncloseConfiguration=n.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,a){\"use strict\";a.r(t);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{enclose:{EncloseConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/extpfeil.js",
    "content": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var o=a(2),n=a(3),r=a(4),i=a(5),u=a(6),l=a(7);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=r.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,a){var o=t.GetArgument(a),n=t.GetArgument(a),r=t.GetArgument(a);if(!o.match(/^\\\\([a-z]+|.)$/i))throw new l.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",a);if(!n.match(/^(\\d+),(\\d+)$/))throw new l.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",a);if(!r.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new l.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",a);o=o.substr(1);var u=n.split(\",\");i.default.addMacro(t,o,e.ExtpfeilMethods.xArrow,[parseInt(r),parseInt(u[0]),parseInt(u[1])])},new n.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=o.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){u.NewcommandConfiguration.init(t)}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=MathJax._.input.tex.newcommand.NewcommandConfiguration.NewcommandConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{extpfeil:{ExtpfeilConfiguration:n}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/html.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=6)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(5),r={Href:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,\"href\",a),t.Push(r)},Class:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,\"class\");u&&(a=u+\" \"+a),n.default.setAttribute(r,\"class\",a),t.Push(r)},Style:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,\"style\");u&&(\";\"!==a.charAt(a.length-1)&&(a+=\";\"),a=u+\" \"+a),n.default.setAttribute(r,\"style\",a),t.Push(r)},Id:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,\"id\",a),t.Push(r)}},o=function(t,e){var a=t.ParseArg(e);if(!n.default.isInferred(a))return a;var r=n.default.getChildren(a);if(1===r.length)return r[0];var o=t.create(\"node\",\"mrow\");return n.default.copyChildren(a,o),n.default.copyAttributes(a,o),o};e.default=r},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var n=a(3),r=a(4),o=a(0);new r.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=n.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";a.r(e);var n=a(1),r=a(2),o=a(0);Object(n.combineWithMathJax)({_:{input:{tex:{html:{HtmlConfiguration:r,HtmlMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/mhchem.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var n=a(2),o=a(3),r=a(4),i=a(5),c=a(6),u=a(7),p={};p.Macro=i.default.Macro,p.xArrow=c.AmsMethods.xArrow,p.Machine=function(t,e,a){try{var n=t.GetArgument(e),o=u.mhchemParser.go(n,a),i=u.texify.go(o);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new r.default(t[0],t[1],t.slice(2))}},new o.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},p),e.MhchemConfiguration=n.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var a,o=\"0\",r={};r.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,c=[];;){a!==t?(i=10,a=t):i--;var u=n.stateMachines[e],p=u.transitions[o]||u.transitions[\"*\"];t:for(var s=0;s<p.length;s++){var _=n.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,l=0;l<d.action_.length;l++){var m;if(u.actions[d.action_[l].type_])m=u.actions[d.action_[l].type_](r,_.match_,d.action_[l].option);else{if(!n.actions[d.action_[l].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+d.action_[l].type_+\")\"];m=n.actions[d.action_[l].type_](r,_.match_,d.action_[l].option)}n.concatArray(c,m)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var a=0;a<e.length;a++)t.push(e[a]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=n.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var a=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return a?{match_:a[0],remainder:t.substr(a[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return n.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return n.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return n.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return n.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return n.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return n.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var a=n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return a&&(e=a.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,a,n,o,r,i,c,u,p){var s=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var a=t.match(e);return a?a[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,a)))return null;var d=function(t,e,a){for(var n=0;e<t.length;){var o=t.charAt(e),r=s(t.substr(e),a);if(null!==r&&0===n)return{endMatchBegin:e,endMatchEnd:e+r.length};if(\"{\"===o)n++;else if(\"}\"===o){if(0===n)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];n--}e++}return null}(t,_.length,n||o);if(null===d)return null;var l=t.substring(0,n?d.endMatchEnd:d.endMatchBegin);if(r||i){var m=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===m)return null;var h=[l,m.match_];return{match_:p?h.join(\"\"):h,remainder:m.remainder}}return{match_:l,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var a=n.patterns.patterns[t];if(void 0===a)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof a)return n.patterns.patterns[t](e);var o=e.match(a);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,a){return{type_:a}},\"insert+p1\":function(t,e,a){return{type_:a,p1:e}},\"insert+p1+p2\":function(t,e,a){return{type_:a,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return n.go(e,\"text\")},\"{text}\":function(t,e){var a=[\"{\"];return n.concatArray(a,n.go(e,\"text\")),a.push(\"}\"),a},\"tex-math\":function(t,e){return n.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return n.go(e,\"tex-math tight\")},bond:function(t,e,a){return{type_:\"bond\",kind_:a||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return n.go(e)},\"1/2\":function(t,e){var a=[];e.match(/^[+\\-]/)&&(a.push(e.substr(0,1)),e=e.substr(1));var n=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return n[1]=n[1].replace(/\\$/g,\"\"),a.push({type_:\"frac\",p1:n[1],p2:n[2]}),n[3]&&(n[3]=n[3].replace(/\\$/g,\"\"),a.push({type_:\"tex-math\",p1:n[3]})),a},\"9,9\":function(t,e){return n.go(e,\"9,9\")}},createTransitions:function(t){var e,a,n,o,r={};for(e in t)for(a in t[e])for(n=a.split(\"|\"),t[e][a].stateArray=n,o=0;o<n.length;o++)r[n[o]]=[];for(e in t)for(a in t[e])for(n=t[e][a].stateArray||[],o=0;o<n.length;o++){var i=t[e][a];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)\"string\"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split(\"|\"),p=0;p<u.length;p++)if(\"*\"===n[o])for(var s in r)r[s].push({pattern:u[p],task:i});else r[n[o]].push({pattern:u[p],task:i})}return r},stateMachines:{}};n.stateMachines={ce:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var a;if((t.d||\"\").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,a=this.output(t),t.b=o}else a=this.output(t);return n.actions[\"o=\"](t,e),a},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var a=[];return n.concatArray(a,this.output(t)),n.concatArray(a,n.actions.bond(t,e,\"-\")),a}t.d=e},\"- after o/d\":function(t,e,a){var o=n.patterns.match_(\"orbital\",t.o||\"\"),r=n.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=n.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),c=n.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),u=\"-\"===e&&(o&&\"\"===o.remainder||r||i||c);!u||t.a||t.b||t.p||t.d||t.q||o||!i||(t.o=\"$\"+t.o+\"$\");var p=[];return u?(n.concatArray(p,this.output(t)),p.push({type_:\"hyphen\"})):(o=n.patterns.match_(\"digits\",t.d||\"\"),a&&o&&\"\"===o.remainder?(n.concatArray(p,n.actions[\"d=\"](t,e)),n.concatArray(p,this.output(t))):(n.concatArray(p,this.output(t)),n.concatArray(p,n.actions.bond(t,e,\"-\")))),p},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:n.go(e,\"o\")}},comma:function(t,e){var a=e.replace(/\\s*$/,\"\");return a!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:a}:{type_:\"comma enumeration M\",p1:a}},output:function(t,e,a){var o,r,i;t.r?(r=\"M\"===t.rdt?n.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:n.go(t.rd),i=\"M\"===t.rqt?n.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:n.go(t.rq),o={type_:\"arrow\",r:t.r,rd:r,rq:i}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||a)&&(t.sb&&o.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===a?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&n.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:\"chemfive\",a:n.go(t.a,\"a\"),b:n.go(t.b,\"bd\"),p:n.go(t.p,\"pq\"),o:n.go(t.o,\"o\"),q:n.go(t.q,\"pq\"),d:n.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var c in t)\"parenthesisLevel\"!==c&&\"beginsWithBond\"!==c&&delete t[c];return o},\"oxidation-output\":function(t,e){var a=[\"{\"];return n.concatArray(a,n.go(e,\"oxidation\")),a.push(\"}\"),a},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:n.go(e[0]),p2:n.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:n.go(e[0]),p2:n.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,a){return{type_:\"operator\",kind_:a||e}}}},a:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var a in t)delete t[a];return e}}}},pq:{transitions:n.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:n.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"pq\")}}}},bd:{transitions:n.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"bd\")}}}},oxidation:{transitions:n.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var a in t)delete t[a];return e}}}},\"tex-math tight\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var a in t)delete t[a];return e}}}},\"9,9\":{transitions:n.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var a=[];return\"+-\"===e[0]||\"+/-\"===e[0]?a.push(\"\\\\pm \"):e[0]&&a.push(e[0]),e[1]&&(n.concatArray(a,n.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?n.concatArray(a,n.go(e[2],\"pu-9,9\")):a.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?a.push({type_:\"cdot\"}):a.push({type_:\"times\"}))),e[3]&&a.push(\"10^{\"+e[5]+\"}\"),a},\"number^\":function(t,e){var a=[];return\"+-\"===e[0]||\"+/-\"===e[0]?a.push(\"\\\\pm \"):e[0]&&a.push(e[0]),n.concatArray(a,n.go(e[1],\"pu-9,9\")),a.push(\"^{\"+e[2]+\"}\"),a},operator:function(t,e,a){return{type_:\"operator\",kind_:a||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,a=n.patterns.match_(\"{(...)}\",t.d||\"\");a&&\"\"===a.remainder&&(t.d=a.match_);var o=n.patterns.match_(\"{(...)}\",t.q||\"\");if(o&&\"\"===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var r={d:n.go(t.d,\"pu\"),q:n.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:r.d,p2:r.q}:(e=r.d,r.d.length>1||r.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),n.concatArray(e,r.q))}else e=n.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var a=n.patterns.match_(\"{(...)}\",t.rm||\"\");e=a&&\"\"===a.remainder?n.go(a.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var o in t)delete t[o];return e}}},\"pu-9,9\":{transitions:n.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var a=t.text_.length%3;0===a&&(a=3);for(var n=t.text_.length-3;n>0;n-=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,a)),e.reverse()}else e.push(t.text_);for(var o in t)delete t[o];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var a=t.text_.length-3,n=0;n<a;n+=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(n))}else e.push(t.text_);for(var o in t)delete t[o];return e}}}};var o={go:function(t,e){if(!t)return\"\";for(var a=\"\",n=!1,r=0;r<t.length;r++){var i=t[r];\"string\"==typeof i?a+=i:(a+=o._go2(i),\"1st-level escape\"===i.type_&&(n=!0))}return e||n||!a||(a=\"{\"+a+\"}\"),a},_goInner:function(t){return t?o.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var a={a:o._goInner(t.a),b:o._goInner(t.b),p:o._goInner(t.p),o:o._goInner(t.o),q:o._goInner(t.q),d:o._goInner(t.d)};a.a&&(a.a.match(/^[+\\-]/)&&(a.a=\"{\"+a.a+\"}\"),e+=a.a+\"\\\\,\"),(a.b||a.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(a.b||\"\")+\"}}_{\\\\hphantom{\"+(a.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(a.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(a.p||\"\")+\"}}}\"),a.o&&(a.o.match(/^[+\\-]/)&&(a.o=\"{\"+a.o+\"}\"),e+=a.o),\"kv\"===t.dType?((a.d||a.q)&&(e+=\"{\\\\vphantom{X}}\"),a.d&&(e+=\"^{\"+a.d+\"}\"),a.q&&(e+=\"_{\\\\smash[t]{\"+a.q+\"}}\")):\"oxidation\"===t.dType?(a.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+a.d+\"}\"),a.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+a.q+\"}}\")):(a.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+a.q+\"}}\"),a.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+a.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+o._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+o._goInner(t.p1);break;case\"bond\":if(!(e=o._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var n=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"pu-frac\":var r=\"\\\\frac{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+r+\"}{\"+r+\"}{\"+r+\"}{\"+r+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+o._goInner(t.p1)+\"}{\"+o._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+o._goInner(t.p1)+\"}_{\"+o._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+o._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:o._goInner(t.rd),rq:o._goInner(t.rq)},c=o._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(c=\"\\\\long\"+c,i.rd&&(c=\"\\\\overset{\"+i.rd+\"}{\"+c+\"}\"),i.rq&&(c=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+c+\"}\"),c=\" {}\\\\mathrel{\"+c+\"}{} \"):(i.rq&&(c+=\"[{\"+i.rq+\"}]\"),c=\" {}\\\\mathrel{\\\\x\"+(c+=\"{\"+i.rd+\"}\")+\"}{} \"):c=\" {}\\\\mathrel{\\\\long\"+c+\"}{} \",e=c;break;case\"operator\":e=o._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function r(t){}function i(t){}e.mhchemParser=n,e.texify=o,e.assertNever=r,e.assertString=i},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{mhchem:{MhchemConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/newcommand.js",
    "content": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=14)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=a(5),i=a(1),o=a(10);!function(e){function t(e,t){return e.string.substr(e.i,t.length)!==t||t.match(/\\\\[a-z]+$/i)&&e.string.charAt(e.i+t.length).match(/[a-z]/i)?0:(e.i+=t.length,1)}e.disassembleSymbol=function(e,t){var a=[e,t.char];if(t.attributes)for(var n in t.attributes)a.push(n),a.push(t.attributes[n]);return a},e.assembleSymbol=function(e){for(var t=e[0],a=e[1],n={},r=2;r<e.length;r+=2)n[e[r]]=e[r+1];return new o.Symbol(t,a,n)},e.GetCSname=function(e,t){if(\"\\\\\"!==e.GetNext())throw new i.default(\"MissingCS\",\"%1 must be followed by a control sequence\",t);return r.default.trimSpaces(e.GetArgument(t)).substr(1)},e.GetTemplate=function(e,t,a){for(var n=e.GetNext(),r=[],o=0,u=e.i;e.i<e.string.length;){if(\"#\"===(n=e.GetNext())){if(u!==e.i&&(r[o]=e.string.substr(u,e.i-u)),!(n=e.string.charAt(++e.i)).match(/^[1-9]$/))throw new i.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",a);if(parseInt(n)!==++o)throw new i.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",a);u=e.i+1}else if(\"{\"===n)return u!==e.i&&(r[o]=e.string.substr(u,e.i-u)),r.length>0?[o.toString()].concat(r):o;e.i++}throw new i.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",t)},e.GetParameter=function(e,a,n){if(null==n)return e.GetArgument(a);for(var r=e.i,o=0,u=0;e.i<e.string.length;){var l=e.string.charAt(e.i);if(\"{\"===l)e.i===r&&(u=1),e.GetArgument(a),o=e.i-r;else{if(t(e,n))return u&&(r++,o-=2),e.string.substr(r,o);if(\"\\\\\"===l){e.i++,o++,u=0;var c=e.string.substr(e.i).match(/[a-z]+|./i);c&&(e.i+=c[0].length,o=e.i-r)}else e.i++,o++,u=0}}throw new i.default(\"RunawayArgument\",\"Runaway argument for %1?\",a)},e.MatchParam=t,e.addDelimiter=function(t,a,n,r){t.configuration.handlers.retrieve(e.NEW_DELIMITER).add(a,new o.Symbol(a,n,r))},e.addMacro=function(t,a,n,r,i){void 0===i&&(i=\"\"),t.configuration.handlers.retrieve(e.NEW_COMMAND).add(a,new o.Macro(i||a,n,r))},e.addEnvironment=function(t,a,n,r){t.configuration.handlers.retrieve(e.NEW_ENVIRONMENT).add(a,new o.Macro(a,n,r))},e.NEW_DELIMITER=\"new-Delimiter\",e.NEW_COMMAND=\"new-Command\",e.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),t.default=n},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)});Object.defineProperty(t,\"__esModule\",{value:!0}),t.BeginEnvItem=void 0;var i=a(1),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind(\"end\")){if(t.getName()!==this.getName())throw new i.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),t.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(t.isKind(\"stop\"))throw new i.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return e.prototype.checkItem.call(this,t)},t}(a(9).BaseItem);t.BeginEnvItem=o},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(1),r=a(2),i=a(12),o=a(5),u=a(0),l={NewCommand:function(e,t){var a=o.default.trimSpaces(e.GetArgument(t)),r=e.GetBrackets(t),i=e.GetBrackets(t),c=e.GetArgument(t);if(\"\\\\\"===a.charAt(0)&&(a=a.substr(1)),!a.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",t);if(r&&!(r=o.default.trimSpaces(r)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",t);u.default.addMacro(e,a,l.Macro,[c,r,i])},NewEnvironment:function(e,t){var a=o.default.trimSpaces(e.GetArgument(t)),r=e.GetBrackets(t),i=e.GetBrackets(t),c=e.GetArgument(t),s=e.GetArgument(t);if(r&&!(r=o.default.trimSpaces(r)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",t);u.default.addEnvironment(e,a,l.BeginEnv,[!0,c,s,r,i])},MacroDef:function(e,t){var a=u.default.GetCSname(e,t),n=u.default.GetTemplate(e,t,\"\\\\\"+a),r=e.GetArgument(t);n instanceof Array?u.default.addMacro(e,a,l.MacroWithTemplate,[r].concat(n)):u.default.addMacro(e,a,l.Macro,[r,n])},Let:function(e,t){var a=u.default.GetCSname(e,t),n=e.GetNext();\"=\"===n&&(e.i++,n=e.GetNext());var i=e.configuration.handlers;if(\"\\\\\"!==n){e.i++;var o=i.get(\"delimiter\").lookup(n);o?u.default.addDelimiter(e,\"\\\\\"+a,o.char,o.attributes):u.default.addMacro(e,a,l.Macro,[n])}else{t=u.default.GetCSname(e,t);var c=i.get(\"delimiter\").lookup(\"\\\\\"+t);if(c)return void u.default.addDelimiter(e,\"\\\\\"+a,c.char,c.attributes);var s=i.get(\"macro\").applicable(t);if(!s)return;if(s instanceof r.MacroMap){var f=s.lookup(t);return void u.default.addMacro(e,a,f.func,f.args,f.symbol)}c=s.lookup(t);var m=u.default.disassembleSymbol(a,c);u.default.addMacro(e,a,(function(e,t){for(var a=[],n=2;n<arguments.length;n++)a[n-2]=arguments[n];var r=u.default.assembleSymbol(a);return s.parser(e,r)}),m)}},MacroWithTemplate:function(e,t,a,r){for(var i=[],l=4;l<arguments.length;l++)i[l-4]=arguments[l];var c=parseInt(r,10);if(c){var s=[];if(e.GetNext(),i[0]&&!u.default.MatchParam(e,i[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",t);for(var f=0;f<c;f++)s.push(u.default.GetParameter(e,t,i[f+1]));a=o.default.substituteArgs(e,s,a)}if(e.string=o.default.addArgs(e,a,e.string.slice(e.i)),e.i=0,++e.macroCount>e.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(e,t,a,n,r,i){if(t.getProperty(\"end\")&&e.stack.env.closing===t.getName()){delete e.stack.env.closing;var u=e.string.slice(e.i);return e.string=n,e.i=0,e.Parse(),e.string=u,e.i=0,e.itemFactory.create(\"end\").setProperty(\"name\",t.getName())}if(r){var l=[];if(null!=i){var c=e.GetBrackets(\"\\\\begin{\"+t.getName()+\"}\");l.push(null==c?i:c)}for(var s=l.length;s<r;s++)l.push(e.GetArgument(\"\\\\begin{\"+t.getName()+\"}\"));a=o.default.substituteArgs(e,l,a),n=o.default.substituteArgs(e,[],n)}return e.string=o.default.addArgs(e,a,e.string.slice(e.i)),e.i=0,e.itemFactory.create(\"beginEnv\").setProperty(\"name\",t.getName())}};l.Macro=i.default.Macro,t.default=l},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";var n;Object.defineProperty(t,\"__esModule\",{value:!0}),t.NewcommandConfiguration=void 0;var r=a(8),i=a(3),o=a(0);a(11);var u=a(13),l=a(2);t.NewcommandConfiguration=r.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[i.BeginEnvItem.prototype.kind]=i.BeginEnvItem,n),options:{maxMacros:1e3},init:function(e){new l.DelimiterMap(o.default.NEW_DELIMITER,u.default.delimiter,{}),new l.CommandMap(o.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(o.default.NEW_ENVIRONMENT,u.default.environment,{},{}),e.append(r.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Symbol=MathJax._.input.tex.Symbol.Symbol,t.Macro=MathJax._.input.tex.Symbol.Macro},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=a(4);new(a(2).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,a){\"use strict\";a.r(t);var n=a(6),r=a(7),i=a(3),o=a(4),u=a(0);Object(n.combineWithMathJax)({_:{input:{tex:{newcommand:{NewcommandConfiguration:r,NewcommandItems:i,NewcommandMethods:o,NewcommandUtil:u}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/noerrors.js",
    "content": "!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=3)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.NoErrorsConfiguration=void 0;var o=n(2);t.NoErrorsConfiguration=o.Configuration.create(\"noerrors\",{nodes:{error:function(e,t,n,o){var r=e.create(\"token\",\"mtext\",{},o.replace(/\\n/g,\" \"));return e.create(\"node\",\"merror\",[r],{\"data-mjx-error\":t,title:t})}}})},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){\"use strict\";n.r(t);var o=n(0),r=n(1);Object(o.combineWithMathJax)({_:{input:{tex:{noerrors:{NoErrorsConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/noundefined.js",
    "content": "!function(e){var n={};function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&n&&\"string\"!=typeof e)for(var r in e)t.d(o,r,function(n){return e[n]}.bind(null,r));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p=\"\",t(t.s=3)}([function(e,n,t){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isObject=MathJax._.components.global.isObject,n.combineConfig=MathJax._.components.global.combineConfig,n.combineDefaults=MathJax._.components.global.combineDefaults,n.combineWithMathJax=MathJax._.components.global.combineWithMathJax,n.MathJax=MathJax._.components.global.MathJax},function(e,n,t){\"use strict\";var o=this&&this.__values||function(e){var n=\"function\"==typeof Symbol&&Symbol.iterator,t=n&&e[n],o=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(n,\"__esModule\",{value:!0}),n.NoUndefinedConfiguration=void 0;var r=t(2);n.NoUndefinedConfiguration=r.Configuration.create(\"noundefined\",{fallback:{macro:function(e,n){var t,r,i=e.create(\"text\",\"\\\\\"+n),a=e.options.noundefined||{},u={};try{for(var f=o([\"color\",\"background\",\"size\"]),c=f.next();!c.done;c=f.next()){var l=c.value;a[l]&&(u[\"math\"+l]=a[l])}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=f.return)&&r.call(f)}finally{if(t)throw t.error}}e.Push(e.create(\"node\",\"mtext\",[],u,i))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(e,n,t){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,n,t){\"use strict\";t.r(n);var o=t(0),r=t(1);Object(o.combineWithMathJax)({_:{input:{tex:{noundefined:{NoUndefinedConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/physics.js",
    "content": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=17)}([function(t,e,a){\"use strict\";var r,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var i=a(8),o=a(2),s=a(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,a=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var r=t.prototype.toMml.call(this),n=e.create(\"node\",\"mpadded\",[r],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[n]))}a&&this.Push(new s.default(a,e.stack.env,e.configuration).mml());var i=t.prototype.toMml.call(this);return o.default.fenced(this.factory.configuration,this.getProperty(\"open\"),i,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var a=e.getProperty(\"autoclose\");return a&&a===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(i.BaseItem);e.AutoOpen=c},function(t,e,a){\"use strict\";var r=this&&this.__read||function(t,e){var a=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!a)return t;var r,n,i=a.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(t){n={error:t}}finally{try{r&&!r.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(11),i=a(3),o=a(12),s=a(4),c=a(2),l=a(13),u=a(14),m={},d={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},f=/^(b|B)i(g{1,2})$/;m.Quantity=function(t,e,a,r,n,u,m){void 0===a&&(a=\"(\"),void 0===r&&(r=\")\"),void 0===n&&(n=!1),void 0===u&&(u=\"\"),void 0===m&&(m=\"\");var p=!!n&&t.GetStar(),v=t.GetNext(),g=t.i,h=null;if(\"\\\\\"===v){if(t.i++,!(h=t.GetCS()).match(f)){var x=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,a,x,r)),void(t.i=g)}v=t.GetNext()}var M=d[v];if(n&&\"{\"!==v)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!M){x=t.create(\"node\",\"mrow\");return t.Push(c.default.fenced(t.configuration,a,x,r)),void(t.i=g)}if(u){var y=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);m&&l.default.setAttribute(y,\"mathvariant\",m),t.Push(t.itemFactory.create(\"fn\",y))}if(\"{\"===v){var b=t.GetArgument(e);return v=n?a:\"\\\\{\",M=n?r:\"\\\\}\",b=p?v+\" \"+b+\" \"+M:h?\"\\\\\"+h+\"l\"+v+\" \"+b+\" \\\\\"+h+\"r\"+M:\"\\\\left\"+v+\" \"+b+\" \\\\right\"+M,void t.Push(new i.default(b,t.stack.env,t.configuration).mml())}n&&(v=a,M=r),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:v,close:M,big:h}))},m.Eval=function(t,e){var a=t.GetStar(),r=t.GetNext();if(\"{\"!==r){if(\"(\"===r||\"[\"===r)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:r,close:\"|\",smash:a,right:\"\\\\vphantom{\\\\int}\"}));throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var n=t.GetArgument(e),i=\"\\\\left. \"+(a?\"\\\\smash{\"+n+\"}\":n)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+i+t.string.slice(t.i)},m.Commutator=function(t,e,a,r){void 0===a&&(a=\"[\"),void 0===r&&(r=\"]\");var n=t.GetStar(),s=t.GetNext(),c=null;if(\"\\\\\"===s){if(t.i++,!(c=t.GetCS()).match(f))throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=t.GetArgument(e)+\",\"+t.GetArgument(e);l=n?a+\" \"+l+\" \"+r:c?\"\\\\\"+c+\"l\"+a+\" \"+l+\" \\\\\"+c+\"r\"+r:\"\\\\left\"+a+\" \"+l+\" \\\\right\"+r,t.Push(new i.default(l,t.stack.env,t.configuration).mml())};var p=[65,90],v=[97,122],g=[913,937],h=[945,969],x=[48,57];function M(t,e){return t>=e[0]&&t<=e[1]}function y(t,e,a,r){var n=t.configuration.parser,i=u.NodeFactory.createToken(t,e,a,r),o=r.codePointAt(0);return 1===r.length&&!n.stack.env.font&&n.stack.env.vectorFont&&(M(o,p)||M(o,v)||M(o,g)||M(o,x)||M(o,h)&&n.stack.env.vectorStar||l.default.getAttribute(i,\"accent\"))&&l.default.setAttribute(i,\"mathvariant\",n.stack.env.vectorFont),i}m.VectorBold=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=t.configuration.nodeFactory.get(\"token\"),o=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",y),t.stack.env.vectorFont=a?\"bold-italic\":\"bold\",t.stack.env.vectorStar=a;var s=new i.default(r,t.stack.env,t.configuration).mml();o&&(t.stack.env.font=o),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",n),t.Push(s)},m.StarMacro=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];var i=t.GetStar(),s=[];if(a)for(var l=s.length;l<a;l++)s.push(t.GetArgument(e));var u=r.join(i?\"*\":\"\");if(u=c.default.substituteArgs(t,s,u),t.string=c.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var b=function(t,e,a,r,n){var o=new i.default(r,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,o));var s=t.GetNext(),c=d[s];if(c){var l=-1!==n.indexOf(s);if(\"{\"===s){var u=(l?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(a)+\" \"+(l?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}l&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:c})))}};function P(t,e,a){var n=r(t,3),i=n[0],o=n[1],s=n[2];return e&&a?\"\\\\left\\\\langle{\"+i+\"}\\\\middle\\\\vert{\"+o+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+i+\"}\\\\vert{\"+o+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+i+\"}\\\\right\\\\vert{\"+o+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}m.OperatorApplication=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];b(t,\"fn\",e,a,r)},m.VectorOperator=function(t,e,a){for(var r=[],n=3;n<arguments.length;n++)r[n-3]=arguments[n];b(t,\"mml\",e,a,r)},m.Expression=function(t,e,a,r){void 0===a&&(a=!0),void 0===r&&(r=\"\"),r=r||e.slice(1);var n=a?t.GetBrackets(e):null,o=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},r);if(n){var c=new i.default(n,t.stack.env,t.configuration).mml();o=t.create(\"node\",\"msup\",[o,c])}t.Push(t.itemFactory.create(\"fn\",o)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},m.Qqtext=function(t,e,a){var r=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(a||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+r+t.string.slice(t.i)},m.Differential=function(t,e,a){var r=t.GetBrackets(e),n=null!=r?\"^{\"+r+\"}\":\" \",o=\"(\"===t.GetNext(),c=\"{\"===t.GetNext(),l=a+n;if(o||c)if(c){l+=t.GetArgument(e);u=new i.default(l,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new i.default(l,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{l+=t.GetArgument(e,!0)||\"\";var u=new i.default(l,t.stack.env,t.configuration).mml();t.Push(u)}},m.Derivative=function(t,e,a,r){var n=t.GetStar(),o=t.GetBrackets(e),s=1,c=[];for(c.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<a;)c.push(t.GetArgument(e)),s++;var l=!1,u=\" \",m=\" \";a>2&&c.length>2?(u=\"^{\"+(c.length-1)+\"}\",l=!0):null!=o&&(a>2&&c.length>1&&(l=!0),m=u=\"^{\"+o+\"}\");for(var d=n?\"\\\\flatfrac\":\"\\\\frac\",f=c.length>1?c[0]:\"\",p=c.length>1?c[1]:c[0],v=\"\",g=2,h=void 0;h=c[g];g++)v+=r+\" \"+h;var x=d+\"{\"+r+u+f+\"}{\"+r+\" \"+p+m+\" \"+v+\"}\";t.Push(new i.default(x,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:l})))},m.Bra=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=\"\",o=!1,s=!1;if(\"\\\\\"===t.GetNext()){var c=t.i;t.i++;var l=t.GetCS(),u=t.lookup(\"macro\",l);u&&\"ket\"===u.symbol?(o=!0,c=t.i,s=t.GetStar(),\"{\"===t.GetNext()?n=t.GetArgument(l,!0):(t.i=c,s=!1)):t.i=c}var m=\"\";m=o?a||s?\"\\\\langle{\"+r+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":a||s?\"\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\langle{\"+r+\"}\\\\right\\\\vert{\"+n+\"}\",t.Push(new i.default(m,t.stack.env,t.configuration).mml())},m.Ket=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=a?\"\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+r+\"}\\\\right\\\\rangle\";t.Push(new i.default(n,t.stack.env,t.configuration).mml())},m.BraKet=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var o=\"\";o=null==n?a?\"\\\\langle{\"+r+\"}\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+r+\"}\\\\right\\\\rangle\":a?\"\\\\langle{\"+r+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\",t.Push(new i.default(o,t.stack.env,t.configuration).mml())},m.KetBra=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=null;\"{\"===t.GetNext()&&(n=t.GetArgument(e,!0));var o=\"\";o=null==n?a?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+r+\"}\\\\right\\\\vert\":a?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\",t.Push(new i.default(o,t.stack.env,t.configuration).mml())},m.Expectation=function(t,e){var a=t.GetStar(),r=a&&t.GetStar(),n=t.GetArgument(e),o=null;\"{\"===t.GetNext()&&(o=t.GetArgument(e,!0));var s=n&&o?P([o,n,o],a,r):a?\"\\\\langle {\"+n+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+n+\"} \\\\right\\\\rangle\";t.Push(new i.default(s,t.stack.env,t.configuration).mml())},m.MatrixElement=function(t,e){var a=t.GetStar(),r=a&&t.GetStar(),n=P([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],a,r);t.Push(new i.default(n,t.stack.env,t.configuration).mml())},m.MatrixQuantity=function(t,e,a){var r=t.GetStar(),n=a?\"smallmatrix\":\"array\",o=\"\",s=\"\",c=\"\";switch(t.GetNext()){case\"{\":o=t.GetArgument(e);break;case\"(\":t.i++,s=r?\"\\\\lgroup\":\"(\",c=r?\"\\\\rgroup\":\")\",o=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",c=\"]\",o=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",c=\"|\",o=t.GetUpTo(e,\"|\");break;default:s=\"(\",c=\")\"}var l=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+n+\"}{} \"+o+\"\\\\end{\"+n+\"}\"+(s?\"\\\\right\":\"\")+c;t.Push(new i.default(l,t.stack.env,t.configuration).mml())},m.IdentityMatrix=function(t,e){var a=t.GetArgument(e),r=parseInt(a,10);if(isNaN(r))throw new o.default(\"InvalidNumber\",\"Invalid number\");if(r<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var n=Array(r).fill(\"0\"),i=[],s=0;s<r;s++){var c=n.slice();c[s]=\"1\",i.push(c.join(\" & \"))}t.string=i.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},m.XMatrix=function(t,e){var a=t.GetStar(),r=t.GetArgument(e),n=t.GetArgument(e),i=t.GetArgument(e),s=parseInt(n,10),c=parseInt(i,10);if(isNaN(s)||isNaN(c)||c.toString()!==i||s.toString()!==n)throw new o.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,c=c<1?1:c,!a){var l=Array(c).fill(r).join(\" & \"),u=Array(s).fill(l).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var m=\"\";if(1===s&&1===c)m=r;else if(1===s){l=[];for(var d=1;d<=c;d++)l.push(r+\"_{\"+d+\"}\");m=l.join(\" & \")}else if(1===c){for(l=[],d=1;d<=s;d++)l.push(r+\"_{\"+d+\"}\");m=l.join(\"\\\\\\\\ \")}else{var f=[];for(d=1;d<=s;d++){l=[];for(var p=1;p<=c;p++)l.push(r+\"_{{\"+d+\"}{\"+p+\"}}\");f.push(l.join(\" & \"))}m=f.join(\"\\\\\\\\ \")}t.string=m+t.string.slice(t.i),t.i=0},m.PauliMatrix=function(t,e){var a=t.GetArgument(e),r=a.slice(1);switch(a[0]){case\"0\":r+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":r+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":r+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":r+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=r+t.string.slice(t.i),t.i=0},m.DiagonalMatrix=function(t,e,a){if(\"{\"===t.GetNext()){var r=t.i;t.GetArgument(e);var n=t.i;t.i=r+1;for(var i=[],o=\"\",s=t.i;s<n;){try{o=t.GetUpTo(e,\",\")}catch(e){t.i=n,i.push(t.string.slice(s,n-1));break}if(t.i>=n){i.push(t.string.slice(s,n));break}s=t.i,i.push(o)}t.string=function(t,e){for(var a=t.length,r=[],n=0;n<a;n++)r.push(Array(e?a-n:n+1).join(\"&\")+\"\\\\mqty{\"+t[n]+\"}\");return r.join(\"\\\\\\\\ \")}(i,a)+t.string.slice(n),t.i=0}},m.AutoClose=function(t,e,a){var r=t.create(\"token\",\"mo\",{stretchy:!1},e),n=t.itemFactory.create(\"mml\",r).setProperties({autoclose:e});t.Push(n)},m.Macro=n.default.Macro,m.NamedFn=n.default.NamedFn,m.Array=n.default.Array,e.default=m},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var n=a(7),i=a(0);a(9),e.PhysicsConfiguration=n.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(r={},r[i.AutoOpen.prototype.kind]=i.AutoOpen,r)})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlStack=MathJax._.input.tex.StackItem.MmlStack,e.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=a(10),n=a(1),i=a(15),o=a(16),s=a(4);new r.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",i.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},n.default),new r.CharacterMap(\"Physics-vector-chars\",o.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:i.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:i.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:i.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:i.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:i.TexConstant.Variant.NORMAL}]}),new r.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},n.default),new r.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},n.default),new r.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},n.default),new r.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},n.default),new r.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},n.default),new r.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},n.default),new r.EnvironmentMap(\"Physics-aux-envs\",o.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},n.default),new r.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},n.default)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseMethods.default},function(t,e,a){\"use strict\";a.r(e);var r=a(5),n=a(6),i=a(0),o=a(1);Object(r.combineWithMathJax)({_:{input:{tex:{physics:{PhysicsConfiguration:n,PhysicsItems:i,PhysicsMethods:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/require.js",
    "content": "!function(e){var t={};function a(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)a.d(r,o,function(t){return e[t]}.bind(null,o));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=9)}([function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){\"use strict\";var r=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,a=t&&e[t],r=0;if(a)return a.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(e,t){var a=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var r,o,n=a.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=n.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(a=n.return)&&a.call(n)}finally{if(o)throw o.error}}return i},n=this&&this.__spread||function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e};Object.defineProperty(t,\"__esModule\",{value:!0}),t.RequireConfiguration=t.options=t.RequireMethods=t.RequireLoad=void 0;var i=a(2),u=a(3),s=a(4),p=a(0),l=a(5),c=a(6),f=a(7),d=a(8),x=p.MathJax.config;function h(e,t){var a,o=e.parseOptions.options.require,n=e.parseOptions.packageData.get(\"require\").required,u=t.substr(o.prefix.length);if(n.indexOf(u)<0){n.push(u),function(e,t){var a,o;void 0===t&&(t=[]);var n=e.parseOptions.options.require.prefix;try{for(var i=r(t),u=i.next();!u.done;u=i.next()){var s=u.value;s.substr(0,n.length)===n&&h(e,s)}}catch(e){a={error:e}}finally{try{u&&!u.done&&(o=i.return)&&o.call(i)}finally{if(a)throw a.error}}}(e,c.CONFIG.dependencies[t]);var s=i.ConfigurationHandler.get(u);if(s){var p=x[t]||{};s.options&&1===Object.keys(s.options).length&&s.options[u]&&((a={})[u]=p,p=a),e.configuration.add(s,e,p);var l=e.parseOptions.packageData.get(\"require\").configured;s.preprocessors.length&&!l.has(u)&&(l.set(u,!0),f.mathjax.retryAfter(Promise.resolve()))}}}function M(e,t){var a=e.options.require,r=a.allow,o=(\"[\"===t.substr(0,1)?\"\":a.prefix)+t;if(!(r.hasOwnProperty(o)?r[o]:r.hasOwnProperty(t)?r[t]:a.defaultAllow))throw new s.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',o);l.Package.packages.has(o)?h(e.configuration.packageData.get(\"require\").jax,o):f.mathjax.retryAfter(c.Loader.load(o))}t.RequireLoad=M,t.RequireMethods={Require:function(e,t){var a=e.GetArgument(t);if(a.match(/[^_a-zA-Z0-9]/)||\"\"===a)throw new s.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",t);M(e,a)}},t.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new u.CommandMap(\"require\",{require:\"Require\"},t.RequireMethods),t.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(e,t){t.parseOptions.packageData.set(\"require\",{jax:t,required:n(t.options.packages),configured:new Map});var a=t.parseOptions.options.require,r=a.prefix;if(r.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");c.CONFIG.paths[r]||(c.CONFIG.paths[r]=\"[mathjax]/input/tex/extensions\"),a.prefix=\"[\"+r+\"]/\"},options:t.options})},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.PackageError=MathJax._.components.package.PackageError,t.Package=MathJax._.components.package.Package},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Loader=MathJax._.components.loader.Loader,t.MathJax=MathJax._.components.loader.MathJax,t.CONFIG=MathJax._.components.loader.CONFIG},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.mathjax=MathJax._.mathjax.mathjax},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.APPEND=MathJax._.util.Options.APPEND,t.REMOVE=MathJax._.util.Options.REMOVE,t.Expandable=MathJax._.util.Options.Expandable,t.expandable=MathJax._.util.Options.expandable,t.makeArray=MathJax._.util.Options.makeArray,t.keys=MathJax._.util.Options.keys,t.copy=MathJax._.util.Options.copy,t.insert=MathJax._.util.Options.insert,t.defaultOptions=MathJax._.util.Options.defaultOptions,t.userOptions=MathJax._.util.Options.userOptions,t.selectOptions=MathJax._.util.Options.selectOptions,t.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,t.separateOptions=MathJax._.util.Options.separateOptions},function(e,t,a){\"use strict\";a.r(t);var r=a(0),o=a(1);Object(r.combineWithMathJax)({_:{input:{tex:{require:{RequireConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/tagFormat.js",
    "content": "!function(t){var n={};function o(e){if(n[e])return n[e].exports;var a=n[e]={i:e,l:!1,exports:{}};return t[e].call(a.exports,a,a.exports,o),a.l=!0,a.exports}o.m=t,o.c=n,o.d=function(t,n,e){o.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,n){if(1&n&&(t=o(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(o.r(e),Object.defineProperty(e,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var a in t)o.d(e,a,function(n){return t[n]}.bind(null,a));return e},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,\"a\",n),n},o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.p=\"\",o(o.s=4)}([function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.isObject=MathJax._.components.global.isObject,n.combineConfig=MathJax._.components.global.combineConfig,n.combineDefaults=MathJax._.components.global.combineDefaults,n.combineWithMathJax=MathJax._.components.global.combineWithMathJax,n.MathJax=MathJax._.components.global.MathJax},function(t,n,o){\"use strict\";var e,a=this&&this.__extends||(e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var o in n)n.hasOwnProperty(o)&&(t[o]=n[o])})(t,n)},function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)});Object.defineProperty(n,\"__esModule\",{value:!0}),n.TagFormatConfiguration=n.tagformatConfig=void 0;var r=o(2),i=o(3),u=0;function s(t,n){var o=n.parseOptions.options.tags;\"base\"!==o&&t.tags.hasOwnProperty(o)&&i.TagsFactory.add(o,t.tags[o]);var e=function(t){function o(){return null!==t&&t.apply(this,arguments)||this}return a(o,t),o.prototype.formatNumber=function(t){return n.parseOptions.options.tagformat.number(t)},o.prototype.formatTag=function(t){return n.parseOptions.options.tagformat.tag(t)},o.prototype.formatId=function(t){return n.parseOptions.options.tagformat.id(t)},o.prototype.formatUrl=function(t,o){return n.parseOptions.options.tagformat.url(t,o)},o}(i.TagsFactory.create(n.parseOptions.options.tags).constructor),r=\"configTags-\"+ ++u;i.TagsFactory.add(r,e),n.parseOptions.options.tags=r}n.tagformatConfig=s,n.TagFormatConfiguration=r.Configuration.create(\"tagformat\",{config:[s,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,n){return n+\"#\"+encodeURIComponent(t)}}}})},function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,n,o){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Label=MathJax._.input.tex.Tags.Label,n.TagInfo=MathJax._.input.tex.Tags.TagInfo,n.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,n.NoTags=MathJax._.input.tex.Tags.NoTags,n.AllTags=MathJax._.input.tex.Tags.AllTags,n.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,n,o){\"use strict\";o.r(n);var e=o(0),a=o(1);Object(e.combineWithMathJax)({_:{input:{tex:{tagformat:{TagFormatConfiguration:a}}}}}),function(t,n,o){var a,r,i,u=MathJax.config.tex;if(u&&u.packages){var s=u.packages,f=s.indexOf(t);f>=0&&(s[f]=n),o&&u[t]&&(Object(e.combineConfig)(u,(a={},r=n,i=u[t],r in a?Object.defineProperty(a,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[r]=i,a)),delete u[t])}}(\"tagFormat\",\"tagformat\",!0)}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/textmacros.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=18)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var n=a(3),r=a(13),o=a(14);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var a,r,o=t.i,s=0;r=t.GetNext();)switch(a=t.i++,r){case\"\\\\\":\")\"===t.GetCS()&&(r=\"\\\\(\");case\"$\":if(0===s&&e===r){var i=t.texParser.configuration,c=new n.default(t.string.substr(o,a-o),t.stack.env,i).mml();return void t.PushMath(c)}break;case\"{\":s++;break;case\"}\":0===s&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),s--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var a=t.stack.env;t.envStack.push(a),t.stack.env=Object.assign({},a)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,a){t.text+=a},Accent:function(t,e,a){var n=t.ParseArg(name),r=t.create(\"token\",\"mo\",{},a);t.addAttributes(r),t.Push(t.create(\"node\",\"mover\",[n,r]))},Emph:function(t,e){var a=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:a}))},SetFont:function(t,e,a){t.saveText(),t.stack.env.mathvariant=a},SetSize:function(t,e,a){t.saveText(),t.stack.env.mathsize=a},CheckAutoload:function(t,e){var a=t.configuration.packageData.get(\"autoload\"),n=t.texParser;e=e.slice(1);var o=n.lookup(\"macro\",e);if(!o||a&&o._func===a.Autoload){if(n.parse(\"macro\",[n,e]),!o)return;r.retryAfter(Promise.resolve())}n.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,a){\"use strict\";var n,r=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,a=e&&t[e],n=0;if(a)return a.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__read||function(t,e){var a=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!a)return t;var n,r,o=a.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(t){r={error:t}}finally{try{n&&!n.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}return s},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var c=a(3),u=a(9),l=a(10),p=a(11),m=a(12),h=a(2),f=function(t){function e(e,a,n,r){var o=t.call(this,e,a,n)||this;return o.level=r,o}return r(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=l.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof h.StopItem)return t.prototype.Push.call(this,e);e instanceof h.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof p.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,a,n=this.stack.env;try{for(var r=o([\"mathsize\",\"mathcolor\"]),s=r.next();!s.done;s=r.next()){var i=s.value;n[i]&&!t.attributes.getExplicit(i)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),m.default.setAttribute(t,i,n[i]))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,a,n=this.stack.env;if(t.isToken)try{for(var r=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),s=r.next();!s.done;s=r.next()){var i=s.value;n[i]&&!t.attributes.getExplicit(i)&&m.default.setAttribute(t,i,n[i])}}catch(t){e={error:t}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,a){return new e(this.GetArgument(t),a=Object.assign(Object.assign({},this.stack.env),a),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var a=[],n=2;n<arguments.length;n++)a[n-2]=arguments[n];throw new(u.default.bind.apply(u.default,i([void 0,t,e],a)))},e}(c.default);e.TextParser=f},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartItem=MathJax._.input.tex.base.BaseItems.StartItem,e.StopItem=MathJax._.input.tex.base.BaseItems.StopItem,e.OpenItem=MathJax._.input.tex.base.BaseItems.OpenItem,e.CloseItem=MathJax._.input.tex.base.BaseItems.CloseItem,e.PrimeItem=MathJax._.input.tex.base.BaseItems.PrimeItem,e.SubsupItem=MathJax._.input.tex.base.BaseItems.SubsupItem,e.OverItem=MathJax._.input.tex.base.BaseItems.OverItem,e.LeftItem=MathJax._.input.tex.base.BaseItems.LeftItem,e.RightItem=MathJax._.input.tex.base.BaseItems.RightItem,e.BeginItem=MathJax._.input.tex.base.BaseItems.BeginItem,e.EndItem=MathJax._.input.tex.base.BaseItems.EndItem,e.StyleItem=MathJax._.input.tex.base.BaseItems.StyleItem,e.PositionItem=MathJax._.input.tex.base.BaseItems.PositionItem,e.CellItem=MathJax._.input.tex.base.BaseItems.CellItem,e.MmlItem=MathJax._.input.tex.base.BaseItems.MmlItem,e.FnItem=MathJax._.input.tex.base.BaseItems.FnItem,e.NotItem=MathJax._.input.tex.base.BaseItems.NotItem,e.DotsItem=MathJax._.input.tex.base.BaseItems.DotsItem,e.ArrayItem=MathJax._.input.tex.base.BaseItems.ArrayItem,e.EqnArrayItem=MathJax._.input.tex.base.BaseItems.EqnArrayItem,e.EquationItem=MathJax._.input.tex.base.BaseItems.EquationItem},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var r=a(6),o=a(7),s=a(8),i=a(2),c=a(1),u=a(0);function l(t,e,a,n){var r=t.configuration.packageData.get(\"textmacros\");return t instanceof c.TextParser||(r.texParser=t),[new c.TextParser(e,n?{mathvariant:n}:{},r.parseOptions,a).mml()]}a(15),e.textBase=r.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var a=t.texParser,n=a.lookup(\"macro\",e);n&&n._func!==u.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),a.parse(\"macro\",[n?t:a,e])}},items:(n={},n[i.StartItem.prototype.kind]=i.StartItem,n[i.StopItem.prototype.kind]=i.StopItem,n[i.MmlItem.prototype.kind]=i.MmlItem,n[i.StyleItem.prototype.kind]=i.StyleItem,n)}),r.Configuration.create(\"textmacros\",{config:function(t,a){var n=new r.ParserConfiguration([]);n.append(e.textBase),n.init();var i=new o.default(n,[]);i.options=a.parseOptions.options,n.config(a),s.TagsFactory.addTags(n.tags),i.tags=s.TagsFactory.getDefault(),i.tags.configuration=i,i.packageData=a.parseOptions.packageData,i.packageData.set(\"textmacros\",{parseOptions:i,jax:a,texParser:null}),i.options.internalMath=l},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseOptions.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=MathJax._.input.tex.Tags.Label,e.TagInfo=MathJax._.input.tex.Tags.TagInfo,e.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,e.NoTags=MathJax._.input.tex.Tags.NoTags,e.AllTags=MathJax._.input.tex.Tags.AllTags,e.TagsFactory=MathJax._.input.tex.Tags.TagsFactory},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=a(16),r=a(17),o=a(0);new n.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new n.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",r.TexConstant.Variant.NORMAL],mit:[\"SetFont\",r.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",r.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",r.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",r.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",r.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",r.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",r.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",r.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",r.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",r.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",r.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",r.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",r.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",r.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",r.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",r.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,a){\"use strict\";a.r(e);var n=a(4),r=a(5),o=a(0),s=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{textmacros:{TextMacrosConfiguration:r,TextMacrosMethods:o,TextParser:s}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/unicode.js",
    "content": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,\"a\",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=\"\",a(a.s=8)}([function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=a(2),o=a(3),i=a(4),r=a(5),u=a(6),c=a(7);e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(t,e){var a=t.GetBrackets(e),n=null,i=null;a&&(a.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(n=a.replace(/ /g,\"\").split(/,/),i=t.GetBrackets(e)):i=a);var d=r.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!d.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new o.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var p=parseInt(d.match(/^x/)?\"0\"+d:d);l[p]?i||(i=l[p][2]):l[p]=[800,200,i,p],n&&(l[p][0]=Math.floor(1e3*parseFloat(n[0])),l[p][1]=Math.floor(1e3*parseFloat(n[1])));var s=t.stack.env.font,f={};i?(l[p][2]=f.fontfamily=i.replace(/'/g,\"'\"),s&&(s.match(/bold/)&&(f.fontweight=\"bold\"),s.match(/italic|-mathit/)&&(f.fontstyle=\"italic\"))):s&&(f.mathvariant=s);var M=t.create(\"token\",\"mtext\",f,c.numeric(d));u.default.setProperty(M,\"unicode\",!0),t.Push(M)},new i.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,a){\"use strict\";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{unicode:{UnicodeConfiguration:o}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex/extensions/verb.js",
    "content": "!function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(a,r,function(e){return t[e]}.bind(null,r));return a},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=6)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var a=n(2),r=n(3),o=n(4),i=n(5);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var n=t.GetNext(),a=++t.i;if(\"\"===n)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==n;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(a,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:r.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=a.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,n){\"use strict\";n.r(e);var a=n(0),r=n(1);Object(a.combineWithMathJax)({_:{input:{tex:{verb:{VerbConfiguration:r}}}}})}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex-base.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=38)}([function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a,s=r(2),l=r(33);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var i,o;try{for(var a=n(Object.keys(r)),s=a.next();!s.done;s=a.next()){var l=s.value,u=r[l];\"texClass\"===l?(t.texClass=u,t.setProperty(l,u)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",u),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",u)):\"inferred\"===l||(e.has(l)?t.setProperty(l,u):t.attributes.set(l,u))}}catch(t){i={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(i)throw i.error}}}function i(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function a(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,i;try{for(var o=n(e),a=o.next();!a.done;a=o.next()){var s=a.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,o(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=i,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)i(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=a,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!a(t,\"mo\"))return null;var i=t,o=i.getForms();try{for(var s=n(o),u=s.next();!u.done;u=s.next()){var c=u.value,p=l.MmlMo.OPTABLE[c][i.getText()];if(p)return p}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),i=1,o=n.length;i<o;i+=2){var a=n[i].charAt(0);if(a>=\"0\"&&a<=\"9\")n[i]=r[parseInt(n[i],10)-1],\"number\"==typeof n[i]&&(n[i]=n[i].toString());else if(\"{\"===a){if((a=n[i].substr(1))>=\"0\"&&a<=\"9\")n[i]=r[parseInt(n[i].substr(1,n[i].length-2),10)-1],\"number\"==typeof n[i]&&(n[i]=n[i].toString());else n[i].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[i]=\"%\"+n[i])}null==n[i]&&(n[i]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(5),s=r(17),l=r(1),u=r(2),c=function(){function t(t,e,r){var i,o;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var a,l=e.hasOwnProperty(\"isInner\"),u=e.isInner;if(delete e.isInner,e){a={};try{for(var c=n(Object.keys(e)),p=c.next();!p.done;p=c.next()){var f=p.value;a[f]=e[f]}}catch(t){i={error:t}}finally{try{p&&!p.done&&(o=c.return)&&o.call(c)}finally{if(i)throw i.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,a,!l||u),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var i=n(Array.from(this.configuration.handlers.keys())),o=i.next();!o.done;o=i.next()){var a=o.value;r+=a+\": \"+this.configuration.handlers.get(a)+\"\\n\"}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof u.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var i=n(t),o=i.next();!o.done;o=i.next()){var a=o.value;this.stack.Push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var i=this.getCodePoint();return this.i+=i.length,i},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=i(a.default.matchDimen(e),2),n=r[0],o=r[1];if(n)return n+o}else{e=this.string.slice(this.i);var s=i(a.default.matchDimen(e,!0),3),u=(n=s[0],o=s[1],s[2]);if(n)return this.i+=u,n+o}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var i=this.i,o=this.GetNext();switch(this.i+=o.length,o){case\"\\\\\":o+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&o===e)return this.string.slice(r,i)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=a.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.default=c},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o,a=r(2),s=r(0),l=r(4),u=r(1),c=r(3);r(25),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",o=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\"\\\\s*$\"),f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\" ?\");function h(t,r){void 0===r&&(r=!1);var i=t.match(r?f:p);return i?function(t){var r=n(t,3),i=r[0],o=r[1],a=r[2];if(\"mu\"!==o)return[i,o,a];return[d(e[o](parseFloat(i||\"1\"))).slice(0,-2),\"em\",a]}([i[1].replace(/,/,\".\"),i[4],i[0].length]):[null,null,0]}function d(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",i=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+i+i+i,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,c.entities.nbsp).replace(/\\s+$/,c.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function y(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new u.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function v(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,i=\"\",o=0,a=0,s=!0,l=!1;o<r;){var c=t[o++];switch(c){case\" \":break;case\"{\":s?a++:(l=!1,a>n&&(a=n)),n++;break;case\"}\":n&&n--,(s||l)&&(a--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(c))return[l?\"true\":v(i,a),c,t.slice(o)];s=!1,l=!1}i+=c}if(n)throw new u.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":v(i,a),\"\",t.slice(o)]}t.matchDimen=h,t.dimen2em=function(t){var r=n(h(t),2),i=r[0],o=r[1],a=parseFloat(i||\"1\"),s=e[o];return s?s(a):0},t.Em=d,t.fenced=function(t,e,r,n,i){void 0===i&&(i=\"\");var o,u=t.nodeFactory,c=u.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:a.TEXCLASS.INNER});if(i)o=new l.default(\"\\\\\"+i+\"l\"+e,t.parser.stack.env,t).mml();else{var p=u.create(\"text\",e);o=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:a.TEXCLASS.OPEN},p)}if(s.default.appendChildren(c,[o]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(c,s.default.getChildren(r)):s.default.appendChildren(c,[r]),i)o=new l.default(\"\\\\\"+i+\"r\"+n,t.parser.stack.env,t).mml();else{var f=u.create(\"text\",n);o=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:a.TEXCLASS.CLOSE},f)}return s.default.appendChildren(c,[o]),c},t.fixedFence=function(t,e,r,n){var i=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:a.TEXCLASS.ORD});return e&&s.default.appendChildren(i,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(i,s.default.getChildren(r)):s.default.appendChildren(i,[r]),n&&s.default.appendChildren(i,[m(t,n,\"r\")]),i},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var i=e[r];if(i&&!s.default.isType(i,\"mspace\")&&(!s.default.isType(i,\"TeXAtom\")||s.default.getChildren(i)[0]&&s.default.getChildren(s.default.getChildren(i)[0]).length)){if(s.default.isEmbellished(i)||s.default.isType(i,\"TeXAtom\")&&s.default.getTexClass(i)===a.TEXCLASS.REL){var o=t.nodeFactory.create(\"node\",\"mi\");e.unshift(o)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var i,o,a=n||t.stack.env.font,s=a?{mathvariant:a}:{},c=[],p=0,f=0,h=\"\",d=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;p<e.length;)if(\"$\"===(i=e.charAt(p++)))\"$\"===h&&0===d?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-1),{},t.configuration).mml()]),c.push(o),h=\"\",f=p):\"\"===h&&(f<p-1&&c.push(g(t,e.slice(f,p-1),s)),h=\"$\",f=p);else if(\"{\"===i&&\"\"!==h)d++;else if(\"}\"===i)if(\"}\"===h&&0===d){var m=new l.default(e.slice(f,p),{},t.configuration).mml();o=t.create(\"node\",\"TeXAtom\",[m],s),c.push(o),h=\"\",f=p}else\"\"!==h&&d&&d--;else if(\"\\\\\"===i)if(\"\"===h&&e.substr(p).match(/^(eq)?ref\\s*\\{/)){var y=RegExp[\"$&\"].length;f<p-1&&c.push(g(t,e.slice(f,p-1),s)),h=\"}\",f=p-1,p+=y}else\"(\"===(i=e.charAt(p++))&&\"\"===h?(f<p-2&&c.push(g(t,e.slice(f,p-2),s)),h=\")\",f=p):\")\"===i&&\")\"===h&&0===d?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-2),{},t.configuration).mml()]),c.push(o),h=\"\",f=p):i.match(/[${}\\\\]/)&&\"\"===h&&(p--,e=e.substr(0,p-1)+e.substr(p));if(\"\"!==h)throw new u.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return f<e.length&&c.push(g(t,e.slice(f),s)),null!=r?c=[t.create(\"node\",\"mstyle\",c,{displaystyle:!1,scriptlevel:r})]:c.length>1&&(c=[t.create(\"node\",\"mrow\",c)]),c},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",i=\"\",o=0;o<r.length;){var a=r.charAt(o++);if(\"\\\\\"===a)n+=a+r.charAt(o++);else if(\"#\"===a)if(\"#\"===(a=r.charAt(o++)))n+=a;else{if(!a.match(/[1-9]/)||parseInt(a,10)>e.length)throw new u.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");i=y(t,y(t,i,n),e[parseInt(a,10)-1]),n=\"\"}else n+=a}return y(t,i,n)},t.addArgs=y,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new u.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var o,a;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,i,o,a,s={},l=t;for(;l;)o=(e=n(b(l,[\"=\",\",\"]),3))[0],i=e[1],l=e[2],\"=\"===i?(a=(r=n(b(l,[\",\"]),3))[0],i=r[1],l=r[2],a=\"false\"===a||\"true\"===a?JSON.parse(a):a,s[o]=a):o&&(s[o]=!0);return s}(t);if(e)try{for(var l=i(Object.keys(s)),c=l.next();!c.done;c=l.next()){var p=c.value;if(!e.hasOwnProperty(p)){if(r)throw new u.default(\"InvalidOption\",\"Invalid optional argument: %1\",p);delete s[p]}}}catch(t){o={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}return s}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var a=r(4),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,i,o,a,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===i&&(i=\"\"),void 0===o&&(o=\"\"),void 0===a&&(a=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=i,this.tagFormat=o,this.noTag=a,this.labelId=s};e.TagInfo=l;var u=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),i=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[i],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new a.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(u);e.NoTags=c;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(u);e.AllTags=p,function(t){var e=new Map([[\"none\",c],[\"all\",p]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var i=o(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var o,a=r(26),s=r(27);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(o=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new a.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var i,s;void 0===r&&(r=a.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),u=l.next();!u.done;u=l.next()){var c=u.value,p=o.getMap(c);if(!p)return void this.warn(\"Configuration \"+c+\" not found! Omitted.\");this._configuration.add(p,r)}}catch(t){i={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var o=n(this._configuration),a=o.next();!a.done;a=o.next()){var s=a.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}var l=i(t,2),u=l[0],c=l[1];this._fallback.toArray()[0].item(u,c)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;r.push(a.name)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.contains(t))return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.name===t)return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var u=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var i,o;void 0===r&&(r=a.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),u=s.next();!u.done;u=s.next()){var c=u.value,p=this.get(c);p||(p=new l,this.set(c,p)),p.add(t[c],e[c],r)}}catch(t){i={error:t}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var i=n(this.map.values()),o=i.next();!o.done;o=i.next()){var a=o.value.retrieve(t);if(a)return a}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(1),u=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,a(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,a([t],r))},t}();e.MmlStack=u;var c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,r)||this;return i.factory=e,i.global={},i._properties={},i.isOpen&&(i._env={}),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=o(this.getErrors(t.kind),2),n=r[0],i=r[1];throw new l.default(n,i,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var i=n.value;delete this.env[i]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(u);e.BaseItem=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var o,a=r(8),s=r(7),l=r(27),u=r(26),c=r(6),p=function(){function t(t,e,r,n,i,o,a,s,l,u,c,p){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===i&&(i={}),void 0===o&&(o={}),void 0===a&&(a={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===u&&(u=null),void 0===c&&(c=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=i,this.options=o,this.nodes=a,this.preprocessors=s,this.postprocessors=l,this.initMethod=u,this.configMethod=c,this.priority=p,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var i=r.priority||u.PrioritizedList.DEFAULTPRIORITY,o=r.init?this.makeProcessor(r.init,i):null,a=r.config?this.makeProcessor(r.config,i):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,i)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,i)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,o,a,i)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return o.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=p,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(o=e.ConfigurationHandler||(e.ConfigurationHandler={}));var f=function(){function t(t){var e,r,i,o;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new u.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var a=n(t.slice().reverse()),c=a.next();!c.done;c=a.next()){var p=c.value;this.addPackage(p)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}try{for(var f=n(this.configurations),h=f.next();!h.done;h=f.next()){var d=h.value,m=d.item,g=d.priority;this.append(m,g)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var i=n(this.configurations),o=i.next();!o.done;o=i.next()){var a=o.value;this.addFilters(t,a.item)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=o.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var i,o;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),u=l.next();!u.done;u=l.next()){var p=u.value;s.itemFactory.setNodeClass(p,t.items[p])}}catch(t){i={error:t}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}c.TagsFactory.addTags(t.tags),a.defaultOptions(s.options,t.options),a.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),a.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,o,a,s;try{for(var l=n(e.preprocessors),u=l.next();!u.done;u=l.next()){var c=i(u.value,2),p=c[0],f=c[1];t.preFilters.add(p,f)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}try{for(var h=n(e.postprocessors),d=h.next();!d.done;d=h.next()){var m=i(d.value,2),g=m[0];f=m[1];t.postFilters.add(g,f)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(s=h.return)&&s.call(h)}finally{if(a)throw a.error}}},t}();e.ParserConfiguration=f},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(22),u=r(7),c=function(){function t(t,e){this._name=t,this._parser=e,u.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.parserFor(n),a=this.lookup(n);return i&&a?i(r,a)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=c;var p=function(t){function e(e,r,n){var i=t.call(this,e,r)||this;return i._regExp=n,i}return i(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(c);e.RegExpMap=p;var f=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return i(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(c);e.AbstractParseMap=f;var h=function(t){function e(e,r,n){var i,s,u=t.call(this,e,r)||this;try{for(var c=a(Object.keys(n)),p=c.next();!p.done;p=c.next()){var f=p.value,h=n[f],d=o(\"string\"==typeof h?[h,null]:h,2),m=d[0],g=d[1],y=new l.Symbol(f,m,g);u.add(f,y)}}catch(t){i={error:t}}finally{try{p&&!p.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}return u}return i(e,t),e}(f);e.CharacterMap=h;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.parse=function(e){var r=o(e,2),n=r[0],i=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+i])},e}(h);e.DelimiterMap=d;var m=function(t){function e(e,r,n){var i,s,u=t.call(this,e,null)||this;try{for(var c=a(Object.keys(r)),p=c.next();!p.done;p=c.next()){var f=p.value,h=r[f],d=o(\"string\"==typeof h?[h]:h),m=d[0],g=d.slice(1),y=new l.Macro(f,n[m],g);u.add(f,y)}}catch(t){i={error:t}}finally{try{p&&!p.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}return u}return i(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);return i&&a?a.apply(void 0,s([r,i.symbol],i.args))||!0:null},e}(f);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);if(!i||!a)return null;if(!a)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var u=a.apply(void 0,s([r,\"\\\\\"+i.symbol],i.args));return r.currentCS=l,u||!0},e}(m);e.CommandMap=g;var y=function(t){function e(e,r,n,i){var o=t.call(this,e,n,i)||this;return o.parser=r,o}return i(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],i=this.lookup(n),a=this.parserFor(n);return i&&a?(this.parser(r,i.symbol,a,i.args),!0):null},e}(m);e.EnvironmentMap=y},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(7),l=r(3),u=r(2),c=r(1),p=r(5),f=r(0),h=r(10),d=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.StartItem=d;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(h.BaseItem);e.OpenItem=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.CloseItem=y;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=o(this.Peek(2),2),r=e[0],n=e[1];return!f.default.isType(r,\"msubsup\")||f.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(f.default.setChild(r,r.sup,n),[[r,t],!0])},e}(h.BaseItem);e.PrimeItem=v;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return h.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)f.default.setChild(r,2,this.getProperty(\"primes\"));else{f.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var i=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=i}return f.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&f.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var o=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(c.default.bind.apply(c.default,a([void 0,o[0],o[1]],o.splice(2))))}return null},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(h.BaseItem);e.SubsupItem=b;var T=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new c.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&f.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(f.default.setProperty(r,\"withDelims\",!0),r=p.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(h.BaseItem);e.OverItem=T;var P=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",p.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(h.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(h.BaseItem);e.LeftItem=P;var S=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.RightItem=S;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new c.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?h.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.BeginItem=x;var A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.EndItem=A;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(h.BaseItem);e.StyleItem=M;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new c.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.PositionItem=O;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.CellItem=C;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(h.BaseItem);e.MmlItem=E;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return h.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(f.default.isType(n,\"mstyle\")&&n.childNodes.length&&f.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||f.default.isType(n,\"mspace\"))return[[r,e],!0];f.default.isEmbellished(n)&&(n=f.default.getCoreMO(n));var i=f.default.getForm(n);if(null!=i&&[0,0,1,1,0,1,1,0,0,0][i[2]])return[[r,e],!0]}var o=this.create(\"token\",\"mo\",{texClass:u.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,o,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(h.BaseItem);e.FnItem=w;var k=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return h.BaseItem.success;if(t.isKind(\"mml\")&&(f.default.isType(t.First,\"mo\")||f.default.isType(t.First,\"mi\")||f.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=f.default.getText(e)).length&&!f.default.getProperty(e,\"movesupsub\")&&1===f.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),f.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),f.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var i=this.create(\"node\",\"mtext\",[],{},n),o=this.create(\"node\",\"mpadded\",[i],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[o],{texClass:u.TEXCLASS.REL}),t],!0]},e}(h.BaseItem);e.NotItem=k;var I=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return h.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&f.default.isEmbellished(r)){var n=f.default.getTexClass(f.default.getCoreMO(r));n!==u.TEXCLASS.BIN&&n!==u.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(h.BaseItem);e.DotsItem=I;var _=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),h.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),h.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?f.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||f.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=p.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var i=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[i],!0];throw new c.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[i,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&f.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&f.default.setAttribute(t,\"columnalign\",f.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(h.BaseItem);e.ArrayItem=_;var L=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,e)||this;return i.factory.configuration.tags.start(r[0],r[2],r[1]),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&p.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(_);e.EqnArrayItem=L;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var i=t.call(this,e)||this;return i.factory.configuration.tags.start(\"equation\",!0,r[0]),i}return i(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(h.BaseItem);e.EquationItem=N},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(29),l=r(8),u=r(15),c=r(16),p=r(0),f=r(4),h=r(1),d=r(18),m=r(6),g=r(11);r(21);var y=function(t){function e(r){void 0===r&&(r={});var n=this,i=a(l.separateOptions(r,e.OPTIONS,u.FindTeX.OPTIONS),3),o=i[0],s=i[1],p=i[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new u.FindTeX(p);var f=n.options.packages,h=n.configuration=e.configure(f),g=n._parseOptions=new d.default(h,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,o),h.config(n),e.tags(g,h),n.postFilters.add(c.default.cleanSubSup,-6),n.postFilters.add(c.default.setInherited,-5),n.postFilters.add(c.default.moveLimits,-4),n.postFilters.add(c.default.cleanStretchy,-3),n.postFilters.add(c.default.cleanAttributes,-2),n.postFilters.add(c.default.combineRelations,-1),n}return i(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new f.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof h.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&p.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=o(o({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=y},function(t,e,r){\"use strict\";var n,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var a=r(30),s=r(31),l=r(32),u=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return i(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],i=[];this.end={},this.env=this.sub=0;var o=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=o,o++),e.processEscapes&&i.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&i.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),i.length&&(n.push(\"(\"+i.join(\"|\")+\")\"),this.sub=o),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=o(e,2),i=n[0],a=n[1];t.push(s.quotePattern(i)),this.end[i]=[a,r,this.endPattern(a)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var i,a=o(n,3),s=a[0],u=a[1],c=a[2],p=c.lastIndex=r.index+r[0].length,f=0;i=c.exec(t);){if((i[1]||i[0])===s&&0===f)return l.protoItem(r[0],t.substr(p,i.index-p),i[0],e,r.index,i.index+i[0].length,u);\"{\"===i[0]?f++:\"}\"===i[0]&&f&&f--}return null},e.prototype.findMathInString=function(t,e,r){var n,i;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var o=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(i=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,o)]))&&(i.math=i.open+i.math+i.close,i.open=i.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var a=n[this.sub];o=n.index+n[this.sub].length;i=2===a.length?l.protoItem(\"\",a.substr(1),\"\",e,n.index,o):l.protoItem(\"\",a,\"\",e,n.index,o,!1)}else i=this.findEnd(r,e,n,this.end[n[0]]);i&&(t.push(i),this.start.lastIndex=i.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(a.AbstractFindMath);e.FindTeX=u},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(2),a=r(0);!function(t){t.cleanStretchy=function(t){var e,r,i=t.data;try{for(var o=n(i.getList(\"fixStretchy\")),s=o.next();!s.done;s=o.next()){var l=s.value;if(a.default.getProperty(l,\"fixStretchy\")){var u=a.default.getForm(l);u&&u[3]&&u[3].stretchy&&a.default.setAttribute(l,\"stretchy\",!1);var c=l.parent;if(!(a.default.getTexClass(l)||u&&u[2])){var p=i.nodeFactory.create(\"node\",\"TeXAtom\",[l]);c.replaceChild(p,l),p.inheritAttributesFrom(l)}a.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,i,o=t.attributes;if(o)try{for(var a=n(o.getExplicitNames()),s=a.next();!s.done;s=a.next()){var l=s.value;o.attributes[l]===t.attributes.getInherited(l)&&delete o.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var i,s;try{for(var l=n(t.data.getList(\"mo\")),u=l.next();!u.done;u=l.next()){var c=u.value;if(!c.getProperty(\"relationsCombined\")&&c.parent&&(!c.parent||a.default.isType(c.parent,\"mrow\"))&&a.default.getTexClass(c)===o.TEXCLASS.REL){for(var p=c.parent,f=void 0,h=p.childNodes,d=h.indexOf(c)+1,m=a.default.getProperty(c,\"variantForm\");d<h.length&&(f=h[d])&&a.default.isType(f,\"mo\")&&a.default.getTexClass(f)===o.TEXCLASS.REL;){if(m!==a.default.getProperty(f,\"variantForm\")||!r(c,f)){null==c.attributes.getExplicit(\"rspace\")&&a.default.setAttribute(c,\"rspace\",\"0pt\"),null==f.attributes.getExplicit(\"lspace\")&&a.default.setAttribute(f,\"lspace\",\"0pt\");break}a.default.appendChildren(c,a.default.getChildren(f)),e([\"stretchy\",\"rspace\"],c,f),a.default.setProperties(c,f.getAllProperties()),h.splice(d,1),f.parent=null,f.setProperty(\"relationsCombined\",!0)}c.attributes.setInherited(\"form\",c.getForms()[0])}}}catch(t){i={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}};var e=function(t,e,r){var n=e.attributes,i=r.attributes;t.forEach((function(t){var e=i.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,i,o=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},a=t.attributes,s=e.attributes,l=o(a,\"lspace\"),u=o(s,\"rspace\");if(l.length!==u.length)return!1;try{for(var c=n(l),p=c.next();!p.done;p=c.next()){var f=p.value;if(a.getExplicit(f)!==s.getExplicit(f))return!1}}catch(t){r={error:t}}finally{try{p&&!p.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}return!0},i=function(t,e,r){var i,o;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var u=l.value,c=u.childNodes;if(!c[u[e]]||!c[u[r]]){var p=u.parent,f=c[u[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[c[u.base],c[u[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[c[u.base],c[u[r]]]);a.default.copyAttributes(u,f),p?p.replaceChild(f,u):t.root=f}}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(i(e,\"sub\",\"sup\"),i(e,\"under\",\"over\"))};var s=function(t,e,r){var i,o;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var u=l.value;if(!u.attributes.get(\"displaystyle\")){var c=u.childNodes[u.base],p=c.coreMO();if(c.getProperty(\"movablelimits\")&&!p.attributes.getExplicit(\"movablelimits\")){var f=t.nodeFactory.create(\"node\",r,u.childNodes);a.default.copyAttributes(u,f),u.parent?u.parent.replaceChild(f,u):t.root=f}}}}catch(t){i={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(0),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),u=l.next();!u.done;u=l.next()){var c=u.value;if(c){var p=a.default.isNode(c)?this._factory.create(\"mml\",c):c;p.global=this.global;var f=i(this.stack.length?this.Top().checkItem(p):[null,!0],2),h=f[0],d=f[1];d&&(h?(this.Pop(),this.Push.apply(this,o(h))):(this.stack.push(p),p.env?(p.copyEnv&&Object.assign(p.env,this.env),this.env=p.env):p.env=this.env))}}}catch(e){t={error:e}}finally{try{u&&!u.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(19),s=r(20),l=r(8),u=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new a.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,i([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],i=[];try{for(var a=o(n),s=a.next();!s.done;s=a.next()){var l=s.value;this.inTree(l)&&i.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return this.nodeLists[t]=i,i},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=u},function(t,e,r){\"use strict\";var n,i,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(10),s=r(34),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(a.BaseItem),u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return o(e,t),e.DefaultStackItems=((i={})[l.prototype.kind]=l,i),e}(s.AbstractFactory);e.default=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var o=r(0),a=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,i){void 0===r&&(r=[]),void 0===n&&(n={});var a=t.mmlFactory.create(e),s=a.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?a.setChildren(o.default.getChildren(r[0])):a.setChildren(r);else{for(var l=[],u=0,c=void 0;c=r[u];u++)if(c.isInferred){var p=t.mmlFactory.create(\"mrow\",{},o.default.getChildren(c));o.default.copyAttributes(c,p),l.push(p)}else l.push(c);a.setChildren(l)}return i&&a.appendChild(i),o.default.setProperties(a,n),a},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var i=t.create(\"text\",n);return t.create(\"node\",e,[],r,i)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,o=n.apply(void 0,i([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],o),o},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=a},function(t,e,r){\"use strict\";var n,i,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var a=r(11),s=r(7),l=r(1),u=r(0),c=r(12),p=r(13),f=r(6);function h(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),i=t.create(\"token\",\"mo\",r,n?n.char:e);u.default.setProperty(i,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",i),t.Push(i)}r(35),new c.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=h;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(f.AbstractTags);e.BaseTags=d,e.BaseConfiguration=a.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:h,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(i={},i[p.StartItem.prototype.kind]=p.StartItem,i[p.StopItem.prototype.kind]=p.StopItem,i[p.OpenItem.prototype.kind]=p.OpenItem,i[p.CloseItem.prototype.kind]=p.CloseItem,i[p.PrimeItem.prototype.kind]=p.PrimeItem,i[p.SubsupItem.prototype.kind]=p.SubsupItem,i[p.OverItem.prototype.kind]=p.OverItem,i[p.LeftItem.prototype.kind]=p.LeftItem,i[p.RightItem.prototype.kind]=p.RightItem,i[p.BeginItem.prototype.kind]=p.BeginItem,i[p.EndItem.prototype.kind]=p.EndItem,i[p.StyleItem.prototype.kind]=p.StyleItem,i[p.PositionItem.prototype.kind]=p.PositionItem,i[p.CellItem.prototype.kind]=p.CellItem,i[p.MmlItem.prototype.kind]=p.MmlItem,i[p.FnItem.prototype.kind]=p.FnItem,i[p.NotItem.prototype.kind]=p.NotItem,i[p.DotsItem.prototype.kind]=p.DotsItem,i[p.ArrayItem.prototype.kind]=p.ArrayItem,i[p.EqnArrayItem.prototype.kind]=p.EqnArrayItem,i[p.EquationItem.prototype.kind]=p.EquationItem,i),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:d}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var i=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=i},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(13),o=r(0),a=r(1),s=r(4),l=r(9),u=r(5),c=r(2),p=r(6),f=r(3);r(25),r(36),r(37);var h={},d={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var i=new s.default(e,r,t.configuration),o=i.mml(),a=i.stack.global;if(a.leftRoot||a.upRoot){var l={};a.leftRoot&&(l.width=a.leftRoot),a.upRoot&&(l.voffset=a.upRoot,l.height=a.upRoot),o=t.create(\"node\",\"mpadded\",[o],l)}return r.inRoot=n,o}h.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},h.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},h.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},f.entities.nbsp))},h.Space=function(t,e){},h.Superscript=function(t,e){var r,i,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],i=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=o.default.getProperty(s,\"movesupsub\"),c=o.default.isType(s,\"msubsup\")?s.sup:s.over;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sup)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.over)&&!o.default.getProperty(s,\"subsupOK\"))throw new a.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(u?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.over):c=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:i,movesupsub:u}))},h.Subscript=function(t,e){var r,i,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],i=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=o.default.getProperty(s,\"movesupsub\"),c=o.default.isType(s,\"msubsup\")?s.sub:s.under;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sub)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.under)&&!o.default.getProperty(s,\"subsupOK\"))throw new a.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(u?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.under):c=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:i,movesupsub:u}))},h.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),o.default.isType(r,\"msubsup\")&&!o.default.isType(r,\"msup\")&&o.default.getChildAt(r,r.sup))throw new a.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=f.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===f.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var i=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,i))},h.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},h.Hash=function(t,e){throw new a.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},h.SetFont=function(t,e,r){t.stack.env.font=r},h.SetStyle=function(t,e,r,n,i){t.stack.env.style=r,t.stack.env.level=i,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:i}))},h.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},h.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),i=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(i)},h.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},h.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new a.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.OPEN}),t.Push(n)},h.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:c.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},h.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:c.TEXCLASS.OP},r);t.Push(n)},h.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||o.default.getTexClass(o.default.getCoreMO(n))!==c.TEXCLASS.OP&&null==o.default.getProperty(n,\"movesupsub\"))throw new a.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var i,s=t.stack.Top();o.default.isType(n,\"munderover\")&&!r?(i=t.create(\"node\",\"msubsup\"),o.default.copyChildren(n,i),n=s.Last=i):o.default.isType(n,\"msubsup\")&&r&&(i=t.create(\"node\",\"munderover\"),o.default.copyChildren(n,i),n=s.Last=i),o.default.setProperty(n,\"movesupsub\",!!r),o.default.setProperties(o.default.getCoreMO(n),{movablelimits:!1}),(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1})},h.Over=function(t,e,r,n){var i=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(i.setProperty(\"open\",r),i.setProperty(\"close\",n)):e.match(/withdelims$/)&&(i.setProperty(\"open\",t.GetDelimiter(e)),i.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?i.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&i.setProperty(\"thickness\",0),t.Push(i)},h.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),i=t.create(\"node\",\"mfrac\",[r,n]);t.Push(i)},h.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var i=new s.default(n,t.stack.env,t.configuration).mml();i=r?t.create(\"node\",\"mroot\",[i,m(t,r)]):t.create(\"node\",\"msqrt\",[i]),t.Push(i)},h.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),i=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(i)},h.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new a.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new a.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new a.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},h.Accent=function(t,e,r,n){var i=t.ParseArg(e),a=u.default.getFontDef(t);a.accent=!0;var s=o.default.createEntity(r),l=t.create(\"token\",\"mo\",a,s);o.default.setAttribute(l,\"stretchy\",!!n);var c=o.default.isEmbellished(i)?o.default.getCoreMO(i):i;o.default.isType(c,\"mo\")&&o.default.setProperties(c,{movablelimits:!1});var p=t.create(\"node\",\"munderover\");o.default.setChild(p,0,i),o.default.setChild(p,1,null),o.default.setChild(p,2,l);var f=t.create(\"node\",\"TeXAtom\",[p]);t.Push(f)},h.UnderOver=function(t,e,r,n,i){var a,s=t.ParseArg(e),l=o.default.getForm(s);(l&&l[3]&&l[3].movablelimits||o.default.getProperty(s,\"movablelimits\"))&&o.default.setProperties(s,{movablelimits:!1}),o.default.isType(s,\"munderover\")&&o.default.isEmbellished(s)&&(o.default.setProperties(o.default.getCoreMO(s),{lspace:0,rspace:0}),a=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[a,s]));var u=t.create(\"node\",\"munderover\",[s]),p=o.default.createEntity(r);a=t.create(\"token\",\"mo\",{stretchy:!0,accent:!i},p),o.default.setChild(u,\"o\"===e.charAt(1)?u.over:u.under,a);var f=u;n&&(f=t.create(\"node\",\"TeXAtom\",[u],{texClass:c.TEXCLASS.OP,movesupsub:!0})),o.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},h.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var i=t.create(\"node\",\"mover\",[n,r]);t.Push(i)},h.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.isType(n,\"mo\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var i=t.create(\"node\",\"munder\",[n,r]);t.Push(i)},h.TeXAtom=function(t,e,r){var n,i,o,a={texClass:r};if(r===c.TEXCLASS.OP){a.movesupsub=a.movablelimits=!0;var u=t.GetArgument(e),p=u.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);p?(a.mathvariant=l.TexConstant.Variant.NORMAL,i=t.create(\"token\",\"mi\",a,p[1])):(o=new s.default(u,t.stack.env,t.configuration).mml(),i=t.create(\"node\",\"TeXAtom\",[o],a)),n=t.itemFactory.create(\"fn\",i)}else o=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[o],a);t.Push(n)},h.MmlToken=function(t,e){var r,n=t.GetArgument(e),i=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new a.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==i;){var c=i.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!c)throw new a.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",i);if(!r.attributes.hasDefault(c[1])&&!d[c[1]])throw new a.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",c[1],n);var p=u.default.MmlFilterAttribute(t,c[1],c[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));p&&(\"true\"===p.toLowerCase()?p=!0:\"false\"===p.toLowerCase()&&(p=!1),l[c[1]]=p),i=i.substr(c[0].length)}var f=t.create(\"text\",s);r.appendChild(f),o.default.setProperties(r,l),t.Push(r)},h.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},h.Phantom=function(t,e,r,n){var i=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(i=t.create(\"node\",\"mpadded\",[i]),n&&(o.default.setAttribute(i,\"height\",0),o.default.setAttribute(i,\"depth\",0)),r&&o.default.setAttribute(i,\"width\",0));var a=t.create(\"node\",\"TeXAtom\",[i]);t.Push(a)},h.Smash=function(t,e){var r=u.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":o.default.setAttribute(n,\"depth\",0);break;case\"t\":o.default.setAttribute(n,\"height\",0);break;default:o.default.setAttribute(n,\"height\",0),o.default.setAttribute(n,\"depth\",0)}var i=t.create(\"node\",\"TeXAtom\",[n]);t.Push(i)},h.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&o.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},h.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},h.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var i=r;r=n,n=i}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},h.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},h.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var i=t.create(\"node\",\"mspace\",[],n);t.Push(i)},h.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),i=t.GetDimen(e),a=t.create(\"node\",\"mspace\",[],{width:n,height:i,mathbackground:t.stack.env.color||\"black\"});r&&(a=t.create(\"node\",\"mpadded\",[a],{voffset:r}),r.match(/^\\-/)?(o.default.setAttribute(a,\"height\",r),o.default.setAttribute(a,\"depth\",\"+\"+r.substr(1))):o.default.setAttribute(a,\"height\",\"+\"+r)),t.Push(a)},h.MakeBig=function(t,e,r,n){var i=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",o=t.GetDelimiter(e,!0),a=t.create(\"token\",\"mo\",{minsize:i,maxsize:i,fence:!0,stretchy:!0,symmetric:!0},o),s=t.create(\"node\",\"TeXAtom\",[a],{texClass:r});t.Push(s)},h.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),i=t.create(\"node\",\"munderover\");o.default.setChild(i,0,n),o.default.setChild(i,1,null),o.default.setChild(i,2,r);var a=t.create(\"node\",\"TeXAtom\",[i],{texClass:c.TEXCLASS.REL});t.Push(a)},h.HBox=function(t,e,r,n){t.PushAll(u.default.internalMath(t,t.GetArgument(e),r,n))},h.FBox=function(t,e){var r=u.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},h.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},h.Dots=function(t,e){var r=o.default.createEntity(\"2026\"),n=o.default.createEntity(\"22EF\"),i=t.create(\"token\",\"mo\",{stretchy:!1},r),a=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:i,cdots:a}))},h.Matrix=function(t,e,r,n,i,o,s,l,u,c){var p=t.GetNext();if(\"\"===p)throw new a.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===p?t.i++:(t.string=p+\"}\"+t.string.slice(t.i+1),t.i=0);var f=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);f.arraydef={rowspacing:s||\"4pt\",columnspacing:o||\"1em\"},u&&f.setProperty(\"isCases\",!0),c&&(f.setProperty(\"isNumbered\",!0),f.arraydef.side=c),(r||n)&&(f.setProperty(\"open\",r),f.setProperty(\"close\",n)),\"D\"===l&&(f.arraydef.displaystyle=!0),null!=i&&(f.arraydef.columnalign=i),t.Push(f)},h.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,i=-1,o=t.i,s=r.length;o<s;){var l=r.charAt(o);if(\"{\"===l)n++,o++;else if(\"}\"===l)0===n?s=0:(0===--n&&i<0&&(i=o-t.i),o++);else{if(\"&\"===l&&0===n)throw new a.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(o).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:o+=2:o++}}var c=r.substr(t.i,o-t.i);if(!c.match(/^\\s*\\\\text[^a-zA-Z]/)||i!==c.replace(/\\s+$/,\"\").length-1){var p=u.default.internalMath(t,c,0);t.PushAll(p),t.i=o}}},h.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},h.CrLaTeX=function(t,e,r){var o;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),c=n(u.default.matchDimen(s),2),p=c[0],f=c[1];if(s&&!p)throw new a.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);o=p+f}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var h,d=t.stack.Top();if(d instanceof i.ArrayItem){if(o&&d.arraydef.rowspacing){var m=d.arraydef.rowspacing.split(/ /);if(!d.getProperty(\"rowspacing\")){var g=u.default.dimen2em(m[0]);d.setProperty(\"rowspacing\",g)}for(var y=d.getProperty(\"rowspacing\");m.length<d.table.length;)m.push(u.default.Em(y));m[d.table.length-1]=u.default.Em(Math.max(0,y+u.default.dimen2em(o))),d.arraydef.rowspacing=m.join(\" \")}}else o&&(h=t.create(\"node\",\"mspace\",[],{depth:o}),t.Push(h)),h=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(h)},h.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof i.ArrayItem)||n.Size())throw new a.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var o=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];o.length<n.table.length;)o.push(\"none\");o[n.table.length-1]=r,n.arraydef.rowlines=o.join(\" \")}else n.frame.push(\"top\")},h.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof i.ArrayItem))throw new a.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},h.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new a.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var i=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(i)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},h.Array=function(t,e,r,n,i,o,a,s,l){i||(i=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var u=(\"c\"+i).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");i=(i=i.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var c=t.itemFactory.create(\"array\");return c.arraydef={columnalign:i,columnspacing:o||\"1em\",rowspacing:a||\"4pt\"},u.match(/[|:]/)&&(u.charAt(0).match(/[|:]/)&&(c.frame.push(\"left\"),c.dashed=\":\"===u.charAt(0)),u.charAt(u.length-1).match(/[|:]/)&&c.frame.push(\"right\"),u=u.substr(1,u.length-2),c.arraydef.columnlines=u.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&c.setProperty(\"open\",t.convertDelimiter(r)),n&&c.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?c.arraydef.displaystyle=!0:s&&(c.arraydef.displaystyle=!1),\"S\"===s&&(c.arraydef.scriptlevel=1),l&&(c.arraydef.useHeight=!1),t.Push(e),c},h.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=h.Array(t,e);return u.default.setArrayAlign(n,r)},h.Equation=function(t,e,r){return t.Push(e),u.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},h.EqnArray=function(t,e,r,n,i,o){t.Push(e),n&&u.default.checkEqnEnv(t),i=(i=i.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var a=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return a.arraydef={displaystyle:!0,columnalign:i,columnspacing:o||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},h.HandleNoTag=function(t,e){t.tags.notag()},h.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new a.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new a.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new p.Label}},h.HandleRef=function(t,e,r){var n=t.GetArgument(e),i=t.tags.allLabels[n]||t.tags.labels[n];i||(t.tags.refUpdate||(t.tags.redo=!0),i=new p.Label);var o=i.tag;r&&(o=t.tags.formatTag(o));var a=t.create(\"node\",\"mrow\",u.default.internalMath(t,o),{href:t.tags.formatUrl(i.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(a)},h.Macro=function(t,e,r,n,i){if(n){var o=[];if(null!=i){var s=t.GetBrackets(e);o.push(null==s?i:s)}for(var l=o.length;l<n;l++)o.push(t.GetArgument(e));r=u.default.substituteArgs(t,o,r)}if(t.string=u.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new a.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},h.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),i=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,i,o]))},e.default=h},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,a=r(0),s=r(9),l=r(5);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,i=t.string.slice(t.i-1).match(n),o=l.default.getFontDef(t);i?(r=t.create(\"token\",\"mn\",o,i[0].replace(/[{}]/g,\"\")),t.i+=i[0].length-1):r=t.create(\"token\",\"mo\",o,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);a.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var o=n[0],a=t.itemFactory.create(\"begin\").setProperties({name:e,end:o});a=r.apply(void 0,i([t,a],n.slice(1))),t.Push(a)}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(12),i=r(9),o=r(23),a=r(24),s=r(2);new n.RegExpMap(\"letter\",a.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",a.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",a.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},o.default),new n.CharacterMap(\"mathchar0mi\",a.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:i.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:i.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:i.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:i.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:i.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:i.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:i.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:i.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:i.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:i.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:i.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:i.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:i.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:i.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:i.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:i.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:i.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:i.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:i.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:i.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:i.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:i.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:i.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:i.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:i.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:i.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",a.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",a.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",a.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",i.TexConstant.Variant.NORMAL],mit:[\"SetFont\",i.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",i.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",i.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",i.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",i.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",i.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",i.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",i.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",i.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",i.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",i.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",i.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",i.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",i.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",i.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",i.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,i.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,i.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,i.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,i.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,i.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},o.default),new n.EnvironmentMap(\"environment\",a.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"]},o.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(3).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";r.r(e);var n=r(28),i=r(14),o=r(11),a=r(16),s=r(15),l=r(7),u=r(20),c=r(0),p=r(24),f=r(18),h=r(5),d=r(17),m=r(10),g=r(19),y=r(22),v=r(12),b=r(6),T=r(9),P=r(1),S=r(4),x=r(21),A=r(13),M=r(23);Object(n.combineWithMathJax)({_:{input:{tex_ts:i,tex:{Configuration:o,FilterUtil:a,FindTeX:s,MapHandler:l,NodeFactory:u,NodeUtil:c,ParseMethods:p,ParseOptions:f,ParseUtil:h,Stack:d,StackItem:m,StackItemFactory:g,Symbol:y,SymbolMap:v,Tags:b,TexConstants:T,TexError:P,TexParser:S,base:{BaseConfiguration:x,BaseItems:A,BaseMethods:M}}}}});var O=r(8);!function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",i.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(O.insert)(MathJax.config.tex,{packages:e})}}([\"base\"])}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex-full.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(n,a,function(e){return t[e]}.bind(null,a));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=95)}([function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var o,i=r(10),s=r(16),l=r(73),c=r(72),u=r(9),p=function(){function t(t,e,r,n,a,o,i,s,l,c,u,p){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===a&&(a={}),void 0===o&&(o={}),void 0===i&&(i={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===c&&(c=null),void 0===u&&(u=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=a,this.options=o,this.nodes=i,this.preprocessors=s,this.postprocessors=l,this.initMethod=c,this.configMethod=u,this.priority=p,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var a=r.priority||c.PrioritizedList.DEFAULTPRIORITY,o=r.init?this.makeProcessor(r.init,a):null,i=r.config?this.makeProcessor(r.config,a):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,a)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,a)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,o,i,a)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return o.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=p,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(o=e.ConfigurationHandler||(e.ConfigurationHandler={}));var f=function(){function t(t){var e,r,a,o;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new c.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var i=n(t.slice().reverse()),u=i.next();!u.done;u=i.next()){var p=u.value;this.addPackage(p)}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}try{for(var f=n(this.configurations),d=f.next();!d.done;d=f.next()){var h=d.value,m=h.item,g=h.priority;this.append(m,g)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(o=f.return)&&o.call(f)}finally{if(a)throw a.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var a=n(this.configurations),o=a.next();!o.done;o=a.next()){var i=o.value;this.addFilters(t,i.item)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=o.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var a,o;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),c=l.next();!c.done;c=l.next()){var p=c.value;s.itemFactory.setNodeClass(p,t.items[p])}}catch(t){a={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}u.TagsFactory.addTags(t.tags),i.defaultOptions(s.options,t.options),i.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),i.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,o,i,s;try{for(var l=n(e.preprocessors),c=l.next();!c.done;c=l.next()){var u=a(c.value,2),p=u[0],f=u[1];t.preFilters.add(p,f)}}catch(t){r={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}try{for(var d=n(e.postprocessors),h=d.next();!h.done;h=d.next()){var m=a(h.value,2),g=m[0];f=m[1];t.postFilters.add(g,f)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(s=d.return)&&s.call(d)}finally{if(i)throw i.error}}},t}();e.ParserConfiguration=f},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(14),c=r(16),u=function(){function t(t,e){this._name=t,this._parser=e,c.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.parserFor(n),i=this.lookup(n);return a&&i?a(r,i)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=u;var p=function(t){function e(e,r,n){var a=t.call(this,e,r)||this;return a._regExp=n,a}return a(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(u);e.RegExpMap=p;var f=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return a(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(u);e.AbstractParseMap=f;var d=function(t){function e(e,r,n){var a,s,c=t.call(this,e,r)||this;try{for(var u=i(Object.keys(n)),p=u.next();!p.done;p=u.next()){var f=p.value,d=n[f],h=o(\"string\"==typeof d?[d,null]:d,2),m=h[0],g=h[1],v=new l.Symbol(f,m,g);c.add(f,v)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}return c}return a(e,t),e}(f);e.CharacterMap=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(e){var r=o(e,2),n=r[0],a=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+a])},e}(d);e.DelimiterMap=h;var m=function(t){function e(e,r,n){var a,s,c=t.call(this,e,null)||this;try{for(var u=i(Object.keys(r)),p=u.next();!p.done;p=u.next()){var f=p.value,d=r[f],h=o(\"string\"==typeof d?[d]:d),m=h[0],g=h.slice(1),v=new l.Macro(f,n[m],g);c.add(f,v)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}return c}return a(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);return a&&i?i.apply(void 0,s([r,a.symbol],a.args))||!0:null},e}(f);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);if(!a||!i)return null;if(!i)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var c=i.apply(void 0,s([r,\"\\\\\"+a.symbol],a.args));return r.currentCS=l,c||!0},e}(m);e.CommandMap=g;var v=function(t){function e(e,r,n,a){var o=t.call(this,e,n,a)||this;return o.parser=r,o}return a(e,t),e.prototype.parse=function(t){var e=o(t,2),r=e[0],n=e[1],a=this.lookup(n),i=this.parserFor(n);return a&&i?(this.parser(r,a.symbol,i,a.args),!0):null},e}(m);e.EnvironmentMap=v},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),a=1,o=n.length;a<o;a+=2){var i=n[a].charAt(0);if(i>=\"0\"&&i<=\"9\")n[a]=r[parseInt(n[a],10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else if(\"{\"===i){if((i=n[a].substr(1))>=\"0\"&&i<=\"9\")n[a]=r[parseInt(n[a].substr(1,n[a].length-2),10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else n[a].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[a]=\"%\"+n[a])}null==n[a]&&(n[a]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i,s=r(5),l=r(80);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var a,o;try{for(var i=n(Object.keys(r)),s=i.next();!s.done;s=i.next()){var l=s.value,c=r[l];\"texClass\"===l?(t.texClass=c,t.setProperty(l,c)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",c),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",c)):\"inferred\"===l||(e.has(l)?t.setProperty(l,c):t.attributes.set(l,c))}}catch(t){a={error:t}}finally{try{s&&!s.done&&(o=i.return)&&o.call(i)}finally{if(a)throw a.error}}}function a(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function i(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,a;try{for(var o=n(e),i=o.next();!i.done;i=o.next()){var s=i.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{i&&!i.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,o(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=a,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)a(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=i,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!i(t,\"mo\"))return null;var a=t,o=a.getForms();try{for(var s=n(o),c=s.next();!c.done;c=s.next()){var u=c.value,p=l.MmlMo.OPTABLE[u][a.getText()];if(p)return p}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=r(5),s=r(3),l=r(6),c=r(2),u=r(13);r(71),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",o=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\"\\\\s*$\"),f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+o+\" ?\");function d(t,r){void 0===r&&(r=!1);var a=t.match(r?f:p);return a?function(t){var r=n(t,3),a=r[0],o=r[1],i=r[2];if(\"mu\"!==o)return[a,o,i];return[h(e[o](parseFloat(a||\"1\"))).slice(0,-2),\"em\",i]}([a[1].replace(/,/,\".\"),a[4],a[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",a=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+a+a+a,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,u.entities.nbsp).replace(/\\s+$/,u.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function v(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new c.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function y(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,a=\"\",o=0,i=0,s=!0,l=!1;o<r;){var u=t[o++];switch(u){case\" \":break;case\"{\":s?i++:(l=!1,i>n&&(i=n)),n++;break;case\"}\":n&&n--,(s||l)&&(i--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(u))return[l?\"true\":y(a,i),u,t.slice(o)];s=!1,l=!1}a+=u}if(n)throw new c.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":y(a,i),\"\",t.slice(o)]}t.matchDimen=d,t.dimen2em=function(t){var r=n(d(t),2),a=r[0],o=r[1],i=parseFloat(a||\"1\"),s=e[o];return s?s(i):0},t.Em=h,t.fenced=function(t,e,r,n,a){void 0===a&&(a=\"\");var o,c=t.nodeFactory,u=c.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:i.TEXCLASS.INNER});if(a)o=new l.default(\"\\\\\"+a+\"l\"+e,t.parser.stack.env,t).mml();else{var p=c.create(\"text\",e);o=c.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.OPEN},p)}if(s.default.appendChildren(u,[o]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(u,s.default.getChildren(r)):s.default.appendChildren(u,[r]),a)o=new l.default(\"\\\\\"+a+\"r\"+n,t.parser.stack.env,t).mml();else{var f=c.create(\"text\",n);o=c.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.CLOSE},f)}return s.default.appendChildren(u,[o]),u},t.fixedFence=function(t,e,r,n){var a=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:i.TEXCLASS.ORD});return e&&s.default.appendChildren(a,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(a,s.default.getChildren(r)):s.default.appendChildren(a,[r]),n&&s.default.appendChildren(a,[m(t,n,\"r\")]),a},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var a=e[r];if(a&&!s.default.isType(a,\"mspace\")&&(!s.default.isType(a,\"TeXAtom\")||s.default.getChildren(a)[0]&&s.default.getChildren(s.default.getChildren(a)[0]).length)){if(s.default.isEmbellished(a)||s.default.isType(a,\"TeXAtom\")&&s.default.getTexClass(a)===i.TEXCLASS.REL){var o=t.nodeFactory.create(\"node\",\"mi\");e.unshift(o)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var a,o,i=n||t.stack.env.font,s=i?{mathvariant:i}:{},u=[],p=0,f=0,d=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;p<e.length;)if(\"$\"===(a=e.charAt(p++)))\"$\"===d&&0===h?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-1),{},t.configuration).mml()]),u.push(o),d=\"\",f=p):\"\"===d&&(f<p-1&&u.push(g(t,e.slice(f,p-1),s)),d=\"$\",f=p);else if(\"{\"===a&&\"\"!==d)h++;else if(\"}\"===a)if(\"}\"===d&&0===h){var m=new l.default(e.slice(f,p),{},t.configuration).mml();o=t.create(\"node\",\"TeXAtom\",[m],s),u.push(o),d=\"\",f=p}else\"\"!==d&&h&&h--;else if(\"\\\\\"===a)if(\"\"===d&&e.substr(p).match(/^(eq)?ref\\s*\\{/)){var v=RegExp[\"$&\"].length;f<p-1&&u.push(g(t,e.slice(f,p-1),s)),d=\"}\",f=p-1,p+=v}else\"(\"===(a=e.charAt(p++))&&\"\"===d?(f<p-2&&u.push(g(t,e.slice(f,p-2),s)),d=\")\",f=p):\")\"===a&&\")\"===d&&0===h?(o=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(f,p-2),{},t.configuration).mml()]),u.push(o),d=\"\",f=p):a.match(/[${}\\\\]/)&&\"\"===d&&(p--,e=e.substr(0,p-1)+e.substr(p));if(\"\"!==d)throw new c.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return f<e.length&&u.push(g(t,e.slice(f),s)),null!=r?u=[t.create(\"node\",\"mstyle\",u,{displaystyle:!1,scriptlevel:r})]:u.length>1&&(u=[t.create(\"node\",\"mrow\",u)]),u},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",a=\"\",o=0;o<r.length;){var i=r.charAt(o++);if(\"\\\\\"===i)n+=i+r.charAt(o++);else if(\"#\"===i)if(\"#\"===(i=r.charAt(o++)))n+=i;else{if(!i.match(/[1-9]/)||parseInt(i,10)>e.length)throw new c.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");a=v(t,v(t,a,n),e[parseInt(i,10)-1]),n=\"\"}else n+=i}return v(t,a,n)},t.addArgs=v,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new c.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var o,i;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,a,o,i,s={},l=t;for(;l;)o=(e=n(b(l,[\"=\",\",\"]),3))[0],a=e[1],l=e[2],\"=\"===a?(i=(r=n(b(l,[\",\"]),3))[0],a=r[1],l=r[2],i=\"false\"===i||\"true\"===i?JSON.parse(i):i,s[o]=i):o&&(s[o]=!0);return s}(t);if(e)try{for(var l=a(Object.keys(s)),u=l.next();!u.done;u=l.next()){var p=u.value;if(!e.hasOwnProperty(p)){if(r)throw new c.default(\"InvalidOption\",\"Invalid optional argument: %1\",p);delete s[p]}}}catch(t){o={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(o)throw o.error}}return s}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(4),s=r(23),l=r(2),c=r(5),u=function(){function t(t,e,r){var a,o;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var i,l=e.hasOwnProperty(\"isInner\"),c=e.isInner;if(delete e.isInner,e){i={};try{for(var u=n(Object.keys(e)),p=u.next();!p.done;p=u.next()){var f=p.value;i[f]=e[f]}}catch(t){a={error:t}}finally{try{p&&!p.done&&(o=u.return)&&o.call(u)}finally{if(a)throw a.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,i,!l||c),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var a=n(Array.from(this.configuration.handlers.keys())),o=a.next();!o.done;o=a.next()){var i=o.value;r+=i+\": \"+this.configuration.handlers.get(i)+\"\\n\"}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof c.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var a=n(t),o=a.next();!o.done;o=a.next()){var i=o.value;this.stack.Push(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var a=this.getCodePoint();return this.i+=a.length,a},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=a(i.default.matchDimen(e),2),n=r[0],o=r[1];if(n)return n+o}else{e=this.string.slice(this.i);var s=a(i.default.matchDimen(e,!0),3),c=(n=s[0],o=s[1],s[2]);if(n)return this.i+=c,n+o}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var a=this.i,o=this.GetNext();switch(this.i+=o.length,o){case\"\\\\\":o+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&o===e)return this.string.slice(r,a)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=i.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.default=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(15),o=r(3),i=r(2),s=r(6),l=r(7),c=r(4),u=r(5),p=r(9),f=r(13);r(71),r(83),r(84);var d={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var a=new s.default(e,r,t.configuration),o=a.mml(),i=a.stack.global;if(i.leftRoot||i.upRoot){var l={};i.leftRoot&&(l.width=i.leftRoot),i.upRoot&&(l.voffset=i.upRoot,l.height=i.upRoot),o=t.create(\"node\",\"mpadded\",[o],l)}return r.inRoot=n,o}d.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},d.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},d.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},f.entities.nbsp))},d.Space=function(t,e){},d.Superscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var c=o.default.getProperty(s,\"movesupsub\"),u=o.default.isType(s,\"msubsup\")?s.sup:s.over;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sup)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.over)&&!o.default.getProperty(s,\"subsupOK\"))throw new i.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(c?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),u=s.over):u=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:u,primes:a,movesupsub:c}))},d.Subscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var c=o.default.getProperty(s,\"movesupsub\"),u=o.default.isType(s,\"msubsup\")?s.sub:s.under;if(o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")&&o.default.getChildAt(s,s.sub)||o.default.isType(s,\"munderover\")&&!o.default.isType(s,\"mover\")&&o.default.getChildAt(s,s.under)&&!o.default.getProperty(s,\"subsupOK\"))throw new i.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");o.default.isType(s,\"msubsup\")&&!o.default.isType(s,\"msup\")||(c?((!o.default.isType(s,\"munderover\")||o.default.isType(s,\"mover\")||o.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),u=s.under):u=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:u,primes:a,movesupsub:c}))},d.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),o.default.isType(r,\"msubsup\")&&!o.default.isType(r,\"msup\")&&o.default.getChildAt(r,r.sup))throw new i.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=f.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===f.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var a=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,a))},d.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},d.Hash=function(t,e){throw new i.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},d.SetFont=function(t,e,r){t.stack.env.font=r},d.SetStyle=function(t,e,r,n,a){t.stack.env.style=r,t.stack.env.level=a,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:a}))},d.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},d.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),a=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(a)},d.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},d.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:u.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new i.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:u.TEXCLASS.OPEN}),t.Push(n)},d.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:u.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},d.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:u.TEXCLASS.OP},r);t.Push(n)},d.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||o.default.getTexClass(o.default.getCoreMO(n))!==u.TEXCLASS.OP&&null==o.default.getProperty(n,\"movesupsub\"))throw new i.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var a,s=t.stack.Top();o.default.isType(n,\"munderover\")&&!r?(a=t.create(\"node\",\"msubsup\"),o.default.copyChildren(n,a),n=s.Last=a):o.default.isType(n,\"msubsup\")&&r&&(a=t.create(\"node\",\"munderover\"),o.default.copyChildren(n,a),n=s.Last=a),o.default.setProperty(n,\"movesupsub\",!!r),o.default.setProperties(o.default.getCoreMO(n),{movablelimits:!1}),(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1})},d.Over=function(t,e,r,n){var a=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(a.setProperty(\"open\",r),a.setProperty(\"close\",n)):e.match(/withdelims$/)&&(a.setProperty(\"open\",t.GetDelimiter(e)),a.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?a.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&a.setProperty(\"thickness\",0),t.Push(a)},d.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.create(\"node\",\"mfrac\",[r,n]);t.Push(a)},d.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var a=new s.default(n,t.stack.env,t.configuration).mml();a=r?t.create(\"node\",\"mroot\",[a,m(t,r)]):t.create(\"node\",\"msqrt\",[a]),t.Push(a)},d.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),a=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(a)},d.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new i.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new i.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new i.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},d.Accent=function(t,e,r,n){var a=t.ParseArg(e),i=c.default.getFontDef(t);i.accent=!0;var s=o.default.createEntity(r),l=t.create(\"token\",\"mo\",i,s);o.default.setAttribute(l,\"stretchy\",!!n);var u=o.default.isEmbellished(a)?o.default.getCoreMO(a):a;o.default.isType(u,\"mo\")&&o.default.setProperties(u,{movablelimits:!1});var p=t.create(\"node\",\"munderover\");o.default.setChild(p,0,a),o.default.setChild(p,1,null),o.default.setChild(p,2,l);var f=t.create(\"node\",\"TeXAtom\",[p]);t.Push(f)},d.UnderOver=function(t,e,r,n,a){var i,s=t.ParseArg(e),l=o.default.getForm(s);(l&&l[3]&&l[3].movablelimits||o.default.getProperty(s,\"movablelimits\"))&&o.default.setProperties(s,{movablelimits:!1}),o.default.isType(s,\"munderover\")&&o.default.isEmbellished(s)&&(o.default.setProperties(o.default.getCoreMO(s),{lspace:0,rspace:0}),i=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[i,s]));var c=t.create(\"node\",\"munderover\",[s]),p=o.default.createEntity(r);i=t.create(\"token\",\"mo\",{stretchy:!0,accent:!a},p),o.default.setChild(c,\"o\"===e.charAt(1)?c.over:c.under,i);var f=c;n&&(f=t.create(\"node\",\"TeXAtom\",[c],{texClass:u.TEXCLASS.OP,movesupsub:!0})),o.default.setProperty(f,\"subsupOK\",!0),t.Push(f)},d.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.getAttribute(n,\"movablelimits\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"mover\",[n,r]);t.Push(a)},d.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(o.default.isType(n,\"mo\")||o.default.getProperty(n,\"movablelimits\"))&&o.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"munder\",[n,r]);t.Push(a)},d.TeXAtom=function(t,e,r){var n,a,o,i={texClass:r};if(r===u.TEXCLASS.OP){i.movesupsub=i.movablelimits=!0;var c=t.GetArgument(e),p=c.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);p?(i.mathvariant=l.TexConstant.Variant.NORMAL,a=t.create(\"token\",\"mi\",i,p[1])):(o=new s.default(c,t.stack.env,t.configuration).mml(),a=t.create(\"node\",\"TeXAtom\",[o],i)),n=t.itemFactory.create(\"fn\",a)}else o=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[o],i);t.Push(n)},d.MmlToken=function(t,e){var r,n=t.GetArgument(e),a=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new i.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==a;){var u=a.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!u)throw new i.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",a);if(!r.attributes.hasDefault(u[1])&&!h[u[1]])throw new i.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",u[1],n);var p=c.default.MmlFilterAttribute(t,u[1],u[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));p&&(\"true\"===p.toLowerCase()?p=!0:\"false\"===p.toLowerCase()&&(p=!1),l[u[1]]=p),a=a.substr(u[0].length)}var f=t.create(\"text\",s);r.appendChild(f),o.default.setProperties(r,l),t.Push(r)},d.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},d.Phantom=function(t,e,r,n){var a=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(a=t.create(\"node\",\"mpadded\",[a]),n&&(o.default.setAttribute(a,\"height\",0),o.default.setAttribute(a,\"depth\",0)),r&&o.default.setAttribute(a,\"width\",0));var i=t.create(\"node\",\"TeXAtom\",[a]);t.Push(i)},d.Smash=function(t,e){var r=c.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":o.default.setAttribute(n,\"depth\",0);break;case\"t\":o.default.setAttribute(n,\"height\",0);break;default:o.default.setAttribute(n,\"height\",0),o.default.setAttribute(n,\"depth\",0)}var a=t.create(\"node\",\"TeXAtom\",[n]);t.Push(a)},d.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&o.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},d.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},d.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var a=r;r=n,n=a}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},d.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},d.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var a=t.create(\"node\",\"mspace\",[],n);t.Push(a)},d.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),a=t.GetDimen(e),i=t.create(\"node\",\"mspace\",[],{width:n,height:a,mathbackground:t.stack.env.color||\"black\"});r&&(i=t.create(\"node\",\"mpadded\",[i],{voffset:r}),r.match(/^\\-/)?(o.default.setAttribute(i,\"height\",r),o.default.setAttribute(i,\"depth\",\"+\"+r.substr(1))):o.default.setAttribute(i,\"height\",\"+\"+r)),t.Push(i)},d.MakeBig=function(t,e,r,n){var a=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",o=t.GetDelimiter(e,!0),i=t.create(\"token\",\"mo\",{minsize:a,maxsize:a,fence:!0,stretchy:!0,symmetric:!0},o),s=t.create(\"node\",\"TeXAtom\",[i],{texClass:r});t.Push(s)},d.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),a=t.create(\"node\",\"munderover\");o.default.setChild(a,0,n),o.default.setChild(a,1,null),o.default.setChild(a,2,r);var i=t.create(\"node\",\"TeXAtom\",[a],{texClass:u.TEXCLASS.REL});t.Push(i)},d.HBox=function(t,e,r,n){t.PushAll(c.default.internalMath(t,t.GetArgument(e),r,n))},d.FBox=function(t,e){var r=c.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},d.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},d.Dots=function(t,e){var r=o.default.createEntity(\"2026\"),n=o.default.createEntity(\"22EF\"),a=t.create(\"token\",\"mo\",{stretchy:!1},r),i=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:a,cdots:i}))},d.Matrix=function(t,e,r,n,a,o,s,l,c,u){var p=t.GetNext();if(\"\"===p)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===p?t.i++:(t.string=p+\"}\"+t.string.slice(t.i+1),t.i=0);var f=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);f.arraydef={rowspacing:s||\"4pt\",columnspacing:o||\"1em\"},c&&f.setProperty(\"isCases\",!0),u&&(f.setProperty(\"isNumbered\",!0),f.arraydef.side=u),(r||n)&&(f.setProperty(\"open\",r),f.setProperty(\"close\",n)),\"D\"===l&&(f.arraydef.displaystyle=!0),null!=a&&(f.arraydef.columnalign=a),t.Push(f)},d.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,a=-1,o=t.i,s=r.length;o<s;){var l=r.charAt(o);if(\"{\"===l)n++,o++;else if(\"}\"===l)0===n?s=0:(0===--n&&a<0&&(a=o-t.i),o++);else{if(\"&\"===l&&0===n)throw new i.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(o).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:o+=2:o++}}var u=r.substr(t.i,o-t.i);if(!u.match(/^\\s*\\\\text[^a-zA-Z]/)||a!==u.replace(/\\s+$/,\"\").length-1){var p=c.default.internalMath(t,u,0);t.PushAll(p),t.i=o}}},d.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},d.CrLaTeX=function(t,e,r){var o;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),u=n(c.default.matchDimen(s),2),p=u[0],f=u[1];if(s&&!p)throw new i.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);o=p+f}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var d,h=t.stack.Top();if(h instanceof a.ArrayItem){if(o&&h.arraydef.rowspacing){var m=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var g=c.default.dimen2em(m[0]);h.setProperty(\"rowspacing\",g)}for(var v=h.getProperty(\"rowspacing\");m.length<h.table.length;)m.push(c.default.Em(v));m[h.table.length-1]=c.default.Em(Math.max(0,v+c.default.dimen2em(o))),h.arraydef.rowspacing=m.join(\" \")}}else o&&(d=t.create(\"node\",\"mspace\",[],{depth:o}),t.Push(d)),d=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(d)},d.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof a.ArrayItem)||n.Size())throw new i.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var o=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];o.length<n.table.length;)o.push(\"none\");o[n.table.length-1]=r,n.arraydef.rowlines=o.join(\" \")}else n.frame.push(\"top\")},d.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof a.ArrayItem))throw new i.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},d.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new i.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var a=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(a)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},d.Array=function(t,e,r,n,a,o,i,s,l){a||(a=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var c=(\"c\"+a).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var u=t.itemFactory.create(\"array\");return u.arraydef={columnalign:a,columnspacing:o||\"1em\",rowspacing:i||\"4pt\"},c.match(/[|:]/)&&(c.charAt(0).match(/[|:]/)&&(u.frame.push(\"left\"),u.dashed=\":\"===c.charAt(0)),c.charAt(c.length-1).match(/[|:]/)&&u.frame.push(\"right\"),c=c.substr(1,c.length-2),u.arraydef.columnlines=c.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&u.setProperty(\"open\",t.convertDelimiter(r)),n&&u.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?u.arraydef.displaystyle=!0:s&&(u.arraydef.displaystyle=!1),\"S\"===s&&(u.arraydef.scriptlevel=1),l&&(u.arraydef.useHeight=!1),t.Push(e),u},d.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=d.Array(t,e);return c.default.setArrayAlign(n,r)},d.Equation=function(t,e,r){return t.Push(e),c.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},d.EqnArray=function(t,e,r,n,a,o){t.Push(e),n&&c.default.checkEqnEnv(t),a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var i=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return i.arraydef={displaystyle:!0,columnalign:a,columnspacing:o||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},i},d.HandleNoTag=function(t,e){t.tags.notag()},d.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new i.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new i.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new p.Label}},d.HandleRef=function(t,e,r){var n=t.GetArgument(e),a=t.tags.allLabels[n]||t.tags.labels[n];a||(t.tags.refUpdate||(t.tags.redo=!0),a=new p.Label);var o=a.tag;r&&(o=t.tags.formatTag(o));var i=t.create(\"node\",\"mrow\",c.default.internalMath(t,o),{href:t.tags.formatUrl(a.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(i)},d.Macro=function(t,e,r,n,a){if(n){var o=[];if(null!=a){var s=t.GetBrackets(e);o.push(null==s?a:s)}for(var l=o.length;l<n;l++)o.push(t.GetArgument(e));r=c.default.substituteArgs(t,o,r)}if(t.string=c.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},d.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,a,o]))},e.default=d},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var i=r(6),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,a,o,i,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===a&&(a=\"\"),void 0===o&&(o=\"\"),void 0===i&&(i=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=a,this.tagFormat=o,this.noTag=i,this.labelId=s};e.TagInfo=l;var c=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),a=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[a],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new i.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(c);e.NoTags=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(c);e.AllTags=p,function(t){var e=new Map([[\"none\",u],[\"all\",p]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var a=o(Object.keys(e)),i=a.next();!i.done;i=a.next()){var s=i.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(2),c=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,i(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,i([t],r))},t}();e.MmlStack=c;var u=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,r)||this;return a.factory=e,a.global={},a._properties={},a.isOpen&&(a._env={}),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=o(this.getErrors(t.kind),2),n=r[0],a=r[1];throw new l.default(n,a,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var a=n.value;delete this.env[a]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(c);e.BaseItem=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=r(3),s=r(7),l=r(4);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,a=t.string.slice(t.i-1).match(n),o=l.default.getFontDef(t);a?(r=t.create(\"token\",\"mn\",o,a[0].replace(/[{}]/g,\"\")),t.i+=a[0].length-1):r=t.create(\"token\",\"mo\",o,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);i.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var o=n[0],i=t.itemFactory.create(\"begin\").setProperties({name:e,end:o});i=r.apply(void 0,a([t,i],n.slice(1))),t.Push(i)}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var a=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=a},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(16),l=r(13),c=r(5),u=r(2),p=r(4),f=r(3),d=r(11),h=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.StartItem=h;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(d.BaseItem);e.OpenItem=g;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CloseItem=v;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=o(this.Peek(2),2),r=e[0],n=e[1];return!f.default.isType(r,\"msubsup\")||f.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(f.default.setChild(r,r.sup,n),[[r,t],!0])},e}(d.BaseItem);e.PrimeItem=y;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return d.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)f.default.setChild(r,2,this.getProperty(\"primes\"));else{f.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var a=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=a}return f.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&f.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var o=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(u.default.bind.apply(u.default,i([void 0,o[0],o[1]],o.splice(2))))}return null},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(d.BaseItem);e.SubsupItem=b;var x=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new u.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&f.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(f.default.setProperty(r,\"withDelims\",!0),r=p.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(d.BaseItem);e.OverItem=x;var A=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",p.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(d.BaseItem);e.LeftItem=A;var M=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.RightItem=M;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new u.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?d.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new u.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.BeginItem=_;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.EndItem=C;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(d.BaseItem);e.StyleItem=P;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new u.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.PositionItem=w;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CellItem=S;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.MmlItem=T;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return d.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(f.default.isType(n,\"mstyle\")&&n.childNodes.length&&f.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||f.default.isType(n,\"mspace\"))return[[r,e],!0];f.default.isEmbellished(n)&&(n=f.default.getCoreMO(n));var a=f.default.getForm(n);if(null!=a&&[0,0,1,1,0,1,1,0,0,0][a[2]])return[[r,e],!0]}var o=this.create(\"token\",\"mo\",{texClass:c.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,o,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(d.BaseItem);e.FnItem=k;var O=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;if(t.isKind(\"mml\")&&(f.default.isType(t.First,\"mo\")||f.default.isType(t.First,\"mi\")||f.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=f.default.getText(e)).length&&!f.default.getProperty(e,\"movesupsub\")&&1===f.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),f.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),f.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var a=this.create(\"node\",\"mtext\",[],{},n),o=this.create(\"node\",\"mpadded\",[a],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[o],{texClass:c.TEXCLASS.REL}),t],!0]},e}(d.BaseItem);e.NotItem=O;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&f.default.isEmbellished(r)){var n=f.default.getTexClass(f.default.getCoreMO(r));n!==c.TEXCLASS.BIN&&n!==c.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(d.BaseItem);e.DotsItem=E;var I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),d.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),d.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?f.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||f.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=p.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var a=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[a],!0];throw new u.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[a,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&f.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&f.default.setAttribute(t,\"columnalign\",f.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(d.BaseItem);e.ArrayItem=I;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(r[0],r[2],r[1]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&p.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(I);e.EqnArrayItem=N;var q=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"equation\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new u.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.EquationItem=q},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var o,i=r(72),s=r(73);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(o=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new i.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var a,s;void 0===r&&(r=i.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),c=l.next();!c.done;c=l.next()){var u=c.value,p=o.getMap(u);if(!p)return void this.warn(\"Configuration \"+u+\" not found! Omitted.\");this._configuration.add(p,r)}}catch(t){a={error:t}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var o=n(this._configuration),i=o.next();!i.done;i=o.next()){var s=i.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}var l=a(t,2),c=l[0],u=l[1];this._fallback.toArray()[0].item(c,u)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;r.push(i.name)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;if(i.contains(t))return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this._configuration),o=a.next();!o.done;o=a.next()){var i=o.value.item;if(i.name===t)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var c=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var a,o;void 0===r&&(r=i.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),c=s.next();!c.done;c=s.next()){var u=c.value,p=this.get(u);p||(p=new l,this.set(u,p)),p.add(t[u],e[u],r)}}catch(t){a={error:t}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this.map.values()),o=a.next();!o.done;o=a.next()){var i=o.value.retrieve(t);if(i)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var n=r(4),a=r(3),o=r(7),i=r(6),s=r(2),l=r(14),c=r(8),u=r(5);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,a,o,i,s){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),u=c.default.EqnArray(t,e,r,a,o,i,s);return n.default.setArrayAlign(u,l)},e.AmsMethods.AlignAt=function(t,r,a,o){var i,l,c=r.getName(),u=\"\",p=[];if(o||(l=t.GetBrackets(\"\\\\begin{\"+c+\"}\")),(i=t.GetArgument(\"\\\\begin{\"+c+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+c+\"}\");for(var f=parseInt(i,10);f>0;)u+=\"rl\",p.push(\"0em 0em\"),f--;var d=p.join(\" \");if(o)return e.AmsMethods.EqnArray(t,r,a,o,u,d);var h=e.AmsMethods.EqnArray(t,r,a,o,u,d);return n.default.setArrayAlign(h,l)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),n.default.checkEqnEnv(t);var a=t.itemFactory.create(\"multline\",r,t.stack);return a.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",o=n.default.trimSpaces(t.GetArgument(r));\"\\\\\"===o.charAt(0)&&(o=o.substr(1));var i=t.GetArgument(r);i.match(/\\\\text/)||(i=i.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(o,new l.Macro(o,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+i+\"}\"+a]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",a=n.default.trimSpaces(t.GetArgument(e));a.match(/\\\\text/)||(a=a.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+a+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),n=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=n)},e.AmsMethods.MultiIntegral=function(t,e,r){var n=t.GetNext();if(\"\\\\\"===n){var a=t.i;n=t.GetArgument(e),t.i=a,\"\\\\limits\"===n&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,o,s){var l={width:\"+\"+n.default.Em((o+s)/18),lspace:n.default.Em(o/18)},c=t.GetBrackets(e),p=t.ParseArg(e),f=t.create(\"token\",\"mo\",{stretchy:!0,texClass:u.TEXCLASS.REL},String.fromCodePoint(r)),d=t.create(\"node\",\"munderover\",[f]),h=t.create(\"node\",\"mpadded\",[p],l);if(a.default.setAttribute(h,\"voffset\",\".15em\"),a.default.setChild(d,d.over,h),c){var m=new i.default(c,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[m],l),a.default.setAttribute(h,\"voffset\",\"-.24em\"),a.default.setChild(d,d.under,h)}a.default.setProperty(d,\"subsupOK\",!0),t.Push(d)},e.AmsMethods.HandleShove=function(t,e,r){var n=t.stack.Top();if(\"multline\"!==n.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(n.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);n.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=n.default.trimSpaces(t.GetBrackets(e,\"\")),l=t.GetArgument(e),c=t.GetArgument(e),u={l:o.TexConstant.Align.LEFT,r:o.TexConstant.Align.RIGHT,\"\":\"\"},p=new i.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),f=new i.default(\"\\\\strut\\\\textstyle{\"+c+\"}\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mfrac\",[p,f]);if(null==(r=u[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&a.default.setProperties(d,{numalign:r,denomalign:r}),t.Push(d)},e.AmsMethods.Genfrac=function(t,e,r,o,i,l){null==r&&(r=t.GetDelimiterArg(e)),null==o&&(o=t.GetDelimiterArg(e)),null==i&&(i=t.GetArgument(e)),null==l&&(l=n.default.trimSpaces(t.GetArgument(e)));var c=t.ParseArg(e),u=t.ParseArg(e),p=t.create(\"node\",\"mfrac\",[c,u]);if(\"\"!==i&&a.default.setAttribute(p,\"linethickness\",i),(r||o)&&(a.default.setProperty(p,\"withDelims\",!0),p=n.default.fixedFence(t.configuration,r,p,o)),\"\"!==l){var f=parseInt(l,10),d=[\"D\",\"T\",\"S\",\"SS\"][f];if(null==d)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);p=t.create(\"node\",\"mstyle\",[p]),\"D\"===d?a.default.setProperties(p,{displaystyle:!0,scriptlevel:0}):a.default.setProperties(p,{displaystyle:!1,scriptlevel:f-1})}t.Push(p)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),a=n.default.trimSpaces(t.GetArgument(e));t.tags.tag(a,r)},e.AmsMethods.HandleNoTag=c.default.HandleNoTag,e.AmsMethods.HandleRef=c.default.HandleRef,e.AmsMethods.Macro=c.default.Macro,e.AmsMethods.Accent=c.default.Accent,e.AmsMethods.Tilde=c.default.Tilde,e.AmsMethods.Array=c.default.Array,e.AmsMethods.Spacer=c.default.Spacer,e.AmsMethods.NamedOp=c.default.NamedOp,e.AmsMethods.EqnArray=c.default.EqnArray},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var o=r(3),i=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,a){void 0===r&&(r=[]),void 0===n&&(n={});var i=t.mmlFactory.create(e),s=i.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?i.setChildren(o.default.getChildren(r[0])):i.setChildren(r);else{for(var l=[],c=0,u=void 0;u=r[c];c++)if(u.isInferred){var p=t.mmlFactory.create(\"mrow\",{},o.default.getChildren(u));o.default.copyAttributes(u,p),l.push(p)}else l.push(u);i.setChildren(l)}return a&&i.appendChild(a),o.default.setProperties(i,n),i},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var a=t.create(\"text\",n);return t.create(\"node\",e,[],r,a)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,o=n.apply(void 0,a([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],o),o},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=i},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var i=r(0),s=r(16),l=r(2),c=r(3),u=r(1),p=r(15),f=r(9);function d(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),a=t.create(\"token\",\"mo\",r,n?n.char:e);c.default.setProperty(a,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",a),t.Push(a)}r(82),new u.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(f.AbstractTags);e.BaseTags=h,e.BaseConfiguration=i.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:d,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(a={},a[p.StartItem.prototype.kind]=p.StartItem,a[p.StopItem.prototype.kind]=p.StopItem,a[p.OpenItem.prototype.kind]=p.OpenItem,a[p.CloseItem.prototype.kind]=p.CloseItem,a[p.PrimeItem.prototype.kind]=p.PrimeItem,a[p.SubsupItem.prototype.kind]=p.SubsupItem,a[p.OverItem.prototype.kind]=p.OverItem,a[p.LeftItem.prototype.kind]=p.LeftItem,a[p.RightItem.prototype.kind]=p.RightItem,a[p.BeginItem.prototype.kind]=p.BeginItem,a[p.EndItem.prototype.kind]=p.EndItem,a[p.StyleItem.prototype.kind]=p.StyleItem,a[p.PositionItem.prototype.kind]=p.PositionItem,a[p.CellItem.prototype.kind]=p.CellItem,a[p.MmlItem.prototype.kind]=p.MmlItem,a[p.FnItem.prototype.kind]=p.FnItem,a[p.NotItem.prototype.kind]=p.NotItem,a[p.DotsItem.prototype.kind]=p.DotsItem,a[p.ArrayItem.prototype.kind]=p.ArrayItem,a[p.EqnArrayItem.prototype.kind]=p.EqnArrayItem,a[p.EquationItem.prototype.kind]=p.EquationItem,a),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,r){\"use strict\";var n,a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var i=r(3),s=r(4),l=null,c=null,u=function(t){return c.root=t,l.outputJax.getBBox(c,l).w},p=function(t){for(var e=0;t&&!i.default.isType(t,\"mtable\");){if(i.default.isType(t,\"text\"))return null;i.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},f=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},d=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},h=function(t){return d(t,0)},m=function(t){return d(t,t.childNodes.length-1)},g=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},v=function(t){for(;t&&!i.default.isType(t,\"mtd\");)t=t.parent;return t},y=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},b=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},x=function(t,e,r){void 0===r&&(r=!1);var n=0;if(t===e)return n;if(t!==e.parent){var a=t.childNodes,o=r?a.length-1:0;i.default.isType(a[o],\"mspace\")&&(n+=u(a[o])),t=e.parent}if(t===e)return n;var s=t.childNodes,l=r?s.length-1:0;return s[l]!==e&&(n+=u(s[l])),n},A=function(t,r){void 0===r&&(r=!1);var n=p(t),a=g(n,e.getProperty(n,\"inferenceRule\"));return x(t,n,r)+(u(n)-u(a))/2},M=function(t,r,n,a){if(void 0===a&&(a=!1),e.getProperty(r,\"inferenceRule\")||e.getProperty(r,\"labelledRule\")){var o=t.nodeFactory.create(\"node\",\"mrow\");r.parent.replaceChild(o,r),o.setChildren([r]),_(r,o),r=o}var l=a?r.childNodes.length-1:0,c=r.childNodes[l];i.default.isType(c,\"mspace\")?i.default.setAttribute(c,\"width\",s.default.Em(s.default.dimen2em(i.default.getAttribute(c,\"width\"))+n)):(c=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(n)}),a?r.appendChild(c):(c.parent=r,r.childNodes.unshift(c)))},_=function(t,r){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(n){var a=e.getProperty(t,n);null!=a&&(e.setProperty(r,n,a),e.removeProperty(t,n))}))},C=function(t,r,n,a,o){var i=t.nodeFactory.create(\"node\",\"mspace\",[],{width:s.default.Em(o)});if(\"left\"===a){var l=r.childNodes[n].childNodes[0];i.parent=l,l.childNodes.unshift(i)}else r.childNodes[n].appendChild(i);e.setProperty(r.parent,\"sequentAdjust_\"+a,o)},P=function(t,r){for(var n=r.pop();r.length;){var o=r.pop(),i=a(w(n,o),2),s=i[0],l=i[1];e.getProperty(n.parent,\"axiom\")&&(C(t,s<0?n:o,0,\"left\",Math.abs(s)),C(t,l<0?n:o,2,\"right\",Math.abs(l))),n=o}},w=function(t,e){var r=u(t.childNodes[2]),n=u(e.childNodes[2]);return[u(t.childNodes[0])-u(e.childNodes[0]),r-n]};e.balanceRules=function(t){var r,n;c=new t.document.options.MathItem(\"\",null,t.math.display);var a=t.data;!function(t){var r=t.nodeLists.sequent;if(r)for(var n=r.length-1,a=void 0;a=r[n];n--)if(e.getProperty(a,\"sequentProcessed\"))e.removeProperty(a,\"sequentProcessed\");else{var o=[],i=b(a);if(1===e.getProperty(i,\"inference\")){for(o.push(a);1===e.getProperty(i,\"inference\");){i=p(i);var s=h(f(i,e.getProperty(i,\"inferenceRule\"))),l=e.getProperty(s,\"inferenceRule\")?g(s,e.getProperty(s,\"inferenceRule\")):s;e.getProperty(l,\"sequent\")&&(a=l.childNodes[0],o.push(a),e.setProperty(a,\"sequentProcessed\",!0)),i=s}P(t,o)}}}(a);var i=a.nodeLists.inference||[];try{for(var s=o(i),l=s.next();!l.done;l=s.next()){var u=l.value,d=e.getProperty(u,\"proof\"),_=p(u),C=f(_,e.getProperty(_,\"inferenceRule\")),w=h(C);if(e.getProperty(w,\"inference\")){var S=A(w);if(S){M(a,w,-S);var T=x(u,_,!1);M(a,u,S-T)}}var k=m(C);if(null!=e.getProperty(k,\"inference\")){var O=A(k,!0);M(a,k,-O,!0);var E=x(u,_,!0),I=e.getProperty(u,\"maxAdjust\");null!=I&&(O=Math.max(O,I));var N=void 0;if(!d&&(N=v(u))){var q=y(N);if(q){var L=a.nodeFactory.create(\"node\",\"mspace\",[],{width:O-E+\"em\"});q.appendChild(L),u.removeProperty(\"maxAdjust\")}else{var F=b(N);F&&(O=e.getProperty(F,\"maxAdjust\")?Math.max(e.getProperty(F,\"maxAdjust\"),O):O,e.setProperty(F,\"maxAdjust\",O))}}else M(a,e.getProperty(u,\"proof\")?u:u.parent,O-E,!0)}}}catch(t){r={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}};var S=((n={}).bspr_maxAdjust=!0,n);e.setProperty=function(t,e,r){i.default.setProperty(t,\"bspr_\"+e,r)},e.getProperty=function(t,e){return i.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var r=[];t.getPropertyNames().forEach((function(e){!S[e]&&e.match(RegExp(\"^bspr_\"))&&r.push(e+\":\"+t.getProperty(e))})),r.length&&i.default.setAttribute(t,\"semantics\",r.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(l=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){l=null}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,a=r(4),o=r(2),i=r(14);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var n in e.attributes)r.push(n),r.push(e.attributes[n]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],n={},a=2;a<t.length;a+=2)n[t[a]]=t[a+1];return new i.Symbol(e,r,n)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new o.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return a.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var n=t.GetNext(),a=[],i=0,s=t.i;t.i<t.string.length;){if(\"#\"===(n=t.GetNext())){if(s!==t.i&&(a[i]=t.string.substr(s,t.i-s)),!(n=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new o.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(n)!==++i)throw new o.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===n)return s!==t.i&&(a[i]=t.string.substr(s,t.i-s)),a.length>0?[i.toString()].concat(a):i;t.i++}throw new o.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,n){if(null==n)return t.GetArgument(r);for(var a=t.i,i=0,s=0;t.i<t.string.length;){var l=t.string.charAt(t.i);if(\"{\"===l)t.i===a&&(s=1),t.GetArgument(r),i=t.i-a;else{if(e(t,n))return s&&(a++,i-=2),t.string.substr(a,i);if(\"\\\\\"===l){t.i++,i++,s=0;var c=t.string.substr(t.i).match(/[a-z]+|./i);c&&(t.i+=c[0].length,i=t.i-a)}else t.i++,i++,s=0}}throw new o.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new i.Symbol(r,n,a))},t.addMacro=function(e,r,n,a,o){void 0===o&&(o=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new i.Macro(o||r,n,a))},t.addEnvironment=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new i.Macro(r,n,a))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),e.default=n},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(3),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),c=l.next();!c.done;c=l.next()){var u=c.value;if(u){var p=i.default.isNode(u)?this._factory.create(\"mml\",u):u;p.global=this.global;var f=a(this.stack.length?this.Top().checkItem(p):[null,!0],2),d=f[0],h=f[1];h&&(d?(this.Pop(),this.Push.apply(this,o(d))):(this.stack.push(p),p.env?(p.copyEnv&&Object.assign(p.env,this.env),this.env=p.env):p.env=this.env))}}}catch(e){t={error:e}}finally{try{c&&!c.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(34),s=r(18),l=r(10),c=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new i.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,a([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],a=[];try{for(var i=o(n),s=i.next();!s.done;s=i.next()){var l=s.value;this.inTree(l)&&a.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}return this.nodeLists[t]=a,a},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var n=r(0),a=r(1),o=r(4);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,r){var n=t.GetArgument(r).replace(/,/g,\" \"),a=t.GetBrackets(r,\"\"),i=t.ParseArg(r),s=o.default.keyvalOptions(a,e.ENCLOSE_OPTIONS);s.notation=n,t.Push(t.create(\"node\",\"menclose\",[i],s))},new a.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=n.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(2),a=r(1),o=r(8),i=r(4),s=r(21),l={NewCommand:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),o=t.GetBrackets(e),c=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(a&&!(a=i.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,l.Macro,[c,a,o])},NewEnvironment:function(t,e){var r=i.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),o=t.GetBrackets(e),c=t.GetArgument(e),u=t.GetArgument(e);if(a&&!(a=i.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,l.BeginEnv,[!0,c,u,a,o])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),n=s.default.GetTemplate(t,e,\"\\\\\"+r),a=t.GetArgument(e);n instanceof Array?s.default.addMacro(t,r,l.MacroWithTemplate,[a].concat(n)):s.default.addMacro(t,r,l.Macro,[a,n])},Let:function(t,e){var r=s.default.GetCSname(t,e),n=t.GetNext();\"=\"===n&&(t.i++,n=t.GetNext());var o=t.configuration.handlers;if(\"\\\\\"!==n){t.i++;var i=o.get(\"delimiter\").lookup(n);i?s.default.addDelimiter(t,\"\\\\\"+r,i.char,i.attributes):s.default.addMacro(t,r,l.Macro,[n])}else{e=s.default.GetCSname(t,e);var c=o.get(\"delimiter\").lookup(\"\\\\\"+e);if(c)return void s.default.addDelimiter(t,\"\\\\\"+r,c.char,c.attributes);var u=o.get(\"macro\").applicable(e);if(!u)return;if(u instanceof a.MacroMap){var p=u.lookup(e);return void s.default.addMacro(t,r,p.func,p.args,p.symbol)}c=u.lookup(e);var f=s.default.disassembleSymbol(r,c);s.default.addMacro(t,r,(function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var a=s.default.assembleSymbol(r);return u.parser(t,a)}),f)}},MacroWithTemplate:function(t,e,r,a){for(var o=[],l=4;l<arguments.length;l++)o[l-4]=arguments[l];var c=parseInt(a,10);if(c){var u=[];if(t.GetNext(),o[0]&&!s.default.MatchParam(t,o[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var p=0;p<c;p++)u.push(s.default.GetParameter(t,e,o[p+1]));r=i.default.substituteArgs(t,u,r)}if(t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,n,a,o){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=n,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(a){var l=[];if(null!=o){var c=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");l.push(null==c?o:c)}for(var u=l.length;u<a;u++)l.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=i.default.substituteArgs(t,l,r),n=i.default.substituteArgs(t,[],n)}return t.string=i.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};l.Macro=o.default.Macro,e.default=l},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var a=r(0),o=r(56),i=r(21);r(89);var s=r(12),l=r(1);e.NewcommandConfiguration=a.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[o.BeginEnvItem.prototype.kind]=o.BeginEnvItem,n),options:{maxMacros:1e3},init:function(t){new l.DelimiterMap(i.default.NEW_DELIMITER,s.default.delimiter,{}),new l.CommandMap(i.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(i.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(a.Configuration.local({handler:{character:[],delimiter:[i.default.NEW_DELIMITER],macro:[i.default.NEW_DELIMITER,i.default.NEW_COMMAND],environment:[i.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var n=r(6),a=r(92),o=r(8);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var r,a,o=t.i,i=0;a=t.GetNext();)switch(r=t.i++,a){case\"\\\\\":\")\"===t.GetCS()&&(a=\"\\\\(\");case\"$\":if(0===i&&e===a){var s=t.texParser.configuration,l=new n.default(t.string.substr(o,r-o),t.stack.env,s).mml();return void t.PushMath(l)}break;case\"{\":i++;break;case\"}\":0===i&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),i--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var r=t.stack.env;t.envStack.push(r),t.stack.env=Object.assign({},r)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,r){t.text+=r},Accent:function(t,e,r){var n=t.ParseArg(name),a=t.create(\"token\",\"mo\",{},r);t.addAttributes(a),t.Push(t.create(\"node\",\"mover\",[n,a]))},Emph:function(t,e){var r=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:r}))},SetFont:function(t,e,r){t.saveText(),t.stack.env.mathvariant=r},SetSize:function(t,e,r){t.saveText(),t.stack.env.mathsize=r},CheckAutoload:function(t,e){var r=t.configuration.packageData.get(\"autoload\"),n=t.texParser;e=e.slice(1);var o=n.lookup(\"macro\",e);if(!o||r&&o._func===r.Autoload){if(n.parse(\"macro\",[n,e]),!o)return;a.retryAfter(Promise.resolve())}n.parse(\"macro\",[t,e])},Macro:o.default.Macro,Spacer:o.default.Spacer,Hskip:o.default.Hskip,rule:o.default.rule,Rule:o.default.Rule,HandleRef:o.default.HandleRef}},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var i=r(0),s=r(1),l=r(2),c=r(22),u=r(74),p=r(70),f=r(94),d=r(10),h=c.MathJax.config;function m(t,e){var r,a=t.parseOptions.options.require,o=t.parseOptions.packageData.get(\"require\").required,s=e.substr(a.prefix.length);if(o.indexOf(s)<0){o.push(s),function(t,e){var r,a;void 0===e&&(e=[]);var o=t.parseOptions.options.require.prefix;try{for(var i=n(e),s=i.next();!s.done;s=i.next()){var l=s.value;l.substr(0,o.length)===o&&m(t,l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}}(t,p.CONFIG.dependencies[e]);var l=i.ConfigurationHandler.get(s);if(l){var c=h[e]||{};l.options&&1===Object.keys(l.options).length&&l.options[s]&&((r={})[s]=c,c=r),t.configuration.add(l,t,c);var u=t.parseOptions.packageData.get(\"require\").configured;l.preprocessors.length&&!u.has(s)&&(u.set(s,!0),f.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,n=r.allow,a=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(n.hasOwnProperty(a)?n[a]:n.hasOwnProperty(e)?n[e]:r.defaultAllow))throw new l.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',a);u.Package.packages.has(a)?m(t.configuration.packageData.get(\"require\").jax,a):f.mathjax.retryAfter(p.Loader.load(a))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new l.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=i.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:o(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,n=r.prefix;if(n.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");p.CONFIG.paths[n]||(p.CONFIG.paths[n]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+n+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(76),l=r(10),c=r(32),u=r(33),p=r(3),f=r(6),d=r(2),h=r(24),m=r(9),g=r(0);r(19);var v=function(t){function e(r){void 0===r&&(r={});var n=this,a=i(l.separateOptions(r,e.OPTIONS,c.FindTeX.OPTIONS),3),o=a[0],s=a[1],p=a[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new c.FindTeX(p);var f=n.options.packages,d=n.configuration=e.configure(f),g=n._parseOptions=new h.default(d,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,o),d.config(n),e.tags(g,d),n.postFilters.add(u.default.cleanSubSup,-6),n.postFilters.add(u.default.setInherited,-5),n.postFilters.add(u.default.moveLimits,-4),n.postFilters.add(u.default.cleanStretchy,-3),n.postFilters.add(u.default.cleanAttributes,-2),n.postFilters.add(u.default.combineRelations,-1),n}return a(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new f.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof d.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&p.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=o(o({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=v},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,r(19),r(35),r(36),r(38),r(40),r(41),r(42),r(45),r(48),r(49),r(53),r(54),r(25),r(55),r(57),r(59),r(27),r(60),r(61),r(62),r(65),r(66),r(68),r(69),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var i=r(77),s=r(78),l=r(79),c=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],a=[];this.end={},this.env=this.sub=0;var o=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=o,o++),e.processEscapes&&a.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&a.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),a.length&&(n.push(\"(\"+a.join(\"|\")+\")\"),this.sub=o),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=o(e,2),a=n[0],i=n[1];t.push(s.quotePattern(a)),this.end[a]=[i,r,this.endPattern(i)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var a,i=o(n,3),s=i[0],c=i[1],u=i[2],p=u.lastIndex=r.index+r[0].length,f=0;a=u.exec(t);){if((a[1]||a[0])===s&&0===f)return l.protoItem(r[0],t.substr(p,a.index-p),a[0],e,r.index,a.index+a[0].length,c);\"{\"===a[0]?f++:\"}\"===a[0]&&f&&f--}return null},e.prototype.findMathInString=function(t,e,r){var n,a;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var o=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(a=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,o)]))&&(a.math=a.open+a.math+a.close,a.open=a.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var i=n[this.sub];o=n.index+n[this.sub].length;a=2===i.length?l.protoItem(\"\",i.substr(1),\"\",e,n.index,o):l.protoItem(\"\",i,\"\",e,n.index,o,!1)}else a=this.findEnd(r,e,n,this.end[n[0]]);a&&(t.push(a),this.start.lastIndex=a.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(i.AbstractFindMath);e.FindTeX=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a,o=r(5),i=r(3);!function(t){t.cleanStretchy=function(t){var e,r,a=t.data;try{for(var o=n(a.getList(\"fixStretchy\")),s=o.next();!s.done;s=o.next()){var l=s.value;if(i.default.getProperty(l,\"fixStretchy\")){var c=i.default.getForm(l);c&&c[3]&&c[3].stretchy&&i.default.setAttribute(l,\"stretchy\",!1);var u=l.parent;if(!(i.default.getTexClass(l)||c&&c[2])){var p=a.nodeFactory.create(\"node\",\"TeXAtom\",[l]);u.replaceChild(p,l),p.inheritAttributesFrom(l)}i.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,a,o=t.attributes;if(o)try{for(var i=n(o.getExplicitNames()),s=i.next();!s.done;s=i.next()){var l=s.value;o.attributes[l]===t.attributes.getInherited(l)&&delete o.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var a,s;try{for(var l=n(t.data.getList(\"mo\")),c=l.next();!c.done;c=l.next()){var u=c.value;if(!u.getProperty(\"relationsCombined\")&&u.parent&&(!u.parent||i.default.isType(u.parent,\"mrow\"))&&i.default.getTexClass(u)===o.TEXCLASS.REL){for(var p=u.parent,f=void 0,d=p.childNodes,h=d.indexOf(u)+1,m=i.default.getProperty(u,\"variantForm\");h<d.length&&(f=d[h])&&i.default.isType(f,\"mo\")&&i.default.getTexClass(f)===o.TEXCLASS.REL;){if(m!==i.default.getProperty(f,\"variantForm\")||!r(u,f)){null==u.attributes.getExplicit(\"rspace\")&&i.default.setAttribute(u,\"rspace\",\"0pt\"),null==f.attributes.getExplicit(\"lspace\")&&i.default.setAttribute(f,\"lspace\",\"0pt\");break}i.default.appendChildren(u,i.default.getChildren(f)),e([\"stretchy\",\"rspace\"],u,f),i.default.setProperties(u,f.getAllProperties()),d.splice(h,1),f.parent=null,f.setProperty(\"relationsCombined\",!0)}u.attributes.setInherited(\"form\",u.getForms()[0])}}}catch(t){a={error:t}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}};var e=function(t,e,r){var n=e.attributes,a=r.attributes;t.forEach((function(t){var e=a.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,a,o=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},i=t.attributes,s=e.attributes,l=o(i,\"lspace\"),c=o(s,\"rspace\");if(l.length!==c.length)return!1;try{for(var u=n(l),p=u.next();!p.done;p=u.next()){var f=p.value;if(i.getExplicit(f)!==s.getExplicit(f))return!1}}catch(t){r={error:t}}finally{try{p&&!p.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}return!0},a=function(t,e,r){var a,o;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var c=l.value,u=c.childNodes;if(!u[c[e]]||!u[c[r]]){var p=c.parent,f=u[c[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[u[c.base],u[c[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[u[c.base],u[c[r]]]);i.default.copyAttributes(c,f),p?p.replaceChild(f,c):t.root=f}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(a(e,\"sub\",\"sup\"),a(e,\"under\",\"over\"))};var s=function(t,e,r){var a,o;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.attributes.get(\"displaystyle\")){var u=c.childNodes[c.base],p=u.coreMO();if(u.getProperty(\"movablelimits\")&&!p.attributes.getExplicit(\"movablelimits\")){var f=t.nodeFactory.create(\"node\",r,c.childNodes);i.default.copyAttributes(c,f),c.parent?c.parent.replaceChild(f,c):t.root=f}}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(a)throw a.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var i=r(11),s=r(81),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i.BaseItem),c=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return o(e,t),e.DefaultStackItems=((a={})[l.prototype.kind]=l,a),e}(s.AbstractFactory);e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var n=r(0),a=r(6),o=r(1),i=r(8);e.ActionMethods={},e.ActionMethods.Macro=i.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var r,n=[];\"\\\\endtoggle\"!==(r=t.GetArgument(e));)n.push(new a.default(r,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",n,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[r,n],{actiontype:\"tooltip\"}))},new o.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=n.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,r){\"use strict\";var n,a,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var i=r(0),s=r(37),l=r(9),c=r(17);r(85);var u=r(1),p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(l.AbstractTags);e.AmsTags=p;e.AmsConfiguration=i.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(a={},a[s.MultlineItem.prototype.kind]=s.MultlineItem,a),tags:{ams:p},init:function(t){new u.CommandMap(c.NEW_OPS,{},{}),t.append(i.Configuration.local({handler:{macro:[c.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var o=r(15),i=r(4),s=r(3),l=r(2),c=r(7),u=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"multline\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&i.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new l.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",c.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",c.TexConstant.Align.RIGHT);var n=this.factory.configuration.tags.getTag();if(n){r=this.arraydef.side===c.TexConstant.Align.LEFT?0:this.table.length-1;var a=this.table[r],o=this.create(\"node\",\"mlabeledtr\",[n].concat(s.default.getChildren(a)));s.default.copyAttributes(a,o),this.table[r]=o}}this.factory.configuration.tags.end()},e}(o.ArrayItem);e.MultlineItem=u},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var n=r(0);r(86),e.AmsCdConfiguration=n.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(6),a=r(19),o=r(5),i=r(3),s={CD:function(t,e){t.Push(e);var r=t.itemFactory.create(\"array\"),n=t.configuration.options.amscd;return r.setProperties({minw:t.stack.env.CD_minw||n.harrowsize,minh:t.stack.env.CD_minh||n.varrowsize}),r.arraydef={columnalign:\"center\",columnspacing:n.colspace,rowspacing:n.rowspace,displaystyle:!0},r},arrow:function(t,e){var r=t.string.charAt(t.i);if(!r.match(/[><VA.|=]/))return a.Other(t,e);t.i++;var l=t.stack.Top();l.isKind(\"array\")&&!l.Size()||(s.cell(t,e),l=t.stack.Top());for(var c,u=l,p=u.table.length%2==1,f=(u.row.length+(p?0:1))%2;f;)s.cell(t,e),f--;var d={minsize:u.getProperty(\"minw\"),stretchy:!0},h={minsize:u.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===r);else if(\"|\"===r)c=t.create(\"token\",\"mo\",h,\"\\u2225\");else if(\"=\"===r)c=t.create(\"token\",\"mo\",d,\"=\");else{var m={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[r],g=t.GetUpTo(e+r,r),v=t.GetUpTo(e+r,r);if(\">\"===r||\"<\"===r){if(c=t.create(\"token\",\"mo\",d,m),g||(g=\"\\\\kern \"+u.getProperty(\"minw\")),g||v){var y={width:\".67em\",lspace:\".33em\"};if(c=t.create(\"node\",\"munderover\",[c]),g){var b=new n.default(g,t.stack.env,t.configuration).mml(),x=t.create(\"node\",\"mpadded\",[b],y);i.default.setAttribute(x,\"voffset\",\".1em\"),i.default.setChild(c,c.over,x)}if(v){var A=new n.default(v,t.stack.env,t.configuration).mml();i.default.setChild(c,c.under,t.create(\"node\",\"mpadded\",[A],y))}t.configuration.options.amscd.hideHorizontalLabels&&(c=t.create(\"node\",\"mpadded\",c,{depth:0,height:\".67em\"}))}}else{var M=t.create(\"token\",\"mo\",h,m);c=M,(g||v)&&(c=t.create(\"node\",\"mrow\"),g&&i.default.appendChildren(c,[new n.default(\"\\\\scriptstyle\\\\llap{\"+g+\"}\",t.stack.env,t.configuration).mml()]),M.texClass=o.TEXCLASS.ORD,i.default.appendChildren(c,[M]),v&&i.default.appendChildren(c,[new n.default(\"\\\\scriptstyle\\\\rlap{\"+v+\"}\",t.stack.env,t.configuration).mml()]))}}c&&t.Push(c),s.cell(t,e)},cell:function(t,e){var r=t.stack.Top();(r.table||[]).length%2==0&&0===(r.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=s},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var n=r(0),a=r(1),o=r(2);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var r,n,a,l=t.GetBrackets(e,\"\"),c=t.ParseArg(e),u=l.split(/,/),p=0,f=u.length;p<f;p++){var d=u[p].trim(),h=d.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(h){if(r)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var m=s(h[1]+h[3]);m&&(r={height:\"+\"+m,depth:\"+\"+m,lspace:m,width:\"+\"+2*parseInt(h[1],10)+h[3]})}else if(d.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(n)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);n=d}else if(d.match(/^[-a-z]+:/i)){if(a)throw new o.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);a=i(d)}else if(\"\"!==d)throw new o.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',d)}r&&(c=t.create(\"node\",\"mpadded\",[c],r)),(n||a)&&(r={},n&&Object.assign(r,{mathbackground:n}),a&&Object.assign(r,{style:a}),c=t.create(\"node\",\"mstyle\",[c],r)),t.Push(c)};var i=function(t){return t},s=function(t){return t};new a.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=n.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var a=r(0),o=r(3),i=r(7),s=r(1),l=r(18),c={};function u(t,e,r,n){var a=l.NodeFactory.createToken(t,e,r,n);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(o.default.setProperty(a,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",a)),a}function p(t){var e,r;try{for(var a=n(t.data.getList(\"fixBold\")),s=a.next();!s.done;s=a.next()){var l=s.value;if(o.default.getProperty(l,\"fixBold\")){var u=o.default.getAttribute(l,\"mathvariant\");null==u?o.default.setAttribute(l,\"mathvariant\",i.TexConstant.Variant.BOLD):o.default.setAttribute(l,\"mathvariant\",c[u]||u),o.default.removeProperties(l,\"fixBold\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}}c[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,c[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,c[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,c[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,c[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,c[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",c[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var r=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var n=t.ParseArg(e);t.stack.env.boldsymbol=r,t.Push(n)},new s.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=u,e.rewriteBoldTokens=p,e.BoldsymbolConfiguration=a.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:u},postprocessors:[p]})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var a=r(0),o=r(43);r(87),e.BraketConfiguration=a.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(n={},n[o.BraketItem.prototype.kind]=o.BraketItem,n)})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var o=r(11),i=r(5),s=r(4),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:o.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.getProperty(\"open\"),n=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return s.default.fenced(this.factory.configuration,r,e,n);var a={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},o=this.create(\"token\",\"mo\",a,r);a.texClass=i.TEXCLASS.CLOSE;var l=this.create(\"token\",\"mo\",a,n);return this.create(\"node\",\"mrow\",[o,e,l],{open:r,close:n,texClass:i.TEXCLASS.INNER})},e}(o.BaseItem);e.BraketItem=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(8),a=r(5),o=r(2),i={};i.Macro=n.default.Macro,i.Braket=function(t,e,r,n,a,i){var s=t.GetNext();if(\"\"===s)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var l=!0;\"{\"===s&&(t.i++,l=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:i,barcount:0,open:r,close:n,stretchy:a,single:l}))},i.Bar=function(t,e){var r=\"|\"===e?\"|\":\"\\u2225\",n=t.stack.Top();if(\"braket\"!==n.kind||n.getProperty(\"barcount\")>=n.getProperty(\"barmax\")){var o=t.create(\"token\",\"mo\",{texClass:a.TEXCLASS.ORD,stretchy:!1},r);t.Push(o)}else{if(\"|\"===r&&\"|\"===t.GetNext()&&(t.i++,r=\"\\u2225\"),n.getProperty(\"stretchy\")){var i=t.create(\"node\",\"TeXAtom\",[],{texClass:a.TEXCLASS.CLOSE});t.Push(i),n.setProperty(\"barcount\",n.getProperty(\"barcount\")+1),i=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},r),t.Push(i),i=t.create(\"node\",\"TeXAtom\",[],{texClass:a.TEXCLASS.OPEN}),t.Push(i)}else{var s=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},r);t.Push(s)}}},e.default=i},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var a=r(0),o=r(46),i=r(20);r(88),e.BussproofsConfiguration=a.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(n={},n[o.ProofTreeItem.prototype.kind]=o.ProofTreeItem,n),preprocessors:[[i.saveDocument,1]],postprocessors:[[i.clearDocument,3],[i.makeBsprAttributes,2],[i.balanceRules,1]]})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var o=r(2),i=r(11),s=r(23),l=r(20),c=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new s.default(e.factory,{},!0),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return l.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),i.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),r=this.innerStack.Top();if(r.isKind(\"start\")&&!r.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var n=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[n,e],{})},e}(i.BaseItem);e.ProofTreeItem=c},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(2),i=r(6),s=r(4),l=r(20),c={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=u(t,t.GetArgument(e));l.setProperty(n,\"axiom\",!0),r.Push(n)}},u=function(t,e){var r=s.default.internalMath(t,s.default.trimSpaces(e),0);if(!r[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var n=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),o=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",a([n],r,[o]))};function p(t,e,r,n,a,o,i){var s,c,u,p,f=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),d=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",r,{})],{}),h=t.create(\"node\",\"mtable\",i?[d,f]:[f,d],{align:\"top 2\",rowlines:o,framespacing:\"0 0\"});if(l.setProperty(h,\"inferenceRule\",i?\"up\":\"down\"),n&&(s=t.create(\"node\",\"mpadded\",[n],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),l.setProperty(s,\"prooflabel\",\"left\")),a&&(c=t.create(\"node\",\"mpadded\",[a],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),l.setProperty(c,\"prooflabel\",\"right\")),n&&a)u=[s,h,c],p=\"both\";else if(n)u=[s,h],p=\"left\";else{if(!a)return h;u=[h,c],p=\"right\"}return h=t.create(\"node\",\"mrow\",u),l.setProperty(h,\"labelledRule\",p),h}function f(t,e){if(\"$\"!==t.GetNext())throw new o.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var r=t.GetUpTo(e,\"$\");if(-1===r.indexOf(\"\\\\fCenter\"))throw new o.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var a=n(r.split(\"\\\\fCenter\"),2),s=a[0],c=a[1],u=new i.default(s,t.stack.env,t.configuration).mml(),p=new i.default(c,t.stack.env,t.configuration).mml(),f=new i.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mtd\",[u],{}),h=t.create(\"node\",\"mtd\",[f],{}),m=t.create(\"node\",\"mtd\",[p],{}),g=t.create(\"node\",\"mtr\",[d,h,m],{}),v=t.create(\"node\",\"mtable\",[g],{columnspacing:\".5ex\",columnalign:\"center 2\"});return l.setProperty(v,\"sequent\",!0),t.configuration.addNode(\"sequent\",g),v}c.Inference=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(n.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var a=n.getProperty(\"rootAtTop\"),i=1!==r||n.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[n.Pop()],{rowalign:a?\"top\":\"bottom\"})),r--}while(r>0);var c=t.create(\"node\",\"mtr\",s,{}),f=t.create(\"node\",\"mtable\",[c],{framespacing:\"0 0\"}),d=u(t,t.GetArgument(e)),h=n.getProperty(\"currentLine\");h!==n.getProperty(\"line\")&&n.setProperty(\"currentLine\",n.getProperty(\"line\"));var m=p(t,f,[d],n.getProperty(\"left\"),n.getProperty(\"right\"),h,a);n.setProperty(\"left\",null),n.setProperty(\"right\",null),l.setProperty(m,\"inference\",i),t.configuration.addNode(\"inference\",m),n.Push(m)},c.Label=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var a=s.default.internalMath(t,t.GetArgument(e),0),i=a.length>1?t.create(\"node\",\"mrow\",a,{}):a[0];n.setProperty(r,i)},c.SetLine=function(t,e,r,n){var a=t.stack.Top();if(\"proofTree\"!==a.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");a.setProperty(\"currentLine\",r),n&&a.setProperty(\"line\",r)},c.RootAtTop=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");n.setProperty(\"rootAtTop\",r)},c.AxiomF=function(t,e){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var n=f(t,e);l.setProperty(n,\"axiom\",!0),r.Push(n)},c.FCenter=function(t,e){},c.InferenceF=function(t,e,r){var n=t.stack.Top();if(\"proofTree\"!==n.kind)throw new o.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(n.Size()<r)throw new o.default(\"BadProofTree\",\"Proof tree badly specified.\");var a=n.getProperty(\"rootAtTop\"),i=1!==r||n.Peek()[0].childNodes.length?r:0,s=[];do{s.length&&s.unshift(t.create(\"node\",\"mtd\",[],{})),s.unshift(t.create(\"node\",\"mtd\",[n.Pop()],{rowalign:a?\"top\":\"bottom\"})),r--}while(r>0);var c=t.create(\"node\",\"mtr\",s,{}),u=t.create(\"node\",\"mtable\",[c],{framespacing:\"0 0\"}),d=f(t,e),h=n.getProperty(\"currentLine\");h!==n.getProperty(\"line\")&&n.setProperty(\"currentLine\",n.getProperty(\"line\"));var m=p(t,u,[d],n.getProperty(\"left\"),n.getProperty(\"right\"),h,a);n.setProperty(\"left\",null),n.setProperty(\"right\",null),l.setProperty(m,\"inference\",i),t.configuration.addNode(\"inference\",m),n.Push(m)},e.default=c},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var n=r(0),a=r(7),o=r(1),i=r(4),s=r(25);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,r){var n=t.GetBrackets(e,\"\"),a=t.ParseArg(e),o=i.default.keyvalOptions(n,s.ENCLOSE_OPTIONS);o.notation=r,t.Push(t.create(\"node\",\"menclose\",[a],o))},e.CancelMethods.CancelTo=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.ParseArg(e),o=t.ParseArg(e),l=i.default.keyvalOptions(r,s.ENCLOSE_OPTIONS);l.notation=[a.TexConstant.Notation.UPDIAGONALSTRIKE,a.TexConstant.Notation.UPDIAGONALARROW,a.TexConstant.Notation.NORTHEASTARROW].join(\" \"),n=t.create(\"node\",\"mpadded\",[n],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[o],l),n]))},new o.CommandMap(\"cancel\",{cancel:[\"Cancel\",a.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",a.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",a.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+a.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=n.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var n=r(1),a=r(0),o=r(50),i=r(51);new n.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},o.ColorMethods);e.ColorConfiguration=a.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new i.ColorModel})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var n=r(3),a=r(4);function o(t){var e=\"+\"+t,r=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+r,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.GetArgument(e),a=t.configuration.packageData.get(\"color\").model.getColor(r,n),o=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:a}});t.stack.env.color=a,t.Push(o)},e.ColorMethods.TextColor=function(t,e){var r=t.GetBrackets(e,\"\"),n=t.GetArgument(e),a=t.configuration.packageData.get(\"color\").model.getColor(r,n),o=t.stack.env.color;t.stack.env.color=a;var i=t.ParseArg(e);o?t.stack.env.color=o:delete t.stack.env.color;var s=t.create(\"node\",\"mstyle\",[i],{mathcolor:a});t.Push(s)},e.ColorMethods.DefineColor=function(t,e){var r=t.GetArgument(e),n=t.GetArgument(e),a=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(n,r,a)},e.ColorMethods.ColorBox=function(t,e){var r=t.GetArgument(e),i=a.default.internalMath(t,t.GetArgument(e)),s=t.configuration.packageData.get(\"color\").model,l=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",r)});n.default.setProperties(l,o(t.options.color.padding)),t.Push(l)},e.ColorMethods.FColorBox=function(t,e){var r=t.GetArgument(e),i=t.GetArgument(e),s=a.default.internalMath(t,t.GetArgument(e)),l=t.options.color,c=t.configuration.packageData.get(\"color\").model,u=t.create(\"node\",\"mpadded\",s,{mathbackground:c.getColor(\"named\",i),style:\"border: \"+l.borderWidth+\" solid \"+c.getColor(\"named\",r)});n.default.setProperties(u,o(l.padding)),t.Push(u)}},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var a=r(2),o=r(52),i=new Map,s=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(i.has(t))return i.get(t)(e);throw new a.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):o.COLORS.has(t)?o.COLORS.get(t):t},t.prototype.defineColor=function(t,e,r){var n=this.normalizeColor(t,r);this.userColors.set(e,n)},t}();e.ColorModel=s,i.set(\"rgb\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new a.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var s=n(o),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new a.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var u=parseFloat(c);if(u<0||u>1)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var p=Math.floor(255*u).toString(16);p.length<2&&(p=\"0\"+p),i+=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"RGB\",(function(t){var e,r,o=t.trim().split(/\\s*,\\s*/),i=\"#\";if(3!==o.length)throw new a.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var s=n(o),l=s.next();!l.done;l=s.next()){var c=l.value;if(!c.match(/^\\d+$/))throw new a.default(\"InvalidNumber\",\"Invalid number\");var u=parseInt(c);if(u>255)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var p=u.toString(16);p.length<2&&(p=\"0\"+p),i+=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return i})),i.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new a.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new a.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var r=Math.floor(255*e).toString(16);return r.length<2&&(r=\"0\"+r),\"#\"+r+r+r}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var n=r(1),a=r(0);e.ColorV2Methods={Color:function(t,e){var r=t.GetArgument(e),n=t.stack.env.color;t.stack.env.color=r;var a=t.ParseArg(e);n?t.stack.env.color=n:delete t.stack.env.color;var o=t.create(\"node\",\"mstyle\",[a],{mathcolor:r});t.Push(o)}},new n.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=a.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var a=r(0),o=r(10),i=r(1),s=r(14),l=r(26);e.ConfigMacrosConfiguration=a.Configuration.create(\"configmacros\",{init:function(t){new i.CommandMap(\"configmacros-map\",{},{}),t.append(a.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,a,o=e.parseOptions.handlers.retrieve(\"configmacros-map\"),i=e.parseOptions.options.macros;try{for(var c=n(Object.keys(i)),u=c.next();!u.done;u=c.next()){var p=u.value,f=\"string\"==typeof i[p]?[i[p]]:i[p],d=Array.isArray(f[2])?new s.Macro(p,l.default.MacroWithTemplate,f.slice(0,2).concat(f[2])):new s.Macro(p,l.default.Macro,f);o.add(p,d)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(a=c.return)&&a.call(c)}finally{if(r)throw r.error}}},options:{macros:o.expandable({})}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var n=r(0),a=r(1),o=r(17),i=r(21),s=r(27),l=r(2);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=o.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,r){var n=t.GetArgument(r),a=t.GetArgument(r),o=t.GetArgument(r);if(!n.match(/^\\\\([a-z]+|.)$/i))throw new l.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",r);if(!a.match(/^(\\d+),(\\d+)$/))throw new l.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",r);if(!o.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new l.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",r);n=n.substr(1);var s=a.split(\",\");i.default.addMacro(t,n,e.ExtpfeilMethods.xArrow,[parseInt(o),parseInt(s[0]),parseInt(s[1])])},new a.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=n.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){s.NewcommandConfiguration.init(t)}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var o=r(2),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new o.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new o.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(11).BaseItem);e.BeginEnvItem=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var n=r(0),a=r(1),o=r(58);new a.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},o.default),e.HtmlConfiguration=n.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(3),a={Href:function(t,e){var r=t.GetArgument(e),a=o(t,e);n.default.setAttribute(a,\"href\",r),t.Push(a)},Class:function(t,e){var r=t.GetArgument(e),a=o(t,e),i=n.default.getAttribute(a,\"class\");i&&(r=i+\" \"+r),n.default.setAttribute(a,\"class\",r),t.Push(a)},Style:function(t,e){var r=t.GetArgument(e),a=o(t,e),i=n.default.getAttribute(a,\"style\");i&&(\";\"!==r.charAt(r.length-1)&&(r+=\";\"),r=i+\" \"+r),n.default.setAttribute(a,\"style\",r),t.Push(a)},Id:function(t,e){var r=t.GetArgument(e),a=o(t,e);n.default.setAttribute(a,\"id\",r),t.Push(a)}},o=function(t,e){var r=t.ParseArg(e);if(!n.default.isInferred(r))return r;var a=n.default.getChildren(r);if(1===a.length)return a[0];var o=t.create(\"node\",\"mrow\");return n.default.copyChildren(r,o),n.default.copyAttributes(r,o),o};e.default=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var n=r(0),a=r(1),o=r(2),i=r(8),s=r(17),l=r(90),c={};c.Macro=i.default.Macro,c.xArrow=s.AmsMethods.xArrow,c.Machine=function(t,e,r){try{var n=t.GetArgument(e),a=l.mhchemParser.go(n,r),i=l.texify.go(a);t.string=i+t.string.substr(t.i),t.i=0}catch(t){throw new o.default(t[0],t[1],t.slice(2))}},new a.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},c),e.MhchemConfiguration=n.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var n=r(0);e.NoErrorsConfiguration=n.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,r,n){var a=t.create(\"token\",\"mtext\",{},n.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[a],{\"data-mjx-error\":e,title:e})}}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var a=r(0);e.NoUndefinedConfiguration=a.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,a,o=t.create(\"text\",\"\\\\\"+e),i=t.options.noundefined||{},s={};try{for(var l=n([\"color\",\"background\",\"size\"]),c=l.next();!c.done;c=l.next()){var u=c.value;i[u]&&(s[\"math\"+u]=i[u])}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,o))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var a=r(0),o=r(63);r(91),e.PhysicsConfiguration=a.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(n={},n[o.AutoOpen.prototype.kind]=o.AutoOpen,n)})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var o=r(11),i=r(4),s=r(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,r=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var n=t.prototype.toMml.call(this),a=e.create(\"node\",\"mpadded\",[n],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[a]))}r&&this.Push(new s.default(r,e.stack.env,e.configuration).mml());var o=t.prototype.toMml.call(this);return i.default.fenced(this.factory.configuration,this.getProperty(\"open\"),o,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var r=e.getProperty(\"autoclose\");return r&&r===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(o.BaseItem);e.AutoOpen=l},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(8),o=r(6),i=r(2),s=r(5),l=r(4),c=r(3),u=r(18),p={},f={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},d=/^(b|B)i(g{1,2})$/;p.Quantity=function(t,e,r,n,a,u,p){void 0===r&&(r=\"(\"),void 0===n&&(n=\")\"),void 0===a&&(a=!1),void 0===u&&(u=\"\"),void 0===p&&(p=\"\");var h=!!a&&t.GetStar(),m=t.GetNext(),g=t.i,v=null;if(\"\\\\\"===m){if(t.i++,!(v=t.GetCS()).match(d)){var y=t.create(\"node\",\"mrow\");return t.Push(l.default.fenced(t.configuration,r,y,n)),void(t.i=g)}m=t.GetNext()}var b=f[m];if(a&&\"{\"!==m)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!b){y=t.create(\"node\",\"mrow\");return t.Push(l.default.fenced(t.configuration,r,y,n)),void(t.i=g)}if(u){var x=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},u);p&&c.default.setAttribute(x,\"mathvariant\",p),t.Push(t.itemFactory.create(\"fn\",x))}if(\"{\"===m){var A=t.GetArgument(e);return m=a?r:\"\\\\{\",b=a?n:\"\\\\}\",A=h?m+\" \"+A+\" \"+b:v?\"\\\\\"+v+\"l\"+m+\" \"+A+\" \\\\\"+v+\"r\"+b:\"\\\\left\"+m+\" \"+A+\" \\\\right\"+b,void t.Push(new o.default(A,t.stack.env,t.configuration).mml())}a&&(m=r,b=n),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:m,close:b,big:v}))},p.Eval=function(t,e){var r=t.GetStar(),n=t.GetNext();if(\"{\"!==n){if(\"(\"===n||\"[\"===n)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:n,close:\"|\",smash:r,right:\"\\\\vphantom{\\\\int}\"}));throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var a=t.GetArgument(e),o=\"\\\\left. \"+(r?\"\\\\smash{\"+a+\"}\":a)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+o+t.string.slice(t.i)},p.Commutator=function(t,e,r,n){void 0===r&&(r=\"[\"),void 0===n&&(n=\"]\");var a=t.GetStar(),s=t.GetNext(),l=null;if(\"\\\\\"===s){if(t.i++,!(l=t.GetCS()).match(d))throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);s=t.GetNext()}if(\"{\"!==s)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var c=t.GetArgument(e)+\",\"+t.GetArgument(e);c=a?r+\" \"+c+\" \"+n:l?\"\\\\\"+l+\"l\"+r+\" \"+c+\" \\\\\"+l+\"r\"+n:\"\\\\left\"+r+\" \"+c+\" \\\\right\"+n,t.Push(new o.default(c,t.stack.env,t.configuration).mml())};var h=[65,90],m=[97,122],g=[913,937],v=[945,969],y=[48,57];function b(t,e){return t>=e[0]&&t<=e[1]}function x(t,e,r,n){var a=t.configuration.parser,o=u.NodeFactory.createToken(t,e,r,n),i=n.codePointAt(0);return 1===n.length&&!a.stack.env.font&&a.stack.env.vectorFont&&(b(i,h)||b(i,m)||b(i,g)||b(i,y)||b(i,v)&&a.stack.env.vectorStar||c.default.getAttribute(o,\"accent\"))&&c.default.setAttribute(o,\"mathvariant\",a.stack.env.vectorFont),o}p.VectorBold=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=t.configuration.nodeFactory.get(\"token\"),i=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",x),t.stack.env.vectorFont=r?\"bold-italic\":\"bold\",t.stack.env.vectorStar=r;var s=new o.default(n,t.stack.env,t.configuration).mml();i&&(t.stack.env.font=i),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",a),t.Push(s)},p.StarMacro=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];var o=t.GetStar(),s=[];if(r)for(var c=s.length;c<r;c++)s.push(t.GetArgument(e));var u=n.join(o?\"*\":\"\");if(u=l.default.substituteArgs(t,s,u),t.string=l.default.addArgs(t,u,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new i.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var A=function(t,e,r,n,a){var i=new o.default(n,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,i));var s=t.GetNext(),l=f[s];if(l){var c=-1!==a.indexOf(s);if(\"{\"===s){var u=(c?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(r)+\" \"+(c?\"\\\\right\\\\}\":\"\");return t.string=u+t.string.slice(t.i),void(t.i=0)}c&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:s,close:l})))}};function M(t,e,r){var a=n(t,3),o=a[0],i=a[1],s=a[2];return e&&r?\"\\\\left\\\\langle{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\middle\\\\vert{\"+s+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+o+\"}\\\\vert{\"+i+\"}\\\\vert{\"+s+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+o+\"}\\\\right\\\\vert{\"+i+\"}\\\\left\\\\vert{\"+s+\"}\\\\right\\\\rangle\"}p.OperatorApplication=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];A(t,\"fn\",e,r,n)},p.VectorOperator=function(t,e,r){for(var n=[],a=3;a<arguments.length;a++)n[a-3]=arguments[a];A(t,\"mml\",e,r,n)},p.Expression=function(t,e,r,n){void 0===r&&(r=!0),void 0===n&&(n=\"\"),n=n||e.slice(1);var a=r?t.GetBrackets(e):null,i=t.create(\"token\",\"mi\",{texClass:s.TEXCLASS.OP},n);if(a){var l=new o.default(a,t.stack.env,t.configuration).mml();i=t.create(\"node\",\"msup\",[i,l])}t.Push(t.itemFactory.create(\"fn\",i)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},p.Qqtext=function(t,e,r){var n=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(r||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+n+t.string.slice(t.i)},p.Differential=function(t,e,r){var n=t.GetBrackets(e),a=null!=n?\"^{\"+n+\"}\":\" \",i=\"(\"===t.GetNext(),l=\"{\"===t.GetNext(),c=r+a;if(i||l)if(l){c+=t.GetArgument(e);u=new o.default(c,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[u],{texClass:s.TEXCLASS.OP}))}else t.Push(new o.default(c,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{c+=t.GetArgument(e,!0)||\"\";var u=new o.default(c,t.stack.env,t.configuration).mml();t.Push(u)}},p.Derivative=function(t,e,r,n){var a=t.GetStar(),i=t.GetBrackets(e),s=1,l=[];for(l.push(t.GetArgument(e));\"{\"===t.GetNext()&&s<r;)l.push(t.GetArgument(e)),s++;var c=!1,u=\" \",p=\" \";r>2&&l.length>2?(u=\"^{\"+(l.length-1)+\"}\",c=!0):null!=i&&(r>2&&l.length>1&&(c=!0),p=u=\"^{\"+i+\"}\");for(var f=a?\"\\\\flatfrac\":\"\\\\frac\",d=l.length>1?l[0]:\"\",h=l.length>1?l[1]:l[0],m=\"\",g=2,v=void 0;v=l[g];g++)m+=n+\" \"+v;var y=f+\"{\"+n+u+d+\"}{\"+n+\" \"+h+p+\" \"+m+\"}\";t.Push(new o.default(y,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:c})))},p.Bra=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=\"\",i=!1,s=!1;if(\"\\\\\"===t.GetNext()){var l=t.i;t.i++;var c=t.GetCS(),u=t.lookup(\"macro\",c);u&&\"ket\"===u.symbol?(i=!0,l=t.i,s=t.GetStar(),\"{\"===t.GetNext()?a=t.GetArgument(c,!0):(t.i=l,s=!1)):t.i=l}var p=\"\";p=i?r||s?\"\\\\langle{\"+n+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\":r||s?\"\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\langle{\"+n+\"}\\\\right\\\\vert{\"+a+\"}\",t.Push(new o.default(p,t.stack.env,t.configuration).mml())},p.Ket=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=r?\"\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+n+\"}\\\\right\\\\rangle\";t.Push(new o.default(a,t.stack.env,t.configuration).mml())},p.BraKet=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=null;\"{\"===t.GetNext()&&(a=t.GetArgument(e,!0));var i=\"\";i=null==a?r?\"\\\\langle{\"+n+\"}\\\\vert{\"+n+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+n+\"}\\\\right\\\\rangle\":r?\"\\\\langle{\"+n+\"}\\\\vert{\"+a+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+a+\"}\\\\right\\\\rangle\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},p.KetBra=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=null;\"{\"===t.GetNext()&&(a=t.GetArgument(e,!0));var i=\"\";i=null==a?r?\"\\\\vert{\"+n+\"}\\\\rangle\\\\!\\\\langle{\"+n+\"}\\\\vert\":\"\\\\left\\\\vert{\"+n+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+n+\"}\\\\right\\\\vert\":r?\"\\\\vert{\"+n+\"}\\\\rangle\\\\!\\\\langle{\"+a+\"}\\\\vert\":\"\\\\left\\\\vert{\"+n+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+a+\"}\\\\right\\\\vert\",t.Push(new o.default(i,t.stack.env,t.configuration).mml())},p.Expectation=function(t,e){var r=t.GetStar(),n=r&&t.GetStar(),a=t.GetArgument(e),i=null;\"{\"===t.GetNext()&&(i=t.GetArgument(e,!0));var s=a&&i?M([i,a,i],r,n):r?\"\\\\langle {\"+a+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+a+\"} \\\\right\\\\rangle\";t.Push(new o.default(s,t.stack.env,t.configuration).mml())},p.MatrixElement=function(t,e){var r=t.GetStar(),n=r&&t.GetStar(),a=M([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],r,n);t.Push(new o.default(a,t.stack.env,t.configuration).mml())},p.MatrixQuantity=function(t,e,r){var n=t.GetStar(),a=r?\"smallmatrix\":\"array\",i=\"\",s=\"\",l=\"\";switch(t.GetNext()){case\"{\":i=t.GetArgument(e);break;case\"(\":t.i++,s=n?\"\\\\lgroup\":\"(\",l=n?\"\\\\rgroup\":\")\",i=t.GetUpTo(e,\")\");break;case\"[\":t.i++,s=\"[\",l=\"]\",i=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,s=\"|\",l=\"|\",i=t.GetUpTo(e,\"|\");break;default:s=\"(\",l=\")\"}var c=(s?\"\\\\left\":\"\")+s+\"\\\\begin{\"+a+\"}{} \"+i+\"\\\\end{\"+a+\"}\"+(s?\"\\\\right\":\"\")+l;t.Push(new o.default(c,t.stack.env,t.configuration).mml())},p.IdentityMatrix=function(t,e){var r=t.GetArgument(e),n=parseInt(r,10);if(isNaN(n))throw new i.default(\"InvalidNumber\",\"Invalid number\");if(n<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var a=Array(n).fill(\"0\"),o=[],s=0;s<n;s++){var l=a.slice();l[s]=\"1\",o.push(l.join(\" & \"))}t.string=o.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},p.XMatrix=function(t,e){var r=t.GetStar(),n=t.GetArgument(e),a=t.GetArgument(e),o=t.GetArgument(e),s=parseInt(a,10),l=parseInt(o,10);if(isNaN(s)||isNaN(l)||l.toString()!==o||s.toString()!==a)throw new i.default(\"InvalidNumber\",\"Invalid number\");if(s=s<1?1:s,l=l<1?1:l,!r){var c=Array(l).fill(n).join(\" & \"),u=Array(s).fill(c).join(\"\\\\\\\\ \");return t.string=u+t.string.slice(t.i),void(t.i=0)}var p=\"\";if(1===s&&1===l)p=n;else if(1===s){c=[];for(var f=1;f<=l;f++)c.push(n+\"_{\"+f+\"}\");p=c.join(\" & \")}else if(1===l){for(c=[],f=1;f<=s;f++)c.push(n+\"_{\"+f+\"}\");p=c.join(\"\\\\\\\\ \")}else{var d=[];for(f=1;f<=s;f++){c=[];for(var h=1;h<=l;h++)c.push(n+\"_{{\"+f+\"}{\"+h+\"}}\");d.push(c.join(\" & \"))}p=d.join(\"\\\\\\\\ \")}t.string=p+t.string.slice(t.i),t.i=0},p.PauliMatrix=function(t,e){var r=t.GetArgument(e),n=r.slice(1);switch(r[0]){case\"0\":n+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":n+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":n+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":n+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=n+t.string.slice(t.i),t.i=0},p.DiagonalMatrix=function(t,e,r){if(\"{\"===t.GetNext()){var n=t.i;t.GetArgument(e);var a=t.i;t.i=n+1;for(var o=[],i=\"\",s=t.i;s<a;){try{i=t.GetUpTo(e,\",\")}catch(e){t.i=a,o.push(t.string.slice(s,a-1));break}if(t.i>=a){o.push(t.string.slice(s,a));break}s=t.i,o.push(i)}t.string=function(t,e){for(var r=t.length,n=[],a=0;a<r;a++)n.push(Array(e?r-a:a+1).join(\"&\")+\"\\\\mqty{\"+t[a]+\"}\");return n.join(\"\\\\\\\\ \")}(o,r)+t.string.slice(a),t.i=0}},p.AutoClose=function(t,e,r){var n=t.create(\"token\",\"mo\",{stretchy:!1},e),a=t.itemFactory.create(\"mml\",n).setProperties({autoclose:e});t.Push(a)},p.Macro=a.default.Macro,p.NamedFn=a.default.NamedFn,p.Array=a.default.Array,e.default=p},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var o=r(0),i=r(9),s=0;function l(t,e){var r=e.parseOptions.options.tags;\"base\"!==r&&t.tags.hasOwnProperty(r)&&i.TagsFactory.add(r,t.tags[r]);var n=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return a(r,t),r.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},r.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},r.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},r.prototype.formatUrl=function(t,r){return e.parseOptions.options.tagformat.url(t,r)},r}(i.TagsFactory.create(e.parseOptions.options.tags).constructor),o=\"configTags-\"+ ++s;i.TagsFactory.add(o,n),e.parseOptions.options.tags=o}e.tagformatConfig=l,e.TagFormatConfiguration=o.Configuration.create(\"tagformat\",{config:[l,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var a=r(0),o=r(24),i=r(9),s=r(15),l=r(67),c=r(28);function u(t,e,r,n){var a=t.configuration.packageData.get(\"textmacros\");return t instanceof l.TextParser||(a.texParser=t),[new l.TextParser(e,n?{mathvariant:n}:{},a.parseOptions,r).mml()]}r(93),e.textBase=a.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var r=t.texParser,n=r.lookup(\"macro\",e);n&&n._func!==c.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),r.parse(\"macro\",[n?t:r,e])}},items:(n={},n[s.StartItem.prototype.kind]=s.StartItem,n[s.StopItem.prototype.kind]=s.StopItem,n[s.MmlItem.prototype.kind]=s.MmlItem,n[s.StyleItem.prototype.kind]=s.StyleItem,n)}),a.Configuration.create(\"textmacros\",{config:function(t,r){var n=new a.ParserConfiguration([]);n.append(e.textBase),n.init();var s=new o.default(n,[]);s.options=r.parseOptions.options,n.config(r),i.TagsFactory.addTags(n.tags),s.tags=i.TagsFactory.getDefault(),s.tags.configuration=s,s.packageData=r.parseOptions.packageData,s.packageData.set(\"textmacros\",{parseOptions:s,jax:r,texParser:null}),s.options.internalMath=u},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var l=r(6),c=r(2),u=r(4),p=r(5),f=r(3),d=r(15),h=function(t){function e(e,r,n,a){var o=t.call(this,e,r,n)||this;return o.level=a,o}return a(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=u.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof d.StopItem)return t.prototype.Push.call(this,e);e instanceof d.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof p.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,r,n=this.stack.env;try{for(var a=o([\"mathsize\",\"mathcolor\"]),i=a.next();!i.done;i=a.next()){var s=i.value;n[s]&&!t.attributes.getExplicit(s)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),f.default.setAttribute(t,s,n[s]))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,r,n=this.stack.env;if(t.isToken)try{for(var a=o([\"mathsize\",\"mathcolor\",\"mathvariant\"]),i=a.next();!i.done;i=a.next()){var s=i.value;n[s]&&!t.attributes.getExplicit(s)&&f.default.setAttribute(t,s,n[s])}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,r){return new e(this.GetArgument(t),r=Object.assign(Object.assign({},this.stack.env),r),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];throw new(c.default.bind.apply(c.default,s([void 0,t,e],r)))},e}(l.default);e.TextParser=h},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=r(0),a=r(2),o=r(1),i=r(4),s=r(3),l=r(13);e.UnicodeMethods={};var c={};e.UnicodeMethods.Unicode=function(t,e){var r=t.GetBrackets(e),n=null,o=null;r&&(r.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(n=r.replace(/ /g,\"\").split(/,/),o=t.GetBrackets(e)):o=r);var u=i.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!u.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new a.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var p=parseInt(u.match(/^x/)?\"0\"+u:u);c[p]?o||(o=c[p][2]):c[p]=[800,200,o,p],n&&(c[p][0]=Math.floor(1e3*parseFloat(n[0])),c[p][1]=Math.floor(1e3*parseFloat(n[1])));var f=t.stack.env.font,d={};o?(c[p][2]=d.fontfamily=o.replace(/'/g,\"'\"),f&&(f.match(/bold/)&&(d.fontweight=\"bold\"),f.match(/italic|-mathit/)&&(d.fontstyle=\"italic\"))):f&&(d.mathvariant=f);var h=t.create(\"token\",\"mtext\",d,l.numeric(u));s.default.setProperty(h,\"unicode\",!0),t.Push(h)},new o.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var n=r(0),a=r(7),o=r(1),i=r(2);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var r=t.GetNext(),n=++t.i;if(\"\"===r)throw new i.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==r;)t.i++;if(t.i===t.string.length)throw new i.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var o=t.string.slice(n,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:a.TexConstant.Variant.MONOSPACE},o))},new o.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=n.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,o=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var o=r(0),i=r(1),s=r(14),l=r(29),c=r(74),u=r(10);function p(t,e,r,o){var i,s,u,p;if(c.Package.packages.has(t.options.require.prefix+r)){var h=t.options.autoload[r],m=n(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),g=m[0],v=m[1];try{for(var y=a(g),b=y.next();!b.done;b=y.next()){var x=b.value;f.remove(x)}}catch(t){i={error:t}}finally{try{b&&!b.done&&(s=y.return)&&s.call(y)}finally{if(i)throw i.error}}try{for(var A=a(v),M=A.next();!M.done;M=A.next()){var _=M.value;d.remove(_)}}catch(t){u={error:t}}finally{try{M&&!M.done&&(p=A.return)&&p.call(A)}finally{if(u)throw u.error}}t.string=(o?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}l.RequireLoad(t,r)}var f=new i.CommandMap(\"autoload-macros\",{},{}),d=new i.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=o.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:u.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,o,i,c,u,h,m=e.parseOptions,g=m.handlers.get(\"macro\"),v=m.handlers.get(\"environment\"),y=m.options.autoload;m.packageData.set(\"autoload\",{Autoload:p});try{for(var b=a(Object.keys(y)),x=b.next();!x.done;x=b.next()){var A=x.value,M=y[A],_=n(2===M.length&&Array.isArray(M[0])?M:[M,[]],2),C=_[0],P=_[1];try{for(var w=(i=void 0,a(C)),S=w.next();!S.done;S=w.next()){var T=S.value;g.lookup(T)&&\"color\"!==T||f.add(T,new s.Macro(T,p,[A,!0]))}}catch(t){i={error:t}}finally{try{S&&!S.done&&(c=w.return)&&c.call(w)}finally{if(i)throw i.error}}try{for(var k=(u=void 0,a(P)),O=k.next();!O.done;O=k.next()){var E=O.value;v.lookup(E)||d.add(E,new s.Macro(E,p,[A,!1]))}}catch(t){u={error:t}}finally{try{O&&!O.done&&(h=k.return)&&h.call(k)}finally{if(u)throw u.error}}}}catch(t){r={error:t}}finally{try{x&&!x.done&&(o=b.return)&&o.call(b)}finally{if(r)throw r.error}}m.packageData.get(\"require\")||l.RequireConfiguration.config(t,e)},init:function(t){t.options.require||u.defaultOptions(t.options,l.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(7),o=r(8),i=r(12),s=r(5);new n.RegExpMap(\"letter\",i.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",i.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",i.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},o.default),new n.CharacterMap(\"mathchar0mi\",i.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:a.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:a.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:a.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:a.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:a.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:a.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:a.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:a.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:a.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:a.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:a.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:a.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:a.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:a.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:a.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:a.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:a.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:a.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:a.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:a.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:a.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:a.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",i.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",i.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",i.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,a.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,a.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,a.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,a.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,a.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},o.default),new n.EnvironmentMap(\"environment\",i.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+a.TexConstant.Length.THICKMATHSPACE,\".5em\"]},o.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(13).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(17),a=r(1),o=r(7),i=r(12),s=r(4),l=r(5),c=function(t){for(var e=[],r=0,n=t.length;r<n;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new a.CharacterMap(\"AMSmath-mathchar0mo\",i.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:l.TEXCLASS.OP}]}),new a.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",o.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",o.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",o.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",o.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},n.AmsMethods),new a.EnvironmentMap(\"AMSmath-environment\",i.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+o.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",c([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",c([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,c([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",c([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},n.AmsMethods),new a.DelimiterMap(\"AMSmath-delimiter\",i.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:l.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:l.TEXCLASS.CLOSE}]}),new a.CharacterMap(\"AMSsymbols-mathchar0mi\",i.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:o.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:o.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:o.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:o.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:o.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:o.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:o.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:o.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:o.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:o.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:o.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:o.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new a.CharacterMap(\"AMSsymbols-mathchar0m0\",i.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new a.DelimiterMap(\"AMSsymbols-delimiter\",i.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new a.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},n.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(12),o=r(39);new n.EnvironmentMap(\"amscd_environment\",a.default.environment,{CD:\"CD\"},o.default),new n.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},o.default),new n.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},o.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(44);new n.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},a.default),new n.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(47),a=r(12),o=r(1);new o.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},n.default),new o.EnvironmentMap(\"Bussproofs-environments\",a.default.environment,{prooftree:[\"Prooftree\",null,!1]},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(26);new(r(1).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var r,a=\"0\",o={};o.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var i=10,s=[];;){r!==t?(i=10,r=t):i--;var l=n.stateMachines[e],c=l.transitions[a]||l.transitions[\"*\"];t:for(var u=0;u<c.length;u++){var p=n.patterns.match_(c[u].pattern,t);if(p){for(var f=c[u].task,d=0;d<f.action_.length;d++){var h;if(l.actions[f.action_[d].type_])h=l.actions[f.action_[d].type_](o,p.match_,f.action_[d].option);else{if(!n.actions[f.action_[d].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+f.action_[d].type_+\")\"];h=n.actions[f.action_[d].type_](o,p.match_,f.action_[d].option)}n.concatArray(s,h)}if(a=f.nextState||a,!(t.length>0))return s;if(f.revisit||(t=p.remainder),!f.toContinue)break t}}if(i<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var r=0;r<e.length;r++)t.push(e[r]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=n.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var r=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return r?{match_:r[0],remainder:t.substr(r[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return n.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return n.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return n.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return n.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return n.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return n.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return n.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return n.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return n.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var r=n.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return r&&(e=r.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,r,n,a,o,i,s,l,c){var u=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var r=t.match(e);return r?r[0]:null},p=u(t,e);if(null===p)return null;if(t=t.substr(p.length),null===(p=u(t,r)))return null;var f=function(t,e,r){for(var n=0;e<t.length;){var a=t.charAt(e),o=u(t.substr(e),r);if(null!==o&&0===n)return{endMatchBegin:e,endMatchEnd:e+o.length};if(\"{\"===a)n++;else if(\"}\"===a){if(0===n)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];n--}e++}return null}(t,p.length,n||a);if(null===f)return null;var d=t.substring(0,n?f.endMatchEnd:f.endMatchBegin);if(o||i){var h=this.findObserveGroups(t.substr(f.endMatchEnd),o,i,s,l);if(null===h)return null;var m=[d,h.match_];return{match_:c?m.join(\"\"):m,remainder:h.remainder}}return{match_:d,remainder:t.substr(f.endMatchEnd)}},match_:function(t,e){var r=n.patterns.patterns[t];if(void 0===r)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof r)return n.patterns.patterns[t](e);var a=e.match(r);return a?{match_:a[2]?[a[1],a[2]]:a[1]?a[1]:a[0],remainder:e.substr(a[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,r){return{type_:r}},\"insert+p1\":function(t,e,r){return{type_:r,p1:e}},\"insert+p1+p2\":function(t,e,r){return{type_:r,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return n.go(e,\"text\")},\"{text}\":function(t,e){var r=[\"{\"];return n.concatArray(r,n.go(e,\"text\")),r.push(\"}\"),r},\"tex-math\":function(t,e){return n.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return n.go(e,\"tex-math tight\")},bond:function(t,e,r){return{type_:\"bond\",kind_:r||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return n.go(e)},\"1/2\":function(t,e){var r=[];e.match(/^[+\\-]/)&&(r.push(e.substr(0,1)),e=e.substr(1));var n=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return n[1]=n[1].replace(/\\$/g,\"\"),r.push({type_:\"frac\",p1:n[1],p2:n[2]}),n[3]&&(n[3]=n[3].replace(/\\$/g,\"\"),r.push({type_:\"tex-math\",p1:n[3]})),r},\"9,9\":function(t,e){return n.go(e,\"9,9\")}},createTransitions:function(t){var e,r,n,a,o={};for(e in t)for(r in t[e])for(n=r.split(\"|\"),t[e][r].stateArray=n,a=0;a<n.length;a++)o[n[a]]=[];for(e in t)for(r in t[e])for(n=t[e][r].stateArray||[],a=0;a<n.length;a++){var i=t[e][r];if(i.action_){i.action_=[].concat(i.action_);for(var s=0;s<i.action_.length;s++)\"string\"==typeof i.action_[s]&&(i.action_[s]={type_:i.action_[s]})}else i.action_=[];for(var l=e.split(\"|\"),c=0;c<l.length;c++)if(\"*\"===n[a])for(var u in o)o[u].push({pattern:l[c],task:i});else o[n[a]].push({pattern:l[c],task:i})}return o},stateMachines:{}};n.stateMachines={ce:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var r;if((t.d||\"\").match(/^[0-9]+$/)){var a=t.d;t.d=void 0,r=this.output(t),t.b=a}else r=this.output(t);return n.actions[\"o=\"](t,e),r},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var r=[];return n.concatArray(r,this.output(t)),n.concatArray(r,n.actions.bond(t,e,\"-\")),r}t.d=e},\"- after o/d\":function(t,e,r){var a=n.patterns.match_(\"orbital\",t.o||\"\"),o=n.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),i=n.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),s=n.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),l=\"-\"===e&&(a&&\"\"===a.remainder||o||i||s);!l||t.a||t.b||t.p||t.d||t.q||a||!i||(t.o=\"$\"+t.o+\"$\");var c=[];return l?(n.concatArray(c,this.output(t)),c.push({type_:\"hyphen\"})):(a=n.patterns.match_(\"digits\",t.d||\"\"),r&&a&&\"\"===a.remainder?(n.concatArray(c,n.actions[\"d=\"](t,e)),n.concatArray(c,this.output(t))):(n.concatArray(c,this.output(t)),n.concatArray(c,n.actions.bond(t,e,\"-\")))),c},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:n.go(e,\"o\")}},comma:function(t,e){var r=e.replace(/\\s*$/,\"\");return r!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:r}:{type_:\"comma enumeration M\",p1:r}},output:function(t,e,r){var a,o,i;t.r?(o=\"M\"===t.rdt?n.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:n.go(t.rd),i=\"M\"===t.rqt?n.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:n.go(t.rq),a={type_:\"arrow\",r:t.r,rd:o,rq:i}):(a=[],(t.a||t.b||t.p||t.o||t.q||t.d||r)&&(t.sb&&a.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===r?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&n.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),a.push({type_:\"chemfive\",a:n.go(t.a,\"a\"),b:n.go(t.b,\"bd\"),p:n.go(t.p,\"pq\"),o:n.go(t.o,\"o\"),q:n.go(t.q,\"pq\"),d:n.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var s in t)\"parenthesisLevel\"!==s&&\"beginsWithBond\"!==s&&delete t[s];return a},\"oxidation-output\":function(t,e){var r=[\"{\"];return n.concatArray(r,n.go(e,\"oxidation\")),r.push(\"}\"),r},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:n.go(e[0]),p2:n.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:n.go(e[0]),p2:n.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:n.go(e[0]),p2:n.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}}}},a:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:n.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var r in t)delete t[r];return e}}}},pq:{transitions:n.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:n.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"pq\")}}}},bd:{transitions:n.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:n.go(e[1],\"bd\")}}}},oxidation:{transitions:n.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"tex-math tight\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var r in t)delete t[r];return e}}}},\"9,9\":{transitions:n.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),e[1]&&(n.concatArray(r,n.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?n.concatArray(r,n.go(e[2],\"pu-9,9\")):r.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?r.push({type_:\"cdot\"}):r.push({type_:\"times\"}))),e[3]&&r.push(\"10^{\"+e[5]+\"}\"),r},\"number^\":function(t,e){var r=[];return\"+-\"===e[0]||\"+/-\"===e[0]?r.push(\"\\\\pm \"):e[0]&&r.push(e[0]),n.concatArray(r,n.go(e[1],\"pu-9,9\")),r.push(\"^{\"+e[2]+\"}\"),r},operator:function(t,e,r){return{type_:\"operator\",kind_:r||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,r=n.patterns.match_(\"{(...)}\",t.d||\"\");r&&\"\"===r.remainder&&(t.d=r.match_);var a=n.patterns.match_(\"{(...)}\",t.q||\"\");if(a&&\"\"===a.remainder&&(t.q=a.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var o={d:n.go(t.d,\"pu\"),q:n.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:o.d,p2:o.q}:(e=o.d,o.d.length>1||o.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),n.concatArray(e,o.q))}else e=n.go(t.d,\"pu-2\");for(var i in t)delete t[i];return e}}},\"pu-2\":{transitions:n.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var r=n.patterns.match_(\"{(...)}\",t.rm||\"\");e=r&&\"\"===r.remainder?n.go(r.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var a in t)delete t[a];return e}}},\"pu-9,9\":{transitions:n.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var r=t.text_.length%3;0===r&&(r=3);for(var n=t.text_.length-3;n>0;n-=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,r)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var r=t.text_.length-3,n=0;n<r;n+=3)e.push(t.text_.substr(n,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(n))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var a={go:function(t,e){if(!t)return\"\";for(var r=\"\",n=!1,o=0;o<t.length;o++){var i=t[o];\"string\"==typeof i?r+=i:(r+=a._go2(i),\"1st-level escape\"===i.type_&&(n=!0))}return e||n||!r||(r=\"{\"+r+\"}\"),r},_goInner:function(t){return t?a.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var r={a:a._goInner(t.a),b:a._goInner(t.b),p:a._goInner(t.p),o:a._goInner(t.o),q:a._goInner(t.q),d:a._goInner(t.d)};r.a&&(r.a.match(/^[+\\-]/)&&(r.a=\"{\"+r.a+\"}\"),e+=r.a+\"\\\\,\"),(r.b||r.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(r.b||\"\")+\"}}_{\\\\hphantom{\"+(r.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(r.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(r.p||\"\")+\"}}}\"),r.o&&(r.o.match(/^[+\\-]/)&&(r.o=\"{\"+r.o+\"}\"),e+=r.o),\"kv\"===t.dType?((r.d||r.q)&&(e+=\"{\\\\vphantom{X}}\"),r.d&&(e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):\"oxidation\"===t.dType?(r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"),r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\")):(r.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+r.q+\"}}\"),r.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+r.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+a._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+a._goInner(t.p1);break;case\"bond\":if(!(e=a._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var n=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"pu-frac\":var o=\"\\\\frac{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+o+\"}{\"+o+\"}{\"+o+\"}{\"+o+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+a._goInner(t.p1)+\"}{\"+a._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+a._goInner(t.p1)+\"}_{\"+a._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+a._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var i={rd:a._goInner(t.rd),rq:a._goInner(t.rq)},s=a._getArrow(t.r);i.rd||i.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(s=\"\\\\long\"+s,i.rd&&(s=\"\\\\overset{\"+i.rd+\"}{\"+s+\"}\"),i.rq&&(s=\"\\\\underset{\\\\lower7mu{\"+i.rq+\"}}{\"+s+\"}\"),s=\" {}\\\\mathrel{\"+s+\"}{} \"):(i.rq&&(s+=\"[{\"+i.rq+\"}]\"),s=\" {}\\\\mathrel{\\\\x\"+(s+=\"{\"+i.rd+\"}\")+\"}{} \"):s=\" {}\\\\mathrel{\\\\long\"+s+\"}{} \",e=s;break;case\"operator\":e=a._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function o(t){}function i(t){}e.mhchemParser=n,e.texify=a,e.assertNever=o,e.assertString=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(64),o=r(7),i=r(12),s=r(5);new n.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",o.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},a.default),new n.CharacterMap(\"Physics-vector-chars\",i.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:o.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:o.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:o.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:o.TexConstant.Variant.NORMAL}]}),new n.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},a.default),new n.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},a.default),new n.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},a.default),new n.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},a.default),new n.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},a.default),new n.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},a.default),new n.EnvironmentMap(\"Physics-aux-envs\",i.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},a.default),new n.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",s.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},a.default)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.handleRetriesFor=MathJax._.util.Retries.handleRetriesFor,e.retryAfter=MathJax._.util.Retries.retryAfter},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(1),a=r(7),o=r(28);new n.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},o.TextMacrosMethods),new n.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},o.TextMacrosMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";r.r(e);var n=r(22),a=r(30),o=r(31),i=r(0),s=r(33),l=r(32),c=r(16),u=r(18),p=r(3),f=r(12),d=r(24),h=r(4),m=r(23),g=r(11),v=r(34),y=r(14),b=r(1),x=r(9),A=r(7),M=r(2),_=r(6),C=r(35),P=r(38),w=r(39),S=r(36),T=r(37),k=r(17),O=r(75),E=r(19),I=r(15),N=r(8),q=r(40),L=r(41),F=r(42),B=r(43),R=r(44),G=r(45),j=r(46),D=r(47),$=r(20),H=r(48),V=r(53),X=r(49),z=r(52),U=r(50),K=r(51),J=r(54),Q=r(25),W=r(55),Z=r(57),Y=r(58),tt=r(59),et=r(27),rt=r(56),nt=r(26),at=r(21),ot=r(60),it=r(61),st=r(62),lt=r(63),ct=r(64),ut=r(29),pt=r(65),ft=r(66),dt=r(28),ht=r(67),mt=r(68),gt=r(69);Object(n.combineWithMathJax)({_:{input:{tex_ts:a,tex:{AllPackages:o,Configuration:i,FilterUtil:s,FindTeX:l,MapHandler:c,NodeFactory:u,NodeUtil:p,ParseMethods:f,ParseOptions:d,ParseUtil:h,Stack:m,StackItem:g,StackItemFactory:v,Symbol:y,SymbolMap:b,Tags:x,TexConstants:A,TexError:M,TexParser:_,action:{ActionConfiguration:C},amscd:{AmsCdConfiguration:P,AmsCdMethods:w},ams:{AmsConfiguration:S,AmsItems:T,AmsMethods:k},autoload:{AutoloadConfiguration:O},base:{BaseConfiguration:E,BaseItems:I,BaseMethods:N},bbox:{BboxConfiguration:q},boldsymbol:{BoldsymbolConfiguration:L},braket:{BraketConfiguration:F,BraketItems:B,BraketMethods:R},bussproofs:{BussproofsConfiguration:G,BussproofsItems:j,BussproofsMethods:D,BussproofsUtil:$},cancel:{CancelConfiguration:H},colorv2:{ColorV2Configuration:V},color:{ColorConfiguration:X,ColorConstants:z,ColorMethods:U,ColorUtil:K},configmacros:{ConfigMacrosConfiguration:J},enclose:{EncloseConfiguration:Q},extpfeil:{ExtpfeilConfiguration:W},html:{HtmlConfiguration:Z,HtmlMethods:Y},mhchem:{MhchemConfiguration:tt},newcommand:{NewcommandConfiguration:et,NewcommandItems:rt,NewcommandMethods:nt,NewcommandUtil:at},noerrors:{NoErrorsConfiguration:ot},noundefined:{NoUndefinedConfiguration:it},physics:{PhysicsConfiguration:st,PhysicsItems:lt,PhysicsMethods:ct},require:{RequireConfiguration:ut},tagformat:{TagFormatConfiguration:pt},textmacros:{TextMacrosConfiguration:ft,TextMacrosMethods:dt,TextParser:ht},unicode:{UnicodeConfiguration:mt},verb:{VerbConfiguration:gt}}}}});var vt,yt=r(10);function bt(t,e,r){var a,o,i,s=MathJax.config.tex;if(s&&s.packages){var l=s.packages,c=l.indexOf(t);c>=0&&(l[c]=e),r&&s[t]&&(Object(n.combineConfig)(s,(a={},o=e,i=s[t],o in a?Object.defineProperty(a,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[o]=i,a)),delete s[t])}}function xt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}r(70).Loader.preLoad(\"input/tex-base\",\"[tex]/all-packages\",\"[tex]/require\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",a.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(yt.insert)(MathJax.config.tex,{packages:e})}}([\"require\"].concat(function(t){if(Array.isArray(t))return xt(t)}(vt=o.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(vt)||function(t,e){if(t){if(\"string\"==typeof t)return xt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?xt(t,e):void 0}}(vt)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),bt(\"amsCd\",\"amscd\",!0),bt(\"colorV2\",\"colorv2\",!1),bt(\"configMacros\",\"configmacros\",!1),bt(\"tagFormat\",\"tagformat\",!0)}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/input/tex.js",
    "content": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)r.d(n,a,function(e){return t[e]}.bind(null,a));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=54)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(e,r){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];this.id=e,this.message=t.processString(r,n)}return t.processString=function(e,r){for(var n=e.split(t.pattern),a=1,i=n.length;a<i;a+=2){var o=n[a].charAt(0);if(o>=\"0\"&&o<=\"9\")n[a]=r[parseInt(n[a],10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else if(\"{\"===o){if((o=n[a].substr(1))>=\"0\"&&o<=\"9\")n[a]=r[parseInt(n[a].substr(1,n[a].length-2),10)-1],\"number\"==typeof n[a]&&(n[a]=n[a].toString());else n[a].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(n[a]=\"%\"+n[a])}null==n[a]&&(n[a]=\"???\")}return n.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=n},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,s=r(5),l=r(46);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function r(t,r){var a,i;try{for(var o=n(Object.keys(r)),s=o.next();!s.done;s=o.next()){var l=s.value,u=r[l];\"texClass\"===l?(t.texClass=u,t.setProperty(l,u)):\"movablelimits\"===l?(t.setProperty(\"movablelimits\",u),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",u)):\"inferred\"===l||(e.has(l)?t.setProperty(l,u):t.attributes.set(l,u))}}catch(t){a={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(a)throw a.error}}}function a(t,e,r){t.childNodes[e]=r,r&&(r.parent=t)}function o(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var r,a;try{for(var i=n(e),o=i.next();!o.done;o=i.next()){var s=o.value;t.appendChild(s)}}catch(t){r={error:t}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}},t.setAttribute=function(t,e,r){t.attributes.set(e,r)},t.setProperty=function(t,e,r){t.setProperty(e,r)},t.setProperties=r,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];t.removeProperty.apply(t,i(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=a,t.copyChildren=function(t,e){for(var r=t.childNodes,n=0;n<r.length;n++)a(e,n,r[n])},t.copyAttributes=function(t,e){e.attributes=t.attributes,r(e,t.getAllProperties())},t.isType=o,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof s.AbstractMmlNode||t instanceof s.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,r;if(!o(t,\"mo\"))return null;var a=t,i=a.getForms();try{for(var s=n(i),u=s.next();!u.done;u=s.next()){var c=u.value,f=l.MmlMo.OPTABLE[c][a.getText()];if(f)return f}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return null}}(o||(o={})),e.default=o},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var l=r(10),u=r(12),c=function(){function t(t,e){this._name=t,this._parser=e,u.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.parserFor(n),o=this.lookup(n);return a&&o?a(r,o)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=c;var f=function(t){function e(e,r,n){var a=t.call(this,e,r)||this;return a._regExp=n,a}return a(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(c);e.RegExpMap=f;var p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return a(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(c);e.AbstractParseMap=p;var d=function(t){function e(e,r,n){var a,s,u=t.call(this,e,r)||this;try{for(var c=o(Object.keys(n)),f=c.next();!f.done;f=c.next()){var p=f.value,d=n[p],h=i(\"string\"==typeof d?[d,null]:d,2),m=h[0],g=h[1],y=new l.Symbol(p,m,g);u.add(p,y)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}return u}return a(e,t),e}(p);e.CharacterMap=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(e){var r=i(e,2),n=r[0],a=r[1];return t.prototype.parse.call(this,[n,\"\\\\\"+a])},e}(d);e.DelimiterMap=h;var m=function(t){function e(e,r,n){var a,s,u=t.call(this,e,null)||this;try{for(var c=o(Object.keys(r)),f=c.next();!f.done;f=c.next()){var p=f.value,d=r[p],h=i(\"string\"==typeof d?[d]:d),m=h[0],g=h.slice(1),y=new l.Macro(p,n[m],g);u.add(p,y)}}catch(t){a={error:t}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}return u}return a(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);return a&&o?o.apply(void 0,s([r,a.symbol],a.args))||!0:null},e}(p);e.MacroMap=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);if(!a||!o)return null;if(!o)return null;var l=r.currentCS;r.currentCS=\"\\\\\"+n;var u=o.apply(void 0,s([r,\"\\\\\"+a.symbol],a.args));return r.currentCS=l,u||!0},e}(m);e.CommandMap=g;var y=function(t){function e(e,r,n,a){var i=t.call(this,e,n,a)||this;return i.parser=r,i}return a(e,t),e.prototype.parse=function(t){var e=i(t,2),r=e[0],n=e[1],a=this.lookup(n),o=this.parserFor(n);return a&&o?(this.parser(r,a.symbol,o,a.args),!0):null},e}(m);e.EnvironmentMap=y},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(5),s=r(1),l=r(8),u=r(0),c=r(11);r(33),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},r=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",i=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",f=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+i+\"\\\\s*$\"),p=RegExp(\"^\\\\s*\"+r+\"\\\\s*\"+i+\" ?\");function d(t,r){void 0===r&&(r=!1);var a=t.match(r?p:f);return a?function(t){var r=n(t,3),a=r[0],i=r[1],o=r[2];if(\"mu\"!==i)return[a,i,o];return[h(e[i](parseFloat(a||\"1\"))).slice(0,-2),\"em\",o]}([a[1].replace(/,/,\".\"),a[4],a[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function m(t,e,r){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var n=\"{\\\\bigg\"+r+\" \"+e+\"}\",a=\"{\\\\big\"+r+\" \"+e+\"}\";return new l.default(\"\\\\mathchoice\"+n+a+a+a,{},t).mml()}function g(t,e,r){e=e.replace(/^\\s+/,c.entities.nbsp).replace(/\\s+$/,c.entities.nbsp);var n=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],r,n)}function y(t,e,r){if(r.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+r.length>t.configuration.options.maxBuffer)throw new u.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+r}function v(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function b(t,e){for(var r=t.length,n=0,a=\"\",i=0,o=0,s=!0,l=!1;i<r;){var c=t[i++];switch(c){case\" \":break;case\"{\":s?o++:(l=!1,o>n&&(o=n)),n++;break;case\"}\":n&&n--,(s||l)&&(o--,l=!0),s=!1;break;default:if(!n&&-1!==e.indexOf(c))return[l?\"true\":v(a,o),c,t.slice(i)];s=!1,l=!1}a+=c}if(n)throw new u.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[l?\"true\":v(a,o),\"\",t.slice(i)]}t.matchDimen=d,t.dimen2em=function(t){var r=n(d(t),2),a=r[0],i=r[1],o=parseFloat(a||\"1\"),s=e[i];return s?s(o):0},t.Em=h,t.fenced=function(t,e,r,n,a){void 0===a&&(a=\"\");var i,u=t.nodeFactory,c=u.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:o.TEXCLASS.INNER});if(a)i=new l.default(\"\\\\\"+a+\"l\"+e,t.parser.stack.env,t).mml();else{var f=u.create(\"text\",e);i=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.OPEN},f)}if(s.default.appendChildren(c,[i]),s.default.isType(r,\"mrow\")&&s.default.isInferred(r)?s.default.appendChildren(c,s.default.getChildren(r)):s.default.appendChildren(c,[r]),a)i=new l.default(\"\\\\\"+a+\"r\"+n,t.parser.stack.env,t).mml();else{var p=u.create(\"text\",n);i=u.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.CLOSE},p)}return s.default.appendChildren(c,[i]),c},t.fixedFence=function(t,e,r,n){var a=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:n,texClass:o.TEXCLASS.ORD});return e&&s.default.appendChildren(a,[m(t,e,\"l\")]),s.default.isType(r,\"mrow\")?s.default.appendChildren(a,s.default.getChildren(r)):s.default.appendChildren(a,[r]),n&&s.default.appendChildren(a,[m(t,n,\"r\")]),a},t.mathPalette=m,t.fixInitialMO=function(t,e){for(var r=0,n=e.length;r<n;r++){var a=e[r];if(a&&!s.default.isType(a,\"mspace\")&&(!s.default.isType(a,\"TeXAtom\")||s.default.getChildren(a)[0]&&s.default.getChildren(s.default.getChildren(a)[0]).length)){if(s.default.isEmbellished(a)||s.default.isType(a,\"TeXAtom\")&&s.default.getTexClass(a)===o.TEXCLASS.REL){var i=t.nodeFactory.create(\"node\",\"mi\");e.unshift(i)}break}}},t.internalMath=function(t,e,r,n){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,r,n);var a,i,o=n||t.stack.env.font,s=o?{mathvariant:o}:{},c=[],f=0,p=0,d=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;f<e.length;)if(\"$\"===(a=e.charAt(f++)))\"$\"===d&&0===h?(i=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(p,f-1),{},t.configuration).mml()]),c.push(i),d=\"\",p=f):\"\"===d&&(p<f-1&&c.push(g(t,e.slice(p,f-1),s)),d=\"$\",p=f);else if(\"{\"===a&&\"\"!==d)h++;else if(\"}\"===a)if(\"}\"===d&&0===h){var m=new l.default(e.slice(p,f),{},t.configuration).mml();i=t.create(\"node\",\"TeXAtom\",[m],s),c.push(i),d=\"\",p=f}else\"\"!==d&&h&&h--;else if(\"\\\\\"===a)if(\"\"===d&&e.substr(f).match(/^(eq)?ref\\s*\\{/)){var y=RegExp[\"$&\"].length;p<f-1&&c.push(g(t,e.slice(p,f-1),s)),d=\"}\",p=f-1,f+=y}else\"(\"===(a=e.charAt(f++))&&\"\"===d?(p<f-2&&c.push(g(t,e.slice(p,f-2),s)),d=\")\",p=f):\")\"===a&&\")\"===d&&0===h?(i=t.create(\"node\",\"TeXAtom\",[new l.default(e.slice(p,f-2),{},t.configuration).mml()]),c.push(i),d=\"\",p=f):a.match(/[${}\\\\]/)&&\"\"===d&&(f--,e=e.substr(0,f-1)+e.substr(f));if(\"\"!==d)throw new u.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return p<e.length&&c.push(g(t,e.slice(p),s)),null!=r?c=[t.create(\"node\",\"mstyle\",c,{displaystyle:!1,scriptlevel:r})]:c.length>1&&(c=[t.create(\"node\",\"mrow\",c)]),c},t.internalText=g,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,r){return\"t\"===(r=t.trimSpaces(r||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===r?e.arraydef.align=\"baseline -1\":\"c\"===r?e.arraydef.align=\"center\":r&&(e.arraydef.align=r),e},t.substituteArgs=function(t,e,r){for(var n=\"\",a=\"\",i=0;i<r.length;){var o=r.charAt(i++);if(\"\\\\\"===o)n+=o+r.charAt(i++);else if(\"#\"===o)if(\"#\"===(o=r.charAt(i++)))n+=o;else{if(!o.match(/[1-9]/)||parseInt(o,10)>e.length)throw new u.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");a=y(t,y(t,a,n),e[parseInt(o,10)-1]),n=\"\"}else n+=o}return y(t,a,n)},t.addArgs=y,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new u.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,r){return r},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,r){var i,o;void 0===e&&(e=null),void 0===r&&(r=!1);var s=function(t){var e,r,a,i,o,s={},l=t;for(;l;)i=(e=n(b(l,[\"=\",\",\"]),3))[0],a=e[1],l=e[2],\"=\"===a?(o=(r=n(b(l,[\",\"]),3))[0],a=r[1],l=r[2],o=\"false\"===o||\"true\"===o?JSON.parse(o):o,s[i]=o):i&&(s[i]=!0);return s}(t);if(e)try{for(var l=a(Object.keys(s)),c=l.next();!c.done;c=l.next()){var f=c.value;if(!e.hasOwnProperty(f)){if(r)throw new u.default(\"InvalidOption\",\"Invalid optional argument: %1\",f);delete s[f]}}}catch(t){i={error:t}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}return s}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var i,o=r(6),s=r(12),l=r(35),u=r(34),c=r(9),f=function(){function t(t,e,r,n,a,i,o,s,l,u,c,f){void 0===e&&(e={}),void 0===r&&(r={}),void 0===n&&(n={}),void 0===a&&(a={}),void 0===i&&(i={}),void 0===o&&(o={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===u&&(u=null),void 0===c&&(c=null),this.name=t,this.handler=e,this.fallback=r,this.items=n,this.tags=a,this.options=i,this.nodes=o,this.preprocessors=s,this.postprocessors=l,this.initMethod=u,this.configMethod=c,this.priority=f,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,r){var n=this;void 0===r&&(r={});var a=r.priority||u.PrioritizedList.DEFAULTPRIORITY,i=r.init?this.makeProcessor(r.init,a):null,o=r.config?this.makeProcessor(r.config,a):null,s=(r.preprocessors||[]).map((function(t){return n.makeProcessor(t,a)})),l=(r.postprocessors||[]).map((function(t){return n.makeProcessor(t,a)}));return new t(e,r.handler||{},r.fallback||{},r.items||{},r.tags||{},r.options||{},r.nodes||{},s,l,i,o,a)},t.create=function(e,r){void 0===r&&(r={});var n=t._create(e,r);return i.set(e,n),n},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=f,function(t){var e=new Map;t.set=function(t,r){e.set(t,r)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(i=e.ConfigurationHandler||(e.ConfigurationHandler={}));var p=function(){function t(t){var e,r,a,i;this.initMethod=new l.FunctionList,this.configMethod=new l.FunctionList,this.configurations=new u.PrioritizedList,this.handlers=new s.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var o=n(t.slice().reverse()),c=o.next();!c.done;c=o.next()){var f=c.value;this.addPackage(f)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}try{for(var p=n(this.configurations),d=p.next();!d.done;d=p.next()){var h=d.value,m=h.item,g=h.priority;this.append(m,g)}}catch(t){a={error:t}}finally{try{d&&!d.done&&(i=p.return)&&i.call(p)}finally{if(a)throw a.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,r;this.configMethod.execute(this,t);try{for(var a=n(this.configurations),i=a.next();!i.done;i=a.next()){var o=i.value;this.addFilters(t,o.item)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],r=i.get(e);r&&this.configurations.add(r,\"string\"==typeof t?r.priority:t[1])},t.prototype.add=function(t,e,r){var a,i;void 0===r&&(r={}),this.append(t),this.configurations.add(t,t.priority),this.init();var s=e.parseOptions;s.nodeFactory.setCreators(t.nodes);try{for(var l=n(Object.keys(t.items)),u=l.next();!u.done;u=l.next()){var f=u.value;s.itemFactory.setNodeClass(f,t.items[f])}}catch(t){a={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(a)throw a.error}}c.TagsFactory.addTags(t.tags),o.defaultOptions(s.options,t.options),o.userOptions(s.options,r),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),o.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var r,i,o,s;try{for(var l=n(e.preprocessors),u=l.next();!u.done;u=l.next()){var c=a(u.value,2),f=c[0],p=c[1];t.preFilters.add(f,p)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(r)throw r.error}}try{for(var d=n(e.postprocessors),h=d.next();!h.done;h=d.next()){var m=a(h.value,2),g=m[0];p=m[1];t.postFilters.add(g,p)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(s=d.return)&&s.call(d)}finally{if(o)throw o.error}}},t}();e.ParserConfiguration=p},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,e.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,e.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,e.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,e.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,e.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,e.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,e.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,e.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,e.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(3),s=r(24),l=r(0),u=r(5),c=function(){function t(t,e,r){var a,i;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS=\"\";var o,l=e.hasOwnProperty(\"isInner\"),u=e.isInner;if(delete e.isInner,e){o={};try{for(var c=n(Object.keys(e)),f=c.next();!f.done;f=c.next()){var p=f.value;o[p]=e[p]}}catch(t){a={error:t}}finally{try{f&&!f.done&&(i=c.return)&&i.call(c)}finally{if(a)throw a.error}}}this.configuration.pushParser(this),this.stack=new s.default(this.itemFactory,o,!l||u),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,r=\"\";try{for(var a=n(Array.from(this.configuration.handlers.keys())),i=a.next();!i.done;i=a.next()){var o=i.value;r+=o+\": \"+this.configuration.handlers.get(o)+\"\\n\"}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof u.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,r;try{for(var a=n(t),i=a.next();!i.done;i=a.next()){var o=i.value;this.stack.Push(o)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new l.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new l.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var r=++this.i,n=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":n++;break;case\"}\":if(0==--n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}var a=this.getCodePoint();return this.i+=a.length,a},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var r=++this.i,n=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":n++;break;case\"\\\\\":this.i++;break;case\"}\":if(n--<=0)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===n)return this.string.slice(r,this.i-1)}throw new l.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var r=this.GetNext();if(this.i+=r.length,this.i<=this.string.length&&(\"\\\\\"===r?r+=this.GetCS():\"{\"===r&&e&&(this.i--,r=this.GetArgument(t)),this.contains(\"delimiter\",r)))return this.convertDelimiter(r);throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),r=a(o.default.matchDimen(e),2),n=r[0],i=r[1];if(n)return n+i}else{e=this.string.slice(this.i);var s=a(o.default.matchDimen(e,!0),3),u=(n=s[0],i=s[1],s[2]);if(n)return this.i+=u,n+i}throw new l.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var r=this.i,n=0;this.i<this.string.length;){var a=this.i,i=this.GetNext();switch(this.i+=i.length,i){case\"\\\\\":i+=this.GetCS();break;case\"{\":n++;break;case\"}\":if(0===n)throw new l.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);n--}if(0===n&&i===e)return this.string.slice(r,a)}throw new l.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,r){return new t(this.GetUpTo(e,r),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=o.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new l.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.configuration.nodeFactory).create.apply(e,i([t],r))},t}();e.default=c},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var o=r(8),s=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=s;var l=function(t,e,r,n,a,i,o,s){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===a&&(a=\"\"),void 0===i&&(i=\"\"),void 0===o&&(o=!1),void 0===s&&(s=\"\"),this.env=t,this.taggable=e,this.defaultTags=r,this.tag=n,this.tagId=a,this.tagFormat=i,this.noTag=o,this.labelId=s};e.TagInfo=l;var u=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new l,this.history=[],this.stack=[],this.enTag=function(t,e){var r=this.configuration.nodeFactory,n=r.create(\"node\",\"mtd\",[t]),a=r.create(\"node\",\"mlabeledtr\",[e,n]);return r.create(\"node\",\"mtable\",[a],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,r){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new l(t,e,r)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var r=this.makeTag();return this.enTag(t,r)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new s(this.currentTag.tag,this.currentTag.tagId));var t=new o.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=u;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(u);e.NoTags=c;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var r=this.getTag(!0);return this.enTag(t,r)},e}(u);e.AllTags=f,function(t){var e=new Map([[\"none\",c],[\"all\",f]]),r=\"none\";t.OPTIONS={tags:r,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,r){e.set(t,r)},t.addTags=function(e){var r,n;try{for(var a=i(Object.keys(e)),o=a.next();!o.done;o=a.next()){var s=o.value;t.add(s,e[s])}}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}},t.create=function(t){var n=e.get(t)||e.get(r);if(!n)throw Error(\"Unknown tags class\");return new n},t.setDefault=function(t){r=t},t.getDefault=function(){return t.create(r)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var n=function(){function t(t,e,r){this._symbol=t,this._char=e,this._attributes=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=n;var a=function(){function t(t,e,r){void 0===r&&(r=[]),this._symbol=t,this._func=e,this._args=r}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=a},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var i,o=r(34),s=r(35);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(i=e.MapHandler||(e.MapHandler={}));var l=function(){function t(){this._configuration=new o.PrioritizedList,this._fallback=new s.FunctionList}return t.prototype.add=function(t,e,r){var a,s;void 0===r&&(r=o.PrioritizedList.DEFAULTPRIORITY);try{for(var l=n(t.slice().reverse()),u=l.next();!u.done;u=l.next()){var c=u.value,f=i.getMap(c);if(!f)return void this.warn(\"Configuration \"+c+\" not found! Omitted.\");this._configuration.add(f,r)}}catch(t){a={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}e&&this._fallback.add(e,r)},t.prototype.parse=function(t){var e,r;try{for(var i=n(this._configuration),o=i.next();!o.done;o=i.next()){var s=o.value.item.parse(t);if(s)return s}}catch(t){e={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}var l=a(t,2),u=l[0],c=l[1];this._fallback.toArray()[0].item(u,c)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,r=[];try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;r.push(o.name)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}return r.join(\", \")},t.prototype.applicable=function(t){var e,r;try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;if(o.contains(t))return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this._configuration),i=a.next();!i.done;i=a.next()){var o=i.value.item;if(o.name===t)return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=l;var u=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,r){var a,i;void 0===r&&(r=o.PrioritizedList.DEFAULTPRIORITY);try{for(var s=n(Object.keys(t)),u=s.next();!u.done;u=s.next()){var c=u.value,f=this.get(c);f||(f=new l,this.set(c,f)),f.add(t[c],e[c],r)}}catch(t){a={error:t}}finally{try{u&&!u.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,r;try{for(var a=n(this.map.values()),i=a.next();!i.done;i=a.next()){var o=i.value.retrieve(t);if(o)return o}}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=u},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t},s=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var l=r(0),u=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];(t=this._nodes).push.apply(t,o(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return(e=this.factory.configuration.nodeFactory).create.apply(e,o([t],r))},t}();e.MmlStack=u;var c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,r)||this;return a.factory=e,a.global={},a._properties={},a.isOpen&&(a._env={}),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new l.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var r=i(this.getErrors(t.kind),2),n=r[0],a=r[1];throw new l.default(n,a,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var r=s(Object.keys(this.env)),n=r.next();!n.done;n=r.next()){var a=n.value;delete this.env[a]}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(u);e.BaseItem=c},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var s=r(12),l=r(11),u=r(5),c=r(0),f=r(3),p=r(1),d=r(13),h=function(t){function e(e,r){var n=t.call(this,e)||this;return n.global=r,n}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var r=this.toMml();return this.global.isInner||(r=this.factory.configuration.tags.finalize(r,this.env)),[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.StartItem=h;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.StopItem=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var r=this.toMml(),n=this.create(\"node\",\"TeXAtom\",[r]);return[[this.factory.create(\"mml\",n)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(d.BaseItem);e.OpenItem=g;var y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CloseItem=y;var v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=i(this.Peek(2),2),r=e[0],n=e[1];return!p.default.isType(r,\"msubsup\")||p.default.isType(r,\"msup\")?[[this.create(\"node\",\"msup\",[r,n]),t],!0]:(p.default.setChild(r,r.sup,n),[[r,t],!0])},e}(d.BaseItem);e.PrimeItem=v;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return d.BaseItem.success;var r=this.First,n=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==n)p.default.setChild(r,2,this.getProperty(\"primes\"));else{p.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var a=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=a}return p.default.setChild(r,n,e.First),null!=this.getProperty(\"movesupsub\")&&p.default.setProperty(r,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",r)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var i=this.getErrors([\"\",\"sub\",\"sup\"][n]);throw new(c.default.bind.apply(c.default,o([void 0,i[0],i[1]],i.splice(2))))}return null},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(d.BaseItem);e.SubsupItem=b;var A=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"name\",\"\\\\over\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new c.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var r=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&p.default.setAttribute(r,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(p.default.setProperty(r,\"withDelims\",!0),r=f.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",r),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(d.BaseItem);e.OverItem=A;var M=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\"(\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",f.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(d.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(d.BaseItem);e.LeftItem=M;var x=function(t){function e(e){var r=t.call(this,e)||this;return r.setProperty(\"delim\",\")\"),r}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.RightItem=x;var T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new c.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?d.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.BeginItem=T;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.EndItem=w;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var r=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",r),e],!0]},e}(d.BaseItem);e.StyleItem=S;var P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new c.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var r=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return r=this.create(\"node\",\"mpadded\",[r],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",r)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.PositionItem=P;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.CellItem=C;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(d.BaseItem);e.MmlItem=O;var E=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var r=this.First;if(r){if(e.isOpen)return d.BaseItem.success;if(!e.isKind(\"fn\")){var n=e.First;if(!e.isKind(\"mml\")||!n)return[[r,e],!0];if(p.default.isType(n,\"mstyle\")&&n.childNodes.length&&p.default.isType(n.childNodes[0].childNodes[0],\"mspace\")||p.default.isType(n,\"mspace\"))return[[r,e],!0];p.default.isEmbellished(n)&&(n=p.default.getCoreMO(n));var a=p.default.getForm(n);if(null!=a&&[0,0,1,1,0,1,1,0,0,0][a[2]])return[[r,e],!0]}var i=this.create(\"token\",\"mo\",{texClass:u.TEXCLASS.NONE},l.entities.ApplyFunction);return[[r,i,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(d.BaseItem);e.FnItem=E;var k=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=s.MapHandler.getMap(\"not_remap\"),e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,r,n;if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;if(t.isKind(\"mml\")&&(p.default.isType(t.First,\"mo\")||p.default.isType(t.First,\"mi\")||p.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(r=p.default.getText(e)).length&&!p.default.getProperty(e,\"movesupsub\")&&1===p.default.getChildren(e).length))return this.remap.contains(r)?(n=this.create(\"text\",this.remap.lookup(r).char),p.default.setChild(e,0,n)):(n=this.create(\"text\",\"\\u0338\"),p.default.appendChildren(e,[n])),[[t],!0];n=this.create(\"text\",\"\\u29f8\");var a=this.create(\"node\",\"mtext\",[],{},n),i=this.create(\"node\",\"mpadded\",[a],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[i],{texClass:u.TEXCLASS.REL}),t],!0]},e}(d.BaseItem);e.NotItem=k;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return d.BaseItem.success;var e=this.getProperty(\"ldots\"),r=t.First;if(t.isKind(\"mml\")&&p.default.isEmbellished(r)){var n=p.default.getTexClass(p.default.getCoreMO(r));n!==u.TEXCLASS.BIN&&n!==u.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(d.BaseItem);e.DotsItem=_;var I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),d.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),d.BaseItem.fail;this.EndTable(),this.clearEnv();var r=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var n=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?p.default.setAttribute(n,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),n=this.create(\"node\",\"menclose\",[n],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||p.default.setAttribute(n,\"padding\",0)),r&&(n=this.create(\"node\",\"mstyle\",[n],{scriptlevel:r})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(n=f.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\")));var a=this.factory.create(\"mml\",n);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[a],!0];throw new c.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[a,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&p.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&p.default.setAttribute(t,\"columnalign\",p.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(d.BaseItem);e.ArrayItem=I;var N=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(r[0],r[2],r[1]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&f.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var r=this.create(\"node\",t,this.row);this.table.push(r),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(I);e.EqnArrayItem=N;var L=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"equation\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var r=this.toMml(),n=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[n?this.factory.configuration.tags.enTag(r,n):r,e],!0]}if(e.isKind(\"stop\"))throw new c.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(d.BaseItem);e.EquationItem=L},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var a=r(14),i=r(1),o=r(0),s=r(8),l=r(7),u=r(3),c=r(5),f=r(9),p=r(11);r(33),r(49),r(50);var d={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function m(t,e){var r=t.stack.env,n=r.inRoot;r.inRoot=!0;var a=new s.default(e,r,t.configuration),i=a.mml(),o=a.stack.global;if(o.leftRoot||o.upRoot){var l={};o.leftRoot&&(l.width=o.leftRoot),o.upRoot&&(l.voffset=o.upRoot,l.height=o.upRoot),i=t.create(\"node\",\"mpadded\",[i],l)}return r.inRoot=n,i}d.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},d.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},d.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},p.entities.nbsp))},d.Space=function(t,e){},d.Superscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=i.default.getProperty(s,\"movesupsub\"),c=i.default.isType(s,\"msubsup\")?s.sup:s.over;if(i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")&&i.default.getChildAt(s,s.sup)||i.default.isType(s,\"munderover\")&&!i.default.isType(s,\"mover\")&&i.default.getChildAt(s,s.over)&&!i.default.getProperty(s,\"subsupOK\"))throw new o.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")||(u?((!i.default.isType(s,\"munderover\")||i.default.isType(s,\"mover\")||i.default.getChildAt(s,s.over))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.over):c=(s=t.create(\"node\",\"msubsup\",[s])).sup),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:a,movesupsub:u}))},d.Subscript=function(t,e){var r,a,s;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var l=t.stack.Top();l.isKind(\"prime\")?(s=(r=n(l.Peek(2),2))[0],a=r[1],t.stack.Pop()):(s=t.stack.Prev())||(s=t.create(\"token\",\"mi\",{},\"\"));var u=i.default.getProperty(s,\"movesupsub\"),c=i.default.isType(s,\"msubsup\")?s.sub:s.under;if(i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")&&i.default.getChildAt(s,s.sub)||i.default.isType(s,\"munderover\")&&!i.default.isType(s,\"mover\")&&i.default.getChildAt(s,s.under)&&!i.default.getProperty(s,\"subsupOK\"))throw new o.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");i.default.isType(s,\"msubsup\")&&!i.default.isType(s,\"msup\")||(u?((!i.default.isType(s,\"munderover\")||i.default.isType(s,\"mover\")||i.default.getChildAt(s,s.under))&&(s=t.create(\"node\",\"munderover\",[s],{movesupsub:!0})),c=s.under):c=(s=t.create(\"node\",\"msubsup\",[s])).sub),t.Push(t.itemFactory.create(\"subsup\",s).setProperties({position:c,primes:a,movesupsub:u}))},d.Prime=function(t,e){var r=t.stack.Prev();if(r||(r=t.create(\"node\",\"mi\")),i.default.isType(r,\"msubsup\")&&!i.default.isType(r,\"msup\")&&i.default.getChildAt(r,r.sup))throw new o.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var n=\"\";t.i--;do{n+=p.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===p.entities.rquote);n=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][n.length]||n;var a=t.create(\"token\",\"mo\",{},n);t.Push(t.itemFactory.create(\"prime\",r,a))},d.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},d.Hash=function(t,e){throw new o.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},d.SetFont=function(t,e,r){t.stack.env.font=r},d.SetStyle=function(t,e,r,n,a){t.stack.env.style=r,t.stack.env.level=a,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:n,scriptlevel:a}))},d.SetSize=function(t,e,r){t.stack.env.size=r,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:r+\"em\"}))},d.Spacer=function(t,e,r){var n=t.create(\"node\",\"mspace\",[],{width:r}),a=t.create(\"node\",\"mstyle\",[n],{scriptlevel:0});t.Push(a)},d.LeftRight=function(t,e){var r=e.substr(1);t.Push(t.itemFactory.create(r).setProperty(\"delim\",t.GetDelimiter(e)))},d.Middle=function(t,e){var r=t.GetDelimiter(e),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.CLOSE});if(t.Push(n),!t.stack.Top().isKind(\"left\"))throw new o.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);n=t.create(\"token\",\"mo\",{stretchy:!0},r),t.Push(n),n=t.create(\"node\",\"TeXAtom\",[],{texClass:c.TEXCLASS.OPEN}),t.Push(n)},d.NamedFn=function(t,e,r){r||(r=e.substr(1));var n=t.create(\"token\",\"mi\",{texClass:c.TEXCLASS.OP},r);t.Push(t.itemFactory.create(\"fn\",n))},d.NamedOp=function(t,e,r){r||(r=e.substr(1)),r=r.replace(/&thinsp;/,\"\\u2006\");var n=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:l.TexConstant.Form.PREFIX,texClass:c.TEXCLASS.OP},r);t.Push(n)},d.Limits=function(t,e,r){var n=t.stack.Prev(!0);if(!n||i.default.getTexClass(i.default.getCoreMO(n))!==c.TEXCLASS.OP&&null==i.default.getProperty(n,\"movesupsub\"))throw new o.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var a,s=t.stack.Top();i.default.isType(n,\"munderover\")&&!r?(a=t.create(\"node\",\"msubsup\"),i.default.copyChildren(n,a),n=s.Last=a):i.default.isType(n,\"msubsup\")&&r&&(a=t.create(\"node\",\"munderover\"),i.default.copyChildren(n,a),n=s.Last=a),i.default.setProperty(n,\"movesupsub\",!!r),i.default.setProperties(i.default.getCoreMO(n),{movablelimits:!1}),(i.default.getAttribute(n,\"movablelimits\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1})},d.Over=function(t,e,r,n){var a=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);r||n?(a.setProperty(\"open\",r),a.setProperty(\"close\",n)):e.match(/withdelims$/)&&(a.setProperty(\"open\",t.GetDelimiter(e)),a.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?a.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||r||n)&&a.setProperty(\"thickness\",0),t.Push(a)},d.Frac=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.create(\"node\",\"mfrac\",[r,n]);t.Push(a)},d.Sqrt=function(t,e){var r=t.GetBrackets(e),n=t.GetArgument(e);\"\\\\frac\"===n&&(n+=\"{\"+t.GetArgument(n)+\"}{\"+t.GetArgument(n)+\"}\");var a=new s.default(n,t.stack.env,t.configuration).mml();a=r?t.create(\"node\",\"mroot\",[a,m(t,r)]):t.create(\"node\",\"msqrt\",[a]),t.Push(a)},d.Root=function(t,e){var r=t.GetUpTo(e,\"\\\\of\"),n=t.ParseArg(e),a=t.create(\"node\",\"mroot\",[n,m(t,r)]);t.Push(a)},d.MoveRoot=function(t,e,r){if(!t.stack.env.inRoot)throw new o.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[r])throw new o.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var n=t.GetArgument(e);if(!n.match(/-?[0-9]+/))throw new o.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(n=parseInt(n,10)/15+\"em\").substr(0,1)&&(n=\"+\"+n),t.stack.global[r]=n},d.Accent=function(t,e,r,n){var a=t.ParseArg(e),o=u.default.getFontDef(t);o.accent=!0;var s=i.default.createEntity(r),l=t.create(\"token\",\"mo\",o,s);i.default.setAttribute(l,\"stretchy\",!!n);var c=i.default.isEmbellished(a)?i.default.getCoreMO(a):a;i.default.isType(c,\"mo\")&&i.default.setProperties(c,{movablelimits:!1});var f=t.create(\"node\",\"munderover\");i.default.setChild(f,0,a),i.default.setChild(f,1,null),i.default.setChild(f,2,l);var p=t.create(\"node\",\"TeXAtom\",[f]);t.Push(p)},d.UnderOver=function(t,e,r,n,a){var o,s=t.ParseArg(e),l=i.default.getForm(s);(l&&l[3]&&l[3].movablelimits||i.default.getProperty(s,\"movablelimits\"))&&i.default.setProperties(s,{movablelimits:!1}),i.default.isType(s,\"munderover\")&&i.default.isEmbellished(s)&&(i.default.setProperties(i.default.getCoreMO(s),{lspace:0,rspace:0}),o=t.create(\"node\",\"mo\",[],{rspace:0}),s=t.create(\"node\",\"mrow\",[o,s]));var u=t.create(\"node\",\"munderover\",[s]),f=i.default.createEntity(r);o=t.create(\"token\",\"mo\",{stretchy:!0,accent:!a},f),i.default.setChild(u,\"o\"===e.charAt(1)?u.over:u.under,o);var p=u;n&&(p=t.create(\"node\",\"TeXAtom\",[u],{texClass:c.TEXCLASS.OP,movesupsub:!0})),i.default.setProperty(p,\"subsupOK\",!0),t.Push(p)},d.Overset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(i.default.getAttribute(n,\"movablelimits\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"mover\",[n,r]);t.Push(a)},d.Underset=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e);(i.default.isType(n,\"mo\")||i.default.getProperty(n,\"movablelimits\"))&&i.default.setProperties(n,{movablelimits:!1});var a=t.create(\"node\",\"munder\",[n,r]);t.Push(a)},d.TeXAtom=function(t,e,r){var n,a,i,o={texClass:r};if(r===c.TEXCLASS.OP){o.movesupsub=o.movablelimits=!0;var u=t.GetArgument(e),f=u.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);f?(o.mathvariant=l.TexConstant.Variant.NORMAL,a=t.create(\"token\",\"mi\",o,f[1])):(i=new s.default(u,t.stack.env,t.configuration).mml(),a=t.create(\"node\",\"TeXAtom\",[i],o)),n=t.itemFactory.create(\"fn\",a)}else i=t.ParseArg(e),n=t.create(\"node\",\"TeXAtom\",[i],o);t.Push(n)},d.MmlToken=function(t,e){var r,n=t.GetArgument(e),a=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),s=t.GetArgument(e),l={};try{r=t.create(\"node\",n)}catch(t){r=null}if(!r||!r.isToken)throw new o.default(\"NotMathMLToken\",\"%1 is not a token element\",n);for(;\"\"!==a;){var c=a.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!c)throw new o.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",a);if(!r.attributes.hasDefault(c[1])&&!h[c[1]])throw new o.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",c[1],n);var f=u.default.MmlFilterAttribute(t,c[1],c[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));f&&(\"true\"===f.toLowerCase()?f=!0:\"false\"===f.toLowerCase()&&(f=!1),l[c[1]]=f),a=a.substr(c[0].length)}var p=t.create(\"text\",s);r.appendChild(p),i.default.setProperties(r,l),t.Push(r)},d.Strut=function(t,e){var r=t.create(\"node\",\"mrow\"),n=t.create(\"node\",\"mpadded\",[r],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(n)},d.Phantom=function(t,e,r,n){var a=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(r||n)&&(a=t.create(\"node\",\"mpadded\",[a]),n&&(i.default.setAttribute(a,\"height\",0),i.default.setAttribute(a,\"depth\",0)),r&&i.default.setAttribute(a,\"width\",0));var o=t.create(\"node\",\"TeXAtom\",[a]);t.Push(o)},d.Smash=function(t,e){var r=u.default.trimSpaces(t.GetBrackets(e,\"\")),n=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(r){case\"b\":i.default.setAttribute(n,\"depth\",0);break;case\"t\":i.default.setAttribute(n,\"height\",0);break;default:i.default.setAttribute(n,\"height\",0),i.default.setAttribute(n,\"depth\",0)}var a=t.create(\"node\",\"TeXAtom\",[n]);t.Push(a)},d.Lap=function(t,e){var r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&i.default.setAttribute(r,\"lspace\",\"-1width\");var n=t.create(\"node\",\"TeXAtom\",[r]);t.Push(n)},d.RaiseLower=function(t,e){var r=t.GetDimen(e),n=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===r.charAt(0)&&(r=r.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(n.setProperty(\"dh\",\"-\"+r),n.setProperty(\"dd\",\"+\"+r)):(n.setProperty(\"dh\",\"+\"+r),n.setProperty(\"dd\",\"-\"+r)),t.Push(n)},d.MoveLeftRight=function(t,e){var r=t.GetDimen(e),n=\"-\"===r.charAt(0)?r.slice(1):\"-\"+r;if(\"\\\\moveleft\"===e){var a=r;r=n,n=a}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:r}),right:t.create(\"node\",\"mspace\",[],{width:n})}))},d.Hskip=function(t,e){var r=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(r)},d.Rule=function(t,e,r){var n={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==r&&(n.mathbackground=t.stack.env.color||\"black\");var a=t.create(\"node\",\"mspace\",[],n);t.Push(a)},d.rule=function(t,e){var r=t.GetBrackets(e),n=t.GetDimen(e),a=t.GetDimen(e),o=t.create(\"node\",\"mspace\",[],{width:n,height:a,mathbackground:t.stack.env.color||\"black\"});r&&(o=t.create(\"node\",\"mpadded\",[o],{voffset:r}),r.match(/^\\-/)?(i.default.setAttribute(o,\"height\",r),i.default.setAttribute(o,\"depth\",\"+\"+r.substr(1))):i.default.setAttribute(o,\"height\",\"+\"+r)),t.Push(o)},d.MakeBig=function(t,e,r,n){var a=String(n*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",i=t.GetDelimiter(e,!0),o=t.create(\"token\",\"mo\",{minsize:a,maxsize:a,fence:!0,stretchy:!0,symmetric:!0},i),s=t.create(\"node\",\"TeXAtom\",[o],{texClass:r});t.Push(s)},d.BuildRel=function(t,e){var r=t.ParseUpTo(e,\"\\\\over\"),n=t.ParseArg(e),a=t.create(\"node\",\"munderover\");i.default.setChild(a,0,n),i.default.setChild(a,1,null),i.default.setChild(a,2,r);var o=t.create(\"node\",\"TeXAtom\",[a],{texClass:c.TEXCLASS.REL});t.Push(o)},d.HBox=function(t,e,r,n){t.PushAll(u.default.internalMath(t,t.GetArgument(e),r,n))},d.FBox=function(t,e){var r=u.default.internalMath(t,t.GetArgument(e)),n=t.create(\"node\",\"menclose\",r,{notation:\"box\"});t.Push(n)},d.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},d.Dots=function(t,e){var r=i.default.createEntity(\"2026\"),n=i.default.createEntity(\"22EF\"),a=t.create(\"token\",\"mo\",{stretchy:!1},r),o=t.create(\"token\",\"mo\",{stretchy:!1},n);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:a,cdots:o}))},d.Matrix=function(t,e,r,n,a,i,s,l,u,c){var f=t.GetNext();if(\"\"===f)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===f?t.i++:(t.string=f+\"}\"+t.string.slice(t.i+1),t.i=0);var p=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);p.arraydef={rowspacing:s||\"4pt\",columnspacing:i||\"1em\"},u&&p.setProperty(\"isCases\",!0),c&&(p.setProperty(\"isNumbered\",!0),p.arraydef.side=c),(r||n)&&(p.setProperty(\"open\",r),p.setProperty(\"close\",n)),\"D\"===l&&(p.arraydef.displaystyle=!0),null!=a&&(p.arraydef.columnalign=a),t.Push(p)},d.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var r=t.string,n=0,a=-1,i=t.i,s=r.length;i<s;){var l=r.charAt(i);if(\"{\"===l)n++,i++;else if(\"}\"===l)0===n?s=0:(0===--n&&a<0&&(a=i-t.i),i++);else{if(\"&\"===l&&0===n)throw new o.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===l?r.substr(i).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?s=0:i+=2:i++}}var c=r.substr(t.i,i-t.i);if(!c.match(/^\\s*\\\\text[^a-zA-Z]/)||a!==c.replace(/\\s+$/,\"\").length-1){var f=u.default.internalMath(t,c,0);t.PushAll(f),t.i=i}}},d.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},d.CrLaTeX=function(t,e,r){var i;if(void 0===r&&(r=!1),!r&&\"[\"===t.string.charAt(t.i)){var s=t.GetBrackets(e,\"\"),c=n(u.default.matchDimen(s),2),f=c[0],p=c[1];if(s&&!f)throw new o.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);i=f+p}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var d,h=t.stack.Top();if(h instanceof a.ArrayItem){if(i&&h.arraydef.rowspacing){var m=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var g=u.default.dimen2em(m[0]);h.setProperty(\"rowspacing\",g)}for(var y=h.getProperty(\"rowspacing\");m.length<h.table.length;)m.push(u.default.Em(y));m[h.table.length-1]=u.default.Em(Math.max(0,y+u.default.dimen2em(i))),h.arraydef.rowspacing=m.join(\" \")}}else i&&(d=t.create(\"node\",\"mspace\",[],{depth:i}),t.Push(d)),d=t.create(\"node\",\"mspace\",[],{linebreak:l.TexConstant.LineBreak.NEWLINE}),t.Push(d)},d.HLine=function(t,e,r){null==r&&(r=\"solid\");var n=t.stack.Top();if(!(n instanceof a.ArrayItem)||n.Size())throw new o.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(n.table.length){for(var i=n.arraydef.rowlines?n.arraydef.rowlines.split(/ /):[];i.length<n.table.length;)i.push(\"none\");i[n.table.length-1]=r,n.arraydef.rowlines=i.join(\" \")}else n.frame.push(\"top\")},d.HFill=function(t,e){var r=t.stack.Top();if(!(r instanceof a.ArrayItem))throw new o.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);r.hfill.push(r.Size())},d.BeginEnd=function(t,e){var r=t.GetArgument(e);if(r.match(/\\\\/i))throw new o.default(\"InvalidEnv\",\"Invalid environment name '%1'\",r);var n=t.configuration.handlers.get(\"environment\").lookup(r);if(n&&\"\\\\end\"===e){if(!n.args[0]){var a=t.itemFactory.create(\"end\").setProperty(\"name\",r);return void t.Push(a)}t.stack.env.closing=r}if(++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,r])},d.Array=function(t,e,r,n,a,i,o,s,l){a||(a=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var u=(\"c\"+a).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var c=t.itemFactory.create(\"array\");return c.arraydef={columnalign:a,columnspacing:i||\"1em\",rowspacing:o||\"4pt\"},u.match(/[|:]/)&&(u.charAt(0).match(/[|:]/)&&(c.frame.push(\"left\"),c.dashed=\":\"===u.charAt(0)),u.charAt(u.length-1).match(/[|:]/)&&c.frame.push(\"right\"),u=u.substr(1,u.length-2),c.arraydef.columnlines=u.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),r&&c.setProperty(\"open\",t.convertDelimiter(r)),n&&c.setProperty(\"close\",t.convertDelimiter(n)),\"D\"===s?c.arraydef.displaystyle=!0:s&&(c.arraydef.displaystyle=!1),\"S\"===s&&(c.arraydef.scriptlevel=1),l&&(c.arraydef.useHeight=!1),t.Push(e),c},d.AlignedArray=function(t,e){var r=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),n=d.Array(t,e);return u.default.setArrayAlign(n,r)},d.Equation=function(t,e,r){return t.Push(e),u.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",r).setProperty(\"name\",e.getName())},d.EqnArray=function(t,e,r,n,a,i){t.Push(e),n&&u.default.checkEqnEnv(t),a=(a=a.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var o=t.itemFactory.create(\"eqnarray\",e.getName(),r,n,t.stack.global);return o.arraydef={displaystyle:!0,columnalign:a,columnspacing:i||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},o},d.HandleNoTag=function(t,e){t.tags.notag()},d.HandleLabel=function(t,e){var r=t.GetArgument(e);if(\"\"!==r&&!t.tags.refUpdate){if(t.tags.label)throw new o.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=r,(t.tags.allLabels[r]||t.tags.labels[r])&&!t.options.ignoreDuplicateLabels)throw new o.default(\"MultipleLabel\",\"Label '%1' multiply defined\",r);t.tags.labels[r]=new f.Label}},d.HandleRef=function(t,e,r){var n=t.GetArgument(e),a=t.tags.allLabels[n]||t.tags.labels[n];a||(t.tags.refUpdate||(t.tags.redo=!0),a=new f.Label);var i=a.tag;r&&(i=t.tags.formatTag(i));var o=t.create(\"node\",\"mrow\",u.default.internalMath(t,i),{href:t.tags.formatUrl(a.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(o)},d.Macro=function(t,e,r,n,a){if(n){var i=[];if(null!=a){var s=t.GetBrackets(e);i.push(null==s?a:s)}for(var l=i.length;l<n;l++)i.push(t.GetArgument(e));r=u.default.substituteArgs(t,i,r)}if(t.string=u.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},d.MathChoice=function(t,e){var r=t.ParseArg(e),n=t.ParseArg(e),a=t.ParseArg(e),i=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[r,n,a,i]))},e.default=d},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var i,o=r(1),s=r(7),l=r(3);!function(t){t.variable=function(t,e){var r=l.default.getFontDef(t),n=t.create(\"token\",\"mi\",r,e);t.Push(n)},t.digit=function(t,e){var r,n=t.configuration.options.digits,a=t.string.slice(t.i-1).match(n),i=l.default.getFontDef(t);a?(r=t.create(\"token\",\"mn\",i,a[0].replace(/[{}]/g,\"\")),t.i+=a[0].length-1):r=t.create(\"token\",\"mo\",i,e),t.Push(r)},t.controlSequence=function(t,e){var r=t.GetCS();t.parse(\"macro\",[t,r])},t.mathchar0mi=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.ITALIC},n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.mathchar0mo=function(t,e){var r=e.attributes||{};r.stretchy=!1;var n=t.create(\"token\",\"mo\",r,e.char);o.default.setProperty(n,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",n),t.Push(n)},t.mathchar7=function(t,e){var r=e.attributes||{mathvariant:s.TexConstant.Variant.NORMAL};t.stack.env.font&&(r.mathvariant=t.stack.env.font);var n=t.create(\"token\",\"mi\",r,e.char);t.Push(n)},t.delimiter=function(t,e){var r=e.attributes||{};r=Object.assign({fence:!1,stretchy:!1},r);var n=t.create(\"token\",\"mo\",r,e.char);t.Push(n)},t.environment=function(t,e,r,n){var i=n[0],o=t.itemFactory.create(\"begin\").setProperties({name:e,end:i});o=r.apply(void 0,a([t,o],n.slice(1))),t.Push(o)}}(i||(i={})),e.default=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var n=r(3),a=r(1),i=r(7),o=r(8),s=r(0),l=r(10),u=r(15),c=r(5);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,r,a,i,o,s){var l=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),c=u.default.EqnArray(t,e,r,a,i,o,s);return n.default.setArrayAlign(c,l)},e.AmsMethods.AlignAt=function(t,r,a,i){var o,l,u=r.getName(),c=\"\",f=[];if(i||(l=t.GetBrackets(\"\\\\begin{\"+u+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+u+\"}\")).match(/[^0-9]/))throw new s.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+u+\"}\");for(var p=parseInt(o,10);p>0;)c+=\"rl\",f.push(\"0em 0em\"),p--;var d=f.join(\" \");if(i)return e.AmsMethods.EqnArray(t,r,a,i,c,d);var h=e.AmsMethods.EqnArray(t,r,a,i,c,d);return n.default.setArrayAlign(h,l)},e.AmsMethods.Multline=function(t,e,r){t.Push(e),n.default.checkEqnEnv(t);var a=t.itemFactory.create(\"multline\",r,t.stack);return a.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},a},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,r){var a=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",i=n.default.trimSpaces(t.GetArgument(r));\"\\\\\"===i.charAt(0)&&(i=i.substr(1));var o=t.GetArgument(r);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(i,new l.Macro(i,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+a]))},e.AmsMethods.HandleOperatorName=function(t,e){var r=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",a=n.default.trimSpaces(t.GetArgument(e));a.match(/\\\\text/)||(a=a.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+a+\"}\"+r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var r=t.GetNext(),n=t.i;\"\\\\\"===r&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=n)},e.AmsMethods.MultiIntegral=function(t,e,r){var n=t.GetNext();if(\"\\\\\"===n){var a=t.i;n=t.GetArgument(e),t.i=a,\"\\\\limits\"===n&&(r=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+r+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+r+\"}\")}t.string=r+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,r,i,s){var l={width:\"+\"+n.default.Em((i+s)/18),lspace:n.default.Em(i/18)},u=t.GetBrackets(e),f=t.ParseArg(e),p=t.create(\"token\",\"mo\",{stretchy:!0,texClass:c.TEXCLASS.REL},String.fromCodePoint(r)),d=t.create(\"node\",\"munderover\",[p]),h=t.create(\"node\",\"mpadded\",[f],l);if(a.default.setAttribute(h,\"voffset\",\".15em\"),a.default.setChild(d,d.over,h),u){var m=new o.default(u,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[m],l),a.default.setAttribute(h,\"voffset\",\"-.24em\"),a.default.setChild(d,d.under,h)}a.default.setProperty(d,\"subsupOK\",!0),t.Push(d)},e.AmsMethods.HandleShove=function(t,e,r){var n=t.stack.Top();if(\"multline\"!==n.kind)throw new s.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(n.Size())throw new s.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);n.setProperty(\"shove\",r)},e.AmsMethods.CFrac=function(t,e){var r=n.default.trimSpaces(t.GetBrackets(e,\"\")),l=t.GetArgument(e),u=t.GetArgument(e),c={l:i.TexConstant.Align.LEFT,r:i.TexConstant.Align.RIGHT,\"\":\"\"},f=new o.default(\"\\\\strut\\\\textstyle{\"+l+\"}\",t.stack.env,t.configuration).mml(),p=new o.default(\"\\\\strut\\\\textstyle{\"+u+\"}\",t.stack.env,t.configuration).mml(),d=t.create(\"node\",\"mfrac\",[f,p]);if(null==(r=c[r]))throw new s.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);r&&a.default.setProperties(d,{numalign:r,denomalign:r}),t.Push(d)},e.AmsMethods.Genfrac=function(t,e,r,i,o,l){null==r&&(r=t.GetDelimiterArg(e)),null==i&&(i=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==l&&(l=n.default.trimSpaces(t.GetArgument(e)));var u=t.ParseArg(e),c=t.ParseArg(e),f=t.create(\"node\",\"mfrac\",[u,c]);if(\"\"!==o&&a.default.setAttribute(f,\"linethickness\",o),(r||i)&&(a.default.setProperty(f,\"withDelims\",!0),f=n.default.fixedFence(t.configuration,r,f,i)),\"\"!==l){var p=parseInt(l,10),d=[\"D\",\"T\",\"S\",\"SS\"][p];if(null==d)throw new s.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);f=t.create(\"node\",\"mstyle\",[f]),\"D\"===d?a.default.setProperties(f,{displaystyle:!0,scriptlevel:0}):a.default.setProperties(f,{displaystyle:!1,scriptlevel:p-1})}t.Push(f)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new s.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new s.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var r=t.GetStar(),a=n.default.trimSpaces(t.GetArgument(e));t.tags.tag(a,r)},e.AmsMethods.HandleNoTag=u.default.HandleNoTag,e.AmsMethods.HandleRef=u.default.HandleRef,e.AmsMethods.Macro=u.default.Macro,e.AmsMethods.Accent=u.default.Accent,e.AmsMethods.Tilde=u.default.Tilde,e.AmsMethods.Array=u.default.Array,e.AmsMethods.Spacer=u.default.Spacer,e.AmsMethods.NamedOp=u.default.NamedOp,e.AmsMethods.EqnArray=u.default.EqnArray},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(0),a=r(2),i=r(15),o=r(3),s=r(19),l={NewCommand:function(t,e){var r=o.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),i=t.GetBrackets(e),u=t.GetArgument(e);if(\"\\\\\"===r.charAt(0)&&(r=r.substr(1)),!r.match(/^(.|[a-z]+)$/i))throw new n.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(a&&!(a=o.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addMacro(t,r,l.Macro,[u,a,i])},NewEnvironment:function(t,e){var r=o.default.trimSpaces(t.GetArgument(e)),a=t.GetBrackets(e),i=t.GetBrackets(e),u=t.GetArgument(e),c=t.GetArgument(e);if(a&&!(a=o.default.trimSpaces(a)).match(/^[0-9]+$/))throw new n.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);s.default.addEnvironment(t,r,l.BeginEnv,[!0,u,c,a,i])},MacroDef:function(t,e){var r=s.default.GetCSname(t,e),n=s.default.GetTemplate(t,e,\"\\\\\"+r),a=t.GetArgument(e);n instanceof Array?s.default.addMacro(t,r,l.MacroWithTemplate,[a].concat(n)):s.default.addMacro(t,r,l.Macro,[a,n])},Let:function(t,e){var r=s.default.GetCSname(t,e),n=t.GetNext();\"=\"===n&&(t.i++,n=t.GetNext());var i=t.configuration.handlers;if(\"\\\\\"!==n){t.i++;var o=i.get(\"delimiter\").lookup(n);o?s.default.addDelimiter(t,\"\\\\\"+r,o.char,o.attributes):s.default.addMacro(t,r,l.Macro,[n])}else{e=s.default.GetCSname(t,e);var u=i.get(\"delimiter\").lookup(\"\\\\\"+e);if(u)return void s.default.addDelimiter(t,\"\\\\\"+r,u.char,u.attributes);var c=i.get(\"macro\").applicable(e);if(!c)return;if(c instanceof a.MacroMap){var f=c.lookup(e);return void s.default.addMacro(t,r,f.func,f.args,f.symbol)}u=c.lookup(e);var p=s.default.disassembleSymbol(r,u);s.default.addMacro(t,r,(function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var a=s.default.assembleSymbol(r);return c.parser(t,a)}),p)}},MacroWithTemplate:function(t,e,r,a){for(var i=[],l=4;l<arguments.length;l++)i[l-4]=arguments[l];var u=parseInt(a,10);if(u){var c=[];if(t.GetNext(),i[0]&&!s.default.MatchParam(t,i[0]))throw new n.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var f=0;f<u;f++)c.push(s.default.GetParameter(t,e,i[f+1]));r=o.default.substituteArgs(t,c,r)}if(t.string=o.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new n.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,r,n,a,i){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var s=t.string.slice(t.i);return t.string=n,t.i=0,t.Parse(),t.string=s,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(a){var l=[];if(null!=i){var u=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");l.push(null==u?i:u)}for(var c=l.length;c<a;c++)l.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));r=o.default.substituteArgs(t,l,r),n=o.default.substituteArgs(t,[],n)}return t.string=o.default.addArgs(t,r,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};l.Macro=i.default.Macro,e.default=l},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,a=r(3),i=r(0),o=r(10);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var r=[t,e.char];if(e.attributes)for(var n in e.attributes)r.push(n),r.push(e.attributes[n]);return r},t.assembleSymbol=function(t){for(var e=t[0],r=t[1],n={},a=2;a<t.length;a+=2)n[t[a]]=t[a+1];return new o.Symbol(e,r,n)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new i.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return a.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,r){for(var n=t.GetNext(),a=[],o=0,s=t.i;t.i<t.string.length;){if(\"#\"===(n=t.GetNext())){if(s!==t.i&&(a[o]=t.string.substr(s,t.i-s)),!(n=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new i.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",r);if(parseInt(n)!==++o)throw new i.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",r);s=t.i+1}else if(\"{\"===n)return s!==t.i&&(a[o]=t.string.substr(s,t.i-s)),a.length>0?[o.toString()].concat(a):o;t.i++}throw new i.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,r,n){if(null==n)return t.GetArgument(r);for(var a=t.i,o=0,s=0;t.i<t.string.length;){var l=t.string.charAt(t.i);if(\"{\"===l)t.i===a&&(s=1),t.GetArgument(r),o=t.i-a;else{if(e(t,n))return s&&(a++,o-=2),t.string.substr(a,o);if(\"\\\\\"===l){t.i++,o++,s=0;var u=t.string.substr(t.i).match(/[a-z]+|./i);u&&(t.i+=u[0].length,o=t.i-a)}else t.i++,o++,s=0}}throw new i.default(\"RunawayArgument\",\"Runaway argument for %1?\",r)},t.MatchParam=e,t.addDelimiter=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(r,new o.Symbol(r,n,a))},t.addMacro=function(e,r,n,a,i){void 0===i&&(i=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(r,new o.Macro(i||r,n,a))},t.addEnvironment=function(e,r,n,a){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(r,new o.Macro(r,n,a))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(n||(n={})),e.default=n},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var s=r(42),l=r(6),u=r(22),c=r(23),f=r(1),p=r(8),d=r(0),h=r(25),m=r(9),g=r(4);r(28);var y=function(t){function e(r){void 0===r&&(r={});var n=this,a=o(l.separateOptions(r,e.OPTIONS,u.FindTeX.OPTIONS),3),i=a[0],s=a[1],f=a[2];(n=t.call(this,s)||this).findTeX=n.options.FindTeX||new u.FindTeX(f);var p=n.options.packages,d=n.configuration=e.configure(p),g=n._parseOptions=new h.default(d,[n.options,m.TagsFactory.OPTIONS]);return l.userOptions(g.options,i),d.config(n),e.tags(g,d),n.postFilters.add(c.default.cleanSubSup,-6),n.postFilters.add(c.default.setInherited,-5),n.postFilters.add(c.default.moveLimits,-4),n.postFilters.add(c.default.cleanStretchy,-3),n.postFilters.add(c.default.cleanAttributes,-2),n.postFilters.add(c.default.combineRelations,-1),n}return a(e,t),e.configure=function(t){var e=new g.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){m.TagsFactory.addTags(e.tags),m.TagsFactory.setDefault(t.options.tags),t.tags=m.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var r,n=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{r=new p.default(this.latex,{display:n,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof d.default))throw t;this.parseOptions.error=!0,r=this.options.formatError(this,t)}return r=this.parseOptions.nodeFactory.create(\"node\",\"math\",[r]),n&&f.default.setAttribute(r,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=r,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=i(i({},s.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(s.AbstractInputJax);e.TeX=y},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var o=r(43),s=r(44),l=r(45),u=function(t){function e(e){var r=t.call(this,e)||this;return r.getPatterns(),r}return a(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,r=[],n=[],a=[];this.end={},this.env=this.sub=0;var i=1;e.inlineMath.forEach((function(e){return t.addPattern(r,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(r,e,!0)})),r.length&&n.push(r.sort(s.sortLength).join(\"|\")),e.processEnvironments&&(n.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=i,i++),e.processEscapes&&a.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&a.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),a.length&&(n.push(\"(\"+a.join(\"|\")+\")\"),this.sub=i),this.start=new RegExp(n.join(\"|\"),\"g\"),this.hasPatterns=n.length>0},e.prototype.addPattern=function(t,e,r){var n=i(e,2),a=n[0],o=n[1];t.push(s.quotePattern(a)),this.end[a]=[o,r,this.endPattern(o)]},e.prototype.endPattern=function(t,e){return new RegExp((e||s.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,r,n){for(var a,o=i(n,3),s=o[0],u=o[1],c=o[2],f=c.lastIndex=r.index+r[0].length,p=0;a=c.exec(t);){if((a[1]||a[0])===s&&0===p)return l.protoItem(r[0],t.substr(f,a.index-f),a[0],e,r.index,a.index+a[0].length,u);\"{\"===a[0]?p++:\"}\"===a[0]&&p&&p--}return null},e.prototype.findMathInString=function(t,e,r){var n,a;for(this.start.lastIndex=0;n=this.start.exec(r);){if(void 0!==n[this.env]&&this.env){var i=\"\\\\\\\\end\\\\s*(\\\\{\"+s.quotePattern(n[this.env])+\"\\\\})\";(a=this.findEnd(r,e,n,[\"{\"+n[this.env]+\"}\",!0,this.endPattern(null,i)]))&&(a.math=a.open+a.math+a.close,a.open=a.close=\"\")}else if(void 0!==n[this.sub]&&this.sub){var o=n[this.sub];i=n.index+n[this.sub].length;a=2===o.length?l.protoItem(\"\",o.substr(1),\"\",e,n.index,i):l.protoItem(\"\",o,\"\",e,n.index,i,!1)}else a=this.findEnd(r,e,n,this.end[n[0]]);a&&(t.push(a),this.start.lastIndex=a.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var r=0,n=t.length;r<n;r++)this.findMathInString(e,r,t[r]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(o.AbstractFindMath);e.FindTeX=u},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var a,i=r(5),o=r(1);!function(t){t.cleanStretchy=function(t){var e,r,a=t.data;try{for(var i=n(a.getList(\"fixStretchy\")),s=i.next();!s.done;s=i.next()){var l=s.value;if(o.default.getProperty(l,\"fixStretchy\")){var u=o.default.getForm(l);u&&u[3]&&u[3].stretchy&&o.default.setAttribute(l,\"stretchy\",!1);var c=l.parent;if(!(o.default.getTexClass(l)||u&&u[2])){var f=a.nodeFactory.create(\"node\",\"TeXAtom\",[l]);c.replaceChild(f,l),f.inheritAttributesFrom(l)}o.default.removeProperties(l,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var r,a,i=t.attributes;if(i)try{for(var o=n(i.getExplicitNames()),s=o.next();!s.done;s=o.next()){var l=s.value;i.attributes[l]===t.attributes.getInherited(l)&&delete i.attributes[l]}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}}),{})},t.combineRelations=function(t){var a,s;try{for(var l=n(t.data.getList(\"mo\")),u=l.next();!u.done;u=l.next()){var c=u.value;if(!c.getProperty(\"relationsCombined\")&&c.parent&&(!c.parent||o.default.isType(c.parent,\"mrow\"))&&o.default.getTexClass(c)===i.TEXCLASS.REL){for(var f=c.parent,p=void 0,d=f.childNodes,h=d.indexOf(c)+1,m=o.default.getProperty(c,\"variantForm\");h<d.length&&(p=d[h])&&o.default.isType(p,\"mo\")&&o.default.getTexClass(p)===i.TEXCLASS.REL;){if(m!==o.default.getProperty(p,\"variantForm\")||!r(c,p)){null==c.attributes.getExplicit(\"rspace\")&&o.default.setAttribute(c,\"rspace\",\"0pt\"),null==p.attributes.getExplicit(\"lspace\")&&o.default.setAttribute(p,\"lspace\",\"0pt\");break}o.default.appendChildren(c,o.default.getChildren(p)),e([\"stretchy\",\"rspace\"],c,p),o.default.setProperties(c,p.getAllProperties()),d.splice(h,1),p.parent=null,p.setProperty(\"relationsCombined\",!0)}c.attributes.setInherited(\"form\",c.getForms()[0])}}}catch(t){a={error:t}}finally{try{u&&!u.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}};var e=function(t,e,r){var n=e.attributes,a=r.attributes;t.forEach((function(t){var e=a.getExplicit(t);null!=e&&n.set(t,e)}))},r=function(t,e){var r,a,i=function(t,e){return t.getExplicitNames().filter((function(r){return r!==e&&(\"stretchy\"!==r||t.getExplicit(\"stretchy\"))}))},o=t.attributes,s=e.attributes,l=i(o,\"lspace\"),u=i(s,\"rspace\");if(l.length!==u.length)return!1;try{for(var c=n(l),f=c.next();!f.done;f=c.next()){var p=f.value;if(o.getExplicit(p)!==s.getExplicit(p))return!1}}catch(t){r={error:t}}finally{try{f&&!f.done&&(a=c.return)&&a.call(c)}finally{if(r)throw r.error}}return!0},a=function(t,e,r){var a,i;try{for(var s=n(t.getList(\"m\"+e+r)),l=s.next();!l.done;l=s.next()){var u=l.value,c=u.childNodes;if(!c[u[e]]||!c[u[r]]){var f=u.parent,p=c[u[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[c[u.base],c[u[e]]]):t.nodeFactory.create(\"node\",\"m\"+r,[c[u.base],c[u[r]]]);o.default.copyAttributes(u,p),f?f.replaceChild(p,u):t.root=p}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(a(e,\"sub\",\"sup\"),a(e,\"under\",\"over\"))};var s=function(t,e,r){var a,i;try{for(var s=n(t.getList(e)),l=s.next();!l.done;l=s.next()){var u=l.value;if(!u.attributes.get(\"displaystyle\")){var c=u.childNodes[u.base],f=c.coreMO();if(c.getProperty(\"movablelimits\")&&!f.attributes.getExplicit(\"movablelimits\")){var p=t.nodeFactory.create(\"node\",r,u.childNodes);o.default.copyAttributes(u,p),u.parent?u.parent.replaceChild(p,u):t.root=p}}}}catch(t){a={error:t}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(a)throw a.error}}};t.moveLimits=function(t){var e=t.data;s(e,\"munderover\",\"msubsup\"),s(e,\"munder\",\"msub\"),s(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(a||(a={})),e.default=a},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(1),s=function(){function t(t,e,r){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:r},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,r=[],s=0;s<arguments.length;s++)r[s]=arguments[s];try{for(var l=n(r),u=l.next();!u.done;u=l.next()){var c=u.value;if(c){var f=o.default.isNode(c)?this._factory.create(\"mml\",c):c;f.global=this.global;var p=a(this.stack.length?this.Top().checkItem(f):[null,!0],2),d=p[0],h=p[1];h&&(d?(this.Pop(),this.Push.apply(this,i(d))):(this.stack.push(f),f.env?(f.copyEnv&&Object.assign(f.env,this.env),this.env=f.env):f.env=this.env))}}}catch(e){t={error:e}}finally{try{u&&!u.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=s},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(26),s=r(27),l=r(6),u=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new s.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new o.default(t.items),this.itemFactory.configuration=this,l.defaultOptions.apply(void 0,a([this.options],e)),l.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var r=this.nodeLists[t];r||(r=this.nodeLists[t]=[]),r.push(e)},t.prototype.getList=function(t){var e,r,n=this.nodeLists[t]||[],a=[];try{for(var o=i(n),s=o.next();!s.done;s=o.next()){var l=s.value;this.inTree(l)&&a.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}return this.nodeLists[t]=a,a},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=u},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0});var o=r(13),s=r(47),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(o.BaseItem),u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return i(e,t),e.DefaultStackItems=((a={})[l.prototype.kind]=l,a),e}(s.AbstractFactory);e.default=u},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var i=r(1),o=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,r,n,a){void 0===r&&(r=[]),void 0===n&&(n={});var o=t.mmlFactory.create(e),s=o.arity;if(s===1/0||-1===s)1===r.length&&r[0].isInferred?o.setChildren(i.default.getChildren(r[0])):o.setChildren(r);else{for(var l=[],u=0,c=void 0;c=r[u];u++)if(c.isInferred){var f=t.mmlFactory.create(\"mrow\",{},i.default.getChildren(c));i.default.copyAttributes(c,f),l.push(f)}else l.push(c);o.setChildren(l)}return a&&o.appendChild(a),i.default.setProperties(o,n),o},t.createToken=function(t,e,r,n){void 0===r&&(r={}),void 0===n&&(n=\"\");var a=t.create(\"text\",n);return t.create(\"node\",e,[],r,a)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var r=t.create(\"text\",e),n=t.create(\"node\",\"mtext\",[],{},r);return t.create(\"node\",\"merror\",[n],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=this.factory[t]||this.factory.node,i=n.apply(void 0,a([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],i),i},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=o},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var o=r(4),s=r(12),l=r(0),u=r(1),c=r(2),f=r(14),p=r(9);function d(t,e){var r=t.stack.env.font?{mathvariant:t.stack.env.font}:{},n=s.MapHandler.getMap(\"remap\").lookup(e),a=t.create(\"token\",\"mo\",r,n?n.char:e);u.default.setProperty(a,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",a),t.Push(a)}r(48),new c.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=d;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p.AbstractTags);e.BaseTags=h,e.BaseConfiguration=o.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:d,macro:function(t,e){throw new l.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new l.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(a={},a[f.StartItem.prototype.kind]=f.StartItem,a[f.StopItem.prototype.kind]=f.StopItem,a[f.OpenItem.prototype.kind]=f.OpenItem,a[f.CloseItem.prototype.kind]=f.CloseItem,a[f.PrimeItem.prototype.kind]=f.PrimeItem,a[f.SubsupItem.prototype.kind]=f.SubsupItem,a[f.OverItem.prototype.kind]=f.OverItem,a[f.LeftItem.prototype.kind]=f.LeftItem,a[f.RightItem.prototype.kind]=f.RightItem,a[f.BeginItem.prototype.kind]=f.BeginItem,a[f.EndItem.prototype.kind]=f.EndItem,a[f.StyleItem.prototype.kind]=f.StyleItem,a[f.PositionItem.prototype.kind]=f.PositionItem,a[f.CellItem.prototype.kind]=f.CellItem,a[f.MmlItem.prototype.kind]=f.MmlItem,a[f.FnItem.prototype.kind]=f.FnItem,a[f.NotItem.prototype.kind]=f.NotItem,a[f.DotsItem.prototype.kind]=f.DotsItem,a[f.ArrayItem.prototype.kind]=f.ArrayItem,a[f.EqnArrayItem.prototype.kind]=f.EqnArrayItem,a[f.EquationItem.prototype.kind]=f.EquationItem,a),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var i=r(14),o=r(3),s=r(1),l=r(0),u=r(7),c=function(t){function e(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];var a=t.call(this,e)||this;return a.factory.configuration.tags.start(\"multline\",!0,r[0]),a}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new l.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,r=-1;s.default.getAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[0])[0],\"columnalign\",u.TexConstant.Align.LEFT),s.default.getAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\")||s.default.setAttribute(s.default.getChildren(this.table[e])[0],\"columnalign\",u.TexConstant.Align.RIGHT);var n=this.factory.configuration.tags.getTag();if(n){r=this.arraydef.side===u.TexConstant.Align.LEFT?0:this.table.length-1;var a=this.table[r],i=this.create(\"node\",\"mlabeledtr\",[n].concat(s.default.getChildren(a)));s.default.copyAttributes(a,i),this.table[r]=i}}this.factory.configuration.tags.end()},e}(i.ArrayItem);e.MultlineItem=c},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},a=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(a(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var o=r(4),s=r(2),l=r(0),u=r(21),c=r(36),f=r(31),p=r(52),d=r(6),h=u.MathJax.config;function m(t,e){var r,a=t.parseOptions.options.require,i=t.parseOptions.packageData.get(\"require\").required,s=e.substr(a.prefix.length);if(i.indexOf(s)<0){i.push(s),function(t,e){var r,a;void 0===e&&(e=[]);var i=t.parseOptions.options.require.prefix;try{for(var o=n(e),s=o.next();!s.done;s=o.next()){var l=s.value;l.substr(0,i.length)===i&&m(t,l)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(r)throw r.error}}}(t,f.CONFIG.dependencies[e]);var l=o.ConfigurationHandler.get(s);if(l){var u=h[e]||{};l.options&&1===Object.keys(l.options).length&&l.options[s]&&((r={})[s]=u,u=r),t.configuration.add(l,t,u);var c=t.parseOptions.packageData.get(\"require\").configured;l.preprocessors.length&&!c.has(s)&&(c.set(s,!0),p.mathjax.retryAfter(Promise.resolve()))}}}function g(t,e){var r=t.options.require,n=r.allow,a=(\"[\"===e.substr(0,1)?\"\":r.prefix)+e;if(!(n.hasOwnProperty(a)?n[a]:n.hasOwnProperty(e)?n[e]:r.defaultAllow))throw new l.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',a);c.Package.packages.has(a)?m(t.configuration.packageData.get(\"require\").jax,a):p.mathjax.retryAfter(f.Loader.load(a))}e.RequireLoad=g,e.RequireMethods={Require:function(t,e){var r=t.GetArgument(e);if(r.match(/[^_a-zA-Z0-9]/)||\"\"===r)throw new l.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);g(t,r)}},e.options={require:{allow:d.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new s.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=o.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:i(e.options.packages),configured:new Map});var r=e.parseOptions.options.require,n=r.prefix;if(n.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");f.CONFIG.paths[n]||(f.CONFIG.paths[n]=\"[mathjax]/input/tex/extensions\"),r.prefix=\"[\"+n+\"]/\"},options:e.options})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Loader=MathJax._.components.loader.Loader,e.MathJax=MathJax._.components.loader.MathJax,e.CONFIG=MathJax._.components.loader.CONFIG},function(t,e,r){\"use strict\";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var i=r(0),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new i.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new i.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(r(13).BaseItem);e.BeginEnvItem=o},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=MathJax._.util.PrioritizedList.PrioritizedList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=MathJax._.util.FunctionList.FunctionList},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PackageError=MathJax._.components.package.PackageError,e.Package=MathJax._.components.package.Package},function(t,e,r){\"use strict\";var n,a,i=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=r(4),s=r(29),l=r(9),u=r(17);r(51);var c=r(2),f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(l.AbstractTags);e.AmsTags=f;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(a={},a[s.MultlineItem.prototype.kind]=s.MultlineItem,a),tags:{ams:f},init:function(t){new c.CommandMap(u.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[u.NEW_OPS]},priority:-1}))}})},function(t,e,r){\"use strict\";var n=this&&this.__read||function(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,a,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){a={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var i=r(4),o=r(2),s=r(10),l=r(30),u=r(36),c=r(6);function f(t,e,r,i){var o,s,c,f;if(u.Package.packages.has(t.options.require.prefix+r)){var h=t.options.autoload[r],m=n(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),g=m[0],y=m[1];try{for(var v=a(g),b=v.next();!b.done;b=v.next()){var A=b.value;p.remove(A)}}catch(t){o={error:t}}finally{try{b&&!b.done&&(s=v.return)&&s.call(v)}finally{if(o)throw o.error}}try{for(var M=a(y),x=M.next();!x.done;x=M.next()){var T=x.value;d.remove(T)}}catch(t){c={error:t}}finally{try{x&&!x.done&&(f=M.return)&&f.call(M)}finally{if(c)throw c.error}}t.string=(i?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}l.RequireLoad(t,r)}var p=new o.CommandMap(\"autoload-macros\",{},{}),d=new o.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=i.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:c.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var r,i,o,u,c,h,m=e.parseOptions,g=m.handlers.get(\"macro\"),y=m.handlers.get(\"environment\"),v=m.options.autoload;m.packageData.set(\"autoload\",{Autoload:f});try{for(var b=a(Object.keys(v)),A=b.next();!A.done;A=b.next()){var M=A.value,x=v[M],T=n(2===x.length&&Array.isArray(x[0])?x:[x,[]],2),w=T[0],S=T[1];try{for(var P=(o=void 0,a(w)),C=P.next();!C.done;C=P.next()){var O=C.value;g.lookup(O)&&\"color\"!==O||p.add(O,new s.Macro(O,f,[M,!0]))}}catch(t){o={error:t}}finally{try{C&&!C.done&&(u=P.return)&&u.call(P)}finally{if(o)throw o.error}}try{for(var E=(c=void 0,a(S)),k=E.next();!k.done;k=E.next()){var _=k.value;y.lookup(_)||d.add(_,new s.Macro(_,f,[M,!1]))}}catch(t){c={error:t}}finally{try{k&&!k.done&&(h=E.return)&&h.call(E)}finally{if(c)throw c.error}}}}catch(t){r={error:t}}finally{try{A&&!A.done&&(i=b.return)&&i.call(b)}finally{if(r)throw r.error}}m.packageData.get(\"require\")||l.RequireConfiguration.config(t,e)},init:function(t){t.options.require||c.defaultOptions(t.options,l.RequireConfiguration.options)},priority:10})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var a=r(4),i=r(6),o=r(2),s=r(10),l=r(18);e.ConfigMacrosConfiguration=a.Configuration.create(\"configmacros\",{init:function(t){new o.CommandMap(\"configmacros-map\",{},{}),t.append(a.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var r,a,i=e.parseOptions.handlers.retrieve(\"configmacros-map\"),o=e.parseOptions.options.macros;try{for(var u=n(Object.keys(o)),c=u.next();!c.done;c=u.next()){var f=c.value,p=\"string\"==typeof o[f]?[o[f]]:o[f],d=Array.isArray(p[2])?new s.Macro(f,l.default.MacroWithTemplate,p.slice(0,2).concat(p[2])):new s.Macro(f,l.default.Macro,p);i.add(f,d)}}catch(t){r={error:t}}finally{try{c&&!c.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}},options:{macros:i.expandable({})}})},function(t,e,r){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var a=r(4),i=r(32),o=r(19);r(53);var s=r(16),l=r(2);e.NewcommandConfiguration=a.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(n={},n[i.BeginEnvItem.prototype.kind]=i.BeginEnvItem,n),options:{maxMacros:1e3},init:function(t){new l.DelimiterMap(o.default.NEW_DELIMITER,s.default.delimiter,{}),new l.CommandMap(o.default.NEW_COMMAND,{},{}),new l.EnvironmentMap(o.default.NEW_ENVIRONMENT,s.default.environment,{},{}),t.append(a.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,r){\"use strict\";var n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var a=r(4);e.NoUndefinedConfiguration=a.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var r,a,i=t.create(\"text\",\"\\\\\"+e),o=t.options.noundefined||{},s={};try{for(var l=n([\"color\",\"background\",\"size\"]),u=l.next();!u.done;u=l.next()){var c=u.value;o[c]&&(s[\"math\"+c]=o[c])}}catch(t){r={error:t}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(r)throw r.error}}t.Push(t.create(\"node\",\"mtext\",[],s,i))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=MathJax._.core.InputJax.AbstractInputJax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=MathJax._.core.FindMath.AbstractFindMath},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortLength=MathJax._.util.string.sortLength,e.quotePattern=MathJax._.util.string.quotePattern,e.unicodeChars=MathJax._.util.string.unicodeChars,e.isPercent=MathJax._.util.string.isPercent,e.split=MathJax._.util.string.split},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.protoItem=MathJax._.core.MathItem.protoItem,e.AbstractMathItem=MathJax._.core.MathItem.AbstractMathItem,e.STATE=MathJax._.core.MathItem.STATE,e.newState=MathJax._.core.MathItem.newState},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=MathJax._.core.MmlTree.MmlNodes.mo.MmlMo},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=MathJax._.core.Tree.Factory.AbstractFactory},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(2),a=r(7),i=r(15),o=r(16),s=r(5);new n.RegExpMap(\"letter\",o.default.variable,/[a-z]/i),new n.RegExpMap(\"digit\",o.default.digit,/[0-9.,]/),new n.RegExpMap(\"command\",o.default.controlSequence,/^\\\\/),new n.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},i.default),new n.CharacterMap(\"mathchar0mi\",o.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:a.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:a.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:a.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:a.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:a.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:a.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:a.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:a.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:a.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:a.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:a.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:a.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:a.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:a.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:a.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:a.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:a.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:a.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:a.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:a.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:a.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:a.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:a.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:a.TexConstant.Variant.NORMAL}]}),new n.CharacterMap(\"mathchar0mo\",o.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:s.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:s.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:s.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:s.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:s.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:s.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:s.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:s.TEXCLASS.PUNCT}],colon:[\":\",{texClass:s.TEXCLASS.PUNCT}]}),new n.CharacterMap(\"mathchar7\",o.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new n.DelimiterMap(\"delimiter\",o.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:s.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:s.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:s.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new n.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",a.TexConstant.Variant.NORMAL],mit:[\"SetFont\",a.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",a.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",a.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",a.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",a.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",a.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",a.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",a.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",a.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",a.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",a.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",a.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",a.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",s.TEXCLASS.ORD,.85],Big:[\"MakeBig\",s.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",s.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",s.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",s.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",s.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",s.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",s.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",s.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",s.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",s.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",s.TEXCLASS.ORD],mathop:[\"TeXAtom\",s.TEXCLASS.OP],mathopen:[\"TeXAtom\",s.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",s.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",s.TEXCLASS.BIN],mathrel:[\"TeXAtom\",s.TEXCLASS.REL],mathpunct:[\"TeXAtom\",s.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",s.TEXCLASS.INNER],vcenter:[\"TeXAtom\",s.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",a.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,a.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,a.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,a.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,a.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,a.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},i.default),new n.EnvironmentMap(\"environment\",o.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+a.TexConstant.Length.THICKMATHSPACE,\".5em\"]},i.default),new n.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r(11).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(17),a=r(2),i=r(7),o=r(16),s=r(3),l=r(5),u=function(t){for(var e=[],r=0,n=t.length;r<n;r++)e[r]=s.default.Em(t[r]);return e.join(\" \")};new a.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:l.TEXCLASS.OP}]}),new a.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",i.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",i.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",i.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",i.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},n.AmsMethods),new a.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+i.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",u([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",u([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,u([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",u([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},n.AmsMethods),new a.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:l.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:l.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:l.TEXCLASS.CLOSE}]}),new a.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:i.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:i.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:i.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:i.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:i.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:i.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:i.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:i.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:i.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:i.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:i.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:i.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new a.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new a.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new a.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},n.AmsMethods)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=MathJax._.mathjax.mathjax},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(18);new(r(2).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},n.default)},function(t,e,r){\"use strict\";r.r(e);var n=r(21),a=r(20),i=r(4),o=r(23),s=r(22),l=r(12),u=r(27),c=r(1),f=r(16),p=r(25),d=r(3),h=r(24),m=r(13),g=r(26),y=r(10),v=r(2),b=r(9),A=r(7),M=r(0),x=r(8),T=r(37),w=r(29),S=r(17),P=r(38),C=r(28),O=r(14),E=r(15),k=r(39),_=r(40),I=r(32),N=r(18),L=r(19),F=r(41),q=r(30);Object(n.combineWithMathJax)({_:{input:{tex_ts:a,tex:{Configuration:i,FilterUtil:o,FindTeX:s,MapHandler:l,NodeFactory:u,NodeUtil:c,ParseMethods:f,ParseOptions:p,ParseUtil:d,Stack:h,StackItem:m,StackItemFactory:g,Symbol:y,SymbolMap:v,Tags:b,TexConstants:A,TexError:M,TexParser:x,ams:{AmsConfiguration:T,AmsItems:w,AmsMethods:S},autoload:{AutoloadConfiguration:P},base:{BaseConfiguration:C,BaseItems:O,BaseMethods:E},configmacros:{ConfigMacrosConfiguration:k},newcommand:{NewcommandConfiguration:_,NewcommandItems:I,NewcommandMethods:N,NewcommandUtil:L},noundefined:{NoUndefinedConfiguration:F},require:{RequireConfiguration:q}}}}});var R=r(6);r(31).Loader.preLoad(\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\",\"[tex]/noundefined\",\"[tex]/require\",\"[tex]/autoload\",\"[tex]/configmacros\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",a.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(R.insert)(MathJax.config.tex,{packages:e})}}([\"base\",\"ams\",\"newcommand\",\"noundefined\",\"require\",\"autoload\",\"configmacros\"])}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/de.js",
    "content": "{\n\"de/functions/algebra.js\": \n[{\"locale\":\"de\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"key\":\"det\",\"mappings\":{\"default\":{\"default\":\"Determinante\"}},\"category\":\"Algebra\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Homomorphismus\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Kern\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Spur\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"de/functions/elementary.js\": \n[{\"locale\":\"de\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"natürlicher Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"Logarithmus zur Basis 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"Exponent\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"größter gemeinsamer Teiler\"},\"mathspeak\":{\"default\":\"ggt\"},\"clearspeak\":{\"default\":\"ggt\"}},\"key\":\"gcd\",\"names\":[\"gcd\",\"ggt\",\"ggT\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"kleinstes gemeinsames Vielfaches\"},\"mathspeak\":{\"default\":\"kgv\"},\"clearspeak\":{\"default\":\"kgv\"}},\"key\":\"lcm\",\"names\":[\"lcm\",\"kgv\",\"kgV\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"Argument\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"key\":\"im\",\"mappings\":{\"default\":{\"default\":\"der Imaginärteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"im\"]},{\"key\":\"re\",\"mappings\":{\"default\":{\"default\":\"der Realteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"re\"]},{\"key\":\"mod\",\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\",\"names\":[\"mod\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Infimum\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes inferior\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes superior\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Maximum\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Minimum\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Supremum\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Colimes\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projektiver Limes\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"Wahrscheinlichkeit\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"de/functions/hyperbolic.js\": \n[{\"locale\":\"de\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"Kosinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"Kotangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"Kosekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"Sekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"Sinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"Tangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"key\":\"arcosh\",\"mappings\":{\"default\":{\"default\":\"Areakosinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcosh\",\"arccosh\"]},{\"key\":\"arcoth\",\"mappings\":{\"default\":{\"default\":\"Areakotangens hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcoth\",\"arccoth\"]},{\"key\":\"arcsch\",\"mappings\":{\"default\":{\"default\":\"Areakosekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcsch\",\"arccsch\"]},{\"key\":\"arsech\",\"mappings\":{\"default\":{\"default\":\"Areasekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsech\",\"arcsech\"]},{\"key\":\"arsinh\",\"mappings\":{\"default\":{\"default\":\"Areasinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"key\":\"artanh\",\"mappings\":{\"default\":{\"default\":\"Areatangens hyperbolicus \"}},\"category\":\"Area\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"de/functions/trigonometry.js\": \n[{\"locale\":\"de\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"Kosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"Kotangens\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"Kosekans\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"Sekans\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"Sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"Tangens\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"key\":\"arccos\",\"mappings\":{\"default\":{\"default\":\"Arkuskosinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arccos\"]},{\"key\":\"arccot\",\"mappings\":{\"default\":{\"default\":\"Arkuskotangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kotangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arccot\"]},{\"key\":\"arccsc\",\"mappings\":{\"default\":{\"default\":\"Arkuskosekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arccsc\"]},{\"key\":\"arcsec\",\"mappings\":{\"default\":{\"default\":\"Arkussekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsec\"]},{\"key\":\"arcsin\",\"mappings\":{\"default\":{\"default\":\"Arkussinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsin\"]},{\"key\":\"arctan\",\"mappings\":{\"default\":{\"default\":\"Arkustangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Tangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arctan\"]}]\n,\n\"de/symbols/digits_rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"Quadrat\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 2\",\"Exponent_OrdinalPower\":\"zur zweiten Potenz\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"Kubik\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 3\",\"Exponent_OrdinalPower\":\"zur dritten Potenz\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"ein Viertel\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"ein Halb\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"drei Viertel\"}},\"category\":\"No\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"ein siebtel\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"ein neuntel\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"ein zehntel\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"ein drittel\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"zwei drittel\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"ein fünftel\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"zwei fünftel\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"drei fünftel\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"vier fünftel\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"ein sechstel\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"fünf sechstel\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"ein achtel\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"drei achtel\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"fünf achtel\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sieben achtel\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Bruchzähler eins\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"null drittel\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zehn auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zwanzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Dreißig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Vierzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Fünfzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Sechzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Siebzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Achtzig auf schwarzem Quadrat\"}}}]\n,\n\"de/symbols/greek-rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"Dreieck\",\"TriangleSymbol_Delta\":\"großes Delta\"}},\"category\":\"Lu\"}]\n,\n\"de/symbols/greek-scripts.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes chi\"}}}]\n,\n\"de/symbols/greek-symbols.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"beta\"}}},{\"category\":\"Ll\",\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"kai\"}}},{\"category\":\"Sm\",\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes epsilon\"}}},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"fettes großes Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"fettes digamma\"}}}]\n,\n\"de/symbols/hebrew_letters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lo\",\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"Alef-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"Bet-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"Gimel-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"Dalet-Symbol\"}}}]\n,\n\"de/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Grab\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a mit Dot Above und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a mit Ring oben und akut\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Makron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c mit Cedilla und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla und Breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s mit Akute und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s mit Caron und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt unten und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Dot Below\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o mit Strich und Akut\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich und Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"liegendes O mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"lang mit diagonalem Anschlag\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"lang S mit hohem Hub\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"wurde Delta gedreht\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"lang mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"lang S\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b mit Oberleiste\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"ton sechs\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d mit Oberleiste\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f mit Haken\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k mit Haken\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n mit langem rechtem Bein\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"ton zwei\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"umgedrehte esh Schleife\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t mit palatal Haken\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes ezh\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"ton fünf\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"gedreht E\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q mit Hakenschwanz\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"gedreht A\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"gedrehtes Alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open O\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"umgedreht E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa mit Haken\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"offenes e\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes offenes e mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes geschlossenes epsilon\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"mini gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l mit Gurt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"gedreht M\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"gedrehtes M mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n mit linkem Haken\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o mit balken\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"geschlossenes omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein und Haken\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r mit Endstück\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes R mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat umgekehrt\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"gedreht T\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u Bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"gedrehtes v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"gedrehtes w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"pharyngales stimmhaft Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertierter Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"gestrecktes C\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"bilabialer Klick\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"geschlossenes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"bilabiales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"bidentales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"gedrehtes ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"gedrehtes e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"gedrehtes i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"liegendes O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"liegendes geöffnet O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"gedreht Oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"obere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"untere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"liegendes U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"liegendes u Umlaut\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"liegendes m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"stimmhaft laryngaler Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"Ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken und mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"gedreht G\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular G\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th mit Durchgestrichen\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d mit Haken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"offenes o mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh mit Retroflexhaken\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n mit Apostroph davor\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"de/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y mit Diärese\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a mit Ogonek\"}}},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e mit Breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e mit Caron\"}}},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g mit Zirkumflex\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g mit Breve\"}}},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g mit Cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i mit Ogonek\"}}},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i ohne punkt\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l mit Caron\"}}},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt in der Mitte\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o mit Breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r mit Caron\"}}},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s mit Caron\"}}},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t mit Caron\"}}},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u mit Breve\"}}},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u mit Ogonek\"}}},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j mit Caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g mit Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless J\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a mit Ring unten\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h mit Breve unten\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehender Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z mit Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a mit rechtem Halbring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y mit Tilde\"}}}]\n,\n\"de/symbols/latin-rest.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"kombinierendes a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"kombinierendes e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"kombinierendes i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"kombinierendes o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"kombinierendes u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"kombinierendes d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"kombinierendes h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"kombinierendes m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"kombinierendes t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"kombinierendes v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"kombinierendes x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes oberes w\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c mit Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"kombinierendes insulares d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"kombinierendes eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"kombinierendes g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen g\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"kombinierendes k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"kombinierendes l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"kombinierendes n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"kombinierendes lateinisches Kapitälchen R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes langes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"groß S in stumpfen Klammern\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"durchgestrichenes P auf schwarzen Quadrat\"}}}]\n,\n\"de/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Grab\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Dot Above und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring oben und akut\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Makron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedilla und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla und Breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"groß L mit Dot Below und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt unten und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"groß S mit Akute und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt und oben stehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Circumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Hook oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Dot Below\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Circumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"groß A mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"groß A mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"groß E mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"groß E mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"groß E mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"groß I mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"groß I mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"groß I mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"großes n mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"großes o mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"groß O mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"groß A mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ogonek\"}}},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"groß C mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"groß C mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"groß C mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"groß C mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"groß E mit Breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"groß E mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"groß E mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"groß E mit Caron\"}}},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"groß G mit Zirkumflex\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"groß G mit Breve\"}}},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"groß G mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"groß G mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"groß H mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"groß I mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"groß I mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"groß I mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Ogonek\"}}},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"groß I mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"groß J mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"groß K mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"groß L mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"groß L mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"groß L mit Caron\"}}},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt in der Mitte\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"groß N mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"groß N mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"groß N mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"groß O mit doppeltem Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"groß R mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"groß R mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"groß R mit Caron\"}}},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"groß S mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"groß S mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"groß S mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron\"}}},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"groß T mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"groß T mit Caron\"}}},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"groß U mit Breve\"}}},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"groß U mit dopppeltem Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ogonek\"}}},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"groß W mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"groß A mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"groß O mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"groß U mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"groß G mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"groß K mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"groß G mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"groß N mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"groß A mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"groß A mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"groß E mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"groß E mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"groß I mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"groß I mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"groß O mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"groß R mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"groß R mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"groß U mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"groß U mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"groß H mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring unten\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"groß B mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"groß B mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"groß B mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"groß D mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"groß D mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"groß D mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"groß D mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"groß F mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"groß G mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"groß H mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"groß H mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"groß H mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"groß H mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"groß H mit Breve unten\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"groß I mit unten stehender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"groß K mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"groß K mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"groß K mit Zeile\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"groß L mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"groß L mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"groß M mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"groß M mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"groß M mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"groß N mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"groß N mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"groß N mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"groß N mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"groß P mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"groß P mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"groß R mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"groß R mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"groß S mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"groß T mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"groß T mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"groß T mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehender Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"groß V mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"groß V mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"groß W mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"groß W mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"groß W mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"groß X mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"groß X mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"groß Z mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"groß E mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"groß E mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"groß I mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"groß I mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"groß O mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"groß U mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"groß Y mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Tilde\"}}}]\n,\n\"de/symbols/math_angles.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Bogen\"}}},{\"category\":\"Sm\",\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit nach unten gerichtetem Zickzackpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionaler Winkel\"}}},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Gemessene Winkelöffnung links\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Variante mit Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Punkt gemessen\"}}},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Winkel mit S nach innen\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Spitzer Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Öffnungswinkel nach links\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Gedrehter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"Winkel mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich nach unten öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach oben und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach oben und links\"}}},{\"category\":\"Sm\",\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach rechts und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach links und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach rechts und unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach links und unten\"}}}]\n,\n\"de/symbols/math_arrows.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil\"}}},{\"category\":\"So\",\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Spitzen\"}}},{\"category\":\"So\",\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zwei Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit zwei Köpfen\"}}},{\"category\":\"So\",\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"Abwärts zwei Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz\"}}},{\"category\":\"So\",\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach unten\"}}},{\"category\":\"So\",\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Basis\"}}},{\"category\":\"So\",\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Wellenpfeil\"}}},{\"category\":\"Sm\",\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit Strich\"}}},{\"category\":\"So\",\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"Zickzack-Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Ecke nach unten\"}}},{\"category\":\"So\",\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Ecke nach links\"}}},{\"category\":\"So\",\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"Gegen den Uhrzeigersinn oberer halbkreisförmiger Pfeil\"}}},{\"category\":\"So\",\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"Halbkreis im Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur langen Bar\"}}},{\"category\":\"So\",\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zum Überfahren Pfeil nach rechts zum Überfahren\"}}},{\"category\":\"So\",\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"Offener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn öffnen\"}}},{\"category\":\"So\",\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil nach links von Abwärtspfeil\"}}},{\"category\":\"So\",\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"Links gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"Aufwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"Rechts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"Abwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"Links Rechts Doppelpfeil mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"Nordwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"Nordost-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"Südost Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"Südwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"Linker Squiggle-Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gekrümmter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"So\",\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben gestrichen\"}}},{\"category\":\"So\",\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"Rechts gestrichener Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"Abwärts gestrichelter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"Abwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil von der Stange\"}}},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit horizontaler Stange\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit vertikaler Stange\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer doppelter Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil von der Wand\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil nach links von Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"Drei nach rechts gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit offenem Kopf\"}}},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"Elektrischer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"Pfeilspitze zwischen zwei horizontalen Balken\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"Gebrochener Kreis mit Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gerichteter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"Schwerer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"Schwerer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"Schwerer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"Zeichnungspunkt Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"Schwerer runder Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"Schwerer Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"Schwerer, gestrichelter Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, nach oben beleuchtete Pfeilspitze\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, von unten beleuchtete Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"Schwarze Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach unten und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach oben und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts gerichteter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"Schwerer konkaver Spitze-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"Rechts geschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"Links schattierter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"Zurückgekippter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"Vorne geneigter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"Schwerer unterer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"Schwerer oberer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"Gekerbter Pfeil nach rechts unten rechts\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach rechts oben gekerbt\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"Eingekreister schwerer weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit weißer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"Schwarz-gefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit schwarzer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Barbed-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"Keil-Schwanz nach rechts Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gekeilter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"Offener Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"Vierfacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Doppelpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"Langer Rechtspfeil von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"Langer nach rechts gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit horizontalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit horizontalem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"Dreifachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Strichpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Bindestrich nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"Dreipoliger Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach links\"}}},{\"category\":\"Sm\",\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"Nordwest- und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"Nordost- und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil und Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil und Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil Kreuzung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil Kreuzung Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"Fallende Diagonale, die Nordostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"Steigende Diagonale, die Südostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeilüberquerung Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeilüberquerung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach rechts zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach oben gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach unten gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach links gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach rechts gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"Rechtsseitiger Bogen im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"Bogen der linken Seite gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"Pfeil unten gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben im Uhrzeigersinn mit Minus\"}}},{\"category\":\"Sm\",\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"Rechts unten halbkreisförmig im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"Linker halbkreisförmiger Pfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Kurzer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Kurzer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"Kurzer Pfeil nach rechts Über Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch X\"}}},{\"category\":\"Sm\",\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil durch kleinen Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zweiköpfiger Pfeil vom kleinen Kreis\"}}},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"Größer als über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"Untersatz über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"Superset über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Pfeil rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit linkem Pfeil oben\"}}},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben durch Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"Integral mit Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"North East White Arrow\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"Südostweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"Südwestweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"Linker rechter weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"Aufwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"Abwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"Südwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"Linker rechter schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach oben\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"Drei nach links gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"Langer nach links gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Köpfen\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach links zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator Über Linkspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über der Rückseite fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch mehr als\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach unten\"}}}]\n,\n\"de/symbols/math_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"Skript klein L\"}}},{\"category\":\"Sm\",\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"Skript groß P\"}}},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"groß Gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"groß Pi mit Doppelstrich\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"Summenzeichen mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"groß D kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"d kursiv mit Doppelstrich\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"e kursiv mit Doppelstrich\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"i kursiv mit Doppelstrich\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"punktloses i kursiv\"}}},{\"category\":\"Ll\",\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"punktloses j kursiv\"}}}]\n,\n\"de/symbols/math_delimiters.js\": \n[{\"locale\":\"de\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer zu\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Stachel\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Stachel\"}}},{\"category\":\"Sm\",\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"linke Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"rechte Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"linke Abrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"rechter Abrundungsklammer\"}}},{\"category\":\"So\",\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"unterer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"Unterer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"Oberer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"Oberer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"Obere rechte Ecke\"}}},{\"category\":\"So\",\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"Untere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"Rechte untere Ecke\"}}},{\"category\":\"Sm\",\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"Obere Hälfte eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"Untere Hälfte eines Integrals\"}}},{\"category\":\"Ps\",\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"Linke spitze Klammer\"}}},{\"category\":\"Pe\",\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"Rechte spitze Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"Linke Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"Zwischenteil einer geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"Mittelteil eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"Erweiterung einer Querlinie\"}}},{\"category\":\"Sm\",\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben links oder rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben rechts oder unten links\"}}},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil einer Summe\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil einer Summe\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer auf oberer eckiger Klammer\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil des Radikalsymbols\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"Linke vertikale Boxlinie\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"Rechte vertikale Boxlinie\"}}},{\"category\":\"Sm\",\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"Obere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"Untere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"Obere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"Untere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"Mittlere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"Mittlere, rechtwinklige Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Anführungszeichen-Verzierung\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"Schwere nach rechts zeigenden Winkel-Anführungszeichen-Verzierung\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"Schwere, nach rechts weisende Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"Leichte linke Schildpatt Bracket Ornament\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"Leichte rechte Schildpatt-Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke geschweifte Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte geschweifte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"Linker S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Pe\",\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"rechter S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Ps\",\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke doppelte Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Schildkrötenpanzerhalterung\"}}},{\"category\":\"Pe\",\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke abgeflachte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte abgeflachte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"Linke weiße geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Bildklammer\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"Z-Notation rechte Bildklammer\"}}},{\"category\":\"Ps\",\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"Z Notation Right Binding Bracket\"}}},{\"category\":\"Ps\",\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Unterlenker\"}}},{\"category\":\"Pe\",\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Unterlenker\"}}},{\"category\":\"Ps\",\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Häkchen in der oberen Ecke\"}}},{\"category\":\"Pe\",\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Ps\",\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Pe\",\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der oberen Ecke\"}}},{\"category\":\"Ps\",\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer mit Punkt\"}}},{\"category\":\"Pe\",\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit Punkt\"}}},{\"category\":\"Ps\",\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"Linker Bogen weniger als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"rechter Bogen größer als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"Doppelter linker Bogen größer als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"Doppelter rechter Bogen weniger als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze Schildkrötenhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"Linker wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"rechter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"Linker doppelter wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"rechter doppelter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigender gebogener Winkelhalter\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigender gebogener Winkelhalter\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"Obere linke halbe Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"Obere rechte halbe Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"Linke halbe halterung unten\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"Untere rechte halbe Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"U-Halterung links seitlich\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"U-Halterung rechts seitlich\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"Linke doppelte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"Rechte doppelte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"Linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"Rechte Doppelwinkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"Linke Eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"Rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"Linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"Rechte Schildpattlasche\"}}},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"Linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"Linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen in umgekehrter Reihenfolge\"}}},{\"category\":\"Pe\",\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen\"}}},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"Niedriges doppeltes Prime-Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"Verzierte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"Verzierte rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale, recht geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Schildpattklammer\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige, rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"Kleine linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"Linke Klammer in voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"Linke geschweifte Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"Rechte breite weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"Halbe breite linke eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"Halbe breite rechte eckklammer\"}}}]\n,\n\"de/symbols/math_geometry.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Horizontal\"}}},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Horizontale\"}}},{\"category\":\"So\",\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical\"}}},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Vertikale\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Licht Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Right\"}}},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Right\"}}},{\"category\":\"So\",\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Links\"}}},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Left\"}}},{\"category\":\"So\",\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf und richtig\"}}},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Right\"}}},{\"category\":\"So\",\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und links\"}}},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Links\"}}},{\"category\":\"So\",\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leicht und horizontal\"}}},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen nach unten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen schwer und horizontal\"}}},{\"category\":\"So\",\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen links schweres und rechtes vertikales Licht\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Vertical Light\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Down Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Up Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen Vertikales schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Up Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Down Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt horizontal\"}}},{\"category\":\"So\",\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical\"}}},{\"category\":\"So\",\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Right\"}}},{\"category\":\"So\",\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Links\"}}},{\"category\":\"So\",\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und rechts\"}}},{\"category\":\"So\",\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und links\"}}},{\"category\":\"So\",\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Horizontal\"}}},{\"category\":\"So\",\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und horizontal\"}}},{\"category\":\"So\",\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Right\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Links\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und links\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und rechts\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal Oben Rechts Nach Unten Links\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal von oben links nach rechts unten\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"Box Zeichnungen Light Diagonal Cross\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Left\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Right\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Left und Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Up und Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left und Light Right\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Light Down\"}}},{\"category\":\"So\",\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"Block der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"Unterer achter Block\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"Unterer Viertelblock\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"Drei Achtel-Block senken\"}}},{\"category\":\"So\",\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"Block der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"Fünf Achtel Block\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"Unterer Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"Unterer Sieben Achtel-Block\"}}},{\"category\":\"So\",\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"Voller Block\"}}},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"Linker Sieben Achtel Block\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"Linker Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"Linker Block mit fünf Achteln\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"Linke halbe Block\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"Block drei Achtel\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"Linke einen Viertelblock\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"Linker achter Block\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"Rechte halbe Block\"}}},{\"category\":\"So\",\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"Lichtschatten\"}}},{\"category\":\"So\",\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"Mittlere Schatten\"}}},{\"category\":\"So\",\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"Dunkler Schatten\"}}},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"Oberer achter Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"rechter achter Block\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"Quadrant unten links\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"Quadrant rechts unten\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und unten links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten rechts\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links und unten rechts\"}}},{\"category\":\"So\",\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit abgerundeten Ecken\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat, das schwarzes kleines Quadrat enthält\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit horizontaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit orthogonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Oben links nach rechts unten füllen\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter bis unterer linker Füllung\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit diagonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"Schwarzes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"Weißes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"Weißes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"Weißes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"Weißes rechtwinkliges Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"Weißer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Abwärtsdreieck\"}}},{\"category\":\"So\",\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"Weißes nach unten zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes, nach unten zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"Weißer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit schwarzem kleinem Diamant\"}}},{\"category\":\"So\",\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"Fischauge\"}}},{\"category\":\"So\",\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"Raute\"}}},{\"category\":\"So\",\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Kreis\"}}},{\"category\":\"So\",\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"Kreis mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"Bullseye\"}}},{\"category\":\"So\",\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"Kreis mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"Kreis mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit unterer Hälfte Schwarz\"}}},{\"category\":\"So\",\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberem rechten Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit ganzem oberen linken Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"Linker halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"rechter halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"Inverse Kugel\"}}},{\"category\":\"So\",\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"Inverse weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter weißer Kreis der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"Inverser weißer Kreis der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des oberen linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen im oberen rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des rechten unteren Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des unteren linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"Oberer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"Unterer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"Schwarzes unteres linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes oberes linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"Weiße Kugel\"}}},{\"category\":\"So\",\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit der oberen linken Diagonalenhälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit senkrechter Linie\"}}},{\"category\":\"So\",\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck mit Punkt\"}}},{\"category\":\"So\",\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"Großer Kreis\"}}},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit oberem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit rechtem oberen Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit oberem linkem Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit rechtem oberen Quadranten\"}}},{\"category\":\"Sm\",\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"Oberes linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"Oberes rechtes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"Unteres linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"Unteres rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer linker diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"Diamant mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"Diamant mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"Diamant mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"Diamant mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"Schwarzes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"Weißes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"Schwarzes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"Weißes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"Weißes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"Weißes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"Horizontales schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"Schwarzer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"Schwarzer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"Schwarze mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"Weiße mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Diamant\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"Schwarze kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"Weiße kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"Schwarze horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"Weiße horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"Schwarze vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Stern\"}}},{\"category\":\"So\",\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"Weißer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"Schwerer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"Schweres Oval mit innenliegendem Oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis mit Kreis nach innen\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"Schwerer eingekreister Saltire\"}}}]\n,\n\"de/symbols/math_harpoons.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links über Harpune nach rechts\"}}},{\"category\":\"So\",\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts über Harpune nach links\"}}},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"Nach oben Barb Rechts Nach links Barb Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Right Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"Barb nach rechts Barb nach rechts Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Left Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up To Bar\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb bis zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Widerhaken rechts\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb Right to Bar\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"Rechts Harpoon mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach oben Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpoon nach rechts mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach unten Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Oben Rechts Harpoon mit Barb Up\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten Rechts Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpune nach links mit Barb nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Above Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down Under Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up Long Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach unten mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"linker Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"rechter Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}}]\n,\n\"de/symbols/math_non_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante über zwei Pi\"}}},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B Balkensymbol\"}}},{\"category\":\"So\",\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"Numero-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"Tonaufnahme Copyright\"}}},{\"category\":\"So\",\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"Rezept nehmen\"}}},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"Antwort\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"Dienstleistungsmarke\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"Telefon Zeichen\"}}},{\"category\":\"So\",\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"Markenzeichen\"}}},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"Versicle\"}}},{\"category\":\"So\",\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"Unze-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"Ohm-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ohm-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"Kelvin-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"Angstrom-Zeichen\"}}},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Geschätztes Symbol\"}}},{\"category\":\"Lu\",\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"Umgeschlagenes Kapital F\"}}},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"Informationsquelle\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Gedrehtes Kapital Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"Faksimile-Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"Aufgehobenes Sans-Serif-Kapital L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital Y\"}}}]\n,\n\"de/symbols/math_symbols.js\": \n[{\"locale\":\"de\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"Fakultät\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"Anführungszeichen\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"Nummernzeichen\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"Dollar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"Prozent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"Hochkomma\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"times\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"Komma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Pd\"},{\"category\":\"Po\",\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"Punkt\"}}},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"Strichpunkt\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"ist gleich\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"größer als\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"Klammeraffe\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circumflex\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"Unterstrich\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"Gravis Akzent\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"senkrechter Strich\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ausrufezeichen\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"Cent\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"währungszeichen\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"gebrochene Linie\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"Abschnitt\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diaeresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"Copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"weibliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pi\",\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"nicht\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registered sign\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"Überstrich\",\"alternative\":\"Makron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus minus\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acute accent\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"Paragraf\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Punkt mittig\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"Cedille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"Männliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pf\",\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Fragezeichen\"}},\"category\":\"Po\"},{\"category\":\"Sm\",\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"mal\"}}},{\"category\":\"Sm\",\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"geteilt durch\"}}},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"Breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"Überpunkt\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"Überring\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"Ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"Tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"Doppleakutakzent\"}},\"category\":\"Sk\"},{\"category\":\"Pd\",\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"Nicht brechender Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"Abbildung Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"En Dash\"}}},{\"category\":\"Pd\",\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"EM Dash\"}}},{\"category\":\"Pd\",\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"Horizontale Linie\"}}},{\"category\":\"Po\",\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"Doppelte vertikale Linie\"}}},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"Doppelter Unterstrich\"}}},{\"category\":\"Pi\",\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"Linkes einfaches Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"Rechtes einfaches Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"Einzelnes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"Einzelnes linkes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"Linkes doppeltes Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"Rechtes doppeltes Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"Doppeltes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"Doppeltes linkes Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"Dolch\"}}},{\"category\":\"Po\",\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"Doppelter Dolch\"}}},{\"category\":\"Po\",\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"Kugel\"}}},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"Dreieckige Kugel\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"Einzelpunkt\"}}},{\"category\":\"Po\",\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"zwei Punkte\"}}},{\"category\":\"Po\",\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"horizontale Ellipsis\"}}},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"Trennungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"promille\"}}},{\"category\":\"Po\",\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"pro Zehntausend\"}}},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"Strich\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"zwei Strich\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"drei Strich\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"zwei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"drei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"Caret\"}}},{\"category\":\"Pi\",\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"Einfacher nach links zeigender Winkel Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"Einzelne Nach-rechts-Winkel-Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"Referenzmarke\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"Doppelausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"Interrobang\"}}},{\"category\":\"Po\",\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"Überschrift\"}}},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"Undertie\"}}},{\"category\":\"Pc\",\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"Zeichen Krawatte\"}}},{\"category\":\"Po\",\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"Caret-Einfügungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"Asterism\"}}},{\"category\":\"Po\",\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"Bindestrich Kugel\"}}},{\"category\":\"Sm\",\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"Fraktions-Schrägstrich\"}}},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"Doppel-Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen für Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Pilcrow-Zeichen\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach links\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach rechts\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"Niedriges Sternchen\"}}},{\"category\":\"Po\",\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Semikolon\"}}},{\"category\":\"Po\",\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"Nahansicht\"}}},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"Zwei Sternchen vertikal ausgerichtet\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"Kommerzielles Minuszeichen\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"Swing Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"Inverted Undertie\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"Blume Interpunktionszeichen\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"Drei Punkt-Interpunktion\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"Vierpunkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"Fünf Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"Zwei Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"Vier-Punkt-Markierung\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Kreuz\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"Tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"Vertikale vier Punkte\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte rechte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"Index Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte rechte Klammer\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"Grundstücksgrenze\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"Ampersand gedreht\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"Pro Zeichen\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"Aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"Gedreht klein F\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"für alle\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"Komplement\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"es gibt\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"es gibt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"leere Menge\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"Differenz\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"nicht Element von\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"hat nicht als Element\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"Ende Beweis\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"Produkt\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"Koprodukt\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"Summe\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"minus plus\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"Plus mit Punkt\"}}},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"Division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"Mengendifferenz\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"verknüpft mit\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"Kreisoperator\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"Quadratwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"Kubikwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"vierte Wurzel\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportional zu\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"unendlich\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"Winkel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"gerichteter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"Raumwinkel\"}}},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"teilt\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"teilt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"nicht parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"oder\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"Durchschnitt\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"Vereinigung\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"Integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"Doppelintegral\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"Dreifachintegral\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"Randintegral\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"Oberflächenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"Volumenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"Integral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Gegenuhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"folglich\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"weil\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"Verhältnis\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"Minus mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"Überschuss\"}}},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"geometrische Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothetisch\"}}},{\"category\":\"Sm\",\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"Tildeoperator\"}}},{\"category\":\"Sm\",\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"Umgekehrte Tilde\"}}},{\"category\":\"Sm\",\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes stummes S\"}}},{\"category\":\"Sm\",\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"Sinuswelle\"}}},{\"category\":\"Sm\",\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"Kranzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"durchgestrichene Tilde\"}}},{\"category\":\"Sm\",\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"Minus über Tilde\"}}},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"nicht asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"ungefähr, aber nicht ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"weder ungefähr noch ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"nicht beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich oder gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"dreifache Tilde\"}}},{\"category\":\"Sm\",\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"alles gleich\"}}},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geometrisch äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"Differenz zwischen\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"nähert sich der Grenze\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geometrisch gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder das Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"Bild von oder ungefähr gleich\"}}},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"definiert als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"definiert als von rechts\"}}},{\"category\":\"Sm\",\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"category\":\"Sm\",\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}}},{\"category\":\"Sm\",\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"gleichwinklig zu\"}}},{\"category\":\"Sm\",\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"gleich mit Stern\"}}},{\"category\":\"Sm\",\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"gleich mit Delta\"}}},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"definitionsgemäß gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"gemessen mit\"}}},{\"category\":\"Sm\",\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"vielleicht gleich\"}}},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"ungleich\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"nicht kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"genau äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"kleiner oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"größer oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"kleiner als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"größer als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"viel kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"viel größer als\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"zwischen\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"nicht äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"nicht kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"nicht größer als\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"größer als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"kleiner oder größer als\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"größer oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"weder kleiner noch größer als\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"weder größer noch kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"nicht vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"nicht nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"keine echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"kein echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"Obermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"weder Teilmenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"weder Obermenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"Teilmenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"Obermenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"Multimenge\"}}},{\"category\":\"Sm\",\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"Multimengenmultiplikation\"}}},{\"category\":\"Sm\",\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"Multimengenvereinigung\"}}},{\"category\":\"Sm\",\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original von\"}}},{\"category\":\"Sm\",\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"quadratische Schnittmenge\"}}},{\"category\":\"Sm\",\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"quadratische VereinigungTasse\"}}},{\"category\":\"Sm\",\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Plus\"}}},{\"category\":\"Sm\",\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Minus\"}}},{\"category\":\"Sm\",\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Division\"}}},{\"category\":\"Sm\",\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"eingekreister Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"eingekreister Ringoperator\"}}},{\"category\":\"Sm\",\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"eingekreister Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Gleich\"}}},{\"category\":\"Sm\",\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"eingekreister Gedankenstrich\"}}},{\"category\":\"Sm\",\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Plus\"}}},{\"category\":\"Sm\",\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Minus\"}}},{\"category\":\"Sm\",\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"eingerahmte Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"eingerahmter Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"ergibt\"}}},{\"category\":\"Sm\",\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"ergibt nicht\"}}},{\"category\":\"Sm\",\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"senkrecht von\"}}},{\"category\":\"Sm\",\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"senkrecht auf\"}}},{\"category\":\"Sm\",\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"Behauptung\"}}},{\"category\":\"Sm\",\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"Model\"}}},{\"category\":\"Sm\",\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"wahr\"}}},{\"category\":\"Sm\",\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"dreifache vertikale Leiste mit rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doppelte vertikale Leiste mit doppeltem rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"beweist nicht\"}}},{\"category\":\"Sm\",\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"nicht wahr\"}}},{\"category\":\"Sm\",\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"nicht erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"negierte doppelte vertikale Leiste mit doppeltem rechten Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"vorangehend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"nachfolgend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"Original von\"}}},{\"category\":\"Sm\",\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"Bild von\"}}},{\"category\":\"Sm\",\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"Mehrfachzuordnung\"}}},{\"category\":\"Sm\",\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"hermitesch konjugierte Matrix\"}}},{\"category\":\"Sm\",\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"einschalten\"}}},{\"category\":\"Sm\",\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"Ausschließendes Oder\"}}},{\"category\":\"Sm\",\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"Nand verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"Nor verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"N-stufiger Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"N-stufige Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"Rautenoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Multiplikationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"Divisionsanzahl\"}}},{\"category\":\"Sm\",\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"Schleife\"}}},{\"category\":\"Sm\",\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"umgekehrte Tilde gleich\"}}},{\"category\":\"Sm\",\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doppelte Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doppelte Obermenge\"}}},{\"category\":\"Sm\",\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doppelter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doppelte Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"echter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"gleich und parallel\"}}},{\"category\":\"Sm\",\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"kleiner als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"größer als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"sehr viel kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"sehr viel größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"kleiner als, gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"größer als, gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"gleich oder vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"gleich oder nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"weder vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"weder nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"vorangehend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"nachfolgend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"nicht normale Untergruppe von\"}}},{\"category\":\"Sm\",\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"enthält keine normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"keine normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"enthält nicht als normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"Vertikale Ellipsis\"}}},{\"category\":\"Sm\",\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"Zentrierte horizontale Ellipse\"}}},{\"category\":\"Sm\",\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse unten links nach oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse, oben links nach unten rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"Element mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"Element mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"Element mit Überstrich\"}}},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"Element mit Unterstrich\"}}},{\"category\":\"Sm\",\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"Element mit 2 horizontalen Strichen\"}}},{\"category\":\"Sm\",\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit Überstrich\"}}},{\"category\":\"Sm\",\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"Z-Notation-Bag-Mitgliedschaft\"}}},{\"category\":\"So\",\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"Durchmesser-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"Haus\"}}},{\"category\":\"So\",\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"Projektiv\"}}},{\"category\":\"So\",\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"Perspektive\"}}},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"Schlangenlinie\"}}},{\"category\":\"So\",\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Nichtzeichen\"}}},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"Quadratische Raute\"}}},{\"category\":\"So\",\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"Bogen\"}}},{\"category\":\"So\",\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"Segment\"}}},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"Sektor\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"Schweres Pluszeichen\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"Schweres Minuszeichen\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"Heavy Division Sign\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"Curly Loop\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"Doppelte geschweifte Schleife\"}}},{\"category\":\"Sm\",\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"Weißes Dreieck, das kleines weißes Dreieck enthält\"}}},{\"category\":\"Sm\",\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"Aufrecht\"}}},{\"category\":\"Sm\",\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"Subset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"Superset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"Oder mit innerem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Vorhergehender Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"Superset Vorgänger Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"Mathematische aufsteigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"Lange Abteilung\"}}},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"Mathematische fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"quadratisches und\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"quadratisches oder\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit zentriertem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"Und mit Dot\"}}},{\"category\":\"Sm\",\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"Untere rechte Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"Linke äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"rechter äußerer Join\"}}},{\"category\":\"Sm\",\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"Volle äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"Große Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"Großes Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"Linkes und rechtes doppeltes Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"Linker und rechter Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"Linke Multimap\"}}},{\"category\":\"Sm\",\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"Long Right Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"Langer linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"Up Tack mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"Raute durch horizontale Regel geteilt\"}}},{\"category\":\"Sm\",\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant\"}}},{\"category\":\"Sm\",\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Tick nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"Steigende diagonale Kreuzung fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"Fallende diagonale Kreuzung steigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Balkenbegrenzer\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"Z Notationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"Z Notationstyp Doppelpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Zaun\"}}},{\"category\":\"Sm\",\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"Vertikale Zickzacklinie\"}}},{\"category\":\"Sm\",\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter leerer Satz\"}}},{\"category\":\"Sm\",\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit horizontaler Leiste\"}}},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"eingekreister umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Senkrecht\"}}},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"Kreis geteilt durch horizontale Leiste und obere Hälfte geteilt durch vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"Kreis mit überlagertem X\"}}},{\"category\":\"Sm\",\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"eingekreistes, gegen den Uhrzeigersinn gedrehtes Divisionszeichen\"}}},{\"category\":\"Sm\",\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"eingekreiste weiße Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"eingekreist weniger als\"}}},{\"category\":\"Sm\",\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"eingekreist größer als\"}}},{\"category\":\"Sm\",\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit kleinem Kreis nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit zwei horizontalen Strichen nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links unten nach rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links oben nach rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"Quadrat Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"Quadratischer kleiner Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"Doppelquadrat\"}}},{\"category\":\"Sm\",\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"Zwei verbundene Quadrate\"}}},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"S im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Serifen unten\"}}},{\"category\":\"Sm\",\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"Rechtes Dreieck über linkem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"Linkes Dreieck neben vertikaler Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken neben dem rechten Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"Fliege mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"Fliege mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"Schwarze Fliege\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"Zeiten mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"Mal mit rechter Hälfte Schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"Weiße Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"Schwarze Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"Unvollständige Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"Krawatte über Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"Unendlichkeit mit vertikaler Leiste negiert\"}}},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"Doppelter Multimap\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit konturierter Kontur\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"Erhöht als\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"Produkt mischen\"}}},{\"category\":\"Sm\",\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und geneigte Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und schräge Parallele zu Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"Identisch und schräg parallel\"}}},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"Gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"Thermodynamisch\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"Abwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"Abwärtsdreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"Schwarze Raute\"}}},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrtes weißes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"Fehlerfreies schwarzes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Diamant\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"Error-Barred Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter schwarzer Kreis\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Operator\"}}},{\"category\":\"Sm\",\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"Großer Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"Großer umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"Doppel plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"Triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"Winzig\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"Miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Punkt-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled Plus Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square-Kreuzungsoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square Union-Betreiber\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"Zwei logische und Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"Zwei logisch oder Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"N-Ary Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"Modulo Zwei Summe\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"Summation mit Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"Vierfach-Integral-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"Finite Part Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"Integral mit Doppelhub\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"Integraler Durchschnitt mit Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"Zirkulationsfunktion\"}}},{\"category\":\"Sm\",\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"Integration gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit rechteckigem Pfad um die Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit halbkreisförmigem Pfad um den Pol\"}}},{\"category\":\"Sm\",\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"Leitungsintegration ohne Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"Integral um einen Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"Quaternion Integral Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"Integriert mit Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"Integral mit der Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"Integral mit Union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"Integral mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"Integral mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"Beitreten\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"Großes linkes Dreieckbediener\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Zusammensetzung\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Piping\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Projektion\"}}},{\"category\":\"Sm\",\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Zirkumflex-Akzent oben\"}}},{\"category\":\"Sm\",\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde unter\"}}},{\"category\":\"Sm\",\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Index Zwei\"}}},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit schwarzem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Komma oben\"}}},{\"category\":\"Sm\",\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit fallenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"Vektor- oder Kreuzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"Semidirektprodukt mit geschlossenem Boden\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Multiplikationszeichen mit Circumflex-Akzent\"}}},{\"category\":\"Sm\",\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im doppelten Kreis\"}}},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"circled division sign\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"Innenprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"Produkt für den rechten Innenraum\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"Z-Notation relationaler Aufbau\"}}},{\"category\":\"Sm\",\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"Verschmelzung oder Koprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"Union mit Minuszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"Union mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"Kreuzung mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"Überschneidung mit logischem und\"}}},{\"category\":\"Sm\",\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"Vereinigung mit logischem Or\"}}},{\"category\":\"Sm\",\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über dem Schnittpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt über Union\"}}},{\"category\":\"Sm\",\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über Stab über Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt oberhalb der Stange oberhalb der Union\"}}},{\"category\":\"Sm\",\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"Union daneben und mit Union verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"Kreuzung neben und mit Kreuzung verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Vereinigung mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Schnittpunkt mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"Doppelter Quadratschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"Double Square Union\"}}},{\"category\":\"Sm\",\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"Closed Union mit Serifen und Smash-Produkten\"}}},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Punkt oben\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double logical or\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"Zwei durchschneiden logisch und\"}}},{\"category\":\"Sm\",\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"Zwei sich überschneidende logische Oder\"}}},{\"category\":\"Sm\",\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß oder\"}}},{\"category\":\"Sm\",\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß und\"}}},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"Logisch oder Überlappend Logisch Und\"}}},{\"category\":\"Sm\",\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"kleines Vee mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit doppelter Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Domain Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"Z Notationsbereich Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"Identisch mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit doppeltem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit dreifachem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"Ähnlich Minus Ähnlich\"}}},{\"category\":\"Sm\",\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"Kongruent mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Entspricht Asterisk\"}}},{\"category\":\"Sm\",\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"Fast gleichwertig mit dem Circumflex Accent\"}}},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen über Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt gleich\"}}},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"double equal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"Drei aufeinander folgende Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit zwei Punkten oben und zwei Punkten unten\"}}},{\"category\":\"Sm\",\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"Gleichwertig mit vier Punkten oben\"}}},{\"category\":\"Sm\",\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Circle Inside\"}}},{\"category\":\"Sm\",\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Kreis nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben links\"}}},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"Größer als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht gleich\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"Weniger als aber größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"Größer als aber weniger als unten und größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"Größer als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oben größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"Größer als oben Ähnlich oben\"}}},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"less than greater than or equal to\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"greater than less than or equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben schräg gleich oben Größer als oben schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"Größer als oben schräg gleich oben kleiner als oben schräg gleich groß\"}}},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als mit innenliegendem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als mit Punkt nach innen\"}}},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"Gleich oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"Gleich oder größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder größer als\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"Äquivalent oder kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben Weniger als Gleiches Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben größer als oben Gleichheitszeichen\"}}},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"Doppelt verschachtelt, weniger als mit Unterleiste\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"less than greater than overlay\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"Größer als weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"Weniger als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"Größer als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"Weniger als dann geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"Größer als geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"Größer als\"}}},{\"category\":\"Sm\",\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"Größer als oder gleich\"}}},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"difference between (variant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"Stellt über dem einzeiligen Gleichheitszeichen ein\"}}},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"Erfolg über dem einzeiligen Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"Vorangehende Single-Line ist nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"Erfolg über Single-Line nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"Erfolgreich über Gleichheitszeichen\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precedes but not equal to\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes fast gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"Erreicht über fast gleich viel\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"Vorangegangene nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"Erreicht oben nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"Doppelter Vorgänger\"}}},{\"category\":\"Sm\",\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"Doppelter Erfolg\"}}},{\"category\":\"Sm\",\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"Superset mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"Superset mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"Superset mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"Superset von oder gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"Teilmenge des obigen Gleichheitszeichens\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"Superset des obigen Gleichheitszeichens\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"approximate subset of\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"approximate superset of\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"Superset von oben fast gleichwertig\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"Superset von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"Platz links Feldbetreiber geöffnet\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Box mit offener Box\"}}},{\"category\":\"Sm\",\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Untermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen oder gleich\"}}},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"subset over superset\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"superset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"subset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"superset over superset\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"Superset neben dem Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"Superset Neben und Joined von Dash mit Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"Heugabel mit T-Stück\"}}},{\"category\":\"Sm\",\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"Transversalschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"Gabelung\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"Nicht Gabeln\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"Kurzer Linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"Kurzer Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklig zu S\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"Vertikales Dreifach-Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken linkes Drehkreuz\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken Doppelter linker Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"Long Dash von Left Member von Double Vertical\"}}},{\"category\":\"Sm\",\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"Short Down Tack mit Overbar\"}}},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"perpendicular over bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack Über Short Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"Double Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"Verdoppeln Sie Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"Doppelstrich nicht unterschreiben\"}}},{\"category\":\"Sm\",\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Doppelstrich nicht unterschrieben\"}}},{\"category\":\"Sm\",\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"Teilt sich nicht mit umgekehrten Negationsschrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"Down Tack mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"Parallel zum horizontalen Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"Parallel zu Tilde Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"Dreifache vertikale Balken-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Strich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"Triple Colon Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachtelt weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachteltes Größeres als\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"Doppellinie schräg, weniger als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg größer als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"Dreifache Schrägstrich-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"Großer dreifacher vertikaler Barbediener\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"Doppelter Schrägstrich-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"N-Ary White Vertical Bar\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"Wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Komma\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale horizontale Ellipsen\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Zwei-Punkt-Leader\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Wavy Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"Sesampunkt\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"Weißer Sesam Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"Centreline Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Wellenlinie\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"Mittellinie Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"kleines Komma\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"kleiner Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"kleines Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"kleiner Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"kleines Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"kleines Ausrufezeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"kleiner Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"kleines Nummernzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"kleines kaufmännisches\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"kleines Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"kleines Pluszeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"kleiner Bindestrich-Minus\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"kleines weniger als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"kleines Größeres als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"kleines Gleichheitszeichen\"}}},{\"category\":\"Po\",\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"kleiner umgekehrter Schrägstrich\"}}},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"kleines Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"kleines Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"kleine kommerzielle bei\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"vollbreites Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"vollbreites Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"vollbreites Nummernzeichen\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"vollbreites Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"vollbreites Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"vollbreites kaufmännisches und\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"vollbreites Apostroph\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Stern\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Komma\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Minus\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Punkt\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit voller Breite\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Semikolon\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"Weniger als das gesamte Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Gleichspannungszeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Mehr als Zeichen\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Commercial at\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit voller Breite\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"Circumflex-Akzent mit voller Breite\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Low Line\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Gravis Akzent\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Vertikale Linie\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"vollbreite Tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"vollbreites Cent-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"vollbreites Pfundzeichen\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"vollbreite nicht Symbol\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Überstrich\",\"alternative\":\"vollbreites Makron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"vollbreite gestrichelte Linie\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"vollbreites Yen-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"vollbreites Won-Zeichen\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"Halbbreite bildet leicht vertikal\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat mit halber Breite\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit halber Breite\"}}}]\n,\n\"de/symbols/math_whitespace.js\": \n[{\"locale\":\"de\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"Leerzeichen\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"weicher Trennstrich\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"En Quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"Em Quad\"}}},{\"category\":\"Zs\",\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"En Space\"}}},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"Raum für drei Per-Em\"}}},{\"category\":\"Zs\",\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"Raum für vier pro Em\"}}},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"Six-Per-Em Space\"}}},{\"category\":\"Zs\",\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"Raum darstellen\"}}},{\"category\":\"Zs\",\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"Interpunktionsraum\"}}},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"Nullbreite ohne Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"Zero Width Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"Markierung von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"Markierung von rechts nach links\"}}},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"Trennzeichen\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"Absatztrennzeichen\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"Einbetten von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"Einbetten von rechts nach links\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"Pop Richtungsformatierung\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"Von links nach rechts überschreiben\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"Von rechts nach links überschreiben\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"Schmaler No-Break-Bereich\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Cf\",\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"Word Joiner\"}}},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"von\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"Unsichtbares Plus\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"Symmetrisches Austauschen verhindern\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"Aktivieren Sie das symmetrische Austauschen\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"Nationale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"Nominale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"Nullbreite Leerzeichen\"}}},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"Interlinearer Anmerkungsanker\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"Separator für interlineare Anmerkungen\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"Interlinear Annotation Terminator\"}}}]\n,\n\"de/symbols/other_stars.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"Dezimalexponentensymbol\"}}},{\"category\":\"So\",\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"weißer Stern\"}}},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"Mittlerer weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"Mittlerer schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"Weißes schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"Häkchen\"}}},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"Schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"Schwere Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"Center Cross öffnen\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"Schweres offenes Mittelkreuz\"}}},{\"category\":\"So\",\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"Malteserkreuz\"}}},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Davidstern\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"Vier Teardrop-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"Vier Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"Schwere Vier-Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"Vier Club-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Schwarzer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Weißer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"Funkelt\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Stress umrissener weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Eingekreister weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"Open Center Black Star\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Center White Star\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern umrissen\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Schwerer umrissener schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Sternrad Stern\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Stern\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stern\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"Öffnen Sie Center Asterisk\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"Acht Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger Sternradstern\"}}},{\"category\":\"So\",\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"Sechszackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Zwölf schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"Sechzehn Spitzen Sternchen\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"Open Center Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"Sechs Petalled Schwarzweiss-Florette\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"Schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"Weiße Florette\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"Acht Petalled umrissene schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Eingekreistes offenes Zentrum Achtstern\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"Schweres, tropfenbesetztes Nadelrad-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"Feste Trifoliate-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"Schwere Chevron-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Funkeln\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"Schweres Funkeln\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"Schwere Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"Cross Mark\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Kreis\"}}}]\n,\n\"de/units/energy.js\": \n[{\"locale\":\"de\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"Watt\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowattstunde\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"Joule\",\"plural\":\"Joules\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"Volt\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Mikroohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"Ohm\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kiloohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"de/units/length.js\": \n[{\"locale\":\"de\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"Millimeter\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"Zentimeter\"}},\"category\":\"length\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"Meter\"}},\"category\":\"length\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"Kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"Fuß\"}},\"category\":\"length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"Zoll\"}},\"category\":\"length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"plural\":\"Meilen\",\"default\":\"Meile\"}},\"category\":\"length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"plural\":\"Yards\",\"default\":\"Yard\"}},\"category\":\"length\",\"names\":[\"yd\",\"yd.\"]},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"nautische Meile\"}},\"category\":\"length\"}]\n,\n\"de/units/memory.js\": \n[{\"locale\":\"de\"},{\"key\":\"b\",\"mappings\":{\"default\":{\"plural\":\"Bits\",\"default\":\"Bit\"}},\"category\":\"memory\",\"names\":[\"b\"]},{\"key\":\"B\",\"mappings\":{\"default\":{\"plural\":\"Bytes\",\"default\":\"Byte\"}},\"category\":\"memory\",\"names\":[\"B\"]},{\"key\":\"KB\",\"mappings\":{\"default\":{\"plural\":\"Kilobytes\",\"default\":\"Kilobyte\"}},\"category\":\"memory\",\"names\":[\"KB\"]},{\"key\":\"MB\",\"mappings\":{\"default\":{\"plural\":\"Megabytes\",\"default\":\"Megabyte\"}},\"category\":\"memory\",\"names\":[\"MB\"]},{\"key\":\"GB\",\"mappings\":{\"default\":{\"plural\":\"Gigabytes\",\"default\":\"Gigabyte\"}},\"category\":\"memory\",\"names\":[\"GB\"]},{\"key\":\"TB\",\"mappings\":{\"default\":{\"plural\":\"Terabytes\",\"default\":\"Terabyte\"}},\"category\":\"memory\",\"names\":[\"TB\"]}]\n,\n\"de/units/other.js\": \n[{\"locale\":\"de\"},{\"key\":\"ha\",\"mappings\":{\"default\":{\"default\":\"Hektar\"}},\"category\":\"other\",\"names\":[\"ha\"]},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"Dutzend\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"de/units/speed.js\": \n[{\"locale\":\"de\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"Knoten\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"Meilen pro Stunde\",\"singular\":\"Meile pro Stunde\"}},\"category\":\"speed\",\"names\":[\"mph\"]},{\"key\":\"kmh\",\"mappings\":{\"default\":{\"default\":\"Kilometer pro Stunde\"}},\"category\":\"speed\",\"names\":[\"kmh\"]},{\"key\":\"rpm\",\"mappings\":{\"default\":{\"default\":\"Umdrehungen pro Minute\",\"singular\":\"Umdrehung pro Minute\"}},\"category\":\"speed\",\"names\":[\"rpm\"]}]\n,\n\"de/units/temperature.js\": \n[{\"locale\":\"de\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"Farad\"}},\"category\":\"temperature\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"Celsius\"}},\"category\":\"temperature\",\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\",\"names\":[\"K\",\"°K\"]}]\n,\n\"de/units/time.js\": \n[{\"locale\":\"de\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Nanosekunde\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Microsekunde\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Millisekunde\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Sekunde\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Stunde\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"de/units/volume.js\": \n[{\"locale\":\"de\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubik\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikinch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikfuß\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikyard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"Fass\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"plural\":\"Gallonen\",\"default\":\"Gallone\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"Pint\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"plural\":\"Quarts\",\"default\":\"Quart\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"Esslöffel\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"Teelöffel\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikzentimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"de/units/weight.js\": \n[{\"locale\":\"de\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"weight\",\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"plural\":\"Unzen\",\"default\":\"Unze\"}},\"category\":\"weight\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"Gramm\"}},\"category\":\"weight\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Kilogramm\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Mikrogramm\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Milligramm\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"plural\":\"Tonnen\",\"default\":\"Tonne\"}},\"category\":\"weight\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/en.js",
    "content": "{\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"determinant\"},\"mathspeak\":{\"default\":\"det\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphism\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"en/functions/elementary.js\": \n[{\"locale\":\"en\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"natural log\"},\"mathspeak\":{\"default\":\"ln\"},\"clearspeak\":{\"default\":\"l n\",\"Log_LnAsNaturalLog\":\"natural log\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log base 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"exponential\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"greatest common divisor\"},\"mathspeak\":{\"default\":\"gcd\"},\"clearspeak\":{\"default\":\"gcd\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"least common multiple\"},\"mathspeak\":{\"default\":\"lcm\"},\"clearspeak\":{\"default\":\"lcm\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"argument\"},\"mathspeak\":{\"default\":\"arg\"},\"clearspeak\":{\"default\":\"arg\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"imaginary part\"},\"mathspeak\":{\"default\":\"im\"},\"clearspeak\":{\"default\":\"imaginary\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"real part\"},\"mathspeak\":{\"default\":\"re\"},\"clearspeak\":{\"default\":\"real\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"infimum\"},\"mathspeak\":{\"default\":\"inf\"},\"clearspeak\":{\"default\":\"inf\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit\"},\"mathspeak\":{\"default\":\"limit\"},\"clearspeak\":{\"default\":\"lim\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit inferior\"},\"mathspeak\":{\"default\":\"liminf\"},\"clearspeak\":{\"default\":\"liminf\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit superior\"},\"mathspeak\":{\"default\":\"limsup\"},\"clearspeak\":{\"default\":\"limsup\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"maximum\"},\"mathspeak\":{\"default\":\"max\"},\"clearspeak\":{\"default\":\"max\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"minimum\"},\"mathspeak\":{\"default\":\"min\"},\"clearspeak\":{\"default\":\"min\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"supremum\"},\"mathspeak\":{\"default\":\"sup\"},\"clearspeak\":{\"default\":\"sup\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"colimit\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projective limit\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"modulo\"},\"mathspeak\":{\"default\":\"mod\"},\"clearspeak\":{\"default\":\"mod\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"probability\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"en/functions/hyperbolic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosine\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cotangent\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosecant\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic secant\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic sine\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic tangent\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosine\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cotangent\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosecant\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic secant\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic sine\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic tangent\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"en/functions/trigonometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosine\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cotangent\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosecant\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"secant\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"sine\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"tangent\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosine inverse\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cotangent inverse\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosecant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosecant inverse\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc secant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"secant inverse\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"sine inverse\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"tangent inverse\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"en/symbols/digits_rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"squared\"},\"mathspeak\":{\"default\":\"squared\"},\"clearspeak\":{\"default\":\"squared\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"cubed\"},\"mathspeak\":{\"default\":\"cubed\"},\"clearspeak\":{\"default\":\"cubed\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one quarter\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one half\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three quarters\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one seventh\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one ninth\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one tenth\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one third\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two thirds\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one fifth\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two fifths\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three fifths\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"four fifths\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one sixth\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five sixths\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one eighth\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three eighths\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five eighths\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"seven eighths\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"numerator one\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"zero thirds\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled ten on black square\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled twenty on black square\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled thirty on black square\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled forty on black square\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled fifty on black square\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled sixty on black square\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled seventy on black square\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled eighty on black square\"}},\"key\":\"324F\"}]\n,\n\"en/symbols/greek-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"en/symbols/greek-scripts.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"small cap Gamma\"},\"mathspeak\":{\"default\":\"small upper Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"small cap Lamda\"},\"mathspeak\":{\"default\":\"small upper Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"small cap Pi\"},\"mathspeak\":{\"default\":\"small upper Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"small cap Rho\"},\"mathspeak\":{\"default\":\"small upper Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"small cap Psi\"},\"mathspeak\":{\"default\":\"small upper Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"superscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"superscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscript beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subscript rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscript chi\"}}}]\n,\n\"en/symbols/greek-symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"beta\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"kai\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed epsilon\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold cap Digamma\"},\"mathspeak\":{\"default\":\"bold upper Digamma\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"bold digamma\"}},\"key\":\"1D7CB\"}]\n,\n\"en/symbols/hebrew_letters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"first transfinite cardinal\",\"alternative\":\"alef\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"second transfinite cardinal\",\"alternative\":\"bet\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"third transfinite cardinal\",\"alternative\":\"gimel\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"fourth transfinite cardinal\",\"alternative\":\"dalet\"}},\"key\":\"2138\"}]\n,\n\"en/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u double overdot caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u double overdot grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek overbar\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a ring above acute\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde overbar\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cedilla acute\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cedilla breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s acute overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s underdot overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u overbar double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a breve acute\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a breve grave\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a breve hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a breve tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a breve underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o underdot prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u underdot prime\"}}}]\n,\n\"en/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b with stroke\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o with stroke and acute\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y with stroke\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke and hook\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"latin letter glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"sideways o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"long s with diagonal stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"long s with high stroke\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"turned delta\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"long s with dot above\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"long s\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tone six\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c with hook\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f with hook\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k with hook\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l with bar\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n with long right leg\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o with horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p with hook\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"tone two\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed esh loop\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u with horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh reversed\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh with tail\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tone five\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"latin letter wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz with caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae with macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"turned e\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae with acute\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d with curl\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z with hook\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l with curl\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n with curl\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t with curl\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q with hook tail\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"turned a\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"turned alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b with hook\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c with curl\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d with tail\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d with hook\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"reversed e\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa with hook\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"open e\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"reversed open e with hook\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"closed reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g with hook\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"script g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"rams horn\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"turned h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h with hook\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"heng with hook\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l with belt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"turned m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"turned m with long leg\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m with hook\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n with left hook\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"barred o\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"closed omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"turned r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"turned r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"turned r with hook\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r with tail\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"reversed r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s with hook\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat reversed esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh with curl\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"turned t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v with hook\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"turned v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"turned w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"turned y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z with curl\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"latin letter pharyngeal voiced fricative\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"latin letter stretched c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"closed open e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"turned k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q with hook\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"latin letter bidental percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"turned ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"turned open e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"turned i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"sideways o\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"sideways open o\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"turned oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"top half o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"bottom half o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"sideways u\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"sideways diaeresized u\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"sideways turned m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"latin letter voiced laryngeal spirant\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"latin letter ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r with fishhook and middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"turned g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th with strikethrough\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d with hook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"reversed open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"open o with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n preceded by apostrophe\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}}}]\n,\n\"en/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"},\"mathspeak\":{\"default\":\"modifying above a with grave\",\"brief\":\"mod above a with grave\",\"sbrief\":\"mod above a with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a acute\"},\"mathspeak\":{\"default\":\"modifying above a with acute\",\"brief\":\"mod above a with acute\",\"sbrief\":\"mod above a with acute\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a hat\"},\"mathspeak\":{\"default\":\"modifying above a with caret\",\"brief\":\"mod above a with caret\",\"sbrief\":\"mod above a with caret\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"},\"mathspeak\":{\"default\":\"a overtilde\",\"brief\":\"a overtilde\",\"sbrief\":\"a overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a double overdot\"},\"mathspeak\":{\"default\":\"modifying above a with double dot\",\"brief\":\"mod above a with double dot\",\"sbrief\":\"mod above a with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a ring\"},\"mathspeak\":{\"default\":\"modifying above a with ring\",\"brief\":\"mod above a with ring\",\"sbrief\":\"mod above a with ring\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"},\"mathspeak\":{\"default\":\"modifying above c with cedilla\",\"brief\":\"mod above c with cedilla\",\"sbrief\":\"mod above c with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"},\"mathspeak\":{\"default\":\"modifying above e with grave\",\"brief\":\"mod above e with grave\",\"sbrief\":\"mod above e with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e acute\"},\"mathspeak\":{\"default\":\"modifying above e with acute\",\"brief\":\"mod above e with acute\",\"sbrief\":\"mod above e with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e hat\"},\"mathspeak\":{\"default\":\"modifying above e with caret\",\"brief\":\"mod above e with caret\",\"sbrief\":\"mod above e with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e double overdot\"},\"mathspeak\":{\"default\":\"modifying above e with double dot\",\"brief\":\"mod above e with double dot\",\"sbrief\":\"mod above e with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"},\"mathspeak\":{\"default\":\"modifying above i with grave\",\"brief\":\"mod above i with grave\",\"sbrief\":\"mod above i with grave\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i acute\"},\"mathspeak\":{\"default\":\"modifying above i with acute\",\"brief\":\"mod above i with acute\",\"sbrief\":\"mod above i with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i hat\"},\"mathspeak\":{\"default\":\"modifying above i with caret\",\"brief\":\"mod above i with caret\",\"sbrief\":\"mod above i with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i double overdot\"},\"mathspeak\":{\"default\":\"modifying above i with double dot\",\"brief\":\"mod above i with double dot\",\"sbrief\":\"mod above i with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"},\"mathspeak\":{\"default\":\"n overtilde\",\"brief\":\"n overtilde\",\"sbrief\":\"n overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"},\"mathspeak\":{\"default\":\"modifying above o with grave\",\"brief\":\"mod above o with grave\",\"sbrief\":\"mod above o with grave\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o acute\"},\"mathspeak\":{\"default\":\"modifying above o with acute\",\"brief\":\"mod above o with acute\",\"sbrief\":\"mod above o with acute\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o hat\"},\"mathspeak\":{\"default\":\"modifying above o with caret\",\"brief\":\"mod above o with caret\",\"sbrief\":\"mod above o with caret\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"},\"mathspeak\":{\"default\":\"o overtilde\",\"brief\":\"o overtilde\",\"sbrief\":\"o overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o double overdot\"},\"mathspeak\":{\"default\":\"modifying above o with double dot\",\"brief\":\"mod above o with double dot\",\"sbrief\":\"mod above o with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"},\"mathspeak\":{\"default\":\"modifying above u with grave\",\"brief\":\"mod above u with grave\",\"sbrief\":\"mod above u with grave\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u acute\"},\"mathspeak\":{\"default\":\"modifying above u with acute\",\"brief\":\"mod above u with acute\",\"sbrief\":\"mod above u with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u hat\"},\"mathspeak\":{\"default\":\"modifying above u with caret\",\"brief\":\"mod above u with caret\",\"sbrief\":\"mod above u with caret\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u double overdot\"},\"mathspeak\":{\"default\":\"modifying above u with double dot\",\"brief\":\"mod above u with double dot\",\"sbrief\":\"mod above u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y acute\"},\"mathspeak\":{\"default\":\"modifying above y with acute\",\"brief\":\"mod above y with acute\",\"sbrief\":\"mod above y with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y double overdot\"},\"mathspeak\":{\"default\":\"modifying above y with double dot\",\"brief\":\"mod above y with double dot\",\"sbrief\":\"mod above y with double dot\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a overbar\"},\"mathspeak\":{\"default\":\"a overbar\",\"brief\":\"a overbar\",\"sbrief\":\"a overbar\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a breve\"},\"mathspeak\":{\"default\":\"modifying above a with breve\",\"brief\":\"mod above a with breve\",\"sbrief\":\"mod above a with breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"},\"mathspeak\":{\"default\":\"modifying above a with ogonek\",\"brief\":\"mod above a with ogonek\",\"sbrief\":\"mod above a with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c acute\"},\"mathspeak\":{\"default\":\"modifying above c with acute\",\"brief\":\"mod above c with acute\",\"sbrief\":\"mod above c with acute\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c hat\"},\"mathspeak\":{\"default\":\"modifying above c with caret\",\"brief\":\"mod above c with caret\",\"sbrief\":\"mod above c with caret\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c overdot\"},\"mathspeak\":{\"default\":\"modifying above c with dot\",\"brief\":\"mod above c with dot\",\"sbrief\":\"mod above c with dot\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"},\"mathspeak\":{\"default\":\"modifying above c with caron\",\"brief\":\"mod above c with caron\",\"sbrief\":\"mod above c with caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"},\"mathspeak\":{\"default\":\"modifying above d with caron\",\"brief\":\"mod above d with caron\",\"sbrief\":\"mod above d with caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e overbar\"},\"mathspeak\":{\"default\":\"e overbar\",\"brief\":\"e overbar\",\"sbrief\":\"e overbar\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e breve\"},\"mathspeak\":{\"default\":\"modifying above e with breve\",\"brief\":\"mod above e with breve\",\"sbrief\":\"mod above e with breve\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e overdot\"},\"mathspeak\":{\"default\":\"modifying above e with dot\",\"brief\":\"mod above e with dot\",\"sbrief\":\"mod above e with dot\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"},\"mathspeak\":{\"default\":\"modifying above e with ogonek\",\"brief\":\"mod above e with ogonek\",\"sbrief\":\"mod above e with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"},\"mathspeak\":{\"default\":\"modifying above e with caron\",\"brief\":\"mod above e with caron\",\"sbrief\":\"mod above e with caron\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g hat\"},\"mathspeak\":{\"default\":\"modifying above g with caret\",\"brief\":\"mod above g with caret\",\"sbrief\":\"mod above g with caret\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g breve\"},\"mathspeak\":{\"default\":\"modifying above g with breve\",\"brief\":\"mod above g with breve\",\"sbrief\":\"mod above g with breve\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g overdot\"},\"mathspeak\":{\"default\":\"modifying above g with dot\",\"brief\":\"mod above g with dot\",\"sbrief\":\"mod above g with dot\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cedilla\"},\"mathspeak\":{\"default\":\"modifying above g with cedilla\",\"brief\":\"mod above g with cedilla\",\"sbrief\":\"mod above g with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h hat\"},\"mathspeak\":{\"default\":\"modifying above h with caret\",\"brief\":\"mod above h with caret\",\"sbrief\":\"mod above h with caret\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"},\"mathspeak\":{\"default\":\"i overtilde\",\"brief\":\"i overtilde\",\"sbrief\":\"i overtilde\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i overbar\"},\"mathspeak\":{\"default\":\"i overbar\",\"brief\":\"i overbar\",\"sbrief\":\"i overbar\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i breve\"},\"mathspeak\":{\"default\":\"modifying above i with breve\",\"brief\":\"mod above i with breve\",\"sbrief\":\"mod above i with breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"},\"mathspeak\":{\"default\":\"modifying above i with ogonek\",\"brief\":\"mod above i with ogonek\",\"sbrief\":\"mod above i with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"dotless i\"},\"mathspeak\":{\"default\":\"modifying above dotless i\",\"brief\":\"mod above dotless i\",\"sbrief\":\"mod above dotless i\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j hat\"},\"mathspeak\":{\"default\":\"modifying above j with caret\",\"brief\":\"mod above j with caret\",\"sbrief\":\"mod above j with caret\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cedilla\"},\"mathspeak\":{\"default\":\"modifying above k with cedilla\",\"brief\":\"mod above k with cedilla\",\"sbrief\":\"mod above k with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l acute\"},\"mathspeak\":{\"default\":\"modifying above l with acute\",\"brief\":\"mod above l with acute\",\"sbrief\":\"mod above l with acute\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cedilla\"},\"mathspeak\":{\"default\":\"modifying above l with cedilla\",\"brief\":\"mod above l with cedilla\",\"sbrief\":\"mod above l with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"},\"mathspeak\":{\"default\":\"modifying above l with caron\",\"brief\":\"mod above l with caron\",\"sbrief\":\"mod above l with caron\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l middle dot\"},\"mathspeak\":{\"default\":\"modifying above l with middle dot\",\"brief\":\"mod above l with middle dot\",\"sbrief\":\"mod above l with middle dot\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n acute\"},\"mathspeak\":{\"default\":\"modifying above n with acute\",\"brief\":\"mod above n with acute\",\"sbrief\":\"mod above n with acute\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cedilla\"},\"mathspeak\":{\"default\":\"modifying above n with cedilla\",\"brief\":\"mod above n with cedilla\",\"sbrief\":\"mod above n with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"},\"mathspeak\":{\"default\":\"modifying above n with caron\",\"brief\":\"mod above n with caron\",\"sbrief\":\"mod above n with caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o overbar\"},\"mathspeak\":{\"default\":\"o overbar\",\"brief\":\"o overbar\",\"sbrief\":\"o overbar\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o breve\"},\"mathspeak\":{\"default\":\"modifying above o with breve\",\"brief\":\"mod above o with breve\",\"sbrief\":\"mod above o with breve\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o double acute\"},\"mathspeak\":{\"default\":\"modifying above o with double acute\",\"brief\":\"mod above o with double acute\",\"sbrief\":\"mod above o with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r acute\"},\"mathspeak\":{\"default\":\"modifying above r with acute\",\"brief\":\"mod above r with acute\",\"sbrief\":\"mod above r with acute\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cedilla\"},\"mathspeak\":{\"default\":\"modifying above r with cedilla\",\"brief\":\"mod above r with cedilla\",\"sbrief\":\"mod above r with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"},\"mathspeak\":{\"default\":\"modifying above r with caron\",\"brief\":\"mod above r with caron\",\"sbrief\":\"mod above r with caron\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s acute\"},\"mathspeak\":{\"default\":\"modifying above s with acute\",\"brief\":\"mod above s with acute\",\"sbrief\":\"mod above s with acute\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s hat\"},\"mathspeak\":{\"default\":\"modifying above s with caret\",\"brief\":\"mod above s with caret\",\"sbrief\":\"mod above s with caret\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cedilla\"},\"mathspeak\":{\"default\":\"modifying above s with cedilla\",\"brief\":\"mod above s with cedilla\",\"sbrief\":\"mod above s with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"},\"mathspeak\":{\"default\":\"modifying above s with caron\",\"brief\":\"mod above s with caron\",\"sbrief\":\"mod above s with caron\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cedilla\"},\"mathspeak\":{\"default\":\"modifying above t with cedilla\",\"brief\":\"mod above t with cedilla\",\"sbrief\":\"mod above t with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"},\"mathspeak\":{\"default\":\"modifying above t with caron\",\"brief\":\"mod above t with caron\",\"sbrief\":\"mod above t with caron\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"},\"mathspeak\":{\"default\":\"u overtilde\",\"brief\":\"u overtilde\",\"sbrief\":\"u overtilde\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u overbar\"},\"mathspeak\":{\"default\":\"u overbar\",\"brief\":\"u overbar\",\"sbrief\":\"u overbar\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u breve\"},\"mathspeak\":{\"default\":\"modifying above u with breve\",\"brief\":\"mod above u with breve\",\"sbrief\":\"mod above u with breve\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u ring\"},\"mathspeak\":{\"default\":\"modifying above u with ring\",\"brief\":\"mod above u with ring\",\"sbrief\":\"mod above u with ring\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u double acute\"},\"mathspeak\":{\"default\":\"modifying above u with double acute\",\"brief\":\"mod above u with double acute\",\"sbrief\":\"mod above u with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"},\"mathspeak\":{\"default\":\"modifying above u with ogonek\",\"brief\":\"mod above u with ogonek\",\"sbrief\":\"mod above u with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w hat\"},\"mathspeak\":{\"default\":\"modifying above w with caret\",\"brief\":\"mod above w with caret\",\"sbrief\":\"mod above w with caret\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y hat\"},\"mathspeak\":{\"default\":\"modifying above y with caret\",\"brief\":\"mod above y with caret\",\"sbrief\":\"mod above y with caret\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z acute\"},\"mathspeak\":{\"default\":\"modifying above z with acute\",\"brief\":\"mod above z with acute\",\"sbrief\":\"mod above z with acute\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z overdot\"},\"mathspeak\":{\"default\":\"modifying above z with dot\",\"brief\":\"mod above z with dot\",\"sbrief\":\"mod above z with dot\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"},\"mathspeak\":{\"default\":\"modifying above z with caron\",\"brief\":\"mod above z with caron\",\"sbrief\":\"mod above z with caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"},\"mathspeak\":{\"default\":\"modifying above a with caron\",\"brief\":\"mod above a with caron\",\"sbrief\":\"mod above a with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"},\"mathspeak\":{\"default\":\"modifying above i with caron\",\"brief\":\"mod above i with caron\",\"sbrief\":\"mod above i with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"},\"mathspeak\":{\"default\":\"modifying above o with caron\",\"brief\":\"mod above o with caron\",\"sbrief\":\"mod above o with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"},\"mathspeak\":{\"default\":\"modifying above u with caron\",\"brief\":\"mod above u with caron\",\"sbrief\":\"mod above u with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"},\"mathspeak\":{\"default\":\"modifying above g with caron\",\"brief\":\"mod above g with caron\",\"sbrief\":\"mod above g with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"},\"mathspeak\":{\"default\":\"modifying above k with caron\",\"brief\":\"mod above k with caron\",\"sbrief\":\"mod above k with caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"},\"mathspeak\":{\"default\":\"modifying above o with ogonek\",\"brief\":\"mod above o with ogonek\",\"sbrief\":\"mod above o with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"},\"mathspeak\":{\"default\":\"modifying above j with caron\",\"brief\":\"mod above j with caron\",\"sbrief\":\"mod above j with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g acute\"},\"mathspeak\":{\"default\":\"modifying above g with acute\",\"brief\":\"mod above g with acute\",\"sbrief\":\"mod above g with acute\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"},\"mathspeak\":{\"default\":\"modifying above n with grave\",\"brief\":\"mod above n with grave\",\"sbrief\":\"mod above n with grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double grave\"},\"mathspeak\":{\"default\":\"modifying above a with double grave\",\"brief\":\"mod above a with double grave\",\"sbrief\":\"mod above a with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a inverted breve\"},\"mathspeak\":{\"default\":\"modifying above a with inverted breve\",\"brief\":\"mod above a with inverted breve\",\"sbrief\":\"mod above a with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double grave\"},\"mathspeak\":{\"default\":\"modifying above e with double grave\",\"brief\":\"mod above e with double grave\",\"sbrief\":\"mod above e with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e inverted breve\"},\"mathspeak\":{\"default\":\"modifying above e with inverted breve\",\"brief\":\"mod above e with inverted breve\",\"sbrief\":\"mod above e with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double grave\"},\"mathspeak\":{\"default\":\"modifying above i with double grave\",\"brief\":\"mod above i with double grave\",\"sbrief\":\"mod above i with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i inverted breve\"},\"mathspeak\":{\"default\":\"modifying above i with inverted breve\",\"brief\":\"mod above i with inverted breve\",\"sbrief\":\"mod above i with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double grave\"},\"mathspeak\":{\"default\":\"modifying above o with double grave\",\"brief\":\"mod above o with double grave\",\"sbrief\":\"mod above o with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o inverted breve\"},\"mathspeak\":{\"default\":\"modifying above o with inverted breve\",\"brief\":\"mod above o with inverted breve\",\"sbrief\":\"mod above o with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double grave\"},\"mathspeak\":{\"default\":\"modifying above r with double grave\",\"brief\":\"mod above r with double grave\",\"sbrief\":\"mod above r with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r inverted breve\"},\"mathspeak\":{\"default\":\"modifying above r with inverted breve\",\"brief\":\"mod above r with inverted breve\",\"sbrief\":\"mod above r with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double grave\"},\"mathspeak\":{\"default\":\"modifying above u with double grave\",\"brief\":\"mod above u with double grave\",\"sbrief\":\"mod above u with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u inverted breve\"},\"mathspeak\":{\"default\":\"modifying above u with inverted breve\",\"brief\":\"mod above u with inverted breve\",\"sbrief\":\"mod above u with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s comma below\"},\"mathspeak\":{\"default\":\"modifying below s with comma below\",\"brief\":\"mod below s with comma below\",\"sbrief\":\"mod below s with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t comma below\"},\"mathspeak\":{\"default\":\"modifying below t with comma below\",\"brief\":\"mod below t with comma below\",\"sbrief\":\"mod below t with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"},\"mathspeak\":{\"default\":\"modifying above h with caron\",\"brief\":\"mod above h with caron\",\"sbrief\":\"mod above h with caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a overdot\"},\"mathspeak\":{\"default\":\"modifying above a with dot\",\"brief\":\"mod above a with dot\",\"sbrief\":\"mod above a with dot\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cedilla\"},\"mathspeak\":{\"default\":\"modifying above e with cedilla\",\"brief\":\"mod above e with cedilla\",\"sbrief\":\"mod above e with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o overdot\"},\"mathspeak\":{\"default\":\"modifying above o with dot\",\"brief\":\"mod above o with dot\",\"sbrief\":\"mod above o with dot\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y overbar\"},\"mathspeak\":{\"default\":\"y overbar\",\"brief\":\"y overbar\",\"sbrief\":\"y overbar\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless j\"},\"mathspeak\":{\"default\":\"modifying above dotless j\",\"brief\":\"mod above dotless j\",\"sbrief\":\"mod above dotless j\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a ring below\"},\"mathspeak\":{\"default\":\"modifying below a with ring below\",\"brief\":\"mod below a with ring below\",\"sbrief\":\"mod below a with ring below\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b overdot\"},\"mathspeak\":{\"default\":\"modifying above b with dot\",\"brief\":\"mod above b with dot\",\"sbrief\":\"mod above b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b underdot\"},\"mathspeak\":{\"default\":\"modifying below b with dot\",\"brief\":\"mod below b with dot\",\"sbrief\":\"mod below b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b underbar\"},\"mathspeak\":{\"default\":\"b underbar\",\"brief\":\"b underbar\",\"sbrief\":\"b underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d overdot\"},\"mathspeak\":{\"default\":\"modifying above d with dot\",\"brief\":\"mod above d with dot\",\"sbrief\":\"mod above d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d underdot\"},\"mathspeak\":{\"default\":\"modifying below d with dot\",\"brief\":\"mod below d with dot\",\"sbrief\":\"mod below d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d underbar\"},\"mathspeak\":{\"default\":\"d underbar\",\"brief\":\"d underbar\",\"sbrief\":\"d underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cedilla\"},\"mathspeak\":{\"default\":\"modifying above d with cedilla\",\"brief\":\"mod above d with cedilla\",\"sbrief\":\"mod above d with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d underhat\"},\"mathspeak\":{\"default\":\"modifying below d with caret\",\"brief\":\"mod below d with caret\",\"sbrief\":\"mod below d with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e underhat\"},\"mathspeak\":{\"default\":\"modifying below e with caret\",\"brief\":\"mod below e with caret\",\"sbrief\":\"mod below e with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde below\"},\"mathspeak\":{\"default\":\"e undertilde\",\"brief\":\"e undertilde\",\"sbrief\":\"e undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f overdot\"},\"mathspeak\":{\"default\":\"modifying above f with dot\",\"brief\":\"mod above f with dot\",\"sbrief\":\"mod above f with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g overbar\"},\"mathspeak\":{\"default\":\"g overbar\",\"brief\":\"g overbar\",\"sbrief\":\"g overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h overdot\"},\"mathspeak\":{\"default\":\"modifying above h with dot\",\"brief\":\"mod above h with dot\",\"sbrief\":\"mod above h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h underdot\"},\"mathspeak\":{\"default\":\"modifying below h with dot\",\"brief\":\"mod below h with dot\",\"sbrief\":\"mod below h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h double overdot\"},\"mathspeak\":{\"default\":\"modifying above h with double dot\",\"brief\":\"mod above h with double dot\",\"sbrief\":\"mod above h with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cedilla\"},\"mathspeak\":{\"default\":\"modifying above h with cedilla\",\"brief\":\"mod above h with cedilla\",\"sbrief\":\"mod above h with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h breve below\"},\"mathspeak\":{\"default\":\"modifying below h with breve below\",\"brief\":\"mod below h with breve below\",\"sbrief\":\"mod below h with breve below\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde below\"},\"mathspeak\":{\"default\":\"i undertilde\",\"brief\":\"i undertilde\",\"sbrief\":\"i undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k acute\"},\"mathspeak\":{\"default\":\"modifying above k with acute\",\"brief\":\"mod above k with acute\",\"sbrief\":\"mod above k with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k underdot\"},\"mathspeak\":{\"default\":\"modifying below k with dot\",\"brief\":\"mod below k with dot\",\"sbrief\":\"mod below k with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k underbar\"},\"mathspeak\":{\"default\":\"k underbar\",\"brief\":\"k underbar\",\"sbrief\":\"k underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l underdot\"},\"mathspeak\":{\"default\":\"modifying below l with dot\",\"brief\":\"mod below l with dot\",\"sbrief\":\"mod below l with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l underbar\"},\"mathspeak\":{\"default\":\"l underbar\",\"brief\":\"l underbar\",\"sbrief\":\"l underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l underhat\"},\"mathspeak\":{\"default\":\"modifying below l with caret\",\"brief\":\"mod below l with caret\",\"sbrief\":\"mod below l with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m acute\"},\"mathspeak\":{\"default\":\"modifying above m with acute\",\"brief\":\"mod above m with acute\",\"sbrief\":\"mod above m with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m overdot\"},\"mathspeak\":{\"default\":\"modifying above m with dot\",\"brief\":\"mod above m with dot\",\"sbrief\":\"mod above m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m underdot\"},\"mathspeak\":{\"default\":\"modifying below m with dot\",\"brief\":\"mod below m with dot\",\"sbrief\":\"mod below m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n overdot\"},\"mathspeak\":{\"default\":\"modifying above n with dot\",\"brief\":\"mod above n with dot\",\"sbrief\":\"mod above n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n underdot\"},\"mathspeak\":{\"default\":\"modifying below n with dot\",\"brief\":\"mod below n with dot\",\"sbrief\":\"mod below n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n underbar\"},\"mathspeak\":{\"default\":\"n underbar\",\"brief\":\"n underbar\",\"sbrief\":\"n underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n underhat\"},\"mathspeak\":{\"default\":\"modifying below n with caret\",\"brief\":\"mod below n with caret\",\"sbrief\":\"mod below n with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p acute\"},\"mathspeak\":{\"default\":\"modifying above p with acute\",\"brief\":\"mod above p with acute\",\"sbrief\":\"mod above p with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p overdot\"},\"mathspeak\":{\"default\":\"modifying above p with dot\",\"brief\":\"mod above p with dot\",\"sbrief\":\"mod above p with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r overdot\"},\"mathspeak\":{\"default\":\"modifying above r with dot\",\"brief\":\"mod above r with dot\",\"sbrief\":\"mod above r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r underdot\"},\"mathspeak\":{\"default\":\"modifying below r with dot\",\"brief\":\"mod below r with dot\",\"sbrief\":\"mod below r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r underbar\"},\"mathspeak\":{\"default\":\"r underbar\",\"brief\":\"r underbar\",\"sbrief\":\"r underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s overdot\"},\"mathspeak\":{\"default\":\"modifying above s with dot\",\"brief\":\"mod above s with dot\",\"sbrief\":\"mod above s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s underdot\"},\"mathspeak\":{\"default\":\"modifying below s with dot\",\"brief\":\"mod below s with dot\",\"sbrief\":\"mod below s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t overdot\"},\"mathspeak\":{\"default\":\"modifying above t with dot\",\"brief\":\"mod above t with dot\",\"sbrief\":\"mod above t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t underdot\"},\"mathspeak\":{\"default\":\"modifying below t with dot\",\"brief\":\"mod below t with dot\",\"sbrief\":\"mod below t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t underbar\"},\"mathspeak\":{\"default\":\"t underbar\",\"brief\":\"t underbar\",\"sbrief\":\"t underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t underhat\"},\"mathspeak\":{\"default\":\"modifying below t with caret\",\"brief\":\"mod below t with caret\",\"sbrief\":\"mod below t with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u double underdot\"},\"mathspeak\":{\"default\":\"modifying below u with double dot\",\"brief\":\"mod below u with double dot\",\"sbrief\":\"mod below u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde below\"},\"mathspeak\":{\"default\":\"u undertilde\",\"brief\":\"u undertilde\",\"sbrief\":\"u undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u underhat\"},\"mathspeak\":{\"default\":\"modifying below u with caret\",\"brief\":\"mod below u with caret\",\"sbrief\":\"mod below u with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"},\"mathspeak\":{\"default\":\"v overtilde\",\"brief\":\"v overtilde\",\"sbrief\":\"v overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v underdot\"},\"mathspeak\":{\"default\":\"modifying below v with dot\",\"brief\":\"mod below v with dot\",\"sbrief\":\"mod below v with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w grave\"},\"mathspeak\":{\"default\":\"modifying above w with grave\",\"brief\":\"mod above w with grave\",\"sbrief\":\"mod above w with grave\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w acute\"},\"mathspeak\":{\"default\":\"modifying above w with acute\",\"brief\":\"mod above w with acute\",\"sbrief\":\"mod above w with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w double overdot\"},\"mathspeak\":{\"default\":\"modifying above w with double dot\",\"brief\":\"mod above w with double dot\",\"sbrief\":\"mod above w with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w overdot\"},\"mathspeak\":{\"default\":\"modifying above w with dot\",\"brief\":\"mod above w with dot\",\"sbrief\":\"mod above w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w underdot\"},\"mathspeak\":{\"default\":\"modifying below w with dot\",\"brief\":\"mod below w with dot\",\"sbrief\":\"mod below w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x overdot\"},\"mathspeak\":{\"default\":\"modifying above x with dot\",\"brief\":\"mod above x with dot\",\"sbrief\":\"mod above x with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x double overdot\"},\"mathspeak\":{\"default\":\"modifying above x with double dot\",\"brief\":\"mod above x with double dot\",\"sbrief\":\"mod above x with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y overdot\"},\"mathspeak\":{\"default\":\"modifying above y with dot\",\"brief\":\"mod above y with dot\",\"sbrief\":\"mod above y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z hat\"},\"mathspeak\":{\"default\":\"modifying above z with caret\",\"brief\":\"mod above z with caret\",\"sbrief\":\"mod above z with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z underdot\"},\"mathspeak\":{\"default\":\"modifying below z with dot\",\"brief\":\"mod below z with dot\",\"sbrief\":\"mod below z with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z underbar\"},\"mathspeak\":{\"default\":\"z underbar\",\"brief\":\"z underbar\",\"sbrief\":\"z underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h underbar\"},\"mathspeak\":{\"default\":\"h underbar\",\"brief\":\"h underbar\",\"sbrief\":\"h underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t double overdot\"},\"mathspeak\":{\"default\":\"modifying above t with double dot\",\"brief\":\"mod above t with double dot\",\"sbrief\":\"mod above t with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w ring\"},\"mathspeak\":{\"default\":\"modifying above w with ring\",\"brief\":\"mod above w with ring\",\"sbrief\":\"mod above w with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y ring\"},\"mathspeak\":{\"default\":\"modifying above y with ring\",\"brief\":\"mod above y with ring\",\"sbrief\":\"mod above y with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a right half ring\"},\"mathspeak\":{\"default\":\"modifying above a with right half ring\",\"brief\":\"mod above a with right half ring\",\"sbrief\":\"mod above a with right half ring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a underdot\"},\"mathspeak\":{\"default\":\"modifying below a with dot\",\"brief\":\"mod below a with dot\",\"sbrief\":\"mod below a with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a hook\"},\"mathspeak\":{\"default\":\"modifying above a with hook\",\"brief\":\"mod above a with hook\",\"sbrief\":\"mod above a with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e underdot\"},\"mathspeak\":{\"default\":\"modifying below e with dot\",\"brief\":\"mod below e with dot\",\"sbrief\":\"mod below e with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e hook\"},\"mathspeak\":{\"default\":\"modifying above e with hook\",\"brief\":\"mod above e with hook\",\"sbrief\":\"mod above e with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"},\"mathspeak\":{\"default\":\"e overtilde\",\"brief\":\"e overtilde\",\"sbrief\":\"e overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i hook\"},\"mathspeak\":{\"default\":\"modifying above i with hook\",\"brief\":\"mod above i with hook\",\"sbrief\":\"mod above i with hook\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i underdot\"},\"mathspeak\":{\"default\":\"modifying below i with dot\",\"brief\":\"mod below i with dot\",\"sbrief\":\"mod below i with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o underdot\"},\"mathspeak\":{\"default\":\"modifying below o with dot\",\"brief\":\"mod below o with dot\",\"sbrief\":\"mod below o with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o hook\"},\"mathspeak\":{\"default\":\"modifying above o with hook\",\"brief\":\"mod above o with hook\",\"sbrief\":\"mod above o with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u underdot\"},\"mathspeak\":{\"default\":\"modifying below u with dot\",\"brief\":\"mod below u with dot\",\"sbrief\":\"mod below u with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u hook\"},\"mathspeak\":{\"default\":\"modifying above u with hook\",\"brief\":\"mod above u with hook\",\"sbrief\":\"mod above u with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y grave\"},\"mathspeak\":{\"default\":\"modifying above y with grave\",\"brief\":\"mod above y with grave\",\"sbrief\":\"mod above y with grave\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y underdot\"},\"mathspeak\":{\"default\":\"modifying below y with dot\",\"brief\":\"mod below y with dot\",\"sbrief\":\"mod below y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y hook\"},\"mathspeak\":{\"default\":\"modifying above y with hook\",\"brief\":\"mod above y with hook\",\"sbrief\":\"mod above y with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"},\"mathspeak\":{\"default\":\"y overtilde\",\"brief\":\"y overtilde\",\"sbrief\":\"y overtilde\"}}}]\n,\n\"en/symbols/latin-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h\",\"physics\":\"planck constant\"}},\"key\":\"210E\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combining a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combining e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combining i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combining o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combining u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combining c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combining d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combining h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combining m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combining r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combining t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combining v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combining x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subscript i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subscript r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subscript u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subscript v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combining r below\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combining flattened open a above\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combining ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combining ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combining av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combining c cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combining insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combining eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combining g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combining small cap G\"},\"mathspeak\":{\"default\":\"combining small upper G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combining k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combining l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combining small cap L\"},\"mathspeak\":{\"default\":\"combining small upper L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combining small cap M\"},\"mathspeak\":{\"default\":\"combining small upper M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combining n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combining small cap N\"},\"mathspeak\":{\"default\":\"combining small upper N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combining small cap R\"},\"mathspeak\":{\"default\":\"combining small upper R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combining r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combining s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combining long s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combining z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superscript i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superscript n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subscript a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subscript e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subscript o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subscript x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subscript schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subscript h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subscript k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subscript l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subscript m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subscript n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subscript p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subscript s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subscript t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subscript j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"tortoise shell bracketed cap S\"},\"mathspeak\":{\"default\":\"tortoise shell bracketed upper S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"circled italic cap C\"},\"mathspeak\":{\"default\":\"circled italic upper C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"circled italic cap R\"},\"mathspeak\":{\"default\":\"circled italic upper R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"crossed negative squared cap P\"},\"mathspeak\":{\"default\":\"crossed negative squared upper P\"}}}]\n,\n\"en/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot overbar\"},\"mathspeak\":{\"default\":\"upper U double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot acute\"},\"mathspeak\":{\"default\":\"upper U double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot caron\"},\"mathspeak\":{\"default\":\"upper U double overdot caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot grave\"},\"mathspeak\":{\"default\":\"upper U double overdot grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot overbar\"},\"mathspeak\":{\"default\":\"upper A double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"cap A overdot overbar\"},\"mathspeak\":{\"default\":\"upper A overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek overbar\"},\"mathspeak\":{\"default\":\"upper O ogonek overbar\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"cap A ring acute\"},\"mathspeak\":{\"default\":\"upper A ring acute\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot overbar\"},\"mathspeak\":{\"default\":\"upper O double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde overbar\"},\"mathspeak\":{\"default\":\"upper O tilde overbar\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"cap O overdot overbar\"},\"mathspeak\":{\"default\":\"upper O overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla acute\"},\"mathspeak\":{\"default\":\"upper C cedilla acute\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"cap E overbar grave\"},\"mathspeak\":{\"default\":\"upper E overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"cap E overbar acute\"},\"mathspeak\":{\"default\":\"upper E overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla breve\"},\"mathspeak\":{\"default\":\"upper E cedilla breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot acute\"},\"mathspeak\":{\"default\":\"upper I double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"cap L underdot overbar\"},\"mathspeak\":{\"default\":\"upper L underdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde acute\"},\"mathspeak\":{\"default\":\"upper O tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"cap O tilde double overdot\"},\"mathspeak\":{\"default\":\"upper O tilde double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"cap O overbar grave\"},\"mathspeak\":{\"default\":\"upper O overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"cap O overbar acute\"},\"mathspeak\":{\"default\":\"upper O overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"cap R overbar underdot\"},\"mathspeak\":{\"default\":\"upper R overbar underdot\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"cap S acute overdot\"},\"mathspeak\":{\"default\":\"upper S acute overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"cap S caron overdot\"},\"mathspeak\":{\"default\":\"upper S caron overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"cap S underdot overdot\"},\"mathspeak\":{\"default\":\"upper S underdot overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"cap U tilde acute\"},\"mathspeak\":{\"default\":\"upper U tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar double overdot\"},\"mathspeak\":{\"default\":\"upper U overbar double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"cap A hat acute\"},\"mathspeak\":{\"default\":\"upper A hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"cap A hat grave\"},\"mathspeak\":{\"default\":\"upper A hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"cap A hat hook\"},\"mathspeak\":{\"default\":\"upper A hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"cap A hat tilde\"},\"mathspeak\":{\"default\":\"upper A hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"cap A hat underdot\"},\"mathspeak\":{\"default\":\"upper A hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"cap A breve acute\"},\"mathspeak\":{\"default\":\"upper A breve acute\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"cap A breve grave\"},\"mathspeak\":{\"default\":\"upper A breve grave\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"cap A breve hook\"},\"mathspeak\":{\"default\":\"upper A breve hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"cap A breve tilde\"},\"mathspeak\":{\"default\":\"upper A breve tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"cap A breve underdot\"},\"mathspeak\":{\"default\":\"upper A breve underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"cap E hat acute\"},\"mathspeak\":{\"default\":\"upper E hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"cap E hat grave\"},\"mathspeak\":{\"default\":\"upper E hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"cap E hat hook\"},\"mathspeak\":{\"default\":\"upper E hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"cap E hat tilde\"},\"mathspeak\":{\"default\":\"upper E hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"cap E hat underdot\"},\"mathspeak\":{\"default\":\"upper E hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"cap O hat acute\"},\"mathspeak\":{\"default\":\"upper O hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"cap O hat grave\"},\"mathspeak\":{\"default\":\"upper O hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"cap O hat hook\"},\"mathspeak\":{\"default\":\"upper O hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"cap O hat tilde\"},\"mathspeak\":{\"default\":\"upper O hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"cap O hat underdot\"},\"mathspeak\":{\"default\":\"upper O hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"cap O acute prime\"},\"mathspeak\":{\"default\":\"upper O acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"cap O grave prime\"},\"mathspeak\":{\"default\":\"upper O grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"cap O hook prime\"},\"mathspeak\":{\"default\":\"upper O hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"cap O tilde prime\"},\"mathspeak\":{\"default\":\"upper O tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"cap O underdot prime\"},\"mathspeak\":{\"default\":\"upper O underdot prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"cap U acute prime\"},\"mathspeak\":{\"default\":\"upper U acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"cap U grave prime\"},\"mathspeak\":{\"default\":\"upper U grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"cap U hook prime\"},\"mathspeak\":{\"default\":\"upper U hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"cap U tilde prime\"},\"mathspeak\":{\"default\":\"upper U tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"cap U underdot prime\"},\"mathspeak\":{\"default\":\"upper U underdot prime\"}}}]\n,\n\"en/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"cap A grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with grave\",\"brief\":\"mod above upper A with grave\",\"sbrief\":\"mod above upper A with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"cap A acute\"},\"mathspeak\":{\"default\":\"modifying above upper A with acute\",\"brief\":\"mod above upper A with acute\",\"sbrief\":\"mod above upper A with acute\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"cap A hat\"},\"mathspeak\":{\"default\":\"modifying above upper A with caret\",\"brief\":\"mod above upper A with caret\",\"sbrief\":\"mod above upper A with caret\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"cap A tilde\"},\"mathspeak\":{\"default\":\"upper A overtilde\",\"brief\":\"upper A overtilde\",\"sbrief\":\"upper A overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with double dot\",\"brief\":\"mod above upper A with double dot\",\"sbrief\":\"mod above upper A with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"cap A ring\"},\"mathspeak\":{\"default\":\"modifying above upper A with ring\",\"brief\":\"mod above upper A with ring\",\"sbrief\":\"mod above upper A with ring\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper C with cedilla\",\"brief\":\"mod above upper C with cedilla\",\"sbrief\":\"mod above upper C with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"cap E grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with grave\",\"brief\":\"mod above upper E with grave\",\"sbrief\":\"mod above upper E with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"cap E acute\"},\"mathspeak\":{\"default\":\"modifying above upper E with acute\",\"brief\":\"mod above upper E with acute\",\"sbrief\":\"mod above upper E with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"cap E hat\"},\"mathspeak\":{\"default\":\"modifying above upper E with caret\",\"brief\":\"mod above upper E with caret\",\"sbrief\":\"mod above upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"cap E double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with double dot\",\"brief\":\"mod above upper E with double dot\",\"sbrief\":\"mod above upper E with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"cap I grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with grave\",\"brief\":\"mod above upper I with grave\",\"sbrief\":\"mod above upper I with grave\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"cap I acute\"},\"mathspeak\":{\"default\":\"modifying above upper I with acute\",\"brief\":\"mod above upper I with acute\",\"sbrief\":\"mod above upper I with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"cap I hat\"},\"mathspeak\":{\"default\":\"modifying above upper I with caret\",\"brief\":\"mod above upper I with caret\",\"sbrief\":\"mod above upper I with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with double dot\",\"brief\":\"mod above upper I with double dot\",\"sbrief\":\"mod above upper I with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"cap N tilde\"},\"mathspeak\":{\"default\":\"upper N overtilde\",\"brief\":\"upper N overtilde\",\"sbrief\":\"upper N overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"cap O grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with grave\",\"brief\":\"mod above upper O with grave\",\"sbrief\":\"mod above upper O with grave\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"cap O acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with acute\",\"brief\":\"mod above upper O with acute\",\"sbrief\":\"mod above upper O with acute\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"cap O hat\"},\"mathspeak\":{\"default\":\"modifying above upper O with caret\",\"brief\":\"mod above upper O with caret\",\"sbrief\":\"mod above upper O with caret\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"cap O tilde\"},\"mathspeak\":{\"default\":\"upper O overtilde\",\"brief\":\"upper O overtilde\",\"sbrief\":\"upper O overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with double dot\",\"brief\":\"mod above upper O with double dot\",\"sbrief\":\"mod above upper O with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"cap U grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with grave\",\"brief\":\"mod above upper U with grave\",\"sbrief\":\"mod above upper U with grave\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"cap U acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with acute\",\"brief\":\"mod above upper U with acute\",\"sbrief\":\"mod above upper U with acute\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"cap U hat\"},\"mathspeak\":{\"default\":\"modifying above upper U with caret\",\"brief\":\"mod above upper U with caret\",\"sbrief\":\"mod above upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper U with double dot\",\"brief\":\"mod above upper U with double dot\",\"sbrief\":\"mod above upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"cap Y acute\"},\"mathspeak\":{\"default\":\"modifying above upper Y with acute\",\"brief\":\"mod above upper Y with acute\",\"sbrief\":\"mod above upper Y with acute\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"cap A overbar\"},\"mathspeak\":{\"default\":\"upper A overbar\",\"brief\":\"upper A overbar\",\"sbrief\":\"upper A overbar\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"cap A breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with breve\",\"brief\":\"mod above upper A with breve\",\"sbrief\":\"mod above upper A with breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"cap A ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper A with ogonek\",\"brief\":\"mod above upper A with ogonek\",\"sbrief\":\"mod above upper A with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"cap C acute\"},\"mathspeak\":{\"default\":\"modifying above upper C with acute\",\"brief\":\"mod above upper C with acute\",\"sbrief\":\"mod above upper C with acute\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"cap C hat\"},\"mathspeak\":{\"default\":\"modifying above upper C with caret\",\"brief\":\"mod above upper C with caret\",\"sbrief\":\"mod above upper C with caret\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"cap C overdot\"},\"mathspeak\":{\"default\":\"modifying above upper C with dot\",\"brief\":\"mod above upper C with dot\",\"sbrief\":\"mod above upper C with dot\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"cap C caron\"},\"mathspeak\":{\"default\":\"modifying above upper C with caron\",\"brief\":\"mod above upper C with caron\",\"sbrief\":\"mod above upper C with caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"cap D caron\"},\"mathspeak\":{\"default\":\"modifying above upper D with caron\",\"brief\":\"mod above upper D with caron\",\"sbrief\":\"mod above upper D with caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"cap E overbar\"},\"mathspeak\":{\"default\":\"upper E overbar\",\"brief\":\"upper E overbar\",\"sbrief\":\"upper E overbar\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"cap E breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with breve\",\"brief\":\"mod above upper E with breve\",\"sbrief\":\"mod above upper E with breve\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"cap E overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with dot\",\"brief\":\"mod above upper E with dot\",\"sbrief\":\"mod above upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"cap E ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper E with ogonek\",\"brief\":\"mod above upper E with ogonek\",\"sbrief\":\"mod above upper E with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"cap E caron\"},\"mathspeak\":{\"default\":\"modifying above upper E with caron\",\"brief\":\"mod above upper E with caron\",\"sbrief\":\"mod above upper E with caron\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"cap G hat\"},\"mathspeak\":{\"default\":\"modifying above upper G with caret\",\"brief\":\"mod above upper G with caret\",\"sbrief\":\"mod above upper G with caret\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"cap G breve\"},\"mathspeak\":{\"default\":\"modifying above upper G with breve\",\"brief\":\"mod above upper G with breve\",\"sbrief\":\"mod above upper G with breve\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"cap G overdot\"},\"mathspeak\":{\"default\":\"modifying above upper G with dot\",\"brief\":\"mod above upper G with dot\",\"sbrief\":\"mod above upper G with dot\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"cap G cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper G with cedilla\",\"brief\":\"mod above upper G with cedilla\",\"sbrief\":\"mod above upper G with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"cap H hat\"},\"mathspeak\":{\"default\":\"modifying above upper H with caret\",\"brief\":\"mod above upper H with caret\",\"sbrief\":\"mod above upper H with caret\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"cap I tilde\"},\"mathspeak\":{\"default\":\"upper I overtilde\",\"brief\":\"upper I overtilde\",\"sbrief\":\"upper I overtilde\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"cap I overbar\"},\"mathspeak\":{\"default\":\"upper I overbar\",\"brief\":\"upper I overbar\",\"sbrief\":\"upper I overbar\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"cap I breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with breve\",\"brief\":\"mod above upper I with breve\",\"sbrief\":\"mod above upper I with breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"cap I ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper I with ogonek\",\"brief\":\"mod above upper I with ogonek\",\"sbrief\":\"mod above upper I with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"cap I overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with dot\",\"brief\":\"mod above upper I with dot\",\"sbrief\":\"mod above upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"cap J hat\"},\"mathspeak\":{\"default\":\"modifying above upper J with caret\",\"brief\":\"mod above upper J with caret\",\"sbrief\":\"mod above upper J with caret\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"cap K cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper K with cedilla\",\"brief\":\"mod above upper K with cedilla\",\"sbrief\":\"mod above upper K with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"cap L acute\"},\"mathspeak\":{\"default\":\"modifying above upper L with acute\",\"brief\":\"mod above upper L with acute\",\"sbrief\":\"mod above upper L with acute\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"cap L cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper L with cedilla\",\"brief\":\"mod above upper L with cedilla\",\"sbrief\":\"mod above upper L with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"cap L caron\"},\"mathspeak\":{\"default\":\"modifying above upper L with caron\",\"brief\":\"mod above upper L with caron\",\"sbrief\":\"mod above upper L with caron\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"cap L middle dot\"},\"mathspeak\":{\"default\":\"modifying above upper L with middle dot\",\"brief\":\"mod above upper L with middle dot\",\"sbrief\":\"mod above upper L with middle dot\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"cap N acute\"},\"mathspeak\":{\"default\":\"modifying above upper N with acute\",\"brief\":\"mod above upper N with acute\",\"sbrief\":\"mod above upper N with acute\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"cap N cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper N with cedilla\",\"brief\":\"mod above upper N with cedilla\",\"sbrief\":\"mod above upper N with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"cap N caron\"},\"mathspeak\":{\"default\":\"modifying above upper N with caron\",\"brief\":\"mod above upper N with caron\",\"sbrief\":\"mod above upper N with caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"cap O overbar\"},\"mathspeak\":{\"default\":\"upper O overbar\",\"brief\":\"upper O overbar\",\"sbrief\":\"upper O overbar\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"cap O breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with breve\",\"brief\":\"mod above upper O with breve\",\"sbrief\":\"mod above upper O with breve\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"cap O double acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with double acute\",\"brief\":\"mod above upper O with double acute\",\"sbrief\":\"mod above upper O with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"cap R acute\"},\"mathspeak\":{\"default\":\"modifying above upper R with acute\",\"brief\":\"mod above upper R with acute\",\"sbrief\":\"mod above upper R with acute\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"cap R cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper R with cedilla\",\"brief\":\"mod above upper R with cedilla\",\"sbrief\":\"mod above upper R with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"cap R caron\"},\"mathspeak\":{\"default\":\"modifying above upper R with caron\",\"brief\":\"mod above upper R with caron\",\"sbrief\":\"mod above upper R with caron\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"cap S acute\"},\"mathspeak\":{\"default\":\"modifying above upper S with acute\",\"brief\":\"mod above upper S with acute\",\"sbrief\":\"mod above upper S with acute\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"cap S hat\"},\"mathspeak\":{\"default\":\"modifying above upper S with caret\",\"brief\":\"mod above upper S with caret\",\"sbrief\":\"mod above upper S with caret\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"cap S cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper S with cedilla\",\"brief\":\"mod above upper S with cedilla\",\"sbrief\":\"mod above upper S with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"cap S caron\"},\"mathspeak\":{\"default\":\"modifying above upper S with caron\",\"brief\":\"mod above upper S with caron\",\"sbrief\":\"mod above upper S with caron\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"cap T cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper T with cedilla\",\"brief\":\"mod above upper T with cedilla\",\"sbrief\":\"mod above upper T with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"cap T caron\"},\"mathspeak\":{\"default\":\"modifying above upper T with caron\",\"brief\":\"mod above upper T with caron\",\"sbrief\":\"mod above upper T with caron\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"cap U tilde\"},\"mathspeak\":{\"default\":\"upper U overtilde\",\"brief\":\"upper U overtilde\",\"sbrief\":\"upper U overtilde\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar\"},\"mathspeak\":{\"default\":\"upper U overbar\",\"brief\":\"upper U overbar\",\"sbrief\":\"upper U overbar\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"cap U breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with breve\",\"brief\":\"mod above upper U with breve\",\"sbrief\":\"mod above upper U with breve\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"cap U ring\"},\"mathspeak\":{\"default\":\"modifying above upper U with ring\",\"brief\":\"mod above upper U with ring\",\"sbrief\":\"mod above upper U with ring\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"cap U double acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with double acute\",\"brief\":\"mod above upper U with double acute\",\"sbrief\":\"mod above upper U with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"cap U ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper U with ogonek\",\"brief\":\"mod above upper U with ogonek\",\"sbrief\":\"mod above upper U with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"cap W hat\"},\"mathspeak\":{\"default\":\"modifying above upper W with caret\",\"brief\":\"mod above upper W with caret\",\"sbrief\":\"mod above upper W with caret\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"cap Y hat\"},\"mathspeak\":{\"default\":\"modifying above upper Y with caret\",\"brief\":\"mod above upper Y with caret\",\"sbrief\":\"mod above upper Y with caret\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"cap Y double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with double dot\",\"brief\":\"mod above upper Y with double dot\",\"sbrief\":\"mod above upper Y with double dot\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"cap Z acute\"},\"mathspeak\":{\"default\":\"modifying above upper Z with acute\",\"brief\":\"mod above upper Z with acute\",\"sbrief\":\"mod above upper Z with acute\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"cap Z overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Z with dot\",\"brief\":\"mod above upper Z with dot\",\"sbrief\":\"mod above upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"cap Z caron\"},\"mathspeak\":{\"default\":\"modifying above upper Z with caron\",\"brief\":\"mod above upper Z with caron\",\"sbrief\":\"mod above upper Z with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"cap A caron\"},\"mathspeak\":{\"default\":\"modifying above upper A with caron\",\"brief\":\"mod above upper A with caron\",\"sbrief\":\"mod above upper A with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"cap I caron\"},\"mathspeak\":{\"default\":\"modifying above upper I with caron\",\"brief\":\"mod above upper I with caron\",\"sbrief\":\"mod above upper I with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"cap O caron\"},\"mathspeak\":{\"default\":\"modifying above upper O with caron\",\"brief\":\"mod above upper O with caron\",\"sbrief\":\"mod above upper O with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"cap U caron\"},\"mathspeak\":{\"default\":\"modifying above upper U with caron\",\"brief\":\"mod above upper U with caron\",\"sbrief\":\"mod above upper U with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"cap G caron\"},\"mathspeak\":{\"default\":\"modifying above upper G with caron\",\"brief\":\"mod above upper G with caron\",\"sbrief\":\"mod above upper G with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"cap K caron\"},\"mathspeak\":{\"default\":\"modifying above upper K with caron\",\"brief\":\"mod above upper K with caron\",\"sbrief\":\"mod above upper K with caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper O with ogonek\",\"brief\":\"mod above upper O with ogonek\",\"sbrief\":\"mod above upper O with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"cap G acute\"},\"mathspeak\":{\"default\":\"modifying above upper G with acute\",\"brief\":\"mod above upper G with acute\",\"sbrief\":\"mod above upper G with acute\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"cap N grave\"},\"mathspeak\":{\"default\":\"modifying above upper N with grave\",\"brief\":\"mod above upper N with grave\",\"sbrief\":\"mod above upper N with grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"cap A double grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with double grave\",\"brief\":\"mod above upper A with double grave\",\"sbrief\":\"mod above upper A with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"cap A inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with inverted breve\",\"brief\":\"mod above upper A with inverted breve\",\"sbrief\":\"mod above upper A with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"cap E double grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with double grave\",\"brief\":\"mod above upper E with double grave\",\"sbrief\":\"mod above upper E with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"cap E inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with inverted breve\",\"brief\":\"mod above upper E with inverted breve\",\"sbrief\":\"mod above upper E with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"cap I double grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with double grave\",\"brief\":\"mod above upper I with double grave\",\"sbrief\":\"mod above upper I with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"cap I inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with inverted breve\",\"brief\":\"mod above upper I with inverted breve\",\"sbrief\":\"mod above upper I with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"cap O double grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with double grave\",\"brief\":\"mod above upper O with double grave\",\"sbrief\":\"mod above upper O with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"cap O inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with inverted breve\",\"brief\":\"mod above upper O with inverted breve\",\"sbrief\":\"mod above upper O with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"cap R double grave\"},\"mathspeak\":{\"default\":\"modifying above upper R with double grave\",\"brief\":\"mod above upper R with double grave\",\"sbrief\":\"mod above upper R with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"cap R inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper R with inverted breve\",\"brief\":\"mod above upper R with inverted breve\",\"sbrief\":\"mod above upper R with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"cap U double grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with double grave\",\"brief\":\"mod above upper U with double grave\",\"sbrief\":\"mod above upper U with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"cap U inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with inverted breve\",\"brief\":\"mod above upper U with inverted breve\",\"sbrief\":\"mod above upper U with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"cap S comma below\"},\"mathspeak\":{\"default\":\"modifying below upper S with comma below\",\"brief\":\"mod below upper S with comma below\",\"sbrief\":\"mod below upper S with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"cap T comma below\"},\"mathspeak\":{\"default\":\"modifying below upper T with comma below\",\"brief\":\"mod below upper T with comma below\",\"sbrief\":\"mod below upper T with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"cap H caron\"},\"mathspeak\":{\"default\":\"modifying above upper H with caron\",\"brief\":\"mod above upper H with caron\",\"sbrief\":\"mod above upper H with caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"cap A overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with dot\",\"brief\":\"mod above upper A with dot\",\"sbrief\":\"mod above upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper E with cedilla\",\"brief\":\"mod above upper E with cedilla\",\"sbrief\":\"mod above upper E with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"cap O overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with dot\",\"brief\":\"mod above upper O with dot\",\"sbrief\":\"mod above upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"cap Y overbar\"},\"mathspeak\":{\"default\":\"upper Y overbar\",\"brief\":\"upper Y overbar\",\"sbrief\":\"upper Y overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"cap A ring below\"},\"mathspeak\":{\"default\":\"modifying below upper A with ring below\",\"brief\":\"mod below upper A with ring below\",\"sbrief\":\"mod below upper A with ring below\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"cap B overdot\"},\"mathspeak\":{\"default\":\"modifying above upper B with dot\",\"brief\":\"mod above upper B with dot\",\"sbrief\":\"mod above upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"cap B underdot\"},\"mathspeak\":{\"default\":\"modifying below upper B with dot\",\"brief\":\"mod below upper B with dot\",\"sbrief\":\"mod below upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"cap B underbar\"},\"mathspeak\":{\"default\":\"upper B underbar\",\"brief\":\"upper B underbar\",\"sbrief\":\"upper B underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"cap D overdot\"},\"mathspeak\":{\"default\":\"modifying above upper D with dot\",\"brief\":\"mod above upper D with dot\",\"sbrief\":\"mod above upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"cap D underdot\"},\"mathspeak\":{\"default\":\"modifying below upper D with dot\",\"brief\":\"mod below upper D with dot\",\"sbrief\":\"mod below upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"cap D underbar\"},\"mathspeak\":{\"default\":\"upper D underbar\",\"brief\":\"upper D underbar\",\"sbrief\":\"upper D underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"cap D cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper D with cedilla\",\"brief\":\"mod above upper D with cedilla\",\"sbrief\":\"mod above upper D with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"cap D underhat\"},\"mathspeak\":{\"default\":\"modifying below upper D with caret\",\"brief\":\"mod below upper D with caret\",\"sbrief\":\"mod below upper D with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"cap E underhat\"},\"mathspeak\":{\"default\":\"modifying below upper E with caret\",\"brief\":\"mod below upper E with caret\",\"sbrief\":\"mod below upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"cap E tilde below\"},\"mathspeak\":{\"default\":\"upper E undertilde\",\"brief\":\"upper E undertilde\",\"sbrief\":\"upper E undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"cap F overdot\"},\"mathspeak\":{\"default\":\"modifying above upper F with dot\",\"brief\":\"mod above upper F with dot\",\"sbrief\":\"mod above upper F with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"cap G overbar\"},\"mathspeak\":{\"default\":\"upper G overbar\",\"brief\":\"upper G overbar\",\"sbrief\":\"upper G overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"cap H overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with dot\",\"brief\":\"mod above upper H with dot\",\"sbrief\":\"mod above upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"cap H underdot\"},\"mathspeak\":{\"default\":\"modifying below upper H with dot\",\"brief\":\"mod below upper H with dot\",\"sbrief\":\"mod below upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"cap H double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with double dot\",\"brief\":\"mod above upper H with double dot\",\"sbrief\":\"mod above upper H with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"cap H cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper H with cedilla\",\"brief\":\"mod above upper H with cedilla\",\"sbrief\":\"mod above upper H with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"cap H breve below\"},\"mathspeak\":{\"default\":\"modifying below upper H with breve below\",\"brief\":\"mod below upper H with breve below\",\"sbrief\":\"mod below upper H with breve below\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"cap I tilde below\"},\"mathspeak\":{\"default\":\"upper I undertilde\",\"brief\":\"upper I undertilde\",\"sbrief\":\"upper I undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"cap K acute\"},\"mathspeak\":{\"default\":\"modifying above upper K with acute\",\"brief\":\"mod above upper K with acute\",\"sbrief\":\"mod above upper K with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"cap K underdot\"},\"mathspeak\":{\"default\":\"modifying below upper K with dot\",\"brief\":\"mod below upper K with dot\",\"sbrief\":\"mod below upper K with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"cap K underbar\"},\"mathspeak\":{\"default\":\"upper K underbar\",\"brief\":\"upper K underbar\",\"sbrief\":\"upper K underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"cap L underdot\"},\"mathspeak\":{\"default\":\"modifying below upper L with dot\",\"brief\":\"mod below upper L with dot\",\"sbrief\":\"mod below upper L with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"cap L underbar\"},\"mathspeak\":{\"default\":\"upper L underbar\",\"brief\":\"upper L underbar\",\"sbrief\":\"upper L underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"cap L underhat\"},\"mathspeak\":{\"default\":\"modifying below upper L with caret\",\"brief\":\"mod below upper L with caret\",\"sbrief\":\"mod below upper L with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"cap M acute\"},\"mathspeak\":{\"default\":\"modifying above upper M with acute\",\"brief\":\"mod above upper M with acute\",\"sbrief\":\"mod above upper M with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"cap M overdot\"},\"mathspeak\":{\"default\":\"modifying above upper M with dot\",\"brief\":\"mod above upper M with dot\",\"sbrief\":\"mod above upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"cap M underdot\"},\"mathspeak\":{\"default\":\"modifying below upper M with dot\",\"brief\":\"mod below upper M with dot\",\"sbrief\":\"mod below upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"cap N overdot\"},\"mathspeak\":{\"default\":\"modifying above upper N with dot\",\"brief\":\"mod above upper N with dot\",\"sbrief\":\"mod above upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"cap N underdot\"},\"mathspeak\":{\"default\":\"modifying below upper N with dot\",\"brief\":\"mod below upper N with dot\",\"sbrief\":\"mod below upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"cap N underbar\"},\"mathspeak\":{\"default\":\"upper N underbar\",\"brief\":\"upper N underbar\",\"sbrief\":\"upper N underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"cap N underhat\"},\"mathspeak\":{\"default\":\"modifying below upper N with caret\",\"brief\":\"mod below upper N with caret\",\"sbrief\":\"mod below upper N with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"cap P acute\"},\"mathspeak\":{\"default\":\"modifying above upper P with acute\",\"brief\":\"mod above upper P with acute\",\"sbrief\":\"mod above upper P with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"cap P overdot\"},\"mathspeak\":{\"default\":\"modifying above upper P with dot\",\"brief\":\"mod above upper P with dot\",\"sbrief\":\"mod above upper P with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"cap R overdot\"},\"mathspeak\":{\"default\":\"modifying above upper R with dot\",\"brief\":\"mod above upper R with dot\",\"sbrief\":\"mod above upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"cap R underdot\"},\"mathspeak\":{\"default\":\"modifying below upper R with dot\",\"brief\":\"mod below upper R with dot\",\"sbrief\":\"mod below upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"cap R underbar\"},\"mathspeak\":{\"default\":\"upper R underbar\",\"brief\":\"upper R underbar\",\"sbrief\":\"upper R underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"cap S overdot\"},\"mathspeak\":{\"default\":\"modifying above upper S with dot\",\"brief\":\"mod above upper S with dot\",\"sbrief\":\"mod above upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"cap S underdot\"},\"mathspeak\":{\"default\":\"modifying below upper S with dot\",\"brief\":\"mod below upper S with dot\",\"sbrief\":\"mod below upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"cap T overdot\"},\"mathspeak\":{\"default\":\"modifying above upper T with dot\",\"brief\":\"mod above upper T with dot\",\"sbrief\":\"mod above upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"cap T underdot\"},\"mathspeak\":{\"default\":\"modifying below upper T with dot\",\"brief\":\"mod below upper T with dot\",\"sbrief\":\"mod below upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"cap T underbar\"},\"mathspeak\":{\"default\":\"upper T underbar\",\"brief\":\"upper T underbar\",\"sbrief\":\"upper T underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"cap T underhat\"},\"mathspeak\":{\"default\":\"modifying below upper T with caret\",\"brief\":\"mod below upper T with caret\",\"sbrief\":\"mod below upper T with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"cap U double underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with double dot\",\"brief\":\"mod below upper U with double dot\",\"sbrief\":\"mod below upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"cap U tilde below\"},\"mathspeak\":{\"default\":\"upper U undertilde\",\"brief\":\"upper U undertilde\",\"sbrief\":\"upper U undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"cap U underhat\"},\"mathspeak\":{\"default\":\"modifying below upper U with caret\",\"brief\":\"mod below upper U with caret\",\"sbrief\":\"mod below upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"cap V tilde\"},\"mathspeak\":{\"default\":\"upper V overtilde\",\"brief\":\"upper V overtilde\",\"sbrief\":\"upper V overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"cap V underdot\"},\"mathspeak\":{\"default\":\"modifying below upper V with dot\",\"brief\":\"mod below upper V with dot\",\"sbrief\":\"mod below upper V with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"cap W grave\"},\"mathspeak\":{\"default\":\"modifying above upper W with grave\",\"brief\":\"mod above upper W with grave\",\"sbrief\":\"mod above upper W with grave\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"cap W acute\"},\"mathspeak\":{\"default\":\"modifying above upper W with acute\",\"brief\":\"mod above upper W with acute\",\"sbrief\":\"mod above upper W with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"cap W double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with double dot\",\"brief\":\"mod above upper W with double dot\",\"sbrief\":\"mod above upper W with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"cap W overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with dot\",\"brief\":\"mod above upper W with dot\",\"sbrief\":\"mod above upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"cap W underdot\"},\"mathspeak\":{\"default\":\"modifying below upper W with dot\",\"brief\":\"mod below upper W with dot\",\"sbrief\":\"mod below upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"cap X overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with dot\",\"brief\":\"mod above upper X with dot\",\"sbrief\":\"mod above upper X with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"cap X double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with double dot\",\"brief\":\"mod above upper X with double dot\",\"sbrief\":\"mod above upper X with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"cap Y overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with dot\",\"brief\":\"mod above upper Y with dot\",\"sbrief\":\"mod above upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"cap Z circumflex\"},\"mathspeak\":{\"default\":\"modifying above upper Z with circumflex\",\"brief\":\"mod above upper Z with circumflex\",\"sbrief\":\"mod above upper Z with circumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"cap Z underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Z with dot\",\"brief\":\"mod below upper Z with dot\",\"sbrief\":\"mod below upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"cap Z underbar\"},\"mathspeak\":{\"default\":\"upper Z underbar\",\"brief\":\"upper Z underbar\",\"sbrief\":\"upper Z underbar\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"cap A underdot\"},\"mathspeak\":{\"default\":\"modifying below upper A with dot\",\"brief\":\"mod below upper A with dot\",\"sbrief\":\"mod below upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"cap A hook\"},\"mathspeak\":{\"default\":\"modifying above upper A with hook\",\"brief\":\"mod above upper A with hook\",\"sbrief\":\"mod above upper A with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"cap E underdot\"},\"mathspeak\":{\"default\":\"modifying below upper E with dot\",\"brief\":\"mod below upper E with dot\",\"sbrief\":\"mod below upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"cap E hook\"},\"mathspeak\":{\"default\":\"modifying above upper E with hook\",\"brief\":\"mod above upper E with hook\",\"sbrief\":\"mod above upper E with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"cap E tilde\"},\"mathspeak\":{\"default\":\"upper E overtilde\",\"brief\":\"upper E overtilde\",\"sbrief\":\"upper E overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"cap I hook\"},\"mathspeak\":{\"default\":\"modifying above upper I with hook\",\"brief\":\"mod above upper I with hook\",\"sbrief\":\"mod above upper I with hook\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"cap I underdot\"},\"mathspeak\":{\"default\":\"modifying below upper I with dot\",\"brief\":\"mod below upper I with dot\",\"sbrief\":\"mod below upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"cap O underdot\"},\"mathspeak\":{\"default\":\"modifying below upper O with dot\",\"brief\":\"mod below upper O with dot\",\"sbrief\":\"mod below upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"cap O hook\"},\"mathspeak\":{\"default\":\"modifying above upper O with hook\",\"brief\":\"mod above upper O with hook\",\"sbrief\":\"mod above upper O with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"cap U underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with dot\",\"brief\":\"mod below upper U with dot\",\"sbrief\":\"mod below upper U with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"cap U hook\"},\"mathspeak\":{\"default\":\"modifying above upper U with hook\",\"brief\":\"mod above upper U with hook\",\"sbrief\":\"mod above upper U with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"cap Y grave\"},\"mathspeak\":{\"default\":\"modifying above upper Y with grave\",\"brief\":\"mod above upper Y with grave\",\"sbrief\":\"mod above upper Y with grave\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"cap Y underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Y with dot\",\"brief\":\"mod below upper Y with dot\",\"sbrief\":\"mod below upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"cap Y hook\"},\"mathspeak\":{\"default\":\"modifying above upper Y with hook\",\"brief\":\"mod above upper Y with hook\",\"sbrief\":\"mod above upper Y with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"cap Y tilde\"},\"mathspeak\":{\"default\":\"upper Y overtilde\",\"brief\":\"upper Y overtilde\",\"sbrief\":\"upper Y overtilde\"}}}]\n,\n\"en/symbols/math_angles.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with arc\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with downwards zigzag arrow\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three dimensional angle\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle opening left\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle variant with square\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured right angle with dot\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with s inside\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"acute angle\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening left\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening up\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned angle\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with underbar\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle with underbar\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening up\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening down\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and right\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and left\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and right\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and left\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"key\":\"29AF\"}]\n,\n\"en/symbols/math_arrows.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow\"},\"mathspeak\":{\"sbrief\":\"L R arrow\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow\"},\"mathspeak\":{\"sbrief\":\"U D arrow\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow\"},\"mathspeak\":{\"sbrief\":\"U L arrow\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right arrow\"},\"mathspeak\":{\"sbrief\":\"U R arrow\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right arrow\"},\"mathspeak\":{\"sbrief\":\"D R arrow\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left arrow\"},\"mathspeak\":{\"sbrief\":\"D L arrow\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with stroke\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with stroke\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left wave arrow\"},\"mathspeak\":{\"sbrief\":\"L wave arrow\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right wave arrow\"},\"mathspeak\":{\"sbrief\":\"R wave arrow\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed left arrow\"},\"mathspeak\":{\"sbrief\":\"two headed L arrow\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed up arrow\"},\"mathspeak\":{\"sbrief\":\"two headed U arrow\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed down arrow\"},\"mathspeak\":{\"sbrief\":\"two headed D arrow\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"U arrow from bar\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow from bar\"},\"mathspeak\":{\"sbrief\":\"D arrow from bar\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow with base\"},\"mathspeak\":{\"sbrief\":\"U D arrow with base\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"L arrow with hook\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with hook\"},\"mathspeak\":{\"sbrief\":\"R arrow with hook\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with loop\"},\"mathspeak\":{\"sbrief\":\"L arrow with loop\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with loop\"},\"mathspeak\":{\"sbrief\":\"R arrow with loop\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right wave arrow\"},\"mathspeak\":{\"sbrief\":\"L R wave arrow\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with stroke\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down zigzag arrow\"},\"mathspeak\":{\"sbrief\":\"d zigzag arrow\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip left\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip right\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip left\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip right\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with corner down\"},\"mathspeak\":{\"sbrief\":\"R arrow with corner down\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with corner left\"},\"mathspeak\":{\"sbrief\":\"D arrow with corner left\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise top semicircle arrow\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise top semicircle arrow\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow to long bar\"},\"mathspeak\":{\"sbrief\":\"U L arrow to long bar\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar over right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar over R arrow to bar\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise open circle arrow\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise open circle arrow\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow over left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow over L arrow\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow left of down arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow L of D arrow\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow over right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow over R arrow\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left paired arrows\"},\"mathspeak\":{\"sbrief\":\"L paired arrows\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up paired arrows\"},\"mathspeak\":{\"sbrief\":\"U paired arrows\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right paired arrows\"},\"mathspeak\":{\"sbrief\":\"R paired arrows\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down paired arrows\"},\"mathspeak\":{\"sbrief\":\"D paired arrows\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L double arrow with stroke\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R double arrow with stroke\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R double arrow with stroke\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow\"},\"mathspeak\":{\"sbrief\":\"L double arrow\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up double arrow\"},\"mathspeak\":{\"sbrief\":\"U double arrow\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow\"},\"mathspeak\":{\"sbrief\":\"R double arrow\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down double arrow\"},\"mathspeak\":{\"sbrief\":\"d double arrow\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow\"},\"mathspeak\":{\"sbrief\":\"L R double arrow\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down double arrow\"},\"mathspeak\":{\"sbrief\":\"U d double arrow\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left double arrow\"},\"mathspeak\":{\"sbrief\":\"U L double arrow\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right double arrow\"},\"mathspeak\":{\"sbrief\":\"U R double arrow\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right double arrow\"},\"mathspeak\":{\"sbrief\":\"d R double arrow\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left double arrow\"},\"mathspeak\":{\"sbrief\":\"d L double arrow\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left triple arrow\"},\"mathspeak\":{\"sbrief\":\"L triple arrow\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right triple arrow\"},\"mathspeak\":{\"sbrief\":\"r triple arrow\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"L squiggle arrow\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"r squiggle arrow\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with double stroke\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"D arrow with double stroke\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"L dasheD arrow\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"U dasheD arrow\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"r dasheD arrow\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"d dasheD arrow\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"R arrow to bar\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left arrow\"},\"mathspeak\":{\"sbrief\":\"white L arrow\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow\"},\"mathspeak\":{\"sbrief\":\"white U arrow\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow\"},\"mathspeak\":{\"sbrief\":\"white R arrow\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down arrow\"},\"mathspeak\":{\"sbrief\":\"white D arrow\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow from bar\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with horizontal bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with horizontal bar\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with vertical bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with vertical bar\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow\"},\"mathspeak\":{\"sbrief\":\"white double U arrow\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white double U arrow on pedestal\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow from wall\"},\"mathspeak\":{\"sbrief\":\"white R arrow from wall\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west arrow to corner\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east arrow to corner\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down white arrow\"},\"mathspeak\":{\"sbrief\":\"U d white arrow\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"R arrow with small circle\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow left of up arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow l of U arrow\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three right arrows\"},\"mathspeak\":{\"sbrief\":\"three R arrows\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with vertical stroke\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with vertical stroke\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with vertical stroke\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with double vertical stroke\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with double vertical stroke\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with double vertical stroke\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left open headed arrow\"},\"mathspeak\":{\"sbrief\":\"l open headed arrow\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"r open headed arrow\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"L R open headed arrow\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"electric arrow\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead\"},\"mathspeak\":{\"sbrief\":\"U arrowhead\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrowhead\"},\"mathspeak\":{\"sbrief\":\"D arrowhead\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead between two horizontal bars\",\"alternative\":\"enter key\"},\"mathspeak\":{\"sbrief\":\"U arrowhead between two horizontal bars\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken circle with northwest arrow\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wide headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wide headed R arrow\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy d R arrow\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy R arrow\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy U R arrow\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"drafting point right arrow\"},\"mathspeak\":{\"sbrief\":\"drafting point R arrow\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy round tipped right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy round tipped R arrow\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"triangle headed R arrow\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy triangle headed R arrow\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"dashed triangle headed R arrow\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy dashed triangle headed R arrow\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrow\"},\"mathspeak\":{\"sbrief\":\"black R arrow\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d top lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d top lighted R arrowhead\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d bottom lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d bottom lighted R arrowhead\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrowhead\"},\"mathspeak\":{\"sbrief\":\"black R arrowhead\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved down and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved d and R arrow\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved up and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved U and R arrow\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"squat black right arrow\"},\"mathspeak\":{\"sbrief\":\"squat black R arrow\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy concave pointed black right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy concave pointed black R arrow\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"right shaded white R arrow\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"left shaded white R arrow\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"back tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"back tilted shadowed white R arrow\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"front tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"front tilted shadowed white R arrow\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy lower right shadowed white R arrow\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy upper right shadowed white R arrow\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched lower right shadowed white R arrow\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched upper right shadowed white R arrow\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled heavy white right arrow\"},\"mathspeak\":{\"sbrief\":\"circled heavy white R arrow\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"white feathered R arrow\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered d R arrow\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered R arrow\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered U R arrow\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered d R arrow\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered R arrow\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered U R arrow\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop barbed right arrow\"},\"mathspeak\":{\"sbrief\":\"teardrop barbed R arrow\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop shanked right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy teardrop shanked R arrow\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"wedge tailed R arrow\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wedge tailed R arrow\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open outlined right arrow\"},\"mathspeak\":{\"sbrief\":\"open outlined R arrow\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"U quadruple arrow\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"d quadrule arrow\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise gapped circle arrow\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise gapped circle arrow\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"R arrow with circled plus\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow\"},\"mathspeak\":{\"sbrief\":\"long L arrow\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow\"},\"mathspeak\":{\"sbrief\":\"long R arrow\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right arrow\"},\"mathspeak\":{\"sbrief\":\"long L R arrow\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow\"},\"mathspeak\":{\"sbrief\":\"long l double arrow\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow\"},\"mathspeak\":{\"sbrief\":\"long R double arrow\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right double arrow\"},\"mathspeak\":{\"sbrief\":\"long L R double arrow\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long L arrow from bar\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R arrow from bar\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long l double arrow from bar\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R double arrow from bar\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long r squiggle arrow\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with vertical stroke\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with double vertical stroke\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L arrow with vertical stroke\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double R arrow with vertical stroke\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L R arrow with vertical stroke\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow from bar\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double L arrow from bar\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double R arrow from bar\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow down with horizontal stroke\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow with horizontal stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with horizontal stroke\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up triple arrow\"},\"mathspeak\":{\"sbrief\":\"U triple arrow\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down triple arrow\"},\"mathspeak\":{\"sbrief\":\"d triple arrow\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double dash arrow\"},\"mathspeak\":{\"sbrief\":\"l double dash arrow\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double dash arrow\"},\"mathspeak\":{\"sbrief\":\"R double dash arrow\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l triple dash arrow\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r triple dash arrow\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r two headed triple dash arrow\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"R arrow with dotted stem\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow to bar\"},\"mathspeak\":{\"sbrief\":\"U arrow to bar\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow to bar\"},\"mathspeak\":{\"sbrief\":\"D arrow to bar\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with vertical stroke\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with double vertical stroke\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with vertical stroke\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with double vertical stroke\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow tail\"},\"mathspeak\":{\"sbrief\":\"L arrow tail\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow tail\"},\"mathspeak\":{\"sbrief\":\"R arrow tail\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double arrow tail\"},\"mathspeak\":{\"sbrief\":\"l double arrow tail\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow tail\"},\"mathspeak\":{\"sbrief\":\"R double arrow tail\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow to black diamond\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow to black diamond\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar to black diamond\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar to black diamond\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west and south east arrow\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east and south west arrow\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow with hook\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow with hook\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow with hook\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow with hook\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow and north east arrow\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow and south east arrow\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow and south west arrow\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow and north west arrow\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow crossing north east arrow\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing south east arrow\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing north east arrow\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing south east arrow\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing north west arrow\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow crossing north east arrow\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly right\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving up\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving down\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving left\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving right\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right side arc clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"r side arc clockwise arrow\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left side arc anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"l side arc anticlockwise arrow\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom arc anticlockwise arrow\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc clockwise arrow with minus\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow with plus\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right semicircular clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d r semicircular clockwise arrow\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down left semicircular anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d l semicircular anticlockwise arrow\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise closed circle arrow\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise closed circle arrow\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above short left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow above short L arrow\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above short right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow above short R arrow\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short right arrow above left arrow\"},\"mathspeak\":{\"sbrief\":\"short R arrow above L arrow\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"R arrow with plus below\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"L arrow with plus below\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through x\"},\"mathspeak\":{\"sbrief\":\"R arrow through x\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow through small circle\"},\"mathspeak\":{\"sbrief\":\"L R arrow through small circle\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up two headed arrow from small circle\"},\"mathspeak\":{\"sbrief\":\"U two headed arrow from small circle\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with rounded head\"},\"mathspeak\":{\"sbrief\":\"R double arrow with rounded head\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above right arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above R arrow\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above R arrow\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above tilde operator\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above tilde operator\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above almost equals\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above left arrow\"},\"mathspeak\":{\"sbrief\":\"less than above L arrow\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through less than\"},\"mathspeak\":{\"sbrief\":\"L arrow through less than\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above right arrow\"},\"mathspeak\":{\"sbrief\":\"greater than above R arrow\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above right arrow\"},\"mathspeak\":{\"sbrief\":\"subset above R arrow\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through subset\"},\"mathspeak\":{\"sbrief\":\"L arrow through subset\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above left arrow\"},\"mathspeak\":{\"sbrief\":\"suerset above L arrow\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with right arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with R arrow above\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with left arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with L arrow above\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow through circle\"},\"mathspeak\":{\"sbrief\":\"U arrow through circle\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black diamond with down arrow\"},\"mathspeak\":{\"sbrief\":\"black diamond with D arrow\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"white circle with D arrow\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"black circle with D arrow\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"integral with L arrow with hook\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east white arrow\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west white arrow\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east white arrow\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west white arrow\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right white arrow\"},\"mathspeak\":{\"sbrief\":\"L R white arrow\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left black arrow\"},\"mathspeak\":{\"sbrief\":\"L black arrow\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up black arrow\"},\"mathspeak\":{\"sbrief\":\"U black arrow\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down black arrow\"},\"mathspeak\":{\"sbrief\":\"D black arrow\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east black arrow\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west black arrow\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east black arrow\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west black arrow\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right black arrow\"},\"mathspeak\":{\"sbrief\":\"L R black arrow\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down black arrow\"},\"mathspeak\":{\"sbrief\":\"U D black arrow\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip down\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip up\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip down\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip up\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"L arrow with small circle\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three left arrows\"},\"mathspeak\":{\"sbrief\":\"three L arrows\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"L arrow with circled plus\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long l squiggle arrow\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with vertical stroke\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with double vertical stroke\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow from bar\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow from bar\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l two headed triple dash arrow\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"L arrow with dotted stem\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with vertical stroke\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with double vertical stroke\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with vertical stroke\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with double vertical stroke\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through x\"},\"mathspeak\":{\"sbrief\":\"L arrow through x\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly left\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above left arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above L arrow\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above L arrow\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse almost equals\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through greater than\"},\"mathspeak\":{\"sbrief\":\"R arrow through greater than\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through superset\"},\"mathspeak\":{\"sbrief\":\"R arrow through superset\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"l quadrule arrow\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"r quadrule arrow\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above R arrow\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse almost equals\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above L arrow\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above almost equals\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse tilde operator\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse tilde operator\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth left arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth L arrow\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth up arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth U arrow\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth right arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth R arrow\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth down arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth D arrow\"}},\"key\":\"FFEC\"}]\n,\n\"en/symbols/math_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"script cap P\"},\"mathspeak\":{\"default\":\"script upper P\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck pi\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck gamma\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Gamma\"},\"mathspeak\":{\"default\":\"double struck upper Gamma\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Pi\"},\"mathspeak\":{\"default\":\"double struck upper Pi\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double struck sum\"},\"mathspeak\":{\"default\":\"double struck sigma summation\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck italic cap D\"},\"mathspeak\":{\"default\":\"double struck italic upper D\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic d\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic e\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic i\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic j\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless j\"}},\"key\":\"1D6A5\"}]\n,\n\"en/symbols/math_delimiters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left parenthesis\"},\"mathspeak\":{\"brief\":\"left p'ren\",\"sbrief\":\"L p'ren\"},\"clearspeak\":{\"default\":\"open paren\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right parenthesis\"},\"mathspeak\":{\"brief\":\"right p'ren\",\"sbrief\":\"R p'ren\"},\"clearspeak\":{\"default\":\"close paren\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket\"},\"mathspeak\":{\"brief\":\"left brack\",\"sbrief\":\"L brack\"},\"clearspeak\":{\"default\":\"open bracket\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket\"},\"mathspeak\":{\"brief\":\"right brack\",\"sbrief\":\"R brack\"},\"clearspeak\":{\"default\":\"close bracket\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left brace\"},\"mathspeak\":{\"sbrief\":\"L brace\"},\"clearspeak\":{\"default\":\"open brace\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right brace\"},\"mathspeak\":{\"sbrief\":\"R brace\"},\"clearspeak\":{\"default\":\"close brace\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with quill\"},\"mathspeak\":{\"brief\":\"left brack with quill\",\"sbrief\":\"L brack with quill\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with quill\"},\"mathspeak\":{\"brief\":\"right brack with quill\",\"sbrief\":\"R brack with quill\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left ceiling\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right ceiling\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left floor\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right floor\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right crop\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left crop\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right crop\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left crop\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left corner\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right corner\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left corner\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right corner\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top half integral\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom half integral\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing angle bracket\",\"physics\":\"bra\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing angle bracket\",\"physics\":\"ket\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"left p'ren upper hook\",\"sbrief\":\"L p'ren upper hook\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis extension\"},\"mathspeak\":{\"brief\":\"left p'ren extension\",\"sbrief\":\"L p'ren extension\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"left p'ren lower hook\",\"sbrief\":\"L p'ren lower hook\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"right p'ren upper hook\",\"sbrief\":\"R p'ren upper hook\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis extension\"},\"mathspeak\":{\"brief\":\"right p'ren extension\",\"sbrief\":\"R p'ren extension\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"right p'ren lower hook\",\"sbrief\":\"R p'ren lower hook\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket upper corner\"},\"mathspeak\":{\"brief\":\"left brack upper corner\",\"sbrief\":\"L brack upper corner\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket extension\"},\"mathspeak\":{\"brief\":\"left brack extension\",\"sbrief\":\"L brack extension\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket lower corner\"},\"mathspeak\":{\"brief\":\"left brack lower corner\",\"sbrief\":\"L brack lower corner\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket upper corner\"},\"mathspeak\":{\"brief\":\"right brack upper corner\",\"sbrief\":\"R brack upper corner\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket extension\"},\"mathspeak\":{\"brief\":\"right brack extension\",\"sbrief\":\"R brack extension\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket lower corner\"},\"mathspeak\":{\"brief\":\"right brack lower corner\",\"sbrief\":\"R brack lower corner\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace upper hook\"},\"mathspeak\":{\"sbrief\":\"L brace upper hook\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace middle piece\"},\"mathspeak\":{\"sbrief\":\"L brace middle piece\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace lower hook\"},\"mathspeak\":{\"sbrief\":\"L brace lower hook\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"brace extension\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace upper hook\"},\"mathspeak\":{\"sbrief\":\"R brace upper hook\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace middle piece\"},\"mathspeak\":{\"sbrief\":\"R brace middle piece\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace lower hook\"},\"mathspeak\":{\"sbrief\":\"R brace lower hook\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral extension\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"horizontal line extension\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left or lower right brace section\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right or lower left brace section\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation top\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation bottom\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top bracket\"},\"mathspeak\":{\"brief\":\"top brack\",\"sbrief\":\"T brack\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket\"},\"mathspeak\":{\"brief\":\"bottom brack\",\"sbrief\":\"B brack\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket over top bracket\"},\"mathspeak\":{\"brief\":\"bottom brack over top brack\",\"sbrief\":\"B brack over T brack\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"radical symbol bottom\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left vertical box line\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right vertical box line\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top parenthesis\"},\"mathspeak\":{\"brief\":\"top p'ren\",\"sbrief\":\"t p'ren\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom parenthesis\"},\"mathspeak\":{\"brief\":\"bottom p'ren\",\"sbrief\":\"b p'ren\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top brace\"},\"mathspeak\":{\"sbrief\":\"T brace\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom brace\"},\"mathspeak\":{\"sbrief\":\"B brace\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top tortoise shell bracket\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom tortoise shell bracket\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium left p'ren ornament\",\"sbrief\":\"medium L p'ren ornament\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium right p'ren ornament\",\"sbrief\":\"medium R p'ren ornament\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium flattened left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened left p'ren ornament\",\"sbrief\":\"medium flattened L p'ren ornament\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium flattened right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened right p'ren ornament\",\"sbrief\":\"medium flattened R p'ren ornament\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left pointing angle bracket ornament\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right pointing angle bracket ornament\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle quotation mark ornament\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle quotation mark ornament\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle bracket ornament\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle bracket ornament\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"light left tortoise shell bracket ornament\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"light right tortoise shell bracket ornament\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium L brace ornament\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium R brace ornament\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left s shaped bag delimiter\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right s shaped bag delimiter\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"flattened left parenthesis\"},\"mathspeak\":{\"brief\":\"flattened left p'ren\",\"sbrief\":\"flattened L p'ren\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"flattened right parenthesis\"},\"mathspeak\":{\"brief\":\"flattened right p'ren\",\"sbrief\":\"flattened R p'ren\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white brace\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white brace\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"white left parenthesis\"},\"mathspeak\":{\"brief\":\"white left p'ren\",\"sbrief\":\"white L p'ren\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"white right parenthesis\"},\"mathspeak\":{\"brief\":\"white right p'ren\",\"sbrief\":\"white R p'ren\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left image bracket\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right image bracket\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"},\"mathspeak\":{\"brief\":\"left brack with underbar\",\"sbrief\":\"L brack with underbar\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"},\"mathspeak\":{\"brief\":\"right brack with underbar\",\"sbrief\":\"R brack with underbar\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in top corner\",\"sbrief\":\"L brack with tick in top corner\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in bottom corner\",\"sbrief\":\"R brack with tick in bottom corner\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in bottom corner\",\"sbrief\":\"L brack with tick in bottom corner\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in top corner\",\"sbrief\":\"R brack with tick in top corner\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"l angle bracket with dot\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"r angle bracket with dot\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black tortoise shell bracket\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black tortoise shell bracket\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left wiggly fence\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right wiggly fence\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing curved angle bracket\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing curved angle bracket\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"top half left bracket\"},\"mathspeak\":{\"brief\":\"top half left brack\",\"sbrief\":\"top half L brack\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"top half right bracket\"},\"mathspeak\":{\"brief\":\"top half right brack\",\"sbrief\":\"top half R brack\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"bottom half left bracket\"},\"mathspeak\":{\"brief\":\"bottom half left brack\",\"sbrief\":\"bottom half L brack\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"bottom half right bracket\"},\"mathspeak\":{\"brief\":\"bottom half right brack\",\"sbrief\":\"bottom half R brack\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left sideways U bracket\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right sideways U bracket\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left parenthesis\"},\"mathspeak\":{\"brief\":\"double left p'ren\",\"sbrief\":\"double L p'ren\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right parenthesis\"},\"mathspeak\":{\"brief\":\"double right p'ren\",\"sbrief\":\"double R p'ren\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left corner bracket\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right corner bracket\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white corner bracket\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white corner bracket\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black lenticular bracket\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black lenticular bracket\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white lenticular bracket\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white lenticular bracket\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"reversed double prime quotation mark\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double prime quotation mark\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"low double prime quotation mark\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"ornate left parenthesis\"},\"mathspeak\":{\"brief\":\"ornate left p'ren\",\"sbrief\":\"ornate L p'ren\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"ornate right parenthesis\"},\"mathspeak\":{\"brief\":\"ornate right p'ren\",\"sbrief\":\"ornate R p'ren\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white lenticular bracket\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white lenticular brakcet\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left p'ren\",\"sbrief\":\"presentation form for vertical L p'ren\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right p'ren\",\"sbrief\":\"presentation form for vertical R p'ren\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical L brace\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r brace\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left tortoise shell bracket\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right tortoise shell bracket\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left black lenticular bracket\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right black lenticular bracket\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left double angle bracket\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right double angle bracket\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical l angle bracket\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r angle bracket\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left corner bracket\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right corner bracket\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white corner bracket\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white corner bracket\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left brack\",\"sbrief\":\"presentation form for vertical L brack\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right brack\",\"sbrief\":\"presentation form for vertical r brack\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left parenthesis\"},\"mathspeak\":{\"brief\":\"small left p'ren\",\"sbrief\":\"small L p'ren\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right parenthesis\"},\"mathspeak\":{\"brief\":\"small right p'ren\",\"sbrief\":\"small R p'ren\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left brace\"},\"mathspeak\":{\"sbrief\":\"small L brace\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right brace\"},\"mathspeak\":{\"sbrief\":\"small r brace\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left tortoise shell bracket\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right tortoise shell bracket\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth left p'ren\",\"sbrief\":\"fullwidth L p'ren\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth right p'ren\",\"sbrief\":\"fullwidth R p'ren\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left bracket\"},\"mathspeak\":{\"brief\":\"fullwidth left brack\",\"sbrief\":\"fullwidth L brack\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right bracket\"},\"mathspeak\":{\"brief\":\"fullwidth right brack\",\"sbrief\":\"fullwidth r brack\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth L brace\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth r brace\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth white left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white left p'ren\",\"sbrief\":\"fullwidth white L p'ren\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth white right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white right p'ren\",\"sbrief\":\"fullwidth white R p'ren\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"halfwidth left corner bracket\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"halfwidth right corner bracket\"}},\"key\":\"FF63\"}]\n,\n\"en/symbols/math_geometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light horizontal\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy horizontal\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash horizontal\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash horizontal\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash vertical\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash vertical\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash horizontal\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash horizontal\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash vertical\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash vertical\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and right\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right heavy\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right light\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and right\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and left\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left heavy\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left light\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and left\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and right\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right heavy\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right light\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and right\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and left\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left heavy\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left light\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and left\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and right\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and right heavy\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right down light\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right up light\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and right light\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right up heavy\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right down heavy\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and right\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and left\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and left heavy\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left down light\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left up light\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and left light\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left up heavy\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left down heavy\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and left\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and horizontal\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right down light\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left down light\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and horizontal heavy\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and horizontal light\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left down heavy\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right down heavy\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and horizontal\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and horizontal\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right up light\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left up light\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and horizontal heavy\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and horizontal light\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left up heavy\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right up heavy\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and horizontal\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and horizontal\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right vertical light\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left vertical light\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and horizontal heavy\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and down horizontal light\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and up horizontal light\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and horizontal light\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left up heavy and right down light\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right up heavy and left down light\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left down heavy and right up light\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right down heavy and left up light\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and up horizontal heavy\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and down horizontal heavy\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left vertical heavy\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right vertical heavy\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and horizontal\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash horizontal\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash horizontal\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash vertical\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash vertical\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double horizontal\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and right double\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and right single\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and right\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and left double\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and left single\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and left\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and right double\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and right single\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and right\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and left double\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and left single\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and left\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and right double\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and right single\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and right\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and left double\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and left single\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and left\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and horizontal double\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and horizontal single\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and horizontal\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and horizontal double\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and horizontal single\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and horizontal\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and horizontal double\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and horizontal single\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and horizontal\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and right\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and left\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and left\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and right\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper right to lower left\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper left to lower right\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal cross\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light right\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy right\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left and heavy right\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and heavy down\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left and light right\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and light down\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half block\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one eighth block\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one quarter block\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three eighths block\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half block\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower five eighths block\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three quarters block\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower seven eighths block\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"full block\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left seven eighths block\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three quarters block\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left five eighths block\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half block\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three eighths block\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one quarter block\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one eighth block\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half block\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"light shade\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"medium shade\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dark shade\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper one eighth block\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right one eighth block\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower left\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower right\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower left and lower right\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower right\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower left\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower right\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left and lower right\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black square\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with rounded corners\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square containing black small square\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with horizontal fill\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with vertical fill\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with orthogonal crosshatch fill\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left to lower right fill\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right to lower left fill\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with diagonal crosshatch fill\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small square\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small square\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black rectangle\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white rectangle\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical rectangle\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black parallelogram\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white parallelogram\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing triangle\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing small triangle\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing small triangle\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing triangle\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white right pointing triangle\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing small triangle\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing small triangle\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pointer\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pointer\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing triangle\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing triangle\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing small triangle\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing small triangle\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing triangle\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white left pointing triangle\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing small triangle\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing small triangle\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing pointer\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing pointer\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black diamond\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond containing black small diamond\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"fisheye\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lozenge\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted circle\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with vertical fill\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bullseye\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with left half black\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with right half black\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with lower half black\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper half black\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper right quadrant black\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with all but upper left quadrant black\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half black circle\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half black circle\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse bullet\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse white circle\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half inverse white circle\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half inverse white circle\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper left quadrant circular arc\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper right quadrant circular arc\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower right quadrant circular arc\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower left quadrant circular arc\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half circle\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half circle\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower right triangle\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower left triangle\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper left triangle\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper right triangle\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white bullet\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with left half black\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with right half black\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left diagonal half black\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower right diagonal half black\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with vertical bisecting line\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle with dot\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with left half black\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with right half black\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"large circle\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper left quadrant\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower left quadrant\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower right quadrant\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper right quadrant\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper left quadrant\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower left quadrant\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower right quadrant\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper right quadrant\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left triangle\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right triangle\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower left triangle\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium square\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium square\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium small square\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium small square\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right triangle\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with top half black\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with bottom half black\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right diagonal half black\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower left diagonal half black\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with left half black\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with right half black\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with top half black\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with bottom half black\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted square\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large square\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white large square\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black very small square\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white very small square\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black pentagon\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white pentagon\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white hexagon\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black hexagon\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"horizontal black hexagon\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large circle\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium diamond\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium diamond\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium lozenge\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium lozenge\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small diamond\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small lozenge\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small lozenge\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black horizontal ellipse\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white horizontal ellipse\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical ellipse\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical ellipse\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium star\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small star\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small star\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pentagon\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pentagon\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy large circle\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy oval with oval inside\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle with circle inside\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circled saltire\"}},\"key\":\"2B59\"}]\n,\n\"en/symbols/math_harpoons.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon over right harpoon\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon over left harpoon\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb down harpoon\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb up harpoon\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb right harpoon\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb up harpoon\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb right harpoon\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb down harpoon\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb left harpoon\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up to bar\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up to bar\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right to bar\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right to bar\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down to bar\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down to bar\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left to bar\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left to bar\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up from bar\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up from bar\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right from bar\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right from bar\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down from bar\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down from bar\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left from bar\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left from bar\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above left harpoon with barb down\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above right harpoon with barb down\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above right harpoon with barb up\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down above right harpoon with barb down\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above left harpoon with barb up\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down above left harpoon with barb down\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above long dash\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down below long dash\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above long dash\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down below long dash\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left fish tail\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right fish tail\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up fish tail\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down fish tail\"}},\"key\":\"297F\"}]\n,\n\"en/symbols/math_non_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h over two pi\",\"physics\":\"planck constant over two pi\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"l b bar\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"numero\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sound recording copyright\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"prescription take\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"response\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"service mark\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"telephone sign\",\"alternative\":\"t e l symbol\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"trade mark\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"versicle\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverted ohm\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"kelvin\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"estimated\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"turned cap F\"},\"mathspeak\":{\"default\":\"turned upper F\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"information source\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"rotated cap Q\"},\"mathspeak\":{\"default\":\"rotated upper Q\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"facsimile sign\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap G\"},\"mathspeak\":{\"default\":\"turned sans serif upper G\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap L\"},\"mathspeak\":{\"default\":\"turned sans serif upper L\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed sans serif cap L\"},\"mathspeak\":{\"default\":\"reversed sans serif upper L\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap Y\"},\"mathspeak\":{\"default\":\"turned sans serif upper Y\"}},\"key\":\"2144\"}]\n,\n\"en/symbols/math_symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\",\"alternative\":\"hash\"},\"mathspeak\":{\"brief\":\"num sign\",\"sbrief\":\"num sign\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"minus\"},\"mathspeak\":{\"default\":\"hyphen\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"},\"emacspeak\":{\"default\":\"slash\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"},\"clearspeak\":{\"default\":\"is less than\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"},\"clearspeak\":{\"default\":\"is greater than\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"at\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"hat\"},\"mathspeak\":{\"default\":\"caret\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"},\"mathspeak\":{\"default\":\"grave\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted exclamation mark\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"currency sign\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"section sign\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"two dots\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"copyright sign\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"feminine ordinal indicator\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing guillemet\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"registered sign\"},\"mathspeak\":{\"default\":\"registered trade mark sign\"},\"clearspeak\":{\"default\":\"trade mark sign\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"bar\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"degree\"},\"clearspeak\":{\"default\":\"degrees\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus or minus\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"acute\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"paragraph sign\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"masculine ordinal indicator\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing guillemet\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted question mark\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times\"},\"clearspeak\":{\"MultsymbolX_By\":\"by\",\"MultsymbolX_Cross\":\"cross\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division sign\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"dot above\"},\"mathspeak\":{\"default\":\"dot\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ring above\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"double acute\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"non breaking hyphen\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"figure dash\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"en dash\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"em dash\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"horizontal bar\"},\"mathspeak\":{\"default\":\"quotation dash\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double vertical bar\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double underline\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left single quotation mark\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right single quotation mark\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right single quotation mark\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed single quotation mark\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left double quotation mark\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right double quotation mark\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right double quotation mark\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed double quotation mark\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dagger\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double dagger\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triangular bullet\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"one dot leader\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot leader\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphenation point\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per mille\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per ten thousand\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed prime\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed double prime\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed triple prime\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing single guillemet\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing single guillemet\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reference mark\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double exclamation mark\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"overline\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"undertie\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"character tie\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret insertion point\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterism\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphen bullet\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fraction slash\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double question mark\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question exclamation mark\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation question mark\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed pilcrow\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black leftwards bullet\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black rightwards bullet\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"low asterisk\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed semicolon\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"close up\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two asterisks aligned vertically\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"commercial minus\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"swung dash\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"inverted undertie\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"flower punctuation mark\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"three dot punctuation\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot punctuation\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"five dot punctuation\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot punctuation\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot mark\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dotted cross\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"vertical four dots\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript plus\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript minus\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript equals\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"superscript left parenthesis\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"superscript right parenthesis\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript plus\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript minus\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript equals\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"subscript left parenthesis\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"subscript right parenthesis\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"property line\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned ampersand\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"per\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"turned small f\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"for all\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"complement\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there exists\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there does not exist\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increment\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not an element of\"},\"clearspeak\":{\"default\":\"is not a member of\",\"SetMemberSymbol_Member\":\"is not a member of\",\"SetMemberSymbol_Element\":\"is not an element of\",\"SetMemberSymbol_In\":\"is not in\",\"SetMemberSymbol_Belongs\":\"does not belong to\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as member\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as member\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains as member\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"end of proof\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"product\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"coproduct\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sum\"},\"mathspeak\":{\"default\":\"sigma summation\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus or plus\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot plus\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division slash\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"set minus\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring\"},\"clearspeak\":{\"default\":\"composed with\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square root\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"cube root\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fourth root\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportional to\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\",\"alternative\":\"divides\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel to\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not parallel to\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double integral\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple integral\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contour integral\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"surface integral\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"volume integral\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise integral\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise contour integral\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise contour integral\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"therefore\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"because\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ratio\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot minus\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"excess\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometric proportion\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"homothetic\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"inverted lazy s\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sine wave\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wreath product\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not tilde\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus tilde\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asymptotically equals\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not asymptotically equals\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately but not actually equals\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither approximately nor actually equals\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equals\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not almost equals\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal or equals\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"all equals\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent to\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equivalent to\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"difference between\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approaches the limit\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equals\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals or the image of\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of or approximately equals\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"colon equals\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals colon\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring in equals\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring equals\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"corresponds to\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"estimates\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equiangular to\"},\"clearspeak\":{\"default\":\"is equiangular to\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star equals\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"delta equals\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals by definition\"},\"clearspeak\":{\"default\":\"is defined to be\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured by\"},\"clearspeak\":{\"default\":\"is measured by\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"questioned equals\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equals\"},\"clearspeak\":{\"default\":\"is not equal to\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to\"},\"clearspeak\":{\"default\":\"is identical to\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not identical to\"},\"clearspeak\":{\"default\":\"is not identical to\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"strictly equivalent to\"},\"clearspeak\":{\"default\":\"is strictly equivalent to\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equals\"},\"clearspeak\":{\"default\":\"is less than or equal to\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equals\"},\"clearspeak\":{\"default\":\"is greater than or equal to\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than over equals\"},\"clearspeak\":{\"default\":\"is less than over equals\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than over equals\"},\"clearspeak\":{\"default\":\"is greater than over equals\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equals\"},\"clearspeak\":{\"default\":\"is less than but not equal to\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equals\"},\"clearspeak\":{\"default\":\"is greater than but not equal to\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much less than\"},\"clearspeak\":{\"default\":\"is much less than\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much greater than\"},\"clearspeak\":{\"default\":\"is much greater than\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"between\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equivalent to\"},\"clearspeak\":{\"default\":\"is not equivalent to\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not less than\"},\"clearspeak\":{\"default\":\"is not less than\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not greater than\"},\"clearspeak\":{\"default\":\"is not greater than\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equals\"},\"clearspeak\":{\"default\":\"is neither less than nor equal to\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equals\"},\"clearspeak\":{\"default\":\"is neither greater than nor equal to\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equivalent to\"},\"clearspeak\":{\"default\":\"is less than or equivalent to\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equivalent to\"},\"clearspeak\":{\"default\":\"is greater than or equivalent to\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither less than nor equivalent to\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither greater than nor equivalent to\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or greater than\"},\"clearspeak\":{\"default\":\"is less than or greater than\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or less than\"},\"clearspeak\":{\"default\":\"is greater than or less than\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor greater than\"},\"clearspeak\":{\"default\":\"is neither less than nor greater than\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor less than\"},\"clearspeak\":{\"default\":\"is neither greater than nor less than\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equal to\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equal to\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equivalent to\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equivalent to\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a subset of\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a superset of\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equal to\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equal to\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a subset of nor equal to\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a superset of nor equal to\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or not equals\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or not equals\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset multiplication\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset union\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or equal to\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or equal to\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cap\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cup\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled plus\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled minus\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled times\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division slash\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dot\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled ring\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled asterisk\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled equals\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dash\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared plus\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared minus\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared times\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared dot\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right tack\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left tack\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"models\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"true\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forces\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar right turnstile\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double right turnstile\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not prove\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not true\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not force\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"negated double vertical bar double right turnstile\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes under relation\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds under relation\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of or equal to\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup or equal to\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"original of\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multimap\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"hermitian conjugate matrix\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intercalate\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"xor\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nand\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nor\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary and\"},\"mathspeak\":{\"default\":\"and\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary or\"},\"mathspeak\":{\"default\":\"or\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary intersection\"},\"mathspeak\":{\"default\":\"intersection\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union\"},\"mathspeak\":{\"default\":\"union\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"diamond\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\",\"MultsymbolDot_Dot\":\"dot\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division times\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left normal factor semidirect product\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right normal factor semidirect product\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left semidirect product\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right semidirect product\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde equals\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly or\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly and\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double subset\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double superset\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double intersection\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double union\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equal and parallel to\"},\"clearspeak\":{\"default\":\"is equal and parallel to\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than dot\"},\"clearspeak\":{\"default\":\"is less than dot\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than dot\"},\"clearspeak\":{\"default\":\"is greater than dot\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much less than\"},\"clearspeak\":{\"default\":\"is very much less than\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much greater than\"},\"clearspeak\":{\"default\":\"is very much greater than\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than equals or greater than\"},\"clearspeak\":{\"default\":\"is less than equal to or greater than\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than equals or less than\"},\"clearspeak\":{\"default\":\"is greater than equal to or less than\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or less than\"},\"clearspeak\":{\"default\":\"is equal to or less than\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or greater than\"},\"clearspeak\":{\"default\":\"is equal to or greater than\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or precedes\"},\"clearspeak\":{\"default\":\"is equal to or precedes\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or succeeds\"},\"clearspeak\":{\"default\":\"is equal to or succeeds\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede or equal\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed or equal\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square image of or equals\"},\"clearspeak\":{\"default\":\"is not square image of or equal to\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square original of or equals\"},\"clearspeak\":{\"default\":\"is not square original of or equal to\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or not equals\"},\"clearspeak\":{\"default\":\"is square image of or not equal to\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or not equals\"},\"clearspeak\":{\"default\":\"is square original of or not equal to\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equivalent to\"},\"clearspeak\":{\"default\":\"is less than but not equivalent to\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equivalent to\"},\"clearspeak\":{\"default\":\"is greater than but not equivalent to\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes but not equivalent to\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equivalent to\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of\"},\"clearspeak\":{\"default\":\"is not normal subgroup of\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of or equals\"},\"clearspeak\":{\"default\":\"is not normal subgroup of or equal to\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup or equal\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical ellipsis\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"midline horizontal ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up right diagonal ellipsis\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right diagonal ellipsis\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with long horizontal stroke\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with dot above\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with overbar\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with overbar\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with underbar\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with two horizontal strokes\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with long horizontal stroke\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with overbar\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with overbar\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation bag membership\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diameter sign\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"house\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wavy line\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"reversed not\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square lozenge\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sector\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold plus\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold minus\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold division\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"curly loop\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"double curly loop\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white triangle containing small white triangle\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open subset\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open superset\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot inside\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash preceding subset\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset preceding solidus\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar with horizontal stroke\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long division\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared and\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared or\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white diamond with centered dot\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening upwards\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right corner with dot\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left corner with dot\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left outer join\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right outer join\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"full outer join\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large up tack\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large down tack\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right double turnstile\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right tack\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left multimap\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right tack\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left tack\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack with circle above\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lozenge divided by horizontal rule\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with leftwards tick\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with rightwards tick\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with leftwards tick\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with rightwards tick\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing falling diagonal\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing rising diagonal\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar delimiter\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation spot\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation type colon\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dotted fence\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical zigzag line\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed empty set\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with overbar\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with small circle above\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with horizontal bar\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled parallel\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled backslash\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled perpendicular\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle divided by horizontal bar and top half divided by vertical bar\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with superimposed x\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled white bullet\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled bullet\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled less than\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled greater than\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with small circle to the right\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared rising diagonal slash\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared falling diagonal slash\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared asterisk\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared small circle\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared square\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two joined squares\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with dot above\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with underbar\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"s in triangle\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle above left triangle\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triangle beside vertical bar\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar beside right triangle\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with left half black\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with right half black\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black bowtie\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with left half black\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with right half black\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white hourglass\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black hourglass\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"incomplete infinity\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tie over infinity\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity negated with vertical bar\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double ended multimap\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square with contoured outline\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increases as\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"shuffle product\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel with tilde above\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to and slanted parallel\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"thermodynamic\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with left half black\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with right half black\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black lozenge\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white square\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black square\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white diamond\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black diamond\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white circle\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black circle\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash with horizontal stroke\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big solidus\"},\"mathspeak\":{\"default\":\"solidus\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big backslash\"},\"mathspeak\":{\"default\":\"backslash\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double plus\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tiny\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"miny\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled dot\"},\"mathspeak\":{\"default\":\"circled dot\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled plus\"},\"mathspeak\":{\"default\":\"circled plus\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled times\"},\"mathspeak\":{\"default\":\"circled times\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union with dot\"},\"mathspeak\":{\"default\":\"union with dot\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union operator with plus\"},\"mathspeak\":{\"default\":\"union with plus\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square intersection\"},\"mathspeak\":{\"default\":\"square intersection\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square union\"},\"mathspeak\":{\"default\":\"square union\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two and\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two or\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary times\"},\"mathspeak\":{\"default\":\"times\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"modulo two sum\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation with integral\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quadruple integral\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with double stroke\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral average with slash\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise integration\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with rectangular path around pole\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with semicircular path around pole\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration not including the pole\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral around a point\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quaternion integral\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with times\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with intersection\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with union\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with overbar\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with underbar\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"join\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large left triangle\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema composition\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema piping\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema projection\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus with circle above\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus hat\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus tilde\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus underdot\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with tilde below\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with subscript two\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with black triangle\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with comma above\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with dot below\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with falling dots\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with rising dots\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in left half circle\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in right half circle\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vector or cross product\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with dot above\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with underbar\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"semidirect product with bottom closed\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in left half circle\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in right half circle\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled multiplication sign with circumflex accent\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in double circle\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in triangle\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign in triangle\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in triangle\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"interior product\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"righthand interior product\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation relational composition\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"amalgamation or coproduct\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with dot\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with minus\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with overbar\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with overbar\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with and\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with or\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above intersection\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above union\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above bar above intersection\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above bar above union\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union beside and joined with union\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection beside and joined with intersection\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed intersection with serifs\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square intersection\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square union\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs and smash product\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot above\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot above\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double and\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double or\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting and\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting or\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or overlapping and\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with middle stem\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with middle stem\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with horizontal dash\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with horizontal dash\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double overbar\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with underbar\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double underbar\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small vee with underbar\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double overbar\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double underbar\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation domain antirestriction\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation range antirestriction\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with dot below\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical with dot above\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with double vertical stroke\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with triple vertical stroke\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with dot above\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with rising dots\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar minus similar\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"congruent with dot above\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with asterisk\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal hat\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equal or equal to\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above plus\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus above equals\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above tilde\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double colon equal\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two consecutive equals\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three consecutive equals\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with two dots above and two dots below\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent with four dots above\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with circle inside\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with circle inside\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with question mark above\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with question mark above\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot inside\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot inside\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above right\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above left\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or approximate\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or approximate\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and single line not equals\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and single line not equals\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and not approximate\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and not approximate\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above double line equal above greater than\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above double line equal above less than\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar or equal\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar or equal\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar above greater than\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar above less than\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above greater than above double line equal\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above less than above double line equal\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above slanted equal above greater than above slanted equal\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above slanted equal above less than above slanted equal\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than with dot inside\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than with dot inside\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or less than\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or greater than\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or less than\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or greater than\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or less than\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or greater than\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above less than above equals sign\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above greater than above equals sign\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested greater than\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than with underbar\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than overlapping less than\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than beside less than\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve above slanted equal\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve above slanted equal\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than\"},\"clearspeak\":{\"default\":\"is smaller than\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than\"},\"clearspeak\":{\"default\":\"is larger than\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than or equals\"},\"clearspeak\":{\"default\":\"is smaller than or equal to\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than or equal\"},\"clearspeak\":{\"default\":\"is larger than or equal to\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with bumpy above\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line equals sign\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line equals sign\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line not equals\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line not equals\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above equals\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above equals\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not equals\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not equals\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above almost equals\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above almost equals\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not almost equals\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not almost equals\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double precedes\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double succeeds\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with dot\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with dot\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with plus sign below\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with plus sign below\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with multiplication sign below\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with multiplication sign below\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equals with dot above\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equals with dot above\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above equals sign\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above equals sign\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above tilde\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above tilde\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above almost equals\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above almost equals\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above not equals\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above not equals\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square left open box\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square right open box\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset or equals\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset or equals\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above superset\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above subset\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above subset\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above superset\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside subset\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside and joined by dash with subset\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening downwards\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forking\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short left tack\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular with s\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar triple right turnstile\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar left turnstile\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar double left turnstile\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double left turnstile\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack with underbar\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double down tack\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle above\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle below\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with horizontal stroke\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with tilde\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar binary relation\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar with horizontal stroke\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple colon\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested less than\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested greater than\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted less than or equals\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted greater than or equals\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple solidus binary relation\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large triple vertical bar\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double solidus\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary white vertical bar\"},\"mathspeak\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"wave dash\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical comma\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical colon\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical semicolon\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical exclamation mark\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical question mark\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical horizontal ellipsis\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical two dot leader\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical em dash\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical en dash\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical underline\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical wavy underline\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"sesame dot\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"white sesame dot\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dashed overline\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dash dot overline\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"wavy overline\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double wavy overline\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dashed underline\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dash dot underline\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"wavy underline\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small comma\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small period\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small semicolon\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small colon\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small question mark\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small exclamation mark\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small em dash\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small number sign\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small ampersand\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small asterisk\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small plus sign\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small hyphen minus\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small less than sign\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small greater than sign\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small equals\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small backslash\",\"alternative\":\"small reverse solidus\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"small dollar sign\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small percent sign\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small commercial at\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen minus\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"commercial at\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\",\"alternative\":\"reverse solidus\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"caret\",\"alternative\":\"circumflex\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"macron\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"won sign\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth forms light vertical\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth black square\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth white circle\"}},\"key\":\"FFEE\"}]\n,\n\"en/symbols/math_whitespace.js\": \n[{\"locale\":\"en\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"space\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"no break space\",\"alternative\":\"non breaking space\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"soft hyphen\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en quad\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em quad\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en space\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em space\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"three per em space\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"four per em space\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"six per em space\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"figure space\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"punctuation space\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"thin space\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"hair space\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width space\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width non joiner\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width joiner\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right mark\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left mark\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"line separator\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"paragraph separator\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right embedding\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left embedding\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"pop directional formatting\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right override\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left override\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"narrow no break space\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"medium mathematical space\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"word joiner\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"of\",\"alternative\":\"function application\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"times\",\"alternative\":\"invisible times\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"separator\",\"alternative\":\"invisible separator\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"plus\",\"alternative\":\"invisible plus\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"inhibit symmetric swapping\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"activate symmetric swapping\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"national digit shapes\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"nominal digit shapes\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width no break space\",\"alternative\":\"byte order mark\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation anchor\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation separator\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation terminator\"}},\"key\":\"FFFB\"}]\n,\n\"en/symbols/other_stars.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"decimal exponent symbol\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black star\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white star\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\",\"alternative\":\"medium white circle\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\",\"alternative\":\"medium black circle\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white check mark\",\"alternative\":\"white heavy check mark\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy check mark\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"multiplication x\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy multiplication x\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy ballot x\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center cross\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy open center cross\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"maltese cross\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"star of david\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four teardrop spoked asterisk\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four balloon spoked asterisk\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy four balloon spoked asterisk\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four club spoked asterisk\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black four pointed star\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white four pointed star\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkles\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"stress outlined white star\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled white star\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center black star\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black center white star\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"outlined black star\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy outlined black star\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"pinwheel star\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white star\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy asterisk\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center asterisk\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight spoked asterisk\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed black star\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed pinwheel star\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six pointed black star\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"twelve pointed black star\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sixteen pointed asterisk\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop spoked asterisk\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center teardrop spoked asterisk\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six petalled black and white florette\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black florette\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white florette\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight petalled outlined black florette\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled open center eight pointed star\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked pinwheel asterisk\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"snowflake\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"tight trifoliate snowflake\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy chevron snowflake\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkle\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy sparkle\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"balloon spoked asterisk\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight teardrop spoked propeller asterisk\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy eight teardrop spoked propeller asterisk\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"cross mark\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white circle\"}},\"key\":\"274D\"}]\n,\n\"en/units/area.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"square\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square inch\"}},\"key\":\"sq inch\",\"names\":[\"sq inch\",\"sq. inch.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square rod\"}},\"key\":\"sq rd\",\"names\":[\"sq rd\",\"sq. rd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square foot\",\"plural\":\"square feet\"}},\"key\":\"sq ft\",\"names\":[\"sq ft\",\"sq. ft.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square yard\"}},\"key\":\"sq yd\",\"names\":[\"sq yd\",\"sq. yd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square mile\"}},\"key\":\"sq mi\",\"names\":[\"sq mi\",\"sq. mi.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"acre\"}},\"key\":\"acr\",\"names\":[\"ac\",\"ac.\",\"acr\",\"acr.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"hectare\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"en/units/currency.js\": \n[{\"locale\":\"en\"},{\"category\":\"currency\",\"key\":\"$\",\"mappings\":{\"default\":{\"default\":\"dollar\"}},\"names\":[\"$\",\"💲\",\"＄\",\"﹩\",\"USD\"]},{\"category\":\"currency\",\"key\":\"£\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"names\":[\"£\",\"￡\",\"GBP\"]},{\"category\":\"currency\",\"key\":\"¥\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"names\":[\"¥\",\"￥\",\"JPY\"]},{\"category\":\"currency\",\"key\":\"€\",\"mappings\":{\"default\":{\"default\":\"euro\"}},\"names\":[\"€\",\"EUR\"]},{\"category\":\"currency\",\"key\":\"₡\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"names\":[\"₡\",\"CRC\"]},{\"category\":\"currency\",\"key\":\"₢\",\"mappings\":{\"default\":{\"default\":\"cruzeiro\"}},\"names\":[\"₢\"]},{\"category\":\"currency\",\"key\":\"₣\",\"mappings\":{\"default\":{\"default\":\"franc\"}},\"names\":[\"₣\"]},{\"category\":\"currency\",\"key\":\"₤\",\"mappings\":{\"default\":{\"default\":\"lira\"}},\"names\":[\"₤\"]},{\"category\":\"currency\",\"key\":\"₥\",\"mappings\":{\"default\":{\"default\":\"mill\"}},\"names\":[\"₥\"]},{\"category\":\"currency\",\"key\":\"₦\",\"mappings\":{\"default\":{\"default\":\"naira\"}},\"names\":[\"₦\",\"NGN\"]},{\"category\":\"currency\",\"key\":\"₧\",\"mappings\":{\"default\":{\"default\":\"peseta\"}},\"names\":[\"₧\"]},{\"category\":\"currency\",\"key\":\"₨\",\"mappings\":{\"default\":{\"default\":\"rupee\"}},\"names\":[\"₨\",\"₹\",\"INR\",\"NPR\",\"PKR\",\"LKR\"]},{\"category\":\"currency\",\"key\":\"₩\",\"mappings\":{\"default\":{\"default\":\"won\"}},\"names\":[\"₩\",\"￦\",\"KRW\"]},{\"category\":\"currency\",\"key\":\"₪\",\"mappings\":{\"default\":{\"default\":\"sheqel\"}},\"names\":[\"₪\"]},{\"category\":\"currency\",\"key\":\"₫\",\"mappings\":{\"default\":{\"default\":\"dong\"}},\"names\":[\"₫\"]},{\"category\":\"currency\",\"key\":\"₭\",\"mappings\":{\"default\":{\"default\":\"kip\"}},\"names\":[\"₭\"]},{\"category\":\"currency\",\"key\":\"₮\",\"mappings\":{\"default\":{\"default\":\"tugrik\"}},\"names\":[\"₮\"]},{\"category\":\"currency\",\"key\":\"₯\",\"mappings\":{\"default\":{\"default\":\"drachma\"}},\"names\":[\"₯\"]},{\"category\":\"currency\",\"key\":\"₰\",\"mappings\":{\"default\":{\"default\":\"Pfennig\"}},\"names\":[\"₰\"]},{\"category\":\"currency\",\"key\":\"₱\",\"mappings\":{\"default\":{\"default\":\"peso\"}},\"names\":[\"₱\"]},{\"category\":\"currency\",\"key\":\"₲\",\"mappings\":{\"default\":{\"default\":\"guaranis\"}},\"names\":[\"₲\"]},{\"category\":\"currency\",\"key\":\"₳\",\"mappings\":{\"default\":{\"default\":\"austral\"}},\"names\":[\"₳\"]},{\"category\":\"currency\",\"key\":\"₴\",\"mappings\":{\"default\":{\"default\":\"hryvnia\"}},\"names\":[\"₴\",\"UAH\"]},{\"category\":\"currency\",\"key\":\"₵\",\"mappings\":{\"default\":{\"default\":\"cedis\"}},\"names\":[\"₵\",\"GHS\"]},{\"category\":\"currency\",\"key\":\"₶\",\"mappings\":{\"default\":{\"default\":\"livre tournois\"}},\"names\":[\"₶\"]},{\"category\":\"currency\",\"key\":\"₷\",\"mappings\":{\"default\":{\"default\":\"spesmilo\"}},\"names\":[\"₷\"]},{\"category\":\"currency\",\"key\":\"₸\",\"mappings\":{\"default\":{\"default\":\"tenge\"}},\"names\":[\"₸\",\"KZT\"]},{\"category\":\"currency\",\"key\":\"₺\",\"mappings\":{\"default\":{\"default\":\"turkish lira\"}},\"names\":[\"₺\",\"TRY\"]},{\"category\":\"currency\",\"key\":\"元\",\"mappings\":{\"default\":{\"default\":\"yuan\"}},\"names\":[\"元\"]},{\"category\":\"currency\",\"key\":\"¢\",\"mappings\":{\"default\":{\"default\":\"cent\"}},\"names\":[\"￠\",\"¢\"]}]\n,\n\"en/units/energy.js\": \n[{\"locale\":\"en\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"watt\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt hour\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"joule\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ampere\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"volt\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"microohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"en/units/length.js\": \n[{\"locale\":\"en\"},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"foot\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"inch\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"mile\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"yard\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"link\"}},\"key\":\"link\",\"names\":[\"li\",\"li.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"rod\"}},\"key\":\"rod\",\"names\":[\"rd\",\"rd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"chain\"}},\"key\":\"chain\",\"names\":[\"ch\",\"ch.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"furlong\"}},\"key\":\"furlong\",\"names\":[\"fur\",\"fur.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"nautical mile\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"millimeter\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"centimeter\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"meter\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]}]\n,\n\"en/units/memory.js\": \n[{\"locale\":\"en\"},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"bit\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"byte\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"en/units/other.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"dozen\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"en/units/speed.js\": \n[{\"locale\":\"en\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"knot\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"miles per hour\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"revolutions per minute\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"kilometers per hour\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"en/units/temperature.js\": \n[{\"locale\":\"en\"},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Celsius\",\"alternative\":\"Centigrade\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"en/units/time.js\": \n[{\"locale\":\"en\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"nanosecond\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"microsecond\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"millisecond\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"second\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"hour\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"en/units/volume.js\": \n[{\"locale\":\"en\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic inch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic foot\",\"plural\":\"cubic feet\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic yard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"barrel\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"gallon\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"pint\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"quart\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid dram\"}},\"key\":\"fluid dram\",\"names\":[\"fl dr\",\"fl. dr.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"tablespoon\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"teaspoon\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cup\"}},\"key\":\"cup\",\"names\":[\"cp\",\"cp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic centimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"en/units/weight.js\": \n[{\"locale\":\"en\"},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"dram\"}},\"key\":\"dram\",\"names\":[\"dr\",\"dr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"stone\"}},\"key\":\"st\",\"names\":[\"st\",\"st.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"quarter\"}},\"key\":\"qtr\",\"names\":[\"qtr\",\"qtr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"hundredweight\"}},\"key\":\"cwt\",\"names\":[\"cwt\",\"cwt.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"gram\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"kilogram\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"microgram\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"milligram\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ton\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/es.js",
    "content": "{\n\"es/functions/algebra.js\": \n[{\"locale\":\"es\"},{\"key\":\"deg\",\"names\":[\"deg\"],\"mappings\":{\"default\":{\"default\":\"grados\"}},\"category\":\"Algebra\"},{\"key\":\"det\",\"names\":[\"det\"],\"mappings\":{\"default\":{\"default\":\"determinante\"}},\"category\":\"Algebra\"},{\"key\":\"dim\",\"names\":[\"dim\"],\"mappings\":{\"default\":{\"default\":\"dimensión\"}},\"category\":\"Algebra\"},{\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"],\"mappings\":{\"default\":{\"default\":\"homomorfismo\"}},\"category\":\"Algebra\"},{\"key\":\"ker\",\"names\":[\"ker\"],\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"category\":\"Algebra\"},{\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"],\"mappings\":{\"default\":{\"default\":\"traza\"}},\"category\":\"Algebra\"}]\n,\n\"es/functions/elementary.js\": \n[{\"locale\":\"es\"},{\"key\":\"log\",\"names\":[\"log\"],\"mappings\":{\"default\":{\"default\":\"logaritmo\"}},\"category\":\"Logarithm\"},{\"key\":\"ln\",\"names\":[\"ln\"],\"mappings\":{\"default\":{\"default\":\"logaritmo neperiano\"}},\"category\":\"Logarithm\"},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logaritmo base 10\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponente\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"mcd\",\"MCD\"],\"mappings\":{\"default\":{\"default\":\"MCD\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"mcm\",\"MCM\"],\"mappings\":{\"default\":{\"default\":\"mcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argumento\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"parte imaginaria\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"residuo\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"extremo inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"names\":[\"lim\"],\"mappings\":{\"default\":{\"default\":\"límite\"}},\"category\":\"Limits\"},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"máximo\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"mínimo\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"superior\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"límite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"límite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"límite directo\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"límite inverso\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"módulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilidad\"}},\"category\":\"Probability\"}]\n,\n\"es/functions/hyperbolic.js\": \n[{\"locale\":\"es\"},{\"key\":\"cosh\",\"names\":[\"cosh\"],\"mappings\":{\"default\":{\"default\":\"coseno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"coth\",\"names\":[\"coth\"],\"mappings\":{\"default\":{\"default\":\"cotangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"csch\",\"names\":[\"csch\"],\"mappings\":{\"default\":{\"default\":\"cosecante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sech\",\"names\":[\"sech\"],\"mappings\":{\"default\":{\"default\":\"secante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sinh\",\"names\":[\"sinh\"],\"mappings\":{\"default\":{\"default\":\"seno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"tanh\",\"names\":[\"tanh\"],\"mappings\":{\"default\":{\"default\":\"tangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"],\"mappings\":{\"default\":{\"default\":\"area coseno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"],\"mappings\":{\"default\":{\"default\":\"area cotangente hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"],\"mappings\":{\"default\":{\"default\":\"area cosecante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"],\"mappings\":{\"default\":{\"default\":\"area secante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"],\"mappings\":{\"default\":{\"default\":\"area seno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"],\"mappings\":{\"default\":{\"default\":\"area tangente hiperbólica\"}},\"category\":\"Area\"}]\n,\n\"es/functions/trigonometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"],\"mappings\":{\"default\":{\"default\":\"coseno\"}},\"category\":\"Trigonometric\"},{\"key\":\"cot\",\"names\":[\"cot\"],\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"csc\",\"names\":[\"csc\"],\"mappings\":{\"default\":{\"default\":\"cosecante\"}},\"category\":\"Trigonometric\"},{\"key\":\"sec\",\"names\":[\"sec\"],\"mappings\":{\"default\":{\"default\":\"secant\"}},\"category\":\"Trigonometric\"},{\"key\":\"sin\",\"names\":[\"sin\",\"sine\",\"sen\"],\"mappings\":{\"default\":{\"default\":\"seno\"}},\"category\":\"Trigonometric\"},{\"key\":\"tan\",\"names\":[\"tan\"],\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"arccos\",\"names\":[\"arccos\"],\"mappings\":{\"default\":{\"default\":\"arco coseno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccot\",\"names\":[\"arccot\"],\"mappings\":{\"default\":{\"default\":\"arco cotangente\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccsc\",\"names\":[\"arccsc\"],\"mappings\":{\"default\":{\"default\":\"arco cosecante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsec\",\"names\":[\"arcsec\"],\"mappings\":{\"default\":{\"default\":\"arco secante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsin\",\"names\":[\"arcsin\"],\"mappings\":{\"default\":{\"default\":\"arco seno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arctan\",\"names\":[\"arctan\"],\"mappings\":{\"default\":{\"default\":\"arco tangente\"}},\"category\":\"Cyclometric\"}]\n,\n\"es/symbols/digits_rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cuadrado\"},\"mathspeak\":{\"default\":\"al cuadrado\"},\"clearspeak\":{\"default\":\"al cuadrado\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cubo\"},\"mathspeak\":{\"default\":\"al cubo\"},\"clearspeak\":{\"default\":\"al cubo\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un cuarto\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un medio\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"tres cuartos\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Séptimo\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Noveno\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Décimo\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Tercero\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos tercios\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction One Fifth\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos quintos\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres quintos\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cuatro quintos\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Sexto\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"Vulgar fracción cinco sextos\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Octavo\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres octavos\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cinco octavos\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar siete octavos\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Numerador de fracciones uno\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction Zero Thirds\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"Número diez en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"Número veinte en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"Número circundado treinta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"Número circundado Cuarenta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"Círculo número cincuenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"Círculo número sesenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"Número setenta en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"Círculo número ochenta en cuadrado negro\"}}}]\n,\n\"es/symbols/greek-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"es/symbols/greek-scripts.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"pequeño mayúscula gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscripción pequeña beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subíndice pequeña gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subíndice rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subíndice phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscripción chi\"}}}]\n,\n\"es/symbols/greek-symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"símbolo beta\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"símbolo kai griego\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"épsilon invertido\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Matemática Bold Capital Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"Matemática negrita pequeño digamma\"}}}]\n,\n\"es/symbols/hebrew_letters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bet\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guímel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dálet\"}},\"category\":\"Lo\"}]\n,\n\"es/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a con punto arriba y macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo y macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a con ring above y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o con Dot Above y Macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c con cedilla y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e con cedilla y breve\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i con diéresis y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y acute\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o con tilde y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s con agudo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s con carón y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u con tilde y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u con macrón y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a con breve y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a con breve y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a con breve y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a con breve y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a con breve y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o with horn and acute\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o with horn and grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o with horn and hook above\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o with horn and tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o con cuerno y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y punto debajo\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"es\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barrada\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d con barra\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h con guión\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l con guión\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t con guión\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b con línea\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda tachada\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z con línea\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"parada glotal invertida con línea\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g con línea\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o con línea y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"pequeña e con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y con trazo\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo y gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"parada glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"parada invertida glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"de lado O con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"larga s con trazo diagonal\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"pequeña s larga con trazo alto\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta convertido\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s larga con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta pequeña latina\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s larga\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b con barra encima\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tono seis\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c con gancho\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d con barra encima\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f con gancho\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k con gancho\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l con barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n con pierna derecha larga\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o con cuerno\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"dos tonos\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter invertido Esh bucle\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t con palatal gancho\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u con horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh invertido\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh con cola\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tono cinco\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz con acento\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae con macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh con acento\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e convertido\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae con acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s con cola cruzada\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z con cola swash\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q con cola de gancho\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"convertida en una\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alfa minúscula latina\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"convertida en alfa\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"abierta o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d con cola\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"invertida E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e abierta\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina invertida E abierta con gancho\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"cerrada invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"escritura latina de letras pequeñas G\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"cuerno de carnero de letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"girada h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"pequeña letra latina Heng con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"latín letra minúscula Iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l con cinturón\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"letra L latina pequeña con gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"girada m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"vuelta M con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n con gancho izquierdo\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"letra minúscula omega\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"latin Small Letter Closed Omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"vuelta r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"vuelta R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"vuelta R con gancho\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"R con cola\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"invertida R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"S con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña en cuclillas invertida Esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"Esh minúscula latina con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"vuelta t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"T con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"Letra de letra pequeña latina U\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"Upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"V con gancho\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"convertida V\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"girada w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"vuelta y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"Z con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"faríngea con voz fricativa\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertida parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"estirada c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"Carta Bilabial Click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"cerrada abierta e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"vuelta k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q con gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Dz Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Tc Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percusion bilabial\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"de percusión bidental\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"vuelta ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"convertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"convertida i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"de lado O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"de lado abierto O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"vuelta oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"mitad superior O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"Letra latina, letra inferior, mitad inferior O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"hacia los lados U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"de lado diaeresizada U\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"girada hacia los lados M\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"Carta latina expresada espirante laríngeo\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"B con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"D con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"F con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"M con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"N con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"P con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"R con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo y tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"S con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"T con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z con tilde media\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"girada g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th con tachado\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"B con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"D con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"F con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"G con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"K con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"L con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"M con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"N con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"P con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"R con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"S con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina Esh con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"V con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"X con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"Z con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"Alfa latina pequeña letra con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"D con gancho y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"pequeña E con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"E Pequeña Open con Gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"E abierta invertido con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"I con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"pequeña latina Open O con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"Esh de letra pequeña latina con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"U con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con gancho retroflex\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n precedida por apóstrofe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a aguda\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a con anillo\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"eñe\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o aguda\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"Y aguda\",\"defaultMP\":\"ye aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y diéresis\",\"defaultMP\":\"ye diéresis\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a barra\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a con breve\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c con carón\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d con carón\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e con breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e con carón\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g con breve\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g con cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i con tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i con breve\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sin punto\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l con agudo\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l con carón\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l con punto mediano\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n con carón\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o con breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r con carón\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s con agudo\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s con carón\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t con carón\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u con tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u barra\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u con breve\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z con agudo\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z con punto\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z con carón\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k con acento\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j con acento\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g con agudo\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n con grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i con Breve invertida\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r con doble sepulcro\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h con caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"con un punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e con cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o con punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y con Macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"s in punto j\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a con anillo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g con macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h con breve debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u con diéresis debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w con grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a con medio derecho de anillo\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y con grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y con tilde\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combinando a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combinando e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combinando i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combinando o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combinando u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combinando c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combinando d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combinando h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combinando m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combinando r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combinando t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combinando v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combinando x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subíndice i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subíndice r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subíndice u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subíndice latino letra pequeña V\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combinando r abajo\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combinando letra minúscula en latín, aplanado, abierto arriba\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combinando ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combinando ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combinando av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combinando Letra Pequeña Latina C Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combinando insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combinando la eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combinando g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combinando k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combinando l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combinando n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combinando s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combinando larga s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combinando z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superíndice i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superíndice n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subíndice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subíndice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subíndice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subíndice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subíndice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subíndice h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subíndice k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subíndice l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subíndice m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subíndice n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subíndice p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subíndice s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subíndice t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subíndice j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"concha de tortuga con corchetes mayúscula S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"cruzada negativa cuadrada Mayúscula P\"}}}]\n,\n\"es/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto arriba y macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo y macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ring above y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con diaéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con dot above y macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con cedilla y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"mayúscula E with cedilla and breve\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con diéresis y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y acute\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con macrón y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and acute\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and grave\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and hook above\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con cuerno y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y punto debajo\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A grave\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"mayúscula A aguda\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"mayúscula C cedilla\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E grave\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"mayúscula E aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"mayúscula E diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"mayúscula I grave\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula I aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"mayúscula I acento circumflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula Ñ\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O grave\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula O aguda\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U grave\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U aguda\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y aguda\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"mayúscula A barra\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con carón\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con carón\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"mayúscula E barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con carón\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con breve\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con breve\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"mayúscula J con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con agudo\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con carón\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto mediano\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"mayúscula n con carón\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble acento agudo \"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con carón\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con carón\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U barra\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con anillo arriba\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble acento agudo\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con agudo\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con carón\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con acento\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"mayúscula con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"mayúscula a con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"mayúscula con un punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Mayúscula Y con Macron\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"mayúscula F con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con breve debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con grave\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z with line below\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con grave\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con tilde\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/math_angles.js\": \n[{\"locale\":\"es\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con arco\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con flecha zigzag hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"ángulo sólido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Ángulo medido de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Variante de ángulo recto con cuadrado\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"ángulo recto medido con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Ángulo con S dentro\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Ángulo agudo\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Ángulo esférico de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Apertura de ángulo esférico\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Ángulo de giro\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Ángulo invertido\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"ángulo con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"ángulo inverso con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"category\":\"Sm\"}]\n,\n\"es/symbols/math_arrows.js\": \n[{\"locale\":\"es\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flecha derecha\",\"defaultMP\":\"flecha\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flecha abajo\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda tachada\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con doble punta\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flecha derechaa con doble punta\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con cola\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con cola\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda de barra\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"barra con flecha\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flecha derecha de barra\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flecha con barra\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo con base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con gancho\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flecha con gancho\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con lazo\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flecha con lazo\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda y derecha\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flecha zigzag abajo\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha desde esquina inferior\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo desde esquina izquierda\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flecha noroeste a barra larga\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra arriba de flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha arriba de flecha izquierda\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a la izquierda de flecha abajo\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda arriba de flecha derecha\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"dos flechas\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda tachada\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"flecha doble tachada\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"flecha doble\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda-derecha\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"flecha doble vertical\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia noroeste\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia nordeste\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudeste\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudoeste\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"flecha triple izquierda\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"flecha triple\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flecha vacía\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba desde barra\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba en el pedestal\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra vertical\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca en pedestal\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia la derecha de la pared\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flecha del noroeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flecha del sudeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha blanca\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con círculo pequeño\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to the right of downwards arrow\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con doble trazo vertical\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con punta vacía\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flecha electrica\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"flecha arriba entre dos barras horizontales\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"círculo roto con la flecha del noroeste\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cabeza ancha\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste pesada\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flecha pesada del noreste\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"punto de dibujo Flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con punta redonda redonda\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo pesado\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"triángulo punteado hacia la flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo de trazo pesado\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha negra\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"punta de flecha tridimensional hacia la derecha hacia arriba\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"punta de flecha hacia la derecha con iluminación inferior en tres dimensiones\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"punta de flecha negra hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia abajo y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia arriba y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"squat Black Arrow hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de color negro cóncava puntiaguda pesada\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"sombra derecha flecha blanca hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"sombra hacia la izquierda blanca a la izquierda\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"back-Tilted Shadowed White Right Arrow\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca sombreada inclinada hacia delante\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada inferior, sombreada a la derecha, blanca\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca superior derecha sombreada pesada\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"con muesca, flecha derecha hacia abajo, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"con muescas, flecha derecha hacia arriba, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"círculo pesado blanco flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas blancas\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental de plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flecha derecha pesada con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"lágrima-flecha de flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de lágrima pesada\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña pesada\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"open-Outlined Outward Arrow\"}}},{\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flecha con más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda, desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"flecha larga en zigzag\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"izquierda Derecha Doble Flecha con Trazo Vertical\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow from bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la derecha de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"flecha triple hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flecha hacia abajo\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"leftwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"rightwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"leftwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"rightwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"rightwards arrow with dotted stem\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to bar\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"downwards arrow to bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la cola con doble trazo vertical\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow with tail\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con doble movimiento vertical\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"cola de flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante relleno a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flechas del noroeste y sureste\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flecha noreste y sudoeste\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flechas a noroeste y nordeste\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flechas a nordeste y sudeste\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flechas a suddeste y sudoeste\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flechas a sudoeste y noroeste\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste Cruzando Flecha Noreste\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing South East Arrow\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"caída en diagonal que cruza la flecha noreste\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"creciente Cruce de la Cruz del Sureste de la Flecha\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing North West Arrow\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"north West Arrow Crossing North East Arrow\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flecha que apunta hacia la derecha y luego curva hacia arriba\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha que gira hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la derecha en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la izquierda en sentido antihorario\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arco superior flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arco inferior flecha hacia la izquierda\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"giro negativo\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"giro positivo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha semicircular inferior derecha\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"flecha inferior izquierda semicircular en sentido antihorario\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en sentido contrario a las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en el sentido de las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre la flecha corta hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre la flecha corta hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"flecha corta hacia la derecha arriba flecha hacia la izquierda\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flecha con más suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con más abajo\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de X\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de círculo\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"dos cabezas de flecha hacia arriba desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flecha con igual\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flecha con tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"flecha con casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de menos de\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flecha con mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con incluido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través del subconjunto\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con contiene\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha inversa\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a través del círculo\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"diamante negro con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"círculo negro con flecha hacia abajo\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"integral con flecha hacia la izquierda con garfio\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noreste\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del sureste\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noreste\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flecha negra sur este\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con círculo pequeño\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con un círculo más\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"flecha de flecha larga hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flecha triple de dos cabezas hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con tallo punteado\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"ola flecha apuntando directamente a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"signo de igual flecha arriba a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de mayor-que\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"operador de tilde sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flecha ascendente de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flecha de medio ancho hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo de medio ancho\"}}}]\n,\n\"es/symbols/math_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"p de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra pi\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra gamma\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Gamma\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Pi\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra suma de n-ary\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"mayúscula D\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra cursiva j\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto j\"}},\"key\":\"1D6A5\"}]\n,\n\"es/symbols/math_delimiters.js\": \n[{\"locale\":\"es\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo\",\"defaultMP\":\"paréntesis\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho\",\"defaultMP\":\"cierra paréntesis\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"corchete izquierdo\",\"defaultMP\":\"abre corchetes\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho\",\"defaultMP\":\"cierra corchetes\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"llave izquierda\",\"defaultMP\":\"abre llaves\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"llaves derecha\",\"defaultMP\":\"cierra llaves\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo con pluma\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho con pluma\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"corte inferior derecho\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"corte inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"corte superior derecho \"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"corte superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"ángulo superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"ángulo superior derecho\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"mitad superior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"mitad inferior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular derecho\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"extensión del soporte cuadrado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte cuadrado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"pedazo medio rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"soporte izquierdo rizado gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"pedazo medio de soporte rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior derecha rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"extensión integral\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"extensión de línea horizontal\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"izquierda arriba o derecho debajo sección llave\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"derecha arriba o izquierdo debajo sección llave\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"suma superior\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"parte inferior de la suma\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"corchete superior\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"corchete inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado inferior sobre soporte cuadrado superior\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"parte inferior del símbolo radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical derecha\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"corchete rizado superior\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"corchete rizado inferior\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"corchete superior en tortuga\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"corchete inferior en tortuga\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"ornamento de paréntesis izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"adorno de paréntesis medio derecho\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis izquierdo aplanado medio\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis derecho medio aplanado\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en el ángulo que apunta hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en ángulo recto que apunta hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte de concha de tortuga izquierda ligera\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"ornamento de corchete derecho tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado derecho medio\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador izquierdo de bolsa de s-formó\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador derecho de bolsa de s-formó\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"corchete vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío derecho \"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano derecho\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"soporte rizado blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"derecha rizado blanco soporte\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"left white paren\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"right white paren\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"notación Z izquierda soporte de imagen\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"corchete de imagen derecha de notación Z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga negra izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"abrazadera de concha de tortuga negra derecha\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"valla izquierda ondulada\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"valla derecha ondulada\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo orientada hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"soporte superior izquierdo superior\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"medio soporte superior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"medio soporte inferior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"soporte U lateral izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"lado derecho U soporte\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"doble paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"paréntesis doble derecho\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo recto\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble derecho\",\"defaultMP\":\"cierra paréntesis angular doble\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"soporte de la esquina izquierda\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Izquierdo Negro\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Negro Derecho\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"soporte de caparazón de tortuga blanca izquierda\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga blanca derecha\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"corchete vacío\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\",\"defaultMP\":\"cierra corchete vacío\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"comilla doble invertida\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"comillas bajas dobles\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo adornado\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho adornado\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco vertical derecho\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"llave superior\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"llave inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro derecho vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte vertical doble ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte de ángulo recto doble vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular superior\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina blanco vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha blanca\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical derecho\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"pequeño paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"corchete Rizado Izquierdo Pequeño\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"corchete derecho rizado pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"soporte de concha pequeña tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"pequeño corchete derecho de concha de tortuga\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"corchete rizado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"corchete de esquina izquierda de medio ancho\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha de medio ancho\"}}}]\n,\n\"es/symbols/math_geometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas horizontales\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Vertical\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Ligero Cuadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Luz Cuadruple Tablero Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Vertical\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Abajo Ligero y Derecho Pesado\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos ligeros\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​abajo y derecha\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia abajo y hacia la izquierda\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta Pesadas y Ligeras\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y derechos\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta livianos y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesado y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia arriba y hacia la izquierda\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesados ​​y rectos hacia abajo\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos arriba ligeros\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y rectas ligeras\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y rectos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba livianos y rectos para abajo pesados\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y derechas\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y izquierdo pesado\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Pesado y Izquierda Abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros e izquierdos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y Izquierda Abajo Pesado\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales e izquierdas\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesados ​​y derecha abajo luz\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, derecha, pesada y izquierda abajo, luz\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja de luz derecha y izquierda abajo pesado\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja izquierda ligera y derecha abajo pesada\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesada y derecha arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, livianos y a la izquierda, pesados\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Arriba Pesada\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores sencillos\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Pesada y Derecha Vertical Luz\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Vertical Ligera y Horizontal Pesada\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba pesados ​​y abajo luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hacia abajo pesados ​​y hacia arriba luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y horizontales ligeras\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Arriba Pesada y Derecha abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha arriba pesada y izquierda abajo luz\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, izquierda abajo, pesada y derecha arriba, ligera\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja derecha abajo pesada y izquierda arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y ascendentes horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y para abajo horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, ligeros y a la izquierda, verticales, pesados\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Vertical Pesada\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y horizontales\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Vertical\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha doble\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha doble\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo con separador doble\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho con separador doble\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"delimitador superior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"delimitador superior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical sencillo y horizontal doble\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical doble y horizontal sencillo\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores dobles\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco abajo y derecha\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco hacia abajo y hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco arriba y a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos de luz arco arriba y derecha\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior derecha a inferior izquierda\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior izquierda a inferior derecha\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz diagonal cruz\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas se iluminan\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos pesado derecho\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Ligero Izquierda y Pesada Derecha\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas iluminados y pesados\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Izquierda y Luz Derecha\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y ligeros\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"bloque mitad superior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"bajar un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto inferior\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos más bajo\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"bloque mitad inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"bloque inferior de cinco octavos\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos más bajo\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"lower Seven Eighths Block\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"bloque\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"bloque de siete octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"bloque de cinco octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"media cuadra izquierda\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"izquierda un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"media cuadra derecha\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"sombra ligera\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"sombra media\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"sombra intensa\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"upper One Eighth Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"a la derecha un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo e inferior derecho\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con esquinas redondeadas\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco que contiene cuadrado pequeño negro\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno horizontal\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno vertical\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado ortogonal\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la esquina superior izquierda a la derecha inferior\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la parte superior derecha hacia abajo izquierda Relleno\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado diagonal\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectángulo negro\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectángulo\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectángulo relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"rectángulo vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"paralelogramo negro\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"paralelogramo\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"indicador de apuntar hacia la derecha negro\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"puntero de apuntar hacia la derecha blanco\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"puntero relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"puntero señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"diamante\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"diamante vacío contiene diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"ojo de pez\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"rombo\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"círculo vacío\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"círculo punteado\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"círculo con relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"blanco\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"círculo relleno\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad inferior rellena\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad superior rellena\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"semicírculo izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"semicírculo derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"bullet inversa\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"círculo vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arco superior izquierda\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arco superior derecha\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arco inferior derecha\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arco inferior izquierda\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"semicírculo inferior\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"cuadrado con bisectriz\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triángulo vacío con punto\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"círculo grande\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior derecho\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha superior diagonal negra\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad diagonal izquierda inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"diamante con Mitad Izquierda Negro\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad derecha negra\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"cuadrado punteado\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"cuadrado grande negro\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"gran Plaza Blanca\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentágono negro\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexágono negro\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagonal negro horizontal\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"circulo grande negro\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"diamante Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"diamante blanco medio\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"lozenge Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"pastilla blanca mediana\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"pequeño diamante negro\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal negro\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal blanco\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Negro\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Blanco\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"estrella media vacía\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña rellena\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentágono negro que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"círculo grande pesado\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"óvalo pesado con interior oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"círculo pesado con círculo dentro\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"círculo pesado\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"saltire en círculo pesado\"}}}]\n,\n\"es/symbols/math_harpoons.js\": \n[{\"locale\":\"es\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"arpón izquierdo arriba de arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"arpón derecho arriba de arpón izquierdo\"}},\"category\":\"So\"},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha abajo arpón\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha arriba arpón\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"arriba barb izquierda abajo barb derecha arpón\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha arriba arpón\"}}},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha abajo arpón\"}}},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda a barra\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con la barra izquierda a la barra\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba de la barra\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa arriba del bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con barra izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas arriba arriba arpón a la izquierda con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón ascendente con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la derecha con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia abajo con lengüeta a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba arriba arpón a la derecha con púa arriba\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo arriba arpón a la derecha con púa abajo\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la izquierda con púas arriba\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo arriba arpón a la izquierda con púa abajo\"}}},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la izquierda con barra\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la derecha con barra\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón hacia abajo con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia arriba con pica a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"cola de pescado izquierda\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"cola de pescado derecha\"}}},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"barra con doble gancho\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"cola de pez abajo\"}}}]\n,\n\"es/symbols/math_non_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"h barra\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B símbolo de barra\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"signo de número\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"derechos de autor de sonido\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"receta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"respuesta\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"marca de servicio\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"señal de telefono\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versículo\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohmio invertido\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"grados kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Símbolo estimado\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"mayúscula F invertida\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"fuente de información\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"capital rotado Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"signo de fax\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"invertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"convertido en sans serif mayúscula Y\"}}}]\n,\n\"es/symbols/math_symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorial\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"comillas\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"almuhadilla\",\"defaultMP\":\"signo de número\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dólar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"porciento\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prima\",\"defaultMP\":\"apóstrofo\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barra oblicua\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"dos puntos\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"punto y coma\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"menor que\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"igual\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"mayor que\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"interrogación derecho\",\"defaultMP\":\"cierra interrogación\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arroba\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barra inversa\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circunflejo\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"subrayado\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"admiración izquierdo\",\"defaultMP\":\"abre admiración\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centavo\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"libra esterlina\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"moneda\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barra vertical partida\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"sección\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diéresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"ordinal femenino\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares izquierda\",\"defaultMP\":\"abre comillas angulares\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"negación\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"barra\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"grado\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"más menos\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"párrafo\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"punto medio\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"ordinal masculino\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares derecha\",\"defaultMP\":\"cierra comillas angulares\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"interrogación izquierdo\",\"defaultMP\":\"abre interrogación\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"dividido\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"punto en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"anillo en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"doble acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"guión no rompible\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"figura Dash\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"en raya\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"em raya\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barra horizontal\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"línea baja doble\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"comilla izquierda\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"marca de comillas simple con inversión alta-9\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"doble comilla\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"doble comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"doble comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"doble alto-invertido-9 comillas\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"daga\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"doble daga\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"bala triangular\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"líder de un punto\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"dos puntos líder\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"punto de separación\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"tanto por millar\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"tanto por diez mil\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prima\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"tercera\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"doble acento grave\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"prime Prime invertido\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"signo de intercalación\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"comillas izquierda\",\"defaultMP\":\"abre comillas\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"comillas derecha\",\"defaultMP\":\"cierra comillas\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marca de referencia\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"doble signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"barra superior\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"undertie\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"ligadura\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"punto de inserción\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"asterismo\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"guión bala\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barra de fracción\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"doble signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"pregunta Signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de exclamación\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"signo de Pilcrow invertido\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la izquierda\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la derecha\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"bajo asterisco\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"punto y coma invertido\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"cierre superior\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"dos asteriscos alineados verticalmente\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"signo de menos comercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"swung Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"ropa interior invertida\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"signo de puntuación de la flor\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"puntuación de tres puntos\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"cuarta\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"puntuación de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"puntuación de cinco puntos\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"puntuación de dos puntos\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"marca de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"cruz punteada\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"cuatro puntos verticales\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"superscript Plus Sign\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"superíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"superscript Equals Sign\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo superíndice\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho superíndice\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice más\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"subíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice es igual\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"subíndice paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"subíndice de paréntesis derecho\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"línea de propiedad\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"ampersand convertido\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"por signo\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"torneado pequeño f\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"para todo\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complementario\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"no existe\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incremento\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"no perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"no comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"fin de demostración\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"producto\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sumatorio\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"menos más\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"punto más\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"barra de división\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"asterisco\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"raíz\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"raíz cúbica\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"raíz cuarta\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proporcional a\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infinito\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"ángulo recto\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"ángulo medido\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"ángulo esférico\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"divide a\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"no divide a\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"no paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"integral doble\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"integral triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"integral de contorno\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"integral de superficie\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"integral de volumen\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"por lo tanto\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"porque\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"razón\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proporción\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"punto menos\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"exceso\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proporción geométrica\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homotecia\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"tilde invertido\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s horizontal invertida\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoide\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"producto de guirnalda\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"no tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"menos tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"no asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"aproximado pero no igual a\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"aproximado\",\"defaultMP\":\"casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"no es casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"igual o casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"todo igual a\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geométricamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"se acerca al límite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geométricamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a o imagen de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"imagen de o aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"dos puntos igual\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"igual dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"igual incluyendo anillo\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"igual anillo a\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"corresponde a\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estima a\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"equiangular con\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"igual con estrella\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"igual con delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"igual por definición a\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"medido por\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"igual con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"no es igual a\",\"defaultMP\":\"distinto de\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"no es idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"estrictamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"no menor que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"no mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"no menor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"no mayor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"menor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"mayor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"no menor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"no mayor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"no menor ni mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"no mayor ni menor que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"precede a\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"sigue a\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"precede o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"sigue o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"no precede a\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"no sigue a\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"no incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"no contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"incluido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"no incluido ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"no contiene ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"incluido estrictamente en\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"contiene estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"producto de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"unión de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"por en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"anillo en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"asterisco en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"igual en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"más en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"menos en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"veces en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"punto en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"perpendicular invertida\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"afirmación\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modela\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"verdadero\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"triple barra vertical torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"no prueba\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"falso\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"no obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho negada\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"precede respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"sigue respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"imagen de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multifunción\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matriz hermitiana conjugada\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"interpola\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"o excluyente\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"no y\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"no o\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triángulo rectángulo\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"operador diamante\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"estrella\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"dividido por\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"moño\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"factor normal izquierdo producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"factor normal derecho producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto derecho\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"tilde invertida igual a\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"o rizada\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"y rizada\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doble incluido\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doble contiene\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doble intersección\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doble unión\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"bieldo\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"paralela o igual a\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"menor igual o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"mayor igual o menor que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"no precede ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"no sigue ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"no es imagen cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"no es original cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"menor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"mayor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"precede no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"sigue no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"no subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"no es subgrupo normal ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos verticales\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos altos\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales subiendo\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales bajando\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"pertenece con trazo horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra vertical al fin de raya horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"pertenece en pequeño con trazo vertical\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"pertenece con punto arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"pertenece con dos trazos horizontales\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contiene con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"perteneciente con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"z anotación asociación de bolsa\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diámetro\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"casa\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"en proyectividad con\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"en perspectividad con\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"línea ondulada\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"no invertido\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastillas cuadradas\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arco\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segmento\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"sector\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"signo más pesado\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"signo menos pesado\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"signo de la división pesada\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"bucle rizado\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"doble bucle rizado\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"triángulo encerrando triángulo\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"atrás tajo antes de subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sobreconjunto antes de tajo\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barra vertical con golpe horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonal matemático de levantamiento\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"división larga\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente matemática\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico Y\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico O\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"diamante blanco con punto centrado\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"y con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"elemento de apertura hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"izquierdo exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"derecho exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"lleno exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"izquierdo y derecho doble torniquete\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"doble T horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multifunción por la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"t horizontal derecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"t horizontal izquierda larga\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa con círculo arriba\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"pastilla dividida por regla horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo vacío\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"cruce en diagonal Cruce en diagonal Caída en diagonal\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente Cruce diagonal ascendente\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"delimitador de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"punto de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"tipo de notación Z Colon\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"valla punteada\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"zigzag en vertical\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío invertido\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"círculo con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"paralelas en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"círculo inverso solidus\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendicular en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"círculo dividido por barra horizontal y mitad superior dividido por barra vertical\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"x superimpresa en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"bullet vacía en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"bullet en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"menor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"mayor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"círculo con círculo a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal ascendente\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal descendente\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"asterisco cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"pequeño círculo cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"cuadrado cuadrado\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"dos cuadrados unidos\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triángulo con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triángulo con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s en triangulo\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triángulo hacia la derecha sobre triángulo hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o igual a\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Derecha Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"pajarita Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"tiempos con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"tiempos con la mitad derecha negra\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"reloj de arena blanco\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"reloj de arena negro\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infinito incompleto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"empate sobre el infinito\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"no infinito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multimapa de doble extremo\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"cuadrado con contorno contorneado\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"aumenta como\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"shuffle Product\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"igual tachado doble \"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"igual con tilde, con doble tachado\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"idéntico a con doble tachado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"termodinamica\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad izquierda negra\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad derecha negra\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"rombo relleno\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"plaza blanca con error\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"error en la Plaza Negra\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"error White Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"error Black Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con error\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"círculo negro con barras de error\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"operador de Solidus Inverso\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"solidus inverso con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"sólido grande\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"sólido inverso grande\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"doble Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"minúsculo\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"operador de puntos circulares N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"operador N-Ary Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"operador de los tiempos en círculo de N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"operador de la unión N-Ary con punto\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"n-Ary Union Operator con Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"operador de intersecciones cuadradas N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"n-Ary Square Union Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"dos lógico y operador\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"dos lógico u operador\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"operador de N-Ary Times\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"modulo dos sumas\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"suma con Integral\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"operador integral cuádruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"integral con Doble Trazo\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"promedio Integral con Slash\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"integral en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"integral lineal para rectángulo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"integral lineal para semicírculo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"integral lineal excluyendo el polo\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"integral en torno de un punto operador\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"operador integral para cuaterniones\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"integral con Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"integral con Intersección\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"integral con union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"integral con Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"integral con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"unirse\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"operador de triángulo izquierdo grande\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composición de esquemas de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"esquema de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"proyección del esquema de notación Z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"más con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"más con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"tilde con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"más con punto inferior\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"tilde con más\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"más con 2 suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"signo más con triángulo negro\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"menos con coma\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"menos con punto inferior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos que caen\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos crecientes\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"producto vectorial\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"por con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"por con subrayado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto con fondo cerrado\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"por en círculo con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"por en anillo\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"división en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"más en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"menos en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"por en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"producto interior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"producto interior derecho\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"notación Z Composición Relacional\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersección con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"unión con signo de menos\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"unión con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersección con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersección con and\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"unión con or\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"unión sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersección sobre unión\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"unión sobre barra, sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersección sobre barra, sobre unión \"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"unión y unión\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"intersección e intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"unión cerrada\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersección cerrada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada doble\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada doble\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"unión cerrada con por\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"lógico y con punto arriba.\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"lógico o con punto arriba\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical or\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"lógica o superpuesta, lógica y\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"logical and with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"logical or with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"logical and with horizontal dash\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"logical or with horizontal dash\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble Overbar\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"logical and with underbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble barra inferior.\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"pequeño Vee con Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra.\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"notación Z Dominio Antirestricción\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"rango de notación Z Antirestricción\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"igual con punto suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"idéntico con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con triple movimiento vertical\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"tilde con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"operador de tilde con puntos crecientes\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similares menos similares\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruente con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"igual a Asterisco\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"casi igual con ángulo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual o igual a\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"igual con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"igual con más\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"igual con operador tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"igual con dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"igual doble\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"tres signos de igualdad consecutivos\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"igual entre cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"equivalente con cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"menor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"mayor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"menor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"mayor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"menor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"mayor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"menor que una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"mayores y una sola línea no son iguales a\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"menor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"mayor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"menos que arriba de la doble línea igual por encima de mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"más que arriba de la línea doble igual sobre menos que\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"menor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"menor, similar o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"menor, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"mayor, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor o menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o mayor que\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"mayor o igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o mayor que\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"equivalente o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"mayor o similar a\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similar, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similar, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"doble anidada menor que con barra inferior\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"menor que, mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"más reducido que\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"más amplio que\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"más reducido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"más amplio o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"sucede por encima de la línea de igual signo\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"precede por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"precede arriba del signo igual\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"sucede por encima del signo igual\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precede estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"sigue estrictamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"precede por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"precede arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de no casi igual a\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"precede mucho antes\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"sigue mucho después\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"subrelación de\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"contiene como subrelación a\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"incluido con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"contiene con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"incluido con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"contiene con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"incluido con punto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"contiene con punto o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"subconjunto de signo igual arriba\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"superconjunto de signo igual arriba\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"incluido aproximadamente en\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"contiene aproximadamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"subconjunto de Arriba Casi Igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"subconjunto de lo anterior no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la izquierda cuadrada\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la derecha cuadrada\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"incluido con cierre en\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"incluido el cierre o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"está incluido o contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"incluido doblemente en\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"contiene doblemente a\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"perteneciente dirigido hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcación\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"tachuela Izquierda Corta\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"tachuela corta hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendicular con s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"barra vertical Torniquete a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"barra vertical doble Torniquete izquierdo\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete izquierdo\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"barra con perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"tachuela doble\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"barra vertical con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"barra con círculo inferior\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"paralela con marca\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"paralela con tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relación binaria de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"barra vertical triple con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"operador Triple Colon\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"triple anidada menos que\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"triple anidado mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada menor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada mayor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relación Binaria Triple Sólida\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"operador de barra vertical triple grande\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"operador Doble Sólido\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca N-Ary\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para colon vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para punto y coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de exclamación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de interrogación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para elipsis horizontal vertical\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para líder vertical de dos puntos\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea vertical baja\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea baja ondulada vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo blanco\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"línea discontinua\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"centinela Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"ondulado Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"doble Ondulado Ondulado\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"línea baja discontinua\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"línea baja de línea central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"línea baja ondulada\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"comas pequeñas\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"parada completa pequeña\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"pequeño punto y coma\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"pequeño colon\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de exclamación\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"pequeño Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"signo de número pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"ampersand pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"pequeño asterisco\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"signo más pequeño\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"pequeño guión-menos\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"signo menor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"signo mayor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"signo pequeño igual\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"división entera\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de dólar\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"pequeño comercial en\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"signo de exclamación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"comillas de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"número de signo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"signo de dólar de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"ampersand de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apóstrofe de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"asterisco de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"coma de ancho completo\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"ancho de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"fullwidth Full Stop\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"sólido de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"ancho completo de colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"punto y coma de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"ancho completo menos de la señal\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"signo de igual ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"ancho completo mayor que el signo\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"comercial de ancho completo en\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"sólido inverso de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"acento circunflejo de ancho completo\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"línea baja de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"acento grave de ancho completo\"}}},{\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"signo de centavo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"signo de libra de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"fullwidth no firmar\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"ancho completo macron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"barra rota de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"signo de yen de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo ganado\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"formas de ancho medio luz vertical\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"medio ancho cuadrado negro\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"círculo blanco de medio ancho\"}}}]\n,\n\"es/symbols/math_whitespace.js\": \n[{\"locale\":\"es\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espacio\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"guión corto\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"en quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"em Quad\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"espacio Six-Per-Em\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"ancho de cero no ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"ancho de cero ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marca de izquierda a derecha\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marca de derecha a izquierda\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"separador de linea\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"separador de párrafo\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"incrustación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"incrustación de derecha a izquierda\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"formato direccional pop\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"anulación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"anulación de derecha a izquierda\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espacio estrecho sin descanso\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Cf\"},{\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibir el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activar el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nacionales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nominales\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancla de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"separador de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminador de anotación interlinear\"}}}]\n,\n\"es/symbols/other_stars.js\": \n[{\"locale\":\"es\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"símbolo exponente decimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"estrella rellena\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"estrella vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"círculo blanco medio\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"círculo negro medio\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada blanca\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"multiplicación x\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"multiplicación pesada X\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"boleta pesada X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"centro abierto de la cruz\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"pesado centro abierto cruz\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"cruz de Malta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"estrella de David\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de lágrima\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"pesado Cuatro asterisco impulsado por globo\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de club-spoked\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"estrella de cuatro puntas negra\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"estrella blanca de cuatro puntas\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"destellos\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"estrés subrayado estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"estrella blanca circulada\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"centro Abierto Estrella Negra\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"centro negro estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"contorneado negro estrella\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"estrella negra contorneada pesada\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"pinwheel Star\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"estrella blanca sombreada\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"centro abierto de asterisco\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco hablado\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas de molinete en punta\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"estrella rellena de seis puntas\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"doce estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"dieciséis asteriscos en punta\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"asterisco con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"centro abierto con asterisco con forma de lágrima\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"seis pétalos de florette en blanco y negro\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"florette negro\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"florette blanco\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"ocho Petalled Outlined Black Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"círculo abierto centro ocho estrellas señaladas\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado del molinillo de viento\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"copo de nieve\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"copo de nieve trifolio apretado\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"copo de nieve pesado de Chevron\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"brillar\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"chispa pesada\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco de hélice con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"heavy eight asterisk de hélice en forma de lágrima\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"marca de la cruz\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"círculo blanco sombreado\"}}}]\n,\n\"es/units/energy.js\": \n[{\"locale\":\"es\"},{\"key\":\"W\",\"names\":[\"W\",\"w\"],\"mappings\":{\"default\":{\"default\":\"watt\"}},\"category\":\"energy\"},{\"key\":\"kW\",\"names\":[\"kw\",\"kW\"],\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"category\":\"energy\"},{\"key\":\"mW\",\"names\":[\"mw\",\"mW\"],\"mappings\":{\"default\":{\"default\":\"miliwatt\"}},\"category\":\"energy\"},{\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"],\"mappings\":{\"default\":{\"default\":\"kilowatt hora\"}},\"category\":\"energy\"},{\"key\":\"J\",\"names\":[\"J\"],\"mappings\":{\"default\":{\"default\":\"Joule\"}},\"category\":\"energy\"},{\"key\":\"N\",\"names\":[\"N\"],\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\"},{\"key\":\"A\",\"names\":[\"A\"],\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\"},{\"key\":\"V\",\"names\":[\"V\"],\"mappings\":{\"default\":{\"default\":\"Voltio\"}},\"category\":\"energy\"},{\"key\":\"µΩ\",\"names\":[\"µΩ\"],\"mappings\":{\"default\":{\"default\":\"microohmio\"}},\"category\":\"energy\"},{\"key\":\"mΩ\",\"names\":[\"mΩ\"],\"mappings\":{\"default\":{\"default\":\"miliohmio\"}},\"category\":\"energy\"},{\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"],\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"energy\"},{\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"],\"mappings\":{\"default\":{\"default\":\"kiloohmio\"}},\"category\":\"energy\"},{\"key\":\"MΩ\",\"names\":[\"MΩ\"],\"mappings\":{\"default\":{\"default\":\"megaohmio\"}},\"category\":\"energy\"},{\"key\":\"GΩ\",\"names\":[\"GΩ\"],\"mappings\":{\"default\":{\"default\":\"gigaohmio\"}},\"category\":\"energy\"}]\n,\n\"es/units/length.js\": \n[{\"locale\":\"es\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"milímetro\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"centímetro\"}},\"category\":\"length\"},{\"key\":\"m\",\"names\":[\"m\"],\"mappings\":{\"default\":{\"default\":\"metro\"}},\"category\":\"length\"},{\"key\":\"km\",\"names\":[\"km\"],\"mappings\":{\"default\":{\"default\":\"kilómetro\"}},\"category\":\"length\"},{\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"],\"mappings\":{\"default\":{\"default\":\"pies\"}},\"category\":\"length\"},{\"key\":\"in\",\"names\":[\"in\",\"in.\"],\"mappings\":{\"default\":{\"default\":\"pulgada\"}},\"category\":\"length\"},{\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"],\"mappings\":{\"default\":{\"default\":\"milla\"}},\"category\":\"length\"},{\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"],\"mappings\":{\"default\":{\"default\":\"yarda\"}},\"category\":\"length\"},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"millas náuticas\"}},\"category\":\"length\"}]\n,\n\"es/units/memory.js\": \n[{\"locale\":\"es\"},{\"key\":\"b\",\"names\":[\"b\"],\"mappings\":{\"default\":{\"default\":\"bit\"}},\"category\":\"memory\"},{\"key\":\"B\",\"names\":[\"B\"],\"mappings\":{\"default\":{\"default\":\"byte\"}},\"category\":\"memory\"},{\"key\":\"KB\",\"names\":[\"KB\"],\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"category\":\"memory\"},{\"key\":\"MB\",\"names\":[\"MB\"],\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"category\":\"memory\"},{\"key\":\"GB\",\"names\":[\"GB\"],\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"category\":\"memory\"},{\"key\":\"TB\",\"names\":[\"TB\"],\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"category\":\"memory\"}]\n,\n\"es/units/other.js\": \n[{\"locale\":\"es\"},{\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"],\"mappings\":{\"default\":{\"default\":\"docena\"}},\"category\":\"other\"},{\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"],\"mappings\":{\"default\":{\"default\":\"al cuadrado\"}},\"category\":\"other\"},{\"key\":\"ha\",\"names\":[\"ha\"],\"mappings\":{\"default\":{\"default\":\"hectarea\"}},\"category\":\"other\"}]\n,\n\"es/units/speed.js\": \n[{\"locale\":\"es\"},{\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"],\"mappings\":{\"default\":{\"default\":\"nudo\"}},\"category\":\"speed\"},{\"key\":\"mph\",\"names\":[\"mph\"],\"mappings\":{\"default\":{\"default\":\"millas por hora\"}},\"category\":\"speed\"},{\"key\":\"rpm\",\"names\":[\"rpm\"],\"mappings\":{\"default\":{\"default\":\"revoluciones por minuto\"}},\"category\":\"speed\"},{\"key\":\"kmh\",\"names\":[\"kmh\"],\"mappings\":{\"default\":{\"default\":\"kilómetros por hora\"}},\"category\":\"speed\"}]\n,\n\"es/units/temperature.js\": \n[{\"locale\":\"es\"},{\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"],\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"category\":\"temperature\"},{\"key\":\"C\",\"names\":[\"C\",\"°C\"],\"mappings\":{\"default\":{\"default\":\"centígrados\"}},\"category\":\"temperature\"},{\"key\":\"K\",\"names\":[\"K\",\"°K\"],\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\"}]\n,\n\"es/units/time.js\": \n[{\"locale\":\"es\"},{\"key\":\"ns\",\"names\":[\"ns\"],\"mappings\":{\"default\":{\"default\":\"nanosegundos\"}},\"category\":\"time\"},{\"key\":\"µs\",\"names\":[\"µs\"],\"mappings\":{\"default\":{\"default\":\"microsegundos\"}},\"category\":\"time\"},{\"key\":\"ms\",\"names\":[\"ms\"],\"mappings\":{\"default\":{\"default\":\"milisegundos\"}},\"category\":\"time\"},{\"key\":\"s\",\"names\":[\"s\"],\"mappings\":{\"default\":{\"default\":\"segundos\"}},\"category\":\"time\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minutos\"}},\"category\":\"time\"},{\"key\":\"h\",\"names\":[\"h\",\"hr\"],\"mappings\":{\"default\":{\"default\":\"hora\"}},\"category\":\"time\"}]\n,\n\"es/units/volume.js\": \n[{\"locale\":\"es\"},{\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"],\"mappings\":{\"default\":{\"default\":\"barrile\"}},\"category\":\"volume\"},{\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"],\"mappings\":{\"default\":{\"default\":\"cúbico\"}},\"category\":\"volume\"},{\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"],\"mappings\":{\"default\":{\"default\":\"onzas líquidas\"}},\"category\":\"volume\"},{\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"],\"mappings\":{\"default\":{\"default\":\"galone\"}},\"category\":\"volume\"},{\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"],\"mappings\":{\"default\":{\"default\":\"pinta\"}},\"category\":\"volume\"},{\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"],\"mappings\":{\"default\":{\"default\":\"quart\"}},\"category\":\"volume\"},{\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"],\"mappings\":{\"default\":{\"default\":\"cuchara\"}},\"category\":\"volume\"},{\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"],\"mappings\":{\"default\":{\"default\":\"cucharilla\"}},\"category\":\"volume\"},{\"key\":\"cc\",\"names\":[\"cc\"],\"mappings\":{\"default\":{\"default\":\"centímetros cúbicos\"}},\"category\":\"volume\"},{\"key\":\"kl\",\"names\":[\"kl\"],\"mappings\":{\"default\":{\"default\":\"kilolitro\"}},\"category\":\"volume\"},{\"key\":\"l\",\"names\":[\"l\"],\"mappings\":{\"default\":{\"default\":\"litro\"}},\"category\":\"volume\"},{\"key\":\"ml\",\"names\":[\"ml\"],\"mappings\":{\"default\":{\"default\":\"mililitro\"}},\"category\":\"volume\"}]\n,\n\"es/units/weight.js\": \n[{\"locale\":\"es\"},{\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"],\"mappings\":{\"default\":{\"default\":\"libra\"}},\"category\":\"weight\"},{\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"],\"mappings\":{\"default\":{\"default\":\"libras imperiales\"}},\"category\":\"weight\"},{\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"],\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"weight\"},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"microgramo\"}},\"category\":\"weight\"},{\"key\":\"gr\",\"names\":[\"g\",\"gr\"],\"mappings\":{\"default\":{\"default\":\"gramo\"}},\"category\":\"weight\"},{\"key\":\"kg\",\"names\":[\"kg\"],\"mappings\":{\"default\":{\"default\":\"kilogramo\"}},\"category\":\"weight\"},{\"key\":\"mg\",\"names\":[\"mg\"],\"mappings\":{\"default\":{\"default\":\"miligramo\"}},\"category\":\"weight\"},{\"key\":\"t\",\"names\":[\"t\",\"T\"],\"mappings\":{\"default\":{\"default\":\"tonelada\"}},\"category\":\"weight\"}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/fr.js",
    "content": "{\n\"fr/functions/algebra.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degré\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"déterminant\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphisme\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"noyau\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"fr/functions/elementary.js\": \n[{\"locale\":\"fr\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"logarithme népérien\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logarithme décimal\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponentielle\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"PGCD\",\"pgcd\"],\"mappings\":{\"default\":{\"default\":\"plus grand commun diviseur\"},\"mathspeak\":{\"default\":\"pgcd\"},\"clearspeak\":{\"default\":\"pgcd\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"ppcm\",\"PPCM\",\"PPMC\",\"ppmc\"],\"mappings\":{\"default\":{\"default\":\"plus petit commun multiple\"},\"mathspeak\":{\"default\":\"ppcm\"},\"clearspeak\":{\"default\":\"ppcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argument\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"partie imaginaire\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"partie réelle\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"borne inférieure\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"mappings\":{\"default\":{\"default\":\"limite\"}},\"category\":\"Limits\",\"names\":[\"lim\"]},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"maximum\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minimum\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"borne supérieure\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"limite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"limite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"limite inductive\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"limite projective\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilité\"}},\"category\":\"Probability\"}]\n,\n\"fr/functions/hyperbolic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"cosinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"cotangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"cosécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"sécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"sinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"tangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosinus hyperbolique\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\",\"argch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cotangente hyperbolique\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\",\"argcoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosécante hyperbolique\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\",\"argcsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sécante hyperbolique\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\",\"argsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sinus hyperbolique\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\",\"argsh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument tangente hyperbolique\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\",\"argth\"]}]\n,\n\"fr/functions/trigonometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"cosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"cosécante\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"sécante\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosinus\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangente\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosécante\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sécante\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sinus\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangente\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"fr/symbols/digits_rest.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"au carré\"},\"mathspeak\":{\"default\":\"au carré\"},\"clearspeak\":{\"default\":\"au carré\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"cubique\"},\"mathspeak\":{\"default\":\"cubique\"},\"clearspeak\":{\"default\":\"cubique\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"un quart\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"un demi\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"trois quarts\"}},\"category\":\"No\"},{\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"un septième\"}},\"category\":\"No\"},{\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"un neuvième\"}},\"category\":\"No\"},{\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"un dixième\"}},\"category\":\"No\"},{\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"un tiers\"}},\"category\":\"No\"},{\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"deux tiers\"}},\"category\":\"No\"},{\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"un cinquième\"}},\"category\":\"No\"},{\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"deux cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"trois cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"quatre cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"un sixième\"}},\"category\":\"No\"},{\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"cinq sixièmes\"}},\"category\":\"No\"},{\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"un huitième\"}},\"category\":\"No\"},{\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes\"}},\"category\":\"No\"},{\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes\"}},\"category\":\"No\"},{\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes\"}},\"category\":\"No\"},{\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"numérateur un\"}},\"category\":\"No\"},{\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"zero tiers\"}},\"category\":\"No\"},{\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"vingt cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"trente cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"quarante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"cinquante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"soixante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"soixante dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"quatre vingts cerclé sur carré noir\"}},\"category\":\"No\"}]\n,\n\"fr/symbols/greek-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"Delta majuscule\"}}}]\n,\n\"fr/symbols/greek-scripts.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"petite gamma majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"petite lambda majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"petite pi majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"petite rhô majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"petite psi majuscule\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"gamma suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"phi suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"bêta souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"gamma souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"rhô souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"phi souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"khi souscrit\"}}}]\n,\n\"fr/symbols/greek-symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"bêta grec\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"ligature kai\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"epsilon lunaire réfléchi\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Digamma en gras\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"digamma en gras\"}}}]\n,\n\"fr/symbols/hebrew_letters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bèt\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guimel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dalèt\"}},\"category\":\"Lo\"}]\n,\n\"fr/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u trémaa et caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a point en chef et macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek et macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a rond en chef et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o tréma et macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde et macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o point en chef et macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cédille et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cédille et brève\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i tréma et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s accent aigu et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s point souscrit et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u macron et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a brève et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a brève et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a brève et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a brève et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a brève et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o cornu point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u cornu point souscrit\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barré\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d barré\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h barré\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l barré\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b barré\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z barré\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g barré\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o barré accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c barré\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e barré\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j barré\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r barré\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y barré\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"j sans point barré\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i barré\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"j sans point barré crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"o couché barré obliquement\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon barré\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"s long à barre diagonale\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"s long à barre haute\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta culbutée\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s long point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s long\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b potence\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"sixiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c crosse\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d potence\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f cursif\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv (Hwair)\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k crosse\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l rayé\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n à long jambage de droite\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o cornu\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"gha\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p crosse\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"deuxiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"ech réfléchi bouclé\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u cornu\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ej réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ej hameçon\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"cinquiéme tun\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ej caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lej\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ej\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ej bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"digramme Dej\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae accent aigu (ash)\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z crochet\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Qp\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"coup de glotte\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q avec hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"a culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"alpha culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b crosse\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"o ouvert\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d crosse\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"e réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa crochet\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e ouvert\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi crochet\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi fermé\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g crosse\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g cursif\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"petit gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"h culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h crosse\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"eng crosse\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l sanglé\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"m culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"m hampé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n hameçon à gauche\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o barré\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"oméga fermé\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"r culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"r prolongé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"r crosse culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r prolongé\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r sans obit\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"ech\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"ech bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"t culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u barré\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v de ronde\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"v culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"w culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"y culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"coup de glotte réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"coup de glotte culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"C étiré\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"clic bilabial\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"epsilon fermé\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"k culbuté\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"digramme Dz\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"digramme Dz bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"digramme Ts\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"digramme Tech\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"digramme Tc bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"digramme Feng\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"digramme Ls\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"digramme Lz\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percussion bilabiale\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"percussion bidentale\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"ae culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"epsilon culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"i culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"o couché\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"o ouvert couché\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"oe culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"u couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"u tréma couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"m couché\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"fricative pharyngale voisée\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"aïn\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r sans obit tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"g culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"g insulaire\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th barré diagonalement\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"ech hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d crosse et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"epsilon hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"o ouvert hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"ech hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ej hameçon rétroflexe\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n précédée d'une apostrophe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a tréma\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cédille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e tréma\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u tréma\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y tréma\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a macron\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a brève\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c point en chef\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e brève\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e point en chef\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g brève\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cédille\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i brève\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sans point\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cédille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cédille\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l point médian\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cédille\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o brève\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cédille\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cédille\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cédille\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u macron\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u brève\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z point en chef\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g accent aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cédille\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"j sans point\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a à rond souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g macron\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h brève souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u tréma souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a demi rond à droite\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"diacritique a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"diacritique e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"diacritique i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"diacritique o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"diacritique u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"diacritique c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"diacritique d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"diacritique h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"diacritique m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"diacritique r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"diacritique t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"diacritique v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"diacritique x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"i souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"r souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"u souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"v souscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"diacritique r souscrite\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"diacritique a ouvert aplati suscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"diacritique ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"diacritique ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"diacritique av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"diacritique c cédille\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"diacritique d insulaire\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"diacritique eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"diacritique g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"diacritique petite g majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"diacritique k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"diacritique l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"diacritique petite l majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"diacritique petite m majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"diacritique n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"diacritique petite n majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"diacritique petite r majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"diacritique r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"diacritique s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"diacritique s long\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"diacritique z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"exposant i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"exposant n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"indice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"indice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"indice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"indice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"indice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"souscrite h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"souscrite k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"souscrite l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"souscrite m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"souscrite n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"souscrite p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"souscrite s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"souscrite t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"j souscrite\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"s majuscule en écaille crochetée\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"c majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"r majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"P majuscule encadrée et en inversion avec croix\"}}}]\n,\n\"fr/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"A majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"A majuscule point en chef et macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"O majuscule ogonek et macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"A majuscule rond en chef et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"O majuscule tréma et macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"O majuscule tilde et macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"O majuscule point en chef et macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"C cédille et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"E macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"E macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"E cédille et brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"I tréma et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"L point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"O tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"O tilde et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"O macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"O macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"R point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"S accent aigu et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"S caron et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"S point souscrit et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"U tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"U macron et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"A brève et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"A brève et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"A brève et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"A brève et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"A brève et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"O cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"O cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"O cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"O cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"O cornu point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"U cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"U cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"U cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"U cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"U cornu point souscrit majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"A accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"A accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"A tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"A tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"C cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"E accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"E accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"E tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"I accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"I accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"I accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"I tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"N tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"O accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"O accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"O tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"O tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"U accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"U accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"U tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"Y accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"A macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"A brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"A ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"C accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"C accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"C point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"C caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"D caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"E macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"E brève majuscule\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"E point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"E ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"E caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"G accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"G brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"G point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"G cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"H accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"I tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"I macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"I brève majuscule\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"I ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"I point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"J accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"K cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"L accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"L cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"L caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"L point médian majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"N accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"N cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"N caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"O macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"O brève majuscule\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"O avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"R accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"R cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"R caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"S accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"S accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"S cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"S caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"T cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"T caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"U tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"U macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"U brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"U rond en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"U avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"U ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"W accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"Y accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"Y tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"Z accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"Z point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"Z caron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"A caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"I caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"O caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"U caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"G caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"K caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"O ogonek majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"G accent aigu majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"N grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"A double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"A brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"E double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"E brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"I double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"I brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"O double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"O brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"R double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"R brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"U double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"U brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"S virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"T virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"H caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"A point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"E cédille majuscule\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"O point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Y macron majuscule\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"A à rond souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"B point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"B point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"B ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"D point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"D point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"D ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"D cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"D accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"E tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"F point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"G macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"H point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"H point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"H tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"H cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"H brève souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"I tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"K accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"K point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"K ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"L point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"L ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"L accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"M accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"M point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"M point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"N point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"N point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"N ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"N accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"P accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"P point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"R point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"R point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"R ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"S point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"S point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"T point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"T point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"T ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"T accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"U tréma souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"U tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"V tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"V point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"W accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"W accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"W tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"W point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"W point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"X point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"X tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"Y point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"Z accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"Z point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"Z ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"A point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"A crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"E point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"E crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"E tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"I crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"I point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"O point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"O crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"U point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"U crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"Y accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"Y point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"Y crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"Y tilde majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/math_angles.js\": \n[{\"locale\":\"fr\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"angle droit avec arc\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"angle droit avec flèche en zigzag vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"angle tridimensionnel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"angle mesuré s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"variante d'angle avec carré\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"angle droit mesuré pointé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"angle avec s inscrit\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"angle aigu\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"angle culbuté\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"angle réfléchi\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_arrows.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flèche haut et bas\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flèche nord est\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flèche sud est\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flèche barrée gauche\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée gauche\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée droite\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes gauche\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes droite\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gauche\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée droite\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet gauche\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flèche haut bas sur base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet gauche\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet droite\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle gauche\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle droite\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée bilatérale\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas en zigzag\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin droit\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin gauche\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens positif\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens négatif\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest vers une barre horizontale longue\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet sur flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flèche en sens positif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flèche en sens négatif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut par dessus flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut à gauche d'une flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flèche gauche par dessus flèche droite\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"paire de flèches gauche\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le haut\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"paire de flèches droite\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le bas\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée gauche\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"double flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"double flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"double flèche haut bas\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"double flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"double flèche nord est\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"double flèche sud est\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"double flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"triple flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"triple flèche droite\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon gauche\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon droite\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec double barre\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec double barre\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée gauche\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée droite\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le bas\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flèche blanche gauche\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flèche blanche droite\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut à partir d'un taquet\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et trait horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et barre verticale\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite appuyée sur mur\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flèche sud est en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut et le bas\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à petit cercle\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"flèche descendante à gauche d'une flèche montante\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite et la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale barrée deux fois verticalement\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse gauche\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse droite\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flèche électrique\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le bas\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut entre deux traits horizontaux\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"cercle brisé à flèche nord ouest (échappement)\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à pointe large\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flèche grasse sud est\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite grasse\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flèche grasse nord est\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"flèche de traçage vers la droite\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe arrondie vers la droite\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flèche à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"flèche avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flèche grasse avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le haut\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le bas\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse courbée vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"flèche noire courbée vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"flèche noire trapue vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse à pointe concave vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'avant\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'arrière\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'arrière et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'avant et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre inférieure droite\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre supérieure droite\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessous\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessus\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à contour circulaire\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée blanche vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir sud est\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir nord est\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire sud est\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire nord est\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe larmée\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à hampe larmée\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à contour ouvert\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flèche sens antihoraire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flèche sens horaire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à signe plus cerclé\"}}},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"longue flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"longue flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"longue flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"longue double flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"longue double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"longue double flèche bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet vers la gauche\"}}},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la droite\"}}},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"longue flèche en tire bouchon droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale double barrée verticalement\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le bas\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits droite\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits droite\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes droite\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"flèche à fût pointillé droite\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"empenne gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"empenne vers la droite\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"double empenne gauche\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"double empenne droite\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest et sud est\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flèche nord est et sud ouest\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flèche nord est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flèche sud est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flèches nord ouest et nord est\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flèches nord est et sud est\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flèches sud est et sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flèches sud ouest et nord ouest\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flèche sud est sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche nord ouest\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest sur flèche nord est\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flèche bossue droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le haut\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le bas\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la gauche\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la droite\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"côté droit d'arc fléché sens horaire\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"côté gauche d'arc fléché sens antihoraire\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arc supérieur fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arc inférieur fléché sens antihoraire\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens horaire et signe moins souscrit\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens antihoraire et signe plus souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur droit sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur gauche sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontant fléchette vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant fléchette vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"fléchette vers la droite surmontant flèche vers la gauche\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontant signe moins\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers un x\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"petit cercle traversé d'une flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"petit cercle surmonté d'une flèche montante à deux têtes\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"flèche en épingle à cheveu droite\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un égal\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"presque égal à surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"inférieur à surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à travers un inférieur à\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un sous ensemble de\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers d'un sous ensemble de\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flèche gauche surmontée d'un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche droite en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche gauche en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"cercle traversé d'une flèche montante\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"losange noir à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"cercle noir à flèche vers le bas\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"intégrale à crosse fléchée gauche\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord est\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud est\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"flèche blanche bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord est\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud est\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"flèche noire bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"flèche noire haut et bas\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à petit cercle\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à signe plus cerclé\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"longue flèche vers la gauche en tire bouchon\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à fût pointillé\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers un x\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche bossue\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un égal\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à travers un inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers d'un sous ensemble de\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontée d'un opérateur tilde réfléchi\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée de l'opérateur tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"tilde réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"ilde surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas demi chasse\"}}}]\n,\n\"fr/symbols/math_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"l minuscule en script\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"fonction elliptique de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi ajouré\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"Gamma majuscule ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"Pi majuscule ajouré\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"sommation de la famille ajouré\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"D majuscule\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i ajouré en italique\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j ajouré en italique\"}}},{\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"dotless i\"}},\"category\":\"Ll\"},{\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"dotless j\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/math_delimiters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche\",\"alternative\":\"parenthèse ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite\",\"alternative\":\"parenthèse fermante\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche\",\"alternative\":\"crochet ouvrant\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"crochet droit\",\"alternative\":\"crochet fermant\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche\",\"alternative\":\"accolade ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"accolade droite\",\"alternative\":\"accolade fermante\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec pique\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec pique\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"plafond à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"plafond à droite\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"plancher à gauche\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"plancher à droite\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"repère sud est\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"repère sud ouest\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"repère nord est\"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"repère nord ouest\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"coin nord ouest\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"coin nord est\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"coin sud ouest\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"coin sud est\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"chevron droite\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"rallonge d'accolade\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"rallonge d'intégrale\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"rallonge de ligne horizontale\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure gauche ou inférieure droite d'accolade\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure droite ou inférieure gauche d'accolade\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"haut du signe de somme\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"bas du signe de somme\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"crochet vertical supérieur\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"crochet vertical inférieur\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"crochet verticaux en défilé\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"bas du radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"filet vertical gauche\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"filet vertical droit\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"parenthèse supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"parenthèse inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"accolade supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"accolade inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille supérieur\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille inférieur\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse aplatie\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse aplatie\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la gauche demi gras\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la droite demi gras\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie gauche maigre en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie droit maigre en écaille\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie gauche moyenne\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie droite moyenne\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s gauche\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s droite\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"chevron mathématique gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille blanche\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille blanche\"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche aplatie\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite aplatie\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"accolade gauche ajourée\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"accolade droite ajourée\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de gauche en notation z\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de droite en notation z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec barre souscrite\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec barre souscrite\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin supérieur\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin inférieur\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin inférieur\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin supérieur\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"chevron gauche pointé\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"chevron droit pointé\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc gauche et inférieur à\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc droite et supérieur à\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc droite et supérieur à\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc gauche et inférieur à\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"crochet noir gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"crochet noir droite en écaille\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée gauche\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée droite\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"double clôture dentelée gauche\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"chevron vers la gauche courbé\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"chevron vers la droite courbé\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"crampillon couché gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"crampillon couché droit\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"double parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"double parenthèse droite\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"anglet gauche\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"anglet droit\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré gauche\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré droit\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire droit\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire droit\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit en écaille\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime réfléchi\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime inférieur\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ornée\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ornée\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire droit vertical\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse droite verticale\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade droite verticale\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical en écaille\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical en écaille\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche lenticulaire noir vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit lenticulaire noir vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double droit vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"over angle bracket\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"under angle bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"accolade droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"crochet droit pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"accolade droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée pleine chasse *\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée pleine chasse *\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en coin demi chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"crochet droit en coin demi chasse\"}}}]\n,\n\"fr/symbols/math_geometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"filet horizontal fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"filet horizontal gras\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical fin\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical gras\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical fin\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical gras\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la droite\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la gauche\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la droite\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la gauche\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la droite\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la gauche\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et horizontal\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et horizontal\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras et horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"filet vertical et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal fin\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical fin\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical gras\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"filet double horizontal\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"filet double vertical\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"filet simple le bas et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le bas et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la droite\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et droit double\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et droit simple\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et gauche double\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et gauche simple\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et horizontal\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et horizontal\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et horizontall\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur droit au coin inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur gauche vers le coin inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin en croix\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"huitième inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"quart inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes inférieurs de pavé\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"trois quarts inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes inférieurs de pavé\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"pavé plein\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"trois quarts gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"moitié gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"un quart gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"un huitième gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"moitié droite de pavé\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"ombre légère\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"ombre moyenne\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"ombre foncée\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"huitième supérieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"huitième droit de pavé\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche inférieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit inférieur gauche et inférieur droit\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"carré blanc aux coins arrondis\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"petit carré noir inscrit dans un carré blanc\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"carré hachuré horizontalement\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"carré hachuré verticalement\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à gauche vers le bas à droite\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à droite vers le bas à gauche\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé en diagonale\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"petit carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectangle noir\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectangle blanc\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectangle vertical noir\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"parallélogramme noir\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"parallélogramme blanc\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers la droite\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la droite\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"losange noir\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"losange blanc\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"losange blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"cercle blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"losange\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"cercle en pointillés\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"cercle hachuré verticalement\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"deux cercles concentriques\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"cercle noir\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié inférieure\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié supérieure\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"cercle avec quadrant supérieur droit noir\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"disque avec quadrant supérieur gauche blanc\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"demi disque gauche noir\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"demi disque droite noir\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"point noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"cercle noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur gauchearc de cercle dans le quadrant supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"carré à moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"carré à moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure droite noire\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"carré blanc à ligne bissectrice verticale\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut pointé\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"grand cercle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur droit\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur droit\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur droit\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur droit\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale supérieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale inférieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"losange à moitié gauche noire\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"losange à moitié droite noire\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"losange à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"losange à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"carré en pointillés\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"grand carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"grand carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"très petit carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"très petit carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentagone noir\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexagone noir\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagone noir posé sur un côté\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"grand cercle noir\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"losange moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"losange moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"petit losange noir\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"petit rhombe noir\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"petit rhombe blanc\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale noire\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale blanche\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale noire\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale blanche\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"étoile blanche moyenne\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"petite étoile noire\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"petite étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentagone noir pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"grand cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"ovale gras avec ovale inscrit\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"cercle gras avec cercle inscrit\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"sautoir cerclé gras\"}}}]\n,\n\"fr/symbols/math_harpoons.js\": \n[{\"locale\":\"fr\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"harpon gauche par dessus harpon droit\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"harpon droit par dessus harpon gauche\"}},\"category\":\"So\"},{\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche dressée et droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche baissée et droite dressée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure droite et inférieure gauche\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure gauche et inférieure droite\"}}},{\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche dressées\"}},\"category\":\"Sm\"},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure droites\"}},\"category\":\"Sm\"},{\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche baissées\"}},\"category\":\"Sm\"},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure gauches\"}},\"category\":\"Sm\"},{\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée sur harpon gauche à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée par dessus harpon droit à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus harpon à dent droite dressée\"}},\"category\":\"Sm\"},{\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche baissée par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus harpon à dent gauche dressée\"}},\"category\":\"Sm\"},{\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite baissée par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"ancre gauche\"}},\"category\":\"Sm\"},{\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"ancre droite\"}},\"category\":\"Sm\"},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"ancre vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"ancre vers le bas\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_non_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"constante de planck sur deux pi\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"symbole l b barré\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"symbole numéro\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"copyright de programme sonore\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"ordonnances\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"répons\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de service\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"signe de téléphone\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de commerce\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versicule\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"symbole once\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohm culbuté\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"degré kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstroms\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"symbole estimé\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"f culbuté majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"bureau d'information\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Q majuscule couché\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"symbole télécopie\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"G culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"L culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"L réfléchi majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Y culbuté majuscule sans empattement\"}}}]\n,\n\"fr/symbols/math_symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorielle\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"petit guillemet\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"dièse\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dollars\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"pourcent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"esperluette\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prime\",\"alternative\":\"apostrophe\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"point\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"deux points\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"égale\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arobase\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circonflexe\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation renversé\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centimes\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"livres\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"symbole monétaire\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barre déjointe\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"tréma\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal féminin\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant gauche\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"négation\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"symbole marque déposée\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"macron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"degrés\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus ou moins\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"symbole micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"fin de paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cédille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal masculin\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant droite\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation renversé\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"multiplié par\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"divisé par\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"brève\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"point en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"rond en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"double accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"trait d'union\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barre horizontalle\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"double ligne verticale\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"double trait souscrit\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe culbuté\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule inférieur\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule supérieur culbuté\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double culbuté\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule double supérieur culbuté\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"obèle\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"double obèle\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"puce\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"puce triangulaire\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"point de conduite simple\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"point de conduite double\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"points de suspension\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"point de coupure de mot\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"symbole pour mille\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"symbole pour dix mille\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"prime réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"double prime réfléchi\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"triple prime réfléchi\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"chevron d'insertion\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"guillemet simple gauche\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"guillemet simple droite\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marque de référence\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"double point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"point exclarrogatif\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"tiret en chef\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"tirant souscrit\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"tirant en chef\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"lambda d'insertion\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"astérisme\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"puce trait d'union\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barre de fraction\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"double point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation exclamation\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation interrogation\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"pied de mouche réfléchi\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à droite\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à gauche\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"astérisque baissé\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"point virgule réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"resserrer\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"deux astérisques alignés verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"moins commercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"tiret ondé\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"dos d'âne souscrit\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"point fleur\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"trois points\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"quatre points en losange\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"cinq points en quinconce\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"deux points en capitale\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"quatre points en croix\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"croix pointée\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"trois points vertical\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"quatre points vertical\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"exposant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"exposant signe moins\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"exposant signe égal\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"indice signe plus\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"indice signe moins\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"indice signe égal\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse droite\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"limite de propriété\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"perluète culbutée\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"symbole per\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"minuscule f culbuté\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"pour tous\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complément\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"il existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"il n'existe pas\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"ensemble vide\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incrément\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"n'appartient pas à\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"ce qu'il fallait démontrer\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"produit\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sommation\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"moins ou plus\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"plus pointé\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"différence d'ensembles\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"racine carrée\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"racine cubique\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"racine quatrième\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportionnel à\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infini\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"angle droit\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"angle mesuré\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"angle sphérique\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"est un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"non parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"et logique\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"intégrale\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"intégrale double\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"intégrale triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"intégrale de surface\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"intégrale de volume\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"par conséquent\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"parce que\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"rapport\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"moins pointé\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"excès\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proportion géométrique\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothétique\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s couché renversé\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoïde\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"produit couronne\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"non tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"moins tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"non asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"approximativement mais non strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"ni approximativement ni strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"non presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"presque égal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"entièrement égal à\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"géométriquement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"différence entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"tend vers la limite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"géométriquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou image de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"image de ou approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"deux points égal\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"égal deux points\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"rond dans égal\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"égal avec rond en chef\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"correspond à\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estime\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"équiangulaire à\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"égal avec étoile en chef\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"égal delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"égal par définition à\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"mesuré par\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"égalité en doute\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"identique à\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"non identique à\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"strictement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"plus petit que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"plus grand que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"plus petit mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"plus grand mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"pas plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"pas plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"plus petit ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"plus grand ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"plus petit ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"plus grand ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"précède\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"suit\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"précède ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"suit ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"précède ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"suit ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"ne précède pas\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"ne suit pas\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"pas un sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"pas un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"ni un sous ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"ni un sur ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"sous ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"sur ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"multiplication de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"union de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"image carrée de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original carré de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"image carrée ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original carré ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"chapeau carré\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"coupe carrée\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"plus cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"moins cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"multiplié par cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barre oblique de division cerclée\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"opérateur rond cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"égal cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"tiret cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"plus encadré\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"moins encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"multiplié par encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"opérateur point encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modélise\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"vrai\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"oblige\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"barre verticale triple avec tourniquet à droite\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"ne prouve pas\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"pas vrai\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"n'oblige pas\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"non barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"précède sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"suit sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"image de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multijection\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matrice hermitienne conjuguée\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"intercale\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"ou exclusif\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"non et\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"non ou\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"et logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"ou logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersection de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"réunion de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"opérateur losange\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"opérateur étoile\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"divisé multiplié\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"nœud papillon\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"moins tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"ou logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"et logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"sous ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"sur ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"intersection double\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"union double\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"fourche\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"égal et parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"plus petit que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"plus grand que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"considérablement plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"considérablement plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"égal ou précède\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"égal ou suit\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"ni précédant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"ni suivant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"ni image carrée ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"ni original carré ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"image carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"plus petit mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"plus grand mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"précédant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"suivant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"pas un sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"ni sous groupe normal ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"ni égal ni contenant comme sous  groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"trois points suspendus\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"trois points médians\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin haut à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin bas à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"appartient à avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"appartient à avec point en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait souscrit\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"appartient à avec deux traits horizontaux\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contient avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"petit contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"petit contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"appartient à un sac en notation z\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diamètre\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"maison\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"ligne ondulée\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"négation réfléchi\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastille carrée\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"secteur\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"plus gras\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"moins gras\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"division gras\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"boucle recourbée\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"double boucle recourbée\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc inscrit dans triangle blanc\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"ou avec point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"sous ensemble précédé d'une barre oblique inversée\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sur ensemble suivi d'une barre oblique\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barre verticale À une traverse\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique ascendante\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"grande division\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique descendante\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"et logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"ou logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"losange blanc à point centré\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"et pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"appartient À ouvert vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur droit pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur gauche pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"jointure externe gauche\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"jointure externe droite\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"jointure externe complète\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"double tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multijection gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"long taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"long taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut surmonté d'un cercle\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"losange coupé\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur diagonale descendante\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur diagonale montante\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"délimiteur triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"boulet\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"deux points de la notation z\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"clôture pointillée\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"ligne verticale en zigzag\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"ensemble vide réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"ensemble vide barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"ensemble vide petit cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"cercle à barre horizontale\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barre verticale cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"parallèles cerclées\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée cerclée\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire cerclé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"cercle divisé par une barre horizontale et une barre verticale dans la moitié supérieure\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"cercle superposé d'un x\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"division pivoté en sens antihoraire cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"puce blanche cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"puce cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"inférieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"supérieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"cercle avec petit cercle à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"cercle avec deux petits traits horizontaux à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"oblique encadrée\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"oblique inversée encadrée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"astérisque encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"petite cercle encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"carré encadré\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"carrés se chevauchant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triangle pointé en chef\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triangle à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s inscrit dans triangle\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle à empattements inférieurs\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triangle droit par dessus triangle gauche\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"triangle gauche à gauche d'une barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"triangle droit à droite d'une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile droite noire\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"nœud papillon noir\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié gauche noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié droite noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"sablier blanc\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"sablier noir\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infini incomplet\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"lorgnon\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"infini nié par une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multijection à deux têtes\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"carré ombré\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"augmente avec\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"produit de permutation\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné surmontés d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"identique à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"thermodynamique\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié droite noire\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"losange fuselé noir\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré blanc\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré noir\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange noir\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle noir\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"règle différée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"opérateur barre oblique inversée\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"barre oblique avec barre en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée à traverse horizontale\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique inversée\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"double plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"tiny\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"opérateur plus cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire pointé\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire avec plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"opérateur intersection carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"opérateur union carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"opérateur deux et logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"opérateur deux ou logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"sommation modulo deux\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"sommation avec intégrale\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"intégrale quadruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"intégrale à partie finie\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"intégrale à deux barres horizontales\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"moyenne d'intégrale à barre oblique inversée\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"fonction de circulation\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin rectangulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin semi circulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne évitant le pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"intégrale autour d'un opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"intégrale quaternion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"intégrale au signe multiplié par\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe intersection\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"jointure\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"gros opérateur triangle gauche\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composition de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"tubage de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"projection de schémas en notation z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un petit cercle\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"plus à point souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"plus à tilde souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"plus à chiffre deux souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"plus à triangle noir\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"moins surmonté d'une virgule\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"moins à point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"moins à points descendants\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"moins à points ascendants\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"produit vectoriel\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"multiplication à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"multiplication à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"produit semi direct fermé en bas\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"produit fusionné\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"multiplication cerclé circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"multiplication doublement cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"division cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"plus dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"moins dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"multiplication dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"produit interieur\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"produit intérieur à droite\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"composition relationnelle en notation z\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"amalgamation ou coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersection pointée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"union à signe moins\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"union à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersection à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersection avec et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"union avec ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"union par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"union par dessus bar par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus trait par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"deux unions soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"deux intersections soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersection fermée à empattements\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"deux intersections carrées emboîtées\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"deux unions carrées emboîtées\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements et produit fusionné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"et logique à point en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"ou logique à point en chef\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"deux et logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"deux ou logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"grand ou pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"grand et pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"et et ou logiques entrecroisés\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"et logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"ou logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"et logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"ou logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres en chef\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"et logique à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"petit v à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"antirestriction de domaine en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"antirestriction de codomaine en notation z\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"égal point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"identique à surmonté d'un point\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"deux barres verticales à trois traverses\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"trois barres verticales à trois traverses\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde à points ascendants\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similaire à moins similaire à\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruent point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Égal astérisque en chef\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"presque égal à circonflexe\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou égal à\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"plus signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"égal à signe plus en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"tilde signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"double deux points égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"deux signes égal à consécutifs\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"trois signes égal à consécutifs\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"égal à deux points en chef deux points souscrits\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"équivalent quatre points en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"inférieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"supérieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"inférieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"supérieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef droit\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"inférieur à et pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"supérieur à et pas égal à une ligne\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"inférieur à et non approximatif\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"supérieur à et non approximatif\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à deux lignes par dessus supérieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à deux lignes par dessus inférieur à\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à par dessus supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à par dessus inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus supérieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus inférieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à pentu par dessus supérieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à pentu par dessus inférieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou supérieur à\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou inférieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou supérieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à à deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à à deux lignes inclinées\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"similaire à ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"similaire à ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus inférieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus supérieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à emboîtés\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés avec barre souscrite\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"supérieur à à côté de inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"plus petit que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"plus grand que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"égal et dos d'âne\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal à une ligne\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"précède par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"suit par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"précède par dessus non presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"suit par dessus non presque égal à\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"double précède\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"double suit\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"sous ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"sur ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus signe égal\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte gauche\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte droite\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à côté de sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble chaîné à sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"appartient à ouvert vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"fourche surmontée d'un t\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"intersection transversale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcation (non indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"non bifurcation (indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"taquet gauche court\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"triple tourniquet droit à barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"double barre verticale gauche à traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas avec barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut avec barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut par dessus taquet court vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le bas\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de à barre de négation réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas surmontant un cercle\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"parallèlle à vertical à une traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"parallèle à avec opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"triple barre verticale à une traverse\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"opérateur trois points\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"trois inférieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"trois supérieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"grand opérateur à trois barres verticales\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"opérateur double oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche n aire\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"trait d'union en esse\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de virgule verticale\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de deux points vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point virgule vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'exclamation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'interrogation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de points de suspension verticaux\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point de conduite double vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret cadratin vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret demi cadratin vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas ondulé vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"point sésame\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"point sésame ajouré\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"tiret haut en pointillés\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"tiret haut à point central\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"tiret haut ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"tiret haut double ondulé\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"tiret bas avec pointillés\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"tiret bas à point central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"tiret bas ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"point minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"point virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"deux points minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"trait d'union cadratin minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"croisillon minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"perluète minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"astérisque minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"plus minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"tiret minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"inférieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"supérieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"égal à minuscule\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"integer divide\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"symbole dollar minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"arrobe minuscule\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"guillemet\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"croisillon\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"symbole dollar\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"perluète\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"tiret\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"point\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"deux points colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"égal à\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"arrobe\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"accent circonflexe\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"symbole centime\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"symbole livre\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"négation\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"macron *\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"ligne brisée\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"symbole yen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"symbole won\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"ligne verticale mince\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"carré noir\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}}}]\n,\n\"fr/symbols/math_whitespace.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espace\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"trait d'union conditionnel\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"demi cadratin\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"cadratin\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"sixième de cadratin\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"antiliant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"liant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marque gauche à droite\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marque droite à gauche\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"séparateur de lignes\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"séparateur de paragraphes\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"enchâssement gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"enchâssement droite à gauche\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"dépilement de formatage directionnel\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"forçage gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"forçage droite à gauche\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espace insécable étroite\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"espace moyenne mathématique\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"plus invisible\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibiteur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activateur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales nationales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales de référence\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"espace ultrafine\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancre d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"séparateur d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminateur d'annotation interlinéaire\"}}}]\n,\n\"fr/symbols/other_stars.js\": \n[{\"locale\":\"fr\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"symbole exposant décimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"étoile noire\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"cercle moyen blanc\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"cercle moyen noir\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"signe de vérification blanc gras\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"signe de vérification\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"gros signe de vérification\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"x de multiplication\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"gros x de multiplication\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"x de bulletin de vote\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"gros x de bulletin de vote\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"croix percée d'un carré\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"grosse croix percée d'un carré\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"croix de malte\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Étoile de david\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"croix larmée\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"grosse croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"croix tréflée\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"scintillements\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à contour accentué\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche cerclée\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"molette noire\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"molette blanche\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec contour\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec gros contour\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche ombrée\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"gros astérisque\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"astérisque percé\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"astérisque à huit branches\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à huit branches\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante à huit branches\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"étoile noire à six branches\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à douze branches\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"astérisque à seize branches\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé percé\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"gros astérisque larmé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"sixtefeuille blanche et noire\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"quintefeuille noire\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"quintefeuille blanche\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"double quartefeuille noire avec contour\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Étoile cerclée percée à huit branches\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"gros astérisque rayonnant larmé\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"flocon de neige\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"flocon de neige à trois folioles transpercé\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"gros flocon de neige à chevrons\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Étincellement\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"gros étincellement\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"astérisque pommeté\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"gros astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"croix grasse\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"cercle blanc ombré\"}}}]\n,\n\"fr/units/energy.js\": \n[{\"locale\":\"fr\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"watts\",\"singular\":\"watt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"joules\",\"singular\":\"joule\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"newtons\",\"singular\":\"newton\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"ampères\",\"singular\":\"ampère\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"volts\",\"singular\":\"volt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"ohms\",\"singular\":\"ohm\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]}]\n,\n\"fr/units/length.js\": \n[{\"locale\":\"fr\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"mètres\",\"singular\":\"mètre\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"m\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"pieds\",\"singular\":\"pied\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"pouces\",\"singular\":\"pouce\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"default\":\"miles\",\"singular\":\"mile\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"default\":\"yards\",\"singular\":\"yard\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"yd\",\"yd.\"]}]\n,\n\"fr/units/memory.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/other.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/speed.js\": \n[{\"locale\":\"fr\"},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"miles par heure\",\"singular\":\"mile par heure\",\"dual\":\"\"}},\"names\":[\"mph\"]}]\n,\n\"fr/units/temperature.js\": \n[{\"locale\":\"fr\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"farads\",\"singular\":\"farad\",\"dual\":\"\"}},\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"coulombs\",\"singular\":\"coulomb\",\"dual\":\"\"}},\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"kelvins\",\"singular\":\"kelvin\",\"dual\":\"\"}},\"names\":[\"K\",\"°K\"]}]\n,\n\"fr/units/time.js\": \n[{\"locale\":\"fr\"},{\"key\":\"s\",\"mappings\":{\"default\":{\"default\":\"secondes\",\"singular\":\"seconde\",\"dual\":\"\"}},\"category\":\"time\",\"names\":[\"s\"]}]\n,\n\"fr/units/volume.js\": \n[{\"locale\":\"fr\"},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"barils\",\"singular\":\"baril\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"default\":\"gallons\",\"singular\":\"gallon\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"pintes\",\"singular\":\"pinte\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"default\":\"quarts\",\"singular\":\"quart\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"cuillères de table\",\"singular\":\"cuillèe de table\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"cuillèes à thé\",\"singular\":\"cuillère à thé\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"key\":\"l\",\"mappings\":{\"default\":{\"default\":\"litres\",\"singular\":\"litre\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"l\"]}]\n,\n\"fr/units/weight.js\": \n[{\"locale\":\"fr\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"livres\",\"singular\":\"livre\",\"dual\":\"\"}},\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"default\":\"onces\",\"singular\":\"oce\",\"dual\":\"\"}},\"names\":[\"oz\",\"oz.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"grains\",\"singular\":\"grain\",\"dual\":\"\"}},\"names\":[\"g\",\"gr\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"default\":\"tonnes\",\"singular\":\"tonne\",\"dual\":\"\"}},\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js",
    "content": "sre.BrowserUtil.mapsForIE = {\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"determinant\"},\"mathspeak\":{\"default\":\"det\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphism\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"en/functions/elementary.js\": \n[{\"locale\":\"en\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"natural log\"},\"mathspeak\":{\"default\":\"ln\"},\"clearspeak\":{\"default\":\"l n\",\"Log_LnAsNaturalLog\":\"natural log\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"log base 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"exponential\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"greatest common divisor\"},\"mathspeak\":{\"default\":\"gcd\"},\"clearspeak\":{\"default\":\"gcd\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"least common multiple\"},\"mathspeak\":{\"default\":\"lcm\"},\"clearspeak\":{\"default\":\"lcm\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"argument\"},\"mathspeak\":{\"default\":\"arg\"},\"clearspeak\":{\"default\":\"arg\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"imaginary part\"},\"mathspeak\":{\"default\":\"im\"},\"clearspeak\":{\"default\":\"imaginary\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"real part\"},\"mathspeak\":{\"default\":\"re\"},\"clearspeak\":{\"default\":\"real\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"infimum\"},\"mathspeak\":{\"default\":\"inf\"},\"clearspeak\":{\"default\":\"inf\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit\"},\"mathspeak\":{\"default\":\"limit\"},\"clearspeak\":{\"default\":\"lim\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit inferior\"},\"mathspeak\":{\"default\":\"liminf\"},\"clearspeak\":{\"default\":\"liminf\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"limit superior\"},\"mathspeak\":{\"default\":\"limsup\"},\"clearspeak\":{\"default\":\"limsup\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"maximum\"},\"mathspeak\":{\"default\":\"max\"},\"clearspeak\":{\"default\":\"max\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"minimum\"},\"mathspeak\":{\"default\":\"min\"},\"clearspeak\":{\"default\":\"min\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"supremum\"},\"mathspeak\":{\"default\":\"sup\"},\"clearspeak\":{\"default\":\"sup\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"colimit\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projective limit\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"modulo\"},\"mathspeak\":{\"default\":\"mod\"},\"clearspeak\":{\"default\":\"mod\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"probability\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"en/functions/hyperbolic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosine\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cotangent\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosecant\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic secant\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic sine\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic tangent\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosine\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cotangent\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic cosecant\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic secant\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic sine\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"area hyperbolic tangent\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"en/functions/trigonometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosine\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cotangent\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosecant\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"secant\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"sine\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"tangent\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosine inverse\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cotangent inverse\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosecant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"cosecant inverse\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc secant\"},\"clearspeak\":{\"Trig_TrigInverse\":\"secant inverse\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sine\"},\"clearspeak\":{\"Trig_TrigInverse\":\"sine inverse\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangent\"},\"clearspeak\":{\"Trig_TrigInverse\":\"tangent inverse\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"en/symbols/digits_rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"squared\"},\"mathspeak\":{\"default\":\"squared\"},\"clearspeak\":{\"default\":\"squared\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"cubed\"},\"mathspeak\":{\"default\":\"cubed\"},\"clearspeak\":{\"default\":\"cubed\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one quarter\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one half\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three quarters\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one seventh\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one ninth\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one tenth\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one third\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two thirds\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one fifth\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"two fifths\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three fifths\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"four fifths\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one sixth\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five sixths\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"one eighth\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"three eighths\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"five eighths\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"seven eighths\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"numerator one\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"zero thirds\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled ten on black square\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled twenty on black square\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled thirty on black square\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled forty on black square\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled fifty on black square\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled sixty on black square\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled seventy on black square\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"circled eighty on black square\"}},\"key\":\"324F\"}]\n,\n\"en/symbols/greek-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"en/symbols/greek-scripts.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"small cap Gamma\"},\"mathspeak\":{\"default\":\"small upper Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"small cap Lamda\"},\"mathspeak\":{\"default\":\"small upper Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"small cap Pi\"},\"mathspeak\":{\"default\":\"small upper Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"small cap Rho\"},\"mathspeak\":{\"default\":\"small upper Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"small cap Psi\"},\"mathspeak\":{\"default\":\"small upper Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"superscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"superscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscript beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subscript gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subscript rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subscript phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscript chi\"}}}]\n,\n\"en/symbols/greek-symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"beta\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"kai\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed epsilon\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold cap Digamma\"},\"mathspeak\":{\"default\":\"bold upper Digamma\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"bold digamma\"}},\"key\":\"1D7CB\"}]\n,\n\"en/symbols/hebrew_letters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"first transfinite cardinal\",\"alternative\":\"alef\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"second transfinite cardinal\",\"alternative\":\"bet\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"third transfinite cardinal\",\"alternative\":\"gimel\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"fourth transfinite cardinal\",\"alternative\":\"dalet\"}},\"key\":\"2138\"}]\n,\n\"en/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u double overdot caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u double overdot grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek overbar\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a ring above acute\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o double overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde overbar\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o overdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cedilla acute\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cedilla breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i double overdot acute\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o overbar grave\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o overbar acute\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r underdot overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s acute overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s underdot overdot\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde acute\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u overbar double overdot\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a breve acute\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a breve grave\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a breve hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a breve tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a breve underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o hat acute\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o hat grave\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o hat hook above\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o hat tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o hat underdot\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o underdot prime\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u acute prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u grave prime\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u hook above prime\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u tilde prime\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u underdot prime\"}}}]\n,\n\"en/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b with stroke\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g with stroke\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o with stroke and acute\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r with stroke\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y with stroke\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i with stroke\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"dotless j with stroke and hook\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"latin letter glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed glottal stop with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"sideways o with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon with stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"long s with diagonal stroke\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"long s with high stroke\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"turned delta\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"long s with dot above\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"long s\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tone six\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c with hook\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d with topbar\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f with hook\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k with hook\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l with bar\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n with long right leg\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o with horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p with hook\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"tone two\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter reversed esh loop\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u with horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y with hook\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh reversed\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh with tail\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tone five\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"latin letter wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz with caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae with macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"turned e\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae with acute\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d with curl\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z with hook\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l with curl\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n with curl\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t with curl\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z with swash tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q with hook tail\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"turned a\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"turned alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b with hook\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c with curl\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d with tail\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d with hook\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"reversed e\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa with hook\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"open e\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"reversed open e with hook\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"closed reversed open e\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g with hook\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"script g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"rams horn\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"turned h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h with hook\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"heng with hook\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l with belt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"turned m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"turned m with long leg\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m with hook\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n with left hook\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"barred o\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"closed omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"turned r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"turned r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"turned r with hook\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r with long leg\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r with tail\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"reversed r with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s with hook\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat reversed esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh with curl\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"turned t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v with hook\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"turned v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"turned w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"turned y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z with curl\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"latin letter pharyngeal voiced fricative\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"latin letter inverted glottal stop\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"latin letter stretched c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"closed open e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"turned k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q with hook\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc digraph with curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"latin letter bilabial percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"latin letter bidental percussive\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"turned h with fishhook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"turned ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"turned open e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"turned i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"sideways o\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"sideways open o\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"turned oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"top half o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"bottom half o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"sideways u\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"sideways diaeresized u\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"sideways turned m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"latin letter voiced laryngeal spirant\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"latin letter ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r with fishhook and middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z with middle tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"turned g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th with strikethrough\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z with palatal hook\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d with hook and tail\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"reversed open e with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"open o with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh with retroflex hook\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n preceded by apostrophe\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}}}]\n,\n\"en/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"},\"mathspeak\":{\"default\":\"modifying above a with grave\",\"brief\":\"mod above a with grave\",\"sbrief\":\"mod above a with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a acute\"},\"mathspeak\":{\"default\":\"modifying above a with acute\",\"brief\":\"mod above a with acute\",\"sbrief\":\"mod above a with acute\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a hat\"},\"mathspeak\":{\"default\":\"modifying above a with caret\",\"brief\":\"mod above a with caret\",\"sbrief\":\"mod above a with caret\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"},\"mathspeak\":{\"default\":\"a overtilde\",\"brief\":\"a overtilde\",\"sbrief\":\"a overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a double overdot\"},\"mathspeak\":{\"default\":\"modifying above a with double dot\",\"brief\":\"mod above a with double dot\",\"sbrief\":\"mod above a with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a ring\"},\"mathspeak\":{\"default\":\"modifying above a with ring\",\"brief\":\"mod above a with ring\",\"sbrief\":\"mod above a with ring\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"},\"mathspeak\":{\"default\":\"modifying above c with cedilla\",\"brief\":\"mod above c with cedilla\",\"sbrief\":\"mod above c with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"},\"mathspeak\":{\"default\":\"modifying above e with grave\",\"brief\":\"mod above e with grave\",\"sbrief\":\"mod above e with grave\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e acute\"},\"mathspeak\":{\"default\":\"modifying above e with acute\",\"brief\":\"mod above e with acute\",\"sbrief\":\"mod above e with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e hat\"},\"mathspeak\":{\"default\":\"modifying above e with caret\",\"brief\":\"mod above e with caret\",\"sbrief\":\"mod above e with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e double overdot\"},\"mathspeak\":{\"default\":\"modifying above e with double dot\",\"brief\":\"mod above e with double dot\",\"sbrief\":\"mod above e with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"},\"mathspeak\":{\"default\":\"modifying above i with grave\",\"brief\":\"mod above i with grave\",\"sbrief\":\"mod above i with grave\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i acute\"},\"mathspeak\":{\"default\":\"modifying above i with acute\",\"brief\":\"mod above i with acute\",\"sbrief\":\"mod above i with acute\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i hat\"},\"mathspeak\":{\"default\":\"modifying above i with caret\",\"brief\":\"mod above i with caret\",\"sbrief\":\"mod above i with caret\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i double overdot\"},\"mathspeak\":{\"default\":\"modifying above i with double dot\",\"brief\":\"mod above i with double dot\",\"sbrief\":\"mod above i with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"},\"mathspeak\":{\"default\":\"n overtilde\",\"brief\":\"n overtilde\",\"sbrief\":\"n overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"},\"mathspeak\":{\"default\":\"modifying above o with grave\",\"brief\":\"mod above o with grave\",\"sbrief\":\"mod above o with grave\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o acute\"},\"mathspeak\":{\"default\":\"modifying above o with acute\",\"brief\":\"mod above o with acute\",\"sbrief\":\"mod above o with acute\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o hat\"},\"mathspeak\":{\"default\":\"modifying above o with caret\",\"brief\":\"mod above o with caret\",\"sbrief\":\"mod above o with caret\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"},\"mathspeak\":{\"default\":\"o overtilde\",\"brief\":\"o overtilde\",\"sbrief\":\"o overtilde\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o double overdot\"},\"mathspeak\":{\"default\":\"modifying above o with double dot\",\"brief\":\"mod above o with double dot\",\"sbrief\":\"mod above o with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"},\"mathspeak\":{\"default\":\"modifying above u with grave\",\"brief\":\"mod above u with grave\",\"sbrief\":\"mod above u with grave\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u acute\"},\"mathspeak\":{\"default\":\"modifying above u with acute\",\"brief\":\"mod above u with acute\",\"sbrief\":\"mod above u with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u hat\"},\"mathspeak\":{\"default\":\"modifying above u with caret\",\"brief\":\"mod above u with caret\",\"sbrief\":\"mod above u with caret\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u double overdot\"},\"mathspeak\":{\"default\":\"modifying above u with double dot\",\"brief\":\"mod above u with double dot\",\"sbrief\":\"mod above u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y acute\"},\"mathspeak\":{\"default\":\"modifying above y with acute\",\"brief\":\"mod above y with acute\",\"sbrief\":\"mod above y with acute\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y double overdot\"},\"mathspeak\":{\"default\":\"modifying above y with double dot\",\"brief\":\"mod above y with double dot\",\"sbrief\":\"mod above y with double dot\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a overbar\"},\"mathspeak\":{\"default\":\"a overbar\",\"brief\":\"a overbar\",\"sbrief\":\"a overbar\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a breve\"},\"mathspeak\":{\"default\":\"modifying above a with breve\",\"brief\":\"mod above a with breve\",\"sbrief\":\"mod above a with breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"},\"mathspeak\":{\"default\":\"modifying above a with ogonek\",\"brief\":\"mod above a with ogonek\",\"sbrief\":\"mod above a with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c acute\"},\"mathspeak\":{\"default\":\"modifying above c with acute\",\"brief\":\"mod above c with acute\",\"sbrief\":\"mod above c with acute\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c hat\"},\"mathspeak\":{\"default\":\"modifying above c with caret\",\"brief\":\"mod above c with caret\",\"sbrief\":\"mod above c with caret\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c overdot\"},\"mathspeak\":{\"default\":\"modifying above c with dot\",\"brief\":\"mod above c with dot\",\"sbrief\":\"mod above c with dot\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"},\"mathspeak\":{\"default\":\"modifying above c with caron\",\"brief\":\"mod above c with caron\",\"sbrief\":\"mod above c with caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"},\"mathspeak\":{\"default\":\"modifying above d with caron\",\"brief\":\"mod above d with caron\",\"sbrief\":\"mod above d with caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e overbar\"},\"mathspeak\":{\"default\":\"e overbar\",\"brief\":\"e overbar\",\"sbrief\":\"e overbar\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e breve\"},\"mathspeak\":{\"default\":\"modifying above e with breve\",\"brief\":\"mod above e with breve\",\"sbrief\":\"mod above e with breve\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e overdot\"},\"mathspeak\":{\"default\":\"modifying above e with dot\",\"brief\":\"mod above e with dot\",\"sbrief\":\"mod above e with dot\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"},\"mathspeak\":{\"default\":\"modifying above e with ogonek\",\"brief\":\"mod above e with ogonek\",\"sbrief\":\"mod above e with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"},\"mathspeak\":{\"default\":\"modifying above e with caron\",\"brief\":\"mod above e with caron\",\"sbrief\":\"mod above e with caron\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g hat\"},\"mathspeak\":{\"default\":\"modifying above g with caret\",\"brief\":\"mod above g with caret\",\"sbrief\":\"mod above g with caret\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g breve\"},\"mathspeak\":{\"default\":\"modifying above g with breve\",\"brief\":\"mod above g with breve\",\"sbrief\":\"mod above g with breve\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g overdot\"},\"mathspeak\":{\"default\":\"modifying above g with dot\",\"brief\":\"mod above g with dot\",\"sbrief\":\"mod above g with dot\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cedilla\"},\"mathspeak\":{\"default\":\"modifying above g with cedilla\",\"brief\":\"mod above g with cedilla\",\"sbrief\":\"mod above g with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h hat\"},\"mathspeak\":{\"default\":\"modifying above h with caret\",\"brief\":\"mod above h with caret\",\"sbrief\":\"mod above h with caret\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"},\"mathspeak\":{\"default\":\"i overtilde\",\"brief\":\"i overtilde\",\"sbrief\":\"i overtilde\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i overbar\"},\"mathspeak\":{\"default\":\"i overbar\",\"brief\":\"i overbar\",\"sbrief\":\"i overbar\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i breve\"},\"mathspeak\":{\"default\":\"modifying above i with breve\",\"brief\":\"mod above i with breve\",\"sbrief\":\"mod above i with breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"},\"mathspeak\":{\"default\":\"modifying above i with ogonek\",\"brief\":\"mod above i with ogonek\",\"sbrief\":\"mod above i with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"dotless i\"},\"mathspeak\":{\"default\":\"modifying above dotless i\",\"brief\":\"mod above dotless i\",\"sbrief\":\"mod above dotless i\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j hat\"},\"mathspeak\":{\"default\":\"modifying above j with caret\",\"brief\":\"mod above j with caret\",\"sbrief\":\"mod above j with caret\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cedilla\"},\"mathspeak\":{\"default\":\"modifying above k with cedilla\",\"brief\":\"mod above k with cedilla\",\"sbrief\":\"mod above k with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l acute\"},\"mathspeak\":{\"default\":\"modifying above l with acute\",\"brief\":\"mod above l with acute\",\"sbrief\":\"mod above l with acute\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cedilla\"},\"mathspeak\":{\"default\":\"modifying above l with cedilla\",\"brief\":\"mod above l with cedilla\",\"sbrief\":\"mod above l with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"},\"mathspeak\":{\"default\":\"modifying above l with caron\",\"brief\":\"mod above l with caron\",\"sbrief\":\"mod above l with caron\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l middle dot\"},\"mathspeak\":{\"default\":\"modifying above l with middle dot\",\"brief\":\"mod above l with middle dot\",\"sbrief\":\"mod above l with middle dot\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n acute\"},\"mathspeak\":{\"default\":\"modifying above n with acute\",\"brief\":\"mod above n with acute\",\"sbrief\":\"mod above n with acute\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cedilla\"},\"mathspeak\":{\"default\":\"modifying above n with cedilla\",\"brief\":\"mod above n with cedilla\",\"sbrief\":\"mod above n with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"},\"mathspeak\":{\"default\":\"modifying above n with caron\",\"brief\":\"mod above n with caron\",\"sbrief\":\"mod above n with caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o overbar\"},\"mathspeak\":{\"default\":\"o overbar\",\"brief\":\"o overbar\",\"sbrief\":\"o overbar\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o breve\"},\"mathspeak\":{\"default\":\"modifying above o with breve\",\"brief\":\"mod above o with breve\",\"sbrief\":\"mod above o with breve\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o double acute\"},\"mathspeak\":{\"default\":\"modifying above o with double acute\",\"brief\":\"mod above o with double acute\",\"sbrief\":\"mod above o with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r acute\"},\"mathspeak\":{\"default\":\"modifying above r with acute\",\"brief\":\"mod above r with acute\",\"sbrief\":\"mod above r with acute\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cedilla\"},\"mathspeak\":{\"default\":\"modifying above r with cedilla\",\"brief\":\"mod above r with cedilla\",\"sbrief\":\"mod above r with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"},\"mathspeak\":{\"default\":\"modifying above r with caron\",\"brief\":\"mod above r with caron\",\"sbrief\":\"mod above r with caron\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s acute\"},\"mathspeak\":{\"default\":\"modifying above s with acute\",\"brief\":\"mod above s with acute\",\"sbrief\":\"mod above s with acute\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s hat\"},\"mathspeak\":{\"default\":\"modifying above s with caret\",\"brief\":\"mod above s with caret\",\"sbrief\":\"mod above s with caret\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cedilla\"},\"mathspeak\":{\"default\":\"modifying above s with cedilla\",\"brief\":\"mod above s with cedilla\",\"sbrief\":\"mod above s with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"},\"mathspeak\":{\"default\":\"modifying above s with caron\",\"brief\":\"mod above s with caron\",\"sbrief\":\"mod above s with caron\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cedilla\"},\"mathspeak\":{\"default\":\"modifying above t with cedilla\",\"brief\":\"mod above t with cedilla\",\"sbrief\":\"mod above t with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"},\"mathspeak\":{\"default\":\"modifying above t with caron\",\"brief\":\"mod above t with caron\",\"sbrief\":\"mod above t with caron\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"},\"mathspeak\":{\"default\":\"u overtilde\",\"brief\":\"u overtilde\",\"sbrief\":\"u overtilde\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u overbar\"},\"mathspeak\":{\"default\":\"u overbar\",\"brief\":\"u overbar\",\"sbrief\":\"u overbar\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u breve\"},\"mathspeak\":{\"default\":\"modifying above u with breve\",\"brief\":\"mod above u with breve\",\"sbrief\":\"mod above u with breve\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u ring\"},\"mathspeak\":{\"default\":\"modifying above u with ring\",\"brief\":\"mod above u with ring\",\"sbrief\":\"mod above u with ring\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u double acute\"},\"mathspeak\":{\"default\":\"modifying above u with double acute\",\"brief\":\"mod above u with double acute\",\"sbrief\":\"mod above u with double acute\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"},\"mathspeak\":{\"default\":\"modifying above u with ogonek\",\"brief\":\"mod above u with ogonek\",\"sbrief\":\"mod above u with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w hat\"},\"mathspeak\":{\"default\":\"modifying above w with caret\",\"brief\":\"mod above w with caret\",\"sbrief\":\"mod above w with caret\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y hat\"},\"mathspeak\":{\"default\":\"modifying above y with caret\",\"brief\":\"mod above y with caret\",\"sbrief\":\"mod above y with caret\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z acute\"},\"mathspeak\":{\"default\":\"modifying above z with acute\",\"brief\":\"mod above z with acute\",\"sbrief\":\"mod above z with acute\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z overdot\"},\"mathspeak\":{\"default\":\"modifying above z with dot\",\"brief\":\"mod above z with dot\",\"sbrief\":\"mod above z with dot\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"},\"mathspeak\":{\"default\":\"modifying above z with caron\",\"brief\":\"mod above z with caron\",\"sbrief\":\"mod above z with caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"},\"mathspeak\":{\"default\":\"modifying above a with caron\",\"brief\":\"mod above a with caron\",\"sbrief\":\"mod above a with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"},\"mathspeak\":{\"default\":\"modifying above i with caron\",\"brief\":\"mod above i with caron\",\"sbrief\":\"mod above i with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"},\"mathspeak\":{\"default\":\"modifying above o with caron\",\"brief\":\"mod above o with caron\",\"sbrief\":\"mod above o with caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"},\"mathspeak\":{\"default\":\"modifying above u with caron\",\"brief\":\"mod above u with caron\",\"sbrief\":\"mod above u with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"},\"mathspeak\":{\"default\":\"modifying above g with caron\",\"brief\":\"mod above g with caron\",\"sbrief\":\"mod above g with caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"},\"mathspeak\":{\"default\":\"modifying above k with caron\",\"brief\":\"mod above k with caron\",\"sbrief\":\"mod above k with caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"},\"mathspeak\":{\"default\":\"modifying above o with ogonek\",\"brief\":\"mod above o with ogonek\",\"sbrief\":\"mod above o with ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"},\"mathspeak\":{\"default\":\"modifying above j with caron\",\"brief\":\"mod above j with caron\",\"sbrief\":\"mod above j with caron\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g acute\"},\"mathspeak\":{\"default\":\"modifying above g with acute\",\"brief\":\"mod above g with acute\",\"sbrief\":\"mod above g with acute\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"},\"mathspeak\":{\"default\":\"modifying above n with grave\",\"brief\":\"mod above n with grave\",\"sbrief\":\"mod above n with grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double grave\"},\"mathspeak\":{\"default\":\"modifying above a with double grave\",\"brief\":\"mod above a with double grave\",\"sbrief\":\"mod above a with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a inverted breve\"},\"mathspeak\":{\"default\":\"modifying above a with inverted breve\",\"brief\":\"mod above a with inverted breve\",\"sbrief\":\"mod above a with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double grave\"},\"mathspeak\":{\"default\":\"modifying above e with double grave\",\"brief\":\"mod above e with double grave\",\"sbrief\":\"mod above e with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e inverted breve\"},\"mathspeak\":{\"default\":\"modifying above e with inverted breve\",\"brief\":\"mod above e with inverted breve\",\"sbrief\":\"mod above e with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double grave\"},\"mathspeak\":{\"default\":\"modifying above i with double grave\",\"brief\":\"mod above i with double grave\",\"sbrief\":\"mod above i with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i inverted breve\"},\"mathspeak\":{\"default\":\"modifying above i with inverted breve\",\"brief\":\"mod above i with inverted breve\",\"sbrief\":\"mod above i with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double grave\"},\"mathspeak\":{\"default\":\"modifying above o with double grave\",\"brief\":\"mod above o with double grave\",\"sbrief\":\"mod above o with double grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o inverted breve\"},\"mathspeak\":{\"default\":\"modifying above o with inverted breve\",\"brief\":\"mod above o with inverted breve\",\"sbrief\":\"mod above o with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double grave\"},\"mathspeak\":{\"default\":\"modifying above r with double grave\",\"brief\":\"mod above r with double grave\",\"sbrief\":\"mod above r with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r inverted breve\"},\"mathspeak\":{\"default\":\"modifying above r with inverted breve\",\"brief\":\"mod above r with inverted breve\",\"sbrief\":\"mod above r with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double grave\"},\"mathspeak\":{\"default\":\"modifying above u with double grave\",\"brief\":\"mod above u with double grave\",\"sbrief\":\"mod above u with double grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u inverted breve\"},\"mathspeak\":{\"default\":\"modifying above u with inverted breve\",\"brief\":\"mod above u with inverted breve\",\"sbrief\":\"mod above u with inverted breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s comma below\"},\"mathspeak\":{\"default\":\"modifying below s with comma below\",\"brief\":\"mod below s with comma below\",\"sbrief\":\"mod below s with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t comma below\"},\"mathspeak\":{\"default\":\"modifying below t with comma below\",\"brief\":\"mod below t with comma below\",\"sbrief\":\"mod below t with comma below\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"},\"mathspeak\":{\"default\":\"modifying above h with caron\",\"brief\":\"mod above h with caron\",\"sbrief\":\"mod above h with caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a overdot\"},\"mathspeak\":{\"default\":\"modifying above a with dot\",\"brief\":\"mod above a with dot\",\"sbrief\":\"mod above a with dot\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cedilla\"},\"mathspeak\":{\"default\":\"modifying above e with cedilla\",\"brief\":\"mod above e with cedilla\",\"sbrief\":\"mod above e with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o overdot\"},\"mathspeak\":{\"default\":\"modifying above o with dot\",\"brief\":\"mod above o with dot\",\"sbrief\":\"mod above o with dot\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y overbar\"},\"mathspeak\":{\"default\":\"y overbar\",\"brief\":\"y overbar\",\"sbrief\":\"y overbar\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless j\"},\"mathspeak\":{\"default\":\"modifying above dotless j\",\"brief\":\"mod above dotless j\",\"sbrief\":\"mod above dotless j\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a ring below\"},\"mathspeak\":{\"default\":\"modifying below a with ring below\",\"brief\":\"mod below a with ring below\",\"sbrief\":\"mod below a with ring below\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b overdot\"},\"mathspeak\":{\"default\":\"modifying above b with dot\",\"brief\":\"mod above b with dot\",\"sbrief\":\"mod above b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b underdot\"},\"mathspeak\":{\"default\":\"modifying below b with dot\",\"brief\":\"mod below b with dot\",\"sbrief\":\"mod below b with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b underbar\"},\"mathspeak\":{\"default\":\"b underbar\",\"brief\":\"b underbar\",\"sbrief\":\"b underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d overdot\"},\"mathspeak\":{\"default\":\"modifying above d with dot\",\"brief\":\"mod above d with dot\",\"sbrief\":\"mod above d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d underdot\"},\"mathspeak\":{\"default\":\"modifying below d with dot\",\"brief\":\"mod below d with dot\",\"sbrief\":\"mod below d with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d underbar\"},\"mathspeak\":{\"default\":\"d underbar\",\"brief\":\"d underbar\",\"sbrief\":\"d underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cedilla\"},\"mathspeak\":{\"default\":\"modifying above d with cedilla\",\"brief\":\"mod above d with cedilla\",\"sbrief\":\"mod above d with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d underhat\"},\"mathspeak\":{\"default\":\"modifying below d with caret\",\"brief\":\"mod below d with caret\",\"sbrief\":\"mod below d with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e underhat\"},\"mathspeak\":{\"default\":\"modifying below e with caret\",\"brief\":\"mod below e with caret\",\"sbrief\":\"mod below e with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde below\"},\"mathspeak\":{\"default\":\"e undertilde\",\"brief\":\"e undertilde\",\"sbrief\":\"e undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f overdot\"},\"mathspeak\":{\"default\":\"modifying above f with dot\",\"brief\":\"mod above f with dot\",\"sbrief\":\"mod above f with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g overbar\"},\"mathspeak\":{\"default\":\"g overbar\",\"brief\":\"g overbar\",\"sbrief\":\"g overbar\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h overdot\"},\"mathspeak\":{\"default\":\"modifying above h with dot\",\"brief\":\"mod above h with dot\",\"sbrief\":\"mod above h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h underdot\"},\"mathspeak\":{\"default\":\"modifying below h with dot\",\"brief\":\"mod below h with dot\",\"sbrief\":\"mod below h with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h double overdot\"},\"mathspeak\":{\"default\":\"modifying above h with double dot\",\"brief\":\"mod above h with double dot\",\"sbrief\":\"mod above h with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cedilla\"},\"mathspeak\":{\"default\":\"modifying above h with cedilla\",\"brief\":\"mod above h with cedilla\",\"sbrief\":\"mod above h with cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h breve below\"},\"mathspeak\":{\"default\":\"modifying below h with breve below\",\"brief\":\"mod below h with breve below\",\"sbrief\":\"mod below h with breve below\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde below\"},\"mathspeak\":{\"default\":\"i undertilde\",\"brief\":\"i undertilde\",\"sbrief\":\"i undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k acute\"},\"mathspeak\":{\"default\":\"modifying above k with acute\",\"brief\":\"mod above k with acute\",\"sbrief\":\"mod above k with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k underdot\"},\"mathspeak\":{\"default\":\"modifying below k with dot\",\"brief\":\"mod below k with dot\",\"sbrief\":\"mod below k with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k underbar\"},\"mathspeak\":{\"default\":\"k underbar\",\"brief\":\"k underbar\",\"sbrief\":\"k underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l underdot\"},\"mathspeak\":{\"default\":\"modifying below l with dot\",\"brief\":\"mod below l with dot\",\"sbrief\":\"mod below l with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l underbar\"},\"mathspeak\":{\"default\":\"l underbar\",\"brief\":\"l underbar\",\"sbrief\":\"l underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l underhat\"},\"mathspeak\":{\"default\":\"modifying below l with caret\",\"brief\":\"mod below l with caret\",\"sbrief\":\"mod below l with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m acute\"},\"mathspeak\":{\"default\":\"modifying above m with acute\",\"brief\":\"mod above m with acute\",\"sbrief\":\"mod above m with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m overdot\"},\"mathspeak\":{\"default\":\"modifying above m with dot\",\"brief\":\"mod above m with dot\",\"sbrief\":\"mod above m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m underdot\"},\"mathspeak\":{\"default\":\"modifying below m with dot\",\"brief\":\"mod below m with dot\",\"sbrief\":\"mod below m with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n overdot\"},\"mathspeak\":{\"default\":\"modifying above n with dot\",\"brief\":\"mod above n with dot\",\"sbrief\":\"mod above n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n underdot\"},\"mathspeak\":{\"default\":\"modifying below n with dot\",\"brief\":\"mod below n with dot\",\"sbrief\":\"mod below n with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n underbar\"},\"mathspeak\":{\"default\":\"n underbar\",\"brief\":\"n underbar\",\"sbrief\":\"n underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n underhat\"},\"mathspeak\":{\"default\":\"modifying below n with caret\",\"brief\":\"mod below n with caret\",\"sbrief\":\"mod below n with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p acute\"},\"mathspeak\":{\"default\":\"modifying above p with acute\",\"brief\":\"mod above p with acute\",\"sbrief\":\"mod above p with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p overdot\"},\"mathspeak\":{\"default\":\"modifying above p with dot\",\"brief\":\"mod above p with dot\",\"sbrief\":\"mod above p with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r overdot\"},\"mathspeak\":{\"default\":\"modifying above r with dot\",\"brief\":\"mod above r with dot\",\"sbrief\":\"mod above r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r underdot\"},\"mathspeak\":{\"default\":\"modifying below r with dot\",\"brief\":\"mod below r with dot\",\"sbrief\":\"mod below r with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r underbar\"},\"mathspeak\":{\"default\":\"r underbar\",\"brief\":\"r underbar\",\"sbrief\":\"r underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s overdot\"},\"mathspeak\":{\"default\":\"modifying above s with dot\",\"brief\":\"mod above s with dot\",\"sbrief\":\"mod above s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s underdot\"},\"mathspeak\":{\"default\":\"modifying below s with dot\",\"brief\":\"mod below s with dot\",\"sbrief\":\"mod below s with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t overdot\"},\"mathspeak\":{\"default\":\"modifying above t with dot\",\"brief\":\"mod above t with dot\",\"sbrief\":\"mod above t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t underdot\"},\"mathspeak\":{\"default\":\"modifying below t with dot\",\"brief\":\"mod below t with dot\",\"sbrief\":\"mod below t with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t underbar\"},\"mathspeak\":{\"default\":\"t underbar\",\"brief\":\"t underbar\",\"sbrief\":\"t underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t underhat\"},\"mathspeak\":{\"default\":\"modifying below t with caret\",\"brief\":\"mod below t with caret\",\"sbrief\":\"mod below t with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u double underdot\"},\"mathspeak\":{\"default\":\"modifying below u with double dot\",\"brief\":\"mod below u with double dot\",\"sbrief\":\"mod below u with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde below\"},\"mathspeak\":{\"default\":\"u undertilde\",\"brief\":\"u undertilde\",\"sbrief\":\"u undertilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u underhat\"},\"mathspeak\":{\"default\":\"modifying below u with caret\",\"brief\":\"mod below u with caret\",\"sbrief\":\"mod below u with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"},\"mathspeak\":{\"default\":\"v overtilde\",\"brief\":\"v overtilde\",\"sbrief\":\"v overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v underdot\"},\"mathspeak\":{\"default\":\"modifying below v with dot\",\"brief\":\"mod below v with dot\",\"sbrief\":\"mod below v with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w grave\"},\"mathspeak\":{\"default\":\"modifying above w with grave\",\"brief\":\"mod above w with grave\",\"sbrief\":\"mod above w with grave\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w acute\"},\"mathspeak\":{\"default\":\"modifying above w with acute\",\"brief\":\"mod above w with acute\",\"sbrief\":\"mod above w with acute\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w double overdot\"},\"mathspeak\":{\"default\":\"modifying above w with double dot\",\"brief\":\"mod above w with double dot\",\"sbrief\":\"mod above w with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w overdot\"},\"mathspeak\":{\"default\":\"modifying above w with dot\",\"brief\":\"mod above w with dot\",\"sbrief\":\"mod above w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w underdot\"},\"mathspeak\":{\"default\":\"modifying below w with dot\",\"brief\":\"mod below w with dot\",\"sbrief\":\"mod below w with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x overdot\"},\"mathspeak\":{\"default\":\"modifying above x with dot\",\"brief\":\"mod above x with dot\",\"sbrief\":\"mod above x with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x double overdot\"},\"mathspeak\":{\"default\":\"modifying above x with double dot\",\"brief\":\"mod above x with double dot\",\"sbrief\":\"mod above x with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y overdot\"},\"mathspeak\":{\"default\":\"modifying above y with dot\",\"brief\":\"mod above y with dot\",\"sbrief\":\"mod above y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z hat\"},\"mathspeak\":{\"default\":\"modifying above z with caret\",\"brief\":\"mod above z with caret\",\"sbrief\":\"mod above z with caret\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z underdot\"},\"mathspeak\":{\"default\":\"modifying below z with dot\",\"brief\":\"mod below z with dot\",\"sbrief\":\"mod below z with dot\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z underbar\"},\"mathspeak\":{\"default\":\"z underbar\",\"brief\":\"z underbar\",\"sbrief\":\"z underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h underbar\"},\"mathspeak\":{\"default\":\"h underbar\",\"brief\":\"h underbar\",\"sbrief\":\"h underbar\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t double overdot\"},\"mathspeak\":{\"default\":\"modifying above t with double dot\",\"brief\":\"mod above t with double dot\",\"sbrief\":\"mod above t with double dot\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w ring\"},\"mathspeak\":{\"default\":\"modifying above w with ring\",\"brief\":\"mod above w with ring\",\"sbrief\":\"mod above w with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y ring\"},\"mathspeak\":{\"default\":\"modifying above y with ring\",\"brief\":\"mod above y with ring\",\"sbrief\":\"mod above y with ring\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a right half ring\"},\"mathspeak\":{\"default\":\"modifying above a with right half ring\",\"brief\":\"mod above a with right half ring\",\"sbrief\":\"mod above a with right half ring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a underdot\"},\"mathspeak\":{\"default\":\"modifying below a with dot\",\"brief\":\"mod below a with dot\",\"sbrief\":\"mod below a with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a hook\"},\"mathspeak\":{\"default\":\"modifying above a with hook\",\"brief\":\"mod above a with hook\",\"sbrief\":\"mod above a with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e underdot\"},\"mathspeak\":{\"default\":\"modifying below e with dot\",\"brief\":\"mod below e with dot\",\"sbrief\":\"mod below e with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e hook\"},\"mathspeak\":{\"default\":\"modifying above e with hook\",\"brief\":\"mod above e with hook\",\"sbrief\":\"mod above e with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"},\"mathspeak\":{\"default\":\"e overtilde\",\"brief\":\"e overtilde\",\"sbrief\":\"e overtilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i hook\"},\"mathspeak\":{\"default\":\"modifying above i with hook\",\"brief\":\"mod above i with hook\",\"sbrief\":\"mod above i with hook\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i underdot\"},\"mathspeak\":{\"default\":\"modifying below i with dot\",\"brief\":\"mod below i with dot\",\"sbrief\":\"mod below i with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o underdot\"},\"mathspeak\":{\"default\":\"modifying below o with dot\",\"brief\":\"mod below o with dot\",\"sbrief\":\"mod below o with dot\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o hook\"},\"mathspeak\":{\"default\":\"modifying above o with hook\",\"brief\":\"mod above o with hook\",\"sbrief\":\"mod above o with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u underdot\"},\"mathspeak\":{\"default\":\"modifying below u with dot\",\"brief\":\"mod below u with dot\",\"sbrief\":\"mod below u with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u hook\"},\"mathspeak\":{\"default\":\"modifying above u with hook\",\"brief\":\"mod above u with hook\",\"sbrief\":\"mod above u with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y grave\"},\"mathspeak\":{\"default\":\"modifying above y with grave\",\"brief\":\"mod above y with grave\",\"sbrief\":\"mod above y with grave\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y underdot\"},\"mathspeak\":{\"default\":\"modifying below y with dot\",\"brief\":\"mod below y with dot\",\"sbrief\":\"mod below y with dot\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y hook\"},\"mathspeak\":{\"default\":\"modifying above y with hook\",\"brief\":\"mod above y with hook\",\"sbrief\":\"mod above y with hook\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"},\"mathspeak\":{\"default\":\"y overtilde\",\"brief\":\"y overtilde\",\"sbrief\":\"y overtilde\"}}}]\n,\n\"en/symbols/latin-rest.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h\",\"physics\":\"planck constant\"}},\"key\":\"210E\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combining a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combining e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combining i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combining o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combining u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combining c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combining d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combining h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combining m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combining r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combining t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combining v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combining x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subscript i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subscript r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subscript u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subscript v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combining r below\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combining flattened open a above\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combining ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combining ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combining av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combining c cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combining insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combining eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combining g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combining small cap G\"},\"mathspeak\":{\"default\":\"combining small upper G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combining k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combining l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combining small cap L\"},\"mathspeak\":{\"default\":\"combining small upper L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combining small cap M\"},\"mathspeak\":{\"default\":\"combining small upper M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combining n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combining small cap N\"},\"mathspeak\":{\"default\":\"combining small upper N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combining small cap R\"},\"mathspeak\":{\"default\":\"combining small upper R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combining r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combining s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combining long s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combining z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superscript i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superscript n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subscript a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subscript e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subscript o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subscript x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subscript schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subscript h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subscript k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subscript l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subscript m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subscript n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subscript p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subscript s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subscript t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subscript j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"tortoise shell bracketed cap S\"},\"mathspeak\":{\"default\":\"tortoise shell bracketed upper S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"circled italic cap C\"},\"mathspeak\":{\"default\":\"circled italic upper C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"circled italic cap R\"},\"mathspeak\":{\"default\":\"circled italic upper R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"crossed negative squared cap P\"},\"mathspeak\":{\"default\":\"crossed negative squared upper P\"}}}]\n,\n\"en/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot overbar\"},\"mathspeak\":{\"default\":\"upper U double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot acute\"},\"mathspeak\":{\"default\":\"upper U double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot caron\"},\"mathspeak\":{\"default\":\"upper U double overdot caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot grave\"},\"mathspeak\":{\"default\":\"upper U double overdot grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot overbar\"},\"mathspeak\":{\"default\":\"upper A double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"cap A overdot overbar\"},\"mathspeak\":{\"default\":\"upper A overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek overbar\"},\"mathspeak\":{\"default\":\"upper O ogonek overbar\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"cap A ring acute\"},\"mathspeak\":{\"default\":\"upper A ring acute\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot overbar\"},\"mathspeak\":{\"default\":\"upper O double overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde overbar\"},\"mathspeak\":{\"default\":\"upper O tilde overbar\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"cap O overdot overbar\"},\"mathspeak\":{\"default\":\"upper O overdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla acute\"},\"mathspeak\":{\"default\":\"upper C cedilla acute\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"cap E overbar grave\"},\"mathspeak\":{\"default\":\"upper E overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"cap E overbar acute\"},\"mathspeak\":{\"default\":\"upper E overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla breve\"},\"mathspeak\":{\"default\":\"upper E cedilla breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot acute\"},\"mathspeak\":{\"default\":\"upper I double overdot acute\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"cap L underdot overbar\"},\"mathspeak\":{\"default\":\"upper L underdot overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"cap O tilde acute\"},\"mathspeak\":{\"default\":\"upper O tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"cap O tilde double overdot\"},\"mathspeak\":{\"default\":\"upper O tilde double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"cap O overbar grave\"},\"mathspeak\":{\"default\":\"upper O overbar grave\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"cap O overbar acute\"},\"mathspeak\":{\"default\":\"upper O overbar acute\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"cap R overbar underdot\"},\"mathspeak\":{\"default\":\"upper R overbar underdot\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"cap S acute overdot\"},\"mathspeak\":{\"default\":\"upper S acute overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"cap S caron overdot\"},\"mathspeak\":{\"default\":\"upper S caron overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"cap S underdot overdot\"},\"mathspeak\":{\"default\":\"upper S underdot overdot\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"cap U tilde acute\"},\"mathspeak\":{\"default\":\"upper U tilde acute\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar double overdot\"},\"mathspeak\":{\"default\":\"upper U overbar double overdot\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"cap A hat acute\"},\"mathspeak\":{\"default\":\"upper A hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"cap A hat grave\"},\"mathspeak\":{\"default\":\"upper A hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"cap A hat hook\"},\"mathspeak\":{\"default\":\"upper A hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"cap A hat tilde\"},\"mathspeak\":{\"default\":\"upper A hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"cap A hat underdot\"},\"mathspeak\":{\"default\":\"upper A hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"cap A breve acute\"},\"mathspeak\":{\"default\":\"upper A breve acute\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"cap A breve grave\"},\"mathspeak\":{\"default\":\"upper A breve grave\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"cap A breve hook\"},\"mathspeak\":{\"default\":\"upper A breve hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"cap A breve tilde\"},\"mathspeak\":{\"default\":\"upper A breve tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"cap A breve underdot\"},\"mathspeak\":{\"default\":\"upper A breve underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"cap E hat acute\"},\"mathspeak\":{\"default\":\"upper E hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"cap E hat grave\"},\"mathspeak\":{\"default\":\"upper E hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"cap E hat hook\"},\"mathspeak\":{\"default\":\"upper E hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"cap E hat tilde\"},\"mathspeak\":{\"default\":\"upper E hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"cap E hat underdot\"},\"mathspeak\":{\"default\":\"upper E hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"cap O hat acute\"},\"mathspeak\":{\"default\":\"upper O hat acute\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"cap O hat grave\"},\"mathspeak\":{\"default\":\"upper O hat grave\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"cap O hat hook\"},\"mathspeak\":{\"default\":\"upper O hat hook\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"cap O hat tilde\"},\"mathspeak\":{\"default\":\"upper O hat tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"cap O hat underdot\"},\"mathspeak\":{\"default\":\"upper O hat underdot\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"cap O acute prime\"},\"mathspeak\":{\"default\":\"upper O acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"cap O grave prime\"},\"mathspeak\":{\"default\":\"upper O grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"cap O hook prime\"},\"mathspeak\":{\"default\":\"upper O hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"cap O tilde prime\"},\"mathspeak\":{\"default\":\"upper O tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"cap O underdot prime\"},\"mathspeak\":{\"default\":\"upper O underdot prime\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"cap U acute prime\"},\"mathspeak\":{\"default\":\"upper U acute prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"cap U grave prime\"},\"mathspeak\":{\"default\":\"upper U grave prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"cap U hook prime\"},\"mathspeak\":{\"default\":\"upper U hook prime\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"cap U tilde prime\"},\"mathspeak\":{\"default\":\"upper U tilde prime\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"cap U underdot prime\"},\"mathspeak\":{\"default\":\"upper U underdot prime\"}}}]\n,\n\"en/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"cap A grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with grave\",\"brief\":\"mod above upper A with grave\",\"sbrief\":\"mod above upper A with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"cap A acute\"},\"mathspeak\":{\"default\":\"modifying above upper A with acute\",\"brief\":\"mod above upper A with acute\",\"sbrief\":\"mod above upper A with acute\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"cap A hat\"},\"mathspeak\":{\"default\":\"modifying above upper A with caret\",\"brief\":\"mod above upper A with caret\",\"sbrief\":\"mod above upper A with caret\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"cap A tilde\"},\"mathspeak\":{\"default\":\"upper A overtilde\",\"brief\":\"upper A overtilde\",\"sbrief\":\"upper A overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"cap A double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with double dot\",\"brief\":\"mod above upper A with double dot\",\"sbrief\":\"mod above upper A with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"cap A ring\"},\"mathspeak\":{\"default\":\"modifying above upper A with ring\",\"brief\":\"mod above upper A with ring\",\"sbrief\":\"mod above upper A with ring\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"cap C cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper C with cedilla\",\"brief\":\"mod above upper C with cedilla\",\"sbrief\":\"mod above upper C with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"cap E grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with grave\",\"brief\":\"mod above upper E with grave\",\"sbrief\":\"mod above upper E with grave\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"cap E acute\"},\"mathspeak\":{\"default\":\"modifying above upper E with acute\",\"brief\":\"mod above upper E with acute\",\"sbrief\":\"mod above upper E with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"cap E hat\"},\"mathspeak\":{\"default\":\"modifying above upper E with caret\",\"brief\":\"mod above upper E with caret\",\"sbrief\":\"mod above upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"cap E double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with double dot\",\"brief\":\"mod above upper E with double dot\",\"sbrief\":\"mod above upper E with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"cap I grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with grave\",\"brief\":\"mod above upper I with grave\",\"sbrief\":\"mod above upper I with grave\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"cap I acute\"},\"mathspeak\":{\"default\":\"modifying above upper I with acute\",\"brief\":\"mod above upper I with acute\",\"sbrief\":\"mod above upper I with acute\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"cap I hat\"},\"mathspeak\":{\"default\":\"modifying above upper I with caret\",\"brief\":\"mod above upper I with caret\",\"sbrief\":\"mod above upper I with caret\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"cap I double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with double dot\",\"brief\":\"mod above upper I with double dot\",\"sbrief\":\"mod above upper I with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"cap N tilde\"},\"mathspeak\":{\"default\":\"upper N overtilde\",\"brief\":\"upper N overtilde\",\"sbrief\":\"upper N overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"cap O grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with grave\",\"brief\":\"mod above upper O with grave\",\"sbrief\":\"mod above upper O with grave\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"cap O acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with acute\",\"brief\":\"mod above upper O with acute\",\"sbrief\":\"mod above upper O with acute\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"cap O hat\"},\"mathspeak\":{\"default\":\"modifying above upper O with caret\",\"brief\":\"mod above upper O with caret\",\"sbrief\":\"mod above upper O with caret\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"cap O tilde\"},\"mathspeak\":{\"default\":\"upper O overtilde\",\"brief\":\"upper O overtilde\",\"sbrief\":\"upper O overtilde\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"cap O double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with double dot\",\"brief\":\"mod above upper O with double dot\",\"sbrief\":\"mod above upper O with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"cap U grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with grave\",\"brief\":\"mod above upper U with grave\",\"sbrief\":\"mod above upper U with grave\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"cap U acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with acute\",\"brief\":\"mod above upper U with acute\",\"sbrief\":\"mod above upper U with acute\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"cap U hat\"},\"mathspeak\":{\"default\":\"modifying above upper U with caret\",\"brief\":\"mod above upper U with caret\",\"sbrief\":\"mod above upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"cap U double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper U with double dot\",\"brief\":\"mod above upper U with double dot\",\"sbrief\":\"mod above upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"cap Y acute\"},\"mathspeak\":{\"default\":\"modifying above upper Y with acute\",\"brief\":\"mod above upper Y with acute\",\"sbrief\":\"mod above upper Y with acute\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"cap A overbar\"},\"mathspeak\":{\"default\":\"upper A overbar\",\"brief\":\"upper A overbar\",\"sbrief\":\"upper A overbar\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"cap A breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with breve\",\"brief\":\"mod above upper A with breve\",\"sbrief\":\"mod above upper A with breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"cap A ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper A with ogonek\",\"brief\":\"mod above upper A with ogonek\",\"sbrief\":\"mod above upper A with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"cap C acute\"},\"mathspeak\":{\"default\":\"modifying above upper C with acute\",\"brief\":\"mod above upper C with acute\",\"sbrief\":\"mod above upper C with acute\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"cap C hat\"},\"mathspeak\":{\"default\":\"modifying above upper C with caret\",\"brief\":\"mod above upper C with caret\",\"sbrief\":\"mod above upper C with caret\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"cap C overdot\"},\"mathspeak\":{\"default\":\"modifying above upper C with dot\",\"brief\":\"mod above upper C with dot\",\"sbrief\":\"mod above upper C with dot\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"cap C caron\"},\"mathspeak\":{\"default\":\"modifying above upper C with caron\",\"brief\":\"mod above upper C with caron\",\"sbrief\":\"mod above upper C with caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"cap D caron\"},\"mathspeak\":{\"default\":\"modifying above upper D with caron\",\"brief\":\"mod above upper D with caron\",\"sbrief\":\"mod above upper D with caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"cap E overbar\"},\"mathspeak\":{\"default\":\"upper E overbar\",\"brief\":\"upper E overbar\",\"sbrief\":\"upper E overbar\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"cap E breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with breve\",\"brief\":\"mod above upper E with breve\",\"sbrief\":\"mod above upper E with breve\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"cap E overdot\"},\"mathspeak\":{\"default\":\"modifying above upper E with dot\",\"brief\":\"mod above upper E with dot\",\"sbrief\":\"mod above upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"cap E ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper E with ogonek\",\"brief\":\"mod above upper E with ogonek\",\"sbrief\":\"mod above upper E with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"cap E caron\"},\"mathspeak\":{\"default\":\"modifying above upper E with caron\",\"brief\":\"mod above upper E with caron\",\"sbrief\":\"mod above upper E with caron\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"cap G hat\"},\"mathspeak\":{\"default\":\"modifying above upper G with caret\",\"brief\":\"mod above upper G with caret\",\"sbrief\":\"mod above upper G with caret\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"cap G breve\"},\"mathspeak\":{\"default\":\"modifying above upper G with breve\",\"brief\":\"mod above upper G with breve\",\"sbrief\":\"mod above upper G with breve\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"cap G overdot\"},\"mathspeak\":{\"default\":\"modifying above upper G with dot\",\"brief\":\"mod above upper G with dot\",\"sbrief\":\"mod above upper G with dot\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"cap G cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper G with cedilla\",\"brief\":\"mod above upper G with cedilla\",\"sbrief\":\"mod above upper G with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"cap H hat\"},\"mathspeak\":{\"default\":\"modifying above upper H with caret\",\"brief\":\"mod above upper H with caret\",\"sbrief\":\"mod above upper H with caret\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"cap I tilde\"},\"mathspeak\":{\"default\":\"upper I overtilde\",\"brief\":\"upper I overtilde\",\"sbrief\":\"upper I overtilde\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"cap I overbar\"},\"mathspeak\":{\"default\":\"upper I overbar\",\"brief\":\"upper I overbar\",\"sbrief\":\"upper I overbar\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"cap I breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with breve\",\"brief\":\"mod above upper I with breve\",\"sbrief\":\"mod above upper I with breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"cap I ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper I with ogonek\",\"brief\":\"mod above upper I with ogonek\",\"sbrief\":\"mod above upper I with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"cap I overdot\"},\"mathspeak\":{\"default\":\"modifying above upper I with dot\",\"brief\":\"mod above upper I with dot\",\"sbrief\":\"mod above upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"cap J hat\"},\"mathspeak\":{\"default\":\"modifying above upper J with caret\",\"brief\":\"mod above upper J with caret\",\"sbrief\":\"mod above upper J with caret\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"cap K cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper K with cedilla\",\"brief\":\"mod above upper K with cedilla\",\"sbrief\":\"mod above upper K with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"cap L acute\"},\"mathspeak\":{\"default\":\"modifying above upper L with acute\",\"brief\":\"mod above upper L with acute\",\"sbrief\":\"mod above upper L with acute\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"cap L cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper L with cedilla\",\"brief\":\"mod above upper L with cedilla\",\"sbrief\":\"mod above upper L with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"cap L caron\"},\"mathspeak\":{\"default\":\"modifying above upper L with caron\",\"brief\":\"mod above upper L with caron\",\"sbrief\":\"mod above upper L with caron\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"cap L middle dot\"},\"mathspeak\":{\"default\":\"modifying above upper L with middle dot\",\"brief\":\"mod above upper L with middle dot\",\"sbrief\":\"mod above upper L with middle dot\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"cap N acute\"},\"mathspeak\":{\"default\":\"modifying above upper N with acute\",\"brief\":\"mod above upper N with acute\",\"sbrief\":\"mod above upper N with acute\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"cap N cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper N with cedilla\",\"brief\":\"mod above upper N with cedilla\",\"sbrief\":\"mod above upper N with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"cap N caron\"},\"mathspeak\":{\"default\":\"modifying above upper N with caron\",\"brief\":\"mod above upper N with caron\",\"sbrief\":\"mod above upper N with caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"cap O overbar\"},\"mathspeak\":{\"default\":\"upper O overbar\",\"brief\":\"upper O overbar\",\"sbrief\":\"upper O overbar\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"cap O breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with breve\",\"brief\":\"mod above upper O with breve\",\"sbrief\":\"mod above upper O with breve\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"cap O double acute\"},\"mathspeak\":{\"default\":\"modifying above upper O with double acute\",\"brief\":\"mod above upper O with double acute\",\"sbrief\":\"mod above upper O with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"cap R acute\"},\"mathspeak\":{\"default\":\"modifying above upper R with acute\",\"brief\":\"mod above upper R with acute\",\"sbrief\":\"mod above upper R with acute\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"cap R cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper R with cedilla\",\"brief\":\"mod above upper R with cedilla\",\"sbrief\":\"mod above upper R with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"cap R caron\"},\"mathspeak\":{\"default\":\"modifying above upper R with caron\",\"brief\":\"mod above upper R with caron\",\"sbrief\":\"mod above upper R with caron\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"cap S acute\"},\"mathspeak\":{\"default\":\"modifying above upper S with acute\",\"brief\":\"mod above upper S with acute\",\"sbrief\":\"mod above upper S with acute\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"cap S hat\"},\"mathspeak\":{\"default\":\"modifying above upper S with caret\",\"brief\":\"mod above upper S with caret\",\"sbrief\":\"mod above upper S with caret\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"cap S cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper S with cedilla\",\"brief\":\"mod above upper S with cedilla\",\"sbrief\":\"mod above upper S with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"cap S caron\"},\"mathspeak\":{\"default\":\"modifying above upper S with caron\",\"brief\":\"mod above upper S with caron\",\"sbrief\":\"mod above upper S with caron\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"cap T cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper T with cedilla\",\"brief\":\"mod above upper T with cedilla\",\"sbrief\":\"mod above upper T with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"cap T caron\"},\"mathspeak\":{\"default\":\"modifying above upper T with caron\",\"brief\":\"mod above upper T with caron\",\"sbrief\":\"mod above upper T with caron\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"cap U tilde\"},\"mathspeak\":{\"default\":\"upper U overtilde\",\"brief\":\"upper U overtilde\",\"sbrief\":\"upper U overtilde\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"cap U overbar\"},\"mathspeak\":{\"default\":\"upper U overbar\",\"brief\":\"upper U overbar\",\"sbrief\":\"upper U overbar\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"cap U breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with breve\",\"brief\":\"mod above upper U with breve\",\"sbrief\":\"mod above upper U with breve\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"cap U ring\"},\"mathspeak\":{\"default\":\"modifying above upper U with ring\",\"brief\":\"mod above upper U with ring\",\"sbrief\":\"mod above upper U with ring\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"cap U double acute\"},\"mathspeak\":{\"default\":\"modifying above upper U with double acute\",\"brief\":\"mod above upper U with double acute\",\"sbrief\":\"mod above upper U with double acute\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"cap U ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper U with ogonek\",\"brief\":\"mod above upper U with ogonek\",\"sbrief\":\"mod above upper U with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"cap W hat\"},\"mathspeak\":{\"default\":\"modifying above upper W with caret\",\"brief\":\"mod above upper W with caret\",\"sbrief\":\"mod above upper W with caret\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"cap Y hat\"},\"mathspeak\":{\"default\":\"modifying above upper Y with caret\",\"brief\":\"mod above upper Y with caret\",\"sbrief\":\"mod above upper Y with caret\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"cap Y double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with double dot\",\"brief\":\"mod above upper Y with double dot\",\"sbrief\":\"mod above upper Y with double dot\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"cap Z acute\"},\"mathspeak\":{\"default\":\"modifying above upper Z with acute\",\"brief\":\"mod above upper Z with acute\",\"sbrief\":\"mod above upper Z with acute\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"cap Z overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Z with dot\",\"brief\":\"mod above upper Z with dot\",\"sbrief\":\"mod above upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"cap Z caron\"},\"mathspeak\":{\"default\":\"modifying above upper Z with caron\",\"brief\":\"mod above upper Z with caron\",\"sbrief\":\"mod above upper Z with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"cap A caron\"},\"mathspeak\":{\"default\":\"modifying above upper A with caron\",\"brief\":\"mod above upper A with caron\",\"sbrief\":\"mod above upper A with caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"cap I caron\"},\"mathspeak\":{\"default\":\"modifying above upper I with caron\",\"brief\":\"mod above upper I with caron\",\"sbrief\":\"mod above upper I with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"cap O caron\"},\"mathspeak\":{\"default\":\"modifying above upper O with caron\",\"brief\":\"mod above upper O with caron\",\"sbrief\":\"mod above upper O with caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"cap U caron\"},\"mathspeak\":{\"default\":\"modifying above upper U with caron\",\"brief\":\"mod above upper U with caron\",\"sbrief\":\"mod above upper U with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"cap G caron\"},\"mathspeak\":{\"default\":\"modifying above upper G with caron\",\"brief\":\"mod above upper G with caron\",\"sbrief\":\"mod above upper G with caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"cap K caron\"},\"mathspeak\":{\"default\":\"modifying above upper K with caron\",\"brief\":\"mod above upper K with caron\",\"sbrief\":\"mod above upper K with caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"cap O ogonek\"},\"mathspeak\":{\"default\":\"modifying above upper O with ogonek\",\"brief\":\"mod above upper O with ogonek\",\"sbrief\":\"mod above upper O with ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"cap G acute\"},\"mathspeak\":{\"default\":\"modifying above upper G with acute\",\"brief\":\"mod above upper G with acute\",\"sbrief\":\"mod above upper G with acute\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"cap N grave\"},\"mathspeak\":{\"default\":\"modifying above upper N with grave\",\"brief\":\"mod above upper N with grave\",\"sbrief\":\"mod above upper N with grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"cap A double grave\"},\"mathspeak\":{\"default\":\"modifying above upper A with double grave\",\"brief\":\"mod above upper A with double grave\",\"sbrief\":\"mod above upper A with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"cap A inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper A with inverted breve\",\"brief\":\"mod above upper A with inverted breve\",\"sbrief\":\"mod above upper A with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"cap E double grave\"},\"mathspeak\":{\"default\":\"modifying above upper E with double grave\",\"brief\":\"mod above upper E with double grave\",\"sbrief\":\"mod above upper E with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"cap E inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper E with inverted breve\",\"brief\":\"mod above upper E with inverted breve\",\"sbrief\":\"mod above upper E with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"cap I double grave\"},\"mathspeak\":{\"default\":\"modifying above upper I with double grave\",\"brief\":\"mod above upper I with double grave\",\"sbrief\":\"mod above upper I with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"cap I inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper I with inverted breve\",\"brief\":\"mod above upper I with inverted breve\",\"sbrief\":\"mod above upper I with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"cap O double grave\"},\"mathspeak\":{\"default\":\"modifying above upper O with double grave\",\"brief\":\"mod above upper O with double grave\",\"sbrief\":\"mod above upper O with double grave\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"cap O inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper O with inverted breve\",\"brief\":\"mod above upper O with inverted breve\",\"sbrief\":\"mod above upper O with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"cap R double grave\"},\"mathspeak\":{\"default\":\"modifying above upper R with double grave\",\"brief\":\"mod above upper R with double grave\",\"sbrief\":\"mod above upper R with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"cap R inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper R with inverted breve\",\"brief\":\"mod above upper R with inverted breve\",\"sbrief\":\"mod above upper R with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"cap U double grave\"},\"mathspeak\":{\"default\":\"modifying above upper U with double grave\",\"brief\":\"mod above upper U with double grave\",\"sbrief\":\"mod above upper U with double grave\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"cap U inverted breve\"},\"mathspeak\":{\"default\":\"modifying above upper U with inverted breve\",\"brief\":\"mod above upper U with inverted breve\",\"sbrief\":\"mod above upper U with inverted breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"cap S comma below\"},\"mathspeak\":{\"default\":\"modifying below upper S with comma below\",\"brief\":\"mod below upper S with comma below\",\"sbrief\":\"mod below upper S with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"cap T comma below\"},\"mathspeak\":{\"default\":\"modifying below upper T with comma below\",\"brief\":\"mod below upper T with comma below\",\"sbrief\":\"mod below upper T with comma below\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"cap H caron\"},\"mathspeak\":{\"default\":\"modifying above upper H with caron\",\"brief\":\"mod above upper H with caron\",\"sbrief\":\"mod above upper H with caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"cap A overdot\"},\"mathspeak\":{\"default\":\"modifying above upper A with dot\",\"brief\":\"mod above upper A with dot\",\"sbrief\":\"mod above upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"cap E cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper E with cedilla\",\"brief\":\"mod above upper E with cedilla\",\"sbrief\":\"mod above upper E with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"cap O overdot\"},\"mathspeak\":{\"default\":\"modifying above upper O with dot\",\"brief\":\"mod above upper O with dot\",\"sbrief\":\"mod above upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"cap Y overbar\"},\"mathspeak\":{\"default\":\"upper Y overbar\",\"brief\":\"upper Y overbar\",\"sbrief\":\"upper Y overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"cap A ring below\"},\"mathspeak\":{\"default\":\"modifying below upper A with ring below\",\"brief\":\"mod below upper A with ring below\",\"sbrief\":\"mod below upper A with ring below\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"cap B overdot\"},\"mathspeak\":{\"default\":\"modifying above upper B with dot\",\"brief\":\"mod above upper B with dot\",\"sbrief\":\"mod above upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"cap B underdot\"},\"mathspeak\":{\"default\":\"modifying below upper B with dot\",\"brief\":\"mod below upper B with dot\",\"sbrief\":\"mod below upper B with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"cap B underbar\"},\"mathspeak\":{\"default\":\"upper B underbar\",\"brief\":\"upper B underbar\",\"sbrief\":\"upper B underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"cap D overdot\"},\"mathspeak\":{\"default\":\"modifying above upper D with dot\",\"brief\":\"mod above upper D with dot\",\"sbrief\":\"mod above upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"cap D underdot\"},\"mathspeak\":{\"default\":\"modifying below upper D with dot\",\"brief\":\"mod below upper D with dot\",\"sbrief\":\"mod below upper D with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"cap D underbar\"},\"mathspeak\":{\"default\":\"upper D underbar\",\"brief\":\"upper D underbar\",\"sbrief\":\"upper D underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"cap D cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper D with cedilla\",\"brief\":\"mod above upper D with cedilla\",\"sbrief\":\"mod above upper D with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"cap D underhat\"},\"mathspeak\":{\"default\":\"modifying below upper D with caret\",\"brief\":\"mod below upper D with caret\",\"sbrief\":\"mod below upper D with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"cap E underhat\"},\"mathspeak\":{\"default\":\"modifying below upper E with caret\",\"brief\":\"mod below upper E with caret\",\"sbrief\":\"mod below upper E with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"cap E tilde below\"},\"mathspeak\":{\"default\":\"upper E undertilde\",\"brief\":\"upper E undertilde\",\"sbrief\":\"upper E undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"cap F overdot\"},\"mathspeak\":{\"default\":\"modifying above upper F with dot\",\"brief\":\"mod above upper F with dot\",\"sbrief\":\"mod above upper F with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"cap G overbar\"},\"mathspeak\":{\"default\":\"upper G overbar\",\"brief\":\"upper G overbar\",\"sbrief\":\"upper G overbar\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"cap H overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with dot\",\"brief\":\"mod above upper H with dot\",\"sbrief\":\"mod above upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"cap H underdot\"},\"mathspeak\":{\"default\":\"modifying below upper H with dot\",\"brief\":\"mod below upper H with dot\",\"sbrief\":\"mod below upper H with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"cap H double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper H with double dot\",\"brief\":\"mod above upper H with double dot\",\"sbrief\":\"mod above upper H with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"cap H cedilla\"},\"mathspeak\":{\"default\":\"modifying above upper H with cedilla\",\"brief\":\"mod above upper H with cedilla\",\"sbrief\":\"mod above upper H with cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"cap H breve below\"},\"mathspeak\":{\"default\":\"modifying below upper H with breve below\",\"brief\":\"mod below upper H with breve below\",\"sbrief\":\"mod below upper H with breve below\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"cap I tilde below\"},\"mathspeak\":{\"default\":\"upper I undertilde\",\"brief\":\"upper I undertilde\",\"sbrief\":\"upper I undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"cap K acute\"},\"mathspeak\":{\"default\":\"modifying above upper K with acute\",\"brief\":\"mod above upper K with acute\",\"sbrief\":\"mod above upper K with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"cap K underdot\"},\"mathspeak\":{\"default\":\"modifying below upper K with dot\",\"brief\":\"mod below upper K with dot\",\"sbrief\":\"mod below upper K with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"cap K underbar\"},\"mathspeak\":{\"default\":\"upper K underbar\",\"brief\":\"upper K underbar\",\"sbrief\":\"upper K underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"cap L underdot\"},\"mathspeak\":{\"default\":\"modifying below upper L with dot\",\"brief\":\"mod below upper L with dot\",\"sbrief\":\"mod below upper L with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"cap L underbar\"},\"mathspeak\":{\"default\":\"upper L underbar\",\"brief\":\"upper L underbar\",\"sbrief\":\"upper L underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"cap L underhat\"},\"mathspeak\":{\"default\":\"modifying below upper L with caret\",\"brief\":\"mod below upper L with caret\",\"sbrief\":\"mod below upper L with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"cap M acute\"},\"mathspeak\":{\"default\":\"modifying above upper M with acute\",\"brief\":\"mod above upper M with acute\",\"sbrief\":\"mod above upper M with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"cap M overdot\"},\"mathspeak\":{\"default\":\"modifying above upper M with dot\",\"brief\":\"mod above upper M with dot\",\"sbrief\":\"mod above upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"cap M underdot\"},\"mathspeak\":{\"default\":\"modifying below upper M with dot\",\"brief\":\"mod below upper M with dot\",\"sbrief\":\"mod below upper M with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"cap N overdot\"},\"mathspeak\":{\"default\":\"modifying above upper N with dot\",\"brief\":\"mod above upper N with dot\",\"sbrief\":\"mod above upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"cap N underdot\"},\"mathspeak\":{\"default\":\"modifying below upper N with dot\",\"brief\":\"mod below upper N with dot\",\"sbrief\":\"mod below upper N with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"cap N underbar\"},\"mathspeak\":{\"default\":\"upper N underbar\",\"brief\":\"upper N underbar\",\"sbrief\":\"upper N underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"cap N underhat\"},\"mathspeak\":{\"default\":\"modifying below upper N with caret\",\"brief\":\"mod below upper N with caret\",\"sbrief\":\"mod below upper N with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"cap P acute\"},\"mathspeak\":{\"default\":\"modifying above upper P with acute\",\"brief\":\"mod above upper P with acute\",\"sbrief\":\"mod above upper P with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"cap P overdot\"},\"mathspeak\":{\"default\":\"modifying above upper P with dot\",\"brief\":\"mod above upper P with dot\",\"sbrief\":\"mod above upper P with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"cap R overdot\"},\"mathspeak\":{\"default\":\"modifying above upper R with dot\",\"brief\":\"mod above upper R with dot\",\"sbrief\":\"mod above upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"cap R underdot\"},\"mathspeak\":{\"default\":\"modifying below upper R with dot\",\"brief\":\"mod below upper R with dot\",\"sbrief\":\"mod below upper R with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"cap R underbar\"},\"mathspeak\":{\"default\":\"upper R underbar\",\"brief\":\"upper R underbar\",\"sbrief\":\"upper R underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"cap S overdot\"},\"mathspeak\":{\"default\":\"modifying above upper S with dot\",\"brief\":\"mod above upper S with dot\",\"sbrief\":\"mod above upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"cap S underdot\"},\"mathspeak\":{\"default\":\"modifying below upper S with dot\",\"brief\":\"mod below upper S with dot\",\"sbrief\":\"mod below upper S with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"cap T overdot\"},\"mathspeak\":{\"default\":\"modifying above upper T with dot\",\"brief\":\"mod above upper T with dot\",\"sbrief\":\"mod above upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"cap T underdot\"},\"mathspeak\":{\"default\":\"modifying below upper T with dot\",\"brief\":\"mod below upper T with dot\",\"sbrief\":\"mod below upper T with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"cap T underbar\"},\"mathspeak\":{\"default\":\"upper T underbar\",\"brief\":\"upper T underbar\",\"sbrief\":\"upper T underbar\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"cap T underhat\"},\"mathspeak\":{\"default\":\"modifying below upper T with caret\",\"brief\":\"mod below upper T with caret\",\"sbrief\":\"mod below upper T with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"cap U double underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with double dot\",\"brief\":\"mod below upper U with double dot\",\"sbrief\":\"mod below upper U with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"cap U tilde below\"},\"mathspeak\":{\"default\":\"upper U undertilde\",\"brief\":\"upper U undertilde\",\"sbrief\":\"upper U undertilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"cap U underhat\"},\"mathspeak\":{\"default\":\"modifying below upper U with caret\",\"brief\":\"mod below upper U with caret\",\"sbrief\":\"mod below upper U with caret\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"cap V tilde\"},\"mathspeak\":{\"default\":\"upper V overtilde\",\"brief\":\"upper V overtilde\",\"sbrief\":\"upper V overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"cap V underdot\"},\"mathspeak\":{\"default\":\"modifying below upper V with dot\",\"brief\":\"mod below upper V with dot\",\"sbrief\":\"mod below upper V with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"cap W grave\"},\"mathspeak\":{\"default\":\"modifying above upper W with grave\",\"brief\":\"mod above upper W with grave\",\"sbrief\":\"mod above upper W with grave\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"cap W acute\"},\"mathspeak\":{\"default\":\"modifying above upper W with acute\",\"brief\":\"mod above upper W with acute\",\"sbrief\":\"mod above upper W with acute\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"cap W double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with double dot\",\"brief\":\"mod above upper W with double dot\",\"sbrief\":\"mod above upper W with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"cap W overdot\"},\"mathspeak\":{\"default\":\"modifying above upper W with dot\",\"brief\":\"mod above upper W with dot\",\"sbrief\":\"mod above upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"cap W underdot\"},\"mathspeak\":{\"default\":\"modifying below upper W with dot\",\"brief\":\"mod below upper W with dot\",\"sbrief\":\"mod below upper W with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"cap X overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with dot\",\"brief\":\"mod above upper X with dot\",\"sbrief\":\"mod above upper X with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"cap X double overdot\"},\"mathspeak\":{\"default\":\"modifying above upper X with double dot\",\"brief\":\"mod above upper X with double dot\",\"sbrief\":\"mod above upper X with double dot\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"cap Y overdot\"},\"mathspeak\":{\"default\":\"modifying above upper Y with dot\",\"brief\":\"mod above upper Y with dot\",\"sbrief\":\"mod above upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"cap Z circumflex\"},\"mathspeak\":{\"default\":\"modifying above upper Z with circumflex\",\"brief\":\"mod above upper Z with circumflex\",\"sbrief\":\"mod above upper Z with circumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"cap Z underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Z with dot\",\"brief\":\"mod below upper Z with dot\",\"sbrief\":\"mod below upper Z with dot\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"cap Z underbar\"},\"mathspeak\":{\"default\":\"upper Z underbar\",\"brief\":\"upper Z underbar\",\"sbrief\":\"upper Z underbar\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"cap A underdot\"},\"mathspeak\":{\"default\":\"modifying below upper A with dot\",\"brief\":\"mod below upper A with dot\",\"sbrief\":\"mod below upper A with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"cap A hook\"},\"mathspeak\":{\"default\":\"modifying above upper A with hook\",\"brief\":\"mod above upper A with hook\",\"sbrief\":\"mod above upper A with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"cap E underdot\"},\"mathspeak\":{\"default\":\"modifying below upper E with dot\",\"brief\":\"mod below upper E with dot\",\"sbrief\":\"mod below upper E with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"cap E hook\"},\"mathspeak\":{\"default\":\"modifying above upper E with hook\",\"brief\":\"mod above upper E with hook\",\"sbrief\":\"mod above upper E with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"cap E tilde\"},\"mathspeak\":{\"default\":\"upper E overtilde\",\"brief\":\"upper E overtilde\",\"sbrief\":\"upper E overtilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"cap I hook\"},\"mathspeak\":{\"default\":\"modifying above upper I with hook\",\"brief\":\"mod above upper I with hook\",\"sbrief\":\"mod above upper I with hook\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"cap I underdot\"},\"mathspeak\":{\"default\":\"modifying below upper I with dot\",\"brief\":\"mod below upper I with dot\",\"sbrief\":\"mod below upper I with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"cap O underdot\"},\"mathspeak\":{\"default\":\"modifying below upper O with dot\",\"brief\":\"mod below upper O with dot\",\"sbrief\":\"mod below upper O with dot\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"cap O hook\"},\"mathspeak\":{\"default\":\"modifying above upper O with hook\",\"brief\":\"mod above upper O with hook\",\"sbrief\":\"mod above upper O with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"cap U underdot\"},\"mathspeak\":{\"default\":\"modifying below upper U with dot\",\"brief\":\"mod below upper U with dot\",\"sbrief\":\"mod below upper U with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"cap U hook\"},\"mathspeak\":{\"default\":\"modifying above upper U with hook\",\"brief\":\"mod above upper U with hook\",\"sbrief\":\"mod above upper U with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"cap Y grave\"},\"mathspeak\":{\"default\":\"modifying above upper Y with grave\",\"brief\":\"mod above upper Y with grave\",\"sbrief\":\"mod above upper Y with grave\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"cap Y underdot\"},\"mathspeak\":{\"default\":\"modifying below upper Y with dot\",\"brief\":\"mod below upper Y with dot\",\"sbrief\":\"mod below upper Y with dot\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"cap Y hook\"},\"mathspeak\":{\"default\":\"modifying above upper Y with hook\",\"brief\":\"mod above upper Y with hook\",\"sbrief\":\"mod above upper Y with hook\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"cap Y tilde\"},\"mathspeak\":{\"default\":\"upper Y overtilde\",\"brief\":\"upper Y overtilde\",\"sbrief\":\"upper Y overtilde\"}}}]\n,\n\"en/symbols/math_angles.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with arc\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with downwards zigzag arrow\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three dimensional angle\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle opening left\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle variant with square\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured right angle with dot\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with s inside\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"acute angle\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening left\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle opening up\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned angle\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle with underbar\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed angle with underbar\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening up\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"oblique angle opening down\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and right\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and left\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and right\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and left\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"key\":\"29AF\"}]\n,\n\"en/symbols/math_arrows.js\": \n[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow\"},\"mathspeak\":{\"sbrief\":\"L R arrow\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow\"},\"mathspeak\":{\"sbrief\":\"U D arrow\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow\"},\"mathspeak\":{\"sbrief\":\"U L arrow\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right arrow\"},\"mathspeak\":{\"sbrief\":\"U R arrow\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right arrow\"},\"mathspeak\":{\"sbrief\":\"D R arrow\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left arrow\"},\"mathspeak\":{\"sbrief\":\"D L arrow\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with stroke\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with stroke\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left wave arrow\"},\"mathspeak\":{\"sbrief\":\"L wave arrow\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right wave arrow\"},\"mathspeak\":{\"sbrief\":\"R wave arrow\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed left arrow\"},\"mathspeak\":{\"sbrief\":\"two headed L arrow\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed up arrow\"},\"mathspeak\":{\"sbrief\":\"two headed U arrow\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"two headed down arrow\"},\"mathspeak\":{\"sbrief\":\"two headed D arrow\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"U arrow from bar\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow from bar\"},\"mathspeak\":{\"sbrief\":\"D arrow from bar\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down arrow with base\"},\"mathspeak\":{\"sbrief\":\"U D arrow with base\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"L arrow with hook\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with hook\"},\"mathspeak\":{\"sbrief\":\"R arrow with hook\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with loop\"},\"mathspeak\":{\"sbrief\":\"L arrow with loop\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with loop\"},\"mathspeak\":{\"sbrief\":\"R arrow with loop\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right wave arrow\"},\"mathspeak\":{\"sbrief\":\"L R wave arrow\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with stroke\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down zigzag arrow\"},\"mathspeak\":{\"sbrief\":\"d zigzag arrow\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip left\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"U arrow with tip right\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip left\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip left\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with tip right\"},\"mathspeak\":{\"sbrief\":\"D arrow with tip right\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with corner down\"},\"mathspeak\":{\"sbrief\":\"R arrow with corner down\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with corner left\"},\"mathspeak\":{\"sbrief\":\"D arrow with corner left\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise top semicircle arrow\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise top semicircle arrow\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left arrow to long bar\"},\"mathspeak\":{\"sbrief\":\"U L arrow to long bar\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar over right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar over R arrow to bar\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"anticlockwise open circle arrow\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"clockwise open circle arrow\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow over left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow over L arrow\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow left of down arrow\"},\"mathspeak\":{\"sbrief\":\"U arrow L of D arrow\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow over right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow over R arrow\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left paired arrows\"},\"mathspeak\":{\"sbrief\":\"L paired arrows\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up paired arrows\"},\"mathspeak\":{\"sbrief\":\"U paired arrows\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right paired arrows\"},\"mathspeak\":{\"sbrief\":\"R paired arrows\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down paired arrows\"},\"mathspeak\":{\"sbrief\":\"D paired arrows\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L double arrow with stroke\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"L R double arrow with stroke\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with stroke\"},\"mathspeak\":{\"sbrief\":\"R double arrow with stroke\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left double arrow\"},\"mathspeak\":{\"sbrief\":\"L double arrow\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up double arrow\"},\"mathspeak\":{\"sbrief\":\"U double arrow\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow\"},\"mathspeak\":{\"sbrief\":\"R double arrow\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down double arrow\"},\"mathspeak\":{\"sbrief\":\"d double arrow\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right double arrow\"},\"mathspeak\":{\"sbrief\":\"L R double arrow\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down double arrow\"},\"mathspeak\":{\"sbrief\":\"U d double arrow\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up left double arrow\"},\"mathspeak\":{\"sbrief\":\"U L double arrow\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up right double arrow\"},\"mathspeak\":{\"sbrief\":\"U R double arrow\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down right double arrow\"},\"mathspeak\":{\"sbrief\":\"d R double arrow\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down left double arrow\"},\"mathspeak\":{\"sbrief\":\"d L double arrow\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left triple arrow\"},\"mathspeak\":{\"sbrief\":\"L triple arrow\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right triple arrow\"},\"mathspeak\":{\"sbrief\":\"r triple arrow\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"L squiggle arrow\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"r squiggle arrow\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with double stroke\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrow with double stroke\"},\"mathspeak\":{\"sbrief\":\"D arrow with double stroke\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"L dasheD arrow\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"U dasheD arrow\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"r dasheD arrow\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down dasheD arrow\"},\"mathspeak\":{\"sbrief\":\"d dasheD arrow\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow to bar\"},\"mathspeak\":{\"sbrief\":\"L arrow to bar\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow to bar\"},\"mathspeak\":{\"sbrief\":\"R arrow to bar\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left arrow\"},\"mathspeak\":{\"sbrief\":\"white L arrow\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow\"},\"mathspeak\":{\"sbrief\":\"white U arrow\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow\"},\"mathspeak\":{\"sbrief\":\"white R arrow\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down arrow\"},\"mathspeak\":{\"sbrief\":\"white D arrow\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow from bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow from bar\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with horizontal bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with horizontal bar\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up arrow on pedestal with vertical bar\"},\"mathspeak\":{\"sbrief\":\"white U arrow on pedestal with vertical bar\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow\"},\"mathspeak\":{\"sbrief\":\"white double U arrow\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white double up arrow on pedestal\"},\"mathspeak\":{\"sbrief\":\"white double U arrow on pedestal\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right arrow from wall\"},\"mathspeak\":{\"sbrief\":\"white R arrow from wall\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west arrow to corner\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east arrow to corner\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down white arrow\"},\"mathspeak\":{\"sbrief\":\"U d white arrow\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"R arrow with small circle\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow left of up arrow\"},\"mathspeak\":{\"sbrief\":\"D arrow l of U arrow\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three right arrows\"},\"mathspeak\":{\"sbrief\":\"three R arrows\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with vertical stroke\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with vertical stroke\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with vertical stroke\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with double vertical stroke\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with double vertical stroke\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L R arrow with double vertical stroke\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left open headed arrow\"},\"mathspeak\":{\"sbrief\":\"l open headed arrow\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"r open headed arrow\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right open headed arrow\"},\"mathspeak\":{\"sbrief\":\"L R open headed arrow\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"electric arrow\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead\"},\"mathspeak\":{\"sbrief\":\"U arrowhead\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down arrowhead\"},\"mathspeak\":{\"sbrief\":\"D arrowhead\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up arrowhead between two horizontal bars\",\"alternative\":\"enter key\"},\"mathspeak\":{\"sbrief\":\"U arrowhead between two horizontal bars\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken circle with northwest arrow\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wide headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wide headed R arrow\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy d R arrow\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy R arrow\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy U R arrow\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"drafting point right arrow\"},\"mathspeak\":{\"sbrief\":\"drafting point R arrow\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy round tipped right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy round tipped R arrow\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"triangle headed R arrow\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy triangle headed R arrow\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"dashed triangle headed R arrow\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy dashed triangle headed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy dashed triangle headed R arrow\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrow\"},\"mathspeak\":{\"sbrief\":\"black R arrow\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d top lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d top lighted R arrowhead\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"three d bottom lighted right arrowhead\"},\"mathspeak\":{\"sbrief\":\"three d bottom lighted R arrowhead\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right arrowhead\"},\"mathspeak\":{\"sbrief\":\"black R arrowhead\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved down and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved d and R arrow\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black curved up and right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black curved U and R arrow\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"squat black right arrow\"},\"mathspeak\":{\"sbrief\":\"squat black R arrow\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy concave pointed black right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy concave pointed black R arrow\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"right shaded white R arrow\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left shaded white right arrow\"},\"mathspeak\":{\"sbrief\":\"left shaded white R arrow\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"back tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"back tilted shadowed white R arrow\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"front tilted shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"front tilted shadowed white R arrow\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy lower right shadowed white R arrow\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy upper right shadowed white R arrow\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched lower right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched lower right shadowed white R arrow\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"notched upper right shadowed white right arrow\"},\"mathspeak\":{\"sbrief\":\"notched upper right shadowed white R arrow\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled heavy white right arrow\"},\"mathspeak\":{\"sbrief\":\"circled heavy white R arrow\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"white feathered R arrow\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered d R arrow\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered R arrow\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"black feathered U R arrow\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered down right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered d R arrow\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered R arrow\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy black feathered up right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy black feathered U R arrow\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop barbed right arrow\"},\"mathspeak\":{\"sbrief\":\"teardrop barbed R arrow\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop shanked right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy teardrop shanked R arrow\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"wedge tailed R arrow\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy wedge tailed right arrow\"},\"mathspeak\":{\"sbrief\":\"heavy wedge tailed R arrow\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open outlined right arrow\"},\"mathspeak\":{\"sbrief\":\"open outlined R arrow\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"U quadruple arrow\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"d quadrule arrow\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise gapped circle arrow\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise gapped circle arrow\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"R arrow with circled plus\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow\"},\"mathspeak\":{\"sbrief\":\"long L arrow\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow\"},\"mathspeak\":{\"sbrief\":\"long R arrow\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right arrow\"},\"mathspeak\":{\"sbrief\":\"long L R arrow\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow\"},\"mathspeak\":{\"sbrief\":\"long l double arrow\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow\"},\"mathspeak\":{\"sbrief\":\"long R double arrow\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left right double arrow\"},\"mathspeak\":{\"sbrief\":\"long L R double arrow\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long L arrow from bar\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R arrow from bar\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long l double arrow from bar\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right double arrow from bar\"},\"mathspeak\":{\"sbrief\":\"long R double arrow from bar\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long r squiggle arrow\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with vertical stroke\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow with double vertical stroke\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L arrow with vertical stroke\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double R arrow with vertical stroke\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left right arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"double L R arrow with vertical stroke\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two headed right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"two headed R arrow from bar\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double left arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double L arrow from bar\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double right arrow from bar\"},\"mathspeak\":{\"sbrief\":\"double R arrow from bar\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow down with horizontal stroke\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow with horizontal stroke\"},\"mathspeak\":{\"sbrief\":\"U arrow with horizontal stroke\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up triple arrow\"},\"mathspeak\":{\"sbrief\":\"U triple arrow\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down triple arrow\"},\"mathspeak\":{\"sbrief\":\"d triple arrow\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double dash arrow\"},\"mathspeak\":{\"sbrief\":\"l double dash arrow\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double dash arrow\"},\"mathspeak\":{\"sbrief\":\"R double dash arrow\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l triple dash arrow\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r triple dash arrow\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"r two headed triple dash arrow\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"R arrow with dotted stem\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow to bar\"},\"mathspeak\":{\"sbrief\":\"U arrow to bar\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down arrow to bar\"},\"mathspeak\":{\"sbrief\":\"D arrow to bar\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with vertical stroke\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"R arrow with tail with double vertical stroke\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with vertical stroke\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"r two headed arrow with tail with double vertical stroke\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow tail\"},\"mathspeak\":{\"sbrief\":\"L arrow tail\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow tail\"},\"mathspeak\":{\"sbrief\":\"R arrow tail\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left double arrow tail\"},\"mathspeak\":{\"sbrief\":\"l double arrow tail\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow tail\"},\"mathspeak\":{\"sbrief\":\"R double arrow tail\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow to black diamond\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow to black diamond\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"L arrow from bar to black diamond\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow from bar to black diamond\"},\"mathspeak\":{\"sbrief\":\"R arrow from bar to black diamond\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west and south east arrow\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east and south west arrow\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow with hook\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow with hook\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow with hook\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow with hook\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow and north east arrow\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow and south east arrow\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow and south west arrow\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south west arrow and north west arrow\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"south east arrow crossing north east arrow\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing south east arrow\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing north east arrow\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing south east arrow\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north east arrow crossing north west arrow\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"north west arrow crossing north east arrow\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly right\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving up\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing right then curving down\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving left\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"arrow pointing down then curving right\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right side arc clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"r side arc clockwise arrow\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left side arc anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"l side arc anticlockwise arrow\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom arc anticlockwise arrow\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc clockwise arrow with minus\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top arc anticlockwise arrow with plus\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right semicircular clockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d r semicircular clockwise arrow\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down left semicircular anticlockwise arrow\"},\"mathspeak\":{\"sbrief\":\"d l semicircular anticlockwise arrow\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise closed circle arrow\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise closed circle arrow\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above short left arrow\"},\"mathspeak\":{\"sbrief\":\"R arrow above short L arrow\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above short right arrow\"},\"mathspeak\":{\"sbrief\":\"L arrow above short R arrow\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short right arrow above left arrow\"},\"mathspeak\":{\"sbrief\":\"short R arrow above L arrow\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"R arrow with plus below\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with plus below\"},\"mathspeak\":{\"sbrief\":\"L arrow with plus below\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through x\"},\"mathspeak\":{\"sbrief\":\"R arrow through x\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left right arrow through small circle\"},\"mathspeak\":{\"sbrief\":\"L R arrow through small circle\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up two headed arrow from small circle\"},\"mathspeak\":{\"sbrief\":\"U two headed arrow from small circle\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right double arrow with rounded head\"},\"mathspeak\":{\"sbrief\":\"R double arrow with rounded head\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above right arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above R arrow\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above R arrow\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above tilde operator\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above tilde operator\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above almost equals\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above left arrow\"},\"mathspeak\":{\"sbrief\":\"less than above L arrow\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through less than\"},\"mathspeak\":{\"sbrief\":\"L arrow through less than\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above right arrow\"},\"mathspeak\":{\"sbrief\":\"greater than above R arrow\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above right arrow\"},\"mathspeak\":{\"sbrief\":\"subset above R arrow\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through subset\"},\"mathspeak\":{\"sbrief\":\"L arrow through subset\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above left arrow\"},\"mathspeak\":{\"sbrief\":\"suerset above L arrow\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with right arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with R arrow above\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with left arrow above\"},\"mathspeak\":{\"sbrief\":\"empty set with L arrow above\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up arrow through circle\"},\"mathspeak\":{\"sbrief\":\"U arrow through circle\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black diamond with down arrow\"},\"mathspeak\":{\"sbrief\":\"black diamond with D arrow\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"white circle with D arrow\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black circle with down arrow\"},\"mathspeak\":{\"sbrief\":\"black circle with D arrow\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with left arrow with hook\"},\"mathspeak\":{\"sbrief\":\"integral with L arrow with hook\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east white arrow\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west white arrow\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east white arrow\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west white arrow\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right white arrow\"},\"mathspeak\":{\"sbrief\":\"L R white arrow\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left black arrow\"},\"mathspeak\":{\"sbrief\":\"L black arrow\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up black arrow\"},\"mathspeak\":{\"sbrief\":\"U black arrow\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down black arrow\"},\"mathspeak\":{\"sbrief\":\"D black arrow\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north east black arrow\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"north west black arrow\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south east black arrow\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"south west black arrow\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left right black arrow\"},\"mathspeak\":{\"sbrief\":\"L R black arrow\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up down black arrow\"},\"mathspeak\":{\"sbrief\":\"U D black arrow\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip down\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"R arrow with tip up\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip down\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip down\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left arrow with tip up\"},\"mathspeak\":{\"sbrief\":\"L arrow with tip up\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with small circle\"},\"mathspeak\":{\"sbrief\":\"L arrow with small circle\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three left arrows\"},\"mathspeak\":{\"sbrief\":\"three L arrows\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with circled plus\"},\"mathspeak\":{\"sbrief\":\"L arrow with circled plus\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left squiggle arrow\"},\"mathspeak\":{\"sbrief\":\"long l squiggle arrow\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with vertical stroke\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with double vertical stroke\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow from bar\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow from bar\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed triple dash arrow\"},\"mathspeak\":{\"sbrief\":\"l two headed triple dash arrow\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with dotted stem\"},\"mathspeak\":{\"sbrief\":\"L arrow with dotted stem\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with vertical stroke\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"L arrow with tail with double vertical stroke\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with vertical stroke\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left two headed arrow with tail with double vertical stroke\"},\"mathspeak\":{\"sbrief\":\"l two headed arrow with tail with double vertical stroke\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow through x\"},\"mathspeak\":{\"sbrief\":\"L arrow through x\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wave arrow pointing directly left\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign above left arrow\"},\"mathspeak\":{\"sbrief\":\"equals sign above L arrow\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above L arrow\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse almost equals\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through greater than\"},\"mathspeak\":{\"sbrief\":\"R arrow through greater than\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow through superset\"},\"mathspeak\":{\"sbrief\":\"R arrow through superset\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"l quadrule arrow\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right quadruple arrow\"},\"mathspeak\":{\"sbrief\":\"r quadrule arrow\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reverse tilde operator above right arrow\"},\"mathspeak\":{\"sbrief\":\"reverse tilde operator above R arrow\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse almost equals\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse almost equals\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde operator above left arrow\"},\"mathspeak\":{\"sbrief\":\"tilde operator above L arrow\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above almost equals\"},\"mathspeak\":{\"sbrief\":\"L arrow above almost equals\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"L arrow above reverse tilde operator\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right arrow above reverse tilde operator\"},\"mathspeak\":{\"sbrief\":\"R arrow above reverse tilde operator\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth left arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth L arrow\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth up arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth U arrow\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth right arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth R arrow\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"halfwidth down arrow\"},\"mathspeak\":{\"sbrief\":\"halfwidth D arrow\"}},\"key\":\"FFEC\"}]\n,\n\"en/symbols/math_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"script cap P\"},\"mathspeak\":{\"default\":\"script upper P\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck pi\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck gamma\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Gamma\"},\"mathspeak\":{\"default\":\"double struck upper Gamma\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck cap Pi\"},\"mathspeak\":{\"default\":\"double struck upper Pi\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double struck sum\"},\"mathspeak\":{\"default\":\"double struck sigma summation\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck italic cap D\"},\"mathspeak\":{\"default\":\"double struck italic upper D\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic d\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic e\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic i\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"double struck italic j\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic dotless j\"}},\"key\":\"1D6A5\"}]\n,\n\"en/symbols/math_delimiters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left parenthesis\"},\"mathspeak\":{\"brief\":\"left p'ren\",\"sbrief\":\"L p'ren\"},\"clearspeak\":{\"default\":\"open paren\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right parenthesis\"},\"mathspeak\":{\"brief\":\"right p'ren\",\"sbrief\":\"R p'ren\"},\"clearspeak\":{\"default\":\"close paren\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket\"},\"mathspeak\":{\"brief\":\"left brack\",\"sbrief\":\"L brack\"},\"clearspeak\":{\"default\":\"open bracket\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket\"},\"mathspeak\":{\"brief\":\"right brack\",\"sbrief\":\"R brack\"},\"clearspeak\":{\"default\":\"close bracket\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left brace\"},\"mathspeak\":{\"sbrief\":\"L brace\"},\"clearspeak\":{\"default\":\"open brace\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right brace\"},\"mathspeak\":{\"sbrief\":\"R brace\"},\"clearspeak\":{\"default\":\"close brace\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with quill\"},\"mathspeak\":{\"brief\":\"left brack with quill\",\"sbrief\":\"L brack with quill\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with quill\"},\"mathspeak\":{\"brief\":\"right brack with quill\",\"sbrief\":\"R brack with quill\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left ceiling\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right ceiling\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left floor\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right floor\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right crop\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left crop\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right crop\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left crop\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top left corner\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top right corner\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom left corner\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom right corner\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top half integral\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom half integral\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing angle bracket\",\"physics\":\"bra\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing angle bracket\",\"physics\":\"ket\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"left p'ren upper hook\",\"sbrief\":\"L p'ren upper hook\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis extension\"},\"mathspeak\":{\"brief\":\"left p'ren extension\",\"sbrief\":\"L p'ren extension\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"left p'ren lower hook\",\"sbrief\":\"L p'ren lower hook\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis upper hook\"},\"mathspeak\":{\"brief\":\"right p'ren upper hook\",\"sbrief\":\"R p'ren upper hook\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis extension\"},\"mathspeak\":{\"brief\":\"right p'ren extension\",\"sbrief\":\"R p'ren extension\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right parenthesis lower hook\"},\"mathspeak\":{\"brief\":\"right p'ren lower hook\",\"sbrief\":\"R p'ren lower hook\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket upper corner\"},\"mathspeak\":{\"brief\":\"left brack upper corner\",\"sbrief\":\"L brack upper corner\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket extension\"},\"mathspeak\":{\"brief\":\"left brack extension\",\"sbrief\":\"L brack extension\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left bracket lower corner\"},\"mathspeak\":{\"brief\":\"left brack lower corner\",\"sbrief\":\"L brack lower corner\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket upper corner\"},\"mathspeak\":{\"brief\":\"right brack upper corner\",\"sbrief\":\"R brack upper corner\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket extension\"},\"mathspeak\":{\"brief\":\"right brack extension\",\"sbrief\":\"R brack extension\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right bracket lower corner\"},\"mathspeak\":{\"brief\":\"right brack lower corner\",\"sbrief\":\"R brack lower corner\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace upper hook\"},\"mathspeak\":{\"sbrief\":\"L brace upper hook\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace middle piece\"},\"mathspeak\":{\"sbrief\":\"L brace middle piece\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left brace lower hook\"},\"mathspeak\":{\"sbrief\":\"L brace lower hook\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"brace extension\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace upper hook\"},\"mathspeak\":{\"sbrief\":\"R brace upper hook\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace middle piece\"},\"mathspeak\":{\"sbrief\":\"R brace middle piece\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right brace lower hook\"},\"mathspeak\":{\"sbrief\":\"R brace lower hook\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral extension\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"horizontal line extension\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left or lower right brace section\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right or lower left brace section\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation top\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation bottom\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"top bracket\"},\"mathspeak\":{\"brief\":\"top brack\",\"sbrief\":\"T brack\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket\"},\"mathspeak\":{\"brief\":\"bottom brack\",\"sbrief\":\"B brack\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bottom bracket over top bracket\"},\"mathspeak\":{\"brief\":\"bottom brack over top brack\",\"sbrief\":\"B brack over T brack\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"radical symbol bottom\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left vertical box line\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right vertical box line\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top parenthesis\"},\"mathspeak\":{\"brief\":\"top p'ren\",\"sbrief\":\"t p'ren\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom parenthesis\"},\"mathspeak\":{\"brief\":\"bottom p'ren\",\"sbrief\":\"b p'ren\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top brace\"},\"mathspeak\":{\"sbrief\":\"T brace\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom brace\"},\"mathspeak\":{\"sbrief\":\"B brace\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"top tortoise shell bracket\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bottom tortoise shell bracket\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium left p'ren ornament\",\"sbrief\":\"medium L p'ren ornament\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium right p'ren ornament\",\"sbrief\":\"medium R p'ren ornament\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium flattened left parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened left p'ren ornament\",\"sbrief\":\"medium flattened L p'ren ornament\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium flattened right parenthesis ornament\"},\"mathspeak\":{\"brief\":\"medium flattened right p'ren ornament\",\"sbrief\":\"medium flattened R p'ren ornament\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left pointing angle bracket ornament\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right pointing angle bracket ornament\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle quotation mark ornament\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle quotation mark ornament\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"heavy left pointing angle bracket ornament\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"heavy right pointing angle bracket ornament\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"light left tortoise shell bracket ornament\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"light right tortoise shell bracket ornament\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"medium left brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium L brace ornament\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"medium right brace ornament\"},\"mathspeak\":{\"sbrief\":\"medium R brace ornament\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left s shaped bag delimiter\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right s shaped bag delimiter\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"flattened left parenthesis\"},\"mathspeak\":{\"brief\":\"flattened left p'ren\",\"sbrief\":\"flattened L p'ren\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"flattened right parenthesis\"},\"mathspeak\":{\"brief\":\"flattened right p'ren\",\"sbrief\":\"flattened R p'ren\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white brace\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white brace\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"white left parenthesis\"},\"mathspeak\":{\"brief\":\"white left p'ren\",\"sbrief\":\"white L p'ren\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"white right parenthesis\"},\"mathspeak\":{\"brief\":\"white right p'ren\",\"sbrief\":\"white R p'ren\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left image bracket\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right image bracket\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"},\"mathspeak\":{\"brief\":\"left brack with underbar\",\"sbrief\":\"L brack with underbar\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"},\"mathspeak\":{\"brief\":\"right brack with underbar\",\"sbrief\":\"R brack with underbar\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in top corner\",\"sbrief\":\"L brack with tick in top corner\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in bottom corner\",\"sbrief\":\"R brack with tick in bottom corner\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"},\"mathspeak\":{\"brief\":\"left brack with tick in bottom corner\",\"sbrief\":\"L brack with tick in bottom corner\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"},\"mathspeak\":{\"brief\":\"right brack with tick in top corner\",\"sbrief\":\"R brack with tick in top corner\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"l angle bracket with dot\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"},\"mathspeak\":{\"sbrief\":\"r angle bracket with dot\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black tortoise shell bracket\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black tortoise shell bracket\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left wiggly fence\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right wiggly fence\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left pointing curved angle bracket\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right pointing curved angle bracket\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"top half left bracket\"},\"mathspeak\":{\"brief\":\"top half left brack\",\"sbrief\":\"top half L brack\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"top half right bracket\"},\"mathspeak\":{\"brief\":\"top half right brack\",\"sbrief\":\"top half R brack\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"bottom half left bracket\"},\"mathspeak\":{\"brief\":\"bottom half left brack\",\"sbrief\":\"bottom half L brack\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"bottom half right bracket\"},\"mathspeak\":{\"brief\":\"bottom half right brack\",\"sbrief\":\"bottom half R brack\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left sideways U bracket\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right sideways U bracket\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"double left parenthesis\"},\"mathspeak\":{\"brief\":\"double left p'ren\",\"sbrief\":\"double L p'ren\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double right parenthesis\"},\"mathspeak\":{\"brief\":\"double right p'ren\",\"sbrief\":\"double R p'ren\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left angle bracket\"},\"mathspeak\":{\"sbrief\":\"l angle bracket\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right angle bracket\"},\"mathspeak\":{\"sbrief\":\"r angle bracket\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left double angle bracket\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right double angle bracket\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left corner bracket\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right corner bracket\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white corner bracket\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white corner bracket\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left black lenticular bracket\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right black lenticular bracket\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white lenticular bracket\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white lenticular bracket\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white tortoise shell bracket\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white tortoise shell bracket\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"left white bracket\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"right white bracket\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"reversed double prime quotation mark\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"double prime quotation mark\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"low double prime quotation mark\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"ornate left parenthesis\"},\"mathspeak\":{\"brief\":\"ornate left p'ren\",\"sbrief\":\"ornate L p'ren\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"ornate right parenthesis\"},\"mathspeak\":{\"brief\":\"ornate right p'ren\",\"sbrief\":\"ornate R p'ren\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white lenticular bracket\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white lenticular brakcet\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left p'ren\",\"sbrief\":\"presentation form for vertical L p'ren\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right parenthesis\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right p'ren\",\"sbrief\":\"presentation form for vertical R p'ren\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical L brace\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right brace\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r brace\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left tortoise shell bracket\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right tortoise shell bracket\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left black lenticular bracket\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right black lenticular bracket\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left double angle bracket\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right double angle bracket\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical l angle bracket\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right angle bracket\"},\"mathspeak\":{\"sbrief\":\"presentation form for vertical r angle bracket\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left corner bracket\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right corner bracket\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left white corner bracket\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right white corner bracket\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical left bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical left brack\",\"sbrief\":\"presentation form for vertical L brack\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical right bracket\"},\"mathspeak\":{\"brief\":\"presentation form for vertical right brack\",\"sbrief\":\"presentation form for vertical r brack\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left parenthesis\"},\"mathspeak\":{\"brief\":\"small left p'ren\",\"sbrief\":\"small L p'ren\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right parenthesis\"},\"mathspeak\":{\"brief\":\"small right p'ren\",\"sbrief\":\"small R p'ren\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left brace\"},\"mathspeak\":{\"sbrief\":\"small L brace\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right brace\"},\"mathspeak\":{\"sbrief\":\"small r brace\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"small left tortoise shell bracket\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"small right tortoise shell bracket\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth left p'ren\",\"sbrief\":\"fullwidth L p'ren\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth right p'ren\",\"sbrief\":\"fullwidth R p'ren\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left bracket\"},\"mathspeak\":{\"brief\":\"fullwidth left brack\",\"sbrief\":\"fullwidth L brack\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right bracket\"},\"mathspeak\":{\"brief\":\"fullwidth right brack\",\"sbrief\":\"fullwidth r brack\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth left brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth L brace\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth right brace\"},\"mathspeak\":{\"sbrief\":\"fullwidth r brace\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"fullwidth white left parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white left p'ren\",\"sbrief\":\"fullwidth white L p'ren\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"fullwidth white right parenthesis\"},\"mathspeak\":{\"brief\":\"fullwidth white right p'ren\",\"sbrief\":\"fullwidth white R p'ren\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"halfwidth left corner bracket\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"halfwidth right corner bracket\"}},\"key\":\"FF63\"}]\n,\n\"en/symbols/math_geometry.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light horizontal\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy horizontal\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash horizontal\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash horizontal\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light triple dash vertical\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy triple dash vertical\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash horizontal\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash horizontal\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light quadruple dash vertical\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy quadruple dash vertical\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and right\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right heavy\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right light\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and right\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and left\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left heavy\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left light\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and left\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and right\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right heavy\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right light\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and right\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and left\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left heavy\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left light\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and left\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and right\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and right heavy\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and right down light\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and right up light\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and right light\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and right up heavy\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and right down heavy\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and right\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and left\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and left heavy\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and left down light\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and left up light\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and left light\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and left up heavy\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and left down heavy\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and left\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down and horizontal\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right down light\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left down light\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and horizontal heavy\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and horizontal light\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left down heavy\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right down heavy\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down and horizontal\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and horizontal\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right up light\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left up light\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and horizontal heavy\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and horizontal light\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left up heavy\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right up heavy\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and horizontal\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light vertical and horizontal\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left heavy and right vertical light\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right heavy and left vertical light\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical light and horizontal heavy\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up heavy and down horizontal light\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down heavy and up horizontal light\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical heavy and horizontal light\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left up heavy and right down light\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right up heavy and left down light\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left down heavy and right up light\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right down heavy and left up light\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down light and up horizontal heavy\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up light and down horizontal heavy\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings right light and left vertical heavy\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings left light and right vertical heavy\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy vertical and horizontal\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash horizontal\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash horizontal\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light double dash vertical\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy double dash vertical\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double horizontal\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and right double\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and right single\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and right\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and left double\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and left single\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and left\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and right double\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and right single\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and right\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and left double\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and left single\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and left\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and right double\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and right single\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and right\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and left double\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and left single\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and left\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down single and horizontal double\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings down double and horizontal single\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double down and horizontal\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up single and horizontal double\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings up double and horizontal single\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double up and horizontal\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical single and horizontal double\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings vertical double and horizontal single\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings double vertical and horizontal\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and right\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc down and left\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and left\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light arc up and right\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper right to lower left\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal upper left to lower right\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light diagonal cross\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light right\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light down\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy right\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy down\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light left and heavy right\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings light up and heavy down\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy left and light right\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"box drawings heavy up and light down\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half block\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one eighth block\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower one quarter block\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three eighths block\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half block\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower five eighths block\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower three quarters block\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower seven eighths block\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"full block\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left seven eighths block\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three quarters block\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left five eighths block\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half block\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left three eighths block\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one quarter block\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left one eighth block\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half block\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"light shade\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"medium shade\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dark shade\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper one eighth block\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right one eighth block\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower left\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant lower right\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower left and lower right\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and lower right\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower left\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper left and upper right and lower right\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"quadrant upper right and lower left and lower right\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black square\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with rounded corners\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square containing black small square\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with horizontal fill\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with vertical fill\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with orthogonal crosshatch fill\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left to lower right fill\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right to lower left fill\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with diagonal crosshatch fill\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small square\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small square\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black rectangle\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white rectangle\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical rectangle\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black parallelogram\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white parallelogram\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing triangle\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black up pointing small triangle\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing small triangle\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing triangle\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white right pointing triangle\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing small triangle\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing small triangle\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pointer\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pointer\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing triangle\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing triangle\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black down pointing small triangle\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white down pointing small triangle\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing triangle\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white left pointing triangle\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing small triangle\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing small triangle\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black left pointing pointer\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white left pointing pointer\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black diamond\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white diamond containing black small diamond\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"fisheye\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lozenge\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted circle\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with vertical fill\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bullseye\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with left half black\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with right half black\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with lower half black\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper half black\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with upper right quadrant black\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circle with all but upper left quadrant black\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left half black circle\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right half black circle\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse bullet\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverse white circle\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half inverse white circle\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half inverse white circle\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper left quadrant circular arc\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper right quadrant circular arc\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower right quadrant circular arc\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower left quadrant circular arc\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"upper half circle\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"lower half circle\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower right triangle\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black lower left triangle\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper left triangle\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black upper right triangle\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white bullet\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with left half black\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with right half black\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper left diagonal half black\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower right diagonal half black\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with vertical bisecting line\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white up pointing triangle with dot\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with left half black\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up pointing triangle with right half black\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"large circle\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper left quadrant\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower left quadrant\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with lower right quadrant\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white square with upper right quadrant\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper left quadrant\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower left quadrant\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with lower right quadrant\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle with upper right quadrant\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left triangle\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper right triangle\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower left triangle\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium square\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium square\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white medium small square\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black medium small square\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right triangle\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with top half black\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with bottom half black\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with upper right diagonal half black\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square with lower left diagonal half black\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with left half black\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with right half black\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with top half black\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diamond with bottom half black\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"dotted square\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large square\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white large square\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black very small square\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white very small square\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black pentagon\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white pentagon\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white hexagon\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black hexagon\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"horizontal black hexagon\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black large circle\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium diamond\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium diamond\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black medium lozenge\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium lozenge\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small diamond\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small lozenge\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small lozenge\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black horizontal ellipse\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white horizontal ellipse\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black vertical ellipse\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white vertical ellipse\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white medium star\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black small star\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white small star\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black right pointing pentagon\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white right pointing pentagon\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy large circle\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy oval with oval inside\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle with circle inside\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circle\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy circled saltire\"}},\"key\":\"2B59\"}]\n,\n\"en/symbols/math_harpoons.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"left harpoon over right harpoon\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"right harpoon over left harpoon\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb down harpoon\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb up harpoon\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb right harpoon\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb up right barb up harpoon\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb right harpoon\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left barb down right barb down harpoon\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up barb left down barb left harpoon\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up to bar\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up to bar\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right to bar\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right to bar\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down to bar\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down to bar\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left to bar\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left to bar\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up from bar\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up from bar\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb right from bar\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb right from bar\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down from bar\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down from bar\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left from bar\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left from bar\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above left harpoon with barb down\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above right harpoon with barb down\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above right harpoon with barb up\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down above right harpoon with barb down\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above left harpoon with barb up\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down above left harpoon with barb down\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb up above long dash\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left harpoon with barb down below long dash\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb up above long dash\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right harpoon with barb down below long dash\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up harpoon with barb left beside down harpoon with barb right\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down harpoon with barb left beside up harpoon with barb right\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left fish tail\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right fish tail\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up fish tail\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down fish tail\"}},\"key\":\"297F\"}]\n,\n\"en/symbols/math_non_characters.js\": \n[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"italic h over two pi\",\"physics\":\"planck constant over two pi\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"l b bar\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"numero\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sound recording copyright\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"prescription take\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"response\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"service mark\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"telephone sign\",\"alternative\":\"t e l symbol\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"trade mark\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"versicle\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"inverted ohm\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"kelvin\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"estimated\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"turned cap F\"},\"mathspeak\":{\"default\":\"turned upper F\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"information source\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"rotated cap Q\"},\"mathspeak\":{\"default\":\"rotated upper Q\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"facsimile sign\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap G\"},\"mathspeak\":{\"default\":\"turned sans serif upper G\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap L\"},\"mathspeak\":{\"default\":\"turned sans serif upper L\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed sans serif cap L\"},\"mathspeak\":{\"default\":\"reversed sans serif upper L\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned sans serif cap Y\"},\"mathspeak\":{\"default\":\"turned sans serif upper Y\"}},\"key\":\"2144\"}]\n,\n\"en/symbols/math_symbols.js\": \n[{\"locale\":\"en\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\",\"alternative\":\"hash\"},\"mathspeak\":{\"brief\":\"num sign\",\"sbrief\":\"num sign\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"minus\"},\"mathspeak\":{\"default\":\"hyphen\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"},\"emacspeak\":{\"default\":\"slash\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"},\"clearspeak\":{\"default\":\"is less than\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"},\"clearspeak\":{\"default\":\"is greater than\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"at\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"hat\"},\"mathspeak\":{\"default\":\"caret\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"},\"mathspeak\":{\"default\":\"grave\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted exclamation mark\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"currency sign\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"section sign\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"two dots\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"copyright sign\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"feminine ordinal indicator\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing guillemet\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"registered sign\"},\"mathspeak\":{\"default\":\"registered trade mark sign\"},\"clearspeak\":{\"default\":\"trade mark sign\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"bar\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"degree\"},\"clearspeak\":{\"default\":\"degrees\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus or minus\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"acute\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"paragraph sign\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"masculine ordinal indicator\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing guillemet\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"inverted question mark\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times\"},\"clearspeak\":{\"MultsymbolX_By\":\"by\",\"MultsymbolX_Cross\":\"cross\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division sign\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"dot above\"},\"mathspeak\":{\"default\":\"dot\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ring above\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"double acute\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"non breaking hyphen\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"figure dash\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"en dash\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"em dash\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"horizontal bar\"},\"mathspeak\":{\"default\":\"quotation dash\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double vertical bar\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double underline\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left single quotation mark\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right single quotation mark\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right single quotation mark\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed single quotation mark\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left double quotation mark\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right double quotation mark\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"low right double quotation mark\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left reversed double quotation mark\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dagger\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double dagger\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triangular bullet\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"one dot leader\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot leader\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphenation point\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per mille\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"per ten thousand\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed prime\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed double prime\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed triple prime\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"left pointing single guillemet\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"right pointing single guillemet\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reference mark\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double exclamation mark\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"overline\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"undertie\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"character tie\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"caret insertion point\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterism\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"hyphen bullet\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fraction slash\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double question mark\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question exclamation mark\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation question mark\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed pilcrow\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black leftwards bullet\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"black rightwards bullet\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"low asterisk\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"reversed semicolon\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"close up\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two asterisks aligned vertically\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"commercial minus\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"swung dash\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"inverted undertie\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"flower punctuation mark\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"three dot punctuation\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot punctuation\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"five dot punctuation\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"two dot punctuation\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"four dot mark\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dotted cross\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"vertical four dots\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript plus\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript minus\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superscript equals\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"superscript left parenthesis\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"superscript right parenthesis\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript plus\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript minus\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subscript equals\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"subscript left parenthesis\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"subscript right parenthesis\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"property line\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"turned ampersand\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"per\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"turned small f\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"for all\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"complement\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there exists\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"there does not exist\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increment\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not an element of\"},\"clearspeak\":{\"default\":\"is not a member of\",\"SetMemberSymbol_Member\":\"is not a member of\",\"SetMemberSymbol_Element\":\"is not an element of\",\"SetMemberSymbol_In\":\"is not in\",\"SetMemberSymbol_Belongs\":\"does not belong to\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of\"},\"clearspeak\":{\"default\":\"is a member of\",\"SetMemberSymbol_Member\":\"is a member of\",\"SetMemberSymbol_Element\":\"is an element of\",\"SetMemberSymbol_In\":\"is in\",\"SetMemberSymbol_Belongs\":\"belongs to\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as member\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as member\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains as member\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"end of proof\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"product\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"coproduct\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sum\"},\"mathspeak\":{\"default\":\"sigma summation\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus or plus\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot plus\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division slash\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"set minus\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring\"},\"clearspeak\":{\"default\":\"composed with\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bullet\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square root\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"cube root\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"fourth root\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportional to\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured angle\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"spherical angle\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\",\"alternative\":\"divides\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel to\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not parallel to\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double integral\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple integral\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contour integral\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"surface integral\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"volume integral\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise integral\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"clockwise contour integral\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise contour integral\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"therefore\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"because\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ratio\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot minus\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"excess\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometric proportion\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"homothetic\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"inverted lazy s\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sine wave\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"wreath product\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not tilde\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus tilde\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"asymptotically equals\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not asymptotically equals\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately but not actually equals\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither approximately nor actually equals\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equals\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not almost equals\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal or equals\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"all equals\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent to\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equivalent to\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"difference between\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approaches the limit\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"geometrically equals\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equals or the image of\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of or approximately equals\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"colon equals\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals colon\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring in equals\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"ring equals\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"corresponds to\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"estimates\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equiangular to\"},\"clearspeak\":{\"default\":\"is equiangular to\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star equals\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"delta equals\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals by definition\"},\"clearspeak\":{\"default\":\"is defined to be\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"measured by\"},\"clearspeak\":{\"default\":\"is measured by\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"questioned equals\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equals\"},\"clearspeak\":{\"default\":\"is not equal to\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to\"},\"clearspeak\":{\"default\":\"is identical to\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not identical to\"},\"clearspeak\":{\"default\":\"is not identical to\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"strictly equivalent to\"},\"clearspeak\":{\"default\":\"is strictly equivalent to\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equals\"},\"clearspeak\":{\"default\":\"is less than or equal to\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equals\"},\"clearspeak\":{\"default\":\"is greater than or equal to\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than over equals\"},\"clearspeak\":{\"default\":\"is less than over equals\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than over equals\"},\"clearspeak\":{\"default\":\"is greater than over equals\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equals\"},\"clearspeak\":{\"default\":\"is less than but not equal to\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equals\"},\"clearspeak\":{\"default\":\"is greater than but not equal to\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much less than\"},\"clearspeak\":{\"default\":\"is much less than\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"much greater than\"},\"clearspeak\":{\"default\":\"is much greater than\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"between\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not equivalent to\"},\"clearspeak\":{\"default\":\"is not equivalent to\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not less than\"},\"clearspeak\":{\"default\":\"is not less than\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not greater than\"},\"clearspeak\":{\"default\":\"is not greater than\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equals\"},\"clearspeak\":{\"default\":\"is neither less than nor equal to\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equals\"},\"clearspeak\":{\"default\":\"is neither greater than nor equal to\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or equivalent to\"},\"clearspeak\":{\"default\":\"is less than or equivalent to\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or equivalent to\"},\"clearspeak\":{\"default\":\"is greater than or equivalent to\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither less than nor equivalent to\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor equivalent to\"},\"clearspeak\":{\"default\":\"is neither greater than nor equivalent to\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or greater than\"},\"clearspeak\":{\"default\":\"is less than or greater than\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or less than\"},\"clearspeak\":{\"default\":\"is greater than or less than\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither less than nor greater than\"},\"clearspeak\":{\"default\":\"is neither less than nor greater than\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither greater than nor less than\"},\"clearspeak\":{\"default\":\"is neither greater than nor less than\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equal to\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equal to\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes or equivalent to\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds or equivalent to\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a subset of\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not a superset of\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equal to\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equal to\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a subset of nor equal to\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"neither a superset of nor equal to\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or not equals\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or not equals\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset multiplication\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiset union\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or equal to\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or equal to\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cap\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square cup\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled plus\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled minus\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled times\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division slash\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dot\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled ring\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled asterisk\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled equals\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled dash\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared plus\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared minus\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared times\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared dot\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right tack\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left tack\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"models\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"true\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forces\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar right turnstile\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double right turnstile\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not prove\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not true\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not force\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"negated double vertical bar double right turnstile\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes under relation\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds under relation\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"normal subgroup of or equal to\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains as normal subgroup or equal to\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"original of\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"image of\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multimap\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"hermitian conjugate matrix\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intercalate\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"xor\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nand\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nor\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary and\"},\"mathspeak\":{\"default\":\"and\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary or\"},\"mathspeak\":{\"default\":\"or\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary intersection\"},\"mathspeak\":{\"default\":\"intersection\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union\"},\"mathspeak\":{\"default\":\"union\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"diamond\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dot\"},\"clearspeak\":{\"default\":\"times\",\"MultsymbolDot_Dot\":\"dot\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"star\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"division times\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left normal factor semidirect product\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right normal factor semidirect product\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left semidirect product\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right semidirect product\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed tilde equals\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly or\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"curly and\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double subset\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double superset\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double intersection\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double union\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equal and parallel to\"},\"clearspeak\":{\"default\":\"is equal and parallel to\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than dot\"},\"clearspeak\":{\"default\":\"is less than dot\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than dot\"},\"clearspeak\":{\"default\":\"is greater than dot\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much less than\"},\"clearspeak\":{\"default\":\"is very much less than\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"very much greater than\"},\"clearspeak\":{\"default\":\"is very much greater than\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than equals or greater than\"},\"clearspeak\":{\"default\":\"is less than equal to or greater than\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than equals or less than\"},\"clearspeak\":{\"default\":\"is greater than equal to or less than\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or less than\"},\"clearspeak\":{\"default\":\"is equal to or less than\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or greater than\"},\"clearspeak\":{\"default\":\"is equal to or greater than\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or precedes\"},\"clearspeak\":{\"default\":\"is equal to or precedes\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals or succeeds\"},\"clearspeak\":{\"default\":\"is equal to or succeeds\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not precede or equal\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not succeed or equal\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square image of or equals\"},\"clearspeak\":{\"default\":\"is not square image of or equal to\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not square original of or equals\"},\"clearspeak\":{\"default\":\"is not square original of or equal to\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square image of or not equals\"},\"clearspeak\":{\"default\":\"is square image of or not equal to\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square original of or not equals\"},\"clearspeak\":{\"default\":\"is square original of or not equal to\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than but not equivalent to\"},\"clearspeak\":{\"default\":\"is less than but not equivalent to\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than but not equivalent to\"},\"clearspeak\":{\"default\":\"is greater than but not equivalent to\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes but not equivalent to\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equivalent to\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of\"},\"clearspeak\":{\"default\":\"is not normal subgroup of\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not normal subgroup of or equals\"},\"clearspeak\":{\"default\":\"is not normal subgroup of or equal to\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not contain as normal subgroup or equal\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical ellipsis\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"midline horizontal ellipsis\"},\"clearspeak\":{\"default\":\"dot dot dot\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up right diagonal ellipsis\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down right diagonal ellipsis\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with long horizontal stroke\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with vertical bar at end of horizontal stroke\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with dot above\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with overbar\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small element of with overbar\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with underbar\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of with two horizontal strokes\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with long horizontal stroke\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with vertical bar at end of horizontal stroke\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"contains with overbar\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small contains with overbar\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation bag membership\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"diameter sign\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"house\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"wavy line\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"reversed not\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"square lozenge\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sector\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold plus\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold minus\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"bold division\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"curly loop\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"double curly loop\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white triangle containing small white triangle\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open subset\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"open superset\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot inside\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash preceding subset\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset preceding solidus\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar with horizontal stroke\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long division\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared and\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared or\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white diamond with centered dot\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening upwards\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lower right corner with dot\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"upper left corner with dot\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left outer join\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right outer join\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"full outer join\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large up tack\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large down tack\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right double turnstile\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left and right tack\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left multimap\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long right tack\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long left tack\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"up tack with circle above\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"lozenge divided by horizontal rule\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with leftwards tick\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white concave sided diamond with rightwards tick\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with leftwards tick\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white square with rightwards tick\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rising diagonal crossing falling diagonal\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"falling diagonal crossing rising diagonal\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar delimiter\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation spot\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation type colon\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"dotted fence\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical zigzag line\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed empty set\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with overbar\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"empty set with small circle above\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with horizontal bar\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled parallel\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled backslash\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled perpendicular\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle divided by horizontal bar and top half divided by vertical bar\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with superimposed x\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled white bullet\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled bullet\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled less than\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled greater than\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with small circle to the right\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared rising diagonal slash\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared falling diagonal slash\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared asterisk\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared small circle\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"squared square\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two joined squares\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with dot above\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with underbar\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"s in triangle\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right triangle above left triangle\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"left triangle beside vertical bar\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar beside right triangle\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with left half black\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"bowtie with right half black\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black bowtie\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with left half black\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"times with right half black\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white hourglass\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black hourglass\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"incomplete infinity\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tie over infinity\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"infinity negated with vertical bar\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double ended multimap\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square with contoured outline\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"increases as\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"shuffle product\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals and slanted parallel with tilde above\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical to and slanted parallel\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"thermodynamic\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with left half black\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down pointing triangle with right half black\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"black lozenge\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white square\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black square\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white diamond\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black diamond\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred white circle\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"error barred black circle\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"backslash with horizontal stroke\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big solidus\"},\"mathspeak\":{\"default\":\"solidus\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"big backslash\"},\"mathspeak\":{\"default\":\"backslash\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double plus\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tiny\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"miny\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled dot\"},\"mathspeak\":{\"default\":\"circled dot\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled plus\"},\"mathspeak\":{\"default\":\"circled plus\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary circled times\"},\"mathspeak\":{\"default\":\"circled times\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union with dot\"},\"mathspeak\":{\"default\":\"union with dot\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary union operator with plus\"},\"mathspeak\":{\"default\":\"union with plus\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square intersection\"},\"mathspeak\":{\"default\":\"square intersection\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary square union\"},\"mathspeak\":{\"default\":\"square union\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two and\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two or\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary times\"},\"mathspeak\":{\"default\":\"times\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"modulo two sum\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"summation with integral\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quadruple integral\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with double stroke\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral average with slash\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"anticlockwise integration\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with rectangular path around pole\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration with semicircular path around pole\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"line integration not including the pole\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral around a point\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"quaternion integral\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with times\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with intersection\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with union\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with overbar\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"integral with underbar\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"join\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large left triangle\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema composition\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema piping\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation schema projection\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus with circle above\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus hat\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus tilde\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus underdot\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with tilde below\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with subscript two\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign with black triangle\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with comma above\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with dot below\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with falling dots\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign with rising dots\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in left half circle\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in right half circle\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vector or cross product\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with dot above\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign with underbar\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"semidirect product with bottom closed\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in left half circle\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in right half circle\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled multiplication sign with circumflex accent\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in double circle\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"circled division\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign in triangle\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"minus sign in triangle\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"multiplication sign in triangle\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"interior product\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"righthand interior product\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation relational composition\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"amalgamation or coproduct\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with dot\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with minus\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with overbar\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with overbar\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection with and\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union with or\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above intersection\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above union\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union above bar above intersection\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection above bar above union\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"union beside and joined with union\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"intersection beside and joined with intersection\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed intersection with serifs\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square intersection\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double square union\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed union with serifs and smash product\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with dot above\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with dot above\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double and\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double or\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting and\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two intersecting or\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or overlapping and\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with middle stem\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with middle stem\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with horizontal dash\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with horizontal dash\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double overbar\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with underbar\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"and with double underbar\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small vee with underbar\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double overbar\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"or with double underbar\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation domain antirestriction\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"z notation range antirestriction\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with dot below\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"identical with dot above\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with double vertical stroke\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple horizontal bar with triple vertical stroke\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with dot above\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde with rising dots\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar minus similar\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"congruent with dot above\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with asterisk\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"almost equal hat\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"approximately equal or equal to\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above plus\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus above equals\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals above tilde\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double colon equal\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"two consecutive equals\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"three consecutive equals\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals sign with two dots above and two dots below\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equivalent with four dots above\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with circle inside\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with circle inside\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than with question mark above\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than with question mark above\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot inside\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot inside\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or slanted equals with dot above right\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or slanted equals with dot above left\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than or approximate\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than or approximate\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and single line not equals\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and single line not equals\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than and not approximate\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than and not approximate\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above double line equal above greater than\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above double line equal above less than\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar or equal\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar or equal\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above similar above greater than\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above similar above less than\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above greater than above double line equal\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above less than above double line equal\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than above slanted equal above greater than above slanted equal\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than above slanted equal above less than above slanted equal\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or less than with dot inside\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"slanted equals or greater than with dot inside\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or less than\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line equals or greater than\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or less than\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted equals or greater than\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or less than\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar or greater than\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above less than above equals sign\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"similar above greater than above equals sign\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested greater than\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double nested less than with underbar\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than overlapping less than\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than beside less than\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than closed by curve above slanted equal\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than closed by curve above slanted equal\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than\"},\"clearspeak\":{\"default\":\"is smaller than\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than\"},\"clearspeak\":{\"default\":\"is larger than\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"smaller than or equals\"},\"clearspeak\":{\"default\":\"is smaller than or equal to\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"larger than or equal\"},\"clearspeak\":{\"default\":\"is larger than or equal to\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals with bumpy above\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line equals sign\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line equals sign\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above single line not equals\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above single line not equals\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above equals\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above equals\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not equals\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not equals\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above almost equals\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above almost equals\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"precedes above not almost equals\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"succeeds above not almost equals\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double precedes\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double succeeds\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with dot\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with dot\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with plus sign below\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with plus sign below\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset with multiplication sign below\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset with multiplication sign below\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of or equals with dot above\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of or equals with dot above\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above equals sign\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above equals sign\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above tilde\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above tilde\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above almost equals\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above almost equals\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset of above not equals\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset of above not equals\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square left open box\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"square right open box\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed subset or equals\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"closed superset or equals\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above superset\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above subset\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"subset above subset\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset above superset\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside subset\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"superset beside and joined by dash with subset\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"element of opening downwards\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"forking\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short left tack\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"perpendicular with s\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar triple right turnstile\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar left turnstile\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar double left turnstile\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double vertical bar double left turnstile\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack with underbar\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double down tack\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle above\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical line with circle below\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with horizontal stroke\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"parallel with tilde\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar binary relation\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple vertical bar with horizontal stroke\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple colon\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested less than\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple nested greater than\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted less than or equals\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double line slanted greater than or equals\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"triple solidus binary relation\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"large triple vertical bar\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"double solidus\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"n ary white vertical bar\"},\"mathspeak\":{\"default\":\"white vertical bar\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"wave dash\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical comma\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical colon\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical semicolon\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical exclamation mark\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical question mark\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"presentation form for vertical horizontal ellipsis\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical two dot leader\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical em dash\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical en dash\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical underline\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"glyph for vertical wavy underline\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"sesame dot\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"white sesame dot\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dashed overline\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"dash dot overline\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"wavy overline\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"double wavy overline\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dashed underline\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"dash dot underline\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"wavy underline\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small comma\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small period\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small semicolon\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small colon\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small question mark\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small exclamation mark\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small em dash\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small number sign\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small ampersand\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small asterisk\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small plus sign\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"small hyphen minus\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small less than sign\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small greater than sign\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"small equals\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small backslash\",\"alternative\":\"small reverse solidus\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"small dollar sign\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small percent sign\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"small commercial at\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"exclamation mark\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"quotation mark\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"number sign\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"dollar sign\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"percent sign\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"asterisk\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"plus sign\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"comma\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"hyphen minus\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"period\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"slash\",\"alternative\":\"solidus\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"semicolon\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"less than\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"equals\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"greater than\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"question mark\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"commercial at\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"backslash\",\"alternative\":\"reverse solidus\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"caret\",\"alternative\":\"circumflex\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"bar\",\"alternative\":\"underline\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"grave\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"vertical bar\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"cent sign\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"pound sign\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"not sign\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"macron\"},\"mathspeak\":{\"default\":\"bar\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"broken vertical bar\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"yen sign\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"won sign\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth forms light vertical\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth black square\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"halfwidth white circle\"}},\"key\":\"FFEE\"}]\n,\n\"en/symbols/math_whitespace.js\": \n[{\"locale\":\"en\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"space\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"no break space\",\"alternative\":\"non breaking space\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"soft hyphen\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en quad\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em quad\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"en space\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"em space\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"three per em space\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"four per em space\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"six per em space\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"figure space\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"punctuation space\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"thin space\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"hair space\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width space\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width non joiner\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width joiner\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right mark\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left mark\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"line separator\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"paragraph separator\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right embedding\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left embedding\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"pop directional formatting\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"left to right override\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"right to left override\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"narrow no break space\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"medium mathematical space\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"word joiner\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"of\",\"alternative\":\"function application\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"times\",\"alternative\":\"invisible times\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"separator\",\"alternative\":\"invisible separator\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"plus\",\"alternative\":\"invisible plus\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"inhibit symmetric swapping\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"activate symmetric swapping\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"national digit shapes\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"nominal digit shapes\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"zero width no break space\",\"alternative\":\"byte order mark\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation anchor\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation separator\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"interlinear annotation terminator\"}},\"key\":\"FFFB\"}]\n,\n\"en/symbols/other_stars.js\": \n[{\"locale\":\"en\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"decimal exponent symbol\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black star\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white star\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white circle\",\"alternative\":\"medium white circle\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black circle\",\"alternative\":\"medium black circle\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white check mark\",\"alternative\":\"white heavy check mark\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy check mark\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"multiplication x\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy multiplication x\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy ballot x\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center cross\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy open center cross\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"maltese cross\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"star of david\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four teardrop spoked asterisk\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four balloon spoked asterisk\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy four balloon spoked asterisk\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"four club spoked asterisk\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black four pointed star\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white four pointed star\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkles\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"stress outlined white star\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled white star\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center black star\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black center white star\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"outlined black star\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy outlined black star\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"pinwheel star\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white star\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy asterisk\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center asterisk\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight spoked asterisk\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed black star\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight pointed pinwheel star\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six pointed black star\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"twelve pointed black star\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sixteen pointed asterisk\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"teardrop spoked asterisk\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"open center teardrop spoked asterisk\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"six petalled black and white florette\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"black florette\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"white florette\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight petalled outlined black florette\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"circled open center eight pointed star\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked pinwheel asterisk\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"snowflake\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"tight trifoliate snowflake\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy chevron snowflake\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"sparkle\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy sparkle\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"balloon spoked asterisk\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"eight teardrop spoked propeller asterisk\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"heavy eight teardrop spoked propeller asterisk\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"cross mark\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"shadowed white circle\"}},\"key\":\"274D\"}]\n,\n\"en/units/area.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"square\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square inch\"}},\"key\":\"sq inch\",\"names\":[\"sq inch\",\"sq. inch.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square rod\"}},\"key\":\"sq rd\",\"names\":[\"sq rd\",\"sq. rd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square foot\",\"plural\":\"square feet\"}},\"key\":\"sq ft\",\"names\":[\"sq ft\",\"sq. ft.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square yard\"}},\"key\":\"sq yd\",\"names\":[\"sq yd\",\"sq. yd.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"square mile\"}},\"key\":\"sq mi\",\"names\":[\"sq mi\",\"sq. mi.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"acre\"}},\"key\":\"acr\",\"names\":[\"ac\",\"ac.\",\"acr\",\"acr.\"]},{\"category\":\"area\",\"mappings\":{\"default\":{\"default\":\"hectare\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"en/units/currency.js\": \n[{\"locale\":\"en\"},{\"category\":\"currency\",\"key\":\"$\",\"mappings\":{\"default\":{\"default\":\"dollar\"}},\"names\":[\"$\",\"💲\",\"＄\",\"﹩\",\"USD\"]},{\"category\":\"currency\",\"key\":\"£\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"names\":[\"£\",\"￡\",\"GBP\"]},{\"category\":\"currency\",\"key\":\"¥\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"names\":[\"¥\",\"￥\",\"JPY\"]},{\"category\":\"currency\",\"key\":\"€\",\"mappings\":{\"default\":{\"default\":\"euro\"}},\"names\":[\"€\",\"EUR\"]},{\"category\":\"currency\",\"key\":\"₡\",\"mappings\":{\"default\":{\"default\":\"colon\"}},\"names\":[\"₡\",\"CRC\"]},{\"category\":\"currency\",\"key\":\"₢\",\"mappings\":{\"default\":{\"default\":\"cruzeiro\"}},\"names\":[\"₢\"]},{\"category\":\"currency\",\"key\":\"₣\",\"mappings\":{\"default\":{\"default\":\"franc\"}},\"names\":[\"₣\"]},{\"category\":\"currency\",\"key\":\"₤\",\"mappings\":{\"default\":{\"default\":\"lira\"}},\"names\":[\"₤\"]},{\"category\":\"currency\",\"key\":\"₥\",\"mappings\":{\"default\":{\"default\":\"mill\"}},\"names\":[\"₥\"]},{\"category\":\"currency\",\"key\":\"₦\",\"mappings\":{\"default\":{\"default\":\"naira\"}},\"names\":[\"₦\",\"NGN\"]},{\"category\":\"currency\",\"key\":\"₧\",\"mappings\":{\"default\":{\"default\":\"peseta\"}},\"names\":[\"₧\"]},{\"category\":\"currency\",\"key\":\"₨\",\"mappings\":{\"default\":{\"default\":\"rupee\"}},\"names\":[\"₨\",\"₹\",\"INR\",\"NPR\",\"PKR\",\"LKR\"]},{\"category\":\"currency\",\"key\":\"₩\",\"mappings\":{\"default\":{\"default\":\"won\"}},\"names\":[\"₩\",\"￦\",\"KRW\"]},{\"category\":\"currency\",\"key\":\"₪\",\"mappings\":{\"default\":{\"default\":\"sheqel\"}},\"names\":[\"₪\"]},{\"category\":\"currency\",\"key\":\"₫\",\"mappings\":{\"default\":{\"default\":\"dong\"}},\"names\":[\"₫\"]},{\"category\":\"currency\",\"key\":\"₭\",\"mappings\":{\"default\":{\"default\":\"kip\"}},\"names\":[\"₭\"]},{\"category\":\"currency\",\"key\":\"₮\",\"mappings\":{\"default\":{\"default\":\"tugrik\"}},\"names\":[\"₮\"]},{\"category\":\"currency\",\"key\":\"₯\",\"mappings\":{\"default\":{\"default\":\"drachma\"}},\"names\":[\"₯\"]},{\"category\":\"currency\",\"key\":\"₰\",\"mappings\":{\"default\":{\"default\":\"Pfennig\"}},\"names\":[\"₰\"]},{\"category\":\"currency\",\"key\":\"₱\",\"mappings\":{\"default\":{\"default\":\"peso\"}},\"names\":[\"₱\"]},{\"category\":\"currency\",\"key\":\"₲\",\"mappings\":{\"default\":{\"default\":\"guaranis\"}},\"names\":[\"₲\"]},{\"category\":\"currency\",\"key\":\"₳\",\"mappings\":{\"default\":{\"default\":\"austral\"}},\"names\":[\"₳\"]},{\"category\":\"currency\",\"key\":\"₴\",\"mappings\":{\"default\":{\"default\":\"hryvnia\"}},\"names\":[\"₴\",\"UAH\"]},{\"category\":\"currency\",\"key\":\"₵\",\"mappings\":{\"default\":{\"default\":\"cedis\"}},\"names\":[\"₵\",\"GHS\"]},{\"category\":\"currency\",\"key\":\"₶\",\"mappings\":{\"default\":{\"default\":\"livre tournois\"}},\"names\":[\"₶\"]},{\"category\":\"currency\",\"key\":\"₷\",\"mappings\":{\"default\":{\"default\":\"spesmilo\"}},\"names\":[\"₷\"]},{\"category\":\"currency\",\"key\":\"₸\",\"mappings\":{\"default\":{\"default\":\"tenge\"}},\"names\":[\"₸\",\"KZT\"]},{\"category\":\"currency\",\"key\":\"₺\",\"mappings\":{\"default\":{\"default\":\"turkish lira\"}},\"names\":[\"₺\",\"TRY\"]},{\"category\":\"currency\",\"key\":\"元\",\"mappings\":{\"default\":{\"default\":\"yuan\"}},\"names\":[\"元\"]},{\"category\":\"currency\",\"key\":\"¢\",\"mappings\":{\"default\":{\"default\":\"cent\"}},\"names\":[\"￠\",\"¢\"]}]\n,\n\"en/units/energy.js\": \n[{\"locale\":\"en\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"watt\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilowatt hour\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"joule\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ampere\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"volt\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"microohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"kilohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"en/units/length.js\": \n[{\"locale\":\"en\"},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"foot\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"inch\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"mile\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"yard\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"link\"}},\"key\":\"link\",\"names\":[\"li\",\"li.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"rod\"}},\"key\":\"rod\",\"names\":[\"rd\",\"rd.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"chain\"}},\"key\":\"chain\",\"names\":[\"ch\",\"ch.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"furlong\"}},\"key\":\"furlong\",\"names\":[\"fur\",\"fur.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"nautical mile\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"millimeter\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"centimeter\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"meter\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]}]\n,\n\"en/units/memory.js\": \n[{\"locale\":\"en\"},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"bit\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"byte\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"memory\",\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"en/units/other.js\": \n[{\"locale\":\"en\"},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"dozen\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"en/units/speed.js\": \n[{\"locale\":\"en\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"knot\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"miles per hour\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"revolutions per minute\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"kilometers per hour\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"en/units/temperature.js\": \n[{\"locale\":\"en\"},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Celsius\",\"alternative\":\"Centigrade\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"temperature\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"en/units/time.js\": \n[{\"locale\":\"en\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"nanosecond\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"microsecond\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"millisecond\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"second\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"hour\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"en/units/volume.js\": \n[{\"locale\":\"en\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic inch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic foot\",\"plural\":\"cubic feet\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic yard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"barrel\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"gallon\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"pint\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"quart\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"fluid dram\"}},\"key\":\"fluid dram\",\"names\":[\"fl dr\",\"fl. dr.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"tablespoon\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"teaspoon\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cup\"}},\"key\":\"cup\",\"names\":[\"cp\",\"cp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"cubic centimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"en/units/weight.js\": \n[{\"locale\":\"en\"},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"dram\"}},\"key\":\"dram\",\"names\":[\"dr\",\"dr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ounce\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"pound\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"stone\"}},\"key\":\"st\",\"names\":[\"st\",\"st.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"quarter\"}},\"key\":\"qtr\",\"names\":[\"qtr\",\"qtr.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"hundredweight\"}},\"key\":\"cwt\",\"names\":[\"cwt\",\"cwt.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"gram\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"kilogram\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"microgram\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"milligram\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"ton\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n,\n\"de/functions/algebra.js\": \n[{\"locale\":\"de\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"key\":\"det\",\"mappings\":{\"default\":{\"default\":\"Determinante\"}},\"category\":\"Algebra\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Homomorphismus\"},\"mathspeak\":{\"default\":\"hom\"},\"clearspeak\":{\"default\":\"hom\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Kern\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Spur\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"de/functions/elementary.js\": \n[{\"locale\":\"de\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"natürlicher Logarithmus\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"Logarithmus zur Basis 10\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"Exponent\"},\"mathspeak\":{\"default\":\"exp\"},\"clearspeak\":{\"default\":\"exp\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"größter gemeinsamer Teiler\"},\"mathspeak\":{\"default\":\"ggt\"},\"clearspeak\":{\"default\":\"ggt\"}},\"key\":\"gcd\",\"names\":[\"gcd\",\"ggt\",\"ggT\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"kleinstes gemeinsames Vielfaches\"},\"mathspeak\":{\"default\":\"kgv\"},\"clearspeak\":{\"default\":\"kgv\"}},\"key\":\"lcm\",\"names\":[\"lcm\",\"kgv\",\"kgV\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"Argument\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"key\":\"im\",\"mappings\":{\"default\":{\"default\":\"der Imaginärteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"im\"]},{\"key\":\"re\",\"mappings\":{\"default\":{\"default\":\"der Realteil der komplexen Zahl\"}},\"category\":\"Complex\",\"names\":[\"re\"]},{\"key\":\"mod\",\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\",\"names\":[\"mod\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Infimum\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes inferior\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Limes superior\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Maximum\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Minimum\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Supremum\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"Colimes\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"projektiver Limes\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"Wahrscheinlichkeit\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"de/functions/hyperbolic.js\": \n[{\"locale\":\"de\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"Kosinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"Kotangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"Kosekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"Sekans hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"Sinus hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"Tangens hyperbolicus\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"key\":\"arcosh\",\"mappings\":{\"default\":{\"default\":\"Areakosinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcosh\",\"arccosh\"]},{\"key\":\"arcoth\",\"mappings\":{\"default\":{\"default\":\"Areakotangens hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcoth\",\"arccoth\"]},{\"key\":\"arcsch\",\"mappings\":{\"default\":{\"default\":\"Areakosekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arcsch\",\"arccsch\"]},{\"key\":\"arsech\",\"mappings\":{\"default\":{\"default\":\"Areasekans hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsech\",\"arcsech\"]},{\"key\":\"arsinh\",\"mappings\":{\"default\":{\"default\":\"Areasinus hyperbolicus\"}},\"category\":\"Area\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"key\":\"artanh\",\"mappings\":{\"default\":{\"default\":\"Areatangens hyperbolicus \"}},\"category\":\"Area\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"de/functions/trigonometry.js\": \n[{\"locale\":\"de\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"Kosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"Kotangens\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"Kosekans\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"Sekans\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"Sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"Tangens\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"key\":\"arccos\",\"mappings\":{\"default\":{\"default\":\"Arkuskosinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arccos\"]},{\"key\":\"arccot\",\"mappings\":{\"default\":{\"default\":\"Arkuskotangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kotangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arccot\"]},{\"key\":\"arccsc\",\"mappings\":{\"default\":{\"default\":\"Arkuskosekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Kosekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arccsc\"]},{\"key\":\"arcsec\",\"mappings\":{\"default\":{\"default\":\"Arkussekans\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sekans\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsec\"]},{\"key\":\"arcsin\",\"mappings\":{\"default\":{\"default\":\"Arkussinus\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Sinus\"}},\"category\":\"Cyclometric\",\"names\":[\"arcsin\"]},{\"key\":\"arctan\",\"mappings\":{\"default\":{\"default\":\"Arkustangens\"},\"clearspeak\":{\"Trig_TrigInverse\":\"inverser Tangens\"}},\"category\":\"Cyclometric\",\"names\":[\"arctan\"]}]\n,\n\"de/symbols/digits_rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"Quadrat\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 2\",\"Exponent_OrdinalPower\":\"zur zweiten Potenz\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"Kubik\"},\"clearspeak\":{\"Exponent_Exponent\":\"mit Exponent 3\",\"Exponent_OrdinalPower\":\"zur dritten Potenz\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"ein Viertel\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"ein Halb\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"drei Viertel\"}},\"category\":\"No\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"ein siebtel\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"ein neuntel\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"ein zehntel\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"ein drittel\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"zwei drittel\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"ein fünftel\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"zwei fünftel\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"drei fünftel\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"vier fünftel\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"ein sechstel\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"fünf sechstel\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"ein achtel\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"drei achtel\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"fünf achtel\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sieben achtel\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Bruchzähler eins\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"null drittel\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zehn auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Zwanzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Dreißig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Vierzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Fünfzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Sechzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Siebzig auf schwarzem Quadrat\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Achtzig auf schwarzem Quadrat\"}}}]\n,\n\"de/symbols/greek-rest.js\": \n[{\"locale\":\"de\"},{\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"Dreieck\",\"TriangleSymbol_Delta\":\"großes Delta\"}},\"category\":\"Lu\"}]\n,\n\"de/symbols/greek-scripts.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"Kapitälchen Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes chi\"}}}]\n,\n\"de/symbols/greek-symbols.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"beta\"}}},{\"category\":\"Ll\",\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"kai\"}}},{\"category\":\"Sm\",\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes epsilon\"}}},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"fettes großes Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"fettes digamma\"}}}]\n,\n\"de/symbols/hebrew_letters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lo\",\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"Alef-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"Bet-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"Gimel-Symbol\"}}},{\"category\":\"Lo\",\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"Dalet-Symbol\"}}}]\n,\n\"de/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese und Grab\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a mit Dot Above und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek und Makron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a mit Ring oben und akut\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese und Makron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Makron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c mit Cedilla und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla und Breve\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o mit Makron und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt unten und Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s mit Akute und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s mit Caron und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt unten und Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron und Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a mit Breve und Dot Below\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o mit Horn und Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Akut\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o mit Strich und Akut\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"punktloses j mit Strich und Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"umgekehrter Glottalanschlag mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"liegendes O mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon mit Strich\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"lang mit diagonalem Anschlag\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"lang S mit hohem Hub\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"wurde Delta gedreht\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"lang mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"lang S\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b mit Oberleiste\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"ton sechs\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d mit Oberleiste\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f mit Haken\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k mit Haken\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l mit Strich\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n mit langem rechtem Bein\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"ton zwei\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"umgedrehte esh Schleife\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t mit palatal Haken\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u mit Horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes ezh\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"ton fünf\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ezh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"gedreht E\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z mit Swash Tail\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q mit Hakenschwanz\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"gedreht A\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"gedrehtes Alpha\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"open O\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d mit Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"umgedreht E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa mit Haken\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"offenes e\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes offenes e mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes geschlossenes epsilon\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"mini gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"h mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l mit Gurt\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"gedreht M\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"gedrehtes M mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n mit linkem Haken\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o mit balken\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"geschlossenes omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"gedrehtes r mit langem Bein und Haken\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r mit langem Bein\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r mit Endstück\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes R mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"squat umgekehrt\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"esh mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"gedreht T\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u Bar\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"gedrehtes v\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"gedrehtes w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"pharyngales stimmhaft Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertierter Glottalanschlag\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"gestrecktes C\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"bilabialer Klick\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"geschlossenes offenes e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"gedrehtes k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q mit Haken\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"dz Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"tc Digraph mit Kringel\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"bilabiales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"bidentales Perkussiv\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"gedrehtes h mit Angelhaken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"gedrehtes ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"gedrehtes e\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"gedrehtes i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"liegendes O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"liegendes geöffnet O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"gedreht Oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"obere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"untere Hälfte O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"liegendes U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"liegendes u Umlaut\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"liegendes m\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"stimmhaft laryngaler Frikativ\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"Ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r mit Angelhaken und mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z mit mittlerer Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"gedreht G\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular G\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th mit Durchgestrichen\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"esh mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z mit Palatalhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d mit Haken und Schwanz\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"umgedrehtes offenes e mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"offenes o mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"esh mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u mit Retroflexhaken\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ezh mit Retroflexhaken\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n mit Apostroph davor\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"de/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o mit Tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u mit Grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u mit Diärese\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y mit Diärese\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a mit Ogonek\"}}},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e mit Breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e mit Caron\"}}},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g mit Zirkumflex\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g mit Breve\"}}},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g mit Cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i mit Breve\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i mit Ogonek\"}}},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i ohne punkt\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k mit Cedille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l mit Caron\"}}},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt in der Mitte\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o mit Breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r mit Caron\"}}},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s mit Caron\"}}},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t mit Cedille\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t mit Caron\"}}},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u mit Tilde\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u mit Breve\"}}},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u mit Ring darüber\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u mit doppeltem Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u mit Ogonek\"}}},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y mit Zirkumflex\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z mit Aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z mit Punkt darüber\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o mit Ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j mit Caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g mit Aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u mit Doppelgrab\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u mit umgekehrter Breve\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Komma\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h mit Caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"dotless J\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a mit Ring unten\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g mit Makron\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h mit Cedilla\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h mit Breve unten\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehender Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u mit darunterliegender Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u mit darunterem Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w mit Akut\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y mit Punkt oben\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z mit Zirkumflex\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h mit Zeile darunter\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t mit Diärese\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y mit Ring oben\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a mit rechtem Halbring\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a mit Punkt unten\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e mit Tilde\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y mit Grab\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y mit untenstehendem Punkt\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y mit Haken oben\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y mit Tilde\"}}}]\n,\n\"de/symbols/latin-rest.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"kombinierendes a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"kombinierendes e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"kombinierendes i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"kombinierendes o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"kombinierendes u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"kombinierendes d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"kombinierendes h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"kombinierendes m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"kombinierendes t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"kombinierendes v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"kombinierendes x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes v\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes r\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes oberes w\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"kombinierendes c mit Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"kombinierendes insulares d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"kombinierendes eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"kombinierendes g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen g\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"kombinierendes k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"kombinierendes l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"kombinierendes n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"kombinierendes Kapitälchen N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"kombinierendes lateinisches Kapitälchen R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"kombinierendes r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"kombinierendes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"kombinierendes langes s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"kombinierendes z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"hochgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"tiefgestelltes j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"groß S in stumpfen Klammern\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes kursives groß R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"durchgestrichenes P auf schwarzen Quadrat\"}}}]\n,\n\"de/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"de\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese und Grab\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Dot Above und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek und Makron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring oben und akut\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese und Makron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Makron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedilla und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla und Breve\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"groß L mit Dot Below und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt unten und Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"groß S mit Akute und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron und Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt und oben stehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron und Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"groß A mit Circumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Hook oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve und Dot Below\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Circumflex und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex und Punkt darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"groß O mit Horn und Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Akut\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Grab\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"groß U mit Horn und Punkt\"}}}]\n,\n\"de/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"de\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"groß A mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"groß A mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"groß A mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"groß C mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"groß E mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"groß E mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"groß E mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"groß I mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"groß I mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"groß I mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"großes n mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"großes o mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"groß O mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"groß O mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"groß O mit Tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"groß O mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"groß U mit Gravis\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"groß U mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"groß U mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"groß U mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"groß A mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"groß A mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ogonek\"}}},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"groß C mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"groß C mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"groß C mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"groß C mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"groß E mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"groß E mit Breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"groß E mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"groß E mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"groß E mit Caron\"}}},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"groß G mit Zirkumflex\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"groß G mit Breve\"}}},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"groß G mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"groß G mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"groß H mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"groß I mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"groß I mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"groß I mit Breve\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"groß I mit Ogonek\"}}},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"groß I mit Punkt darüber\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"groß J mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"groß K mit Cedille\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"groß L mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"groß L mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"groß L mit Caron\"}}},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt in der Mitte\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"groß N mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"groß N mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"groß N mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"groß O mit doppeltem Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"groß R mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"groß R mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"groß R mit Caron\"}}},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"groß S mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"groß S mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"groß S mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"groß S mit Caron\"}}},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"groß T mit Cedille\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"groß T mit Caron\"}}},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"groß U mit Tilde\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"groß U mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"groß U mit Breve\"}}},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ring darüber\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"groß U mit dopppeltem Aigu\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"groß U mit Ogonek\"}}},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"groß W mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Zirkumflex\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Diärese\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Aigu\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Punkt darüber\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"groß A mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"groß I mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"groß O mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"groß U mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"groß G mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"groß K mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"groß O mit Ogonek\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"groß G mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"groß N mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"groß A mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"groß A mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"groß E mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"groß E mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"groß I mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"groß I mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"groß O mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"groß O mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"groß R mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"groß R mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"groß U mit Doppelgravis\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"groß U mit umgekehrter Breve\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Komma\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"groß H mit Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"groß E mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"groß O mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"groß A mit Ring unten\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"groß B mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"groß B mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"groß B mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"groß D mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"groß D mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"groß D mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"groß D mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"groß D mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"groß E mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"groß F mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"groß G mit Makron\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"groß H mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"groß H mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"groß H mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"groß H mit Cedilla\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"groß H mit Breve unten\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"groß I mit unten stehender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"groß K mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"groß K mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"groß K mit Zeile\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"groß L mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"groß L mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"groß L mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"groß M mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"groß M mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"groß M mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"groß N mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"groß N mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"groß N mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"groß N mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"groß P mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"groß P mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"groß R mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"groß R mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"groß R mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"groß S mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"groß S mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"groß T mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"groß T mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"groß T mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"groß T mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehender Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterliegender Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"groß U mit darunterem Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"groß V mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"groß V mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"groß W mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"groß W mit Akut\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"groß W mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"groß W mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"groß X mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"groß X mit Diärese\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Punkt oben\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zirkumflex\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"groß Z mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"groß Z mit Zeile darunter\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"groß A mit Punkt unten\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"groß A mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"groß E mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"groß E mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"groß E mit Tilde\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"groß I mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"groß I mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"groß O mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"groß O mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"groß U mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"groß U mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Gravis\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"groß Y mit untenstehendem Punkt\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Haken oben\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"groß Y mit Tilde\"}}}]\n,\n\"de/symbols/math_angles.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Bogen\"}}},{\"category\":\"Sm\",\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit nach unten gerichtetem Zickzackpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionaler Winkel\"}}},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Gemessene Winkelöffnung links\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Variante mit Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel mit Punkt gemessen\"}}},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Winkel mit S nach innen\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Spitzer Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Öffnungswinkel nach links\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Sphärischer Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Gedrehter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"Winkel mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Winkel mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"Schräger Winkel, der sich nach unten öffnet\"}}},{\"category\":\"Sm\",\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach oben und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach oben und links\"}}},{\"category\":\"Sm\",\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil und rechts\"}}},{\"category\":\"Sm\",\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach rechts und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im Pfeil nach links und oben\"}}},{\"category\":\"Sm\",\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm endet im nach rechts und unten zeigenden Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"Gemessener Winkel mit offenem Arm und Pfeil nach links und unten\"}}}]\n,\n\"de/symbols/math_arrows.js\": \n[{\"locale\":\"de\"},{\"category\":\"Sm\",\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil\"}}},{\"category\":\"So\",\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Spitzen\"}}},{\"category\":\"So\",\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zwei Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit zwei Köpfen\"}}},{\"category\":\"So\",\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"Abwärts zwei Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz\"}}},{\"category\":\"So\",\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von der Bar\"}}},{\"category\":\"So\",\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"Pfeil von der Bar nach unten\"}}},{\"category\":\"So\",\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Basis\"}}},{\"category\":\"So\",\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Haken\"}}},{\"category\":\"So\",\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schleife\"}}},{\"category\":\"So\",\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Wellenpfeil\"}}},{\"category\":\"Sm\",\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit Strich\"}}},{\"category\":\"So\",\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"Zickzack-Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Spitze nach links\"}}},{\"category\":\"So\",\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Spitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Ecke nach unten\"}}},{\"category\":\"So\",\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten mit Ecke nach links\"}}},{\"category\":\"So\",\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"Gegen den Uhrzeigersinn oberer halbkreisförmiger Pfeil\"}}},{\"category\":\"So\",\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"Halbkreis im Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur langen Bar\"}}},{\"category\":\"So\",\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zum Überfahren Pfeil nach rechts zum Überfahren\"}}},{\"category\":\"So\",\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"Offener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"So\",\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn öffnen\"}}},{\"category\":\"So\",\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil nach links von Abwärtspfeil\"}}},{\"category\":\"So\",\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"Links gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"Aufwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"Rechts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"Abwärts gepaarte Pfeile\"}}},{\"category\":\"So\",\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"Links Rechts Doppelpfeil mit Strich\"}}},{\"category\":\"Sm\",\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit Strich\"}}},{\"category\":\"So\",\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"Nordwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"Nordost-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"Südost Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"Südwest-Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"Linker Squiggle-Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gekrümmter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit Doppelstrich\"}}},{\"category\":\"So\",\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"So\",\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben gestrichen\"}}},{\"category\":\"So\",\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"Rechts gestrichener Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"Abwärts gestrichelter Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zur Bar\"}}},{\"category\":\"So\",\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"Abwärts weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil von der Stange\"}}},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit horizontaler Stange\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Pfeil auf Sockel mit vertikaler Stange\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer Doppelpfeil\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"Aufwärts weißer doppelter Pfeil auf Sockel\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"Rechts weißer Pfeil von der Wand\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil zur Ecke\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil nach links von Aufwärtspfeil\"}}},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"Drei nach rechts gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit offenem Kopf\"}}},{\"category\":\"Sm\",\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil mit offenem Kopf\"}}},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"Elektrischer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"Pfeilspitze zwischen zwei horizontalen Balken\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"Gebrochener Kreis mit Nordwestpfeil\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gerichteter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"Schwerer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"Schwerer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"Schwerer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"Zeichnungspunkt Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"Schwerer runder Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"Schwerer Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"Dreieckköpfiger Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"Schwerer, gestrichelter Dreieckspfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, nach oben beleuchtete Pfeilspitze\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"Dreidimensionale, von unten beleuchtete Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"Schwarze Pfeilspitze nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach unten und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzer Pfeil nach oben und rechts gebogen\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts gerichteter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"Schwerer konkaver Spitze-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"Rechts geschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"Links schattierter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"Zurückgekippter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"Vorne geneigter, beschatteter weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"Schwerer unterer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"Schwerer oberer rechter Schatten mit weißem Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"Gekerbter Pfeil nach rechts unten rechts\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"Weißer Pfeil nach rechts oben gekerbt\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"Eingekreister schwerer weißer Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit weißer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"Schwarz-gefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"Pfeil mit schwarzer Feder nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"Schwerer schwarzgefiederter Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Barbed-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Pfeil nach rechts\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"Keil-Schwanz nach rechts Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"Schwerer, nach rechts gekeilter Pfeil\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"Offener Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"Vierfacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"rechter Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"Langer linker rechter Doppelpfeil\"}}},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"Langer Pfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"Langer Rechtspfeil von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"Langer Doppelpfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"Langer nach rechts gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Doppelpfeil mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"Zwei Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeil nach rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil mit horizontalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil mit horizontalem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"Dreifachpfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Strichpfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Bindestrich nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"Dreipoliger Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"Aufwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"Abwärtspfeil zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit senkrechtem Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"Nach rechts gerichteter Doppelpfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links nach links\"}}},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach links\"}}},{\"category\":\"Sm\",\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"Doppelter Pfeilschwanz nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts von Bar zu Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"Nordwest- und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"Nordost- und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil mit Haken\"}}},{\"category\":\"Sm\",\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeil und Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil und Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil und Südwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"Südwestpfeil und Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"Südostpfeil Kreuzung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeil Kreuzung Südostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"Fallende Diagonale, die Nordostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"Steigende Diagonale, die Südostpfeil kreuzt\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"Nordostpfeilüberquerung Nordwestpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"Nordwestpfeilüberquerung Nordostpfeil\"}}},{\"category\":\"Sm\",\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach rechts zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach oben gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts, dann nach unten gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach links gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach unten, dann nach rechts gekrümmt\"}}},{\"category\":\"Sm\",\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"Rechtsseitiger Bogen im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"Bogen der linken Seite gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"Pfeil unten gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben im Uhrzeigersinn mit Minus\"}}},{\"category\":\"Sm\",\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"Pfeil oben gegen den Uhrzeigersinn mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"Rechts unten halbkreisförmig im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"Linker halbkreisförmiger Pfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Kreispfeil im Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Kurzer Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Kurzer Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"Kurzer Pfeil nach rechts Über Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Plus unten\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch X\"}}},{\"category\":\"Sm\",\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"Linker rechter Pfeil durch kleinen Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"Aufwärts zweiköpfiger Pfeil vom kleinen Kreis\"}}},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"Größer als über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"Untersatz über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"Superset über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Pfeil rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit linkem Pfeil oben\"}}},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach oben durch Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis mit Pfeil nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"Integral mit Pfeil nach links mit Haken\"}}},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"North East White Arrow\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"Südostweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"Südwestweißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"Linker rechter weißer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"Aufwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"Abwärts schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Nordostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"Nordwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Südostpfeil\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"Südwestlicher schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"Linker rechter schwarzer Pfeil\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Pfeil nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts mit Spitze nach oben\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach unten\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Spitze nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit kleinem Kreis\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"Drei nach links gerichtete Pfeile\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"Linker Pfeil mit Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"Langer nach links gerichteter Squiggle-Pfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit senkrechtem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"Doppelpfeil nach links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit zwei Köpfen\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit gepunktetem Stamm\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"Nach links gerichteter zweiköpfiger Pfeil mit Schwanz mit doppeltem vertikalem Strich\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links durch X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"Wellenpfeil, der direkt nach links zeigt\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator Über Linkspfeil\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über der Rückseite fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch mehr als\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts durch Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach links\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"Vierfachpfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"Reverse-Tilde-Operator über dem Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator über dem Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach links über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"Pfeil nach rechts über Reverse-Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach links\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach oben\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"Halbbreiter Pfeil nach unten\"}}}]\n,\n\"de/symbols/math_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"Skript klein L\"}}},{\"category\":\"Sm\",\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"Skript groß P\"}}},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"groß Gamma mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"groß Pi mit Doppelstrich\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"Summenzeichen mit Doppelstrich\"}}},{\"category\":\"Lu\",\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"groß D kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"d kursiv mit Doppelstrich\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"e kursiv mit Doppelstrich\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"i kursiv mit Doppelstrich\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j kursiv mit Doppelstrich\"}}},{\"category\":\"Ll\",\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"punktloses i kursiv\"}}},{\"category\":\"Ll\",\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"punktloses j kursiv\"}}}]\n,\n\"de/symbols/math_delimiters.js\": \n[{\"locale\":\"de\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"eckige Klammer zu\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer auf\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"geschwungene Klammer zu\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Stachel\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Stachel\"}}},{\"category\":\"Sm\",\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"linke Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"rechte Aufrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"linke Abrundungsklammer\"}}},{\"category\":\"Sm\",\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"rechter Abrundungsklammer\"}}},{\"category\":\"So\",\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"unterer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"Unterer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"Oberer rechter Abschnitt\"}}},{\"category\":\"So\",\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"Oberer linker Abschnitt\"}}},{\"category\":\"So\",\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"Obere rechte Ecke\"}}},{\"category\":\"So\",\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"Untere linke Ecke\"}}},{\"category\":\"So\",\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"Rechte untere Ecke\"}}},{\"category\":\"Sm\",\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"Obere Hälfte eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"Untere Hälfte eines Integrals\"}}},{\"category\":\"Ps\",\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"Linke spitze Klammer\"}}},{\"category\":\"Pe\",\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"Rechte spitze Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"Linke Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der linken Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil der rechten Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammerverlängerung\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten eckigen Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der linken geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"Zwischenteil einer geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"oberer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"Mittelstück der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"unterer Teil der rechten geschweiften Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"Mittelteil eines Integrals\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"Erweiterung einer Querlinie\"}}},{\"category\":\"Sm\",\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben links oder rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"Geschweiftes Klammerteil oben rechts oder unten links\"}}},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"Oberer Teil einer Summe\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil einer Summe\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer auf oberer eckiger Klammer\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"Unterer Teil des Radikalsymbols\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"Linke vertikale Boxlinie\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"Rechte vertikale Boxlinie\"}}},{\"category\":\"Sm\",\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"Obere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"Untere Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"Obere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"Untere geschweifte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"Obere eckige Klammer\"}}},{\"category\":\"Sm\",\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"Untere eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte linke Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"Mittlere abgeflachte rechte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"Mittlere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"Mittlere, rechtwinklige Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Anführungszeichen-Verzierung\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"Schwere nach rechts zeigenden Winkel-Anführungszeichen-Verzierung\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"Schwere nach links weisende Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"Schwere, nach rechts weisende Winkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"Leichte linke Schildpatt Bracket Ornament\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"Leichte rechte Schildpatt-Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"Mittlere linke geschweifte Klammerverzierung\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"Mittlere rechte geschweifte Klammerverzierung\"}}},{\"category\":\"Ps\",\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"Linker S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Pe\",\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"rechter S-förmiger Taschenbegrenzer\"}}},{\"category\":\"Ps\",\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke doppelte Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechtwinklige eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke Schildkrötenpanzerhalterung\"}}},{\"category\":\"Pe\",\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"Mathematische linke abgeflachte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"Mathematische rechte abgeflachte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"Linke weiße geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Bildklammer\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"Z-Notation rechte Bildklammer\"}}},{\"category\":\"Ps\",\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"Z Notation Right Binding Bracket\"}}},{\"category\":\"Ps\",\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Unterlenker\"}}},{\"category\":\"Pe\",\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Unterlenker\"}}},{\"category\":\"Ps\",\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Häkchen in der oberen Ecke\"}}},{\"category\":\"Pe\",\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Ps\",\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit Tick in der unteren Ecke\"}}},{\"category\":\"Pe\",\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"Rechte eckige Klammer mit Tick in der oberen Ecke\"}}},{\"category\":\"Ps\",\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer mit Punkt\"}}},{\"category\":\"Pe\",\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit Punkt\"}}},{\"category\":\"Ps\",\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"Linker Bogen weniger als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"rechter Bogen größer als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"Doppelter linker Bogen größer als Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"Doppelter rechter Bogen weniger als Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze Schildkrötenhalterung\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"Linker wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"rechter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"Linker doppelter wackeliger Zaun\"}}},{\"category\":\"Pe\",\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"rechter doppelter wackeliger Zaun\"}}},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigender gebogener Winkelhalter\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigender gebogener Winkelhalter\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"Obere linke halbe Halterung\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"Obere rechte halbe Klammer\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"Linke halbe halterung unten\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"Untere rechte halbe Halterung\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"U-Halterung links seitlich\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"U-Halterung rechts seitlich\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"Linke doppelte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"Rechte doppelte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"Linke Winkelklammer\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"Linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"Rechte Doppelwinkelhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"Linke Eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"Rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"Linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"Rechte schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"Linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"Rechte Schildpattlasche\"}}},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"Linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"Linke weiße eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"Rechte weiße eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen in umgekehrter Reihenfolge\"}}},{\"category\":\"Pe\",\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"Doppelte Anführungszeichen\"}}},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"Niedriges doppeltes Prime-Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"Verzierte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"Verzierte rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale, recht geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Schildpattklammer\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke schwarze linsenförmige Halterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige schwarze linsenförmige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Doppelwinkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige, rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Winkelhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechtwinklige Halterung\"}}},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke weiße Eckhalterung\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale rechte weiße Eckhalterung\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale linke eckige Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale eckige Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"Kleine linke geschweifte Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte geschweifte Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"Kleine linke Schildpatt-Klammer\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"Kleine rechte Schildpatt-Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"Linke Klammer in voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"Rechte Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"Linke eckige Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"Linke geschweifte Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklige Klammer mit voller Breite\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"Linke weiße Klammer mit voller Breite\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"Rechte breite weiße Klammer\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"Halbe breite linke eckklammer\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"Halbe breite rechte eckklammer\"}}}]\n,\n\"de/symbols/math_geometry.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Horizontal\"}}},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Horizontale\"}}},{\"category\":\"So\",\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical\"}}},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Schwere Vertikale\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Licht Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Quadruple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Right\"}}},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Right\"}}},{\"category\":\"So\",\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down und Links\"}}},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down und Left\"}}},{\"category\":\"So\",\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf und richtig\"}}},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Right\"}}},{\"category\":\"So\",\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und links\"}}},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Links\"}}},{\"category\":\"So\",\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Right Heavy\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Right Light\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Left Heavy\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Heavy und Left Light\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leicht und horizontal\"}}},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Down Heavy\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen nach unten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten und horizontal\"}}},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen für schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Up Heavy\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen schwer und horizontal\"}}},{\"category\":\"So\",\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen links schweres und rechtes vertikales Licht\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Heavy und Left Vertical Light\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Light und Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Heavy und Down Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Heavy und Up Horizontal Light\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"Kastenzeichnungen Vertikales schweres und horizontales Licht\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Up Heavy und Right Down Light\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Up Heavy und Left Down Light\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Down Heavy und Right Up Light\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Down Heavy und Left Up Light\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Light und Up Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Light und Down Horizontal Heavy\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Right Light und Left Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Left Light und Right Vertical Heavy\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt horizontal\"}}},{\"category\":\"So\",\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical\"}}},{\"category\":\"So\",\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Right\"}}},{\"category\":\"So\",\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Links\"}}},{\"category\":\"So\",\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und rechts\"}}},{\"category\":\"So\",\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und links\"}}},{\"category\":\"So\",\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Right Double\"}}},{\"category\":\"So\",\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Right Single\"}}},{\"category\":\"So\",\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Right\"}}},{\"category\":\"So\",\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Left Double\"}}},{\"category\":\"So\",\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Left Single\"}}},{\"category\":\"So\",\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Vertical und Left\"}}},{\"category\":\"So\",\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Down Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Double Down und Horizontal\"}}},{\"category\":\"So\",\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Up Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen verdoppeln und horizontal\"}}},{\"category\":\"So\",\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Single und Horizontal Double\"}}},{\"category\":\"So\",\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Vertical Double und Horizontal Single\"}}},{\"category\":\"So\",\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen doppelt vertikal und horizontal\"}}},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Right\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Down und Links\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und links\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Arc Up und rechts\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal Oben Rechts Nach Unten Links\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Diagonal von oben links nach rechts unten\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"Box Zeichnungen Light Diagonal Cross\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Left\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen leuchten auf\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"Box-Zeichnungen Light Right\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Down\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Left und Heavy Right\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Light Up und Heavy Down\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Left und Light Right\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"Box Drawings Heavy Up und Light Down\"}}},{\"category\":\"So\",\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"Block der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"Unterer achter Block\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"Unterer Viertelblock\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"Drei Achtel-Block senken\"}}},{\"category\":\"So\",\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"Block der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"Fünf Achtel Block\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"Unterer Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"Unterer Sieben Achtel-Block\"}}},{\"category\":\"So\",\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"Voller Block\"}}},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"Linker Sieben Achtel Block\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"Linker Dreiviertelblock\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"Linker Block mit fünf Achteln\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"Linke halbe Block\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"Block drei Achtel\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"Linke einen Viertelblock\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"Linker achter Block\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"Rechte halbe Block\"}}},{\"category\":\"So\",\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"Lichtschatten\"}}},{\"category\":\"So\",\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"Mittlere Schatten\"}}},{\"category\":\"So\",\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"Dunkler Schatten\"}}},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"Oberer achter Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"rechter achter Block\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"Quadrant unten links\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"Quadrant rechts unten\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und unten links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und rechts unten\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben links und oben rechts und unten rechts\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"Quadrant oben rechts und unten links und unten rechts\"}}},{\"category\":\"So\",\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat\"}}},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit abgerundeten Ecken\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat, das schwarzes kleines Quadrat enthält\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit horizontaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit orthogonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Oben links nach rechts unten füllen\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter bis unterer linker Füllung\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit diagonaler Schraffurfüllung\"}}},{\"category\":\"So\",\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"Schwarzes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"Weißes Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"Weißes vertikales Rechteck\"}}},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"Weißes Parallelogramm\"}}},{\"category\":\"So\",\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"Weißes rechtwinkliges Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"Weißer nach rechts zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Abwärtsdreieck\"}}},{\"category\":\"So\",\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"Weißes nach unten zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes, nach unten zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"Weißes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"Weißes nach links zeigendes kleines Dreieck\"}}},{\"category\":\"So\",\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"Schwarzer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"Weißer nach links zeigender Zeiger\"}}},{\"category\":\"So\",\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant\"}}},{\"category\":\"So\",\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit schwarzem kleinem Diamant\"}}},{\"category\":\"So\",\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"Fischauge\"}}},{\"category\":\"So\",\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"Raute\"}}},{\"category\":\"So\",\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Kreis\"}}},{\"category\":\"So\",\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"Kreis mit vertikaler Füllung\"}}},{\"category\":\"So\",\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"Bullseye\"}}},{\"category\":\"So\",\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"Kreis mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"Kreis mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit unterer Hälfte Schwarz\"}}},{\"category\":\"So\",\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"Kreis mit oberem rechten Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit ganzem oberen linken Quadranten schwarz\"}}},{\"category\":\"So\",\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"Linker halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"rechter halber schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"Inverse Kugel\"}}},{\"category\":\"So\",\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"Inverse weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter weißer Kreis der oberen Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"Inverser weißer Kreis der unteren Hälfte\"}}},{\"category\":\"So\",\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des oberen linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen im oberen rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des rechten unteren Quadranten\"}}},{\"category\":\"So\",\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"Kreisbogen des unteren linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"Oberer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"Unterer Halbkreis\"}}},{\"category\":\"So\",\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"Schwarzes unteres linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"Schwarzes oberes linkes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"Schwarzes rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"Weiße Kugel\"}}},{\"category\":\"So\",\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit der oberen linken Diagonalenhälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit senkrechter Linie\"}}},{\"category\":\"So\",\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"Weißes nach oben zeigendes Dreieck mit Punkt\"}}},{\"category\":\"So\",\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"Aufwärtszeigendes Dreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"Großer Kreis\"}}},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit oberem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit rechtem oberen Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit oberem linkem Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem linken Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit unterem rechten Quadranten\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit rechtem oberen Quadranten\"}}},{\"category\":\"Sm\",\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"Oberes linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"Oberes rechtes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"Unteres linkes Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"Weißes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"Schwarzes mittleres kleines Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"Unteres rechtes Dreieck\"}}},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit oberer rechter diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit unterer linker diagonaler Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"Diamant mit linker Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"Diamant mit rechter Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"Diamant mit oberer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"Diamant mit unterer Hälfte schwarz\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"Schwarzes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"Weißes großes Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"Schwarzes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"Weißes sehr kleines Quadrat\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"Weißes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"Weißes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"Horizontales schwarzes Sechseck\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"Schwarzer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"Schwarzer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Diamant\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"Schwarze mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"Weiße mittlere Raute\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Diamant\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"Schwarze kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"Weiße kleine Raute\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"Schwarze horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"Weiße horizontale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"Schwarze vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Ellipse\"}}},{\"category\":\"So\",\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"Weißer mittlerer Stern\"}}},{\"category\":\"So\",\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"Schwarzer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"Weißer kleiner Stern\"}}},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"Schwarzes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"Weißes nach rechts zeigendes Pentagon\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"Schwerer großer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"Schweres Oval mit innenliegendem Oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis mit Kreis nach innen\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"Schwerer Kreis\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"Schwerer eingekreister Saltire\"}}}]\n,\n\"de/symbols/math_harpoons.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben\"}}},{\"category\":\"So\",\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten\"}}},{\"category\":\"So\",\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"So\",\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"So\",\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links über Harpune nach rechts\"}}},{\"category\":\"So\",\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts über Harpune nach links\"}}},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"Nach oben Barb Rechts Nach links Barb Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Right Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Up Rechte Barb Up Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"Barb nach rechts Barb nach rechts Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"Linke Barb Down Rechte Barb Down Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"Up Barb Left Abwärts Barb Left Harpoon\"}}},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up To Bar\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb bis zur Bar\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Widerhaken rechts\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb Right to Bar\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach links\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb rechts von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"Rechts Harpoon mit Barb Down von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links von der Bar\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"Harpune nach links mit Barb nach oben Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpoon nach rechts mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb nach unten Harpune nach unten mit Barb nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Oben Rechts Harpoon mit Barb Up\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Widerhaken nach unten Rechts Harpune mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach oben Harpune nach links mit Barb nach oben\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb nach unten Harpune nach links mit Barb nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Up Above Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"Linke Harpune mit Barb Down Under Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Barb Up Long Long Dash\"}}},{\"category\":\"Sm\",\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"Harpune nach rechts mit Widerhaken nach unten\"}}},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"Harpune nach oben mit Barb links neben Harpune nach unten mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"Harpune nach unten mit Barb links neben Harpune nach oben mit Barb rechts\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"linker Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"rechter Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"Fischschwanz\"}}}]\n,\n\"de/symbols/math_non_characters.js\": \n[{\"locale\":\"de\"},{\"category\":\"Ll\",\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"Planck-Konstante über zwei Pi\"}}},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B Balkensymbol\"}}},{\"category\":\"So\",\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"Numero-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"Tonaufnahme Copyright\"}}},{\"category\":\"So\",\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"Rezept nehmen\"}}},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"Antwort\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"Dienstleistungsmarke\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"Telefon Zeichen\"}}},{\"category\":\"So\",\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"Markenzeichen\"}}},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"Versicle\"}}},{\"category\":\"So\",\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"Unze-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"Ohm-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ohm-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"Kelvin-Zeichen\"}}},{\"category\":\"Lu\",\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"Angstrom-Zeichen\"}}},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Geschätztes Symbol\"}}},{\"category\":\"Lu\",\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"Umgeschlagenes Kapital F\"}}},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"Informationsquelle\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Gedrehtes Kapital Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"Faksimile-Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"Aufgehobenes Sans-Serif-Kapital L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Sans-Serif Capital Y\"}}}]\n,\n\"de/symbols/math_symbols.js\": \n[{\"locale\":\"de\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"Fakultät\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"Anführungszeichen\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"Nummernzeichen\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"Dollar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"Prozent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"Hochkomma\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"times\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"Komma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Pd\"},{\"category\":\"Po\",\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"Punkt\"}}},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"Strichpunkt\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"ist gleich\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"größer als\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"Klammeraffe\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circumflex\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"Unterstrich\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"Gravis Akzent\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"senkrechter Strich\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Ausrufezeichen\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"Cent\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"währungszeichen\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"gebrochene Linie\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"Abschnitt\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diaeresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"Copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"weibliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pi\",\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"Nach links zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"nicht\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registered sign\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"Überstrich\",\"alternative\":\"Makron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus minus\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acute accent\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro sign\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"Paragraf\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Punkt mittig\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"Cedille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"Männliches Ordnungszeichen\"}},\"category\":\"Lo\"},{\"category\":\"Pf\",\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"Nach rechts zeigendes doppeltes spitzes Anführungszeichen\"}}},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Fragezeichen\"}},\"category\":\"Po\"},{\"category\":\"Sm\",\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"mal\"}}},{\"category\":\"Sm\",\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"geteilt durch\"}}},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"Breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"Überpunkt\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"Überring\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"Ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"Tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"Doppleakutakzent\"}},\"category\":\"Sk\"},{\"category\":\"Pd\",\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"Nicht brechender Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"Abbildung Bindestrich\"}}},{\"category\":\"Pd\",\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"En Dash\"}}},{\"category\":\"Pd\",\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"EM Dash\"}}},{\"category\":\"Pd\",\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"Horizontale Linie\"}}},{\"category\":\"Po\",\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"Doppelte vertikale Linie\"}}},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"Doppelter Unterstrich\"}}},{\"category\":\"Pi\",\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"Linkes einfaches Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"Rechtes einfaches Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"Einzelnes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"Einzelnes linkes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"Linkes doppeltes Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"Rechtes doppeltes Anführungszeichen\"}}},{\"category\":\"Ps\",\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"Doppeltes rechtes Anführungszeichen\"}}},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"Doppeltes linkes Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"Dolch\"}}},{\"category\":\"Po\",\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"Doppelter Dolch\"}}},{\"category\":\"Po\",\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"Kugel\"}}},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"Dreieckige Kugel\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"Einzelpunkt\"}}},{\"category\":\"Po\",\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"zwei Punkte\"}}},{\"category\":\"Po\",\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"horizontale Ellipsis\"}}},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"Trennungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"promille\"}}},{\"category\":\"Po\",\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"pro Zehntausend\"}}},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"Strich\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"zwei Strich\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"drei Strich\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"zwei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"drei Strich invertiert\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"Caret\"}}},{\"category\":\"Pi\",\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"Einfacher nach links zeigender Winkel Anführungszeichen\"}}},{\"category\":\"Pf\",\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"Einzelne Nach-rechts-Winkel-Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"Referenzmarke\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"Doppelausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"Interrobang\"}}},{\"category\":\"Po\",\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"Überschrift\"}}},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"Undertie\"}}},{\"category\":\"Pc\",\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"Zeichen Krawatte\"}}},{\"category\":\"Po\",\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"Caret-Einfügungspunkt\"}}},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"Asterism\"}}},{\"category\":\"Po\",\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"Bindestrich Kugel\"}}},{\"category\":\"Sm\",\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"Fraktions-Schrägstrich\"}}},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"Doppel-Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"Fragezeichen für Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Pilcrow-Zeichen\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach links\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"Schwarze Kugel nach rechts\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"Niedriges Sternchen\"}}},{\"category\":\"Po\",\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Semikolon\"}}},{\"category\":\"Po\",\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"Nahansicht\"}}},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"Zwei Sternchen vertikal ausgerichtet\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"Kommerzielles Minuszeichen\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"Swing Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"Inverted Undertie\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"Blume Interpunktionszeichen\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"Drei Punkt-Interpunktion\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"Vierpunkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"Fünf Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"Zwei Punkt-Interpunktion\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"Vier-Punkt-Markierung\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"Gepunktetes Kreuz\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"Tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"Vertikale vier Punkte\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"Hochgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"Hochgestellte rechte Klammer\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"Index Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Minus\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"Tiefgestelltes Gleichheitszeichen\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte linke Klammer\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"Tiefgestellte rechte Klammer\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"Grundstücksgrenze\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"Ampersand gedreht\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"Pro Zeichen\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"Aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"Gedreht klein F\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"für alle\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"Komplement\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"es gibt\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"es gibt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"leere Menge\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"Differenz\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"nicht Element von\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"Element von\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"hat nicht als Element\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"hat als Element\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"Ende Beweis\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"Produkt\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"Koprodukt\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"Summe\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"minus\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"minus plus\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"Plus mit Punkt\"}}},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"Division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"Mengendifferenz\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"verknüpft mit\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"Kreisoperator\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"Quadratwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"Kubikwurzelzeichen\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"vierte Wurzel\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportional zu\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"unendlich\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"rechter Winkel\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"Winkel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"gerichteter Winkel\"}}},{\"category\":\"Sm\",\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"Raumwinkel\"}}},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"teilt\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"teilt nicht\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"nicht parallel zu\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"und\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"oder\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"Durchschnitt\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"Vereinigung\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"Integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"Doppelintegral\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"Dreifachintegral\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"Randintegral\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"Oberflächenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"Volumenintegral\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"Integral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Uhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"Kurvenintegral im Gegenuhrzeigersinn\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"folglich\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"weil\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"Verhältnis\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"Minus mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"Überschuss\"}}},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"geometrische Proportion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothetisch\"}}},{\"category\":\"Sm\",\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"Tildeoperator\"}}},{\"category\":\"Sm\",\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"Umgekehrte Tilde\"}}},{\"category\":\"Sm\",\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes stummes S\"}}},{\"category\":\"Sm\",\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"Sinuswelle\"}}},{\"category\":\"Sm\",\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"Kranzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"durchgestrichene Tilde\"}}},{\"category\":\"Sm\",\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"Minus über Tilde\"}}},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"nicht asymptotisch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"ungefähr, aber nicht ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"weder ungefähr noch ganz gleich\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"nicht beinahe gleich\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"beinahe gleich oder gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"dreifache Tilde\"}}},{\"category\":\"Sm\",\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"alles gleich\"}}},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geometrisch äquivalent zu\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"Differenz zwischen\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"nähert sich der Grenze\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geometrisch gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder das Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"Bild von oder ungefähr gleich\"}}},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"definiert als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"definiert als von rechts\"}}},{\"category\":\"Sm\",\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"category\":\"Sm\",\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"ungefähr gleich\"}}},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"entspricht\"}}},{\"category\":\"Sm\",\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"gleichwinklig zu\"}}},{\"category\":\"Sm\",\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"gleich mit Stern\"}}},{\"category\":\"Sm\",\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"gleich mit Delta\"}}},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"definitionsgemäß gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"gemessen mit\"}}},{\"category\":\"Sm\",\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"vielleicht gleich\"}}},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"ungleich\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"nicht kongruent mit\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"genau äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"kleiner oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"größer oder gleich\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"kleiner als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"größer als über gleich\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht gleich\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"viel kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"viel größer als\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"zwischen\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"nicht äquivalent mit\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"nicht kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"nicht größer als\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch gleich\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"größer als oder äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"weder kleiner als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"weder größer als noch äquivalent\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"kleiner oder größer als\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"größer oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"weder kleiner noch größer als\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"weder größer noch kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"vorangehend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"nachfolgend oder äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"nicht vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"nicht nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"keine echte Teilmenge von\"}}},{\"category\":\"Sm\",\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"kein echte Obermenge von\"}}},{\"category\":\"Sm\",\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"Obermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"weder Teilmenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"weder Obermenge noch gleich\"}}},{\"category\":\"Sm\",\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"Teilmenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"Obermenge aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"Multimenge\"}}},{\"category\":\"Sm\",\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"Multimengenmultiplikation\"}}},{\"category\":\"Sm\",\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"Multimengenvereinigung\"}}},{\"category\":\"Sm\",\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild von\"}}},{\"category\":\"Sm\",\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original von\"}}},{\"category\":\"Sm\",\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"quadratische Schnittmenge\"}}},{\"category\":\"Sm\",\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"quadratische VereinigungTasse\"}}},{\"category\":\"Sm\",\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Plus\"}}},{\"category\":\"Sm\",\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Minus\"}}},{\"category\":\"Sm\",\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Division\"}}},{\"category\":\"Sm\",\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"eingekreister Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"eingekreister Ringoperator\"}}},{\"category\":\"Sm\",\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"eingekreister Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Gleich\"}}},{\"category\":\"Sm\",\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"eingekreister Gedankenstrich\"}}},{\"category\":\"Sm\",\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Plus\"}}},{\"category\":\"Sm\",\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"eingerahmtes Minus\"}}},{\"category\":\"Sm\",\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"eingerahmte Multiplikation\"}}},{\"category\":\"Sm\",\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"eingerahmter Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"ergibt\"}}},{\"category\":\"Sm\",\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"ergibt nicht\"}}},{\"category\":\"Sm\",\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"senkrecht von\"}}},{\"category\":\"Sm\",\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"senkrecht auf\"}}},{\"category\":\"Sm\",\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"Behauptung\"}}},{\"category\":\"Sm\",\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"Model\"}}},{\"category\":\"Sm\",\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"wahr\"}}},{\"category\":\"Sm\",\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"dreifache vertikale Leiste mit rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doppelte vertikale Leiste mit doppeltem rechtem Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"beweist nicht\"}}},{\"category\":\"Sm\",\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"nicht wahr\"}}},{\"category\":\"Sm\",\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"nicht erzwingen\"}}},{\"category\":\"Sm\",\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"negierte doppelte vertikale Leiste mit doppeltem rechten Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"vorangehend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"nachfolgend in Relation\"}}},{\"category\":\"Sm\",\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"enthält normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"Original von\"}}},{\"category\":\"Sm\",\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"Bild von\"}}},{\"category\":\"Sm\",\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"Mehrfachzuordnung\"}}},{\"category\":\"Sm\",\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"hermitesch konjugierte Matrix\"}}},{\"category\":\"Sm\",\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"einschalten\"}}},{\"category\":\"Sm\",\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"Ausschließendes Oder\"}}},{\"category\":\"Sm\",\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"Nand verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"Nor verknüpft mit\"}}},{\"category\":\"Sm\",\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"rechtwinkliges Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"N-stufiges logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"N-stufiger Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"N-stufige Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"Rautenoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"mal\",\"alternative\":\"Multiplikationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"Sternoperator\"}}},{\"category\":\"Sm\",\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"Divisionsanzahl\"}}},{\"category\":\"Sm\",\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"Schleife\"}}},{\"category\":\"Sm\",\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"linkes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"rechtes halbdirektes Produkt\"}}},{\"category\":\"Sm\",\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"umgekehrte Tilde gleich\"}}},{\"category\":\"Sm\",\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Oder\"}}},{\"category\":\"Sm\",\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"geschweiftes logisches Und\"}}},{\"category\":\"Sm\",\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doppelte Teilmenge\"}}},{\"category\":\"Sm\",\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doppelte Obermenge\"}}},{\"category\":\"Sm\",\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doppelter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doppelte Vereinigung\"}}},{\"category\":\"Sm\",\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"echter Durchschnitt\"}}},{\"category\":\"Sm\",\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"gleich und parallel\"}}},{\"category\":\"Sm\",\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"kleiner als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"größer als mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"sehr viel kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"sehr viel größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"kleiner als, gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"größer als, gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"gleich oder vorangehend\"}}},{\"category\":\"Sm\",\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"gleich oder nachfolgend\"}}},{\"category\":\"Sm\",\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"weder vorangehend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"weder nachfolgend oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Bild oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"kein quadratisches Original oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"quadratisches Bild oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"quadratisches Original oder nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"kleiner als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"größer als, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"vorangehend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"nachfolgend, aber nicht äquivalent\"}}},{\"category\":\"Sm\",\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"nicht normale Untergruppe von\"}}},{\"category\":\"Sm\",\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"enthält keine normale Untergruppe\"}}},{\"category\":\"Sm\",\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"keine normale Untergruppe von oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"enthält nicht als normale Untergruppe oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"Vertikale Ellipsis\"}}},{\"category\":\"Sm\",\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"Zentrierte horizontale Ellipse\"}}},{\"category\":\"Sm\",\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse unten links nach oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"Diagonale Ellipse, oben links nach unten rechts\"}}},{\"category\":\"Sm\",\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"Element mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"Element mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"Element mit Überstrich\"}}},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"kleines Element mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"Element mit Unterstrich\"}}},{\"category\":\"Sm\",\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"Element mit 2 horizontalen Strichen\"}}},{\"category\":\"Sm\",\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit langem horizontalen Strich\"}}},{\"category\":\"Sm\",\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"category\":\"Sm\",\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit vertikalem Strich am Ende des horizontalen Strichs\"}}},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"umgekehrtes Elementzeichen mit Überstrich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"kleines umgekehrtes Elementzeichen mit Überstrich\"}}},{\"category\":\"Sm\",\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"Z-Notation-Bag-Mitgliedschaft\"}}},{\"category\":\"So\",\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"Durchmesser-Zeichen\"}}},{\"category\":\"So\",\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"Haus\"}}},{\"category\":\"So\",\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"Projektiv\"}}},{\"category\":\"So\",\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"Perspektive\"}}},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"Schlangenlinie\"}}},{\"category\":\"So\",\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"Umgekehrtes Nichtzeichen\"}}},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"Quadratische Raute\"}}},{\"category\":\"So\",\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"Bogen\"}}},{\"category\":\"So\",\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"Segment\"}}},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"Sektor\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"Schweres Pluszeichen\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"Schweres Minuszeichen\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"Heavy Division Sign\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"Curly Loop\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"Doppelte geschweifte Schleife\"}}},{\"category\":\"Sm\",\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"Weißes Dreieck, das kleines weißes Dreieck enthält\"}}},{\"category\":\"Sm\",\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"Aufrecht\"}}},{\"category\":\"Sm\",\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"Subset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"Superset öffnen\"}}},{\"category\":\"Sm\",\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"Oder mit innerem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Vorhergehender Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"Superset Vorgänger Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"Mathematische aufsteigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"Lange Abteilung\"}}},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"Mathematische fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"quadratisches und\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"quadratisches oder\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"Weißer Diamant mit zentriertem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"Und mit Dot\"}}},{\"category\":\"Sm\",\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach oben\"}}},{\"category\":\"Sm\",\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"Untere rechte Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"Obere linke Ecke mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"Linke äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"rechter äußerer Join\"}}},{\"category\":\"Sm\",\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"Volle äußere Verbindung\"}}},{\"category\":\"Sm\",\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"Große Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"Großes Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"Linkes und rechtes doppeltes Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"Linker und rechter Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"Linke Multimap\"}}},{\"category\":\"Sm\",\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"Long Right Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"Langer linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"Up Tack mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"Raute durch horizontale Regel geteilt\"}}},{\"category\":\"Sm\",\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant\"}}},{\"category\":\"Sm\",\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"Weißer konkavseitiger Diamant mit Zecke nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Zecke nach links\"}}},{\"category\":\"Sm\",\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"Weißes Quadrat mit Tick nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"Steigende diagonale Kreuzung fallende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"Fallende diagonale Kreuzung steigende Diagonale\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Balkenbegrenzer\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"Z Notationspunkt\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"Z Notationstyp Doppelpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"Gepunkteter Zaun\"}}},{\"category\":\"Sm\",\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"Vertikale Zickzacklinie\"}}},{\"category\":\"Sm\",\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter leerer Satz\"}}},{\"category\":\"Sm\",\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"Leeres Set mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"Kreis mit horizontaler Leiste\"}}},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"circled vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"eingekreister umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Senkrecht\"}}},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"Kreis geteilt durch horizontale Leiste und obere Hälfte geteilt durch vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"Kreis mit überlagertem X\"}}},{\"category\":\"Sm\",\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"eingekreistes, gegen den Uhrzeigersinn gedrehtes Divisionszeichen\"}}},{\"category\":\"Sm\",\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"eingekreiste weiße Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"eingekreiste Kugel\"}}},{\"category\":\"Sm\",\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"eingekreist weniger als\"}}},{\"category\":\"Sm\",\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"eingekreist größer als\"}}},{\"category\":\"Sm\",\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"Kreis mit kleinem Kreis nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"Kreis mit zwei horizontalen Strichen nach rechts\"}}},{\"category\":\"Sm\",\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links unten nach rechts oben\"}}},{\"category\":\"Sm\",\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit Diagonale links oben nach rechts unten\"}}},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"Quadrat Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"Quadratischer kleiner Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"Doppelquadrat\"}}},{\"category\":\"Sm\",\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"Zwei verbundene Quadrate\"}}},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"S im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"Dreieck mit Serifen unten\"}}},{\"category\":\"Sm\",\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"Rechtes Dreieck über linkem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"Linkes Dreieck neben vertikaler Leiste\"}}},{\"category\":\"Sm\",\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"Vertikaler Balken neben dem rechten Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"Fliege mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"Fliege mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"Schwarze Fliege\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"Zeiten mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"Mal mit rechter Hälfte Schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"Weiße Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"Schwarze Sanduhr\"}}},{\"category\":\"Sm\",\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"Unvollständige Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"Krawatte über Unendlichkeit\"}}},{\"category\":\"Sm\",\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"Unendlichkeit mit vertikaler Leiste negiert\"}}},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"Doppelter Multimap\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"Quadrat mit konturierter Kontur\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"Erhöht als\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"Produkt mischen\"}}},{\"category\":\"Sm\",\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und geneigte Parallele\"}}},{\"category\":\"Sm\",\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen und schräge Parallele zu Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"Identisch und schräg parallel\"}}},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"Gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"Thermodynamisch\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"Abwärtszeigendes Dreieck mit linker Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"Abwärtsdreieck mit rechter Hälfte schwarz\"}}},{\"category\":\"Sm\",\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"Schwarze Raute\"}}},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrtes weißes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"Fehlerfreies schwarzes Quadrat\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Diamant\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"Error-Barred Black Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter weißer Kreis\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"Fehlergesperrter schwarzer Kreis\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich Operator\"}}},{\"category\":\"Sm\",\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"Großer Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"Großer umgekehrter Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"Doppel plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"Triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"Winzig\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"Miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Punkt-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled Plus Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"N-Ary Circled-Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"N-Ary Union-Operator mit Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square-Kreuzungsoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"N-Ary Square Union-Betreiber\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"Zwei logische und Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"Zwei logisch oder Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"N-Ary Times-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"Modulo Zwei Summe\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"Summation mit Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"Vierfach-Integral-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"Finite Part Integral\"}}},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"Integral mit Doppelhub\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"Integraler Durchschnitt mit Schrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"Zirkulationsfunktion\"}}},{\"category\":\"Sm\",\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"Integration gegen den Uhrzeigersinn\"}}},{\"category\":\"Sm\",\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit rechteckigem Pfad um die Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"Linienintegration mit halbkreisförmigem Pfad um den Pol\"}}},{\"category\":\"Sm\",\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"Leitungsintegration ohne Pole\"}}},{\"category\":\"Sm\",\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"Integral um einen Punktoperator\"}}},{\"category\":\"Sm\",\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"Quaternion Integral Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"Integriert mit Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"Integral mit der Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"Integral mit Union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"Integral mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"Integral mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"Beitreten\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"Großes linkes Dreieckbediener\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Zusammensetzung\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Piping\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"Z-Notationsschema-Projektion\"}}},{\"category\":\"Sm\",\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit kleinem Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Zirkumflex-Akzent oben\"}}},{\"category\":\"Sm\",\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde oben\"}}},{\"category\":\"Sm\",\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Tilde unter\"}}},{\"category\":\"Sm\",\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit Index Zwei\"}}},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen mit schwarzem Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Komma oben\"}}},{\"category\":\"Sm\",\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit fallenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen Im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"Vektor- oder Kreuzprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen mit Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"Semidirektprodukt mit geschlossenem Boden\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im linken Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im rechten Halbkreis\"}}},{\"category\":\"Sm\",\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"eingekreistes Multiplikationszeichen mit Circumflex-Akzent\"}}},{\"category\":\"Sm\",\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im doppelten Kreis\"}}},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"circled division sign\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"Minuszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"Multiplikationszeichen im Dreieck\"}}},{\"category\":\"Sm\",\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"Innenprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"Produkt für den rechten Innenraum\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"Z-Notation relationaler Aufbau\"}}},{\"category\":\"Sm\",\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"Verschmelzung oder Koprodukt\"}}},{\"category\":\"Sm\",\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"Union mit Minuszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"Union mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"Kreuzung mit Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"Überschneidung mit logischem und\"}}},{\"category\":\"Sm\",\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"Vereinigung mit logischem Or\"}}},{\"category\":\"Sm\",\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über dem Schnittpunkt\"}}},{\"category\":\"Sm\",\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt über Union\"}}},{\"category\":\"Sm\",\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"Vereinigung über Stab über Kreuzung\"}}},{\"category\":\"Sm\",\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"Schnittpunkt oberhalb der Stange oberhalb der Union\"}}},{\"category\":\"Sm\",\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"Union daneben und mit Union verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"Kreuzung neben und mit Kreuzung verbunden\"}}},{\"category\":\"Sm\",\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Vereinigung mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Schnittpunkt mit Serifen\"}}},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"Doppelter Quadratschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"Double Square Union\"}}},{\"category\":\"Sm\",\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"Closed Union mit Serifen und Smash-Produkten\"}}},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Punkt oben\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double logical or\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"Zwei durchschneiden logisch und\"}}},{\"category\":\"Sm\",\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"Zwei sich überschneidende logische Oder\"}}},{\"category\":\"Sm\",\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß oder\"}}},{\"category\":\"Sm\",\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"Abfallend groß und\"}}},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"Logisch oder Überlappend Logisch Und\"}}},{\"category\":\"Sm\",\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Middle Stem\"}}},{\"category\":\"Sm\",\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Horizontalstrich\"}}},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"Logisch und mit Double Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"kleines Vee mit Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit Double Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"Logisch oder mit doppelter Unterleiste\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"Z-Notation Domain Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"Z Notationsbereich Antirestriction\"}}},{\"category\":\"Sm\",\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit Punkt unten\"}}},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"Identisch mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit doppeltem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"Dreifacher Horizontalbalken mit dreifachem vertikalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"Tilde-Operator mit steigenden Punkten\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"Ähnlich Minus Ähnlich\"}}},{\"category\":\"Sm\",\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"Kongruent mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Entspricht Asterisk\"}}},{\"category\":\"Sm\",\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"Fast gleichwertig mit dem Circumflex Accent\"}}},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"Ungefähr gleich oder gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Pluszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"Pluszeichen über Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen über Tilde-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"Doppelpunkt gleich\"}}},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"double equal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"Drei aufeinander folgende Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"Gleichheitszeichen mit zwei Punkten oben und zwei Punkten unten\"}}},{\"category\":\"Sm\",\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"Gleichwertig mit vier Punkten oben\"}}},{\"category\":\"Sm\",\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Circle Inside\"}}},{\"category\":\"Sm\",\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Kreis nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"Weniger als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"Größer als mit Fragezeichen oben\"}}},{\"category\":\"Sm\",\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt nach innen\"}}},{\"category\":\"Sm\",\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder schräg gleich mit Punkt oben rechts\"}}},{\"category\":\"Sm\",\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"Größer als oder schräg gleich mit Punkt oben links\"}}},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"Weniger als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"Größer als oder ungefähr\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht gleich\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"Kleiner als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"Größer als aber nicht ungefähr gleich\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"Weniger als aber größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"Größer als aber weniger als unten und größer als oben\"}}},{\"category\":\"Sm\",\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"Größer als oben ähnlich oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben ähnlich oben größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"Größer als oben Ähnlich oben\"}}},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"less than greater than or equal to\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"greater than less than or equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"Weniger als oben schräg gleich oben Größer als oben schräg gleich\"}}},{\"category\":\"Sm\",\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"Größer als oben schräg gleich oben kleiner als oben schräg gleich groß\"}}},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder kleiner als mit innenliegendem Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"Schräg gleich oder größer als mit Punkt nach innen\"}}},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"Gleich oder kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"Gleich oder größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg gleich oder größer als\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"Äquivalent oder kleiner als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oder größer als\"}}},{\"category\":\"Sm\",\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben Weniger als Gleiches Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"Ähnlich oben größer als oben Gleichheitszeichen\"}}},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes kleiner als\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"Verschachteltes größer als\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"Doppelt verschachtelt, weniger als mit Unterleiste\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"less than greater than overlay\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"Größer als weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"Weniger als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"Größer als durch Kurve geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"Weniger als dann geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"Größer als geschlossen durch Kurve oberhalb der gleichen Neigung\"}}},{\"category\":\"Sm\",\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"kleiner als\"}}},{\"category\":\"Sm\",\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"Größer als\"}}},{\"category\":\"Sm\",\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"kleiner als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"Größer als oder gleich\"}}},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"difference between (variant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"Stellt über dem einzeiligen Gleichheitszeichen ein\"}}},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"Erfolg über dem einzeiligen Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"Vorangehende Single-Line ist nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"Erfolg über Single-Line nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes Gleichheitszeichen\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"Erfolgreich über Gleichheitszeichen\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precedes but not equal to\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"succeeds but not equal to\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"Vorangegangenes fast gleich zu\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"Erreicht über fast gleich viel\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"Vorangegangene nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"Erreicht oben nicht annähernd gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"Doppelter Vorgänger\"}}},{\"category\":\"Sm\",\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"Doppelter Erfolg\"}}},{\"category\":\"Sm\",\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"Superset mit Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"Superset mit Pluszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"Teilmenge mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"Superset mit Multiplikationszeichen unten\"}}},{\"category\":\"Sm\",\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"Teilmenge oder gleich mit dem obigen Punkt\"}}},{\"category\":\"Sm\",\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"Superset von oder gleich mit Punkt oben\"}}},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"Teilmenge des obigen Gleichheitszeichens\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"Superset des obigen Gleichheitszeichens\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"approximate subset of\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"approximate superset of\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben fast gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"Superset von oben fast gleichwertig\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"Teilmenge von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"Superset von oben nicht gleich\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"Platz links Feldbetreiber geöffnet\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"Rechteckige Box mit offener Box\"}}},{\"category\":\"Sm\",\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"Geschlossener Teilsatz\"}}},{\"category\":\"Sm\",\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen\"}}},{\"category\":\"Sm\",\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"Geschlossene Untermenge oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"Superset geschlossen oder gleich\"}}},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"subset over superset\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"superset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"subset over subset\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"superset over superset\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"Superset neben dem Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"Superset Neben und Joined von Dash mit Subset\"}}},{\"category\":\"Sm\",\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"Element der Öffnung nach unten\"}}},{\"category\":\"Sm\",\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"Heugabel mit T-Stück\"}}},{\"category\":\"Sm\",\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"Transversalschnitt\"}}},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"Gabelung\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"Nicht Gabeln\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"Kurzer Linker Tack\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"Kurzer Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"Rechtwinklig zu S\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"Vertikales Dreifach-Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken linkes Drehkreuz\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"Doppelter vertikaler Balken Doppelter linker Drehkreuz\"}}},{\"category\":\"Sm\",\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"Long Dash von Left Member von Double Vertical\"}}},{\"category\":\"Sm\",\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"Short Down Tack mit Overbar\"}}},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"perpendicular over bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"Short Up Tack Über Short Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"Double Down Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"Verdoppeln Sie Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"Doppelstrich nicht unterschreiben\"}}},{\"category\":\"Sm\",\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Doppelstrich nicht unterschrieben\"}}},{\"category\":\"Sm\",\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"Teilt sich nicht mit umgekehrten Negationsschrägstrich\"}}},{\"category\":\"Sm\",\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis oben\"}}},{\"category\":\"Sm\",\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"Vertikale Linie mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"Down Tack mit Kreis unten\"}}},{\"category\":\"Sm\",\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"Parallel zum horizontalen Anschlag\"}}},{\"category\":\"Sm\",\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"Parallel zu Tilde Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"Dreifache vertikale Balken-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"Dreifacher vertikaler Strich mit horizontalem Hub\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"Triple Colon Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachtelt weniger als\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"Dreifach verschachteltes Größeres als\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"Doppellinie schräg, weniger als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"Doppelte Linie schräg größer als oder gleich\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"Dreifache Schrägstrich-Binärbeziehung\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"Großer dreifacher vertikaler Barbediener\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"Doppelter Schrägstrich-Operator\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"Weiße vertikale Leiste\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"N-Ary White Vertical Bar\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"Wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Komma\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikales Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikale horizontale Ellipsen\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für vertikalen Zwei-Punkt-Leader\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"Präsentationsformular für Vertical Wavy Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"Sesampunkt\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"Weißer Sesam Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"Centreline Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Überlänge\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"Doppelte Wellenlinie\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"Gestrichelte Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"Mittellinie Low Line\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"Wellenförmige Low Line\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"kleines Komma\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"kleiner Punkt\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"kleines Semikolon\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"kleiner Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"kleines Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"kleines Ausrufezeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"kleiner Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"kleines Nummernzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"kleines kaufmännisches\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"kleines Sternchen\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"kleines Pluszeichen\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"kleiner Bindestrich-Minus\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"kleines weniger als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"kleines Größeres als Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"kleines Gleichheitszeichen\"}}},{\"category\":\"Po\",\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"kleiner umgekehrter Schrägstrich\"}}},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"kleines Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"kleines Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"kleine kommerzielle bei\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"vollbreites Ausrufezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"vollbreites Anführungszeichen\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"vollbreites Nummernzeichen\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"vollbreites Dollarzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"vollbreites Prozentzeichen\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"vollbreites kaufmännisches und\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"vollbreites Apostroph\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Stern\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Komma\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Minus\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Punkt\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"Schrägstrich mit voller Breite\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Doppelpunkt\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"vollbreites Semikolon\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"Weniger als das gesamte Zeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"vollbreites Gleichspannungszeichen\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Mehr als Zeichen\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Fragezeichen\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"Fullwidth Commercial at\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"Umgekehrter Schrägstrich mit voller Breite\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"Circumflex-Akzent mit voller Breite\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"vollbreites Low Line\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Gravis Akzent\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"vollbreites Vertikale Linie\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"vollbreite Tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"vollbreites Cent-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"vollbreites Pfundzeichen\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"vollbreite nicht Symbol\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"vollbreiter Überstrich\",\"alternative\":\"vollbreites Makron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"vollbreite gestrichelte Linie\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"vollbreites Yen-Zeichen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"vollbreites Won-Zeichen\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"Halbbreite bildet leicht vertikal\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"Schwarzes Quadrat mit halber Breite\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"Weißer Kreis mit halber Breite\"}}}]\n,\n\"de/symbols/math_whitespace.js\": \n[{\"locale\":\"de\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"Leerzeichen\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"weicher Trennstrich\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"En Quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"Em Quad\"}}},{\"category\":\"Zs\",\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"En Space\"}}},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"Raum für drei Per-Em\"}}},{\"category\":\"Zs\",\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"Raum für vier pro Em\"}}},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"Six-Per-Em Space\"}}},{\"category\":\"Zs\",\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"Raum darstellen\"}}},{\"category\":\"Zs\",\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"Interpunktionsraum\"}}},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"Nullbreite ohne Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"Zero Width Joiner\"}}},{\"category\":\"Cf\",\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"Markierung von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"Markierung von rechts nach links\"}}},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"Trennzeichen\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"Absatztrennzeichen\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"Einbetten von links nach rechts\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"Einbetten von rechts nach links\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"Pop Richtungsformatierung\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"Von links nach rechts überschreiben\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"Von rechts nach links überschreiben\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"Schmaler No-Break-Bereich\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Cf\",\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"Word Joiner\"}}},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"von\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"Unsichtbares Plus\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"Symmetrisches Austauschen verhindern\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"Aktivieren Sie das symmetrische Austauschen\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"Nationale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"Nominale Ziffernformen\"}}},{\"category\":\"Cf\",\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"Nullbreite Leerzeichen\"}}},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"Interlinearer Anmerkungsanker\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"Separator für interlineare Anmerkungen\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"Interlinear Annotation Terminator\"}}}]\n,\n\"de/symbols/other_stars.js\": \n[{\"locale\":\"de\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"Dezimalexponentensymbol\"}}},{\"category\":\"So\",\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"weißer Stern\"}}},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"Mittlerer weißer Kreis\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"Mittlerer schwarzer Kreis\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"Weißes schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"Häkchen\"}}},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"Schweres Häkchen\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"Schwere Multiplikation X\"}}},{\"category\":\"So\",\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stimmzettel X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"Center Cross öffnen\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"Schweres offenes Mittelkreuz\"}}},{\"category\":\"So\",\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"Malteserkreuz\"}}},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Davidstern\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"Vier Teardrop-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"Vier Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"Schwere Vier-Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"Vier Club-Spoked Asterisk\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Schwarzer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Weißer vierzackiger Stern\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"Funkelt\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Stress umrissener weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Eingekreister weißer Stern\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"Open Center Black Star\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Center White Star\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Schwarzer Stern umrissen\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Schwerer umrissener schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Sternrad Stern\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Stern\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"Schwerer Stern\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"Öffnen Sie Center Asterisk\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"Acht Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Achtzackiger Sternradstern\"}}},{\"category\":\"So\",\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"Sechszackiger schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Zwölf schwarzer Stern\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"Sechzehn Spitzen Sternchen\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"Open Center Teardrop-Spoked Sternchen\"}}},{\"category\":\"So\",\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"Schwerer Tropfen-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"Sechs Petalled Schwarzweiss-Florette\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"Schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"Weiße Florette\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"Acht Petalled umrissene schwarze Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Eingekreistes offenes Zentrum Achtstern\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"Schweres, tropfenbesetztes Nadelrad-Sternchen\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"Feste Trifoliate-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"Schwere Chevron-Schneeflocke\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Funkeln\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"Schweres Funkeln\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"Ballon-Speichen-Sternchen\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"Schwere Acht Teardrop-Spoked Propeller Sternchen\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"Cross Mark\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"Beschatteter weißer Kreis\"}}}]\n,\n\"de/units/energy.js\": \n[{\"locale\":\"de\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"Watt\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowatt\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliwatt\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kilowattstunde\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"Joule\",\"plural\":\"Joules\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"Volt\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Mikroohm\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Milliohm\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"Ohm\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Kiloohm\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Megaohm\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"Gigaohm\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"de/units/length.js\": \n[{\"locale\":\"de\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"Millimeter\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"Zentimeter\"}},\"category\":\"length\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"Meter\"}},\"category\":\"length\",\"names\":[\"m\"]},{\"category\":\"length\",\"mappings\":{\"default\":{\"default\":\"Kilometer\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"Fuß\"}},\"category\":\"length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"Zoll\"}},\"category\":\"length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"plural\":\"Meilen\",\"default\":\"Meile\"}},\"category\":\"length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"plural\":\"Yards\",\"default\":\"Yard\"}},\"category\":\"length\",\"names\":[\"yd\",\"yd.\"]},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"nautische Meile\"}},\"category\":\"length\"}]\n,\n\"de/units/memory.js\": \n[{\"locale\":\"de\"},{\"key\":\"b\",\"mappings\":{\"default\":{\"plural\":\"Bits\",\"default\":\"Bit\"}},\"category\":\"memory\",\"names\":[\"b\"]},{\"key\":\"B\",\"mappings\":{\"default\":{\"plural\":\"Bytes\",\"default\":\"Byte\"}},\"category\":\"memory\",\"names\":[\"B\"]},{\"key\":\"KB\",\"mappings\":{\"default\":{\"plural\":\"Kilobytes\",\"default\":\"Kilobyte\"}},\"category\":\"memory\",\"names\":[\"KB\"]},{\"key\":\"MB\",\"mappings\":{\"default\":{\"plural\":\"Megabytes\",\"default\":\"Megabyte\"}},\"category\":\"memory\",\"names\":[\"MB\"]},{\"key\":\"GB\",\"mappings\":{\"default\":{\"plural\":\"Gigabytes\",\"default\":\"Gigabyte\"}},\"category\":\"memory\",\"names\":[\"GB\"]},{\"key\":\"TB\",\"mappings\":{\"default\":{\"plural\":\"Terabytes\",\"default\":\"Terabyte\"}},\"category\":\"memory\",\"names\":[\"TB\"]}]\n,\n\"de/units/other.js\": \n[{\"locale\":\"de\"},{\"key\":\"ha\",\"mappings\":{\"default\":{\"default\":\"Hektar\"}},\"category\":\"other\",\"names\":[\"ha\"]},{\"category\":\"other\",\"mappings\":{\"default\":{\"default\":\"Dutzend\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]}]\n,\n\"de/units/speed.js\": \n[{\"locale\":\"de\"},{\"category\":\"speed\",\"mappings\":{\"default\":{\"default\":\"Knoten\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"Meilen pro Stunde\",\"singular\":\"Meile pro Stunde\"}},\"category\":\"speed\",\"names\":[\"mph\"]},{\"key\":\"kmh\",\"mappings\":{\"default\":{\"default\":\"Kilometer pro Stunde\"}},\"category\":\"speed\",\"names\":[\"kmh\"]},{\"key\":\"rpm\",\"mappings\":{\"default\":{\"default\":\"Umdrehungen pro Minute\",\"singular\":\"Umdrehung pro Minute\"}},\"category\":\"speed\",\"names\":[\"rpm\"]}]\n,\n\"de/units/temperature.js\": \n[{\"locale\":\"de\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"Farad\"}},\"category\":\"temperature\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"Celsius\"}},\"category\":\"temperature\",\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\",\"names\":[\"K\",\"°K\"]}]\n,\n\"de/units/time.js\": \n[{\"locale\":\"de\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Nanosekunde\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Microsekunde\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Millisekunde\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Sekunde\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Minute\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"Stunde\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"de/units/volume.js\": \n[{\"locale\":\"de\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubik\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikinch\"}},\"key\":\"cu inch\",\"names\":[\"cu in\",\"cu. in.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikfuß\"}},\"key\":\"cu ft\",\"names\":[\"cu ft\",\"cu. ft.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikyard\"}},\"key\":\"cu yd\",\"names\":[\"cu yd\",\"cu. yd.\"]},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"Fass\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Fluid ounce\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\",\"fl oz\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"plural\":\"Gallonen\",\"default\":\"Gallone\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"Pint\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"plural\":\"Quarts\",\"default\":\"Quart\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"Esslöffel\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\",\"Tbsp\",\"Tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"Teelöffel\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kubikzentimeter\"}},\"key\":\"cc\",\"names\":[\"cc\",\"ccm\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Kiloliter\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Liter\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"Milliliter\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"de/units/weight.js\": \n[{\"locale\":\"de\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"Pfund\"}},\"category\":\"weight\",\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"plural\":\"Unzen\",\"default\":\"Unze\"}},\"category\":\"weight\",\"names\":[\"oz\",\"oz.\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Long ton\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"Gramm\"}},\"category\":\"weight\",\"names\":[\"g\",\"gr\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Kilogramm\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Mikrogramm\"}},\"key\":\"mcg\",\"names\":[\"mcg\",\"µg\"]},{\"category\":\"weight\",\"mappings\":{\"default\":{\"default\":\"Milligramm\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"plural\":\"Tonnen\",\"default\":\"Tonne\"}},\"category\":\"weight\",\"names\":[\"t\",\"T\"]}]\n,\n\"es/functions/algebra.js\": \n[{\"locale\":\"es\"},{\"key\":\"deg\",\"names\":[\"deg\"],\"mappings\":{\"default\":{\"default\":\"grados\"}},\"category\":\"Algebra\"},{\"key\":\"det\",\"names\":[\"det\"],\"mappings\":{\"default\":{\"default\":\"determinante\"}},\"category\":\"Algebra\"},{\"key\":\"dim\",\"names\":[\"dim\"],\"mappings\":{\"default\":{\"default\":\"dimensión\"}},\"category\":\"Algebra\"},{\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"],\"mappings\":{\"default\":{\"default\":\"homomorfismo\"}},\"category\":\"Algebra\"},{\"key\":\"ker\",\"names\":[\"ker\"],\"mappings\":{\"default\":{\"default\":\"kernel\"}},\"category\":\"Algebra\"},{\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"],\"mappings\":{\"default\":{\"default\":\"traza\"}},\"category\":\"Algebra\"}]\n,\n\"es/functions/elementary.js\": \n[{\"locale\":\"es\"},{\"key\":\"log\",\"names\":[\"log\"],\"mappings\":{\"default\":{\"default\":\"logaritmo\"}},\"category\":\"Logarithm\"},{\"key\":\"ln\",\"names\":[\"ln\"],\"mappings\":{\"default\":{\"default\":\"logaritmo neperiano\"}},\"category\":\"Logarithm\"},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logaritmo base 10\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponente\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"mcd\",\"MCD\"],\"mappings\":{\"default\":{\"default\":\"MCD\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"mcm\",\"MCM\"],\"mappings\":{\"default\":{\"default\":\"mcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argumento\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"parte imaginaria\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"residuo\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"extremo inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"names\":[\"lim\"],\"mappings\":{\"default\":{\"default\":\"límite\"}},\"category\":\"Limits\"},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"máximo\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"mínimo\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"superior\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"límite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"límite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"límite directo\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"límite inverso\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"módulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilidad\"}},\"category\":\"Probability\"}]\n,\n\"es/functions/hyperbolic.js\": \n[{\"locale\":\"es\"},{\"key\":\"cosh\",\"names\":[\"cosh\"],\"mappings\":{\"default\":{\"default\":\"coseno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"coth\",\"names\":[\"coth\"],\"mappings\":{\"default\":{\"default\":\"cotangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"csch\",\"names\":[\"csch\"],\"mappings\":{\"default\":{\"default\":\"cosecante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sech\",\"names\":[\"sech\"],\"mappings\":{\"default\":{\"default\":\"secante hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"sinh\",\"names\":[\"sinh\"],\"mappings\":{\"default\":{\"default\":\"seno hiperbólico\"}},\"category\":\"Hyperbolic\"},{\"key\":\"tanh\",\"names\":[\"tanh\"],\"mappings\":{\"default\":{\"default\":\"tangente hiperbólica\"}},\"category\":\"Hyperbolic\"},{\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"],\"mappings\":{\"default\":{\"default\":\"area coseno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"],\"mappings\":{\"default\":{\"default\":\"area cotangente hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"],\"mappings\":{\"default\":{\"default\":\"area cosecante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"],\"mappings\":{\"default\":{\"default\":\"area secante hiperbólica\"}},\"category\":\"Area\"},{\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"],\"mappings\":{\"default\":{\"default\":\"area seno hiperbólico\"}},\"category\":\"Area\"},{\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"],\"mappings\":{\"default\":{\"default\":\"area tangente hiperbólica\"}},\"category\":\"Area\"}]\n,\n\"es/functions/trigonometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"],\"mappings\":{\"default\":{\"default\":\"coseno\"}},\"category\":\"Trigonometric\"},{\"key\":\"cot\",\"names\":[\"cot\"],\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"csc\",\"names\":[\"csc\"],\"mappings\":{\"default\":{\"default\":\"cosecante\"}},\"category\":\"Trigonometric\"},{\"key\":\"sec\",\"names\":[\"sec\"],\"mappings\":{\"default\":{\"default\":\"secant\"}},\"category\":\"Trigonometric\"},{\"key\":\"sin\",\"names\":[\"sin\",\"sine\",\"sen\"],\"mappings\":{\"default\":{\"default\":\"seno\"}},\"category\":\"Trigonometric\"},{\"key\":\"tan\",\"names\":[\"tan\"],\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\"},{\"key\":\"arccos\",\"names\":[\"arccos\"],\"mappings\":{\"default\":{\"default\":\"arco coseno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccot\",\"names\":[\"arccot\"],\"mappings\":{\"default\":{\"default\":\"arco cotangente\"}},\"category\":\"Cyclometric\"},{\"key\":\"arccsc\",\"names\":[\"arccsc\"],\"mappings\":{\"default\":{\"default\":\"arco cosecante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsec\",\"names\":[\"arcsec\"],\"mappings\":{\"default\":{\"default\":\"arco secante\"}},\"category\":\"Cyclometric\"},{\"key\":\"arcsin\",\"names\":[\"arcsin\"],\"mappings\":{\"default\":{\"default\":\"arco seno\"}},\"category\":\"Cyclometric\"},{\"key\":\"arctan\",\"names\":[\"arctan\"],\"mappings\":{\"default\":{\"default\":\"arco tangente\"}},\"category\":\"Cyclometric\"}]\n,\n\"es/symbols/digits_rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cuadrado\"},\"mathspeak\":{\"default\":\"al cuadrado\"},\"clearspeak\":{\"default\":\"al cuadrado\"}},\"key\":\"00B2\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"al cubo\"},\"mathspeak\":{\"default\":\"al cubo\"},\"clearspeak\":{\"default\":\"al cubo\"}},\"key\":\"00B3\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un cuarto\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"un medio\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"tres cuartos\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Séptimo\"}}},{\"category\":\"No\",\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Noveno\"}}},{\"category\":\"No\",\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Décimo\"}}},{\"category\":\"No\",\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Tercero\"}}},{\"category\":\"No\",\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos tercios\"}}},{\"category\":\"No\",\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction One Fifth\"}}},{\"category\":\"No\",\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar dos quintos\"}}},{\"category\":\"No\",\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres quintos\"}}},{\"category\":\"No\",\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cuatro quintos\"}}},{\"category\":\"No\",\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Sexto\"}}},{\"category\":\"No\",\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"Vulgar fracción cinco sextos\"}}},{\"category\":\"No\",\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fracción Un Octavo\"}}},{\"category\":\"No\",\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar tres octavos\"}}},{\"category\":\"No\",\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar cinco octavos\"}}},{\"category\":\"No\",\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"Fracción vulgar siete octavos\"}}},{\"category\":\"No\",\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"Numerador de fracciones uno\"}}},{\"category\":\"No\",\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"Vulgar Fraction Zero Thirds\"}}},{\"category\":\"No\",\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"Número diez en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"Número veinte en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"Número circundado treinta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"Número circundado Cuarenta en cuadrado negro\"}}},{\"category\":\"No\",\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"Círculo número cincuenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"Círculo número sesenta en la plaza negra\"}}},{\"category\":\"No\",\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"Número setenta en un círculo en la Plaza Negra\"}}},{\"category\":\"No\",\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"Círculo número ochenta en cuadrado negro\"}}}]\n,\n\"es/symbols/greek-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"cap Delta\"}}}]\n,\n\"es/symbols/greek-scripts.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"pequeño mayúscula gamma\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula lamda\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Pi\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Rho\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"pequeña mayúscula Psi\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"modificador de pequeño phi\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"subscripción pequeña beta\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"subíndice pequeña gamma\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"subíndice rho\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"subíndice phi\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"subscripción chi\"}}}]\n,\n\"es/symbols/greek-symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"símbolo beta\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"símbolo kai griego\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"épsilon invertido\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Matemática Bold Capital Digamma\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"Matemática negrita pequeño digamma\"}}}]\n,\n\"es/symbols/hebrew_letters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bet\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guímel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dálet\"}},\"category\":\"Lo\"}]\n,\n\"es/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y acento\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u con diéresis y grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a con punto arriba y macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo y macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a con ring above y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o con diéresis y macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o con Dot Above y Macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c con cedilla y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e con cedilla y breve\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i con diéresis y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o con tilde y acute\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o con tilde y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o con macrón y grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o con macrón y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo y macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s con agudo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s con carón y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo y punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u con tilde y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u con macrón y diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a con breve y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a con breve y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a con breve y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a con breve y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a con breve y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o con acento circunflejo y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o with horn and acute\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o with horn and grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o with horn and hook above\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o with horn and tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o con cuerno y punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y agudo\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u con cuerno y punto debajo\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"es\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barrada\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d con barra\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h con guión\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l con guión\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t con guión\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b con línea\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda tachada\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z con línea\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"parada glotal invertida con línea\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g con línea\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o con línea y acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"pequeña e con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"con trazo\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y con trazo\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i con trazo\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"pequeña sin puntos j con trazo y gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"parada glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"parada invertida glotal con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"de lado O con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon con trazo\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"larga s con trazo diagonal\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"pequeña s larga con trazo alto\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta convertido\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s larga con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta pequeña latina\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s larga\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b con barra encima\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"tono seis\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c con gancho\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d con barra encima\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f con gancho\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k con gancho\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l con barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n con pierna derecha larga\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o con cuerno\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"oi\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"dos tonos\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"latin letter invertido Esh bucle\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t con palatal gancho\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u con horn\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y con gancho\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ezh invertido\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ezh con cola\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"tono cinco\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz con acento\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae con macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ezh con acento\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lezh letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ezh\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Dezh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e convertido\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae con acento agudo\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina db digraph\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña Qp Digraph\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s con cola cruzada\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z con cola swash\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q con cola de gancho\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"convertida en una\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alfa minúscula latina\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"convertida en alfa\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"abierta o\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d con cola\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"invertida E\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e abierta\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"letra pequeña latina invertida E abierta con gancho\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"cerrada invertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"escritura latina de letras pequeñas G\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"latín letra pequeña gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"cuerno de carnero de letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"girada h\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"pequeña letra latina Heng con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"latín letra minúscula Iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l con cinturón\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"letra L latina pequeña con gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"girada m\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"vuelta M con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n con gancho izquierdo\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"letra minúscula omega\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"latin Small Letter Closed Omega\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"vuelta r\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"vuelta R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"vuelta R con gancho\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"R con pierna larga\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"R con cola\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"invertida R con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"S con gancho\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina esh\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña en cuclillas invertida Esh\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"Esh minúscula latina con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"vuelta t\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"T con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"Letra de letra pequeña latina U\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"Upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"V con gancho\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"convertida V\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"girada w\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"vuelta y\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"Z con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z con rizo\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"faríngea con voz fricativa\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"invertida parada glotal\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"estirada c\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"Carta Bilabial Click\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"cerrada abierta e\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"vuelta k\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q con gancho\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Dz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Dz Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Ts Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Tesh Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"Latín letra pequeña Tc Digraph con Curl\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"Letra pequeña latina Feng Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Ls Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"pequeña letra Lz Digraph\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percusion bilabial\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"de percusión bidental\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"convertida en H con anzuelo y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"vuelta ae\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"convertida abierta E\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"convertida i\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"de lado O\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"de lado abierto O\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"vuelta oe\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"mitad superior O\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"Letra latina, letra inferior, mitad inferior O\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"hacia los lados U\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"de lado diaeresizada U\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"girada hacia los lados M\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"Carta latina expresada espirante laríngeo\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"ain\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"B con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"D con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"F con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"M con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"N con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"P con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"R con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"R con anzuelo y tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"S con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"T con tilde medio\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z con tilde media\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"girada g\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"insular g\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th con tachado\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"B con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"D con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"F con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"G con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"K con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"L con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"M con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"N con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"P con gancho palatino\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"R con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"S con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"Pequeña letra latina Esh con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"V con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"X con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"Z con gancho palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"Alfa latina pequeña letra con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"D con gancho y cola\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"pequeña E con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"E Pequeña Open con Gancho Retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"E abierta invertido con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"pequeña Schwa con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"I con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"pequeña latina Open O con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"Esh de letra pequeña latina con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"U con gancho retroflex\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"pequeña Ezh con gancho retroflex\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n precedida por apóstrofe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a aguda\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a con anillo\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cedilla\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i aguda\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"eñe\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o aguda\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o con tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u diéresis\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"Y aguda\",\"defaultMP\":\"ye aguda\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y diéresis\",\"defaultMP\":\"ye diéresis\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a barra\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a con breve\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c con carón\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d con carón\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e con breve\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e con carón\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g con breve\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g con punto arriba\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g con cedilla\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i con tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i con breve\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sin punto\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l con agudo\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l con carón\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l con punto mediano\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n con carón\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o barra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o con breve\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r con agudo\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r con carón\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s con agudo\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s con carón\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t con carón\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u con tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u barra\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u con breve\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u con doble acento agudo\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u con ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y con circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z con agudo\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z con punto\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z con carón\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o con acento\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g con acento\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k con acento\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o con pecíolo\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j con acento\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g con agudo\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n con grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i con Breve invertida\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r con doble sepulcro\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u con doble tumba\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u con letras invertidas\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t con coma debajo\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h con caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"con un punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e con cedilla\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o con punto arriba\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y con Macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"s in punto j\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a con anillo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g con macrón\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h con cedilla\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h con breve debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u con diéresis debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u con tilde debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u con acento circunflejo debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w con grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w con agudo\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y con punto arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z con acento circunflejo\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h con línea debajo\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t con diéresis\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y con anillo arriba\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a con medio derecho de anillo\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e con tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y con grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y con punto debajo\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y con gancho arriba\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y con tilde\"}},\"category\":\"Ll\"}]\n,\n\"es/symbols/latin-rest.js\": \n[{\"locale\":\"es\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combinando a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"combinando e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"combinando i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"combinando o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"combinando u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"combinando c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"combinando d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"combinando h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"combinando m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"combinando r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"combinando t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"combinando v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"combinando x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"subíndice i\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"subíndice r\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"subíndice u\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"subíndice latino letra pequeña V\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"combinando r abajo\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"combinando letra minúscula en latín, aplanado, abierto arriba\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"combinando ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"combinando ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"combinando av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"combinando Letra Pequeña Latina C Cedilla\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"combinando insular d\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"combinando la eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"combinando g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula G\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"combinando k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"combinando l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula L\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula M\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"combinando n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula N\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña mayúscula R\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"combinando pequeña r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"combinando s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"combinando larga s\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"combinando z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"superíndice i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"superíndice n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"subíndice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"subíndice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"subíndice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"subíndice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"subíndice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"subíndice h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"subíndice k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"subíndice l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"subíndice m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"subíndice n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"subíndice p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"subíndice s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"subíndice t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"subíndice j\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"concha de tortuga con corchetes mayúscula S\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula C\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"círculo itálico mayúscula R\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"cruzada negativa cuadrada Mayúscula P\"}}}]\n,\n\"es/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"es\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y acento\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis y grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con diéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto arriba y macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo y macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ring above y acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con diaéresis y macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con dot above y macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con cedilla y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"mayúscula E with cedilla and breve\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con diéresis y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y acute\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y grave\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con macrón y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo y macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo y punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con macrón y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y grave\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento circunflejo y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and acute\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and grave\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and hook above\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"mayúscula O with horn and tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con cuerno y punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y agudo\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y grave\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con cuerno y punto debajo\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"es\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A grave\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"mayúscula A aguda\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"mayúscula A diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"mayúscula C cedilla\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E grave\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"mayúscula E aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"mayúscula E diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"mayúscula I grave\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula I aguda\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"mayúscula I acento circumflejo\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula Ñ\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"mayúscula O grave\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula O aguda\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"mayúscula O acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con tilde\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"mayúscula O diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"mayúscula U grave\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"mayúscula U aguda\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"mayúscula U acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"mayúscula U diéresis\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y aguda\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"mayúscula A barra\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con breve\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"mayúscula C con carón\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con carón\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"mayúscula E barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con breve\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con carón\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con breve\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con breve\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"mayúscula J con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con agudo\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con carón\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto mediano\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"mayúscula n con carón\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O barra\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con breve\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble acento agudo \"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con agudo\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con carón\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con agudo\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con carón\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con carón\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"mayúscula U barra\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con anillo arriba\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble acento agudo\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con ogonek\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y diéresis\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con agudo\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con carón\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con acento\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con acento\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con acento\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con pecíolo\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con acento agudo\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con grave\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"mayúscula con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"mayúscula a con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con Breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con doble tumba\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con breve invertido\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con coma debajo\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con Caron\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"mayúscula con un punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con cedilla\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto arriba\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Mayúscula Y con Macron\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con anillo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"mayúscula B con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"mayúscula D con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"mayúscula F con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"mayúscula G con macrón\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con cedilla\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"mayúscula H con breve debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"mayúscula K con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"mayúscula L con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"mayúscula M con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"mayúscula N con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"mayúscula P con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"mayúscula R con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"mayúscula S con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con línea debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"mayúscula T con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con diéresis debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con tilde debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con acento circunflejo debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"mayúscula V con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con grave\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con agudo\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"mayúscula W con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"mayúscula X con diéresis\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto arriba\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con acento circunflejo\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"mayúscula Z with line below\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"mayúscula A con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"mayúscula E con tilde\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"mayúscula I con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"mayúscula O con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"mayúscula U con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con grave\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con punto debajo\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con gancho arriba\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"mayúscula Y con tilde\"}},\"category\":\"Lu\"}]\n,\n\"es/symbols/math_angles.js\": \n[{\"locale\":\"es\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con arco\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"ángulo recto con flecha zigzag hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"ángulo sólido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"Ángulo medido de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"Variante de ángulo recto con cuadrado\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"ángulo recto medido con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"Ángulo con S dentro\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"Ángulo agudo\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"Ángulo esférico de apertura a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"Apertura de ángulo esférico\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"Ángulo de giro\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"Ángulo invertido\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"ángulo con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"ángulo inverso con barra inferior\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"ángulo oblicuo hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing up and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the right\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing down and to the left\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and up\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and up\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing right and down\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"measured angle with open arm ending in arrow pointing left and down\"}},\"category\":\"Sm\"}]\n,\n\"es/symbols/math_arrows.js\": \n[{\"locale\":\"es\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flecha derecha\",\"defaultMP\":\"flecha\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flecha abajo\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda tachada\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con doble punta\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flecha derechaa con doble punta\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flecha con doble punta hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con cola\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con cola\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda de barra\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"barra con flecha\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flecha derecha de barra\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flecha con barra\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flecha arriba y abajo con base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con gancho\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flecha con gancho\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con lazo\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flecha con lazo\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda y derecha\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flecha zigzag abajo\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta izquierda\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con punta derecha\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha desde esquina inferior\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo desde esquina izquierda\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular superior en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flecha noroeste a barra larga\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra arriba de flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido antihorario\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flecha circular abierta en sentido horario\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha arriba de flecha izquierda\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a la izquierda de flecha abajo\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda arriba de flecha derecha\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"dos flechas\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"dos flechas hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda tachada\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda y derecha tachada\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"flecha doble tachada\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"flecha doble\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"flecha doble izquierda-derecha\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"flecha doble vertical\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia noroeste\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia nordeste\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudeste\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia sudoeste\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"flecha triple izquierda\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"flecha triple\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada izquierda\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con doble tachado\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flecha de puntos hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda a barra\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flecha derecha a barra\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia la izquierda\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flecha vacía\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia abajo\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flecha vacía hacia arriba desde barra\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba en el pedestal\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia arriba sobre pedestal con barra vertical\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia arriba blanca en pedestal\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flecha blanca hacia la derecha de la pared\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flecha del noroeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flecha del sudeste a la esquina\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha blanca\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con círculo pequeño\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to the right of downwards arrow\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con doble trazo vertical\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con punta vacía\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda derecha con punta vacía\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flecha electrica\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"flecha arriba\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"flecha arriba entre dos barras horizontales\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"círculo roto con la flecha del noroeste\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cabeza ancha\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste pesada\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flecha pesada del noreste\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"punto de dibujo Flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con punta redonda redonda\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo pesado\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"triángulo punteado hacia la flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de triángulo de trazo pesado\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha negra\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"punta de flecha tridimensional hacia la derecha hacia arriba\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"punta de flecha hacia la derecha con iluminación inferior en tres dimensiones\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"punta de flecha negra hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia abajo y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"pesado negro curvado hacia arriba y hacia la derecha flecha\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"squat Black Arrow hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de color negro cóncava puntiaguda pesada\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"sombra derecha flecha blanca hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"sombra hacia la izquierda blanca a la izquierda\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"back-Tilted Shadowed White Right Arrow\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca sombreada inclinada hacia delante\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha pesada inferior, sombreada a la derecha, blanca\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha blanca superior derecha sombreada pesada\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"con muesca, flecha derecha hacia abajo, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"con muescas, flecha derecha hacia arriba, a la derecha, hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"círculo pesado blanco flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas blancas\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental de plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flecha suroriental con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flecha derecha pesada con plumas negras\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flecha del noreste con plumas negras pesadas\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"lágrima-flecha de flecha hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con forma de lágrima pesada\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha de cola de cuña pesada\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"open-Outlined Outward Arrow\"}}},{\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flecha con más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia izquierda y derecha\"}},\"category\":\"Sm\"},{\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"flecha larga hacia la izquierda, desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga hacia la izquierda desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"doble flecha larga desde barra\"}},\"category\":\"Sm\"},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"flecha larga en zigzag\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la derecha con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"izquierda Derecha Doble Flecha con Trazo Vertical\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow from bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"doble flecha hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"flecha doble hacia la derecha de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flecha hacia arriba con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"flecha triple hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flecha hacia abajo\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"leftwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"rightwards double dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"leftwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"rightwards triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed triple dash arrow\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"rightwards arrow with dotted stem\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"upwards arrow to bar\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"downwards arrow to bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la cola con doble trazo vertical\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"rightwards two headed arrow with tail\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la derecha con cola con doble movimiento vertical\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"cola de flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"cola de doble flecha hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante relleno a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flecha desde barra hacia diamante a la derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flechas del noroeste y sureste\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flecha noreste y sudoeste\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flecha a noroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flecha a nordeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flecha a sureste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flecha a suroeste con garfio\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flechas a noroeste y nordeste\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flechas a nordeste y sudeste\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flechas a suddeste y sudoeste\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flechas a sudoeste y noroeste\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flecha Sureste Cruzando Flecha Noreste\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing South East Arrow\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"caída en diagonal que cruza la flecha noreste\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"creciente Cruce de la Cruz del Sureste de la Flecha\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"north East Arrow Crossing North West Arrow\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"north West Arrow Crossing North East Arrow\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flecha ondulada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flecha que apunta hacia la derecha y luego curva hacia arriba\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha que gira hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo que gira hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la derecha en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"flecha semicircular a la izquierda en sentido antihorario\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arco superior flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arco inferior flecha hacia la izquierda\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"giro negativo\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"giro positivo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha semicircular inferior derecha\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"flecha inferior izquierda semicircular en sentido antihorario\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en sentido contrario a las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"círculo cerrado en el sentido de las agujas del reloj\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre la flecha corta hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre la flecha corta hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"flecha corta hacia la derecha arriba flecha hacia la izquierda\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flecha con más suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con más abajo\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de X\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de círculo\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"dos cabezas de flecha hacia arriba desde círculo\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"round implies\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flecha con igual\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flecha con tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde con flecha\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"flecha con casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de menos de\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flecha con mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con incluido\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través del subconjunto\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con contiene\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con flecha inversa\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"flecha arriba a través del círculo\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"diamante negro con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con flecha hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"círculo negro con flecha hacia abajo\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"integral con flecha hacia la izquierda con garfio\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noreste\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flecha blanca del sureste\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha blanca\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flecha negra hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noreste\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flecha negra del noroeste\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flecha negra sur este\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"sudoeste flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"izquierda derecha flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"arriba abajo flecha negra\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha con la punta hacia arriba\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con la punta hacia arriba\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con círculo pequeño\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"tres flechas a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con un círculo más\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"flecha de flecha larga hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda de la barra\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flecha triple de dos cabezas hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con tallo punteado\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda con cola con doble trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con trazo vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flecha de dos cabezas hacia la izquierda con cola con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda a través de X\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"ola flecha apuntando directamente a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"signo de igual flecha arriba a la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de mayor-que\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha a través de Superset\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"flecha cuádruple hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"operador de tilde inverso sobre la flecha hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el reverso casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"operador de tilde sobre la flecha hacia la izquierda\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la derecha sobre el operador de tilde inverso\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flecha hacia la izquierda de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flecha ascendente de medio ancho\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flecha de medio ancho hacia la derecha\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flecha hacia abajo de medio ancho\"}}}]\n,\n\"es/symbols/math_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"script l\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"p de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra pi\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra gamma\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Gamma\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra mayúscula Pi\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra suma de n-ary\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"mayúscula D\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"negrita de pizarra cursiva j\"}}},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto i\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"cursiva sin punto j\"}},\"key\":\"1D6A5\"}]\n,\n\"es/symbols/math_delimiters.js\": \n[{\"locale\":\"es\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo\",\"defaultMP\":\"paréntesis\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho\",\"defaultMP\":\"cierra paréntesis\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"corchete izquierdo\",\"defaultMP\":\"abre corchetes\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho\",\"defaultMP\":\"cierra corchetes\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"llave izquierda\",\"defaultMP\":\"abre llaves\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"llaves derecha\",\"defaultMP\":\"cierra llaves\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo con pluma\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho con pluma\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"corte inferior derecho\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"corte inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"corte superior derecho \"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"corte superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"ángulo superior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"ángulo superior derecho\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"mitad superior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"mitad inferior de integral\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular derecho\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho gancho superior\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"extensión del paréntesis derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"extensión del soporte cuadrado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada izquierda esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina superior\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte cuadrado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"esquina cuadrada derecha esquina inferior\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"pedazo medio rizado izquierdo\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"soporte izquierdo rizado gancho inferior\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"extensión de soporte rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"gancho superior rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"pedazo medio de soporte rizado derecho\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior derecha rizado\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"extensión integral\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"extensión de línea horizontal\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"izquierda arriba o derecho debajo sección llave\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"derecha arriba o izquierdo debajo sección llave\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"suma superior\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"parte inferior de la suma\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"corchete superior\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"corchete inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado inferior sobre soporte cuadrado superior\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"parte inferior del símbolo radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"línea de caja vertical derecha\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"corchete rizado superior\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"corchete rizado inferior\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"corchete superior en tortuga\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"corchete inferior en tortuga\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"ornamento de paréntesis izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"adorno de paréntesis medio derecho\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis izquierdo aplanado medio\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"adorno paréntesis derecho medio aplanado\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"adorno de soporte de ángulo medio apuntando hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en el ángulo que apunta hacia la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"ornamento de comillas en ángulo recto que apunta hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"ornamento pesado del soporte del ángulo que señala hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte de concha de tortuga izquierda ligera\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"ornamento de corchete derecho tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado izquierdo medio\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"ornamento de soporte rizado derecho medio\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador izquierdo de bolsa de s-formó\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"símbolo delimitador derecho de bolsa de s-formó\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"corchete vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"doble corchete agudo derecho\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"corchete de tortuga vacío derecho \"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano izquierdo\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"paréntesis plano derecho\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"soporte rizado blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"derecha rizado blanco soporte\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"left white paren\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"right white paren\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"notación Z izquierda soporte de imagen\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"corchete de imagen derecha de notación Z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"left bracket with underbar\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"right bracket with underbar\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in top corner\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in bottom corner\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"left bracket with tick in bottom corner\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"right bracket with tick in top corner\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"left angle bracket with dot\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"right angle bracket with dot\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"left arc less than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"right arc greater than bracket\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"double left arc greater than bracket\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"double right arc less than bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga negra izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"abrazadera de concha de tortuga negra derecha\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"valla izquierda ondulada\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"valla derecha ondulada\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"left double wiggly fence\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo a la izquierda\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"abrazadera de ángulo curvo orientada hacia la derecha\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"soporte superior izquierdo superior\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"medio soporte superior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"abrazadera inferior izquierda\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"medio soporte inferior derecho\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"soporte U lateral izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"lado derecho U soporte\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"doble paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"paréntesis doble derecho\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"soporte de ángulo recto\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular doble derecho\",\"defaultMP\":\"cierra paréntesis angular doble\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"soporte de la esquina izquierda\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Izquierdo Negro\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"soporte Lenticular Negro Derecho\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"left tortoise shell bracket\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"right tortoise shell bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"soporte lenticular blanco derecho\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"soporte de caparazón de tortuga blanca izquierda\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"soporte de concha de tortuga blanca derecha\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"corchete vacío\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"corchete vacío derecho\",\"defaultMP\":\"cierra corchete vacío\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"comilla doble invertida\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"comillas bajas dobles\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo adornado\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho adornado\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte lenticular blanco vertical derecho\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"paréntesis superior\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"paréntesis inferior\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"llave superior\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"llave inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte vertical de concha de tortuga derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro izquierdo vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte lenticular negro derecho vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte vertical doble ángulo izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el soporte de ángulo recto doble vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular superior\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"paréntesis angular inferior\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina blanco vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte de esquina vertical derecha blanca\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para soporte cuadrado vertical derecho\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"pequeño paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"corchete Rizado Izquierdo Pequeño\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"corchete derecho rizado pequeño\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"soporte de concha pequeña tortuga izquierda\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"pequeño corchete derecho de concha de tortuga\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"soporte cuadrado derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"corchete rizado izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"corchete derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco izquierdo de ancho completo\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"paréntesis blanco derecho de ancho completo\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"corchete de esquina izquierda de medio ancho\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"soporte de esquina derecha de medio ancho\"}}}]\n,\n\"es/symbols/math_geometry.js\": \n[{\"locale\":\"es\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas horizontales\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Vertical\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Triple Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Ligero Cuadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"caja Dibujos Luz Cuadruple Tablero Vertical\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Quadruple Dash Vertical\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Abajo Ligero y Derecho Pesado\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos ligeros\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​abajo y derecha\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia abajo y hacia la izquierda\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta Pesadas y Ligeras\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y derechos\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta livianos y pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesado y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​hacia arriba y hacia la izquierda\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y derecho pesado\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta pesados ​​y rectos hacia abajo\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y rectos arriba ligeros\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y rectas ligeras\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y rectos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba livianos y rectos para abajo pesados\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y derechas\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja Vertical ligero y izquierdo pesado\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Pesado y Izquierda Abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo pesados ​​y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros e izquierdos arriba pesados\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y Izquierda Abajo Pesado\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales e izquierdas\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesados ​​y derecha abajo luz\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, derecha, pesada y izquierda abajo, luz\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja de luz derecha y izquierda abajo pesado\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"cuadros de caja izquierda ligera y derecha abajo pesada\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas izquierda pesada y derecha arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz izquierda arriba\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta ligero y horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hasta luz pesada y horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, livianos y a la izquierda, pesados\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Arriba Pesada\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y horizontales\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores sencillos\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Pesada y Derecha Vertical Luz\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha pesada y luz vertical izquierda\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Vertical Ligera y Horizontal Pesada\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba pesados ​​y abajo luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas hacia abajo pesados ​​y hacia arriba luz horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas verticales pesadas y horizontales ligeras\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Arriba Pesada y Derecha abajo Luz\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"dibujos de caja derecha arriba pesada y izquierda abajo luz\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas, izquierda abajo, pesada y derecha arriba, ligera\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"dibujos de la caja derecha abajo pesada y izquierda arriba ligera\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas abajo ligeros y ascendentes horizontales pesados\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas para arriba Ligero y para abajo horizontal pesado\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha, ligeros y a la izquierda, verticales, pesados\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Izquierda Ligera y Derecha Vertical Pesada\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesadas verticales y horizontales\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Horizontal\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Light Double Dash Vertical\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Heavy Double Dash Vertical\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"delimitador horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"delimitador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"esquina inferior derecha doble\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"esquina inferior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, vertical doble\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"esquina superior derecha doble\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, vertical doble\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda, horizontal doble\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"esquina superior izquierda doble\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo con separador doble\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"delimitador izquierdo y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho con separador doble\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho doble con separador horizontal\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"delimitador derecho y separador horizontal dobles\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"delimitador superior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"delimitador superior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"delimitador superior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior doble con separador vertical\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior con separador vertical doble\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"delimitador inferior y separador vertical dobles\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical sencillo y horizontal doble\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores, vertical doble y horizontal sencillo\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"cruce de separadores dobles\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco abajo y derecha\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco hacia abajo y hacia la izquierda\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz arco arriba y a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos de luz arco arriba y derecha\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior derecha a inferior izquierda\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Luz Diagonal Superior izquierda a inferior derecha\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz diagonal cruz\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas luz izquierda\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas se iluminan\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas a la derecha\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas de luz hacia abajo\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​a la izquierda\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"caja de dibujos pesado derecho\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Ligero Izquierda y Pesada Derecha\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas iluminados y pesados\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas Pesado Izquierda y Luz Derecha\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"dibujos de cajas pesados ​​y ligeros\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"bloque mitad superior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"bajar un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto inferior\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos más bajo\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"bloque mitad inferior\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"bloque inferior de cinco octavos\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos más bajo\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"lower Seven Eighths Block\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"bloque\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"bloque de siete octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"bloque de tres cuartos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"bloque de cinco octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"media cuadra izquierda\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"bloque de tres octavos a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"bloque de un cuarto a la izquierda\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"izquierda un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"media cuadra derecha\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"sombra ligera\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"sombra media\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"sombra intensa\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"upper One Eighth Block\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"a la derecha un octavo bloque\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior izquierdo y superior derecho e inferior derecho\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"cuadrante superior derecho e inferior izquierdo e inferior derecho\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con esquinas redondeadas\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco que contiene cuadrado pequeño negro\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno horizontal\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno vertical\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado ortogonal\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la esquina superior izquierda a la derecha inferior\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con la parte superior derecha hacia abajo izquierda Relleno\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con relleno de rayado diagonal\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"cuadrado relleno\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"cuadrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectángulo negro\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectángulo\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectángulo relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"rectángulo vertical\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"paralelogramo negro\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"paralelogramo\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"triángulo\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala derecha\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"triángulo señala derecha\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"indicador de apuntar hacia la derecha negro\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"puntero de apuntar hacia la derecha blanco\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala abajo\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"triángulo señala abajo\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"triángulo relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"triángulo señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"puntero relleno señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"puntero señala izquierda\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"diamante\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"diamante vacío contiene diamante relleno\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"ojo de pez\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"rombo\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"círculo vacío\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"círculo punteado\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"círculo con relleno vertical\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"blanco\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"círculo relleno\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad inferior rellena\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"círculo con mitad superior rellena\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"círculo con cuadrante superior izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"semicírculo izquierdo relleno\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"semicírculo derecho relleno\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"bullet inversa\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"círculo vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior vacío inverso\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arco superior izquierda\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arco superior derecha\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arco inferior derecha\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arco inferior izquierda\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"semicírculo superior\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"semicírculo inferior\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda relleno\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha relleno\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"cuadrado con bisectriz\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triángulo vacío con punto\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad izquierda rellena\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triángulo apuntando arriba con mitad derecha rellena\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"círculo grande\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"cuadrado blanco con cuadrante superior derecho\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior izquierdo\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante inferior derecho\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con cuadrante superior derecho\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triángulo superior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triángulo superior derecha\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior izquierda\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano vacío\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"cuadrado mediano relleno\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triángulo inferior derecha\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad derecha superior diagonal negra\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"cuadrado con mitad diagonal izquierda inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"diamante con Mitad Izquierda Negro\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad derecha negra\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad superior negra\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"diamante con mitad inferior negra\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"cuadrado punteado\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"cuadrado grande negro\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"gran Plaza Blanca\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"cuadrado muy pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentágono negro\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexágono blanco\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexágono negro\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagonal negro horizontal\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"circulo grande negro\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"diamante Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"diamante blanco medio\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"lozenge Mediano Negro\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"pastilla blanca mediana\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"pequeño diamante negro\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño negro\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"lozenge pequeño blanco\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal negro\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"elipse horizontal blanco\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Negro\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"elipse Vertical Blanco\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"estrella media vacía\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña rellena\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"estrella pequeña vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentágono negro que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentágono blanco que señala hacia la derecha\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"círculo grande pesado\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"óvalo pesado con interior oval\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"círculo pesado con círculo dentro\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"círculo pesado\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"saltire en círculo pesado\"}}}]\n,\n\"es/symbols/math_harpoons.js\": \n[{\"locale\":\"es\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"flecha izquierda con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"flecha arriba con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón arriba\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"flecha derecha con arpón debajo\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"flecha abajo con arpón izquierdo\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"arpón izquierdo arriba de arpón derecho\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"arpón derecho arriba de arpón izquierdo\"}},\"category\":\"So\"},{\"category\":\"Sm\",\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha abajo arpón\"}}},{\"category\":\"Sm\",\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha arriba arpón\"}}},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"up barb right down barb left harpoon\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"arriba barb izquierda abajo barb derecha arpón\"}}},{\"category\":\"Sm\",\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"barra izquierda arriba barra derecha arriba arpón\"}}},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"barra izquierda abajo barra derecha abajo arpón\"}}},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda hacia arriba y abajo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa hasta la barra\"}}},{\"category\":\"Sm\",\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha a barra\"}}},{\"category\":\"Sm\",\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo a la barra\"}}},{\"category\":\"Sm\",\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda a barra\"}}},{\"category\":\"Sm\",\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con la barra izquierda a la barra\"}}},{\"category\":\"Sm\",\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba de la barra\"}}},{\"category\":\"Sm\",\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa arriba del bar\"}}},{\"category\":\"Sm\",\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con púa derecha de barra\"}}},{\"category\":\"Sm\",\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo de barra\"}}},{\"category\":\"Sm\",\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con barra izquierda de barra\"}}},{\"category\":\"Sm\",\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púas arriba arriba arpón a la izquierda con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón ascendente con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la derecha con púas abajo\"}}},{\"category\":\"Sm\",\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia abajo con lengüeta a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa arriba arriba arpón a la derecha con púa arriba\"}}},{\"category\":\"Sm\",\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"arpón a la izquierda con púa abajo arriba arpón a la derecha con púa abajo\"}}},{\"category\":\"Sm\",\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púas arriba arriba arpón a la izquierda con púas arriba\"}}},{\"category\":\"Sm\",\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"arpón a la derecha con púa abajo arriba arpón a la izquierda con púa abajo\"}}},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la izquierda con barra\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"barra con arpón hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"arpón hacia la derecha con barra\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"arpón ascendente con púa izquierda al lado arpón hacia abajo con púa derecha\"}}},{\"category\":\"Sm\",\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"arpón hacia abajo con lengüeta a la izquierda al lado arpón hacia arriba con pica a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"cola de pescado izquierda\"}}},{\"category\":\"Sm\",\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"cola de pescado derecha\"}}},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"barra con doble gancho\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"cola de pez abajo\"}}}]\n,\n\"es/symbols/math_non_characters.js\": \n[{\"locale\":\"es\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"h barra\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"L B símbolo de barra\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"signo de número\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"derechos de autor de sonido\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"receta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"respuesta\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"marca de servicio\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"señal de telefono\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versículo\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohmio invertido\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"grados kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"Símbolo estimado\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"mayúscula F invertida\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"fuente de información\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"capital rotado Q\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"signo de fax\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula G\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"convertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"invertido sans serif mayúscula L\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"convertido en sans serif mayúscula Y\"}}}]\n,\n\"es/symbols/math_symbols.js\": \n[{\"locale\":\"es\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorial\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"comillas\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"almuhadilla\",\"defaultMP\":\"signo de número\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dólar\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"porciento\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"ampersand\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prima\",\"defaultMP\":\"apóstrofo\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barra oblicua\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"dos puntos\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"punto y coma\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"menor que\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"igual\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"mayor que\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"interrogación derecho\",\"defaultMP\":\"cierra interrogación\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arroba\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barra inversa\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circunflejo\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"subrayado\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"admiración izquierdo\",\"defaultMP\":\"abre admiración\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centavo\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"libra esterlina\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"moneda\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barra vertical partida\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"sección\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"diéresis\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"ordinal femenino\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares izquierda\",\"defaultMP\":\"abre comillas angulares\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"negación\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"registrado\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"barra\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"grado\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"más menos\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"párrafo\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"punto medio\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cedilla\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"ordinal masculino\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"comillas angulares derecha\",\"defaultMP\":\"cierra comillas angulares\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"interrogación izquierdo\",\"defaultMP\":\"abre interrogación\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"dividido\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"breve\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"punto en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"anillo en superescrito\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"doble acento agudo\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"guión no rompible\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"figura Dash\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"en raya\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"em raya\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barra horizontal\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"línea baja doble\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"comilla izquierda\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"marca de comillas simple con inversión alta-9\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"doble comilla\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"doble comilla derecha\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"doble comilla bajo 9\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"doble alto-invertido-9 comillas\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"daga\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"doble daga\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"bala triangular\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"líder de un punto\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"dos puntos líder\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"punto de separación\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"tanto por millar\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"tanto por diez mil\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prima\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"segunda\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"tercera\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"acento grave\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"doble acento grave\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"prime Prime invertido\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"signo de intercalación\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"comillas izquierda\",\"defaultMP\":\"abre comillas\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"comillas derecha\",\"defaultMP\":\"cierra comillas\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marca de referencia\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"doble signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"interrobang\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"barra superior\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"undertie\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"ligadura\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"punto de inserción\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"asterismo\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"guión bala\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barra de fracción\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"doble signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"pregunta Signo de exclamación\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de exclamación\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"signo de Pilcrow invertido\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la izquierda\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"bala negra hacia la derecha\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"bajo asterisco\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"punto y coma invertido\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"cierre superior\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"dos asteriscos alineados verticalmente\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"signo de menos comercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"swung Dash\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"ropa interior invertida\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"signo de puntuación de la flor\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"puntuación de tres puntos\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"cuarta\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"puntuación de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"puntuación de cinco puntos\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"puntuación de dos puntos\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"marca de cuatro puntos\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"cruz punteada\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"tricolon\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"cuatro puntos verticales\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"superscript Plus Sign\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"superíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"superscript Equals Sign\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"paréntesis izquierdo superíndice\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"paréntesis derecho superíndice\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice más\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"subíndice menos\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"signo de subíndice es igual\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"subíndice paréntesis izquierdo\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"subíndice de paréntesis derecho\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"línea de propiedad\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"ampersand convertido\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"por signo\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"torneado pequeño f\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"para todo\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complementario\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"no existe\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incremento\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"no perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"perteneciente a\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"no comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"comprende a\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"fin de demostración\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"producto\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sumatorio\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"menos más\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"punto más\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"barra de división\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"menos\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"asterisco\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"composición\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"bala\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"raíz\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"raíz cúbica\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"raíz cuarta\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proporcional a\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infinito\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"ángulo recto\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"ángulo medido\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"ángulo esférico\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"divide a\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"no divide a\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"no paralela a\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"integral\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"integral doble\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"integral triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"integral de contorno\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"integral de superficie\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"integral de volumen\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido horario\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"integral de contorno en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"por lo tanto\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"porque\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"razón\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proporción\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"punto menos\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"exceso\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proporción geométrica\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homotecia\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"tilde invertido\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s horizontal invertida\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoide\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"producto de guirnalda\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"no tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"menos tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"no asintóticamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"aproximado pero no igual a\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"aproximado\",\"defaultMP\":\"casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"no es casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"igual o casi igual a\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"todo igual a\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"geométricamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"se acerca al límite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"geométricamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual a o imagen de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"imagen de o aproximadamente igual a\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"dos puntos igual\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"igual dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"igual incluyendo anillo\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"igual anillo a\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"corresponde a\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estima a\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"equiangular con\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"igual con estrella\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"igual con delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"igual por definición a\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"medido por\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"igual con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"no es igual a\",\"defaultMP\":\"distinto de\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"no es idéntico a\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"estrictamente equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"no menor que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"no mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"no menor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"no mayor ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"menor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"mayor o equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"no menor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"no mayor ni equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"no menor ni mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"no mayor ni menor que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"precede a\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"sigue a\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"precede o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"sigue o es equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"no precede a\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"no sigue a\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"no incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"no contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"incluido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"no incluido ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"no contiene ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"incluido estrictamente en\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"contiene estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"producto de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"unión de familia de conjuntos\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original cuadrado de o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"más en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"por en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"anillo en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"asterisco en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"igual en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"menos en círculo\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"más en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"menos en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"veces en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"punto en cuadrado\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"t horizontal hacia la derecha\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"perpendicular invertida\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"afirmación\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modela\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"verdadero\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"triple barra vertical torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"no prueba\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"falso\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"no obliga\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete derecho negada\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"precede respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"sigue respecto de\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"imagen de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multifunción\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matriz hermitiana conjugada\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"interpola\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"o excluyente\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"no y\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"no o\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triángulo rectángulo\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersección\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"unión\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"operador diamante\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"punto\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"estrella\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"dividido por\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"moño\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"factor normal izquierdo producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"factor normal derecho producto semidirecto\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto derecho\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"tilde invertida igual a\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"o rizada\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"y rizada\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"doble incluido\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"doble contiene\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"doble intersección\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"doble unión\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"bieldo\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"paralela o igual a\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"menor igual o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"mayor igual o menor que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"menor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"mayor o igual que\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"sigue o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"no precede ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"no sigue ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"no es imagen cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"no es original cuadrada ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"imagen cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original cuadrada estricta\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"menor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"mayor que no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"precede no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"sigue no equivalente a\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"no subgrupo normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal a\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"no es subgrupo normal ni igual a\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"no contiene como subgrupo normal ni es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos verticales\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos altos\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales subiendo\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"puntos suspensivos diagonales bajando\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"pertenece con trazo horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra vertical al fin de raya horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"pertenece en pequeño con trazo vertical\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"pertenece con punto arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"pertenece con barra arriba\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"perteneciente subrayado\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"pertenece con dos trazos horizontales\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contiene o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"contiene con marca\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contiene con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"perteneciente con barra\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"z anotación asociación de bolsa\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diámetro\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"casa\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"en proyectividad con\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"en perspectividad con\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"línea ondulada\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"no invertido\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastillas cuadradas\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arco\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segmento\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"sector\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"signo más pesado\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"signo menos pesado\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"signo de la división pesada\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"bucle rizado\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"doble bucle rizado\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"triángulo encerrando triángulo\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"incluido en\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"contiene a\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"punto en círculo\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"atrás tajo antes de subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sobreconjunto antes de tajo\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barra vertical con golpe horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonal matemático de levantamiento\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"división larga\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente matemática\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico Y\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"cuadrado Lógico O\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"diamante blanco con punto centrado\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"y con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"elemento de apertura hacia arriba\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior derecho con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"ángulo inferior izquierdo con punto\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"izquierdo exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"derecho exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"lleno exterior une\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"izquierdo y derecho doble torniquete\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"doble T horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multifunción por la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"t horizontal derecha larga\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"t horizontal izquierda larga\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"perpendicular inversa con círculo arriba\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"pastilla dividida por regla horizontal\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo vacío\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"diamante cóncavo con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia izquierda\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con tictac hacia derecha\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"cruce en diagonal Cruce en diagonal Caída en diagonal\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonal descendente Cruce diagonal ascendente\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"delimitador de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"punto de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"tipo de notación Z Colon\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"valla punteada\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"zigzag en vertical\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío invertido\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"conjunto vacío con círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"círculo con barra\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barra en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"paralelas en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"círculo inverso solidus\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendicular en círculo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"círculo dividido por barra horizontal y mitad superior dividido por barra vertical\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"x superimpresa en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"circled anticlockwise rotated division\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"bullet vacía en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"bullet en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"menor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"mayor que en círculo\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"círculo con círculo a la derecha\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"circle with two horizontal strokes to the right\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal ascendente\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"cuadrado con diagonal descendente\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"asterisco cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"pequeño círculo cuadrado\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"cuadrado cuadrado\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"dos cuadrados unidos\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triángulo con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triángulo con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s en triangulo\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle with serifs at bottom\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triángulo hacia la derecha sobre triángulo hacia la izquierda\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"subgrupo normal o igual a\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"contiene como subgrupo normal o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"pajarita Con Mitad Derecha Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"pajarita Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"tiempos con Mitad Izquierda Negra\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"tiempos con la mitad derecha negra\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"reloj de arena blanco\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"reloj de arena negro\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infinito incompleto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"empate sobre el infinito\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"no infinito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multimapa de doble extremo\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"cuadrado con contorno contorneado\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"aumenta como\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"shuffle Product\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"igual tachado doble \"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"igual con tilde, con doble tachado\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"idéntico a con doble tachado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich Stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"termodinamica\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad izquierda negra\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triángulo que apunta hacia abajo con la mitad derecha negra\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"rombo relleno\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"plaza blanca con error\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"error en la Plaza Negra\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"error White Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"error Black Barred Diamond\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"círculo blanco con error\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"círculo negro con barras de error\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"rule delayed\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"operador de Solidus Inverso\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"solidus with overbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"solidus inverso con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"sólido grande\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"sólido inverso grande\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"doble Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple Plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"minúsculo\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"operador de puntos circulares N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"operador N-Ary Circled Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"operador de los tiempos en círculo de N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"operador de la unión N-Ary con punto\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"n-Ary Union Operator con Plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"operador de intersecciones cuadradas N-Ary\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"n-Ary Square Union Operator\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"dos lógico y operador\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"dos lógico u operador\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"operador de N-Ary Times\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"modulo dos sumas\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"suma con Integral\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"operador integral cuádruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"finite part integral\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"integral con Doble Trazo\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"promedio Integral con Slash\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"circulation function\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"integral en sentido antihorario\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"integral lineal para rectángulo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"integral lineal para semicírculo en polo\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"integral lineal excluyendo el polo\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"integral en torno de un punto operador\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"operador integral para cuaterniones\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"integral con Times Sign\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"integral con Intersección\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"integral con union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"integral con Overbar\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"integral con barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"unirse\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"operador de triángulo izquierdo grande\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composición de esquemas de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"esquema de notación Z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"proyección del esquema de notación Z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"más con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"más con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"tilde con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"más con punto inferior\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"tilde con más\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"más con 2 suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"signo más con triángulo negro\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"menos con coma\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"menos con punto inferior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos que caen\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"signo menos con puntos crecientes\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"más en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"producto vectorial\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"por con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"por con subrayado\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"producto semidirecto con fondo cerrado\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"smash product\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo izquierdo\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"por en semicírculo derecho\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"por en círculo con ángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"por en anillo\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"división en círculo\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"más en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"menos en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"por en triángulo\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"producto interior\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"producto interior derecho\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"notación Z Composición Relacional\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"coproducto\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersección con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"unión con signo de menos\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"unión con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersección con barra\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersección con and\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"unión con or\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"unión sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersección sobre unión\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"unión sobre barra, sobre intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersección sobre barra, sobre unión \"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"unión y unión\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"intersección e intersección\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"unión cerrada\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersección cerrada\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"intersección cuadrada doble\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"unión cuadrada doble\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"unión cerrada con por\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"lógico y con punto arriba.\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"lógico o con punto arriba\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"y\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"o\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical and\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"two intersecting logical or\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"sloping large or\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"sloping large and\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"lógica o superpuesta, lógica y\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"logical and with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"logical or with middle stem\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"logical and with horizontal dash\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"logical or with horizontal dash\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble Overbar\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"logical and with underbar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"lógica y con doble barra inferior.\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"pequeño Vee con Underbar\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra.\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"lógica o con doble barra inferior\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"notación Z Dominio Antirestricción\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"rango de notación Z Antirestricción\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"igual con punto suscrito\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"idéntico con punto arriba\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con doble movimiento vertical\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"triple barra horizontal con triple movimiento vertical\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"tilde con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"operador de tilde con puntos crecientes\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similares menos similares\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruente con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"igual a Asterisco\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"casi igual con ángulo\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"aproximadamente igual o igual a\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"igual con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"igual con más\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"igual con operador tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"igual con dos puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"igual doble\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"tres signos de igualdad consecutivos\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"igual entre cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"equivalente con cuatro puntos\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"menor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"mayor que con círculo interior\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"menor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"mayor que con interrogante\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"menor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"mayor que o aproximado\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"menor que una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"mayores y una sola línea no son iguales a\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"menor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"mayor que, pero no aproximado a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"menos que arriba de la doble línea igual por encima de mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"más que arriba de la línea doble igual sobre menos que\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"menor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"menor, similar o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"mayor, similar o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"menor, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"mayor, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor o mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor o menor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"inclinado igual o mayor que\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que con punto interior\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"mayor o igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o menor que\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada igual o mayor que\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"equivalente o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"mayor o similar a\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similar, menor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similar, mayor o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"mucho menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"mucho mayor que\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"doble anidada menor que con barra inferior\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"menor que, mayor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"mayor o menor que\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"estrictamente menor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"estrictamente mayor que cerrado con curva\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"más reducido que\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"más amplio que\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"más reducido o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"más amplio o igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"diferencia entre\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"precede o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"sucede por encima de la línea de igual signo\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"precede por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de una línea no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"precede arriba del signo igual\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"sucede por encima del signo igual\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"precede estrictamente a\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"sigue estrictamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"precede por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"precede arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"tiene éxito por encima de no casi igual a\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"precede mucho antes\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"sigue mucho después\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"subrelación de\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"contiene como subrelación a\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"incluido con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"contiene con más suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"incluido con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"contiene con por suscrito\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"incluido con punto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"contiene con punto o es igual a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"subconjunto de signo igual arriba\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"superconjunto de signo igual arriba\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"incluido aproximadamente en\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"contiene aproximadamente a\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"subconjunto de Arriba Casi Igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba casi igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"subconjunto de lo anterior no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"superconjunto de arriba no es igual a\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la izquierda cuadrada\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"operador de caja abierta a la derecha cuadrada\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"incluido con cierre en\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"incluido el cierre o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"contiene al cierre del subconjunto o es igual a\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"está incluido o contiene a\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"incluido doblemente en\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"contiene doblemente a\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"contiene o está incluido en\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"perteneciente dirigido hacia abajo\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"pitchfork with tee top\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"transversal intersection\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcación\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"nonforking\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"tachuela Izquierda Corta\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"tachuela corta hacia abajo\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"short Up Tack\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendicular con s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"barra vertical Torniquete a la derecha\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"barra vertical doble Torniquete izquierdo\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double left turnstile vertical bar\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"doble barra vertical doble torniquete izquierdo\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"long dash from left member of double vertical\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"short down tack with overbar\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"barra con perpendicular\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"short up tack above short down tack\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"tachuela doble\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double up tack\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"reversed double stroke not sign\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"does not divide with reversed negation slash\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"barra vertical con círculo\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"barra con círculo inferior\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"down tack with circle below\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"paralela con marca\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"paralela con tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relación binaria de barra vertical triple\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"barra vertical triple con trazo horizontal\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"operador Triple Colon\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"triple anidada menos que\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"triple anidado mayor que\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada menor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"doble línea inclinada mayor o igual a\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relación Binaria Triple Sólida\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"operador de barra vertical triple grande\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"operador Doble Sólido\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barra vertical blanca N-Ary\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"wave Dash\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para colon vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para punto y coma vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de exclamación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para el signo de interrogación vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para elipsis horizontal vertical\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para líder vertical de dos puntos\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical Em Dash\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para Vertical En Dash\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea vertical baja\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"formulario de presentación para línea baja ondulada vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"punto de sésamo blanco\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"línea discontinua\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"centinela Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"ondulado Overline\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"doble Ondulado Ondulado\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"línea baja discontinua\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"línea baja de línea central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"línea baja ondulada\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"comas pequeñas\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"parada completa pequeña\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"pequeño punto y coma\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"pequeño colon\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de interrogación\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de exclamación\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"pequeño Em Dash\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"signo de número pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"ampersand pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"pequeño asterisco\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"signo más pequeño\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"pequeño guión-menos\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"signo menor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"signo mayor que pequeño\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"signo pequeño igual\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"división entera\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"pequeño signo de dólar\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje pequeño\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"pequeño comercial en\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"signo de exclamación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"comillas de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"número de signo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"signo de dólar de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"signo de porcentaje de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"ampersand de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apóstrofe de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"asterisco de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"coma de ancho completo\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"ancho de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"fullwidth Full Stop\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"sólido de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"ancho completo de colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"punto y coma de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"ancho completo menos de la señal\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"signo de igual ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"ancho completo mayor que el signo\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"signo de interrogación de ancho completo\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"comercial de ancho completo en\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"sólido inverso de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"acento circunflejo de ancho completo\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"línea baja de ancho completo\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"acento grave de ancho completo\"}}},{\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barra vertical\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"signo de centavo de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"signo de libra de ancho completo\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"fullwidth no firmar\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"ancho completo macron\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"barra rota de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"signo de yen de ancho completo\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"signo de ancho completo ganado\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"formas de ancho medio luz vertical\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"medio ancho cuadrado negro\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"círculo blanco de medio ancho\"}}}]\n,\n\"es/symbols/math_whitespace.js\": \n[{\"locale\":\"es\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espacio\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"guión corto\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"en quad\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"em Quad\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"espacio Six-Per-Em\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"ancho de cero no ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"ancho de cero ensamblador\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marca de izquierda a derecha\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marca de derecha a izquierda\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"separador de linea\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"separador de párrafo\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"incrustación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"incrustación de derecha a izquierda\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"formato direccional pop\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"anulación de izquierda a derecha\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"anulación de derecha a izquierda\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espacio estrecho sin descanso\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\"por\"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"coma\"}},\"category\":\"Cf\"},{\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"más\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibir el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activar el intercambio simétrico\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nacionales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"formas de dígitos nominales\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancla de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"separador de anotación interlinear\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminador de anotación interlinear\"}}}]\n,\n\"es/symbols/other_stars.js\": \n[{\"locale\":\"es\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"símbolo exponente decimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"estrella rellena\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"estrella vacía\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"círculo blanco medio\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"círculo negro medio\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada blanca\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"check mark\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"marca de verificación pesada\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"multiplicación x\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"multiplicación pesada X\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"ballot x\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"boleta pesada X\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"centro abierto de la cruz\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"pesado centro abierto cruz\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"cruz de Malta\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"estrella de David\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de lágrima\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"pesado Cuatro asterisco impulsado por globo\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"cuatro asterisco de club-spoked\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"estrella de cuatro puntas negra\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"estrella blanca de cuatro puntas\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"destellos\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"estrés subrayado estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"estrella blanca circulada\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"centro Abierto Estrella Negra\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"centro negro estrella blanca\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"contorneado negro estrella\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"estrella negra contorneada pesada\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"pinwheel Star\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"estrella blanca sombreada\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"centro abierto de asterisco\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco hablado\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"ocho estrellas de molinete en punta\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"estrella rellena de seis puntas\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"doce estrellas negras puntiagudas\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"dieciséis asteriscos en punta\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"asterisco con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"centro abierto con asterisco con forma de lágrima\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"heavy teardrop spoked asterisk\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"seis pétalos de florette en blanco y negro\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"florette negro\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"florette blanco\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"ocho Petalled Outlined Black Florette\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"círculo abierto centro ocho estrellas señaladas\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"asterisco pesado del molinillo de viento\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"copo de nieve\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"copo de nieve trifolio apretado\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"copo de nieve pesado de Chevron\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"brillar\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"chispa pesada\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"asterisco de globo\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"ocho asterisco de hélice con efecto de lágrima\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"heavy eight asterisk de hélice en forma de lágrima\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"marca de la cruz\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"círculo blanco sombreado\"}}}]\n,\n\"es/units/energy.js\": \n[{\"locale\":\"es\"},{\"key\":\"W\",\"names\":[\"W\",\"w\"],\"mappings\":{\"default\":{\"default\":\"watt\"}},\"category\":\"energy\"},{\"key\":\"kW\",\"names\":[\"kw\",\"kW\"],\"mappings\":{\"default\":{\"default\":\"kilowatt\"}},\"category\":\"energy\"},{\"key\":\"mW\",\"names\":[\"mw\",\"mW\"],\"mappings\":{\"default\":{\"default\":\"miliwatt\"}},\"category\":\"energy\"},{\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"],\"mappings\":{\"default\":{\"default\":\"kilowatt hora\"}},\"category\":\"energy\"},{\"key\":\"J\",\"names\":[\"J\"],\"mappings\":{\"default\":{\"default\":\"Joule\"}},\"category\":\"energy\"},{\"key\":\"N\",\"names\":[\"N\"],\"mappings\":{\"default\":{\"default\":\"Newton\"}},\"category\":\"energy\"},{\"key\":\"A\",\"names\":[\"A\"],\"mappings\":{\"default\":{\"default\":\"Ampere\"}},\"category\":\"energy\"},{\"key\":\"V\",\"names\":[\"V\"],\"mappings\":{\"default\":{\"default\":\"Voltio\"}},\"category\":\"energy\"},{\"key\":\"µΩ\",\"names\":[\"µΩ\"],\"mappings\":{\"default\":{\"default\":\"microohmio\"}},\"category\":\"energy\"},{\"key\":\"mΩ\",\"names\":[\"mΩ\"],\"mappings\":{\"default\":{\"default\":\"miliohmio\"}},\"category\":\"energy\"},{\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"],\"mappings\":{\"default\":{\"default\":\"ohmio\"}},\"category\":\"energy\"},{\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"],\"mappings\":{\"default\":{\"default\":\"kiloohmio\"}},\"category\":\"energy\"},{\"key\":\"MΩ\",\"names\":[\"MΩ\"],\"mappings\":{\"default\":{\"default\":\"megaohmio\"}},\"category\":\"energy\"},{\"key\":\"GΩ\",\"names\":[\"GΩ\"],\"mappings\":{\"default\":{\"default\":\"gigaohmio\"}},\"category\":\"energy\"}]\n,\n\"es/units/length.js\": \n[{\"locale\":\"es\"},{\"key\":\"mm\",\"names\":[\"mm\"],\"mappings\":{\"default\":{\"default\":\"milímetro\"}},\"category\":\"length\"},{\"key\":\"cm\",\"names\":[\"cm\"],\"mappings\":{\"default\":{\"default\":\"centímetro\"}},\"category\":\"length\"},{\"key\":\"m\",\"names\":[\"m\"],\"mappings\":{\"default\":{\"default\":\"metro\"}},\"category\":\"length\"},{\"key\":\"km\",\"names\":[\"km\"],\"mappings\":{\"default\":{\"default\":\"kilómetro\"}},\"category\":\"length\"},{\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"],\"mappings\":{\"default\":{\"default\":\"pies\"}},\"category\":\"length\"},{\"key\":\"in\",\"names\":[\"in\",\"in.\"],\"mappings\":{\"default\":{\"default\":\"pulgada\"}},\"category\":\"length\"},{\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"],\"mappings\":{\"default\":{\"default\":\"milla\"}},\"category\":\"length\"},{\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"],\"mappings\":{\"default\":{\"default\":\"yarda\"}},\"category\":\"length\"},{\"key\":\"n.m.\",\"names\":[\"n.m.\"],\"mappings\":{\"default\":{\"default\":\"millas náuticas\"}},\"category\":\"length\"}]\n,\n\"es/units/memory.js\": \n[{\"locale\":\"es\"},{\"key\":\"b\",\"names\":[\"b\"],\"mappings\":{\"default\":{\"default\":\"bit\"}},\"category\":\"memory\"},{\"key\":\"B\",\"names\":[\"B\"],\"mappings\":{\"default\":{\"default\":\"byte\"}},\"category\":\"memory\"},{\"key\":\"KB\",\"names\":[\"KB\"],\"mappings\":{\"default\":{\"default\":\"kilobyte\"}},\"category\":\"memory\"},{\"key\":\"MB\",\"names\":[\"MB\"],\"mappings\":{\"default\":{\"default\":\"megabyte\"}},\"category\":\"memory\"},{\"key\":\"GB\",\"names\":[\"GB\"],\"mappings\":{\"default\":{\"default\":\"gigabyte\"}},\"category\":\"memory\"},{\"key\":\"TB\",\"names\":[\"TB\"],\"mappings\":{\"default\":{\"default\":\"terabyte\"}},\"category\":\"memory\"}]\n,\n\"es/units/other.js\": \n[{\"locale\":\"es\"},{\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"],\"mappings\":{\"default\":{\"default\":\"docena\"}},\"category\":\"other\"},{\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"],\"mappings\":{\"default\":{\"default\":\"al cuadrado\"}},\"category\":\"other\"},{\"key\":\"ha\",\"names\":[\"ha\"],\"mappings\":{\"default\":{\"default\":\"hectarea\"}},\"category\":\"other\"}]\n,\n\"es/units/speed.js\": \n[{\"locale\":\"es\"},{\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"],\"mappings\":{\"default\":{\"default\":\"nudo\"}},\"category\":\"speed\"},{\"key\":\"mph\",\"names\":[\"mph\"],\"mappings\":{\"default\":{\"default\":\"millas por hora\"}},\"category\":\"speed\"},{\"key\":\"rpm\",\"names\":[\"rpm\"],\"mappings\":{\"default\":{\"default\":\"revoluciones por minuto\"}},\"category\":\"speed\"},{\"key\":\"kmh\",\"names\":[\"kmh\"],\"mappings\":{\"default\":{\"default\":\"kilómetros por hora\"}},\"category\":\"speed\"}]\n,\n\"es/units/temperature.js\": \n[{\"locale\":\"es\"},{\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"],\"mappings\":{\"default\":{\"default\":\"Fahrenheit\"}},\"category\":\"temperature\"},{\"key\":\"C\",\"names\":[\"C\",\"°C\"],\"mappings\":{\"default\":{\"default\":\"centígrados\"}},\"category\":\"temperature\"},{\"key\":\"K\",\"names\":[\"K\",\"°K\"],\"mappings\":{\"default\":{\"default\":\"Kelvin\"}},\"category\":\"temperature\"}]\n,\n\"es/units/time.js\": \n[{\"locale\":\"es\"},{\"key\":\"ns\",\"names\":[\"ns\"],\"mappings\":{\"default\":{\"default\":\"nanosegundos\"}},\"category\":\"time\"},{\"key\":\"µs\",\"names\":[\"µs\"],\"mappings\":{\"default\":{\"default\":\"microsegundos\"}},\"category\":\"time\"},{\"key\":\"ms\",\"names\":[\"ms\"],\"mappings\":{\"default\":{\"default\":\"milisegundos\"}},\"category\":\"time\"},{\"key\":\"s\",\"names\":[\"s\"],\"mappings\":{\"default\":{\"default\":\"segundos\"}},\"category\":\"time\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minutos\"}},\"category\":\"time\"},{\"key\":\"h\",\"names\":[\"h\",\"hr\"],\"mappings\":{\"default\":{\"default\":\"hora\"}},\"category\":\"time\"}]\n,\n\"es/units/volume.js\": \n[{\"locale\":\"es\"},{\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"],\"mappings\":{\"default\":{\"default\":\"barrile\"}},\"category\":\"volume\"},{\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"],\"mappings\":{\"default\":{\"default\":\"cúbico\"}},\"category\":\"volume\"},{\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"],\"mappings\":{\"default\":{\"default\":\"onzas líquidas\"}},\"category\":\"volume\"},{\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"],\"mappings\":{\"default\":{\"default\":\"galone\"}},\"category\":\"volume\"},{\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"],\"mappings\":{\"default\":{\"default\":\"pinta\"}},\"category\":\"volume\"},{\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"],\"mappings\":{\"default\":{\"default\":\"quart\"}},\"category\":\"volume\"},{\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"],\"mappings\":{\"default\":{\"default\":\"cuchara\"}},\"category\":\"volume\"},{\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"],\"mappings\":{\"default\":{\"default\":\"cucharilla\"}},\"category\":\"volume\"},{\"key\":\"cc\",\"names\":[\"cc\"],\"mappings\":{\"default\":{\"default\":\"centímetros cúbicos\"}},\"category\":\"volume\"},{\"key\":\"kl\",\"names\":[\"kl\"],\"mappings\":{\"default\":{\"default\":\"kilolitro\"}},\"category\":\"volume\"},{\"key\":\"l\",\"names\":[\"l\"],\"mappings\":{\"default\":{\"default\":\"litro\"}},\"category\":\"volume\"},{\"key\":\"ml\",\"names\":[\"ml\"],\"mappings\":{\"default\":{\"default\":\"mililitro\"}},\"category\":\"volume\"}]\n,\n\"es/units/weight.js\": \n[{\"locale\":\"es\"},{\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"],\"mappings\":{\"default\":{\"default\":\"libra\"}},\"category\":\"weight\"},{\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"],\"mappings\":{\"default\":{\"default\":\"libras imperiales\"}},\"category\":\"weight\"},{\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"],\"mappings\":{\"default\":{\"default\":\"onza\"}},\"category\":\"weight\"},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"microgramo\"}},\"category\":\"weight\"},{\"key\":\"gr\",\"names\":[\"g\",\"gr\"],\"mappings\":{\"default\":{\"default\":\"gramo\"}},\"category\":\"weight\"},{\"key\":\"kg\",\"names\":[\"kg\"],\"mappings\":{\"default\":{\"default\":\"kilogramo\"}},\"category\":\"weight\"},{\"key\":\"mg\",\"names\":[\"mg\"],\"mappings\":{\"default\":{\"default\":\"miligramo\"}},\"category\":\"weight\"},{\"key\":\"t\",\"names\":[\"t\",\"T\"],\"mappings\":{\"default\":{\"default\":\"tonelada\"}},\"category\":\"weight\"}]\n,\n\"nemeth/functions/algebra.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠛\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠞\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠊⠍\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠓⠕⠍\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠅⠑⠗\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠠⠞⠗\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"nemeth/functions/elementary.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠕⠏⠀\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠝⠀\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠛\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠑⠭⠏\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠛⠉⠙\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠇⠉⠍\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠛⠀\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠊⠍\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠗⠑\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠋⠀\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠊⠝⠀⠋\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠎⠥⠏\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠁⠭⠀\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠎⠥⠏\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠚⠇⠊⠍\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠏⠗⠕⠚⠇⠊⠍\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠍⠕⠙\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"⠠⠏⠗\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"nemeth/functions/hyperbolic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠓⠀\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠓⠀\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠓⠀\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠓⠀\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠓⠀\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠕⠓⠀\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠎⠓\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠞⠓\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠉⠓\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠑⠉⠓⠀\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠊⠝⠓⠀\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠞⠁⠕⠓⠀\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"nemeth/functions/trigonometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠀\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠀\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠀\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠀\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠀\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠝⠀\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠉⠕⠎⠀\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠕⠞⠀\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠎⠉⠀\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠑⠉⠀\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠊⠝⠀\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠞⠁⠝⠀\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"nemeth/symbols/digits_rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠲⠼\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠆⠼\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠲⠼\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠶⠼\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠔⠼\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠂⠴⠼\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠒⠼\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠒⠼\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠢⠼\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠢⠼\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠢⠼\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠲⠌⠢⠼\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠖⠼\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠖⠼\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠦⠼\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠦⠼\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠦⠼\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠶⠌⠦⠼\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠼\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠴⠌⠒⠼\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠂⠴⠻⠻\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠆⠴⠻⠻\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠒⠴⠻⠻\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠲⠴⠻⠻\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠢⠴⠻⠻\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠖⠴⠻⠻\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠶⠴⠻⠻\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠦⠴⠻⠻\"}},\"key\":\"324F\"}]\n,\n\"nemeth/symbols/greek-rest.js\": \n[{\"locale\":\"nemeth\"}]\n,\n\"nemeth/symbols/greek-scripts.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠢⠑⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠁⠄\"}}}]\n,\n\"nemeth/symbols/greek-symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠴⠄\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠶⠄\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠋⠖⠄\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠁⠄\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠃⠄\"}},\"key\":\"1D7CB\"}]\n,\n\"nemeth/symbols/hebrew_letters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠢⠄\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠖⠄\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠶⠄\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠦⠄\"}},\"key\":\"2138\"}]\n,\n\"nemeth/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠂⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠃⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"⠈⠝\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠔⠄\"}}}]\n,\n\"nemeth/symbols/latin-rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠉⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠋⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠴⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠂⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠆⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠢⠄\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠃⠄\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠉⠄\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠉⠶⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠁⠄\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠃⠄\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠦⠁⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠴⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠉\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠝\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠽\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠂⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠦⠄\"}}}]\n,\n\"nemeth/symbols/math_angles.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠑⠄\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠶⠉⠄\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠴⠄\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠃⠄\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠉⠄\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠙⠄\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠑⠄\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠋⠄\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠴⠄\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠂⠄\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠆⠄\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠒⠄\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠲⠄\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠢⠄\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠖⠄\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠶⠄\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠦⠄\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠔⠄\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠁⠄\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠃⠄\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠉⠄\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠙⠄\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠑⠄\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠋⠄\"}},\"key\":\"29AF\"}]\n,\n\"nemeth/symbols/math_arrows.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠀\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠀\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠕⠀\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠀\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠕⠀\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠩⠪⠒⠒⠕⠀\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠒⠒⠀\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠀\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠀\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠒⠒⠀\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠀\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠔⠒⠢⠕⠀\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠕⠀\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠽⠀\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠯⠒⠒⠕⠀\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠳⠀\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠳⠒⠒⠕⠀\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠕⠀\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠳⠒⠒⠕⠀\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠳⠒⠕⠀\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠕⠀\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠕⠀\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠨⠡⠀\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠨⠡⠒⠒⠕⠀\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠕⠀\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠔⠢⠔⠀\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠴⠄\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠂⠄\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠆⠄\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠒⠄\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠀⠕⠀\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠀⠔⠀\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠦⠄\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠔⠄\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠕⠀\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠔⠀\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠪⠒⠒⠀\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠫⠒⠒⠕⠀\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠚⠒⠒⠫⠚⠒⠒⠀\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠪⠒⠒⠀\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠕⠀\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠕⠀\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠪⠒⠒⠀\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠪⠒⠒⠀\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠕⠀\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠤⠔⠒⠢⠀\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠤⠔⠒⠢⠕⠀\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠣⠒⠒⠕⠻⠀\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠩⠒⠒⠕⠻⠀\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠀⠒⠀\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠀⠒⠕⠀\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠀⠒⠕⠀\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠀⠒⠕⠀\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠪⠒⠒⠀\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠳⠀\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠪⠒⠒⠀\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠒⠒⠕⠀\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠒⠒⠕⠀\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠸⠒⠒⠕⠀\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠁⠄\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠃⠄\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠉⠄\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠙⠄\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠑⠄\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠋⠄\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠴⠄\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠂⠄\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠆⠄\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠪⠒⠒⠕⠀\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠨⠡⠀\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠀\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠳⠀\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠳⠀\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠂⠄\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠒⠄\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠲⠄\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠲⠄\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠦⠃⠄\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠲⠄\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠦⠄\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠔⠄\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠁⠄\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠃⠄\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠉⠄\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠙⠄\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠑⠄\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠋⠄\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠴⠄\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠂⠄\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠆⠄\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠒⠄\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠲⠄\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠢⠄\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠖⠄\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠶⠄\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠦⠄\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠔⠄\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠁⠄\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠃⠄\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠉⠄\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠙⠄\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠑⠄\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠋⠄\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠂⠄\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠆⠄\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠒⠄\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠲⠄\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠢⠄\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠖⠄\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠶⠄\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠦⠄\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠔⠄\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠁⠄\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠃⠄\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠉⠄\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠙⠄\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠑⠄\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠴⠄\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠂⠄\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠆⠄\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠒⠄\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠲⠄\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠢⠄\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠖⠄\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠶⠄\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠦⠄\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠔⠄\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠁⠄\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠃⠄\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠉⠄\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠙⠄\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠑⠄\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠋⠄\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠴⠄\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠂⠄\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠆⠄\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠒⠄\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠲⠄\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠢⠄\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠖⠄\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠶⠄\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠦⠄\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠔⠄\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠁⠄\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠃⠄\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠉⠄\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠙⠄\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠑⠄\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠋⠄\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠴⠄\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠂⠄\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠆⠄\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠒⠄\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠲⠄\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠢⠄\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠖⠄\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠶⠄\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠦⠄\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠔⠄\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠁⠄\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠃⠄\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠉⠄\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠙⠄\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠑⠄\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠋⠄\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠴⠄\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠂⠄\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠆⠄\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠒⠄\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠲⠄\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠢⠄\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠖⠄\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠶⠄\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠦⠄\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠔⠄\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠁⠄\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠙⠄\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠑⠄\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠋⠄\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠴⠄\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠂⠄\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠆⠄\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠒⠄\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠲⠄\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠢⠄\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠖⠄\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠶⠄\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠦⠄\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠔⠄\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠁⠄\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠃⠄\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠉⠄\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠙⠄\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠑⠄\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠋⠄\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠴⠄\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠂⠄\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠆⠄\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠒⠄\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠲⠄\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠢⠄\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠖⠄\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠶⠄\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠦⠄\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠔⠄\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠴⠄\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠂⠄\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠆⠄\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠒⠄\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠲⠄\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠢⠄\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠖⠄\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠶⠄\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠦⠄\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠔⠄\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠁⠄\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠃⠄\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠒⠄\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠲⠄\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠙⠄\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠁⠄\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠉⠄\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠙⠄\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠶⠄\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠴⠄\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠂⠄\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠆⠄\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠒⠄\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠲⠄\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠢⠄\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠖⠄\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠶⠄\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠦⠄\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠔⠄\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠁⠄\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠃⠄\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠉⠄\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠙⠄\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠑⠄\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠋⠄\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠴⠄\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠂⠄\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠴⠄\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠂⠄\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠆⠄\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠒⠄\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠲⠄\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠢⠄\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠖⠄\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠶⠄\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠦⠄\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠔⠄\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠁⠄\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠃⠄\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠉⠄\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠙⠄\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠑⠄\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠋⠄\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠴⠄\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠂⠄\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠆⠄\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠒⠄\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠲⠄\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠢⠄\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠖⠄\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠶⠄\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠦⠄\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠔⠄\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠁⠄\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠃⠄\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠉⠄\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠔⠄\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠁⠄\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠃⠄\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠉⠄\"}},\"key\":\"FFEC\"}]\n,\n\"nemeth/symbols/math_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠈⠇\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠦⠄\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠉⠄\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠙⠄\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠑⠄\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠋⠄\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠴⠄\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠢⠄\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠙\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠑\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠦⠄\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠔⠄\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠲⠄\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠢⠄\"}},\"key\":\"1D6A5\"}]\n,\n\"nemeth/symbols/math_delimiters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠷\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠾\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠷\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠾\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠷\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠾\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠢⠄\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠖⠄\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠉⠄\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠙⠄\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠑⠄\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠋⠄\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠴⠄\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠂⠄\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠃⠄\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠉⠄\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠙⠄\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠑⠄\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠋⠄\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠴⠄\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠂⠄\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠆⠄\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠒⠄\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠲⠄\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠢⠄\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠖⠄\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠶⠄\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠦⠄\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠔⠄\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠁⠄\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠃⠄\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠉⠄\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠙⠄\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠑⠄\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠋⠄\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠴⠄\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠂⠄\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠆⠄\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠒⠄\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠲⠄\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠢⠄\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠖⠄\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠶⠄\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠦⠄\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠔⠄\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠉⠄\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠙⠄\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠷\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠾\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠴⠄\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠂⠄\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠦⠄\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠔⠄\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠁⠄\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠃⠄\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠉⠄\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠙⠄\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠑⠄\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠋⠄\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠴⠄\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠂⠄\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠆⠄\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠒⠄\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠲⠄\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠢⠄\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠢⠄\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠖⠄\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠷\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠾\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠉⠄\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠙⠄\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠑⠄\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠋⠄\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠷\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠾\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠢⠄\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠖⠄\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠶⠄\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠦⠄\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠔⠄\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠁⠄\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠃⠄\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠉⠄\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠙⠄\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠑⠄\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠋⠄\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠴⠄\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠂⠄\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠆⠄\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠒⠄\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠲⠄\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠢⠄\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠖⠄\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠶⠄\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠦⠄\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠦⠄\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠔⠄\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠁⠄\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠃⠄\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠉⠄\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠙⠄\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠆⠄\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠒⠄\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠲⠄\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠢⠄\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠖⠄\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠶⠄\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠦⠄\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠔⠄\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠑⠄\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠋⠄\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠴⠄\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠂⠄\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠲⠄\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠢⠄\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠖⠄\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠶⠄\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠦⠄\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠔⠄\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠁⠄\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠃⠄\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠙⠄\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠑⠄\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠋⠄\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠑⠄\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠋⠄\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠶⠄\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠦⠄\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠢⠄\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠖⠄\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠶⠄\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠦⠄\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠔⠄\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠁⠄\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠃⠄\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠉⠄\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠙⠄\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠑⠄\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠋⠄\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠴⠄\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠂⠄\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠆⠄\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠒⠄\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠲⠄\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠶⠄\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠦⠄\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠔⠄\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠁⠄\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠃⠄\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠉⠄\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠙⠄\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠑⠄\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠦⠄\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠔⠄\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠃⠄\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠙⠄\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠃⠄\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠙⠄\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠋⠄\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠴⠄\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠆⠄\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠒⠄\"}},\"key\":\"FF63\"}]\n,\n\"nemeth/symbols/math_geometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠴⠄\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠂⠄\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠆⠄\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠒⠄\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠲⠄\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠢⠄\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠖⠄\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠶⠄\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠦⠄\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠔⠄\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠁⠄\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠃⠄\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠉⠄\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠙⠄\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠑⠄\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠋⠄\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠴⠄\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠂⠄\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠆⠄\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠒⠄\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠲⠄\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠢⠄\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠖⠄\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠶⠄\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠦⠄\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠔⠄\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠁⠄\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠃⠄\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠉⠄\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠙⠄\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠑⠄\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠋⠄\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠴⠄\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠂⠄\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠆⠄\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠒⠄\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠲⠄\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠢⠄\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠖⠄\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠶⠄\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠦⠄\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠔⠄\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠁⠄\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠃⠄\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠉⠄\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠙⠄\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠑⠄\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠋⠄\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠴⠄\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠂⠄\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠆⠄\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠒⠄\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠲⠄\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠢⠄\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠖⠄\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠶⠄\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠦⠄\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠔⠄\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠁⠄\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠃⠄\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠉⠄\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠙⠄\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠑⠄\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠋⠄\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠴⠄\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠂⠄\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠆⠄\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠒⠄\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠲⠄\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠢⠄\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠖⠄\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠶⠄\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠦⠄\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠔⠄\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠁⠄\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠃⠄\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠉⠄\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠙⠄\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠑⠄\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠋⠄\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠴⠄\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠂⠄\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠆⠄\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠒⠄\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠲⠄\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠢⠄\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠖⠄\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠶⠄\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠦⠄\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠔⠄\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠁⠄\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠃⠄\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠉⠄\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠙⠄\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠑⠄\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠋⠄\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠴⠄\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠂⠄\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠆⠄\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠒⠄\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠲⠄\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠢⠄\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠖⠄\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠶⠄\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠦⠄\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠔⠄\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠁⠄\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠃⠄\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠉⠄\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠙⠄\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠑⠄\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠋⠄\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠴⠄\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠂⠄\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠆⠄\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠒⠄\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠲⠄\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠢⠄\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠖⠄\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠶⠄\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠦⠄\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠔⠄\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠁⠄\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠃⠄\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠉⠄\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠙⠄\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠑⠄\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠋⠄\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠴⠄\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠂⠄\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠆⠄\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠒⠄\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠲⠄\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠢⠄\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠖⠄\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠶⠄\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠦⠄\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠔⠄\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠁⠄\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠃⠄\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠉⠄\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠙⠄\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠑⠄\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠋⠄\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠴⠄\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠂⠄\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠆⠄\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠒⠄\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠲⠄\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠢⠄\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠖⠄\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠶⠄\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠦⠄\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠔⠄\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠁⠄\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠃⠄\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠉⠄\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠙⠄\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠑⠄\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠋⠄\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠲\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠆⠄\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠒⠄\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠲⠄\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠢⠄\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠖⠄\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠶⠄\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠦⠄\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠔⠄\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠁⠄\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠗\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠗\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠙⠄\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠑⠄\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠋⠄\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠛\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠛\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠞\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠞\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠲⠄\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠢⠄\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠖⠄\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠶⠄\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠦⠄\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠔⠄\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠁⠄\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠃⠄\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠨⠫\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠨⠫\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠑⠄\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠋⠄\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠴⠄\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠂⠄\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠆⠄\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠒⠄\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠲⠄\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠢⠄\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠖⠄\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠶⠄\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠦⠄\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠔⠄\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠉\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠉\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠉⠄\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠙⠄\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠑⠄\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠋⠄\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠴⠄\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠂⠄\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠆⠄\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠒⠄\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠲⠄\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠢⠄\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠖⠄\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠶⠄\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠦⠄\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠔⠄\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠁⠄\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠃⠄\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠉⠄\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠙⠄\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠑⠄\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠋⠄\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠴⠄\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠂⠄\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠆⠄\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠒⠄\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠲⠄\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠢⠄\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠖⠄\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠶⠄\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠦⠄\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠔⠄\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠁⠄\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠃⠄\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠉⠄\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠙⠄\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠑⠄\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠋⠄\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠴⠄\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠂⠄\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠆⠄\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠒⠄\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠲⠄\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠢⠄\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠖⠄\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠶⠄\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠦⠄\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠔⠄\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠁⠄\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠃⠄\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠉⠄\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠙⠄\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠑⠄\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠋⠄\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠆⠄\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠒⠄\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠲⠄\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠢⠄\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠖⠄\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠶⠄\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠦⠄\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠔⠄\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠁⠄\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠃⠄\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠉⠄\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠙⠄\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠑⠄\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠋⠄\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠴⠄\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠂⠄\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠆⠄\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠒⠄\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠲⠄\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠢⠄\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠖⠄\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠶⠄\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠦⠄\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠔⠄\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠁⠄\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠃⠄\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠉⠄\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠙⠄\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠑⠄\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠋⠄\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠴⠄\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠂⠄\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠆⠄\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠒⠄\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠲⠄\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠢⠄\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠖⠄\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠶⠄\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠦⠄\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠔⠄\"}},\"key\":\"2B59\"}]\n,\n\"nemeth/symbols/math_harpoons.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠀\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠠⠕⠀\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠈⠕⠀\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠠⠕⠀\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠈⠕⠀\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠠⠕⠀\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠁⠄\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠃⠄\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠉⠄\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠙⠄\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠑⠄\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠋⠄\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠴⠄\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠂⠄\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠆⠄\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠒⠄\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠲⠄\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠢⠄\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠖⠄\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠶⠄\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠦⠄\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠔⠄\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠁⠄\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠃⠄\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠉⠄\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠙⠄\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠑⠄\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠋⠄\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠴⠄\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠂⠄\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠆⠄\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠒⠄\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠲⠄\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠢⠄\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠖⠄\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠶⠄\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠦⠄\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠔⠄\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠁⠄\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠃⠄\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠉⠄\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠙⠄\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠑⠄\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠋⠄\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠉⠄\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠙⠄\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠑⠄\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠋⠄\"}},\"key\":\"297F\"}]\n,\n\"nemeth/symbols/math_non_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠴⠋⠄\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠖⠄\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠶⠄\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠑⠄\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠋⠄\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠴⠄\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠂⠄\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠞\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠒⠄\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠢⠄\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠖⠄\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠶⠄\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠁⠄\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠠⠁\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠑⠄\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠆⠄\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠔⠄\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠁⠄\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠃⠄\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠂⠄\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠆⠄\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠒⠄\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠲⠄\"}},\"key\":\"2144\"}]\n,\n\"nemeth/symbols/math_symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨⠼\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠎\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠴\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠯\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠠\",\"defaultLibLouis\":\"⠠⠀\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨\",\"other\":\"⠲\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠒\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠆\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠀\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠅⠀\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠀\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠦\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⡘\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠸\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠼\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠫\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠢⠄\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠳\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠠⠎\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠦⠄\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠉\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠁⠄\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠃⠄\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠉⠄\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠗\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬⠤\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠨⠍\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠖⠄\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠦⠄\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠁⠄\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠃⠄\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠌\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠦⠄\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠔⠄\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠁⠄\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠃⠄\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠙⠄\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠳⠳\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠶⠄\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠠⠦\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠁⠄\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠃⠄\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠴\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠑⠄\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠋⠄\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠻\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠸⠻\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠔⠔\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠒⠄\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠶⠄\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠴⠄\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠂⠄\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠢⠄\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠖⠄\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠶⠄\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠦⠄\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠔⠄\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠁⠄\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠃⠄\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠖\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠙⠄\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠋⠄\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠴⠄\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠂⠄\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠆⠄\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠒⠄\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠲⠄\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠹\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠖\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠹\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠃⠄\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠉⠄\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠙⠄\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠑⠄\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠋⠄\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠴⠄\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠂⠄\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠆⠄\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠒⠄\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠲⠄\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠢⠄\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠖⠄\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠶⠄\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠦⠄\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠔⠄\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠁⠄\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠃⠄\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠉⠄\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠙⠄\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠑⠄\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠁⠄\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠃⠄\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠉⠄\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠙⠄\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠑⠄\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠁⠄\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠃⠄\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠉⠄\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠙⠄\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠑⠄\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠁⠄\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠃⠄\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠉⠄\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠙⠄\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠑⠄\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠯\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠂⠄\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠿\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠈⠿\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠴\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠖⠄\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠑⠀\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠁⠀\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠁⠀\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠢⠀\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠳⠀\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠋⠄\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠴⠄\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠎\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤⠬\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠲⠄\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠔⠄\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠁⠄\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠃⠄\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠉⠄\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠰⠆⠀\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠠⠿\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠨⠗⠻\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠳\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠇⠀\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠫⠇⠀\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮⠮\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠉⠻\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠆⠋⠄\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠴⠄\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠂⠄\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠪⠢⠔⠻\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠢⠔⠕⠻\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠠⠡⠀\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠌⠀\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠂⠀\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠶⠄\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠦⠄\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠔⠄\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠁⠄\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠃⠄\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠙⠄\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠑⠄\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠋⠄\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠴⠄\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠂⠄\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠆⠄\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠒⠄\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠲⠄\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠱⠈⠱⠀\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠖⠄\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠶⠄\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠦⠄\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠔⠄\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠁⠄\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠃⠄\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠉⠄\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠣⠠⠣⠀\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠑⠄\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠋⠄\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠴⠄\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠂⠄\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠆⠄\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠒⠄\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠲⠄\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠢⠄\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠖⠄\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠶⠄\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠦⠄\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠔⠄\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠁⠄\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠃⠄\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠉⠄\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠙⠄\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠑⠄\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠋⠄\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠅⠀\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠇⠀\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠇⠀\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠒⠄\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠱⠀\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠅⠀\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠨⠅⠀\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠌⠨⠅⠀\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠐⠅⠻⠀\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠨⠂⠻⠀\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠉⠄\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠣⠠⠣⠀\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠀\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠀\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠱⠀\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠱⠀\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠱⠀\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠈⠱⠀\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠈⠱⠀\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠂⠀\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠐⠅⠀\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠨⠂⠀\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠐⠅⠀\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠀\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠀\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠀\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠀\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠀\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠀\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠐⠅⠀\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠂⠀\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠀⠅⠱\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠀⠅⠱⠀\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠌⠨⠅⠀\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠌⠨⠅⠀\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠉⠄\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠙⠄\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠑⠄\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠋⠄\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠴⠄\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠂⠄\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠆⠄\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠒⠄\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠲⠄\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠻\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠌⠻\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠘⠨⠡⠻\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠼⠻\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠅⠻\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠤⠻\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠬⠻\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠤⠻\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠈⠡⠻\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠡⠻\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠆⠄\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠒⠄\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠲⠄\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠏⠀\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠖⠄\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠶⠄\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠦⠄\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠔⠄\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠁⠄\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠃⠄\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠉⠄\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠙⠄\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠑⠄\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠋⠄\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠴⠄\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠂⠄\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠆⠄\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠒⠄\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠲⠄\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠢⠄\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠖⠄\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠶⠄\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠦⠄\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠔⠄\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠁⠄\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠃⠄\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠉⠄\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠙⠄\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠋⠄\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠲⠄\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠖⠄\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠶⠄\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠦⠄\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠔⠄\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠁⠄\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠃⠄\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠉⠄\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠙⠄\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠑⠄\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠋⠄\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠴⠄\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠂⠄\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠆⠄\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠒⠄\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠲⠄\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠢⠄\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠖⠄\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠶⠄\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠦⠄\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠔⠄\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠁⠄\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠃⠄\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠐⠅⠀\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠨⠂⠀\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠑⠄\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠋⠄\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠴⠄\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠂⠄\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠆⠄\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠒⠄\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠲⠄\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠢⠄\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠖⠄\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠶⠄\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠦⠄\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠔⠄\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠁⠄\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠃⠄\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠉⠄\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠙⠄\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠄⠄⠄\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠄⠄⠄\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠰⠄⠄⠄\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠆⠄\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠒⠄\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠲⠄\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠢⠄\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠖⠄\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠶⠄\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠦⠄\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠔⠄\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠁⠄\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠃⠄\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠉⠄\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠙⠄\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠑⠄\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠋⠄\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠴⠄\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠆⠄\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠢⠄\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠖⠄\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠶⠄\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠴⠄\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠂⠄\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠆⠄\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠒⠄\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠲⠄\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠢⠄\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠖⠄\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠶⠄\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠴⠄\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠋⠄\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠂⠄\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠏\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠒⠄\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠲⠄\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠶⠄\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠦⠄\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠔⠄\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠁⠄\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠃⠄\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠉⠄\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠙⠄\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠑⠄\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠋⠄\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠴⠄\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠂⠄\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠆⠄\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠒⠄\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠲⠄\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠢⠄\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠖⠄\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠶⠄\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠦⠄\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠔⠄\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠁⠄\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠃⠄\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠉⠄\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠙⠄\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠑⠄\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠋⠄\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠴⠄\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠂⠄\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠆⠄\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠒⠄\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠲⠄\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠢⠄\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠃⠄\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠉⠄\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳⠳⠳\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠂⠄\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠆⠄\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠔⠄\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠁⠄\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠴⠄\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠂⠄\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠆⠄\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠢⠄\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠳⠻\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠇⠻\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠡⠻\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠏⠻\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠁⠄\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠃⠄\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠉⠄\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠑⠄\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠔⠔⠻\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠐⠅⠻\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠂⠻\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠆⠄\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠒⠄\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠲⠄\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠢⠄\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠖⠄\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠶⠄\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠦⠄\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠔⠄\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠁⠄\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠃⠄\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠉⠄\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠙⠄\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠑⠄\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠋⠄\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠴⠄\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠂⠄\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠆⠄\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠒⠄\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠲⠄\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠢⠄\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠖⠄\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠶⠄\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠉⠄\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠙⠄\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠑⠄\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠋⠄\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠴⠄\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠂⠄\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠆⠄\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠒⠄\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠲⠄\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠢⠄\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠖⠄\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠶⠄\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠦⠄\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠔⠄\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠃⠄\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠑⠄\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠋⠄\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠴⠄\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠂⠄\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠆⠄\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠒⠄\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠲⠄\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠢⠄\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠖⠄\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠶⠄\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠦⠄\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠔⠄\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠁⠄\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠃⠄\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠑⠄\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠋⠄\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠒⠄\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠲⠄\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠢⠄\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠖⠄\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠶⠄\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠦⠄\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠔⠄\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠁⠄\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠃⠄\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠉⠄\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠙⠄\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠑⠄\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠋⠄\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠴⠄\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠂⠄\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠆⠄\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠒⠄\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠲⠄\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠢⠄\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠖⠄\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠦⠄\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠔⠄\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠁⠄\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠃⠄\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠉⠄\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠙⠄\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠑⠄\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠋⠄\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠴⠄\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠂⠄\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠆⠄\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠒⠄\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠲⠄\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠢⠄\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠖⠄\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠶⠄\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠦⠄\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠔⠄\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠁⠄\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠃⠄\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠉⠄\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠙⠄\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠑⠄\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠋⠄\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠴⠄\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠂⠄\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠆⠄\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠒⠄\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠲⠄\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠢⠄\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠖⠄\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠶⠄\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠌⠻\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠔⠄\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠁⠄\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠃⠄\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠉⠄\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠙⠄\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠑⠄\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠋⠄\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠴⠄\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠂⠄\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠆⠄\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠒⠄\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠲⠄\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠢⠄\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠖⠄\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠶⠄\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠦⠄\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠔⠄\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠁⠄\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠃⠄\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠉⠄\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠙⠄\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠑⠄\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠋⠄\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠴⠄\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠂⠄\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠆⠄\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠒⠄\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠲⠄\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠢⠄\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠖⠄\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠶⠄\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠦⠄\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠔⠄\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠁⠄\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠃⠄\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠉⠄\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠙⠄\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠑⠄\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠋⠄\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠴⠄\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠂⠄\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠆⠄\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠒⠄\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠲⠄\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠢⠄\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠖⠄\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠶⠄\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠦⠄\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠔⠄\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠁⠄\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠃⠄\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠉⠄\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠙⠄\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠑⠄\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠋⠄\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠴⠄\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠂⠄\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠆⠄\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠒⠄\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠲⠄\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠢⠄\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠖⠄\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠶⠄\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠦⠄\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠔⠄\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠁⠄\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠃⠄\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠉⠄\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠙⠄\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠑⠄\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠋⠄\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠴⠄\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠂⠄\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠆⠄\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠒⠄\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠲⠄\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠢⠄\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠖⠄\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠶⠄\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠦⠄\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠔⠄\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠁⠄\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠃⠄\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠉⠄\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠙⠄\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠑⠄\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠋⠄\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠴⠄\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠂⠄\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠆⠄\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠒⠄\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠲⠄\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠢⠄\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠖⠄\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠶⠄\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠦⠄\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠔⠄\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠁⠄\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠃⠄\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠉⠄\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠙⠄\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠑⠄\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠋⠄\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠴⠄\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠂⠄\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠆⠄\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠒⠄\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠲⠄\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠢⠄\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠖⠄\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠶⠄\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠦⠄\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠔⠄\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠁⠄\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠃⠄\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠉⠄\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠙⠄\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠑⠄\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠱⠀\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠱⠀\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠨⠅⠀\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠨⠅⠀\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠨⠅⠀\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠈⠱⠀\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠈⠱⠀\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠨⠐⠅⠻⠀\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠨⠨⠐⠻⠀\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠙⠄\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠑⠄\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠋⠄\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠴⠄\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠂⠄\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠆⠄\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠒⠄\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠲⠄\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠢⠄\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠖⠄\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠶⠄\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠦⠄\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠔⠄\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠁⠄\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠃⠄\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠉⠄\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠙⠄\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠑⠄\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠋⠄\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠴⠄\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠂⠄\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠆⠄\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠒⠄\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠲⠄\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠢⠄\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠖⠄\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠶⠄\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠦⠄\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠔⠄\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠁⠄\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠃⠄\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠉⠄\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠙⠄\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠑⠄\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠋⠄\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠴⠄\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠂⠄\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠆⠄\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠒⠄\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠲⠄\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠢⠄\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠖⠄\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠶⠄\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠦⠄\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠔⠄\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠁⠄\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠃⠄\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠉⠄\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠙⠄\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠑⠄\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠋⠄\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠴⠄\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠂⠄\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠆⠄\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠒⠄\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠲⠄\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠢⠄\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠖⠄\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠶⠄\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠦⠄\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠔⠄\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠁⠄\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠃⠄\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠉⠄\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠙⠄\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠑⠄\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠋⠄\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠉⠄\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠴⠄\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠒⠄\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠲⠄\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠢⠄\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠖⠄\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠔⠄\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠴⠄\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠂⠄\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠆⠄\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠒⠄\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠲⠄\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠢⠄\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠖⠄\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠔⠄\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠁⠄\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠃⠄\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠉⠄\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠙⠄\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠑⠄\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠋⠄\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠴⠄\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠆⠄\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠲⠄\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠢⠄\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠖⠄\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠶⠄\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠦⠄\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠋⠄\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠴⠄\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠂⠄\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠆⠄\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠒⠄\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠲⠄\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠢⠄\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠖⠄\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠦⠄\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠔⠄\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠁⠄\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠃⠄\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠂⠄\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠆⠄\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠒⠄\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠲⠄\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠢⠄\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠖⠄\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠶⠄\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠁⠄\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠃⠄\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠉⠄\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠙⠄\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠑⠄\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠋⠄\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠁⠄\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠃⠄\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠉⠄\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠙⠄\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠑⠄\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠋⠄\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠆⠴⠄\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠉⠄\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠑⠄\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠲⠴⠄\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠉⠄\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠴⠄\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠂⠄\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠆⠄\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠲⠄\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠢⠄\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠖⠄\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠦⠄\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠙⠄\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠑⠄\"}},\"key\":\"FFEE\"}]\n,\n\"nemeth/symbols/math_whitespace.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠑⠄\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠋⠄\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠦⠄\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠔⠄\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠁⠄\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠃⠄\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠉⠄\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠙⠄\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠑⠄\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠠\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠁⠄\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠃⠄\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠑⠄\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠋⠄\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠋⠋⠄\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠔⠄\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠁⠄\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠃⠄\"}},\"key\":\"FFFB\"}]\n,\n\"nemeth/symbols/other_stars.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠦⠄\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠴⠢⠄\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠎\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠁⠄\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠃⠄\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠴⠢⠄\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠒⠄\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠲⠄\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠖⠄\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠶⠄\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠦⠄\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠃⠄\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠉⠄\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠴⠄\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠂⠄\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠆⠄\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠒⠄\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠲⠄\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠢⠄\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠖⠄\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠶⠄\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠦⠄\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠔⠄\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠁⠄\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠃⠄\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠉⠄\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠙⠄\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠑⠄\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠋⠄\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠴⠄\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠂⠄\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠆⠄\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠒⠄\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠲⠄\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠢⠄\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠖⠄\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠔⠄\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠁⠄\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠃⠄\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠉⠄\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠙⠄\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠑⠄\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠋⠄\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠴⠄\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠂⠄\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠆⠄\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠒⠄\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠲⠄\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠢⠄\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠖⠄\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠶⠄\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠦⠄\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠔⠄\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠁⠄\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠃⠄\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠉⠄\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠙⠄\"}},\"key\":\"274D\"}]\n,\n\"nemeth/units/energy.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠺\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠠⠺\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠠⠺\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠺⠓\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠚\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠝\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠁\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠧\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠨⠠⠺\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠨⠠⠺\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠛⠨⠠⠺\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"nemeth/units/length.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠍\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠉⠍\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠅⠍\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠋⠞\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠊⠝\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠊\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠽⠙\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠝⠲⠍⠸⠲\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]}]\n,\n\"nemeth/units/memory.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠃\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠃\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠃\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠃\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠃\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞⠃\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"nemeth/units/other.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠙⠕⠵\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠎⠟\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠓⠁\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"nemeth/units/speed.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠞\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠏⠓\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠗⠏⠍\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠍⠓\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"nemeth/units/temperature.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠋\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠉\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠅\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"nemeth/units/time.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠝⠎\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠎\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠎\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠎\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠓\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"nemeth/units/volume.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠃⠃⠇\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠥\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠋⠇⠸⠲⠀⠕⠵⠸⠲\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠛⠁⠇\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠏⠞\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠟⠞\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠃⠎⠏\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠎⠏\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠉\"}},\"key\":\"cc\",\"names\":[\"cc\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠅⠇\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠇\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠍⠇\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"nemeth/units/weight.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠃\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠞\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠕⠵\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"⠨⠍⠛\"}}},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠗\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠛\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠉⠛\"}},\"key\":\"mcg\",\"names\":[\"mg\",\"µg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠛\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n,\n\"fr/functions/algebra.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degré\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"déterminant\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"dimension\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"homomorphisme\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"noyau\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"trace\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"fr/functions/elementary.js\": \n[{\"locale\":\"fr\"},{\"key\":\"log\",\"mappings\":{\"default\":{\"default\":\"log\"}},\"category\":\"Logarithm\",\"names\":[\"log\"]},{\"key\":\"ln\",\"mappings\":{\"default\":{\"default\":\"logarithme népérien\"}},\"category\":\"Logarithm\",\"names\":[\"ln\"]},{\"key\":\"lg\",\"names\":[\"lg\"],\"mappings\":{\"default\":{\"default\":\"logarithme décimal\"}},\"category\":\"Logarithm\"},{\"key\":\"exp\",\"names\":[\"exp\",\"expt\"],\"mappings\":{\"default\":{\"default\":\"exponentielle\"}},\"category\":\"Elementary\"},{\"key\":\"gcd\",\"names\":[\"gcd\",\"PGCD\",\"pgcd\"],\"mappings\":{\"default\":{\"default\":\"plus grand commun diviseur\"},\"mathspeak\":{\"default\":\"pgcd\"},\"clearspeak\":{\"default\":\"pgcd\"}},\"category\":\"Elementary\"},{\"key\":\"lcm\",\"names\":[\"lcm\",\"ppcm\",\"PPCM\",\"PPMC\",\"ppmc\"],\"mappings\":{\"default\":{\"default\":\"plus petit commun multiple\"},\"mathspeak\":{\"default\":\"ppcm\"},\"clearspeak\":{\"default\":\"ppcm\"}},\"category\":\"Elementary\"},{\"key\":\"arg\",\"names\":[\"arg\"],\"mappings\":{\"default\":{\"default\":\"argument\"}},\"category\":\"Complex\"},{\"key\":\"im\",\"names\":[\"im\"],\"mappings\":{\"default\":{\"default\":\"partie imaginaire\"}},\"category\":\"Complex\"},{\"key\":\"re\",\"names\":[\"re\"],\"mappings\":{\"default\":{\"default\":\"partie réelle\"}},\"category\":\"Complex\"},{\"key\":\"inf\",\"names\":[\"inf\"],\"mappings\":{\"default\":{\"default\":\"borne inférieure\"}},\"category\":\"Limits\"},{\"key\":\"lim\",\"mappings\":{\"default\":{\"default\":\"limite\"}},\"category\":\"Limits\",\"names\":[\"lim\"]},{\"key\":\"max\",\"names\":[\"max\"],\"mappings\":{\"default\":{\"default\":\"maximum\"}},\"category\":\"Limits\"},{\"key\":\"min\",\"names\":[\"min\"],\"mappings\":{\"default\":{\"default\":\"minimum\"}},\"category\":\"Limits\"},{\"key\":\"sup\",\"names\":[\"sup\"],\"mappings\":{\"default\":{\"default\":\"borne supérieure\"}},\"category\":\"Limits\"},{\"key\":\"lim inf\",\"names\":[\"lim inf\",\"liminf\"],\"mappings\":{\"default\":{\"default\":\"limite inferior\"}},\"category\":\"Limits\"},{\"key\":\"lim sup\",\"names\":[\"lim sup\",\"limsup\"],\"mappings\":{\"default\":{\"default\":\"limite superior\"}},\"category\":\"Limits\"},{\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"],\"mappings\":{\"default\":{\"default\":\"limite inductive\"}},\"category\":\"Limits\"},{\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"],\"mappings\":{\"default\":{\"default\":\"limite projective\"}},\"category\":\"Limits\"},{\"key\":\"mod\",\"names\":[\"mod\"],\"mappings\":{\"default\":{\"default\":\"modulo\"}},\"category\":\"Elementary\"},{\"key\":\"Pr\",\"names\":[\"Pr\"],\"mappings\":{\"default\":{\"default\":\"probabilité\"}},\"category\":\"Probability\"}]\n,\n\"fr/functions/hyperbolic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cosh\",\"mappings\":{\"default\":{\"default\":\"cosinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"cosh\"]},{\"key\":\"coth\",\"mappings\":{\"default\":{\"default\":\"cotangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"coth\"]},{\"key\":\"csch\",\"mappings\":{\"default\":{\"default\":\"cosécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"csch\"]},{\"key\":\"sech\",\"mappings\":{\"default\":{\"default\":\"sécante hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sech\"]},{\"key\":\"sinh\",\"mappings\":{\"default\":{\"default\":\"sinus hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"sinh\"]},{\"key\":\"tanh\",\"mappings\":{\"default\":{\"default\":\"tangente hyperbolique\"}},\"category\":\"Hyperbolic\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosinus hyperbolique\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\",\"argch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cotangente hyperbolique\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\",\"argcoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument cosécante hyperbolique\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\",\"argcsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sécante hyperbolique\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\",\"argsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument sinus hyperbolique\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\",\"argsh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"argument tangente hyperbolique\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\",\"argth\"]}]\n,\n\"fr/functions/trigonometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"cos\",\"mappings\":{\"default\":{\"default\":\"cosinus\"}},\"category\":\"Trigonometric\",\"names\":[\"cos\",\"cosine\"]},{\"key\":\"cot\",\"mappings\":{\"default\":{\"default\":\"cotangente\"}},\"category\":\"Trigonometric\",\"names\":[\"cot\"]},{\"key\":\"csc\",\"mappings\":{\"default\":{\"default\":\"cosécante\"}},\"category\":\"Trigonometric\",\"names\":[\"csc\"]},{\"key\":\"sec\",\"mappings\":{\"default\":{\"default\":\"sécante\"}},\"category\":\"Trigonometric\",\"names\":[\"sec\"]},{\"key\":\"sin\",\"mappings\":{\"default\":{\"default\":\"sinus\"}},\"category\":\"Trigonometric\",\"names\":[\"sin\",\"sine\"]},{\"key\":\"tan\",\"mappings\":{\"default\":{\"default\":\"tangente\"}},\"category\":\"Trigonometric\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosinus\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cotangente\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc cosécante\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sécante\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc sinus\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"arc tangente\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"fr/symbols/digits_rest.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00B2\",\"mappings\":{\"default\":{\"default\":\"au carré\"},\"mathspeak\":{\"default\":\"au carré\"},\"clearspeak\":{\"default\":\"au carré\"}},\"category\":\"No\"},{\"key\":\"00B3\",\"mappings\":{\"default\":{\"default\":\"cubique\"},\"mathspeak\":{\"default\":\"cubique\"},\"clearspeak\":{\"default\":\"cubique\"}},\"category\":\"No\"},{\"key\":\"00BC\",\"mappings\":{\"default\":{\"default\":\"un quart\"}},\"category\":\"No\"},{\"key\":\"00BD\",\"mappings\":{\"default\":{\"default\":\"un demi\"}},\"category\":\"No\"},{\"key\":\"00BE\",\"mappings\":{\"default\":{\"default\":\"trois quarts\"}},\"category\":\"No\"},{\"key\":\"2150\",\"mappings\":{\"default\":{\"default\":\"un septième\"}},\"category\":\"No\"},{\"key\":\"2151\",\"mappings\":{\"default\":{\"default\":\"un neuvième\"}},\"category\":\"No\"},{\"key\":\"2152\",\"mappings\":{\"default\":{\"default\":\"un dixième\"}},\"category\":\"No\"},{\"key\":\"2153\",\"mappings\":{\"default\":{\"default\":\"un tiers\"}},\"category\":\"No\"},{\"key\":\"2154\",\"mappings\":{\"default\":{\"default\":\"deux tiers\"}},\"category\":\"No\"},{\"key\":\"2155\",\"mappings\":{\"default\":{\"default\":\"un cinquième\"}},\"category\":\"No\"},{\"key\":\"2156\",\"mappings\":{\"default\":{\"default\":\"deux cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2157\",\"mappings\":{\"default\":{\"default\":\"trois cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2158\",\"mappings\":{\"default\":{\"default\":\"quatre cinquièmes\"}},\"category\":\"No\"},{\"key\":\"2159\",\"mappings\":{\"default\":{\"default\":\"un sixième\"}},\"category\":\"No\"},{\"key\":\"215A\",\"mappings\":{\"default\":{\"default\":\"cinq sixièmes\"}},\"category\":\"No\"},{\"key\":\"215B\",\"mappings\":{\"default\":{\"default\":\"un huitième\"}},\"category\":\"No\"},{\"key\":\"215C\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes\"}},\"category\":\"No\"},{\"key\":\"215D\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes\"}},\"category\":\"No\"},{\"key\":\"215E\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes\"}},\"category\":\"No\"},{\"key\":\"215F\",\"mappings\":{\"default\":{\"default\":\"numérateur un\"}},\"category\":\"No\"},{\"key\":\"2189\",\"mappings\":{\"default\":{\"default\":\"zero tiers\"}},\"category\":\"No\"},{\"key\":\"3248\",\"mappings\":{\"default\":{\"default\":\"dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"3249\",\"mappings\":{\"default\":{\"default\":\"vingt cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324A\",\"mappings\":{\"default\":{\"default\":\"trente cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324B\",\"mappings\":{\"default\":{\"default\":\"quarante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324C\",\"mappings\":{\"default\":{\"default\":\"cinquante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324D\",\"mappings\":{\"default\":{\"default\":\"soixante cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324E\",\"mappings\":{\"default\":{\"default\":\"soixante dix cerclé sur carré noir\"}},\"category\":\"No\"},{\"key\":\"324F\",\"mappings\":{\"default\":{\"default\":\"quatre vingts cerclé sur carré noir\"}},\"category\":\"No\"}]\n,\n\"fr/symbols/greek-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"0394\",\"mappings\":{\"clearspeak\":{\"default\":\"triangle\",\"TriangleSymbol_Delta\":\"Delta majuscule\"}}}]\n,\n\"fr/symbols/greek-scripts.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"petite gamma majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"petite lambda majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"petite pi majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"petite rhô majuscule\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"petite psi majuscule\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"gamma suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"phi suscript\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"bêta souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"gamma souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"rhô souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"phi souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"khi souscrit\"}}}]\n,\n\"fr/symbols/greek-symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"03D0\",\"mappings\":{\"default\":{\"default\":\"bêta grec\"}},\"category\":\"Ll\"},{\"key\":\"03D7\",\"mappings\":{\"default\":{\"default\":\"ligature kai\"}},\"category\":\"Ll\"},{\"key\":\"03F6\",\"mappings\":{\"default\":{\"default\":\"epsilon lunaire réfléchi\"}},\"category\":\"Sm\"},{\"category\":\"Lu\",\"key\":\"1D7CA\",\"mappings\":{\"default\":{\"default\":\"Digamma en gras\"}}},{\"category\":\"Ll\",\"key\":\"1D7CB\",\"mappings\":{\"default\":{\"default\":\"digamma en gras\"}}}]\n,\n\"fr/symbols/hebrew_letters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2135\",\"mappings\":{\"default\":{\"default\":\"alef\"}},\"category\":\"Lo\"},{\"key\":\"2136\",\"mappings\":{\"default\":{\"default\":\"bèt\"}},\"category\":\"Lo\"},{\"key\":\"2137\",\"mappings\":{\"default\":{\"default\":\"guimel\"}},\"category\":\"Lo\"},{\"key\":\"2138\",\"mappings\":{\"default\":{\"default\":\"dalèt\"}},\"category\":\"Lo\"}]\n,\n\"fr/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"u trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"u trémaa et caron\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"u trémaa et accent grave\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"a trémaa et macron\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"a point en chef et macron\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"o ogonek et macron\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"a rond en chef et accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"o tréma et macron\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"o tilde et macron\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"o point en chef et macron\"}}},{\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"c cédille et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"e macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"e macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"e cédille et brève\"}},\"category\":\"Ll\"},{\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"i tréma et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"l point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"o tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"o tilde et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"o macron et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"o macron et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"r point souscrit et macron\"}},\"category\":\"Ll\"},{\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"s accent aigu et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"s caron et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"s point souscrit et point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"u tilde et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"u macron et tréma\"}},\"category\":\"Ll\"},{\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"a brève et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"a brève et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"a brève et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"a brève et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"a brève et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et tilde\"}},\"category\":\"Ll\"},{\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe et point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"o cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"o cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"o cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"o cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"o cornu point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"u cornu accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"u cornu accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"u cornu crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"u cornu tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"u cornu point souscrit\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"o barré\"}},\"category\":\"Ll\"},{\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"d barré\"}},\"category\":\"Ll\"},{\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"h barré\"}},\"category\":\"Ll\"},{\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"l barré\"}},\"category\":\"Ll\"},{\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"t barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"b barré\"}}},{\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"lambda barré\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"z barré\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"g barré\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"o barré accent aigu\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"c barré\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"e barré\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"j barré\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"r barré\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"y barré\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"j sans point barré\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"i barré\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"j sans point barré crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"coup de glotte barré réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"o couché barré obliquement\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"iota barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"p barré\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"upsilon barré\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"s long à barre diagonale\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"s long à barre haute\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"delta culbutée\"}}},{\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"s long point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"delta\"}}},{\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"kra\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"s long\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"b potence\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"sixiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"c crosse\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"d potence\"}}},{\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"f cursif\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"hv (Hwair)\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"k crosse\"}}},{\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"l rayé\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"n à long jambage de droite\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"o cornu\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"gha\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"p crosse\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"deuxiéme ton\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"ech réfléchi bouclé\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"t hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"t crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"u cornu\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"y crosse\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"ej réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"ej hameçon\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"cinquiéme tun\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"wynn\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"dz caron\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"lj\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"nj\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"ae macron\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"ej caron\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"dz\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"yogh\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"lej\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"ej\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"ej bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"digramme Dej\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"e culbuté\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"ae accent aigu (ash)\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"d bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"ou\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"z crochet\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"l bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"n bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"t bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Db\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"Ligature minuscule latine Qp\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"s à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"z à paraphe\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"coup de glotte\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"q avec hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"a culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"alpha\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"alpha culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"b crosse\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"o ouvert\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"c bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"d hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"d crosse\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"e réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"schwa\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"schwa crochet\"}}},{\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"e ouvert\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi crochet\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi fermé\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"g crosse\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"g cursif\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"gamma\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"petit gamma\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"h culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"h crosse\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"eng crosse\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"iota\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"l tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"l sanglé\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"l hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"m culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"m hampé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"m hameçon\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"n hameçon à gauche\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"n hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"o barré\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"oméga fermé\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"phi\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"r culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"r prolongé culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"r crosse culbuté\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"r prolongé\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"r hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"r sans obit\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"s hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"ech\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"r sans obit réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"ech bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"t culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"t hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"u barré\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"upsilon\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"v de ronde\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"v culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"w culbuté\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"y culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"z hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"z bouclé\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"coup de glotte réfléchi\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"coup de glotte culbuté\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"C étiré\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"clic bilabial\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"epsilon fermé\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"k culbuté\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"q crosse\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"digramme Dz\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"digramme Dz bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"digramme Ts\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"digramme Tech\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"digramme Tc bouclé\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"digramme Feng\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"digramme Ls\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"digramme Lz\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"percussion bilabiale\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"percussion bidentale\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"h culbuté crosse réfléchie et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"ae culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"epsilon culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"i culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"o couché\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"o ouvert couché\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"oe culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de o\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"u couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"u tréma couché\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"m couché\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"fricative pharyngale voisée\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"aïn\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"ue\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"b tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"d tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"f tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"m tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"n tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"p tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"r tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"r sans obit tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"s tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"t tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"z tilde médian\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"g culbuté\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"g insulaire\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"th barré diagonalement\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"b hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"d hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"f hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"g hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"k hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"l hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"m hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"n hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"p hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"r hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"s hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"ech hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"v hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"x hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"z hameçon palatal\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"a hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"alpha hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"d crosse et hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"e hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"epsilon hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"epsilon réfléchi hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"schwa hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"i hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"o ouvert hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"ech hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"u hameçon rétroflexe\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"ej hameçon rétroflexe\"}}},{\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"n précédée d'une apostrophe\"}},\"category\":\"Ll\"},{\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"eng\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"a accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"a accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"a accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"a tilde\"}},\"category\":\"Ll\"},{\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"a tréma\"}},\"category\":\"Ll\"},{\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"a rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"c cédille\"}},\"category\":\"Ll\"},{\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"e accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"e accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"e tréma\"}},\"category\":\"Ll\"},{\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"i accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"i accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"i accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"i tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"n tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"o accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"o accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"o accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"o tilde\"}},\"category\":\"Ll\"},{\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"o tréma\"}},\"category\":\"Ll\"},{\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"u accent grave\"}},\"category\":\"Ll\"},{\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"u accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"u tréma\"}},\"category\":\"Ll\"},{\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"y accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"y tréma\"}},\"category\":\"Ll\"},{\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"a macron\"}},\"category\":\"Ll\"},{\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"a brève\"}},\"category\":\"Ll\"},{\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"a ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"c accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"c accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"c point en chef\"}},\"category\":\"Ll\"},{\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"c caron\"}},\"category\":\"Ll\"},{\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"d caron\"}},\"category\":\"Ll\"},{\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"e macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"e brève\"}}},{\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"e point en chef\"}},\"category\":\"Ll\"},{\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"e ogonek\"}},\"category\":\"Ll\"},{\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"e caron\"}},\"category\":\"Ll\"},{\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"g accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"g brève\"}},\"category\":\"Ll\"},{\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"g point en chef\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"g cédille\"}}},{\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"h accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"i tilde\"}},\"category\":\"Ll\"},{\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"i macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"i brève\"}}},{\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"i ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"i sans point\"}},\"category\":\"Ll\"},{\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"j accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"k cédille\"}},\"category\":\"Ll\"},{\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"l accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"l cédille\"}},\"category\":\"Ll\"},{\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"l caron\"}},\"category\":\"Ll\"},{\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"l point médian\"}},\"category\":\"Ll\"},{\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"n accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"n cédille\"}},\"category\":\"Ll\"},{\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"n caron\"}},\"category\":\"Ll\"},{\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"o macron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"o brève\"}}},{\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"o avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"r accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"r cédille\"}},\"category\":\"Ll\"},{\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"r caron\"}},\"category\":\"Ll\"},{\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"s accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"s accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"s cédille\"}},\"category\":\"Ll\"},{\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"s caron\"}},\"category\":\"Ll\"},{\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"t cédille\"}},\"category\":\"Ll\"},{\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"t caron\"}},\"category\":\"Ll\"},{\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"u tilde\"}},\"category\":\"Ll\"},{\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"u macron\"}},\"category\":\"Ll\"},{\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"u brève\"}},\"category\":\"Ll\"},{\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"u rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"u avec double accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"u ogonek\"}},\"category\":\"Ll\"},{\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"w accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"y accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"z accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"z point en chef\"}},\"category\":\"Ll\"},{\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"z caron\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"a caron\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"i caron\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"o caron\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"u caron\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"g caron\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"k caron\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"o ogonek\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"j caron\"}}},{\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"g accent aigu\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"n grave\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"a double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"a brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"e double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"e brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"i double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"i brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"o double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"o brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"r double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"r brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"u double accent grave\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"u brève renversée\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"s virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"t virgule souscrite *\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"h caron\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"a point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"e cédille\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"o point en chef\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"y macron\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"j sans point\"}}},{\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"a à rond souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"b point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"b point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"b ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"d point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"d point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"d ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"d cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"d accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"e accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"e tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"f point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"g macron\"}},\"category\":\"Ll\"},{\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"h point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"h point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"h tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"h cédille\"}},\"category\":\"Ll\"},{\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"h brève souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"i tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"k accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"k point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"k ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"l point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"l ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"l accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"m accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"m point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"m point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"n point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"n point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"n ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"n accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"p accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"p point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"r point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"r point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"r ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"s point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"s point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"t point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"t point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"t ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"t accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"u tréma souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"u tilde souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"u accent circonflexe souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"v tilde\"}},\"category\":\"Ll\"},{\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"v point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"w accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"w accent aigu\"}},\"category\":\"Ll\"},{\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"w tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"w point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"w point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"x point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"x tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"y point en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"z accent circonflexe\"}},\"category\":\"Ll\"},{\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"z point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"z ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"h ligne souscrite\"}},\"category\":\"Ll\"},{\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"t tréma\"}},\"category\":\"Ll\"},{\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"w rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"y rond en chef\"}},\"category\":\"Ll\"},{\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"a demi rond à droite\"}},\"category\":\"Ll\"},{\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"a point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"a crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"e point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"e crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"e tilde\"}},\"category\":\"Ll\"},{\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"i crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"i point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"o point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"o crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"u point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"u crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"y accent grave\"}},\"category\":\"Ll\"},{\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"y point souscrit\"}},\"category\":\"Ll\"},{\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"y crochet en chef\"}},\"category\":\"Ll\"},{\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"y tilde\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/latin-rest.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Ll\",\"key\":\"210E\",\"mappings\":{\"default\":{\"default\":\"constante de planck\"}}},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"diacritique a\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"diacritique e\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"diacritique i\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"diacritique o\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"diacritique u\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"diacritique c\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"diacritique d\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"diacritique h\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"diacritique m\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"diacritique r\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"diacritique t\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"diacritique v\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"diacritique x\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"i souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"r souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"u souscrit\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"v souscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"diacritique r souscrite\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"diacritique a ouvert aplati suscrit\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"diacritique ae\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"diacritique ao\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"diacritique av\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"diacritique c cédille\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"diacritique d insulaire\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"diacritique eth\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"diacritique g\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"diacritique petite g majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"diacritique k\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"diacritique l\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"diacritique petite l majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"diacritique petite m majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"diacritique n\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"diacritique petite n majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"diacritique petite r majuscule\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"diacritique r rotunda\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"diacritique s\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"diacritique s long\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"diacritique z\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"exposant i\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"exposant n\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"indice a\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"indice e\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"indice o\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"indice x\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"indice schwa\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"souscrite h\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"souscrite k\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"souscrite l\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"souscrite m\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"souscrite n\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"souscrite p\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"souscrite s\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"souscrite t\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"j souscrite\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"s majuscule en écaille crochetée\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"c majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"r majuscule en italique cerclée\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"P majuscule encadrée et en inversion avec croix\"}}}]\n,\n\"fr/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et caron\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"U majuscule trémaa et accent grave\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"A majuscule trémaa et macron\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"A majuscule point en chef et macron\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"O majuscule ogonek et macron\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"A majuscule rond en chef et accent aigu\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"O majuscule tréma et macron\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"O majuscule tilde et macron\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"O majuscule point en chef et macron\"}}},{\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"C cédille et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"E macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"E macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"E cédille et brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"I tréma et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"L point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"O tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"O tilde et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"O macron et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"O macron et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"R point souscrit et macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"S accent aigu et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"S caron et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"S point souscrit et point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"U tilde et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"U macron et tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"A brève et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"A brève et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"A brève et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"A brève et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"A brève et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe et point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"O cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"O cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"O cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"O cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"O cornu point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"U cornu accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"U cornu accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"U cornu crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"U cornu tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"U cornu point souscrit majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"fr\"},{\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"A accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"A accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"A accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"A tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"A tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"angstrom\"}},\"category\":\"Lu\"},{\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"C cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"E accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"E accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"E tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"I accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"I accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"I accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"I tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"N tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"O accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"O accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"O accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"O tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"O tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"U accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"U accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"U tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"Y accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"A macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"A brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"A ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"C accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"C accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"C point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"C caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"D caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"E macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"E brève majuscule\"}}},{\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"E point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"E ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"E caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"G accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"G brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"G point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"G cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"H accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"I tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"I macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"I brève majuscule\"}}},{\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"I ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"I point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"J accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"K cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"L accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"L cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"L caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"L point médian majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"N accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"N cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"N caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"O macron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"O brève majuscule\"}}},{\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"O avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"R accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"R cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"R caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"S accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"S accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"S cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"S caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"T cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"T caron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"U tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"U macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"U brève majuscule\"}},\"category\":\"Lu\"},{\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"U rond en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"U avec double accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"U ogonek majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"W accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"Y accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"Y tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"Z accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"Z point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"Z caron majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"A caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"I caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"O caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"U caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"G caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"K caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"O ogonek majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"G accent aigu majuscule\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"N grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"A double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"A brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"E double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"E brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"I double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"I brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"O double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"O brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"R double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"R brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"U double accent grave majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"U brève renversée majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"S virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"T virgule souscrite * majuscule\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"H caron majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"A point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"E cédille majuscule\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"O point en chef majuscule\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"Y macron majuscule\"}}},{\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"A à rond souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"B point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"B point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"B ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"D point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"D point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"D ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"D cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"D accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"E accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"E tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"F point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"G macron majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"H point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"H point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"H tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"H cédille majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"H brève souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"I tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"K accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"K point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"K ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"L point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"L ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"L accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"M accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"M point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"M point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"N point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"N point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"N ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"N accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"P accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"P point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"R point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"R point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"R ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"S point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"S point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"T point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"T point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"T ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"T accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"U tréma souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"U tilde souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"U accent circonflexe souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"V tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"V point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"W accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"W accent aigu majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"W tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"W point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"W point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"X point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"X tréma majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"Y point en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"Z accent circonflexe majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"Z point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"Z ligne souscrite majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"A point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"A crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"E point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"E crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"E tilde majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"I crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"I point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"O point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"O crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"U point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"U crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"Y accent grave majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"Y point souscrit majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"Y crochet en chef majuscule\"}},\"category\":\"Lu\"},{\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"Y tilde majuscule\"}},\"category\":\"Lu\"}]\n,\n\"fr/symbols/math_angles.js\": \n[{\"locale\":\"fr\"},{\"key\":\"22BE\",\"mappings\":{\"default\":{\"default\":\"angle droit avec arc\"}},\"category\":\"Sm\"},{\"key\":\"237C\",\"mappings\":{\"default\":{\"default\":\"angle droit avec flèche en zigzag vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27C0\",\"mappings\":{\"default\":{\"default\":\"angle tridimensionnel\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299B\",\"mappings\":{\"default\":{\"default\":\"angle mesuré s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"299C\",\"mappings\":{\"default\":{\"default\":\"variante d'angle avec carré\"}}},{\"key\":\"299D\",\"mappings\":{\"default\":{\"default\":\"angle droit mesuré pointé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"299E\",\"mappings\":{\"default\":{\"default\":\"angle avec s inscrit\"}}},{\"category\":\"Sm\",\"key\":\"299F\",\"mappings\":{\"default\":{\"default\":\"angle aigu\"}}},{\"category\":\"Sm\",\"key\":\"29A0\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"29A1\",\"mappings\":{\"default\":{\"default\":\"angle sphérique s'ouvrant vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"29A2\",\"mappings\":{\"default\":{\"default\":\"angle culbuté\"}}},{\"category\":\"Sm\",\"key\":\"29A3\",\"mappings\":{\"default\":{\"default\":\"angle réfléchi\"}}},{\"key\":\"29A4\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"29A5\",\"mappings\":{\"default\":{\"default\":\"angle à barre souscrite réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"29A6\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"29A7\",\"mappings\":{\"default\":{\"default\":\"angle oblique s'ouvrant vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"29A8\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29A9\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AA\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'est et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AB\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers l'ouest et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AC\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord est\"}},\"category\":\"Sm\"},{\"key\":\"29AD\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le nord et bras fléché vers le nord ouest\"}},\"category\":\"Sm\"},{\"key\":\"29AE\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud est\"}},\"category\":\"Sm\"},{\"key\":\"29AF\",\"mappings\":{\"default\":{\"default\":\"angle calculé à bras vers le sud et bras fléché vers le sud ouest\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_arrows.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2190\",\"mappings\":{\"default\":{\"default\":\"flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2191\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2192\",\"mappings\":{\"default\":{\"default\":\"flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2193\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2194\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2195\",\"mappings\":{\"default\":{\"default\":\"flèche haut et bas\"}},\"category\":\"So\"},{\"key\":\"2196\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"2197\",\"mappings\":{\"default\":{\"default\":\"flèche nord est\"}},\"category\":\"So\"},{\"key\":\"2198\",\"mappings\":{\"default\":{\"default\":\"flèche sud est\"}},\"category\":\"So\"},{\"key\":\"2199\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"219A\",\"mappings\":{\"default\":{\"default\":\"flèche barrée gauche\"}},\"category\":\"Sm\"},{\"key\":\"219B\",\"mappings\":{\"default\":{\"default\":\"flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"219C\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée gauche\"}},\"category\":\"So\"},{\"key\":\"219D\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée droite\"}},\"category\":\"So\"},{\"key\":\"219E\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes gauche\"}},\"category\":\"So\"},{\"key\":\"219F\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A0\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes droite\"}},\"category\":\"Sm\"},{\"key\":\"21A1\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A2\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gauche\"}},\"category\":\"So\"},{\"key\":\"21A3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée droite\"}},\"category\":\"Sm\"},{\"key\":\"21A4\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet gauche\"}},\"category\":\"So\"},{\"key\":\"21A5\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le haut\"}},\"category\":\"So\"},{\"key\":\"21A6\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"key\":\"21A7\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers le bas\"}},\"category\":\"So\"},{\"key\":\"21A8\",\"mappings\":{\"default\":{\"default\":\"flèche haut bas sur base\"}},\"category\":\"So\"},{\"key\":\"21A9\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet gauche\"}},\"category\":\"So\"},{\"key\":\"21AA\",\"mappings\":{\"default\":{\"default\":\"flèche avec crochet droite\"}},\"category\":\"So\"},{\"key\":\"21AB\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle gauche\"}},\"category\":\"So\"},{\"key\":\"21AC\",\"mappings\":{\"default\":{\"default\":\"flèche avec boucle droite\"}},\"category\":\"So\"},{\"key\":\"21AD\",\"mappings\":{\"default\":{\"default\":\"flèche ondulée bilatérale\"}},\"category\":\"So\"},{\"key\":\"21AE\",\"mappings\":{\"default\":{\"default\":\"flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21AF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas en zigzag\"}},\"category\":\"So\"},{\"key\":\"21B0\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B1\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B2\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe gauche\"}},\"category\":\"So\"},{\"key\":\"21B3\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec pointe droite\"}},\"category\":\"So\"},{\"key\":\"21B4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin droit\"}},\"category\":\"So\"},{\"key\":\"21B5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec coin gauche\"}},\"category\":\"So\"},{\"key\":\"21B6\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens positif\"}},\"category\":\"So\"},{\"key\":\"21B7\",\"mappings\":{\"default\":{\"default\":\"flèche semi circulaire en sens négatif\"}},\"category\":\"So\"},{\"key\":\"21B8\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest vers une barre horizontale longue\"}},\"category\":\"So\"},{\"key\":\"21B9\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet sur flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21BA\",\"mappings\":{\"default\":{\"default\":\"flèche en sens positif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21BB\",\"mappings\":{\"default\":{\"default\":\"flèche en sens négatif à cercle ouvert\"}},\"category\":\"So\"},{\"key\":\"21C4\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut par dessus flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21C5\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut à gauche d'une flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21C6\",\"mappings\":{\"default\":{\"default\":\"flèche gauche par dessus flèche droite\"}},\"category\":\"So\"},{\"key\":\"21C7\",\"mappings\":{\"default\":{\"default\":\"paire de flèches gauche\"}},\"category\":\"So\"},{\"key\":\"21C8\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le haut\"}},\"category\":\"So\"},{\"key\":\"21C9\",\"mappings\":{\"default\":{\"default\":\"paire de flèches droite\"}},\"category\":\"So\"},{\"key\":\"21CA\",\"mappings\":{\"default\":{\"default\":\"paire de flèches vers le bas\"}},\"category\":\"So\"},{\"key\":\"21CD\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée gauche\"}},\"category\":\"So\"},{\"key\":\"21CE\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21CF\",\"mappings\":{\"default\":{\"default\":\"double flèche barrée droite\"}},\"category\":\"Sm\"},{\"key\":\"21D0\",\"mappings\":{\"default\":{\"default\":\"double flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21D1\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21D2\",\"mappings\":{\"default\":{\"default\":\"double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"21D3\",\"mappings\":{\"default\":{\"default\":\"double flèche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21D4\",\"mappings\":{\"default\":{\"default\":\"double flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"21D5\",\"mappings\":{\"default\":{\"default\":\"double flèche haut bas\"}},\"category\":\"So\"},{\"key\":\"21D6\",\"mappings\":{\"default\":{\"default\":\"double flèche nord ouest\"}},\"category\":\"So\"},{\"key\":\"21D7\",\"mappings\":{\"default\":{\"default\":\"double flèche nord est\"}},\"category\":\"So\"},{\"key\":\"21D8\",\"mappings\":{\"default\":{\"default\":\"double flèche sud est\"}},\"category\":\"So\"},{\"key\":\"21D9\",\"mappings\":{\"default\":{\"default\":\"double flèche sud ouest\"}},\"category\":\"So\"},{\"key\":\"21DA\",\"mappings\":{\"default\":{\"default\":\"triple flèche gauche\"}},\"category\":\"So\"},{\"key\":\"21DB\",\"mappings\":{\"default\":{\"default\":\"triple flèche droite\"}},\"category\":\"So\"},{\"key\":\"21DC\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon gauche\"}},\"category\":\"So\"},{\"key\":\"21DD\",\"mappings\":{\"default\":{\"default\":\"flèche en tire bouchon droite\"}},\"category\":\"So\"},{\"key\":\"21DE\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut avec double barre\"}},\"category\":\"So\"},{\"key\":\"21DF\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas avec double barre\"}},\"category\":\"So\"},{\"key\":\"21E0\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée gauche\"}},\"category\":\"So\"},{\"key\":\"21E1\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E2\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée droite\"}},\"category\":\"So\"},{\"key\":\"21E3\",\"mappings\":{\"default\":{\"default\":\"flèche pointillée vers le bas\"}},\"category\":\"So\"},{\"key\":\"21E4\",\"mappings\":{\"default\":{\"default\":\"flèche gauche vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E5\",\"mappings\":{\"default\":{\"default\":\"flèche droite vers un taquet\"}},\"category\":\"So\"},{\"key\":\"21E6\",\"mappings\":{\"default\":{\"default\":\"flèche blanche gauche\"}},\"category\":\"So\"},{\"key\":\"21E7\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut\"}},\"category\":\"So\"},{\"key\":\"21E8\",\"mappings\":{\"default\":{\"default\":\"flèche blanche droite\"}},\"category\":\"So\"},{\"key\":\"21E9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le bas\"}},\"category\":\"So\"},{\"key\":\"21EA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut à partir d'un taquet\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"21EB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21EC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et trait horizontal\"}}},{\"category\":\"So\",\"key\":\"21ED\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut sur socle et barre verticale\"}}},{\"category\":\"So\",\"key\":\"21EE\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut\"}}},{\"category\":\"So\",\"key\":\"21EF\",\"mappings\":{\"default\":{\"default\":\"double flèche blanche vers le haut sur socle\"}}},{\"category\":\"So\",\"key\":\"21F0\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite appuyée sur mur\"}}},{\"category\":\"So\",\"key\":\"21F1\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F2\",\"mappings\":{\"default\":{\"default\":\"flèche sud est en encoignure\"}}},{\"category\":\"So\",\"key\":\"21F3\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers le haut et le bas\"}}},{\"category\":\"Sm\",\"key\":\"21F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à petit cercle\"}}},{\"key\":\"21F5\",\"mappings\":{\"default\":{\"default\":\"flèche descendante à gauche d'une flèche montante\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"21F6\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"21F7\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F8\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21F9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite et la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"21FC\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale barrée deux fois verticalement\"}}},{\"key\":\"21FD\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse gauche\"}},\"category\":\"Sm\"},{\"key\":\"21FE\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse droite\"}},\"category\":\"Sm\"},{\"key\":\"21FF\",\"mappings\":{\"default\":{\"default\":\"flèche à tête creuse bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2301\",\"mappings\":{\"default\":{\"default\":\"flèche électrique\"}}},{\"category\":\"So\",\"key\":\"2303\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut\"}}},{\"category\":\"So\",\"key\":\"2304\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le bas\"}}},{\"category\":\"So\",\"key\":\"2324\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers le haut entre deux traits horizontaux\"}}},{\"category\":\"So\",\"key\":\"238B\",\"mappings\":{\"default\":{\"default\":\"cercle brisé à flèche nord ouest (échappement)\"}}},{\"category\":\"So\",\"key\":\"2794\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à pointe large\"}}},{\"category\":\"So\",\"key\":\"2798\",\"mappings\":{\"default\":{\"default\":\"flèche grasse sud est\"}}},{\"category\":\"So\",\"key\":\"2799\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite grasse\"}}},{\"category\":\"So\",\"key\":\"279A\",\"mappings\":{\"default\":{\"default\":\"flèche grasse nord est\"}}},{\"category\":\"So\",\"key\":\"279B\",\"mappings\":{\"default\":{\"default\":\"flèche de traçage vers la droite\"}}},{\"category\":\"So\",\"key\":\"279C\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe arrondie vers la droite\"}}},{\"category\":\"So\",\"key\":\"279D\",\"mappings\":{\"default\":{\"default\":\"flèche à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279E\",\"mappings\":{\"default\":{\"default\":\"flèche grasse à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"279F\",\"mappings\":{\"default\":{\"default\":\"flèche avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A0\",\"mappings\":{\"default\":{\"default\":\"flèche grasse avec pointillés à pointe en triangle vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A1\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A2\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le haut\"}}},{\"category\":\"So\",\"key\":\"27A3\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche vers la droite en trompe l'œil éclairée par le bas\"}}},{\"category\":\"So\",\"key\":\"27A4\",\"mappings\":{\"default\":{\"default\":\"pointe de flèche noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A5\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse courbée vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A6\",\"mappings\":{\"default\":{\"default\":\"flèche noire courbée vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A7\",\"mappings\":{\"default\":{\"default\":\"flèche noire trapue vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A8\",\"mappings\":{\"default\":{\"default\":\"flèche noire grasse à pointe concave vers la droite\"}}},{\"category\":\"So\",\"key\":\"27A9\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'avant\"}}},{\"category\":\"So\",\"key\":\"27AA\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite ombrée à l'arrière\"}}},{\"category\":\"So\",\"key\":\"27AB\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'arrière et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AC\",\"mappings\":{\"default\":{\"default\":\"flèche blanche vers la droite penchée vers l'avant et ombrée\"}}},{\"category\":\"So\",\"key\":\"27AD\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre inférieure droite\"}}},{\"category\":\"So\",\"key\":\"27AE\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à ombre supérieure droite\"}}},{\"category\":\"So\",\"key\":\"27AF\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessous\"}}},{\"category\":\"So\",\"key\":\"27B1\",\"mappings\":{\"default\":{\"default\":\"flèche encochée blanche vers la droite ombrée à l'avant et par dessus\"}}},{\"category\":\"So\",\"key\":\"27B2\",\"mappings\":{\"default\":{\"default\":\"flèche blanche grasse vers la droite à contour circulaire\"}}},{\"category\":\"So\",\"key\":\"27B3\",\"mappings\":{\"default\":{\"default\":\"flèche empennée blanche vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B4\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir sud est\"}}},{\"category\":\"So\",\"key\":\"27B5\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B6\",\"mappings\":{\"default\":{\"default\":\"flèche empennée noir nord est\"}}},{\"category\":\"So\",\"key\":\"27B7\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire sud est\"}}},{\"category\":\"So\",\"key\":\"27B8\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire vers la droite\"}}},{\"category\":\"So\",\"key\":\"27B9\",\"mappings\":{\"default\":{\"default\":\"flèche empennée gras noire nord est\"}}},{\"category\":\"So\",\"key\":\"27BA\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe larmée\"}}},{\"category\":\"So\",\"key\":\"27BB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à hampe larmée\"}}},{\"category\":\"So\",\"key\":\"27BC\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BD\",\"mappings\":{\"default\":{\"default\":\"flèche grasse vers la droite à queue en forme de coin\"}}},{\"category\":\"So\",\"key\":\"27BE\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à contour ouvert\"}}},{\"category\":\"Sm\",\"key\":\"27F0\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"27F1\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"27F2\",\"mappings\":{\"default\":{\"default\":\"flèche sens antihoraire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F3\",\"mappings\":{\"default\":{\"default\":\"flèche sens horaire entrouverte\"}}},{\"category\":\"Sm\",\"key\":\"27F4\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à signe plus cerclé\"}}},{\"key\":\"27F5\",\"mappings\":{\"default\":{\"default\":\"longue flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F6\",\"mappings\":{\"default\":{\"default\":\"longue flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27F7\",\"mappings\":{\"default\":{\"default\":\"longue flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"27F8\",\"mappings\":{\"default\":{\"default\":\"longue double flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"27F9\",\"mappings\":{\"default\":{\"default\":\"longue double flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"27FA\",\"mappings\":{\"default\":{\"default\":\"longue double flèche bilatérale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FB\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet vers la gauche\"}}},{\"key\":\"27FC\",\"mappings\":{\"default\":{\"default\":\"longue flèche d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27FD\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"27FE\",\"mappings\":{\"default\":{\"default\":\"longue double flèche d'un taquet vers la droite\"}}},{\"key\":\"27FF\",\"mappings\":{\"default\":{\"default\":\"longue flèche en tire bouchon droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2900\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2901\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la droite barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2902\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2903\",\"mappings\":{\"default\":{\"default\":\"double flèche vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2904\",\"mappings\":{\"default\":{\"default\":\"flèche bilatérale double barrée verticalement\"}}},{\"key\":\"2905\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2906\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2907\",\"mappings\":{\"default\":{\"default\":\"double flèche d'un taquet vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2908\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"2909\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut barrée horizontalement\"}}},{\"category\":\"Sm\",\"key\":\"290A\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"290B\",\"mappings\":{\"default\":{\"default\":\"triple flèche vers le bas\"}}},{\"key\":\"290C\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290D\",\"mappings\":{\"default\":{\"default\":\"flèche à deux traits droite\"}},\"category\":\"Sm\"},{\"key\":\"290E\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits gauche\"}},\"category\":\"Sm\"},{\"key\":\"290F\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits droite\"}},\"category\":\"Sm\"},{\"key\":\"2910\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes droite\"}},\"category\":\"Sm\"},{\"key\":\"2911\",\"mappings\":{\"default\":{\"default\":\"flèche à fût pointillé droite\"}},\"category\":\"Sm\"},{\"key\":\"2912\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2913\",\"mappings\":{\"default\":{\"default\":\"flèche jusqu'à taquet vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2914\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2915\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2916\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2917\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2918\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la droite barrée deux fois verticalement\"}}},{\"key\":\"2919\",\"mappings\":{\"default\":{\"default\":\"empenne gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"291A\",\"mappings\":{\"default\":{\"default\":\"empenne vers la droite\"}}},{\"key\":\"291B\",\"mappings\":{\"default\":{\"default\":\"double empenne gauche\"}},\"category\":\"Sm\"},{\"key\":\"291C\",\"mappings\":{\"default\":{\"default\":\"double empenne droite\"}},\"category\":\"Sm\"},{\"key\":\"291D\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"291E\",\"mappings\":{\"default\":{\"default\":\"flèche vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"key\":\"291F\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2920\",\"mappings\":{\"default\":{\"default\":\"flèche d'un taquet vers un losange noir à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2921\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest et sud est\"}}},{\"category\":\"Sm\",\"key\":\"2922\",\"mappings\":{\"default\":{\"default\":\"flèche nord est et sud ouest\"}}},{\"key\":\"2923\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2924\",\"mappings\":{\"default\":{\"default\":\"flèche nord est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2925\",\"mappings\":{\"default\":{\"default\":\"flèche sud est à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2926\",\"mappings\":{\"default\":{\"default\":\"flèche sud ouest à crochet\"}},\"category\":\"Sm\"},{\"key\":\"2927\",\"mappings\":{\"default\":{\"default\":\"flèches nord ouest et nord est\"}},\"category\":\"Sm\"},{\"key\":\"2928\",\"mappings\":{\"default\":{\"default\":\"flèches nord est et sud est\"}},\"category\":\"Sm\"},{\"key\":\"2929\",\"mappings\":{\"default\":{\"default\":\"flèches sud est et sud ouest\"}},\"category\":\"Sm\"},{\"key\":\"292A\",\"mappings\":{\"default\":{\"default\":\"flèches sud ouest et nord ouest\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292D\",\"mappings\":{\"default\":{\"default\":\"flèche sud est sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"292E\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"292F\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur flèche nord est\"}}},{\"category\":\"Sm\",\"key\":\"2930\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur flèche sud est\"}}},{\"category\":\"Sm\",\"key\":\"2931\",\"mappings\":{\"default\":{\"default\":\"flèche nord est sur flèche nord ouest\"}}},{\"category\":\"Sm\",\"key\":\"2932\",\"mappings\":{\"default\":{\"default\":\"flèche nord ouest sur flèche nord est\"}}},{\"key\":\"2933\",\"mappings\":{\"default\":{\"default\":\"flèche bossue droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2934\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le haut\"}}},{\"key\":\"2935\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers la droite puis le bas\"}},\"category\":\"Sm\"},{\"key\":\"2936\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la gauche\"}},\"category\":\"Sm\"},{\"key\":\"2937\",\"mappings\":{\"default\":{\"default\":\"flèche courbe vers le bas puis la droite\"}},\"category\":\"Sm\"},{\"key\":\"2938\",\"mappings\":{\"default\":{\"default\":\"côté droit d'arc fléché sens horaire\"}},\"category\":\"Sm\"},{\"key\":\"2939\",\"mappings\":{\"default\":{\"default\":\"côté gauche d'arc fléché sens antihoraire\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293A\",\"mappings\":{\"default\":{\"default\":\"arc supérieur fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"293B\",\"mappings\":{\"default\":{\"default\":\"arc inférieur fléché sens antihoraire\"}}},{\"key\":\"293C\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens horaire et signe moins souscrit\"}},\"category\":\"Sm\"},{\"key\":\"293D\",\"mappings\":{\"default\":{\"default\":\"arc fléché sens antihoraire et signe plus souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"293E\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur droit sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"293F\",\"mappings\":{\"default\":{\"default\":\"demi cercle fléché inférieur gauche sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2940\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens antihoraire\"}}},{\"category\":\"Sm\",\"key\":\"2941\",\"mappings\":{\"default\":{\"default\":\"cercle fléché sens horaire\"}}},{\"category\":\"Sm\",\"key\":\"2942\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontant fléchette vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2943\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant fléchette vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2944\",\"mappings\":{\"default\":{\"default\":\"fléchette vers la droite surmontant flèche vers la gauche\"}}},{\"key\":\"2945\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontant signe moins\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2946\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"2947\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers un x\"}}},{\"key\":\"2948\",\"mappings\":{\"default\":{\"default\":\"petit cercle traversé d'une flèche bilatérale\"}},\"category\":\"Sm\"},{\"key\":\"2949\",\"mappings\":{\"default\":{\"default\":\"petit cercle surmonté d'une flèche montante à deux têtes\"}},\"category\":\"Sm\"},{\"key\":\"2970\",\"mappings\":{\"default\":{\"default\":\"flèche en épingle à cheveu droite\"}},\"category\":\"Sm\"},{\"key\":\"2971\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un égal\"}},\"category\":\"Sm\"},{\"key\":\"2972\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2973\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"key\":\"2974\",\"mappings\":{\"default\":{\"default\":\"tilde surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2975\",\"mappings\":{\"default\":{\"default\":\"presque égal à surmonté d'une flèche droite\"}},\"category\":\"Sm\"},{\"key\":\"2976\",\"mappings\":{\"default\":{\"default\":\"inférieur à surmonté d'une flèche gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2977\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à travers un inférieur à\"}}},{\"key\":\"2978\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2979\",\"mappings\":{\"default\":{\"default\":\"flèche droite surmontée d'un sous ensemble de\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"297A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers d'un sous ensemble de\"}}},{\"key\":\"297B\",\"mappings\":{\"default\":{\"default\":\"flèche gauche surmontée d'un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"29B3\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche droite en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B4\",\"mappings\":{\"default\":{\"default\":\"ensemble vide flèche gauche en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BD\",\"mappings\":{\"default\":{\"default\":\"cercle traversé d'une flèche montante\"}}},{\"category\":\"Sm\",\"key\":\"29EA\",\"mappings\":{\"default\":{\"default\":\"losange noir à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29EC\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à flèche vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"29ED\",\"mappings\":{\"default\":{\"default\":\"cercle noir à flèche vers le bas\"}}},{\"key\":\"2A17\",\"mappings\":{\"default\":{\"default\":\"intégrale à crosse fléchée gauche\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B00\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord est\"}}},{\"category\":\"So\",\"key\":\"2B01\",\"mappings\":{\"default\":{\"default\":\"flèche blanche nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B02\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud est\"}}},{\"category\":\"So\",\"key\":\"2B03\",\"mappings\":{\"default\":{\"default\":\"flèche blanche sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B04\",\"mappings\":{\"default\":{\"default\":\"flèche blanche bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B05\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B06\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B07\",\"mappings\":{\"default\":{\"default\":\"flèche noire vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B08\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord est\"}}},{\"category\":\"So\",\"key\":\"2B09\",\"mappings\":{\"default\":{\"default\":\"flèche noire nord ouest\"}}},{\"category\":\"So\",\"key\":\"2B0A\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud est\"}}},{\"category\":\"So\",\"key\":\"2B0B\",\"mappings\":{\"default\":{\"default\":\"flèche noire sud ouest\"}}},{\"category\":\"So\",\"key\":\"2B0C\",\"mappings\":{\"default\":{\"default\":\"flèche noire bilatérale\"}}},{\"category\":\"So\",\"key\":\"2B0D\",\"mappings\":{\"default\":{\"default\":\"flèche noire haut et bas\"}}},{\"category\":\"So\",\"key\":\"2B0E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B0F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à pointe pliée vers le haut\"}}},{\"category\":\"So\",\"key\":\"2B10\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le bas\"}}},{\"category\":\"So\",\"key\":\"2B11\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à pointe pliée vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2B30\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à petit cercle\"}}},{\"category\":\"Sm\",\"key\":\"2B31\",\"mappings\":{\"default\":{\"default\":\"trois flèches vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B32\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à signe plus cerclé\"}}},{\"category\":\"Sm\",\"key\":\"2B33\",\"mappings\":{\"default\":{\"default\":\"longue flèche vers la gauche en tire bouchon\"}}},{\"category\":\"Sm\",\"key\":\"2B34\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B35\",\"mappings\":{\"default\":{\"default\":\"flèche à deux pointes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B36\",\"mappings\":{\"default\":{\"default\":\"flèche à deux têtes d'un taquet vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B37\",\"mappings\":{\"default\":{\"default\":\"flèche à trois traits et à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B38\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche à fût pointillé\"}}},{\"category\":\"Sm\",\"key\":\"2B39\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3A\",\"mappings\":{\"default\":{\"default\":\"flèche empennée vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3B\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B3C\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3D\",\"mappings\":{\"default\":{\"default\":\"flèche empennée à deux têtes vers la gauche barrée deux fois verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2B3E\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche au travers un x\"}}},{\"category\":\"Sm\",\"key\":\"2B3F\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche bossue\"}}},{\"category\":\"Sm\",\"key\":\"2B40\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un égal\"}}},{\"category\":\"Sm\",\"key\":\"2B41\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée d'un tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B42\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B43\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite à travers un inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2B44\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite au travers d'un sous ensemble de\"}}},{\"category\":\"So\",\"key\":\"2B45\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2B46\",\"mappings\":{\"default\":{\"default\":\"quadruple flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B47\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite surmontée d'un opérateur tilde réfléchi\"}}},{\"category\":\"Sm\",\"key\":\"2B48\",\"mappings\":{\"default\":{\"default\":\"presque égal à réfléchi surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"2B49\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche surmontée de l'opérateur tilde\"}}},{\"category\":\"Sm\",\"key\":\"2B4A\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2B4B\",\"mappings\":{\"default\":{\"default\":\"tilde réfléchi surmonté d'une flèche vers la gauche\"}}},{\"category\":\"Sm\",\"key\":\"2B4C\",\"mappings\":{\"default\":{\"default\":\"ilde surmonté d'une flèche vers la droite\"}}},{\"category\":\"Sm\",\"key\":\"FFE9\",\"mappings\":{\"default\":{\"default\":\"flèche vers la gauche demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEA\",\"mappings\":{\"default\":{\"default\":\"flèche vers le haut demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEB\",\"mappings\":{\"default\":{\"default\":\"flèche vers la droite demi chasse\"}}},{\"category\":\"Sm\",\"key\":\"FFEC\",\"mappings\":{\"default\":{\"default\":\"flèche vers le bas demi chasse\"}}}]\n,\n\"fr/symbols/math_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2113\",\"mappings\":{\"default\":{\"default\":\"l minuscule en script\"}},\"category\":\"Ll\"},{\"key\":\"2118\",\"mappings\":{\"default\":{\"default\":\"fonction elliptique de weierstrass\"}},\"category\":\"Sm\"},{\"category\":\"Ll\",\"key\":\"213C\",\"mappings\":{\"default\":{\"default\":\"pi ajouré\"}}},{\"category\":\"Ll\",\"key\":\"213D\",\"mappings\":{\"default\":{\"default\":\"gamma ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213E\",\"mappings\":{\"default\":{\"default\":\"Gamma majuscule ajouré\"}}},{\"category\":\"Lu\",\"key\":\"213F\",\"mappings\":{\"default\":{\"default\":\"Pi majuscule ajouré\"}}},{\"category\":\"Sm\",\"key\":\"2140\",\"mappings\":{\"default\":{\"default\":\"sommation de la famille ajouré\"}}},{\"key\":\"2145\",\"mappings\":{\"default\":{\"default\":\"D majuscule\"}},\"category\":\"Lu\"},{\"key\":\"2146\",\"mappings\":{\"default\":{\"default\":\"d ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2147\",\"mappings\":{\"default\":{\"default\":\"e ajouré en italique\"}},\"category\":\"Ll\"},{\"key\":\"2148\",\"mappings\":{\"default\":{\"default\":\"i ajouré en italique\"}},\"category\":\"Ll\"},{\"category\":\"Ll\",\"key\":\"2149\",\"mappings\":{\"default\":{\"default\":\"j ajouré en italique\"}}},{\"key\":\"1D6A4\",\"mappings\":{\"default\":{\"default\":\"dotless i\"}},\"category\":\"Ll\"},{\"key\":\"1D6A5\",\"mappings\":{\"default\":{\"default\":\"dotless j\"}},\"category\":\"Ll\"}]\n,\n\"fr/symbols/math_delimiters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0028\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche\",\"alternative\":\"parenthèse ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"0029\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite\",\"alternative\":\"parenthèse fermante\"}},\"category\":\"Pe\"},{\"key\":\"005B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche\",\"alternative\":\"crochet ouvrant\"}},\"category\":\"Ps\"},{\"key\":\"005D\",\"mappings\":{\"default\":{\"default\":\"crochet droit\",\"alternative\":\"crochet fermant\"}},\"category\":\"Pe\"},{\"key\":\"007B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche\",\"alternative\":\"accolade ouvrante\"}},\"category\":\"Ps\"},{\"key\":\"007D\",\"mappings\":{\"default\":{\"default\":\"accolade droite\",\"alternative\":\"accolade fermante\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2045\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec pique\"}}},{\"category\":\"Pe\",\"key\":\"2046\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec pique\"}}},{\"key\":\"2308\",\"mappings\":{\"default\":{\"default\":\"plafond à gauche\"}},\"category\":\"Sm\"},{\"key\":\"2309\",\"mappings\":{\"default\":{\"default\":\"plafond à droite\"}},\"category\":\"Sm\"},{\"key\":\"230A\",\"mappings\":{\"default\":{\"default\":\"plancher à gauche\"}},\"category\":\"Sm\"},{\"key\":\"230B\",\"mappings\":{\"default\":{\"default\":\"plancher à droite\"}},\"category\":\"Sm\"},{\"key\":\"230C\",\"mappings\":{\"default\":{\"default\":\"repère sud est\"}},\"category\":\"So\"},{\"key\":\"230D\",\"mappings\":{\"default\":{\"default\":\"repère sud ouest\"}},\"category\":\"So\"},{\"key\":\"230E\",\"mappings\":{\"default\":{\"default\":\"repère nord est\"}},\"category\":\"So\"},{\"key\":\"230F\",\"mappings\":{\"default\":{\"default\":\"repère nord ouest\"}},\"category\":\"So\"},{\"key\":\"231C\",\"mappings\":{\"default\":{\"default\":\"coin nord ouest\"}},\"category\":\"So\"},{\"key\":\"231D\",\"mappings\":{\"default\":{\"default\":\"coin nord est\"}},\"category\":\"So\"},{\"key\":\"231E\",\"mappings\":{\"default\":{\"default\":\"coin sud ouest\"}},\"category\":\"So\"},{\"key\":\"231F\",\"mappings\":{\"default\":{\"default\":\"coin sud est\"}},\"category\":\"So\"},{\"key\":\"2320\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2321\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure d'intégrale\"}},\"category\":\"Sm\"},{\"key\":\"2329\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"232A\",\"mappings\":{\"default\":{\"default\":\"chevron droite\"}},\"category\":\"Pe\"},{\"category\":\"Sm\",\"key\":\"239B\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239C\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239D\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse gauche\"}}},{\"category\":\"Sm\",\"key\":\"239E\",\"mappings\":{\"default\":{\"default\":\"arc supérieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"239F\",\"mappings\":{\"default\":{\"default\":\"rallonge de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A0\",\"mappings\":{\"default\":{\"default\":\"arc inférieur de parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"23A1\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A2\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A5\",\"mappings\":{\"default\":{\"default\":\"rallonge de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A6\",\"mappings\":{\"default\":{\"default\":\"coin inférieur de crochet droit\"}}},{\"category\":\"Sm\",\"key\":\"23A7\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A8\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23A9\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade gauche\"}}},{\"category\":\"Sm\",\"key\":\"23AA\",\"mappings\":{\"default\":{\"default\":\"rallonge d'accolade\"}}},{\"category\":\"Sm\",\"key\":\"23AB\",\"mappings\":{\"default\":{\"default\":\"arc supérieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AC\",\"mappings\":{\"default\":{\"default\":\"milieu d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AD\",\"mappings\":{\"default\":{\"default\":\"arc inférieur d'accolade droite\"}}},{\"category\":\"Sm\",\"key\":\"23AE\",\"mappings\":{\"default\":{\"default\":\"rallonge d'intégrale\"}}},{\"category\":\"Sm\",\"key\":\"23AF\",\"mappings\":{\"default\":{\"default\":\"rallonge de ligne horizontale\"}}},{\"key\":\"23B0\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure gauche ou inférieure droite d'accolade\"}},\"category\":\"Sm\"},{\"key\":\"23B1\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure droite ou inférieure gauche d'accolade\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"23B2\",\"mappings\":{\"default\":{\"default\":\"haut du signe de somme\"}}},{\"category\":\"Sm\",\"key\":\"23B3\",\"mappings\":{\"default\":{\"default\":\"bas du signe de somme\"}}},{\"key\":\"23B4\",\"mappings\":{\"default\":{\"default\":\"crochet vertical supérieur\"}},\"category\":\"So\"},{\"key\":\"23B5\",\"mappings\":{\"default\":{\"default\":\"crochet vertical inférieur\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"23B6\",\"mappings\":{\"default\":{\"default\":\"crochet verticaux en défilé\"}}},{\"category\":\"So\",\"key\":\"23B7\",\"mappings\":{\"default\":{\"default\":\"bas du radical\"}}},{\"category\":\"So\",\"key\":\"23B8\",\"mappings\":{\"default\":{\"default\":\"filet vertical gauche\"}}},{\"category\":\"So\",\"key\":\"23B9\",\"mappings\":{\"default\":{\"default\":\"filet vertical droit\"}}},{\"key\":\"23DC\",\"mappings\":{\"default\":{\"default\":\"parenthèse supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DD\",\"mappings\":{\"default\":{\"default\":\"parenthèse inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23DE\",\"mappings\":{\"default\":{\"default\":\"accolade supérieure\"}},\"category\":\"Sm\"},{\"key\":\"23DF\",\"mappings\":{\"default\":{\"default\":\"accolade inférieure\"}},\"category\":\"Sm\"},{\"key\":\"23E0\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille supérieur\"}},\"category\":\"Sm\"},{\"key\":\"23E1\",\"mappings\":{\"default\":{\"default\":\"crochet en écaille inférieur\"}},\"category\":\"Sm\"},{\"category\":\"Ps\",\"key\":\"2768\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse\"}}},{\"category\":\"Pe\",\"key\":\"2769\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse\"}}},{\"category\":\"Ps\",\"key\":\"276A\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie gauche demi grasse aplatie\"}}},{\"category\":\"Pe\",\"key\":\"276B\",\"mappings\":{\"default\":{\"default\":\"parenthèse de fantaisie droite demi grasse aplatie\"}}},{\"category\":\"Ps\",\"key\":\"276C\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la gauche demi gras\"}}},{\"category\":\"Pe\",\"key\":\"276D\",\"mappings\":{\"default\":{\"default\":\"chevron de fantaisie vers la droite demi gras\"}}},{\"category\":\"Ps\",\"key\":\"276E\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"276F\",\"mappings\":{\"default\":{\"default\":\"guillemet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2770\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la gauche gras\"}}},{\"category\":\"Pe\",\"key\":\"2771\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie vers la droite gras\"}}},{\"category\":\"Ps\",\"key\":\"2772\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie gauche maigre en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2773\",\"mappings\":{\"default\":{\"default\":\"crochet de fantaisie droit maigre en écaille\"}}},{\"category\":\"Ps\",\"key\":\"2774\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie gauche moyenne\"}}},{\"category\":\"Pe\",\"key\":\"2775\",\"mappings\":{\"default\":{\"default\":\"accolade de fantaisie droite moyenne\"}}},{\"key\":\"27C5\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s gauche\"}},\"category\":\"Ps\"},{\"key\":\"27C6\",\"mappings\":{\"default\":{\"default\":\"délimiteur de sac en s droite\"}},\"category\":\"Pe\"},{\"key\":\"27E6\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E7\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"key\":\"27E8\",\"mappings\":{\"default\":{\"default\":\"chevron mathématique gauche\"}},\"category\":\"Ps\"},{\"key\":\"27E9\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EA\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"27EB\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"key\":\"27EC\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille blanche\"}},\"category\":\"Ps\"},{\"key\":\"27ED\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille blanche\"}},\"category\":\"Pe\"},{\"key\":\"27EE\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche aplatie\"}},\"category\":\"Ps\"},{\"key\":\"27EF\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite aplatie\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2983\",\"mappings\":{\"default\":{\"default\":\"accolade gauche ajourée\"}}},{\"category\":\"Pe\",\"key\":\"2984\",\"mappings\":{\"default\":{\"default\":\"accolade droite ajourée\"}}},{\"key\":\"2985\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée\"}},\"category\":\"Ps\"},{\"key\":\"2986\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2987\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de gauche en notation z\"}}},{\"category\":\"Pe\",\"key\":\"2988\",\"mappings\":{\"default\":{\"default\":\"parenthèse image de droite en notation z\"}}},{\"key\":\"2989\",\"mappings\":{\"default\":{\"default\":\"z notation left binding bracket\"}},\"category\":\"Ps\"},{\"key\":\"298A\",\"mappings\":{\"default\":{\"default\":\"z notation right binding bracket\"}},\"category\":\"Pe\"},{\"key\":\"298B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec barre souscrite\"}},\"category\":\"Ps\"},{\"key\":\"298C\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec barre souscrite\"}},\"category\":\"Pe\"},{\"key\":\"298D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin supérieur\"}},\"category\":\"Ps\"},{\"key\":\"298E\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin inférieur\"}},\"category\":\"Pe\"},{\"key\":\"298F\",\"mappings\":{\"default\":{\"default\":\"crochet gauche avec trait dans le coin inférieur\"}},\"category\":\"Ps\"},{\"key\":\"2990\",\"mappings\":{\"default\":{\"default\":\"crochet droit avec trait dans le coin supérieur\"}},\"category\":\"Pe\"},{\"key\":\"2991\",\"mappings\":{\"default\":{\"default\":\"chevron gauche pointé\"}},\"category\":\"Ps\"},{\"key\":\"2992\",\"mappings\":{\"default\":{\"default\":\"chevron droit pointé\"}},\"category\":\"Pe\"},{\"key\":\"2993\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc gauche et inférieur à\"}},\"category\":\"Ps\"},{\"key\":\"2994\",\"mappings\":{\"default\":{\"default\":\"parenthèse arc droite et supérieur à\"}},\"category\":\"Pe\"},{\"key\":\"2995\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc droite et supérieur à\"}},\"category\":\"Ps\"},{\"key\":\"2996\",\"mappings\":{\"default\":{\"default\":\"parenthèse double arc gauche et inférieur à\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"2997\",\"mappings\":{\"default\":{\"default\":\"crochet noir gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"2998\",\"mappings\":{\"default\":{\"default\":\"crochet noir droite en écaille\"}}},{\"category\":\"Ps\",\"key\":\"29D8\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée gauche\"}}},{\"category\":\"Pe\",\"key\":\"29D9\",\"mappings\":{\"default\":{\"default\":\"clôture dentelée droite\"}}},{\"key\":\"29DA\",\"mappings\":{\"default\":{\"default\":\"double clôture dentelée gauche\"}},\"category\":\"Ps\"},{\"key\":\"29DB\",\"mappings\":{\"default\":{\"default\":\"right double wiggly fence\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"29FC\",\"mappings\":{\"default\":{\"default\":\"chevron vers la gauche courbé\"}}},{\"category\":\"Pe\",\"key\":\"29FD\",\"mappings\":{\"default\":{\"default\":\"chevron vers la droite courbé\"}}},{\"category\":\"Ps\",\"key\":\"2E22\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E23\",\"mappings\":{\"default\":{\"default\":\"anglet supérieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E24\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E25\",\"mappings\":{\"default\":{\"default\":\"anglet inférieur droit\"}}},{\"category\":\"Ps\",\"key\":\"2E26\",\"mappings\":{\"default\":{\"default\":\"crampillon couché gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E27\",\"mappings\":{\"default\":{\"default\":\"crampillon couché droit\"}}},{\"category\":\"Ps\",\"key\":\"2E28\",\"mappings\":{\"default\":{\"default\":\"double parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"2E29\",\"mappings\":{\"default\":{\"default\":\"double parenthèse droite\"}}},{\"category\":\"Ps\",\"key\":\"3008\",\"mappings\":{\"default\":{\"default\":\"chevron gauche\"}}},{\"category\":\"Pe\",\"key\":\"3009\",\"mappings\":{\"default\":{\"default\":\"chevron droit\"}}},{\"key\":\"300A\",\"mappings\":{\"default\":{\"default\":\"double chevron gauche\"}},\"category\":\"Ps\"},{\"key\":\"300B\",\"mappings\":{\"default\":{\"default\":\"double chevron droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"300C\",\"mappings\":{\"default\":{\"default\":\"anglet gauche\"}}},{\"category\":\"Pe\",\"key\":\"300D\",\"mappings\":{\"default\":{\"default\":\"anglet droit\"}}},{\"category\":\"Ps\",\"key\":\"300E\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré gauche\"}}},{\"category\":\"Pe\",\"key\":\"300F\",\"mappings\":{\"default\":{\"default\":\"anglet ajouré droit\"}}},{\"category\":\"Ps\",\"key\":\"3010\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3011\",\"mappings\":{\"default\":{\"default\":\"crochet noir lenticulaire droit\"}}},{\"key\":\"3014\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille\"}},\"category\":\"Ps\"},{\"key\":\"3015\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"3016\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire gauche\"}}},{\"category\":\"Pe\",\"key\":\"3017\",\"mappings\":{\"default\":{\"default\":\"crochet blanc lenticulaire droit\"}}},{\"category\":\"Ps\",\"key\":\"3018\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche en écaille\"}}},{\"category\":\"Pe\",\"key\":\"3019\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit en écaille\"}}},{\"key\":\"301A\",\"mappings\":{\"default\":{\"default\":\"crochet blanc gauche\"}},\"category\":\"Ps\"},{\"key\":\"301B\",\"mappings\":{\"default\":{\"default\":\"crochet blanc droit\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"301D\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime réfléchi\"}}},{\"key\":\"301E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Pe\"},{\"category\":\"Pe\",\"key\":\"301F\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime inférieur\"}}},{\"category\":\"Ps\",\"key\":\"FD3E\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ornée\"}}},{\"category\":\"Pe\",\"key\":\"FD3F\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ornée\"}}},{\"category\":\"Ps\",\"key\":\"FE17\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE18\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc lenticulaire droit vertical\"}}},{\"key\":\"FE35\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE36\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de parenthèse droite verticale\"}},\"category\":\"Pe\"},{\"key\":\"FE37\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade gauche verticale\"}},\"category\":\"Ps\"},{\"key\":\"FE38\",\"mappings\":{\"default\":{\"default\":\"forme de présentation d'accolade droite verticale\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE39\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical en écaille\"}}},{\"category\":\"Pe\",\"key\":\"FE3A\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical en écaille\"}}},{\"category\":\"Ps\",\"key\":\"FE3B\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche lenticulaire noir vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3C\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit lenticulaire noir vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE3D\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE3E\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet double droit vertical\"}}},{\"key\":\"FE3F\",\"mappings\":{\"default\":{\"default\":\"over angle bracket\"}},\"category\":\"Ps\"},{\"key\":\"FE40\",\"mappings\":{\"default\":{\"default\":\"under angle bracket\"}},\"category\":\"Pe\"},{\"category\":\"Ps\",\"key\":\"FE41\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE42\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE43\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical gauche en coin\"}}},{\"category\":\"Pe\",\"key\":\"FE44\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet blanc vertical droit en coin\"}}},{\"category\":\"Ps\",\"key\":\"FE47\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet gauche vertical\"}}},{\"category\":\"Pe\",\"key\":\"FE48\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de crochet droit vertical\"}}},{\"category\":\"Ps\",\"key\":\"FE59\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5A\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5C\",\"mappings\":{\"default\":{\"default\":\"accolade droite minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FE5D\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en écaille minuscule\"}}},{\"category\":\"Pe\",\"key\":\"FE5E\",\"mappings\":{\"default\":{\"default\":\"crochet droit en écaille minuscule\"}}},{\"category\":\"Ps\",\"key\":\"FF08\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF09\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF3B\",\"mappings\":{\"default\":{\"default\":\"crochet gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF3D\",\"mappings\":{\"default\":{\"default\":\"crochet droit pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5B\",\"mappings\":{\"default\":{\"default\":\"accolade gauche pleine chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF5D\",\"mappings\":{\"default\":{\"default\":\"accolade droite pleine chasse\"}}},{\"category\":\"Ps\",\"key\":\"FF5F\",\"mappings\":{\"default\":{\"default\":\"parenthèse gauche ajourée pleine chasse *\"}}},{\"category\":\"Pe\",\"key\":\"FF60\",\"mappings\":{\"default\":{\"default\":\"parenthèse droite ajourée pleine chasse *\"}}},{\"category\":\"Ps\",\"key\":\"FF62\",\"mappings\":{\"default\":{\"default\":\"crochet gauche en coin demi chasse\"}}},{\"category\":\"Pe\",\"key\":\"FF63\",\"mappings\":{\"default\":{\"default\":\"crochet droit en coin demi chasse\"}}}]\n,\n\"fr/symbols/math_geometry.js\": \n[{\"locale\":\"fr\"},{\"key\":\"2500\",\"mappings\":{\"default\":{\"default\":\"filet horizontal fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2501\",\"mappings\":{\"default\":{\"default\":\"filet horizontal gras\"}}},{\"key\":\"2502\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2503\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras\"}}},{\"category\":\"So\",\"key\":\"2504\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2505\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2506\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical fin\"}}},{\"category\":\"So\",\"key\":\"2507\",\"mappings\":{\"default\":{\"default\":\"filet brisé triple vertical gras\"}}},{\"category\":\"So\",\"key\":\"2508\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2509\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple horizontal gras\"}}},{\"category\":\"So\",\"key\":\"250A\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical fin\"}}},{\"category\":\"So\",\"key\":\"250B\",\"mappings\":{\"default\":{\"default\":\"filet brisé quadruple vertical gras\"}}},{\"key\":\"250C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"250D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"250E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"250F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la droite\"}}},{\"key\":\"2510\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2511\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2512\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2513\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et vers la gauche\"}}},{\"key\":\"2514\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2515\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"2516\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2517\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la droite\"}}},{\"key\":\"2518\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2519\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"251B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et vers la gauche\"}}},{\"key\":\"251C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"251D\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"251E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"251F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2520\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2521\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2522\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2523\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la droite\"}}},{\"key\":\"2524\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et vers la gauche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2525\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2526\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2527\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2528\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2529\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"252A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252B\",\"mappings\":{\"default\":{\"default\":\"filet gras vertical et vers la gauche\"}}},{\"key\":\"252C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"252D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"252F\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2530\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2531\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2532\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2533\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et horizontal\"}}},{\"key\":\"2534\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2535\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2536\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2537\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras horizontal\"}}},{\"category\":\"So\",\"key\":\"2538\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin horizontal\"}}},{\"category\":\"So\",\"key\":\"2539\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"253B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et horizontal\"}}},{\"key\":\"253C\",\"mappings\":{\"default\":{\"default\":\"filet fin vertical et horizontal\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"253D\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"253E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et fin vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"253F\",\"mappings\":{\"default\":{\"default\":\"filet vertical fin et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"2540\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2541\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas et fin vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2542\",\"mappings\":{\"default\":{\"default\":\"filet vertical gras et horizontal fin\"}}},{\"category\":\"So\",\"key\":\"2543\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le haut et fin vers la droite et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2544\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le haut et fin vers la gauche et vers le bas\"}}},{\"category\":\"So\",\"key\":\"2545\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et vers le bas et fin vers la droite et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2546\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite et vers le bas et fin vers la gauche et vers le haut\"}}},{\"category\":\"So\",\"key\":\"2547\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas et gras vers le haut et horizontal\"}}},{\"category\":\"So\",\"key\":\"2548\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas et horizontal\"}}},{\"category\":\"So\",\"key\":\"2549\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite et gras vers la gauche et vertical\"}}},{\"category\":\"So\",\"key\":\"254A\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite et vertical\"}}},{\"category\":\"So\",\"key\":\"254B\",\"mappings\":{\"default\":{\"default\":\"filet vertical et horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254C\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal fin\"}}},{\"category\":\"So\",\"key\":\"254D\",\"mappings\":{\"default\":{\"default\":\"filet brisé double horizontal gras\"}}},{\"category\":\"So\",\"key\":\"254E\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical fin\"}}},{\"category\":\"So\",\"key\":\"254F\",\"mappings\":{\"default\":{\"default\":\"filet brisé double vertical gras\"}}},{\"key\":\"2550\",\"mappings\":{\"default\":{\"default\":\"filet double horizontal\"}},\"category\":\"So\"},{\"key\":\"2551\",\"mappings\":{\"default\":{\"default\":\"filet double vertical\"}},\"category\":\"So\"},{\"key\":\"2552\",\"mappings\":{\"default\":{\"default\":\"filet simple le bas et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2553\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"2554\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2555\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le bas et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2556\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2557\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2558\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la droite\"}},\"category\":\"So\"},{\"key\":\"2559\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la droite\"}},\"category\":\"So\"},{\"key\":\"255A\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la droite\"}},\"category\":\"So\"},{\"key\":\"255B\",\"mappings\":{\"default\":{\"default\":\"filet simple vers le haut et double vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255C\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et simple vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255D\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"255E\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et droit double\"}},\"category\":\"So\"},{\"key\":\"255F\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et droit simple\"}},\"category\":\"So\"},{\"key\":\"2560\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la droite\"}},\"category\":\"So\"},{\"key\":\"2561\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et gauche double\"}},\"category\":\"So\"},{\"key\":\"2562\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et gauche simple\"}},\"category\":\"So\"},{\"key\":\"2563\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et vers la gauche\"}},\"category\":\"So\"},{\"key\":\"2564\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2565\",\"mappings\":{\"default\":{\"default\":\"filet vers le bas double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2566\",\"mappings\":{\"default\":{\"default\":\"filet double vers le bas et horizontal\"}},\"category\":\"So\"},{\"key\":\"2567\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"2568\",\"mappings\":{\"default\":{\"default\":\"filet vers le haut double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"2569\",\"mappings\":{\"default\":{\"default\":\"filet double vers le haut et horizontal\"}},\"category\":\"So\"},{\"key\":\"256A\",\"mappings\":{\"default\":{\"default\":\"filet vertical simple et horizontal double\"}},\"category\":\"So\"},{\"key\":\"256B\",\"mappings\":{\"default\":{\"default\":\"filet vertical double et horizontal simple\"}},\"category\":\"So\"},{\"key\":\"256C\",\"mappings\":{\"default\":{\"default\":\"filet double vertical et horizontall\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"256D\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la droite\"}}},{\"category\":\"So\",\"key\":\"256E\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le bas et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"256F\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2570\",\"mappings\":{\"default\":{\"default\":\"filet fin arc vers le haut et vers la droite\"}}},{\"category\":\"So\",\"key\":\"2571\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur droit au coin inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2572\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin du coin supérieur gauche vers le coin inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2573\",\"mappings\":{\"default\":{\"default\":\"filet diagonal fin en croix\"}}},{\"category\":\"So\",\"key\":\"2574\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2575\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut\"}}},{\"category\":\"So\",\"key\":\"2576\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"2577\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le bas\"}}},{\"category\":\"So\",\"key\":\"2578\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche\"}}},{\"category\":\"So\",\"key\":\"2579\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut\"}}},{\"category\":\"So\",\"key\":\"257A\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257B\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257C\",\"mappings\":{\"default\":{\"default\":\"filet fin vers la gauche et gras vers la droite\"}}},{\"category\":\"So\",\"key\":\"257D\",\"mappings\":{\"default\":{\"default\":\"filet fin vers le haut et gras vers le bas\"}}},{\"category\":\"So\",\"key\":\"257E\",\"mappings\":{\"default\":{\"default\":\"filet gras vers la gauche et fin vers la droite\"}}},{\"category\":\"So\",\"key\":\"257F\",\"mappings\":{\"default\":{\"default\":\"filet gras vers le haut et fin vers le bas\"}}},{\"key\":\"2580\",\"mappings\":{\"default\":{\"default\":\"moitié supérieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2581\",\"mappings\":{\"default\":{\"default\":\"huitième inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2582\",\"mappings\":{\"default\":{\"default\":\"quart inférieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2583\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes inférieurs de pavé\"}}},{\"key\":\"2584\",\"mappings\":{\"default\":{\"default\":\"moitié inférieure de pavé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2585\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2586\",\"mappings\":{\"default\":{\"default\":\"trois quarts inférieurs de pavé\"}}},{\"category\":\"So\",\"key\":\"2587\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes inférieurs de pavé\"}}},{\"key\":\"2588\",\"mappings\":{\"default\":{\"default\":\"pavé plein\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2589\",\"mappings\":{\"default\":{\"default\":\"sept huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258A\",\"mappings\":{\"default\":{\"default\":\"trois quarts gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258B\",\"mappings\":{\"default\":{\"default\":\"cinq huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258C\",\"mappings\":{\"default\":{\"default\":\"moitié gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258D\",\"mappings\":{\"default\":{\"default\":\"trois huitièmes gauches de pavé\"}}},{\"category\":\"So\",\"key\":\"258E\",\"mappings\":{\"default\":{\"default\":\"un quart gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"258F\",\"mappings\":{\"default\":{\"default\":\"un huitième gauche de pavé\"}}},{\"category\":\"So\",\"key\":\"2590\",\"mappings\":{\"default\":{\"default\":\"moitié droite de pavé\"}}},{\"key\":\"2591\",\"mappings\":{\"default\":{\"default\":\"ombre légère\"}},\"category\":\"So\"},{\"key\":\"2592\",\"mappings\":{\"default\":{\"default\":\"ombre moyenne\"}},\"category\":\"So\"},{\"key\":\"2593\",\"mappings\":{\"default\":{\"default\":\"ombre foncée\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2594\",\"mappings\":{\"default\":{\"default\":\"huitième supérieur de pavé\"}}},{\"category\":\"So\",\"key\":\"2595\",\"mappings\":{\"default\":{\"default\":\"huitième droit de pavé\"}}},{\"category\":\"So\",\"key\":\"2596\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"2597\",\"mappings\":{\"default\":{\"default\":\"quadrant inférieur droit\"}}},{\"category\":\"So\",\"key\":\"2598\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"2599\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche inférieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259A\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259B\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259C\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur gauche supérieur droit et inférieur droit\"}}},{\"category\":\"So\",\"key\":\"259D\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit\"}}},{\"category\":\"So\",\"key\":\"259E\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit et inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"259F\",\"mappings\":{\"default\":{\"default\":\"quadrant supérieur droit inférieur gauche et inférieur droit\"}}},{\"key\":\"25A0\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25A1\",\"mappings\":{\"default\":{\"default\":\"carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25A2\",\"mappings\":{\"default\":{\"default\":\"carré blanc aux coins arrondis\"}}},{\"category\":\"So\",\"key\":\"25A3\",\"mappings\":{\"default\":{\"default\":\"petit carré noir inscrit dans un carré blanc\"}}},{\"category\":\"So\",\"key\":\"25A4\",\"mappings\":{\"default\":{\"default\":\"carré hachuré horizontalement\"}}},{\"category\":\"So\",\"key\":\"25A5\",\"mappings\":{\"default\":{\"default\":\"carré hachuré verticalement\"}}},{\"category\":\"So\",\"key\":\"25A6\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé\"}}},{\"category\":\"So\",\"key\":\"25A7\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à gauche vers le bas à droite\"}}},{\"category\":\"So\",\"key\":\"25A8\",\"mappings\":{\"default\":{\"default\":\"carré hachuré du haut à droite vers le bas à gauche\"}}},{\"category\":\"So\",\"key\":\"25A9\",\"mappings\":{\"default\":{\"default\":\"carré quadrillé en diagonale\"}}},{\"key\":\"25AA\",\"mappings\":{\"default\":{\"default\":\"petit carré noir\"}},\"category\":\"So\"},{\"key\":\"25AB\",\"mappings\":{\"default\":{\"default\":\"petit carré blanc\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25AC\",\"mappings\":{\"default\":{\"default\":\"rectangle noir\"}}},{\"key\":\"25AD\",\"mappings\":{\"default\":{\"default\":\"rectangle blanc\"}},\"category\":\"So\"},{\"key\":\"25AE\",\"mappings\":{\"default\":{\"default\":\"rectangle vertical noir\"}},\"category\":\"So\"},{\"key\":\"25AF\",\"mappings\":{\"default\":{\"default\":\"white vertical rectangle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25B0\",\"mappings\":{\"default\":{\"default\":\"parallélogramme noir\"}}},{\"key\":\"25B1\",\"mappings\":{\"default\":{\"default\":\"parallélogramme blanc\"}},\"category\":\"So\"},{\"key\":\"25B2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B3\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B4\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B5\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le haut\"}},\"category\":\"So\"},{\"key\":\"25B6\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B7\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers la droite\"}},\"category\":\"Sm\"},{\"key\":\"25B8\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la droite\"}},\"category\":\"So\"},{\"key\":\"25B9\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la droite\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25BA\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la droite\"}}},{\"category\":\"So\",\"key\":\"25BB\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la droite\"}}},{\"key\":\"25BC\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BD\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BE\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25BF\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers le bas\"}},\"category\":\"So\"},{\"key\":\"25C0\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"Sm\"},{\"key\":\"25C2\",\"mappings\":{\"default\":{\"default\":\"petit triangle noir pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C3\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc pointant vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C4\",\"mappings\":{\"default\":{\"default\":\"pointeur noir vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C5\",\"mappings\":{\"default\":{\"default\":\"pointeur blanc vers la gauche\"}},\"category\":\"So\"},{\"key\":\"25C6\",\"mappings\":{\"default\":{\"default\":\"losange noir\"}},\"category\":\"So\"},{\"key\":\"25C7\",\"mappings\":{\"default\":{\"default\":\"losange blanc\"}},\"category\":\"So\"},{\"key\":\"25C8\",\"mappings\":{\"default\":{\"default\":\"losange blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25C9\",\"mappings\":{\"default\":{\"default\":\"cercle blanc évidé\"}},\"category\":\"So\"},{\"key\":\"25CA\",\"mappings\":{\"default\":{\"default\":\"losange\"}},\"category\":\"So\"},{\"key\":\"25CB\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}},\"category\":\"So\"},{\"key\":\"25CC\",\"mappings\":{\"default\":{\"default\":\"cercle en pointillés\"}},\"category\":\"So\"},{\"key\":\"25CD\",\"mappings\":{\"default\":{\"default\":\"cercle hachuré verticalement\"}},\"category\":\"So\"},{\"key\":\"25CE\",\"mappings\":{\"default\":{\"default\":\"deux cercles concentriques\"}},\"category\":\"So\"},{\"key\":\"25CF\",\"mappings\":{\"default\":{\"default\":\"cercle noir\"}},\"category\":\"So\"},{\"key\":\"25D0\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25D1\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25D2\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié inférieure\"}},\"category\":\"So\"},{\"key\":\"25D3\",\"mappings\":{\"default\":{\"default\":\"cercle avec moitié supérieure\"}},\"category\":\"So\"},{\"key\":\"25D4\",\"mappings\":{\"default\":{\"default\":\"cercle avec quadrant supérieur droit noir\"}},\"category\":\"So\"},{\"key\":\"25D5\",\"mappings\":{\"default\":{\"default\":\"disque avec quadrant supérieur gauche blanc\"}},\"category\":\"So\"},{\"key\":\"25D6\",\"mappings\":{\"default\":{\"default\":\"demi disque gauche noir\"}},\"category\":\"So\"},{\"key\":\"25D7\",\"mappings\":{\"default\":{\"default\":\"demi disque droite noir\"}},\"category\":\"So\"},{\"key\":\"25D8\",\"mappings\":{\"default\":{\"default\":\"point noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25D9\",\"mappings\":{\"default\":{\"default\":\"cercle noir au blanc\"}},\"category\":\"So\"},{\"key\":\"25DA\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DB\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur noir au  blanc\"}},\"category\":\"So\"},{\"key\":\"25DC\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur gauchearc de cercle dans le quadrant supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25DD\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25DE\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25DF\",\"mappings\":{\"default\":{\"default\":\"arc de cercle dans le quadrant inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E0\",\"mappings\":{\"default\":{\"default\":\"demi cercle supérieur\"}},\"category\":\"So\"},{\"key\":\"25E1\",\"mappings\":{\"default\":{\"default\":\"demi cercle inférieur\"}},\"category\":\"So\"},{\"key\":\"25E2\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur droit\"}},\"category\":\"So\"},{\"key\":\"25E3\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir inférieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E4\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur gauche\"}},\"category\":\"So\"},{\"key\":\"25E5\",\"mappings\":{\"default\":{\"default\":\"coin triangulaire noir supérieur droit\"}},\"category\":\"So\"},{\"key\":\"25E6\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"So\"},{\"key\":\"25E7\",\"mappings\":{\"default\":{\"default\":\"carré à moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25E8\",\"mappings\":{\"default\":{\"default\":\"carré à moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25E9\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EA\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure droite noire\"}},\"category\":\"So\"},{\"key\":\"25EB\",\"mappings\":{\"default\":{\"default\":\"carré blanc à ligne bissectrice verticale\"}},\"category\":\"So\"},{\"key\":\"25EC\",\"mappings\":{\"default\":{\"default\":\"triangle blanc pointant vers le haut pointé\"}},\"category\":\"So\"},{\"key\":\"25ED\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié gauche noire\"}},\"category\":\"So\"},{\"key\":\"25EE\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le haut À moitié droite noire\"}},\"category\":\"So\"},{\"key\":\"25EF\",\"mappings\":{\"default\":{\"default\":\"grand cercle\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"25F0\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F1\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F2\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F3\",\"mappings\":{\"default\":{\"default\":\"carré blanc à quartier supérieur droit\"}}},{\"category\":\"So\",\"key\":\"25F4\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F5\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur gauche\"}}},{\"category\":\"So\",\"key\":\"25F6\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier inférieur droit\"}}},{\"category\":\"So\",\"key\":\"25F7\",\"mappings\":{\"default\":{\"default\":\"cercle blanc à quartier supérieur droit\"}}},{\"key\":\"25F8\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25F9\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle supérieur droit\"}},\"category\":\"Sm\"},{\"key\":\"25FA\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur gauche\"}},\"category\":\"Sm\"},{\"key\":\"25FB\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FC\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FD\",\"mappings\":{\"default\":{\"default\":\"carré moyen blanc\"}},\"category\":\"Sm\"},{\"key\":\"25FE\",\"mappings\":{\"default\":{\"default\":\"carré moyen noir\"}},\"category\":\"Sm\"},{\"key\":\"25FF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle inférieur droit\"}},\"category\":\"Sm\"},{\"category\":\"So\",\"key\":\"2B12\",\"mappings\":{\"default\":{\"default\":\"carré à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B13\",\"mappings\":{\"default\":{\"default\":\"carré à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B14\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale supérieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B15\",\"mappings\":{\"default\":{\"default\":\"carré à moitié diagonale inférieure droite noire\"}}},{\"category\":\"So\",\"key\":\"2B16\",\"mappings\":{\"default\":{\"default\":\"losange à moitié gauche noire\"}}},{\"category\":\"So\",\"key\":\"2B17\",\"mappings\":{\"default\":{\"default\":\"losange à moitié droite noire\"}}},{\"category\":\"So\",\"key\":\"2B18\",\"mappings\":{\"default\":{\"default\":\"losange à moitié supérieure noire\"}}},{\"category\":\"So\",\"key\":\"2B19\",\"mappings\":{\"default\":{\"default\":\"losange à moitié inférieure noire\"}}},{\"category\":\"So\",\"key\":\"2B1A\",\"mappings\":{\"default\":{\"default\":\"carré en pointillés\"}}},{\"category\":\"So\",\"key\":\"2B1B\",\"mappings\":{\"default\":{\"default\":\"grand carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1C\",\"mappings\":{\"default\":{\"default\":\"grand carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1D\",\"mappings\":{\"default\":{\"default\":\"très petit carré noir\"}}},{\"category\":\"So\",\"key\":\"2B1E\",\"mappings\":{\"default\":{\"default\":\"très petit carré blanc\"}}},{\"category\":\"So\",\"key\":\"2B1F\",\"mappings\":{\"default\":{\"default\":\"pentagone noir\"}}},{\"category\":\"So\",\"key\":\"2B20\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B21\",\"mappings\":{\"default\":{\"default\":\"hexagone blanc\"}}},{\"category\":\"So\",\"key\":\"2B22\",\"mappings\":{\"default\":{\"default\":\"hexagone noir\"}}},{\"category\":\"So\",\"key\":\"2B23\",\"mappings\":{\"default\":{\"default\":\"hexagone noir posé sur un côté\"}}},{\"category\":\"So\",\"key\":\"2B24\",\"mappings\":{\"default\":{\"default\":\"grand cercle noir\"}}},{\"category\":\"So\",\"key\":\"2B25\",\"mappings\":{\"default\":{\"default\":\"losange moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B26\",\"mappings\":{\"default\":{\"default\":\"losange moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B27\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen noir\"}}},{\"category\":\"So\",\"key\":\"2B28\",\"mappings\":{\"default\":{\"default\":\"rhombe moyen blanc\"}}},{\"category\":\"So\",\"key\":\"2B29\",\"mappings\":{\"default\":{\"default\":\"petit losange noir\"}}},{\"category\":\"So\",\"key\":\"2B2A\",\"mappings\":{\"default\":{\"default\":\"petit rhombe noir\"}}},{\"category\":\"So\",\"key\":\"2B2B\",\"mappings\":{\"default\":{\"default\":\"petit rhombe blanc\"}}},{\"category\":\"So\",\"key\":\"2B2C\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale noire\"}}},{\"category\":\"So\",\"key\":\"2B2D\",\"mappings\":{\"default\":{\"default\":\"ellipse horizontale blanche\"}}},{\"category\":\"So\",\"key\":\"2B2E\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale noire\"}}},{\"category\":\"So\",\"key\":\"2B2F\",\"mappings\":{\"default\":{\"default\":\"ellipse verticale blanche\"}}},{\"key\":\"2B50\",\"mappings\":{\"default\":{\"default\":\"étoile blanche moyenne\"}},\"category\":\"So\"},{\"key\":\"2B51\",\"mappings\":{\"default\":{\"default\":\"petite étoile noire\"}},\"category\":\"So\"},{\"key\":\"2B52\",\"mappings\":{\"default\":{\"default\":\"petite étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2B53\",\"mappings\":{\"default\":{\"default\":\"pentagone noir pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B54\",\"mappings\":{\"default\":{\"default\":\"pentagone blanc pointant vers la droite\"}}},{\"category\":\"So\",\"key\":\"2B55\",\"mappings\":{\"default\":{\"default\":\"grand cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B56\",\"mappings\":{\"default\":{\"default\":\"ovale gras avec ovale inscrit\"}}},{\"category\":\"So\",\"key\":\"2B57\",\"mappings\":{\"default\":{\"default\":\"cercle gras avec cercle inscrit\"}}},{\"category\":\"So\",\"key\":\"2B58\",\"mappings\":{\"default\":{\"default\":\"cercle gras\"}}},{\"category\":\"So\",\"key\":\"2B59\",\"mappings\":{\"default\":{\"default\":\"sautoir cerclé gras\"}}}]\n,\n\"fr/symbols/math_harpoons.js\": \n[{\"locale\":\"fr\"},{\"key\":\"21BC\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21BD\",\"mappings\":{\"default\":{\"default\":\"harpon gauche avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21BE\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21BF\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21C0\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent dressée\"}},\"category\":\"So\"},{\"key\":\"21C1\",\"mappings\":{\"default\":{\"default\":\"harpon droit avec dent baissée\"}},\"category\":\"So\"},{\"key\":\"21C2\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent droite\"}},\"category\":\"So\"},{\"key\":\"21C3\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas avec dent gauche\"}},\"category\":\"So\"},{\"key\":\"21CB\",\"mappings\":{\"default\":{\"default\":\"harpon gauche par dessus harpon droit\"}},\"category\":\"So\"},{\"key\":\"21CC\",\"mappings\":{\"default\":{\"default\":\"harpon droit par dessus harpon gauche\"}},\"category\":\"So\"},{\"key\":\"294A\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche dressée et droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"294B\",\"mappings\":{\"default\":{\"default\":\"javelot à dents gauche baissée et droite dressée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"294C\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure droite et inférieure gauche\"}}},{\"category\":\"Sm\",\"key\":\"294D\",\"mappings\":{\"default\":{\"default\":\"crampon à dents supérieure gauche et inférieure droite\"}}},{\"key\":\"294E\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche dressées\"}},\"category\":\"Sm\"},{\"key\":\"294F\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure droites\"}},\"category\":\"Sm\"},{\"key\":\"2950\",\"mappings\":{\"default\":{\"default\":\"javelot à dents droite et gauche baissées\"}},\"category\":\"Sm\"},{\"key\":\"2951\",\"mappings\":{\"default\":{\"default\":\"javelot à dents supérieure et inférieure gauches\"}},\"category\":\"Sm\"},{\"key\":\"2952\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2953\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2954\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2955\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2956\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2957\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2958\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"2959\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche contre taquet\"}},\"category\":\"Sm\"},{\"key\":\"295A\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295B\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295C\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295D\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent droite depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295E\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"295F\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent baissée depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2960\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2961\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche depuis taquet\"}},\"category\":\"Sm\"},{\"key\":\"2962\",\"mappings\":{\"default\":{\"default\":\"harpon gauche à dent dressée sur harpon gauche à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2963\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2964\",\"mappings\":{\"default\":{\"default\":\"harpon droit à dent dressée par dessus harpon droit à dent baissée\"}},\"category\":\"Sm\"},{\"key\":\"2965\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"2966\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus harpon à dent droite dressée\"}},\"category\":\"Sm\"},{\"key\":\"2967\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche baissée par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"2968\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus harpon à dent gauche dressée\"}},\"category\":\"Sm\"},{\"key\":\"2969\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite baissée par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296A\",\"mappings\":{\"default\":{\"default\":\"harpon à dent gauche dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296B\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent gauche baissée\"}},\"category\":\"Sm\"},{\"key\":\"296C\",\"mappings\":{\"default\":{\"default\":\"harpon à dent droite dressée par dessus long trait\"}},\"category\":\"Sm\"},{\"key\":\"296D\",\"mappings\":{\"default\":{\"default\":\"long trait par dessus harpon à dent droite baissée\"}},\"category\":\"Sm\"},{\"key\":\"296E\",\"mappings\":{\"default\":{\"default\":\"harpon vers le haut à dent gauche à côté de harpon vers le bas à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"296F\",\"mappings\":{\"default\":{\"default\":\"harpon vers le bas à dent gauche à côté de harpon vers le haut à dent droite\"}},\"category\":\"Sm\"},{\"key\":\"297C\",\"mappings\":{\"default\":{\"default\":\"ancre gauche\"}},\"category\":\"Sm\"},{\"key\":\"297D\",\"mappings\":{\"default\":{\"default\":\"ancre droite\"}},\"category\":\"Sm\"},{\"key\":\"297E\",\"mappings\":{\"default\":{\"default\":\"ancre vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"297F\",\"mappings\":{\"default\":{\"default\":\"ancre vers le bas\"}},\"category\":\"Sm\"}]\n,\n\"fr/symbols/math_non_characters.js\": \n[{\"locale\":\"fr\"},{\"key\":\"210F\",\"mappings\":{\"default\":{\"default\":\"constante de planck sur deux pi\"}},\"category\":\"Ll\"},{\"category\":\"So\",\"key\":\"2114\",\"mappings\":{\"default\":{\"default\":\"symbole l b barré\"}}},{\"key\":\"2116\",\"mappings\":{\"default\":{\"default\":\"symbole numéro\"}},\"category\":\"So\"},{\"key\":\"2117\",\"mappings\":{\"default\":{\"default\":\"copyright de programme sonore\"}},\"category\":\"So\"},{\"key\":\"211E\",\"mappings\":{\"default\":{\"default\":\"ordonnances\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"211F\",\"mappings\":{\"default\":{\"default\":\"répons\"}}},{\"category\":\"So\",\"key\":\"2120\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de service\"}}},{\"category\":\"So\",\"key\":\"2121\",\"mappings\":{\"default\":{\"default\":\"signe de téléphone\"}}},{\"key\":\"2122\",\"mappings\":{\"default\":{\"default\":\"symbole anglais marque de commerce\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2123\",\"mappings\":{\"default\":{\"default\":\"versicule\"}}},{\"key\":\"2125\",\"mappings\":{\"default\":{\"default\":\"symbole once\"}},\"category\":\"So\"},{\"key\":\"2126\",\"mappings\":{\"default\":{\"default\":\"ohm\"}},\"category\":\"Lu\"},{\"key\":\"2127\",\"mappings\":{\"default\":{\"default\":\"ohm culbuté\"}},\"category\":\"So\"},{\"key\":\"212A\",\"mappings\":{\"default\":{\"default\":\"degré kelvin\"}},\"category\":\"Lu\"},{\"key\":\"212B\",\"mappings\":{\"default\":{\"default\":\"angstroms\"}},\"category\":\"Lu\"},{\"category\":\"So\",\"key\":\"212E\",\"mappings\":{\"default\":{\"default\":\"symbole estimé\"}}},{\"key\":\"2132\",\"mappings\":{\"default\":{\"default\":\"f culbuté majuscule\"}},\"category\":\"Lu\"},{\"category\":\"Ll\",\"key\":\"2139\",\"mappings\":{\"default\":{\"default\":\"bureau d'information\"}}},{\"category\":\"So\",\"key\":\"213A\",\"mappings\":{\"default\":{\"default\":\"Q majuscule couché\"}}},{\"category\":\"So\",\"key\":\"213B\",\"mappings\":{\"default\":{\"default\":\"symbole télécopie\"}}},{\"category\":\"Sm\",\"key\":\"2141\",\"mappings\":{\"default\":{\"default\":\"G culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2142\",\"mappings\":{\"default\":{\"default\":\"L culbuté majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2143\",\"mappings\":{\"default\":{\"default\":\"L réfléchi majuscule sans empattement\"}}},{\"category\":\"Sm\",\"key\":\"2144\",\"mappings\":{\"default\":{\"default\":\"Y culbuté majuscule sans empattement\"}}}]\n,\n\"fr/symbols/math_symbols.js\": \n[{\"locale\":\"fr\"},{\"key\":\"0021\",\"mappings\":{\"default\":{\"default\":\"factorielle\"}},\"category\":\"Po\"},{\"key\":\"0022\",\"mappings\":{\"default\":{\"default\":\"petit guillemet\"}},\"category\":\"Po\"},{\"key\":\"0023\",\"mappings\":{\"default\":{\"default\":\"dièse\"}},\"category\":\"Po\"},{\"key\":\"0024\",\"mappings\":{\"default\":{\"default\":\"dollars\"}},\"category\":\"Sc\"},{\"key\":\"0025\",\"mappings\":{\"default\":{\"default\":\"pourcent\"}},\"category\":\"Po\"},{\"key\":\"0026\",\"mappings\":{\"default\":{\"default\":\"esperluette\"}},\"category\":\"Po\"},{\"key\":\"0027\",\"mappings\":{\"default\":{\"default\":\"prime\",\"alternative\":\"apostrophe\"}},\"category\":\"Po\"},{\"key\":\"002A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}},\"category\":\"Po\"},{\"key\":\"002B\",\"mappings\":{\"default\":{\"default\":\"plus\"}},\"category\":\"Sm\"},{\"key\":\"002C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}},\"category\":\"Po\"},{\"key\":\"002D\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Pd\"},{\"key\":\"002E\",\"mappings\":{\"default\":{\"default\":\"point\"}},\"category\":\"Po\"},{\"key\":\"002F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}},\"category\":\"Po\"},{\"key\":\"003A\",\"mappings\":{\"default\":{\"default\":\"deux points\"}},\"category\":\"Po\"},{\"key\":\"003B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}},\"category\":\"Po\"},{\"key\":\"003C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"003D\",\"mappings\":{\"default\":{\"default\":\"égale\"}},\"category\":\"Sm\"},{\"key\":\"003E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"003F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}},\"category\":\"Po\"},{\"key\":\"0040\",\"mappings\":{\"default\":{\"default\":\"arobase\"}},\"category\":\"Po\"},{\"key\":\"005C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}},\"category\":\"Po\"},{\"key\":\"005E\",\"mappings\":{\"default\":{\"default\":\"circonflexe\"}},\"category\":\"Sk\"},{\"key\":\"005F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}},\"category\":\"Pc\"},{\"key\":\"0060\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}},\"category\":\"Sk\"},{\"key\":\"007C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"007E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sm\"},{\"key\":\"00A1\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation renversé\"}},\"category\":\"Po\"},{\"key\":\"00A2\",\"mappings\":{\"default\":{\"default\":\"centimes\"}},\"category\":\"Sc\"},{\"key\":\"00A3\",\"mappings\":{\"default\":{\"default\":\"livres\"}},\"category\":\"Sc\"},{\"key\":\"00A4\",\"mappings\":{\"default\":{\"default\":\"symbole monétaire\"}},\"category\":\"Sc\"},{\"key\":\"00A5\",\"mappings\":{\"default\":{\"default\":\"yen\"}},\"category\":\"Sc\"},{\"key\":\"00A6\",\"mappings\":{\"default\":{\"default\":\"barre déjointe\"}},\"category\":\"So\"},{\"key\":\"00A7\",\"mappings\":{\"default\":{\"default\":\"paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00A8\",\"mappings\":{\"default\":{\"default\":\"tréma\"}},\"category\":\"Sk\"},{\"key\":\"00A9\",\"mappings\":{\"default\":{\"default\":\"copyright\"}},\"category\":\"So\"},{\"key\":\"00AA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal féminin\"}},\"category\":\"Lo\"},{\"key\":\"00AB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant gauche\"}},\"category\":\"Pi\"},{\"key\":\"00AC\",\"mappings\":{\"default\":{\"default\":\"négation\"}},\"category\":\"Sm\"},{\"key\":\"00AE\",\"mappings\":{\"default\":{\"default\":\"symbole marque déposée\"}},\"category\":\"So\"},{\"key\":\"00AF\",\"mappings\":{\"default\":{\"default\":\"macron\"}},\"category\":\"Sk\"},{\"key\":\"00B0\",\"mappings\":{\"default\":{\"default\":\"degrés\"}},\"category\":\"So\"},{\"key\":\"00B1\",\"mappings\":{\"default\":{\"default\":\"plus ou moins\"}},\"category\":\"Sm\"},{\"key\":\"00B4\",\"mappings\":{\"default\":{\"default\":\"accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"00B5\",\"mappings\":{\"default\":{\"default\":\"symbole micro\"}},\"category\":\"Ll\"},{\"key\":\"00B6\",\"mappings\":{\"default\":{\"default\":\"fin de paragraphe\"}},\"category\":\"Po\"},{\"key\":\"00B7\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Po\"},{\"key\":\"00B8\",\"mappings\":{\"default\":{\"default\":\"cédille\"}},\"category\":\"Sk\"},{\"key\":\"00BA\",\"mappings\":{\"default\":{\"default\":\"indicateur ordinal masculin\"}},\"category\":\"Lo\"},{\"key\":\"00BB\",\"mappings\":{\"default\":{\"default\":\"guillemet chevron pointant droite\"}},\"category\":\"Pf\"},{\"key\":\"00BF\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation renversé\"}},\"category\":\"Po\"},{\"key\":\"00D7\",\"mappings\":{\"default\":{\"default\":\"multiplié par\"}},\"category\":\"Sm\"},{\"key\":\"00F7\",\"mappings\":{\"default\":{\"default\":\"divisé par\"}},\"category\":\"Sm\"},{\"key\":\"02D8\",\"mappings\":{\"default\":{\"default\":\"brève\"}},\"category\":\"Sk\"},{\"key\":\"02D9\",\"mappings\":{\"default\":{\"default\":\"point en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DA\",\"mappings\":{\"default\":{\"default\":\"rond en chef\"}},\"category\":\"Sk\"},{\"key\":\"02DB\",\"mappings\":{\"default\":{\"default\":\"ogonek\"}},\"category\":\"Sk\"},{\"key\":\"02DC\",\"mappings\":{\"default\":{\"default\":\"tilde\"}},\"category\":\"Sk\"},{\"key\":\"02DD\",\"mappings\":{\"default\":{\"default\":\"double accent aigu\"}},\"category\":\"Sk\"},{\"key\":\"2010\",\"mappings\":{\"default\":{\"default\":\"trait d'union\"}},\"category\":\"Pd\"},{\"category\":\"Pd\",\"key\":\"2011\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}}},{\"category\":\"Pd\",\"key\":\"2012\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}}},{\"key\":\"2013\",\"mappings\":{\"default\":{\"default\":\"trait d'union insécable\"}},\"category\":\"Pd\"},{\"key\":\"2014\",\"mappings\":{\"default\":{\"default\":\"tiret numérique\"}},\"category\":\"Pd\"},{\"key\":\"2015\",\"mappings\":{\"default\":{\"default\":\"barre horizontalle\"}},\"category\":\"Pd\"},{\"key\":\"2016\",\"mappings\":{\"default\":{\"default\":\"double ligne verticale\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2017\",\"mappings\":{\"default\":{\"default\":\"double trait souscrit\"}}},{\"key\":\"2018\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe culbuté\"}},\"category\":\"Pi\"},{\"key\":\"2019\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe\"}},\"category\":\"Pf\"},{\"key\":\"201A\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule inférieur\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201B\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule supérieur culbuté\"}}},{\"key\":\"201C\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double culbuté\"}},\"category\":\"Pi\"},{\"key\":\"201D\",\"mappings\":{\"default\":{\"default\":\"guillemet apostrophe double\"}},\"category\":\"Pf\"},{\"key\":\"201E\",\"mappings\":{\"default\":{\"default\":\"guillemet double prime\"}},\"category\":\"Ps\"},{\"category\":\"Pi\",\"key\":\"201F\",\"mappings\":{\"default\":{\"default\":\"guillemet virgule double supérieur culbuté\"}}},{\"key\":\"2020\",\"mappings\":{\"default\":{\"default\":\"obèle\"}},\"category\":\"Po\"},{\"key\":\"2021\",\"mappings\":{\"default\":{\"default\":\"double obèle\"}},\"category\":\"Po\"},{\"key\":\"2022\",\"mappings\":{\"default\":{\"default\":\"puce\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2023\",\"mappings\":{\"default\":{\"default\":\"puce triangulaire\"}}},{\"category\":\"Po\",\"key\":\"2024\",\"mappings\":{\"default\":{\"default\":\"point de conduite simple\"}}},{\"key\":\"2025\",\"mappings\":{\"default\":{\"default\":\"point de conduite double\"}},\"category\":\"Po\"},{\"key\":\"2026\",\"mappings\":{\"default\":{\"default\":\"points de suspension\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2027\",\"mappings\":{\"default\":{\"default\":\"point de coupure de mot\"}}},{\"key\":\"2030\",\"mappings\":{\"default\":{\"default\":\"symbole pour mille\"}},\"category\":\"Po\"},{\"key\":\"2031\",\"mappings\":{\"default\":{\"default\":\"symbole pour dix mille\"}},\"category\":\"Po\"},{\"key\":\"2032\",\"mappings\":{\"default\":{\"default\":\"prime\"}},\"category\":\"Po\"},{\"key\":\"2033\",\"mappings\":{\"default\":{\"default\":\"double prime\"}},\"category\":\"Po\"},{\"key\":\"2034\",\"mappings\":{\"default\":{\"default\":\"triple prime\"}},\"category\":\"Po\"},{\"key\":\"2035\",\"mappings\":{\"default\":{\"default\":\"prime réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2036\",\"mappings\":{\"default\":{\"default\":\"double prime réfléchi\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2037\",\"mappings\":{\"default\":{\"default\":\"triple prime réfléchi\"}}},{\"category\":\"Po\",\"key\":\"2038\",\"mappings\":{\"default\":{\"default\":\"chevron d'insertion\"}}},{\"key\":\"2039\",\"mappings\":{\"default\":{\"default\":\"guillemet simple gauche\"}},\"category\":\"Pi\"},{\"key\":\"203A\",\"mappings\":{\"default\":{\"default\":\"guillemet simple droite\"}},\"category\":\"Pf\"},{\"category\":\"Po\",\"key\":\"203B\",\"mappings\":{\"default\":{\"default\":\"marque de référence\"}}},{\"category\":\"Po\",\"key\":\"203C\",\"mappings\":{\"default\":{\"default\":\"double point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"203D\",\"mappings\":{\"default\":{\"default\":\"point exclarrogatif\"}}},{\"key\":\"203E\",\"mappings\":{\"default\":{\"default\":\"tiret en chef\"}},\"category\":\"Po\"},{\"category\":\"Pc\",\"key\":\"203F\",\"mappings\":{\"default\":{\"default\":\"tirant souscrit\"}}},{\"key\":\"2040\",\"mappings\":{\"default\":{\"default\":\"tirant en chef\"}},\"category\":\"Pc\"},{\"key\":\"2041\",\"mappings\":{\"default\":{\"default\":\"lambda d'insertion\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2042\",\"mappings\":{\"default\":{\"default\":\"astérisme\"}}},{\"key\":\"2043\",\"mappings\":{\"default\":{\"default\":\"puce trait d'union\"}},\"category\":\"Po\"},{\"key\":\"2044\",\"mappings\":{\"default\":{\"default\":\"barre de fraction\"}},\"category\":\"Sm\"},{\"category\":\"Po\",\"key\":\"2047\",\"mappings\":{\"default\":{\"default\":\"double point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"2048\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation exclamation\"}}},{\"category\":\"Po\",\"key\":\"2049\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation interrogation\"}}},{\"category\":\"Po\",\"key\":\"204B\",\"mappings\":{\"default\":{\"default\":\"pied de mouche réfléchi\"}}},{\"category\":\"Po\",\"key\":\"204C\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à droite\"}}},{\"category\":\"Po\",\"key\":\"204D\",\"mappings\":{\"default\":{\"default\":\"puce noire tronquée à gauche\"}}},{\"category\":\"Po\",\"key\":\"204E\",\"mappings\":{\"default\":{\"default\":\"astérisque baissé\"}}},{\"key\":\"204F\",\"mappings\":{\"default\":{\"default\":\"point virgule réfléchi\"}},\"category\":\"Po\"},{\"key\":\"2050\",\"mappings\":{\"default\":{\"default\":\"resserrer\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2051\",\"mappings\":{\"default\":{\"default\":\"deux astérisques alignés verticalement\"}}},{\"category\":\"Sm\",\"key\":\"2052\",\"mappings\":{\"default\":{\"default\":\"moins commercial\"}}},{\"category\":\"Po\",\"key\":\"2053\",\"mappings\":{\"default\":{\"default\":\"tiret ondé\"}}},{\"category\":\"Pc\",\"key\":\"2054\",\"mappings\":{\"default\":{\"default\":\"dos d'âne souscrit\"}}},{\"category\":\"Po\",\"key\":\"2055\",\"mappings\":{\"default\":{\"default\":\"point fleur\"}}},{\"category\":\"Po\",\"key\":\"2056\",\"mappings\":{\"default\":{\"default\":\"trois points\"}}},{\"key\":\"2057\",\"mappings\":{\"default\":{\"default\":\"quadruple prime\"}},\"category\":\"Po\"},{\"category\":\"Po\",\"key\":\"2058\",\"mappings\":{\"default\":{\"default\":\"quatre points en losange\"}}},{\"category\":\"Po\",\"key\":\"2059\",\"mappings\":{\"default\":{\"default\":\"cinq points en quinconce\"}}},{\"category\":\"Po\",\"key\":\"205A\",\"mappings\":{\"default\":{\"default\":\"deux points en capitale\"}}},{\"category\":\"Po\",\"key\":\"205B\",\"mappings\":{\"default\":{\"default\":\"quatre points en croix\"}}},{\"category\":\"Po\",\"key\":\"205C\",\"mappings\":{\"default\":{\"default\":\"croix pointée\"}}},{\"category\":\"Po\",\"key\":\"205D\",\"mappings\":{\"default\":{\"default\":\"trois points vertical\"}}},{\"category\":\"Po\",\"key\":\"205E\",\"mappings\":{\"default\":{\"default\":\"quatre points vertical\"}}},{\"category\":\"Sm\",\"key\":\"207A\",\"mappings\":{\"default\":{\"default\":\"exposant signe plus\"}}},{\"category\":\"Sm\",\"key\":\"207B\",\"mappings\":{\"default\":{\"default\":\"exposant signe moins\"}}},{\"category\":\"Sm\",\"key\":\"207C\",\"mappings\":{\"default\":{\"default\":\"exposant signe égal\"}}},{\"category\":\"Ps\",\"key\":\"207D\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"207E\",\"mappings\":{\"default\":{\"default\":\"exposant parenthèse droite\"}}},{\"category\":\"Sm\",\"key\":\"208A\",\"mappings\":{\"default\":{\"default\":\"indice signe plus\"}}},{\"category\":\"Sm\",\"key\":\"208B\",\"mappings\":{\"default\":{\"default\":\"indice signe moins\"}}},{\"category\":\"Sm\",\"key\":\"208C\",\"mappings\":{\"default\":{\"default\":\"indice signe égal\"}}},{\"category\":\"Ps\",\"key\":\"208D\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse gauche\"}}},{\"category\":\"Pe\",\"key\":\"208E\",\"mappings\":{\"default\":{\"default\":\"indice parenthèse droite\"}}},{\"category\":\"So\",\"key\":\"214A\",\"mappings\":{\"default\":{\"default\":\"limite de propriété\"}}},{\"category\":\"Sm\",\"key\":\"214B\",\"mappings\":{\"default\":{\"default\":\"perluète culbutée\"}}},{\"category\":\"So\",\"key\":\"214C\",\"mappings\":{\"default\":{\"default\":\"symbole per\"}}},{\"category\":\"So\",\"key\":\"214D\",\"mappings\":{\"default\":{\"default\":\"aktieselskab\"}}},{\"category\":\"Ll\",\"key\":\"214E\",\"mappings\":{\"default\":{\"default\":\"minuscule f culbuté\"}}},{\"key\":\"2200\",\"mappings\":{\"default\":{\"default\":\"pour tous\"}},\"category\":\"Sm\"},{\"key\":\"2201\",\"mappings\":{\"default\":{\"default\":\"complément\"}},\"category\":\"Sm\"},{\"key\":\"2203\",\"mappings\":{\"default\":{\"default\":\"il existe\"}},\"category\":\"Sm\"},{\"key\":\"2204\",\"mappings\":{\"default\":{\"default\":\"il n'existe pas\"}},\"category\":\"Sm\"},{\"key\":\"2205\",\"mappings\":{\"default\":{\"default\":\"ensemble vide\"}},\"category\":\"Sm\"},{\"key\":\"2206\",\"mappings\":{\"default\":{\"default\":\"incrément\"}},\"category\":\"Sm\"},{\"key\":\"2208\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"2209\",\"mappings\":{\"default\":{\"default\":\"n'appartient pas à\"}},\"category\":\"Sm\"},{\"key\":\"220A\",\"mappings\":{\"default\":{\"default\":\"appartient à\"}},\"category\":\"Sm\"},{\"key\":\"220B\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220C\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220D\",\"mappings\":{\"default\":{\"default\":\"contient comme élément\"}},\"category\":\"Sm\"},{\"key\":\"220E\",\"mappings\":{\"default\":{\"default\":\"ce qu'il fallait démontrer\"}},\"category\":\"Sm\"},{\"key\":\"220F\",\"mappings\":{\"default\":{\"default\":\"produit\"}},\"category\":\"Sm\"},{\"key\":\"2210\",\"mappings\":{\"default\":{\"default\":\"coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2211\",\"mappings\":{\"default\":{\"default\":\"sommation\"}},\"category\":\"Sm\"},{\"key\":\"2212\",\"mappings\":{\"default\":{\"default\":\"moins\"}},\"category\":\"Sm\"},{\"key\":\"2213\",\"mappings\":{\"default\":{\"default\":\"moins ou plus\"}},\"category\":\"Sm\"},{\"key\":\"2214\",\"mappings\":{\"default\":{\"default\":\"plus pointé\"}},\"category\":\"Sm\"},{\"key\":\"2215\",\"mappings\":{\"default\":{\"default\":\"division\"}},\"category\":\"Sm\"},{\"key\":\"2216\",\"mappings\":{\"default\":{\"default\":\"différence d'ensembles\"}},\"category\":\"Sm\"},{\"key\":\"2217\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque\"}},\"category\":\"Sm\"},{\"key\":\"2218\",\"mappings\":{\"default\":{\"default\":\"opérateur rond\"}},\"category\":\"Sm\"},{\"key\":\"2219\",\"mappings\":{\"default\":{\"default\":\"point médian\"}},\"category\":\"Sm\"},{\"key\":\"221A\",\"mappings\":{\"default\":{\"default\":\"racine carrée\"}},\"category\":\"Sm\"},{\"key\":\"221B\",\"mappings\":{\"default\":{\"default\":\"racine cubique\"}},\"category\":\"Sm\"},{\"key\":\"221C\",\"mappings\":{\"default\":{\"default\":\"racine quatrième\"}},\"category\":\"Sm\"},{\"key\":\"221D\",\"mappings\":{\"default\":{\"default\":\"proportionnel à\"}},\"category\":\"Sm\"},{\"key\":\"221E\",\"mappings\":{\"default\":{\"default\":\"infini\"}},\"category\":\"Sm\"},{\"key\":\"221F\",\"mappings\":{\"default\":{\"default\":\"angle droit\"}},\"category\":\"Sm\"},{\"key\":\"2220\",\"mappings\":{\"default\":{\"default\":\"angle\"}},\"category\":\"Sm\"},{\"key\":\"2221\",\"mappings\":{\"default\":{\"default\":\"angle mesuré\"}},\"category\":\"Sm\"},{\"key\":\"2222\",\"mappings\":{\"default\":{\"default\":\"angle sphérique\"}},\"category\":\"Sm\"},{\"key\":\"2223\",\"mappings\":{\"default\":{\"default\":\"est un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2224\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de\"}},\"category\":\"Sm\"},{\"key\":\"2225\",\"mappings\":{\"default\":{\"default\":\"parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2226\",\"mappings\":{\"default\":{\"default\":\"non parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"2227\",\"mappings\":{\"default\":{\"default\":\"et logique\"}},\"category\":\"Sm\"},{\"key\":\"2228\",\"mappings\":{\"default\":{\"default\":\"ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2229\",\"mappings\":{\"default\":{\"default\":\"intersection\"}},\"category\":\"Sm\"},{\"key\":\"222A\",\"mappings\":{\"default\":{\"default\":\"union\"}},\"category\":\"Sm\"},{\"key\":\"222B\",\"mappings\":{\"default\":{\"default\":\"intégrale\"}},\"category\":\"Sm\"},{\"key\":\"222C\",\"mappings\":{\"default\":{\"default\":\"intégrale double\"}},\"category\":\"Sm\"},{\"key\":\"222D\",\"mappings\":{\"default\":{\"default\":\"intégrale triple\"}},\"category\":\"Sm\"},{\"key\":\"222E\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour\"}},\"category\":\"Sm\"},{\"key\":\"222F\",\"mappings\":{\"default\":{\"default\":\"intégrale de surface\"}},\"category\":\"Sm\"},{\"key\":\"2230\",\"mappings\":{\"default\":{\"default\":\"intégrale de volume\"}},\"category\":\"Sm\"},{\"key\":\"2231\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2232\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens négatif\"}},\"category\":\"Sm\"},{\"key\":\"2233\",\"mappings\":{\"default\":{\"default\":\"intégrale de contour en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2234\",\"mappings\":{\"default\":{\"default\":\"par conséquent\"}},\"category\":\"Sm\"},{\"key\":\"2235\",\"mappings\":{\"default\":{\"default\":\"parce que\"}},\"category\":\"Sm\"},{\"key\":\"2236\",\"mappings\":{\"default\":{\"default\":\"rapport\"}},\"category\":\"Sm\"},{\"key\":\"2237\",\"mappings\":{\"default\":{\"default\":\"proportion\"}},\"category\":\"Sm\"},{\"key\":\"2238\",\"mappings\":{\"default\":{\"default\":\"moins pointé\"}},\"category\":\"Sm\"},{\"key\":\"2239\",\"mappings\":{\"default\":{\"default\":\"excès\"}},\"category\":\"Sm\"},{\"key\":\"223A\",\"mappings\":{\"default\":{\"default\":\"proportion géométrique\"}},\"category\":\"Sm\"},{\"key\":\"223B\",\"mappings\":{\"default\":{\"default\":\"homothétique\"}},\"category\":\"Sm\"},{\"key\":\"223C\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"223D\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"223E\",\"mappings\":{\"default\":{\"default\":\"s couché renversé\"}},\"category\":\"Sm\"},{\"key\":\"223F\",\"mappings\":{\"default\":{\"default\":\"sinusoïde\"}},\"category\":\"Sm\"},{\"key\":\"2240\",\"mappings\":{\"default\":{\"default\":\"produit couronne\"}},\"category\":\"Sm\"},{\"key\":\"2241\",\"mappings\":{\"default\":{\"default\":\"non tilde\"}},\"category\":\"Sm\"},{\"key\":\"2242\",\"mappings\":{\"default\":{\"default\":\"moins tilde\"}},\"category\":\"Sm\"},{\"key\":\"2243\",\"mappings\":{\"default\":{\"default\":\"asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2244\",\"mappings\":{\"default\":{\"default\":\"non asymptotiquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2245\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2246\",\"mappings\":{\"default\":{\"default\":\"approximativement mais non strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2247\",\"mappings\":{\"default\":{\"default\":\"ni approximativement ni strictement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2248\",\"mappings\":{\"default\":{\"default\":\"presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"2249\",\"mappings\":{\"default\":{\"default\":\"non presque égal à\"}},\"category\":\"Sm\"},{\"key\":\"224A\",\"mappings\":{\"default\":{\"default\":\"presque égal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"224B\",\"mappings\":{\"default\":{\"default\":\"triple tilde\"}},\"category\":\"Sm\"},{\"key\":\"224C\",\"mappings\":{\"default\":{\"default\":\"entièrement égal à\"}},\"category\":\"Sm\"},{\"key\":\"224D\",\"mappings\":{\"default\":{\"default\":\"équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224E\",\"mappings\":{\"default\":{\"default\":\"géométriquement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"224F\",\"mappings\":{\"default\":{\"default\":\"différence entre\"}},\"category\":\"Sm\"},{\"key\":\"2250\",\"mappings\":{\"default\":{\"default\":\"tend vers la limite\"}},\"category\":\"Sm\"},{\"key\":\"2251\",\"mappings\":{\"default\":{\"default\":\"géométriquement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2252\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou image de\"}},\"category\":\"Sm\"},{\"key\":\"2253\",\"mappings\":{\"default\":{\"default\":\"image de ou approximativement égal à\"}},\"category\":\"Sm\"},{\"key\":\"2254\",\"mappings\":{\"default\":{\"default\":\"deux points égal\"}},\"category\":\"Sm\"},{\"key\":\"2255\",\"mappings\":{\"default\":{\"default\":\"égal deux points\"}},\"category\":\"Sm\"},{\"key\":\"2256\",\"mappings\":{\"default\":{\"default\":\"rond dans égal\"}},\"category\":\"Sm\"},{\"key\":\"2257\",\"mappings\":{\"default\":{\"default\":\"égal avec rond en chef\"}},\"category\":\"Sm\"},{\"key\":\"2258\",\"mappings\":{\"default\":{\"default\":\"correspond à\"}},\"category\":\"Sm\"},{\"key\":\"2259\",\"mappings\":{\"default\":{\"default\":\"estime\"}},\"category\":\"Sm\"},{\"key\":\"225A\",\"mappings\":{\"default\":{\"default\":\"équiangulaire à\"}},\"category\":\"Sm\"},{\"key\":\"225B\",\"mappings\":{\"default\":{\"default\":\"égal avec étoile en chef\"}},\"category\":\"Sm\"},{\"key\":\"225C\",\"mappings\":{\"default\":{\"default\":\"égal delta\"}},\"category\":\"Sm\"},{\"key\":\"225D\",\"mappings\":{\"default\":{\"default\":\"égal par définition à\"}},\"category\":\"Sm\"},{\"key\":\"225E\",\"mappings\":{\"default\":{\"default\":\"mesuré par\"}},\"category\":\"Sm\"},{\"key\":\"225F\",\"mappings\":{\"default\":{\"default\":\"égalité en doute\"}},\"category\":\"Sm\"},{\"key\":\"2260\",\"mappings\":{\"default\":{\"default\":\"pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2261\",\"mappings\":{\"default\":{\"default\":\"identique à\"}},\"category\":\"Sm\"},{\"key\":\"2262\",\"mappings\":{\"default\":{\"default\":\"non identique à\"}},\"category\":\"Sm\"},{\"key\":\"2263\",\"mappings\":{\"default\":{\"default\":\"strictement équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2264\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2265\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2266\",\"mappings\":{\"default\":{\"default\":\"plus petit que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2267\",\"mappings\":{\"default\":{\"default\":\"plus grand que par dessus égal à\"}},\"category\":\"Sm\"},{\"key\":\"2268\",\"mappings\":{\"default\":{\"default\":\"plus petit mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2269\",\"mappings\":{\"default\":{\"default\":\"plus grand mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"226A\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226B\",\"mappings\":{\"default\":{\"default\":\"beaucoup plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"226C\",\"mappings\":{\"default\":{\"default\":\"entre\"}},\"category\":\"Sm\"},{\"key\":\"226D\",\"mappings\":{\"default\":{\"default\":\"non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"226E\",\"mappings\":{\"default\":{\"default\":\"pas plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"226F\",\"mappings\":{\"default\":{\"default\":\"pas plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2270\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2271\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2272\",\"mappings\":{\"default\":{\"default\":\"plus petit ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2273\",\"mappings\":{\"default\":{\"default\":\"plus grand ou équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2274\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2275\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2276\",\"mappings\":{\"default\":{\"default\":\"plus petit ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2277\",\"mappings\":{\"default\":{\"default\":\"plus grand ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"2278\",\"mappings\":{\"default\":{\"default\":\"ni plus petit ni plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"2279\",\"mappings\":{\"default\":{\"default\":\"ni plus grand ni plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"227A\",\"mappings\":{\"default\":{\"default\":\"précède\"}},\"category\":\"Sm\"},{\"key\":\"227B\",\"mappings\":{\"default\":{\"default\":\"suit\"}},\"category\":\"Sm\"},{\"key\":\"227C\",\"mappings\":{\"default\":{\"default\":\"précède ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227D\",\"mappings\":{\"default\":{\"default\":\"suit ou est égal à\"}},\"category\":\"Sm\"},{\"key\":\"227E\",\"mappings\":{\"default\":{\"default\":\"précède ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"227F\",\"mappings\":{\"default\":{\"default\":\"suit ou est équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"2280\",\"mappings\":{\"default\":{\"default\":\"ne précède pas\"}},\"category\":\"Sm\"},{\"key\":\"2281\",\"mappings\":{\"default\":{\"default\":\"ne suit pas\"}},\"category\":\"Sm\"},{\"key\":\"2282\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2283\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2284\",\"mappings\":{\"default\":{\"default\":\"pas un sous ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2285\",\"mappings\":{\"default\":{\"default\":\"pas un sur ensemble de\"}},\"category\":\"Sm\"},{\"key\":\"2286\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2287\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2288\",\"mappings\":{\"default\":{\"default\":\"ni un sous ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"2289\",\"mappings\":{\"default\":{\"default\":\"ni un sur ensemble ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"228A\",\"mappings\":{\"default\":{\"default\":\"sous ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228B\",\"mappings\":{\"default\":{\"default\":\"sur ensemble mais pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"228C\",\"mappings\":{\"default\":{\"default\":\"multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228D\",\"mappings\":{\"default\":{\"default\":\"multiplication de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228E\",\"mappings\":{\"default\":{\"default\":\"union de multiensemble\"}},\"category\":\"Sm\"},{\"key\":\"228F\",\"mappings\":{\"default\":{\"default\":\"image carrée de\"}},\"category\":\"Sm\"},{\"key\":\"2290\",\"mappings\":{\"default\":{\"default\":\"original carré de\"}},\"category\":\"Sm\"},{\"key\":\"2291\",\"mappings\":{\"default\":{\"default\":\"image carrée ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2292\",\"mappings\":{\"default\":{\"default\":\"original carré ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2293\",\"mappings\":{\"default\":{\"default\":\"chapeau carré\"}},\"category\":\"Sm\"},{\"key\":\"2294\",\"mappings\":{\"default\":{\"default\":\"coupe carrée\"}},\"category\":\"Sm\"},{\"key\":\"2295\",\"mappings\":{\"default\":{\"default\":\"plus cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2296\",\"mappings\":{\"default\":{\"default\":\"moins cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2297\",\"mappings\":{\"default\":{\"default\":\"multiplié par cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2298\",\"mappings\":{\"default\":{\"default\":\"barre oblique de division cerclée\"}},\"category\":\"Sm\"},{\"key\":\"2299\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229A\",\"mappings\":{\"default\":{\"default\":\"opérateur rond cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229B\",\"mappings\":{\"default\":{\"default\":\"opérateur astérisque cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229C\",\"mappings\":{\"default\":{\"default\":\"égal cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229D\",\"mappings\":{\"default\":{\"default\":\"tiret cerclé\"}},\"category\":\"Sm\"},{\"key\":\"229E\",\"mappings\":{\"default\":{\"default\":\"plus encadré\"}},\"category\":\"Sm\"},{\"key\":\"229F\",\"mappings\":{\"default\":{\"default\":\"moins encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A0\",\"mappings\":{\"default\":{\"default\":\"multiplié par encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A1\",\"mappings\":{\"default\":{\"default\":\"opérateur point encadré\"}},\"category\":\"Sm\"},{\"key\":\"22A2\",\"mappings\":{\"default\":{\"default\":\"taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"22A3\",\"mappings\":{\"default\":{\"default\":\"taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"22A4\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"22A5\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"22A6\",\"mappings\":{\"default\":{\"default\":\"assertion\"}},\"category\":\"Sm\"},{\"key\":\"22A7\",\"mappings\":{\"default\":{\"default\":\"modélise\"}},\"category\":\"Sm\"},{\"key\":\"22A8\",\"mappings\":{\"default\":{\"default\":\"vrai\"}},\"category\":\"Sm\"},{\"key\":\"22A9\",\"mappings\":{\"default\":{\"default\":\"oblige\"}},\"category\":\"Sm\"},{\"key\":\"22AA\",\"mappings\":{\"default\":{\"default\":\"barre verticale triple avec tourniquet à droite\"}},\"category\":\"Sm\"},{\"key\":\"22AB\",\"mappings\":{\"default\":{\"default\":\"barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22AC\",\"mappings\":{\"default\":{\"default\":\"ne prouve pas\"}},\"category\":\"Sm\"},{\"key\":\"22AD\",\"mappings\":{\"default\":{\"default\":\"pas vrai\"}},\"category\":\"Sm\"},{\"key\":\"22AE\",\"mappings\":{\"default\":{\"default\":\"n'oblige pas\"}},\"category\":\"Sm\"},{\"key\":\"22AF\",\"mappings\":{\"default\":{\"default\":\"non barre verticale double avec tourniquet à droite double\"}},\"category\":\"Sm\"},{\"key\":\"22B0\",\"mappings\":{\"default\":{\"default\":\"précède sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B1\",\"mappings\":{\"default\":{\"default\":\"suit sous relation\"}},\"category\":\"Sm\"},{\"key\":\"22B2\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22B3\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22B4\",\"mappings\":{\"default\":{\"default\":\"sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B5\",\"mappings\":{\"default\":{\"default\":\"contient comme sous groupe normal ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"22B6\",\"mappings\":{\"default\":{\"default\":\"original de\"}},\"category\":\"Sm\"},{\"key\":\"22B7\",\"mappings\":{\"default\":{\"default\":\"image de\"}},\"category\":\"Sm\"},{\"key\":\"22B8\",\"mappings\":{\"default\":{\"default\":\"multijection\"}},\"category\":\"Sm\"},{\"key\":\"22B9\",\"mappings\":{\"default\":{\"default\":\"matrice hermitienne conjuguée\"}},\"category\":\"Sm\"},{\"key\":\"22BA\",\"mappings\":{\"default\":{\"default\":\"intercale\"}},\"category\":\"Sm\"},{\"key\":\"22BB\",\"mappings\":{\"default\":{\"default\":\"ou exclusif\"}},\"category\":\"Sm\"},{\"key\":\"22BC\",\"mappings\":{\"default\":{\"default\":\"non et\"}},\"category\":\"Sm\"},{\"key\":\"22BD\",\"mappings\":{\"default\":{\"default\":\"non ou\"}},\"category\":\"Sm\"},{\"key\":\"22BF\",\"mappings\":{\"default\":{\"default\":\"triangle rectangle\"}},\"category\":\"Sm\"},{\"key\":\"22C0\",\"mappings\":{\"default\":{\"default\":\"et logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C1\",\"mappings\":{\"default\":{\"default\":\"ou logique de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C2\",\"mappings\":{\"default\":{\"default\":\"intersection de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C3\",\"mappings\":{\"default\":{\"default\":\"réunion de la famille\"}},\"category\":\"Sm\"},{\"key\":\"22C4\",\"mappings\":{\"default\":{\"default\":\"opérateur losange\"}},\"category\":\"Sm\"},{\"key\":\"22C5\",\"mappings\":{\"default\":{\"default\":\"opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"22C6\",\"mappings\":{\"default\":{\"default\":\"opérateur étoile\"}},\"category\":\"Sm\"},{\"key\":\"22C7\",\"mappings\":{\"default\":{\"default\":\"divisé multiplié\"}},\"category\":\"Sm\"},{\"key\":\"22C8\",\"mappings\":{\"default\":{\"default\":\"nœud papillon\"}},\"category\":\"Sm\"},{\"key\":\"22C9\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CA\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite de facteur normal\"}},\"category\":\"Sm\"},{\"key\":\"22CB\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à gauche\"}},\"category\":\"Sm\"},{\"key\":\"22CC\",\"mappings\":{\"default\":{\"default\":\"produit semi direct à droite\"}},\"category\":\"Sm\"},{\"key\":\"22CD\",\"mappings\":{\"default\":{\"default\":\"moins tilde renversé\"}},\"category\":\"Sm\"},{\"key\":\"22CE\",\"mappings\":{\"default\":{\"default\":\"ou logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22CF\",\"mappings\":{\"default\":{\"default\":\"et logique recourbé\"}},\"category\":\"Sm\"},{\"key\":\"22D0\",\"mappings\":{\"default\":{\"default\":\"sous ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D1\",\"mappings\":{\"default\":{\"default\":\"sur ensemble double\"}},\"category\":\"Sm\"},{\"key\":\"22D2\",\"mappings\":{\"default\":{\"default\":\"intersection double\"}},\"category\":\"Sm\"},{\"key\":\"22D3\",\"mappings\":{\"default\":{\"default\":\"union double\"}},\"category\":\"Sm\"},{\"key\":\"22D4\",\"mappings\":{\"default\":{\"default\":\"fourche\"}},\"category\":\"Sm\"},{\"key\":\"22D5\",\"mappings\":{\"default\":{\"default\":\"égal et parallèle à\"}},\"category\":\"Sm\"},{\"key\":\"22D6\",\"mappings\":{\"default\":{\"default\":\"plus petit que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D7\",\"mappings\":{\"default\":{\"default\":\"plus grand que pointé\"}},\"category\":\"Sm\"},{\"key\":\"22D8\",\"mappings\":{\"default\":{\"default\":\"considérablement plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22D9\",\"mappings\":{\"default\":{\"default\":\"considérablement plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DA\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal ou plus grand que\"}},\"category\":\"Sm\"},{\"key\":\"22DB\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DC\",\"mappings\":{\"default\":{\"default\":\"égal ou plus petit que\"}},\"category\":\"Sm\"},{\"key\":\"22DD\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"22DE\",\"mappings\":{\"default\":{\"default\":\"égal ou précède\"}},\"category\":\"Sm\"},{\"key\":\"22DF\",\"mappings\":{\"default\":{\"default\":\"égal ou suit\"}},\"category\":\"Sm\"},{\"key\":\"22E0\",\"mappings\":{\"default\":{\"default\":\"ni précédant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E1\",\"mappings\":{\"default\":{\"default\":\"ni suivant ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E2\",\"mappings\":{\"default\":{\"default\":\"ni image carrée ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E3\",\"mappings\":{\"default\":{\"default\":\"ni original carré ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22E4\",\"mappings\":{\"default\":{\"default\":\"image carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E5\",\"mappings\":{\"default\":{\"default\":\"original carré ou différent de\"}},\"category\":\"Sm\"},{\"key\":\"22E6\",\"mappings\":{\"default\":{\"default\":\"plus petit mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E7\",\"mappings\":{\"default\":{\"default\":\"plus grand mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E8\",\"mappings\":{\"default\":{\"default\":\"précédant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22E9\",\"mappings\":{\"default\":{\"default\":\"suivant mais non équivalent à\"}},\"category\":\"Sm\"},{\"key\":\"22EA\",\"mappings\":{\"default\":{\"default\":\"pas un sous groupe normal de\"}},\"category\":\"Sm\"},{\"key\":\"22EB\",\"mappings\":{\"default\":{\"default\":\"ne contient pas comme sous groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EC\",\"mappings\":{\"default\":{\"default\":\"ni sous groupe normal ni égal à\"}},\"category\":\"Sm\"},{\"key\":\"22ED\",\"mappings\":{\"default\":{\"default\":\"ni égal ni contenant comme sous  groupe normal\"}},\"category\":\"Sm\"},{\"key\":\"22EE\",\"mappings\":{\"default\":{\"default\":\"trois points suspendus\"}},\"category\":\"Sm\"},{\"key\":\"22EF\",\"mappings\":{\"default\":{\"default\":\"trois points médians\"}},\"category\":\"Sm\"},{\"key\":\"22F0\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin haut à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F1\",\"mappings\":{\"default\":{\"default\":\"trois points diagonaux vers le coin bas à droite\"}},\"category\":\"Sm\"},{\"key\":\"22F2\",\"mappings\":{\"default\":{\"default\":\"appartient à avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F3\",\"mappings\":{\"default\":{\"default\":\"appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F4\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22F5\",\"mappings\":{\"default\":{\"default\":\"appartient à avec point en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F6\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F7\",\"mappings\":{\"default\":{\"default\":\"petit appartient à avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22F8\",\"mappings\":{\"default\":{\"default\":\"appartient à avec trait souscrit\"}},\"category\":\"Sm\"},{\"key\":\"22F9\",\"mappings\":{\"default\":{\"default\":\"appartient à avec deux traits horizontaux\"}},\"category\":\"Sm\"},{\"key\":\"22FA\",\"mappings\":{\"default\":{\"default\":\"contient avec long trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FB\",\"mappings\":{\"default\":{\"default\":\"contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FC\",\"mappings\":{\"default\":{\"default\":\"petit contient avec barre verticale au bout du trait horizontal\"}},\"category\":\"Sm\"},{\"key\":\"22FD\",\"mappings\":{\"default\":{\"default\":\"contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FE\",\"mappings\":{\"default\":{\"default\":\"petit contient avec trait en chef\"}},\"category\":\"Sm\"},{\"key\":\"22FF\",\"mappings\":{\"default\":{\"default\":\"appartient à un sac en notation z\"}},\"category\":\"Sm\"},{\"key\":\"2300\",\"mappings\":{\"default\":{\"default\":\"diamètre\"}},\"category\":\"So\"},{\"key\":\"2302\",\"mappings\":{\"default\":{\"default\":\"maison\"}},\"category\":\"So\"},{\"key\":\"2305\",\"mappings\":{\"default\":{\"default\":\"projective\"}},\"category\":\"So\"},{\"key\":\"2306\",\"mappings\":{\"default\":{\"default\":\"perspective\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2307\",\"mappings\":{\"default\":{\"default\":\"ligne ondulée\"}}},{\"key\":\"2310\",\"mappings\":{\"default\":{\"default\":\"négation réfléchi\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2311\",\"mappings\":{\"default\":{\"default\":\"pastille carrée\"}}},{\"key\":\"2312\",\"mappings\":{\"default\":{\"default\":\"arc\"}},\"category\":\"So\"},{\"key\":\"2313\",\"mappings\":{\"default\":{\"default\":\"segment\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2314\",\"mappings\":{\"default\":{\"default\":\"secteur\"}}},{\"category\":\"So\",\"key\":\"2795\",\"mappings\":{\"default\":{\"default\":\"plus gras\"}}},{\"category\":\"So\",\"key\":\"2796\",\"mappings\":{\"default\":{\"default\":\"moins gras\"}}},{\"category\":\"So\",\"key\":\"2797\",\"mappings\":{\"default\":{\"default\":\"division gras\"}}},{\"category\":\"So\",\"key\":\"27B0\",\"mappings\":{\"default\":{\"default\":\"boucle recourbée\"}}},{\"category\":\"So\",\"key\":\"27BF\",\"mappings\":{\"default\":{\"default\":\"double boucle recourbée\"}}},{\"key\":\"27C1\",\"mappings\":{\"default\":{\"default\":\"petit triangle blanc inscrit dans triangle blanc\"}},\"category\":\"Sm\"},{\"key\":\"27C2\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à\"}},\"category\":\"Sm\"},{\"key\":\"27C3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble ouvert\"}},\"category\":\"Sm\"},{\"key\":\"27C7\",\"mappings\":{\"default\":{\"default\":\"ou avec point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"27C8\",\"mappings\":{\"default\":{\"default\":\"sous ensemble précédé d'une barre oblique inversée\"}},\"category\":\"Sm\"},{\"key\":\"27C9\",\"mappings\":{\"default\":{\"default\":\"sur ensemble suivi d'une barre oblique\"}},\"category\":\"Sm\"},{\"key\":\"27CA\",\"mappings\":{\"default\":{\"default\":\"barre verticale À une traverse\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CB\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique ascendante\"}}},{\"key\":\"27CC\",\"mappings\":{\"default\":{\"default\":\"grande division\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"27CD\",\"mappings\":{\"default\":{\"default\":\"diagonale mathématique descendante\"}}},{\"category\":\"Sm\",\"key\":\"27CE\",\"mappings\":{\"default\":{\"default\":\"et logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27CF\",\"mappings\":{\"default\":{\"default\":\"ou logique encadré\"}}},{\"category\":\"Sm\",\"key\":\"27D0\",\"mappings\":{\"default\":{\"default\":\"losange blanc à point centré\"}}},{\"key\":\"27D1\",\"mappings\":{\"default\":{\"default\":\"et pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D2\",\"mappings\":{\"default\":{\"default\":\"appartient À ouvert vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D3\",\"mappings\":{\"default\":{\"default\":\"coin inférieur droit pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D4\",\"mappings\":{\"default\":{\"default\":\"coin supérieur gauche pointé\"}},\"category\":\"Sm\"},{\"key\":\"27D5\",\"mappings\":{\"default\":{\"default\":\"jointure externe gauche\"}},\"category\":\"Sm\"},{\"key\":\"27D6\",\"mappings\":{\"default\":{\"default\":\"jointure externe droite\"}},\"category\":\"Sm\"},{\"key\":\"27D7\",\"mappings\":{\"default\":{\"default\":\"jointure externe complète\"}},\"category\":\"Sm\"},{\"key\":\"27D8\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"27D9\",\"mappings\":{\"default\":{\"default\":\"grand taquet vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"27DA\",\"mappings\":{\"default\":{\"default\":\"double tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DB\",\"mappings\":{\"default\":{\"default\":\"tourniquet bilatéral\"}},\"category\":\"Sm\"},{\"key\":\"27DC\",\"mappings\":{\"default\":{\"default\":\"multijection gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DD\",\"mappings\":{\"default\":{\"default\":\"long taquet droit\"}},\"category\":\"Sm\"},{\"key\":\"27DE\",\"mappings\":{\"default\":{\"default\":\"long taquet gauche\"}},\"category\":\"Sm\"},{\"key\":\"27DF\",\"mappings\":{\"default\":{\"default\":\"taquet vers le haut surmonté d'un cercle\"}},\"category\":\"Sm\"},{\"key\":\"27E0\",\"mappings\":{\"default\":{\"default\":\"losange coupé\"}},\"category\":\"Sm\"},{\"key\":\"27E1\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc\"}},\"category\":\"Sm\"},{\"key\":\"27E2\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E3\",\"mappings\":{\"default\":{\"default\":\"losange concave blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"key\":\"27E4\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à gauche\"}},\"category\":\"Sm\"},{\"key\":\"27E5\",\"mappings\":{\"default\":{\"default\":\"carré blanc avec trait à droite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"292B\",\"mappings\":{\"default\":{\"default\":\"diagonale montante sur diagonale descendante\"}}},{\"category\":\"Sm\",\"key\":\"292C\",\"mappings\":{\"default\":{\"default\":\"diagonale descendante sur diagonale montante\"}}},{\"category\":\"Sm\",\"key\":\"2980\",\"mappings\":{\"default\":{\"default\":\"délimiteur triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2981\",\"mappings\":{\"default\":{\"default\":\"boulet\"}}},{\"category\":\"Sm\",\"key\":\"2982\",\"mappings\":{\"default\":{\"default\":\"deux points de la notation z\"}}},{\"category\":\"Sm\",\"key\":\"2999\",\"mappings\":{\"default\":{\"default\":\"clôture pointillée\"}}},{\"key\":\"299A\",\"mappings\":{\"default\":{\"default\":\"ligne verticale en zigzag\"}},\"category\":\"Sm\"},{\"key\":\"29B0\",\"mappings\":{\"default\":{\"default\":\"ensemble vide réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"29B1\",\"mappings\":{\"default\":{\"default\":\"ensemble vide barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B2\",\"mappings\":{\"default\":{\"default\":\"ensemble vide petit cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"29B5\",\"mappings\":{\"default\":{\"default\":\"cercle à barre horizontale\"}},\"category\":\"Sm\"},{\"key\":\"29B6\",\"mappings\":{\"default\":{\"default\":\"barre verticale cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29B7\",\"mappings\":{\"default\":{\"default\":\"parallèles cerclées\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29B8\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée cerclée\"}}},{\"key\":\"29B9\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire cerclé\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29BA\",\"mappings\":{\"default\":{\"default\":\"cercle divisé par une barre horizontale et une barre verticale dans la moitié supérieure\"}}},{\"key\":\"29BB\",\"mappings\":{\"default\":{\"default\":\"cercle superposé d'un x\"}},\"category\":\"Sm\"},{\"key\":\"29BC\",\"mappings\":{\"default\":{\"default\":\"division pivoté en sens antihoraire cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29BE\",\"mappings\":{\"default\":{\"default\":\"puce blanche cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29BF\",\"mappings\":{\"default\":{\"default\":\"puce cerclée\"}},\"category\":\"Sm\"},{\"key\":\"29C0\",\"mappings\":{\"default\":{\"default\":\"inférieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C1\",\"mappings\":{\"default\":{\"default\":\"supérieur à cerclé\"}},\"category\":\"Sm\"},{\"key\":\"29C2\",\"mappings\":{\"default\":{\"default\":\"cercle avec petit cercle à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C3\",\"mappings\":{\"default\":{\"default\":\"cercle avec deux petits traits horizontaux à droite\"}},\"category\":\"Sm\"},{\"key\":\"29C4\",\"mappings\":{\"default\":{\"default\":\"oblique encadrée\"}},\"category\":\"Sm\"},{\"key\":\"29C5\",\"mappings\":{\"default\":{\"default\":\"oblique inversée encadrée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29C6\",\"mappings\":{\"default\":{\"default\":\"astérisque encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C7\",\"mappings\":{\"default\":{\"default\":\"petite cercle encadré\"}}},{\"category\":\"Sm\",\"key\":\"29C8\",\"mappings\":{\"default\":{\"default\":\"carré encadré\"}}},{\"key\":\"29C9\",\"mappings\":{\"default\":{\"default\":\"carrés se chevauchant\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29CA\",\"mappings\":{\"default\":{\"default\":\"triangle pointé en chef\"}}},{\"category\":\"Sm\",\"key\":\"29CB\",\"mappings\":{\"default\":{\"default\":\"triangle à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"29CC\",\"mappings\":{\"default\":{\"default\":\"s inscrit dans triangle\"}}},{\"key\":\"29CD\",\"mappings\":{\"default\":{\"default\":\"triangle à empattements inférieurs\"}},\"category\":\"Sm\"},{\"key\":\"29CE\",\"mappings\":{\"default\":{\"default\":\"triangle droit par dessus triangle gauche\"}},\"category\":\"Sm\"},{\"key\":\"29CF\",\"mappings\":{\"default\":{\"default\":\"triangle gauche à gauche d'une barre verticale\"}},\"category\":\"Sm\"},{\"key\":\"29D0\",\"mappings\":{\"default\":{\"default\":\"triangle droit à droite d'une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29D1\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29D2\",\"mappings\":{\"default\":{\"default\":\"nœud papillon à aile droite noire\"}}},{\"category\":\"Sm\",\"key\":\"29D3\",\"mappings\":{\"default\":{\"default\":\"nœud papillon noir\"}}},{\"category\":\"Sm\",\"key\":\"29D4\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié gauche noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D5\",\"mappings\":{\"default\":{\"default\":\"multiplication à moitié droite noircie\"}}},{\"category\":\"Sm\",\"key\":\"29D6\",\"mappings\":{\"default\":{\"default\":\"sablier blanc\"}}},{\"category\":\"Sm\",\"key\":\"29D7\",\"mappings\":{\"default\":{\"default\":\"sablier noir\"}}},{\"key\":\"29DC\",\"mappings\":{\"default\":{\"default\":\"infini incomplet\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DD\",\"mappings\":{\"default\":{\"default\":\"lorgnon\"}}},{\"key\":\"29DE\",\"mappings\":{\"default\":{\"default\":\"infini nié par une barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29DF\",\"mappings\":{\"default\":{\"default\":\"multijection à deux têtes\"}}},{\"category\":\"Sm\",\"key\":\"29E0\",\"mappings\":{\"default\":{\"default\":\"carré ombré\"}}},{\"category\":\"Sm\",\"key\":\"29E1\",\"mappings\":{\"default\":{\"default\":\"augmente avec\"}}},{\"category\":\"Sm\",\"key\":\"29E2\",\"mappings\":{\"default\":{\"default\":\"produit de permutation\"}}},{\"key\":\"29E3\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"key\":\"29E4\",\"mappings\":{\"default\":{\"default\":\"égale à et parallèle à incliné surmontés d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"29E5\",\"mappings\":{\"default\":{\"default\":\"identique à et parallèle à incliné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29E6\",\"mappings\":{\"default\":{\"default\":\"gleich stark\"}}},{\"category\":\"Sm\",\"key\":\"29E7\",\"mappings\":{\"default\":{\"default\":\"thermodynamique\"}}},{\"category\":\"Sm\",\"key\":\"29E8\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié gauche noire\"}}},{\"category\":\"Sm\",\"key\":\"29E9\",\"mappings\":{\"default\":{\"default\":\"triangle pointe vers le bas à moitié droite noire\"}}},{\"key\":\"29EB\",\"mappings\":{\"default\":{\"default\":\"losange fuselé noir\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29EE\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré blanc\"}}},{\"category\":\"Sm\",\"key\":\"29EF\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à carré noir\"}}},{\"category\":\"Sm\",\"key\":\"29F0\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F1\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à losange noir\"}}},{\"category\":\"Sm\",\"key\":\"29F2\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle blanc\"}}},{\"category\":\"Sm\",\"key\":\"29F3\",\"mappings\":{\"default\":{\"default\":\"barre d'erreur à cercle noir\"}}},{\"key\":\"29F4\",\"mappings\":{\"default\":{\"default\":\"règle différée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F5\",\"mappings\":{\"default\":{\"default\":\"opérateur barre oblique inversée\"}}},{\"key\":\"29F6\",\"mappings\":{\"default\":{\"default\":\"barre oblique avec barre en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"29F7\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée à traverse horizontale\"}}},{\"category\":\"Sm\",\"key\":\"29F8\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique\"}}},{\"category\":\"Sm\",\"key\":\"29F9\",\"mappings\":{\"default\":{\"default\":\"grande barre oblique inversée\"}}},{\"category\":\"Sm\",\"key\":\"29FA\",\"mappings\":{\"default\":{\"default\":\"double plus\"}}},{\"category\":\"Sm\",\"key\":\"29FB\",\"mappings\":{\"default\":{\"default\":\"triple plus\"}}},{\"category\":\"Sm\",\"key\":\"29FE\",\"mappings\":{\"default\":{\"default\":\"tiny\"}}},{\"category\":\"Sm\",\"key\":\"29FF\",\"mappings\":{\"default\":{\"default\":\"miny\"}}},{\"category\":\"Sm\",\"key\":\"2A00\",\"mappings\":{\"default\":{\"default\":\"opérateur point cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A01\",\"mappings\":{\"default\":{\"default\":\"opérateur plus cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A02\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par cerclé n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A03\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire pointé\"}}},{\"category\":\"Sm\",\"key\":\"2A04\",\"mappings\":{\"default\":{\"default\":\"opérateur union n aire avec plus\"}}},{\"category\":\"Sm\",\"key\":\"2A05\",\"mappings\":{\"default\":{\"default\":\"opérateur intersection carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A06\",\"mappings\":{\"default\":{\"default\":\"opérateur union carré n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A07\",\"mappings\":{\"default\":{\"default\":\"opérateur deux et logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A08\",\"mappings\":{\"default\":{\"default\":\"opérateur deux ou logiques\"}}},{\"category\":\"Sm\",\"key\":\"2A09\",\"mappings\":{\"default\":{\"default\":\"opérateur multiplié par n aire\"}}},{\"category\":\"Sm\",\"key\":\"2A0A\",\"mappings\":{\"default\":{\"default\":\"sommation modulo deux\"}}},{\"category\":\"Sm\",\"key\":\"2A0B\",\"mappings\":{\"default\":{\"default\":\"sommation avec intégrale\"}}},{\"key\":\"2A0C\",\"mappings\":{\"default\":{\"default\":\"intégrale quadruple\"}},\"category\":\"Sm\"},{\"key\":\"2A0D\",\"mappings\":{\"default\":{\"default\":\"intégrale à partie finie\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A0E\",\"mappings\":{\"default\":{\"default\":\"intégrale à deux barres horizontales\"}}},{\"category\":\"Sm\",\"key\":\"2A0F\",\"mappings\":{\"default\":{\"default\":\"moyenne d'intégrale à barre oblique inversée\"}}},{\"key\":\"2A10\",\"mappings\":{\"default\":{\"default\":\"fonction de circulation\"}},\"category\":\"Sm\"},{\"key\":\"2A11\",\"mappings\":{\"default\":{\"default\":\"intégrale en sens positif\"}},\"category\":\"Sm\"},{\"key\":\"2A12\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin rectangulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A13\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne à chemin semi circulaire autour du pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A14\",\"mappings\":{\"default\":{\"default\":\"intégrale de ligne évitant le pôle\"}},\"category\":\"Sm\"},{\"key\":\"2A15\",\"mappings\":{\"default\":{\"default\":\"intégrale autour d'un opérateur point\"}},\"category\":\"Sm\"},{\"key\":\"2A16\",\"mappings\":{\"default\":{\"default\":\"intégrale quaternion\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A18\",\"mappings\":{\"default\":{\"default\":\"intégrale au signe multiplié par\"}}},{\"category\":\"Sm\",\"key\":\"2A19\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe intersection\"}}},{\"category\":\"Sm\",\"key\":\"2A1A\",\"mappings\":{\"default\":{\"default\":\"intégrale à signe union\"}}},{\"category\":\"Sm\",\"key\":\"2A1B\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A1C\",\"mappings\":{\"default\":{\"default\":\"intégrale à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A1D\",\"mappings\":{\"default\":{\"default\":\"jointure\"}}},{\"category\":\"Sm\",\"key\":\"2A1E\",\"mappings\":{\"default\":{\"default\":\"gros opérateur triangle gauche\"}}},{\"category\":\"Sm\",\"key\":\"2A1F\",\"mappings\":{\"default\":{\"default\":\"composition de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A20\",\"mappings\":{\"default\":{\"default\":\"tubage de schémas en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A21\",\"mappings\":{\"default\":{\"default\":\"projection de schémas en notation z\"}}},{\"key\":\"2A22\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un petit cercle\"}},\"category\":\"Sm\"},{\"key\":\"2A23\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A24\",\"mappings\":{\"default\":{\"default\":\"plus surmonté d'un tilde\"}},\"category\":\"Sm\"},{\"key\":\"2A25\",\"mappings\":{\"default\":{\"default\":\"plus à point souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A26\",\"mappings\":{\"default\":{\"default\":\"plus à tilde souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A27\",\"mappings\":{\"default\":{\"default\":\"plus à chiffre deux souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A28\",\"mappings\":{\"default\":{\"default\":\"plus à triangle noir\"}}},{\"key\":\"2A29\",\"mappings\":{\"default\":{\"default\":\"moins surmonté d'une virgule\"}},\"category\":\"Sm\"},{\"key\":\"2A2A\",\"mappings\":{\"default\":{\"default\":\"moins à point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A2B\",\"mappings\":{\"default\":{\"default\":\"moins à points descendants\"}}},{\"category\":\"Sm\",\"key\":\"2A2C\",\"mappings\":{\"default\":{\"default\":\"moins à points ascendants\"}}},{\"key\":\"2A2D\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A2E\",\"mappings\":{\"default\":{\"default\":\"plus dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A2F\",\"mappings\":{\"default\":{\"default\":\"produit vectoriel\"}},\"category\":\"Sm\"},{\"key\":\"2A30\",\"mappings\":{\"default\":{\"default\":\"multiplication à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A31\",\"mappings\":{\"default\":{\"default\":\"multiplication à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A32\",\"mappings\":{\"default\":{\"default\":\"produit semi direct fermé en bas\"}}},{\"key\":\"2A33\",\"mappings\":{\"default\":{\"default\":\"produit fusionné\"}},\"category\":\"Sm\"},{\"key\":\"2A34\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle gauche\"}},\"category\":\"Sm\"},{\"key\":\"2A35\",\"mappings\":{\"default\":{\"default\":\"multiplication dans demi cercle droit\"}},\"category\":\"Sm\"},{\"key\":\"2A36\",\"mappings\":{\"default\":{\"default\":\"multiplication cerclé circonflexe\"}},\"category\":\"Sm\"},{\"key\":\"2A37\",\"mappings\":{\"default\":{\"default\":\"multiplication doublement cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A38\",\"mappings\":{\"default\":{\"default\":\"division cerclé\"}},\"category\":\"Sm\"},{\"key\":\"2A39\",\"mappings\":{\"default\":{\"default\":\"plus dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3A\",\"mappings\":{\"default\":{\"default\":\"moins dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3B\",\"mappings\":{\"default\":{\"default\":\"multiplication dans triangle\"}},\"category\":\"Sm\"},{\"key\":\"2A3C\",\"mappings\":{\"default\":{\"default\":\"produit interieur\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A3D\",\"mappings\":{\"default\":{\"default\":\"produit intérieur à droite\"}}},{\"category\":\"Sm\",\"key\":\"2A3E\",\"mappings\":{\"default\":{\"default\":\"composition relationnelle en notation z\"}}},{\"key\":\"2A3F\",\"mappings\":{\"default\":{\"default\":\"amalgamation ou coproduit\"}},\"category\":\"Sm\"},{\"key\":\"2A40\",\"mappings\":{\"default\":{\"default\":\"intersection pointée\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A41\",\"mappings\":{\"default\":{\"default\":\"union à signe moins\"}}},{\"key\":\"2A42\",\"mappings\":{\"default\":{\"default\":\"union à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A43\",\"mappings\":{\"default\":{\"default\":\"intersection à barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A44\",\"mappings\":{\"default\":{\"default\":\"intersection avec et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A45\",\"mappings\":{\"default\":{\"default\":\"union avec ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A46\",\"mappings\":{\"default\":{\"default\":\"union par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A47\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A48\",\"mappings\":{\"default\":{\"default\":\"union par dessus bar par dessus intersection\"}},\"category\":\"Sm\"},{\"key\":\"2A49\",\"mappings\":{\"default\":{\"default\":\"intersection par dessus trait par dessus union\"}},\"category\":\"Sm\"},{\"key\":\"2A4A\",\"mappings\":{\"default\":{\"default\":\"deux unions soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4B\",\"mappings\":{\"default\":{\"default\":\"deux intersections soudées côte à côte\"}},\"category\":\"Sm\"},{\"key\":\"2A4C\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements\"}},\"category\":\"Sm\"},{\"key\":\"2A4D\",\"mappings\":{\"default\":{\"default\":\"intersection fermée à empattements\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A4E\",\"mappings\":{\"default\":{\"default\":\"deux intersections carrées emboîtées\"}}},{\"category\":\"Sm\",\"key\":\"2A4F\",\"mappings\":{\"default\":{\"default\":\"deux unions carrées emboîtées\"}}},{\"key\":\"2A50\",\"mappings\":{\"default\":{\"default\":\"union fermée à empattements et produit fusionné\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A51\",\"mappings\":{\"default\":{\"default\":\"et logique à point en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A52\",\"mappings\":{\"default\":{\"default\":\"ou logique à point en chef\"}}},{\"key\":\"2A53\",\"mappings\":{\"default\":{\"default\":\"double et logique\"}},\"category\":\"Sm\"},{\"key\":\"2A54\",\"mappings\":{\"default\":{\"default\":\"double ou logique\"}},\"category\":\"Sm\"},{\"key\":\"2A55\",\"mappings\":{\"default\":{\"default\":\"deux et logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A56\",\"mappings\":{\"default\":{\"default\":\"deux ou logiques entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2A57\",\"mappings\":{\"default\":{\"default\":\"grand ou pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A58\",\"mappings\":{\"default\":{\"default\":\"grand et pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A59\",\"mappings\":{\"default\":{\"default\":\"et et ou logiques entrecroisés\"}}},{\"key\":\"2A5A\",\"mappings\":{\"default\":{\"default\":\"et logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5B\",\"mappings\":{\"default\":{\"default\":\"ou logique à hampe médiane\"}},\"category\":\"Sm\"},{\"key\":\"2A5C\",\"mappings\":{\"default\":{\"default\":\"et logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"key\":\"2A5D\",\"mappings\":{\"default\":{\"default\":\"ou logique à tiret horizontal\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A5E\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres en chef\"}}},{\"key\":\"2A5F\",\"mappings\":{\"default\":{\"default\":\"et logique à barre souscrite\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A60\",\"mappings\":{\"default\":{\"default\":\"et logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A61\",\"mappings\":{\"default\":{\"default\":\"petit v à barre souscrite\"}}},{\"category\":\"Sm\",\"key\":\"2A62\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres en chef\"}}},{\"category\":\"Sm\",\"key\":\"2A63\",\"mappings\":{\"default\":{\"default\":\"ou logique à deux barres souscrites\"}}},{\"category\":\"Sm\",\"key\":\"2A64\",\"mappings\":{\"default\":{\"default\":\"antirestriction de domaine en notation z\"}}},{\"category\":\"Sm\",\"key\":\"2A65\",\"mappings\":{\"default\":{\"default\":\"antirestriction de codomaine en notation z\"}}},{\"key\":\"2A66\",\"mappings\":{\"default\":{\"default\":\"égal point souscrit\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A67\",\"mappings\":{\"default\":{\"default\":\"identique à surmonté d'un point\"}}},{\"category\":\"Sm\",\"key\":\"2A68\",\"mappings\":{\"default\":{\"default\":\"deux barres verticales à trois traverses\"}}},{\"category\":\"Sm\",\"key\":\"2A69\",\"mappings\":{\"default\":{\"default\":\"trois barres verticales à trois traverses\"}}},{\"key\":\"2A6A\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6B\",\"mappings\":{\"default\":{\"default\":\"opérateur tilde à points ascendants\"}}},{\"category\":\"Sm\",\"key\":\"2A6C\",\"mappings\":{\"default\":{\"default\":\"similaire à moins similaire à\"}}},{\"key\":\"2A6D\",\"mappings\":{\"default\":{\"default\":\"congruent point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A6E\",\"mappings\":{\"default\":{\"default\":\"Égal astérisque en chef\"}}},{\"key\":\"2A6F\",\"mappings\":{\"default\":{\"default\":\"presque égal à circonflexe\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A70\",\"mappings\":{\"default\":{\"default\":\"approximativement égal à ou égal à\"}}},{\"key\":\"2A71\",\"mappings\":{\"default\":{\"default\":\"plus signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A72\",\"mappings\":{\"default\":{\"default\":\"égal à signe plus en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A73\",\"mappings\":{\"default\":{\"default\":\"tilde signe égal en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A74\",\"mappings\":{\"default\":{\"default\":\"double deux points égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A75\",\"mappings\":{\"default\":{\"default\":\"deux signes égal à consécutifs\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A76\",\"mappings\":{\"default\":{\"default\":\"trois signes égal à consécutifs\"}}},{\"key\":\"2A77\",\"mappings\":{\"default\":{\"default\":\"égal à deux points en chef deux points souscrits\"}},\"category\":\"Sm\"},{\"key\":\"2A78\",\"mappings\":{\"default\":{\"default\":\"équivalent quatre points en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A79\",\"mappings\":{\"default\":{\"default\":\"inférieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7A\",\"mappings\":{\"default\":{\"default\":\"supérieur à avec cercle inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A7B\",\"mappings\":{\"default\":{\"default\":\"inférieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7C\",\"mappings\":{\"default\":{\"default\":\"supérieur à point d'interrogation en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A7D\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7E\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A7F\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A80\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A81\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A82\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2A83\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à pentu point en chef droit\"}},\"category\":\"Sm\"},{\"key\":\"2A84\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à pentu point en chef gauche\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A85\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A86\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou approximatif\"}}},{\"category\":\"Sm\",\"key\":\"2A87\",\"mappings\":{\"default\":{\"default\":\"inférieur à et pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2A88\",\"mappings\":{\"default\":{\"default\":\"supérieur à et pas égal à une ligne\"}}},{\"key\":\"2A89\",\"mappings\":{\"default\":{\"default\":\"inférieur à et non approximatif\"}},\"category\":\"Sm\"},{\"key\":\"2A8A\",\"mappings\":{\"default\":{\"default\":\"supérieur à et non approximatif\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A8B\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à deux lignes par dessus supérieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A8C\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à deux lignes par dessus inférieur à\"}}},{\"key\":\"2A8D\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8E\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2A8F\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus similaire à par dessus supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A90\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus similaire à par dessus inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A91\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus supérieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A92\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus inférieur à par dessus égal à deux lignes\"}},\"category\":\"Sm\"},{\"key\":\"2A93\",\"mappings\":{\"default\":{\"default\":\"inférieur à par dessus égal à pentu par dessus supérieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2A94\",\"mappings\":{\"default\":{\"default\":\"supérieur à par dessus égal à pentu par dessus inférieur à par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A95\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"2A96\",\"mappings\":{\"default\":{\"default\":\"Égal à incliné ou supérieur à\"}}},{\"key\":\"2A97\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou inférieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A98\",\"mappings\":{\"default\":{\"default\":\"égal à pentu ou supérieur à point inscrit\"}},\"category\":\"Sm\"},{\"key\":\"2A99\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9A\",\"mappings\":{\"default\":{\"default\":\"égal à deux lignes ou supérieur à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2A9B\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à à deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2A9C\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à à deux lignes inclinées\"}}},{\"key\":\"2A9D\",\"mappings\":{\"default\":{\"default\":\"similaire à ou inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9E\",\"mappings\":{\"default\":{\"default\":\"similaire à ou supérieur à\"}},\"category\":\"Sm\"},{\"key\":\"2A9F\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus inférieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA0\",\"mappings\":{\"default\":{\"default\":\"similaire à par dessus supérieur à par dessus signe égal\"}},\"category\":\"Sm\"},{\"key\":\"2AA1\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés\"}},\"category\":\"Sm\"},{\"key\":\"2AA2\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à emboîtés\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AA3\",\"mappings\":{\"default\":{\"default\":\"deux inférieur à emboîtés avec barre souscrite\"}}},{\"key\":\"2AA4\",\"mappings\":{\"default\":{\"default\":\"deux supérieur à entrecroisés\"}},\"category\":\"Sm\"},{\"key\":\"2AA5\",\"mappings\":{\"default\":{\"default\":\"supérieur à à côté de inférieur à\"}},\"category\":\"Sm\"},{\"key\":\"2AA6\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA7\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc\"}},\"category\":\"Sm\"},{\"key\":\"2AA8\",\"mappings\":{\"default\":{\"default\":\"inférieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AA9\",\"mappings\":{\"default\":{\"default\":\"supérieur à fermé d'un arc par dessus égal à pentu\"}},\"category\":\"Sm\"},{\"key\":\"2AAA\",\"mappings\":{\"default\":{\"default\":\"plus petit que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAB\",\"mappings\":{\"default\":{\"default\":\"plus grand que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAC\",\"mappings\":{\"default\":{\"default\":\"plus petit ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAD\",\"mappings\":{\"default\":{\"default\":\"plus grand ou égal que en fourche\"}},\"category\":\"Sm\"},{\"key\":\"2AAE\",\"mappings\":{\"default\":{\"default\":\"égal et dos d'âne\"}},\"category\":\"Sm\"},{\"key\":\"2AAF\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal à une ligne\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB0\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB1\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB2\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à une ligne\"}}},{\"category\":\"Sm\",\"key\":\"2AB3\",\"mappings\":{\"default\":{\"default\":\"précède par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AB4\",\"mappings\":{\"default\":{\"default\":\"suit par dessus signe égal\"}}},{\"key\":\"2AB5\",\"mappings\":{\"default\":{\"default\":\"précède par dessus pas égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AB6\",\"mappings\":{\"default\":{\"default\":\"suit par dessus pas égal à\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AB7\",\"mappings\":{\"default\":{\"default\":\"précède par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB8\",\"mappings\":{\"default\":{\"default\":\"suit par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2AB9\",\"mappings\":{\"default\":{\"default\":\"précède par dessus non presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ABA\",\"mappings\":{\"default\":{\"default\":\"suit par dessus non presque égal à\"}}},{\"key\":\"2ABB\",\"mappings\":{\"default\":{\"default\":\"double précède\"}},\"category\":\"Sm\"},{\"key\":\"2ABC\",\"mappings\":{\"default\":{\"default\":\"double suit\"}},\"category\":\"Sm\"},{\"key\":\"2ABD\",\"mappings\":{\"default\":{\"default\":\"sous ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABE\",\"mappings\":{\"default\":{\"default\":\"sur ensemble pointé\"}},\"category\":\"Sm\"},{\"key\":\"2ABF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble plus souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à signe de multiplication souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AC3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AC4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de ou égal à point en chef\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus signe égal\"}}},{\"category\":\"Sm\",\"key\":\"2AC6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus signe égal\"}}},{\"key\":\"2AC7\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"key\":\"2AC8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AC9\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACA\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus presque égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACB\",\"mappings\":{\"default\":{\"default\":\"sous ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACC\",\"mappings\":{\"default\":{\"default\":\"sur ensemble de par dessus pas égal à\"}}},{\"category\":\"Sm\",\"key\":\"2ACD\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte gauche\"}}},{\"category\":\"Sm\",\"key\":\"2ACE\",\"mappings\":{\"default\":{\"default\":\"opérateur boîte carrée ouverte droite\"}}},{\"key\":\"2ACF\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD0\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos\"}},\"category\":\"Sm\"},{\"key\":\"2AD1\",\"mappings\":{\"default\":{\"default\":\"sous ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD2\",\"mappings\":{\"default\":{\"default\":\"sur ensemble clos ou égal à\"}},\"category\":\"Sm\"},{\"key\":\"2AD3\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD4\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD5\",\"mappings\":{\"default\":{\"default\":\"sous ensemble par dessus sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD6\",\"mappings\":{\"default\":{\"default\":\"sur ensemble par dessus sur ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD7\",\"mappings\":{\"default\":{\"default\":\"sur ensemble à côté de sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD8\",\"mappings\":{\"default\":{\"default\":\"sur ensemble chaîné à sous ensemble\"}},\"category\":\"Sm\"},{\"key\":\"2AD9\",\"mappings\":{\"default\":{\"default\":\"appartient à ouvert vers le bas\"}},\"category\":\"Sm\"},{\"key\":\"2ADA\",\"mappings\":{\"default\":{\"default\":\"fourche surmontée d'un t\"}},\"category\":\"Sm\"},{\"key\":\"2ADB\",\"mappings\":{\"default\":{\"default\":\"intersection transversale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2ADC\",\"mappings\":{\"default\":{\"default\":\"bifurcation (non indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADD\",\"mappings\":{\"default\":{\"default\":\"non bifurcation (indépendant)\"}}},{\"category\":\"Sm\",\"key\":\"2ADE\",\"mappings\":{\"default\":{\"default\":\"taquet gauche court\"}}},{\"category\":\"Sm\",\"key\":\"2ADF\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas\"}}},{\"category\":\"Sm\",\"key\":\"2AE0\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut\"}}},{\"category\":\"Sm\",\"key\":\"2AE1\",\"mappings\":{\"default\":{\"default\":\"perpendiculaire à s\"}}},{\"category\":\"Sm\",\"key\":\"2AE2\",\"mappings\":{\"default\":{\"default\":\"triple tourniquet droit à barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AE3\",\"mappings\":{\"default\":{\"default\":\"tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE4\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à barre verticale\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AE5\",\"mappings\":{\"default\":{\"default\":\"double tourniquet gauche à double barre verticale\"}}},{\"key\":\"2AE6\",\"mappings\":{\"default\":{\"default\":\"double barre verticale gauche à traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AE7\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le bas avec barre en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AE8\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut avec barre souscrite\"}},\"category\":\"Sm\"},{\"key\":\"2AE9\",\"mappings\":{\"default\":{\"default\":\"taquet court vers le haut par dessus taquet court vers le bas\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AEA\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le bas\"}}},{\"key\":\"2AEB\",\"mappings\":{\"default\":{\"default\":\"double taquet vers le haut\"}},\"category\":\"Sm\"},{\"key\":\"2AEC\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits\"}},\"category\":\"Sm\"},{\"key\":\"2AED\",\"mappings\":{\"default\":{\"default\":\"négation à deux traits réfléchi\"}},\"category\":\"Sm\"},{\"key\":\"2AEE\",\"mappings\":{\"default\":{\"default\":\"n'est pas un diviseur de à barre de négation réfléchie\"}},\"category\":\"Sm\"},{\"key\":\"2AEF\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle en chef\"}},\"category\":\"Sm\"},{\"key\":\"2AF0\",\"mappings\":{\"default\":{\"default\":\"ligne verticale cercle souscrit\"}},\"category\":\"Sm\"},{\"key\":\"2AF1\",\"mappings\":{\"default\":{\"default\":\"taquet vers le bas surmontant un cercle\"}},\"category\":\"Sm\"},{\"key\":\"2AF2\",\"mappings\":{\"default\":{\"default\":\"parallèlle à vertical à une traverse\"}},\"category\":\"Sm\"},{\"key\":\"2AF3\",\"mappings\":{\"default\":{\"default\":\"parallèle à avec opérateur tilde\"}},\"category\":\"Sm\"},{\"category\":\"Sm\",\"key\":\"2AF4\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"2AF5\",\"mappings\":{\"default\":{\"default\":\"triple barre verticale à une traverse\"}}},{\"category\":\"Sm\",\"key\":\"2AF6\",\"mappings\":{\"default\":{\"default\":\"opérateur trois points\"}}},{\"category\":\"Sm\",\"key\":\"2AF7\",\"mappings\":{\"default\":{\"default\":\"trois inférieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF8\",\"mappings\":{\"default\":{\"default\":\"trois supérieur à emboîtés\"}}},{\"category\":\"Sm\",\"key\":\"2AF9\",\"mappings\":{\"default\":{\"default\":\"inférieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFA\",\"mappings\":{\"default\":{\"default\":\"supérieur à ou égal à et deux lignes inclinées\"}}},{\"category\":\"Sm\",\"key\":\"2AFB\",\"mappings\":{\"default\":{\"default\":\"relation binaire triple oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFC\",\"mappings\":{\"default\":{\"default\":\"grand opérateur à trois barres verticales\"}}},{\"category\":\"Sm\",\"key\":\"2AFD\",\"mappings\":{\"default\":{\"default\":\"opérateur double oblique\"}}},{\"category\":\"Sm\",\"key\":\"2AFE\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche\"}}},{\"category\":\"Sm\",\"key\":\"2AFF\",\"mappings\":{\"default\":{\"default\":\"barre verticale blanche n aire\"}}},{\"category\":\"Pd\",\"key\":\"301C\",\"mappings\":{\"default\":{\"default\":\"trait d'union en esse\"}}},{\"category\":\"Po\",\"key\":\"FE10\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de virgule verticale\"}}},{\"category\":\"Po\",\"key\":\"FE13\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de deux points vertical\"}}},{\"category\":\"Po\",\"key\":\"FE14\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point virgule vertical\"}}},{\"category\":\"Po\",\"key\":\"FE15\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'exclamation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE16\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point d'interrogation vertical\"}}},{\"category\":\"Po\",\"key\":\"FE19\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de points de suspension verticaux\"}}},{\"category\":\"Po\",\"key\":\"FE30\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de point de conduite double vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE31\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret cadratin vertical\"}}},{\"category\":\"Pd\",\"key\":\"FE32\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret demi cadratin vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE33\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas vertical\"}}},{\"category\":\"Pc\",\"key\":\"FE34\",\"mappings\":{\"default\":{\"default\":\"forme de présentation de tiret bas ondulé vertical\"}}},{\"category\":\"Po\",\"key\":\"FE45\",\"mappings\":{\"default\":{\"default\":\"point sésame\"}}},{\"category\":\"Po\",\"key\":\"FE46\",\"mappings\":{\"default\":{\"default\":\"point sésame ajouré\"}}},{\"category\":\"Po\",\"key\":\"FE49\",\"mappings\":{\"default\":{\"default\":\"tiret haut en pointillés\"}}},{\"category\":\"Po\",\"key\":\"FE4A\",\"mappings\":{\"default\":{\"default\":\"tiret haut à point central\"}}},{\"category\":\"Po\",\"key\":\"FE4B\",\"mappings\":{\"default\":{\"default\":\"tiret haut ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE4C\",\"mappings\":{\"default\":{\"default\":\"tiret haut double ondulé\"}}},{\"category\":\"Pc\",\"key\":\"FE4D\",\"mappings\":{\"default\":{\"default\":\"tiret bas avec pointillés\"}}},{\"category\":\"Pc\",\"key\":\"FE4E\",\"mappings\":{\"default\":{\"default\":\"tiret bas à point central\"}}},{\"category\":\"Pc\",\"key\":\"FE4F\",\"mappings\":{\"default\":{\"default\":\"tiret bas ondulé\"}}},{\"category\":\"Po\",\"key\":\"FE50\",\"mappings\":{\"default\":{\"default\":\"virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE52\",\"mappings\":{\"default\":{\"default\":\"point minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE54\",\"mappings\":{\"default\":{\"default\":\"point virgule minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE55\",\"mappings\":{\"default\":{\"default\":\"deux points minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE56\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE57\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE58\",\"mappings\":{\"default\":{\"default\":\"trait d'union cadratin minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE5F\",\"mappings\":{\"default\":{\"default\":\"croisillon minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE60\",\"mappings\":{\"default\":{\"default\":\"perluète minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE61\",\"mappings\":{\"default\":{\"default\":\"astérisque minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE62\",\"mappings\":{\"default\":{\"default\":\"plus minuscule\"}}},{\"category\":\"Pd\",\"key\":\"FE63\",\"mappings\":{\"default\":{\"default\":\"tiret minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE64\",\"mappings\":{\"default\":{\"default\":\"inférieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE65\",\"mappings\":{\"default\":{\"default\":\"supérieur à minuscule\"}}},{\"category\":\"Sm\",\"key\":\"FE66\",\"mappings\":{\"default\":{\"default\":\"égal à minuscule\"}}},{\"key\":\"FE68\",\"mappings\":{\"default\":{\"default\":\"integer divide\"}},\"category\":\"Po\"},{\"category\":\"Sc\",\"key\":\"FE69\",\"mappings\":{\"default\":{\"default\":\"symbole dollar minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6A\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent minuscule\"}}},{\"category\":\"Po\",\"key\":\"FE6B\",\"mappings\":{\"default\":{\"default\":\"arrobe minuscule\"}}},{\"category\":\"Po\",\"key\":\"FF01\",\"mappings\":{\"default\":{\"default\":\"point d'exclamation\"}}},{\"category\":\"Po\",\"key\":\"FF02\",\"mappings\":{\"default\":{\"default\":\"guillemet\"}}},{\"category\":\"Po\",\"key\":\"FF03\",\"mappings\":{\"default\":{\"default\":\"croisillon\"}}},{\"category\":\"Sc\",\"key\":\"FF04\",\"mappings\":{\"default\":{\"default\":\"symbole dollar\"}}},{\"category\":\"Po\",\"key\":\"FF05\",\"mappings\":{\"default\":{\"default\":\"symbole pour cent\"}}},{\"category\":\"Po\",\"key\":\"FF06\",\"mappings\":{\"default\":{\"default\":\"perluète\"}}},{\"category\":\"Po\",\"key\":\"FF07\",\"mappings\":{\"default\":{\"default\":\"apostrophe\"}}},{\"category\":\"Po\",\"key\":\"FF0A\",\"mappings\":{\"default\":{\"default\":\"astérisque\"}}},{\"category\":\"Sm\",\"key\":\"FF0B\",\"mappings\":{\"default\":{\"default\":\"plus\"}}},{\"category\":\"Po\",\"key\":\"FF0C\",\"mappings\":{\"default\":{\"default\":\"virgule\"}}},{\"category\":\"Pd\",\"key\":\"FF0D\",\"mappings\":{\"default\":{\"default\":\"tiret\"}}},{\"category\":\"Po\",\"key\":\"FF0E\",\"mappings\":{\"default\":{\"default\":\"point\"}}},{\"category\":\"Po\",\"key\":\"FF0F\",\"mappings\":{\"default\":{\"default\":\"barre oblique\"}}},{\"category\":\"Po\",\"key\":\"FF1A\",\"mappings\":{\"default\":{\"default\":\"deux points colon\"}}},{\"category\":\"Po\",\"key\":\"FF1B\",\"mappings\":{\"default\":{\"default\":\"point virgule\"}}},{\"category\":\"Sm\",\"key\":\"FF1C\",\"mappings\":{\"default\":{\"default\":\"inférieur à\"}}},{\"category\":\"Sm\",\"key\":\"FF1D\",\"mappings\":{\"default\":{\"default\":\"égal à\"}}},{\"category\":\"Sm\",\"key\":\"FF1E\",\"mappings\":{\"default\":{\"default\":\"supérieur à\"}}},{\"category\":\"Po\",\"key\":\"FF1F\",\"mappings\":{\"default\":{\"default\":\"point d'interrogation\"}}},{\"category\":\"Po\",\"key\":\"FF20\",\"mappings\":{\"default\":{\"default\":\"arrobe\"}}},{\"category\":\"Po\",\"key\":\"FF3C\",\"mappings\":{\"default\":{\"default\":\"barre oblique inversée\"}}},{\"category\":\"Sk\",\"key\":\"FF3E\",\"mappings\":{\"default\":{\"default\":\"accent circonflexe\"}}},{\"category\":\"Pc\",\"key\":\"FF3F\",\"mappings\":{\"default\":{\"default\":\"tiret bas\"}}},{\"category\":\"Sk\",\"key\":\"FF40\",\"mappings\":{\"default\":{\"default\":\"accent grave\"}}},{\"category\":\"Sm\",\"key\":\"FF5C\",\"mappings\":{\"default\":{\"default\":\"barre verticale\"}}},{\"category\":\"Sm\",\"key\":\"FF5E\",\"mappings\":{\"default\":{\"default\":\"tilde\"}}},{\"category\":\"Sc\",\"key\":\"FFE0\",\"mappings\":{\"default\":{\"default\":\"symbole centime\"}}},{\"category\":\"Sc\",\"key\":\"FFE1\",\"mappings\":{\"default\":{\"default\":\"symbole livre\"}}},{\"category\":\"Sm\",\"key\":\"FFE2\",\"mappings\":{\"default\":{\"default\":\"négation\"}}},{\"category\":\"Sk\",\"key\":\"FFE3\",\"mappings\":{\"default\":{\"default\":\"macron *\"}}},{\"category\":\"So\",\"key\":\"FFE4\",\"mappings\":{\"default\":{\"default\":\"ligne brisée\"}}},{\"category\":\"Sc\",\"key\":\"FFE5\",\"mappings\":{\"default\":{\"default\":\"symbole yen\"}}},{\"category\":\"Sc\",\"key\":\"FFE6\",\"mappings\":{\"default\":{\"default\":\"symbole won\"}}},{\"category\":\"So\",\"key\":\"FFE8\",\"mappings\":{\"default\":{\"default\":\"ligne verticale mince\"}}},{\"category\":\"So\",\"key\":\"FFED\",\"mappings\":{\"default\":{\"default\":\"carré noir\"}}},{\"category\":\"So\",\"key\":\"FFEE\",\"mappings\":{\"default\":{\"default\":\"cercle blanc\"}}}]\n,\n\"fr/symbols/math_whitespace.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Zs\",\"key\":\"0020\",\"mappings\":{\"default\":{\"default\":\"espace\"}}},{\"key\":\"00A0\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Zs\"},{\"key\":\"00AD\",\"mappings\":{\"default\":{\"default\":\"trait d'union conditionnel\"}},\"category\":\"Cf\"},{\"category\":\"Zs\",\"key\":\"2000\",\"mappings\":{\"default\":{\"default\":\"demi cadratin\"}}},{\"category\":\"Zs\",\"key\":\"2001\",\"mappings\":{\"default\":{\"default\":\"cadratin\"}}},{\"key\":\"2002\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2003\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2004\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2005\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"category\":\"Zs\",\"key\":\"2006\",\"mappings\":{\"default\":{\"default\":\"sixième de cadratin\"}}},{\"key\":\"2007\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2008\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"2009\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200A\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Zs\"},{\"key\":\"200B\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"200C\",\"mappings\":{\"default\":{\"default\":\"antiliant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200D\",\"mappings\":{\"default\":{\"default\":\"liant sans chasse\"}},\"category\":\"Cf\"},{\"key\":\"200E\",\"mappings\":{\"default\":{\"default\":\"marque gauche à droite\"}},\"category\":\"Cf\"},{\"key\":\"200F\",\"mappings\":{\"default\":{\"default\":\"marque droite à gauche\"}},\"category\":\"Cf\"},{\"category\":\"Zl\",\"key\":\"2028\",\"mappings\":{\"default\":{\"default\":\"séparateur de lignes\"}}},{\"category\":\"Zp\",\"key\":\"2029\",\"mappings\":{\"default\":{\"default\":\"séparateur de paragraphes\"}}},{\"category\":\"Cf\",\"key\":\"202A\",\"mappings\":{\"default\":{\"default\":\"enchâssement gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202B\",\"mappings\":{\"default\":{\"default\":\"enchâssement droite à gauche\"}}},{\"category\":\"Cf\",\"key\":\"202C\",\"mappings\":{\"default\":{\"default\":\"dépilement de formatage directionnel\"}}},{\"category\":\"Cf\",\"key\":\"202D\",\"mappings\":{\"default\":{\"default\":\"forçage gauche à droite\"}}},{\"category\":\"Cf\",\"key\":\"202E\",\"mappings\":{\"default\":{\"default\":\"forçage droite à gauche\"}}},{\"category\":\"Zs\",\"key\":\"202F\",\"mappings\":{\"default\":{\"default\":\"espace insécable étroite\"}}},{\"key\":\"205F\",\"mappings\":{\"default\":{\"default\":\"espace moyenne mathématique\"}},\"category\":\"Zs\"},{\"key\":\"2060\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"key\":\"2061\",\"mappings\":{\"default\":{\"default\":\"de\"}},\"category\":\"Cf\"},{\"key\":\"2062\",\"mappings\":{\"default\":{\"default\":\" \"}},\"category\":\"Cf\"},{\"key\":\"2063\",\"mappings\":{\"default\":{\"default\":\"\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"2064\",\"mappings\":{\"default\":{\"default\":\"plus invisible\"}}},{\"category\":\"Cf\",\"key\":\"206A\",\"mappings\":{\"default\":{\"default\":\"inhibiteur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206B\",\"mappings\":{\"default\":{\"default\":\"activateur d'échange symétrique\"}}},{\"category\":\"Cf\",\"key\":\"206E\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales nationales\"}}},{\"category\":\"Cf\",\"key\":\"206F\",\"mappings\":{\"default\":{\"default\":\"sélecteur de formes numérales de référence\"}}},{\"key\":\"FEFF\",\"mappings\":{\"default\":{\"default\":\"espace ultrafine\"}},\"category\":\"Cf\"},{\"category\":\"Cf\",\"key\":\"FFF9\",\"mappings\":{\"default\":{\"default\":\"ancre d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFA\",\"mappings\":{\"default\":{\"default\":\"séparateur d'annotation interlinéaire\"}}},{\"category\":\"Cf\",\"key\":\"FFFB\",\"mappings\":{\"default\":{\"default\":\"terminateur d'annotation interlinéaire\"}}}]\n,\n\"fr/symbols/other_stars.js\": \n[{\"locale\":\"fr\"},{\"category\":\"So\",\"key\":\"23E8\",\"mappings\":{\"default\":{\"default\":\"symbole exposant décimal\"}}},{\"key\":\"2605\",\"mappings\":{\"default\":{\"default\":\"étoile noire\"}},\"category\":\"So\"},{\"key\":\"2606\",\"mappings\":{\"default\":{\"default\":\"étoile blanche\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"26AA\",\"mappings\":{\"default\":{\"default\":\"cercle moyen blanc\"}}},{\"category\":\"So\",\"key\":\"26AB\",\"mappings\":{\"default\":{\"default\":\"cercle moyen noir\"}}},{\"category\":\"So\",\"key\":\"2705\",\"mappings\":{\"default\":{\"default\":\"signe de vérification blanc gras\"}}},{\"key\":\"2713\",\"mappings\":{\"default\":{\"default\":\"signe de vérification\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2714\",\"mappings\":{\"default\":{\"default\":\"gros signe de vérification\"}}},{\"category\":\"So\",\"key\":\"2715\",\"mappings\":{\"default\":{\"default\":\"x de multiplication\"}}},{\"category\":\"So\",\"key\":\"2716\",\"mappings\":{\"default\":{\"default\":\"gros x de multiplication\"}}},{\"key\":\"2717\",\"mappings\":{\"default\":{\"default\":\"x de bulletin de vote\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2718\",\"mappings\":{\"default\":{\"default\":\"gros x de bulletin de vote\"}}},{\"category\":\"So\",\"key\":\"271B\",\"mappings\":{\"default\":{\"default\":\"croix percée d'un carré\"}}},{\"category\":\"So\",\"key\":\"271C\",\"mappings\":{\"default\":{\"default\":\"grosse croix percée d'un carré\"}}},{\"key\":\"2720\",\"mappings\":{\"default\":{\"default\":\"croix de malte\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2721\",\"mappings\":{\"default\":{\"default\":\"Étoile de david\"}}},{\"category\":\"So\",\"key\":\"2722\",\"mappings\":{\"default\":{\"default\":\"croix larmée\"}}},{\"category\":\"So\",\"key\":\"2723\",\"mappings\":{\"default\":{\"default\":\"croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2724\",\"mappings\":{\"default\":{\"default\":\"grosse croix pommetée\"}}},{\"category\":\"So\",\"key\":\"2725\",\"mappings\":{\"default\":{\"default\":\"croix tréflée\"}}},{\"category\":\"So\",\"key\":\"2726\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2727\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à quatre branches\"}}},{\"category\":\"So\",\"key\":\"2728\",\"mappings\":{\"default\":{\"default\":\"scintillements\"}}},{\"category\":\"So\",\"key\":\"2729\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche à contour accentué\"}}},{\"category\":\"So\",\"key\":\"272A\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche cerclée\"}}},{\"category\":\"So\",\"key\":\"272B\",\"mappings\":{\"default\":{\"default\":\"molette noire\"}}},{\"category\":\"So\",\"key\":\"272C\",\"mappings\":{\"default\":{\"default\":\"molette blanche\"}}},{\"category\":\"So\",\"key\":\"272D\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec contour\"}}},{\"category\":\"So\",\"key\":\"272E\",\"mappings\":{\"default\":{\"default\":\"Étoile noire avec gros contour\"}}},{\"category\":\"So\",\"key\":\"272F\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante\"}}},{\"category\":\"So\",\"key\":\"2730\",\"mappings\":{\"default\":{\"default\":\"Étoile blanche ombrée\"}}},{\"category\":\"So\",\"key\":\"2731\",\"mappings\":{\"default\":{\"default\":\"gros astérisque\"}}},{\"category\":\"So\",\"key\":\"2732\",\"mappings\":{\"default\":{\"default\":\"astérisque percé\"}}},{\"category\":\"So\",\"key\":\"2733\",\"mappings\":{\"default\":{\"default\":\"astérisque à huit branches\"}}},{\"category\":\"So\",\"key\":\"2734\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à huit branches\"}}},{\"category\":\"So\",\"key\":\"2735\",\"mappings\":{\"default\":{\"default\":\"Étoile rayonnante à huit branches\"}}},{\"key\":\"2736\",\"mappings\":{\"default\":{\"default\":\"étoile noire à six branches\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"2739\",\"mappings\":{\"default\":{\"default\":\"Étoile noire à douze branches\"}}},{\"category\":\"So\",\"key\":\"273A\",\"mappings\":{\"default\":{\"default\":\"astérisque à seize branches\"}}},{\"category\":\"So\",\"key\":\"273B\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé\"}}},{\"category\":\"So\",\"key\":\"273C\",\"mappings\":{\"default\":{\"default\":\"astérisque larmé percé\"}}},{\"key\":\"273D\",\"mappings\":{\"default\":{\"default\":\"gros astérisque larmé\"}},\"category\":\"So\"},{\"category\":\"So\",\"key\":\"273E\",\"mappings\":{\"default\":{\"default\":\"sixtefeuille blanche et noire\"}}},{\"category\":\"So\",\"key\":\"273F\",\"mappings\":{\"default\":{\"default\":\"quintefeuille noire\"}}},{\"category\":\"So\",\"key\":\"2740\",\"mappings\":{\"default\":{\"default\":\"quintefeuille blanche\"}}},{\"category\":\"So\",\"key\":\"2741\",\"mappings\":{\"default\":{\"default\":\"double quartefeuille noire avec contour\"}}},{\"category\":\"So\",\"key\":\"2742\",\"mappings\":{\"default\":{\"default\":\"Étoile cerclée percée à huit branches\"}}},{\"category\":\"So\",\"key\":\"2743\",\"mappings\":{\"default\":{\"default\":\"gros astérisque rayonnant larmé\"}}},{\"category\":\"So\",\"key\":\"2744\",\"mappings\":{\"default\":{\"default\":\"flocon de neige\"}}},{\"category\":\"So\",\"key\":\"2745\",\"mappings\":{\"default\":{\"default\":\"flocon de neige à trois folioles transpercé\"}}},{\"category\":\"So\",\"key\":\"2746\",\"mappings\":{\"default\":{\"default\":\"gros flocon de neige à chevrons\"}}},{\"category\":\"So\",\"key\":\"2747\",\"mappings\":{\"default\":{\"default\":\"Étincellement\"}}},{\"category\":\"So\",\"key\":\"2748\",\"mappings\":{\"default\":{\"default\":\"gros étincellement\"}}},{\"category\":\"So\",\"key\":\"2749\",\"mappings\":{\"default\":{\"default\":\"astérisque pommeté\"}}},{\"category\":\"So\",\"key\":\"274A\",\"mappings\":{\"default\":{\"default\":\"astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274B\",\"mappings\":{\"default\":{\"default\":\"gros astérisque hélice à huit branches larmées\"}}},{\"category\":\"So\",\"key\":\"274C\",\"mappings\":{\"default\":{\"default\":\"croix grasse\"}}},{\"category\":\"So\",\"key\":\"274D\",\"mappings\":{\"default\":{\"default\":\"cercle blanc ombré\"}}}]\n,\n\"fr/units/energy.js\": \n[{\"locale\":\"fr\"},{\"key\":\"W\",\"mappings\":{\"default\":{\"default\":\"watts\",\"singular\":\"watt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"W\",\"w\"]},{\"key\":\"J\",\"mappings\":{\"default\":{\"default\":\"joules\",\"singular\":\"joule\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"J\"]},{\"key\":\"N\",\"mappings\":{\"default\":{\"default\":\"newtons\",\"singular\":\"newton\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"N\"]},{\"key\":\"A\",\"mappings\":{\"default\":{\"default\":\"ampères\",\"singular\":\"ampère\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"A\"]},{\"key\":\"V\",\"mappings\":{\"default\":{\"default\":\"volts\",\"singular\":\"volt\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"V\"]},{\"key\":\"Ω\",\"mappings\":{\"default\":{\"default\":\"ohms\",\"singular\":\"ohm\",\"dual\":\"\"}},\"category\":\"energy\",\"names\":[\"Ω\",\"Ohm\"]}]\n,\n\"fr/units/length.js\": \n[{\"locale\":\"fr\"},{\"key\":\"m\",\"mappings\":{\"default\":{\"default\":\"mètres\",\"singular\":\"mètre\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"m\"]},{\"key\":\"ft\",\"mappings\":{\"default\":{\"default\":\"pieds\",\"singular\":\"pied\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"ft\",\"ft.\"]},{\"key\":\"in\",\"mappings\":{\"default\":{\"default\":\"pouces\",\"singular\":\"pouce\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"in\",\"in.\"]},{\"key\":\"mi\",\"mappings\":{\"default\":{\"default\":\"miles\",\"singular\":\"mile\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"mi\",\"mi.\"]},{\"key\":\"yd\",\"mappings\":{\"default\":{\"default\":\"yards\",\"singular\":\"yard\",\"dual\":\"\"}},\"category\":\"Length\",\"names\":[\"yd\",\"yd.\"]}]\n,\n\"fr/units/memory.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/other.js\": \n[{\"locale\":\"fr\"}]\n,\n\"fr/units/speed.js\": \n[{\"locale\":\"fr\"},{\"key\":\"mph\",\"mappings\":{\"default\":{\"default\":\"miles par heure\",\"singular\":\"mile par heure\",\"dual\":\"\"}},\"names\":[\"mph\"]}]\n,\n\"fr/units/temperature.js\": \n[{\"locale\":\"fr\"},{\"key\":\"F\",\"mappings\":{\"default\":{\"default\":\"farads\",\"singular\":\"farad\",\"dual\":\"\"}},\"names\":[\"F\",\"F.\",\"°F\"]},{\"key\":\"C\",\"mappings\":{\"default\":{\"default\":\"coulombs\",\"singular\":\"coulomb\",\"dual\":\"\"}},\"names\":[\"C\",\"°C\"]},{\"key\":\"K\",\"mappings\":{\"default\":{\"default\":\"kelvins\",\"singular\":\"kelvin\",\"dual\":\"\"}},\"names\":[\"K\",\"°K\"]}]\n,\n\"fr/units/time.js\": \n[{\"locale\":\"fr\"},{\"key\":\"s\",\"mappings\":{\"default\":{\"default\":\"secondes\",\"singular\":\"seconde\",\"dual\":\"\"}},\"category\":\"time\",\"names\":[\"s\"]}]\n,\n\"fr/units/volume.js\": \n[{\"locale\":\"fr\"},{\"key\":\"bbl\",\"mappings\":{\"default\":{\"default\":\"barils\",\"singular\":\"baril\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"bbl.\",\"bbl\"]},{\"key\":\"gal\",\"mappings\":{\"default\":{\"default\":\"gallons\",\"singular\":\"gallon\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"gal\",\"gal.\"]},{\"key\":\"pt\",\"mappings\":{\"default\":{\"default\":\"pintes\",\"singular\":\"pinte\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"pt\",\"pt.\"]},{\"key\":\"qt\",\"mappings\":{\"default\":{\"default\":\"quarts\",\"singular\":\"quart\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"qt\",\"qt.\"]},{\"key\":\"tbsp\",\"mappings\":{\"default\":{\"default\":\"cuillères de table\",\"singular\":\"cuillèe de table\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"key\":\"tsp\",\"mappings\":{\"default\":{\"default\":\"cuillèes à thé\",\"singular\":\"cuillère à thé\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"tsp\",\"tsp.\"]},{\"key\":\"l\",\"mappings\":{\"default\":{\"default\":\"litres\",\"singular\":\"litre\",\"dual\":\"\"}},\"category\":\"volume\",\"names\":[\"l\"]}]\n,\n\"fr/units/weight.js\": \n[{\"locale\":\"fr\"},{\"key\":\"lb\",\"mappings\":{\"default\":{\"default\":\"livres\",\"singular\":\"livre\",\"dual\":\"\"}},\"names\":[\"lb\",\"lb.\"]},{\"key\":\"oz\",\"mappings\":{\"default\":{\"default\":\"onces\",\"singular\":\"oce\",\"dual\":\"\"}},\"names\":[\"oz\",\"oz.\"]},{\"key\":\"gr\",\"mappings\":{\"default\":{\"default\":\"grains\",\"singular\":\"grain\",\"dual\":\"\"}},\"names\":[\"g\",\"gr\"]},{\"key\":\"t\",\"mappings\":{\"default\":{\"default\":\"tonnes\",\"singular\":\"tonne\",\"dual\":\"\"}},\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/mathmaps/nemeth.js",
    "content": "{\n\"nemeth/functions/algebra.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠛\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠞\"}},\"key\":\"det\",\"names\":[\"det\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠊⠍\"}},\"key\":\"dim\",\"names\":[\"dim\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠓⠕⠍\"}},\"key\":\"hom\",\"names\":[\"hom\",\"Hom\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠅⠑⠗\"}},\"key\":\"ker\",\"names\":[\"ker\"]},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠠⠞⠗\"}},\"key\":\"Tr\",\"names\":[\"Tr\",\"tr\"]}]\n,\n\"nemeth/functions/elementary.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠕⠏⠀\"}},\"key\":\"log\",\"names\":[\"log\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠝⠀\"}},\"key\":\"ln\",\"names\":[\"ln\"]},{\"category\":\"Logarithm\",\"mappings\":{\"default\":{\"default\":\"⠇⠛\"}},\"key\":\"lg\",\"names\":[\"lg\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠑⠭⠏\"}},\"key\":\"exp\",\"names\":[\"exp\",\"expt\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠛⠉⠙\"}},\"key\":\"gcd\",\"names\":[\"gcd\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠇⠉⠍\"}},\"key\":\"lcm\",\"names\":[\"lcm\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠛⠀\"}},\"key\":\"arg\",\"names\":[\"arg\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠊⠍\"}},\"key\":\"im\",\"names\":[\"im\"]},{\"category\":\"Complex\",\"mappings\":{\"default\":{\"default\":\"⠗⠑\"}},\"key\":\"re\",\"names\":[\"re\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠋⠀\"}},\"key\":\"inf\",\"names\":[\"inf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍\"}},\"key\":\"lim\",\"names\":[\"lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠊⠝⠀⠋\"}},\"key\":\"liminf\",\"names\":[\"lim inf\",\"liminf\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠇⠊⠍⠎⠥⠏\"}},\"key\":\"limsup\",\"names\":[\"lim sup\",\"limsup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠁⠭⠀\"}},\"key\":\"max\",\"names\":[\"max\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠎⠥⠏\"}},\"key\":\"sup\",\"names\":[\"sup\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠊⠝⠚⠇⠊⠍\"}},\"key\":\"injlim\",\"names\":[\"injlim\",\"inj lim\"]},{\"category\":\"Limits\",\"mappings\":{\"default\":{\"default\":\"⠏⠗⠕⠚⠇⠊⠍\"}},\"key\":\"projlim\",\"names\":[\"projlim\",\"proj lim\"]},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"⠍⠕⠙\"}},\"key\":\"mod\",\"names\":[\"mod\"]},{\"category\":\"Probability\",\"mappings\":{\"default\":{\"default\":\"⠠⠏⠗\"}},\"key\":\"Pr\",\"names\":[\"Pr\"]}]\n,\n\"nemeth/functions/hyperbolic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠓⠀\"}},\"key\":\"cosh\",\"names\":[\"cosh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠓⠀\"}},\"key\":\"coth\",\"names\":[\"coth\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠓⠀\"}},\"key\":\"csch\",\"names\":[\"csch\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠓⠀\"}},\"key\":\"sech\",\"names\":[\"sech\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠓⠀\"}},\"key\":\"sinh\",\"names\":[\"sinh\"]},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠕⠓⠀\"}},\"key\":\"tanh\",\"names\":[\"tanh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠎⠓\"}},\"key\":\"arcosh\",\"names\":[\"arcosh\",\"arccosh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠕⠞⠓\"}},\"key\":\"arcoth\",\"names\":[\"arcoth\",\"arccoth\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠉⠓\"}},\"key\":\"arcsch\",\"names\":[\"arcsch\",\"arccsch\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠑⠉⠓⠀\"}},\"key\":\"arsech\",\"names\":[\"arsech\",\"arcsech\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠎⠊⠝⠓⠀\"}},\"key\":\"arsinh\",\"names\":[\"arsinh\",\"arcsinh\"]},{\"category\":\"Area\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠞⠁⠕⠓⠀\"}},\"key\":\"artanh\",\"names\":[\"artanh\",\"arctanh\"]}]\n,\n\"nemeth/functions/trigonometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠎⠀\"}},\"key\":\"cos\",\"names\":[\"cos\",\"cosine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠕⠞⠀\"}},\"key\":\"cot\",\"names\":[\"cot\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠉⠎⠉⠀\"}},\"key\":\"csc\",\"names\":[\"csc\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠑⠉⠀\"}},\"key\":\"sec\",\"names\":[\"sec\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠎⠊⠝⠀\"}},\"key\":\"sin\",\"names\":[\"sin\",\"sine\"]},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"⠞⠁⠝⠀\"}},\"key\":\"tan\",\"names\":[\"tan\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠉⠕⠎⠀\"}},\"key\":\"arccos\",\"names\":[\"arccos\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠕⠞⠀\"}},\"key\":\"arccot\",\"names\":[\"arccot\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠉⠎⠉⠀\"}},\"key\":\"arccsc\",\"names\":[\"arccsc\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠑⠉⠀\"}},\"key\":\"arcsec\",\"names\":[\"arcsec\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠎⠊⠝⠀\"}},\"key\":\"arcsin\",\"names\":[\"arcsin\"]},{\"category\":\"Cyclometric\",\"mappings\":{\"default\":{\"default\":\"⠁⠗⠉⠀⠞⠁⠝⠀\"}},\"key\":\"arctan\",\"names\":[\"arctan\"]}]\n,\n\"nemeth/symbols/digits_rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠲⠼\"}},\"key\":\"00BC\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠆⠼\"}},\"key\":\"00BD\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠲⠼\"}},\"key\":\"00BE\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠶⠼\"}},\"key\":\"2150\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠔⠼\"}},\"key\":\"2151\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠂⠴⠼\"}},\"key\":\"2152\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠒⠼\"}},\"key\":\"2153\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠒⠼\"}},\"key\":\"2154\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠢⠼\"}},\"key\":\"2155\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠆⠌⠢⠼\"}},\"key\":\"2156\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠢⠼\"}},\"key\":\"2157\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠲⠌⠢⠼\"}},\"key\":\"2158\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠖⠼\"}},\"key\":\"2159\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠖⠼\"}},\"key\":\"215A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠦⠼\"}},\"key\":\"215B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠒⠌⠦⠼\"}},\"key\":\"215C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠢⠌⠦⠼\"}},\"key\":\"215D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠶⠌⠦⠼\"}},\"key\":\"215E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠂⠌⠼\"}},\"key\":\"215F\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠹⠴⠌⠒⠼\"}},\"key\":\"2189\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠂⠴⠻⠻\"}},\"key\":\"3248\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠆⠴⠻⠻\"}},\"key\":\"3249\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠒⠴⠻⠻\"}},\"key\":\"324A\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠲⠴⠻⠻\"}},\"key\":\"324B\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠢⠴⠻⠻\"}},\"key\":\"324C\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠖⠴⠻⠻\"}},\"key\":\"324D\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠶⠴⠻⠻\"}},\"key\":\"324E\"},{\"category\":\"No\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲⠸⠫⠫⠉⠸⠫⠼⠦⠴⠻⠻\"}},\"key\":\"324F\"}]\n,\n\"nemeth/symbols/greek-rest.js\": \n[{\"locale\":\"nemeth\"}]\n,\n\"nemeth/symbols/greek-scripts.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠢⠑⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠁⠄\"}}}]\n,\n\"nemeth/symbols/greek-symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠴⠄\"}},\"key\":\"03D0\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠙⠶⠄\"}},\"key\":\"03D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠋⠖⠄\"}},\"key\":\"03F6\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠁⠄\"}},\"key\":\"1D7CA\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠶⠉⠃⠄\"}},\"key\":\"1D7CB\"}]\n,\n\"nemeth/symbols/hebrew_letters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠢⠄\"}},\"key\":\"2135\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠖⠄\"}},\"key\":\"2136\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠶⠄\"}},\"key\":\"2137\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠦⠄\"}},\"key\":\"2138\"}]\n,\n\"nemeth/symbols/latin-lower-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01ED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"022D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0231\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E15\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E39\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E51\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E53\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E67\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E69\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EAF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ED9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EED\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EEF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠂⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-phonetic.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"0111\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0127\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0142\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0167\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0180\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"019B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"023C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0247\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0249\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"024D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"024F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"025F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0268\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0284\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"018D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0138\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"017F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0183\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0185\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0188\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"018C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"0192\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0195\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0199\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"019A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"019E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01B9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01BF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠃⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"01C9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"01DD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"01FD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"021D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"0221\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0223\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0225\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0234\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0235\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0236\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0238\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0239\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"023F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0240\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0242\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"024B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"0250\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0251\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0252\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0253\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0254\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0255\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0256\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0257\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0258\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0259\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"025A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"025B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"025C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"025D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"025E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠢⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0260\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0261\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0263\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0264\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0265\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0266\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0267\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0269\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"026B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"026C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"026D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"026E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"026F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0270\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0271\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0272\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0273\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0275\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0277\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0278\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0279\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"027A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"027B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"027C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"027D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"027E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"027F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0282\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0283\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0285\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0286\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0287\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0288\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"0289\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"028A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"028B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"028C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"028D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"028E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0290\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0291\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0292\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"0293\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0295\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0296\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0297\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0298\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"029A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"029E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠔⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"02A9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"02AF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠁⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D09\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D17\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D79\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1D9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"0149\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"014B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠃⠄\"}}}]\n,\n\"nemeth/symbols/latin-lower-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E1\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E2\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E3\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E4\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E5\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}}},{\"category\":\"Ll\",\"key\":\"00E7\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}}},{\"category\":\"Ll\",\"key\":\"00E8\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00E9\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EA\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EB\",\"mappings\":{\"default\":{\"default\":\"⠈⠑\"}}},{\"category\":\"Ll\",\"key\":\"00EC\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00ED\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EE\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00EF\",\"mappings\":{\"default\":{\"default\":\"⠈⠊\"}}},{\"category\":\"Ll\",\"key\":\"00F1\",\"mappings\":{\"default\":{\"default\":\"⠈⠝\"}}},{\"category\":\"Ll\",\"key\":\"00F2\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F3\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F4\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F5\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F6\",\"mappings\":{\"default\":{\"default\":\"⠈⠕\"}}},{\"category\":\"Ll\",\"key\":\"00F9\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FA\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FB\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FC\",\"mappings\":{\"default\":{\"default\":\"⠈⠥\"}}},{\"category\":\"Ll\",\"key\":\"00FD\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"00FF\",\"mappings\":{\"default\":{\"default\":\"⠈⠽\"}}},{\"category\":\"Ll\",\"key\":\"0101\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0103\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0105\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0107\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0109\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"010B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"010D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"010F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0113\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0115\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0117\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0119\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"011B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"011D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"011F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0121\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0123\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0125\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0129\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"012B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"012D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"012F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0131\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0135\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0137\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"013A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"013C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"013E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"0140\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"0144\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"0146\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"0148\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"014D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"014F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0151\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0155\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0157\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0159\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"015B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"015D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"015F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0161\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0163\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0165\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0169\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"016B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"016D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"016F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0171\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0173\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0175\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0177\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"017A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"017C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠉⠄\"}}},{\"category\":\"Ll\",\"key\":\"017E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01CE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠑⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠆⠄\"}}},{\"category\":\"Ll\",\"key\":\"01D4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠲⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"01E9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"01EB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠴⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"01F9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"0201\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0203\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0205\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0207\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0209\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"020B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"020D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"020F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0211\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"0213\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0215\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"0217\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0219\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"021B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"021F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0227\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"0229\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"022F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"0233\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"0237\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E01\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E03\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E05\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E07\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E0F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E11\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E13\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E19\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E1F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E21\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E23\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E25\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E27\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E29\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E2D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E31\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E33\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E35\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E37\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E3F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E41\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E43\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E45\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E47\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E49\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E4B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E55\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E57\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E59\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E5F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E61\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E6F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E71\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E73\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E75\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E77\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E7F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E81\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E83\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E85\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E87\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E89\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E8F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E91\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E93\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E95\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E96\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠖⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E97\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E98\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠦⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E99\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1E9A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠁⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠂⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EA3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EB9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EBD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EC9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠔⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠃⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠙⠄\"}}},{\"category\":\"Ll\",\"key\":\"1ECF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠋⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EE7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠒⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠢⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠶⠄\"}}},{\"category\":\"Ll\",\"key\":\"1EF9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠔⠄\"}}}]\n,\n\"nemeth/symbols/latin-rest.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"0364\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"0365\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"0366\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"0367\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"0368\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"0369\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"036A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"036B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"036C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"036D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"036E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"036F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠒⠖⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D63\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"1D65\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠖⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DCA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠉⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠖⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠶⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠦⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DD9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠔⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠁⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠃⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠉⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠙⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠑⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DDF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠙⠋⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠴⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠂⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠆⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠒⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠲⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠢⠄\"}}},{\"category\":\"Mn\",\"key\":\"1DE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠙⠑⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2071\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"207F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠋⠄\"}}},{\"category\":\"Lm\",\"key\":\"2090\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠴⠄\"}}},{\"category\":\"Lm\",\"key\":\"2091\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠂⠄\"}}},{\"category\":\"Lm\",\"key\":\"2092\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠆⠄\"}}},{\"category\":\"Lm\",\"key\":\"2093\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠒⠄\"}}},{\"category\":\"Lm\",\"key\":\"2094\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠲⠄\"}}},{\"category\":\"Lm\",\"key\":\"2095\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠢⠄\"}}},{\"category\":\"Lm\",\"key\":\"2096\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠖⠄\"}}},{\"category\":\"Lm\",\"key\":\"2097\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠶⠄\"}}},{\"category\":\"Lm\",\"key\":\"2098\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠦⠄\"}}},{\"category\":\"Lm\",\"key\":\"2099\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠔⠄\"}}},{\"category\":\"Lm\",\"key\":\"209A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠁⠄\"}}},{\"category\":\"Lm\",\"key\":\"209B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠃⠄\"}}},{\"category\":\"Lm\",\"key\":\"209C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠔⠉⠄\"}}},{\"category\":\"Lm\",\"key\":\"2C7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠉⠶⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F12A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠁⠄\"}}},{\"category\":\"So\",\"key\":\"1F12B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠃⠄\"}}},{\"category\":\"So\",\"key\":\"1F12C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠆⠉⠄\"}}},{\"category\":\"So\",\"key\":\"1F18A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠋⠂⠦⠁⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-double-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D7\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D9\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DB\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"01DE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"01FA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"022C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"0230\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E08\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E14\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E16\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E38\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E50\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E52\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E64\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E66\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E68\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E78\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EAE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ED8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EDE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠙⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EEE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠴⠄\"}}}]\n,\n\"nemeth/symbols/latin-upper-single-accent.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C5\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠁\"}}},{\"category\":\"Lu\",\"key\":\"00C7\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠉\"}}},{\"category\":\"Lu\",\"key\":\"00C8\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00C9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠑\"}}},{\"category\":\"Lu\",\"key\":\"00CC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CE\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00CF\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠊\"}}},{\"category\":\"Lu\",\"key\":\"00D1\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠝\"}}},{\"category\":\"Lu\",\"key\":\"00D2\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D3\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D4\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D5\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠙⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"00D6\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠕\"}}},{\"category\":\"Lu\",\"key\":\"00D9\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DA\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DB\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DC\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠥\"}}},{\"category\":\"Lu\",\"key\":\"00DD\",\"mappings\":{\"default\":{\"default\":\"⠠⠈⠽\"}}},{\"category\":\"Lu\",\"key\":\"0100\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0102\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0104\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0106\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0108\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"010A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"010C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"010E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0112\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0114\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0116\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0118\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"011A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"011C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"011E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0120\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0122\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0124\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0128\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"012A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"012C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"012E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0130\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0134\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0136\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0139\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"013B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"013D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"013F\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠒⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"0143\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"0145\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠢⠄\"}}},{\"category\":\"Lu\",\"key\":\"0147\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠶⠄\"}}},{\"category\":\"Lu\",\"key\":\"014C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"014E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠲⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0150\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0154\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0156\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0158\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"015A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"015C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"015E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0160\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0162\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0164\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0168\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"016A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"016C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"016E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0170\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0172\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0174\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0176\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0178\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0179\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠔⠄\"}}},{\"category\":\"Lu\",\"key\":\"017B\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠃⠄\"}}},{\"category\":\"Lu\",\"key\":\"017D\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠶⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CD\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠙⠄\"}}},{\"category\":\"Lu\",\"key\":\"01CF\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠉⠋⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D1\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠂⠄\"}}},{\"category\":\"Lu\",\"key\":\"01D3\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠙⠒⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"01E8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"01EA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠑⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"01F8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠂⠋⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"0200\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0202\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0204\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0206\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0208\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"020A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"020C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"020E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0210\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"0212\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"0214\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"0216\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0218\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"021A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"021E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0226\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"0228\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"022E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠆⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"0232\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E00\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E02\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E04\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E06\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E0E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠴⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E10\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E12\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E18\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E1E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠂⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E20\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E22\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E24\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E26\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E28\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E2C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠆⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E30\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E32\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E34\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E36\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E3E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠒⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E40\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E42\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E44\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E46\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E48\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E4A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠲⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E54\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E56\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E58\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E5E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠢⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E60\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E62\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E6E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠖⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E70\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E72\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E74\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E76\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E7E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠶⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E80\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E82\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E84\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E86\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E88\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8A\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8C\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E8E\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠦⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E90\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E92\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1E94\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠔⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA0\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠴⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EA2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠁⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EB8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EBC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠃⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EC8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠦⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECA\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠁⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECC\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠉⠄\"}}},{\"category\":\"Lu\",\"key\":\"1ECE\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠉⠑⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EE6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠑⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF2\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠆⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF4\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠲⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF6\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠖⠄\"}}},{\"category\":\"Lu\",\"key\":\"1EF8\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠂⠑⠋⠦⠄\"}}}]\n,\n\"nemeth/symbols/math_angles.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠑⠄\"}},\"key\":\"22BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠶⠉⠄\"}},\"key\":\"237C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠴⠄\"}},\"key\":\"27C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠃⠄\"}},\"key\":\"299B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠉⠄\"}},\"key\":\"299C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠙⠄\"}},\"key\":\"299D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠑⠄\"}},\"key\":\"299E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠋⠄\"}},\"key\":\"299F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠴⠄\"}},\"key\":\"29A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠂⠄\"}},\"key\":\"29A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠆⠄\"}},\"key\":\"29A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠒⠄\"}},\"key\":\"29A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠲⠄\"}},\"key\":\"29A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠢⠄\"}},\"key\":\"29A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠖⠄\"}},\"key\":\"29A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠶⠄\"}},\"key\":\"29A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠦⠄\"}},\"key\":\"29A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠔⠄\"}},\"key\":\"29A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠁⠄\"}},\"key\":\"29AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠃⠄\"}},\"key\":\"29AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠉⠄\"}},\"key\":\"29AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠙⠄\"}},\"key\":\"29AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠑⠄\"}},\"key\":\"29AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠁⠋⠄\"}},\"key\":\"29AF\"}]\n,\n\"nemeth/symbols/math_arrows.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠀\"}},\"key\":\"2190\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠀\"}},\"key\":\"2191\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠕⠀\"}},\"key\":\"2192\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠀\"}},\"key\":\"2193\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠕⠀\"}},\"key\":\"2194\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠩⠪⠒⠒⠕⠀\"}},\"key\":\"2195\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠒⠒⠀\"}},\"key\":\"2196\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠀\"}},\"key\":\"2197\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠀\"}},\"key\":\"2198\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠒⠒⠀\"}},\"key\":\"2199\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"219A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"219B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠀\"}},\"key\":\"219C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠔⠒⠢⠕⠀\"}},\"key\":\"219D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"219E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"219F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠕⠀\"}},\"key\":\"21A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠽⠀\"}},\"key\":\"21A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠯⠒⠒⠕⠀\"}},\"key\":\"21A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠳⠀\"}},\"key\":\"21A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠳⠒⠒⠕⠀\"}},\"key\":\"21A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠕⠀\"}},\"key\":\"21A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠳⠒⠒⠕⠀\"}},\"key\":\"21A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠳⠒⠕⠀\"}},\"key\":\"21A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠠⠕⠀\"}},\"key\":\"21A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠕⠀\"}},\"key\":\"21AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠨⠡⠀\"}},\"key\":\"21AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠨⠡⠒⠒⠕⠀\"}},\"key\":\"21AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠔⠒⠢⠕⠀\"}},\"key\":\"21AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠔⠢⠔⠀\"}},\"key\":\"21AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠴⠄\"}},\"key\":\"21B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠂⠄\"}},\"key\":\"21B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠆⠄\"}},\"key\":\"21B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠒⠄\"}},\"key\":\"21B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠠⠳⠒⠒⠕⠀\"}},\"key\":\"21B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠀⠕⠀\"}},\"key\":\"21B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠀⠔⠀\"}},\"key\":\"21B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠦⠄\"}},\"key\":\"21B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠃⠔⠄\"}},\"key\":\"21B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠔⠕⠀\"}},\"key\":\"21BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠔⠀\"}},\"key\":\"21BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠪⠒⠒⠀\"}},\"key\":\"21C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠫⠒⠒⠕⠀\"}},\"key\":\"21C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠚⠒⠒⠫⠚⠒⠒⠀\"}},\"key\":\"21C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠩⠒⠒⠕⠀\"}},\"key\":\"21CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠀\"}},\"key\":\"21D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠀\"}},\"key\":\"21D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠕⠕⠀\"}},\"key\":\"21D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠪⠪⠒⠒⠕⠕⠀\"}},\"key\":\"21D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠪⠪⠒⠒⠀\"}},\"key\":\"21D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠘⠒⠒⠕⠕⠀\"}},\"key\":\"21D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠒⠒⠕⠕⠀\"}},\"key\":\"21D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠰⠪⠪⠒⠒⠀\"}},\"key\":\"21D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠪⠪⠒⠒⠀\"}},\"key\":\"21DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠕⠕⠀\"}},\"key\":\"21DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠢⠤⠔⠒⠢⠀\"}},\"key\":\"21DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠢⠤⠔⠒⠢⠕⠀\"}},\"key\":\"21DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠣⠒⠒⠕⠻⠀\"}},\"key\":\"21DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠩⠒⠒⠕⠻⠀\"}},\"key\":\"21DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠀⠒⠀\"}},\"key\":\"21E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠀⠒⠕⠀\"}},\"key\":\"21E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠀⠒⠕⠀\"}},\"key\":\"21E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠀⠒⠕⠀\"}},\"key\":\"21E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠪⠒⠒⠀\"}},\"key\":\"21E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠳⠀\"}},\"key\":\"21E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠪⠒⠒⠀\"}},\"key\":\"21E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠒⠒⠕⠀\"}},\"key\":\"21E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠸⠒⠒⠕⠀\"}},\"key\":\"21E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠸⠒⠒⠕⠀\"}},\"key\":\"21E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠁⠄\"}},\"key\":\"21EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠃⠄\"}},\"key\":\"21EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠉⠄\"}},\"key\":\"21EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠙⠄\"}},\"key\":\"21ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠑⠄\"}},\"key\":\"21EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠑⠋⠄\"}},\"key\":\"21EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠴⠄\"}},\"key\":\"21F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠂⠄\"}},\"key\":\"21F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠋⠆⠄\"}},\"key\":\"21F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠸⠪⠒⠒⠕⠀\"}},\"key\":\"21F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠨⠡⠀\"}},\"key\":\"21F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠕⠐⠫⠣⠒⠒⠕⠀\"}},\"key\":\"21F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠕⠫⠒⠒⠕⠫⠒⠒⠕⠀\"}},\"key\":\"21F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠻⠀\"}},\"key\":\"21FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠒⠒⠕⠻⠀\"}},\"key\":\"21FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠳⠳⠈⠫⠪⠒⠒⠕⠀\"}},\"key\":\"21FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠀\"}},\"key\":\"21FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠳⠀\"}},\"key\":\"21FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠳⠒⠒⠳⠀\"}},\"key\":\"21FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠂⠄\"}},\"key\":\"2301\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠒⠄\"}},\"key\":\"2303\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠲⠄\"}},\"key\":\"2304\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠲⠄\"}},\"key\":\"2324\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠦⠃⠄\"}},\"key\":\"238B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠲⠄\"}},\"key\":\"2794\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠦⠄\"}},\"key\":\"2798\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠔⠄\"}},\"key\":\"2799\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠁⠄\"}},\"key\":\"279A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠃⠄\"}},\"key\":\"279B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠉⠄\"}},\"key\":\"279C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠙⠄\"}},\"key\":\"279D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠑⠄\"}},\"key\":\"279E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠋⠄\"}},\"key\":\"279F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠴⠄\"}},\"key\":\"27A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠂⠄\"}},\"key\":\"27A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠆⠄\"}},\"key\":\"27A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠒⠄\"}},\"key\":\"27A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠲⠄\"}},\"key\":\"27A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠢⠄\"}},\"key\":\"27A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠖⠄\"}},\"key\":\"27A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠶⠄\"}},\"key\":\"27A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠦⠄\"}},\"key\":\"27A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠔⠄\"}},\"key\":\"27A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠁⠄\"}},\"key\":\"27AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠃⠄\"}},\"key\":\"27AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠉⠄\"}},\"key\":\"27AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠙⠄\"}},\"key\":\"27AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠑⠄\"}},\"key\":\"27AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠁⠋⠄\"}},\"key\":\"27AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠂⠄\"}},\"key\":\"27B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠆⠄\"}},\"key\":\"27B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠒⠄\"}},\"key\":\"27B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠲⠄\"}},\"key\":\"27B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠢⠄\"}},\"key\":\"27B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠖⠄\"}},\"key\":\"27B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠶⠄\"}},\"key\":\"27B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠦⠄\"}},\"key\":\"27B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠔⠄\"}},\"key\":\"27B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠁⠄\"}},\"key\":\"27BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠃⠄\"}},\"key\":\"27BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠉⠄\"}},\"key\":\"27BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠙⠄\"}},\"key\":\"27BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠑⠄\"}},\"key\":\"27BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠴⠄\"}},\"key\":\"27F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠂⠄\"}},\"key\":\"27F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠆⠄\"}},\"key\":\"27F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠒⠄\"}},\"key\":\"27F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠲⠄\"}},\"key\":\"27F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠢⠄\"}},\"key\":\"27F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠖⠄\"}},\"key\":\"27F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠶⠄\"}},\"key\":\"27F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠦⠄\"}},\"key\":\"27F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠔⠄\"}},\"key\":\"27F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠁⠄\"}},\"key\":\"27FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠃⠄\"}},\"key\":\"27FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠉⠄\"}},\"key\":\"27FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠙⠄\"}},\"key\":\"27FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠑⠄\"}},\"key\":\"27FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠋⠋⠄\"}},\"key\":\"27FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠴⠄\"}},\"key\":\"2900\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠂⠄\"}},\"key\":\"2901\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠆⠄\"}},\"key\":\"2902\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠒⠄\"}},\"key\":\"2903\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠲⠄\"}},\"key\":\"2904\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠢⠄\"}},\"key\":\"2905\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠖⠄\"}},\"key\":\"2906\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠶⠄\"}},\"key\":\"2907\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠦⠄\"}},\"key\":\"2908\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠔⠄\"}},\"key\":\"2909\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠁⠄\"}},\"key\":\"290A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠃⠄\"}},\"key\":\"290B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠉⠄\"}},\"key\":\"290C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠙⠄\"}},\"key\":\"290D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠑⠄\"}},\"key\":\"290E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠴⠋⠄\"}},\"key\":\"290F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠴⠄\"}},\"key\":\"2910\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠂⠄\"}},\"key\":\"2911\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠆⠄\"}},\"key\":\"2912\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠒⠄\"}},\"key\":\"2913\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠲⠄\"}},\"key\":\"2914\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠢⠄\"}},\"key\":\"2915\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠖⠄\"}},\"key\":\"2916\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠶⠄\"}},\"key\":\"2917\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠦⠄\"}},\"key\":\"2918\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠔⠄\"}},\"key\":\"2919\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠁⠄\"}},\"key\":\"291A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠃⠄\"}},\"key\":\"291B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠉⠄\"}},\"key\":\"291C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠙⠄\"}},\"key\":\"291D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠑⠄\"}},\"key\":\"291E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠂⠋⠄\"}},\"key\":\"291F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠴⠄\"}},\"key\":\"2920\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠂⠄\"}},\"key\":\"2921\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠆⠄\"}},\"key\":\"2922\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠒⠄\"}},\"key\":\"2923\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠲⠄\"}},\"key\":\"2924\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠢⠄\"}},\"key\":\"2925\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠖⠄\"}},\"key\":\"2926\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠶⠄\"}},\"key\":\"2927\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠦⠄\"}},\"key\":\"2928\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠔⠄\"}},\"key\":\"2929\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠁⠄\"}},\"key\":\"292A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠙⠄\"}},\"key\":\"292D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠑⠄\"}},\"key\":\"292E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠋⠄\"}},\"key\":\"292F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠴⠄\"}},\"key\":\"2930\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠂⠄\"}},\"key\":\"2931\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠆⠄\"}},\"key\":\"2932\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠒⠄\"}},\"key\":\"2933\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠲⠄\"}},\"key\":\"2934\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠢⠄\"}},\"key\":\"2935\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠖⠄\"}},\"key\":\"2936\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠶⠄\"}},\"key\":\"2937\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠦⠄\"}},\"key\":\"2938\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠔⠄\"}},\"key\":\"2939\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠁⠄\"}},\"key\":\"293A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠃⠄\"}},\"key\":\"293B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠉⠄\"}},\"key\":\"293C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠙⠄\"}},\"key\":\"293D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠑⠄\"}},\"key\":\"293E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠒⠋⠄\"}},\"key\":\"293F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠴⠄\"}},\"key\":\"2940\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠂⠄\"}},\"key\":\"2941\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠆⠄\"}},\"key\":\"2942\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠒⠄\"}},\"key\":\"2943\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠲⠄\"}},\"key\":\"2944\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠢⠄\"}},\"key\":\"2945\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠖⠄\"}},\"key\":\"2946\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠶⠄\"}},\"key\":\"2947\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠦⠄\"}},\"key\":\"2948\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠔⠄\"}},\"key\":\"2949\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠴⠄\"}},\"key\":\"2970\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠂⠄\"}},\"key\":\"2971\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠆⠄\"}},\"key\":\"2972\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠒⠄\"}},\"key\":\"2973\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠲⠄\"}},\"key\":\"2974\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠢⠄\"}},\"key\":\"2975\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠖⠄\"}},\"key\":\"2976\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠶⠄\"}},\"key\":\"2977\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠦⠄\"}},\"key\":\"2978\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠔⠄\"}},\"key\":\"2979\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠁⠄\"}},\"key\":\"297A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠃⠄\"}},\"key\":\"297B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠒⠄\"}},\"key\":\"29B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠲⠄\"}},\"key\":\"29B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠙⠄\"}},\"key\":\"29BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠁⠄\"}},\"key\":\"29EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠉⠄\"}},\"key\":\"29EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠙⠄\"}},\"key\":\"29ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠶⠄\"}},\"key\":\"2A17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠴⠄\"}},\"key\":\"2B00\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠂⠄\"}},\"key\":\"2B01\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠆⠄\"}},\"key\":\"2B02\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠒⠄\"}},\"key\":\"2B03\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠲⠄\"}},\"key\":\"2B04\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠢⠄\"}},\"key\":\"2B05\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠖⠄\"}},\"key\":\"2B06\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠶⠄\"}},\"key\":\"2B07\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠦⠄\"}},\"key\":\"2B08\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠔⠄\"}},\"key\":\"2B09\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠁⠄\"}},\"key\":\"2B0A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠃⠄\"}},\"key\":\"2B0B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠉⠄\"}},\"key\":\"2B0C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠙⠄\"}},\"key\":\"2B0D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠑⠄\"}},\"key\":\"2B0E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠴⠋⠄\"}},\"key\":\"2B0F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠴⠄\"}},\"key\":\"2B10\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠂⠄\"}},\"key\":\"2B11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠴⠄\"}},\"key\":\"2B30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠂⠄\"}},\"key\":\"2B31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠆⠄\"}},\"key\":\"2B32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠒⠄\"}},\"key\":\"2B33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠲⠄\"}},\"key\":\"2B34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠢⠄\"}},\"key\":\"2B35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠖⠄\"}},\"key\":\"2B36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠶⠄\"}},\"key\":\"2B37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠦⠄\"}},\"key\":\"2B38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠔⠄\"}},\"key\":\"2B39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠁⠄\"}},\"key\":\"2B3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠃⠄\"}},\"key\":\"2B3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠉⠄\"}},\"key\":\"2B3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠙⠄\"}},\"key\":\"2B3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠑⠄\"}},\"key\":\"2B3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠒⠋⠄\"}},\"key\":\"2B3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠴⠄\"}},\"key\":\"2B40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠂⠄\"}},\"key\":\"2B41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠆⠄\"}},\"key\":\"2B42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠒⠄\"}},\"key\":\"2B43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠲⠄\"}},\"key\":\"2B44\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠢⠄\"}},\"key\":\"2B45\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠖⠄\"}},\"key\":\"2B46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠶⠄\"}},\"key\":\"2B47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠦⠄\"}},\"key\":\"2B48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠔⠄\"}},\"key\":\"2B49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠁⠄\"}},\"key\":\"2B4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠃⠄\"}},\"key\":\"2B4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠲⠉⠄\"}},\"key\":\"2B4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠔⠄\"}},\"key\":\"FFE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠁⠄\"}},\"key\":\"FFEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠃⠄\"}},\"key\":\"FFEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠉⠄\"}},\"key\":\"FFEC\"}]\n,\n\"nemeth/symbols/math_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠈⠇\"}},\"key\":\"2113\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠦⠄\"}},\"key\":\"2118\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠉⠄\"}},\"key\":\"213C\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠙⠄\"}},\"key\":\"213D\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠑⠄\"}},\"key\":\"213E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠋⠄\"}},\"key\":\"213F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠴⠄\"}},\"key\":\"2140\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠢⠄\"}},\"key\":\"2145\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠙\"}},\"key\":\"2146\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠑\"}},\"key\":\"2147\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠦⠄\"}},\"key\":\"2148\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠔⠄\"}},\"key\":\"2149\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠲⠄\"}},\"key\":\"1D6A4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠽⠂⠙⠖⠁⠢⠄\"}},\"key\":\"1D6A5\"}]\n,\n\"nemeth/symbols/math_delimiters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠷\"}},\"key\":\"0028\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠾\"}},\"key\":\"0029\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠷\"}},\"key\":\"005B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠾\"}},\"key\":\"005D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠷\"}},\"key\":\"007B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠾\"}},\"key\":\"007D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠢⠄\"}},\"key\":\"2045\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠖⠄\"}},\"key\":\"2046\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"2308\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"2309\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"230A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"230B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠉⠄\"}},\"key\":\"230C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠙⠄\"}},\"key\":\"230D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠑⠄\"}},\"key\":\"230E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠋⠄\"}},\"key\":\"230F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"231C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"231D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠷\"}},\"key\":\"231E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠰⠾\"}},\"key\":\"231F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠴⠄\"}},\"key\":\"2320\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠆⠂⠄\"}},\"key\":\"2321\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"2329\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"232A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠃⠄\"}},\"key\":\"239B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠉⠄\"}},\"key\":\"239C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠙⠄\"}},\"key\":\"239D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠑⠄\"}},\"key\":\"239E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠔⠋⠄\"}},\"key\":\"239F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠴⠄\"}},\"key\":\"23A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠂⠄\"}},\"key\":\"23A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠆⠄\"}},\"key\":\"23A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠒⠄\"}},\"key\":\"23A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠲⠄\"}},\"key\":\"23A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠢⠄\"}},\"key\":\"23A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠖⠄\"}},\"key\":\"23A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠶⠄\"}},\"key\":\"23A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠦⠄\"}},\"key\":\"23A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠔⠄\"}},\"key\":\"23A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠁⠄\"}},\"key\":\"23AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠃⠄\"}},\"key\":\"23AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠉⠄\"}},\"key\":\"23AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠙⠄\"}},\"key\":\"23AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠑⠄\"}},\"key\":\"23AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠁⠋⠄\"}},\"key\":\"23AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠴⠄\"}},\"key\":\"23B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠂⠄\"}},\"key\":\"23B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠆⠄\"}},\"key\":\"23B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠒⠄\"}},\"key\":\"23B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠲⠄\"}},\"key\":\"23B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠢⠄\"}},\"key\":\"23B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠖⠄\"}},\"key\":\"23B6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠶⠄\"}},\"key\":\"23B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠦⠄\"}},\"key\":\"23B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠃⠔⠄\"}},\"key\":\"23B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠉⠄\"}},\"key\":\"23DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠙⠙⠄\"}},\"key\":\"23DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠷\"}},\"key\":\"23DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠨⠾\"}},\"key\":\"23DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠴⠄\"}},\"key\":\"23E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠂⠄\"}},\"key\":\"23E1\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠦⠄\"}},\"key\":\"2768\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠔⠄\"}},\"key\":\"2769\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠁⠄\"}},\"key\":\"276A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠃⠄\"}},\"key\":\"276B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠉⠄\"}},\"key\":\"276C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠙⠄\"}},\"key\":\"276D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠑⠄\"}},\"key\":\"276E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠖⠋⠄\"}},\"key\":\"276F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠴⠄\"}},\"key\":\"2770\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠂⠄\"}},\"key\":\"2771\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠆⠄\"}},\"key\":\"2772\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠒⠄\"}},\"key\":\"2773\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠲⠄\"}},\"key\":\"2774\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠶⠢⠄\"}},\"key\":\"2775\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠢⠄\"}},\"key\":\"27C5\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠖⠄\"}},\"key\":\"27C6\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠷\"}},\"key\":\"27E6\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠸⠾\"}},\"key\":\"27E7\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"27E8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"27E9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"27EA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"27EB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠉⠄\"}},\"key\":\"27EC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠙⠄\"}},\"key\":\"27ED\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠑⠄\"}},\"key\":\"27EE\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠋⠄\"}},\"key\":\"27EF\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠷\"}},\"key\":\"2983\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠸⠾\"}},\"key\":\"2984\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠢⠄\"}},\"key\":\"2985\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠖⠄\"}},\"key\":\"2986\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠶⠄\"}},\"key\":\"2987\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠦⠄\"}},\"key\":\"2988\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠔⠄\"}},\"key\":\"2989\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠁⠄\"}},\"key\":\"298A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠃⠄\"}},\"key\":\"298B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠉⠄\"}},\"key\":\"298C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠙⠄\"}},\"key\":\"298D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠑⠄\"}},\"key\":\"298E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠋⠄\"}},\"key\":\"298F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠴⠄\"}},\"key\":\"2990\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠂⠄\"}},\"key\":\"2991\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠆⠄\"}},\"key\":\"2992\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠒⠄\"}},\"key\":\"2993\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠲⠄\"}},\"key\":\"2994\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠢⠄\"}},\"key\":\"2995\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠖⠄\"}},\"key\":\"2996\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠶⠄\"}},\"key\":\"2997\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠦⠄\"}},\"key\":\"2998\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠦⠄\"}},\"key\":\"29D8\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠔⠄\"}},\"key\":\"29D9\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠁⠄\"}},\"key\":\"29DA\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠃⠄\"}},\"key\":\"29DB\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠉⠄\"}},\"key\":\"29FC\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠙⠄\"}},\"key\":\"29FD\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠆⠄\"}},\"key\":\"2E22\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠒⠄\"}},\"key\":\"2E23\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠲⠄\"}},\"key\":\"2E24\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠢⠄\"}},\"key\":\"2E25\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠖⠄\"}},\"key\":\"2E26\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠶⠄\"}},\"key\":\"2E27\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠦⠄\"}},\"key\":\"2E28\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠑⠆⠔⠄\"}},\"key\":\"2E29\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠷\"}},\"key\":\"3008\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠾\"}},\"key\":\"3009\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠷\"}},\"key\":\"300A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠨⠨⠨⠾\"}},\"key\":\"300B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠷\"}},\"key\":\"300C\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠈⠘⠾\"}},\"key\":\"300D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠑⠄\"}},\"key\":\"300E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠴⠋⠄\"}},\"key\":\"300F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠴⠄\"}},\"key\":\"3010\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠂⠄\"}},\"key\":\"3011\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠲⠄\"}},\"key\":\"3014\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠢⠄\"}},\"key\":\"3015\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠖⠄\"}},\"key\":\"3016\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠶⠄\"}},\"key\":\"3017\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠦⠄\"}},\"key\":\"3018\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠔⠄\"}},\"key\":\"3019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠁⠄\"}},\"key\":\"301A\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠃⠄\"}},\"key\":\"301B\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠙⠄\"}},\"key\":\"301D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠑⠄\"}},\"key\":\"301E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠋⠄\"}},\"key\":\"301F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠑⠄\"}},\"key\":\"FD3E\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠙⠒⠋⠄\"}},\"key\":\"FD3F\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠶⠄\"}},\"key\":\"FE17\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠦⠄\"}},\"key\":\"FE18\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠢⠄\"}},\"key\":\"FE35\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠖⠄\"}},\"key\":\"FE36\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠶⠄\"}},\"key\":\"FE37\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠦⠄\"}},\"key\":\"FE38\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠔⠄\"}},\"key\":\"FE39\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠁⠄\"}},\"key\":\"FE3A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠃⠄\"}},\"key\":\"FE3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠉⠄\"}},\"key\":\"FE3C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠙⠄\"}},\"key\":\"FE3D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠑⠄\"}},\"key\":\"FE3E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠋⠄\"}},\"key\":\"FE3F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠴⠄\"}},\"key\":\"FE40\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠂⠄\"}},\"key\":\"FE41\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠆⠄\"}},\"key\":\"FE42\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠒⠄\"}},\"key\":\"FE43\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠲⠄\"}},\"key\":\"FE44\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠶⠄\"}},\"key\":\"FE47\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠦⠄\"}},\"key\":\"FE48\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠔⠄\"}},\"key\":\"FE59\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠁⠄\"}},\"key\":\"FE5A\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠃⠄\"}},\"key\":\"FE5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠉⠄\"}},\"key\":\"FE5C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠙⠄\"}},\"key\":\"FE5D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠑⠄\"}},\"key\":\"FE5E\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠦⠄\"}},\"key\":\"FF08\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠔⠄\"}},\"key\":\"FF09\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠃⠄\"}},\"key\":\"FF3B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠙⠄\"}},\"key\":\"FF3D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠃⠄\"}},\"key\":\"FF5B\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠙⠄\"}},\"key\":\"FF5D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠋⠄\"}},\"key\":\"FF5F\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠴⠄\"}},\"key\":\"FF60\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠆⠄\"}},\"key\":\"FF62\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠖⠒⠄\"}},\"key\":\"FF63\"}]\n,\n\"nemeth/symbols/math_geometry.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠴⠄\"}},\"key\":\"2500\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠂⠄\"}},\"key\":\"2501\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠆⠄\"}},\"key\":\"2502\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠒⠄\"}},\"key\":\"2503\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠲⠄\"}},\"key\":\"2504\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠢⠄\"}},\"key\":\"2505\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠖⠄\"}},\"key\":\"2506\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠶⠄\"}},\"key\":\"2507\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠦⠄\"}},\"key\":\"2508\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠔⠄\"}},\"key\":\"2509\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠁⠄\"}},\"key\":\"250A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠃⠄\"}},\"key\":\"250B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠉⠄\"}},\"key\":\"250C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠙⠄\"}},\"key\":\"250D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠑⠄\"}},\"key\":\"250E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠴⠋⠄\"}},\"key\":\"250F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠴⠄\"}},\"key\":\"2510\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠂⠄\"}},\"key\":\"2511\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠆⠄\"}},\"key\":\"2512\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠒⠄\"}},\"key\":\"2513\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠲⠄\"}},\"key\":\"2514\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠢⠄\"}},\"key\":\"2515\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠖⠄\"}},\"key\":\"2516\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠶⠄\"}},\"key\":\"2517\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠦⠄\"}},\"key\":\"2518\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠔⠄\"}},\"key\":\"2519\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠁⠄\"}},\"key\":\"251A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠃⠄\"}},\"key\":\"251B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠉⠄\"}},\"key\":\"251C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠙⠄\"}},\"key\":\"251D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠑⠄\"}},\"key\":\"251E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠂⠋⠄\"}},\"key\":\"251F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠴⠄\"}},\"key\":\"2520\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠂⠄\"}},\"key\":\"2521\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠆⠄\"}},\"key\":\"2522\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠒⠄\"}},\"key\":\"2523\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠲⠄\"}},\"key\":\"2524\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠢⠄\"}},\"key\":\"2525\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠖⠄\"}},\"key\":\"2526\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠶⠄\"}},\"key\":\"2527\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠦⠄\"}},\"key\":\"2528\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠔⠄\"}},\"key\":\"2529\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠁⠄\"}},\"key\":\"252A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠃⠄\"}},\"key\":\"252B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠉⠄\"}},\"key\":\"252C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠙⠄\"}},\"key\":\"252D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠑⠄\"}},\"key\":\"252E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠆⠋⠄\"}},\"key\":\"252F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠴⠄\"}},\"key\":\"2530\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠂⠄\"}},\"key\":\"2531\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠆⠄\"}},\"key\":\"2532\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠒⠄\"}},\"key\":\"2533\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠲⠄\"}},\"key\":\"2534\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠢⠄\"}},\"key\":\"2535\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠖⠄\"}},\"key\":\"2536\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠶⠄\"}},\"key\":\"2537\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠦⠄\"}},\"key\":\"2538\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠔⠄\"}},\"key\":\"2539\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠁⠄\"}},\"key\":\"253A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠃⠄\"}},\"key\":\"253B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠉⠄\"}},\"key\":\"253C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠙⠄\"}},\"key\":\"253D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠑⠄\"}},\"key\":\"253E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠒⠋⠄\"}},\"key\":\"253F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠴⠄\"}},\"key\":\"2540\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠂⠄\"}},\"key\":\"2541\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠆⠄\"}},\"key\":\"2542\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠒⠄\"}},\"key\":\"2543\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠲⠄\"}},\"key\":\"2544\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠢⠄\"}},\"key\":\"2545\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠖⠄\"}},\"key\":\"2546\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠶⠄\"}},\"key\":\"2547\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠦⠄\"}},\"key\":\"2548\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠔⠄\"}},\"key\":\"2549\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠁⠄\"}},\"key\":\"254A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠃⠄\"}},\"key\":\"254B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠉⠄\"}},\"key\":\"254C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠙⠄\"}},\"key\":\"254D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠑⠄\"}},\"key\":\"254E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠲⠋⠄\"}},\"key\":\"254F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠴⠄\"}},\"key\":\"2550\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠂⠄\"}},\"key\":\"2551\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠆⠄\"}},\"key\":\"2552\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠒⠄\"}},\"key\":\"2553\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠲⠄\"}},\"key\":\"2554\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠢⠄\"}},\"key\":\"2555\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠖⠄\"}},\"key\":\"2556\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠶⠄\"}},\"key\":\"2557\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠦⠄\"}},\"key\":\"2558\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠔⠄\"}},\"key\":\"2559\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠁⠄\"}},\"key\":\"255A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠃⠄\"}},\"key\":\"255B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠉⠄\"}},\"key\":\"255C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠙⠄\"}},\"key\":\"255D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠑⠄\"}},\"key\":\"255E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠢⠋⠄\"}},\"key\":\"255F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠴⠄\"}},\"key\":\"2560\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠂⠄\"}},\"key\":\"2561\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠆⠄\"}},\"key\":\"2562\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠒⠄\"}},\"key\":\"2563\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠲⠄\"}},\"key\":\"2564\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠢⠄\"}},\"key\":\"2565\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠖⠄\"}},\"key\":\"2566\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠶⠄\"}},\"key\":\"2567\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠦⠄\"}},\"key\":\"2568\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠔⠄\"}},\"key\":\"2569\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠁⠄\"}},\"key\":\"256A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠃⠄\"}},\"key\":\"256B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠉⠄\"}},\"key\":\"256C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠙⠄\"}},\"key\":\"256D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠑⠄\"}},\"key\":\"256E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠖⠋⠄\"}},\"key\":\"256F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠴⠄\"}},\"key\":\"2570\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠂⠄\"}},\"key\":\"2571\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠆⠄\"}},\"key\":\"2572\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠒⠄\"}},\"key\":\"2573\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠲⠄\"}},\"key\":\"2574\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠢⠄\"}},\"key\":\"2575\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠖⠄\"}},\"key\":\"2576\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠶⠄\"}},\"key\":\"2577\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠦⠄\"}},\"key\":\"2578\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠔⠄\"}},\"key\":\"2579\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠁⠄\"}},\"key\":\"257A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠃⠄\"}},\"key\":\"257B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠉⠄\"}},\"key\":\"257C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠙⠄\"}},\"key\":\"257D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠑⠄\"}},\"key\":\"257E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠶⠋⠄\"}},\"key\":\"257F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠴⠄\"}},\"key\":\"2580\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠂⠄\"}},\"key\":\"2581\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠆⠄\"}},\"key\":\"2582\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠒⠄\"}},\"key\":\"2583\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠲⠄\"}},\"key\":\"2584\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠢⠄\"}},\"key\":\"2585\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠖⠄\"}},\"key\":\"2586\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠶⠄\"}},\"key\":\"2587\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠦⠄\"}},\"key\":\"2588\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠔⠄\"}},\"key\":\"2589\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠁⠄\"}},\"key\":\"258A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠃⠄\"}},\"key\":\"258B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠉⠄\"}},\"key\":\"258C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠙⠄\"}},\"key\":\"258D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠑⠄\"}},\"key\":\"258E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠦⠋⠄\"}},\"key\":\"258F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠴⠄\"}},\"key\":\"2590\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠂⠄\"}},\"key\":\"2591\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠆⠄\"}},\"key\":\"2592\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠒⠄\"}},\"key\":\"2593\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠲⠄\"}},\"key\":\"2594\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠢⠄\"}},\"key\":\"2595\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠖⠄\"}},\"key\":\"2596\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠶⠄\"}},\"key\":\"2597\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠦⠄\"}},\"key\":\"2598\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠔⠄\"}},\"key\":\"2599\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠁⠄\"}},\"key\":\"259A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠃⠄\"}},\"key\":\"259B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠉⠄\"}},\"key\":\"259C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠙⠄\"}},\"key\":\"259D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠑⠄\"}},\"key\":\"259E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠔⠋⠄\"}},\"key\":\"259F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠲\"}},\"key\":\"25A0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠲\"}},\"key\":\"25A1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠆⠄\"}},\"key\":\"25A2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠒⠄\"}},\"key\":\"25A3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠲⠄\"}},\"key\":\"25A4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠢⠄\"}},\"key\":\"25A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠖⠄\"}},\"key\":\"25A6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠶⠄\"}},\"key\":\"25A7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠦⠄\"}},\"key\":\"25A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠔⠄\"}},\"key\":\"25A9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠁⠄\"}},\"key\":\"25AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠗\"}},\"key\":\"25AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠗\"}},\"key\":\"25AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠙⠄\"}},\"key\":\"25AD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠑⠄\"}},\"key\":\"25AE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠁⠋⠄\"}},\"key\":\"25AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠛\"}},\"key\":\"25B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠛\"}},\"key\":\"25B1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠞\"}},\"key\":\"25B2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠞\"}},\"key\":\"25B3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠲⠄\"}},\"key\":\"25B4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠢⠄\"}},\"key\":\"25B5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠖⠄\"}},\"key\":\"25B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠶⠄\"}},\"key\":\"25B7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠦⠄\"}},\"key\":\"25B8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠔⠄\"}},\"key\":\"25B9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠁⠄\"}},\"key\":\"25BA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠃⠄\"}},\"key\":\"25BB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠨⠫\"}},\"key\":\"25BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠨⠫\"}},\"key\":\"25BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠑⠄\"}},\"key\":\"25BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠃⠋⠄\"}},\"key\":\"25BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠴⠄\"}},\"key\":\"25C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠂⠄\"}},\"key\":\"25C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠆⠄\"}},\"key\":\"25C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠒⠄\"}},\"key\":\"25C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠲⠄\"}},\"key\":\"25C4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠢⠄\"}},\"key\":\"25C5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠖⠄\"}},\"key\":\"25C6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠶⠄\"}},\"key\":\"25C7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠦⠄\"}},\"key\":\"25C8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠔⠄\"}},\"key\":\"25C9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠸⠉\"}},\"key\":\"25CA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠉\"}},\"key\":\"25CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠉⠄\"}},\"key\":\"25CC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠙⠄\"}},\"key\":\"25CD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠑⠄\"}},\"key\":\"25CE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠉⠋⠄\"}},\"key\":\"25CF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠴⠄\"}},\"key\":\"25D0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠂⠄\"}},\"key\":\"25D1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠆⠄\"}},\"key\":\"25D2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠒⠄\"}},\"key\":\"25D3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠲⠄\"}},\"key\":\"25D4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠢⠄\"}},\"key\":\"25D5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠖⠄\"}},\"key\":\"25D6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠶⠄\"}},\"key\":\"25D7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠦⠄\"}},\"key\":\"25D8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠔⠄\"}},\"key\":\"25D9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠁⠄\"}},\"key\":\"25DA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠃⠄\"}},\"key\":\"25DB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠉⠄\"}},\"key\":\"25DC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠙⠄\"}},\"key\":\"25DD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠑⠄\"}},\"key\":\"25DE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠙⠋⠄\"}},\"key\":\"25DF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠴⠄\"}},\"key\":\"25E0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠂⠄\"}},\"key\":\"25E1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠆⠄\"}},\"key\":\"25E2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠒⠄\"}},\"key\":\"25E3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠲⠄\"}},\"key\":\"25E4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠢⠄\"}},\"key\":\"25E5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠖⠄\"}},\"key\":\"25E6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠶⠄\"}},\"key\":\"25E7\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠦⠄\"}},\"key\":\"25E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠔⠄\"}},\"key\":\"25E9\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠁⠄\"}},\"key\":\"25EA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠃⠄\"}},\"key\":\"25EB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠉⠄\"}},\"key\":\"25EC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠙⠄\"}},\"key\":\"25ED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠑⠄\"}},\"key\":\"25EE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠑⠋⠄\"}},\"key\":\"25EF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠴⠄\"}},\"key\":\"25F0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠂⠄\"}},\"key\":\"25F1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠆⠄\"}},\"key\":\"25F2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠒⠄\"}},\"key\":\"25F3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠲⠄\"}},\"key\":\"25F4\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠢⠄\"}},\"key\":\"25F5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠖⠄\"}},\"key\":\"25F6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠶⠄\"}},\"key\":\"25F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠦⠄\"}},\"key\":\"25F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠔⠄\"}},\"key\":\"25F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠁⠄\"}},\"key\":\"25FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠃⠄\"}},\"key\":\"25FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠉⠄\"}},\"key\":\"25FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠙⠄\"}},\"key\":\"25FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠑⠄\"}},\"key\":\"25FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠢⠋⠋⠄\"}},\"key\":\"25FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠆⠄\"}},\"key\":\"2B12\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠒⠄\"}},\"key\":\"2B13\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠲⠄\"}},\"key\":\"2B14\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠢⠄\"}},\"key\":\"2B15\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠖⠄\"}},\"key\":\"2B16\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠶⠄\"}},\"key\":\"2B17\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠦⠄\"}},\"key\":\"2B18\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠔⠄\"}},\"key\":\"2B19\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠁⠄\"}},\"key\":\"2B1A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠃⠄\"}},\"key\":\"2B1B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠉⠄\"}},\"key\":\"2B1C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠙⠄\"}},\"key\":\"2B1D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠑⠄\"}},\"key\":\"2B1E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠂⠋⠄\"}},\"key\":\"2B1F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠴⠄\"}},\"key\":\"2B20\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠂⠄\"}},\"key\":\"2B21\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠆⠄\"}},\"key\":\"2B22\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠒⠄\"}},\"key\":\"2B23\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠲⠄\"}},\"key\":\"2B24\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠢⠄\"}},\"key\":\"2B25\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠖⠄\"}},\"key\":\"2B26\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠶⠄\"}},\"key\":\"2B27\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠦⠄\"}},\"key\":\"2B28\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠔⠄\"}},\"key\":\"2B29\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠁⠄\"}},\"key\":\"2B2A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠃⠄\"}},\"key\":\"2B2B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠉⠄\"}},\"key\":\"2B2C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠙⠄\"}},\"key\":\"2B2D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠑⠄\"}},\"key\":\"2B2E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠆⠋⠄\"}},\"key\":\"2B2F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠴⠄\"}},\"key\":\"2B50\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠂⠄\"}},\"key\":\"2B51\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠆⠄\"}},\"key\":\"2B52\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠒⠄\"}},\"key\":\"2B53\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠲⠄\"}},\"key\":\"2B54\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠢⠄\"}},\"key\":\"2B55\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠖⠄\"}},\"key\":\"2B56\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠶⠄\"}},\"key\":\"2B57\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠦⠄\"}},\"key\":\"2B58\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠃⠢⠔⠄\"}},\"key\":\"2B59\"}]\n,\n\"nemeth/symbols/math_harpoons.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21BC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠠⠪⠒⠒⠀\"}},\"key\":\"21BD\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠠⠕⠀\"}},\"key\":\"21BE\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠣⠒⠒⠈⠕⠀\"}},\"key\":\"21BF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21C0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠠⠕⠀\"}},\"key\":\"21C1\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠪⠒⠒⠈⠕⠀\"}},\"key\":\"21C2\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠩⠒⠒⠠⠕⠀\"}},\"key\":\"21C3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠈⠪⠒⠒⠫⠒⠒⠈⠕⠀\"}},\"key\":\"21CB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠒⠒⠈⠕⠫⠈⠪⠒⠒⠀\"}},\"key\":\"21CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠁⠄\"}},\"key\":\"294A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠃⠄\"}},\"key\":\"294B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠉⠄\"}},\"key\":\"294C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠙⠄\"}},\"key\":\"294D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠑⠄\"}},\"key\":\"294E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠲⠋⠄\"}},\"key\":\"294F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠴⠄\"}},\"key\":\"2950\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠂⠄\"}},\"key\":\"2951\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠆⠄\"}},\"key\":\"2952\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠒⠄\"}},\"key\":\"2953\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠲⠄\"}},\"key\":\"2954\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠢⠄\"}},\"key\":\"2955\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠖⠄\"}},\"key\":\"2956\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠶⠄\"}},\"key\":\"2957\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠦⠄\"}},\"key\":\"2958\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠔⠄\"}},\"key\":\"2959\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠁⠄\"}},\"key\":\"295A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠃⠄\"}},\"key\":\"295B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠉⠄\"}},\"key\":\"295C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠙⠄\"}},\"key\":\"295D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠑⠄\"}},\"key\":\"295E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠢⠋⠄\"}},\"key\":\"295F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠴⠄\"}},\"key\":\"2960\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠂⠄\"}},\"key\":\"2961\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠆⠄\"}},\"key\":\"2962\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠒⠄\"}},\"key\":\"2963\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠲⠄\"}},\"key\":\"2964\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠢⠄\"}},\"key\":\"2965\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠖⠄\"}},\"key\":\"2966\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠶⠄\"}},\"key\":\"2967\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠦⠄\"}},\"key\":\"2968\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠔⠄\"}},\"key\":\"2969\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠁⠄\"}},\"key\":\"296A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠃⠄\"}},\"key\":\"296B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠉⠄\"}},\"key\":\"296C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠙⠄\"}},\"key\":\"296D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠑⠄\"}},\"key\":\"296E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠖⠋⠄\"}},\"key\":\"296F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠉⠄\"}},\"key\":\"297C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠙⠄\"}},\"key\":\"297D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠑⠄\"}},\"key\":\"297E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠶⠋⠄\"}},\"key\":\"297F\"}]\n,\n\"nemeth/symbols/math_non_characters.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠴⠋⠄\"}},\"key\":\"210F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2114\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠖⠄\"}},\"key\":\"2116\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠶⠄\"}},\"key\":\"2117\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠑⠄\"}},\"key\":\"211E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠂⠋⠄\"}},\"key\":\"211F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠴⠄\"}},\"key\":\"2120\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠂⠄\"}},\"key\":\"2121\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠞\"}},\"key\":\"2122\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠒⠄\"}},\"key\":\"2123\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠢⠄\"}},\"key\":\"2125\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠖⠄\"}},\"key\":\"2126\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠶⠄\"}},\"key\":\"2127\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠁⠄\"}},\"key\":\"212A\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠠⠁\"}},\"key\":\"212B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠆⠑⠄\"}},\"key\":\"212E\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠆⠄\"}},\"key\":\"2132\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠔⠄\"}},\"key\":\"2139\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠁⠄\"}},\"key\":\"213A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠒⠃⠄\"}},\"key\":\"213B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠂⠄\"}},\"key\":\"2141\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠆⠄\"}},\"key\":\"2142\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠒⠄\"}},\"key\":\"2143\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠲⠄\"}},\"key\":\"2144\"}]\n,\n\"nemeth/symbols/math_symbols.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"0021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹\"}},\"key\":\"0022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨⠼\"}},\"key\":\"0023\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠎\"}},\"key\":\"0024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠴\"}},\"key\":\"0025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠯\"}},\"key\":\"0026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"0027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"002A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"002B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠠\",\"defaultLibLouis\":\"⠠⠀\"}},\"key\":\"002C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"002D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠨\",\"other\":\"⠲\"}},\"key\":\"002E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"002F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠒\"}},\"key\":\"003A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠆\"}},\"key\":\"003B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠀\"}},\"key\":\"003C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠅⠀\"}},\"key\":\"003D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠀\"}},\"key\":\"003E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠦\"}},\"key\":\"003F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠁\"}},\"key\":\"0040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"005C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⡘\"}},\"key\":\"005E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠸\"}},\"key\":\"005F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"0060\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"007C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"007E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖\"}},\"key\":\"00A1\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠈⠉\"}},\"key\":\"00A2\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠼\"}},\"key\":\"00A3\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠫\"}},\"key\":\"00A4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠢⠄\"}},\"key\":\"00A5\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠸⠳\"}},\"key\":\"00A6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠈⠠⠎\"}},\"key\":\"00A7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠦⠄\"}},\"key\":\"00A8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠉\"}},\"key\":\"00A9\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠁⠄\"}},\"key\":\"00AA\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠃⠄\"}},\"key\":\"00AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠁⠉⠄\"}},\"key\":\"00AC\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠗\"}},\"key\":\"00AE\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"00AF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"00B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠬⠤\"}},\"key\":\"00B1\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈\"}},\"key\":\"00B4\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠨⠍\"}},\"key\":\"00B5\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠖⠄\"}},\"key\":\"00B6\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"00B7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠦⠄\"}},\"key\":\"00B8\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠁⠄\"}},\"key\":\"00BA\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠴⠃⠃⠄\"}},\"key\":\"00BB\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"00BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"00D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠌\"}},\"key\":\"00F7\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠦⠄\"}},\"key\":\"02D8\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠔⠄\"}},\"key\":\"02D9\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠁⠄\"}},\"key\":\"02DA\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠃⠄\"}},\"key\":\"02DB\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"02DC\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠴⠆⠙⠙⠄\"}},\"key\":\"02DD\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2010\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2011\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2012\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2013\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2014\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠤⠤\"}},\"key\":\"2015\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠳⠳\"}},\"key\":\"2016\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠶⠄\"}},\"key\":\"2017\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠠⠦\"}},\"key\":\"2018\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2019\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠁⠄\"}},\"key\":\"201A\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠃⠄\"}},\"key\":\"201B\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠦\"}},\"key\":\"201C\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠴\"}},\"key\":\"201D\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠑⠄\"}},\"key\":\"201E\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠂⠋⠄\"}},\"key\":\"201F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠻\"}},\"key\":\"2020\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠸⠸⠻\"}},\"key\":\"2021\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠔⠔\"}},\"key\":\"2022\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠒⠄\"}},\"key\":\"2023\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2024\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2025\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2026\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠶⠄\"}},\"key\":\"2027\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠴⠄\"}},\"key\":\"2030\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠂⠄\"}},\"key\":\"2031\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄\"}},\"key\":\"2032\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄\"}},\"key\":\"2033\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"2034\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠢⠄\"}},\"key\":\"2035\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠖⠄\"}},\"key\":\"2036\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠶⠄\"}},\"key\":\"2037\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠦⠄\"}},\"key\":\"2038\"},{\"category\":\"Pi\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠔⠄\"}},\"key\":\"2039\"},{\"category\":\"Pf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠁⠄\"}},\"key\":\"203A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠃⠄\"}},\"key\":\"203B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠖\"}},\"key\":\"203C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠙⠄\"}},\"key\":\"203D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"203E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠒⠋⠄\"}},\"key\":\"203F\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠴⠄\"}},\"key\":\"2040\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠂⠄\"}},\"key\":\"2041\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠆⠄\"}},\"key\":\"2042\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠒⠄\"}},\"key\":\"2043\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠲⠄\"}},\"key\":\"2044\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠹\"}},\"key\":\"2047\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠹⠖\"}},\"key\":\"2048\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠖⠹\"}},\"key\":\"2049\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠃⠄\"}},\"key\":\"204B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠉⠄\"}},\"key\":\"204C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠙⠄\"}},\"key\":\"204D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠑⠄\"}},\"key\":\"204E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠲⠋⠄\"}},\"key\":\"204F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠴⠄\"}},\"key\":\"2050\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠂⠄\"}},\"key\":\"2051\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠆⠄\"}},\"key\":\"2052\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠒⠄\"}},\"key\":\"2053\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠲⠄\"}},\"key\":\"2054\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠢⠄\"}},\"key\":\"2055\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠖⠄\"}},\"key\":\"2056\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠶⠄\"}},\"key\":\"2057\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠦⠄\"}},\"key\":\"2058\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠔⠄\"}},\"key\":\"2059\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠁⠄\"}},\"key\":\"205A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠃⠄\"}},\"key\":\"205B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠉⠄\"}},\"key\":\"205C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠙⠄\"}},\"key\":\"205D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠢⠑⠄\"}},\"key\":\"205E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠁⠄\"}},\"key\":\"207A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠃⠄\"}},\"key\":\"207B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠉⠄\"}},\"key\":\"207C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠙⠄\"}},\"key\":\"207D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠶⠑⠄\"}},\"key\":\"207E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠁⠄\"}},\"key\":\"208A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠃⠄\"}},\"key\":\"208B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠉⠄\"}},\"key\":\"208C\"},{\"category\":\"Ps\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠙⠄\"}},\"key\":\"208D\"},{\"category\":\"Pe\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠦⠑⠄\"}},\"key\":\"208E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠁⠄\"}},\"key\":\"214A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠃⠄\"}},\"key\":\"214B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠉⠄\"}},\"key\":\"214C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠙⠄\"}},\"key\":\"214D\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠂⠲⠑⠄\"}},\"key\":\"214E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠯\"}},\"key\":\"2200\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠂⠄\"}},\"key\":\"2201\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠿\"}},\"key\":\"2203\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠈⠿\"}},\"key\":\"2204\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠴\"}},\"key\":\"2205\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠖⠄\"}},\"key\":\"2206\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"2208\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠑⠀\"}},\"key\":\"2209\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠑⠀\"}},\"key\":\"220A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠁⠀\"}},\"key\":\"220B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠁⠀\"}},\"key\":\"220C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠢⠀\"}},\"key\":\"220D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠳⠀\"}},\"key\":\"220E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠴⠋⠄\"}},\"key\":\"220F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠴⠄\"}},\"key\":\"2210\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠎\"}},\"key\":\"2211\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"2212\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠤⠬\"}},\"key\":\"2213\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠲⠄\"}},\"key\":\"2214\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠌\"}},\"key\":\"2215\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠡\"}},\"key\":\"2216\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠼\"}},\"key\":\"2217\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠨⠡\"}},\"key\":\"2218\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠔⠄\"}},\"key\":\"2219\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠁⠄\"}},\"key\":\"221A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠃⠄\"}},\"key\":\"221B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠂⠉⠄\"}},\"key\":\"221C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠰⠆⠀\"}},\"key\":\"221D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠠⠿\"}},\"key\":\"221E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠨⠗⠻\"}},\"key\":\"221F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪\"}},\"key\":\"2220\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2221\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠪⠸⠫⠫⠁⠻\"}},\"key\":\"2222\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳\"}},\"key\":\"2223\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠌⠳\"}},\"key\":\"2224\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠇⠀\"}},\"key\":\"2225\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠫⠇⠀\"}},\"key\":\"2226\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"2227\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"2228\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"2229\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"222A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮\"}},\"key\":\"222B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮\"}},\"key\":\"222C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠮⠮\"}},\"key\":\"222D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠉⠻\"}},\"key\":\"222E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠆⠋⠄\"}},\"key\":\"222F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠴⠄\"}},\"key\":\"2230\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠂⠄\"}},\"key\":\"2231\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠪⠢⠔⠻\"}},\"key\":\"2232\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠮⠈⠫⠢⠔⠕⠻\"}},\"key\":\"2233\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠠⠡⠀\"}},\"key\":\"2234\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠌⠀\"}},\"key\":\"2235\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠂⠀\"}},\"key\":\"2236\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠶⠄\"}},\"key\":\"2237\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠦⠄\"}},\"key\":\"2238\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠔⠄\"}},\"key\":\"2239\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠁⠄\"}},\"key\":\"223A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠃⠄\"}},\"key\":\"223B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"223C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠙⠄\"}},\"key\":\"223D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠑⠄\"}},\"key\":\"223E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠒⠋⠄\"}},\"key\":\"223F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠴⠄\"}},\"key\":\"2240\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠂⠄\"}},\"key\":\"2241\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠆⠄\"}},\"key\":\"2242\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠒⠄\"}},\"key\":\"2243\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠲⠄\"}},\"key\":\"2244\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠱⠈⠱⠀\"}},\"key\":\"2245\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠖⠄\"}},\"key\":\"2246\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠶⠄\"}},\"key\":\"2247\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠦⠄\"}},\"key\":\"2248\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠔⠄\"}},\"key\":\"2249\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠁⠄\"}},\"key\":\"224A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠃⠄\"}},\"key\":\"224B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠉⠄\"}},\"key\":\"224C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠈⠣⠠⠣⠀\"}},\"key\":\"224D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠑⠄\"}},\"key\":\"224E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠲⠋⠄\"}},\"key\":\"224F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠴⠄\"}},\"key\":\"2250\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠂⠄\"}},\"key\":\"2251\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠆⠄\"}},\"key\":\"2252\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠒⠄\"}},\"key\":\"2253\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠲⠄\"}},\"key\":\"2254\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠢⠄\"}},\"key\":\"2255\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠖⠄\"}},\"key\":\"2256\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠶⠄\"}},\"key\":\"2257\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠦⠄\"}},\"key\":\"2258\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠔⠄\"}},\"key\":\"2259\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠁⠄\"}},\"key\":\"225A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠃⠄\"}},\"key\":\"225B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠉⠄\"}},\"key\":\"225C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠙⠄\"}},\"key\":\"225D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠑⠄\"}},\"key\":\"225E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠢⠋⠄\"}},\"key\":\"225F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠅⠀\"}},\"key\":\"2260\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠇⠀\"}},\"key\":\"2261\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠇⠀\"}},\"key\":\"2262\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠒⠄\"}},\"key\":\"2263\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠱⠀\"}},\"key\":\"2264\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2265\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠅⠀\"}},\"key\":\"2266\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠨⠅⠀\"}},\"key\":\"2267\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2268\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠌⠨⠅⠀\"}},\"key\":\"2269\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠐⠅⠻⠀\"}},\"key\":\"226A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠨⠂⠻⠀\"}},\"key\":\"226B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠖⠉⠄\"}},\"key\":\"226C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠈⠣⠠⠣⠀\"}},\"key\":\"226D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠀\"}},\"key\":\"226E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠀\"}},\"key\":\"226F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠱⠀\"}},\"key\":\"2270\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2271\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠈⠱⠀\"}},\"key\":\"2272\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠈⠱⠀\"}},\"key\":\"2273\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠈⠱⠀\"}},\"key\":\"2274\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠈⠱⠀\"}},\"key\":\"2275\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠐⠅⠨⠂⠀\"}},\"key\":\"2276\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠐⠅⠀\"}},\"key\":\"2277\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠐⠅⠨⠂⠀\"}},\"key\":\"2278\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠐⠅⠀\"}},\"key\":\"2279\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠀\"}},\"key\":\"227A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠀\"}},\"key\":\"227B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"227C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"227D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠀\"}},\"key\":\"227E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠀\"}},\"key\":\"227F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2280\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠐⠅⠀\"}},\"key\":\"2281\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠀\"}},\"key\":\"2282\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠀\"}},\"key\":\"2283\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠐⠅⠀\"}},\"key\":\"2284\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠸⠨⠂⠀\"}},\"key\":\"2285\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠸⠀⠅⠱\"}},\"key\":\"2286\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠂⠱⠀\"}},\"key\":\"2287\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠀⠅⠱⠀\"}},\"key\":\"2288\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠌⠨⠂⠱⠀\"}},\"key\":\"2289\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠐⠅⠌⠨⠅⠀\"}},\"key\":\"228A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠸⠨⠂⠌⠨⠅⠀\"}},\"key\":\"228B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠉⠄\"}},\"key\":\"228C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠙⠄\"}},\"key\":\"228D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠑⠄\"}},\"key\":\"228E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠦⠋⠄\"}},\"key\":\"228F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠴⠄\"}},\"key\":\"2290\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠂⠄\"}},\"key\":\"2291\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠆⠄\"}},\"key\":\"2292\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠒⠄\"}},\"key\":\"2293\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠔⠲⠄\"}},\"key\":\"2294\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2295\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠻\"}},\"key\":\"2296\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2297\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠌⠻\"}},\"key\":\"2298\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2299\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠘⠨⠡⠻\"}},\"key\":\"229A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠼⠻\"}},\"key\":\"229B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠅⠻\"}},\"key\":\"229C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠤⠤⠻\"}},\"key\":\"229D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠬⠻\"}},\"key\":\"229E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠤⠻\"}},\"key\":\"229F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠈⠡⠻\"}},\"key\":\"22A0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠲⠸⠫⠡⠻\"}},\"key\":\"22A1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠆⠄\"}},\"key\":\"22A2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠒⠄\"}},\"key\":\"22A3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠲⠄\"}},\"key\":\"22A4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠫⠏⠀\"}},\"key\":\"22A5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠖⠄\"}},\"key\":\"22A6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠶⠄\"}},\"key\":\"22A7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠦⠄\"}},\"key\":\"22A8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠔⠄\"}},\"key\":\"22A9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠁⠄\"}},\"key\":\"22AA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠃⠄\"}},\"key\":\"22AB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠉⠄\"}},\"key\":\"22AC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠙⠄\"}},\"key\":\"22AD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠑⠄\"}},\"key\":\"22AE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠁⠋⠄\"}},\"key\":\"22AF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠴⠄\"}},\"key\":\"22B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠂⠄\"}},\"key\":\"22B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠆⠄\"}},\"key\":\"22B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠒⠄\"}},\"key\":\"22B3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠲⠄\"}},\"key\":\"22B4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠢⠄\"}},\"key\":\"22B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠖⠄\"}},\"key\":\"22B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠶⠄\"}},\"key\":\"22B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠦⠄\"}},\"key\":\"22B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠔⠄\"}},\"key\":\"22B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠁⠄\"}},\"key\":\"22BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠃⠄\"}},\"key\":\"22BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠉⠄\"}},\"key\":\"22BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠙⠄\"}},\"key\":\"22BD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠃⠋⠄\"}},\"key\":\"22BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠩\"}},\"key\":\"22C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠬\"}},\"key\":\"22C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠩\"}},\"key\":\"22C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠨⠬\"}},\"key\":\"22C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠲⠄\"}},\"key\":\"22C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠡\"}},\"key\":\"22C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠖⠄\"}},\"key\":\"22C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠶⠄\"}},\"key\":\"22C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠦⠄\"}},\"key\":\"22C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠔⠄\"}},\"key\":\"22C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠁⠄\"}},\"key\":\"22CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠃⠄\"}},\"key\":\"22CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠉⠄\"}},\"key\":\"22CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠙⠄\"}},\"key\":\"22CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠑⠄\"}},\"key\":\"22CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠉⠋⠄\"}},\"key\":\"22CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠴⠄\"}},\"key\":\"22D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠂⠄\"}},\"key\":\"22D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠆⠄\"}},\"key\":\"22D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠒⠄\"}},\"key\":\"22D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠲⠄\"}},\"key\":\"22D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠢⠄\"}},\"key\":\"22D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠖⠄\"}},\"key\":\"22D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠶⠄\"}},\"key\":\"22D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠦⠄\"}},\"key\":\"22D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠔⠄\"}},\"key\":\"22D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠁⠄\"}},\"key\":\"22DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠃⠄\"}},\"key\":\"22DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠐⠅⠀\"}},\"key\":\"22DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠱⠨⠂⠀\"}},\"key\":\"22DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠑⠄\"}},\"key\":\"22DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠙⠋⠄\"}},\"key\":\"22DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠴⠄\"}},\"key\":\"22E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠂⠄\"}},\"key\":\"22E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠆⠄\"}},\"key\":\"22E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠒⠄\"}},\"key\":\"22E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠲⠄\"}},\"key\":\"22E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠢⠄\"}},\"key\":\"22E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠖⠄\"}},\"key\":\"22E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠶⠄\"}},\"key\":\"22E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠦⠄\"}},\"key\":\"22E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠔⠄\"}},\"key\":\"22E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠁⠄\"}},\"key\":\"22EA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠃⠄\"}},\"key\":\"22EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠉⠄\"}},\"key\":\"22EC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠑⠙⠄\"}},\"key\":\"22ED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠣⠄⠄⠄\"}},\"key\":\"22EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⠄⠄\"}},\"key\":\"22EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠘⠄⠄⠄\"}},\"key\":\"22F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠰⠄⠄⠄\"}},\"key\":\"22F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠆⠄\"}},\"key\":\"22F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠒⠄\"}},\"key\":\"22F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠲⠄\"}},\"key\":\"22F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠢⠄\"}},\"key\":\"22F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠖⠄\"}},\"key\":\"22F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠶⠄\"}},\"key\":\"22F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠦⠄\"}},\"key\":\"22F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠔⠄\"}},\"key\":\"22F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠁⠄\"}},\"key\":\"22FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠃⠄\"}},\"key\":\"22FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠉⠄\"}},\"key\":\"22FC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠙⠄\"}},\"key\":\"22FD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠑⠄\"}},\"key\":\"22FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠆⠋⠋⠄\"}},\"key\":\"22FF\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠴⠄\"}},\"key\":\"2300\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠆⠄\"}},\"key\":\"2302\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠢⠄\"}},\"key\":\"2305\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠖⠄\"}},\"key\":\"2306\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠴⠶⠄\"}},\"key\":\"2307\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠴⠄\"}},\"key\":\"2310\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠂⠄\"}},\"key\":\"2311\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠆⠄\"}},\"key\":\"2312\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠒⠄\"}},\"key\":\"2313\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠂⠲⠄\"}},\"key\":\"2314\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠢⠄\"}},\"key\":\"2795\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠖⠄\"}},\"key\":\"2796\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠔⠶⠄\"}},\"key\":\"2797\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠴⠄\"}},\"key\":\"27B0\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠃⠋⠄\"}},\"key\":\"27BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠂⠄\"}},\"key\":\"27C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠏\"}},\"key\":\"27C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠒⠄\"}},\"key\":\"27C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠲⠄\"}},\"key\":\"27C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠶⠄\"}},\"key\":\"27C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠦⠄\"}},\"key\":\"27C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠔⠄\"}},\"key\":\"27C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠁⠄\"}},\"key\":\"27CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠃⠄\"}},\"key\":\"27CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠉⠄\"}},\"key\":\"27CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠙⠄\"}},\"key\":\"27CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠑⠄\"}},\"key\":\"27CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠉⠋⠄\"}},\"key\":\"27CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠴⠄\"}},\"key\":\"27D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠂⠄\"}},\"key\":\"27D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠆⠄\"}},\"key\":\"27D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠒⠄\"}},\"key\":\"27D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠲⠄\"}},\"key\":\"27D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠢⠄\"}},\"key\":\"27D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠖⠄\"}},\"key\":\"27D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠶⠄\"}},\"key\":\"27D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠦⠄\"}},\"key\":\"27D8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠔⠄\"}},\"key\":\"27D9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠁⠄\"}},\"key\":\"27DA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠃⠄\"}},\"key\":\"27DB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠉⠄\"}},\"key\":\"27DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠙⠄\"}},\"key\":\"27DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠑⠄\"}},\"key\":\"27DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠙⠋⠄\"}},\"key\":\"27DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠴⠄\"}},\"key\":\"27E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠂⠄\"}},\"key\":\"27E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠆⠄\"}},\"key\":\"27E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠒⠄\"}},\"key\":\"27E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠲⠄\"}},\"key\":\"27E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠑⠢⠄\"}},\"key\":\"27E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠃⠄\"}},\"key\":\"292B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠆⠉⠄\"}},\"key\":\"292C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠳⠳⠳\"}},\"key\":\"2980\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠂⠄\"}},\"key\":\"2981\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠦⠆⠄\"}},\"key\":\"2982\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠔⠄\"}},\"key\":\"2999\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠔⠁⠄\"}},\"key\":\"299A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠴⠄\"}},\"key\":\"29B0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠂⠄\"}},\"key\":\"29B1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠆⠄\"}},\"key\":\"29B2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠢⠄\"}},\"key\":\"29B5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠳⠻\"}},\"key\":\"29B6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠇⠻\"}},\"key\":\"29B7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠸⠡⠻\"}},\"key\":\"29B8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠫⠏⠻\"}},\"key\":\"29B9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠁⠄\"}},\"key\":\"29BA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠃⠄\"}},\"key\":\"29BB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠉⠄\"}},\"key\":\"29BC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠃⠑⠄\"}},\"key\":\"29BE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠔⠔⠻\"}},\"key\":\"29BF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠐⠅⠻\"}},\"key\":\"29C0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠨⠂⠻\"}},\"key\":\"29C1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠆⠄\"}},\"key\":\"29C2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠒⠄\"}},\"key\":\"29C3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠲⠄\"}},\"key\":\"29C4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠢⠄\"}},\"key\":\"29C5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠖⠄\"}},\"key\":\"29C6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠶⠄\"}},\"key\":\"29C7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠦⠄\"}},\"key\":\"29C8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠔⠄\"}},\"key\":\"29C9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠁⠄\"}},\"key\":\"29CA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠃⠄\"}},\"key\":\"29CB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠉⠄\"}},\"key\":\"29CC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠙⠄\"}},\"key\":\"29CD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠑⠄\"}},\"key\":\"29CE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠉⠋⠄\"}},\"key\":\"29CF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠴⠄\"}},\"key\":\"29D0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠂⠄\"}},\"key\":\"29D1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠆⠄\"}},\"key\":\"29D2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠒⠄\"}},\"key\":\"29D3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠲⠄\"}},\"key\":\"29D4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠢⠄\"}},\"key\":\"29D5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠖⠄\"}},\"key\":\"29D6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠶⠄\"}},\"key\":\"29D7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠉⠄\"}},\"key\":\"29DC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠙⠄\"}},\"key\":\"29DD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠑⠄\"}},\"key\":\"29DE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠙⠋⠄\"}},\"key\":\"29DF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠴⠄\"}},\"key\":\"29E0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠂⠄\"}},\"key\":\"29E1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠆⠄\"}},\"key\":\"29E2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠒⠄\"}},\"key\":\"29E3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠲⠄\"}},\"key\":\"29E4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠢⠄\"}},\"key\":\"29E5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠖⠄\"}},\"key\":\"29E6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠶⠄\"}},\"key\":\"29E7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠦⠄\"}},\"key\":\"29E8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠔⠄\"}},\"key\":\"29E9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠃⠄\"}},\"key\":\"29EB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠑⠄\"}},\"key\":\"29EE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠑⠋⠄\"}},\"key\":\"29EF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠴⠄\"}},\"key\":\"29F0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠂⠄\"}},\"key\":\"29F1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠆⠄\"}},\"key\":\"29F2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠒⠄\"}},\"key\":\"29F3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠲⠄\"}},\"key\":\"29F4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠢⠄\"}},\"key\":\"29F5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠖⠄\"}},\"key\":\"29F6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠶⠄\"}},\"key\":\"29F7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠦⠄\"}},\"key\":\"29F8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠔⠄\"}},\"key\":\"29F9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠁⠄\"}},\"key\":\"29FA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠃⠄\"}},\"key\":\"29FB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠑⠄\"}},\"key\":\"29FE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠔⠋⠋⠄\"}},\"key\":\"29FF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠡⠻\"}},\"key\":\"2A00\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠬⠻\"}},\"key\":\"2A01\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠡⠻\"}},\"key\":\"2A02\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠒⠄\"}},\"key\":\"2A03\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠲⠄\"}},\"key\":\"2A04\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠢⠄\"}},\"key\":\"2A05\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠖⠄\"}},\"key\":\"2A06\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠶⠄\"}},\"key\":\"2A07\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠦⠄\"}},\"key\":\"2A08\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠔⠄\"}},\"key\":\"2A09\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠁⠄\"}},\"key\":\"2A0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠃⠄\"}},\"key\":\"2A0B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠉⠄\"}},\"key\":\"2A0C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠙⠄\"}},\"key\":\"2A0D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠑⠄\"}},\"key\":\"2A0E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠴⠋⠄\"}},\"key\":\"2A0F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠴⠄\"}},\"key\":\"2A10\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠂⠄\"}},\"key\":\"2A11\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠆⠄\"}},\"key\":\"2A12\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠒⠄\"}},\"key\":\"2A13\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠲⠄\"}},\"key\":\"2A14\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠢⠄\"}},\"key\":\"2A15\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠖⠄\"}},\"key\":\"2A16\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠦⠄\"}},\"key\":\"2A18\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠔⠄\"}},\"key\":\"2A19\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠁⠄\"}},\"key\":\"2A1A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠃⠄\"}},\"key\":\"2A1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠉⠄\"}},\"key\":\"2A1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠙⠄\"}},\"key\":\"2A1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠑⠄\"}},\"key\":\"2A1E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠂⠋⠄\"}},\"key\":\"2A1F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠴⠄\"}},\"key\":\"2A20\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠂⠄\"}},\"key\":\"2A21\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠆⠄\"}},\"key\":\"2A22\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠒⠄\"}},\"key\":\"2A23\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠲⠄\"}},\"key\":\"2A24\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠢⠄\"}},\"key\":\"2A25\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠖⠄\"}},\"key\":\"2A26\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠶⠄\"}},\"key\":\"2A27\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠦⠄\"}},\"key\":\"2A28\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠔⠄\"}},\"key\":\"2A29\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠁⠄\"}},\"key\":\"2A2A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠃⠄\"}},\"key\":\"2A2B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠉⠄\"}},\"key\":\"2A2C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠙⠄\"}},\"key\":\"2A2D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠑⠄\"}},\"key\":\"2A2E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠆⠋⠄\"}},\"key\":\"2A2F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠴⠄\"}},\"key\":\"2A30\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠂⠄\"}},\"key\":\"2A31\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠆⠄\"}},\"key\":\"2A32\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠒⠄\"}},\"key\":\"2A33\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠲⠄\"}},\"key\":\"2A34\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠢⠄\"}},\"key\":\"2A35\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠖⠄\"}},\"key\":\"2A36\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠶⠄\"}},\"key\":\"2A37\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠫⠉⠸⠫⠈⠌⠻\"}},\"key\":\"2A38\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠔⠄\"}},\"key\":\"2A39\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠁⠄\"}},\"key\":\"2A3A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠃⠄\"}},\"key\":\"2A3B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠉⠄\"}},\"key\":\"2A3C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠙⠄\"}},\"key\":\"2A3D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠑⠄\"}},\"key\":\"2A3E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠒⠋⠄\"}},\"key\":\"2A3F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠴⠄\"}},\"key\":\"2A40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠂⠄\"}},\"key\":\"2A41\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠆⠄\"}},\"key\":\"2A42\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠒⠄\"}},\"key\":\"2A43\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠲⠄\"}},\"key\":\"2A44\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠢⠄\"}},\"key\":\"2A45\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠖⠄\"}},\"key\":\"2A46\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠶⠄\"}},\"key\":\"2A47\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠦⠄\"}},\"key\":\"2A48\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠔⠄\"}},\"key\":\"2A49\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠁⠄\"}},\"key\":\"2A4A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠃⠄\"}},\"key\":\"2A4B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠉⠄\"}},\"key\":\"2A4C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠙⠄\"}},\"key\":\"2A4D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠑⠄\"}},\"key\":\"2A4E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠲⠋⠄\"}},\"key\":\"2A4F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠴⠄\"}},\"key\":\"2A50\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠂⠄\"}},\"key\":\"2A51\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠆⠄\"}},\"key\":\"2A52\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠒⠄\"}},\"key\":\"2A53\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠲⠄\"}},\"key\":\"2A54\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠢⠄\"}},\"key\":\"2A55\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠖⠄\"}},\"key\":\"2A56\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠶⠄\"}},\"key\":\"2A57\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠦⠄\"}},\"key\":\"2A58\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠔⠄\"}},\"key\":\"2A59\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠁⠄\"}},\"key\":\"2A5A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠃⠄\"}},\"key\":\"2A5B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠉⠄\"}},\"key\":\"2A5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠙⠄\"}},\"key\":\"2A5D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠑⠄\"}},\"key\":\"2A5E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠢⠋⠄\"}},\"key\":\"2A5F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠴⠄\"}},\"key\":\"2A60\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠂⠄\"}},\"key\":\"2A61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠆⠄\"}},\"key\":\"2A62\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠒⠄\"}},\"key\":\"2A63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠲⠄\"}},\"key\":\"2A64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠢⠄\"}},\"key\":\"2A65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠖⠄\"}},\"key\":\"2A66\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠶⠄\"}},\"key\":\"2A67\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠦⠄\"}},\"key\":\"2A68\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠔⠄\"}},\"key\":\"2A69\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠁⠄\"}},\"key\":\"2A6A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠃⠄\"}},\"key\":\"2A6B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠉⠄\"}},\"key\":\"2A6C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠙⠄\"}},\"key\":\"2A6D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠑⠄\"}},\"key\":\"2A6E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠖⠋⠄\"}},\"key\":\"2A6F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠴⠄\"}},\"key\":\"2A70\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠂⠄\"}},\"key\":\"2A71\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠆⠄\"}},\"key\":\"2A72\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠒⠄\"}},\"key\":\"2A73\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠲⠄\"}},\"key\":\"2A74\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠢⠄\"}},\"key\":\"2A75\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠖⠄\"}},\"key\":\"2A76\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠶⠄\"}},\"key\":\"2A77\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠦⠄\"}},\"key\":\"2A78\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠔⠄\"}},\"key\":\"2A79\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠁⠄\"}},\"key\":\"2A7A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠃⠄\"}},\"key\":\"2A7B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠉⠄\"}},\"key\":\"2A7C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠙⠄\"}},\"key\":\"2A7D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠑⠄\"}},\"key\":\"2A7E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠶⠋⠄\"}},\"key\":\"2A7F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠴⠄\"}},\"key\":\"2A80\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠂⠄\"}},\"key\":\"2A81\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠆⠄\"}},\"key\":\"2A82\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠒⠄\"}},\"key\":\"2A83\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠲⠄\"}},\"key\":\"2A84\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠢⠄\"}},\"key\":\"2A85\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠖⠄\"}},\"key\":\"2A86\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠶⠄\"}},\"key\":\"2A87\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠦⠄\"}},\"key\":\"2A88\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠔⠄\"}},\"key\":\"2A89\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠁⠄\"}},\"key\":\"2A8A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠃⠄\"}},\"key\":\"2A8B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠉⠄\"}},\"key\":\"2A8C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠙⠄\"}},\"key\":\"2A8D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠑⠄\"}},\"key\":\"2A8E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠦⠋⠄\"}},\"key\":\"2A8F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠴⠄\"}},\"key\":\"2A90\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠂⠄\"}},\"key\":\"2A91\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠆⠄\"}},\"key\":\"2A92\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠒⠄\"}},\"key\":\"2A93\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠲⠄\"}},\"key\":\"2A94\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠢⠄\"}},\"key\":\"2A95\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠖⠄\"}},\"key\":\"2A96\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠶⠄\"}},\"key\":\"2A97\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠦⠄\"}},\"key\":\"2A98\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠔⠄\"}},\"key\":\"2A99\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠁⠄\"}},\"key\":\"2A9A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠃⠄\"}},\"key\":\"2A9B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠉⠄\"}},\"key\":\"2A9C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠙⠄\"}},\"key\":\"2A9D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠑⠄\"}},\"key\":\"2A9E\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠔⠋⠄\"}},\"key\":\"2A9F\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠴⠄\"}},\"key\":\"2AA0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠂⠄\"}},\"key\":\"2AA1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠆⠄\"}},\"key\":\"2AA2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠒⠄\"}},\"key\":\"2AA3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠲⠄\"}},\"key\":\"2AA4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠢⠄\"}},\"key\":\"2AA5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠖⠄\"}},\"key\":\"2AA6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠶⠄\"}},\"key\":\"2AA7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠦⠄\"}},\"key\":\"2AA8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠔⠄\"}},\"key\":\"2AA9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠁⠄\"}},\"key\":\"2AAA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠃⠄\"}},\"key\":\"2AAB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠉⠄\"}},\"key\":\"2AAC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠙⠄\"}},\"key\":\"2AAD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠁⠑⠄\"}},\"key\":\"2AAE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠱⠀\"}},\"key\":\"2AAF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠱⠀\"}},\"key\":\"2AB0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠱⠀\"}},\"key\":\"2AB1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠱⠀\"}},\"key\":\"2AB2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠨⠅⠀\"}},\"key\":\"2AB3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠨⠅⠀\"}},\"key\":\"2AB4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠨⠅⠀\"}},\"key\":\"2AB5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠨⠅⠀\"}},\"key\":\"2AB6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠱⠈⠱⠀\"}},\"key\":\"2AB7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠱⠈⠱⠀\"}},\"key\":\"2AB8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2AB9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠌⠈⠱⠈⠱⠀\"}},\"key\":\"2ABA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠐⠅⠈⠨⠐⠅⠻⠀\"}},\"key\":\"2ABB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠀⠨⠨⠐⠈⠨⠨⠐⠻⠀\"}},\"key\":\"2ABC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠙⠄\"}},\"key\":\"2ABD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠑⠄\"}},\"key\":\"2ABE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠃⠋⠄\"}},\"key\":\"2ABF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠴⠄\"}},\"key\":\"2AC0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠂⠄\"}},\"key\":\"2AC1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠆⠄\"}},\"key\":\"2AC2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠒⠄\"}},\"key\":\"2AC3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠲⠄\"}},\"key\":\"2AC4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠢⠄\"}},\"key\":\"2AC5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠖⠄\"}},\"key\":\"2AC6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠶⠄\"}},\"key\":\"2AC7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠦⠄\"}},\"key\":\"2AC8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠔⠄\"}},\"key\":\"2AC9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠁⠄\"}},\"key\":\"2ACA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠃⠄\"}},\"key\":\"2ACB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠉⠄\"}},\"key\":\"2ACC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠙⠄\"}},\"key\":\"2ACD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠑⠄\"}},\"key\":\"2ACE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠉⠋⠄\"}},\"key\":\"2ACF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠴⠄\"}},\"key\":\"2AD0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠂⠄\"}},\"key\":\"2AD1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠆⠄\"}},\"key\":\"2AD2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠒⠄\"}},\"key\":\"2AD3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠲⠄\"}},\"key\":\"2AD4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠢⠄\"}},\"key\":\"2AD5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠖⠄\"}},\"key\":\"2AD6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠶⠄\"}},\"key\":\"2AD7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠦⠄\"}},\"key\":\"2AD8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠔⠄\"}},\"key\":\"2AD9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠁⠄\"}},\"key\":\"2ADA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠃⠄\"}},\"key\":\"2ADB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠉⠄\"}},\"key\":\"2ADC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠙⠄\"}},\"key\":\"2ADD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠑⠄\"}},\"key\":\"2ADE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠙⠋⠄\"}},\"key\":\"2ADF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠴⠄\"}},\"key\":\"2AE0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠂⠄\"}},\"key\":\"2AE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠆⠄\"}},\"key\":\"2AE2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠒⠄\"}},\"key\":\"2AE3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠲⠄\"}},\"key\":\"2AE4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠢⠄\"}},\"key\":\"2AE5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠖⠄\"}},\"key\":\"2AE6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠶⠄\"}},\"key\":\"2AE7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠦⠄\"}},\"key\":\"2AE8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠔⠄\"}},\"key\":\"2AE9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠁⠄\"}},\"key\":\"2AEA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠃⠄\"}},\"key\":\"2AEB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠉⠄\"}},\"key\":\"2AEC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠙⠄\"}},\"key\":\"2AED\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠑⠄\"}},\"key\":\"2AEE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠑⠋⠄\"}},\"key\":\"2AEF\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠴⠄\"}},\"key\":\"2AF0\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠂⠄\"}},\"key\":\"2AF1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠆⠄\"}},\"key\":\"2AF2\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠒⠄\"}},\"key\":\"2AF3\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠲⠄\"}},\"key\":\"2AF4\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠢⠄\"}},\"key\":\"2AF5\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠖⠄\"}},\"key\":\"2AF6\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠶⠄\"}},\"key\":\"2AF7\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠦⠄\"}},\"key\":\"2AF8\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠔⠄\"}},\"key\":\"2AF9\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠁⠄\"}},\"key\":\"2AFA\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠃⠄\"}},\"key\":\"2AFB\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠉⠄\"}},\"key\":\"2AFC\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠙⠄\"}},\"key\":\"2AFD\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠑⠄\"}},\"key\":\"2AFE\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠁⠋⠋⠄\"}},\"key\":\"2AFF\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠒⠴⠂⠉⠄\"}},\"key\":\"301C\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠴⠄\"}},\"key\":\"FE10\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠒⠄\"}},\"key\":\"FE13\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠲⠄\"}},\"key\":\"FE14\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠢⠄\"}},\"key\":\"FE15\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠖⠄\"}},\"key\":\"FE16\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠂⠔⠄\"}},\"key\":\"FE19\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠴⠄\"}},\"key\":\"FE30\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠂⠄\"}},\"key\":\"FE31\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠆⠄\"}},\"key\":\"FE32\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠒⠄\"}},\"key\":\"FE33\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠒⠲⠄\"}},\"key\":\"FE34\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠢⠄\"}},\"key\":\"FE45\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠖⠄\"}},\"key\":\"FE46\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠔⠄\"}},\"key\":\"FE49\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠁⠄\"}},\"key\":\"FE4A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠃⠄\"}},\"key\":\"FE4B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠉⠄\"}},\"key\":\"FE4C\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠙⠄\"}},\"key\":\"FE4D\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠑⠄\"}},\"key\":\"FE4E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠲⠋⠄\"}},\"key\":\"FE4F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠴⠄\"}},\"key\":\"FE50\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠆⠄\"}},\"key\":\"FE52\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠲⠄\"}},\"key\":\"FE54\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠢⠄\"}},\"key\":\"FE55\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠖⠄\"}},\"key\":\"FE56\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠶⠄\"}},\"key\":\"FE57\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠦⠄\"}},\"key\":\"FE58\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠢⠋⠄\"}},\"key\":\"FE5F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠴⠄\"}},\"key\":\"FE60\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠂⠄\"}},\"key\":\"FE61\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠆⠄\"}},\"key\":\"FE62\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠒⠄\"}},\"key\":\"FE63\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠲⠄\"}},\"key\":\"FE64\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠢⠄\"}},\"key\":\"FE65\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠖⠄\"}},\"key\":\"FE66\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠦⠄\"}},\"key\":\"FE68\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠔⠄\"}},\"key\":\"FE69\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠁⠄\"}},\"key\":\"FE6A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠖⠃⠄\"}},\"key\":\"FE6B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠂⠄\"}},\"key\":\"FF01\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠆⠄\"}},\"key\":\"FF02\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠒⠄\"}},\"key\":\"FF03\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠲⠄\"}},\"key\":\"FF04\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠢⠄\"}},\"key\":\"FF05\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠖⠄\"}},\"key\":\"FF06\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠶⠄\"}},\"key\":\"FF07\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠁⠄\"}},\"key\":\"FF0A\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠃⠄\"}},\"key\":\"FF0B\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠉⠄\"}},\"key\":\"FF0C\"},{\"category\":\"Pd\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠙⠄\"}},\"key\":\"FF0D\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠑⠄\"}},\"key\":\"FF0E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠴⠋⠄\"}},\"key\":\"FF0F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠁⠄\"}},\"key\":\"FF1A\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠃⠄\"}},\"key\":\"FF1B\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠉⠄\"}},\"key\":\"FF1C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠙⠄\"}},\"key\":\"FF1D\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠑⠄\"}},\"key\":\"FF1E\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠂⠋⠄\"}},\"key\":\"FF1F\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠆⠴⠄\"}},\"key\":\"FF20\"},{\"category\":\"Po\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠉⠄\"}},\"key\":\"FF3C\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠒⠑⠄\"}},\"key\":\"FF3E\"},{\"category\":\"Pc\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FF3F\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠲⠴⠄\"}},\"key\":\"FF40\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠢⠉⠄\"}},\"key\":\"FF5C\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠈⠱\"}},\"key\":\"FF5E\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠴⠄\"}},\"key\":\"FFE0\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠂⠄\"}},\"key\":\"FFE1\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠆⠄\"}},\"key\":\"FFE2\"},{\"category\":\"Sk\",\"mappings\":{\"default\":{\"default\":\"⠱\"}},\"key\":\"FFE3\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠲⠄\"}},\"key\":\"FFE4\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠢⠄\"}},\"key\":\"FFE5\"},{\"category\":\"Sc\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠖⠄\"}},\"key\":\"FFE6\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠦⠄\"}},\"key\":\"FFE8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠙⠄\"}},\"key\":\"FFED\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠑⠑⠄\"}},\"key\":\"FFEE\"}]\n,\n\"nemeth/symbols/math_whitespace.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"0020\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"00A0\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠤\"}},\"key\":\"00AD\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2000\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2001\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2002\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2003\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2004\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2005\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2006\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2007\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2008\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2009\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"200B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"200D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠑⠄\"}},\"key\":\"200E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠴⠋⠄\"}},\"key\":\"200F\"},{\"category\":\"Zl\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠦⠄\"}},\"key\":\"2028\"},{\"category\":\"Zp\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠔⠄\"}},\"key\":\"2029\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠁⠄\"}},\"key\":\"202A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠃⠄\"}},\"key\":\"202B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠉⠄\"}},\"key\":\"202C\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠙⠄\"}},\"key\":\"202D\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠆⠑⠄\"}},\"key\":\"202E\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"202F\"},{\"category\":\"Zs\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"205F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"\"}},\"key\":\"2060\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠀\"}},\"key\":\"2061\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2062\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠠\"}},\"key\":\"2063\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠬\"}},\"key\":\"2064\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠁⠄\"}},\"key\":\"206A\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠃⠄\"}},\"key\":\"206B\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠑⠄\"}},\"key\":\"206E\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠴⠖⠋⠄\"}},\"key\":\"206F\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠑⠋⠋⠄\"}},\"key\":\"FEFF\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠔⠄\"}},\"key\":\"FFF9\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠁⠄\"}},\"key\":\"FFFA\"},{\"category\":\"Cf\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠋⠋⠋⠃⠄\"}},\"key\":\"FFFB\"}]\n,\n\"nemeth/symbols/other_stars.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠒⠑⠦⠄\"}},\"key\":\"23E8\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠴⠢⠄\"}},\"key\":\"2605\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠫⠎\"}},\"key\":\"2606\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠁⠄\"}},\"key\":\"26AA\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠖⠁⠃⠄\"}},\"key\":\"26AB\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠴⠢⠄\"}},\"key\":\"2705\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠒⠄\"}},\"key\":\"2713\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠲⠄\"}},\"key\":\"2714\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠈⠡\"}},\"key\":\"2715\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠖⠄\"}},\"key\":\"2716\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠶⠄\"}},\"key\":\"2717\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠦⠄\"}},\"key\":\"2718\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠃⠄\"}},\"key\":\"271B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠂⠉⠄\"}},\"key\":\"271C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠴⠄\"}},\"key\":\"2720\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠂⠄\"}},\"key\":\"2721\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠆⠄\"}},\"key\":\"2722\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠒⠄\"}},\"key\":\"2723\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠲⠄\"}},\"key\":\"2724\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠢⠄\"}},\"key\":\"2725\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠖⠄\"}},\"key\":\"2726\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠶⠄\"}},\"key\":\"2727\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠦⠄\"}},\"key\":\"2728\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠔⠄\"}},\"key\":\"2729\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠁⠄\"}},\"key\":\"272A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠃⠄\"}},\"key\":\"272B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠉⠄\"}},\"key\":\"272C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠙⠄\"}},\"key\":\"272D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠑⠄\"}},\"key\":\"272E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠆⠋⠄\"}},\"key\":\"272F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠴⠄\"}},\"key\":\"2730\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠂⠄\"}},\"key\":\"2731\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠆⠄\"}},\"key\":\"2732\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠒⠄\"}},\"key\":\"2733\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠲⠄\"}},\"key\":\"2734\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠢⠄\"}},\"key\":\"2735\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠖⠄\"}},\"key\":\"2736\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠔⠄\"}},\"key\":\"2739\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠁⠄\"}},\"key\":\"273A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠃⠄\"}},\"key\":\"273B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠉⠄\"}},\"key\":\"273C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠙⠄\"}},\"key\":\"273D\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠑⠄\"}},\"key\":\"273E\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠒⠋⠄\"}},\"key\":\"273F\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠴⠄\"}},\"key\":\"2740\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠂⠄\"}},\"key\":\"2741\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠆⠄\"}},\"key\":\"2742\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠒⠄\"}},\"key\":\"2743\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠲⠄\"}},\"key\":\"2744\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠢⠄\"}},\"key\":\"2745\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠖⠄\"}},\"key\":\"2746\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠶⠄\"}},\"key\":\"2747\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠦⠄\"}},\"key\":\"2748\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠔⠄\"}},\"key\":\"2749\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠁⠄\"}},\"key\":\"274A\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠃⠄\"}},\"key\":\"274B\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠉⠄\"}},\"key\":\"274C\"},{\"category\":\"So\",\"mappings\":{\"default\":{\"default\":\"⠄⡳⠭⠆⠶⠲⠙⠄\"}},\"key\":\"274D\"}]\n,\n\"nemeth/units/energy.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠺\"}},\"key\":\"W\",\"names\":[\"W\",\"w\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠠⠺\"}},\"key\":\"kW\",\"names\":[\"kw\",\"kW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠠⠺\"}},\"key\":\"mW\",\"names\":[\"mw\",\"mW\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠺⠓\"}},\"key\":\"kwh\",\"names\":[\"kwh\",\"kWh\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠚\"}},\"key\":\"J\",\"names\":[\"J\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠝\"}},\"key\":\"N\",\"names\":[\"N\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠁\"}},\"key\":\"A\",\"names\":[\"A\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠠⠧\"}},\"key\":\"V\",\"names\":[\"V\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠨⠠⠺\"}},\"key\":\"µΩ\",\"names\":[\"µΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"mΩ\",\"names\":[\"mΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\",\"Ohm\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠅⠨⠠⠺\"}},\"key\":\"kΩ\",\"names\":[\"kΩ\",\"KΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠨⠠⠺\"}},\"key\":\"Ω\",\"names\":[\"Ω\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠍⠨⠠⠺\"}},\"key\":\"MΩ\",\"names\":[\"MΩ\"]},{\"category\":\"energy\",\"mappings\":{\"default\":{\"default\":\"⠛⠨⠠⠺\"}},\"key\":\"GΩ\",\"names\":[\"GΩ\"]}]\n,\n\"nemeth/units/length.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠍\"}},\"key\":\"mm\",\"names\":[\"mm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠉⠍\"}},\"key\":\"cm\",\"names\":[\"cm\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍\"}},\"key\":\"m\",\"names\":[\"m\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠅⠍\"}},\"key\":\"km\",\"names\":[\"km\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠋⠞\"}},\"key\":\"ft\",\"names\":[\"ft\",\"ft.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠊⠝\"}},\"key\":\"in\",\"names\":[\"in\",\"in.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠍⠊\"}},\"key\":\"mi\",\"names\":[\"mi\",\"mi.\"]},{\"category\":\"Length\",\"mappings\":{\"default\":{\"default\":\"⠽⠙\"}},\"key\":\"yd\",\"names\":[\"yd\",\"yd.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠝⠲⠍⠸⠲\"}},\"key\":\"n.m.\",\"names\":[\"n.m.\"]}]\n,\n\"nemeth/units/memory.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠃\"}},\"key\":\"b\",\"names\":[\"b\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠃\"}},\"key\":\"B\",\"names\":[\"B\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠃\"}},\"key\":\"KB\",\"names\":[\"KB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠃\"}},\"key\":\"MB\",\"names\":[\"MB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠃\"}},\"key\":\"GB\",\"names\":[\"GB\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞⠃\"}},\"key\":\"TB\",\"names\":[\"TB\"]}]\n,\n\"nemeth/units/other.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠙⠕⠵\"}},\"key\":\"doz\",\"names\":[\"doz\",\"doz.\",\"dz\",\"dz.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠎⠟\"}},\"key\":\"sq\",\"names\":[\"sq\",\"sq.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠓⠁\"}},\"key\":\"ha\",\"names\":[\"ha\"]}]\n,\n\"nemeth/units/speed.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠞\"}},\"key\":\"kt\",\"names\":[\"kt\",\"kt.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠏⠓\"}},\"key\":\"mph\",\"names\":[\"mph\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠗⠏⠍\"}},\"key\":\"rpm\",\"names\":[\"rpm\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠍⠓\"}},\"key\":\"kmh\",\"names\":[\"kmh\"]}]\n,\n\"nemeth/units/temperature.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠋\"}},\"key\":\"F\",\"names\":[\"F\",\"F.\",\"°F\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠉\"}},\"key\":\"C\",\"names\":[\"C\",\"°C\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠠⠅\"}},\"key\":\"K\",\"names\":[\"K\",\"°K\"]}]\n,\n\"nemeth/units/time.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠝⠎\"}},\"key\":\"ns\",\"names\":[\"ns\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠨⠍⠎\"}},\"key\":\"µs\",\"names\":[\"µs\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠎\"}},\"key\":\"ms\",\"names\":[\"ms\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠎\"}},\"key\":\"s\",\"names\":[\"s\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠍⠊⠝⠀\"}},\"key\":\"min\",\"names\":[\"min\"]},{\"category\":\"time\",\"mappings\":{\"default\":{\"default\":\"⠓\"}},\"key\":\"h\",\"names\":[\"h\",\"hr\"]}]\n,\n\"nemeth/units/volume.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠃⠃⠇\"}},\"key\":\"bbl\",\"names\":[\"bbl.\",\"bbl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠥\"}},\"key\":\"cu\",\"names\":[\"cu\",\"cu.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠋⠇⠸⠲⠀⠕⠵⠸⠲\"}},\"key\":\"fl. oz.\",\"names\":[\"fl. oz.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠛⠁⠇\"}},\"key\":\"gal\",\"names\":[\"gal\",\"gal.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠏⠞\"}},\"key\":\"pt\",\"names\":[\"pt\",\"pt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠟⠞\"}},\"key\":\"qt\",\"names\":[\"qt\",\"qt.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠃⠎⠏\"}},\"key\":\"tbsp\",\"names\":[\"tbsp\",\"tbsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠞⠎⠏\"}},\"key\":\"tsp\",\"names\":[\"tsp\",\"tsp.\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠉⠉\"}},\"key\":\"cc\",\"names\":[\"cc\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠅⠇\"}},\"key\":\"kl\",\"names\":[\"kl\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠇\"}},\"key\":\"l\",\"names\":[\"l\"]},{\"category\":\"volume\",\"mappings\":{\"default\":{\"default\":\"⠍⠇\"}},\"key\":\"ml\",\"names\":[\"ml\"]}]\n,\n\"nemeth/units/weight.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠃\"}},\"key\":\"lb\",\"names\":[\"lb\",\"lb.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠇⠞\"}},\"key\":\"LT\",\"names\":[\"LT\",\"L.T.\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠕⠵\"}},\"key\":\"oz\",\"names\":[\"oz\",\"oz.\"]},{\"key\":\"µg\",\"names\":[\"µg\",\"mcg\"],\"mappings\":{\"default\":{\"default\":\"⠨⠍⠛\"}}},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠛⠗\"}},\"key\":\"gr\",\"names\":[\"g\",\"gr\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠅⠛\"}},\"key\":\"kg\",\"names\":[\"kg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠉⠛\"}},\"key\":\"mcg\",\"names\":[\"mg\",\"µg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠍⠛\"}},\"key\":\"mg\",\"names\":[\"mg\"]},{\"category\":\"\",\"mappings\":{\"default\":{\"default\":\"⠞\"}},\"key\":\"t\",\"names\":[\"t\",\"T\"]}]\n}\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/sre-node.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SRE = require(\"speech-rule-engine\");\nglobal.SRE = SRE;\nglobal.sre = Object.create(SRE);\nglobal.sre.Engine = {\n    isReady: function () {\n        return SRE.engineReady();\n    }\n};\n//# sourceMappingURL=sre-node.js.map"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/sre/sre_browser.js",
    "content": "// Copyright 2014-2019 Volker Sorge\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.makeIterator=function(a){var b=\"undefined\"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)};$jscomp.arrayFromIterator=function(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c};\n$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};\n$jscomp.getGlobal=function(a){a=[\"object\"==typeof globalThis&&globalThis,a,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error(\"Cannot find global object\");};$jscomp.global=$jscomp.getGlobal(this);$jscomp.IS_SYMBOL_NATIVE=\"function\"===typeof Symbol&&\"symbol\"===typeof Symbol(\"x\");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};\n$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX=\"$jscp$\";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};$jscomp.polyfill=function(a,b,c,d){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,d):$jscomp.polyfillUnisolated(a,b,c,d))};\n$jscomp.polyfillUnisolated=function(a,b,c,d){c=$jscomp.global;a=a.split(\".\");for(d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))return;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};\n$jscomp.polyfillIsolated=function(a,b,c,d){var e=a.split(\".\");a=1===e.length;d=e[0];d=!a&&d in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<e.length-1;f++){var g=e[f];if(!(g in d))return;d=d[g]}e=e[e.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&\"es6\"===c?d[e]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,e,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[e]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(e):$jscomp.POLYFILL_PREFIX+e,e=\n$jscomp.propertyToPolyfillSymbol[e],$jscomp.defineProperty(d,e,{configurable:!0,writable:!0,value:b})))};$jscomp.initSymbol=function(){};\n$jscomp.polyfill(\"Symbol\",function(a){if(a)return a;var b=function(e,f){this.$jscomp$symbol$id_=e;$jscomp.defineProperty(this,\"description\",{configurable:!0,writable:!0,value:f})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c=0,d=function(e){if(this instanceof d)throw new TypeError(\"Symbol is not a constructor\");return new b(\"jscomp_symbol_\"+(e||\"\")+\"_\"+c++,e)};return d},\"es6\",\"es3\");$jscomp.initSymbolIterator=function(){};\n$jscomp.polyfill(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;c<b.length;c++){var d=$jscomp.global[b[c]];\"function\"===typeof d&&\"function\"!=typeof d.prototype[a]&&$jscomp.defineProperty(d.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}})}return a},\"es6\",\n\"es3\");$jscomp.initSymbolAsyncIterator=function(){};$jscomp.iteratorPrototype=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,b){a instanceof String&&(a+=\"\");var c=0,d={next:function(){if(c<a.length){var e=c++;return{value:b(e,a[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d};\n$jscomp.polyfill(\"Array.prototype.keys\",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(b){return b})}},\"es6\",\"es3\");$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.polyfill(\"Array.prototype.find\",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},\"es6\",\"es3\");\n$jscomp.checkStringArgs=function(a,b,c){if(null==a)throw new TypeError(\"The 'this' value for String.prototype.\"+c+\" must not be null or undefined\");if(b instanceof RegExp)throw new TypeError(\"First argument to String.prototype.\"+c+\" must not be a regular expression\");return a+\"\"};\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(b){var c=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>b||1342177279<b)throw new RangeError(\"Invalid count value\");b|=0;for(var d=\"\";b;)if(b&1&&(d+=c),b>>>=1)c+=c;return d}},\"es6\",\"es3\");var COMPILED=!0,goog=goog||{};goog.global=this||self;\ngoog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.provide cannot be used within a module.\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector(\"script[nonce]\"))&&(a=a.nonce||a.getAttribute(\"nonce\"))&&goog.NONCE_PATTERN_.test(a)?a:\"\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(\"string\"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInGoogModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\");\nif(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\"es6\",GOOG:\"goog\"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};\ngoog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\"function\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\"goog.declareModuleId may only be called from within an ES6 module\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\"goog.declareModuleId may only be called once per module.\");if(a in goog.loadedModules_)throw Error('Module with namespace \"'+a+'\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\"function\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \"'+\na+'\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={\"goog.module\":!0});\ngoog.getObjectByName=function(a,b){a=a.split(\".\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.globalize=function(a,b){b=b||goog.global;for(var c in a)b[c]=a[c]};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\"\";goog.nullFunction=function(){};\ngoog.abstractMethod=function(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\"detect\";\ngoog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRANSPILE_TO_LANGUAGE=\"\";goog.TRANSPILER=\"transpile.js\";goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval('\"use strict\";let x = 1; function f() { return typeof x; };f() == \"number\";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return\"(function(){\"+a+\"\\n;})();\\n\"};\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\"\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};if(goog.isFunction(a))var c=a.call(void 0,{});else if(\"string\"===typeof a)goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error(\"Invalid module definition\");var d=goog.moduleLoaderState_.moduleName;if(\"string\"===typeof d&&d)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,\nc):goog.SEAL_MODULE_EXPORTS&&Object.seal&&\"object\"==typeof c&&null!=c&&Object.seal(c),goog.loadedModules_[d]={exports:c,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \"'+d+'\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split(\"/\");for(var b=0;b<a.length;)\".\"==a[b]?a.splice(b,1):b&&\"..\"==a[b]&&a[b-1]&&\"..\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\"/\")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\"get\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};\ngoog.transpile_=function(a,b,c){var d=goog.global.$jscomp;d||(goog.global.$jscomp=d={});var e=d.transpile;if(!e){var f=goog.basePath+goog.TRANSPILER,g=goog.loadFileSync_(f);if(g){(function(){(0,eval)(g+\"\\n//# sourceURL=\"+f)}).call(goog.global);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the \"transpile\" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=\ngoog.global.$gwtExport.$jscomp.transpile;d=goog.global.$jscomp;e=d.transpile}}e||(e=d.transpile=function(h,k){goog.logToConsole_(k+\" requires transpilation but no transpiler was found.\");return h});return e(a,b,c)};\ngoog.typeOf=function(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return\"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return\"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return\"function\"}else return\"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return\"object\";return b};goog.isArray=function(a){return Array.isArray(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&\"function\"==typeof a.getFullYear};goog.isFunction=function(a){return\"function\"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return\"object\"==b&&null!=a||\"function\"==b};\ngoog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\"removeAttribute\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_=\"closure_uid_\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;\ngoog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};\ngoog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.eval){if(null==goog.evalWorks_)try{goog.global.eval(\"\"),goog.evalWorks_=!0}catch(d){goog.evalWorks_=!1}if(goog.evalWorks_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"script\");c.type=\"text/javascript\";c.defer=!1;c.appendChild(b.createTextNode(a));b.head.appendChild(c);b.head.removeChild(c)}}else throw Error(\"goog.globalEval not available\");};goog.evalWorks_=null;\ngoog.getCssName=function(a,b){if(\".\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \".\". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split(\"-\");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join(\"-\")};d=goog.cssNameMapping_?\"BY_WHOLE\"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+\"-\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\"&lt;\"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};\ngoog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.scope is not supported within a module.\");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\"cannot instantiate an interface (no constructor defined).\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\"write\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\"complete\"!=a.readyState:\"loading\"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&\"string\"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;\na=b?[b]:a.getElementsByTagName(\"SCRIPT\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\"?\");d=-1==d?c.length:d;if(\"base.js\"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null;this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(g,h){e?d[g]=!0:h()?(c=g,d[g]=!1):e=d[g]=!0}function b(g){try{return!!eval(g)}catch(h){return!1}}\nvar c=\"es3\",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\"\";a(\"es5\",function(){return b(\"[1,].length==1\")});a(\"es6\",function(){return f.match(/Edge\\/(\\d+)(\\.\\d)*/i)?!1:b('(()=>{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\"Unregonized namespace: \"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=\n0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\"deps.js\"),\"deps.js\",[],[],{},!1));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=\nfunction(a){this.factory_=a},goog.DebugLoader_.prototype.load_=function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error(\"Bad dependency path or symbol: \"+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else throw a=\"goog.require could not find: \"+\na,goog.logToConsole_(a),Error(a);},goog.DebugLoader_.prototype.loadDeps_=function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\"Cannot call pause after the call to load.\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\"Double call to loaded.\");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);\nreturn g},setModuleState:function(g){goog.moduleLoaderState_={type:g,moduleName:\"\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||\"\"})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error(\"Cannot register with defer after the call to load.\");a.defer_(d,\ng)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);\nbreak}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=\nfunction(a){return a in this.idToPath_?this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,\nb,c){},goog.LoadController.prototype.setModuleState=function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\"://\");0<=b&&(a=a.substring(b+3),b=\na.indexOf(\"/\"),0<=b&&(a=a.substring(b+1)));return a},goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=\nfunction(a){delete goog.Dependency.callbackMap_[a]},goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\"Callback key \"+a+\" does not exist (was base.js loaded more than once?).\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=\ngoog.global.document;if(\"complete\"==b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \"'+this.path+'\" after document load');}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var c=goog.Dependency.registerCallback_(function(f){goog.DebugLoader_.IS_OLD_IE_&&\"complete\"!=f.readyState||(goog.Dependency.unregisterCallback_(c),a.loaded())}),d=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\n' nonce=\"'+goog.getScriptNonce()+'\"':\"\";d='<script src=\"'+this.path+'\" '+(goog.DebugLoader_.IS_OLD_IE_?\"onreadystatechange\":\"onload\")+\"=\\\"goog.Dependency.callback_('\"+c+'\\', this)\" type=\"text/javascript\" '+(goog.Dependency.defer_?\"defer\":\"\")+d+\">\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement(\"script\");e.defer=goog.Dependency.defer_;e.async=!1;e.type=\"text/javascript\";(d=goog.getScriptNonce())&&e.setAttribute(\"nonce\",d);goog.DebugLoader_.IS_OLD_IE_?\n(a.pause(),e.onreadystatechange=function(){if(\"loaded\"==e.readyState||\"complete\"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){l=m?'<script type=\"module\" crossorigin>'+m+\"\\x3c/script>\":'<script type=\"module\" crossorigin src=\"'+l+'\">\\x3c/script>';d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement(\"script\");n.defer=!0;n.async=!1;n.type=\n\"module\";n.setAttribute(\"crossorigin\",!0);var p=goog.getScriptNonce();p&&n.setAttribute(\"nonce\",p);m?n.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=\n!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\"'+g+'\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \"'+this.path+'\"; goog.Dependency.callback_(\"'+h+'\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);\na.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\"'+k+'\")')}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\"noModule\"in goog.global.document.createElement(\"script\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=\ngoog.loadFileSync_(e.path);e.contents_&&(e.contents_=e.transform(e.contents_),e.contents_&&(e.contents_+=\"\\n//# sourceURL=\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var m=e.contents_;e.contents_=null;goog.globalEval(m);if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),\nn)});a.loaded()}}function d(){var m=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),p='<script type=\"text/javascript\">'+goog.protectScriptTag_('goog.Dependency.callback_(\"'+n+'\");')+\"\\x3c/script>\";m.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(p):p)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\"\",this.contents_)?(this.contents_=null,a.loaded()):a.pause();\nelse{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length,h=g&&goog.DebugLoader_.IS_OLD_IE_;g=goog.Dependency.defer_&&(g||goog.isDocumentLoading_());if(h||g)a.defer(function(){c()});else{var k=goog.global.document;h=goog.inHtmlDocument_()&&\"ActiveXObject\"in goog.global;if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!h){goog.Dependency.defer_=!0;a.pause();var l=k.onreadystatechange;k.onreadystatechange=function(){\"interactive\"==k.readyState&&(k.onreadystatechange=\nl,c(),a.resume());goog.isFunction(l)&&l.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.TranspiledDependency=function(a,b,c,d,e,f){goog.TransformedDependency.call(this,a,b,c,d,e);this.transpiler=f},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(a){return this.transpiler.transpile(a,this.getPathName())},\ngoog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,c,d,e,f,g){goog.TransformedDependency.call(this,a,b,c,d,e);this.needsTranspile_=f;this.transpiler_=g},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=\nfunction(a){this.needsTranspile_&&(a=this.transpiler_.transpile(a,this.getPathName()));return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?\"goog.loadModule(\"+goog.global.JSON.stringify(a+\"\\n//# sourceURL=\"+this.path+\"\\n\")+\");\":'goog.loadModule(function(exports) {\"use strict\";'+a+\"\\n;return exports});\\n//# sourceURL=\"+this.path+\"\\n\"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(a,b,c,\nd){b=b||[];a=a.replace(/\\\\/g,\"/\");var e=goog.normalizePath_(goog.basePath+a);d&&\"boolean\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d,goog.transpiler_.needsTranspile(d.lang||\"es3\",d.module));this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(a){this.transpiler=a},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e,f){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,\nb,c,d,e,f,this.transpiler):f?new goog.TranspiledDependency(a,b,c,d,e,this.transpiler):e.module==goog.ModuleType.ES6?\"never\"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=\ngoog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#base\"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});goog.TRUSTED_TYPES_POLICY_NAME=\"\";goog.identity_=function(a){return a};goog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};var sre={Variables:function(){}};sre.Variables.VERSION=\"3.1.1\";sre.Variables.LOCALES=[\"de\",\"en\",\"es\",\"fr\",\"nemeth\"];sre.Variables.mathjaxVersion=\"3.0.0\";sre.Variables.url=\"https://cdn.jsdelivr.net/npm/speech-rule-engine@\"+sre.Variables.VERSION+\"/lib/mathmaps\";sre.Variables.WGXpath=\"https://cdn.jsdelivr.net/npm/wicked-good-xpath@1.3.0/dist/wgxpath.install.js\";sre.SystemExternal=function(){};sre.SystemExternal.require=function(a){return\"undefined\"!==typeof process&&\"undefined\"!==typeof require?require(a):null};sre.SystemExternal.documentSupported=function(){return\"undefined\"!=typeof document};sre.SystemExternal.process=sre.SystemExternal.require(\"process\");sre.SystemExternal.xmldom=sre.SystemExternal.documentSupported()?window:sre.SystemExternal.require(\"xmldom-sre\");\nsre.SystemExternal.document=sre.SystemExternal.documentSupported()?document:(new sre.SystemExternal.xmldom.DOMImplementation).createDocument(\"\",\"\",0);sre.SystemExternal.xpath=sre.SystemExternal.documentSupported()?document:function(){var a={document:{},XPathResult:{}};sre.SystemExternal.require(\"wicked-good-xpath\").install(a);a.document.XPathResult=a.XPathResult;return a.document}();sre.SystemExternal.commander=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require(\"commander\");\nsre.SystemExternal.fs=sre.SystemExternal.documentSupported()?null:sre.SystemExternal.require(\"fs\");sre.SystemExternal.url=sre.Variables.url;sre.SystemExternal.jsonPath=function(){return(sre.SystemExternal.process&&\"undefined\"!==typeof global?sre.SystemExternal.process.env.SRE_JSON_PATH||global.SRE_JSON_PATH||sre.SystemExternal.process.cwd():sre.SystemExternal.url)+\"/\"}();sre.SystemExternal.WGXpath=sre.Variables.WGXpath;sre.SystemExternal.wgxpath=null;sre.BrowserUtil={};sre.BrowserUtil.detectIE=function(){if(!(\"undefined\"!==typeof window&&\"ActiveXObject\"in window&&\"clipboardData\"in window))return!1;sre.BrowserUtil.loadMapsForIE_();sre.BrowserUtil.loadWGXpath_();return!0};sre.BrowserUtil.detectEdge=function(){if(!(\"undefined\"!==typeof window&&\"MSGestureEvent\"in window&&\"chrome\"in window&&null==window.chrome.loadTimes))return!1;document.evaluate=null;sre.BrowserUtil.loadWGXpath_(!0);return!0};sre.BrowserUtil.mapsForIE=null;\nsre.BrowserUtil.loadWGXpath_=function(a){sre.BrowserUtil.loadScript(sre.SystemExternal.WGXpath);sre.BrowserUtil.installWGXpath_(a)};\nsre.BrowserUtil.installWGXpath_=function(a,b){var c=b||1;\"undefined\"===typeof wgxpath&&10>c?setTimeout(function(){sre.BrowserUtil.installWGXpath_(a,c++)},200):10<=c||(sre.SystemExternal.wgxpath=wgxpath,a?sre.SystemExternal.wgxpath.install({document:document}):sre.SystemExternal.wgxpath.install(),sre.XpathUtil.xpathEvaluate=document.evaluate,sre.XpathUtil.xpathResult=XPathResult,sre.XpathUtil.createNSResolver=document.createNSResolver)};\nsre.BrowserUtil.loadMapsForIE_=function(){sre.BrowserUtil.loadScript(sre.SystemExternal.jsonPath+\"mathmaps_ie.js\")};sre.BrowserUtil.loadScript=function(a){var b=sre.SystemExternal.document.createElement(\"script\");b.type=\"text/javascript\";b.src=a;sre.SystemExternal.document.head?sre.SystemExternal.document.head.appendChild(b):sre.SystemExternal.document.body.appendChild(b)};sre.DynamicProperties=function(a,b){this.properties_=a;this.order_=b||Object.keys(a)};sre.DynamicProperties.prototype.getProperties=function(){return this.properties_};sre.DynamicProperties.prototype.getOrder=function(){return this.order_};sre.DynamicProperties.prototype.getAxes=function(){return this.order_};sre.DynamicProperties.prototype.getProperty=function(a){return this.properties_[a]};sre.DynamicProperties.prototype.updateProperties=function(a){this.properties_=a};\nsre.DynamicProperties.prototype.allProperties=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getProperty(b).slice())},this));return a};sre.DynamicProperties.prototype.toString=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(b+\": \"+this.getProperty(b).toString())},this));return a.join(\"\\n\")};\nsre.DynamicCstr=function(a,b){this.components_=a;var c={},d;for(d in a){var e=a[d];c[d]=[e];sre.DynamicCstr.Values_.getInstance().add(d,e)}sre.DynamicProperties.call(this,c,b)};goog.inherits(sre.DynamicCstr,sre.DynamicProperties);sre.DynamicCstr.prototype.getComponents=function(){return this.components_};sre.DynamicCstr.prototype.getValue=function(a){return this.components_[a]};\nsre.DynamicCstr.prototype.getValues=function(){var a=[];this.order_.forEach(goog.bind(function(b){a.push(this.getValue(b))},this));return a};sre.DynamicCstr.prototype.allProperties=function(){for(var a=sre.DynamicCstr.superClass_.allProperties.call(this),b=0,c,d;c=a[b],d=this.order_[b];b++)d=this.getValue(d),-1===c.indexOf(d)&&c.unshift(d);return a};sre.DynamicCstr.prototype.toString=function(){return this.getValues().join(\".\")};\nsre.DynamicCstr.prototype.equal=function(a){var b=a.getAxes();if(this.order_.length!==b.length)return!1;for(var c=0,d;d=b[c];c++){var e=this.getValue(d);if(!e||a.getValue(d)!==e)return!1}return!0};sre.DynamicCstr.Axis={DOMAIN:\"domain\",STYLE:\"style\",LOCALE:\"locale\",TOPIC:\"topic\",MODALITY:\"modality\"};sre.DynamicCstr.Values_=function(){this.axisToValues=sre.DynamicCstr.Values_.makeAxisValueObject_()};goog.addSingletonGetter(sre.DynamicCstr.Values_);\nsre.DynamicCstr.Values_.prototype.add=function(a,b){this.axisToValues[a][b]=!0};sre.DynamicCstr.Values_.prototype.get=function(){var a={},b=sre.DynamicCstr.Values_.getInstance().axisToValues,c;for(c in b)a[c]=Object.keys(b[c]);return a};sre.DynamicCstr.Values_.makeAxisValueObject_=function(){var a={},b;for(b in sre.DynamicCstr.Axis)a[sre.DynamicCstr.Axis[b]]={};return a};sre.DynamicCstr.getAxisValues=function(){return sre.DynamicCstr.Values_.getInstance().get()};\nsre.DynamicCstr.DEFAULT_ORDER=[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE,sre.DynamicCstr.Axis.TOPIC];sre.DynamicCstr.DEFAULT_VALUE=\"default\";sre.DynamicCstr.DEFAULT_VALUES={};sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]=\"en\";sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]=sre.DynamicCstr.DEFAULT_VALUE;\nsre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.TOPIC]=sre.DynamicCstr.DEFAULT_VALUE;sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]=\"speech\";sre.DynamicCstr.Parser=function(a){this.order_=a};sre.DynamicCstr.Parser.prototype.parse=function(a){a=a.split(\".\");var b={};if(a.length>this.order_.length)throw Error(\"Invalid dynamic constraint: \"+b);for(var c=0,d;d=this.order_[c],a.length;c++){var e=a.shift();b[d]=e}return new sre.DynamicCstr(b,this.order_.slice(0,c))};\nsre.DynamicCstr.Comparator=function(){};sre.DynamicCstr.Comparator.prototype.getReference=function(){};sre.DynamicCstr.Comparator.prototype.setReference=function(a,b){};sre.DynamicCstr.Comparator.prototype.match=function(a){};sre.DynamicCstr.Comparator.prototype.compare=function(a,b){};sre.DynamicCstr.DefaultComparator=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};\nsre.DynamicCstr.DefaultComparator.prototype.getReference=function(){return this.reference_};sre.DynamicCstr.DefaultComparator.prototype.setReference=function(a,b){this.reference_=a;this.fallback_=b||new sre.DynamicProperties(a.getProperties(),a.getOrder());this.order_=this.reference_.getOrder()};\nsre.DynamicCstr.DefaultComparator.prototype.match=function(a){var b=a.getAxes();return b.length===this.reference_.getAxes().length&&b.every(goog.bind(function(c){var d=a.getValue(c);return d===this.reference_.getValue(c)||-1!==this.fallback_.getProperty(c).indexOf(d)},this))};\nsre.DynamicCstr.DefaultComparator.prototype.compare=function(a,b){for(var c=!1,d=0,e;e=this.order_[d];d++){var f=a.getValue(e),g=b.getValue(e);if(!c){var h=this.reference_.getValue(e);if(h===f&&h!==g)return-1;if(h===g&&h!==f)return 1;if(h===f&&h===g)continue;h!==f&&h!==g&&(c=!0)}e=this.fallback_.getProperty(e);f=e.indexOf(f);g=e.indexOf(g);if(f<g)return-1;if(g<f)return 1}return 0};sre.DynamicCstr.DefaultComparator.prototype.toString=function(){return this.reference_.toString()+\"\\n\"+this.fallback_.toString()};\nsre.DynamicProperties.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicProperties(c)};sre.DynamicCstr.create=function(a){for(var b=sre.DynamicCstr.DEFAULT_ORDER,c={},d=Array.prototype.slice.call(arguments,0),e=0,f=d.length,g=b.length;e<f&&e<g;e++)c[b[e]]=d[e];return new sre.DynamicCstr(c)};\nsre.DynamicCstr.defaultCstr=function(){return sre.DynamicCstr.create.apply(null,sre.DynamicCstr.DEFAULT_ORDER.map(function(a){return sre.DynamicCstr.DEFAULT_VALUES[a]}))};sre.DynamicCstr.validOrder=function(a){var b=sre.DynamicCstr.DEFAULT_ORDER.slice();return a.every(function(c){c=b.indexOf(c);return-1!==c&&b.splice(c,1)})};sre.Engine=function(){this.evaluator=sre.Engine.defaultEvaluator;this.parser=this.defaultParser=new sre.DynamicCstr.Parser(sre.DynamicCstr.DEFAULT_ORDER);this.parsers={};this.dynamicCstr=sre.DynamicCstr.defaultCstr();this.comparator=null;this.comparators={};this.domain=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN];this.style=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE];this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];\nthis.walker=\"Table\";this.mode=sre.Engine.Mode.SYNC;this.speech=sre.Engine.Speech.NONE;this.structure=!1;this.ruleSets=[];this.cache=!0;this.markup=sre.Engine.Markup.NONE;this.isEdge=this.isIE=this.strict=!1;this.rate=\"100\";this.pprint=!1;this.setupTests_=[];this.config=!1};goog.addSingletonGetter(sre.Engine);sre.Engine.personalityProps={PITCH:\"pitch\",RATE:\"rate\",VOLUME:\"volume\",PAUSE:\"pause\",JOIN:\"join\"};sre.Engine.Mode={SYNC:\"sync\",ASYNC:\"async\",HTTP:\"http\"};\nsre.Engine.Speech={NONE:\"none\",SHALLOW:\"shallow\",DEEP:\"deep\"};sre.Engine.Markup={NONE:\"none\",PUNCTUATION:\"punctuation\",SSML:\"ssml\",SSML_STEP:\"ssml_step\",ACSS:\"acss\",SABLE:\"sable\",VOICEXML:\"voicexml\"};sre.Engine.registerTest=function(a){sre.Engine.getInstance().setupTests_.push(a)};sre.Engine.isReady=function(){return sre.Engine.getInstance().setupTests_.every(function(a){return a()})};sre.Engine.prototype.setupBrowsers=function(){this.isIE=sre.BrowserUtil.detectIE();this.isEdge=sre.BrowserUtil.detectEdge()};\nsre.Engine.prototype.getAxisValues=function(){return sre.DynamicCstr.getAxisValues()};sre.Engine.defaultEvaluator=function(a,b){return a};sre.Engine.prototype.getRate=function(){var a=parseInt(this.rate,10);return isNaN(a)?100:a};sre.Engine.Error=function(a){Error.call(this);this.message=a||\"\";this.name=\"SRE Error\"};goog.inherits(sre.Engine.Error,Error);sre.Engine.BINARY_FEATURES=[\"strict\",\"cache\",\"structure\",\"pprint\"];sre.Engine.STRING_FEATURES=\"markup style domain speech walker locale modality rate\".split(\" \");\nsre.Engine.prototype.setDynamicCstr=function(a){if(a)for(var b=Object.keys(a),c=0;c<b.length;c++){var d=b[c];-1!==sre.DynamicCstr.DEFAULT_ORDER.indexOf(d)&&(this[d]=a[d])}sre.Engine.DOMAIN_TO_STYLES[this.domain]=this.style;a=[this.locale,this.modality,this.domain,this.style].join(\".\");b=sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],\n[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]);c=this.comparators[this.domain];this.parser=(d=this.parsers[this.domain])?d:this.defaultParser;this.dynamicCstr=this.parser.parse(a);this.dynamicCstr.updateProperties(b.getProperties());this.comparator=c?c():new sre.DynamicCstr.DefaultComparator(this.dynamicCstr)};sre.Engine.DOMAIN_TO_STYLES={mathspeak:\"default\",clearspeak:\"default\"};sre.BaseUtil={};sre.BaseUtil.removeEmpty=function(a){return a.filter(function(b){return b})};sre.BaseUtil.interleaveLists=function(a,b){for(var c=[];a.length||b.length;)a.length&&c.push(a.shift()),b.length&&c.push(b.shift());return c};sre.BaseUtil.setdifference=function(a,b){return a?b?a.filter(function(c){return 0>b.indexOf(c)}):a:[]};sre.BaseUtil.union=function(a,b){return a&&b?a.concat(sre.BaseUtil.setdifference(b,a)):a||b||[]};sre.BaseUtil.makePath=function(a){return a.match(\"/$\")?a:a+\"/\"};sre.Debugger=function(){this.isActive_=!1;this.outputFunction_=console.info;this.stream_=null};goog.addSingletonGetter(sre.Debugger);sre.Debugger.prototype.init=function(a){a&&this.startDebugFile_(a);this.isActive_=!0};\nsre.Debugger.prototype.startDebugFile_=function(a){this.stream_=sre.SystemExternal.fs.createWriteStream(a);this.outputFunction_=goog.bind(function(b){var c=Array.prototype.slice.call(arguments,0);this.stream_.write(c.join(\" \"));this.stream_.write(\"\\n\")},this);this.stream_.on(\"error\",goog.bind(function(b){console.info(\"Invalid log file. Debug information sent to console.\");this.outputFunction_=console.info},this));this.stream_.on(\"finish\",function(){console.info(\"Finalizing debug file.\")})};\nsre.Debugger.prototype.output_=function(a){this.outputFunction_.apply(console.info===this.outputFunction_?console:this.outputFunction_,[\"Speech Rule Engine Debugger:\"].concat(a))};sre.Debugger.prototype.output=function(a){this.isActive_&&this.output_(Array.prototype.slice.call(arguments,0))};sre.Debugger.prototype.generateOutput=function(a){this.isActive_&&this.output_(a.apply(a,[]))};sre.Debugger.prototype.exit=function(a){this.isActive_&&this.stream_&&this.stream_.end(\"\",\"\",a||function(){})};sre.Grammar=function(){this.parameters_={};this.corrections_={};this.preprocessors_={};this.stateStack_=[];this.currentFlags={}};goog.addSingletonGetter(sre.Grammar);sre.Grammar.ATTRIBUTE=\"grammar\";sre.Grammar.prototype.clear=function(){this.parameters_={};this.stateStack_=[]};sre.Grammar.prototype.setParameter=function(a,b){var c=this.parameters_[a];b?this.parameters_[a]=b:delete this.parameters_[a];return c};sre.Grammar.prototype.getParameter=function(a){return this.parameters_[a]};\nsre.Grammar.prototype.setCorrection=function(a,b){this.corrections_[a]=b};sre.Grammar.prototype.setPreprocessor=function(a,b){this.preprocessors_[a]=b};sre.Grammar.prototype.getCorrection=function(a){return this.corrections_[a]};sre.Grammar.prototype.getState=function(){var a=[],b;for(b in this.parameters_){var c=this.parameters_[b];a.push(\"string\"===typeof c?b+\":\"+c:b)}return a.join(\" \")};sre.Grammar.prototype.pushState=function(a){for(var b in a)a[b]=this.setParameter(b,a[b]);this.stateStack_.push(a)};\nsre.Grammar.prototype.popState=function(){var a=this.stateStack_.pop(),b;for(b in a)this.setParameter(b,a[b])};sre.Grammar.prototype.setAttribute=function(a){if(a&&a.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE){var b=this.getState();b&&a.setAttribute(sre.Grammar.ATTRIBUTE,b)}};sre.Grammar.prototype.preprocess=function(a){return this.runProcessors_(a,this.preprocessors_)};sre.Grammar.prototype.correct=function(a){return this.runProcessors_(a,this.corrections_)};\nsre.Grammar.prototype.runProcessors_=function(a,b){for(var c in this.parameters_){var d=b[c];if(d){var e=this.parameters_[c];a=!0===e?d(a):d(a,e)}}return a};sre.Grammar.translateString_=function(a){a=sre.Grammar.prepareUnit_(a);var b=sre.Engine.getInstance();a=b.evaluator(a,b.dynamicCstr)||a;return sre.Grammar.cleanUnit_(a)};sre.Grammar.prepareUnit_=function(a){var b=a.match(/:unit$/);return b?a.slice(0,b.index).replace(/\\s+/g,\" \")+a.slice(b.index):a};\nsre.Grammar.cleanUnit_=function(a){return a.match(/:unit$/)?(sre.Grammar.getInstance().setParameter(\"plural\",!1),a.replace(/:unit$/,\"\")):a};\nsre.Grammar.prototype.apply=function(a,b){this.currentFlags=b||{};a=this.currentFlags.adjust||this.currentFlags.preprocess?sre.Grammar.getInstance().preprocess(a):a;if(this.parameters_.translate||this.currentFlags.translate)a=sre.Grammar.translateString_(a);a=this.currentFlags.adjust||this.currentFlags.correct?sre.Grammar.getInstance().correct(a):a;this.currentFlags={};return a};\nsre.Grammar.parseState=function(a){var b={};a=a.split(\" \");for(var c=0,d=a.length;c<d;c++){var e=a[c].split(\":\"),f=e[1];b[e[0]]=f?f:!0}return b};sre.Grammar.parseInput=function(a){var b={};a=a.split(\":\");for(var c=0,d=a.length;c<d;c++){var e=a[c].split(\"=\"),f=e[0].trim();e[1]?b[f]=e[1].trim():f.match(/^!/)?b[f.slice(1)]=!1:b[f]=!0}return b};sre.Grammar.correctFont_=function(a,b){if(!b||!a)return a;b=sre.Messages.MS_FUNC.FONT_REGEXP(sre.Locale.localFont(b));return a.replace(b,\"\")};\nsre.Grammar.addAnnotation_=function(a,b){return a+\":\"+b};sre.Grammar.noTranslateText_=function(a){a.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+$\"))&&(sre.Grammar.getInstance().currentFlags.translate=!1);return a};sre.Grammar.getInstance().setCorrection(\"ignoreFont\",sre.Grammar.correctFont_);sre.Grammar.getInstance().setPreprocessor(\"annotation\",sre.Grammar.addAnnotation_);sre.Grammar.getInstance().setPreprocessor(\"noTranslateText\",sre.Grammar.noTranslateText_);\nsre.Grammar.getInstance().setCorrection(\"ignoreCaps\",sre.Grammar.correctFont_);sre.XpathUtil={};sre.XpathUtil.xpathSupported=function(){return\"undefined\"==typeof XPathResult?!1:!0};sre.XpathUtil.currentDocument=null;sre.XpathUtil.xpathEvaluate=sre.XpathUtil.xpathSupported()?document.evaluate:sre.SystemExternal.xpath.evaluate;sre.XpathUtil.xpathResult=sre.XpathUtil.xpathSupported()?XPathResult:sre.SystemExternal.xpath.XPathResult;sre.XpathUtil.createNSResolver=sre.XpathUtil.xpathSupported()?document.createNSResolver:sre.SystemExternal.xpath.createNSResolver;\nsre.XpathUtil.nameSpaces_={xhtml:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",mml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};sre.XpathUtil.resolveNameSpace=function(a){return sre.XpathUtil.nameSpaces_[a]||null};sre.XpathUtil.resolver_=function(){this.lookupNamespaceURI=sre.XpathUtil.resolveNameSpace};\nsre.XpathUtil.evaluateXpath_=function(a,b,c){var d=sre.Engine.getInstance();return d.mode!==sre.Engine.Mode.HTTP||d.isIE||d.isEdge?sre.XpathUtil.xpathEvaluate(a,b,new sre.XpathUtil.resolver_,c,null):sre.XpathUtil.currentDocument.evaluate(a,b,sre.XpathUtil.resolveNameSpace,c,null)};sre.XpathUtil.evalXPath=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.ORDERED_NODE_ITERATOR_TYPE)}catch(d){return[]}a=[];for(b=c.iterateNext();b;b=c.iterateNext())a.push(b);return a};\nsre.XpathUtil.getLeafNodes=function(a){return sre.XpathUtil.evalXPath(\".//*[count(*)=0]\",a)};sre.XpathUtil.evaluateBoolean=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.BOOLEAN_TYPE)}catch(d){return!1}return c.booleanValue};sre.XpathUtil.evaluateString=function(a,b){try{var c=sre.XpathUtil.evaluateXpath_(a,b,sre.XpathUtil.xpathResult.STRING_TYPE)}catch(d){return\"\"}return c.stringValue};sre.DomUtil={};sre.DomUtil.toArray=function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b};sre.DomUtil.trimInput_=function(a){a=a.replace(/&nbsp;/g,\"\\u00a0\");return a.replace(/>[ \\f\\n\\r\\t\\v\\u200b]+</g,\"><\").trim()};sre.DomUtil.XML_ENTITIES={\"&lt;\":!0,\"&gt;\":!0,\"&amp;\":!0,\"&quot;\":!0,\"&apos;\":!0};\nsre.DomUtil.parseInput=function(a,b){b=b||sre.Engine.Error;var c=new sre.SystemExternal.xmldom.DOMParser;a=sre.DomUtil.trimInput_(a);var d=!!a.match(/&(?!lt|gt|amp|quot|apos)\\w+;/g);if(!a)throw new b(\"Empty input!\");try{var e=c.parseFromString(a,d?\"text/html\":\"text/xml\");return sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?(sre.XpathUtil.currentDocument=e,d?e.body.childNodes[0]:e.documentElement):e.documentElement}catch(f){throw new b(\"Illegal input: \"+f.message);}};\nsre.DomUtil.NodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};sre.DomUtil.replaceNode=function(a,b){a.parentNode&&(a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a))};sre.DomUtil.createElement=function(a){return sre.SystemExternal.document.createElement(a)};\nsre.DomUtil.createElementNS=function(a,b){return sre.SystemExternal.document.createElementNS(a,b)};sre.DomUtil.createTextNode=function(a){return sre.SystemExternal.document.createTextNode(a)};\nsre.DomUtil.formatXml=function(a){var b=\"\",c=/(>)(<)(\\/*)/g;a=a.replace(c,\"$1\\r\\n$2$3\");var d=0;a=a.split(\"\\r\\n\");c=/(\\.)*(<)(\\/*)/g;for(a=a.map(function(h){return h.replace(c,\"$1\\r\\n$2$3\").split(\"\\r\\n\")}).reduce(function(h,k){return h.concat(k)},[]);a.length;){var e=a.shift();if(e){var f=0;if(e.match(/^<\\w[^>\\/]*>[^>]+$/)){var g=sre.DomUtil.matchingStartEnd_(e,a[0]);g[0]?g[1]?(e+=a.shift().slice(0,-g[1].length),g[1].trim()&&a.unshift(g[1])):e+=a.shift():f=1}else e.match(/^<\\/\\w/)?0!=d&&--d:e.match(/^<\\w[^>]*[^\\/]>.*$/)?\nf=1:e.match(/^<\\w[^>]*\\/>.+$/)?(g=e.indexOf(\">\")+1,e.slice(g).trim()&&a.unshift(),e=e.slice(0,g)):f=0;b+=Array(d+1).join(\"  \")+e+\"\\r\\n\";d+=f}}return b};sre.DomUtil.matchingStartEnd_=function(a,b){if(!b)return[!1,\"\"];a=a.match(/^<([^> ]+).*>/);b=b.match(/^<\\/([^>]+)>(.*)/);return a&&b&&a[1]===b[1]?[!0,b[2]]:[!1,\"\"]};sre.DomUtil.dataAttribute=function(a){a.match(/^data-/)&&(a=a.substr(5));return a.replace(/-([a-z])/g,function(b,c){return c.toUpperCase()})};\nsre.DomUtil.getDataAttribute=function(a,b){return a.dataset?a.dataset[sre.DomUtil.dataAttribute(b)]:a.getAttribute(b)};sre.DomUtil.querySelectorAllByAttr=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(\"[\"+b+\"]\")):sre.XpathUtil.evalXPath(\".//*[@\"+b+\"]\",a)};sre.DomUtil.querySelectorAllByAttrValue=function(a,b,c){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(\"[\"+b+'=\"'+c+'\"]')):sre.XpathUtil.evalXPath(\".//*[@\"+b+'=\"'+c+'\"]',a)};\nsre.DomUtil.querySelectorAll=function(a,b){return a.querySelectorAll?sre.DomUtil.toArray(a.querySelectorAll(b)):sre.XpathUtil.evalXPath(\".//\"+b,a)};sre.DomUtil.tagName=function(a){return a.tagName.toUpperCase()};sre.Numbers={};sre.Numbers.identityTransformer_=function(a){return a.toString()};sre.Numbers.pluralTransformer_=function(a,b){return a.toString()};sre.Numbers.NUMBERS={wordOrdinal:sre.Numbers.identityTransformer_,simpleOrdinal:sre.Numbers.identityTransformer_,numberToWords:sre.Numbers.identityTransformer_,numberToOrdinal:sre.Numbers.pluralTransformer_,vulgarSep:\" \",numSep:\" \"};sre.Messages={};sre.Messages.MS={START:\"\",FRAC_V:\"\",FRAC_B:\"\",FRAC_S:\"\",END:\"\",FRAC_OVER:\"\",TWICE:\"\",NEST_FRAC:\"\",ENDFRAC:\"\",SUPER:\"\",SUB:\"\",SUP:\"\",SUPERSCRIPT:\"\",SUBSCRIPT:\"\",BASELINE:\"\",BASE:\"\",NESTED:\"\",NEST_ROOT:\"\",STARTROOT:\"\",ENDROOT:\"\",ROOTINDEX:\"\",ROOT:\"\",INDEX:\"\",UNDER:\"\",UNDERSCRIPT:\"\",OVER:\"\",OVERSCRIPT:\"\"};sre.Messages.MS_FUNC={FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:function(a,b){return a}};sre.Messages.MS_ROOT_INDEX={};\nsre.Messages.FONT={bold:\"\",\"bold-fraktur\":\"\",\"bold-italic\":\"\",\"bold-script\":\"\",caligraphic:\"\",\"caligraphic-bold\":\"\",\"double-struck\":\"\",\"double-struck-italic\":\"\",fraktur:\"\",italic:\"\",monospace:\"\",normal:\"\",oldstyle:\"\",\"oldstyle-bold\":\"\",script:\"\",\"sans-serif\":\"\",\"sans-serif-italic\":\"\",\"sans-serif-bold\":\"\",\"sans-serif-bold-italic\":\"\",unknown:\"\"};\nsre.Messages.EMBELLISH={\"super\":\"\",sub:\"\",circled:\"\",parenthesized:\"\",period:\"\",\"negative-circled\":\"\",\"double-circled\":\"\",\"circled-sans-serif\":\"\",\"negative-circled-sans-serif\":\"\",blackboard:\"\",comma:\"\",squared:\"\",\"negative-squared\":\"\"};\nsre.Messages.ROLE={addition:\"\",multiplication:\"\",subtraction:\"\",division:\"\",equality:\"\",inequality:\"\",element:\"\",arrow:\"\",determinant:\"\",rowvector:\"\",binomial:\"\",squarematrix:\"\",\"set empty\":\"\",\"set extended\":\"\",\"set singleton\":\"\",\"set collection\":\"\",label:\"\",multiline:\"\",matrix:\"\",vector:\"\",cases:\"\",table:\"\",unknown:\"\"};\nsre.Messages.ENCLOSE={longdiv:\"\",actuarial:\"\",radical:\"\",box:\"\",roundedbox:\"\",circle:\"\",left:\"\",right:\"\",top:\"\",bottom:\"\",updiagonalstrike:\"\",downdiagonalstrike:\"\",verticalstrike:\"\",horizontalstrike:\"\",madruwb:\"\",updiagonalarrow:\"\",phasorangle:\"\",unknown:\"\"};sre.Messages.NAVIGATE={COLLAPSIBLE:\"\",EXPANDABLE:\"\",LEVEL:\"\"};sre.Messages.REGEXP={TEXT:\"a-zA-Z\",NUMBER:\"\",DECIMAL_MARK:\"\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\" \"};sre.Messages.PLURAL_UNIT={};\nsre.Messages.PLURAL=function(a){return/.*s$/.test(a)?a:a+\"s\"};sre.Messages.UNIT_TIMES=\"\";sre.Messages.NUMBERS=sre.Numbers.NUMBERS;sre.Messages.ALPHABETS={latinSmall:[],latinCap:[],greekSmall:[],greekCap:[]};sre.Messages.ALPHABET_PREFIXES={capPrefix:{default:\"\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}};sre.Messages.identityTransformer_=function(a){return a.toString()};sre.Messages.ALPHABET_TRANSFORMERS={digit:{default:sre.Messages.identityTransformer_},letter:{default:sre.Messages.identityTransformer_}};\nsre.Messages.ALPHABET_COMBINER=function(a,b,c){return a};sre.NumbersUtil={};sre.NumbersUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.simpleOrdinal(++c)+\" \"+b}};\nsre.NumbersUtil.convertVulgarFraction_=function(a){if(!a.childNodes||!a.childNodes[0]||!a.childNodes[0].childNodes||2>a.childNodes[0].childNodes.length||a.childNodes[0].childNodes[0].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[0].getAttribute(\"role\")!==sre.SemanticAttr.Role.INTEGER||a.childNodes[0].childNodes[1].tagName!==sre.SemanticAttr.Type.NUMBER||a.childNodes[0].childNodes[1].getAttribute(\"role\")!==sre.SemanticAttr.Role.INTEGER)return{convertible:!1,content:a.textContent};\nvar b=a.childNodes[0].childNodes[1].textContent;a=a.childNodes[0].childNodes[0].textContent;var c=Number(b),d=Number(a);return isNaN(c)||isNaN(d)?{convertible:!1,content:a+\" \"+sre.Messages.MS.FRAC_OVER+\" \"+b}:{convertible:!0,enumerator:d,denominator:c}};\nsre.NumbersUtil.vulgarFraction=function(a){a=sre.NumbersUtil.convertVulgarFraction_(a);return a.convertible&&a.enumerator&&a.denominator?sre.Messages.NUMBERS.numberToWords(a.enumerator)+sre.Messages.NUMBERS.vulgarSep+sre.Messages.NUMBERS.numberToOrdinal(a.denominator,1!==a.enumerator):a.content||\"\"};sre.NumbersUtil.vulgarFractionSmall=function(a,b,c){var d=sre.NumbersUtil.convertVulgarFraction_(a);return d.convertible?(a=d.enumerator,d=d.denominator,0<a&&a<b&&0<d&&d<c):!1};\nsre.NumbersUtil.ordinalPosition=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes);return sre.Messages.NUMBERS.simpleOrdinal(b.indexOf(a)+1).toString()};sre.SemanticUtil=function(){};sre.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};sre.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];a.forEach(function(c){for(var d in c)b.push(c[d])});return b};\nsre.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};sre.SemanticUtil.numberToUnicode=function(a){return 65536>a?String.fromCharCode(a):String.fromCharCode((a-65536)/1024+55296,(a-65536)%1024+56320)};\nsre.SemanticUtil.splitUnicode=function(a){a=a.split(\"\");for(var b=[],c=0,d;d=a[c];c++)\"\\ud800\"<=d&&\"\\udbff\">=d&&a[c+1]?b.push(d+a[++c]):b.push(d);return b};sre.SemanticUtil.LEAFTAGS=[\"MO\",\"MI\",\"MN\",\"MTEXT\",\"MS\"];sre.SemanticUtil.IGNORETAGS=\"MERROR MPHANTOM MSPACE MALIGNGROUP MALIGNMARK MPRESCRIPTS ANNOTATION ANNOTATION-XML\".split(\" \");sre.SemanticUtil.EMPTYTAGS=\"MATH MROW MPADDED MACTION NONE MSTYLE SEMANTICS\".split(\" \");sre.SemanticUtil.hasMathTag=function(a){return!!a&&\"MATH\"===sre.DomUtil.tagName(a)};\nsre.SemanticUtil.hasIgnoreTag=function(a){return!!a&&-1!==sre.SemanticUtil.IGNORETAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.hasEmptyTag=function(a){return!!a&&-1!==sre.SemanticUtil.EMPTYTAGS.indexOf(sre.DomUtil.tagName(a))};sre.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=sre.DomUtil.tagName(d);-1!=sre.SemanticUtil.IGNORETAGS.indexOf(e)||-1!=sre.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d)}return b};\nsre.SemanticUtil.isZeroLength=function(a){return a?-1!==\"negativeveryverythinmathspace negativeverythinmathspace negativethinmathspace negativemediummathspace negativethickmathspace negativeverythickmathspace negativeveryverythickmathspace\".split(\" \").indexOf(a)?!0:(a=a.match(/[0-9\\.]+/))?0===parseFloat(a)?!0:!1:!1:!1};sre.SemanticUtil.directSpeechKeys=[\"aria-label\",\"exact-speech\",\"alt\"];\nsre.SemanticUtil.addAttributes=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;d.match(/^ext/)&&(a.attributes[d]=b[c].value);-1!==sre.SemanticUtil.directSpeechKeys.indexOf(d)&&(a.attributes[\"ext-speech\"]=b[c].value)}}};sre.SemanticAttr=function(){this.generalPunctuations='!\"#%&:;?@\\\\\\u00a1\\u00a7\\u00b6\\u00bf\\u2017\\u2020\\u2021\\u2022\\u2023\\u2024\\u2025\\u2027\\u2030\\u2031\\u2038\\u203b\\u203c\\u203d\\u203e\\u2041\\u2042\\u2043\\u2047\\u2048\\u2049\\u204b\\u204c\\u204d\\u204e\\u204f\\u2050\\u2051\\u2053\\u2055\\u2056\\u2058\\u2059\\u205a\\u205b\\u205c\\u205d\\u205e\\ufe10\\ufe13\\ufe14\\ufe15\\ufe16\\ufe30\\ufe45\\ufe46\\ufe49\\ufe4a\\ufe4b\\ufe4c\\ufe50\\ufe54\\ufe55\\ufe56\\ufe57\\ufe5f\\ufe60\\ufe61\\ufe68\\ufe6a\\ufe6b\\uff01\\uff02\\uff03\\uff05\\uff06\\uff07\\uff0a\\uff0c\\uff0f\\uff1a\\uff1b\\uff1f\\uff20\\uff3c'.split(\"\");\nthis.colons=[\":\",\"\\uff1a\",\"\\ufe55\"];this.invisibleComma_=sre.SemanticUtil.numberToUnicode(8291);this.commas=[\",\",this.invisibleComma_];this.ellipses=\"\\u2026\\u22ee\\u22ef\\u22f0\\u22f1\\ufe19\".split(\"\");this.fullStops=[\".\",\"\\ufe52\",\"\\uff0e\"];this.dashes=\"\\u2012\\u2013\\u2014\\u2015\\u301c\\ufe31\\ufe32\\ufe58\".split(\"\");this.primes=\"'\\u2032\\u2033\\u2034\\u2035\\u2036\\u2037\\u2057\".split(\"\");this.degrees=[\"\\u00b0\"];this.openClosePairs={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"\\u2045\":\"\\u2046\",\"\\u2329\":\"\\u232a\",\"\\u2768\":\"\\u2769\",\n\"\\u276a\":\"\\u276b\",\"\\u276c\":\"\\u276d\",\"\\u276e\":\"\\u276f\",\"\\u2770\":\"\\u2771\",\"\\u2772\":\"\\u2773\",\"\\u2774\":\"\\u2775\",\"\\u27c5\":\"\\u27c6\",\"\\u27e6\":\"\\u27e7\",\"\\u27e8\":\"\\u27e9\",\"\\u27ea\":\"\\u27eb\",\"\\u27ec\":\"\\u27ed\",\"\\u27ee\":\"\\u27ef\",\"\\u2983\":\"\\u2984\",\"\\u2985\":\"\\u2986\",\"\\u2987\":\"\\u2988\",\"\\u2989\":\"\\u298a\",\"\\u298b\":\"\\u298c\",\"\\u298d\":\"\\u298e\",\"\\u298f\":\"\\u2990\",\"\\u2991\":\"\\u2992\",\"\\u2993\":\"\\u2994\",\"\\u2995\":\"\\u2996\",\"\\u2997\":\"\\u2998\",\"\\u29d8\":\"\\u29d9\",\"\\u29da\":\"\\u29db\",\"\\u29fc\":\"\\u29fd\",\"\\u2e22\":\"\\u2e23\",\"\\u2e24\":\"\\u2e25\",\n\"\\u2e26\":\"\\u2e27\",\"\\u2e28\":\"\\u2e29\",\"\\u3008\":\"\\u3009\",\"\\u300a\":\"\\u300b\",\"\\u300c\":\"\\u300d\",\"\\u300e\":\"\\u300f\",\"\\u3010\":\"\\u3011\",\"\\u3014\":\"\\u3015\",\"\\u3016\":\"\\u3017\",\"\\u3018\":\"\\u3019\",\"\\u301a\":\"\\u301b\",\"\\u301d\":\"\\u301e\",\"\\ufd3e\":\"\\ufd3f\",\"\\ufe17\":\"\\ufe18\",\"\\ufe59\":\"\\ufe5a\",\"\\ufe5b\":\"\\ufe5c\",\"\\ufe5d\":\"\\ufe5e\",\"\\uff08\":\"\\uff09\",\"\\uff3b\":\"\\uff3d\",\"\\uff5b\":\"\\uff5d\",\"\\uff5f\":\"\\uff60\",\"\\uff62\":\"\\uff63\",\"\\u2308\":\"\\u2309\",\"\\u230a\":\"\\u230b\",\"\\u230c\":\"\\u230d\",\"\\u230e\":\"\\u230f\",\"\\u231c\":\"\\u231d\",\"\\u231e\":\"\\u231f\",\n\"\\u239b\":\"\\u239e\",\"\\u239c\":\"\\u239f\",\"\\u239d\":\"\\u23a0\",\"\\u23a1\":\"\\u23a4\",\"\\u23a2\":\"\\u23a5\",\"\\u23a3\":\"\\u23a6\",\"\\u23a7\":\"\\u23ab\",\"\\u23a8\":\"\\u23ac\",\"\\u23a9\":\"\\u23ad\",\"\\u23b0\":\"\\u23b1\",\"\\u23b8\":\"\\u23b9\"};this.topBottomPairs={\"\\u23b4\":\"\\u23b5\",\"\\u23dc\":\"\\u23dd\",\"\\u23de\":\"\\u23df\",\"\\u23e0\":\"\\u23e1\",\"\\ufe35\":\"\\ufe36\",\"\\ufe37\":\"\\ufe38\",\"\\ufe39\":\"\\ufe3a\",\"\\ufe3b\":\"\\ufe3c\",\"\\ufe3d\":\"\\ufe3e\",\"\\ufe3f\":\"\\ufe40\",\"\\ufe41\":\"\\ufe42\",\"\\ufe43\":\"\\ufe44\",\"\\ufe47\":\"\\ufe48\"};this.leftFences=sre.SemanticUtil.objectsToKeys(this.openClosePairs);\nthis.rightFences=sre.SemanticUtil.objectsToValues(this.openClosePairs);this.rightFences.push(\"\\u301f\");this.topFences=sre.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=sre.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences=\"|\\u00a6\\u2016\\u2758\\u2980\\u2af4\\uffe4\\uff5c\\u2223\".split(\"\");this.allFences=this.neutralFences.concat(this.leftFences,this.rightFences,this.topFences,this.bottomFences);this.capitalLatin=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");this.smallLatin=\n\"abcdefghijklmnopqrstuvwxyz\\u0131\\u0237\".split(\"\");this.capitalLatinFullWidth=\"\\uff21\\uff22\\uff23\\uff24\\uff25\\uff26\\uff27\\uff28\\uff29\\uff2a\\uff2b\\uff2c\\uff2d\\uff2e\\uff2f\\uff30\\uff31\\uff32\\uff33\\uff34\\uff35\\uff36\\uff37\\uff38\\uff39\\uff3a\".split(\"\");this.smallLatinFullWidth=\"\\uff41\\uff42\\uff43\\uff44\\uff45\\uff46\\uff47\\uff48\\uff49\\uff4a\\uff4b\\uff4c\\uff4d\\uff4e\\uff4f\\uff50\\uff51\\uff52\\uff53\\uff54\\uff55\\uff56\\uff57\\uff58\\uff59\\uff5a\".split(\"\");this.capitalLatinBold=\"\\ud835\\udc00 \\ud835\\udc01 \\ud835\\udc02 \\ud835\\udc03 \\ud835\\udc04 \\ud835\\udc05 \\ud835\\udc06 \\ud835\\udc07 \\ud835\\udc08 \\ud835\\udc09 \\ud835\\udc0a \\ud835\\udc0b \\ud835\\udc0c \\ud835\\udc0d \\ud835\\udc0e \\ud835\\udc0f \\ud835\\udc10 \\ud835\\udc11 \\ud835\\udc12 \\ud835\\udc13 \\ud835\\udc14 \\ud835\\udc15 \\ud835\\udc16 \\ud835\\udc17 \\ud835\\udc18 \\ud835\\udc19\".split(\" \");\nthis.smallLatinBold=\"\\ud835\\udc1a \\ud835\\udc1b \\ud835\\udc1c \\ud835\\udc1d \\ud835\\udc1e \\ud835\\udc1f \\ud835\\udc20 \\ud835\\udc21 \\ud835\\udc22 \\ud835\\udc23 \\ud835\\udc24 \\ud835\\udc25 \\ud835\\udc26 \\ud835\\udc27 \\ud835\\udc28 \\ud835\\udc29 \\ud835\\udc2a \\ud835\\udc2b \\ud835\\udc2c \\ud835\\udc2d \\ud835\\udc2e \\ud835\\udc2f \\ud835\\udc30 \\ud835\\udc31 \\ud835\\udc32 \\ud835\\udc33\".split(\" \");this.capitalLatinItalic=\"\\ud835\\udc34 \\ud835\\udc35 \\ud835\\udc36 \\ud835\\udc37 \\ud835\\udc38 \\ud835\\udc39 \\ud835\\udc3a \\ud835\\udc3b \\ud835\\udc3c \\ud835\\udc3d \\ud835\\udc3e \\ud835\\udc3f \\ud835\\udc40 \\ud835\\udc41 \\ud835\\udc42 \\ud835\\udc43 \\ud835\\udc44 \\ud835\\udc45 \\ud835\\udc46 \\ud835\\udc47 \\ud835\\udc48 \\ud835\\udc49 \\ud835\\udc4a \\ud835\\udc4b \\ud835\\udc4c \\ud835\\udc4d\".split(\" \");\nthis.smallLatinItalic=\"\\ud835\\udc4e \\ud835\\udc4f \\ud835\\udc50 \\ud835\\udc51 \\ud835\\udc52 \\ud835\\udc53 \\ud835\\udc54 \\u210e \\ud835\\udc56 \\ud835\\udc57 \\ud835\\udc58 \\ud835\\udc59 \\ud835\\udc5a \\ud835\\udc5b \\ud835\\udc5c \\ud835\\udc5d \\ud835\\udc5e \\ud835\\udc5f \\ud835\\udc60 \\ud835\\udc61 \\ud835\\udc62 \\ud835\\udc63 \\ud835\\udc64 \\ud835\\udc65 \\ud835\\udc66 \\ud835\\udc67 \\ud835\\udea4 \\ud835\\udea5\".split(\" \");this.capitalLatinBoldItalic=\"\\ud835\\udc68 \\ud835\\udc69 \\ud835\\udc6a \\ud835\\udc6b \\ud835\\udc6c \\ud835\\udc6d \\ud835\\udc6e \\ud835\\udc6f \\ud835\\udc70 \\ud835\\udc71 \\ud835\\udc72 \\ud835\\udc73 \\ud835\\udc74 \\ud835\\udc75 \\ud835\\udc76 \\ud835\\udc77 \\ud835\\udc78 \\ud835\\udc79 \\ud835\\udc7a \\ud835\\udc7b \\ud835\\udc7c \\ud835\\udc7d \\ud835\\udc7e \\ud835\\udc7f \\ud835\\udc80 \\ud835\\udc81\".split(\" \");\nthis.smallLatinBoldItalic=\"\\ud835\\udc82 \\ud835\\udc83 \\ud835\\udc84 \\ud835\\udc85 \\ud835\\udc86 \\ud835\\udc87 \\ud835\\udc88 \\ud835\\udc89 \\ud835\\udc8a \\ud835\\udc8b \\ud835\\udc8c \\ud835\\udc8d \\ud835\\udc8e \\ud835\\udc8f \\ud835\\udc90 \\ud835\\udc91 \\ud835\\udc92 \\ud835\\udc93 \\ud835\\udc94 \\ud835\\udc95 \\ud835\\udc96 \\ud835\\udc97 \\ud835\\udc98 \\ud835\\udc99 \\ud835\\udc9a \\ud835\\udc9b\".split(\" \");this.capitalLatinScript=\"\\ud835\\udc9c \\u212c \\ud835\\udc9e \\ud835\\udc9f \\u2130 \\u2131 \\ud835\\udca2 \\u210b \\u2110 \\ud835\\udca5 \\ud835\\udca6 \\u2112 \\u2133 \\ud835\\udca9 \\ud835\\udcaa \\ud835\\udcab \\ud835\\udcac \\u211b \\ud835\\udcae \\ud835\\udcaf \\ud835\\udcb0 \\ud835\\udcb1 \\ud835\\udcb2 \\ud835\\udcb3 \\ud835\\udcb4 \\ud835\\udcb5 \\u2118\".split(\" \");\nthis.smallLatinScript=\"\\ud835\\udcb6 \\ud835\\udcb7 \\ud835\\udcb8 \\ud835\\udcb9 \\u212f \\ud835\\udcbb \\u210a \\ud835\\udcbd \\ud835\\udcbe \\ud835\\udcbf \\ud835\\udcc0 \\ud835\\udcc1 \\ud835\\udcc2 \\ud835\\udcc3 \\u2134 \\ud835\\udcc5 \\ud835\\udcc6 \\ud835\\udcc7 \\ud835\\udcc8 \\ud835\\udcc9 \\ud835\\udcca \\ud835\\udccb \\ud835\\udccc \\ud835\\udccd \\ud835\\udcce \\ud835\\udccf \\u2113\".split(\" \");this.capitalLatinBoldScript=\"\\ud835\\udcd0 \\ud835\\udcd1 \\ud835\\udcd2 \\ud835\\udcd3 \\ud835\\udcd4 \\ud835\\udcd5 \\ud835\\udcd6 \\ud835\\udcd7 \\ud835\\udcd8 \\ud835\\udcd9 \\ud835\\udcda \\ud835\\udcdb \\ud835\\udcdc \\ud835\\udcdd \\ud835\\udcde \\ud835\\udcdf \\ud835\\udce0 \\ud835\\udce1 \\ud835\\udce2 \\ud835\\udce3 \\ud835\\udce4 \\ud835\\udce5 \\ud835\\udce6 \\ud835\\udce7 \\ud835\\udce8 \\ud835\\udce9\".split(\" \");\nthis.smallLatinBoldScript=\"\\ud835\\udcea \\ud835\\udceb \\ud835\\udcec \\ud835\\udced \\ud835\\udcee \\ud835\\udcef \\ud835\\udcf0 \\ud835\\udcf1 \\ud835\\udcf2 \\ud835\\udcf3 \\ud835\\udcf4 \\ud835\\udcf5 \\ud835\\udcf6 \\ud835\\udcf7 \\ud835\\udcf8 \\ud835\\udcf9 \\ud835\\udcfa \\ud835\\udcfb \\ud835\\udcfc \\ud835\\udcfd \\ud835\\udcfe \\ud835\\udcff \\ud835\\udd00 \\ud835\\udd01 \\ud835\\udd02 \\ud835\\udd03\".split(\" \");this.capitalLatinFraktur=\"\\ud835\\udd04 \\ud835\\udd05 \\u212d \\ud835\\udd07 \\ud835\\udd08 \\ud835\\udd09 \\ud835\\udd0a \\u210c \\u2111 \\ud835\\udd0d \\ud835\\udd0e \\ud835\\udd0f \\ud835\\udd10 \\ud835\\udd11 \\ud835\\udd12 \\ud835\\udd13 \\ud835\\udd14 \\u211c \\ud835\\udd16 \\ud835\\udd17 \\ud835\\udd18 \\ud835\\udd19 \\ud835\\udd1a \\ud835\\udd1b \\ud835\\udd1c \\u2128\".split(\" \");\nthis.smallLatinFraktur=\"\\ud835\\udd1e \\ud835\\udd1f \\ud835\\udd20 \\ud835\\udd21 \\ud835\\udd22 \\ud835\\udd23 \\ud835\\udd24 \\ud835\\udd25 \\ud835\\udd26 \\ud835\\udd27 \\ud835\\udd28 \\ud835\\udd29 \\ud835\\udd2a \\ud835\\udd2b \\ud835\\udd2c \\ud835\\udd2d \\ud835\\udd2e \\ud835\\udd2f \\ud835\\udd30 \\ud835\\udd31 \\ud835\\udd32 \\ud835\\udd33 \\ud835\\udd34 \\ud835\\udd35 \\ud835\\udd36 \\ud835\\udd37\".split(\" \");this.capitalLatinDoubleStruck=\"\\ud835\\udd38 \\ud835\\udd39 \\u2102 \\ud835\\udd3b \\ud835\\udd3c \\ud835\\udd3d \\ud835\\udd3e \\u210d \\ud835\\udd40 \\ud835\\udd41 \\ud835\\udd42 \\ud835\\udd43 \\ud835\\udd44 \\u2115 \\ud835\\udd46 \\u2119 \\u211a \\u211d \\ud835\\udd4a \\ud835\\udd4b \\ud835\\udd4c \\ud835\\udd4d \\ud835\\udd4e \\ud835\\udd4f \\ud835\\udd50 \\u2124\".split(\" \");\nthis.smallLatinDoubleStruck=\"\\ud835\\udd52 \\ud835\\udd53 \\ud835\\udd54 \\ud835\\udd55 \\ud835\\udd56 \\ud835\\udd57 \\ud835\\udd58 \\ud835\\udd59 \\ud835\\udd5a \\ud835\\udd5b \\ud835\\udd5c \\ud835\\udd5d \\ud835\\udd5e \\ud835\\udd5f \\ud835\\udd60 \\ud835\\udd61 \\ud835\\udd62 \\ud835\\udd63 \\ud835\\udd64 \\ud835\\udd65 \\ud835\\udd66 \\ud835\\udd67 \\ud835\\udd68 \\ud835\\udd69 \\ud835\\udd6a \\ud835\\udd6b\".split(\" \");this.capitalLatinBoldFraktur=\"\\ud835\\udd6c \\ud835\\udd6d \\ud835\\udd6e \\ud835\\udd6f \\ud835\\udd70 \\ud835\\udd71 \\ud835\\udd72 \\ud835\\udd73 \\ud835\\udd74 \\ud835\\udd75 \\ud835\\udd76 \\ud835\\udd77 \\ud835\\udd78 \\ud835\\udd79 \\ud835\\udd7a \\ud835\\udd7b \\ud835\\udd7c \\ud835\\udd7d \\ud835\\udd7e \\ud835\\udd7f \\ud835\\udd80 \\ud835\\udd81 \\ud835\\udd82 \\ud835\\udd83 \\ud835\\udd84 \\ud835\\udd85\".split(\" \");\nthis.smallLatinBoldFraktur=\"\\ud835\\udd86 \\ud835\\udd87 \\ud835\\udd88 \\ud835\\udd89 \\ud835\\udd8a \\ud835\\udd8b \\ud835\\udd8c \\ud835\\udd8d \\ud835\\udd8e \\ud835\\udd8f \\ud835\\udd90 \\ud835\\udd91 \\ud835\\udd92 \\ud835\\udd93 \\ud835\\udd94 \\ud835\\udd95 \\ud835\\udd96 \\ud835\\udd97 \\ud835\\udd98 \\ud835\\udd99 \\ud835\\udd9a \\ud835\\udd9b \\ud835\\udd9c \\ud835\\udd9d \\ud835\\udd9e \\ud835\\udd9f\".split(\" \");this.capitalLatinSansSerif=\"\\ud835\\udda0 \\ud835\\udda1 \\ud835\\udda2 \\ud835\\udda3 \\ud835\\udda4 \\ud835\\udda5 \\ud835\\udda6 \\ud835\\udda7 \\ud835\\udda8 \\ud835\\udda9 \\ud835\\uddaa \\ud835\\uddab \\ud835\\uddac \\ud835\\uddad \\ud835\\uddae \\ud835\\uddaf \\ud835\\uddb0 \\ud835\\uddb1 \\ud835\\uddb2 \\ud835\\uddb3 \\ud835\\uddb4 \\ud835\\uddb5 \\ud835\\uddb6 \\ud835\\uddb7 \\ud835\\uddb8 \\ud835\\uddb9\".split(\" \");\nthis.smallLatinSansSerif=\"\\ud835\\uddba \\ud835\\uddbb \\ud835\\uddbc \\ud835\\uddbd \\ud835\\uddbe \\ud835\\uddbf \\ud835\\uddc0 \\ud835\\uddc1 \\ud835\\uddc2 \\ud835\\uddc3 \\ud835\\uddc4 \\ud835\\uddc5 \\ud835\\uddc6 \\ud835\\uddc7 \\ud835\\uddc8 \\ud835\\uddc9 \\ud835\\uddca \\ud835\\uddcb \\ud835\\uddcc \\ud835\\uddcd \\ud835\\uddce \\ud835\\uddcf \\ud835\\uddd0 \\ud835\\uddd1 \\ud835\\uddd2 \\ud835\\uddd3\".split(\" \");this.capitalLatinSansSerifBold=\"\\ud835\\uddd4 \\ud835\\uddd5 \\ud835\\uddd6 \\ud835\\uddd7 \\ud835\\uddd8 \\ud835\\uddd9 \\ud835\\uddda \\ud835\\udddb \\ud835\\udddc \\ud835\\udddd \\ud835\\uddde \\ud835\\udddf \\ud835\\udde0 \\ud835\\udde1 \\ud835\\udde2 \\ud835\\udde3 \\ud835\\udde4 \\ud835\\udde5 \\ud835\\udde6 \\ud835\\udde7 \\ud835\\udde8 \\ud835\\udde9 \\ud835\\uddea \\ud835\\uddeb \\ud835\\uddec \\ud835\\udded\".split(\" \");\nthis.smallLatinSansSerifBold=\"\\ud835\\uddee \\ud835\\uddef \\ud835\\uddf0 \\ud835\\uddf1 \\ud835\\uddf2 \\ud835\\uddf3 \\ud835\\uddf4 \\ud835\\uddf5 \\ud835\\uddf6 \\ud835\\uddf7 \\ud835\\uddf8 \\ud835\\uddf9 \\ud835\\uddfa \\ud835\\uddfb \\ud835\\uddfc \\ud835\\uddfd \\ud835\\uddfe \\ud835\\uddff \\ud835\\ude00 \\ud835\\ude01 \\ud835\\ude02 \\ud835\\ude03 \\ud835\\ude04 \\ud835\\ude05 \\ud835\\ude06 \\ud835\\ude07\".split(\" \");this.capitalLatinSansSerifItalic=\"\\ud835\\ude08 \\ud835\\ude09 \\ud835\\ude0a \\ud835\\ude0b \\ud835\\ude0c \\ud835\\ude0d \\ud835\\ude0e \\ud835\\ude0f \\ud835\\ude10 \\ud835\\ude11 \\ud835\\ude12 \\ud835\\ude13 \\ud835\\ude14 \\ud835\\ude15 \\ud835\\ude16 \\ud835\\ude17 \\ud835\\ude18 \\ud835\\ude19 \\ud835\\ude1a \\ud835\\ude1b \\ud835\\ude1c \\ud835\\ude1d \\ud835\\ude1e \\ud835\\ude1f \\ud835\\ude20 \\ud835\\ude21\".split(\" \");\nthis.smallLatinSansSerifItalic=\"\\ud835\\ude22 \\ud835\\ude23 \\ud835\\ude24 \\ud835\\ude25 \\ud835\\ude26 \\ud835\\ude27 \\ud835\\ude28 \\ud835\\ude29 \\ud835\\ude2a \\ud835\\ude2b \\ud835\\ude2c \\ud835\\ude2d \\ud835\\ude2e \\ud835\\ude2f \\ud835\\ude30 \\ud835\\ude31 \\ud835\\ude32 \\ud835\\ude33 \\ud835\\ude34 \\ud835\\ude35 \\ud835\\ude36 \\ud835\\ude37 \\ud835\\ude38 \\ud835\\ude39 \\ud835\\ude3a \\ud835\\ude3b\".split(\" \");this.capitalLatinSansSerifBoldItalic=\"\\ud835\\ude3c \\ud835\\ude3d \\ud835\\ude3e \\ud835\\ude3f \\ud835\\ude40 \\ud835\\ude41 \\ud835\\ude42 \\ud835\\ude43 \\ud835\\ude44 \\ud835\\ude45 \\ud835\\ude46 \\ud835\\ude47 \\ud835\\ude48 \\ud835\\ude49 \\ud835\\ude4a \\ud835\\ude4b \\ud835\\ude4c \\ud835\\ude4d \\ud835\\ude4e \\ud835\\ude4f \\ud835\\ude50 \\ud835\\ude51 \\ud835\\ude52 \\ud835\\ude53 \\ud835\\ude54 \\ud835\\ude55\".split(\" \");\nthis.smallLatinSansSerifBoldItalic=\"\\ud835\\ude56 \\ud835\\ude57 \\ud835\\ude58 \\ud835\\ude59 \\ud835\\ude5a \\ud835\\ude5b \\ud835\\ude5c \\ud835\\ude5d \\ud835\\ude5e \\ud835\\ude5f \\ud835\\ude60 \\ud835\\ude61 \\ud835\\ude62 \\ud835\\ude63 \\ud835\\ude64 \\ud835\\ude65 \\ud835\\ude66 \\ud835\\ude67 \\ud835\\ude68 \\ud835\\ude69 \\ud835\\ude6a \\ud835\\ude6b \\ud835\\ude6c \\ud835\\ude6d \\ud835\\ude6e \\ud835\\ude6f\".split(\" \");this.capitalLatinMonospace=\"\\ud835\\ude70 \\ud835\\ude71 \\ud835\\ude72 \\ud835\\ude73 \\ud835\\ude74 \\ud835\\ude75 \\ud835\\ude76 \\ud835\\ude77 \\ud835\\ude78 \\ud835\\ude79 \\ud835\\ude7a \\ud835\\ude7b \\ud835\\ude7c \\ud835\\ude7d \\ud835\\ude7e \\ud835\\ude7f \\ud835\\ude80 \\ud835\\ude81 \\ud835\\ude82 \\ud835\\ude83 \\ud835\\ude84 \\ud835\\ude85 \\ud835\\ude86 \\ud835\\ude87 \\ud835\\ude88 \\ud835\\ude89\".split(\" \");\nthis.smallLatinMonospace=\"\\ud835\\ude8a \\ud835\\ude8b \\ud835\\ude8c \\ud835\\ude8d \\ud835\\ude8e \\ud835\\ude8f \\ud835\\ude90 \\ud835\\ude91 \\ud835\\ude92 \\ud835\\ude93 \\ud835\\ude94 \\ud835\\ude95 \\ud835\\ude96 \\ud835\\ude97 \\ud835\\ude98 \\ud835\\ude99 \\ud835\\ude9a \\ud835\\ude9b \\ud835\\ude9c \\ud835\\ude9d \\ud835\\ude9e \\ud835\\ude9f \\ud835\\udea0 \\ud835\\udea1 \\ud835\\udea2 \\ud835\\udea3\".split(\" \");this.latinDoubleStruckItalic=[\"\\u2145\",\"\\u2146\",\"\\u2147\",\"\\u2148\",\"\\u2149\"];this.capitalGreek=\"\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\".split(\"\");\nthis.smallGreek=\"\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\".split(\"\");this.capitalGreekBold=\"\\ud835\\udea8 \\ud835\\udea9 \\ud835\\udeaa \\ud835\\udeab \\ud835\\udeac \\ud835\\udead \\ud835\\udeae \\ud835\\udeaf \\ud835\\udeb0 \\ud835\\udeb1 \\ud835\\udeb2 \\ud835\\udeb3 \\ud835\\udeb4 \\ud835\\udeb5 \\ud835\\udeb6 \\ud835\\udeb7 \\ud835\\udeb8 \\ud835\\udeba \\ud835\\udebb \\ud835\\udebc \\ud835\\udebd \\ud835\\udebe \\ud835\\udebf \\ud835\\udec0\".split(\" \");\nthis.smallGreekBold=\"\\ud835\\udec2 \\ud835\\udec3 \\ud835\\udec4 \\ud835\\udec5 \\ud835\\udec6 \\ud835\\udec7 \\ud835\\udec8 \\ud835\\udec9 \\ud835\\udeca \\ud835\\udecb \\ud835\\udecc \\ud835\\udecd \\ud835\\udece \\ud835\\udecf \\ud835\\uded0 \\ud835\\uded1 \\ud835\\uded2 \\ud835\\uded3 \\ud835\\uded4 \\ud835\\uded5 \\ud835\\uded6 \\ud835\\uded7 \\ud835\\uded8 \\ud835\\uded9 \\ud835\\udeda\".split(\" \");this.capitalGreekItalic=\"\\ud835\\udee2 \\ud835\\udee3 \\ud835\\udee4 \\ud835\\udee5 \\ud835\\udee6 \\ud835\\udee7 \\ud835\\udee8 \\ud835\\udee9 \\ud835\\udeea \\ud835\\udeeb \\ud835\\udeec \\ud835\\udeed \\ud835\\udeee \\ud835\\udeef \\ud835\\udef0 \\ud835\\udef1 \\ud835\\udef2 \\ud835\\udef4 \\ud835\\udef5 \\ud835\\udef6 \\ud835\\udef7 \\ud835\\udef8 \\ud835\\udef9 \\ud835\\udefa\".split(\" \");\nthis.smallGreekItalic=\"\\ud835\\udefc \\ud835\\udefd \\ud835\\udefe \\ud835\\udeff \\ud835\\udf00 \\ud835\\udf01 \\ud835\\udf02 \\ud835\\udf03 \\ud835\\udf04 \\ud835\\udf05 \\ud835\\udf06 \\ud835\\udf07 \\ud835\\udf08 \\ud835\\udf09 \\ud835\\udf0a \\ud835\\udf0b \\ud835\\udf0c \\ud835\\udf0d \\ud835\\udf0e \\ud835\\udf0f \\ud835\\udf10 \\ud835\\udf11 \\ud835\\udf12 \\ud835\\udf13 \\ud835\\udf14\".split(\" \");this.capitalGreekBoldItalic=\"\\ud835\\udf1c \\ud835\\udf1d \\ud835\\udf1e \\ud835\\udf1f \\ud835\\udf20 \\ud835\\udf21 \\ud835\\udf22 \\ud835\\udf23 \\ud835\\udf24 \\ud835\\udf25 \\ud835\\udf26 \\ud835\\udf27 \\ud835\\udf28 \\ud835\\udf29 \\ud835\\udf2a \\ud835\\udf2b \\ud835\\udf2c \\ud835\\udf2e \\ud835\\udf2f \\ud835\\udf30 \\ud835\\udf31 \\ud835\\udf32 \\ud835\\udf33 \\ud835\\udf34\".split(\" \");\nthis.smallGreekBoldItalic=\"\\ud835\\udf36 \\ud835\\udf37 \\ud835\\udf38 \\ud835\\udf39 \\ud835\\udf3a \\ud835\\udf3b \\ud835\\udf3c \\ud835\\udf3d \\ud835\\udf3e \\ud835\\udf3f \\ud835\\udf40 \\ud835\\udf41 \\ud835\\udf42 \\ud835\\udf43 \\ud835\\udf44 \\ud835\\udf45 \\ud835\\udf46 \\ud835\\udf47 \\ud835\\udf48 \\ud835\\udf49 \\ud835\\udf4a \\ud835\\udf4b \\ud835\\udf4c \\ud835\\udf4d \\ud835\\udf4e\".split(\" \");this.capitalGreekSansSerifBold=\"\\ud835\\udf56 \\ud835\\udf57 \\ud835\\udf58 \\ud835\\udf59 \\ud835\\udf5a \\ud835\\udf5b \\ud835\\udf5c \\ud835\\udf5d \\ud835\\udf5e \\ud835\\udf5f \\ud835\\udf60 \\ud835\\udf61 \\ud835\\udf62 \\ud835\\udf63 \\ud835\\udf64 \\ud835\\udf65 \\ud835\\udf66 \\ud835\\udf68 \\ud835\\udf69 \\ud835\\udf6a \\ud835\\udf6b \\ud835\\udf6c \\ud835\\udf6d \\ud835\\udf6e\".split(\" \");\nthis.smallGreekSansSerifBold=\"\\ud835\\udf70 \\ud835\\udf71 \\ud835\\udf72 \\ud835\\udf73 \\ud835\\udf74 \\ud835\\udf75 \\ud835\\udf76 \\ud835\\udf77 \\ud835\\udf78 \\ud835\\udf79 \\ud835\\udf7a \\ud835\\udf7b \\ud835\\udf7c \\ud835\\udf7d \\ud835\\udf7e \\ud835\\udf7f \\ud835\\udf80 \\ud835\\udf81 \\ud835\\udf82 \\ud835\\udf83 \\ud835\\udf84 \\ud835\\udf85 \\ud835\\udf86 \\ud835\\udf87 \\ud835\\udf88\".split(\" \");this.capitalGreekSansSerifBoldItalic=\"\\ud835\\udf90 \\ud835\\udf91 \\ud835\\udf92 \\ud835\\udf93 \\ud835\\udf94 \\ud835\\udf95 \\ud835\\udf96 \\ud835\\udf97 \\ud835\\udf98 \\ud835\\udf99 \\ud835\\udf9a \\ud835\\udf9b \\ud835\\udf9c \\ud835\\udf9d \\ud835\\udf9e \\ud835\\udf9f \\ud835\\udfa0 \\ud835\\udfa2 \\ud835\\udfa3 \\ud835\\udfa4 \\ud835\\udfa5 \\ud835\\udfa6 \\ud835\\udfa7 \\ud835\\udfa8\".split(\" \");\nthis.smallGreekSansSerifBoldItalic=\"\\ud835\\udfaa \\ud835\\udfab \\ud835\\udfac \\ud835\\udfad \\ud835\\udfae \\ud835\\udfaf \\ud835\\udfb0 \\ud835\\udfb1 \\ud835\\udfb2 \\ud835\\udfb3 \\ud835\\udfb4 \\ud835\\udfb5 \\ud835\\udfb6 \\ud835\\udfb7 \\ud835\\udfb8 \\ud835\\udfb9 \\ud835\\udfba \\ud835\\udfbb \\ud835\\udfbc \\ud835\\udfbd \\ud835\\udfbe \\ud835\\udfbf \\ud835\\udfc0 \\ud835\\udfc1 \\ud835\\udfc2\".split(\" \");this.greekDoubleStruck=[\"\\u213c\",\"\\u213d\",\"\\u213e\",\"\\u213f\"];this.greekSpecial=\"\\u03d0\\u03d1\\u03d5\\u03d6\\u03d7\\u03f0\\u03f1\\u03f5\\u03f6\\u03f4\".split(\"\");\nthis.greekSpecialBold=\"\\ud835\\udedc \\ud835\\udedd \\ud835\\udede \\ud835\\udedf \\ud835\\udee0 \\ud835\\udee1\".split(\" \");this.greekSpecialItalic=\"\\ud835\\udf16 \\ud835\\udf17 \\ud835\\udf18 \\ud835\\udf19 \\ud835\\udf1a \\ud835\\udf1b\".split(\" \");this.greekSpecialSansSerifBold=\"\\ud835\\udf8a \\ud835\\udf8b \\ud835\\udf8c \\ud835\\udf8d \\ud835\\udf8e \\ud835\\udf8f\".split(\" \");this.hebrewLetters=[\"\\u2135\",\"\\u2136\",\"\\u2137\",\"\\u2138\"];this.allLetters=this.capitalLatin.concat(this.smallLatin,this.capitalLatinFullWidth,this.smallLatinFullWidth,\nthis.capitalLatinBold,this.smallLatinBold,this.capitalLatinItalic,this.capitalLatinBoldItalic,this.smallLatinBoldItalic,this.smallLatinItalic,this.capitalLatinScript,this.smallLatinScript,this.capitalLatinBoldScript,this.smallLatinBoldScript,this.capitalLatinFraktur,this.smallLatinFraktur,this.capitalLatinDoubleStruck,this.smallLatinDoubleStruck,this.capitalLatinBoldFraktur,this.smallLatinBoldFraktur,this.capitalLatinSansSerif,this.smallLatinSansSerif,this.capitalLatinSansSerifBold,this.smallLatinSansSerifBold,\nthis.capitalLatinSansSerifItalic,this.smallLatinSansSerifItalic,this.capitalLatinSansSerifBoldItalic,this.smallLatinSansSerifBoldItalic,this.capitalLatinMonospace,this.smallLatinMonospace,this.latinDoubleStruckItalic,this.capitalGreek,this.smallGreek,this.capitalGreekBold,this.smallGreekBold,this.capitalGreekItalic,this.smallGreekItalic,this.capitalGreekBoldItalic,this.smallGreekBoldItalic,this.capitalGreekSansSerifBold,this.smallGreekSansSerifBold,this.greekDoubleStruck,this.greekSpecial,this.capitalGreekSansSerifBoldItalic,\nthis.smallGreekSansSerifBoldItalic,this.greekSpecialBold,this.greekSpecialItalic,this.greekSpecialSansSerifBold,this.hebrewLetters);this.additions=\"+\\u00b1\\u2213\\u2214\\u2227\\u2228\\u2229\\u222a\\u228c\\u2293\\u2294\\u229d\\u229e\\u22a4\\u22a5\\u22ba\\u22bb\\u22bc\\u22c4\\u22ce\\u22cf\\u22d2\\u22d3\\u25b3\\u25b7\\u25bd\\u25c1\\u2a5e\\u2295\".split(\"\");this.invisiblePlus_=sre.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications=\"\\u2020\\u2021\\u2210\\u2217\\u2218\\u2219\\u2240\\u229a\\u229b\\u22a0\\u22a1\\u22c5\\u22c6\\u22c7\\u22c9\\u22ca\\u22cb\\u22cc\\u25cb\\u00b7*\".split(\"\");\nthis.invisibleTimes_=sre.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions=\"-\\u2052\\u207b\\u208b\\u2212\\u2216\\u2238\\u2242\\u2296\\u229f\\u2796\\u2a29\\u2a2a\\u2a2b\\u2a2c\\u2a3a\\u2a41\\u2a6c\\ufe63\\uff0d\\u2010\\u2011\".split(\"\");this.divisions=\"/\\u00f7\\u2044\\u2215\\u2298\\u27cc\\u29bc\\u2a38\".split(\"\");this.functionApplication_=sre.SemanticUtil.numberToUnicode(8289);this.equalities=\"=~\\u207c\\u208c\\u223c\\u223d\\u2243\\u2245\\u2248\\u224a\\u224b\\u224c\\u224d\\u224e\\u2251\\u2252\\u2253\\u2254\\u2255\\u2256\\u2257\\u2258\\u2259\\u225a\\u225b\\u225c\\u225d\\u225e\\u225f\\u2261\\u2263\\u29e4\\u2a66\\u2a6e\\u2a6f\\u2a70\\u2a71\\u2a72\\u2a73\\u2a74\\u2a75\\u2a76\\u2a77\\u2a78\\u22d5\\u2a6d\\u2a6a\\u2a6b\\u2a6c\\ufe66\\uff1d\".split(\"\");\nthis.inequalities=\"<>\\u2241\\u2242\\u2244\\u2246\\u2247\\u2249\\u224f\\u2250\\u2260\\u2262\\u2264\\u2265\\u2266\\u2267\\u2268\\u2269\\u226a\\u226b\\u226c\\u226d\\u226e\\u226f\\u2270\\u2271\\u2272\\u2273\\u2274\\u2275\\u2276\\u2277\\u2278\\u2279\\u227a\\u227b\\u227c\\u227d\\u227e\\u227f\\u2280\\u2281\\u22d6\\u22d7\\u22d8\\u22d9\\u22da\\u22db\\u22dc\\u22dd\\u22de\\u22df\\u22e0\\u22e1\\u22e2\\u22e3\\u22e4\\u22e5\\u22e6\\u22e7\\u22e8\\u22e9\\u2a79\\u2a7a\\u2a7b\\u2a7c\\u2a7d\\u2a7e\\u2a7f\\u2a80\\u2a81\\u2a82\\u2a83\\u2a84\\u2a85\\u2a86\\u2a87\\u2a88\\u2a89\\u2a8a\\u2a8b\\u2a8c\\u2a8d\\u2a8e\\u2a8f\\u2a90\\u2a91\\u2a92\\u2a93\\u2a94\\u2a95\\u2a96\\u2a97\\u2a98\\u2a99\\u2a9a\\u2a9b\\u2a9c\\u2a9d\\u2a9e\\u2a9f\\u2aa0\\u2aa1\\u2aa2\\u2aa3\\u2aa4\\u2aa5\\u2aa6\\u2aa7\\u2aa8\\u2aa9\\u2aaa\\u2aab\\u2aac\\u2aad\\u2aae\\u2aaf\\u2ab0\\u2ab1\\u2ab2\\u2ab3\\u2ab4\\u2ab5\\u2ab6\\u2ab7\\u2ab8\\u2ab9\\u2aba\\u2abb\\u2abc\\u2af7\\u2af8\\u2af9\\u2afa\\u29c0\\u29c1\\ufe64\\ufe65\\uff1c\\uff1e\".split(\"\");\nthis.relations=[];this.arrows=\"\\u2190\\u2191\\u2192\\u2193\\u2194\\u2195\\u2196\\u2197\\u2198\\u2199\\u219a\\u219b\\u219c\\u219d\\u219e\\u219f\\u21a0\\u21a1\\u21a2\\u21a3\\u21a4\\u21a5\\u21a6\\u21a7\\u21a8\\u21a9\\u21aa\\u21ab\\u21ac\\u21ad\\u21ae\\u21af\\u21b0\\u21b1\\u21b2\\u21b3\\u21b4\\u21b5\\u21b6\\u21b7\\u21b8\\u21b9\\u21ba\\u21bb\\u21c4\\u21c5\\u21c6\\u21c7\\u21c8\\u21c9\\u21ca\\u21cd\\u21ce\\u21cf\\u21d0\\u21d1\\u21d2\\u21d3\\u21d4\\u21d5\\u21d6\\u21d7\\u21d8\\u21d9\\u21da\\u21db\\u21dc\\u21dd\\u21de\\u21df\\u21e0\\u21e1\\u21e2\\u21e3\\u21e4\\u21e5\\u21e6\\u21e7\\u21e8\\u21e9\\u21ea\\u21eb\\u21ec\\u21ed\\u21ee\\u21ef\\u21f0\\u21f1\\u21f2\\u21f3\\u21f4\\u21f5\\u21f6\\u21f7\\u21f8\\u21f9\\u21fa\\u21fb\\u21fc\\u21fd\\u21fe\\u21ff\\u2301\\u2303\\u2304\\u2324\\u238b\\u2794\\u2798\\u2799\\u279a\\u279b\\u279c\\u279d\\u279e\\u279f\\u27a0\\u27a1\\u27a2\\u27a3\\u27a4\\u27a5\\u27a6\\u27a7\\u27a8\\u27a9\\u27aa\\u27ab\\u27ac\\u27ad\\u27ae\\u27af\\u27b1\\u27b2\\u27b3\\u27b4\\u27b5\\u27b6\\u27b7\\u27b8\\u27b9\\u27ba\\u27bb\\u27bc\\u27bd\\u27be\\u27f0\\u27f1\\u27f2\\u27f3\\u27f4\\u27f5\\u27f6\\u27f7\\u27f8\\u27f9\\u27fa\\u27fb\\u27fc\\u27fd\\u27fe\\u27ff\\u2900\\u2901\\u2902\\u2903\\u2904\\u2905\\u2906\\u2907\\u2908\\u2909\\u290a\\u290b\\u290c\\u290d\\u290e\\u290f\\u2910\\u2911\\u2912\\u2913\\u2914\\u2915\\u2916\\u2917\\u2918\\u2919\\u291a\\u291b\\u291c\\u291d\\u291e\\u291f\\u2920\\u2921\\u2922\\u2923\\u2924\\u2925\\u2926\\u2927\\u2928\\u2929\\u292a\\u292d\\u292e\\u292f\\u2930\\u2931\\u2932\\u2933\\u2934\\u2935\\u2936\\u2937\\u2938\\u2939\\u293a\\u293b\\u293c\\u293d\\u293e\\u293f\\u2940\\u2941\\u2942\\u2943\\u2944\\u2945\\u2946\\u2947\\u2948\\u2949\\u2970\\u2971\\u2972\\u2973\\u2974\\u2975\\u2976\\u2977\\u2978\\u2979\\u297a\\u297b\\u29b3\\u29b4\\u29bd\\u29ea\\u29ec\\u29ed\\u2a17\\u2b00\\u2b01\\u2b02\\u2b03\\u2b04\\u2b05\\u2b06\\u2b07\\u2b08\\u2b09\\u2b0a\\u2b0b\\u2b0c\\u2b0d\\u2b0e\\u2b0f\\u2b10\\u2b11\\u2b30\\u2b31\\u2b32\\u2b33\\u2b34\\u2b35\\u2b36\\u2b37\\u2b38\\u2b39\\u2b3a\\u2b3b\\u2b3c\\u2b3d\\u2b3e\\u2b3f\\u2b40\\u2b41\\u2b42\\u2b43\\u2b44\\u2b45\\u2b46\\u2b47\\u2b48\\u2b49\\u2b4a\\u2b4b\\u2b4c\\uffe9\\uffea\\uffeb\\uffec\\u21bc\\u21bd\\u21be\\u21bf\\u21c0\\u21c1\\u21c2\\u21c3\\u21cb\\u21cc\\u294a\\u294b\\u294c\\u294d\\u294e\\u294f\\u2950\\u2951\\u2952\\u2953\\u2954\\u2955\\u2956\\u2957\\u2958\\u2959\\u295a\\u295b\\u295c\\u295d\\u295e\\u295f\\u2960\\u2961\\u2962\\u2963\\u2964\\u2965\\u2966\\u2967\\u2968\\u2969\\u296a\\u296b\\u296c\\u296d\\u296e\\u296f\\u297c\\u297d\\u297e\\u297f\".split(\"\");\nthis.sumOps=\"\\u2140\\u220f\\u2210\\u2211\\u22c0\\u22c1\\u22c2\\u22c3\\u2a00\\u2a01\\u2a02\\u2a03\\u2a04\\u2a05\\u2a06\\u2a07\\u2a08\\u2a09\\u2a0a\\u2a0b\\u2afc\\u2aff\".split(\"\");this.intOps=\"\\u222b\\u222c\\u222d\\u222e\\u222f\\u2230\\u2231\\u2232\\u2233\\u2a0c\\u2a0d\\u2a0e\\u2a0f\\u2a10\\u2a11\\u2a12\\u2a13\\u2a14\\u2a15\\u2a16\\u2a17\\u2a18\\u2a19\\u2a1a\\u2a1b\\u2a1c\".split(\"\");this.prefixOps=\"\\u2200\\u2203\\u2206\\u2207\\u2202\\u2201\\u2204\".split(\"\");this.prefixOpsBold=[\"\\ud835\\udec1\",\"\\ud835\\udedb\",\"\\ud835\\udfca\",\"\\ud835\\udfcb\"];this.prefixOpsItalic=\n[\"\\ud835\\udefb\",\"\\ud835\\udf15\"];this.prefixOpsSansSerifBold=[\"\\ud835\\udf6f\",\"\\ud835\\udf89\"];this.operatorBits=\"\\u2320\\u2321\\u23b6\\u23aa\\u23ae\\u23af\\u23b2\\u23b3\\u23b7\".split(\"\");this.digitsNormal=\"0123456789\".split(\"\");this.digitsFullWidth=\"\\uff10\\uff11\\uff12\\uff13\\uff14\\uff15\\uff16\\uff17\\uff18\\uff19\".split(\"\");this.digitsBold=\"\\ud835\\udfce \\ud835\\udfcf \\ud835\\udfd0 \\ud835\\udfd1 \\ud835\\udfd2 \\ud835\\udfd3 \\ud835\\udfd4 \\ud835\\udfd5 \\ud835\\udfd6 \\ud835\\udfd7\".split(\" \");this.digitsDoubleStruck=\"\\ud835\\udfd8 \\ud835\\udfd9 \\ud835\\udfda \\ud835\\udfdb \\ud835\\udfdc \\ud835\\udfdd \\ud835\\udfde \\ud835\\udfdf \\ud835\\udfe0 \\ud835\\udfe1\".split(\" \");\nthis.digitsSansSerif=\"\\ud835\\udfe2 \\ud835\\udfe3 \\ud835\\udfe4 \\ud835\\udfe5 \\ud835\\udfe6 \\ud835\\udfe7 \\ud835\\udfe8 \\ud835\\udfe9 \\ud835\\udfea \\ud835\\udfeb\".split(\" \");this.digitsSansSerifBold=\"\\ud835\\udfec \\ud835\\udfed \\ud835\\udfee \\ud835\\udfef \\ud835\\udff0 \\ud835\\udff1 \\ud835\\udff2 \\ud835\\udff3 \\ud835\\udff4 \\ud835\\udff5\".split(\" \");this.digitsMonospace=\"\\ud835\\udff6 \\ud835\\udff7 \\ud835\\udff8 \\ud835\\udff9 \\ud835\\udffa \\ud835\\udffb \\ud835\\udffc \\ud835\\udffd \\ud835\\udffe \\ud835\\udfff\".split(\" \");this.digitsSuperscript=\n\"\\u00b2\\u00b3\\u00b9\\u2070\\u2074\\u2075\\u2076\\u2077\\u2078\\u2079\".split(\"\");this.digitsSubscript=\"\\u2080\\u2081\\u2082\\u2083\\u2084\\u2085\\u2086\\u2087\\u2088\\u2089\".split(\"\");this.fractions=\"\\u00bc\\u00bd\\u00be\\u2150\\u2151\\u2152\\u2153\\u2154\\u2155\\u2156\\u2157\\u2158\\u2159\\u215a\\u215b\\u215c\\u215d\\u215e\\u215f\\u2189\".split(\"\");this.enclosedNumbers=\"\\u2460\\u2461\\u2462\\u2463\\u2464\\u2465\\u2466\\u2467\\u2468\\u2469\\u246a\\u246b\\u246c\\u246d\\u246e\\u246f\\u2470\\u2471\\u2472\\u2473\\u24ea\\u24eb\\u24ec\\u24ed\\u24ee\\u24ef\\u24f0\\u24f1\\u24f2\\u24f3\\u24f4\\u24f5\\u24f6\\u24f7\\u24f8\\u24f9\\u24fa\\u24fb\\u24fc\\u24fd\\u24fe\\u24ff\\u2776\\u2777\\u2778\\u2779\\u277a\\u277b\\u277c\\u277d\\u277e\\u277f\\u2780\\u2781\\u2782\\u2783\\u2784\\u2785\\u2786\\u2787\\u2788\\u2789\\u278a\\u278b\\u278c\\u278d\\u278e\\u278f\\u2790\\u2791\\u2792\\u2793\\u3248\\u3249\\u324a\\u324b\\u324c\\u324d\\u324e\\u324f\\u3251\\u3252\\u3253\\u3254\\u3255\\u3256\\u3257\\u3258\\u3259\\u325a\\u325b\\u325c\\u325d\\u325e\\u325f\\u32b1\\u32b2\\u32b3\\u32b4\\u32b5\\u32b6\\u32b7\\u32b8\\u32b9\\u32ba\\u32bb\\u32bc\\u32bd\\u32be\\u32bf\".split(\"\");\nthis.fencedNumbers=\"\\u2474\\u2475\\u2476\\u2477\\u2478\\u2479\\u247a\\u247b\\u247c\\u247d\\u247e\\u247f\\u2480\\u2481\\u2482\\u2483\\u2484\\u2485\\u2486\\u2487\".split(\"\");this.punctuatedNumbers=\"\\u2488 \\u2489 \\u248a \\u248b \\u248c \\u248d \\u248e \\u248f \\u2490 \\u2491 \\u2492 \\u2493 \\u2494 \\u2495 \\u2496 \\u2497 \\u2498 \\u2499 \\u249a \\u249b \\ud83c\\udd00 \\ud83c\\udd01 \\ud83c\\udd02 \\ud83c\\udd03 \\ud83c\\udd04 \\ud83c\\udd05 \\ud83c\\udd06 \\ud83c\\udd07 \\ud83c\\udd08 \\ud83c\\udd09 \\ud83c\\udd0a\".split(\" \");this.digits=this.digitsNormal.concat(this.digitsFullWidth,\nthis.digitsBold,this.digitsDoubleStruck,this.digitsSansSerif,this.digitsSansSerifBold,this.digitsMonospace);this.numbers=this.fractions.concat(this.digitsSuperscript,this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.allNumbers=this.digits.concat(this.numbers);this.trigonometricFunctions=\"cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan\".split(\" \");this.hyperbolicFunctions=\"cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh\".split(\" \");\nthis.algebraicFunctions=\"deg det dim hom ker Tr tr\".split(\" \");this.elementaryFunctions=\"log ln lg exp expt gcd gcd arg im re Pr\".split(\" \");this.prefixFunctions=this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions=\"inf lim liminf limsup max min sup injlim projlim\".split(\" \");this.infixFunctions=[\"mod\",\"rem\"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.UNKNOWN},\n{set:this.colons,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COLON},{set:this.commas,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.COMMA},{set:this.ellipses,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DASH},{set:this.primes,type:sre.SemanticAttr.Type.PUNCTUATION,\nrole:sre.SemanticAttr.Role.PRIME},{set:this.degrees,type:sre.SemanticAttr.Type.PUNCTUATION,role:sre.SemanticAttr.Role.DEGREE},{set:this.leftFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.OPEN},{set:this.rightFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.CLOSE},{set:this.topFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.TOP},{set:this.bottomFences,type:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,\ntype:sre.SemanticAttr.Type.FENCE,role:sre.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,\ntype:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.smallLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},\n{set:this.capitalLatinItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalLatinBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDSCRIPT},\n{set:this.smallLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},\n{set:this.capitalLatinSansSerif,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.capitalLatinSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,\nfont:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.smallLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.LATINLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCKITALIC},{set:this.smallGreek,\ntype:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},\n{set:this.smallGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.smallGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLDITALIC},{set:this.capitalGreekBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,\nfont:sre.SemanticAttr.Font.BOLDITALIC},{set:this.smallGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},\n{set:this.smallGreekSansSerifBoldItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLDITALIC},{set:this.greekDoubleStruck,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},{set:this.greekSpecial,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.NORMAL},{set:this.greekSpecialBold,type:sre.SemanticAttr.Type.IDENTIFIER,\nrole:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.BOLD},{set:this.greekSpecialItalic,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.ITALIC},{set:this.greekSpecialSansSerifBold,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.GREEKLETTER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.hebrewLetters,type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.OTHERLETTER,font:sre.SemanticAttr.Font.NORMAL},\n{set:this.digitsNormal,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.DOUBLESTRUCK},\n{set:this.digitsSansSerif,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.INTEGER,font:sre.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:sre.SemanticAttr.Type.NUMBER,role:sre.SemanticAttr.Role.FLOAT},{set:this.additions,\ntype:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.ADDITION},{set:this.multiplications,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP},{set:this.prefixOpsBold,type:sre.SemanticAttr.Type.OPERATOR,\nrole:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.BOLD},{set:this.prefixOpsItalic,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.ITALIC},{set:this.prefixOpsSansSerifBold,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.PREFIXOP,font:sre.SemanticAttr.Font.SANSSERIFBOLD},{set:this.equalities,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.EQUALITY},{set:this.inequalities,type:sre.SemanticAttr.Type.RELATION,\nrole:sre.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:sre.SemanticAttr.Type.RELATION,role:sre.SemanticAttr.Role.ARROW},{set:this.sumOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.SUM},{set:this.intOps,type:sre.SemanticAttr.Type.LARGEOP,role:sre.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.LIMFUNC},{set:this.prefixFunctions,\ntype:sre.SemanticAttr.Type.FUNCTION,role:sre.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:sre.SemanticAttr.Type.OPERATOR,role:sre.SemanticAttr.Role.INFIXFUNC}];this.meaning_=this.initMeaning_()};goog.addSingletonGetter(sre.SemanticAttr);\nsre.SemanticAttr.Type={PUNCTUATION:\"punctuation\",FENCE:\"fence\",NUMBER:\"number\",IDENTIFIER:\"identifier\",TEXT:\"text\",OPERATOR:\"operator\",RELATION:\"relation\",LARGEOP:\"largeop\",FUNCTION:\"function\",ACCENT:\"accent\",FENCED:\"fenced\",FRACTION:\"fraction\",PUNCTUATED:\"punctuated\",RELSEQ:\"relseq\",MULTIREL:\"multirel\",INFIXOP:\"infixop\",PREFIXOP:\"prefixop\",POSTFIXOP:\"postfixop\",APPL:\"appl\",INTEGRAL:\"integral\",BIGOP:\"bigop\",SQRT:\"sqrt\",ROOT:\"root\",LIMUPPER:\"limupper\",LIMLOWER:\"limlower\",LIMBOTH:\"limboth\",SUBSCRIPT:\"subscript\",\nSUPERSCRIPT:\"superscript\",UNDERSCORE:\"underscore\",OVERSCORE:\"overscore\",TENSOR:\"tensor\",TABLE:\"table\",MULTILINE:\"multiline\",MATRIX:\"matrix\",VECTOR:\"vector\",CASES:\"cases\",ROW:\"row\",LINE:\"line\",CELL:\"cell\",ENCLOSE:\"enclose\",INFERENCE:\"inference\",RULELABEL:\"rulelabel\",CONCLUSION:\"conclusion\",PREMISES:\"premises\",UNKNOWN:\"unknown\",EMPTY:\"empty\"};\nsre.SemanticAttr.Role={COMMA:\"comma\",ELLIPSIS:\"ellipsis\",FULLSTOP:\"fullstop\",DASH:\"dash\",PRIME:\"prime\",DEGREE:\"degree\",VBAR:\"vbar\",COLON:\"colon\",OPENFENCE:\"openfence\",CLOSEFENCE:\"closefence\",APPLICATION:\"application\",DUMMY:\"dummy\",UNIT:\"unit\",LABEL:\"label\",OPEN:\"open\",CLOSE:\"close\",TOP:\"top\",BOTTOM:\"bottom\",NEUTRAL:\"neutral\",LATINLETTER:\"latinletter\",GREEKLETTER:\"greekletter\",OTHERLETTER:\"otherletter\",NUMBERSET:\"numbersetletter\",INTEGER:\"integer\",FLOAT:\"float\",OTHERNUMBER:\"othernumber\",MIXED:\"mixed\",\nMULTIACCENT:\"multiaccent\",OVERACCENT:\"overaccent\",UNDERACCENT:\"underaccent\",UNDEROVER:\"underover\",SUBSUP:\"subsup\",LEFTSUB:\"leftsub\",LEFTSUPER:\"leftsuper\",RIGHTSUB:\"rightsub\",RIGHTSUPER:\"rightsuper\",LEFTRIGHT:\"leftright\",ABOVEBELOW:\"abovebelow\",SETEMPTY:\"set empty\",SETEXT:\"set extended\",SETSINGLE:\"set singleton\",SETCOLLECT:\"set collection\",STRING:\"string\",SEQUENCE:\"sequence\",ENDPUNCT:\"endpunct\",STARTPUNCT:\"startpunct\",TEXT:\"text\",NEGATIVE:\"negative\",POSITIVE:\"positive\",NEGATION:\"negation\",MULTIOP:\"multiop\",\nPREFIXOP:\"prefix operator\",POSTFIXOP:\"postfix operator\",LIMFUNC:\"limit function\",INFIXFUNC:\"infix function\",PREFIXFUNC:\"prefix function\",POSTFIXFUNC:\"postfix function\",SIMPLEFUNC:\"simple function\",COMPFUNC:\"composed function\",SUM:\"sum\",INTEGRAL:\"integral\",ADDITION:\"addition\",MULTIPLICATION:\"multiplication\",SUBTRACTION:\"subtraction\",IMPLICIT:\"implicit\",DIVISION:\"division\",VULGAR:\"vulgar\",EQUALITY:\"equality\",INEQUALITY:\"inequality\",ELEMENT:\"element\",ARROW:\"arrow\",DETERMINANT:\"determinant\",ROWVECTOR:\"rowvector\",\nBINOMIAL:\"binomial\",SQUAREMATRIX:\"squarematrix\",MULTILINE:\"multiline\",MATRIX:\"matrix\",VECTOR:\"vector\",CASES:\"cases\",TABLE:\"table\",PROOF:\"proof\",LEFT:\"left\",RIGHT:\"right\",UP:\"up\",DOWN:\"down\",FINAL:\"final\",SINGLE:\"single\",HYP:\"hyp\",AXIOM:\"axiom\",UNKNOWN:\"unknown\"};\nsre.SemanticAttr.Font={BOLD:\"bold\",BOLDFRAKTUR:\"bold-fraktur\",BOLDITALIC:\"bold-italic\",BOLDSCRIPT:\"bold-script\",CALIGRAPHIC:\"caligraphic\",CALIGRAPHICBOLD:\"caligraphic-bold\",DOUBLESTRUCK:\"double-struck\",DOUBLESTRUCKITALIC:\"double-struck-italic\",FRAKTUR:\"fraktur\",ITALIC:\"italic\",MONOSPACE:\"monospace\",NORMAL:\"normal\",OLDSTYLE:\"oldstyle\",OLDSTYLEBOLD:\"oldstyle-bold\",SCRIPT:\"script\",SANSSERIF:\"sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLD:\"sans-serif-bold\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",\nUNKNOWN:\"unknown\"};sre.SemanticAttr.equal=function(a,b){return a.type===b.type&&a.role===b.role&&a.font===b.font};sre.SemanticAttr.prototype.lookupType=function(a){return sre.SemanticAttr.Type.UNKNOWN};sre.SemanticAttr.prototype.lookupRole=function(a){return sre.SemanticAttr.Role.UNKNOWN};sre.SemanticAttr.lookupMeaning=function(a){return sre.SemanticAttr.getInstance().lookupMeaning_(a)};sre.SemanticAttr.invisibleTimes=function(){return sre.SemanticAttr.getInstance().invisibleTimes_};\nsre.SemanticAttr.invisiblePlus=function(){return sre.SemanticAttr.getInstance().invisiblePlus_};sre.SemanticAttr.invisibleComma=function(){return sre.SemanticAttr.getInstance().invisibleComma_};sre.SemanticAttr.functionApplication=function(){return sre.SemanticAttr.getInstance().functionApplication_};\nsre.SemanticAttr.isMatchingFenceRole=function(a,b){return a==sre.SemanticAttr.Role.OPEN&&b==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL&&b==sre.SemanticAttr.Role.NEUTRAL||a==sre.SemanticAttr.Role.TOP&&b==sre.SemanticAttr.Role.BOTTOM};sre.SemanticAttr.isMatchingFence=function(a,b){return sre.SemanticAttr.getInstance().isMatchingFence_(a,b)};sre.SemanticAttr.isOpeningFence=function(a){return a==sre.SemanticAttr.Role.OPEN||a==sre.SemanticAttr.Role.NEUTRAL};\nsre.SemanticAttr.isClosingFence=function(a){return a==sre.SemanticAttr.Role.CLOSE||a==sre.SemanticAttr.Role.NEUTRAL};sre.SemanticAttr.isEmbellishedType=function(a){return a===sre.SemanticAttr.Type.OPERATOR||a===sre.SemanticAttr.Type.RELATION||a===sre.SemanticAttr.Type.FENCE||a===sre.SemanticAttr.Type.PUNCTUATION};sre.SemanticAttr.isCharacterD=function(a){return-1!=\"d \\u2146 \\uff44 \\ud835\\udc1d \\ud835\\udc51 \\ud835\\udcb9 \\ud835\\udced \\ud835\\udd21 \\ud835\\udd55 \\ud835\\udd89 \\ud835\\uddbd \\ud835\\uddf1 \\ud835\\ude25 \\ud835\\ude8d\".split(\" \").indexOf(a)};\nsre.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};sre.SemanticAttr.prototype.initMeaning_=function(){for(var a={},b=0,c;c=this.symbolSetToSemantic_[b];b++)c.set.forEach(function(d){a[d]={role:c.role||sre.SemanticAttr.Role.UNKNOWN,type:c.type||sre.SemanticAttr.Type.UNKNOWN,font:c.font||sre.SemanticAttr.Font.UNKNOWN}});return a};\nsre.SemanticAttr.prototype.lookupMeaning_=function(a){return this.meaning_[a]||{role:sre.SemanticAttr.Role.UNKNOWN,type:sre.SemanticAttr.Type.UNKNOWN,font:sre.SemanticAttr.Font.UNKNOWN}};sre.SemanticNode=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=sre.SemanticAttr.Type.UNKNOWN;this.role=sre.SemanticAttr.Role.UNKNOWN;this.font=sre.SemanticAttr.Font.UNKNOWN;this.embellished=null;this.fencePointer=\"\";this.childNodes=[];this.textContent=\"\";this.mathmlTree=null;this.contentNodes=[];this.annotation={};this.attributes={}};\nsre.SemanticNode.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));for(c=0;d=this.contentNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};sre.SemanticNode.Attribute={EMBELLISHED:\"embellished\",FENCEPOINTER:\"fencepointer\",FONT:\"font\",ID:\"id\",ANNOTATION:\"annotation\",ROLE:\"role\",TYPE:\"type\",CHILDREN:\"children\",CONTENT:\"content\",TEXT:\"$t\"};\nsre.SemanticNode.prototype.xml=function(a,b){var c=function(e,f){f=f.map(function(k){return k.xml(a,b)});e=a.createElementNS(\"\",e);for(var g=0,h;h=f[g];g++)e.appendChild(h);return e},d=a.createElementNS(\"\",this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CONTENT,this.contentNodes));0<this.childNodes.length&&d.appendChild(c(sre.SemanticNode.Attribute.CHILDREN,this.childNodes));return d};\nsre.SemanticNode.prototype.toString=function(a){var b=new sre.SystemExternal.xmldom.XMLSerializer,c=(new sre.SystemExternal.xmldom.DOMParser).parseFromString(\"<snode/>\",\"text/xml\");return b.serializeToString(this.xml(c,a))};sre.SemanticNode.prototype.xmlAttributes_=function(a){for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a.setAttribute(d[0],d[1]);this.addExternalAttributes_(a)};\nsre.SemanticNode.prototype.allAttributes=function(){var a=[];a.push([sre.SemanticNode.Attribute.ROLE,this.role]);this.font!=sre.SemanticAttr.Font.UNKNOWN&&a.push([sre.SemanticNode.Attribute.FONT,this.font]);Object.keys(this.annotation).length&&a.push([sre.SemanticNode.Attribute.ANNOTATION,this.xmlAnnotation()]);this.embellished&&a.push([sre.SemanticNode.Attribute.EMBELLISHED,this.embellished]);this.fencePointer&&a.push([sre.SemanticNode.Attribute.FENCEPOINTER,this.fencePointer]);a.push([sre.SemanticNode.Attribute.ID,\nthis.id]);return a};sre.SemanticNode.prototype.addExternalAttributes_=function(a){for(var b in this.attributes)a.setAttribute(b,this.attributes[b])};sre.SemanticNode.prototype.xmlAnnotation=function(){var a=[],b;for(b in this.annotation)this.annotation[b].forEach(function(c){a.push(b+\":\"+c)});return a.join(\";\")};\nsre.SemanticNode.prototype.toJson=function(){var a={};a[sre.SemanticNode.Attribute.TYPE]=this.type;for(var b=this.allAttributes(),c=0,d;d=b[c];c++)a[d[0]]=d[1].toString();this.textContent&&(a[sre.SemanticNode.Attribute.TEXT]=this.textContent);this.childNodes.length&&(a[sre.SemanticNode.Attribute.CHILDREN]=this.childNodes.map(function(e){return e.toJson()}));this.contentNodes.length&&(a[sre.SemanticNode.Attribute.CONTENT]=this.contentNodes.map(function(e){return e.toJson()}));return a};\nsre.SemanticNode.prototype.updateContent=function(a,b){b=b?a.replace(/^[ \\f\\n\\r\\t\\v\\u200b]*/,\"\").replace(/[ \\f\\n\\r\\t\\v\\u200b]*$/,\"\"):a.trim();a=a&&!b?a:b;this.textContent!=a&&(b=sre.SemanticAttr.lookupMeaning(a),this.textContent=a,this.role=b.role,this.type=b.type,this.font=b.font)};sre.SemanticNode.prototype.addMathmlNodes=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};\nsre.SemanticNode.prototype.removeMathmlNodes_=function(a){for(var b=this.mathml,c=0,d;d=a[c];c++)d=b.indexOf(d),-1!=d&&b.splice(d,1);this.mathml=b};sre.SemanticNode.prototype.appendChild=function(a){this.childNodes.push(a);this.addMathmlNodes(a.mathml);a.parent=this};\nsre.SemanticNode.prototype.replaceChild=function(a,b){var c=this.childNodes.indexOf(a);if(-1!=c){a.parent=null;b.parent=this;this.childNodes[c]=b;c=a.mathml.filter(function(e){return-1==b.mathml.indexOf(e)});var d=b.mathml.filter(function(e){return-1==a.mathml.indexOf(e)});this.removeMathmlNodes_(c);this.addMathmlNodes(d)}};sre.SemanticNode.prototype.appendContentNode=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes(a.mathml),a.parent=this)};\nsre.SemanticNode.prototype.removeContentNode=function(a){a&&(a=this.contentNodes.indexOf(a),-1!=a&&this.contentNodes.slice(a,1))};\nsre.SemanticNode.prototype.equals=function(a){if(!a||this.type!==a.type||this.role!==a.role||this.textContent!==a.textContent||this.childNodes.length!==a.childNodes.length||this.contentNodes.length!==a.contentNodes.length)return!1;for(var b=0,c,d;c=this.childNodes[b],d=a.childNodes[b];b++)if(!c.equals(d))return!1;for(b=0;c=this.contentNodes[b],d=a.contentNodes[b];b++)if(!c.equals(d))return!1;return!0};sre.SemanticNode.prototype.displayTree=function(){console.info(this.displayTree_(0))};\nsre.SemanticNode.prototype.displayTree_=function(a){a++;var b=Array(a).join(\"  \"),c=\"\";c+=\"\\n\"+b+this.toString();c+=\"\\n\"+b+\"MathmlTree:\";c+=\"\\n\"+b+this.mathmlTreeString_();c+=\"\\n\"+b+\"MathML:\";for(var d=0,e;e=this.mathml[d];d++)c+=\"\\n\"+b+e.toString();c+=\"\\n\"+b+\"Begin Content\";this.contentNodes.forEach(function(f){c+=f.displayTree_(a)});c+=\"\\n\"+b+\"End Content\";c+=\"\\n\"+b+\"Begin Children\";this.childNodes.forEach(function(f){c+=f.displayTree_(a)});return c+=\"\\n\"+b+\"End Children\"};\nsre.SemanticNode.prototype.mathmlTreeString_=function(){return this.mathmlTree?this.mathmlTree.toString():\"EMPTY\"};sre.SemanticNode.prototype.addAnnotation=function(a,b){b&&this.addAnnotation_(a,b)};sre.SemanticNode.prototype.addAnnotation_=function(a,b){var c=this.annotation[a];c?c.push(b):this.annotation[a]=[b]};sre.SemanticNode.prototype.getAnnotation=function(a){return(a=this.annotation[a])?a:[]};\nsre.SemanticNode.prototype.hasAnnotation=function(a,b){return(a=this.annotation[a])?-1!==a.indexOf(b):!1};sre.SemanticNode.prototype.parseAnnotation=function(a){a=a.split(\";\");for(var b=0,c=a.length;b<c;b++){var d=a[b].split(\":\");this.addAnnotation(d[0],d[1])}};sre.SemanticNode.prototype.meaning=function(){return{type:this.type,role:this.role,font:this.font}};sre.SemanticAnnotator=function(a,b){this.domain=a;this.func=b;this.name=a};sre.SemanticAnnotator.prototype.annotate=function(a){a.childNodes.forEach(goog.bind(this.annotate,this));a.addAnnotation(this.domain,this.func(a))};sre.SemanticVisitor=function(a,b,c){this.domain=a;this.func=b;this.name=a;this.def=c||{}};sre.SemanticVisitor.prototype.visit=function(a,b){b=this.func(a,b);a.addAnnotation(this.domain,b[0]);for(var c=0,d;d=a.childNodes[c];c++)b=this.visit(d,b[1]);return b};sre.SemanticAnnotations=function(){this.annotators={};this.visitors={};this.counter=0};goog.addSingletonGetter(sre.SemanticAnnotations);sre.SemanticAnnotations.prototype.register=function(a){a.name=a.domain+this.counter++;(a instanceof sre.SemanticAnnotator?this.annotators:this.visitors)[a.name]=a};sre.SemanticAnnotations.prototype.unregister=function(a){delete this.annotators[a];delete this.visitors[a]};\nsre.SemanticAnnotations.prototype.annotate=function(a){for(var b in this.annotators)this.annotators[b].annotate(a);for(var c in this.visitors)this.visitors[c].visit(a,this.visitors[c].def)};sre.SemanticOrdering=function(){this.comparators=[]};goog.addSingletonGetter(sre.SemanticOrdering);sre.SemanticOrdering.prototype.add=function(a){this.comparators.push(a)};sre.SemanticOrdering.prototype.apply=function(a,b){for(var c=0,d;d=this.comparators[c];c++)if(d=d.compare(a,b),0!==d)return d;return 0};sre.SemanticOrdering.prototype.sort=function(a){a.sort(goog.bind(this.apply,this))};\nsre.SemanticOrdering.prototype.reduce=function(a){if(1>=a.length)return a;a=a.slice();this.sort(a);var b=[];do{var c=a.pop();b.push(c)}while(c&&a.length&&0===this.apply(a[a.length-1],c));return b};sre.SemanticComparator=function(a,b){this.comparator=a;this.type=b||null;sre.SemanticOrdering.getInstance().add(this)};sre.SemanticComparator.prototype.compare=function(a,b){return this.type&&this.type===a.type&&this.type===b.type?this.comparator(a,b):0};\nsre.SemanticOrdering.simpleFunction=function(a,b){return a.role===sre.SemanticAttr.Role.SIMPLEFUNC?1:b.role===sre.SemanticAttr.Role.SIMPLEFUNC?-1:0};new sre.SemanticComparator(sre.SemanticOrdering.simpleFunction,sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticDefault=function(){this.map_={}};sre.SemanticDefault.prototype.add=function(a,b){this.map_[sre.SemanticDefault.key_(a,b.font)]=b};sre.SemanticDefault.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};sre.SemanticDefault.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};sre.SemanticDefault.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticDefault.key_=function(a,b){return b?a+\":\"+b:a};\nsre.SemanticDefault.prototype.size=function(){return Object.keys(this.map_).length};sre.SemanticCollator_=function(){this.map_={}};sre.SemanticCollator_.prototype.add=function(a,b){a=sre.SemanticDefault.key_(a,b.font);var c=this.map_[a];c?c.push(b):this.map_[a]=[b]};sre.SemanticCollator_.prototype.addNode=function(a){this.add(a.textContent,a)};sre.SemanticCollator_.prototype.retrieve=function(a,b){return this.map_[sre.SemanticDefault.key_(a,b)]};\nsre.SemanticCollator_.prototype.retrieveNode=function(a){return this.retrieve(a.textContent,a.font)};sre.SemanticCollator_.prototype.copyCollator=goog.abstractMethod;sre.SemanticCollator_.prototype.copy=function(){var a=this.copyCollator(),b;for(b in this.map_)a.map_[b]=this.map_[b];return a};sre.SemanticCollator_.prototype.minimize=function(){for(var a in this.map_)1===this.map_[a].length&&delete this.map_[a]};\nsre.SemanticCollator_.prototype.reduce=function(){for(var a in this.map_)1!==this.map_[a].length&&(this.map_[a]=sre.SemanticOrdering.getInstance().reduce(this.map_[a]))};sre.SemanticCollator_.prototype.minimalCollator=function(){var a=this.copy(),b;for(b in a.map_)1===a.map_[b].length&&delete a.map_[b];return a};sre.SemanticCollator_.prototype.isMultiValued=function(){for(var a in this.map_)if(1<this.map_[a].length)return!0;return!1};sre.SemanticCollator_.prototype.isEmpty=function(){return!Object.keys(this.map_).length};\nsre.SemanticNodeCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticNodeCollator,sre.SemanticCollator_);sre.SemanticNodeCollator.prototype.copyCollator=function(){return new sre.SemanticNodeCollator};sre.SemanticNodeCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(\" \"),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push(g.toString());a.push(b+\": \"+e.join(\"\\n\"+c))}return a.join(\"\\n\")};\nsre.SemanticNodeCollator.prototype.collateMeaning=function(){var a=new sre.SemanticMeaningCollator,b;for(b in this.map_)a.map_[b]=this.map_[b].map(function(c){return c.meaning()});return a};sre.SemanticMeaningCollator=function(){sre.SemanticCollator_.call(this)};goog.inherits(sre.SemanticMeaningCollator,sre.SemanticCollator_);sre.SemanticMeaningCollator.prototype.copyCollator=function(){return new sre.SemanticMeaningCollator};\nsre.SemanticMeaningCollator.prototype.add=function(a,b){var c=this.retrieve(a,b.font);c&&c.find(function(d){return sre.SemanticAttr.equal(d,b)})||sre.SemanticMeaningCollator.superClass_.add.call(this,a,b)};sre.SemanticMeaningCollator.prototype.addNode=function(a){this.add(a.textContent,a.meaning())};\nsre.SemanticMeaningCollator.prototype.toString=function(){var a=[],b;for(b in this.map_){for(var c=Array(b.length+3).join(\" \"),d=this.map_[b],e=[],f=0,g;g=d[f];f++)e.push(\"{type: \"+g.type+\", role: \"+g.role+\", font: \"+g.font+\"}\");a.push(b+\": \"+e.join(\"\\n\"+c))}return a.join(\"\\n\")};sre.SemanticMeaningCollator.prototype.default=function(){var a=new sre.SemanticDefault,b;for(b in this.map_)1===this.map_[b].length&&(a.map_[b]=this.map_[b][0]);return a};\nsre.SemanticMeaningCollator.prototype.newDefault=function(){var a=this.default();this.reduce();var b=this.default();return a.size()!==b.size()?b:null};sre.SemanticNodeFactory=function(){this.idCounter_=-1;this.leafMap=new sre.SemanticNodeCollator;this.defaultMap=new sre.SemanticDefault};sre.SemanticNodeFactory.prototype.createNode_=function(a){\"undefined\"!==typeof a?this.idCounter_=Math.max(this.idCounter_,a):a=++this.idCounter_;return new sre.SemanticNode(a)};sre.SemanticNodeFactory.prototype.makeNode=function(a){return this.createNode_(a)};sre.SemanticNodeFactory.prototype.makeUnprocessed=function(a){var b=this.createNode_();b.mathml=[a];return b};\nsre.SemanticNodeFactory.prototype.makeEmptyNode=function(){var a=this.createNode_();a.type=sre.SemanticAttr.Type.EMPTY;return a};sre.SemanticNodeFactory.prototype.makeContentNode=function(a){var b=this.createNode_();b.updateContent(a);return b};sre.SemanticNodeFactory.prototype.makeMultipleContentNodes=function(a,b){for(var c=[],d=0;d<a;d++)c.push(this.makeContentNode(b));return c};\nsre.SemanticNodeFactory.prototype.makeLeafNode=function(a,b){if(!a)return this.makeEmptyNode();a=this.makeContentNode(a);a.font=b||a.font;if(b=this.defaultMap.retrieveNode(a))a.type=b.type,a.role=b.role,a.font=b.font;this.leafMap.addNode(a);return a};sre.SemanticNodeFactory.prototype.makeBranchNode=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(f){f.parent=e;e.addMathmlNodes(f.mathml)});return e};sre.SemanticParser=function(){};sre.SemanticParser.prototype.parse=function(a){};sre.SemanticParser.prototype.parseList=function(a){};sre.SemanticParser.prototype.getFactory=function(){};sre.SemanticParser.prototype.setFactory=function(a){};sre.SemanticParser.prototype.getType=function(){};sre.SemanticAbstractParser=function(a){this.type_=a;this.factory_=new sre.SemanticNodeFactory};sre.SemanticAbstractParser.prototype.getFactory=function(){return this.factory_};\nsre.SemanticAbstractParser.prototype.setFactory=function(a){this.factory_=a};sre.SemanticAbstractParser.prototype.getType=function(){return this.type_};sre.SemanticAbstractParser.prototype.parse=goog.abstractMethod;sre.SemanticAbstractParser.prototype.parseList=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parse(d));return b};sre.SemanticPred={};sre.SemanticPred.isAttribute=function(a,b){return function(c){c=c[a];a:switch(a){case \"role\":var d=sre.SemanticAttr.Role[b];break a;case \"font\":d=sre.SemanticAttr.Font[b];break a;default:d=sre.SemanticAttr.Type[b]}return c===d}};\nsre.SemanticPred.isAccent=function(a){return sre.SemanticPred.isAttribute(\"type\",\"FENCE\")(a)||sre.SemanticPred.isAttribute(\"type\",\"PUNCTUATION\")(a)||sre.SemanticPred.isAttribute(\"type\",\"OPERATOR\")(a)||sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)||sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"UNKNOWN\")(a)&&!a.textContent.match(new RegExp(sre.SemanticAttr.getInstance().allLetters.join(\"|\")))};\nsre.SemanticPred.isSimpleFunctionScope=function(a){a=a.childNodes;if(0===a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!==sre.SemanticAttr.Type.INFIXOP||a.role===sre.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(sre.SemanticPred.isAttribute(\"type\",\"INFIXOP\"))?!0:!1};sre.SemanticPred.isPrefixFunctionBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isAttribute(\"type\",\"APPL\")(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};\nsre.SemanticPred.isBigOpBoundary=function(a){return sre.SemanticPred.isOperator(a)||sre.SemanticPred.isGeneralFunctionBoundary(a)};sre.SemanticPred.isIntegralDxBoundary=function(a,b){return!!b&&sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(b)&&sre.SemanticAttr.isCharacterD(a.textContent)};sre.SemanticPred.isIntegralDxBoundarySingle=function(a){if(sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&sre.SemanticAttr.isCharacterD(b)}return!1};\nsre.SemanticPred.isGeneralFunctionBoundary=function(a){return sre.SemanticPred.isRelation(a)||sre.SemanticPred.isPunctuation(a)};sre.SemanticPred.isEmbellished=function(a){return a.embellished?a.embellished:sre.SemanticAttr.isEmbellishedType(a.type)?a.type:null};sre.SemanticPred.isOperator=function(a){return sre.SemanticPred.isAttribute(\"type\",\"OPERATOR\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"OPERATOR\")(a)};\nsre.SemanticPred.isRelation=function(a){return sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"RELATION\")(a)};sre.SemanticPred.isPunctuation=function(a){return sre.SemanticPred.isAttribute(\"type\",\"PUNCTUATION\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"PUNCTUATION\")(a)};sre.SemanticPred.isFence=function(a){return sre.SemanticPred.isAttribute(\"type\",\"FENCE\")(a)||sre.SemanticPred.isAttribute(\"embellished\",\"FENCE\")(a)};\nsre.SemanticPred.isElligibleEmbellishedFence=function(a){if(!a||!sre.SemanticPred.isFence(a))return!1;if(!a.embellished)return!0;var b=function(c){return c.embellished?!(!sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(c)||sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[1])&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[2])||sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[3])&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(c.childNodes[4]))||sre.SemanticPred.isAttribute(\"role\",\n\"CLOSE\")(c)&&sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(c)||sre.SemanticPred.isAttribute(\"role\",\"OPEN\")(c)&&(sre.SemanticPred.isAttribute(\"type\",\"SUBSCRIPT\")(c)||sre.SemanticPred.isAttribute(\"type\",\"SUPERSCRIPT\")(c))?!1:b(c.childNodes[0]):!0};return b(a)};sre.SemanticPred.isTableOrMultiline=function(a){return!!a&&(sre.SemanticPred.isAttribute(\"type\",\"TABLE\")(a)||sre.SemanticPred.isAttribute(\"type\",\"MULTILINE\")(a))};\nsre.SemanticPred.tableIsMatrixOrVector=function(a){return!!a&&sre.SemanticPred.isFencedElement(a)&&sre.SemanticPred.isTableOrMultiline(a.childNodes[0])};sre.SemanticPred.isFencedElement=function(a){return!!a&&sre.SemanticPred.isAttribute(\"type\",\"FENCED\")(a)&&(sre.SemanticPred.isAttribute(\"role\",\"LEFTRIGHT\")(a)||sre.SemanticPred.isAttribute(\"role\",\"NEUTRAL\")(a))&&1===a.childNodes.length};\nsre.SemanticPred.tableIsCases=function(a,b){return 0<b.length&&sre.SemanticPred.isAttribute(\"role\",\"OPENFENCE\")(b[b.length-1])};sre.SemanticPred.tableIsMultiline=function(a){return a.childNodes.every(function(b){return 1>=b.childNodes.length})};sre.SemanticPred.isBinomial=function(a){return 2===a.childNodes.length};\nsre.SemanticPred.isLimitBase=function(a){return sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMBOTH\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMLOWER\")(a)||sre.SemanticPred.isAttribute(\"type\",\"LIMUPPER\")(a)||sre.SemanticPred.isAttribute(\"type\",\"FUNCTION\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"LIMFUNC\")(a)};\nsre.SemanticPred.isSimpleFunctionHead=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER};sre.SemanticPred.singlePunctAtPosition=function(a,b,c){return 1===b.length&&(a[c].type===sre.SemanticAttr.Type.PUNCTUATION||a[c].embellished===sre.SemanticAttr.Type.PUNCTUATION)&&a[c]===b[0]};\nsre.SemanticPred.isSimpleFunction=function(a){return sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(a)&&sre.SemanticPred.isAttribute(\"role\",\"SIMPLEFUNC\")(a)};sre.SemanticPred.isLeftBrace=function(a){var b=[\"{\",\"\\ufe5b\",\"\\uff5b\"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isRightBrace=function(a){var b=[\"}\",\"\\ufe5c\",\"\\uff5d\"];return!!a&&-1!==b.indexOf(a.textContent)};sre.SemanticPred.isSetNode=function(a){return sre.SemanticPred.isLeftBrace(a.contentNodes[0])&&sre.SemanticPred.isRightBrace(a.contentNodes[1])};\nsre.SemanticPred.illegalSingleton_=[sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.INFERENCE];\nsre.SemanticPred.scriptedElement_=[sre.SemanticAttr.Type.LIMUPPER,sre.SemanticAttr.Type.LIMLOWER,sre.SemanticAttr.Type.LIMBOTH,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.UNDERSCORE,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.TENSOR];\nsre.SemanticPred.isSingletonSetContent=function(a){var b=a.type;return-1!==sre.SemanticPred.illegalSingleton_.indexOf(b)||b===sre.SemanticAttr.Type.INFIXOP&&a.role!==sre.SemanticAttr.Role.IMPLICIT?!1:b===sre.SemanticAttr.Type.FENCED?a.role===sre.SemanticAttr.Role.LEFTRIGHT?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0:-1!==sre.SemanticPred.scriptedElement_.indexOf(b)?sre.SemanticPred.isSingletonSetContent(a.childNodes[0]):!0};\nsre.SemanticPred.isNumber=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};sre.SemanticPred.isUnitCounter=function(a){return sre.SemanticPred.isNumber(a)||a.role===sre.SemanticAttr.Role.VULGAR||a.role===sre.SemanticAttr.Role.MIXED};sre.SemanticPred.isPureUnit=function(a){var b=a.childNodes;return a.role===sre.SemanticAttr.Role.UNIT&&(!b.length||b[0].role===sre.SemanticAttr.Role.UNIT)};\nsre.SemanticPred.isImplicit=function(a){return a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT&&!!a.contentNodes.length&&a.contentNodes[0].textContent===sre.SemanticAttr.invisibleTimes()};sre.SemanticProcessor=function(){this.factory_=new sre.SemanticNodeFactory};goog.addSingletonGetter(sre.SemanticProcessor);sre.SemanticProcessor.prototype.setNodeFactory=function(a){this.factory_=a};sre.SemanticProcessor.prototype.getNodeFactory=function(){return this.factory_};\nsre.SemanticProcessor.prototype.identifierNode=function(a,b,c){if(\"MathML-Unit\"===c)a.type=sre.SemanticAttr.Type.IDENTIFIER,a.role=sre.SemanticAttr.Role.UNIT;else if(!b&&1===a.textContent.length&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER)&&a.font===sre.SemanticAttr.Font.NORMAL)return a.font=sre.SemanticAttr.Font.ITALIC,a;a.type===sre.SemanticAttr.Type.UNKNOWN&&(a.type=sre.SemanticAttr.Type.IDENTIFIER);sre.SemanticProcessor.exprFont_(a);\nreturn a};sre.SemanticProcessor.prototype.implicitNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleTimes()),c=sre.SemanticProcessor.getInstance().infixNode_(a,b[0]);c.role=sre.SemanticAttr.Role.IMPLICIT;b.forEach(function(d){d.parent=c});c.contentNodes=b;return c};\nsre.SemanticProcessor.prototype.implicitNode=function(a){a=sre.SemanticProcessor.getInstance().getMixedNumbers_(a);a=sre.SemanticProcessor.getInstance().combineUnits_(a);return 1===a.length?a[0]:sre.SemanticProcessor.getInstance().implicitNode_(a)};\nsre.SemanticProcessor.prototype.infixNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.INFIXOP,a,[b],sre.SemanticProcessor.getEmbellishedInner_(b).textContent);a.role=b.role;this.propagateSimpleFunction(a);return a};\nsre.SemanticProcessor.prototype.explicitMixed_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(h){return h.textContent===sre.SemanticAttr.invisiblePlus()});if(!b.rel.length)return a;a=[];for(var c=0,d;d=b.rel[c];c++){var e=b.comp[c],f=b.comp[c+1],g=e.length-1;e[g]&&f[0]&&sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(e[g])&&!sre.SemanticPred.isAttribute(\"role\",\"MIXED\")(e[g])&&sre.SemanticPred.isAttribute(\"type\",\"FRACTION\")(f[0])?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.NUMBER,\n[e[g],f[0]],[]),d.role=sre.SemanticAttr.Role.MIXED,a=a.concat(e.slice(0,g)),a.push(d),f.shift()):(a=a.concat(e),a.push(d))}return a.concat(b.comp[b.comp.length-1])};sre.SemanticProcessor.prototype.concatNode_=function(a,b,c){if(0===b.length)return a;var d=b.map(function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent}).join(\" \");a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(c,[a],b,d);1<b.length&&(a.role=sre.SemanticAttr.Role.MULTIOP);return a};\nsre.SemanticProcessor.prototype.prefixNode_=function(a,b){b=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isAttribute(\"role\",\"SUBTRACTION\"));a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.ADDITION&&\"+\"===a.contentNodes[0].textContent&&(a.role=sre.SemanticAttr.Role.POSITIVE);for(;0<b.rel.length;)a=sre.SemanticProcessor.getInstance().concatNode_(a,[b.rel.pop()],sre.SemanticAttr.Type.PREFIXOP),\na.role=sre.SemanticAttr.Role.NEGATIVE,a=sre.SemanticProcessor.getInstance().concatNode_(a,b.comp.pop(),sre.SemanticAttr.Type.PREFIXOP);return a};sre.SemanticProcessor.prototype.postfixNode_=function(a,b){return b.length?sre.SemanticProcessor.getInstance().concatNode_(a,b,sre.SemanticAttr.Type.POSTFIXOP):a};sre.SemanticProcessor.prototype.text=function(a,b){a.type=sre.SemanticAttr.Type.TEXT;\"MS\"===b&&(a.role=sre.SemanticAttr.Role.STRING);sre.SemanticProcessor.exprFont_(a);return a};\nsre.SemanticProcessor.prototype.row=function(a){a=a.filter(function(b){return!sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(b)});if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();a=sre.SemanticProcessor.getInstance().getFencesInRow_(a);a=sre.SemanticProcessor.getInstance().tablesInRow(a);a=sre.SemanticProcessor.getInstance().getPunctuationInRow_(a);a=sre.SemanticProcessor.getInstance().getTextInRow_(a);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a);return sre.SemanticProcessor.getInstance().relationsInRow_(a)};\nsre.SemanticProcessor.prototype.combineUnits_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return!sre.SemanticPred.isAttribute(\"role\",\"UNIT\")(g)});if(a.length===b.rel.length)return b.rel;a=[];do{var c=b.comp.shift(),d=b.rel.shift(),e=null,f=a.pop();f&&(c.length&&sre.SemanticPred.isUnitCounter(f)?c.unshift(f):a.push(f));1===c.length&&(e=c.pop());1<c.length&&(e=sre.SemanticProcessor.getInstance().implicitNode_(c),e.role=sre.SemanticAttr.Role.UNIT);e&&a.push(e);d&&a.push(d)}while(d);\nreturn a};\nsre.SemanticProcessor.prototype.getMixedNumbers_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,function(g){return sre.SemanticPred.isAttribute(\"type\",\"FRACTION\")(g)&&sre.SemanticPred.isAttribute(\"role\",\"VULGAR\")(g)});if(!b.rel.length)return a;a=[];for(var c=0,d;d=b.rel[c];c++){var e=b.comp[c],f=e.length-1;e[f]&&sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(e[f])&&(sre.SemanticPred.isAttribute(\"role\",\"INTEGER\")(e[f])||sre.SemanticPred.isAttribute(\"role\",\"FLOAT\")(e[f]))?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.NUMBER,[e[f],\nd],[]),d.role=sre.SemanticAttr.Role.MIXED,a=a.concat(e.slice(0,f)),a.push(d)):(a=a.concat(e),a.push(d))}return a.concat(b.comp[b.comp.length-1])};\nsre.SemanticProcessor.prototype.getTextInRow_=function(a){if(1>=a.length)return a;var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isAttribute(\"type\",\"TEXT\"));if(0===b.rel.length)return a;a=[];var c=b.comp[0];0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));for(var d=0;c=b.rel[d];d++)a.push(c),c=b.comp[d+1],0<c.length&&a.push(sre.SemanticProcessor.getInstance().row(c));return[sre.SemanticProcessor.getInstance().dummyNode_(a)]};\nsre.SemanticProcessor.prototype.relationsInRow_=function(a){var b=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isRelation),c=b.rel[0];if(!c)return sre.SemanticProcessor.getInstance().operationsInRow_(a);if(1===a.length)return a[0];a=b.comp.map(goog.bind(sre.SemanticProcessor.getInstance().operationsInRow_,this));if(b.rel.some(function(d){return!d.equals(c)}))return a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTIREL,a,b.rel),b.rel.every(function(d){return d.role===\nc.role})&&(a.role=c.role),a;a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.RELSEQ,a,b.rel,sre.SemanticProcessor.getEmbellishedInner_(c).textContent);a.role=c.role;return a};\nsre.SemanticProcessor.prototype.operationsInRow_=function(a){if(0===a.length)return sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();a=this.explicitMixed_(a);if(1===a.length)return a[0];for(var b=[];0<a.length&&sre.SemanticPred.isOperator(a[0]);)b.push(a.shift());if(0===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(b.pop(),b);if(1===a.length)return sre.SemanticProcessor.getInstance().prefixNode_(a[0],b);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);\nb=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),b);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div):b};\nsre.SemanticProcessor.prototype.operationsTree_=function(a,b,c,d){d=d||[];if(0===a.length)return d.unshift(c),b.type===sre.SemanticAttr.Type.INFIXOP?(d=sre.SemanticProcessor.getInstance().postfixNode_(b.childNodes.pop(),d),b.appendChild(d),b):sre.SemanticProcessor.getInstance().postfixNode_(b,d);a=sre.SemanticProcessor.sliceNodes_(a,sre.SemanticPred.isOperator);if(0===a.head.length)return d.push(a.div),sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,c,d);d=sre.SemanticProcessor.getInstance().prefixNode_(sre.SemanticProcessor.getInstance().implicitNode(a.head),\nd);b=sre.SemanticProcessor.getInstance().appendOperand_(b,c,d);return a.div?sre.SemanticProcessor.getInstance().operationsTree_(a.tail,b,a.div,[]):b};\nsre.SemanticProcessor.prototype.appendOperand_=function(a,b,c){if(a.type!==sre.SemanticAttr.Type.INFIXOP)return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);var d=this.appendDivisionOp_(a,b,c);return d?d:sre.SemanticProcessor.getInstance().appendExistingOperator_(a,b,c)?a:b.role===sre.SemanticAttr.Role.MULTIPLICATION?sre.SemanticProcessor.getInstance().appendMultiplicativeOp_(a,b,c):sre.SemanticProcessor.getInstance().appendAdditiveOp_(a,b,c)};\nsre.SemanticProcessor.prototype.appendDivisionOp_=function(a,b,c){return b.role===sre.SemanticAttr.Role.DIVISION?sre.SemanticPred.isImplicit(a)?sre.SemanticProcessor.getInstance().infixNode_([a,c],b):this.appendLastOperand_(a,b,c):a.role===sre.SemanticAttr.Role.DIVISION?this.infixNode_([a,c],b):null};\nsre.SemanticProcessor.prototype.appendLastOperand_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};\nsre.SemanticProcessor.prototype.appendMultiplicativeOp_=function(a,b,c){if(sre.SemanticPred.isImplicit(a))return sre.SemanticProcessor.getInstance().infixNode_([a,c],b);for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type===sre.SemanticAttr.Type.INFIXOP&&!sre.SemanticPred.isImplicit(e);)d=e,e=d.childNodes[a.childNodes.length-1];b=sre.SemanticProcessor.getInstance().infixNode_([d.childNodes.pop(),c],b);d.appendChild(b);return a};\nsre.SemanticProcessor.prototype.appendAdditiveOp_=function(a,b,c){return sre.SemanticProcessor.getInstance().infixNode_([a,c],b)};sre.SemanticProcessor.prototype.appendExistingOperator_=function(a,b,c){return!a||a.type!==sre.SemanticAttr.Type.INFIXOP||sre.SemanticPred.isImplicit(a)?!1:a.contentNodes[0].equals(b)?(a.appendContentNode(b),a.appendChild(c),!0):sre.SemanticProcessor.getInstance().appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};\nsre.SemanticProcessor.prototype.getFencesInRow_=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.isFence);a=sre.SemanticProcessor.purgeFences_(a);var b=a.comp.shift();return sre.SemanticProcessor.getInstance().fences_(a.rel,a.comp,[],[b])};\nsre.SemanticProcessor.prototype.fences_=function(a,b,c,d){if(0===a.length&&0===c.length)return d[0];var e=sre.SemanticPred.isAttribute(\"role\",\"OPEN\");if(0===a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),sre.SemanticProcessor.fenceToPunct_(b),a.push(b);else{c=sre.SemanticProcessor.sliceNodes_(c,e);var f=c.head.length-1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=\nc[c.length-1];g=a[0].role;if(g===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!==f.textContent))return c.push(a.shift()),(e=b.shift())&&d.push(e),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&(g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.OPEN||g===sre.SemanticAttr.Role.NEUTRAL&&a[0].textContent===f.textContent))return e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],\nb.shift())),sre.SemanticProcessor.getInstance().fences_(a,b,c,d);if(f&&g===sre.SemanticAttr.Role.CLOSE&&f.role===sre.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=sre.SemanticProcessor.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=sre.SemanticProcessor.getInstance().neutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=sre.SemanticProcessor.getInstance().horizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),sre.SemanticProcessor.getInstance().fences_(a,\nb,c.head,d);e=a.shift();sre.SemanticProcessor.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return sre.SemanticProcessor.getInstance().fences_(a,b,c,d)};\nsre.SemanticProcessor.prototype.neutralFences_=function(a,b){if(0===a.length)return a;if(1===a.length)return sre.SemanticProcessor.fenceToPunct_(a[0]),a;var c=a.shift(),d=sre.SemanticProcessor.sliceNodes_(a,function(e){return sre.SemanticProcessor.getEmbellishedInner_(e).textContent==sre.SemanticProcessor.getEmbellishedInner_(c).textContent});if(!d.div)return sre.SemanticProcessor.fenceToPunct_(c),d=b.shift(),d.unshift(c),d.concat(sre.SemanticProcessor.getInstance().neutralFences_(a,b));b=sre.SemanticProcessor.getInstance().combineFencedContent_(c,\nd.div,d.head,b);return 0<d.tail.length?(a=b.shift(),d=sre.SemanticProcessor.getInstance().neutralFences_(d.tail,b),a.concat(d)):b[0]};\nsre.SemanticProcessor.prototype.combineFencedContent_=function(a,b,c,d){if(0===c.length)return a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,d.shift()),0<d.length?d[0].unshift(a):d=[[a]],d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=sre.SemanticProcessor.getInstance().neutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=sre.SemanticProcessor.getInstance().horizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};\nsre.SemanticProcessor.FENCE_TO_PUNCT_={};sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.NEUTRAL]=sre.SemanticAttr.Role.VBAR;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.OPEN]=sre.SemanticAttr.Role.OPENFENCE;sre.SemanticProcessor.FENCE_TO_PUNCT_[sre.SemanticAttr.Role.CLOSE]=sre.SemanticAttr.Role.CLOSEFENCE;\nsre.SemanticProcessor.fenceToPunct_=function(a){var b=sre.SemanticProcessor.FENCE_TO_PUNCT_[a.role];if(b){for(;a.embellished;)a.embellished=sre.SemanticAttr.Type.PUNCTUATION,a.role=b,a=a.childNodes[0];a.type=sre.SemanticAttr.Type.PUNCTUATION;a.role=b}};\nsre.SemanticProcessor.prototype.horizontalFencedNode_=function(a,b,c){c=sre.SemanticProcessor.getInstance().row(c);b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FENCED,[c],[a,b]);a.role===sre.SemanticAttr.Role.OPEN?(this.classifyHorizontalFence_(b),this.propagateComposedFunction(b)):b.role=a.role;return sre.SemanticProcessor.rewriteFencedNode_(b)};\nsre.SemanticProcessor.prototype.classifyHorizontalFence_=function(a){a.role=sre.SemanticAttr.Role.LEFTRIGHT;var b=a.childNodes;if(sre.SemanticPred.isSetNode(a)&&!(1<b.length))if(0===b.length||b[0].type===sre.SemanticAttr.Type.EMPTY)a.role=sre.SemanticAttr.Role.SETEMPTY;else{var c=b[0].type;if(1===b.length&&sre.SemanticPred.isSingletonSetContent(b[0]))a.role=sre.SemanticAttr.Role.SETSINGLE;else{var d=b[0].role;c===sre.SemanticAttr.Type.PUNCTUATED&&d===sre.SemanticAttr.Role.SEQUENCE&&(b[0].contentNodes[0].role===\nsre.SemanticAttr.Role.COMMA?a.role=sre.SemanticAttr.Role.SETCOLLECT:1!==b[0].contentNodes.length||b[0].contentNodes[0].role!==sre.SemanticAttr.Role.VBAR&&b[0].contentNodes[0].role!==sre.SemanticAttr.Role.COLON||(a.role=sre.SemanticAttr.Role.SETEXT,this.setExtension_(a)))}}};\nsre.SemanticProcessor.prototype.setExtension_=function(a){(a=a.childNodes[0].childNodes[0])&&a.type===sre.SemanticAttr.Type.INFIXOP&&1===a.contentNodes.length&&a.contentNodes[0].role===sre.SemanticAttr.Role.UNKNOWN&&(a.contentNodes[0].role=sre.SemanticAttr.Role.SETEXT)};\nsre.SemanticProcessor.prototype.getPunctuationInRow_=function(a){if(1>=a.length)return a;var b=function(g){g=g.type;return\"punctuation\"===g||\"text\"===g||\"operator\"===g||\"relation\"===g},c=sre.SemanticProcessor.partitionNodes_(a,function(g){if(!sre.SemanticPred.isPunctuation(g))return!1;if(sre.SemanticPred.isPunctuation(g)&&!sre.SemanticPred.isAttribute(\"role\",\"ELLIPSIS\")(g))return!0;var h=a.indexOf(g);if(0===h)return a[1]&&b(a[1])?!1:!0;g=a[h-1];if(h===a.length-1)return b(g)?!1:!0;h=a[h+1];return b(g)&&\nb(h)?!1:!0});if(0===c.rel.length)return a;var d=[],e=c.comp.shift();0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));for(var f=0;0<c.comp.length;)d.push(c.rel[f++]),e=c.comp.shift(),0<e.length&&d.push(sre.SemanticProcessor.getInstance().row(e));return[sre.SemanticProcessor.getInstance().punctuatedNode_(d,c.rel)]};\nsre.SemanticProcessor.prototype.punctuatedNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.PUNCTUATED,a,b);if(b.length===a.length){var d=b[0].role;if(d!==sre.SemanticAttr.Role.UNKNOWN&&b.every(function(e){return e.role===d}))return c.role=d,c}sre.SemanticPred.singlePunctAtPosition(a,b,0)?c.role=sre.SemanticAttr.Role.STARTPUNCT:sre.SemanticPred.singlePunctAtPosition(a,b,a.length-1)?c.role=sre.SemanticAttr.Role.ENDPUNCT:b.every(sre.SemanticPred.isAttribute(\"role\",\n\"DUMMY\"))?c.role=sre.SemanticAttr.Role.TEXT:c.role=sre.SemanticAttr.Role.SEQUENCE;return c};sre.SemanticProcessor.prototype.dummyNode_=function(a){var b=sre.SemanticProcessor.getInstance().factory_.makeMultipleContentNodes(a.length-1,sre.SemanticAttr.invisibleComma());b.forEach(function(c){c.role=sre.SemanticAttr.Role.DUMMY});return sre.SemanticProcessor.getInstance().punctuatedNode_(a,b)};\nsre.SemanticProcessor.MML_TO_LIMIT_={MSUB:sre.SemanticAttr.Type.LIMLOWER,MUNDER:sre.SemanticAttr.Type.LIMLOWER,MSUP:sre.SemanticAttr.Type.LIMUPPER,MOVER:sre.SemanticAttr.Type.LIMUPPER,MSUBSUP:sre.SemanticAttr.Type.LIMBOTH,MUNDEROVER:sre.SemanticAttr.Type.LIMBOTH};\nsre.SemanticProcessor.prototype.limitNode=function(a,b){var c=b[0];if(sre.SemanticPred.isLimitBase(c))a=sre.SemanticProcessor.MML_TO_LIMIT_[a];else switch(a){case \"MSUB\":a=sre.SemanticAttr.Type.SUBSCRIPT;break;case \"MSUP\":a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case \"MSUBSUP\":var d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=sre.SemanticAttr.Role.SUBSUP;b=[d,b[2]];a=sre.SemanticAttr.Type.SUPERSCRIPT;break;case \"MOVER\":a=sre.SemanticAttr.Type.OVERSCORE;\nsre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.OVERACCENT);break;case \"MUNDER\":a=sre.SemanticAttr.Type.UNDERSCORE;sre.SemanticPred.isAccent(b[1])&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT);break;default:d=sre.SemanticPred.isAccent(b[1]),a=sre.SemanticPred.isAccent(b[2]),d&&(b[1].role=sre.SemanticAttr.Role.UNDERACCENT),a&&(b[2].role=sre.SemanticAttr.Role.OVERACCENT),a&&!d?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.OVERSCORE,[c,b[2]],\n[]),b=[d,b[1]],a=sre.SemanticAttr.Type.UNDERSCORE):(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.UNDERSCORE,[c,b[1]],[]),b=[d,b[2]],a=sre.SemanticAttr.Type.OVERSCORE),d.role=sre.SemanticAttr.Role.UNDEROVER}b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,[]);a=sre.SemanticPred.isEmbellished(c);d&&(d.embellished=a);b.embellished=a;b.role=c.role;return b};\nsre.SemanticProcessor.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0===a.length)return b;var c=a.shift(),d=sre.SemanticProcessor.classifyFunction_(c,a);if(!d)return b.push(c),sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,b);a=sre.SemanticProcessor.getInstance().getFunctionsInRow_(a,[]);a=sre.SemanticProcessor.getInstance().getFunctionArgs_(c,a,d);return b.concat(a)};sre.SemanticProcessor.CLASSIFY_FUNCTION_={};\nsre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.INTEGRAL]=\"integral\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SUM]=\"bigop\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.PREFIXFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.LIMFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.SIMPLEFUNC]=\"prefix\";sre.SemanticProcessor.CLASSIFY_FUNCTION_[sre.SemanticAttr.Role.COMPFUNC]=\"prefix\";\nsre.SemanticProcessor.classifyFunction_=function(a,b){if(a.type===sre.SemanticAttr.Type.APPL||a.type===sre.SemanticAttr.Type.BIGOP||a.type===sre.SemanticAttr.Type.INTEGRAL)return\"\";if(b[0]&&b[0].textContent===sre.SemanticAttr.functionApplication()){b.shift();b=sre.SemanticAttr.Role.SIMPLEFUNC;if(a.role===sre.SemanticAttr.Role.PREFIXFUNC||a.role===sre.SemanticAttr.Role.LIMFUNC)b=a.role;sre.SemanticProcessor.propagateFunctionRole_(a,b);return\"prefix\"}return(b=sre.SemanticProcessor.CLASSIFY_FUNCTION_[a.role])?\nb:sre.SemanticPred.isSimpleFunctionHead(a)?\"simple\":\"\"};sre.SemanticProcessor.propagateFunctionRole_=function(a,b){a&&(sre.SemanticPred.isAttribute(\"role\",\"SUBSUP\")(a)||(a.role=b),sre.SemanticProcessor.propagateFunctionRole_(a.childNodes[0],b))};\nsre.SemanticProcessor.prototype.getFunctionArgs_=function(a,b,c){switch(c){case \"integral\":b=sre.SemanticProcessor.getInstance().getIntegralArgs_(b);if(!b.intvar&&!b.integrand.length)return b.rest.unshift(a),b.rest;c=sre.SemanticProcessor.getInstance().row(b.integrand);a=sre.SemanticProcessor.getInstance().integralNode_(a,c,b.intvar);b.rest.unshift(a);return b.rest;case \"prefix\":if(b[0]&&b[0].type===sre.SemanticAttr.Type.FENCED){var d=b.shift();d.role!==sre.SemanticAttr.Role.NEUTRAL&&(d.role=sre.SemanticAttr.Role.LEFTRIGHT);\na=sre.SemanticProcessor.getInstance().functionNode_(a,d);b.unshift(a);return b}c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isPrefixFunctionBoundary);if(c.head.length)d=sre.SemanticProcessor.getInstance().row(c.head),c.div&&c.tail.unshift(c.div);else{if(!c.div||!sre.SemanticPred.isAttribute(\"type\",\"APPL\")(c.div))return b.unshift(a),b;d=c.div}a=sre.SemanticProcessor.getInstance().functionNode_(a,d);c.tail.unshift(a);return c.tail;case \"bigop\":c=sre.SemanticProcessor.sliceNodes_(b,sre.SemanticPred.isBigOpBoundary);\nif(!c.head.length)return b.unshift(a),b;d=sre.SemanticProcessor.getInstance().row(c.head);a=sre.SemanticProcessor.getInstance().bigOpNode_(a,d);c.div&&c.tail.unshift(c.div);c.tail.unshift(a);return c.tail;default:if(0===b.length)return[a];c=b[0];if(c.type===sre.SemanticAttr.Type.FENCED&&c.role!==sre.SemanticAttr.Role.NEUTRAL&&sre.SemanticPred.isSimpleFunctionScope(c))return c.role=sre.SemanticAttr.Role.LEFTRIGHT,sre.SemanticProcessor.propagateFunctionRole_(a,sre.SemanticAttr.Role.SIMPLEFUNC),a=sre.SemanticProcessor.getInstance().functionNode_(a,\nb.shift()),b.unshift(a),b;b.unshift(a);return b}};\nsre.SemanticProcessor.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0===a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(sre.SemanticPred.isGeneralFunctionBoundary(c))return{integrand:b,intvar:null,rest:a};if(sre.SemanticPred.isIntegralDxBoundarySingle(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&sre.SemanticPred.isIntegralDxBoundary(c,a[1]))return c=sre.SemanticProcessor.getInstance().prefixNode_(a[1],[c]),c.role=sre.SemanticAttr.Role.INTEGRAL,{integrand:b,intvar:c,\nrest:a.slice(2)};b.push(a.shift());return sre.SemanticProcessor.getInstance().getIntegralArgs_(a,b)};\nsre.SemanticProcessor.prototype.functionNode_=function(a,b){var c=sre.SemanticProcessor.getInstance().factory_.makeContentNode(sre.SemanticAttr.functionApplication());c.type=sre.SemanticAttr.Type.PUNCTUATION;c.role=sre.SemanticAttr.Role.APPLICATION;var d=sre.SemanticProcessor.getFunctionOp_(a,function(e){return sre.SemanticPred.isAttribute(\"type\",\"FUNCTION\")(e)||sre.SemanticPred.isAttribute(\"type\",\"IDENTIFIER\")(e)&&sre.SemanticPred.isAttribute(\"role\",\"SIMPLEFUNC\")(e)});return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.APPL,\n[a,b],d,[c])};sre.SemanticProcessor.prototype.bigOpNode_=function(a,b){var c=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.BIGOP,[a,b],c,[])};\nsre.SemanticProcessor.prototype.integralNode_=function(a,b,c){b=b||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();c=c||sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();var d=sre.SemanticProcessor.getFunctionOp_(a,sre.SemanticPred.isAttribute(\"type\",\"LARGEOP\"));return sre.SemanticProcessor.getInstance().functionalNode_(sre.SemanticAttr.Type.INTEGRAL,[a,b,c],d,[])};\nsre.SemanticProcessor.prototype.functionalNode_=function(a,b,c,d){var e=b[0];if(c){var f=c.parent;d.push(c)}a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(a,b,d);a.role=e.role;f&&(c.parent=f);return a};sre.SemanticProcessor.getFunctionOp_=function(a,b){if(b(a))return a;for(var c=0,d;d=a.childNodes[c];c++)if(d=sre.SemanticProcessor.getFunctionOp_(d,b))return d;return null};\nsre.SemanticProcessor.prototype.tablesInRow=function(a){a=sre.SemanticProcessor.partitionNodes_(a,sre.SemanticPred.tableIsMatrixOrVector);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(sre.SemanticProcessor.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=sre.SemanticProcessor.partitionNodes_(b,sre.SemanticPred.isTableOrMultiline);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();sre.SemanticPred.tableIsCases(d,e)&&sre.SemanticProcessor.tableToCases_(d,e.pop());b=b.concat(e);\nb.push(d)}return b.concat(a.comp.shift())};sre.SemanticProcessor.tableToMatrixOrVector_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute(\"type\",\"MULTILINE\")(b)?sre.SemanticProcessor.tableToVector_(a):sre.SemanticProcessor.tableToMatrix_(a);a.contentNodes.forEach(goog.bind(b.appendContentNode,b));a=0;for(var c;c=b.childNodes[a];a++)sre.SemanticProcessor.assignRoleToRow_(c,sre.SemanticProcessor.getComponentRoles_(b));b.parent=null;return b};\nsre.SemanticProcessor.tableToVector_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.VECTOR;1===b.childNodes.length?sre.SemanticProcessor.tableToSquare_(a):sre.SemanticProcessor.binomialForm_(b)};sre.SemanticProcessor.binomialForm_=function(a){sre.SemanticPred.isBinomial(a)&&(a.role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[0].role=sre.SemanticAttr.Role.BINOMIAL,a.childNodes[1].role=sre.SemanticAttr.Role.BINOMIAL)};\nsre.SemanticProcessor.tableToMatrix_=function(a){var b=a.childNodes[0];b.type=sre.SemanticAttr.Type.MATRIX;b.childNodes&&0<b.childNodes.length&&b.childNodes[0].childNodes&&b.childNodes.length===b.childNodes[0].childNodes.length?sre.SemanticProcessor.tableToSquare_(a):b.childNodes&&1===b.childNodes.length&&(b.role=sre.SemanticAttr.Role.ROWVECTOR)};\nsre.SemanticProcessor.tableToSquare_=function(a){var b=a.childNodes[0];sre.SemanticPred.isAttribute(\"role\",\"NEUTRAL\")(a)?b.role=sre.SemanticAttr.Role.DETERMINANT:b.role=sre.SemanticAttr.Role.SQUAREMATRIX};sre.SemanticProcessor.getComponentRoles_=function(a){var b=a.role;return b&&b!==sre.SemanticAttr.Role.UNKNOWN?b:sre.SemanticAttr.Role[a.type.toUpperCase()]||sre.SemanticAttr.Role.UNKNOWN};\nsre.SemanticProcessor.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)sre.SemanticProcessor.assignRoleToRow_(d,sre.SemanticAttr.Role.CASES);a.type=sre.SemanticAttr.Type.CASES;a.appendContentNode(b);sre.SemanticPred.tableIsMultiline(a)&&sre.SemanticProcessor.binomialForm_(a);return a};\nsre.SemanticProcessor.tableToMultiline=function(a){if(sre.SemanticPred.tableIsMultiline(a)){a.type=sre.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)sre.SemanticProcessor.rowToLine_(c,sre.SemanticAttr.Role.MULTILINE);1===a.childNodes.length&&sre.SemanticPred.isFencedElement(a.childNodes[0].childNodes[0])&&sre.SemanticProcessor.tableToMatrixOrVector_(sre.SemanticProcessor.rewriteFencedLine_(a));sre.SemanticProcessor.binomialForm_(a);sre.SemanticProcessor.classifyMultiline(a)}else sre.SemanticProcessor.classifyTable(a)};\nsre.SemanticProcessor.rewriteFencedLine_=function(a){var b=a.childNodes[0],c=a.childNodes[0].childNodes[0],d=a.childNodes[0].childNodes[0].childNodes[0];c.parent=a.parent;a.parent=c;d.parent=b;c.childNodes=[a];b.childNodes=[d];return c};\nsre.SemanticProcessor.rowToLine_=function(a,b){b=b||sre.SemanticAttr.Role.UNKNOWN;sre.SemanticPred.isAttribute(\"type\",\"ROW\")(a)&&(a.type=sre.SemanticAttr.Type.LINE,a.role=b,1===a.childNodes.length&&sre.SemanticPred.isAttribute(\"type\",\"CELL\")(a.childNodes[0])&&(a.childNodes=a.childNodes[0].childNodes,a.childNodes.forEach(function(c){c.parent=a})))};\nsre.SemanticProcessor.assignRoleToRow_=function(a,b){if(sre.SemanticPred.isAttribute(\"type\",\"LINE\")(a))a.role=b;else if(sre.SemanticPred.isAttribute(\"type\",\"ROW\")(a)){a.role=b;var c=sre.SemanticPred.isAttribute(\"type\",\"CELL\");a.childNodes.forEach(function(d){c(d)&&(d.role=b)})}};\nsre.SemanticProcessor.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};sre.SemanticProcessor.partitionNodes_=function(a,b){var c=[],d=[];do{var e=sre.SemanticProcessor.sliceNodes_(a,b);d.push(e.head);c.push(e.div);a=e.tail}while(e.div);c.pop();return{rel:c,comp:d}};\nsre.SemanticProcessor.prototype.mfenced=function(a,b,c,d){if(c&&0<d.length){var e=sre.SemanticProcessor.nextSeparatorFunction_(c),f=[d.shift()];d.forEach(goog.bind(function(g){f.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(e()));f.push(g)},this));d=f}if(a&&b)return sre.SemanticProcessor.getInstance().horizontalFencedNode_(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a),sre.SemanticProcessor.getInstance().factory_.makeContentNode(b),d);a&&d.unshift(sre.SemanticProcessor.getInstance().factory_.makeContentNode(a));\nb&&d.push(sre.SemanticProcessor.getInstance().factory_.makeContentNode(b));return sre.SemanticProcessor.getInstance().row(d)};sre.SemanticProcessor.nextSeparatorFunction_=function(a){if(a){if(a.match(/^\\s+$/))return null;var b=a.replace(/\\s/g,\"\").split(\"\").filter(function(c){return c})}else b=[\",\"];return function(){return 1<b.length?b.shift():b[0]}};\nsre.SemanticProcessor.number=function(a){if(a.type===sre.SemanticAttr.Type.UNKNOWN||a.type===sre.SemanticAttr.Type.IDENTIFIER)a.type=sre.SemanticAttr.Type.NUMBER;sre.SemanticProcessor.numberRole_(a);sre.SemanticProcessor.exprFont_(a)};\nsre.SemanticProcessor.numberRole_=function(a){if(a.role===sre.SemanticAttr.Role.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning);b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||c.type===sre.SemanticAttr.Type.PUNCTUATION&&c.role===sre.SemanticAttr.Role.COMMA})?a.role=sre.SemanticAttr.Role.INTEGER:b.every(function(c){return c.type===sre.SemanticAttr.Type.NUMBER&&c.role===sre.SemanticAttr.Role.INTEGER||\nc.type===sre.SemanticAttr.Type.PUNCTUATION})?a.role=sre.SemanticAttr.Role.FLOAT:a.role=sre.SemanticAttr.Role.OTHERNUMBER}};sre.SemanticProcessor.exprFont_=function(a){if(a.font===sre.SemanticAttr.Font.UNKNOWN){var b=sre.SemanticUtil.splitUnicode(a.textContent).map(sre.SemanticAttr.lookupMeaning).reduce(function(c,d){return c&&d.font&&d.font!==sre.SemanticAttr.Font.UNKNOWN&&d.font!==c?c===sre.SemanticAttr.Font.UNKNOWN?d.font:null:c},sre.SemanticAttr.Font.UNKNOWN);b&&(a.font=b)}};\nsre.SemanticProcessor.prototype.fractionLikeNode=function(a,b,c,d){!d&&sre.SemanticUtil.isZeroLength(c)?(d=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[a],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.LINE,[b],[]),b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.MULTILINE,[d,b],[]),sre.SemanticProcessor.binomialForm_(b),sre.SemanticProcessor.classifyMultiline(b)):(b=sre.SemanticProcessor.getInstance().fractionNode_(a,\nb),d&&b.addAnnotation(\"general\",\"bevelled\"));return b};\nsre.SemanticProcessor.prototype.fractionNode_=function(a,b){a=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.FRACTION,[a,b],[]);a.role=a.childNodes.every(function(c){return sre.SemanticPred.isAttribute(\"type\",\"NUMBER\")(c)&&sre.SemanticPred.isAttribute(\"role\",\"INTEGER\")(c)})?sre.SemanticAttr.Role.VULGAR:a.childNodes.every(sre.SemanticPred.isPureUnit)?sre.SemanticAttr.Role.UNIT:sre.SemanticAttr.Role.DIVISION;this.propagateSimpleFunction(a);return a};\nsre.SemanticProcessor.prototype.tensor=function(a,b,c,d,e){b=sre.SemanticProcessor.getInstance().factory_.makeBranchNode(sre.SemanticAttr.Type.TENSOR,[a,sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.LEFTSUB),sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.LEFTSUPER),sre.SemanticProcessor.getInstance().scriptNode_(d,sre.SemanticAttr.Role.RIGHTSUB),sre.SemanticProcessor.getInstance().scriptNode_(e,sre.SemanticAttr.Role.RIGHTSUPER)],[]);b.role=a.role;\nb.embellished=sre.SemanticPred.isEmbellished(a);return b};\nsre.SemanticProcessor.prototype.pseudoTensor=function(a,b,c){var d=function(g){return!sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(g)},e=b.filter(d).length;d=c.filter(d).length;if(!e&&!d)return a;var f=e?d?\"MSUBSUP\":\"MSUB\":\"MSUP\";a=[a];e&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(b,sre.SemanticAttr.Role.RIGHTSUB,!0));d&&a.push(sre.SemanticProcessor.getInstance().scriptNode_(c,sre.SemanticAttr.Role.RIGHTSUPER,!0));return sre.SemanticProcessor.getInstance().limitNode(f,a)};\nsre.SemanticProcessor.prototype.scriptNode_=function(a,b,c){switch(a.length){case 0:a=sre.SemanticProcessor.getInstance().factory_.makeEmptyNode();break;case 1:a=a[0];if(c)return a;break;default:a=sre.SemanticProcessor.getInstance().dummyNode_(a)}a.role=b;return a};sre.SemanticProcessor.getEmbellishedInner_=function(a){return a&&a.embellished&&0<a.childNodes.length?sre.SemanticProcessor.getEmbellishedInner_(a.childNodes[0]):a};\nsre.SemanticProcessor.purgeFences_=function(a){var b=a.rel;a=a.comp;for(var c=[],d=[];0<b.length;){var e=b.shift(),f=a.shift();sre.SemanticPred.isElligibleEmbellishedFence(e)?(c.push(e),d.push(f)):(sre.SemanticProcessor.fenceToPunct_(e),f.push(e),f=f.concat(a.shift()),a.unshift(f))}d.push(a.shift());return{rel:c,comp:d}};\nsre.SemanticProcessor.rewriteFencedNode_=function(a){var b=a.contentNodes[1],c=sre.SemanticProcessor.rewriteFence_(a,a.contentNodes[0]);a.contentNodes[0]=c.fence;c=sre.SemanticProcessor.rewriteFence_(c.node,b);a.contentNodes[1]=c.fence;a.contentNodes[0].parent=a;a.contentNodes[1].parent=a;c.node.parent=null;return c.node};\nsre.SemanticProcessor.rewriteFence_=function(a,b){if(!b.embellished)return{node:a,fence:b};var c=b.childNodes[0],d=sre.SemanticProcessor.rewriteFence_(a,c);if(sre.SemanticPred.isAttribute(\"type\",\"SUPERSCRIPT\")(b)||sre.SemanticPred.isAttribute(\"type\",\"SUBSCRIPT\")(b)||sre.SemanticPred.isAttribute(\"type\",\"TENSOR\")(b))return sre.SemanticPred.isAttribute(\"role\",\"SUBSUP\")(b)||(b.role=a.role),c!==d.node&&(b.replaceChild(c,d.node),c.parent=a),sre.SemanticProcessor.propagateFencePointer_(b,c),{node:b,fence:d.fence};\nb.replaceChild(c,d.fence);b.mathmlTree&&-1===b.mathml.indexOf(b.mathmlTree)&&b.mathml.push(b.mathmlTree);return{node:d.node,fence:b}};sre.SemanticProcessor.propagateFencePointer_=function(a,b){a.fencePointer=b.fencePointer||b.id.toString();a.embellished=null};\nsre.SemanticProcessor.classifyMultiline=function(a){for(var b=0,c=a.childNodes.length,d;b<c&&(!(d=a.childNodes[b])||!d.childNodes.length);)b++;if(!(b>=c)){var e=d.childNodes[0].role;e!==sre.SemanticAttr.Role.UNKNOWN&&a.childNodes.every(function(f){f=f.childNodes[0];return!f||f.role===e&&(sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(f)||sre.SemanticPred.isAttribute(\"type\",\"RELSEQ\")(f))})&&(a.role=e)}};\nsre.SemanticProcessor.classifyTable=function(a){var b=sre.SemanticProcessor.computeColumns_(a);sre.SemanticProcessor.classifyByColumns_(a,b,\"EQUALITY\")||sre.SemanticProcessor.classifyByColumns_(a,b,\"INEQUALITY\",[\"EQUALITY\"])||sre.SemanticProcessor.classifyByColumns_(a,b,\"ARROW\")};\nsre.SemanticProcessor.classifyByColumns_=function(a,b,c,d){d=function(g){return sre.SemanticProcessor.isPureRelation_(g,c)};var e=function(g){return sre.SemanticProcessor.isEndRelation_(g,c)||sre.SemanticProcessor.isPureRelation_(g,c)},f=function(g){return sre.SemanticProcessor.isEndRelation_(g,c,!0)||sre.SemanticProcessor.isPureRelation_(g,c)};return 3===b.length&&sre.SemanticProcessor.testColumns_(b,1,d)||2===b.length&&(sre.SemanticProcessor.testColumns_(b,1,e)||sre.SemanticProcessor.testColumns_(b,\n0,f))?(a.role=sre.SemanticAttr.Role[c],!0):!1};sre.SemanticProcessor.isEndRelation_=function(a,b,c){c=c?a.childNodes.length-1:0;return sre.SemanticPred.isAttribute(\"type\",\"RELSEQ\")(a)&&sre.SemanticPred.isAttribute(\"role\",b)(a)&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(a.childNodes[c])};sre.SemanticProcessor.isPureRelation_=function(a,b){return sre.SemanticPred.isAttribute(\"type\",\"RELATION\")(a)&&sre.SemanticPred.isAttribute(\"role\",b)(a)};\nsre.SemanticProcessor.computeColumns_=function(a){for(var b=[],c=0,d;d=a.childNodes[c];c++)for(var e=0,f;f=d.childNodes[e];e++)b[e]?b[e].push(f):b[e]=[f];return b};sre.SemanticProcessor.testColumns_=function(a,b,c){return(a=a[b])?a.some(function(d){return d.childNodes.length&&c(d.childNodes[0])})&&a.every(function(d){return!d.childNodes.length||c(d.childNodes[0])}):!1};\nsre.SemanticProcessor.MATHJAX_FONTS={\"-tex-caligraphic\":sre.SemanticAttr.Font.CALIGRAPHIC,\"-tex-caligraphic-bold\":sre.SemanticAttr.Font.CALIGRAPHICBOLD,\"-tex-calligraphic\":sre.SemanticAttr.Font.CALIGRAPHIC,\"-tex-calligraphic-bold\":sre.SemanticAttr.Font.CALIGRAPHICBOLD,\"-tex-oldstyle\":sre.SemanticAttr.Font.OLDSTYLE,\"-tex-oldstyle-bold\":sre.SemanticAttr.Font.OLDSTYLEBOLD,\"-tex-mathit\":sre.SemanticAttr.Font.ITALIC};\nsre.SemanticProcessor.prototype.font=function(a){var b=sre.SemanticProcessor.MATHJAX_FONTS[a];return b?b:a};sre.SemanticProcessor.prototype.propagateSimpleFunction=function(a){\"clearspeak\"!==sre.Engine.getInstance().domain||a.type!==sre.SemanticAttr.Type.INFIXOP&&a.type!==sre.SemanticAttr.Type.FRACTION||!a.childNodes.every(sre.SemanticPred.isSimpleFunction)||(a.role=sre.SemanticAttr.Role.COMPFUNC)};\nsre.SemanticProcessor.prototype.propagateComposedFunction=function(a){\"clearspeak\"===sre.Engine.getInstance().domain&&a.type===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].role===sre.SemanticAttr.Role.COMPFUNC&&(a.role=sre.SemanticAttr.Role.COMPFUNC)};sre.SemanticProcessor.proof=function(a,b,c){b=sre.SemanticProcessor.separateSemantics(b);return sre.SemanticProcessor.getInstance().proof(a,b,c)};\nsre.SemanticProcessor.prototype.proof=function(a,b,c){b.inference||b.axiom||console.log(\"Noise\");if(b.axiom)return b=this.cleanInference(a.childNodes),b=b.length?this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,c(b),[]):this.factory_.makeEmptyNode(),b.role=sre.SemanticAttr.Role.AXIOM,b.mathmlTree=a,b;a=this.inference(a,b,c);b.proof&&(a.role=sre.SemanticAttr.Role.PROOF,a.childNodes[0].role=sre.SemanticAttr.Role.FINAL);return a};\nsre.SemanticProcessor.prototype.inference=function(a,b,c){if(b.inferenceRule)return c=this.getFormulas(a,[],c),c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,[c.conclusion,c.premises],[]);var d=b.labelledRule,e=sre.DomUtil.toArray(a.childNodes);b=[];\"left\"!==d&&\"both\"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.LEFT));\"right\"!==d&&\"both\"!==d||b.push(this.getLabel(a,e,c,sre.SemanticAttr.Role.RIGHT));c=this.getFormulas(a,e,c);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.INFERENCE,\n[c.conclusion,c.premises],b);c.mathmlTree=a;return c};sre.SemanticProcessor.prototype.getLabel=function(a,b,c,d){a=this.findNestedRow(b,\"prooflabel\",d);c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.RULELABEL,c(sre.DomUtil.toArray(a.childNodes)),[]);c.role=d;c.mathmlTree=a;return c};\nsre.SemanticProcessor.prototype.getFormulas=function(a,b,c){b=b.length?this.findNestedRow(b,\"inferenceRule\"):a;var d=\"up\"===sre.SemanticProcessor.getSemantics(b).inferenceRule;a=d?b.childNodes[0]:b.childNodes[1];b=(d?b.childNodes[1]:b.childNodes[0]).childNodes[0].childNodes[0];var e=sre.DomUtil.toArray(b.childNodes[0].childNodes);d=[];var f=1;e=$jscomp.makeIterator(e);for(var g=e.next();!g.done;g=e.next())g=g.value,f%2&&d.push(g.childNodes[0]),f++;d=c(d);c=c(sre.DomUtil.toArray(a.childNodes[0].childNodes))[0];\nd=this.factory_.makeBranchNode(sre.SemanticAttr.Type.PREMISES,d,[]);d.mathmlTree=b;c=this.factory_.makeBranchNode(sre.SemanticAttr.Type.CONCLUSION,[c],[]);c.mathmlTree=a.childNodes[0].childNodes[0];return{conclusion:c,premises:d}};sre.SemanticProcessor.prototype.findNestedRow=function(a,b,c){return this.findNestedRow_(a,b,0,c)};\nsre.SemanticProcessor.prototype.findNestedRow_=function(a,b,c,d){if(3<c)return null;for(var e=0,f;f=a[e];e++){var g=sre.DomUtil.tagName(f);if(\"MSPACE\"!==g){if(\"MROW\"===g)return this.findNestedRow_(sre.DomUtil.toArray(f.childNodes),b,c+1,d);if(sre.SemanticProcessor.findSemantics(f,b,d))return f}}return null};sre.SemanticProcessor.prototype.cleanInference=function(a){return sre.DomUtil.toArray(a).filter(function(b){return\"MSPACE\"!==sre.DomUtil.tagName(b)})};\nsre.SemanticProcessor.findSemantics=function(a,b,c){c=null==c?null:c;return(a=sre.SemanticProcessor.getSemantics(a))&&a[b]?null==c?!0:a[b]===c:!1};sre.SemanticProcessor.getSemantics=function(a){return(a=a.getAttribute(\"semantics\"))?sre.SemanticProcessor.separateSemantics(a):null};sre.SemanticProcessor.removePrefix=function(a){a=$jscomp.makeIterator(a.split(\"_\"));a.next();return $jscomp.arrayFromIterator(a).join(\"_\")};\nsre.SemanticProcessor.separateSemantics=function(a){var b={};a.split(\";\").forEach(function(c){var d=$jscomp.makeIterator(c.split(\":\"));c=d.next().value;d=d.next().value;b[sre.SemanticProcessor.removePrefix(c)]=d});return b};sre.SemanticMathml=function(){sre.SemanticAbstractParser.call(this,\"MathML\");this.parseMap_={SEMANTICS:goog.bind(this.semantics_,this),MATH:goog.bind(this.rows_,this),MROW:goog.bind(this.rows_,this),MPADDED:goog.bind(this.rows_,this),MSTYLE:goog.bind(this.rows_,this),MFRAC:goog.bind(this.fraction_,this),MSUB:goog.bind(this.limits_,this),MSUP:goog.bind(this.limits_,this),MSUBSUP:goog.bind(this.limits_,this),MOVER:goog.bind(this.limits_,this),MUNDER:goog.bind(this.limits_,this),MUNDEROVER:goog.bind(this.limits_,\nthis),MROOT:goog.bind(this.root_,this),MSQRT:goog.bind(this.sqrt_,this),MTABLE:goog.bind(this.table_,this),MLABELEDTR:goog.bind(this.tableLabeledRow_,this),MTR:goog.bind(this.tableRow_,this),MTD:goog.bind(this.tableCell_,this),MS:goog.bind(this.text_,this),MTEXT:goog.bind(this.text_,this),\"ANNOTATION-XML\":goog.bind(this.text_,this),MI:goog.bind(this.identifier_,this),MN:goog.bind(this.number_,this),MO:goog.bind(this.operator_,this),MFENCED:goog.bind(this.fenced_,this),MENCLOSE:goog.bind(this.enclosed_,\nthis),MMULTISCRIPTS:goog.bind(this.multiscripts_,this),ANNOTATION:goog.bind(this.empty_,this),NONE:goog.bind(this.empty_,this),MACTION:goog.bind(this.action_,this)};var a={type:sre.SemanticAttr.Type.IDENTIFIER,role:sre.SemanticAttr.Role.NUMBERSET,font:sre.SemanticAttr.Font.DOUBLESTRUCK};\"CHNPQRZ\\u2102\\u210d\\u2115\\u2119\\u211a\\u211d\\u2124\".split(\"\").forEach(function(b){this.getFactory().defaultMap.add(b,a)}.bind(this))};goog.inherits(sre.SemanticMathml,sre.SemanticAbstractParser);\nsre.SemanticMathml.prototype.parse=function(a){sre.SemanticProcessor.getInstance().setNodeFactory(this.getFactory());var b=sre.DomUtil.toArray(a.childNodes),c=sre.DomUtil.tagName(a),d=this.parseMap_[c];b=(d?d:goog.bind(this.dummy_,this))(a,b);sre.SemanticUtil.addAttributes(b,a);if(-1!==[\"MATH\",\"MROW\",\"MPADDED\",\"MSTYLE\",\"SEMANTICS\"].indexOf(c))return b;b.mathml.unshift(a);b.mathmlTree=a;return b};sre.SemanticMathml.prototype.semantics_=function(a,b){return b.length?this.parse(b[0]):this.getFactory().makeEmptyNode()};\nsre.SemanticMathml.prototype.rows_=function(a,b){var c=a.getAttribute(\"semantics\");if(c&&c.match(\"bspr_\"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));b=sre.SemanticUtil.purgeNodes(b);b=1===b.length?this.parse(b[0]):sre.SemanticProcessor.getInstance().row(this.parseList(b));b.mathml.unshift(a);return b};\nsre.SemanticMathml.prototype.fraction_=function(a,b){return sre.SemanticProcessor.getInstance().fractionLikeNode(this.parse(b[0]),this.parse(b[1]),a.getAttribute(\"linethickness\"),\"true\"===a.getAttribute(\"bevelled\"))};sre.SemanticMathml.prototype.limits_=function(a,b){return sre.SemanticProcessor.getInstance().limitNode(sre.DomUtil.tagName(a),this.parseList(b))};\nsre.SemanticMathml.prototype.root_=function(a,b){return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROOT,[this.parse(b[1]),this.parse(b[0])],[])};sre.SemanticMathml.prototype.sqrt_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));return this.getFactory().makeBranchNode(sre.SemanticAttr.Type.SQRT,[sre.SemanticProcessor.getInstance().row(a)],[])};\nsre.SemanticMathml.prototype.table_=function(a,b){var c=a.getAttribute(\"semantics\");if(c&&c.match(\"bspr_\"))return sre.SemanticProcessor.proof(a,c,goog.bind(this.parseList,this));a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.TABLE,this.parseList(b),[]);sre.SemanticProcessor.tableToMultiline(a);return a};sre.SemanticMathml.prototype.tableRow_=function(a,b){a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b),[]);a.role=sre.SemanticAttr.Role.TABLE;return a};\nsre.SemanticMathml.prototype.tableLabeledRow_=function(a,b){if(!b.length)return this.tableRow_(a,b);a=this.parse(b[0]);a.role=sre.SemanticAttr.Role.LABEL;b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ROW,this.parseList(b.slice(1)),[a]);b.role=sre.SemanticAttr.Role.TABLE;return b};\nsre.SemanticMathml.prototype.tableCell_=function(a,b){a=this.parseList(sre.SemanticUtil.purgeNodes(b));a=a.length?1===a.length&&sre.SemanticPred.isAttribute(\"type\",\"EMPTY\")(a[0])?a:[sre.SemanticProcessor.getInstance().row(a)]:[];a=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.CELL,a,[]);a.role=sre.SemanticAttr.Role.TABLE;return a};\nsre.SemanticMathml.prototype.text_=function(a,b){b=this.leaf_(a,b);if(!a.textContent)return b;b.updateContent(a.textContent,!0);return sre.SemanticProcessor.getInstance().text(b,sre.DomUtil.tagName(a))};\nsre.SemanticMathml.prototype.identifier_=function(a,b){b=this.leaf_(a,b);a=sre.SemanticProcessor.getInstance().identifierNode(b,sre.SemanticProcessor.getInstance().font(a.getAttribute(\"mathvariant\")),a.getAttribute(\"class\"));if(\"clearspeak\"!==sre.Engine.getInstance().domain)return a;-1!==\"fghFGH\".split(\"\").indexOf(a.textContent)&&(a.role=sre.SemanticAttr.Role.SIMPLEFUNC);return a};sre.SemanticMathml.prototype.number_=function(a,b){a=this.leaf_(a,b);sre.SemanticProcessor.number(a);return a};\nsre.SemanticMathml.prototype.operator_=function(a,b){a=this.leaf_(a,b);a.type===sre.SemanticAttr.Type.UNKNOWN&&(a.type=sre.SemanticAttr.Type.OPERATOR);return a};sre.SemanticMathml.prototype.fenced_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));var c=sre.SemanticMathml.getAttribute_(a,\"separators\",\",\"),d=sre.SemanticMathml.getAttribute_(a,\"open\",\"(\");a=sre.SemanticMathml.getAttribute_(a,\"close\",\")\");a=sre.SemanticProcessor.getInstance().mfenced(d,a,c,b);return sre.SemanticProcessor.getInstance().tablesInRow([a])[0]};\nsre.SemanticMathml.prototype.enclosed_=function(a,b){b=this.parseList(sre.SemanticUtil.purgeNodes(b));b=this.getFactory().makeBranchNode(sre.SemanticAttr.Type.ENCLOSE,[sre.SemanticProcessor.getInstance().row(b)],[]);b.role=a.getAttribute(\"notation\")||sre.SemanticAttr.Role.UNKNOWN;return b};\nsre.SemanticMathml.prototype.multiscripts_=function(a,b){if(!b.length)return this.getFactory().makeEmptyNode();a=this.parse(b.shift());if(!b.length)return a;for(var c=[],d=[],e=[],f=[],g=!1,h=0,k=0,l;l=b[k];k++)\"MPRESCRIPTS\"===sre.DomUtil.tagName(l)?(g=!0,h=0):(g?h&1?c.push(l):d.push(l):h&1?e.push(l):f.push(l),h++);return sre.SemanticUtil.purgeNodes(c).length||sre.SemanticUtil.purgeNodes(d).length?sre.SemanticProcessor.getInstance().tensor(a,this.parseList(d),this.parseList(c),this.parseList(f),this.parseList(e)):\nsre.SemanticProcessor.getInstance().pseudoTensor(a,this.parseList(f),this.parseList(e))};sre.SemanticMathml.prototype.empty_=function(a,b){return this.getFactory().makeEmptyNode()};sre.SemanticMathml.prototype.action_=function(a,b){return 1<b.length?this.parse(b[1]):this.getFactory().makeUnprocessed(a)};sre.SemanticMathml.prototype.dummy_=function(a,b){b=this.getFactory().makeUnprocessed(a);b.role=a.tagName;return b};\nsre.SemanticMathml.prototype.leaf_=function(a,b){return 1===b.length&&b[0].nodeType!==sre.DomUtil.NodeType.TEXT_NODE?(a=this.getFactory().makeUnprocessed(a),sre.SemanticUtil.addAttributes(a,b[0]),a):this.getFactory().makeLeafNode(a.textContent,sre.SemanticProcessor.getInstance().font(a.getAttribute(\"mathvariant\")))};sre.SemanticMathml.getAttribute_=function(a,b,c){if(!a.hasAttribute(b))return c;a=a.getAttribute(b);return a.match(/^\\s*$/)?null:a};sre.SemanticTree=function(a){this.mathml=a;this.parser=new sre.SemanticMathml;this.root=this.parser.parse(a);this.collator=this.parser.getFactory().leafMap.collateMeaning();var b=this.collator.newDefault();b&&(this.parser=new sre.SemanticMathml,this.parser.getFactory().defaultMap=b,this.root=this.parser.parse(a));sre.SemanticTree.implicitVisitor_.visit(this.root,{});sre.SemanticTree.unitVisitor_.visit(this.root,{});sre.SemanticAnnotations.getInstance().annotate(this.root)};\nsre.SemanticTree.implicitVisitor_=new sre.SemanticVisitor(\"general\",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&a.contentNodes.every(function(c){return!c.embellished&&c.textContent===sre.SemanticAttr.invisibleTimes()})&&(a.role=sre.SemanticAttr.Role.IMPLICIT);return!1});\nsre.SemanticTree.unitVisitor_=new sre.SemanticVisitor(\"general\",function(a,b){a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.MULTIPLICATION&&(b=a.childNodes,b.length&&(sre.SemanticPred.isPureUnit(b[0])||sre.SemanticPred.isUnitCounter(b[0]))&&a.childNodes.slice(1).every(sre.SemanticPred.isPureUnit)&&(a.role=sre.SemanticAttr.Role.UNIT));return!1});sre.SemanticTree.empty=function(){var a=sre.DomUtil.parseInput(\"<math/>\"),b=new sre.SemanticTree(a);b.mathml=a;return b};\nsre.SemanticTree.fromNode=function(a,b){var c=sre.SemanticTree.empty();c.root=a;b&&(c.mathml=b);return c};sre.SemanticTree.fromRoot=function(a,b){for(;a.parent;)a=a.parent;a=sre.SemanticTree.fromNode(a);b&&(a.mathml=b);return a};sre.SemanticTree.prototype.xml=function(a){var b=sre.DomUtil.parseInput(\"<stree></stree>\");a=this.root.xml(b.ownerDocument,a);b.appendChild(a);return b};sre.SemanticTree.prototype.toString=function(a){return(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(this.xml(a))};\nsre.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return sre.DomUtil.formatXml(a)};sre.SemanticTree.prototype.displayTree=function(){this.root.displayTree()};sre.SemanticTree.prototype.replaceNode=function(a,b){var c=a.parent;c?c.replaceChild(a,b):this.root=b};sre.SemanticTree.prototype.toJson=function(){var a={};a.stree=this.root.toJson();return a};sre.Semantic={};sre.Semantic.Font=sre.SemanticAttr.Font;sre.Semantic.Role=sre.SemanticAttr.Role;sre.Semantic.Type=sre.SemanticAttr.Type;sre.Semantic.xmlTree=function(a){return sre.Semantic.getTree(a).xml()};sre.Semantic.getTree=function(a){return new sre.SemanticTree(a)};sre.Semantic.getTreeFromString=function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.getTree(a)};sre.MathspeakUtil={};sre.MathspeakUtil.spaceoutText=function(a){return a.textContent.split(\"\").join(\" \")};sre.MathspeakUtil.spaceoutNodes=function(a,b){var c=a.textContent.split(\"\"),d=[],e=sre.SemanticProcessor.getInstance();a=a.ownerDocument;for(var f=0,g;g=c[f];f++)g=e.getNodeFactory().makeLeafNode(g,sre.Semantic.Font.UNKNOWN),g=e.identifierNode(g,sre.Semantic.Font.UNKNOWN,\"\"),b(g),d.push(g.xml(a));return d};\nsre.MathspeakUtil.spaceoutNumber=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.textContent.match(/\\W/)||(b.type=sre.Semantic.Type.NUMBER)})};sre.MathspeakUtil.spaceoutIdentifier=function(a){return sre.MathspeakUtil.spaceoutNodes(a,function(b){b.font=sre.Semantic.Font.UNKNOWN;b.type=sre.Semantic.Type.IDENTIFIER})};\nsre.MathspeakUtil.nestingBarriers=[sre.Semantic.Type.CASES,sre.Semantic.Type.CELL,sre.Semantic.Type.INTEGRAL,sre.Semantic.Type.LINE,sre.Semantic.Type.MATRIX,sre.Semantic.Type.MULTILINE,sre.Semantic.Type.OVERSCORE,sre.Semantic.Type.ROOT,sre.Semantic.Type.ROW,sre.Semantic.Type.SQRT,sre.Semantic.Type.SUBSCRIPT,sre.Semantic.Type.SUPERSCRIPT,sre.Semantic.Type.TABLE,sre.Semantic.Type.UNDERSCORE,sre.Semantic.Type.VECTOR];sre.MathspeakUtil.nestingDepth={};\nsre.MathspeakUtil.resetNestingDepth=function(a){sre.MathspeakUtil.nestingDepth={};return[a]};\nsre.MathspeakUtil.getNestingDepth=function(a,b,c,d,e,f){d=d||sre.MathspeakUtil.nestingBarriers;e=e||{};f=f||function(h){return!1};var g=(new sre.SystemExternal.xmldom.XMLSerializer).serializeToString(b);sre.MathspeakUtil.nestingDepth[a]||(sre.MathspeakUtil.nestingDepth[a]={});if(sre.MathspeakUtil.nestingDepth[a][g])return sre.MathspeakUtil.nestingDepth[a][g];if(f(b)||0>c.indexOf(b.tagName))return 0;b=sre.MathspeakUtil.computeNestingDepth_(b,c,sre.BaseUtil.setdifference(d,c),e,f,0);return sre.MathspeakUtil.nestingDepth[a][g]=\nb};sre.MathspeakUtil.containsAttr=function(a,b){if(!a.attributes)return!1;a=sre.DomUtil.toArray(a.attributes);for(var c=0,d;d=a[c];c++)if(b[d.nodeName]===d.nodeValue)return!0;return!1};\nsre.MathspeakUtil.computeNestingDepth_=function(a,b,c,d,e,f){if(e(a)||-1<c.indexOf(a.tagName)||sre.MathspeakUtil.containsAttr(a,d))return f;-1<b.indexOf(a.tagName)&&f++;if(!a.childNodes||0===a.childNodes.length)return f;a=sre.DomUtil.toArray(a.childNodes);return Math.max.apply(null,a.map(function(g){return sre.MathspeakUtil.computeNestingDepth_(g,b,c,d,e,f)}))};\nsre.MathspeakUtil.fractionNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"fraction\",a,[\"fraction\"],sre.MathspeakUtil.nestingBarriers,{},sre.Messages.MS_FUNC.FRAC_NEST_DEPTH)};sre.MathspeakUtil.nestedFraction=function(a,b,c){a=sre.MathspeakUtil.fractionNestingDepth(a);a=Array.apply(null,Array(a)).map(function(d){return b});c&&a.push(c);return a.join(sre.Messages.REGEXP.JOINER_FRAC)};\nsre.MathspeakUtil.openingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.closingFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_V)};sre.MathspeakUtil.overFractionVerbose=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.FRAC_OVER)};\nsre.MathspeakUtil.openingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.START,sre.Messages.MS.FRAC_B)};sre.MathspeakUtil.closingFractionBrief=function(a){return sre.MathspeakUtil.nestedFraction(a,sre.Messages.MS.END,sre.Messages.MS.FRAC_B)};\nsre.MathspeakUtil.openingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_S:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_S)};\nsre.MathspeakUtil.closingFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.ENDFRAC:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.ENDFRAC)};\nsre.MathspeakUtil.overFractionSbrief=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return 1===a?sre.Messages.MS.FRAC_OVER:sre.Messages.MS_FUNC.COMBINE_NESTED_FRACTION(sre.Messages.MS.NEST_FRAC,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(a-1),sre.Messages.MS.FRAC_OVER)};sre.MathspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,10,100)?[a]:[]};\nsre.MathspeakUtil.nestedSubSuper=function(a,b,c){for(;a.parentNode;){var d=a.parentNode,e=d.parentNode,f=a.getAttribute&&a.getAttribute(\"role\");if(e.tagName===sre.Semantic.Type.SUBSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUB||f===sre.Semantic.Role.RIGHTSUB))b=c.sub+sre.Messages.REGEXP.JOINER_SUBSUPER+b;if(e.tagName===sre.Semantic.Type.SUPERSCRIPT&&a===d.childNodes[1]||e.tagName===sre.Semantic.Type.TENSOR&&f&&(f===sre.Semantic.Role.LEFTSUPER||\nf===sre.Semantic.Role.RIGHTSUPER))b=c.sup+sre.Messages.REGEXP.JOINER_SUBSUPER+b;a=e}return b.trim()};sre.MathspeakUtil.subscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUBSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.subscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUB,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};\nsre.MathspeakUtil.superscriptVerbose=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUPERSCRIPT,{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB})};sre.MathspeakUtil.superscriptBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,sre.Messages.MS.SUP,{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})};\nsre.MathspeakUtil.baselineVerbose=function(a){return(a=sre.MathspeakUtil.nestedSubSuper(a,\"\",{sup:sre.Messages.MS.SUPER,sub:sre.Messages.MS.SUB}))?a.replace(new RegExp(sre.Messages.MS.SUB+\"$\"),sre.Messages.MS.SUBSCRIPT).replace(new RegExp(sre.Messages.MS.SUPER+\"$\"),sre.Messages.MS.SUPERSCRIPT):sre.Messages.MS.BASELINE};sre.MathspeakUtil.baselineBrief=function(a){return sre.MathspeakUtil.nestedSubSuper(a,\"\",{sup:sre.Messages.MS.SUP,sub:sre.Messages.MS.SUB})||sre.Messages.MS.BASE};\nsre.MathspeakUtil.radicalNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"radical\",a,[\"sqrt\",\"root\"],sre.MathspeakUtil.nestingBarriers,{})};sre.MathspeakUtil.nestedRadical=function(a,b,c){var d=sre.MathspeakUtil.radicalNestingDepth(a);c=(a=sre.MathspeakUtil.getRootIndex(a))?sre.Messages.MS_FUNC.COMBINE_ROOT_INDEX(c,a):c;return 1===d?c:sre.Messages.MS_FUNC.COMBINE_NESTED_RADICAL(b,sre.Messages.MS_FUNC.RADICAL_NEST_DEPTH(d-1),c)};\nsre.MathspeakUtil.getRootIndex=function(a){a=\"sqrt\"===a.tagName?\"2\":sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0].textContent.trim();return sre.Messages.MS_ROOT_INDEX[a]||\"\"};sre.MathspeakUtil.openingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ENDROOT)};\nsre.MathspeakUtil.indexRadicalVerbose=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NESTED,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.STARTROOT)};sre.MathspeakUtil.closingRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ENDROOT)};\nsre.MathspeakUtil.indexRadicalBrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOTINDEX)};sre.MathspeakUtil.openingRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.ROOT)};sre.MathspeakUtil.indexRadicalSbrief=function(a){return sre.MathspeakUtil.nestedRadical(a,sre.Messages.MS.NEST_ROOT,sre.Messages.MS.INDEX)};\nsre.MathspeakUtil.underscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"underscore\",a,[\"underscore\"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.UNDERSCORE&&b.childNodes[0].childNodes[1].getAttribute(\"role\")===sre.Semantic.Role.UNDERACCENT})};sre.MathspeakUtil.nestedUnderscore=function(a){a=sre.MathspeakUtil.underscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.UNDER)+sre.Messages.MS.UNDERSCRIPT};\nsre.MathspeakUtil.overscoreNestingDepth=function(a){return sre.MathspeakUtil.getNestingDepth(\"overscore\",a,[\"overscore\"],sre.MathspeakUtil.nestingBarriers,{},function(b){return b.tagName&&b.tagName===sre.Semantic.Type.OVERSCORE&&b.childNodes[0].childNodes[1].getAttribute(\"role\")===sre.Semantic.Role.OVERACCENT})};sre.MathspeakUtil.nestedOverscore=function(a){a=sre.MathspeakUtil.overscoreNestingDepth(a);return Array(a).join(sre.Messages.MS.OVER)+sre.Messages.MS.OVERSCRIPT};\nsre.MathspeakUtil.determinantIsSimple=function(a){if(a.tagName!==sre.Semantic.Type.MATRIX||a.getAttribute(\"role\")!==sre.Semantic.Role.DETERMINANT)return[];for(var b=sre.XpathUtil.evalXPath(\"children/row/children/cell/children/*\",a),c=0,d;d=b[c];c++)if(d.tagName!==sre.Semantic.Type.NUMBER){if(d.tagName===sre.Semantic.Type.IDENTIFIER&&(d=d.getAttribute(\"role\"),d===sre.Semantic.Role.LATINLETTER||d===sre.Semantic.Role.GREEKLETTER||d===sre.Semantic.Role.OTHERLETTER))continue;return[]}return[a]};\nsre.MathspeakUtil.generateBaselineConstraint=function(){var a=function(g){return g.map(function(h){return\"ancestor::\"+h})},b=\"not(\"+a([\"subscript\",\"superscript\",\"tensor\"]).join(\" or \")+\")\",c=a([\"relseq\",\"multrel\"]);a=a([\"fraction\",\"punctuation\",\"fenced\",\"sqrt\",\"root\"]);for(var d=[],e=0,f;f=a[e];e++)d=d.concat(c.map(function(g){return f+\"/\"+g}));c=\"not(\"+d.join(\" | \")+\")\";return[\"ancestor::*/following-sibling::*\",b,c].join(\" and \")};\nsre.MathspeakUtil.removeParens=function(a){if(!a.childNodes.length||!a.childNodes[0].childNodes.length||!a.childNodes[0].childNodes[0].childNodes.length)return\"\";a=a.childNodes[0].childNodes[0].childNodes[0].textContent;return a.match(/^\\(.+\\)$/)?a.slice(1,-1):a};sre.MathspeakUtil.componentString_={3:\"CSFleftsuperscript\",4:\"CSFleftsubscript\",2:\"CSFbaseline\",1:\"CSFrightsubscript\",0:\"CSFrightsuperscript\"};sre.MathspeakUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};\nsre.MathspeakUtil.generateTensorRuleStrings_=function(a){var b=[],c=\"\",d=\"\";a=parseInt(a,2);for(var e=0;5>e;e++){var f=\"children/*[\"+sre.MathspeakUtil.childNumber_[e]+\"]\";if(a&1){var g=sre.MathspeakUtil.componentString_[e%5];c=\"[t] \"+g+\"Verbose; [n] \"+f+\";\"+c;d=\"[t] \"+g+\"Brief; [n] \"+f+\";\"+d}else b.unshift(\"name(\"+f+')=\"empty\"');a>>=1}b.push(c);b.push(d);return b};\nsre.MathspeakUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a),c=goog.bind(a.defineRulesAlias,a);a=goog.bind(a.defineSpecialisedRule,a);for(var d=\"11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100\".split(\" \"),e=0,f;f=d[e];e++){var g=\"tensor\"+f;f=sre.MathspeakUtil.generateTensorRuleStrings_(f);var h=f.pop(),k=f.pop(),l=[g,\"default\",k,\"self::tensor\"].concat(f),m=[g,\"brief\",h,\"self::tensor\"].concat(f);b.apply(null,l);b.apply(null,m);a(g,\"brief\",\"sbrief\");l=sre.MathspeakUtil.componentString_[2];\nk+=\"; [t]\"+l+\"Verbose\";h+=\"; [t]\"+l+\"Brief\";g+=\"-baseline\";l=[g,\"default\",k,\"self::tensor\",\"following-sibling::*\"].concat(f);m=[g,\"brief\",h,\"self::tensor\",\"following-sibling::*\"].concat(f);b.apply(null,l);b.apply(null,m);a(g,\"brief\",\"sbrief\");g=[g,\"self::tensor\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished\"].concat(f);c.apply(null,g)}};sre.Locale={};sre.Locale.nestingToString=function(a){switch(a){case 1:return sre.Messages.MS.ONCE||\"\";case 2:return sre.Messages.MS.TWICE;default:return a.toString()}};sre.Locale.vulgarNestingDepth=function(a){return!!sre.MathspeakUtil.isSmallVulgarFraction(a).length};sre.Locale.combinePostfixIndex=function(a,b){return a===sre.Messages.MS.ROOTINDEX||a===sre.Messages.MS.INDEX?a:a+\" \"+b};sre.Locale.localFont=function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||\"\");return\"string\"===typeof b?b:b[0]};\nsre.Grammar.getInstance().setCorrection(\"localFont\",sre.Locale.localFont);sre.Locale.localRole=function(a){return sre.Messages.ROLE[a]||a};sre.Grammar.getInstance().setCorrection(\"localRole\",sre.Locale.localRole);sre.Locale.localEnclose=function(a){return sre.Messages.ENCLOSE[a]||a};sre.Grammar.getInstance().setCorrection(\"localEnclose\",sre.Locale.localEnclose);sre.Locale.makePlural=function(a){var b=sre.Messages.PLURAL_UNIT[a];return b?b:sre.Messages.PLURAL(a)};\nsre.Grammar.getInstance().setCorrection(\"plural\",sre.Locale.makePlural);sre.Locale.prefixCombiner=function(a,b,c){a=c?c+\" \"+a:a;return b?b+\" \"+a:a};sre.Locale.postfixCombiner=function(a,b,c){a=c?c+\" \"+a:a;return b?a+\" \"+b:a};sre.Numbers.de={};sre.Numbers.de.onesNumbers_=\" eins zwei drei vier f\\u00fcnf sechs sieben acht neun zehn elf zw\\u00f6lf dreizehn vierzehn f\\u00fcnfzehn sechzehn siebzehn achtzehn neunzehn\".split(\" \");sre.Numbers.de.tensNumbers_=\"  zwanzig drei\\u00dfig vierzig f\\u00fcnfzig sechzig siebzig achtzig neunzig\".split(\" \");sre.Numbers.de.largeNumbers_=\" tausend million milliarde billion billiarde trillion trilliard quadrillion quadrilliard quintillion quintilliarde sextillion sextilliarde\".split(\" \");\nsre.Numbers.de.onePrefix_=function(a){return a===sre.Numbers.de.onesNumbers_[1]?\"ein\":a};sre.Numbers.de.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.de.onesNumbers_[Math.floor(a/100)];var c=b?sre.Numbers.de.onePrefix_(b)+\"hundert\":\"\";if(a%=100)if(c+=c?sre.Numbers.de.NUMBERS.numSep:\"\",b=sre.Numbers.de.onesNumbers_[a])c+=b;else{var d=sre.Numbers.de.tensNumbers_[Math.floor(a/10)];b=sre.Numbers.de.onesNumbers_[a%10];c+=b?sre.Numbers.de.onePrefix_(b)+\"und\"+d:d}return c};\nsre.Numbers.de.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){if(a%1E3){var d=sre.Numbers.de.hundredsToWords_(a%1E3);c=sre.Numbers.de.onePrefix_(d)+(b?sre.Numbers.de.largeNumbers_[b]:\"\")+c}a=Math.floor(a/1E3);b++}return c.replace(/ein$/,\"eins\")};sre.Numbers.de.numberToOrdinal=function(a,b){return 1===a?\"eintel\":2===a?b?\"halbe\":\"halb\":sre.Numbers.de.wordOrdinal(a)+\"l\"};\nsre.Numbers.de.wordOrdinal=function(a){return 1===a?\"erste\":3===a?\"dritte\":7===a?\"siebte\":8===a?\"achte\":sre.Numbers.de.numberToWords(a)+(19>a?\"te\":\"ste\")};sre.Numbers.de.simpleOrdinal=function(a){return a.toString()+\".\"};sre.Numbers.de.NUMBERS={wordOrdinal:sre.Numbers.de.wordOrdinal,simpleOrdinal:sre.Numbers.de.simpleOrdinal,numberToWords:sre.Numbers.de.numberToWords,numberToOrdinal:sre.Numbers.de.numberToOrdinal,vulgarSep:\" \",numSep:\"\"};var germanPrefixCombiner=function(a,b,c){\"s\"===c&&(b=b.split(\" \").map(function(d){return d.replace(/s$/,\"\")}).join(\" \"),c=\"\");a=c?c+\" \"+a:a;return b?b+\" \"+a:a},germanPostfixCombiner=function(a,b,c){a=c&&\"s\"!==c?c+\" \"+a:a;return b?a+\" \"+b:a};\nsre.Locale.de={MS:{START:\"Anfang\",FRAC_V:\"Bruch\",FRAC_B:\"Bruch\",FRAC_S:\"Bruch\",END:\"Ende\",FRAC_OVER:\"durch\",TWICE:\"Twice\",NEST_FRAC:\"geschachtelt\",ENDFRAC:\"Ende Bruch\",SUPER:\"hoch\",SUB:\"Index\",SUP:\"hoch\",SUPERSCRIPT:\"hoch\",SUBSCRIPT:\"Index\",BASELINE:\"Grundlinie\",BASE:\"Grund\",NESTED:\"geschachtelte\",NEST_ROOT:\"geschachtelte\",STARTROOT:\"Anfang Wurzel\",ENDROOT:\"Ende Wurzel\",ROOTINDEX:\"Wurzelexponent\",ROOT:\"Wurzel\",INDEX:\"Exponent\",UNDER:\"Unter\",UNDERSCRIPT:\"Unterschrift\",OVER:\"\\u00dcber\",OVERSCRIPT:\"\\u00dcberschrift\"},\nMS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,RADICAL_NEST_DEPTH:function(a){return 1<a?sre.Numbers.de.NUMBERS.numberToWords(a)+\"fach\":\"\"},COMBINE_ROOT_INDEX:function(a,b){return a.replace(\"Wurzel\",b?b+\"wurzel\":\"\")},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){a=c.match(/exponent$/)?a+\"r\":a;a=(b?b+\" \":\"\")+a;return c.match(/ /)?c.replace(/ /,\" \"+a+\" \"):a+\" \"+c},FONT_REGEXP:function(a){a=a.split(\" \").map(function(b){return b.replace(/s$/,\"(|s)\")}).join(\" \");\nreturn new RegExp(\"((^\"+a+\" )|( \"+a+\"$))\")}},MS_ROOT_INDEX:{2:\"Quadrat\",3:\"Kubik\"},FONT:{bold:\"fettes\",\"bold-fraktur\":\"fettes Fraktur\",\"bold-italic\":\"fettkursives\",\"bold-script\":\"fettes Schreibschrift\",caligraphic:\"kalligrafisches\",\"caligraphic-bold\":\"fettes kalligrafisches\",\"double-struck\":[\"mit Doppelstrich\",germanPostfixCombiner],\"double-struck-italic\":[\"kursiv mit Doppelstrich\",germanPostfixCombiner],fraktur:\"Fraktur\",fullwidth:\"vollbreites\",italic:\"kursives\",monospace:\"nichtproportionales\",normal:\"normales\",\noldstyle:\"antiquiertes\",\"oldstyle-bold\":\"antiquiertes fettes\",script:\"Schreibschrift\",\"sans-serif\":\"serifenloses\",\"sans-serif-italic\":\"serifenloses kursives\",\"sans-serif-bold\":\"serifenloses fettes\",\"sans-serif-bold-italic\":\"serifenloses fettkursives\",unknown:\"unbekannt\"},EMBELLISH:{\"super\":\"hoch\",sub:\"Index\",circled:\"eingekreistes\",parenthesized:\"eingeklammertes\",period:[\"Punkt\",germanPostfixCombiner],\"negative-circled\":\"schwarz eingekreistes\",\"double-circled\":\"doppelt eingekreistes\",\"circled-sans-serif\":\"eingekreistes serifenloses\",\n\"negative-circled-sans-serif\":\"schwarz eingekreistes serifenloses\",comma:[\"Komma\",germanPostfixCombiner],squared:\"umrahmtes\",\"negative-squared\":\"schwarz umrahmtes\"},ROLE:{addition:\"Addition\",multiplication:\"Multiplikation\",subtraction:\"Subtraktion\",division:\"Division\",equality:\"Gleichung\",inequality:\"Ungleichung\",element:\"Element\",arrow:\"Pfeil\",determinant:\"Determinante\",rowvector:\"Zeilenvektor\",binomial:\"Binomialkoeffizient\",squarematrix:\"quadratische Matrize\",multiline:\"mehrzeiligem Ausdruck\",matrix:\"Matrize\",\nvector:\"Vektor\",cases:\"Fallunterscheidung\",table:\"Tabelle\",unknown:\"unbekannt\"},ENCLOSE:{longdiv:\"langer Bruchstrich\",actuarial:\"Bilanzsumme\",radical:\"Quadratwurzel\",box:\"rechteckige Umrandung\",roundedbox:\"abgerundete rechteckige Umrandung\",circle:\"kreis\\u00e4hnliche Umrandung\",left:\"senkrechte Linie links\",right:\"senkrechte Linie rechts\",top:\"waagerechte Linie oberhalb\",bottom:\"waagerechte Linie unterhalb\",updiagonalstrike:\"durchgestrichen\",downdiagonalstrike:\"durchgestrichen\",verticalstrike:\"senkrecht durchgestrichen\",\nhorizontalstrike:\"durchgestrichen\",madruwb:\"arabisches Fakult\\u00e4tssymbol\",updiagonalarrow:\"Pfeil von links unten nach rechts oben\",phasorangle:\"phasor angle\",unknown:\"langer Bruchstrich\"},NAVIGATE:{COLLAPSIBLE:\"kollabierbar\",EXPANDABLE:\"ausfaltbar\",LEVEL:\"Niveau\"},REGEXP:{TEXT:\"a-zA-Z\\u00e4\\u00f6\\u00fc\\u00c4\\u00d6\\u00dc\\u00df\",NUMBER:\"((\\\\d{1,3})(?=(.| ))((.| )\\\\d{3})*(\\\\,\\\\d+)?)|^\\\\d*\\\\,\\\\d+|^\\\\d+\",DECIMAL_MARK:\",\",DIGIT_GROUP:\"\\\\.\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\" \"},PLURAL_UNIT:{Meile:\"Meilen\",\nYard:\"Yards\",Joule:\"Joules\",Gallone:\"Gallonen\",Unze:\"Unzen\",Tonne:\"Tonnen\",Minute:\"Minuten\",Stunde:\"Stunden\",Sekunde:\"Sekunden\"},PLURAL:function(a){return a.match(/(B|b)yte$/)?a.replace(/yte$/,\"ytes\"):a},NUMBERS:sre.Numbers.de.NUMBERS,ALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lambda;my;ny;xi;omikron;pi;rho;abschlie\\u00dfendes sigma;sigma;tau;ypsilon;phi;chi;psi;omega;partielle Ableitung;epsilon;theta;kappa;phi;rho;pi\".split(\";\"),\ngreekCap:\"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda My Ny Xi Omikron Pi Rho Theta Sigma Tau Ypsilon Phi Chi Psi Omega\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"null\":sre.Numbers.de.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"gro\\u00dfes\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"s\"}},ALPHABET_COMBINER:germanPrefixCombiner};\nsre.Grammar.getInstance().setCorrection(\"correctOne\",function(a){return a.replace(/^eins /,\"ein \")});sre.Grammar.getInstance().setCorrection(\"localFontNumber\",function(a){var b=sre.Messages.FONT[a];void 0===b&&(b=a||\"\");b=\"string\"===typeof b?b:b[0];return b.split(\" \").map(function(c){return c.replace(/s$/,\"\")}).join(\" \")});sre.Grammar.getInstance().setCorrection(\"lowercase\",function(a){return a.toLowerCase()});\nsre.Grammar.getInstance().setCorrection(\"article\",function(a){return\"dative\"===sre.Grammar.getInstance().getParameter(\"case\")?{der:\"dem\",die:\"der\",das:\"dem\"}[a]:a});sre.Grammar.getInstance().setCorrection(\"masculine\",function(a){return\"dative\"===sre.Grammar.getInstance().getParameter(\"case\")?a+\"n\":a});sre.Numbers.en={};sre.Numbers.en.onesNumbers_=\" one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen\".split(\" \");sre.Numbers.en.tensNumbers_=\"  twenty thirty forty fifty sixty seventy eighty ninety\".split(\" \");sre.Numbers.en.largeNumbers_=\" thousand million billion trillion quadrillion quintillion sextillion septillion octillion nonillion decillion\".split(\" \");\nsre.Numbers.en.hundredsToWords_=function(a){a%=1E3;var b=sre.Numbers.en.onesNumbers_[Math.floor(a/100)]?sre.Numbers.en.onesNumbers_[Math.floor(a/100)]+sre.Numbers.en.NUMBERS.numSep+\"hundred\":\"\";if(a%=100)b+=b?sre.Numbers.en.NUMBERS.numSep:\"\",b+=sre.Numbers.en.onesNumbers_[a]||sre.Numbers.en.tensNumbers_[Math.floor(a/10)]+(a%10?sre.Numbers.en.NUMBERS.numSep+sre.Numbers.en.onesNumbers_[a%10]:\"\");return b};\nsre.Numbers.en.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;)a%1E3&&(c=sre.Numbers.en.hundredsToWords_(a%1E3)+(b?\"-\"+sre.Numbers.en.largeNumbers_[b]+\"-\":\"\")+c),a=Math.floor(a/1E3),b++;return c.replace(/-$/,\"\")};sre.Numbers.en.numberToOrdinal=function(a,b){if(1===a)return b?\"oneths\":\"oneth\";if(2===a)return b?\"halves\":\"half\";a=sre.Numbers.en.wordOrdinal(a);return b?a+\"s\":a};\nsre.Numbers.en.wordOrdinal=function(a){a=sre.Numbers.en.numberToWords(a);return a=a.match(/one$/)?a.slice(0,-3)+\"first\":a.match(/two$/)?a.slice(0,-3)+\"second\":a.match(/three$/)?a.slice(0,-5)+\"third\":a.match(/five$/)?a.slice(0,-4)+\"fifth\":a.match(/eight$/)?a.slice(0,-5)+\"eighth\":a.match(/nine$/)?a.slice(0,-4)+\"ninth\":a.match(/twelve$/)?a.slice(0,-6)+\"twelfth\":a.match(/ty$/)?a.slice(0,-2)+\"tieth\":a+\"th\"};\nsre.Numbers.en.simpleOrdinal=function(a){var b=a%100,c=a.toString();if(10<b&&20>b)return c+\"th\";switch(a%10){case 1:return c+\"st\";case 2:return c+\"nd\";case 3:return c+\"rd\";default:return c+\"th\"}};sre.Numbers.en.NUMBERS={wordOrdinal:sre.Numbers.en.wordOrdinal,simpleOrdinal:sre.Numbers.en.simpleOrdinal,numberToWords:sre.Numbers.en.numberToWords,numberToOrdinal:sre.Numbers.en.numberToOrdinal,vulgarSep:\" \",numSep:\" \"};sre.Locale.en={MS:{START:\"Start\",FRAC_V:\"Fraction\",FRAC_B:\"Frac\",FRAC_S:\"Frac\",END:\"End\",FRAC_OVER:\"Over\",TWICE:\"Twice\",NEST_FRAC:\"Nest\",ENDFRAC:\"EndFrac\",SUPER:\"Super\",SUB:\"Sub\",SUP:\"Sup\",SUPERSCRIPT:\"Superscript\",SUBSCRIPT:\"Subscript\",BASELINE:\"Baseline\",BASE:\"Base\",NESTED:\"Nested\",NEST_ROOT:\"Nest\",STARTROOT:\"StartRoot\",ENDROOT:\"EndRoot\",ROOTINDEX:\"RootIndex\",ROOT:\"Root\",INDEX:\"Index\",UNDER:\"Under\",UNDERSCRIPT:\"Underscript\",OVER:\"Over\",OVERSCRIPT:\"Overscript\"},MS_FUNC:{FRAC_NEST_DEPTH:sre.Locale.vulgarNestingDepth,\nRADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:function(a,b){return a},COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+b+c},FONT_REGEXP:function(a){return new RegExp(\"^\"+a.split(/ |-/).join(\"( |-)\")+\"( |-)\")}},MS_ROOT_INDEX:{},FONT:{bold:\"bold\",\"bold-fraktur\":\"bold fraktur\",\"bold-italic\":\"bold italic\",\"bold-script\":\"bold script\",caligraphic:\"calligraphic\",\"caligraphic-bold\":\"calligraphic bold\",\"double-struck\":\"double struck\",\n\"double-struck-italic\":\"double struck italic\",fraktur:\"fraktur\",fullwidth:\"fullwidth\",italic:\"italic\",monospace:\"monospace\",normal:\"normal\",oldstyle:\"oldstyle\",\"oldstyle-bold\":\"oldstyle bold\",script:\"script\",\"sans-serif\":\"sans serif\",\"sans-serif-italic\":\"sans serif italic\",\"sans-serif-bold\":\"sans serif bold\",\"sans-serif-bold-italic\":\"sans serif bold italic\",unknown:\"unknown\"},EMBELLISH:{\"super\":\"super\",sub:\"sub\",circled:\"circled\",parenthesized:\"parenthesized\",period:[\"period\",sre.Locale.postfixCombiner],\n\"negative-circled\":\"black circled\",\"double-circled\":\"double circled\",\"circled-sans-serif\":\"circled sans serif\",\"negative-circled-sans-serif\":\"black circled sans serif\",comma:[\"comma\",sre.Locale.postfixCombiner],squared:\"squared\",\"negative-squared\":\"black squared\"},ROLE:{addition:\"addition\",multiplication:\"multiplication\",subtraction:\"subtraction\",division:\"division\",equality:\"equality\",inequality:\"inequality\",element:\"element\",arrow:\"arrow\",determinant:\"determinant\",rowvector:\"row vector\",binomial:\"binomial\",\nsquarematrix:\"square matrix\",multiline:\"multiple lines\",matrix:\"matrix\",vector:\"vector\",cases:\"case statement\",table:\"table\",unknown:\"unknown\"},ENCLOSE:{longdiv:\"long division\",actuarial:\"actuarial symbol\",radical:\"square root\",box:\"box\",roundedbox:\"rounded box\",circle:\"circle\",left:\"left vertical-line\",right:\"right vertical-line\",top:\"overbar\",bottom:\"underbar\",updiagonalstrike:\"crossout\",downdiagonalstrike:\"crossout\",verticalstrike:\"vertical strikeout\",horizontalstrike:\"crossout\",madruwb:\"Arabic factorial symbol\",\nupdiagonalarrow:\"diagonal arrow\",phasorangle:\"phasor angle\",unknown:\"long division\"},NAVIGATE:{COLLAPSIBLE:\"collapsible\",EXPANDABLE:\"expandable\",LEVEL:\"Level\"},REGEXP:{TEXT:\"a-zA-Z\",NUMBER:\"((\\\\d{1,3})(?=(,| ))((,| )\\\\d{3})*(\\\\.\\\\d+)?)|^\\\\d*\\\\.\\\\d+|^\\\\d+\",DECIMAL_MARK:\"\\\\.\",DIGIT_GROUP:\",\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\"\"},PLURAL_UNIT:{foot:\"feet\",inch:\"inches\",\"square foot\":\"square feet\",\"square inch\":\"square inches\",\"cubic foot\":\"cubic feet\",\"cubic inch\":\"cubic inches\"},NUMBERS:sre.Numbers.en.NUMBERS,\nALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;beta;gamma;delta;epsilon;zeta;eta;theta;iota;kappa;lamda;mu;nu;xi;omicron;pi;rho;final sigma;sigma;tau;upsilon;phi;chi;psi;omega;partial differential;epsilon;theta;kappa;phi;rho;pi\".split(\";\"),greekCap:\"Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lamda Mu Nu Xi Omicron Pi Rho Theta Sigma Tau Upsilon Phi Chi Psi Omega\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===\na?\"zero\":sre.Numbers.en.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"cap\",mathspeak:\"upper\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}},ALPHABET_COMBINER:sre.Locale.prefixCombiner};sre.Numbers.es={};sre.Numbers.es.onesNumbers_=\" uno dos tres cuatro cinco seis siete ocho nueve diez once doce trece catorce quince diecis\\u00e9is diecisiete dieciocho diecinueve veinte veintiuno veintid\\u00f3s veintitr\\u00e9s veinticuatro veinticinco veintis\\u00e9is veintisiete veintiocho veintinueve\".split(\" \");sre.Numbers.es.tensNumbers_=\"   treinta cuarenta cincuenta sesenta setenta ochenta noventa\".split(\" \");sre.Numbers.es.hundredsNumbers_=\" cien doscientos trescientos cuatrocientos quinientos seiscientos setecientos ochocientos novecientos\".split(\" \");\nsre.Numbers.es.largeNumbers_=\";mil;mill\\u00f3n;mil mill\\u00f3nes;bill\\u00f3n;mil bill\\u00f3nes;trill\\u00f3n;mil trill\\u00f3nes;cuatrill\\u00f3;mil cuatrill\\u00f3es;quintill\\u00f3n;mil quintill\\u00f3nes;sextill\\u00f3n;mil sextill\\u00f3nes;septill\\u00f3n;mil septill\\u00f3nes;octill\\u00f3n;mil octill\\u00f3nes;nonill\\u00f3n;mil nonill\\u00f3nes;decill\\u00f3n;mil decill\\u00f3nes\".split(\";\");\nsre.Numbers.es.tensToWords_=function(a){var b=a%100;if(30>b)return sre.Numbers.es.onesNumbers_[b];a=sre.Numbers.es.tensNumbers_[Math.floor(b/10)];b=sre.Numbers.es.onesNumbers_[b%10];return a&&b?a+\" y \"+b:a||b};sre.Numbers.es.hundredsToWords_=function(a){var b=a%1E3;a=Math.floor(b/100);var c=sre.Numbers.es.hundredsNumbers_[a];b=sre.Numbers.es.tensToWords_(b%100);return 1===a?b?c+\"to \"+b:c:c&&b?c+\" \"+b:c||b};\nsre.Numbers.es.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.es.largeNumbers_[b],f=sre.Numbers.es.hundredsToWords_(d);b?1===d?(e=e.match(\"/^mil( |$)/\")?e:\"un \"+e,c=e+(c?\" \"+c:\"\")):(e=e.replace(/\\u00f3n$/,\"ones\"),c=sre.Numbers.es.hundredsToWords_(d)+\" \"+e+(c?\" \"+c:\"\")):c=f}a=Math.floor(a/1E3);b++}return c};sre.Numbers.es.onesOrdinals_=\"primera segunda tercera cuarta quinta sexta s\\u00e9ptima octava novena d\\u00e9cima und\\u00e9cima duod\\u00e9cima\".split(\" \");\nsre.Numbers.es.tensOrdinals_=\"d\\u00e9cima vig\\u00e9sima trig\\u00e9sima cuadrag\\u00e9sima quincuag\\u00e9sima sexag\\u00e9sima septuag\\u00e9sima octog\\u00e9sima nonag\\u00e9sima\".split(\" \");sre.Numbers.es.hundredsOrdinals_=\"cent\\u00e9sima ducent\\u00e9sima tricent\\u00e9sima cuadringent\\u00e9sima quingent\\u00e9sima sexcent\\u00e9sima septingent\\u00e9sima octingent\\u00e9sima noningent\\u00e9sima\".split(\" \");\nsre.Numbers.es.numberToOrdinal=function(a,b){if(1999<a)return a.toString()+\"a\";if(12>=a)return sre.Numbers.es.onesOrdinals_[a-1];b=[];1E3<=a&&(a-=1E3,b.push(\"mil\\u00e9sima\"));if(!a)return b.join(\" \");var c=Math.floor(a/100);0<c&&(b.push(sre.Numbers.es.hundredsOrdinals_[c-1]),a%=100);12>=a?b.push(sre.Numbers.es.onesOrdinals_[a-1]):(c=Math.floor(a/10),0<c&&(b.push(sre.Numbers.es.tensOrdinals_[c-1]),a%=10),0<a&&b.push(sre.Numbers.es.onesOrdinals_[a-1]));return b.join(\" \")};\nsre.Numbers.es.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter(\"gender\");return a.toString()+(\"female\"===b?\"a\":\"o\")};sre.Numbers.es.NUMBERS={simpleOrdinal:sre.Numbers.es.simpleOrdinal,numberToWords:sre.Numbers.es.numberToWords,numberToOrdinal:sre.Numbers.es.numberToOrdinal,vulgarSep:\"-\"};var sansserifCombiner=function(a,b,c){a=\"sans serif \"+(c?c+\" \"+a:a);return b?a+\" \"+b:a};\nsre.Locale.es={MS:{START:\"empezar\",FRAC_V:\"fracci\\u00f3n\",FRAC_B:\"frac\",FRAC_S:\"frac\",END:\"finalizar\",FRAC_OVER:\"entre\",TWICE:\"\",NEST_FRAC:\"\",ENDFRAC:\"\",SUPER:\"super\",SUB:\"sub\",SUP:\"sup\",SUPERSCRIPT:\"super\\u00edndice\",SUBSCRIPT:\"sub\\u00edndice\",BASELINE:\"l\\u00ednea base\",BASE:\"\",NESTED:\"\",NEST_ROOT:\"\",STARTROOT:\"empezar ra\\u00edz\",ENDROOT:\"finalizar ra\\u00edz\",ROOTINDEX:\"\\u00edndice de ra\\u00edz\",ROOT:\"ra\\u00edz\",INDEX:\"\",UNDER:\"bajo\",UNDERSCRIPT:\"bajo\\u00edndice\",OVER:\"sobre\",OVERSCRIPT:\"sobre\\u00edndice\"},\nMS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return a+b+c},COMBINE_NESTED_RADICAL:function(a,b,c){return a+c},FONT_REGEXP:function(a){return RegExp(\"^\"+a+\" \")}},MS_ROOT_INDEX:{2:\"cuadrada\",3:\"c\\u00fabica\",4:\"a la cuarta\",5:\"a la quinta\",6:\"a la sexta\",7:\"a la s\\u00e9ptima\",8:\"a la octava\",9:\"a la novena\",10:\"a la d\\u00e9cima\"},FONT:{bold:\"negrita\",\"bold-fraktur\":\"negrita Fraktur\",\n\"bold-italic\":\"negrita cursiva\",\"bold-script\":\"negrita script\",caligraphic:\"caligr\\u00e1fica\",\"caligraphic-bold\":\"caligr\\u00e1fica negrita\",\"double-struck\":\"negrita de pizarra\",\"double-struck-italic\":\"negrita de pizarra cursiva\",fraktur:\"Fraktur\",fullwidth:\"ancho completo\",italic:\"cursiva\",monospace:\"monoespacio\",normal:\"normal\",oldstyle:\"estilo antiguo\",\"oldstyle-bold\":\"estilo antiguo negrita\",script:\"script\",\"sans-serif\":\"sans serif\",\"sans-serif-italic\":\"sans serif cursiva\",\"sans-serif-bold\":\"sans serif negrita\",\n\"sans-serif-bold-italic\":\"sans serif negrita cursiva\",unknown:\"desconocida\"},ROLE:{addition:\"adici\\u00f3n\",multiplication:\"multiplicaci\\u00f3n\",subtraction:\"resta\",division:\"divisi\\u00f3n\",equality:\"igualdad\",inequality:\"desigualdad\",element:\"elemento\",arrow:\"flecha\",determinant:\"determinante\",rowvector:\"fila vector\",binomial:\"binomial\",squarematrix:\"matriz cuadrada\",multiline:\"l\\u00edneas m\\u00faltiples\",matrix:\"matriz\",vector:\"vector\",cases:\"declaraci\\u00f3n de caso\",table:\"mesa\",unknown:\"desconocida\"},\nENCLOSE:{longdiv:\"divisi\\u00f3n larga\",actuarial:\"s\\u00edmbolo actuarial\",radical:\"ra\\u00edz cuadrada\",box:\"caja\",roundedbox:\"caja redondeada\",circle:\"c\\u00edrculo\",left:\"barra vertical izquierda\",right:\"barra vertical derecha\",top:\"barra\",bottom:\"subbarra\",updiagonalstrike:\"tachadura\",downdiagonalstrike:\"tachadura\",verticalstrike:\"ponchado vertical\",horizontalstrike:\"cruce\",madruwb:\"s\\u00edmbolo factorial \\u00e1rabe\",updiagonalarrow:\"flecha diagonal\",phasorangle:\"\\u00e1ngulo de fasores\",unknown:\"divisi\\u00f3n larga\"},\nEMBELLISH:{\"super\":\"super\\u00edndice\",sub:\"sub\\u00edndice\",circled:[\"en circulo\",sre.Locale.postfixCombiner],parenthesized:[\"entre par\\u00e9ntesis\",sre.Locale.postfixCombiner],period:[\"punto\",sre.Locale.postfixCombiner],\"negative-circled\":[\"en circulo negro\",sre.Locale.postfixCombiner],\"double-circled\":[\"en doble circulo\",sre.Locale.postfixCombiner],\"circled-sans-serif\":[\"en circulo\",sansserifCombiner],\"negative-circled-sans-serif\":[\"en circulo negro\",sansserifCombiner],comma:[\"coma\",sre.Locale.postfixCombiner],\nsquared:[\"en cuadrado\",sre.Locale.postfixCombiner],\"negative-squared\":[\"en cuadrado negro\",sre.Locale.postfixCombiner]},NAVIGATE:{COLLAPSIBLE:\"plegable\",EXPANDABLE:\"ampliable\",LEVEL:\"nivel\"},REGEXP:{TEXT:\"a-zA-Z\\u00e1\\u00e9\\u00ed\\u00f3\\u00fa\\u00f1\\u00c1\\u00c9\\u00cd\\u00d3\\u00da\\u00d1\",NUMBER:\"((\\\\d{1,3})(?=( ))(( )\\\\d{3})*(,\\\\d+)?)|^\\\\d*,\\\\d+|^\\\\d+\",DECIMAL_MARK:\",\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\" \",JOINER_FRAC:\" \"},PLURAL_UNIT:{},PLURAL:function(a){return/.*s$/.test(a)?a:a+\"s\"},NUMBERS:sre.Numbers.es.NUMBERS,\nALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alfa;beta;gamma;delta;\\u00e9psilon;zeta;eta;theta;iota;kappa;lambda;mi;ni;xi;\\u00f3micron;pi;rho;sigma final;sigma;tau;\\u00edpsilon;phi;ji;psi;omega;diferencial parcial;\\u00e9psilon;theta;kappa;phi;rho;pi\".split(\";\"),greekCap:\"Alfa Beta Gamma Delta \\u00c9psilon Zeta Eta Theta Iota Kappa Lambda Mi Ni Xi \\u00d3micron Pi Rho Theta Sigma Tau \\u00cdpsilon Phi Ji Psi Omega\".split(\" \")},\nALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"cero\":sre.Numbers.es.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"may\\u00fascula\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\"}},ALPHABET_COMBINER:sre.Locale.prefixCombiner,UNIT_TIMES:\"por\"};sre.Numbers.fr={};sre.Numbers.fr.SUB_ISO=\"fr\";sre.Numbers.fr.onesNumbers_=\" un deux trois quatre cinq six sept huit neuf dix onze douze treize quatorze quinze seize dix-sept dix-huit dix-neuf\".split(\" \");sre.Numbers.fr.tensNumbers_={fr:\"  vingt trente quarante cinquante soixante soixante-dix quatre-vingts quatre-vingt-dix\".split(\" \"),be:\"  vingt trente quarante cinquante soixante septante quatre-vingts nonante\".split(\" \"),sw:\"  vingt trente quarante cinquante soixante septante huitante nonante\".split(\" \")};\nsre.Numbers.fr.largeNumbers_=\";mille;millions;milliards;billions;mille billions;trillions;mille trillions;quadrillions;mille quadrillions;quintillions;mille quintillions\".split(\";\");\nsre.Numbers.fr.hundredsToWords_=function(a){var b=a%1E3;a=sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]?sre.Numbers.fr.onesNumbers_[Math.floor(b/100)]+\"-cent\":\"\";if(b%=100){a+=a?\"-\":\"\";var c=sre.Numbers.fr.onesNumbers_[b];if(c)a+=c;else{var d=sre.Numbers.fr.tensNumbers_[sre.Numbers.fr.SUB_ISO][Math.floor(b/10)];d.match(/\\-dix$/)?(c=sre.Numbers.fr.onesNumbers_[b%10+10],a+=d.replace(/\\-dix$/,\"\")+\"-\"+c):a+=d+(b%10?\"-\"+sre.Numbers.fr.onesNumbers_[b%10]:\"\")}}return(b=a.match(/s\\-\\w+$/))?a.replace(/s\\-\\w+$/,\nb[0].slice(1)):a.replace(/\\-un$/,\"-et-un\")};\nsre.Numbers.fr.numberToWords=function(a){if(a>=Math.pow(10,36))return a.toString();for(var b=0,c=\"\";0<a;){var d=a%1E3;if(d){var e=sre.Numbers.fr.largeNumbers_[b],f=sre.Numbers.fr.hundredsToWords_(d);e&&e.match(/^mille /)?(d=e.replace(/^mille /,\"\"),c=c.match(RegExp(d))?f+(b?\"-mille-\":\"\")+c:c.match(RegExp(d.replace(/s$/,\"\")))?f+(b?\"-mille-\":\"\")+c.replace(d.replace(/s$/,\"\"),d):f+(b?\"-\"+e+\"-\":\"\")+c):(e=1===d&&e?e.replace(/s$/,\"\"):e,c=f+(b?\"-\"+e+\"-\":\"\")+c)}a=Math.floor(a/1E3);b++}return c.replace(/-$/,\n\"\")};sre.Numbers.fr.SMALL_ORDINAL={1:\"uni\\u00e8me\",2:\"demi\",3:\"tiers\",4:\"quart\"};sre.Numbers.fr.numberToOrdinal=function(a,b){var c=sre.Numbers.fr.SMALL_ORDINAL[a]||sre.Numbers.fr.wordOrdinal(a);return 3===a?c:b?c+\"s\":c};sre.Numbers.fr.wordOrdinal=function(a){if(1===a)return\"premi\\u00e8re\";a=sre.Numbers.fr.numberToWords(a);a.match(/^neuf$/)?a=a.slice(0,-1)+\"v\":a.match(/cinq$/)?a+=\"u\":a.match(/trois$/)||!a.match(/e$/)&&!a.match(/s$/)||(a=a.slice(0,-1));return a+\"i\\u00e8me\"};\nsre.Numbers.fr.simpleOrdinal=function(a){var b=sre.Grammar.getInstance().getParameter(\"gender\");return 1===a?a.toString()+(\"male\"===b?\"er\":\"re\"):a.toString()+\"e\"};sre.Numbers.fr.NUMBERS={wordOrdinal:sre.Numbers.fr.wordOrdinal,simpleOrdinal:sre.Numbers.fr.simpleOrdinal,numberToWords:sre.Numbers.fr.numberToWords,numberToOrdinal:sre.Numbers.fr.numberToOrdinal,vulgarSep:\"-\"};sre.Locale.fr={MS:{START:\"d\\u00e9but\",FRAC_V:\"fraction\",FRAC_B:\"frac\",FRAC_S:\"frac\",END:\"fin\",FRAC_OVER:\"sur\",ONCE:\"1\",TWICE:\"2\",NEST_FRAC:\"imbriqu\\u00e9e\",ENDFRAC:\"fin frac\",SUPER:\"sup\",SUB:\"sub\",SUP:\"sup\",SUPERSCRIPT:\"exposant\",SUBSCRIPT:\"indice\",BASELINE:\"position de base\",BASE:\"position de base\",NESTED:\"imbriqu\\u00e9e\",NEST_ROOT:\"imbriqu\\u00e9e\",STARTROOT:\"d\\u00e9but racine\",ENDROOT:\"fin racine\",ROOTINDEX:\"indice du radical\",ROOT:\"racine\",INDEX:\"indice\",UNDER:\"sous\",UNDERSCRIPT:\"souscript\",OVER:\"sus\",\nOVERSCRIPT:\"suscript\"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:sre.Locale.nestingToString,COMBINE_ROOT_INDEX:sre.Locale.combinePostfixIndex,COMBINE_NESTED_FRACTION:function(a,b,c){return c.replace(/ $/g,\"\")+b+a},COMBINE_NESTED_RADICAL:function(a,b,c){return c+\" \"+a},FONT_REGEXP:function(a){return RegExp(\" (en |)\"+a+\"$\")}},MS_ROOT_INDEX:{2:\"carr\\u00e9e\",3:\"cubique\"},FONT:{bold:\"en gras\",\"bold-fraktur\":\"en gothique gras\",\"bold-italic\":\"en italique gras\",\"bold-script\":\"de ronde en gras\",\ncaligraphic:\"en calligraphique\",\"caligraphic-bold\":\"en calligraphique gras\",\"double-struck\":\"ajour\\u00e9\",\"double-struck-italic\":\"ajour\\u00e9 en italique\",fraktur:\"en gothique\",fullwidth:\"en pleine largeur\",italic:\"en italique\",monospace:\"en chasse fixe\",normal:\"en normal\",oldstyle:\"en ancien\",\"oldstyle-bold\":\"en ancien gras\",script:\"de ronde\",\"sans-serif\":\"sans empattement\",\"sans-serif-italic\":\"en italique sans empattement\",\"sans-serif-bold\":\"en gras sans empattement\",\"sans-serif-bold-italic\":\"en italique gras sans empattement\",\nunknown:\"inconnu\"},EMBELLISH:{\"super\":[\"exposant\",sre.Locale.prefixCombiner],sub:[\"indice\",sre.Locale.prefixCombiner],circled:\"encercl\\u00e9\",parenthesized:\"entre parenth\\u00e8ses\",period:\"un point\",\"negative-circled\":\"encercl\\u00e9 noir\",\"double-circled\":\"encercl\\u00e9 double\",\"circled-sans-serif\":\"sans empattement encercl\\u00e9\",\"negative-circled-sans-serif\":\"sans empattement encercl\\u00e9 noir\",comma:\"virgule\",squared:\"encadr\\u00e9\",\"negative-squared\":\"encadr\\u00e9 inverse\"},ROLE:{addition:\"addition\",\nmultiplication:\"multiplication\",subtraction:\"soustraction\",division:\"division\",equality:\"\\u00e9galit\\u00e9\",inequality:\"in\\u00e9galit\\u00e9\",element:\"\\u00e9l\\u00e9ment\",arrow:\"fl\\u00e8che\",determinant:\"d\\u00e9terminant\",rowvector:\"vecteur-rang\\u00e9e\",binomial:\"binomial\",squarematrix:\"matrice carr\\u00e9e\",\"set empty\":\"ensemble vide\",\"set extended\":\"extension\",\"set singleton\":\"singleton\",\"set collection\":\"collection\",label:\"\\u00e9tiquette\",multiline:\"multi-ligne\",matrix:\"matrice\",vector:\"vecteur\",\ncases:\"d\\u00e9claration de cas\",table:\"tableau\",unknown:\"inconnu\"},ENCLOSE:{longdiv:\"longue division\",actuarial:\"notation actuarielle\",radical:\"radical\",box:\"bo\\u00eete\",roundedbox:\"bo\\u00eete arrondie\",circle:\"cercle\",left:\"barre verticale gauche\",right:\"barre verticale droite\",top:\"trait suscrit\",bottom:\"trait souscrit\",updiagonalstrike:\"texte biff\\u00e9 diagonal montant\",downdiagonalstrike:\"texte biff\\u00e9 diagonal descendant\",verticalstrike:\"texte biff\\u00e9 vertical\",horizontalstrike:\"texte biff\\u00e9 horizontal\",\nmadruwb:\"symbole factorielle arabe\",updiagonalarrow:\"fl\\u00e8che diagonale montante\",phasorangle:\"angle de phase\",unknown:\"division longue\"},NAVIGATE:{COLLAPSIBLE:\"compressible\",EXPANDABLE:\"d\\u00e9compressible\",LEVEL:\"niveau\"},REGEXP:{TEXT:\"a-zA-Z\\u00e0\\u00e2\\u00e6\\u00e7\\u00e9\\u00e8\\u00ea\\u00eb\\u00ee\\u00ef\\u00f4\\u0153\\u00f9\\u00fb\\u00fc\\u00ff\\u00c0\\u00c2\\u00c6\\u00c7\\u00c9\\u00c8\\u00ca\\u00cb\\u00ce\\u00cf\\u00d4\\u0152\\u00d9\\u00db\\u00dc\\u0178\",NUMBER:\"((\\\\d{1,3})(?=( ))(( )\\\\d{3})*(,\\\\d+)?)|^\\\\d*,\\\\d+|^\\\\d+\",\nDECIMAL_MARK:\",\",DIGIT_GROUP:\"\",JOINER_SUBSUPER:\"-\",JOINER_FRAC:\" \"},PLURAL_UNIT:{foot:\"feet\",inch:\"inches\"},NUMBERS:sre.Numbers.fr.NUMBERS,ALPHABETS:{latinSmall:\"abcdefghijklmnopqrstuvwxyz\".split(\"\"),latinCap:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\"),greekSmall:\"nabla;alpha;b\\u00eata;gamma;delta;epsilon;z\\u00eata;\\u00eata;th\\u00eata;iota;kappa;lambda;m\\u00fb;n\\u00fb;xi;omicron;pi;rh\\u00f4;sigma final;sigma;tau;upsilon;phi;chi;psi;om\\u00e9ga;d\\u00e9riv\\u00e9e partielle;epsilon;th\\u00eata;kappa;phi;rh\\u00f4;pi\".split(\";\"),\ngreekCap:\"Alpha B\\u00eata Gamma Delta Epsilon Z\\u00eata \\u00cata Th\\u00eata Iota Kappa Lambda M\\u00fb N\\u00fb Xi Omicron Pi Rh\\u00f4 Th\\u00eata Sigma Tau Upsilon Phi Chi Psi Om\\u00e9ga\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:function(a){return 0===a?\"zero\":sre.Numbers.fr.numberToWords(a)},mathspeak:function(a){return a.toString()},clearspeak:function(a){return a.toString()}},letter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"majuscule\"},smallPrefix:{default:\"\"},\ndigitPrefix:{default:\"\"}},ALPHABET_COMBINER:function(a,b,c){a=c?a+\" \"+c:a;return b?a+\" \"+b:a}};sre.Numbers.nemeth={};sre.Numbers.nemeth.oneNumbers_=\"\\u2834\\u2802\\u2806\\u2812\\u2832\\u2822\\u2816\\u2836\\u2826\\u2814\".split(\"\");sre.Numbers.nemeth.numberToWords=function(a){return a.toString().split(\"\").map(function(b){return sre.Numbers.nemeth.oneNumbers_[parseInt(b,10)]}).join(\"\")};sre.Numbers.nemeth.NUMBERS={numberToWords:sre.Numbers.nemeth.numberToWords,simpleOrdinal:sre.Numbers.nemeth.numberToWords};var postfixCombiner=function(a,b,c){return b?a+b:a},embellishCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283b\"},doubleEmbellishCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283b\\u283b\"},parensCombiner=function(a,b,c){return b+(c?c:\"\\u2830\")+a+\"\\u283e\"};\nsre.Locale.nemeth={MS:{FRACTION_REPEAT:\"\\u2820\",FRACTION_START:\"\\u2839\",FRAC_V:\"\\u2839\",FRAC_B:\"Frac\",FRAC_S:\"Frac\",END:\"\\u2820\",FRACTION_OVER:\"\\u280c\",TWICE:\"Twice\",NEST_FRAC:\"Nest\",ENDFRAC:\"\\u283c\",FRACTION_END:\"\\u283c\",SUPER:\"\\u2818\",SUB:\"\\u2830\",SUP:\"\\u2818\",SUPERSCRIPT:\"\\u2818\",SUBSCRIPT:\"\\u2830\",BASELINE:\"\\u2810\",BASE:\"\\u2810\",NESTED:\"\\u2828\",NEST_ROOT:\"Nest\",STARTROOT:\"\\u281c\",ENDROOT:\"\\u283b\",ROOTINDEX:\"\\u2823\",ROOT:\"\\u2828\",INDEX:\"\\u2823\",UNDER:\"\\u2829\",UNDERSCRIPT:\"\\u2829\",OVER:\"\\u2823\",\nOVERSCRIPT:\"\\u2823\"},MS_FUNC:{FRAC_NEST_DEPTH:function(a){return!1},RADICAL_NEST_DEPTH:function(a){return\"\"},COMBINE_ROOT_INDEX:function(a,b){return a},FONT_REGEXP:function(a){return RegExp(\"^\"+a)}},MS_ROOT_INDEX:{},FONT:{bold:\"\\u2838\",\"bold-fraktur\":\"\\u2838\\u2800\\u2838\",\"bold-italic\":\"\\u2838\\u2828\",\"bold-script\":\"\\u2838\\u2808\",caligraphic:\"\\u2808\",\"caligraphic-bold\":\"\\u2808\\u2838\",\"double-struck\":\"\\u2838\",\"double-struck-italic\":\"\\u2838\\u2828\",fraktur:\"\\u2838\",italic:\"\\u2828\",monospace:\"\",normal:\"\",\noldstyle:\"\",\"oldstyle-bold\":\"\\u2838\",script:\"\\u2808\",\"sans-serif\":\"\\u2820\\u2828\",\"sans-serif-italic\":\"\\u2820\\u2828\\u2828\",\"sans-serif-bold\":\"\\u2820\\u2828\\u2838\",\"sans-serif-bold-italic\":\"\\u2820\\u2828\\u2838\\u2828\",unknown:\"\"},EMBELLISH:{\"super\":\"\\u2818\",sub:\"\\u2830\",circled:[\"\\u282b\\u2809\\u2838\\u282b\",embellishCombiner],parenthesized:[\"\\u2837\",parensCombiner],period:[\"\\u2838\\u2832\",postfixCombiner],\"negative-circled\":[\"\\u282b\\u2838\\u2809\\u2838\\u282b\",embellishCombiner],\"double-circled\":[\"\\u282b\\u2809\\u2838\\u282b\\u282b\\u2809\\u2838\\u282b\",\ndoubleEmbellishCombiner],\"circled-sans-serif\":[\"\\u282b\\u2809\\u2838\\u282b\\u2820\\u2828\",embellishCombiner],\"negative-circled-sans-serif\":[\"\\u282b\\u2838\\u2809\\u2838\\u282b\\u2820\\u2828\",embellishCombiner],comma:[\"\\u2820\",postfixCombiner],squared:[\"\\u282b\\u2832\\u2838\\u282b\",embellishCombiner],\"negative-squared\":[\"\\u282b\\u2838\\u2832\\u2838\\u282b\",embellishCombiner]},ROLE:{addition:\"addition\",multiplication:\"multiplication\",subtraction:\"subtraction\",division:\"division\",equality:\"equality\",inequality:\"inequality\",\nelement:\"element\",arrow:\"arrow\",determinant:\"determinant\",rowvector:\"row vector\",binomial:\"binomial\",squarematrix:\"square matrix\",multiline:\"multiple lines\",matrix:\"matrix\",vector:\"vector\",cases:\"case statement\",table:\"table\",unknown:\"unknown\"},ENCLOSE:{longdiv:\"long division\",actuarial:\"actuarial symbol\",radical:\"square root\",box:\"box\",roundedbox:\"rounded box\",circle:\"circle\",left:\"left vertical-line\",right:\"right vertical-line\",top:\"overbar\",bottom:\"underbar\",updiagonalstrike:\"crossout\",downdiagonalstrike:\"crossout\",\nverticalstrike:\"vertical strikeout\",horizontalstrike:\"crossout\",madruwb:\"Arabic factorial symbol\",updiagonalarrow:\"diagonal arrow\",phasorangle:\"phasor angle\",unknown:\"long division\"},REGEXP:{TEXT:\"a-zA-Z\",NUMBER:\"((\\\\d{1,3})(?=(,| ))((,| )\\\\d{3})*(\\\\.\\\\d+)?)|^\\\\d*\\\\.\\\\d+|^\\\\d+\",DECIMAL_MARK:\".\",DIGIT_GROUP:\",\",JOINER_SUBSUPER:\"\",JOINER_FRAC:\"\"},NAVIGATE:{COLLAPSIBLE:\"collapsible\",EXPANDABLE:\"expandable\",LEVEL:\"Level\"},NUMBERS:sre.Numbers.nemeth.NUMBERS,ALPHABETS:{latinSmall:\"\\u2801\\u2803\\u2809\\u2819\\u2811\\u280b\\u281b\\u2813\\u280a\\u281a\\u2805\\u2807\\u280d\\u281d\\u2815\\u280f\\u281f\\u2817\\u280e\\u281e\\u2825\\u2827\\u283a\\u282d\\u283d\\u2835\".split(\"\"),\nlatinCap:\"\\u2820\\u2801 \\u2820\\u2803 \\u2820\\u2809 \\u2820\\u2819 \\u2820\\u2811 \\u2820\\u280b \\u2820\\u281b \\u2820\\u2813 \\u2820\\u280a \\u2820\\u281a \\u2820\\u2805 \\u2820\\u2807 \\u2820\\u280d \\u2820\\u281d \\u2820\\u2815 \\u2820\\u280f \\u2820\\u281f \\u2820\\u2817 \\u2820\\u280e \\u2820\\u281e \\u2820\\u2825 \\u2820\\u2827 \\u2820\\u283a \\u2820\\u282d \\u2820\\u283d \\u2820\\u2835\".split(\" \"),greekSmall:\"\\u2828\\u282b \\u2828\\u2801 \\u2828\\u2803 \\u2828\\u281b \\u2828\\u2819 \\u2828\\u2811 \\u2828\\u2831 \\u2828\\u2826 \\u2828\\u2839 \\u2828\\u280a \\u2828\\u2805 \\u2828\\u2807 \\u2828\\u280d \\u2828\\u281d \\u2828\\u282d \\u2828\\u2815 \\u2828\\u280f \\u2828\\u2817 \\u2828\\u2812 \\u2828\\u280e \\u2828\\u281e \\u2828\\u2825 \\u2828\\u280b \\u2828\\u282f \\u2828\\u2813 \\u2828\\u2815 \\u2808\\u2819 \\u2828\\u2811 \\u2828\\u2839 \\u2828\\u2805 \\u2828\\u280b \\u2828\\u2817 \\u2828\\u280f\".split(\" \"),\ngreekCap:\"\\u2828\\u2820\\u2801 \\u2828\\u2820\\u2803 \\u2828\\u2820\\u281b \\u2828\\u2820\\u2819 \\u2828\\u2820\\u2811 \\u2828\\u2820\\u2831 \\u2828\\u2820\\u2823 \\u2828\\u2820\\u2839 \\u2828\\u2820\\u280a \\u2828\\u2820\\u2805 \\u2828\\u2820\\u2807 \\u2828\\u2820\\u280d \\u2828\\u2820\\u281d \\u2828\\u2820\\u282d \\u2828\\u2820\\u2815 \\u2828\\u2820\\u280f \\u2828\\u2820\\u2817 \\u2828\\u2820\\u2839 \\u2828\\u2820\\u280e \\u2828\\u2820\\u2825 \\u2828\\u2820\\u2825 \\u2828\\u2820\\u280b \\u2828\\u2820\\u282f \\u2828\\u2820\\u282b \\u2828\\u2820\\u283a\".split(\" \")},ALPHABET_TRANSFORMERS:{digit:{default:sre.Numbers.nemeth.numberToWords},\nletter:{default:function(a){return a}}},ALPHABET_PREFIXES:{capPrefix:{default:\"\"},smallPrefix:{default:\"\"},digitPrefix:{default:\"\\u283c\"}},ALPHABET_COMBINER:function(a,b,c){return b?b+a:a}};sre.L10n={};sre.L10n.setLocale=function(){var a=sre.L10n.getLocale();if(a)for(var b in a)sre.Messages[b]=a[b]};sre.L10n.getLocale=function(){var a=sre.Engine.getInstance().locale;-1===sre.Variables.LOCALES.indexOf(a)&&(console.error(\"Locale \"+a+\" does not exist! Using en instead.\"),sre.Engine.getInstance().locale=\"en\");return sre.Locale[sre.Engine.getInstance().locale]||sre.Locale.en};sre.EnrichCase=function(){};sre.EnrichCase.prototype.getMathml=function(){};sre.AbstractEnrichCase=function(a){this.semantic=a};sre.AbstractEnrichCase.prototype.getMathml=goog.abstractMethod;sre.EnrichCaseFactory=function(){};sre.EnrichCaseFactory.cases=[];sre.EnrichCaseFactory.getCase=function(a){for(var b=0,c;c=sre.EnrichCaseFactory.cases[b];b++)if(c.test(a))return new c.constr(a);return null};sre.SemanticSkeleton=function(a){this.array=a=0===a?a:a||[];this.levelsMap=this.parents=null};sre.SemanticSkeleton.prototype.populate=function(){this.parents&&this.levelsMap||(this.parents={},this.levelsMap={},this.populate_(this.array,this.array,[]))};\nsre.SemanticSkeleton.prototype.populate_=function(a,b,c){if(sre.SemanticSkeleton.simpleCollapseStructure(a))this.levelsMap[a]=b,this.parents[a]=a===c[0]?c.slice(1):c;else{b=sre.SemanticSkeleton.contentCollapseStructure(a)?a.slice(1):a;c=[b[0]].concat(c);for(var d=0,e=b.length;d<e;d++)this.populate_(b[d],a,c)}};sre.SemanticSkeleton.prototype.toString=function(){return sre.SemanticSkeleton.makeSexp_(this.array)};\nsre.SemanticSkeleton.makeSexp_=function(a){return sre.SemanticSkeleton.simpleCollapseStructure(a)?a.toString():sre.SemanticSkeleton.contentCollapseStructure(a)?\"(c \"+a.slice(1).map(sre.SemanticSkeleton.makeSexp_).join(\" \")+\")\":\"(\"+a.map(sre.SemanticSkeleton.makeSexp_).join(\" \")+\")\"};sre.SemanticSkeleton.fromTree=function(a){return sre.SemanticSkeleton.fromNode(a.root)};sre.SemanticSkeleton.fromNode=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromNode_(a))};\nsre.SemanticSkeleton.fromString=function(a){return new sre.SemanticSkeleton(sre.SemanticSkeleton.fromString_(a))};sre.SemanticSkeleton.fromString_=function(a){a=a.replace(/\\(/g,\"[\");a=a.replace(/\\)/g,\"]\");a=a.replace(/ /g,\",\");a=a.replace(/c/g,'\"c\"');return JSON.parse(a)};\nsre.SemanticSkeleton.fromNode_=function(a){if(!a)return[];var b=a.contentNodes;if(b.length){var c=b.map(sre.SemanticSkeleton.fromNode_);c.unshift(\"c\")}var d=a.childNodes;if(!d.length)return b.length?[a.id,c]:a.id;d=d.map(sre.SemanticSkeleton.fromNode_);b.length&&d.unshift(c);d.unshift(a.id);return d};sre.SemanticSkeleton.simpleCollapseStructure=function(a){return\"number\"===typeof a};\nsre.SemanticSkeleton.contentCollapseStructure=function(a){return!!a&&!sre.SemanticSkeleton.simpleCollapseStructure(a)&&\"c\"===a[0]};sre.SemanticSkeleton.interleaveIds=function(a,b){return sre.BaseUtil.interleaveLists(sre.SemanticSkeleton.collapsedLeafs(a),sre.SemanticSkeleton.collapsedLeafs(b))};\nsre.SemanticSkeleton.collapsedLeafs=function(a){var b=function(c){return sre.SemanticSkeleton.simpleCollapseStructure(c)?[c]:sre.SemanticSkeleton.contentCollapseStructure(c[1])?c.slice(2):c.slice(1)};return Array.prototype.slice.call(arguments,0).reduce(function(c,d){return c.concat(b(d))},[])};sre.SemanticSkeleton.fromStructure=function(a,b){return new sre.SemanticSkeleton(sre.SemanticSkeleton.tree_(a,b.root))};\nsre.SemanticSkeleton.tree_=function(a,b){if(!b)return[];if(!b.childNodes.length)return b.id;var c=b.id,d=[c];c=sre.XpathUtil.evalXPath(\".//self::*[@\"+sre.EnrichMathml.Attribute.ID+\"=\"+c+\"]\",a)[0];b=sre.SemanticSkeleton.combineContentChildren(b,b.contentNodes.map(function(f){return f}),b.childNodes.map(function(f){return f}));c&&c.setAttribute(sre.EnrichMathml.Attribute.OWNS,b.map(function(f){return f.id}).join(\" \"));c=0;for(var e;e=b[c];c++)d.push(sre.SemanticSkeleton.tree_(a,e));return d};\nsre.SemanticSkeleton.combineContentChildren=function(a,b,c){switch(a.type){case sre.Semantic.Type.RELSEQ:case sre.Semantic.Type.INFIXOP:case sre.Semantic.Type.MULTIREL:return sre.BaseUtil.interleaveLists(c,b);case sre.Semantic.Type.PREFIXOP:return b.concat(c);case sre.Semantic.Type.POSTFIXOP:return c.concat(b);case sre.Semantic.Type.FENCED:return c.unshift(b[0]),c.push(b[1]),c;case sre.Semantic.Type.APPL:return[c[0],b[0],c[1]];case sre.Semantic.Type.ROOT:return[c[1],c[0]];case sre.Semantic.Type.ROW:case sre.Semantic.Type.LINE:return b.length&&\nc.unshift(b[0]),c;default:return c}};sre.EnrichMathml={};sre.EnrichMathml.Error=function(a){Error.call(this);this.message=a||\"\";this.name=\"MathML Enrichment Error\"};goog.inherits(sre.EnrichMathml.Error,Error);sre.EnrichMathml.SETTINGS={collapsed:!0,implicit:!0};sre.EnrichMathml.ATTRIBUTE_PREFIX_=\"data-semantic-\";\nsre.EnrichMathml.Attribute={ADDED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"added\",ALTERNATIVE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"alternative\",CHILDREN:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"children\",COLLAPSED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"collapsed\",CONTENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"content\",EMBELLISHED:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"embellished\",FENCEPOINTER:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"fencepointer\",FONT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"font\",ID:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\n\"id\",ANNOTATION:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"annotation\",OPERATOR:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"operator\",OWNS:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"owns\",PARENT:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"parent\",PREFIX:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"prefix\",ROLE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"role\",SPEECH:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"speech\",STRUCTURE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"structure\",TYPE:sre.EnrichMathml.ATTRIBUTE_PREFIX_+\"type\"};\nsre.EnrichMathml.enrich=function(a,b){var c=a.cloneNode(!0);sre.EnrichMathml.walkTree(b.root);sre.Engine.getInstance().structure&&a.setAttribute(sre.EnrichMathml.Attribute.STRUCTURE,sre.SemanticSkeleton.fromStructure(a,b).toString());sre.Debugger.getInstance().generateOutput(function(){sre.EnrichMathml.formattedOutput(c,a,b,!0);return[]});return a};\nsre.EnrichMathml.walkTree=function(a){var b=sre.EnrichCaseFactory.getCase(a);if(b)return b=b.getMathml(),sre.EnrichMathml.ascendNewNode(b);if(1===a.mathml.length)return sre.Debugger.getInstance().output(\"Walktree Case 0\"),b=a.mathml[0],sre.EnrichMathml.setAttributes(b,a),sre.EnrichMathml.ascendNewNode(b);b=a.contentNodes.map(sre.EnrichMathml.cloneContentNode);sre.EnrichMathml.setOperatorAttribute_(a,b);var c=a.childNodes.map(sre.EnrichMathml.walkTree);c=sre.SemanticSkeleton.combineContentChildren(a,\nb,c);b=a.mathmlTree;if(null===b)sre.Debugger.getInstance().output(\"Walktree Case 1\"),b=sre.EnrichMathml.introduceNewLayer(c);else{var d=sre.EnrichMathml.attachedElement_(c);sre.Debugger.getInstance().output(\"Walktree Case 2\");d?(sre.Debugger.getInstance().output(\"Walktree Case 2.1\"),b=d.parentNode):(sre.Debugger.getInstance().output(\"Walktree Case 2.2\"),b=sre.EnrichMathml.getInnerNode(b))}b=sre.EnrichMathml.rewriteMfenced(b);sre.EnrichMathml.mergeChildren_(b,c);sre.EnrichMathml.setAttributes(b,a);\nreturn sre.EnrichMathml.ascendNewNode(b)};\nsre.EnrichMathml.introduceNewLayer=function(a){var b=sre.EnrichMathml.mathmlLca_(a),c=b.node,d=b.type;d===sre.EnrichMathml.lcaType.VALID&&sre.SemanticUtil.hasEmptyTag(c)||(sre.Debugger.getInstance().output(\"Walktree Case 1.1\"),c=sre.DomUtil.createElement(\"mrow\"),d===sre.EnrichMathml.lcaType.PRUNED?(sre.Debugger.getInstance().output(\"Walktree Case 1.1.0\"),c=sre.EnrichMathml.introduceLayerAboveLca(c,b.node,a)):a[0]&&(sre.Debugger.getInstance().output(\"Walktree Case 1.1.1\"),b=sre.EnrichMathml.attachedElement_(a),\na=sre.EnrichMathml.childrenSubset_(b.parentNode,a),sre.DomUtil.replaceNode(b,c),a.forEach(function(e){c.appendChild(e)})));return c};\nsre.EnrichMathml.introduceLayerAboveLca=function(a,b,c){var d=sre.EnrichMathml.descendNode_(b);if(sre.SemanticUtil.hasMathTag(d)){sre.Debugger.getInstance().output(\"Walktree Case 1.1.0.0\");sre.EnrichMathml.moveSemanticAttributes_(d,a);sre.DomUtil.toArray(d.childNodes).forEach(function(f){a.appendChild(f)});var e=a;a=d;d=e}b=c.indexOf(b);c[b]=d;sre.DomUtil.replaceNode(d,a);a.appendChild(d);c.forEach(function(f){a.appendChild(f)});return a};\nsre.EnrichMathml.moveSemanticAttributes_=function(a,b){for(var c in sre.EnrichMathml.Attribute){var d=sre.EnrichMathml.Attribute[c];a.hasAttribute(d)&&(b.setAttribute(d,a.getAttribute(d)),a.removeAttribute(d))}};sre.EnrichMathml.childrenSubset_=function(a,b){var c=sre.DomUtil.toArray(a.childNodes),d=Infinity,e=-Infinity;b.forEach(function(f){f=c.indexOf(f);-1!==f&&(d=Math.min(d,f),e=Math.max(e,f))});return c.slice(d,e+1)};\nsre.EnrichMathml.mergeChildren_=function(a,b){var c=a.childNodes;if(c.length)for(var d=0;b.length;)c[d]===b[0]||sre.EnrichMathml.functionApplication_(c[d],b[0])?(b.shift(),d++):c[d]&&-1===b.indexOf(c[d])?d++:(sre.EnrichMathml.isDescendant_(b[0],a)||a.insertBefore(b[0],c[d]||null),b.shift());else b.forEach(function(e){a.appendChild(e)})};sre.EnrichMathml.isDescendant_=function(a,b){if(!a)return!1;do if(a=a.parentNode,a===b)return!0;while(a);return!1};\nsre.EnrichMathml.functionApplication_=function(a,b){var c=sre.SemanticAttr.functionApplication();if(a&&b&&a.textContent&&b.textContent&&a.textContent===c&&b.textContent===c&&\"true\"===b.getAttribute(sre.EnrichMathml.Attribute.ADDED)){c=0;for(var d;d=a.attributes[c];c++)b.hasAttribute(d.nodeName)||b.setAttribute(d.nodeName,d.nodeValue);sre.DomUtil.replaceNode(a,b);return!0}return!1};sre.EnrichMathml.lcaType={VALID:\"valid\",INVALID:\"invalid\",PRUNED:\"pruned\"};\nsre.EnrichMathml.mathmlLca_=function(a){var b=sre.EnrichMathml.attachedElement_(a);if(!b)return{type:sre.EnrichMathml.lcaType.INVALID,node:null};var c=sre.EnrichMathml.attachedElement_(a.slice().reverse());if(b===c)return{type:sre.EnrichMathml.lcaType.VALID,node:b};b=sre.EnrichMathml.pathToRoot_(b);var d=sre.EnrichMathml.prunePath_(b,a);a=sre.EnrichMathml.pathToRoot_(c,function(f){return-1!==d.indexOf(f)});c=a[0];var e=d.indexOf(c);return-1===e?{type:sre.EnrichMathml.lcaType.INVALID,node:null}:{type:d.length!==\nb.length?sre.EnrichMathml.lcaType.PRUNED:sre.EnrichMathml.validLca_(d[e+1],a[1])?sre.EnrichMathml.lcaType.VALID:sre.EnrichMathml.lcaType.INVALID,node:c}};sre.EnrichMathml.prunePath_=function(a,b){for(var c=0;a[c]&&-1===b.indexOf(a[c]);)c++;return a.slice(0,c+1)};sre.EnrichMathml.attachedElement_=function(a){for(var b=0,c=null;!c&&b<a.length;)a[b].parentNode&&(c=a[b]),b++;return c};\nsre.EnrichMathml.pathToRoot_=function(a,b){b=b||function(d){return!1};for(var c=[a];!b(a)&&!sre.SemanticUtil.hasMathTag(a)&&a.parentNode;)a=sre.EnrichMathml.parentNode_(a),c.unshift(a);return c};sre.EnrichMathml.validLca_=function(a,b){return!(!a||!b||a.previousSibling||b.nextSibling)};sre.EnrichMathml.ascendNewNode=function(a){for(;!sre.SemanticUtil.hasMathTag(a)&&sre.EnrichMathml.unitChild_(a);)a=sre.EnrichMathml.parentNode_(a);return a};\nsre.EnrichMathml.descendNode_=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(c){return c.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.SemanticUtil.hasIgnoreTag(c)});return 1===b.length&&sre.SemanticUtil.hasEmptyTag(b[0])&&!b[0].hasAttribute(sre.EnrichMathml.Attribute.TYPE)?sre.EnrichMathml.descendNode_(b[0]):a};\nsre.EnrichMathml.unitChild_=function(a){var b=sre.EnrichMathml.parentNode_(a);return b&&sre.SemanticUtil.hasEmptyTag(b)?sre.DomUtil.toArray(b.childNodes).every(function(c){return c===a||sre.EnrichMathml.isIgnorable_(c)}):!1};sre.EnrichMathml.isIgnorable_=function(a){if(!a||sre.SemanticUtil.hasIgnoreTag(a))return!0;var b=sre.DomUtil.toArray(a.childNodes);return!sre.SemanticUtil.hasEmptyTag(a)&&b.length?!1:sre.DomUtil.toArray(a.childNodes).every(sre.EnrichMathml.isIgnorable_)};\nsre.EnrichMathml.parentNode_=function(a){return a.parentNode};sre.EnrichMathml.addCollapsedAttribute=function(a,b){b=new sre.SemanticSkeleton(b);a.setAttribute(sre.EnrichMathml.Attribute.COLLAPSED,b.toString())};sre.EnrichMathml.cloneContentNode=function(a){if(a.mathml.length)return sre.EnrichMathml.walkTree(a);var b=sre.EnrichMathml.SETTINGS.implicit?sre.EnrichMathml.createInvisibleOperator_(a):sre.DomUtil.createElement(\"mrow\");a.mathml=[b];return b};sre.EnrichMathml.makeIdList=function(a){return a.map(function(b){return b.id}).join(\",\")};\nsre.EnrichMathml.setAttributes=function(a,b){a.setAttribute(sre.EnrichMathml.Attribute.TYPE,b.type);for(var c=b.allAttributes(),d=0,e;e=c[d];d++)a.setAttribute(sre.EnrichMathml.Attribute[e[0].toUpperCase()],e[1]);b.childNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList(b.childNodes));b.contentNodes.length&&a.setAttribute(sre.EnrichMathml.Attribute.CONTENT,sre.EnrichMathml.makeIdList(b.contentNodes));b.parent&&a.setAttribute(sre.EnrichMathml.Attribute.PARENT,\nb.parent.id)};sre.EnrichMathml.rewriteMfenced=function(a){if(\"MFENCED\"!==sre.DomUtil.tagName(a))return a;for(var b=sre.DomUtil.createElement(\"mrow\"),c=0,d;d=a.attributes[c];c++)-1===[\"open\",\"close\",\"separators\"].indexOf(d.name)&&b.setAttribute(d.name,d.value);sre.DomUtil.toArray(a.childNodes).forEach(function(e){b.appendChild(e)});sre.DomUtil.replaceNode(a,b);return b};\nsre.EnrichMathml.createInvisibleOperator_=function(a){var b=sre.DomUtil.createElement(\"mo\"),c=sre.DomUtil.createTextNode(a.textContent);b.appendChild(c);sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");return b};sre.EnrichMathml.setOperatorAttribute_=function(a,b){var c=a.type+(a.textContent?\",\"+a.textContent:\"\");b.forEach(function(d){sre.EnrichMathml.getInnerNode(d).setAttribute(sre.EnrichMathml.Attribute.OPERATOR,c)})};\nsre.EnrichMathml.getInnerNode=function(a){var b=sre.DomUtil.toArray(a.childNodes);if(!b)return a;b=b.filter(function(g){return g.nodeType===sre.DomUtil.NodeType.ELEMENT_NODE&&!sre.EnrichMathml.isIgnorable_(g)});for(var c=[],d=0,e;e=b[d];d++)if(sre.SemanticUtil.hasEmptyTag(e)){var f=sre.EnrichMathml.getInnerNode(e);f&&f!==e&&c.push(f)}else c.push(e);return 1===c.length?c[0]:a};\nsre.EnrichMathml.formattedOutput=function(a,b,c,d){d=d||!1;sre.EnrichMathml.formattedOutput_(a,\"Original MathML\",d);sre.EnrichMathml.formattedOutput_(c,\"Semantic Tree\",d);sre.EnrichMathml.formattedOutput_(b,\"Semantically enriched MathML\",d)};sre.EnrichMathml.formattedOutput_=function(a,b,c){a=sre.DomUtil.formatXml(a.toString());c?console.info(b+\":\\n```html\\n\"+sre.EnrichMathml.removeAttributePrefix(a)+\"\\n```\\n\"):console.info(a)};\nsre.EnrichMathml.removeAttributePrefix=function(a){return a.toString().replace(new RegExp(sre.EnrichMathml.ATTRIBUTE_PREFIX_,\"g\"),\"\")};sre.EnrichMathml.addPrefix=function(a){var b=a.toUpperCase();return sre.EnrichMathml.Attribute[b]||sre.EnrichMathml.ATTRIBUTE_PREFIX_+a};\nsre.EnrichMathml.collapsePunctuated=function(a,b){var c=!!b;b=b||[];var d=a.parent,e=a.contentNodes.map(function(k){return k.id});e.unshift(\"c\");e=[a.id,e];for(var f=0,g;g=a.childNodes[f];f++){var h=sre.EnrichMathml.walkTree(g);b.push(h);h=sre.EnrichMathml.getInnerNode(h);d&&!c&&h.setAttribute(sre.EnrichMathml.Attribute.PARENT,d.id);e.push(g.id)}return e};sre.EnrichMathml.printNodeList__=function(a,b){console.info(a);sre.DomUtil.toArray(b).forEach(function(c){console.info(c.toString())});console.info(\"<<<<<<<<<<<<<<<<<\")};sre.CaseBinomial=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseBinomial,sre.AbstractEnrichCase);sre.CaseBinomial.test=function(a){return!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE&&a.role===sre.SemanticAttr.Role.BINOMIAL};\nsre.CaseBinomial.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.mml=sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);if(this.mml.hasAttribute(sre.EnrichMathml.Attribute.TYPE)){var a=sre.DomUtil.createElement(\"mrow\");a.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");sre.DomUtil.replaceNode(this.mml,a);a.appendChild(this.mml);this.mml=a}sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseDoubleScript=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseDoubleScript,sre.AbstractEnrichCase);sre.CaseDoubleScript.test=function(a){if(!a.mathmlTree||!a.childNodes.length)return!1;var b=sre.DomUtil.tagName(a.mathmlTree);a=a.childNodes[0].role;return\"MSUBSUP\"===b&&a===sre.SemanticAttr.Role.SUBSUP||\"MUNDEROVER\"===b&&a===sre.SemanticAttr.Role.UNDEROVER};\nsre.CaseDoubleScript.prototype.getMathml=function(){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=this.semantic.childNodes[1],d=a.childNodes[1],e=sre.EnrichMathml.walkTree(c),f=sre.EnrichMathml.walkTree(b),g=sre.EnrichMathml.walkTree(d);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,sre.EnrichMathml.makeIdList([b,d,c]));[f,g,e].forEach(goog.bind(function(h){sre.EnrichMathml.getInnerNode(h).setAttribute(sre.EnrichMathml.Attribute.PARENT,\nthis.mml.getAttribute(sre.EnrichMathml.Attribute.ID))},this));this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,a.role);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,[a.id,b.id,d.id],c.id]);return this.mml};sre.CaseMultiindex=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseMultiindex,sre.AbstractEnrichCase);\nsre.CaseMultiindex.prototype.completeMultiscript=function(a,b){var c=sre.DomUtil.toArray(this.mml.childNodes).slice(1),d=0,e=goog.bind(function(f){for(var g=0,h;h=f[g];g++){var k=c[d];if(k&&h==sre.EnrichMathml.getInnerNode(k).getAttribute(sre.EnrichMathml.Attribute.ID))sre.EnrichMathml.getInnerNode(k).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id),d++;else{var l=this.semantic.querySelectorAll(function(m){return m.id===h});this.mml.insertBefore(sre.CaseMultiindex.createNone_(l[0]),\nk||null)}}},this);e(a);c[d]&&\"MPRESCRIPTS\"!==sre.DomUtil.tagName(c[d])?this.mml.insertBefore(c[d],sre.DomUtil.createElement(\"mprescripts\")):d++;e(b)};sre.CaseMultiindex.createNone_=function(a){var b=sre.DomUtil.createElement(\"none\");a&&sre.EnrichMathml.setAttributes(b,a);b.setAttribute(sre.EnrichMathml.Attribute.ADDED,\"true\");return b};\nsre.CaseMultiindex.multiscriptIndex=function(a){if(a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.contentNodes[0].role===sre.SemanticAttr.Role.DUMMY)return sre.EnrichMathml.collapsePunctuated(a);sre.EnrichMathml.walkTree(a);return a.id};sre.CaseMultiscripts=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseMultiscripts,sre.CaseMultiindex);sre.CaseMultiscripts.test=function(a){return a.mathmlTree?\"MMULTISCRIPTS\"===sre.DomUtil.tagName(a.mathmlTree)&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT):!1};\nsre.CaseMultiscripts.prototype.getMathml=function(){sre.EnrichMathml.setAttributes(this.mml,this.semantic);if(this.semantic.childNodes[0]&&this.semantic.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP){var a=this.semantic.childNodes[0],b=a.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),d=sre.CaseMultiindex.multiscriptIndex(a.childNodes[1]),e=[this.semantic.id,[a.id,b.id,d],c];sre.EnrichMathml.addCollapsedAttribute(this.mml,e);this.mml.setAttribute(sre.EnrichMathml.Attribute.TYPE,\na.role);this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(d,c),[])}else b=this.semantic.childNodes[0],c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),e=[this.semantic.id,b.id,c],sre.EnrichMathml.addCollapsedAttribute(this.mml,e);a=sre.SemanticSkeleton.collapsedLeafs(d||[],c);c=sre.EnrichMathml.walkTree(b);sre.EnrichMathml.getInnerNode(c).setAttribute(sre.EnrichMathml.Attribute.PARENT,this.semantic.id);a.unshift(b.id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,\na.join(\",\"));return this.mml};sre.CaseEmbellished=function(a){sre.AbstractEnrichCase.call(this,a);this.ofenceMml=this.ofence=this.fencedMml=this.fenced=null;this.ofenceMap={};this.cfenceMml=this.cfence=null;this.cfenceMap={};this.parentCleanup=[]};goog.inherits(sre.CaseEmbellished,sre.AbstractEnrichCase);sre.CaseEmbellished.test=function(a){return!(!a.mathmlTree||!a.fencePointer)};sre.CaseEmbellished.prototype.getMathml=function(){this.getFenced_();this.fencedMml=sre.EnrichMathml.walkTree(this.fenced);this.getFencesMml_();return this.rewrite_()};\nsre.CaseEmbellished.prototype.getFenced_=function(){for(var a=this.semantic;a.type!==sre.SemanticAttr.Type.FENCED;)a=a.childNodes[0];this.fenced=a.childNodes[0];this.ofence=a.contentNodes[0];this.cfence=a.contentNodes[1];sre.CaseEmbellished.fencedMap_(this.ofence,this.ofenceMap);sre.CaseEmbellished.fencedMap_(this.cfence,this.cfenceMap)};sre.CaseEmbellished.fencedMap_=function(a,b){b[a.id]=a.mathmlTree;a.embellished&&sre.CaseEmbellished.fencedMap_(a.childNodes[0],b)};\nsre.CaseEmbellished.prototype.getFencesMml_=function(){for(var a=this.semantic,b=Object.keys(this.ofenceMap),c=Object.keys(this.cfenceMap);!(this.ofenceMml&&this.cfenceMml||a===this.fenced);)-1===b.indexOf(a.fencePointer)||this.ofenceMml||(this.ofenceMml=a.mathmlTree),-1===c.indexOf(a.fencePointer)||this.cfenceMml||(this.cfenceMml=a.mathmlTree),a=a.childNodes[0];this.ofenceMml||(this.ofenceMml=this.ofence.mathmlTree);this.cfenceMml||(this.cfenceMml=this.cfence.mathmlTree);this.ofenceMml&&(this.ofenceMml=\nsre.EnrichMathml.ascendNewNode(this.ofenceMml));this.cfenceMml&&(this.cfenceMml=sre.EnrichMathml.ascendNewNode(this.cfenceMml))};\nsre.CaseEmbellished.prototype.rewrite_=function(){var a=this.semantic,b=null,c=this.introduceNewLayer_();for(sre.EnrichMathml.setAttributes(c,this.fenced.parent);a.type!==sre.SemanticAttr.Type.FENCED;){var d=a.mathmlTree,e=this.specialCase_(a,d);if(e)a=e;else{sre.EnrichMathml.setAttributes(d,a);e=[];for(var f=1,g;g=a.childNodes[f];f++)e.push(sre.EnrichMathml.walkTree(g));a=a.childNodes[0]}e=sre.DomUtil.createElement(\"dummy\");f=c.parentNode;g=d.childNodes[0];sre.DomUtil.replaceNode(d,e);sre.DomUtil.replaceNode(c,\nd);sre.DomUtil.replaceNode(d.childNodes[0],c);sre.DomUtil.replaceNode(e,g);d.parentNode=f;c=d.childNodes[0];b||(b=d)}sre.EnrichMathml.walkTree(this.ofence);sre.EnrichMathml.walkTree(this.cfence);this.cleanupParents_();return b||c};\nsre.CaseEmbellished.prototype.specialCase_=function(a,b){var c=sre.DomUtil.tagName(b),d=null;if(\"MSUBSUP\"===c){d=a.childNodes[0];var e=sre.CaseDoubleScript}else\"MMULTISCRIPTS\"===c&&(a.type===sre.SemanticAttr.Type.SUPERSCRIPT||a.type===sre.SemanticAttr.Type.SUBSCRIPT?e=sre.CaseMultiscripts:a.type===sre.SemanticAttr.Type.TENSOR&&(e=sre.CaseTensor),d=e&&a.childNodes[0]&&a.childNodes[0].role===sre.SemanticAttr.Role.SUBSUP?a.childNodes[0]:a);if(!d)return null;c=d.childNodes[0];b=sre.CaseEmbellished.makeEmptyNode_(c.id);\nd.childNodes[0]=b;b=(new e(a)).getMathml();d.childNodes[0]=c;this.parentCleanup.push(b);return d.childNodes[0]};sre.CaseEmbellished.makeEmptyNode_=function(a){var b=sre.DomUtil.createElement(\"mrow\");a=new sre.SemanticNode(a);a.type=sre.SemanticAttr.Type.EMPTY;a.mathmlTree=b;return a};\nsre.CaseEmbellished.prototype.introduceNewLayer_=function(){var a=this.fullFence(this.ofenceMml),b=this.fullFence(this.cfenceMml),c=sre.DomUtil.createElement(\"mrow\");sre.DomUtil.replaceNode(this.fencedMml,c);c.appendChild(this.fencedMml);c.insertBefore(a,this.fencedMml);c.appendChild(b);if(!c.parentNode){for(a=sre.DomUtil.createElement(\"mrow\");0<c.childNodes.length;)a.appendChild(c.childNodes[0]);c.appendChild(a);c=a}return c};\nsre.CaseEmbellished.prototype.fullFence=function(a){for(var b=this.fencedMml.parentNode;a.parentNode&&a.parentNode!==b;)a=a.parentNode;return a};sre.CaseEmbellished.prototype.cleanupParents_=function(){this.parentCleanup.forEach(function(a){var b=a.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.PARENT);a.childNodes[0].setAttribute(sre.EnrichMathml.Attribute.PARENT,b)})};sre.CaseLine=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseLine,sre.AbstractEnrichCase);sre.CaseLine.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.LINE};\nsre.CaseLine.prototype.getMathml=function(){this.semantic.contentNodes.length&&sre.EnrichMathml.walkTree(this.semantic.contentNodes[0]);this.semantic.childNodes.length&&sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseProof=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseProof,sre.AbstractEnrichCase);sre.CaseProof.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.INFERENCE||a.type===sre.SemanticAttr.Type.PREMISES)};\nsre.CaseProof.prototype.getMathml=function(){if(!this.semantic.childNodes.length)return this.mml;this.semantic.contentNodes.forEach(function(a){sre.EnrichMathml.walkTree(a);sre.EnrichMathml.setAttributes(a.mathmlTree,a)});this.semantic.childNodes.forEach(function(a){sre.EnrichMathml.walkTree(a)});sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.getAttribute(\"data-semantic-id\")===this.mml.getAttribute(\"data-semantic-parent\")&&this.mml.removeAttribute(\"data-semantic-parent\");return this.mml};sre.CaseTable=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree;this.inner=[]};goog.inherits(sre.CaseTable,sre.AbstractEnrichCase);sre.CaseTable.test=function(a){return!!a.mathmlTree&&(a.type===sre.SemanticAttr.Type.MATRIX||a.type===sre.SemanticAttr.Type.VECTOR||a.type===sre.SemanticAttr.Type.CASES)};\nsre.CaseTable.prototype.getMathml=function(){var a=sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[0]),b=this.semantic.contentNodes[1]?sre.EnrichMathml.cloneContentNode(this.semantic.contentNodes[1]):null;this.inner=this.semantic.childNodes.map(sre.EnrichMathml.walkTree);\"MFENCED\"===sre.DomUtil.tagName(this.mml)?(this.mml.insertBefore(a,this.mml.childNodes[0]||null),b&&this.mml.appendChild(b),this.mml=sre.EnrichMathml.rewriteMfenced(this.mml)):(a=[a,this.mml],b&&a.push(b),this.mml=sre.EnrichMathml.introduceNewLayer(a));\nsre.EnrichMathml.setAttributes(this.mml,this.semantic);return this.mml};sre.CaseTensor=function(a){sre.CaseMultiindex.call(this,a)};goog.inherits(sre.CaseTensor,sre.CaseMultiindex);sre.CaseTensor.test=function(a){return!!a.mathmlTree&&a.type===sre.SemanticAttr.Type.TENSOR};\nsre.CaseTensor.prototype.getMathml=function(){sre.EnrichMathml.walkTree(this.semantic.childNodes[0]);var a=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[1]),b=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[2]),c=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[3]),d=sre.CaseMultiindex.multiscriptIndex(this.semantic.childNodes[4]);sre.EnrichMathml.setAttributes(this.mml,this.semantic);sre.EnrichMathml.addCollapsedAttribute(this.mml,[this.semantic.id,this.semantic.childNodes[0].id,\na,b,c,d]);var e=sre.SemanticSkeleton.collapsedLeafs(a,b,c,d);e.unshift(this.semantic.childNodes[0].id);this.mml.setAttribute(sre.EnrichMathml.Attribute.CHILDREN,e.join(\",\"));this.completeMultiscript(sre.SemanticSkeleton.interleaveIds(c,d),sre.SemanticSkeleton.interleaveIds(a,b));return this.mml};sre.CaseText=function(a){sre.AbstractEnrichCase.call(this,a);this.mml=a.mathmlTree};goog.inherits(sre.CaseText,sre.AbstractEnrichCase);sre.CaseText.test=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&(a.role===sre.SemanticAttr.Role.TEXT||a.contentNodes.every(function(b){return b.role===sre.SemanticAttr.Role.DUMMY}))};\nsre.CaseText.prototype.getMathml=function(){var a=[],b=sre.EnrichMathml.collapsePunctuated(this.semantic,a);this.mml=sre.EnrichMathml.introduceNewLayer(a);sre.EnrichMathml.setAttributes(this.mml,this.semantic);this.mml.removeAttribute(sre.EnrichMathml.Attribute.CONTENT);sre.EnrichMathml.addCollapsedAttribute(this.mml,b);return this.mml};sre.EnrichCases=function(){};\nsre.EnrichCaseFactory.cases.push({test:sre.CaseEmbellished.test,constr:sre.CaseEmbellished},{test:sre.CaseDoubleScript.test,constr:sre.CaseDoubleScript},{test:sre.CaseTensor.test,constr:sre.CaseTensor},{test:sre.CaseMultiscripts.test,constr:sre.CaseMultiscripts},{test:sre.CaseLine.test,constr:sre.CaseLine},{test:sre.CaseBinomial.test,constr:sre.CaseBinomial},{test:sre.CaseProof.test,constr:sre.CaseProof},{test:sre.CaseTable.test,constr:sre.CaseTable},{test:sre.CaseText.test,constr:sre.CaseText});sre.Enrich={};sre.Enrich.semanticMathmlNode=function(a){a=a.cloneNode(!0);var b=sre.Semantic.getTree(a);return sre.EnrichMathml.enrich(a,b)};sre.Enrich.semanticMathmlSync=function(a){a=sre.DomUtil.parseInput(a);return sre.Enrich.semanticMathmlNode(a)};sre.Enrich.semanticMathml=function(a,b){if(sre.Engine.isReady()){var c=sre.DomUtil.parseInput(a);b(sre.Enrich.semanticMathmlNode(c))}else setTimeout(function(){sre.Enrich.semanticMathml(a,b)},500)};\nsre.Enrich.testTranslation__=function(a){new sre.EnrichCases;sre.Debugger.getInstance().init();a=sre.Enrich.semanticMathmlSync(sre.Enrich.prepareMmlString(a)).toString();sre.EnrichMathml.removeAttributePrefix(a);sre.Debugger.getInstance().exit();return a};sre.Enrich.prepareMmlString=function(a){a.match(/^<math/)||(a=\"<math>\"+a);a.match(/\\/math>$/)||(a+=\"</math>\");return a};sre.ColorPicker=function(a,b){this.foreground=sre.ColorPicker.getChannelColor_(b,sre.ColorPicker.DEFAULT_FOREGROUND_);this.background=sre.ColorPicker.getChannelColor_(a,sre.ColorPicker.DEFAULT_BACKGROUND_)};sre.ColorPicker.DEFAULT_BACKGROUND_=\"blue\";sre.ColorPicker.DEFAULT_FOREGROUND_=\"black\";\nsre.ColorPicker.namedColors_={red:{red:255,green:0,blue:0},green:{red:0,green:255,blue:0},blue:{red:0,green:0,blue:255},yellow:{red:255,green:255,blue:0},cyan:{red:0,green:255,blue:255},magenta:{red:255,green:0,blue:255},white:{red:255,green:255,blue:255},black:{red:0,green:0,blue:0}};sre.ColorPicker.getChannelColor_=function(a,b){a=a||{color:b};var c=a.color?sre.ColorPicker.namedColors_[a.color]:a;c||(c=sre.ColorPicker.namedColors_[b]);c.alpha=a.hasOwnProperty(\"alpha\")?a.alpha:1;return sre.ColorPicker.normalizeColor_(c)};\nsre.ColorPicker.normalizeColor_=function(a){var b=function(c){c=Math.max(c,0);c=Math.min(255,c);return Math.round(c)};a.red=b(a.red);a.green=b(a.green);a.blue=b(a.blue);a.alpha=Math.max(a.alpha,0);a.alpha=Math.min(1,a.alpha);return a};sre.ColorPicker.prototype.rgba=function(){var a=function(b){return\"rgba(\"+b.red+\",\"+b.green+\",\"+b.blue+\",\"+b.alpha+\")\"};return{background:a(this.background),foreground:a(this.foreground)}};\nsre.ColorPicker.prototype.rgb=function(){var a=function(b){return\"rgb(\"+b.red+\",\"+b.green+\",\"+b.blue+\")\"};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};\nsre.ColorPicker.prototype.hex=function(){var a=function(b){return\"#\"+sre.ColorPicker.toHex_(b.red)+sre.ColorPicker.toHex_(b.green)+sre.ColorPicker.toHex_(b.blue)};return{background:a(this.background),alphaback:this.background.alpha.toString(),foreground:a(this.foreground),alphafore:this.foreground.alpha.toString()}};sre.ColorPicker.toHex_=function(a){a=a.toString(16);return 1===a.length?\"0\"+a:a};sre.ContrastPicker=function(){this.hue=10;this.sat=100;this.incr=this.light=50};\nsre.ContrastPicker.prototype.generate=function(){return sre.ColorPicker.RGB2hex_(sre.ColorPicker.rgb2RGB_(sre.ColorPicker.hsl2rgb_(this.hue,this.sat,this.light)))};sre.ContrastPicker.prototype.increment=function(){this.hue=(this.hue+this.incr)%360};\nsre.ColorPicker.hsl2rgb_=function(a,b,c){c=1<c?c/100:c;var d=(1-Math.abs(2*c-1))*(1<b?b/100:b),e=d*(1-Math.abs(a/60%2-1));c-=d/2;var f=b=0,g=0;0<=a&&60>a?(a=$jscomp.makeIterator([d,e,0]),b=a.next().value,f=a.next().value,g=a.next().value):60<=a&&120>a?(a=$jscomp.makeIterator([e,d,0]),b=a.next().value,f=a.next().value,g=a.next().value):120<=a&&180>a?(a=$jscomp.makeIterator([0,d,e]),b=a.next().value,f=a.next().value,g=a.next().value):180<=a&&240>a?(a=$jscomp.makeIterator([0,e,d]),b=a.next().value,f=\na.next().value,g=a.next().value):240<=a&&300>a?(a=$jscomp.makeIterator([e,0,d]),b=a.next().value,f=a.next().value,g=a.next().value):300<=a&&360>a&&(a=$jscomp.makeIterator([d,0,e]),b=a.next().value,f=a.next().value,g=a.next().value);return{red:b+c,green:f+c,blue:g+c}};sre.ColorPicker.rgb2RGB_=function(a){return{red:Math.round(255*a.red),green:Math.round(255*a.green),blue:Math.round(255*a.blue)}};sre.ColorPicker.RGB2hex_=function(a){return\"rgb(\"+a.red+\",\"+a.green+\",\"+a.blue+\")\"};sre.Highlighter=function(){};sre.Highlighter.prototype.highlight=function(a){};sre.Highlighter.prototype.unhighlight=function(){};sre.Highlighter.prototype.highlightAll=function(a){};sre.Highlighter.prototype.unhighlightAll=function(){};sre.Highlighter.prototype.setColor=function(a){};sre.Highlighter.prototype.addEvents=function(a,b){};sre.AbstractHighlighter=function(){this.currentHighlights_=[];this.color=null;this.mactionName=\"\"};sre.AbstractHighlighter.ATTR=\"sre-highlight\";sre.AbstractHighlighter.prototype.highlight=function(a){this.currentHighlights_.push(a.map(goog.bind(function(b){var c=this.highlightNode(b);this.setHighlighted(b);return c},this)))};sre.AbstractHighlighter.prototype.highlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.highlightAll=function(a){a=this.getMactionNodes(a);for(var b=0,c;c=a[b];b++)this.highlight([c])};\nsre.AbstractHighlighter.prototype.unhighlight=function(){var a=this.currentHighlights_.pop();a&&a.forEach(goog.bind(function(b){this.isHighlighted(b.node)&&(this.unhighlightNode(b),this.unsetHighlighted(b.node))},this))};sre.AbstractHighlighter.prototype.unhighlightNode=goog.abstractMethod;sre.AbstractHighlighter.prototype.unhighlightAll=function(){for(;0<this.currentHighlights_.length;)this.unhighlight()};sre.AbstractHighlighter.prototype.setColor=function(a){this.color=a};\nsre.AbstractHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.AbstractHighlighter.prototype.addEvents=function(a,b){a=this.getMactionNodes(a);for(var c=0,d;d=a[c];c++)for(var e in b)d.addEventListener(e,b[e])};sre.AbstractHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByClassName(this.mactionName)};sre.AbstractHighlighter.prototype.isMactionNode=function(a){return(a=a.className||a.getAttribute(\"class\"))?a.match(new RegExp(this.mactionName)):!1};\nsre.AbstractHighlighter.prototype.isHighlighted=function(a){return a.hasAttribute(sre.AbstractHighlighter.ATTR)};sre.AbstractHighlighter.prototype.setHighlighted=function(a){a.setAttribute(sre.AbstractHighlighter.ATTR,!0)};sre.AbstractHighlighter.prototype.unsetHighlighted=function(a){a.removeAttribute(sre.AbstractHighlighter.ATTR)};\nsre.AbstractHighlighter.prototype.colorizeAll=function(a){sre.XpathUtil.evalXPath(\".//*[@\"+sre.EnrichMathml.Attribute.ID+\"]\",a).forEach(goog.bind(function(b){this.colorize(b)},this))};sre.AbstractHighlighter.prototype.uncolorizeAll=function(a){sre.XpathUtil.evalXPath(\".//*[@\"+sre.EnrichMathml.Attribute.ID+\"]\",a).forEach(goog.bind(function(b){this.uncolorize(b)},this))};\nsre.AbstractHighlighter.prototype.colorize=function(a){var b=sre.EnrichMathml.addPrefix(\"foreground\");a.hasAttribute(b)&&(a.setAttribute(b+\"-old\",a.style.color),a.style.color=a.getAttribute(b))};sre.AbstractHighlighter.prototype.uncolorize=function(a){var b=sre.EnrichMathml.addPrefix(\"foreground\")+\"-old\";a.hasAttribute(b)&&(a.style.color=a.getAttribute(b))};sre.CssHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"mjx-maction\"};goog.inherits(sre.CssHighlighter,sre.AbstractHighlighter);sre.CssHighlighter.prototype.highlightNode=function(a){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color},c=this.colorString();a.style.backgroundColor=c.background;a.style.color=c.foreground;return b};sre.CssHighlighter.prototype.unhighlightNode=function(a){a.node.style.backgroundColor=a.background;a.node.style.color=a.foreground};sre.ChtmlHighlighter=function(){sre.CssHighlighter.call(this)};goog.inherits(sre.ChtmlHighlighter,sre.CssHighlighter);sre.ChtmlHighlighter.prototype.isMactionNode=function(a){return a.tagName.toUpperCase()===this.mactionName.toUpperCase()};sre.ChtmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.HtmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.HtmlHighlighter,sre.AbstractHighlighter);sre.HtmlHighlighter.prototype.setMode=function(a){this.mode=a};\nsre.HtmlHighlighter.prototype.highlightNode=function(a){var b={node:a,foreground:a.style.color,position:a.style.position},c=this.color.rgb();a.style.color=c.foreground;a.style.position=\"relative\";var d=a.bbox;if(d&&d.w){var e=sre.DomUtil.createElement(\"span\"),f=parseFloat(a.style.paddingLeft||\"0\");e.style.backgroundColor=c.background;e.style.opacity=c.alphaback.toString();e.style.display=\"inline-block\";e.style.height=d.h+d.d+.1+\"em\";e.style.verticalAlign=-d.d+\"em\";e.style.marginTop=e.style.marginBottom=\n\"-0.05em\";e.style.width=d.w+0+\"em\";e.style.marginLeft=f-0+\"em\";e.style.marginRight=-d.w-f+\"em\";a.parentNode.insertBefore(e,a);b.box=e}return b};sre.HtmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node;b.style.color=a.foreground;b.style.position=a.position;a.box&&a.box.parentNode.removeChild(a.box)};sre.MmlCssHighlighter=function(){sre.CssHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.MmlCssHighlighter,sre.CssHighlighter);sre.MmlCssHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};sre.MmlCssHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.MmlHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.MmlHighlighter,sre.AbstractHighlighter);sre.MmlHighlighter.prototype.highlightNode=function(a){var b=a.getAttribute(\"style\");b+=\";background-color: \"+this.colorString().background;b+=\";color: \"+this.colorString().foreground;a.setAttribute(\"style\",b);return{node:a}};\nsre.MmlHighlighter.prototype.unhighlightNode=function(a){var b=a.node.getAttribute(\"style\");b=b.replace(\";background-color: \"+this.colorString().background,\"\");b=b.replace(\";color: \"+this.colorString().foreground,\"\");a.node.setAttribute(\"style\",b)};sre.MmlHighlighter.prototype.colorString=function(){return this.color.rgba()};sre.MmlHighlighter.prototype.getMactionNodes=function(a){return a.getElementsByTagName(this.mactionName)};\nsre.MmlHighlighter.prototype.isMactionNode=function(a){return a.tagName===this.mactionName};sre.SvgHighlighter=function(){sre.AbstractHighlighter.call(this);this.mactionName=\"mjx-svg-maction\"};goog.inherits(sre.SvgHighlighter,sre.AbstractHighlighter);\nsre.SvgHighlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a.previousSibling||a,background:a.style.backgroundColor,foreground:a.style.color};if(\"svg\"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");if(\"use\"===a.nodeName){var c=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\n\"g\");a.parentNode.insertBefore(c,a);c.appendChild(a);var d=c.getBBox();c.parentNode.replaceChild(a,c)}else d=a.getBBox();b.setAttribute(\"x\",d.x-40);b.setAttribute(\"y\",d.y-40);b.setAttribute(\"width\",d.width+80);b.setAttribute(\"height\",d.height+80);(d=a.getAttribute(\"transform\"))&&b.setAttribute(\"transform\",d);b.setAttribute(\"fill\",this.colorString().background);b.setAttribute(sre.AbstractHighlighter.ATTR,!0);a.parentNode.insertBefore(b,a);b={node:b,foreground:a.getAttribute(\"fill\")};a.setAttribute(\"fill\",\nthis.colorString().foreground);return b};sre.SvgHighlighter.prototype.setHighlighted=function(a){\"svg\"===a.tagName&&sre.SvgHighlighter.superClass_.setHighlighted.call(this,a)};sre.SvgHighlighter.prototype.unhighlightNode=function(a){\"background\"in a?(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground):(a.foreground?a.node.nextSibling.setAttribute(\"fill\",a.foreground):a.node.nextSibling.removeAttribute(\"fill\"),a.node.parentNode.removeChild(a.node))};\nsre.SvgHighlighter.prototype.isMactionNode=function(a){a=a.className||a.getAttribute(\"class\");return(a=void 0!==a.baseVal?a.baseVal:a)?a.match(new RegExp(this.mactionName)):!1};sre.SvgV3Highlighter=function(){sre.SvgHighlighter.call(this);this.mactionName=\"maction\"};goog.inherits(sre.SvgV3Highlighter,sre.SvgHighlighter);\nsre.SvgV3Highlighter.prototype.highlightNode=function(a){if(this.isHighlighted(a))return{node:a,background:this.colorString().background,foreground:this.colorString().foreground};if(\"svg\"===a.tagName||\"MJX-CONTAINER\"===a.tagName){var b={node:a,background:a.style.backgroundColor,foreground:a.style.color};a.style.backgroundColor=this.colorString().background;a.style.color=this.colorString().foreground;return b}b=sre.DomUtil.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");b.setAttribute(\"sre-highlighter-added\",\n!0);var c=a.getBBox();b.setAttribute(\"x\",c.x-40);b.setAttribute(\"y\",c.y-40);b.setAttribute(\"width\",c.width+80);b.setAttribute(\"height\",c.height+80);(c=a.getAttribute(\"transform\"))&&b.setAttribute(\"transform\",c);b.setAttribute(\"fill\",this.colorString().background);a.setAttribute(sre.AbstractHighlighter.ATTR,!0);a.parentNode.insertBefore(b,a);b={node:a,foreground:a.getAttribute(\"fill\")};\"rect\"===a.nodeName?(c=new sre.ColorPicker({alpha:0,color:\"black\"}),a.setAttribute(\"fill\",c.rgba().foreground)):a.setAttribute(\"fill\",\nthis.colorString().foreground);return b};sre.SvgV3Highlighter.prototype.unhighlightNode=function(a){var b=a.node.previousSibling;b&&b.hasAttribute(\"sre-highlighter-added\")?(a.foreground?a.node.setAttribute(\"fill\",a.foreground):a.node.removeAttribute(\"fill\"),a.node.parentNode.removeChild(b)):(a.node.style.backgroundColor=a.background,a.node.style.color=a.foreground)};sre.SvgV3Highlighter.prototype.isMactionNode=function(a){return a.getAttribute(\"data-mml-node\")===this.mactionName};\nsre.SvgV3Highlighter.prototype.getMactionNodes=function(a){return sre.XpathUtil.evalXPath('.//*[@data-mml-node=\"'+this.mactionName+'\"]',a)};sre.HighlighterFactory={};sre.HighlighterFactory.highlighter=function(a,b,c){a=new sre.ColorPicker(a,b);c=new (sre.HighlighterFactory.highlighterMapping_[\"NativeMML\"===c.renderer&&\"Safari\"===c.browser?\"MML-CSS\":\"SVG\"===c.renderer&&\"v3\"===c.browser?\"SVG-V3\":c.renderer]||sre.HighlighterFactory.highlighterMapping_.NativeMML);c.setColor(a);return c};sre.HighlighterFactory.addEvents=function(a,b,c){(c=sre.HighlighterFactory.highlighterMapping_[c.renderer])&&(new c).addEvents(a,b)};\nsre.HighlighterFactory.highlighterMapping_={SVG:sre.SvgHighlighter,\"SVG-V3\":sre.SvgV3Highlighter,NativeMML:sre.MmlHighlighter,\"HTML-CSS\":sre.HtmlHighlighter,\"MML-CSS\":sre.MmlCssHighlighter,CommonHTML:sre.CssHighlighter,CHTML:sre.ChtmlHighlighter};sre.Span=function(a,b){this.string=a;this.attributes=b};sre.AudioUtil={};sre.AudioUtil.mergePause=function(a,b,c){return a?{pause:sre.AudioUtil.mergePause_(a.pause,b.pause,c)}:b};sre.AudioUtil.mergePause_=function(a,b,c){return(c||function(d,e){return\"number\"===typeof d||\"number\"===typeof e?d+e:\"number\"===typeof d?e:\"number\"===typeof e?d:[a,b].sort()[0]}).call(null,a,b)};sre.AudioUtil.mergeMarkup=function(a,b){delete a.open;b.close.forEach(function(d){delete a[d]});b.open.forEach(function(d){a[d]=b[d]});var c=Object.keys(a);a.open=c};\nsre.AudioUtil.sortClose=function(a,b){if(1>=a.length)return a;for(var c=[],d=0,e;e=b[d],a.length;d++)e.close&&e.close.length&&e.close.forEach(function(f){var g=a.indexOf(f);-1!==g&&(c.unshift(f),a.splice(g,1))});return c};sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];\nsre.AudioUtil.personalityMarkup=function(a){sre.AudioUtil.PersonalityRanges_={};sre.AudioUtil.LastOpen_=[];for(var b=[],c={},d=0,e;e=a[d];d++){var f=null,g=e.descriptionSpan(),h=e.personality;e=h[sre.Engine.personalityProps.JOIN];delete h[sre.Engine.personalityProps.JOIN];\"undefined\"!==typeof h[sre.Engine.personalityProps.PAUSE]&&(f={},f[sre.Engine.personalityProps.PAUSE]=h[sre.Engine.personalityProps.PAUSE],delete h[sre.Engine.personalityProps.PAUSE]);h=sre.AudioUtil.personalityDiff_(h,c);sre.AudioUtil.appendMarkup_(b,\ng,h,e,f,!0)}b=b.concat(sre.AudioUtil.finaliseMarkup_());return b=sre.AudioUtil.simplifyMarkup_(b)};\nsre.AudioUtil.appendElement_=function(a,b){var c=a[a.length-1];if(c)if(sre.AudioUtil.isSpanElement(b)&&sre.AudioUtil.isSpanElement(c))if(\"undefined\"===typeof c.join)c.span=c.span.concat(b.span);else{a=c.span.pop();var d=b.span.shift();c.span.push(a+c.join+d);c.span=c.span.concat(b.span);c.join=b.join}else sre.AudioUtil.isPauseElement(b)&&sre.AudioUtil.isPauseElement(c)?c.pause=sre.AudioUtil.mergePause_(c.pause,b.pause):a.push(b);else a.push(b)};\nsre.AudioUtil.simplifyMarkup_=function(a){for(var b={},c=[],d=0,e;e=a[d];d++)if(sre.AudioUtil.isMarkupElement(e))if(!e.close||1!==e.close.length||e.open.length)sre.AudioUtil.copyValues_(e,b),c.push(e);else{var f=a[d+1];if(!f||sre.AudioUtil.isSpanElement(f))sre.AudioUtil.copyValues_(e,b),c.push(e);else{var g=sre.AudioUtil.isPauseElement(f)?f:null;g&&(f=a[d+2]);f&&sre.AudioUtil.isMarkupElement(f)&&f.open[0]===e.close[0]&&!f.close.length&&f[f.open[0]]===b[f.open[0]]?g?(sre.AudioUtil.appendElement_(c,\ng),d+=2):d+=1:(sre.AudioUtil.copyValues_(e,b),c.push(e))}}else sre.AudioUtil.appendElement_(c,e);return c};sre.AudioUtil.copyValues_=function(a,b){a.rate&&(b.rate=a.rate);a.pitch&&(b.pitch=a.pitch);a.volume&&(b.volume=a.volume)};sre.AudioUtil.finaliseMarkup_=function(){for(var a=[],b=sre.AudioUtil.LastOpen_.length-1;0<=b;b--){var c=sre.AudioUtil.LastOpen_[b];if(c.length){for(var d={open:[],close:[]},e=0;e<c.length;e++){var f=c[e];d.close.push(f);d[f]=0}a.push(d)}}return a};\nsre.AudioUtil.isMarkupElement=function(a){return\"object\"===typeof a&&a.open};sre.AudioUtil.isPauseElement=function(a){return\"object\"===typeof a&&1===Object.keys(a).length&&Object.keys(a)[0]===sre.Engine.personalityProps.PAUSE};sre.AudioUtil.isSpanElement=function(a){var b=Object.keys(a);return\"object\"===typeof a&&(1===b.length&&\"span\"===b[0]||2===b.length&&(\"span\"===b[0]&&\"join\"===b[1]||\"span\"===b[1]&&\"join\"===b[0]))};\nsre.AudioUtil.appendMarkup_=function(a,b,c,d,e,f){if(f){if(f=a[a.length-1])var g=f[sre.Engine.personalityProps.JOIN];if(f&&!b.string&&e&&sre.AudioUtil.isPauseElement(f)){var h=sre.Engine.personalityProps.PAUSE;f[h]=sre.AudioUtil.mergePause_(f[h],e[h]);e=null}f&&b.string&&0===Object.keys(c).length&&sre.AudioUtil.isSpanElement(f)&&(\"undefined\"!==typeof g&&(h=f.span.pop(),b=new sre.Span(h.string+g+b.string,h.attributes)),f.span.push(b),b=new sre.Span(\"\",{}),f[sre.Engine.personalityProps.JOIN]=d)}0!==\nObject.keys(c).length&&a.push(c);b.string&&a.push({span:[b],join:d});e&&a.push(e)};\nsre.AudioUtil.personalityDiff_=function(a,b){if(!b)return a;var c={};for(h in sre.Engine.personalityProps){var d=sre.Engine.personalityProps[h],e=a[d],f=b[d];if(!(!e&&!f||e&&f&&e===f)){var g=e||0;sre.AudioUtil.isMarkupElement(c)||(c.open=[],c.close=[]);e||c.close.push(d);f||c.open.push(d);f&&e&&(c.close.push(d),c.open.push(d));b[d]=g;c[d]=g;sre.AudioUtil.PersonalityRanges_[d]?sre.AudioUtil.PersonalityRanges_[d].push(g):sre.AudioUtil.PersonalityRanges_[d]=[g]}}if(sre.AudioUtil.isMarkupElement(c)){for(a=\nc.close.slice();0<a.length;){var h=sre.AudioUtil.LastOpen_.pop();d=sre.BaseUtil.setdifference(h,a);a=sre.BaseUtil.setdifference(a,h);h=d;if(0===a.length)0!==h.length&&sre.AudioUtil.LastOpen_.push(h);else if(0!==h.length)for(c.close=c.close.concat(h),c.open=c.open.concat(h),d=0;e=h[d];d++)c[e]=b[e]}sre.AudioUtil.LastOpen_.push(c.open)}return c};sre.AudioRenderer=function(){};sre.AudioRenderer.prototype.setSeparator=function(a){};sre.AudioRenderer.prototype.getSeparator=function(){};sre.AudioRenderer.prototype.markup=function(a){};sre.AudioRenderer.prototype.error=function(a){};sre.AudioRenderer.prototype.merge=function(a){};sre.AudioRenderer.prototype.finalize=function(a){};sre.AbstractAudioRenderer=function(){this.separator_=\" \"};sre.AbstractAudioRenderer.prototype.setSeparator=function(a){this.separator_=a};sre.AbstractAudioRenderer.prototype.getSeparator=function(){return this.separator_};sre.AbstractAudioRenderer.prototype.markup=goog.abstractMethod;sre.AbstractAudioRenderer.prototype.error=function(a){return null};sre.AbstractAudioRenderer.prototype.merge=function(a){return a.map(function(b){return b.string}).join(this.getSeparator())};\nsre.AbstractAudioRenderer.prototype.finalize=function(a){return a};sre.AbstractAudioRenderer.prototype.pauseValue=function(a){switch(a){case \"long\":a=750;break;case \"medium\":a=500;break;case \"short\":a=250;break;default:a=parseInt(a,10)}return Math.floor(a*parseInt(sre.Engine.getInstance().getRate(),10)/100)};sre.MarkupRenderer=function(){sre.AbstractAudioRenderer.call(this);this.scaleFunction_=null};goog.inherits(sre.MarkupRenderer,sre.AbstractAudioRenderer);sre.MarkupRenderer.prototype.setScaleFunction=function(a,b,c,d,e){var f=e||0;this.scaleFunction_=function(g){g=(g-a)/(b-a);return+(Math.round(c*(1-g)+d*g+\"e+\"+f)+\"e-\"+f)}};sre.MarkupRenderer.prototype.applyScaleFunction=function(a){return this.scaleFunction_?this.scaleFunction_(a):a};sre.MarkupRenderer.prototype.pause=goog.abstractMethod;\nsre.MarkupRenderer.prototype.prosodyElement=goog.abstractMethod;sre.AcssRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.AcssRenderer,sre.MarkupRenderer);\nsre.AcssRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,0,10,0);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c={open:[]},d=null,e=!1,f=0,g;g=a[f];f++)if(sre.AudioUtil.isMarkupElement(g))sre.AudioUtil.mergeMarkup(c,g);else if(sre.AudioUtil.isPauseElement(g))e&&(d=sre.AudioUtil.mergePause(d,g,Math.max));else{g='\"'+this.merge(g.span)+'\"';e=!0;d&&(b.push(this.pause(d)),d=null);var h=this.prosody_(c);b.push(h?\"(text (\"+h+\") \"+g+\")\":g)}return\"(exp \"+b.join(\" \")+\")\"};\nsre.AcssRenderer.prototype.error=function(a){return'(error \"'+sre.EventUtil.Move[a.toString()]+'\")'};sre.AcssRenderer.prototype.prosody_=function(a){for(var b=a.open,c=[],d=0,e;e=b[d];d++)c.push(this.prosodyElement(e,a[e]));return c.join(\" \")};\nsre.AcssRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.RATE:return\"(richness . \"+b+\")\";case sre.Engine.personalityProps.PITCH:return\"(average-pitch . \"+b+\")\";case sre.Engine.personalityProps.VOLUME:return\"(stress . \"+b+\")\"}return\"(value . \"+b+\")\"};sre.AcssRenderer.prototype.pause=function(a){return\"(pause . \"+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+\")\"};sre.PunctuationRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.PunctuationRenderer,sre.AbstractAudioRenderer);\nsre.PunctuationRenderer.prototype.markup=function(a){a=sre.AudioUtil.personalityMarkup(a);for(var b=\"\",c=null,d=!1,e=0,f;f=a[e];e++)sre.AudioUtil.isMarkupElement(f)||(sre.AudioUtil.isPauseElement(f)?d&&(c=sre.AudioUtil.mergePause(c,f,Math.max)):(c&&(b+=this.pause(c[sre.Engine.personalityProps.PAUSE]),c=null),b+=(d?this.getSeparator():\"\")+this.merge(f.span),d=!0));return b};sre.PunctuationRenderer.PAUSE_PUNCTUATION_={\"short\":\",\",medium:\";\",\"long\":\".\"};\nsre.PunctuationRenderer.prototype.pause=function(a){return sre.PunctuationRenderer.PAUSE_PUNCTUATION_[\"number\"===typeof a?250>=a?\"short\":500>=a?\"medium\":\"long\":a]||\"\"};sre.XmlRenderer=function(){sre.MarkupRenderer.call(this)};goog.inherits(sre.XmlRenderer,sre.MarkupRenderer);\nsre.XmlRenderer.prototype.markup=function(a){this.setScaleFunction(-2,2,-100,100,2);a=sre.AudioUtil.personalityMarkup(a);for(var b=[],c=[],d=0,e;e=a[d];d++)if(e.span)b.push(this.merge(e.span));else if(sre.AudioUtil.isPauseElement(e))b.push(this.pause(e));else{if(e.close.length)for(var f=0;f<e.close.length;f++){var g=c.pop();if(-1===e.close.indexOf(g))throw new sre.Engine.Error(\"Unknown closing markup element: \"+g);b.push(this.closeTag(g))}e.open.length&&sre.AudioUtil.sortClose(e.open.slice(),a.slice(d+\n1)).forEach(goog.bind(function(h){b.push(this.prosodyElement(h,e[h]));c.push(h)},this))}return b.join(\" \")};sre.XmlRenderer.prototype.closeTag=goog.abstractMethod;sre.SableRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SableRenderer,sre.XmlRenderer);sre.SableRenderer.prototype.finalize=function(a){return'<?xml version=\"1.0\"?><!DOCTYPE SABLE PUBLIC \"-//SABLE//DTD SABLE speech mark up//EN\" \"Sable.v0_2.dtd\" []><SABLE>'+this.getSeparator()+a+this.getSeparator()+\"</SABLE>\"};sre.SableRenderer.prototype.pause=function(a){return'<BREAK MSEC=\"'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'\"/>'};\nsre.SableRenderer.prototype.prosodyElement=function(a,b){b=this.applyScaleFunction(b);switch(a){case sre.Engine.personalityProps.PITCH:return'<PITCH RANGE=\"'+b+'%\">';case sre.Engine.personalityProps.RATE:return'<RATE SPEED=\"'+b+'%\">';case sre.Engine.personalityProps.VOLUME:return'<VOLUME LEVEL=\"'+b+'%\">';default:return\"<\"+a.toUpperCase()+' VALUE=\"'+b+'\">'}};sre.SableRenderer.prototype.closeTag=function(a){return\"</\"+a.toUpperCase()+\">\"};sre.SsmlRenderer=function(){sre.XmlRenderer.call(this)};goog.inherits(sre.SsmlRenderer,sre.XmlRenderer);sre.SsmlRenderer.prototype.finalize=function(a){return'<?xml version=\"1.0\"?><speak version=\"1.1\" xmlns=\"http://www.w3.org/2001/10/synthesis\"><prosody rate=\"'+sre.Engine.getInstance().getRate()+'%\">'+this.getSeparator()+a+this.getSeparator()+\"</prosody></speak>\"};sre.SsmlRenderer.prototype.pause=function(a){return'<break time=\"'+this.pauseValue(a[sre.Engine.personalityProps.PAUSE])+'ms\"/>'};\nsre.SsmlRenderer.prototype.prosodyElement=function(a,b){b=Math.floor(this.applyScaleFunction(b));b=0>b?b.toString():\"+\"+b.toString();return\"<prosody \"+a.toLowerCase()+'=\"'+b+(a===sre.Engine.personalityProps.VOLUME?\">\":'%\">')};sre.SsmlRenderer.prototype.closeTag=function(a){return\"</prosody>\"};sre.SsmlStepRenderer=function(){sre.SsmlRenderer.call(this)};goog.inherits(sre.SsmlStepRenderer,sre.SsmlRenderer);sre.SsmlStepRenderer.prototype.markup=function(a){sre.SsmlStepRenderer.MARKS={};return sre.SsmlStepRenderer.superClass_.markup.call(this,a)};sre.SsmlStepRenderer.CHARACTER_ATTR_=\"character\";sre.SsmlStepRenderer.MARKS={};\nsre.SsmlStepRenderer.prototype.merge=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=d.attributes.extid;e&&!sre.SsmlStepRenderer.MARKS[e]&&(b.push('<mark name=\"'+e+'\"/>'),sre.SsmlStepRenderer.MARKS[e]=!0);1===d.string.length&&d.string.match(/[a-zA-Z]/)?b.push('<say-as interpret-as=\"'+sre.SsmlStepRenderer.CHARACTER_ATTR_+'\">'+d.string+\"</say-as>\"):b.push(d.string)}return b.join(this.getSeparator())};sre.StringRenderer=function(){sre.AbstractAudioRenderer.call(this)};goog.inherits(sre.StringRenderer,sre.AbstractAudioRenderer);sre.StringRenderer.prototype.markup=function(a){var b=\"\";a=a.filter(function(g){return g.descriptionString()});if(!a.length)return b;for(var c=0;c<a.length-1;c++){var d=a[c],e=d.personality[sre.Engine.personalityProps.JOIN],f=\"nemeth\"===sre.Engine.getInstance().locale?\"\":this.getSeparator();e=\"undefined\"===typeof e?f:e;b+=d.descriptionString()+e}return b+=a[c].descriptionString()};sre.AuralRendering=function(){};goog.addSingletonGetter(sre.AuralRendering);sre.AuralRendering.prototype.setSeparator=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];b&&b.setSeparator(a)};sre.AuralRendering.prototype.getSeparator=function(){var a=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return a?a.getSeparator():\"\"};\nsre.AuralRendering.prototype.markup=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.markup(a):\"\"};sre.AuralRendering.prototype.merge=function(a){var b=a.map(function(d){return{string:d,attributes:{}}}),c=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return c?c.merge(b):a.join()};\nsre.AuralRendering.prototype.finalize=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.finalize(a):a};sre.AuralRendering.prototype.error=function(a){var b=sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup];return b?b.error(a):\"\"};sre.AuralRendering.registerRenderer=function(a,b){sre.AuralRendering.rendererMapping_[a]=b};\nsre.AuralRendering.ofType=function(a){return sre.AuralRendering.rendererMapping_[sre.Engine.getInstance().markup]instanceof a};sre.AuralRendering.rendererMapping_={};sre.AuralRendering.registerRenderer(sre.Engine.Markup.NONE,new sre.StringRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.PUNCTUATION,new sre.PunctuationRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.ACSS,new sre.AcssRenderer);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SABLE,new sre.SableRenderer);\nsre.AuralRendering.xmlInstance=new sre.SsmlRenderer;sre.AuralRendering.registerRenderer(sre.Engine.Markup.VOICEXML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML,sre.AuralRendering.xmlInstance);sre.AuralRendering.registerRenderer(sre.Engine.Markup.SSML_STEP,new sre.SsmlStepRenderer);sre.WalkerUtil={};sre.WalkerUtil.splitAttribute=function(a){return a?a.split(/,/):[]};sre.WalkerUtil.getAttribute=function(a,b){return sre.DomUtil.getDataAttribute(a,b)};sre.WalkerUtil.getSemanticRoot=function(a){if(a.hasAttribute(sre.EnrichMathml.Attribute.TYPE)&&!a.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return a;for(var b=sre.DomUtil.querySelectorAllByAttr(a,sre.EnrichMathml.Attribute.TYPE),c=0,d;d=b[c];c++)if(!d.hasAttribute(sre.EnrichMathml.Attribute.PARENT))return d;return a};\nsre.WalkerUtil.getBySemanticId=function(a,b){return a.getAttribute(sre.EnrichMathml.Attribute.ID)===b?a:sre.DomUtil.querySelectorAllByAttrValue(a,sre.EnrichMathml.Attribute.ID,b)[0]};sre.RebuildStree=function(a){this.factory=new sre.SemanticNodeFactory;this.nodeDict={};this.mathml=a;this.mmlRoot=sre.WalkerUtil.getSemanticRoot(a);this.streeRoot=this.assembleTree(this.mmlRoot);this.stree=sre.SemanticTree.fromNode(this.streeRoot,this.mathml);this.xml=this.stree.xml();sre.SemanticProcessor.getInstance().setNodeFactory(this.factory)};sre.RebuildStree.prototype.getTree=function(){return this.stree};\nsre.RebuildStree.addAttributes=function(a,b,c){c&&1===b.childNodes.length&&b.childNodes[0].nodeType!==sre.DomUtil.NodeType.TEXT_NODE&&sre.SemanticUtil.addAttributes(a,b.childNodes[0]);sre.SemanticUtil.addAttributes(a,b)};\nsre.RebuildStree.prototype.assembleTree=function(a){var b=this.makeNode(a),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),d=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT));sre.RebuildStree.addAttributes(b,a,!(c.length||d.length));if(0===d.length&&0===c.length)return b.textContent=a.textContent,b;if(0<d.length){var e=sre.WalkerUtil.getBySemanticId(a,d[0]);e&&(e=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(e,\nsre.EnrichMathml.Attribute.OPERATOR)),1<e.length&&(b.textContent=e[1]))}e=function(f){f=sre.WalkerUtil.getBySemanticId(a,f);f=this.assembleTree(f);f.parent=b;return f};b.contentNodes=d.map(goog.bind(e,this));b.childNodes=c.map(goog.bind(e,this));return(c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.COLLAPSED))?this.postProcess(b,c):b};\nsre.RebuildStree.prototype.makeNode=function(a){var b=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE),c=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FONT),e=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ANNOTATION)||\"\",f=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ID),g=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.EMBELLISHED);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.FENCEPOINTER);\nf=this.createNode(parseInt(f,10));f.type=b;f.role=c;f.font=d?d:sre.SemanticAttr.Font.UNKNOWN;f.parseAnnotation(e);a&&(f.fencePointer=a);g&&(f.embellished=g);return f};sre.RebuildStree.isPunctuated=function(a){return!sre.SemanticSkeleton.simpleCollapseStructure(a)&&a[1]&&sre.SemanticSkeleton.contentCollapseStructure(a[1])};sre.RebuildStree.prototype.makePunctuation=function(a){a=this.createNode(a);a.updateContent(sre.SemanticAttr.invisibleComma());a.role=sre.SemanticAttr.Role.DUMMY;return a};\nsre.RebuildStree.prototype.makePunctuated=function(a,b,c){var d=this.createNode(b[0]);d.type=sre.SemanticAttr.Type.PUNCTUATED;d.embellished=a.embellished;d.fencePointer=a.fencePointer;d.role=c;a=b.splice(1,1)[0].slice(1);d.contentNodes=a.map(goog.bind(this.makePunctuation,this));this.collapsedChildren_(b)};sre.RebuildStree.prototype.makeEmpty=function(a,b,c){b=this.createNode(b);b.type=sre.SemanticAttr.Type.EMPTY;b.embellished=a.embellished;b.fencePointer=a.fencePointer;b.role=c};\nsre.RebuildStree.prototype.makeIndex=function(a,b,c){sre.RebuildStree.isPunctuated(b)?this.makePunctuated(a,b,c):sre.SemanticSkeleton.simpleCollapseStructure(b)&&!this.nodeDict[b.toString()]&&this.makeEmpty(a,b,c)};\nsre.RebuildStree.prototype.postProcess=function(a,b){b=sre.SemanticSkeleton.fromString(b).array;if(a.type===sre.SemanticAttr.Role.SUBSUP){var c=this.createNode(b[1][0]);c.type=sre.SemanticAttr.Type.SUBSCRIPT;c.role=sre.SemanticAttr.Role.SUBSUP;a.type=sre.SemanticAttr.Type.SUPERSCRIPT;c.embellished=a.embellished;c.fencePointer=a.fencePointer;this.makeIndex(a,b[1][2],sre.SemanticAttr.Role.RIGHTSUB);this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER);this.collapsedChildren_(b);return a}if(a.type===\nsre.SemanticAttr.Type.SUBSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUB),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.SUPERSCRIPT)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.RIGHTSUPER),this.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.TENSOR)return this.makeIndex(a,b[2],sre.SemanticAttr.Role.LEFTSUB),this.makeIndex(a,b[3],sre.SemanticAttr.Role.LEFTSUPER),this.makeIndex(a,b[4],sre.SemanticAttr.Role.RIGHTSUB),this.makeIndex(a,b[5],sre.SemanticAttr.Role.RIGHTSUPER),\nthis.collapsedChildren_(b),a;if(a.type===sre.SemanticAttr.Type.PUNCTUATED)return sre.RebuildStree.isPunctuated(b)&&(b=b.splice(1,1)[0].slice(1),a.contentNodes=b.map(goog.bind(this.makePunctuation,this))),a;a.type===sre.SemanticAttr.Role.UNDEROVER&&(c=this.createNode(b[1][0]),a.childNodes[1].role===sre.SemanticAttr.Role.OVERACCENT?(c.type=sre.SemanticAttr.Type.OVERSCORE,a.type=sre.SemanticAttr.Type.UNDERSCORE):(c.type=sre.SemanticAttr.Type.UNDERSCORE,a.type=sre.SemanticAttr.Type.OVERSCORE),c.role=\nsre.SemanticAttr.Role.UNDEROVER,c.embellished=a.embellished,c.fencePointer=a.fencePointer,this.collapsedChildren_(b));return a};sre.RebuildStree.prototype.createNode=function(a){var b=this.factory.makeNode(a);return this.nodeDict[a.toString()]=b};\nsre.RebuildStree.prototype.collapsedChildren_=function(a){var b=goog.bind(function(c){var d=this.nodeDict[c[0]];d.childNodes=[];for(var e=1,f=c.length;e<f;e++){var g=c[e];d.childNodes.push(sre.SemanticSkeleton.simpleCollapseStructure(g)?this.nodeDict[g]:b(g))}return d},this);b(a)};sre.SpeechGenerator=function(){};sre.SpeechGenerator.prototype.getSpeech=function(a,b){};sre.SpeechGenerator.prototype.getRebuilt=function(){};sre.SpeechGenerator.prototype.setRebuilt=function(a){};sre.SpeechGenerator.prototype.setOptions=function(a){};sre.SpeechGenerator.prototype.getOptions=function(){};sre.SpeechGenerator.prototype.start=function(){};sre.SpeechGenerator.prototype.end=function(){};sre.AuditoryDescription=function(a){this.context=a.context||\"\";this.text=a.text||\"\";this.userValue=a.userValue||\"\";this.annotation=a.annotation||\"\";this.attributes=a.attributes||{};this.personality=a.personality||{}};sre.AuditoryDescription.create=function(a,b){a.text=sre.Grammar.getInstance().apply(a.text,b||{});return new sre.AuditoryDescription(a)};sre.AuditoryDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};\nsre.AuditoryDescription.prototype.clone=function(){if(this.personality){var a={};for(var b in this.personality)a=this.personality[b]}if(this.attributes){var c={};for(b in this.attributes)c=this.attributes[b]}return new sre.AuditoryDescription({context:this.context,text:this.text,userValue:this.userValue,annotation:this.annotation,personality:a,attributes:c})};\nsre.AuditoryDescription.prototype.toString=function(){return'AuditoryDescription(context=\"'+this.context+'\"  text=\"'+this.text+'\"  userValue=\"'+this.userValue+'\"  annotation=\"'+this.annotation+'\")'};sre.AuditoryDescription.prototype.descriptionString=function(){return this.context&&this.text?this.context+\" \"+this.text:this.context||this.text};sre.AuditoryDescription.prototype.descriptionSpan=function(){return new sre.Span(this.descriptionString(),this.attributes)};\nsre.AuditoryDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};sre.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d;this.context=null};sre.SpeechRule.prototype.toString=function(){return this.name+\" | \"+this.dynamicCstr.toString()+\" | \"+this.precondition.toString()+\" ==> \"+this.action.toString()};sre.SpeechRule.Type={NODE:\"NODE\",MULTI:\"MULTI\",TEXT:\"TEXT\",PERSONALITY:\"PERSONALITY\"};\nsre.SpeechRule.Type.fromString=function(a){switch(a){case \"[n]\":return sre.SpeechRule.Type.NODE;case \"[m]\":return sre.SpeechRule.Type.MULTI;case \"[t]\":return sre.SpeechRule.Type.TEXT;case \"[p]\":return sre.SpeechRule.Type.PERSONALITY;default:throw\"Parse error: \"+a;}};\nsre.SpeechRule.Type.toString=function(a){switch(a){case sre.SpeechRule.Type.NODE:return\"[n]\";case sre.SpeechRule.Type.MULTI:return\"[m]\";case sre.SpeechRule.Type.TEXT:return\"[t]\";case sre.SpeechRule.Type.PERSONALITY:return\"[p]\";default:throw\"Unknown type error: \"+a;}};sre.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content;this.attributes=a.attributes;this.grammar=a.grammar};\nsre.SpeechRule.Component.fromString=function(a){var b={};b.type=sre.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trim();if(!a)throw new sre.SpeechRule.OutputError(\"Missing content.\");switch(b.type){case sre.SpeechRule.Type.TEXT:if('\"'==a[0]){var c=sre.SpeechRule.splitString_(a,\"\\\\(\")[0].trim();if('\"'!=c.slice(-1))throw new sre.SpeechRule.OutputError(\"Invalid string syntax.\");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf(\"(\")&&(a=\"\");break}case sre.SpeechRule.Type.NODE:case sre.SpeechRule.Type.MULTI:c=\na.indexOf(\" (\"),-1==c?(b.content=a.trim(),a=\"\"):(b.content=a.substring(0,c).trim(),a=a.slice(c).trim())}a&&(a=sre.SpeechRule.Component.attributesFromString(a),a.grammar&&(b.grammar=a.grammar,delete a.grammar),Object.keys(a).length&&(b.attributes=a));return b=new sre.SpeechRule.Component(b)};sre.SpeechRule.Component.prototype.toString=function(){var a=\"\"+sre.SpeechRule.Type.toString(this.type);a+=this.content?\" \"+this.content:\"\";var b=this.attributesToString();return a+(b?\" \"+b:\"\")};\nsre.SpeechRule.Component.grammarFromString=function(a){return sre.Grammar.parseInput(a)};sre.SpeechRule.Component.prototype.grammarToString=function(){return this.getGrammar().join(\":\")};sre.SpeechRule.Component.prototype.getGrammar=function(){var a=[],b;for(b in this.grammar)!0===this.grammar[b]?a.push(b):!1===this.grammar[b]?a.push(\"!\"+b):a.push(b+\"=\"+this.grammar[b]);return a};\nsre.SpeechRule.Component.attributesFromString=function(a){if(\"(\"!=a[0]||\")\"!=a.slice(-1))throw new sre.SpeechRule.OutputError(\"Invalid attribute expression: \"+a);var b={};a=sre.SpeechRule.splitString_(a.slice(1,-1),\",\");for(var c=0,d=a.length;c<d;c++){var e=a[c],f=e.indexOf(\":\");if(-1==f)b[e.trim()]=\"true\";else{var g=e.substring(0,f).trim();e=e.slice(f+1).trim();b[g]=\"grammar\"===g?sre.SpeechRule.Component.grammarFromString(e):b[g]=e}}return b};\nsre.SpeechRule.Component.prototype.attributesToString=function(){var a=this.getAttributes(),b=this.grammarToString();b&&a.push(\"grammar:\"+b);return 0<a.length?\"(\"+a.join(\", \")+\")\":\"\"};sre.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this.attributes){var c=this.attributes[b];\"true\"===c?a.push(b):a.push(b+\":\"+c)}return a};sre.SpeechRule.Action=function(a){this.components=a};\nsre.SpeechRule.Action.fromString=function(a){a=sre.SpeechRule.splitString_(a,\";\").filter(function(f){return f.match(/\\S/)}).map(function(f){return f.trim()});for(var b=[],c=0,d=a.length;c<d;c++){var e=sre.SpeechRule.Component.fromString(a[c]);e&&b.push(e)}return new sre.SpeechRule.Action(b)};sre.SpeechRule.Action.prototype.toString=function(){return this.components.map(function(a){return a.toString()}).join(\"; \")};sre.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};\nsre.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(\", \");return this.query+\", \"+a};\nsre.SpeechRule.splitString_=function(a,b){for(var c=[],d=\"\";\"\"!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/\"/g)||[]).length%2)throw new sre.SpeechRule.OutputError(\"Invalid string in expression: \"+a);c.push(d+a);a=d=\"\"}else if(0==(a.substring(0,e).match(/\"/g)||[]).length%2)c.push(d+a.substring(0,e)),d=\"\",a=a.substring(e+1);else{var f=a.substring(e).search('\"');if(-1==f)throw new sre.SpeechRule.OutputError(\"Invalid string in expression: \"+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&c.push(d);\nreturn c};sre.SpeechRule.OutputError=function(a){sre.Engine.Error.call(this,a);this.name=\"RuleError\"};goog.inherits(sre.SpeechRule.OutputError,sre.Engine.Error);sre.SpeechRuleFunctions=function(){};sre.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};sre.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};sre.SpeechRuleFunctions.Store_.prototype.addStore=function(a){for(var b=Object.keys(a.store_),c=0,d;d=b[c];c++)this.add(d,a.store_[d])};sre.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};\nsre.SpeechRuleFunctions.CustomQueries=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CQF\",{})};goog.inherits(sre.SpeechRuleFunctions.CustomQueries,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.CustomStrings=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CSF\",{})};goog.inherits(sre.SpeechRuleFunctions.CustomStrings,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.ContextFunctions=function(){sre.SpeechRuleFunctions.Store_.call(this,\"CTXF\",{})};\ngoog.inherits(sre.SpeechRuleFunctions.ContextFunctions,sre.SpeechRuleFunctions.Store_);sre.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){return a.match(new RegExp(\"^\"+this.prefix_))?!0:(console.error(\"FunctionError: Invalid function name. Expected prefix \"+this.prefix_),!1)};sre.SpeechRuleContext=function(){this.customQueries=new sre.SpeechRuleFunctions.CustomQueries;this.customStrings=new sre.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new sre.SpeechRuleFunctions.ContextFunctions};sre.SpeechRuleContext.prototype.applyCustomQuery=function(a,b){return(b=this.customQueries.lookup(b))?b(a):null};sre.SpeechRuleContext.prototype.applySelector=function(a,b){return this.applyCustomQuery(a,b)||sre.XpathUtil.evalXPath(b,a)};\nsre.SpeechRuleContext.prototype.applyQuery=function(a,b){a=this.applySelector(a,b);return 0<a.length?a[0]:null};sre.SpeechRuleContext.prototype.applyConstraint=function(a,b){return!!this.applyQuery(a,b)||sre.XpathUtil.evaluateBoolean(b,a)};sre.SpeechRuleContext.prototype.constructString=function(a,b){if(!b)return\"\";if('\"'==b.charAt(0))return b.slice(1,-1);var c=this.customStrings.lookup(b);return c?c(a):sre.XpathUtil.evaluateString(b,a)};\nsre.SpeechRuleContext.prototype.parse=function(a){for(var b=0,c;c=a[b];b++)({CQF:this.customQueries,CSF:this.customStrings,CTXF:this.contextFunctions})[c[0]].add(c[1],c[2])};sre.SpeechRuleEvaluator=function(){};sre.SpeechRuleEvaluator.prototype.evaluateDefault=goog.abstractMethod;sre.SpeechRuleStore=function(){};sre.SpeechRuleStore.prototype.addRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.deleteRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.findAllRules=goog.abstractMethod;sre.SpeechRuleStore.prototype.lookupRule=goog.abstractMethod;sre.SpeechRuleStore.prototype.defineRule=goog.abstractMethod;sre.TrieNode=function(){};sre.TrieNode.prototype.getConstraint=function(){};sre.TrieNode.prototype.getKind=function(){};sre.TrieNode.prototype.applyTest=function(a){};sre.TrieNode.prototype.addChild=function(a){};sre.TrieNode.prototype.getChild=function(a){};sre.TrieNode.prototype.getChildren=function(){};sre.TrieNode.prototype.findChildren=function(a){};sre.TrieNode.Kind={ROOT:\"root\",DYNAMIC:\"dynamic\",QUERY:\"query\",BOOLEAN:\"boolean\",STATIC:\"static\"};sre.AbstractTrieNode=function(a,b){this.constraint=a;this.test=b;this.children_={};this.kind=sre.TrieNode.Kind.ROOT};sre.AbstractTrieNode.prototype.getConstraint=function(){return this.constraint};sre.AbstractTrieNode.prototype.getKind=function(){return this.kind};sre.AbstractTrieNode.prototype.applyTest=function(a){return this.test(a)};sre.AbstractTrieNode.prototype.addChild=function(a){var b=a.getConstraint(),c=this.children_[b];this.children_[b]=a;return c};\nsre.AbstractTrieNode.prototype.getChild=function(a){return this.children_[a]};sre.AbstractTrieNode.prototype.getChildren=function(){var a=[],b;for(b in this.children_)a.push(this.children_[b]);return a};sre.AbstractTrieNode.prototype.findChildren=function(a){var b=[],c;for(c in this.children_){var d=this.children_[c];d.applyTest(a)&&b.push(d)}return b};sre.AbstractTrieNode.prototype.toString=function(){return this.constraint};\nsre.StaticTrieNode=function(a,b){sre.AbstractTrieNode.call(this,a,b);this.kind=sre.TrieNode.Kind.STATIC;this.rule_=null};goog.inherits(sre.StaticTrieNode,sre.AbstractTrieNode);sre.StaticTrieNode.prototype.getRule=function(){return this.rule_};sre.StaticTrieNode.prototype.setRule=function(a){this.rule_&&sre.Debugger.getInstance().output(\"Replacing rule \"+this.rule_+\" with \"+a);this.rule_=a};\nsre.StaticTrieNode.prototype.toString=function(){return this.getRule()?this.constraint+\"\\n==> \"+this.getRule().action:this.constraint};sre.TrieNodeFactory={};sre.TrieNodeFactory.getNode=function(a,b,c){switch(a){case sre.TrieNode.Kind.ROOT:return new sre.RootTrieNode;case sre.TrieNode.Kind.DYNAMIC:return new sre.DynamicTrieNode(b);case sre.TrieNode.Kind.QUERY:return new sre.QueryTrieNode(b,c);case sre.TrieNode.Kind.BOOLEAN:return new sre.BooleanTrieNode(b,c);default:return null}};sre.RootTrieNode=function(){sre.AbstractTrieNode.call(this,\"\",function(){return!0});this.kind=sre.TrieNode.Kind.ROOT};goog.inherits(sre.RootTrieNode,sre.AbstractTrieNode);\nsre.DynamicTrieNode=function(a){sre.AbstractTrieNode.call(this,a,function(b){return b===a});this.kind=sre.TrieNode.Kind.DYNAMIC};goog.inherits(sre.DynamicTrieNode,sre.AbstractTrieNode);\nsre.TrieNodeFactory.constraintTest_=function(a){if(a.match(/^self::\\*$/))return function(f){return!0};if(a.match(/^self::\\w+$/)){var b=a.slice(6).toUpperCase();return function(f){return f.tagName&&sre.DomUtil.tagName(f)===b}}if(a.match(/^self::\\w+:\\w+$/)){a=a.split(\":\");var c=sre.XpathUtil.resolveNameSpace(a[2]);if(!c)return null;b=a[3].toUpperCase();return function(f){return f.localName&&f.localName.toUpperCase()===b&&f.namespaceURI===c}}if(a.match(/^@\\w+$/)){var d=a.slice(1);return function(f){return f.hasAttribute&&\nf.hasAttribute(d)}}if(a.match(/^@\\w+=\"[\\w\\d ]+\"$/)){a=a.split(\"=\");d=a[0].slice(1);var e=a[1].slice(1,-1);return function(f){return f.hasAttribute&&f.hasAttribute(d)&&f.getAttribute(d)===e}}return a.match(/^@\\w+!=\"[\\w\\d ]+\"$/)?(a=a.split(\"!=\"),d=a[0].slice(1),e=a[1].slice(1,-1),function(f){return!f.hasAttribute||!f.hasAttribute(d)||f.getAttribute(d)!==e}):a.match(/^contains\\(\\s*@grammar\\s*,\\s*\"[\\w\\d ]+\"\\s*\\)$/)?(a=a.split('\"'),e=a[1],function(f){return sre.Grammar.getInstance().getParameter(e)}):\na.match(/^not\\(\\s*contains\\(\\s*@grammar\\s*,\\s*\"[\\w\\d ]+\"\\s*\\)\\s*\\)$/)?(a=a.split('\"'),e=a[1],function(f){return!sre.Grammar.getInstance().getParameter(e)}):null};sre.QueryTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.QUERY};goog.inherits(sre.QueryTrieNode,sre.StaticTrieNode);sre.QueryTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyQuery(a,this.constraint)===a};\nsre.BooleanTrieNode=function(a,b){this.context_=b;sre.StaticTrieNode.call(this,a,sre.TrieNodeFactory.constraintTest_(a));this.kind=sre.TrieNode.Kind.BOOLEAN};goog.inherits(sre.BooleanTrieNode,sre.StaticTrieNode);sre.BooleanTrieNode.prototype.applyTest=function(a){return this.test?this.test(a):this.context_.applyConstraint(a,this.constraint)};sre.Trie=function(a){this.store=a;this.root=sre.TrieNodeFactory.getNode(sre.TrieNode.Kind.ROOT,\"\",this.store.context)};sre.Trie.prototype.addRule=function(a){for(var b=this.root,c=a.context,d=a.dynamicCstr.getValues(),e=0,f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.DYNAMIC,c);b=this.addNode_(b,a.precondition.query,sre.TrieNode.Kind.QUERY,c);d=a.precondition.constraints;e=0;for(f=d.length;e<f;e++)b=this.addNode_(b,d[e],sre.TrieNode.Kind.BOOLEAN,c);b.setRule(a)};\nsre.Trie.prototype.addNode_=function(a,b,c,d){var e=a.getChild(b);e||(e=sre.TrieNodeFactory.getNode(c,b,d),a.addChild(e));return e};\nsre.Trie.prototype.lookupRules=function(a,b){for(var c=[this.root],d=[];b.length;){for(var e=b.shift(),f=[];c.length;){var g=c.shift();g=g.getChildren();g.forEach(function(h){h.getKind()===sre.TrieNode.Kind.DYNAMIC&&-1===e.indexOf(h.getConstraint())||f.push(h)})}c=f.slice()}for(;c.length;)g=c.shift(),g.getRule&&(b=g.getRule())&&d.push(b),g=g.findChildren(a),c=c.concat(g);return d};\nsre.Trie.prototype.hasSubtrie=function(a){for(var b=this.root,c=0,d=a.length;c<d;c++)if(b=b.getChild(a[c]),!b)return!1;return!0};sre.Trie.prototype.toString=function(){return sre.Trie.printWithDepth_(this.root,0,\"\")};sre.Trie.prototype.collectRules=function(){return sre.Trie.collectRules_(this.root)};sre.Trie.prototype.order=function(){return sre.Trie.order_(this.root)};\nsre.Trie.printWithDepth_=function(a,b,c){var d=Array(b+2).join(b)+\": \";c+=d+a.toString()+\"\\n\";a=a.getChildren();d=0;for(var e;e=a[d];d++)c=sre.Trie.printWithDepth_(e,b+1,c);return c};sre.Trie.order_=function(a){a=a.getChildren();if(!a.length)return 0;var b=Math.max.apply(null,a.map(sre.Trie.order_));return Math.max(a.length,b)};\nsre.Trie.collectRules_=function(a){var b=[];for(a=[a];a.length;){var c=a.shift();if(c.getKind()===sre.TrieNode.Kind.QUERY||c.getKind()===sre.TrieNode.Kind.BOOLEAN){var d=c.getRule();d&&b.unshift(d)}a=a.concat(c.getChildren())}return b};sre.Trie.prototype.enumerate=function(a){return this.enumerate_(this.root,a)};\nsre.Trie.prototype.enumerate_=function(a,b){b=b||{};a=a.getChildren();for(var c=0,d;d=a[c];c++)d.kind===sre.TrieNode.Kind.DYNAMIC&&(b[d.getConstraint()]=this.enumerate_(d,b[d.getConstraint()]));return b};sre.BaseRuleStore=function(){this.context=new sre.SpeechRuleContext;this.customQueries=this.context.customQueries;this.customStrings=this.context.customStrings;this.contextFunctions=this.context.contextFunctions;this.speechRules_=[];this.trie=new sre.Trie(this);this.parseOrder=sre.DynamicCstr.DEFAULT_ORDER;this.parser=new sre.DynamicCstr.Parser(this.parseOrder);this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY];\nthis.domain=null;this.initialized=!1;this.parseMethods={Rule:goog.bind(this.defineRule,this)}};sre.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=sre.DomUtil.NodeType.ELEMENT_NODE&&a.nodeType!=sre.DomUtil.NodeType.TEXT_NODE)return null;a=this.trie.lookupRules(a,b.allProperties());return 0<a.length?this.pickMostConstraint_(b,a):null};\nsre.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=sre.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new sre.SpeechRule.Precondition(d,g),k=this.parseCstr(b);var l=new sre.SpeechRule(a,k,h,f)}catch(m){if(\"RuleError\"==m.name)return console.error(\"Rule Error \",d,\"(\"+b+\"):\",m.message),null;throw m;}this.addRule(l);return l};sre.BaseRuleStore.prototype.addRule=function(a){a.context=this.context;this.trie.addRule(a);this.speechRules_.unshift(a)};\nsre.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};sre.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};sre.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};sre.BaseRuleStore.prototype.evaluateDefault=function(a){return[sre.AuditoryDescription.create({text:a.textContent})]};\nsre.BaseRuleStore.prototype.debugSpeechRule=function(a,b){var c=a.precondition,d=a.context.applyQuery(b,c.query);sre.Debugger.getInstance().output(c.query,d?d.toString():d);c.constraints.forEach(goog.bind(function(e){sre.Debugger.getInstance().output(e,a.context.applyConstraint(b,e))},this))};sre.BaseRuleStore.prototype.initialize=goog.abstractMethod;\nsre.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&a.dynamicCstr.equal(c.dynamicCstr)&&sre.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};\nsre.BaseRuleStore.strongQuery_=function(a,b){a=a.precondition.query;b=b.precondition.query;var c=a.match(/^self::\\*\\[@[\\w-]+\\]$/),d=b.match(/^self::\\*\\[@[\\w-]+\\]$/);if(c&&d)return 0;if(c)return(b=b.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/))?1:-1;if(d)return(a=a.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/))?-1:1;a=a.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/);b=b.match(/^self::[\\w-]+\\[@[\\w-]+\\]$/);return a&&b?0:a?-1:b?1:0};\nsre.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){var c=sre.Engine.getInstance().comparator;b.sort(function(d,e){return c.compare(d.dynamicCstr,e.dynamicCstr)||sre.BaseRuleStore.strongQuery_(d,e)||e.precondition.constraints.length-d.precondition.constraints.length});sre.Debugger.getInstance().generateOutput(goog.bind(function(){return b.map(function(d){return d.name+\"(\"+d.dynamicCstr.toString()+\")\"})},this));return b[0]};\nsre.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};sre.BaseRuleStore.comparePreconditions_=function(a,b){a=a.precondition;b=b.precondition;return a.query!=b.query?!1:sre.BaseRuleStore.compareStaticConstraints_(a.constraints,b.constraints)};sre.BaseRuleStore.prototype.getSpeechRules=function(){return this.speechRules_};sre.BaseRuleStore.prototype.setSpeechRules=function(a){this.speechRules_=a};\nsre.BaseRuleStore.prototype.parseCstr=function(a){return this.parser.parse(this.locale+\".\"+this.modality+(this.domain?\".\"+this.domain:\"\")+\".\"+a)};sre.BaseRuleStore.prototype.parse=function(a){this.modality=a.modality||this.modality;this.locale=a.locale||this.locale;this.domain=a.domain||this.domain;this.context.parse(a.functions||[]);this.parseRules(a.rules||[])};sre.BaseRuleStore.prototype.parseRules=function(a){for(var b=0,c;c=a[b];b++){var d=c[0],e=this.parseMethods[d];d&&e&&e.apply(this,c.slice(1))}};sre.MathStore=function(){sre.BaseRuleStore.call(this);this.initializer=[];this.parseMethods.Alias=goog.bind(this.defineRuleAlias,this);this.parseMethods.Aliases=goog.bind(this.defineRulesAlias,this);this.parseMethods.UniqueAlias=goog.bind(this.defineUniqueRuleAlias,this);this.parseMethods.SpecializedRule=goog.bind(this.defineSpecialisedRule,this)};goog.inherits(sre.MathStore,sre.BaseRuleStore);\nsre.MathStore.prototype.initialize=function(){if(!this.initialized){for(var a=0,b;b=this.initializer[a];a++)b(this);this.setSpeechRules(this.trie.collectRules());this.initialized=!0}};\nsre.MathStore.prototype.defineUniqueRuleAlias=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError(\"Rule named \"+a+\" with style \"+b+\" does not exist.\");this.addAlias_(f,c,Array.prototype.slice.call(arguments,3))};\nsre.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(e){return e.name==a});if(!d)throw new sre.SpeechRule.OutputError(\"Rule with named \"+a+\" does not exist.\");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};\nsre.MathStore.prototype.defineRulesAlias=function(a,b,c){var d=this.findAllRules(function(g){return g.name==a});if(0==d.length)throw new sre.SpeechRule.OutputError(\"Rule with name \"+a+\" does not exist.\");var e=Array.prototype.slice.call(arguments,2),f=[];d.forEach(goog.bind(function(g){a:{var h=g.dynamicCstr.toString();for(var k=g.action.toString(),l=0,m;m=f[l];l++)if(m.action===k&&m.cstr===h){h=!1;break a}f.push({cstr:h,action:k});h=!0}h&&this.addAlias_(g,b,e)},this))};\nsre.MathStore.prototype.addAlias_=function(a,b,c){b=new sre.SpeechRule.Precondition(b,c);b=new sre.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};\nsre.MathStore.prototype.defineSpecialisedRule=function(a,b,c,d){var e=this.parseCstr(b),f=this.findRule(goog.bind(function(g){return g.name==a&&e.equal(g.dynamicCstr)},this));if(!f)throw new sre.SpeechRule.OutputError(\"Rule named \"+a+\" with style \"+b+\" does not exist.\");b=this.parseCstr(c);d=d?sre.SpeechRule.Action.fromString(d):f.action;f=new sre.SpeechRule(f.name,b,f.precondition,d);this.addRule(f)};sre.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};\nsre.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\\s+$/))return b;var c=this.matchNumber_(a);if(c&&c.length===a.length)return b.push(this.evaluate_(c.number)),b;a=sre.BaseUtil.removeEmpty(a.replace(/\\s/g,\" \").split(\" \"));for(var d=0;c=a[d];d++)if(1==c.length)b.push(this.evaluate_(c));else if(c.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+$\")))b.push(this.evaluate_(c));else for(var e=c;e;){c=this.matchNumber_(e);var f=e.match(new RegExp(\"^[\"+sre.Messages.REGEXP.TEXT+\"]+\"));\nc?(b.push(this.evaluate_(c.number)),e=e.substring(c.length)):f?(b.push(this.evaluate_(f[0])),e=e.substring(f[0].length)):(c=e[0].charCodeAt(0),55296<=c&&56319>=c&&1<e.length&&!isNaN(e.charCodeAt(1))?(b.push(this.evaluate_(e.slice(0,2))),e=e.substring(2)):(b.push(this.evaluate_(e[0])),e=e.substring(1)))}return b};\nsre.MathStore.prototype.matchNumber_=function(a){var b=a.match(new RegExp(\"^\"+sre.Messages.REGEXP.NUMBER)),c=a.match(new RegExp(\"^\"+sre.Locale.en.REGEXP.NUMBER));if(!b&&!c)return null;var d=c&&c[0]===a;return b&&b[0]===a||!d?{number:b[0],length:b[0].length}:{number:c[0].replace(new RegExp(sre.Locale.en.REGEXP.DIGIT_GROUP,\"g\"),\"X\").replace(new RegExp(sre.Locale.en.REGEXP.DECIMAL_MARK,\"g\"),sre.Messages.REGEXP.DECIMAL_MARK).replace(/X/g,sre.Messages.REGEXP.DIGIT_GROUP.replace(/\\\\/g,\"\")),length:c[0].length}};\nsre.MathStore.prototype.evaluate_=function(a){return sre.AuditoryDescription.create({text:a},{adjust:!0,translate:!0})};sre.MathStore.prototype.parse=function(a){sre.MathStore.superClass_.parse.call(this,a);this.initializer=a.initialize||[]};sre.BrailleStore=function(){sre.MathStore.call(this);this.modality=\"braille\"};goog.inherits(sre.BrailleStore,sre.MathStore);\nsre.BrailleStore.prototype.evaluateDefault=function(a){a=a.textContent.slice(0);var b=[];if(a.match(/^\\s+$/))return b;for(;a;){var c=a[0],d=c.charCodeAt(0);55296<=d&&56319>=d&&1<a.length&&!isNaN(a.charCodeAt(1))?(b.push(sre.AuditoryDescription.create({text:a.slice(0,2)},{adjust:!0,translate:!0})),a=a.substring(2)):(b.push(sre.AuditoryDescription.create({text:c},{adjust:!0,translate:!0})),a=a.substring(1))}return b};sre.ClearspeakPreferences=function(a,b){sre.DynamicCstr.call(this,a);this.preference=b};goog.inherits(sre.ClearspeakPreferences,sre.DynamicCstr);sre.ClearspeakPreferences.prototype.equal=function(a){if(!sre.ClearspeakPreferences.superClass_.equal.call(this,a))return!1;var b=Object.keys(this.preference);a=a.preference;if(b.length!==Object.keys(a).length)return!1;for(var c=0,d;d=b[c];c++)if(this.preference[d]!==a[d])return!1;return!0};sre.ClearspeakPreferences.AUTO=\"Auto\";\nsre.ClearspeakPreferences.PREFERENCES=new sre.DynamicProperties({AbsoluteValue:[\"Auto\",\"AbsEnd\",\"Cardinality\",\"Determinant\"],Bar:[\"Auto\",\"Conjugate\"],Caps:[\"Auto\",\"SayCaps\"],CombinationPermutation:[\"Auto\",\"ChoosePermute\"],Currency:[\"Auto\",\"Position\",\"Prefix\"],Ellipses:[\"Auto\",\"AndSoOn\"],Exponent:[\"Auto\",\"AfterPower\",\"Ordinal\",\"OrdinalPower\",\"Exponent\"],Fraction:\"Auto EndFrac FracOver General GeneralEndFrac Ordinal Over OverEndFrac Per\".split(\" \"),Functions:[\"Auto\",\"None\",\"Reciprocal\"],ImpliedTimes:[\"Auto\",\n\"MoreImpliedTimes\",\"None\"],Log:[\"Auto\",\"LnAsNaturalLog\"],Matrix:\"Auto Combinatoric EndMatrix EndVector SilentColNum SpeakColNum Vector\".split(\" \"),MultiLineLabel:\"Auto Case Constraint Equation Line None Row Step\".split(\" \"),MultiLineOverview:[\"Auto\",\"None\"],MultiLinePausesBetweenColumns:[\"Auto\",\"Long\",\"Short\"],MultsymbolDot:[\"Auto\",\"Dot\"],MultsymbolX:[\"Auto\",\"By\",\"Cross\"],Paren:\"Auto CoordPoint Interval Silent Speak SpeakNestingLevel\".split(\" \"),Prime:[\"Auto\",\"Angle\",\"Length\"],Roots:[\"Auto\",\"PosNegSqRoot\",\n\"PosNegSqRootEnd\",\"RootEnd\"],SetMemberSymbol:[\"Auto\",\"Belongs\",\"Element\",\"Member\"],Sets:[\"Auto\",\"SilentBracket\",\"woAll\"],TriangleSymbol:[\"Auto\",\"Delta\"],Trig:[\"Auto\",\"ArcTrig\",\"TrigInverse\",\"Reciprocal\"],VerticalLine:[\"Auto\",\"Divides\",\"Given\",\"SuchThat\"]});\nsre.ClearspeakPreferences.comparator=function(){return new sre.ClearspeakPreferences.Comparator(sre.Engine.getInstance().dynamicCstr,sre.DynamicProperties.create([sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]],[sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.STYLE]]))};\nsre.ClearspeakPreferences.Comparator=function(a,b){sre.DynamicCstr.DefaultComparator.call(this,a,b);this.preference=a.preference||{}};goog.inherits(sre.ClearspeakPreferences.Comparator,sre.DynamicCstr.DefaultComparator);sre.ClearspeakPreferences.Comparator.prototype.match=function(a){if(!sre.ClearspeakPreferences.Comparator.superClass_.match.call(this,a))return!1;if(!a.preference)return!0;for(var b=Object.keys(a.preference),c=0,d;d=b[c];c++)if(this.preference[d]!==a.preference[d])return!1;return!0};\nsre.ClearspeakPreferences.Comparator.prototype.compare=function(a,b){var c=sre.ClearspeakPreferences.Comparator.superClass_.compare.call(this,a,b);if(0!==c)return c;if(!a.preference&&b.preference)return 1;if(a.preference&&!b.preference)return-1;if(!a.preference&&!b.preference)return 0;a=Object.keys(a.preference).length;b=Object.keys(b.preference).length;return a>b?-1:a<b?1:0};\nsre.ClearspeakPreferences.Parser=function(){sre.DynamicCstr.Parser.call(this,[sre.DynamicCstr.Axis.LOCALE,sre.DynamicCstr.Axis.MODALITY,sre.DynamicCstr.Axis.DOMAIN,sre.DynamicCstr.Axis.STYLE])};goog.inherits(sre.ClearspeakPreferences.Parser,sre.DynamicCstr.Parser);\nsre.ClearspeakPreferences.Parser.prototype.parse=function(a){var b=sre.ClearspeakPreferences.Parser.superClass_.parse.call(this,a);a=b.getValue(sre.DynamicCstr.Axis.STYLE);b=b.getValue(sre.DynamicCstr.Axis.LOCALE);var c={};a!==sre.DynamicCstr.DEFAULT_VALUE&&(c=this.fromPreference(a),a=this.toPreference(c));return new sre.ClearspeakPreferences({locale:b,modality:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],domain:\"clearspeak\",style:a},c)};\nsre.ClearspeakPreferences.Parser.prototype.fromPreference=function(a){return sre.ClearspeakPreferences.fromPreference(a)};sre.ClearspeakPreferences.fromPreference=function(a){a=a.split(\":\");for(var b={},c=sre.ClearspeakPreferences.PREFERENCES.getProperties(),d=Object.keys(c),e=0,f;f=a[e];e++)if(f=f.split(\"_\"),-1!==d.indexOf(f[0])){var g=f[1];g&&g!==sre.ClearspeakPreferences.AUTO&&-1!==c[f[0]].indexOf(g)&&(b[f[0]]=f[1])}return b};sre.ClearspeakPreferences.Parser.prototype.toPreference=function(a){return sre.ClearspeakPreferences.toPreference(a)};\nsre.ClearspeakPreferences.toPreference=function(a){for(var b=Object.keys(a),c=[],d=0;d<b.length;d++)c.push(b[d]+\"_\"+a[b[d]]);return c.length?c.join(\":\"):sre.DynamicCstr.DEFAULT_VALUE};sre.ClearspeakPreferences.LOCALE_PREFERENCES=null;\nsre.ClearspeakPreferences.getLocalePreferences=function(a){sre.ClearspeakPreferences.LOCALE_PREFERENCES||(a=a||sre.MathCompoundStore.getInstance().enumerate(sre.SpeechRuleEngine.getInstance().enumerate()),sre.ClearspeakPreferences.LOCALE_PREFERENCES=sre.ClearspeakPreferences.getLocalePreferences_(a));return sre.ClearspeakPreferences.LOCALE_PREFERENCES};\nsre.ClearspeakPreferences.getLocalePreferences_=function(a){var b={},c;for(c in a)if(a[c].speech&&a[c].speech.clearspeak){var d=Object.keys(a[c].speech.clearspeak),e=b[c]={},f;for(f in sre.ClearspeakPreferences.PREFERENCES.getProperties()){var g=sre.ClearspeakPreferences.PREFERENCES.getProperties()[f],h=[f+\"_Auto\"];if(g){g=$jscomp.makeIterator(g);for(var k=g.next();!k.done;k=g.next())k=k.value,-1!==d.indexOf(f+\"_\"+k)&&h.push(f+\"_\"+k)}e[f]=h}}return b};\nsre.ClearspeakPreferences.getSpeechExplorer=function(a){return(a=a.attached)&&a.length?a.find(function(b){return b.speechGenerator&&\"speech\"===b.speechGenerator.getOptions().modality}):null};\nsre.ClearspeakPreferences.smartPreferences=function(a,b){b=sre.ClearspeakPreferences.getLocalePreferences()[b];if(!b)return[];a=sre.ClearspeakPreferences.getSpeechExplorer(a);if(!a)return[{type:\"radio\",content:\"Standard\",id:\"clearspeak-default\",variable:\"speechRules\"}];a=sre.ClearspeakPreferences.relevantPreferences(a.walker.getFocus().getSemanticPrimary());var c=sre.Engine.DOMAIN_TO_STYLES.clearspeak;return[{type:\"radio\",content:\"No Preferences\",id:\"clearspeak-default\",variable:\"speechRules\"},{type:\"radio\",\ncontent:\"Current Preferences\",id:\"clearspeak-\"+c,variable:\"speechRules\"},{type:\"rule\"},{type:\"label\",content:\"Preferences for \"+a},{type:\"rule\"}].concat(b[a].map(function(d){d=d.split(\"_\");return{type:\"radio\",content:d[1],id:\"clearspeak-\"+sre.ClearspeakPreferences.addPreference(c,d[0],d[1]),variable:\"speechRules\"}}))};sre.ClearspeakPreferences.relevantPreferences=function(a){var b=sre.ClearspeakPreferences.SEMANTIC_MAPPING_[a.type];return b?b[a.role]||b[\"\"]||\"ImpliedTimes\":\"ImpliedTimes\"};\nsre.ClearspeakPreferences.REVERSE_MAPPING_=[[\"AbsoluteValue\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.NEUTRAL],[\"Bar\",sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Role.OVERACCENT],[\"Caps\",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.LATINLETTER],[\"CombinationPermutation\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.UNKNOWN],[\"Ellipses\",sre.SemanticAttr.Type.PUNCTUATION,sre.SemanticAttr.Role.ELLIPSIS],[\"Exponent\",sre.SemanticAttr.Type.SUPERSCRIPT,\"\"],[\"Fraction\",sre.SemanticAttr.Type.FRACTION,\n\"\"],[\"Functions\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.SIMPLEFUNC],[\"ImpliedTimes\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.IMPLICIT],[\"Log\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],[\"Matrix\",sre.SemanticAttr.Type.MATRIX,\"\"],[\"Matrix\",sre.SemanticAttr.Type.VECTOR,\"\"],[\"MultiLineLabel\",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",\nsre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Role.TABLE],[\"MultiLineLabel\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",sre.SemanticAttr.Type.TABLE,sre.SemanticAttr.Role.TABLE],[\"MultiLineLabel\",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.LABEL],[\"MultiLineOverview\",sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Role.TABLE],[\"MultiLinePausesBetweenColumns\",sre.SemanticAttr.Type.CASES,\nsre.SemanticAttr.Role.TABLE],[\"MultsymbolDot\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],[\"MultsymbolX\",sre.SemanticAttr.Type.OPERATOR,sre.SemanticAttr.Role.MULTIPLICATION],[\"Paren\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.LEFTRIGHT],[\"Prime\",sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Role.PRIME],[\"Roots\",sre.SemanticAttr.Type.ROOT,\"\"],[\"Roots\",sre.SemanticAttr.Type.SQRT,\"\"],[\"SetMemberSymbol\",sre.SemanticAttr.Type.RELATION,sre.SemanticAttr.Role.ELEMENT],\n[\"Sets\",sre.SemanticAttr.Type.FENCED,sre.SemanticAttr.Role.SETEXT],[\"TriangleSymbol\",sre.SemanticAttr.Type.IDENTIFIER,sre.SemanticAttr.Role.GREEKLETTER],[\"Trig\",sre.SemanticAttr.Type.APPL,sre.SemanticAttr.Role.PREFIXFUNC],[\"VerticalLine\",sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Role.VBAR]];sre.ClearspeakPreferences.SEMANTIC_MAPPING_=function(){for(var a={},b=0,c;c=sre.ClearspeakPreferences.REVERSE_MAPPING_[b];b++){var d=c[0],e=a[c[1]];e||(e={},a[c[1]]=e);e[c[2]]=d}return a}();\nsre.ClearspeakPreferences.findPreference=function(a,b){return\"default\"===a?sre.ClearspeakPreferences.AUTO:sre.ClearspeakPreferences.fromPreference(a)[b]||sre.ClearspeakPreferences.AUTO};sre.ClearspeakPreferences.addPreference=function(a,b,c){if(\"default\"===a)return b+\"_\"+c;a=sre.ClearspeakPreferences.fromPreference(a);a[b]=c;return sre.ClearspeakPreferences.toPreference(a)};sre.Engine.getInstance().comparators.clearspeak=sre.ClearspeakPreferences.comparator;\nsre.Engine.getInstance().parsers.clearspeak=new sre.ClearspeakPreferences.Parser;sre.AlphabetGenerator={};sre.AlphabetGenerator.Font={BOLD:\"bold\",BOLDFRAKTUR:\"bold-fraktur\",BOLDITALIC:\"bold-italic\",BOLDSCRIPT:\"bold-script\",DOUBLESTRUCK:\"double-struck\",FULLWIDTH:\"fullwidth\",FRAKTUR:\"fraktur\",ITALIC:\"italic\",MONOSPACE:\"monospace\",NORMAL:\"normal\",SCRIPT:\"script\",SANSSERIF:\"sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLD:\"sans-serif-bold\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\"};\nsre.AlphabetGenerator.Embellish={SUPER:\"super\",SUB:\"sub\",CIRCLED:\"circled\",PARENTHESIZED:\"parenthesized\",PERIOD:\"period\",NEGATIVECIRCLED:\"negative-circled\",DOUBLECIRCLED:\"double-circled\",CIRCLEDSANSSERIF:\"circled-sans-serif\",NEGATIVECIRCLEDSANSSERIF:\"negative-circled-sans-serif\",COMMA:\"comma\",SQUARED:\"squared\",NEGATIVESQUARED:\"negative-squared\"};sre.AlphabetGenerator.Base={LATINCAP:\"latinCap\",LATINSMALL:\"latinSmall\",GREEKCAP:\"greekCap\",GREEKSMALL:\"greekSmall\",DIGIT:\"digit\"};\nsre.AlphabetGenerator.Domains_={small:[\"default\"],capital:[\"default\"],digit:[\"default\"]};\nsre.AlphabetGenerator.makeDomains_=function(){var a=sre.Messages.ALPHABET_PREFIXES,b=sre.Messages.ALPHABET_TRANSFORMERS,c=function(d,e){var f={};Object.keys(d).forEach(function(g){f[g]=!0});Object.keys(e).forEach(function(g){f[g]=!0});return Object.keys(f)};sre.AlphabetGenerator.Domains_.small=c(a.smallPrefix,b.letter);sre.AlphabetGenerator.Domains_.capital=c(a.capPrefix,b.letter);sre.AlphabetGenerator.Domains_.digit=c(a.digitPrefix,b.digit)};\nsre.AlphabetGenerator.generate=function(a,b){var c=sre.Engine.getInstance().locale;sre.Engine.getInstance().locale=a;sre.L10n.setLocale();b.addSymbolRules({locale:a});sre.AlphabetGenerator.makeDomains_();a=sre.AlphabetGenerator.INTERVALS;for(var d=0,e;e=a[d];d++){var f=sre.AlphabetGenerator.makeInterval(e.interval,e.subst),g=f.map(function(h){return sre.SemanticUtil.numberToUnicode(parseInt(h,16))});\"offset\"in e?sre.AlphabetGenerator.numberRules(b,f,g,e.font,e.category,e.offset||0):sre.AlphabetGenerator.alphabetRules(b,\nf,g,sre.Messages.ALPHABETS[e.base],e.font,e.category,!!e.capital)}sre.Engine.getInstance().locale=c;sre.L10n.setLocale()};sre.AlphabetGenerator.makeInterval=function(a,b){var c=parseInt(a[0],16);a=parseInt(a[1],16);for(var d=[];c<=a;c++){var e=c.toString(16).toUpperCase();e=3<e.length?e:(\"000\"+e).slice(-4);!1!==b[e]&&(e=b[e]||e,d.push(e))}return d};\nsre.AlphabetGenerator.getFont=function(a){a=\"normal\"===a||\"fullwidth\"===a?\"\":sre.Messages.FONT[a]||sre.Messages.EMBELLISH[a]||\"\";return\"string\"===typeof a?{font:a,combiner:sre.Messages.ALPHABET_COMBINER}:{font:a[0],combiner:a[1]}};\nsre.AlphabetGenerator.alphabetRules=function(a,b,c,d,e,f,g){e=sre.AlphabetGenerator.getFont(e);for(var h=0,k,l,m;k=b[h],l=c[h],m=d[h];h++)sre.AlphabetGenerator.makeLetter(a,e.combiner,k,l,m,e.font,g?sre.Messages.ALPHABET_PREFIXES.capPrefix:sre.Messages.ALPHABET_PREFIXES.smallPrefix,f,sre.Messages.ALPHABET_TRANSFORMERS.letter,g?sre.AlphabetGenerator.Domains_.capital:sre.AlphabetGenerator.Domains_.small)};\nsre.AlphabetGenerator.numberRules=function(a,b,c,d,e,f){d=sre.AlphabetGenerator.getFont(d);for(var g=0,h,k;h=b[g],k=c[g];g++)sre.AlphabetGenerator.makeLetter(a,d.combiner,h,k,g+f,d.font,sre.Messages.ALPHABET_PREFIXES.digitPrefix,e,sre.Messages.ALPHABET_TRANSFORMERS.digit,sre.AlphabetGenerator.Domains_.digit)};\nsre.AlphabetGenerator.makeLetter=function(a,b,c,d,e,f,g,h,k,l){for(var m=0,n;n=l[m];m++){var p=n in g?g[n]:g[\"default\"];a.defineRule(c.toString(),n,\"default\",h,d,b((n in k?k[n]:k[\"default\"])(e),f,p))}};\nsre.AlphabetGenerator.INTERVALS=[{interval:[\"1D400\",\"1D419\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D41A\",\"1D433\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D56C\",\"1D585\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:[\"1D586\",\"1D59F\"],base:sre.AlphabetGenerator.Base.LATINSMALL,\nsubst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDFRAKTUR},{interval:[\"1D468\",\"1D481\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D482\",\"1D49B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D4D0\",\"1D4E9\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},\n{interval:[\"1D4EA\",\"1D503\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDSCRIPT},{interval:[\"1D538\",\"1D551\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D53A\":\"2102\",\"1D53F\":\"210D\",\"1D545\":\"2115\",\"1D547\":\"2119\",\"1D548\":\"211A\",\"1D549\":\"211D\",\"1D551\":\"2124\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D552\",\"1D56B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",\nfont:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D504\",\"1D51D\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D506\":\"212D\",\"1D50B\":\"210C\",\"1D50C\":\"2111\",\"1D515\":\"211C\",\"1D51D\":\"2128\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:[\"1D51E\",\"1D537\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.FRAKTUR},{interval:[\"FF21\",\"FF3A\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",\nfont:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"FF41\",\"FF5A\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"1D434\",\"1D44D\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D44E\",\"1D467\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{\"1D455\":\"210E\"},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D670\",\n\"1D689\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"1D68A\",\"1D6A3\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"0041\",\"005A\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"0061\",\"007A\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,\ncategory:\"Ll\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"1D49C\",\"1D4B5\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{\"1D49D\":\"212C\",\"1D4A0\":\"2130\",\"1D4A1\":\"2131\",\"1D4A3\":\"210B\",\"1D4A4\":\"2110\",\"1D4A7\":\"2112\",\"1D4A8\":\"2133\",\"1D4AD\":\"211B\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SCRIPT},{interval:[\"1D4B6\",\"1D4CF\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{\"1D4BA\":\"212F\",\"1D4BC\":\"210A\",\"1D4C4\":\"2134\"},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SCRIPT},\n{interval:[\"1D5A0\",\"1D5B9\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D5BA\",\"1D5D3\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D608\",\"1D621\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:[\"1D622\",\"1D63B\"],base:sre.AlphabetGenerator.Base.LATINSMALL,\nsubst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFITALIC},{interval:[\"1D5D4\",\"1D5ED\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D5EE\",\"1D607\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D63C\",\"1D655\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},\n{interval:[\"1D656\",\"1D66F\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:[\"0391\",\"03A9\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{\"03A2\":\"03F4\"},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"03B0\",\"03D0\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{\"03B0\":\"2207\",\"03CA\":\"2202\",\"03CB\":\"03F5\",\"03CC\":\"03D1\",\"03CD\":\"03F0\",\"03CE\":\"03D5\",\"03CF\":\"03F1\",\"03D0\":\"03D6\"},\ncapital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"1D6A8\",\"1D6C0\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D6C1\",\"1D6E1\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D6E2\",\"1D6FA\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D6FB\",\n\"1D71B\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.ITALIC},{interval:[\"1D71C\",\"1D734\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D735\",\"1D755\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.BOLDITALIC},{interval:[\"1D756\",\"1D76E\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,\ncategory:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D76F\",\"1D78F\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D790\",\"1D7A8\"],base:sre.AlphabetGenerator.Base.GREEKCAP,subst:{},capital:!0,category:\"Lu\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},{interval:[\"1D7A9\",\"1D7C9\"],base:sre.AlphabetGenerator.Base.GREEKSMALL,subst:{},capital:!1,category:\"Ll\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLDITALIC},\n{interval:[\"0030\",\"0039\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.NORMAL},{interval:[\"2070\",\"2079\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2071:\"00B9\",2072:\"00B2\",2073:\"00B3\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.SUPER},{interval:[\"2080\",\"2089\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.SUB},{interval:[\"245F\",\"2473\"],base:sre.AlphabetGenerator.Base.DIGIT,\nsubst:{\"245F\":\"24EA\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"3251\",\"325F\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:21,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"32B1\",\"32BF\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:36,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"2474\",\"2487\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:1,category:\"No\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},\n{interval:[\"2487\",\"249B\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2487:\"1F100\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.PERIOD},{interval:[\"2775\",\"277F\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2775:\"24FF\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:[\"24EB\",\"24F4\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:11,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED},{interval:[\"24F5\",\"24FE\"],base:sre.AlphabetGenerator.Base.DIGIT,\nsubst:{},offset:1,category:\"No\",font:sre.AlphabetGenerator.Embellish.DOUBLECIRCLED},{interval:[\"277F\",\"2789\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{\"277F\":\"1F10B\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.CIRCLEDSANSSERIF},{interval:[\"2789\",\"2793\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{2789:\"1F10C\"},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLEDSANSSERIF},{interval:[\"FF10\",\"FF19\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,\ncategory:\"Nd\",font:sre.AlphabetGenerator.Font.FULLWIDTH},{interval:[\"1D7CE\",\"1D7D7\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.BOLD},{interval:[\"1D7D8\",\"1D7E1\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.DOUBLESTRUCK},{interval:[\"1D7E2\",\"1D7EB\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.SANSSERIF},{interval:[\"1D7EC\",\"1D7F5\"],\nbase:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.SANSSERIFBOLD},{interval:[\"1D7F6\",\"1D7FF\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"Nd\",font:sre.AlphabetGenerator.Font.MONOSPACE},{interval:[\"1F101\",\"1F10A\"],base:sre.AlphabetGenerator.Base.DIGIT,subst:{},offset:0,category:\"No\",font:sre.AlphabetGenerator.Embellish.COMMA},{interval:[\"24B6\",\"24CF\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",\nfont:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"24D0\",\"24E9\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"So\",font:sre.AlphabetGenerator.Embellish.CIRCLED},{interval:[\"1F110\",\"1F129\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},{interval:[\"249C\",\"24B5\"],base:sre.AlphabetGenerator.Base.LATINSMALL,subst:{},capital:!1,category:\"So\",font:sre.AlphabetGenerator.Embellish.PARENTHESIZED},\n{interval:[\"1F130\",\"1F149\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.SQUARED},{interval:[\"1F170\",\"1F189\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.NEGATIVESQUARED},{interval:[\"1F150\",\"1F169\"],base:sre.AlphabetGenerator.Base.LATINCAP,subst:{},capital:!0,category:\"So\",font:sre.AlphabetGenerator.Embellish.NEGATIVECIRCLED}];sre.MathSimpleStore=function(){sre.MathStore.call(this);this.category=\"\"};goog.inherits(sre.MathSimpleStore,sre.MathStore);sre.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d])this.defineRuleFromStrings(a,d,e,b,c[d][e])};sre.MathSimpleStore.prototype.defineRuleFromStrings=function(a,b,c,d,e){this.defineRule(a,b+\".\"+c,'[t] \"'+e+'\"',\"self::text()\",'\"'===d?\"self::text() = '\"+d+\"'\":'self::text() = \"'+d+'\"')};\nsre.MathSimpleStore.prototype.lookupRule=function(a,b){a=this.getSpeechRules().filter(function(c){return sre.MathSimpleStore.testDynamicConstraints_(b,c)});return a.length?a.sort(function(c,d){return sre.Engine.getInstance().comparator.compare(c.dynamicCstr,d.dynamicCstr)})[0]:null};sre.MathSimpleStore.testDynamicConstraints_=function(a,b){return sre.Engine.getInstance().strict?b.dynamicCstr.equal(a):sre.Engine.getInstance().comparator.match(b.dynamicCstr)};\nsre.MathCompoundStore=function(){this.subStores_={};this.locale=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE];this.modality=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]};goog.addSingletonGetter(sre.MathCompoundStore);sre.MathCompoundStore.prototype.getSubStore_=function(a){var b=this.subStores_[a];if(b)return sre.Debugger.getInstance().output(\"Store exists! \"+a),b;b=new sre.MathSimpleStore;return this.subStores_[a]=b};\nsre.MathCompoundStore.prototype.setupStore_=function(a,b){a.locale=this.locale;a.modality=this.modality;b&&(a.category=b)};sre.MathCompoundStore.prototype.defineRules=function(a,b,c,d){var e=this.getSubStore_(b);this.setupStore_(e,c);e.defineRulesFromMappings(a,b,d)};sre.MathCompoundStore.prototype.defineRule=function(a,b,c,d,e,f){var g=this.getSubStore_(e);this.setupStore_(g,d);g.defineRuleFromStrings(a,b,c,e,f)};\nsre.MathCompoundStore.prototype.changeLocale_=function(a){if(!a.locale&&!a.modality)return!1;this.locale=a.locale||this.locale;this.modality=a.modality||this.modality;return!0};sre.MathCompoundStore.prototype.addSymbolRules=function(a){if(!this.changeLocale_(a)){var b=sre.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.category,a.mappings)}};\nsre.MathCompoundStore.prototype.addFunctionRules=function(a){if(!this.changeLocale_(a)){var b=a.names,c=a.mappings;a=a.category;for(var d=0,e;e=b[d];d++)this.defineRules(e,e,a,c)}};sre.MathCompoundStore.prototype.addUnitRules=function(a){if(!this.changeLocale_(a)){var b=a.names;b&&(a.names=b.map(function(c){return c+\":unit\"}));this.addFunctionRules(a)}};sre.MathCompoundStore.prototype.lookupRule=function(a,b){return(a=this.subStores_[a])?a.lookupRule(null,b):null};\nsre.MathCompoundStore.prototype.lookupCategory=function(a){return(a=this.subStores_[a])?a.category:\"\"};sre.MathCompoundStore.prototype.lookupString=function(a,b){return(a=this.lookupRule(a,b))?a.action.components.map(function(c){return c.content.slice(1,-1)}).join(\" \"):\"\"};sre.MathCompoundStore.prototype.enumerate=function(a){a=a||{};for(var b in this.subStores_)a=this.subStores_[b].trie.enumerate(a);return a};\nsre.MathSimpleStore.parseUnicode_=function(a){a=parseInt(a,16);if(65536>a)return String.fromCharCode(a);a-=65536;return String.fromCharCode((a>>10)+55296,(a&1023)+56320)};sre.MathMap=function(){this.store=sre.MathCompoundStore.getInstance();this.loaded_=[];this.addRules={functions:goog.bind(this.store.addFunctionRules,this.store),symbols:goog.bind(this.store.addSymbolRules,this.store),units:goog.bind(this.store.addUnitRules,this.store)}};goog.addSingletonGetter(sre.MathMap);sre.MathMap.oldInst_=sre.MathMap.getInstance;sre.MathMap.getInstance=function(){var a=sre.MathMap.oldInst_();a.loadLocale();return a};\nsre.MathMap.prototype.loadLocale=function(){var a=sre.Engine.getInstance().locale;if(-1===this.loaded_.indexOf(a)){var b=sre.Engine.getInstance().mode===sre.Engine.Mode.ASYNC;b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.SYNC);this.loaded_.push(a);this.retrieveMaps(a);b&&(sre.Engine.getInstance().mode=sre.Engine.Mode.ASYNC)}};sre.MathMap.toFetch_=0;sre.Engine.registerTest(function(){return sre.MathMap.getInstance()&&!sre.MathMap.toFetch_});\nsre.MathMap.prototype.retrieveFiles=function(a){a=sre.BaseUtil.makePath(sre.SystemExternal.jsonPath)+a+\".js\";switch(sre.Engine.getInstance().mode){case sre.Engine.Mode.ASYNC:sre.MathMap.toFetch_++;var b=goog.bind(this.parseMaps,this);sre.MathMap.fromFile_(a,function(c,d){sre.MathMap.toFetch_--;c||b(d)});break;case sre.Engine.Mode.HTTP:sre.MathMap.toFetch_++;this.getJsonAjax_(a);break;default:a=sre.MathMap.loadFile(a),this.parseMaps(a)}};\nsre.MathMap.prototype.parseMaps=function(a){a=JSON.parse(a);this.addMaps(a)};sre.MathMap.prototype.addMaps=function(a,b){for(var c=0,d;d=Object.keys(a)[c];c++){var e=d.split(\"/\");b&&b!==e[0]||a[d].forEach(this.addRules[e[1]])}};sre.MathMap.prototype.retrieveMaps=function(a){sre.AlphabetGenerator.generate(a,this.store);sre.Engine.getInstance().isIE&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP?this.getJsonIE_(a):this.retrieveFiles(a)};\nsre.MathMap.prototype.getJsonIE_=function(a,b){var c=b||1;sre.BrowserUtil.mapsForIE?this.addMaps(sre.BrowserUtil.mapsForIE,a):5>=c&&setTimeout(goog.bind(function(){this.getJsonIE_(a,c++)},this),300)};sre.MathMap.fromFile_=function(a,b){return sre.SystemExternal.fs.readFile(a,\"utf8\",b)};sre.MathMap.loadFile=function(a){try{return sre.MathMap.readJSON_(a)}catch(b){console.error(\"Unable to load file: \"+a+\"\\n\"+b)}return\"{}\"};sre.MathMap.readJSON_=function(a){return sre.SystemExternal.fs.readFileSync(a)};\nsre.MathMap.prototype.getJsonAjax_=function(a){var b=new XMLHttpRequest,c=goog.bind(this.parseMaps,this);b.onreadystatechange=function(){4===b.readyState&&(sre.MathMap.toFetch_--,200===b.status&&c(b.responseText))};b.open(\"GET\",a,!0);b.send()};sre.StoreUtil={};sre.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e=\"\");return function(){d<c&&(d+=1);return e+\" \"+d}};sre.StoreUtil.pauseSeparator=function(a,b){a=parseFloat(b);var c=isNaN(a)?b:a;return function(){return[sre.AuditoryDescription.create({text:\"\",personality:{pause:c}})]}};\nsre.StoreUtil.contentIterator=function(a,b){var c=0<a.length?sre.XpathUtil.evalXPath(\"../../content/*\",a[0]):[];return function(){var d=c.shift(),e=b?[sre.AuditoryDescription.create({text:b},{translate:!0})]:[];if(!d)return e;d=sre.SpeechRuleEngine.getInstance().evaluateNode(d);return e.concat(d)}};sre.ClearspeakUtil={};sre.ClearspeakUtil.numbersToAlpha=function(a){return a.match(/\\d+/)?sre.Messages.NUMBERS.numberToWords(parseInt(a,10)):a};sre.ClearspeakUtil.nodeCounter=function(a,b){b=b.split(\"-\");var c=sre.StoreUtil.nodeCounter(a,b[0]||\"\"),d=b[1]||\"\",e=b[2]||\"\",f=!0;return function(){var g=c();return f?(f=!1,e+g+d):g+d}};\nsre.ClearspeakUtil.isSimpleExpression=function(a){return sre.ClearspeakUtil.isSimpleNumber_(a)||sre.ClearspeakUtil.isSimpleLetters_(a)||sre.ClearspeakUtil.isSimpleDegree_(a)||sre.ClearspeakUtil.isSimpleNegative_(a)||sre.ClearspeakUtil.isSimpleFunction_(a)};\nsre.ClearspeakUtil.isSimpleFunction_=function(a){return a.type===sre.SemanticAttr.Type.APPL&&(a.childNodes[0].role===sre.SemanticAttr.Role.PREFIXFUNC||a.childNodes[0].role===sre.SemanticAttr.Role.SIMPLEFUNC)&&(sre.ClearspeakUtil.isSimple_(a.childNodes[1])||a.childNodes[1].type===sre.SemanticAttr.Type.FENCED&&sre.ClearspeakUtil.isSimple_(a.childNodes[1].childNodes[0]))};\nsre.ClearspeakUtil.isSimpleNegative_=function(a){return a.type===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE&&sre.ClearspeakUtil.isSimple_(a.childNodes[0])&&a.childNodes[0].type!==sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].type!==sre.SemanticAttr.Type.APPL&&a.childNodes[0].type!==sre.SemanticAttr.Type.PUNCTUATED};\nsre.ClearspeakUtil.isSimpleDegree_=function(a){return a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.ENDPUNCT&&2===a.childNodes.length&&a.childNodes[1].role===sre.SemanticAttr.Role.DEGREE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0])||a.childNodes[0].type===sre.SemanticAttr.Type.PREFIXOP&&a.childNodes[0].role===sre.SemanticAttr.Role.NEGATIVE&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0].childNodes[0])||sre.ClearspeakUtil.isNumber_(a.childNodes[0].childNodes[0])))};\nsre.ClearspeakUtil.isSimpleLetters_=function(a){return sre.ClearspeakUtil.isLetter_(a)||a.type===sre.SemanticAttr.Type.INFIXOP&&a.role===sre.SemanticAttr.Role.IMPLICIT&&(2===a.childNodes.length&&(sre.ClearspeakUtil.isLetter_(a.childNodes[0])||sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0]))&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])||3===a.childNodes.length&&sre.ClearspeakUtil.isSimpleNumber_(a.childNodes[0])&&sre.ClearspeakUtil.isLetter_(a.childNodes[1])&&sre.ClearspeakUtil.isLetter_(a.childNodes[2]))};\nsre.ClearspeakUtil.isSimple_=function(a){return a.hasAnnotation(\"clearspeak\",\"simple\")};sre.ClearspeakUtil.isLetter_=function(a){return a.type===sre.SemanticAttr.Type.IDENTIFIER&&(a.role===sre.SemanticAttr.Role.LATINLETTER||a.role===sre.SemanticAttr.Role.GREEKLETTER||a.role===sre.SemanticAttr.Role.OTHERLETTER||a.role===sre.SemanticAttr.Role.SIMPLEFUNC)};sre.ClearspeakUtil.isNumber_=function(a){return a.type===sre.SemanticAttr.Type.NUMBER&&(a.role===sre.SemanticAttr.Role.INTEGER||a.role===sre.SemanticAttr.Role.FLOAT)};\nsre.ClearspeakUtil.isSimpleNumber_=function(a){return sre.ClearspeakUtil.isNumber_(a)||sre.ClearspeakUtil.isSimpleFraction_(a)};\nsre.ClearspeakUtil.isSimpleFraction_=function(a){if(sre.ClearspeakUtil.hasPreference(\"Fraction_Over\")||sre.ClearspeakUtil.hasPreference(\"Fraction_FracOver\")||a.type!==sre.SemanticAttr.Type.FRACTION||a.role!==sre.SemanticAttr.Role.VULGAR)return!1;if(sre.ClearspeakUtil.hasPreference(\"Fraction_Ordinal\"))return!0;var b=parseInt(a.childNodes[0].textContent,10);a=parseInt(a.childNodes[1].textContent,10);return 0<b&&20>b&&0<a&&11>a};\nsre.ClearspeakUtil.hasPreference=function(a){return sre.Engine.getInstance().style===a};sre.ClearspeakUtil.simpleExpression=function(){return new sre.SemanticAnnotator(\"clearspeak\",function(a){return sre.ClearspeakUtil.isSimpleExpression(a)?\"simple\":\"\"})};sre.ClearspeakUtil.simpleNode=function(a){if(!a.hasAttribute(\"annotation\"))return!1;a=a.getAttribute(\"annotation\");return!!/clearspeak:simple$|clearspeak:simple;/.exec(a)};\nsre.ClearspeakUtil.simpleCell_=function(a){if(sre.ClearspeakUtil.simpleNode(a))return!0;if(a.tagName!==sre.SemanticAttr.Type.SUBSCRIPT)return!1;a=a.childNodes[0].childNodes;var b=a[1];return a[0].tagName===sre.SemanticAttr.Type.IDENTIFIER&&(sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.INFIXOP&&b.hasAttribute(\"role\")&&b.getAttribute(\"role\")===sre.SemanticAttr.Role.IMPLICIT&&sre.ClearspeakUtil.allIndices_(b))};\nsre.ClearspeakUtil.isInteger_=function(a){return a.tagName===sre.SemanticAttr.Type.NUMBER&&a.hasAttribute(\"role\")&&a.getAttribute(\"role\")===sre.SemanticAttr.Role.INTEGER};sre.ClearspeakUtil.allIndices_=function(a){return sre.XpathUtil.evalXPath(\"children/*\",a).every(function(b){return sre.ClearspeakUtil.isInteger_(b)||b.tagName===sre.SemanticAttr.Type.IDENTIFIER})};\nsre.ClearspeakUtil.allCellsSimple=function(a){return sre.XpathUtil.evalXPath(a.tagName===sre.SemanticAttr.Type.MATRIX?\"children/row/children/cell/children/*\":\"children/line/children/*\",a).every(sre.ClearspeakUtil.simpleCell_)?[a]:[]};sre.ClearspeakUtil.isSmallVulgarFraction=function(a){return sre.NumbersUtil.vulgarFractionSmall(a,20,11)?[a]:[]};\nsre.ClearspeakUtil.isUnitExpression=function(a){return a.type===sre.SemanticAttr.Type.TEXT||a.type===sre.SemanticAttr.Type.PUNCTUATED&&a.role===sre.SemanticAttr.Role.TEXT&&sre.ClearspeakUtil.isNumber_(a.childNodes[0])&&sre.ClearspeakUtil.allTextLastContent_(a.childNodes.slice(1))||a.type===sre.SemanticAttr.Type.IDENTIFIER&&a.role===sre.SemanticAttr.Role.UNIT||a.type===sre.SemanticAttr.Type.INFIXOP&&(a.role===sre.SemanticAttr.Role.IMPLICIT||a.role===sre.SemanticAttr.Role.UNIT)};\nsre.ClearspeakUtil.allTextLastContent_=function(a){for(var b=0;b<a.length-1;b++)if(a[b].type!==sre.SemanticAttr.Type.TEXT||\"\"!==a[b].textContent)return!1;return a[a.length-1].type===sre.SemanticAttr.Type.TEXT};sre.ClearspeakUtil.unitExpression=function(){return new sre.SemanticAnnotator(\"clearspeak\",function(a){return sre.ClearspeakUtil.isUnitExpression(a)?\"unit\":\"\"})};\nsre.ClearspeakUtil.ordinalExponent=function(a){var b=parseInt(a.textContent,10);return isNaN(b)?a.textContent:10<b?sre.Messages.NUMBERS.simpleOrdinal(b):sre.Messages.NUMBERS.wordOrdinal(b)};sre.ClearspeakUtil.isCapitalLetter=function(a){return\"Lu\"===sre.MathCompoundStore.getInstance().lookupCategory(a.textContent)?[a]:[]};sre.ClearspeakUtil.NESTING_DEPTH=null;\nsre.ClearspeakUtil.nestingDepth=function(a){var b=0,c=a.textContent,d=\"open\"===a.getAttribute(\"role\")?0:1;for(a=a.parentNode;a;)a.tagName===sre.SemanticAttr.Type.FENCED&&a.childNodes[0].childNodes[d].textContent===c&&b++,a=a.parentNode;sre.ClearspeakUtil.NESTING_DEPTH=1<b?sre.Messages.NUMBERS.wordOrdinal(b):\"\";return sre.ClearspeakUtil.NESTING_DEPTH};\nsre.ClearspeakUtil.matchingFences=function(a){var b=a.previousSibling;if(b)var c=a;else b=a,c=a.nextSibling;return c?sre.SemanticAttr.isMatchingFence(b.textContent,c.textContent)?[a]:[]:[]};sre.ClearspeakUtil.insertNesting=function(a,b){if(!b||!a)return a;var c=a.match(/^(open|close) /);return c?c[0]+b+\" \"+a.substring(c[0].length):b+\" \"+a};sre.Grammar.getInstance().setCorrection(\"insertNesting\",sre.ClearspeakUtil.insertNesting);\nsre.ClearspeakUtil.fencedArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath(\"../../children/*\",a);b=b.indexOf(a);return sre.ClearspeakUtil.fencedFactor_(c[b])||sre.ClearspeakUtil.fencedFactor_(c[b+1])?[a]:[]};\nsre.ClearspeakUtil.simpleArguments=function(a){var b=sre.DomUtil.toArray(a.parentNode.childNodes),c=sre.XpathUtil.evalXPath(\"../../children/*\",a);b=b.indexOf(a);return sre.ClearspeakUtil.simpleFactor_(c[b])&&c[b+1]&&(sre.ClearspeakUtil.simpleFactor_(c[b+1])||c[b+1].tagName===sre.SemanticAttr.Type.ROOT||c[b+1].tagName===sre.SemanticAttr.Type.SQRT||c[b+1].tagName===sre.SemanticAttr.Type.SUPERSCRIPT&&c[b+1].childNodes[0].childNodes[0]&&(c[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.NUMBER||\nc[b+1].childNodes[0].childNodes[0].tagName===sre.SemanticAttr.Type.IDENTIFIER)&&(\"2\"===c[b+1].childNodes[0].childNodes[1].textContent||\"3\"===c[b+1].childNodes[0].childNodes[1].textContent))?[a]:[]};sre.ClearspeakUtil.simpleFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.NUMBER||a.tagName===sre.SemanticAttr.Type.IDENTIFIER||a.tagName===sre.SemanticAttr.Type.FUNCTION||a.tagName===sre.SemanticAttr.Type.APPL||a.tagName===sre.SemanticAttr.Type.FRACTION)};\nsre.ClearspeakUtil.fencedFactor_=function(a){return a&&(a.tagName===sre.SemanticAttr.Type.FENCED||a.hasAttribute(\"role\")&&a.getAttribute(\"role\")===sre.SemanticAttr.Role.LEFTRIGHT||sre.ClearspeakUtil.layoutFactor_(a))};sre.ClearspeakUtil.layoutFactor_=function(a){return!!a&&(a.tagName===sre.SemanticAttr.Type.MATRIX||a.tagName===sre.SemanticAttr.Type.VECTOR)};\nsre.ClearspeakUtil.isHyperbolic=function(a){if(a.tagName===sre.SemanticAttr.Type.APPL){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&\"Hyperbolic\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};\nsre.ClearspeakUtil.isLogarithmWithBase=function(a){if(a.tagName===sre.SemanticAttr.Type.SUBSCRIPT){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];if(b&&b.tagName===sre.SemanticAttr.Type.FUNCTION&&\"Logarithm\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent))return[a]}return[]};sre.ClearspeakUtil.wordOrdinal=function(a){return sre.Messages.NUMBERS.wordOrdinal(parseInt(a.textContent,10))};\nsre.ClearspeakUtil.firstCurrency=function(a){var b=sre.XpathUtil.evalXPath(\"children/*[1]\",a)[0];return b&&\"currency\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+\":unit\")?[a]:[]};sre.ClearspeakUtil.lastCurrency=function(a){var b=sre.XpathUtil.evalXPath(\"children/*[last()]\",a)[0];return b&&\"currency\"===sre.MathCompoundStore.getInstance().lookupCategory(b.textContent+\":unit\")?[a]:[]};\nsre.ClearspeakUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.simpleExpression());sre.SemanticAnnotations.getInstance().register(sre.ClearspeakUtil.unitExpression())};sre.ClearspeakFrench={locale:\"fr\",domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFordinalExponent\",sre.ClearspeakUtil.ordinalExponent],[\"CSF\",\n\"CSFwordOrdinal\",sre.Messages.NUMBERS.wordOrdinal],[\"CQF\",\"CQFisCapital\",sre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",\nsre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] \"compress\\u00e9e\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\n\"self::empty\"],'Rule{font{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:\"short\"){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font);  [t] @font (grammar:localFont,pause:\"short\"){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),\n[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"majuscule\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),\n'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),\n'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"et ainsi de suite\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),\n'Rule;ellipsis;Ellipses_AndSoOn;[t] \"et ainsi de suite jusqu\\'\\u00e0\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"\\u00e9valu\\u00e9 \\u00e0\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"\\u00e9valu\\u00e9 \\u00e0\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"moins la m\\u00eame expression \\u00e9valu\\u00e9e \\u00e0\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"tel que\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Divides;[t] \"diviseur de\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Given;[t] \"sachant\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;set-member;default;[t] \"est un\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),\n[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"appartient \\u00e0\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"est un \\u00e9l\\u00e9ment de\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"est dans\"'],'Rule;set-not-member;default;[t] \"n\\'est pas un\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"n\\'appartient pas \\u00e0\"'],\n[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"n\\'est pas un \\u00e9l\\u00e9ment de\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"n\\'est pas dans\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),'Rule,feet,default,[n] children/*[1]; [t] \"feet\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,foot,default,[n] children/*[1]; [t] \"foot\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"inches\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inch,default,[n] children/*[1]; [t] \"inch\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"minutes\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"seconds\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),\n'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"second\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"degrees\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] \"degree\"; [p] (pause:short),self::punctuation,@role=\"degree\",children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"minutes\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"seconds\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"second\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"feet\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] \"foot\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"inches\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] \"inch\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],[\"Rule\",\"appl\",\"default\",'[n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),'Rule,appl-simple,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),\n[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"fois\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"de\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),'Rule{function-prefix-inverse{default{[p] (pause:\"short\");  [n] children/*[1]/children/*[1]; [t] \"inverse de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:\"short\"); [t] \"la reciproque de\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-prefix-inverse{Trig_Reciprocal{[p] (pause:\"short\"); [t] \"la reciproque de\"; [n] children/*[1]/children/*[1];[n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{contains(children/*[2]/@annotation, \"clearspeak:simple\"){children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"inverse\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-inverse{Functions_Reciprocal{[t] \"la reciproque de\"; [n] children/*[1]{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"\\u00e0 l\\'exposant\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"fin exposant\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\"),self::superscript,not(descendant::superscript)'.split(\",\"),\n'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\") ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"\\u00e0 la\"; [n] children/*[2] (grammar:ordinal); [t] \"puissance\" (pause:\"medium\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"\\u00e0 la puissance\"; [n] children/*[2]; [p] (pause:\"medium\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\"],CQFisCaptial'.split(\",\"),\n'Rule{exponent{default{[n] text() (join:\"-\"); [t] \"i\\u00e8me\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),\n'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_OrdinalPower;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"au carr\\u00e9\",self::superscript,children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),\n'Rule,cube,default,[n] children/*[1]; [t] \"au cube\",self::superscript,children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"le point avec coordon\\u00e9es\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"un intervalle de\"; [n] children/*[1]/children/*[1]; [t] \"\\u00e0\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]; [t] \"ni\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"inclus\"; [p] (pause:\"short\"); [t] \"mais sans inclure\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"mais avec\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"et\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"sans inclure\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[1]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"avec\"; [n] children/*[1]/children/*[3]; [t] \"inclus\"{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t] \"ensemble vide\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"ensemble des\"; [n] children/*[1]/children/*[1]; [t] \"tel que\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"ensemble\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"ensemble de\"; [n] children/*[1]/children/*[1]; [t] \"tel que\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"sub\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"sub\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short); [t] \"fin fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_FracOver\",'[p] (pause:short); [t] \"fraction\"; [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"par\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short); [t] \"fin fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"fraction avec num\\u00e9rateur\"; [n] children/*[1]; [p] (pause:short); [t] \"et d\\u00e9nominateur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"fin fraction\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),\n'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),[\"Rule\",\"sqrt\",\"default\",'[t] \"la racine carr\\u00e9e de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,negative-sqrt,default,[t] \"la racine carr\\u00e9e n\\u00e9gative de\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e n\\u00e9gative de\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"la racine carr\\u00e9e positive de\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule,cube,default,[t] \"la racine cubique de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"la racine cubique de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n[\"Rule\",\"root\",\"default\",'[t] \"la\"; [n] children/*[1] (grammar:ordinal); [t] \"racine de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"la\"; [n] children/*[1] (grammar:ordinal); [t] \"racine de\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"fin racine\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"positif\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"la mesure de l\\'\" (join:\"\"); [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),\n[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"le\"; [n] self::* (grammar:!prefix); [t] \"de\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\" or descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\n\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),\n'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),\n'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"les nombres entier naturel\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule;integers;default;[t] \"les nombres entiers\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;rational-numbers;default;[t] \"les Nombres rationnels\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"les nombres r\\u00e9els\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;complex-numbers;default;[t] \"les nombres complexes\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule;natural-numbers-with-zero;default;[t] \"les nombres entiers naturel avec zero\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\"'.split(\";\"),'Rule;positive-integers;default;[t] \"les nombres entiers positif\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;positive-integers;default;[t] \"les nombres entiers n\\u00e9gatif\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-rational-numbers;default;[t] \"les nombres rationnels positif\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"les nombres rationnels n\\u00e9gatif\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"la valeur absolue de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"la valeur absolue de\"; [n] children/*[1]; [p] (pause: short); [t] \"fin de valeur absolue\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"la cardinalit\\u00e9 de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"le d\\u00e9terminant de\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"la matrice de dimension\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"la matrice de dimension\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*);  [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"la matrice de dimension 1 par 1 avec \\u00e9l\\u00e9ment\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"le d\\u00e9terminant de la matrice de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{determinant-simple{default{[t] \"le d\\u00e9terminant de la matrice de dimension\"; [t] count(children/*);  [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),[\"Rule\",\"matrix-vector\",\"default\",'[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"la matrice colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"la matrice ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row-simple\",\n\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],\n'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),[\"Rule\",\"vector\",\"Matrix_Vector\",\n'[t] \"le vecteur colonne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"le vecteur colonne de dimension\"; [t] count(children/*); [t] \"par\";  [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"le vecteur ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"colonne-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"le vecteur ligne de dimension\"; [t] count(children/*); [t] \"par\"; [t] count(children/*[1]/children/*); [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin matrice\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin vecteur\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin vecteur\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[2]/children/*[1]; [t] \"parmi\"; [n] children/*[1]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"lignes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"cas\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Ligne-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"vide\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"vide\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Cas-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"cas\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Cas-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"\\u00e9quations\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"\\u00c9quation-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \" \\u00e9tapes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\" \\u00c9tape-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"colonnes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"rang\\u00e9e-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"contraintes\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Contrainte-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[t] \"le\"; [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"de\"; [n] children/*[2];[t] \"\\u00e0\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"sous\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"le\"; [n] children/*[1]; [t] \"de\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],[\"Rule\",\n\"overscript\",\"default\",'[n] children/*[1]; [t] \"sous\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"\\u00e0\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",'[n] children/*[1]; [t] \"sur\"; [n] children/*[2]; [p] (pause:short)',\n\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"de\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"et\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"nombre\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"virgule suivi par les chiffres r\\u00e9p\\u00e9t\\u00e9s\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"suivi par les chiffres r\\u00e9p\\u00e9t\\u00e9s\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"virgule suivi par le chiffre r\\u00e9p\\u00e9t\\u00e9\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"la d\\u00e9cimale\"; [n] children/*[1] (grammar:spaceout); [t] \"suivi par le chiffre r\\u00e9p\\u00e9t\\u00e9\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"point\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"le segment\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"le complexe conjugu\\u00e9 de\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"est d\\u00e9fini par\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[t] \"signe\"; [n] children/*[1] ; [t] \"avec\"; [n] children/*[2]; [t] \"dessus\",self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"factorielle\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"exposant gauche\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"exposant gauche\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"indice gauche\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"indice gauche\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"exposant droite\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"exposant droite\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"indice droite\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"indice droite\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[t] \"combinaison de\"; [n] children/*[3] (grammar:combinatorics); [t] \"parmi\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[t] \"permutation de\"; [n] children/*[2] (grammar:combinatorics); [t] \"parmi\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\")]};\nsre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakGerman={locale:\"de\",domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFwordOrdinal\",sre.ClearspeakUtil.wordOrdinal],[\"CQF\",\"CQFisCapital\",\nsre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber]],rules:['Rule{collapsed{default{[t] \"kollapiert\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),\n[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\"self::empty\"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::*{name(self::*)!=\"number\"{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),[\"SpecializedRule\",\"font\",\n\"default\",\"Caps_SayCaps\"],'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),[\"SpecializedRule\",\"font-identifier\",\n\"default\",\"Caps_SayCaps\"],'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\";self::*'.split(\";\"),[\"SpecializedRule\",\"omit-font\",\"default\",\"Caps_SayCaps\"],'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!=\"number\"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),\n[\"SpecializedRule\",\"font-double-struck\",\"default\",\"Caps_SayCaps\"],'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"gro\\u00dfes\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),\n'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),\n'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),\n'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"und so weiter\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"und so weiter bis\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),\n'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"minus des gleichen Ausdrucks ausgewertet f\\u00fcr\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"so dass\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Divides;[t] \"teilt\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-such-that;VerticalLine_Given;[t] \"f\\u00fcr die gilt\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;set-member;default;[t] \"in\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),\n[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"Element von\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"geh\\u00f6rt zu\"'],'Rule;set-not-member;default;[t] \"nicht in\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"kein Element von\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"geh\\u00f6rt nicht zu\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),\n'Rule,feet,default,[n] children/*[1]; [t] \"Fu\\u00df\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"Zoll\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"Minuten\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),\n'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"Minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"Sekunden\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"Sekunde\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"Grad\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"Minuten\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"Minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"Sekunden\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"Sekunde\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"Fu\\u00df\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"Zoll\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],'Rule{function-article{default{[t] \"der\" (grammar:article); [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\")'.split(\"{\"),'Rule{function-article-fem{default{[t] \"die\" (grammar:article); [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\"){text()=\"det\" or text()=\"dim\" or text()=\"tr\"'.split(\"{\"),[\"Rule\",\"appl\",\n\"default\",'[n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),'Rule,appl-simple,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),\n[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"mal\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"von\"; [p] (pause:\"short\"); [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),\n'Rule{function-prefix-inverse{default{[p] (pause:\"short\"); [t] \"der\" (grammar:article); [t] \"inverse\" (grammar:masculine); [n] children/*[1]/children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"Arkus\" (join:\"\"); [n] children/*[1]/children/*[1] (grammar:lowercase); [t] \"von\"; [n] children/*[2] (grammar:case=\"dative\"); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"invers\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,superscript-prefix-function,default,[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-prefix-function,default,[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"identifier\"'.split(\",\"),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"mit Exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"Ende Exponent\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,default,[n] children/*[1]; [t] \"mit Exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"Ende Exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),\n'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] \"hoch\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule,superscript-simple-power,Exponent_OrdinalPower,[n] children/*[1]; [t] \"potenziert mit\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-power-end,Exponent_OrdinalPower,[n] children/*[1]; [t] \"potenziert mit\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-power;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-power\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-power;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule{superscript-ordinal-power{Exponent_OrdinalPower{[n] children/*[1]; [t] \"zur\"; [n] children/*[2] (grammar:ordinal,join:\"\"); [t] \"n Potenz\" (pause:\"short\"){self::superscript{name(children/*[2])=\"number\"{children/*[2][@role=\"integer\"]'.split(\"{\"),[\"Aliases\",\"superscript-ordinal-power\",\"self::superscript\",'name(children/*[2])=\"identifier\"','children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'],'Rule{superscript-non-ordinal{Exponent_OrdinalPower{[n] children/*[1]; [t] \"zur negativ\"; [n] children/*[2]/children/*[1] (grammar:ordinal, join:\"\"); [t] \"n Potenz\" (pause:\"short\"){self::superscript{children/*[2][@role=\"negative\"]{name(children/*[2]/children/*[1])=\"number\"{children/*[2]/children/*[1][@role=\"integer\"]'.split(\"{\"),\n'Rule{superscript-simple-function{Exponent_OrdinalPower{[t] \"die\" (grammar:article); [n] children/*[2] (grammar:ordinal); [t] \"Potenz von\" (pause:\"short\"); [n] children/*[1]{self::superscript{name(children/*[1])=\"identifier\"{children/*[1][@role=\"simple function\"]{children/*[2][@role!=\"prime\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule{exponent{default{[n] text() (join:\"\"); [t] \"te\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),'Rule;exponent;default;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),\n'Rule;exponent;default;[t] \"nullte\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,superscript-simple-exp,Exponent_Exponent,[n] children/*[1]; [t] \"mit Exponent\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-exp-end,Exponent_Exponent,[n] children/*[1]; [t] \"mit Exponent\"; [n] children/*[2]; ,self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n'Aliases;superscript-simple-exp;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),[\"Aliases\",\"superscript-simple-exp\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],\n'Aliases;superscript-simple-exp;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"Quadrat\",self::superscript,children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"Kubik\",self::superscript,children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*,self::*'.split(\",\"),\n'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"der Punkt mit Koordinaten\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"das Interval von\"; [n] children/*[1]/children/*[1]; [t] \"bis\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]; [t] \"und\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"aber ohne\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"aber einschlie\\u00dflich\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]; [t] \"und\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"ohne\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"einschlie\\u00dflich\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t]  \"die leere Menge\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"die Menge aller\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"die Menge\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"die Menge von\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"Index\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"Basis\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"Index\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short); [t] \"Ende Bruch\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\n\"Fraction_FracOver\",'[p] (pause:short); [t] \"Bruch\"; [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"per\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short); [t] \"Ende Bruch\"; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"Bruch mit Z\\u00e4hler\"; [n] children/*[1]; [p] (pause:short); [t] \"und Nenner\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"Ende Bruch\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),\n'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"geteilt durch\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),\n[\"Rule\",\"sqrt\",\"default\",'[t] \"Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,negative-sqrt,default,[t] \"negative Quadratwurzel aus\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),\n'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"negative Quadratwurzel aus\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"positive Quadratwurzel aus\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,cube,default,[t] \"Kubikwurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"Kubikwurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"die\" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] \"Wurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\n\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"die\" (grammar:article); [n] children/*[1] (grammar:ordinal); [t] \"Wurzel aus\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"Wurzel Ende\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"plus\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"das Ma\\u00df des Winkels\"; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\n\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"der\" (grammar:article); [n] self::* (grammar:!prefix); [t] \"von\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\"{self::*{self::*{self::*'.split(\"{\"),'Rule{set-prefix-operators{default{[t] \"die\" (grammar:article); [n] self::* (grammar:!prefix); [t] \"von\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\n\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),\n'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),\n'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"die nat\\u00fcrlichen Zahlen\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;integers;default;[t] \"die ganzen Zahlen\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;rational-numbers;default;[t] \"die rationalen Zahlen\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"die reellen Zahlen\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;complex-numbers;default;[t] \"die komplexen Zahlen\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),\n'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),\n'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*,self::*,self::*'.split(\",\"),'Rule;natural-numbers-with-zero;default;[t] \"die nat\\u00fcrlichen Zahlen mit Null\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-integers;default;[t] \"die positiven ganzen Zahlen\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;positive-integers;default;[t] \"die negativen ganzen Zahlen\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-rational-numbers;default;[t] \"die positiven rationalen Zahlen\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"die negativen rationalen Zahlen\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"der Betrag von\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"der Betrag von\"; [n] children/*[1]; [p] (pause: short); [t] \"Ende Betrag\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"die M\\u00e4chtigkeit der Menge\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"die Determinante von\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"die 1 mal 1 Matrize mit Element\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"die\" (grammar:article); [t] \"Determinante der\"; [t] count(children/*); [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{determinant-simple{default{[t] \"die\" (grammar:article); [t] \"Determinante der\"; [t] count(children/*); [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Matrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),[\"Rule\",\"matrix-vector\",\"default\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenmatrize\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\n\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"die\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenmatrize\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\n\"matrix-row-simple\",\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\n\"self::cell\"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),[\"Rule\",\"vector\",\n\"Matrix_Vector\",'[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Spaltenvektor\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\"; [t] count(children/*[1]/children/*); [t] \"Spaltenvektor\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenvektor\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Spalte-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"der\" (grammar:article); [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Zeilenvektor\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Matrize\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Vektor\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Vektor\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"Zeilen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"F\\u00e4lle\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"leer\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"leer\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Fall-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"F\\u00e4lle\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Fall-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"Gleichungen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Gleichung-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \"Rechenschritte\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Schritt-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"Zeilen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Zeile-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"Bedingungen\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Bedingung-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"von\"; [n] children/*[2];[t] \"bis\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"unter\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"das\"; [n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],\n[\"Rule\",\"overscript\",\"default\",'[n] children/*[1]; [t] \"unter\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"bis\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",\n'[n] children/*[1]; [t] \"\\u00fcber\"; [n] children/*[2]; [p] (pause:short)',\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"von\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Zahl\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"Komma mit Periode\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"mit Periode\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"Komma mit Periode\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"Dezimalbruch\"; [n] children/*[1] (grammar:spaceout); [t] \"mit Periode\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"Komma\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"die Strecke\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"die komplexe Konjugation von\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"ist definiert als\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] \"Zeichen mit dar\\u00fcberstehendem\"; [n] children/*[2],self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"Fakult\\u00e4t\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"linker oberer Index\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"linker oberer Index\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"linker unterer Index\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"linker unterer Index\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"rechter oberer Index\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"rechter oberer Index\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"rechter unterer Index\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"rechter unterer Index\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] \"aus\"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[4] (grammar:combinatorics); [t] \"Permutionen von\"; [n] children/*[2] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\")]};\nsre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.ClearspeakRules={domain:\"clearspeak\",functions:[[\"CTXF\",\"CTXFpauseSeparator\",sre.StoreUtil.pauseSeparator],[\"CTXF\",\"CTXFnodeCounter\",sre.ClearspeakUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.ClearspeakUtil.isSmallVulgarFraction],[\"CQF\",\"CQFcellsSimple\",sre.ClearspeakUtil.allCellsSimple],[\"CSF\",\"CSFordinalExponent\",sre.ClearspeakUtil.ordinalExponent],[\"CSF\",\"CSFwordOrdinal\",\nsre.ClearspeakUtil.wordOrdinal],[\"CQF\",\"CQFisCapital\",sre.ClearspeakUtil.isCapitalLetter],[\"CQF\",\"CQFmatchingFences\",sre.ClearspeakUtil.matchingFences],[\"CSF\",\"CSFnestingDepth\",sre.ClearspeakUtil.nestingDepth],[\"CQF\",\"CQFfencedArguments\",sre.ClearspeakUtil.fencedArguments],[\"CQF\",\"CQFsimpleArguments\",sre.ClearspeakUtil.simpleArguments],[\"CQF\",\"CQFisHyperbolic\",sre.ClearspeakUtil.isHyperbolic],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase],[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],\n[\"CQF\",\"CQFfirstCurrency\",sre.ClearspeakUtil.firstCurrency],[\"CQF\",\"CQFlastCurrency\",sre.ClearspeakUtil.lastCurrency]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*[@alternative]{not(contains(@grammar, \"collapsed\"))'.split(\"{\"),[\"Rule\",\"direct-speech\",\"default\",\"[t] @ext-speech\",\"self::*[@ext-speech]\"],[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),\n[\"Rule\",\"omit-empty\",\"default\",'[p] (pause:\"short\")',\"self::empty\"],'Rule{font{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] self::* (grammar:ignoreFont=@font,pause:\"short\"){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] self::* (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),\n'Rule{german-font{default{[t] \"German\"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"fraktur\"'.split(\"{\"),'Rule{german-font{default{[t] \"bold German\"; [n] self::* (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"bold-fraktur\"'.split(\"{\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;capital;default;[n] text() (pitch:0.6,grammar:ignoreCaps=\"cap\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\" or @role=\"simple function\";CQFisCapital'.split(\";\"),\n'Rule;capital;Caps_SayCaps;[n] text();self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital'.split(\";\"),'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text(){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule;capital;Caps_SayCaps;[n] text() (pause:\"short\");self::identifier;@role=\"latinletter\" or @role=\"greekletter\";CQFisCapital;following-sibling::*[1]'.split(\";\"),\n'Rule{capital{Caps_SayCaps{[p] (pause:\"short\"); [n] text() (pause:\"short\"){self::identifier{@role=\"latinletter\" or @role=\"greekletter\"{CQFisCapital{preceding-sibling::*[1]{following-sibling::*[1]{not(name(preceding-sibling::*[1])=\"function\"){not(contains(@grammar, \"angle\"))'.split(\"{\"),'Rule,punctuation-lr,default,[p] (pause:\"short\"); [n] text() (pause:\"short\"),self::punctuation,@role=\"comma\"'.split(\",\"),'Rule;punctuation;default;[n] text();self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children);not(following-sibling::*[1]/children)'.split(\";\"),\n'Rule,punctuation-l,default,[p] (pause:\"short\"); [n] text(),self::punctuation,@role=\"comma\",not(following-sibling::*[1]/children)'.split(\",\"),'Rule;punctuation-r;default;[n] text() (pause:\"short\");self::punctuation;@role=\"comma\";not(preceding-sibling::*[1]/children)'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"and so on\";self::punctuation;@role=\"ellipsis\";not(following-sibling::*[1]);not(preceding-sibling::*[last()][@role=\"ellipsis\"])'.split(\";\"),'Rule;ellipsis;Ellipses_AndSoOn;[t] \"and so on up to\";self::punctuation;@role=\"ellipsis\";preceding-sibling::*[1];following-sibling::*[1]'.split(\";\"),\n'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"evaluated at\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"subscript\"'.split(\",\"),'Rule,vbar-evaluated,default,[n] children/*[1]; [p] (pause:\"short\"); [t] \"evaluated at\"; [n] content/*[1]/children/*[2]; [p] (pause:\"short\"); [t] \"minus the same expression evaluated at\"; [n] content/*[1]/children/*[1]/children/*[2]; [p] (pause:\"short\"),self::punctuated,@role=\"endpunct\",content/*[1][@role=\"vbar\"],content/*[1][@embellished],name(content/*[1])=\"superscript\",name(content/*[1]/children/*[1])=\"subscript\"'.split(\",\"),\n'Rule;vbar-such-that;VerticalLine_SuchThat;[t] \"such that\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-divides;default;[t] \"divides\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"]);parent::*/parent::*[@role=\"sequence\"]'.split(\";\"),'Rule;vbar-divides;VerticalLine_Divides;[t] \"divides\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),'Rule;vbar-given;VerticalLine_Given;[t] \"given\";self::punctuation;@role=\"vbar\";not(parent::*/parent::*[@embellished=\"punctuation\"])'.split(\";\"),\n'Rule;set-member;default;[t] \"in\";self::operator;@role=\"set extended\";text()=\"\\u2208\" or text()=\"\\u220a\"'.split(\";\"),[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"member of\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"element of\"'],[\"SpecializedRule\",\"set-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"belonging to\"'],'Rule;set-not-member;default;[t] \"not in\";self::operator;@role=\"set extended\";text()=\"\\u2209\"'.split(\";\"),[\"SpecializedRule\",\n\"set-not-member\",\"default\",\"SetMemberSymbol_Member\",'[t] \"not member of\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Element\",'[t] \"not element of\"'],[\"SpecializedRule\",\"set-not-member\",\"default\",\"SetMemberSymbol_Belongs\",'[t] \"not belonging to\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"],self::*'.split(\",\"),'Rule,feet,default,[n] children/*[1]; [t] \"feet\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,foot,default,[n] children/*[1]; [t] \"foot\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inches,default,[n] children/*[1]; [t] \"inches\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),'Rule,inch,default,[n] children/*[1]; [t] \"inch\",self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"number\",children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"],not(preceding-sibling::*[@role=\"degree\"])'.split(\",\"),\n'Rule,minutes,default,[p] (pause:short); [n] children/*[1]; [t] \"minutes\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"]'.split(\",\"),'Rule,minute,default,[p] (pause:short); [n] children/*[1]; [t] \"minute\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,seconds,default,[p] (pause:short); [n] children/*[1]; [t] \"seconds\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"]'.split(\",\"),\n'Rule,second,default,[p] (pause:short); [n] children/*[1]; [t] \"second\",self::superscript,children/*[2][@role=\"prime\"],preceding-sibling::*[@role=\"degree\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),'Rule,degrees-angle,Prime_Angle,[n] children/*[1]; [t] \"degrees\"; [p] (pause:short),self::punctuation,@role=\"degree\"'.split(\",\"),'Rule,degree-angle,Prime_Angle,[n] children/*[1]; [t] \"degree\"; [p] (pause:short),self::punctuation,@role=\"degree\",children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{minutes-angle{Prime_Angle{[n] children/*[1]; [t] \"minutes\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,minute-angle,Prime_Angle,[n] children/*[1]; [t] \"minute\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{seconds-angle{Prime_Angle{[n] children/*[1]; [t] \"seconds\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,second-angle,Prime_Angle,[n] children/*[1]; [t] \"second\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{feet-length{Prime_Length{[n] children/*[1]; [t] \"feet\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2032\"]'.split(\"{\"),'Rule,foot-length,Prime_Length,[n] children/*[1]; [t] \"foot\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2032\"],children/*[1][text()=\"1\"]'.split(\",\"),\n'Rule{inches-length{Prime_Length{[n] children/*[1]; [t] \"inches\"; [p] (pause:short){self::superscript{children/*[2][@role=\"prime\"]{name(children/*[1])=\"number\" or (children/*[1][@role=\"latinletter\"] and \"\"=translate(children/*[1]/text(),\"abcdefghijklmnopqrstuvwxyz\", \"\")){children/*[2][text()=\"\\u2033\"]'.split(\"{\"),'Rule,inch-length,Prime_Length,[n] children/*[1]; [t] \"inch\"; [p] (pause:short),self::superscript,children/*[2][@role=\"prime\"],children/*[2][text()=\"\\u2033\"],children/*[1][text()=\"1\"]'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],'Rule{function-article{default{[t] \"the\"; [n] text(){self::function{@role=\"prefix function\"{contains(@grammar, \"addArticle\")'.split(\"{\"),[\"Rule\",\"appl\",\"default\",'[n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,appl-simple,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"appl\"'.split(\",\"),\n'Rule,appl-simple,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"simple function\",name(children/*[2])=\"fenced\",name(children/*[2]/children/*[1])=\"appl\"'.split(\",\"),[\"Rule\",\"appl\",\"Functions_None\",'[p] (pause:\"short\"); [n] children/*[1]; [t] \"times\"; [n] children/*[2]; [p] (pause:\"short\")',\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,@role=\"prefix function\"'.split(\",\"),'Rule{binary-operation{ImpliedTimes_MoreImpliedTimes{[n] . (grammar:impliedTimes); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{parent::*/parent::infixop[@role=\"implicit\"]{following-sibling::*{not(contains(@grammar, \"impliedTimes\"))'.split(\"{\"),\n'Rule{function-prefix-simple-arg{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{name(children/*[2])=\"fenced\"{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[2]/children/*[1])!=\"number\"{name(children/*[2]/children/*[1])!=\"identifier\"{name(children/*[2]/children/*[1])!=\"appl\"'.split(\"{\"),'Rule,function-prefix-embell,default,[p] (pause:\"short\"); [n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"); ,self::appl,@role=\"prefix function\",name(children/*[1])!=\"function\"'.split(\",\"),\n'Rule{function-prefix-fenced-or-frac-arg{default{[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\"))){self::*'.split(\"{\"),'Rule,function-prefix-subscript,default,[p] (pause:\"short\"); [n] children/*[1] (grammar:addArticle); [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"subscript\",self::*'.split(\",\"),\n'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]{self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(following-sibling::*){not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-ln{default{[n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{name(children/*[2])=\"fenced\"{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),\n'Rule;function-ln;Log_LnAsNaturalLog;[n] . (grammar:NatLog);self::appl;@role=\"prefix function\";content/*[2][text()=\"ln\"];not(following-sibling::*);not(contains(@grammar, \"NatLog\"))'.split(\";\"),'Rule{function-ln{Log_LnAsNaturalLog{[n] . (grammar:NatLog); [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{content/*[2][text()=\"ln\"]{not(contains(@grammar, \"NatLog\"))'.split(\"{\"),'Rule{function-prefix-as-exp{default{[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(parent::*/parent::*)=\"superscript\"{not(following-sibling::*){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or name(children/*[2])=\"fraction\" or (name(children/*[2])!=\"fenced\" and not(contains(children/*[2]/@annotation, \"clearspeak:simple\")))'.split(\"{\"),\n'Rule,function-prefix-subscript-as-exp,default,[n] children/*[1]; [t] \"of\"; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(parent::*/parent::*)=\"superscript\",not(following-sibling::*),name(children/*[1])=\"subscript\"'.split(\",\"),'Rule,function-prefix-hyper,default,[p] (pause:\"short\"); [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",CQFisHyperbolic'.split(\",\"),'Rule{function-prefix-inverse{default{[p] (pause:\"short\"); [t] \"the inverse\"; [n] children/*[1]/children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule,appl-triginverse,Trig_TrigInverse,[p] (pause:\"short\"); [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"),self::appl,@role=\"prefix function\",name(children/*[1])=\"superscript\",name(children/*[1]/children/*[2])=\"prefixop\",children/*[1]/children/*[2][@role=\"negative\"],children/*[1]/children/*[2]/children/*[1][text()=\"1\"]'.split(\",\"),'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc-simple{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{name(children/*[2])=\"fenced\"{children/*[2]/children/*[1][@role=\"prefix function\"]{contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"functions_none\"))'.split(\"{\"),\n'Rule{function-prefix-arc{Trig_ArcTrig{[p] (pause:\"short\"); [t] \"arc\"; [n] children/*[1]/children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:\"short\"){self::appl{@role=\"prefix function\"{name(children/*[1])=\"superscript\"{name(children/*[1]/children/*[2])=\"prefixop\"{children/*[1]/children/*[2][@role=\"negative\"]{children/*[1]/children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\")){(name(children/*[2])=\"fenced\" and not(contains(children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"))) or (name(children/*[2])=\"fraction\" and children/*[2][@role!=\"vulgar\"])'.split(\"{\"),\n'Rule{function-inverse{default{[n] children/*[1]; [t] \"inverse\"{self::superscript{@role=\"prefix function\" or @role=\"simple function\"{name(children/*[2])=\"prefixop\"{children/*[2][@role=\"negative\"]{children/*[2]/children/*[1][text()=\"1\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule,superscript-prefix-function,default,[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-prefix-function,default,[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\"; [n] children/*[1],self::superscript,@role=\"prefix function\",name(children/*[2])=\"identifier\"'.split(\",\"),'Rule;function-inverse;Functions_None;[n] . (grammar:functions_none);self::superscript;@role=\"prefix function\" or @role=\"simple function\";name(children/*[2])=\"prefixop\";children/*[2][@role=\"negative\"];children/*[2]/children/*[1][text()=\"1\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\")',\"self::superscript\"],'Rule,superscript-simple-exponent,default,[n] children/*[1]; [t] \"raised to the\"; [n] children/*[2]; [t] \"power\" (pause:\"short\"),self::superscript,not(descendant::superscript)'.split(\",\"),'Rule,superscript-simple-exponent-end,default,[n] children/*[1]; [t] \"raised to the\"; [n] children/*[2]; [t] \"power\",self::superscript,not(descendant::superscript),not(following-sibling::*)'.split(\",\"),\n'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"number\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),'Aliases;superscript-simple-exponent;self::superscript;children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"];name(children/superscript/children/*[1])=\"fraction\";contains(children/superscript/children/*[1]/@annotation, \"clearspeak:simple\")'.split(\";\"),\n[\"Aliases\",\"superscript-simple-exponent\",\"self::superscript\",'children/superscript/children/*[2][text()=\"2\"] or children/superscript/children/*[2][text()=\"3\"]','name(children/superscript/children/*[1])=\"identifier\"'],'Aliases;superscript-simple-exponent;self::superscript;children/*[2][@role=\"implicit\"];count(children/*[2]/children/*)=2;contains(children/*[2]/children/*[1]/@annotation, \"simple\");name(children/*[2]/children/*[2])=\"superscript\";(name(children/*[2]/children/*[2]/children/*[1])=\"number\" and contains(children/*[2]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\")) or name(children/*[2]/children/*[2]/children/*[1])=\"identifier\";children/*[2]/children/*[2]/children/*[2][text()=\"2\"] or children/*[2]/children/*[2]/children/*[2][text()=\"3\"]'.split(\";\"),\n'Rule,superscript-ordinal,default,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\" (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),[\"Aliases\",\"superscript-ordinal\",\"self::superscript\",'name(children/*[2])=\"identifier\"','children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'],'Rule,superscript-non-ordinal,default,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [t] \"power\" (pause:\"short\"),self::superscript,children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule{superscript-simple-function{default{[t] \"the\"; [n] children/*[2] (grammar:ordinal); [t] \"power of\" (pause:\"short\"); [n] children/*[1]{self::superscript{name(children/*[1])=\"identifier\"{children/*[1][@role=\"simple function\"]{children/*[2][@role!=\"prime\"]{not(contains(@grammar, \"functions_none\"))'.split(\"{\"),'Rule;superscript-simple-function;Functions_None;[n] . (grammar:functions_none);self::superscript;name(children/*[1])=\"identifier\";children/*[1][@role=\"simple function\"];not(contains(@grammar, \"functions_none\"))'.split(\";\"),\n'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_Ordinal,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,Exponent_Ordinal,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\"),'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2]; [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],name(children/*[2]/children/*[1])=\"number\",children/*[2]/children/*[1][@role=\"integer\"]'.split(\",\"),\n'Rule,superscript-ordinal,Exponent_OrdinalPower,[n] children/*[1]; [t] \"to the\"; [n] children/*[2] (grammar:ordinal); [t] \"power\"; [p] (pause:\"short\"),self::superscript,name(children/*[2])=\"identifier\",children/*[2][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]'.split(\",\"),'Rule,superscript-ordinal-default,Exponent_OrdinalPower,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),\n[\"Rule\",\"superscript-power\",\"Exponent_AfterPower\",'[n] children/*[1]; [t] \"raised to the power\"; [n] children/*[2] (grammar:afterPower); [p] (pause:\"short\")',\"self::superscript\"],'Rule,superscript-power-default,Exponent_AfterPower,[n] children/*[1]; [t] \"raised to the exponent\" (pause:\"short\"); [n] children/*[2]; [p] (pause:\"short\"); [t] \"end exponent\" (pause:\"short\"),self::superscript,children//superscript'.split(\",\"),'Rule{exponent{default{[n] text() (join:\"-\"); [t] \"th\"{self::identifier{contains(@grammar, \"ordinal\")'.split(\"{\"),\n'Rule;exponent;default;[t] CSFordinalExponent;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),'Rule;exponent;Exponent_Ordinal;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule;exponent;Exponent_OrdinalPower;[t] CSFwordOrdinal;self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()!=\"0\"'.split(\";\"),\n'Rule;exponent;Exponent_OrdinalPower;[t] \"zero\";self::number;@role=\"integer\";contains(@grammar, \"ordinal\");text()=\"0\"'.split(\";\"),'Rule,square,default,[n] children/*[1]; [t] \"squared\",self::superscript,@role!=\"unit\",children/*[2][text()=\"2\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\",self::superscript,@role!=\"unit\",children/*[2][text()=\"3\"],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),self::*'.split(\",\"),\n'Rule;paren-simple;default;[n] children/*[1];self::fenced;@role=\"leftright\";contains(children/*[1]/@annotation, \"clearspeak:simple\");name(../..)!=\"superscript\" and name(../..)!=\"subscript\"'.split(\";\"),'Rule;paren-simple-exp;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../..)=\"superscript\";children/*[1][@role=\"integer\"] or children/*[1][@role=\"float\"] or (children/*[1][@role=\"vulgar\"] and contains(children/*[1]/@annotation, \"clearspeak:simple\")) or children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"]'.split(\";\"),\n'Rule;paren-simple-nested-func;default;[n] children/*[1];self::fenced;@role=\"leftright\";name(../*[1])=\"identifier\" or name(../*[1])=\"function\";parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"];children/*[1][@role=\"simple function\" or @role=\"prefix function\"];contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\";\"),\n'Rule{paren-simple-nested-func-no-bracket{Functions_None{[n] children/*[1];{self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{name(children/*[1]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[1])=\"function\"{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\"){name(children/*[1]/children/*[2]/children/*[1])=\"identifier\" or name(children/*[1]/children/*[2]/children/*[1])=\"number\"'.split(\"{\"),\n'Rule,fences-open-close,default,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule{paren-simple-nested-func{default{[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{not(contains(children/*[1]/@annotation, \"clearspeak:simple\"))'.split(\"{\"),\n'Rule{paren-simple-nested-func{Functions_None{[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"){self::fenced{@role=\"leftright\"{name(../*[1])=\"identifier\" or name(../*[1])=\"function\"{parent::*/parent::*[@role=\"simple function\" or @role=\"prefix function\"]{children/*[1][@role=\"simple function\" or @role=\"prefix function\"]{contains(children/*[1]/children/*[2]/children/*[1]/@annotation, \"clearspeak:simple\") or name(children/*[1]/children/*[2]/children/*[1])=\"subscript\" or name(children/*[1]/children/*[2]/children/*[1])=\"superscript\" or children/*[1]/children/*[2]/children/*[1][@role=\"vulgar\"] '.split(\"{\"),\n[\"SpecializedRule\",\"fences-open-close\",\"default\",\"Paren_Speak\"],[\"Aliases\",\"fences-open-close\",\"self::fenced\",'@role=\"composed function\"'],[\"Rule\",\"fence-silent\",\"Paren_Silent\",'[p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\")',\"self::fenced\"],'Rule,fences-open-close,ImpliedTimes_None,[p] (pause:\"short\"); [n] content/*[1] (grammar:spokenFence); [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2] (grammar:spokenFence); [p] (pause:\"short\"),self::fenced,@role=\"leftright\",parent::*/parent::*[@role!=\"simple function\"],parent::*/parent::*[@role!=\"prefix function\"]'.split(\",\"),\n'Rule;fence-nesting;Paren_SpeakNestingLevel;[n] text() (grammar:insertNesting=CSFnestingDepth);self::fence;contains(@grammar, \"spokenFence\");CQFmatchingFences'.split(\";\"),[\"Rule\",\"fence-no-nesting\",\"Paren_SpeakNestingLevel\",\"[n] text()\",\"self::fence\"],'Rule,fences-points,Paren_CoordPoint,[t] \"the point with coordinates\"; [n] children/*[1],self::fenced,name(children/*[1])=\"punctuated\",children/*[1][@role=\"sequence\"]'.split(\",\"),'Rule{fences-interval{Paren_Interval{[t] \"the interval from\"; [n] children/*[1]/children/*[1]; [t] \"to\"; [n] children/*[1]/children/*[3]; [p] (pause:\"short\"); [n] . (grammar:interval){self::fenced{not(contains(@grammar, \"interval\")){name(children/*[1])=\"punctuated\"{children/*[1][@role=\"sequence\"]{count(./children/*[1]/content/*)=1{children/*[1]/content/*[1][@role=\"comma\"]'.split(\"{\"),\n'Rule{interval-open{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]; [t] \"or\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"'.split(\"{\"),'Rule{interval-closed-open{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"but not including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"'.split(\"{\"),\n'Rule{interval-open-closed{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]; [p] (pause:\"short\"); [t] \"but including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"'.split(\"{\"),'Rule{interval-closed{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]; [t] \"and\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\"]\"'.split(\"{\"),\n'Rule{interval-open-inf-r{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule{interval-open-inf-l{Paren_Interval{[t] \"not including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\")\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule;interval-open-inf-lr;Paren_Interval;;self::fenced;contains(@grammar, \"interval\");content/*[1]/text()=\"(\";content/*[2]/text()=\")\";children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\");children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\";\"),'Rule{interval-closed-open-inf{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[1]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"[\"{content/*[2]/text()=\")\"{children/*[1]/children/*[3]/text()=\"\\u221e\" or (name(children/*[1]/children/*[3])=\"prefixop\" and children/*[1]/children/*[3]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),\n'Rule{interval-open-closed-inf{Paren_Interval{[t] \"including\"; [n] children/*[1]/children/*[3]{self::fenced{contains(@grammar, \"interval\"){content/*[1]/text()=\"(\"{content/*[2]/text()=\"]\"{children/*[1]/children/*[1]/text()=\"\\u221e\" or (name(children/*[1]/children/*[1])=\"prefixop\" and children/*[1]/children/*[1]/children/*[1]/text()=\"\\u221e\")'.split(\"{\"),'Rule,paren-nested-embellished-funcs,Functions_None,[p] (pause:\"short\"); [n] content/*[1]; [p] (pause:\"short\"); [n] children/*[1]; [p] (pause:\"short\"); [n] content/*[2]; [p] (pause:\"short\"),self::fenced,@role=\"leftright\",name(../..)=\"appl\",name(children/*[1]) = \"appl\",preceding-sibling::*/descendant-or-self::*[@role=\"subsup\"] or children/*[1]/descendant-or-self::*[@role=\"subsup\"]'.split(\",\"),\n'Rule;set-empty;default;[t] \"the empty set\";self::fenced;@role=\"set empty\"'.split(\";\"),'Rule,set-extended,default,[t] \"the set of all\"; [n] children/*[1]/children/*[1]; [t] \"such that\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),'Rule,set-collection,default,[t] \"the set\"; [n] children/*[1],self::fenced,@role=\"set collection\"'.split(\",\"),[\"Aliases\",\"set-collection\",\"self::fenced\",'@role=\"set singleton\"'],'Rule,set-extended,Sets_woAll,[t] \"the set of\"; [n] children/*[1]/children/*[1]; [t] \"such that\"; [n] children/*[1]/children/*[3],self::fenced,@role=\"set extended\"'.split(\",\"),\n'Rule;set-collection;Sets_SilentBracket;[n] children/*[1];self::fenced;@role=\"set collection\"'.split(\";\"),[\"Rule\",\"subscript\",\"default\",'[p] (pause:short); [n] children/*[1]; [t] \"sub\"; [n] children/*[2]; [p] (pause:short)',\"self::subscript\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm'.split(\",\"),'Rule{subscript-index{default{[n] children/*[1]; [t] \"sub\"; [n] children/*[2]{self::subscript{contains(@grammar, \"simpleDet\")'.split(\"{\"),\n[\"Rule\",\"fraction\",\"default\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],'Rule,fraction,Functions_None,[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"appl\" or name(children/*[2])=\"appl\"'.split(\",\"),'Rule{simple-fraction{default{[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short){self::fraction{contains(children/*[1]/@annotation, \"clearspeak:simple\") or contains(children/*[1]/@annotation, \"clearspeak:unit\"){contains(children/*[2]/@annotation, \"clearspeak:simple\") or contains(children/*[2]/@annotation, \"clearspeak:unit\")'.split(\"{\"),\n'Rule,simple-vulgar-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,@role=\"vulgar\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"text\",name(children/*[2])=\"text\"'.split(\",\"),'Rule,simple-text-fraction,default,[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short),self::fraction,name(children/*[1])=\"infixop\",children/*[1][@role=\"unit\"],name(children/*[2])=\"text\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"Fraction_Over\",'[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_OverEndFrac\",'[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short); [t] \"end fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_FracOver\",'[p] (pause:short); [t] \"the fraction\"; [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_Per\",'[p] (pause:short); [n] children/*[1]; [t] \"per\"; [n] children/*[2]; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_GeneralEndFrac\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short); [t] \"end fraction\"; [p] (pause:short)',\"self::fraction\"],[\"Rule\",\"fraction\",\"Fraction_General\",'[p] (pause:short); [t] \"the fraction with numerator\"; [n] children/*[1]; [p] (pause:short); [t] \"and denominator\"; [n] children/*[2]; [p] (pause:short)',\n\"self::fraction\"],'Rule;simple-vulgar-fraction;Fraction_Ordinal;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\"'.split(\";\"),'Rule{fraction{Fraction_EndFrac{[p] (pause:short); [n] . (grammar:endfrac); [t] \"end fraction\"; [p] (pause:short){self::fraction{not(contains(@grammar, \"endfrac\")){not(contains(children/*[1]/@annotation, \"clearspeak:unit\")){not(contains(children/*[2]/@annotation, \"clearspeak:unit\"))'.split(\"{\"),'Rule{vulgar-fraction{Fraction_EndFrac{[p] (pause:short); [n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short){self::fraction{name(children/*[1])=\"fraction\"{name(children/*[2])=\"fraction\"{contains(children/*[1]/@annotation, \"clearspeak:simple\"){contains(children/*[2]/@annotation, \"clearspeak:simple\")'.split(\"{\"),\n'Rule;simple-vulgar-fraction;Fraction_EndFrac;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";contains(@annotation, \"clearspeak:simple\");self::*'.split(\";\"),[\"Rule\",\"sqrt\",\"default\",'[t] \"the square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short)',\"self::sqrt\"],'Rule,sqrt-nested,default,[p] (pause: \"short\"); [t] \"the square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),\n'Rule,negative-sqrt,default,[t] \"the negative square root of\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\"'.split(\",\"),'Rule,negative-sqrt,default,[p] (pause: \"short\"); [t] \"the negative square root of\"; [n] children/*[1]/children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::prefixop,@role=\"negative\",name(children/*[1])=\"sqrt\",not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRoot,[t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRoot,[p] (pause: \"short\"); [t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule,sqrt-plus-minus,Roots_PosNegSqRootEnd,[t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),\n'Rule,sqrt-nested-plus-minus,Roots_PosNegSqRootEnd,[p] (pause: \"short\"); [t] \"the positive square root of\"; [n] children/*[1] (grammar:EndRoot=false); [p] (pause:short),self::sqrt,not(preceding-sibling::*),ancestor::sqrt|ancestor::root,parent::stree or not(parent::*/parent::infixop[@role=\"addition\"]) or (parent::*/parent::*[1]/text()!=\"\\u00b1\" and parent::*/parent::*/text()!=\"\\u2213\")'.split(\",\"),'Rule{sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule{negative-sqrt-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::sqrt{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{negative-sqrt-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::prefixop{@role=\"negative\"{name(children/*[1])=\"sqrt\"{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,cube,default,[t] \"the cube root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"]'.split(\",\"),'Rule,cube-nested,default,[p] (pause:short); [t] \"the cube root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,children/*[1][text()=\"3\"],not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"the\"; [n] children/*[1] (grammar:ordinal); [t] \"root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short)',\n\"self::root\"],'Rule,root-nested,default,[p] (pause:short); [t] \"the\"; [n] children/*[1] (grammar:ordinal); [t] \"root of\"; [n] children/*[2] (grammar:EndRoot=false); [p] (pause:short),self::root,not(preceding-sibling::*),ancestor::sqrt|ancestor::root'.split(\",\"),'Rule{root-endroot{Roots_RootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),'Rule{root-endroot{Roots_PosNegSqRootEnd{[n] . (grammar:EndRoot); [t] \"end root\"; [p] (pause:short){self::root{not(contains(@grammar, \"EndRoot\"))'.split(\"{\"),\n'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),'Rule,positive,default,[t] \"positive\"; [n] children/*[1],self::prefixop,@role=\"positive\"'.split(\",\"),'Rule,angle-measure,default,[t] \"the measure of\"; [n] content/*[1]; [n] children/*[2] (grammar:angle),self::infixop,content/*[1]/text()=\"\\u2220\",children/*[1][text()=\"m\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/* (grammar:prefix); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\n\"[n] children/*[1]; [m] content/* (grammar:postfix)\",\"self::postfixop\"],'Rule{set-prefix-operators{default{[t] \"the\"; [n] self::* (grammar:!prefix); [t] \"of\"{self::*{contains(@grammar,\"prefix\"){descendant-or-self::*/text()=\"\\u2229\" or descendant-or-self::*/text()=\"\\u222a\"{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule,binary-operation,ImpliedTimes_MoreImpliedTimes,[m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\"'.split(\",\"),\n'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator);,self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[last()])=\"appl\"'.split(\",\"),'Rule,binary-operation-pause,default,[p] (pause:short); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:short),self::infixop,@role=\"implicit\",name(children/*[1])=\"appl\",name(children/*[last()])=\"appl\"'.split(\",\"),\n'Rule;implicit-times;default;[p] (pause:short);self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times default  self::operator @role=\"multiplication\" text()=\"\\u2062\" CQFsimpleArguments'.split(\" \"),'Rule;implicit-times;default;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\";CQFfencedArguments'.split(\";\"),'Rule;implicit-times;ImpliedTimes_MoreImpliedTimes;[n] text();self::operator;@role=\"multiplication\";text()=\"\\u2062\"'.split(\";\"),'Rule implicit-times ImpliedTimes_None  self::operator @role=\"multiplication\" text()=\"\\u2062\"'.split(\" \"),\n'Rule{binary-operation-simple{default{[m] children/* (rate:\"0.5\"); [p] (pause:short){self::infixop{@role=\"implicit\"{contains(@annotation, \"clearspeak:simple\"){not(contains(@grammar, \"inFrac\"))'.split(\"{\"),'Rule;simple-in-fraction;default;[n] . (rate:\"0.5\",grammar:inFrac);self::*;contains(@annotation, \"clearspeak:simple\");not(contains(@grammar, \"inFrac\"));name(.)!=\"identifier\";name(.)!=\"function\";name(.)!=\"number\";name(parent::*/parent::*)=\"fraction\";not(preceding-sibling::*)'.split(\";\"),'Rule;operators-after-power;Exponent_AfterPower;[m] children/* (rate:\"0.5\");self::infixop;@role=\"implicit\";contains(@grammar, \"afterPower\")'.split(\";\"),\n[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],'Rule;natural-numbers;default;[t] \"the natural numbers\";self::identifier;text()=\"\\u2115\" or (text()=\"N\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;integers;default;[t] \"the integers\";self::identifier;text()=\"\\u2124\" or (text()=\"Z\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),\n'Rule;rational-numbers;default;[t] \"the rational numbers\";self::identifier;text()=\"\\u211a\" or (text()=\"Q\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;real-numbers;default;[t] \"the real numbers\";self::identifier;text()=\"\\u211d\" or (text()=\"R\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule;complex-numbers;default;[t] \"the complex numbers\";self::identifier;text()=\"\\u2102\" or (text()=\"C\" and @font=\"double-struck\");self::*;self::*;self::*'.split(\";\"),'Rule,natural-numbers-super,default,[t] \"n\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,integers-super,default,[t] \"z\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,rational-numbers-super,default,[t] \"q\" (join: \"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule,real-numbers-super,default,[t] \"r\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u211d\" or (children/*[1]/text()=\"R\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),\n'Rule,complex-numbers-super,default,[t] \"c\" (join:\"-\"); [n] children/*[2] (grammar:numbers2alpha),self::superscript,children/*[1]/text()=\"\\u2102\" or (children/*[1]/text()=\"C\" and children/*[1]/@font=\"double-struck\"),self::*,self::*,self::*'.split(\",\"),'Rule;natural-numbers-with-zero;default;[t] \"the natural numbers with zero\";self::subscript;children/*[1]/text()=\"\\u2115\" or (children/*[1]/text()=\"N\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"0\"'.split(\";\"),'Rule;positive-integers;default;[t] \"the positive integers\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),\n'Rule;positive-integers;default;[t] \"the negative integers\";self::superscript;children/*[1]/text()=\"\\u2124\" or (children/*[1]/text()=\"Z\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),'Rule;positive-rational-numbers;default;[t] \"the positive rational numbers\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"+\";self::*;self::*;self::*'.split(\";\"),'Rule;negative-rational-numbers;default;[t] \"the negative rational numbers\";self::superscript;children/*[1]/text()=\"\\u211a\" or (children/*[1]/text()=\"Q\" and children/*[1]/@font=\"double-struck\");children/*[2]/text()=\"-\";self::*;self::*;self::*'.split(\";\"),\n'Rule,fences-neutral,default,[p] (pause:short); [t] \"the absolute value of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_AbsEnd,[p] (pause:short); [t] \"the absolute value of\"; [n] children/*[1]; [p] (pause: short); [t] \"end absolute value\"; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n'Rule,fences-neutral,AbsoluteValue_Cardinality,[p] (pause:short); [t] \"the cardinality of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),'Rule,fences-neutral,AbsoluteValue_Determinant,[p] (pause:short); [t] \"the determinant of\"; [n] children/*[1]; [p] (pause: short),self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"Rule\",\"matrix\",\"default\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\"); [p] (pause:long)',\"self::matrix\"],'Rule{matrix-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long){self::matrix{count(children/*)<4{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n'Rule,matrix-trivial,default,[t] \"the 1 by 1 matrix with entry\"; [n] children/*[1]; [p] (pause:long),self::vector,@role=\"squarematrix\"'.split(\",\"),'Rule{determinant{default{[t] \"the determinant of the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"determinant\"{count(children/*)<4{CQFcellsSimple'.split(\"{\"),'Rule{determinant-simple{default{[t] \"the determinant of the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\"); [p] (pause:long){self::matrix{@role=\"determinant\"'.split(\"{\"),\n[\"Rule\",\"matrix-vector\",\"default\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"matrix-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-vector-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple{@role!=\"squarematrix\"'.split(\"{\"),\n[\"Rule\",\"matrix-vector-simple\",\"Matrix_SilentColNum\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column matrix\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],'Rule{matrix-row-vector{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),\n[\"SpecializedRule\",\"matrix-row-vector\",\"default\",\"Matrix_SpeakColNum\"],'Rule{matrix-row-vector-simple{default{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),'Rule{matrix-row-vector-simple{Matrix_SilentColNum{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row matrix\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),\n'Rule;matrix-row-simple;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row-simple\",\"Matrix_SilentColNum\",'[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\")',\"self::row\"],'Rule;line-simple;default;[n] children/*[1];self::line;contains(@grammar, \"simpleDet\")'.split(\";\"),[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-,- \",sepFunc:CTXFpauseSeparator,separator:\"medium\"); [p] (pause:long)',\n\"self::row\"],[\"SpecializedRule\",\"matrix-row\",\"default\",\"Matrix_SpeakColNum\"],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],'Rule{matrix-end-matrix{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::matrix{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-vector{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::vector{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),'Rule{matrix-end-determinant{Matrix_EndMatrix{[n] . (grammar:EndMatrix); [t] \"end determinant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\"))'.split(\"{\"),\n[\"Rule\",\"vector\",\"Matrix_Vector\",'[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"column vector\"; [p] (pause:long); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",grammar:simpleDet); [p] (pause:long)',\"self::vector\"],[\"SpecializedRule\",\"vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-simple{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\"; [t] count(children/*[1]/children/*); [t] \"column vector\"; [p] (pause:long); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::vector{count(children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row vector\"; [p] (pause:long); [m] children/*[1]/children/* (ctxtFunc:CTXFnodeCounter,context:\"Column-:\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"'.split(\"{\"),[\"SpecializedRule\",\"row-vector\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{row-vector-simple{Matrix_Vector{[t] \"the\"; [t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"row vector\"; [p] (pause:long); [m] children/*[1]/children/* (sepFunc:CTXFpauseSeparator,separator:\"short\",grammar:simpleDet); [p] (pause:long){self::matrix{@role=\"rowvector\"{count(children/*[1]/children/*)<4{CQFcellsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"row-vector-simple\",\"Matrix_Vector\",\"Matrix_EndVector\"],'Rule{vector-end-matrix{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end matrix\"{self::matrix{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end vector\"{self::vector{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule{vector-end-vector{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end vector\"{self::matrix{@role=\"rowvector\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),\n'Rule{vector-end-determinant{Matrix_EndVector{[n] . (grammar:EndMatrix); [t] \"end determinant\"{self::matrix{@role=\"determinant\"{not(contains(@grammar, \"EndMatrix\")){self::*'.split(\"{\"),'Rule,binomial,Matrix_Combinatoric,[n] children/*[1]/children/*[1]; [t] \"choose\"; [n] children/*[2]/children/*[1]; ,self::vector,@role=\"binomial\"'.split(\",\"),'Rule{lines-summary{default{[p] (pause:short); [t] count(children/*); [t] \"lines\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\")){self::*'.split(\"{\"),\n'Rule;lines-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::multiline;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),[\"Aliases\",\"lines-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],'Rule{cases-summary{default{[p] (pause:short); [t] count(children/*); [t] \"cases\";  [n] . (grammar:layoutSummary){self::cases{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),'Rule;cases-summary;MultiLineOverview_None;[n] . (grammar:layoutSummary);self::cases;not(contains(@grammar, \"layoutSummary\"));self::*'.split(\";\"),\n[\"Rule\",\"lines\",\"default\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Line-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],[\"Aliases\",\"lines\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[n] children/*[1]\",\"self::line\"],'Rule;row-medium;default;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"medium\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-medium\",\"self::row\",'@role=\"cases\"'],'Rule;row-long;MultiLinePausesBetweenColumns_Long;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\");self::row;@role=\"table\"'.split(\";\"),\n[\"Aliases\",\"row-long\",\"self::row\",'@role=\"cases\"'],'Rule;row-short;MultiLinePausesBetweenColumns_Short;[m] children/* (sepFunc:CTXFpauseSeparator,separator:\"short\");self::row;@role=\"table\"'.split(\";\"),[\"Aliases\",\"row-short\",\"self::row\",'@role=\"cases\"'],'Rule;blank-cell;default;[t] \"blank\";self::cell;count(children/*)=0'.split(\";\"),'Rule;blank-empty;default;[t] \"blank\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),[\"Rule\",\"cases\",\"default\",'[p] (pause:short);  [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Case-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::cases\"],'Rule{lines-cases-summary{MultiLineLabel_Case{[p] (pause:short); [t] count(children/*); [t] \"cases\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-cases-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-cases\",\"MultiLineLabel_Case\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Case-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\"self::table\"],\n[\"Aliases\",\"lines-cases\",\"self::multiline\"],'Rule{lines-equations-summary{MultiLineLabel_Equation{[p] (pause:short); [t] count(children/*); [t] \"equations\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-equations-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-equations\",\"MultiLineLabel_Equation\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Equation-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-equations\",\"self::multiline\"],'Rule{lines-steps-summary{MultiLineLabel_Step{[p] (pause:short); [t] count(children/*); [t] \"steps\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-steps-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-steps\",\"MultiLineLabel_Step\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Step-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-steps\",\"self::multiline\"],'Rule{lines-rows-summary{MultiLineLabel_Row{[p] (pause:short); [t] count(children/*); [t] \"rows\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-rows-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-rows\",\"MultiLineLabel_Row\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Row-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-rows\",\"self::multiline\"],'Rule{lines-constraints-summary{MultiLineLabel_Constraint{[p] (pause:short); [t] count(children/*); [t] \"constraints\";  [n] . (grammar:layoutSummary){self::multiline{not(contains(@grammar, \"layoutSummary\"))'.split(\"{\"),[\"Aliases\",\"lines-constraints-summary\",\"self::table\",'not(contains(@grammar, \"layoutSummary\"))'],[\"Rule\",\"lines-constraints\",\"MultiLineLabel_Constraint\",'[p] (pause:short); [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"Constraint-:\",sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long)',\n\"self::table\"],[\"Aliases\",\"lines-constraints\",\"self::multiline\"],'Rule{lines-none{MultiLineLabel_None{[p] (pause:short); [m] children/* (sepFunc:CTXFpauseSeparator,separator:\"long\"); [p] (pause:long){self::table{contains(@grammar, \"layoutSummary\")'.split(\"{\"),[\"Aliases\",\"lines-none\",\"self::multiline\",'contains(@grammar, \"layoutSummary\")'],[\"Aliases\",\"lines-none\",\"self::cases\",'contains(@grammar, \"layoutSummary\")'],[\"Rule\",\"bigop\",\"default\",'[t] \"the\"; [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:short)',\n\"self::bigop\"],[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [t] \"from\"; [n] children/*[2];[t] \"to\"; [n] children/*[3];',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2]; [p] (pause:short)',\"self::limupper\"],[\"Rule\",\"integral\",\"default\",'[t] \"the\"; [n] children/*[1]; [t] \"of\"; [n] children/*[2]; [p] (pause:short)',\"self::integral\"],\n[\"Rule\",\"overscript\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2]; [p] (pause:short)',\"self::overscore\"],'Rule,overscript,default,[n] children/*[1]; [n] children/*[2];,self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,overscript-limits,default,[n] children/*[1]; [t] \"to\"; [n] children/*[2],self::overscore,children/*[2][@role!=\"overaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"underscript\",\"default\",\n'[n] children/*[1]; [t] \"over\"; [n] children/*[2]; [p] (pause:short)',\"self::underscore\"],'Rule,underscript-limits,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2],self::underscore,@role=\"underover\",children/*[2][@role!=\"underaccent\"]'.split(\",\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"number\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule,decimal-period,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"point followed by repeating digits\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"followed by repeating digits\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"point followed by repeating digit\";  [n] children/*[3]/children/*[1] (grammar:spaceout),self::punctuated,@role=\"sequence\",count(./content/*)=1,./content/*[1][@role=\"fullstop\"],name(children/*[1])=\"number\",children/*[1][@role=\"integer\"],name(children/*[3])=\"overscore\",children/*[3][@role=\"integer\"],children/*[3]/children/*[2][@role=\"overaccent\"],children/*[3]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[3]/children/*[1]/text())=1'.split(\",\"),\n'Rule,decimal-period-singular,default,[t] \"the repeating decimal\"; [n] children/*[1] (grammar:spaceout); [t] \"followed by repeating digit\";  [n] children/*[2]/children/*[1] (grammar:spaceout);,self::infixop,@role=\"implicit\",count(./children/*)=2,name(children/*[1])=\"number\",children/*[1][@role=\"float\"],name(children/*[2])=\"overscore\",children/*[2][@role=\"integer\"],children/*[2]/children/*[2][@role=\"overaccent\"],children/*[2]/children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],string-length(./children/*[2]/children/*[1]/text())=1'.split(\",\"),\n'Rule;number-with-spaces;default;[m] CQFspaceoutNumber (grammar:!spaceout:number);self::number;contains(@grammar, \"spaceout\")'.split(\";\"),'Rule;decimal-point;default;[t] \"point\";self::punctuation;@role=\"fullstop\";contains(@grammar,\"number\")'.split(\";\"),'Rule,line-segment,default,[t] \"the line segment\"; [n] children/*[1]/children/*[1]; [n] children/*[1]/children/*[2]; [p] (pause:short),self::overscore,@role=\"implicit\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"],name(children/*[1])=\"infixop\",count(./children/*[1]/children/*)=2'.split(\",\"),\n'Rule,conjugate,Bar_Conjugate,[t] \"the complex conjugate of\"; [n] children/*[1],self::overscore,children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule;defined-by;default;[t] \"is defined to be\" (pause:short);self::overscore;@role=\"equality\";@embellished=\"relation\";name(children/*[2])=\"text\";children/*[2][text()]=\"def\"'.split(\";\"),'Rule,adorned-sign,default,[n] children/*[1] ; [t] \"sign with\"; [n] children/*[2]; [t] \"over it\",self::overscore,@embellished,name(children/*[1])=\"operator\" or name(children/*[1])=\"relation\"'.split(\",\"),\n'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),[\"Rule\",\"tensor-base\",\"default\",\"[n] children/*[2]; [n] children/*[3]; [n] children/*[1]; [n] children/*[4]; [n] children/*[5]\",\"self::tensor\"],'Rule{left-super{default{[t] \"left super\"; [n] text(){self::*[@role=\"leftsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-super{default{[t] \"left super\"; [m] children/*{self::punctuated{@role=\"leftsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{left-sub{default{[t] \"left sub\"; [n] text(){self::*[@role=\"leftsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{left-sub{default{[t] \"left sub\"; [m] children/*{self::punctuated{@role=\"leftsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"right super\"; [n] text(){self::*[@role=\"rightsuper\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-super{default{[t] \"right super\"; [m] children/*{self::punctuated{@role=\"rightsuper\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),\n'Rule{right-sub{default{[t] \"right sub\"; [n] text(){self::*[@role=\"rightsub\"]{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule{right-sub{default{[t] \"right sub\"; [m] children/*{self::punctuated{@role=\"rightsub\"{not(contains(@grammar,\"combinatorics\"))'.split(\"{\"),'Rule;empty-index;default;[p] (pause:medium);self::empty;@role=\"rightsub\" or @role=\"rightsuper\" or @role=\"leftsub\" or @role=\"leftsuper\"'.split(\";\"),'Rule,combinatorics,default,[n] children/*[2] (grammar:combinatorics); [n] children/*[1]; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\" or text()=\"C\"]'.split(\",\"),\n'Rule,choose,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] \"choose\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"C\"]'.split(\",\"),'Rule,permute,CombinationPermutation_ChoosePermute,[n] children/*[2] (grammar:combinatorics); [t] \"permute\"; [n] children/*[4] (grammar:combinatorics),self::tensor,name(children/*[3])=\"empty\",name(children/*[5])=\"empty\",children/*[1][text()=\"P\"]'.split(\",\"),\n'Rule;unit-singular;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-plural;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\";not(contains(@grammar, \"singularUnit\"))'.split(\";\"),'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),\n'Rule,unit-reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),'Rule,unit-reciprocal,default,[t] \"per\"; [n] children/*[1] (grammar:singularUnit),self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),\n'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-combine-singular,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [m] children/*[position()>2],self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1]'.split(\",\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"per\"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role=\"unit\"'.split(\",\"),'Rule{currency{default{[m] children/*[position()>1]; [n] children/*[1];{self::infixop{contains(@annotation, \"clearspeak:unit\"){children/*[1][@role=\"unit\"]{CQFfirstCurrency'.split(\"{\"),\n'Rule;currency;Currency_Position;[m] children/*;self::infixop;contains(@annotation, \"clearspeak:unit\")'.split(\";\"),[\"SpecializedRule\",\"currency\",\"Currency_Position\",\"Currency_Prefix\"],'Rule{currency{Currency_Prefix{[n] children/*[last()]; [m] children/*[position()<last()]; {self::infixop{contains(@annotation, \"clearspeak:unit\"){children/*[last()][@role=\"unit\"]{CQFlastCurrency'.split(\"{\")],initialize:[sre.ClearspeakUtil.addAnnotators]};sre.Grammar.getInstance().setPreprocessor(\"numbers2alpha\",sre.ClearspeakUtil.numbersToAlpha);sre.EmacspeakRules={domain:\"emacspeak\",functions:[[\"CTXF\",\"CTXFnodeCounter\",sre.StoreUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction]],rules:[[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],[\"Rule\",\"multrel\",\"default\",'[t] \"multirelation\"; [m] children/* (sepFunc:CTXFcontentIterator)',\"self::multirel\"],'Rule{variable-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),\n'Rule{multi-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2'.split(\"{\"),'Rule,equality,default,[t] \"equation\"; [t] \"left hand side\"; [n] children/*[1];[p] (pause:200); [n] content/*[1] (pause:200);[t] \"right hand side\"; [n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2'.split(\",\"),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/identifier or ./children/number'.split(\",\"),\n'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/function or ./children/appl'.split(\",\"),[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\";children/*[1][@role=\"latinletter\"] or children/*[1][@role=\"greekletter\"] or children/*[1][@role=\"otherletter\"] or name(children/*[1])=\"number\";children/*[2][@role=\"latinletter\"] or children/*[2][@role=\"greekletter\"] or children/*[2][@role=\"otherletter\"] or name(children/*[2])=\"number\"'.split(\";\"),\n[\"Rule\",\"binary-operation\",\"default\",\"[p] (pause:100); [m] children/* (sepFunc:CTXFcontentIterator); [p] (pause:100);\",\"self::infixop\"],'Rule,variable-addition,default,[t] \"sum with variable number of summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(children/*)>2,children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"prefix\",\"default\",'[t] \"prefix\"; [n] text(); [t] \"of\" (pause 150);[n] children/*[1]',\"self::prefixop\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,self::prefixop[@role=\"negative\"]'.split(\",\"),\n[\"Rule\",\"postfix\",\"default\",'[n] children/*[1]; [t] \"postfix\"; [n] text() (pause 300)',\"self::postfixop\"],[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule{font{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font; [n] CQFhideFont; [t] CSFshowFont{self::identifier{string-length(text())=1{@font{@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font; [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule,simple-fraction,default,[p] (pause:100); [n] children/*[1] (rate:0.35); [t] \"over\";  [n] children/*[2] (rate:0.35); [p] (pause:100),self::fraction,name(children/*[1])=\"number\" or name(children/*[1])=\"identifier\",name(children/*[2])=\"number\" or name(children/*[2])=\"identifier\"'.split(\",\"),\n'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"Rule\",\"fraction\",\"default\",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] \"divided by\"; [p] (pause:250);  [n] children/*[2] (rate:0.35); [p] (pause:250)',\"self::fraction\"],[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"super\"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',\"self::superscript\"],[\"Rule\",\"subscript\",\"default\",'[n] children/*[1]; [t] \"sub\"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',\n\"self::subscript\"],'Rule,ellipsis,default,[p] (pause:200); [t] \"ellipsis\"; [p] (pause:300),self::punctuation,self::punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role=\"openfence\"]'.split(\";\"),[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"closefence\"]'],[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"vbar\"]'],[\"Alias\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"application\"]'],\n[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule,fences-open-close,default,[p] (pause:200); [n] children/*[1] (rate:0.35); [p] (pause:200),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role=\"leftright\"],./parent::children/parent::appl'.split(\",\"),'Rule,fences-neutral,default,[p] (pause:100); [t] \"absolute value of\"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role=\"neutral\"]'.split(\",\"),\n[\"Rule\",\"omit-fences\",\"default\",\"[p] (pause:500); [n] children/*[1]; [p] (pause:200);\",\"self::fenced\"],[\"Rule\",\"matrix\",\"default\",'[t] \"matrix\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100)',\"self::matrix\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)','self::row[@role=\"matrix\"]'],[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"matrix\"]'],[\"Rule\",\"vector\",\"default\",'[t] \"vector\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"element\",pause:100)',\n\"self::vector\"],[\"Rule\",\"cases\",\"default\",'[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100)',\"self::cases\"],[\"Rule\",\"cases-row\",\"default\",\"[m] children/*\",'self::row[@role=\"cases\"]'],[\"Rule\",\"cases-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"cases\"]'],[\"Rule\",\"row\",\"default\",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)',\"self::row\"],'Rule{cases-end{default{[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100);[t] \"end cases\"{self::cases{following-sibling::*'.split(\"{\"),\n[\"Rule\",\"multiline\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"line\",pause:100)',\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],[\"Rule\",\"table\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200)',\"self::table\"],[\"Rule\",\"table-row\",\"default\",\"[m] children/* (pause:100)\",'self::row[@role=\"table\"]'],[\"Alias\",\"cases-cell\",'self::cell[@role=\"table\"]'],'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role=\"endpunct\"'.split(\",\"),\n'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/* (pause:100)\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],[\"Rule\",\"appl\",\"default\",\"[n] children/*[1]; [n] content/*[1]; [n] children/*[2]\",\"self::appl\"],\n'Rule,sum-only,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2]; [t] \"to\";[n] children/*[3],self::limboth,@role=\"sum\" or @role=\"integral\"'.split(\",\"),[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[t] \"under\"; [n] children/*[3]; [p] (pause 250);',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2];',\"self::limlower\"],[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2];',\n\"self::limupper\"],[\"Rule\",\"largeop\",\"default\",\"[n] text()\",\"self::largeop\"],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[p] (pause 250);',\"self::bigop\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);\",\"self::integral\"],[\"Rule\",\"sqrt\",\"default\",'[t] \"Square root of\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\"self::sqrt\"],'Rule,square,default,[n] children/*[1]; [t] \"squared\" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=2],name(./children/*[1])!=\"text\"'.split(\",\"),\n'Rule,cube,default,[n] children/*[1]; [t] \"cubed\" (pitch:0.35); [p] (pause:200),self::superscript,children/*[2][text()=3],name(./children/*[1])!=\"text\"'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"root of order\"; [n] children/*[1];[t] \"over\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\"self::root\"],\"Rule,text-no-mult,default,[n] children/*[1]; [p] (pause:200); [n] children/*[2],self::infixop,children/text\".split(\",\"),[\"Rule\",\"text\",\"default\",\"[n] text(); [p] (pause:200)\",\"self::text\"],'Rule;unit;default;[t] text() (annotation:unit, preprocess);self::identifier;@role=\"unit\"'.split(\";\"),\n'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"per\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] \"per\"; [n] children/*[2] (pitch:-0.3),self::fraction,@role=\"unit\"'.split(\",\")]};sre.MathspeakFrenchUtil={};sre.MathspeakFrenchUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&3>=b?[a]:[]};sre.MathspeakFrenchUtil.baselineVerbose=function(a){return sre.MathspeakUtil.baselineVerbose(a).replace(/\\-$/,\"\")};sre.MathspeakFrenchUtil.baselineBrief=function(a){return sre.MathspeakUtil.baselineBrief(a).replace(/\\-$/,\"\")};\nsre.MathspeakFrenchUtil.leftSuperscriptVerbose=function(a){return sre.MathspeakUtil.superscriptVerbose(a).replace(/^exposant/,\"exposant gauche\")};sre.MathspeakFrenchUtil.leftSubscriptVerbose=function(a){return sre.MathspeakUtil.subscriptVerbose(a).replace(/^indice/,\"indice gauche\")};sre.MathspeakFrenchUtil.leftSuperscriptBrief=function(a){return sre.MathspeakUtil.superscriptBrief(a).replace(/^sup/,\"sup gauche\")};\nsre.MathspeakFrenchUtil.leftSubscriptBrief=function(a){return sre.MathspeakUtil.subscriptBrief(a).replace(/^sub/,\"sub gauche\")};sre.MathspeakFrench={locale:\"fr\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFrFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CQF\",\"CQFisSmallRoot\",sre.MathspeakFrenchUtil.smallRoot],\n[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakFrenchUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakFrenchUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakFrenchUtil.leftSuperscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",\nsre.MathspeakFrenchUtil.leftSubscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakFrenchUtil.leftSuperscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakFrenchUtil.leftSubscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",\nsre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth],[\"CQF\",\"CQFisLogarithm\",sre.ClearspeakUtil.isLogarithmWithBase]],rules:['Rule;collapsed;default;[n] . (engine:modality=summary,grammar:collapsed);self::*;@alternative;not(contains(@grammar, \"collapsed\"));self::*;self::*;self::*;self::*;self::*'.split(\";\"),\n[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::*;@role=\"protected\"'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"vide\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont);{self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"et\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{number-with-chars{default{[t] \"nombre\"; [m] CQFspaceoutNumber{self::number{\"\" != translate(text(), \"0123456789.,\", \"\"){text() != translate(text(), \"0123456789.,\", \"\")'.split(\"{\"),'Rule{number-as-upper-word{default{[t] \"MotMajuscule\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n'Rule{number-baseline{default{[t] \"position de base\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\"brief\",'[t] \"base\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"position de base\"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),\n[\"SpecializedRule\",\"number-baseline-font\",\"default\",\"brief\",'[t] \"base\"; [n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";@role!=\"protected\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"n\\u00e9gatif\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"moins\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"d\\u00e9but valeur absolue\"; [n] children/*[1]; [t] \"fin valeur absolue\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"valeur absolue\"; [n] children/*[1]; [t] \"fin valeur absolue\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"d\\u00e9but ensemble\"; [n] children/*[1]; [t] \"fin ensemble\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\n\"default\",\"sbrief\",'[t] \"ensemble\"; [n] children/*[1]; [t] \"fin ensemble\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"factorielle\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"moins\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prime\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"double prime\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prime\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"quadruple prime\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFrFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\"vulgar-fraction\",\n\"default\",\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"fraction continue\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"frac continue\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"d\\u00e9but fraction\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"brief\",'[t] \"d\\u00e9but frac\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"frac\"; [n] children/*[1];[t] \"sur\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\n\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),[\"Rule\",\"root\",\"default\",\n\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];[t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2];[t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[3]; [t] \"fin scripts\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFunderscript; [n] children/*[2]; [t] \"fin scripts\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] \"d\\u00e9but\"; [t] CSFoverscript; [n] children/*[2]; [t] \"fin scripts\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\n\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"indice inf\\u00e9rieur\"; [n] children/*[2];[t] \"indice sup\\u00e9rieur\"; [n] children/*[3]; [t] \"position de base\";,self::limboth,@role=\"integral\"'.split(\",\"),[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"inf\"; [n] children/*[2];[t] \"sup\"; [n] children/*[3]; [t] \"position de base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\n\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],\n[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],'Rule,subscript-base,default,[n] children/*[1]; [t] \"base\"; [n] children/*[2],self::subscript,CQFisLogarithm,self::*,self::*,self::*'.split(\",\"),[\"SpecializedRule\",\"subscript-base\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-base\",\n\"default\",\"sbrief\"],'Rule,subscript-simple,brief,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"brief\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"au carr\\u00e9\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubique\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,brief,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"brief\",\"sbrief\"],'Rule,overscore,default,[t] \"suscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,double-overscore,default,[t] \"sus-suscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule,underscore,default,[t] \"souscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),\n'Rule,double-underscore,default,[t] \"sous-souscrire\"; [n] children/*[1]; [t] \"avec\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"d\\u00e9but matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin matrice\"',\n\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",'[t] \"matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin matrice\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"avec \\u00e9tiquette\"; [n] content/*[1]; [t] \"fin \\u00e9tiquette\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"\\u00e9tiquette\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"\\u00e9tiquette\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"colonne\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"vide\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\n\"matrix-cell\",\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"vide\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"d\\u00e9but d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [t] \"\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",\n'[t] \"d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin d\\u00e9terminant\"'],'Rule{determinant-simple{default{[t] \"d\\u00e9but d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e\",grammar:simpleDet); [t] \"fin d\\u00e9terminant\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),\n[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] \"d\\u00e9terminant\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e\",grammar:simpleDet); [t] \"fin d\\u00e9terminant\"'],'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"d\\u00e9but tableau\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\n\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"tableau\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::table\"],'Rule,binomial,default,[t] \"d\\u00e9but binomiale\"; [n] children/*[2]/children/*[1]; [t] \"parmi\"; [n] children/*[1]/children/*[1];  [t] \"fin binomiale\",self::vector,@role=\"binomial\"'.split(\",\"),'Rule,binomial,sbrief,[t] \"binomiale\"; [n] children/*[1]/children/*[1]; [t] \"parmi\"; [n] children/*[2]/children/*[1];  [t] \"fin binomiale\",self::vector,@role=\"binomial\"'.split(\",\"),\n[\"Rule\",\"cases\",\"default\",'[t] \"d\\u00e9but tableau\"; [n] content/*[1]; [t] \"\\u00e9largie\";[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"tableau\"; [n] content/*[1]; [t] \"\\u00e9largie\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"rang\\u00e9e \"); [t] \"fin tableau\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"avec etiquette\"; [n] content/*[1]; [t] \"fin etiquette\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),\n[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"etiquette\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"etiquette\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),'Rule;empty-line;default;[t] \"vide\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\n\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"avec etiquette\"; [n] content/*[1]; [t] \"fin etiquette\" (pause: 200); [t] \"vide\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"etiquette\"; [n] content/*[1] (pause: 200); [t] \"vide\"'],[\"SpecializedRule\",\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"d\\u00e9but enfermer en\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"fin enfermer\"',\n\"self::enclose\"],'Rule,overbar,default,[t] \"d\\u00e9but trait suscrit\"; [n] children/*[1]; [t] \"fin trait suscrit\",self::enclose,@role=\"top\"'.split(\",\"),'Rule,underbar,default,[t] \"d\\u00e9but trait souscrit\"; [n] children/*[1]; [t] \"fin trait souscrit\",self::enclose,@role=\"bottom\"'.split(\",\"),'Rule,leftbar,default,[t] \"barre verticale\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"barre verticale\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[1]; [t] \"fin biff\\u00e9\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[1]/children/*[1]; [t] \"avec\"; [n] children/*[2]; [t] \"fin biff\\u00e9\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"d\\u00e9but biff\\u00e9\"; [n] children/*[2]/children/*[1]; [t] \"avec\"; [n] children/*[1]; [t] \"fin biff\\u00e9\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[n] children/*[1]; [t] \"carr\\u00e9\",self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[n] children/*[1]; [t] \"cubique\",self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"r\\u00e9ciproque\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"par\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"par\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakGerman={locale:\"de\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],\n[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] \"kollabiert\"{self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],\n[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"leer\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{name(self::*)!=\"number\"{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-number{default{[t] @font (grammar:localFontNumber); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1 or string-length(text())=2{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1 or string-length(text())=2;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\";self::*'.split(\";\"),'Rule{font-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFont){self::*{name(self::*)!=\"number\"{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),\n'Rule{font-number-double-struck{default{[n] . (grammar:ignoreFont=@font); [t] @font (grammar:localFontNumber){self::number{string-length(text())=1 or string-length(text())=2{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"double-struck\"'.split(\"{\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Zahl\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n'Rule{number-as-upper-word{default{[t] \"Wort gro\\u00df\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"Grundlinie\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\n\"brief\",'[t] \"Grund\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"Grundlinie\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\n\"default\",\"brief\",'[t] \"Grund\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"minus\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"Anfang Betrag\"; [n] children/*[1]; [t] \"Ende Betrag\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"Betrag\"; [n] children/*[1]; [t] \"Ende Betrag\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"Anfang Menge\"; [n] children/*[1]; [t] \"Ende Menge\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\"default\",\"sbrief\",\n'[t] \"Menge\"; [n] children/*[1]; [t] \"Ende Menge\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"Fakult\\u00e4t\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"minus\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"Strich\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"zwei Strich\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"drei Strich\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"vier Strich\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"Strich\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction (grammar:correctOne);self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\n\"vulgar-fraction\",\"default\",\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"Kettenbruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),'Rule,continued-fraction-inner,default,[t] \"Anfang Bruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"sbrief\",'[t] \"Bruch\"; [n] children/*[1];[t] \"durch\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),\n\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,children/*[1][text()=3 or text()=2]\".split(\",\"),[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\n\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"Ende \\u00dcberschrift\"',\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"Ende Unterschrift\"',\"self::limlower\"],\n[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"Ende \\u00dcberschrift\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"Index\"; [n] children/*[2];[t] \"Hoch\"; [n] children/*[3]; [t] \"Grundlinie\";,self::limboth,@role=\"integral\"'.split(\",\"),\n[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Index\"; [n] children/*[2];[t] \"Hoch\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),\n'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],\n'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-simple\",\"default\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"Quadrat\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"Kubik\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"sbrief\"],'Rule,overscore,default,[t] \"modifiziert oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"mod oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"modifiziert oben oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"mod oben oben\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"modifiziert unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"mod unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\n\"sbrief\"],'Rule,double-underscore,default,[t] \"modifiziert unten unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"mod unten unten\"; [n] children/*[1]; [t] \"mit\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"\\u00dcberstrich\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n'Rule,underbar,default,[n] children/*[1]; [t] \"Unterstrich\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),'Rule,overtilde,default,[n] children/*[1]; [t] \"Tilde oben\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n'Rule,undertilde,default,[n] children/*[1]; [t] \"Tilde unten\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Matrize\"',\n\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Matrize\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"Bezeichner\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"Bezeichner\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Spalte\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"Blank\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"leer\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Determinante\"'],\n'Rule{determinant-simple{default{[t] \"Anfang\"; [t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile\",grammar:simpleDet); [t] \"Ende Determinante\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Determinante\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile\",grammar:simpleDet); [t] \"Ende Determinante\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"Anfang Anordnung\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Anordnung\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"Anordnung\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Anordnung\"',\"self::table\"],'Rule,binomial,default,[t] \"Anfang Binomialkoeffizient\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomialkoeffizient\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,brief,[t] \"Anfang Binomial\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomial\",self::vector,@role=\"binomial\"'.split(\",\"),'Rule,binomial,sbrief,[t] \"Binomial\"; [n] children/*[2]/children/*[1]; [t] \"aus\";  [n] children/*[1]/children/*[1]; [t] \"Ende Binomial\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"Anfang Fallunterscheidung\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende Fallunterscheidung\"',\n\"self::cases\"],[\"Rule\",\"cases\",\"brief\",'[t] \"Anfang F\\u00e4lle\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende F\\u00e4lle\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"F\\u00e4lle\"; [t] \"gro\\u00dfe\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Zeile \"); [t] \"Ende F\\u00e4lle\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),\n[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"Bezeichner\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"Bezeichner\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),'Rule;empty-line;default;[t] \"leer\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\n\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"mit Bezeichner\"; [n] content/*[1]; [t] \"Ende Bezeichner\"(pause: 200); [t] \"leer\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"Bezeichner\"; [n] content/*[1] (pause: 200); [t] \"leer\"'],[\"SpecializedRule\",\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"Anfang Umschlie\\u00dfung\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"Ende Umschlie\\u00dfung\"',\n\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"senkrechter Strich\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"senkrechter Strich\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"durchgestrichen\"; [n] children/*[1]; [t] \"Ende duchgestrichen\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"durchgestrichen\"; [n] children/*[1]/children/*[1]; [t] \"mit\"; [n] children/*[2]; [t] \"Ende duchgestrichen\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"durchgestrichen\"; [n] children/*[2]/children/*[1]; [t] \"mit\"; [n] children/*[1]; [t] \"Ende duchgestrichen\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[t] \"Quadrat\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"Kubik\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[n] children/*[1]; [t] \"invers\",self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"pro\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"pro\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\"),[\"Rule\",\"inference\",\"default\",'[t] \"Schlussregel\"; [m] content/*; [t] \"mit Folgerung\"; [n] children/*[1]; [t] \"aus\"; [t] count(children/*[2]/children/*); [t] \"Pr\\u00e4missen\"',\n\"self::inference\"],'Rule,inference,default,[t] \"Schlussregel\"; ; [m] content/*; [t] \"mit Folgerung\"; [n] children/*[1]; [t] \"aus\"; [t] count(children/*[2]/children/*); [t] \"Pr\\u00e4misse\",self::inference,count(children/*[2]/children/*)<2'.split(\",\"),[\"Rule\",\"premise\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Pr\\u00e4misse \");',\"self::premises\"],[\"Rule\",\"conclusion\",\"default\",\"[n] children/*[1]\",\"self::conclusion\"],[\"Rule\",\"label\",\"default\",'[t] \"Regel\"; [n] children/*[1]',\"self::rulelabel\"],\n'Rule,axiom,default,[t] \"Axiom\"; [m] children/*[1];,self::inference,@role=\"axiom\"'.split(\",\"),'Rule,axiom,default,[t] \"leeres Axiom\";,self::empty,@role=\"axiom\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakRules={domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFvulgarFraction\",sre.NumbersUtil.vulgarFraction],[\"CQF\",\"CQFvulgarFractionSmall\",sre.MathspeakUtil.isSmallVulgarFraction],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",\nsre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",sre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],\n[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],\n[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*[@alternative]{not(contains(@grammar, \"collapsed\"))'.split(\"{\"),[\"SpecializedRule\",\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\n\"sbrief\"],[\"Rule\",\"direct-speech\",\"default\",\"[t] @ext-speech\",\"self::*[@ext-speech]\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"Blank\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule{german-font{default{[t] \"German\"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"fraktur\"'.split(\"{\"),\n'Rule{german-font{default{[t] \"bold German\"; [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"bold-fraktur\"'.split(\"{\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"Number\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),\n[\"SpecializedRule\",\"number-with-chars\",\"default\",\"brief\",'[t] \"Num\"; [m] CQFspaceoutNumber (grammar:protected)'],[\"SpecializedRule\",\"number-with-chars\",\"brief\",\"sbrief\"],'Rule{number-as-upper-word{default{[t] \"UpperWord\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"Baseline\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\"default\",\n\"brief\",'[t] \"Base\"; [n] . (grammar:baseline)'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"Baseline\"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\"default\",\"brief\",\n'[t] \"Base\"; [t] @font; [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"minus\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"minus\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"StartAbsoluteValue\"; [n] children/*[1]; [t] \"EndAbsoluteValue\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"AbsoluteValue\"; [n] children/*[1]; [t] \"EndAbsoluteValue\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"StartSet\"; [n] children/*[1]; [t] \"EndSet\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\"fences-set\",\"default\",\n\"sbrief\",'[t] \"Set\"; [n] children/*[1]; [t] \"EndSet\"'],[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"minus\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prime\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"double prime\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prime\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"quadruple prime\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule;vulgar-fraction;default;[t] CSFvulgarFraction;self::fraction;@role=\"vulgar\";CQFvulgarFractionSmall'.split(\";\"),[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\"brief\"],[\"SpecializedRule\",\"vulgar-fraction\",\"default\",\n\"sbrief\"],'Rule,continued-fraction-outer,default,[t] \"ContinuedFraction\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"ContinuedFrac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"StartFraction\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\"brief\",'[t] \"StartFrac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"Frac\"; [n] children/*[1];[t] \"Over\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\n\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\n\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"Endscripts\"',\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"Endscripts\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\n\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"Endscripts\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"Subscript\"; [n] children/*[2];[t] \"Superscript\"; [n] children/*[3]; [t] \"Baseline\";,self::limboth,@role=\"integral\"'.split(\",\"),\n[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Sub\"; [n] children/*[2];[t] \"Sup\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),\n'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],\n'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"]'.split(\",\"),[\"SpecializedRule\",\"subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-simple\",\"default\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBrief\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"squared\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBrief\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime-subscript-simple\",\"default\",\"sbrief\"],'Rule,overscore,default,[t] \"ModifyingAbove\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"ModAbove\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"ModifyingAbove Above\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"ModAbove Above\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"ModifyingBelow\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"ModBelow\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\n\"sbrief\"],'Rule,double-underscore,default,[t] \"ModifyingBelow Below\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"ModBelow Below\"; [n] children/*[1]; [t] \"With\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"overbar\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),\n[\"SpecializedRule\",\"overbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"overBar\"'],[\"SpecializedRule\",\"overbar\",\"brief\",\"sbrief\"],'Rule,underbar,default,[n] children/*[1]; [t] \"underbar\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"underbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"underBar\"'],\n[\"SpecializedRule\",\"underbar\",\"brief\",\"sbrief\"],'Rule,overtilde,default,[n] children/*[1]; [t] \"overTilde\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),[\"SpecializedRule\",\"overtilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"overtilde\"'],[\"SpecializedRule\",\"overtilde\",\"brief\",\"sbrief\"],'Rule,undertilde,default,[n] children/*[1]; [t] \"underTilde\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n[\"SpecializedRule\",\"undertilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"undertilde\"'],[\"SpecializedRule\",\"undertilde\",\"brief\",\"sbrief\"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Matrix\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndMatrix\"',\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",\n'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Matrix\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndMatrix\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"Label\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"Label\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"Blank\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"Blank\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndDeterminant\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndDeterminant\"'],\n'Rule{determinant-simple{default{[t] \"Start\"; [t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row\",grammar:simpleDet); [t] \"EndDeterminant\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] count(children/*);  [t] \"By\";[t] count(children/*[1]/children/*); [t] \"Determinant\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row\",grammar:simpleDet); [t] \"EndDeterminant\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"StartLayout\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"Layout\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::table\"],'Rule,binomial,default,[t] \"StartBinomialOrMatrix\"; [n] children/*[1]/children/*[1]; [t] \"Choose\"; [n] children/*[2]/children/*[1];  [t] \"EndBinomialOrMatrix\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,sbrief,[t] \"BinomialOrMatrix\"; [n] children/*[1]/children/*[1]; [t] \"Choose\"; [n] children/*[2]/children/*[1];  [t] \"EndBinomialOrMatrix\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"StartLayout\"; [t] \"Enlarged\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"Layout\"; [t] \"Enlarged\"; [n] content/*[1];[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Row \"); [t] \"EndLayout\"',\n\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"Label\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"Label\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),\n'Rule;empty-line;default;[t] \"Blank\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [t] \"Blank\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"Label\"; [n] content/*[1] (pause: 200); [t] \"Blank\"'],[\"SpecializedRule\",\"empty-line-with-label\",\n\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"StartEnclose\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"EndEnclose\"',\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"vertical bar\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"vertical bar\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"CrossOut\"; [n] children/*[1]; [t] \"EndCrossOut\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"CrossOut\"; [n] children/*[1]/children/*[1]; [t] \"With\"; [n] children/*[2]; [t] \"EndCrossOut\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"CrossOut\"; [n] children/*[2]/children/*[1]; [t] \"With\"; [n] children/*[1]; [t] \"EndCrossOut\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"per\"; [n] children/*[2],self::fraction,@role=\"unit\"'.split(\",\"),[\"Rule\",\"inference\",\"default\",'[t] \"inference rule\"; [m] content/*; [t] \"with conclusion\"; [n] children/*[1]; [t] \"and\"; [t] count(children/*[2]/children/*); [t] \"premises\"',\n\"self::inference\"],'Rule,inference,default,[t] \"inference rule\"; ; [m] content/*; [t] \"with conclusion\"; [n] children/*[1]; [t] \"and\"; [t] count(children/*[2]/children/*); [t] \"premise\",self::inference,count(children/*[2]/children/*)<2'.split(\",\"),[\"Rule\",\"premise\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"premise \");',\"self::premises\"],[\"Rule\",\"conclusion\",\"default\",\"[n] children/*[1]\",\"self::conclusion\"],[\"Rule\",\"label\",\"default\",'[t] \"label\"; [n] children/*[1]',\"self::rulelabel\"],\n'Rule,axiom,default,[t] \"axiom\"; [m] children/*[1];,self::inference,@role=\"axiom\"'.split(\",\"),'Rule,axiom,default,[t] \"empty axiom\";,self::empty,@role=\"axiom\"'.split(\",\")],initialize:[sre.MathspeakUtil.generateTensorRules]};sre.MathspeakSpanishUtil={};sre.MathspeakSpanishUtil.ordinalCounter=function(a,b){var c=0;return function(){return sre.Messages.NUMBERS.numberToOrdinal(++c,!1)+\" \"+b}};sre.MathspeakSpanishUtil.smallRoot=function(a){if(!a.childNodes||0===a.childNodes.length||!a.childNodes[0].childNodes)return[];var b=a.childNodes[0].childNodes[0].textContent;if(!/^\\d+$/.test(b))return[];b=parseInt(b,10);return 1<b&&10>=b?[a]:[]};sre.UnitUtil={};sre.UnitUtil.unitMultipliers=function(a,b){var c=0;return function(){var d=sre.AuditoryDescription.create({text:sre.UnitUtil.rightMostUnit(a[c])&&sre.UnitUtil.leftMostUnit(a[c+1])?sre.Messages.UNIT_TIMES:\"\"},{});c++;return[d]}};sre.UnitUtil.SCRIPT_ELEMENTS=[sre.SemanticAttr.Type.SUPERSCRIPT,sre.SemanticAttr.Type.SUBSCRIPT,sre.SemanticAttr.Type.OVERSCORE,sre.SemanticAttr.Type.UNDERSCORE];\nsre.UnitUtil.rightMostUnit=function(a){for(;a;){if(\"unit\"===a.getAttribute(\"role\"))return!0;var b=a.tagName;a=sre.XpathUtil.evalXPath(\"children/*\",a);a=-1!==sre.UnitUtil.SCRIPT_ELEMENTS.indexOf(b)?a[0]:a[a.length-1]}return!1};sre.UnitUtil.leftMostUnit=function(a){for(;a;){if(\"unit\"===a.getAttribute(\"role\"))return!0;a=sre.XpathUtil.evalXPath(\"children/*\",a)[0]}return!1};\nsre.UnitUtil.oneLeft=function(a){for(;a;){if(\"number\"===a.tagName&&\"1\"===a.textContent)return[a];if(\"infixop\"!==a.tagName||\"multiplication\"!==a.getAttribute(\"role\")&&\"implicit\"!==a.getAttribute(\"role\"))break;a=sre.XpathUtil.evalXPath(\"children/*\",a)[0]}return[]};sre.MathspeakSpanish={locale:\"es\",domain:\"mathspeak\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFracVerbose\",sre.MathspeakUtil.openingFractionVerbose],[\"CSF\",\"CSFcloseFracVerbose\",sre.MathspeakUtil.closingFractionVerbose],[\"CSF\",\"CSFoverFracVerbose\",sre.MathspeakUtil.overFractionVerbose],[\"CSF\",\"CSFopenFracBrief\",sre.MathspeakUtil.openingFractionBrief],\n[\"CSF\",\"CSFcloseFracBrief\",sre.MathspeakUtil.closingFractionBrief],[\"CSF\",\"CSFopenFracSbrief\",sre.MathspeakUtil.openingFractionSbrief],[\"CSF\",\"CSFcloseFracSbrief\",sre.MathspeakUtil.closingFractionSbrief],[\"CSF\",\"CSFoverFracSbrief\",sre.MathspeakUtil.overFractionSbrief],[\"CSF\",\"CSFopenRadicalVerbose\",sre.MathspeakUtil.openingRadicalVerbose],[\"CSF\",\"CSFcloseRadicalVerbose\",sre.MathspeakUtil.closingRadicalVerbose],[\"CSF\",\"CSFindexRadicalVerbose\",sre.MathspeakUtil.indexRadicalVerbose],[\"CSF\",\"CSFopenRadicalBrief\",\nsre.MathspeakUtil.openingRadicalBrief],[\"CSF\",\"CSFcloseRadicalBrief\",sre.MathspeakUtil.closingRadicalBrief],[\"CSF\",\"CSFindexRadicalBrief\",sre.MathspeakUtil.indexRadicalBrief],[\"CSF\",\"CSFopenRadicalSbrief\",sre.MathspeakUtil.openingRadicalSbrief],[\"CSF\",\"CSFindexRadicalSbrief\",sre.MathspeakUtil.indexRadicalSbrief],[\"CQF\",\"CQFisSmallRoot\",sre.MathspeakSpanishUtil.smallRoot],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],\n[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFbaselineBrief\",sre.MathspeakUtil.baselineBrief],[\"CSF\",\"CSFleftsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFleftsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFrightsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFrightsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],\n[\"CSF\",\"CSFleftsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFleftsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFrightsuperscriptBrief\",sre.MathspeakUtil.superscriptBrief],[\"CSF\",\"CSFrightsubscriptBrief\",sre.MathspeakUtil.subscriptBrief],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],[\"CTXF\",\"CTXFordinalCounter\",sre.MathspeakSpanishUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],\n[\"CTXF\",\"CTXFunitMultipliers\",sre.UnitUtil.unitMultipliers],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFoneLeft\",sre.UnitUtil.oneLeft],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:['Rule{collapsed{default{[n] . (engine:modality=summary,grammar:collapsed); [t] \"plegado\";{self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"SpecializedRule\",\n\"collapsed\",\"default\",\"brief\"],[\"SpecializedRule\",\"collapsed\",\"brief\",\"sbrief\"],\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::number;contains(@grammar, \"protected\")'.split(\";\"),[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"espacio\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),\n'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"m\\u00e1s\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{number-with-chars{default{[t] \"n\\u00famero\"; [m] CQFspaceoutNumber (grammar:protected){self::number{@role=\"othernumber\"{\"\" != translate(text(), \"0123456789.,\", \"\"){not(contains(@grammar, \"protected\"))'.split(\"{\"),[\"SpecializedRule\",\"number-with-chars\",\"default\",\"brief\",'[t] \"n\\u00fam\"; [m] CQFspaceoutNumber (grammar:protected)'],[\"SpecializedRule\",\"number-with-chars\",\"brief\",\"sbrief\"],'Rule{number-as-upper-word{default{[t] \"may\\u00fascula\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"brief\"],[\"SpecializedRule\",\"number-as-upper-word\",\"default\",\"sbrief\"],'Rule{number-baseline{default{[t] \"l\\u00ednea base\"; [n] . (grammar:baseline){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{not(contains(@grammar, \"baseline\")){preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline\",\n\"default\",\"brief\",'[t] \"base\"; [n] text()'],[\"SpecializedRule\",\"number-baseline\",\"brief\",\"sbrief\"],'Rule{number-baseline-font{default{[t] \"l\\u00ednea base\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),[\"SpecializedRule\",\"number-baseline-font\",\n\"default\",\"brief\",'[t] \"base\"; [t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font)'],[\"SpecializedRule\",\"number-baseline-font\",\"brief\",\"sbrief\"],'Rule;identifier;default;[m] CQFspaceoutIdentifier;self::identifier;string-length(text())>1;@role!=\"unit\";not(@font) or @font=\"normal\" or contains(@grammar, \"ignoreFont\");text()!=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\")'.split(\";\"),\n[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],'Rule,negative,default,[t] \"menos\"; [n] children/*[1],self::prefixop,@role=\"negative\",children/identifier'.split(\",\"),[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"',\"children/number\"],[\"Aliases\",\"negative\",\"self::prefixop\",'@role=\"negative\"','children/fraction[@role=\"vulgar\"]'],'Rule,negative,default,[t] \"menos\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[m] content/*; [n] children/*[1]\",\n\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [m] content/*\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],'Rule,subtraction,default,[m] children/* (separator:\"menos\");,self::infixop,@role=\"subtraction\"'.split(\",\"),\n[\"Rule\",\"function-unknown\",\"default\",\"[n] children/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,function-prefix,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"prefix function\"]'.split(\",\"),'Rule,fences-open-close,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-neutral,default,[t] \"empezar valor absoluto\"; [n] children/*[1]; [t] \"finalizar valor absoluto\",self::fenced,@role=\"neutral\",content/*[1][text()]=\"|\" or content/*[1][text()]=\"\\u2758\" or content/*[1][text()]=\"\\uff5c\"'.split(\",\"),\n[\"SpecializedRule\",\"fences-neutral\",\"default\",\"sbrief\",'[t] \"valor absoluto\"; [n] children/*[1]; [t] \"finalizar valor absoluto\"'],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),'Rule,fences-set,default,[t] \"empezar llave\"; [n] children/*[1]; [t] \"finalizar llave\",self::fenced,@role=\"set empty\" or @role=\"set extended\" or @role=\"set singleton\" or @role=\"set collection\",not(name(../..)=\"appl\")'.split(\",\"),[\"SpecializedRule\",\n\"fences-set\",\"default\",\"sbrief\",'[t] \"llave\"; [n] children/*[1]; [t] \"finalizar llave\"'],[\"Rule\",\"text\",\"default\",\"[n] text() (grammar:noTranslateText)\",\"self::text\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),'Rule;minus;default;[t] \"menos\";self::operator;text()=\"-\"'.split(\";\"),'Rule;single-prime;default;[t] \"prima\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"doble prima\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),\n'Rule;triple-prime;default;[t] \"triple prima\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"cuadruplicar prima\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),'Rule,counted-prime,default,[t] count(children/*); [t] \"prime\",self::punctuated,@role=\"prime\"'.split(\",\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFracVerbose; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracVerbose\",\"self::fraction\"],[\"Rule\",\"fraction\",\n\"brief\",\"[t] CSFopenFracBrief; [n] children/*[1]; [t] CSFoverFracVerbose; [n] children/*[2]; [t] CSFcloseFracBrief\",\"self::fraction\"],[\"Rule\",\"fraction\",\"sbrief\",\"[t] CSFopenFracSbrief; [n] children/*[1]; [t] CSFoverFracSbrief; [n] children/*[2]; [t] CSFcloseFracSbrief\",\"self::fraction\"],'Rule,continued-fraction-outer,default,[t] \"fracci\\u00f3n continua\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2],self::fraction,not(ancestor::fraction),children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),\n[\"SpecializedRule\",\"continued-fraction-outer\",\"default\",\"brief\",'[t] \"frac continua\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-outer\",\"brief\",\"sbrief\"],'Rule,continued-fraction-inner,default,[t] \"empezar fracci\\u00f3n\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2],self::fraction,ancestor::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\" and not(following-sibling::*)]'.split(\",\"),[\"SpecializedRule\",\"continued-fraction-inner\",\"default\",\n\"brief\",'[t] \"empezar frac\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"SpecializedRule\",\"continued-fraction-inner\",\"brief\",\"sbrief\",'[t] \"frac\"; [n] children/*[1];[t] \"entre\"; [n] children/*[2]'],[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"brief\",\"[t] CSFopenRadicalBrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\"self::sqrt\"],[\"Rule\",\"sqrt\",\"sbrief\",\"[t] CSFopenRadicalSbrief; [n] children/*[1]; [t] CSFcloseRadicalBrief\",\n\"self::sqrt\"],\"Rule,root-small,default,[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,brief,[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),\"Rule,root-small,sbrief,[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief,self::root,CQFisSmallRoot\".split(\",\"),[\"Rule\",\"root\",\"default\",\"[t] CSFindexRadicalVerbose; [n] children/*[1];[t] CSFopenRadicalVerbose; [n] children/*[2]; [t] CSFcloseRadicalVerbose\",\n\"self::root\"],[\"Rule\",\"root\",\"brief\",\"[t] CSFindexRadicalBrief; [n] children/*[1];[t] CSFopenRadicalBrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],[\"Rule\",\"root\",\"sbrief\",\"[t] CSFindexRadicalSbrief; [n] children/*[1];[t] CSFopenRadicalSbrief; [n] children/*[2]; [t] CSFcloseRadicalBrief\",\"self::root\"],'Rule,limboth,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"finalizar \\u00edndices\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"finalizar \\u00edndices\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"finalizar \\u00edndices\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\n\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"definida\"; [t] \"sub\\u00edndice\"; [n] children/*[2];[t] \"super\\u00edndice\"; [n] children/*[3]; [t] \"l\\u00ednea base\";,self::limboth,@role=\"integral\"'.split(\",\"),[\"SpecializedRule\",\"integral\",\"default\",\"brief\",'[n] children/*[1]; [t] \"Sub\"; [n] children/*[2];[t] \"Sup\"; [n] children/*[3]; [t] \"Base\";'],[\"SpecializedRule\",\"integral\",\"brief\",\"sbrief\"],[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\n\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\n\"self::subscript\"],[\"Rule\",\"subscript\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]\",\"self::subscript\"],[\"SpecializedRule\",\"subscript\",\"brief\",\"sbrief\"],'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsubscriptBrief; [n] children/*[2]; [t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"subscript-baseline\",\"brief\",\"sbrief\"],'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\n\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"SpecializedRule\",\"subscript-empty-sup\",\n\"default\",\"brief\"],[\"SpecializedRule\",\"subscript-empty-sup\",\"brief\",\"sbrief\"],[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],[\"SpecializedRule\",\"superscript\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2]\"],[\"SpecializedRule\",\"superscript\",\"brief\",\"sbrief\"],'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n[\"SpecializedRule\",\"superscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]; [t] CSFsuperscriptBrief; [n] children/*[2];[t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"superscript-baseline\",\"brief\",\"sbrief\"],'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\n\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),\n[\"SpecializedRule\",\"superscript-empty-sub\",\"default\",\"brief\"],[\"SpecializedRule\",\"superscript-empty-sub\",\"brief\",\"sbrief\"],[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,square,default,[n] children/*[1]; [t] \"al cuadrado\",self::superscript,children/*[2],children/*[2][text()=2],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"square\",\"default\",\"brief\"],[\"SpecializedRule\",\"square\",\"default\",\"sbrief\"],'Aliases;square;self::superscript;children/*[2];children/*[2][text()=2];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,cube,default,[n] children/*[1]; [t] \"al cubo\",self::superscript,children/*[2],children/*[2][text()=3],name(children/*[1])!=\"text\" or not(name(children/*[1])=\"text\" and (name(../../../punctuated[@role=\"text\"]/..)=\"stree\" or name(..)=\"stree\")),name(children/*[1])!=\"subscript\" or (name(children/*[1])=\"subscript\" and name(children/*[1]/children/*[1])=\"identifier\" and name(children/*[1]/children/*[2])=\"number\" and children/*[1]/children/*[2][@role!=\"mixed\"] and children/*[1]/children/*[2][@role!=\"othernumber\"]),not(@embellished)'.split(\",\"),\n[\"SpecializedRule\",\"cube\",\"default\",\"brief\"],[\"SpecializedRule\",\"cube\",\"default\",\"sbrief\"],'Aliases;cube;self::superscript;children/*[2];children/*[2][text()=3];@embellished;children/*[1][@role=\"prefix operator\"]'.split(\";\"),'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),[\"SpecializedRule\",\"prime\",\"default\",\"brief\"],[\"SpecializedRule\",\"prime\",\"default\",\"sbrief\"],'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]\"],[\"SpecializedRule\",\"prime-subscript\",\"brief\",\"sbrief\"],'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n[\"SpecializedRule\",\"prime-subscript-baseline\",\"default\",\"brief\",\"[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptBrief; [n] children/*[1]/children/*[2]; [t] CSFbaselineBriefS\"],[\"SpecializedRule\",\"prime-subscript-baseline\",\"brief\",\"sbrief\"],'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,overscore,default,[t] \"modificando superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"overscore\",\"default\",\"brief\",'[t] \"mod superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"overscore\",\"brief\",\"sbrief\"],'Rule,double-overscore,default,[t] \"modificando superior superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),[\"SpecializedRule\",\"double-overscore\",\"default\",\"brief\",'[t] \"mod superior superior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],\n[\"SpecializedRule\",\"double-overscore\",\"brief\",\"sbrief\"],'Rule,underscore,default,[t] \"modificando inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),[\"SpecializedRule\",\"underscore\",\"default\",\"brief\",'[t] \"mod inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"underscore\",\"brief\",\"sbrief\"],'Rule,double-underscore,default,[t] \"modificando inferior inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2],self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),\n[\"SpecializedRule\",\"double-underscore\",\"default\",\"brief\",'[t] \"mod inferior inferior\"; [n] children/*[1]; [t] \"con\"; [n] children/*[2]'],[\"SpecializedRule\",\"double-underscore\",\"brief\",\"sbrief\"],'Rule,overbar,default,[n] children/*[1]; [t] \"barra\",self::overscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"overaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"overbar\",\n\"default\",\"brief\",'[n] children/*[1]; [t] \"barra\"'],[\"SpecializedRule\",\"overbar\",\"brief\",\"sbrief\"],'Rule,underbar,default,[n] children/*[1]; [t] \"subbarra\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"\\u00af\" or text()=\"\\uffe3\" or text()=\"\\uff3f\" or text()=\"_\" or text()=\"\\u203e\"]'.split(\",\"),[\"SpecializedRule\",\"underbar\",\"default\",\"brief\",'[n] children/*[1]; [t] \"subbarra\"'],[\"SpecializedRule\",\"underbar\",\n\"brief\",\"sbrief\"],'Rule,overtilde,default,[n] children/*[1]; [t] \"tilde\",self::overscore,children/*[2][@role=\"overaccent\"],@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),[\"SpecializedRule\",\"overtilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"tilde\"'],[\"SpecializedRule\",\"overtilde\",\"brief\",\"sbrief\"],'Rule,undertilde,default,[n] children/*[1]; [t] \"subtilde\",self::underscore,@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\",children/*[2][@role=\"underaccent\"],children/*[2][text()=\"~\" or text()=\"\\u02dc\" or text()=\"\\u223c\" or text()=\"\\uff5e\"]'.split(\",\"),\n[\"SpecializedRule\",\"undertilde\",\"default\",\"brief\",'[n] children/*[1]; [t] \"subtilde\"'],[\"SpecializedRule\",\"undertilde\",\"brief\",\"sbrief\"],'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[t] \"empezar matriz\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar matriz\"',\"self::matrix\"],[\"Rule\",\"matrix\",\"sbrief\",\n'[t] \"matriz\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\" \"); [t] \"finalizar matriz\"',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\");[p] (pause: 200)',\"self::row\"],'Rule{row-with-label{default{[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content'.split(\"{\"),\n'Rule{row-with-label{brief{[t] \"etiqueta\"; [n] content/*[1]; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content'.split(\"{\"),[\"SpecializedRule\",\"row-with-label\",\"brief\",\"sbrief\"],'Rule{row-with-text-label{sbrief{[t] \"etiqueta\"; [t] CSFRemoveParens;[m] children/* (ctxtFunc:CTXFordinalCounter,context:\"columna\"){self::row{content{name(content/cell/children/*[1])=\"text\"'.split(\"{\"),'Rule;empty-row;default;[t] \"espacio\";self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\n\"default\",\"[n] children/*[1]; [p] (pause: 300)\",\"self::cell\"],'Rule,empty-cell,default,[t] \"espacio\"; [p] (pause: 300),self::cell,count(children/*)=0'.split(\",\"),'Rule{determinant{default{[t] \"empezar determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar determinante\"{self::matrix{@role=\"determinant\"'.split(\"{\"),[\"SpecializedRule\",\"determinant\",\"default\",\"sbrief\",'[t] \"determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar determinante\"'],\n'Rule{determinant-simple{default{[t] \"empezar determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila\",grammar:simpleDet); [t] \"finalizar determinante\"{self::matrix{@role=\"determinant\"{CQFdetIsSimple'.split(\"{\"),[\"SpecializedRule\",\"determinant-simple\",\"default\",\"sbrief\",'[t] \"determinante\"; [t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila\",grammar:simpleDet); [t] \"finalizar determinante\"'],\n'Rule{row-simple{default{[m] children/*;{self::row{@role=\"determinant\"{contains(@grammar, \"simpleDet\")'.split(\"{\"),[\"Rule\",\"layout\",\"default\",'[t] \"empezar esquema\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::table\"],[\"Rule\",\"layout\",\"sbrief\",'[t] \"esquema\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::table\"],'Rule,binomial,default,[t] \"empezar binomial\"; [n] children/*[1]/children/*[1]; [t] \"en\"; [n] children/*[2]/children/*[1];  [t] \"finalizar binomial\",self::vector,@role=\"binomial\"'.split(\",\"),\n'Rule,binomial,sbrief,[t] \"binomial\"; [n] children/*[1]/children/*[1]; [t] \"en\"; [n] children/*[2]/children/*[1];  [t] \"finalizar binomial\",self::vector,@role=\"binomial\"'.split(\",\"),[\"Rule\",\"cases\",\"default\",'[t] \"empezar esquema\"; [n] content/*[1]; [t] \"alargada\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\"self::cases\"],[\"Rule\",\"cases\",\"sbrief\",'[t] \"esquema\"; [n] content/*[1]; [t] \"alargada\"; [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"fila \"); [t] \"finalizar esquema\"',\n\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),[\"SpecializedRule\",\"line-with-label\",\"default\",\"brief\",'[t] \"etiqueta\"; [n] content/*[1] (pause: 200); [m] children/*'],[\"SpecializedRule\",\"line-with-label\",\"brief\",\"sbrief\"],'Rule,line-with-text-label,sbrief,[t] \"etiqueta\"; [t] CSFRemoveParens; [m] children/*,self::line,content,name(content/cell/children/*[1])=\"text\"'.split(\",\"),\n'Rule;empty-line;default;[t] \"espacio\";self::line;count(children/*)=0;not(content)'.split(\";\"),[\"SpecializedRule\",\"empty-line\",\"default\",\"brief\"],[\"SpecializedRule\",\"empty-line\",\"brief\",\"sbrief\"],'Rule,empty-line-with-label,default,[t] \"con etiqueta\"; [n] content/*[1]; [t] \"finalizar etiqueta\" (pause: 200); [t] \"espacio\",self::line,count(children/*)=0,content'.split(\",\"),[\"SpecializedRule\",\"empty-line-with-label\",\"default\",\"brief\",'[t] \"etiqueta\"; [n] content/*[1] (pause: 200); [t] \"espacio\"'],[\"SpecializedRule\",\n\"empty-line-with-label\",\"brief\",\"sbrief\"],[\"Rule\",\"enclose\",\"default\",'[t] \"empezar rodear\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"finalizar rodear\"',\"self::enclose\"],[\"Aliases\",\"overbar\",\"self::enclose\",'@role=\"top\"'],[\"Aliases\",\"underbar\",\"self::enclose\",'@role=\"bottom\"'],'Rule,leftbar,default,[t] \"barra vertical\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"barra vertical\",self::enclose,@role=\"right\"'.split(\",\"),'Rule,crossout,default,[t] \"tachado\"; [n] children/*[1]; [t] \"finalizar tachado\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),\n'Rule,cancel,default,[t] \"tachado\"; [n] children/*[1]/children/*[1]; [t] \"con\"; [n] children/*[2]; [t] \"finalizar tachado\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"SpecializedRule\",\"cancel\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],'Rule,cancel-reverse,default,[t] \"tachado\"; [n] children/*[2]/children/*[1]; [t] \"con\"; [n] children/*[1]; [t] \"finalizar tachado\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),\n[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"brief\"],[\"SpecializedRule\",\"cancel-reverse\",\"default\",\"sbrief\"],[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),\n[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule;unit-singular;default;[t] text() (grammar:annotation=\"unit\":translate);self::identifier;@role=\"unit\"'.split(\";\"),'Rule;unit-plural;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\";not(contains(@grammar, \"singularUnit\"))'.split(\";\"),'Rule,unit-square,default,[n] children/*[1]; [t] \"cuadrado\",self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),\n'Rule,unit-cubic,default,[n] children/*[1]; [t] \"c\\u00fabico\",self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"rec\\u00edproco\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),'Rule,reciprocal,default,[t] \"por\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),\n'Rule;unit-combine;default;[m] children/* (sepFunc:CTXFunitMultipliers);self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-combine-mult,default,[m] children/* (sepFunc:CTXFunitMultipliers);,self::infixop,@role=\"multiplication\" or @role=\"implicit\",children/*[@role=\"unit\"]'.split(\",\"),'Rule{unit-combiner-singular{default{[n] children/*[1]; [t] \"por\"; [m] children/*[position()>1] (grammar:!singularUnit, sepFunc:CTXFunitMultipliers){self::infixop{@role=\"unit\"{name(children/*[1])!=\"number\"{contains(@grammar, \"singularUnit\"){count(children/*)>1'.split(\"{\"),\n'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); [t] \"por\"; [m] children/*[position()>2] (sepFunc:CTXFunitMultipliers),self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1]'.split(\",\"),'Rule,unit-combine-singular-first,default,[n] children/*[1]; [n] children/*[2] (grammar:singularUnit); ,self::infixop,@role=\"unit\",name(children/*[1])=\"number\",children/*[1][text()=1],count(children/*)=2'.split(\",\"),'Rule,unit-divide,default,[n] children/*[1]; [t] \"por\"; [n] children/*[2] (grammar:singularUnit),self::fraction,@role=\"unit\"'.split(\",\")],\ninitialize:[sre.MathspeakUtil.generateTensorRules]};sre.NemethUtil={};sre.NemethUtil.openingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_START};sre.NemethUtil.closingFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_END};sre.NemethUtil.overFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+sre.Messages.MS.FRACTION_OVER};\nsre.NemethUtil.overBevelledFraction=function(a){a=sre.MathspeakUtil.fractionNestingDepth(a);return Array(a).join(sre.Messages.MS.FRACTION_REPEAT)+\"\\u2838\"+sre.Messages.MS.FRACTION_OVER};sre.NemethUtil.nestedRadical=function(a,b){a=sre.NemethUtil.radicalNestingDepth(a);return 1===a?b:Array(a).join(sre.Messages.MS.NESTED)+b};sre.NemethUtil.radicalNestingDepth=function(a,b){b=b||0;return a.parentNode?sre.NemethUtil.radicalNestingDepth(a.parentNode,\"root\"===a.tagName||\"sqrt\"===a.tagName?b+1:b):b};\nsre.NemethUtil.openingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.STARTROOT)};sre.NemethUtil.closingRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ENDROOT)};sre.NemethUtil.indexRadical=function(a){return sre.NemethUtil.nestedRadical(a,sre.Messages.MS.ROOTINDEX)};\nsre.NemethUtil.enlargeFence=function(a){if(1===a.length)return\"\\u2820\"+a;var b=a.split(\"\");return b.every(function(c){return\"\\u2833\"===c})?\"\\u2820\"+b.join(\"\\u2820\"):a.slice(0,1)+\"\\u2820\"+a.slice(1)};sre.Grammar.getInstance().setCorrection(\"enlargeFence\",sre.NemethUtil.enlargeFence);sre.NemethUtil.NUMBER_PROPAGATORS_=[sre.SemanticAttr.Type.MULTIREL,sre.SemanticAttr.Type.RELSEQ,sre.SemanticAttr.Type.PUNCTUATED,sre.SemanticAttr.Type.APPL];\nsre.NemethUtil.checkParent_=function(a){a=a.parent;if(!a)return!1;var b=a.type;return-1!==sre.NemethUtil.NUMBER_PROPAGATORS_.indexOf(b)||b===sre.SemanticAttr.Type.PREFIXOP&&a.role===sre.SemanticAttr.Role.NEGATIVE?!0:!1};sre.NemethUtil.propagateNumber=function(a,b){if(!a.childNodes.length)return sre.NemethUtil.checkParent_(a)&&(b.number=!0),[b.number?\"number\":\"\",{number:!1}];sre.NemethUtil.checkParent_(a)&&(b.number=!0);return[\"\",b]};\nsre.NemethUtil.numberIndicator=function(){return new sre.SemanticVisitor(\"nemeth\",sre.NemethUtil.propagateNumber,{number:!0})};sre.NemethUtil.addAnnotators=function(){sre.SemanticAnnotations.getInstance().register(sre.NemethUtil.numberIndicator())};sre.NemethUtil.componentString_={2:\"CSFbaseline\",1:\"CSFsubscript\",0:\"CSFsuperscript\"};sre.NemethUtil.childNumber_={4:2,3:3,2:1,1:4,0:5};\nsre.NemethUtil.generateTensorRuleStrings_=function(a){var b=[],c=\"\";a=parseInt(a,2);for(var d=0;5>d;d++){var e=\"children/*[\"+sre.NemethUtil.childNumber_[d]+\"]\";a&1?c=\"[t] \"+sre.NemethUtil.componentString_[d%3]+\"Verbose; [n] \"+e+\";\"+c:b.unshift(\"name(\"+e+')=\"empty\"');a>>=1}b.push(c);return b};\nsre.NemethUtil.generateTensorRules=function(a){var b=goog.bind(a.defineRule,a);a=goog.bind(a.defineRulesAlias,a);for(var c=\"11111 11110 11101 11100 10111 10110 10101 10100 01111 01110 01101 01100\".split(\" \"),d=0,e;e=c[d];d++){var f=\"tensor\"+e;e=sre.NemethUtil.generateTensorRuleStrings_(e);var g=e.pop(),h=[f,\"default\",g,\"self::tensor\"].concat(e);b.apply(null,h);g+=\"; [t]\"+sre.NemethUtil.componentString_[2]+\"Verbose\";f+=\"-baseline\";h=[f,\"default\",g,\"self::tensor\",\"following-sibling::*\"].concat(e);b.apply(null,\nh);f=[f,\"self::tensor\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::punctuated|ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::relseq|ancestor::multirel|@embellished\"].concat(e);a.apply(null,f)}};sre.NemethRules={locale:\"nemeth\",modality:\"braille\",domain:\"default\",functions:[[\"CQF\",\"CQFspaceoutNumber\",sre.MathspeakUtil.spaceoutNumber],[\"CQF\",\"CQFspaceoutIdentifier\",sre.MathspeakUtil.spaceoutIdentifier],[\"CSF\",\"CSFspaceoutText\",sre.MathspeakUtil.spaceoutText],[\"CSF\",\"CSFopenFraction\",sre.NemethUtil.openingFraction],[\"CSF\",\"CSFcloseFraction\",sre.NemethUtil.closingFraction],[\"CSF\",\"CSFoverFraction\",sre.NemethUtil.overFraction],[\"CSF\",\"CSFoverBevFraction\",sre.NemethUtil.overBevelledFraction],\n[\"CSF\",\"CSFopenRadicalVerbose\",sre.NemethUtil.openingRadical],[\"CSF\",\"CSFcloseRadicalVerbose\",sre.NemethUtil.closingRadical],[\"CSF\",\"CSFindexRadicalVerbose\",sre.NemethUtil.indexRadical],[\"CSF\",\"CSFsuperscriptVerbose\",sre.MathspeakUtil.superscriptVerbose],[\"CSF\",\"CSFsubscriptVerbose\",sre.MathspeakUtil.subscriptVerbose],[\"CSF\",\"CSFbaselineVerbose\",sre.MathspeakUtil.baselineVerbose],[\"CSF\",\"CSFunderscript\",sre.MathspeakUtil.nestedUnderscore],[\"CSF\",\"CSFoverscript\",sre.MathspeakUtil.nestedOverscore],\n[\"CTXF\",\"CTXFordinalCounter\",sre.NumbersUtil.ordinalCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator],[\"CQF\",\"CQFdetIsSimple\",sre.MathspeakUtil.determinantIsSimple],[\"CSF\",\"CSFRemoveParens\",sre.MathspeakUtil.removeParens],[\"CQF\",\"CQFresetNesting\",sre.MathspeakUtil.resetNestingDepth]],rules:[\"Rule;stree;default;[n] ./*[1];self::stree;CQFresetNesting\".split(\";\"),[\"Rule\",\"unknown\",\"default\",\"[n] text()\",\"self::unknown\"],'Rule;protected;default;[t] text();self::*;@role=\"protected\"'.split(\";\"),\n[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule;blank-empty;default;[t] \"\\u2800\";self::empty;count(../*)=1;name(../..)=\"cell\" or name(../..)=\"line\"'.split(\";\"),'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;@role!=\"greekletter\";not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),'Rule{number-indicator{default{[t] \"\\u283c\"; [n] text() (pause:10){self::number{contains(@annotation, \"nemeth:number\"){not(ancestor::sqrt){not(ancestor::root){not(ancestor::fraction)'.split(\"{\"),\n[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"\\u2838\\u2839\"; [n] children/*[2]/children/*[1]; [t] \"\\u280c\"; [n] children/*[2]/children/*[2]; [t] \"\\u2838\\u283c\",self::number,@role=\"mixed\"'.split(\",\"),'Rule{number-with-chars{default{[t] \"\\u283c\"; [m] CQFspaceoutNumber{self::number{\"\" != translate(text(), \"0123456789.,\", \"\"){text() != translate(text(), \"0123456789.,\", \"\")'.split(\"{\"),'Rule{number-as-upper-word{default{[t] \"UpperWord\"; [t] CSFspaceoutText{self::number{string-length(text())>1{text()=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9\", \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\"){\"\"=translate(text(), \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\",\"\")'.split(\"{\"),\n'Rule{number-baseline{default{[t] \"\\u2810\"; [n] text(){self::number{not(contains(@grammar, \"ignoreFont\")){preceding-sibling::identifier{preceding-sibling::*[1][@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),'Rule{number-baseline-font{default{[t] \"\\u2810\"; [t] @font; [n] . (grammar:ignoreFont=@font){self::number{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"{preceding-sibling::identifier{preceding-sibling::*[@role=\"latinletter\" or @role=\"greekletter\" or @role=\"otherletter\"]{parent::*/parent::infixop[@role=\"implicit\"]'.split(\"{\"),\n'Rule;identifier;default;[n] text();self::identifier;@role=\"protected\"'.split(\";\"),'Rule,negative,default,[t] \"\\u2824\"; [n] children/*[1],self::prefixop,@role=\"negative\"'.split(\",\"),[\"Rule\",\"prefix\",\"default\",\"[n] text(); [n] children/*[1]\",\"self::prefixop\"],[\"Rule\",\"postfix\",\"default\",\"[n] children/*[1]; [n] text()\",\"self::postfixop\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule;implicit;default;[m] children/*;self::infixop;@role=\"implicit\"'.split(\";\"),\n[\"Aliases\",\"implicit\",\"self::infixop\",'@role=\"leftsuper\" or @role=\"leftsub\" or @role=\"rightsuper\" or @role=\"rightsub\"'],[\"Rule\",\"function-named\",\"default\",'[n] children/*[1]; [t] \"\\u2800\"; [n] children/*[2]',\"self::appl\"],'Rule,function-prefix,default,[n] content/*[1]; [t] \"\\u2800\"; [n] children/*[1],self::prefixop,content/*[1][@role=\"infix function\"]'.split(\",\"),'Rule,function-infix,default,[n] children/*[1]; [n] content/*[1]; [t] \"\\u2800\"; [n] children/*[2],self::infixop,@role=\"infix function\"'.split(\",\"),\n'Rule,function-simple,default,[n] children/*[1]; [n] children/*[2],self::appl,children/*[1][@role=\"simple function\"]'.split(\",\"),[\"Rule\",\"fences-open-close\",\"default\",\"[n] content/*[1]; [n] children/*[1]; [n] content/*[2]\",\"self::fenced\"],'Rule,fences-neutral,default,[n] content/*[1]; [n] children/*[1]; [n] content/*[2],self::fenced,@role=\"neutral\"'.split(\",\"),[\"Rule\",\"text\",\"default\",\"[n] text()\",\"self::text\"],'Rule;factorial;default;[t] \"\\u282f\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),\n'Rule;single-prime;default;[t] \"\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=1'.split(\";\"),'Rule;double-prime;default;[t] \"\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=2'.split(\";\"),'Rule;triple-prime;default;[t] \"\\u2804\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=3'.split(\";\"),'Rule;quadruple-prime;default;[t] \"\\u2804\\u2804\\u2804\\u2804\";self::punctuated;@role=\"prime\";count(children/*)=4'.split(\";\"),[\"Rule\",\"fraction\",\"default\",\"[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverFraction; [n] children/*[2]; [t] CSFcloseFraction\",\n\"self::fraction\"],'Rule{bevelled-fraction{default{[t] CSFopenFraction; [n] children/*[1]; [t] CSFoverBevFraction; [n] children/*[2]; [t] CSFcloseFraction{self::fraction{contains(@annotation, \"general:bevelled\")'.split(\"{\"),[\"Rule\",\"sqrt\",\"default\",\"[t] CSFopenRadicalVerbose; [n] children/*[1]; [t] CSFcloseRadicalVerbose\",\"self::sqrt\"],[\"Rule\",\"root\",\"default\",'[t] CSFindexRadicalVerbose; [n] children/*[1];[t] \"\\u281c\"; [n] children/*[2]; [t] CSFcloseRadicalVerbose',\"self::root\"],'Rule,limboth,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3],self::limboth,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),\n'Rule,limlower,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];,self::limlower,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Rule,limupper,default,[t] \"\\u2810\"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2];,self::limupper,name(../..)=\"underscore\" or name(../..)=\"overscore\",following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\",\"),'Aliases;limlower;self::underscore;@role=\"limit function\";name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),\n'Aliases;limlower;self::underscore;children/*[2][@role!=\"underaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),'Aliases;limupper;self::overscore;children/*[2][@role!=\"overaccent\"];name(../..)=\"underscore\" or name(../..)=\"overscore\";following-sibling::*[@role!=\"underaccent\" and @role!=\"overaccent\"]'.split(\";\"),[\"Rule\",\"limboth-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2];[t] CSFoverscript; [n] children/*[3]; [t] \"\\u283b\"',\n\"self::limboth\"],[\"Rule\",\"limlower-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFunderscript; [n] children/*[2]; [t] \"\\u283b\"',\"self::limlower\"],[\"Rule\",\"limupper-end\",\"default\",'[t] \"\\u2810\"; [n] children/*[1]; [t] CSFoverscript; [n] children/*[2]; [t] \"\\u283b\"',\"self::limupper\"],[\"Aliases\",\"limlower-end\",\"self::underscore\",'@role=\"limit function\"'],[\"Aliases\",\"limlower-end\",\"self::underscore\"],[\"Aliases\",\"limupper-end\",\"self::overscore\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [n] children/*[2]; [n] children/*[3];\",\n\"self::integral\"],'Rule,integral,default,[n] children/*[1]; [t] \"\\u2830\"; [n] children/*[2];[t] \"\\u2818\"; [n] children/*[3]; [t] \"\\u2810\",self::limboth,@role=\"integral\"'.split(\",\"),[\"Rule\",\"bigop\",\"default\",\"[n] children/*[1]; [n] children/*[2];\",\"self::bigop\"],[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],'Rule,equality,default,[n] children/*[1]; [n] content/*[1]; [n] children/*[2],self::relseq,@role=\"equality\",count(./children/*)=2'.split(\",\"),'Rule;multi-equality;default;[m] children/* (sepFunc:CTXFcontentIterator);self::relseq;@role=\"equality\";count(./children/*)>2'.split(\";\"),\n[\"Rule\",\"multrel\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::multirel\"],[\"Rule\",\"subscript\",\"default\",\"[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]\",\"self::subscript\"],'Rule,subscript-simple,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(./children/*[1])=\"identifier\",name(./children/*[2])=\"number\",./children/*[2][@role!=\"mixed\"],./children/*[2][@role!=\"othernumber\"],self::*'.split(\",\"),'Rule,subscript-baseline,default,[n] children/*[1]; [t] CSFsubscriptVerbose; [n] children/*[2]; [t] CSFbaselineVerbose,self::subscript,following-sibling::*,@role!=\"prefix function\",not(name(following-sibling::subscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"subscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and @role!=\"subsup\",not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n'Aliases;subscript-baseline;self::subscript;not(following-sibling::*);ancestor::fenced|ancestor::root|ancestor::sqrt|ancestor::punctuated|ancestor::fraction;not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",sre.MathspeakUtil.generateBaselineConstraint()],[\"Aliases\",\"subscript-baseline\",\"self::subscript\",\"not(following-sibling::*)\",\n\"@embellished\"],'Rule,subscript-empty-sup,default,[n] children/*[1]; [n] children/*[2],self::subscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"superscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"Aliases\",\"subscript-empty-sup\",\"self::subscript\",'name(children/*[2])=\"superscript\"','name(children/*[2]/children/*[1])=\"empty\"'],[\"Rule\",\"superscript\",\"default\",\"[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2]\",\"self::superscript\"],\n'Rule,superscript-baseline,default,[n] children/*[1]; [t] CSFsuperscriptVerbose; [n] children/*[2];[t] CSFbaselineVerbose,self::superscript,following-sibling::*,@role!=\"prefix function\",not(name(following-sibling::superscript/children/*[1])=\"empty\" or (name(following-sibling::infixop[@role=\"implicit\"]/children/*[1])=\"superscript\" and name(following-sibling::*/children/*[1]/children/*[1])=\"empty\")) and not(following-sibling::*[@role=\"rightsuper\" or @role=\"rightsub\" or @role=\"leftsub\" or @role=\"leftsub\"])'.split(\",\"),\n'Aliases;superscript-baseline;self::superscript;not(following-sibling::*);ancestor::punctuated;ancestor::*/following-sibling::* and not(ancestor::punctuated[@role=\"leftsuper\" or @role=\"rightsub\" or @role=\"rightsuper\" or @role=\"rightsub\"])'.split(\";\"),[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::fraction|ancestor::fenced|ancestor::root|ancestor::sqrt\"],[\"Aliases\",\"superscript-baseline\",\"self::superscript\",\"not(following-sibling::*)\",\"ancestor::relseq|ancestor::multirel\",\n\"not(@embellished)\",sre.MathspeakUtil.generateBaselineConstraint()],'Aliases superscript-baseline self::superscript not(following-sibling::*) @embellished not(children/*[2][@role=\"prime\"])'.split(\" \"),'Rule,superscript-empty-sub,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[2])=\"infixop\",name(children/*[2][@role=\"implicit\"]/children/*[1])=\"subscript\",name(children/*[2]/children/*[1]/children/*[1])=\"empty\"'.split(\",\"),[\"Aliases\",\"superscript-empty-sub\",\"self::superscript\",\n'name(children/*[2])=\"subscript\"','name(children/*[2]/children/*[1])=\"empty\"'],'Rule,prime,default,[n] children/*[1]; [n] children/*[2],self::superscript,children/*[2],children/*[2][@role=\"prime\"]'.split(\",\"),'Rule,prime-subscript,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",not(following-sibling::*)'.split(\",\"),'Rule,prime-subscript-baseline,default,[n] children/*[1]/children/*[1]; [n] children/*[2]; [t] CSFsubscriptVerbose; [n] children/*[1]/children/*[2]; [t] CSFbaselineVerbose,self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",following-sibling::*'.split(\",\"),\n'Aliases prime-subscript-baseline self::superscript children/*[2][@role=\"prime\"] name(children/*[1])=\"subscript\" not(following-sibling::*) @embellished'.split(\" \"),'Rule,prime-subscript-simple,default,[n] children/*[1]/children/*[1]; [n] children/*[2];[n] children/*[1]/children/*[2],self::superscript,children/*[2][@role=\"prime\"],name(children/*[1])=\"subscript\",name(children/*[1]/children/*[1])=\"identifier\",name(children/*[1]/children/*[2])=\"number\",children/*[1]/children/*[2][@role!=\"mixed\"],children/*[1]/children/*[2][@role!=\"othernumber\"]'.split(\",\"),\n'Rule,overscore,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2823\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,children/*[2][@role=\"overaccent\"]'.split(\",\"),'Rule{overscore{default{[n] children/*[1]; [t] \"\\u2823\"; [n] children/*[2]{self::overscore{children/*[2][@role=\"overaccent\"]{contains(@grammar, \"modified\")'.split(\"{\"),'Rule,double-overscore,default,[t] \"\\u2810\"; [n] children/*[1] (grammar:\"modified\"); [t] \"\\u2823\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,children/*[2][@role=\"overaccent\"],name(children/*[1])=\"overscore\",children/*[1]/children/*[2][@role=\"overaccent\"]'.split(\",\"),\n'Rule,underscore,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2829\"; [n] children/*[2]; [t] \"\\u283b\",self::underscore,children/*[2][@role=\"underaccent\"]'.split(\",\"),'Rule{underscore{default{[n] children/*[1]; [t] \"\\u2829\"; [n] children/*[2]{self::underscore{children/*[2][@role=\"underaccent\"]{contains(@grammar, \"modified\")'.split(\"{\"),'Rule,double-underscore,default,[t] \"\\u2810\"; [n] children/*[1] (grammar:\"modified\"); [t] \"\\u2829\"; [n] children/*[2]; [t] \"\\u283b\",self::underscore,children/*[2][@role=\"underaccent\"],name(children/*[1])=\"underscore\",children/*[1]/children/*[2][@role=\"underaccent\"]'.split(\",\"),\n'Rule,matrix-fence,default,[n] children/*[1];,self::fenced,count(children/*)=1,name(children/*[1])=\"matrix\"'.split(\",\"),[\"Rule\",\"matrix\",\"default\",'[m] children/* (separator:\"\\u2800\", join:\"\");',\"self::matrix\"],[\"Aliases\",\"matrix\",\"self::vector\"],[\"Rule\",\"matrix-row\",\"default\",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:\"\\u2800\"); [n] ../../content/*[2] (grammar:enlargeFence); ',\"self::row\"],[\"Aliases\",\"matrix-row\",\"self::line\",'@role=\"vector\"'],[\"Aliases\",\"matrix-row\",\n\"self::line\",'@role=\"binomial\"'],'Rule{row-with-label{default{[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [m] children/* (ctxtFunc:CTXFordinalCounter,context:\"Column\"){self::row{content'.split(\"{\"),'Rule;empty-row;default;[t] \"\\u2800\" (pause:300);self::row;count(children/*)=0'.split(\";\"),[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",\"self::cell\"],'Rule;empty-cell;default;[t] \"\\u2800\" (pause: 300);self::cell;count(children/*)=0'.split(\";\"),[\"Rule\",\"layout\",\"default\",'[m] children/* (separator:\"\\u2800\", join:\"\");',\n\"self::table\"],[\"Rule\",\"cases\",\"default\",'[n] ../../content/*[1] (grammar:enlargeFence); [m] children/* (separator:\"\\u2800\"); [t] \"\\u2810\"',\"self::cases\"],[\"Aliases\",\"layout\",\"self::multiline\"],[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],'Rule,line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\" (pause: 200); [m] children/*,self::line,content'.split(\",\"),'Rule;empty-line;default;[t] \"\\u2800\";self::line;count(children/*)=0;not(content)'.split(\";\"),'Rule,empty-line-with-label,default,[t] \"with Label\"; [n] content/*[1]; [t] \"EndLabel\"(pause: 200); [t] \"Blank\",self::line,count(children/*)=0,content'.split(\",\"),\n[\"Rule\",\"enclose\",\"default\",'[t] \"StartEnclose\"; [t] @role (grammar:localEnclose); [n] children/*[1]; [t] \"EndEnclose\"',\"self::enclose\"],'Rule,overbar,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2823\\u2831\\u283b\",self::enclose,@role=\"top\"'.split(\",\"),'Rule,underbar,default,[t] \"\\u2810\"; [n] children/*[1]; [t] \"\\u2829\\u2831\\u283b\",self::enclose,@role=\"bottom\"'.split(\",\"),'Rule,leftbar,default,[t] \"\\u2833\"; [n] children/*[1],self::enclose,@role=\"left\"'.split(\",\"),'Rule,rightbar,default,[n] children/*[1]; [t] \"\\u2833\",self::enclose,@role=\"right\"'.split(\",\"),\n'Rule,crossout,default,[t] \"\\u282a\"; [n] children/*[1]; [t] \"\\u283b\",self::enclose,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),'Rule,cancel,default,[t] \"\\u282a\"; [n] children/*[1]/children/*[1]; [t] \"\\u282a\"; [n] children/*[2]; [t] \"\\u283b\",self::overscore,@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'.split(\",\"),[\"Aliases\",\"cancel\",\"self::underscore\",'@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"'],\n'Rule,cancel-reverse,default,[t] \"\\u282a\"; [n] children/*[2]/children/*[1]; [t] \"\\u282a\"; [n] children/*[1]; [t] \"\\u283b\",self::overscore,name(children/*[2])=\"enclose\",children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'.split(\",\"),[\"Aliases\",\"cancel-reverse\",\"self::underscore\",'name(children/*[2])=\"enclose\"','children/*[2][@role=\"updiagonalstrike\" or @role=\"downdiagonalstrike\" or @role=\"horizontalstrike\"]'],'Rule;end-punct;default;[m] children/*;self::punctuated;@role=\"endpunct\"'.split(\";\"),\n'Rule,start-punct,default,[n] content/*[1]; [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule{punctuation{default{[n] text(); [t] \"\\u2810\"{self::punctuation{@role=\"fullstop\"{contains(@annotation, \"nemeth:number\")'.split(\"{\"),'Rule,integral-punct,default,[n] children/*[1]; [n] children/*[3],self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/*\",\"self::punctuated\"],'Rule,punctuation-comma,default,[n] text(); [t] \"\\u2800\",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role!=\"fullstop\",@role!=\"vbar\"'.split(\",\"),\n'Rule,punctuation-ellipses,default,[t] \"\\u2800\"; [n] text(); [t] \"\\u2800\",self::punctuation,parent::*/parent::punctuated,following-sibling::*,@role=\"ellipsis\",name(preceding-sibling::*[1])!=\"punctuation\"'.split(\",\"),'Rule,punctuation-ellipses,default,[t] \"\\u2800\"; [n] text();,self::punctuation,parent::*/parent::punctuated,@role=\"ellipsis\",name(preceding-sibling::*[1])!=\"punctuation\"'.split(\",\"),'Rule,reference-sign,default,[n] children/*[1]; [n] children/*[2],self::superscript,name(children/*[1])=\"text\" or (name(children/*[1])=\"punctuated\" and children/*[1][@role=\"text\"]),name(children/*[2])=\"operator\" or name(children/*[2])=\"punctuation\"'.split(\",\"),\n'Rule,reference-number,default,[n] children/*[1]; [t] \"\\u2808\\u283b\"; [n] children/*[2]; [t] \"\\u2810\",self::superscript,name(children/*[1])=\"text\" or (name(children/*[1])=\"punctuated\" and children/*[1][@role=\"text\"]),name(children/*[2])=\"number\",children/*[2][@role=\"integer\"]'.split(\",\")],initialize:[sre.NemethUtil.generateTensorRules,sre.NemethUtil.addAnnotators]};sre.PrefixFrench={locale:\"fr\",modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"num\\u00e9rateur\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"d\\u00e9nominateur\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\" or name(../..)=\"limlower\" or name(../..)=\"limupper\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,base-limit,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"limboth\"'.split(\",\"),'Rule,exponent,default,[t] \"exposant\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"indice\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"indice suscrit\"; [p] (pause:200),self::*,name(../..)=\"overscore\" or name(../..)=\"limupper\" or name(../..)=\"limboth\",count(preceding-sibling::*)=1 or count(preceding-sibling::*)=2'.split(\",\"),\n'Rule,underscript,default,[t] \"indice souscrit\"; [p] (pause:200),self::*,name(../..)=\"underscore\" or name(../..)=\"limlower\" or name(../..)=\"limboth\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,radicand,default,[t] \"radicande\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"radicande\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"indice\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,leftsub,default,[t] \"indice inf\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice inf\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),'Rule,leftsuper,default,[t] \"indice sup\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice sup\\u00e9rieur gauche\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),\n'Rule,rightsub,default,[t] \"indice inf\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice inf\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),'Rule,rightsuper,default,[t] \"indice sup\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"indice sup\\u00e9rieur droite\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),\n'Rule,choice,default,[t] \"nombre d\\'\\u00e9l\\u00e9ments choisis\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),'Rule,select,default,[t] \"nombre d\\'\\u00e9l\\u00e9ments disponibles\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"rang\\u00e9e\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],\n'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"colonne\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"colonne\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixGerman={modality:\"prefix\",locale:\"de\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"Z\\u00e4hler\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"Nenner\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"Basis\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"Exponent\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"Index\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"Oberer Grenzwert\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"Unterer Grenzwert\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"Radikand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"Radikand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"Wurzelexponent\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"linker unterer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition; [t] \"linker unterer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"linker oberer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] \"linker oberer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"rechter unterer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition; [t] \"rechter unterer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"rechter oberer Index\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] \"rechter oberer Index\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"Grundgesamtheit\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),'Rule,select,default,[t] \"Stichprobengr\\u00f6\\u00dfe\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),\n[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition; [t] \"Zeile\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] \"Spalte\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition; [t] \"Spalte\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixRules={modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"Numerator\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"Denominator\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"Base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"Exponent\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"Subscript\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"Overscript\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"Underscript\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"Radicand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"Radicand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"Index\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"Left Subscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition; [t] \"Left Subscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"Left Superscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition; [t] \"Left Superscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"Right Subscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition; [t] \"Right Subscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"Right Superscript\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition; [t] \"Right Superscript\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"Choice Quantity\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),'Rule,select,default,[t] \"Selection Quantity\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),\n[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition; [t] \"Row\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition; [t] \"Column\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition; [t] \"Column\"; [p] (pause:200)',\"self::cell\"]]};sre.PrefixSpanish={locale:\"es\",modality:\"prefix\",domain:\"default\",functions:[[\"CSF\",\"CSFordinalPosition\",sre.NumbersUtil.ordinalPosition]],rules:['Rule,numerator,default,[t] \"numerador\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,denominator,default,[t] \"denominador\"; [p] (pause:200),self::*,name(../..)=\"fraction\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,base,default,[t] \"base\"; [p] (pause:200),self::*,name(../..)=\"superscript\" or name(../..)=\"subscript\" or name(../..)=\"overscore\" or name(../..)=\"underscore\" or name(../..)=\"tensor\",count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,exponent,default,[t] \"exponente\"; [p] (pause:200),self::*,name(../..)=\"superscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,subscript,default,[t] \"sub\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"subscript\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,overscript,default,[t] \"sobre\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"overscore\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,underscript,default,[t] \"bajo\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"underscore\",count(preceding-sibling::*)=1'.split(\",\"),\n'Rule,radicand,default,[t] \"radicand\"; [p] (pause:200),self::*,name(../..)=\"sqrt\"'.split(\",\"),'Rule,radicand,default,[t] \"radicand\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=1'.split(\",\"),'Rule,index,default,[t] \"\\u00edndice\"; [p] (pause:200),self::*,name(../..)=\"root\",count(preceding-sibling::*)=0'.split(\",\"),'Rule,leftsub,default,[t] \"sub\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsub\"'.split(\",\"),'Rule,leftsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"sub\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsub\"'.split(\",\"),\n'Rule,leftsuper,default,[t] \"super\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"leftsuper\"'.split(\",\"),'Rule,leftsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"super\\u00edndice izquierdo\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"leftsuper\"'.split(\",\"),'Rule,rightsub,default,[t] \"sub\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsub\"'.split(\",\"),'Rule,rightsub,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"sub\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsub\"'.split(\",\"),\n'Rule,rightsuper,default,[t] \"super\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"tensor\",@role=\"rightsuper\"'.split(\",\"),'Rule,rightsuper,default,[t] CSFordinalPosition (grammar:gender=\"male\"); [t] \"super\\u00edndice derecho\"; [p] (pause:200),self::*,name(../..)=\"punctuated\",name(../../../..)=\"tensor\",../../@role=\"rightsuper\"'.split(\",\"),'Rule,choice,default,[t] \"cantidad de elecci\\u00f3n\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=0'.split(\",\"),\n'Rule,select,default,[t] \"cantidad de selecci\\u00f3n\"; [p] (pause:200),self::line,@role=\"binomial\",parent::*/parent::vector,count(preceding-sibling::*)=1'.split(\",\"),[\"Rule\",\"row\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"fila\"; [p] (pause:200)',\"self::row\"],[\"Aliases\",\"row\",\"self::line\"],'Rule{cell{default{[n] ../..; [t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"columna\"; [p] (pause:200){self::cell{contains(@grammar,\"depth\")'.split(\"{\"),[\"Rule\",\"cell\",\"default\",'[t] CSFordinalPosition (grammar:gender=\"female\"); [t] \"columna\"; [p] (pause:200)',\n\"self::cell\"]]};sre.SemanticTreeRules={domain:\"default\",functions:[[\"CTXF\",\"CTXFnodeCounter\",sre.StoreUtil.nodeCounter],[\"CTXF\",\"CTXFcontentIterator\",sre.StoreUtil.contentIterator]],rules:['Rule{collapsed{default{[t] \"collapsed\"; [n] . (engine:modality=summary,grammar:collapsed){self::*{@alternative{not(contains(@grammar, \"collapsed\")){self::*{self::*{self::*{self::*{self::*'.split(\"{\"),[\"Rule\",\"stree\",\"default\",\"[n] ./*[1]\",\"self::stree\"],'Rule;factorial;default;[t] \"factorial\";self::punctuation;text()=\"!\";name(preceding-sibling::*[1])!=\"text\"'.split(\";\"),\n[\"Rule\",\"multrel\",\"default\",'[t] \"multirelation\"; [m] children/* (sepFunc:CTXFcontentIterator)',\"self::multirel\"],'Rule{variable-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),'Rule{multi-equality{default{[t] \"equation sequence\"; [m] children/* (context:\"part\",ctxtFunc:CTXFnodeCounter,sepFunc:CTXFcontentIterator){self::relseq[@role=\"equality\"]{count(./children/*)>2'.split(\"{\"),\n'Rule,equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2'.split(\",\"),'Rule,simple-equality,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/identifier or ./children/number'.split(\",\"),'Rule,simple-equality2,default,[n] children/*[1]; [p] (pause:200); [n] content/*[1] (pause:200);[n] children/*[2],self::relseq[@role=\"equality\"],count(./children/*)=2,./children/function or ./children/appl'.split(\",\"),\n[\"Rule\",\"relseq\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator)\",\"self::relseq\"],[\"Rule\",\"binary-operation\",\"default\",\"[m] children/* (sepFunc:CTXFcontentIterator);\",\"self::infixop\"],'Rule,variable-addition,default,[t] \"sum with variable number of summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(children/*)>2,children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,multi-addition,default,[t] \"sum with\"; [t] count(./children/*); [t] \"summands\";[p] (pause:400); [m] children/* (sepFunc:CTXFcontentIterator),self::infixop[@role=\"addition\"],count(./children/*)>2'.split(\",\"),\n[\"Rule\",\"prefix\",\"default\",'[t] \"prefix\"; [m] content/* (pause 150);[n] children/*[1]',\"self::prefixop\"],'Rule,negative,default,[t] \"negative\"; [n] children/*[1],self::prefixop,self::prefixop[@role=\"negative\"]'.split(\",\"),[\"Rule\",\"postfix\",\"default\",'[n] children/*[1]; [t] \"postfix\"; [m] content/* (pause 300)',\"self::postfixop\"],[\"Rule\",\"identifier\",\"default\",\"[n] text()\",\"self::identifier\"],[\"Rule\",\"number\",\"default\",\"[n] text()\",\"self::number\"],'Rule,mixed-number,default,[n] children/*[1]; [t] \"and\"; [n] children/*[2]; ,self::number,@role=\"mixed\"'.split(\",\"),\n'Rule{font{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::*{@font{not(contains(@grammar, \"ignoreFont\")){@font!=\"normal\"'.split(\"{\"),'Rule{font-identifier-short{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{not(contains(@grammar, \"ignoreFont\")){@font=\"normal\"{\"\"=translate(text(), \"abcdefghijklmnopqrstuvwxyz\\u03b1\\u03b2\\u03b3\\u03b4\\u03b5\\u03b6\\u03b7\\u03b8\\u03b9\\u03ba\\u03bb\\u03bc\\u03bd\\u03be\\u03bf\\u03c0\\u03c1\\u03c2\\u03c3\\u03c4\\u03c5\\u03c6\\u03c7\\u03c8\\u03c9ABCDEFGHIJKLMNOPQRSTUVWXYZ\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396\\u0397\\u0398\\u0399\\u039a\\u039b\\u039c\\u039d\\u039e\\u039f\\u03a0\\u03a1\\u03a3\\u03a3\\u03a4\\u03a5\\u03a6\\u03a7\\u03a8\\u03a9\", \"\"){@role!=\"unit\"'.split(\"{\"),\n'Rule{font-identifier{default{[t] @font (grammar:localFont); [n] . (grammar:ignoreFont=@font){self::identifier{string-length(text())=1{@font{@font=\"normal\"{not(contains(@grammar, \"ignoreFont\")){@role!=\"unit\"'.split(\"{\"),'Rule;omit-font;default;[n] . (grammar:ignoreFont=@font);self::identifier;string-length(text())=1;@font;not(contains(@grammar, \"ignoreFont\"));@font=\"italic\"'.split(\";\"),[\"Rule\",\"fraction\",\"default\",'[p] (pause:250); [n] children/*[1] (rate:0.35); [p] (pause:250); [t] \"divided by\"; [n] children/*[2] (rate:-0.35); [p] (pause:400)',\n\"self::fraction\"],[\"Rule\",\"superscript\",\"default\",'[n] children/*[1]; [t] \"super\"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',\"self::superscript\"],[\"Rule\",\"subscript\",\"default\",'[n] children/*[1]; [t] \"sub\"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',\"self::subscript\"],'Rule,ellipsis,default,[p] (pause:200); [t] \"ellipsis\"; [p] (pause:300),self::punctuation,self::punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule;fence-single;default;[n] text();self::punctuation;self::punctuation[@role=\"openfence\"]'.split(\";\"),\n[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"closefence\"]'],[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"vbar\"]'],[\"Aliases\",\"fence-single\",\"self::punctuation\",'self::punctuation[@role=\"application\"]'],[\"Rule\",\"omit-empty\",\"default\",\"[p] (pause:100)\",\"self::empty\"],'Rule,fences-open-close,default,[p] (pause:100); [n] content/*[1]; [n] children/*[1]; [n] content/*[2]; [p] (pause:100),self::fenced,@role=\"leftright\"'.split(\",\"),'Rule,fences-open-close-in-appl,default,[p] (pause:200); [n] children/*[1]; [p] (pause:200);,self::fenced[@role=\"leftright\"],./parent::children/parent::appl'.split(\",\"),\n'Rule,fences-neutral,default,[p] (pause:100); [t] \"absolute value of\"; [n] children/*[1];[p] (pause:350);,self::fenced,self::fenced[@role=\"neutral\"]'.split(\",\"),[\"Rule\",\"omit-fences\",\"default\",\"[p] (pause:500); [n] children/*[1]; [p] (pause:200);\",\"self::fenced\"],[\"Rule\",\"matrix\",\"default\",'[t] \"matrix\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100)',\"self::matrix\"],[\"Rule\",\"matrix-row\",\"default\",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)','self::row[@role=\"matrix\"]'],\n[\"Rule\",\"matrix-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"matrix\"]'],[\"Rule\",\"vector\",\"default\",'[t] \"vector\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"element\",pause:100)',\"self::vector\"],[\"Rule\",\"cases\",\"default\",'[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100)',\"self::cases\"],[\"Rule\",\"cases-row\",\"default\",\"[m] children/*\",'self::row[@role=\"cases\"]'],[\"Rule\",\"cases-cell\",\"default\",\"[n] children/*[1]\",'self::cell[@role=\"cases\"]'],[\"Rule\",\n\"row\",\"default\",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:\"column\",pause:100)',\"self::row\"],'Rule{cases-end{default{[t] \"case statement\"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:\"case\",pause:100);[t] \"end cases\"{self::cases{following-sibling::*'.split(\"{\"),[\"Rule\",\"multiline\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"line\",pause:100)',\"self::multiline\"],'Rule{multiline-ineq{default{[t] \"multiline inequality\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:100){self::multiline{@role=\"inequality\"'.split(\"{\"),\n[\"Rule\",\"line\",\"default\",\"[m] children/*\",\"self::line\"],[\"Rule\",\"table\",\"default\",'[t] \"multiline equation\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200)',\"self::table\"],'Rule{table-ineq{default{[t] \"multiline inequality\";[m] children/* (ctxtFunc:CTXFnodeCounter,context:\"row\",pause:200){self::table{@role=\"inequality\"'.split(\"{\"),[\"Rule\",\"table-row\",\"default\",\"[m] children/* (pause:100)\",'self::row[@role=\"table\"]'],[\"Aliases\",\"cases-cell\",'self::cell[@role=\"table\"]'],'Rule;empty-cell;default;[t] \"Blank\";self::cell;count(children/*)=0'.split(\";\"),\n'Rule,end-punct,default,[m] children/*; [p] (pause:300),self::punctuated,@role=\"endpunct\"'.split(\",\"),'Rule,start-punct,default,[n] content/*[1]; [p] (pause:200); [m] children/*[position()>1],self::punctuated,@role=\"startpunct\"'.split(\",\"),'Rule,integral-punct,default,[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2),self::punctuated,@role=\"integral\"'.split(\",\"),[\"Rule\",\"punctuated\",\"default\",\"[m] children/* (pause:100)\",\"self::punctuated\"],[\"Rule\",\"function\",\"default\",\"[n] text()\",\"self::function\"],\n[\"Rule\",\"appl\",\"default\",\"[n] children/*[1]; [n] content/*[1]; [n] children/*[2]\",\"self::appl\"],'Rule,sum-only,default,[n] children/*[1]; [t] \"from\"; [n] children/*[2]; [t] \"to\";[n] children/*[3],self::limboth,self::limboth[@role=\"sum\"]'.split(\",\"),[\"Rule\",\"limboth\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[t] \"under\"; [n] children/*[3]; [p] (pause 250);',\"self::limboth\"],[\"Rule\",\"limlower\",\"default\",'[n] children/*[1]; [t] \"over\"; [n] children/*[2];',\"self::limlower\"],\n[\"Rule\",\"limupper\",\"default\",'[n] children/*[1]; [t] \"under\"; [n] children/*[2];',\"self::limupper\"],[\"Rule\",\"largeop\",\"default\",\"[n] text()\",\"self::largeop\"],[\"Rule\",\"bigop\",\"default\",'[n] children/*[1]; [p] (pause 100); [t] \"over\"; [n] children/*[2];[p] (pause 250);',\"self::bigop\"],[\"Rule\",\"integral\",\"default\",\"[n] children/*[1]; [p] (pause 100); [n] children/*[2];[p] (pause 200); [n] children/*[3] (rate:0.35);\",\"self::integral\"],[\"Rule\",\"sqrt\",\"default\",'[t] \"Square root of\"; [n] children/*[1] (rate:0.35); [p] (pause:400)',\n\"self::sqrt\"],'Rule,square,default,[n] children/*[1]; [t] \"squared\" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=2],name(./children/*[1])!=\"text\"'.split(\",\"),'Rule,cube,default,[n] children/*[1]; [t] \"cubed\" (pitch:0.35); [p] (pause:300),self::superscript,children/*[2][text()=3],name(./children/*[1])!=\"text\"'.split(\",\"),[\"Rule\",\"root\",\"default\",'[t] \"root of order\"; [n] children/*[1];[t] \"over\"; [n] children/*[2] (rate:0.35); [p] (pause:400)',\"self::root\"],[\"Rule\",\"text\",\"default\",\n\"[n] text(); [p] (pause:200)\",\"self::text\"],'Rule;unit;default;[t] text() (grammar:annotation=\"unit\":translate:plural);self::identifier;@role=\"unit\"'.split(\";\"),'Rule,unit-square,default,[t] \"square\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=2],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,unit-cubic,default,[t] \"cubic\"; [n] children/*[1],self::superscript,@role=\"unit\",children/*[2][text()=3],name(children/*[1])=\"identifier\"'.split(\",\"),'Rule,reciprocal,default,[t] \"reciprocal\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],count(preceding-sibling::*)=0 or preceding-sibling::*[@role!=\"unit\"]'.split(\",\"),\n'Rule,reciprocal,default,[t] \"per\"; [n] children/*[1],self::superscript,@role=\"unit\",name(children/*[1])=\"identifier\",name(children/*[2])=\"prefixop\",children/*[2][@role=\"negative\"],children/*[2]/children/*[1][text()=1],preceding-sibling::*[@role=\"unit\"]'.split(\",\"),'Rule;unit-combine;default;[m] children/*;self::infixop;@role=\"unit\"'.split(\";\"),'Rule,unit-divide,default,[n] children/*[1] (pitch:0.3); [t] \"per\"; [n] children/*[2] (pitch:-0.3),self::fraction,@role=\"unit\"'.split(\",\")]};sre.SummaryFrench={locale:\"fr\",modality:\"summary\",rules:[[\"Rule\",\"collapsed-masculine\",\"default.masculine\",'[t] \"compress\\u00e9\"','contains(@grammar, \"collapsed\")'],[\"Rule\",\"collapsed-feminine\",\"default.feminine\",'[t] \"compress\\u00e9e\"','contains(@grammar, \"collapsed\")'],[\"Rule\",\"no-collapsed\",\"default.masculine\",'[t] \"\"','not(contains(@grammar, \"collapsed\"))'],[\"Rule\",\"no-collapsed\",\"default.feminine\",'[t] \"\"','not(contains(@grammar, \"collapsed\"))'],[\"Rule\",\"stree\",\"default.default\",\"[n] ./*[1]\",\n\"self::stree\"],'Rule{abstr-identifier{default.default{[t] \"identifiant long\"; [n] . (engine:style=masculine){self::identifier{contains(@grammar, \"collapsed\")'.split(\"{\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identifiant\"; [n] . (engine:style=masculine)',\"self::identifier\"],'Rule{abstr-number{default.default{[t] \"nombre long\"; [n] . (engine:style=masculine){self::number{contains(@grammar, \"collapsed\")'.split(\"{\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"nombre\"; [n] . (engine:style=masculine)',\n\"self::number\"],'Rule{abstr-mixed-number{default.default{[t] \"nombre fractionnaire long\"; [n] . (engine:style=masculine){self::number{@role=\"mixed\"{contains(@grammar, \"collapsed\")'.split(\"{\"),'Rule,abstr-mixed-number,default.default,[t] \"nombre fractionnaire\"; [n] . (engine:style=masculine),self::number,@role=\"mixed\"'.split(\",\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"texte\"; [n] . (engine:style=masculine)',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"expression fonctionnelle\"; [n] . (engine:style=feminine)',\n\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"fonction\"; [n] . (engine:style=feminine)',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-lim,default.default,[t] \"fonction de limitation\"; [n] . (engine:style=feminine),self::function,@role=\"limit function\"'.split(\",\"),'Rule,abstr-lim,mathspeak.brief,[t] \"lim\"; [n] . (engine:style=feminine),self::function,@role=\"limit function\"'.split(\",\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fraction\"; [n] . (engine:style=feminine)',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"; [n] . (engine:style=feminine)',\"self::fraction\"],[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-continued-fraction,default.default,[t] \"fraction continue\"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-continued-fraction,mathspeak.brief,[t] \"frac continue\"; [n] . (engine:style=feminine),self::fraction,children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\",\"),\n[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"racine carr\\u00e9e\"; [n] . (engine:style=feminine)',\"self::sqrt\"],'Rule,abstr-sqrt-nested,default.default,[t] \"racine carr\\u00e9e imbriqu\\u00e9e\"; [n] . (engine:style=feminine),self::sqrt,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule{abstr-root{default.default{[t] \"racine d\\'indice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"fin indice\"; [n] . (engine:style=feminine);{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"racine d\\'indice\"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"racine\"; [n] . (engine:style=feminine)',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"racine imbriqu\\u00e9e d\\'indice\"; [n] children/*[1] (engine:modality=speech); [t] \"fin indice\"; [n] . (engine:style=feminine);{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"racine imbriqu\\u00e9e d\\'indice\"; [n] children/*[1] (engine:modality=speech); [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule,abstr-root-nested,mathspeak.brief,[t] \"racine imbriqu\\u00e9e\"; [n] . (engine:style=feminine),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",'[t] \"puissance\"; [n] . (engine:style=feminine)',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"indice\"; [n] . (engine:style=masculine)',\"self::subscript\"],'Rule,abstr-subsup,default.default,[t] \"puissance avec index\"; [n] . (engine:style=feminine),self::superscript,name(children/*[1])=\"subscript\"'.split(\",\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=masculine)',\n\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"avec un nombre d\\'\\u00e9l\\u00e9ments variable\"; [n] . (engine:style=masculine),self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole); [n] . (engine:style=masculine)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"somme avec\"; [t] count(./children/*); [t] \"op\\u00e9randes\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\"'.split(\",\"),\n'Rule,abstr-addition,mathspeak.brief,[t] \"somme\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\"'.split(\",\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-addition,default.default,[t] \"somme avec un nombre variable d\\'op\\u00e9randes\"; [n] . (engine:style=feminine),self::infixop,@role=\"addition\",count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-multiplication,default.default,[t] \"produit avec\"; [t] count(./children/*); [t] \"facteurs\"; [n] . (engine:style=masculine);,self::infixop,@role=\"multiplication\"'.split(\",\"),\n'Rule,abstr-multiplication,mathspeak.brief,[t] \"produit\"; [n] . (engine:style=masculine),self::infixop,@role=\"multiplication\"'.split(\",\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule,abstr-var-multiplication,default.default,[t] \"produit avec un nombre de facteurs variable\"; [n] . (engine:style=masculine),self::infixop,@role=\"multiplication\",count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] \"vecteur de dimension\"; [t] count(./children/*); [n] . (engine:style=masculine)',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vecteur\"; [n] . (engine:style=masculine)',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-vector,default.default,[t] \"vecteur colonne de dimension n\"; [n] . (engine:style=masculine),self::vector,./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'Rule,abstr-binomial,default.default,[t] \"binomial\"; [n] . (engine:style=masculine),self::vector,@role=\"binomial\"'.split(\",\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] \"d\\u00e9terminant de dimension\"; [t] count(./children/*); [n] . (engine:style=masculine),self::matrix,@role=\"determinant\"'.split(\",\"),'Rule,abstr-determinant,mathspeak.brief,[t] \"d\\u00e9terminant\"; [n] . (engine:style=masculine),self::matrix,@role=\"determinant\"'.split(\",\"),\n[\"SpecializedRule\",\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-determinant,default.default,[t] \"d\\u00e9terminant de dimension n\"; [n] . (engine:style=masculine),self::matrix,@role=\"determinant\",./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'Rule,abstr-squarematrix,default.default,[t] \"matrice carr\\u00e9e de dimension\"; [t] count(./children/*); [n] . (engine:style=feminine),self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule,abstr-squarematrix,mathspeak.brief,[t] \"matrice carr\\u00e9e\"; [n] . (engine:style=feminine),self::matrix,@role=\"squarematrix\"'.split(\",\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] \"vecteur ligne de dimension\"; [t] count(./children/row/children/*); [n] . (engine:style=masculine),self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule,abstr-rowvector,mathspeak.brief,[t] \"vecteur ligne\"; [n] . (engine:style=masculine),self::matrix,@role=\"rowvector\"'.split(\",\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"vecteur ligne de dimension n\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] \"matrice\"; [t] count(children/*);  [t] \"par\";[t] count(children/*[1]/children/*); [n] . (engine:style=feminine)',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matrice\"; [n] . (engine:style=feminine)',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-matrix,default.default,[t] \"matrice de dimension n par m\"; [n] . (engine:style=feminine),self::matrix,./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"d\\u00e9claration de cas\";[t] \"avec\"; [t] count(children/*); [t] \"cas\"; [n] . (engine:style=feminine)',\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"d\\u00e9claration de cas\"; [n] . (engine:style=feminine)',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-cases,default.default,[t] \"d\\u00e9claration de cas variable\"; [n] . (engine:style=feminine),self::cases,./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"liste de longueur\"; [t] count(children/*) - count(content/*); [t] \"s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine)',\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"liste s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine)',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"liste de longueur variable s\\u00e9par\\u00e9e par des\"; [n] content/*[1] (join:\"\"); [t] \"s\"; [n] . (engine:style=feminine),self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]; [n] . (engine:style=masculine)\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",'[t] \"int\\u00e9grale\"; [n] . (engine:style=feminine)','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole); [n] . (engine:style=masculine);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(\",\"),\n'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] \"s\\u00e9quence\"; [t] \"avec un nombre de \\u00e9l\\u00e9ments variable\"; [n] . (engine:style=feminine),self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),'Rule,abstr-multirel,default.default,[t] \"s\\u00e9quence de relation\"; [t] \"avec\"; [t] count(./children/*); [t] \"\\u00e9l\\u00e9ments\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(\",\"),'Rule,abstr-multirel,mathspeak.brief,[t] \"s\\u00e9quence de relation\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2'.split(\",\"),\n[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-multirel,default.default,[t] \"s\\u00e9quence de relation avec un nombre de \\u00e9l\\u00e9ments variable\"; [n] . (engine:style=feminine),self::multirel,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"table avec\"; [t] count(children/*); [t] \"lignes et\";[t] count(children/*[1]/children/*); [t] \"colonnes\"; [n] . (engine:style=feminine);',\"self::table\"],\n[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole); [n] . (engine:style=masculine)',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"avec\";[t] count(children/*); [t] \"colonnes\"; [n] . (engine:style=feminine)',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"dans\"; [t] @role (grammar:localRole); [n] . (engine:style=feminine);',\"self::cell\"]]};sre.SummaryGerman={modality:\"summary\",locale:\"de\",rules:['Rule;abstr-identifier;default.default;[t] \"langer Bezeichner\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"Bezeichner\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"lange Zahl\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"Zahl\"',\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"langer gemischter Bruch\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),\n'Rule;abstr-mixed-number;default.default;[t] \"gemischter Bruch\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"Text\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"Funktionsausdruck\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"Funktion\"',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"Grenzwertfunktion\";self::function;@role=\"limit function\"'.split(\";\"),\n'Rule;abstr-lim;mathspeak.brief;[t] \"Grenzwert\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"Bruch\"',\"self::fraction\"],'Rule;abstr-continued-fraction;default.default;[t] \"Kettenbruch\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"Quadratwurzel\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"verschachtelte Quadratwurzel\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),\n'Rule{abstr-root{default.default{[t] \"Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=speech); [t] \"Exponentende\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"Wurzel\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"verschachtelte Wurzel mit Wurzelexponent\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"Ende Wurzelexponent\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"verschachtelte Wurzel mit Exponent\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"verschachtelte Wurzel\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",\n'[t] \"Potenz\"',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"Index\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"Potenz mit Index\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"mit ver\\u00e4nderlicher Anzahl an Elementen\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"Summe mit\"; [t] count(./children/*); [t] \"Summanden\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"Summe\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"Summe mit ver\\u00e4nderlicher Anzahl an Summanden\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"Produkt mit\"; [t] count(./children/*); [t] \"Faktoren\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"Produkt\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"Produkt mit ver\\u00e4nderlicher Anzahl an Faktoren\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] count(./children/*) ; [t] \"dimensionaler Vektor\"',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"Vektor\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"n dimensionaler Vektor\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"Binomialkoeffizient\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] \"dimensionale Determinante\",self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"Determinante\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"n dimensionale Determinante\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] \"dimensionale quadratische Matrize\",self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"quadratische Matrize\";self::matrix;@role=\"squarematrix\"'.split(\";\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] \"dimensionaler Zeilenvektor\",self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"Zeilenvektor\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n dimensionaler Zeilenvektor\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"mal\";[t] count(children/*[1]/children/*); [t] \"Matrize\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"Matrize\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n mal m dimensionale Matrize\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"Fallunterscheidung\";[t] \"mit\"; [t] count(children/*); [t] \"F\\u00e4llen\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"Fallunterscheidung\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"Fallunterscheidung mit ver\\u00e4nderlicher Anzahl an F\\u00e4llen\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste der L\\u00e4nge\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste\";',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"mit\"; [n] content/*[1]; [t] \"getrennte Liste\";[t] \"ver\\u00e4nderlicher L\\u00e4nge\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\n\"default.default\",'[t] \"Integral\"','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule{abstr-relation-seq{default.default{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\"; [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\"{self::relseq{count(./children/*)>2'.split(\"{\"),'Rule{abstr-relation-seq{mathspeak.brief{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\"{self::relseq{count(./children/*)>2'.split(\"{\"),\n[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-var-relation{default.default{[t] @role (grammar:localRole, join:\"\"); [t] \"ssequenz\";[t] \"mit ver\\u00e4nderlicher Anzahl an Elementen\"{self::relseq{count(./children/*)>2{./children/punctuation[@role=\"ellipsis\"]'.split(\"{\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),\n'Rule,abstr-multirel,default.default,[t] \"Relationsequenz\"; [t] \"mit\"; [t] count(./children/*); [t] \"Elementen\",self::multirel,count(./children/*)>2'.split(\",\"),'Rule;abstr-multirel;mathspeak.brief;[t] \"Relationsequenz\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"Relationsequenz mit ver\\u00e4nderlicher Anzahl an Elementen\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"Tabelle mit\"; [t] count(children/*); [t] \"Zeilen und\";[t] count(children/*[1]/children/*); [t] \"Spalten\"',\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"mit\";[t] count(children/*); [t] \"Spalten\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\n\"self::cell\"]]};sre.SummaryRules={modality:\"summary\",rules:['Rule;abstr-identifier;default.default;[t] \"long identifier\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identifier\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"long number\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"number\"',\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"long mixed number\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),\n'Rule;abstr-mixed-number;default.default;[t] \"mixed number\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"text\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"functional expression\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"function\"',\"self::function\"],[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"limit function\";self::function;@role=\"limit function\"'.split(\";\"),\n'Rule;abstr-lim;mathspeak.brief;[t] \"lim\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fraction\"',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"',\"self::fraction\"],[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-continued-fraction;default.default;[t] \"continued fraction\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-continued-fraction;mathspeak.brief;[t] \"continued frac\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",'[t] \"square root\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"nested square root\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),'Rule{abstr-root{default.default{[t] \"root of index\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"endindex\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n[\"Rule\",\"abstr-root\",\"default.default\",'[t] \"root of index\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"root\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"nested root of index\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"endindex\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"nested root of index\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"nested root\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",'[t] \"power\"',\n\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"subscript\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"power with subscript\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"with\"; [t] count(./children/*); [t] \"elements\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"with variable number of elements\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"sum with\"; [t] count(./children/*); [t] \"summands\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"sum\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"sum with variable number of summands\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"product with\"; [t] count(./children/*); [t] \"factors\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"product\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"product with variable number of factors\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] count(./children/*) ; [t] \"dimensional vector\"',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vector\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"n dimensional vector\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"binomial\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] count(./children/*); [t] \"dimensional determinant\",self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"determinant\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"n dimensional determinant\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] count(./children/*); [t] \"dimensional square matrix\",self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"square matrix\";self::matrix;@role=\"squarematrix\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] count(./children/row/children/*); [t] \"dimensional row vector\",self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"row vector\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n dimensional row vector\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"by\";[t] count(children/*[1]/children/*); [t] \"matrix\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matrix\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"n by m dimensional matrix\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"case statement\";[t] \"with\"; [t] count(children/*); [t] \"cases\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"case statement\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"case statement with variable number of cases\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[n] content/*[1]; [t] \"separated list\"; [t] \"of length\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[n] content/*[1]; [t] \"separated list\"',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[n] content/*[1]; [t] \"separated list\";[t] \"of variable length\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",'[t] \"integral\"',\n'@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] @role (grammar:localRole); [t] \"sequence\"; [t] \"with\"; [t] count(./children/*); [t] \"elements\",self::relseq,count(./children/*)>2'.split(\",\"),'Rule,abstr-relation-seq,mathspeak.brief,[t] @role (grammar:localRole); [t] \"sequence\",self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\"mathspeak.brief\",\n\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] @role (grammar:localRole); [t] \"sequence\"; [t] \"with variable number of elements\",self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),'Rule,abstr-multirel,default.default,[t] \"relation sequence\"; [t] \"with\"; [t] count(./children/*); [t] \"elements\",self::multirel,count(./children/*)>2'.split(\",\"),\n'Rule;abstr-multirel;mathspeak.brief;[t] \"relation sequence\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"relation sequence with variable number of elements\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"table with\"; [t] count(children/*); [t] \"rows and\";[t] count(children/*[1]/children/*); [t] \"columns\"',\n\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"with\";[t] count(children/*); [t] \"columns\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"in\"; [t] @role (grammar:localRole);',\"self::cell\"]]};sre.SummarySpanish={locale:\"es\",modality:\"summary\",rules:[[\"Rule\",\"stree\",\"default.default\",\"[n] ./*[1]\",\"self::stree\"],'Rule;abstr-identifier;default.default;[t] \"identificador largo\";self::identifier;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-identifier\",\"default.default\",'[t] \"identificador\"',\"self::identifier\"],'Rule;abstr-number;default.default;[t] \"n\\u00famero largo\";self::number;contains(@grammar, \"collapsed\")'.split(\";\"),[\"Rule\",\"abstr-number\",\"default.default\",'[t] \"n\\u00famero\"',\n\"self::number\"],'Rule;abstr-mixed-number;default.default;[t] \"n\\u00famero largo mixto\";self::number;@role=\"mixed\";contains(@grammar, \"collapsed\")'.split(\";\"),'Rule;abstr-mixed-number;default.default;[t] \"n\\u00famero mixto\";self::number;@role=\"mixed\"'.split(\";\"),[\"Rule\",\"abstr-text\",\"default.default\",'[t] \"texto\"',\"self::text\"],[\"Rule\",\"abstr-function\",\"default.default\",'[t] \"expresi\\u00f3n funcional\"',\"self::function\"],[\"Rule\",\"abstr-function\",\"mathspeak.brief\",'[t] \"funci\\u00f3n\"',\"self::function\"],\n[\"SpecializedRule\",\"abstr-function\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-lim;default.default;[t] \"funci\\u00f3n de l\\u00edmite\";self::function;@role=\"limit function\"'.split(\";\"),'Rule;abstr-lim;mathspeak.brief;[t] \"l\\u00edmite\";self::function;@role=\"limit function\"'.split(\";\"),[\"SpecializedRule\",\"abstr-lim\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-fraction\",\"default.default\",'[t] \"fracci\\u00f3n\"',\"self::fraction\"],[\"Rule\",\"abstr-fraction\",\"mathspeak.brief\",'[t] \"frac\"',\"self::fraction\"],\n[\"SpecializedRule\",\"abstr-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-continued-fraction;default.default;[t] \"fracci\\u00f3n continua\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),'Rule;abstr-continued-fraction;mathspeak.brief;[t] \"frac continua\";self::fraction;children/*[2]/descendant-or-self::*[@role=\"ellipsis\"]'.split(\";\"),[\"SpecializedRule\",\"abstr-continued-fraction\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-sqrt\",\"default.default\",\n'[t] \"ra\\u00edz cuadrada\"',\"self::sqrt\"],'Rule;abstr-sqrt-nested;default.default;[t] \"ra\\u00edz cuadrada anidada\";self::sqrt;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),'Rule{abstr-root{default.default{[t] \"ra\\u00edz del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"finalizar de \\u00edndice\"{self::root{contains(@grammar, \"collapsed\"){following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),[\"Rule\",\"abstr-root\",\"default.default\",\n'[t] \"ra\\u00edz del \\u00edndice\"; [n] children/*[1] (engine:modality=speech)',\"self::root\"],[\"Rule\",\"abstr-root\",\"mathspeak.brief\",'[t] \"ra\\u00edz\"',\"self::root\"],[\"SpecializedRule\",\"abstr-root\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule{abstr-root-nested{default.default{[t] \"ra\\u00edz anidada del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"); [t] \"finalizar de \\u00edndice\"{self::root{contains(@grammar, \"collapsed\"){children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root{following-sibling::* or ancestor::*/following-sibling::*'.split(\"{\"),\n'Rule,abstr-root-nested,default.default,[t] \"ra\\u00edz anidada del \\u00edndice\"; [n] children/*[1] (engine:modality=\"speech\"),self::root,children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\",\"),'Rule;abstr-root-nested;mathspeak.brief;[t] \"ra\\u00edz anidada\";self::root;children/*/descendant-or-self::sqrt or children/*/descendant-or-self::root'.split(\";\"),[\"SpecializedRule\",\"abstr-root-nested\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Rule\",\"abstr-superscript\",\"default.default\",\n'[t] \"potencia\"',\"self::superscript\"],[\"Rule\",\"abstr-subscript\",\"default.default\",'[t] \"sub\\u00edndice\"',\"self::subscript\"],'Rule;abstr-subsup;default.default;[t] \"potencia con sub\\u00edndice\";self::superscript;name(children/*[1])=\"subscript\"'.split(\";\"),[\"Rule\",\"abstr-infixop\",\"default.default\",'[t] @role (grammar:localRole); [t] \"con\"; [t] count(./children/*); [t] \"elementos\"',\"self::infixop\"],'Rule,abstr-infixop,default.default,[t] @role (grammar:localRole); [t] \"con una cantidad variable de elementos\",self::infixop,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),\n[\"Rule\",\"abstr-infixop\",\"mathspeak.brief\",\"[t] @role (grammar:localRole)\",\"self::infixop\"],[\"SpecializedRule\",\"abstr-infixop\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-addition,default.default,[t] \"suma con\"; [t] count(./children/*); [t] \"sumandos\",self::infixop,@role=\"addition\"'.split(\",\"),'Rule;abstr-addition;mathspeak.brief;[t] \"suma\";self::infixop;@role=\"addition\"'.split(\";\"),[\"SpecializedRule\",\"abstr-addition\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-addition;default.default;[t] \"suma con n\\u00famero variable de sumandos\";self::infixop;@role=\"addition\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule,abstr-multiplication,default.default,[t] \"producto con\"; [t] count(./children/*); [t] \"factores\",self::infixop,@role=\"multiplication\"'.split(\",\"),'Rule;abstr-multiplication;mathspeak.brief;[t] \"producto\";self::infixop;@role=\"multiplication\"'.split(\";\"),[\"SpecializedRule\",\"abstr-multiplication\",\"mathspeak.brief\",\"mathspeak.sbrief\"],[\"Aliases\",\"abstr-multiplication\",\"self::infixop\",'@role=\"implicit\"'],'Rule;abstr-var-multiplication;default.default;[t] \"producto con una cantidad variable de factores\";self::infixop;@role=\"multiplication\";count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Aliases abstr-var-multiplication self::infixop @role=\"implicit\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),[\"Rule\",\"abstr-vector\",\"default.default\",'[t] \"vector de dimensi\\u00f3n\"; [t] count(./children/*)',\"self::vector\"],[\"Rule\",\"abstr-vector\",\"mathspeak.brief\",'[t] \"vector\"',\"self::vector\"],[\"SpecializedRule\",\"abstr-vector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-vector;default.default;[t] \"vector de dimensi\\u00f3n n\";self::vector;./children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n'Rule;abstr-binomial;default.default;[t] \"binomio\";self::vector;@role=\"binomial\"'.split(\";\"),[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.brief\"],[\"SpecializedRule\",\"abstr-binomial\",\"default.default\",\"mathspeak.sbrief\"],'Rule,abstr-determinant,default.default,[t] \"determinante de dimensi\\u00f3n\"; [t] count(./children/*),self::matrix,@role=\"determinant\"'.split(\",\"),'Rule;abstr-determinant;mathspeak.brief;[t] \"determinante\";self::matrix;@role=\"determinant\"'.split(\";\"),[\"SpecializedRule\",\n\"abstr-determinant\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-determinant;default.default;[t] \"determinante de dimensi\\u00f3n n\";self::matrix;@role=\"determinant\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),'Rule,abstr-squarematrix,default.default,[t] \"matriz cuadrada de dimensi\\u00f3n\"; [t] count(./children/*),self::matrix,@role=\"squarematrix\"'.split(\",\"),'Rule;abstr-squarematrix;mathspeak.brief;[t] \"matriz cuadrada\";self::matrix;@role=\"squarematrix\"'.split(\";\"),\n[\"SpecializedRule\",\"abstr-squarematrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-rowvector,default.default,[t] \"vector fila de dimensi\\u00f3n\"; [t] count(./children/row/children/*),self::matrix,@role=\"rowvector\"'.split(\",\"),'Rule;abstr-rowvector;mathspeak.brief;[t] \"vector fila\";self::matrix;@role=\"rowvector\"'.split(\";\"),[\"SpecializedRule\",\"abstr-rowvector\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"vector fila de dimensi\\u00f3n n\";self::matrix;@role=\"rowvector\";./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-matrix\",\"default.default\",'[t] count(children/*);  [t] \"por\";[t] count(children/*[1]/children/*); [t] \"matriz\"',\"self::matrix\"],[\"Rule\",\"abstr-matrix\",\"mathspeak.brief\",'[t] \"matriz\"',\"self::matrix\"],[\"SpecializedRule\",\"abstr-matrix\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-matrix;default.default;[t] \"matriz de dimensi\\u00f3n n por m\";self::matrix;./children/*/children/*/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-cases\",\"default.default\",'[t] \"declaraci\\u00f3n de caso\";[t] \"con\"; [t] count(children/*); [t] \"casos\"',\n\"self::cases\"],[\"Rule\",\"abstr-cases\",\"mathspeak.brief\",'[t] \"declaraci\\u00f3n de caso\"',\"self::cases\"],[\"SpecializedRule\",\"abstr-cases\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-cases;default.default;[t] \"declaraci\\u00f3n de caso con n\\u00famero variable de casos\";self::cases;./children/row/children/cell/children/punctuation[@role=\"ellipsis\"]or ./children/line/children/punctuation[@role=\"ellipsis\"]'.split(\";\"),[\"Rule\",\"abstr-punctuated\",\"default.default\",'[t] \"lista separada por\"; [n] content/*[1]; [t] \"de longitud\"; [t] count(children/*) - count(content/*)',\n\"self::punctuated\"],[\"Rule\",\"abstr-punctuated\",\"mathspeak.brief\",'[t] \"lista separada por\"; [n] content/*[1]',\"self::punctuated\"],[\"SpecializedRule\",\"abstr-punctuated\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-punctuated,default.default,[t] \"lista separada por\"; [n] content/*[1],[t] \"de longitud variable\",self::punctuated,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),[\"Rule\",\"abstr-bigop\",\"default.default\",\"[n] content/*[1]\",\"self::bigop\"],[\"Rule\",\"abstr-integral\",\"default.default\",\n'[t] \"integral\"','@role=\"integral\"'],\"Rule,abstr-relation,default.default,[t] @role (grammar:localRole);,self::relseq,count(./children/*)=2\".split(\",\"),'Rule,abstr-relation-seq,default.default,[t] \"secuencia de\"; [t] @role (grammar:localRole); [t] \"con\"; [t] count(./children/*); [t] \"elementos\",self::relseq,count(./children/*)>2'.split(\",\"),'Rule,abstr-relation-seq,mathspeak.brief,[t] \"secuencia de\"; [t] @role (grammar:localRole),self::relseq,count(./children/*)>2'.split(\",\"),[\"SpecializedRule\",\"abstr-relation-seq\",\n\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule,abstr-var-relation,default.default,[t] \"secuencia de\"; [t] @role (grammar:localRole); [t] \"con una cantidad variable de elementos\",self::relseq,count(./children/*)>2,./children/punctuation[@role=\"ellipsis\"]'.split(\",\"),'UniqueAlias abstr-relation default.default self::multirel @role!=\"unknown\" count(./children/*)>2'.split(\" \"),'Aliases abstr-var-relation self::multirel @role!=\"unknown\" count(./children/*)>2 ./children/punctuation[@role=\"ellipsis\"]'.split(\" \"),\n'Rule,abstr-multirel,default.default,[t] \"secuencia de relaci\\u00f3n\"; [t] \"con\"; [t] count(./children/*); [t] \"elementos\",self::multirel,count(./children/*)>2'.split(\",\"),'Rule;abstr-multirel;mathspeak.brief;[t] \"secuencia de relaci\\u00f3n\";self::multirel;count(./children/*)>2'.split(\";\"),[\"SpecializedRule\",\"abstr-multirel\",\"mathspeak.brief\",\"mathspeak.sbrief\"],'Rule;abstr-var-multirel;default.default;[t] \"secuencia de relaci\\u00f3n con n\\u00famero variable de elementos\";self::multirel;count(./children/*)>2;./children/punctuation[@role=\"ellipsis\"]'.split(\";\"),\n[\"Rule\",\"abstr-table\",\"default.default\",'[t] \"mesa con\"; [t] count(children/*); [t] \"filas y\";[t] count(children/*[1]/children/*); [t] \"columnas\"',\"self::table\"],[\"Rule\",\"abstr-line\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);',\"self::line\"],[\"Rule\",\"abstr-row\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);[t] count(preceding-sibling::..); [t] \"con\";[t] count(children/*); [t] \"columnas\"',\"self::row\"],[\"Rule\",\"abstr-cell\",\"default.default\",'[t] \"en\"; [t] @role (grammar:localRole);',\n\"self::cell\"]]};sre.SpeechRuleStores={};\nsre.SpeechRuleStores.RULE_SETS_={SemanticTreeRules:sre.SemanticTreeRules,MathspeakFrench:sre.MathspeakFrench,MathspeakGerman:sre.MathspeakGerman,MathspeakRules:sre.MathspeakRules,MathspeakSpanish:sre.MathspeakSpanish,NemethRules:sre.NemethRules,ClearspeakFrench:sre.ClearspeakFrench,ClearspeakGerman:sre.ClearspeakGerman,ClearspeakRules:sre.ClearspeakRules,EmacspeakRules:sre.EmacspeakRules,SummaryFrench:sre.SummaryFrench,SummaryGerman:sre.SummaryGerman,SummaryRules:sre.SummaryRules,SummarySpanish:sre.SummarySpanish,\nPrefixFrench:sre.PrefixFrench,PrefixGerman:sre.PrefixGerman,PrefixRules:sre.PrefixRules,PrefixSpanish:sre.PrefixSpanish};sre.SpeechRuleStores.availableSets=function(){return Object.keys(sre.SpeechRuleStores.RULE_SETS_)};sre.SpeechRuleStores.getConstructor=function(a){return(a=sre.SpeechRuleStores.RULE_SETS_[a])?a:null};sre.SpeechRuleEngine=function(){this.activeStore_=null;this.cache_={};this.ready_=!0;this.combinedStores_={};this.evaluators_={};this.ruleSets_={};sre.Engine.registerTest(goog.bind(function(a){return this.ready_},this))};goog.addSingletonGetter(sre.SpeechRuleEngine);\nsre.SpeechRuleEngine.prototype.parameterize=function(a){for(var b={},c=0,d=a.length;c<d;c++){var e=a[c];if(this.ruleSets_[e])b[e]=this.ruleSets_[e];else{var f=sre.SpeechRuleStores.getConstructor(e);if(f&&f.getInstance)b[e]=f.getInstance(),this.ruleSets_[e]=f.getInstance();else if(f){var g=this.storeFactory_(f.modality);g.parse(f);this.ruleSets_[e]=g;b[e]=g}}}this.parameterize_(b)};\nsre.SpeechRuleEngine.prototype.storeFactory_=function(a){return new ({braille:sre.BrailleStore,speech:sre.MathStore}[a]||sre.MathStore)};sre.SpeechRuleEngine.prototype.parameterize_=function(a){try{this.activeStore_=this.combineStores_(a)}catch(b){if(\"StoreError\"==b.name)console.error(\"Store Error:\",b.message);else throw b;}this.updateEngine()};sre.SpeechRuleEngine.prototype.clearCache=function(){this.cache_={}};sre.SpeechRuleEngine.prototype.forCache=function(a){for(var b in this.cache_)a(b,this.cache_[b])};\nsre.SpeechRuleEngine.prototype.getCacheForNode_=function(a){if(!a||!a.getAttribute)return null;a=a.getAttribute(\"id\");return\"undefined\"===a||\"\"===a?null:this.getCache(a)};sre.SpeechRuleEngine.prototype.getCache=function(a){return(a=this.cache_[a])?this.cloneCache(a):a};sre.SpeechRuleEngine.prototype.cloneCache=function(a){return a.map(function(b){return b.clone()})};\nsre.SpeechRuleEngine.prototype.pushCache_=function(a,b){sre.Engine.getInstance().cache&&a.getAttribute&&(a=a.getAttribute(\"id\"))&&(this.cache_[a]=this.cloneCache(b))};sre.SpeechRuleEngine.prototype.evaluateNode=function(a){var b=(new Date).getTime();a=this.evaluateNode_(a);var c=(new Date).getTime();sre.Debugger.getInstance().output(\"Time:\",c-b);return a};sre.SpeechRuleEngine.prototype.evaluateNode_=function(a){if(!a)return[];this.updateConstraint_();return this.evaluateTree_(a)};\nsre.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=sre.Engine.getInstance();sre.Debugger.getInstance().output(b.mode!==sre.Engine.Mode.HTTP?a.toString():a);if(b.cache){var c=this.getCacheForNode_(a);if(c)return a.attributes&&this.addPersonality_(c,{},!1,a),c}sre.Grammar.getInstance().setAttribute(a);var d=this.activeStore_.lookupRule(a,b.dynamicCstr);if(!d){if(b.strict)return[];c=this.getEvaluator(b.locale,b.modality)(a);a.attributes&&this.addPersonality_(c,{},!1,a);this.pushCache_(a,\nc);return c}sre.Debugger.getInstance().generateOutput(goog.bind(function(){return[\"Apply Rule:\",d.name,d.dynamicCstr.toString(),b.mode!==sre.Engine.Mode.HTTP?a.toString():a]},this));var e=d.context||this.activeStore_.context,f=d.action.components;c=[];for(var g=0,h;h=f[g];g++){var k=[],l=h.content||\"\",m=h.attributes||{},n=!1;h.grammar&&this.processGrammar(e,a,h.grammar);var p=null,q=null;if(m.engine){p=sre.Engine.getInstance().dynamicCstr.getComponents();var r=sre.Grammar.parseInput(m.engine);q=this.cache_;\nthis.clearCache();sre.Engine.getInstance().setDynamicCstr(r)}switch(h.type){case sre.SpeechRule.Type.NODE:(l=e.applyQuery(a,l))&&(k=this.evaluateTree_(l));break;case sre.SpeechRule.Type.MULTI:n=!0;l=e.applySelector(a,l);0<l.length&&(k=this.evaluateNodeList_(e,l,m.sepFunc,e.constructString(a,m.separator),m.ctxtFunc,e.constructString(a,m.context)));break;case sre.SpeechRule.Type.TEXT:(l=e.constructString(a,l))&&(k=[sre.AuditoryDescription.create({text:l},{adjust:!0})]);break;default:k=[sre.AuditoryDescription.create({text:l})]}k[0]&&\n!n&&(m.context&&(k[0].context=e.constructString(a,m.context)+(k[0].context||\"\")),m.annotation&&(k[0].annotation=m.annotation));h.grammar&&sre.Grammar.getInstance().popState();c=c.concat(this.addPersonality_(k,m,n,a));p&&(this.cache_=q,sre.Engine.getInstance().setDynamicCstr(p))}this.pushCache_(a,c);return c};\nsre.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e,f){if(b==[])return[];var g=d||\"\",h=f||\"\";d=(d=a.contextFunctions.lookup(e))?d(b,h):function(){return h};a=(a=a.contextFunctions.lookup(c))?a(b,g):function(){return sre.AuditoryDescription.create({text:g},{translate:!0})};c=[];for(e=0;f=b[e];e++)f=this.evaluateTree_(f),0<f.length&&(f[0].context=d()+(f[0].context||\"\"),c=c.concat(f),e<b.length-1&&(f=a(),c=c.concat(f)));return c};\nsre.SpeechRuleEngine.prototype.addPersonality_=function(a,b,c,d){var e={},f;for(f in sre.Engine.personalityProps){var g=b[sre.Engine.personalityProps[f]];if(\"undefined\"!==typeof g){var h=parseFloat(g);e[sre.Engine.personalityProps[f]]=isNaN(h)?'\"'==g.charAt(0)?g.slice(1,-1):g:h}}for(b=0;f=a[b];b++)this.addRelativePersonality_(f,e),this.addExternalAttributes_(f,d);c&&a.length&&delete a[a.length-1].personality[sre.Engine.personalityProps.JOIN];return a};\nsre.SpeechRuleEngine.prototype.addExternalAttributes_=function(a,b){if(b.hasAttributes()){b=b.attributes;for(var c=b.length-1;0<=c;c--){var d=b[c].name;!a.attributes[d]&&d.match(/^ext/)&&(a.attributes[d]=b[c].value)}}};sre.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&\"number\"==typeof c[d]&&\"number\"==typeof b[d]?c[d]+b[d]:b[d];return a};sre.SpeechRuleEngine.prototype.toString=function(){return this.activeStore_.findAllRules(function(a){return!0}).map(function(a){return a.toString()}).join(\"\\n\")};\nsre.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;c&&c.debugSpeechRule(a,b)};sre.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){var c=sre.SpeechRuleEngine.getInstance().activeStore_;if(c)for(var d=c.findAllRules(function(g){return g.name==a}),e=0,f;f=d[e];e++)sre.Debugger.getInstance().output(\"Rule\",a,\"DynamicCstr:\",f.dynamicCstr.toString(),\"number\",e),c.debugSpeechRule(f,b)};\nsre.SpeechRuleEngine.prototype.runInSetting=function(a,b){var c=sre.Engine.getInstance(),d={},e=null,f;for(f in a)\"rules\"===f?(e=this.activeStore_,c.ruleSets=a[f],this.parameterize(c.ruleSets)):(d[f]=c[f],c[f]=a[f]);c.setDynamicCstr();a=b();for(f in d)c[f]=d[f];e&&(this.activeStore_=e);c.setDynamicCstr();return a};\nsre.SpeechRuleEngine.prototype.combineStores_=function(a){var b=this.cachedStore_(a);if(b)return b;b=new sre.MathStore;for(var c in a){var d=a[c];d.initialize();d.getSpeechRules().forEach(function(e){b.trie.addRule(e)});this.addEvaluator(d)}b.setSpeechRules(b.trie.collectRules());return this.combinedStores_[this.combinedStoreName_(Object.keys(a))]=b};sre.SpeechRuleEngine.prototype.combinedStoreName_=function(a){return a.sort().join(\"-\")};\nsre.SpeechRuleEngine.prototype.cachedStore_=function(a){var b=Object.keys(a);return b.some(function(c){return!a[c].initialized})?null:this.combinedStores_[this.combinedStoreName_(b)]};sre.SpeechRuleEngine.prototype.updateEngine=function(){this.ready_=!0;var a=sre.MathMap.getInstance();sre.Engine.isReady()?sre.Engine.getInstance().evaluator=goog.bind(a.store.lookupString,a.store):(this.ready_=!1,setTimeout(goog.bind(this.updateEngine,this),250))};\nsre.SpeechRuleEngine.prototype.processGrammar=function(a,b,c){var d={},e;for(e in c){var f=c[e];d[e]=\"string\"===typeof f?a.constructString(b,f):f}sre.Grammar.getInstance().pushState(d)};\nsre.SpeechRuleEngine.prototype.updateConstraint_=function(){var a=sre.Engine.getInstance().dynamicCstr,b=sre.Engine.getInstance().strict,c=this.activeStore_.trie,d={},e=a.getValue(sre.DynamicCstr.Axis.LOCALE),f=a.getValue(sre.DynamicCstr.Axis.MODALITY),g=a.getValue(sre.DynamicCstr.Axis.DOMAIN);c.hasSubtrie([e,f,g])||(e=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.LOCALE],c.hasSubtrie([e,f,g])||(f=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY],c.hasSubtrie([e,f,g])||(g=sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN])));\nd[sre.DynamicCstr.Axis.LOCALE]=[e];d[sre.DynamicCstr.Axis.MODALITY]=[\"summary\"!==f?f:sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.MODALITY]];d[sre.DynamicCstr.Axis.DOMAIN]=[\"speech\"!==f?sre.DynamicCstr.DEFAULT_VALUES[sre.DynamicCstr.Axis.DOMAIN]:g];c=a.getOrder();for(e=0;f=c[e];e++)if(!d[f]){g=a.getValue(f);var h=this.makeSet_(g,a.preference),k=sre.DynamicCstr.DEFAULT_VALUES[f];b||g===k||h.push(k);d[f]=h}a.updateProperties(d)};\nsre.SpeechRuleEngine.prototype.makeSet_=function(a,b){return b&&Object.keys(b).length?a.split(\":\"):[a]};sre.SpeechRuleEngine.prototype.addEvaluator=function(a){var b=goog.bind(a.evaluateDefault,a),c=this.evaluators_[a.locale];c?c[a.modality]=b:(c={},c[a.modality]=b,this.evaluators_[a.locale]=c)};sre.SpeechRuleEngine.prototype.getEvaluator=function(a,b){return(b=(a=this.evaluators_[a])?a[b]:null)?b:goog.bind(this.activeStore_.evaluateDefault,this.activeStore_)};\nsre.SpeechRuleEngine.prototype.enumerate=function(a){return this.activeStore_.trie.enumerate(a)};sre.SpeechGeneratorUtil={};sre.SpeechGeneratorUtil.computeSpeech=function(a){var b=sre.SpeechRuleEngine.getInstance();b.clearCache();return b.evaluateNode(a)};sre.SpeechGeneratorUtil.recomputeSpeech=function(a){a=sre.SemanticTree.fromNode(a);return sre.SpeechRuleEngine.getInstance().evaluateNode(a.xml())};\nsre.SpeechGeneratorUtil.computeSpeechWithoutCache=function(a){var b=sre.Engine.getInstance().cache;sre.Engine.getInstance().cache=!1;a=sre.SpeechRuleEngine.getInstance().evaluateNode(a);sre.Engine.getInstance().cache=b;return a};sre.SpeechGeneratorUtil.retrieveSpeech=function(a){var b=null;sre.Engine.getInstance().cache&&(b=sre.SpeechRuleEngine.getInstance().getCache(a.id.toString()));b||(b=sre.SpeechGeneratorUtil.recomputeSpeech(a));return sre.AuralRendering.getInstance().markup(b)};\nsre.SpeechGeneratorUtil.addSpeech=function(a,b,c){b=sre.SpeechGeneratorUtil.retrieveSpeech(b);a.setAttribute(c||sre.EnrichMathml.Attribute.SPEECH,b)};sre.SpeechGeneratorUtil.addPrefix=function(a,b){(b=sre.SpeechGeneratorUtil.retrievePrefix(b))&&a.setAttribute(sre.EnrichMathml.Attribute.PREFIX,b)};sre.SpeechGeneratorUtil.retrievePrefix=function(a){a=sre.SpeechGeneratorUtil.computePrefix_(a);return sre.AuralRendering.getInstance().markup(a)};\nsre.SpeechGeneratorUtil.computePrefix_=function(a){var b=sre.SemanticTree.fromRoot(a),c=sre.XpathUtil.evalXPath('.//*[@id=\"'+a.id+'\"]',b.xml())[0];return c?sre.SpeechRuleEngine.getInstance().runInSetting({modality:\"prefix\",domain:\"default\",style:\"default\",strict:!0,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(c)}):[]};\nsre.SpeechGeneratorUtil.connectMactions=function(a,b,c){b=sre.DomUtil.querySelectorAll(b,\"maction\");for(var d=0,e;e=b[d];d++){var f=e.getAttribute(\"id\");if(f=sre.DomUtil.querySelectorAllByAttrValue(a,\"id\",f)[0]){var g=e.childNodes[1];e=g.getAttribute(sre.EnrichMathml.Attribute.ID);var h=sre.WalkerUtil.getBySemanticId(a,e);h&&\"dummy\"!==h.getAttribute(sre.EnrichMathml.Attribute.TYPE)||(h=f.childNodes[0],h.getAttribute(\"sre-highlighter-added\")||((f=g.getAttribute(sre.EnrichMathml.Attribute.PARENT))&&\nh.setAttribute(sre.EnrichMathml.Attribute.PARENT,f),h.setAttribute(sre.EnrichMathml.Attribute.TYPE,\"dummy\"),h.setAttribute(sre.EnrichMathml.Attribute.ID,e),sre.DomUtil.querySelectorAllByAttrValue(c,\"id\",e)[0].setAttribute(\"alternative\",e)))}}};\nsre.SpeechGeneratorUtil.connectAllMactions=function(a,b){a=sre.DomUtil.querySelectorAll(a,\"maction\");for(var c=0,d;d=a[c];c++)d=d.childNodes[1].getAttribute(sre.EnrichMathml.Attribute.ID),sre.DomUtil.querySelectorAllByAttrValue(b,\"id\",d)[0].setAttribute(\"alternative\",d)};sre.SpeechGeneratorUtil.retrieveSummary=function(a){a=sre.SpeechGeneratorUtil.computeSummary_(a);return sre.AuralRendering.getInstance().markup(a)};\nsre.SpeechGeneratorUtil.computeSummary_=function(a){return a?sre.SpeechRuleEngine.getInstance().runInSetting({modality:\"summary\",strict:!1,cache:!1,speech:!0},function(){return sre.SpeechRuleEngine.getInstance().evaluateNode(a)}):[]};sre.AbstractSpeechGenerator=function(){this.rebuilt_=null;this.options_={};this.modality=sre.EnrichMathml.addPrefix(\"speech\")};sre.AbstractSpeechGenerator.prototype.getRebuilt=function(){return this.rebuilt_};sre.AbstractSpeechGenerator.prototype.setRebuilt=function(a){this.rebuilt_=a};sre.AbstractSpeechGenerator.prototype.setOptions=function(a){this.options_=a||{};this.modality=sre.EnrichMathml.addPrefix(this.options_.modality||\"speech\")};sre.AbstractSpeechGenerator.prototype.getOptions=function(){return this.options_};\nsre.AbstractSpeechGenerator.prototype.getSpeech=goog.abstractMethod;sre.AbstractSpeechGenerator.prototype.start=function(){};sre.AbstractSpeechGenerator.prototype.end=function(){};sre.AbstractSpeechGenerator.prototype.generateSpeech=function(a,b){this.rebuilt_||(this.rebuilt_=new sre.RebuildStree(b));sre.System.getInstance().setupEngine(this.options_);a=sre.SpeechGeneratorUtil.computeSpeech(this.getRebuilt().xml);return sre.AuralRendering.getInstance().markup(a)};sre.AdhocSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.AdhocSpeechGenerator,sre.AbstractSpeechGenerator);sre.AdhocSpeechGenerator.prototype.getSpeech=function(a,b){b=this.generateSpeech(a,b);a.setAttribute(this.modality,b);return b};sre.ColorGenerator=function(){sre.AbstractSpeechGenerator.call(this);this.modality=sre.EnrichMathml.addPrefix(\"foreground\");this.contrast=new sre.ContrastPicker};goog.inherits(sre.ColorGenerator,sre.AbstractSpeechGenerator);sre.ColorGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};\nsre.ColorGenerator.prototype.generateSpeech=function(a,b){this.getRebuilt()||this.setRebuilt(new sre.RebuildStree(a));this.colorLeaves_(a);return sre.WalkerUtil.getAttribute(a,this.modality)};\nsre.ColorGenerator.prototype.colorLeaves_=function(a){var b=this,c=[];sre.ColorGenerator.visitStree_(this.getRebuilt().streeRoot,c,{});var d={};c=$jscomp.makeIterator(c);for(var e=c.next();!e.done;d={$jscomp$loop$prop$color$5:d.$jscomp$loop$prop$color$5},e=c.next()){e=e.value;d.$jscomp$loop$prop$color$5=this.contrast.generate();var f=!1;(f=Array.isArray(e)?e.map(function(g){return function(h){return b.colorLeave_(a,h,g.$jscomp$loop$prop$color$5)}}(d)).reduce(function(g,h){return g||h},!1):this.colorLeave_(a,\ne,d.$jscomp$loop$prop$color$5))&&this.contrast.increment()}};sre.ColorGenerator.prototype.colorLeave_=function(a,b,c){return(a=sre.WalkerUtil.getBySemanticId(a,b))?(a.setAttribute(this.modality,c),!0):!1};\nsre.ColorGenerator.visitStree_=function(a,b,c){if(a.childNodes.length){if(a.contentNodes.length&&(\"punctuated\"===a.type&&a.contentNodes.forEach(function(h){return c[h.id]=!0}),\"implicit\"!==a.role&&b.push(a.contentNodes.map(function(h){return h.id}))),a.childNodes.length)if(\"implicit\"===a.role){var d=[],e=[];a=$jscomp.makeIterator(a.childNodes);for(var f=a.next();!f.done;f=a.next()){var g=[];sre.ColorGenerator.visitStree_(f.value,g,c);2>=g.length&&d.push(g.shift());e=e.concat(g)}b.push(d);e.forEach(function(h){return b.push(h)})}else a.childNodes.forEach(function(h){return sre.ColorGenerator.visitStree_(h,\nb,c)})}else c[a.id]||b.push(a.id)};sre.DirectSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DirectSpeechGenerator,sre.AbstractSpeechGenerator);sre.DirectSpeechGenerator.prototype.getSpeech=function(a,b){return sre.WalkerUtil.getAttribute(a,this.modality)};sre.DummySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.DummySpeechGenerator,sre.AbstractSpeechGenerator);sre.DummySpeechGenerator.prototype.getSpeech=function(a,b){return\"\"};sre.TreeSpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.TreeSpeechGenerator,sre.AbstractSpeechGenerator);\nsre.TreeSpeechGenerator.prototype.getSpeech=function(a,b){var c=this.generateSpeech(a,b);a.setAttribute(this.modality,c);var d=this.getRebuilt().nodeDict,e;for(e in d){var f=d[e],g=sre.WalkerUtil.getBySemanticId(b,e),h=sre.WalkerUtil.getBySemanticId(a,e);g&&h&&(sre.SpeechGeneratorUtil.addSpeech(h,f,this.modality),this.modality===sre.EnrichMathml.Attribute.SPEECH&&sre.SpeechGeneratorUtil.addPrefix(h,f))}return c};sre.NodeSpeechGenerator=function(){sre.TreeSpeechGenerator.call(this)};goog.inherits(sre.NodeSpeechGenerator,sre.TreeSpeechGenerator);sre.NodeSpeechGenerator.prototype.getSpeech=function(a,b){var c=sre.WalkerUtil.getAttribute(a,this.modality);return c?c:sre.NodeSpeechGenerator.superClass_.getSpeech.call(this,a,b)};sre.SummarySpeechGenerator=function(){sre.AbstractSpeechGenerator.call(this)};goog.inherits(sre.SummarySpeechGenerator,sre.AbstractSpeechGenerator);sre.SummarySpeechGenerator.prototype.getSpeech=function(a,b){sre.SpeechGeneratorUtil.connectAllMactions(b,this.getRebuilt().xml);return this.generateSpeech(a,b)};sre.SpeechGeneratorFactory={};sre.SpeechGeneratorFactory.generator=function(a){return new (sre.SpeechGeneratorFactory.generatorMapping_[a]||sre.SpeechGeneratorFactory.generatorMapping_.Direct)};sre.SpeechGeneratorFactory.generatorMapping_={Adhoc:sre.AdhocSpeechGenerator,Color:sre.ColorGenerator,Direct:sre.DirectSpeechGenerator,Dummy:sre.DummySpeechGenerator,Node:sre.NodeSpeechGenerator,Summary:sre.SummarySpeechGenerator,Tree:sre.TreeSpeechGenerator};sre.EventUtil={};sre.EventUtil.KeyCode={ENTER:13,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,TAB:9,LESS:188,GREATER:190,DASH:189,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90};sre.EventUtil.Move=function(){var a={},b;for(b in sre.EventUtil.KeyCode)a[sre.EventUtil.KeyCode[b]]=b;return a}();\nsre.EventUtil.EventType={CLICK:\"click\",DBLCLICK:\"dblclick\",MOUSEDOWN:\"mousedown\",MOUSEUP:\"mouseup\",MOUSEOVER:\"mouseover\",MOUSEOUT:\"mouseout\",MOUSEMOVE:\"mousemove\",SELECTSTART:\"selectstart\",KEYPRESS:\"keypress\",KEYDOWN:\"keydown\",KEYUP:\"keyup\",TOUCHSTART:\"touchstart\",TOUCHMOVE:\"touchmove\",TOUCHEND:\"touchend\",TOUCHCANCEL:\"touchcancel\"};sre.EventUtil.Event=function(a,b,c){this.src=a;this.type=b;this.callback=c};sre.EventUtil.Event.prototype.add=function(){this.src.addEventListener(this.type,this.callback)};\nsre.EventUtil.Event.prototype.remove=function(){this.src.removeEventListener(this.type,this.callback)};sre.Focus=function(a,b){this.semanticNodes_=a;this.semanticPrimary_=b;this.domNodes_=[];this.domPrimary_=null;this.allNodes_=[]};sre.Focus.prototype.getSemanticPrimary=function(){return this.semanticPrimary_};sre.Focus.prototype.getSemanticNodes=function(){return this.semanticNodes_};sre.Focus.prototype.getNodes=function(){return this.allNodes_};sre.Focus.prototype.getDomNodes=function(){return this.domNodes_};sre.Focus.prototype.getDomPrimary=function(){return this.domPrimary_};\nsre.Focus.prototype.toString=function(){return\"Primary:\"+this.domPrimary_+\" Nodes:\"+this.domNodes_};sre.Focus.prototype.clone=function(){var a=new sre.Focus(this.semanticNodes_,this.semanticPrimary_);a.domNodes_=this.domNodes_;a.domPrimary_=this.domPrimary_;a.allNodes_=this.allNodes_;return a};\nsre.Focus.factory=function(a,b,c,d){var e=function(h){return sre.WalkerUtil.getBySemanticId(d,h)},f=c.nodeDict;c=e(a);e=b.map(e);var g=b.map(function(h){return f[h]});a=new sre.Focus(g,f[a]);a.domNodes_=e;a.domPrimary_=c;a.allNodes_=sre.Focus.generateAllVisibleNodes_(b,e,f,d);return a};\nsre.Focus.generateAllVisibleNodes_=function(a,b,c,d){for(var e=function(m){return sre.WalkerUtil.getBySemanticId(d,m)},f=[],g=0,h=a.length;g<h;g++)if(b[g])f.push(b[g]);else{var k=c[a[g]];if(k){k=k.childNodes.map(function(m){return m.id.toString()});var l=k.map(e);f=f.concat(sre.Focus.generateAllVisibleNodes_(k,l,c,d))}}return f};sre.Levels=function(){this.level_=[]};sre.Levels.prototype.push=function(a){this.level_.push(a)};sre.Levels.prototype.pop=function(){return this.level_.pop()};sre.Levels.prototype.peek=function(){return this.level_[this.level_.length-1]||null};sre.Levels.prototype.indexOf=function(a){var b=this.peek();return b?b.indexOf(a):null};sre.Levels.prototype.find=function(a){var b=this.peek();if(!b)return null;for(var c=0,d=b.length;c<d;c++)if(a(b[c]))return b[c];return null};\nsre.Levels.prototype.get=function(a){var b=this.peek();return!b||0>a||a>=b.length?null:b[a]};sre.Levels.prototype.depth=function(){return this.level_.length};sre.Levels.prototype.clone=function(){var a=new sre.Levels;a.level_=this.level_.slice(0);return a};sre.Levels.prototype.toString=function(){for(var a=\"\",b=0,c;c=this.level_[b];b++)a+=\"\\n\"+c.map(function(d){return d.toString()});return a};sre.Walker=function(){};sre.Walker.prototype.isActive=function(){};sre.Walker.prototype.activate=function(){};sre.Walker.prototype.deactivate=function(){};sre.Walker.prototype.speech=function(){};sre.Walker.prototype.getXml=function(){};sre.Walker.prototype.getRebuilt=function(){};sre.Walker.prototype.getFocus=function(a){};sre.Walker.prototype.setFocus=function(a){};sre.Walker.prototype.getDepth=function(){};sre.Walker.prototype.move=function(a){};sre.Walker.prototype.update=function(a){};\nsre.Walker.move={UP:\"up\",DOWN:\"down\",LEFT:\"left\",RIGHT:\"right\",REPEAT:\"repeat\",DEPTH:\"depth\",ENTER:\"enter\",EXPAND:\"expand\",HOME:\"home\",SUMMARY:\"summary\",DETAIL:\"detail\",ROW:\"row\",CELL:\"cell\"};sre.Walker.STATE_={};sre.Walker.resetState=function(a){delete sre.Walker.STATE_[a]};sre.Walker.setState=function(a,b){sre.Walker.STATE_[a]=b};sre.Walker.getState=function(a){return sre.Walker.STATE_[a]};sre.AbstractWalker=function(a,b,c,d){this.node=a;this.node.id?this.id=this.node.id:this.node.hasAttribute(sre.AbstractWalker.SRE_ID_ATTR)?this.id=this.node.getAttribute(sre.AbstractWalker.SRE_ID_ATTR):(this.node.setAttribute(sre.AbstractWalker.SRE_ID_ATTR,sre.AbstractWalker.ID_COUNTER),this.id=sre.AbstractWalker.ID_COUNTER++);this.generator=b;this.highlighter=c;this.rootNode=sre.WalkerUtil.getSemanticRoot(a);this.rootId=this.rootNode.getAttribute(sre.EnrichMathml.Attribute.ID);this.xmlString_=d;this.focus_=\nthis.rebuilt_=this.xml_=null;this.keyMapping={};this.keyMapping[sre.EventUtil.KeyCode.UP]=goog.bind(this.up,this);this.keyMapping[sre.EventUtil.KeyCode.DOWN]=goog.bind(this.down,this);this.keyMapping[sre.EventUtil.KeyCode.RIGHT]=goog.bind(this.right,this);this.keyMapping[sre.EventUtil.KeyCode.LEFT]=goog.bind(this.left,this);this.keyMapping[sre.EventUtil.KeyCode.TAB]=goog.bind(this.repeat,this);this.keyMapping[sre.EventUtil.KeyCode.DASH]=goog.bind(this.expand,this);this.keyMapping[sre.EventUtil.KeyCode.SPACE]=\ngoog.bind(this.depth,this);this.keyMapping[sre.EventUtil.KeyCode.HOME]=goog.bind(this.home,this);this.keyMapping[sre.EventUtil.KeyCode.X]=goog.bind(this.summary,this);this.keyMapping[sre.EventUtil.KeyCode.Z]=goog.bind(this.detail,this);this.keyMapping[sre.EventUtil.KeyCode.V]=goog.bind(this.virtualize,this);this.keyMapping[sre.EventUtil.KeyCode.P]=goog.bind(this.previous,this);this.keyMapping[sre.EventUtil.KeyCode.U]=goog.bind(this.undo,this);this.keyMapping[sre.EventUtil.KeyCode.LESS]=goog.bind(this.previousRules,\nthis);this.keyMapping[sre.EventUtil.KeyCode.GREATER]=goog.bind(this.nextRules,this);this.active_=!1;this.moved=sre.Walker.move.ENTER;this.cursors=[]};sre.AbstractWalker.prototype.getXml=function(){this.xml_||(this.xml_=sre.DomUtil.parseInput(this.xmlString_));return this.xml_};sre.AbstractWalker.prototype.getRebuilt=function(){this.rebuilt_||(this.rebuilt_=this.rebuildStree());return this.rebuilt_};sre.AbstractWalker.ID_COUNTER=0;sre.AbstractWalker.SRE_ID_ATTR=\"sre-explorer-id\";\nsre.AbstractWalker.prototype.isActive=function(){return this.active_};sre.AbstractWalker.prototype.toggleActive_=function(){this.active_=!this.active_};sre.AbstractWalker.prototype.activate=function(){this.isActive()||(this.generator.start(),this.toggleActive_())};sre.AbstractWalker.prototype.deactivate=function(){this.isActive()&&(sre.Walker.setState(this.id,this.primaryId()),this.generator.end(),this.toggleActive_())};\nsre.AbstractWalker.prototype.getFocus=function(a){this.focus_||(this.focus_=sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node));a&&this.updateFocus();return this.focus_};sre.AbstractWalker.prototype.setFocus=function(a){this.focus_=a};sre.AbstractWalker.prototype.getDepth=function(){return this.levels.depth()-1};sre.AbstractWalker.prototype.isSpeech=function(){return this.generator.modality===sre.EnrichMathml.Attribute.SPEECH};\nsre.AbstractWalker.prototype.speech=function(){var a=this.getFocus().getDomNodes();if(!a.length)return\"\";var b=this.specialMove();if(null!==b)return b;switch(this.moved){case sre.Walker.move.DEPTH:return this.depth_();case sre.Walker.move.SUMMARY:return this.summary_();case sre.Walker.move.DETAIL:return this.detail_();default:b=[];for(var c=this.getFocus().getSemanticNodes(),d=0,e=a.length;d<e;d++){var f=a[d],g=c[d];b.push(f?this.generator.getSpeech(f,this.getXml()):sre.SpeechGeneratorUtil.retrieveSpeech(g))}return this.mergePrefix_(b)}};\nsre.AbstractWalker.prototype.mergePrefix_=function(a,b){b=b||[];var c=this.isSpeech()?this.prefix_():\"\",d=sre.AuralRendering.getInstance();c&&a.unshift(c);return d.finalize(d.merge(b.concat(a)))};sre.AbstractWalker.prototype.prefix_=function(){var a=this.getFocus().getDomNodes(),b=this.getFocus().getSemanticNodes();return a[0]?sre.WalkerUtil.getAttribute(a[0],sre.EnrichMathml.Attribute.PREFIX):sre.SpeechGeneratorUtil.retrievePrefix(b[0])};\nsre.AbstractWalker.prototype.move=function(a){a=this.keyMapping[a];if(!a)return null;a=a();if(!a||a===this.getFocus())return!1;this.setFocus(a);this.moved===sre.Walker.move.HOME&&(this.levels=this.initLevels());return!0};sre.AbstractWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.getFocus()};sre.AbstractWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.getFocus()};sre.AbstractWalker.prototype.left=function(){this.moved=sre.Walker.move.LEFT;return this.getFocus()};\nsre.AbstractWalker.prototype.right=function(){this.moved=sre.Walker.move.RIGHT;return this.getFocus()};sre.AbstractWalker.prototype.repeat=function(){this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.depth=function(){this.moved=this.isSpeech()?sre.Walker.move.DEPTH:sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.depth_=function(){var a=sre.Grammar.getInstance().getParameter(\"depth\");sre.Grammar.getInstance().setParameter(\"depth\",!0);var b=this.getFocus().getDomPrimary();b=this.expandable(b)&&[sre.Messages.NAVIGATE.EXPANDABLE]||this.collapsible(b)&&[sre.Messages.NAVIGATE.COLLAPSIBLE]||[];var c=[sre.AuralRendering.getInstance().markup([new sre.AuditoryDescription({text:sre.Messages.NAVIGATE.LEVEL+\" \"+this.getDepth(),personality:{}})])],d=this.getFocus().getSemanticNodes();d=sre.SpeechGeneratorUtil.retrievePrefix(d[0]);\nvar e=sre.AuralRendering.getInstance();d&&c.push(d);sre.Grammar.getInstance().setParameter(\"depth\",a);return e.finalize(e.merge(c.concat(b)))};sre.AbstractWalker.prototype.home=function(){this.moved=sre.Walker.move.HOME;return sre.Focus.factory(this.rootId,[this.rootId],this.getRebuilt(),this.node)};sre.AbstractWalker.prototype.getBySemanticId=function(a){return sre.WalkerUtil.getBySemanticId(this.node,a)};sre.AbstractWalker.prototype.primaryId=function(){return this.getFocus().getSemanticPrimary().id.toString()};\nsre.AbstractWalker.prototype.expand=function(){var a=this.getFocus().getDomPrimary();a=this.actionable_(a);if(!a)return this.getFocus();this.moved=sre.Walker.move.EXPAND;a.dispatchEvent(new Event(\"click\"));return this.getFocus().clone()};sre.AbstractWalker.prototype.actionable_=function(a){return a&&a.parentNode&&this.highlighter.isMactionNode(a.parentNode)?a.parentNode:null};sre.AbstractWalker.prototype.expandable=function(a){return!!this.actionable_(a)&&0===a.childNodes.length};\nsre.AbstractWalker.prototype.collapsible=function(a){return!!this.actionable_(a)&&0<a.childNodes.length};sre.AbstractWalker.prototype.restoreState=function(){if(this.highlighter){var a=sre.Walker.getState(this.id);if(a){var b=this.getRebuilt().nodeDict[a];for(a=[];b;)a.push(b.id),b=b.parent;for(a.pop();0<a.length;){this.down();b=a.pop();b=this.findFocusOnLevel(b);if(!b)break;this.setFocus(b)}this.moved=sre.Walker.move.ENTER}}};\nsre.AbstractWalker.prototype.updateFocus=function(){this.setFocus(sre.Focus.factory(this.getFocus().getSemanticPrimary().id.toString(),this.getFocus().getSemanticNodes().map(function(a){return a.id}),this.getRebuilt(),this.node))};sre.AbstractWalker.prototype.findFocusOnLevel=goog.abstractMethod;sre.AbstractWalker.prototype.initLevels=goog.abstractMethod;\nsre.AbstractWalker.prototype.rebuildStree=function(){var a=new sre.RebuildStree(this.getXml());this.rootId=a.stree.root.id.toString();this.generator.setRebuilt(a);this.focus_=sre.Focus.factory(this.rootId,[this.rootId],a,this.node);this.levels=this.initLevels();sre.SpeechGeneratorUtil.connectMactions(this.node,this.getXml(),a.xml);return a};\nsre.AbstractWalker.prototype.previousLevel=function(){var a=this.getFocus().getDomPrimary();return a?sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.PARENT):this.getFocus().getSemanticPrimary().parent.id.toString()};\nsre.AbstractWalker.prototype.nextLevel=function(){var a=this.getFocus().getDomPrimary();if(a){var b=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CHILDREN)),c=sre.WalkerUtil.splitAttribute(sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.CONTENT)),d=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.TYPE);a=sre.WalkerUtil.getAttribute(a,sre.EnrichMathml.Attribute.ROLE);return this.combineContentChildren(d,a,c,b)}c=function(e){return e.id.toString()};\nd=this.getRebuilt().nodeDict[this.primaryId()];b=d.childNodes.map(c);c=d.contentNodes.map(c);return 0===b.length?[]:this.combineContentChildren(d.type,d.role,c,b)};sre.AbstractWalker.prototype.combineContentChildren=goog.abstractMethod;sre.AbstractWalker.prototype.singletonFocus=function(a){return this.focusFromId(a,[a])};sre.AbstractWalker.prototype.focusFromId=function(a,b){return sre.Focus.factory(a,b,this.getRebuilt(),this.node)};\nsre.AbstractWalker.prototype.summary=function(){this.moved=this.isSpeech()?sre.Walker.move.SUMMARY:sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.AbstractWalker.prototype.summary_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute(\"id\")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",a)[0];a=sre.SpeechGeneratorUtil.retrieveSummary(a);return this.mergePrefix_([a])};\nsre.AbstractWalker.prototype.detail=function(){this.moved=this.isSpeech()?sre.Walker.move.DETAIL:sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.detail_=function(){var a=this.getFocus().getSemanticPrimary().id.toString();a=this.getRebuilt().xml.getAttribute(\"id\")===a?this.getRebuilt().xml:sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",a)[0];var b=a.getAttribute(\"alternative\");a.removeAttribute(\"alternative\");var c=sre.SpeechGeneratorUtil.computeSpeechWithoutCache(a);c=sre.AuralRendering.getInstance().markup(c);c=this.mergePrefix_([c]);a.setAttribute(\"alternative\",b);return c};\nsre.AbstractWalker.prototype.specialMove=function(){return null};sre.AbstractWalker.prototype.virtualize=function(a){this.cursors.push({focus:this.getFocus(),levels:this.levels,undo:a||!this.cursors.length});this.levels=this.levels.clone();return this.getFocus().clone()};sre.AbstractWalker.prototype.previous=function(){var a=this.cursors.pop();if(!a)return this.getFocus();this.levels=a.levels;return a.focus};\nsre.AbstractWalker.prototype.undo=function(){do var a=this.cursors.pop();while(a&&!a.undo);if(!a)return this.getFocus();this.levels=a.levels;return a.focus};sre.AbstractWalker.prototype.update=function(a){this.generator.setOptions(a);sre.System.getInstance().setupEngine(a);sre.SpeechGeneratorFactory.generator(\"Tree\").getSpeech(this.node,this.getXml())};\nsre.AbstractWalker.prototype.nextRules=function(){var a=this.generator.getOptions();if(\"speech\"!==a.modality)return this.getFocus();sre.Engine.DOMAIN_TO_STYLES[a.domain]=a.style;a.domain=\"mathspeak\"===a.domain?\"clearspeak\":\"mathspeak\";a.style=sre.Engine.DOMAIN_TO_STYLES[a.domain];this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};\nsre.AbstractWalker.prototype.nextStyle=function(a,b){if(\"mathspeak\"===a){a=[\"default\",\"brief\",\"sbrief\"];var c=a.indexOf(b);return-1===c?b:c>=a.length-1?a[0]:a[c+1]}if(\"clearspeak\"===a){var d=sre.ClearspeakPreferences.getLocalePreferences().en;if(!d)return\"default\";a=sre.ClearspeakPreferences.relevantPreferences(this.getFocus().getSemanticPrimary());c=sre.ClearspeakPreferences.findPreference(b,a);d=d[a].map(function(e){return e.split(\"_\")[1]});c=d.indexOf(c);return-1===c?b:sre.ClearspeakPreferences.addPreference(b,\na,c>=d.length-1?d[0]:d[c+1])}return b};sre.AbstractWalker.prototype.previousRules=function(){var a=this.generator.getOptions();if(\"speech\"!==a.modality)return this.getFocus();a.style=this.nextStyle(a.domain,a.style);this.update(a);this.moved=sre.Walker.move.REPEAT;return this.getFocus().clone()};sre.DummyWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d)};goog.inherits(sre.DummyWalker,sre.AbstractWalker);sre.DummyWalker.prototype.up=function(){};sre.DummyWalker.prototype.down=function(){};sre.DummyWalker.prototype.left=function(){};sre.DummyWalker.prototype.right=function(){};sre.DummyWalker.prototype.repeat=function(){};sre.DummyWalker.prototype.depth=function(){};sre.DummyWalker.prototype.home=function(){};sre.DummyWalker.prototype.getDepth=function(){return 0};\nsre.DummyWalker.prototype.initLevels=function(){};sre.SemanticWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SemanticWalker,sre.AbstractWalker);sre.SemanticWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.getFocus()]);return a};\nsre.SemanticWalker.prototype.up=function(){sre.SemanticWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.levels.find(function(b){return b.getSemanticNodes().some(function(c){return c.id.toString()===a})})};sre.SemanticWalker.prototype.down=function(){sre.SemanticWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;this.levels.push(a);return a[0]};\nsre.SemanticWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return this.makePairList(d,c);case sre.SemanticAttr.Type.PREFIXOP:return[this.focusFromId(d[0],c.concat(d))];case sre.SemanticAttr.Type.POSTFIXOP:return[this.focusFromId(d[0],d.concat(c))];case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return[this.focusFromId(d[0],\n[c[0],d[0],c[1]])];case sre.SemanticAttr.Type.CASES:return[this.focusFromId(d[0],[c[0],d[0]])];case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?d.map(goog.bind(this.singletonFocus,this)):d.length===c.length?c.map(goog.bind(this.singletonFocus,this)):this.combinePunctuations(d,c,[],[]);case sre.SemanticAttr.Type.APPL:return[this.focusFromId(d[0],[d[0],c[0]]),this.singletonFocus(d[1])];case sre.SemanticAttr.Type.ROOT:return[this.singletonFocus(d[1]),this.singletonFocus(d[0])];\ndefault:return d.map(goog.bind(this.singletonFocus,this))}};sre.SemanticWalker.prototype.combinePunctuations=function(a,b,c,d){if(0===a.length)return d;var e=a.shift(),f=b.shift();if(e===f)return c.push(f),this.combinePunctuations(a,b,c,d);b.unshift(f);c.push(e);if(a.length===b.length)return d.push(this.focusFromId(e,c.concat(b))),d;d.push(this.focusFromId(e,c));return this.combinePunctuations(a,b,[],d)};\nsre.SemanticWalker.prototype.makePairList=function(a,b){if(0===a.length)return[];if(1===a.length)return[this.singletonFocus(a[0])];for(var c=[this.singletonFocus(a.shift())],d=0,e=a.length;d<e;d++)c.push(this.focusFromId(a[d],[b[d],a[d]]));return c};sre.SemanticWalker.prototype.left=function(){sre.SemanticWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a-1))?a:null};\nsre.SemanticWalker.prototype.right=function(){sre.SemanticWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.getFocus());return null===a?null:(a=this.levels.get(a+1))?a:null};sre.SemanticWalker.prototype.findFocusOnLevel=function(a){return this.levels.find(function(b){return b.getSemanticPrimary().id===a})};sre.SyntaxWalker=function(a,b,c,d){sre.AbstractWalker.call(this,a,b,c,d);this.levels=null;this.restoreState()};goog.inherits(sre.SyntaxWalker,sre.AbstractWalker);sre.SyntaxWalker.prototype.initLevels=function(){var a=new sre.Levels;a.push([this.primaryId()]);return a};sre.SyntaxWalker.prototype.up=function(){sre.SyntaxWalker.superClass_.up.call(this);var a=this.previousLevel();if(!a)return null;this.levels.pop();return this.singletonFocus(a)};\nsre.SyntaxWalker.prototype.down=function(){sre.SyntaxWalker.superClass_.down.call(this);var a=this.nextLevel();if(0===a.length)return null;var b=this.singletonFocus(a[0]);b&&this.levels.push(a);return b};\nsre.SyntaxWalker.prototype.combineContentChildren=function(a,b,c,d){switch(a){case sre.SemanticAttr.Type.RELSEQ:case sre.SemanticAttr.Type.INFIXOP:case sre.SemanticAttr.Type.MULTIREL:return sre.BaseUtil.interleaveLists(d,c);case sre.SemanticAttr.Type.PREFIXOP:return c.concat(d);case sre.SemanticAttr.Type.POSTFIXOP:return d.concat(c);case sre.SemanticAttr.Type.MATRIX:case sre.SemanticAttr.Type.VECTOR:case sre.SemanticAttr.Type.FENCED:return d.unshift(c[0]),d.push(c[1]),d;case sre.SemanticAttr.Type.CASES:return d.unshift(c[0]),\nd;case sre.SemanticAttr.Type.PUNCTUATED:return b===sre.SemanticAttr.Role.TEXT?sre.BaseUtil.interleaveLists(d,c):d;case sre.SemanticAttr.Type.APPL:return[d[0],c[0],d[1]];case sre.SemanticAttr.Type.ROOT:return[d[1],d[0]];default:return d}};sre.SyntaxWalker.prototype.left=function(){sre.SyntaxWalker.superClass_.left.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a-1))?this.singletonFocus(a):null};\nsre.SyntaxWalker.prototype.right=function(){sre.SyntaxWalker.superClass_.right.call(this);var a=this.levels.indexOf(this.primaryId());return null===a?null:(a=this.levels.get(a+1))?this.singletonFocus(a):null};sre.SyntaxWalker.prototype.findFocusOnLevel=function(a){return this.singletonFocus(a.toString())};sre.TableWalker=function(a,b,c,d){sre.SyntaxWalker.call(this,a,b,c,d);this.modifier=!1;this.keyMapping[sre.EventUtil.KeyCode[\"0\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"1\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"2\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"3\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"4\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"5\"]]=\ngoog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"6\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"7\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"8\"]]=goog.bind(this.jumpCell,this);this.keyMapping[sre.EventUtil.KeyCode[\"9\"]]=goog.bind(this.jumpCell,this);this.key_=null;this.row_=0;this.firstJump=this.currentTable_=null};goog.inherits(sre.TableWalker,sre.SyntaxWalker);\nsre.TableWalker.prototype.move=function(a){this.key_=a;a=sre.TableWalker.superClass_.move.call(this,a);this.modifier=!1;return a};sre.TableWalker.prototype.up=function(){this.moved=sre.Walker.move.UP;return this.eligibleCell_()?this.verticalMove_(!1):sre.TableWalker.superClass_.up.call(this)};sre.TableWalker.prototype.down=function(){this.moved=sre.Walker.move.DOWN;return this.eligibleCell_()?this.verticalMove_(!0):sre.TableWalker.superClass_.down.call(this)};\nsre.TableWalker.ELIGIBLE_CELL_ROLES=[sre.SemanticAttr.Role.DETERMINANT,sre.SemanticAttr.Role.ROWVECTOR,sre.SemanticAttr.Role.BINOMIAL,sre.SemanticAttr.Role.SQUAREMATRIX,sre.SemanticAttr.Role.MULTILINE,sre.SemanticAttr.Role.MATRIX,sre.SemanticAttr.Role.VECTOR,sre.SemanticAttr.Role.CASES,sre.SemanticAttr.Role.TABLE];sre.TableWalker.ELIGIBLE_TABLE_TYPES=[sre.SemanticAttr.Type.MULTILINE,sre.SemanticAttr.Type.MATRIX,sre.SemanticAttr.Type.VECTOR,sre.SemanticAttr.Type.CASES,sre.SemanticAttr.Type.TABLE];\nsre.TableWalker.prototype.eligibleCell_=function(){var a=this.getFocus().getSemanticPrimary();return this.modifier&&a.type===sre.SemanticAttr.Type.CELL&&-1!==sre.TableWalker.ELIGIBLE_CELL_ROLES.indexOf(a.role)};\nsre.TableWalker.prototype.verticalMove_=function(a){var b=this.previousLevel();if(!b)return null;var c=this.getFocus(),d=this.levels.indexOf(this.primaryId()),e=this.levels.pop();b=this.levels.indexOf(b);a=this.levels.get(a?b+1:b-1);if(!a)return this.levels.push(e),null;this.setFocus(this.singletonFocus(a));a=this.nextLevel();if(!a[d])return this.setFocus(c),this.levels.push(e),null;this.levels.push(a);return this.singletonFocus(a[d])};\nsre.TableWalker.prototype.jumpCell=function(){if(!this.isInTable_()||null===this.key_)return this.getFocus();if(this.moved===sre.Walker.move.ROW){this.moved=sre.Walker.move.CELL;var a=this.key_-sre.EventUtil.KeyCode[\"0\"];return this.isLegalJump_(this.row_,a)?this.jumpCell_(this.row_,a):this.getFocus()}a=this.key_-sre.EventUtil.KeyCode[\"0\"];if(a>this.currentTable_.childNodes.length)return this.getFocus();this.row_=a;this.moved=sre.Walker.move.ROW;return this.getFocus().clone()};\nsre.TableWalker.prototype.jumpCell_=function(a,b){this.firstJump?this.virtualize(!1):(this.firstJump=this.getFocus(),this.virtualize(!0));var c=this.currentTable_.id.toString();do var d=this.levels.pop();while(-1===d.indexOf(c));this.levels.push(d);this.setFocus(this.singletonFocus(c));this.levels.push(this.nextLevel());a=this.currentTable_.childNodes[a-1];this.setFocus(this.singletonFocus(a.id.toString()));this.levels.push(this.nextLevel());return this.singletonFocus(a.childNodes[b-1].id.toString())};\nsre.TableWalker.prototype.isLegalJump_=function(a,b){var c=sre.DomUtil.querySelectorAllByAttrValue(this.getRebuilt().xml,\"id\",this.currentTable_.id.toString())[0];if(!c||c.hasAttribute(\"alternative\"))return!1;a=this.currentTable_.childNodes[a-1];if(!a)return!1;c=sre.DomUtil.querySelectorAllByAttrValue(c,\"id\",a.id.toString())[0];return!c||c.hasAttribute(\"alternative\")?!1:!(!a||!a.childNodes[b-1])};\nsre.TableWalker.prototype.isInTable_=function(){for(var a=this.getFocus().getSemanticPrimary();a;){if(-1!==sre.TableWalker.ELIGIBLE_TABLE_TYPES.indexOf(a.type))return this.currentTable_=a,!0;a=a.parent}return!1};sre.TableWalker.prototype.undo=function(){var a=sre.TableWalker.superClass_.undo.call(this);a===this.firstJump&&(this.firstJump=null);return a};sre.WalkerFactory={};sre.WalkerFactory.walker=function(a,b,c,d,e){return new (sre.WalkerFactory.walkerMapping_[a.toLowerCase()]||sre.WalkerFactory.walkerMapping_.dummy)(b,c,d,e)};sre.WalkerFactory.walkerMapping_={dummy:sre.DummyWalker,semantic:sre.SemanticWalker,syntax:sre.SyntaxWalker,table:sre.TableWalker};sre.ProcessorFactory={};sre.ProcessorFactory.PROCESSORS_={};sre.ProcessorFactory.get_=function(a){var b=sre.ProcessorFactory.PROCESSORS_[a.toLowerCase()];if(!b)throw new sre.Engine.Error(\"Unknown processor \"+a);return b};sre.ProcessorFactory.process=function(a,b){return sre.ProcessorFactory.get_(a).processor(b)};sre.ProcessorFactory.print=function(a,b){a=sre.ProcessorFactory.get_(a);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};\nsre.ProcessorFactory.output=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};sre.ProcessorFactory.keypress=function(a,b){a=sre.ProcessorFactory.get_(a);b=a.key?a.key(b):b;b=a.processor(b);return sre.Engine.getInstance().pprint?a.pprint(b):a.print(b)};\nsre.Processor=function(a,b){this.name=a;this.processor=b.processor;this.print=b.print||sre.Processor.stringify_;this.pprint=b.pprint||this.print;sre.ProcessorFactory.PROCESSORS_[this.name]=this};sre.KeyProcessor=function(a,b){sre.Processor.call(this,a,b);this.key=b.key||sre.KeyProcessor.getKey_};goog.inherits(sre.KeyProcessor,sre.Processor);sre.KeyProcessor.getKey_=function(a){return\"string\"===typeof a?sre.EventUtil.KeyCode[a.toUpperCase()]:a};\nsre.Processor.LocalState_={walker:null,speechGenerator:null,highlighter:null};sre.Processor.stringify_=function(a){return a?a.toString():a};new sre.Processor(\"semantic\",{processor:function(a){a=sre.DomUtil.parseInput(a);return sre.Semantic.xmlTree(a)},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});\nnew sre.Processor(\"speech\",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);a=sre.SpeechGeneratorUtil.computeSpeech(a);var b=sre.AuralRendering.getInstance();return b.finalize(b.markup(a))},pprint:function(a){a=a.toString();return sre.AuralRendering.ofType(sre.XmlRenderer)?sre.DomUtil.formatXml(a):a}});\nnew sre.Processor(\"json\",{processor:function(a){a=sre.DomUtil.parseInput(a,sre.Engine.Error);return sre.Semantic.getTree(a).toJson()},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});new sre.Processor(\"description\",{processor:function(a){a=sre.DomUtil.parseInput(a);a=sre.Semantic.xmlTree(a);return sre.SpeechGeneratorUtil.computeSpeech(a)},print:function(a){return JSON.stringify(a)},pprint:function(a){return JSON.stringify(a,null,2)}});\nnew sre.Processor(\"enriched\",{processor:function(a){a=sre.Enrich.semanticMathmlSync(a);var b=sre.WalkerUtil.getSemanticRoot(a);switch(sre.Engine.getInstance().speech){case sre.Engine.Speech.SHALLOW:var c=sre.SpeechGeneratorFactory.generator(\"Adhoc\");c.getSpeech(b,a);break;case sre.Engine.Speech.DEEP:c=sre.SpeechGeneratorFactory.generator(\"Tree\"),c.getSpeech(b,a)}return a},pprint:function(a){return sre.DomUtil.formatXml(a.toString())}});\nnew sre.Processor(\"walker\",{processor:function(a){var b=sre.SpeechGeneratorFactory.generator(\"Node\");sre.Processor.LocalState_.speechGenerator=b;sre.Processor.LocalState_.highlighter=sre.HighlighterFactory.highlighter({color:\"black\"},{color:\"white\"},{renderer:\"NativeMML\"});a=sre.ProcessorFactory.process(\"enriched\",a);var c=sre.ProcessorFactory.print(\"enriched\",a);sre.Processor.LocalState_.walker=sre.WalkerFactory.walker(sre.Engine.getInstance().walker,a,b,sre.Processor.LocalState_.highlighter,c);\nreturn sre.Processor.LocalState_.walker},print:function(a){return sre.Processor.LocalState_.walker.speech()}});new sre.KeyProcessor(\"move\",{processor:function(a){return sre.Processor.LocalState_.walker?!1===sre.Processor.LocalState_.walker.move(a)?sre.AuralRendering.getInstance().error(a):sre.Processor.LocalState_.walker.speech():null}});sre.System=function(){this.version=sre.Variables.VERSION};goog.addSingletonGetter(sre.System);\nsre.System.prototype.setupEngine=function(a){var b=sre.Engine.getInstance(),c=function(d){b[d]=a[d]||b[d]};c(\"mode\");sre.System.prototype.configBlocks_(a);sre.Engine.BINARY_FEATURES.forEach(function(d){\"undefined\"!==typeof a[d]&&(b[d]=!!a[d])});sre.Engine.STRING_FEATURES.forEach(c);a.json&&(sre.SystemExternal.jsonPath=sre.BaseUtil.makePath(a.json));a.xpath&&(sre.SystemExternal.WGXpath=a.xpath);b.setupBrowsers();b.ruleSets=a.rules?a.rules:sre.SpeechRuleStores.availableSets();sre.SpeechRuleEngine.getInstance().parameterize(b.ruleSets);\nb.setDynamicCstr();sre.L10n.setLocale()};sre.System.prototype.configBlocks_=function(a){if(!sre.Engine.getInstance().config&&sre.Engine.getInstance().mode===sre.Engine.Mode.HTTP){sre.Engine.getInstance().config=!0;for(var b=document.documentElement.querySelectorAll('script[type=\"text/x-sre-config\"]'),c=0,d=b.length;c<d;c++)try{var e=b[c].innerHTML,f=JSON.parse(e),g;for(g in f)a[g]=f[g]}catch(h){sre.Debugger.getInstance().output(\"Illegal configuration \",e)}}};\nsre.System.setAsync=function(){sre.Engine.isReady()||setTimeout(sre.System.setAsync,500);sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.ASYNC})};sre.System.prototype.engineSetup=function(){var a=[\"mode\"].concat(sre.Engine.STRING_FEATURES,sre.Engine.BINARY_FEATURES),b=sre.Engine.getInstance(),c={};a.forEach(function(d){c[d]=b[d]});c.json=sre.SystemExternal.jsonPath;c.xpath=sre.SystemExternal.WGXpath;c.rules=b.ruleSets.slice();return c};sre.System.prototype.engineReady=function(){return sre.Engine.isReady()};\nsre.System.prototype.toSpeech=function(a){return sre.System.getInstance().processString(\"speech\",a)};sre.System.prototype.toSemantic=function(a){return sre.System.getInstance().processString(\"semantic\",a)};sre.System.prototype.toJson=function(a){return sre.System.getInstance().processString(\"json\",a)};sre.System.prototype.toDescription=function(a){return sre.System.getInstance().processString(\"description\",a)};\nsre.System.prototype.toEnriched=function(a){return sre.System.getInstance().processString(\"enriched\",a)};sre.System.prototype.processString=function(a,b){return sre.ProcessorFactory.process(a,b)};sre.System.prototype.fileToSpeech=function(a,b){sre.System.getInstance().processFile(\"speech\",a,b)};sre.System.prototype.fileToSemantic=function(a,b){sre.System.getInstance().processFile(\"semantic\",a,b)};sre.System.prototype.fileToJson=function(a,b){sre.System.getInstance().processFile(\"json\",a,b)};\nsre.System.prototype.fileToDescription=function(a,b){sre.System.getInstance().processFile(\"description\",a,b)};sre.System.prototype.fileToEnriched=function(a,b){sre.System.getInstance().processFile(\"enriched\",a,b)};sre.System.prototype.processFile=function(a,b,c){sre.Engine.isReady()?sre.Engine.getInstance().mode===sre.Engine.Mode.SYNC?this.processFileSync_(a,b,c):this.processFileAsync_(a,b,c):setTimeout(goog.bind(function(){this.processFile(a,b,c)},this),100)};\nsre.System.prototype.inputFileSync_=function(a){try{var b=sre.SystemExternal.fs.readFileSync(a,{encoding:\"utf8\"})}catch(c){throw new sre.Engine.Error(\"Can not open file: \"+a);}return b};sre.System.prototype.processFileSync_=function(a,b,c){b=sre.System.getInstance().inputFileSync_(b);a=sre.ProcessorFactory.output(a,b);if(c)try{sre.SystemExternal.fs.writeFileSync(c,a)}catch(d){throw new sre.Engine.Error(\"Can not write to file: \"+c);}else console.info(a)};\nsre.System.prototype.inputFileAsync_=function(a,b){sre.SystemExternal.fs.readFile(a,{encoding:\"utf8\"},goog.bind(function(c,d){if(c)throw new sre.Engine.Error(\"Can not open file: \"+a);b(d)},this))};sre.System.prototype.processFileAsync_=function(a,b,c){sre.System.getInstance().inputFileAsync_(b,goog.bind(function(d){d=sre.ProcessorFactory.output(a,d);c?sre.SystemExternal.fs.writeFile(c,d,function(e){if(e)throw new sre.Engine.Error(\"Can not write to file: \"+c);}):console.info(d)},this))};\nsre.System.prototype.walk=function(a){return sre.ProcessorFactory.output(\"walker\",a)};sre.System.prototype.move=function(a){return sre.ProcessorFactory.keypress(\"move\",a)};sre.Browser={};sre.System.getInstance().setupEngine({mode:sre.Engine.Mode.HTTP,domain:\"mathspeak\",style:\"default\"});var SRE=sre.System.getInstance();\n\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/js/mathjax/tex-svg-full.js",
    "content": "!function(t){var e={};function Q(r){if(e[r])return e[r].exports;var T=e[r]={i:r,l:!1,exports:{}};return t[r].call(T.exports,T,T.exports,Q),T.l=!0,T.exports}Q.m=t,Q.c=e,Q.d=function(t,e,r){Q.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},Q.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},Q.t=function(t,e){if(1&e&&(t=Q(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(Q.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var T in t)Q.d(r,T,function(e){return t[e]}.bind(null,T));return r},Q.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return Q.d(e,\"a\",e),e},Q.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},Q.p=\"\",Q(Q.s=313)}([function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.XMLNode=e.TextNode=e.AbstractMmlEmptyNode=e.AbstractMmlBaseNode=e.AbstractMmlLayoutNode=e.AbstractMmlTokenNode=e.AbstractMmlNode=e.indentAttributes=e.TEXCLASSNAMES=e.TEXCLASS=void 0;var a=Q(24),s=Q(58);e.TEXCLASS={ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},e.TEXCLASSNAMES=[\"ORD\",\"OP\",\"BIN\",\"REL\",\"OPEN\",\"CLOSE\",\"PUNCT\",\"INNER\",\"VCENTER\"];var l=[\"\",\"thinmathspace\",\"mediummathspace\",\"thickmathspace\"],c=[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]];e.indentAttributes=[\"indentalign\",\"indentalignfirst\",\"indentshift\",\"indentshiftfirst\"];var u=function(t){function Q(e,Q,r){void 0===Q&&(Q={}),void 0===r&&(r=[]);var T=t.call(this,e)||this;return T.texClass=null,T.prevClass=null,T.prevLevel=null,T.arity<0&&(T.childNodes=[e.create(\"inferredMrow\")],T.childNodes[0].parent=T),T.setChildren(r),T.attributes=new a.Attributes(e.getNodeClass(T.kind).defaults,e.getNodeClass(\"math\").defaults),T.attributes.setList(Q),T}return T(Q,t),Object.defineProperty(Q.prototype,\"isToken\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isSpacelike\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"linebreakContainer\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"hasNewLine\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"arity\",{get:function(){return 1/0},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isInferred\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"Parent\",{get:function(){for(var t=this.parent;t&&t.notParent;)t=t.Parent;return t},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"notParent\",{get:function(){return!1},enumerable:!1,configurable:!0}),Q.prototype.setChildren=function(e){return this.arity<0?this.childNodes[0].setChildren(e):t.prototype.setChildren.call(this,e)},Q.prototype.appendChild=function(e){return this.arity<0?(this.childNodes[0].appendChild(e),e):t.prototype.appendChild.call(this,e)},Q.prototype.replaceChild=function(e,Q){return this.arity<0?(this.childNodes[0].replaceChild(e,Q),e):t.prototype.replaceChild.call(this,e,Q)},Q.prototype.core=function(){return this},Q.prototype.coreMO=function(){return this},Q.prototype.coreIndex=function(){return 0},Q.prototype.childPosition=function(){for(var t,e,Q=this,r=Q.parent;r&&r.notParent;)Q=r,r=r.parent;if(r){var T=0;try{for(var n=o(r.childNodes),i=n.next();!i.done;i=n.next()){if(i.value===Q)return T;T++}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}return null},Q.prototype.setTeXclass=function(t){return this.getPrevClass(t),null!=this.texClass?this:t},Q.prototype.updateTeXclass=function(t){t&&(this.prevClass=t.prevClass,this.prevLevel=t.prevLevel,t.prevClass=t.prevLevel=null,this.texClass=t.texClass)},Q.prototype.getPrevClass=function(t){t&&(this.prevClass=t.texClass,this.prevLevel=t.attributes.get(\"scriptlevel\"))},Q.prototype.texSpacing=function(){var t=null!=this.prevClass?this.prevClass:e.TEXCLASS.NONE,Q=this.texClass||e.TEXCLASS.ORD;if(t===e.TEXCLASS.NONE||Q===e.TEXCLASS.NONE)return\"\";t===e.TEXCLASS.VCENTER&&(t=e.TEXCLASS.ORD),Q===e.TEXCLASS.VCENTER&&(Q=e.TEXCLASS.ORD);var r=c[t][Q];return(this.prevLevel>0||this.attributes.get(\"scriptlevel\")>0)&&r>=0?\"\":l[Math.abs(r)]},Q.prototype.hasSpacingAttributes=function(){return this.isEmbellished&&this.coreMO().hasSpacingAttributes()},Q.prototype.setInheritedAttributes=function(t,e,r,T){var n,a;void 0===t&&(t={}),void 0===e&&(e=!1),void 0===r&&(r=0),void 0===T&&(T=!1);var s=this.attributes.getAllDefaults();try{for(var l=o(Object.keys(t)),c=l.next();!c.done;c=l.next()){var u=c.value;if(s.hasOwnProperty(u)||Q.alwaysInherit.hasOwnProperty(u)){var p=i(t[u],2),h=p[0],f=p[1];((Q.noInherit[h]||{})[this.kind]||{})[u]||this.attributes.setInherited(u,f)}}}catch(t){n={error:t}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(n)throw n.error}}void 0===this.attributes.getExplicit(\"displaystyle\")&&this.attributes.setInherited(\"displaystyle\",e),void 0===this.attributes.getExplicit(\"scriptlevel\")&&this.attributes.setInherited(\"scriptlevel\",r),T&&this.setProperty(\"texprimestyle\",T);var d=this.arity;if(d>=0&&d!==1/0&&(1===d&&0===this.childNodes.length||1!==d&&this.childNodes.length!==d))if(d<this.childNodes.length)this.childNodes=this.childNodes.slice(0,d);else for(;this.childNodes.length<d;)this.appendChild(this.factory.create(\"mrow\"));this.setChildInheritedAttributes(t,e,r,T)},Q.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n;try{for(var i=o(this.childNodes),a=i.next();!a.done;a=i.next()){a.value.setInheritedAttributes(t,e,Q,r)}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},Q.prototype.addInheritedAttributes=function(t,e){var Q,r,T=n({},t);try{for(var i=o(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;\"displaystyle\"!==s&&\"scriptlevel\"!==s&&\"style\"!==s&&(T[s]=[this.kind,e[s]])}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}return T},Q.prototype.inheritAttributesFrom=function(t){var e=t.attributes,Q=e.get(\"displaystyle\"),r=e.get(\"scriptlevel\"),T=e.isSet(\"mathsize\")?{mathsize:[\"math\",e.get(\"mathsize\")]}:{},n=t.getProperty(\"texprimestyle\")||!1;this.setInheritedAttributes(T,Q,r,n)},Q.prototype.verifyTree=function(t){if(void 0===t&&(t=null),null!==t){this.verifyAttributes(t);var e=this.arity;t.checkArity&&e>=0&&e!==1/0&&(1===e&&0===this.childNodes.length||1!==e&&this.childNodes.length!==e)&&this.mError('Wrong number of children for \"'+this.kind+'\" node',t,!0),this.verifyChildren(t)}},Q.prototype.verifyAttributes=function(t){var e,Q;if(t.checkAttributes){var r=this.attributes,T=[];try{for(var n=o(r.getExplicitNames()),i=n.next();!i.done;i=n.next()){var a=i.value;\"data-\"===a.substr(0,5)||void 0!==r.getDefault(a)||a.match(/^(?:class|style|id|(?:xlink:)?href)$/)||T.push(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}T.length&&this.mError(\"Unknown attributes for \"+this.kind+\" node: \"+T.join(\", \"),t)}},Q.prototype.verifyChildren=function(t){var e,Q;try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.verifyTree(t)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},Q.prototype.mError=function(t,e,Q){if(void 0===Q&&(Q=!1),this.parent&&this.parent.isKind(\"merror\"))return null;var r=this.factory.create(\"merror\");if(e.fullErrors||Q){var T=this.factory.create(\"mtext\"),n=this.factory.create(\"text\");n.setText(e.fullErrors?t:this.kind),T.appendChild(n),r.appendChild(T),this.parent.replaceChild(r,this)}else this.parent.replaceChild(r,this),r.appendChild(this);return r},Q.defaults={mathbackground:a.INHERIT,mathcolor:a.INHERIT,mathsize:a.INHERIT,dir:a.INHERIT},Q.noInherit={mstyle:{mpadded:{width:!0,height:!0,depth:!0,lspace:!0,voffset:!0},mtable:{width:!0,height:!0,depth:!0,align:!0}},maligngroup:{mrow:{groupalign:!0},mtable:{groupalign:!0}}},Q.alwaysInherit={scriptminsize:!0,scriptsizemultiplier:!0},Q.verifyDefaults={checkArity:!0,checkAttributes:!1,fullErrors:!1,fixMmultiscripts:!0,fixMtables:!0},Q}(s.AbstractNode);e.AbstractMmlNode=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isToken\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getText=function(){var t,e,Q=\"\";try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){var n=T.value;n instanceof L&&(Q+=n.getText())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n;try{for(var i=o(this.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value;s instanceof u&&s.setInheritedAttributes(t,e,Q,r)}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},e.prototype.walkTree=function(t,e){var Q,r;t(this,e);try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;i instanceof u&&i.walkTree(t,e)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return e},e.defaults=n(n({},u.defaults),{mathvariant:\"normal\",mathsize:a.INHERIT}),e}(u);e.AbstractMmlTokenNode=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return this.childNodes[0].isSpacelike},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.childNodes[0]},e.prototype.coreMO=function(){return this.childNodes[0].coreMO()},e.prototype.setTeXclass=function(t){return t=this.childNodes[0].setTeXclass(t),this.updateTeXclass(this.childNodes[0]),t},e.defaults=u.defaults,e}(u);e.AbstractMmlLayoutNode=h;var f=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),Q.prototype.core=function(){return this.childNodes[0]},Q.prototype.coreMO=function(){return this.childNodes[0].coreMO()},Q.prototype.setTeXclass=function(t){var Q,r;this.getPrevClass(t),this.texClass=e.TEXCLASS.ORD;var T=this.childNodes[0];T?this.isEmbellished||T.isKind(\"mi\")?(t=T.setTeXclass(t),this.updateTeXclass(this.core())):(T.setTeXclass(null),t=this):t=this;try{for(var n=o(this.childNodes.slice(1)),i=n.next();!i.done;i=n.next()){var a=i.value;a&&a.setTeXclass(null)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(Q)throw Q.error}}return t},Q.defaults=u.defaults,Q}(u);e.AbstractMmlBaseNode=f;var d=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Object.defineProperty(Q.prototype,\"isToken\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isEmbellished\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isSpacelike\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"linebreakContainer\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"hasNewLine\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"isInferred\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"notParent\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"Parent\",{get:function(){return this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"texClass\",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"prevClass\",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(Q.prototype,\"prevLevel\",{get:function(){return 0},enumerable:!1,configurable:!0}),Q.prototype.hasSpacingAttributes=function(){return!1},Object.defineProperty(Q.prototype,\"attributes\",{get:function(){return null},enumerable:!1,configurable:!0}),Q.prototype.core=function(){return this},Q.prototype.coreMO=function(){return this},Q.prototype.coreIndex=function(){return 0},Q.prototype.childPosition=function(){return 0},Q.prototype.setTeXclass=function(t){return t},Q.prototype.texSpacing=function(){return\"\"},Q.prototype.setInheritedAttributes=function(t,e,Q,r){},Q.prototype.inheritAttributesFrom=function(t){},Q.prototype.verifyTree=function(t){},Q.prototype.mError=function(t,e,Q){void 0===Q&&(Q=!1)},Q}(s.AbstractEmptyNode);e.AbstractMmlEmptyNode=d;var L=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.text=\"\",e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"text\"},enumerable:!1,configurable:!0}),e.prototype.getText=function(){return this.text},e.prototype.setText=function(t){return this.text=t,this},e.prototype.toString=function(){return this.text},e}(d);e.TextNode=L;var H=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.xml=null,e.adaptor=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"XML\"},enumerable:!1,configurable:!0}),e.prototype.getXML=function(){return this.xml},e.prototype.setXML=function(t,e){return void 0===e&&(e=null),this.xml=t,this.adaptor=e,this},e.prototype.getSerializedXML=function(){return this.adaptor.outerHTML(this.xml)},e.prototype.toString=function(){return\"XML data\"},e}(d);e.XMLNode=H},function(t,e,Q){\"use strict\";(function(t){var Q=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};function r(t){return\"object\"==typeof t&&null!==t}function T(t,e){var n,o;try{for(var i=Q(Object.keys(e)),a=i.next();!a.done;a=i.next()){var s=a.value;\"__esModule\"!==s&&(!r(t[s])||!r(e[s])||e[s]instanceof Promise?null!==e[s]&&void 0!==e[s]&&(t[s]=e[s]):T(t[s],e[s]))}}catch(t){n={error:t}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(n)throw n.error}}return t}Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathJax=e.combineWithMathJax=e.combineDefaults=e.combineConfig=e.isObject=void 0,e.isObject=r,e.combineConfig=T,e.combineDefaults=function t(e,T,n){var o,i;e[T]||(e[T]={}),e=e[T];try{for(var a=Q(Object.keys(n)),s=a.next();!s.done;s=a.next()){var l=s.value;r(e[l])&&r(n[l])?t(e,l,n[l]):null==e[l]&&null!=n[l]&&(e[l]=n[l])}}catch(t){o={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}return e},e.combineWithMathJax=function(t){return T(e.MathJax,t)},void 0===t.MathJax&&(t.MathJax={}),t.MathJax.version||(t.MathJax={version:\"3.1.2\",_:{},config:t.MathJax}),e.MathJax=t.MathJax}).call(this,Q(271))},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var n,o=Q(7),i=Q(33),a=Q(30),s=Q(21),l=Q(20),c=function(){function t(t,e,Q,r,T,n,o,i,a,s,l,c){void 0===e&&(e={}),void 0===Q&&(Q={}),void 0===r&&(r={}),void 0===T&&(T={}),void 0===n&&(n={}),void 0===o&&(o={}),void 0===i&&(i=[]),void 0===a&&(a=[]),void 0===s&&(s=null),void 0===l&&(l=null),this.name=t,this.handler=e,this.fallback=Q,this.items=r,this.tags=T,this.options=n,this.nodes=o,this.preprocessors=i,this.postprocessors=a,this.initMethod=s,this.configMethod=l,this.priority=c,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},e)}return t.makeProcessor=function(t,e){return Array.isArray(t)?t:[t,e]},t._create=function(e,Q){var r=this;void 0===Q&&(Q={});var T=Q.priority||s.PrioritizedList.DEFAULTPRIORITY,n=Q.init?this.makeProcessor(Q.init,T):null,o=Q.config?this.makeProcessor(Q.config,T):null,i=(Q.preprocessors||[]).map((function(t){return r.makeProcessor(t,T)})),a=(Q.postprocessors||[]).map((function(t){return r.makeProcessor(t,T)}));return new t(e,Q.handler||{},Q.fallback||{},Q.items||{},Q.tags||{},Q.options||{},Q.nodes||{},i,a,n,o,T)},t.create=function(e,Q){void 0===Q&&(Q={});var r=t._create(e,Q);return n.set(e,r),r},t.local=function(e){return void 0===e&&(e={}),t._create(\"\",e)},Object.defineProperty(t.prototype,\"init\",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"config\",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),t}();e.Configuration=c,function(t){var e=new Map;t.set=function(t,Q){e.set(t,Q)},t.get=function(t){return e.get(t)},t.keys=function(){return e.keys()}}(n=e.ConfigurationHandler||(e.ConfigurationHandler={}));var u=function(){function t(t){var e,Q,T,n;this.initMethod=new a.FunctionList,this.configMethod=new a.FunctionList,this.configurations=new s.PrioritizedList,this.handlers=new i.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={};try{for(var o=r(t.slice().reverse()),l=o.next();!l.done;l=o.next()){var c=l.value;this.addPackage(c)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}try{for(var u=r(this.configurations),p=u.next();!p.done;p=u.next()){var h=p.value,f=h.item,d=h.priority;this.append(f,d)}}catch(t){T={error:t}}finally{try{p&&!p.done&&(n=u.return)&&n.call(u)}finally{if(T)throw T.error}}}return t.prototype.init=function(){this.initMethod.execute(this)},t.prototype.config=function(t){var e,Q;this.configMethod.execute(this,t);try{for(var T=r(this.configurations),n=T.next();!n.done;n=T.next()){var o=n.value;this.addFilters(t,o.item)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.addPackage=function(t){var e=\"string\"==typeof t?t:t[0],Q=n.get(e);Q&&this.configurations.add(Q,\"string\"==typeof t?Q.priority:t[1])},t.prototype.add=function(t,e,Q){var T,n;void 0===Q&&(Q={}),this.append(t),this.configurations.add(t,t.priority),this.init();var i=e.parseOptions;i.nodeFactory.setCreators(t.nodes);try{for(var a=r(Object.keys(t.items)),s=a.next();!s.done;s=a.next()){var c=s.value;i.itemFactory.setNodeClass(c,t.items[c])}}catch(t){T={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(T)throw T.error}}l.TagsFactory.addTags(t.tags),o.defaultOptions(i.options,t.options),o.userOptions(i.options,Q),this.addFilters(e,t),t.config&&t.config(this,e)},t.prototype.append=function(t,e){e=e||t.priority,t.initMethod&&this.initMethod.add(t.initMethod[0],t.initMethod[1]),t.configMethod&&this.configMethod.add(t.configMethod[0],t.configMethod[1]),this.handlers.add(t.handler,t.fallback,e),Object.assign(this.items,t.items),Object.assign(this.tags,t.tags),o.defaultOptions(this.options,t.options),Object.assign(this.nodes,t.nodes)},t.prototype.addFilters=function(t,e){var Q,n,o,i;try{for(var a=r(e.preprocessors),s=a.next();!s.done;s=a.next()){var l=T(s.value,2),c=l[0],u=l[1];t.preFilters.add(c,u)}}catch(t){Q={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(Q)throw Q.error}}try{for(var p=r(e.postprocessors),h=p.next();!h.done;h=p.next()){var f=T(h.value,2),d=f[0];u=f[1];t.postFilters.add(d,u)}}catch(t){o={error:t}}finally{try{h&&!h.done&&(i=p.return)&&i.call(p)}finally{if(o)throw o.error}}},t}();e.ParserConfiguration=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EnvironmentMap=e.CommandMap=e.MacroMap=e.DelimiterMap=e.CharacterMap=e.AbstractParseMap=e.RegExpMap=e.AbstractSymbolMap=void 0;var a=Q(26),s=Q(33),l=function(){function t(t,e){this._name=t,this._parser=e,s.MapHandler.register(this)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.parserFor=function(t){return this.contains(t)?this.parser:null},t.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.parserFor(r),o=this.lookup(r);return T&&o?T(Q,o)||!0:null},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this._parser},set:function(t){this._parser=t},enumerable:!1,configurable:!0}),t}();e.AbstractSymbolMap=l;var c=function(t){function e(e,Q,r){var T=t.call(this,e,Q)||this;return T._regExp=r,T}return T(e,t),e.prototype.contains=function(t){return this._regExp.test(t)},e.prototype.lookup=function(t){return this.contains(t)?t:null},e}(l);e.RegExpMap=c;var u=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.map=new Map,e}return T(e,t),e.prototype.lookup=function(t){return this.map.get(t)},e.prototype.contains=function(t){return this.map.has(t)},e.prototype.add=function(t,e){this.map.set(t,e)},e.prototype.remove=function(t){this.map.delete(t)},e}(l);e.AbstractParseMap=u;var p=function(t){function e(e,Q,r){var T,i,s=t.call(this,e,Q)||this;try{for(var l=o(Object.keys(r)),c=l.next();!c.done;c=l.next()){var u=c.value,p=r[u],h=n(\"string\"==typeof p?[p,null]:p,2),f=h[0],d=h[1],L=new a.Symbol(u,f,d);s.add(u,L)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(T)throw T.error}}return s}return T(e,t),e}(u);e.CharacterMap=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.parse=function(e){var Q=n(e,2),r=Q[0],T=Q[1];return t.prototype.parse.call(this,[r,\"\\\\\"+T])},e}(p);e.DelimiterMap=h;var f=function(t){function e(e,Q,r){var T,i,s=t.call(this,e,null)||this;try{for(var l=o(Object.keys(Q)),c=l.next();!c.done;c=l.next()){var u=c.value,p=Q[u],h=n(\"string\"==typeof p?[p]:p),f=h[0],d=h.slice(1),L=new a.Macro(u,r[f],d);s.add(u,L)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(T)throw T.error}}return s}return T(e,t),e.prototype.parserFor=function(t){var e=this.lookup(t);return e?e.func:null},e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);return T&&o?o.apply(void 0,i([Q,T.symbol],T.args))||!0:null},e}(u);e.MacroMap=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);if(!T||!o)return null;if(!o)return null;var a=Q.currentCS;Q.currentCS=\"\\\\\"+r;var s=o.apply(void 0,i([Q,\"\\\\\"+T.symbol],T.args));return Q.currentCS=a,s||!0},e}(f);e.CommandMap=d;var L=function(t){function e(e,Q,r,T){var n=t.call(this,e,r,T)||this;return n.parser=Q,n}return T(e,t),e.prototype.parse=function(t){var e=n(t,2),Q=e[0],r=e[1],T=this.lookup(r),o=this.parserFor(r);return T&&o?(this.parser(Q,T.symbol,o,T.args),!0):null},e}(f);e.EnvironmentMap=L},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrapper=void 0;var i=Q(168),a=Q(50),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.element=null,e}return T(e,t),e.prototype.toSVG=function(t){this.addChildren(this.standardSVGnode(t))},e.prototype.addChildren=function(t){var e,Q,r=0;try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;i.toSVG(t),i.element&&i.place(r+i.bbox.L*i.bbox.rscale,0),r+=(i.bbox.L+i.bbox.w+i.bbox.R)*i.bbox.rscale}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},e.prototype.standardSVGnode=function(t){var e=this.createSVGnode(t);return this.handleStyles(),this.handleScale(),this.handleColor(),this.handleAttributes(),e},e.prototype.createSVGnode=function(t){var e=this.node.attributes.get(\"href\");if(e){t=this.adaptor.append(t,this.svg(\"a\",{href:e}));var Q=this.getBBox(),r=Q.h,T=Q.d,n=Q.w;this.adaptor.append(t,this.svg(\"rect\",{\"data-hitbox\":!0,fill:\"none\",stroke:\"none\",\"pointer-events\":\"all\",width:this.fixed(n),height:this.fixed(r+T),y:this.fixed(-T)}))}return this.element=this.adaptor.append(t,this.svg(\"g\",{\"data-mml-node\":this.node.kind})),this.element},e.prototype.handleStyles=function(){if(this.styles){var t=this.styles.cssText;t&&this.adaptor.setAttribute(this.element,\"style\",t)}},e.prototype.handleScale=function(){if(1!==this.bbox.rscale){var t=\"scale(\"+this.fixed(this.bbox.rscale/1e3,3)+\")\";this.adaptor.setAttribute(this.element,\"transform\",t)}},e.prototype.handleColor=function(){var t=this.adaptor,e=this.node.attributes,Q=e.getExplicit(\"mathcolor\"),r=e.getExplicit(\"color\"),T=e.getExplicit(\"mathbackground\"),n=e.getExplicit(\"background\");if((Q||r)&&(t.setAttribute(this.element,\"fill\",Q||r),t.setAttribute(this.element,\"stroke\",Q||r)),T||n){var o=this.getBBox(),i=o.h,a=o.d,s=o.w,l=this.svg(\"rect\",{fill:T||n,x:0,y:this.fixed(-a),width:this.fixed(s),height:this.fixed(i+a),\"data-bgcolor\":!0}),c=t.firstChild(this.element);c?t.insert(l,c):t.append(this.element,l)}},e.prototype.handleAttributes=function(){var t,Q,r,T,o=this.node.attributes,i=o.getAllDefaults(),a=e.skipAttributes;try{for(var s=n(o.getExplicitNames()),l=s.next();!l.done;l=s.next()){var c=l.value;!1!==a[c]&&(c in i||a[c]||this.adaptor.hasAttribute(this.element,c))||this.adaptor.setAttribute(this.element,c,o.getExplicit(c))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(t)throw t.error}}if(o.get(\"class\")){var u=o.get(\"class\").trim().split(/ +/);try{for(var p=n(u),h=p.next();!h.done;h=p.next()){var f=h.value;this.adaptor.addClass(this.element,f)}}catch(t){r={error:t}}finally{try{h&&!h.done&&(T=p.return)&&T.call(p)}finally{if(r)throw r.error}}}},e.prototype.place=function(t,e,Q){if(void 0===Q&&(Q=null),t||e){Q||(Q=this.element);var r=this.adaptor.getAttribute(Q,\"transform\")||\"\";r=\"translate(\"+this.fixed(t)+\", \"+this.fixed(e)+\")\"+(r?\" \"+r:\"\"),this.adaptor.setAttribute(Q,\"transform\",r)}},e.prototype.placeChar=function(t,e,Q,r,T){var i,a;void 0===T&&(T=null),null===T&&(T=this.variant);var s=t.toString(16).toUpperCase(),l=o(this.getVariantChar(T,t),4),c=l[2],u=l[3];if(\"p\"in u){var p=u.p?\"M\"+u.p+\"Z\":\"\";this.place(e,Q,this.adaptor.append(r,this.charNode(T,s,p)))}else if(\"c\"in u){var h=this.adaptor.append(r,this.svg(\"g\",{\"data-c\":s}));this.place(e,Q,h),e=0;try{for(var f=n(this.unicodeChars(u.c,T)),d=f.next();!d.done;d=f.next()){var L=d.value;e+=this.placeChar(L,e,Q,h,T)}}catch(t){i={error:t}}finally{try{d&&!d.done&&(a=f.return)&&a.call(f)}finally{if(i)throw i.error}}}else if(u.unknown){var H=String.fromCodePoint(t),m=this.adaptor.append(r,this.jax.unknownText(H,T));return this.place(e,Q,m),this.jax.measureTextNodeWithCache(m,H,T).w}return c},e.prototype.charNode=function(t,e,Q){return\"none\"!==this.jax.options.fontCache?this.useNode(t,e,Q):this.pathNode(e,Q)},e.prototype.pathNode=function(t,e){return this.svg(\"path\",{\"data-c\":t,d:e})},e.prototype.useNode=function(t,e,Q){var r=this.svg(\"use\"),T=\"#\"+this.jax.fontCache.cachePath(t,e,Q);return this.adaptor.setAttribute(r,\"href\",T,a.XLINKNS),r},e.prototype.drawBBox=function(){var t=this.getBBox(),e=t.w,Q=t.h,r=t.d,T=this.svg(\"g\",{style:{opacity:.25}},[this.svg(\"rect\",{fill:\"red\",height:this.fixed(Q),width:this.fixed(e)}),this.svg(\"rect\",{fill:\"green\",height:this.fixed(r),width:this.fixed(e),y:this.fixed(-r)})]),n=this.element||this.parent.element;this.adaptor.append(n,T)},e.prototype.html=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.jax.html(t,e,Q)},e.prototype.svg=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.jax.svg(t,e,Q)},e.prototype.text=function(t){return this.jax.text(t)},e.prototype.fixed=function(t,e){return void 0===e&&(e=1),this.jax.fixed(1e3*t,e)},e.kind=\"unknown\",e}(i.CommonWrapper);e.SVGWrapper=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=function(){function t(e,Q){for(var r=[],T=2;T<arguments.length;T++)r[T-2]=arguments[T];this.id=e,this.message=t.processString(Q,r)}return t.processString=function(e,Q){for(var r=e.split(t.pattern),T=1,n=r.length;T<n;T+=2){var o=r[T].charAt(0);if(o>=\"0\"&&o<=\"9\")r[T]=Q[parseInt(r[T],10)-1],\"number\"==typeof r[T]&&(r[T]=r[T].toString());else if(\"{\"===o){if((o=r[T].substr(1))>=\"0\"&&o<=\"9\")r[T]=Q[parseInt(r[T].substr(1,r[T].length-2),10)-1],\"number\"==typeof r[T]&&(r[T]=r[T].toString());else r[T].match(/^\\{([a-z]+):%(\\d+)\\|(.*)\\}$/)&&(r[T]=\"%\"+r[T])}null==r[T]&&(r[T]=\"???\")}return r.join(\"\")},t.pattern=/%(\\d+|\\{\\d+\\}|\\{[a-z]+:\\%\\d+(?:\\|(?:%\\{\\d+\\}|%.|[^\\}])*)+\\}|.)/g,t}();e.default=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__createBinding||(Object.create?function(t,e,Q,r){void 0===r&&(r=Q),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[Q]}})}:function(t,e,Q,r){void 0===r&&(r=Q),t[r]=e[Q]}),o=this&&this.__exportStar||function(t,e){for(var Q in t)\"default\"===Q||e.hasOwnProperty(Q)||n(e,t,Q)},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AddPaths=e.SVGFontData=void 0;var a=Q(28);o(Q(28),e);var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.charOptions=function(e,Q){return t.charOptions.call(this,e,Q)},e}(a.FontData);e.SVGFontData=s,e.AddPaths=function(t,e,Q){var r,T,n,o;try{for(var a=i(Object.keys(e)),l=a.next();!l.done;l=a.next()){var c=l.value,u=parseInt(c);s.charOptions(t,u).p=e[u]}}catch(t){r={error:t}}finally{try{l&&!l.done&&(T=a.return)&&T.call(a)}finally{if(r)throw r.error}}try{for(var p=i(Object.keys(Q)),h=p.next();!h.done;h=p.next()){c=h.value,u=parseInt(c);s.charOptions(t,u).c=Q[u]}}catch(t){n={error:t}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(n)throw n.error}}return t}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.separateOptions=e.selectOptionsFromKeys=e.selectOptions=e.userOptions=e.defaultOptions=e.insert=e.copy=e.keys=e.makeArray=e.expandable=e.Expandable=e.REMOVE=e.APPEND=void 0;var o={}.constructor;function i(t){return\"object\"==typeof t&&null!==t&&(t.constructor===o||t.constructor===a)}e.APPEND=\"[+]\",e.REMOVE=\"[-]\";var a=function(){};function s(t){return Object.assign(Object.create(a.prototype),t)}function l(t){return t?Object.keys(t).concat(Object.getOwnPropertySymbols(t)):[]}function c(t){var e,Q,T={};try{for(var n=r(l(t)),o=n.next();!o.done;o=n.next()){var p=o.value,h=Object.getOwnPropertyDescriptor(t,p),f=h.value;Array.isArray(f)?h.value=u([],f,!1):i(f)&&(h.value=c(f)),h.enumerable&&(T[p]=h)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}return Object.defineProperties(t.constructor===a?s({}):{},T)}function u(t,Q,T){var o,s;void 0===T&&(T=!0);var p=function(r){if(T&&void 0===t[r]&&t.constructor!==a)throw\"symbol\"==typeof r&&(r=r.toString()),new Error('Invalid option \"'+r+'\" (no default value).');var o=Q[r],s=t[r];if(!i(o)||null===s||\"object\"!=typeof s&&\"function\"!=typeof s)Array.isArray(o)?(t[r]=[],u(t[r],o,!1)):i(o)?t[r]=c(o):t[r]=o;else{var p=l(o);Array.isArray(s)&&(1===p.length&&(p[0]===e.APPEND||p[0]===e.REMOVE)&&Array.isArray(o[p[0]])||2===p.length&&p.sort().join(\",\")===e.APPEND+\",\"+e.REMOVE&&Array.isArray(o[e.APPEND])&&Array.isArray(o[e.REMOVE]))?(o[e.REMOVE]&&(s=t[r]=s.filter((function(t){return o[e.REMOVE].indexOf(t)<0}))),o[e.APPEND]&&(t[r]=n(s,o[e.APPEND]))):u(s,o,T)}};try{for(var h=r(l(Q)),f=h.next();!f.done;f=h.next()){p(f.value)}}catch(t){o={error:t}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(o)throw o.error}}return t}function p(t){for(var e,Q,T=[],n=1;n<arguments.length;n++)T[n-1]=arguments[n];var o={};try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;t.hasOwnProperty(s)&&(o[s]=t[s])}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o}e.Expandable=a,e.expandable=s,e.makeArray=function(t){return Array.isArray(t)?t:[t]},e.keys=l,e.copy=c,e.insert=u,e.defaultOptions=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return e.forEach((function(e){return u(t,e,!1)})),t},e.userOptions=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return e.forEach((function(e){return u(t,e,!0)})),t},e.selectOptions=p,e.selectOptionsFromKeys=function(t,e){return p.apply(void 0,n([t],Object.keys(e)))},e.separateOptions=function(t){for(var e,Q,T,n,o=[],i=1;i<arguments.length;i++)o[i-1]=arguments[i];var a=[];try{for(var s=r(o),l=s.next();!l.done;l=s.next()){var c=l.value,u={},p={};try{for(var h=(T=void 0,r(Object.keys(t||{}))),f=h.next();!f.done;f=h.next()){var d=f.value;(void 0===c[d]?p:u)[d]=t[d]}}catch(t){T={error:t}}finally{try{f&&!f.done&&(n=h.return)&&n.call(h)}finally{if(T)throw T.error}}a.push(u),t=p}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return a.unshift(t),a}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o,i=Q(0),a=Q(31);!function(t){var e=new Map([[\"autoOP\",!0],[\"fnOP\",!0],[\"movesupsub\",!0],[\"subsupOK\",!0],[\"texprimestyle\",!0],[\"useHeight\",!0],[\"variantForm\",!0],[\"withDelims\",!0],[\"open\",!0],[\"close\",!0]]);function Q(t,Q){var T,n;try{for(var o=r(Object.keys(Q)),i=o.next();!i.done;i=o.next()){var a=i.value,s=Q[a];\"texClass\"===a?(t.texClass=s,t.setProperty(a,s)):\"movablelimits\"===a?(t.setProperty(\"movablelimits\",s),(t.isKind(\"mo\")||t.isKind(\"mstyle\"))&&t.attributes.set(\"movablelimits\",s)):\"inferred\"===a||(e.has(a)?t.setProperty(a,s):t.attributes.set(a,s))}}catch(t){T={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(T)throw T.error}}}function T(t,e,Q){t.childNodes[e]=Q,Q&&(Q.parent=t)}function o(t,e){return t.isKind(e)}t.createEntity=function(t){return String.fromCodePoint(parseInt(t,16))},t.getChildren=function(t){return t.childNodes},t.getText=function(t){return t.getText()},t.appendChildren=function(t,e){var Q,T;try{for(var n=r(e),o=n.next();!o.done;o=n.next()){var i=o.value;t.appendChild(i)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}},t.setAttribute=function(t,e,Q){t.attributes.set(e,Q)},t.setProperty=function(t,e,Q){t.setProperty(e,Q)},t.setProperties=Q,t.getProperty=function(t,e){return t.getProperty(e)},t.getAttribute=function(t,e){return t.attributes.get(e)},t.removeProperties=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];t.removeProperty.apply(t,n(e))},t.getChildAt=function(t,e){return t.childNodes[e]},t.setChild=T,t.copyChildren=function(t,e){for(var Q=t.childNodes,r=0;r<Q.length;r++)T(e,r,Q[r])},t.copyAttributes=function(t,e){e.attributes=t.attributes,Q(e,t.getAllProperties())},t.isType=o,t.isEmbellished=function(t){return t.isEmbellished},t.getTexClass=function(t){return t.texClass},t.getCoreMO=function(t){return t.coreMO()},t.isNode=function(t){return t instanceof i.AbstractMmlNode||t instanceof i.AbstractMmlEmptyNode},t.isInferred=function(t){return t.isInferred},t.getForm=function(t){var e,Q;if(!o(t,\"mo\"))return null;var T=t,n=T.getForms();try{for(var i=r(n),s=i.next();!s.done;s=i.next()){var l=s.value,c=a.MmlMo.OPTABLE[l][T.getText()];if(c)return c}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return null}}(o||(o={})),e.default=o},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=Q(0),i=Q(8),a=Q(12),s=Q(5),l=Q(19);Q(272),function(t){var e={em:function(t){return t},ex:function(t){return.43*t},pt:function(t){return t/10},pc:function(t){return 1.2*t},px:function(t){return 7.2*t/72},in:function(t){return 7.2*t},cm:function(t){return 7.2*t/2.54},mm:function(t){return 7.2*t/25.4},mu:function(t){return t/18}},Q=\"([-+]?([.,]\\\\d+|\\\\d+([.,]\\\\d*)?))\",n=\"(pt|em|ex|mu|px|mm|cm|in|pc)\",c=RegExp(\"^\\\\s*\"+Q+\"\\\\s*\"+n+\"\\\\s*$\"),u=RegExp(\"^\\\\s*\"+Q+\"\\\\s*\"+n+\" ?\");function p(t,Q){void 0===Q&&(Q=!1);var T=t.match(Q?u:c);return T?function(t){var Q=r(t,3),T=Q[0],n=Q[1],o=Q[2];if(\"mu\"!==n)return[T,n,o];return[h(e[n](parseFloat(T||\"1\"))).slice(0,-2),\"em\",o]}([T[1].replace(/,/,\".\"),T[4],T[0].length]):[null,null,0]}function h(t){return Math.abs(t)<6e-4?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"}function f(t,e,Q){\"{\"!==e&&\"}\"!==e||(e=\"\\\\\"+e);var r=\"{\\\\bigg\"+Q+\" \"+e+\"}\",T=\"{\\\\big\"+Q+\" \"+e+\"}\";return new a.default(\"\\\\mathchoice\"+r+T+T+T,{},t).mml()}function d(t,e,Q){e=e.replace(/^\\s+/,l.entities.nbsp).replace(/\\s+$/,l.entities.nbsp);var r=t.create(\"text\",e);return t.create(\"node\",\"mtext\",[],Q,r)}function L(t,e,Q){if(Q.match(/^[a-z]/i)&&e.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)&&(e+=\" \"),e.length+Q.length>t.configuration.options.maxBuffer)throw new s.default(\"MaxBufferSize\",\"MathJax internal buffer size exceeded; is there a recursive macro call?\");return e+Q}function H(t,e){for(;e>0;)t=t.trim().slice(1,-1),e--;return t.trim()}function m(t,e){for(var Q=t.length,r=0,T=\"\",n=0,o=0,i=!0,a=!1;n<Q;){var l=t[n++];switch(l){case\" \":break;case\"{\":i?o++:(a=!1,o>r&&(o=r)),r++;break;case\"}\":r&&r--,(i||a)&&(o--,a=!0),i=!1;break;default:if(!r&&-1!==e.indexOf(l))return[a?\"true\":H(T,o),l,t.slice(n)];i=!1,a=!1}T+=l}if(r)throw new s.default(\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\");return[a?\"true\":H(T,o),\"\",t.slice(n)]}t.matchDimen=p,t.dimen2em=function(t){var Q=r(p(t),2),T=Q[0],n=Q[1],o=parseFloat(T||\"1\"),i=e[n];return i?i(o):0},t.Em=h,t.fenced=function(t,e,Q,r,T){void 0===T&&(T=\"\");var n,s=t.nodeFactory,l=s.create(\"node\",\"mrow\",[],{open:e,close:r,texClass:o.TEXCLASS.INNER});if(T)n=new a.default(\"\\\\\"+T+\"l\"+e,t.parser.stack.env,t).mml();else{var c=s.create(\"text\",e);n=s.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.OPEN},c)}if(i.default.appendChildren(l,[n]),i.default.isType(Q,\"mrow\")&&i.default.isInferred(Q)?i.default.appendChildren(l,i.default.getChildren(Q)):i.default.appendChildren(l,[Q]),T)n=new a.default(\"\\\\\"+T+\"r\"+r,t.parser.stack.env,t).mml();else{var u=s.create(\"text\",r);n=s.create(\"node\",\"mo\",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:o.TEXCLASS.CLOSE},u)}return i.default.appendChildren(l,[n]),l},t.fixedFence=function(t,e,Q,r){var T=t.nodeFactory.create(\"node\",\"mrow\",[],{open:e,close:r,texClass:o.TEXCLASS.ORD});return e&&i.default.appendChildren(T,[f(t,e,\"l\")]),i.default.isType(Q,\"mrow\")?i.default.appendChildren(T,i.default.getChildren(Q)):i.default.appendChildren(T,[Q]),r&&i.default.appendChildren(T,[f(t,r,\"r\")]),T},t.mathPalette=f,t.fixInitialMO=function(t,e){for(var Q=0,r=e.length;Q<r;Q++){var T=e[Q];if(T&&!i.default.isType(T,\"mspace\")&&(!i.default.isType(T,\"TeXAtom\")||i.default.getChildren(T)[0]&&i.default.getChildren(i.default.getChildren(T)[0]).length)){if(i.default.isEmbellished(T)||i.default.isType(T,\"TeXAtom\")&&i.default.getTexClass(T)===o.TEXCLASS.REL){var n=t.nodeFactory.create(\"node\",\"mi\");e.unshift(n)}break}}},t.internalMath=function(t,e,Q,r){if(t.configuration.options.internalMath)return t.configuration.options.internalMath(t,e,Q,r);var T,n,o=r||t.stack.env.font,i=o?{mathvariant:o}:{},l=[],c=0,u=0,p=\"\",h=0;if(e.match(/\\\\?[${}\\\\]|\\\\\\(|\\\\(eq)?ref\\s*\\{/)){for(;c<e.length;)if(\"$\"===(T=e.charAt(c++)))\"$\"===p&&0===h?(n=t.create(\"node\",\"TeXAtom\",[new a.default(e.slice(u,c-1),{},t.configuration).mml()]),l.push(n),p=\"\",u=c):\"\"===p&&(u<c-1&&l.push(d(t,e.slice(u,c-1),i)),p=\"$\",u=c);else if(\"{\"===T&&\"\"!==p)h++;else if(\"}\"===T)if(\"}\"===p&&0===h){var f=new a.default(e.slice(u,c),{},t.configuration).mml();n=t.create(\"node\",\"TeXAtom\",[f],i),l.push(n),p=\"\",u=c}else\"\"!==p&&h&&h--;else if(\"\\\\\"===T)if(\"\"===p&&e.substr(c).match(/^(eq)?ref\\s*\\{/)){var L=RegExp[\"$&\"].length;u<c-1&&l.push(d(t,e.slice(u,c-1),i)),p=\"}\",u=c-1,c+=L}else\"(\"===(T=e.charAt(c++))&&\"\"===p?(u<c-2&&l.push(d(t,e.slice(u,c-2),i)),p=\")\",u=c):\")\"===T&&\")\"===p&&0===h?(n=t.create(\"node\",\"TeXAtom\",[new a.default(e.slice(u,c-2),{},t.configuration).mml()]),l.push(n),p=\"\",u=c):T.match(/[${}\\\\]/)&&\"\"===p&&(c--,e=e.substr(0,c-1)+e.substr(c));if(\"\"!==p)throw new s.default(\"MathNotTerminated\",\"Math not terminated in text box\")}return u<e.length&&l.push(d(t,e.slice(u),i)),null!=Q?l=[t.create(\"node\",\"mstyle\",l,{displaystyle:!1,scriptlevel:Q})]:l.length>1&&(l=[t.create(\"node\",\"mrow\",l)]),l},t.internalText=d,t.trimSpaces=function(t){if(\"string\"!=typeof t)return t;var e=t.trim();return e.match(/\\\\$/)&&t.match(/ $/)&&(e+=\" \"),e},t.setArrayAlign=function(e,Q){return\"t\"===(Q=t.trimSpaces(Q||\"\"))?e.arraydef.align=\"baseline 1\":\"b\"===Q?e.arraydef.align=\"baseline -1\":\"c\"===Q?e.arraydef.align=\"center\":Q&&(e.arraydef.align=Q),e},t.substituteArgs=function(t,e,Q){for(var r=\"\",T=\"\",n=0;n<Q.length;){var o=Q.charAt(n++);if(\"\\\\\"===o)r+=o+Q.charAt(n++);else if(\"#\"===o)if(\"#\"===(o=Q.charAt(n++)))r+=o;else{if(!o.match(/[1-9]/)||parseInt(o,10)>e.length)throw new s.default(\"IllegalMacroParam\",\"Illegal macro parameter reference\");T=L(t,L(t,T,r),e[parseInt(o,10)-1]),r=\"\"}else r+=o}return L(t,T,r)},t.addArgs=L,t.checkEqnEnv=function(t){if(t.stack.global.eqnenv)throw new s.default(\"ErroneousNestingEq\",\"Erroneous nesting of equation structures\");t.stack.global.eqnenv=!0},t.MmlFilterAttribute=function(t,e,Q){return Q},t.getFontDef=function(t){var e=t.stack.env.font;return e?{mathvariant:e}:{}},t.keyvalOptions=function(t,e,Q){var n,o;void 0===e&&(e=null),void 0===Q&&(Q=!1);var i=function(t){var e,Q,T,n,o,i={},a=t;for(;a;)n=(e=r(m(a,[\"=\",\",\"]),3))[0],T=e[1],a=e[2],\"=\"===T?(o=(Q=r(m(a,[\",\"]),3))[0],T=Q[1],a=Q[2],o=\"false\"===o||\"true\"===o?JSON.parse(o):o,i[n]=o):n&&(i[n]=!0);return i}(t);if(e)try{for(var a=T(Object.keys(i)),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.hasOwnProperty(c)){if(Q)throw new s.default(\"InvalidOption\",\"Invalid optional argument: %1\",c);delete i[c]}}}catch(t){n={error:t}}finally{try{l&&!l.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return i}}(n||(n={})),e.default=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlAttrs=e.HtmlClasses=void 0;function r(t){return\"CtxtMenu_\"+t}function T(t){return r(t)}function n(t){return r(t)}e.HtmlClasses={ATTACHED:T(\"Attached\"),CONTEXTMENU:T(\"ContextMenu\"),MENU:T(\"Menu\"),MENUARROW:T(\"MenuArrow\"),MENUACTIVE:T(\"MenuActive\"),MENUCHECK:T(\"MenuCheck\"),MENUCLOSE:T(\"MenuClose\"),MENUCOMBOBOX:T(\"MenuComboBox\"),MENUDISABLED:T(\"MenuDisabled\"),MENUFRAME:T(\"MenuFrame\"),MENUITEM:T(\"MenuItem\"),MENULABEL:T(\"MenuLabel\"),MENURADIOCHECK:T(\"MenuRadioCheck\"),MENUINPUTBOX:T(\"MenuInputBox\"),MENURULE:T(\"MenuRule\"),MENUSLIDER:T(\"MenuSlider\"),MOUSEPOST:T(\"MousePost\"),RTL:T(\"RTL\"),INFO:T(\"Info\"),INFOCLOSE:T(\"InfoClose\"),INFOCONTENT:T(\"InfoContent\"),INFOSIGNATURE:T(\"InfoSignature\"),INFOTITLE:T(\"InfoTitle\"),SLIDERVALUE:T(\"SliderValue\"),SLIDERBAR:T(\"SliderBar\"),SELECTION:T(\"Selection\"),SELECTIONBOX:T(\"SelectionBox\"),SELECTIONMENU:T(\"SelectionMenu\"),SELECTIONDIVIDER:T(\"SelectionDivider\"),SELECTIONITEM:T(\"SelectionItem\")},e.HtmlAttrs={COUNTER:n(\"Counter\"),KEYDOWNFUNC:n(\"keydownFunc\"),CONTEXTMENUFUNC:n(\"contextmenuFunc\"),OLDTAB:n(\"Oldtabindex\"),TOUCHFUNC:n(\"TouchFunc\")}},function(t,e,Q){\"use strict\";(function(t){var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONFIG=e.MathJax=e.Loader=void 0;var T,n=Q(1),o=Q(29),i=Q(29);Object.defineProperty(e,\"Package\",{enumerable:!0,get:function(){return i.Package}}),Object.defineProperty(e,\"PackageError\",{enumerable:!0,get:function(){return i.PackageError}}),function(Q){Q.ready=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];0===Q.length&&(Q=Array.from(o.Package.packages.keys()));var n=[];try{for(var i=r(Q),a=i.next();!a.done;a=i.next()){var s=a.value,l=o.Package.packages.get(s)||new o.Package(s,!0);n.push(l.promise)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return Promise.all(n)},Q.load=function(){for(var t,Q,T=[],n=0;n<arguments.length;n++)T[n]=arguments[n];if(0===T.length)return Promise.resolve();var i=[];try{for(var a=r(T),s=a.next();!s.done;s=a.next()){var l=s.value,c=o.Package.packages.get(l);c||(c=new o.Package(l)).provides(e.CONFIG.provides[l]),c.checkNoLoad(),i.push(c.promise)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(t)throw t.error}}return o.Package.loadAll(),Promise.all(i)},Q.preLoad=function(){for(var t,Q,T=[],n=0;n<arguments.length;n++)T[n]=arguments[n];try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value,l=o.Package.packages.get(s);l||(l=new o.Package(s,!0)).provides(e.CONFIG.provides[s]),l.loaded()}}catch(e){t={error:e}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(t)throw t.error}}},Q.defaultReady=function(){void 0!==e.MathJax.startup&&e.MathJax.config.startup.ready()},Q.getRoot=function(){var e=t+\"/../../es5\";if(\"undefined\"!=typeof document){var Q=document.currentScript||document.getElementById(\"MathJax-script\");Q&&(e=Q.src.replace(/\\/[^\\/]*$/,\"\"))}return e}}(T=e.Loader||(e.Loader={})),e.MathJax=n.MathJax,void 0===e.MathJax.loader&&(n.combineDefaults(e.MathJax.config,\"loader\",{paths:{mathjax:T.getRoot()},source:{},dependencies:{},provides:{},load:[],ready:T.defaultReady.bind(T),failed:function(t){return console.log(\"MathJax(\"+(t.package||\"?\")+\"): \"+t.message)},require:null}),n.combineWithMathJax({loader:T})),e.CONFIG=e.MathJax.config.loader}).call(this,\"/\")},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(9),i=Q(85),a=Q(5),s=Q(0),l=function(){function t(t,e,Q){var T,n;this._string=t,this.configuration=Q,this.macroCount=0,this.i=0,this.currentCS=\"\";var o,a=e.hasOwnProperty(\"isInner\"),s=e.isInner;if(delete e.isInner,e){o={};try{for(var l=r(Object.keys(e)),c=l.next();!c.done;c=l.next()){var u=c.value;o[u]=e[u]}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}}this.configuration.pushParser(this),this.stack=new i.default(this.itemFactory,o,!a||s),this.Parse(),this.Push(this.itemFactory.create(\"stop\"))}return Object.defineProperty(t.prototype,\"options\",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"itemFactory\",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"tags\",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"string\",{get:function(){return this._string},set:function(t){this._string=t},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,e){return this.configuration.handlers.get(t).parse(e)},t.prototype.lookup=function(t,e){return this.configuration.handlers.get(t).lookup(e)},t.prototype.contains=function(t,e){return this.configuration.handlers.get(t).contains(e)},t.prototype.toString=function(){var t,e,Q=\"\";try{for(var T=r(Array.from(this.configuration.handlers.keys())),n=T.next();!n.done;n=T.next()){var o=n.value;Q+=o+\": \"+this.configuration.handlers.get(o)+\"\\n\"}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q},t.prototype.Parse=function(){for(var t;this.i<this.string.length;)t=this.getCodePoint(),this.i+=t.length,this.parse(\"character\",[this,t])},t.prototype.Push=function(t){t instanceof s.AbstractMmlNode&&t.isInferred?this.PushAll(t.childNodes):this.stack.Push(t)},t.prototype.PushAll=function(t){var e,Q;try{for(var T=r(t),n=T.next();!n.done;n=T.next()){var o=n.value;this.stack.Push(o)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.mml=function(){if(!this.stack.Top().isKind(\"mml\"))return null;var t=this.stack.Top().First;return this.configuration.popParser(),t},t.prototype.convertDelimiter=function(t){var e=this.lookup(\"delimiter\",t);return e?e.char:null},t.prototype.getCodePoint=function(){var t=this.string.codePointAt(this.i);return void 0===t?\"\":String.fromCodePoint(t)},t.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\\s/)},t.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},t.prototype.GetCS=function(){var t=this.string.slice(this.i).match(/^(([a-z]+) ?|[\\uD800-\\uDBFF].|.)/i);return t?(this.i+=t[0].length,t[2]||t[1]):(this.i++,\" \")},t.prototype.GetArgument=function(t,e){switch(this.GetNext()){case\"\":if(!e)throw new a.default(\"MissingArgFor\",\"Missing argument for %1\",this.currentCS);return null;case\"}\":if(!e)throw new a.default(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\");return null;case\"\\\\\":return this.i++,\"\\\\\"+this.GetCS();case\"{\":for(var Q=++this.i,r=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"\\\\\":this.i++;break;case\"{\":r++;break;case\"}\":if(0==--r)return this.string.slice(Q,this.i-1)}throw new a.default(\"MissingCloseBrace\",\"Missing close brace\")}var T=this.getCodePoint();return this.i+=T.length,T},t.prototype.GetBrackets=function(t,e){if(\"[\"!==this.GetNext())return e;for(var Q=++this.i,r=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case\"{\":r++;break;case\"\\\\\":this.i++;break;case\"}\":if(r--<=0)throw new a.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",\"']'\");break;case\"]\":if(0===r)return this.string.slice(Q,this.i-1)}throw new a.default(\"MissingCloseBracket\",\"Could not find closing ']' for argument to %1\",this.currentCS)},t.prototype.GetDelimiter=function(t,e){var Q=this.GetNext();if(this.i+=Q.length,this.i<=this.string.length&&(\"\\\\\"===Q?Q+=this.GetCS():\"{\"===Q&&e&&(this.i--,Q=this.GetArgument(t)),this.contains(\"delimiter\",Q)))return this.convertDelimiter(Q);throw new a.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetDimen=function(t){if(\"{\"===this.GetNext()){var e=this.GetArgument(t),Q=T(o.default.matchDimen(e),2),r=Q[0],n=Q[1];if(r)return r+n}else{e=this.string.slice(this.i);var i=T(o.default.matchDimen(e,!0),3),s=(r=i[0],n=i[1],i[2]);if(r)return this.i+=s,r+n}throw new a.default(\"MissingDimOrUnits\",\"Missing dimension or its units for %1\",this.currentCS)},t.prototype.GetUpTo=function(t,e){for(;this.nextIsSpace();)this.i++;for(var Q=this.i,r=0;this.i<this.string.length;){var T=this.i,n=this.GetNext();switch(this.i+=n.length,n){case\"\\\\\":n+=this.GetCS();break;case\"{\":r++;break;case\"}\":if(0===r)throw new a.default(\"ExtraCloseLooking\",\"Extra close brace while looking for %1\",e);r--}if(0===r&&n===e)return this.string.slice(Q,T)}throw new a.default(\"TokenNotFoundForCommand\",\"Could not find %1 for %2\",e,this.currentCS)},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.ParseUpTo=function(e,Q){return new t(this.GetUpTo(e,Q),this.stack.env,this.configuration).mml()},t.prototype.GetDelimiterArg=function(t){var e=o.default.trimSpaces(this.GetArgument(t));if(\"\"===e)return null;if(this.contains(\"delimiter\",e))return e;throw new a.default(\"MissingOrUnrecognizedDelim\",\"Missing or unrecognized delimiter for %1\",this.currentCS)},t.prototype.GetStar=function(){var t=\"*\"===this.GetNext();return t&&this.i++,t},t.prototype.create=function(t){for(var e,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return(e=this.configuration.nodeFactory).create.apply(e,n([t],Q))},t}();e.default=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TexConstant=void 0,function(t){t.Variant={NORMAL:\"normal\",BOLD:\"bold\",ITALIC:\"italic\",BOLDITALIC:\"bold-italic\",DOUBLESTRUCK:\"double-struck\",FRAKTUR:\"fraktur\",BOLDFRAKTUR:\"bold-fraktur\",SCRIPT:\"script\",BOLDSCRIPT:\"bold-script\",SANSSERIF:\"sans-serif\",BOLDSANSSERIF:\"bold-sans-serif\",SANSSERIFITALIC:\"sans-serif-italic\",SANSSERIFBOLDITALIC:\"sans-serif-bold-italic\",MONOSPACE:\"monospace\",INITIAL:\"inital\",TAILED:\"tailed\",LOOPED:\"looped\",STRETCHED:\"stretched\",CALLIGRAPHIC:\"-tex-calligraphic\",OLDSTYLE:\"-tex-oldstyle\"},t.Form={PREFIX:\"prefix\",INFIX:\"infix\",POSTFIX:\"postfix\"},t.LineBreak={AUTO:\"auto\",NEWLINE:\"newline\",NOBREAK:\"nobreak\",GOODBREAK:\"goodbreak\",BADBREAK:\"badbreak\"},t.LineBreakStyle={BEFORE:\"before\",AFTER:\"after\",DUPLICATE:\"duplicate\",INFIXLINBREAKSTYLE:\"infixlinebreakstyle\"},t.IndentAlign={LEFT:\"left\",CENTER:\"center\",RIGHT:\"right\",AUTO:\"auto\",ID:\"id\",INDENTALIGN:\"indentalign\"},t.IndentShift={INDENTSHIFT:\"indentshift\"},t.LineThickness={THIN:\"thin\",MEDIUM:\"medium\",THICK:\"thick\"},t.Notation={LONGDIV:\"longdiv\",ACTUARIAL:\"actuarial\",PHASORANGLE:\"phasorangle\",RADICAL:\"radical\",BOX:\"box\",ROUNDEDBOX:\"roundedbox\",CIRCLE:\"circle\",LEFT:\"left\",RIGHT:\"right\",TOP:\"top\",BOTTOM:\"bottom\",UPDIAGONALSTRIKE:\"updiagonalstrike\",DOWNDIAGONALSTRIKE:\"downdiagonalstrike\",VERTICALSTRIKE:\"verticalstrike\",HORIZONTALSTRIKE:\"horizontalstrike\",NORTHEASTARROW:\"northeastarrow\",MADRUWB:\"madruwb\",UPDIAGONALARROW:\"updiagonalarrow\"},t.Align={TOP:\"top\",BOTTOM:\"bottom\",CENTER:\"center\",BASELINE:\"baseline\",AXIS:\"axis\",LEFT:\"left\",RIGHT:\"right\"},t.Lines={NONE:\"none\",SOLID:\"solid\",DASHED:\"dashed\"},t.Side={LEFT:\"left\",RIGHT:\"right\",LEFTOVERLAP:\"leftoverlap\",RIGHTOVERLAP:\"rightoverlap\"},t.Width={AUTO:\"auto\",FIT:\"fit\"},t.Actiontype={TOGGLE:\"toggle\",STATUSLINE:\"statusline\",TOOLTIP:\"tooltip\",INPUT:\"input\"},t.Length={VERYVERYTHINMATHSPACE:\"veryverythinmathspace\",VERYTHINMATHSPACE:\"verythinmathspace\",THINMATHSPACE:\"thinmathspace\",MEDIUMMATHSPACE:\"mediummathspace\",THICKMATHSPACE:\"thickmathspace\",VERYTHICKMATHSPACE:\"verythickmathspace\",VERYVERYTHICKMATHSPACE:\"veryverythickmathspace\",NEGATIVEVERYVERYTHINMATHSPACE:\"negativeveryverythinmathspace\",NEGATIVEVERYTHINMATHSPACE:\"negativeverythinmathspace\",NEGATIVETHINMATHSPACE:\"negativethinmathspace\",NEGATIVEMEDIUMMATHSPACE:\"negativemediummathspace\",NEGATIVETHICKMATHSPACE:\"negativethickmathspace\",NEGATIVEVERYTHICKMATHSPACE:\"negativeverythickmathspace\",NEGATIVEVERYVERYTHICKMATHSPACE:\"negativeveryverythickmathspace\"},t.Overflow={LINBREAK:\"linebreak\",SCROLL:\"scroll\",ELIDE:\"elide\",TRUNCATE:\"truncate\",SCALE:\"scale\"},t.Unit={EM:\"em\",EX:\"ex\",PX:\"px\",IN:\"in\",CM:\"cm\",MM:\"mm\",PT:\"pt\",PC:\"pc\"}}(e.TexConstant||(e.TexConstant={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.newState=e.STATE=e.AbstractMathItem=e.protoItem=void 0,e.protoItem=function(t,e,Q,r,T,n,o){return void 0===o&&(o=null),{open:t,math:e,close:Q,n:r,start:{n:T},end:{n:n},display:o}};var r=function(){function t(t,Q,r,T,n){void 0===r&&(r=!0),void 0===T&&(T={i:0,n:0,delim:\"\"}),void 0===n&&(n={i:0,n:0,delim:\"\"}),this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={},this._state=e.STATE.UNPROCESSED,this.math=t,this.inputJax=Q,this.display=r,this.start=T,this.end=n,this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={}}return Object.defineProperty(t.prototype,\"isEscaped\",{get:function(){return null===this.display},enumerable:!1,configurable:!0}),t.prototype.render=function(t){t.renderActions.renderMath(this,t)},t.prototype.rerender=function(t,Q){void 0===Q&&(Q=e.STATE.RERENDER),this.state()>=Q&&this.state(Q-1),t.renderActions.renderMath(this,t,Q)},t.prototype.convert=function(t,Q){void 0===Q&&(Q=e.STATE.LAST),t.renderActions.renderConvert(this,t,Q)},t.prototype.compile=function(t){this.state()<e.STATE.COMPILED&&(this.root=this.inputJax.compile(this,t),this.state(e.STATE.COMPILED))},t.prototype.typeset=function(t){this.state()<e.STATE.TYPESET&&(this.typesetRoot=t.outputJax[this.isEscaped?\"escaped\":\"typeset\"](this,t),this.state(e.STATE.TYPESET))},t.prototype.updateDocument=function(t){},t.prototype.removeFromDocument=function(t){void 0===t&&(t=!1)},t.prototype.setMetrics=function(t,e,Q,r,T){this.metrics={em:t,ex:e,containerWidth:Q,lineWidth:r,scale:T}},t.prototype.state=function(t,Q){return void 0===t&&(t=null),void 0===Q&&(Q=!1),null!=t&&(t<e.STATE.INSERTED&&this._state>=e.STATE.INSERTED&&this.removeFromDocument(Q),t<e.STATE.TYPESET&&this._state>=e.STATE.TYPESET&&(this.outputData={}),t<e.STATE.COMPILED&&this._state>=e.STATE.COMPILED&&(this.inputData={}),this._state=t),this._state},t.prototype.reset=function(t){void 0===t&&(t=!1),this.state(e.STATE.UNPROCESSED,t)},t}();e.AbstractMathItem=r,e.STATE={UNPROCESSED:0,FINDMATH:10,COMPILED:20,CONVERT:100,METRICS:110,RERENDER:125,TYPESET:150,INSERTED:200,LAST:1e4},e.newState=function(t,Q){if(t in e.STATE)throw Error(\"State \"+t+\" already exists\");e.STATE[t]=Q}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.split=e.isPercent=e.unicodeChars=e.quotePattern=e.sortLength=void 0,e.sortLength=function(t,e){return t.length!==e.length?e.length-t.length:t===e?0:t<e?-1:1},e.quotePattern=function(t){return t.replace(/([\\^$(){}+*?\\-|\\[\\]\\:\\\\])/g,\"\\\\$1\")},e.unicodeChars=function(t){return Array.from(t).map((function(t){return t.codePointAt(0)}))},e.isPercent=function(t){return!!t.match(/%\\s*$/)},e.split=function(t){return t.trim().split(/\\s+/)}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var T=Q(27),n=Q(8),o=Q(5),i=Q(12),a=Q(13),s=Q(9),l=Q(0),c=Q(20),u=Q(19);Q(272),Q(282),Q(283);var p={},h={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function f(t,e){var Q=t.stack.env,r=Q.inRoot;Q.inRoot=!0;var T=new i.default(e,Q,t.configuration),n=T.mml(),o=T.stack.global;if(o.leftRoot||o.upRoot){var a={};o.leftRoot&&(a.width=o.leftRoot),o.upRoot&&(a.voffset=o.upRoot,a.height=o.upRoot),n=t.create(\"node\",\"mpadded\",[n],a)}return Q.inRoot=r,n}p.Open=function(t,e){t.Push(t.itemFactory.create(\"open\"))},p.Close=function(t,e){t.Push(t.itemFactory.create(\"close\"))},p.Tilde=function(t,e){t.Push(t.create(\"token\",\"mtext\",{},u.entities.nbsp))},p.Space=function(t,e){},p.Superscript=function(t,e){var Q,T,i;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var a=t.stack.Top();a.isKind(\"prime\")?(i=(Q=r(a.Peek(2),2))[0],T=Q[1],t.stack.Pop()):(i=t.stack.Prev())||(i=t.create(\"token\",\"mi\",{},\"\"));var s=n.default.getProperty(i,\"movesupsub\"),l=n.default.isType(i,\"msubsup\")?i.sup:i.over;if(n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")&&n.default.getChildAt(i,i.sup)||n.default.isType(i,\"munderover\")&&!n.default.isType(i,\"mover\")&&n.default.getChildAt(i,i.over)&&!n.default.getProperty(i,\"subsupOK\"))throw new o.default(\"DoubleExponent\",\"Double exponent: use braces to clarify\");n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")||(s?((!n.default.isType(i,\"munderover\")||n.default.isType(i,\"mover\")||n.default.getChildAt(i,i.over))&&(i=t.create(\"node\",\"munderover\",[i],{movesupsub:!0})),l=i.over):l=(i=t.create(\"node\",\"msubsup\",[i])).sup),t.Push(t.itemFactory.create(\"subsup\",i).setProperties({position:l,primes:T,movesupsub:s}))},p.Subscript=function(t,e){var Q,T,i;t.GetNext().match(/\\d/)&&(t.string=t.string.substr(0,t.i+1)+\" \"+t.string.substr(t.i+1));var a=t.stack.Top();a.isKind(\"prime\")?(i=(Q=r(a.Peek(2),2))[0],T=Q[1],t.stack.Pop()):(i=t.stack.Prev())||(i=t.create(\"token\",\"mi\",{},\"\"));var s=n.default.getProperty(i,\"movesupsub\"),l=n.default.isType(i,\"msubsup\")?i.sub:i.under;if(n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")&&n.default.getChildAt(i,i.sub)||n.default.isType(i,\"munderover\")&&!n.default.isType(i,\"mover\")&&n.default.getChildAt(i,i.under)&&!n.default.getProperty(i,\"subsupOK\"))throw new o.default(\"DoubleSubscripts\",\"Double subscripts: use braces to clarify\");n.default.isType(i,\"msubsup\")&&!n.default.isType(i,\"msup\")||(s?((!n.default.isType(i,\"munderover\")||n.default.isType(i,\"mover\")||n.default.getChildAt(i,i.under))&&(i=t.create(\"node\",\"munderover\",[i],{movesupsub:!0})),l=i.under):l=(i=t.create(\"node\",\"msubsup\",[i])).sub),t.Push(t.itemFactory.create(\"subsup\",i).setProperties({position:l,primes:T,movesupsub:s}))},p.Prime=function(t,e){var Q=t.stack.Prev();if(Q||(Q=t.create(\"node\",\"mi\")),n.default.isType(Q,\"msubsup\")&&!n.default.isType(Q,\"msup\")&&n.default.getChildAt(Q,Q.sup))throw new o.default(\"DoubleExponentPrime\",\"Prime causes double exponent: use braces to clarify\");var r=\"\";t.i--;do{r+=u.entities.prime,t.i++,e=t.GetNext()}while(\"'\"===e||e===u.entities.rquote);r=[\"\",\"\\u2032\",\"\\u2033\",\"\\u2034\",\"\\u2057\"][r.length]||r;var T=t.create(\"token\",\"mo\",{},r);t.Push(t.itemFactory.create(\"prime\",Q,T))},p.Comment=function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++},p.Hash=function(t,e){throw new o.default(\"CantUseHash1\",\"You can't use 'macro parameter character #' in math mode\")},p.SetFont=function(t,e,Q){t.stack.env.font=Q},p.SetStyle=function(t,e,Q,r,T){t.stack.env.style=Q,t.stack.env.level=T,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{displaystyle:r,scriptlevel:T}))},p.SetSize=function(t,e,Q){t.stack.env.size=Q,t.Push(t.itemFactory.create(\"style\").setProperty(\"styles\",{mathsize:Q+\"em\"}))},p.Spacer=function(t,e,Q){var r=t.create(\"node\",\"mspace\",[],{width:Q}),T=t.create(\"node\",\"mstyle\",[r],{scriptlevel:0});t.Push(T)},p.LeftRight=function(t,e){var Q=e.substr(1);t.Push(t.itemFactory.create(Q).setProperty(\"delim\",t.GetDelimiter(e)))},p.Middle=function(t,e){var Q=t.GetDelimiter(e),r=t.create(\"node\",\"TeXAtom\",[],{texClass:l.TEXCLASS.CLOSE});if(t.Push(r),!t.stack.Top().isKind(\"left\"))throw new o.default(\"MisplacedMiddle\",\"%1 must be within \\\\left and \\\\right\",t.currentCS);r=t.create(\"token\",\"mo\",{stretchy:!0},Q),t.Push(r),r=t.create(\"node\",\"TeXAtom\",[],{texClass:l.TEXCLASS.OPEN}),t.Push(r)},p.NamedFn=function(t,e,Q){Q||(Q=e.substr(1));var r=t.create(\"token\",\"mi\",{texClass:l.TEXCLASS.OP},Q);t.Push(t.itemFactory.create(\"fn\",r))},p.NamedOp=function(t,e,Q){Q||(Q=e.substr(1)),Q=Q.replace(/&thinsp;/,\"\\u2006\");var r=t.create(\"token\",\"mo\",{movablelimits:!0,movesupsub:!0,form:a.TexConstant.Form.PREFIX,texClass:l.TEXCLASS.OP},Q);t.Push(r)},p.Limits=function(t,e,Q){var r=t.stack.Prev(!0);if(!r||n.default.getTexClass(n.default.getCoreMO(r))!==l.TEXCLASS.OP&&null==n.default.getProperty(r,\"movesupsub\"))throw new o.default(\"MisplacedLimits\",\"%1 is allowed only on operators\",t.currentCS);var T,i=t.stack.Top();n.default.isType(r,\"munderover\")&&!Q?(T=t.create(\"node\",\"msubsup\"),n.default.copyChildren(r,T),r=i.Last=T):n.default.isType(r,\"msubsup\")&&Q&&(T=t.create(\"node\",\"munderover\"),n.default.copyChildren(r,T),r=i.Last=T),n.default.setProperty(r,\"movesupsub\",!!Q),n.default.setProperties(n.default.getCoreMO(r),{movablelimits:!1}),(n.default.getAttribute(r,\"movablelimits\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1})},p.Over=function(t,e,Q,r){var T=t.itemFactory.create(\"over\").setProperty(\"name\",t.currentCS);Q||r?(T.setProperty(\"open\",Q),T.setProperty(\"close\",r)):e.match(/withdelims$/)&&(T.setProperty(\"open\",t.GetDelimiter(e)),T.setProperty(\"close\",t.GetDelimiter(e))),e.match(/^\\\\above/)?T.setProperty(\"thickness\",t.GetDimen(e)):(e.match(/^\\\\atop/)||Q||r)&&T.setProperty(\"thickness\",0),t.Push(T)},p.Frac=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e),T=t.create(\"node\",\"mfrac\",[Q,r]);t.Push(T)},p.Sqrt=function(t,e){var Q=t.GetBrackets(e),r=t.GetArgument(e);\"\\\\frac\"===r&&(r+=\"{\"+t.GetArgument(r)+\"}{\"+t.GetArgument(r)+\"}\");var T=new i.default(r,t.stack.env,t.configuration).mml();T=Q?t.create(\"node\",\"mroot\",[T,f(t,Q)]):t.create(\"node\",\"msqrt\",[T]),t.Push(T)},p.Root=function(t,e){var Q=t.GetUpTo(e,\"\\\\of\"),r=t.ParseArg(e),T=t.create(\"node\",\"mroot\",[r,f(t,Q)]);t.Push(T)},p.MoveRoot=function(t,e,Q){if(!t.stack.env.inRoot)throw new o.default(\"MisplacedMoveRoot\",\"%1 can appear only within a root\",t.currentCS);if(t.stack.global[Q])throw new o.default(\"MultipleMoveRoot\",\"Multiple use of %1\",t.currentCS);var r=t.GetArgument(e);if(!r.match(/-?[0-9]+/))throw new o.default(\"IntegerArg\",\"The argument to %1 must be an integer\",t.currentCS);\"-\"!==(r=parseInt(r,10)/15+\"em\").substr(0,1)&&(r=\"+\"+r),t.stack.global[Q]=r},p.Accent=function(t,e,Q,r){var T=t.ParseArg(e),o=s.default.getFontDef(t);o.accent=!0;var i=n.default.createEntity(Q),a=t.create(\"token\",\"mo\",o,i);n.default.setAttribute(a,\"stretchy\",!!r);var l=n.default.isEmbellished(T)?n.default.getCoreMO(T):T;n.default.isType(l,\"mo\")&&n.default.setProperties(l,{movablelimits:!1});var c=t.create(\"node\",\"munderover\");n.default.setChild(c,0,T),n.default.setChild(c,1,null),n.default.setChild(c,2,a);var u=t.create(\"node\",\"TeXAtom\",[c]);t.Push(u)},p.UnderOver=function(t,e,Q,r,T){var o,i=t.ParseArg(e),a=n.default.getForm(i);(a&&a[3]&&a[3].movablelimits||n.default.getProperty(i,\"movablelimits\"))&&n.default.setProperties(i,{movablelimits:!1}),n.default.isType(i,\"munderover\")&&n.default.isEmbellished(i)&&(n.default.setProperties(n.default.getCoreMO(i),{lspace:0,rspace:0}),o=t.create(\"node\",\"mo\",[],{rspace:0}),i=t.create(\"node\",\"mrow\",[o,i]));var s=t.create(\"node\",\"munderover\",[i]),c=n.default.createEntity(Q);o=t.create(\"token\",\"mo\",{stretchy:!0,accent:!T},c),n.default.setChild(s,\"o\"===e.charAt(1)?s.over:s.under,o);var u=s;r&&(u=t.create(\"node\",\"TeXAtom\",[s],{texClass:l.TEXCLASS.OP,movesupsub:!0})),n.default.setProperty(u,\"subsupOK\",!0),t.Push(u)},p.Overset=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);(n.default.getAttribute(r,\"movablelimits\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1});var T=t.create(\"node\",\"mover\",[r,Q]);t.Push(T)},p.Underset=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);(n.default.isType(r,\"mo\")||n.default.getProperty(r,\"movablelimits\"))&&n.default.setProperties(r,{movablelimits:!1});var T=t.create(\"node\",\"munder\",[r,Q]);t.Push(T)},p.TeXAtom=function(t,e,Q){var r,T,n,o={texClass:Q};if(Q===l.TEXCLASS.OP){o.movesupsub=o.movablelimits=!0;var s=t.GetArgument(e),c=s.match(/^\\s*\\\\rm\\s+([a-zA-Z0-9 ]+)$/);c?(o.mathvariant=a.TexConstant.Variant.NORMAL,T=t.create(\"token\",\"mi\",o,c[1])):(n=new i.default(s,t.stack.env,t.configuration).mml(),T=t.create(\"node\",\"TeXAtom\",[n],o)),r=t.itemFactory.create(\"fn\",T)}else n=t.ParseArg(e),r=t.create(\"node\",\"TeXAtom\",[n],o);t.Push(r)},p.MmlToken=function(t,e){var Q,r=t.GetArgument(e),T=t.GetBrackets(e,\"\").replace(/^\\s+/,\"\"),i=t.GetArgument(e),a={};try{Q=t.create(\"node\",r)}catch(t){Q=null}if(!Q||!Q.isToken)throw new o.default(\"NotMathMLToken\",\"%1 is not a token element\",r);for(;\"\"!==T;){var l=T.match(/^([a-z]+)\\s*=\\s*('[^']*'|\"[^\"]*\"|[^ ,]*)\\s*,?\\s*/i);if(!l)throw new o.default(\"InvalidMathMLAttr\",\"Invalid MathML attribute: %1\",T);if(!Q.attributes.hasDefault(l[1])&&!h[l[1]])throw new o.default(\"UnknownAttrForElement\",\"%1 is not a recognized attribute for %2\",l[1],r);var c=s.default.MmlFilterAttribute(t,l[1],l[2].replace(/^(['\"])(.*)\\1$/,\"$2\"));c&&(\"true\"===c.toLowerCase()?c=!0:\"false\"===c.toLowerCase()&&(c=!1),a[l[1]]=c),T=T.substr(l[0].length)}var u=t.create(\"text\",i);Q.appendChild(u),n.default.setProperties(Q,a),t.Push(Q)},p.Strut=function(t,e){var Q=t.create(\"node\",\"mrow\"),r=t.create(\"node\",\"mpadded\",[Q],{height:\"8.6pt\",depth:\"3pt\",width:0});t.Push(r)},p.Phantom=function(t,e,Q,r){var T=t.create(\"node\",\"mphantom\",[t.ParseArg(e)]);(Q||r)&&(T=t.create(\"node\",\"mpadded\",[T]),r&&(n.default.setAttribute(T,\"height\",0),n.default.setAttribute(T,\"depth\",0)),Q&&n.default.setAttribute(T,\"width\",0));var o=t.create(\"node\",\"TeXAtom\",[T]);t.Push(o)},p.Smash=function(t,e){var Q=s.default.trimSpaces(t.GetBrackets(e,\"\")),r=t.create(\"node\",\"mpadded\",[t.ParseArg(e)]);switch(Q){case\"b\":n.default.setAttribute(r,\"depth\",0);break;case\"t\":n.default.setAttribute(r,\"height\",0);break;default:n.default.setAttribute(r,\"height\",0),n.default.setAttribute(r,\"depth\",0)}var T=t.create(\"node\",\"TeXAtom\",[r]);t.Push(T)},p.Lap=function(t,e){var Q=t.create(\"node\",\"mpadded\",[t.ParseArg(e)],{width:0});\"\\\\llap\"===e&&n.default.setAttribute(Q,\"lspace\",\"-1width\");var r=t.create(\"node\",\"TeXAtom\",[Q]);t.Push(r)},p.RaiseLower=function(t,e){var Q=t.GetDimen(e),r=t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"vertical\"});\"-\"===Q.charAt(0)&&(Q=Q.slice(1),e=\"raise\"===e.substr(1)?\"\\\\lower\":\"\\\\raise\"),\"\\\\lower\"===e?(r.setProperty(\"dh\",\"-\"+Q),r.setProperty(\"dd\",\"+\"+Q)):(r.setProperty(\"dh\",\"+\"+Q),r.setProperty(\"dd\",\"-\"+Q)),t.Push(r)},p.MoveLeftRight=function(t,e){var Q=t.GetDimen(e),r=\"-\"===Q.charAt(0)?Q.slice(1):\"-\"+Q;if(\"\\\\moveleft\"===e){var T=Q;Q=r,r=T}t.Push(t.itemFactory.create(\"position\").setProperties({name:t.currentCS,move:\"horizontal\",left:t.create(\"node\",\"mspace\",[],{width:Q}),right:t.create(\"node\",\"mspace\",[],{width:r})}))},p.Hskip=function(t,e){var Q=t.create(\"node\",\"mspace\",[],{width:t.GetDimen(e)});t.Push(Q)},p.Rule=function(t,e,Q){var r={width:t.GetDimen(e),height:t.GetDimen(e),depth:t.GetDimen(e)};\"blank\"!==Q&&(r.mathbackground=t.stack.env.color||\"black\");var T=t.create(\"node\",\"mspace\",[],r);t.Push(T)},p.rule=function(t,e){var Q=t.GetBrackets(e),r=t.GetDimen(e),T=t.GetDimen(e),o=t.create(\"node\",\"mspace\",[],{width:r,height:T,mathbackground:t.stack.env.color||\"black\"});Q&&(o=t.create(\"node\",\"mpadded\",[o],{voffset:Q}),Q.match(/^\\-/)?(n.default.setAttribute(o,\"height\",Q),n.default.setAttribute(o,\"depth\",\"+\"+Q.substr(1))):n.default.setAttribute(o,\"height\",\"+\"+Q)),t.Push(o)},p.MakeBig=function(t,e,Q,r){var T=String(r*=1.411764705882353).replace(/(\\.\\d\\d\\d).+/,\"$1\")+\"em\",n=t.GetDelimiter(e,!0),o=t.create(\"token\",\"mo\",{minsize:T,maxsize:T,fence:!0,stretchy:!0,symmetric:!0},n),i=t.create(\"node\",\"TeXAtom\",[o],{texClass:Q});t.Push(i)},p.BuildRel=function(t,e){var Q=t.ParseUpTo(e,\"\\\\over\"),r=t.ParseArg(e),T=t.create(\"node\",\"munderover\");n.default.setChild(T,0,r),n.default.setChild(T,1,null),n.default.setChild(T,2,Q);var o=t.create(\"node\",\"TeXAtom\",[T],{texClass:l.TEXCLASS.REL});t.Push(o)},p.HBox=function(t,e,Q,r){t.PushAll(s.default.internalMath(t,t.GetArgument(e),Q,r))},p.FBox=function(t,e){var Q=s.default.internalMath(t,t.GetArgument(e)),r=t.create(\"node\",\"menclose\",Q,{notation:\"box\"});t.Push(r)},p.Not=function(t,e){t.Push(t.itemFactory.create(\"not\"))},p.Dots=function(t,e){var Q=n.default.createEntity(\"2026\"),r=n.default.createEntity(\"22EF\"),T=t.create(\"token\",\"mo\",{stretchy:!1},Q),o=t.create(\"token\",\"mo\",{stretchy:!1},r);t.Push(t.itemFactory.create(\"dots\").setProperties({ldots:T,cdots:o}))},p.Matrix=function(t,e,Q,r,T,n,i,a,s,l){var c=t.GetNext();if(\"\"===c)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);\"{\"===c?t.i++:(t.string=c+\"}\"+t.string.slice(t.i+1),t.i=0);var u=t.itemFactory.create(\"array\").setProperty(\"requireClose\",!0);u.arraydef={rowspacing:i||\"4pt\",columnspacing:n||\"1em\"},s&&u.setProperty(\"isCases\",!0),l&&(u.setProperty(\"isNumbered\",!0),u.arraydef.side=l),(Q||r)&&(u.setProperty(\"open\",Q),u.setProperty(\"close\",r)),\"D\"===a&&(u.arraydef.displaystyle=!0),null!=T&&(u.arraydef.columnalign=T),t.Push(u)},p.Entry=function(t,e){if(t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e})),t.stack.Top().getProperty(\"isCases\")){for(var Q=t.string,r=0,T=-1,n=t.i,i=Q.length;n<i;){var a=Q.charAt(n);if(\"{\"===a)r++,n++;else if(\"}\"===a)0===r?i=0:(0===--r&&T<0&&(T=n-t.i),n++);else{if(\"&\"===a&&0===r)throw new o.default(\"ExtraAlignTab\",\"Extra alignment tab in \\\\cases text\");\"\\\\\"===a?Q.substr(n).match(/^((\\\\cr)[^a-zA-Z]|\\\\\\\\)/)?i=0:n+=2:n++}}var l=Q.substr(t.i,n-t.i);if(!l.match(/^\\s*\\\\text[^a-zA-Z]/)||T!==l.replace(/\\s+$/,\"\").length-1){var c=s.default.internalMath(t,l,0);t.PushAll(c),t.i=n}}},p.Cr=function(t,e){t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e}))},p.CrLaTeX=function(t,e,Q){var n;if(void 0===Q&&(Q=!1),!Q&&\"[\"===t.string.charAt(t.i)){var i=t.GetBrackets(e,\"\"),l=r(s.default.matchDimen(i),2),c=l[0],u=l[1];if(i&&!c)throw new o.default(\"BracketMustBeDimension\",\"Bracket argument to %1 must be a dimension\",t.currentCS);n=c+u}t.Push(t.itemFactory.create(\"cell\").setProperties({isCR:!0,name:e,linebreak:!0}));var p,h=t.stack.Top();if(h instanceof T.ArrayItem){if(n&&h.arraydef.rowspacing){var f=h.arraydef.rowspacing.split(/ /);if(!h.getProperty(\"rowspacing\")){var d=s.default.dimen2em(f[0]);h.setProperty(\"rowspacing\",d)}for(var L=h.getProperty(\"rowspacing\");f.length<h.table.length;)f.push(s.default.Em(L));f[h.table.length-1]=s.default.Em(Math.max(0,L+s.default.dimen2em(n))),h.arraydef.rowspacing=f.join(\" \")}}else n&&(p=t.create(\"node\",\"mspace\",[],{depth:n}),t.Push(p)),p=t.create(\"node\",\"mspace\",[],{linebreak:a.TexConstant.LineBreak.NEWLINE}),t.Push(p)},p.HLine=function(t,e,Q){null==Q&&(Q=\"solid\");var r=t.stack.Top();if(!(r instanceof T.ArrayItem)||r.Size())throw new o.default(\"Misplaced\",\"Misplaced %1\",t.currentCS);if(r.table.length){for(var n=r.arraydef.rowlines?r.arraydef.rowlines.split(/ /):[];n.length<r.table.length;)n.push(\"none\");n[r.table.length-1]=Q,r.arraydef.rowlines=n.join(\" \")}else r.frame.push(\"top\")},p.HFill=function(t,e){var Q=t.stack.Top();if(!(Q instanceof T.ArrayItem))throw new o.default(\"UnsupportedHFill\",\"Unsupported use of %1\",t.currentCS);Q.hfill.push(Q.Size())},p.BeginEnd=function(t,e){var Q=t.GetArgument(e);if(Q.match(/\\\\/i))throw new o.default(\"InvalidEnv\",\"Invalid environment name '%1'\",Q);var r=t.configuration.handlers.get(\"environment\").lookup(Q);if(r&&\"\\\\end\"===e){if(!r.args[0]){var T=t.itemFactory.create(\"end\").setProperty(\"name\",Q);return void t.Push(T)}t.stack.env.closing=Q}if(++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub2\",\"MathJax maximum substitution count exceeded; is there a recursive latex environment?\");t.parse(\"environment\",[t,Q])},p.Array=function(t,e,Q,r,T,n,o,i,a){T||(T=t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));var s=(\"c\"+T).replace(/[^clr|:]/g,\"\").replace(/[^|:]([|:])+/g,\"$1\");T=(T=T.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var l=t.itemFactory.create(\"array\");return l.arraydef={columnalign:T,columnspacing:n||\"1em\",rowspacing:o||\"4pt\"},s.match(/[|:]/)&&(s.charAt(0).match(/[|:]/)&&(l.frame.push(\"left\"),l.dashed=\":\"===s.charAt(0)),s.charAt(s.length-1).match(/[|:]/)&&l.frame.push(\"right\"),s=s.substr(1,s.length-2),l.arraydef.columnlines=s.split(\"\").join(\" \").replace(/[^|: ]/g,\"none\").replace(/\\|/g,\"solid\").replace(/:/g,\"dashed\")),Q&&l.setProperty(\"open\",t.convertDelimiter(Q)),r&&l.setProperty(\"close\",t.convertDelimiter(r)),\"D\"===i?l.arraydef.displaystyle=!0:i&&(l.arraydef.displaystyle=!1),\"S\"===i&&(l.arraydef.scriptlevel=1),a&&(l.arraydef.useHeight=!1),t.Push(e),l},p.AlignedArray=function(t,e){var Q=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),r=p.Array(t,e);return s.default.setArrayAlign(r,Q)},p.Equation=function(t,e,Q){return t.Push(e),s.default.checkEqnEnv(t),t.itemFactory.create(\"equation\",Q).setProperty(\"name\",e.getName())},p.EqnArray=function(t,e,Q,r,T,n){t.Push(e),r&&s.default.checkEqnEnv(t),T=(T=T.replace(/[^clr]/g,\"\").split(\"\").join(\" \")).replace(/l/g,\"left\").replace(/r/g,\"right\").replace(/c/g,\"center\");var o=t.itemFactory.create(\"eqnarray\",e.getName(),Q,r,t.stack.global);return o.arraydef={displaystyle:!0,columnalign:T,columnspacing:n||\"1em\",rowspacing:\"3pt\",side:t.options.tagSide,minlabelspacing:t.options.tagIndent},o},p.HandleNoTag=function(t,e){t.tags.notag()},p.HandleLabel=function(t,e){var Q=t.GetArgument(e);if(\"\"!==Q&&!t.tags.refUpdate){if(t.tags.label)throw new o.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);if(t.tags.label=Q,(t.tags.allLabels[Q]||t.tags.labels[Q])&&!t.options.ignoreDuplicateLabels)throw new o.default(\"MultipleLabel\",\"Label '%1' multiply defined\",Q);t.tags.labels[Q]=new c.Label}},p.HandleRef=function(t,e,Q){var r=t.GetArgument(e),T=t.tags.allLabels[r]||t.tags.labels[r];T||(t.tags.refUpdate||(t.tags.redo=!0),T=new c.Label);var n=T.tag;Q&&(n=t.tags.formatTag(n));var o=t.create(\"node\",\"mrow\",s.default.internalMath(t,n),{href:t.tags.formatUrl(T.id,t.options.baseURL),class:\"MathJax_ref\"});t.Push(o)},p.Macro=function(t,e,Q,r,T){if(r){var n=[];if(null!=T){var i=t.GetBrackets(e);n.push(null==i?T:i)}for(var a=n.length;a<r;a++)n.push(t.GetArgument(e));Q=s.default.substituteArgs(t,n,Q)}if(t.string=s.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")},p.MathChoice=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e),T=t.ParseArg(e),n=t.ParseArg(e);t.Push(t.create(\"node\",\"MathChoice\",[Q,r,T,n]))},e.default=p},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuUtil=void 0,function(t){t.close=function(t){var e=t.menu;e.baseMenu?e.baseMenu.unpost():e.unpost()},t.getActiveElement=function(t){var e=t.menu;return(e.baseMenu?e.baseMenu:e).store.active},t.error=function(t,e){console.error(\"ContextMenu Error: \"+e)},t.counter=function(){return e++};var e=0}(e.MenuUtil||(e.MenuUtil={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BBox=e.BBoxStyleAdjust=void 0;var r=Q(32);e.BBoxStyleAdjust=[[\"borderTopWidth\",\"h\"],[\"borderRightWidth\",\"w\"],[\"borderBottomWidth\",\"d\"],[\"borderLeftWidth\",\"w\",0],[\"paddingTop\",\"h\"],[\"paddingRight\",\"w\"],[\"paddingBottom\",\"d\"],[\"paddingLeft\",\"w\",0]];var T=function(){function t(t){void 0===t&&(t={w:0,h:-r.BIGDIMEN,d:-r.BIGDIMEN}),this.w=t.w||0,this.h=\"h\"in t?t.h:-r.BIGDIMEN,this.d=\"d\"in t?t.d:-r.BIGDIMEN,this.L=this.R=this.ic=this.sk=0,this.scale=this.rscale=1,this.pwidth=\"\"}return t.zero=function(){return new t({h:0,d:0,w:0})},t.empty=function(){return new t},t.prototype.empty=function(){return this.w=0,this.h=this.d=-r.BIGDIMEN,this},t.prototype.clean=function(){this.w===-r.BIGDIMEN&&(this.w=0),this.h===-r.BIGDIMEN&&(this.h=0),this.d===-r.BIGDIMEN&&(this.d=0)},t.prototype.rescale=function(t){this.w*=t,this.h*=t,this.d*=t},t.prototype.combine=function(t,e,Q){void 0===e&&(e=0),void 0===Q&&(Q=0);var r=t.rscale,T=e+r*(t.w+t.L+t.R),n=Q+r*t.h,o=r*t.d-Q;T>this.w&&(this.w=T),n>this.h&&(this.h=n),o>this.d&&(this.d=o)},t.prototype.append=function(t){var e=t.rscale;this.w+=e*(t.w+t.L+t.R),e*t.h>this.h&&(this.h=e*t.h),e*t.d>this.d&&(this.d=e*t.d)},t.prototype.updateFrom=function(t){this.h=t.h,this.d=t.d,this.w=t.w,t.pwidth&&(this.pwidth=t.pwidth)},t.fullWidth=\"100%\",t}();e.BBox=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.numeric=e.translate=e.remove=e.add=e.entities=e.options=void 0;var r=Q(40),T=Q(126);e.options={loadMissingEntities:!0},e.entities={ApplyFunction:\"\\u2061\",Backslash:\"\\u2216\",Because:\"\\u2235\",Breve:\"\\u02d8\",Cap:\"\\u22d2\",CenterDot:\"\\xb7\",CircleDot:\"\\u2299\",CircleMinus:\"\\u2296\",CirclePlus:\"\\u2295\",CircleTimes:\"\\u2297\",Congruent:\"\\u2261\",ContourIntegral:\"\\u222e\",Coproduct:\"\\u2210\",Cross:\"\\u2a2f\",Cup:\"\\u22d3\",CupCap:\"\\u224d\",Dagger:\"\\u2021\",Del:\"\\u2207\",Delta:\"\\u0394\",Diamond:\"\\u22c4\",DifferentialD:\"\\u2146\",DotEqual:\"\\u2250\",DoubleDot:\"\\xa8\",DoubleRightTee:\"\\u22a8\",DoubleVerticalBar:\"\\u2225\",DownArrow:\"\\u2193\",DownLeftVector:\"\\u21bd\",DownRightVector:\"\\u21c1\",DownTee:\"\\u22a4\",Downarrow:\"\\u21d3\",Element:\"\\u2208\",EqualTilde:\"\\u2242\",Equilibrium:\"\\u21cc\",Exists:\"\\u2203\",ExponentialE:\"\\u2147\",FilledVerySmallSquare:\"\\u25aa\",ForAll:\"\\u2200\",Gamma:\"\\u0393\",Gg:\"\\u22d9\",GreaterEqual:\"\\u2265\",GreaterEqualLess:\"\\u22db\",GreaterFullEqual:\"\\u2267\",GreaterLess:\"\\u2277\",GreaterSlantEqual:\"\\u2a7e\",GreaterTilde:\"\\u2273\",Hacek:\"\\u02c7\",Hat:\"^\",HumpDownHump:\"\\u224e\",HumpEqual:\"\\u224f\",Im:\"\\u2111\",ImaginaryI:\"\\u2148\",Integral:\"\\u222b\",Intersection:\"\\u22c2\",InvisibleComma:\"\\u2063\",InvisibleTimes:\"\\u2062\",Lambda:\"\\u039b\",Larr:\"\\u219e\",LeftAngleBracket:\"\\u27e8\",LeftArrow:\"\\u2190\",LeftArrowRightArrow:\"\\u21c6\",LeftCeiling:\"\\u2308\",LeftDownVector:\"\\u21c3\",LeftFloor:\"\\u230a\",LeftRightArrow:\"\\u2194\",LeftTee:\"\\u22a3\",LeftTriangle:\"\\u22b2\",LeftTriangleEqual:\"\\u22b4\",LeftUpVector:\"\\u21bf\",LeftVector:\"\\u21bc\",Leftarrow:\"\\u21d0\",Leftrightarrow:\"\\u21d4\",LessEqualGreater:\"\\u22da\",LessFullEqual:\"\\u2266\",LessGreater:\"\\u2276\",LessSlantEqual:\"\\u2a7d\",LessTilde:\"\\u2272\",Ll:\"\\u22d8\",Lleftarrow:\"\\u21da\",LongLeftArrow:\"\\u27f5\",LongLeftRightArrow:\"\\u27f7\",LongRightArrow:\"\\u27f6\",Longleftarrow:\"\\u27f8\",Longleftrightarrow:\"\\u27fa\",Longrightarrow:\"\\u27f9\",Lsh:\"\\u21b0\",MinusPlus:\"\\u2213\",NestedGreaterGreater:\"\\u226b\",NestedLessLess:\"\\u226a\",NotDoubleVerticalBar:\"\\u2226\",NotElement:\"\\u2209\",NotEqual:\"\\u2260\",NotExists:\"\\u2204\",NotGreater:\"\\u226f\",NotGreaterEqual:\"\\u2271\",NotLeftTriangle:\"\\u22ea\",NotLeftTriangleEqual:\"\\u22ec\",NotLess:\"\\u226e\",NotLessEqual:\"\\u2270\",NotPrecedes:\"\\u2280\",NotPrecedesSlantEqual:\"\\u22e0\",NotRightTriangle:\"\\u22eb\",NotRightTriangleEqual:\"\\u22ed\",NotSubsetEqual:\"\\u2288\",NotSucceeds:\"\\u2281\",NotSucceedsSlantEqual:\"\\u22e1\",NotSupersetEqual:\"\\u2289\",NotTilde:\"\\u2241\",NotVerticalBar:\"\\u2224\",Omega:\"\\u03a9\",OverBar:\"\\u203e\",OverBrace:\"\\u23de\",PartialD:\"\\u2202\",Phi:\"\\u03a6\",Pi:\"\\u03a0\",PlusMinus:\"\\xb1\",Precedes:\"\\u227a\",PrecedesEqual:\"\\u2aaf\",PrecedesSlantEqual:\"\\u227c\",PrecedesTilde:\"\\u227e\",Product:\"\\u220f\",Proportional:\"\\u221d\",Psi:\"\\u03a8\",Rarr:\"\\u21a0\",Re:\"\\u211c\",ReverseEquilibrium:\"\\u21cb\",RightAngleBracket:\"\\u27e9\",RightArrow:\"\\u2192\",RightArrowLeftArrow:\"\\u21c4\",RightCeiling:\"\\u2309\",RightDownVector:\"\\u21c2\",RightFloor:\"\\u230b\",RightTee:\"\\u22a2\",RightTeeArrow:\"\\u21a6\",RightTriangle:\"\\u22b3\",RightTriangleEqual:\"\\u22b5\",RightUpVector:\"\\u21be\",RightVector:\"\\u21c0\",Rightarrow:\"\\u21d2\",Rrightarrow:\"\\u21db\",Rsh:\"\\u21b1\",Sigma:\"\\u03a3\",SmallCircle:\"\\u2218\",Sqrt:\"\\u221a\",Square:\"\\u25a1\",SquareIntersection:\"\\u2293\",SquareSubset:\"\\u228f\",SquareSubsetEqual:\"\\u2291\",SquareSuperset:\"\\u2290\",SquareSupersetEqual:\"\\u2292\",SquareUnion:\"\\u2294\",Star:\"\\u22c6\",Subset:\"\\u22d0\",SubsetEqual:\"\\u2286\",Succeeds:\"\\u227b\",SucceedsEqual:\"\\u2ab0\",SucceedsSlantEqual:\"\\u227d\",SucceedsTilde:\"\\u227f\",SuchThat:\"\\u220b\",Sum:\"\\u2211\",Superset:\"\\u2283\",SupersetEqual:\"\\u2287\",Supset:\"\\u22d1\",Therefore:\"\\u2234\",Theta:\"\\u0398\",Tilde:\"\\u223c\",TildeEqual:\"\\u2243\",TildeFullEqual:\"\\u2245\",TildeTilde:\"\\u2248\",UnderBar:\"_\",UnderBrace:\"\\u23df\",Union:\"\\u22c3\",UnionPlus:\"\\u228e\",UpArrow:\"\\u2191\",UpDownArrow:\"\\u2195\",UpTee:\"\\u22a5\",Uparrow:\"\\u21d1\",Updownarrow:\"\\u21d5\",Upsilon:\"\\u03a5\",Vdash:\"\\u22a9\",Vee:\"\\u22c1\",VerticalBar:\"\\u2223\",VerticalTilde:\"\\u2240\",Vvdash:\"\\u22aa\",Wedge:\"\\u22c0\",Xi:\"\\u039e\",amp:\"&\",acute:\"\\xb4\",aleph:\"\\u2135\",alpha:\"\\u03b1\",amalg:\"\\u2a3f\",and:\"\\u2227\",ang:\"\\u2220\",angmsd:\"\\u2221\",angsph:\"\\u2222\",ape:\"\\u224a\",backprime:\"\\u2035\",backsim:\"\\u223d\",backsimeq:\"\\u22cd\",beta:\"\\u03b2\",beth:\"\\u2136\",between:\"\\u226c\",bigcirc:\"\\u25ef\",bigodot:\"\\u2a00\",bigoplus:\"\\u2a01\",bigotimes:\"\\u2a02\",bigsqcup:\"\\u2a06\",bigstar:\"\\u2605\",bigtriangledown:\"\\u25bd\",bigtriangleup:\"\\u25b3\",biguplus:\"\\u2a04\",blacklozenge:\"\\u29eb\",blacktriangle:\"\\u25b4\",blacktriangledown:\"\\u25be\",blacktriangleleft:\"\\u25c2\",bowtie:\"\\u22c8\",boxdl:\"\\u2510\",boxdr:\"\\u250c\",boxminus:\"\\u229f\",boxplus:\"\\u229e\",boxtimes:\"\\u22a0\",boxul:\"\\u2518\",boxur:\"\\u2514\",bsol:\"\\\\\",bull:\"\\u2022\",cap:\"\\u2229\",check:\"\\u2713\",chi:\"\\u03c7\",circ:\"\\u02c6\",circeq:\"\\u2257\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",circledR:\"\\xae\",circledS:\"\\u24c8\",circledast:\"\\u229b\",circledcirc:\"\\u229a\",circleddash:\"\\u229d\",clubs:\"\\u2663\",colon:\":\",comp:\"\\u2201\",ctdot:\"\\u22ef\",cuepr:\"\\u22de\",cuesc:\"\\u22df\",cularr:\"\\u21b6\",cup:\"\\u222a\",curarr:\"\\u21b7\",curlyvee:\"\\u22ce\",curlywedge:\"\\u22cf\",dagger:\"\\u2020\",daleth:\"\\u2138\",ddarr:\"\\u21ca\",deg:\"\\xb0\",delta:\"\\u03b4\",digamma:\"\\u03dd\",div:\"\\xf7\",divideontimes:\"\\u22c7\",dot:\"\\u02d9\",doteqdot:\"\\u2251\",dotplus:\"\\u2214\",dotsquare:\"\\u22a1\",dtdot:\"\\u22f1\",ecir:\"\\u2256\",efDot:\"\\u2252\",egs:\"\\u2a96\",ell:\"\\u2113\",els:\"\\u2a95\",empty:\"\\u2205\",epsi:\"\\u03b5\",epsiv:\"\\u03f5\",erDot:\"\\u2253\",eta:\"\\u03b7\",eth:\"\\xf0\",flat:\"\\u266d\",fork:\"\\u22d4\",frown:\"\\u2322\",gEl:\"\\u2a8c\",gamma:\"\\u03b3\",gap:\"\\u2a86\",gimel:\"\\u2137\",gnE:\"\\u2269\",gnap:\"\\u2a8a\",gne:\"\\u2a88\",gnsim:\"\\u22e7\",gt:\">\",gtdot:\"\\u22d7\",harrw:\"\\u21ad\",hbar:\"\\u210f\",hellip:\"\\u2026\",hookleftarrow:\"\\u21a9\",hookrightarrow:\"\\u21aa\",imath:\"\\u0131\",infin:\"\\u221e\",intcal:\"\\u22ba\",iota:\"\\u03b9\",jmath:\"\\u0237\",kappa:\"\\u03ba\",kappav:\"\\u03f0\",lEg:\"\\u2a8b\",lambda:\"\\u03bb\",lap:\"\\u2a85\",larrlp:\"\\u21ab\",larrtl:\"\\u21a2\",lbrace:\"{\",lbrack:\"[\",le:\"\\u2264\",leftleftarrows:\"\\u21c7\",leftthreetimes:\"\\u22cb\",lessdot:\"\\u22d6\",lmoust:\"\\u23b0\",lnE:\"\\u2268\",lnap:\"\\u2a89\",lne:\"\\u2a87\",lnsim:\"\\u22e6\",longmapsto:\"\\u27fc\",looparrowright:\"\\u21ac\",lowast:\"\\u2217\",loz:\"\\u25ca\",lt:\"<\",ltimes:\"\\u22c9\",ltri:\"\\u25c3\",macr:\"\\xaf\",malt:\"\\u2720\",mho:\"\\u2127\",mu:\"\\u03bc\",multimap:\"\\u22b8\",nLeftarrow:\"\\u21cd\",nLeftrightarrow:\"\\u21ce\",nRightarrow:\"\\u21cf\",nVDash:\"\\u22af\",nVdash:\"\\u22ae\",natur:\"\\u266e\",nearr:\"\\u2197\",nharr:\"\\u21ae\",nlarr:\"\\u219a\",not:\"\\xac\",nrarr:\"\\u219b\",nu:\"\\u03bd\",nvDash:\"\\u22ad\",nvdash:\"\\u22ac\",nwarr:\"\\u2196\",omega:\"\\u03c9\",omicron:\"\\u03bf\",or:\"\\u2228\",osol:\"\\u2298\",period:\".\",phi:\"\\u03c6\",phiv:\"\\u03d5\",pi:\"\\u03c0\",piv:\"\\u03d6\",prap:\"\\u2ab7\",precnapprox:\"\\u2ab9\",precneqq:\"\\u2ab5\",precnsim:\"\\u22e8\",prime:\"\\u2032\",psi:\"\\u03c8\",quot:'\"',rarrtl:\"\\u21a3\",rbrace:\"}\",rbrack:\"]\",rho:\"\\u03c1\",rhov:\"\\u03f1\",rightrightarrows:\"\\u21c9\",rightthreetimes:\"\\u22cc\",ring:\"\\u02da\",rmoust:\"\\u23b1\",rtimes:\"\\u22ca\",rtri:\"\\u25b9\",scap:\"\\u2ab8\",scnE:\"\\u2ab6\",scnap:\"\\u2aba\",scnsim:\"\\u22e9\",sdot:\"\\u22c5\",searr:\"\\u2198\",sect:\"\\xa7\",sharp:\"\\u266f\",sigma:\"\\u03c3\",sigmav:\"\\u03c2\",simne:\"\\u2246\",smile:\"\\u2323\",spades:\"\\u2660\",sub:\"\\u2282\",subE:\"\\u2ac5\",subnE:\"\\u2acb\",subne:\"\\u228a\",supE:\"\\u2ac6\",supnE:\"\\u2acc\",supne:\"\\u228b\",swarr:\"\\u2199\",tau:\"\\u03c4\",theta:\"\\u03b8\",thetav:\"\\u03d1\",tilde:\"\\u02dc\",times:\"\\xd7\",triangle:\"\\u25b5\",triangleq:\"\\u225c\",upsi:\"\\u03c5\",upuparrows:\"\\u21c8\",veebar:\"\\u22bb\",vellip:\"\\u22ee\",weierp:\"\\u2118\",xi:\"\\u03be\",yen:\"\\xa5\",zeta:\"\\u03b6\",zigrarr:\"\\u21dd\"};var n={};function o(t,Q){if(\"#\"===Q.charAt(0))return i(Q.slice(1));if(e.entities[Q])return e.entities[Q];if(e.options.loadMissingEntities){var o=Q.match(/^[a-zA-Z](fr|scr|opf)$/)?RegExp.$1:Q.charAt(0).toLowerCase();n[o]||(n[o]=!0,r.retryAfter(T.asyncLoad(\"./util/entities/\"+o+\".js\")))}return t}function i(t){var e=\"x\"===t.charAt(0)?parseInt(t.slice(1),16):parseInt(t);return String.fromCodePoint(e)}e.add=function(t,Q){Object.assign(e.entities,t),n[Q]=!0},e.remove=function(t){delete e.entities[t]},e.translate=function(t){return t.replace(/&([a-z][a-z0-9]*|#(?:[0-9]+|x[0-9a-f]+));/gi,o)},e.numeric=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var o=Q(12),i=function(t,e){void 0===t&&(t=\"???\"),void 0===e&&(e=\"\"),this.tag=t,this.id=e};e.Label=i;var a=function(t,e,Q,r,T,n,o,i){void 0===t&&(t=\"\"),void 0===e&&(e=!1),void 0===Q&&(Q=!1),void 0===r&&(r=null),void 0===T&&(T=\"\"),void 0===n&&(n=\"\"),void 0===o&&(o=!1),void 0===i&&(i=\"\"),this.env=t,this.taggable=e,this.defaultTags=Q,this.tag=r,this.tagId=T,this.tagFormat=n,this.noTag=o,this.labelId=i};e.TagInfo=a;var s=function(){function t(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new a,this.history=[],this.stack=[],this.enTag=function(t,e){var Q=this.configuration.nodeFactory,r=Q.create(\"node\",\"mtd\",[t]),T=Q.create(\"node\",\"mlabeledtr\",[e,r]);return Q.create(\"node\",\"mtable\",[T],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return t.prototype.start=function(t,e,Q){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new a(t,e,Q)},Object.defineProperty(t.prototype,\"env\",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),t.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},t.prototype.tag=function(t,e){this.currentTag.tag=t,this.currentTag.tagFormat=e?t:this.formatTag(t),this.currentTag.noTag=!1},t.prototype.notag=function(){this.tag(\"\",!0),this.currentTag.noTag=!0},Object.defineProperty(t.prototype,\"noTag\",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"label\",{get:function(){return this.currentTag.labelId},set:function(t){this.currentTag.labelId=t},enumerable:!1,configurable:!0}),t.prototype.formatUrl=function(t,e){return e+\"#\"+encodeURIComponent(t)},t.prototype.formatTag=function(t){return\"(\"+t+\")\"},t.prototype.formatId=function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},t.prototype.formatNumber=function(t){return t.toString()},t.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},t.prototype.clearTag=function(){this.label=\"\",this.tag(null,!0),this.currentTag.tagId=\"\"},t.prototype.getTag=function(t){if(void 0===t&&(t=!1),t)return this.autoTag(),this.makeTag();var e=this.currentTag;return e.taggable&&!e.noTag&&(e.defaultTags&&this.autoTag(),e.tag)?this.makeTag():null},t.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},t.prototype.reset=function(t){void 0===t&&(t=0),this.resetTag(),this.counter=this.allCounter=t,this.allLabels={},this.allIds={}},t.prototype.startEquation=function(t){this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var e=t.inputData.recompile;e&&(this.refUpdate=!0,this.counter=e.counter)},t.prototype.finishEquation=function(t){this.redo&&(t.inputData.recompile={state:t.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},t.prototype.finalize=function(t,e){if(!e.display||this.currentTag.env||null==this.currentTag.tag)return t;var Q=this.makeTag();return this.enTag(t,Q)},t.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},t.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new i(this.currentTag.tag,this.currentTag.tagId));var t=new o.default(\"\\\\text{\"+this.currentTag.tagFormat+\"}\",{},this.configuration).mml();return this.configuration.nodeFactory.create(\"node\",\"mtd\",[t],{id:this.currentTag.tagId})},t}();e.AbstractTags=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.autoTag=function(){},e.prototype.getTag=function(){return this.currentTag.tag?t.prototype.getTag.call(this):null},e}(s);e.NoTags=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.finalize=function(t,e){if(!e.display||this.history.find((function(t){return t.taggable})))return t;var Q=this.getTag(!0);return this.enTag(t,Q)},e}(s);e.AllTags=c,function(t){var e=new Map([[\"none\",l],[\"all\",c]]),Q=\"none\";t.OPTIONS={tags:Q,tagSide:\"right\",tagIndent:\"0.8em\",multlineWidth:\"85%\",useLabelIds:!0,ignoreDuplicateLabels:!1},t.add=function(t,Q){e.set(t,Q)},t.addTags=function(e){var Q,r;try{for(var T=n(Object.keys(e)),o=T.next();!o.done;o=T.next()){var i=o.value;t.add(i,e[i])}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},t.create=function(t){var r=e.get(t)||e.get(Q);if(!r)throw Error(\"Unknown tags class\");return new r},t.setDefault=function(t){Q=t},t.getDefault=function(){return t.create(Q)}}(e.TagsFactory||(e.TagsFactory={}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrioritizedList=void 0;var r=function(){function t(){this.items=[],this.items=[]}return t.prototype[Symbol.iterator]=function(){var t=0,e=this.items;return{next:function(){return{value:e[t++],done:t>e.length}}}},t.prototype.add=function(e,Q){void 0===Q&&(Q=t.DEFAULTPRIORITY);var r=this.items.length;do{r--}while(r>=0&&Q<this.items[r].priority);return this.items.splice(r+1,0,{item:e,priority:Q}),e},t.prototype.remove=function(t){var e=this.items.length;do{e--}while(e>=0&&this.items[e].item!==t);e>=0&&this.items.splice(e,1)},t.prototype.toArray=function(){return Array.from(this)},t.DEFAULTPRIORITY=5,t}();e.PrioritizedList=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseItem=e.MmlStack=void 0;var a=Q(5),s=function(){function t(t){this._nodes=t}return Object.defineProperty(t.prototype,\"nodes\",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];(t=this._nodes).push.apply(t,o(e))},t.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(t.prototype,\"First\",{get:function(){return this._nodes[this.Size()-1]},set:function(t){this._nodes[this.Size()-1]=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"Last\",{get:function(){return this._nodes[0]},set:function(t){this._nodes[0]=t},enumerable:!1,configurable:!0}),t.prototype.Peek=function(t){return null==t&&(t=1),this._nodes.slice(this.Size()-t)},t.prototype.Size=function(){return this._nodes.length},t.prototype.Clear=function(){this._nodes=[]},t.prototype.toMml=function(t,e){return void 0===t&&(t=!0),1!==this._nodes.length||e?this.create(\"node\",t?\"inferredMrow\":\"mrow\",this._nodes,{}):this.First},t.prototype.create=function(t){for(var e,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return(e=this.factory.configuration.nodeFactory).create.apply(e,o([t],Q))},t}();e.MmlStack=s;var l=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,Q)||this;return T.factory=e,T.global={},T._properties={},T.isOpen&&(T._env={}),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"base\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.getProperty=function(t){return this._properties[t]},e.prototype.setProperty=function(t,e){return this._properties[t]=e,this},Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.isKind=function(t){return t===this.kind},e.prototype.checkItem=function(t){if(t.isKind(\"over\")&&this.isOpen&&(t.setProperty(\"num\",this.toMml(!1)),this.Clear()),t.isKind(\"cell\")&&this.isOpen){if(t.getProperty(\"linebreak\"))return e.fail;throw new a.default(\"Misplaced\",\"Misplaced %1\",t.getName())}if(t.isClose&&this.getErrors(t.kind)){var Q=n(this.getErrors(t.kind),2),r=Q[0],T=Q[1];throw new a.default(r,T,t.getName())}return t.isFinal?(this.Push(t.First),e.fail):e.success},e.prototype.clearEnv=function(){var t,e;try{for(var Q=i(Object.keys(this.env)),r=Q.next();!r.done;r=Q.next()){var T=r.value;delete this.env[T]}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e.prototype.setProperties=function(t){return Object.assign(this._properties,t),this},e.prototype.getName=function(){return this.getProperty(\"name\")},e.prototype.toString=function(){return this.kind+\"[\"+this.nodes.join(\"; \")+\"]\"},e.prototype.getErrors=function(t){return(this.constructor.errors||{})[t]||e.errors[t]},e.fail=[null,!1],e.success=[null,!0],e.errors={end:[\"MissingBeginExtraEnd\",\"Missing \\\\begin{%1} or extra \\\\end{%1}\"],close:[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"],right:[\"MissingLeftExtraRight\",\"Missing \\\\left or extra \\\\right\"]},e}(s);e.BaseItem=l},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=Q(8),i=Q(13),a=Q(9);!function(t){t.variable=function(t,e){var Q=a.default.getFontDef(t),r=t.create(\"token\",\"mi\",Q,e);t.Push(r)},t.digit=function(t,e){var Q,r=t.configuration.options.digits,T=t.string.slice(t.i-1).match(r),n=a.default.getFontDef(t);T?(Q=t.create(\"token\",\"mn\",n,T[0].replace(/[{}]/g,\"\")),t.i+=T[0].length-1):Q=t.create(\"token\",\"mo\",n,e),t.Push(Q)},t.controlSequence=function(t,e){var Q=t.GetCS();t.parse(\"macro\",[t,Q])},t.mathchar0mi=function(t,e){var Q=e.attributes||{mathvariant:i.TexConstant.Variant.ITALIC},r=t.create(\"token\",\"mi\",Q,e.char);t.Push(r)},t.mathchar0mo=function(t,e){var Q=e.attributes||{};Q.stretchy=!1;var r=t.create(\"token\",\"mo\",Q,e.char);o.default.setProperty(r,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",r),t.Push(r)},t.mathchar7=function(t,e){var Q=e.attributes||{mathvariant:i.TexConstant.Variant.NORMAL};t.stack.env.font&&(Q.mathvariant=t.stack.env.font);var r=t.create(\"token\",\"mi\",Q,e.char);t.Push(r)},t.delimiter=function(t,e){var Q=e.attributes||{};Q=Object.assign({fence:!1,stretchy:!1},Q);var r=t.create(\"token\",\"mo\",Q,e.char);t.Push(r)},t.environment=function(t,e,Q,r){var n=r[0],o=t.itemFactory.create(\"begin\").setProperties({name:e,end:n});o=Q.apply(void 0,T([t,o],r.slice(1))),t.Push(o)}}(n||(n={})),e.default=n},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Attributes=e.INHERIT=void 0,e.INHERIT=\"_inherit_\";var T=function(){function t(t,e){this.global=e,this.defaults=Object.create(e),this.inherited=Object.create(this.defaults),this.attributes=Object.create(this.inherited),Object.assign(this.defaults,t)}return t.prototype.set=function(t,e){this.attributes[t]=e},t.prototype.setList=function(t){Object.assign(this.attributes,t)},t.prototype.get=function(t){var Q=this.attributes[t];return Q===e.INHERIT&&(Q=this.global[t]),Q},t.prototype.getExplicit=function(t){if(this.attributes.hasOwnProperty(t))return this.attributes[t]},t.prototype.getList=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];var n={};try{for(var o=r(Q),i=o.next();!i.done;i=o.next()){var a=i.value;n[a]=this.get(a)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return n},t.prototype.setInherited=function(t,e){this.inherited[t]=e},t.prototype.getInherited=function(t){return this.inherited[t]},t.prototype.getDefault=function(t){return this.defaults[t]},t.prototype.isSet=function(t){return this.attributes.hasOwnProperty(t)||this.inherited.hasOwnProperty(t)},t.prototype.hasDefault=function(t){return t in this.defaults},t.prototype.getExplicitNames=function(){return Object.keys(this.attributes)},t.prototype.getInheritedNames=function(){return Object.keys(this.inherited)},t.prototype.getDefaultNames=function(){return Object.keys(this.defaults)},t.prototype.getGlobalNames=function(){return Object.keys(this.global)},t.prototype.getAllAttributes=function(){return this.attributes},t.prototype.getAllInherited=function(){return this.inherited},t.prototype.getAllDefaults=function(){return this.defaults},t.prototype.getAllGlobals=function(){return this.global},t}();e.Attributes=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.mathjax=void 0;var r=Q(118),T=Q(40);e.mathjax={version:\"3.1.2\",handlers:new r.HandlerList,document:function(t,Q){return e.mathjax.handlers.document(t,Q)},handleRetriesFor:T.handleRetriesFor,retryAfter:T.retryAfter,asyncLoad:null}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Macro=e.Symbol=void 0;var r=function(){function t(t,e,Q){this._symbol=t,this._char=e,this._attributes=Q}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"char\",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"attributes\",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),t}();e.Symbol=r;var T=function(){function t(t,e,Q){void 0===Q&&(Q=[]),this._symbol=t,this._func=e,this._args=Q}return Object.defineProperty(t.prototype,\"symbol\",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"func\",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"args\",{get:function(){return this._args},enumerable:!1,configurable:!0}),t}();e.Macro=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.EquationItem=e.EqnArrayItem=e.ArrayItem=e.DotsItem=e.NotItem=e.FnItem=e.MmlItem=e.CellItem=e.PositionItem=e.StyleItem=e.EndItem=e.BeginItem=e.RightItem=e.LeftItem=e.OverItem=e.SubsupItem=e.PrimeItem=e.CloseItem=e.OpenItem=e.StopItem=e.StartItem=void 0;var i=Q(33),a=Q(19),s=Q(0),l=Q(5),c=Q(9),u=Q(8),p=Q(22),h=function(t){function e(e,Q){var r=t.call(this,e)||this;return r.global=Q,r}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"start\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"stop\")){var Q=this.toMml();return this.global.isInner||(Q=this.factory.configuration.tags.finalize(Q,this.env)),[[this.factory.create(\"mml\",Q)],!0]}return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.StartItem=h;var f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"stop\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.StopItem=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"close\")){var Q=this.toMml(),r=this.create(\"node\",\"TeXAtom\",[Q]);return[[this.factory.create(\"mml\",r)],!0]}return t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"ExtraOpenMissingClose\",\"Extra open brace or missing close brace\"]}),e}(p.BaseItem);e.OpenItem=d;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"close\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.CloseItem=L;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"prime\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e=n(this.Peek(2),2),Q=e[0],r=e[1];return!u.default.isType(Q,\"msubsup\")||u.default.isType(Q,\"msup\")?[[this.create(\"node\",\"msup\",[Q,r]),t],!0]:(u.default.setChild(Q,Q.sup,r),[[Q,t],!0])},e}(p.BaseItem);e.PrimeItem=H;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"subsup\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"open\")||e.isKind(\"left\"))return p.BaseItem.success;var Q=this.First,r=this.getProperty(\"position\");if(e.isKind(\"mml\")){if(this.getProperty(\"primes\"))if(2!==r)u.default.setChild(Q,2,this.getProperty(\"primes\"));else{u.default.setProperty(this.getProperty(\"primes\"),\"variantForm\",!0);var T=this.create(\"node\",\"mrow\",[this.getProperty(\"primes\"),e.First]);e.First=T}return u.default.setChild(Q,r,e.First),null!=this.getProperty(\"movesupsub\")&&u.default.setProperty(Q,\"movesupsub\",this.getProperty(\"movesupsub\")),[[this.factory.create(\"mml\",Q)],!0]}if(t.prototype.checkItem.call(this,e)[1]){var n=this.getErrors([\"\",\"sub\",\"sup\"][r]);throw new(l.default.bind.apply(l.default,o([void 0,n[0],n[1]],n.splice(2))))}return null},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"MissingScript\",\"Missing superscript or subscript argument\"],sup:[\"MissingOpenForSup\",\"Missing open brace for superscript\"],sub:[\"MissingOpenForSub\",\"Missing open brace for subscript\"]}),e}(p.BaseItem);e.SubsupItem=m;var y=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"name\",\"\\\\over\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"over\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"over\"))throw new l.default(\"AmbiguousUseOf\",\"Ambiguous use of %1\",e.getName());if(e.isClose){var Q=this.create(\"node\",\"mfrac\",[this.getProperty(\"num\"),this.toMml(!1)]);return null!=this.getProperty(\"thickness\")&&u.default.setAttribute(Q,\"linethickness\",this.getProperty(\"thickness\")),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(u.default.setProperty(Q,\"withDelims\",!0),Q=c.default.fixedFence(this.factory.configuration,this.getProperty(\"open\"),Q,this.getProperty(\"close\"))),[[this.factory.create(\"mml\",Q),e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.toString=function(){return\"over[\"+this.getProperty(\"num\")+\" / \"+this.nodes.join(\"; \")+\"]\"},e}(p.BaseItem);e.OverItem=y;var v=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"delim\",\"(\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"left\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"right\")?[[this.factory.create(\"mml\",c.default.fenced(this.factory.configuration,this.getProperty(\"delim\"),this.toMml(),e.getProperty(\"delim\")))],!0]:t.prototype.checkItem.call(this,e)},e.errors=Object.assign(Object.create(p.BaseItem.errors),{stop:[\"ExtraLeftMissingRight\",\"Extra \\\\left or missing \\\\right\"]}),e}(p.BaseItem);e.LeftItem=v;var g=function(t){function e(e){var Q=t.call(this,e)||this;return Q.setProperty(\"delim\",\")\"),Q}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"right\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.RightItem=g;var b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"begin\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new l.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return this.getProperty(\"end\")?p.BaseItem.fail:[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new l.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.BeginItem=b;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"end\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.EndItem=M;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"style\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(!e.isClose)return t.prototype.checkItem.call(this,e);var Q=this.create(\"node\",\"mstyle\",this.nodes,this.getProperty(\"styles\"));return[[this.factory.create(\"mml\",Q),e],!0]},e}(p.BaseItem);e.StyleItem=V;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"position\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose)throw new l.default(\"MissingBoxFor\",\"Missing box for %1\",this.getName());if(e.isFinal){var Q=e.toMml();switch(this.getProperty(\"move\")){case\"vertical\":return Q=this.create(\"node\",\"mpadded\",[Q],{height:this.getProperty(\"dh\"),depth:this.getProperty(\"dd\"),voffset:this.getProperty(\"dh\")}),[[this.factory.create(\"mml\",Q)],!0];case\"horizontal\":return[[this.factory.create(\"mml\",this.getProperty(\"left\")),e,this.factory.create(\"mml\",this.getProperty(\"right\"))],!0]}}return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.PositionItem=x;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"cell\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isClose\",{get:function(){return!0},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.CellItem=O;var _=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"isFinal\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mml\"},enumerable:!1,configurable:!0}),e}(p.BaseItem);e.MmlItem=_;var S=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"fn\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){var Q=this.First;if(Q){if(e.isOpen)return p.BaseItem.success;if(!e.isKind(\"fn\")){var r=e.First;if(!e.isKind(\"mml\")||!r)return[[Q,e],!0];if(u.default.isType(r,\"mstyle\")&&r.childNodes.length&&u.default.isType(r.childNodes[0].childNodes[0],\"mspace\")||u.default.isType(r,\"mspace\"))return[[Q,e],!0];u.default.isEmbellished(r)&&(r=u.default.getCoreMO(r));var T=u.default.getForm(r);if(null!=T&&[0,0,1,1,0,1,1,0,0,0][T[2]])return[[Q,e],!0]}var n=this.create(\"token\",\"mo\",{texClass:s.TEXCLASS.NONE},a.entities.ApplyFunction);return[[Q,n,e],!0]}return t.prototype.checkItem.apply(this,arguments)},e}(p.BaseItem);e.FnItem=S;var E=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.remap=i.MapHandler.getMap(\"not_remap\"),e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"not\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){var e,Q,r;if(t.isKind(\"open\")||t.isKind(\"left\"))return p.BaseItem.success;if(t.isKind(\"mml\")&&(u.default.isType(t.First,\"mo\")||u.default.isType(t.First,\"mi\")||u.default.isType(t.First,\"mtext\"))&&(e=t.First,1===(Q=u.default.getText(e)).length&&!u.default.getProperty(e,\"movesupsub\")&&1===u.default.getChildren(e).length))return this.remap.contains(Q)?(r=this.create(\"text\",this.remap.lookup(Q).char),u.default.setChild(e,0,r)):(r=this.create(\"text\",\"\\u0338\"),u.default.appendChildren(e,[r])),[[t],!0];r=this.create(\"text\",\"\\u29f8\");var T=this.create(\"node\",\"mtext\",[],{},r),n=this.create(\"node\",\"mpadded\",[T],{width:0});return[[e=this.create(\"node\",\"TeXAtom\",[n],{texClass:s.TEXCLASS.REL}),t],!0]},e}(p.BaseItem);e.NotItem=E;var C=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"dots\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"open\")||t.isKind(\"left\"))return p.BaseItem.success;var e=this.getProperty(\"ldots\"),Q=t.First;if(t.isKind(\"mml\")&&u.default.isEmbellished(Q)){var r=u.default.getTexClass(u.default.getCoreMO(Q));r!==s.TEXCLASS.BIN&&r!==s.TEXCLASS.REL||(e=this.getProperty(\"cdots\"))}return[[e,t],!0]},e}(p.BaseItem);e.DotsItem=C;var w=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.table=[],e.row=[],e.frame=[],e.hfill=[],e.arraydef={},e.dashed=!1,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"array\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"copyEnv\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isClose&&!e.isKind(\"over\")){if(e.getProperty(\"isEntry\"))return this.EndEntry(),this.clearEnv(),p.BaseItem.fail;if(e.getProperty(\"isCR\"))return this.EndEntry(),this.EndRow(),this.clearEnv(),p.BaseItem.fail;this.EndTable(),this.clearEnv();var Q=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var r=this.create(\"node\",\"mtable\",this.table,this.arraydef);4===this.frame.length?u.default.setAttribute(r,\"frame\",this.dashed?\"dashed\":\"solid\"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,\"none\")),r=this.create(\"node\",\"menclose\",[r],{notation:this.frame.join(\" \"),isFrame:!0}),\"none\"===(this.arraydef.columnlines||\"none\")&&\"none\"===(this.arraydef.rowlines||\"none\")||u.default.setAttribute(r,\"padding\",0)),Q&&(r=this.create(\"node\",\"mstyle\",[r],{scriptlevel:Q})),(this.getProperty(\"open\")||this.getProperty(\"close\"))&&(r=c.default.fenced(this.factory.configuration,this.getProperty(\"open\"),r,this.getProperty(\"close\")));var T=this.factory.create(\"mml\",r);if(this.getProperty(\"requireClose\")){if(e.isKind(\"close\"))return[[T],!0];throw new l.default(\"MissingCloseBrace\",\"Missing close brace\")}return[[T,e],!0]}return t.prototype.checkItem.call(this,e)},e.prototype.EndEntry=function(){var t=this.create(\"node\",\"mtd\",this.nodes);this.hfill.length&&(0===this.hfill[0]&&u.default.setAttribute(t,\"columnalign\",\"right\"),this.hfill[this.hfill.length-1]===this.Size()&&u.default.setAttribute(t,\"columnalign\",u.default.getAttribute(t,\"columnalign\")?\"center\":\"left\")),this.row.push(t),this.Clear(),this.hfill=[]},e.prototype.EndRow=function(){var t;this.getProperty(\"isNumbered\")&&3===this.row.length?(this.row.unshift(this.row.pop()),t=this.create(\"node\",\"mlabeledtr\",this.row)):t=this.create(\"node\",\"mtr\",this.row),this.table.push(t),this.row=[]},e.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},e.prototype.checkLines=function(){if(this.arraydef.rowlines){var t=this.arraydef.rowlines.split(/ /);t.length===this.table.length?(this.frame.push(\"bottom\"),t.pop(),this.arraydef.rowlines=t.join(\" \")):t.length<this.table.length-1&&(this.arraydef.rowlines+=\" none\")}if(this.getProperty(\"rowspacing\")){for(var e=this.arraydef.rowspacing.split(/ /);e.length<this.table.length;)e.push(this.getProperty(\"rowspacing\")+\"em\");this.arraydef.rowspacing=e.join(\" \")}},e}(p.BaseItem);e.ArrayItem=w;var A=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(Q[0],Q[2],Q[1]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"eqnarray\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.row.length&&c.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.create(\"node\",\"mtd\",this.nodes);this.row.push(t),this.Clear()},e.prototype.EndRow=function(){var t=\"mtr\",e=this.factory.configuration.tags.getTag();e&&(this.row=[e].concat(this.row),t=\"mlabeledtr\"),this.factory.configuration.tags.clearTag();var Q=this.create(\"node\",t,this.row);this.table.push(Q),this.row=[]},e.prototype.EndTable=function(){t.prototype.EndTable.call(this),this.factory.configuration.tags.end()},e}(w);e.EqnArrayItem=A;var P=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(\"equation\",!0,Q[0]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"equation\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){var Q=this.toMml(),r=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[r?this.factory.configuration.tags.enTag(Q,r):Q,e],!0]}if(e.isKind(\"stop\"))throw new l.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(p.BaseItem);e.EquationItem=P},function(t,e,Q){\"use strict\";var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontData=e.NOSTRETCH=e.H=e.V=void 0,e.V=1,e.H=2,e.NOSTRETCH={dir:0};var i=function(){function t(){var t,e;this.variant={},this.delimiters={},this.cssFontMap={},this.remapChars={};var Q=this.constructor;this.params=r({},Q.defaultParams),this.sizeVariants=n(Q.defaultSizeVariants),this.cssFontMap=r({},Q.defaultCssFonts),this.cssFamilyPrefix=Q.defaultCssFamilyPrefix,this.createVariants(Q.defaultVariants),this.defineDelimiters(Q.defaultDelimiters);try{for(var T=o(Object.keys(Q.defaultChars)),i=T.next();!i.done;i=T.next()){var a=i.value;this.defineChars(a,Q.defaultChars[a])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}this.defineRemap(\"accent\",Q.defaultAccentMap),this.defineRemap(\"mo\",Q.defaultMoMap),this.defineRemap(\"mn\",Q.defaultMnMap)}return t.charOptions=function(t,e){var Q=t[e];return 3===Q.length&&(Q[3]={}),Q[3]},t.prototype.createVariant=function(t,e,Q){void 0===e&&(e=null),void 0===Q&&(Q=null);var r={linked:[],chars:e?Object.create(this.variant[e].chars):{}};Q&&this.variant[Q]&&(Object.assign(r.chars,this.variant[Q].chars),this.variant[Q].linked.push(r.chars),r.chars=Object.create(r.chars)),this.remapSmpChars(r.chars,t),this.variant[t]=r},t.prototype.remapSmpChars=function(t,e){var Q,r,n,i,a=this.constructor;if(a.VariantSmp[e]){var s=a.SmpRemap,l=[null,null,a.SmpRemapGreekU,a.SmpRemapGreekL];try{for(var c=o(a.SmpRanges),u=c.next();!u.done;u=c.next()){var p=T(u.value,3),h=p[0],f=p[1],d=p[2],L=a.VariantSmp[e][h];if(L){for(var H=f;H<=d;H++)if(930!==H){var m=L+H-f;t[H]=this.smpChar(s[m]||m)}if(l[h])try{for(var y=(n=void 0,o(Object.keys(l[h]).map((function(t){return parseInt(t)})))),v=y.next();!v.done;v=y.next()){t[H=v.value]=this.smpChar(L+l[h][H])}}catch(t){n={error:t}}finally{try{v&&!v.done&&(i=y.return)&&i.call(y)}finally{if(n)throw n.error}}}}}catch(t){Q={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(Q)throw Q.error}}}\"bold\"===e&&(t[988]=this.smpChar(120778),t[989]=this.smpChar(120779))},t.prototype.smpChar=function(t){return[,,,{smp:t}]},t.prototype.createVariants=function(t){var e,Q;try{for(var r=o(t),T=r.next();!T.done;T=r.next()){var n=T.value;this.createVariant(n[0],n[1],n[2])}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},t.prototype.defineChars=function(t,e){var Q,r,T=this.variant[t];Object.assign(T.chars,e);try{for(var n=o(T.linked),i=n.next();!i.done;i=n.next()){var a=i.value;Object.assign(a,e)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(Q)throw Q.error}}},t.prototype.defineDelimiters=function(t){Object.assign(this.delimiters,t)},t.prototype.defineRemap=function(t,e){this.remapChars.hasOwnProperty(t)||(this.remapChars[t]={}),Object.assign(this.remapChars[t],e)},t.prototype.getDelimiter=function(t){return this.delimiters[t]},t.prototype.getSizeVariant=function(t,e){return this.delimiters[t].variants&&(e=this.delimiters[t].variants[e]),this.sizeVariants[e]},t.prototype.getChar=function(t,e){return this.variant[t].chars[e]},t.prototype.getVariant=function(t){return this.variant[t]},t.prototype.getCssFont=function(t){return this.cssFontMap[t]||[\"serif\",!1,!1]},t.prototype.getFamily=function(t){return this.cssFamilyPrefix?this.cssFamilyPrefix+\", \"+t:t},t.prototype.getRemappedChar=function(t,e){return(this.remapChars[t]||{})[e]},t.OPTIONS={},t.defaultVariants=[[\"normal\"],[\"bold\",\"normal\"],[\"italic\",\"normal\"],[\"bold-italic\",\"italic\",\"bold\"],[\"double-struck\",\"bold\"],[\"fraktur\",\"normal\"],[\"bold-fraktur\",\"bold\",\"fraktur\"],[\"script\",\"italic\"],[\"bold-script\",\"bold-italic\",\"script\"],[\"sans-serif\",\"normal\"],[\"bold-sans-serif\",\"bold\",\"sans-serif\"],[\"sans-serif-italic\",\"italic\",\"sans-serif\"],[\"sans-serif-bold-italic\",\"bold-italic\",\"bold-sans-serif\"],[\"monospace\",\"normal\"]],t.defaultCssFonts={normal:[\"serif\",!1,!1],bold:[\"serif\",!1,!0],italic:[\"serif\",!0,!1],\"bold-italic\":[\"serif\",!0,!0],\"double-struck\":[\"serif\",!1,!0],fraktur:[\"serif\",!1,!1],\"bold-fraktur\":[\"serif\",!1,!0],script:[\"cursive\",!1,!1],\"bold-script\":[\"cursive\",!1,!0],\"sans-serif\":[\"sans-serif\",!1,!1],\"bold-sans-serif\":[\"sans-serif\",!1,!0],\"sans-serif-italic\":[\"sans-serif\",!0,!1],\"sans-serif-bold-italic\":[\"sans-serif\",!0,!0],monospace:[\"monospace\",!1,!1]},t.defaultCssFamilyPrefix=\"\",t.VariantSmp={bold:[119808,119834,120488,120514,120782],italic:[119860,119886,120546,120572],\"bold-italic\":[119912,119938,120604,120630],script:[119964,119990],\"bold-script\":[120016,120042],fraktur:[120068,120094],\"double-struck\":[120120,120146,,,120792],\"bold-fraktur\":[120172,120198],\"sans-serif\":[120224,120250,,,120802],\"bold-sans-serif\":[120276,120302,120662,120688,120812],\"sans-serif-italic\":[120328,120354],\"sans-serif-bold-italic\":[120380,120406,120720,120746],monospace:[120432,120458,,,120822]},t.SmpRanges=[[0,65,90],[1,97,122],[2,913,937],[3,945,969],[4,48,57]],t.SmpRemap={119893:8462,119965:8492,119968:8496,119969:8497,119971:8459,119972:8464,119975:8466,119976:8499,119981:8475,119994:8495,119996:8458,120004:8500,120070:8493,120075:8460,120076:8465,120085:8476,120093:8488,120122:8450,120127:8461,120133:8469,120135:8473,120136:8474,120137:8477,120145:8484},t.SmpRemapGreekU={8711:25,1012:17},t.SmpRemapGreekL={977:27,981:29,982:31,1008:28,1009:30,1013:26,8706:25},t.defaultAccentMap={768:\"\\u02cb\",769:\"\\u02ca\",770:\"\\u02c6\",771:\"\\u02dc\",772:\"\\u02c9\",774:\"\\u02d8\",775:\"\\u02d9\",776:\"\\xa8\",778:\"\\u02da\",780:\"\\u02c7\",8594:\"\\u20d7\",8242:\"'\",8243:\"''\",8244:\"'''\",8245:\"`\",8246:\"``\",8247:\"```\",8279:\"''''\",8400:\"\\u21bc\",8401:\"\\u21c0\",8406:\"\\u2190\",8417:\"\\u2194\",8432:\"*\",8411:\"...\",8412:\"....\",8428:\"\\u21c1\",8429:\"\\u21bd\",8430:\"\\u2190\",8431:\"\\u2192\"},t.defaultMoMap={45:\"\\u2212\"},t.defaultMnMap={45:\"\\u2212\"},t.defaultParams={x_height:.442,quad:1,num1:.676,num2:.394,num3:.444,denom1:.686,denom2:.345,sup1:.413,sup2:.363,sup3:.289,sub1:.15,sub2:.247,sup_drop:.386,sub_drop:.05,delim1:2.39,delim2:1,axis_height:.25,rule_thickness:.06,big_op_spacing1:.111,big_op_spacing2:.167,big_op_spacing3:.2,big_op_spacing4:.6,big_op_spacing5:.1,surd_height:.075,scriptspace:.05,nulldelimiterspace:.12,delimiterfactor:901,delimitershortfall:.3,min_rule_thickness:1.25},t.defaultDelimiters={},t.defaultChars={},t.defaultSizeVariants=[],t}();e.FontData=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Package=e.PackageError=void 0;var a=Q(11),s=function(t){function e(e,Q){var r=t.call(this,e)||this;return r.package=Q,r}return T(e,t),e}(Error);e.PackageError=s;var l=function(){function t(e,Q){void 0===Q&&(Q=!1),this.isLoaded=!1,this.isLoading=!1,this.hasFailed=!1,this.dependents=[],this.dependencies=[],this.dependencyCount=0,this.provided=[],this.name=e,this.noLoad=Q,t.packages.set(e,this),this.promise=this.makePromise(this.makeDependencies())}return Object.defineProperty(t.prototype,\"canLoad\",{get:function(){return 0===this.dependencyCount&&!this.noLoad&&!this.isLoading&&!this.hasFailed},enumerable:!1,configurable:!0}),t.resolvePath=function(t,e){void 0===e&&(e=!0);var Q,r=a.CONFIG.source[t]||t;for(r.match(/^(?:[a-z]+:\\/)?\\/|[a-z]:\\\\|\\[/i)||(r=\"[mathjax]/\"+r.replace(/^\\.\\//,\"\")),e&&!r.match(/\\.[^\\/]+$/)&&(r+=\".js\");(Q=r.match(/^\\[([^\\]]*)\\]/))&&a.CONFIG.paths.hasOwnProperty(Q[1]);)r=a.CONFIG.paths[Q[1]]+r.substr(Q[0].length);return r},t.loadAll=function(){var t,e;try{for(var Q=n(this.packages.values()),r=Q.next();!r.done;r=Q.next()){var T=r.value;T.canLoad&&T.load()}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},t.prototype.makeDependencies=function(){var e,Q,r=[],T=t.packages,o=this.noLoad,s=this.name,l=[];a.CONFIG.dependencies.hasOwnProperty(s)?l.push.apply(l,i(a.CONFIG.dependencies[s])):\"core\"!==s&&l.push(\"core\");try{for(var c=n(l),u=c.next();!u.done;u=c.next()){var p=u.value,h=T.get(p)||new t(p,o);this.dependencies.indexOf(h)<0&&(h.addDependent(this,o),this.dependencies.push(h),h.isLoaded||(this.dependencyCount++,r.push(h.promise)))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(Q=c.return)&&Q.call(c)}finally{if(e)throw e.error}}return r},t.prototype.makePromise=function(t){var e=this,Q=new Promise((function(t,Q){e.resolve=t,e.reject=Q})),r=a.CONFIG[this.name]||{};return r.ready&&(Q=Q.then((function(t){return r.ready(e.name)}))),t.length&&(t.push(Q),Q=Promise.all(t).then((function(t){return t.join(\", \")}))),r.failed&&Q.catch((function(t){return r.failed(new s(t,e.name))})),Q},t.prototype.load=function(){if(!this.isLoaded&&!this.isLoading&&!this.noLoad){this.isLoading=!0;var e=t.resolvePath(this.name);a.CONFIG.require?this.loadCustom(e):this.loadScript(e)}},t.prototype.loadCustom=function(t){var e=this;try{var Q=a.CONFIG.require(t);Q instanceof Promise?Q.then((function(){return e.checkLoad()})).catch((function(Q){return e.failed(\"Can't load \\\"\"+t+'\"\\n'+Q.message.trim())})):this.checkLoad()}catch(t){this.failed(t.message)}},t.prototype.loadScript=function(t){var e=this,Q=document.createElement(\"script\");Q.src=t,Q.charset=\"UTF-8\",Q.onload=function(t){return e.checkLoad()},Q.onerror=function(Q){return e.failed(\"Can't load \\\"\"+t+'\"')},document.head.appendChild(Q)},t.prototype.loaded=function(){var t,e,Q,r;this.isLoaded=!0,this.isLoading=!1;try{for(var T=n(this.dependents),o=T.next();!o.done;o=T.next()){o.value.requirementSatisfied()}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}try{for(var i=n(this.provided),a=i.next();!a.done;a=i.next()){a.value.loaded()}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}this.resolve(this.name)},t.prototype.failed=function(t){this.hasFailed=!0,this.isLoading=!1,this.reject(new s(t,this.name))},t.prototype.checkLoad=function(){var t=this;((a.CONFIG[this.name]||{}).checkReady||function(){return Promise.resolve()})().then((function(){return t.loaded()})).catch((function(e){return t.failed(e)}))},t.prototype.requirementSatisfied=function(){this.dependencyCount&&(this.dependencyCount--,this.canLoad&&this.load())},t.prototype.provides=function(e){var Q,r;void 0===e&&(e=[]);try{for(var T=n(e),o=T.next();!o.done;o=T.next()){var i=o.value,s=t.packages.get(i);s||(a.CONFIG.dependencies[i]||(a.CONFIG.dependencies[i]=[]),a.CONFIG.dependencies[i].push(i),(s=new t(i,!0)).isLoading=!0),this.provided.push(s)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},t.prototype.addDependent=function(t,e){this.dependents.push(t),e||this.checkNoLoad()},t.prototype.checkNoLoad=function(){var t,e;if(this.noLoad){this.noLoad=!1;try{for(var Q=n(this.dependencies),r=Q.next();!r.done;r=Q.next()){r.value.checkNoLoad()}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}}},t.packages=new Map,t}();e.Package=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FunctionList=void 0;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.execute=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(this),o=T.next();!o.done;o=T.next()){var a=o.value,s=a.item.apply(a,i(Q));if(!1===s)return!1}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return!0},e.prototype.asyncExecute=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var Q=-1,r=this.items;return new Promise((function(e,T){!function n(){for(var o;++Q<r.length;){var a=(o=r[Q]).item.apply(o,i(t));if(a instanceof Promise)return void a.then(n).catch((function(t){return T(t)}));if(!1===a)return void e(!1)}e(!0)}()}))},e}(Q(21).PrioritizedList);e.FunctionList=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMo=void 0;var a=Q(0),s=Q(112),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._texClass=null,e.lspace=5/18,e.rspace=5/18,e}return T(e,t),Object.defineProperty(e.prototype,\"texClass\",{get:function(){if(null===this._texClass){var t=this.getText(),e=o(this.handleExplicitForm(this.getForms()),3),Q=e[0],r=e[1],T=e[2],n=this.constructor.OPTABLE,i=n[Q][t]||n[r][t]||n[T][t];return i?i[2]:a.TEXCLASS.REL}return this._texClass},set:function(t){this._texClass=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mo\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"hasNewLine\",{get:function(){return\"newline\"===this.attributes.get(\"linebreak\")},enumerable:!1,configurable:!0}),e.prototype.coreParent=function(){for(var t=this,e=this,Q=this.factory.getNodeClass(\"math\");e&&e.isEmbellished&&e.coreMO()===this&&!(e instanceof Q);)t=e,e=e.Parent;return t},e.prototype.coreText=function(t){if(!t)return\"\";if(t.isEmbellished)return t.coreMO().getText();for(;((t.isKind(\"mrow\")||t.isKind(\"TeXAtom\")||t.isKind(\"mstyle\")||t.isKind(\"mphantom\"))&&1===t.childNodes.length||t.isKind(\"munderover\"))&&t.childNodes[0];)t=t.childNodes[0];return t.isToken?t.getText():\"\"},e.prototype.hasSpacingAttributes=function(){return this.attributes.isSet(\"lspace\")||this.attributes.isSet(\"rspace\")},Object.defineProperty(e.prototype,\"isAccent\",{get:function(){var t=!1,e=this.coreParent().parent;if(e){var Q=e.isKind(\"mover\")?e.childNodes[e.over].coreMO()?\"accent\":\"\":e.isKind(\"munder\")?e.childNodes[e.under].coreMO()?\"accentunder\":\"\":e.isKind(\"munderover\")?this===e.childNodes[e.over].coreMO()?\"accent\":this===e.childNodes[e.under].coreMO()?\"accentunder\":\"\":\"\";if(Q)t=void 0!==e.attributes.getExplicit(Q)?t:this.attributes.get(\"accent\")}return t},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){var e=this.attributes.getList(\"form\",\"fence\"),Q=e.form,r=e.fence;return void 0===this.getProperty(\"texClass\")&&(this.attributes.isSet(\"lspace\")||this.attributes.isSet(\"rspace\"))?null:(r&&this.texClass===a.TEXCLASS.REL&&(\"prefix\"===Q&&(this.texClass=a.TEXCLASS.OPEN),\"postfix\"===Q&&(this.texClass=a.TEXCLASS.CLOSE)),\"\\u2061\"===this.getText()?(t&&(t.texClass=a.TEXCLASS.OP,t.setProperty(\"fnOP\",!0)),this.texClass=this.prevClass=a.TEXCLASS.NONE,t):this.adjustTeXclass(t))},e.prototype.adjustTeXclass=function(t){var e=this.texClass,Q=this.prevClass;if(e===a.TEXCLASS.NONE)return t;if(t?(!t.getProperty(\"autoOP\")||e!==a.TEXCLASS.BIN&&e!==a.TEXCLASS.REL||(Q=t.texClass=a.TEXCLASS.ORD),Q=this.prevClass=t.texClass||a.TEXCLASS.ORD,this.prevLevel=this.attributes.getInherited(\"scriptlevel\")):Q=this.prevClass=a.TEXCLASS.NONE,e!==a.TEXCLASS.BIN||Q!==a.TEXCLASS.NONE&&Q!==a.TEXCLASS.BIN&&Q!==a.TEXCLASS.OP&&Q!==a.TEXCLASS.REL&&Q!==a.TEXCLASS.OPEN&&Q!==a.TEXCLASS.PUNCT)if(Q!==a.TEXCLASS.BIN||e!==a.TEXCLASS.REL&&e!==a.TEXCLASS.CLOSE&&e!==a.TEXCLASS.PUNCT){if(e===a.TEXCLASS.BIN){for(var r=this,T=this.parent;T&&T.parent&&T.isEmbellished&&(1===T.childNodes.length||!T.isKind(\"mrow\")&&T.core()===r);)r=T,T=T.parent;T.childNodes[T.childNodes.length-1]===r&&(this.texClass=a.TEXCLASS.ORD)}}else t.texClass=this.prevClass=a.TEXCLASS.ORD;else this.texClass=a.TEXCLASS.ORD;return this},e.prototype.setInheritedAttributes=function(e,Q,r,T){var n,a;void 0===e&&(e={}),void 0===Q&&(Q=!1),void 0===r&&(r=0),void 0===T&&(T=!1),t.prototype.setInheritedAttributes.call(this,e,Q,r,T);var s=this.getText(),l=o(this.handleExplicitForm(this.getForms()),3),c=l[0],u=l[1],p=l[2];this.attributes.setInherited(\"form\",c);var h=this.constructor.OPTABLE,f=h[c][s]||h[u][s]||h[p][s];if(f){void 0===this.getProperty(\"texClass\")&&(this.texClass=f[2]);try{for(var d=i(Object.keys(f[3]||{})),L=d.next();!L.done;L=d.next()){var H=L.value;this.attributes.setInherited(H,f[3][H])}}catch(t){n={error:t}}finally{try{L&&!L.done&&(a=d.return)&&a.call(d)}finally{if(n)throw n.error}}this.lspace=(f[0]+1)/18,this.rspace=(f[1]+1)/18}else{var m=this.getRange(s);if(m){void 0===this.getProperty(\"texClass\")&&(this.texClass=m[2]);var y=this.constructor.MMLSPACING[m[2]];this.lspace=(y[0]+1)/18,this.rspace=(y[1]+1)/18}}},e.prototype.getForms=function(){for(var t=this,e=this.parent,Q=this.Parent;Q&&Q.isEmbellished;)t=e,e=Q.parent,Q=Q.Parent;if(e&&e.isKind(\"mrow\")&&1!==e.nonSpaceLength()){if(e.firstNonSpace()===t)return[\"prefix\",\"infix\",\"postfix\"];if(e.lastNonSpace()===t)return[\"postfix\",\"infix\",\"prefix\"]}return[\"infix\",\"prefix\",\"postfix\"]},e.prototype.handleExplicitForm=function(t){if(this.attributes.isSet(\"form\")){var e=this.attributes.get(\"form\");t=[e].concat(t.filter((function(t){return t!==e})))}return t},e.prototype.getRange=function(t){var e,Q;if(!t.match(/^[\\uD800-\\uDBFF]?.$/))return null;var r=t.codePointAt(0),T=this.constructor.RANGES;try{for(var n=i(T),o=n.next();!o.done;o=n.next()){var a=o.value;if(a[0]<=r&&r<=a[1])return a;if(r<a[0])return null}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}return null},e.defaults=n(n({},a.AbstractMmlTokenNode.defaults),{form:\"infix\",fence:!1,separator:!1,lspace:\"thickmathspace\",rspace:\"thickmathspace\",stretchy:!1,symmetric:!1,maxsize:\"infinity\",minsize:\"0em\",largeop:!1,movablelimits:!1,accent:!1,linebreak:\"auto\",lineleading:\"1ex\",linebreakstyle:\"before\",indentalign:\"auto\",indentshift:\"0\",indenttarget:\"\",indentalignfirst:\"indentalign\",indentshiftfirst:\"indentshift\",indentalignlast:\"indentalign\",indentshiftlast:\"indentshift\"}),e.RANGES=s.RANGES,e.MMLSPACING=s.MMLSPACING,e.OPTABLE=s.OPTABLE,e}(a.AbstractMmlTokenNode);e.MmlMo=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.px=e.emRounded=e.em=e.percent=e.length2em=e.MATHSPACE=e.RELUNITS=e.UNITS=e.BIGDIMEN=void 0,e.BIGDIMEN=1e6,e.UNITS={px:1,in:96,cm:96/2.54,mm:96/25.4},e.RELUNITS={em:1,ex:.431,pt:.1,pc:1.2,mu:1/18},e.MATHSPACE={veryverythinmathspace:1/18,verythinmathspace:2/18,thinmathspace:3/18,mediummathspace:4/18,thickmathspace:5/18,verythickmathspace:6/18,veryverythickmathspace:7/18,negativeveryverythinmathspace:-1/18,negativeverythinmathspace:-2/18,negativethinmathspace:-3/18,negativemediummathspace:-4/18,negativethickmathspace:-5/18,negativeverythickmathspace:-6/18,negativeveryverythickmathspace:-7/18,thin:.04,medium:.06,thick:.1,normal:1,big:2,small:1/Math.sqrt(2),infinity:e.BIGDIMEN},e.length2em=function(t,Q,r,T){if(void 0===Q&&(Q=0),void 0===r&&(r=1),void 0===T&&(T=16),\"string\"!=typeof t&&(t=String(t)),\"\"===t||null==t)return Q;if(e.MATHSPACE[t])return e.MATHSPACE[t];var n=t.match(/^\\s*([-+]?(?:\\.\\d+|\\d+(?:\\.\\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/);if(!n)return Q;var o=parseFloat(n[1]||\"1\"),i=n[2];return e.UNITS.hasOwnProperty(i)?o*e.UNITS[i]/T/r:e.RELUNITS.hasOwnProperty(i)?o*e.RELUNITS[i]:\"%\"===i?o/100*Q:o*Q},e.percent=function(t){return(100*t).toFixed(1).replace(/\\.?0+$/,\"\")+\"%\"},e.em=function(t){return Math.abs(t)<.001?\"0\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"},e.emRounded=function(t,e){return void 0===e&&(e=16),t=(Math.round(t*e)+.05)/e,Math.abs(t)<.001?\"0em\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"em\"},e.px=function(t,Q,r){return void 0===Q&&(Q=-e.BIGDIMEN),void 0===r&&(r=16),t*=r,Q&&t<Q&&(t=Q),Math.abs(t)<.1?\"0\":t.toFixed(1).replace(/\\.0$/,\"\")+\"px\"}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var n,o=Q(21),i=Q(30);!function(t){var e=new Map;t.register=function(t){e.set(t.name,t)},t.getMap=function(t){return e.get(t)}}(n=e.MapHandler||(e.MapHandler={}));var a=function(){function t(){this._configuration=new o.PrioritizedList,this._fallback=new i.FunctionList}return t.prototype.add=function(t,e,Q){var T,i;void 0===Q&&(Q=o.PrioritizedList.DEFAULTPRIORITY);try{for(var a=r(t.slice().reverse()),s=a.next();!s.done;s=a.next()){var l=s.value,c=n.getMap(l);if(!c)return void this.warn(\"Configuration \"+l+\" not found! Omitted.\");this._configuration.add(c,Q)}}catch(t){T={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(T)throw T.error}}e&&this._fallback.add(e,Q)},t.prototype.parse=function(t){var e,Q;try{for(var n=r(this._configuration),o=n.next();!o.done;o=n.next()){var i=o.value.item.parse(t);if(i)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}var a=T(t,2),s=a[0],l=a[1];this._fallback.toArray()[0].item(s,l)},t.prototype.lookup=function(t){var e=this.applicable(t);return e?e.lookup(t):null},t.prototype.contains=function(t){return!!this.applicable(t)},t.prototype.toString=function(){var t,e,Q=[];try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;Q.push(o.name)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q.join(\", \")},t.prototype.applicable=function(t){var e,Q;try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;if(o.contains(t))return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.retrieve=function(t){var e,Q;try{for(var T=r(this._configuration),n=T.next();!n.done;n=T.next()){var o=n.value.item;if(o.name===t)return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.warn=function(t){console.log(\"TexParser Warning: \"+t)},t}();e.SubHandler=a;var s=function(){function t(){this.map=new Map}return t.prototype.add=function(t,e,Q){var T,n;void 0===Q&&(Q=o.PrioritizedList.DEFAULTPRIORITY);try{for(var i=r(Object.keys(t)),s=i.next();!s.done;s=i.next()){var l=s.value,c=this.get(l);c||(c=new a,this.set(l,c)),c.add(t[l],e[l],Q)}}catch(t){T={error:t}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}},t.prototype.set=function(t,e){this.map.set(t,e)},t.prototype.get=function(t){return this.map.get(t)},t.prototype.retrieve=function(t){var e,Q;try{for(var T=r(this.map.values()),n=T.next();!n.done;n=T.next()){var o=n.value.retrieve(t);if(o)return o}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},t.prototype.keys=function(){return this.map.keys()},t}();e.SubHandlers=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var r=Q(9),T=Q(8),n=Q(13),o=Q(12),i=Q(5),a=Q(26),s=Q(16),l=Q(0);e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(t,e,Q,T,n,o,i){var a=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\"),l=s.default.EqnArray(t,e,Q,T,n,o,i);return r.default.setArrayAlign(l,a)},e.AmsMethods.AlignAt=function(t,Q,T,n){var o,a,s=Q.getName(),l=\"\",c=[];if(n||(a=t.GetBrackets(\"\\\\begin{\"+s+\"}\")),(o=t.GetArgument(\"\\\\begin{\"+s+\"}\")).match(/[^0-9]/))throw new i.default(\"PositiveIntegerArg\",\"Argument to %1 must me a positive integer\",\"\\\\begin{\"+s+\"}\");for(var u=parseInt(o,10);u>0;)l+=\"rl\",c.push(\"0em 0em\"),u--;var p=c.join(\" \");if(n)return e.AmsMethods.EqnArray(t,Q,T,n,l,p);var h=e.AmsMethods.EqnArray(t,Q,T,n,l,p);return r.default.setArrayAlign(h,a)},e.AmsMethods.Multline=function(t,e,Q){t.Push(e),r.default.checkEqnEnv(t);var T=t.itemFactory.create(\"multline\",Q,t.stack);return T.arraydef={displaystyle:!0,rowspacing:\".5em\",columnwidth:\"100%\",width:t.options.multlineWidth,side:t.options.tagSide,minlabelspacing:t.options.tagIndent},T},e.NEW_OPS=\"ams-declare-ops\",e.AmsMethods.HandleDeclareOp=function(t,Q){var T=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",n=r.default.trimSpaces(t.GetArgument(Q));\"\\\\\"===n.charAt(0)&&(n=n.substr(1));var o=t.GetArgument(Q);o.match(/\\\\text/)||(o=o.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.configuration.handlers.retrieve(e.NEW_OPS).add(n,new a.Macro(n,e.AmsMethods.Macro,[\"\\\\mathop{\\\\rm \"+o+\"}\"+T]))},e.AmsMethods.HandleOperatorName=function(t,e){var Q=t.GetStar()?\"\":\"\\\\nolimits\\\\SkipLimits\",T=r.default.trimSpaces(t.GetArgument(e));T.match(/\\\\text/)||(T=T.replace(/\\*/g,\"\\\\text{*}\").replace(/-/g,\"\\\\text{-}\")),t.string=\"\\\\mathop{\\\\rm \"+T+\"}\"+Q+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.SkipLimits=function(t,e){var Q=t.GetNext(),r=t.i;\"\\\\\"===Q&&++t.i&&\"limits\"!==t.GetCS()&&(t.i=r)},e.AmsMethods.MultiIntegral=function(t,e,Q){var r=t.GetNext();if(\"\\\\\"===r){var T=t.i;r=t.GetArgument(e),t.i=T,\"\\\\limits\"===r&&(Q=\"\\\\idotsint\"===e?\"\\\\!\\\\!\\\\mathop{\\\\,\\\\,\"+Q+\"}\":\"\\\\!\\\\!\\\\!\\\\mathop{\\\\,\\\\,\\\\,\"+Q+\"}\")}t.string=Q+\" \"+t.string.slice(t.i),t.i=0},e.AmsMethods.xArrow=function(t,e,Q,n,i){var a={width:\"+\"+r.default.Em((n+i)/18),lspace:r.default.Em(n/18)},s=t.GetBrackets(e),c=t.ParseArg(e),u=t.create(\"token\",\"mo\",{stretchy:!0,texClass:l.TEXCLASS.REL},String.fromCodePoint(Q)),p=t.create(\"node\",\"munderover\",[u]),h=t.create(\"node\",\"mpadded\",[c],a);if(T.default.setAttribute(h,\"voffset\",\".15em\"),T.default.setChild(p,p.over,h),s){var f=new o.default(s,t.stack.env,t.configuration).mml();h=t.create(\"node\",\"mpadded\",[f],a),T.default.setAttribute(h,\"voffset\",\"-.24em\"),T.default.setChild(p,p.under,h)}T.default.setProperty(p,\"subsupOK\",!0),t.Push(p)},e.AmsMethods.HandleShove=function(t,e,Q){var r=t.stack.Top();if(\"multline\"!==r.kind)throw new i.default(\"CommandOnlyAllowedInEnv\",\"%1 only allowed in %2 environment\",t.currentCS,\"multline\");if(r.Size())throw new i.default(\"CommandAtTheBeginingOfLine\",\"%1 must come at the beginning of the line\",t.currentCS);r.setProperty(\"shove\",Q)},e.AmsMethods.CFrac=function(t,e){var Q=r.default.trimSpaces(t.GetBrackets(e,\"\")),a=t.GetArgument(e),s=t.GetArgument(e),l={l:n.TexConstant.Align.LEFT,r:n.TexConstant.Align.RIGHT,\"\":\"\"},c=new o.default(\"\\\\strut\\\\textstyle{\"+a+\"}\",t.stack.env,t.configuration).mml(),u=new o.default(\"\\\\strut\\\\textstyle{\"+s+\"}\",t.stack.env,t.configuration).mml(),p=t.create(\"node\",\"mfrac\",[c,u]);if(null==(Q=l[Q]))throw new i.default(\"IllegalAlign\",\"Illegal alignment specified in %1\",t.currentCS);Q&&T.default.setProperties(p,{numalign:Q,denomalign:Q}),t.Push(p)},e.AmsMethods.Genfrac=function(t,e,Q,n,o,a){null==Q&&(Q=t.GetDelimiterArg(e)),null==n&&(n=t.GetDelimiterArg(e)),null==o&&(o=t.GetArgument(e)),null==a&&(a=r.default.trimSpaces(t.GetArgument(e)));var s=t.ParseArg(e),l=t.ParseArg(e),c=t.create(\"node\",\"mfrac\",[s,l]);if(\"\"!==o&&T.default.setAttribute(c,\"linethickness\",o),(Q||n)&&(T.default.setProperty(c,\"withDelims\",!0),c=r.default.fixedFence(t.configuration,Q,c,n)),\"\"!==a){var u=parseInt(a,10),p=[\"D\",\"T\",\"S\",\"SS\"][u];if(null==p)throw new i.default(\"BadMathStyleFor\",\"Bad math style for %1\",t.currentCS);c=t.create(\"node\",\"mstyle\",[c]),\"D\"===p?T.default.setProperties(c,{displaystyle:!0,scriptlevel:0}):T.default.setProperties(c,{displaystyle:!1,scriptlevel:u-1})}t.Push(c)},e.AmsMethods.HandleTag=function(t,e){if(!t.tags.currentTag.taggable&&t.tags.env)throw new i.default(\"CommandNotAllowedInEnv\",\"%1 not allowed in %2 environment\",t.currentCS,t.tags.env);if(t.tags.currentTag.tag)throw new i.default(\"MultipleCommand\",\"Multiple %1\",t.currentCS);var Q=t.GetStar(),T=r.default.trimSpaces(t.GetArgument(e));t.tags.tag(T,Q)},e.AmsMethods.HandleNoTag=s.default.HandleNoTag,e.AmsMethods.HandleRef=s.default.HandleRef,e.AmsMethods.Macro=s.default.Macro,e.AmsMethods.Accent=s.default.Accent,e.AmsMethods.Tilde=s.default.Tilde,e.AmsMethods.Array=s.default.Array,e.AmsMethods.Spacer=s.default.Spacer,e.AmsMethods.NamedOp=s.default.NamedOp,e.AmsMethods.EqnArray=s.default.EqnArray},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeXFont=void 0;var o=Q(6),i=Q(292),a=Q(220),s=Q(222),l=Q(293),c=Q(225),u=Q(227),p=Q(229),h=Q(231),f=Q(233),d=Q(235),L=Q(237),H=Q(239),m=Q(241),y=Q(243),v=Q(294),g=Q(295),b=Q(247),M=Q(249),V=Q(251),x=Q(253),O=Q(255),_=Q(257),S=Q(259),E=Q(261),C=Q(263),w=Q(265),A=function(t){function e(){var e,Q,r=t.call(this)||this,T=r.constructor;try{for(var o=n(Object.keys(T.variantCacheIds)),i=o.next();!i.done;i=o.next()){var a=i.value;r.variant[a].cacheID=\"TEX-\"+T.variantCacheIds[a]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}return r}return T(e,t),e.defaultDelimiters=w.delimiters,e.defaultChars={normal:d.normal,bold:s.bold,italic:p.italic,\"bold-italic\":a.boldItalic,\"double-struck\":l.doubleStruck,fraktur:u.fraktur,\"bold-fraktur\":c.frakturBold,script:g.script,\"bold-script\":v.scriptBold,\"sans-serif\":y.sansSerif,\"bold-sans-serif\":H.sansSerifBold,\"sans-serif-italic\":m.sansSerifItalic,\"sans-serif-bold-italic\":L.sansSerifBoldItalic,monospace:f.monospace,\"-smallop\":b.smallop,\"-largeop\":h.largeop,\"-size3\":S.texSize3,\"-size4\":E.texSize4,\"-tex-calligraphic\":V.texCalligraphic,\"-tex-bold-calligraphic\":M.texCalligraphicBold,\"-tex-mathit\":x.texMathit,\"-tex-oldstyle\":_.texOldstyle,\"-tex-bold-oldstyle\":O.texOldstyleBold,\"-tex-variant\":C.texVariant},e.variantCacheIds={normal:\"N\",bold:\"B\",italic:\"I\",\"bold-italic\":\"BI\",\"double-struck\":\"D\",fraktur:\"F\",\"bold-fraktur\":\"BF\",script:\"S\",\"bold-script\":\"BS\",\"sans-serif\":\"SS\",\"bold-sans-serif\":\"BSS\",\"sans-serif-italic\":\"SSI\",\"sans-serif-bold-italic\":\"SSBI\",monospace:\"M\",\"-smallop\":\"SO\",\"-largeop\":\"LO\",\"-size3\":\"S3\",\"-size4\":\"S4\",\"-tex-calligraphic\":\"C\",\"-tex-bold-calligraphic\":\"BC\",\"-tex-mathit\":\"MI\",\"-tex-oldstyle\":\"OS\",\"-tex-bold-oldstyle\":\"BOS\",\"-tex-variant\":\"V\"},e}(i.CommonTeXFontMixin(o.SVGFontData));e.TeXFont=A},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractItem=void 0;var o=Q(275),i=Q(17),a=Q(10),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,Q)||this;return n._content=r,n.disabled=!1,n.callbacks=[],n._id=T||r,n}return T(e,t),Object.defineProperty(e.prototype,\"content\",{get:function(){return this._content},set:function(t){this._content=t,this.generateHtml(),this.menu&&this.menu.generateHtml()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"id\",{get:function(){return this._id},enumerable:!1,configurable:!0}),e.prototype.press=function(){this.disabled||(this.executeAction(),this.executeCallbacks_())},e.prototype.executeAction=function(){},e.prototype.registerCallback=function(t){-1===this.callbacks.indexOf(t)&&this.callbacks.push(t)},e.prototype.unregisterCallback=function(t){var e=this.callbacks.indexOf(t);-1!==e&&this.callbacks.splice(e,1)},e.prototype.mousedown=function(t){this.press(),this.stop(t)},e.prototype.mouseover=function(t){this.focus(),this.stop(t)},e.prototype.mouseout=function(t){this.deactivate(),this.stop(t)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.setAttribute(\"aria-disabled\",\"false\"),e.textContent=this.content},e.prototype.activate=function(){this.disabled||this.html.classList.add(a.HtmlClasses.MENUACTIVE)},e.prototype.deactivate=function(){this.html.classList.remove(a.HtmlClasses.MENUACTIVE)},e.prototype.focus=function(){this.menu.focused=this,t.prototype.focus.call(this),this.activate()},e.prototype.unfocus=function(){this.deactivate(),t.prototype.unfocus.call(this)},e.prototype.escape=function(t){i.MenuUtil.close(this)},e.prototype.up=function(t){this.menu.up(t)},e.prototype.down=function(t){this.menu.down(t)},e.prototype.left=function(t){this.menu.left(t)},e.prototype.right=function(t){this.menu.right(t)},e.prototype.space=function(t){this.press()},e.prototype.disable=function(){this.disabled=!0;var t=this.html;t.classList.add(a.HtmlClasses.MENUDISABLED),t.setAttribute(\"aria-disabled\",\"true\")},e.prototype.enable=function(){this.disabled=!1;var t=this.html;t.classList.remove(a.HtmlClasses.MENUDISABLED),t.removeAttribute(\"aria-disabled\")},e.prototype.executeCallbacks_=function(){var t,e;try{for(var Q=n(this.callbacks),r=Q.next();!r.done;r=Q.next()){var T=r.value;try{T(this)}catch(t){i.MenuUtil.error(t,\"Callback for menu entry \"+this.id+\" failed.\")}}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e}(o.AbstractEntry);e.AbstractItem=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFactory=void 0;var o=function(){function t(t){var e,Q;void 0===t&&(t=null),this.defaultKind=\"unknown\",this.nodeMap=new Map,this.node={},null===t&&(t=this.constructor.defaultNodes);try{for(var T=r(Object.keys(t)),n=T.next();!n.done;n=T.next()){var o=n.value;this.setNodeClass(o,t[o])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}return t.prototype.create=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return(this.node[t]||this.node[this.defaultKind]).apply(void 0,n(e))},t.prototype.setNodeClass=function(t,e){this.nodeMap.set(t,e);var Q=this,r=this.nodeMap.get(t);this.node[t]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return new(r.bind.apply(r,n([void 0,Q],t)))}},t.prototype.getNodeClass=function(t){return this.nodeMap.get(t)},t.prototype.deleteNodeClass=function(t){this.nodeMap.delete(t),delete this.node[t]},t.prototype.nodeIsKind=function(t,e){return t instanceof this.getNodeClass(e)},t.prototype.getKinds=function(){return Array.from(this.nodeMap.keys())},t.defaultNodes={},t}();e.AbstractFactory=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMi=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mi\"},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(Q,r,T,n){void 0===Q&&(Q={}),void 0===r&&(r=!1),void 0===T&&(T=0),void 0===n&&(n=!1),t.prototype.setInheritedAttributes.call(this,Q,r,T,n),this.getText().match(e.singleCharacter)&&!Q.mathvariant&&this.attributes.setInherited(\"mathvariant\",\"italic\")},e.prototype.setTeXclass=function(t){this.getPrevClass(t);var Q=this.getText();return Q.length>1&&Q.match(e.operatorName)&&this.texClass===o.TEXCLASS.ORD&&(this.texClass=o.TEXCLASS.OP,this.setProperty(\"autoOP\",!0)),this},e.defaults=n({},o.AbstractMmlTokenNode.defaults),e.operatorName=/^[a-z][a-z0-9]*$/i,e.singleCharacter=/^[\\uD800-\\uDBFF]?.$/,e}(o.AbstractMmlTokenNode);e.MmlMi=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMsup=e.MmlMsub=e.MmlMsubsup=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msubsup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sub\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sup\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.childNodes;T[0].setInheritedAttributes(t,e,Q,r),T[1].setInheritedAttributes(t,!1,Q+1,r||1===this.sub),T[2]&&T[2].setInheritedAttributes(t,!1,Q+1,r||2===this.sub)},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{subscriptshift:\"\",superscriptshift:\"\"}),e}(o.AbstractMmlBaseNode);e.MmlMsubsup=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msub\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMsub=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sup\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"sub\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMsup=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.retryAfter=e.handleRetriesFor=void 0,e.handleRetriesFor=function(t){return new Promise((function e(Q,r){try{Q(t())}catch(t){t.retry&&t.retry instanceof Promise?t.retry.then((function(){return e(Q,r)})).catch((function(t){return r(t)})):t.restart&&t.restart.isCallback?MathJax.Callback.After((function(){return e(Q,r)}),t.restart):r(t)}}))},e.retryAfter=function(t){var e=new Error(\"MathJax retry\");throw e.retry=t,e}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeFactory=void 0;var n=Q(8),o=function(){function t(){this.mmlFactory=null,this.factory={node:t.createNode,token:t.createToken,text:t.createText,error:t.createError}}return t.createNode=function(t,e,Q,r,T){void 0===Q&&(Q=[]),void 0===r&&(r={});var o=t.mmlFactory.create(e),i=o.arity;if(i===1/0||-1===i)1===Q.length&&Q[0].isInferred?o.setChildren(n.default.getChildren(Q[0])):o.setChildren(Q);else{for(var a=[],s=0,l=void 0;l=Q[s];s++)if(l.isInferred){var c=t.mmlFactory.create(\"mrow\",{},n.default.getChildren(l));n.default.copyAttributes(l,c),a.push(c)}else a.push(l);o.setChildren(a)}return T&&o.appendChild(T),n.default.setProperties(o,r),o},t.createToken=function(t,e,Q,r){void 0===Q&&(Q={}),void 0===r&&(r=\"\");var T=t.create(\"text\",r);return t.create(\"node\",e,[],Q,T)},t.createText=function(t,e){return null==e?null:t.mmlFactory.create(\"text\").setText(e)},t.createError=function(t,e){var Q=t.create(\"text\",e),r=t.create(\"node\",\"mtext\",[],{},Q);return t.create(\"node\",\"merror\",[r],{\"data-mjx-error\":e})},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.set=function(t,e){this.factory[t]=e},t.prototype.setCreators=function(t){for(var e in t)this.set(e,t[e])},t.prototype.create=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=this.factory[t]||this.factory.node,n=r.apply(void 0,T([this,e[0]],e.slice(1)));return\"node\"===t&&this.configuration.addNode(e[0],n),n},t.prototype.get=function(t){return this.factory[t]},t}();e.NodeFactory=o},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseConfiguration=e.BaseTags=e.Other=void 0;var o=Q(2),i=Q(33),a=Q(5),s=Q(8),l=Q(3),c=Q(27),u=Q(20);function p(t,e){var Q=t.stack.env.font?{mathvariant:t.stack.env.font}:{},r=i.MapHandler.getMap(\"remap\").lookup(e),T=t.create(\"token\",\"mo\",Q,r?r.char:e);s.default.setProperty(T,\"fixStretchy\",!0),t.configuration.addNode(\"fixStretchy\",T),t.Push(T)}Q(281),new l.CharacterMap(\"remap\",null,{\"-\":\"\\u2212\",\"*\":\"\\u2217\",\"`\":\"\\u2018\"}),e.Other=p;var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(u.AbstractTags);e.BaseTags=h,e.BaseConfiguration=o.Configuration.create(\"base\",{handler:{character:[\"command\",\"special\",\"letter\",\"digit\"],delimiter:[\"delimiter\"],macro:[\"delimiter\",\"macros\",\"mathchar0mi\",\"mathchar0mo\",\"mathchar7\"],environment:[\"environment\"]},fallback:{character:p,macro:function(t,e){throw new a.default(\"UndefinedControlSequence\",\"Undefined control sequence %1\",\"\\\\\"+e)},environment:function(t,e){throw new a.default(\"UnknownEnv\",\"Unknown environment '%1'\",e)}},items:(T={},T[c.StartItem.prototype.kind]=c.StartItem,T[c.StopItem.prototype.kind]=c.StopItem,T[c.OpenItem.prototype.kind]=c.OpenItem,T[c.CloseItem.prototype.kind]=c.CloseItem,T[c.PrimeItem.prototype.kind]=c.PrimeItem,T[c.SubsupItem.prototype.kind]=c.SubsupItem,T[c.OverItem.prototype.kind]=c.OverItem,T[c.LeftItem.prototype.kind]=c.LeftItem,T[c.RightItem.prototype.kind]=c.RightItem,T[c.BeginItem.prototype.kind]=c.BeginItem,T[c.EndItem.prototype.kind]=c.EndItem,T[c.StyleItem.prototype.kind]=c.StyleItem,T[c.PositionItem.prototype.kind]=c.PositionItem,T[c.CellItem.prototype.kind]=c.CellItem,T[c.MmlItem.prototype.kind]=c.MmlItem,T[c.FnItem.prototype.kind]=c.FnItem,T[c.NotItem.prototype.kind]=c.NotItem,T[c.DotsItem.prototype.kind]=c.DotsItem,T[c.ArrayItem.prototype.kind]=c.ArrayItem,T[c.EqnArrayItem.prototype.kind]=c.EqnArrayItem,T[c.EquationItem.prototype.kind]=c.EquationItem,T),options:{maxMacros:1e3,baseURL:\"undefined\"==typeof document||0===document.getElementsByTagName(\"base\").length?\"\":String(document.location).replace(/#.*$/,\"\")},tags:{base:h}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var o=Q(8),i=Q(9),a=null,s=null,l=function(t){return s.root=t,a.outputJax.getBBox(s,a).w},c=function(t){for(var e=0;t&&!o.default.isType(t,\"mtable\");){if(o.default.isType(t,\"text\"))return null;o.default.isType(t,\"mrow\")?(t=t.childNodes[0],e=0):(t=t.parent.childNodes[e],e++)}return t},u=function(t,e){return t.childNodes[\"up\"===e?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},p=function(t,e){return t.childNodes[e].childNodes[0].childNodes[0]},h=function(t){return p(t,0)},f=function(t){return p(t,t.childNodes.length-1)},d=function(t,e){return t.childNodes[\"up\"===e?0:1].childNodes[0].childNodes[0].childNodes[0]},L=function(t){for(;t&&!o.default.isType(t,\"mtd\");)t=t.parent;return t},H=function(t){return t.parent.childNodes[t.parent.childNodes.indexOf(t)+1]},m=function(t){for(;t&&null==e.getProperty(t,\"inference\");)t=t.parent;return t},y=function(t,e,Q){void 0===Q&&(Q=!1);var r=0;if(t===e)return r;if(t!==e.parent){var T=t.childNodes,n=Q?T.length-1:0;o.default.isType(T[n],\"mspace\")&&(r+=l(T[n])),t=e.parent}if(t===e)return r;var i=t.childNodes,a=Q?i.length-1:0;return i[a]!==e&&(r+=l(i[a])),r},v=function(t,Q){void 0===Q&&(Q=!1);var r=c(t),T=d(r,e.getProperty(r,\"inferenceRule\"));return y(t,r,Q)+(l(r)-l(T))/2},g=function(t,Q,r,T){if(void 0===T&&(T=!1),e.getProperty(Q,\"inferenceRule\")||e.getProperty(Q,\"labelledRule\")){var n=t.nodeFactory.create(\"node\",\"mrow\");Q.parent.replaceChild(n,Q),n.setChildren([Q]),b(Q,n),Q=n}var a=T?Q.childNodes.length-1:0,s=Q.childNodes[a];o.default.isType(s,\"mspace\")?o.default.setAttribute(s,\"width\",i.default.Em(i.default.dimen2em(o.default.getAttribute(s,\"width\"))+r)):(s=t.nodeFactory.create(\"node\",\"mspace\",[],{width:i.default.Em(r)}),T?Q.appendChild(s):(s.parent=Q,Q.childNodes.unshift(s)))},b=function(t,Q){[\"inference\",\"proof\",\"maxAdjust\",\"labelledRule\"].forEach((function(r){var T=e.getProperty(t,r);null!=T&&(e.setProperty(Q,r,T),e.removeProperty(t,r))}))},M=function(t,Q,r,T,n){var o=t.nodeFactory.create(\"node\",\"mspace\",[],{width:i.default.Em(n)});if(\"left\"===T){var a=Q.childNodes[r].childNodes[0];o.parent=a,a.childNodes.unshift(o)}else Q.childNodes[r].appendChild(o);e.setProperty(Q.parent,\"sequentAdjust_\"+T,n)},V=function(t,Q){for(var r=Q.pop();Q.length;){var n=Q.pop(),o=T(x(r,n),2),i=o[0],a=o[1];e.getProperty(r.parent,\"axiom\")&&(M(t,i<0?r:n,0,\"left\",Math.abs(i)),M(t,a<0?r:n,2,\"right\",Math.abs(a))),r=n}},x=function(t,e){var Q=l(t.childNodes[2]),r=l(e.childNodes[2]);return[l(t.childNodes[0])-l(e.childNodes[0]),Q-r]};e.balanceRules=function(t){var Q,r;s=new t.document.options.MathItem(\"\",null,t.math.display);var T=t.data;!function(t){var Q=t.nodeLists.sequent;if(Q)for(var r=Q.length-1,T=void 0;T=Q[r];r--)if(e.getProperty(T,\"sequentProcessed\"))e.removeProperty(T,\"sequentProcessed\");else{var n=[],o=m(T);if(1===e.getProperty(o,\"inference\")){for(n.push(T);1===e.getProperty(o,\"inference\");){o=c(o);var i=h(u(o,e.getProperty(o,\"inferenceRule\"))),a=e.getProperty(i,\"inferenceRule\")?d(i,e.getProperty(i,\"inferenceRule\")):i;e.getProperty(a,\"sequent\")&&(T=a.childNodes[0],n.push(T),e.setProperty(T,\"sequentProcessed\",!0)),o=i}V(t,n)}}}(T);var o=T.nodeLists.inference||[];try{for(var i=n(o),a=i.next();!a.done;a=i.next()){var l=a.value,p=e.getProperty(l,\"proof\"),b=c(l),M=u(b,e.getProperty(b,\"inferenceRule\")),x=h(M);if(e.getProperty(x,\"inference\")){var O=v(x);if(O){g(T,x,-O);var _=y(l,b,!1);g(T,l,O-_)}}var S=f(M);if(null!=e.getProperty(S,\"inference\")){var E=v(S,!0);g(T,S,-E,!0);var C=y(l,b,!0),w=e.getProperty(l,\"maxAdjust\");null!=w&&(E=Math.max(E,w));var A=void 0;if(!p&&(A=L(l))){var P=H(A);if(P){var N=T.nodeFactory.create(\"node\",\"mspace\",[],{width:E-C+\"em\"});P.appendChild(N),l.removeProperty(\"maxAdjust\")}else{var k=m(A);k&&(E=e.getProperty(k,\"maxAdjust\")?Math.max(e.getProperty(k,\"maxAdjust\"),E):E,e.setProperty(k,\"maxAdjust\",E))}}else g(T,e.getProperty(l,\"proof\")?l:l.parent,E-C,!0)}}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}};var O=((r={}).bspr_maxAdjust=!0,r);e.setProperty=function(t,e,Q){o.default.setProperty(t,\"bspr_\"+e,Q)},e.getProperty=function(t,e){return o.default.getProperty(t,\"bspr_\"+e)},e.removeProperty=function(t,e){t.removeProperty(\"bspr_\"+e)},e.makeBsprAttributes=function(t){t.data.root.walkTree((function(t,e){var Q=[];t.getPropertyNames().forEach((function(e){!O[e]&&e.match(RegExp(\"^bspr_\"))&&Q.push(e+\":\"+t.getProperty(e))})),Q.length&&o.default.setAttribute(t,\"semantics\",Q.join(\";\"))}))},e.saveDocument=function(t){if(!(\"getBBox\"in(a=t.document).outputJax))throw Error(\"The bussproofs extension requires an output jax with a getBBox() method\")},e.clearDocument=function(t){a=null}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r,T=Q(9),n=Q(5),o=Q(26);!function(t){function e(t,e){return t.string.substr(t.i,e.length)!==e||e.match(/\\\\[a-z]+$/i)&&t.string.charAt(t.i+e.length).match(/[a-z]/i)?0:(t.i+=e.length,1)}t.disassembleSymbol=function(t,e){var Q=[t,e.char];if(e.attributes)for(var r in e.attributes)Q.push(r),Q.push(e.attributes[r]);return Q},t.assembleSymbol=function(t){for(var e=t[0],Q=t[1],r={},T=2;T<t.length;T+=2)r[t[T]]=t[T+1];return new o.Symbol(e,Q,r)},t.GetCSname=function(t,e){if(\"\\\\\"!==t.GetNext())throw new n.default(\"MissingCS\",\"%1 must be followed by a control sequence\",e);return T.default.trimSpaces(t.GetArgument(e)).substr(1)},t.GetTemplate=function(t,e,Q){for(var r=t.GetNext(),T=[],o=0,i=t.i;t.i<t.string.length;){if(\"#\"===(r=t.GetNext())){if(i!==t.i&&(T[o]=t.string.substr(i,t.i-i)),!(r=t.string.charAt(++t.i)).match(/^[1-9]$/))throw new n.default(\"CantUseHash2\",\"Illegal use of # in template for %1\",Q);if(parseInt(r)!==++o)throw new n.default(\"SequentialParam\",\"Parameters for %1 must be numbered sequentially\",Q);i=t.i+1}else if(\"{\"===r)return i!==t.i&&(T[o]=t.string.substr(i,t.i-i)),T.length>0?[o.toString()].concat(T):o;t.i++}throw new n.default(\"MissingReplacementString\",\"Missing replacement string for definition of %1\",e)},t.GetParameter=function(t,Q,r){if(null==r)return t.GetArgument(Q);for(var T=t.i,o=0,i=0;t.i<t.string.length;){var a=t.string.charAt(t.i);if(\"{\"===a)t.i===T&&(i=1),t.GetArgument(Q),o=t.i-T;else{if(e(t,r))return i&&(T++,o-=2),t.string.substr(T,o);if(\"\\\\\"===a){t.i++,o++,i=0;var s=t.string.substr(t.i).match(/[a-z]+|./i);s&&(t.i+=s[0].length,o=t.i-T)}else t.i++,o++,i=0}}throw new n.default(\"RunawayArgument\",\"Runaway argument for %1?\",Q)},t.MatchParam=e,t.addDelimiter=function(e,Q,r,T){e.configuration.handlers.retrieve(t.NEW_DELIMITER).add(Q,new o.Symbol(Q,r,T))},t.addMacro=function(e,Q,r,T,n){void 0===n&&(n=\"\"),e.configuration.handlers.retrieve(t.NEW_COMMAND).add(Q,new o.Macro(n||Q,r,T))},t.addEnvironment=function(e,Q,r,T){e.configuration.handlers.retrieve(t.NEW_ENVIRONMENT).add(Q,new o.Macro(Q,r,T))},t.NEW_DELIMITER=\"new-Delimiter\",t.NEW_COMMAND=\"new-Command\",t.NEW_ENVIRONMENT=\"new-Environment\"}(r||(r={})),e.default=r},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonArrow=e.CommonDiagonalArrow=e.CommonDiagonalStrike=e.CommonBorder2=e.CommonBorder=e.arrowBBox=e.diagonalArrowDef=e.arrowDef=e.arrowBBoxW=e.arrowBBoxHD=e.arrowHead=e.fullBorder=e.fullPadding=e.fullBBox=e.sideNames=e.sideIndex=e.SOLID=e.PADDING=e.THICKNESS=e.ARROWY=e.ARROWDX=e.ARROWX=void 0,e.ARROWX=4,e.ARROWDX=1,e.ARROWY=2,e.THICKNESS=.067,e.PADDING=.2,e.SOLID=e.THICKNESS+\"em solid\",e.sideIndex={top:0,right:1,bottom:2,left:3},e.sideNames=Object.keys(e.sideIndex),e.fullBBox=function(t){return new Array(4).fill(t.thickness+t.padding)},e.fullPadding=function(t){return new Array(4).fill(t.padding)},e.fullBorder=function(t){return new Array(4).fill(t.thickness)},e.arrowHead=function(t){return Math.max(t.padding,t.thickness*(t.arrowhead.x+t.arrowhead.dx+1))},e.arrowBBoxHD=function(t,e){if(t.childNodes[0]){var Q=t.childNodes[0].getBBox(),r=Q.h,T=Q.d;e[0]=e[2]=Math.max(0,t.thickness*t.arrowhead.y-(r+T)/2)}return e},e.arrowBBoxW=function(t,e){if(t.childNodes[0]){var Q=t.childNodes[0].getBBox().w;e[1]=e[3]=Math.max(0,t.thickness*t.arrowhead.y-Q/2)}return e},e.arrowDef={up:[-Math.PI/2,!1,!0,\"verticalstrike\"],down:[Math.PI/2,!1,!0,\"verticakstrike\"],right:[0,!1,!1,\"horizontalstrike\"],left:[Math.PI,!1,!1,\"horizontalstrike\"],updown:[Math.PI/2,!0,!0,\"verticalstrike uparrow downarrow\"],leftright:[0,!0,!1,\"horizontalstrike leftarrow rightarrow\"]},e.diagonalArrowDef={updiagonal:[-1,0,!1,\"updiagonalstrike northeastarrow\"],northeast:[-1,0,!1,\"updiagonalstrike updiagonalarrow\"],southeast:[1,0,!1,\"downdiagonalstrike\"],northwest:[1,Math.PI,!1,\"downdiagonalstrike\"],southwest:[-1,Math.PI,!1,\"updiagonalstrike\"],northeastsouthwest:[-1,0,!0,\"updiagonalstrike northeastarrow updiagonalarrow southwestarrow\"],northwestsoutheast:[1,0,!0,\"downdiagonalstrike northwestarrow southeastarrow\"]},e.arrowBBox={up:function(t){return e.arrowBBoxW(t,[e.arrowHead(t),0,t.padding,0])},down:function(t){return e.arrowBBoxW(t,[t.padding,0,e.arrowHead(t),0])},right:function(t){return e.arrowBBoxHD(t,[0,e.arrowHead(t),0,t.padding])},left:function(t){return e.arrowBBoxHD(t,[0,t.padding,0,e.arrowHead(t)])},updown:function(t){return e.arrowBBoxW(t,[e.arrowHead(t),0,e.arrowHead(t),0])},leftright:function(t){return e.arrowBBoxHD(t,[0,e.arrowHead(t),0,e.arrowHead(t)])}},e.CommonBorder=function(t){return function(Q){var r=e.sideIndex[Q];return[Q,{renderer:t,bbox:function(t){var e=[0,0,0,0];return e[r]=t.thickness+t.padding,e},border:function(t){var e=[0,0,0,0];return e[r]=t.thickness,e}}]}},e.CommonBorder2=function(t){return function(Q,r,T){var n=e.sideIndex[r],o=e.sideIndex[T];return[Q,{renderer:t,bbox:function(t){var e=t.thickness+t.padding,Q=[0,0,0,0];return Q[n]=Q[o]=e,Q},border:function(t){var e=[0,0,0,0];return e[n]=e[o]=t.thickness,e},remove:r+\" \"+T}]}},e.CommonDiagonalStrike=function(t){return function(Q){var r=\"mjx-\"+Q.charAt(0)+\"strike\";return[Q+\"diagonalstrike\",{renderer:t(r),bbox:e.fullBBox}]}},e.CommonDiagonalArrow=function(t){return function(Q){var T=r(e.diagonalArrowDef[Q],4),n=T[0],o=T[1],i=T[2];return[Q+\"arrow\",{renderer:function(e,Q){var r=e.arrowData(),T=r.a,a=r.W,s=e.arrow(a,n*(T-o),i);t(e,s)},bbox:function(t){var e=t.arrowData(),Q=e.a,T=e.x,n=e.y,o=r([t.arrowhead.x,t.arrowhead.y,t.arrowhead.dx],3),i=o[0],a=o[1],s=o[2],l=r(t.getArgMod(i+s,a),2),c=l[0],u=l[1],p=n+(c>Q?t.thickness*u*Math.sin(c-Q):0),h=T+(c>Math.PI/2-Q?t.thickness*u*Math.sin(c+Q-Math.PI/2):0);return[p,h,p,h]},remove:T[3]}]}},e.CommonArrow=function(t){return function(Q){var T=r(e.arrowDef[Q],4),n=T[0],o=T[1],i=T[2],a=T[3];return[Q+\"arrow\",{renderer:function(e,Q){var r=e.getBBox(),T=r.w,a=r.h,s=r.d,l=i?a+s:T,c=e.arrow(l,n,o);t(e,c)},bbox:e.arrowBBox[Q],remove:a}]}}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsubsupMixin=e.CommonMsupMixin=e.CommonMsubMixin=void 0,e.CommonMsubMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),e.prototype.getOffset=function(t,e){return[0,-this.getV(t,e)]},e}(t)},e.CommonMsupMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),e.prototype.getOffset=function(t,e){return[(this.baseCore.bbox.ic?.05*this.baseCore.bbox.ic+.05:0)*this.coreScale(),this.getU(t,e)]},e}(t)},e.CommonMsubsupMixin=function(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.UVQ=null,e}return T(e,t),Object.defineProperty(e.prototype,\"subChild\",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"supChild\",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.baseChild.getBBox(),r=this.subChild.getBBox(),T=this.supChild.getBBox();t.empty(),t.append(Q);var o=t.w,i=n(this.getUVQ(Q,r,T),2),a=i[0],s=i[1],l=this.baseCore.bbox.ic?this.coreIC()*this.coreScale():0;t.combine(r,o,s),t.combine(T,o+l,a),t.w+=this.font.params.scriptspace,t.clean(),this.setChildPWidths(e)},e.prototype.getUVQ=function(t,e,Q){if(this.UVQ)return this.UVQ;var r=this.font.params,T=3*r.rule_thickness,o=this.length2em(this.node.attributes.get(\"subscriptshift\"),r.sub2),i=this.isCharBase()?0:t.d*t.rscale+r.sub_drop*e.rscale,a=n([this.getU(t,Q),Math.max(i,o)],2),s=a[0],l=a[1],c=s-Q.d*Q.rscale-(e.h*e.rscale-l);if(c<T){l+=T-c;var u=.8*r.x_height-(s-Q.d*Q.rscale);u>0&&(s+=u,l-=u)}return s=Math.max(this.length2em(this.node.attributes.get(\"superscriptshift\"),s),s),l=Math.max(this.length2em(this.node.attributes.get(\"subscriptshift\"),l),l),c=s-Q.d*Q.rscale-(e.h*e.rscale-l),this.UVQ=[s,-l,c],this.UVQ},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMunderoverMixin=e.CommonMoverMixin=e.CommonMunderMixin=void 0,e.CommonMunderMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e,Q){if(void 0===Q&&(Q=!1),this.hasMovableLimits())t.prototype.computeBBox.call(this,e,Q);else{e.empty();var r=this.baseChild.getBBox(),T=this.script.getBBox(),o=this.getUnderKV(r,T)[1],i=this.getDelta(!0),a=n(this.getDeltaW([r,T],[0,-i]),2),s=a[0],l=a[1];e.combine(r,s,0),e.combine(T,l,o),e.d+=this.font.params.big_op_spacing5,e.ic=-this.baseCore.bbox.ic,e.clean(),this.setChildPWidths(Q)}},e}(t)},e.CommonMoverMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e){if(this.hasMovableLimits())t.prototype.computeBBox.call(this,e);else{e.empty();var Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=this.getOverKU(Q,r)[1],o=this.getDelta(),i=n(this.getDeltaW([Q,r],[0,o]),2),a=i[0],s=i[1];e.combine(Q,a,0),e.combine(r,s,T),e.h+=this.font.params.big_op_spacing5,e.ic=-this.baseCore.bbox.ic,e.clean()}},e}(t)},e.CommonMunderoverMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.stretchChildren(),r}return T(e,t),Object.defineProperty(e.prototype,\"underChild\",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"overChild\",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"subChild\",{get:function(){return this.underChild},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"supChild\",{get:function(){return this.overChild},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(e){if(this.hasMovableLimits())t.prototype.computeBBox.call(this,e);else{e.empty();var Q=this.overChild.getBBox(),r=this.baseChild.getBBox(),T=this.underChild.getBBox(),o=this.getOverKU(r,Q)[1],i=this.getUnderKV(r,T)[1],a=this.getDelta(),s=n(this.getDeltaW([r,T,Q],[0,-a,a]),3),l=s[0],c=s[1],u=s[2];e.combine(r,l,0),e.combine(Q,u,o),e.combine(T,c,i);var p=this.font.params.big_op_spacing5;e.h+=p,e.d+=p,e.ic=-this.baseCore.bbox.ic,e.clean()}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmsubsup=e.SVGmsup=e.SVGmsub=void 0;var o=Q(207),i=Q(46),a=Q(46),s=Q(46),l=Q(39),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=l.MmlMsub.prototype.kind,e.useIC=!1,e}(i.CommonMsubMixin(o.SVGscriptbase));e.SVGmsub=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=l.MmlMsup.prototype.kind,e.useIC=!0,e}(a.CommonMsupMixin(o.SVGscriptbase));e.SVGmsup=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=n([this.baseChild,this.supChild,this.subChild],3),r=Q[0],T=Q[1],o=Q[2],i=r.getBBox(),a=n(this.getUVQ(i,o.getBBox(),T.getBBox()),2),s=a[0],l=a[1],c=this.baseCore.bbox.ic?this.coreIC()*this.coreScale():0;r.toSVG(e),T.toSVG(e),o.toSVG(e),o.place(i.w*i.rscale,l),T.place(i.w*i.rscale+c,s)},e.kind=l.MmlMsubsup.prototype.kind,e.useIC=!1,e}(s.CommonMsubsupMixin(o.SVGscriptbase));e.SVGmsubsup=p},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLHandler=void 0;var n=Q(108),o=Q(122),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.documentClass=o.HTMLDocument,e}return T(e,t),e.prototype.handlesDocument=function(t){var e=this.adaptor;if(\"string\"==typeof t)try{t=e.parse(t,\"text/html\")}catch(t){}return t instanceof e.window.Document||t instanceof e.window.HTMLElement||t instanceof e.window.DocumentFragment},e.prototype.create=function(e,Q){var r=this.adaptor;if(\"string\"==typeof e)e=r.parse(e,\"text/html\");else if(e instanceof r.window.HTMLElement||e instanceof r.window.DocumentFragment){var T=e;e=r.parse(\"\",\"text/html\"),r.append(r.body(e),T)}return t.prototype.create.call(this,e,Q)},e}(n.AbstractHandler);e.HTMLHandler=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVG=e.XLINKNS=e.SVGNS=void 0;var i=Q(167),a=Q(191),s=Q(35),l=Q(266),c=Q(15),u=Q(32);e.SVGNS=\"http://www.w3.org/2000/svg\",e.XLINKNS=\"http://www.w3.org/1999/xlink\";var p=function(t){function Q(e){void 0===e&&(e=null);var Q=t.call(this,e,a.SVGWrapperFactory,s.TeXFont)||this;return Q.minwidth=0,Q.shift=0,Q.container=null,Q.svgStyles=null,Q.fontCache=new l.FontCache(Q),Q}return T(Q,t),Q.prototype.initialize=function(){\"global\"===this.options.fontCache&&this.fontCache.clearCache()},Q.prototype.clearFontCache=function(){this.fontCache.clearCache()},Q.prototype.setScale=function(t){1!==this.options.scale&&this.adaptor.setStyle(t,\"fontSize\",u.percent(this.options.scale))},Q.prototype.escaped=function(t,e){return this.setDocument(e),this.html(\"span\",{},[this.text(t.math)])},Q.prototype.styleSheet=function(e){if(this.svgStyles)return null;var r=this.svgStyles=t.prototype.styleSheet.call(this,e);return this.adaptor.setAttribute(r,\"id\",Q.STYLESHEETID),r},Q.prototype.pageElements=function(t){return\"global\"!==this.options.fontCache||this.findCache(t)?null:this.svg(\"svg\",{id:Q.FONTCACHEID,style:{display:\"none\"}},[this.fontCache.getCache()])},Q.prototype.findCache=function(t){for(var e=this.adaptor,r=e.tags(e.body(t.document),\"svg\"),T=r.length-1;T>=0;T--)if(this.adaptor.getAttribute(r[T],\"id\")===Q.FONTCACHEID)return!0;return!1},Q.prototype.processMath=function(t,e){var Q=this.container;this.container=e;var r=this.factory.wrap(t),T=o(this.createRoot(r),2),n=T[0],i=T[1];this.typesetSVG(r,n,i),this.container=Q},Q.prototype.createRoot=function(t){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=Q.pwidth,i=Math.max(r,.001),a=this.svg(\"g\",{stroke:\"currentColor\",fill:\"currentColor\",\"stroke-width\":0,transform:\"matrix(1 0 0 -1 0 0)\"}),s=this.adaptor,l=s.append(this.container,this.svg(\"svg\",{xmlns:e.SVGNS,width:this.ex(i),height:this.ex(T+n),role:\"img\",focusable:!1,style:{\"vertical-align\":this.ex(-n)},viewBox:[0,this.fixed(1e3*-T,1),this.fixed(1e3*i,1),this.fixed(1e3*(T+n),1)].join(\" \")},[a]));if(.001===i&&(s.setAttribute(l,\"preserveAspectRatio\",\"xMidYMid slice\"),r<0&&s.setStyle(this.container,\"margin-right\",this.ex(r))),o){s.setStyle(l,\"min-width\",this.ex(i)),s.setAttribute(l,\"width\",o),s.removeAttribute(l,\"viewBox\");var c=t.metrics.ex/(1e3*this.font.params.x_height);s.setAttribute(a,\"transform\",\"matrix(1 0 0 -1 0 0) scale(\"+this.fixed(c,6)+\") translate(0, \"+this.fixed(1e3*-T,1)+\")\")}return\"none\"!==this.options.fontCache&&s.setAttribute(l,\"xmlns:xlink\",e.XLINKNS),[l,a]},Q.prototype.typesetSVG=function(t,e,Q){var r=this.adaptor;if(this.minwidth=this.shift=0,\"local\"===this.options.fontCache&&(this.fontCache.clearCache(),this.fontCache.useLocalID(this.options.localID),r.insert(this.fontCache.getCache(),Q)),t.toSVG(Q),this.fontCache.clearLocalID(),this.minwidth)r.setStyle(e,\"minWidth\",this.ex(this.minwidth)),r.setStyle(this.container,\"minWidth\",this.ex(this.minwidth));else if(this.shift){var T=r.getAttribute(this.container,\"justify\")||\"center\";this.setIndent(e,T,this.shift)}},Q.prototype.setIndent=function(t,e,Q){\"center\"!==e&&\"left\"!==e||this.adaptor.setStyle(t,\"margin-left\",this.ex(Q)),\"center\"!==e&&\"right\"!==e||this.adaptor.setStyle(t,\"margin-right\",this.ex(-Q))},Q.prototype.ex=function(t){return t/=this.font.params.x_height,Math.abs(t)<.001?\"0\":t.toFixed(3).replace(/\\.?0+$/,\"\")+\"ex\"},Q.prototype.svg=function(t,Q,r){return void 0===Q&&(Q={}),void 0===r&&(r=[]),this.html(t,Q,r,e.SVGNS)},Q.prototype.unknownText=function(t,e){var Q=this.math.metrics,r=this.font.params.x_height/Q.ex*Q.em*1e3,T=this.svg(\"text\",{\"data-variant\":e,transform:\"matrix(1 0 0 -1 0 0)\",\"font-size\":this.fixed(r,1)+\"px\"},[this.text(t)]),n=this.adaptor;if(\"-explicitFont\"!==e){var i=c.unicodeChars(t);if(1!==i.length||i[0]<119808||i[0]>120831){var a=o(this.font.getCssFont(e),3),s=a[0],l=a[1],u=a[2];n.setAttribute(T,\"font-family\",s),l&&n.setAttribute(T,\"font-style\",\"italic\"),u&&n.setAttribute(T,\"font-weight\",\"bold\")}}return T},Q.prototype.measureTextNode=function(t){var e=this.adaptor;t=e.clone(t),e.removeAttribute(t,\"transform\");var Q=this.fixed(1e3*this.font.params.x_height,1),r=this.svg(\"svg\",{position:\"absolute\",visibility:\"hidden\",width:\"1ex\",height:\"1ex\",viewBox:[0,0,Q,Q].join(\" \")},[t]);e.append(e.body(e.document),r);var T=e.nodeSize(t,1e3,!0)[0];return e.remove(r),{w:T,h:.75,d:.2}},Q.NAME=\"SVG\",Q.OPTIONS=n(n({},i.CommonOutputJax.OPTIONS),{internalSpeechTitles:!0,titleID:0,fontCache:\"local\",localID:null}),Q.commonStyles={'mjx-container[jax=\"SVG\"]':{direction:\"ltr\"},'mjx-container[jax=\"SVG\"] > svg':{overflow:\"visible\"},'mjx-container[jax=\"SVG\"] > svg a':{fill:\"blue\",stroke:\"blue\"}},Q.FONTCACHEID=\"MJX-SVG-global-cache\",Q.STYLESHEETID=\"MJX-SVG-styles\",Q}(i.CommonOutputJax);e.SVG=p},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KEY=void 0,function(t){t[t.RETURN=13]=\"RETURN\",t[t.ESCAPE=27]=\"ESCAPE\",t[t.SPACE=32]=\"SPACE\",t[t.LEFT=37]=\"LEFT\",t[t.UP=38]=\"UP\",t[t.RIGHT=39]=\"RIGHT\",t[t.DOWN=40]=\"DOWN\"}(e.KEY||(e.KEY={}))},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractVariableItem=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;this.span||this.generateSpan(),e.appendChild(this.span),this.update()},e.prototype.register=function(){this.variable.register(this)},e.prototype.unregister=function(){this.variable.unregister(this)},e.prototype.update=function(){this.updateAria(),this.span&&this.updateSpan()},e}(Q(36).AbstractItem);e.AbstractVariableItem=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMathDocument=e.RenderList=void 0;var a=Q(7),s=Q(54),l=Q(55),c=Q(56),u=Q(14),p=Q(57),h=Q(117),f=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.create=function(t){var e,Q,r=new this;try{for(var T=n(Object.keys(t)),i=T.next();!i.done;i=T.next()){var a=i.value,s=o(this.action(a,t[a]),2),l=s[0],c=s[1];c&&r.add(l,c)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return r},e.action=function(t,e){var Q,r,T,n,i,a,s=!0,l=e[0];if(1===e.length||\"boolean\"==typeof e[1])2===e.length&&(s=e[1]),i=(Q=o(this.methodActions(t),2))[0],a=Q[1];else if(\"string\"==typeof e[1])if(\"string\"==typeof e[2]){4===e.length&&(s=e[3]);var c=o(e.slice(1),2),u=c[0],p=c[1];i=(r=o(this.methodActions(u,p),2))[0],a=r[1]}else 3===e.length&&(s=e[2]),i=(T=o(this.methodActions(e[1]),2))[0],a=T[1];else 4===e.length&&(s=e[3]),i=(n=o(e.slice(1),2))[0],a=n[1];return[{id:t,renderDoc:i,renderMath:a,convert:s},l]},e.methodActions=function(t,e){return void 0===e&&(e=t),[function(e){return t&&e[t](),!1},function(t,Q){return e&&t[e](Q),!1}]},e.prototype.renderDoc=function(t,e){var Q,r;void 0===e&&(e=u.STATE.UNPROCESSED);try{for(var T=n(this.items),o=T.next();!o.done;o=T.next()){var i=o.value;if(i.priority>=e&&i.item.renderDoc(t))return}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},e.prototype.renderMath=function(t,e,Q){var r,T;void 0===Q&&(Q=u.STATE.UNPROCESSED);try{for(var o=n(this.items),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.priority>=Q&&a.item.renderMath(t,e))return}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}},e.prototype.renderConvert=function(t,e,Q){var r,T;void 0===Q&&(Q=u.STATE.LAST);try{for(var o=n(this.items),i=o.next();!i.done;i=o.next()){var a=i.value;if(a.priority>Q)return;if(a.item.convert&&a.item.renderMath(t,e))return}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}},e.prototype.findID=function(t){var e,Q;try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(o.item.id===t)return o.item}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return null},e}(Q(21).PrioritizedList);e.RenderList=f;var d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.compile=function(t){return null},e}(s.AbstractInputJax),L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.typeset=function(t,e){return void 0===e&&(e=null),null},e.prototype.escaped=function(t,e){return null},e}(l.AbstractOutputJax),H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(c.AbstractMathList),m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(u.AbstractMathItem),y=function(){function t(e,Q,r){var T=this,n=this.constructor;this.document=e,this.options=a.userOptions(a.defaultOptions({},n.OPTIONS),r),this.math=new(this.options.MathList||H),this.renderActions=f.create(this.options.renderActions),this.processed=new t.ProcessBits,this.outputJax=this.options.OutputJax||new L;var o=this.options.InputJax||[new d];Array.isArray(o)||(o=[o]),this.inputJax=o,this.adaptor=Q,this.outputJax.setAdaptor(Q),this.inputJax.map((function(t){return t.setAdaptor(Q)})),this.mmlFactory=this.options.MmlFactory||new p.MmlFactory,this.inputJax.map((function(t){return t.setMmlFactory(T.mmlFactory)})),this.outputJax.initialize(),this.inputJax.map((function(t){return t.initialize()}))}return Object.defineProperty(t.prototype,\"kind\",{get:function(){return this.constructor.KIND},enumerable:!1,configurable:!0}),t.prototype.addRenderAction=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=o(f.action(t,e),2),T=r[0],n=r[1];this.renderActions.add(T,n)},t.prototype.removeRenderAction=function(t){var e=this.renderActions.findID(t);e&&this.renderActions.remove(e)},t.prototype.render=function(){return this.renderActions.renderDoc(this),this},t.prototype.rerender=function(t){return void 0===t&&(t=u.STATE.RERENDER),this.state(t-1),this.render(),this},t.prototype.convert=function(t,e){void 0===e&&(e={});var Q=a.userOptions({format:this.inputJax[0].name,display:!0,end:u.STATE.LAST,em:16,ex:8,containerWidth:null,lineWidth:1e6,scale:1,family:\"\"},e),r=Q.format,T=Q.display,n=Q.end,o=Q.ex,i=Q.em,s=Q.containerWidth,l=Q.lineWidth,c=Q.scale,p=Q.family;null===s&&(s=80*o);var h=this.inputJax.reduce((function(t,e){return e.name===r?e:t}),null),f=new this.options.MathItem(t,h,T);return f.start.node=this.adaptor.body(this.document),f.setMetrics(i,o,s,l,c),this.outputJax.options.mtextInheritFont&&(f.outputData.mtextFamily=p),this.outputJax.options.merrorInheritFont&&(f.outputData.merrorFamily=p),f.convert(this,n),f.typesetRoot||f.root},t.prototype.findMath=function(t){return void 0===t&&(t=null),this.processed.set(\"findMath\"),this},t.prototype.compile=function(){var t,e,Q,r;if(!this.processed.isSet(\"compile\")){var T=[];try{for(var o=n(this.math),i=o.next();!i.done;i=o.next()){var a=i.value;this.compileMath(a),void 0!==a.inputData.recompile&&T.push(a)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}try{for(var s=n(T),l=s.next();!l.done;l=s.next()){var c=(a=l.value).inputData.recompile;a.state(c.state),a.inputData.recompile=c,this.compileMath(a)}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(Q)throw Q.error}}this.processed.set(\"compile\")}return this},t.prototype.compileMath=function(t){try{t.compile(this)}catch(e){if(e.retry||e.restart)throw e;this.options.compileError(this,t,e),t.inputData.error=e}},t.prototype.compileError=function(t,e){t.root=this.mmlFactory.create(\"math\",null,[this.mmlFactory.create(\"merror\",{\"data-mjx-error\":e.message,title:e.message},[this.mmlFactory.create(\"mtext\",null,[this.mmlFactory.create(\"text\").setText(\"Math input error\")])])]),t.display&&t.root.attributes.set(\"display\",\"block\"),t.inputData.error=e.message},t.prototype.typeset=function(){var t,e;if(!this.processed.isSet(\"typeset\")){try{for(var Q=n(this.math),r=Q.next();!r.done;r=Q.next()){var T=r.value;try{T.typeset(this)}catch(t){if(t.retry||t.restart)throw t;this.options.typesetError(this,T,t),T.outputData.error=t}}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"typeset\")}return this},t.prototype.typesetError=function(t,e){t.typesetRoot=this.adaptor.node(\"mjx-container\",{class:\"MathJax mjx-output-error\",jax:this.outputJax.name},[this.adaptor.node(\"span\",{\"data-mjx-error\":e.message,title:e.message,style:{color:\"red\",\"background-color\":\"yellow\",\"line-height\":\"normal\"}},[this.adaptor.text(\"Math output error\")])]),t.display&&this.adaptor.setAttributes(t.typesetRoot,{style:{display:\"block\",margin:\"1em 0\",\"text-align\":\"center\"}}),t.outputData.error=e.message},t.prototype.getMetrics=function(){return this.processed.isSet(\"getMetrics\")||(this.outputJax.getMetrics(this),this.processed.set(\"getMetrics\")),this},t.prototype.updateDocument=function(){var t,e;if(!this.processed.isSet(\"updateDocument\")){try{for(var Q=n(this.math.reversed()),r=Q.next();!r.done;r=Q.next()){r.value.updateDocument(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"updateDocument\")}return this},t.prototype.removeFromDocument=function(t){return void 0===t&&(t=!1),this},t.prototype.state=function(t,e){var Q,r;void 0===e&&(e=!1);try{for(var T=n(this.math),o=T.next();!o.done;o=T.next()){o.value.state(t,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return t<u.STATE.INSERTED&&this.processed.clear(\"updateDocument\"),t<u.STATE.TYPESET&&(this.processed.clear(\"typeset\"),this.processed.clear(\"getMetrics\")),t<u.STATE.COMPILED&&this.processed.clear(\"compile\"),this},t.prototype.reset=function(){return this.processed.reset(),this},t.prototype.clear=function(){return this.reset(),this.math.clear(),this},t.prototype.concat=function(t){return this.math.merge(t),this},t.prototype.clearMathItemsWithin=function(t){var e;(e=this.math).remove.apply(e,i(this.getMathItemsWithin(t)))},t.prototype.getMathItemsWithin=function(t){var e,Q,r,T;Array.isArray(t)||(t=[t]);var o=this.adaptor,i=[],a=o.getElements(t,this.document);try{t:for(var s=n(this.math),l=s.next();!l.done;l=s.next()){var c=l.value;try{for(var u=(r=void 0,n(a)),p=u.next();!p.done;p=u.next()){var h=p.value;if(c.start.node&&o.contains(h,c.start.node)){i.push(c);continue t}}}catch(t){r={error:t}}finally{try{p&&!p.done&&(T=u.return)&&T.call(u)}finally{if(r)throw r.error}}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return i},t.KIND=\"MathDocument\",t.OPTIONS={OutputJax:null,InputJax:null,MmlFactory:null,MathList:H,MathItem:m,compileError:function(t,e,Q){t.compileError(e,Q)},typesetError:function(t,e,Q){t.typesetError(e,Q)},renderActions:a.expandable({find:[u.STATE.FINDMATH,\"findMath\",\"\",!1],compile:[u.STATE.COMPILED],metrics:[u.STATE.METRICS,\"getMetrics\",\"\",!1],typeset:[u.STATE.TYPESET],update:[u.STATE.INSERTED,\"updateDocument\",!1]})},t.ProcessBits=h.BitFieldClass(\"findMath\",\"compile\",\"getMetrics\",\"typeset\",\"updateDocument\"),t}();e.AbstractMathDocument=y},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractInputJax=void 0;var r=Q(7),T=Q(30),n=function(){function t(t){void 0===t&&(t={}),this.adaptor=null,this.mmlFactory=null;var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t),this.preFilters=new T.FunctionList,this.postFilters=new T.FunctionList}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.setAdaptor=function(t){this.adaptor=t},t.prototype.setMmlFactory=function(t){this.mmlFactory=t},t.prototype.initialize=function(){},Object.defineProperty(t.prototype,\"processStrings\",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.findMath=function(t,e){return[]},t.prototype.executeFilters=function(t,e,Q,r){var T={math:e,document:Q,data:r};return t.execute(T),T.data},t.NAME=\"generic\",t.OPTIONS={},t}();e.AbstractInputJax=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractOutputJax=void 0;var r=Q(7),T=Q(30),n=function(){function t(t){void 0===t&&(t={}),this.adaptor=null;var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t),this.postFilters=new T.FunctionList}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.setAdaptor=function(t){this.adaptor=t},t.prototype.initialize=function(){},t.prototype.getMetrics=function(t){},t.prototype.styleSheet=function(t){return null},t.prototype.pageElements=function(t){return null},t.prototype.executeFilters=function(t,e,Q,r){var T={math:e,document:Q,data:r};return t.execute(T),T.data},t.NAME=\"generic\",t.OPTIONS={},t}();e.AbstractOutputJax=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMathList=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.isBefore=function(t,e){return t.start.i<e.start.i||t.start.i===e.start.i&&t.start.n<e.start.n},e}(Q(109).LinkedList);e.AbstractMathList=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlFactory=void 0;var n=Q(110),o=Q(111),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"MML\",{get:function(){return this.node},enumerable:!1,configurable:!0}),e.defaultNodes=o.MML,e}(n.AbstractNodeFactory);e.MmlFactory=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEmptyNode=e.AbstractNode=void 0;var o=function(){function t(t,e,Q){var r,T;void 0===e&&(e={}),void 0===Q&&(Q=[]),this.parent=null,this.properties={},this._factory=null,this.childNodes=[],this._factory=t;try{for(var o=n(Object.keys(e)),i=o.next();!i.done;i=o.next()){var a=i.value;this.setProperty(a,e[a])}}catch(t){r={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(r)throw r.error}}Q.length&&this.setChildren(Q)}return Object.defineProperty(t.prototype,\"factory\",{get:function(){return this._factory},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"kind\",{get:function(){return\"unknown\"},enumerable:!1,configurable:!0}),t.prototype.setProperty=function(t,e){this.properties[t]=e},t.prototype.getProperty=function(t){return this.properties[t]},t.prototype.getPropertyNames=function(){return Object.keys(this.properties)},t.prototype.getAllProperties=function(){return this.properties},t.prototype.removeProperty=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q),o=T.next();!o.done;o=T.next()){var i=o.value;delete this.properties[i]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}},t.prototype.isKind=function(t){return this.factory.nodeIsKind(this,t)},t.prototype.setChildren=function(t){var e,Q;this.childNodes=[];try{for(var r=n(t),T=r.next();!T.done;T=r.next()){var o=T.value;this.appendChild(o)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},t.prototype.appendChild=function(t){return this.childNodes.push(t),t.parent=this,t},t.prototype.replaceChild=function(t,e){var Q=this.childIndex(e);return null!==Q&&(this.childNodes[Q]=t,t.parent=this),t},t.prototype.childIndex=function(t){var e=this.childNodes.indexOf(t);return-1===e?null:e},t.prototype.findNodes=function(t){var e=[];return this.walkTree((function(Q){Q.isKind(t)&&e.push(Q)})),e},t.prototype.walkTree=function(t,e){var Q,r;t(this,e);try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;i&&i.walkTree(t,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return e},t.prototype.toString=function(){return this.kind+\"(\"+this.childNodes.join(\",\")+\")\"},t}();e.AbstractNode=o;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.setChildren=function(t){},e.prototype.appendChild=function(t){return t},e.prototype.replaceChild=function(t,e){return e},e.prototype.childIndex=function(t){return null},e.prototype.walkTree=function(t,e){return t(this,e),e},e.prototype.toString=function(){return this.kind},e}(o);e.AbstractEmptyNode=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMath=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"math\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(e,Q,r,T){\"display\"===this.attributes.get(\"mode\")&&this.attributes.setInherited(\"display\",\"block\"),e=this.addInheritedAttributes(e,this.attributes.getAllAttributes()),Q=!!this.attributes.get(\"displaystyle\")||!this.attributes.get(\"displaystyle\")&&\"block\"===this.attributes.get(\"display\"),this.attributes.setInherited(\"displaystyle\",Q),r=this.attributes.get(\"scriptlevel\")||this.constructor.defaults.scriptlevel,t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{mathvariant:\"normal\",mathsize:\"normal\",mathcolor:\"\",mathbackground:\"transparent\",dir:\"ltr\",scriptlevel:0,displaystyle:!1,display:\"inline\",maxwidth:\"\",overflow:\"linebreak\",altimg:\"\",\"altimg-width\":\"\",\"altimg-height\":\"\",\"altimg-valign\":\"\",alttext:\"\",cdgroup:\"\",scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:\"8px\",infixlinebreakstyle:\"before\",lineleading:\"1ex\",linebreakmultchar:\"\\u2062\",indentshift:\"auto\",indentalign:\"auto\",indenttarget:\"\",indentalignfirst:\"indentalign\",indentshiftfirst:\"indentshift\",indentalignlast:\"indentalign\",indentshiftlast:\"indentshift\"}),e}(o.AbstractMmlLayoutNode);e.MmlMath=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMn=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mn\"},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlTokenNode.defaults),e}(o.AbstractMmlTokenNode);e.MmlMn=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtext=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtext\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlTokenNode.defaults),e}(o.AbstractMmlTokenNode);e.MmlMtext=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMspace=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mspace\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"hasNewline\",{get:function(){var t=this.attributes;return null==t.getExplicit(\"width\")&&null==t.getExplicit(\"height\")&&null==t.getExplicit(\"depth\")&&\"newline\"===t.get(\"linebreak\")},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{width:\"0em\",height:\"0ex\",depth:\"0ex\",linebreak:\"auto\"}),e}(o.AbstractMmlTokenNode);e.MmlMspace=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMs=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"ms\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{lquote:'\"',rquote:'\"'}),e}(o.AbstractMmlTokenNode);e.MmlMs=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlInferredMrow=e.MmlMrow=void 0;var i=Q(0),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._core=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mrow\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){var t,e;try{for(var Q=o(this.childNodes),r=Q.next();!r.done;r=Q.next()){if(!r.value.isSpacelike)return!1}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){var t,e,Q=!1,r=0;try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;if(i)if(i.isEmbellished){if(Q)return!1;Q=!0,this._core=r}else if(!i.isSpacelike)return!1;r++}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core]:this},e.prototype.coreMO=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core].coreMO():this},e.prototype.nonSpaceLength=function(){var t,e,Q=0;try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){var n=T.value;n&&!n.isSpacelike&&Q++}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.firstNonSpace=function(){var t,e;try{for(var Q=o(this.childNodes),r=Q.next();!r.done;r=Q.next()){var T=r.value;if(T&&!T.isSpacelike)return T}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}return null},e.prototype.lastNonSpace=function(){for(var t=this.childNodes.length;--t>=0;){var e=this.childNodes[t];if(e&&!e.isSpacelike)return e}return null},e.prototype.setTeXclass=function(t){var e,Q,r,T;if(null==this.getProperty(\"open\")&&null==this.getProperty(\"close\")||t&&null==t.getProperty(\"fnOP\")){try{for(var n=o(this.childNodes),a=n.next();!a.done;a=n.next()){t=a.value.setTeXclass(t)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=n.return)&&T.call(n)}finally{if(r)throw r.error}}this.childNodes[0]&&this.updateTeXclass(this.childNodes[0])}else{this.getPrevClass(t),t=null;try{for(var s=o(this.childNodes),l=s.next();!l.done;l=s.next()){t=l.value.setTeXclass(t)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}null==this.texClass&&(this.texClass=i.TEXCLASS.INNER)}return t},e.defaults=n({},i.AbstractMmlNode.defaults),e}(i.AbstractMmlNode);e.MmlMrow=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"inferredMrow\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isInferred\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return\"[\"+this.childNodes.join(\",\")+\"]\"},e.defaults=a.defaults,e}(a);e.MmlInferredMrow=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMfrac=void 0;var i=Q(0),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mfrac\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){(!e||Q>0)&&Q++,this.childNodes[0].setInheritedAttributes(t,!1,Q,r),this.childNodes[1].setInheritedAttributes(t,!1,Q,!0)},e.defaults=n(n({},i.AbstractMmlBaseNode.defaults),{linethickness:\"medium\",numalign:\"center\",denomalign:\"center\",bevelled:!1}),e}(i.AbstractMmlBaseNode);e.MmlMfrac=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMsqrt=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"msqrt\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return this.getPrevClass(t),this.childNodes[0].setTeXclass(null),this},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMsqrt=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMroot=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mroot\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,!0),this.childNodes[1].setInheritedAttributes(t,!1,Q+2,r)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMroot=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMerror=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"merror\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMerror=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMpadded=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mpadded\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{width:\"\",height:\"\",depth:\"\",lspace:0,voffset:0}),e}(o.AbstractMmlLayoutNode);e.MmlMpadded=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMphantom=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mphantom\"},enumerable:!1,configurable:!0}),e.defaults=n({},o.AbstractMmlLayoutNode.defaults),e}(o.AbstractMmlLayoutNode);e.MmlMphantom=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMfenced=void 0;var i=Q(0),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=i.TEXCLASS.INNER,e.separators=[],e.open=null,e.close=null,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mfenced\"},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){this.getPrevClass(t),this.open&&(t=this.open.setTeXclass(t)),this.childNodes[0]&&(t=this.childNodes[0].setTeXclass(t));for(var e=1,Q=this.childNodes.length;e<Q;e++)this.separators[e-1]&&(t=this.separators[e-1].setTeXclass(t)),this.childNodes[e]&&(t=this.childNodes[e].setTeXclass(t));return this.close&&(t=this.close.setTeXclass(t)),this.updateTeXclass(this.open),t},e.prototype.setChildInheritedAttributes=function(e,Q,r,T){var n,i;this.addFakeNodes();try{for(var a=o([this.open,this.close].concat(this.separators)),s=a.next();!s.done;s=a.next()){var l=s.value;l&&l.setInheritedAttributes(e,Q,r,T)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.prototype.addFakeNodes=function(){var t,e,Q=this.attributes.getList(\"open\",\"close\",\"separators\"),r=Q.open,T=Q.close,n=Q.separators;if(r=r.replace(/[ \\t\\n\\r]/g,\"\"),T=T.replace(/[ \\t\\n\\r]/g,\"\"),n=n.replace(/[ \\t\\n\\r]/g,\"\"),r&&(this.open=this.fakeNode(r,{fence:!0,form:\"prefix\"},i.TEXCLASS.OPEN)),n){for(;n.length<this.childNodes.length-1;)n+=n.charAt(n.length-1);var a=0;try{for(var s=o(this.childNodes.slice(1)),l=s.next();!l.done;l=s.next()){l.value&&this.separators.push(this.fakeNode(n.charAt(a++)))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}}T&&(this.close=this.fakeNode(T,{fence:!0,form:\"postfix\"},i.TEXCLASS.CLOSE))},e.prototype.fakeNode=function(t,e,Q){void 0===e&&(e={}),void 0===Q&&(Q=null);var r=this.factory.create(\"text\").setText(t),T=this.factory.create(\"mo\",e,[r]);return T.texClass=Q,T.parent=this,T},e.defaults=n(n({},i.AbstractMmlNode.defaults),{open:\"(\",close:\")\",separators:\",\"}),e}(i.AbstractMmlNode);e.MmlMfenced=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMenclose=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"menclose\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContininer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return t=this.childNodes[0].setTeXclass(t),this.updateTeXclass(this.childNodes[0]),t},e.defaults=n(n({},o.AbstractMmlNode.defaults),{notation:\"longdiv\"}),e}(o.AbstractMmlNode);e.MmlMenclose=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMaction=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"maction\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"selected\",{get:function(){var t=this.attributes.get(\"selection\"),e=Math.max(1,Math.min(this.childNodes.length,t))-1;return this.childNodes[e]||this.factory.create(\"mrow\")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isEmbellished\",{get:function(){return this.selected.isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return this.selected.isSpacelike},enumerable:!1,configurable:!0}),e.prototype.core=function(){return this.selected.core()},e.prototype.coreMO=function(){return this.selected.coreMO()},e.prototype.verifyAttributes=function(e){(t.prototype.verifyAttributes.call(this,e),\"toggle\"!==this.attributes.get(\"actiontype\")&&void 0!==this.attributes.getExplicit(\"selection\"))&&delete this.attributes.getAllAttributes().selection},e.prototype.setTeXclass=function(t){\"tooltip\"===this.attributes.get(\"actiontype\")&&this.childNodes[1]&&this.childNodes[1].setTeXclass(null);var e=this.selected;return t=e.setTeXclass(t),this.updateTeXclass(e),t},e.prototype.nextToggleSelection=function(){var t=Math.max(1,this.attributes.get(\"selection\")+1);t>this.childNodes.length&&(t=1),this.attributes.set(\"selection\",t)},e.defaults=n(n({},o.AbstractMmlNode.defaults),{actiontype:\"toggle\",selection:1}),e}(o.AbstractMmlNode);e.MmlMaction=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMover=e.MmlMunder=e.MmlMunderover=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"munderover\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"under\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"over\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.childNodes;T[0].setInheritedAttributes(t,e,Q,r||!!T[this.over]);var n=!(e||!T[0].coreMO().attributes.get(\"movablelimits\")),o=this.constructor.ACCENTS;T[1].setInheritedAttributes(t,!1,this.getScriptlevel(o[1],n,Q),r||1===this.under),this.setInheritedAccent(1,o[1],e,Q,r,n),T[2]&&(T[2].setInheritedAttributes(t,!1,this.getScriptlevel(o[2],n,Q),r||2===this.under),this.setInheritedAccent(2,o[2],e,Q,r,n))},e.prototype.getScriptlevel=function(t,e,Q){return!e&&this.attributes.get(t)||Q++,Q},e.prototype.setInheritedAccent=function(t,e,Q,r,T,n){var o=this.childNodes[t];if(null==this.attributes.getExplicit(e)&&o.isEmbellished){var i=o.coreMO().attributes.get(\"accent\");this.attributes.setInherited(e,i),i!==this.attributes.getDefault(e)&&o.setInheritedAttributes({},Q,this.getScriptlevel(e,n,r),T)}},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{accent:!1,accentunder:!1,align:\"center\"}),e.ACCENTS=[\"\",\"accentunder\",\"accent\"],e}(o.AbstractMmlBaseNode);e.MmlMunderover=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"munder\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e}(i);e.MmlMunder=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mover\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"over\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"under\",{get:function(){return 2},enumerable:!1,configurable:!0}),e.defaults=n({},i.defaults),e.ACCENTS=[\"\",\"accent\",\"accentunder\"],e}(i);e.MmlMover=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlNone=e.MmlMprescripts=e.MmlMmultiscripts=void 0;var o=Q(0),i=Q(39),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mmultiscripts\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){this.childNodes[0].setInheritedAttributes(t,e,Q,r);for(var T=!1,n=1,o=0;n<this.childNodes.length;n++){var i=this.childNodes[n];if(i.isKind(\"mprescripts\")){if(!T&&(T=!0,n%2==0)){var a=this.factory.create(\"mrow\");this.childNodes.splice(n,0,a),a.parent=this,n++}}else{var s=r||o%2==0;i.setInheritedAttributes(t,!1,Q+1,s),o++}}this.childNodes.length%2==(T?1:0)&&(this.appendChild(this.factory.create(\"mrow\")),this.childNodes[this.childNodes.length-1].setInheritedAttributes(t,!1,Q+1,r))},e.prototype.verifyChildren=function(e){for(var Q=!1,r=e.fixMmultiscripts,T=0;T<this.childNodes.length;T++){var n=this.childNodes[T];n.isKind(\"mprescripts\")&&(Q?n.mError(n.kind+\" can only appear once in \"+this.kind,e,!0):(Q=!0,T%2!=0||r||this.mError(\"There must be an equal number of prescripts of each type\",e)))}this.childNodes.length%2!=(Q?1:0)||r||this.mError(\"There must be an equal number of scripts of each type\",e),t.prototype.verifyChildren.call(this,e)},e.defaults=n({},i.MmlMsubsup.defaults),e}(i.MmlMsubsup);e.MmlMmultiscripts=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mprescripts\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),e.prototype.verifyTree=function(e){t.prototype.verifyTree.call(this,e),this.parent&&!this.parent.isKind(\"mmultiscripts\")&&this.mError(this.kind+\" must be a child of mmultiscripts\",e,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlMprescripts=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"none\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),e.prototype.verifyTree=function(e){t.prototype.verifyTree.call(this,e),this.parent&&!this.parent.isKind(\"mmultiscripts\")&&this.mError(this.kind+\" must be a child of mmultiscripts\",e,!0)},e.defaults=n({},o.AbstractMmlNode.defaults),e}(o.AbstractMmlNode);e.MmlNone=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtable=void 0;var i=Q(0),a=Q(15),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.properties={useHeight:1},e.texClass=i.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtable\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(e,Q,r,T){var n,a;try{for(var s=o(i.indentAttributes),l=s.next();!l.done;l=s.next()){var c=l.value;e[c]&&this.attributes.setInherited(c,e[c][1]),void 0!==this.attributes.getExplicit(c)&&delete this.attributes.getAllAttributes()[c]}}catch(t){n={error:t}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(n)throw n.error}}t.prototype.setInheritedAttributes.call(this,e,Q,r,T)},e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n,i,s;try{for(var l=o(this.childNodes),c=l.next();!c.done;c=l.next()){(f=c.value).isKind(\"mtr\")||this.replaceChild(this.factory.create(\"mtr\"),f).appendChild(f)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}e=!(!this.attributes.getExplicit(\"displaystyle\")&&!this.attributes.getDefault(\"displaystyle\")),t=this.addInheritedAttributes(t,{columnalign:this.attributes.get(\"columnalign\"),rowalign:\"center\"});var u=a.split(this.attributes.get(\"rowalign\"));try{for(var p=o(this.childNodes),h=p.next();!h.done;h=p.next()){var f=h.value;t.rowalign[1]=u.shift()||t.rowalign[1],f.setInheritedAttributes(t,e,Q,r)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(s=p.return)&&s.call(p)}finally{if(i)throw i.error}}},e.prototype.verifyChildren=function(e){var Q,r;if(!e.fixMtables)try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){n.value.isKind(\"mtr\")||this.mError(\"Children of \"+this.kind+\" must be mtr or mlabeledtr\",e)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.prototype.verifyChildren.call(this,e)},e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.defaults=n(n({},i.AbstractMmlNode.defaults),{align:\"axis\",rowalign:\"baseline\",columnalign:\"center\",groupalign:\"{left}\",alignmentscope:!0,columnwidth:\"auto\",width:\"auto\",rowspacing:\"1ex\",columnspacing:\".8em\",rowlines:\"none\",columnlines:\"none\",frame:\"none\",framespacing:\"0.4em 0.5ex\",equalrows:!1,equalcolumns:!1,displaystyle:!1,side:\"right\",minlabelspacing:\"0.8em\"}),e}(i.AbstractMmlNode);e.MmlMtable=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMlabeledtr=e.MmlMtr=void 0;var i=Q(0),a=Q(24),s=Q(15),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtr\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T,n,i,a;try{for(var l=o(this.childNodes),c=l.next();!c.done;c=l.next()){(f=c.value).isKind(\"mtd\")||this.replaceChild(this.factory.create(\"mtd\"),f).appendChild(f)}}catch(t){T={error:t}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(T)throw T.error}}var u=s.split(this.attributes.get(\"columnalign\"));1===this.arity&&u.unshift(this.parent.attributes.get(\"side\")),t=this.addInheritedAttributes(t,{rowalign:this.attributes.get(\"rowalign\"),columnalign:\"center\"});try{for(var p=o(this.childNodes),h=p.next();!h.done;h=p.next()){var f=h.value;t.columnalign[1]=u.shift()||t.columnalign[1],f.setInheritedAttributes(t,e,Q,r)}}catch(t){i={error:t}}finally{try{h&&!h.done&&(a=p.return)&&a.call(p)}finally{if(i)throw i.error}}},e.prototype.verifyChildren=function(e){var Q,r;if(!this.parent||this.parent.isKind(\"mtable\")){if(!e.fixMtables)try{for(var T=o(this.childNodes),n=T.next();!n.done;n=T.next()){var i=n.value;if(!i.isKind(\"mtd\"))this.replaceChild(this.factory.create(\"mtr\"),i).mError(\"Children of \"+this.kind+\" must be mtd\",e,!0)}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.prototype.verifyChildren.call(this,e)}else this.mError(this.kind+\" can only be a child of an mtable\",e,!0)},e.prototype.setTeXclass=function(t){var e,Q;this.getPrevClass(t);try{for(var r=o(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.setTeXclass(null)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this},e.defaults=n(n({},i.AbstractMmlNode.defaults),{rowalign:a.INHERIT,columnalign:a.INHERIT,groupalign:a.INHERIT}),e}(i.AbstractMmlNode);e.MmlMtr=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mlabeledtr\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),e}(l);e.MmlMlabeledtr=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMtd=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mtd\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"linebreakContainer\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.verifyChildren=function(e){!this.parent||this.parent.isKind(\"mtr\")?t.prototype.verifyChildren.call(this,e):this.mError(this.kind+\" can only be a child of an mtr or mlabeledtr\",e,!0)},e.prototype.setTeXclass=function(t){return this.getPrevClass(t),this.childNodes[0].setTeXclass(null),this},e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{rowspan:1,columnspan:1,rowalign:i.INHERIT,columnalign:i.INHERIT,groupalign:i.INHERIT}),e}(o.AbstractMmlBaseNode);e.MmlMtd=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMglyph=void 0;var o=Q(0),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mglyph\"},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlTokenNode.defaults),{alt:\"\",src:\"\",width:\"auto\",height:\"auto\",valign:\"0em\"}),e}(o.AbstractMmlTokenNode);e.MmlMglyph=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlAnnotation=e.MmlAnnotationXML=e.MmlSemantics=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"semantics\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlBaseNode.defaults),{definitionUrl:null,encoding:null}),e}(o.AbstractMmlBaseNode);e.MmlSemantics=i;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"annotation-xml\"},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(){},e.defaults=n(n({},o.AbstractMmlNode.defaults),{definitionUrl:null,encoding:null,cd:\"mathmlkeys\",name:\"\",src:null}),e}(o.AbstractMmlNode);e.MmlAnnotationXML=a;var s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.properties={isChars:!0},e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"annotation\"},enumerable:!1,configurable:!0}),e.defaults=n({},a.defaults),e}(a);e.MmlAnnotation=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeXAtom=void 0;var o=Q(0),i=Q(31),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.texClass=o.TEXCLASS.ORD,e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"TeXAtom\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setTeXclass=function(t){return this.childNodes[0].setTeXclass(null),this.adjustTeXclass(t)},e.prototype.adjustTeXclass=function(t){return t},e.defaults=n({},o.AbstractMmlBaseNode.defaults),e}(o.AbstractMmlBaseNode);e.TeXAtom=a,a.prototype.adjustTeXclass=i.MmlMo.prototype.adjustTeXclass},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=void 0;var n=Q(57),o=function(t){function e(e){void 0===e&&(e=null);return e||(e=new n.MmlFactory),t.call(this,e)||this}return T(e,t),e.prototype.visitTextNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q]},e.prototype.visitXMLNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q]},e}(Q(119).AbstractVisitor);e.MmlVisitor=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SerializedMmlVisitor=e.toEntity=e.DATAMJX=void 0;var i=Q(82),a=Q(0),s=Q(38);e.DATAMJX=\"data-mjx-\",e.toEntity=function(t){return\"&#x\"+t.codePointAt(0).toString(16).toUpperCase()+\";\"};var l=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Q.prototype.visitTree=function(t){return this.visitNode(t,\"\")},Q.prototype.visitTextNode=function(t,e){return this.quoteHTML(t.getText())},Q.prototype.visitXMLNode=function(t,e){return e+t.getSerializedXML()},Q.prototype.visitInferredMrowNode=function(t,e){var Q,r,T=[];try{for(var o=n(t.childNodes),i=o.next();!i.done;i=o.next()){var a=i.value;T.push(this.visitNode(a,e))}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}return T.join(\"\\n\")},Q.prototype.visitTeXAtomNode=function(t,e){var Q=this.childNodeMml(t,e+\"  \",\"\\n\");return e+\"<mrow\"+this.getAttributes(t)+\">\"+(Q.match(/\\S/)?\"\\n\"+Q+e:\"\")+\"</mrow>\"},Q.prototype.visitAnnotationNode=function(t,e){return e+\"<annotation\"+this.getAttributes(t)+\">\"+this.childNodeMml(t,\"\",\"\")+\"</annotation>\"},Q.prototype.visitDefault=function(t,e){var Q=t.kind,r=o(t.isToken||0===t.childNodes.length?[\"\",\"\"]:[\"\\n\",e],2),T=r[0],n=r[1],i=this.childNodeMml(t,e+\"  \",T);return e+\"<\"+Q+this.getAttributes(t)+\">\"+(i.match(/\\S/)?T+i+n:\"\")+\"</\"+Q+\">\"},Q.prototype.childNodeMml=function(t,e,Q){var r,T,o=\"\";try{for(var i=n(t.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value;o+=this.visitNode(s,e)+Q}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o},Q.prototype.getAttributes=function(t){var e,Q,r=[],T=this.constructor.defaultAttributes[t.kind]||{},o=Object.assign({},T,this.getDataAttributes(t),t.attributes.getAllAttributes()),i=this.constructor.variants;o.hasOwnProperty(\"mathvariant\")&&i.hasOwnProperty(o.mathvariant)&&(o.mathvariant=i[o.mathvariant]);try{for(var a=n(Object.keys(o)),s=a.next();!s.done;s=a.next()){var l=s.value,c=String(o[l]);void 0!==c&&r.push(l+'=\"'+this.quoteHTML(c)+'\"')}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}return r.length?\" \"+r.join(\" \"):\"\"},Q.prototype.getDataAttributes=function(t){var e={},Q=t.attributes.getExplicit(\"mathvariant\"),r=this.constructor.variants;Q&&r.hasOwnProperty(Q)&&this.setDataAttribute(e,\"variant\",Q),t.getProperty(\"variantForm\")&&this.setDataAttribute(e,\"alternate\",\"1\");var T=t.getProperty(\"texClass\");if(void 0!==T){var n=!0;if(T===a.TEXCLASS.OP&&t.isKind(\"mi\")){var o=t.getText();n=!(o.length>1&&o.match(s.MmlMi.operatorName))}n&&this.setDataAttribute(e,\"texclass\",T<0?\"NONE\":a.TEXCLASSNAMES[T])}return e},Q.prototype.setDataAttribute=function(t,Q,r){t[e.DATAMJX+Q]=r},Q.prototype.quoteHTML=function(t){return t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\\\"/g,\"&quot;\").replace(/[\\uD800-\\uDBFF]./g,e.toEntity).replace(/[\\u0080-\\uD7FF\\uE000-\\uFFFF]/g,e.toEntity)},Q.variants={\"-tex-calligraphic\":\"script\",\"-tex-calligraphic-bold\":\"bold-script\",\"-tex-oldstyle\":\"normal\",\"-tex-oldstyle-bold\":\"bold\",\"-tex-mathit\":\"italic\"},Q.defaultAttributes={math:{xmlns:\"http://www.w3.org/1998/Math/MathML\"}},Q}(i.MmlVisitor);e.SerializedMmlVisitor=l},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Styles=void 0;var o=[\"top\",\"right\",\"bottom\",\"left\"],i=[\"width\",\"style\",\"color\"];function a(t){for(var e=t.split(/((?:'[^']*'|\"[^\"]*\"|,[\\s\\n]|[^\\s\\n])*)/g),Q=[];e.length>1;)e.shift(),Q.push(e.shift());return Q}function s(t){var e,Q,T=a(this.styles[t]);0===T.length&&T.push(\"\"),1===T.length&&T.push(T[0]),2===T.length&&T.push(T[0]),3===T.length&&T.push(T[1]);try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value;this.setStyle(this.childName(t,i),T.shift())}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}}function l(t){var e,Q,T=y.connect[t].children,n=[];try{for(var o=r(T),i=o.next();!i.done;i=o.next()){var a=i.value,s=this.styles[t+\"-\"+a];if(!s)return void delete this.styles[t];n.push(s)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}n[3]===n[1]&&(n.pop(),n[2]===n[0]&&(n.pop(),n[1]===n[0]&&n.pop())),this.styles[t]=n.join(\" \")}function c(t){var e,Q;try{for(var T=r(y.connect[t].children),n=T.next();!n.done;n=T.next()){var o=n.value;this.setStyle(this.childName(t,o),this.styles[t])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}function u(t){var e,Q,T=n(y.connect[t].children),o=this.styles[this.childName(t,T.shift())];try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;if(this.styles[this.childName(t,s)]!==o)return void delete this.styles[t]}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}this.styles[t]=o}var p=/^(?:[\\d.]+(?:[a-z]+)|thin|medium|thick|inherit|initial|unset)$/,h=/^(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|inherit|initial|unset)$/;function f(t){var e,Q,T,n,o={width:\"\",style:\"\",color:\"\"};try{for(var i=r(a(this.styles[t])),s=i.next();!s.done;s=i.next()){var l=s.value;l.match(p)&&\"\"===o.width?o.width=l:l.match(h)&&\"\"===o.style?o.style=l:o.color=l}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}try{for(var c=r(y.connect[t].children),u=c.next();!u.done;u=c.next()){var f=u.value;this.setStyle(this.childName(t,f),o[f])}}catch(t){T={error:t}}finally{try{u&&!u.done&&(n=c.return)&&n.call(c)}finally{if(T)throw T.error}}}function d(t){var e,Q,T=[];try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value,a=this.styles[this.childName(t,i)];a&&T.push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}T.length?this.styles[t]=T.join(\" \"):delete this.styles[t]}var L={style:/^(?:normal|italic|oblique|inherit|initial|unset)$/,variant:new RegExp(\"^(?:\"+[\"normal|none\",\"inherit|initial|unset\",\"common-ligatures|no-common-ligatures\",\"discretionary-ligatures|no-discretionary-ligatures\",\"historical-ligatures|no-historical-ligatures\",\"contextual|no-contextual\",\"(?:stylistic|character-variant|swash|ornaments|annotation)\\\\([^)]*\\\\)\",\"small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps\",\"lining-nums|oldstyle-nums|proportional-nums|tabular-nums\",\"diagonal-fractions|stacked-fractions\",\"ordinal|slashed-zero\",\"jis78|jis83|jis90|jis04|simplified|traditional\",\"full-width|proportional-width\",\"ruby\"].join(\"|\")+\")$\"),weight:/^(?:normal|bold|bolder|lighter|[1-9]00|inherit|initial|unset)$/,stretch:new RegExp(\"^(?:\"+[\"normal\",\"(?:(?:ultra|extra|semi)-)?condensed\",\"(?:(?:semi|extra|ulta)-)?expanded\",\"inherit|initial|unset\"].join(\"|\")+\")$\"),size:new RegExp(\"^(?:\"+[\"xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller\",\"[d.]+%|[d.]+[a-z]+\",\"inherit|initial|unset\"].join(\"|\")+\")(?:/(?:normal|[d.+](?:%|[a-z]+)?))?$\")};function H(t){var e,Q,n,o,i=a(this.styles[t]),s={style:\"\",variant:[],weight:\"\",stretch:\"\",size:\"\",family:\"\",\"line-height\":\"\"};try{for(var l=r(i),c=l.next();!c.done;c=l.next()){var u=c.value;s.family=u;try{for(var p=(n=void 0,r(Object.keys(L))),h=p.next();!h.done;h=p.next()){var f=h.value;if((Array.isArray(s[f])||\"\"===s[f])&&u.match(L[f]))if(\"size\"===f){var d=T(u.split(/\\//),2),H=d[0],m=d[1];s[f]=H,m&&(s[\"line-height\"]=m)}else\"\"===s.size&&(Array.isArray(s[f])?s[f].push(u):s[f]=u)}}catch(t){n={error:t}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(n)throw n.error}}}}catch(t){e={error:t}}finally{try{c&&!c.done&&(Q=l.return)&&Q.call(l)}finally{if(e)throw e.error}}!function(t,e){var Q,T;try{for(var n=r(y.connect[t].children),o=n.next();!o.done;o=n.next()){var i=o.value,a=this.childName(t,i);if(Array.isArray(e[i])){var s=e[i];s.length&&(this.styles[a]=s.join(\" \"))}else\"\"!==e[i]&&(this.styles[a]=e[i])}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}}(t,s),delete this.styles[t]}function m(t){}var y=function(){function t(t){void 0===t&&(t=\"\"),this.parse(t)}return Object.defineProperty(t.prototype,\"cssText\",{get:function(){var t,e,Q=[];try{for(var T=r(Object.keys(this.styles)),n=T.next();!n.done;n=T.next()){var o=n.value,i=this.parentName(o);this.styles[i]||Q.push(o+\": \"+this.styles[o])}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return Q.join(\"; \")},enumerable:!1,configurable:!0}),t.prototype.set=function(e,Q){for(e=this.normalizeName(e),this.setStyle(e,Q),t.connect[e]&&!t.connect[e].combine&&(this.combineChildren(e),delete this.styles[e]);e.match(/-/)&&(e=this.parentName(e),t.connect[e]);)t.connect[e].combine.call(this,e)},t.prototype.get=function(t){return t=this.normalizeName(t),this.styles.hasOwnProperty(t)?this.styles[t]:\"\"},t.prototype.setStyle=function(e,Q){this.styles[e]=Q,t.connect[e]&&t.connect[e].children&&t.connect[e].split.call(this,e),\"\"===Q&&delete this.styles[e]},t.prototype.combineChildren=function(e){var Q,T,n=this.parentName(e);try{for(var o=r(t.connect[e].children),i=o.next();!i.done;i=o.next()){var a=i.value,s=this.childName(n,a);t.connect[s].combine.call(this,s)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}},t.prototype.parentName=function(t){var e=t.replace(/-[^-]*$/,\"\");return t===e?\"\":e},t.prototype.childName=function(e,Q){return Q.match(/-/)?Q:(t.connect[e]&&!t.connect[e].combine&&(Q+=e.replace(/.*-/,\"-\"),e=this.parentName(e)),e+\"-\"+Q)},t.prototype.normalizeName=function(t){return t.replace(/[A-Z]/g,(function(t){return\"-\"+t.toLowerCase()}))},t.prototype.parse=function(t){void 0===t&&(t=\"\");var e=this.constructor.pattern;this.styles={};for(var Q=t.replace(e.comment,\"\").split(e.style);Q.length>1;){var r=T(Q.splice(0,3),3),n=r[0],o=r[1],i=r[2];if(n.match(/[^\\s\\n]/))return;this.set(o,i)}},t.pattern={style:/([-a-z]+)[\\s\\n]*:[\\s\\n]*((?:'[^']*'|\"[^\"]*\"|\\n|.)*?)[\\s\\n]*(?:;|$)/g,comment:/\\/\\*[^]*?\\*\\//g},t.connect={padding:{children:o,split:s,combine:l},border:{children:o,split:c,combine:u},\"border-top\":{children:i,split:f,combine:d},\"border-right\":{children:i,split:f,combine:d},\"border-bottom\":{children:i,split:f,combine:d},\"border-left\":{children:i,split:f,combine:d},\"border-width\":{children:o,split:s,combine:null},\"border-style\":{children:o,split:s,combine:null},\"border-color\":{children:o,split:s,combine:null},font:{children:[\"style\",\"variant\",\"weight\",\"stretch\",\"line-height\",\"size\",\"family\"],split:H,combine:m}},t}();e.Styles=y},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(8),i=function(){function t(t,e,Q){this._factory=t,this._env=e,this.global={},this.stack=[],this.global={isInner:Q},this.stack=[this._factory.create(\"start\",this.global)],e&&(this.stack[0].env=e),this.env=this.stack[0].env}return Object.defineProperty(t.prototype,\"env\",{get:function(){return this._env},set:function(t){this._env=t},enumerable:!1,configurable:!0}),t.prototype.Push=function(){for(var t,e,Q=[],i=0;i<arguments.length;i++)Q[i]=arguments[i];try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;if(l){var c=o.default.isNode(l)?this._factory.create(\"mml\",l):l;c.global=this.global;var u=T(this.stack.length?this.Top().checkItem(c):[null,!0],2),p=u[0],h=u[1];h&&(p?(this.Pop(),this.Push.apply(this,n(p))):(this.stack.push(c),c.env?(c.copyEnv&&Object.assign(c.env,this.env),this.env=c.env):c.env=this.env))}}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}},t.prototype.Pop=function(){var t=this.stack.pop();return t.isOpen||delete t.env,this.env=this.stack.length?this.Top().env:{},t},t.prototype.Top=function(t){return void 0===t&&(t=1),this.stack.length<t?null:this.stack[this.stack.length-t]},t.prototype.Prev=function(t){var e=this.Top();return t?e.First:e.Pop()},t.prototype.toString=function(){return\"stack[\\n  \"+this.stack.join(\"\\n  \")+\"\\n]\"},t}();e.default=i},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(131),i=Q(41),a=Q(7),s=function(){function t(t,e){void 0===e&&(e=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=t.handlers,this.nodeFactory=new i.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(t.nodes),this.itemFactory=new o.default(t.items),this.itemFactory.configuration=this,a.defaultOptions.apply(void 0,T([this.options],e)),a.defaultOptions(this.options,t.options)}return t.prototype.pushParser=function(t){this.parsers.unshift(t)},t.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(t.prototype,\"parser\",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),t.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},t.prototype.addNode=function(t,e){var Q=this.nodeLists[t];Q||(Q=this.nodeLists[t]=[]),Q.push(e)},t.prototype.getList=function(t){var e,Q,r=this.nodeLists[t]||[],T=[];try{for(var o=n(r),i=o.next();!i.done;i=o.next()){var a=i.value;this.inTree(a)&&T.push(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}return this.nodeLists[t]=T,T},t.prototype.inTree=function(t){for(;t&&t!==this.root;)t=t.parent;return!!t},t}();e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var r=Q(2),T=Q(3),n=Q(9);e.ENCLOSE_OPTIONS={\"data-arrowhead\":1,color:1,mathcolor:1,background:1,mathbackground:1,\"data-padding\":1,\"data-thickness\":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,Q){var r=t.GetArgument(Q).replace(/,/g,\" \"),T=t.GetBrackets(Q,\"\"),o=t.ParseArg(Q),i=n.default.keyvalOptions(T,e.ENCLOSE_OPTIONS);i.notation=r,t.Push(t.create(\"node\",\"menclose\",[o],i))},new T.CommandMap(\"enclose\",{enclose:\"Enclose\"},e.EncloseMethods),e.EncloseConfiguration=r.Configuration.create(\"enclose\",{handler:{macro:[\"enclose\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(5),T=Q(3),n=Q(16),o=Q(9),i=Q(44),a={NewCommand:function(t,e){var Q=o.default.trimSpaces(t.GetArgument(e)),T=t.GetBrackets(e),n=t.GetBrackets(e),s=t.GetArgument(e);if(\"\\\\\"===Q.charAt(0)&&(Q=Q.substr(1)),!Q.match(/^(.|[a-z]+)$/i))throw new r.default(\"IllegalControlSequenceName\",\"Illegal control sequence name for %1\",e);if(T&&!(T=o.default.trimSpaces(T)).match(/^[0-9]+$/))throw new r.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);i.default.addMacro(t,Q,a.Macro,[s,T,n])},NewEnvironment:function(t,e){var Q=o.default.trimSpaces(t.GetArgument(e)),T=t.GetBrackets(e),n=t.GetBrackets(e),s=t.GetArgument(e),l=t.GetArgument(e);if(T&&!(T=o.default.trimSpaces(T)).match(/^[0-9]+$/))throw new r.default(\"IllegalParamNumber\",\"Illegal number of parameters specified in %1\",e);i.default.addEnvironment(t,Q,a.BeginEnv,[!0,s,l,T,n])},MacroDef:function(t,e){var Q=i.default.GetCSname(t,e),r=i.default.GetTemplate(t,e,\"\\\\\"+Q),T=t.GetArgument(e);r instanceof Array?i.default.addMacro(t,Q,a.MacroWithTemplate,[T].concat(r)):i.default.addMacro(t,Q,a.Macro,[T,r])},Let:function(t,e){var Q=i.default.GetCSname(t,e),r=t.GetNext();\"=\"===r&&(t.i++,r=t.GetNext());var n=t.configuration.handlers;if(\"\\\\\"!==r){t.i++;var o=n.get(\"delimiter\").lookup(r);o?i.default.addDelimiter(t,\"\\\\\"+Q,o.char,o.attributes):i.default.addMacro(t,Q,a.Macro,[r])}else{e=i.default.GetCSname(t,e);var s=n.get(\"delimiter\").lookup(\"\\\\\"+e);if(s)return void i.default.addDelimiter(t,\"\\\\\"+Q,s.char,s.attributes);var l=n.get(\"macro\").applicable(e);if(!l)return;if(l instanceof T.MacroMap){var c=l.lookup(e);return void i.default.addMacro(t,Q,c.func,c.args,c.symbol)}s=l.lookup(e);var u=i.default.disassembleSymbol(Q,s);i.default.addMacro(t,Q,(function(t,e){for(var Q=[],r=2;r<arguments.length;r++)Q[r-2]=arguments[r];var T=i.default.assembleSymbol(Q);return l.parser(t,T)}),u)}},MacroWithTemplate:function(t,e,Q,T){for(var n=[],a=4;a<arguments.length;a++)n[a-4]=arguments[a];var s=parseInt(T,10);if(s){var l=[];if(t.GetNext(),n[0]&&!i.default.MatchParam(t,n[0]))throw new r.default(\"MismatchUseDef\",\"Use of %1 doesn't match its definition\",e);for(var c=0;c<s;c++)l.push(i.default.GetParameter(t,e,n[c+1]));Q=o.default.substituteArgs(t,l,Q)}if(t.string=o.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new r.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is here a recursive macro call?\")},BeginEnv:function(t,e,Q,r,T,n){if(e.getProperty(\"end\")&&t.stack.env.closing===e.getName()){delete t.stack.env.closing;var i=t.string.slice(t.i);return t.string=r,t.i=0,t.Parse(),t.string=i,t.i=0,t.itemFactory.create(\"end\").setProperty(\"name\",e.getName())}if(T){var a=[];if(null!=n){var s=t.GetBrackets(\"\\\\begin{\"+e.getName()+\"}\");a.push(null==s?n:s)}for(var l=a.length;l<T;l++)a.push(t.GetArgument(\"\\\\begin{\"+e.getName()+\"}\"));Q=o.default.substituteArgs(t,a,Q),r=o.default.substituteArgs(t,[],r)}return t.string=o.default.addArgs(t,Q,t.string.slice(t.i)),t.i=0,t.itemFactory.create(\"beginEnv\").setProperty(\"name\",e.getName())}};a.Macro=n.default.Macro,e.default=a},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NewcommandConfiguration=void 0;var T=Q(2),n=Q(153),o=Q(44);Q(288);var i=Q(23),a=Q(3);e.NewcommandConfiguration=T.Configuration.create(\"newcommand\",{handler:{macro:[\"Newcommand-macros\"]},items:(r={},r[n.BeginEnvItem.prototype.kind]=n.BeginEnvItem,r),options:{maxMacros:1e3},init:function(t){new a.DelimiterMap(o.default.NEW_DELIMITER,i.default.delimiter,{}),new a.CommandMap(o.default.NEW_COMMAND,{},{}),new a.EnvironmentMap(o.default.NEW_ENVIRONMENT,i.default.environment,{},{}),t.append(T.Configuration.local({handler:{character:[],delimiter:[o.default.NEW_DELIMITER],macro:[o.default.NEW_DELIMITER,o.default.NEW_COMMAND],environment:[o.default.NEW_ENVIRONMENT]},priority:-1}))}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextMacrosMethods=void 0;var r=Q(12),T=Q(40),n=Q(16);e.TextMacrosMethods={Comment:function(t,e){for(;t.i<t.string.length&&\"\\n\"!==t.string.charAt(t.i);)t.i++;t.i++},Math:function(t,e){t.saveText();for(var Q,T,n=t.i,o=0;T=t.GetNext();)switch(Q=t.i++,T){case\"\\\\\":\")\"===t.GetCS()&&(T=\"\\\\(\");case\"$\":if(0===o&&e===T){var i=t.texParser.configuration,a=new r.default(t.string.substr(n,Q-n),t.stack.env,i).mml();return void t.PushMath(a)}break;case\"{\":o++;break;case\"}\":0===o&&t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"),o--}t.Error(\"MathNotTerminated\",\"Math-mode is not properly terminated\")},MathModeOnly:function(t,e){t.Error(\"MathModeOnly\",\"'%1' allowed only in math mode\",e)},Misplaced:function(t,e){t.Error(\"Misplaced\",\"'%1' can not be used here\",e)},OpenBrace:function(t,e){var Q=t.stack.env;t.envStack.push(Q),t.stack.env=Object.assign({},Q)},CloseBrace:function(t,e){t.envStack.length?(t.saveText(),t.stack.env=t.envStack.pop()):t.Error(\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\")},OpenQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201c\",t.i++):t.text+=\"\\u2018\"},CloseQuote:function(t,e){t.string.charAt(t.i)===e?(t.text+=\"\\u201d\",t.i++):t.text+=\"\\u2019\"},Tilde:function(t,e){t.text+=\"\\xa0\"},Space:function(t,e){for(t.text+=\" \";t.GetNext().match(/\\s/);)t.i++},SelfQuote:function(t,e){t.text+=e.substr(1)},Insert:function(t,e,Q){t.text+=Q},Accent:function(t,e,Q){var r=t.ParseArg(name),T=t.create(\"token\",\"mo\",{},Q);t.addAttributes(T),t.Push(t.create(\"node\",\"mover\",[r,T]))},Emph:function(t,e){var Q=\"-tex-mathit\"===t.stack.env.mathvariant?\"normal\":\"-tex-mathit\";t.Push(t.ParseTextArg(e,{mathvariant:Q}))},SetFont:function(t,e,Q){t.saveText(),t.stack.env.mathvariant=Q},SetSize:function(t,e,Q){t.saveText(),t.stack.env.mathsize=Q},CheckAutoload:function(t,e){var Q=t.configuration.packageData.get(\"autoload\"),r=t.texParser;e=e.slice(1);var n=r.lookup(\"macro\",e);if(!n||Q&&n._func===Q.Autoload){if(r.parse(\"macro\",[r,e]),!n)return;T.retryAfter(Promise.resolve())}r.parse(\"macro\",[t,e])},Macro:n.default.Macro,Spacer:n.default.Spacer,Hskip:n.default.Hskip,rule:n.default.rule,Rule:n.default.Rule,HandleRef:n.default.HandleRef}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.RequireConfiguration=e.options=e.RequireMethods=e.RequireLoad=void 0;var o=Q(2),i=Q(3),a=Q(5),s=Q(1),l=Q(29),c=Q(11),u=Q(25),p=Q(7),h=s.MathJax.config;function f(t,e){var Q,T=t.parseOptions.options.require,n=t.parseOptions.packageData.get(\"require\").required,i=e.substr(T.prefix.length);if(n.indexOf(i)<0){n.push(i),function(t,e){var Q,T;void 0===e&&(e=[]);var n=t.parseOptions.options.require.prefix;try{for(var o=r(e),i=o.next();!i.done;i=o.next()){var a=i.value;a.substr(0,n.length)===n&&f(t,a)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}}(t,c.CONFIG.dependencies[e]);var a=o.ConfigurationHandler.get(i);if(a){var s=h[e]||{};a.options&&1===Object.keys(a.options).length&&a.options[i]&&((Q={})[i]=s,s=Q),t.configuration.add(a,t,s);var l=t.parseOptions.packageData.get(\"require\").configured;a.preprocessors.length&&!l.has(i)&&(l.set(i,!0),u.mathjax.retryAfter(Promise.resolve()))}}}function d(t,e){var Q=t.options.require,r=Q.allow,T=(\"[\"===e.substr(0,1)?\"\":Q.prefix)+e;if(!(r.hasOwnProperty(T)?r[T]:r.hasOwnProperty(e)?r[e]:Q.defaultAllow))throw new a.default(\"BadRequire\",'Extension \"%1\" is now allowed to be loaded',T);l.Package.packages.has(T)?f(t.configuration.packageData.get(\"require\").jax,T):u.mathjax.retryAfter(c.Loader.load(T))}e.RequireLoad=d,e.RequireMethods={Require:function(t,e){var Q=t.GetArgument(e);if(Q.match(/[^_a-zA-Z0-9]/)||\"\"===Q)throw new a.default(\"BadPackageName\",\"Argument for %1 is not a valid package name\",e);d(t,Q)}},e.options={require:{allow:p.expandable({base:!1,\"all-packages\":!1}),defaultAllow:!0,prefix:\"tex\"}},new i.CommandMap(\"require\",{require:\"Require\"},e.RequireMethods),e.RequireConfiguration=o.Configuration.create(\"require\",{handler:{macro:[\"require\"]},config:function(t,e){e.parseOptions.packageData.set(\"require\",{jax:e,required:n(e.options.packages),configured:new Map});var Q=e.parseOptions.options.require,r=Q.prefix;if(r.match(/[^_a-zA-Z0-9]/))throw Error(\"Illegal characters used in \\\\require prefix\");c.CONFIG.paths[r]||(c.CONFIG.paths[r]=\"[mathjax]/input/tex/extensions\"),Q.prefix=\"[\"+r+\"]/\"},options:e.options})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMactionMixin=e.TooltipData=void 0;var i=Q(15);e.TooltipData={dx:\".2em\",dy:\".1em\",postDelay:600,clearDelay:100,hoverTimer:new Map,clearTimer:new Map,stopTimers:function(t,e){e.clearTimer.has(t)&&(clearTimeout(e.clearTimer.get(t)),e.clearTimer.delete(t)),e.hoverTimer.has(t)&&(clearTimeout(e.hoverTimer.get(t)),e.hoverTimer.delete(t))}},e.CommonMactionMixin=function(t){return function(t){function Q(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.constructor.actions,i=r.node.attributes.get(\"actiontype\"),a=n(T.get(i)||[function(t,e){},{}],2),s=a[0],l=a[1];return r.action=s,r.data=l,r.getParameters(),r}return T(Q,t),Object.defineProperty(Q.prototype,\"selected\",{get:function(){var t=this.node.attributes.get(\"selection\"),e=Math.max(1,Math.min(this.childNodes.length,t))-1;return this.childNodes[e]||this.wrap(this.node.selected)},enumerable:!1,configurable:!0}),Q.prototype.getParameters=function(){var t=this.node.attributes.get(\"data-offsets\"),Q=n(i.split(t||\"\"),2),r=Q[0],T=Q[1];this.dx=this.length2em(r||e.TooltipData.dx),this.dy=this.length2em(T||e.TooltipData.dy)},Q.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.updateFrom(this.selected.getBBox()),this.selected.setChildPWidths(e)},Q}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonInferredMrowMixin=e.CommonMrowMixin=void 0;var a=Q(18);e.CommonMrowMixin=function(t){return function(t){function e(){for(var e,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];var n=t.apply(this,o(r))||this;n.stretchChildren();try{for(var s=i(n.childNodes),l=s.next();!l.done;l=s.next()){var c=l.value;if(c.bbox.pwidth){n.bbox.pwidth=a.BBox.fullWidth;break}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(Q=s.return)&&Q.call(s)}finally{if(e)throw e.error}}return n}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.stretchChildren=function(){var t,e,Q,r,T,n,o=[];try{for(var a=i(this.childNodes),s=a.next();!s.done;s=a.next()){(b=s.value).canStretch(1)&&o.push(b)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}var l=o.length,c=this.childNodes.length;if(l&&c>1){var u=0,p=0,h=l>1&&l===c;try{for(var f=i(this.childNodes),d=f.next();!d.done;d=f.next()){var L=0===(b=d.value).stretch.dir;if(h||L){var H=b.getBBox(L),m=H.h,y=H.d;m>u&&(u=m),y>p&&(p=y)}}}catch(t){Q={error:t}}finally{try{d&&!d.done&&(r=f.return)&&r.call(f)}finally{if(Q)throw Q.error}}try{for(var v=i(o),g=v.next();!g.done;g=v.next()){var b;(b=g.value).coreMO().getStretchedVariant([u,p])}}catch(t){T={error:t}}finally{try{g&&!g.done&&(n=v.return)&&n.call(v)}finally{if(T)throw T.error}}}},e}(t)},e.CommonInferredMrowMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getScale=function(){this.bbox.scale=this.parent.bbox.scale,this.bbox.rscale=1},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMlabeledtrMixin=e.CommonMtrMixin=void 0,e.CommonMtrMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"numCells\",{get:function(){return this.childNodes.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"labeled\",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tableCells\",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),e.prototype.getChild=function(t){return this.childNodes[t]},e.prototype.getChildBBoxes=function(){return this.childNodes.map((function(t){return t.getBBox()}))},e.prototype.stretchChildren=function(t){var e,Q,r,T,o,i;void 0===t&&(t=null);var a=[],s=this.labeled?this.childNodes.slice(1):this.childNodes;try{for(var l=n(s),c=l.next();!c.done;c=l.next()){(V=c.value.childNodes[0]).canStretch(1)&&a.push(V)}}catch(t){e={error:t}}finally{try{c&&!c.done&&(Q=l.return)&&Q.call(l)}finally{if(e)throw e.error}}var u=a.length,p=this.childNodes.length;if(u&&p>1){if(null===t){var h=0,f=0,d=u>1&&u===p;try{for(var L=n(s),H=L.next();!H.done;H=L.next()){var m=0===(V=H.value.childNodes[0]).stretch.dir;if(d||m){var y=V.getBBox(m),v=y.h,g=y.d;v>h&&(h=v),g>f&&(f=g)}}}catch(t){r={error:t}}finally{try{H&&!H.done&&(T=L.return)&&T.call(L)}finally{if(r)throw r.error}}t=[h,f]}try{for(var b=n(a),M=b.next();!M.done;M=b.next()){var V;(V=M.value).coreMO().getStretchedVariant(t)}}catch(t){o={error:t}}finally{try{M&&!M.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}}},e}(t)},e.CommonMlabeledtrMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"numCells\",{get:function(){return Math.max(0,this.childNodes.length-1)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"labeled\",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tableCells\",{get:function(){return this.childNodes.slice(1)},enumerable:!1,configurable:!0}),e.prototype.getChild=function(t){return this.childNodes[t+1]},e.prototype.getChildBBoxes=function(){return this.childNodes.slice(1).map((function(t){return t.getBBox()}))},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmsqrt=void 0;var n=Q(4),o=Q(185),i=Q(66),a=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.dx=0,e}return T(e,t),e.prototype.toSVG=function(t){var e=this.childNodes[this.surd],Q=this.childNodes[this.base],r=this.root?this.childNodes[this.root]:null,T=this.getBBox(),n=e.getBBox(),o=Q.getBBox(),i=this.getPQ(n)[1],a=this.font.params.rule_thickness*this.bbox.scale,s=o.h+i+a,l=this.standardSVGnode(t),c=this.adaptor.append(l,this.svg(\"g\"));this.addRoot(l,r,n,s),e.toSVG(l),e.place(this.dx,T.h-n.h-a),Q.toSVG(c),Q.place(this.dx+n.w,0),this.adaptor.append(l,this.svg(\"rect\",{width:this.fixed(o.w),height:this.fixed(a),x:this.fixed(this.dx+n.w),y:this.fixed(T.h-2*a)}))},e.prototype.addRoot=function(t,e,Q,r){},e.kind=i.MmlMsqrt.prototype.kind,e}(o.CommonMsqrtMixin(n.SVGWrapper));e.SVGmsqrt=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.browserAdaptor=void 0;var r=Q(105);e.browserAdaptor=function(){return new r.HTMLAdaptor(window)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TeX=void 0;var i=Q(54),a=Q(7),s=Q(129),l=Q(130),c=Q(8),u=Q(12),p=Q(5),h=Q(86),f=Q(20),d=Q(2);Q(42);var L=function(t){function e(Q){void 0===Q&&(Q={});var r=this,T=o(a.separateOptions(Q,e.OPTIONS,s.FindTeX.OPTIONS),3),n=T[0],i=T[1],c=T[2];(r=t.call(this,i)||this).findTeX=r.options.FindTeX||new s.FindTeX(c);var u=r.options.packages,p=r.configuration=e.configure(u),d=r._parseOptions=new h.default(p,[r.options,f.TagsFactory.OPTIONS]);return a.userOptions(d.options,n),p.config(r),e.tags(d,p),r.postFilters.add(l.default.cleanSubSup,-6),r.postFilters.add(l.default.setInherited,-5),r.postFilters.add(l.default.moveLimits,-4),r.postFilters.add(l.default.cleanStretchy,-3),r.postFilters.add(l.default.cleanAttributes,-2),r.postFilters.add(l.default.combineRelations,-1),r}return T(e,t),e.configure=function(t){var e=new d.ParserConfiguration(t);return e.init(),e},e.tags=function(t,e){f.TagsFactory.addTags(e.tags),f.TagsFactory.setDefault(t.options.tags),t.tags=f.TagsFactory.getDefault(),t.tags.configuration=t},e.prototype.setMmlFactory=function(e){t.prototype.setMmlFactory.call(this,e),this._parseOptions.nodeFactory.setMmlFactory(e)},Object.defineProperty(e.prototype,\"parseOptions\",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),e.prototype.compile=function(t,e){this.parseOptions.clear(),this.executeFilters(this.preFilters,t,e,this.parseOptions);var Q,r=t.display;this.latex=t.math,this.parseOptions.tags.startEquation(t);try{Q=new u.default(this.latex,{display:r,isInner:!1},this.parseOptions).mml()}catch(t){if(!(t instanceof p.default))throw t;this.parseOptions.error=!0,Q=this.options.formatError(this,t)}return Q=this.parseOptions.nodeFactory.create(\"node\",\"math\",[Q]),r&&c.default.setAttribute(Q,\"display\",\"block\"),this.parseOptions.tags.finishEquation(t),this.parseOptions.root=Q,this.executeFilters(this.postFilters,t,e,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},e.prototype.findMath=function(t){return this.findTeX.findMath(t)},e.prototype.formatError=function(t){var e=t.message.replace(/\\n.*/,\"\");return this.parseOptions.nodeFactory.create(\"error\",e,t.id,this.latex)},e.NAME=\"TeX\",e.OPTIONS=n(n({},i.AbstractInputJax.OPTIONS),{FindTeX:null,packages:[\"base\"],digits:/^(?:[0-9]+(?:\\{,\\}[0-9]{3})*(?:\\.[0-9]*)?|\\.[0-9]+)/,maxBuffer:5120,formatError:function(t,e){return t.formatError(e)}}),e}(i.AbstractInputJax);e.TeX=L},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllPackages=void 0,Q(42),Q(132),Q(133),Q(135),Q(137),Q(138),Q(139),Q(142),Q(145),Q(146),Q(150),Q(151),Q(87),Q(152),Q(154),Q(156),Q(89),Q(157),Q(158),Q(159),Q(162),Q(163),Q(165),Q(166),\"undefined\"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad(\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/colorv2\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/unicode\",\"[tex]/verb\",\"[tex]/configmacros\",\"[tex]/tagformat\",\"[tex]/textmacros\"),e.AllPackages=[\"base\",\"action\",\"ams\",\"amscd\",\"bbox\",\"boldsymbol\",\"braket\",\"bussproofs\",\"cancel\",\"color\",\"enclose\",\"extpfeil\",\"html\",\"mhchem\",\"newcommand\",\"noerrors\",\"noundefined\",\"unicode\",\"verb\",\"configmacros\",\"tagformat\",\"textmacros\"]},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuHandler=e.MenuMathDocumentMixin=e.MenuMathItemMixin=void 0;var s=Q(25),l=Q(14),c=Q(7),u=Q(268);function p(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addMenu=function(t,e){void 0===e&&(e=!1),this.state()>=l.STATE.CONTEXT_MENU||(this.isEscaped||!t.options.enableMenu&&!e||t.menu.addMenu(this),this.state(l.STATE.CONTEXT_MENU))},e.prototype.checkLoading=function(t){t.checkLoading()},e}(t)}function h(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this;r.menu=new r.options.MenuClass(r,r.options.menuOptions);var T=r.constructor.ProcessBits;return T.has(\"context-menu\")||T.allocate(\"context-menu\"),r.options.MathItem=p(r.options.MathItem),r}return T(e,t),e.prototype.addMenu=function(){var t,e;if(!this.processed.isSet(\"context-menu\")){try{for(var Q=a(this.math),r=Q.next();!r.done;r=Q.next()){r.value.addMenu(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"context-menu\")}return this},e.prototype.checkLoading=function(){this.menu.isLoading&&s.mathjax.retryAfter(this.menu.loadingPromise.catch((function(t){return console.log(t)})));var t=this.menu.settings;return t.collapsible&&(this.options.enableComplexity=!0,this.menu.checkComponent(\"a11y/complexity\")),t.explorer&&(this.options.enableEnrichment=!0,this.options.enableExplorer=!0,this.menu.checkComponent(\"a11y/explorer\")),this},e.prototype.state=function(e,Q){return void 0===Q&&(Q=!1),t.prototype.state.call(this,e,Q),e<l.STATE.CONTEXT_MENU&&this.processed.clear(\"context-menu\"),this},e.prototype.updateDocument=function(){return t.prototype.updateDocument.call(this),this.menu.menu.store.sort(),this},e}(t)).OPTIONS=n(n({},t.OPTIONS),{MenuClass:u.Menu,menuOptions:u.Menu.OPTIONS,enableMenu:!0,a11y:t.OPTIONS.a11y||c.expandable({}),renderActions:c.expandable(n(n({},t.OPTIONS.renderActions),{addMenu:[l.STATE.CONTEXT_MENU],checkLoading:[l.STATE.UNPROCESSED+1]}))}),e}l.newState(\"CONTEXT_MENU\",170),e.MenuMathItemMixin=p,e.MenuMathDocumentMixin=h,e.MenuHandler=function(t){return t.documentClass=h(t.documentClass),t}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AssistiveMmlHandler=e.AssistiveMmlMathDocumentMixin=e.AssistiveMmlMathItemMixin=e.LimitedMmlVisitor=void 0;var s=Q(14),l=Q(83),c=Q(7),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getAttributes=function(e){return t.prototype.getAttributes.call(this,e).replace(/ ?id=\".*?\"/,\"\")},e}(l.SerializedMmlVisitor);function p(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.assistiveMml=function(t,e){if(void 0===e&&(e=!1),!(this.state()>=s.STATE.ASSISTIVEMML)){if(!this.isEscaped&&(t.options.enableAssistiveMml||e)){var Q=t.adaptor,r=t.toMML(this.root).replace(/\\n */g,\"\").replace(/<!--.*?-->/g,\"\"),T=Q.firstChild(Q.body(Q.parse(r,\"text/html\"))),n=Q.node(\"mjx-assistive-mml\",{role:\"presentation\",unselectable:\"on\",display:this.display?\"block\":\"inline\"},[T]);Q.setAttribute(this.typesetRoot,\"role\",\"presentation\"),Q.setAttribute(Q.firstChild(this.typesetRoot),\"aria-hidden\",\"true\"),Q.setStyle(this.typesetRoot,\"position\",\"relative\"),Q.append(this.typesetRoot,n)}this.state(s.STATE.ASSISTIVEMML)}},e}(t)}function h(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this,T=r.constructor,n=T.ProcessBits;return n.has(\"assistive-mml\")||n.allocate(\"assistive-mml\"),r.visitor=new u(r.mmlFactory),r.options.MathItem=p(r.options.MathItem),\"addStyles\"in r&&r.addStyles(T.assistiveStyles),r}return T(e,t),e.prototype.toMML=function(t){return this.visitor.visitTree(t)},e.prototype.assistiveMml=function(){var t,e;if(!this.processed.isSet(\"assistive-mml\")){try{for(var Q=a(this.math),r=Q.next();!r.done;r=Q.next()){r.value.assistiveMml(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}this.processed.set(\"assistive-mml\")}return this},e.prototype.state=function(e,Q){return void 0===Q&&(Q=!1),t.prototype.state.call(this,e,Q),e<s.STATE.ASSISTIVEMML&&this.processed.clear(\"assistive-mml\"),this},e}(t)).OPTIONS=n(n({},t.OPTIONS),{enableAssistiveMml:!0,renderActions:c.expandable(n(n({},t.OPTIONS.renderActions),{assistiveMml:[s.STATE.ASSISTIVEMML]}))}),e.assistiveStyles={\"mjx-assistive-mml\":{position:\"absolute !important\",top:\"0px\",left:\"0px\",clip:\"rect(1px, 1px, 1px, 1px)\",padding:\"1px 0px 0px 0px !important\",border:\"0px !important\",display:\"block !important\",width:\"auto !important\",overflow:\"hidden !important\",\"-webkit-touch-callout\":\"none\",\"-webkit-user-select\":\"none\",\"-khtml-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},'mjx-assistive-mml[display=\"block\"]':{width:\"100% !important\"}},e}e.LimitedMmlVisitor=u,s.newState(\"ASSISTIVEMML\",153),e.AssistiveMmlMathItemMixin=p,e.AssistiveMmlMathDocumentMixin=h,e.AssistiveMmlHandler=function(t){return t.documentClass=h(t.documentClass),t}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractMenu=void 0;var o=Q(102),i=Q(36),a=Q(10),s=Q(103),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.className=a.HtmlClasses.CONTEXTMENU,e.role=\"menu\",e._items=[],e._baseMenu=null,e}return T(e,t),Object.defineProperty(e.prototype,\"baseMenu\",{get:function(){return this._baseMenu},set:function(t){this._baseMenu=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"items\",{get:function(){return this._items},set:function(t){this._items=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"pool\",{get:function(){return this.variablePool},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"focused\",{get:function(){return this._focused},set:function(t){if(this._focused!==t){this._focused||this.unfocus();var e=this._focused;this._focused=t,e&&e.unfocus()}},enumerable:!1,configurable:!0}),e.prototype.up=function(t){var e=this.items.filter((function(t){return t instanceof i.AbstractItem&&!t.isHidden()}));if(0!==e.length)if(this.focused){var Q=e.indexOf(this.focused);-1!==Q&&e[Q=Q?--Q:e.length-1].focus()}else e[e.length-1].focus()},e.prototype.down=function(t){var e=this.items.filter((function(t){return t instanceof i.AbstractItem&&!t.isHidden()}));if(0!==e.length)if(this.focused){var Q=e.indexOf(this.focused);-1!==Q&&e[Q=++Q===e.length?0:Q].focus()}else e[0].focus()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.generateMenu()},e.prototype.generateMenu=function(){var t,e,Q=this.html;Q.classList.add(a.HtmlClasses.MENU);try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(o.isHidden()){var i=o.html;i.parentNode&&i.parentNode.removeChild(i)}else Q.appendChild(o.html)}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.post=function(e,Q){this.variablePool.update(),t.prototype.post.call(this,e,Q)},e.prototype.unpostSubmenus=function(){var t,e,Q=this.items.filter((function(t){return t instanceof s.Submenu}));try{for(var r=n(Q),T=r.next();!T.done;T=r.next()){var o=T.value;o.submenu.unpost(),o!==this.focused&&o.unfocus()}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.unpostSubmenus(),this.focused=null},e.prototype.find=function(t){var e,Q;try{for(var r=n(this.items),T=r.next();!T.done;T=r.next()){var o=T.value;if(\"rule\"!==o.type){if(o.id===t)return o;if(\"submenu\"===o.type){var i=o.submenu.find(t);if(i)return i}}}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return null},e}(o.AbstractPostable);e.AbstractMenu=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractPostable=void 0;var n=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.posted=!1,e}return T(e,t),e.prototype.isPosted=function(){return this.posted},e.prototype.post=function(t,e){this.posted||(void 0!==t&&void 0!==e&&this.html.setAttribute(\"style\",\"left: \"+t+\"px; top: \"+e+\"px;\"),this.display(),this.posted=!0)},e.prototype.unpost=function(){if(this.posted){var t=this.html;t.parentNode&&t.parentNode.removeChild(t),this.posted=!1}},e}(Q(274).MenuElement);e.AbstractPostable=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Submenu=void 0;var n=Q(36),o=Q(10),i=function(t){function e(e,Q,r){var T=t.call(this,e,\"submenu\",Q,r)||this;return T._submenu=null,T}return T(e,t),e.fromJson=function(t,e,Q){var r=e.content,T=e.menu,n=new this(Q,r,e.id),o=t.get(\"subMenu\")(t,T,n);return n.submenu=o,n},Object.defineProperty(e.prototype,\"submenu\",{get:function(){return this._submenu},set:function(t){this._submenu=t},enumerable:!1,configurable:!0}),e.prototype.mouseover=function(t){this.focus(),this.stop(t)},e.prototype.mouseout=function(t){this.stop(t)},e.prototype.unfocus=function(){if(this.submenu.isPosted()){if(this.menu.focused!==this)return t.prototype.unfocus.call(this),void this.menu.unpostSubmenus();this.html.setAttribute(\"tabindex\",\"-1\"),this.html.blur()}else t.prototype.unfocus.call(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.submenu.isPosted()||this.disabled||this.submenu.post()},e.prototype.executeAction=function(){this.submenu.isPosted()?this.submenu.unpost():this.submenu.post()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;this.span=document.createElement(\"span\"),this.span.textContent=\"\\u25ba\",this.span.classList.add(o.HtmlClasses.MENUARROW),e.appendChild(this.span),e.setAttribute(\"aria-haspopup\",\"true\")},e.prototype.left=function(e){this.submenu.isPosted()?this.submenu.unpost():t.prototype.left.call(this,e)},e.prototype.right=function(t){this.submenu.isPosted()?this.submenu.down(t):this.submenu.post()},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Submenu=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Info=void 0;var n=Q(300),o=Q(10),i=function(t){function e(e,Q,r){var T=t.call(this)||this;return T.title=e,T.signature=r,T.className=o.HtmlClasses.INFO,T.role=\"dialog\",T.contentDiv=T.generateContent(),T.close=T.generateClose(),T.content=Q||function(){return\"\"},T}return T(e,t),e.prototype.attachMenu=function(t){this.menu=t},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.appendChild(this.generateTitle()),e.appendChild(this.contentDiv),e.appendChild(this.generateSignature()),e.appendChild(this.close.html),e.setAttribute(\"tabindex\",\"0\")},e.prototype.post=function(){t.prototype.post.call(this);var e=document.documentElement,Q=this.html,r=window.innerHeight||e.clientHeight||e.scrollHeight||0,T=Math.floor(-Q.offsetWidth/2),n=Math.floor((r-Q.offsetHeight)/3);Q.setAttribute(\"style\",\"margin-left: \"+T+\"px; top: \"+n+\"px;\"),window.event instanceof MouseEvent&&Q.classList.add(o.HtmlClasses.MOUSEPOST),Q.focus()},e.prototype.display=function(){this.menu.registerWidget(this),this.contentDiv.innerHTML=this.content();var t=this.menu.html;t.parentNode&&t.parentNode.removeChild(t),this.menu.frame.appendChild(this.html)},e.prototype.click=function(t){},e.prototype.keydown=function(e){this.bubbleKey(),t.prototype.keydown.call(this,e)},e.prototype.escape=function(t){this.unpost()},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.html.classList.remove(o.HtmlClasses.MOUSEPOST),this.menu.unregisterWidget(this)},e.prototype.generateClose=function(){var t=new n.CloseButton(this),e=t.html;return e.classList.add(o.HtmlClasses.INFOCLOSE),e.setAttribute(\"aria-label\",\"Close Dialog Box\"),t},e.prototype.generateTitle=function(){var t=document.createElement(\"span\");return t.innerHTML=this.title,t.classList.add(o.HtmlClasses.INFOTITLE),t},e.prototype.generateContent=function(){var t=document.createElement(\"div\");return t.classList.add(o.HtmlClasses.INFOCONTENT),t.setAttribute(\"tabindex\",\"0\"),t},e.prototype.generateSignature=function(){var t=document.createElement(\"span\");return t.innerHTML=this.signature,t.classList.add(o.HtmlClasses.INFOSIGNATURE),t},e.prototype.toJson=function(){return{type:\"\"}},e}(Q(102).AbstractPostable);e.Info=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLAdaptor=void 0;var o=function(t){function e(e){var Q=t.call(this,e.document)||this;return Q.window=e,Q.parser=new e.DOMParser,Q}return T(e,t),e.prototype.parse=function(t,e){return void 0===e&&(e=\"text/html\"),this.parser.parseFromString(t,e)},e.prototype.create=function(t,e){return e?this.document.createElementNS(e,t):this.document.createElement(t)},e.prototype.text=function(t){return this.document.createTextNode(t)},e.prototype.head=function(t){return t.head},e.prototype.body=function(t){return t.body},e.prototype.root=function(t){return t.documentElement},e.prototype.doctype=function(t){return\"<!DOCTYPE \"+t.doctype.name+\">\"},e.prototype.tags=function(t,e,Q){void 0===Q&&(Q=null);var r=Q?t.getElementsByTagNameNS(Q,e):t.getElementsByTagName(e);return Array.from(r)},e.prototype.getElements=function(t,e){var Q,r,T=[];try{for(var o=n(t),i=o.next();!i.done;i=o.next()){var a=i.value;\"string\"==typeof a?T=T.concat(Array.from(this.document.querySelectorAll(a))):Array.isArray(a)||a instanceof this.window.NodeList||a instanceof this.window.HTMLCollection?T=T.concat(Array.from(a)):T.push(a)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}return T},e.prototype.contains=function(t,e){return t.contains(e)},e.prototype.parent=function(t){return t.parentNode},e.prototype.append=function(t,e){return t.appendChild(e)},e.prototype.insert=function(t,e){return this.parent(e).insertBefore(t,e)},e.prototype.remove=function(t){return this.parent(t).removeChild(t)},e.prototype.replace=function(t,e){return this.parent(e).replaceChild(t,e)},e.prototype.clone=function(t){return t.cloneNode(!0)},e.prototype.split=function(t,e){return t.splitText(e)},e.prototype.next=function(t){return t.nextSibling},e.prototype.previous=function(t){return t.previousSibling},e.prototype.firstChild=function(t){return t.firstChild},e.prototype.lastChild=function(t){return t.lastChild},e.prototype.childNodes=function(t){return Array.from(t.childNodes)},e.prototype.childNode=function(t,e){return t.childNodes[e]},e.prototype.kind=function(t){return t.nodeName.toLowerCase()},e.prototype.value=function(t){return t.nodeValue||\"\"},e.prototype.textContent=function(t){return t.textContent},e.prototype.innerHTML=function(t){return t.innerHTML},e.prototype.outerHTML=function(t){return t.outerHTML},e.prototype.setAttribute=function(t,e,Q,r){return void 0===r&&(r=null),r?(e=r.replace(/.*\\//,\"\")+\":\"+e.replace(/^.*:/,\"\"),t.setAttributeNS(r,e,Q)):t.setAttribute(e,Q)},e.prototype.getAttribute=function(t,e){return t.getAttribute(e)},e.prototype.removeAttribute=function(t,e){return t.removeAttribute(e)},e.prototype.hasAttribute=function(t,e){return t.hasAttribute(e)},e.prototype.allAttributes=function(t){return Array.from(t.attributes).map((function(t){return{name:t.name,value:t.value}}))},e.prototype.addClass=function(t,e){t.classList?t.classList.add(e):t.className=(t.className+\" \"+e).trim()},e.prototype.removeClass=function(t,e){t.classList?t.classList.remove(e):t.className=t.className.split(/ /).filter((function(t){return t!==e})).join(\" \")},e.prototype.hasClass=function(t,e){return t.classList?t.classList.contains(e):t.className.split(/ /).indexOf(e)>=0},e.prototype.setStyle=function(t,e,Q){t.style[e]=Q},e.prototype.getStyle=function(t,e){return t.style[e]},e.prototype.allStyles=function(t){return t.style.cssText},e.prototype.fontSize=function(t){var e=this.window.getComputedStyle(t);return parseFloat(e.fontSize)},e.prototype.fontFamily=function(t){return this.window.getComputedStyle(t).fontFamily||\"\"},e.prototype.nodeSize=function(t,e,Q){if(void 0===e&&(e=1),void 0===Q&&(Q=!1),Q&&t.getBBox){var r=t.getBBox();return[r.width/e,r.height/e]}return[t.offsetWidth/e,t.offsetHeight/e]},e.prototype.nodeBBox=function(t){var e=t.getBoundingClientRect();return{left:e.left,right:e.right,top:e.top,bottom:e.bottom}},e}(Q(106).AbstractDOMAdaptor);e.HTMLAdaptor=o},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractDOMAdaptor=void 0;var T=function(){function t(t){void 0===t&&(t=null),this.document=t}return t.prototype.node=function(t,e,Q,T){var n,o;void 0===e&&(e={}),void 0===Q&&(Q=[]);var i=this.create(t,T);this.setAttributes(i,e);try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;this.append(i,l)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return i},t.prototype.setAttributes=function(t,e){var Q,T,n,o,i,a;if(e.style&&\"string\"!=typeof e.style)try{for(var s=r(Object.keys(e.style)),l=s.next();!l.done;l=s.next()){var c=l.value;this.setStyle(t,c.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()})),e.style[c])}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(Q)throw Q.error}}if(e.properties)try{for(var u=r(Object.keys(e.properties)),p=u.next();!p.done;p=u.next()){t[c=p.value]=e.properties[c]}}catch(t){n={error:t}}finally{try{p&&!p.done&&(o=u.return)&&o.call(u)}finally{if(n)throw n.error}}try{for(var h=r(Object.keys(e)),f=h.next();!f.done;f=h.next()){\"style\"===(c=f.value)&&\"string\"!=typeof e.style||\"properties\"===c||this.setAttribute(t,c,e[c])}}catch(t){i={error:t}}finally{try{f&&!f.done&&(a=h.return)&&a.call(h)}finally{if(i)throw i.error}}},t.prototype.replace=function(t,e){return this.insert(t,e),this.remove(e),e},t.prototype.childNode=function(t,e){return this.childNodes(t)[e]},t.prototype.allClasses=function(t){var e=this.getAttribute(t,\"class\");return e?e.replace(/  +/g,\" \").replace(/^ /,\"\").replace(/ $/,\"\").split(/ /):[]},t}();e.AbstractDOMAdaptor=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractFindMath=void 0;var r=Q(7),T=function(){function t(t){var e=this.constructor;this.options=r.userOptions(r.defaultOptions({},e.OPTIONS),t)}return t.OPTIONS={},t}();e.AbstractFindMath=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractHandler=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(Q(53).AbstractMathDocument),o=function(){function t(t,e){void 0===e&&(e=5),this.documentClass=n,this.adaptor=t,this.priority=e}return Object.defineProperty(t.prototype,\"name\",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),t.prototype.handlesDocument=function(t){return!1},t.prototype.create=function(t,e){return new this.documentClass(t,this.adaptor,e)},t.NAME=\"generic\",t}();e.AbstractHandler=o},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinkedList=e.ListItem=e.END=void 0,e.END=Symbol();var o=function(t){void 0===t&&(t=null),this.next=null,this.prev=null,this.data=t};e.ListItem=o;var i=function(){function t(){for(var t=[],Q=0;Q<arguments.length;Q++)t[Q]=arguments[Q];this.list=new o(e.END),this.list.next=this.list.prev=this.list,this.push.apply(this,T(t))}return t.prototype.toArray=function(){return Array.from(this)},t.prototype.isBefore=function(t,e){return t<e},t.prototype.push=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q),i=T.next();!i.done;i=T.next()){var a=i.value,s=new o(a);s.next=this.list,s.prev=this.list.prev,this.list.prev=s,s.prev.next=s}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return this},t.prototype.pop=function(){var t=this.list.prev;return t.data===e.END?null:(this.list.prev=t.prev,t.prev.next=this.list,t.next=t.prev=null,t.data)},t.prototype.unshift=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];try{for(var T=n(Q.slice(0).reverse()),i=T.next();!i.done;i=T.next()){var a=i.value,s=new o(a);s.next=this.list.next,s.prev=this.list,this.list.next=s,s.next.prev=s}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return this},t.prototype.shift=function(){var t=this.list.next;return t.data===e.END?null:(this.list.next=t.next,t.next.prev=this.list,t.next=t.prev=null,t.data)},t.prototype.remove=function(){for(var t,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];var o=new Map;try{for(var i=n(r),a=i.next();!a.done;a=i.next()){var s=a.value;o.set(s,!0)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(t)throw t.error}}for(var l=this.list.next;l.data!==e.END;){var c=l.next;o.has(l.data)&&(l.prev.next=l.next,l.next.prev=l.prev,l.next=l.prev=null),l=c}},t.prototype.clear=function(){return this.list.next.prev=this.list.prev.next=null,this.list.next=this.list.prev=this.list,this},t.prototype[Symbol.iterator]=function(){var t=this.list;return{next:function(){return(t=t.next).data===e.END?{value:null,done:!0}:{value:t.data,done:!1}}}},t.prototype.reversed=function(){var t,Q=this.list;return(t={})[Symbol.iterator]=function(){return this},t.next=function(){return(Q=Q.prev).data===e.END?{value:null,done:!0}:{value:Q.data,done:!1}},t.toArray=function(){return Array.from(this)},t},t.prototype.insert=function(t,Q){void 0===Q&&(Q=null),null===Q&&(Q=this.isBefore.bind(this));for(var r=new o(t),T=this.list.next;T.data!==e.END&&Q(T.data,r.data);)T=T.next;return r.prev=T.prev,r.next=T,T.prev.next=T.prev=r,this},t.prototype.sort=function(e){var Q,r;void 0===e&&(e=null),null===e&&(e=this.isBefore.bind(this));var T=[];try{for(var o=n(this),i=o.next();!i.done;i=o.next()){var a=i.value;T.push(new t(a))}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}for(this.list.next=this.list.prev=this.list;T.length>1;){var s=T.shift(),l=T.shift();s.merge(l,e),T.push(s)}return T.length&&(this.list=T[0].list),this},t.prototype.merge=function(t,Q){var T,n,o,i,a;void 0===Q&&(Q=null),null===Q&&(Q=this.isBefore.bind(this));for(var s=this.list.next,l=t.list.next;s.data!==e.END&&l.data!==e.END;)Q(l.data,s.data)?(T=r([s,l],2),l.prev.next=T[0],s.prev.next=T[1],n=r([s.prev,l.prev],2),l.prev=n[0],s.prev=n[1],o=r([t.list,this.list],2),this.list.prev.next=o[0],t.list.prev.next=o[1],i=r([t.list.prev,this.list.prev],2),this.list.prev=i[0],t.list.prev=i[1],s=(a=r([l.next,s],2))[0],l=a[1]):s=s.next;return l.data!==e.END&&(this.list.prev.next=t.list.next,t.list.next.prev=this.list.prev,t.list.prev.next=this.list,this.list.prev=t.list.prev,t.list.next=t.list.prev=t.list),this},t}();e.LinkedList=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractNodeFactory=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.create=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.node[t](e,Q)},e}(Q(37).AbstractFactory);e.AbstractNodeFactory=n},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MML=void 0;var T=Q(0),n=Q(59),o=Q(38),i=Q(60),a=Q(31),s=Q(61),l=Q(62),c=Q(63),u=Q(64),p=Q(65),h=Q(66),f=Q(67),d=Q(113),L=Q(68),H=Q(69),m=Q(70),y=Q(71),v=Q(72),g=Q(73),b=Q(39),M=Q(74),V=Q(75),x=Q(76),O=Q(77),_=Q(78),S=Q(114),E=Q(115),C=Q(79),w=Q(80),A=Q(81),P=Q(116);e.MML=((r={})[n.MmlMath.prototype.kind]=n.MmlMath,r[o.MmlMi.prototype.kind]=o.MmlMi,r[i.MmlMn.prototype.kind]=i.MmlMn,r[a.MmlMo.prototype.kind]=a.MmlMo,r[s.MmlMtext.prototype.kind]=s.MmlMtext,r[l.MmlMspace.prototype.kind]=l.MmlMspace,r[c.MmlMs.prototype.kind]=c.MmlMs,r[u.MmlMrow.prototype.kind]=u.MmlMrow,r[u.MmlInferredMrow.prototype.kind]=u.MmlInferredMrow,r[p.MmlMfrac.prototype.kind]=p.MmlMfrac,r[h.MmlMsqrt.prototype.kind]=h.MmlMsqrt,r[f.MmlMroot.prototype.kind]=f.MmlMroot,r[d.MmlMstyle.prototype.kind]=d.MmlMstyle,r[L.MmlMerror.prototype.kind]=L.MmlMerror,r[H.MmlMpadded.prototype.kind]=H.MmlMpadded,r[m.MmlMphantom.prototype.kind]=m.MmlMphantom,r[y.MmlMfenced.prototype.kind]=y.MmlMfenced,r[v.MmlMenclose.prototype.kind]=v.MmlMenclose,r[g.MmlMaction.prototype.kind]=g.MmlMaction,r[b.MmlMsub.prototype.kind]=b.MmlMsub,r[b.MmlMsup.prototype.kind]=b.MmlMsup,r[b.MmlMsubsup.prototype.kind]=b.MmlMsubsup,r[M.MmlMunder.prototype.kind]=M.MmlMunder,r[M.MmlMover.prototype.kind]=M.MmlMover,r[M.MmlMunderover.prototype.kind]=M.MmlMunderover,r[V.MmlMmultiscripts.prototype.kind]=V.MmlMmultiscripts,r[V.MmlMprescripts.prototype.kind]=V.MmlMprescripts,r[V.MmlNone.prototype.kind]=V.MmlNone,r[x.MmlMtable.prototype.kind]=x.MmlMtable,r[O.MmlMlabeledtr.prototype.kind]=O.MmlMlabeledtr,r[O.MmlMtr.prototype.kind]=O.MmlMtr,r[_.MmlMtd.prototype.kind]=_.MmlMtd,r[S.MmlMaligngroup.prototype.kind]=S.MmlMaligngroup,r[E.MmlMalignmark.prototype.kind]=E.MmlMalignmark,r[C.MmlMglyph.prototype.kind]=C.MmlMglyph,r[w.MmlSemantics.prototype.kind]=w.MmlSemantics,r[w.MmlAnnotation.prototype.kind]=w.MmlAnnotation,r[w.MmlAnnotationXML.prototype.kind]=w.MmlAnnotationXML,r[A.TeXAtom.prototype.kind]=A.TeXAtom,r[P.MathChoice.prototype.kind]=P.MathChoice,r[T.TextNode.prototype.kind]=T.TextNode,r[T.XMLNode.prototype.kind]=T.XMLNode,r)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OPTABLE=e.MMLSPACING=e.RANGES=e.MO=e.OPDEF=void 0;var r=Q(0);function T(t,e,Q,T){return void 0===Q&&(Q=r.TEXCLASS.BIN),void 0===T&&(T=null),[t,e,Q,T]}e.OPDEF=T,e.MO={ORD:T(0,0,r.TEXCLASS.ORD),ORD11:T(1,1,r.TEXCLASS.ORD),ORD21:T(2,1,r.TEXCLASS.ORD),ORD02:T(0,2,r.TEXCLASS.ORD),ORD55:T(5,5,r.TEXCLASS.ORD),OP:T(1,2,r.TEXCLASS.OP,{largeop:!0,movablelimits:!0,symmetric:!0}),OPFIXED:T(1,2,r.TEXCLASS.OP,{largeop:!0,movablelimits:!0}),INTEGRAL:T(0,1,r.TEXCLASS.OP,{largeop:!0,symmetric:!0}),INTEGRAL2:T(1,2,r.TEXCLASS.OP,{largeop:!0,symmetric:!0}),BIN3:T(3,3,r.TEXCLASS.BIN),BIN4:T(4,4,r.TEXCLASS.BIN),BIN01:T(0,1,r.TEXCLASS.BIN),BIN5:T(5,5,r.TEXCLASS.BIN),TALLBIN:T(4,4,r.TEXCLASS.BIN,{stretchy:!0}),BINOP:T(4,4,r.TEXCLASS.BIN,{largeop:!0,movablelimits:!0}),REL:T(5,5,r.TEXCLASS.REL),REL1:T(1,1,r.TEXCLASS.REL,{stretchy:!0}),REL4:T(4,4,r.TEXCLASS.REL),RELSTRETCH:T(5,5,r.TEXCLASS.REL,{stretchy:!0}),RELACCENT:T(5,5,r.TEXCLASS.REL,{accent:!0}),WIDEREL:T(5,5,r.TEXCLASS.REL,{accent:!0,stretchy:!0}),OPEN:T(0,0,r.TEXCLASS.OPEN,{fence:!0,stretchy:!0,symmetric:!0}),CLOSE:T(0,0,r.TEXCLASS.CLOSE,{fence:!0,stretchy:!0,symmetric:!0}),INNER:T(0,0,r.TEXCLASS.INNER),PUNCT:T(0,3,r.TEXCLASS.PUNCT),ACCENT:T(0,0,r.TEXCLASS.ORD,{accent:!0}),WIDEACCENT:T(0,0,r.TEXCLASS.ORD,{accent:!0,stretchy:!0})},e.RANGES=[[32,127,r.TEXCLASS.REL,\"BasicLatin\"],[160,255,r.TEXCLASS.ORD,\"Latin1Supplement\"],[256,383,r.TEXCLASS.ORD,\"LatinExtendedA\"],[384,591,r.TEXCLASS.ORD,\"LatinExtendedB\"],[688,767,r.TEXCLASS.ORD,\"SpacingModLetters\"],[768,879,r.TEXCLASS.ORD,\"CombDiacritMarks\"],[880,1023,r.TEXCLASS.ORD,\"GreekAndCoptic\"],[7680,7935,r.TEXCLASS.ORD,\"LatinExtendedAdditional\"],[8192,8303,r.TEXCLASS.PUNCT,\"GeneralPunctuation\"],[8304,8351,r.TEXCLASS.ORD,\"SuperAndSubscripts\"],[8352,8399,r.TEXCLASS.ORD,\"Currency\"],[8400,8447,r.TEXCLASS.ORD,\"CombDiactForSymbols\"],[8448,8527,r.TEXCLASS.ORD,\"LetterlikeSymbols\"],[8528,8591,r.TEXCLASS.ORD,\"NumberForms\"],[8592,8703,r.TEXCLASS.REL,\"Arrows\"],[8704,8959,r.TEXCLASS.BIN,\"MathOperators\"],[8960,9215,r.TEXCLASS.ORD,\"MiscTechnical\"],[9312,9471,r.TEXCLASS.ORD,\"EnclosedAlphaNums\"],[9472,9631,r.TEXCLASS.ORD,\"BoxDrawing\"],[9632,9727,r.TEXCLASS.ORD,\"GeometricShapes\"],[9984,10175,r.TEXCLASS.ORD,\"Dingbats\"],[10176,10223,r.TEXCLASS.ORD,\"MiscMathSymbolsA\"],[10224,10239,r.TEXCLASS.REL,\"SupplementalArrowsA\"],[10496,10623,r.TEXCLASS.REL,\"SupplementalArrowsB\"],[10624,10751,r.TEXCLASS.ORD,\"MiscMathSymbolsB\"],[10752,11007,r.TEXCLASS.BIN,\"SuppMathOperators\"],[11008,11263,r.TEXCLASS.ORD,\"MiscSymbolsAndArrows\"],[119808,120831,r.TEXCLASS.ORD,\"MathAlphabets\"]],e.MMLSPACING=[[0,0],[1,2],[3,3],[4,4],[0,0],[0,0],[0,3]],e.OPTABLE={prefix:{\"(\":e.MO.OPEN,\"+\":e.MO.BIN01,\"-\":e.MO.BIN01,\"[\":e.MO.OPEN,\"{\":e.MO.OPEN,\"|\":e.MO.OPEN,\"||\":[0,0,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xac\":e.MO.ORD21,\"\\xb1\":e.MO.BIN01,\"\\u2016\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2018\":[0,0,r.TEXCLASS.OPEN,{fence:!0}],\"\\u201c\":[0,0,r.TEXCLASS.OPEN,{fence:!0}],\"\\u2145\":e.MO.ORD21,\"\\u2146\":T(2,0,r.TEXCLASS.ORD),\"\\u2200\":e.MO.ORD21,\"\\u2202\":e.MO.ORD21,\"\\u2203\":e.MO.ORD21,\"\\u2204\":e.MO.ORD21,\"\\u2207\":e.MO.ORD21,\"\\u220f\":e.MO.OP,\"\\u2210\":e.MO.OP,\"\\u2211\":e.MO.OP,\"\\u2212\":e.MO.BIN01,\"\\u2213\":e.MO.BIN01,\"\\u221a\":[1,1,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u221b\":e.MO.ORD11,\"\\u221c\":e.MO.ORD11,\"\\u2220\":e.MO.ORD,\"\\u2221\":e.MO.ORD,\"\\u2222\":e.MO.ORD,\"\\u222b\":e.MO.INTEGRAL,\"\\u222c\":e.MO.INTEGRAL,\"\\u222d\":e.MO.INTEGRAL,\"\\u222e\":e.MO.INTEGRAL,\"\\u222f\":e.MO.INTEGRAL,\"\\u2230\":e.MO.INTEGRAL,\"\\u2231\":e.MO.INTEGRAL,\"\\u2232\":e.MO.INTEGRAL,\"\\u2233\":e.MO.INTEGRAL,\"\\u22c0\":e.MO.OP,\"\\u22c1\":e.MO.OP,\"\\u22c2\":e.MO.OP,\"\\u22c3\":e.MO.OP,\"\\u2308\":e.MO.OPEN,\"\\u230a\":e.MO.OPEN,\"\\u2772\":e.MO.OPEN,\"\\u27e6\":e.MO.OPEN,\"\\u27e8\":e.MO.OPEN,\"\\u27ea\":e.MO.OPEN,\"\\u27ec\":e.MO.OPEN,\"\\u27ee\":e.MO.OPEN,\"\\u2980\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2983\":e.MO.OPEN,\"\\u2985\":e.MO.OPEN,\"\\u2987\":e.MO.OPEN,\"\\u2989\":e.MO.OPEN,\"\\u298b\":e.MO.OPEN,\"\\u298d\":e.MO.OPEN,\"\\u298f\":e.MO.OPEN,\"\\u2991\":e.MO.OPEN,\"\\u2993\":e.MO.OPEN,\"\\u2995\":e.MO.OPEN,\"\\u2997\":e.MO.OPEN,\"\\u29fc\":e.MO.OPEN,\"\\u2a00\":e.MO.OP,\"\\u2a01\":e.MO.OP,\"\\u2a02\":e.MO.OP,\"\\u2a03\":e.MO.OP,\"\\u2a04\":e.MO.OP,\"\\u2a05\":e.MO.OP,\"\\u2a06\":e.MO.OP,\"\\u2a07\":e.MO.OP,\"\\u2a08\":e.MO.OP,\"\\u2a09\":e.MO.OP,\"\\u2a0a\":e.MO.OP,\"\\u2a0b\":e.MO.INTEGRAL2,\"\\u2a0c\":e.MO.INTEGRAL,\"\\u2a0d\":e.MO.INTEGRAL2,\"\\u2a0e\":e.MO.INTEGRAL2,\"\\u2a0f\":e.MO.INTEGRAL2,\"\\u2a10\":e.MO.OP,\"\\u2a11\":e.MO.OP,\"\\u2a12\":e.MO.OP,\"\\u2a13\":e.MO.OP,\"\\u2a14\":e.MO.OP,\"\\u2a15\":e.MO.INTEGRAL2,\"\\u2a16\":e.MO.INTEGRAL2,\"\\u2a17\":e.MO.INTEGRAL2,\"\\u2a18\":e.MO.INTEGRAL2,\"\\u2a19\":e.MO.INTEGRAL2,\"\\u2a1a\":e.MO.INTEGRAL2,\"\\u2a1b\":e.MO.INTEGRAL2,\"\\u2a1c\":e.MO.INTEGRAL2,\"\\u2afc\":e.MO.OP,\"\\u2aff\":e.MO.OP},postfix:{\"!!\":T(1,0),\"!\":[1,0,r.TEXCLASS.CLOSE,null],\"&\":e.MO.ORD,\")\":e.MO.CLOSE,\"++\":T(0,0),\"--\":T(0,0),\"..\":T(0,0),\"...\":e.MO.ORD,\"'\":e.MO.ACCENT,\"]\":e.MO.CLOSE,\"^\":e.MO.WIDEACCENT,_:e.MO.WIDEACCENT,\"`\":e.MO.ACCENT,\"|\":e.MO.CLOSE,\"}\":e.MO.CLOSE,\"~\":e.MO.WIDEACCENT,\"||\":[0,0,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xa8\":e.MO.ACCENT,\"\\xaf\":e.MO.WIDEACCENT,\"\\xb0\":e.MO.ORD,\"\\xb4\":e.MO.ACCENT,\"\\xb8\":e.MO.ACCENT,\"\\u02c6\":e.MO.WIDEACCENT,\"\\u02c7\":e.MO.WIDEACCENT,\"\\u02c9\":e.MO.WIDEACCENT,\"\\u02ca\":e.MO.ACCENT,\"\\u02cb\":e.MO.ACCENT,\"\\u02cd\":e.MO.WIDEACCENT,\"\\u02d8\":e.MO.ACCENT,\"\\u02d9\":e.MO.ACCENT,\"\\u02da\":e.MO.ACCENT,\"\\u02dc\":e.MO.WIDEACCENT,\"\\u02dd\":e.MO.ACCENT,\"\\u02f7\":e.MO.WIDEACCENT,\"\\u0302\":e.MO.WIDEACCENT,\"\\u0311\":e.MO.ACCENT,\"\\u03f6\":e.MO.REL,\"\\u2016\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2019\":[0,0,r.TEXCLASS.CLOSE,{fence:!0}],\"\\u201d\":[0,0,r.TEXCLASS.CLOSE,{fence:!0}],\"\\u2032\":e.MO.ORD02,\"\\u203e\":e.MO.WIDEACCENT,\"\\u20db\":e.MO.ACCENT,\"\\u20dc\":e.MO.ACCENT,\"\\u2309\":e.MO.CLOSE,\"\\u230b\":e.MO.CLOSE,\"\\u23b4\":e.MO.WIDEACCENT,\"\\u23b5\":e.MO.WIDEACCENT,\"\\u23dc\":e.MO.WIDEACCENT,\"\\u23dd\":e.MO.WIDEACCENT,\"\\u23de\":e.MO.WIDEACCENT,\"\\u23df\":e.MO.WIDEACCENT,\"\\u23e0\":e.MO.WIDEACCENT,\"\\u23e1\":e.MO.WIDEACCENT,\"\\u25a0\":e.MO.BIN3,\"\\u25a1\":e.MO.BIN3,\"\\u25aa\":e.MO.BIN3,\"\\u25ab\":e.MO.BIN3,\"\\u25ad\":e.MO.BIN3,\"\\u25ae\":e.MO.BIN3,\"\\u25af\":e.MO.BIN3,\"\\u25b0\":e.MO.BIN3,\"\\u25b1\":e.MO.BIN3,\"\\u25b2\":e.MO.BIN4,\"\\u25b4\":e.MO.BIN4,\"\\u25b6\":e.MO.BIN4,\"\\u25b7\":e.MO.BIN4,\"\\u25b8\":e.MO.BIN4,\"\\u25bc\":e.MO.BIN4,\"\\u25be\":e.MO.BIN4,\"\\u25c0\":e.MO.BIN4,\"\\u25c1\":e.MO.BIN4,\"\\u25c2\":e.MO.BIN4,\"\\u25c4\":e.MO.BIN4,\"\\u25c5\":e.MO.BIN4,\"\\u25c6\":e.MO.BIN4,\"\\u25c7\":e.MO.BIN4,\"\\u25c8\":e.MO.BIN4,\"\\u25c9\":e.MO.BIN4,\"\\u25cc\":e.MO.BIN4,\"\\u25cd\":e.MO.BIN4,\"\\u25ce\":e.MO.BIN4,\"\\u25cf\":e.MO.BIN4,\"\\u25d6\":e.MO.BIN4,\"\\u25d7\":e.MO.BIN4,\"\\u25e6\":e.MO.BIN4,\"\\u266d\":e.MO.ORD02,\"\\u266e\":e.MO.ORD02,\"\\u266f\":e.MO.ORD02,\"\\u2773\":e.MO.CLOSE,\"\\u27e7\":e.MO.CLOSE,\"\\u27e9\":e.MO.CLOSE,\"\\u27eb\":e.MO.CLOSE,\"\\u27ed\":e.MO.CLOSE,\"\\u27ef\":e.MO.CLOSE,\"\\u2980\":[0,0,r.TEXCLASS.ORD,{fence:!0,stretchy:!0}],\"\\u2984\":e.MO.CLOSE,\"\\u2986\":e.MO.CLOSE,\"\\u2988\":e.MO.CLOSE,\"\\u298a\":e.MO.CLOSE,\"\\u298c\":e.MO.CLOSE,\"\\u298e\":e.MO.CLOSE,\"\\u2990\":e.MO.CLOSE,\"\\u2992\":e.MO.CLOSE,\"\\u2994\":e.MO.CLOSE,\"\\u2996\":e.MO.CLOSE,\"\\u2998\":e.MO.CLOSE,\"\\u29fd\":e.MO.CLOSE},infix:{\"!=\":e.MO.BIN4,\"#\":e.MO.ORD,$:e.MO.ORD,\"%\":[3,3,r.TEXCLASS.ORD,null],\"&&\":e.MO.BIN4,\"\":e.MO.ORD,\"*\":e.MO.BIN3,\"**\":T(1,1),\"*=\":e.MO.BIN4,\"+\":e.MO.BIN4,\"+=\":e.MO.BIN4,\",\":[0,3,r.TEXCLASS.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"-\":e.MO.BIN4,\"-=\":e.MO.BIN4,\"->\":e.MO.BIN5,\".\":[0,3,r.TEXCLASS.PUNCT,{separator:!0}],\"/\":e.MO.ORD11,\"//\":T(1,1),\"/=\":e.MO.BIN4,\":\":[1,2,r.TEXCLASS.REL,null],\":=\":e.MO.BIN4,\";\":[0,3,r.TEXCLASS.PUNCT,{linebreakstyle:\"after\",separator:!0}],\"<\":e.MO.REL,\"<=\":e.MO.BIN5,\"<>\":T(1,1),\"=\":e.MO.REL,\"==\":e.MO.BIN4,\">\":e.MO.REL,\">=\":e.MO.BIN5,\"?\":[1,1,r.TEXCLASS.CLOSE,null],\"@\":e.MO.ORD11,\"\\\\\":e.MO.ORD,\"^\":e.MO.ORD11,_:e.MO.ORD11,\"|\":[2,2,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"||\":[2,2,r.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],\"|||\":[2,2,r.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],\"\\xb1\":e.MO.BIN4,\"\\xb7\":e.MO.BIN4,\"\\xd7\":e.MO.BIN4,\"\\xf7\":e.MO.BIN4,\"\\u02b9\":e.MO.ORD,\"\\u0300\":e.MO.ACCENT,\"\\u0301\":e.MO.ACCENT,\"\\u0303\":e.MO.WIDEACCENT,\"\\u0304\":e.MO.ACCENT,\"\\u0306\":e.MO.ACCENT,\"\\u0307\":e.MO.ACCENT,\"\\u0308\":e.MO.ACCENT,\"\\u030c\":e.MO.ACCENT,\"\\u0332\":e.MO.WIDEACCENT,\"\\u0338\":e.MO.REL4,\"\\u2015\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u2017\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u2020\":e.MO.BIN3,\"\\u2021\":e.MO.BIN3,\"\\u2022\":e.MO.BIN4,\"\\u2026\":e.MO.INNER,\"\\u2044\":e.MO.TALLBIN,\"\\u2061\":e.MO.ORD,\"\\u2062\":e.MO.ORD,\"\\u2063\":[0,0,r.TEXCLASS.ORD,{linebreakstyle:\"after\",separator:!0}],\"\\u2064\":e.MO.ORD,\"\\u20d7\":e.MO.ACCENT,\"\\u2111\":e.MO.ORD,\"\\u2113\":e.MO.ORD,\"\\u2118\":e.MO.ORD,\"\\u211c\":e.MO.ORD,\"\\u2190\":e.MO.WIDEREL,\"\\u2191\":e.MO.RELSTRETCH,\"\\u2192\":e.MO.WIDEREL,\"\\u2193\":e.MO.RELSTRETCH,\"\\u2194\":e.MO.WIDEREL,\"\\u2195\":e.MO.RELSTRETCH,\"\\u2196\":e.MO.RELSTRETCH,\"\\u2197\":e.MO.RELSTRETCH,\"\\u2198\":e.MO.RELSTRETCH,\"\\u2199\":e.MO.RELSTRETCH,\"\\u219a\":e.MO.RELACCENT,\"\\u219b\":e.MO.RELACCENT,\"\\u219c\":e.MO.WIDEREL,\"\\u219d\":e.MO.WIDEREL,\"\\u219e\":e.MO.WIDEREL,\"\\u219f\":e.MO.WIDEREL,\"\\u21a0\":e.MO.WIDEREL,\"\\u21a1\":e.MO.RELSTRETCH,\"\\u21a2\":e.MO.WIDEREL,\"\\u21a3\":e.MO.WIDEREL,\"\\u21a4\":e.MO.WIDEREL,\"\\u21a5\":e.MO.RELSTRETCH,\"\\u21a6\":e.MO.WIDEREL,\"\\u21a7\":e.MO.RELSTRETCH,\"\\u21a8\":e.MO.RELSTRETCH,\"\\u21a9\":e.MO.WIDEREL,\"\\u21aa\":e.MO.WIDEREL,\"\\u21ab\":e.MO.WIDEREL,\"\\u21ac\":e.MO.WIDEREL,\"\\u21ad\":e.MO.WIDEREL,\"\\u21ae\":e.MO.RELACCENT,\"\\u21af\":e.MO.RELSTRETCH,\"\\u21b0\":e.MO.RELSTRETCH,\"\\u21b1\":e.MO.RELSTRETCH,\"\\u21b2\":e.MO.RELSTRETCH,\"\\u21b3\":e.MO.RELSTRETCH,\"\\u21b4\":e.MO.RELSTRETCH,\"\\u21b5\":e.MO.RELSTRETCH,\"\\u21b6\":e.MO.RELACCENT,\"\\u21b7\":e.MO.RELACCENT,\"\\u21b8\":e.MO.REL,\"\\u21b9\":e.MO.WIDEREL,\"\\u21ba\":e.MO.REL,\"\\u21bb\":e.MO.REL,\"\\u21bc\":e.MO.WIDEREL,\"\\u21bd\":e.MO.WIDEREL,\"\\u21be\":e.MO.RELSTRETCH,\"\\u21bf\":e.MO.RELSTRETCH,\"\\u21c0\":e.MO.WIDEREL,\"\\u21c1\":e.MO.WIDEREL,\"\\u21c2\":e.MO.RELSTRETCH,\"\\u21c3\":e.MO.RELSTRETCH,\"\\u21c4\":e.MO.WIDEREL,\"\\u21c5\":e.MO.RELSTRETCH,\"\\u21c6\":e.MO.WIDEREL,\"\\u21c7\":e.MO.WIDEREL,\"\\u21c8\":e.MO.RELSTRETCH,\"\\u21c9\":e.MO.WIDEREL,\"\\u21ca\":e.MO.RELSTRETCH,\"\\u21cb\":e.MO.WIDEREL,\"\\u21cc\":e.MO.WIDEREL,\"\\u21cd\":e.MO.RELACCENT,\"\\u21ce\":e.MO.RELACCENT,\"\\u21cf\":e.MO.RELACCENT,\"\\u21d0\":e.MO.WIDEREL,\"\\u21d1\":e.MO.RELSTRETCH,\"\\u21d2\":e.MO.WIDEREL,\"\\u21d3\":e.MO.RELSTRETCH,\"\\u21d4\":e.MO.WIDEREL,\"\\u21d5\":e.MO.RELSTRETCH,\"\\u21d6\":e.MO.RELSTRETCH,\"\\u21d7\":e.MO.RELSTRETCH,\"\\u21d8\":e.MO.RELSTRETCH,\"\\u21d9\":e.MO.RELSTRETCH,\"\\u21da\":e.MO.WIDEREL,\"\\u21db\":e.MO.WIDEREL,\"\\u21dc\":e.MO.WIDEREL,\"\\u21dd\":e.MO.WIDEREL,\"\\u21de\":e.MO.REL,\"\\u21df\":e.MO.REL,\"\\u21e0\":e.MO.WIDEREL,\"\\u21e1\":e.MO.RELSTRETCH,\"\\u21e2\":e.MO.WIDEREL,\"\\u21e3\":e.MO.RELSTRETCH,\"\\u21e4\":e.MO.WIDEREL,\"\\u21e5\":e.MO.WIDEREL,\"\\u21e6\":e.MO.WIDEREL,\"\\u21e7\":e.MO.RELSTRETCH,\"\\u21e8\":e.MO.WIDEREL,\"\\u21e9\":e.MO.RELSTRETCH,\"\\u21ea\":e.MO.RELSTRETCH,\"\\u21eb\":e.MO.RELSTRETCH,\"\\u21ec\":e.MO.RELSTRETCH,\"\\u21ed\":e.MO.RELSTRETCH,\"\\u21ee\":e.MO.RELSTRETCH,\"\\u21ef\":e.MO.RELSTRETCH,\"\\u21f0\":e.MO.WIDEREL,\"\\u21f1\":e.MO.REL,\"\\u21f2\":e.MO.REL,\"\\u21f3\":e.MO.RELSTRETCH,\"\\u21f4\":e.MO.RELACCENT,\"\\u21f5\":e.MO.RELSTRETCH,\"\\u21f6\":e.MO.WIDEREL,\"\\u21f7\":e.MO.RELACCENT,\"\\u21f8\":e.MO.RELACCENT,\"\\u21f9\":e.MO.RELACCENT,\"\\u21fa\":e.MO.RELACCENT,\"\\u21fb\":e.MO.RELACCENT,\"\\u21fc\":e.MO.RELACCENT,\"\\u21fd\":e.MO.WIDEREL,\"\\u21fe\":e.MO.WIDEREL,\"\\u21ff\":e.MO.WIDEREL,\"\\u2201\":T(1,2,r.TEXCLASS.ORD),\"\\u2205\":e.MO.ORD,\"\\u2206\":e.MO.BIN3,\"\\u2208\":e.MO.REL,\"\\u2209\":e.MO.REL,\"\\u220a\":e.MO.REL,\"\\u220b\":e.MO.REL,\"\\u220c\":e.MO.REL,\"\\u220d\":e.MO.REL,\"\\u220e\":e.MO.BIN3,\"\\u2212\":e.MO.BIN4,\"\\u2213\":e.MO.BIN4,\"\\u2214\":e.MO.BIN4,\"\\u2215\":e.MO.TALLBIN,\"\\u2216\":e.MO.BIN4,\"\\u2217\":e.MO.BIN4,\"\\u2218\":e.MO.BIN4,\"\\u2219\":e.MO.BIN4,\"\\u221d\":e.MO.REL,\"\\u221e\":e.MO.ORD,\"\\u221f\":e.MO.REL,\"\\u2223\":e.MO.REL,\"\\u2224\":e.MO.REL,\"\\u2225\":e.MO.REL,\"\\u2226\":e.MO.REL,\"\\u2227\":e.MO.BIN4,\"\\u2228\":e.MO.BIN4,\"\\u2229\":e.MO.BIN4,\"\\u222a\":e.MO.BIN4,\"\\u2234\":e.MO.REL,\"\\u2235\":e.MO.REL,\"\\u2236\":e.MO.REL,\"\\u2237\":e.MO.REL,\"\\u2238\":e.MO.BIN4,\"\\u2239\":e.MO.REL,\"\\u223a\":e.MO.BIN4,\"\\u223b\":e.MO.REL,\"\\u223c\":e.MO.REL,\"\\u223d\":e.MO.REL,\"\\u223d\\u0331\":e.MO.BIN3,\"\\u223e\":e.MO.REL,\"\\u223f\":e.MO.BIN3,\"\\u2240\":e.MO.BIN4,\"\\u2241\":e.MO.REL,\"\\u2242\":e.MO.REL,\"\\u2242\\u0338\":e.MO.REL,\"\\u2243\":e.MO.REL,\"\\u2244\":e.MO.REL,\"\\u2245\":e.MO.REL,\"\\u2246\":e.MO.REL,\"\\u2247\":e.MO.REL,\"\\u2248\":e.MO.REL,\"\\u2249\":e.MO.REL,\"\\u224a\":e.MO.REL,\"\\u224b\":e.MO.REL,\"\\u224c\":e.MO.REL,\"\\u224d\":e.MO.REL,\"\\u224e\":e.MO.REL,\"\\u224e\\u0338\":e.MO.REL,\"\\u224f\":e.MO.REL,\"\\u224f\\u0338\":e.MO.REL,\"\\u2250\":e.MO.REL,\"\\u2251\":e.MO.REL,\"\\u2252\":e.MO.REL,\"\\u2253\":e.MO.REL,\"\\u2254\":e.MO.REL,\"\\u2255\":e.MO.REL,\"\\u2256\":e.MO.REL,\"\\u2257\":e.MO.REL,\"\\u2258\":e.MO.REL,\"\\u2259\":e.MO.REL,\"\\u225a\":e.MO.REL,\"\\u225c\":e.MO.REL,\"\\u225d\":e.MO.REL,\"\\u225e\":e.MO.REL,\"\\u225f\":e.MO.REL,\"\\u2260\":e.MO.REL,\"\\u2261\":e.MO.REL,\"\\u2262\":e.MO.REL,\"\\u2263\":e.MO.REL,\"\\u2264\":e.MO.REL,\"\\u2265\":e.MO.REL,\"\\u2266\":e.MO.REL,\"\\u2266\\u0338\":e.MO.REL,\"\\u2267\":e.MO.REL,\"\\u2268\":e.MO.REL,\"\\u2269\":e.MO.REL,\"\\u226a\":e.MO.REL,\"\\u226a\\u0338\":e.MO.REL,\"\\u226b\":e.MO.REL,\"\\u226b\\u0338\":e.MO.REL,\"\\u226c\":e.MO.REL,\"\\u226d\":e.MO.REL,\"\\u226e\":e.MO.REL,\"\\u226f\":e.MO.REL,\"\\u2270\":e.MO.REL,\"\\u2271\":e.MO.REL,\"\\u2272\":e.MO.REL,\"\\u2273\":e.MO.REL,\"\\u2274\":e.MO.REL,\"\\u2275\":e.MO.REL,\"\\u2276\":e.MO.REL,\"\\u2277\":e.MO.REL,\"\\u2278\":e.MO.REL,\"\\u2279\":e.MO.REL,\"\\u227a\":e.MO.REL,\"\\u227b\":e.MO.REL,\"\\u227c\":e.MO.REL,\"\\u227d\":e.MO.REL,\"\\u227e\":e.MO.REL,\"\\u227f\":e.MO.REL,\"\\u227f\\u0338\":e.MO.REL,\"\\u2280\":e.MO.REL,\"\\u2281\":e.MO.REL,\"\\u2282\":e.MO.REL,\"\\u2282\\u20d2\":e.MO.REL,\"\\u2283\":e.MO.REL,\"\\u2283\\u20d2\":e.MO.REL,\"\\u2284\":e.MO.REL,\"\\u2285\":e.MO.REL,\"\\u2286\":e.MO.REL,\"\\u2287\":e.MO.REL,\"\\u2288\":e.MO.REL,\"\\u2289\":e.MO.REL,\"\\u228a\":e.MO.REL,\"\\u228b\":e.MO.REL,\"\\u228c\":e.MO.BIN4,\"\\u228d\":e.MO.BIN4,\"\\u228e\":e.MO.BIN4,\"\\u228f\":e.MO.REL,\"\\u228f\\u0338\":e.MO.REL,\"\\u2290\":e.MO.REL,\"\\u2290\\u0338\":e.MO.REL,\"\\u2291\":e.MO.REL,\"\\u2292\":e.MO.REL,\"\\u2293\":e.MO.BIN4,\"\\u2294\":e.MO.BIN4,\"\\u2295\":e.MO.BIN4,\"\\u2296\":e.MO.BIN4,\"\\u2297\":e.MO.BIN4,\"\\u2298\":e.MO.BIN4,\"\\u2299\":e.MO.BIN4,\"\\u229a\":e.MO.BIN4,\"\\u229b\":e.MO.BIN4,\"\\u229c\":e.MO.BIN4,\"\\u229d\":e.MO.BIN4,\"\\u229e\":e.MO.BIN4,\"\\u229f\":e.MO.BIN4,\"\\u22a0\":e.MO.BIN4,\"\\u22a1\":e.MO.BIN4,\"\\u22a2\":e.MO.REL,\"\\u22a3\":e.MO.REL,\"\\u22a4\":e.MO.ORD55,\"\\u22a5\":e.MO.REL,\"\\u22a6\":e.MO.REL,\"\\u22a7\":e.MO.REL,\"\\u22a8\":e.MO.REL,\"\\u22a9\":e.MO.REL,\"\\u22aa\":e.MO.REL,\"\\u22ab\":e.MO.REL,\"\\u22ac\":e.MO.REL,\"\\u22ad\":e.MO.REL,\"\\u22ae\":e.MO.REL,\"\\u22af\":e.MO.REL,\"\\u22b0\":e.MO.REL,\"\\u22b1\":e.MO.REL,\"\\u22b2\":e.MO.REL,\"\\u22b3\":e.MO.REL,\"\\u22b4\":e.MO.REL,\"\\u22b5\":e.MO.REL,\"\\u22b6\":e.MO.REL,\"\\u22b7\":e.MO.REL,\"\\u22b8\":e.MO.REL,\"\\u22b9\":e.MO.REL,\"\\u22ba\":e.MO.BIN4,\"\\u22bb\":e.MO.BIN4,\"\\u22bc\":e.MO.BIN4,\"\\u22bd\":e.MO.BIN4,\"\\u22be\":e.MO.BIN3,\"\\u22bf\":e.MO.BIN3,\"\\u22c4\":e.MO.BIN4,\"\\u22c5\":e.MO.BIN4,\"\\u22c6\":e.MO.BIN4,\"\\u22c7\":e.MO.BIN4,\"\\u22c8\":e.MO.REL,\"\\u22c9\":e.MO.BIN4,\"\\u22ca\":e.MO.BIN4,\"\\u22cb\":e.MO.BIN4,\"\\u22cc\":e.MO.BIN4,\"\\u22cd\":e.MO.REL,\"\\u22ce\":e.MO.BIN4,\"\\u22cf\":e.MO.BIN4,\"\\u22d0\":e.MO.REL,\"\\u22d1\":e.MO.REL,\"\\u22d2\":e.MO.BIN4,\"\\u22d3\":e.MO.BIN4,\"\\u22d4\":e.MO.REL,\"\\u22d5\":e.MO.REL,\"\\u22d6\":e.MO.REL,\"\\u22d7\":e.MO.REL,\"\\u22d8\":e.MO.REL,\"\\u22d9\":e.MO.REL,\"\\u22da\":e.MO.REL,\"\\u22db\":e.MO.REL,\"\\u22dc\":e.MO.REL,\"\\u22dd\":e.MO.REL,\"\\u22de\":e.MO.REL,\"\\u22df\":e.MO.REL,\"\\u22e0\":e.MO.REL,\"\\u22e1\":e.MO.REL,\"\\u22e2\":e.MO.REL,\"\\u22e3\":e.MO.REL,\"\\u22e4\":e.MO.REL,\"\\u22e5\":e.MO.REL,\"\\u22e6\":e.MO.REL,\"\\u22e7\":e.MO.REL,\"\\u22e8\":e.MO.REL,\"\\u22e9\":e.MO.REL,\"\\u22ea\":e.MO.REL,\"\\u22eb\":e.MO.REL,\"\\u22ec\":e.MO.REL,\"\\u22ed\":e.MO.REL,\"\\u22ee\":e.MO.ORD55,\"\\u22ef\":e.MO.INNER,\"\\u22f0\":e.MO.REL,\"\\u22f1\":[5,5,r.TEXCLASS.INNER,null],\"\\u22f2\":e.MO.REL,\"\\u22f3\":e.MO.REL,\"\\u22f4\":e.MO.REL,\"\\u22f5\":e.MO.REL,\"\\u22f6\":e.MO.REL,\"\\u22f7\":e.MO.REL,\"\\u22f8\":e.MO.REL,\"\\u22f9\":e.MO.REL,\"\\u22fa\":e.MO.REL,\"\\u22fb\":e.MO.REL,\"\\u22fc\":e.MO.REL,\"\\u22fd\":e.MO.REL,\"\\u22fe\":e.MO.REL,\"\\u22ff\":e.MO.REL,\"\\u2305\":e.MO.BIN3,\"\\u2306\":e.MO.BIN3,\"\\u2322\":e.MO.REL4,\"\\u2323\":e.MO.REL4,\"\\u2329\":e.MO.OPEN,\"\\u232a\":e.MO.CLOSE,\"\\u23aa\":e.MO.ORD,\"\\u23af\":[0,0,r.TEXCLASS.ORD,{stretchy:!0}],\"\\u23b0\":e.MO.OPEN,\"\\u23b1\":e.MO.CLOSE,\"\\u2500\":e.MO.ORD,\"\\u25b3\":e.MO.BIN4,\"\\u25b5\":e.MO.BIN4,\"\\u25b9\":e.MO.BIN4,\"\\u25bd\":e.MO.BIN4,\"\\u25bf\":e.MO.BIN4,\"\\u25c3\":e.MO.BIN4,\"\\u25ef\":e.MO.BIN3,\"\\u2660\":e.MO.ORD,\"\\u2661\":e.MO.ORD,\"\\u2662\":e.MO.ORD,\"\\u2663\":e.MO.ORD,\"\\u2758\":e.MO.REL,\"\\u27f0\":e.MO.RELSTRETCH,\"\\u27f1\":e.MO.RELSTRETCH,\"\\u27f5\":e.MO.WIDEREL,\"\\u27f6\":e.MO.WIDEREL,\"\\u27f7\":e.MO.WIDEREL,\"\\u27f8\":e.MO.WIDEREL,\"\\u27f9\":e.MO.WIDEREL,\"\\u27fa\":e.MO.WIDEREL,\"\\u27fb\":e.MO.WIDEREL,\"\\u27fc\":e.MO.WIDEREL,\"\\u27fd\":e.MO.WIDEREL,\"\\u27fe\":e.MO.WIDEREL,\"\\u27ff\":e.MO.WIDEREL,\"\\u2900\":e.MO.RELACCENT,\"\\u2901\":e.MO.RELACCENT,\"\\u2902\":e.MO.RELACCENT,\"\\u2903\":e.MO.RELACCENT,\"\\u2904\":e.MO.RELACCENT,\"\\u2905\":e.MO.RELACCENT,\"\\u2906\":e.MO.RELACCENT,\"\\u2907\":e.MO.RELACCENT,\"\\u2908\":e.MO.REL,\"\\u2909\":e.MO.REL,\"\\u290a\":e.MO.RELSTRETCH,\"\\u290b\":e.MO.RELSTRETCH,\"\\u290c\":e.MO.WIDEREL,\"\\u290d\":e.MO.WIDEREL,\"\\u290e\":e.MO.WIDEREL,\"\\u290f\":e.MO.WIDEREL,\"\\u2910\":e.MO.WIDEREL,\"\\u2911\":e.MO.RELACCENT,\"\\u2912\":e.MO.RELSTRETCH,\"\\u2913\":e.MO.RELSTRETCH,\"\\u2914\":e.MO.RELACCENT,\"\\u2915\":e.MO.RELACCENT,\"\\u2916\":e.MO.RELACCENT,\"\\u2917\":e.MO.RELACCENT,\"\\u2918\":e.MO.RELACCENT,\"\\u2919\":e.MO.RELACCENT,\"\\u291a\":e.MO.RELACCENT,\"\\u291b\":e.MO.RELACCENT,\"\\u291c\":e.MO.RELACCENT,\"\\u291d\":e.MO.RELACCENT,\"\\u291e\":e.MO.RELACCENT,\"\\u291f\":e.MO.RELACCENT,\"\\u2920\":e.MO.RELACCENT,\"\\u2921\":e.MO.RELSTRETCH,\"\\u2922\":e.MO.RELSTRETCH,\"\\u2923\":e.MO.REL,\"\\u2924\":e.MO.REL,\"\\u2925\":e.MO.REL,\"\\u2926\":e.MO.REL,\"\\u2927\":e.MO.REL,\"\\u2928\":e.MO.REL,\"\\u2929\":e.MO.REL,\"\\u292a\":e.MO.REL,\"\\u292b\":e.MO.REL,\"\\u292c\":e.MO.REL,\"\\u292d\":e.MO.REL,\"\\u292e\":e.MO.REL,\"\\u292f\":e.MO.REL,\"\\u2930\":e.MO.REL,\"\\u2931\":e.MO.REL,\"\\u2932\":e.MO.REL,\"\\u2933\":e.MO.RELACCENT,\"\\u2934\":e.MO.REL,\"\\u2935\":e.MO.REL,\"\\u2936\":e.MO.REL,\"\\u2937\":e.MO.REL,\"\\u2938\":e.MO.REL,\"\\u2939\":e.MO.REL,\"\\u293a\":e.MO.RELACCENT,\"\\u293b\":e.MO.RELACCENT,\"\\u293c\":e.MO.RELACCENT,\"\\u293d\":e.MO.RELACCENT,\"\\u293e\":e.MO.REL,\"\\u293f\":e.MO.REL,\"\\u2940\":e.MO.REL,\"\\u2941\":e.MO.REL,\"\\u2942\":e.MO.RELACCENT,\"\\u2943\":e.MO.RELACCENT,\"\\u2944\":e.MO.RELACCENT,\"\\u2945\":e.MO.RELACCENT,\"\\u2946\":e.MO.RELACCENT,\"\\u2947\":e.MO.RELACCENT,\"\\u2948\":e.MO.RELACCENT,\"\\u2949\":e.MO.REL,\"\\u294a\":e.MO.RELACCENT,\"\\u294b\":e.MO.RELACCENT,\"\\u294c\":e.MO.REL,\"\\u294d\":e.MO.REL,\"\\u294e\":e.MO.WIDEREL,\"\\u294f\":e.MO.RELSTRETCH,\"\\u2950\":e.MO.WIDEREL,\"\\u2951\":e.MO.RELSTRETCH,\"\\u2952\":e.MO.WIDEREL,\"\\u2953\":e.MO.WIDEREL,\"\\u2954\":e.MO.RELSTRETCH,\"\\u2955\":e.MO.RELSTRETCH,\"\\u2956\":e.MO.RELSTRETCH,\"\\u2957\":e.MO.RELSTRETCH,\"\\u2958\":e.MO.RELSTRETCH,\"\\u2959\":e.MO.RELSTRETCH,\"\\u295a\":e.MO.WIDEREL,\"\\u295b\":e.MO.WIDEREL,\"\\u295c\":e.MO.RELSTRETCH,\"\\u295d\":e.MO.RELSTRETCH,\"\\u295e\":e.MO.WIDEREL,\"\\u295f\":e.MO.WIDEREL,\"\\u2960\":e.MO.RELSTRETCH,\"\\u2961\":e.MO.RELSTRETCH,\"\\u2962\":e.MO.RELACCENT,\"\\u2963\":e.MO.REL,\"\\u2964\":e.MO.RELACCENT,\"\\u2965\":e.MO.REL,\"\\u2966\":e.MO.RELACCENT,\"\\u2967\":e.MO.RELACCENT,\"\\u2968\":e.MO.RELACCENT,\"\\u2969\":e.MO.RELACCENT,\"\\u296a\":e.MO.RELACCENT,\"\\u296b\":e.MO.RELACCENT,\"\\u296c\":e.MO.RELACCENT,\"\\u296d\":e.MO.RELACCENT,\"\\u296e\":e.MO.RELSTRETCH,\"\\u296f\":e.MO.RELSTRETCH,\"\\u2970\":e.MO.RELACCENT,\"\\u2971\":e.MO.RELACCENT,\"\\u2972\":e.MO.RELACCENT,\"\\u2973\":e.MO.RELACCENT,\"\\u2974\":e.MO.RELACCENT,\"\\u2975\":e.MO.RELACCENT,\"\\u2976\":e.MO.RELACCENT,\"\\u2977\":e.MO.RELACCENT,\"\\u2978\":e.MO.RELACCENT,\"\\u2979\":e.MO.RELACCENT,\"\\u297a\":e.MO.RELACCENT,\"\\u297b\":e.MO.RELACCENT,\"\\u297c\":e.MO.RELACCENT,\"\\u297d\":e.MO.RELACCENT,\"\\u297e\":e.MO.REL,\"\\u297f\":e.MO.REL,\"\\u2981\":e.MO.BIN3,\"\\u2982\":e.MO.BIN3,\"\\u2999\":e.MO.BIN3,\"\\u299a\":e.MO.BIN3,\"\\u299b\":e.MO.BIN3,\"\\u299c\":e.MO.BIN3,\"\\u299d\":e.MO.BIN3,\"\\u299e\":e.MO.BIN3,\"\\u299f\":e.MO.BIN3,\"\\u29a0\":e.MO.BIN3,\"\\u29a1\":e.MO.BIN3,\"\\u29a2\":e.MO.BIN3,\"\\u29a3\":e.MO.BIN3,\"\\u29a4\":e.MO.BIN3,\"\\u29a5\":e.MO.BIN3,\"\\u29a6\":e.MO.BIN3,\"\\u29a7\":e.MO.BIN3,\"\\u29a8\":e.MO.BIN3,\"\\u29a9\":e.MO.BIN3,\"\\u29aa\":e.MO.BIN3,\"\\u29ab\":e.MO.BIN3,\"\\u29ac\":e.MO.BIN3,\"\\u29ad\":e.MO.BIN3,\"\\u29ae\":e.MO.BIN3,\"\\u29af\":e.MO.BIN3,\"\\u29b0\":e.MO.BIN3,\"\\u29b1\":e.MO.BIN3,\"\\u29b2\":e.MO.BIN3,\"\\u29b3\":e.MO.BIN3,\"\\u29b4\":e.MO.BIN3,\"\\u29b5\":e.MO.BIN3,\"\\u29b6\":e.MO.BIN4,\"\\u29b7\":e.MO.BIN4,\"\\u29b8\":e.MO.BIN4,\"\\u29b9\":e.MO.BIN4,\"\\u29ba\":e.MO.BIN4,\"\\u29bb\":e.MO.BIN4,\"\\u29bc\":e.MO.BIN4,\"\\u29bd\":e.MO.BIN4,\"\\u29be\":e.MO.BIN4,\"\\u29bf\":e.MO.BIN4,\"\\u29c0\":e.MO.REL,\"\\u29c1\":e.MO.REL,\"\\u29c2\":e.MO.BIN3,\"\\u29c3\":e.MO.BIN3,\"\\u29c4\":e.MO.BIN4,\"\\u29c5\":e.MO.BIN4,\"\\u29c6\":e.MO.BIN4,\"\\u29c7\":e.MO.BIN4,\"\\u29c8\":e.MO.BIN4,\"\\u29c9\":e.MO.BIN3,\"\\u29ca\":e.MO.BIN3,\"\\u29cb\":e.MO.BIN3,\"\\u29cc\":e.MO.BIN3,\"\\u29cd\":e.MO.BIN3,\"\\u29ce\":e.MO.REL,\"\\u29cf\":e.MO.REL,\"\\u29cf\\u0338\":e.MO.REL,\"\\u29d0\":e.MO.REL,\"\\u29d0\\u0338\":e.MO.REL,\"\\u29d1\":e.MO.REL,\"\\u29d2\":e.MO.REL,\"\\u29d3\":e.MO.REL,\"\\u29d4\":e.MO.REL,\"\\u29d5\":e.MO.REL,\"\\u29d6\":e.MO.BIN4,\"\\u29d7\":e.MO.BIN4,\"\\u29d8\":e.MO.BIN3,\"\\u29d9\":e.MO.BIN3,\"\\u29db\":e.MO.BIN3,\"\\u29dc\":e.MO.BIN3,\"\\u29dd\":e.MO.BIN3,\"\\u29de\":e.MO.REL,\"\\u29df\":e.MO.BIN3,\"\\u29e0\":e.MO.BIN3,\"\\u29e1\":e.MO.REL,\"\\u29e2\":e.MO.BIN4,\"\\u29e3\":e.MO.REL,\"\\u29e4\":e.MO.REL,\"\\u29e5\":e.MO.REL,\"\\u29e6\":e.MO.REL,\"\\u29e7\":e.MO.BIN3,\"\\u29e8\":e.MO.BIN3,\"\\u29e9\":e.MO.BIN3,\"\\u29ea\":e.MO.BIN3,\"\\u29eb\":e.MO.BIN3,\"\\u29ec\":e.MO.BIN3,\"\\u29ed\":e.MO.BIN3,\"\\u29ee\":e.MO.BIN3,\"\\u29ef\":e.MO.BIN3,\"\\u29f0\":e.MO.BIN3,\"\\u29f1\":e.MO.BIN3,\"\\u29f2\":e.MO.BIN3,\"\\u29f3\":e.MO.BIN3,\"\\u29f4\":e.MO.REL,\"\\u29f5\":e.MO.BIN4,\"\\u29f6\":e.MO.BIN4,\"\\u29f7\":e.MO.BIN4,\"\\u29f8\":e.MO.BIN3,\"\\u29f9\":e.MO.BIN3,\"\\u29fa\":e.MO.BIN3,\"\\u29fb\":e.MO.BIN3,\"\\u29fe\":e.MO.BIN4,\"\\u29ff\":e.MO.BIN4,\"\\u2a1d\":e.MO.BIN3,\"\\u2a1e\":e.MO.BIN3,\"\\u2a1f\":e.MO.BIN3,\"\\u2a20\":e.MO.BIN3,\"\\u2a21\":e.MO.BIN3,\"\\u2a22\":e.MO.BIN4,\"\\u2a23\":e.MO.BIN4,\"\\u2a24\":e.MO.BIN4,\"\\u2a25\":e.MO.BIN4,\"\\u2a26\":e.MO.BIN4,\"\\u2a27\":e.MO.BIN4,\"\\u2a28\":e.MO.BIN4,\"\\u2a29\":e.MO.BIN4,\"\\u2a2a\":e.MO.BIN4,\"\\u2a2b\":e.MO.BIN4,\"\\u2a2c\":e.MO.BIN4,\"\\u2a2d\":e.MO.BIN4,\"\\u2a2e\":e.MO.BIN4,\"\\u2a2f\":e.MO.BIN4,\"\\u2a30\":e.MO.BIN4,\"\\u2a31\":e.MO.BIN4,\"\\u2a32\":e.MO.BIN4,\"\\u2a33\":e.MO.BIN4,\"\\u2a34\":e.MO.BIN4,\"\\u2a35\":e.MO.BIN4,\"\\u2a36\":e.MO.BIN4,\"\\u2a37\":e.MO.BIN4,\"\\u2a38\":e.MO.BIN4,\"\\u2a39\":e.MO.BIN4,\"\\u2a3a\":e.MO.BIN4,\"\\u2a3b\":e.MO.BIN4,\"\\u2a3c\":e.MO.BIN4,\"\\u2a3d\":e.MO.BIN4,\"\\u2a3e\":e.MO.BIN4,\"\\u2a3f\":e.MO.BIN4,\"\\u2a40\":e.MO.BIN4,\"\\u2a41\":e.MO.BIN4,\"\\u2a42\":e.MO.BIN4,\"\\u2a43\":e.MO.BIN4,\"\\u2a44\":e.MO.BIN4,\"\\u2a45\":e.MO.BIN4,\"\\u2a46\":e.MO.BIN4,\"\\u2a47\":e.MO.BIN4,\"\\u2a48\":e.MO.BIN4,\"\\u2a49\":e.MO.BIN4,\"\\u2a4a\":e.MO.BIN4,\"\\u2a4b\":e.MO.BIN4,\"\\u2a4c\":e.MO.BIN4,\"\\u2a4d\":e.MO.BIN4,\"\\u2a4e\":e.MO.BIN4,\"\\u2a4f\":e.MO.BIN4,\"\\u2a50\":e.MO.BIN4,\"\\u2a51\":e.MO.BIN4,\"\\u2a52\":e.MO.BIN4,\"\\u2a53\":e.MO.BIN4,\"\\u2a54\":e.MO.BIN4,\"\\u2a55\":e.MO.BIN4,\"\\u2a56\":e.MO.BIN4,\"\\u2a57\":e.MO.BIN4,\"\\u2a58\":e.MO.BIN4,\"\\u2a59\":e.MO.REL,\"\\u2a5a\":e.MO.BIN4,\"\\u2a5b\":e.MO.BIN4,\"\\u2a5c\":e.MO.BIN4,\"\\u2a5d\":e.MO.BIN4,\"\\u2a5e\":e.MO.BIN4,\"\\u2a5f\":e.MO.BIN4,\"\\u2a60\":e.MO.BIN4,\"\\u2a61\":e.MO.BIN4,\"\\u2a62\":e.MO.BIN4,\"\\u2a63\":e.MO.BIN4,\"\\u2a64\":e.MO.BIN4,\"\\u2a65\":e.MO.BIN4,\"\\u2a66\":e.MO.REL,\"\\u2a67\":e.MO.REL,\"\\u2a68\":e.MO.REL,\"\\u2a69\":e.MO.REL,\"\\u2a6a\":e.MO.REL,\"\\u2a6b\":e.MO.REL,\"\\u2a6c\":e.MO.REL,\"\\u2a6d\":e.MO.REL,\"\\u2a6e\":e.MO.REL,\"\\u2a6f\":e.MO.REL,\"\\u2a70\":e.MO.REL,\"\\u2a71\":e.MO.BIN4,\"\\u2a72\":e.MO.BIN4,\"\\u2a73\":e.MO.REL,\"\\u2a74\":e.MO.REL,\"\\u2a75\":e.MO.REL,\"\\u2a76\":e.MO.REL,\"\\u2a77\":e.MO.REL,\"\\u2a78\":e.MO.REL,\"\\u2a79\":e.MO.REL,\"\\u2a7a\":e.MO.REL,\"\\u2a7b\":e.MO.REL,\"\\u2a7c\":e.MO.REL,\"\\u2a7d\":e.MO.REL,\"\\u2a7d\\u0338\":e.MO.REL,\"\\u2a7e\":e.MO.REL,\"\\u2a7e\\u0338\":e.MO.REL,\"\\u2a7f\":e.MO.REL,\"\\u2a80\":e.MO.REL,\"\\u2a81\":e.MO.REL,\"\\u2a82\":e.MO.REL,\"\\u2a83\":e.MO.REL,\"\\u2a84\":e.MO.REL,\"\\u2a85\":e.MO.REL,\"\\u2a86\":e.MO.REL,\"\\u2a87\":e.MO.REL,\"\\u2a88\":e.MO.REL,\"\\u2a89\":e.MO.REL,\"\\u2a8a\":e.MO.REL,\"\\u2a8b\":e.MO.REL,\"\\u2a8c\":e.MO.REL,\"\\u2a8d\":e.MO.REL,\"\\u2a8e\":e.MO.REL,\"\\u2a8f\":e.MO.REL,\"\\u2a90\":e.MO.REL,\"\\u2a91\":e.MO.REL,\"\\u2a92\":e.MO.REL,\"\\u2a93\":e.MO.REL,\"\\u2a94\":e.MO.REL,\"\\u2a95\":e.MO.REL,\"\\u2a96\":e.MO.REL,\"\\u2a97\":e.MO.REL,\"\\u2a98\":e.MO.REL,\"\\u2a99\":e.MO.REL,\"\\u2a9a\":e.MO.REL,\"\\u2a9b\":e.MO.REL,\"\\u2a9c\":e.MO.REL,\"\\u2a9d\":e.MO.REL,\"\\u2a9e\":e.MO.REL,\"\\u2a9f\":e.MO.REL,\"\\u2aa0\":e.MO.REL,\"\\u2aa1\":e.MO.REL,\"\\u2aa1\\u0338\":e.MO.REL,\"\\u2aa2\":e.MO.REL,\"\\u2aa2\\u0338\":e.MO.REL,\"\\u2aa3\":e.MO.REL,\"\\u2aa4\":e.MO.REL,\"\\u2aa5\":e.MO.REL,\"\\u2aa6\":e.MO.REL,\"\\u2aa7\":e.MO.REL,\"\\u2aa8\":e.MO.REL,\"\\u2aa9\":e.MO.REL,\"\\u2aaa\":e.MO.REL,\"\\u2aab\":e.MO.REL,\"\\u2aac\":e.MO.REL,\"\\u2aad\":e.MO.REL,\"\\u2aae\":e.MO.REL,\"\\u2aaf\":e.MO.REL,\"\\u2aaf\\u0338\":e.MO.REL,\"\\u2ab0\":e.MO.REL,\"\\u2ab0\\u0338\":e.MO.REL,\"\\u2ab1\":e.MO.REL,\"\\u2ab2\":e.MO.REL,\"\\u2ab3\":e.MO.REL,\"\\u2ab4\":e.MO.REL,\"\\u2ab5\":e.MO.REL,\"\\u2ab6\":e.MO.REL,\"\\u2ab7\":e.MO.REL,\"\\u2ab8\":e.MO.REL,\"\\u2ab9\":e.MO.REL,\"\\u2aba\":e.MO.REL,\"\\u2abb\":e.MO.REL,\"\\u2abc\":e.MO.REL,\"\\u2abd\":e.MO.REL,\"\\u2abe\":e.MO.REL,\"\\u2abf\":e.MO.REL,\"\\u2ac0\":e.MO.REL,\"\\u2ac1\":e.MO.REL,\"\\u2ac2\":e.MO.REL,\"\\u2ac3\":e.MO.REL,\"\\u2ac4\":e.MO.REL,\"\\u2ac5\":e.MO.REL,\"\\u2ac6\":e.MO.REL,\"\\u2ac7\":e.MO.REL,\"\\u2ac8\":e.MO.REL,\"\\u2ac9\":e.MO.REL,\"\\u2aca\":e.MO.REL,\"\\u2acb\":e.MO.REL,\"\\u2acc\":e.MO.REL,\"\\u2acd\":e.MO.REL,\"\\u2ace\":e.MO.REL,\"\\u2acf\":e.MO.REL,\"\\u2ad0\":e.MO.REL,\"\\u2ad1\":e.MO.REL,\"\\u2ad2\":e.MO.REL,\"\\u2ad3\":e.MO.REL,\"\\u2ad4\":e.MO.REL,\"\\u2ad5\":e.MO.REL,\"\\u2ad6\":e.MO.REL,\"\\u2ad7\":e.MO.REL,\"\\u2ad8\":e.MO.REL,\"\\u2ad9\":e.MO.REL,\"\\u2ada\":e.MO.REL,\"\\u2adb\":e.MO.REL,\"\\u2adc\":e.MO.REL,\"\\u2add\":e.MO.REL,\"\\u2ade\":e.MO.REL,\"\\u2adf\":e.MO.REL,\"\\u2ae0\":e.MO.REL,\"\\u2ae1\":e.MO.REL,\"\\u2ae2\":e.MO.REL,\"\\u2ae3\":e.MO.REL,\"\\u2ae4\":e.MO.REL,\"\\u2ae5\":e.MO.REL,\"\\u2ae6\":e.MO.REL,\"\\u2ae7\":e.MO.REL,\"\\u2ae8\":e.MO.REL,\"\\u2ae9\":e.MO.REL,\"\\u2aea\":e.MO.REL,\"\\u2aeb\":e.MO.REL,\"\\u2aec\":e.MO.REL,\"\\u2aed\":e.MO.REL,\"\\u2aee\":e.MO.REL,\"\\u2aef\":e.MO.REL,\"\\u2af0\":e.MO.REL,\"\\u2af1\":e.MO.REL,\"\\u2af2\":e.MO.REL,\"\\u2af3\":e.MO.REL,\"\\u2af4\":e.MO.BIN4,\"\\u2af5\":e.MO.BIN4,\"\\u2af6\":e.MO.BIN4,\"\\u2af7\":e.MO.REL,\"\\u2af8\":e.MO.REL,\"\\u2af9\":e.MO.REL,\"\\u2afa\":e.MO.REL,\"\\u2afb\":e.MO.BIN4,\"\\u2afd\":e.MO.BIN4,\"\\u2afe\":e.MO.BIN3,\"\\u2b45\":e.MO.RELSTRETCH,\"\\u2b46\":e.MO.RELSTRETCH,\"\\u3008\":e.MO.OPEN,\"\\u3009\":e.MO.CLOSE,\"\\ufe37\":e.MO.WIDEACCENT,\"\\ufe38\":e.MO.WIDEACCENT}},e.OPTABLE.infix[\"^\"]=e.MO.WIDEREL,e.OPTABLE.infix._=e.MO.WIDEREL,e.OPTABLE.prefix[\"\\u2223\"]=e.MO.OPEN,e.OPTABLE.prefix[\"\\u2225\"]=e.MO.OPEN,e.OPTABLE.postfix[\"\\u2223\"]=e.MO.CLOSE,e.OPTABLE.postfix[\"\\u2225\"]=e.MO.CLOSE},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMstyle=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"mstyle\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(t,e,Q,r){var T=this.attributes.getExplicit(\"scriptlevel\");null!=T&&((T=T.toString()).match(/^\\s*[-+]/)?Q+=parseInt(T):Q=parseInt(T));var n=this.attributes.getExplicit(\"displaystyle\");null!=n&&(e=!0===n),t=this.addInheritedAttributes(t,this.attributes.getAllAttributes()),this.childNodes[0].setInheritedAttributes(t,e,Q,r)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{scriptlevel:i.INHERIT,displaystyle:i.INHERIT,scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:\"8px\",mathbackground:i.INHERIT,mathcolor:i.INHERIT,dir:i.INHERIT,infixlinebreakstyle:\"before\"}),e}(o.AbstractMmlLayoutNode);e.MmlMstyle=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMaligngroup=void 0;var o=Q(0),i=Q(24),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"maligngroup\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setChildInheritedAttributes=function(e,Q,r,T){e=this.addInheritedAttributes(e,this.attributes.getAllAttributes()),t.prototype.setChildInheritedAttributes.call(this,e,Q,r,T)},e.defaults=n(n({},o.AbstractMmlLayoutNode.defaults),{groupalign:i.INHERIT}),e}(o.AbstractMmlLayoutNode);e.MmlMaligngroup=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlMalignmark=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"malignmark\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isSpacelike\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.defaults=n(n({},o.AbstractMmlNode.defaults),{edge:\"left\"}),e}(o.AbstractMmlNode);e.MmlMalignmark=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathChoice=void 0;var o=Q(0),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"MathChoice\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"arity\",{get:function(){return 4},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"notParent\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.setInheritedAttributes=function(t,e,Q,r){var T=e?0:Math.max(0,Math.min(Q,2))+1,n=this.childNodes[T]||this.factory.create(\"mrow\");this.parent.replaceChild(n,this),n.setInheritedAttributes(t,e,Q,r)},e.defaults=n({},o.AbstractMmlBaseNode.defaults),e}(o.AbstractMmlBaseNode);e.MathChoice=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BitFieldClass=e.BitField=void 0;var a=function(){function t(){this.bits=0}return t.allocate=function(){for(var e,Q,r=[],T=0;T<arguments.length;T++)r[T]=arguments[T];try{for(var o=n(r),i=o.next();!i.done;i=o.next()){var a=i.value;if(this.has(a))throw new Error(\"Bit already allocated for \"+a);if(this.next===t.MAXBIT)throw new Error(\"Maximum number of bits already allocated\");this.names.set(a,this.next),this.next<<=1}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=o.return)&&Q.call(o)}finally{if(e)throw e.error}}},t.has=function(t){return this.names.has(t)},t.prototype.set=function(t){this.bits|=this.getBit(t)},t.prototype.clear=function(t){this.bits&=~this.getBit(t)},t.prototype.isSet=function(t){return!!(this.bits&this.getBit(t))},t.prototype.reset=function(){this.bits=0},t.prototype.getBit=function(t){var e=this.constructor.names.get(t);if(!e)throw new Error(\"Unknown bit-field name: \"+t);return e},t.MAXBIT=1<<31,t.next=1,t.names=new Map,t}();e.BitField=a,e.BitFieldClass=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(a);return Q.allocate.apply(Q,i(t)),Q}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HandlerList=void 0;var o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.register=function(t){return this.add(t,t.priority)},e.prototype.unregister=function(t){this.remove(t)},e.prototype.handlesDocument=function(t){var e,Q;try{for(var r=n(this),T=r.next();!T.done;T=r.next()){var o=T.value.item;if(o.handlesDocument(t))return o}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}throw new Error(\"Can't find handler for document\")},e.prototype.document=function(t,e){return void 0===e&&(e=null),this.handlesDocument(t).create(t,e)},e}(Q(21).PrioritizedList);e.HandlerList=o},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractVisitor=void 0;var o=Q(58),i=function(){function t(e){var Q,T;this.nodeHandlers=new Map;try{for(var n=r(e.getKinds()),o=n.next();!o.done;o=n.next()){var i=o.value,a=this[t.methodName(i)];a&&this.nodeHandlers.set(i,a)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(T=n.return)&&T.call(n)}finally{if(Q)throw Q.error}}}return t.methodName=function(t){return\"visit\"+(t.charAt(0).toUpperCase()+t.substr(1)).replace(/[^a-z0-9_]/gi,\"_\")+\"Node\"},t.prototype.visitTree=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return this.visitNode.apply(this,n([t],e))},t.prototype.visitNode=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var r=this.nodeHandlers.get(t.kind)||this.visitDefault;return r.call.apply(r,n([this,t],e))},t.prototype.visitDefault=function(t){for(var e,Q,T=[],i=1;i<arguments.length;i++)T[i-1]=arguments[i];if(t instanceof o.AbstractNode)try{for(var a=r(t.childNodes),s=a.next();!s.done;s=a.next()){var l=s.value;this.visitNode.apply(this,n([l],T))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}},t.prototype.setNodeHandler=function(t,e){this.nodeHandlers.set(t,e)},t.prototype.removeNodeHandler=function(t){this.nodeHandlers.delete(t)},t}();e.AbstractVisitor=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractWrapper=void 0;var r=function(){function t(t,e){this.factory=t,this.node=e}return Object.defineProperty(t.prototype,\"kind\",{get:function(){return this.node.kind},enumerable:!1,configurable:!0}),t.prototype.wrap=function(t){return this.factory.wrap(t)},t}();e.AbstractWrapper=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractWrapperFactory=void 0;var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.wrap=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];return this.create.apply(this,o([t.kind,t],e))},e}(Q(37).AbstractFactory);e.AbstractWrapperFactory=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLDocument=void 0;var a=Q(53),s=Q(7),l=Q(123),c=Q(124),u=Q(125),p=Q(14),h=function(t){function e(e,Q,r){var T=this,n=o(s.separateOptions(r,u.HTMLDomStrings.OPTIONS),2),i=n[0],a=n[1];return(T=t.call(this,e,Q,i)||this).domStrings=T.options.DomStrings||new u.HTMLDomStrings(a),T.domStrings.adaptor=Q,T.styles=[],T}return T(e,t),e.prototype.findPosition=function(t,e,Q,r){var T,n,a=this.adaptor;try{for(var s=i(r[t]),l=s.next();!l.done;l=s.next()){var c=l.value,u=o(c,2),p=u[0],h=u[1];if(e<=h&&\"#text\"===a.kind(p))return{node:p,n:Math.max(e,0),delim:Q};e-=h}}catch(t){T={error:t}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(T)throw T.error}}return{node:null,n:0,delim:Q}},e.prototype.mathItem=function(t,e,Q){var r=t.math,T=this.findPosition(t.n,t.start.n,t.open,Q),n=this.findPosition(t.n,t.end.n,t.close,Q);return new this.options.MathItem(r,e,t.display,T,n)},e.prototype.findMath=function(t){var e,Q,r,T,n,a,l,c,u;if(!this.processed.isSet(\"findMath\")){this.adaptor.document=this.document,t=s.userOptions({elements:this.options.elements||[this.adaptor.body(this.document)]},t);try{for(var p=i(this.adaptor.getElements(t.elements,this.document)),h=p.next();!h.done;h=p.next()){var f=h.value,d=o([null,null],2),L=d[0],H=d[1];try{for(var m=(r=void 0,i(this.inputJax)),y=m.next();!y.done;y=m.next()){var v=y.value,g=new this.options.MathList;if(v.processStrings){null===L&&(L=(n=o(this.domStrings.find(f),2))[0],H=n[1]);try{for(var b=(a=void 0,i(v.findMath(L))),M=b.next();!M.done;M=b.next()){var V=M.value;g.push(this.mathItem(V,v,H))}}catch(t){a={error:t}}finally{try{M&&!M.done&&(l=b.return)&&l.call(b)}finally{if(a)throw a.error}}}else try{for(var x=(c=void 0,i(v.findMath(f))),O=x.next();!O.done;O=x.next()){V=O.value;var _=new this.options.MathItem(V.math,v,V.display,V.start,V.end);g.push(_)}}catch(t){c={error:t}}finally{try{O&&!O.done&&(u=x.return)&&u.call(x)}finally{if(c)throw c.error}}this.math.merge(g)}}catch(t){r={error:t}}finally{try{y&&!y.done&&(T=m.return)&&T.call(m)}finally{if(r)throw r.error}}}}catch(t){e={error:t}}finally{try{h&&!h.done&&(Q=p.return)&&Q.call(p)}finally{if(e)throw e.error}}this.processed.set(\"findMath\")}return this},e.prototype.updateDocument=function(){return this.processed.isSet(\"updateDocument\")||(this.addPageElements(),this.addStyleSheet(),t.prototype.updateDocument.call(this),this.processed.set(\"updateDocument\")),this},e.prototype.addPageElements=function(){var t=this.adaptor.body(this.document),e=this.documentPageElements();e&&this.adaptor.append(t,e)},e.prototype.addStyleSheet=function(){var t=this.documentStyleSheet();if(t){var e=this.adaptor.head(this.document),Q=this.findSheet(e,this.adaptor.getAttribute(t,\"id\"));Q?this.adaptor.replace(t,Q):this.adaptor.append(e,t)}},e.prototype.findSheet=function(t,e){var Q,r;if(e)try{for(var T=i(this.adaptor.tags(t,\"style\")),n=T.next();!n.done;n=T.next()){var o=n.value;if(this.adaptor.getAttribute(o,\"id\")===e)return o}}catch(t){Q={error:t}}finally{try{n&&!n.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}return null},e.prototype.removeFromDocument=function(t){var e,Q;if(void 0===t&&(t=!1),this.processed.isSet(\"updateDocument\"))try{for(var r=i(this.math),T=r.next();!T.done;T=r.next()){var n=T.value;n.state()>=p.STATE.INSERTED&&n.state(p.STATE.TYPESET,t)}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}return this.processed.clear(\"updateDocument\"),this},e.prototype.documentStyleSheet=function(){return this.outputJax.styleSheet(this)},e.prototype.documentPageElements=function(){return this.outputJax.pageElements(this)},e.prototype.addStyles=function(t){this.styles.push(t)},e.prototype.getStyles=function(){return this.styles},e.KIND=\"HTML\",e.OPTIONS=n(n({},a.AbstractMathDocument.OPTIONS),{renderActions:s.expandable(n(n({},a.AbstractMathDocument.OPTIONS.renderActions),{styles:[p.STATE.INSERTED+1,\"\",\"updateStyleSheet\",!1]})),MathList:c.HTMLMathList,MathItem:l.HTMLMathItem,DomStrings:null}),e}(a.AbstractMathDocument);e.HTMLDocument=h},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLMathItem=void 0;var n=Q(14),o=function(t){function e(e,Q,r,T,n){return void 0===r&&(r=!0),void 0===T&&(T={node:null,n:0,delim:\"\"}),void 0===n&&(n={node:null,n:0,delim:\"\"}),t.call(this,e,Q,r,T,n)||this}return T(e,t),Object.defineProperty(e.prototype,\"adaptor\",{get:function(){return this.inputJax.adaptor},enumerable:!1,configurable:!0}),e.prototype.updateDocument=function(t){if(this.state()<n.STATE.INSERTED){if(this.inputJax.processStrings){var e=this.start.node;if(e===this.end.node)this.end.n&&this.end.n<this.adaptor.value(this.end.node).length&&this.adaptor.split(this.end.node,this.end.n),this.start.n&&(e=this.adaptor.split(this.start.node,this.start.n)),this.adaptor.replace(this.typesetRoot,e);else{for(this.start.n&&(e=this.adaptor.split(e,this.start.n));e!==this.end.node;){var Q=this.adaptor.next(e);this.adaptor.remove(e),e=Q}this.adaptor.insert(this.typesetRoot,e),this.end.n<this.adaptor.value(e).length&&this.adaptor.split(e,this.end.n),this.adaptor.remove(e)}}else this.adaptor.replace(this.typesetRoot,this.start.node);this.start.node=this.end.node=this.typesetRoot,this.start.n=this.end.n=0,this.state(n.STATE.INSERTED)}},e.prototype.updateStyleSheet=function(t){t.addStyleSheet()},e.prototype.removeFromDocument=function(t){if(void 0===t&&(t=!1),this.state()>=n.STATE.TYPESET){var e=this.adaptor,Q=this.start.node,r=e.text(\"\");if(t){var T=this.start.delim+this.math+this.end.delim;if(this.inputJax.processStrings)r=e.text(T);else{var o=e.parse(T,\"text/html\");r=e.firstChild(e.body(o))}}e.parent(Q)&&e.replace(r,Q),this.start.node=this.end.node=r,this.start.n=this.end.n=0}},e}(n.AbstractMathItem);e.HTMLMathItem=o},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLMathList=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e}(Q(56).AbstractMathList);e.HTMLMathList=n},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.HTMLDomStrings=void 0;var T=Q(7),n=function(){function t(t){void 0===t&&(t=null);var e=this.constructor;this.options=T.userOptions(T.defaultOptions({},e.OPTIONS),t),this.init(),this.getPatterns()}return t.prototype.init=function(){this.strings=[],this.string=\"\",this.snodes=[],this.nodes=[],this.stack=[]},t.prototype.getPatterns=function(){var t=T.makeArray(this.options.skipHtmlTags),e=T.makeArray(this.options.ignoreHtmlClass),Q=T.makeArray(this.options.processHtmlClass);this.skipHtmlTags=new RegExp(\"^(?:\"+t.join(\"|\")+\")$\",\"i\"),this.ignoreHtmlClass=new RegExp(\"(?:^| )(?:\"+e.join(\"|\")+\")(?: |$)\"),this.processHtmlClass=new RegExp(\"(?:^| )(?:\"+Q+\")(?: |$)\")},t.prototype.pushString=function(){this.string.match(/\\S/)&&(this.strings.push(this.string),this.nodes.push(this.snodes)),this.string=\"\",this.snodes=[]},t.prototype.extendString=function(t,e){this.snodes.push([t,e.length]),this.string+=e},t.prototype.handleText=function(t,e){return e||this.extendString(t,this.adaptor.value(t)),this.adaptor.next(t)},t.prototype.handleTag=function(t,e){if(!e){var Q=this.options.includeHtmlTags[this.adaptor.kind(t)];this.extendString(t,Q)}return this.adaptor.next(t)},t.prototype.handleContainer=function(t,e){this.pushString();var Q=this.adaptor.getAttribute(t,\"class\")||\"\",r=this.adaptor.kind(t)||\"\",T=this.processHtmlClass.exec(Q),n=t;return!this.adaptor.firstChild(t)||this.adaptor.getAttribute(t,\"data-MJX\")||!T&&this.skipHtmlTags.exec(r)?n=this.adaptor.next(t):(this.adaptor.next(t)&&this.stack.push([this.adaptor.next(t),e]),n=this.adaptor.firstChild(t),e=(e||this.ignoreHtmlClass.exec(Q))&&!T),[n,e]},t.prototype.find=function(t){var e,Q;this.init();for(var T=this.adaptor.next(t),n=!1,o=this.options.includeHtmlTags;t&&t!==T;)\"#text\"===this.adaptor.kind(t)?t=this.handleText(t,n):void 0!==o[this.adaptor.kind(t)]?t=this.handleTag(t,n):(t=(e=r(this.handleContainer(t,n),2))[0],n=e[1]),!t&&this.stack.length&&(this.pushString(),t=(Q=r(this.stack.pop(),2))[0],n=Q[1]);this.pushString();var i=[this.strings,this.nodes];return this.init(),i},t.OPTIONS={skipHtmlTags:[\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\",\"annotation\",\"annotation-xml\"],includeHtmlTags:{br:\"\\n\",wbr:\"\",\"#comment\":\"\"},ignoreHtmlClass:\"mathjax_ignore\",processHtmlClass:\"mathjax_process\"},t}();e.HTMLDomStrings=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.asyncLoad=void 0;var r=Q(25);e.asyncLoad=function(t){return r.mathjax.asyncLoad?new Promise((function(e,Q){var T=r.mathjax.asyncLoad(t);T instanceof Promise?T.then((function(t){return e(t)})).catch((function(t){return Q(t)})):e(T)})):Promise.reject(\"Can't load '\"+t+\"': No asyncLoad method specified\")}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=void 0;var T=function(){function t(t){void 0===t&&(t=null),this.styles={},this.addStyles(t)}return Object.defineProperty(t.prototype,\"cssText\",{get:function(){return this.getStyleString()},enumerable:!1,configurable:!0}),t.prototype.addStyles=function(t){var e,Q;if(t)try{for(var T=r(Object.keys(t)),n=T.next();!n.done;n=T.next()){var o=n.value;this.styles[o]||(this.styles[o]={}),Object.assign(this.styles[o],t[o])}}catch(t){e={error:t}}finally{try{n&&!n.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},t.prototype.removeStyles=function(){for(var t,e,Q=[],T=0;T<arguments.length;T++)Q[T]=arguments[T];try{for(var n=r(Q),o=n.next();!o.done;o=n.next()){var i=o.value;delete this.styles[i]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}},t.prototype.clear=function(){this.styles={}},t.prototype.getStyleString=function(){var t,e,Q=Object.keys(this.styles),T=new Array(Q.length),n=0;try{for(var o=r(Q),i=o.next();!i.done;i=o.next()){var a=i.value;T[n++]=a+\" {\\n\"+this.getStyleDefString(this.styles[a])+\"\\n}\"}}catch(e){t={error:e}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return T.join(\"\\n\\n\")},t.prototype.getStyleDefString=function(t){var e,Q,T=Object.keys(t),n=new Array(T.length),o=0;try{for(var i=r(T),a=i.next();!a.done;a=i.next()){var s=a.value;n[o++]=\"  \"+s+\": \"+t[s]+\";\"}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return n.join(\"\\n\")},t}();e.CssStyles=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.max=e.sum=void 0,e.sum=function(t){return t.reduce((function(t,e){return t+e}),0)},e.max=function(t){return t.reduce((function(t,e){return Math.max(t,e)}),0)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindTeX=void 0;var o=Q(107),i=Q(15),a=Q(14),s=function(t){function e(e){var Q=t.call(this,e)||this;return Q.getPatterns(),Q}return T(e,t),e.prototype.getPatterns=function(){var t=this,e=this.options,Q=[],r=[],T=[];this.end={},this.env=this.sub=0;var n=1;e.inlineMath.forEach((function(e){return t.addPattern(Q,e,!1)})),e.displayMath.forEach((function(e){return t.addPattern(Q,e,!0)})),Q.length&&r.push(Q.sort(i.sortLength).join(\"|\")),e.processEnvironments&&(r.push(\"\\\\\\\\begin\\\\s*\\\\{([^}]*)\\\\}\"),this.env=n,n++),e.processEscapes&&T.push(\"\\\\\\\\([\\\\\\\\$])\"),e.processRefs&&T.push(\"(\\\\\\\\(?:eq)?ref\\\\s*\\\\{[^}]*\\\\})\"),T.length&&(r.push(\"(\"+T.join(\"|\")+\")\"),this.sub=n),this.start=new RegExp(r.join(\"|\"),\"g\"),this.hasPatterns=r.length>0},e.prototype.addPattern=function(t,e,Q){var r=n(e,2),T=r[0],o=r[1];t.push(i.quotePattern(T)),this.end[T]=[o,Q,this.endPattern(o)]},e.prototype.endPattern=function(t,e){return new RegExp((e||i.quotePattern(t))+\"|\\\\\\\\(?:[a-zA-Z]|.)|[{}]\",\"g\")},e.prototype.findEnd=function(t,e,Q,r){for(var T,o=n(r,3),i=o[0],s=o[1],l=o[2],c=l.lastIndex=Q.index+Q[0].length,u=0;T=l.exec(t);){if((T[1]||T[0])===i&&0===u)return a.protoItem(Q[0],t.substr(c,T.index-c),T[0],e,Q.index,T.index+T[0].length,s);\"{\"===T[0]?u++:\"}\"===T[0]&&u&&u--}return null},e.prototype.findMathInString=function(t,e,Q){var r,T;for(this.start.lastIndex=0;r=this.start.exec(Q);){if(void 0!==r[this.env]&&this.env){var n=\"\\\\\\\\end\\\\s*(\\\\{\"+i.quotePattern(r[this.env])+\"\\\\})\";(T=this.findEnd(Q,e,r,[\"{\"+r[this.env]+\"}\",!0,this.endPattern(null,n)]))&&(T.math=T.open+T.math+T.close,T.open=T.close=\"\")}else if(void 0!==r[this.sub]&&this.sub){var o=r[this.sub];n=r.index+r[this.sub].length;T=2===o.length?a.protoItem(\"\",o.substr(1),\"\",e,r.index,n):a.protoItem(\"\",o,\"\",e,r.index,n,!1)}else T=this.findEnd(Q,e,r,this.end[r[0]]);T&&(t.push(T),this.start.lastIndex=T.end.n)}},e.prototype.findMath=function(t){var e=[];if(this.hasPatterns)for(var Q=0,r=t.length;Q<r;Q++)this.findMathInString(e,Q,t[Q]);return e},e.OPTIONS={inlineMath:[[\"\\\\(\",\"\\\\)\"]],displayMath:[[\"$$\",\"$$\"],[\"\\\\[\",\"\\\\]\"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},e}(o.AbstractFindMath);e.FindTeX=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0});var T,n=Q(0),o=Q(8);!function(t){t.cleanStretchy=function(t){var e,Q,T=t.data;try{for(var n=r(T.getList(\"fixStretchy\")),i=n.next();!i.done;i=n.next()){var a=i.value;if(o.default.getProperty(a,\"fixStretchy\")){var s=o.default.getForm(a);s&&s[3]&&s[3].stretchy&&o.default.setAttribute(a,\"stretchy\",!1);var l=a.parent;if(!(o.default.getTexClass(a)||s&&s[2])){var c=T.nodeFactory.create(\"node\",\"TeXAtom\",[a]);l.replaceChild(c,a),c.inheritAttributesFrom(a)}o.default.removeProperties(a,\"fixStretchy\")}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.cleanAttributes=function(t){t.data.root.walkTree((function(t,e){var Q,T,n=t.attributes;if(n)try{for(var o=r(n.getExplicitNames()),i=o.next();!i.done;i=o.next()){var a=i.value;n.attributes[a]===t.attributes.getInherited(a)&&delete n.attributes[a]}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(T=o.return)&&T.call(o)}finally{if(Q)throw Q.error}}}),{})},t.combineRelations=function(t){var T,i;try{for(var a=r(t.data.getList(\"mo\")),s=a.next();!s.done;s=a.next()){var l=s.value;if(!l.getProperty(\"relationsCombined\")&&l.parent&&(!l.parent||o.default.isType(l.parent,\"mrow\"))&&o.default.getTexClass(l)===n.TEXCLASS.REL){for(var c=l.parent,u=void 0,p=c.childNodes,h=p.indexOf(l)+1,f=o.default.getProperty(l,\"variantForm\");h<p.length&&(u=p[h])&&o.default.isType(u,\"mo\")&&o.default.getTexClass(u)===n.TEXCLASS.REL;){if(f!==o.default.getProperty(u,\"variantForm\")||!Q(l,u)){null==l.attributes.getExplicit(\"rspace\")&&o.default.setAttribute(l,\"rspace\",\"0pt\"),null==u.attributes.getExplicit(\"lspace\")&&o.default.setAttribute(u,\"lspace\",\"0pt\");break}o.default.appendChildren(l,o.default.getChildren(u)),e([\"stretchy\",\"rspace\"],l,u),o.default.setProperties(l,u.getAllProperties()),p.splice(h,1),u.parent=null,u.setProperty(\"relationsCombined\",!0)}l.attributes.setInherited(\"form\",l.getForms()[0])}}}catch(t){T={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(T)throw T.error}}};var e=function(t,e,Q){var r=e.attributes,T=Q.attributes;t.forEach((function(t){var e=T.getExplicit(t);null!=e&&r.set(t,e)}))},Q=function(t,e){var Q,T,n=function(t,e){return t.getExplicitNames().filter((function(Q){return Q!==e&&(\"stretchy\"!==Q||t.getExplicit(\"stretchy\"))}))},o=t.attributes,i=e.attributes,a=n(o,\"lspace\"),s=n(i,\"rspace\");if(a.length!==s.length)return!1;try{for(var l=r(a),c=l.next();!c.done;c=l.next()){var u=c.value;if(o.getExplicit(u)!==i.getExplicit(u))return!1}}catch(t){Q={error:t}}finally{try{c&&!c.done&&(T=l.return)&&T.call(l)}finally{if(Q)throw Q.error}}return!0},T=function(t,e,Q){var T,n;try{for(var i=r(t.getList(\"m\"+e+Q)),a=i.next();!a.done;a=i.next()){var s=a.value,l=s.childNodes;if(!l[s[e]]||!l[s[Q]]){var c=s.parent,u=l[s[e]]?t.nodeFactory.create(\"node\",\"m\"+e,[l[s.base],l[s[e]]]):t.nodeFactory.create(\"node\",\"m\"+Q,[l[s.base],l[s[Q]]]);o.default.copyAttributes(s,u),c?c.replaceChild(u,s):t.root=u}}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}};t.cleanSubSup=function(t){var e=t.data;e.error||(T(e,\"sub\",\"sup\"),T(e,\"under\",\"over\"))};var i=function(t,e,Q){var T,n;try{for(var i=r(t.getList(e)),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.attributes.get(\"displaystyle\")){var l=s.childNodes[s.base],c=l.coreMO();if(l.getProperty(\"movablelimits\")&&!c.attributes.getExplicit(\"movablelimits\")){var u=t.nodeFactory.create(\"node\",Q,s.childNodes);o.default.copyAttributes(s,u),s.parent?s.parent.replaceChild(u,s):t.root=u}}}}catch(t){T={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(T)throw T.error}}};t.moveLimits=function(t){var e=t.data;i(e,\"munderover\",\"msubsup\"),i(e,\"munder\",\"msub\"),i(e,\"mover\",\"msup\")},t.setInherited=function(t){t.data.root.setInheritedAttributes({},t.math.display,0,!1)}}(T||(T={})),e.default=T},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0});var o=Q(22),i=Q(37),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(o.BaseItem),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultKind=\"dummy\",e.configuration=null,e}return n(e,t),e.DefaultStackItems=((T={})[a.prototype.kind]=a,T),e}(i.AbstractFactory);e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var r=Q(2),T=Q(12),n=Q(3),o=Q(16);e.ActionMethods={},e.ActionMethods.Macro=o.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var Q,r=[];\"\\\\endtoggle\"!==(Q=t.GetArgument(e));)r.push(new T.default(Q,t.stack.env,t.configuration).mml());t.Push(t.create(\"node\",\"maction\",r,{actiontype:\"toggle\"}))},e.ActionMethods.Mathtip=function(t,e){var Q=t.ParseArg(e),r=t.ParseArg(e);t.Push(t.create(\"node\",\"maction\",[Q,r],{actiontype:\"tooltip\"}))},new n.CommandMap(\"action-macros\",{toggle:\"Toggle\",mathtip:\"Mathtip\",texttip:[\"Macro\",\"\\\\mathtip{#1}{\\\\text{#2}}\",2]},e.ActionMethods),e.ActionConfiguration=r.Configuration.create(\"action\",{handler:{macro:[\"action-macros\"]}})},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsConfiguration=e.AmsTags=void 0;var o=Q(2),i=Q(134),a=Q(20),s=Q(34);Q(284);var l=Q(3),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(a.AbstractTags);e.AmsTags=c;e.AmsConfiguration=o.Configuration.create(\"ams\",{handler:{delimiter:[\"AMSsymbols-delimiter\",\"AMSmath-delimiter\"],macro:[\"AMSsymbols-mathchar0mi\",\"AMSsymbols-mathchar0m0\",\"AMSsymbols-delimiter\",\"AMSsymbols-macros\",\"AMSmath-mathchar0mo\",\"AMSmath-macros\",\"AMSmath-delimiter\"],environment:[\"AMSmath-environment\"]},items:(T={},T[i.MultlineItem.prototype.kind]=i.MultlineItem,T),tags:{ams:c},init:function(t){new l.CommandMap(s.NEW_OPS,{},{}),t.append(o.Configuration.local({handler:{macro:[s.NEW_OPS]},priority:-1}))}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MultlineItem=void 0;var n=Q(27),o=Q(9),i=Q(8),a=Q(5),s=Q(13),l=function(t){function e(e){for(var Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];var T=t.call(this,e)||this;return T.factory.configuration.tags.start(\"multline\",!0,Q[0]),T}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"multline\"},enumerable:!1,configurable:!0}),e.prototype.EndEntry=function(){this.table.length&&o.default.fixInitialMO(this.factory.configuration,this.nodes);var t=this.getProperty(\"shove\"),e=this.create(\"node\",\"mtd\",this.nodes,t?{columnalign:t}:{});this.setProperty(\"shove\",null),this.row.push(e),this.Clear()},e.prototype.EndRow=function(){if(1!==this.row.length)throw new a.default(\"MultlineRowsOneCol\",\"The rows within the %1 environment must have exactly one column\",\"multline\");var t=this.create(\"node\",\"mtr\",this.row);this.table.push(t),this.row=[]},e.prototype.EndTable=function(){if(t.prototype.EndTable.call(this),this.table.length){var e=this.table.length-1,Q=-1;i.default.getAttribute(i.default.getChildren(this.table[0])[0],\"columnalign\")||i.default.setAttribute(i.default.getChildren(this.table[0])[0],\"columnalign\",s.TexConstant.Align.LEFT),i.default.getAttribute(i.default.getChildren(this.table[e])[0],\"columnalign\")||i.default.setAttribute(i.default.getChildren(this.table[e])[0],\"columnalign\",s.TexConstant.Align.RIGHT);var r=this.factory.configuration.tags.getTag();if(r){Q=this.arraydef.side===s.TexConstant.Align.LEFT?0:this.table.length-1;var T=this.table[Q],n=this.create(\"node\",\"mlabeledtr\",[r].concat(i.default.getChildren(T)));i.default.copyAttributes(T,n),this.table[Q]=n}}this.factory.configuration.tags.end()},e}(n.ArrayItem);e.MultlineItem=l},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AmsCdConfiguration=void 0;var r=Q(2);Q(285),e.AmsCdConfiguration=r.Configuration.create(\"amscd\",{handler:{character:[\"amscd_special\"],macro:[\"amscd_macros\"],environment:[\"amscd_environment\"]},options:{amscd:{colspace:\"5pt\",rowspace:\"5pt\",harrowsize:\"2.75em\",varrowsize:\"1.75em\",hideHorizontalLabels:!1}}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(12),T=Q(42),n=Q(0),o=Q(8),i={CD:function(t,e){t.Push(e);var Q=t.itemFactory.create(\"array\"),r=t.configuration.options.amscd;return Q.setProperties({minw:t.stack.env.CD_minw||r.harrowsize,minh:t.stack.env.CD_minh||r.varrowsize}),Q.arraydef={columnalign:\"center\",columnspacing:r.colspace,rowspacing:r.rowspace,displaystyle:!0},Q},arrow:function(t,e){var Q=t.string.charAt(t.i);if(!Q.match(/[><VA.|=]/))return T.Other(t,e);t.i++;var a=t.stack.Top();a.isKind(\"array\")&&!a.Size()||(i.cell(t,e),a=t.stack.Top());for(var s,l=a,c=l.table.length%2==1,u=(l.row.length+(c?0:1))%2;u;)i.cell(t,e),u--;var p={minsize:l.getProperty(\"minw\"),stretchy:!0},h={minsize:l.getProperty(\"minh\"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if(\".\"===Q);else if(\"|\"===Q)s=t.create(\"token\",\"mo\",h,\"\\u2225\");else if(\"=\"===Q)s=t.create(\"token\",\"mo\",p,\"=\");else{var f={\">\":\"\\u2192\",\"<\":\"\\u2190\",V:\"\\u2193\",A:\"\\u2191\"}[Q],d=t.GetUpTo(e+Q,Q),L=t.GetUpTo(e+Q,Q);if(\">\"===Q||\"<\"===Q){if(s=t.create(\"token\",\"mo\",p,f),d||(d=\"\\\\kern \"+l.getProperty(\"minw\")),d||L){var H={width:\".67em\",lspace:\".33em\"};if(s=t.create(\"node\",\"munderover\",[s]),d){var m=new r.default(d,t.stack.env,t.configuration).mml(),y=t.create(\"node\",\"mpadded\",[m],H);o.default.setAttribute(y,\"voffset\",\".1em\"),o.default.setChild(s,s.over,y)}if(L){var v=new r.default(L,t.stack.env,t.configuration).mml();o.default.setChild(s,s.under,t.create(\"node\",\"mpadded\",[v],H))}t.configuration.options.amscd.hideHorizontalLabels&&(s=t.create(\"node\",\"mpadded\",s,{depth:0,height:\".67em\"}))}}else{var g=t.create(\"token\",\"mo\",h,f);s=g,(d||L)&&(s=t.create(\"node\",\"mrow\"),d&&o.default.appendChildren(s,[new r.default(\"\\\\scriptstyle\\\\llap{\"+d+\"}\",t.stack.env,t.configuration).mml()]),g.texClass=n.TEXCLASS.ORD,o.default.appendChildren(s,[g]),L&&o.default.appendChildren(s,[new r.default(\"\\\\scriptstyle\\\\rlap{\"+L+\"}\",t.stack.env,t.configuration).mml()]))}}s&&t.Push(s),i.cell(t,e)},cell:function(t,e){var Q=t.stack.Top();(Q.table||[]).length%2==0&&0===(Q.row||[]).length&&t.Push(t.create(\"node\",\"mpadded\",[],{height:\"8.5pt\",depth:\"2pt\"})),t.Push(t.itemFactory.create(\"cell\").setProperties({isEntry:!0,name:e}))},minCDarrowwidth:function(t,e){t.stack.env.CD_minw=t.GetDimen(e)},minCDarrowheight:function(t,e){t.stack.env.CD_minh=t.GetDimen(e)}};e.default=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var r=Q(2),T=Q(3),n=Q(5);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var Q,r,T,a=t.GetBrackets(e,\"\"),s=t.ParseArg(e),l=a.split(/,/),c=0,u=l.length;c<u;c++){var p=l[c].trim(),h=p.match(/^(\\.\\d+|\\d+(\\.\\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(h){if(Q)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Padding\",e);var f=i(h[1]+h[3]);f&&(Q={height:\"+\"+f,depth:\"+\"+f,lspace:f,width:\"+\"+2*parseInt(h[1],10)+h[3]})}else if(p.match(/^([a-z0-9]+|\\#[0-9a-f]{6}|\\#[0-9a-f]{3})$/i)){if(r)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Background\",e);r=p}else if(p.match(/^[-a-z]+:/i)){if(T)throw new n.default(\"MultipleBBoxProperty\",\"%1 specified twice in %2\",\"Style\",e);T=o(p)}else if(\"\"!==p)throw new n.default(\"InvalidBBoxProperty\",'\"%1\" doesn\\'t look like a color, a padding dimension, or a style',p)}Q&&(s=t.create(\"node\",\"mpadded\",[s],Q)),(r||T)&&(Q={},r&&Object.assign(Q,{mathbackground:r}),T&&Object.assign(Q,{style:T}),s=t.create(\"node\",\"mstyle\",[s],Q)),t.Push(s)};var o=function(t){return t},i=function(t){return t};new T.CommandMap(\"bbox\",{bbox:\"BBox\"},e.BboxMethods),e.BboxConfiguration=r.Configuration.create(\"bbox\",{handler:{macro:[\"bbox\"]}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var T=Q(2),n=Q(8),o=Q(13),i=Q(3),a=Q(41),s={};function l(t,e,Q,r){var T=a.NodeFactory.createToken(t,e,Q,r);return\"mtext\"!==e&&t.configuration.parser.stack.env.boldsymbol&&(n.default.setProperty(T,\"fixBold\",!0),t.configuration.addNode(\"fixBold\",T)),T}function c(t){var e,Q;try{for(var T=r(t.data.getList(\"fixBold\")),i=T.next();!i.done;i=T.next()){var a=i.value;if(n.default.getProperty(a,\"fixBold\")){var l=n.default.getAttribute(a,\"mathvariant\");null==l?n.default.setAttribute(a,\"mathvariant\",o.TexConstant.Variant.BOLD):n.default.setAttribute(a,\"mathvariant\",s[l]||l),n.default.removeProperties(a,\"fixBold\")}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}}s[o.TexConstant.Variant.NORMAL]=o.TexConstant.Variant.BOLD,s[o.TexConstant.Variant.ITALIC]=o.TexConstant.Variant.BOLDITALIC,s[o.TexConstant.Variant.FRAKTUR]=o.TexConstant.Variant.BOLDFRAKTUR,s[o.TexConstant.Variant.SCRIPT]=o.TexConstant.Variant.BOLDSCRIPT,s[o.TexConstant.Variant.SANSSERIF]=o.TexConstant.Variant.BOLDSANSSERIF,s[\"-tex-calligraphic\"]=\"-tex-bold-calligraphic\",s[\"-tex-oldstyle\"]=\"-tex-bold-oldstyle\",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var Q=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var r=t.ParseArg(e);t.stack.env.boldsymbol=Q,t.Push(r)},new i.CommandMap(\"boldsymbol\",{boldsymbol:\"Boldsymbol\"},e.BoldsymbolMethods),e.createBoldToken=l,e.rewriteBoldTokens=c,e.BoldsymbolConfiguration=T.Configuration.create(\"boldsymbol\",{handler:{macro:[\"boldsymbol\"]},nodes:{token:l},postprocessors:[c]})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketConfiguration=void 0;var T=Q(2),n=Q(140);Q(286),e.BraketConfiguration=T.Configuration.create(\"braket\",{handler:{character:[\"Braket-characters\"],macro:[\"Braket-macros\"]},items:(r={},r[n.BraketItem.prototype.kind]=n.BraketItem,r)})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BraketItem=void 0;var n=Q(22),o=Q(0),i=Q(9),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"braket\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){return e.isKind(\"close\")?[[this.factory.create(\"mml\",this.toMml())],!0]:e.isKind(\"mml\")?(this.Push(e.toMml()),this.getProperty(\"single\")?[[this.toMml()],!0]:n.BaseItem.fail):t.prototype.checkItem.call(this,e)},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),Q=this.getProperty(\"open\"),r=this.getProperty(\"close\");if(this.getProperty(\"stretchy\"))return i.default.fenced(this.factory.configuration,Q,e,r);var T={fence:!0,stretchy:!1,symmetric:!0,texClass:o.TEXCLASS.OPEN},n=this.create(\"token\",\"mo\",T,Q);T.texClass=o.TEXCLASS.CLOSE;var a=this.create(\"token\",\"mo\",T,r);return this.create(\"node\",\"mrow\",[n,e,a],{open:Q,close:r,texClass:o.TEXCLASS.INNER})},e}(n.BaseItem);e.BraketItem=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(16),T=Q(0),n=Q(5),o={};o.Macro=r.default.Macro,o.Braket=function(t,e,Q,r,T,o){var i=t.GetNext();if(\"\"===i)throw new n.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var a=!0;\"{\"===i&&(t.i++,a=!1),t.Push(t.itemFactory.create(\"braket\").setProperties({barmax:o,barcount:0,open:Q,close:r,stretchy:T,single:a}))},o.Bar=function(t,e){var Q=\"|\"===e?\"|\":\"\\u2225\",r=t.stack.Top();if(\"braket\"!==r.kind||r.getProperty(\"barcount\")>=r.getProperty(\"barmax\")){var n=t.create(\"token\",\"mo\",{texClass:T.TEXCLASS.ORD,stretchy:!1},Q);t.Push(n)}else{if(\"|\"===Q&&\"|\"===t.GetNext()&&(t.i++,Q=\"\\u2225\"),r.getProperty(\"stretchy\")){var o=t.create(\"node\",\"TeXAtom\",[],{texClass:T.TEXCLASS.CLOSE});t.Push(o),r.setProperty(\"barcount\",r.getProperty(\"barcount\")+1),o=t.create(\"token\",\"mo\",{stretchy:!0,braketbar:!0},Q),t.Push(o),o=t.create(\"node\",\"TeXAtom\",[],{texClass:T.TEXCLASS.OPEN}),t.Push(o)}else{var i=t.create(\"token\",\"mo\",{stretchy:!1,braketbar:!0},Q);t.Push(i)}}},e.default=o},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.BussproofsConfiguration=void 0;var T=Q(2),n=Q(143),o=Q(43);Q(287),e.BussproofsConfiguration=T.Configuration.create(\"bussproofs\",{handler:{macro:[\"Bussproofs-macros\"],environment:[\"Bussproofs-environments\"]},items:(r={},r[n.ProofTreeItem.prototype.kind]=n.ProofTreeItem,r),preprocessors:[[o.saveDocument,1]],postprocessors:[[o.clearDocument,3],[o.makeBsprAttributes,2],[o.balanceRules,1]]})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProofTreeItem=void 0;var n=Q(5),o=Q(22),i=Q(85),a=Q(43),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.leftLabel=null,e.rigthLabel=null,e.innerStack=new i.default(e.factory,{},!0),e}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"proofTree\"},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(t){if(t.isKind(\"end\")&&\"prooftree\"===t.getName()){var e=this.toMml();return a.setProperty(e,\"proof\",!0),[[this.factory.create(\"mml\",e),t],!0]}if(t.isKind(\"stop\"))throw new n.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return this.innerStack.Push(t),o.BaseItem.fail},e.prototype.toMml=function(){var e=t.prototype.toMml.call(this),Q=this.innerStack.Top();if(Q.isKind(\"start\")&&!Q.Size())return e;this.innerStack.Push(this.factory.create(\"stop\"));var r=this.innerStack.Top().toMml();return this.create(\"node\",\"mrow\",[r,e],{})},e}(o.BaseItem);e.ProofTreeItem=s},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(r(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0});var n=Q(5),o=Q(12),i=Q(9),a=Q(43),s={Prooftree:function(t,e){return t.Push(e),t.itemFactory.create(\"proofTree\").setProperties({name:e.getName(),line:\"solid\",currentLine:\"solid\",rootAtTop:!1})},Axiom:function(t,e){var Q=t.stack.Top();if(\"proofTree\"!==Q.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var r=l(t,t.GetArgument(e));a.setProperty(r,\"axiom\",!0),Q.Push(r)}},l=function(t,e){var Q=i.default.internalMath(t,i.default.trimSpaces(e),0);if(!Q[0].childNodes[0].childNodes.length)return t.create(\"node\",\"mrow\",[]);var r=t.create(\"node\",\"mspace\",[],{width:\".5ex\"}),n=t.create(\"node\",\"mspace\",[],{width:\".5ex\"});return t.create(\"node\",\"mrow\",T([r],Q,[n]))};function c(t,e,Q,r,T,n,o){var i,s,l,c,u=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",[e],{})],{}),p=t.create(\"node\",\"mtr\",[t.create(\"node\",\"mtd\",Q,{})],{}),h=t.create(\"node\",\"mtable\",o?[p,u]:[u,p],{align:\"top 2\",rowlines:n,framespacing:\"0 0\"});if(a.setProperty(h,\"inferenceRule\",o?\"up\":\"down\"),r&&(i=t.create(\"node\",\"mpadded\",[r],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),a.setProperty(i,\"prooflabel\",\"left\")),T&&(s=t.create(\"node\",\"mpadded\",[T],{height:\"+.5em\",width:\"+.5em\",voffset:\"-.15em\"}),a.setProperty(s,\"prooflabel\",\"right\")),r&&T)l=[i,h,s],c=\"both\";else if(r)l=[i,h],c=\"left\";else{if(!T)return h;l=[h,s],c=\"right\"}return h=t.create(\"node\",\"mrow\",l),a.setProperty(h,\"labelledRule\",c),h}function u(t,e){if(\"$\"!==t.GetNext())throw new n.default(\"IllegalUseOfCommand\",\"Use of %1 does not match it's definition.\",e);t.i++;var Q=t.GetUpTo(e,\"$\");if(-1===Q.indexOf(\"\\\\fCenter\"))throw new n.default(\"IllegalUseOfCommand\",\"Missing \\\\fCenter in %1.\",e);var T=r(Q.split(\"\\\\fCenter\"),2),i=T[0],s=T[1],l=new o.default(i,t.stack.env,t.configuration).mml(),c=new o.default(s,t.stack.env,t.configuration).mml(),u=new o.default(\"\\\\fCenter\",t.stack.env,t.configuration).mml(),p=t.create(\"node\",\"mtd\",[l],{}),h=t.create(\"node\",\"mtd\",[u],{}),f=t.create(\"node\",\"mtd\",[c],{}),d=t.create(\"node\",\"mtr\",[p,h,f],{}),L=t.create(\"node\",\"mtable\",[d],{columnspacing:\".5ex\",columnalign:\"center 2\"});return a.setProperty(L,\"sequent\",!0),t.configuration.addNode(\"sequent\",d),L}s.Inference=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(r.Size()<Q)throw new n.default(\"BadProofTree\",\"Proof tree badly specified.\");var T=r.getProperty(\"rootAtTop\"),o=1!==Q||r.Peek()[0].childNodes.length?Q:0,i=[];do{i.length&&i.unshift(t.create(\"node\",\"mtd\",[],{})),i.unshift(t.create(\"node\",\"mtd\",[r.Pop()],{rowalign:T?\"top\":\"bottom\"})),Q--}while(Q>0);var s=t.create(\"node\",\"mtr\",i,{}),u=t.create(\"node\",\"mtable\",[s],{framespacing:\"0 0\"}),p=l(t,t.GetArgument(e)),h=r.getProperty(\"currentLine\");h!==r.getProperty(\"line\")&&r.setProperty(\"currentLine\",r.getProperty(\"line\"));var f=c(t,u,[p],r.getProperty(\"left\"),r.getProperty(\"right\"),h,T);r.setProperty(\"left\",null),r.setProperty(\"right\",null),a.setProperty(f,\"inference\",o),t.configuration.addNode(\"inference\",f),r.Push(f)},s.Label=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var T=i.default.internalMath(t,t.GetArgument(e),0),o=T.length>1?t.create(\"node\",\"mrow\",T,{}):T[0];r.setProperty(Q,o)},s.SetLine=function(t,e,Q,r){var T=t.stack.Top();if(\"proofTree\"!==T.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");T.setProperty(\"currentLine\",Q),r&&T.setProperty(\"line\",Q)},s.RootAtTop=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");r.setProperty(\"rootAtTop\",Q)},s.AxiomF=function(t,e){var Q=t.stack.Top();if(\"proofTree\"!==Q.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");var r=u(t,e);a.setProperty(r,\"axiom\",!0),Q.Push(r)},s.FCenter=function(t,e){},s.InferenceF=function(t,e,Q){var r=t.stack.Top();if(\"proofTree\"!==r.kind)throw new n.default(\"IllegalProofCommand\",\"Proof commands only allowed in prooftree environment.\");if(r.Size()<Q)throw new n.default(\"BadProofTree\",\"Proof tree badly specified.\");var T=r.getProperty(\"rootAtTop\"),o=1!==Q||r.Peek()[0].childNodes.length?Q:0,i=[];do{i.length&&i.unshift(t.create(\"node\",\"mtd\",[],{})),i.unshift(t.create(\"node\",\"mtd\",[r.Pop()],{rowalign:T?\"top\":\"bottom\"})),Q--}while(Q>0);var s=t.create(\"node\",\"mtr\",i,{}),l=t.create(\"node\",\"mtable\",[s],{framespacing:\"0 0\"}),p=u(t,e),h=r.getProperty(\"currentLine\");h!==r.getProperty(\"line\")&&r.setProperty(\"currentLine\",r.getProperty(\"line\"));var f=c(t,l,[p],r.getProperty(\"left\"),r.getProperty(\"right\"),h,T);r.setProperty(\"left\",null),r.setProperty(\"right\",null),a.setProperty(f,\"inference\",o),t.configuration.addNode(\"inference\",f),r.Push(f)},e.default=s},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var r=Q(2),T=Q(13),n=Q(3),o=Q(9),i=Q(87);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,Q){var r=t.GetBrackets(e,\"\"),T=t.ParseArg(e),n=o.default.keyvalOptions(r,i.ENCLOSE_OPTIONS);n.notation=Q,t.Push(t.create(\"node\",\"menclose\",[T],n))},e.CancelMethods.CancelTo=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.ParseArg(e),n=t.ParseArg(e),a=o.default.keyvalOptions(Q,i.ENCLOSE_OPTIONS);a.notation=[T.TexConstant.Notation.UPDIAGONALSTRIKE,T.TexConstant.Notation.UPDIAGONALARROW,T.TexConstant.Notation.NORTHEASTARROW].join(\" \"),r=t.create(\"node\",\"mpadded\",[r],{depth:\"-.1em\",height:\"+.1em\",voffset:\".1em\"}),t.Push(t.create(\"node\",\"msup\",[t.create(\"node\",\"menclose\",[n],a),r]))},new n.CommandMap(\"cancel\",{cancel:[\"Cancel\",T.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:[\"Cancel\",T.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:[\"Cancel\",T.TexConstant.Notation.UPDIAGONALSTRIKE+\" \"+T.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:\"CancelTo\"},e.CancelMethods),e.CancelConfiguration=r.Configuration.create(\"cancel\",{handler:{macro:[\"cancel\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=void 0;var r=Q(3),T=Q(2),n=Q(147),o=Q(148);new r.CommandMap(\"color\",{color:\"Color\",textcolor:\"TextColor\",definecolor:\"DefineColor\",colorbox:\"ColorBox\",fcolorbox:\"FColorBox\"},n.ColorMethods);e.ColorConfiguration=T.Configuration.create(\"color\",{handler:{macro:[\"color\"]},options:{color:{padding:\"5px\",borderWidth:\"2px\"}},config:function(t,e){e.parseOptions.packageData.set(\"color\",{model:new o.ColorModel})}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorMethods=void 0;var r=Q(8),T=Q(9);function n(t){var e=\"+\"+t,Q=t.replace(/^.*?([a-z]*)$/,\"$1\");return{width:\"+\"+2*parseFloat(e)+Q,height:e,depth:e,lspace:t}}e.ColorMethods={},e.ColorMethods.Color=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.GetArgument(e),T=t.configuration.packageData.get(\"color\").model.getColor(Q,r),n=t.itemFactory.create(\"style\").setProperties({styles:{mathcolor:T}});t.stack.env.color=T,t.Push(n)},e.ColorMethods.TextColor=function(t,e){var Q=t.GetBrackets(e,\"\"),r=t.GetArgument(e),T=t.configuration.packageData.get(\"color\").model.getColor(Q,r),n=t.stack.env.color;t.stack.env.color=T;var o=t.ParseArg(e);n?t.stack.env.color=n:delete t.stack.env.color;var i=t.create(\"node\",\"mstyle\",[o],{mathcolor:T});t.Push(i)},e.ColorMethods.DefineColor=function(t,e){var Q=t.GetArgument(e),r=t.GetArgument(e),T=t.GetArgument(e);t.configuration.packageData.get(\"color\").model.defineColor(r,Q,T)},e.ColorMethods.ColorBox=function(t,e){var Q=t.GetArgument(e),o=T.default.internalMath(t,t.GetArgument(e)),i=t.configuration.packageData.get(\"color\").model,a=t.create(\"node\",\"mpadded\",o,{mathbackground:i.getColor(\"named\",Q)});r.default.setProperties(a,n(t.options.color.padding)),t.Push(a)},e.ColorMethods.FColorBox=function(t,e){var Q=t.GetArgument(e),o=t.GetArgument(e),i=T.default.internalMath(t,t.GetArgument(e)),a=t.options.color,s=t.configuration.packageData.get(\"color\").model,l=t.create(\"node\",\"mpadded\",i,{mathbackground:s.getColor(\"named\",o),style:\"border: \"+a.borderWidth+\" solid \"+s.getColor(\"named\",Q)});r.default.setProperties(l,n(a.padding)),t.Push(l)}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorModel=void 0;var T=Q(5),n=Q(149),o=new Map,i=function(){function t(){this.userColors=new Map}return t.prototype.normalizeColor=function(t,e){if(!t||\"named\"===t)return e;if(o.has(t))return o.get(t)(e);throw new T.default(\"UndefinedColorModel\",\"Color model '%1' not defined\",t)},t.prototype.getColor=function(t,e){return t&&\"named\"!==t?this.normalizeColor(t,e):this.getColorByName(e)},t.prototype.getColorByName=function(t){return this.userColors.has(t)?this.userColors.get(t):n.COLORS.has(t)?n.COLORS.get(t):t},t.prototype.defineColor=function(t,e,Q){var r=this.normalizeColor(t,Q);this.userColors.set(e,r)},t}();e.ColorModel=i,o.set(\"rgb\",(function(t){var e,Q,n=t.trim().split(/\\s*,\\s*/),o=\"#\";if(3!==n.length)throw new T.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"rgb\");try{for(var i=r(n),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.match(/^(\\d+(\\.\\d*)?|\\.\\d+)$/))throw new T.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var l=parseFloat(s);if(l<0||l>1)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"rgb\",\"0\",\"1\");var c=Math.floor(255*l).toString(16);c.length<2&&(c=\"0\"+c),o+=c}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o})),o.set(\"RGB\",(function(t){var e,Q,n=t.trim().split(/\\s*,\\s*/),o=\"#\";if(3!==n.length)throw new T.default(\"ModelArg1\",\"Color values for the %1 model require 3 numbers\",\"RGB\");try{for(var i=r(n),a=i.next();!a.done;a=i.next()){var s=a.value;if(!s.match(/^\\d+$/))throw new T.default(\"InvalidNumber\",\"Invalid number\");var l=parseInt(s);if(l>255)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"RGB\",\"0\",\"255\");var c=l.toString(16);c.length<2&&(c=\"0\"+c),o+=c}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}return o})),o.set(\"gray\",(function(t){if(!t.match(/^\\s*(\\d+(\\.\\d*)?|\\.\\d+)\\s*$/))throw new T.default(\"InvalidDecimalNumber\",\"Invalid decimal number\");var e=parseFloat(t);if(e<0||e>1)throw new T.default(\"ModelArg2\",\"Color values for the %1 model must be between %2 and %3\",\"gray\",\"0\",\"1\");var Q=Math.floor(255*e).toString(16);return Q.length<2&&(Q=\"0\"+Q),\"#\"+Q+Q+Q}))},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COLORS=void 0,e.COLORS=new Map([[\"Apricot\",\"#FBB982\"],[\"Aquamarine\",\"#00B5BE\"],[\"Bittersweet\",\"#C04F17\"],[\"Black\",\"#221E1F\"],[\"Blue\",\"#2D2F92\"],[\"BlueGreen\",\"#00B3B8\"],[\"BlueViolet\",\"#473992\"],[\"BrickRed\",\"#B6321C\"],[\"Brown\",\"#792500\"],[\"BurntOrange\",\"#F7921D\"],[\"CadetBlue\",\"#74729A\"],[\"CarnationPink\",\"#F282B4\"],[\"Cerulean\",\"#00A2E3\"],[\"CornflowerBlue\",\"#41B0E4\"],[\"Cyan\",\"#00AEEF\"],[\"Dandelion\",\"#FDBC42\"],[\"DarkOrchid\",\"#A4538A\"],[\"Emerald\",\"#00A99D\"],[\"ForestGreen\",\"#009B55\"],[\"Fuchsia\",\"#8C368C\"],[\"Goldenrod\",\"#FFDF42\"],[\"Gray\",\"#949698\"],[\"Green\",\"#00A64F\"],[\"GreenYellow\",\"#DFE674\"],[\"JungleGreen\",\"#00A99A\"],[\"Lavender\",\"#F49EC4\"],[\"LimeGreen\",\"#8DC73E\"],[\"Magenta\",\"#EC008C\"],[\"Mahogany\",\"#A9341F\"],[\"Maroon\",\"#AF3235\"],[\"Melon\",\"#F89E7B\"],[\"MidnightBlue\",\"#006795\"],[\"Mulberry\",\"#A93C93\"],[\"NavyBlue\",\"#006EB8\"],[\"OliveGreen\",\"#3C8031\"],[\"Orange\",\"#F58137\"],[\"OrangeRed\",\"#ED135A\"],[\"Orchid\",\"#AF72B0\"],[\"Peach\",\"#F7965A\"],[\"Periwinkle\",\"#7977B8\"],[\"PineGreen\",\"#008B72\"],[\"Plum\",\"#92268F\"],[\"ProcessBlue\",\"#00B0F0\"],[\"Purple\",\"#99479B\"],[\"RawSienna\",\"#974006\"],[\"Red\",\"#ED1B23\"],[\"RedOrange\",\"#F26035\"],[\"RedViolet\",\"#A1246B\"],[\"Rhodamine\",\"#EF559F\"],[\"RoyalBlue\",\"#0071BC\"],[\"RoyalPurple\",\"#613F99\"],[\"RubineRed\",\"#ED017D\"],[\"Salmon\",\"#F69289\"],[\"SeaGreen\",\"#3FBC9D\"],[\"Sepia\",\"#671800\"],[\"SkyBlue\",\"#46C5DD\"],[\"SpringGreen\",\"#C6DC67\"],[\"Tan\",\"#DA9D76\"],[\"TealBlue\",\"#00AEB3\"],[\"Thistle\",\"#D883B7\"],[\"Turquoise\",\"#00B4CE\"],[\"Violet\",\"#58429B\"],[\"VioletRed\",\"#EF58A0\"],[\"White\",\"#FFFFFF\"],[\"WildStrawberry\",\"#EE2967\"],[\"Yellow\",\"#FFF200\"],[\"YellowGreen\",\"#98CC70\"],[\"YellowOrange\",\"#FAA21A\"]])},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var r=Q(3),T=Q(2);e.ColorV2Methods={Color:function(t,e){var Q=t.GetArgument(e),r=t.stack.env.color;t.stack.env.color=Q;var T=t.ParseArg(e);r?t.stack.env.color=r:delete t.stack.env.color;var n=t.create(\"node\",\"mstyle\",[T],{mathcolor:Q});t.Push(n)}},new r.CommandMap(\"colorv2\",{color:\"Color\"},e.ColorV2Methods),e.ColorConfiguration=T.Configuration.create(\"colorv2\",{handler:{macro:[\"colorv2\"]}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigMacrosConfiguration=void 0;var T=Q(2),n=Q(7),o=Q(3),i=Q(26),a=Q(88);e.ConfigMacrosConfiguration=T.Configuration.create(\"configmacros\",{init:function(t){new o.CommandMap(\"configmacros-map\",{},{}),t.append(T.Configuration.local({handler:{macro:[\"configmacros-map\"]},priority:3}))},config:function(t,e){var Q,T,n=e.parseOptions.handlers.retrieve(\"configmacros-map\"),o=e.parseOptions.options.macros;try{for(var s=r(Object.keys(o)),l=s.next();!l.done;l=s.next()){var c=l.value,u=\"string\"==typeof o[c]?[o[c]]:o[c],p=Array.isArray(u[2])?new i.Macro(c,a.default.MacroWithTemplate,u.slice(0,2).concat(u[2])):new i.Macro(c,a.default.Macro,u);n.add(c,p)}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(Q)throw Q.error}}},options:{macros:n.expandable({})}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var r=Q(2),T=Q(3),n=Q(34),o=Q(44),i=Q(89),a=Q(5);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=n.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,Q){var r=t.GetArgument(Q),T=t.GetArgument(Q),n=t.GetArgument(Q);if(!r.match(/^\\\\([a-z]+|.)$/i))throw new a.default(\"NewextarrowArg1\",\"First argument to %1 must be a control sequence name\",Q);if(!T.match(/^(\\d+),(\\d+)$/))throw new a.default(\"NewextarrowArg2\",\"Second argument to %1 must be two integers separated by a comma\",Q);if(!n.match(/^(\\d+|0x[0-9A-F]+)$/i))throw new a.default(\"NewextarrowArg3\",\"Third argument to %1 must be a unicode character number\",Q);r=r.substr(1);var i=T.split(\",\");o.default.addMacro(t,r,e.ExtpfeilMethods.xArrow,[parseInt(n),parseInt(i[0]),parseInt(i[1])])},new T.CommandMap(\"extpfeil\",{xtwoheadrightarrow:[\"xArrow\",8608,12,16],xtwoheadleftarrow:[\"xArrow\",8606,17,13],xmapsto:[\"xArrow\",8614,6,7],xlongequal:[\"xArrow\",61,7,7],xtofrom:[\"xArrow\",8644,12,12],Newextarrow:\"NewExtArrow\"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=r.Configuration.create(\"extpfeil\",{handler:{macro:[\"extpfeil\"]},init:function(t){i.NewcommandConfiguration.init(t)}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeginEnvItem=void 0;var n=Q(5),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"beginEnv\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.checkItem=function(e){if(e.isKind(\"end\")){if(e.getName()!==this.getName())throw new n.default(\"EnvBadEnd\",\"\\\\begin{%1} ended with \\\\end{%2}\",this.getName(),e.getName());return[[this.factory.create(\"mml\",this.toMml())],!0]}if(e.isKind(\"stop\"))throw new n.default(\"EnvMissingEnd\",\"Missing \\\\end{%1}\",this.getName());return t.prototype.checkItem.call(this,e)},e}(Q(22).BaseItem);e.BeginEnvItem=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HtmlConfiguration=void 0;var r=Q(2),T=Q(3),n=Q(155);new T.CommandMap(\"html_macros\",{href:\"Href\",class:\"Class\",style:\"Style\",cssId:\"Id\"},n.default),e.HtmlConfiguration=r.Configuration.create(\"html\",{handler:{macro:[\"html_macros\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(8),T={Href:function(t,e){var Q=t.GetArgument(e),T=n(t,e);r.default.setAttribute(T,\"href\",Q),t.Push(T)},Class:function(t,e){var Q=t.GetArgument(e),T=n(t,e),o=r.default.getAttribute(T,\"class\");o&&(Q=o+\" \"+Q),r.default.setAttribute(T,\"class\",Q),t.Push(T)},Style:function(t,e){var Q=t.GetArgument(e),T=n(t,e),o=r.default.getAttribute(T,\"style\");o&&(\";\"!==Q.charAt(Q.length-1)&&(Q+=\";\"),Q=o+\" \"+Q),r.default.setAttribute(T,\"style\",Q),t.Push(T)},Id:function(t,e){var Q=t.GetArgument(e),T=n(t,e);r.default.setAttribute(T,\"id\",Q),t.Push(T)}},n=function(t,e){var Q=t.ParseArg(e);if(!r.default.isInferred(Q))return Q;var T=r.default.getChildren(Q);if(1===T.length)return T[0];var n=t.create(\"node\",\"mrow\");return r.default.copyChildren(Q,n),r.default.copyAttributes(Q,n),n};e.default=T},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MhchemConfiguration=void 0;var r=Q(2),T=Q(3),n=Q(5),o=Q(16),i=Q(34),a=Q(289),s={};s.Macro=o.default.Macro,s.xArrow=i.AmsMethods.xArrow,s.Machine=function(t,e,Q){try{var r=t.GetArgument(e),T=a.mhchemParser.go(r,Q),o=a.texify.go(T);t.string=o+t.string.substr(t.i),t.i=0}catch(t){throw new n.default(t[0],t[1],t.slice(2))}},new T.CommandMap(\"mhchem\",{ce:[\"Machine\",\"ce\"],pu:[\"Machine\",\"pu\"],longrightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longRightleftharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle{-}\\\\!\\\\!{\\\\rightharpoonup}}{\\\\smash{\\\\leftharpoondown}}\"],longLeftrightharpoons:[\"Macro\",\"\\\\stackrel{\\\\textstyle\\\\vphantom{{-}}{\\\\rightharpoonup}}{\\\\smash{{\\\\leftharpoondown}\\\\!\\\\!{-}}}\"],longleftrightarrows:[\"Macro\",\"\\\\stackrel{\\\\longrightarrow}{\\\\smash{\\\\longleftarrow}\\\\Rule{0px}{.25em}{0px}}\"],tripledash:[\"Macro\",\"\\\\vphantom{-}\\\\raise2mu{\\\\kern2mu\\\\tiny\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern1mu\\\\text{-}\\\\kern2mu}\"],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3],xleftrightarrow:[\"xArrow\",8596,6,6],xrightleftharpoons:[\"xArrow\",8652,5,7],xRightleftharpoons:[\"xArrow\",8652,5,7],xLeftrightharpoons:[\"xArrow\",8652,5,7]},s),e.MhchemConfiguration=r.Configuration.create(\"mhchem\",{handler:{macro:[\"mhchem\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoErrorsConfiguration=void 0;var r=Q(2);e.NoErrorsConfiguration=r.Configuration.create(\"noerrors\",{nodes:{error:function(t,e,Q,r){var T=t.create(\"token\",\"mtext\",{},r.replace(/\\n/g,\" \"));return t.create(\"node\",\"merror\",[T],{\"data-mjx-error\":e,title:e})}}})},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoUndefinedConfiguration=void 0;var T=Q(2);e.NoUndefinedConfiguration=T.Configuration.create(\"noundefined\",{fallback:{macro:function(t,e){var Q,T,n=t.create(\"text\",\"\\\\\"+e),o=t.options.noundefined||{},i={};try{for(var a=r([\"color\",\"background\",\"size\"]),s=a.next();!s.done;s=a.next()){var l=s.value;o[l]&&(i[\"math\"+l]=o[l])}}catch(t){Q={error:t}}finally{try{s&&!s.done&&(T=a.return)&&T.call(a)}finally{if(Q)throw Q.error}}t.Push(t.create(\"node\",\"mtext\",[],i,n))}},options:{noundefined:{color:\"red\",background:\"\",size:\"\"}},priority:3})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PhysicsConfiguration=void 0;var T=Q(2),n=Q(160);Q(290),e.PhysicsConfiguration=T.Configuration.create(\"physics\",{handler:{macro:[\"Physics-automatic-bracing-macros\",\"Physics-vector-macros\",\"Physics-vector-chars\",\"Physics-derivative-macros\",\"Physics-expressions-macros\",\"Physics-quick-quad-macros\",\"Physics-bra-ket-macros\",\"Physics-matrix-macros\"],character:[\"Physics-characters\"],environment:[\"Physics-aux-envs\"]},items:(r={},r[n.AutoOpen.prototype.kind]=n.AutoOpen,r)})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoOpen=void 0;var n=Q(22),o=Q(9),i=Q(12),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"kind\",{get:function(){return\"auto open\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"isOpen\",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.toMml=function(){var e=this.factory.configuration.parser,Q=this.getProperty(\"right\");if(this.getProperty(\"smash\")){var r=t.prototype.toMml.call(this),T=e.create(\"node\",\"mpadded\",[r],{height:0,depth:0});this.Clear(),this.Push(e.create(\"node\",\"TeXAtom\",[T]))}Q&&this.Push(new i.default(Q,e.stack.env,e.configuration).mml());var n=t.prototype.toMml.call(this);return o.default.fenced(this.factory.configuration,this.getProperty(\"open\"),n,this.getProperty(\"close\"),this.getProperty(\"big\"))},e.prototype.checkItem=function(e){var Q=e.getProperty(\"autoclose\");return Q&&Q===this.getProperty(\"close\")?this.getProperty(\"ignore\")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:t.prototype.checkItem.call(this,e)},e}(n.BaseItem);e.AutoOpen=a},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0});var T=Q(16),n=Q(12),o=Q(5),i=Q(0),a=Q(9),s=Q(8),l=Q(41),c={},u={\"(\":\")\",\"[\":\"]\",\"{\":\"}\",\"|\":\"|\"},p=/^(b|B)i(g{1,2})$/;c.Quantity=function(t,e,Q,r,T,l,c){void 0===Q&&(Q=\"(\"),void 0===r&&(r=\")\"),void 0===T&&(T=!1),void 0===l&&(l=\"\"),void 0===c&&(c=\"\");var h=!!T&&t.GetStar(),f=t.GetNext(),d=t.i,L=null;if(\"\\\\\"===f){if(t.i++,!(L=t.GetCS()).match(p)){var H=t.create(\"node\",\"mrow\");return t.Push(a.default.fenced(t.configuration,Q,H,r)),void(t.i=d)}f=t.GetNext()}var m=u[f];if(T&&\"{\"!==f)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);if(!m){H=t.create(\"node\",\"mrow\");return t.Push(a.default.fenced(t.configuration,Q,H,r)),void(t.i=d)}if(l){var y=t.create(\"token\",\"mi\",{texClass:i.TEXCLASS.OP},l);c&&s.default.setAttribute(y,\"mathvariant\",c),t.Push(t.itemFactory.create(\"fn\",y))}if(\"{\"===f){var v=t.GetArgument(e);return f=T?Q:\"\\\\{\",m=T?r:\"\\\\}\",v=h?f+\" \"+v+\" \"+m:L?\"\\\\\"+L+\"l\"+f+\" \"+v+\" \\\\\"+L+\"r\"+m:\"\\\\left\"+f+\" \"+v+\" \\\\right\"+m,void t.Push(new n.default(v,t.stack.env,t.configuration).mml())}T&&(f=Q,m=r),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:f,close:m,big:L}))},c.Eval=function(t,e){var Q=t.GetStar(),r=t.GetNext();if(\"{\"!==r){if(\"(\"===r||\"[\"===r)return t.i++,void t.Push(t.itemFactory.create(\"auto open\").setProperties({open:r,close:\"|\",smash:Q,right:\"\\\\vphantom{\\\\int}\"}));throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS)}var T=t.GetArgument(e),n=\"\\\\left. \"+(Q?\"\\\\smash{\"+T+\"}\":T)+\" \\\\vphantom{\\\\int}\\\\right|\";t.string=t.string.slice(0,t.i)+n+t.string.slice(t.i)},c.Commutator=function(t,e,Q,r){void 0===Q&&(Q=\"[\"),void 0===r&&(r=\"]\");var T=t.GetStar(),i=t.GetNext(),a=null;if(\"\\\\\"===i){if(t.i++,!(a=t.GetCS()).match(p))throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);i=t.GetNext()}if(\"{\"!==i)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",t.currentCS);var s=t.GetArgument(e)+\",\"+t.GetArgument(e);s=T?Q+\" \"+s+\" \"+r:a?\"\\\\\"+a+\"l\"+Q+\" \"+s+\" \\\\\"+a+\"r\"+r:\"\\\\left\"+Q+\" \"+s+\" \\\\right\"+r,t.Push(new n.default(s,t.stack.env,t.configuration).mml())};var h=[65,90],f=[97,122],d=[913,937],L=[945,969],H=[48,57];function m(t,e){return t>=e[0]&&t<=e[1]}function y(t,e,Q,r){var T=t.configuration.parser,n=l.NodeFactory.createToken(t,e,Q,r),o=r.codePointAt(0);return 1===r.length&&!T.stack.env.font&&T.stack.env.vectorFont&&(m(o,h)||m(o,f)||m(o,d)||m(o,H)||m(o,L)&&T.stack.env.vectorStar||s.default.getAttribute(n,\"accent\"))&&s.default.setAttribute(n,\"mathvariant\",T.stack.env.vectorFont),n}c.VectorBold=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=t.configuration.nodeFactory.get(\"token\"),o=t.stack.env.font;delete t.stack.env.font,t.configuration.nodeFactory.set(\"token\",y),t.stack.env.vectorFont=Q?\"bold-italic\":\"bold\",t.stack.env.vectorStar=Q;var i=new n.default(r,t.stack.env,t.configuration).mml();o&&(t.stack.env.font=o),delete t.stack.env.vectorFont,delete t.stack.env.vectorStar,t.configuration.nodeFactory.set(\"token\",T),t.Push(i)},c.StarMacro=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];var n=t.GetStar(),i=[];if(Q)for(var s=i.length;s<Q;s++)i.push(t.GetArgument(e));var l=r.join(n?\"*\":\"\");if(l=a.default.substituteArgs(t,i,l),t.string=a.default.addArgs(t,l,t.string.slice(t.i)),t.i=0,++t.macroCount>t.configuration.options.maxMacros)throw new o.default(\"MaxMacroSub1\",\"MathJax maximum macro substitution count exceeded; is there a recursive macro call?\")};var v=function(t,e,Q,r,T){var o=new n.default(r,t.stack.env,t.configuration).mml();t.Push(t.itemFactory.create(e,o));var i=t.GetNext(),a=u[i];if(a){var s=-1!==T.indexOf(i);if(\"{\"===i){var l=(s?\"\\\\left\\\\{\":\"\")+\" \"+t.GetArgument(Q)+\" \"+(s?\"\\\\right\\\\}\":\"\");return t.string=l+t.string.slice(t.i),void(t.i=0)}s&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:i,close:a})))}};function g(t,e,Q){var T=r(t,3),n=T[0],o=T[1],i=T[2];return e&&Q?\"\\\\left\\\\langle{\"+n+\"}\\\\middle\\\\vert{\"+o+\"}\\\\middle\\\\vert{\"+i+\"}\\\\right\\\\rangle\":e?\"\\\\langle{\"+n+\"}\\\\vert{\"+o+\"}\\\\vert{\"+i+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+n+\"}\\\\right\\\\vert{\"+o+\"}\\\\left\\\\vert{\"+i+\"}\\\\right\\\\rangle\"}c.OperatorApplication=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];v(t,\"fn\",e,Q,r)},c.VectorOperator=function(t,e,Q){for(var r=[],T=3;T<arguments.length;T++)r[T-3]=arguments[T];v(t,\"mml\",e,Q,r)},c.Expression=function(t,e,Q,r){void 0===Q&&(Q=!0),void 0===r&&(r=\"\"),r=r||e.slice(1);var T=Q?t.GetBrackets(e):null,o=t.create(\"token\",\"mi\",{texClass:i.TEXCLASS.OP},r);if(T){var a=new n.default(T,t.stack.env,t.configuration).mml();o=t.create(\"node\",\"msup\",[o,a])}t.Push(t.itemFactory.create(\"fn\",o)),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"})))},c.Qqtext=function(t,e,Q){var r=(t.GetStar()?\"\":\"\\\\quad\")+\"\\\\text{\"+(Q||t.GetArgument(e))+\"}\\\\quad \";t.string=t.string.slice(0,t.i)+r+t.string.slice(t.i)},c.Differential=function(t,e,Q){var r=t.GetBrackets(e),T=null!=r?\"^{\"+r+\"}\":\" \",o=\"(\"===t.GetNext(),a=\"{\"===t.GetNext(),s=Q+T;if(o||a)if(a){s+=t.GetArgument(e);l=new n.default(s,t.stack.env,t.configuration).mml();t.Push(t.create(\"node\",\"TeXAtom\",[l],{texClass:i.TEXCLASS.OP}))}else t.Push(new n.default(s,t.stack.env,t.configuration).mml()),t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\"}));else{s+=t.GetArgument(e,!0)||\"\";var l=new n.default(s,t.stack.env,t.configuration).mml();t.Push(l)}},c.Derivative=function(t,e,Q,r){var T=t.GetStar(),o=t.GetBrackets(e),i=1,a=[];for(a.push(t.GetArgument(e));\"{\"===t.GetNext()&&i<Q;)a.push(t.GetArgument(e)),i++;var s=!1,l=\" \",c=\" \";Q>2&&a.length>2?(l=\"^{\"+(a.length-1)+\"}\",s=!0):null!=o&&(Q>2&&a.length>1&&(s=!0),c=l=\"^{\"+o+\"}\");for(var u=T?\"\\\\flatfrac\":\"\\\\frac\",p=a.length>1?a[0]:\"\",h=a.length>1?a[1]:a[0],f=\"\",d=2,L=void 0;L=a[d];d++)f+=r+\" \"+L;var H=u+\"{\"+r+l+p+\"}{\"+r+\" \"+h+c+\" \"+f+\"}\";t.Push(new n.default(H,t.stack.env,t.configuration).mml()),\"(\"===t.GetNext()&&(t.i++,t.Push(t.itemFactory.create(\"auto open\").setProperties({open:\"(\",close:\")\",ignore:s})))},c.Bra=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=\"\",o=!1,i=!1;if(\"\\\\\"===t.GetNext()){var a=t.i;t.i++;var s=t.GetCS(),l=t.lookup(\"macro\",s);l&&\"ket\"===l.symbol?(o=!0,a=t.i,i=t.GetStar(),\"{\"===t.GetNext()?T=t.GetArgument(s,!0):(t.i=a,i=!1)):t.i=a}var c=\"\";c=o?Q||i?\"\\\\langle{\"+r+\"}\\\\vert{\"+T+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+T+\"}\\\\right\\\\rangle\":Q||i?\"\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\langle{\"+r+\"}\\\\right\\\\vert{\"+T+\"}\",t.Push(new n.default(c,t.stack.env,t.configuration).mml())},c.Ket=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=Q?\"\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\vert{\"+r+\"}\\\\right\\\\rangle\";t.Push(new n.default(T,t.stack.env,t.configuration).mml())},c.BraKet=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=null;\"{\"===t.GetNext()&&(T=t.GetArgument(e,!0));var o=\"\";o=null==T?Q?\"\\\\langle{\"+r+\"}\\\\vert{\"+r+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+r+\"}\\\\right\\\\rangle\":Q?\"\\\\langle{\"+r+\"}\\\\vert{\"+T+\"}\\\\rangle\":\"\\\\left\\\\langle{\"+r+\"}\\\\middle\\\\vert{\"+T+\"}\\\\right\\\\rangle\",t.Push(new n.default(o,t.stack.env,t.configuration).mml())},c.KetBra=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=null;\"{\"===t.GetNext()&&(T=t.GetArgument(e,!0));var o=\"\";o=null==T?Q?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+r+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+r+\"}\\\\right\\\\vert\":Q?\"\\\\vert{\"+r+\"}\\\\rangle\\\\!\\\\langle{\"+T+\"}\\\\vert\":\"\\\\left\\\\vert{\"+r+\"}\\\\middle\\\\rangle\\\\!\\\\middle\\\\langle{\"+T+\"}\\\\right\\\\vert\",t.Push(new n.default(o,t.stack.env,t.configuration).mml())},c.Expectation=function(t,e){var Q=t.GetStar(),r=Q&&t.GetStar(),T=t.GetArgument(e),o=null;\"{\"===t.GetNext()&&(o=t.GetArgument(e,!0));var i=T&&o?g([o,T,o],Q,r):Q?\"\\\\langle {\"+T+\"} \\\\rangle\":\"\\\\left\\\\langle {\"+T+\"} \\\\right\\\\rangle\";t.Push(new n.default(i,t.stack.env,t.configuration).mml())},c.MatrixElement=function(t,e){var Q=t.GetStar(),r=Q&&t.GetStar(),T=g([t.GetArgument(e),t.GetArgument(e),t.GetArgument(e)],Q,r);t.Push(new n.default(T,t.stack.env,t.configuration).mml())},c.MatrixQuantity=function(t,e,Q){var r=t.GetStar(),T=Q?\"smallmatrix\":\"array\",o=\"\",i=\"\",a=\"\";switch(t.GetNext()){case\"{\":o=t.GetArgument(e);break;case\"(\":t.i++,i=r?\"\\\\lgroup\":\"(\",a=r?\"\\\\rgroup\":\")\",o=t.GetUpTo(e,\")\");break;case\"[\":t.i++,i=\"[\",a=\"]\",o=t.GetUpTo(e,\"]\");break;case\"|\":t.i++,i=\"|\",a=\"|\",o=t.GetUpTo(e,\"|\");break;default:i=\"(\",a=\")\"}var s=(i?\"\\\\left\":\"\")+i+\"\\\\begin{\"+T+\"}{} \"+o+\"\\\\end{\"+T+\"}\"+(i?\"\\\\right\":\"\")+a;t.Push(new n.default(s,t.stack.env,t.configuration).mml())},c.IdentityMatrix=function(t,e){var Q=t.GetArgument(e),r=parseInt(Q,10);if(isNaN(r))throw new o.default(\"InvalidNumber\",\"Invalid number\");if(r<=1)return t.string=\"1\"+t.string.slice(t.i),void(t.i=0);for(var T=Array(r).fill(\"0\"),n=[],i=0;i<r;i++){var a=T.slice();a[i]=\"1\",n.push(a.join(\" & \"))}t.string=n.join(\"\\\\\\\\ \")+t.string.slice(t.i),t.i=0},c.XMatrix=function(t,e){var Q=t.GetStar(),r=t.GetArgument(e),T=t.GetArgument(e),n=t.GetArgument(e),i=parseInt(T,10),a=parseInt(n,10);if(isNaN(i)||isNaN(a)||a.toString()!==n||i.toString()!==T)throw new o.default(\"InvalidNumber\",\"Invalid number\");if(i=i<1?1:i,a=a<1?1:a,!Q){var s=Array(a).fill(r).join(\" & \"),l=Array(i).fill(s).join(\"\\\\\\\\ \");return t.string=l+t.string.slice(t.i),void(t.i=0)}var c=\"\";if(1===i&&1===a)c=r;else if(1===i){s=[];for(var u=1;u<=a;u++)s.push(r+\"_{\"+u+\"}\");c=s.join(\" & \")}else if(1===a){for(s=[],u=1;u<=i;u++)s.push(r+\"_{\"+u+\"}\");c=s.join(\"\\\\\\\\ \")}else{var p=[];for(u=1;u<=i;u++){s=[];for(var h=1;h<=a;h++)s.push(r+\"_{{\"+u+\"}{\"+h+\"}}\");p.push(s.join(\" & \"))}c=p.join(\"\\\\\\\\ \")}t.string=c+t.string.slice(t.i),t.i=0},c.PauliMatrix=function(t,e){var Q=t.GetArgument(e),r=Q.slice(1);switch(Q[0]){case\"0\":r+=\" 1 & 0\\\\\\\\ 0 & 1\";break;case\"1\":case\"x\":r+=\" 0 & 1\\\\\\\\ 1 & 0\";break;case\"2\":case\"y\":r+=\" 0 & -i\\\\\\\\ i & 0\";break;case\"3\":case\"z\":r+=\" 1 & 0\\\\\\\\ 0 & -1\"}t.string=r+t.string.slice(t.i),t.i=0},c.DiagonalMatrix=function(t,e,Q){if(\"{\"===t.GetNext()){var r=t.i;t.GetArgument(e);var T=t.i;t.i=r+1;for(var n=[],o=\"\",i=t.i;i<T;){try{o=t.GetUpTo(e,\",\")}catch(e){t.i=T,n.push(t.string.slice(i,T-1));break}if(t.i>=T){n.push(t.string.slice(i,T));break}i=t.i,n.push(o)}t.string=function(t,e){for(var Q=t.length,r=[],T=0;T<Q;T++)r.push(Array(e?Q-T:T+1).join(\"&\")+\"\\\\mqty{\"+t[T]+\"}\");return r.join(\"\\\\\\\\ \")}(n,Q)+t.string.slice(T),t.i=0}},c.AutoClose=function(t,e,Q){var r=t.create(\"token\",\"mo\",{stretchy:!1},e),T=t.itemFactory.create(\"mml\",r).setProperties({autoclose:e});t.Push(T)},c.Macro=T.default.Macro,c.NamedFn=T.default.NamedFn,c.Array=T.default.Array,e.default=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.TagFormatConfiguration=e.tagformatConfig=void 0;var n=Q(2),o=Q(20),i=0;function a(t,e){var Q=e.parseOptions.options.tags;\"base\"!==Q&&t.tags.hasOwnProperty(Q)&&o.TagsFactory.add(Q,t.tags[Q]);var r=function(t){function Q(){return null!==t&&t.apply(this,arguments)||this}return T(Q,t),Q.prototype.formatNumber=function(t){return e.parseOptions.options.tagformat.number(t)},Q.prototype.formatTag=function(t){return e.parseOptions.options.tagformat.tag(t)},Q.prototype.formatId=function(t){return e.parseOptions.options.tagformat.id(t)},Q.prototype.formatUrl=function(t,Q){return e.parseOptions.options.tagformat.url(t,Q)},Q}(o.TagsFactory.create(e.parseOptions.options.tags).constructor),n=\"configTags-\"+ ++i;o.TagsFactory.add(n,r),e.parseOptions.options.tags=n}e.tagformatConfig=a,e.TagFormatConfiguration=n.Configuration.create(\"tagformat\",{config:[a,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return\"(\"+t+\")\"},id:function(t){return\"mjx-eqn-\"+t.replace(/\\s/g,\"_\")},url:function(t,e){return e+\"#\"+encodeURIComponent(t)}}}})},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.textBase=void 0;var T=Q(2),n=Q(86),o=Q(20),i=Q(27),a=Q(164),s=Q(90);function l(t,e,Q,r){var T=t.configuration.packageData.get(\"textmacros\");return t instanceof a.TextParser||(T.texParser=t),[new a.TextParser(e,r?{mathvariant:r}:{},T.parseOptions,Q).mml()]}Q(291),e.textBase=T.Configuration.local({handler:{character:[\"command\",\"text-special\"],macro:[\"text-macros\"]},fallback:{character:function(t,e){t.text+=e},macro:function(t,e){var Q=t.texParser,r=Q.lookup(\"macro\",e);r&&r._func!==s.TextMacrosMethods.Macro&&t.Error(\"MathMacro\",\"%1 is only supported in math mode\",\"\\\\\"+e),Q.parse(\"macro\",[r?t:Q,e])}},items:(r={},r[i.StartItem.prototype.kind]=i.StartItem,r[i.StopItem.prototype.kind]=i.StopItem,r[i.MmlItem.prototype.kind]=i.MmlItem,r[i.StyleItem.prototype.kind]=i.StyleItem,r)}),T.Configuration.create(\"textmacros\",{config:function(t,Q){var r=new T.ParserConfiguration([]);r.append(e.textBase),r.init();var i=new n.default(r,[]);i.options=Q.parseOptions.options,r.config(Q),o.TagsFactory.addTags(r.tags),i.tags=o.TagsFactory.getDefault(),i.tags.configuration=i,i.packageData=Q.parseOptions.packageData,i.packageData.set(\"textmacros\",{parseOptions:i,jax:Q,texParser:null}),i.options.internalMath=l},preprocessors:[function(t){var e=t.data.packageData.get(\"textmacros\");e.parseOptions.nodeFactory.setMmlFactory(e.jax.mmlFactory)}]})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextParser=void 0;var a=Q(12),s=Q(5),l=Q(9),c=Q(0),u=Q(8),p=Q(27),h=function(t){function e(e,Q,r,T){var n=t.call(this,e,Q,r)||this;return n.level=T,n}return T(e,t),Object.defineProperty(e.prototype,\"texParser\",{get:function(){return this.configuration.packageData.get(\"textmacros\").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"tags\",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),e.prototype.mml=function(){return null!=this.level?this.create(\"node\",\"mstyle\",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create(\"node\",\"inferredMrow\",this.nodes)},e.prototype.Parse=function(){this.text=\"\",this.nodes=[],this.envStack=[],t.prototype.Parse.call(this)},e.prototype.saveText=function(){if(this.text){var t=this.stack.env.mathvariant,e=l.default.internalText(this,this.text,t?{mathvariant:t}:{});this.text=\"\",this.Push(e)}},e.prototype.Push=function(e){if(this.text&&this.saveText(),e instanceof p.StopItem)return t.prototype.Push.call(this,e);e instanceof p.StyleItem?this.stack.env.mathcolor=this.stack.env.color:e instanceof c.AbstractMmlNode&&(this.addAttributes(e),this.nodes.push(e))},e.prototype.PushMath=function(t){var e,Q,r=this.stack.env;try{for(var T=n([\"mathsize\",\"mathcolor\"]),o=T.next();!o.done;o=T.next()){var i=o.value;r[i]&&!t.attributes.getExplicit(i)&&(t.isToken||t.isKind(\"mstyle\")||(t=this.create(\"node\",\"mstyle\",[t])),u.default.setAttribute(t,i,r[i]))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}t.isKind(\"inferredMrow\")&&(t=this.create(\"node\",\"mrow\",t.childNodes)),this.nodes.push(t)},e.prototype.addAttributes=function(t){var e,Q,r=this.stack.env;if(t.isToken)try{for(var T=n([\"mathsize\",\"mathcolor\",\"mathvariant\"]),o=T.next();!o.done;o=T.next()){var i=o.value;r[i]&&!t.attributes.getExplicit(i)&&u.default.setAttribute(t,i,r[i])}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}},e.prototype.ParseTextArg=function(t,Q){return new e(this.GetArgument(t),Q=Object.assign(Object.assign({},this.stack.env),Q),this.configuration).mml()},e.prototype.ParseArg=function(t){return new e(this.GetArgument(t),this.stack.env,this.configuration).mml()},e.prototype.Error=function(t,e){for(var Q=[],r=2;r<arguments.length;r++)Q[r-2]=arguments[r];throw new(s.default.bind.apply(s.default,i([void 0,t,e],Q)))},e}(a.default);e.TextParser=h},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var r=Q(2),T=Q(5),n=Q(3),o=Q(9),i=Q(8),a=Q(19);e.UnicodeMethods={};var s={};e.UnicodeMethods.Unicode=function(t,e){var Q=t.GetBrackets(e),r=null,n=null;Q&&(Q.replace(/ /g,\"\").match(/^(\\d+(\\.\\d*)?|\\.\\d+),(\\d+(\\.\\d*)?|\\.\\d+)$/)?(r=Q.replace(/ /g,\"\").split(/,/),n=t.GetBrackets(e)):n=Q);var l=o.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,\"x\");if(!l.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new T.default(\"BadUnicode\",\"Argument to \\\\unicode must be a number\");var c=parseInt(l.match(/^x/)?\"0\"+l:l);s[c]?n||(n=s[c][2]):s[c]=[800,200,n,c],r&&(s[c][0]=Math.floor(1e3*parseFloat(r[0])),s[c][1]=Math.floor(1e3*parseFloat(r[1])));var u=t.stack.env.font,p={};n?(s[c][2]=p.fontfamily=n.replace(/'/g,\"'\"),u&&(u.match(/bold/)&&(p.fontweight=\"bold\"),u.match(/italic|-mathit/)&&(p.fontstyle=\"italic\"))):u&&(p.mathvariant=u);var h=t.create(\"token\",\"mtext\",p,a.numeric(l));i.default.setProperty(h,\"unicode\",!0),t.Push(h)},new n.CommandMap(\"unicode\",{unicode:\"Unicode\"},e.UnicodeMethods),e.UnicodeConfiguration=r.Configuration.create(\"unicode\",{handler:{macro:[\"unicode\"]}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var r=Q(2),T=Q(13),n=Q(3),o=Q(5);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var Q=t.GetNext(),r=++t.i;if(\"\"===Q)throw new o.default(\"MissingArgFor\",\"Missing argument for %1\",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==Q;)t.i++;if(t.i===t.string.length)throw new o.default(\"NoClosingDelim\",\"Can't find closing delimiter for %1\",t.currentCS);var n=t.string.slice(r,t.i).replace(/ /g,\"\\xa0\");t.i++,t.Push(t.create(\"token\",\"mtext\",{mathvariant:T.TexConstant.Variant.MONOSPACE},n))},new n.CommandMap(\"verb\",{verb:\"Verb\"},e.VerbMethods),e.VerbConfiguration=r.Configuration.create(\"verb\",{handler:{macro:[\"verb\"]}})},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonOutputJax=void 0;var a=Q(55),s=Q(14),l=Q(7),c=Q(32),u=Q(84),p=Q(127),h=function(t){function e(e,Q,r){void 0===e&&(e=null),void 0===Q&&(Q=null),void 0===r&&(r=null);var T=this,n=o(l.separateOptions(e,r.OPTIONS),2),i=n[0],a=n[1];return(T=t.call(this,i)||this).factory=T.options.wrapperFactory||new Q,T.factory.jax=T,T.cssStyles=T.options.cssStyles||new p.CssStyles,T.font=T.options.font||new r(a),T.unknownCache=new Map,T}return T(e,t),e.prototype.typeset=function(t,e){this.setDocument(e);var Q=this.createNode();return this.toDOM(t,Q,e),Q},e.prototype.createNode=function(){var t=this.constructor.NAME;return this.html(\"mjx-container\",{class:\"MathJax\",jax:t})},e.prototype.setScale=function(t){var e=this.math.metrics.scale*this.options.scale;1!==e&&this.adaptor.setStyle(t,\"fontSize\",c.percent(e))},e.prototype.toDOM=function(t,e,Q){void 0===Q&&(Q=null),this.setDocument(Q),this.math=t,this.pxPerEm=t.metrics.ex/this.font.params.x_height,t.root.setTeXclass(null),this.setScale(e),this.nodeMap=new Map,this.container=e,this.processMath(t.root,e),this.nodeMap=null,this.executeFilters(this.postFilters,t,Q,e)},e.prototype.getBBox=function(t,e){this.setDocument(e),this.math=t,t.root.setTeXclass(null),this.nodeMap=new Map;var Q=this.factory.wrap(t.root).getBBox();return this.nodeMap=null,Q},e.prototype.getMetrics=function(t){var e,Q;this.setDocument(t);var r=this.adaptor,T=this.getMetricMaps(t);try{for(var n=i(t.math),o=n.next();!o.done;o=n.next()){var a=o.value,l=r.parent(a.start.node);if(a.state()<s.STATE.METRICS&&l){var c=T[a.display?1:0].get(l),u=c.em,p=c.ex,h=c.containerWidth,f=c.lineWidth,d=c.scale,L=c.family;a.setMetrics(u,p,h,f,d),this.options.mtextInheritFont&&(a.outputData.mtextFamily=L),this.options.merrorInheritFont&&(a.outputData.merrorFamily=L),a.state(s.STATE.METRICS)}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},e.prototype.getMetricsFor=function(t,e){var Q=this.options.mtextInheritFont||this.options.merrorInheritFont,r=this.getTestElement(t,e),T=this.measureMetrics(r,Q);return this.adaptor.remove(r),T},e.prototype.getMetricMaps=function(t){var e,Q,r,T,n,o,a,l,c,u,p=this.adaptor,h=[new Map,new Map];try{for(var f=i(t.math),d=f.next();!d.done;d=f.next()){var L=d.value;if((x=p.parent(L.start.node))&&L.state()<s.STATE.METRICS){var H=h[L.display?1:0];H.has(x)||H.set(x,this.getTestElement(x,L.display))}}}catch(t){e={error:t}}finally{try{d&&!d.done&&(Q=f.return)&&Q.call(f)}finally{if(e)throw e.error}}var m=this.options.mtextInheritFont||this.options.merrorInheritFont,y=[new Map,new Map];try{for(var v=i(y.keys()),g=v.next();!g.done;g=v.next()){var b=g.value;try{for(var M=(n=void 0,i(h[b].keys())),V=M.next();!V.done;V=M.next()){var x=V.value;y[b].set(x,this.measureMetrics(h[b].get(x),m))}}catch(t){n={error:t}}finally{try{V&&!V.done&&(o=M.return)&&o.call(M)}finally{if(n)throw n.error}}}}catch(t){r={error:t}}finally{try{g&&!g.done&&(T=v.return)&&T.call(v)}finally{if(r)throw r.error}}try{for(var O=i(y.keys()),_=O.next();!_.done;_=O.next()){b=_.value;try{for(var S=(c=void 0,i(h[b].values())),E=S.next();!E.done;E=S.next()){x=E.value;p.remove(x)}}catch(t){c={error:t}}finally{try{E&&!E.done&&(u=S.return)&&u.call(S)}finally{if(c)throw c.error}}}}catch(t){a={error:t}}finally{try{_&&!_.done&&(l=O.return)&&l.call(O)}finally{if(a)throw a.error}}return y},e.prototype.getTestElement=function(t,e){var Q=this.adaptor;if(!this.testInline){this.testInline=this.html(\"mjx-test\",{style:{display:\"inline-block\",width:\"100%\",\"font-style\":\"normal\",\"font-weight\":\"normal\",\"font-size\":\"100%\",\"font-size-adjust\":\"none\",\"text-indent\":0,\"text-transform\":\"none\",\"letter-spacing\":\"normal\",\"word-spacing\":\"normal\",overflow:\"hidden\",height:\"1px\",\"margin-right\":\"-1px\"}},[this.html(\"mjx-left-box\",{style:{display:\"inline-block\",width:0,float:\"left\"}}),this.html(\"mjx-ex-box\",{style:{position:\"absolute\",overflow:\"hidden\",width:\"1px\",height:\"60ex\"}}),this.html(\"mjx-right-box\",{style:{display:\"inline-block\",width:0,float:\"right\"}})]),this.testDisplay=Q.clone(this.testInline),Q.setStyle(this.testDisplay,\"display\",\"table\"),Q.setStyle(this.testDisplay,\"margin-right\",\"\"),Q.setStyle(Q.firstChild(this.testDisplay),\"display\",\"none\");var r=Q.lastChild(this.testDisplay);Q.setStyle(r,\"display\",\"table-cell\"),Q.setStyle(r,\"width\",\"10000em\"),Q.setStyle(r,\"float\",\"\")}return Q.append(t,Q.clone(e?this.testDisplay:this.testInline))},e.prototype.measureMetrics=function(t,e){var Q=this.adaptor,r=e?Q.fontFamily(t):\"\",T=Q.fontSize(t),n=Q.nodeSize(Q.childNode(t,1))[1]/60||T*this.options.exFactor;return{em:T,ex:n,containerWidth:\"table\"===Q.getStyle(t,\"display\")?Q.nodeSize(Q.lastChild(t))[0]-1:Q.nodeBBox(Q.lastChild(t)).left-Q.nodeBBox(Q.firstChild(t)).left-2,lineWidth:1e6,scale:Math.max(this.options.minScale,this.options.matchFontHeight?n/this.font.params.x_height/T:1),family:r}},e.prototype.styleSheet=function(t){var e,Q,r,T;if(this.setDocument(t),this.cssStyles.clear(),this.cssStyles.addStyles(this.constructor.commonStyles),\"getStyles\"in t)try{for(var n=i(t.getStyles()),o=n.next();!o.done;o=n.next()){var a=o.value;this.cssStyles.addStyles(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}try{for(var s=i(this.factory.getKinds()),l=s.next();!l.done;l=s.next()){var c=l.value;this.addClassStyles(this.factory.getNodeClass(c))}}catch(t){r={error:t}}finally{try{l&&!l.done&&(T=s.return)&&T.call(s)}finally{if(r)throw r.error}}return this.cssStyles.addStyles(this.font.styles),this.html(\"style\",{id:\"MJX-styles\"},[this.text(\"\\n\"+this.cssStyles.cssText+\"\\n\")])},e.prototype.addClassStyles=function(t){this.cssStyles.addStyles(t.styles)},e.prototype.setDocument=function(t){t&&(this.document=t,this.adaptor.document=t.document)},e.prototype.html=function(t,e,Q,r){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.adaptor.node(t,e,Q,r)},e.prototype.text=function(t){return this.adaptor.text(t)},e.prototype.fixed=function(t,e){return void 0===e&&(e=3),Math.abs(t)<6e-4?\"0\":t.toFixed(e).replace(/\\.?0+$/,\"\")},e.prototype.measureText=function(t,e,Q){void 0===Q&&(Q=[\"\",!1,!1]);var r=this.unknownText(t,e);if(\"-explicitFont\"===e){var T=this.cssFontStyles(Q);this.adaptor.setAttributes(r,{style:T})}return this.measureTextNodeWithCache(r,t,e,Q)},e.prototype.measureTextNodeWithCache=function(t,e,Q,r){void 0===r&&(r=[\"\",!1,!1]),\"-explicitFont\"===Q&&(Q=[r[0],r[1]?\"T\":\"F\",r[2]?\"T\":\"F\",\"\"].join(\"-\")),this.unknownCache.has(Q)||this.unknownCache.set(Q,new Map);var T=this.unknownCache.get(Q),n=T.get(e);if(n)return n;var o=this.measureTextNode(t);return T.set(e,o),o},e.prototype.measureXMLnode=function(t){var e=this.adaptor,Q=this.html(\"mjx-xml-block\",{style:{display:\"inline-block\"}},[e.clone(t)]),r=this.html(\"mjx-baseline\",{style:{display:\"inline-block\",width:0,height:0}}),T=this.html(\"mjx-measure-xml\",{style:{position:\"absolute\",display:\"inline-block\",\"font-family\":\"initial\",\"line-height\":\"normal\"}},[r,Q]);e.append(e.parent(this.math.start.node),this.container),e.append(this.container,T);var n=this.math.metrics.em*this.math.metrics.scale,o=e.nodeBBox(Q),i=o.left,a=o.right,s=o.bottom,l=o.top,c=(a-i)/n,u=(e.nodeBBox(r).top-l)/n,p=(s-l)/n-u;return e.remove(this.container),e.remove(T),{w:c,h:u,d:p}},e.prototype.cssFontStyles=function(t,e){void 0===e&&(e={});var Q=o(t,3),r=Q[0],T=Q[1],n=Q[2];return e[\"font-family\"]=this.font.getFamily(r),T&&(e[\"font-style\"]=\"italic\"),n&&(e[\"font-weight\"]=\"bold\"),e},e.prototype.getFontData=function(t){return t||(t=new u.Styles),[this.font.getFamily(t.get(\"font-family\")),\"italic\"===t.get(\"font-style\"),\"bold\"===t.get(\"font-weight\")]},e.NAME=\"Common\",e.OPTIONS=n(n({},a.AbstractOutputJax.OPTIONS),{scale:1,minScale:.5,matchFontHeight:!0,mtextInheritFont:!1,merrorInheritFont:!1,mtextFont:\"\",merrorFont:\"serif\",mathmlSpacing:!1,skipAttributes:{},exFactor:.5,displayAlign:\"center\",displayIndent:\"0\",wrapperFactory:null,font:null,cssStyles:null}),e.commonStyles={},e}(a.AbstractOutputJax);e.CommonOutputJax=h},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonWrapper=void 0;var a=Q(120),s=Q(0),l=Q(15),c=Q(32),u=Q(84),p=Q(18),h=Q(28);function f(t,e){return t?e<.1111111111111111?0:.1111111111111111:e}var d=function(t){function e(e,Q,r){void 0===r&&(r=null);var T=t.call(this,e,Q)||this;return T.parent=null,T.removedStyles=null,T.styles=null,T.variant=\"\",T.bboxComputed=!1,T.stretch=h.NOSTRETCH,T.font=null,T.parent=r,T.font=e.jax.font,T.bbox=p.BBox.zero(),T.getStyles(),T.getVariant(),T.getScale(),T.getSpace(),T.childNodes=Q.childNodes.map((function(t){var e=T.wrap(t);return e.bbox.pwidth&&(Q.notParent||Q.isKind(\"math\"))&&(T.bbox.pwidth=p.BBox.fullWidth),e})),T}return T(e,t),Object.defineProperty(e.prototype,\"jax\",{get:function(){return this.factory.jax},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"adaptor\",{get:function(){return this.factory.jax.adaptor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"metrics\",{get:function(){return this.factory.jax.math.metrics},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!this.node.notParent&&!this.node.isToken},enumerable:!1,configurable:!0}),e.prototype.wrap=function(t,e){void 0===e&&(e=null);var Q=this.factory.wrap(t,e||this);return e&&e.childNodes.push(Q),this.jax.nodeMap.set(t,Q),Q},e.prototype.getBBox=function(t){if(void 0===t&&(t=!0),this.bboxComputed)return this.bbox;var e=t?this.bbox:p.BBox.zero();return this.computeBBox(e),this.bboxComputed=t,e},e.prototype.computeBBox=function(t,e){var Q,r;void 0===e&&(e=!1),t.empty();try{for(var T=n(this.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;t.append(i.getBBox())}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}t.clean(),this.fixesPWidth&&this.setChildPWidths(e)&&this.computeBBox(t,!0)},e.prototype.setChildPWidths=function(t,e,Q){var r,T;if(void 0===e&&(e=null),void 0===Q&&(Q=!0),t)return!1;Q&&(this.bbox.pwidth=\"\");var o=!1;try{for(var i=n(this.childNodes),a=i.next();!a.done;a=i.next()){var s=a.value,l=s.getBBox();l.pwidth&&s.setChildPWidths(t,null===e?l.w:e,Q)&&(o=!0)}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o},e.prototype.invalidateBBox=function(){this.bboxComputed&&(this.bboxComputed=!1,this.parent&&this.parent.invalidateBBox())},e.prototype.copySkewIC=function(t){var e=this.childNodes[0];e&&e.bbox.sk&&(t.sk=e.bbox.sk);var Q=this.childNodes[this.childNodes.length-1];Q&&Q.bbox.ic&&(t.ic=Q.bbox.ic,t.w+=t.ic)},e.prototype.getStyles=function(){var t=this.node.attributes.getExplicit(\"style\");if(t)for(var Q=this.styles=new u.Styles(t),r=0,T=e.removeStyles.length;r<T;r++){var n=e.removeStyles[r];Q.get(n)&&(this.removedStyles||(this.removedStyles={}),this.removedStyles[n]=Q.get(n),Q.set(n,\"\"))}},e.prototype.getVariant=function(){if(this.node.isToken){var t=this.node.attributes,Q=t.get(\"mathvariant\");if(!t.getExplicit(\"mathvariant\")){var r=t.getList(\"fontfamily\",\"fontweight\",\"fontstyle\");if(this.removedStyles){var T=this.removedStyles;T.fontFamily&&(r.family=T.fontFamily),T.fontWeight&&(r.weight=T.fontWeight),T.fontStyle&&(r.style=T.fontStyle)}r.fontfamily&&(r.family=r.fontfamily),r.fontweight&&(r.weight=r.fontweight),r.fontstyle&&(r.style=r.fontstyle),r.weight&&r.weight.match(/^\\d+$/)&&(r.weight=parseInt(r.weight)>600?\"bold\":\"normal\"),r.family?Q=this.explicitVariant(r.family,r.weight,r.style):(this.node.getProperty(\"variantForm\")&&(Q=\"-tex-variant\"),Q=(e.BOLDVARIANTS[r.weight]||{})[Q]||Q,Q=(e.ITALICVARIANTS[r.style]||{})[Q]||Q)}this.variant=Q}},e.prototype.explicitVariant=function(t,e,Q){var r=this.styles;return r||(r=this.styles=new u.Styles),r.set(\"fontFamily\",t),e&&r.set(\"fontWeight\",e),Q&&r.set(\"fontStyle\",Q),\"-explicitFont\"},e.prototype.getScale=function(){var t=1,e=this.parent,Q=e?e.bbox.scale:1,r=this.node.attributes,T=Math.min(r.get(\"scriptlevel\"),2),n=r.get(\"fontsize\"),o=this.node.isToken||this.node.isKind(\"mstyle\")?r.get(\"mathsize\"):r.getInherited(\"mathsize\");if(0!==T){t=Math.pow(r.get(\"scriptsizemultiplier\"),T);var i=this.length2em(r.get(\"scriptminsize\"),.8,1);t<i&&(t=i)}this.removedStyles&&this.removedStyles.fontSize&&!n&&(n=this.removedStyles.fontSize),n&&!r.getExplicit(\"mathsize\")&&(o=n),\"1\"!==o&&(t*=this.length2em(o,1,1)),this.bbox.scale=t,this.bbox.rscale=t/Q},e.prototype.getSpace=function(){var t=this.isTopEmbellished(),e=this.node.hasSpacingAttributes();this.jax.options.mathmlSpacing||e?t&&this.getMathMLSpacing():this.getTeXSpacing(t,e)},e.prototype.getMathMLSpacing=function(){var t=this.node.coreMO(),e=t.attributes,Q=e.get(\"scriptlevel\")>0;this.bbox.L=e.isSet(\"lspace\")?Math.max(0,this.length2em(e.get(\"lspace\"))):f(Q,t.lspace),this.bbox.R=e.isSet(\"rspace\")?Math.max(0,this.length2em(e.get(\"rspace\"))):f(Q,t.rspace)},e.prototype.getTeXSpacing=function(t,e){if(!e){var Q=this.node.texSpacing();Q&&(this.bbox.L=this.length2em(Q))}if(t||e){var r=this.node.coreMO().attributes;r.isSet(\"lspace\")&&(this.bbox.L=Math.max(0,this.length2em(r.get(\"lspace\")))),r.isSet(\"rspace\")&&(this.bbox.R=Math.max(0,this.length2em(r.get(\"rspace\"))))}},e.prototype.isTopEmbellished=function(){return this.node.isEmbellished&&!(this.node.Parent&&this.node.Parent.isEmbellished)},e.prototype.core=function(){return this.jax.nodeMap.get(this.node.core())},e.prototype.coreMO=function(){return this.jax.nodeMap.get(this.node.coreMO())},e.prototype.getText=function(){var t,e,Q=\"\";if(this.node.isToken)try{for(var r=n(this.node.childNodes),T=r.next();!T.done;T=r.next()){var o=T.value;o instanceof s.TextNode&&(Q+=o.getText())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.canStretch=function(t){if(this.stretch=h.NOSTRETCH,this.node.isEmbellished){var e=this.core();e&&e.node!==this.node&&e.canStretch(t)&&(this.stretch=e.stretch)}return 0!==this.stretch.dir},e.prototype.getAlignShift=function(){var t,e=(t=this.node.attributes).getList.apply(t,i(s.indentAttributes)),Q=e.indentalign,r=e.indentshift,T=e.indentalignfirst,n=e.indentshiftfirst;return\"indentalign\"!==T&&(Q=T),\"auto\"===Q&&(Q=this.jax.options.displayAlign),\"indentshift\"!==n&&(r=n),\"auto\"===r&&(r=this.jax.options.displayIndent,\"right\"!==Q||r.match(/^\\s*0[a-z]*\\s*$/)||(r=(\"-\"+r.trim()).replace(/^--/,\"\"))),[Q,this.length2em(r,this.metrics.containerWidth)]},e.prototype.getAlignX=function(t,e,Q){return\"right\"===Q?t-(e.w+e.R)*e.rscale:\"left\"===Q?e.L*e.rscale:(t-e.w*e.rscale)/2},e.prototype.getAlignY=function(t,e,Q,r,T){return\"top\"===T?t-Q:\"bottom\"===T?r-e:\"middle\"===T?(t-Q-(e-r))/2:0},e.prototype.getWrapWidth=function(t){return this.childNodes[t].getBBox().w},e.prototype.getChildAlign=function(t){return\"left\"},e.prototype.percent=function(t){return c.percent(t)},e.prototype.em=function(t){return c.em(t)},e.prototype.px=function(t,e){return void 0===e&&(e=-c.BIGDIMEN),c.px(t,e,this.metrics.em)},e.prototype.length2em=function(t,e,Q){return void 0===e&&(e=1),void 0===Q&&(Q=null),null===Q&&(Q=this.bbox.scale),c.length2em(t,e,Q,this.jax.pxPerEm)},e.prototype.unicodeChars=function(t,e){void 0===e&&(e=this.variant);var Q=l.unicodeChars(t),r=this.font.getVariant(e);if(r&&r.chars){var T=r.chars;Q=Q.map((function(t){return((T[t]||[])[3]||{}).smp||t}))}return Q},e.prototype.remapChars=function(t){return t},e.prototype.mmlText=function(t){return this.node.factory.create(\"text\").setText(t)},e.prototype.mmlNode=function(t,e,Q){return void 0===e&&(e={}),void 0===Q&&(Q=[]),this.node.factory.create(t,e,Q)},e.prototype.createMo=function(t){var e=this.node.factory,Q=e.create(\"text\").setText(t),r=e.create(\"mo\",{stretchy:!0},[Q]);r.inheritAttributesFrom(this.node);var T=this.wrap(r);return T.parent=this,T},e.prototype.getVariantChar=function(t,e){var Q=this.font.getChar(t,e)||[0,0,0,{unknown:!0}];return 3===Q.length&&(Q[3]={}),Q},e.kind=\"unknown\",e.styles={},e.removeStyles=[\"fontSize\",\"fontFamily\",\"fontWeight\",\"fontStyle\",\"fontVariant\",\"font\"],e.skipAttributes={fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,class:!0,href:!0,style:!0,xmlns:!0},e.BOLDVARIANTS={bold:{normal:\"bold\",italic:\"bold-italic\",fraktur:\"bold-fraktur\",script:\"bold-script\",\"sans-serif\":\"bold-sans-serif\",\"sans-serif-italic\":\"sans-serif-bold-italic\"},normal:{bold:\"normal\",\"bold-italic\":\"italic\",\"bold-fraktur\":\"fraktur\",\"bold-script\":\"script\",\"bold-sans-serif\":\"sans-serif\",\"sans-serif-bold-italic\":\"sans-serif-italic\"}},e.ITALICVARIANTS={italic:{normal:\"italic\",bold:\"bold-italic\",\"sans-serif\":\"sans-serif-italic\",\"bold-sans-serif\":\"sans-serif-bold-italic\"},normal:{italic:\"normal\",\"bold-italic\":\"bold\",\"sans-serif-italic\":\"sans-serif\",\"sans-serif-bold-italic\":\"bold-sans-serif\"}},e}(a.AbstractWrapper);e.CommonWrapper=d},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonWrapperFactory=void 0;var n=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.jax=null,e}return T(e,t),Object.defineProperty(e.prototype,\"Wrappers\",{get:function(){return this.node},enumerable:!1,configurable:!0}),e.defaultNodes={},e}(Q(121).AbstractWrapperFactory);e.CommonWrapperFactory=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTeXAtomMixin=void 0;var n=Q(0);e.CommonTeXAtomMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(e,Q){if(void 0===Q&&(Q=!1),t.prototype.computeBBox.call(this,e,Q),this.childNodes[0]&&this.childNodes[0].bbox.ic&&(e.ic=this.childNodes[0].bbox.ic),this.node.texClass===n.TEXCLASS.VCENTER){var r=e.h,T=(r+e.d)/2+this.font.params.axis_height-r;e.h+=T,e.d-=T}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTextNodeMixin=void 0,e.CommonTextNodeMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){var Q,r;void 0===e&&(e=!1);var T=this.parent.variant,i=this.node.getText();if(\"-explicitFont\"===T){var a=this.jax.getFontData(this.parent.styles),s=this.jax.measureText(i,T,a),l=s.w,c=s.h,u=s.d;t.h=c,t.d=u,t.w=l}else{var p=this.remappedText(i,T);t.empty();try{for(var h=n(p),f=h.next();!f.done;f=h.next()){var d=f.value,L=o(this.getVariantChar(T,d),4),H=(c=L[0],u=L[1],l=L[2],L[3]);if(H.unknown){var m=this.jax.measureText(String.fromCodePoint(d),T);l=m.w,c=m.h,u=m.d}t.w+=l,c>t.h&&(t.h=c),u>t.d&&(t.d=u),t.ic=H.ic||0,t.sk=H.sk||0}}catch(t){Q={error:t}}finally{try{f&&!f.done&&(r=h.return)&&r.call(h)}finally{if(Q)throw Q.error}}p.length>1&&(t.sk=0),t.clean()}},e.prototype.remappedText=function(t,e){var Q=this.parent.stretch.c;return Q?[Q]:this.parent.remapChars(this.unicodeChars(t,e))},e.prototype.getStyles=function(){},e.prototype.getVariant=function(){},e.prototype.getScale=function(){},e.prototype.getSpace=function(){},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMathMixin=void 0,e.CommonMathMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getWrapWidth=function(t){return this.parent?this.getBBox().w:this.metrics.containerWidth/this.jax.pxPerEm},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMencloseMixin=void 0;var a=Q(45),s=Q(15);e.CommonMencloseMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.notations={},r.renderChild=null,r.msqrt=null,r.padding=a.PADDING,r.thickness=a.THICKNESS,r.arrowhead={x:a.ARROWX,y:a.ARROWY,dx:a.ARROWDX},r.getParameters(),r.getNotations(),r.removeRedundantNotations(),r.initializeNotations(),r}return T(e,t),e.prototype.getParameters=function(){var t=this.node.attributes,e=t.get(\"data-padding\");void 0!==e&&(this.padding=this.length2em(e,a.PADDING));var Q=t.get(\"data-thickness\");void 0!==Q&&(this.thickness=this.length2em(Q,a.THICKNESS));var r=t.get(\"data-arrowhead\");if(void 0!==r){var T=n(s.split(r),3),o=T[0],i=T[1],l=T[2];this.arrowhead={x:o?parseFloat(o):a.ARROWX,y:i?parseFloat(i):a.ARROWY,dx:l?parseFloat(l):a.ARROWDX}}},e.prototype.getNotations=function(){var t,e,Q=this.constructor.notations;try{for(var r=i(s.split(this.node.attributes.get(\"notation\"))),T=r.next();!T.done;T=r.next()){var n=T.value,o=Q.get(n);o&&(this.notations[n]=o,o.renderChild&&(this.renderChild=o.renderer))}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.removeRedundantNotations=function(){var t,e,Q,r;try{for(var T=i(Object.keys(this.notations)),n=T.next();!n.done;n=T.next()){var o=n.value;if(this.notations[o]){var a=this.notations[o].remove||\"\";try{for(var s=(Q=void 0,i(a.split(/ /))),l=s.next();!l.done;l=s.next()){var c=l.value;delete this.notations[c]}}catch(t){Q={error:t}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(Q)throw Q.error}}}}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}},e.prototype.initializeNotations=function(){var t,e;try{for(var Q=i(Object.keys(this.notations)),r=Q.next();!r.done;r=Q.next()){var T=r.value,n=this.notations[T].init;n&&n(this)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=Q.return)&&e.call(Q)}finally{if(t)throw t.error}}},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=n(this.getBBoxExtenders(),4),r=Q[0],T=Q[1],o=Q[2],i=Q[3],a=this.childNodes[0].getBBox();t.combine(a,i,0),t.h+=r,t.d+=o,t.w+=T,this.setChildPWidths(e)},e.prototype.getBBoxExtenders=function(){var t,e,Q=[0,0,0,0];try{for(var r=i(Object.keys(this.notations)),T=r.next();!T.done;T=r.next()){var n=T.value;this.maximizeEntries(Q,this.notations[n].bbox(this))}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}return Q},e.prototype.getPadding=function(){var t,e,Q=[0,0,0,0],r=[0,0,0,0];try{for(var T=i(Object.keys(this.notations)),n=T.next();!n.done;n=T.next()){var o=n.value;this.maximizeEntries(Q,this.notations[o].bbox(this));var a=this.notations[o].border;a&&this.maximizeEntries(r,a(this))}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}return[0,1,2,3].map((function(t){return Q[t]-r[t]}))},e.prototype.maximizeEntries=function(t,e){for(var Q=0;Q<t.length;Q++)t[Q]<e[Q]&&(t[Q]=e[Q])},e.prototype.getArgMod=function(t,e){return[Math.atan2(e,t),Math.sqrt(t*t+e*e)]},e.prototype.arrow=function(t,e,Q){return void 0===Q&&(Q=!1),null},e.prototype.arrowData=function(){var t=n([this.padding,this.thickness],2),e=t[0],Q=t[1]*(this.arrowhead.x+Math.max(1,this.arrowhead.dx)),r=this.childNodes[0].getBBox(),T=r.h,o=r.d,i=r.w,a=T+o,s=Math.sqrt(a*a+i*i),l=Math.max(e,Q*i/s),c=Math.max(e,Q*a/s),u=n(this.getArgMod(i+2*l,a+2*c),2);return{a:u[0],W:u[1],x:l,y:c}},e.prototype.createMsqrt=function(t){var e=this.node.factory.create(\"msqrt\");e.inheritAttributesFrom(this.node),e.childNodes[0]=t.node;var Q=this.wrap(e);return Q.parent=this,Q},e.prototype.sqrtTRBL=function(){var t=this.msqrt.getBBox(),e=this.msqrt.childNodes[0].getBBox();return[t.h-e.h,0,t.d-e.d,t.w-e.w]},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMfencedMixin=void 0,e.CommonMfencedMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.mrow=null,r.createMrow(),r.addMrowChildren(),r}return T(e,t),e.prototype.createMrow=function(){var t=this.node.factory.create(\"inferredMrow\");t.inheritAttributesFrom(this.node),this.mrow=this.wrap(t),this.mrow.parent=this},e.prototype.addMrowChildren=function(){var t,e,Q=this.node,r=this.mrow;this.addMo(Q.open),this.childNodes.length&&r.childNodes.push(this.childNodes[0]);var T=0;try{for(var n=i(this.childNodes.slice(1)),o=n.next();!o.done;o=n.next()){var a=o.value;this.addMo(Q.separators[T++]),r.childNodes.push(a)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}this.addMo(Q.close),r.stretchChildren()},e.prototype.addMo=function(t){if(t){var e=this.wrap(t);this.mrow.childNodes.push(e),e.parent=this.mrow}},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.updateFrom(this.mrow.getBBox()),this.setChildPWidths(e)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMfracMixin=void 0,e.CommonMfracMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;if(r.bevel=null,r.pad=r.node.getProperty(\"withDelims\")?0:r.font.params.nulldelimiterspace,r.node.attributes.get(\"bevelled\")){var T=r.getBevelData(r.isDisplay()).H,n=r.bevel=r.createMo(\"/\");n.canStretch(1),n.getStretchedVariant([T],!0)}return r}return T(e,t),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.empty();var Q=this.node.attributes.getList(\"linethickness\",\"bevelled\"),r=Q.linethickness,T=Q.bevelled,n=this.isDisplay(),o=null;if(T)this.getBevelledBBox(t,n);else{var i=this.length2em(String(r),.06);o=-2*this.pad,0===i?this.getAtopBBox(t,n):(this.getFractionBBox(t,n,i),o-=.2),o+=t.w}t.clean(),this.setChildPWidths(e,o)},e.prototype.getFractionBBox=function(t,e,Q){var r=this.childNodes[0].getBBox(),T=this.childNodes[1].getBBox(),n=this.font.params.axis_height,o=this.getTUV(e,Q),i=o.T,a=o.u,s=o.v;t.combine(r,0,n+i+Math.max(r.d*r.rscale,a)),t.combine(T,0,n-i-Math.max(T.h*T.rscale,s)),t.w+=2*this.pad+.2},e.prototype.getTUV=function(t,e){var Q=this.font.params,r=Q.axis_height,T=(t?3.5:1.5)*e;return{T:(t?3.5:1.5)*e,u:(t?Q.num1:Q.num2)-r-T,v:(t?Q.denom1:Q.denom2)+r-T}},e.prototype.getAtopBBox=function(t,e){var Q=this.getUVQ(e),r=Q.u,T=Q.v,n=Q.nbox,o=Q.dbox;t.combine(n,0,r),t.combine(o,0,-T),t.w+=2*this.pad},e.prototype.getUVQ=function(t){var e=this.childNodes[0].getBBox(),Q=this.childNodes[1].getBBox(),r=this.font.params,T=n(t?[r.num1,r.denom1]:[r.num3,r.denom2],2),o=T[0],i=T[1],a=(t?7:3)*r.rule_thickness,s=o-e.d*e.scale-(Q.h*Q.scale-i);return s<a&&(o+=(a-s)/2,i+=(a-s)/2,s=a),{u:o,v:i,q:s,nbox:e,dbox:Q}},e.prototype.getBevelledBBox=function(t,e){var Q=this.getBevelData(e),r=Q.u,T=Q.v,n=Q.delta,o=Q.nbox,i=Q.dbox,a=this.bevel.getBBox();t.combine(o,0,r),t.combine(a,t.w-n/2,0),t.combine(i,t.w-n/2,T)},e.prototype.getBevelData=function(t){var e=this.childNodes[0].getBBox(),Q=this.childNodes[1].getBBox(),r=t?.4:.15,T=Math.max(e.scale*(e.h+e.d),Q.scale*(Q.h+Q.d))+2*r,n=this.font.params.axis_height;return{H:T,delta:r,u:e.scale*(e.d-e.h)/2+n+r,v:Q.scale*(Q.d-Q.h)/2+n-r,nbox:e,dbox:Q}},e.prototype.canStretch=function(t){return!1},e.prototype.isDisplay=function(){var t=this.node.attributes.getList(\"displaystyle\",\"scriptlevel\"),e=t.displaystyle,Q=t.scriptlevel;return e&&0===Q},e.prototype.getWrapWidth=function(t){var e=this.node.attributes;return e.get(\"bevelled\")?this.childNodes[t].getBBox().w:this.getBBox().w-(this.length2em(e.get(\"linethickness\"))?.2:0)-2*this.pad},e.prototype.getChildAlign=function(t){var e=this.node.attributes;return e.get(\"bevelled\")?\"left\":e.get([\"numalign\",\"denomalign\"][t])},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMglyphMixin=void 0,e.CommonMglyphMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;return r.getParameters(),r}return T(e,t),e.prototype.getParameters=function(){var t=this.node.attributes.getList(\"width\",\"height\",\"valign\"),e=t.width,Q=t.height,r=t.valign;this.width=\"auto\"===e?1:this.length2em(e),this.height=\"auto\"===Q?1:this.length2em(Q),this.valign=this.length2em(r||\"0\")},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1),t.w=this.width,t.h=this.height+this.valign,t.d=-this.valign},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMiMixin=void 0,e.CommonMiMixin=function(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.noIC=!1,e}return T(e,t),e.prototype.computeBBox=function(e,Q){void 0===Q&&(Q=!1),t.prototype.computeBBox.call(this,e),this.copySkewIC(e),this.noIC&&(e.w-=e.ic)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMmultiscriptsMixin=e.ScriptNames=e.NextScript=void 0;var i=Q(18);e.NextScript={base:\"subList\",subList:\"supList\",supList:\"subList\",psubList:\"psupList\",psupList:\"psubList\"},e.ScriptNames=[\"sup\",\"sup\",\"psup\",\"psub\"],e.CommonMmultiscriptsMixin=function(t){return function(t){function Q(){var e=null!==t&&t.apply(this,arguments)||this;return e.scriptData=null,e.firstPrescript=0,e}return T(Q,t),Q.prototype.combinePrePost=function(t,e){var Q=new i.BBox(t);return Q.combine(e,0,0),Q},Q.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.font.params.scriptspace,r=this.getScriptData(),T=this.combinePrePost(r.sub,r.psub),o=this.combinePrePost(r.sup,r.psup),i=n(this.getUVQ(r.base,T,o),2),a=i[0],s=i[1];if(t.empty(),r.numPrescripts&&(t.combine(r.psup,Q,a),t.combine(r.psub,Q,s)),t.append(r.base),r.numScripts){var l=t.w;t.combine(r.sup,l,a),t.combine(r.sub,l,s),t.w+=Q}t.clean(),this.setChildPWidths(e)},Q.prototype.getScriptData=function(){if(this.scriptData)return this.scriptData;var t=this.scriptData={base:null,sub:i.BBox.empty(),sup:i.BBox.empty(),psub:i.BBox.empty(),psup:i.BBox.empty(),numPrescripts:0,numScripts:0},e=this.getScriptBBoxLists();return this.combineBBoxLists(t.sub,t.sup,e.subList,e.supList),this.combineBBoxLists(t.psub,t.psup,e.psubList,e.psupList),this.scriptData.base=e.base[0],this.scriptData.numPrescripts=e.psubList.length,this.scriptData.numScripts=e.subList.length,this.scriptData},Q.prototype.getScriptBBoxLists=function(){var t,Q,r={base:[],subList:[],supList:[],psubList:[],psupList:[]},T=\"base\";try{for(var n=o(this.childNodes),i=n.next();!i.done;i=n.next()){var a=i.value;a.node.isKind(\"mprescripts\")?T=\"psubList\":(r[T].push(a.getBBox()),T=e.NextScript[T])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(Q=n.return)&&Q.call(n)}finally{if(t)throw t.error}}return this.firstPrescript=r.subList.length+r.supList.length+2,this.padLists(r.subList,r.supList),this.padLists(r.psubList,r.psupList),r},Q.prototype.padLists=function(t,e){t.length>e.length&&e.push(i.BBox.empty())},Q.prototype.combineBBoxLists=function(t,e,Q,r){for(var T=0;T<Q.length;T++){var o=n(this.getScaledWHD(Q[T]),3),i=o[0],a=o[1],s=o[2],l=n(this.getScaledWHD(r[T]),3),c=l[0],u=l[1],p=l[2],h=Math.max(i,c);t.w+=h,e.w+=h,a>t.h&&(t.h=a),s>t.d&&(t.d=s),u>e.h&&(e.h=u),p>e.d&&(e.d=p)}},Q.prototype.getScaledWHD=function(t){var e=t.w,Q=t.h,r=t.d,T=t.rscale;return[e*T,Q*T,r*T]},Q.prototype.getUVQ=function(e,Q,r){var T;if(!this.UVQ){var o=n([0,0,0],3),i=o[0],a=o[1],s=o[2];0===Q.h&&0===Q.d?i=this.getU(e,r):0===r.h&&0===r.d?i=-this.getV(e,Q):(i=(T=n(t.prototype.getUVQ.call(this,e,Q,r),3))[0],a=T[1],s=T[2]),this.UVQ=[i,a,s]}return this.UVQ},Q}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMnMixin=void 0,e.CommonMnMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.remapChars=function(t){if(t.length){var e=this.font.getRemappedChar(\"mn\",t[0]);if(e){var Q=this.unicodeChars(e,this.variant);1===Q.length?t[0]=Q[0]:t=Q.concat(t.slice(1))}}return t},e}(t)}},function(t,e,Q){\"use strict\";var r,T,n=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMoMixin=e.DirectionVH=void 0;var s=Q(28);e.DirectionVH=((T={})[1]=\"v\",T[2]=\"h\",T),e.CommonMoMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,i(e))||this;return r.noIC=!1,r.size=null,r.isAccent=r.node.isAccent,r}return n(e,t),e.prototype.computeBBox=function(e,Q){void 0===Q&&(Q=!1);var r=0!==this.stretch.dir;if(r&&null===this.size&&this.getStretchedVariant([0]),!(r&&this.size<0)&&(t.prototype.computeBBox.call(this,e),this.copySkewIC(e),this.noIC&&(e.w-=e.ic),this.node.attributes.get(\"symmetric\")&&2!==this.stretch.dir)){var T=(e.h+e.d)/2+this.font.params.axis_height-e.h;e.h+=T,e.d-=T}},e.prototype.getVariant=function(){this.node.attributes.get(\"largeop\")?this.variant=this.node.attributes.get(\"displaystyle\")?\"-largeop\":\"-smallop\":t.prototype.getVariant.call(this)},e.prototype.canStretch=function(t){if(0!==this.stretch.dir)return this.stretch.dir===t;if(!this.node.attributes.get(\"stretchy\"))return!1;var e=this.getText();if(1!==Array.from(e).length)return!1;var Q=this.font.getDelimiter(e.codePointAt(0));return this.stretch=Q&&Q.dir===t?Q:s.NOSTRETCH,0!==this.stretch.dir},e.prototype.getStretchedVariant=function(t,e){var Q,r;if(void 0===e&&(e=!1),0!==this.stretch.dir){var T=this.getWH(t),n=this.getSize(\"minsize\",0),o=this.getSize(\"maxsize\",1/0);T=Math.max(n,Math.min(o,T));var i=n||e?T:Math.max(T*this.font.params.delimiterfactor/1e3,T-this.font.params.delimitershortfall),s=this.stretch,l=s.c||this.getText().codePointAt(0),c=0;if(s.sizes)try{for(var u=a(s.sizes),p=u.next();!p.done;p=u.next()){if(p.value>=i)return this.variant=this.font.getSizeVariant(l,c),void(this.size=c);c++}}catch(t){Q={error:t}}finally{try{p&&!p.done&&(r=u.return)&&r.call(u)}finally{if(Q)throw Q.error}}s.stretch?(this.size=-1,this.invalidateBBox(),this.getStretchBBox(t,T,s)):(this.variant=this.font.getSizeVariant(l,c-1),this.size=c-1)}},e.prototype.getSize=function(t,e){var Q=this.node.attributes;return Q.isSet(t)&&(e=this.length2em(Q.get(t),1,1)),e},e.prototype.getWH=function(t){if(0===t.length)return 0;if(1===t.length)return t[0];var e=o(t,2),Q=e[0],r=e[1],T=this.font.params.axis_height;return this.node.attributes.get(\"symmetric\")?2*Math.max(Q-T,r+T):Q+r},e.prototype.getStretchBBox=function(t,e,Q){var r;Q.hasOwnProperty(\"min\")&&Q.min>e&&(e=Q.min);var T=o(Q.HDW,3),n=T[0],i=T[1],a=T[2];1===this.stretch.dir?(n=(r=o(this.getBaseline(t,e,Q),2))[0],i=r[1]):a=e,this.bbox.h=n,this.bbox.d=i,this.bbox.w=a},e.prototype.getBaseline=function(t,e,Q){var r=2===t.length&&t[0]+t[1]===e,T=this.node.attributes.get(\"symmetric\"),n=o(r?t:[e,0],2),i=n[0],a=n[1],s=o([i+a,0],2),l=s[0],c=s[1];if(T){var u=this.font.params.axis_height;r&&(l=2*Math.max(i-u,a+u)),c=l/2-u}else if(r)c=a;else{var p=o(Q.HDW||[.75,.25],2),h=p[0],f=p[1];c=f*(l/(h+f))}return[l-c,c]},e.prototype.remapChars=function(t){if(1===t.length){var e=this.node.coreParent().parent,Q=this.isAccent&&!e.isKind(\"mrow\")?\"accent\":\"mo\",r=this.font.getRemappedChar(Q,t[0]);r&&(t=this.unicodeChars(r,this.variant))}return t},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMpaddedMixin=void 0,e.CommonMpaddedMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getDimens=function(){var t=this.node.attributes.getList(\"width\",\"height\",\"depth\",\"lspace\",\"voffset\"),e=this.childNodes[0].getBBox(),Q=e.w,r=e.h,T=e.d,n=Q,o=r,i=T,a=0,s=0,l=0;\"\"!==t.width&&(Q=this.dimen(t.width,e,\"w\",0)),\"\"!==t.height&&(r=this.dimen(t.height,e,\"h\",0)),\"\"!==t.depth&&(T=this.dimen(t.depth,e,\"d\",0)),\"\"!==t.voffset&&(s=this.dimen(t.voffset,e)),\"\"!==t.lspace&&(a=this.dimen(t.lspace,e));var c=this.node.attributes.get(\"data-align\");return c&&(l=this.getAlignX(Q,e,c)),[o,i,n,r-o,T-i,Q-n,a,s,l]},e.prototype.dimen=function(t,e,Q,r){void 0===Q&&(Q=\"\"),void 0===r&&(r=null);var T=(t=String(t)).match(/width|height|depth/),n=T?e[T[0].charAt(0)]:Q?e[Q]:0,o=this.length2em(t,n)||0;return t.match(/^[-+]/)&&Q&&(o+=n),null!=r&&(o=Math.max(r,o)),o},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=n(this.getDimens(),6),r=Q[0],T=Q[1],o=Q[2],i=Q[3],a=Q[4],s=Q[5];t.w=o+s,t.h=r+i,t.d=T+a,this.setChildPWidths(e,t.w)},e.prototype.getWrapWidth=function(t){return this.getBBox().w},e.prototype.getChildAlign=function(t){return this.node.attributes.get(\"data-align\")||\"left\"},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMrootMixin=void 0,e.CommonMrootMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"surd\",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"root\",{get:function(){return 1},enumerable:!1,configurable:!0}),e.prototype.combineRootBBox=function(t,e,Q){var r=this.childNodes[this.root].getBBox(),T=this.getRootDimens(e,Q)[1];t.combine(r,0,T)},e.prototype.getRootDimens=function(t,e){var Q=this.childNodes[this.surd],r=this.childNodes[this.root].getBBox(),T=(Q.size<0?.5:.6)*t.w,n=r.w,o=r.rscale,i=Math.max(n,T/o),a=Math.max(0,i-n);return[i*o-T,this.rootHeight(r,t,Q.size,e),a]},e.prototype.rootHeight=function(t,e,Q,r){var T=e.h+e.d;return(Q<0?1.9:.55*T)-(T-r)+Math.max(0,t.d*t.rscale)},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsMixin=void 0,e.CommonMsMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.node.attributes,n=T.getList(\"lquote\",\"rquote\");return\"monospace\"!==r.variant&&(T.isSet(\"lquote\")||'\"'!==n.lquote||(n.lquote=\"\\u201c\"),T.isSet(\"rquote\")||'\"'!==n.rquote||(n.rquote=\"\\u201d\")),r.childNodes.unshift(r.createText(n.lquote)),r.childNodes.push(r.createText(n.rquote)),r}return T(e,t),e.prototype.createText=function(t){var e=this.wrap(this.mmlText(t));return e.parent=this,e},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMspaceMixin=void 0,e.CommonMspaceMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.node.attributes;t.w=this.length2em(Q.get(\"width\"),0),t.h=this.length2em(Q.get(\"height\"),0),t.d=this.length2em(Q.get(\"depth\"),0)},e.prototype.handleVariant=function(){},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMsqrtMixin=void 0;var i=Q(18);e.CommonMsqrtMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.createMo(\"\\u221a\");T.canStretch(1);var n=r.childNodes[r.base].getBBox(),i=n.h,a=n.d,s=r.font.params.rule_thickness,l=r.node.attributes.get(\"displaystyle\")?r.font.params.x_height:s;return r.surdH=i+a+2*s+l/4,T.getStretchedVariant([r.surdH-a,a],!0),r}return T(e,t),Object.defineProperty(e.prototype,\"base\",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"surd\",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"root\",{get:function(){return null},enumerable:!1,configurable:!0}),e.prototype.createMo=function(e){var Q=t.prototype.createMo.call(this,e);return this.childNodes.push(Q),Q},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.childNodes[this.surd].getBBox(),r=new i.BBox(this.childNodes[this.base].getBBox()),T=this.getPQ(Q)[1],o=this.font.params.rule_thickness,a=r.h+T+o,s=n(this.getRootDimens(Q,a),1)[0];t.h=a+o,this.combineRootBBox(t,Q,a),t.combine(Q,s,a-Q.h),t.combine(r,s+Q.w,0),t.clean(),this.setChildPWidths(e)},e.prototype.combineRootBBox=function(t,e,Q){},e.prototype.getPQ=function(t){var e=this.font.params.rule_thickness,Q=this.node.attributes.get(\"displaystyle\")?this.font.params.x_height:e;return[Q,t.h+t.d>this.surdH?(t.h+t.d-(this.surdH-2*e-Q/2))/2:e+Q/4]},e.prototype.getRootDimens=function(t,e){return[0,0,0,0]},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtableMixin=void 0;var a=Q(18),s=Q(15),l=Q(128);e.CommonMtableMixin=function(t){return function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this;r.numCols=0,r.numRows=0,r.data=null,r.pwidthCells=[],r.pWidth=0,r.numCols=l.max(r.tableRows.map((function(t){return t.numCells}))),r.numRows=r.childNodes.length,r.hasLabels=r.childNodes.reduce((function(t,e){return t||e.node.isKind(\"mlabeledtr\")}),!1),r.findContainer(),r.isTop=!r.container||r.container.node.isKind(\"math\")&&!r.container.parent,r.isTop&&(r.jax.table=r),r.getPercentageWidth();var T=r.node.attributes;return r.frame=\"none\"!==T.get(\"frame\"),r.fLine=r.frame?.07:0,r.fSpace=r.frame?r.convertLengths(r.getAttributeArray(\"framespacing\")):[0,0],r.cSpace=r.convertLengths(r.getColumnAttributes(\"columnspacing\")),r.rSpace=r.convertLengths(r.getRowAttributes(\"rowspacing\")),r.cLines=r.getColumnAttributes(\"columnlines\").map((function(t){return\"none\"===t?0:.07})),r.rLines=r.getRowAttributes(\"rowlines\").map((function(t){return\"none\"===t?0:.07})),r.cWidths=r.getColumnWidths(),r.stretchRows(),r.stretchColumns(),r}return T(e,t),Object.defineProperty(e.prototype,\"tableRows\",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),e.prototype.findContainer=function(){for(var t=this,e=t.parent;e&&(e.node.notParent||e.node.isKind(\"mrow\"));)t=e,e=e.parent;this.container=e,this.containerI=t.node.childPosition()},e.prototype.getPercentageWidth=function(){if(this.hasLabels)this.bbox.pwidth=a.BBox.fullWidth;else{var t=this.node.attributes.get(\"width\");s.isPercent(t)&&(this.bbox.pwidth=t)}},e.prototype.stretchRows=function(){for(var t=this.node.attributes.get(\"equalrows\"),e=t?this.getEqualRowHeight():0,Q=t?this.getTableData():{H:[0],D:[0]},r=Q.H,T=Q.D,n=this.tableRows,o=0;o<this.numRows;o++){var i=t?[(e+r[o]-T[o])/2,(e-r[o]+T[o])/2]:null;n[o].stretchChildren(i)}},e.prototype.stretchColumns=function(){for(var t=0;t<this.numCols;t++){var e=\"number\"==typeof this.cWidths[t]?this.cWidths[t]:null;this.stretchColumn(t,e)}},e.prototype.stretchColumn=function(t,e){var Q,r,T,n,o,a,s=[];try{for(var l=i(this.tableRows),c=l.next();!c.done;c=l.next()){if(L=c.value.getChild(t))0===(g=L.childNodes[0]).stretch.dir&&g.canStretch(2)&&s.push(g)}}catch(t){Q={error:t}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(Q)throw Q.error}}var u=s.length,p=this.childNodes.length;if(u&&p>1){if(null===e){e=0;var h=u>1&&u===p;try{for(var f=i(this.tableRows),d=f.next();!d.done;d=f.next()){var L;if(L=d.value.getChild(t)){var H=0===(g=L.childNodes[0]).stretch.dir;if(h||H){var m=g.getBBox(H).w;m>e&&(e=m)}}}}catch(t){T={error:t}}finally{try{d&&!d.done&&(n=f.return)&&n.call(f)}finally{if(T)throw T.error}}}try{for(var y=i(s),v=y.next();!v.done;v=y.next()){var g;(g=v.value).coreMO().getStretchedVariant([e])}}catch(t){o={error:t}}finally{try{v&&!v.done&&(a=y.return)&&a.call(y)}finally{if(o)throw o.error}}}},e.prototype.getTableData=function(){if(this.data)return this.data;for(var t=new Array(this.numRows).fill(0),e=new Array(this.numRows).fill(0),Q=new Array(this.numCols).fill(0),r=new Array(this.numRows),T=new Array(this.numRows),n=[0],o=this.tableRows,i=0;i<o.length;i++){for(var a=o[i],s=0;s<a.numCells;s++){var l=a.getChild(s);this.updateHDW(l,s,i,t,e,Q),this.recordPWidthCell(l,s)}r[i]=t[i],T[i]=e[i],a.labeled&&this.updateHDW(a.childNodes[0],0,i,t,e,n)}var c=n[0];return this.data={H:t,D:e,W:Q,NH:r,ND:T,L:c},this.data},e.prototype.updateHDW=function(t,e,Q,r,T,n){void 0===n&&(n=null);var o=t.getBBox(),i=o.h,a=o.d,s=o.w;i<.75&&(i=.75),a<.25&&(a=.25),i>r[Q]&&(r[Q]=i),a>T[Q]&&(T[Q]=a),n&&s>n[e]&&(n[e]=s)},e.prototype.recordPWidthCell=function(t,e){t.childNodes[0]&&t.childNodes[0].getBBox().pwidth&&this.pwidthCells.push([t,e])},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q,r,T=this.getTableData(),o=T.H,i=T.D;if(this.node.attributes.get(\"equalrows\")){var a=this.getEqualRowHeight();Q=l.sum([].concat(this.rLines,this.rSpace))+a*this.numRows}else Q=l.sum(o.concat(i,this.rLines,this.rSpace));Q+=2*(this.fLine+this.fSpace[1]);var c=this.getComputedWidths();r=l.sum(c.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]);var u=this.node.attributes.get(\"width\");\"auto\"!==u&&(r=Math.max(this.length2em(u,0)+2*this.fLine,r));var p=n(this.getBBoxHD(Q),2),h=p[0],f=p[1];t.h=h,t.d=f,t.w=r;var d=n(this.getBBoxLR(),2),L=d[0],H=d[1];t.L=L,t.R=H,s.isPercent(u)||this.setColumnPWidths()},e.prototype.setChildPWidths=function(t,e,Q){var r=this.node.attributes.get(\"width\");if(!s.isPercent(r))return!1;this.hasLabels||(this.bbox.pwidth=\"\",this.container.bbox.pwidth=\"\");var T=this.bbox,n=T.w,o=T.L,i=T.R,a=Math.max(n,this.length2em(r,Math.max(e,o+n+i))),c=this.node.attributes.get(\"equalcolumns\")?Array(this.numCols).fill(this.percent(1/Math.max(1,this.numCols))):this.getColumnAttributes(\"columnwidth\",0);this.cWidths=this.getColumnWidthsFixed(c,a);var u=this.getComputedWidths();return this.pWidth=l.sum(u.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]),this.isTop&&(this.bbox.w=this.pWidth),this.setColumnPWidths(),this.pWidth!==n&&this.parent.invalidateBBox(),this.pWidth!==n},e.prototype.setColumnPWidths=function(){var t,e,Q=this.cWidths;try{for(var r=i(this.pwidthCells),T=r.next();!T.done;T=r.next()){var o=n(T.value,2),a=o[0],s=o[1];a.setChildPWidths(!1,Q[s])&&(a.invalidateBBox(),a.getBBox())}}catch(e){t={error:e}}finally{try{T&&!T.done&&(e=r.return)&&e.call(r)}finally{if(t)throw t.error}}},e.prototype.getBBoxHD=function(t){var e=n(this.getAlignmentRow(),2),Q=e[0],r=e[1];if(null===r){var T=this.font.params.axis_height,o=t/2;return{top:[0,t],center:[o,o],bottom:[t,0],baseline:[o,o],axis:[o+T,o-T]}[Q]||[o,o]}var i=this.getVerticalPosition(r,Q);return[i,t-i]},e.prototype.getBBoxLR=function(){if(this.hasLabels){var t=this.node.attributes.get(\"side\"),e=n(this.getPadAlignShift(t),2),Q=e[0];return\"center\"===e[1]?[Q,Q]:\"left\"===t?[Q,0]:[0,Q]}return[0,0]},e.prototype.getPadAlignShift=function(t){var e=this.getTableData().L+this.length2em(this.node.attributes.get(\"minlabelspacing\")),Q=n(null==this.styles?[\"\",\"\"]:[this.styles.get(\"padding-left\"),this.styles.get(\"padding-right\")],2),r=Q[0],T=Q[1];(r||T)&&(e=Math.max(e,this.length2em(r||\"0\"),this.length2em(T||\"0\")));var o=n(this.getAlignShift(),2),i=o[0],a=o[1];return i===t&&(a=\"left\"===t?Math.max(e,a)-e:Math.min(-e,a)+e),[e,i,a]},e.prototype.getAlignShift=function(){return this.isTop?t.prototype.getAlignShift.call(this):[this.container.getChildAlign(this.containerI),0]},e.prototype.getWidth=function(){return this.pWidth||this.getBBox().w},e.prototype.getEqualRowHeight=function(){var t=this.getTableData(),e=t.H,Q=t.D,r=Array.from(e.keys()).map((function(t){return e[t]+Q[t]}));return Math.max.apply(Math,r)},e.prototype.getComputedWidths=function(){var t=this,e=this.getTableData().W,Q=Array.from(e.keys()).map((function(Q){return\"number\"==typeof t.cWidths[Q]?t.cWidths[Q]:e[Q]}));return this.node.attributes.get(\"equalcolumns\")&&(Q=Array(Q.length).fill(l.max(Q))),Q},e.prototype.getColumnWidths=function(){var t=this.node.attributes.get(\"width\");if(this.node.attributes.get(\"equalcolumns\"))return this.getEqualColumns(t);var e=this.getColumnAttributes(\"columnwidth\",0);return\"auto\"===t?this.getColumnWidthsAuto(e):s.isPercent(t)?this.getColumnWidthsPercent(e):this.getColumnWidthsFixed(e,this.length2em(t))},e.prototype.getEqualColumns=function(t){var e,Q=Math.max(1,this.numCols);if(\"auto\"===t){var r=this.getTableData().W;e=l.max(r)}else if(s.isPercent(t))e=this.percent(1/Q);else{var T=l.sum([].concat(this.cLines,this.cSpace))+2*this.fSpace[0];e=Math.max(0,this.length2em(t)-T)/Q}return Array(this.numCols).fill(e)},e.prototype.getColumnWidthsAuto=function(t){var e=this;return t.map((function(t){return\"auto\"===t||\"fit\"===t?null:s.isPercent(t)?t:e.length2em(t)}))},e.prototype.getColumnWidthsPercent=function(t){var e=this,Q=t.indexOf(\"fit\")>=0,r=(Q?this.getTableData():{W:null}).W;return Array.from(t.keys()).map((function(T){var n=t[T];return\"fit\"===n?null:\"auto\"===n?Q?r[T]:null:s.isPercent(n)?n:e.length2em(n)}))},e.prototype.getColumnWidthsFixed=function(t,e){var Q=this,r=Array.from(t.keys()),T=r.filter((function(e){return\"fit\"===t[e]})),n=r.filter((function(e){return\"auto\"===t[e]})),o=T.length||n.length,i=(o?this.getTableData():{W:null}).W,a=e-l.sum([].concat(this.cLines,this.cSpace))-2*this.fSpace[0],s=a;r.forEach((function(r){var T=t[r];s-=\"fit\"===T||\"auto\"===T?i[r]:Q.length2em(T,e)}));var c=o&&s>0?s/o:0;return r.map((function(e){var r=t[e];return\"fit\"===r?i[e]+c:\"auto\"===r?i[e]+(0===T.length?c:0):Q.length2em(r,a)}))},e.prototype.getVerticalPosition=function(t,e){for(var Q=this.node.attributes.get(\"equalrows\"),r=this.getTableData(),T=r.H,o=r.D,i=Q?this.getEqualRowHeight():0,a=this.getRowHalfSpacing(),s=this.fLine,l=0;l<t;l++)s+=a[l]+(Q?i:T[l]+o[l])+a[l+1]+this.rLines[l];var c=n(Q?[(i+T[t]-o[t])/2,(i-T[t]+o[t])/2]:[T[t],o[t]],2),u=c[0],p=c[1];return s+={top:0,center:a[t]+(u+p)/2,bottom:a[t]+u+p+a[t+1],baseline:a[t]+u,axis:a[t]+u-.25}[e]||0},e.prototype.getEmHalfSpacing=function(t,e){var Q=this.em(t),r=this.addEm(e,2);return r.unshift(Q),r.push(Q),r},e.prototype.getRowHalfSpacing=function(){var t=this.rSpace.map((function(t){return t/2}));return t.unshift(this.fSpace[1]),t.push(this.fSpace[1]),t},e.prototype.getColumnHalfSpacing=function(){var t=this.cSpace.map((function(t){return t/2}));return t.unshift(this.fSpace[0]),t.push(this.fSpace[0]),t},e.prototype.getAlignmentRow=function(){var t=n(s.split(this.node.attributes.get(\"align\")),2),e=t[0],Q=t[1];if(null==Q)return[e,null];var r=parseInt(Q);return r<0&&(r+=this.numRows+1),[e,r<1||r>this.numRows?null:r-1]},e.prototype.getColumnAttributes=function(t,e){void 0===e&&(e=1);var Q=this.numCols-e,r=this.getAttributeArray(t);if(0===r.length)return null;for(;r.length<Q;)r.push(r[r.length-1]);return r.length>Q&&r.splice(Q),r},e.prototype.getRowAttributes=function(t,e){void 0===e&&(e=1);var Q=this.numRows-e,r=this.getAttributeArray(t);if(0===r.length)return null;for(;r.length<Q;)r.push(r[r.length-1]);return r.length>Q&&r.splice(Q),r},e.prototype.getAttributeArray=function(t){var e=this.node.attributes.get(t);return e?s.split(e):[this.node.attributes.getDefault(t)]},e.prototype.addEm=function(t,e){var Q=this;return void 0===e&&(e=1),t?t.map((function(t){return Q.em(t/e)})):null},e.prototype.convertLengths=function(t){var e=this;return t?t.map((function(t){return e.length2em(t)})):null},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtdMixin=void 0,e.CommonMtdMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),Object.defineProperty(e.prototype,\"fixesPWidth\",{get:function(){return!1},enumerable:!1,configurable:!0}),e.prototype.invalidateBBox=function(){this.bboxComputed=!1},e.prototype.getWrapWidth=function(t){var e=this.parent.parent,Q=this.parent,r=this.node.childPosition()-(Q.labeled?1:0);return\"number\"==typeof e.cWidths[r]?e.cWidths[r]:e.getTableData().W[r]},e.prototype.getChildAlign=function(t){return this.node.attributes.get(\"columnalign\")},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonMtextMixin=void 0,e.CommonMtextMixin=function(t){var e;return(e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getVariant=function(){var e=this.jax.options,Q=this.jax.math.outputData,r=(!!Q.merrorFamily||!!e.merrorFont)&&this.node.Parent.isKind(\"merror\");if(Q.mtextFamily||e.mtextFont||r){var T=this.node.attributes.get(\"mathvariant\"),n=this.constructor.INHERITFONTS[T]||this.jax.font.getCssFont(T),o=n[0]||(r?Q.merrorFamily||e.merrorFont:Q.mtextFamily||e.mtextFont);this.variant=this.explicitVariant(o,n[2]?\"bold\":\"\",n[1]?\"italic\":\"\")}else t.prototype.getVariant.call(this)},e}(t)).INHERITFONTS={normal:[\"\",!1,!1],bold:[\"\",!1,!0],italic:[\"\",!0,!1],\"bold-italic\":[\"\",!0,!0]},e}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonScriptbaseMixin=void 0;e.CommonScriptbaseMixin=function(t){var e;return(e=function(t){function e(){for(var e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];var r=t.apply(this,o(e))||this,T=r.baseCore=r.childNodes[0];if(!T)return r;for(;1===T.childNodes.length&&(T.node.isKind(\"mrow\")||T.node.isKind(\"TeXAtom\")||T.node.isKind(\"mstyle\")||T.node.isKind(\"mpadded\")||T.node.isKind(\"mphantom\")||T.node.isKind(\"semantics\"));)if(!(T=T.childNodes[0]))return r;return\"noIC\"in T?(r.baseCore=T,r.constructor.useIC||(T.noIC=!0),r):r}return T(e,t),Object.defineProperty(e.prototype,\"baseChild\",{get:function(){return this.childNodes[this.node.base]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"script\",{get:function(){return this.childNodes[1]},enumerable:!1,configurable:!0}),e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=n(this.getOffset(Q,r),2),o=T[0],i=T[1];t.append(Q),t.combine(r,t.w+o,i),t.w+=this.font.params.scriptspace,t.clean(),this.setChildPWidths(e)},e.prototype.coreIC=function(){var t=this.baseCore.getBBox();return t.ic?1.05*t.ic+.05:0},e.prototype.coreScale=function(){for(var t=this.baseChild.getBBox().rscale,e=this.baseChild;(e.node.isKind(\"mstyle\")||e.node.isKind(\"mrow\")||e.node.isKind(\"TeXAtom\"))&&1===e.childNodes.length;)t*=(e=e.childNodes[0]).getBBox().rscale;return t},e.prototype.isCharBase=function(){for(var t=this.baseChild;(t.node.isKind(\"mstyle\")||t.node.isKind(\"mrow\"))&&1===t.childNodes.length;)t=t.childNodes[0];return(t.node.isKind(\"mo\")||t.node.isKind(\"mi\")||t.node.isKind(\"mn\"))&&1===t.bbox.rscale&&1===Array.from(t.getText()).length&&!t.node.attributes.get(\"largeop\")},e.prototype.getOffset=function(t,e){return[0,0]},e.prototype.getV=function(t,e){var Q=this.font.params,r=this.length2em(this.node.attributes.get(\"subscriptshift\"),Q.sub1);return Math.max(this.isCharBase()?0:t.d*t.rscale+Q.sub_drop*e.rscale,r,e.h*e.rscale-.8*Q.x_height)},e.prototype.getU=function(t,e){var Q=this.font.params,r=this.node.attributes.getList(\"displaystyle\",\"superscriptshift\"),T=this.node.getProperty(\"texprimestyle\")?Q.sup3:r.displaystyle?Q.sup1:Q.sup2,n=this.length2em(r.superscriptshift,T);return Math.max(this.isCharBase()?0:t.h*t.rscale-Q.sup_drop*e.rscale,n,e.d*e.rscale+1/4*Q.x_height)},e.prototype.hasMovableLimits=function(){var t=this.node.attributes.get(\"displaystyle\"),e=this.baseChild.coreMO().node;return!t&&!!e.attributes.get(\"movablelimits\")},e.prototype.getOverKU=function(t,e){var Q=this.node.attributes.get(\"accent\"),r=this.font.params,T=e.d*e.rscale,n=(Q?r.rule_thickness:Math.max(r.big_op_spacing1,r.big_op_spacing3-Math.max(0,T)))-(this.baseChild.node.isKind(\"munderover\")?.1:0);return[n,t.h*t.rscale+n+T]},e.prototype.getUnderKV=function(t,e){var Q=this.node.attributes.get(\"accentunder\"),r=this.font.params,T=e.h*e.rscale,n=(Q?r.rule_thickness:Math.max(r.big_op_spacing2,r.big_op_spacing4-T))-(this.baseChild.node.isKind(\"munderover\")?.1:0);return[n,-(t.d*t.rscale+n+T)]},e.prototype.getDeltaW=function(t,e){var Q,r,T,n;void 0===e&&(e=[0,0,0]);var a=this.node.attributes.get(\"align\"),s=t.map((function(t){return t.w*t.rscale})),l=Math.max.apply(Math,o(s)),c=[],u=0;try{for(var p=i(s.keys()),h=p.next();!h.done;h=p.next()){c[L=h.value]=(\"center\"===a?(l-s[L])/2:\"right\"===a?l-s[L]:0)+e[L],c[L]<u&&(u=-c[L])}}catch(t){Q={error:t}}finally{try{h&&!h.done&&(r=p.return)&&r.call(p)}finally{if(Q)throw Q.error}}if(u)try{for(var f=i(c.keys()),d=f.next();!d.done;d=f.next()){var L;c[L=d.value]+=u}}catch(t){T={error:t}}finally{try{d&&!d.done&&(n=f.return)&&n.call(f)}finally{if(T)throw T.error}}return c},e.prototype.getDelta=function(t){void 0===t&&(t=!1);var e=this.node.attributes.get(\"accent\")&&!t?this.baseChild.coreMO().bbox.sk:0;return(1.5*this.baseCore.bbox.ic/2+e)*this.coreScale()},e.prototype.stretchChildren=function(){var t,e,Q,r,T,n,o=[];try{for(var a=i(this.childNodes),s=a.next();!s.done;s=a.next()){(g=s.value).canStretch(2)&&o.push(g)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}var l=o.length,c=this.childNodes.length;if(l&&c>1){var u=0,p=l>1&&l===c;try{for(var h=i(this.childNodes),f=h.next();!f.done;f=h.next()){var d=0===(g=f.value).stretch.dir;if(p||d){var L=g.getBBox(d),H=L.w,m=L.rscale;H*m>u&&(u=H*m)}}}catch(t){Q={error:t}}finally{try{f&&!f.done&&(r=h.return)&&r.call(h)}finally{if(Q)throw Q.error}}try{for(var y=i(o),v=y.next();!v.done;v=y.next()){var g;(g=v.value).coreMO().getStretchedVariant([u/g.bbox.rscale])}}catch(t){T={error:t}}finally{try{v&&!v.done&&(n=y.return)&&n.call(y)}finally{if(T)throw T.error}}}},e}(t)).useIC=!1,e}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonSemanticsMixin=void 0,e.CommonSemanticsMixin=function(t){return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.computeBBox=function(t,e){if(void 0===e&&(e=!1),this.childNodes.length){var Q=this.childNodes[0].getBBox(),r=Q.w,T=Q.h,n=Q.d;t.w=r,t.h=T,t.d=n}},e}(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrapperFactory=void 0;var n=Q(169),o=Q(192),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.jax=null,e}return T(e,t),e.defaultNodes=o.SVGWrappers,e}(n.CommonWrapperFactory);e.SVGWrapperFactory=i},function(t,e,Q){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGWrappers=void 0;var T=Q(4),n=Q(193),o=Q(194),i=Q(195),a=Q(196),s=Q(197),l=Q(198),c=Q(199),u=Q(200),p=Q(201),h=Q(202),f=Q(203),d=Q(204),L=Q(95),H=Q(205),m=Q(206),y=Q(48),v=Q(208),g=Q(209),b=Q(210),M=Q(211),V=Q(212),x=Q(213),O=Q(214),_=Q(216),S=Q(217),E=Q(218),C=Q(219);e.SVGWrappers=((r={})[n.SVGmath.kind]=n.SVGmath,r[o.SVGmrow.kind]=o.SVGmrow,r[o.SVGinferredMrow.kind]=o.SVGinferredMrow,r[i.SVGmi.kind]=i.SVGmi,r[a.SVGmo.kind]=a.SVGmo,r[s.SVGmn.kind]=s.SVGmn,r[l.SVGms.kind]=l.SVGms,r[c.SVGmtext.kind]=c.SVGmtext,r[u.SVGmerror.kind]=u.SVGmerror,r[p.SVGmspace.kind]=p.SVGmspace,r[h.SVGmpadded.kind]=h.SVGmpadded,r[f.SVGmphantom.kind]=f.SVGmphantom,r[d.SVGmfrac.kind]=d.SVGmfrac,r[L.SVGmsqrt.kind]=L.SVGmsqrt,r[H.SVGmroot.kind]=H.SVGmroot,r[m.SVGmfenced.kind]=m.SVGmfenced,r[y.SVGmsub.kind]=y.SVGmsub,r[y.SVGmsup.kind]=y.SVGmsup,r[y.SVGmsubsup.kind]=y.SVGmsubsup,r[v.SVGmunder.kind]=v.SVGmunder,r[v.SVGmover.kind]=v.SVGmover,r[v.SVGmunderover.kind]=v.SVGmunderover,r[g.SVGmmultiscripts.kind]=g.SVGmmultiscripts,r[b.SVGmtable.kind]=b.SVGmtable,r[M.SVGmtr.kind]=M.SVGmtr,r[M.SVGmlabeledtr.kind]=M.SVGmlabeledtr,r[V.SVGmtd.kind]=V.SVGmtd,r[x.SVGmaction.kind]=x.SVGmaction,r[O.SVGmenclose.kind]=O.SVGmenclose,r[_.SVGsemantics.kind]=_.SVGsemantics,r[_.SVGannotation.kind]=_.SVGannotation,r[_.SVGannotationXML.kind]=_.SVGannotationXML,r[_.SVGxml.kind]=_.SVGxml,r[S.SVGmglyph.kind]=S.SVGmglyph,r[E.SVGTeXAtom.kind]=E.SVGTeXAtom,r[C.SVGTextNode.kind]=C.SVGTextNode,r[T.SVGWrapper.kind]=T.SVGWrapper,r)},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmath=void 0;var i=Q(4),a=Q(172),s=Q(59),l=Q(18),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e);var Q=this.adaptor;\"block\"===this.node.attributes.get(\"display\")&&(Q.setAttribute(this.jax.container,\"display\",\"true\"),this.handleDisplay()),this.jax.document.options.internalSpeechTitles&&this.handleSpeech()},e.prototype.handleDisplay=function(){var t=n(this.getAlignShift(),2),e=t[0],Q=t[1];if(\"center\"!==e&&this.adaptor.setAttribute(this.jax.container,\"justify\",e),this.bbox.pwidth===l.BBox.fullWidth){if(this.adaptor.setAttribute(this.jax.container,\"width\",\"full\"),this.jax.table){var r=this.jax.table.getBBox(),T=r.L,o=r.w,i=r.R;\"right\"===e?i=Math.max(i||-Q,-Q):\"left\"===e?T=Math.max(T||Q,Q):\"center\"===e&&(o+=2*Math.abs(Q)),this.jax.minwidth=Math.max(0,T+o+i)}}else this.jax.shift=Q},e.prototype.handleSpeech=function(){var t,e,Q=this.adaptor,r=this.node.attributes,T=r.get(\"aria-label\")||r.get(\"data-semantic-speech\");if(T){var n=this.getTitleID(),i=this.svg(\"title\",{id:n},[this.text(T)]);Q.insert(i,Q.firstChild(this.element)),Q.setAttribute(this.element,\"aria-labeledby\",n),Q.removeAttribute(this.element,\"aria-label\");try{for(var a=o(this.childNodes[0].childNodes),s=a.next();!s.done;s=a.next()){var l=s.value;Q.setAttribute(l.element,\"aria-hidden\",\"true\")}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}}},e.prototype.getTitleID=function(){return\"mjx-svg-title-\"+String(this.jax.options.titleID++)},e.prototype.setChildPWidths=function(e,Q,r){return void 0===Q&&(Q=null),void 0===r&&(r=!0),t.prototype.setChildPWidths.call(this,e,this.parent?Q:this.metrics.containerWidth/this.jax.pxPerEm,!1)},e.kind=s.MmlMath.prototype.kind,e.styles={'mjx-container[jax=\"SVG\"][display=\"true\"]':{display:\"block\",\"text-align\":\"center\",margin:\"1em 0\"},'mjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"]':{display:\"flex\"},'mjx-container[jax=\"SVG\"][justify=\"left\"]':{\"text-align\":\"left\"},'mjx-container[jax=\"SVG\"][justify=\"right\"]':{\"text-align\":\"right\"}},e}(a.CommonMathMixin(i.SVGWrapper));e.SVGmath=c},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGinferredMrow=e.SVGmrow=void 0;var n=Q(4),o=Q(93),i=Q(93),a=Q(64),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.node.isInferred?this.element=t:this.standardSVGnode(t);this.addChildren(e)},e.kind=a.MmlMrow.prototype.kind,e}(o.CommonMrowMixin(n.SVGWrapper));e.SVGmrow=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=a.MmlInferredMrow.prototype.kind,e}(i.CommonInferredMrowMixin(s));e.SVGinferredMrow=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmi=void 0;var n=Q(4),o=Q(177),i=Q(38),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMi.prototype.kind,e}(o.CommonMiMixin(n.SVGWrapper));e.SVGmi=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmo=void 0;var o=Q(4),i=Q(180),a=Q(31),s=Q(18),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){var Q=this.node.attributes,r=Q.get(\"symmetric\")&&2!==this.stretch.dir,T=0!==this.stretch.dir;T&&null===this.size&&this.getStretchedVariant([]);var n=this.standardSVGnode(e);if(T&&this.size<0)this.stretchSVG();else{if(r||Q.get(\"largeop\")){var o=s.BBox.empty();t.prototype.computeBBox.call(this,o);var i=this.fixed((o.d-o.h)/2+this.font.params.axis_height);\"0\"!==i&&this.adaptor.setAttribute(n,\"transform\",\"translate(0 \"+i+\")\")}this.addChildren(n)}},e.prototype.stretchSVG=function(){var t=this.stretch.stretch,e=this.getBBox();1===this.stretch.dir?this.stretchVertical(t,e):this.stretchHorizontal(t,e)},e.prototype.stretchVertical=function(t,e){var Q=e.h,r=e.d,T=e.w,o=this.addTop(t[0],Q,T),i=this.addBot(t[2],r,T);if(4===t.length){var a=n(this.addMidV(t[3],T),2),s=a[0],l=a[1];this.addExtV(t[1],Q,0,o,s,T),this.addExtV(t[1],0,r,l,i,T)}else this.addExtV(t[1],Q,r,o,i,T)},e.prototype.stretchHorizontal=function(t,e){var Q=e.w,r=this.addLeft(t[0]),T=this.addRight(t[2],Q);if(4===t.length){var o=n(this.addMidH(t[3],Q),2),i=o[0],a=o[1],s=Q/2;this.addExtH(t[1],s,r,s-i),this.addExtH(t[1],s,a-s,T,s)}else this.addExtH(t[1],Q,r,T)},e.prototype.getChar=function(t){var e=this.font.getChar(\"-size4\",t)||[0,0,0,null];return[e[0],e[1],e[2],e[3]||{}]},e.prototype.addGlyph=function(t,e,Q,r){return void 0===r&&(r=null),this.placeChar(t,e,Q,r||this.element,\"-size4\")},e.prototype.addTop=function(t,e,Q){if(!t)return 0;var r=n(this.getChar(t),3),T=r[0],o=r[1],i=r[2];return this.addGlyph(t,(Q-i)/2,e-T),T+o},e.prototype.addExtV=function(t,e,Q,r,T,o){var i=this;if(t){r=Math.max(0,r-.1),T=Math.max(0,T-.1);var a=this.adaptor,s=n(this.getChar(t),3),l=s[0],c=s[1],u=s[2],p=e+Q-r-T,h=1.5*p/(l+c),f=(h*(l-c)-p)/2;if(!(p<=0)){var d=this.svg(\"svg\",{width:this.fixed(u),height:this.fixed(p),y:this.fixed(T-Q),x:this.fixed((o-u)/2),viewBox:[0,f,u,p].map((function(t){return i.fixed(t)})).join(\" \")});this.addGlyph(t,0,0,d);var L=a.lastChild(d);a.setAttribute(L,\"transform\",\"scale(1, \"+this.jax.fixed(h)+\")\"),a.append(this.element,d)}}},e.prototype.addBot=function(t,e,Q){if(!t)return 0;var r=n(this.getChar(t),3),T=r[0],o=r[1],i=r[2];return this.addGlyph(t,(Q-i)/2,o-e),T+o},e.prototype.addMidV=function(t,e){if(!t)return[0,0];var Q=n(this.getChar(t),3),r=Q[0],T=Q[1],o=Q[2],i=(T-r)/2+this.font.params.axis_height;return this.addGlyph(t,(e-o)/2,i),[r+i,T-i]},e.prototype.addLeft=function(t){return t?this.addGlyph(t,0,0):0},e.prototype.addExtH=function(t,e,Q,r,T){var o=this;if(void 0===T&&(T=0),t){r=Math.max(0,r-.1),Q=Math.max(0,Q-.1);var i=n(this.getChar(t),3),a=i[0],s=i[1],l=i[2],c=e-Q-r,u=a+s+.2,p=c/l*1.5,h=-(s+.1);if(!(c<=0)){var f=this.svg(\"svg\",{width:this.fixed(c),height:this.fixed(u),x:this.fixed(T+Q),y:this.fixed(h),viewBox:[(p*l-c)/2,h,c,u].map((function(t){return o.fixed(t)})).join(\" \")});this.addGlyph(t,0,0,f);var d=this.adaptor.lastChild(f);this.adaptor.setAttribute(d,\"transform\",\"scale(\"+this.jax.fixed(p)+\", 1)\"),this.adaptor.append(this.element,f)}}},e.prototype.addRight=function(t,e){if(!t)return 0;var Q=this.getChar(t)[2];return this.addGlyph(t,e-Q,0)},e.prototype.addMidH=function(t,e){if(!t)return[0,0];var Q=this.getChar(t)[2];return this.addGlyph(t,(e-Q)/2,0),[(e-Q)/2,(e+Q)/2]},e.kind=a.MmlMo.prototype.kind,e}(i.CommonMoMixin(o.SVGWrapper));e.SVGmo=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmn=void 0;var n=Q(4),o=Q(179),i=Q(60),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMn.prototype.kind,e}(o.CommonMnMixin(n.SVGWrapper));e.SVGmn=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGms=void 0;var n=Q(4),o=Q(183),i=Q(63),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMs.prototype.kind,e}(o.CommonMsMixin(n.SVGWrapper));e.SVGms=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtext=void 0;var n=Q(4),o=Q(188),i=Q(61),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMtext.prototype.kind,e}(o.CommonMtextMixin(n.SVGWrapper));e.SVGmtext=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmerror=void 0;var n=Q(4),o=Q(68),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.getBBox(),r=Q.h,T=Q.d,n=Q.w;this.adaptor.append(this.element,this.svg(\"rect\",{\"data-background\":!0,width:this.fixed(n),height:this.fixed(r+T),y:this.fixed(-T)}));var o=this.node.attributes.get(\"title\");o&&this.adaptor.append(this.element,this.svg(\"title\",{},[this.adaptor.text(o)])),this.addChildren(e)},e.kind=o.MmlMerror.prototype.kind,e.styles={'g[data-mml-node=\"merror\"] > g':{fill:\"red\",stroke:\"red\"},'g[data-mml-node=\"merror\"] > rect[data-background]':{fill:\"yellow\",stroke:\"none\"}},e}(n.SVGWrapper);e.SVGmerror=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmspace=void 0;var n=Q(4),o=Q(184),i=Q(62),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlMspace.prototype.kind,e}(o.CommonMspaceMixin(n.SVGWrapper));e.SVGmspace=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmpadded=void 0;var o=Q(4),i=Q(181),a=Q(69),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=n(this.getDimens(),9),r=Q[5],T=Q[6],o=Q[7],i=Q[8],a=this.node.attributes.get(\"data-align\")||\"left\",s=T+i-(r<0&&\"left\"!==a?\"center\"===a?r/2:r:0);(s||o)&&(e=this.adaptor.append(e,this.svg(\"g\")),this.place(s,o,e)),this.addChildren(e)},e.kind=a.MmlMpadded.prototype.kind,e}(i.CommonMpaddedMixin(o.SVGWrapper));e.SVGmpadded=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmphantom=void 0;var n=Q(4),o=Q(70),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){this.standardSVGnode(t)},e.kind=o.MmlMphantom.prototype.kind,e}(n.SVGWrapper);e.SVGmphantom=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmfrac=void 0;var o=Q(4),i=Q(175),a=Q(65),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){this.standardSVGnode(t);var e=this.node.attributes.getList(\"linethickness\",\"bevelled\"),Q=e.linethickness,r=e.bevelled,T=this.isDisplay();if(r)this.makeBevelled(T);else{var n=this.length2em(String(Q),.06);0===n?this.makeAtop(T):this.makeFraction(T,n)}},e.prototype.makeFraction=function(t,e){var Q=this.element,r=this.node.attributes.getList(\"numalign\",\"denomalign\"),T=r.numalign,o=r.denomalign,i=n(this.childNodes,2),a=i[0],s=i[1],l=a.getBBox(),c=s.getBBox(),u=this.font.params,p=u.axis_height,h=this.node.getProperty(\"withDelims\")?0:u.nulldelimiterspace,f=Math.max((l.L+l.w+l.R)*l.rscale,(c.L+c.w+c.R)*c.rscale),d=this.getAlignX(f,l,T)+.1+h,L=this.getAlignX(f,c,o)+.1+h,H=this.getTUV(t,e),m=H.T,y=H.u,v=H.v;a.toSVG(Q),a.place(d,p+m+Math.max(l.d*l.rscale,y)),s.toSVG(Q),s.place(L,p-m-Math.max(c.h*c.rscale,v)),this.adaptor.append(Q,this.svg(\"rect\",{width:this.fixed(f+.2),height:this.fixed(e),x:this.fixed(h),y:this.fixed(p-e/2)}))},e.prototype.makeAtop=function(t){var e=this.element,Q=this.node.attributes.getList(\"numalign\",\"denomalign\"),r=Q.numalign,T=Q.denomalign,o=n(this.childNodes,2),i=o[0],a=o[1],s=i.getBBox(),l=a.getBBox(),c=this.font.params,u=this.node.getProperty(\"withDelims\")?0:c.nulldelimiterspace,p=Math.max((s.L+s.w+s.R)*s.rscale,(l.L+l.w+l.R)*l.rscale),h=this.getAlignX(p,s,r)+u,f=this.getAlignX(p,l,T)+u,d=this.getUVQ(t),L=d.u,H=d.v;i.toSVG(e),i.place(h,L),a.toSVG(e),a.place(f,-H)},e.prototype.makeBevelled=function(t){var e=this.element,Q=n(this.childNodes,2),r=Q[0],T=Q[1],o=this.getBevelData(t),i=o.u,a=o.v,s=o.delta,l=o.nbox,c=o.dbox,u=(l.L+l.w+l.R)*l.rscale;r.toSVG(e),this.bevel.toSVG(e),T.toSVG(e),r.place(l.L*l.rscale,i),this.bevel.place(u-s/2,0),T.place(u+this.bevel.getBBox().w+c.L*c.rscale-s,a)},e.kind=a.MmlMfrac.prototype.kind,e}(i.CommonMfracMixin(o.SVGWrapper));e.SVGmfrac=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmroot=void 0;var o=Q(95),i=Q(182),a=Q(67),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addRoot=function(t,e,Q,r){e.toSVG(t);var T=n(this.getRootDimens(Q,r),3),o=T[0],i=T[1],a=T[2],s=e.getBBox();e.place(a*s.rscale,i),this.dx=o},e.kind=a.MmlMroot.prototype.kind,e}(i.CommonMrootMixin(o.SVGmsqrt));e.SVGmroot=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmfenced=void 0;var o=Q(4),i=Q(174),a=Q(71),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.setChildrenParent(this.mrow),this.mrow.toSVG(e),this.setChildrenParent(this)},e.prototype.setChildrenParent=function(t){var e,Q;try{for(var r=n(this.childNodes),T=r.next();!T.done;T=r.next()){T.value.parent=t}}catch(t){e={error:t}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(e)throw e.error}}},e.kind=a.MmlMfenced.prototype.kind,e}(i.CommonMfencedMixin(o.SVGWrapper));e.SVGmfenced=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGscriptbase=void 0;var o=Q(4),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.baseChild.getBBox(),r=this.script.getBBox(),T=n(this.getOffset(Q,r),2),o=T[0],i=T[1];this.baseChild.toSVG(e),this.script.toSVG(e),this.script.place(Q.w*Q.rscale+o,i)},e.kind=\"scriptbase\",e.useIC=!1,e}(Q(189).CommonScriptbaseMixin(o.SVGWrapper));e.SVGscriptbase=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmunderover=e.SVGmover=e.SVGmunder=void 0;var o=Q(48),i=Q(47),a=Q(47),s=Q(47),l=Q(74),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.script],2),T=r[0],o=r[1],i=n([T.getBBox(),o.getBBox()],2),a=i[0],s=i[1];T.toSVG(Q),o.toSVG(Q);var l=this.getDelta(!0),c=this.getUnderKV(a,s)[1],u=n(this.getDeltaW([a,s],[0,-l]),2),p=u[0],h=u[1];T.place(p,0),o.place(h,c)}},e.kind=l.MmlMunder.prototype.kind,e.useIC=!0,e}(i.CommonMunderMixin(o.SVGmsub));e.SVGmunder=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.script],2),T=r[0],o=r[1],i=n([T.getBBox(),o.getBBox()],2),a=i[0],s=i[1];T.toSVG(Q),o.toSVG(Q);var l=this.getDelta(),c=this.getOverKU(a,s)[1],u=n(this.getDeltaW([a,s],[0,l]),2),p=u[0],h=u[1];T.place(p,0),o.place(h,c)}},e.kind=l.MmlMover.prototype.kind,e.useIC=!0,e}(a.CommonMoverMixin(o.SVGmsup));e.SVGmover=u;var p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(this.hasMovableLimits())t.prototype.toSVG.call(this,e);else{var Q=this.standardSVGnode(e),r=n([this.baseChild,this.overChild,this.underChild],3),T=r[0],o=r[1],i=r[2],a=n([T.getBBox(),o.getBBox(),i.getBBox()],3),s=a[0],l=a[1],c=a[2];T.toSVG(Q),i.toSVG(Q),o.toSVG(Q);var u=this.getDelta(),p=this.getOverKU(s,l)[1],h=this.getUnderKV(s,c)[1],f=n(this.getDeltaW([s,c,l],[0,-u,u]),3),d=f[0],L=f[1],H=f[2];T.place(d,0),i.place(L,h),o.place(H,p)}},e.kind=l.MmlMunderover.prototype.kind,e.useIC=!0,e}(s.CommonMunderoverMixin(o.SVGmsubsup));e.SVGmunderover=p},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmmultiscripts=void 0;var o=Q(48),i=Q(178),a=Q(75),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.getScriptData(),r=this.combinePrePost(Q.sub,Q.psub),T=this.combinePrePost(Q.sup,Q.psup),o=n(this.getUVQ(Q.base,r,T),2),i=o[0],a=o[1],s=0;Q.numPrescripts&&(s=this.addScripts(.05,i,a,!0,this.firstPrescript,Q.numPrescripts));var l=this.baseChild;l.toSVG(e),l.place(s,0),s+=l.getBBox().w,Q.numScripts&&this.addScripts(s,i,a,!1,1,Q.numScripts)},e.prototype.addScripts=function(t,e,Q,r,T,o){var i=this.adaptor,a=i.append(this.element,this.svg(\"g\")),s=i.append(this.element,this.svg(\"g\"));this.place(t,e,a),this.place(t,Q,s);for(var l=T+2*o,c=0;T<l;){var u=n([this.childNodes[T++],this.childNodes[T++]],2),p=u[0],h=u[1],f=n([p.getBBox(),h.getBBox()],2),d=f[0],L=f[1],H=n([d.rscale,L.rscale],2),m=H[0],y=H[1],v=Math.max(d.w*m,L.w*y);p.toSVG(s),h.toSVG(a),p.place(c+(r?v-d.w*m:0),0),h.place(c+(r?v-L.w*y:0),0),c+=v}return t+c},e.kind=a.MmlMmultiscripts.prototype.kind,e}(i.CommonMmultiscriptsMixin(o.SVGmsubsup));e.SVGmmultiscripts=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtable=void 0;var i=Q(4),a=Q(186),s=Q(76),l=function(t){function e(e,Q,r){void 0===r&&(r=null);var T=t.call(this,e,Q,r)||this,n={\"data-labels\":!0};return T.isTop&&(n.transform=\"matrix(1 0 0 -1 0 0)\"),T.labels=T.svg(\"g\",n),T}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.placeRows(e),this.handleColumnLines(e),this.handleRowLines(e),this.handleFrame(e);var Q=this.handlePWidth(e);this.handleLabels(e,t,Q)},e.prototype.placeRows=function(t){for(var e,Q,r,T=this.node.attributes.get(\"equalrows\"),i=this.getTableData(),a=i.H,s=i.D,l=this.getEqualRowHeight(),c=this.getRowHalfSpacing(),u=o([this.fLine],this.rLines,[this.fLine]),p=this.getBBox().h-u[0],h=0;h<this.numRows;h++){var f=this.childNodes[h];e=n(this.getRowHD(T,l,a[h],s[h]),2),f.H=e[0],f.D=e[1],Q=n([c[h],c[h+1]],2),f.tSpace=Q[0],f.bSpace=Q[1],r=n([u[h],u[h+1]],2),f.tLine=r[0],f.bLine=r[1],f.toSVG(t),f.place(0,p-c[h]-f.H),p-=c[h]+f.H+f.D+c[h+1]+u[h+1]}},e.prototype.getRowHD=function(t,e,Q,r){return t?[(e+Q-r)/2,(e-Q+r)/2]:[Q,r]},e.prototype.handleColor=function(){t.prototype.handleColor.call(this);var e=this.adaptor.firstChild(this.element);e&&this.adaptor.setAttribute(e,\"width\",this.fixed(this.getWidth()))},e.prototype.handleColumnLines=function(t){if(\"none\"!==this.node.attributes.get(\"columnlines\")){var e=this.getColumnAttributes(\"columnlines\");if(e)for(var Q=this.getColumnHalfSpacing(),r=this.cLines,T=this.getComputedWidths(),n=this.fLine,o=0;o<e.length;o++)n+=Q[o]+T[o]+Q[o+1],\"none\"!==e[o]&&this.adaptor.append(t,this.makeVLine(n,e[o],r[o])),n+=r[o]}},e.prototype.handleRowLines=function(t){if(\"none\"!==this.node.attributes.get(\"rowlines\")){var e=this.getRowAttributes(\"rowlines\");if(e)for(var Q=this.node.attributes.get(\"equalrows\"),r=this.getTableData(),T=r.H,o=r.D,i=this.getEqualRowHeight(),a=this.getRowHalfSpacing(),s=this.rLines,l=this.getBBox().h-this.fLine,c=0;c<e.length;c++){var u=n(this.getRowHD(Q,i,T[c],o[c]),2),p=u[0],h=u[1];l-=a[c]+p+h+a[c+1],\"none\"!==e[c]&&this.adaptor.append(t,this.makeHLine(l,e[c],s[c])),l-=s[c]}}},e.prototype.handleFrame=function(t){if(this.frame){var e=this.getBBox(),Q=e.h,r=e.d,T=e.w,n=this.node.attributes.get(\"frame\");this.adaptor.append(t,this.makeFrame(T,Q,r,n))}},e.prototype.handlePWidth=function(t){if(!this.pWidth)return 0;var e=this.getBBox(),Q=e.w,r=e.L,T=e.R,n=r+this.pWidth+T,o=this.getAlignShift()[0],i=Math.max(this.isTop?n:0,this.container.getWrapWidth(this.containerI))-r-T,a=Q-(this.pWidth>i?i:this.pWidth),s=\"left\"===o?0:\"right\"===o?a:a/2;if(s){var l=this.svg(\"g\",{},this.adaptor.childNodes(t));this.place(s,0,l),this.adaptor.append(t,l)}return s},e.prototype.lineClass=function(t){return\"mjx-\"+t},e.prototype.makeFrame=function(t,e,Q,r){var T=this.fLine;return this.svg(\"rect\",this.setLineThickness(T,r,{\"data-frame\":!0,class:this.lineClass(r),width:this.fixed(t-T),height:this.fixed(e+Q-T),x:this.fixed(T/2),y:this.fixed(T/2-Q)}))},e.prototype.makeVLine=function(t,e,Q){var r=this.getBBox(),T=r.h,n=r.d,o=\"dotted\"===e?Q/2:0,i=this.fixed(t+Q/2);return this.svg(\"line\",this.setLineThickness(Q,e,{\"data-line\":\"v\",class:this.lineClass(e),x1:i,y1:this.fixed(o-n),x2:i,y2:this.fixed(T-o)}))},e.prototype.makeHLine=function(t,e,Q){var r=this.getBBox().w,T=\"dotted\"===e?Q/2:0,n=this.fixed(t-Q/2);return this.svg(\"line\",this.setLineThickness(Q,e,{\"data-line\":\"h\",class:this.lineClass(e),x1:this.fixed(T),y1:n,x2:this.fixed(r-T),y2:n}))},e.prototype.setLineThickness=function(t,e,Q){return.07!==t&&(Q[\"stroke-thickness\"]=this.fixed(t),\"solid\"!==e&&(Q[\"stroke-dasharray\"]=(\"dotted\"===e?\"0,\":\"\")+this.fixed(2*t))),Q},e.prototype.handleLabels=function(t,e,Q){if(this.hasLabels){var r=this.labels,T=this.node.attributes.get(\"side\");this.spaceLabels(),this.isTop?this.topTable(t,r,T):this.subTable(t,r,T,Q)}},e.prototype.spaceLabels=function(){for(var t=this.adaptor,e=this.getBBox().h,Q=this.getTableData().L,r=this.getRowHalfSpacing(),T=e-this.fLine,n=t.firstChild(this.labels),o=0;o<this.numRows;o++){var i=this.childNodes[o];if(i.node.isKind(\"mlabeledtr\")){var a=i.childNodes[0];T-=r[o]+i.H,i.placeCell(a,{x:0,y:T,w:Q,lSpace:0,rSpace:0,lLine:0,rLine:0}),T-=i.D+r[o+1]+this.rLines[o],n=t.next(n)}else T-=r[o]+i.H+i.D+r[o+1]+this.rLines[o]}},e.prototype.topTable=function(t,e,Q){var r=this.adaptor,T=this.getBBox(),o=T.h,i=T.d,a=T.w,s=T.L,l=T.R,c=s+(this.pWidth||a)+l,u=this.getTableData().L,p=n(this.getPadAlignShift(Q),3),h=p[1],f=p[2]+(\"right\"===h?-c:\"center\"===h?-c/2:0)+s,d=\"matrix(1 0 0 -1 0 0)\",L=\"scale(\"+this.jax.fixed(1e3*this.font.params.x_height/this.metrics.ex,2)+\")\",H=\"translate(0 \"+this.fixed(o)+\") \"+d+\" \"+L,m=this.svg(\"svg\",{\"data-table\":!0,preserveAspectRatio:\"left\"===h?\"xMinYMid\":\"right\"===h?\"xMaxYMid\":\"xMidYMid\",viewBox:[this.fixed(-f),this.fixed(-o),1,this.fixed(o+i)].join(\" \")},[this.svg(\"g\",{transform:d},r.childNodes(t))]);e=this.svg(\"svg\",{\"data-labels\":!0,preserveAspectRatio:\"left\"===Q?\"xMinYMid\":\"xMaxYMid\",viewBox:[\"left\"===Q?0:this.fixed(u),this.fixed(-o),1,this.fixed(o+i)].join(\" \")},[e]),r.append(t,this.svg(\"g\",{transform:H},[m,e])),this.place(-s,0,t)},e.prototype.subTable=function(t,e,Q,r){var T=this.adaptor,n=this.getBBox(),o=n.w,i=n.L,a=n.R,s=i+(this.pWidth||o)+a,l=this.getTableData().L,c=this.getAlignShift()[0],u=Math.max(s,this.container.getWrapWidth(this.containerI));this.place(\"left\"===Q?(\"left\"===c?0:\"right\"===c?s-u+r:(s-u)/2+r)-i:(\"left\"===c?u:\"right\"===c?s+r:(u+s)/2+r)-i-l,0,e),T.append(t,e)},e.kind=s.MmlMtable.prototype.kind,e.styles={'g[data-mml-node=\"mtable\"] > line[data-line]':{\"stroke-width\":\"70px\",fill:\"none\"},'g[data-mml-node=\"mtable\"] > rect[data-frame]':{\"stroke-width\":\"70px\",fill:\"none\"},'g[data-mml-node=\"mtable\"] > .mjx-dashed':{\"stroke-dasharray\":\"140\"},'g[data-mml-node=\"mtable\"] > .mjx-dotted':{\"stroke-linecap\":\"round\",\"stroke-dasharray\":\"0,140\"},'g[data-mml-node=\"mtable\"] > g > svg':{overflow:\"visible\"}},e}(a.CommonMtableMixin(i.SVGWrapper));e.SVGmtable=l},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmlabeledtr=e.SVGmtr=void 0;var i=Q(4),a=Q(94),s=Q(94),l=Q(77),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.placeCells(e),this.placeColor()},e.prototype.placeCells=function(t){for(var e=this.parent.getColumnHalfSpacing(),Q=o([this.parent.fLine],this.parent.cLines,[this.parent.fLine]),r=this.parent.getComputedWidths(),T=Q[0],n=0;n<this.numCells;n++){var i=this.getChild(n);i.toSVG(t),T+=this.placeCell(i,{x:T,y:0,lSpace:e[n],rSpace:e[n+1],w:r[n],lLine:Q[n],rLine:Q[n+1]})}},e.prototype.placeCell=function(t,e){var Q=e.x,r=e.y,T=e.lSpace,o=e.w,i=e.rSpace,a=e.lLine,s=e.rLine,l=n(t.placeCell(Q+T,r,o,this.H,this.D),2),c=l[0],u=l[1],p=T+o+i,h=n([this.H+this.tSpace,this.D+this.bSpace],2),f=h[0],d=h[1];return t.placeColor(-(c+T+a/2),-(d+this.bLine/2+u),p+(a+s)/2,f+d+(this.tLine+this.bLine)/2),p+s},e.prototype.placeColor=function(){var t=this.adaptor,e=t.firstChild(this.element);if(e&&\"rect\"===t.kind(e)&&t.getAttribute(e,\"data-bgcolor\")){var Q=n([this.tLine/2,this.bLine/2],2),r=Q[0],T=Q[1],o=n([this.tSpace,this.bSpace],2),i=o[0],a=o[1],s=n([this.H,this.D],2),l=s[0],c=s[1];t.setAttribute(e,\"y\",this.fixed(-(c+a+T))),t.setAttribute(e,\"width\",this.fixed(this.parent.getWidth())),t.setAttribute(e,\"height\",this.fixed(r+i+l+c+a+T))}},e.kind=l.MmlMtr.prototype.kind,e}(a.CommonMtrMixin(i.SVGWrapper));e.SVGmtr=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e);var Q=this.childNodes[0];Q&&Q.toSVG(this.parent.labels)},e.kind=l.MmlMlabeledtr.prototype.kind,e}(s.CommonMlabeledtrMixin(c));e.SVGmlabeledtr=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmtd=void 0;var n=Q(4),o=Q(187),i=Q(78),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.placeCell=function(t,e,Q,r,T){var n=this.getBBox(),o=Math.max(n.h,.75),i=Math.max(n.d,.25),a=this.node.attributes.get(\"columnalign\"),s=this.node.attributes.get(\"rowalign\"),l=this.getAlignX(Q,n,a),c=this.getAlignY(r,T,o,i,s);return this.place(t+l,e+c),[l,c]},e.prototype.placeColor=function(t,e,Q,r){var T=this.adaptor,n=T.firstChild(this.element);n&&\"rect\"===T.kind(n)&&T.getAttribute(n,\"data-bgcolor\")&&(T.setAttribute(n,\"x\",this.fixed(t)),T.setAttribute(n,\"y\",this.fixed(e)),T.setAttribute(n,\"width\",this.fixed(Q)),T.setAttribute(n,\"height\",this.fixed(r)))},e.kind=i.MmlMtd.prototype.kind,e}(o.CommonMtdMixin(n.SVGWrapper));e.SVGmtd=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmaction=void 0;var n=Q(4),o=Q(92),i=Q(92),a=Q(73),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.selected,r=Q.getBBox(),T=r.h,n=r.d,o=r.w;this.adaptor.append(this.element,this.svg(\"rect\",{width:this.fixed(o),height:this.fixed(T+n),y:this.fixed(-n),fill:\"none\",\"pointer-events\":\"all\"})),Q.toSVG(e),this.action(this,this.data)},e.prototype.setEventHandler=function(t,e){this.element.addEventListener(t,e)},e.kind=a.MmlMaction.prototype.kind,e.styles={'[jax=\"SVG\"] mjx-tool':{display:\"inline-block\",position:\"relative\",width:0,height:0},'[jax=\"SVG\"] mjx-tool > mjx-tip':{position:\"absolute\",top:0,left:0},\"mjx-tool > mjx-tip\":{display:\"inline-block\",padding:\".2em\",border:\"1px solid #888\",\"font-size\":\"70%\",\"background-color\":\"#F8F8F8\",color:\"black\",\"box-shadow\":\"2px 2px 5px #AAAAAA\"},'g[data-mml-node=\"maction\"][data-toggle]':{cursor:\"pointer\"},\"mjx-status\":{display:\"block\",position:\"fixed\",left:\"1em\",bottom:\"1em\",\"min-width\":\"25%\",padding:\".2em .4em\",border:\"1px solid #888\",\"font-size\":\"90%\",\"background-color\":\"#F8F8F8\",color:\"black\"}},e.actions=new Map([[\"toggle\",[function(t,e){t.adaptor.setAttribute(t.element,\"data-toggle\",t.node.attributes.get(\"selection\"));var Q=t.factory.jax.math,r=t.factory.jax.document,T=t.node;t.setEventHandler(\"click\",(function(t){Q.end.node||(Q.start.node=Q.end.node=Q.typesetRoot,Q.start.n=Q.end.n=0),T.nextToggleSelection(),Q.rerender(r),t.stopPropagation()}))},{}]],[\"tooltip\",[function(t,e){var Q=t.childNodes[1];if(Q){var r=t.adaptor.firstChild(t.element);if(Q.node.isKind(\"mtext\")){var T=Q.node.getText();t.adaptor.insert(t.svg(\"title\",{},[t.text(T)]),r)}else{var n=t.adaptor,o=t.jax.container,i=t.node.factory.create(\"math\",{},[t.childNodes[1].node]),a=t.html(\"mjx-tool\",{},[t.html(\"mjx-tip\")]),s=n.append(r,t.svg(\"foreignObject\",{style:{display:\"none\"}},[a]));t.jax.processMath(i,n.firstChild(a)),t.childNodes[1].node.parent=t.node,t.setEventHandler(\"mouseover\",(function(Q){e.stopTimers(t,e),e.hoverTimer.set(t,setTimeout((function(){n.setStyle(a,\"left\",\"0\"),n.setStyle(a,\"top\",\"0\"),n.append(o,a);var e=n.nodeBBox(a),Q=n.nodeBBox(t.element),r=(Q.right-e.left)/t.metrics.em+t.dx,T=(Q.bottom-e.bottom)/t.metrics.em+t.dy;n.setStyle(a,\"left\",t.px(r)),n.setStyle(a,\"top\",t.px(T))}),e.postDelay)),Q.stopPropagation()})),t.setEventHandler(\"mouseout\",(function(Q){e.stopTimers(t,e);var r=setTimeout((function(){return n.append(s,a)}),e.clearDelay);e.clearTimer.set(t,r),Q.stopPropagation()}))}}},i.TooltipData]],[\"statusline\",[function(t,e){var Q=t.childNodes[1];if(Q&&Q.node.isKind(\"mtext\")){var r=t.adaptor,T=Q.node.getText();r.setAttribute(t.element,\"data-statusline\",T),t.setEventHandler(\"mouseover\",(function(Q){if(null===e.status){var n=r.body(r.document);e.status=r.append(n,t.html(\"mjx-status\",{},[t.text(T)]))}Q.stopPropagation()})),t.setEventHandler(\"mouseout\",(function(t){e.status&&(r.remove(e.status),e.status=null),t.stopPropagation()}))}},{status:null}]]]),e}(o.CommonMactionMixin(n.SVGWrapper));e.SVGmaction=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmenclose=void 0;var i=Q(4),a=Q(173),s=Q(215),l=Q(72),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e,Q,r=this.standardSVGnode(t),T=this.getBBoxExtenders()[3],o={};T>0&&(o.transform=\"translate(\"+this.fixed(T)+\", 0)\");var i=this.adaptor.append(r,this.svg(\"g\",o));this.renderChild?this.renderChild(this,i):this.childNodes[0].toSVG(i);try{for(var a=n(Object.keys(this.notations)),s=a.next();!s.done;s=a.next()){var l=s.value,c=this.notations[l];!c.renderChild&&c.renderer(this,r)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}},e.prototype.arrow=function(t,e,Q){void 0===Q&&(Q=!1);var r=this.getBBox(),T=r.w,n=(t-T)/2,i=(r.h-r.d)/2,a=this.thickness,s=a/2,l=o([a*this.arrowhead.x,a*this.arrowhead.y,a*this.arrowhead.dx],3),c=l[0],u=l[1],p=l[2],h=Q?this.fill(\"M\",T+n,i,\"l\",-(c+p),u,\"l\",p,s-u,\"L\",c-n,i+s,\"l\",p,u-s,\"l\",-(c+p),-u,\"l\",c+p,-u,\"l\",-p,u-s,\"L\",T+n-c,i-s,\"l\",-p,s-u,\"Z\"):this.fill(\"M\",T+n,i,\"l\",-(c+p),u,\"l\",p,s-u,\"L\",-n,i+s,\"l\",0,-a,\"L\",T+n-c,i-s,\"l\",-p,s-u,\"Z\");if(e){var f=this.jax.fixed(180*-e/Math.PI);this.adaptor.setAttribute(h,\"transform\",\"rotate(\"+[f,this.fixed(T/2),this.fixed(i)].join(\" \")+\")\")}return h},e.prototype.line=function(t){var e=o(t,4),Q=e[0],r=e[1],T=e[2],n=e[3];return this.svg(\"line\",{x1:this.fixed(Q),y1:this.fixed(r),x2:this.fixed(T),y2:this.fixed(n),\"stroke-width\":this.fixed(this.thickness)})},e.prototype.box=function(t,e,Q,r){void 0===r&&(r=0);var T=this.thickness,n={x:this.fixed(T/2),y:this.fixed(T/2-Q),width:this.fixed(t-T),height:this.fixed(e+Q-T),fill:\"none\",\"stroke-width\":this.fixed(T)};return r&&(n.rx=this.fixed(r)),this.svg(\"rect\",n)},e.prototype.ellipse=function(t,e,Q){var r=this.thickness;return this.svg(\"ellipse\",{rx:this.fixed((t-r)/2),ry:this.fixed((e+Q-r)/2),cx:this.fixed(t/2),cy:this.fixed((e-Q)/2),fill:\"none\",\"stroke-width\":this.fixed(r)})},e.prototype.path=function(t){for(var e=this,Q=[],r=1;r<arguments.length;r++)Q[r-1]=arguments[r];return this.svg(\"path\",{d:Q.map((function(t){return\"string\"==typeof t?t:e.fixed(t)})).join(\" \"),style:{\"stroke-width\":this.fixed(this.thickness)},\"stroke-linecap\":\"round\",\"stroke-linejoin\":t,fill:\"none\"})},e.prototype.fill=function(){for(var t=this,e=[],Q=0;Q<arguments.length;Q++)e[Q]=arguments[Q];return this.svg(\"path\",{d:e.map((function(e){return\"string\"==typeof e?e:t.fixed(e)})).join(\" \")})},e.kind=l.MmlMenclose.prototype.kind,e.notations=new Map([s.Border(\"top\"),s.Border(\"right\"),s.Border(\"bottom\"),s.Border(\"left\"),s.Border2(\"actuarial\",\"top\",\"right\"),s.Border2(\"madruwb\",\"bottom\",\"right\"),s.DiagonalStrike(\"up\"),s.DiagonalStrike(\"down\"),[\"horizontalstrike\",{renderer:s.RenderLine(\"horizontal\"),bbox:function(t){return[0,t.padding,0,t.padding]}}],[\"verticalstrike\",{renderer:s.RenderLine(\"vertical\"),bbox:function(t){return[t.padding,0,t.padding,0]}}],[\"box\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d;t.adaptor.append(t.element,t.box(r,T,n))},bbox:s.fullBBox,border:s.fullBorder,remove:\"left right top bottom\"}],[\"roundedbox\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.thickness+t.padding;t.adaptor.append(t.element,t.box(r,T,n,o))},bbox:s.fullBBox}],[\"circle\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d;t.adaptor.append(t.element,t.ellipse(r,T,n))},bbox:s.fullBBox}],[\"phasorangle\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.getArgMod(1.75*t.padding,T+n)[0],i=t.thickness/2,a=T+n,s=Math.cos(o);t.adaptor.append(t.element,t.path(\"mitre\",\"M\",r,i-n,\"L\",i+s*i,i-n,\"L\",s*a+i,a-n-i))},bbox:function(t){var e=t.padding/2,Q=t.thickness;return[2*e,e,e+Q,3*e+Q]},border:function(t){return[0,0,t.thickness,0]},remove:\"bottom\"}],s.Arrow(\"up\"),s.Arrow(\"down\"),s.Arrow(\"left\"),s.Arrow(\"right\"),s.Arrow(\"updown\"),s.Arrow(\"leftright\"),s.DiagonalArrow(\"updiagonal\"),s.DiagonalArrow(\"northeast\"),s.DiagonalArrow(\"southeast\"),s.DiagonalArrow(\"northwest\"),s.DiagonalArrow(\"southwest\"),s.DiagonalArrow(\"northeastsouthwest\"),s.DiagonalArrow(\"northwestsoutheast\"),[\"longdiv\",{renderer:function(t,e){var Q=t.getBBox(),r=Q.w,T=Q.h,n=Q.d,o=t.thickness/2,i=t.padding;t.adaptor.append(t.element,t.path(\"round\",\"M\",o,o-n,\"a\",i-o/2,(T+n)/2-4*o,0,\"0,1\",0,T+n-2*o,\"L\",r-o,T-o))},bbox:function(t){var e=t.padding,Q=t.thickness;return[e+Q,e,e,2*e+Q/2]}}],[\"radical\",{renderer:function(t,e){t.msqrt.toSVG(e);var Q=t.sqrtTRBL()[3];t.place(-Q,0,e)},init:function(t){t.msqrt=t.createMsqrt(t.childNodes[0])},bbox:function(t){return t.sqrtTRBL()},renderChild:!0}]]),e}(a.CommonMencloseMixin(i.SVGWrapper));e.SVGmenclose=c},function(t,e,Q){\"use strict\";var r=this&&this.__createBinding||(Object.create?function(t,e,Q,r){void 0===r&&(r=Q),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[Q]}})}:function(t,e,Q,r){void 0===r&&(r=Q),t[r]=e[Q]}),T=this&&this.__exportStar||function(t,e){for(var Q in t)\"default\"===Q||e.hasOwnProperty(Q)||r(e,t,Q)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Arrow=e.DiagonalArrow=e.DiagonalStrike=e.Border2=e.Border=e.RenderLine=e.lineData=e.computeLineData=void 0;var n=Q(45);T(Q(45),e),e.computeLineData={top:function(t,e,Q,r){return[0,t-r,Q,t-r]},right:function(t,e,Q,r){return[Q-r,-e,Q-r,t]},bottom:function(t,e,Q,r){return[0,r-e,Q,r-e]},left:function(t,e,Q,r){return[r,-e,r,t]},vertical:function(t,e,Q,r){return[Q/2-r,t,Q/2-r,-e]},horizontal:function(t,e,Q,r){return[0,(t-e)/2-r,Q,(t-e)/2-r]},up:function(t,e,Q,r){return[r,r-e,Q-r,t-r]},down:function(t,e,Q,r){return[r,t-r,Q-r,r-e]}},e.lineData=function(t,Q){var r=t.getBBox(),T=r.h,n=r.d,o=r.w,i=t.thickness/2;return e.computeLineData[Q](T,n,o,i)},e.RenderLine=function(t){return function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}},e.Border=function(t){return n.CommonBorder((function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}))(t)},e.Border2=function(t,Q,r){return n.CommonBorder2((function(t,T){t.adaptor.append(t.element,t.line(e.lineData(t,Q))),t.adaptor.append(t.element,t.line(e.lineData(t,r)))}))(t,Q,r)},e.DiagonalStrike=function(t){return n.CommonDiagonalStrike((function(Q){return function(Q,r){Q.adaptor.append(Q.element,Q.line(e.lineData(Q,t)))}}))(t)},e.DiagonalArrow=function(t){return n.CommonDiagonalArrow((function(t,e){t.adaptor.append(t.element,e)}))(t)},e.Arrow=function(t){return n.CommonArrow((function(t,e){t.adaptor.append(t.element,e)}))(t)}},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGxml=e.SVGannotationXML=e.SVGannotation=e.SVGsemantics=void 0;var n=Q(4),o=Q(190),i=Q(80),a=Q(0),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t);this.childNodes.length&&this.childNodes[0].toSVG(e)},e.kind=i.MmlSemantics.prototype.kind,e}(o.CommonSemanticsMixin(n.SVGWrapper));e.SVGsemantics=s;var l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){t.prototype.toSVG.call(this,e)},e.prototype.computeBBox=function(){return this.bbox},e.kind=i.MmlAnnotation.prototype.kind,e}(n.SVGWrapper);e.SVGannotation=l;var c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.kind=i.MmlAnnotationXML.prototype.kind,e.styles={\"foreignObject[data-mjx-xml]\":{\"font-family\":\"initial\",\"line-height\":\"normal\",overflow:\"visible\"}},e}(n.SVGWrapper);e.SVGannotationXML=c;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.adaptor.clone(this.node.getXML()),Q=this.jax.math.metrics.em*this.jax.math.metrics.scale,r=this.fixed(1/Q),T=this.getBBox(),n=T.w,o=T.h,i=T.d;this.element=this.adaptor.append(t,this.svg(\"foreignObject\",{\"data-mjx-xml\":!0,y:this.jax.fixed(-o*Q)+\"px\",width:this.jax.fixed(n*Q)+\"px\",height:this.jax.fixed((o+i)*Q)+\"px\",transform:\"scale(\"+r+\") matrix(1 0 0 -1 0 0)\"},[e]))},e.prototype.computeBBox=function(t,e){void 0===e&&(e=!1);var Q=this.jax.measureXMLnode(this.node.getXML()),r=Q.w,T=Q.h,n=Q.d;t.w=r,t.h=T,t.d=n},e.prototype.getStyles=function(){},e.prototype.getScale=function(){},e.prototype.getVariant=function(){},e.kind=a.XMLNode.prototype.kind,e.autoStyle=!1,e}(n.SVGWrapper);e.SVGxml=u},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGmglyph=void 0;var n=Q(4),o=Q(176),i=Q(79),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e=this.standardSVGnode(t),Q=this.node.attributes.getList(\"src\",\"alt\"),r=Q.src,T=Q.alt,n=this.fixed(this.height),o={width:this.fixed(this.width),height:n,transform:\"translate(0 \"+this.fixed(this.height+(this.valign||0))+\") matrix(1 0 0 -1 0 0)\",preserveAspectRatio:\"none\",alt:T,title:T,href:r},i=this.svg(\"image\",o);this.adaptor.append(e,i)},e.kind=i.MmlMglyph.prototype.kind,e}(o.CommonMglyphMixin(n.SVGWrapper));e.SVGmglyph=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGTeXAtom=void 0;var n=Q(4),o=Q(170),i=Q(81),a=Q(0),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(e){if(t.prototype.toSVG.call(this,e),this.adaptor.setAttribute(this.element,\"data-mjx-texclass\",a.TEXCLASSNAMES[this.node.texClass]),this.node.texClass===a.TEXCLASS.VCENTER){var Q=this.childNodes[0].getBBox(),r=Q.h,T=(r+Q.d)/2+this.font.params.axis_height-r,n=\"translate(0 \"+this.fixed(T)+\")\";this.adaptor.setAttribute(this.element,\"transform\",n)}},e.kind=i.TeXAtom.prototype.kind,e}(o.CommonTeXAtomMixin(n.SVGWrapper));e.SVGTeXAtom=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SVGTextNode=void 0;var o=Q(0),i=Q(4),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.toSVG=function(t){var e,Q,r=this.node.getText(),T=this.parent.variant;if(\"-explicitFont\"===T)this.adaptor.append(t,this.jax.unknownText(r,T));else{var o=this.remappedText(r,T),i=0;try{for(var a=n(o),s=a.next();!s.done;s=a.next()){var l=s.value;i+=this.placeChar(l,i,0,t,T)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(Q=a.return)&&Q.call(a)}finally{if(e)throw e.error}}}this.element=this.adaptor.lastChild(t)},e.kind=o.TextNode.prototype.kind,e.styles={\".MathJax path\":{\"stroke-width\":3}},e}(Q(171).CommonTextNodeMixin(i.SVGWrapper));e.SVGTextNode=a},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.boldItalic=void 0;var r=Q(6),T=Q(221);e.boldItalic=r.AddPaths(T.boldItalic,{47:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",305:\"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",567:\"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373\",8260:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",8710:\"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342\",10744:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.boldItalic=void 0,e.boldItalic={47:[.711,.21,.894],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}],8260:[.711,.21,.894],8710:[.711,0,.958,{sk:.192}],10744:[.711,.21,.894]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.bold=void 0;var r=Q(6),T=Q(223);e.bold=r.AddPaths(T.bold,{33:\"89 629Q89 663 116 684T171 705Q215 705 237 681T260 634Q260 619 233 434T204 244Q201 237 175 237Q150 237 146 244Q144 248 117 433T89 629ZM90 86Q90 125 116 148T177 171Q211 169 235 146T259 86Q259 48 235 25T175 1Q138 1 114 24T90 86\",34:\"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547\",35:\"64 362Q64 380 87 393H363L366 404Q379 443 390 480T409 542T424 590T435 628T443 655T451 674T458 686T467 692T478 694Q490 694 499 686T509 662Q505 643 427 395Q427 393 523 393H620L623 404Q630 426 652 498T691 624T711 681Q718 694 735 694Q748 694 757 685T766 662Q762 643 684 395Q684 393 777 393H871Q872 392 875 390T881 386T887 381T891 374T893 363Q893 345 871 333L767 332H664L660 319Q660 318 638 245T614 171Q614 169 742 169H871L877 165Q883 161 885 159T890 151T893 138Q893 120 871 109L732 108H594L590 95Q587 84 546 -46Q508 -175 505 -178Q498 -193 478 -193Q462 -193 455 -183T448 -164Q448 -156 530 106Q530 108 434 108H337L333 95Q330 84 289 -46Q251 -175 248 -178Q240 -193 222 -193Q206 -193 199 -183T191 -164Q191 -154 273 106Q273 108 180 108L87 109Q64 117 64 139Q64 156 87 169H293L321 262Q326 277 331 294T340 321L343 330Q343 332 215 332L87 333Q64 343 64 362ZM600 330Q600 332 504 332H407L403 319Q403 318 381 245T357 171Q357 169 453 169H550L578 262Q583 277 588 294T597 321L600 330\",36:\"64 494Q64 541 80 579T120 638T171 674T219 693T253 698H256V750H318V699H323Q355 694 380 686T433 663T480 620T506 556Q510 539 510 520Q510 480 488 463T440 445L422 447Q407 451 398 459Q370 478 370 515Q370 542 384 559T412 580L427 584Q424 589 418 596T386 617T324 636H318V434Q411 419 460 355T510 217Q510 196 507 175T492 122T461 67T404 23T318 -4V-56H256V-5H254Q252 -3 240 -3Q194 4 160 23T108 64T80 112T67 156T64 190Q64 218 81 240T134 262Q171 262 187 240T204 193T190 150T153 125Q146 125 144 123Q142 123 149 113T174 89T218 66Q247 58 255 58Q256 58 256 173V287L239 291Q160 308 112 365T64 494ZM255 636Q246 635 236 632T206 620T173 591T160 543Q160 472 256 448V542Q256 636 255 636ZM320 59Q324 59 333 61T356 70T384 89T406 120T415 167Q415 200 395 225T356 260T318 274V59H320\",37:\"65 549Q65 609 84 652T132 714T187 742T236 750Q265 750 296 734T355 697T431 661T541 644Q662 644 736 730Q751 749 767 749T790 739T797 719Q797 710 768 672T504 329Q212 -47 211 -48Q203 -55 191 -55Q161 -55 161 -25Q161 -17 163 -12L642 609Q608 595 542 595Q515 595 488 599T441 608T405 619T381 628L373 632Q373 630 375 619T380 589T383 548Q383 455 343 401T235 347Q217 347 198 351T154 368T110 403T78 462T65 549ZM320 549Q320 633 295 665T235 698H234Q214 698 196 674Q182 650 182 549Q182 509 183 486T190 441T207 409T238 399Q269 399 294 431T320 549ZM745 -56Q727 -56 708 -52T664 -35T620 0T588 59T575 146T588 232T620 291T663 325T708 343T747 347Q810 347 851 294T893 146Q893 89 879 48T841 -15T794 -46T745 -56ZM830 146Q830 230 805 262T745 295H744Q724 295 706 271Q692 247 692 146Q692 106 693 83T700 38T717 6T748 -4Q779 -4 804 28T830 146\",38:\"255 -11Q209 -11 164 4T84 56T48 146Q48 159 50 171Q57 197 72 218T99 249T152 292Q204 333 204 334L194 356Q185 379 176 421T166 511Q166 538 168 551Q182 613 226 654T332 704Q334 704 343 704T358 705Q412 702 444 661T476 565V559Q476 489 334 371L330 368L335 357Q382 272 485 165L496 154L506 163Q543 200 597 273L671 382H601V444H610L732 441Q821 441 830 444H836V382H741L709 335Q702 324 687 302T665 270T646 244T625 216T605 191T581 162T553 132L537 116Q544 109 557 98T605 69T673 51Q711 51 739 70T767 115V118H829V114Q829 70 786 30T668 -11Q570 -11 474 37L451 49L441 43Q352 -11 255 -11ZM415 564Q415 596 400 625T356 654Q329 654 310 634T285 588Q283 580 283 554Q283 475 309 417L325 431Q415 512 415 564ZM192 182Q192 126 213 89T279 51Q348 51 400 83L389 91Q362 112 338 137T295 186T264 229T240 265T227 286Q226 285 222 280T217 272T211 263T205 251T200 238T196 222T193 204T192 182\",39:\"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547\",40:\"103 166T103 251T121 412T165 541T225 639T287 708T341 750H356H361Q382 750 382 736Q382 732 365 714T323 661T274 576T232 439T214 250Q214 -62 381 -229Q382 -231 382 -234Q382 -249 360 -249H356H341Q314 -231 287 -207T226 -138T165 -41T121 89\",41:\"231 251Q231 354 214 439T173 575T123 661T81 714T64 735Q64 744 73 749H75Q77 749 79 749T84 750T90 750H105Q132 732 159 708T220 639T281 542T325 413T343 251T325 89T281 -40T221 -138T159 -207T105 -249H90Q80 -249 76 -249T68 -245T64 -234Q64 -230 81 -212T123 -160T172 -75T214 61T231 251\",42:\"235 706Q235 724 251 737T287 750Q306 750 322 738T339 706Q339 685 318 580V579Q429 663 436 666Q441 668 449 668Q471 668 486 650T501 612Q501 582 478 572Q476 570 414 549L354 528L414 507Q420 505 430 502T445 497T458 492T470 488T479 483T487 478T493 471T497 463T500 454T501 443Q501 423 486 406T449 388H446Q435 388 370 437Q339 461 318 477V476Q339 371 339 350Q339 332 323 319T287 306T251 319T235 350Q235 371 256 476V477Q145 393 138 390Q133 388 125 388Q103 388 88 406T73 444Q73 474 96 484Q98 486 160 507L220 528L160 549Q154 551 144 554T129 559T116 564T104 568T95 573T87 578T81 585T77 593T74 602T73 613Q73 633 88 650T125 668H128Q139 668 204 619Q235 595 256 579V580Q235 685 235 706\",43:\"64 232T64 250T87 281H416V444Q416 608 418 612Q426 633 446 633T475 613Q477 608 477 444V281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221L642 220H477V57Q477 -107 475 -112Q468 -131 446 -131Q425 -131 418 -112Q416 -107 416 57V220H251L87 221Q64 232 64 250\",44:\"74 85Q74 120 97 145T159 171Q200 171 226 138Q258 101 258 37Q258 -5 246 -44T218 -109T183 -155T152 -184T135 -194Q129 -194 118 -183T106 -164Q106 -157 115 -149Q121 -145 130 -137T161 -100T195 -35Q197 -28 200 -17T204 3T205 11T199 9T183 3T159 0Q120 0 97 26T74 85\",45:\"13 166V278H318V166H13\",46:\"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85\",47:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",58:\"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85\",59:\"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 50T74 86T97 146T158 171Q204 171 226 132T248 38Q248 -23 223 -80T171 -165T135 -194Q129 -194 118 -183T106 -164Q106 -163 106 -160L107 -158Q108 -155 121 -142T150 -107T177 -58Q189 -32 194 3Q195 6 193 6Q172 0 158 0Q121 0 98 25\",60:\"797 -56Q797 -68 790 -76T767 -85H759L434 70Q108 226 105 229Q96 238 96 250Q96 263 105 272Q109 276 271 354T595 508T757 585Q763 587 766 587Q780 587 788 578T797 556Q797 544 788 535Q784 531 490 391L197 251Q213 242 359 173T644 37T788 -34Q797 -43 797 -56\",61:\"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87\",62:\"127 -85Q110 -85 103 -75T96 -55Q96 -41 106 -34Q119 -24 308 65Q361 90 411 114L696 250L427 379Q106 533 103 537Q96 545 96 557Q96 568 104 577T128 587Q137 586 460 431T788 272Q797 263 797 250Q797 238 788 229Q785 226 459 70L135 -85H127\",63:\"65 570Q65 628 119 664T259 700Q326 700 372 688T440 654T469 613T478 569Q478 505 412 465Q287 391 287 294V283Q287 250 284 244T263 237H256H249Q232 237 229 242T225 272V287Q227 364 253 418Q274 463 311 504Q335 530 335 575Q335 622 323 635T259 648Q231 648 209 644T179 636T170 630L172 628Q174 627 177 625T183 620T190 611T197 601T202 587T204 570Q204 539 185 519T134 499Q105 499 85 517T65 570ZM171 86Q171 125 197 148T258 171Q292 169 316 146T340 86Q340 48 316 25T256 1Q218 1 195 24T171 86\",64:\"64 347Q64 511 171 605T434 699Q487 699 500 698Q624 684 703 621T811 464Q828 414 828 344Q828 232 788 179T691 125Q673 125 657 127T628 132T606 140T588 148T576 156T568 162L566 164Q565 164 549 154T504 135T444 125Q349 125 284 183T218 347Q218 455 284 512T448 569Q554 569 610 479H638Q670 479 674 471Q676 468 676 340V258Q676 213 679 199T694 178Q701 174 713 177Q767 187 767 340Q767 489 678 569T446 649Q299 649 213 566T126 346Q126 307 134 269T166 189T225 116T320 65T455 45H463Q606 51 721 91L746 99H782H801Q829 99 829 85Q829 78 825 75T804 65Q800 63 797 62Q625 -6 451 -6Q271 -6 168 91T64 347ZM547 468Q526 493 504 505T444 517T377 476T346 347Q346 306 354 271T386 206T448 177Q505 177 547 226V468\",91:\"128 -250V750H293V689H189V-189H293V-250H128\",92:\"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718\",93:\"25 689V750H190V-250H25V-189H129V689H25\",94:\"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632\",95:\"0 -61V-10H574V-61H0\",96:\"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634\",123:\"504 -207T504 -225T500 -246T476 -250H469Q257 -250 227 -145L225 -135L224 0Q224 15 224 30T224 59T224 84T224 106T223 122T223 133V137Q222 138 221 144T213 162T195 185Q171 206 141 215Q123 222 107 223T84 225T74 229T70 250T73 270T83 276T106 276T141 285Q171 294 195 315Q201 321 206 328T214 341T219 352T222 360L223 363V367Q223 371 223 378T223 394T224 415T224 441T224 470T224 501L225 636Q249 739 426 749Q428 749 443 749T466 750H473Q495 750 499 747T504 725T501 704T480 699Q381 693 357 645Q352 634 351 617T350 497V412Q350 350 338 329Q325 303 298 284T251 258T227 251Q226 251 226 250L227 249Q231 248 238 246T265 236T299 217T329 184T349 137Q350 131 350 3T352 -130Q358 -160 392 -178T480 -199Q497 -200 500 -203\",124:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",125:\"70 726Q71 744 74 747T99 750H106Q323 750 349 636L350 501Q350 486 350 470T350 441T350 416T350 394T351 378T351 367V363Q352 362 353 356T361 338T379 315Q403 294 433 285Q451 278 467 277T490 275T500 271T504 250T501 230T491 224T468 224T433 215Q403 206 379 185Q373 179 368 172T360 159T355 148T352 140L351 137V133Q351 129 351 122T351 106T350 85T350 59T350 31T350 0L349 -135L347 -145Q317 -250 106 -250H99Q79 -250 75 -247T70 -226Q70 -208 73 -204T95 -199Q193 -193 217 -145Q222 -134 223 -117T224 3Q224 20 224 48T223 86Q223 145 237 175T301 232Q335 249 347 249Q348 249 348 250L347 251Q343 252 336 254T309 264T275 284T245 316T225 363Q224 369 224 497T222 631Q216 660 182 678T95 699Q77 700 74 704T70 726\",126:\"343 202Q320 202 278 225T215 249Q181 249 146 214L134 202L115 219Q111 222 106 226T98 234L96 236Q158 306 165 313Q199 344 230 344Q239 344 244 343Q262 339 300 318T359 297Q393 297 428 332L440 344L459 327Q463 324 468 320T476 312L478 310Q416 240 409 233Q375 202 343 202\",168:\"96 615Q96 650 120 672T178 695Q214 693 234 669T255 615Q255 583 232 559T176 535Q147 535 122 556T96 615ZM319 615Q319 651 343 673T399 695Q426 695 452 675T478 615Q478 578 454 557T395 535Q364 537 342 559T319 615\",172:\"680 371Q683 369 688 366T695 361T698 356T701 346T701 332T702 308V216Q702 196 702 168T703 130Q703 90 697 76T671 61Q650 61 643 81Q641 86 641 198V310H364L87 311Q64 319 64 341Q64 362 84 369Q89 371 385 371H680\",175:\"80 540V607H494V540H80\",176:\"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618\",177:\"64 328T64 346T87 377H416V542L417 707Q431 728 443 728Q467 728 475 709Q477 704 477 540V377H807Q808 376 811 374T817 370T823 365T827 358T829 347Q829 326 807 317L642 316H477V25H807Q808 24 811 22T817 18T823 13T827 6T829 -5Q829 -26 807 -35H87Q64 -24 64 -6T87 25H416V316H251L87 317Q64 328 64 346\",180:\"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706\",183:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251\",215:\"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500\",247:\"344 495Q344 535 372 566T447 597Q490 597 519 566T548 495Q548 452 518 423T446 393Q404 393 374 423T344 495ZM87 221Q64 230 64 251T84 279Q89 281 448 281H806Q807 280 810 278T816 274T822 269T826 262T828 251Q828 230 806 221H87ZM344 -36T344 6T373 78T446 108Q487 108 517 79T548 6Q548 -35 519 -65T446 -96Q406 -96 375 -66\",305:\"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",567:\"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",697:\"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563\",710:\"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632\",711:\"131 603Q130 604 136 618T150 646T158 659L223 635L287 611L351 635L416 659Q417 660 424 647T437 619T443 603Q440 601 364 558T287 515T210 558T131 603\",713:\"80 540V607H494V540H80\",714:\"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706\",715:\"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634\",728:\"287 500Q208 500 155 558T102 689V694H153V685Q153 681 154 674T164 648T186 615T226 590T287 578Q347 578 382 611T421 685V694H472V689Q472 623 422 562T287 500\",729:\"202 610Q202 647 227 671T283 695Q324 695 348 669T372 610T350 551T287 525Q248 525 225 551T202 610\",730:\"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618\",732:\"343 552Q320 552 278 575T215 599Q181 599 146 564L134 552L115 569Q111 572 106 576T98 584L96 586Q158 656 165 663Q199 694 230 694Q239 694 244 693Q262 689 300 668T359 647Q393 647 428 682L440 694L459 677Q463 674 468 670T476 662L478 660Q416 590 409 583Q375 552 343 552\",768:\"-461 634Q-461 663 -439 684T-392 706Q-384 706 -379 705T-367 700T-356 693T-343 681T-330 666T-313 645T-293 620Q-243 558 -238 553Q-237 552 -257 527L-276 503L-352 543Q-360 547 -373 553T-392 563T-408 571T-422 580T-434 587T-444 595T-451 603T-457 612T-460 622T-461 634\",769:\"-184 706Q-156 706 -136 683T-115 634Q-115 608 -134 593T-209 550Q-219 545 -224 543L-300 503L-319 527Q-339 552 -338 553Q-333 558 -283 620Q-276 629 -266 641T-251 659T-239 673T-229 685T-221 693T-212 699T-204 703T-195 705T-184 706\",770:\"-368 632L-288 694Q-286 693 -207 632T-127 570T-144 545T-162 520Q-165 520 -225 559L-288 597L-351 559Q-411 520 -414 520Q-415 520 -432 544T-449 570T-368 632\",771:\"-232 552Q-255 552 -297 575T-360 599Q-394 599 -429 564L-441 552L-460 569Q-464 572 -469 576T-476 584L-479 586Q-417 656 -410 663Q-376 694 -345 694Q-336 694 -331 693Q-313 689 -275 668T-216 647Q-182 647 -147 682L-135 694L-116 677Q-112 674 -107 670T-100 662L-97 660Q-159 590 -166 583Q-200 552 -232 552\",772:\"-495 540V607H-81V540H-495\",774:\"-288 500Q-367 500 -420 558T-473 689V694H-422V685Q-422 681 -421 674T-411 648T-389 615T-349 590T-288 578Q-228 578 -193 611T-154 685V694H-103V689Q-103 623 -153 562T-288 500\",775:\"-373 610Q-373 647 -348 671T-292 695Q-251 695 -227 669T-203 610T-225 551T-288 525Q-327 525 -350 551T-373 610\",776:\"-479 615Q-479 650 -456 672T-397 695Q-361 693 -341 669T-320 615Q-320 583 -343 559T-399 535Q-428 535 -453 556T-479 615ZM-256 615Q-256 651 -232 673T-176 695Q-149 695 -123 675T-97 615Q-97 578 -121 557T-180 535Q-211 537 -233 559T-256 615\",778:\"-415 618Q-415 653 -382 677T-296 702H-291Q-194 702 -168 647Q-161 634 -161 618Q-161 607 -165 596T-180 570T-220 546T-288 536T-355 545T-394 568T-410 594T-415 618ZM-223 618Q-223 645 -234 652T-274 659H-283Q-289 659 -297 659T-307 660Q-328 660 -339 653T-351 638T-353 619Q-353 591 -341 585T-288 578Q-260 578 -249 580T-230 590T-223 618\",779:\"-389 511L-442 543Q-442 544 -424 606T-404 674Q-390 705 -361 713Q-360 713 -356 713T-349 714Q-340 714 -330 712Q-273 690 -273 644Q-273 621 -290 604L-342 554L-389 511ZM-198 511L-251 543Q-251 544 -233 606T-213 674Q-199 705 -170 713Q-169 713 -165 713T-158 714Q-127 714 -105 693T-82 647Q-82 638 -84 631T-89 618T-99 604T-112 590T-130 574T-151 554L-198 511\",780:\"-444 603Q-445 604 -439 618T-425 646T-417 659L-352 635L-288 611L-224 635L-159 659Q-158 660 -151 647T-138 619T-132 603Q-135 601 -211 558T-288 515T-365 558T-444 603\",824:\"-705 -210Q-715 -210 -724 -203T-734 -179Q-734 -171 -732 -166Q-730 -163 -474 266T-215 698Q-208 711 -190 711Q-180 711 -171 704T-161 681Q-161 672 -164 667Q-171 654 -425 228T-683 -201Q-692 -210 -705 -210\",8194:\"\",8195:\"\",8196:\"\",8197:\"\",8198:\"\",8201:\"\",8202:\"\",8211:\"0 249V300H574V249H0\",8212:\"0 249V300H1149V249H0\",8213:\"0 249V300H1149V249H0\",8214:\"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727\",8215:\"0 -61V-10H574V-61H0\",8216:\"58 461Q58 503 70 542T99 607T134 654T165 684T184 694T201 683T213 664Q213 658 202 648T175 624T143 583T116 518Q115 512 114 505T112 493L111 488Q132 500 161 500Q198 500 221 475T245 414T222 354T161 329Q112 329 85 369T58 461\",8217:\"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547\",8220:\"110 461Q110 502 121 541T150 606T185 653T217 684T235 694Q242 694 254 682T266 664Q266 659 254 648T226 623T193 578T167 511Q164 500 164 494T164 487Q188 500 212 500Q251 500 274 475T297 414Q297 378 274 354T212 329Q167 329 139 367T110 461ZM377 461Q377 502 388 541T417 606T452 653T484 684T502 694Q509 694 521 682T533 664Q533 659 521 648T493 623T460 578T434 511Q431 500 431 494T431 487Q455 500 479 500Q518 500 541 475T564 414Q564 378 541 354T479 329Q434 329 406 367T377 461\",8221:\"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547\",8224:\"231 470Q232 471 232 473Q232 477 213 540T193 636Q192 642 192 651T204 677T239 700Q249 702 255 702Q300 702 315 660Q317 653 317 636Q317 603 298 539T279 472V470Q280 470 318 488T383 506Q408 506 423 493T442 467T446 444T443 421T424 396T383 382Q355 382 318 400T279 418Q278 416 285 392T303 334T316 284Q318 268 318 234Q318 149 311 45T296 -127T284 -203Q279 -211 255 -211Q237 -211 233 -210T226 -203Q222 -195 214 -129T199 41T192 234V245Q192 286 212 349Q233 413 231 418Q229 418 192 400T128 382Q102 382 86 396T67 421T64 444T67 466T86 492T128 506Q155 506 192 488T231 470\",8225:\"193 637Q193 663 206 679T231 698T255 702T279 699T304 679T317 637Q317 605 299 557T280 504Q280 503 281 503T320 521T382 539Q410 539 428 521T446 476Q446 454 432 434T383 414H377Q358 414 320 431T281 449L280 448Q280 444 298 396T317 316Q318 310 318 301T306 275T271 252Q261 250 255 250Q210 250 195 292Q193 299 193 316Q193 347 211 395T230 448Q230 449 229 449Q227 449 196 434Q151 414 133 414H127Q102 414 87 427T68 452T64 477Q64 503 81 521T127 539Q143 539 164 532T204 515T226 504Q230 502 230 504Q230 508 212 556T193 637ZM193 184Q193 210 206 226T231 245T255 249T279 246T304 226T317 184Q317 153 299 106T280 53Q280 51 282 51T322 68T383 86Q411 86 428 69T445 24T428 -21T382 -39Q358 -39 322 -22T282 -4Q280 -3 280 -3T280 -6Q281 -13 299 -59T317 -136Q318 -142 318 -151T306 -177T271 -200Q261 -202 255 -202Q210 -202 195 -160Q193 -153 193 -136Q193 -106 211 -60T230 -6Q230 -4 228 -4T188 -21T128 -39Q100 -39 83 -22T65 24Q65 53 82 69T127 86Q150 86 187 69T228 51Q230 50 230 50T230 53Q229 58 211 105T193 184\",8226:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251\",8230:\"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85ZM562 85Q562 121 587 146T644 171Q688 171 710 143T733 85Q733 56 712 29T648 1Q606 1 584 27T562 85ZM1050 85Q1050 121 1075 146T1132 171Q1176 171 1198 143T1221 85Q1221 56 1200 29T1136 1Q1094 1 1072 27T1050 85\",8242:\"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563\",8254:\"80 540V607H494V540H80\",8260:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",8407:\"406 694Q406 704 413 713T433 723Q448 723 454 719T467 701Q483 665 522 648Q542 637 542 619Q542 605 536 599T514 586Q468 569 431 532Q411 513 399 513Q386 513 378 522T369 543Q369 557 381 568Q385 572 387 574L400 588H228L56 589Q33 598 33 618Q33 636 56 649H426Q406 676 406 694\",8463:\"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L167 540H80V607H184L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 142 685T220 690Q293 694 307 694Q324 694 328 679Q328 673 311 607H494V540H294Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56\",8467:\"245 -19Q228 -19 212 -16T184 -6T162 9T143 27T129 46T118 66T111 84T106 99T102 111L101 116L69 89L36 62Q31 60 24 62Q-1 88 -1 98Q-1 101 1 105Q1 106 73 170L95 189V197Q95 242 112 317T159 476T241 624T353 701Q357 702 367 702Q428 702 444 641Q446 630 446 606Q446 454 241 246L215 220L212 203Q203 150 203 114Q203 113 203 106T204 95T205 82T209 67T214 54T223 43T236 35T253 32Q277 32 305 44T352 70T389 98T407 112Q409 113 412 113Q420 113 432 95Q445 77 443 70Q440 64 416 44T342 3T245 -19ZM387 615Q387 651 366 651Q342 651 321 604T276 470L241 331Q246 331 280 373T350 486T387 615\",8472:\"399 159Q410 159 421 151T433 126Q433 104 410 85Q408 84 410 78Q411 72 414 66T428 51T455 43Q483 43 506 55T543 83T568 125T584 166T594 206Q595 211 596 214Q610 273 610 301Q610 365 542 365H538Q483 365 429 344T337 292T269 229T225 175T210 150L255 99Q261 92 274 78T292 58T305 41T316 22T321 3T324 -23Q324 -87 283 -148T174 -210H171Q161 -210 152 -209T128 -201T101 -180T81 -141T72 -78Q72 -72 72 -60T73 -45Q79 4 102 65L108 81Q84 117 84 167Q84 273 140 367T269 461Q285 461 285 447Q285 440 282 431Q278 418 276 415T264 410Q228 404 201 336T174 219Q174 218 176 202L184 214Q252 303 348 360T549 417Q614 417 658 391T719 317Q726 292 726 260Q726 148 646 70T451 -8Q407 -8 377 17T346 92Q346 159 396 159H399ZM178 -160Q200 -160 216 -132T232 -75Q232 -63 228 -56T203 -26Q196 -18 192 -14Q185 -5 176 5T161 20T156 27L153 28Q151 28 146 8T137 -42T132 -89Q132 -160 178 -160\",8501:\"590 427Q581 427 579 433T575 450T568 470V468L532 288L541 281Q620 220 634 165L637 154V124Q637 74 628 46Q623 32 612 16T592 0Q580 0 578 19T569 69T538 121Q532 126 385 240T236 355Q234 355 231 338T225 291T222 237Q222 222 223 213T225 201T228 195T231 190Q238 179 261 160T300 119T316 73Q316 41 291 23T231 1Q226 0 149 0H98Q73 0 69 3T64 24Q64 43 67 47T85 51H89Q119 51 134 55T152 64T154 76Q154 95 125 141T96 220Q96 243 104 270T123 319T145 360T164 391T172 404T150 421T102 468T68 529L65 541V570Q65 620 74 648Q79 664 91 679T111 694Q122 694 123 675T132 625T164 573Q168 569 319 452T471 335Q471 337 486 409T502 488Q502 489 491 493T467 511T448 546V573Q448 602 452 624T462 659T474 680T486 691T493 694Q499 694 502 691T507 682T513 673Q517 667 534 651T557 630Q558 629 590 616T631 587Q638 577 638 543Q637 489 622 458T590 427\",8592:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063\",8593:\"33 396Q14 396 14 423Q14 445 18 449T41 459Q72 466 99 478T147 505T185 537T215 571T238 604T254 635T264 661T270 678L272 685Q276 694 288 694Q298 692 300 689T307 672Q331 592 392 535T535 459Q553 454 557 450T561 423Q561 396 542 396Q531 396 501 405T418 443T329 517L319 529L318 179V-171Q307 -193 288 -193Q265 -193 258 -171L257 179V529L247 517Q209 473 158 444T76 405T33 396\",8594:\"65 251Q65 270 87 281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L87 221Q65 228 65 251\",8595:\"14 77Q14 104 33 104Q44 104 74 96T156 57T247 -17L257 -29V321Q257 669 259 675Q268 694 289 694Q295 693 300 691T307 686T313 679T318 672V321L319 -29L329 -17Q366 26 417 55T499 94T542 104Q561 104 561 77Q561 56 557 51T535 41Q481 28 438 0T370 -58T330 -119T308 -167T302 -187Q297 -194 288 -194Q278 -194 273 -186T265 -165T251 -127T220 -77Q151 15 41 41Q22 46 18 50T14 77\",8596:\"305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L404 281H744L914 282Q880 305 839 362T785 484Q781 500 781 503Q781 517 806 518Q809 518 811 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495\",8597:\"33 469Q14 469 14 496Q14 518 18 522T41 532Q121 551 182 608T268 745Q275 767 288 767Q299 767 303 755T320 713T355 650Q424 558 535 532Q553 527 557 523T561 496Q561 469 542 469Q531 469 501 478T418 516T329 590L319 602L318 426V74L319 -102L329 -90Q366 -47 417 -18T499 21T542 31Q561 31 561 4Q561 -17 557 -22T535 -32Q454 -51 393 -108T307 -245Q300 -267 288 -267Q279 -267 274 -259T266 -238T250 -200T220 -150Q151 -58 41 -32Q22 -27 18 -23T14 4Q14 31 33 31Q44 31 74 23T156 -16T247 -90L257 -102V602L247 590Q209 546 158 517T76 478T33 469\",8598:\"429 724Q438 724 452 711T466 690Q466 681 452 671Q361 602 242 599H218L756 135Q832 69 913 -1T1036 -108L1077 -143Q1084 -151 1084 -163Q1084 -180 1074 -187T1054 -194H1052Q1043 -194 939 -105Q866 -42 812 5Q180 549 178 549V546Q179 542 179 539Q183 520 183 483Q183 435 172 390T149 323T130 296Q121 292 115 295Q85 312 85 328Q85 331 95 350T115 406T125 486Q125 540 110 583T79 648T64 675Q64 681 68 687T81 693Q87 693 94 690Q162 657 232 657Q296 657 349 681T420 722Q422 724 429 724\",8599:\"1069 693Q1076 693 1080 687T1085 675Q1085 671 1076 656T1055 621T1034 565T1024 486Q1024 442 1034 406T1054 351T1064 328Q1064 321 1057 313T1042 300L1034 295Q1030 293 1027 293Q1023 293 1020 295T1014 301T1009 308T1005 316T1001 324Q980 368 971 419Q966 442 966 484V492Q966 528 972 553Q971 553 757 368T328 -3T107 -191Q103 -193 94 -193Q78 -193 71 -184T64 -164Q64 -153 72 -143Q79 -136 382 124L934 599H909Q837 599 760 634T683 690Q683 697 696 710T722 724Q726 724 742 714T779 691T838 668T920 657Q959 657 991 666T1043 684T1069 693\",8600:\"65 663Q65 680 74 687T93 694H96Q104 694 118 683T204 610Q280 545 338 495Q969 -49 971 -49L970 -46Q970 -42 970 -39Q966 -20 966 18Q966 65 977 110T1001 177T1019 204Q1028 208 1034 205Q1064 188 1064 172Q1064 169 1054 150T1034 94T1024 14Q1024 -28 1033 -64T1054 -120T1075 -155T1085 -175Q1085 -181 1081 -187T1068 -193Q1062 -193 1055 -190Q987 -157 919 -157Q817 -157 739 -215Q727 -224 720 -224Q712 -224 697 -210Q683 -199 683 -190T697 -171Q788 -102 907 -99H931L393 365Q317 431 236 501T114 608L72 643Q65 651 65 663\",8601:\"80 -193Q73 -193 69 -187T64 -175Q64 -172 79 -150T109 -84T125 14Q125 58 115 94T95 149T85 172Q85 179 92 187T108 200L115 205Q119 207 122 207Q126 207 129 205T135 199T140 192T144 184T148 176Q169 132 178 81Q183 58 183 17Q183 -7 182 -24T178 -48L177 -53Q178 -53 389 129T816 498T1043 692Q1049 694 1054 694Q1070 694 1077 684T1085 664Q1085 653 1077 643Q1070 636 767 376L215 -98L240 -99Q312 -99 389 -134T466 -190Q466 -197 452 -210T429 -224Q422 -224 411 -215Q330 -157 229 -157Q190 -157 158 -166T106 -184T80 -193\",8614:\"65 426Q74 448 95 448Q112 448 125 426V281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L135 221Q134 221 133 221T130 220H125V76Q115 54 95 54Q73 54 65 76V426\",8617:\"1029 475Q1029 505 1068 505Q1129 501 1173 463T1218 363Q1218 296 1170 259T1066 221H1063L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063Q1105 284 1131 305T1158 361Q1158 385 1146 401Q1122 441 1063 444Q1029 446 1029 475\",8618:\"225 221H218Q159 221 112 260T65 363Q65 431 116 468T221 505Q254 503 254 474Q254 456 245 450T216 443T188 438Q152 427 137 401Q125 385 125 362Q125 334 147 310Q171 288 221 281H632L1046 282Q1013 304 974 357T917 482Q913 500 913 501Q913 512 924 517Q926 518 944 518H949Q964 518 967 515T976 495Q996 412 1055 351T1197 270Q1217 263 1217 251Q1217 240 1209 236T1176 225T1127 204Q1069 173 1030 122T976 6Q972 -10 968 -13T948 -17H943Q918 -16 914 -9Q913 -6 913 -2Q913 1 917 17Q945 138 1046 220H632L225 221\",8636:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L572 220Q79 220 77 221Q64 225 64 244Q64 250 64 254T67 261T71 265T78 268T85 272Q142 302 189 345T258 421T296 484T315 516Q319 518 337 518Q358 518 363 512Q370 504 367 496Q360 469 319 404T219 290L209 282L636 281H1063\",8637:\"1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063\",8640:\"65 251Q65 270 87 281H513L940 282L930 290Q871 338 830 403T782 496Q779 510 791 517Q794 518 812 518H817Q831 518 835 515T847 494Q871 445 903 404T966 338T1022 298T1064 272T1083 259Q1085 255 1085 245Q1085 225 1072 221Q1070 220 578 220L87 221Q65 228 65 251\",8641:\"84 279Q89 281 580 281Q1070 281 1074 279Q1085 275 1085 256Q1085 245 1083 241T1066 230Q919 153 847 7Q839 -11 835 -14T817 -17H812Q791 -17 786 -11Q779 -3 782 5Q789 31 830 96T930 212L940 220H513L87 221Q64 229 64 250Q64 272 84 279\",8652:\"65 451Q65 470 87 481H513L940 482L930 490Q871 538 830 603T782 696Q779 710 791 717Q794 718 812 718H817Q831 718 835 715T847 694Q871 645 903 604T966 538T1022 498T1064 472T1083 459Q1085 455 1085 445Q1085 425 1072 421Q1070 420 578 420L87 421Q65 428 65 451ZM1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063\",8656:\"1063 169L1068 166Q1072 163 1074 162T1079 157T1083 149T1085 139Q1085 118 1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1069 389T1076 384T1082 375T1085 362Q1085 344 1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063\",8657:\"672 343Q672 326 670 320T657 313Q644 313 602 335Q577 349 557 361T527 381T509 395T499 403T495 406T494 118Q494 -166 492 -174Q484 -193 465 -193H463Q456 -193 453 -192T444 -186T433 -170V465L423 477Q407 495 394 514T367 554T351 579Q349 576 339 560T313 520T279 477L269 465V-22V-102Q269 -132 269 -145T268 -169T266 -180T260 -185T253 -191Q248 -193 239 -193H237Q218 -193 210 -174Q208 -166 208 118Q208 406 207 406L199 399Q191 392 165 374T100 335Q58 313 45 313Q35 313 33 319T30 343V349Q30 359 30 362T35 369T45 374T66 383T100 401Q267 499 333 680Q339 694 351 694Q361 694 365 687T380 652T407 597Q442 536 489 489T573 420T638 383T670 365Q672 361 672 343\",8658:\"64 362Q64 380 87 393H416L745 394L735 405Q708 436 681 477T654 531Q654 547 679 547H684H689Q703 547 710 540T723 519T750 475T806 411Q914 303 1059 271Q1060 271 1063 270T1068 269T1072 268T1076 266T1079 264T1082 260T1083 256T1084 250Q1084 242 1080 238T1063 231T1035 225T992 211T934 185Q797 112 719 -24Q710 -40 706 -43T689 -46H684Q653 -46 653 -31Q653 -24 661 -10Q694 50 737 99L745 108H416L87 109Q64 117 64 139Q64 156 87 169H449L812 170L826 180Q842 193 860 204T892 223T918 237T937 246L944 250L919 264Q866 290 825 321L811 332H449L87 333Q64 343 64 362\",8659:\"30 157Q30 174 32 180T46 187Q59 187 104 163Q154 136 198 101L207 94Q208 94 208 382Q208 666 210 674Q219 694 241 694Q254 692 262 683Q266 679 267 674Q269 658 269 522V35L279 23Q295 5 308 -14T335 -54T351 -79Q353 -76 363 -60T389 -20T423 23L433 35V671Q439 682 444 686T452 692T463 693H465Q484 693 492 674Q494 666 494 382Q494 94 495 94L504 101Q547 135 593 160T652 187Q665 191 671 177Q672 175 672 157Q672 137 669 134T636 116Q606 101 578 83T528 47T486 9T452 -30T424 -68T403 -103T387 -134T377 -159T370 -176L367 -184Q360 -194 351 -194Q345 -194 342 -192T334 -182T327 -166T315 -137T295 -97Q260 -36 213 11T129 80T63 117T32 136Q30 139 30 157\",8660:\"336 497Q358 541 363 544Q367 547 379 547H384Q401 547 405 545Q418 538 414 525T389 474T346 408L335 393H814L803 408Q781 436 760 474T735 525T744 545Q748 547 765 547Q771 547 774 547T780 546T786 544T790 541T794 535T799 527T805 514T813 497Q841 446 877 406T950 340T1014 301T1068 276L1096 265Q1102 259 1102 251Q1102 240 1085 232Q981 195 902 121Q835 56 798 -25Q791 -40 787 -43T765 -46T744 -44Q735 -40 735 -30Q735 -15 760 28T806 98L814 108H335L343 98Q361 75 378 46T404 -1T414 -24Q418 -37 405 -44Q401 -46 384 -46T363 -43T351 -25Q314 56 247 121Q216 150 182 173T125 206T79 226T53 237Q47 243 47 251Q47 254 47 256T49 261T52 264T57 267T61 268T66 270T71 272Q246 335 336 497ZM985 251Q932 280 882 323L871 332H278Q264 321 253 311T237 297T214 282T164 251L176 244Q221 218 278 169H871Q928 218 973 244L985 251\",8661:\"49 441Q30 441 30 464V471V480Q30 498 44 502Q237 573 331 750Q337 767 351 767Q360 767 368 753T400 702T460 629Q504 584 552 554T632 511T666 497Q672 493 672 471Q672 454 670 449Q664 441 653 441Q639 443 591 465T508 513L495 522L494 386V114L495 -22L508 -13Q543 12 591 34T653 59Q672 59 672 36V29V20Q672 2 658 -2Q465 -71 367 -257Q360 -267 351 -267Q343 -267 336 -257T320 -231T292 -187T242 -129Q198 -84 150 -54T70 -11T36 3Q30 7 30 29Q30 46 32 51Q38 59 49 59Q63 57 111 35T194 -13L208 -22V522L194 513Q159 488 111 466T49 441ZM422 584Q411 594 400 606T383 626T366 648T351 667Q349 665 339 652T314 620T280 584L269 573V-73L280 -84Q305 -108 351 -166Q353 -164 363 -151T389 -119T422 -84L433 -73V573L422 584\",8704:\"1 664Q-2 685 23 693H27Q46 693 54 680T102 578L148 475H492L533 570Q541 586 548 603T560 630T569 650T576 667T582 678T588 686T594 691T600 693T609 694Q622 694 631 684T639 662Q637 653 492 325T341 -8Q333 -16 320 -16Q306 -16 298 -8Q294 -4 147 326L1 656V664ZM464 414H319Q175 414 175 413L319 88L464 414\",8707:\"81 347Q81 359 84 363T104 378H513V633H300L87 634Q64 642 64 664Q64 685 84 692Q89 694 321 694H552Q571 681 574 669V25Q567 7 552 1H87Q64 12 64 30T87 61H513V317H308Q103 317 99 319Q81 328 81 347\",8709:\"285 711Q307 711 326 708T357 701T370 698Q371 698 375 710T383 735T389 750Q395 767 415 767Q431 767 438 757T446 738T436 701T426 670Q426 668 433 664Q468 633 489 588Q511 542 519 488T528 344Q528 286 524 243T508 150T466 63T394 6Q345 -17 287 -17Q265 -17 246 -14T216 -7T203 -4Q191 -47 183 -60T159 -73Q146 -73 137 -63T128 -44Q128 -38 138 -7L148 24L141 30Q134 35 120 49Q94 77 78 113T56 194T48 268T46 344Q46 388 47 416T56 494T78 577T122 644T194 694Q239 711 285 711ZM351 639Q350 639 346 642T337 648T325 654T306 658T283 660Q254 660 221 638T181 567Q171 513 171 375Q171 164 182 129L351 639ZM402 356Q402 516 395 555Q395 557 395 559T394 563T394 566L393 568L223 57Q252 34 286 34H288Q318 34 346 53T387 109Q402 152 402 329V356\",8710:\"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137\",8712:\"97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L534 526Q515 526 491 526T457 526T435 526T417 525T404 523T390 521T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 403 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220Q159 220 159 218Q159 206 166 182T190 122T247 50T341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q276 -65 187 24T97 251\",8713:\"126 -210Q116 -210 107 -203T97 -179Q97 -171 99 -166Q99 -165 111 -145T150 -80T203 8Q97 104 97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H549Q565 614 582 643T608 685L616 698Q623 711 641 711Q651 711 660 704T670 681Q670 672 667 667Q666 666 661 657T644 627T620 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L584 526L437 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220H401L283 23Q311 5 341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q320 -71 252 -29Q152 -197 148 -201Q139 -210 126 -210ZM235 62L330 220Q159 219 159 218Q159 196 176 150T235 62ZM366 281L513 526Q503 526 487 526T465 526T448 525T433 525T422 525T412 524T403 523T394 521T385 519T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 366 281\",8715:\"96 251Q96 268 119 281H363Q607 281 607 283Q607 295 600 319T576 379T519 451T425 507Q386 521 361 523T233 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 229 587Q238 587 257 587T288 588Q366 588 435 568T568 488Q670 388 670 251Q670 155 621 78T499 -39T345 -85Q336 -86 225 -86L119 -85Q96 -77 96 -55Q96 -38 119 -25H233Q356 -24 371 -21Q373 -21 393 -16Q468 3 523 55T599 177Q607 206 607 218Q607 220 363 220L119 221Q96 229 96 251\",8722:\"119 221Q96 230 96 251T116 279Q121 281 448 281H775Q776 280 779 278T785 274T791 269T795 262T797 251Q797 230 775 221H119\",8723:\"64 155Q64 172 87 185H416V476H251L87 477Q64 485 64 507Q64 528 84 535Q89 537 448 537H807Q808 536 811 534T817 530T823 525T827 518T829 507Q829 486 807 477L642 476H477V185H807Q808 184 811 182T817 178T823 173T827 166T829 155Q829 134 807 125L642 124H477V-39Q477 -203 475 -208Q466 -227 446 -227Q427 -227 417 -205L416 -41V124H251L87 125Q64 133 64 155\",8725:\"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730\",8726:\"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718\",8727:\"236 431Q237 447 251 459T287 472T323 459T338 431Q338 423 328 363L317 300Q318 300 340 317T392 356T435 387Q442 390 450 390Q470 390 485 374T501 335Q501 326 500 320T494 309T486 300T473 293T458 287T438 280T414 272L353 250L414 228Q422 225 436 221T457 214T472 208T485 201T493 192T499 181T501 166Q501 141 484 126T450 111Q447 111 445 111T441 111T437 112T433 114T428 117T422 121T414 127T404 135T391 145T374 158L317 200L328 137Q338 77 338 69Q336 52 321 40T287 28T253 40T236 69Q236 77 246 137L257 200Q256 200 234 183T182 144T139 113Q132 110 124 110Q104 110 89 126T73 165Q73 174 74 180T80 191T88 200T101 207T116 213T136 220T160 228L221 250L160 272Q152 275 138 279T117 286T102 292T89 299T81 308T75 319T73 334Q73 359 90 374T124 389Q127 389 129 389T133 389T137 388T141 386T146 383T152 379T160 373T170 365T183 355T200 342L257 300L246 363Q236 423 236 431\",8728:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251ZM448 251Q448 325 405 369T286 413Q215 413 171 371T126 251Q126 177 168 133T287 89Q361 89 404 132T448 251\",8729:\"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251\",8730:\"107 178Q100 178 89 188T78 207Q78 216 84 220Q85 221 124 248T207 304T260 338Q269 340 275 335Q276 334 370 156L463 -20L698 393Q928 800 935 811Q944 820 954 820Q972 820 980 811T988 789Q988 781 858 553Q776 409 718 306Q452 -166 447 -171Q439 -179 422 -180Q405 -180 400 -175Q399 -174 346 -73T241 128T187 229L151 205Q111 178 107 178\",8733:\"65 222Q65 282 88 329T144 401T208 438T261 451H273Q312 451 320 450Q456 431 526 330L537 316Q638 451 778 451Q813 451 830 445V388Q821 391 799 391Q758 391 721 377T660 342T618 301T592 266L584 251Q648 152 697 114Q748 74 804 74H806Q823 74 829 77Q830 77 830 38V-1L820 -3Q801 -7 786 -7H771Q699 -7 632 25T527 114L516 128Q414 -8 276 -8Q192 -8 129 56T65 222ZM256 53Q296 53 332 67T392 102T434 143T461 178L469 193Q405 292 356 330Q308 369 251 369H243Q196 369 156 328T116 221Q116 191 124 161T158 99T225 55Q234 53 256 53\",8734:\"65 219Q65 318 132 385T302 452Q473 452 573 331L589 312L596 320Q710 452 857 452Q948 452 1016 386T1084 225Q1084 125 1017 59T848 -8Q679 -8 576 113L560 132L553 124Q439 -8 292 -8Q200 -8 133 58T65 219ZM1033 224Q1033 291 987 340T875 389Q748 389 648 261Q641 253 642 251Q717 163 748 137Q813 81 880 81Q941 81 987 120T1033 224ZM275 56Q315 56 353 70T418 104T466 144T497 178L507 192Q507 193 474 230T441 269Q355 362 267 362Q210 362 163 324T116 221Q116 150 162 103T275 56\",8736:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 21 56 23V25Q55 27 55 30Q55 31 56 33V35Q55 37 55 40Q55 42 57 48Q67 63 346 381Q421 467 518 578Q607 680 623 697T647 714Q656 714 661 708T666 694V692Q676 687 676 674Q676 668 673 663Q672 662 637 622T534 503T400 350L147 61L386 60H653Q666 50 666 40V38Q676 31 676 20Q676 8 661 0H71\",8739:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",8741:\"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727\",8743:\"95 -16Q78 -16 71 -6T64 14Q64 20 65 22L212 308Q359 593 361 595Q370 604 385 604Q398 602 405 595Q407 593 554 308L701 22Q702 20 702 15Q702 1 693 -8T671 -17Q661 -17 651 -9Q647 -5 515 251L383 506L251 251Q119 -5 116 -8Q108 -16 95 -16\",8744:\"64 572Q64 585 72 594T94 604T116 595Q119 592 251 336L383 81L515 336Q647 592 651 596Q661 604 671 604Q684 604 693 595T702 572Q702 567 701 565L554 279Q407 -6 405 -8Q404 -9 401 -11T397 -14Q392 -16 383 -16H380Q369 -16 361 -8Q359 -6 212 279L65 565Q65 566 65 568T64 572\",8745:\"94 -16Q73 -16 64 8V209Q64 239 64 287Q65 418 69 432Q70 434 70 435Q84 487 125 523T216 575T299 597T354 603H372Q444 603 501 590T591 558T648 515T681 471T696 435Q696 434 697 432Q701 417 702 309Q702 303 702 287Q702 239 702 209V8Q693 -16 672 -16Q650 -16 643 3Q641 8 641 201Q641 397 640 403Q631 472 558 507T383 542Q339 542 298 535T219 511T156 468T126 403Q125 397 125 201Q125 8 123 3Q116 -16 94 -16\",8746:\"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603\",8747:\"204 -71Q204 -108 181 -124T137 -141Q132 -141 132 -142Q142 -161 154 -161Q164 -161 186 -152Q200 -145 210 -135T228 -107T241 -77T249 -38T254 -2T258 38T262 74Q282 265 334 489Q334 490 337 503T341 523T347 544T355 569T365 594T379 620T397 643T420 666T447 685T481 700Q511 711 539 711T587 696T616 656T628 612T632 573Q632 536 610 519T562 501Q534 501 513 519T492 571Q492 608 515 624T559 641Q564 641 564 642Q554 661 542 661Q532 661 510 652Q496 645 486 635T468 607T455 577T447 538T442 502T438 462T434 426Q414 235 362 11Q352 -35 347 -54T328 -101T291 -152Q235 -208 162 -211Q147 -211 136 -208T109 -196T83 -165T67 -108Q64 -94 64 -73Q64 -37 86 -19T134 -1Q162 -1 183 -19T204 -71\",8764:\"64 155Q64 210 84 262T150 353T257 391Q300 391 341 371T417 321T484 264T557 215T637 194Q702 194 745 244T788 367Q796 391 808 391Q815 391 821 381T828 353V342Q828 252 776 181T637 109Q594 109 552 129T476 179T409 236T336 285T256 306Q193 306 149 258T105 132Q98 109 86 109Q76 109 70 122T64 155\",8768:\"64 561Q64 570 76 576T108 583Q174 583 214 535T254 407Q254 368 238 324T202 248T166 173T149 92Q149 43 169 2T217 -39Q231 -40 242 -46T254 -60Q254 -69 241 -75T210 -82Q145 -82 105 -34T64 93Q64 133 80 177T116 253T152 328T169 408Q169 461 148 500T105 540Q92 540 78 545T64 561\",8771:\"64 295Q64 378 117 440T257 502Q298 502 339 485T416 443T486 394T560 352T637 335Q693 335 740 373T788 478Q796 502 808 502Q815 502 821 492T828 465V455Q828 365 771 308T640 250Q603 250 562 265T501 294T439 336L370 382Q308 417 256 417Q205 417 164 388T110 317Q110 316 109 304T107 286T103 270T97 255T86 250Q76 250 70 263T64 295ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27\",8773:\"64 402Q64 457 84 509T150 600T257 638Q300 638 341 618T417 569T484 511T557 462T637 441Q702 441 745 491T788 614Q796 638 808 638Q815 638 821 628T828 600V589Q828 499 776 428T637 356Q594 356 552 376T476 425T409 483T336 532T256 553Q193 553 149 505T105 379Q98 356 86 356Q76 356 70 369T64 402ZM87 197Q64 207 64 226Q64 247 84 255Q89 257 448 257H807Q808 256 811 254T817 250T823 245T827 238T829 227Q829 209 807 197H87ZM87 -27Q64 -18 64 3Q64 23 86 32Q89 33 448 33H807L812 30Q816 27 818 26T823 21T827 13T829 3Q829 -18 807 -27H87\",8776:\"64 345Q64 423 119 473T250 524Q301 524 356 503T451 455T542 407T636 385Q700 385 743 417T786 481Q786 493 791 508T807 524Q817 524 823 512T829 479Q829 404 776 352T638 300Q590 300 537 321T443 369T352 417T256 439Q207 439 166 417T110 359Q109 357 107 341T100 312T85 300Q77 300 71 313T64 345ZM64 77Q64 155 119 205T250 256Q302 256 357 235T451 187T541 139T636 117Q699 117 742 148T786 213Q786 231 792 243T808 256T823 242T829 208Q829 134 776 83T640 32Q591 32 537 53T443 101T352 149T256 171Q206 171 165 148T110 91Q109 89 107 73T100 44T85 32Q77 32 71 45T64 77\",8781:\"798 533Q812 533 820 524T829 502T819 480T769 440Q655 355 537 330Q492 322 447 322Q401 322 356 330Q289 344 219 381T118 443T73 481Q64 490 64 503Q64 517 72 525T94 533Q99 533 102 532Q107 531 138 507T209 456T314 405T446 382Q604 382 765 515Q788 533 798 533ZM95 -32Q81 -32 73 -23T64 -1Q64 10 74 21T124 61Q213 127 293 153T421 179L422 180Q424 180 426 180T432 180T441 180T452 179Q612 179 769 61Q811 29 820 19T829 -1Q829 -14 821 -23T798 -32Q788 -32 765 -14Q608 118 446 118Q287 118 128 -14Q105 -32 95 -32\",8784:\"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87ZM362 635Q362 671 387 696T444 721Q488 721 510 693T533 635Q533 606 512 579T448 551Q406 551 384 577T362 635\",8800:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q165 -163 327 109H87Q64 118 64 139Q64 159 86 168Q89 169 363 169L461 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H496Q533 455 583 539T656 660T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q729 664 709 631T645 523T567 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H532L433 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H398Q217 -195 211 -201Q202 -210 189 -210\",8801:\"87 445Q64 454 64 475Q64 497 84 503Q89 505 448 505H807Q808 504 812 502T818 497T823 492T827 484T829 474Q829 456 807 445H87ZM87 221Q64 230 64 251T84 279Q89 281 448 281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221H87ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27\",8804:\"797 55Q797 45 790 35T767 25H759L434 180Q108 336 105 339Q96 348 96 360Q96 378 114 388Q126 394 439 544T757 695Q763 697 766 697Q780 697 788 688T797 666Q797 654 788 645Q784 641 507 509T197 361L466 232Q785 80 790 74Q797 66 797 55ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119\",8805:\"127 25Q110 25 103 34T96 54Q96 66 105 75Q109 80 439 238L696 361Q113 637 105 645Q96 654 96 667Q96 679 104 688T128 697Q137 696 460 541T788 382Q797 373 797 360Q797 348 788 339Q785 336 459 180L135 25H127ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119\",8810:\"734 -74T734 -86T727 -107T704 -116H702Q694 -116 584 -55Q473 7 380 58Q87 219 73 229Q64 238 64 250Q64 263 73 272Q87 282 380 443Q695 616 699 617H700Q718 617 726 607T734 588Q734 568 717 560Q705 554 435 404L157 250L439 94Q721 -61 726 -66Q734 -74 734 -86ZM1085 -74T1085 -86T1078 -107T1055 -116H1053Q1045 -116 935 -55Q824 7 731 58Q438 219 424 229Q415 238 415 250Q415 263 424 272Q438 282 731 443Q1046 616 1050 617H1051Q1069 617 1077 607T1085 588Q1085 568 1068 560Q1056 554 786 404L508 250L790 94Q1072 -61 1077 -66Q1085 -74 1085 -86\",8811:\"64 588Q64 600 72 609T94 618H95Q103 618 209 559Q322 496 419 443Q712 282 725 272Q734 263 734 250Q734 238 725 229Q714 220 415 55T110 -113Q103 -116 95 -116Q78 -116 71 -106T64 -86Q64 -74 72 -66Q77 -61 359 94L641 250L363 404Q277 452 173 509Q95 552 82 560T66 576V577Q64 585 64 588ZM415 588Q415 600 423 609T445 618H446Q454 618 560 559Q673 496 770 443Q1063 282 1076 272Q1085 263 1085 250Q1085 238 1076 229Q1065 220 766 55T461 -113Q454 -116 446 -116Q429 -116 422 -106T415 -86Q415 -74 423 -66Q428 -61 710 94L992 250L714 404Q628 452 524 509Q446 552 433 560T417 576V577Q415 585 415 588\",8826:\"797 -57Q797 -65 790 -75T766 -86Q748 -86 741 -74T733 -43T719 8T681 72Q647 112 588 141T475 185T343 207T230 216T136 219Q96 219 96 250Q96 280 132 280H136Q193 281 239 283T347 292T457 310T556 342T643 391T703 460T735 553Q741 585 763 585Q781 585 789 575T797 556Q797 540 792 513T758 434T682 345Q605 285 481 254L462 249Q483 246 526 233T633 185T733 104Q767 63 782 15T797 -57\",8827:\"96 556Q96 568 104 577T126 586Q152 586 158 553Q164 503 188 462T247 394T331 345T429 313T539 294T649 284T758 280H760Q797 280 797 250Q797 219 760 219H758Q627 217 529 204T347 160T216 77T158 -54Q152 -86 126 -86Q110 -86 103 -76T96 -57Q96 -41 101 -14T135 65T211 154Q288 214 412 245L431 250Q410 252 367 265T259 314T160 395Q127 435 112 483T96 556\",8834:\"96 251Q96 389 191 482T417 586Q418 586 428 586T456 586T496 586T546 587T601 587H775Q776 586 779 584T785 580T791 575T795 568T797 557Q797 536 775 527L597 526Q411 525 395 522Q390 521 370 516Q285 494 222 424T158 251Q158 131 246 53Q313 -9 408 -23Q417 -24 597 -25H775Q776 -26 781 -29T788 -34T794 -43T797 -56Q797 -74 775 -85H493Q407 -85 376 -79Q257 -55 177 35T96 251\",8835:\"96 -55Q96 -38 119 -25H296Q482 -24 498 -21Q503 -20 523 -15Q609 7 672 77T735 251T665 431T485 524Q476 525 296 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 300 587Q451 586 476 585T522 579Q632 556 714 468T796 251Q796 112 695 13Q612 -65 497 -82Q473 -86 289 -86L119 -85Q96 -77 96 -55\",8838:\"96 361Q96 499 191 592T417 696Q418 696 428 696T456 696T496 696T546 697T601 697H775Q776 696 779 694T785 690T791 685T795 678T797 667Q797 646 775 637L597 636Q411 635 395 632Q390 631 370 626Q285 604 222 534T158 361Q158 241 246 163Q313 101 408 87Q417 86 597 85H775Q776 84 781 81T788 76T794 67T797 54Q797 36 775 25H493Q407 25 376 31Q257 55 177 145T96 361ZM149 -199Q127 -191 127 -169T149 -140H154Q160 -140 169 -140T192 -140T224 -140T262 -140T306 -139T354 -139T407 -139T463 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H149\",8839:\"96 55Q96 72 119 85H296Q482 86 498 89Q503 90 523 95Q609 117 672 187T735 361T665 541T485 634Q476 635 296 636L119 637Q96 645 96 667Q96 688 116 695Q121 697 300 697Q451 696 476 695T522 689Q632 666 714 578T796 361Q796 222 695 123Q612 45 497 28Q473 24 289 24L119 25Q96 33 96 55ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 433 -139H745Q766 -152 766 -170Q766 -190 745 -199H119\",8846:\"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603ZM353 412Q353 420 353 435T352 456Q352 483 358 495T385 507Q403 506 409 494T415 457Q415 451 415 436T414 411V341H558Q579 329 579 311Q579 289 558 281L486 280H414V136Q400 114 384 114Q363 114 354 136L353 208V280H281L209 281Q187 289 187 310Q187 328 209 341H353V412\",8849:\"127 25Q111 29 104 49V362L105 675Q114 693 127 696H132Q138 696 149 696T174 696T208 696T249 696T297 697T350 697T407 697T468 697H806Q828 683 828 666Q828 646 806 637L485 636H165V85H805Q806 84 809 82T813 80T817 77T821 73T824 68T826 62T827 55Q827 34 806 25H127ZM96 -190T96 -169T119 -140H125Q131 -140 141 -140T167 -140T201 -140T242 -140T290 -139T344 -139T402 -139T463 -139H805Q806 -140 809 -142T813 -144T817 -147T821 -151T824 -156T826 -162T827 -169Q827 -190 806 -199H119Q96 -190 96 -169\",8850:\"66 55Q66 74 89 85H728V636H408L88 637Q66 645 66 667T88 696H94Q99 696 110 696T135 696T169 696T210 696T258 697T311 697T368 697T429 697H767Q786 684 789 672V49Q782 31 767 25H88Q66 32 66 55ZM88 -199Q66 -191 66 -169Q66 -148 87 -140Q91 -139 433 -139H775Q776 -140 779 -142T783 -144T787 -147T791 -151T794 -156T796 -162T797 -169Q797 -189 775 -199H88\",8851:\"131 25Q121 1 100 1Q81 1 71 23L70 301Q70 579 72 583Q77 598 90 602Q95 604 385 604H674Q693 591 696 579V25Q686 1 665 1Q646 1 636 23L635 283V543H131V25\",8852:\"696 25Q689 7 674 1H93Q77 7 71 23L70 301Q70 579 72 583Q80 604 100 604T131 579V61H635V579Q644 603 666 603Q687 603 696 579V25\",8853:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM416 282V570H414Q341 564 285 535T202 475T156 397T134 332T128 287Q127 283 127 282H416ZM765 288Q760 344 743 389T700 462T647 512T589 543T538 560T499 568L483 570H478V282H766L765 288ZM416 -69V220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q337 -61 410 -69H416ZM483 -69Q554 -60 607 -33T687 21T733 93T756 156T764 209Q766 217 766 220H478V-69H483\",8854:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM765 288Q753 424 666 497T446 571T227 498T128 288L127 282H766L765 288ZM446 -70Q578 -70 666 4T765 213L766 220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q353 -70 446 -70\",8855:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM647 512Q567 571 447 571Q340 571 262 523Q237 507 237 505L342 399L447 295L657 505L647 512ZM298 356L192 461Q180 445 161 411Q126 341 126 251Q126 128 192 40L403 250L298 356ZM701 41Q704 41 719 63T750 138T767 250Q767 310 750 362T719 437T701 460L491 250L701 41ZM238 -5Q238 -8 261 -22T336 -53T447 -70Q567 -70 647 -11L657 -4L447 206L342 101Q238 -1 238 -5\",8856:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM657 505Q656 506 650 510T638 518T623 527T604 537T581 547T553 556T522 563T486 569T446 571Q305 571 216 487T126 251Q126 128 192 40L657 505ZM447 -70Q591 -70 679 16T767 250Q767 308 751 360T719 436T701 460L469 228Q238 -1 238 -5Q238 -8 261 -22T336 -53T447 -70\",8857:\"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM767 252Q767 395 681 483T446 571Q303 571 215 486T126 249Q126 107 212 19T446 -70Q596 -70 681 18T767 252ZM335 251Q335 297 368 329T441 361Q498 361 527 327T557 250Q557 202 525 171T446 140Q397 140 366 173T335 251\",8866:\"65 672Q76 693 91 693Q115 693 123 674Q125 669 125 523V378H615Q618 376 622 373T628 369T632 366T635 362T636 356T637 347Q637 328 619 319Q615 317 370 317H125V171Q125 25 123 20Q114 1 94 1Q73 1 65 23V672\",8867:\"64 327T64 347T89 378H577V525L578 672Q592 693 604 693Q629 693 638 669V25Q628 1 607 1Q588 1 578 23L577 170V317H88Q64 327 64 347\",8868:\"64 664Q64 675 71 683T87 693H93Q99 693 110 693T137 693T173 693T217 694T267 694T323 694T383 694T448 694H807Q808 693 811 691T817 687T823 682T827 675T829 664Q829 643 807 634L642 633H477V25Q467 1 446 1Q427 1 417 23L416 328V633H251L87 634Q64 643 64 664\",8869:\"65 31Q65 38 66 41T71 50T87 61H416V366L417 672Q431 693 443 693Q468 693 477 669V61H807Q808 60 811 58T817 54T823 49T827 42T829 31Q829 10 807 1H87Q65 10 65 31\",8872:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V392Q219 393 537 393H896Q897 392 900 390T906 386T912 381T916 374T918 363Q918 345 896 333H190V169H896L900 166Q905 163 907 162T912 157T916 149T918 139Q918 118 896 109H190V-225Q181 -249 160 -249\",8900:\"280 522Q281 523 285 523H289Q301 523 366 457Q404 420 431 393Q533 291 546 277T560 250Q560 239 548 226T431 108Q313 -10 304 -16Q297 -21 287 -21Q278 -21 275 -19Q270 -17 146 107T18 238Q15 242 15 251Q15 258 18 263Q20 268 145 392T274 519L280 522ZM388 350L288 449L188 350L89 250L288 52L487 250L388 350\",8901:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251\",8902:\"270 491Q274 502 287 502Q298 502 304 491Q304 486 323 396T342 303L438 314Q520 324 534 324Q540 324 545 320T550 307Q550 298 539 290T456 243Q377 198 377 197L416 111Q456 26 456 22Q457 21 457 18Q457 11 451 6T438 0H437Q432 0 415 16Q387 42 358 68L287 133L216 68Q193 47 167 23Q142 0 136 0Q129 0 123 5T117 18Q117 21 118 22Q118 26 158 111L197 197Q197 198 156 221T72 269T26 298Q24 304 24 307Q24 315 29 319T40 324Q53 324 136 314L232 303Q232 306 251 396T270 491\",8904:\"906 251Q906 456 905 456Q550 252 549 251Q549 250 726 148T905 45T906 251ZM967 -14Q958 -38 939 -38H937Q928 -38 923 -35Q919 -34 748 64T500 209L71 -38Q69 -39 63 -39Q42 -39 33 -16V518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407L500 292Q578 339 750 438T929 539H933Q958 539 967 515V-14ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251\",8942:\"74 55Q74 91 99 116T156 141Q200 141 222 113T245 55Q245 26 224 -1T160 -29Q118 -29 96 -3T74 55ZM74 465Q74 501 99 526T156 551Q200 551 222 523T245 465Q245 436 224 409T160 381Q118 381 96 407T74 465ZM74 865Q74 901 99 926T156 951Q200 951 222 923T245 865Q245 836 224 809T160 781Q118 781 96 807T74 865\",8943:\"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251ZM562 251Q562 286 587 311T644 336Q688 336 710 308T733 250Q733 221 712 194T648 166T584 193T562 251ZM1050 251Q1050 286 1075 311T1132 336Q1176 336 1198 308T1221 250Q1221 221 1200 194T1136 166T1072 193T1050 251\",8945:\"129 785Q129 821 154 846T211 871Q255 871 277 843T300 785Q300 756 279 729T215 701Q173 701 151 727T129 785ZM576 485Q576 521 601 546T658 571Q702 571 724 543T747 485Q747 456 726 429T662 401Q620 401 598 427T576 485ZM1023 185Q1023 221 1048 246T1105 271Q1149 271 1171 243T1194 185Q1194 156 1173 129T1109 101Q1067 101 1045 127T1023 185\",8968:\"194 728Q199 743 216 749H220Q223 749 229 749T245 749T265 750T289 750T316 750T345 750H471Q472 749 477 746T484 741T490 732T493 719Q493 701 471 690L362 689H254V-224Q244 -248 223 -248T194 -226V728\",8969:\"317 -224Q307 -248 286 -248Q267 -248 257 -226L256 231V689H148L40 690Q17 698 17 720Q17 741 37 748Q42 750 169 750H295Q314 737 317 725V-224\",8970:\"194 728Q204 749 220 749Q245 749 254 725V-188H471Q472 -189 477 -192T484 -197T490 -206T493 -219Q493 -237 471 -248H216Q200 -242 194 -226V728\",8971:\"17 -219Q17 -201 40 -188H256V270L257 728Q271 749 283 749Q308 749 317 725V-224Q310 -242 295 -248H40L38 -247Q35 -246 34 -245T30 -243T25 -239T21 -234T18 -227T17 -219\",8994:\"95 108Q85 108 75 114T65 139Q65 159 129 227Q316 405 573 405Q654 405 729 387T854 344T950 286T1015 232T1053 191Q1078 160 1083 152Q1084 148 1084 139Q1084 121 1074 115T1054 108Q1040 108 1029 122T990 167T922 223Q819 291 680 309Q641 315 575 315Q508 315 469 309Q303 288 197 201Q168 179 148 155T118 119T95 108\",8995:\"1054 392Q1067 392 1076 384T1085 362Q1085 351 1079 342T1050 310Q983 243 901 200Q753 126 575 126Q494 126 420 141T298 176T205 225T140 272T100 310Q64 346 64 362Q64 370 67 374Q75 393 93 393Q107 393 124 375Q272 214 575 214Q877 214 1025 375Q1039 392 1054 392\",9001:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",9002:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\",9651:\"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340\",9653:\"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340\",9657:\"33 518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407Q529 276 533 272Q542 263 542 250Q542 238 533 229Q528 224 304 95T71 -38Q69 -39 63 -39Q42 -39 33 -16V518ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251\",9661:\"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154\",9663:\"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154\",9667:\"542 -14Q533 -38 514 -38H512Q503 -38 498 -35Q494 -34 270 95T42 229Q33 238 33 251Q33 259 35 264Q36 265 38 268T42 272Q48 278 271 407T504 539H508Q533 539 542 515V-14ZM481 251Q481 456 480 456Q125 252 124 251Q124 250 301 148T480 45T481 251\",9711:\"65 42T65 250T204 584T574 711Q795 711 935 594Q955 577 974 555T1022 490T1067 385T1084 250Q1084 42 945 -84T574 -211T204 -85ZM1024 250Q1024 431 903 540T578 650Q482 650 404 627T274 565T189 474T140 366T125 250Q125 123 186 31T347 -106T573 -150Q772 -150 898 -45T1024 250\",9824:\"675 -18Q536 -18 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366Q364 52 360 40T342 14T300 -8T230 -17H218Q110 -17 75 117Q64 163 64 209Q64 290 116 357T261 495Q363 574 414 690Q425 719 445 719Q467 719 478 693Q507 627 547 578T623 503T702 438T777 357Q829 285 829 202V197Q826 128 808 81T762 15T714 -11T675 -18\",9825:\"65 491Q65 602 121 656T246 710Q375 710 440 624L447 615Q519 711 638 711Q723 711 775 652T828 491Q828 390 770 313T581 129Q539 95 514 63T483 14T469 -13T446 -24Q434 -24 427 -17T416 0T400 32T371 74Q352 97 310 131T229 199T151 276T89 374T65 491ZM249 649Q188 649 157 603T125 489Q125 409 181 338T352 176Q408 131 437 87L446 73L456 87Q479 121 507 147T579 207T659 278Q768 387 768 489Q768 506 766 524T756 566T731 611T687 642Q668 649 638 649Q609 649 593 644Q547 633 516 604T478 534Q473 505 447 505H445Q420 505 416 534Q407 577 372 608T285 648Q277 649 249 649\",9826:\"409 686Q410 688 412 691T415 696T418 701T421 706T424 709T427 713T431 715T435 717T440 718T446 719Q455 719 460 717T472 704T488 679T516 633T563 567Q624 485 687 422T787 330T826 296T828 282Q828 270 825 265T801 245Q696 161 612 59T477 -133Q465 -154 447 -154Q439 -154 434 -152T425 -146T414 -130T399 -104T372 -62T330 -3Q270 78 207 142T107 234T70 265Q64 274 64 282Q64 296 90 317Q284 472 409 686ZM749 282Q745 286 721 307T681 343T635 388T581 446T525 516T465 601Q462 606 457 613T450 624L447 627V628Q446 628 436 611T402 561T348 489T266 396T155 292L145 282Q147 280 185 245T257 177T343 79T442 -57Q446 -64 447 -64V-63Q450 -59 475 -22T530 56T619 160T749 282\",9827:\"240 527Q240 611 301 665T446 719T590 665T652 527Q652 431 571 373Q578 363 584 352T593 335T597 329L604 335Q611 341 617 345T637 356T667 366Q672 366 680 367T694 368Q767 368 814 310T861 177Q861 109 819 57T713 -12Q690 -17 656 -17Q535 -13 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366V62Q356 -12 237 -17Q130 -17 71 60Q32 111 32 178Q32 251 78 309T198 368Q217 368 233 364T260 354T279 343T291 333T296 329L300 336Q304 343 310 354T322 373Q240 432 240 527\",9837:\"230 480Q293 480 337 440T381 330V322Q381 240 323 161Q258 71 123 -11L114 -16L97 -17Q70 -17 66 -7Q64 -3 64 366V641Q64 717 65 731T75 748Q78 750 95 750Q117 750 122 742T127 694Q127 685 127 653T126 595V454Q183 480 230 480ZM242 333Q242 405 212 405H207Q147 405 130 370L127 364L126 219Q126 77 128 77Q133 82 140 90T167 127T202 183T229 253T242 333\",9838:\"345 -223Q333 -223 330 -214T327 -178V-116Q327 -23 326 -23L203 -82Q90 -134 77 -140Q65 -142 59 -130Q57 -126 57 295V595Q57 643 57 667T58 704T60 719T63 724Q93 741 101 741Q113 741 116 732T119 680V597Q119 467 120 467Q121 468 180 495T301 552T369 584Q381 586 387 574Q389 570 389 187V-88Q389 -132 389 -154T388 -188T386 -202T383 -206Q353 -223 345 -223ZM327 271Q327 421 326 421L120 323L119 173V23Q120 23 223 72L327 121V271\",9839:\"140 628Q151 628 154 620T158 591V549V484L166 488Q175 492 192 500T223 516L288 548V622V674Q288 681 288 685T289 693T289 699T291 703T295 707T298 709T304 712T311 716Q326 724 332 724Q343 724 346 715T350 685V644V579Q358 583 364 583Q376 583 380 574Q382 570 382 514V481Q382 459 380 454T363 441L350 435V135Q358 139 364 139Q376 139 380 130Q382 126 382 70V37Q382 15 380 10T363 -3L350 -9V-76Q350 -102 348 -106T328 -119Q312 -128 306 -128Q288 -128 288 -99V-77V-40L280 -44Q271 -48 254 -56T223 -72L158 -104V-150V-180Q158 -198 155 -202T135 -216Q119 -224 114 -224Q96 -224 96 -192V-172V-135Q86 -140 81 -140Q70 -140 66 -129Q64 -126 64 -70V-54Q64 -18 66 -12T83 3L96 9V309Q86 304 81 304Q70 304 66 315Q64 318 64 374V407Q64 429 66 434T83 447L96 453V602Q99 609 100 610T118 619Q134 628 140 628ZM288 254Q288 404 287 404L158 340V40L166 44Q175 48 192 56T223 72L288 104V254\",10072:\"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249\",10216:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",10217:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\",10229:\"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063L1065 280Q1079 281 1392 281H1719Q1720 280 1723 278T1729 274T1735 269T1739 262T1741 251Q1741 230 1719 221H1063\",10230:\"119 221Q96 230 96 251T116 279Q121 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H119\",10231:\"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1476L1890 282Q1857 304 1818 357T1761 482Q1757 500 1757 501Q1757 512 1768 517Q1770 518 1788 518H1793Q1808 518 1811 515T1820 495Q1840 412 1899 351T2041 270Q2061 263 2061 251Q2061 240 2053 236T2020 225T1971 204Q1913 173 1874 122T1820 6Q1816 -10 1812 -13T1792 -17H1787Q1762 -16 1758 -9Q1757 -6 1757 -2Q1757 1 1761 17Q1789 138 1890 220H1476L1063 221\",10232:\"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063L1064 168Q1080 169 1423 169H1782L1786 166Q1791 163 1793 162T1798 157T1802 149T1804 139Q1804 118 1782 109H1063L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1065 392Q1081 393 1423 393H1782Q1783 392 1786 390T1792 386T1798 381T1802 374T1804 363Q1804 345 1782 333H1063\",10233:\"87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H1169L1532 170L1546 180Q1562 193 1580 204T1612 223T1638 237T1657 246L1664 250L1639 264Q1586 290 1545 321L1531 332H1169L807 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H1136L1465 394L1455 405Q1428 436 1401 477T1374 531Q1374 547 1399 547H1404H1409Q1423 547 1430 540T1443 519T1470 475T1526 411Q1634 303 1779 271Q1780 271 1783 270T1788 269T1792 268T1796 266T1799 264T1802 260T1803 256T1804 250Q1804 242 1800 238T1783 231T1755 225T1712 211T1654 185Q1517 112 1439 -24Q1430 -40 1426 -43T1409 -46H1404Q1373 -46 1373 -31Q1373 -24 1381 -10Q1414 50 1457 99L1465 108H1136L807 109H87\",10234:\"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1425L1788 170L1802 180Q1818 193 1836 204T1868 223T1894 237T1913 246L1920 250L1895 264Q1842 290 1801 321L1787 332H1425L1063 333ZM733 393H1392L1721 394L1711 405Q1684 436 1657 477T1630 531Q1630 547 1655 547H1660H1665Q1679 547 1686 540T1699 519T1726 475T1782 411Q1890 303 2035 271Q2036 271 2039 270T2044 269T2048 268T2052 266T2055 264T2058 260T2059 256T2060 250Q2060 242 2056 238T2039 231T2011 225T1968 211T1910 185Q1773 112 1695 -24Q1686 -40 1682 -43T1665 -46H1660Q1629 -46 1629 -31Q1629 -24 1637 -10Q1670 50 1713 99L1721 108H1392L1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393\",10236:\"65 426Q74 448 95 448Q112 448 125 426V281H130L132 280H134Q162 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H135Q133 220 130 220H125V76Q115 54 95 54Q73 54 65 76V426\",10744:\"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210\",10799:\"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500\",10815:\"39 655Q39 675 43 680T69 686Q110 684 225 684Q267 684 303 684T360 685T385 686Q401 686 405 680T409 651Q409 632 403 628T367 624H348H301V62H598V624H551H532Q502 624 496 628T490 651Q490 673 494 679T514 686Q518 686 558 685T675 684T792 685T836 686Q852 686 856 680T860 651Q860 632 854 628T818 624H799H752V62H799H809Q846 62 853 59T860 36V31V21Q860 6 850 2Q846 0 450 0H156Q75 0 60 1T40 11V18Q39 26 39 31Q39 54 44 58T82 63Q84 63 90 63T100 62H147V624H100H90Q53 624 46 627T39 650V655\",10927:\"796 54Q796 40 788 32T767 24Q741 24 735 57Q729 107 705 148T646 216T563 264T465 297T356 316T245 326T136 330H134Q96 330 96 360Q96 391 134 391H136Q193 392 239 394T347 403T457 421T556 453T643 502T703 571T735 664Q741 696 763 696Q781 696 789 686T797 667Q797 651 792 624T758 545T682 456Q605 396 481 365L462 360Q483 357 526 344T633 296T733 215Q767 173 781 128T796 54ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119\",10928:\"127 24Q115 24 106 32T97 55Q97 95 124 156T211 265Q288 325 412 356L431 361Q410 363 367 376T259 425T160 506Q127 546 112 594T96 667Q96 679 104 688T126 697Q152 697 158 664Q164 614 188 573T247 505T331 456T429 424T539 405T649 395T758 391Q797 391 797 360Q797 330 761 330H758Q701 329 655 327T547 318T437 300T337 268T251 219T190 150T158 57Q151 24 127 24ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119\",12296:\"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243\",12297:\"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8279:\"\\u2032\\u2032\\u2032\\u2032\",8602:\"\\u2190\\u0338\",8603:\"\\u2192\\u0338\",8622:\"\\u2194\\u0338\",8653:\"\\u21d0\\u0338\",8654:\"\\u21d4\\u0338\",8655:\"\\u21d2\\u0338\",8708:\"\\u2203\\u0338\",8716:\"\\u220b\\u0338\",8740:\"\\u2223\\u0338\",8742:\"\\u2225\\u0338\",8769:\"\\u223c\\u0338\",8772:\"\\u2243\\u0338\",8775:\"\\u2245\\u0338\",8777:\"\\u2248\\u0338\",8802:\"\\u2261\\u0338\",8813:\"\\u224d\\u0338\",8814:\"<\\u0338\",8815:\">\\u0338\",8816:\"\\u2264\\u0338\",8817:\"\\u2265\\u0338\",8832:\"\\u227a\\u0338\",8833:\"\\u227b\\u0338\",8836:\"\\u2282\\u0338\",8837:\"\\u2283\\u0338\",8840:\"\\u2286\\u0338\",8841:\"\\u2287\\u0338\",8876:\"\\u22a2\\u0338\",8877:\"\\u22a8\\u0338\",8930:\"\\u2291\\u0338\",8931:\"\\u2292\\u0338\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.bold=void 0,e.bold={33:[.705,0,.35],34:[.694,-.329,.603],35:[.694,.193,.958],36:[.75,.056,.575],37:[.75,.056,.958],38:[.705,.011,.894],39:[.694,-.329,.319],40:[.75,.249,.447],41:[.75,.249,.447],42:[.75,-.306,.575],43:[.633,.131,.894],44:[.171,.194,.319],45:[.278,-.166,.383],46:[.171,0,.319],47:[.75,.25,.575],58:[.444,0,.319],59:[.444,.194,.319],60:[.587,.085,.894],61:[.393,-.109,.894],62:[.587,.085,.894],63:[.7,0,.543],64:[.699,.006,.894],91:[.75,.25,.319],92:[.75,.25,.575],93:[.75,.25,.319],94:[.694,-.52,.575],95:[-.01,.061,.575],96:[.706,-.503,.575],123:[.75,.25,.575],124:[.75,.249,.319],125:[.75,.25,.575],126:[.344,-.202,.575],168:[.695,-.535,.575],172:[.371,-.061,.767],175:[.607,-.54,.575],176:[.702,-.536,.575],177:[.728,.035,.894],180:[.706,-.503,.575],183:[.336,-.166,.319],215:[.53,.028,.894],247:[.597,.096,.894],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.563,-.033,.344],710:[.694,-.52,.575],711:[.66,-.515,.575],713:[.607,-.54,.575],714:[.706,-.503,.575],715:[.706,-.503,.575],728:[.694,-.5,.575],729:[.695,-.525,.575],730:[.702,-.536,.575],732:[.694,-.552,.575],768:[.706,-.503,0],769:[.706,-.503,0],770:[.694,-.52,0],771:[.694,-.552,0],772:[.607,-.54,0],774:[.694,-.5,0],775:[.695,-.525,0],776:[.695,-.535,0],778:[.702,-.536,0],779:[.714,-.511,0],780:[.66,-.515,0],824:[.711,.21,0],8194:[0,0,.5],8195:[0,0,.999],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.083],8211:[.3,-.249,.575],8212:[.3,-.249,1.15],8213:[.3,-.249,1.15],8214:[.75,.248,.575],8215:[-.01,.061,.575],8216:[.694,-.329,.319],8217:[.694,-.329,.319],8220:[.694,-.329,.603],8221:[.694,-.329,.603],8224:[.702,.211,.511],8225:[.702,.202,.511],8226:[.474,-.028,.575],8230:[.171,0,1.295],8242:[.563,-.033,.344],8243:[.563,0,.688],8244:[.563,0,1.032],8254:[.607,-.54,.575],8260:[.75,.25,.575],8279:[.563,0,1.376],8407:[.723,-.513,.575],8463:[.694,.008,.668,{sk:-.0319}],8467:[.702,.019,.474,{sk:.128}],8472:[.461,.21,.74],8501:[.694,0,.703],8592:[.518,.017,1.15],8593:[.694,.193,.575],8594:[.518,.017,1.15],8595:[.694,.194,.575],8596:[.518,.017,1.15],8597:[.767,.267,.575],8598:[.724,.194,1.15],8599:[.724,.193,1.15],8600:[.694,.224,1.15],8601:[.694,.224,1.15],8602:[.711,.21,1.15],8603:[.711,.21,1.15],8614:[.518,.017,1.15],8617:[.518,.017,1.282],8618:[.518,.017,1.282],8622:[.711,.21,1.15],8636:[.518,-.22,1.15],8637:[.281,.017,1.15],8640:[.518,-.22,1.15],8641:[.281,.017,1.15],8652:[.718,.017,1.15],8653:[.711,.21,1.15],8654:[.711,.21,1.15],8655:[.711,.21,1.15],8656:[.547,.046,1.15],8657:[.694,.193,.703],8658:[.547,.046,1.15],8659:[.694,.194,.703],8660:[.547,.046,1.15],8661:[.767,.267,.703],8704:[.694,.016,.639],8707:[.694,0,.639],8708:[.711,.21,.639],8709:[.767,.073,.575],8710:[.698,0,.958],8712:[.587,.086,.767],8713:[.711,.21,.767],8715:[.587,.086,.767],8716:[.711,.21,.767],8722:[.281,-.221,.894],8723:[.537,.227,.894],8725:[.75,.25,.575],8726:[.75,.25,.575],8727:[.472,-.028,.575],8728:[.474,-.028,.575],8729:[.474,-.028,.575],8730:[.82,.18,.958,{ic:.03}],8733:[.451,.008,.894],8734:[.452,.008,1.15],8736:[.714,0,.722],8739:[.75,.249,.319],8740:[.75,.249,.319],8741:[.75,.248,.575],8742:[.75,.248,.575],8743:[.604,.017,.767],8744:[.604,.016,.767],8745:[.603,.016,.767],8746:[.604,.016,.767],8747:[.711,.211,.569,{ic:.063}],8764:[.391,-.109,.894],8768:[.583,.082,.319],8769:[.711,.21,.894],8771:[.502,0,.894],8772:[.711,.21,.894],8773:[.638,.027,.894],8775:[.711,.21,.894],8776:[.524,-.032,.894],8777:[.711,.21,.894],8781:[.533,.032,.894],8784:[.721,-.109,.894],8800:[.711,.21,.894],8801:[.505,0,.894],8802:[.711,.21,.894],8804:[.697,.199,.894],8805:[.697,.199,.894],8810:[.617,.116,1.15],8811:[.618,.116,1.15],8813:[.711,.21,.894],8814:[.711,.21,.894],8815:[.711,.21,.894],8816:[.711,.21,.894],8817:[.711,.21,.894],8826:[.585,.086,.894],8827:[.586,.086,.894],8832:[.711,.21,.894],8833:[.711,.21,.894],8834:[.587,.085,.894],8835:[.587,.086,.894],8836:[.711,.21,.894],8837:[.711,.21,.894],8838:[.697,.199,.894],8839:[.697,.199,.894],8840:[.711,.21,.894],8841:[.711,.21,.894],8846:[.604,.016,.767],8849:[.697,.199,.894],8850:[.697,.199,.894],8851:[.604,0,.767],8852:[.604,0,.767],8853:[.632,.132,.894],8854:[.632,.132,.894],8855:[.632,.132,.894],8856:[.632,.132,.894],8857:[.632,.132,.894],8866:[.693,0,.703],8867:[.693,0,.703],8868:[.694,0,.894],8869:[.693,0,.894],8872:[.75,.249,.974],8876:[.711,.21,.703],8877:[.75,.249,.974],8900:[.523,.021,.575],8901:[.336,-.166,.319],8902:[.502,0,.575],8904:[.54,.039,1],8930:[.711,.21,.894],8931:[.711,.21,.894],8942:[.951,.029,.319],8943:[.336,-.166,1.295],8945:[.871,-.101,1.323],8968:[.75,.248,.511],8969:[.75,.248,.511],8970:[.749,.248,.511],8971:[.749,.248,.511],8994:[.405,-.108,1.15],8995:[.392,-.126,1.15],9001:[.75,.249,.447],9002:[.75,.249,.447],9651:[.711,0,1.022],9653:[.711,0,1.022],9657:[.54,.039,.575],9661:[.5,.21,1.022],9663:[.5,.21,1.022],9667:[.539,.038,.575],9711:[.711,.211,1.15],9824:[.719,.129,.894],9825:[.711,.024,.894],9826:[.719,.154,.894],9827:[.719,.129,.894],9837:[.75,.017,.447],9838:[.741,.223,.447],9839:[.724,.224,.447],10072:[.75,.249,.319],10216:[.75,.249,.447],10217:[.75,.249,.447],10229:[.518,.017,1.805],10230:[.518,.017,1.833],10231:[.518,.017,2.126],10232:[.547,.046,1.868],10233:[.547,.046,1.87],10234:[.547,.046,2.126],10236:[.518,.017,1.833],10744:[.711,.21,.894],10799:[.53,.028,.894],10815:[.686,0,.9],10927:[.696,.199,.894],10928:[.697,.199,.894],12296:[.75,.249,.447],12297:[.75,.249,.447]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.doubleStruck=void 0,e.doubleStruck={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.frakturBold=void 0;var r=Q(6),T=Q(226);e.frakturBold=r.AddPaths(T.frakturBold,{33:\"121 621Q121 657 132 673T177 689Q223 689 223 644V635Q223 604 222 595Q221 590 210 490T187 292T175 190V186L166 185L156 184Q156 185 139 393T121 621ZM107 47Q107 70 127 87T174 104Q201 104 221 89T241 48Q241 24 222 6T174 -12Q147 -12 127 6T107 47\",34:\"53 695Q74 695 90 679V622L65 433L52 432H39L27 516Q10 626 10 655Q10 680 26 688Q33 693 39 693Q49 695 53 695ZM151 668Q151 691 191 691Q217 691 224 685T231 661V652Q230 634 219 531L207 433L195 432Q183 432 183 433L168 541Q151 664 151 668\",38:\"290 -14Q186 -14 115 41T44 185Q44 222 54 249T88 300T131 336T189 371Q216 387 216 388Q185 459 185 510Q185 563 206 601T263 659T334 687T405 696Q476 696 503 668T531 603Q531 565 513 536T450 476Q423 459 370 432L334 413L354 384Q474 212 560 139L563 137Q611 185 611 250Q611 295 577 329Q549 356 496 357Q439 357 433 354Q432 354 432 379V403L437 402Q443 402 479 401T557 400Q653 400 735 403T831 407H836Q833 352 833 351L821 352Q809 352 792 352T756 352T720 353T696 354Q680 354 680 353L681 346Q682 339 683 327T685 306Q685 283 681 260T669 218T653 182T635 152T619 129T606 114L602 109Q604 107 618 99T659 81T707 71Q742 71 767 99T804 155L815 183Q815 184 821 183T833 180T839 177Q837 169 834 156T816 110T782 52T727 5T648 -16Q569 -16 499 35H498Q496 35 466 23T387 -1T290 -14ZM418 592Q418 617 398 639T352 661T302 642T278 574Q278 545 288 514T306 465T319 444Q342 456 353 463T382 488T409 529T418 584V592ZM159 239Q159 158 222 98T364 38Q386 38 447 57L469 63L434 98Q349 185 286 275Q258 316 238 345Q233 353 232 353Q159 316 159 239\",39:\"80 645T80 662T93 687T123 695Q158 695 158 659Q158 649 157 643L123 437Q123 436 114 436H104Q104 442 92 538Q80 645 80 662\",40:\"347 719Q325 708 311 698T272 656T233 580T207 455T195 267Q195 30 247 -79Q261 -110 291 -136Q320 -163 347 -172V-179Q347 -186 344 -186Q338 -186 328 -184T287 -165T230 -123Q134 -25 134 271Q134 417 158 514T226 662T335 734L346 737Q347 737 347 728V719\",41:\"264 262Q264 366 253 446T226 572T186 649T145 692T105 714V725Q105 735 107 735Q108 734 121 731T154 719T196 692T242 641T284 560T314 437T326 268Q326 112 299 7Q279 -78 239 -124T116 -185L105 -187V-179L106 -171L109 -169Q130 -161 138 -158T165 -146T190 -127T210 -101T229 -64T243 -12T255 58T261 148T264 262\",42:\"40 516L62 529Q85 542 110 556T140 574L126 582Q112 591 104 595T80 607T40 629Q53 642 57 645L65 652L78 642Q106 620 132 603L152 589V595Q152 630 149 681V692H179V689Q178 681 174 638T171 593Q173 593 240 639L258 652Q260 652 267 643L276 633L260 625Q190 587 175 576Q173 575 180 570Q183 569 186 567Q213 549 256 527L277 515L256 495Q246 501 228 515T194 539T170 554V543Q170 486 178 449H148V456Q152 492 152 550L151 562Q150 562 102 528L53 495Q40 514 40 516\",43:\"422 584L471 598Q472 598 472 440V282H837Q833 273 829 263L821 244L647 243H472V-63L448 -73L423 -82Q422 -82 422 81V243H239Q56 243 56 244Q60 253 65 263L73 282H422V584\",44:\"118 61Q118 80 135 93T169 107Q190 107 221 65T253 -23Q253 -39 251 -49T237 -80T198 -133Q148 -191 144 -191Q142 -191 137 -182T132 -172Q143 -161 160 -131T183 -83Q185 -77 185 -62Q185 -54 184 -48T182 -38T177 -28T171 -19T162 -8T150 6Q130 28 124 38T118 61\",45:\"54 236L73 275H453Q833 275 833 274Q830 265 825 255L818 236H54\",46:\"103 23T103 44T120 83T170 102Q200 102 218 84T237 44Q237 20 216 3T168 -15Q138 -15 121 4\",47:\"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270\",48:\"238 -12Q162 -12 102 42T42 185Q42 303 130 393Q163 425 208 452T284 490L313 501Q323 499 339 495T395 472T464 426Q533 357 533 273Q533 201 483 133T364 27T238 -12ZM428 208Q428 255 402 297T342 365T280 404T241 419Q214 419 178 374T142 259Q142 206 168 164T225 99Q259 74 310 74Q326 74 337 75T366 82T396 103T417 141Q428 171 428 208\",49:\"95 481Q102 481 217 485T383 489Q384 489 384 485Q367 397 367 165Q367 58 369 54Q374 46 380 44T410 42H466H546V40Q547 38 547 19L548 0H54V23Q54 29 54 34T54 44L55 47Q79 47 134 46T202 45Q226 45 234 52Q240 57 241 64T245 105Q254 236 254 320V347Q254 369 252 382T240 409T211 431L97 450L96 465Q95 480 95 481\",50:\"307 335Q307 374 283 397T224 421Q187 421 112 387Q105 384 100 382T95 381Q90 387 86 394L77 407L86 413Q219 491 298 491Q370 491 399 460T428 388Q428 373 424 358T409 326T391 297T363 264T335 235T301 202T269 171L199 104Q194 99 205 97Q209 96 214 96Q527 105 544 105Q553 107 563 102Q563 100 557 79T545 34T537 2H377Q338 2 247 2T130 4H44V26L104 77Q185 145 212 172T267 235Q307 291 307 335\",51:\"102 402L108 408Q115 413 122 418T141 431T165 447T194 461T227 474T263 483T302 487H307Q413 487 452 420Q465 400 465 371Q465 334 445 303T396 253T347 225T317 213Q314 213 314 211Q316 209 316 205Q317 201 320 201Q337 201 359 198T411 184T465 156T506 109T523 39Q523 -62 436 -127T229 -193Q179 -193 130 -178T56 -150T31 -133Q31 -132 41 -122L52 -112L63 -117Q128 -148 201 -148Q282 -148 331 -104T381 20Q381 71 363 100T304 145Q243 166 149 166H137V204H146Q179 204 211 210T275 229T326 268T346 329Q346 372 314 401Q292 423 245 423Q188 423 125 383L102 402\",52:\"346 -196Q344 -196 335 -187L336 -148Q337 -127 337 -55V0H13V29L187 253Q362 477 362 479L368 480Q375 481 387 483T411 487T434 491T452 494L459 495Q460 495 470 482V453Q470 389 466 230T461 62Q461 61 513 61T565 60L555 29L546 -1H461V-15Q461 -48 463 -100T465 -154L457 -157Q449 -160 434 -165T405 -175Q347 -196 346 -196ZM339 265V341Q339 362 335 362Q327 362 219 217T110 65V61H337V117Q338 133 338 187T339 265\",53:\"232 192Q176 192 122 152L95 162V481H306Q516 481 516 479Q514 477 501 433L486 389L319 388H152V386V382Q152 379 152 374T151 365Q147 329 146 260V218H149Q211 242 284 242Q353 242 402 224T474 176T508 117T518 55Q518 -62 432 -126T220 -190Q184 -190 151 -185T96 -172T57 -157T31 -145T20 -139T19 -138Q19 -136 27 -125L35 -112L51 -120Q114 -152 174 -152Q257 -152 314 -100T371 46Q371 107 340 149T232 192\",54:\"48 251Q48 330 76 403T150 529T253 623T370 683T485 704Q494 704 520 701T547 695Q547 692 542 659T536 625Q531 624 524 624L512 623L502 628Q489 635 468 640Q452 645 423 645Q403 645 379 640T320 617T255 568T201 481T171 348Q170 341 170 330V325L183 333Q275 385 357 385H361Q464 385 514 312Q546 267 546 217Q546 127 457 58T262 -12Q225 -12 189 3T120 49T68 132T48 251ZM448 165Q448 228 406 274T289 320Q264 320 236 312T190 295T173 284Q173 266 176 241T189 178T214 112T259 61T326 39Q372 39 410 75T448 165\",55:\"57 376L87 479H591V455L584 446Q544 399 491 328T349 117T185 -169L171 -196H159Q152 -197 102 -197Q58 -197 58 -196T56 -185L54 -175L299 158L443 359Q446 367 444 370H254L71 365L57 376\",56:\"88 533Q88 573 120 610T194 668T268 701T307 714Q324 714 352 711T422 695T486 659Q518 625 518 585Q518 536 479 489T384 406L371 398L385 390Q387 389 400 382T420 370T442 356T466 339T489 319T510 295T526 269T538 238T542 204Q542 125 463 60T256 -5Q145 -5 92 52Q45 97 45 165Q45 204 64 237T109 290T163 324T209 345T228 353L214 364Q199 375 179 392T138 431T103 480T88 533ZM405 557Q405 568 402 581T387 612T350 644T286 663Q283 663 280 663T274 664H272Q256 664 228 636T199 572Q199 547 238 507Q268 475 320 437L334 427Q345 433 358 443T388 483T405 549V557ZM304 42Q366 42 398 76T431 155Q431 178 420 200T396 238T359 270T321 296T283 318L263 328Q262 328 230 312Q190 290 175 266T160 198Q160 132 202 87T304 42\",57:\"549 220Q549 23 429 -82T105 -195H84V-189Q84 -179 85 -174V-164H93Q184 -156 238 -132T334 -56Q361 -23 376 16T394 78L397 100L363 88Q329 75 291 61T244 45Q237 44 218 44Q154 44 94 97Q29 152 29 240Q29 350 108 404Q145 429 257 480Q270 487 279 487Q403 487 470 421Q549 347 549 220ZM408 217Q408 276 390 320T346 385T297 415T259 424Q218 424 185 393T151 286Q151 216 213 154Q252 115 321 115Q368 115 388 134T408 217\",58:\"57 398Q57 419 72 438T117 457Q154 457 174 439T194 398Q194 379 176 361T119 343Q85 343 71 362T57 398ZM62 19T62 43T77 85T115 104Q153 104 175 86T197 42Q197 14 171 1T119 -12Q96 -12 79 3\",59:\"56 399Q56 424 73 440T104 456Q114 458 120 458Q149 458 170 440T192 399Q192 380 174 362T120 344Q85 344 71 362T56 399ZM78 53Q78 67 84 76T90 86Q90 88 98 92T116 98Q117 98 121 98T128 99Q152 97 181 58T211 -24Q211 -77 128 -165Q124 -170 121 -173T116 -178T113 -181T110 -185T106 -190L97 -184L88 -177L95 -168Q143 -104 143 -65Q143 -51 137 -40T113 -7T81 35Q78 41 78 53\",61:\"559 342L549 304H22L27 319Q29 328 30 333T33 343H296Q559 343 559 342ZM559 206L549 168H22L27 183Q29 192 30 197T33 207H296Q559 207 559 206\",63:\"121 590Q121 575 128 562T144 542T152 533T115 512L78 491Q55 499 47 516Q40 530 40 553Q40 601 77 632Q155 697 257 697H268Q316 697 355 679Q422 646 422 576Q422 518 388 476Q383 468 376 461T358 444T340 428T316 410T290 390L230 344Q180 307 180 275Q180 261 187 248T202 227L209 219Q209 215 176 193L142 170Q114 177 100 194T84 226V239Q84 259 93 276T113 302T150 331T192 362Q203 370 219 382T247 403T267 422Q312 471 312 546Q312 593 282 623T207 653Q170 653 146 636T121 590ZM95 23T95 49T117 94T173 113Q204 113 223 96T242 54Q242 27 221 7T167 -14Q136 -14 116 4\",91:\"226 711T225 711T86 699V-93H89Q94 -93 157 -96T223 -100H226V-119H223Q134 -119 42 -130H36V740H42Q61 738 156 736H226V723Q226 711 225 711\",93:\"69 732Q116 733 146 734T184 736T197 737T206 738H208V-132Q190 -129 160 -127T99 -125T66 -124H14V-103H19Q20 -103 84 -98T152 -92H158V699H151Q148 700 85 703T18 708H14V732H69\",94:\"1 463T1 464T148 599T296 734Q584 486 584 485L561 472Q538 459 537 461Q296 672 293 672L161 563Q133 539 97 509T44 466L28 452Q27 452 14 457\",8216:\"187 456Q187 437 169 424T138 411Q114 411 84 454T53 538Q53 565 75 597Q109 648 155 697L166 708L181 694L173 681Q124 610 124 577Q124 549 155 511T187 456\",8217:\"125 524Q125 545 92 588T58 651Q58 661 61 667Q65 674 80 683T107 692Q131 692 162 645T193 564Q193 540 176 509T144 460T87 394L78 400L68 406L79 421Q125 489 125 524\",8260:\"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270\",58113:\"388 427Q320 485 242 524T128 563H116Q95 563 87 561L77 559Q72 563 69 566T65 570T65 572L75 576Q106 592 154 611T212 630Q230 630 262 622T358 581T492 498L508 486Q512 463 512 396Q512 246 469 112L465 102Q453 94 341 25Q252 -27 247 -27Q243 -27 174 24T97 84Q90 100 90 214Q90 285 98 345Q100 360 102 363T118 377Q175 422 262 465Q264 463 270 460L277 456Q277 455 267 447T244 428T228 414Q206 382 206 269Q206 187 214 164T259 110Q286 89 342 58Q391 131 391 313Q391 355 388 412V427\",58114:\"39 362L37 366L38 368L82 405H133V474Q135 563 143 589T198 658Q210 669 224 676T247 687L255 690H253Q241 690 253 692Q254 692 256 692T260 693Q263 693 262 691L261 690Q300 690 361 662L373 656L388 666Q404 675 405 675L406 674Q406 672 406 670T406 664L408 655L301 555Q300 555 287 564T254 584T221 597Q190 597 176 583T161 550Q161 525 184 495T232 440T261 405H387V399Q377 389 364 379L340 359H258V315Q258 52 228 -18L172 -120L121 -211H109Q102 -212 96 -212L109 -174Q131 -108 135 -80T139 53V76V157V362H39\",58115:\"41 352Q40 354 39 355T37 358L36 360H37Q48 370 61 380L84 400H108Q131 400 131 402Q121 424 104 501L100 519Q109 560 134 602T196 664Q230 681 271 681Q291 681 316 669T358 644L373 631Q373 630 304 553Q299 548 294 547Q292 547 290 546H287Q286 546 274 562T243 593T205 609Q180 609 165 596T150 562Q150 526 191 488L217 462Q248 431 253 405V400H381L384 394L349 352H251V332Q249 271 231 17L227 -37L120 -217L109 -218Q103 -219 97 -219Q97 -218 101 -206T110 -177T118 -151Q126 -129 128 -120T136 -46T141 127Q141 250 136 340V352H41\",58116:\"107 370Q127 384 172 409T255 454T294 473L306 468Q356 446 425 431L435 429L524 468Q528 465 531 461Q499 395 499 271V263Q499 146 509 71T519 -8Q519 -28 512 -45Q510 -50 435 -123T355 -197Q296 -212 257 -212Q209 -212 164 -196T98 -167T67 -143L133 -44H144Q167 -88 216 -111T320 -134Q371 -134 390 -118T410 -69Q410 -52 404 -12T392 60T385 92L193 -29L158 5Q124 39 110 51L96 63V71Q94 79 94 121Q94 130 94 148T93 174Q93 230 96 275T103 344T107 370ZM221 397Q200 334 200 254Q200 170 210 140Q216 126 234 109T268 81L283 71L383 119V127Q384 132 384 241L385 347L368 349Q325 357 290 369T240 389T221 397\",58117:\"103 453Q103 631 95 661Q95 663 102 667T110 672L114 664Q117 655 123 641T131 621L140 597L154 606Q208 641 275 673L297 684Q300 683 302 682T307 679T310 678L314 676Q283 658 256 625Q238 601 231 579T223 515L224 512L282 548Q339 583 341 583T365 548T386 509Q326 443 318 443L316 446Q314 448 311 452T304 460T294 470T283 480T272 488T260 494T248 497Q231 497 223 474Q220 468 218 440T215 407V401H345L309 360H218V314Q218 181 221 139V129L253 108Q306 73 310 73Q315 73 343 83L373 92L374 87Q375 82 375 79T375 74T360 65T308 36T229 -13L208 -27L192 -13Q149 24 90 61Q89 61 89 62L90 68Q91 73 93 87T97 125T100 191T103 291V360H33V366L34 371L85 405H94L103 404V453\",58120:\"602 575Q505 508 505 489Q505 488 505 482T506 463T507 432Q507 314 456 237L449 226L434 216Q420 208 325 143L316 137Q453 82 488 82Q527 82 585 127L596 136Q597 136 599 126L602 115Q578 85 511 27T428 -31Q400 -31 308 10T170 51Q143 51 123 43T92 24T54 -15L34 6L41 14Q65 41 170 129L188 144L204 145Q254 147 293 164T350 208Q378 249 378 344Q378 422 362 478T320 563T268 605T213 618Q177 618 156 600T134 561Q134 539 162 508T217 446T245 394Q245 368 213 337T85 250L62 262Q73 269 86 279T116 308T133 338T108 378T57 439T32 499Q32 556 117 617T291 679Q350 679 393 658Q415 647 433 631T462 600T480 572T490 550T494 541T499 544T516 556T547 578T603 613T689 662L720 679L730 670Q742 659 756 649T785 629T810 615T836 601T855 590Q855 587 860 536T870 419T875 312Q875 114 800 -25Q794 -35 781 -47Q584 -220 398 -220Q322 -220 278 -190Q253 -173 239 -155L244 -150Q248 -145 255 -138T271 -120T290 -100T310 -80T328 -63T341 -51T349 -46Q350 -46 351 -46T354 -47Q357 -47 357 -52Q359 -68 364 -83T383 -118T424 -151T491 -166Q559 -166 613 -129Q629 -118 641 -108T674 -68T710 1T735 107T746 260Q746 433 727 507Q727 512 685 535T615 570L602 575\",58121:\"351 571Q317 571 247 563T171 555Q153 555 133 563T107 584Q94 605 98 609Q101 615 138 658T190 717H207Q204 710 204 699Q204 673 231 666Q235 665 264 665Q296 665 345 667T426 669Q474 669 501 660T545 626Q553 612 553 594Q553 531 498 474T379 384Q371 379 371 378Q371 376 390 376H411H434Q520 376 602 318Q621 303 627 288T633 234Q633 59 540 -34Q465 -109 348 -130Q308 -137 235 -137Q159 -136 143 -129Q132 -125 132 -118V-53Q118 -24 90 -24Q69 -24 37 -39L27 -44L25 -42Q23 -39 21 -35T17 -30Q17 -28 40 -14T103 19T177 44Q183 45 205 45Q219 45 227 44T245 37T259 20T264 -12Q264 -33 262 -48T259 -80Q259 -93 260 -95Q271 -110 305 -110Q343 -110 383 -86T443 -33Q491 34 491 154Q491 223 467 249Q428 288 334 288H322Q288 288 237 276L222 273L206 286L262 367Q279 369 303 377T358 403T410 452T431 524Q431 531 431 533T427 545T416 558T392 566T351 571\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.frakturBold=void 0,e.frakturBold={33:[.689,.012,.349],34:[.695,-.432,.254],38:[.696,.016,.871],39:[.695,-.436,.25],40:[.737,.186,.459],41:[.735,.187,.459],42:[.692,-.449,.328],43:[.598,.082,.893],44:[.107,.191,.328],45:[.275,-.236,.893],46:[.102,.015,.328],47:[.721,.182,.593],48:[.501,.012,.593],49:[.489,0,.593],50:[.491,0,.593],51:[.487,.193,.593],52:[.495,.196,.593],53:[.481,.19,.593],54:[.704,.012,.593],55:[.479,.197,.593],56:[.714,.005,.593],57:[.487,.195,.593],58:[.457,.012,.255],59:[.458,.19,.255],61:[.343,-.168,.582],63:[.697,.014,.428],91:[.74,.13,.257],93:[.738,.132,.257],94:[.734,-.452,.59],8216:[.708,-.411,.254],8217:[.692,-.394,.254],8260:[.721,.182,.593],58113:[.63,.027,.587],58114:[.693,.212,.394,{ic:.014}],58115:[.681,.219,.387],58116:[.473,.212,.593],58117:[.684,.027,.393],58120:[.679,.22,.981],58121:[.717,.137,.727]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fraktur=void 0;var r=Q(6),T=Q(228);e.fraktur=r.AddPaths(T.fraktur,{33:\"102 582T102 620T112 673T152 689Q190 689 190 638Q190 605 167 373L148 187L133 184Q102 582 102 620ZM91 24T91 48T107 88T148 104Q171 104 187 87T204 48Q204 22 188 5T149 -12Q124 -12 108 6\",34:\"33 436Q8 603 8 648Q8 663 9 671T19 687T43 695Q63 695 74 681Q76 678 76 650V623L66 532Q57 443 55 436V432H33V436ZM128 666Q128 691 162 691T196 668Q196 634 186 531Q176 441 176 432H166Q155 432 155 434L142 545Q135 603 130 647Q128 664 128 666\",38:\"181 520Q181 604 231 650T328 697L330 698Q333 698 335 698Q336 698 340 698T346 697Q390 697 418 670T446 604Q446 554 414 511Q384 467 300 417L283 406Q281 405 296 374T347 286T425 182Q466 135 469 135Q470 135 473 140T480 152T486 165Q509 210 509 263Q509 282 507 292Q498 317 488 332T465 352T443 359T418 361Q388 361 357 358L346 356L347 374Q347 394 348 396V399H355Q366 396 535 396Q663 396 689 398L703 399Q703 398 702 375T700 351L688 353Q655 356 601 357Q553 357 553 355Q562 332 562 294Q562 280 561 267T555 241T548 218T539 195T529 175T518 156T508 141T497 126L489 115L496 107Q549 54 596 54Q623 54 644 67T677 101T697 140T708 174L710 187Q710 188 710 188L711 190Q714 190 723 187T733 183Q733 179 732 172T726 145T714 107T694 66T665 27T623 0T569 -11Q500 -11 443 41L434 49L425 42Q348 -9 275 -9Q251 -9 233 -6Q187 -1 152 18T98 60T67 111T52 159T49 195Q49 231 60 261T96 315T141 354T197 390L208 397Q181 459 181 520ZM374 577Q374 607 356 629T311 651Q289 651 271 636Q242 614 242 559Q242 533 249 502T262 453T270 435T279 440T298 453T314 464Q374 503 374 577ZM127 217Q127 145 173 89T291 32Q318 32 347 42T393 63T409 75Q384 100 325 184T227 351Q223 366 220 366Q215 366 178 338Q127 298 127 217\",39:\"69 666Q69 680 79 687T104 695Q112 695 117 694T128 684T134 659L104 438Q104 436 96 436T88 438Q88 447 79 540T69 655V666\",40:\"293 737V719Q291 718 285 714T276 708T268 702T258 695T250 686T241 674Q164 570 164 282Q164 -37 230 -119Q273 -171 292 -171Q293 -171 293 -179V-186H289Q270 -180 259 -175Q175 -132 145 -23T114 275Q114 491 157 598T293 737\",41:\"223 259Q223 386 212 474T178 609T136 677T89 714V735Q121 726 139 713Q276 622 276 273Q276 98 246 -23Q225 -106 189 -139T89 -187V-170L101 -165Q148 -146 172 -110T210 13T223 259\",42:\"118 573Q118 575 76 602L34 629L50 647L55 652L66 642Q76 633 91 620T117 598L128 590Q128 663 125 687V692H151V689V687Q151 685 151 683T150 678T150 672Q145 628 144 605V592L219 652L232 634Q232 632 220 624Q195 610 155 582L146 575L158 567Q178 552 197 540T225 523T233 516Q233 515 226 506T217 495L152 549L143 555V530Q144 509 145 492T148 466T149 454Q149 449 142 449H125V462Q128 522 128 549V562L115 552Q88 531 59 506L45 495Q44 495 39 505T34 516L118 573\",43:\"357 584L399 598V282H709L702 263L696 243H399V-64L379 -73L358 -82Q357 -82 357 81V243H47L51 253Q52 256 54 263T58 272L62 282H357V584\",44:\"99 62Q99 82 114 94T144 107Q159 107 178 77T205 26Q213 5 213 -23Q213 -49 207 -65T181 -113Q128 -189 122 -191Q121 -191 116 -184T111 -174Q111 -173 122 -155T145 -111T156 -62Q156 -44 152 -34T127 4L104 37Q99 49 99 62\",45:\"46 236L62 274Q62 275 384 275H706L699 255L693 236H46\",46:\"87 43Q87 69 104 85T142 102Q164 102 182 86T200 44Q200 20 183 3T141 -15Q118 -15 103 2T87 43\",47:\"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270\",48:\"212 -13Q184 -13 156 -2T101 32T59 97T42 195Q42 311 132 396Q170 433 211 462T262 492Q272 492 301 477T366 434T429 360T456 258Q456 161 378 74T212 -13ZM381 209Q381 257 365 295T328 355T282 390T243 408T223 413Q220 413 204 403T167 376T137 341Q119 305 119 250Q119 168 159 114T263 59Q308 59 344 93T381 209\",49:\"123 459Q145 459 170 460T217 462T256 464T284 466L295 467Q296 467 296 467T297 468Q299 468 302 466T307 462L309 459Q307 454 304 424T299 341T297 235Q297 139 298 101T302 55T313 44Q316 43 367 43L460 46Q460 35 459 22V-1H450Q402 2 281 6Q222 6 171 4T91 1T56 -1L47 -2V43H121H170Q195 43 201 45T209 56Q212 69 212 214Q212 333 209 365T194 409Q183 417 161 423T121 430L104 432Q103 432 103 446V459H123\",50:\"104 384Q115 394 133 409T199 449T281 474Q321 474 351 447T385 378Q385 328 333 255T228 127T176 72Q176 67 183 65Q184 65 203 65T260 67T331 69L475 73L484 67Q484 64 472 33L460 1H60V17L107 61Q210 159 249 208Q309 283 309 331Q309 363 285 389T228 415Q212 415 184 403T134 379L114 367L104 384\",51:\"305 328Q305 372 279 396T214 421H211Q172 421 128 384L107 398L116 405Q151 437 191 455T251 473H260Q314 473 341 455T382 394Q384 386 384 367T382 338Q362 263 271 217L256 210L257 206L259 202Q260 202 272 201T296 198T324 192T355 179T384 157T410 123T427 75Q429 64 429 41Q429 -59 353 -120T183 -182L88 -164Q81 -162 69 -157T48 -147T39 -141Q39 -139 46 -127L53 -114L69 -122Q129 -149 171 -149Q218 -149 253 -131T305 -83T330 -26T338 29Q338 41 336 55T328 89T308 127T273 153Q228 171 162 171Q158 171 152 171T142 170H127V204H134Q232 214 275 257Q305 292 305 328\",52:\"299 -179Q306 -156 306 -48V0H11V7Q10 10 10 18Q10 23 154 236L298 449Q298 450 339 463L379 476Q385 473 384 470V466Q384 463 384 457T384 444T383 427T383 408Q381 328 381 248Q381 46 384 40H387Q422 40 460 44Q465 44 470 44T478 44L481 45Q481 43 478 24T473 1Q473 -1 464 -1Q462 -1 451 -1T430 0H387V-76L389 -156V-161L311 -191Q299 -181 299 -179ZM299 364H287L277 352Q234 297 186 224T112 104T79 43Q79 42 192 42H306V115Q306 300 299 359V364\",53:\"334 25Q334 99 296 134T207 169Q154 169 107 123L98 114L89 120L80 125V458H420Q420 456 409 418L397 379Q397 378 264 378H131Q130 377 128 376T125 374T124 371T122 368T122 363T121 356T121 345V279V190L130 186L140 190Q196 214 260 214Q311 214 348 197T404 153T431 99T440 42T433 -16T406 -76T356 -130T276 -169T163 -184H156Q110 -184 57 -163L47 -159L53 -147L58 -134Q61 -134 74 -139T110 -148T156 -153Q206 -153 243 -135T299 -87T326 -30T334 25\",54:\"45 240Q45 328 73 406T143 536T235 626T327 681T399 699Q400 699 404 699T411 700Q424 700 441 696T459 689Q459 671 451 637Q451 633 447 632L444 629L434 633Q413 640 384 640H377Q299 640 222 565Q182 531 156 463T129 315V306H136L149 315Q229 376 316 376H318Q393 376 432 326T471 213Q471 129 402 58T237 -13T93 59T45 240ZM391 172Q391 231 354 272T258 314Q230 314 200 302T154 279T133 262L134 249Q154 32 266 32Q315 32 353 64T391 172\",55:\"395 377L391 382H225Q59 382 59 383L74 423Q89 464 89 465Q90 468 94 468Q146 460 350 458H498V442L473 406Q241 75 125 -156L113 -181H40L37 -168L57 -140Q115 -58 199 70T339 287T395 377\",56:\"220 -10Q168 -10 131 6T75 50T48 103T40 157Q40 223 77 266Q103 295 156 328T225 375Q247 393 247 394L206 361Q205 361 193 368T164 391T131 426T102 474T90 531Q90 580 114 615Q146 660 238 698L254 705L262 704Q288 704 332 693T402 656Q434 620 434 568Q434 518 401 475T321 402L305 391L336 368Q339 366 353 356T372 343T389 330T406 316T420 301T434 283T445 265T454 244T458 222T461 195Q461 106 389 48T220 -10ZM350 545Q350 578 337 601T304 634T266 649T234 653L224 654L204 639Q196 634 191 629T182 621T176 614T173 609T170 603T168 597Q165 585 165 567Q165 497 261 424L273 415Q350 467 350 545ZM261 405L263 407Q262 407 261 405ZM258 403Q257 403 255 401L254 399L256 400Q258 402 258 403ZM252 398Q251 398 249 396L248 394L250 395Q252 397 252 398ZM245 36Q276 36 300 45T338 69T360 102T371 136T374 168Q374 211 341 255Q324 275 305 289T235 332Q231 330 215 321T193 307T173 292T153 271T138 247T127 216T123 177Q123 146 132 117T170 62T245 36\",57:\"353 93T352 93T320 79T251 49T201 34Q127 37 87 79Q28 138 28 234Q28 273 37 304T60 355T101 396T152 429T218 462L234 469H243Q348 461 395 417Q466 348 466 201Q466 72 397 -29T211 -163Q155 -179 91 -182H72V-154H80Q144 -154 202 -131T297 -60Q318 -31 333 7T352 68L357 92Q353 93 352 93ZM369 208Q369 240 362 272T339 339T290 394T214 415Q171 415 144 372T116 266Q116 193 154 144T238 95H249Q369 95 369 208\",58:\"50 377T50 400T64 440T99 457Q128 457 146 440T165 399Q165 375 146 359T102 342T64 359ZM53 19T53 43T66 86T103 105Q129 105 148 87T168 41Q168 17 147 3T102 -12Q80 -12 67 3\",59:\"47 399Q47 424 62 441T101 458T143 442T162 400T144 359T101 343Q78 343 63 360T47 399ZM76 86Q76 88 80 91T91 96T106 99Q119 99 131 86Q179 35 179 -25Q179 -64 146 -115T89 -189Q86 -187 83 -185T79 -182T76 -180T75 -177T77 -173T80 -168Q121 -108 121 -64Q121 -44 94 -5T66 52Q66 66 71 75T76 86\",61:\"725 366Q724 365 721 349T716 331V329H385Q54 329 54 331Q55 332 59 349T63 368H394Q725 368 725 366ZM725 169Q724 168 721 152T716 134V132H385Q54 132 54 134Q55 135 59 152T63 171H394Q725 171 725 169\",63:\"46 557Q46 613 103 653T227 693Q287 693 322 659T357 564Q357 517 326 469T259 390T191 326T160 272Q160 240 187 221Q193 217 193 216Q182 209 170 200L147 184Q127 192 113 209T98 250Q98 290 193 376Q287 454 287 542Q287 581 262 616T188 652Q143 652 126 631T108 588Q108 559 140 527L79 490Q46 515 46 557ZM108 47Q108 68 123 85T160 103Q179 103 198 90T217 46Q215 24 201 7T164 -11Q142 -11 125 6T108 47\",91:\"262 -119Q224 -120 191 -123T141 -128T118 -130Q117 -130 117 305V740H122Q141 737 219 736H278V723Q278 711 277 711L159 699V-93H162Q167 -93 220 -96T276 -100Q278 -100 278 -109V-119H262\",93:\"64 733Q89 733 110 734T143 737T158 738H160V-131H154Q101 -125 40 -124H-4V-103H1Q3 -102 57 -98T113 -92H118V700L64 703Q7 707 3 708H-4V732H21Q34 733 64 733\",94:\"0 464L250 734L262 722Q274 712 384 598L495 486Q483 478 467 467L456 459L248 672L154 580L23 452Q17 454 10 458T0 464\",8216:\"117 410Q97 410 71 455T45 539Q45 588 129 694L140 708Q142 708 153 694L147 682Q106 609 106 582V577V571Q106 548 132 511T158 455Q158 434 143 422T117 410\",8217:\"105 529Q105 546 77 588T49 651Q49 658 51 666Q53 672 67 682T92 692Q111 692 137 644T163 563Q163 534 143 497T99 428T74 395Q72 395 65 400T58 407Q105 476 105 523V529\",8260:\"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270\",58112:\"427 436Q427 434 427 425T429 398T430 362Q430 222 396 109L393 99L305 33Q218 -32 216 -32Q208 -29 142 22L91 68L78 81L77 94Q75 130 75 173Q75 245 87 347L135 385Q178 418 184 424L177 428Q174 429 170 431Q116 454 96 473T75 534Q79 608 154 683Q164 677 164 673Q164 670 157 662T144 637T137 598Q137 552 182 518T280 470T380 447T427 436ZM342 371L275 394L208 417Q203 417 192 399T168 334T156 229Q153 187 153 157Q153 141 156 135Q158 125 208 88T280 51Q306 51 326 120T346 297Q346 339 344 354T342 371\",58113:\"39 551L35 569L52 577Q72 586 98 595T140 610T158 616Q174 612 200 604T293 560T412 477Q414 475 417 472Q428 462 430 450T432 376Q432 223 401 124Q395 106 393 103T382 92Q351 68 281 20T206 -29Q201 -31 137 26L100 60L78 83L77 112Q76 132 76 170Q76 259 86 342L88 360L101 371Q116 386 163 422T215 459Q216 459 224 455T233 450L229 446Q225 442 218 434T203 419Q179 394 175 389T168 372Q156 334 156 262Q156 167 164 137Q168 125 196 102T252 62L278 45Q279 45 285 52T302 78T322 126T339 205T346 316Q346 367 344 389L343 406L326 423Q228 520 113 559L100 564L70 557L39 551\",58114:\"123 386L120 431Q116 476 116 511V520Q116 593 174 649Q207 680 236 680Q258 680 284 664T312 648Q318 648 327 656Q328 657 330 659Q337 664 337 661Q337 660 338 657Q338 652 339 648L268 566L260 574Q234 600 206 600Q182 600 164 585T145 541Q145 492 211 386L267 385H324L299 354H214V312Q214 86 193 -58L192 -69L116 -215H108Q92 -215 92 -212Q93 -211 100 -189T116 -135T128 -80Q134 -41 134 22Q134 54 130 185T125 349V354H29L59 385H91Q123 385 123 386\",58115:\"91 530Q91 564 116 600T164 656T194 678Q195 678 200 678T209 679Q268 679 316 639L293 593Q267 547 263 546H262Q260 546 256 553Q222 613 180 613Q160 613 146 599T132 564T170 474T210 388H318L296 356H206V322Q204 284 204 255Q202 221 202 161V99Q202 28 194 -22T160 -124Q148 -146 116 -199L101 -224L91 -220Q85 -218 84 -217T83 -215L101 -161Q116 -114 119 -73T122 108Q119 334 117 352V356H72L28 357L66 388H92Q118 388 118 389L109 433Q91 514 91 530\",58116:\"254 -150Q293 -150 328 -126T363 -54Q363 -38 352 29T339 98L250 34Q160 -30 159 -30L77 64V71Q74 95 74 174Q74 212 75 243T79 294T83 328T87 352T90 366L117 384Q206 446 238 464L250 471Q277 455 306 443T350 427L365 423Q367 423 405 443T443 465L449 455Q431 414 426 362T418 201Q418 135 420 121Q438 -4 438 -19Q438 -26 438 -31T434 -42T429 -51T420 -63T408 -77T391 -95T370 -119T346 -147T325 -170T309 -187T291 -200T274 -207T252 -213T225 -214Q175 -214 132 -196T70 -160L52 -143Q52 -138 90 -48Q90 -47 95 -47H101Q108 -81 146 -115T254 -150ZM341 136Q341 157 344 242T347 348V355L334 356Q299 359 262 367T203 383T179 391Q177 391 173 377T163 323T158 227Q158 164 161 128V121L174 106Q203 75 223 59L341 127V136\",58117:\"92 446Q92 603 82 664Q94 670 95 670L96 666Q98 661 101 651T108 633Q121 598 121 597L141 612Q247 686 250 686Q251 686 266 679Q261 674 243 659T213 632T190 597T173 546Q172 541 171 530T170 511T170 502Q171 502 222 542L273 582Q308 522 315 504L279 449L269 462Q231 506 215 506Q202 506 190 490Q164 458 164 395V390H279L266 373L254 355H167V306Q169 252 169 217Q170 195 170 147V117L200 92Q234 64 237 64Q243 64 277 81L311 99V75Q310 75 242 27L174 -20L156 -3Q88 60 81 60L79 62Q80 60 82 62Q87 67 87 290V355H57L26 356L73 390H92V446\",58118:\"117 531Q117 533 137 544T178 566L198 577Q200 577 204 575T208 572V570Q208 568 208 566T207 560Q197 496 197 397V392H321L295 353H199V260Q199 157 200 145V122L269 68Q271 67 274 67Q282 67 310 83T342 100Q343 100 345 92T346 83L211 -21L172 12Q117 59 117 63Q117 65 117 87T119 150T120 238V353H75L29 354L65 391H118V460Q117 498 117 531\",58119:\"337 91V78L324 71Q288 53 256 29T206 -8T180 -22Q174 -22 158 -9Q82 46 60 46H59L63 51Q67 56 73 68T85 96Q101 158 101 254Q101 300 95 330T83 370T66 394L53 388Q48 385 41 382T24 374Q22 376 20 378T16 381T13 383T10 385V386L119 475Q150 439 160 430L171 422V409Q173 377 173 300Q173 228 166 183T152 122T145 102Q207 81 242 58L337 104V111Q340 146 340 227Q340 320 339 351T338 408V423L422 469Q425 465 429 462L426 438Q413 354 413 251Q413 152 423 119Q426 110 435 96T452 82Q454 82 509 103Q514 98 514 89Q514 87 507 81T472 51T409 -7L395 -20Q393 -18 390 -17Q386 -14 382 -6Q380 -2 379 1Q369 24 361 40T348 62T341 73T338 84L337 91\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fraktur=void 0,e.fraktur={33:[.689,.012,.296],34:[.695,-.432,.215],38:[.698,.011,.738],39:[.695,-.436,.212],40:[.737,.186,.389],41:[.735,.187,.389],42:[.692,-.449,.278],43:[.598,.082,.756],44:[.107,.191,.278],45:[.275,-.236,.756],46:[.102,.015,.278],47:[.721,.182,.502],48:[.492,.013,.502],49:[.468,0,.502],50:[.474,0,.502],51:[.473,.182,.502],52:[.476,.191,.502],53:[.458,.184,.502],54:[.7,.013,.502],55:[.468,.181,.502],56:[.705,.01,.502],57:[.469,.182,.502],58:[.457,.012,.216],59:[.458,.189,.216],61:[.368,-.132,.756],63:[.693,.011,.362],91:[.74,.13,.278],93:[.738,.131,.278],94:[.734,-.452,.5],8216:[.708,-.41,.215],8217:[.692,-.395,.215],8260:[.721,.182,.502],58112:[.683,.032,.497],58113:[.616,.03,.498],58114:[.68,.215,.333],58115:[.679,.224,.329],58116:[.471,.214,.503],58117:[.686,.02,.333],58118:[.577,.021,.334,{ic:.013}],58119:[.475,.022,.501,{ic:.013}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.italic=void 0;var r=Q(6),T=Q(230);e.italic=r.AddPaths(T.italic,{33:\"330 716Q351 716 365 703T380 670V659L304 433Q230 207 227 204Q225 198 205 198Q184 198 184 207T220 439T260 669Q270 694 297 708Q300 709 304 710T311 713T316 714Q324 716 330 716ZM107 51Q110 83 133 102T179 121Q207 121 219 105T231 72Q231 45 209 23T156 0Q138 0 123 11T107 51\",34:\"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620\",35:\"281 327H228Q186 327 175 330T164 347Q164 359 176 365Q179 367 292 367H404L563 688Q569 694 578 694T593 686T597 670Q597 667 531 535L448 367H614L773 688Q779 694 787 694Q796 694 802 688T808 674V672L807 670Q807 667 732 517L658 368L736 367H814Q828 357 828 347Q828 336 812 327H637L599 250Q561 174 561 173H662H724Q760 173 769 170T779 153T770 136T729 132Q721 132 696 132T651 133H540L380 -188Q374 -194 366 -194Q357 -194 351 -188T345 -174L346 -172V-170Q346 -167 412 -35L495 133H330L170 -188Q164 -194 156 -194Q147 -194 141 -188T135 -174L136 -172V-170Q136 -167 211 -17L285 133H207L130 134Q115 140 115 153Q115 164 131 173H306L344 250Q382 326 382 327H281ZM592 327H427L389 250Q351 174 351 173H516L554 250Q592 326 592 327\",37:\"301 348Q257 348 231 383T205 480Q205 553 244 629T346 736Q370 750 394 750Q416 750 429 742T458 714Q512 644 606 644Q722 644 802 732Q817 750 827 750Q835 750 841 744T847 730Q847 725 827 700T689 540Q586 421 512 335Q180 -50 176 -52Q172 -56 165 -56Q157 -56 151 -50T145 -35Q145 -29 162 -9T330 186Q392 258 430 302Q711 627 711 628L701 624Q652 607 604 607Q551 607 494 634L479 642V624Q479 544 439 467Q414 416 377 382T301 348ZM270 443Q270 385 303 385H306H308Q326 385 348 407Q384 441 409 504T434 627Q434 713 390 713Q358 713 328 663Q307 631 289 556T270 451V443ZM608 -56Q573 -56 543 -23T513 76Q513 129 536 190T604 296L627 318Q670 347 704 347Q747 347 767 310T788 222Q788 126 732 35T608 -56ZM742 222Q742 310 699 310Q677 310 655 285T620 227Q608 197 593 138T578 42V36Q578 -18 613 -18Q657 -18 699 64T742 222\",38:\"209 444Q209 546 278 631T424 716Q473 716 501 683T530 601Q530 554 511 535T467 515Q446 515 437 527T427 553Q427 578 446 594T481 610H483V617Q480 641 464 660T419 679Q367 679 328 603Q316 578 305 538T288 470L282 443L295 449Q308 455 330 462T371 469Q397 469 413 450T430 404Q430 363 400 329T331 295Q291 295 256 322Q255 322 246 293T227 223T217 158Q217 117 232 88T273 43T327 22T387 15Q457 15 512 37T599 93T652 169T680 248T688 317T678 380T659 423T647 437Q643 435 637 431T613 416T581 392T554 364T538 332Q540 310 541 310Q554 335 587 335Q601 335 613 327T626 300Q626 290 622 279T603 255T563 242Q532 245 512 263T491 320Q494 351 511 377T547 418T600 456T652 494Q676 512 697 539T728 582T738 601Q738 602 736 602Q732 602 726 604T714 616T707 638Q707 661 724 677T764 694Q799 694 802 660Q802 625 767 562T688 467L694 458Q700 449 702 444T711 428T720 408T727 385T733 358T735 327Q735 281 724 235T685 141T617 59T515 1T375 -22Q270 -22 199 34T127 181Q127 216 147 270T207 374L216 386Q209 421 209 444ZM386 412Q386 432 366 432Q345 432 325 418T294 390T284 375Q284 371 289 362T306 343T335 332Q355 332 367 350T383 384T386 412\",39:\"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620\",40:\"241 -250Q203 -212 174 -140T144 39Q144 158 180 288T296 544T481 746L487 750H499Q517 750 517 740Q517 736 495 716Q399 630 331 491T236 228T208 3Q208 -73 224 -130T255 -214T271 -244Q271 -250 252 -250H241\",41:\"326 497Q326 546 320 588T304 655T285 699T269 728T262 740Q262 746 267 749L272 750Q276 750 281 750H293Q331 712 360 640T390 461Q390 332 339 171T188 -116Q161 -150 121 -188T47 -250H35Q17 -250 17 -240Q17 -236 39 -216Q135 -130 203 9T298 272T326 497\",42:\"560 658Q569 658 576 649T584 631Q584 625 583 620T577 611T569 603T556 595T540 587T519 578T494 566L428 536Q427 535 433 531T479 502Q525 475 532 469T539 450Q538 435 525 424T497 412Q489 412 482 418T442 456Q400 497 400 494L387 420Q376 353 373 343T352 323Q345 320 336 320H331Q322 320 316 327T309 343Q309 347 334 420L359 496Q358 496 297 456T234 414Q228 411 221 411Q212 411 204 417T195 439Q198 458 209 465T283 502L353 534L300 566Q255 593 247 599T239 616Q239 631 252 644T282 658Q290 658 295 654T335 615L378 573L391 647Q393 657 395 671T398 691T400 706T404 720T408 730T414 739T423 744T434 749Q435 749 439 749T445 750Q467 748 469 728Q469 723 457 685T432 610L420 573L481 613Q548 658 560 658\",43:\"139 237T139 250T151 266T198 270H293H431L465 407Q469 424 476 452Q494 528 500 542T519 557Q526 557 532 552T538 538Q538 536 507 409T472 272Q472 270 604 270Q737 270 741 268Q753 261 753 250Q753 237 742 233T696 229Q687 229 655 229T599 230H462L461 226Q461 224 427 91T392 -47Q387 -57 374 -57Q367 -57 361 -51T355 -37Q355 -31 388 99L421 230H288Q267 230 238 230T199 229Q163 229 151 233\",44:\"106 46Q106 68 121 90T167 120Q168 120 173 120T180 121Q232 121 232 59V54Q232 18 219 -20T186 -88T145 -143T109 -181T88 -194Q84 -194 77 -185T69 -171Q69 -168 70 -166T76 -161T85 -154T101 -139T124 -114Q146 -88 162 -58T183 -12T188 7Q187 7 183 5T172 2T156 0Q129 0 118 14T106 46\",45:\"205 180H131Q102 180 93 181T84 190Q90 238 103 251H334Q341 244 341 241Q341 236 336 214T327 186Q325 181 312 181T205 180\",46:\"107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50\",47:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",48:\"414 665Q562 665 562 490Q562 426 534 318Q451 -21 251 -21Q222 -21 202 -15Q155 2 134 40T110 144Q110 201 127 286T187 470T287 614Q348 665 414 665ZM187 98Q187 59 208 37T260 15Q320 15 365 83Q394 128 440 312T487 547Q487 580 471 600T433 627Q428 628 408 628Q381 628 353 609T311 569Q279 526 239 364T190 143Q187 120 187 98\",49:\"248 491Q228 491 228 502Q228 516 236 532Q237 536 246 537T275 541T314 552Q350 567 382 595T430 644L446 664Q450 666 454 666Q468 666 468 658Q468 647 395 359Q321 63 321 59Q321 52 334 50T388 46H422Q428 37 428 35Q428 19 421 5Q416 0 405 0Q400 0 361 1T263 2Q215 2 185 2T142 1T127 0Q110 0 110 11Q110 13 113 25T118 40Q120 46 146 46Q196 46 212 49T235 61Q238 66 295 295L353 526L340 519Q328 512 302 503T248 491\",50:\"159 404Q159 433 176 476T222 562T297 635T395 666Q466 666 508 617T551 497Q551 473 545 446Q534 388 482 333Q441 292 355 240T264 184Q216 151 179 101L171 91Q171 90 177 90Q206 90 269 77T366 64Q385 64 390 65Q418 73 441 98T475 156Q479 168 481 170T495 173H518Q524 167 524 166T521 152Q502 86 459 32T353 -22Q315 -22 259 15T172 53Q156 53 143 36T126 1L121 -16Q119 -22 98 -22H82Q76 -16 76 -13T80 5T98 50T132 111T189 178T274 242Q327 273 364 305T420 370T447 427T460 483Q466 514 466 538Q466 586 443 607T389 629Q338 629 293 584T226 487T204 399Q204 390 204 386T209 378T222 373Q258 376 282 422T307 493Q307 506 302 517T297 531Q297 537 308 546T327 551Q329 550 333 543T340 523T344 497Q344 450 306 393T216 336Q186 336 173 355T159 396V404\",51:\"296 531Q296 536 307 544T322 553Q330 553 338 534T346 501Q346 468 319 440T258 412Q232 412 216 430T200 478Q200 552 281 618Q345 666 416 666Q489 666 525 625T562 530Q562 473 525 419T430 335L416 329Q479 288 479 206Q479 142 440 89T344 7T229 -22Q173 -22 135 12T96 106Q96 192 157 192Q192 192 197 157Q197 134 184 117T142 96Q153 47 180 29Q201 15 232 15Q249 15 275 22Q307 34 331 57Q363 90 379 153T396 246Q396 261 393 272T384 290T371 301T355 308T341 311T326 312H316H307Q287 312 282 313T276 320Q276 323 279 337T283 352Q284 356 290 357T325 358Q364 359 368 360Q386 365 400 372T433 397T464 448T485 527Q487 535 487 556Q487 629 414 629Q350 629 298 580T245 476Q245 450 263 450H264Q280 450 294 463T308 496Q308 508 302 518T296 531\",52:\"448 34Q453 34 463 22T473 5Q473 -2 457 -7Q417 -22 383 -23H366L350 -91Q348 -98 345 -111T340 -130T335 -146T330 -161T325 -172T318 -182T310 -188T299 -193T286 -194Q256 -194 253 -165Q253 -159 271 -83T292 -5Q231 29 169 29Q114 29 91 14Q72 -2 65 1Q46 20 46 28Q46 35 55 43T77 60T96 74Q306 257 396 623Q410 666 444 666Q459 666 468 657T478 634Q478 627 470 595T440 504T387 381T303 239T187 99L164 75H178Q217 75 260 59L304 43Q304 48 325 127Q342 195 346 207T358 228Q372 242 391 242Q403 242 413 235T423 214Q423 205 402 116T378 25Q378 23 387 23Q405 23 418 25T439 31T448 34\",53:\"196 304Q189 309 189 314Q189 317 231 487T275 660Q278 666 283 666Q287 666 302 658T346 643T413 635Q447 635 481 642T537 658T559 666Q561 666 564 663T567 658Q565 637 557 629Q528 600 474 573T359 545Q342 545 327 546T304 550T294 552L291 540Q288 529 283 507T273 465L251 379Q307 420 364 420Q415 420 456 382T497 261Q497 165 429 82T262 -20Q256 -20 247 -21T233 -22Q176 -22 141 15T106 112Q106 208 173 208Q192 208 203 197T214 169Q214 143 195 125T156 107H153V100Q155 73 174 47T239 21Q245 21 259 23Q355 46 392 200Q393 205 394 207Q412 276 412 312Q412 352 396 367T358 383Q288 383 233 314Q226 306 224 305T209 304H196\",54:\"377 434Q425 434 457 404T499 341T509 278Q509 243 496 194T456 105T383 27Q322 -22 256 -22Q142 -22 122 114Q120 130 120 159Q120 221 135 292T195 452T310 599Q390 665 465 665Q565 665 565 583V574Q565 543 546 524Q528 506 504 506Q491 506 478 514T465 543Q465 585 515 602Q505 626 466 626Q419 626 372 587Q334 557 305 503T266 409L255 370Q287 410 339 429Q361 434 377 434ZM424 333Q424 359 411 378T365 397Q318 397 282 356T230 257T205 157T197 94Q197 67 211 45T260 22Q313 22 341 57T386 151Q424 283 424 333\",55:\"466 519Q448 519 435 528T416 550T400 571T376 581Q324 581 271 540T186 437Q185 435 183 432T181 428T179 426T177 424T174 423T171 422T165 422H159Q141 422 141 423Q136 423 136 431Q136 433 190 548T247 665Q249 666 266 666H282Q288 660 288 657Q288 655 284 646T276 628L273 620Q337 666 390 666Q413 666 425 652T438 620T444 584T457 559Q460 557 470 557Q497 557 524 582T571 635T594 665Q595 666 612 666H628Q634 660 634 657Q634 653 618 629T572 556T510 441T437 269T367 43Q356 -22 304 -22Q291 -22 278 -14T263 14Q263 36 281 95T354 269T486 507Q497 524 495 524Q482 519 466 519\",56:\"209 449Q209 545 278 605T416 666Q482 666 517 631T553 546Q553 513 539 482T504 430T463 394T426 370L410 360L430 343Q471 309 483 278T495 211Q495 141 441 75Q363 -21 253 -21Q182 -21 141 18T99 117Q99 161 119 201T170 268T222 308T259 331L272 338L259 349Q212 389 209 449ZM492 542Q492 586 469 605T415 625Q360 625 320 587T279 505Q279 495 281 487T286 474T295 460T306 449T321 436T337 422Q379 386 380 386Q389 386 420 412T472 471Q492 513 492 542ZM163 118Q163 76 189 49T258 21Q316 21 368 64T420 170Q420 193 412 208T395 233T350 271L302 312Q298 312 284 303T249 276T209 235T177 181T163 118\",57:\"297 211Q258 211 230 228T189 273T169 323T163 367Q163 411 183 472T254 585Q327 656 401 665Q403 665 412 665T427 666Q458 664 481 652T518 622T539 580T550 535T553 491Q553 448 544 395T515 277T454 148T358 37Q282 -22 213 -22Q166 -22 137 -1T107 55V64Q107 88 114 104T134 127T154 136T169 138Q185 138 196 128T207 101Q207 82 196 68T172 48L161 43Q161 40 167 36T187 26T219 21Q286 21 344 99Q364 126 382 169T408 241T417 275L412 269Q406 263 395 253T370 234T337 218T297 211ZM476 552Q476 626 417 626Q368 626 330 584Q312 563 300 533T270 433Q248 341 248 312Q248 286 262 267T310 248Q353 248 387 287T440 380T467 480T476 552\",58:\"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50\",59:\"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 47Q107 77 130 99T180 121Q226 121 226 61Q226 25 214 -14T182 -84T144 -140T109 -180T88 -194T77 -185T70 -172Q70 -169 84 -155T121 -112T161 -48Q180 -10 180 3Q180 4 174 2Q172 2 166 1T156 0Q135 0 121 13T107 47\",61:\"776 357T776 347T761 327H470Q180 327 176 329Q164 334 164 347Q164 359 176 365Q179 367 470 367H761Q776 357 776 347ZM116 143T116 153T131 173H422Q713 173 717 171Q728 166 728 153T717 135Q713 133 422 133H131Q116 143 116 153\",63:\"235 431Q217 431 206 442T195 468Q195 490 215 537T280 638T380 707Q403 716 423 716Q425 716 429 716T436 715Q485 715 518 681T551 590Q551 543 530 503T482 439Q471 428 400 375T318 310Q300 287 300 259Q300 236 315 236Q333 236 352 251T384 300Q386 306 407 306H423Q429 300 429 297Q429 272 393 235T308 198Q287 198 269 215T251 270Q251 330 293 374L374 436Q377 438 401 456T432 480T457 503T481 531T494 561T501 598Q501 614 499 626Q482 678 430 678H426Q392 678 362 660T311 615T280 571T264 540L259 528Q259 527 266 526T283 516T294 492Q294 466 276 449T235 431ZM209 51Q212 83 235 102T281 121Q309 121 321 105T333 72Q333 45 311 23T258 0Q240 0 225 11T209 51\",64:\"198 250Q198 155 248 91T394 26Q514 26 640 80L650 84H675H683Q709 84 709 76Q709 73 708 71Q706 64 660 45T534 8T383 -11T260 24T181 115Q152 168 152 248Q152 410 268 552Q303 590 324 608Q439 705 551 705Q611 705 658 683T733 623T775 543T789 454Q789 380 766 304T720 192Q677 125 617 125Q591 125 573 137T548 160T541 176Q541 178 540 178L534 173Q527 168 515 160T488 144T454 131T417 125Q361 125 320 166T279 284Q279 393 356 481T523 569Q570 569 603 537Q623 515 632 490L637 480L657 479Q684 479 684 470Q684 465 650 333L617 199V185Q616 162 628 162Q677 162 712 278Q743 381 743 442Q743 555 687 611T553 668Q467 668 385 608T250 450T198 250ZM598 445Q598 453 594 470T569 510T518 532Q463 532 410 448T356 271Q356 220 374 191T423 162Q482 162 552 255L575 348Q598 440 598 445\",91:\"205 -221Q205 -239 194 -250H137H106Q73 -250 73 -242Q73 -232 194 255T321 747L324 750H381H417Q435 750 440 748T446 739Q446 730 443 723T437 712L434 710H350L349 706Q349 704 235 249T120 -208Q120 -210 159 -210Q166 -210 175 -210T187 -209Q205 -209 205 -221\",93:\"227 721Q227 739 238 750H295H326Q359 750 359 742Q359 732 238 245T111 -247L108 -250H51H15Q-3 -250 -8 -248T-14 -239Q-14 -230 -11 -223T-5 -212L-2 -210H82L83 -206Q83 -204 197 251T312 708Q312 710 273 710Q266 710 257 710T245 709Q227 709 227 721\",94:\"528 555Q528 549 514 538T496 527Q491 527 470 554Q458 569 449 580L414 625L353 578Q339 567 323 555T298 536L290 529Q286 527 285 527Q279 527 273 533T264 546L260 553Q260 559 263 562Q265 564 342 628T421 693T425 694Q430 694 433 691Q528 563 528 555\",95:\"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98\",126:\"266 208Q262 208 255 215T247 228Q247 233 250 236T274 259Q335 318 369 318Q394 318 420 292T464 265Q485 265 516 291T550 318Q554 318 562 311T571 297Q570 293 551 273T502 231T451 209H447Q421 209 396 235T355 261Q334 261 301 235T266 208\",305:\"75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287\",567:\"75 284T75 287T81 305T101 343T133 389T180 426T240 442Q273 440 300 420T327 350V332L278 134Q267 92 253 37T233 -45T225 -73Q208 -123 162 -163T54 -204Q8 -204 -15 -181Q-32 -164 -32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 39 -166L44 -167H59H60Q112 -167 145 -74Q148 -65 198 134T251 347Q252 353 252 370Q252 382 251 388T245 399T230 405Q204 405 175 378Q157 360 145 337T126 298T117 280T98 278H81Q75 284 75 287\",768:\"-222 651Q-222 668 -206 682T-174 697Q-155 697 -145 680Q-140 671 -107 599T-74 526Q-74 522 -88 511T-107 500Q-109 500 -113 502T-167 568T-219 637Q-222 643 -222 651\",769:\"-148 500Q-154 500 -163 511T-173 528Q-173 529 -172 530V532Q-170 534 -97 610T-21 688Q-8 697 4 697Q19 697 29 688T39 663T30 638Q26 631 -50 573L-135 507Q-144 500 -148 500\",770:\"17 555Q17 549 3 538T-15 527Q-20 527 -41 554Q-53 569 -62 580L-97 625L-158 578Q-172 567 -188 555T-212 536L-221 529Q-225 527 -226 527Q-232 527 -238 533T-248 546L-251 553Q-251 559 -248 562Q-246 564 -169 628T-90 693T-86 694Q-81 694 -78 691Q17 563 17 555\",771:\"-245 558Q-249 558 -256 565T-264 578Q-264 583 -261 586T-237 609Q-176 668 -142 668Q-117 668 -91 642T-47 615Q-26 615 5 641T39 668Q43 668 51 661T60 647Q59 643 40 623T-9 581T-60 559H-64Q-90 559 -115 585T-156 611Q-177 611 -210 585T-245 558\",772:\"-275 544Q-282 548 -282 554Q-282 561 -279 573T-271 588Q-269 589 -111 589H-27H12Q38 589 46 587T54 578Q54 574 51 563T47 550Q45 546 32 545Q15 544 -118 544H-275\",774:\"-237 641Q-237 694 -218 694H-213Q-195 694 -195 684Q-195 683 -195 679T-197 667T-198 650Q-198 611 -176 589T-117 566Q-74 566 -34 597T23 678Q27 689 30 691T43 694Q62 694 62 684Q62 671 49 645T14 589T-46 537T-123 515Q-175 515 -206 550T-237 641\",775:\"-165 599Q-162 631 -139 650T-93 669Q-65 669 -53 653T-41 620Q-41 593 -63 571T-116 548Q-134 548 -149 559T-165 599\",776:\"-251 601Q-251 626 -230 647T-180 669Q-139 669 -133 625Q-133 595 -155 575T-203 554Q-223 554 -237 567T-251 601ZM-72 599Q-72 632 -48 650T-2 669Q18 669 31 657T45 623Q45 592 22 573T-25 554Q-68 554 -72 599\",778:\"-199 610Q-199 654 -161 685T-79 716Q-39 716 -16 693Q3 674 3 647Q3 607 -34 575T-118 542Q-199 542 -199 610ZM-41 631T-41 655T-83 679H-89Q-129 679 -142 656Q-146 650 -151 632T-156 604Q-156 578 -113 578H-108Q-94 578 -86 579T-69 586T-52 605Q-41 631 -41 655\",779:\"-217 503Q-221 503 -234 510T-248 523Q-248 528 -205 602Q-200 610 -192 623T-180 644T-170 661T-159 676T-151 686T-142 694T-134 696Q-132 697 -121 697Q-88 694 -88 664Q-88 652 -97 640T-152 574Q-214 504 -217 503ZM-64 503Q-68 503 -81 510T-95 523Q-95 528 -52 602Q-47 610 -39 623T-27 644T-17 661T-6 676T2 686T11 694T19 696Q21 697 32 697Q65 694 65 664Q65 652 56 640T1 574Q-61 504 -64 503\",780:\"11 637Q16 637 22 624T29 607Q29 606 27 602Q26 600 -47 552T-125 502H-127Q-133 502 -184 553Q-236 602 -236 608Q-236 612 -224 625T-206 638L-202 637L-196 632Q-190 628 -179 620T-158 603L-116 570Q-109 572 -52 604T11 637\",989:\"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261\",8211:\"98 248Q91 252 91 259Q91 279 100 284Q102 285 324 285H442H500Q536 285 545 283T554 274Q554 260 548 254Q546 250 538 249Q520 248 319 248H98\",8212:\"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124\",8213:\"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124\",8215:\"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98\",8216:\"249 379Q228 379 213 396T197 448Q197 533 271 627L278 635Q286 643 295 652T314 671T332 687T344 694Q349 694 355 685T362 671Q362 668 345 654T301 608T256 537Q238 493 240 491Q241 491 245 493T258 498T275 500Q296 500 311 488T326 454Q326 426 304 403T249 379\",8217:\"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620\",8220:\"295 379Q274 379 259 396T243 448Q243 533 317 627Q326 638 354 666T391 694Q395 694 402 686T409 673Q409 668 392 654T348 608T302 537Q284 493 286 491Q287 491 291 493T304 498T321 500Q342 500 357 488T372 454Q372 426 350 403T295 379ZM492 379Q471 379 456 396T440 448Q440 533 514 627Q523 638 551 666T588 694Q592 694 599 685T606 672T589 654T544 608T499 537Q481 493 483 491Q484 491 488 493T501 498T518 500Q539 500 554 488T569 454Q569 426 547 403T492 379\",8221:\"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620\",8260:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",8463:\"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150\",8710:\"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346\",10744:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.italic=void 0,e.italic={33:[.716,0,.307,{ic:.073}],34:[.694,-.379,.514,{ic:.024}],35:[.694,.194,.818,{ic:.01}],37:[.75,.056,.818,{ic:.029}],38:[.716,.022,.767,{ic:.035}],39:[.694,-.379,.307,{ic:.07}],40:[.75,.25,.409,{ic:.108}],41:[.75,.25,.409],42:[.75,-.32,.511,{ic:.073}],43:[.557,.057,.767],44:[.121,.194,.307],45:[.251,-.18,.358],46:[.121,0,.307],47:[.716,.215,.778],48:[.665,.021,.511,{ic:.051}],49:[.666,0,.511],50:[.666,.022,.511,{ic:.04}],51:[.666,.022,.511,{ic:.051}],52:[.666,.194,.511],53:[.666,.022,.511,{ic:.056}],54:[.665,.022,.511,{ic:.054}],55:[.666,.022,.511,{ic:.123}],56:[.666,.021,.511,{ic:.042}],57:[.666,.022,.511,{ic:.042}],58:[.431,0,.307],59:[.431,.194,.307],61:[.367,-.133,.767],63:[.716,0,.511,{ic:.04}],64:[.705,.011,.767,{ic:.022}],91:[.75,.25,.307,{ic:.139}],93:[.75,.25,.307,{ic:.052}],94:[.694,-.527,.511,{ic:.017}],95:[-.025,.062,.511,{ic:.043}],126:[.318,-.208,.511,{ic:.06}],305:[.441,.01,.307,{ic:.033}],567:[.442,.204,.332],768:[.697,-.5,0],769:[.697,-.5,0,{ic:.039}],770:[.694,-.527,0,{ic:.017}],771:[.668,-.558,0,{ic:.06}],772:[.589,-.544,0,{ic:.054}],774:[.694,-.515,0,{ic:.062}],775:[.669,-.548,0],776:[.669,-.554,0,{ic:.045}],778:[.716,-.542,0],779:[.697,-.503,0,{ic:.065}],780:[.638,-.502,0,{ic:.029}],989:[.605,.085,.778],8211:[.285,-.248,.511,{ic:.043}],8212:[.285,-.248,1.022,{ic:.016}],8213:[.285,-.248,1.022,{ic:.016}],8215:[-.025,.062,.511,{ic:.043}],8216:[.694,-.379,.307,{ic:.055}],8217:[.694,-.379,.307,{ic:.07}],8220:[.694,-.379,.514,{ic:.092}],8221:[.694,-.379,.514,{ic:.024}],8260:[.716,.215,.778],8463:[.695,.013,.54,{ic:.022}],8710:[.716,0,.833,{sk:.167}],10744:[.716,.215,.778]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.largeop=void 0;var r=Q(6),T=Q(232);e.largeop=r.AddPaths(T.largeop,{40:\"180 96T180 250T205 541T266 770T353 944T444 1069T527 1150H555Q561 1144 561 1141Q561 1137 545 1120T504 1072T447 995T386 878T330 721T288 513T272 251Q272 133 280 56Q293 -87 326 -209T399 -405T475 -531T536 -609T561 -640Q561 -643 555 -649H527Q483 -612 443 -568T353 -443T266 -270T205 -41\",41:\"35 1138Q35 1150 51 1150H56H69Q113 1113 153 1069T243 944T330 771T391 541T416 250T391 -40T330 -270T243 -443T152 -568T69 -649H56Q43 -649 39 -647T35 -637Q65 -607 110 -548Q283 -316 316 56Q324 133 324 251Q324 368 316 445Q278 877 48 1123Q36 1137 35 1138\",47:\"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649\",91:\"224 -649V1150H455V1099H275V-598H455V-649H224\",92:\"754 -625Q754 -649 731 -649Q715 -649 712 -639Q709 -635 383 242T55 1124Q54 1135 61 1142T80 1150Q92 1150 98 1140Q101 1137 427 262T754 -625\",93:\"16 1099V1150H247V-649H16V-598H196V1099H16\",123:\"547 -643L541 -649H528Q515 -649 503 -645Q324 -582 293 -466Q289 -449 289 -428T287 -200L286 42L284 53Q274 98 248 135T196 190T146 222L121 235Q119 239 119 250Q119 262 121 266T133 273Q262 336 284 449L286 460L287 701Q287 737 287 794Q288 949 292 963Q293 966 293 967Q325 1080 508 1148Q516 1150 527 1150H541L547 1144V1130Q547 1117 546 1115T536 1109Q480 1086 437 1046T381 950L379 940L378 699Q378 657 378 594Q377 452 374 438Q373 437 373 436Q350 348 243 282Q192 257 186 254L176 251L188 245Q211 236 234 223T287 189T340 135T373 65Q373 64 374 63Q377 49 378 -93Q378 -156 378 -198L379 -438L381 -449Q393 -504 436 -544T536 -608Q544 -611 545 -613T547 -629V-643\",125:\"119 1130Q119 1144 121 1147T135 1150H139Q151 1150 182 1138T252 1105T326 1046T373 964Q378 942 378 702Q378 469 379 462Q386 394 439 339Q482 296 535 272Q544 268 545 266T547 251Q547 241 547 238T542 231T531 227T510 217T477 194Q390 129 379 39Q378 32 378 -201Q378 -441 373 -463Q342 -580 165 -644Q152 -649 139 -649Q125 -649 122 -646T119 -629Q119 -622 119 -619T121 -614T124 -610T132 -607T143 -602Q195 -579 235 -539T285 -447Q286 -435 287 -199T289 51Q294 74 300 91T329 138T390 197Q412 213 436 226T475 244L489 250L472 258Q455 265 430 279T377 313T327 366T293 434Q289 451 289 472T287 699Q286 941 285 948Q279 978 262 1005T227 1048T184 1080T151 1100T129 1109L127 1110Q119 1113 119 1130\",710:\"1004 603Q1004 600 999 583T991 565L960 574Q929 582 866 599T745 631L500 698Q497 698 254 631Q197 616 134 599T39 574L8 565Q5 565 0 582T-5 603L26 614Q58 624 124 646T248 687L499 772Q999 604 1004 603\",732:\"296 691Q258 691 216 683T140 663T79 639T34 619T16 611Q13 619 8 628L0 644L36 662Q206 749 321 749Q410 749 517 710T703 670Q741 670 783 678T859 698T920 722T965 742T983 750Q986 742 991 733L999 717L963 699Q787 611 664 611Q594 611 484 651T296 691\",770:\"4 603Q4 600 -1 583T-9 565L-40 574Q-71 582 -134 599T-255 631L-500 698Q-503 698 -746 631Q-803 616 -866 599T-961 574L-992 565Q-995 565 -1000 582T-1005 603L-974 614Q-942 624 -876 646T-752 687L-501 772Q-1 604 4 603\",771:\"-704 691Q-742 691 -784 683T-860 663T-921 639T-966 619T-984 611Q-987 619 -992 628L-1000 644L-964 662Q-794 749 -679 749Q-590 749 -483 710T-297 670Q-259 670 -217 678T-141 698T-80 722T-35 742T-17 750Q-14 742 -9 733L-1 717L-37 699Q-213 611 -336 611Q-405 611 -515 651T-704 691\",8214:\"257 0V602H300V0H257ZM478 0V602H521V0H478\",8260:\"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649\",8593:\"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421\",8595:\"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96\",8657:\"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329\",8659:\"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236\",8719:\"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H725V-396H735Q864 -396 888 -314Q889 -312 889 -311V896H388V292L389 -311Q405 -396 542 -396H552V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812\",8720:\"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H552V896H542Q411 896 389 812L388 208V-396H889V812Q889 813 887 819T883 829T877 840T868 853T854 866T835 878T809 887T776 893T735 896H725V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812\",8721:\"60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948\",8730:\"1001 1150Q1017 1150 1020 1132Q1020 1127 741 244L460 -643Q453 -650 436 -650H424Q423 -647 423 -645T421 -640T419 -631T415 -617T408 -594T399 -560T385 -512T367 -448T343 -364T312 -259L203 119L138 41L111 67L212 188L264 248L472 -474L983 1140Q988 1150 1001 1150\",8739:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",8741:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612\",8747:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798\",8748:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798\",8749:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798ZM1150 -798Q1168 -824 1201 -824H1203Q1231 -824 1259 -764T1311 -600T1356 -391T1398 -164Q1401 -143 1403 -133Q1475 292 1559 655T1681 1127Q1687 1145 1691 1157T1708 1201T1735 1257T1769 1306T1813 1346T1864 1360Q1920 1360 1948 1325T1980 1245Q1980 1220 1968 1205T1945 1186T1923 1183Q1902 1183 1885 1198T1868 1239Q1868 1287 1921 1296L1918 1300Q1915 1303 1910 1307T1902 1313Q1887 1323 1869 1323Q1855 1323 1843 1311T1811 1255T1772 1139T1725 936T1669 628Q1610 293 1546 -5T1446 -437T1391 -629Q1314 -862 1201 -862Q1161 -862 1128 -831T1091 -746Q1091 -711 1110 -698T1148 -685Q1169 -685 1186 -700T1203 -741Q1203 -789 1150 -798\",8750:\"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q382 -52 390 2Q314 40 276 99Q230 167 230 249Q230 363 305 436T484 519H494L503 563Q587 939 632 1087T727 1298Q774 1360 828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q766 1323 688 929Q662 811 610 496Q770 416 770 249Q770 147 701 68T516 -21H506L497 -65Q407 -464 357 -623T237 -837Q203 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM480 478Q460 478 435 470T380 444T327 401T287 335T271 249Q271 124 375 56L397 43L431 223L485 478H480ZM519 20Q545 20 578 33T647 72T706 144T730 249Q730 383 603 455Q603 454 597 421T582 343T569 276Q516 22 515 20H519\",8896:\"1055 -401Q1055 -419 1042 -434T1007 -450Q977 -450 963 -423Q959 -417 757 167L555 750L353 167Q151 -417 147 -423Q134 -450 104 -450Q84 -450 70 -436T55 -401Q55 -394 56 -390Q59 -381 284 270T512 925Q525 950 555 950Q583 950 597 926Q599 923 825 270T1054 -391Q1055 -394 1055 -401\",8897:\"55 900Q55 919 69 934T103 950Q134 950 147 924Q152 913 353 333L555 -250L757 333Q958 913 963 924Q978 950 1007 950Q1028 950 1041 935T1055 901Q1055 894 1054 891Q1052 884 826 231T597 -426Q583 -450 556 -450Q527 -450 512 -424Q510 -421 285 229T56 890Q55 893 55 900\",8898:\"57 516Q68 602 104 675T190 797T301 882T423 933T542 949Q594 949 606 948Q780 928 901 815T1048 545Q1053 516 1053 475T1055 49Q1055 -406 1054 -410Q1051 -427 1037 -438T1006 -450T976 -439T958 -411Q957 -407 957 37Q957 484 956 494Q945 643 831 747T554 852Q481 852 411 826Q301 786 232 696T154 494Q153 484 153 37Q153 -407 152 -411Q148 -428 135 -439T104 -450T73 -439T56 -410Q55 -406 55 49Q56 505 57 516\",8899:\"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911\",8968:\"224 -649V1150H511V1099H275V-649H224\",8969:\"16 1099V1150H303V-649H252V1099H16\",8970:\"224 -649V1150H275V-598H511V-649H224\",8971:\"252 -598V1150H303V-649H16V-598H252\",9001:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",9002:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\",9168:\"312 0V602H355V0H312\",10072:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",10216:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",10217:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\",10752:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM755 -352Q922 -352 1061 -269T1278 -48T1356 250Q1356 479 1202 652T809 850Q798 851 747 851Q634 851 527 806T337 682T204 491T154 251Q154 128 201 17T329 -176T521 -304T755 -352ZM665 250Q665 290 692 315T758 341Q792 339 818 315T845 250Q845 211 819 186T755 160Q716 160 691 186T665 250\",10753:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM706 299V850H704Q519 832 386 725T198 476Q181 433 169 379T156 300Q156 299 431 299H706ZM1116 732Q1054 778 982 807T871 842T810 849L804 850V299H1079Q1354 299 1354 300Q1354 311 1352 329T1336 402T1299 506T1228 620T1116 732ZM706 -350V201H431Q156 201 156 200Q156 189 158 171T174 98T211 -6T282 -120T395 -232Q428 -257 464 -277T527 -308T587 -328T636 -339T678 -346T706 -350ZM1354 200Q1354 201 1079 201H804V-350Q808 -349 838 -345T887 -338T940 -323T1010 -295Q1038 -282 1067 -265T1144 -208T1229 -121T1301 0T1349 158Q1354 188 1354 200\",10754:\"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM1143 709Q1138 714 1129 722T1086 752T1017 791T925 826T809 850Q798 851 747 851H728Q659 851 571 823T408 741Q367 713 367 709L755 320L1143 709ZM297 639Q296 639 282 622T247 570T205 491T169 382T154 250T168 118T204 9T247 -70T282 -122L297 -139L685 250L297 639ZM1213 -139Q1214 -139 1228 -122T1263 -70T1305 9T1341 118T1356 250T1342 382T1306 491T1263 570T1228 622L1213 639L825 250L1213 -139ZM367 -209Q373 -215 384 -224T434 -258T514 -302T622 -336T755 -352T887 -338T996 -302T1075 -259T1126 -224L1143 -209L755 180Q754 180 561 -14T367 -209\",10756:\"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911ZM507 554Q511 570 523 581T554 593Q571 593 585 582T603 554Q604 551 604 443V338H709Q817 338 820 337Q835 334 847 321T859 290Q859 254 819 241Q816 240 709 240H604V134Q604 48 604 34T598 11Q583 -15 555 -15Q526 -15 512 11Q507 20 507 34T506 134V240H401H344Q292 240 278 246Q251 259 251 290Q251 309 264 321T290 337Q293 338 401 338H506V443Q506 551 507 554\",10758:\"56 911Q60 927 72 938T103 950Q120 950 134 939T152 911Q153 907 153 277V-352H957V277Q957 907 958 911Q962 928 975 939T1006 950T1036 939T1054 911V891Q1054 871 1054 836T1054 754T1054 647T1055 525T1055 390T1055 250T1055 111T1055 -24T1055 -147T1054 -253T1054 -335T1054 -391V-411Q1047 -442 1016 -449Q1011 -450 552 -450L94 -449Q63 -439 56 -411V-391Q56 -371 56 -336T56 -254T56 -147T55 -25T55 110T55 250T55 389T55 524T55 647T56 753T56 835T56 891V911\",12296:\"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244\",12297:\"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649\"},{10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.largeop=void 0,e.largeop={40:[1.15,.649,.597],41:[1.15,.649,.597],47:[1.15,.649,.811],91:[1.15,.649,.472],92:[1.15,.649,.811],93:[1.15,.649,.472],123:[1.15,.649,.667],125:[1.15,.649,.667],710:[.772,-.565,1],732:[.75,-.611,1],770:[.772,-.565,0],771:[.75,-.611,0],8214:[.602,0,.778],8260:[1.15,.649,.811],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.95,.45,1.278],8720:[.95,.45,1.278],8721:[.95,.45,1.444],8730:[1.15,.65,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[1.36,.862,.556,{ic:.388}],8748:[1.36,.862,1.084,{ic:.388}],8749:[1.36,.862,1.592,{ic:.388}],8750:[1.36,.862,.556,{ic:.388}],8896:[.95,.45,1.111],8897:[.95,.45,1.111],8898:[.949,.45,1.111],8899:[.95,.449,1.111],8968:[1.15,.649,.528],8969:[1.15,.649,.528],8970:[1.15,.649,.528],8971:[1.15,.649,.528],9001:[1.15,.649,.611],9002:[1.15,.649,.611],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[1.15,.649,.611],10217:[1.15,.649,.611],10752:[.949,.449,1.511],10753:[.949,.449,1.511],10754:[.949,.449,1.511],10756:[.95,.449,1.111],10758:[.95,.45,1.111],10764:[1.36,.862,2.168,{ic:.388}],12296:[1.15,.649,.611],12297:[1.15,.649,.611]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.monospace=void 0;var r=Q(6),T=Q(234);e.monospace=r.AddPaths(T.monospace,{32:\"\",33:\"206 565Q206 590 222 606T265 622Q287 621 303 606T319 565T314 392L308 216Q299 194 273 194H262Q247 194 241 195T228 200T217 216L211 392Q206 539 206 565ZM206 56Q206 83 223 99T265 115Q288 113 304 99T320 58Q320 33 303 17T262 0Q237 0 222 17T206 56\",34:\"122 575Q122 593 137 608T173 623Q196 623 210 608T225 575Q225 562 218 464Q212 373 211 361T201 341Q193 333 173 333Q154 333 146 341Q138 348 137 360T129 464Q122 561 122 575ZM299 575Q299 593 314 608T350 623Q373 623 387 608T402 575Q402 562 395 464Q389 373 388 361T378 341Q370 333 350 333Q331 333 323 341Q315 348 314 360T306 464Q299 561 299 575\",35:\"93 163Q74 163 65 164T46 173T36 198Q36 210 40 215T61 233H131V236Q132 239 140 307T149 377Q149 379 105 379L61 380Q36 392 36 414Q36 450 86 450Q91 450 99 450T112 449H159Q163 480 167 517Q168 524 170 545T174 573T180 591T191 607T210 611Q223 611 232 604T243 588L245 580Q245 565 238 511T230 451Q230 449 282 449H333Q337 480 341 517Q342 524 343 537T345 556T348 573T352 589T359 600T370 608T384 611Q395 611 406 602T419 580Q419 565 412 511T404 451Q404 449 431 449H442Q477 449 485 429Q489 421 489 414Q489 392 463 380L428 379H394V376Q393 373 385 305T376 235Q376 233 419 233H463L468 230Q472 227 473 227T477 223T482 218T486 213T488 206T489 198Q489 162 436 162Q430 162 422 162T412 163H366V161Q364 159 357 92Q356 85 355 73T353 54T350 37T346 22T339 11T328 3T314 0Q303 0 292 9T279 31Q279 37 287 96T295 162Q295 163 244 163H192V161Q190 159 183 92Q182 85 181 73T179 54T176 37T172 22T165 11T154 3T140 0Q129 0 118 9T105 31Q105 37 113 96T121 162Q121 163 93 163ZM323 377Q323 379 272 379H220V376Q219 373 211 305T202 235Q202 233 253 233H305V236Q306 239 314 307T323 377\",36:\"415 397Q392 397 377 411T362 448Q362 464 376 485Q369 498 362 506T346 520T332 528T315 533T300 538V445L301 353L311 350Q382 334 424 284T466 174Q466 115 425 65T303 -2L300 -3V-30Q300 -64 291 -74Q283 -82 262 -82H255Q234 -82 225 -60L224 -32V-4L213 -2Q152 6 106 51T59 170V180Q59 197 74 213Q89 227 110 227T146 213T162 174Q162 156 147 137Q153 123 161 112T176 95T191 85T205 79T216 76T224 74V283L213 285Q147 298 103 343T58 449Q58 516 108 560T224 614V643V654Q224 666 226 673T237 687T264 694Q289 693 294 683T300 642V615H303Q355 607 390 587T440 540T460 493T466 453Q466 425 451 411T415 397ZM137 452Q137 425 158 404T198 376T223 369Q224 369 224 453T223 537Q198 532 168 509T137 452ZM301 75Q307 75 325 83T365 116T387 171Q387 238 300 267V171Q300 75 301 75\",37:\"35 560Q35 607 54 645T110 693Q111 693 116 693T125 694Q165 692 187 651T210 560Q210 506 186 467T123 428Q84 428 60 466T35 560ZM139 560Q139 574 136 587T130 608T124 615Q122 617 120 614Q106 595 106 561Q106 516 121 506Q123 504 125 507Q139 526 139 560ZM123 -83Q107 -83 98 -73T88 -48Q88 -43 89 -41Q90 -37 229 316T370 675Q381 694 400 694Q416 694 426 684T436 659Q436 654 435 652Q434 647 295 294T153 -65Q144 -83 123 -83ZM314 50Q314 104 338 143T400 183Q439 183 464 144T489 50T465 -43T402 -82Q358 -82 336 -41T314 50ZM417 50Q417 71 413 85T405 102L401 106Q386 95 386 50Q386 29 390 15T398 -2L402 -6Q417 5 417 50\",38:\"96 462Q96 546 132 584T211 622Q255 622 284 583T314 474Q314 395 224 305L208 288Q213 275 226 251L265 185L269 179Q273 184 299 246L332 333L342 363Q342 364 341 365Q334 365 334 393Q334 406 334 410T340 420T356 431H412H440Q467 431 478 424T490 393Q490 376 484 367T470 357T448 355H441H415L399 312Q349 176 322 127L315 115L323 106Q360 65 393 65Q405 65 410 80T416 109Q416 140 452 140Q487 140 487 105Q487 56 460 23T391 -11L286 41L273 53L262 42Q212 -11 151 -11Q97 -11 63 33T28 143Q28 161 30 176T38 205T47 227T60 247T72 261T84 274T94 283L122 311L119 323Q96 392 96 462ZM243 474Q243 533 218 545L215 546Q212 546 210 546Q182 546 169 501Q167 492 167 466Q167 419 179 368L188 377Q234 425 242 461Q243 465 243 474ZM217 129Q185 174 154 235Q121 214 115 176Q113 168 113 143Q113 83 139 67Q141 66 152 66Q191 66 228 112L217 129\",39:\"205 554Q205 577 221 594T263 611Q302 611 325 577T349 490Q349 409 298 347Q285 330 258 309T214 287Q203 289 189 302T175 327Q175 341 185 349T213 369T245 402Q269 437 273 483V497Q264 496 263 496Q240 496 223 513T205 554\",40:\"437 -53Q437 -82 399 -82H394Q377 -82 342 -55Q259 7 213 102T166 306Q166 412 211 507T342 667Q377 694 393 694H399Q437 694 437 665Q437 654 426 643T397 620T356 584T311 525Q301 511 290 488T264 412T250 306Q250 191 300 105T422 -27Q437 -37 437 -53\",41:\"87 664Q87 694 126 694Q138 694 147 690T183 667Q266 605 312 510T358 306Q358 193 307 93T161 -70Q142 -82 126 -82Q105 -82 96 -73T87 -53Q87 -47 88 -44Q92 -36 116 -19T173 34T230 119Q273 206 273 306Q273 408 231 494T109 635Q87 649 87 664\",42:\"222 487Q224 501 235 510T262 520Q279 520 289 510T302 487Q302 458 301 429Q301 421 301 413T301 398T300 386T300 377V374Q300 373 301 373Q304 373 353 403T416 434Q432 434 444 423T456 393Q456 389 456 386T454 379T451 373T448 368T442 363T436 358T427 353T417 348T405 342T391 334Q345 309 339 305L388 279Q400 273 412 266T432 255T441 250Q456 238 456 218Q456 200 445 189T417 177Q403 177 354 207T301 238Q300 238 300 237V234Q300 231 300 226T300 214T301 199T301 182Q302 153 302 124Q300 109 289 100T262 90T235 100T222 124Q222 153 223 182Q223 190 223 198T223 213T224 225T224 234V237Q224 238 223 238Q220 238 171 208T108 177Q92 177 80 188T68 218Q68 237 79 246T134 277Q180 303 185 306L136 332Q124 338 112 345T92 356T83 361Q68 373 68 393Q68 411 79 422T107 434Q121 434 170 404T223 373Q224 373 224 374V377Q224 380 224 385T224 397T223 412T223 429Q222 458 222 487\",43:\"147 271Q138 271 122 271T98 270Q68 270 53 277T38 306T53 335T98 342Q105 342 121 342T147 341H227V423L228 505Q241 531 262 531Q268 531 273 530T282 525T287 519T293 511L297 505V341H377H430Q457 341 467 338T483 321Q487 313 487 306Q487 295 480 286T463 273Q457 271 377 271H297V107Q281 81 262 81Q250 81 242 87T230 100L228 107L227 189V271H147\",44:\"193 37T193 70T213 121T260 140Q302 140 327 108T353 36Q353 -7 336 -43T294 -98T249 -128T215 -139Q204 -139 189 -125Q177 -111 174 -101Q172 -84 183 -77T217 -61T253 -33Q261 -24 272 1L265 0Q234 0 214 18\",45:\"57 306Q57 333 86 341H438Q468 332 468 306T438 271H86Q57 280 57 306\",46:\"193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70\",47:\"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83\",58:\"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70\",59:\"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T259 140Q301 140 319 108T337 33Q337 -38 291 -88T214 -139Q203 -139 189 -126T175 -97Q175 -85 182 -78T200 -66T225 -50T249 -17Q256 -3 256 0Q252 1 248 1Q242 2 235 5T218 15T200 36T193 70\",60:\"468 90Q468 76 458 66T433 55Q426 55 419 58Q413 61 243 168T68 280Q57 291 57 306T68 332Q72 335 241 442T416 553Q424 557 432 557Q447 557 457 547T468 522T456 496Q454 494 305 399L158 306L305 213Q341 190 390 159Q443 125 452 119T464 106V105Q468 97 468 90\",61:\"38 382Q38 409 67 417H457Q487 408 487 382Q487 358 461 348H64Q51 352 45 360T38 376V382ZM67 195Q38 204 38 230Q38 255 62 264Q66 265 264 265H461L464 264Q467 262 469 261T475 256T481 249T485 240T487 230Q487 204 457 195H67\",62:\"57 522Q57 539 67 548T90 557Q98 557 105 554Q111 551 281 444T456 332Q468 320 468 306T456 280Q452 276 282 169T105 58Q98 55 91 55Q79 55 68 63T57 90Q57 105 68 116Q70 118 219 213L366 306L219 399Q75 491 71 494Q57 507 57 522\",63:\"62 493Q62 540 107 578T253 617Q366 617 414 578T462 490Q462 459 445 434T411 400L394 390Q315 347 296 287Q294 278 293 247V217Q285 201 278 198T246 194T216 197T201 215V245V253Q201 379 351 456Q366 464 375 477Q377 482 377 490Q377 517 339 528T251 540Q182 540 159 517Q166 503 166 490Q166 468 151 453T114 438Q96 438 79 451T62 493ZM190 58Q190 85 208 100T249 115Q272 113 288 99T304 58Q304 33 287 17T246 0T206 16T190 58\",64:\"44 306Q44 445 125 531T302 617Q332 617 358 607T411 574T456 502T479 387Q481 361 481 321Q481 203 421 143Q381 103 332 103Q266 103 225 165T183 307Q183 390 227 449T332 508Q358 508 378 498Q350 541 304 541Q229 541 172 473T115 305Q115 208 171 140T306 71H310Q358 71 397 105Q409 115 436 115Q458 115 462 113Q481 106 481 86Q481 73 468 61Q401 -6 305 -6Q262 -6 217 14T133 71T69 170T44 306ZM410 306Q410 361 386 396T333 431Q300 431 277 394T254 305Q254 256 276 218T332 180Q364 180 387 217T410 306\",91:\"237 -82Q221 -78 214 -58V305Q214 669 216 673Q220 687 231 690T278 694H350H461Q462 693 467 690T474 685T478 679T482 670T483 656Q483 632 471 625T428 617Q422 617 406 617T379 618H298V-7H379H420Q459 -7 471 -13T483 -45Q483 -55 483 -59T477 -70T461 -82H237\",92:\"58 659Q58 673 68 683T93 694Q114 694 125 673Q132 659 297 314T464 -36Q466 -44 466 -48Q466 -66 454 -74T431 -83Q410 -83 399 -62Q391 -47 226 298T60 648Q58 656 58 659\",93:\"41 656Q41 681 53 688T99 695Q107 695 133 695T177 694H288Q307 681 310 669V-58Q303 -76 288 -82H64Q41 -73 41 -45Q41 -21 53 -14T96 -6Q102 -6 118 -6T145 -7H226V618H145H100Q67 618 54 625T41 656\",94:\"138 460Q121 460 109 479T96 512Q96 527 106 534Q109 536 178 571T253 609Q256 611 264 611Q272 610 343 574Q357 567 369 561T389 550T402 543T411 538T416 535T420 532T422 529T425 525Q428 518 428 512Q428 498 416 479T386 460H384Q377 460 316 496L262 526L208 496Q147 460 138 460\",95:\"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60\",96:\"176 479Q176 563 227 622T310 681Q324 680 337 667T350 641Q350 627 340 619T312 599T280 566Q256 531 252 485V471Q261 472 262 472Q285 472 302 455T320 414Q320 389 303 373T261 357Q223 357 200 391T176 479\",123:\"430 -7H436Q449 -7 456 -8T469 -19T475 -45Q475 -69 466 -76T434 -83H419Q386 -82 363 -80T308 -69T253 -41T223 7L221 17L220 118V220L218 224Q215 229 214 230T210 235T204 241T195 246T184 252T170 257T151 262T127 265Q118 267 100 267T69 270T52 283Q50 288 50 306V314Q50 335 67 341Q68 342 102 343T172 355T217 386L220 392V493L221 595Q225 611 230 621T251 650T304 679T395 693L406 694Q418 694 426 694Q458 694 466 685Q475 676 475 656T466 627Q458 618 430 618Q319 618 305 587L304 486Q304 476 304 458T305 431Q305 385 295 358T251 311L243 306Q243 305 254 298T281 274T302 231Q304 223 304 125L305 25Q309 16 316 10T352 -1T430 -7\",124:\"228 668Q241 694 262 694Q268 694 273 693T282 688T287 682T293 674L297 668V-57Q282 -82 262 -82Q239 -82 228 -57V668\",125:\"49 655Q49 674 56 682T73 692T106 694Q141 693 167 690T224 677T275 647T303 595L305 392Q313 367 347 356T417 344T457 341Q475 335 475 306Q475 292 473 285T464 273T451 269T430 267Q352 262 327 246Q311 236 305 220L303 17L301 7Q294 -16 277 -33T242 -60T196 -74T150 -80T106 -83Q78 -83 72 -82T58 -74Q49 -65 49 -44Q49 -24 58 -16Q66 -7 94 -7Q143 -7 171 -1T207 10T220 25V125Q220 223 222 231Q228 257 243 274T270 299L281 306Q234 329 222 381Q220 387 220 486V587Q212 597 207 601T173 612T94 618Q66 618 58 627Q49 635 49 655\",126:\"125 467Q113 467 100 480T87 509Q88 520 111 543Q172 602 209 609Q219 611 224 611Q246 611 263 596T290 566T304 551Q319 551 367 594Q383 610 396 610H400Q411 610 424 597T437 568Q436 557 413 534Q348 469 305 466Q278 466 260 481T234 511T220 526Q205 526 157 483Q141 467 129 467H125\",127:\"104 565Q104 590 120 600T155 611Q175 611 180 610Q217 599 217 565Q217 545 202 532T166 519H159H155Q120 519 107 547Q104 553 104 565ZM307 565Q307 580 317 593T346 610Q348 610 350 610T354 611Q355 612 367 612Q395 611 408 597T421 565T409 534T365 519H358Q336 519 322 532T307 565\",160:\"\",305:\"411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411\",567:\"75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107\",697:\"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572\",768:\"-409 569Q-409 586 -399 596T-377 610Q-376 610 -372 610T-365 611Q-355 610 -284 588T-210 563Q-195 556 -195 537Q-195 533 -197 522T-208 498T-229 485Q-238 485 -312 508T-388 533Q-400 538 -405 552Q-409 559 -409 569\",769:\"-297 485Q-315 485 -323 505T-331 537Q-331 556 -316 563Q-307 569 -170 610Q-169 610 -165 610T-157 611Q-141 609 -131 600T-119 584T-117 569Q-117 555 -124 545T-138 533Q-140 531 -214 508T-297 485\",770:\"-387 460Q-404 460 -416 479T-429 512Q-429 527 -419 534Q-416 536 -347 571T-272 609Q-269 611 -261 611Q-254 610 -182 574Q-168 567 -156 561T-136 550T-123 543T-114 538T-109 535T-105 532T-103 529T-100 525Q-97 518 -97 512Q-97 498 -109 479T-139 460H-141Q-148 460 -209 496L-263 526L-317 496Q-378 460 -387 460\",771:\"-400 467Q-412 467 -425 480T-438 509Q-437 520 -414 543Q-353 602 -316 609Q-306 611 -301 611Q-279 611 -262 596T-235 566T-221 551Q-206 551 -158 594Q-142 610 -129 610H-125Q-114 610 -101 597T-88 568Q-89 557 -112 534Q-177 469 -220 466Q-247 466 -265 481T-291 511T-305 526Q-320 526 -368 483Q-384 467 -396 467H-400\",772:\"-429 500Q-440 504 -445 511T-450 522T-452 536Q-452 552 -451 556Q-445 571 -434 574T-379 578Q-369 578 -330 578T-261 577H-96Q-94 575 -90 573T-85 569T-81 564T-77 558T-75 550T-74 538Q-74 522 -78 515T-96 500H-429\",774:\"-446 579Q-446 611 -412 611H-407Q-383 609 -378 599T-358 587Q-340 583 -263 583H-235Q-159 583 -152 593Q-145 611 -120 611H-117H-115Q-79 611 -79 577Q-80 552 -95 536T-140 514T-191 506T-251 504H-263H-274Q-311 504 -334 505T-386 513T-431 536T-446 579\",776:\"-421 565Q-421 590 -405 600T-370 611Q-350 611 -345 610Q-308 599 -308 565Q-308 545 -323 532T-359 519H-366H-370Q-405 519 -418 547Q-421 553 -421 565ZM-218 565Q-218 580 -208 593T-179 610Q-177 610 -175 610T-171 611Q-170 612 -158 612Q-130 611 -117 597T-104 565T-116 534T-160 519H-167Q-189 519 -203 532T-218 565\",778:\"-344 558Q-344 583 -321 601T-262 619Q-225 619 -204 600T-182 560Q-182 536 -205 518T-264 499Q-301 499 -322 519T-344 558ZM-223 559Q-223 570 -234 579T-261 588T-289 580T-303 559Q-303 549 -293 540T-263 530T-234 539T-223 559\",780:\"-427 525Q-427 542 -417 559T-392 577Q-385 577 -323 553L-263 530L-203 553Q-143 576 -136 576Q-118 576 -109 559T-99 525Q-99 508 -107 502T-161 481Q-177 475 -186 472Q-256 449 -263 449Q-272 449 -339 472T-412 498Q-420 501 -423 508T-427 520V525\",913:\"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221\",914:\"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176\",915:\"466 611Q468 609 473 606T479 602T483 598T486 593T487 586T488 576T488 562V526V488Q488 452 470 444Q466 442 446 442Q421 442 413 450Q406 457 405 463T404 501V535H185V76H222H239Q260 76 270 69T281 38Q281 12 270 6T209 0H155H104Q48 0 37 5T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594Q33 606 43 608T106 611H258H466\",916:\"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501\",917:\"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271\",918:\"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71\",919:\"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571\",920:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM262 66Q285 66 300 67T329 74T351 86T366 108T376 138T381 181T383 235T384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 247 141 215T146 151T158 107T179 82T212 69T262 66ZM179 356Q187 378 219 378H223Q240 377 249 372T260 360L261 355Q261 353 262 353T263 355Q263 362 272 369Q280 377 304 377H310Q325 377 331 374T346 356V256Q338 241 331 238T309 234H304Q280 234 272 242Q263 249 263 256Q263 258 262 258T261 256Q261 249 252 242Q244 234 220 234H216Q186 234 179 256V356\",921:\"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400\",922:\"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573\",923:\"30 38Q30 57 38 66T70 76Q88 76 88 78Q89 79 117 207T173 466T205 602Q213 617 231 622H236Q241 622 249 622T264 623H294Q315 609 319 602Q321 598 350 468T407 208T435 78Q436 76 454 76Q470 76 478 73Q495 62 495 38Q495 10 473 1H313Q290 10 290 38Q290 56 297 65T310 74T331 76Q350 76 350 78Q349 80 328 176T285 383T263 520Q263 526 262 527Q261 527 261 521Q261 497 240 388T198 181T174 78Q174 76 193 76Q220 75 227 65Q234 56 234 38Q234 28 234 24T228 13T212 1H52Q30 9 30 32V38\",924:\"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50\",925:\"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571\",926:\"37 555V569Q37 605 60 610H66Q71 610 81 610T105 610T137 610T175 611T217 611T264 611H465Q467 609 471 606T477 602T481 599T484 594T485 588T487 580T487 570T487 554Q487 526 486 520T478 506Q470 498 445 498T412 506Q403 515 403 531V539H121V531Q121 498 86 498H79H71Q48 498 39 517Q37 522 37 555ZM109 318V346Q109 366 113 374T132 389H170Q193 379 193 359V354H331V359Q331 379 354 389H392Q407 381 411 373T415 342V318V290Q415 270 411 262T392 247H354Q331 257 331 277V282H193V277Q193 257 170 247H132Q117 255 113 263T109 294V318ZM56 1Q41 7 37 15T33 42V58V80Q33 101 41 110T77 119Q87 118 91 118T103 114T114 103T117 83V72H407V83Q407 101 416 110T449 119T482 110Q489 103 490 97T491 59V41Q491 24 487 16T469 1H56\",927:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513\",928:\"60 535Q45 535 38 536T24 545T16 571Q16 603 36 609Q41 611 264 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V535H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60\",929:\"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421\",931:\"40 575Q40 576 40 579T41 583T41 588T43 593T46 597T50 602T55 606T63 610H68Q74 610 84 610T108 610T139 610T176 611T219 611T264 611H462Q464 609 469 606T475 602T479 598T482 593T483 586T484 576T484 562V526V488Q484 452 466 444Q462 442 442 442Q417 442 409 450Q402 457 401 463T400 501V535H153Q153 533 218 430Q233 405 250 378T276 336T286 319Q290 311 290 307Q290 296 239 211Q229 194 223 184L161 78H400V112Q400 142 401 149T409 163Q418 172 442 172Q473 172 482 152Q484 147 484 86V49Q484 25 481 17T462 1H63Q41 10 41 31Q41 39 43 44Q43 45 81 109T157 238L195 303Q195 307 119 430T41 557T40 575\",932:\"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38\",933:\"38 494Q38 549 74 585T152 621Q168 621 179 619T209 606T241 566T262 492Q262 494 265 507T270 526T276 547T285 569T298 589T315 606T337 617T365 622Q416 622 451 584T486 494Q486 470 469 461Q464 459 445 459H437Q416 459 406 476Q404 479 403 502T393 541T365 558Q350 558 340 548T323 519T312 475T307 419T305 354T304 282Q304 254 304 239V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V239Q220 256 220 289T220 338T219 383T217 426T214 463T209 497T201 522T189 543T174 555Q168 558 159 558Q139 558 131 541T121 502T118 476Q108 459 84 459H79H71Q38 459 38 494\",934:\"139 573V578Q139 603 161 610H166Q172 610 182 610T204 610T232 611T264 611H364Q379 602 382 595T385 573Q385 544 364 536L334 535H304V441H306Q313 440 325 438T367 426T421 403T464 364T483 306Q483 251 430 216T317 172Q315 172 313 172T308 170H306H304V76H364Q379 67 382 60T385 38Q385 28 385 24T379 12T364 1H161Q139 8 139 33V38Q139 46 139 49T141 58T148 68T161 76H220V170H218Q211 171 199 173T157 185T103 208T60 248T41 306Q41 361 94 396T208 439Q210 439 212 439T216 440L218 441H220V535H190L161 536Q139 543 139 573ZM124 306Q124 286 147 271T194 252L218 247Q220 247 220 306V364H218Q212 364 192 359T148 340T124 306ZM400 305Q400 325 377 340T330 360L306 364Q304 364 304 306Q304 247 306 247Q312 247 332 252T376 271T400 305\",935:\"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571\",936:\"37 439Q38 451 40 457T52 469T77 475H79Q96 475 107 473T132 456T152 411Q152 409 153 396T154 372V365Q154 291 198 261Q215 251 219 251Q220 251 220 393V535H193L167 536Q145 545 145 567V573Q145 602 167 610Q168 611 264 611H358Q372 602 376 595T380 573Q380 545 358 536L331 535H304V393Q304 251 305 251Q307 251 310 252T323 259T339 272T355 295T367 331Q368 337 370 372Q370 382 371 395T372 411Q376 434 384 448T404 467T425 474T447 475Q461 474 467 473T480 463T487 437Q487 419 481 412Q476 403 459 398Q457 390 453 344T431 263Q415 228 383 205T332 177T306 172H304V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V172H218Q211 172 192 177T141 205T93 263Q74 298 71 343T67 391L66 398Q47 403 42 411T37 433V439\",937:\"40 404Q40 498 106 560T258 622Q357 622 420 558T484 406Q484 359 469 311T428 205T392 117Q382 84 382 78Q382 76 402 76H421V87Q421 110 431 116T457 123Q474 123 483 114Q490 107 491 100T492 61V42Q492 11 474 3Q470 1 397 1H324Q302 9 302 32V39Q302 104 351 225T400 405Q400 462 361 504T262 546Q200 546 162 504T124 405Q124 346 171 230T223 42V36Q223 11 205 3Q201 1 128 1H55Q39 7 33 23L32 60V80Q32 94 34 102T44 116T68 123Q103 123 103 87V76H123Q142 76 142 78Q142 100 117 156T66 282T40 404\",8215:\"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60\",8242:\"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572\",8260:\"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83\",8710:\"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8279:\"\\u2032\\u2032\\u2032\\u2032\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.monospace=void 0,e.monospace={32:[0,0,.525],33:[.622,0,.525],34:[.623,-.333,.525],35:[.611,0,.525],36:[.694,.082,.525],37:[.694,.083,.525],38:[.622,.011,.525],39:[.611,-.287,.525],40:[.694,.082,.525],41:[.694,.082,.525],42:[.52,-.09,.525],43:[.531,-.081,.525],44:[.14,.139,.525],45:[.341,-.271,.525],46:[.14,0,.525],47:[.694,.083,.525],58:[.431,0,.525],59:[.431,.139,.525],60:[.557,-.055,.525],61:[.417,-.195,.525],62:[.557,-.055,.525],63:[.617,0,.525],64:[.617,.006,.525],91:[.694,.082,.525],92:[.694,.083,.525],93:[.694,.082,.525],94:[.611,-.46,.525],95:[-.025,.095,.525],96:[.681,-.357,.525],123:[.694,.083,.525],124:[.694,.082,.525],125:[.694,.083,.525],126:[.611,-.466,.525],127:[.612,-.519,.525],160:[0,0,.525],305:[.431,0,.525],567:[.431,.228,.525],697:[.623,-.334,.525],768:[.611,-.485,0],769:[.611,-.485,0],770:[.611,-.46,0],771:[.611,-.466,0],772:[.577,-.5,0],774:[.611,-.504,0],776:[.612,-.519,0],778:[.619,-.499,0],780:[.577,-.449,0],913:[.623,0,.525],914:[.611,0,.525],915:[.611,0,.525],916:[.623,0,.525],917:[.611,0,.525],918:[.611,0,.525],919:[.611,0,.525],920:[.621,.01,.525],921:[.611,0,.525],922:[.611,0,.525],923:[.623,0,.525],924:[.611,0,.525],925:[.611,0,.525],926:[.611,0,.525],927:[.621,.01,.525],928:[.611,0,.525],929:[.611,0,.525],931:[.611,0,.525],932:[.611,0,.525],933:[.622,0,.525],934:[.611,0,.525],935:[.611,0,.525],936:[.611,0,.525],937:[.622,0,.525],8215:[-.025,.095,.525],8242:[.623,-.334,.525],8243:[.623,0,1.05],8244:[.623,0,1.575],8260:[.694,.083,.525],8279:[.623,0,2.1],8710:[.623,0,.525]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normal=void 0;var r=Q(6),T=Q(236);e.normal=r.AddPaths(T.normal,{32:\"\",33:\"78 661Q78 682 96 699T138 716T180 700T199 661Q199 654 179 432T158 206Q156 198 139 198Q121 198 119 206Q118 209 98 431T78 661ZM79 61Q79 89 97 105T141 121Q164 119 181 104T198 61Q198 31 181 16T139 1Q114 1 97 16T79 61\",34:\"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634\",35:\"56 347Q56 360 70 367H313L355 524Q394 676 401 686Q406 694 416 694Q434 694 436 676Q436 672 396 522Q355 374 355 369L354 367H543L585 524Q626 679 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 668 626 522Q585 374 585 369L584 367H762Q777 359 777 347Q777 334 767 331T722 327H667H572L552 251L531 174Q531 173 647 173H720Q756 173 766 170T777 153T762 133H519L477 -24Q436 -179 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -177Q397 -167 436 -21Q477 125 477 131L478 133H289L247 -24Q206 -179 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -177Q167 -167 206 -21Q247 125 247 131L248 133H70Q56 140 56 153Q56 168 72 173H260L280 249L301 326Q301 327 186 327H72Q56 332 56 347ZM531 326Q531 327 437 327H342L322 251L301 174Q301 173 395 173H490L510 249L531 326\",36:\"162 187Q162 164 146 149T109 133H103V130Q108 115 115 105Q122 92 131 82T150 64T170 52T190 44T206 40T220 37L227 36V313Q190 320 162 335Q116 358 86 404T55 508Q55 567 85 614T165 685Q186 696 225 704H227V750H273V704L286 703Q369 690 413 631Q441 588 444 531Q444 514 443 509Q439 490 425 479T391 468Q368 468 353 483T337 522Q337 546 353 560T390 575L394 576V578Q386 599 372 614T342 637T314 649T288 656L273 658V408L288 405Q329 394 355 376Q396 348 420 300T444 199Q444 130 408 76T313 1Q286 -9 276 -9H273V-56H227V-10H221Q202 -6 193 -4T155 11T108 41T74 94T55 176V182Q55 227 95 238Q103 240 108 240Q129 240 145 226T162 187ZM225 657Q219 657 204 651T169 632T135 594T121 538Q121 512 131 491T156 457T187 435T213 423T227 420V539Q227 657 225 657ZM378 169Q378 230 339 265T274 301Q273 301 273 169V37Q324 50 351 87T378 169\",37:\"465 605Q428 605 394 614T340 632T319 641Q332 608 332 548Q332 458 293 403T202 347Q145 347 101 402T56 548Q56 637 101 693T202 750Q241 750 272 719Q359 642 464 642Q580 642 650 732Q662 748 668 749Q670 750 673 750Q682 750 688 743T693 726Q178 -47 170 -52Q166 -56 160 -56Q147 -56 142 -45Q137 -36 142 -27Q143 -24 363 304Q469 462 525 546T581 630Q528 605 465 605ZM207 385Q235 385 263 427T292 548Q292 617 267 664T200 712Q193 712 186 709T167 698T147 668T134 615Q132 595 132 548V527Q132 436 165 403Q183 385 203 385H207ZM500 146Q500 234 544 290T647 347Q699 347 737 292T776 146T737 0T646 -56Q590 -56 545 0T500 146ZM651 -18Q679 -18 707 24T736 146Q736 215 711 262T644 309Q637 309 630 306T611 295T591 265T578 212Q577 200 577 146V124Q577 -18 647 -18H651\",38:\"156 540Q156 620 201 668T302 716Q354 716 377 671T401 578Q401 505 287 386L274 373Q309 285 416 148L429 132L437 142Q474 191 543 309L562 341V349Q562 368 541 376T498 385H493V431H502L626 428Q709 428 721 431H727V385H712Q688 384 669 379T639 369T618 354T603 337T591 316T578 295Q537 223 506 176T464 117T454 104Q454 102 471 85T497 62Q543 24 585 24Q618 24 648 48T682 113V121H722V112Q721 94 714 75T692 32T646 -7T574 -22Q491 -19 414 42L402 51L391 42Q312 -22 224 -22Q144 -22 93 25T42 135Q42 153 46 169T55 197T74 225T96 249T125 278T156 308L195 347L190 360Q185 372 182 382T174 411T165 448T159 491T156 540ZM361 576Q361 613 348 646T305 679Q272 679 252 649T232 572Q232 497 255 426L259 411L267 420Q361 519 361 576ZM140 164Q140 103 167 64T240 24Q271 24 304 36T356 61T374 77Q295 156 235 262L220 292L210 310L193 293Q177 277 169 268T151 229T140 164\",39:\"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634\",40:\"94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250\",41:\"60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749\",42:\"215 721Q216 732 225 741T248 750Q263 750 273 742T284 721L270 571L327 613Q383 654 388 657T399 660Q412 660 423 650T435 624T424 600T376 575Q363 569 355 566L289 534L355 504L424 470Q435 462 435 447Q435 431 424 420T399 409Q393 409 388 412T327 456L270 498L277 423L284 348Q280 320 250 320T215 348L229 498L172 456Q116 415 111 412T100 409Q87 409 76 420T64 447Q64 461 75 470L144 504L210 534L144 566Q136 570 122 576Q83 593 74 600T64 624Q64 639 75 649T100 660Q106 660 111 657T172 613L229 571Q229 578 222 643T215 721\",43:\"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250\",44:\"78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17\",45:\"11 179V252H277V179H11\",46:\"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60\",47:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",48:\"96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597\",49:\"213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578\",50:\"109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429\",51:\"127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463\",52:\"462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293\",53:\"164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157\",54:\"42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397\",55:\"55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458\",56:\"70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21\",57:\"352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248\",58:\"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60\",59:\"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 85 94 103T137 121Q202 121 202 8Q202 -44 183 -94T144 -169T118 -194Q115 -194 106 -186T95 -174Q94 -171 107 -155T137 -107T160 -38Q161 -32 162 -22T165 -4T165 4Q165 5 161 4T142 0Q110 0 94 18T78 60\",60:\"694 -11T694 -19T688 -33T678 -40Q671 -40 524 29T234 166L90 235Q83 240 83 250Q83 261 91 266Q664 540 678 540Q681 540 687 534T694 519T687 505Q686 504 417 376L151 250L417 124Q686 -4 687 -5Q694 -11 694 -19\",61:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",62:\"84 520Q84 528 88 533T96 539L99 540Q106 540 253 471T544 334L687 265Q694 260 694 250T687 235Q685 233 395 96L107 -40H101Q83 -38 83 -20Q83 -19 83 -17Q82 -10 98 -1Q117 9 248 71Q326 108 378 132L626 250L378 368Q90 504 86 509Q84 513 84 520\",63:\"226 668Q190 668 162 656T124 632L114 621Q116 621 119 620T130 616T145 607T157 591T162 567Q162 544 147 529T109 514T71 528T55 566Q55 625 100 661T199 704Q201 704 210 704T224 705H228Q281 705 320 692T378 656T407 612T416 567Q416 503 361 462Q267 395 247 303Q242 279 242 241V224Q242 205 239 202T222 198T205 201T202 218V249Q204 320 220 371T255 445T292 491T315 537Q317 546 317 574V587Q317 604 315 615T304 640T277 661T226 668ZM162 61Q162 89 180 105T224 121Q247 119 264 104T281 61Q281 31 264 16T222 1Q197 1 180 16T162 61\",64:\"56 347Q56 429 86 498T164 612T270 680T386 705Q522 705 622 603T722 349Q722 126 608 126Q541 126 513 176Q512 177 512 179T510 182L509 183Q508 183 503 177T487 163T464 146T429 132T385 126Q311 126 251 186T190 347Q190 448 251 508T385 568Q426 568 460 548T509 511T531 479H555Q580 479 582 478Q586 477 587 468Q588 454 588 338V260Q588 200 593 182T619 163Q641 163 655 178T674 223T680 273T682 325V330Q682 426 647 500Q611 569 544 618T388 668Q271 668 184 577T96 347Q96 216 180 121T396 26Q421 26 446 28T493 34T535 43T573 52T605 63T629 72T647 80T657 84H716Q722 78 722 74Q722 65 675 45T547 7T392 -11Q255 -11 156 90T56 347ZM274 347Q274 266 308 214T390 162Q420 162 449 182T498 235L504 245V449L498 459Q453 532 387 532Q347 532 311 483T274 347\",65:\"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447\",66:\"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188\",67:\"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q322 658 252 588Q173 509 173 342Q173 221 211 151Q232 111 263 84T328 45T384 29T428 24Q517 24 571 93T626 244Q626 251 632 257H660L666 251V236Q661 133 590 56T403 -21Q262 -21 159 83T56 342\",68:\"130 622Q123 629 119 631T103 634T60 637H27V683H228Q399 682 419 682T461 676Q504 667 546 641T626 573T685 470T708 336Q708 210 634 116T442 3Q429 1 228 0H27V46H60Q102 47 111 49T130 61V622ZM593 338Q593 439 571 501T493 602Q439 637 355 637H322H294Q238 637 234 628Q231 624 231 344Q231 62 232 59Q233 49 248 48T339 46H350Q456 46 515 95Q561 133 577 191T593 338\",69:\"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619\",70:\"128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619\",71:\"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q401 658 376 654T316 633T254 592T205 519T177 411Q173 369 173 335Q173 259 192 201T238 111T302 58T370 31T431 24Q478 24 513 45T559 100Q562 110 562 160V212Q561 213 557 216T551 220T542 223T526 225T502 226T463 227H437V273H449L609 270Q715 270 727 273H735V227H721Q674 227 668 215Q666 211 666 108V6Q660 0 657 0Q653 0 639 10Q617 25 600 42L587 54Q571 27 524 3T406 -22Q317 -22 238 22T108 151T56 342\",72:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",73:\"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328\",74:\"89 177Q115 177 133 160T152 112Q152 88 137 72T102 52Q99 51 101 49Q106 43 129 29Q159 15 190 15Q232 15 256 48T286 126Q286 127 286 142T286 183T286 238T287 306T287 378Q287 403 287 429T287 479T287 524T286 563T286 593T286 614V621Q281 630 263 633T182 637H154V683H166Q187 680 332 680Q439 680 457 683H465V637H449Q422 637 401 634Q393 631 389 623Q388 621 388 376T387 123Q377 61 322 20T194 -22Q188 -22 177 -21T160 -20Q96 -9 61 29T25 110Q25 144 44 160T89 177\",75:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",76:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q48 680 182 680Q324 680 348 683H360V637H333Q273 637 258 635T233 622L232 342V129Q232 57 237 52Q243 47 313 47Q384 47 410 53Q470 70 498 110T536 221Q536 226 537 238T540 261T542 272T562 273H582V268Q580 265 568 137T554 5V0H25V46H58Q100 47 109 49T128 61V622\",77:\"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622\",78:\"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42\",79:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647\",80:\"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488\",81:\"56 341Q56 499 157 602T388 705Q521 705 621 601T722 341Q722 275 703 218T660 127T603 63T555 25T525 9Q524 8 524 8H523Q524 5 526 -1T537 -21T555 -47T581 -67T615 -76Q653 -76 678 -56T706 -3Q707 10 716 10Q721 10 728 5L727 -13Q727 -88 697 -140T606 -193Q563 -193 538 -166T498 -83Q483 -23 483 -8L471 -11Q459 -14 435 -18T388 -22Q254 -22 155 81T56 341ZM607 339Q607 429 586 496T531 598T461 649T390 665T318 649T248 598T192 496T170 339Q170 143 277 57Q301 39 305 39L304 42Q304 44 304 46Q301 53 301 68Q301 101 325 128T391 155Q454 155 495 70L501 58Q549 91 578 164Q607 234 607 339ZM385 18Q404 18 425 23T459 33T472 40Q471 47 468 57T449 88T412 115Q398 117 386 117Q367 117 353 102T338 67Q338 48 351 33T385 18\",82:\"130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499\",83:\"55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507\",84:\"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443\",85:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 418V291Q232 189 240 145T280 67Q325 24 389 24Q454 24 506 64T571 183Q575 206 575 410V598Q569 608 565 613T541 627T489 637H472V683H481Q496 680 598 680T715 683H724V637H707Q634 633 622 598L621 399Q620 194 617 180Q617 179 615 171Q595 83 531 31T389 -22Q304 -22 226 33T130 192Q129 201 128 412V622\",86:\"114 620Q113 621 110 624T107 627T103 630T98 632T91 634T80 635T67 636T48 637H19V683H28Q46 680 152 680Q273 680 294 683H305V637H284Q223 634 223 620Q223 618 313 372T404 126L490 358Q575 588 575 597Q575 616 554 626T508 637H503V683H512Q527 680 627 680Q718 680 724 683H730V637H723Q648 637 627 596Q627 595 515 291T401 -14Q396 -22 382 -22H374H367Q353 -22 348 -14Q346 -12 231 303Q114 617 114 620\",87:\"792 683Q810 680 914 680Q991 680 1003 683H1009V637H996Q931 633 915 598Q912 591 863 438T766 135T716 -17Q711 -22 694 -22Q676 -22 673 -15Q671 -13 593 231L514 477L435 234Q416 174 391 92T358 -6T341 -22H331Q314 -21 310 -15Q309 -14 208 302T104 622Q98 632 87 633Q73 637 35 637H18V683H27Q69 681 154 681Q164 681 181 681T216 681T249 682T276 683H287H298V637H285Q213 637 213 620Q213 616 289 381L364 144L427 339Q490 535 492 546Q487 560 482 578T475 602T468 618T461 628T449 633T433 636T408 637H380V683H388Q397 680 508 680Q629 680 650 683H660V637H647Q576 637 576 619L727 146Q869 580 869 600Q869 605 863 612T839 627T794 637H783V683H792\",88:\"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270\",89:\"518 0Q497 3 374 3Q253 3 232 0H221V46H254Q313 47 321 58Q324 62 324 167V273L221 446Q117 620 114 623Q106 631 91 634T31 637H11V683H20Q29 680 148 680Q273 680 294 683H305V637H287Q239 636 236 621Q236 619 321 475L407 332L483 460Q502 492 527 534Q563 594 563 604Q563 632 517 637H508V683H517H525Q533 683 545 683T571 682T600 681T626 681Q695 681 731 683H738V637H723Q640 633 613 588Q612 587 517 427L425 273V169V95Q425 66 428 59T444 49Q459 46 506 46H528V0H518\",90:\"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69\",91:\"118 -250V750H255V710H158V-210H255V-250H118\",92:\"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731\",93:\"22 710V750H159V-250H22V-210H119V710H22\",94:\"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560\",95:\"0 -62V-25H499V-62H0\",96:\"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655\",97:\"137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106\",98:\"307 -11Q234 -11 168 55L158 37Q156 34 153 28T147 17T143 10L138 1L118 0H98V298Q98 599 97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V543Q179 391 180 391L183 394Q186 397 192 401T207 411T228 421T254 431T286 439T323 442Q401 442 461 379T522 216Q522 115 458 52T307 -11ZM182 98Q182 97 187 90T196 79T206 67T218 55T233 44T250 35T271 29T295 26Q330 26 363 46T412 113Q424 148 424 212Q424 287 412 323Q385 405 300 405Q270 405 239 390T188 347L182 339V98\",99:\"370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320\",100:\"376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342\",101:\"28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275\",102:\"273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273\",103:\"329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75\",104:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",105:\"69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",106:\"98 609Q98 637 116 653T160 669Q183 667 200 652T217 609Q217 579 200 564T158 549Q133 549 116 564T98 609ZM28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",107:\"36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36\",108:\"42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42\",109:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",110:\"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41\",111:\"28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30\",112:\"36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218\",113:\"33 218Q33 308 95 374T236 441H246Q330 441 381 372L387 364Q388 364 404 403L420 442H457V156Q457 -132 458 -134Q462 -142 470 -145Q491 -148 519 -148H535V-194H527L504 -193Q480 -192 453 -192T415 -191Q312 -191 303 -194H295V-148H311Q339 -148 360 -145Q369 -141 371 -135T373 -106V-41V49Q313 -11 236 -11Q154 -11 94 53T33 218ZM376 300Q346 389 278 401Q275 401 269 401T261 402Q211 400 171 350T131 214Q131 137 165 82T253 27Q296 27 328 54T376 118V300\",114:\"36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36\",115:\"295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316\",116:\"27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27\",117:\"383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58\",118:\"338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338\",119:\"90 368Q84 378 76 380T40 385H18V431H24L43 430Q62 430 84 429T116 428Q206 428 221 431H229V385H215Q177 383 177 368Q177 367 221 239L265 113L339 328L333 345Q323 374 316 379Q308 384 278 385H258V431H264Q270 428 348 428Q439 428 454 431H461V385H452Q404 385 404 369Q404 366 418 324T449 234T481 143L496 100L537 219Q579 341 579 347Q579 363 564 373T530 385H522V431H529Q541 428 624 428Q692 428 698 431H703V385H697Q696 385 691 385T682 384Q635 377 619 334L559 161Q546 124 528 71Q508 12 503 1T487 -11H479Q460 -11 456 -4Q455 -3 407 133L361 267Q359 263 266 -4Q261 -11 243 -11H238Q225 -11 220 -3L90 368\",120:\"201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201\",121:\"69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66\",122:\"42 263Q44 270 48 345T53 423V431H393Q399 425 399 415Q399 403 398 402L381 378Q364 355 331 309T265 220L134 41L182 40H206Q254 40 283 46T331 77Q352 105 359 185L361 201Q361 202 381 202H401V196Q401 195 393 103T384 6V0H209L34 1L31 3Q28 8 28 17Q28 30 29 31T160 210T294 394H236Q169 393 152 388Q127 382 113 367Q89 344 82 264V255H42V263\",123:\"434 -231Q434 -244 428 -250H410Q281 -250 230 -184Q225 -177 222 -172T217 -161T213 -148T211 -133T210 -111T209 -84T209 -47T209 0Q209 21 209 53Q208 142 204 153Q203 154 203 155Q189 191 153 211T82 231Q71 231 68 234T65 250T68 266T82 269Q116 269 152 289T203 345Q208 356 208 377T209 529V579Q209 634 215 656T244 698Q270 724 324 740Q361 748 377 749Q379 749 390 749T408 750H428Q434 744 434 732Q434 719 431 716Q429 713 415 713Q362 710 332 689T296 647Q291 634 291 499V417Q291 370 288 353T271 314Q240 271 184 255L170 250L184 245Q202 239 220 230T262 196T290 137Q291 131 291 1Q291 -134 296 -147Q306 -174 339 -192T415 -213Q429 -213 431 -216Q434 -219 434 -231\",124:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",125:\"65 731Q65 745 68 747T88 750Q171 750 216 725T279 670Q288 649 289 635T291 501Q292 362 293 357Q306 312 345 291T417 269Q428 269 431 266T434 250T431 234T417 231Q380 231 345 210T298 157Q293 143 292 121T291 -28V-79Q291 -134 285 -156T256 -198Q202 -250 89 -250Q71 -250 68 -247T65 -230Q65 -224 65 -223T66 -218T69 -214T77 -213Q91 -213 108 -210T146 -200T183 -177T207 -139Q208 -134 209 3L210 139Q223 196 280 230Q315 247 330 250Q305 257 280 270Q225 304 212 352L210 362L209 498Q208 635 207 640Q195 680 154 696T77 713Q68 713 67 716T65 731\",126:\"179 251Q164 251 151 245T131 234T111 215L97 227L83 238Q83 239 95 253T121 283T142 304Q165 318 187 318T253 300T320 282Q335 282 348 288T368 299T388 318L402 306L416 295Q375 236 344 222Q330 215 313 215Q292 215 248 233T179 251\",160:\"\",163:\"699 578Q699 473 635 473Q597 473 595 508Q595 559 654 569V576Q654 619 637 648T581 677Q545 677 513 647T463 561Q460 554 437 464T414 371Q414 370 458 370H502Q508 364 508 362Q505 334 495 324H402L382 241Q377 224 373 206T366 180T361 163T358 151T354 142T350 133T344 120Q340 112 338 107T336 101L354 90Q398 63 422 54T476 44Q515 44 539 73T574 133Q578 144 580 146T598 148Q622 148 622 139Q622 138 620 130Q602 74 555 32T447 -11Q395 -11 317 38L294 51Q271 28 233 9T155 -10Q117 -10 103 5T88 39Q88 73 126 106T224 139Q236 139 247 138T266 134L273 132Q275 132 302 239L323 324H259Q253 330 253 332Q253 350 265 370H300L334 371L355 453Q356 457 360 477T366 501T372 522T379 545T387 565T397 587T409 606T425 627Q453 664 497 689T583 714Q640 714 669 676T699 578ZM245 76Q211 85 195 85Q173 85 158 71T142 42Q142 26 160 26H163Q211 30 245 76\",165:\"515 0Q494 3 374 3Q256 3 235 0H224V46H257Q316 47 324 58Q327 62 327 137V213H133Q121 213 113 213T97 213T86 213T78 213T73 214T70 215T69 216T68 218T67 220Q64 225 66 231T73 240Q76 242 202 242H327V273L247 407H115Q81 407 75 408T67 414Q64 419 66 425T73 434Q76 436 153 436Q228 436 228 437Q227 440 173 530T115 623Q101 637 31 637H11V683H20Q66 681 153 681Q169 681 202 681T262 682L288 683H298V637H280Q230 636 230 621Q230 619 250 584Q255 576 264 561T286 526T305 494L340 437L403 436H467L513 514Q564 596 564 605Q564 608 560 616Q550 634 517 637H508V683H516Q531 680 633 680Q722 680 731 683H738V637H723Q644 632 617 595Q614 591 568 515T521 437T597 436T676 434Q681 432 683 426T682 414T671 409T589 407H503L422 273V242H547Q673 242 676 240Q681 238 683 232T682 220Q682 219 682 218T681 217T679 216T677 215T672 214T664 213T652 213T637 213T616 213H422V139V87Q422 64 425 58T441 49Q456 46 503 46H525V0H515ZM449 406Q449 407 403 407Q358 407 358 406L370 387Q381 368 392 350L404 331Q447 404 449 406\",168:\"95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611\",172:\"56 323T56 336T70 356H596Q603 353 611 343V102Q598 89 591 89Q587 89 584 90T579 94T575 98T572 102L571 209V316H70Q56 323 56 336\",174:\"915 266Q915 140 852 38T689 -120T474 -175Q312 -175 188 -71T38 190Q32 220 32 266V287Q32 345 57 416T129 545Q192 624 282 666T464 709Q513 709 522 708Q599 698 665 666T776 590T853 493T900 387T915 287V266ZM875 285Q875 339 853 399T789 517T676 616T519 668Q510 669 465 669Q380 669 299 630T155 514T77 336Q72 312 72 285V266V256Q72 123 163 11Q290 -135 474 -135Q614 -135 727 -46Q875 81 875 266V285ZM276 457Q275 458 274 460T272 463T270 465T267 467T264 469T258 471T252 472T243 473T232 474T218 474H204V514H335Q477 514 499 510Q560 502 610 467T661 375Q661 362 658 350T648 327T635 308T618 292T601 280T583 269T568 262T554 256L547 253Q548 252 556 247T570 237T586 223T602 202T614 174Q616 169 626 123T638 72Q652 23 683 23Q715 23 720 68Q721 78 724 81T740 84T756 82T760 70Q760 47 747 25T715 -7Q700 -14 673 -14Q672 -14 662 -14T643 -12T619 -7T593 2T568 16T547 37T534 67Q531 80 531 97Q531 103 531 116T532 136Q532 218 472 236Q466 238 413 239H360V148L361 58Q366 47 375 44T418 40H432V0H424Q409 3 318 3T212 0H204V40H218Q242 40 253 42T268 47T276 58V457ZM376 473Q365 471 363 464T360 430V366V276H416Q421 276 434 276T453 276T469 277T486 279T501 282T517 287T529 294T542 305Q561 324 561 375Q561 424 545 444T482 472Q478 473 427 474Q415 474 403 474T384 474L376 473\",175:\"69 544V590H430V544H69\",176:\"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628\",177:\"56 320T56 333T70 353H369V502Q369 651 371 655Q376 666 388 666Q402 666 405 654T409 596V500V353H707Q722 345 722 333Q722 320 707 313H409V40H707Q722 32 722 20T707 0H70Q56 7 56 20T70 40H369V313H70Q56 320 56 333\",180:\"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699\",183:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250\",215:\"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29\",240:\"75 566V604Q75 624 79 629T102 635Q124 635 127 629T131 588L133 550L191 588L249 628L231 635Q176 654 124 657Q116 657 106 658L95 659Q94 661 94 687T95 715Q99 717 113 717Q195 717 282 679L309 668L331 681Q351 697 391 721Q428 748 435 748Q437 749 446 749Q470 749 473 746Q478 744 478 681V621Q466 615 456 615Q435 615 424 624L422 661V699L382 675L344 648Q353 639 366 630Q480 538 504 413Q509 393 509 333V313Q509 284 507 257T495 184T466 102T413 33T329 -16Q311 -21 275 -21Q226 -21 195 -10Q150 7 110 50T53 141Q42 179 42 227Q42 332 101 403T245 474Q282 474 314 461T359 436T380 415Q386 405 389 408Q389 426 378 475Q368 505 355 529T329 567T306 590T288 603L282 606L120 501Q116 500 102 500Q84 500 75 506V566ZM388 225Q388 376 309 410Q299 416 273 419Q216 419 191 390Q174 371 168 342T162 218Q162 112 184 79Q212 39 273 39Q312 39 342 62T380 121Q388 159 388 225\",247:\"318 466Q318 500 339 518T386 537Q418 537 438 517T458 466Q458 438 440 417T388 396Q355 396 337 417T318 466ZM56 237T56 250T70 270H706Q721 262 721 250T706 230H70Q56 237 56 250ZM318 34Q318 68 339 86T386 105Q418 105 438 85T458 34Q458 6 440 -15T388 -36Q355 -36 337 -15T318 34\",305:\"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247\",567:\"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163\",697:\"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43\",710:\"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560\",711:\"114 611L127 630L136 644Q138 644 193 612Q248 581 250 581L306 612Q361 644 363 644L385 611L318 562L249 513L114 611\",713:\"69 544V590H430V544H69\",714:\"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699\",715:\"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655\",728:\"250 515Q179 515 138 565T92 683V694H129V689Q129 688 129 683T130 675Q137 631 169 599T248 567Q304 567 337 608T370 689V694H407V683Q403 617 361 566T250 515\",729:\"190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609\",730:\"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628\",732:\"179 601Q164 601 151 595T131 584T111 565L97 577L83 588Q83 589 95 603T121 633T142 654Q165 668 187 668T253 650T320 632Q335 632 348 638T368 649T388 668L402 656L416 645Q375 586 344 572Q330 565 313 565Q292 565 248 583T179 601\",768:\"-394 655Q-394 671 -381 685T-350 699Q-334 699 -323 688Q-310 671 -278 629T-225 561T-205 533T-218 519L-233 505L-304 563Q-381 626 -387 634Q-394 643 -394 655\",769:\"-151 699Q-133 699 -120 686T-107 656Q-107 651 -108 647T-113 637T-120 627T-133 616T-149 602T-170 585T-197 563L-268 505L-283 519Q-297 533 -296 533Q-296 534 -271 567T-218 636T-187 678L-184 681Q-182 684 -179 686T-172 692T-163 697T-151 699\",770:\"-388 560L-251 694L-243 686Q-113 562 -113 560L-139 531Q-141 532 -197 581L-250 627L-305 580Q-318 569 -331 557T-352 538L-360 532Q-362 530 -375 546L-388 560\",771:\"-321 601Q-336 601 -349 595T-369 584T-389 565L-403 577L-417 588Q-417 589 -405 603T-379 633T-358 654Q-335 668 -313 668T-247 650T-180 632Q-165 632 -152 638T-132 649T-112 668L-98 656L-84 645Q-125 586 -156 572Q-170 565 -187 565Q-208 565 -252 583T-321 601\",772:\"-431 544V590H-70V544H-431\",774:\"-250 515Q-321 515 -362 565T-408 683V694H-371V689Q-371 688 -371 683T-370 675Q-363 631 -331 599T-252 567Q-196 567 -163 608T-130 689V694H-93V683Q-97 617 -139 566T-250 515\",775:\"-310 609Q-310 637 -292 653T-248 669Q-225 667 -208 652T-191 609Q-191 579 -208 564T-250 549Q-275 549 -292 564T-310 609\",776:\"-405 612Q-405 633 -388 651T-347 669T-307 652T-290 612Q-290 588 -306 571T-348 554L-373 560Q-405 577 -405 612ZM-211 611Q-211 634 -196 649T-165 668Q-164 668 -160 668T-154 669Q-131 669 -114 652T-96 612T-113 572T-154 554Q-177 554 -194 570T-211 611\",778:\"-353 628Q-353 669 -321 692T-256 715Q-202 715 -175 689T-148 629Q-148 592 -177 567T-251 542Q-298 542 -325 567T-353 628ZM-187 628Q-187 660 -200 669T-241 678H-247Q-252 678 -258 678T-266 679Q-283 679 -293 674T-308 659T-312 644T-313 629Q-313 600 -302 590Q-290 579 -250 579H-235Q-221 579 -212 581T-195 595T-187 628\",779:\"-292 701Q-278 701 -262 690T-246 658Q-246 649 -250 641Q-252 637 -297 574T-344 510L-378 528Q-378 530 -355 598T-327 676Q-316 701 -292 701ZM-126 701Q-112 701 -96 690T-80 658Q-80 649 -84 641Q-86 637 -131 574T-178 510L-212 528Q-212 530 -189 598T-161 676Q-150 701 -126 701\",780:\"-386 611L-373 630L-364 644Q-362 644 -307 612Q-252 581 -250 581L-194 612Q-139 644 -137 644L-115 611L-182 562L-251 513L-386 611\",824:\"-612 -215T-619 -215T-631 -212T-637 -204T-639 -197Q-639 -190 -634 -183Q-621 -157 -400 274T-176 707Q-173 716 -160 716Q-153 716 -148 712T-142 703T-140 696Q-140 691 -372 241T-608 -212Q-612 -215 -619 -215\",913:\"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447\",914:\"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188\",915:\"128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619\",916:\"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344\",917:\"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619\",918:\"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69\",919:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",920:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM610 339Q610 428 590 495T535 598T463 651T384 668Q332 668 289 638T221 566Q168 485 168 339Q168 274 176 235Q189 158 228 105T324 28Q356 16 388 16Q415 16 442 24T501 54T555 111T594 205T610 339ZM223 263V422H263V388H514V422H554V263H514V297H263V263H223\",921:\"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328\",922:\"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622\",923:\"320 708Q326 716 340 716H348H355Q367 716 372 708Q374 706 423 547T523 226T575 62Q581 52 591 50T634 46H661V0H653Q644 3 532 3Q411 3 390 0H379V46H392Q464 46 464 65Q463 70 390 305T316 539L246 316Q177 95 177 84Q177 72 198 59T248 46H253V0H245Q230 3 130 3Q47 3 38 0H32V46H45Q112 51 127 91Q128 92 224 399T320 708\",924:\"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622\",925:\"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42\",926:\"47 509L55 676Q55 677 333 677T611 676L619 509Q619 508 599 508T579 510Q579 529 575 557T564 589Q550 594 333 594T102 589Q95 586 91 558T87 510Q87 508 67 508T47 509ZM139 260V445H179V394H487V445H527V260H487V311H179V260H139ZM50 0L42 180H62Q82 180 82 178Q82 133 89 105Q92 93 95 90T108 86Q137 83 333 83Q530 83 558 86Q568 87 571 90T577 105Q584 133 584 178Q584 180 604 180H624L616 0H50\",927:\"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647\",928:\"128 619Q121 626 117 628T101 631T58 634H25V680H724V634H691Q651 633 640 631T622 619V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V634H232V348L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V619\",929:\"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488\",931:\"666 247Q664 244 652 126T638 4V0H351Q131 0 95 0T57 5V6Q54 12 57 17L73 36Q89 54 121 90T182 159L305 299L56 644L55 658Q55 677 60 681Q63 683 351 683H638V679Q640 674 652 564T666 447V443H626V447Q618 505 604 543T559 605Q529 626 478 631T333 637H294H189L293 494Q314 465 345 422Q400 346 400 340Q400 338 399 337L154 57Q407 57 428 58Q476 60 508 68T551 83T575 103Q595 125 608 162T624 225L626 251H666V247\",932:\"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443\",933:\"55 551Q55 604 91 654T194 705Q240 705 277 681T334 624T367 556T385 498L389 474L392 488Q394 501 400 521T414 566T438 615T473 659T521 692T584 705Q620 705 648 689T691 647T714 597T722 551Q722 540 719 538T699 536Q680 536 677 541Q677 542 677 544T676 548Q676 576 650 596T588 616H582Q538 616 505 582Q466 543 454 477T441 318Q441 301 441 269T442 222V61Q448 55 452 53T478 48T542 46H569V0H557Q533 3 389 3T221 0H209V46H236Q256 46 270 46T295 47T311 48T322 51T328 54T332 57T337 61V209Q337 383 333 415Q313 616 189 616Q154 616 128 597T101 548Q101 540 97 538T78 536Q63 536 59 538T55 551\",934:\"312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415\",935:\"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270\",936:\"340 622Q338 623 335 625T331 629T325 631T314 634T298 635T274 636T239 637H212V683H224Q248 680 389 680T554 683H566V637H539Q479 637 464 635T439 622L438 407Q438 192 439 192Q443 193 449 195T474 207T507 232T536 276T557 344Q560 365 562 417T573 493Q587 536 620 544Q627 546 671 546H715L722 540V515Q714 509 708 509Q680 505 671 476T658 392T644 307Q599 177 451 153L438 151V106L439 61Q446 54 451 52T476 48T539 46H566V0H554Q530 3 389 3T224 0H212V46H239Q259 46 273 46T298 47T314 48T325 51T331 54T335 57T340 61V151Q126 178 117 406Q115 503 69 509Q55 509 55 526Q55 541 59 543T86 546H107H120Q150 546 161 543T184 528Q198 514 204 493Q212 472 213 420T226 316T272 230Q287 216 303 207T330 194L339 192Q340 192 340 407V622\",937:\"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454\",8192:\"\",8193:\"\",8194:\"\",8195:\"\",8196:\"\",8197:\"\",8198:\"\",8201:\"\",8202:\"\",8203:\"\",8204:\"\",8211:\"0 248V285H499V248H0\",8212:\"0 248V285H999V248H0\",8213:\"0 248V285H999V248H0\",8214:\"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739\",8215:\"0 -62V-25H499V-62H0\",8216:\"64 494Q64 548 86 597T131 670T160 694Q163 694 172 685T182 672Q182 669 170 656T144 625T116 573T101 501Q101 489 102 489T107 491T120 497T138 500Q163 500 180 483T198 440T181 397T139 379Q110 379 87 405T64 494\",8217:\"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634\",8220:\"128 494Q128 528 137 560T158 616T185 658T209 685T223 694T236 685T245 670Q244 668 231 654T204 622T178 571T164 501Q164 489 165 489T170 491T183 497T201 500Q226 500 244 483T262 440T245 397T202 379Q173 379 151 405T128 494ZM332 494Q332 528 341 560T362 616T389 658T413 685T427 694T439 685T449 672Q449 669 437 656T411 625T383 573T368 501Q368 489 369 489T374 491T387 497T405 500Q430 500 448 483T466 440T449 397T406 379Q377 379 355 405T332 494\",8221:\"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634\",8224:\"182 675Q195 705 222 705Q234 705 243 700T253 691T263 675L262 655Q262 620 252 549T240 454V449Q250 451 288 461T346 472T377 461T389 431Q389 417 379 404T346 390Q327 390 288 401T243 412H240V405Q245 367 250 339T258 301T261 274T263 225Q263 124 255 -41T239 -213Q236 -216 222 -216H217Q206 -216 204 -212T200 -186Q199 -175 199 -168Q181 38 181 225Q181 265 182 280T191 327T204 405V412H201Q196 412 157 401T98 390Q76 390 66 403T55 431T65 458T98 472Q116 472 155 462T205 449Q204 452 204 460T201 490T193 547Q182 619 182 655V675\",8225:\"181 658Q181 705 222 705T263 658Q263 633 252 572T240 497Q240 496 241 496Q243 496 285 507T345 519Q365 519 376 508T388 478Q388 466 384 458T375 447T361 438H344Q318 438 282 448T241 459Q240 458 240 456Q240 449 251 384T263 297Q263 278 255 267T238 253T222 250T206 252T190 266T181 297Q181 323 192 383T204 458Q204 459 203 459Q198 459 162 449T101 438H84Q74 443 70 446T61 457T56 478Q56 497 67 508T99 519Q117 519 159 508T203 496Q204 496 204 499Q204 507 193 572T181 658ZM181 202Q181 249 222 249T263 202Q263 185 259 161T249 103T240 48V41H243Q248 41 287 52T346 63T377 52T389 22Q389 8 379 -5T346 -19Q327 -19 288 -8T243 3H240V-4Q243 -24 249 -58T259 -117T263 -158Q263 -177 255 -188T238 -202T222 -205T206 -203T190 -189T181 -158Q181 -141 185 -117T195 -59T204 -4V3H201Q196 3 157 -8T98 -19Q76 -19 66 -6T55 22T65 49T98 63Q117 63 156 52T201 41H204V48Q201 68 195 102T185 161T181 202\",8226:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251\",8230:\"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60\",8242:\"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43\",8245:\"12 501Q12 527 31 542T63 558Q73 560 77 560Q114 560 128 528Q133 518 188 293T244 61Q244 56 223 50T195 43Q192 43 190 45T102 263T14 486Q12 496 12 501\",8254:\"69 544V590H430V544H69\",8260:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8288:\"\",8289:\"\",8290:\"\",8291:\"\",8292:\"\",8407:\"377 694Q377 702 382 708T397 714Q404 714 409 709Q414 705 419 690Q429 653 460 633Q471 626 471 615Q471 606 468 603T454 594Q411 572 379 531Q377 529 374 525T369 519T364 517T357 516Q350 516 344 521T337 536Q337 555 384 595H213L42 596Q29 605 29 615Q29 622 42 635H401Q377 673 377 694\",8450:\"684 131Q684 125 672 109T633 71T573 29T489 -5T386 -19Q330 -19 276 -3T174 46T91 134T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q212 547 212 336Q212 249 233 179Q274 30 405 30Q533 30 641 130Q658 147 666 147Q671 147 677 143T684 131ZM250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q89 213 113 169T164 101T217 61T260 39L277 34Q270 41 264 48Q199 111 181 254Q178 281 178 344T181 434Q200 559 250 625ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565\",8459:\"331 505Q331 519 382 574T472 629H480Q512 629 529 614T547 576Q547 555 534 532T520 504Q520 493 549 493Q590 493 623 506T668 533L681 546Q731 600 772 641T832 700T852 717Q857 717 860 711T865 697L866 690Q866 688 813 617T708 475T656 403Q682 403 714 404H771L780 416Q1004 707 1167 707Q1209 707 1225 689T1241 646Q1241 604 1209 547T1118 447Q1081 422 1034 405T952 382T888 374T857 370H852L826 334Q733 204 708 144Q691 104 691 76Q691 29 748 29Q768 31 791 48T831 83T862 122T881 146Q883 148 900 148H917Q921 143 921 140T914 127Q810 -8 723 -8Q611 -4 611 100Q611 142 631 191T676 275T721 337T742 367Q716 367 685 366H628L620 355Q618 352 558 268Q486 168 461 141Q405 79 339 34T215 -28Q188 -36 153 -36Q86 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 60Q67 28 99 14T170 0Q214 0 272 47T419 224L505 340L518 357Q513 357 504 356T467 347T415 330T360 300T308 253Q296 238 295 237H278H274Q256 237 256 243Q256 248 263 256Q291 294 330 321T407 362T476 382T530 393T552 398Q556 402 573 423T600 454Q602 457 604 460T608 465L610 467Q565 455 532 455Q465 455 449 483Q447 487 447 498Q447 513 463 538T479 579Q479 593 463 593Q436 593 385 519Q374 504 371 502T360 499H353H349Q331 499 331 505ZM1195 634Q1195 643 1195 648T1185 662T1157 671Q1130 671 1092 644T1019 579T952 502T901 436L882 409L891 410Q900 411 913 412T934 415Q1081 439 1144 520Q1195 590 1195 634\",8460:\"11 -16L1 0Q7 6 25 27T57 62T91 88T128 101Q159 99 195 66L203 59L211 67Q239 95 239 133Q239 158 210 213T152 330T123 430Q123 477 173 536T269 630T320 666Q376 610 440 606H443Q457 606 466 611T519 647L542 664Q543 664 543 654V643L522 622Q434 537 403 537Q388 537 366 543T329 555T293 570T270 580L261 585L253 574Q206 517 206 475Q206 452 218 416T242 356L255 331Q256 331 270 345T324 391T421 459L437 468H453Q545 463 608 421L618 415L623 392Q644 307 644 233Q644 97 612 9Q604 -10 601 -15T581 -35Q505 -104 467 -124Q446 -133 431 -133Q414 -132 399 -126T376 -115T368 -107Q368 -106 392 -75L415 -43Q432 -67 444 -73T472 -79H474Q479 -79 484 -78T501 -69T521 -50T538 -13T551 46Q558 97 558 180Q558 232 557 245Q553 277 547 300T528 349T488 389T424 404Q344 404 276 295Q272 288 273 285Q300 216 300 168Q300 161 300 156T298 145T297 137T293 129T289 123T283 116T277 107Q212 23 178 -13L166 -26L149 -9Q108 32 81 32Q63 32 21 -7L11 -16\",8461:\"14 666Q14 675 26 683H344L351 679Q361 665 351 655Q344 648 317 648Q287 645 282 641Q270 637 269 623T266 497V370H511V497Q511 519 510 553Q509 615 507 626T496 641H495Q489 645 459 648Q420 648 420 665Q420 672 426 679L433 683H751Q762 676 762 666Q762 648 724 648Q684 645 677 632Q675 626 675 341Q675 57 677 52Q684 38 724 35Q762 35 762 16Q762 6 751 -1H433L426 3Q420 10 420 17Q420 35 459 35Q501 38 506 52Q511 64 511 190V323H266V190Q266 60 271 52Q276 38 317 35Q342 35 351 28Q360 17 351 3L344 -1H26Q14 5 14 16Q14 35 53 35Q94 38 99 52Q104 60 104 341T99 632Q93 645 53 648Q14 648 14 666ZM233 341V553Q233 635 239 648H131Q134 641 135 638T137 603T139 517T139 341Q139 131 138 89T132 37Q131 36 131 35H239Q233 47 233 129V341ZM639 341V489Q639 548 639 576T640 620T642 639T646 648H537L542 639Q546 625 546 341Q546 130 545 88T538 37Q537 36 537 35H646Q643 41 643 42T641 55T639 84T639 140V341\",8462:\"137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683\",8463:\"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150\",8464:\"829 148Q845 148 845 143T841 130T823 109T788 83T730 54T644 22Q637 20 634 19T627 16T622 13T618 10T612 3T604 -6Q510 -112 396 -203T201 -312Q190 -314 171 -314H166Q156 -314 147 -312T123 -304T101 -283T92 -245Q92 -203 117 -160T175 -93Q214 -65 280 -41T390 -6T509 22L532 27L547 47Q673 219 673 225L665 228Q657 231 648 235T627 249T606 270T591 300T584 341Q584 389 614 447T686 544Q735 588 799 615T959 667T1108 713Q1118 717 1119 717Q1125 717 1129 705T1133 689Q1133 686 1115 673Q1051 627 1001 579T918 481T867 403T828 328T805 277Q802 271 801 267T798 261T798 259Q849 270 900 317Q956 371 956 421Q956 438 953 457T950 480Q950 481 950 482L951 484Q953 487 966 492T985 498Q989 498 994 473Q1000 441 1000 423Q1000 362 934 302T790 223L775 220L767 207Q757 191 731 158T685 98T662 63Q662 61 690 70T755 99T811 142L816 148H829ZM646 332Q646 308 659 291T685 268L698 263L735 320Q828 465 865 511Q923 582 1003 643L1005 645Q1004 645 924 620Q775 572 716 492Q646 401 646 332ZM184 -278Q233 -278 311 -212T444 -80L498 -15H496Q468 -20 424 -30T293 -70T174 -133Q167 -140 158 -153T138 -190T127 -232Q127 -278 184 -278\",8465:\"190 601Q161 601 137 587T97 553T71 512T55 477T48 463Q44 465 39 468L30 473L35 488Q73 594 106 636T199 685Q200 686 211 686Q250 686 326 652T417 617Q435 617 455 626T497 652T522 670Q532 660 532 654Q469 591 390 550L378 543L343 556Q223 601 190 601ZM378 208Q378 249 369 318T360 424Q360 430 360 439T361 451L362 462Q416 526 482 571L495 580L503 577L511 575L499 562Q442 502 442 465Q442 436 452 368T462 246Q462 169 442 128T385 56Q292 -26 195 -26Q150 -26 104 14L96 21L43 -16Q43 -15 43 -14T41 -10T38 0L48 13Q76 50 123 97L150 125Q154 131 159 131Q166 131 171 116T182 81T193 53Q199 43 216 33T261 22Q307 22 344 68Q378 113 378 208\",8466:\"572 704Q607 704 607 693Q607 681 590 664H588Q586 664 584 664T578 663Q504 658 434 592T363 457Q363 426 386 401Q417 371 481 361Q490 360 527 360H562Q565 363 595 404T666 494T755 596T854 682T945 717Q986 717 1010 696T1035 637Q1035 593 996 531T873 414Q809 378 753 360T674 338T651 333Q650 333 633 308T588 245T544 185Q498 126 426 78L413 68H414Q498 47 575 47Q626 47 676 74T755 139L762 148H779H783Q802 148 802 142Q802 137 795 129Q760 81 691 33T544 -16Q470 -16 366 20L341 29L331 24Q239 -17 155 -17H141Q90 -17 61 -12T23 1T14 22Q14 44 39 65T103 95Q126 101 180 101Q224 101 258 98T309 90T330 86Q332 86 353 103T389 135Q401 146 412 158T431 179T450 203T466 225T485 252T505 280L535 322H509Q391 322 340 362T289 452Q289 495 321 547T396 630Q438 665 486 684T572 704ZM978 635Q978 644 977 650T973 661T968 668T961 673T954 676T946 678T938 680Q929 680 925 677Q893 659 795 531T682 377Q683 377 711 385T755 401T801 421T856 453T906 495Q927 516 952 557T978 635ZM274 50Q274 51 258 54T216 61T166 65Q160 65 151 65T140 64Q115 58 102 48T88 31Q88 20 159 20Q191 20 219 27T261 42L274 50\",8467:\"345 104T349 104T361 95T369 80T352 59Q268 -20 206 -20Q170 -20 146 3T113 53T99 104L94 129Q94 130 79 116T48 86T28 70Q22 70 15 79T7 94Q7 98 12 103T58 147L91 179V185Q91 186 91 191T92 200Q92 282 128 400T223 612T336 705Q397 705 397 636V627Q397 453 194 233Q185 223 180 218T174 211T171 208T165 201L163 186Q159 142 159 123Q159 17 208 17Q228 17 253 30T293 56T335 94Q345 104 349 104ZM360 634Q360 655 354 661T336 668Q328 668 322 666T302 645T272 592Q252 547 229 467T192 330L179 273Q179 272 186 280T204 300T221 322Q327 453 355 590Q360 612 360 634\",8469:\"20 664Q20 666 31 683H142Q256 683 258 681Q259 680 279 653T342 572T422 468L582 259V425Q582 451 582 490T583 541Q583 611 573 628T522 648Q500 648 493 654Q484 665 493 679L500 683H691Q702 676 702 666Q702 657 698 652Q688 648 680 648Q633 648 627 612Q624 601 624 294V-8Q616 -20 607 -20Q601 -20 596 -15Q593 -13 371 270L156 548L153 319Q153 284 153 234T152 167Q152 103 156 78T172 44T213 34Q236 34 242 28Q253 17 242 3L236 -1H36Q24 6 24 16Q24 34 56 34Q58 35 69 36T86 40T100 50T109 72Q111 83 111 345V603L96 619Q72 643 44 648Q20 648 20 664ZM413 419L240 648H120L136 628Q137 626 361 341T587 54L589 68Q589 78 589 121V192L413 419\",8472:\"300 74Q300 133 338 133Q350 133 356 126T363 109Q363 88 340 76Q340 71 342 62T358 39T393 26Q435 26 474 67T532 182T551 290Q551 325 535 349T484 373Q430 373 378 348T291 289T228 218T187 157T174 130Q254 30 265 10Q276 -15 276 -41Q276 -101 235 -158T142 -216Q112 -216 90 -195T67 -118Q67 -40 104 64L110 81Q81 118 81 174Q81 268 134 360T247 453Q252 453 255 451T258 447L259 445Q259 432 253 420Q251 416 242 416Q209 411 176 341T142 203Q142 193 143 184T146 170T149 165L158 180Q215 280 303 345T485 410Q548 410 586 368T625 255Q625 157 553 74T389 -10H383Q349 -10 325 14Q302 37 300 74ZM105 -123Q105 -134 106 -141T110 -158T122 -173T145 -178Q155 -178 160 -176Q184 -163 199 -132T214 -73Q214 -69 214 -66T213 -59T212 -53T209 -47T205 -41T199 -33T193 -25T184 -14T174 -1L165 10Q156 22 148 32L139 43Q138 43 130 15T113 -54T105 -123\",8473:\"16 666Q16 675 28 683H195Q334 683 370 682T437 672Q511 657 554 611T597 495Q597 343 404 309Q402 308 401 308Q381 303 319 303H261V181Q261 157 262 120Q262 60 267 50T304 36Q310 35 313 35Q352 35 352 17Q352 10 346 3L339 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM235 35Q228 46 227 84Q226 129 226 337V621L230 635L237 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H235ZM301 341H313Q339 341 354 344T389 362T417 410T426 498Q426 586 401 616T322 647Q301 647 293 643Q271 637 264 621Q261 617 261 479V341H301ZM429 350Q431 350 443 353T476 367T515 391T548 432T562 490Q562 550 524 592Q507 607 484 619Q481 621 448 635L433 639L439 621Q462 578 462 506Q462 448 454 413T437 366T428 350H429\",8474:\"480 -10Q480 -13 486 -24T507 -50T541 -80T588 -104T648 -114Q666 -114 688 -110T714 -106Q724 -106 728 -114T729 -130Q723 -145 663 -163T548 -181Q503 -181 463 -169T395 -139T343 -97T307 -56T284 -19L280 -3L262 1Q188 24 131 81Q57 155 37 275Q34 292 34 342T37 410Q58 528 131 601Q179 652 248 676T388 701Q485 701 562 661Q698 595 731 448Q742 410 742 341T731 235Q707 141 646 81Q616 50 575 27T493 -5L480 -10ZM568 342Q568 613 437 659L395 666Q329 666 286 626Q232 570 213 439Q210 408 210 342T213 246Q231 113 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 134 568 342ZM174 341V354Q174 393 175 419T183 484T205 561T246 635L249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 491 69 344Q69 133 231 52Q247 42 247 46Q247 46 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 410 689 467T640 556T588 606T546 630Q532 638 531 638Q530 638 531 635Q563 590 577 543Q602 472 602 341V316Q602 264 599 230T580 144T531 48Q529 44 532 45T546 52Q575 68 596 84T642 128T683 200T706 299Q708 327 708 341ZM391 -17H333Q329 -15 326 -15Q324 -15 324 -17Q324 -21 362 -68Q424 -130 506 -143Q518 -144 544 -144Q569 -144 577 -143L589 -141L575 -139Q544 -127 509 -101T453 -37L442 -19L391 -17\",8475:\"224 266Q185 266 156 286T127 354Q127 419 176 487T282 594Q346 642 433 679T615 717Q732 717 802 680L815 673Q824 680 840 690T860 700Q864 700 867 693T872 680L873 673Q873 668 858 659L845 651L853 642Q887 605 887 561Q887 500 840 439Q790 379 681 336Q693 312 693 292Q692 276 689 263T672 229T653 198T620 152L575 87Q557 57 557 33Q557 24 560 17T566 8L569 5Q546 5 508 25T470 76Q470 83 473 92T545 198T616 310Q616 317 615 318T612 319Q603 319 575 315H560L545 291Q492 201 429 135T277 23Q202 -17 142 -17H130Q50 -17 16 17Q-2 35 -2 57Q-2 95 24 126T88 158Q106 158 116 147T127 121Q127 110 122 102Q116 93 99 84T63 75Q58 75 53 76T47 77T45 75T44 67Q45 52 57 42T88 27T120 21T144 19Q174 19 208 36T267 76T324 134T369 189T406 239Q462 319 504 374T616 503T755 631L770 644Q767 647 753 654T697 670T602 680Q493 680 399 631T247 516Q218 485 193 440T168 359Q168 328 188 316T234 303Q255 303 273 315T304 340T343 389T390 448Q428 490 441 510T456 548Q456 557 458 559Q459 560 476 567T496 575Q505 575 505 558Q505 511 434 412Q429 406 427 403Q397 360 378 343Q342 308 300 287T224 266ZM819 564Q819 595 800 619L784 606Q729 557 692 512T605 387L591 365L610 364Q622 364 631 363T641 361Q643 361 651 363Q725 388 772 449T819 564ZM794 141Q794 123 725 63T612 3Q609 3 612 5Q612 5 615 7Q639 19 678 57T742 131L755 148H772H780Q794 148 794 141ZM588 -3Q590 0 593 0H594L593 -1Q592 -1 590 -2L588 -3\",8476:\"27 496Q31 569 102 627T234 685Q236 685 241 685T251 686Q287 686 318 672T367 638T399 598T418 564L423 550Q424 554 434 567T463 601T505 639T561 671T626 685Q672 685 688 659T710 572Q713 533 721 523T766 513Q781 513 787 514T794 516Q796 512 798 509T801 504T802 501T787 493Q702 461 624 401L607 389Q655 383 688 358L697 352V342Q699 330 699 297Q704 209 710 173T734 103Q751 69 765 69Q769 69 806 83L824 90V74Q823 73 759 24T693 -26Q692 -26 660 32L628 90L629 111Q631 159 631 177Q631 278 614 300Q584 340 523 340Q500 340 467 333T431 325Q429 325 429 322Q428 321 426 308T420 275T410 230T392 178T366 125L358 112L342 99Q306 70 269 38T213 -10T193 -26Q192 -26 163 0T116 26Q82 26 50 -8L42 -16L35 -8L27 0L35 10Q43 21 58 38T104 80T158 106Q179 106 218 65L235 48Q238 48 255 60T295 99T329 158Q352 231 352 359Q352 555 242 614Q210 628 187 628Q140 628 116 600T91 548Q91 522 138 464T185 382V376Q185 345 158 313T103 263L76 246Q74 244 64 253L54 260L65 267Q91 285 100 302Q111 318 111 337Q111 355 69 410T27 496ZM562 628Q504 628 443 507L435 491L436 479Q437 471 437 446Q437 396 432 351L529 389L602 426Q673 462 673 463H672Q644 470 637 483T622 553Q608 628 562 628\",8477:\"17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243\",8484:\"39 -1Q29 9 29 12Q29 23 60 77T219 337L410 648H364Q261 648 210 628Q168 612 142 588T109 545T97 509T88 490Q85 489 80 489Q72 489 61 503L70 588Q72 607 75 628T79 662T81 675Q84 677 88 681Q90 683 341 683H592Q604 673 604 666Q604 662 412 348L221 37Q221 35 301 35Q406 35 446 48Q504 68 543 111T597 212Q602 239 617 239Q624 239 629 234T635 223Q635 215 621 113T604 8L597 1Q595 -1 317 -1H39ZM148 637L166 648H112V632Q111 629 110 622T108 612Q108 608 110 608T116 612T129 623T148 637ZM552 646Q552 648 504 648Q452 648 450 643Q448 639 266 343T77 37Q77 35 128 35H179L366 339L552 646ZM572 35Q581 89 581 97L561 77Q542 59 526 48L508 37L539 35H572\",8486:\"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454\",8487:\"126 584Q119 584 110 539T97 493Q95 490 73 490Q44 490 44 501Q44 515 62 590Q75 672 82 679Q84 684 177 684Q193 684 214 684T241 685Q265 685 271 682T277 664V648Q271 572 229 434T186 231Q186 173 203 132T247 70T302 42T360 33Q391 33 419 42T474 72T517 133T533 231Q533 297 491 437T442 648Q442 675 446 679Q448 684 542 684Q635 684 637 681Q640 678 657 594T675 501Q675 490 646 490Q624 490 622 493Q620 493 609 538T593 584Q591 585 585 585T569 586T551 588H513Q514 586 518 573T538 531T582 453Q647 340 660 277Q663 259 663 232Q663 194 657 177Q652 151 629 112T560 39Q495 -5 424 -19Q403 -22 360 -22Q318 -22 297 -19Q239 -8 193 18T120 74T80 131T62 177Q56 194 56 229Q56 281 74 328T137 453Q160 491 174 518T193 555T201 575T206 588H168Q160 587 150 587T134 586T126 584\",8488:\"148 590Q95 592 91 627V633L160 729H176Q169 713 169 705Q169 670 244 670Q269 670 305 672T357 675Q405 675 432 661T468 609Q469 605 469 596Q469 572 460 540Q433 463 301 372Q325 378 359 378Q431 378 472 350T519 297Q532 249 532 198Q532 115 500 40T442 -57Q335 -139 202 -139Q165 -139 125 -131L112 -129V-100Q112 -49 106 -33T75 -17Q55 -17 31 -35L22 -42L11 -26L22 -18Q94 36 151 36H160Q171 36 178 33T188 27T194 13T196 -5T197 -32Q198 -79 206 -90Q217 -107 251 -107Q336 -107 389 -33T442 155Q442 240 407 274Q362 319 285 319Q236 319 192 298Q188 298 181 309L224 372Q227 373 234 374T246 376T257 379T271 384T285 391T302 402T321 417Q384 471 384 540Q384 562 366 581T306 600Q292 600 233 595T148 590\",8492:\"256 262Q161 262 161 351Q161 408 203 471T289 570Q380 645 475 676T617 707L627 708Q637 708 644 708Q759 708 831 675L844 669L857 677Q892 700 896 700Q902 700 907 685Q907 683 907 681T908 678T909 676T909 673Q909 671 909 670T906 667T903 664T897 660T889 655L878 647L889 636Q928 598 928 548Q928 529 923 510T907 474T886 442T861 412T837 388T815 368T800 355Q847 323 847 270V263Q847 205 806 145Q766 82 695 37T564 -8Q527 -8 506 10T484 58Q484 85 501 117T543 172Q607 226 685 228Q695 228 698 226Q703 220 692 206Q684 194 682 193T665 191Q625 189 595 172T550 133T529 93T522 66Q522 29 576 29Q642 29 705 109Q785 211 785 270Q785 287 779 300T769 316T755 327L740 319Q682 290 634 290Q611 290 592 294H588L565 261Q559 252 544 231T522 201T504 178T481 151T455 123Q394 63 314 18T159 -28Q103 -28 67 -6T31 54Q31 88 57 123T123 158Q144 158 154 146T164 119Q164 102 142 89T100 75Q94 75 87 77T76 80L72 81Q69 78 69 65Q69 35 102 22T175 9Q184 9 198 11Q248 23 300 70T403 187T508 331T636 489T789 629L801 639Q796 642 786 647T732 661T633 670Q592 670 558 665Q481 651 409 613T286 520Q274 507 258 485T222 424T202 354Q202 299 269 299Q282 299 295 301T318 307T339 317T358 329T376 345T391 362T406 380T420 398T433 417T445 435Q496 512 496 547Q496 559 497 560T516 569Q526 574 530 574Q538 574 538 540Q538 414 427 325Q342 262 256 262ZM689 382Q708 382 753 375L765 387Q860 482 860 555Q860 594 839 610L822 592Q794 563 752 511T680 420T651 380Q655 381 660 381Q664 382 689 382ZM697 344Q692 345 681 345H675Q671 345 665 345T655 344T650 344L648 342Q646 339 645 338Q643 333 639 327H653Q670 329 676 330Q706 342 706 343Q702 344 697 344\",8493:\"299 585Q333 609 384 634T470 672L505 685Q506 685 513 662T531 613T548 580Q553 576 563 576Q575 576 605 585Q607 585 607 575V564Q537 532 496 527Q475 542 456 567T427 610T415 627Q410 627 398 618T382 603Q373 588 373 558T386 475T400 399Q400 337 366 303Q343 281 309 266T254 247T226 242L214 257Q214 258 223 260T251 272T287 299Q304 316 304 360Q304 396 289 451T274 532Q274 553 277 561V564H269Q205 558 172 501T139 358Q139 207 226 127T443 46Q448 46 457 46T470 47L485 48L601 106Q602 106 602 93V80Q551 48 517 25T474 -4T460 -13T443 -19Q409 -24 367 -24Q360 -24 351 -24T335 -23T326 -22Q190 -2 125 87T59 319V328Q62 412 96 487L101 500L118 512Q189 563 245 591L266 601L299 585\",8496:\"280 398L279 400Q278 402 277 405T275 413T272 426T271 443Q271 494 302 544T379 629T472 685T553 707H565H573Q630 707 664 689Q718 661 718 604Q718 548 662 492T553 436Q525 436 508 451T490 492Q490 534 531 579T619 630Q632 630 632 623Q632 619 624 606Q614 593 602 592T578 580Q566 568 549 541T532 497Q532 474 565 474Q577 474 587 476Q600 481 611 489Q630 503 651 535T672 596Q672 660 553 660H548Q494 660 450 616Q421 587 384 531T343 439Q341 420 344 415H345Q346 415 352 415T369 417T391 418Q421 418 440 412T466 398T473 382Q473 367 452 353T398 339Q370 339 348 345T315 359L304 366Q297 365 284 360T234 321T163 234Q120 160 120 117Q120 83 149 57T252 30Q311 30 357 60Q386 79 414 114T452 179Q454 186 454 200Q454 230 415 242Q401 246 373 246Q353 246 347 244Q328 236 313 219T288 184T274 149T265 121T261 109Q260 107 247 102T230 97Q223 97 223 105Q223 148 271 216T386 284Q446 284 483 260T520 195Q520 121 427 57T239 -8Q192 -8 152 2T79 46T46 133Q46 212 107 285T269 394L280 398ZM427 376Q427 377 402 380Q386 380 386 379L425 375L427 376\",8497:\"258 428Q258 489 322 562T482 685T661 735Q726 735 824 693T977 651Q990 651 990 644Q990 639 971 612T948 581Q947 580 938 580Q878 580 784 621T617 663Q544 663 480 635T379 568T320 492T299 431Q299 387 362 387Q404 387 438 402T493 438T527 486T546 531T551 563Q551 569 550 575T549 584T549 590Q551 593 563 602T579 611Q584 611 592 605T608 584T616 548Q616 513 595 477T554 423Q518 392 464 372T349 351Q258 351 258 428ZM324 187T305 187T286 196Q286 202 301 217Q327 242 383 262T484 290L527 297L567 356Q624 441 643 467T688 521Q715 550 752 581T795 613T804 603T808 587T778 547T702 444T626 300H637Q663 302 685 306L697 308L703 317Q745 376 792 400Q806 406 818 406Q849 406 849 375Q847 355 831 338T797 312T763 296L747 290Q744 289 735 266T724 241Q722 240 702 232T664 217T645 210Q638 210 638 218Q638 224 653 246T669 270Q669 271 668 271Q663 270 624 264L607 263Q570 199 529 152Q513 133 484 106T409 45T305 -13T193 -36Q109 -36 74 -10T39 50Q39 86 64 121T128 158Q171 158 171 121Q171 97 141 83Q125 75 107 75Q93 75 80 83Q76 71 76 62Q76 29 117 15T207 0Q324 0 494 248L501 258H495Q368 239 330 195Q324 187 305 187ZM775 335Q806 358 806 368Q805 369 804 369Q800 369 791 360Q774 336 775 335\",8498:\"457 681Q471 695 477 695Q485 695 497 681V12L484 -1H68Q55 14 55 19T68 39H457V328H215L211 335Q198 346 211 359L217 368H457V681\",8499:\"112 -7Q86 -7 58 6T30 48T54 103T113 130Q129 130 141 121T153 94Q153 71 132 59T90 47H80Q95 30 133 30Q180 30 228 63T311 137T402 249T500 361Q566 425 703 529T910 693Q942 721 945 721T958 716T970 709Q974 704 964 691Q961 688 905 622T847 554L595 181Q553 121 527 77T496 19L492 5Q497 5 531 46Q579 98 685 224T850 409L972 524Q994 543 1004 556Q1012 567 1097 643T1186 720Q1194 720 1206 715T1215 703Q1215 701 1191 671T1133 599T1080 530Q1036 461 983 357T862 152Q802 64 799 17Q799 7 800 5T811 2Q836 2 882 37T969 126Q972 130 974 134T978 138T983 139T996 140H1012Q1018 134 1018 132Q1018 122 981 83T889 4T795 -35Q761 -35 745 -12T728 48Q728 122 781 190Q833 269 890 370L927 434L914 422Q848 360 752 245Q643 117 582 51T498 -33T461 -50Q424 -48 424 -4Q424 84 481 172L714 495Q591 406 523 333Q507 316 430 226T313 95Q263 48 221 24T162 -4T120 -7H112\",8501:\"55 613Q55 643 61 663T74 688T85 694Q94 694 94 681Q98 632 134 588L412 285Q416 311 430 397T447 509V519L438 526Q407 554 398 571T388 617T394 664T407 688T418 694Q425 694 427 684Q429 675 454 635T488 586Q490 584 496 579T513 563T537 540Q555 516 555 487Q555 460 549 441T537 416T528 409Q519 409 517 415T513 435T503 463Q492 481 490 481Q454 264 454 246Q454 237 479 212T529 152T555 79Q555 32 538 9Q531 1 524 1Q516 1 516 13Q512 62 476 106Q468 115 337 258T195 412L193 406Q191 401 189 394T183 377T176 352T171 322T167 284T165 240Q165 224 166 220Q171 199 211 152T252 70Q252 45 235 29T203 8T175 1Q170 0 115 0H79Q60 0 58 3T55 20Q55 31 58 34Q60 37 76 37Q112 39 126 46T140 70Q140 96 112 148T83 236Q83 281 102 334T140 419T159 452Q55 556 55 613\",8502:\"56 706V726Q56 763 76 763Q83 763 87 759T98 741Q108 726 116 721L127 717L340 715Q547 712 564 709Q575 705 587 692Q599 680 605 663L609 650V137H676Q687 124 687 115Q687 110 678 100T622 43L558 -21H-9Q-22 -6 -22 -1T-13 14T42 72L107 137H569V339Q569 541 567 546Q558 555 554 557L545 563H329Q118 566 101 569Q90 573 78 586Q54 610 54 661Q54 670 56 706\",8503:\"56 750Q68 764 76 764Q88 764 97 743T125 717Q131 715 240 715T358 713Q421 691 421 640Q421 608 399 588T358 566Q353 566 352 565T351 557L356 526Q356 488 379 346T402 97Q400 21 385 -12Q366 -43 351 -43Q335 -43 329 -10Q316 40 316 64Q316 67 315 67Q313 67 269 26L222 -21H-9Q-22 -7 -22 -1Q-22 4 -14 14T42 73L107 137H311V564H211H164Q115 564 93 573T60 615Q56 630 56 690V750\",8504:\"62 757Q69 764 75 764Q87 764 97 741Q102 731 105 728T117 721L129 715H349Q569 715 580 710Q618 701 635 670Q640 661 640 639Q640 609 622 590Q617 583 604 575T580 566H573V553Q575 547 576 531T582 469T600 353Q624 205 624 104Q624 46 617 17T591 -32Q581 -43 573 -43Q550 -43 540 44Q535 73 533 319V564H322Q117 566 100 570Q90 573 77 586Q54 609 54 663Q54 689 55 706Q55 738 56 745T62 757\",8513:\"239 665Q194 665 154 653T90 629T66 617Q59 617 53 623T46 637Q46 652 66 659Q129 695 197 701Q218 705 248 705Q293 705 335 693Q371 684 435 644Q543 562 573 417Q577 393 577 341Q577 290 573 266Q531 83 384 10Q346 -9 315 -16T234 -23H206Q202 -23 183 -23T152 -21T120 -18T88 -10T63 3T44 24L37 35V297L50 310H235Q248 297 248 290Q248 285 235 270H77V103Q77 88 77 80T77 63T78 50T80 43T82 38T85 35T89 32T95 30Q126 20 206 17Q289 17 330 30Q407 55 460 120T533 275Q538 305 538 342Q538 486 452 575T239 665\",8592:\"944 261T944 250T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H929Q944 261 944 250\",8593:\"27 414Q17 414 17 433Q17 437 17 439T17 444T19 447T20 450T22 452T26 453T30 454T36 456Q80 467 120 494T180 549Q227 607 238 678Q240 694 251 694Q259 694 261 684Q261 677 265 659T284 608T320 549Q340 525 363 507T405 479T440 463T467 455T479 451Q483 447 483 433Q483 413 472 413Q467 413 458 416Q342 448 277 545L270 555V-179Q262 -193 252 -193H250H248Q236 -193 230 -179V555L223 545Q192 499 146 467T70 424T27 414\",8594:\"56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250\",8595:\"473 86Q483 86 483 67Q483 63 483 61T483 56T481 53T480 50T478 48T474 47T470 46T464 44Q428 35 391 14T316 -55T264 -168Q264 -170 263 -173T262 -180T261 -184Q259 -194 251 -194Q242 -194 238 -176T221 -121T180 -49Q169 -34 155 -21T125 2T95 20T67 33T44 42T27 47L21 49Q17 53 17 67Q17 87 28 87Q33 87 42 84Q158 52 223 -45L230 -55V312Q230 391 230 482T229 591Q229 662 231 676T243 693Q244 694 251 694Q264 692 270 679V-55L277 -45Q307 1 353 33T430 76T473 86\",8596:\"263 479Q267 501 271 506T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H835Q729 349 696 475Q691 493 691 500Q691 511 711 511Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q144 292 194 349T263 479\",8597:\"27 492Q17 492 17 511Q17 515 17 517T17 522T19 525T20 528T22 530T26 531T30 532T36 534Q80 545 120 572T180 627Q210 664 223 701T238 755T250 772T261 762Q261 757 264 741T282 691T319 628Q352 589 390 566T454 536L479 529Q483 525 483 511Q483 491 472 491Q467 491 458 494Q342 526 277 623L270 633V-133L277 -123Q307 -77 353 -45T430 -2T473 8Q483 8 483 -11Q483 -15 483 -17T483 -22T481 -25T480 -28T478 -30T474 -31T470 -32T464 -34Q407 -49 364 -84T300 -157T270 -223T261 -262Q259 -272 250 -272Q242 -272 239 -255T223 -201T180 -127Q169 -112 155 -99T125 -76T95 -58T67 -45T44 -36T27 -31L21 -29Q17 -25 17 -11Q17 9 28 9Q33 9 42 6Q158 -26 223 -123L230 -133V633L223 623Q192 577 146 545T70 502T27 492\",8598:\"204 662Q257 662 301 676T369 705T394 720Q398 720 407 711T417 697Q417 688 389 671T310 639T212 623Q176 623 153 628Q151 628 221 557T546 232Q942 -164 943 -168Q944 -170 944 -174Q944 -182 938 -188T924 -195Q922 -195 916 -193Q912 -191 517 204Q440 281 326 394T166 553L121 598Q126 589 126 541Q126 438 70 349Q59 332 52 332Q48 332 39 341T29 355Q29 358 38 372T57 407T77 464T86 545Q86 583 78 614T63 663T55 683Q55 693 65 693Q73 693 82 688Q136 662 204 662\",8599:\"582 697Q582 701 591 710T605 720Q607 720 630 706T697 677T795 662Q830 662 863 670T914 686T934 694Q942 694 944 685Q944 680 936 663T921 615T913 545Q913 490 927 446T956 379T970 355Q970 351 961 342T947 332Q940 332 929 349Q874 436 874 541Q874 590 878 598L832 553Q787 508 673 395T482 204Q87 -191 83 -193Q77 -195 75 -195Q67 -195 61 -189T55 -174Q55 -170 56 -168Q58 -164 453 232Q707 487 777 557T847 628Q824 623 787 623Q689 623 599 679Q582 690 582 697\",8600:\"55 675Q55 683 60 689T75 695Q77 695 83 693Q87 691 482 296Q532 246 605 174T717 62T799 -20T859 -80T878 -97Q874 -93 874 -41Q874 64 929 151Q940 168 947 168Q951 168 960 159T970 145Q970 143 956 121T928 54T913 -45Q913 -83 920 -114T936 -163T944 -185Q942 -194 934 -194Q932 -194 914 -186T864 -170T795 -162Q743 -162 698 -176T630 -205T605 -220Q601 -220 592 -211T582 -197Q582 -187 611 -170T691 -138T787 -123Q824 -123 847 -128Q848 -128 778 -57T453 268Q58 664 56 668Q55 670 55 675\",8601:\"126 -41Q126 -92 121 -97Q121 -98 139 -80T200 -20T281 61T394 173T517 296Q909 690 916 693Q922 695 924 695Q932 695 938 689T944 674Q944 670 943 668Q942 664 546 268Q292 13 222 -57T153 -128Q176 -123 212 -123Q310 -123 400 -179Q417 -190 417 -197Q417 -201 408 -210T394 -220Q392 -220 369 -206T302 -177T204 -162Q131 -162 67 -194Q63 -195 59 -192T55 -183Q55 -180 62 -163T78 -115T86 -45Q86 10 72 54T44 120T29 145Q29 149 38 158T52 168Q59 168 70 151Q126 62 126 -41\",8602:\"942 250Q942 244 928 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L735 270H931Q942 257 942 250\",8603:\"54 250Q54 258 66 270H277L488 272L542 350Q596 431 602 435Q604 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H264L66 232Q54 239 54 250\",8606:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H276L285 277Q322 306 349 345T388 417H434Q434 413 424 392T393 338T349 279L340 270H634Q933 270 937 266L938 265Q944 259 944 250T938 235L937 234Q933 230 634 230H340L349 221Q372 196 393 163T424 108T434 83H388Q377 116 350 155T285 223L276 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250\",8608:\"943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H723L714 223Q677 194 650 155T611 83H565Q565 87 575 108T606 162T650 221L659 230H365Q66 230 62 234L61 235Q55 241 55 250T61 265L62 266Q66 270 365 270H659L650 279Q627 304 606 337T575 392T565 417H611Q622 384 649 345T714 277L723 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250\",8610:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H873L882 277Q919 306 946 345T985 417H1031Q1031 413 1021 392T990 338T946 279L937 270V230L946 221Q969 196 990 163T1021 108T1031 83H985Q974 116 947 155T882 223L873 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250\",8611:\"1054 250Q1006 221 967 177T912 83H889Q866 83 866 84Q866 86 873 103T902 156T952 222L959 230H237L228 223Q191 194 164 155T125 83H79Q79 87 89 108T120 162T164 221L173 230V270L164 279Q141 304 120 337T89 392T79 417H125Q136 384 163 345T228 277L237 270H959L952 278Q924 309 903 344T874 396T866 416Q866 417 889 417H912Q928 367 967 323T1054 250\",8614:\"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H95V155\",8617:\"903 424T903 444T929 464Q976 464 1023 434T1070 347Q1070 316 1055 292T1016 256T971 237T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H926Q929 270 941 271T960 275T978 280T998 290T1015 307Q1030 325 1030 347Q1030 355 1027 364T1014 387T983 411T929 424H928Q903 424 903 444\",8618:\"55 347Q55 380 72 404T113 441T159 458T197 464Q222 464 222 444Q222 429 204 426T157 417T110 387Q95 369 95 347Q95 339 98 330T111 307T142 283T196 270H961Q845 357 818 493Q818 494 818 496T817 499Q817 511 834 511H837Q846 511 849 510T855 506T858 497T861 481T869 456Q891 389 942 336T1061 261Q1070 258 1070 250Q1070 244 1065 241T1041 231T1003 212Q962 186 932 152T887 85T866 35T858 4Q856 -6 853 -8T837 -11Q817 -11 817 0Q817 7 822 25Q854 151 961 230H196Q149 230 102 260T55 347\",8619:\"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H622V305Q622 356 624 388T635 460T661 521T709 559T785 575Q813 575 833 573T880 561T923 534T952 483T964 405Q964 374 959 350T942 307T918 276T884 255T847 242T804 235T760 231T713 230H662V-27Q654 -41 644 -41H642H640Q628 -41 622 -27V230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250ZM924 403Q924 474 894 505T794 536Q758 536 734 526T696 500T675 453T665 395T662 319V270H699Q826 270 875 295T924 403\",8620:\"35 405Q35 454 48 489T86 542T137 567T195 575Q229 575 251 571T301 554T345 510T370 429Q377 384 377 305V270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q896 221 857 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H377V-27Q369 -41 359 -41H357Q342 -41 337 -25V230H286Q247 231 225 232T169 238T115 255T75 284T45 333T35 405ZM75 406Q75 322 123 296T300 270H337V319Q335 432 317 477T240 534Q232 535 197 535Q140 535 108 507T75 406\",8621:\"57 250Q159 311 200 417H246L242 407Q215 340 159 278L152 270H276L315 310Q354 349 358 351Q366 356 376 351Q378 350 455 273L530 196L606 273Q683 350 686 351Q694 354 703 351Q705 350 782 273L858 196L933 273Q1010 350 1012 351Q1022 356 1030 351Q1034 349 1073 310L1112 270H1236L1229 278Q1173 340 1146 407L1142 417H1188Q1233 306 1331 250Q1231 192 1188 83H1142L1146 93Q1173 160 1229 222L1236 230H1168Q1155 230 1139 230T1119 229Q1112 229 1108 229T1099 231T1092 233T1085 238T1078 245T1068 256T1056 269L1021 304L984 267Q948 230 910 191T867 149Q857 144 848 150Q844 151 770 227T694 304T618 228T540 150Q531 144 521 149Q517 152 479 191T404 267L367 304L332 269Q328 264 320 256T310 246T303 239T296 234T289 231T280 229T269 229Q265 229 249 229T220 230H152L159 222Q215 160 242 93L246 83H223L200 84L195 96Q152 190 57 250\",8622:\"491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272\",8624:\"56 555Q74 567 79 570T107 592T141 625T170 667T198 722H221Q244 722 244 721Q244 718 236 699T207 647T161 587L151 576L291 575H292H293H294H296H297H298H299H300H301H302H304H305H306H307H308H309H310H311H312H314H315H316H317H318H319H320H321H322H323H324H325H327H328H329H330H331H332H333H334H335H336H337H338H339H340H341H342H343H345Q435 574 438 570L439 569L440 568Q444 564 444 287Q444 15 442 12Q436 0 424 0T406 12Q404 15 404 275V535H151L162 523Q187 495 207 462T236 410T244 389H198L193 402Q171 457 131 497T56 555\",8625:\"301 722Q339 618 443 555L437 551Q431 547 422 541T401 526T377 504T352 477T327 443T306 402L301 389H255Q255 392 263 410T291 461T337 523L348 535H95V275Q95 15 93 12Q87 0 75 0T57 12Q55 15 55 287Q55 564 59 568L60 569Q64 573 76 573T208 575L348 576L338 587Q314 613 294 646T264 698T255 721Q255 722 278 722H301\",8630:\"361 210Q373 210 373 182V177Q373 155 370 151T348 139Q303 118 267 84T216 28T201 1Q197 -1 196 -1Q189 -1 184 8Q166 39 143 64T99 104T61 129T32 144T19 150Q17 152 17 179Q17 203 21 208Q28 210 39 206Q106 178 157 135L175 119V126Q179 130 179 155Q182 173 193 201Q228 305 312 374T510 459Q532 461 551 461H567Q678 461 784 386Q835 344 861 301Q902 245 926 173T950 32Q950 15 944 8Q930 -6 917 8Q910 12 910 43Q901 208 801 314T561 421Q453 421 359 359Q300 319 263 258T217 126L216 125Q216 124 216 123T217 122Q219 122 229 131T260 156T301 181Q314 189 336 199T361 210\",8631:\"972 209Q980 209 981 204T982 179Q982 155 979 151T957 139Q915 121 878 86T815 8Q808 -1 803 -1Q801 -1 797 1Q797 6 783 28T732 84T650 139L628 150Q626 152 626 177Q626 201 630 206Q636 210 637 210Q650 210 697 181Q727 166 764 137L784 119L782 132Q767 239 689 318T499 417Q474 421 442 421Q343 421 261 369T130 219Q86 121 86 28Q86 15 79 8Q73 1 66 1T53 8Q46 15 46 30Q46 102 77 192T186 361Q274 443 386 459Q396 460 426 460Q515 460 588 431T703 361T773 271T812 187T822 132Q822 123 825 123Q936 209 972 209\",8634:\"369 543T369 563T397 583Q408 583 440 579L454 577L464 581Q492 592 516 609T552 638T565 650Q604 638 607 637Q606 636 598 628T585 614T570 601T548 584T523 568L510 560L516 558Q522 555 527 553T541 546T559 536T580 523T603 506T626 485Q722 384 722 250Q722 106 622 12T387 -83Q253 -83 155 12T56 250Q56 357 110 433T235 545Q244 550 252 550Q270 550 270 531Q270 522 261 515T238 501T202 477T159 433Q95 352 95 250Q95 131 178 45T388 -42Q511 -42 596 43T682 250Q682 340 636 408T522 511Q495 526 488 526Q488 525 488 525T487 522T485 515L490 506Q505 481 516 451T531 404T535 384L532 385Q529 386 524 387T513 390L491 397L488 408Q472 483 413 542L399 543Q369 543 369 563\",8635:\"170 637L213 650Q270 597 313 581L323 577L337 579Q369 583 380 583Q408 583 408 563T380 543H378L364 542Q305 483 289 408L286 397L264 390Q259 389 254 388T245 385L242 384Q242 387 246 403T261 450T287 506L292 515Q291 519 291 521T290 524T289 526Q284 526 265 517T216 486T160 434T114 354T95 249Q95 132 178 45T388 -42Q513 -42 597 44T682 250Q682 337 638 404T532 506Q529 508 525 510T519 514T515 516T511 519T509 522T508 526T507 531Q507 550 525 550Q533 550 542 545Q569 532 596 511T653 454T702 366T721 250Q721 151 672 74T547 -43T388 -83Q254 -83 155 12T56 250Q56 385 151 485Q164 498 179 509T205 528T228 542T247 551T260 558L267 560L254 568Q215 590 170 637\",8636:\"62 230Q56 236 55 244Q55 252 57 255T69 265Q114 292 151 326T208 391T243 448T265 491T273 509Q276 511 288 511Q304 511 306 505Q309 501 303 484Q293 456 279 430T251 383T223 344T196 313T173 291T156 276L148 270H929Q944 261 944 250T929 230H62\",8637:\"55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256\",8638:\"188 258V694H208L215 682Q246 628 293 594T375 551V528Q375 505 374 505Q369 505 351 510T299 534T237 578L228 587V205Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 258\",8639:\"41 551Q76 559 123 592T201 682L208 694H228V258Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 205V587L179 578Q151 552 117 534T65 511T42 505Q41 505 41 528V551\",8640:\"691 500Q691 511 711 511Q720 511 723 510T730 504T735 490T746 464T768 425Q796 378 835 339T897 285T933 263Q941 258 942 256T944 245T937 230H70Q56 237 56 250T70 270H852Q802 308 762 364T707 455T691 500\",8641:\"56 237T56 250T70 270H937Q944 263 944 256Q944 251 944 250T943 246T940 242T933 238Q794 153 734 7Q729 -7 726 -9T711 -11Q695 -11 693 -5Q690 -1 696 16Q721 84 763 139T852 230H70Q56 237 56 250\",8642:\"190 682Q195 694 208 694T226 683Q228 679 228 296V-87L237 -78Q265 -52 299 -34T351 -11T374 -5Q375 -5 375 -28V-51Q340 -60 293 -92T215 -182L208 -194H188V242Q188 678 190 682\",8643:\"188 295V573Q188 657 189 672T200 692Q206 694 208 694Q221 694 226 683Q228 679 228 242V-194H208L201 -182Q170 -128 123 -94T41 -51V-28Q41 -5 42 -5Q47 -5 65 -10T117 -34T179 -78L188 -87V295\",8644:\"943 500Q895 471 856 427T801 333H778Q755 333 755 334Q755 336 762 353T791 406T841 472L848 480H459Q70 480 67 482Q55 488 55 500T67 518Q70 520 459 520H848L841 528Q813 559 792 594T763 646T755 666Q755 667 778 667H801Q817 617 856 573T943 500ZM56 167Q102 194 141 238T198 333H221Q244 333 244 332Q221 265 161 198L151 187H539Q928 187 930 186Q944 182 944 167Q944 155 934 149Q930 147 541 147H151L160 137Q185 110 205 77T235 24T244 1Q244 0 221 0H199Q158 106 56 167\",8646:\"56 500Q103 527 142 572T199 667H221Q244 667 244 666Q244 664 237 647T208 594T158 528L151 520H539Q928 520 932 518Q944 513 944 500T932 482Q928 480 539 480H151L158 472Q186 441 207 406T236 354T244 334Q244 333 221 333H199Q181 383 142 428T56 500ZM943 167Q835 101 801 0H778Q755 0 755 1T758 9T765 25T771 39Q800 94 839 137L848 147H458Q68 147 66 149Q55 154 55 167Q55 182 69 186Q71 187 460 187H848L838 198Q811 228 791 261T762 314L755 332Q755 333 778 333H801Q841 227 943 167\",8647:\"930 437Q944 426 944 416T934 399Q930 397 540 397H150L159 387Q185 360 205 328T234 277T243 252Q243 237 217 191T159 113L150 103H540Q930 103 934 101Q944 94 944 84Q944 71 930 64L540 63H151Q180 34 203 -2T236 -61L244 -83H198Q178 -31 142 11T66 77L55 83L65 89Q157 145 197 246Q199 250 190 269Q150 359 65 411L55 417L66 423Q106 447 142 489T198 583H244Q202 488 151 437H930\",8648:\"83 551Q190 590 250 694Q251 689 263 671T307 621T380 567Q409 551 416 551Q422 551 447 563T511 608T577 684L582 694Q642 591 749 551V528Q749 505 748 505Q745 505 724 515T669 546T612 590L602 599V-181Q595 -193 585 -193H582H581Q568 -193 565 -183L563 -179L562 209V598L552 589Q517 556 473 531T414 506H412Q411 506 393 514T361 530T324 553T280 589L270 598V-179Q255 -192 250 -193H247Q237 -193 230 -181V599L220 590Q197 567 164 546T110 515T84 505Q83 505 83 528V551\",8649:\"55 416Q55 427 70 437H848Q819 466 796 502T764 561L755 583H801Q821 531 857 489T933 423L944 417L934 411Q843 355 802 254Q800 250 809 231Q849 141 934 89L944 83L933 77Q893 53 857 11T801 -83H755Q797 12 848 63H459L70 64Q55 70 55 84Q55 94 65 101Q69 103 459 103H849L840 113Q806 148 779 196T756 254Q756 255 760 264T770 286T786 315T809 351T840 387L849 397H459Q69 397 65 399Q55 406 55 416\",8650:\"230 681Q240 694 251 694Q260 693 270 680V-98L280 -89Q297 -73 314 -60T348 -38T374 -24T397 -13T412 -6H414Q428 -6 473 -32T552 -89L562 -98V291L563 680Q570 693 582 693Q593 694 602 681V-99L612 -90Q635 -68 668 -47T723 -15T748 -5Q749 -5 749 -28V-51Q642 -91 582 -194L577 -184Q551 -141 512 -108T447 -63T416 -51T385 -63T321 -108T255 -184L250 -194Q189 -89 83 -51V-28Q83 -5 84 -5Q88 -5 109 -15T164 -46T220 -90L230 -99V681\",8651:\"195 504L198 514H221Q244 514 244 512Q244 508 239 490T215 437T171 376L162 367H545Q928 367 932 365Q944 360 944 347T932 329Q928 327 492 327H55V347L67 354Q113 379 146 420T195 504ZM67 171Q70 173 507 173H944V153L932 146Q839 95 804 -4L801 -14H778Q755 -14 755 -12Q768 59 828 124L837 133H454Q71 133 67 135Q55 140 55 153Q55 165 67 171\",8652:\"691 660Q691 671 711 671Q720 671 723 670T730 664T735 650T746 624T768 585Q797 538 836 499T897 445T933 423Q941 418 942 416T944 405T937 390H70Q56 397 56 410T70 430H852Q802 468 762 524T707 615T691 660ZM55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256\",8653:\"397 525Q410 525 414 524T418 516Q418 506 394 467T331 381L319 367H473L624 369L657 445Q674 487 684 507T699 531T709 534Q717 534 722 528T728 516Q728 510 695 434Q689 418 683 402T672 377T668 367H928Q942 355 942 347Q942 341 928 327H791Q651 327 651 325Q649 324 620 251T586 174Q586 172 757 172H928Q942 158 942 152Q942 143 928 132H568L537 54Q510 -9 503 -22T486 -35Q479 -35 473 -29T466 -17T495 61L526 132H319L331 118Q364 81 391 37T418 -17Q418 -23 415 -24T401 -26Q398 -26 397 -26L384 -24L377 -13Q344 49 301 97T218 170T143 210T84 233T55 245Q54 253 59 256T86 267Q281 327 377 512L384 525H397ZM606 325Q606 327 439 327H275Q258 312 179 265L148 249Q228 206 262 181L275 172H544L575 247L606 325\",8654:\"395 -24T395 -19T417 57T440 132H255L266 116Q308 64 340 -6Q342 -17 337 -21Q335 -26 320 -26T302 -19Q302 -15 294 4T265 54T217 117T145 182T49 236Q30 243 33 254Q40 261 49 263Q98 283 142 315T214 379T263 442T293 493T302 519Q305 525 320 525T337 521Q342 516 340 505Q308 435 266 383L255 370L384 367H515Q561 522 569 530Q574 534 580 534Q587 534 594 528T602 516Q602 512 580 441T557 367H651L742 370L731 383Q689 435 657 505Q655 516 660 521Q662 525 677 525T695 519Q695 515 703 496T732 446T780 383T853 317T949 263Q967 258 964 245Q959 240 949 236Q897 215 852 182T779 116T731 52T703 3T695 -19Q692 -26 677 -26T660 -21Q655 -17 657 -6Q670 21 682 42T702 77T717 99T728 114T735 122T739 126T740 130T613 132H482L460 54Q440 -9 433 -23T415 -37Q408 -37 402 -31ZM502 325Q502 327 360 327H217L195 310Q173 291 120 256L111 250Q114 248 143 229T195 190L217 172H335L453 174L502 325ZM886 250Q885 251 865 263T831 286T802 310L780 327H544L535 299Q531 283 511 223L495 174L637 172H780L802 190Q843 225 877 243L886 250\",8655:\"346 174Q348 176 378 249T411 325Q411 327 239 327H68Q55 342 55 347Q55 354 68 367H428L459 445Q487 509 494 521T510 534Q517 534 524 527T531 516Q531 515 502 438L471 367H677L666 381Q631 421 605 463T578 516Q578 522 582 523T599 525H615L619 512Q659 437 714 383T812 309T896 272T942 254Q943 246 938 243T911 232Q718 172 619 -13L615 -24L599 -26Q578 -26 578 -17Q578 -11 587 6T617 53T666 118L677 132H373L339 54Q323 12 313 -8T298 -32T288 -35Q280 -35 275 -29T269 -17Q269 -14 298 57T328 132H68Q55 145 55 152Q55 156 56 158T62 165T68 172H206Q346 172 346 174ZM848 249Q763 297 735 318L722 327H455L422 252L391 174Q391 172 557 172H722L735 181Q773 210 819 234L848 249\",8656:\"944 153Q944 140 929 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H929Q944 359 944 347Q944 336 930 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173H930Q931 172 933 171T936 169T938 167T941 164T942 162T943 158T944 153\",8657:\"228 -179Q227 -180 226 -182T223 -186T221 -189T218 -192T214 -193T208 -194Q196 -194 189 -181L188 125V430L176 419Q122 369 59 338Q46 330 40 330Q38 330 31 337V350Q31 362 33 365T46 374Q60 381 77 390T128 426T190 484T247 567T292 677Q295 688 298 692Q302 694 305 694Q313 694 318 677Q334 619 363 568T420 485T481 427T532 391T564 374Q575 368 577 365T579 350V337Q572 330 570 330Q564 330 551 338Q487 370 435 419L423 430L422 125V-181Q409 -194 401 -194Q397 -194 394 -193T388 -189T385 -184T382 -180V-177V475L373 487Q331 541 305 602Q304 601 300 591T290 571T278 548T260 519T238 488L229 476L228 148V-179\",8658:\"580 514Q580 525 596 525Q601 525 604 525T609 525T613 524T615 523T617 520T619 517T622 512Q659 438 720 381T831 300T927 263Q944 258 944 250T935 239T898 228T840 204Q696 134 622 -12Q618 -21 615 -22T600 -24Q580 -24 580 -17Q580 -13 585 0Q620 69 671 123L681 133H70Q56 140 56 153Q56 168 72 173H725L735 181Q774 211 852 250Q851 251 834 259T789 283T735 319L725 327H72Q56 332 56 347Q56 360 70 367H681L671 377Q638 412 609 458T580 514\",8659:\"401 694Q412 694 422 681V375L423 70L435 81Q487 130 551 162Q564 170 570 170Q572 170 579 163V150Q579 138 577 135T564 126Q541 114 518 99T453 48T374 -46T318 -177Q313 -194 305 -194T293 -178T272 -119T225 -31Q158 70 46 126Q35 132 33 135T31 150V163Q38 170 40 170Q46 170 59 162Q122 131 176 81L188 70V375L189 681Q199 694 208 694Q219 694 228 680V352L229 25L238 12Q279 -42 305 -102Q344 -23 373 13L382 25V678Q387 692 401 694\",8660:\"308 524Q318 526 323 526Q340 526 340 514Q340 507 336 499Q326 476 314 454T292 417T274 391T260 374L255 368Q255 367 500 367Q744 367 744 368L739 374Q734 379 726 390T707 416T685 453T663 499Q658 511 658 515Q658 525 680 525Q687 524 690 523T695 519T701 507Q766 359 902 287Q921 276 939 269T961 259T966 250Q966 246 965 244T960 240T949 236T930 228T902 213Q763 137 701 -7Q697 -16 695 -19T690 -23T680 -25Q658 -25 658 -15Q658 -11 663 1Q673 24 685 46T707 83T725 109T739 126L744 132Q744 133 500 133Q255 133 255 132L260 126Q265 121 273 110T292 84T314 47T336 1Q341 -11 341 -15Q341 -25 319 -25Q312 -24 309 -23T304 -19T298 -7Q233 141 97 213Q83 221 70 227T51 235T41 239T35 243T34 250T35 256T40 261T51 265T70 273T97 287Q235 363 299 509Q305 522 308 524ZM792 319L783 327H216Q183 294 120 256L110 250L120 244Q173 212 207 181L216 173H783L792 181Q826 212 879 244L889 250L879 256Q826 288 792 319\",8661:\"290 755Q298 772 305 772T318 757T343 706T393 633Q431 588 473 558T545 515T579 497V484Q579 464 570 464Q564 464 550 470Q485 497 423 550L422 400V100L423 -50Q485 3 550 30Q565 36 570 36Q579 36 579 16V3Q575 -1 549 -12T480 -53T393 -132Q361 -172 342 -208T318 -258T305 -272T293 -258T268 -208T217 -132Q170 -80 128 -51T61 -12T31 3V16Q31 36 40 36Q46 36 61 30Q86 19 109 6T146 -18T173 -38T188 -50V550Q186 549 173 539T147 519T110 495T61 470Q46 464 40 464Q31 464 31 484V497Q34 500 63 513T135 557T217 633Q267 692 290 755ZM374 598Q363 610 351 625T332 651T316 676T305 695L294 676Q282 657 267 636T236 598L228 589V-89L236 -98Q247 -110 259 -125T278 -151T294 -176T305 -195L316 -176Q328 -157 343 -136T374 -98L382 -89V589L374 598\",8666:\"944 54Q942 44 929 36H372Q372 34 377 26T395 -4T422 -58Q442 -109 442 -110T408 -111H374L370 -100Q282 124 87 243L76 250L87 257Q284 377 370 600L374 611H408Q442 611 442 610Q423 550 381 480Q380 478 379 475T376 471T374 468T372 465V464H929Q942 456 944 446Q944 442 943 439T941 434T938 430T935 428T931 426T928 424H344L336 414Q277 336 200 277L191 270H560Q929 270 933 268Q944 262 944 250Q944 237 933 232Q929 230 560 230H191L200 223Q279 162 336 86L344 76H928Q929 76 931 75T934 73T938 70T941 66T943 61T944 54\",8667:\"56 250Q56 260 68 270H808L799 277Q720 338 663 414L655 424H363Q71 424 68 426Q55 432 55 444T68 462Q71 464 349 464H627Q627 466 622 474T604 504T577 558Q557 609 557 610T591 611H626L629 600Q717 376 912 257L923 250L912 243Q715 123 629 -100L626 -111H591Q557 -111 557 -110Q576 -50 618 20Q619 22 620 25T623 29T625 32T626 35L627 36H349Q71 36 68 38Q55 44 55 56T68 74Q71 76 363 76H655L663 86Q722 164 799 223L808 230H438L68 231Q56 236 56 250\",8669:\"76 230Q68 230 62 237T56 250Q56 257 63 264T91 291Q102 300 108 306L159 351Q168 356 177 351L218 316L303 239L353 195Q376 214 403 239L488 316L529 351Q538 356 546 351Q548 350 594 310L638 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H737Q625 230 622 232Q620 233 599 251T558 288L537 306Q537 305 451 228T362 149Q353 146 345 149Q341 150 255 227T169 306Q167 306 129 270Q123 265 115 257T102 245T93 237T84 232T76 230\",8672:\"292 419Q292 400 261 347T211 275H306H364Q400 275 411 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM918 237T918 250T932 270H1236Q1251 262 1251 250T1236 230H932Q918 237 918 250\",8674:\"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM1022 417Q1022 437 1055 437H1067Q1090 437 1097 434T1109 417Q1128 373 1161 333T1236 270Q1251 261 1251 250Q1251 241 1244 236T1216 217T1175 182Q1149 155 1133 128T1109 85T1097 66Q1093 64 1065 64H1053Q1031 64 1025 72T1027 100Q1036 124 1049 147T1073 185T1091 210T1101 223L1103 225H1008H950Q914 225 903 229T892 250T903 270T948 275H1008H1103L1101 277Q1100 280 1091 291T1067 325T1039 374Q1022 408 1022 417\",8704:\"0 673Q0 684 7 689T20 694Q32 694 38 680T82 567L126 451H430L473 566Q483 593 494 622T512 668T519 685Q524 694 538 694Q556 692 556 674Q556 670 426 329T293 -15Q288 -22 278 -22T263 -15Q260 -11 131 328T0 673ZM414 410Q414 411 278 411T142 410L278 55L414 410\",8705:\"404 269Q412 269 418 267T428 261T435 253T441 245L444 240V172Q444 103 443 96Q440 81 431 65T403 27T344 -7T250 -21T156 -8T97 27T69 65T58 96Q56 103 56 413Q56 722 58 729Q74 822 215 845Q221 846 229 846H243Q282 846 290 845Q422 826 443 729Q444 722 444 653V586L442 583Q441 580 440 578T436 573T430 567T423 562T415 558T404 556Q377 556 367 583Q364 590 364 654V719Q363 721 360 726T355 733Q326 766 250 766H249Q235 766 219 765T174 752T137 719V107Q145 83 178 71T251 58H254Q340 58 364 107V172Q364 176 364 187T363 204Q363 269 404 269\",8706:\"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306\",8707:\"56 661T56 674T70 694H487Q497 686 500 679V15Q497 10 487 1L279 0H70Q56 7 56 20T70 40H460V327H84Q70 334 70 347T84 367H460V654H70Q56 661 56 674\",8709:\"331 696Q335 708 339 722T345 744T350 759T357 769T367 772Q374 772 381 767T388 754Q388 746 377 712L366 673L378 661Q460 575 460 344Q460 281 456 234T432 126T373 27Q319 -22 250 -22Q214 -22 180 -7Q168 -3 168 -4L159 -33Q148 -71 142 -75Q138 -78 132 -78Q124 -78 118 -72T111 -60Q111 -52 122 -18L133 21L125 29Q39 111 39 344Q39 596 137 675Q187 716 251 716Q265 716 278 714T296 710T315 703T331 696ZM276 676Q264 679 246 679Q196 679 159 631Q134 597 128 536T121 356Q121 234 127 174T151 80L234 366Q253 430 275 506T308 618L318 654Q318 656 294 669L276 676ZM181 42Q207 16 250 16Q291 16 324 47Q354 78 366 136T378 356Q378 470 372 528T349 616L348 613Q348 611 264 326L181 42\",8710:\"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344\",8711:\"46 676Q46 679 51 683H781Q786 679 786 676Q786 674 617 326T444 -26Q439 -33 416 -33T388 -26Q385 -22 216 326T46 676ZM697 596Q697 597 445 597T193 596Q195 591 319 336T445 80L697 596\",8712:\"84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250\",8713:\"196 25Q84 109 84 250Q84 372 166 450T360 539Q361 539 375 539T413 540T460 540L547 707Q550 716 563 716Q570 716 575 712T581 703T583 696T505 540H568Q583 532 583 520Q583 511 570 501L484 500L366 270H568Q583 262 583 250T568 230H346L247 38Q284 16 328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 447 -40T419 -41Q304 -41 228 3Q117 -211 115 -212Q111 -215 104 -215T92 -212T86 -204T84 -197Q84 -190 89 -183L196 25ZM214 61L301 230H124V228Q124 196 147 147T214 61ZM321 270L440 500Q353 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H321\",8715:\"83 520Q83 532 98 540H195Q202 540 220 540T249 541Q404 541 494 455Q582 374 582 250Q582 165 539 99T434 0T304 -39Q297 -40 195 -40H98Q83 -32 83 -20Q83 -10 96 0H200Q311 1 337 6Q369 14 401 28Q422 39 445 55Q484 85 508 127T537 191T542 228V230H98Q84 237 84 250T98 270H542V272Q542 280 539 295T527 336T497 391T445 445Q422 461 401 472Q386 479 374 483T347 491T325 495T298 498T273 499T239 500T200 500L96 501Q83 511 83 520\",8717:\"154 -1Q122 -1 112 3T102 26Q102 63 158 63H178Q192 64 206 65T228 66T240 68Q301 85 324 146L329 157H244Q158 157 153 161Q149 162 145 169T140 183Q140 201 158 215L167 221H256L344 223L349 237Q352 262 352 287Q352 308 351 315Q341 352 315 368T256 385Q231 385 206 376T166 356T149 346Q143 346 138 364T132 388Q132 396 147 406Q198 440 252 440Q291 440 318 435Q421 404 451 301Q456 288 456 248V234Q456 151 391 86Q330 25 240 3Q212 -1 154 -1\",8719:\"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8720:\"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8721:\"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748\",8722:\"84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250\",8723:\"56 467T56 480T70 500H707Q722 492 722 480T707 460H409V187H707Q722 179 722 167Q722 154 707 147H409V0V-93Q409 -144 406 -155T389 -166Q376 -166 372 -155T368 -105Q368 -96 368 -62T369 -2V147H70Q56 154 56 167T70 187H369V460H70Q56 467 56 480\",8724:\"339 717Q339 739 354 752T388 766Q410 766 424 751T439 716T424 681T390 666Q369 666 354 681T339 717ZM57 237T57 250T71 270H369V425L370 581Q380 594 389 594Q402 594 409 579V270H707Q722 262 722 250T707 230H409V-79Q401 -93 391 -93H389H387Q375 -93 369 -79V230H71Q57 237 57 250\",8725:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8726:\"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731\",8727:\"229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286\",8728:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251ZM245 403Q188 403 142 361T96 250Q96 183 141 140T250 96Q284 96 313 109T354 135T375 160Q403 197 403 250Q403 313 360 358T245 403\",8729:\"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251\",8730:\"95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178\",8733:\"56 124T56 216T107 375T238 442Q260 442 280 438T319 425T352 407T382 385T406 361T427 336T442 315T455 297T462 285L469 297Q555 442 679 442Q687 442 722 437V398H718Q710 400 694 400Q657 400 623 383T567 343T527 294T503 253T495 235Q495 231 520 192T554 143Q625 44 696 44Q717 44 719 46H722V-5Q695 -11 678 -11Q552 -11 457 141Q455 145 454 146L447 134Q362 -11 235 -11Q157 -11 107 56ZM93 213Q93 143 126 87T220 31Q258 31 292 48T349 88T389 137T413 178T421 196Q421 200 396 239T362 288Q322 345 288 366T213 387Q163 387 128 337T93 213\",8734:\"55 217Q55 305 111 373T254 442Q342 442 419 381Q457 350 493 303L507 284L514 294Q618 442 747 442Q833 442 888 374T944 214Q944 128 889 59T743 -11Q657 -11 580 50Q542 81 506 128L492 147L485 137Q381 -11 252 -11Q166 -11 111 57T55 217ZM907 217Q907 285 869 341T761 397Q740 397 720 392T682 378T648 359T619 335T594 310T574 285T559 263T548 246L543 238L574 198Q605 158 622 138T664 94T714 61T765 51Q827 51 867 100T907 217ZM92 214Q92 145 131 89T239 33Q357 33 456 193L425 233Q364 312 334 337Q285 380 233 380Q171 380 132 331T92 214\",8736:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q67 43 346 361Q397 420 474 508Q595 648 616 671T647 694T661 688T666 674Q666 668 663 663Q662 662 627 622T524 503T390 350L120 41L386 40H653Q666 30 666 20Q666 8 651 0H71\",8737:\"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q64 38 348 373T638 712Q644 714 646 714Q653 714 659 709T666 694V693Q666 687 633 647Q619 631 576 580Q528 524 495 485Q336 296 329 289Q328 288 348 264T395 182T433 54L434 40H651Q666 32 666 20T651 0H436Q431 -20 416 -20Q400 -20 396 -4V0H71ZM394 40Q394 51 389 76T366 149T319 234L302 256L119 41L256 40H394\",8738:\"666 -32Q666 -51 646 -51Q639 -51 365 85L75 228Q55 238 55 250Q55 257 59 262T68 268L72 270L611 536Q642 551 647 551T659 547T666 532Q666 521 657 515L525 449Q525 448 535 424T556 352T566 250T556 148T536 77T525 51L657 -15Q666 -21 666 -32ZM526 250Q526 297 517 342T499 409T488 431Q487 431 304 341T121 250T304 159T488 69Q526 143 526 250\",8739:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",8740:\"118 737Q131 750 138 750L151 746L158 739V579L160 421L213 470Q269 519 276 519Q284 519 290 513T296 499V498Q296 493 291 488T244 445Q225 428 213 417L158 368V-239Q143 -252 136 -252L124 -248L120 -241L118 44V328L62 279Q4 231 0 230Q-8 230 -14 236T-20 250Q-20 257 -11 265T62 332L118 384V737\",8741:\"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739\",8742:\"131 737Q134 739 138 743T144 748T151 750T171 737V199L327 357V737Q340 750 347 750Q351 750 353 749T360 743T367 737V397L429 457Q493 518 498 519Q506 519 512 512T518 500Q518 489 442 417L367 339V-237Q352 -250 346 -250L333 -243L327 -237V301L171 143V-237Q156 -250 151 -250T131 -237V101L69 41Q24 -3 15 -12T0 -21Q-8 -21 -14 -14T-20 -2Q-20 5 -7 19T56 81L131 159V737\",8743:\"318 591Q325 598 333 598Q344 598 348 591Q349 590 414 445T545 151T611 -4Q609 -22 591 -22Q588 -22 586 -21T581 -20T577 -17T575 -13T572 -9T570 -4L333 528L96 -4Q87 -20 80 -21Q78 -22 75 -22Q57 -22 55 -4Q55 2 120 150T251 444T318 591\",8744:\"55 580Q56 587 61 592T75 598Q86 598 96 580L333 48L570 580Q579 596 586 597Q588 598 591 598Q609 598 611 580Q611 574 546 426T415 132T348 -15Q343 -22 333 -22T318 -15Q317 -14 252 131T121 425T55 580\",8745:\"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21\",8746:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598\",8747:\"151 -112Q151 -150 106 -161Q106 -165 114 -172T134 -179Q155 -179 170 -146Q181 -120 188 -64T206 101T232 310Q256 472 277 567Q308 716 392 716Q434 716 453 681T472 613Q472 590 458 577T424 564Q404 564 390 578T376 612Q376 650 421 661Q421 663 418 667T407 675T393 679Q387 679 380 675Q360 665 350 619T326 438Q302 190 253 -57Q235 -147 201 -186Q174 -213 138 -216Q93 -216 74 -181T55 -113Q55 -91 69 -78T103 -64Q123 -64 137 -78T151 -112\",8748:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244\",8749:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244\",8750:\"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107\",8756:\"273 411Q273 437 291 454T334 471Q358 471 375 454T393 411T376 368T333 351Q307 351 290 368T273 411ZM84 38Q110 38 126 21T143 -22Q143 -46 127 -64T83 -82Q57 -82 41 -65T24 -22Q24 4 41 21T84 38ZM524 -22Q524 4 541 21T584 38Q608 38 625 21T643 -22Q643 -45 627 -63T583 -82Q557 -82 541 -65T524 -22\",8757:\"23 411Q23 437 41 454T84 471Q108 471 125 454T143 411T126 368T83 351Q57 351 40 368T23 411ZM523 411Q523 437 541 454T584 471Q608 471 625 454T643 411T626 368T583 351Q557 351 540 368T523 411ZM274 -22Q274 4 291 21T334 38Q356 38 374 22T392 -22T375 -65T333 -82Q307 -82 291 -65T274 -22\",8764:\"55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166\",8765:\"222 133Q147 133 102 197T56 335Q56 362 66 365Q71 369 77 364Q83 356 84 335T90 298Q102 254 137 222T223 189Q258 189 292 206T355 250T413 301T477 346T550 367Q628 367 673 309T722 171Q722 133 708 133Q703 133 699 141T694 162Q694 220 655 265T555 311Q519 311 485 293T421 248T363 196T298 152T222 133\",8768:\"55 569Q55 583 83 583Q122 583 151 565T194 519T215 464T222 411Q222 360 194 304T139 193T111 89Q111 38 134 -7T195 -55Q222 -57 222 -69Q222 -83 189 -83Q130 -83 93 -33T55 90Q55 130 72 174T110 252T148 328T166 411Q166 462 144 507T83 555Q55 556 55 569\",8769:\"220 366Q258 366 297 347T361 308T391 288Q394 288 464 370Q494 407 510 425T535 454T546 465T552 467H553Q560 467 566 461T573 448Q573 439 499 350Q424 266 424 261Q424 259 442 247T492 222T554 209Q607 209 646 243Q671 268 680 295T690 341T702 366Q719 366 719 314Q716 265 695 226Q682 199 664 179Q614 132 555 132Q517 132 477 151T412 190T383 210T347 172T278 89T233 37Q228 32 220 32Q210 32 206 38T201 48Q201 57 266 137Q272 144 275 148Q351 231 351 237Q351 239 333 251T283 276T221 289Q159 289 123 248T86 166Q86 156 82 145T73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q161 366 220 366\",8770:\"55 439T55 443T56 449T62 456T68 463H706Q720 449 720 443T706 423H68Q55 439 55 443ZM56 72Q56 112 73 152T130 225T224 257Q259 257 294 240T360 199T419 149T484 107T553 90Q603 90 643 125T691 223Q693 257 704 257Q717 257 717 221Q717 147 671 91T554 34Q517 34 481 51T414 93T355 142T291 184T222 201Q172 201 131 167T84 67Q81 34 71 34Q56 37 56 72\",8771:\"55 283Q55 356 103 409T217 463Q262 463 297 447T395 382Q431 355 446 344T493 320T554 307H558Q613 307 652 344T694 433Q694 464 708 464T722 432Q722 356 673 304T564 251H554Q510 251 465 275T387 329T310 382T223 407H219Q164 407 122 367Q91 333 85 295T76 253T69 250Q55 250 55 283ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56\",8773:\"55 388Q55 463 101 526T222 589Q260 589 296 571T362 526T421 474T484 430T554 411Q616 411 655 458T694 560Q694 572 698 580T708 589Q722 589 722 556Q722 482 677 419T562 356H554Q517 356 481 374T414 418T355 471T292 515T223 533Q179 533 145 508Q109 479 96 440T80 378T69 355Q55 355 55 388ZM56 236Q56 249 70 256H707Q722 248 722 236Q722 225 708 217L390 216H72Q56 221 56 236ZM56 42Q56 57 72 62H708Q722 52 722 42Q722 30 707 22H70Q56 29 56 42\",8775:\"55 417Q55 479 101 528T222 578Q259 578 294 564T393 507Q413 493 434 480T469 460T484 454L537 549Q587 639 595 647Q600 652 607 652Q615 652 621 647T628 634Q628 625 575 536Q524 446 524 443Q527 440 555 440Q603 440 644 469T691 547Q694 578 706 578T718 556Q718 555 718 551T717 545Q717 488 684 445T595 387Q582 384 558 384Q530 384 508 389L493 394L404 238L557 236H708Q720 224 720 217T706 196H379L291 43L499 41H708Q720 29 720 21T706 1H268L226 -71Q186 -143 179 -148Q173 -155 165 -155T152 -150T146 -137Q146 -133 184 -64L222 1H144L66 3L59 7Q54 14 54 20Q54 29 66 41H246L333 194Q333 196 202 196H68Q55 211 55 218T66 236H213L357 238L457 409L437 421Q432 423 393 450T307 500T222 523Q171 523 129 491T84 414Q82 383 70 383Q55 383 55 417\",8776:\"55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85\",8778:\"220 523Q163 523 124 486T84 412Q81 383 69 383Q56 383 56 413Q56 441 67 470Q78 508 111 537T187 575Q203 579 219 579Q248 579 271 572Q304 565 393 508Q498 439 551 439Q620 439 662 486Q688 512 693 557Q693 565 697 572T707 579Q719 579 719 548Q719 483 673 434T550 384Q512 384 467 405T386 453T305 501T220 523ZM222 288Q164 288 124 251T84 177Q81 148 69 148Q56 148 56 178Q56 206 67 235Q78 274 111 302T187 339Q198 343 220 343Q244 343 259 341T308 322T393 272Q496 203 553 203Q612 203 651 241T691 312Q693 343 705 343Q719 343 719 313Q719 245 673 199Q626 148 552 148Q513 148 467 170T385 218T304 266T222 288ZM51 -19Q51 -6 62 -1H387Q713 -1 715 -3Q725 -10 725 -20Q725 -27 718 -34Q714 -38 672 -38T387 -39H62Q51 -25 51 -19\",8781:\"55 464Q55 471 60 477T74 484Q80 484 108 464T172 420T268 376T389 356Q436 356 483 368T566 399T630 436T675 467T695 482Q701 484 703 484Q711 484 716 478T722 464Q722 454 707 442Q550 316 389 316Q338 316 286 329T195 362T124 402T76 437T57 456Q55 462 55 464ZM57 45Q66 58 109 88T230 151T381 183Q438 183 494 168T587 135T658 94T703 61T720 45Q722 39 722 36Q722 28 717 22T703 16Q697 16 669 36T606 80T510 124T389 144Q341 144 294 132T211 101T147 64T102 33T82 18Q76 16 74 16Q66 16 61 22T55 36Q55 39 57 45\",8782:\"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H268Q277 168 279 164Q281 162 284 137T305 89Q334 49 389 49H391Q442 49 472 89Q487 108 490 126T495 156T509 173H608H666Q701 173 711 170T722 153T707 133H532Q526 81 486 45T389 8Q331 8 291 45T245 133H70Q56 140 56 153\",8783:\"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",8784:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM329 610Q329 634 346 652T389 670Q413 670 431 654T450 611Q450 586 433 568T390 550T347 567T329 610\",8785:\"421 474T389 474T339 493T321 541Q321 566 337 587T391 609Q456 602 456 541Q456 512 439 493ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM421 -108T389 -108T339 -89T321 -41Q321 -16 337 5T391 27Q456 20 456 -41Q456 -70 439 -89\",8786:\"15 541Q15 569 33 585T75 601T117 585T135 541Q135 514 118 498T75 481T32 498T15 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM642 -41Q642 -17 658 0T702 18Q726 18 744 3T762 -41Q762 -67 745 -84T702 -101Q676 -101 659 -85T642 -41\",8787:\"642 541Q642 569 660 585T702 601T744 585T762 541Q762 515 745 498T702 481Q676 481 659 497T642 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM14 -41Q14 -15 31 1T74 18Q101 18 118 0T135 -41Q135 -64 118 -83T75 -102Q51 -102 33 -85T14 -41\",8790:\"56 347Q56 360 70 367H707Q722 359 722 347Q722 334 711 331T658 327H586H465L472 318Q496 288 496 250T472 182L465 173H586H663Q700 173 711 170T722 153T707 133H70Q56 140 56 153Q56 168 72 173H312L305 182Q281 212 281 250T305 318L312 327H72Q56 332 56 347ZM473 250Q473 265 472 273T460 297T428 327H349Q328 313 318 298T306 273T304 250Q304 235 305 227T317 203T349 173H428Q449 187 459 202T471 227T473 250\",8791:\"279 612Q279 656 310 688T388 721Q433 721 465 689T498 612Q498 573 470 538T389 503Q336 503 308 538T279 612ZM458 614Q458 637 452 651T433 672T411 679T383 680T352 675T333 664T324 647T321 629T320 611Q320 593 321 584T332 562T359 545Q366 543 389 543H391Q406 543 414 544T435 552T452 573T458 614ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153\",8796:\"192 482H190Q187 483 185 484T181 488T177 493T175 501Q175 506 178 512Q184 523 278 687T375 853Q379 857 383 857Q385 857 387 858T390 859Q397 859 403 853Q405 851 499 687T600 512Q603 506 603 501Q603 488 587 482H192ZM548 523L389 798Q388 798 309 661T230 523T389 522T548 523ZM56 347Q56 360 70 367H708Q723 359 723 347Q723 336 709 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H709Q723 163 723 153Q723 140 708 133H70Q56 140 56 153\",8800:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183L306 133H70Q56 140 56 153Q56 168 72 173H327L406 327H72Q56 332 56 347Q56 360 70 367H426Q597 702 602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 692 471 367H707Q722 359 722 347Q722 336 708 328L451 327L371 173H708Q722 163 722 153Q722 140 707 133H351Q175 -210 170 -212Q166 -215 159 -215\",8801:\"56 444Q56 457 70 464H707Q722 456 722 444Q722 430 706 424H72Q56 429 56 444ZM56 237T56 250T70 270H707Q722 262 722 250T707 230H70Q56 237 56 250ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56\",8804:\"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118\",8805:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118\",8806:\"674 753Q682 753 688 747T694 732T687 718Q686 717 417 589L151 463L399 345Q687 209 691 204Q694 198 694 193Q694 175 676 173H670L382 309Q92 446 90 448Q83 453 83 465Q84 476 96 482Q104 486 382 617T665 751Q669 753 674 753ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157\",8807:\"83 733Q83 741 89 747T99 753Q107 753 253 685T543 548T687 478Q694 473 694 463T687 448Q685 446 395 309L107 173H101Q83 175 83 193Q83 194 83 196Q82 203 98 212Q117 222 248 284Q326 321 378 345L626 463L360 589Q291 622 200 665Q112 706 98 714T83 733ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157\",8808:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",8809:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",8810:\"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM944 -48Q944 -54 939 -60T924 -67H923Q917 -67 841 -26Q735 33 634 88Q366 235 364 239Q361 243 361 250T364 261Q367 266 641 415T920 567L924 568Q927 567 930 567Q944 562 944 548Q944 540 938 534Q937 532 679 391L422 250L679 109Q937 -32 938 -34Q944 -40 944 -48\",8811:\"55 539T55 547T60 561T74 567Q81 567 207 498Q297 449 365 412Q633 265 636 261Q639 255 639 250Q639 241 626 232Q614 224 365 88Q83 -65 79 -66Q76 -67 73 -67Q65 -67 60 -61T55 -47Q55 -39 61 -33Q62 -33 95 -15T193 39T320 109L321 110H322L323 111H324L325 112L326 113H327L329 114H330L331 115H332L333 116L334 117H335L336 118H337L338 119H339L340 120L341 121H342L343 122H344L345 123H346L347 124L348 125H349L351 126H352L353 127H354L355 128L356 129H357L358 130H359L360 131H361L362 132L363 133H364L365 134H366L367 135H368L369 136H370L371 137L372 138H373L374 139H375L376 140L378 141L576 251Q63 530 62 533Q55 539 55 547ZM360 539T360 547T365 561T379 567Q386 567 512 498Q602 449 670 412Q938 265 941 261Q944 255 944 250Q944 241 931 232Q919 224 670 88Q388 -65 384 -66Q381 -67 378 -67Q370 -67 365 -61T360 -47Q360 -39 366 -33Q367 -33 400 -15T498 39T625 109L626 110H627L628 111H629L630 112L631 113H632L634 114H635L636 115H637L638 116L639 117H640L641 118H642L643 119H644L645 120L646 121H647L648 122H649L650 123H651L652 124L653 125H654L656 126H657L658 127H659L660 128L661 129H662L663 130H664L665 131H666L667 132L668 133H669L670 134H671L672 135H673L674 136H675L676 137L677 138H678L679 139H680L681 140L683 141L881 251Q368 530 367 533Q360 539 360 547\",8812:\"104 730Q104 749 123 749Q130 749 138 745Q186 717 237 671L250 659L261 670Q297 703 332 726T375 750T389 744T395 730Q395 721 390 717T364 699T322 668Q290 641 283 632Q280 628 281 627T293 612Q425 454 425 250Q425 144 388 51T293 -112Q282 -125 281 -126T283 -132Q306 -162 379 -209Q395 -219 395 -230Q395 -238 389 -244T375 -250T335 -228T262 -171L250 -159L238 -170Q202 -203 167 -226T124 -250T110 -244T104 -230Q104 -219 121 -209Q199 -156 216 -132Q219 -128 218 -127T206 -112Q74 46 74 250T206 612Q217 625 218 626T216 632Q199 656 121 709Q104 719 104 730ZM249 -94Q364 61 364 250Q364 430 265 574Q253 590 249 594L242 583Q134 439 134 250Q134 114 192 -1Q212 -44 242 -83L249 -94\",8814:\"693 -14T693 -20T687 -33T675 -41Q667 -41 506 37L344 112Q342 112 262 -46Q184 -196 176 -205Q172 -209 168 -209T162 -208Q155 -208 151 -203T146 -190Q146 -178 171 -137Q193 -91 251 21L306 132L198 183Q142 208 118 220T88 238T82 249Q82 253 86 261Q92 267 278 357L464 443L529 572Q561 637 577 667T597 703T607 708Q615 708 622 702T629 688Q629 680 575 579L524 474Q524 473 545 482T598 508Q666 541 673 541T686 535T693 521Q693 512 679 504T589 459L493 414L360 150Q366 148 378 142T431 116T529 70Q686 -8 689 -10Q693 -14 693 -20ZM380 277L433 383Q432 385 292 319T151 250T237 209T324 170L380 277\",8815:\"82 514T82 520T89 533T100 541Q106 541 271 463Q434 386 435 386L515 543Q593 699 600 706Q604 708 607 708Q615 708 622 702T629 688T549 526Q509 445 491 407T473 368Q522 343 580 317Q636 291 660 278T688 261T693 250V249Q693 241 681 234T580 184Q533 161 502 146Q317 59 315 59Q312 56 246 -74Q197 -170 186 -189T168 -209Q164 -209 162 -208Q155 -208 151 -203T146 -190Q146 -187 200 -79L253 28L218 11Q182 -6 144 -23T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4T186 41L284 88L349 217Q377 273 395 311T413 350Q413 351 253 428Q101 498 86 510Q82 514 82 520ZM624 250Q461 330 455 330Q454 331 453 329T448 321T441 308T430 287T416 259T398 223L342 114L624 250\",8816:\"82 -124Q82 -120 83 -117T89 -110T95 -103H220L284 50Q346 204 344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q664 54 526 121Q513 127 495 136T464 150T438 162T416 173T399 180T388 185L384 186Q383 186 322 41L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",8817:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q384 185 322 39L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124Q82 -120 83 -117T89 -110T95 -103H220L273 26Q326 156 326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",8818:\"674 732Q682 732 688 726T694 711T687 697Q686 696 417 568L151 442L399 324Q687 188 691 183Q694 177 694 172Q694 154 676 152H670L382 288Q92 425 90 427Q83 432 83 444Q84 455 96 461Q104 465 382 596T665 730Q669 732 674 732ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8819:\"90 697Q83 704 83 712T88 726T99 732Q107 732 253 664T543 527T687 457Q694 452 694 442T687 427Q685 425 395 288L107 152H101Q83 154 83 172Q83 173 83 175Q82 182 98 191Q117 201 248 263Q326 300 378 324L626 442L360 568Q91 696 90 697ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8822:\"734 181Q734 173 728 167T714 161Q711 161 386 280T54 404Q44 408 44 421Q44 432 52 437Q66 443 388 562T714 681Q721 681 727 675T734 661Q734 651 722 645Q711 639 462 546Q441 539 420 531L122 421L420 311L723 198Q734 192 734 181ZM44 247Q44 255 50 261T63 267Q66 267 391 148T723 24Q734 18 734 7T723 -10Q716 -14 391 -133T63 -253Q56 -253 50 -247T44 -233Q44 -223 55 -217Q67 -210 317 -118Q337 -110 357 -103L655 7L357 117L54 230Q44 236 44 247\",8823:\"83 661Q83 668 88 674T104 681Q111 679 396 560Q686 437 687 436Q694 431 694 421T687 406Q686 405 543 344T253 222T101 161Q83 163 83 180Q83 194 95 199Q96 199 130 213T232 257T361 311L621 421L357 532Q307 553 233 584Q121 631 102 640T83 661ZM673 267Q694 267 694 248Q694 237 687 232Q684 229 420 118L156 7L416 -103L683 -215Q694 -222 694 -233Q694 -251 676 -253Q670 -253 524 -192T235 -70T90 -8Q83 -1 83 7Q83 19 94 24Q97 25 378 144T667 266Q669 267 673 267\",8826:\"84 249Q84 262 91 266T117 270Q120 270 126 270T137 269Q388 273 512 333T653 512Q657 539 676 539Q685 538 689 532T694 520V515Q689 469 672 431T626 366T569 320T500 286T435 265T373 249Q379 248 404 242T440 233T477 221T533 199Q681 124 694 -17Q694 -41 674 -41Q658 -41 653 -17Q646 41 613 84T533 154T418 197T284 220T137 229H114Q104 229 98 230T88 235T84 249\",8827:\"84 517Q84 539 102 539Q115 539 119 529T125 503T137 459T171 404Q277 275 640 269H661Q694 269 694 249T661 229H640Q526 227 439 214T283 173T173 98T124 -17Q118 -41 103 -41Q83 -41 83 -17Q88 29 105 67T151 132T208 178T277 212T342 233T404 249Q401 250 380 254T345 263T302 276T245 299Q125 358 92 468Q84 502 84 517\",8828:\"112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q516 310 620 464Q635 486 642 510T651 548T657 571T675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17Q688 5 683 3Q677 0 673 0Q656 0 653 24Q623 270 118 270H112ZM110 116Q83 116 83 136T110 156H113Q134 156 160 155T231 146T318 128T407 95T489 44T550 -30T583 -131Q583 -153 563 -153Q556 -153 553 -152T547 -145T542 -127Q531 -54 478 0Q425 53 333 83T123 116H110\",8829:\"668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668ZM194 -131Q201 -60 241 -6T343 82T477 133T628 155Q632 155 644 155T661 156Q685 155 690 147Q694 143 694 136Q694 132 693 129T689 124T685 120T681 117L656 116Q596 114 543 106T436 79T342 35T272 -33T235 -127Q231 -154 212 -154Q203 -153 199 -147T194 -136V-131\",8830:\"84 442Q84 455 91 459T117 463Q120 463 126 463T137 462Q388 466 512 526T653 705Q657 732 676 732Q685 731 689 725T694 714V708Q689 662 672 624T626 559T569 513T500 479T435 458T373 442Q379 441 404 435T440 426T477 414T533 392Q592 362 630 319T681 241T694 174Q694 153 674 153Q662 153 657 163T652 188T640 231T606 287Q500 416 137 422H114Q104 422 98 423T88 428T84 442ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8831:\"84 710Q84 732 102 732Q115 732 119 722T125 696T137 652T171 597Q277 468 640 462H661Q694 462 694 442T661 422H640Q578 421 526 417T415 403T309 376T222 333T156 268T124 179Q122 162 118 158T103 153Q100 153 98 153T95 154T93 155T90 158T85 163Q83 167 83 176Q88 222 105 260T151 325T208 371T277 405T342 426T404 442Q401 443 380 447T345 456T302 469T245 492Q125 551 92 661Q84 695 84 710ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194\",8832:\"386 292Q388 292 439 393T543 598T598 703Q599 703 603 704T609 705Q616 705 622 699T629 685T533 494Q440 308 440 305Q451 310 462 312Q547 342 592 388T651 505Q654 525 658 532T673 539Q680 539 686 533T693 519Q693 495 678 450Q638 341 500 283Q433 259 418 259Q416 259 411 251T406 241T415 239Q482 224 544 190Q674 121 691 -10Q693 -28 691 -32Q684 -43 672 -43Q664 -43 658 -37Q656 -33 650 -6T634 47T589 109T500 168Q473 179 436 190T388 201H386L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -185 246 12Q344 206 344 210Q344 213 305 217T213 225T124 228H95Q82 241 82 248Q82 253 95 268H124Q172 268 236 273T343 283T386 292\",8833:\"103 -43Q96 -43 89 -39T82 -26L84 -10Q105 141 275 212Q342 236 355 236Q360 236 364 245L369 256H360Q284 280 275 283Q115 351 86 490Q82 507 82 517Q82 526 88 532T103 538Q110 538 115 534Q119 531 122 517T128 486T143 444T174 397T231 351T320 310Q371 292 389 292L491 496Q595 701 598 703Q599 703 603 704T609 705Q616 705 622 699T629 685Q629 684 531 485Q431 296 431 288Q431 278 520 273T651 268H680Q693 253 693 248Q693 241 680 228H651Q591 228 491 218T386 201L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -182 302 125L335 190L324 185Q313 185 289 172Q241 153 208 128T159 78T135 31T124 -11T118 -37Q112 -43 103 -43\",8834:\"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250\",8835:\"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520\",8838:\"84 346Q84 468 166 546T360 635Q361 635 370 635T395 635T430 636T475 636T524 636H679Q694 628 694 616Q694 607 681 597L522 596H470H441Q366 596 338 592T266 568Q244 557 224 542T179 500T139 433T124 346V341Q124 253 185 185Q244 121 328 103Q348 98 366 98T522 96H681Q694 86 694 76Q694 64 679 56H526Q510 56 480 56T434 55Q350 55 289 71T172 141Q84 223 84 346ZM104 -131T104 -118T118 -98H679Q694 -106 694 -118T679 -138H118Q104 -131 104 -118\",8839:\"83 616Q83 628 98 636H251Q267 636 297 636T343 637Q427 637 488 621T605 551Q693 470 693 346Q693 261 650 195T545 96T415 57Q407 56 251 56H98Q83 64 83 76Q83 86 96 96H255H308H337Q412 96 439 100T512 124Q533 135 553 150T599 192T639 259T654 346Q654 437 592 507Q557 545 512 568Q468 587 439 591T335 596H306H255L96 597Q83 607 83 616ZM84 -131T84 -118T98 -98H659Q674 -106 674 -118T659 -138H98Q84 -131 84 -118\",8840:\"146 -283Q146 -282 174 -213T202 -143H115Q102 -127 102 -123T115 -103H220L291 68L278 73Q203 101 153 157T86 288Q83 309 83 344Q83 380 86 399Q107 480 160 539Q222 601 298 621Q328 630 345 631T435 635L526 637L560 715Q587 778 593 789T609 801Q616 801 622 795T629 781Q629 780 625 771T614 742T600 706L571 637Q571 635 626 635H680Q693 620 693 613T689 601L682 597L618 595H553L449 346Q425 288 399 223T359 127T346 95H356Q365 95 381 95T417 94T463 93T515 93H682Q693 82 693 74T680 53H511Q420 55 335 55L329 57L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283ZM509 590Q509 595 438 595Q354 595 318 586Q246 567 195 516T126 395Q123 378 123 344T126 293Q141 229 184 181T291 110L306 104L406 346L509 590\",8841:\"82 606T82 613T95 635H251H348Q408 635 435 632T502 615L515 608L520 617Q520 619 558 708Q584 774 591 787T609 801Q616 801 622 795T629 781Q629 775 562 615L551 590L569 577Q646 527 678 437Q691 398 691 344T678 250Q653 182 597 132T469 64Q427 53 366 53H326L295 -25L262 -103H660Q673 -118 673 -124Q673 -129 669 -136L662 -141L453 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L251 -25L284 53H189L93 55L86 59Q82 64 82 71T95 93H302L400 333Q498 569 498 573L444 590Q431 593 260 595L93 597L86 601Q82 606 82 613ZM652 344V354Q652 451 575 521Q571 526 557 538T537 551Q534 551 533 548Q533 543 438 319L344 95L371 93H386Q487 93 557 150T649 293Q652 309 652 344\",8842:\"693 72Q693 68 692 66T686 59T680 52H524Q398 52 367 53T309 63Q236 82 180 132T98 250Q84 288 84 343Q84 397 98 437Q126 515 193 568T346 632Q347 632 373 633T440 634T520 635H680Q693 620 693 615Q693 608 680 595H526Q364 595 353 592Q279 582 221 539T138 430Q124 392 124 343Q124 296 138 257Q163 192 221 149T353 95Q364 92 526 92H680Q693 79 693 72ZM102 -132T102 -125T115 -103H382L420 -68Q429 -60 438 -52T452 -39T463 -28T472 -20T478 -14T483 -10T487 -7T490 -6T493 -5T496 -5Q502 -5 508 -12T515 -28Q515 -34 513 -37Q512 -38 507 -42T492 -55T475 -70L440 -101L562 -103H682Q693 -114 693 -122T680 -143H395L355 -179Q289 -241 280 -241Q273 -241 267 -235T260 -221T265 -208T300 -174L335 -143H224L113 -141L106 -137Q102 -132 102 -125\",8843:\"82 615Q82 620 95 635H251Q378 635 409 634T469 623Q540 605 596 555T678 437Q691 397 691 343T678 250Q649 172 581 119T426 55Q415 52 251 52H95Q93 55 89 59T84 65T82 72Q82 79 95 92H249Q411 92 422 95Q496 105 554 148T638 257Q651 296 651 343Q651 391 638 430Q613 495 555 538T422 592Q411 595 249 595H95Q82 608 82 615ZM82 -132T82 -125T95 -103H380L420 -57Q452 -21 460 -14T474 -6Q482 -6 488 -12T495 -25T451 -81L433 -101L549 -103H662Q673 -114 673 -122T660 -143H395L355 -190Q311 -239 309 -239Q305 -241 302 -241Q294 -241 287 -235T280 -221T324 -163L342 -143H218L93 -141L86 -137Q82 -132 82 -125\",8846:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM313 406Q313 417 313 435T312 459Q312 483 316 493T333 503T349 494T353 461V406V325H515Q516 325 519 323T527 316T531 305T527 294T520 287T515 285H353V204V152Q353 127 350 117T333 107T316 117T312 152Q312 158 312 175T313 204V285H151Q150 285 147 287T139 294T135 305T139 316T146 323T151 325H313V406\",8847:\"83 523Q87 535 99 539H679Q694 531 694 519Q694 506 679 499H123V-1H678Q694 -7 694 -21Q694 -34 679 -41H98Q93 -38 84 -28L83 247V523\",8848:\"64 506T64 519T78 539H699Q706 536 714 526V-28Q706 -38 699 -41H78Q64 -34 64 -21Q64 -6 80 -1H674V499H78Q64 506 64 519\",8849:\"94 620Q98 632 110 636H699Q714 628 714 616T699 596H134V96H698Q714 90 714 76Q714 64 699 56H109Q104 59 95 69L94 344V620ZM84 -118Q84 -103 100 -98H698Q714 -104 714 -118Q714 -130 699 -138H98Q84 -131 84 -118\",8850:\"64 603T64 616T78 636H668Q675 633 683 623V69Q675 59 668 56H78Q64 63 64 76Q64 91 80 96H643V596H78Q64 603 64 616ZM64 -118Q64 -108 79 -98H678Q694 -104 694 -118Q694 -130 679 -138H78Q64 -131 64 -118\",8851:\"83 0Q79 0 76 1T71 3T67 6T65 9T63 13T61 16V301L62 585Q70 595 76 598H592Q602 590 605 583V15Q598 2 587 0Q583 0 580 1T575 3T571 6T569 9T567 13T565 16V558H101V15Q94 2 83 0\",8852:\"77 0Q65 4 61 16V301L62 585Q72 598 81 598Q94 598 101 583V40H565V583Q573 598 585 598Q598 598 605 583V15Q602 10 592 1L335 0H77\",8853:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM364 542Q308 539 251 509T148 418T96 278V270H369V542H364ZM681 278Q675 338 650 386T592 462T522 509T458 535T412 542H409V270H681V278ZM96 222Q104 150 139 95T219 12T302 -29T366 -42H369V230H96V222ZM681 222V230H409V-42H412Q429 -42 456 -36T521 -10T590 37T649 113T681 222\",8854:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM681 278Q669 385 591 463T381 542Q283 542 196 471T96 278V270H681V278ZM275 -42T388 -42T585 32T681 222V230H96V222Q108 107 191 33\",8855:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q531 510 496 523Q446 542 381 542Q324 542 272 519T196 471L389 278L485 375L582 471ZM167 442Q95 362 95 250Q95 137 167 58L359 250L167 442ZM610 58Q682 138 682 250Q682 363 610 442L418 250L610 58ZM196 29Q209 16 230 2T295 -27T388 -42Q409 -42 429 -40T465 -33T496 -23T522 -11T544 1T561 13T574 22T582 29L388 222L196 29\",8856:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q581 472 571 480T556 491T539 502T517 514T491 525T460 534T424 539T381 542Q272 542 184 460T95 251Q95 198 113 150T149 80L167 58L582 471ZM388 -42Q513 -42 597 44T682 250Q682 363 610 442L196 29Q209 16 229 2T295 -27T388 -42\",8857:\"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM682 250Q682 322 649 387T546 497T381 542Q272 542 184 459T95 250Q95 132 178 45T389 -42Q515 -42 598 45T682 250ZM311 250Q311 285 332 304T375 328Q376 328 382 328T392 329Q424 326 445 305T466 250Q466 217 445 195T389 172Q354 172 333 195T311 250\",8858:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM250 250Q250 316 295 352T384 388Q451 388 489 347T528 250Q528 192 487 152T389 112Q331 112 291 152T250 250ZM488 250Q488 290 460 319T389 349Q348 349 319 320T290 250Q290 208 320 180T389 151Q431 151 459 181T488 250\",8859:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM204 339Q204 357 215 366T238 375Q247 375 283 348Q300 336 311 328L368 286Q369 286 366 323T359 398T355 437Q357 456 379 465Q380 465 384 465T391 466Q403 465 412 457T423 437Q423 436 420 398T413 323T410 286L467 328Q476 334 486 341T501 353T513 361T523 368T529 372T535 374T541 375Q554 375 564 365T575 339Q575 325 566 318T519 292Q504 285 496 281L430 250L496 219Q552 192 559 188T572 175Q575 168 575 161Q575 148 566 137T541 126H538Q530 126 499 149Q480 163 467 172L410 214Q409 214 412 177T419 102T423 63Q423 59 421 54T411 43T389 36T368 42T357 54T355 63Q355 64 358 102T365 177T368 214L311 172Q302 165 293 159T279 148T268 140T260 134T254 131T250 128T246 127T242 126T238 126Q223 126 214 135T204 161T213 183T282 219L348 250L282 281Q226 308 219 312T206 325Q204 330 204 339\",8861:\"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM223 250Q223 263 233 267T280 271Q289 271 325 271T389 270H490Q535 270 545 267T555 250Q555 241 549 235Q544 231 527 231T389 230Q239 230 235 232Q223 236 223 250\",8862:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM369 365V649H95V365H369ZM682 365V649H409V365H682ZM369 40V325H95V40H369ZM682 40V325H409V40H682\",8863:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 365V649H95V365H682ZM682 40V325H95V40H682\",8864:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H707Q714 686 722 676V13Q714 3 707 0H71ZM123 649Q147 625 214 555T335 430T389 374L654 649H123ZM95 70Q99 74 229 209T360 345L95 619V70ZM682 70V619L418 346Q417 344 549 207L682 70ZM654 41L400 304L388 315L123 41L256 40H522L654 41\",8865:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682ZM330 345Q330 371 347 388T390 405Q412 405 430 389T448 345Q448 317 430 301T389 285T348 301T330 345\",8866:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V367H540Q555 359 555 347Q555 334 540 327H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678\",8867:\"515 678Q515 679 516 681T518 684T521 688T525 691T530 693T537 694Q548 692 555 679V15Q548 2 537 0Q533 0 530 1T525 3T521 6T519 9T517 13T515 16V327H71Q70 327 67 329T59 336T55 347T59 358T66 365T71 367H515V678\",8868:\"55 642T55 648T59 659T66 666T71 668H708Q723 660 723 648T708 628H409V15Q402 2 391 0Q387 0 384 1T379 3T375 6T373 9T371 13T369 16V628H71Q70 628 67 630T59 637\",8869:\"369 652Q369 653 370 655T372 658T375 662T379 665T384 667T391 668Q402 666 409 653V40H708Q723 32 723 20T708 0H71Q70 0 67 2T59 9T55 20T59 31T66 38T71 40H369V652\",8872:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V367H796Q811 359 811 347Q811 336 797 328L479 327H161L159 328V172L161 173H797Q798 172 800 171T803 169T805 167T808 164T809 162T810 158T811 153Q811 140 796 133H159V-235Q151 -249 141 -249H139\",8873:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM249 678Q249 679 250 681T252 684T255 688T259 691T264 693T271 694Q282 692 289 679V367H651Q666 359 666 347Q666 334 651 327H289V15Q282 2 271 0Q267 0 264 1T259 3T255 6T253 9T251 13T249 16V678\",8874:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM237 678Q237 679 238 681T240 684T243 688T247 691T252 693T259 694Q270 692 277 679V15Q270 2 259 0Q255 0 252 1T247 3T243 6T241 9T239 13T237 16V678ZM419 678Q419 679 420 681T422 684T425 688T429 691T434 693T441 694Q452 692 459 679V367H818Q833 359 833 347Q833 334 818 327H459V15Q452 2 441 0Q437 0 434 1T429 3T425 6T423 9T421 13T419 16V678\",8876:\"56 681Q70 695 76 695T96 681V368H243L381 530Q521 692 525 692Q537 700 547 688Q554 682 554 674Q554 671 553 669T548 661T539 649T522 631T499 604T465 565T421 512Q296 373 296 368H416H476Q525 368 539 365T554 348Q554 334 543 328H261L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM205 326Q205 328 152 328H96V263Q96 203 98 203Q99 203 123 231T174 290T205 326\",8877:\"56 681Q70 695 76 695T96 681V466H327L425 579Q522 692 527 692Q529 693 534 693Q542 693 547 688T553 674Q553 668 549 663Q549 662 538 650T504 611T463 563L381 468L461 466H543Q554 453 554 446T541 426H345L209 272L376 270H543Q554 257 554 251T541 230H174L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM267 399L292 426H96V270H158L201 321Q256 382 267 399ZM118 228L119 229Q119 230 109 230H96V201L107 212Q118 227 118 228\",8878:\"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V526Q292 368 296 368Q298 368 447 510Q638 695 642 695H645Q651 695 658 688T665 673Q665 666 661 661Q659 660 639 641T578 582T505 512L356 370L505 368H654Q665 357 665 349Q665 343 652 328H314L303 317L292 308V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681\",8879:\"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V466H401L503 563L621 679Q637 695 645 695Q652 695 658 688T665 673Q665 670 663 666Q663 665 651 652T611 612T561 563L458 468L556 466H654Q665 455 665 447T652 426H416L294 308L292 288V270H652Q665 255 665 250T652 230H292V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681ZM358 426H292V361L325 392L358 426\",8882:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26ZM654 11T654 249T653 487T402 369T151 249L275 190Q399 131 524 72T652 11Q654 11 654 249\",8883:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523ZM376 368Q323 393 254 425T155 472L125 487Q123 487 123 249T125 11Q127 12 252 71T502 190L626 249L376 368\",8884:\"694 71Q686 58 676 56H670L382 192Q92 329 90 331Q83 336 83 346Q83 359 96 364Q101 367 379 498T665 634Q671 636 674 636Q686 636 694 621V71ZM654 108T654 346T653 584T402 466T151 346L275 287Q399 228 524 169T652 108Q654 108 654 346ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120\",8885:\"83 620Q83 621 85 624T92 632T103 636Q107 636 389 503T680 365Q694 357 694 346Q694 336 687 331Q685 329 395 192L107 56H101Q90 58 83 71V620ZM376 465Q323 490 254 522T155 570L125 584Q123 584 123 346T125 108Q127 109 252 168T502 287L626 346L376 465ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120\",8888:\"1055 250Q1055 190 1012 141T896 92Q858 92 828 106T781 140T755 180T741 214L738 228V230H405Q71 230 68 232Q55 238 55 250T68 268Q71 270 405 270H738V272L740 280Q742 287 745 297T754 321T771 348T796 374T832 396T881 408H891Q969 408 1012 360T1055 250ZM896 132Q948 132 981 166T1014 250Q1014 301 985 330T920 367Q914 368 891 368Q853 368 816 338T778 250Q778 198 812 165T896 132\",8890:\"318 -182Q302 -212 280 -212H278H275Q249 -212 239 -182L238 84V351H162L87 352Q57 362 57 391T84 429Q89 431 280 431H470L474 429Q477 427 479 426T484 423T490 417T495 410T499 402T500 391Q500 365 470 352L394 351H318V-182\",8891:\"56 697Q56 706 62 711T75 716Q86 716 90 709Q91 708 104 680T147 592T199 483L305 261L411 483Q443 548 481 629Q512 694 518 705T535 716Q543 716 549 710T555 700Q555 693 501 577T388 340T325 210Q316 194 305 194Q292 194 285 210Q282 219 224 339T111 574T56 697ZM55 14T55 20T59 31T66 38T71 40H540Q555 32 555 20T540 0H71Q70 0 67 2T59 9\",8892:\"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18\",8896:\"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249\",8897:\"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708\",8898:\"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217\",8899:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750\",8900:\"242 486Q245 488 250 488Q256 488 258 486Q262 484 373 373T486 258T488 250T486 242T373 127T258 14Q256 12 250 12Q245 12 242 14Q237 16 127 126T14 242Q12 245 12 250T14 258Q16 263 126 373T242 486ZM439 250L250 439L61 250L250 61L439 250\",8901:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250\",8902:\"210 282Q210 284 225 381T241 480Q241 484 245 484Q249 486 251 486Q258 486 260 477T272 406Q275 390 276 380Q290 286 290 282L388 299Q484 314 487 314H488Q497 314 497 302Q497 297 434 266Q416 257 404 251L315 206L361 118Q372 98 383 75T401 40L407 28Q407 16 395 16Q394 16 392 16L390 17L250 159L110 17L108 16Q106 16 105 16Q93 16 93 28L99 40Q105 52 116 75T139 118L185 206L96 251Q6 296 4 300Q3 301 3 302Q3 314 12 314H13Q16 314 112 299L210 282\",8903:\"366 543Q374 545 382 545Q405 545 419 538Q429 534 443 521T462 496Q466 478 466 467Q466 438 444 412Q422 390 388 390Q352 390 331 412Q311 434 311 467Q311 499 331 518Q345 533 366 543ZM146 472Q146 479 153 485T166 492Q171 492 187 476T279 385L386 278L495 385Q600 492 608 492Q615 492 621 486T628 472Q628 467 614 452T531 367L435 270H706Q720 256 720 250Q720 241 706 230H435L531 132Q600 63 614 48T628 27Q628 20 622 14T608 7Q600 7 495 114L386 221L279 114Q204 39 188 23T166 7Q159 7 153 13T146 27Q146 32 160 47T244 132L339 230H68Q55 243 55 250Q55 255 68 270H339L244 367Q175 436 161 451T146 472ZM466 34Q466 4 447 -20T388 -44Q353 -44 331 -22Q311 1 311 34Q311 66 331 85Q347 101 366 110Q374 112 382 112Q405 112 419 105Q429 100 443 87T462 63Q466 45 466 34\",8904:\"833 50T833 250T832 450T659 351T487 250T658 150T832 50Q833 50 833 250ZM873 10Q866 -5 854 -5Q851 -5 845 -3L449 226L260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489Q33 505 43 505Q51 505 260 385L449 274L845 503Q851 505 853 505Q866 505 873 490V10ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250\",8905:\"146 479Q159 492 166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 621 486T628 472Q628 464 522 357L415 250L522 144Q628 37 628 28Q628 21 622 15T608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q162 8 160 9T153 15T146 21V479ZM186 77L359 250L186 424V77\",8906:\"146 472Q146 479 152 485T166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 628 479V21Q615 8 608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q159 8 153 14T146 28Q146 37 253 144L359 250L253 357Q146 464 146 472ZM588 77V424L499 337L415 250L588 77\",8907:\"55 674Q55 682 62 688T76 694H77Q83 694 100 677T208 561Q320 440 410 342Q462 286 541 201Q677 55 699 30T722 -2Q722 -9 716 -15T701 -22T688 -17Q687 -15 542 141T394 301L388 306L240 146Q119 15 101 -3T75 -22T61 -16T55 -2Q55 4 67 19T158 117Q190 151 209 172L361 336L209 500Q62 657 57 667Q55 671 55 674\",8908:\"84 -22T76 -22T62 -16T55 -2Q55 4 78 30T249 215Q321 293 367 342Q672 672 683 682Q695 694 702 694Q710 694 716 688T722 674Q722 668 710 653T619 555Q587 521 568 500L416 336L568 172Q715 15 720 5Q722 1 722 -2Q722 -9 716 -15T702 -22H700Q693 -22 671 1T537 146L389 306Q387 304 340 253T237 143T135 33L89 -17Q84 -22 76 -22\",8909:\"56 433Q56 464 71 464Q74 464 77 461Q82 454 82 438T91 397T123 347Q166 307 222 307Q264 307 308 331T386 385T465 438T556 463Q631 463 676 408T722 283Q722 250 708 250Q704 250 699 257Q695 265 693 286T682 330Q670 350 655 367Q612 407 556 407Q514 407 470 383T393 329T314 276T222 251Q148 251 102 306T56 433ZM57 56Q57 71 73 76H706Q722 70 722 56Q722 44 707 36H71Q57 43 57 56\",8910:\"83 558Q83 566 89 572T104 578Q108 578 116 577T146 570T190 555T239 526T286 480Q308 453 325 420T351 358T367 304T376 265T380 251T381 253Q381 262 395 312Q428 434 492 499T642 576Q654 578 655 578Q664 578 670 572T676 558Q676 543 657 540T599 524T525 476Q406 362 400 29V8Q400 -21 380 -21Q369 -21 362 -11Q360 -7 360 12Q360 115 348 200T308 360T231 480T111 537Q83 540 83 558\",8911:\"104 -22Q95 -22 89 -16T83 -2Q83 11 98 16T135 23T192 46T256 103Q360 233 360 549Q360 554 360 557T361 563T362 567T364 569T367 572T371 576Q377 578 380 578Q401 578 401 547Q401 543 401 537T400 527Q409 53 648 19Q676 16 676 -2Q676 -10 670 -16T655 -22Q654 -22 642 -20Q556 -9 492 56T395 244Q381 294 381 303Q381 305 380 305T374 275T352 201T310 110T234 27T117 -20Q105 -22 104 -22\",8912:\"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250ZM694 134Q694 123 679 114H425H384Q350 114 326 121T277 154Q238 193 238 251Q238 322 295 361Q318 378 339 382T412 387Q423 387 459 387T520 386H679Q694 377 694 366Q694 354 679 346H519Q493 346 458 346T411 347Q360 347 341 342T303 315Q278 287 278 250Q278 210 301 187T351 156Q358 154 519 154H679Q694 146 694 134\",8913:\"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520ZM83 366Q83 376 96 386H244Q280 386 317 386T378 386L402 387Q456 387 498 348T540 250Q540 203 512 168T446 120Q427 114 353 114H99Q84 120 84 134Q84 147 98 154H258Q284 154 319 154T366 153Q416 153 436 158T474 185Q500 214 500 250Q500 290 477 313T426 344Q419 346 258 346H98Q83 354 83 366\",8914:\"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21ZM229 -21H227Q215 -21 209 -7V166Q209 304 209 327T215 363Q226 398 259 421T333 444Q380 444 414 416T455 347Q457 339 457 166V-7Q449 -21 439 -21H437H435Q423 -21 417 -7V164Q417 303 417 325T411 358Q387 403 333 403T255 358Q250 347 250 325T249 164V-7Q241 -21 231 -21H229\",8915:\"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM437 598Q450 598 457 583V410Q457 237 455 229Q448 189 414 161T333 132Q291 132 255 157T211 230Q209 237 209 412L210 585Q220 598 229 598Q242 598 249 583V412Q249 273 249 251T255 218Q279 173 333 173T411 218Q416 229 416 251T417 412V583Q425 598 437 598\",8916:\"76 -22Q64 -22 56 -7V176L57 360L59 370Q66 401 83 426T123 468T171 495T221 513T265 522T298 527L311 528H314V625L315 723Q325 736 334 736Q346 736 354 721V528H356L368 527Q380 526 399 523T441 515T490 498T537 472T578 433T606 379Q611 359 611 171V-7Q604 -21 591 -21T571 -7V170Q571 313 571 337T565 375Q555 408 526 432T461 467T402 482T365 487H354V-7Q347 -21 334 -21T314 -7V487H303Q251 484 207 467Q121 438 99 367L97 357L96 174V-9Q86 -22 76 -22\",8918:\"86 261Q92 267 381 404T673 541Q680 541 686 535T693 521T689 510Q684 504 418 379L151 250L418 121Q686 -4 689 -10Q693 -14 693 -21T687 -34T675 -41Q668 -41 380 96T86 239Q82 244 82 250Q82 257 86 261ZM610 250Q610 224 592 198T531 172Q498 172 475 195Q453 214 453 250Q453 308 513 328Q515 330 535 330Q569 328 589 304T610 250\",8919:\"82 521Q82 529 89 535T100 541Q107 541 395 404T689 261Q693 257 693 250T689 239Q684 234 396 97T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4Q118 9 358 121L624 250L358 379Q91 503 86 510Q82 514 82 521ZM165 250Q165 282 188 306T239 330Q262 330 275 323Q303 312 318 283Q322 272 322 250Q322 213 300 195Q277 172 246 172Q224 172 213 177Q165 200 165 250\",8920:\"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM958 -48Q958 -54 953 -60T938 -67H937Q931 -67 855 -26Q749 33 648 88Q380 235 378 239Q375 243 375 250T378 261Q381 266 655 415T934 567L938 568Q941 567 944 567Q958 562 958 548Q958 540 952 534Q951 532 693 391L436 250L693 109Q951 -32 952 -34Q958 -40 958 -48ZM1277 -48Q1277 -54 1272 -60T1257 -67H1256Q1250 -67 1174 -26Q1068 33 967 88Q699 235 697 239Q694 243 694 250T697 261Q700 266 974 415T1253 567L1257 568Q1260 567 1263 567Q1277 562 1277 548Q1277 540 1271 534Q1270 532 1012 391L755 250L1012 109Q1270 -32 1271 -34Q1277 -40 1277 -48\",8921:\"75 -67Q65 -67 60 -61T55 -48Q55 -40 61 -34Q62 -32 329 109L595 250L329 391Q62 532 61 534Q55 540 55 548Q55 562 69 567H77Q81 567 222 493T506 342T653 264Q667 250 653 236Q649 234 504 157T220 7T77 -67H75ZM364 547Q364 563 381 567L384 568Q387 568 518 499T795 353T955 269Q967 261 967 250T955 231Q925 216 780 139T513 -3T383 -67Q373 -67 369 -60T364 -47Q364 -40 370 -34Q373 -31 639 109L904 250L639 391Q373 531 370 534Q364 540 364 547ZM674 538T674 548T681 562T693 567Q699 567 816 505Q915 453 993 412Q1050 382 1132 339Q1241 282 1259 271T1277 250Q1277 241 1263 232Q1246 221 985 84Q698 -67 692 -67Q674 -67 674 -47Q674 -38 680 -33Q683 -30 947 109L1213 250L947 391Q683 530 680 533Q674 538 674 548\",8922:\"674 445Q674 438 669 432T655 425T369 531T90 640Q83 645 83 655Q83 668 95 673Q644 886 654 886Q662 886 668 880T674 866Q674 856 663 850Q649 843 411 751L160 655L407 560Q474 534 561 501Q646 469 660 462T674 445ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM83 55Q83 68 94 73Q98 76 104 76Q108 75 383 -30T664 -138Q674 -144 674 -155Q674 -165 667 -170Q664 -173 385 -279T104 -386Q85 -386 83 -368Q83 -354 92 -349Q93 -349 347 -251L597 -155L346 -59Q296 -40 223 -12Q118 28 101 36T83 55\",8923:\"111 425T102 425T88 431T83 445V446Q83 455 96 461Q111 469 203 504Q287 536 350 560L597 655L346 751Q94 848 92 850Q83 856 83 866Q83 873 88 879T104 886Q109 885 386 779T667 670Q674 665 674 655T667 640Q665 638 388 532ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM653 76Q656 76 660 75T669 68T674 56Q674 46 665 40Q663 38 411 -59L160 -155L410 -251Q664 -349 665 -349Q674 -354 674 -368Q672 -386 654 -386Q650 -386 371 -279T90 -170Q83 -165 83 -155Q83 -144 93 -138Q645 76 653 76\",8926:\"113 424Q83 424 83 444Q83 453 96 464H121Q181 466 234 474T341 501T435 545T505 613T542 707Q545 734 564 734Q583 731 583 714Q583 658 560 613T500 538T414 486T321 453T229 434T156 426T113 424ZM112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q624 310 653 556Q657 580 675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17L692 14Q691 11 689 8T683 3T673 0Q657 0 653 24Q623 270 118 270H112\",8927:\"195 713Q195 725 201 729T214 734Q227 734 231 722T238 691T255 641T299 580Q405 474 656 464H681Q694 451 694 443Q694 424 670 424H664Q535 424 415 465T235 595Q195 657 195 713ZM668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668\",8928:\"82 344Q82 349 95 364H124Q266 364 398 390L429 397L509 595Q519 619 536 659Q581 766 590 783T609 801Q616 801 622 795T629 781Q629 776 553 595Q533 548 516 506T489 439T480 415Q482 415 505 426T538 444Q632 498 651 601Q654 621 658 628T673 635Q680 635 686 629T693 615Q693 591 678 546Q636 433 484 375L458 364L451 348Q443 332 443 329T455 324Q480 316 503 307T560 277T619 233T664 170T691 86Q693 68 691 64Q684 53 672 53Q664 53 658 59Q657 60 650 97T617 174T538 244Q515 257 476 273T428 289Q425 289 412 256Q381 179 344 90L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L302 97Q384 288 384 299Q384 302 341 308T235 319T124 324H95Q82 337 82 344ZM399 338Q403 338 406 346L409 353L375 344Q375 343 384 341T399 338\",8929:\"146 -283Q146 -282 174 -213T202 -143H95Q82 -127 82 -123T95 -103H220L300 93Q343 196 374 270Q385 294 386 299L373 295Q331 287 289 268Q241 249 208 224T159 174T135 127T124 85T118 59Q112 53 103 53Q91 53 84 64Q82 68 84 86Q96 185 174 248T375 337L400 344Q399 344 381 348T351 355T316 364T276 379T235 398T193 424T155 456T122 497T98 546Q82 587 82 615Q82 622 88 628T102 635Q112 635 116 628T124 601Q128 579 134 562T159 515T207 463T290 418T415 384L422 381L506 586Q571 744 584 772T609 801Q616 801 622 795T629 781T544 577Q525 529 504 478T473 402T462 375Q480 373 500 373Q579 364 651 364H680Q682 361 686 357T691 351T693 344Q693 337 680 324H651Q553 324 451 310L433 308L349 104L262 -101L473 -103H682Q694 -115 694 -123Q694 -133 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283\",8934:\"86 450Q93 455 380 592T673 730Q680 730 686 724T693 710Q693 702 688 699Q686 693 417 568L151 439L417 310Q685 185 688 179Q693 176 693 168Q693 161 687 155T675 148Q668 148 380 285T86 428Q74 438 86 450ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8935:\"88 723Q95 730 99 730Q106 730 394 593T688 450Q693 447 693 439T688 428Q683 423 395 286T99 148Q94 148 88 155T82 168Q82 175 86 179Q89 184 357 310L624 439L357 568Q88 694 86 699Q81 703 81 711T88 723ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8936:\"95 419Q81 433 81 439T95 459H124Q318 459 455 501Q515 521 556 550T615 607T641 659T652 702T659 725Q667 730 673 730Q680 730 686 724T693 710Q693 682 677 641Q668 616 654 594T622 554T586 522T545 497T504 477T464 462T428 452T397 444T375 439Q379 437 410 430T476 411T551 379T625 321T677 237Q693 196 693 168Q693 161 687 155T673 148Q662 148 658 154T651 181Q638 253 591 300T455 377Q318 419 124 419H95ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8937:\"679 459Q693 445 693 439Q693 430 679 419H651Q455 419 319 377Q231 347 184 300T124 181Q120 161 116 155T102 148Q95 148 89 154T82 168Q82 192 97 237Q111 275 137 306T188 355T249 391T307 414T361 429T399 439Q397 440 364 447T298 467T224 499T149 557T97 641Q82 686 82 710Q82 717 88 723T102 730L115 725Q118 722 124 697Q137 625 184 578T319 501Q456 459 651 459H679ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205\",8938:\"693 -30Q686 -41 673 -41Q661 -41 506 34L346 110L280 -44Q228 -162 216 -185T193 -208Q177 -208 173 -192Q173 -186 242 -30T311 128Q271 145 184 186T86 236Q82 240 82 246Q82 251 86 259Q96 267 271 350L449 434L506 565Q537 635 551 664T571 700T582 706Q587 706 593 701T600 690Q600 679 553 572Q504 463 504 461L586 501Q672 539 673 539Q679 539 693 525V-30ZM653 10V488L566 445L480 405L422 276Q415 260 405 236T388 199T376 171T368 151T366 145Q368 143 510 77T653 10ZM422 374Q422 376 420 376T285 313T151 248Q315 168 326 163Q415 356 422 374\",8939:\"82 525Q96 539 102 539Q103 539 122 530T186 501T266 463L426 388Q428 388 495 541Q564 694 569 699Q573 706 581 706Q587 706 593 702T600 691Q600 676 533 528Q515 486 506 465T485 418T470 381T466 370Q466 369 575 316Q676 269 689 259Q693 253 693 248Q693 242 689 236Q688 235 506 145Q328 63 324 59Q324 50 266 -70Q224 -169 214 -188T193 -208Q177 -208 173 -192Q173 -183 222 -77Q244 -29 257 2T269 34L186 -6Q108 -43 99 -43Q93 -43 82 -30V525ZM271 416Q129 485 126 485H125Q122 485 122 250Q122 10 124 10L211 50L295 92L411 350Q411 351 271 416ZM624 248L449 332L440 319Q434 297 393 214Q353 121 353 119Q355 119 489 182T624 248\",8940:\"82 -123Q82 -114 93 -103H166L238 -101L293 50Q349 200 349 204L220 266Q166 291 140 304T100 325T84 336T82 344Q82 353 94 360Q112 372 282 453L473 541L482 568Q487 578 529 693Q559 785 569 795Q573 802 581 802Q587 802 593 797T599 786Q599 775 564 675L526 570Q526 568 561 584T633 617T673 635Q679 635 693 621V66Q686 54 679 54Q665 54 526 119Q491 137 458 153T405 177T386 184Q385 182 334 42T282 -101T482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123ZM653 106V584L506 513L453 370Q442 339 428 300T407 243T400 224Q403 222 527 164T653 106ZM453 486Q453 488 451 488T300 417T151 344L224 308Q247 298 285 279T331 257L364 241L453 486\",8941:\"82 621Q96 635 102 635T249 568L420 486L449 473L469 533Q563 789 569 797Q573 801 581 801Q598 801 600 786Q602 781 544 617L484 455Q531 435 584 408Q677 364 689 355Q693 351 693 344Q693 339 692 337T676 325T631 302T538 257Q504 241 465 223T406 195T386 186Q384 184 333 44T282 -101Q282 -103 482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123Q82 -114 93 -103H166L238 -101L333 159Q326 159 220 106Q110 54 97 54Q89 54 82 66V621ZM298 501Q155 567 142 575L122 584V344Q122 106 124 106Q125 106 180 132T291 185T351 213Q355 217 393 326L433 435Q433 436 298 501ZM549 381Q472 417 471 417L406 241Q408 240 516 291T624 344L549 381\",8942:\"78 30Q78 54 95 72T138 90Q162 90 180 74T199 31Q199 6 182 -12T139 -30T96 -13T78 30ZM78 440Q78 464 95 482T138 500Q162 500 180 484T199 441Q199 416 182 398T139 380T96 397T78 440ZM78 840Q78 864 95 882T138 900Q162 900 180 884T199 841Q199 816 182 798T139 780T96 797T78 840\",8943:\"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250\",8945:\"133 760Q133 784 150 802T193 820Q217 820 235 804T254 761Q254 736 237 718T194 700T151 717T133 760ZM580 460Q580 484 597 502T640 520Q664 520 682 504T701 461Q701 436 684 418T641 400T598 417T580 460ZM1027 160Q1027 184 1044 202T1087 220Q1111 220 1129 204T1148 161Q1148 136 1131 118T1088 100T1045 117T1027 160\",8965:\"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18\",8966:\"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97\",8968:\"174 734Q178 746 190 750H298H369Q400 750 411 747T422 730T411 713T372 709Q365 709 345 709T310 710H214V-235Q206 -248 196 -250Q192 -250 189 -249T184 -247T180 -244T178 -241T176 -237T174 -234V734\",8969:\"21 717T21 730T32 746T75 750H147H256Q266 742 269 735V-235Q262 -248 251 -250Q247 -250 244 -249T239 -247T235 -244T233 -241T231 -237T229 -234V710H133Q119 710 99 710T71 709Q43 709 32 713\",8970:\"174 734Q174 735 175 737T177 740T180 744T184 747T189 749T196 750Q206 748 214 735V-210H310H373Q401 -210 411 -213T422 -230T411 -247T369 -251Q362 -251 338 -251T298 -250H190Q178 -246 174 -234V734\",8971:\"229 734Q229 735 230 737T232 740T235 744T239 747T244 749T251 750Q262 748 269 735V-235Q266 -240 256 -249L147 -250H77Q43 -250 32 -247T21 -230T32 -213T72 -209Q79 -209 99 -209T133 -210H229V734\",8988:\"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306\",8989:\"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306\",8990:\"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172\",8991:\"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351\",8994:\"55 141Q55 149 72 174T125 234T209 303T329 360T478 388H526Q649 383 765 319Q814 291 858 250T923 179T944 141Q944 133 938 128T924 122Q914 124 912 125T902 139Q766 328 500 328Q415 328 342 308T225 258T150 199T102 148T84 124Q81 122 75 122Q55 127 55 141\",8995:\"923 378Q944 378 944 358Q944 345 912 311T859 259Q710 134 500 134Q288 134 140 259Q55 336 55 358Q55 366 61 372T75 378Q78 378 84 376Q86 376 101 356T147 310T221 257T339 212T500 193Q628 193 734 236Q841 282 903 363Q914 378 923 378\",9001:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",9002:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",9136:\"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 454T239 315T239 247Q240 235 240 124V40Q240 -17 233 -53T201 -130Q155 -206 78 -244H69H64Q58 -244 57 -243T56 -234Q56 -232 56 -231V-225Q56 -218 63 -215Q153 -153 170 -39Q172 -25 173 119V219Q173 245 174 249Q173 258 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741\",9137:\"78 744Q153 706 196 640T239 492V376Q239 341 239 314T238 271T238 253Q239 251 239 223V119V49Q239 -39 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 258 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78\",9168:\"312 0V602H355V0H312\",9416:\"451 -175Q328 -175 226 -115T66 47T8 267Q8 303 15 342T39 431T94 531T186 622Q239 663 307 686T424 709H440Q604 709 716 622Q757 592 788 555T838 482T869 414T886 350T892 301T894 267Q894 147 835 45T674 -116T451 -175ZM854 268Q854 375 802 467T657 614T450 670Q283 670 166 552T49 267Q49 99 167 -18T453 -136Q617 -136 735 -18T854 268ZM273 378Q273 430 309 474T409 527Q411 527 417 527T428 528Q498 528 549 484L567 505Q583 528 590 528H594Q600 528 606 522V350L600 344H586Q577 344 574 344T569 347T566 357Q542 491 432 491Q389 491 365 465T340 407Q340 391 344 378T358 356T377 340T400 328T421 321T443 316T459 313Q499 305 517 300T559 279T601 238Q629 195 629 148Q629 80 583 33T471 -14Q392 -14 330 30Q312 6 293 -13Q292 -14 285 -14Q279 -14 273 -8V77V138Q273 160 275 165T286 170H294H307Q313 164 313 158Q313 108 350 67T471 26Q512 26 537 54T562 119Q562 137 558 151T544 176T527 193T504 205T483 212T459 218T441 222Q391 232 368 241T318 273Q273 316 273 378\",9484:\"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306\",9488:\"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306\",9492:\"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172\",9496:\"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351\",9585:\"19 -195Q13 -195 7 -188T0 -176Q0 -169 18 -151L822 683Q835 694 840 694T852 688T860 674Q860 667 810 614T460 252Q57 -167 44 -179Q27 -195 19 -195\",9586:\"0 675Q0 681 6 687T19 694Q27 694 44 678L460 247Q759 -62 809 -115T860 -175Q860 -183 852 -189T840 -195Q835 -195 822 -184L18 649Q0 667 0 675\",9632:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9633:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682\",9642:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9650:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99\",9651:\"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347\",9652:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99\",9653:\"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347\",9654:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523\",9656:\"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523\",9657:\"26 489Q33 505 43 505Q51 505 260 385Q464 266 471 259Q473 257 473 250Q473 242 469 239Q459 231 260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250\",9660:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556\",9661:\"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460\",9662:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556\",9663:\"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460\",9664:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26\",9666:\"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26\",9667:\"473 10Q466 -5 454 -5Q451 -5 445 -3Q444 -3 343 56T140 173T35 234Q26 239 26 250T35 266Q40 269 240 384T445 503Q451 505 453 505Q466 505 473 490V10ZM433 50T433 250T432 450T259 351T87 250T258 150T432 50Q433 50 433 250\",9674:\"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709ZM567 290T567 291T451 475T333 658L100 293Q100 288 215 108L333 -74Q334 -74 450 108\",9711:\"56 250Q56 353 95 442T196 589T335 681T491 715Q573 715 635 693Q694 673 747 635T846 543T917 412T944 250Q944 58 815 -78T500 -215Q457 -215 429 -210Q274 -183 165 -56T56 250ZM500 -176Q664 -176 784 -54T904 250Q904 418 799 536T543 674Q534 675 493 675Q425 675 357 647T229 567T133 432T96 250Q96 160 129 80T217 -56T346 -144T500 -176\",9723:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682\",9724:\"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71\",9733:\"367 395Q374 416 398 492T442 627T463 688Q463 692 467 692Q471 694 472 694Q478 694 484 680T523 562Q553 469 576 400L577 395H731H819Q872 395 883 394T895 384Q895 380 891 376T832 333Q794 305 767 285Q643 195 643 194L690 47Q737 -96 737 -103Q737 -111 727 -111Q721 -111 594 -18L472 71L350 -18Q223 -111 217 -111Q207 -111 207 -103Q207 -96 254 47L301 194Q301 195 241 239T118 328T51 378Q49 382 49 384Q49 392 58 393T110 395H213H367\",9824:\"181 -21Q134 -21 96 27T55 193Q55 224 58 247T82 317T143 410Q172 443 234 498Q282 543 314 598T360 687T380 725Q386 727 389 727Q395 727 398 725T406 716T413 702T423 677T439 641Q481 556 544 498Q633 420 678 353T723 204Q723 142 711 94T669 12T590 -21Q520 -21 490 8T459 66V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V66Q319 57 314 44T297 16T257 -10T191 -21H181\",9825:\"55 490Q55 557 71 604T114 674T167 706T222 716Q279 716 322 684T389 605Q391 610 395 617T414 643T447 677T494 704T555 716Q642 716 682 652T723 490Q723 455 718 426T684 342T602 227Q573 196 537 161T485 110T449 63T412 -8Q408 -22 404 -27T389 -33Q382 -33 379 -31T372 -23T366 -8T355 18T335 54Q319 81 298 104T239 163T176 227Q102 310 79 371T55 490ZM198 674Q143 664 119 613T95 491Q95 415 137 346Q174 282 265 194T384 48L389 39Q391 42 397 54T406 71T415 86T427 104T442 122T464 146T491 172Q571 249 613 303Q683 396 683 487Q683 581 649 631Q613 676 556 676Q495 676 457 634T410 538Q407 514 390 514Q386 514 380 517Q372 520 369 536T355 581T319 635Q277 675 223 675H217H208L204 674Q200 674 198 674\",9826:\"370 714Q370 717 375 722T388 727Q398 727 403 721T417 697Q420 692 421 689Q536 465 709 304Q723 291 723 282T709 260Q529 93 406 -153Q402 -162 390 -162H389Q379 -162 376 -158T357 -125Q247 89 89 241L64 265Q55 272 55 282Q55 287 57 290T64 300T77 312T98 331T127 361Q197 435 258 523T344 663L370 714ZM655 299Q568 384 508 470T389 662L376 638Q362 613 341 577T289 497T215 399T123 299L105 282L123 265Q210 180 270 94T389 -98L402 -74Q416 -49 437 -13T489 67T563 165T655 265L673 282L655 299\",9827:\"213 532Q213 615 265 670T389 726Q461 726 513 671T565 532Q565 511 562 492T553 458T541 432T526 409T512 393T498 379L490 371L511 326Q512 326 516 330T528 341T546 353T572 363T606 368Q664 368 707 315T750 174Q750 87 699 33T579 -22Q567 -22 553 -20T517 -10T479 16T459 63V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V63Q315 25 281 2T197 -22Q132 -22 80 32T28 174Q28 255 69 311T175 368Q192 368 207 364T232 353T250 341T262 331T267 326L288 371L280 378Q272 385 267 391T253 407T238 430T226 457T217 492T213 532\",9837:\"200 467Q254 467 293 428T332 321Q332 147 104 -11L88 -22H75Q62 -22 56 -16L55 362V647Q55 743 60 748Q63 750 76 750H83Q87 750 95 744V434L104 440Q144 467 200 467ZM237 322Q237 360 225 388T183 417Q158 417 134 407T101 378Q96 370 96 349T95 197V34Q152 91 194 167T237 322\",9838:\"65 721Q78 734 94 734Q100 734 104 727V444L116 449Q129 454 157 465T208 486Q313 527 314 527Q318 527 324 521V-210Q306 -223 294 -223Q289 -223 284 -216V-13L270 -18Q257 -24 231 -34T180 -54Q77 -96 74 -96T65 -90V721ZM104 13Q282 84 283 85Q284 85 284 252Q284 418 283 418L230 396L140 360L104 346V13\",9839:\"101 -223Q94 -223 93 -217T91 -188V-151Q91 -88 90 -88Q87 -88 80 -92T68 -96Q62 -96 56 -90L55 -50V-22Q55 -8 58 -4T78 5L91 10V177Q91 343 90 343Q87 343 80 339T68 335Q62 335 56 341L55 381V409Q55 423 58 427T78 436L91 441V543V616Q91 643 93 648T106 656Q119 662 126 659Q130 657 130 645T131 554V456L257 503V607L258 710L260 712Q261 715 272 719T286 723Q293 723 295 715T297 671V617Q297 519 298 519Q301 519 307 522T319 526Q327 526 333 521V437L330 435Q328 432 312 427L297 421V254Q297 88 298 88Q301 88 307 91T319 95Q327 95 333 90V6L330 4Q328 1 312 -4L297 -10V-78V-122Q297 -145 295 -149T282 -156Q274 -160 268 -160Q257 -160 257 -130V-89V-25L131 -72V-210Q123 -215 116 -218T104 -222L101 -223ZM257 72V406L131 359V25L257 72\",10003:\"84 231Q84 244 114 264T170 285Q176 285 183 274T224 205Q267 129 268 129Q271 141 279 163T318 250T389 378T502 523T662 673Q702 706 732 706H734Q749 706 749 695Q749 682 730 666T660 607T559 505Q387 299 328 29Q324 0 295 -17T245 -34H241Q234 -34 225 -21T185 46Q166 79 154 101Q84 223 84 231\",10016:\"195 702T195 706T201 716H632Q638 710 638 706T636 700T621 690Q436 581 427 374V357H430Q554 357 645 421Q682 447 711 483T755 542T770 567Q775 572 786 563V131Q777 125 774 125T762 139Q709 228 642 274T482 333Q452 337 430 337H427V320Q430 279 437 247T462 170T521 82T621 4Q630 -2 633 -4T637 -7T638 -12Q638 -16 632 -22H201Q195 -16 195 -12T197 -6T212 4Q397 113 406 320V337H403Q279 337 188 273Q151 247 122 211T78 152T63 127Q58 122 48 131V563Q54 569 59 569Q62 569 71 555Q124 466 191 420T351 361Q381 357 403 357H406V374Q403 415 396 447T371 525T312 613T212 690Q199 697 197 699\",10072:\"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139\",10216:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",10217:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",10222:\"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 394V331Q240 259 239 250Q240 242 240 119V49Q240 -42 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 260 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741\",10223:\"78 744Q153 706 196 640T239 492V376Q239 339 239 311T238 269T238 252Q240 236 240 124V40Q240 -18 233 -53T202 -130Q156 -206 79 -244H70H65Q58 -244 57 -242T56 -231T57 -220T64 -215Q153 -154 170 -39Q173 -18 174 119V247Q173 249 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78\",10229:\"165 270H1510Q1525 262 1525 250T1510 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270\",10230:\"84 237T84 250T98 270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H98Q84 237 84 250\",10231:\"165 270H1694Q1578 357 1551 493Q1551 494 1551 496T1550 499Q1550 511 1567 511H1570Q1579 511 1582 510T1588 506T1591 497T1594 481T1602 456Q1624 389 1675 336T1794 261Q1803 258 1803 250Q1803 244 1798 241T1774 231T1736 212Q1695 186 1665 152T1620 85T1599 35T1591 4Q1589 -6 1586 -8T1570 -11Q1550 -11 1550 0Q1550 7 1555 25Q1587 151 1694 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270\",10232:\"274 173H1539Q1540 172 1542 171T1545 169T1547 167T1550 164T1551 162T1552 158T1553 153Q1553 140 1538 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1538Q1553 359 1553 347Q1553 336 1539 328L1221 327H903L900 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173\",10233:\"1218 514Q1218 525 1234 525Q1239 525 1242 525T1247 525T1251 524T1253 523T1255 520T1257 517T1260 512Q1297 438 1358 381T1469 300T1565 263Q1582 258 1582 250T1573 239T1536 228T1478 204Q1334 134 1260 -12Q1256 -21 1253 -22T1238 -24Q1218 -24 1218 -17Q1218 -13 1223 0Q1258 69 1309 123L1319 133H70Q56 140 56 153Q56 168 72 173H1363L1373 181Q1412 211 1490 250Q1489 251 1472 259T1427 283T1373 319L1363 327H710L707 328L390 327H72Q56 332 56 347Q56 360 70 367H1319L1309 377Q1276 412 1247 458T1218 514\",10234:\"1438 514Q1438 525 1454 525Q1459 525 1462 525T1467 525T1471 524T1473 523T1475 520T1477 517T1480 512Q1517 438 1578 381T1689 300T1785 263Q1802 258 1802 250T1793 239T1756 228T1698 204Q1554 134 1480 -12Q1476 -21 1473 -22T1458 -24Q1438 -24 1438 -17Q1438 -13 1443 0Q1478 69 1529 123L1539 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1539L1529 377Q1496 412 1467 458T1438 514ZM274 173H1583L1593 181Q1632 211 1710 250Q1709 251 1692 259T1647 283T1593 319L1583 327H930L927 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173\",10236:\"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H95V155\",10731:\"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709\",10744:\"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215\",10752:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250\",10753:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103\",10754:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59\",10756:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276\",10758:\"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217\",10799:\"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29\",10815:\"28 660Q28 676 31 679T46 683H50Q87 681 182 681Q217 681 247 681T294 682T315 682Q321 682 323 682T328 679T331 673T332 660Q332 643 328 640T304 637Q239 637 231 626Q229 620 229 334V46H520V334Q520 620 518 626Q510 637 445 637Q426 637 422 640T417 660Q417 675 420 678T432 682H435Q437 682 467 682T569 681T671 681T703 682Q714 682 717 679T721 660Q721 643 717 640T693 637Q628 637 620 626Q619 623 619 342Q619 60 620 57Q628 46 693 46Q714 46 717 43T721 23Q721 5 715 1Q713 0 374 0Q36 0 34 1Q28 5 28 23Q28 40 31 43T56 46Q121 46 129 57Q131 63 131 342Q131 620 129 626Q121 637 56 637Q35 637 32 640T28 660\",10846:\"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97\",10877:\"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM94 170Q102 172 104 172Q110 171 254 103T535 -30T678 -98Q694 -106 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 164 94 170\",10878:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM674 172Q692 172 694 154Q694 142 687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 96 -100Q100 -98 380 35T665 170T674 172\",10885:\"667 761Q669 762 673 762Q682 762 688 756T694 741Q694 731 687 727Q684 724 420 613L156 502L416 392Q476 367 544 338T647 295T682 280Q694 274 694 262Q694 244 676 242Q670 242 524 303T235 425T90 487Q83 493 83 501Q83 514 94 519Q97 520 378 639T667 761ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257\",10886:\"90 727Q83 734 83 743Q83 751 89 756T104 762Q111 760 396 641Q686 518 687 517Q694 512 694 502T687 487Q686 486 543 425T253 303T101 242Q83 244 83 262Q83 274 95 280Q96 280 130 294T232 338T361 392L621 502L357 613Q93 724 90 727ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257\",10887:\"380 497Q445 528 522 564T636 618T673 635Q680 635 686 628T693 615T689 603Q686 599 418 472L151 343L418 215Q686 88 689 83Q693 79 693 72T687 59T675 52Q669 52 381 189T86 332Q82 337 82 344Q82 350 86 355Q91 359 380 497ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124\",10888:\"82 614Q82 620 86 625T94 632T100 635Q106 635 394 498T689 355Q693 349 693 343Q693 338 689 332Q683 327 395 190T100 52Q95 52 89 58T82 72Q82 80 95 88Q114 99 358 215L624 343L358 472Q89 599 86 603Q82 607 82 614ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124\",10889:\"86 512Q93 518 381 639T673 761Q680 761 686 755T693 741Q693 733 688 730Q685 723 419 612L155 501L419 390Q685 277 688 272Q693 269 693 261Q693 254 687 248T675 241Q669 241 381 362T86 490Q74 500 86 512ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59\",10890:\"86 730Q81 734 81 740Q81 747 88 754T99 761Q103 761 392 640T688 512Q693 509 693 501T688 490Q682 484 394 363T99 241Q94 241 88 248T82 261Q82 268 86 272Q89 277 355 390L619 501L355 612Q89 723 86 730ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59\",10891:\"674 1003Q681 1003 687 999T694 983Q694 973 683 967Q669 959 420 868L162 772L422 676Q683 579 685 577Q694 571 694 560Q694 550 687 546T673 541Q669 542 384 647T93 755Q83 760 83 772Q83 783 91 788Q98 791 383 897T674 1003ZM84 354T84 367T98 387H679Q694 379 694 367Q694 354 679 347H98Q84 354 84 367ZM84 160T84 173T98 193H679Q694 185 694 173Q694 160 679 153H98Q84 160 84 173ZM94 -3Q102 -1 104 -1Q107 -2 392 -107T684 -215Q694 -219 694 -232Q694 -241 687 -247Q686 -248 395 -357Q106 -463 101 -463Q83 -461 83 -443Q83 -431 94 -426Q97 -423 357 -328L615 -232L355 -136Q94 -39 92 -37Q83 -31 83 -21Q83 -9 94 -3\",10892:\"104 541Q98 541 91 545T83 560Q83 571 92 577Q94 579 355 676L615 772L357 868Q108 959 94 967Q83 973 83 983Q83 989 87 996T104 1003Q109 1002 396 896T687 787Q694 781 694 772Q694 759 684 755Q678 752 393 647T104 541ZM84 367Q84 380 98 387H679Q694 379 694 367Q694 356 680 348L390 347H100Q84 352 84 367ZM84 173Q84 188 100 193H680Q694 183 694 173Q694 160 679 153H98Q84 160 84 173ZM674 -1Q682 -1 688 -6T694 -20Q694 -31 685 -37Q683 -39 422 -136L162 -232L420 -328Q680 -423 683 -426Q694 -431 694 -443Q694 -461 676 -463Q671 -463 382 -357Q91 -248 90 -247Q83 -242 83 -232Q83 -220 93 -215Q667 -1 674 -1\",10901:\"674 636Q682 636 688 631T694 616Q694 605 687 601Q685 599 395 462L107 326H101Q83 328 83 345Q83 358 96 365Q102 367 382 500T665 634Q671 636 674 636ZM674 442Q692 442 694 424Q694 412 687 407Q686 406 417 278L151 152L399 34Q687 -102 691 -107Q694 -113 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 165 96 171Q104 175 382 306T665 440Q669 442 674 442\",10902:\"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 354 694 346Q694 328 676 326H670L382 462Q317 493 226 535Q119 585 101 595T83 616ZM94 440Q102 442 104 442Q110 441 254 373T535 240T678 172Q679 172 680 171Q694 164 694 153T687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 93 -101L128 -84Q163 -68 230 -36T361 26L626 152L360 278Q91 406 90 407Q83 412 83 424Q84 434 94 440\",10927:\"84 346Q84 359 91 363T117 367Q120 367 126 367T137 366Q388 370 512 430T653 609Q657 636 676 636Q685 635 689 629T694 618V612Q689 566 672 528T626 463T569 417T500 383T435 362T373 346Q379 345 404 339T440 330T477 318T533 296Q592 266 630 223T681 145T694 78Q694 57 674 57Q662 57 657 67T652 92T640 135T606 191Q500 320 137 326H114Q104 326 98 327T88 332T84 346ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118\",10928:\"84 614Q84 636 102 636Q115 636 119 626T125 600T137 556T171 501Q277 372 640 366H661Q694 366 694 346T661 326H640Q578 325 526 321T415 307T309 280T222 237T156 172T124 83Q122 66 118 62T103 57Q100 57 98 57T95 58T93 59T90 62T85 67Q83 71 83 80Q88 126 105 164T151 229T208 275T277 309T342 330T404 346Q401 347 380 351T345 360T302 373T245 396Q125 455 92 565Q84 599 84 614ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118\",10933:\"653 734Q653 738 660 745T673 752T686 745T693 723Q672 555 466 485Q390 463 378 463Q373 463 373 461Q373 458 378 458Q390 458 466 436Q562 404 620 350Q682 283 693 198Q693 183 686 176Q681 170 674 170T660 176T653 187Q653 192 652 200T646 228T631 265T602 307T555 350Q435 431 151 441H95Q82 454 82 460T95 481H151Q165 482 197 483T238 485Q427 500 528 554T649 707Q653 729 653 734ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",10934:\"693 466T693 460T680 441H624Q608 439 577 438T538 436Q349 421 248 367T126 214Q122 192 122 187Q122 183 116 177T102 170Q95 170 89 176Q82 183 82 198Q93 283 155 350Q213 404 309 436Q385 458 398 458Q402 458 402 461Q402 463 398 463Q385 463 309 485Q103 555 82 723Q82 738 89 745T102 752T115 745T122 734Q122 721 126 701T155 640T220 572Q340 490 624 481H680Q693 466 693 460ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33\",10935:\"82 494T82 501T95 521H171Q405 527 511 569Q630 618 651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q684 668 648 623Q627 591 573 557T442 507L417 501Q428 496 442 494Q520 478 573 444T648 378Q684 333 693 267Q693 254 686 247Q673 234 659 245Q657 247 651 269Q630 383 511 432Q406 474 171 481H95Q82 494 82 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294\",10936:\"693 501Q693 493 679 481H604Q369 474 264 432Q143 382 124 269Q116 246 115 245Q101 234 88 247Q82 254 82 267Q89 329 126 378Q147 410 201 444T333 494L357 501Q354 502 340 505T318 510T295 516T269 525T243 535T215 548T188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q143 619 264 569Q371 527 604 521H679Q693 507 693 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294\",10937:\"82 494T82 501T95 521H171Q256 523 317 528T441 548T543 584T613 644T651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q686 686 664 647T615 586T548 545T482 518T417 501Q419 500 451 493T517 471T590 434T657 367T693 267Q693 241 673 241Q664 241 659 245Q656 249 650 273T635 323T593 380T511 432Q406 474 171 481H95Q82 494 82 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26\",10938:\"693 501Q693 493 679 481H604Q548 479 509 477T418 469T331 454T257 429T194 392T150 340T124 270Q117 247 115 245Q101 236 88 247Q82 254 82 267Q89 330 126 379Q147 411 202 444T333 494L357 501Q239 531 188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q133 678 166 640T241 579T349 544T470 527T604 521H679Q693 507 693 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26\",10949:\"84 463Q84 585 166 663T360 752Q361 752 370 752T395 752T430 752T475 753T524 753H679Q694 746 694 733Q694 724 681 714L522 713H470H441Q366 713 338 709T266 685Q244 674 224 659T179 617T139 550T124 463V458Q124 370 185 302Q244 238 328 220Q348 215 366 215T522 213H681Q694 203 694 193Q694 180 679 173H526Q510 173 480 173T434 172Q350 172 289 188T172 258Q84 340 84 463ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195\",10950:\"83 733Q83 746 98 753H251Q267 753 297 753T343 754Q427 754 488 738T605 668Q693 587 693 463Q693 378 650 312T545 213T415 174Q407 173 251 173H98Q83 180 83 193Q83 203 96 213H255H308H337Q412 213 439 217T512 241Q533 252 553 267T599 309T639 376T654 463Q654 554 592 624Q557 662 512 685Q468 704 439 708T335 713H306H255L96 714Q83 724 83 733ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195\",10955:\"693 221Q693 214 680 201H524Q398 201 367 202T309 212Q236 230 180 280T98 398Q84 438 84 492T98 585Q126 663 193 716T346 781Q347 781 373 781T440 782T520 783H680Q682 780 686 776T691 770T693 763T680 743H526Q364 743 353 741Q279 730 221 687T138 578Q124 540 124 492T138 405Q163 340 221 297T353 243Q364 241 526 241H680Q682 238 686 234T691 228T693 221ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41\",10956:\"82 759T82 763T83 769T89 776T95 783H251Q378 783 409 782T469 772Q540 753 596 703T678 585Q691 546 691 492T678 398Q649 320 581 267T426 203Q415 201 251 201H95Q82 214 82 221Q82 225 83 227T89 234T95 241H249Q411 241 422 243Q496 253 554 296T638 405Q651 444 651 492Q651 539 638 578Q613 643 555 686T422 741Q411 743 249 743H95Q82 759 82 763ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41\",12296:\"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232\",12297:\"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732\",57350:\"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417\",57351:\"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417\",57352:\"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261\",57353:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",57356:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",57357:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",57358:\"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461\",57359:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",57360:\"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",57361:\"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623\",57366:\"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710\",57367:\"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7\",57368:\"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473\",57369:\"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732\",57370:\"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122\",57371:\"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614\",119808:\"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390\",119809:\"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192\",119810:\"64 343Q64 502 174 599T468 697Q502 697 533 691T586 674T623 655T647 639T657 632L694 663Q703 670 711 677T723 687T730 692T735 695T740 696T746 697Q759 697 762 692T766 668V627V489V449Q766 428 762 424T742 419H732H720Q699 419 697 436Q690 498 657 545Q611 618 532 632Q522 634 496 634Q356 634 286 553Q232 488 232 343T286 133Q355 52 497 52Q597 52 650 112T704 237Q704 248 709 251T729 254H735Q750 254 755 253T763 248T766 234Q766 136 680 63T469 -11Q285 -11 175 86T64 343\",119811:\"39 624V686H270H310H408Q500 686 545 680T638 649Q768 584 805 438Q817 388 817 338Q817 171 702 75Q628 17 515 2Q504 1 270 0H39V62H147V624H39ZM655 337Q655 370 655 390T650 442T639 494T616 540T580 580T526 607T451 623Q443 624 368 624H298V62H377H387H407Q445 62 472 65T540 83T606 129Q629 156 640 195T653 262T655 337\",119812:\"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286\",119813:\"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H644V676Q647 670 659 552T675 428V424H613Q613 433 605 477Q599 511 589 535T562 574T530 599T488 612T441 617T387 618H368H304V371H333Q389 373 411 390T437 468V488H499V192H437V212Q436 244 430 263T408 292T378 305T333 309H304V62H439V0H425\",119814:\"465 -10Q281 -10 173 88T64 343Q64 413 85 471T143 568T217 631T298 670Q371 697 449 697Q452 697 459 697T470 696Q502 696 531 690T582 675T618 658T644 641T656 632L732 695Q734 697 745 697Q758 697 761 692T765 668V627V489V449Q765 428 761 424T741 419H731H724Q705 419 702 422T695 444Q683 520 631 577T495 635Q364 635 295 563Q261 528 247 477T232 343Q232 296 236 260T256 185T296 120T366 76T472 52Q481 51 498 51Q544 51 573 67T607 108Q608 111 608 164V214H464V276H479Q506 273 680 273Q816 273 834 276H845V214H765V113V51Q765 16 763 8T750 0Q742 2 709 16T658 40L648 46Q592 -10 465 -10\",119815:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400\",119816:\"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397\",119817:\"174 114Q174 96 169 82T159 63T144 47L155 45Q183 40 203 40Q271 40 290 104Q294 118 294 150T295 380V624H154V686H169Q196 683 365 683Q499 683 517 686H527V624H446V379Q446 183 446 153T441 108Q413 32 315 2Q266 -11 208 -11Q160 -11 118 -2T42 37T8 114V122Q8 150 30 174T91 198T152 174T174 122V114\",119818:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400\",119819:\"643 285Q641 280 629 148T612 4V0H39V62H147V624H39V686H51Q75 683 228 683Q415 685 425 686H439V624H304V62H352H378Q492 62 539 138Q551 156 558 178T569 214T576 255T581 289H643V285\",119820:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314\",119821:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314\",119822:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454\",119823:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475\",119824:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 255 768 184Q720 77 611 26L600 21Q635 -26 682 -26H696Q769 -26 769 0Q769 7 774 12T787 18Q805 18 805 -7V-13Q803 -64 785 -106T737 -171Q720 -183 697 -191Q687 -193 668 -193Q636 -193 613 -182T575 -144T552 -94T532 -27Q531 -23 530 -16T528 -6T526 -3L512 -5Q499 -7 477 -8T431 -10Q393 -10 382 -9Q238 8 151 97T64 339ZM326 80Q326 113 356 138T430 163Q492 163 542 100L553 86Q554 85 561 91T578 108Q637 179 637 330Q637 430 619 498T548 604Q500 641 425 641Q408 641 390 637T347 623T299 590T259 535Q226 469 226 338Q226 244 246 180T318 79L325 74Q326 74 326 80ZM506 58Q480 112 433 112Q412 112 395 104T378 77Q378 44 431 44Q480 44 506 58\",119825:\"394 0Q370 3 222 3Q75 3 51 0H39V62H147V624H39V686H234Q256 686 299 686T362 687Q479 687 554 669T681 593Q716 550 716 497Q716 390 568 338Q569 337 572 336T577 332Q605 317 623 300T650 258T662 218T668 172Q678 98 689 76Q707 40 748 40Q770 40 780 54T795 88T801 111Q805 117 827 117H831Q846 117 852 113T858 92Q857 78 852 63T834 30T797 1T739 -11Q630 -11 580 12T511 87Q506 104 506 168Q506 170 506 178T507 194Q507 289 438 313Q424 318 356 318H298V62H406V0H394ZM366 369Q459 370 490 381Q548 402 548 476V498V517Q548 578 513 600Q479 624 392 624H358H298V369H366\",119826:\"64 493Q64 582 120 636T264 696H272Q280 697 285 697Q380 697 454 645L480 669Q484 672 488 676T495 683T500 688T504 691T508 693T511 695T514 696T517 697T522 697Q536 697 539 691T542 652V577Q542 557 542 532T543 500Q543 472 540 465T524 458H511H505Q489 458 485 461T479 478Q472 529 449 564T393 614T336 634T287 639Q228 639 203 610T177 544Q177 517 195 493T247 457Q253 454 343 436T475 391Q574 326 574 207V200Q574 163 559 120Q517 12 389 -9Q380 -10 346 -10Q308 -10 275 -5T221 7T184 22T160 35T151 40L126 17Q122 14 118 10T111 3T106 -2T102 -5T98 -7T95 -9T92 -10T89 -11T84 -11Q70 -11 67 -4T64 35V108Q64 128 64 153T63 185Q63 203 63 211T69 223T77 227T94 228H100Q118 228 122 225T126 205Q130 125 193 88T345 51Q408 51 434 82T460 157Q460 196 439 221T388 257Q384 259 305 276T221 295Q155 313 110 366T64 493\",119827:\"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425\",119828:\"570 686Q588 683 703 683T836 686H845V624H737V420Q737 390 737 345T738 284Q738 205 729 164T689 83Q614 -11 465 -11Q321 -11 240 51T148 207Q147 214 147 421V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V405V370V268Q304 181 311 146T346 87Q387 52 466 52Q642 52 667 195Q668 204 669 415V624H561V686H570\",119829:\"592 686H604Q615 685 631 685T666 684T700 684T724 683Q829 683 835 686H843V624H744L611 315Q584 254 546 165Q492 40 482 19T461 -6L460 -7H409Q398 -4 391 9Q385 20 257 315L124 624H25V686H36Q57 683 190 683Q340 683 364 686H377V624H289L384 403L480 185L492 212Q504 240 529 298T575 405L670 624H582V686H592\",119830:\"915 686L1052 683Q1142 683 1157 686H1164V624H1073L957 320Q930 249 900 170T855 52T839 10Q834 0 826 -5Q821 -7 799 -7H792Q777 -7 772 -5T759 10Q759 11 748 39T716 122T676 228L594 442L512 228Q486 159 455 78Q433 19 428 9T416 -5Q411 -7 389 -7H379Q356 -7 349 10Q349 12 334 51T288 170T231 320L116 624H24V686H35Q44 683 183 683Q331 683 355 686H368V624H323Q278 624 278 623L437 207L499 369L561 531L526 624H434V686H445Q454 683 593 683Q741 683 765 686H778V624H733Q688 624 688 623L847 207Q848 207 927 415T1006 624H905V686H915\",119831:\"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327\",119832:\"605 0Q581 3 434 3Q286 3 262 0H250V62H358V275L126 624H19V686H30Q54 683 189 683Q361 685 370 686H383V624H308L319 608Q330 591 353 556T396 491L484 359L660 623Q660 624 623 624H585V686H595Q613 683 728 683Q832 683 841 686H849V624H742L509 274V62H618V0H605\",119833:\"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80\",119834:\"64 349Q64 399 107 426T255 453Q346 453 402 423T473 341Q478 327 478 310T479 196V77Q493 63 529 62Q549 62 553 57T558 31Q558 9 552 5T514 0H497H481Q375 0 367 56L356 46Q300 -6 210 -6Q130 -6 81 30T32 121Q32 188 111 226T332 272H350V292Q350 313 348 327T337 361T306 391T248 402T194 399H189Q204 376 204 354Q204 327 187 306T134 284Q97 284 81 305T64 349ZM164 121Q164 89 186 67T238 45Q274 45 307 63T346 108L350 117V226H347Q248 218 206 189T164 121\",119835:\"32 686L123 690Q214 694 215 694H221V409Q289 450 378 450Q479 450 539 387T600 221Q600 122 535 58T358 -6H355Q272 -6 203 53L160 1L129 0H98V301Q98 362 98 435T99 525Q99 591 97 604T83 620Q69 624 42 624H29V686H32ZM227 105L232 99Q237 93 242 87T258 73T280 59T306 49T339 45Q380 45 411 66T451 131Q457 160 457 230Q457 264 456 284T448 329T430 367T396 389T343 398Q282 398 235 355L227 348V105\",119836:\"447 131H458Q478 131 478 117Q478 112 471 95T439 51T377 9Q330 -6 286 -6Q196 -6 135 35Q39 96 39 222Q39 324 101 384Q169 453 286 453Q359 453 411 431T464 353Q464 319 445 302T395 284Q360 284 343 305T325 353Q325 380 338 396H333Q317 398 295 398H292Q280 398 271 397T245 390T218 373T197 338T183 283Q182 275 182 231Q182 199 184 180T193 132T220 85T270 57Q289 50 317 50H326Q385 50 414 115Q419 127 423 129T447 131\",119837:\"351 686L442 690Q533 694 534 694H540V389Q540 327 540 253T539 163Q539 97 541 83T555 66Q569 62 596 62H609V31Q609 0 608 0Q588 0 510 -3T412 -6Q411 -6 411 16V38L401 31Q337 -6 265 -6Q159 -6 99 58T38 224Q38 265 51 303T92 375T165 429T272 449Q359 449 417 412V507V555Q417 597 415 607T402 620Q388 624 361 624H348V686H351ZM411 350Q362 399 291 399Q278 399 256 392T218 371Q195 351 189 320T182 238V221Q182 179 183 159T191 115T212 74Q241 46 288 46Q358 46 404 100L411 109V350\",119838:\"32 225Q32 332 102 392T272 452H283Q382 452 436 401Q494 343 494 243Q494 226 486 222T440 217Q431 217 394 217T327 218H175V209Q175 177 179 154T196 107T236 69T306 50Q312 49 323 49Q376 49 410 85Q421 99 427 111T434 127T442 133T463 135H468Q494 135 494 117Q494 110 489 97T468 66T431 32T373 5T292 -6Q181 -6 107 55T32 225ZM383 276Q377 346 348 374T280 402Q253 402 230 390T195 357Q179 331 176 279V266H383V276\",119839:\"308 0Q290 3 172 3Q58 3 49 0H40V62H109V382H42V444H109V503L110 562L112 572Q127 625 178 658T316 699Q318 699 330 699T348 700Q381 698 404 687T436 658T449 629T452 606Q452 576 432 557T383 537Q355 537 335 555T314 605Q314 635 328 649H325Q311 649 293 644T253 618T227 560Q226 555 226 498V444H340V382H232V62H318V0H308\",119840:\"50 300Q50 368 105 409T255 450Q328 450 376 426L388 420Q435 455 489 455Q517 455 533 441T554 414T558 389Q558 367 544 353T508 339Q484 339 471 354T458 387Q458 397 462 400Q464 401 461 400Q459 400 454 399Q429 392 427 390Q454 353 459 328Q461 315 461 300Q461 240 419 202Q364 149 248 149Q185 149 136 172Q129 158 129 148Q129 105 170 93Q176 91 263 91Q273 91 298 91T334 91T366 89T400 85T432 77T466 64Q544 22 544 -69Q544 -114 506 -145Q438 -201 287 -201Q149 -201 90 -161T30 -70Q30 -58 33 -47T42 -27T54 -13T69 -1T82 6T94 12T101 15Q66 57 66 106Q66 151 90 187L97 197L89 204Q50 243 50 300ZM485 403H492Q491 404 488 404L485 403V403ZM255 200Q279 200 295 206T319 219T331 242T335 268T336 300Q336 337 333 352T317 380Q298 399 255 399Q228 399 211 392T187 371T178 345T176 312V300V289Q176 235 194 219Q215 200 255 200ZM287 -150Q357 -150 400 -128T443 -71Q443 -65 442 -61T436 -50T420 -37T389 -27T339 -21L308 -20Q276 -20 253 -20Q190 -20 180 -20T156 -26Q130 -38 130 -69Q130 -105 173 -127T287 -150\",119841:\"40 686L131 690Q222 694 223 694H229V533L230 372L238 381Q248 394 264 407T317 435T398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V332Q106 387 106 453T107 534Q107 593 105 605T91 620Q77 624 50 624H37V686H40\",119842:\"72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46\",119843:\"104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78\",119844:\"32 686L123 690Q214 694 215 694H221V255L377 382H346V444H355Q370 441 476 441Q544 441 556 444H562V382H476L347 277L515 62H587V0H579Q564 3 476 3Q370 3 352 0H343V62H358L373 63L260 206L237 189L216 172V62H285V0H277Q259 3 157 3Q46 3 37 0H29V62H98V332Q98 387 98 453T99 534Q99 593 97 605T83 620Q69 624 42 624H29V686H32\",119845:\"43 686L134 690Q225 694 226 694H232V62H301V0H292Q274 3 170 3Q67 3 49 0H40V62H109V332Q109 387 109 453T110 534Q110 593 108 605T94 620Q80 624 53 624H40V686H43\",119846:\"40 442Q217 450 218 450H224V365Q226 367 235 378T254 397T278 416T314 435T362 448Q376 450 400 450H406Q503 450 534 393Q545 376 545 370Q545 368 555 379Q611 450 716 450Q774 450 809 434Q850 414 861 379T873 276V213V198V62H942V0H933Q915 3 809 3Q702 3 684 0H675V62H744V194V275Q744 348 735 373T690 399Q645 399 607 370T557 290Q555 281 554 171V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40\",119847:\"40 442Q217 450 218 450H224V407L225 365Q233 378 245 391T289 422T362 448Q374 450 398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40\",119848:\"287 -5Q228 -5 182 10T109 48T63 102T39 161T32 219Q32 272 50 314T94 382T154 423T214 446T265 452H279Q319 452 326 451Q428 439 485 376T542 221Q542 156 514 108T442 33Q384 -5 287 -5ZM399 230V250Q399 280 398 298T391 338T372 372T338 392T282 401Q241 401 212 380Q190 363 183 334T175 230Q175 202 175 189T177 153T183 118T195 91T215 68T245 56T287 50Q348 50 374 84Q388 101 393 132T399 230\",119849:\"32 442L123 446Q214 450 215 450H221V409Q222 409 229 413T251 423T284 436T328 446T382 450Q480 450 540 388T600 223Q600 128 539 61T361 -6H354Q292 -6 236 28L227 34V-132H296V-194H287Q269 -191 163 -191Q56 -191 38 -194H29V-132H98V113V284Q98 330 97 348T93 370T83 376Q69 380 42 380H29V442H32ZM457 224Q457 303 427 349T350 395Q282 395 235 352L227 345V104L233 97Q274 45 337 45Q383 45 420 86T457 224\",119850:\"38 220Q38 273 54 314T95 380T152 421T211 443T264 449Q368 449 429 386L438 377L484 450H540V-132H609V-194H600Q582 -191 475 -191Q360 -191 351 -194H342V-132H411V42Q409 41 399 34T383 25T367 16T347 7T324 1T296 -4T264 -6Q162 -6 100 56T38 220ZM287 46Q368 46 417 127V301L412 312Q398 347 369 371T302 395Q282 395 263 388T225 362T194 308T182 221Q182 126 214 86T287 46\",119851:\"405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313\",119852:\"38 315Q38 339 45 360T70 404T127 440T223 453Q273 453 320 436L338 445L357 453H366Q380 453 383 447T386 403V387V355Q386 331 383 326T365 321H355H349Q333 321 329 324T324 341Q317 406 224 406H216Q123 406 123 353Q123 334 143 321T188 304T244 294T285 286Q305 281 325 273T373 237T412 172Q414 162 414 142Q414 -6 230 -6Q154 -6 117 22L68 -6H58Q44 -6 41 0T38 42V73Q38 85 38 101T37 122Q37 144 42 148T68 153H75Q87 153 91 151T97 147T103 132Q131 46 220 46H230Q257 46 265 47Q330 58 330 108Q330 127 316 142Q300 156 284 162Q271 168 212 178T122 202Q38 243 38 315\",119853:\"272 49Q320 49 320 136V145V177H382V143Q382 106 380 99Q374 62 349 36T285 -2L272 -5H247Q173 -5 134 27Q109 46 102 74T94 160Q94 171 94 199T95 245V382H21V433H25Q58 433 90 456Q121 479 140 523T162 621V635H224V444H363V382H224V239V207V149Q224 98 228 81T249 55Q261 49 272 49\",119854:\"40 442L134 446Q228 450 229 450H235V273V165Q235 90 238 74T254 52Q268 46 304 46H319Q352 46 380 67T419 121L420 123Q424 135 425 199Q425 201 425 207Q425 233 425 249V316Q425 354 423 363T410 376Q396 380 369 380H356V442L554 450V267Q554 84 556 79Q561 62 610 62H623V31Q623 0 622 0Q603 0 527 -3T432 -6Q431 -6 431 25V56L420 45Q373 6 332 -1Q313 -6 281 -6Q208 -6 165 14T109 87L107 98L106 230Q106 358 104 366Q96 380 50 380H37V442H40\",119855:\"401 444Q413 441 495 441Q568 441 574 444H580V382H510L409 156Q348 18 339 6Q331 -4 320 -4Q318 -4 313 -4T303 -3H288Q273 -3 264 12T221 102Q206 135 197 156L96 382H26V444H34Q49 441 145 441Q252 441 270 444H279V382H231L284 264Q335 149 338 149Q338 150 389 264T442 381Q442 382 418 382H394V444H401\",119856:\"624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624\",119857:\"227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227\",119858:\"84 -102Q84 -110 87 -119T102 -138T133 -149Q148 -148 162 -143T186 -131T206 -114T222 -95T234 -76T243 -59T249 -45T252 -37L269 0L96 382H26V444H34Q49 441 146 441Q252 441 270 444H279V382H255Q232 382 232 380L337 151L442 382H394V444H401Q413 441 495 441Q568 441 574 444H580V382H510L406 152Q298 -84 297 -87Q269 -139 225 -169T131 -200Q85 -200 54 -172T23 -100Q23 -64 44 -50T87 -35Q111 -35 130 -50T152 -92V-100H84V-102\",119859:\"48 262Q48 264 54 349T60 436V444H252Q289 444 336 444T394 445Q441 445 450 441T459 418Q459 406 458 404Q456 399 327 229T194 55H237Q260 56 268 56T297 58T325 65T348 77T370 98T384 128T395 170Q400 197 400 216Q400 217 431 217H462V211Q461 208 453 108T444 6V0H245Q46 0 43 2Q32 7 32 28V33Q32 41 40 52T84 112Q129 170 164 217L298 393H256Q189 392 165 380Q124 360 115 303Q110 280 110 256Q110 254 79 254H48V262\",119860:\"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260\",119861:\"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229\",119862:\"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252\",119863:\"287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469\",119864:\"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213\",119865:\"48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1\",119866:\"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252\",119867:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",119868:\"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1\",119869:\"447 625Q447 637 354 637H329Q323 642 323 645T325 664Q329 677 335 683H352Q393 681 498 681Q541 681 568 681T605 682T619 682Q633 682 633 672Q633 670 630 658Q626 642 623 640T604 637Q552 637 545 623Q541 610 483 376Q420 128 419 127Q397 64 333 21T195 -22Q137 -22 97 8T57 88Q57 130 80 152T132 174Q177 174 182 130Q182 98 164 80T123 56Q115 54 115 53T122 44Q148 15 197 15Q235 15 271 47T324 130Q328 142 387 380T447 625\",119870:\"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628\",119871:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",119872:\"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629\",119873:\"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637\",119874:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476\",119875:\"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554\",119876:\"399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18\",119877:\"230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554\",119878:\"308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24\",119879:\"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40\",119880:\"107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637\",119881:\"52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648\",119882:\"436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683\",119883:\"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0\",119884:\"66 637Q54 637 49 637T39 638T32 641T30 647T33 664T42 682Q44 683 56 683Q104 680 165 680Q288 680 306 683H316Q322 677 322 674T320 656Q316 643 310 637H298Q242 637 242 624Q242 619 292 477T343 333L346 336Q350 340 358 349T379 373T411 410T454 461Q546 568 561 587T577 618Q577 634 545 637Q528 637 528 647Q528 649 530 661Q533 676 535 679T549 683Q551 683 578 682T657 680Q684 680 713 681T746 682Q763 682 763 673Q763 669 760 657T755 643Q753 637 734 637Q662 632 617 587Q608 578 477 424L348 273L322 169Q295 62 295 57Q295 46 363 46Q379 46 384 45T390 35Q390 33 388 23Q384 6 382 4T366 1Q361 1 324 1T232 2Q170 2 138 2T102 1Q84 1 84 9Q84 14 87 24Q88 27 89 30T90 35T91 39T93 42T96 44T101 45T107 45T116 46T129 46Q168 47 180 50T198 63Q201 68 227 171L252 274L129 623Q128 624 127 625T125 627T122 629T118 631T113 633T105 634T96 635T83 636T66 637\",119885:\"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8\",119886:\"33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328\",119887:\"73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325\",119888:\"34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159\",119889:\"366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326\",119890:\"39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353\",119891:\"118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162\",119892:\"311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328\",119894:\"184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287\",119895:\"297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376\",119896:\"121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647\",119897:\"117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59\",119898:\"21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287\",119899:\"21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287\",119900:\"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120\",119901:\"23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102\",119902:\"33 157Q33 258 109 349T280 441Q340 441 372 389Q373 390 377 395T388 406T404 418Q438 442 450 442Q454 442 457 439T460 434Q460 425 391 149Q320 -135 320 -139Q320 -147 365 -148H390Q396 -156 396 -157T393 -175Q389 -188 383 -194H370Q339 -192 262 -192Q234 -192 211 -192T174 -192T157 -193Q143 -193 143 -185Q143 -182 145 -170Q149 -154 152 -151T172 -148Q220 -148 230 -141Q238 -136 258 -53T279 32Q279 33 272 29Q224 -10 172 -10Q117 -10 75 30T33 157ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326\",119903:\"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287\",119904:\"131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289\",119905:\"26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26\",119906:\"21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287\",119907:\"173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380\",119908:\"580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385\",119909:\"52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289\",119910:\"21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287\",119911:\"347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338\",119912:\"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372\",119913:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240\",119914:\"380 -17Q335 -17 293 -10T207 16T130 65T76 144T55 256Q55 306 70 361T122 476T211 582T345 663T525 702H545Q673 702 731 634L777 668Q783 672 789 677T800 685T808 691T814 695T818 698T822 700T825 702T828 703T830 703T833 703Q855 703 855 690Q855 686 823 558T789 426Q786 421 782 420T756 419Q734 420 729 421T724 432Q724 434 725 447T726 472Q726 552 678 604Q640 640 586 640H574Q533 640 494 632T409 604T324 541T260 437Q243 397 227 333T210 219Q210 152 237 117Q255 90 299 68T420 46H429Q506 46 580 100T678 234Q683 249 687 251T712 254H723Q743 254 743 240Q743 232 736 213T710 162T663 100T586 40T477 -5Q433 -17 380 -17\",119915:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 437 686Q659 686 668 685Q727 680 772 662T842 621T883 568T905 517T913 475Q914 466 914 434Q914 373 892 307T828 179T712 69T548 7Q517 2 494 2T279 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM768 475Q768 515 753 544T718 588T666 611T613 622T563 624H538H532H452L382 344Q311 64 311 63T363 62H405Q490 62 545 76T656 142Q696 185 724 265T760 399T768 475\",119916:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",119917:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H795Q801 677 804 673T808 666L809 664Q809 659 798 549T783 433Q777 424 755 424Q736 424 730 427T724 444Q724 448 725 468T727 507V524Q727 541 724 554T713 577T698 594T676 605T653 612T625 616T597 617T566 618T538 618H456L455 614Q455 611 424 491L394 371H429Q454 372 463 372T491 378T517 392T536 419T552 464Q556 481 561 484T586 488Q603 488 607 486Q616 482 616 473Q616 467 584 337T549 201Q542 192 521 192Q503 192 497 195T490 209Q490 212 492 224Q499 251 499 269Q499 288 489 296T465 306T417 308L379 309L348 188Q341 161 334 129T322 80L318 65L317 62H375H409Q430 62 438 59T447 45Q444 8 431 2L426 0L377 1Q347 2 231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",119918:\"379 -16Q233 -16 145 52T56 255Q56 310 73 368T127 483T216 586T347 663T518 702H540Q562 702 582 700T616 696T644 689T667 681T686 670T702 659T717 647T731 635L776 668Q782 672 788 677T799 685T807 691T813 695T817 698T821 700T824 702T827 703T829 703T832 703Q854 703 854 690Q854 686 822 558T788 426Q785 421 781 420T755 419Q734 420 729 422T723 432Q723 434 724 446T725 469Q725 531 702 571T642 628Q616 640 575 640Q468 640 390 593T272 464Q247 415 229 340T210 214Q210 166 228 132T277 79T343 54T419 46Q445 46 465 50T500 59T526 76T544 96T557 123T566 150T574 182T581 214H519Q511 214 498 214T479 213Q443 213 443 230Q443 250 452 268Q457 273 464 276L514 275Q546 274 657 274Q735 274 768 275T803 276Q826 276 826 258Q823 224 810 216Q806 214 771 214H736Q736 211 710 109T683 5Q678 0 671 0Q666 0 637 14T597 36Q593 38 590 40T585 44T582 44T576 40Q511 -16 379 -16\",119919:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",119920:\"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624\",119921:\"205 131Q205 105 192 84T165 54L152 45Q152 44 160 42T182 37T213 35H216Q255 35 289 65Q314 90 329 129Q331 136 392 378T453 623Q453 624 393 624H332Q318 631 318 640Q318 647 322 664T334 684Q338 686 359 686Q413 684 533 684Q566 684 605 685T652 686Q677 686 685 683T694 669Q694 664 691 652Q686 631 681 628T647 624H602L542 380Q531 336 518 285T500 212T487 161T475 122T463 97T448 74T429 55Q351 -17 213 -17Q142 -17 99 7T43 70Q42 75 42 93Q42 143 73 168T139 194Q168 194 186 177T205 131\",119922:\"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0\",119923:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 409 684Q454 684 492 684T552 685T579 686Q603 686 603 668Q599 632 587 626Q583 624 520 624H457L388 344Q317 64 317 63T353 62H390Q418 62 440 64T493 78T548 110T598 169T643 261Q651 282 655 285T680 289Q696 289 700 288T709 279Q711 274 711 269Q710 265 663 138T613 8Q611 4 602 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",119924:\"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",119925:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",119926:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489\",119927:\"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558\",119928:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 410 808 370T781 277T729 178T643 87T519 14L525 4Q540 -19 553 -25T592 -32Q632 -32 654 -24T680 -7T689 10T704 18Q713 18 717 12T722 0Q722 -8 711 -36T681 -101T624 -166T541 -194Q513 -194 494 -183T465 -157T450 -118T444 -79T443 -41V-7L433 -9Q391 -17 344 -17Q301 -17 263 -10T185 15T118 62T71 138T53 245ZM666 482Q666 529 652 563T614 615T565 640T512 648Q412 648 335 573Q268 506 235 389T201 202Q201 164 210 136T230 95T259 66L262 76Q269 109 302 135T382 162Q401 162 415 159T449 140T484 92L491 78L496 82Q502 86 505 88T515 97T528 107T541 120T555 137T570 156T585 179T599 205T612 235Q629 278 647 351T666 482ZM439 56Q439 58 439 62T435 75T426 92T410 106T383 112Q353 112 332 96T311 63Q311 38 355 38H366Q391 39 415 45T439 56\",119929:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 422 686H446H525Q634 686 698 674T806 620Q843 583 843 535Q843 505 833 478T805 432T768 396T728 370T690 352T662 342L651 338L654 336Q658 334 667 327T688 310Q719 278 719 237Q719 222 710 165T701 94Q701 35 748 35Q775 35 793 57T819 101Q822 112 826 114T843 117H849Q881 117 881 99Q881 78 852 39T781 -11Q765 -17 728 -17Q537 -13 537 94Q537 110 552 169T567 243Q567 292 529 309Q517 316 508 316T441 318H375L374 314Q374 312 343 189T311 64Q311 62 355 62H382Q414 62 414 44Q410 6 397 2L393 0L351 1Q325 2 221 2Q147 2 108 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM687 555Q687 617 589 623Q581 624 513 624H451L420 498Q413 468 405 436T392 388L388 371Q388 369 458 369Q464 369 485 369T515 369T541 372T570 377T596 386T624 400Q649 417 664 457T683 522T687 555\",119930:\"354 45Q429 45 467 91T506 184Q506 225 477 250Q461 262 384 279T294 300Q238 318 210 362T182 452Q182 493 202 540T257 623Q338 702 449 702Q491 702 501 701Q571 690 610 654Q614 649 617 650Q618 650 650 675T683 702Q685 703 692 703Q714 703 714 690Q714 686 687 578T658 466Q653 458 629 458Q606 458 602 463Q600 465 599 466Q599 467 599 469T598 473Q598 475 599 487T600 511Q600 584 557 614T454 645Q386 645 347 606T308 520Q308 506 311 496T323 477T338 464T360 454T384 446T413 439T441 433Q523 416 549 401Q581 384 602 352Q631 309 631 254Q631 214 615 170T567 83T478 12T347 -16Q322 -16 300 -14T261 -8T230 0T205 10T187 20T172 30L162 37L130 11Q124 7 119 3T110 -4T104 -9T100 -13T96 -15T93 -16T91 -17T88 -17H82Q76 -17 73 -16T69 -14T66 -10T63 -5L90 107Q97 133 106 170Q116 211 120 219T136 228H148Q167 228 173 227T179 218Q179 216 176 200T173 168Q173 102 227 74T354 45\",119931:\"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498\",119932:\"856 686Q877 686 877 668Q877 663 873 649T867 631Q861 624 828 624Q762 622 757 617Q757 613 705 409T651 200Q620 112 540 48T328 -16Q251 -16 196 2T113 51T75 112T63 176Q63 202 70 232T117 422Q129 469 141 520T160 598L167 623Q167 624 123 624H96Q79 624 73 626T64 639Q68 678 81 684Q85 686 104 686Q155 684 268 684Q340 684 377 685T418 686Q441 686 441 668Q437 632 425 626Q421 624 371 624H322L270 415Q224 232 217 198T209 141Q209 45 336 45Q372 45 406 52T475 77T540 128T585 211L590 229Q594 247 601 274T617 336T636 409T654 482T670 547T681 595T686 618Q686 620 685 620H683Q681 621 678 621T671 622Q660 622 630 624Q616 624 610 624T598 626T589 630T587 640Q587 647 590 659Q594 677 598 681T613 686Q618 686 653 685T740 684Q775 684 801 684T840 685T856 686\",119933:\"401 686Q415 680 415 668Q415 651 404 629Q398 624 356 624Q318 624 318 623Q318 620 337 508T377 284L397 174L472 285Q548 396 623 507T699 620Q698 621 652 624Q634 624 627 627T619 641Q619 648 622 658Q627 677 631 681T650 686Q654 686 686 685T766 684Q794 684 823 684T858 685Q874 685 878 683T886 671Q886 667 882 651Q877 632 873 628T850 624Q800 624 779 617Q774 617 770 613Q767 610 560 304T350 -5Q346 -9 332 -16H306H291Q270 -16 267 -2Q267 -1 260 37T238 161T210 313L156 624H116H94Q62 624 62 642Q66 678 78 684Q82 686 99 686Q144 684 246 684Q330 684 368 685L401 686\",119934:\"111 624Q109 624 102 624T91 623Q61 623 61 640Q61 660 70 678Q78 686 98 686Q140 684 239 684Q277 684 309 684T360 685T383 686H385Q407 686 407 668Q404 634 391 626Q387 624 348 624Q307 624 307 622Q307 618 332 409Q359 198 359 195L570 532L564 576L558 622V624H522H504Q472 624 472 641Q475 678 488 684L493 686L529 685Q551 684 645 684Q716 684 753 685T795 686Q818 686 818 669Q815 632 802 626Q798 624 759 624Q718 624 718 622Q718 615 743 410Q770 199 770 196Q770 195 806 253T903 406Q1035 618 1035 619Q1025 624 968 624Q943 624 943 641Q943 648 946 659Q950 675 952 679T963 686L998 685Q1020 684 1093 684Q1113 684 1139 685T1173 686Q1207 686 1207 669Q1207 664 1204 652Q1199 631 1194 628T1164 624Q1113 622 1101 615Q1098 612 905 305Q715 -1 709 -7Q699 -17 673 -17Q645 -17 639 -8L581 441Q581 444 442 221Q331 44 314 18T288 -14Q279 -17 263 -17H254Q229 -17 227 -5Q225 2 186 311L147 620V624H111\",119935:\"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686\",119936:\"97 624H73Q40 624 40 640Q40 660 49 678Q57 686 77 686Q122 684 228 684Q269 684 304 684T360 685T385 686Q406 686 406 668Q406 662 403 653Q398 631 393 628T361 624H353Q321 624 321 623T376 491T432 360L448 377Q465 394 493 424T553 490L673 620Q662 624 630 624Q606 624 606 640Q608 678 623 684Q627 686 634 686Q638 686 671 685T755 684Q777 684 805 685T841 686Q861 686 868 683T876 669Q876 664 873 652Q868 631 863 628T829 624Q764 622 747 611Q727 590 590 441L437 275L411 170Q385 65 384 64Q384 62 429 62H453Q473 62 478 60T487 48Q488 44 484 29Q479 6 473 3Q468 0 454 0Q450 0 436 0T386 1T294 2Q220 2 181 1T138 0Q121 0 116 15Q120 54 133 60Q137 62 187 62H236L289 275L142 624H97\",119937:\"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430\",119938:\"222 -8Q140 -8 89 34T38 158Q38 191 48 227Q72 329 151 390T327 452Q361 452 385 443T421 425T433 416H434L441 421Q448 426 460 430T486 435Q509 435 523 422T538 386Q538 380 522 315T488 179T467 93Q466 87 466 72Q466 42 483 42Q505 42 521 75Q531 94 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351\",119939:\"220 -8Q142 -8 94 35T45 155V167Q45 187 52 218T104 426L153 622H149Q148 622 144 622T134 623T122 624T111 624T101 624T96 625Q84 628 84 642Q84 647 88 661T94 679Q98 684 109 685T185 690Q258 694 272 694Q289 694 293 679Q293 676 263 553L232 429L244 434Q256 440 281 446T331 452Q417 452 465 407T513 285Q513 235 494 184T439 90T346 20T220 -8ZM385 337Q385 400 318 400Q269 400 226 360Q214 349 211 341T191 268Q162 149 162 113Q162 44 226 44Q269 44 299 76T339 135T362 215Q364 222 365 226Q385 303 385 337\",119940:\"362 325Q362 344 371 361T390 386L399 394Q390 401 355 401Q276 401 231 338Q207 301 189 230T170 122Q170 43 264 43Q392 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T259 -8Q194 -8 148 9T80 54T49 109T40 167Q40 280 129 365T352 451Q390 451 396 450Q448 442 473 416T499 358T477 302T421 274H417Q393 274 378 288T362 325\",119941:\"222 -8Q140 -8 89 34T38 158Q38 220 68 285T151 391Q230 452 329 452Q382 452 416 428L422 424Q423 424 447 523L472 622H468Q467 622 463 622T453 623T441 624T430 624T420 624T415 625Q403 628 403 642Q403 647 407 661T413 679Q417 684 428 685T504 690Q577 694 591 694Q608 694 612 679L467 91Q466 87 466 72Q466 43 483 43Q518 43 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351\",119942:\"260 -8Q196 -8 151 9T83 54T52 111T42 169Q42 188 44 210Q50 240 58 266Q127 434 335 451L338 452Q342 452 345 452Q347 452 353 452T363 451Q426 451 464 424T502 352Q502 289 442 250Q381 211 222 211H184Q184 210 181 196T175 162T171 126Q171 43 264 43Q391 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T260 -8ZM237 262Q427 266 427 349Q427 368 409 384T354 401Q316 401 287 388T242 354T216 314T202 278L197 263Q197 262 237 262\",119943:\"584 444Q597 439 597 426Q597 409 586 387Q580 382 505 382H434V380Q432 378 421 314T395 162T368 30Q324 -164 203 -199Q194 -201 175 -201Q123 -201 94 -177T64 -117T88 -58T145 -33Q169 -33 184 -47T200 -84Q200 -122 166 -150L174 -151H185Q202 -148 217 -112Q222 -94 240 9Q246 40 262 132T293 303T307 382H247H210Q190 382 182 385T173 400Q177 436 189 442Q193 444 256 444H318L319 446Q337 565 355 602Q373 640 404 664T458 694T503 701Q569 701 596 676T624 617Q624 581 599 557T544 533Q520 533 504 547T488 585Q488 596 491 606T499 624T508 637T516 646L520 650Q515 650 509 651Q459 651 459 561V554L458 518L452 484Q446 448 445 447V444H584\",119944:\"227 0Q142 0 93 43T43 166Q43 207 58 252T104 341T188 414T310 451L313 452Q316 452 319 452Q321 452 326 452T335 451Q367 451 390 443T425 425L436 416L443 421Q450 426 462 430T488 435Q511 435 525 422T540 386Q540 378 483 151T424 -82Q401 -139 335 -170T167 -202Q72 -202 36 -183T0 -125Q0 -90 24 -67T81 -43Q103 -43 119 -56T136 -99Q133 -124 114 -149L123 -150H183Q222 -150 254 -127T299 -74Q300 -71 306 -47T318 -1T324 23Q323 23 310 18T274 6T227 0ZM407 353Q406 354 404 358T400 365T395 371T388 379T381 385T371 391T360 396T346 400T329 401Q300 401 277 389T240 355T219 317T205 280Q171 148 171 109Q171 77 190 64T235 51T296 67Q322 82 337 98L345 106L407 353\",119945:\"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 672 294 540Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56\",119946:\"205 615Q205 646 229 670T283 694Q310 694 324 679T339 641Q339 610 315 586T258 562Q235 562 220 577T205 615ZM24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",119947:\"321 616Q321 648 346 671T400 694Q425 694 440 680T456 640Q456 609 431 586T376 562Q353 562 337 577T321 616ZM297 360T297 373T294 392T288 400T278 401H276Q241 399 210 372T158 303Q151 287 148 285T129 282H123H116Q102 282 97 284T92 298Q96 331 153 391T279 451Q357 451 388 422T420 354V339L371 142Q363 111 353 71T339 13T329 -30T318 -64T308 -88T296 -109T283 -125T264 -142Q190 -202 88 -202Q44 -202 16 -181T-12 -125Q-12 -93 11 -68T68 -43Q92 -43 108 -58T124 -93Q124 -121 106 -144Q101 -150 103 -150Q120 -150 147 -128T191 -64Q194 -57 242 136T294 345Q297 360 297 373\",119948:\"99 -8Q71 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 674 280 482Q231 290 231 287Q231 285 234 286Q259 302 294 334T356 390T420 433T493 452Q528 452 546 427T564 364Q564 308 538 282T480 256Q456 256 441 269T425 308Q425 339 444 359T483 384L502 389Q502 395 496 398Q493 400 483 400Q465 400 449 395T409 374T373 347T323 305T268 257Q274 256 282 256Q312 251 329 247T371 232T411 202Q431 181 431 146Q431 132 427 110T422 73Q422 44 440 44H442Q462 44 478 64T502 102T514 141Q518 157 522 159T547 162H558Q578 162 578 148Q578 118 537 56T440 -7H432Q374 -7 337 21T299 94Q299 103 301 116T304 139Q304 164 281 181T235 202L212 206H211Q176 47 160 24Q137 -8 99 -8\",119949:\"157 -8Q138 -8 118 -4T77 11T41 42T27 91V106L156 622H152Q151 622 147 622T137 623T125 624T114 624T104 624T99 625Q87 628 87 642Q87 647 91 661T97 679Q101 684 112 685T188 690Q261 694 275 694Q292 694 296 679L151 91Q150 85 150 71Q150 42 167 42Q186 42 205 75Q216 96 225 134Q230 155 234 158T255 162H260H271Q291 162 291 148Q290 145 289 140T283 118T271 87T254 54T229 23T197 1T157 -8\",119950:\"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L295 392Q305 401 317 410T349 429T389 445Q411 451 446 451Q560 451 592 383Q593 380 594 379L595 375L604 384Q675 452 762 452Q893 452 916 367Q918 356 918 334Q918 285 881 183T841 66Q838 43 849 43Q876 43 901 69T940 138Q945 156 949 159T969 162H975H986Q1006 162 1006 148Q1006 138 996 115T966 63T914 13T841 -8Q794 -8 758 16T721 82Q721 96 758 199T796 351Q796 401 753 401Q702 401 662 369T599 298Q597 294 567 172T533 40Q525 22 506 7T462 -8Q435 -8 422 8T409 39Q409 48 425 114T458 248T476 320Q478 330 478 348T474 377T462 393T449 399T433 400H428Q380 400 336 363Q301 332 281 298Q278 293 247 170T214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296\",119951:\"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L293 391Q363 452 454 452Q575 446 597 367Q599 356 599 334Q599 285 562 183T522 66Q519 43 530 43Q557 43 582 69T621 138Q626 156 630 159T650 162H656H667Q687 162 687 148Q687 138 677 115T647 63T595 13T522 -8Q475 -8 439 16T402 82Q402 96 439 199T477 351Q477 401 434 401Q421 401 409 398Q341 388 285 305L278 295L247 170Q216 46 214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296\",119952:\"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400\",119953:\"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q235 452 273 404Q336 452 409 452Q434 452 458 448T507 432T550 402T581 354T593 285Q593 221 564 159T480 53Q401 -8 302 -8Q290 -8 279 -7T259 -3T242 3T228 9T218 14T212 18L209 20Q208 19 190 -55T171 -131T198 -132H213Q240 -132 240 -150Q237 -187 223 -192Q219 -194 212 -194Q208 -194 176 -193T95 -192Q48 -192 24 -193T-3 -194Q-11 -194 -16 -190T-22 -182T-23 -176Q-20 -142 -7 -134Q-3 -132 20 -132H44L164 354Q165 357 165 372Q165 401 148 401Q113 401 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296ZM465 339Q465 373 447 387T403 401Q375 401 347 387T303 360T288 341Q288 338 257 216L227 93Q248 43 306 43Q332 43 361 59T410 115Q425 147 445 224Q465 309 465 339\",119954:\"38 159Q38 209 58 260T113 355T205 425T327 452Q338 452 348 451T366 449T382 444T394 440T405 434T414 429T422 423T429 418Q440 429 481 440T533 452Q540 452 545 447T550 437Q550 432 481 152Q410 -130 410 -131T437 -132H452Q479 -132 479 -150Q476 -187 462 -192Q458 -194 451 -194Q447 -194 414 -193T330 -192Q277 -192 249 -193T217 -194Q202 -194 197 -179Q197 -175 201 -159Q206 -139 211 -136T243 -132H283L319 15L307 10Q295 4 270 -2T220 -8Q134 -8 86 37T38 159ZM402 353Q402 358 395 368T369 390T324 401Q301 401 282 394T249 369T226 338T208 297T196 258T186 218Q166 141 166 107Q166 44 229 44Q265 44 294 61T337 95Q341 100 371 222T402 353\",119955:\"24 296Q24 298 28 313T42 352T67 398T104 436T154 452Q198 452 230 437T273 404L282 411Q334 452 393 452Q441 452 470 423T500 350Q500 301 473 279T418 256Q395 256 379 270T363 308Q363 366 424 386Q424 388 420 391T405 398T385 401Q363 401 343 390Q321 380 289 341L252 192Q214 42 212 39Q190 -8 142 -8Q117 -8 103 7T89 39Q89 52 127 202T165 369Q165 402 148 402Q139 402 128 393T110 369Q100 348 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296\",119956:\"140 290Q140 311 148 336T176 388T235 433T326 451H336Q355 451 373 449T418 439T460 412T476 363Q476 333 456 311T406 289Q384 289 371 302T357 335Q357 351 364 364T379 384L386 391Q386 392 381 394T362 398T330 400Q299 400 278 393T247 373T235 352T232 335Q232 322 242 312Q258 299 315 290T403 260Q457 224 457 167Q457 152 453 134T435 90T397 43T330 7T229 -8Q133 -8 95 22T57 91Q57 127 81 152T139 177Q161 177 177 164T194 121Q189 80 153 56Q179 43 236 43Q275 43 303 52T343 75T361 101T366 124Q366 148 338 161T272 180T232 186Q187 198 164 227T140 290\",119957:\"82 382H55Q21 382 21 399Q21 422 33 439Q39 444 93 444H144L162 517Q163 522 167 541T174 567T181 589T192 611T206 627T226 639T253 643Q276 643 291 630T306 594Q306 586 288 514Q284 499 280 481T273 454L271 445Q271 444 317 444Q322 444 331 444T345 445Q377 445 377 428Q377 408 368 390Q360 382 341 382H306H255Q182 86 182 75Q182 43 201 43H204Q242 46 279 81Q298 101 309 119T323 145T330 157T350 162H356H363Q377 162 382 160T387 146Q385 136 372 114T337 64T275 14T192 -7Q131 -7 95 19T59 90V105L128 381Q128 382 82 382\",119958:\"189 389Q189 397 187 399T176 401Q150 399 126 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 307 35 331T65 383T117 431T187 452Q237 452 272 427T308 362Q308 347 273 254T238 111Q238 43 291 43Q319 43 344 58T380 86T391 103T426 247T464 396Q472 414 491 429T535 444T574 429T588 397Q588 390 570 315T534 168L516 97Q514 89 514 72Q514 42 531 42Q544 42 556 56Q574 76 589 134Q594 155 598 158T619 162H624H635Q655 162 655 148Q654 142 652 132T638 94T614 47T575 9T520 -8Q509 -8 498 -7T478 -3T461 2T446 8T434 16T424 23T416 29T410 35T406 39L405 41L397 34Q347 -7 288 -7H281Q148 -7 122 78Q116 95 116 125V136Q116 174 152 273T189 389\",119959:\"380 367Q380 397 406 425T465 453Q493 453 516 430T540 357Q540 314 524 250T467 115T373 13Q338 -8 292 -8Q218 -8 167 23T116 129Q116 178 152 275T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T189 452Q231 452 269 429T308 362Q308 346 273 255T238 114Q238 43 306 43Q336 43 363 65T407 118T437 182T456 239T462 268Q462 290 417 315Q380 335 380 367\",119960:\"636 367Q636 400 664 426T719 453Q748 453 772 431T796 357Q796 321 782 256T727 112T633 6Q604 -8 567 -8Q466 -8 415 43Q414 42 410 38T403 31T396 25T388 18T378 11T367 5T355 0T340 -4T324 -7T306 -8Q249 -8 209 5T151 40T125 84T117 129Q117 176 153 274T190 388Q190 408 158 396Q112 376 90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 305 34 328T63 380T114 430T187 452Q240 452 274 427T309 362Q309 346 275 255T240 117Q240 43 317 43Q325 43 333 45T347 50T359 57T369 66T377 75T383 83T388 90L390 95Q390 99 389 110T387 129Q387 139 391 167Q393 177 419 282T448 396Q456 414 475 429T519 444Q546 444 559 428T572 397Q572 384 542 265T511 114Q511 43 579 43Q608 43 633 66T673 122T699 188T714 244L718 267Q718 291 673 315Q636 335 636 367\",119961:\"74 282H63Q43 282 43 296Q43 298 45 307T56 332T76 365T110 401T159 433Q200 451 233 451H236Q273 451 282 450Q358 437 382 400L392 410Q434 452 483 452Q538 452 568 421T599 346Q599 303 573 280T517 256Q494 256 478 270T462 308Q462 343 488 367Q501 377 520 385Q520 386 516 389T502 396T480 400T462 398Q429 383 415 341Q354 116 354 80T405 44Q449 44 485 74T535 142Q539 156 542 159T562 162H568H579Q599 162 599 148Q599 135 586 111T550 60T485 12T397 -8Q313 -8 266 35L258 44Q215 -7 161 -7H156Q99 -7 71 25T43 95Q43 143 70 165T125 188Q148 188 164 174T180 136Q180 101 154 77Q141 67 122 59Q124 54 136 49T161 43Q183 43 200 61T226 103Q287 328 287 364T236 400Q200 400 164 377T107 302Q103 288 100 285T80 282H74\",119962:\"206 -150Q240 -150 268 -134T314 -95T344 -48T362 -7T367 14Q339 -7 280 -7Q230 -7 195 5T144 39T122 79T115 122Q115 175 152 274T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T188 452Q239 452 273 427T308 361Q308 347 273 253T237 109Q237 43 291 43T388 98Q388 99 425 246T463 396Q471 414 490 429T534 444T573 430T587 399Q587 386 537 186T483 -25Q461 -84 410 -126T296 -188Q248 -202 204 -202Q127 -202 96 -175T64 -114Q64 -82 86 -57T144 -31Q169 -31 184 -45T199 -83Q199 -89 198 -94T196 -104T193 -113T189 -120T184 -128T179 -134T173 -141T168 -147Q189 -150 206 -150\",119963:\"66 -8H60Q34 -8 34 5Q34 9 42 22T70 59T115 110Q162 156 255 229T381 332L389 339H381Q348 332 298 329T212 325T172 321Q168 318 151 318H146Q116 318 116 332Q116 334 118 342Q128 374 154 402Q205 452 265 452Q304 452 352 422T426 392Q441 392 462 421T485 451T508 452H518Q539 452 539 438Q539 431 516 401T458 334Q412 289 312 210Q229 146 191 111L183 103H195Q203 103 213 104T240 107T268 110Q301 114 337 116T391 119T428 123T455 134T469 157Q473 166 495 166Q521 166 525 161Q532 156 528 141Q510 81 456 37T337 -7Q297 -7 251 22T177 52Q154 52 134 38T100 8L88 -7Q86 -8 66 -8\",119964:\"76 60Q83 29 135 29Q190 29 264 81Q280 93 280 95T277 99T265 106T248 118Q189 166 189 237Q189 307 245 388Q267 421 299 436Q336 455 386 455Q488 455 550 403L559 395L571 405Q727 544 944 679L957 687L966 701Q968 704 970 707T973 712T975 714T978 716T982 717T989 717H995Q1004 717 1007 717T1013 714T1016 708Q1016 705 829 403L636 92L630 83Q659 93 685 110T728 143L745 158Q758 158 752 138L748 127L740 119Q676 58 605 42L593 22Q590 17 587 12T583 6T579 2T573 0T564 0H530H484Q480 3 480 8Q480 15 489 26T498 39T497 40Q477 40 423 49T327 74L316 78L302 68Q200 -8 121 -8Q85 -8 60 7T35 53T60 113T123 144Q144 144 153 132T162 106Q162 89 143 75T99 61Q90 61 76 65V60ZM904 614L905 615Q901 615 840 573T700 469T581 369L587 359Q600 340 608 315T618 273T622 238T624 216L764 414Q904 612 904 614ZM525 363Q493 405 379 418H375Q342 418 309 378Q251 300 251 234Q251 174 306 137Q318 128 322 131Q323 132 329 139Q351 161 362 180Q430 273 509 348L525 363ZM579 205Q579 245 571 278T556 323T546 337L521 311Q461 248 422 196T362 121L353 111Q427 85 499 79Q517 77 520 77L525 76L549 111Q551 114 556 121T563 131T568 138T573 147T575 157T577 169T578 185T579 205\",119966:\"367 89Q367 84 353 77T334 70Q325 70 312 83T298 120Q298 169 364 233T496 298Q538 298 563 275T588 220V213Q588 132 501 53T306 -26Q251 -26 211 6T170 114Q171 148 181 184T205 248T232 298T255 334T265 349T246 350Q127 350 77 390T26 480Q26 533 71 581T178 656T295 683Q312 683 312 676Q312 674 311 672L302 660Q294 648 292 647L286 646Q280 646 276 646Q197 641 145 583T93 476Q93 387 265 387Q271 387 277 387T287 388T292 388T313 414T373 483T451 562Q618 712 732 727Q733 727 740 727T753 728Q790 727 804 708T819 665Q819 643 810 617T773 553T699 481T572 414T385 361Q381 361 367 341Q247 172 247 86Q247 11 325 11Q404 11 465 95Q518 165 528 208Q529 212 529 220Q529 237 518 249T480 261Q431 261 387 209T343 126Q343 111 355 101T367 89ZM777 658Q777 691 738 691Q704 691 658 662T570 590T491 504T432 432T410 400H411Q416 400 440 405T505 423T589 455T675 506T743 576Q777 627 777 658\",119967:\"251 272Q199 272 168 298T136 374Q136 432 175 496T267 603Q321 645 395 676T552 708Q610 708 655 694T724 659T763 618T784 584L790 569Q792 569 800 572T819 576T840 578Q855 578 855 571Q855 566 846 554T829 541Q824 541 817 539T804 533T799 529Q802 517 802 483Q802 376 742 256T585 53T392 -31Q353 -31 300 -7L289 -2L277 -6Q242 -17 192 -17Q141 -17 113 -13T77 -3T68 14Q68 20 73 28T93 45T131 58Q152 62 197 62Q241 62 272 48L282 44Q308 65 334 93Q380 145 467 266T622 454Q644 476 664 493T694 517T720 534T740 547Q699 671 540 671Q461 671 385 625T276 534Q265 520 251 499T219 438T202 368Q202 309 267 309Q325 309 396 383T491 545Q492 548 493 552Q494 558 496 559T511 564Q513 565 514 565Q523 568 527 568Q534 568 534 560Q534 554 529 537Q507 442 420 357T251 272ZM332 20Q332 19 341 15T368 6T400 2Q425 2 457 13T531 49T614 125T690 248Q750 376 750 476V490L738 479Q698 436 646 366T554 239T455 121T332 20ZM226 20Q226 25 186 25Q181 25 174 24H166Q161 24 158 23H152Q170 21 197 21Q205 21 213 21T223 20H226\",119970:\"206 318L249 320Q249 327 259 352T282 399Q312 447 366 510T465 610Q588 717 661 717Q695 717 716 701T738 653T704 577Q663 522 610 474T512 397T424 346T359 315T333 306Q331 304 327 290T323 267Q323 229 368 229Q402 229 439 254T505 312T571 382T638 435Q642 437 644 437Q658 437 658 409Q655 403 647 399T624 379T595 326Q583 296 564 267T523 179Q504 126 483 91T423 27Q335 -37 231 -37Q191 -37 157 -30T95 -2T67 53Q67 89 94 123T159 158Q180 158 190 146T200 119Q200 102 178 89T136 75Q128 75 120 78T110 81Q105 81 105 62Q105 38 129 24T180 5T238 1H244Q282 1 319 32Q349 55 371 85T436 190L465 239Q413 192 354 192Q300 192 274 217T245 276Q245 284 242 284Q220 280 187 280Q106 280 59 315T12 409Q12 457 43 508T118 597T210 659T295 683Q308 683 308 675Q308 670 299 658T282 646Q266 646 240 633Q182 606 118 511Q76 448 76 400Q76 368 105 343T206 318ZM677 660Q677 680 646 680Q616 680 565 629Q537 601 514 571Q493 544 455 492T389 398T360 355Q366 357 386 367Q463 406 534 473T641 591T677 660\",119973:\"829 148Q845 148 845 143T841 130T823 109T788 83T730 54T644 22Q637 20 634 19T627 16T622 13T618 10T612 3T604 -6Q510 -112 396 -203T201 -312Q190 -314 171 -314H166Q156 -314 147 -312T123 -304T101 -283T92 -245Q92 -203 117 -160T175 -93Q214 -65 280 -41T390 -6T509 22L532 27L547 47Q673 219 673 225L665 228Q657 231 648 235T627 249T606 270T591 300T584 341Q584 389 614 447T686 544Q735 588 799 615T959 667T1108 713Q1118 717 1119 717Q1125 717 1129 705T1133 689Q1133 686 1115 673Q1051 627 1001 579T918 481T867 403T828 328T805 277Q802 271 801 267T798 261T798 259Q849 270 900 317Q956 371 956 421Q956 438 953 457T950 480Q950 481 950 482L951 484Q953 487 966 492T985 498Q989 498 994 473Q1000 441 1000 423Q1000 362 934 302T790 223L775 220L767 207Q757 191 731 158T685 98T662 63Q662 61 690 70T755 99T811 142L816 148H829ZM646 332Q646 308 659 291T685 268L698 263L735 320Q828 465 865 511Q923 582 1003 643L1005 645Q1004 645 924 620Q775 572 716 492Q646 401 646 332ZM184 -278Q233 -278 311 -212T444 -80L498 -15H496Q468 -20 424 -30T293 -70T174 -133Q167 -140 158 -153T138 -190T127 -232Q127 -278 184 -278\",119974:\"521 506Q521 493 549 493Q608 493 660 527Q667 531 690 555L736 604Q750 619 777 646T825 694T848 716T852 717Q857 717 860 711T865 697L866 690Q866 687 812 615Q654 404 654 401Q655 401 656 401T659 402T665 403T680 404Q718 404 734 374Q735 370 743 376Q745 377 752 382Q806 416 852 466T933 563T982 623Q1028 666 1075 686T1155 706Q1165 706 1173 705T1186 703T1194 699T1199 695T1201 692T1202 688V687L1204 677Q1204 667 1191 670Q1189 670 1183 670T1174 671Q1137 671 1086 643T1001 564Q970 517 899 449T749 339L739 333L736 322Q730 295 703 253T652 165T628 77Q628 21 681 21Q692 21 698 23Q751 46 817 134L827 148H844Q861 148 864 146Q869 140 859 127Q818 75 761 29T665 -17Q649 -17 633 -12T598 4T569 40T558 100Q558 128 563 152T585 205T609 245T643 294Q647 300 645 300Q633 297 615 297Q607 297 600 298T589 300T584 301Q581 301 569 284T536 236T488 171T418 97T331 28Q233 -37 155 -37Q104 -37 68 -17T29 44Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q68 82 68 59Q68 37 85 23T123 5T167 0Q203 0 238 21T311 85T382 174T468 288T563 410Q576 426 588 440T607 462T615 472L605 468Q568 456 533 456H527Q490 456 463 483Q451 496 451 508T468 545T486 581Q486 593 465 593Q448 593 425 568T384 518T364 493Q364 492 347 492Q326 492 326 499T351 537T414 599T477 630Q509 630 528 615T547 576Q547 556 534 533T521 506ZM675 357Q675 368 665 368Q656 368 644 363Q631 355 616 333H628Q640 334 672 341Q675 354 675 357\",119977:\"764 513Q764 482 772 423T780 330Q780 304 778 285T775 256T773 245Q778 252 826 328T932 484T1042 617Q1077 652 1114 678T1173 715T1200 726Q1208 726 1208 717Q1208 711 1206 695L1203 679L1199 675Q1197 675 1187 670T1161 657T1133 639Q1050 583 959 456Q906 381 858 307T779 179T725 83T691 18T679 -6Q677 -8 660 -8H656Q639 -8 639 -1Q639 4 646 17Q685 93 685 173V196Q685 233 681 288T676 380Q676 438 687 487L664 454Q505 230 454 170Q366 64 290 14T163 -36H152Q87 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 37 89 19T167 1Q187 1 197 3Q221 9 246 22T292 52T336 91T375 132T411 174T440 212T463 245T478 266Q779 695 784 698Q786 700 802 700H818Q824 694 824 692T809 668T779 604T764 513\",119978:\"259 -8Q230 -7 205 0T153 24T112 74T96 153Q96 254 174 379T374 599T607 707H621Q732 707 778 661Q805 634 805 598Q805 558 775 517T696 452L684 447V441Q684 378 626 273T484 97Q379 7 288 -7Q279 -8 259 -8ZM760 594Q760 670 608 670Q562 670 493 622T347 472Q174 240 174 131Q174 76 205 53T279 29Q294 29 306 32Q405 60 507 205Q592 325 616 401Q625 426 625 435Q625 436 621 436T603 440T569 449Q524 466 515 475Q513 477 513 481T525 496T541 508L548 504Q555 501 565 497T587 488T609 480T625 476Q627 476 626 481Q626 486 623 494T613 513T589 533T548 541Q495 541 413 454T286 281Q265 241 254 201T240 141T235 120Q234 118 217 111T197 104Q195 104 192 107T189 112Q190 125 193 147T220 231T280 348Q335 428 407 493T539 576Q548 578 563 578Q594 578 617 568T653 546T672 518T681 494T683 482Q683 481 684 481Q690 481 707 495T742 538T760 594\",119979:\"571 345Q571 384 612 418T687 452Q698 452 698 445Q698 436 679 417Q677 415 670 415Q650 412 633 389T615 350Q615 340 621 331T634 319T643 315L663 342Q751 462 817 536Q873 595 896 614L907 625Q843 680 701 680Q594 680 499 632T344 516Q317 486 296 449T267 384Q262 366 262 354Q262 332 276 316T326 299H327Q374 299 426 338Q481 376 537 456T597 598Q597 616 599 617Q601 619 614 624T630 630Q639 630 639 604V587V581Q639 519 597 456Q544 377 462 320T318 262Q278 262 250 282T222 350Q222 418 285 504Q360 597 480 656T702 716Q773 716 825 707T898 688T951 660Q962 670 985 685T1012 700Q1018 700 1022 690T1026 673Q1026 670 1019 664Q988 633 988 631Q988 630 999 618T1020 580T1031 522Q1031 471 1003 419T928 330Q854 275 765 264Q757 262 733 262H714L701 245Q615 121 473 42T218 -37Q159 -37 125 -15T90 46Q90 82 116 120T185 158Q203 158 213 147T224 121Q224 110 219 102Q198 75 159 75Q154 75 149 76T143 77T140 77Q137 72 137 53Q138 37 149 26T177 9T205 2T228 0Q313 0 419 74T602 257L620 281L614 285Q607 289 601 294T587 306T576 323T571 345ZM950 529Q950 576 943 576Q940 576 840 439T741 299H751Q804 300 845 334T924 438Q949 490 950 529\",119980:\"330 387Q330 331 402 331Q463 331 514 371T589 459T613 542Q613 559 608 570T598 588T593 596Q593 601 617 610Q632 617 636 616Q675 585 675 527Q675 464 629 409T516 324T387 294Q271 294 271 394V402Q271 438 292 478Q344 582 457 649T672 717Q765 717 825 675T885 548Q885 433 771 298T498 76Q493 73 491 72T486 69T484 67T485 66Q539 41 607 41Q655 41 703 71T780 139L787 148H804Q806 148 809 148Q826 149 826 140Q826 128 786 91T687 19T589 -16H576Q503 -16 414 20L396 27Q279 -17 192 -17Q130 -17 92 2T54 53Q54 92 107 123T222 155Q303 155 401 106L431 91L441 97Q476 118 527 157Q622 236 711 361T801 573Q801 591 795 607T775 641T732 668T660 679Q592 679 528 644T422 560T355 464T330 387ZM201 20Q232 20 267 27T322 40T342 49Q342 52 315 60T243 77T160 86Q150 88 144 88Q130 88 122 79T112 62L111 53Q111 20 201 20\",119982:\"346 463Q346 419 406 386T576 352H588L613 384L681 476Q767 594 842 651T973 708Q1016 708 1016 661Q1016 621 987 562T894 449Q802 375 696 338L682 334L665 312Q638 279 605 233T547 158T482 97Q418 46 332 5T158 -36Q87 -36 58 -11T29 48Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 28 98 14T166 0Q232 0 320 55T491 226Q530 279 551 305L558 314Q558 315 543 315Q417 321 353 365T289 460Q289 566 488 632Q578 662 660 665H679Q685 660 685 657T676 642Q670 633 666 629L664 628Q663 628 661 628T655 628Q606 628 546 615T426 568T350 486Q346 475 346 463ZM976 653Q976 671 959 671Q938 671 919 661T883 629T858 593T835 554Q832 548 830 545Q802 495 775 455T734 400T721 382L736 388Q876 449 946 568Q948 572 949 573Q976 622 976 653\",119983:\"354 350Q264 350 264 426Q264 442 265 448Q279 514 347 582T503 692T662 735Q719 735 774 714T882 672T983 651Q996 651 996 644Q996 639 977 612T954 581Q953 580 938 580Q909 582 884 587L869 591L870 587Q870 583 849 557T796 491T748 422Q729 391 692 313T620 188Q555 105 454 34T253 -37Q214 -37 181 -30T120 -2T92 53Q92 89 119 123T184 158Q205 158 215 146T225 119Q225 102 203 89T161 75Q153 75 145 78T135 81Q130 81 130 62Q130 39 153 24T204 5T267 0Q311 0 358 29T454 117T539 226T629 358T710 476Q726 496 744 516T778 551T807 577T828 595L836 601L785 623Q743 642 713 651T668 661T626 663Q564 663 509 644T418 596T356 535T317 475T305 431Q305 416 312 408Q323 388 369 388Q429 388 465 411T530 480Q557 526 557 565Q557 573 556 579T555 587T555 590Q555 591 568 600T584 611Q588 612 600 603Q622 581 622 549Q622 516 600 475T536 405Q454 350 354 350\",119984:\"55 377Q55 443 122 523T290 660T478 717Q533 717 575 689T618 594Q618 565 611 538T585 477T552 422T506 355T458 288L357 146Q307 68 307 31Q307 20 318 20Q326 20 331 21Q367 27 411 57T490 128L767 500L861 617H908H939Q953 617 956 616T960 609Q960 605 928 566T816 423T648 198Q587 113 571 86Q540 34 540 21Q540 20 545 20Q580 25 623 55T696 124Q702 132 704 133T722 134H739Q744 130 744 127T735 113Q713 80 655 38T548 -14Q527 -17 524 -17Q475 -17 473 47V63L462 55Q364 -17 302 -17Q235 -17 235 69Q235 88 239 105T248 135T268 171T292 205T328 251T369 304Q376 313 395 338T423 374T450 408T476 445T499 479T519 514T534 546T545 579T548 608Q548 647 522 663T460 680Q355 680 243 591T99 406Q97 399 97 383V377Q97 339 153 339Q169 339 175 340Q215 350 241 373T298 444Q333 496 349 535T367 588T374 603Q402 616 408 616Q416 616 416 608Q416 563 393 492T320 378Q233 302 140 302H132Q75 302 57 353Q55 361 55 377\",119985:\"540 717Q542 717 545 717Q562 717 562 710Q562 708 557 702T541 678T517 632T485 544T448 407Q447 405 443 388T438 366T433 345T427 321T420 299T411 274T400 250T387 223T372 197Q363 181 364 181L388 203Q476 284 527 354T620 490T718 612Q754 647 790 673T835 700Q839 700 842 691T848 672L850 662Q850 657 842 653Q803 630 768 600T699 527T653 467T610 405Q554 322 518 282T368 138Q307 84 273 51T231 9T218 -5L207 -17H175Q169 -11 169 -9Q169 -4 183 10Q227 56 258 120T302 234T330 350T356 445Q357 450 360 458L362 464Q317 434 276 434Q221 437 221 479Q221 498 240 521T259 552Q259 565 235 565Q209 565 174 546T105 482Q103 480 102 478T99 474T97 472T95 470T93 468T90 467T86 467T81 467H75Q56 467 56 475Q56 482 82 511T156 570T253 601Q289 601 311 590T334 557Q334 543 312 517T289 478Q289 471 297 471Q327 471 378 514Q384 519 390 531T412 571T451 632Q482 675 524 717H540\",119986:\"232 504Q232 492 263 492Q304 492 356 515L367 520L379 537Q443 632 515 705L527 717H543H552Q564 717 564 709Q564 705 562 703T554 694T540 677T518 643T488 589T448 504T398 385Q368 309 353 281L349 270L523 472L669 634Q726 695 737 706T757 717H765Q786 717 786 710Q786 704 776 691T738 627T675 497Q630 394 609 354T541 244Q456 120 449 111L447 107L448 108Q630 240 700 327Q734 368 788 463Q821 520 841 550T898 619T980 683Q1010 700 1018 700Q1020 700 1023 697T1026 692Q1026 688 1024 671T1020 652Q1018 650 1007 645T988 635Q940 609 902 565T842 477T781 374T699 272Q653 226 535 133Q423 47 373 -2L358 -17H342Q320 -17 320 -11Q320 -7 328 5T354 46T390 112Q416 161 439 217T488 326T564 453L589 490Q587 490 523 414T352 217T166 14Q138 -16 137 -16Q136 -17 120 -17Q106 -17 103 -16T99 -9Q99 -5 100 -3T106 3T116 14T132 35T154 72T184 129T222 212T270 327Q310 426 337 471L326 467Q278 455 243 455Q209 455 188 462T161 478T155 496Q155 508 176 533T198 576Q198 579 198 581T192 588T178 593Q151 593 100 519Q89 504 86 502T75 499H68Q46 499 46 506Q46 510 63 534T112 587T170 627Q178 629 195 629Q235 629 252 613T270 577Q270 556 251 532T232 504\",119987:\"351 351Q308 351 290 373T272 426Q272 487 329 566T478 688Q538 717 584 717Q635 717 681 696T745 620Q752 598 752 564T745 498L741 485Q742 486 769 516T825 573T889 634T962 689T1027 716Q1035 717 1060 717Q1083 716 1096 714T1120 705T1131 686Q1131 668 1109 647T1055 626Q1035 626 1026 638T1016 663Q1016 667 1020 679H1015Q971 671 886 589T728 413L688 360Q688 359 725 359H750Q762 359 766 357T770 348Q769 345 761 335T750 322Q748 321 704 321H660Q651 311 632 282T589 199T565 107Q565 25 653 20Q684 20 720 44T779 95T826 152T850 183L856 184Q861 184 865 184Q888 184 888 173Q883 163 845 117Q770 37 723 10T638 -17Q584 -14 554 17T523 101Q523 147 534 167L532 166Q530 164 526 160T518 153Q378 15 256 -15Q250 -16 226 -16Q161 -16 132 7T103 59Q103 93 129 125T194 158Q232 158 232 121Q233 118 233 113T221 96T188 77Q182 75 168 75T150 78V70Q150 43 178 32T241 20Q340 20 527 286L552 321H524Q489 321 489 330Q489 333 497 344T509 358Q511 359 545 359H579Q580 362 597 389T631 445T661 514T675 586Q675 637 645 658T572 680Q506 680 444 632T348 527T314 434Q314 388 361 388H364H366Q380 388 389 390T416 408T457 454Q487 497 505 536T526 594L529 613Q531 615 545 622T560 630Q568 630 573 613T578 577Q578 518 532 455Q504 413 453 382T351 351\",119988:\"155 280Q116 280 87 300T57 368Q57 409 87 466T192 589Q269 653 345 684T472 716Q572 716 613 675Q644 644 644 599Q644 585 643 574T637 550T629 529T616 505T600 481T578 450T554 416Q494 330 493 328L480 306Q466 278 466 256Q466 227 492 227H496Q514 227 534 234Q541 237 544 241T571 279L762 559Q777 579 792 595Q818 620 856 646T919 686T946 700Q951 700 955 692T959 677Q959 673 947 665T911 639T866 595Q816 538 749 408T640 225Q574 138 464 61T248 -17Q190 -17 144 1T98 62Q98 81 109 102T131 135Q156 156 183 158Q226 158 226 121Q226 111 224 107Q215 93 196 84T162 74Q154 74 147 77H144V70Q146 41 185 31T263 20Q363 20 493 175L507 192H504Q500 191 498 191Q484 189 476 189Q430 189 405 219T379 287Q379 294 379 299T382 311T385 322T391 335T398 347T408 363T420 379T434 399T450 422Q455 429 469 449T488 475T504 499T520 523T533 543T544 565T552 583T557 603T559 620Q559 680 467 680Q402 680 333 646T213 563T131 462T98 373Q98 343 119 330T169 317Q187 317 212 333Q242 354 291 423T352 555Q354 562 355 588Q355 612 356 612Q357 614 371 622T387 630Q391 630 397 623T409 597T415 556Q415 507 380 448T294 344Q216 280 155 280\",119989:\"221 428Q221 487 280 555T425 670T583 717H587Q641 717 665 695T689 646Q689 625 674 600T658 564Q658 550 671 541T695 530T710 528L718 539Q779 613 821 646Q894 707 964 707H970Q1010 707 1025 675Q1032 661 1032 645Q1032 626 1022 607Q1008 579 980 560T897 522Q867 512 836 505T788 496L771 493Q768 493 760 477T736 429T702 370Q700 367 698 363Q696 360 696 359H805Q809 355 809 350Q809 340 791 322Q789 321 728 321H668Q562 179 433 88L419 78L434 73Q505 54 554 54Q609 54 654 82T720 140H752Q758 134 758 132Q758 128 747 113Q711 67 657 32T552 -14Q540 -16 517 -16T480 -15T439 -3T375 27L354 38L338 30Q257 -8 191 -8H184Q154 -8 133 -5T103 1T88 10T83 19T83 29Q83 35 86 44T100 65T127 88T173 105T241 112Q286 112 342 99L360 95L372 105Q434 157 523 270L560 320Q560 321 533 321L507 322Q502 325 502 330Q502 339 521 358Q523 359 556 359H588L669 474L682 491Q676 492 665 494T647 498T632 503T614 510T596 521Q556 547 556 570Q556 585 579 618T603 663Q603 679 568 679Q510 679 452 650T354 581T288 500T262 431Q262 407 280 397T321 387Q331 387 341 390T360 398T376 409T390 423T400 435T409 447L414 454Q457 514 460 562Q460 575 461 576Q461 577 475 586T492 595Q496 595 503 588T514 572Q520 559 520 539Q520 473 452 412T308 351Q269 351 245 370T221 428ZM989 642Q989 667 953 671Q905 671 871 644Q853 632 832 604T799 554T787 531H788Q801 531 842 539T916 561Q989 592 989 642ZM198 29Q230 29 257 36T295 52L306 59Q306 63 259 73Q251 74 209 74Q177 74 158 66T134 48L130 40Q130 29 198 29\",120068:\"22 505Q22 563 94 624T271 685H280Q416 685 443 560Q447 535 447 504Q444 414 405 330L399 319L229 155Q233 154 241 153T253 150T265 145T281 135T301 119T328 93L357 64L402 92Q438 116 473 137L500 154V339Q500 528 495 593V601L559 649Q621 696 624 696L638 686L629 677Q599 650 593 638Q582 614 581 504Q580 490 580 443Q580 314 584 238Q584 235 584 224T584 210T585 199T586 187T588 176T591 164T595 152T601 137T609 121Q630 77 640 77Q661 77 703 101Q704 95 706 90L707 86V84L636 29Q618 15 601 2T574 -19T564 -25L500 121Q499 121 399 48L299 -26Q298 -26 291 -15T272 11T245 42T209 69T165 80Q120 80 58 43L48 37L40 42L32 48L122 117Q196 173 241 211Q319 280 343 327T368 447Q368 535 317 582Q264 633 199 633Q155 633 122 605T86 542Q86 518 133 467T181 387Q181 348 140 309Q113 281 73 260L64 255L50 265L59 273Q112 307 112 345Q112 363 90 387T45 441T22 505\",120069:\"48 506Q48 568 120 629T268 691Q362 691 425 594L431 585L441 594Q478 628 528 657T629 686Q665 686 687 670Q703 658 718 584T753 506Q756 505 763 505Q778 505 804 512L815 516L820 496Q820 494 808 490T774 476T732 454Q720 445 708 437L675 415L640 394L625 383Q626 382 635 382Q652 382 670 379T712 364T754 336T784 289T797 220Q797 172 776 122Q769 106 766 102T745 84Q654 11 619 -8T538 -27Q483 -27 387 10T249 47Q218 47 186 34T133 8T112 -5T104 7T97 21L196 82Q259 120 284 140Q333 181 351 214Q368 251 368 353Q368 588 228 620Q222 621 205 621Q160 621 139 596Q117 569 117 548Q117 526 162 470T208 387Q208 352 179 320T104 264Q88 256 86 256Q83 256 70 266L82 274Q134 309 134 343Q134 352 130 359Q118 377 100 401T72 439T56 470T48 506ZM453 528Q457 496 457 419L458 357L488 367Q554 390 622 425Q673 449 673 453L671 454Q669 456 665 460T657 473T648 498T639 541Q629 597 616 613Q599 633 567 633Q534 633 493 599Q471 577 457 540L453 528ZM713 176Q713 252 661 295T528 339Q512 339 494 336T466 330T455 325Q454 325 452 311T444 270T425 217L420 207L304 118L319 116Q381 111 475 74T602 37Q655 37 684 79T713 176\",120071:\"346 611Q300 611 261 604T194 584T144 555T107 519T82 481T65 443T55 410T50 383T48 367L37 372L27 378V393Q33 524 115 603Q160 648 230 666T365 685Q423 685 434 684Q745 653 745 405Q745 281 694 151L687 133L657 103Q524 -27 470 -27Q456 -27 331 18T157 64Q122 64 84 28Q67 9 57 -6L50 -16L43 -8L35 0Q35 3 46 22T83 74T141 133H154Q208 136 253 161T299 230Q299 259 277 290T232 348T209 392Q209 434 254 479T358 556L368 561L382 550Q382 549 381 548T377 545T371 541Q353 527 326 496T298 444Q298 430 343 365T389 277Q389 240 353 202T267 136L252 127Q304 118 400 83T513 47Q548 47 582 79T635 145Q671 208 671 323Q671 390 651 441T599 524T523 576T436 603T346 611\",120072:\"301 564Q240 564 203 507T165 361Q165 280 190 218T260 119T358 64T474 46Q491 46 499 47L511 48L628 106V80L499 -5Q498 -6 497 -7T494 -10T490 -12T485 -15T478 -17T468 -19T456 -21T439 -22T418 -23T392 -24Q252 -20 169 67T86 315Q86 409 124 491Q128 500 139 508Q211 560 272 591L293 601L325 585L338 594Q374 617 422 639T502 674L532 685Q533 685 540 663T557 614T574 581Q580 575 591 575Q600 575 616 580T634 585V564L623 559Q572 535 532 529L522 527Q491 547 442 627Q442 628 440 627T435 624T428 620Q410 610 405 597T399 559V553Q399 534 409 487Q419 431 427 369L476 400Q526 431 526 432Q531 426 537 420Q565 382 602 359Q611 353 610 352Q609 351 575 332T537 312Q536 312 505 335T463 358Q451 358 439 352T425 337Q394 243 263 223L251 221L243 229L235 236L245 239Q274 247 303 266Q320 277 325 290T330 336Q330 394 315 451T300 531Q300 549 303 561Q303 564 301 564\",120073:\"198 617Q177 617 159 609T128 587T106 557T91 524T82 494T76 472L75 463Q74 463 67 468T59 474Q59 488 63 510T80 564T114 622T170 667T253 686Q272 686 295 680Q330 672 384 645T468 598Q498 580 524 580Q549 580 595 626L612 643V616L599 599Q522 500 482 500Q466 500 435 514L420 521Q388 516 349 486T309 415Q309 396 323 366T352 315T367 294Q367 293 375 301T398 322T429 352L490 410Q537 355 542 332Q542 330 531 315T510 286L499 273Q479 313 449 313Q437 313 419 303T390 282L378 271L394 250Q444 183 470 129Q484 96 484 71Q484 -19 402 -86T223 -153H220Q175 -153 137 -120Q103 -89 103 -8Q103 12 106 40T109 96Q109 132 103 146T72 161Q46 161 16 143L14 154L11 165Q88 219 143 219Q163 219 177 197T192 127Q192 102 186 65T179 4Q179 -60 210 -88T272 -117Q319 -117 362 -75T405 33Q405 72 363 139T278 271T235 368Q235 385 243 404T264 439T292 472T324 500T353 522T374 538L382 543Q382 544 351 562T274 598T198 617\",120074:\"373 560Q373 543 378 509T388 448T394 421Q396 421 416 433T474 474T548 537L538 543Q481 570 452 628L487 659Q521 690 522 690L526 684Q529 677 535 667T551 646T575 625T607 608Q617 606 621 606Q644 606 660 622L664 600L497 455Q495 453 527 453H546Q628 453 665 407L666 406Q710 357 710 297Q710 196 631 109L621 98L577 69Q471 -7 452 -15Q413 -26 370 -26Q239 -26 155 59Q66 148 66 319Q66 442 113 505L191 552Q269 600 270 600H271Q273 600 280 596T293 589T299 586Q300 586 357 623Q413 659 415 659L426 649Q373 604 373 560ZM219 228Q305 262 305 329V343Q305 384 294 434T282 519Q282 562 287 567Q287 569 286 569Q222 556 191 520Q144 464 144 362Q144 213 228 128T420 42Q514 42 568 103T622 255V260Q622 320 578 357Q526 400 453 400Q434 400 410 396L399 394L400 378V372Q400 330 388 301T348 254T305 232T252 217Q245 215 242 214L234 213L226 220L219 228\",120077:\"194 601Q175 601 155 590T121 564T95 533T76 506L69 495Q55 503 55 507Q55 509 60 521Q87 586 132 636T222 686Q251 686 289 660T363 607T422 580Q442 580 466 588T506 604L522 612V591L487 574Q371 517 359 517H357Q332 522 280 561T194 601ZM383 39Q383 96 356 203T329 361Q329 364 329 370T330 378L331 388L339 399Q362 429 394 462T446 513T469 531Q470 531 477 527T484 521L474 509Q411 434 411 379Q411 341 434 223T458 82Q458 1 390 -69T239 -139Q191 -139 162 -123T123 -83T108 -30T101 23T88 64T52 80Q27 80 -4 64L-10 80Q-5 85 13 98T63 128T118 144Q149 144 163 129T179 93T182 38T187 -19Q199 -96 278 -96Q294 -96 309 -91T343 -73T372 -31T383 39\",120078:\"154 37Q219 41 219 142Q219 203 190 302T160 434Q160 445 172 472T209 534T269 602T354 657T460 680H472Q576 680 618 617V599Q618 578 615 555T608 517T602 501Q596 495 587 495Q586 495 586 499Q586 500 586 505T585 513Q567 628 415 628Q384 628 356 621T302 596T260 546T244 466Q244 416 258 377L261 367L276 382Q294 401 317 422T386 471T468 500Q500 500 518 477T544 422T554 386Q555 382 560 376T576 364T601 357Q612 357 623 361Q623 360 621 351T617 340L541 305L465 272Q469 271 476 270T488 266T502 260L512 255L519 242Q533 211 546 157T564 93Q584 53 617 53Q649 53 682 74V54L675 46Q646 17 612 -5T554 -27Q546 -27 538 -23T517 -9T494 28T478 91Q465 172 448 200T378 228Q337 228 289 207L288 196Q288 160 284 138Q283 125 262 98Q185 1 112 -24L102 -27L91 -25Q47 -13 17 31Q17 33 49 69L80 106Q111 37 154 37ZM421 434Q411 436 405 436Q370 436 336 407T275 337L267 325L271 313Q288 257 288 234Q289 234 395 276T502 319Q501 320 499 323T493 330T485 345T475 371Q473 378 468 388T449 416T421 434\",120079:\"251 231Q251 254 206 341T160 468Q160 529 238 605Q313 677 425 685L432 686Q440 686 445 686Q520 686 545 657T571 576Q571 548 568 517T564 480Q564 466 572 460T608 452H623V431L619 430Q618 430 611 428T591 423T566 417L516 404Q497 415 491 419T480 433T475 461Q475 470 477 498T480 546Q480 561 480 569T474 592T459 615T429 631T379 638Q322 638 283 606T239 526Q237 480 280 394Q319 310 320 268V250Q308 235 244 169L203 128H210Q215 128 256 112T357 80T466 64Q526 64 564 88T625 186L629 196Q643 187 644 186Q618 70 604 41Q577 -15 513 -24Q496 -26 476 -26Q418 -26 344 -3T211 45T133 69Q115 69 97 50T65 7T49 -20L45 -16Q41 -11 37 -6T33 0Q33 8 66 69T111 134Q251 156 251 231\",120080:\"687 578Q690 586 719 612T794 665T877 692Q909 692 926 670T953 614T973 570Q983 561 1000 560Q1023 560 1048 569V553L1034 546Q1003 528 972 504T933 466Q905 403 905 264Q905 205 909 172T920 126T940 91Q951 74 959 74T997 87L1027 100V79L956 27Q940 15 922 2T894 -19L885 -26Q883 -26 854 27L825 80V192Q826 314 830 341Q831 345 833 356Q840 398 844 404Q871 444 920 489L917 491Q914 493 911 495T903 501T898 508Q893 516 877 562T852 616Q840 628 818 628Q751 628 702 541L697 532L700 515Q708 467 708 419Q706 348 690 276T662 169T643 126L634 116Q626 105 611 87T581 51L522 -22L514 -15Q470 21 452 21Q431 21 394 -16L384 5L386 9L426 60Q449 87 460 95T486 104Q487 104 491 104T497 103Q514 99 541 81L559 69Q595 96 606 169T618 350Q618 486 598 543T517 601Q484 601 458 570T432 523Q432 516 434 492T436 443Q436 250 369 133L363 122L280 50Q207 -16 192 -27L182 -18Q136 26 106 26Q83 26 62 9T37 -16L27 0L33 10Q41 22 54 39T94 81T143 106Q178 106 225 62L235 53Q283 82 307 117Q352 190 352 359Q352 408 345 451T320 534T267 597T183 621Q159 621 147 617T120 598Q97 574 96 556Q96 528 143 469T191 377T161 311T102 262T70 245Q69 245 59 252T49 260L56 264Q63 268 73 275T94 291T111 312T118 338Q118 355 95 384T50 446T27 506Q31 567 101 626T255 686Q297 686 330 671T382 632T409 595T421 572V571L430 580Q454 610 496 634T588 659H590Q655 659 683 585L687 578\",120081:\"112 334Q112 356 70 410T27 497Q27 553 94 619T229 685Q230 685 236 685T246 686Q303 686 349 654Q373 636 392 607T419 558L426 538L454 576Q474 604 486 618T520 651T569 678T633 686Q668 684 687 673T713 651T730 609Q730 608 732 600T736 588T741 578T747 568T754 561T765 555T779 553Q789 553 817 562Q819 557 819 555V547L790 526Q743 492 730 479T712 447Q697 369 697 281Q697 166 726 108Q741 76 755 68Q759 66 767 66Q789 66 825 93V82Q825 71 822 70Q821 69 763 27T701 -18L692 -25L668 15Q662 25 650 45T635 70L627 85V107Q627 122 626 162T624 285Q624 381 632 398Q638 409 651 425T675 454T696 477T707 489H696Q683 490 679 492T669 507T653 551Q642 588 627 608T584 628Q572 628 560 625T538 616T519 602T502 586T486 568T473 549T463 532T454 517T448 504L445 497Q437 480 437 474Q437 472 439 461T444 421T446 348Q446 205 405 124Q396 105 392 100T368 78Q312 32 278 9T235 -18T214 -22Q191 -22 170 -10T139 12T129 25T160 66T192 105Q193 102 194 98T200 83T213 64T233 49T261 42Q303 42 339 90Q373 134 373 268Q373 397 339 493T235 618Q215 628 191 628Q155 628 126 604T97 548Q97 524 120 493T168 431T192 381Q192 346 164 318T86 260L70 250L54 266L63 272Q112 300 112 334\",120082:\"428 596Q412 596 386 595T350 593Q289 593 270 625Q267 632 267 640Q267 656 280 672T312 705T336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q648 627 677 599T720 535T739 466T744 392Q744 317 732 260T696 166T659 116T621 83Q617 80 615 78Q485 -27 377 -27Q320 -25 272 -9T187 21T122 36H116Q65 36 29 -13L27 -15L12 0Q12 1 32 26T76 78T109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596\",120083:\"112 339Q112 354 91 380T49 438T28 497Q28 565 95 628T242 692Q261 692 277 689T307 682T331 670T351 655T367 637T379 619T388 600T395 582T401 565T405 550Q409 554 422 570T453 603T500 641Q573 692 637 692Q656 692 670 686T692 672T705 647T713 618T718 584Q720 568 721 562T728 546T742 534T768 530Q776 531 782 532T791 535T796 536Q799 536 804 521Q801 519 789 513T764 499T738 480Q697 447 680 414Q677 407 677 396Q677 370 713 312T750 210Q750 125 686 57T560 -11Q540 -11 475 13L410 37V31Q410 -9 412 -50T417 -118T420 -150Q419 -150 373 -184T326 -218L305 -208Q305 -207 307 -196T314 -165T322 -116T328 -46T331 43V63L318 66Q270 80 250 80Q233 80 213 70Q183 57 138 -3L128 -16L118 5L125 20Q193 154 282 154Q309 154 331 146V287Q331 444 327 469Q321 522 301 560Q284 590 251 611T184 633Q146 633 119 607T92 550Q92 539 94 534Q100 516 143 460T186 386Q186 366 170 336T119 281Q102 264 70 250L49 260L56 266Q64 271 72 278T90 296T106 317T112 339ZM602 345Q602 357 608 371T622 397T642 421T661 441T678 456L686 462Q663 473 652 486T639 512T634 553Q631 594 624 608T593 631Q587 632 567 632Q539 632 497 600T416 497L410 484V122L467 103Q481 99 502 92T533 82T557 75T578 69T594 66T610 64Q647 64 672 87T697 144Q697 180 650 250T602 345\",120084:\"428 596Q412 596 386 595T350 593Q313 593 291 605T268 638Q268 644 269 648T274 658T284 669T301 689T326 718L336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q744 592 744 398Q744 299 708 213T646 104L603 68L614 55Q670 -5 710 -5Q726 -5 744 1T772 14L781 20Q782 20 782 7V-6L771 -13Q673 -69 665 -69L647 -63Q552 -30 514 8H512Q509 8 500 3T471 -9T428 -23Q405 -27 377 -27Q305 -24 228 6T124 36Q69 36 27 -16Q23 -13 19 -8L11 0L27 20Q93 102 109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596\",120086:\"750 276Q750 141 645 57T378 -27Q224 -27 146 67Q66 163 66 307Q66 361 80 412T127 515T217 609T356 676L388 684L420 692L442 681Q545 625 586 608T654 591Q688 591 710 609T737 646L742 665Q742 665 756 654L752 642Q736 594 706 566T621 515L607 510Q580 513 528 542T421 599T335 627Q272 627 214 569Q139 500 139 373Q139 308 159 247T217 136T316 56T455 26Q520 26 566 43T634 90T666 148T676 207Q676 264 649 297T580 338Q574 339 552 339Q516 339 442 325T327 310H324Q303 310 290 312T259 328T232 369Q230 375 230 390Q230 426 259 461Q286 488 338 507Q351 498 351 495L346 492Q342 490 339 488T330 482T320 473T312 462T305 447T303 428Q303 368 366 368Q393 368 487 388T613 409Q656 409 696 385T748 306Q750 294 750 276\",120087:\"289 686Q338 686 439 668T565 649Q606 649 641 672Q656 683 664 690T674 700L675 701Q676 698 676 692V681L641 636Q608 591 602 588Q577 575 528 575Q490 575 438 583L426 585L416 578Q335 520 335 465Q335 437 393 366T452 259Q452 226 406 171Q387 146 351 115L341 106L358 97Q438 58 475 58Q525 58 598 124L608 133Q617 119 617 118Q617 114 606 103Q513 0 448 -27L438 -25Q401 -19 337 14T234 48Q186 48 122 -3L112 -11L106 -3L101 5L110 15Q160 63 209 105L224 117H310Q384 163 384 210Q384 238 329 303T263 398Q262 400 262 404Q262 427 290 476T368 580Q383 596 381 596Q315 622 228 622Q159 622 118 593T76 516Q76 482 96 461T139 431L107 399L75 367Q34 403 34 472Q34 525 64 572T148 652Q207 686 289 686\",120088:\"160 247Q160 291 110 382T59 505Q59 542 106 597T207 690L218 697L229 682Q229 680 216 669T187 644T158 604T144 552Q144 526 165 482T207 387T228 291Q228 277 228 267T224 247T219 232T210 217T199 202T184 184T166 163L118 107Q124 105 132 105T160 98T220 77Q298 47 317 47Q354 47 409 105Q444 142 451 161T458 244V277Q458 339 455 457T447 596L575 686L591 676L583 668Q550 632 541 587T532 449V372V298Q532 198 550 147Q572 79 605 79Q617 79 631 84T656 95L665 100V79L595 27Q578 15 560 2T532 -19L523 -26Q522 -26 490 42L458 111L397 50Q389 42 374 27T355 8T340 -5T325 -16T311 -22T294 -26T274 -27Q232 -25 152 6T35 37Q28 36 19 30T4 18T-8 4T-16 -5Q-25 10 -25 11T-20 18Q-5 34 15 57L54 101Q70 103 86 116Q94 121 113 140T137 166Q160 201 160 247\",120089:\"54 266Q118 307 118 339Q118 360 74 413T27 493Q26 530 59 578T133 651Q187 686 256 686Q299 686 332 673T382 640T409 600T424 567T429 553Q431 553 463 586T542 653T624 686Q663 686 715 652T798 617Q812 617 825 622V606L815 599Q785 576 762 546Q724 495 724 432Q724 397 737 317T750 217Q750 148 711 96Q697 75 639 34T578 -10Q563 -21 555 -23T522 -26Q458 -26 363 29Q253 89 211 89Q192 89 173 83T139 67T114 49T96 34L90 27L80 43L95 59Q121 87 148 110T191 143T213 154Q261 154 300 195Q328 222 340 267T352 406Q352 562 255 611Q222 627 187 627H182Q143 627 115 598Q96 579 96 559Q96 528 144 470T192 381Q192 348 156 314T80 256L70 250L54 266ZM727 548Q701 550 650 583T567 617Q560 617 554 615Q532 610 501 580T445 501L437 485V465Q432 326 378 223L294 150Q321 143 421 87T560 31Q608 31 634 64Q660 102 660 198Q660 226 655 292T650 387Q650 418 658 452L660 462L735 548H727ZM264 150Q265 151 263 151H261Q261 150 264 150ZM280 150H276V149Q280 149 280 150\",120090:\"32 501Q35 564 103 625T264 686Q326 686 365 652Q402 618 420 564L441 585Q486 630 539 670L559 686L572 672Q637 606 665 559L682 576Q787 686 845 686Q877 686 929 656T992 623Q999 621 1016 621Q1041 621 1054 628L1051 617L1047 606Q1042 602 1037 597Q983 557 969 522T954 434Q954 394 961 336T968 221Q968 201 966 184T963 155T956 131T948 113T936 96T923 82T906 66T887 50L816 -2Q815 -3 810 -6T801 -11T791 -16T777 -20T759 -23T735 -25Q691 -25 619 4T505 37H496L463 21Q420 0 389 -20L378 -27H362Q316 -27 275 -9T202 28T150 46H146Q114 46 59 -5L48 -16L41 -6Q40 -4 38 -2T34 2L33 4Q33 8 77 54Q111 87 142 112L154 122H166Q239 127 288 182Q346 244 346 406Q346 489 326 537T259 610Q227 628 195 628Q155 628 128 606T101 549Q101 517 146 465T192 382Q192 348 156 310T85 254L75 250L64 258L55 266Q56 267 74 276T105 301T118 339Q118 362 75 413T32 501ZM952 547Q927 555 877 586T796 617Q744 617 682 525L676 516L677 498Q678 486 678 425Q678 301 652 206Q649 195 613 151T577 102Q577 100 582 100Q618 100 720 51Q761 32 790 32H794Q843 32 869 83Q884 110 884 189Q884 233 879 294T873 400Q874 433 879 451T889 478T915 507T952 547ZM241 105Q249 98 263 88T317 60T393 42Q478 42 547 109Q607 171 607 358Q607 371 607 380T604 417T595 467T577 517T546 566T500 601L479 580Q449 550 433 526L426 516V503Q426 311 357 200L352 191L296 149Q241 107 241 105\",120091:\"96 511L78 527L149 603Q207 666 227 686L237 685Q278 680 306 667T351 631T376 588T395 533L400 516L406 527Q439 600 523 653Q538 664 587 688Q589 688 596 672T613 635T629 606Q643 588 665 588Q677 588 693 596L709 603V585L607 526Q583 536 554 564T512 614Q461 571 435 507T405 381V367H581L563 347Q561 344 558 341T553 335T549 330T546 326L545 325H541Q537 325 488 329T411 334H405V325Q405 198 454 123Q497 54 568 54Q594 54 619 64T660 84L676 95V74L565 -16L553 -20Q528 -27 512 -27Q492 -27 475 -21T444 -5T418 19T398 47T382 77T371 105T363 128T358 145L357 151Q354 151 339 136T294 91T232 37Q152 -22 113 -22Q90 -22 69 -9T38 17T28 32Q28 33 58 68L86 101Q94 81 115 64T165 47Q206 47 249 84Q302 128 325 222Q334 263 336 312V334H312Q198 334 163 324H161Q162 326 182 348L198 367H336V398Q333 508 308 550Q295 570 274 585T227 601Q204 601 181 589T145 565T115 533T96 511\",120092:\"123 345Q123 358 75 415T27 496Q27 533 63 578T121 639Q181 685 256 685Q305 685 332 676T384 635Q419 588 425 542Q468 585 526 628T618 686Q632 667 658 645T704 609T724 594Q740 512 740 385V375V361Q740 128 682 -3Q656 -64 554 -141T361 -218Q319 -218 287 -203T243 -173T230 -150Q230 -148 267 -109L304 -69Q311 -115 341 -142T411 -170Q474 -170 534 -119T624 11Q660 111 660 312Q660 447 633 528L612 549Q578 583 552 596L543 601L528 592Q501 574 483 558Q454 528 436 494L431 484V473Q431 330 376 230Q366 213 359 206T306 159L250 112Q278 105 327 82T399 58Q421 58 440 69T471 92T484 104H485L493 90L480 73Q453 39 429 13Q393 -22 372 -22Q342 -22 260 15T153 53Q97 53 48 -16L38 5Q46 22 74 54T128 108L143 122H155Q226 127 275 168Q352 236 352 399Q352 501 309 564T197 628Q156 628 129 607T102 553Q102 517 147 463T192 383Q192 323 75 250L59 266Q123 314 123 345\",120094:\"86 363Q86 365 128 391T212 444L255 470Q256 470 263 465T283 453T308 442Q338 431 346 431Q350 431 358 436L414 465L421 459L418 434Q404 339 404 262Q404 147 408 119L425 97Q443 74 444 74L467 86L491 97Q492 97 497 83L436 28Q377 -26 374 -26L331 46L329 91L155 -35Q152 -35 114 10T68 65L67 86Q66 100 66 156Q66 177 66 198T68 236T71 268T74 296T77 320T80 338T83 351T86 360V363ZM314 365Q285 367 255 374T206 386L187 392Q181 392 172 376T154 311T145 197Q145 124 151 118Q156 110 187 78L208 56H214Q221 57 253 76L308 109L329 123V136Q328 143 328 257V365H314\",120095:\"177 427Q177 364 181 364Q184 364 192 370T223 395T271 433Q317 469 323 469Q325 469 338 462T377 440T432 413L440 409L441 396Q441 394 441 372T442 334Q442 203 425 108L423 97L400 83Q347 49 296 21T222 -19T196 -31Q192 -29 149 12T87 71L89 89Q100 155 100 319Q100 500 94 627Q94 632 94 638T94 648T94 656T93 662V664Q93 668 97 669T106 670H110Q114 653 118 633L127 596Q127 595 132 597Q136 599 195 642L255 685L272 673Q269 670 256 659T233 637T211 609T190 565T179 508Q177 494 177 427ZM295 377L274 385Q273 385 264 381T242 370T223 361Q213 355 188 340L178 333V123L198 103Q259 42 285 42Q299 42 314 55T339 85Q363 132 363 232Q363 310 358 343V349L345 355Q330 363 295 377\",120096:\"72 208Q72 323 84 361Q84 363 167 414Q248 466 250 466Q255 465 260 465Q283 460 307 450T344 430L357 422L306 343L301 342L296 340Q267 362 247 372T216 384T177 390Q154 349 154 238Q154 220 156 158V145L168 132Q179 121 208 93T244 59Q245 58 246 58Q255 58 302 83T350 108L352 104Q355 100 356 96L358 92Q358 91 274 32T187 -29L177 -20Q160 -6 120 36T77 84Q77 87 75 118T72 208\",120097:\"13 542Q13 544 77 576T147 609Q154 609 185 598T283 551T414 464L427 454V440Q427 436 427 412T428 372Q428 315 426 270T418 197T409 152T400 121T394 103L304 35Q285 21 261 2T225 -25L214 -33Q149 7 97 59L76 80L75 91V171Q75 221 76 254T79 299T80 313Q80 315 78 321Q78 323 78 326L77 330Q79 336 132 384T211 447L219 445Q221 445 224 444L228 443Q229 443 228 441T221 432T206 415L191 395Q175 378 162 339Q152 306 152 250Q152 217 159 140V134L171 121Q194 99 235 74T284 48Q296 48 310 75T337 156T349 267Q349 346 336 400L315 420Q246 489 176 525Q127 545 94 545H73L27 527L13 542\",120098:\"353 103Q353 97 358 87L337 71Q293 38 247 6Q191 -30 189 -30Q188 -30 173 -16T130 26T76 85L74 99Q70 139 70 190Q70 228 73 271T79 338T84 365L94 372Q105 378 126 392T166 417L246 467Q283 417 349 369L364 358L355 349Q249 249 169 180L151 166L152 152V139L165 126Q186 105 215 84T260 62Q267 62 309 82L353 103ZM267 323Q246 337 230 350T204 371T189 385T179 394T174 397Q149 381 149 219V211Q151 211 171 223T220 258T268 299L282 313L267 323\",120099:\"128 387Q128 391 112 456T92 546V555L101 568Q133 617 183 670L193 681L204 673Q238 648 262 648Q276 648 292 656L302 661L308 653Q308 652 278 618L249 585H234Q194 587 159 595Q158 595 156 596H153L150 597Q151 593 152 581T154 564T157 547T164 524T176 494Q199 436 203 400V392H207L323 386Q323 384 309 368L296 351H203V176Q201 -9 198 -32Q194 -61 166 -114Q158 -129 153 -138Q114 -214 110 -221Q105 -221 98 -220L87 -219V-216Q88 -215 106 -150T124 -82Q128 -73 129 155V351H30L64 386H96Q128 386 128 387\",120100:\"27 -144L17 -131L82 -75L146 -20L126 6Q99 37 92 48L78 65L77 79Q75 103 75 158Q75 217 78 268T86 343T91 368Q92 370 109 382T157 413T222 452Q240 465 249 469L251 470Q296 443 350 428L365 424L437 465L442 459Q442 456 441 453T437 444T432 424T427 385T423 317T421 215V133L423 119Q423 111 455 -17Q455 -21 380 -108T290 -201Q290 -202 284 -204T269 -207T252 -209Q172 -209 75 -135L62 -126Q60 -126 44 -135L27 -144ZM349 351Q267 359 178 389Q177 387 173 376T166 358T161 337T157 303T155 259Q155 195 159 135L160 124L170 112Q180 101 204 77T230 53Q231 53 286 88L340 123V141Q340 235 348 329Q348 334 348 339T348 348L349 351ZM364 -59Q364 -37 358 -1T347 64T341 93Q336 93 252 28T149 -57Q226 -134 293 -134Q325 -134 344 -118T364 -69V-59\",120101:\"88 427Q88 486 87 545T84 634T81 667Q81 673 82 673T89 676H94L117 600L200 661Q208 667 218 674T233 684L238 688L254 678Q222 646 216 637Q164 572 164 483V442V371Q187 390 244 431T312 478Q344 446 411 423L428 417L429 396Q434 297 434 218Q430 8 406 -34Q346 -111 262 -195L251 -205L249 -203Q248 -203 244 -199T236 -193Q226 -183 227 -182Q228 -182 244 -169T278 -140T301 -121Q330 -89 340 -22Q355 60 355 171Q355 200 353 244T348 321T344 354Q333 363 307 376T260 390Q241 390 179 350L164 341V121Q180 96 201 66L213 50Q210 46 172 11T131 -24Q130 -24 123 -11T102 25T77 65V78Q80 104 84 227T88 427\",120102:\"72 617Q72 618 102 645T133 673H134Q134 668 175 627L187 615L130 555L116 568Q72 615 72 617ZM27 369Q21 376 14 382L26 392Q83 440 119 474Q158 435 169 427L179 420L176 395Q166 302 166 227Q166 171 174 139Q178 119 186 103T202 81L208 75Q255 100 261 100Q262 100 264 92T267 83Q267 80 208 30T145 -20Q143 -20 118 17L91 55Q98 117 98 193Q98 339 88 369Q71 390 68 390Q63 390 39 376L27 369\",120103:\"101 644L132 672L145 657Q155 642 169 628L182 614L169 600Q148 579 140 570L125 555L112 568Q109 570 91 592T72 615Q72 617 101 644ZM19 -208Q-9 -185 -9 -183Q57 -134 80 -106Q103 -81 110 -19T118 179Q118 294 113 329T86 383Q78 389 76 389Q73 389 57 379L39 367Q26 380 26 381L33 387Q40 393 53 405T79 428L130 474Q147 457 186 428L195 422L196 376Q196 130 192 58T174 -35Q172 -39 104 -114T19 -208\",120104:\"93 348Q93 379 90 503T87 658V670Q87 671 94 671L100 672L112 636Q124 603 124 600L144 616Q196 659 234 682L246 689Q252 686 256 685T268 680L254 667Q225 641 211 626T184 579T168 505V497L178 504Q203 523 237 544L300 584L310 573Q359 522 359 481Q359 476 359 472T358 464T355 456T351 448T346 440T340 433T332 424T323 414T312 402T299 389L255 343L300 342H346L320 309H177V128L193 113Q214 92 244 68L254 60L303 84Q351 108 352 108L362 96Q355 85 277 30T194 -25L170 -4Q146 18 120 41T89 68Q94 85 94 168Q94 184 94 218T93 268V309H58L24 310L51 342H93V348ZM172 342Q217 342 252 374T287 445Q287 472 255 504Q242 517 241 517Q202 498 187 468T168 365V342H172\",120105:\"221 76L267 99Q268 98 269 96T271 88T270 82L262 76Q255 69 241 57T214 34L148 -20L98 56L99 89Q107 247 107 373Q107 494 101 621Q101 653 99 659V665L106 668L113 672L118 655Q122 642 131 617L138 597Q140 597 157 611L240 670L264 685Q265 685 270 680T276 674T269 667T247 647T219 617Q197 587 186 551T173 493T171 438Q171 376 175 282T179 147V117Q184 109 201 93T221 76\",120106:\"20 367L8 379Q9 380 63 425T118 471Q130 460 143 446L168 421V398L169 376L295 475Q362 433 415 418V399Q415 380 416 380T437 394T484 428T529 462L544 474L556 467Q590 449 614 438T646 424L653 421L665 417L664 412Q664 411 664 407T664 397T663 384Q660 342 660 335Q658 303 658 245Q658 186 660 152L661 126L669 115Q680 96 697 79L707 83Q716 87 723 90T735 96T741 100T746 102L747 103V102L750 95Q753 88 753 87L631 -18Q630 -17 622 -3T589 43L576 60L579 72Q592 146 592 218Q592 265 584 321Q581 345 578 350T560 363Q535 376 496 386L481 390Q475 387 425 358L415 351V238V157Q415 142 415 135T417 120T421 110T430 98T441 81L465 47Q462 44 458 41T443 28T420 8L380 -26L333 47L336 62Q339 77 342 109T345 184Q345 223 341 285T333 348Q322 364 258 382L240 388L169 347L168 240Q168 118 171 110L174 106Q178 101 183 93T195 78L217 48Q217 47 196 30T154 -5T133 -21L130 -16Q127 -10 122 0T111 19Q89 56 89 60Q95 76 95 153Q95 239 88 337V365L62 391L20 367\",120107:\"31 368Q20 379 20 380T72 427L121 470L129 463Q137 455 155 441T176 425V367L320 475L329 469Q351 454 385 437T434 417L432 402Q429 362 429 231V128L439 111Q442 107 445 102T449 95T453 90T456 86T459 84T463 82T467 82Q468 82 489 93T511 105T514 95V88L395 -18L340 65L341 77Q347 111 348 178Q348 343 343 353V358L332 363Q298 377 264 382Q260 382 254 382L249 383Q247 383 211 362L176 341V229V147Q176 134 176 127T177 115T179 106T183 99T189 91T197 81Q201 76 206 69T214 57L217 53Q217 52 175 15T132 -22Q132 -20 114 5T88 41Q84 45 84 50Q94 116 94 203Q94 227 93 263T92 324L90 364L67 388L50 378Q32 368 31 368\",120108:\"67 121Q70 265 84 359V364L97 371Q137 394 177 421T238 464T260 480L278 468Q295 457 327 442T394 418L406 414Q412 388 412 300Q412 263 410 228T405 170T399 130T393 103T391 92L381 86Q274 19 165 -28L161 -24Q157 -21 151 -15T136 -2T118 14T101 30T86 46T74 60L67 68V121ZM335 278Q335 286 335 303T334 335L333 349V356H326Q288 360 208 388L183 397Q178 393 172 383T154 333T142 239Q142 192 151 134Q152 124 155 120T175 99Q197 77 219 64T251 47T267 44T281 52T302 80T320 124Q335 182 335 278\",120109:\"23 25Q15 33 12 38L35 59Q82 102 87 105V351L68 378Q42 414 42 422Q42 437 67 472T114 530L125 541Q126 541 132 537T138 532Q121 507 121 488Q121 453 160 413L167 405L166 390L165 372Q169 372 233 421T305 478Q307 479 315 472Q395 421 423 415Q424 415 424 415T425 414L426 410Q426 407 426 401T426 388Q430 335 430 272Q430 139 408 80Q407 78 340 22L273 -33Q200 23 165 23Q164 23 164 -32Q165 -89 168 -155V-170L93 -212L78 -203Q85 -48 87 16V47H79Q53 44 23 25ZM319 41Q346 94 349 212Q349 278 343 343V351L330 357Q318 363 270 381L255 387L245 383Q212 370 178 345L166 336V287Q165 260 165 166V94H175Q219 90 299 51L319 41ZM132 57L129 60Q130 58 132 57ZM158 29Q159 29 155 34T145 45T138 50Q155 29 158 29\",120110:\"399 19Q399 -123 407 -174V-179L332 -219L322 -210L312 -202L314 -185Q320 -83 323 54V95L311 85Q255 40 162 -19Q146 -29 145 -27Q140 -22 103 20L63 65V73Q61 83 61 115Q61 122 61 135T60 154Q60 263 79 353L83 368L94 375Q123 391 147 405T186 429T212 446T229 458T238 466T243 470T247 471L260 464Q274 457 295 448T330 434L341 432L410 479L412 478Q414 476 416 475T419 473L417 461Q399 358 399 19ZM316 367Q287 370 252 377T196 391L176 397H175Q173 397 166 382T149 314T139 187V158Q139 138 141 132T155 114Q158 111 160 109Q210 58 211 58L218 62Q226 67 240 75T266 91L319 124V196Q319 334 325 361V367H316\",120111:\"357 398Q364 398 375 403L386 408Q386 404 387 400V393L369 377Q361 370 350 360T336 347T327 340T316 336T303 335Q270 335 234 371L224 379Q220 375 214 370T198 355L182 340V243Q182 164 183 152T189 129Q195 117 211 100T239 72T254 60T298 81Q342 101 343 101Q344 100 345 92T346 82L200 -21Q174 -5 117 55L97 75L99 92Q106 147 106 196Q106 216 104 282T97 355Q95 359 95 361Q95 364 77 378L65 387L48 380Q30 372 29 372Q28 371 23 375T17 380Q17 384 50 415T107 467L115 474L128 461Q171 421 182 414V382L235 425Q247 435 261 446T283 462L290 468L295 460Q335 398 357 398\",120112:\"272 33Q284 33 290 70T296 138Q296 181 290 198T262 230Q257 232 246 232Q231 232 218 227T156 194L108 167L101 176Q90 192 75 219L69 230V284Q69 346 70 357V377L146 427Q181 450 202 464T223 477L225 476Q227 475 229 474Q231 472 242 466T270 450T296 431Q309 418 326 418Q342 418 361 429T392 450T403 459Q406 445 406 442Q406 440 384 421T338 382L316 363Q315 362 310 362Q292 362 251 371T173 396Q156 403 155 403Q143 386 143 342Q143 305 150 278T168 244Q171 242 181 242L190 243L315 300Q330 295 357 274Q358 273 362 270T366 266T369 261T372 253T373 239T374 217T374 185Q374 157 372 133T368 98T363 71T358 50L336 40Q288 20 255 2T211 -22T198 -29L190 -22Q181 -14 168 -3T138 19T104 38T70 46Q50 46 32 37T3 20T-9 11L-18 23L-1 41Q46 89 62 99T112 110Q141 110 157 103T225 62Q268 33 272 33\",120113:\"228 640L242 627L227 613Q213 599 211 593T203 553Q197 500 196 435V389H301L272 353H195V274Q195 178 196 159L197 123Q249 71 273 68H280L312 83Q344 99 345 99Q348 99 348 78Q348 76 314 52T246 4L212 -20Q211 -20 164 19T112 62Q112 122 113 196Q113 228 113 262T114 318T114 341V353H27L62 389H116L117 431V558L228 640\",120114:\"171 315Q171 252 165 199T153 124L147 103Q147 102 196 80L244 57L335 107V116Q339 161 339 268Q339 315 338 351T337 412V424L420 468Q424 465 427 461L424 435Q412 331 412 226Q412 170 415 145T434 96Q442 84 452 83Q461 83 492 96L506 102Q507 102 510 96T513 88L493 71Q445 32 401 -9Q392 -18 388 -17L384 -16Q358 39 355 44Q336 77 333 77Q261 45 203 -9Q186 -23 181 -23Q177 -23 162 -11T121 18T69 44L57 48L61 54Q65 60 71 73T82 102Q100 156 100 262Q100 305 93 335T80 373T62 396L23 376Q18 377 9 386L119 474Q149 437 171 421V339V315\",120115:\"55 418Q55 443 100 503Q121 530 123 530Q125 528 127 528T131 528T134 528T135 524T131 516Q123 499 123 486Q123 457 159 416L169 405L170 388L171 372Q171 371 244 424L317 477L334 466Q394 428 432 416L433 402Q433 400 433 377T434 336V305Q434 195 420 131Q413 94 406 87Q403 84 298 29L192 -28L172 -8Q139 25 106 52L92 64V70Q95 97 95 198Q95 293 94 318L92 355L84 367Q55 406 55 418ZM174 306Q174 297 173 255T171 184Q171 153 175 136T198 100Q207 94 224 80T255 57T282 49Q304 49 328 80Q359 129 359 243Q359 284 352 345Q351 358 348 360Q333 373 304 384T265 396L251 390Q215 372 186 351L175 344V337Q175 319 174 306\",120116:\"45 425Q45 439 82 485T126 532Q127 532 128 532T131 531T137 529L132 519Q121 499 121 483Q121 473 131 454T156 419L167 408L169 376L185 388Q237 425 291 473L301 466Q337 443 394 416L419 405L418 387V369Q419 369 487 418T560 471L581 459Q597 450 621 437T664 415T684 406Q688 406 688 323Q688 254 679 193T662 103T648 71Q647 70 554 20L464 -28L443 -15Q416 1 386 17T343 40T331 49Q331 52 333 73T337 133T339 216Q339 309 334 339Q333 341 316 353T277 377T246 389Q235 389 201 369T166 346Q166 345 164 247Q164 232 164 210T163 179Q163 139 170 116T205 57L212 48L136 -27Q115 16 87 44L78 53L80 67Q88 124 88 211Q88 282 87 315T83 356T74 371Q45 410 45 425ZM591 352Q580 359 565 365T540 374T517 381T504 385L418 342L417 318V220Q417 212 417 194T417 170T418 152T420 134T424 120T431 106T440 95T454 83Q508 44 544 44Q566 44 583 77Q603 120 605 235Q605 289 600 322Q598 343 597 345T591 352\",120117:\"14 377Q63 428 117 472Q130 462 144 449L193 408V392V376L247 420Q300 464 301 464L310 451Q331 417 363 390L333 365Q303 340 301 340Q293 343 277 364T250 386Q241 386 215 361L195 341Q194 333 193 327T191 318T190 304T188 269Q188 220 192 148Q193 122 195 118T210 101Q255 60 271 60Q276 60 278 61L318 82Q327 86 336 91T351 98L356 101Q359 82 356 79Q354 77 283 27T210 -24L192 -7Q160 23 137 40L126 49L116 40Q66 -13 66 -54Q66 -117 167 -140L179 -142V-147L180 -152L123 -188L112 -185Q58 -170 31 -145Q10 -122 10 -96Q10 -80 22 -53Q44 -10 95 49Q97 51 100 54T104 59T107 64T109 71T111 81T112 97T113 119T114 149T114 188Q114 284 108 347V354L96 365Q76 385 67 385Q62 385 45 377L27 368L14 377\",120118:\"74 58Q89 124 89 241Q89 265 89 278T89 305T88 324T87 336T84 346T81 352T77 359T71 368Q57 388 52 398L45 409Q62 454 98 507L113 528Q128 528 128 524Q128 523 125 518T120 503T117 483V471Q123 456 130 445Q135 438 140 432T148 422T153 415T157 409T160 405T162 402T163 399T163 395V384V365Q165 365 237 419L311 473Q383 430 420 416Q426 414 426 411V404Q426 398 426 388T427 367Q431 233 431 201Q431 -3 391 -52Q387 -58 305 -138T221 -218L218 -217Q216 -216 211 -214T202 -210L184 -202L199 -194Q259 -162 288 -127T334 -19T350 184Q350 257 342 328L340 356Q282 390 262 390Q248 390 178 346L163 336V111L216 45L131 -26L124 -15Q114 3 85 44L74 58\",120119:\"47 335L36 347L52 362Q112 421 167 461L181 471L192 465Q236 444 260 417T284 369Q284 355 276 343T233 291Q195 246 195 245T205 242T241 228T300 198L302 187Q314 138 314 74Q314 -24 291 -95Q290 -100 222 -157L154 -214H145Q102 -214 53 -189T-7 -117Q41 -21 183 122L207 147Q205 149 186 157T140 172T100 180H97V192L140 231Q192 280 199 293Q205 303 205 315Q205 339 185 363T137 388Q119 388 63 347L47 335ZM179 -153Q212 -153 226 -113T240 14Q240 67 233 98T223 132T211 143L222 130Q216 125 206 116T170 82T124 33T88 -20T72 -70Q72 -99 105 -126T179 -153\",120120:\"130 -1H63Q34 -1 26 2T17 17Q17 24 22 29T35 35Q49 35 64 44T88 66Q101 93 210 383Q331 693 335 697T346 701T357 697Q358 696 493 399Q621 104 633 83Q656 35 686 35Q693 35 698 30T703 17Q703 5 693 2T643 -1H541Q388 -1 386 1Q378 6 378 16Q378 24 383 29T397 35Q412 35 434 45T456 65Q456 93 428 170L419 197H197L195 179Q184 134 184 97Q184 82 186 71T190 55T198 45T205 39T214 36L219 35Q241 31 241 17Q241 5 233 2T196 -1H130ZM493 68Q493 51 481 35H619Q604 56 515 256Q486 321 468 361L348 637Q347 637 330 592T313 543Q313 538 358 436T448 219T493 68ZM404 235Q404 239 355 355T295 488L275 430Q241 348 208 232H306Q404 232 404 235ZM155 48Q151 55 148 88V117L135 86Q118 47 117 46L110 37L135 35H159Q157 41 155 48\",120121:\"11 665Q11 672 22 683H213Q407 681 431 677Q582 649 582 515Q582 488 573 468Q554 413 484 372L474 366H475Q620 317 620 178Q620 115 568 69T420 6Q393 1 207 -1H22Q11 10 11 18Q11 35 51 35Q79 37 88 39T102 52Q107 70 107 341T102 630Q97 640 88 643T51 648H46Q11 648 11 665ZM142 341Q142 129 141 88T134 37Q133 36 133 35H240L233 48L229 61V623L233 635L240 648H133L138 639Q142 621 142 341ZM284 370Q365 378 391 411T417 508Q417 551 406 581T378 624T347 643T320 648Q298 648 278 635Q267 628 266 611T264 492V370H284ZM546 515Q546 551 531 577T494 617T454 635T422 641L411 643L420 630Q439 604 445 579T452 510V504Q452 481 451 467T441 430T415 383Q420 383 439 391T483 413T527 455T546 515ZM585 185Q585 221 570 249T534 294T490 320T453 334T436 337L435 336L440 330Q445 325 452 315T467 288T479 246T484 188Q484 145 474 110T454 62T442 48Q442 47 444 47Q450 47 470 54T517 75T564 119T585 185ZM449 184Q449 316 358 332Q355 332 335 333T302 335H264V199Q266 68 270 57Q275 50 289 43Q300 37 324 37Q449 37 449 184\",120123:\"16 666Q16 675 28 683H193Q329 683 364 682T430 672Q534 650 600 585T686 423Q688 406 688 352Q688 274 673 226Q641 130 565 72T381 1Q368 -1 195 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM237 646Q237 648 184 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H237L230 48L226 61V343Q228 620 231 633Q232 636 237 646ZM264 61Q278 40 310 35Q363 35 401 55T461 112T496 193T513 295Q515 333 515 349Q515 411 504 459Q481 598 373 641Q351 648 321 648Q304 648 292 643T277 635T264 621V61ZM461 628Q462 627 471 616T489 594T509 559T529 509T544 441T550 352Q550 165 479 75L468 59Q474 61 484 65T522 87T573 128T618 195T650 290Q654 322 654 354Q654 418 638 464T581 552Q559 576 529 595T480 621L461 628\",120124:\"12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61\",120125:\"584 499Q569 490 566 490Q558 490 552 497T546 515Q546 535 533 559Q526 574 506 593T469 621Q415 648 326 648Q293 648 287 647T275 641Q264 630 263 617Q262 609 260 492V370L275 372Q323 376 350 392T393 441Q409 473 409 506Q409 529 427 529Q437 529 442 519Q444 511 444 362Q444 212 442 206Q436 197 426 197Q409 197 409 217Q409 265 375 299Q346 328 280 335H260V206Q260 70 262 63Q265 46 276 41T326 35Q362 35 366 28Q377 17 366 3L360 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666Q12 675 24 683H573Q576 678 584 670V499ZM137 341Q137 131 136 89T130 37Q129 36 129 35H182Q233 35 233 39Q226 54 225 92T224 346L226 623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM549 603V648H495L506 641Q531 621 533 619L549 603ZM409 317V395L400 386Q390 376 375 366L357 355L373 346Q394 331 397 328L409 317\",120126:\"737 285Q749 277 749 268Q749 260 744 255T730 250Q695 250 677 217Q666 195 666 119Q666 52 664 50Q656 36 555 3Q483 -16 415 -19Q364 -19 348 -17Q226 -3 146 70T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q213 547 213 337Q213 75 341 23Q357 19 397 19Q440 19 462 22T492 30T513 45V119Q513 184 506 203Q491 237 435 250Q421 250 415 257Q404 267 415 281L421 285H737ZM250 43Q250 45 243 55T225 87T203 139T185 224T177 343V361Q184 533 250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q106 117 230 52L250 43ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565ZM655 250H517L524 241Q548 213 548 149V114V39Q549 39 562 44T592 55T615 63L630 70V134Q632 190 634 204T648 237Q655 245 655 250\",120128:\"20 666Q20 676 31 683H358Q369 676 369 666Q369 648 331 648Q288 645 282 632Q278 626 278 341Q278 57 282 50Q286 42 295 40T331 35Q369 35 369 16Q369 6 358 -1H31Q20 4 20 16Q20 35 58 35Q84 37 93 39T107 50Q113 60 113 341Q113 623 107 632Q101 645 58 648Q20 648 20 666ZM249 35Q246 40 246 41T244 54T242 83T242 139V341Q242 632 244 639L249 648H140Q146 634 147 596T149 341Q149 124 148 86T140 35H249\",120129:\"79 103Q108 103 129 83T151 38Q151 9 130 -15Q116 -34 130 -37Q133 -39 157 -39Q208 -39 219 -8L226 3V305Q226 612 224 621Q220 636 211 641T166 647Q137 647 128 654Q119 665 128 679L135 683H466Q478 677 478 666Q478 647 439 647Q399 644 393 632Q388 620 388 347Q386 69 384 59Q364 -6 316 -39T184 -77H172Q102 -77 56 -48T6 30Q6 62 26 82T79 103ZM353 354Q353 556 354 596T361 645Q362 646 362 647H253Q257 639 258 628T261 547T262 312V-4L255 -17Q248 -29 250 -29Q253 -29 258 -28T277 -20T302 -5T327 22T348 65Q350 74 353 354ZM115 36Q115 47 105 57T79 67Q73 67 67 66T52 56T44 34Q44 9 62 -8Q66 -11 71 -15T81 -22T86 -24L90 -13Q100 3 102 5Q115 22 115 36\",120130:\"22 666Q22 676 33 683H351L358 679Q368 665 358 655Q351 648 324 648Q288 645 280 637Q275 631 274 605T273 477L275 343L382 446Q473 530 492 553T512 599Q512 617 502 631T475 648Q455 651 455 666Q455 677 465 680T510 683H593H720Q732 676 732 666Q732 659 727 654T713 648Q670 648 589 581Q567 562 490 489T413 415Q413 413 554 245T711 61Q737 35 751 35Q758 35 763 29T768 15Q768 6 758 -1H624Q491 -1 486 3Q480 10 480 17Q480 25 487 30T506 35Q518 36 520 38T520 48L400 195L302 310L286 297L273 283V170Q275 65 277 57Q280 41 300 38Q302 37 324 35Q349 35 358 28Q367 17 358 3L351 -1H33Q22 4 22 16Q22 35 60 35Q101 38 106 52Q111 60 111 341T106 632Q100 645 60 648Q22 648 22 666ZM240 341V553Q240 635 246 648H138Q141 641 142 638T144 603T146 517T146 341Q146 131 145 89T139 37Q138 36 138 35H246Q240 47 240 129V341ZM595 632L615 648H535L542 637Q542 636 544 625T549 610V595L562 606Q565 608 577 618T595 632ZM524 226L386 388Q386 389 378 382T358 361Q330 338 330 333Q330 332 330 332L331 330L533 90Q558 55 558 41V35H684L671 50Q667 54 524 226\",120131:\"12 666Q12 675 24 683H333L340 679Q350 665 340 655Q333 648 309 648Q287 646 279 643T266 630Q264 623 264 346Q264 68 266 57Q274 40 284 35H340Q413 37 460 55Q514 78 553 117T602 197Q605 221 622 221Q629 221 634 215T640 201Q638 194 625 105T611 12Q611 6 600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H237Q235 41 233 48L229 61L226 339Q226 621 229 628Q230 630 231 636T233 643V648H129Q132 641 133 638T135 603T137 517T137 341ZM580 48Q580 59 583 74T586 97Q586 98 585 97T579 92T571 86Q549 64 513 43L500 35H577L580 48\",120132:\"18 666Q18 677 27 680T73 683H146Q261 683 266 679L465 215Q469 215 566 443Q663 676 668 681Q673 683 790 683H908L915 679Q924 664 915 655Q912 648 897 648Q851 639 835 606L833 346Q833 86 835 79Q838 69 849 58T873 41Q877 40 887 38T901 35Q926 35 926 16Q926 6 915 -1H604L597 3Q588 19 597 28Q600 35 615 35Q660 42 673 68L679 79V339Q679 409 679 443T679 520T679 580T677 597Q646 521 584 375T473 117T424 3Q416 -1 410 -1T401 1Q399 3 273 301L148 599L146 343Q146 86 148 79Q152 69 163 58T186 41Q190 40 200 38T215 35Q226 35 235 28Q244 17 235 3L228 -1H28Q17 4 17 17Q17 35 39 35Q84 42 97 68L104 79V639L88 641Q72 644 53 648Q34 648 26 651T18 666ZM457 166Q451 169 449 171T435 198T404 268T344 412L244 648H157L166 637Q169 633 293 346L413 66Q424 88 435 117L457 166ZM817 646Q817 648 766 648H715V72L708 57Q701 45 697 41L695 37Q695 35 757 35H819L813 46Q802 61 800 76Q797 105 797 346L799 612L804 626Q812 638 815 641L817 646ZM124 42Q119 42 119 38Q119 35 128 35Q132 35 132 36Q125 42 124 42\",120134:\"131 601Q180 652 249 676T387 701Q485 701 562 661Q628 629 671 575T731 448Q742 410 742 341T731 234Q707 140 646 81Q549 -19 389 -19Q228 -19 131 81Q57 155 37 274Q34 292 34 341Q34 392 37 410Q58 528 131 601ZM568 341Q568 613 437 659Q406 664 395 665Q329 665 286 625Q232 571 213 439Q210 408 210 341Q210 275 213 245Q232 111 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 132 568 341ZM174 341Q174 403 177 441T197 535T249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 488 69 344Q69 133 231 52Q244 45 246 45Q248 45 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 415 684 475T635 563T582 610Q578 612 565 619T546 630Q533 637 531 637Q530 637 530 636V635L531 634Q562 591 577 543Q602 471 602 341V316Q602 264 599 230T580 144T531 48L530 47V46Q530 45 531 45Q533 45 547 52T583 75T622 105Q708 195 708 341\",120138:\"54 238Q72 238 72 212Q72 174 106 121Q113 110 132 90T166 59Q221 23 264 23Q315 23 348 41Q368 50 384 79Q393 102 393 129Q393 181 356 219T221 299Q120 343 74 390T28 501Q28 561 55 610Q98 682 212 699Q214 699 231 700T261 701Q309 698 340 687T408 675Q431 678 445 690T465 702Q474 702 481 690V497L477 490Q464 481 450 490Q446 500 446 501Q446 546 386 606T260 666Q215 666 182 639T148 565Q148 528 186 496T319 428Q352 414 370 405T418 379T468 338T506 284Q528 239 528 191Q528 102 456 46T266 -10Q211 -10 176 2T110 15Q86 9 73 -1T53 -12Q44 -12 37 -1V112V182Q37 214 40 226T54 238ZM446 619Q446 648 444 648Q439 646 435 644Q425 644 415 639H404L417 624Q435 606 439 601L446 592V619ZM124 619L128 635Q126 635 108 617Q64 576 64 502Q64 489 65 479T76 449T102 414T150 376T228 335Q335 291 381 245T427 128Q427 94 419 75L415 61Q421 61 448 88Q490 127 490 190Q490 233 475 264Q456 299 430 321Q402 349 369 367T287 404T204 441Q138 481 119 526Q113 544 113 565Q113 596 124 619ZM75 43Q76 43 90 46T110 50H119L106 64L74 101Q72 101 72 72T75 43\",120139:\"33 672Q36 680 44 683H624Q632 680 635 672V490L631 483Q621 479 617 479Q611 479 606 485T600 499Q600 525 584 552Q577 567 558 588T524 617Q479 642 426 646L415 648V355Q415 62 422 52Q425 42 434 40T473 35Q500 35 509 28Q518 17 509 3L502 -1H166L160 3Q149 17 160 28Q167 35 195 35Q224 37 234 39T249 52Q253 66 253 355V648L242 646Q192 642 144 617Q129 609 110 588T84 552Q69 527 69 499Q69 490 64 484T50 478Q39 478 33 490V672ZM113 639L126 648H69V597L84 612Q93 623 113 639ZM389 35Q382 46 381 86Q380 134 380 350V648H289V350Q289 199 288 131T286 53T280 35H389ZM600 597V648H542L555 639Q575 623 584 612L600 597\",120140:\"16 666Q16 677 28 683H341L348 679Q359 665 348 654Q342 648 315 648Q270 644 266 632Q262 627 262 598T261 399Q261 372 261 325T260 260Q260 149 274 99T339 30Q355 25 393 25Q430 25 457 33T494 49T519 72Q562 115 575 205Q576 219 576 379Q576 538 575 550Q568 597 550 622T506 648Q498 648 493 654T487 667T499 683H697Q709 675 709 667T704 654T690 648Q653 648 633 597Q624 573 622 546T619 377Q617 193 613 174Q596 95 544 41Q477 -19 355 -19H344Q275 -16 226 5T153 57T120 110T106 154Q101 172 99 399Q99 618 95 632Q88 644 53 648Q16 648 16 666ZM228 639L233 648H128Q128 647 133 632Q135 621 135 412Q135 197 137 185Q148 115 181 79Q209 51 235 41Q242 36 258 31T277 25Q276 27 268 38T254 59T241 92T228 145Q226 161 226 399Q226 632 228 639ZM604 621Q606 626 619 648H577L586 634Q587 632 591 625T595 614L597 608L604 621\",120141:\"316 683Q327 676 327 666Q327 648 302 648Q272 642 258 628Q249 621 249 608Q252 589 263 556T289 485T322 406T357 325T388 256T411 205L420 185Q423 185 473 317Q547 497 547 590Q547 621 541 632T516 648Q501 648 498 654Q488 664 498 679L504 683H607H660Q695 683 707 680T719 667Q719 660 714 654T700 648Q678 648 658 628L642 614L513 301Q484 231 449 148T397 25T380 -15Q373 -20 368 -20Q361 -20 358 -15Q354 -13 287 135T149 438T67 610Q45 648 18 648Q11 648 6 653T0 666Q0 677 9 680T59 683H164H316ZM216 614Q216 620 216 622T216 628T216 633T217 635T218 638T219 640T221 644T224 648H84L96 632Q118 592 236 330L367 43L387 88L404 132L380 185Q250 468 222 568Q216 590 216 614ZM576 645Q584 628 584 597L587 568L598 597Q609 624 618 637L624 648H600Q576 648 576 645\",120142:\"785 664Q785 670 795 683H982Q994 675 994 665Q994 650 975 648Q953 643 939 619Q931 593 823 292T710 -15Q706 -19 699 -19T688 -15Q682 -6 639 107T555 328T513 437Q513 438 500 409T462 325T413 212Q315 -14 310 -17Q308 -19 302 -19T288 -15L57 619Q45 643 24 648Q5 650 5 665Q5 677 17 683H146H200Q256 683 270 681T285 666Q285 659 280 654T268 648Q253 648 239 634Q230 630 230 619Q230 598 264 481L362 192Q363 193 428 341T493 492Q493 496 473 546T446 608Q426 648 399 648Q392 648 387 653T382 667Q382 678 393 683H679Q690 670 690 665Q690 662 685 655T673 648Q653 648 633 632L622 625V610Q626 576 657 479T719 300T751 218Q754 218 779 294Q847 492 847 581Q847 648 802 648Q796 648 791 652T785 664ZM194 623Q194 630 199 648H82L90 632Q99 616 199 332L302 50Q303 50 322 94T342 141Q342 142 305 245T231 467T194 623ZM585 620Q585 634 593 648H530Q466 648 466 645Q479 632 595 323L699 54Q701 56 718 103T735 154L702 245Q585 562 585 620ZM884 572L890 587Q896 602 903 620T915 645Q915 648 893 648H868L875 634Q883 598 883 576Q883 572 884 572\",120143:\"22 666Q22 677 31 680T80 683H184H335Q346 675 346 667Q346 660 341 655Q335 648 315 648Q280 644 273 637Q273 630 300 583T356 492T386 448Q430 504 450 535T474 577T478 601Q478 620 469 634T444 648Q428 648 428 666Q428 678 436 680T488 683H559H630Q673 683 681 681T690 666Q690 648 673 648Q652 648 619 637Q571 615 517 550Q490 517 450 464T410 408Q415 399 501 273T617 106Q648 61 661 48T688 35Q705 35 705 16Q705 5 695 -1H539Q384 -1 379 3Q373 10 373 17Q373 27 380 31T408 35Q459 40 459 49Q459 59 418 129T335 259Q334 260 332 260Q328 260 273 197Q210 127 208 117Q199 104 199 82Q199 57 213 46T239 35Q247 35 252 29T257 15Q257 10 256 7T253 3T248 0L246 -1H28Q16 7 16 15T21 29T35 35Q61 35 117 88Q289 279 304 297Q307 303 255 377Q117 586 79 626Q60 648 39 648Q32 648 27 653T22 666ZM237 639V648H173Q113 647 113 646Q113 642 137 612Q186 546 302 373T453 139Q497 63 497 43Q497 39 495 35H559Q622 35 622 37Q622 38 583 94T486 233T373 399T277 552T237 639ZM553 637L566 648H504L508 637Q510 630 515 615V603L528 615Q529 616 539 625T553 637ZM170 46Q169 49 167 58T164 70V83L137 59L113 35H175Q175 38 170 46\",120144:\"16 659T16 667T28 683H295Q306 676 306 666Q306 648 284 648Q258 648 255 641Q255 634 265 615T339 479Q418 339 421 339L455 394Q489 448 523 502L557 557Q560 566 560 582Q560 637 504 648Q489 648 486 655Q475 664 486 679L493 683H693Q704 675 704 667Q704 650 684 648Q672 645 653 623Q633 604 614 576T517 426L439 301V183Q442 62 444 59Q449 35 504 35Q521 35 528 30Q538 16 528 3L521 -1H195L188 3Q178 16 188 30Q195 35 213 35Q266 35 273 59Q274 61 277 163V261L75 621Q64 638 58 643T37 648Q28 648 22 653ZM219 637V648H101Q110 634 215 446L313 270V166Q310 59 306 48L301 35H415L410 48Q404 65 404 175V290L317 443Q230 601 226 612Q219 625 219 637ZM608 630L624 648H575Q584 632 588 623L595 610L608 630\",120172:\"821 97Q822 97 824 88T827 77L793 53Q676 -25 670 -28Q669 -29 656 -27L583 123Q583 124 467 46L352 -31L341 -20Q305 18 264 47T192 77Q161 77 60 32L49 40Q37 47 38 49Q39 49 93 83T212 160T297 219Q411 312 411 452Q411 519 360 571T233 624Q180 624 157 601T133 548Q133 524 160 496T214 441T241 393Q241 356 199 321T100 256L86 249L77 256Q68 263 67 263L84 274Q101 286 118 304T135 339T109 384T56 446T29 504Q29 566 118 624Q207 686 309 686Q349 686 360 685Q405 678 439 661T491 625T520 583T534 543T537 511Q537 436 491 344L478 318L455 299Q420 272 308 179L284 160L294 158Q348 154 426 89L437 79Q513 110 579 153V175Q579 183 579 227T580 330T581 446T582 542L583 582L664 630Q681 640 703 653T734 673L744 679Q750 678 756 676L767 674L716 623V585Q716 568 712 463T708 289V250Q708 237 709 218T710 195L711 180L739 130Q768 79 771 79Q775 79 796 88T821 97\",120173:\"160 345Q160 357 144 376T109 413T73 458T57 509Q57 544 95 584Q142 631 205 657T331 684Q382 684 427 658T500 585L505 577L521 588Q537 599 562 614T616 646T679 673T738 684Q790 684 807 666T840 587Q850 552 863 532T888 508Q894 505 906 505Q917 505 930 507T953 512T963 514L964 504Q965 495 965 494T914 467T808 413T745 384H751Q782 380 802 377T854 362T904 334T937 287T951 217Q951 178 937 143T908 91Q903 86 820 34L734 -21L718 -24Q679 -31 639 -31Q561 -31 451 4T271 40Q190 40 119 -2L99 -13L91 1L84 15L86 16Q88 18 132 42T233 100T315 152Q377 199 386 233Q388 240 393 297T399 363Q399 487 353 551Q337 573 306 597T238 622Q201 622 179 602T157 557T214 476T272 396Q272 371 229 334T143 272T96 246Q95 246 85 252T74 259T95 273T138 306T160 345ZM529 443Q529 409 528 385T526 353L525 346Q526 346 649 390T773 435Q749 451 742 464T727 518Q727 519 725 532T721 548T717 562T712 577T706 589T698 601T688 608T675 614T658 616Q626 616 576 582T525 528Q525 527 526 518T528 489T529 443ZM772 57Q774 57 778 58T792 64T808 77T821 103T827 144Q827 222 784 266T660 322Q652 323 611 323H596Q577 323 535 316L523 314Q520 291 505 255L500 241L356 138L366 137Q443 131 518 110T650 72T748 54Q763 54 772 57\",120174:\"460 -32Q373 -32 305 -11T193 45T122 124T83 214T72 303Q72 395 114 476L119 486L313 592L338 568L359 580Q418 615 479 638T568 668T606 675Q607 675 608 676H610Q612 676 615 661T630 621T660 578Q673 568 694 568Q717 568 721 570H726Q724 565 722 559L717 549L706 545Q608 513 583 513Q568 517 559 522T533 546T493 603L490 609Q452 599 452 558Q452 537 469 481T486 393Q486 353 474 331T422 285T296 231L272 223L262 230L253 237Q279 246 314 274T351 338Q351 376 334 442T316 532Q316 546 319 552Q319 554 316 554Q304 554 288 547T250 523T214 466T199 371Q199 218 299 133T541 47Q571 47 585 51T652 81L712 108Q716 104 716 81L706 74Q695 68 673 54T633 29L550 -22L540 -24Q492 -32 460 -32\",120175:\"380 596Q307 596 250 582T158 546T100 493T67 433T56 373V361Q55 361 43 366L31 372V384Q31 455 69 523T173 627Q213 650 284 666T444 683H452Q629 683 735 629Q896 548 896 369Q896 263 839 163Q835 155 818 140Q746 82 662 27T563 -29Q525 -29 386 16T183 62Q147 62 127 52T63 1L48 -14L40 -4L31 5Q83 73 172 149L186 161H199Q291 161 329 181Q357 199 357 231Q357 258 301 316T245 396Q245 423 282 458T349 512T403 543L413 548L425 545L438 541Q373 491 373 462Q373 446 399 415T453 349T480 288Q480 251 433 212Q394 180 348 156L334 148L353 145Q408 134 513 105T654 76Q711 76 745 132T780 277Q780 434 676 517Q637 549 562 572T380 596\",120176:\"527 55Q574 55 619 69T691 97L717 111V85L562 -18Q520 -29 443 -29Q379 -29 325 -15T235 21T180 61T146 98Q74 186 74 307Q74 395 109 472Q113 482 123 489T190 533Q251 568 295 591L308 598L350 580L361 586Q403 612 464 636T564 673T609 686Q610 686 610 685Q612 683 616 670T627 636T646 601Q666 572 686 572H692Q713 572 726 576H728L725 565L723 554L692 544Q660 535 629 526T595 516Q585 514 574 519Q563 527 543 552T507 597T490 617Q467 604 456 579V564Q456 535 473 471T492 393L494 381L613 460L622 446Q630 433 650 411T696 371L703 365L614 312H596L580 322Q568 329 553 340T528 355T510 360Q496 358 491 354T484 345T471 326T435 297Q408 278 370 261T307 235T277 227Q273 227 266 234L256 240L267 245Q280 251 294 258T330 288T353 336Q353 373 335 444T316 530V537Q316 549 322 567Q270 554 233 499T196 370Q196 253 287 157Q392 55 527 55\",120177:\"424 522Q265 596 208 596Q193 596 180 593T150 579T116 542T89 474Q86 465 86 463L59 481L63 494Q87 578 137 627Q191 684 285 684Q334 684 406 658T538 607T621 581Q644 581 706 629L721 640Q722 640 725 630L727 620Q701 592 654 548T582 486L569 487Q533 490 485 504L468 508Q449 503 429 495T387 466T365 422Q365 373 439 299L453 310Q473 325 528 370L588 418Q614 398 642 368T668 331Q667 331 628 296L590 262L582 274Q557 311 526 311Q511 311 487 297T462 278Q462 277 492 244T551 166T581 88Q581 54 570 25T536 -27T505 -56T478 -76Q376 -146 274 -146H270Q199 -146 162 -118T124 -15Q124 12 128 30T132 96V107Q132 144 117 157Q102 169 85 169Q74 169 59 165T32 156T20 151Q20 152 19 158T17 167Q17 168 17 168T17 169T19 170T22 172T27 175T35 179Q131 230 195 230Q231 230 259 202Q270 190 270 171Q269 150 253 87T236 -16Q236 -67 261 -87T322 -107Q380 -107 428 -68Q467 -35 467 30Q467 60 447 91T383 171T316 251Q290 286 278 308T263 339T261 359Q261 384 284 418Q322 469 424 522\",120178:\"742 611Q784 611 812 631V611Q807 607 783 591T718 544T629 476L606 458Q608 458 628 457T667 453T713 443T762 423T804 388T836 335Q844 313 844 289Q844 231 814 182T746 103Q720 82 655 48T546 -18L520 -21Q456 -29 432 -29Q313 -29 223 33Q204 45 183 65T135 119T91 207T74 320Q74 428 109 480Q116 491 127 497T215 546L308 595L343 583L355 591Q387 613 433 636T488 660H489L491 659Q493 658 495 657T500 655L509 650L500 645Q479 635 460 612T441 552Q441 535 447 498T459 433T466 405L625 513L643 526Q620 530 585 546T535 586Q535 587 532 592T527 602T525 610Q525 613 577 649L630 687Q632 687 638 675T653 649T686 623T742 611ZM349 313Q349 328 327 413T305 510V516Q305 531 308 542T314 559T317 566T315 567Q297 567 270 548Q233 524 212 490T191 392Q191 337 206 288T244 207T284 156T316 128Q410 51 535 51Q632 51 675 102T718 217Q718 269 690 314T599 375Q574 381 535 381Q501 381 477 377L466 376Q469 364 469 349Q469 314 457 295T408 258Q366 236 308 219L288 213L279 220L270 227Q284 232 294 236T309 243T320 252T326 260T331 270T336 281Q349 310 349 313\",120179:\"288 139Q288 172 255 224T189 335T156 442Q156 495 242 579Q289 625 361 668Q364 671 368 673T376 678T380 681L384 683L392 676Q401 670 414 661T443 642T477 626T509 619Q543 619 618 668Q625 672 628 674T631 675Q632 673 633 663T633 651L564 595Q556 589 545 580T528 566T516 556T505 548T497 543T488 539T481 537T472 535T463 534T451 534H442Q385 534 304 581L291 589Q290 588 285 583T277 575T269 566T262 555T257 543T255 529V522Q255 507 260 487T276 446T293 409T311 376L321 359Q321 358 322 358T324 359T327 361T333 366Q386 409 481 460L503 472L543 471Q586 471 599 470Q692 459 714 430Q725 416 738 360T752 245Q752 184 742 127T725 51T703 -8Q700 -13 619 -64T518 -123Q508 -126 493 -126Q438 -126 398 -86L427 -52Q456 -17 457 -17Q460 -17 465 -16H473Q474 -21 481 -32T504 -56T539 -69Q572 -69 599 -34Q625 4 625 158Q625 264 609 311T532 378Q508 386 484 386Q455 386 419 372T360 345T337 330L346 313Q375 263 386 227Q389 215 389 202Q389 192 388 184T384 168T376 152T365 138T350 121T331 103T307 81T278 54L194 -24Q130 30 99 30Q85 30 64 20T31 1T16 -10Q15 -11 13 -7Q12 -6 11 -3Q8 4 6 8L32 35Q88 88 117 107T169 126Q177 126 182 125Q218 118 252 84L263 73Q288 113 288 139\",120180:\"500 615Q523 615 550 628T595 655T614 668L623 654L607 642Q512 569 440 534L427 527L413 529Q384 535 340 547T265 565T209 572Q173 572 145 556T101 522T60 465Q58 460 54 460T41 468L32 477L37 487Q96 599 139 640Q187 681 247 681Q275 681 283 680Q313 674 398 645T500 615ZM418 170Q418 186 410 260T401 382Q403 418 403 424L405 433L415 444Q482 515 571 571L582 578Q591 573 607 568L597 560Q522 504 522 450Q522 427 533 357T545 241V228Q545 190 536 159T508 106T478 73T446 48Q343 -25 238 -25Q179 -25 118 15L107 22L79 5Q51 -12 51 -12L38 2L55 18Q106 67 175 122L192 136Q202 130 206 123Q223 91 252 61Q263 50 266 48T278 39T297 32T320 30Q357 30 389 68Q415 102 418 170\",120181:\"65 510Q68 517 74 528T101 569T144 620T202 661T274 680Q308 680 389 628T503 576Q530 576 596 600Q615 607 616 607Q616 602 615 596V585Q605 581 576 568T531 548T485 531T418 509L400 503L358 522Q347 527 327 537T299 550T277 560T257 568T239 573T220 577T201 578H196Q181 578 169 575T135 554T88 502L83 496Q82 496 74 502T65 510ZM424 4Q424 50 395 151T365 313V320Q365 352 369 361T405 403Q431 432 465 462T521 508T547 525L549 524Q551 524 554 523T560 521L571 517L552 498Q515 461 499 430Q485 399 485 366Q485 326 512 231T539 84Q539 -14 460 -77T273 -141Q248 -141 234 -140T198 -131T160 -106T134 -59Q128 -40 124 -16T117 22T108 49T91 69T59 75T15 65L1 59Q-8 76 -7 77Q4 85 22 97T88 129T170 149Q218 149 234 125Q242 112 242 43V21Q242 -17 248 -41T274 -85T322 -105H325H330Q363 -105 396 -75Q424 -47 424 4\",120182:\"234 109Q234 144 194 245T153 404Q153 445 180 490Q232 572 325 626T517 681H524Q612 681 661 658Q683 647 699 632T717 604Q717 600 708 545L699 490L690 489Q681 488 679 488Q675 488 669 504T640 546T577 592Q520 620 446 620Q415 620 386 614T327 594T280 553T262 487Q262 468 265 447T271 413T279 384T285 362L295 371Q320 396 352 421T439 474T538 502Q577 502 596 484T627 428Q642 386 651 373T677 360H682Q698 360 727 369L724 357Q724 354 724 351T722 346V344Q559 289 539 283Q582 272 589 271L615 265L637 189Q662 109 663 108Q668 97 682 84Q698 68 722 68H730H738Q762 68 799 91L803 80L806 70Q795 59 770 40T703 -3T631 -26Q598 -26 578 -8Q548 24 536 92Q524 154 509 183T477 218T428 224Q409 224 385 220T346 212L331 207Q330 205 330 201T331 189T332 178Q332 158 325 116L305 96Q269 60 240 38Q171 -21 123 -21Q72 -21 33 18L20 32L62 74Q96 107 102 112T116 118Q120 118 122 113T131 95T150 69Q171 48 190 48Q198 48 206 51T224 69T234 109ZM519 367Q497 432 450 432Q379 432 313 333L300 314L304 299Q306 294 309 280T315 260L321 235L542 313Q530 325 519 367\",120183:\"277 226Q277 248 253 286T203 369T178 449Q178 490 212 533T284 607Q380 683 532 683Q610 683 639 660T668 583Q668 568 666 546T663 509Q663 478 683 460Q691 452 719 452L738 450Q732 437 729 437Q728 437 652 416T573 394Q554 394 541 409T527 444Q527 449 532 487T538 542Q536 584 501 606T418 628Q389 628 364 620T317 587T295 523Q295 478 333 401T372 276Q372 269 371 267Q371 264 318 206L264 149Q284 141 317 130T433 101T577 82Q619 82 652 95T701 127T728 164T742 196L744 209Q744 210 749 208T759 203T764 199T760 185T751 154T744 129Q714 42 680 13Q628 -28 566 -28Q490 -28 403 -5T249 42T153 66T106 53T70 15T47 -16Q46 -17 30 -5L39 13Q85 100 138 148L147 156L161 157Q218 165 246 179T277 226\",120184:\"134 338Q134 357 81 417T27 504Q27 516 34 530Q55 568 110 615Q190 683 305 683H314Q445 683 495 580L501 569L512 577Q608 646 681 646Q759 646 801 585L808 576L816 583Q860 619 921 650T1041 682Q1063 682 1077 675T1096 660T1112 631T1132 596Q1160 555 1188 555Q1204 555 1228 564Q1230 565 1231 562Q1231 560 1232 554V547L1215 538Q1179 521 1114 475Q1112 474 1106 470T1099 464T1093 459T1088 452T1085 441T1082 425T1081 404T1079 376T1079 339Q1079 282 1084 236T1098 160T1117 112T1138 85T1159 77Q1166 77 1180 81T1207 90L1219 94Q1220 94 1221 86T1222 76L1045 -32Q1044 -32 1004 15L964 64V167Q965 334 970 372V378L994 402Q1032 440 1057 460Q1061 463 1066 467Q1070 469 1070 470T1068 471T1060 474T1050 481Q1040 488 1021 531T996 583Q979 609 947 609Q922 609 887 592T820 537L821 524Q825 484 825 448Q825 268 768 155L759 137L589 -28L579 -20Q533 17 507 17Q475 17 449 -7L436 -18L424 2L441 20Q446 25 456 36T471 52T484 65T497 79T509 90T522 99T534 106T548 112T561 115T576 117Q602 117 639 86Q648 81 648 81Q650 82 657 94T668 112Q711 202 711 373Q711 484 677 533T600 583Q592 583 583 581T569 577T554 568T542 560T528 549T516 539L519 523Q527 485 527 461Q527 444 522 407Q506 266 447 150L437 130L217 -25L208 -15Q165 28 126 28Q89 28 62 1Q47 -14 43 -14Q42 -14 36 -8L28 0L44 17Q96 73 120 92T166 117Q182 123 204 123Q239 123 284 78L295 67Q307 72 337 102Q400 178 400 346Q400 508 325 571Q270 618 208 618Q180 618 168 614T140 594Q124 578 124 564Q124 540 182 480T240 396Q240 359 197 321Q154 285 94 252L80 245L76 248L67 257L61 262L71 268Q82 275 94 284T120 309T134 338\",120185:\"522 492Q521 492 517 502T512 513Q542 444 542 333Q542 226 503 137L498 125L396 53Q308 -8 292 -17T260 -27Q226 -27 191 -9T136 29L145 39Q162 56 192 89L230 129L235 128H241Q276 57 332 57Q358 57 391 80Q403 89 409 100T422 143T428 227Q428 329 406 408T347 530T272 594T196 615Q152 615 135 596T118 558Q118 535 146 502T203 438T232 385Q232 357 195 322T122 265T83 243Q82 242 72 249T61 258L66 262Q72 265 82 273T103 292Q125 314 125 333Q125 351 101 376T51 432T26 492Q26 549 108 614T290 679Q326 679 335 678Q353 675 370 670T400 658T425 642T445 625T463 606T477 588T487 571T495 556T500 543L504 535L523 553Q553 581 569 595T619 632T686 667T757 678Q778 678 793 675T819 664T833 651T844 633T852 617Q884 548 910 548H916Q938 548 962 556L967 542Q967 540 947 531Q909 509 883 492T847 467T838 458Q825 419 825 328Q825 234 833 191T858 121Q875 94 892 77Q898 71 907 71Q912 71 928 76T957 87T971 91L972 88Q972 84 972 81L973 73L957 63Q891 21 806 -23L794 -30L783 -14Q766 13 728 60L713 79V372L724 384Q743 406 765 427T800 460L813 471Q809 472 806 472Q783 479 766 503T741 551T715 594T672 614Q644 614 622 595Q597 576 572 550T534 508L522 492\",120186:\"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q859 223 809 147Q801 134 789 124Q595 -30 456 -30Q395 -30 289 3T147 36Q134 36 121 33T98 26T76 15T59 4T44 -8T32 -17L22 -7L12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595\",120187:\"247 398Q247 372 206 334T126 272T83 247Q82 247 72 253T61 261Q60 261 61 262T66 265Q127 306 127 343Q127 364 63 430Q42 451 38 458T33 480V490V497Q33 526 63 567Q112 632 170 660T282 688Q341 688 384 667Q454 633 482 566Q483 565 484 566T496 574Q562 623 630 653Q699 681 751 681Q778 681 797 673Q818 662 830 609Q835 580 843 564Q863 524 895 524H901Q917 524 932 528Q936 522 938 518T942 513T942 511Q873 480 836 454Q789 423 789 395Q789 362 834 298T880 200Q880 170 867 145T820 81Q733 -20 647 -20Q581 -20 499 21V9Q499 -16 502 -53T509 -116L512 -141L370 -223L357 -216Q344 -209 344 -208L348 -196Q370 -113 370 33V52L355 58Q307 76 284 76Q258 76 228 60T183 29T141 -11Q137 -7 133 -2L126 7L134 18Q181 89 210 121T278 170Q304 179 328 179Q336 179 358 177L370 175Q368 268 367 359Q367 416 363 434Q362 438 362 441Q348 527 302 574T203 621Q169 621 148 599T127 557Q127 535 187 476T247 398ZM673 315Q673 357 786 442Q786 443 776 444T750 449T727 462Q719 471 716 484V496Q715 507 715 515Q715 571 698 588Q680 611 643 611Q592 611 547 571Q534 558 511 522L499 505V139L543 123Q702 64 744 64Q770 64 781 79T793 112Q793 143 733 217T673 315\",120188:\"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q864 250 838 196T791 126Q748 93 733 82L715 69Q714 68 723 60T748 40T774 23Q806 2 832 2Q849 2 870 6T904 14L917 17Q917 12 918 6V-3L882 -22Q806 -60 778 -73L755 -83Q640 -36 596 -7L586 0L576 -4Q513 -30 457 -30Q394 -30 289 2T149 35Q119 35 93 22T52 -4T36 -17T24 -7T12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595\",120189:\"31 498Q34 541 76 586T176 659T279 688H290Q377 688 429 653T506 569L511 558L526 572Q620 663 707 682Q722 685 737 685Q781 685 804 665T830 619T838 565T854 525Q866 511 897 511Q917 511 925 513L937 515Q938 515 941 509T944 501T925 493T870 470T803 438Q735 406 735 401Q735 400 741 399T767 390T814 374L828 367L829 307Q829 233 833 202T852 144Q873 109 896 90Q906 82 928 82T976 95V92Q976 88 978 72L807 -28Q768 39 733 87L718 108V149Q718 230 714 257T693 298Q654 333 580 333Q524 333 520 329Q520 300 489 224T443 133Q441 131 333 53T223 -27Q221 -26 204 -11T169 16T136 28Q110 28 66 -8L56 -16Q52 -13 40 -1L48 7Q165 124 211 124Q232 124 287 77L298 67Q309 73 337 97Q397 150 397 347Q397 419 379 474T330 560T269 604T207 619Q177 619 152 601T126 563Q126 540 185 479T244 387Q240 336 160 289Q144 278 98 255L80 246L62 261L79 272Q96 283 113 301T130 337Q130 353 115 373T81 410T47 451T31 498ZM524 358Q537 358 657 405T777 457Q777 459 768 459Q749 462 738 474T723 499T714 539Q706 585 697 599Q681 618 657 618Q632 618 597 595T532 515L525 502L524 441Q524 375 523 369Q523 358 524 358\",120190:\"457 -31Q356 -31 272 6T135 120T82 304Q82 372 106 430T170 527T241 588T305 626Q341 643 386 657T460 678T495 685T554 660T674 609T778 584Q800 584 818 591T848 610T866 633T878 651T883 659L893 649L901 639Q879 574 803 532T666 490Q661 490 657 490T650 491T641 492T633 495T622 500T610 505T595 513T577 522T554 533T527 547Q436 594 415 602Q393 608 374 608Q303 608 253 545T202 386Q202 229 307 135T568 41Q674 41 748 85T822 198Q822 244 779 283T639 322Q595 322 499 303T383 283Q358 283 335 290T291 318T270 374Q270 418 313 460T424 510H431L435 505L440 500Q425 496 403 475T380 427Q380 382 431 373Q437 372 475 372Q543 372 626 388T742 404Q831 404 868 362T905 260Q905 182 831 108Q692 -31 457 -31\",120191:\"666 641Q737 641 794 686L802 662Q790 648 734 596L677 541L664 538Q630 528 583 528Q540 528 482 537L461 541Q402 512 402 456Q402 427 439 387T512 311T549 253Q549 220 455 139L440 126Q541 75 586 75Q600 75 619 80T654 94T685 110T709 124T719 130Q722 125 725 119L730 108Q700 72 568 -18Q551 -30 542 -30Q495 -30 404 6T270 42H263Q213 42 142 -11L131 -19L129 -8Q126 1 126 4Q218 84 301 126L316 134H406L413 142Q436 165 436 189Q436 202 421 221T364 281Q336 307 318 328T296 356T283 381L290 394Q338 478 410 540Q419 549 417 549Q415 550 369 558T268 575T195 584Q153 584 127 567T100 523Q100 499 116 479T151 447T170 433Q170 429 171 428Q171 427 131 394T88 359Q82 363 73 370T47 403T31 457Q31 513 79 565T197 648T332 679Q369 679 490 660T666 641\",120192:\"273 244Q273 281 244 331T186 428T155 502Q155 524 165 536Q239 634 333 688Q338 684 345 680L356 672L344 664Q310 642 295 624T280 582Q280 550 303 505T348 407T371 300Q371 270 362 248L247 123L358 92Q452 64 484 64Q507 64 523 72Q553 87 573 109Q583 121 586 146T593 283Q594 303 594 344Q594 401 591 461T584 558L581 595Q598 600 623 611T672 634T719 659T754 678L768 686Q770 686 784 673L782 670Q781 668 777 664T768 655Q747 635 738 616T721 535T714 359Q714 205 723 176Q727 164 744 133T771 89Q780 75 804 75Q814 75 853 87L867 92L871 73L671 -39L654 -10Q636 20 619 50T600 83Q600 84 589 75T539 34Q478 -16 475 -19Q469 -22 449 -28T414 -34Q410 -34 394 -32Q356 -28 282 -2L237 15Q169 38 126 38Q106 38 85 27T51 4T37 -8T27 -1T18 8Q18 10 70 63T124 116Q154 123 176 131T223 154T260 191T273 244\",120193:\"133 343Q133 360 79 416T25 496Q25 523 58 563T118 624Q197 685 293 685Q331 685 339 684Q453 665 489 558L493 546Q521 570 553 596T640 653T725 684Q753 684 783 672T844 641T889 618Q895 616 912 616Q924 616 936 617T956 620T965 622T966 612V604L952 595Q924 576 895 549Q864 517 856 496T847 448V434Q847 395 848 388L859 323Q874 241 874 212Q874 142 830 96Q796 62 724 14Q661 -29 603 -29Q555 -29 421 28T242 86Q182 86 110 31Q105 28 102 26T99 25Q88 36 88 42Q95 54 222 142Q252 163 262 165Q319 183 344 218Q378 266 378 377Q378 444 362 494T319 571T266 610T212 623Q181 623 156 603T131 562Q131 539 154 512T206 458T243 416Q246 409 246 399Q246 387 242 377T225 351T178 311T94 259L79 251Q72 256 68 261T62 268L61 270L70 277Q131 318 133 343ZM822 526Q778 531 719 564T628 597Q611 597 579 574Q543 543 513 506L505 495L506 473Q506 469 506 461T507 449Q507 348 467 271L462 261L404 218L348 174Q349 173 356 173Q384 169 450 144L546 105Q665 56 708 56Q737 56 746 72T756 118Q756 129 755 135L741 219Q725 314 725 334V344Q725 416 736 431Q748 450 815 510L832 526H822\",120194:\"133 317T133 338T80 413T26 496Q26 532 83 591Q100 608 111 616T151 644T219 672T304 682Q381 682 434 646T506 564L510 557Q513 557 534 573L677 665L707 683L790 561L803 572Q933 682 1001 682Q1037 682 1098 650T1193 616Q1208 616 1222 619L1235 622Q1239 622 1239 616Q1239 611 1240 609Q1240 608 1206 577T1138 503T1104 430Q1104 409 1123 330T1142 208Q1142 183 1136 147Q1127 118 1117 106Q1114 103 1031 48T935 -14Q930 -18 908 -22T862 -27Q826 -27 759 -6T647 26Q597 38 578 38Q573 38 561 33T533 20T505 4T480 -10L469 -16L452 -26L439 -28Q423 -30 411 -30Q358 -30 279 7T169 45Q125 45 58 -5L47 -14L41 -4L35 8Q35 11 56 29T113 75T181 125L200 139H217Q279 143 320 180T377 270T394 393Q394 453 378 498T334 568T277 605T213 617Q177 617 155 607Q140 600 130 587T119 560Q119 545 137 522T177 479T217 434T236 393Q236 324 98 251L89 246L76 253L63 261Q91 275 112 296ZM1088 526Q1066 526 1004 556T909 586Q863 586 816 539L802 526L804 514Q814 461 814 411Q814 319 781 238Q772 214 760 198T730 165T702 136L715 133Q759 122 848 90T973 57Q1003 57 1017 80Q1022 93 1022 116Q1022 152 1003 241T983 377V391Q983 405 985 409T1002 429Q1019 450 1045 475T1090 514L1107 528Q1104 527 1102 527T1096 527T1088 526ZM699 358Q699 391 696 419T688 467T675 503T660 530T642 550T626 563T608 574T593 582Q581 575 559 554T524 512Q523 510 523 477Q523 315 444 218L435 207L368 169Q301 132 301 131Q307 128 315 125L377 99Q476 57 515 57Q534 57 608 94L627 102L636 111Q699 187 699 358\",120195:\"273 679Q354 674 408 633T477 525L484 533Q496 548 524 574T571 615Q594 633 625 649T675 673T699 681Q724 632 747 607Q754 601 756 599T765 594T777 591T794 590Q818 590 834 594V585L835 577L704 513L693 518Q657 534 631 560T597 599Q596 601 581 584Q495 490 489 379V366H562L681 369Q682 369 679 366T668 355T651 341L620 314H485V295Q490 190 543 125T686 60Q720 60 789 88L801 93V89Q798 83 798 66Q781 59 685 -10L665 -25L634 -30Q596 -35 594 -35Q570 -35 536 -23T477 19Q461 37 445 67T418 118L409 138Q401 131 388 120T340 79T273 28T206 -12T151 -31Q129 -31 90 -12T32 22L113 101Q114 101 120 96T136 84T160 69T189 56T221 51Q256 51 305 90Q376 149 376 301V315H293Q276 315 251 315T210 314T190 313L168 312Q168 313 200 340L231 368L238 367Q275 367 311 366H378V387Q376 470 355 512T291 572Q274 579 252 579Q223 579 197 568T156 544T131 519T117 508Q112 512 108 518L99 527L117 545Q177 604 255 665L273 679\",120196:\"34 496Q34 518 53 549T107 610T195 661T310 682Q357 682 398 663T460 611Q467 600 475 583T489 554T495 542Q495 544 531 570T617 629T700 676L724 688Q742 670 756 657T784 635T806 621T830 606T856 592Q878 416 878 340Q878 154 805 -3L798 -20L779 -40Q706 -113 613 -163T421 -214Q359 -214 317 -196T256 -160L306 -63L313 -64L320 -66L326 -79Q337 -104 349 -120T392 -151T470 -166Q576 -166 644 -101Q750 7 750 292Q750 426 721 495T617 565H611Q563 565 513 509L506 501L508 493Q508 490 509 475T510 445Q510 319 458 236L451 225L436 216Q406 198 365 169T318 134L332 127Q336 126 397 103T489 80H493Q527 80 593 129L604 137L607 127Q610 119 610 116Q610 114 592 95T543 46T484 -4Q450 -27 446 -27Q441 -27 402 -18Q365 -9 290 20T188 50Q135 50 64 -7L52 -17L43 -7L34 2L51 19Q118 87 177 132L192 143H215Q259 145 289 155T335 184T355 214T366 245Q382 306 382 388Q382 426 381 436Q368 520 318 570T214 621Q184 621 165 608T142 583T137 562Q137 541 163 508L201 469Q245 425 251 408Q253 403 253 398Q253 383 240 366T212 335T161 295Q128 271 99 253L89 247L77 256L65 266L76 273Q125 301 134 329Q136 334 136 342Q136 357 124 372T88 410T49 455Q34 479 34 496\",120197:\"278 601Q242 601 212 591T167 570T121 533Q114 528 111 525L93 550Q223 661 244 667Q299 677 356 677Q415 677 456 666T515 634T541 596T549 555Q549 513 529 478T480 421T424 388T377 372Q365 370 365 367Q365 365 389 365T450 358T523 337T588 282T623 183Q624 177 624 161Q624 20 524 -60Q415 -148 285 -148Q242 -148 213 -139Q181 -131 159 -109Q136 -87 127 -56T114 6T104 49Q94 69 57 69Q38 69 13 58L1 53Q1 55 0 59T-3 68T-4 76Q78 130 138 142Q150 144 162 144Q213 144 227 120T242 31Q242 -30 263 -66T345 -102Q397 -102 444 -52T491 107Q491 172 471 211T428 265Q392 288 306 288Q269 288 233 284L218 282Q208 289 208 291L229 324L251 359Q250 360 248 360Q239 360 248 371L256 381H273Q344 385 378 409T413 495Q413 537 384 569T278 601\",120198:\"80 129V151Q80 241 99 363Q99 367 111 372T172 401T285 465L297 472Q340 455 405 443L423 440L455 453Q486 467 489 467L497 461L494 451Q480 390 480 292V283Q480 207 483 155L484 143L535 80L558 90L582 99Q586 95 586 83Q586 81 513 25L443 -29Q410 16 386 40L371 55V61Q371 63 371 67T370 74V80L278 25Q186 -29 184 -31Q182 -32 160 -12T112 35T80 75V129ZM359 366Q334 366 300 371T243 382L221 388Q218 388 212 375T200 323T194 228Q194 191 197 152L198 139L217 120Q245 92 269 74L279 66L304 78Q338 95 349 100L369 110V152Q368 164 368 210T367 275Q367 358 366 361V366H359\",120199:\"99 398Q99 610 86 662Q86 665 95 669T106 674L108 669Q109 664 112 654T119 635Q122 626 125 616T130 601L131 596Q214 649 273 678Q295 690 298 690Q299 690 304 688T313 682L317 679Q275 653 240 612Q210 569 210 469V459Q210 450 210 432T211 406L212 378L285 425Q301 435 321 447T350 466L360 472Q360 473 361 473T368 471T401 456T465 429L501 414V408Q504 386 504 309Q504 255 500 203T491 125T485 97Q485 95 445 74T343 23T237 -24L214 -32Q197 -22 165 3T109 49T87 73Q99 169 99 398ZM386 251Q386 320 380 347V350L305 374L282 382L214 348L213 274Q213 184 214 165V131L230 119Q288 76 349 54Q386 137 386 251\",120200:\"227 393Q215 393 210 351T205 269Q205 161 213 153Q220 145 244 125T290 88L312 72L365 92Q414 113 418 113V93L365 60Q255 -9 221 -26L211 -18Q158 21 91 88L90 107Q87 167 87 225Q87 267 90 302T96 351T100 366L295 473L311 470Q340 464 368 454T410 437T424 429L347 334L342 333H337L325 342Q299 363 271 378T228 393H227\",120201:\"88 117Q88 177 91 231T97 310T102 341Q102 343 118 357T168 397T239 447L257 459L268 454L278 449Q242 416 238 412L219 394Q219 391 216 378T211 349T206 307T203 249Q203 211 206 166L208 148Q224 132 261 108T333 70Q341 66 342 67T350 79Q393 157 393 302Q393 368 388 406V411L371 424Q199 558 101 558Q69 558 28 545L18 542L8 549L-1 557L24 569Q61 587 147 621L177 632Q179 631 194 627T216 621T240 613T269 602T302 589T340 571T382 549T431 522T484 488Q504 475 504 472Q511 449 511 365Q511 248 474 129L468 108L451 96Q427 77 347 28T254 -28Q235 -20 174 21T89 86L88 117\",120202:\"309 69Q391 98 416 108Q418 106 422 100T425 92Q419 86 326 30T229 -27Q228 -27 207 -13T154 27T97 76L85 87L84 106Q81 152 81 194Q81 295 93 359L95 369L286 471L313 449Q376 397 414 372L428 362Q428 360 375 318L188 181V170Q188 156 189 153V148L203 138Q228 119 266 94T309 69ZM209 389Q208 388 204 366T194 307T187 244Q187 225 188 225T201 233L245 261Q283 284 291 291Q324 313 324 316L296 334Q280 343 259 357T224 380L210 390Q209 390 209 389\",120203:\"128 400Q127 401 121 422T108 478T99 540V555L111 569Q135 597 165 626T214 671T235 687L249 678Q263 668 282 659T315 650Q335 650 362 666L372 654L286 569H271Q205 576 173 586V583Q173 558 208 492T252 401Q253 399 310 399T367 398L332 355H254V311Q251 160 235 16Q230 -28 226 -36Q225 -38 221 -45Q171 -140 121 -211L113 -222H104Q94 -222 94 -220Q94 -215 105 -187L121 -145Q139 -80 139 35V93Q139 222 135 314L134 354Q134 355 84 355H35L84 399H106Q128 399 128 400\",120204:\"92 71Q92 74 91 88T88 128T86 183Q86 230 91 275T102 342T109 366Q115 372 207 422T305 472Q407 426 431 426Q435 426 476 445L519 465L525 463L532 461Q497 392 497 268Q496 255 496 233Q496 179 516 92T539 -10L541 -22L526 -38Q441 -126 355 -194L339 -206L327 -207Q324 -207 319 -207T310 -208Q242 -208 171 -179T73 -131L56 -141Q40 -150 38 -150Q17 -140 17 -137Q17 -136 18 -136T98 -79L176 -23Q174 -21 134 24T92 71ZM226 393Q224 393 221 372T214 312T210 235Q210 182 214 144L215 132L230 118Q281 70 301 66Q304 66 331 80T373 105L384 112L383 165Q383 224 387 309Q387 314 387 319T387 329T388 336T388 341V343Q388 344 381 344T339 354T249 384Q246 385 243 386T236 389T231 391T228 392L226 393ZM414 -80Q414 -64 411 -43T403 -1T394 37T386 66T382 79Q381 79 286 15T189 -52Q312 -125 365 -125Q397 -125 405 -115T414 -80\",120205:\"95 661Q95 662 103 667T113 672L126 634L137 596L147 602Q235 656 275 677L292 687L303 680Q305 679 307 677T312 674L313 672L310 670Q307 669 301 667T289 660T274 649T259 634Q250 622 244 611T233 585T226 560T222 528T221 497T220 456T219 413V377L232 384Q244 391 271 409T339 455L362 471L383 461Q425 440 491 415L504 410V406Q507 399 507 269Q507 76 486 -21Q485 -30 483 -33T461 -57Q382 -139 299 -207L281 -197L263 -186L266 -185Q268 -184 280 -177T312 -155Q344 -130 353 -116Q394 -59 394 117Q394 162 391 216T386 301T382 335Q382 338 365 346T323 364T281 376L250 362Q220 347 219 347Q213 336 213 232Q213 177 217 144L218 128L224 119Q244 92 263 71L272 60Q206 21 157 -24Q156 -24 151 -16T132 11T98 52L89 62L91 103Q104 289 104 436Q104 471 103 506T101 568T99 616T96 649L95 661\",120206:\"73 613L164 686L184 666Q200 650 214 637T235 620T242 614T203 577T162 540Q158 540 122 570T73 613ZM92 58Q92 63 94 83T98 142T101 234Q101 318 97 358V366L59 387L40 379L21 371Q20 371 12 376T3 382L38 406Q78 431 125 466L138 477Q149 468 186 444L219 422V389Q215 324 215 247Q215 136 222 123Q226 113 238 98T258 83Q263 83 292 94L322 104Q322 103 324 97T327 89Q327 88 317 82T272 52T190 -7Q166 -25 164 -25L112 35Q92 55 92 58\",120207:\"74 611L155 682Q172 666 186 655T208 636L235 614Q227 606 191 574L154 540L135 556Q101 582 84 601L74 611ZM10 377L144 477Q145 476 184 453T229 428L233 425V416Q238 346 238 252Q238 93 215 -16L213 -30L185 -57Q29 -203 19 -203Q17 -203 -19 -189L-9 -183Q52 -146 78 -116T114 -37Q120 31 120 192V237Q120 327 113 351T72 380L53 372Q34 362 32 364L10 377\",120208:\"106 72Q110 105 111 193T114 294V308H74L34 309L83 346H115V430Q114 591 106 652Q105 662 107 665T114 668T123 672Q125 672 139 635L152 597L154 598Q156 600 160 602T167 607Q193 625 226 644T279 672T302 682L312 676L321 670L312 665Q281 649 263 626T241 587T233 547Q232 541 231 530T230 510T230 501Q231 501 265 522T334 564T369 583L380 570Q428 509 428 481Q428 475 427 470T423 459T416 448T404 434T389 418T369 397T344 371L321 347L365 346H409L372 308H227V294Q227 272 230 208T234 138Q234 136 256 119T302 84L324 68L372 88Q421 108 422 108T432 90L421 83Q373 53 270 -5L234 -25L204 -1Q172 25 124 60L106 72ZM336 434Q336 452 327 472T308 503T297 514Q296 514 290 510T275 499T264 490Q230 458 230 358V346H247Q268 346 276 350T302 372Q328 398 335 423Q335 424 335 428T336 434\",120209:\"111 275Q111 406 108 518T104 650V657Q105 657 109 660T117 665T122 666L133 629L144 594L161 606Q218 642 272 670L294 681Q295 681 300 677T306 672L302 669Q298 666 292 662T278 651T263 637T251 621Q232 587 227 530T222 343Q222 226 230 125L231 112L244 98L258 83Q271 87 285 92L312 102V84Q297 72 231 24T163 -23L100 55Q110 141 111 275\",120210:\"115 203Q115 257 114 291T112 338T111 355Q111 357 93 370L75 384L54 375Q32 366 31 365Q27 365 16 378Q25 383 89 430L152 476Q175 453 228 420Q229 420 229 418T229 410T227 394L225 369Q279 400 315 425T363 461T376 471Q480 424 514 416V412Q514 411 514 404T513 392L511 376L520 382Q529 387 548 399T584 422Q599 432 618 444T648 463L657 469H658Q661 469 681 461T735 440T796 420Q803 418 803 416Q801 414 798 390T791 325T788 247Q788 220 790 172T794 123Q799 115 814 97T835 78H838Q841 78 867 89L895 101Q896 101 896 100T897 92T900 78L873 62Q810 23 761 -12L736 -30Q735 -30 729 -22T707 7T671 48L661 59Q674 93 674 207V219Q674 341 670 344Q655 353 591 372L576 376L544 364Q511 351 510 351Q507 349 507 224V132L535 95Q541 87 548 78T560 63L563 58Q563 57 504 15T444 -28L385 53L387 67Q396 114 396 206Q396 289 393 334Q393 346 390 348Q369 358 306 373Q301 373 265 361L228 349V335Q227 322 227 284Q227 206 231 157Q231 151 231 144T232 133V129Q232 125 259 90Q286 56 286 53Q287 53 284 51T273 43T258 31L173 -31L166 -20Q160 -11 145 7T119 38T108 59Q108 62 110 81T113 133T115 203\",120211:\"608 88Q572 65 535 37T477 -8T455 -25Q432 7 389 53L375 68L378 82Q386 160 386 195V221Q386 284 385 307L384 344Q352 359 306 373L286 379L213 353V273Q214 229 214 161V129L275 62L163 -28L150 -14Q136 0 121 16T91 44Q86 48 86 50Q95 83 96 148Q96 224 89 340L88 366L79 374Q69 384 67 385L64 388L55 383Q52 382 44 378T33 373L21 367L13 374Q5 379 5 381Q5 384 69 428L133 473Q135 473 147 464T179 443T215 424L214 400V376Q271 404 342 457L363 472Q363 473 364 473Q366 473 375 469T418 449T502 414L512 411V407Q502 330 502 217V197V132L523 109Q527 104 533 97T543 87T547 83L550 80L578 92Q603 103 604 103Q606 103 608 88\",120212:\"107 102Q107 178 112 242T123 334T129 362Q129 363 140 368T199 400T315 469L336 482L346 476Q409 439 498 414L514 410L515 389Q515 208 502 141Q494 101 491 94Q490 89 478 81Q430 51 375 23T288 -20T254 -34Q250 -34 200 -1T119 56L108 65L107 76V102ZM389 355Q367 358 346 363T309 372T282 381T264 388L257 390H256Q254 390 249 381T238 348T227 293Q226 280 226 237Q226 183 231 146L232 131L244 122Q285 91 323 74T374 57H377L380 68Q405 154 405 267Q405 315 401 349V354L389 355\",120213:\"66 435Q66 445 117 501T173 557Q174 557 183 555T193 551Q174 526 174 509Q174 496 190 472T233 428V386L377 482L399 471Q450 445 509 425Q519 421 519 420L518 419Q518 418 518 416T517 410Q517 405 518 381T519 335Q519 222 501 137Q492 84 489 84L473 75Q457 66 423 44T354 -6L338 -19L329 -13Q320 -8 313 -4T297 4T284 10T270 14T258 17T245 20T233 22V12L241 -161L214 -172Q187 -184 160 -195T131 -207Q127 -207 112 -202L113 -188Q113 -182 115 -77T118 31Q118 32 109 32Q63 27 23 0L10 -9Q5 -4 -1 8Q1 13 52 57T114 101H115L117 123Q117 141 117 230V359L110 367Q85 394 71 421Q66 433 66 435ZM384 83Q386 83 389 110T396 180T400 254Q400 294 395 339L394 349L379 355Q308 383 294 383Q290 383 263 372L234 360L233 245V130Q270 125 305 113T361 92T384 83\",120214:\"362 -196Q375 -92 375 47V78L282 24Q189 -29 188 -30Q187 -30 139 21T90 75Q87 84 87 158Q88 206 94 259T107 342L113 372L308 478L322 473Q374 452 421 444L433 442L503 485Q515 479 515 477Q485 378 485 56Q485 -100 494 -164V-171L381 -211L371 -207L362 -202V-196ZM280 72Q301 77 323 86T358 101T372 110Q372 268 377 346L378 358H374Q368 360 358 360T323 365T257 380L234 386Q231 386 229 379Q215 353 211 310T207 180Q207 152 208 150Q210 142 235 114T280 72\",120215:\"23 367Q21 370 18 374T14 380L13 382L151 472L236 411L238 381L290 426Q298 432 307 439T322 452T333 461T342 467L344 469Q382 410 404 399Q410 397 416 397Q423 397 432 399T446 403L451 405Q453 405 453 399V393Q430 374 404 356T364 328T350 318L349 317Q321 320 276 356Q257 371 256 371Q253 374 249 366T242 351Q232 321 232 236Q232 214 232 205T232 182T233 162T235 148T238 137T242 129T249 120T257 114T268 105T281 95Q313 70 314 70L358 85Q377 92 389 96T402 100V90L403 80L229 -26L221 -18Q195 6 166 29T121 63T105 76T106 82T110 97T114 121T117 158T119 208Q119 269 114 329L113 341L103 350Q90 362 67 380L45 374L23 367\",120216:\"189 331Q190 304 196 282T207 252T214 244Q239 244 348 292L371 302L382 297Q398 290 415 279T433 265Q442 238 442 166Q442 103 423 45Q416 42 380 29T310 3T244 -26L227 -34Q139 40 73 40Q61 40 48 37T24 30T6 22T-8 14L-13 11Q-14 11 -18 18T-23 26T38 75T102 125Q107 128 146 131H153Q192 131 296 56Q318 40 318 43Q323 48 323 114Q323 157 321 177L319 194Q308 208 291 216T261 225Q239 225 160 185L123 167Q85 205 79 227Q78 230 78 304V377L171 428Q264 479 265 478Q268 478 287 465T334 440T384 427Q423 427 475 463L478 453Q481 446 481 442Q481 439 410 391L339 342H331Q309 345 277 361T222 391T198 406T195 399T191 372T189 331\",120217:\"328 69Q401 102 403 102Q404 102 405 94T406 84Q406 83 318 28L230 -27Q223 -21 206 -5T171 25T132 54L124 60V71Q129 154 129 297V359H43L44 363Q44 365 44 367L45 369L48 372Q51 374 57 378T68 387L90 405H129V553L285 648Q304 641 306 640L260 598V592Q259 589 255 505T249 413V405H353V402Q353 399 328 379L303 360H245V319Q245 150 253 125Q257 115 276 101T311 78T328 69\",120218:\"444 -31Q444 -29 384 66Q382 66 364 58T309 30T231 -17Q214 -29 212 -29L197 -20Q172 -4 140 11T88 34L68 42Q68 43 73 49T85 67T100 98T113 149T118 221Q118 272 105 332L100 356L58 383L23 365L9 379L76 425Q141 472 144 472Q144 471 183 443L221 414V404Q224 365 224 275V253Q224 159 196 113Q191 104 193 104Q203 104 285 72L308 62L374 89L375 106Q375 266 373 340Q373 364 371 396V424L430 445L491 467Q493 467 499 463T505 457Q505 456 503 442Q488 335 488 187V158L529 81L534 80Q541 80 568 90L598 101Q605 94 602 87L524 27Q445 -32 444 -31\",120219:\"95 67Q104 80 104 193Q104 261 100 321L98 355L91 363Q56 402 56 421Q56 441 82 472T132 524T159 546Q174 542 175 542Q159 520 159 501Q159 481 205 432L221 415L220 401Q219 394 219 387L288 429Q309 441 325 451T347 465T358 472T365 476L504 415V409Q504 408 505 374T507 318Q507 155 474 91L469 80L343 26Q314 14 281 0T232 -20L216 -27L202 -15Q192 -5 152 28Q141 35 126 45T103 60T95 67ZM386 349Q302 389 287 389Q271 383 253 375L220 361V136Q226 120 256 100T312 68T342 56Q355 56 360 68Q389 134 389 258Q389 310 386 341V349\",120220:\"90 58T90 59T92 64T97 78T102 105T107 150T109 218Q109 290 103 350V356L83 377Q55 407 55 425Q55 445 138 528Q158 549 162 549L164 548Q165 548 167 548T170 547L175 546L172 540Q168 533 165 523T161 502Q161 479 216 430L229 419V382Q232 382 366 471Q407 445 500 408L511 404V387L512 370L595 420Q678 469 679 469L693 462Q756 431 795 417L815 409L814 380Q812 187 782 96Q774 71 766 62T744 48T684 25T577 -23L557 -32L546 -26Q536 -19 519 -10T481 10T436 31T393 47Q384 50 380 50Q380 52 381 58T384 77T387 104Q391 174 391 256V292L390 333L377 340Q350 357 304 373L294 376L227 355V348Q224 322 224 243Q228 117 232 112L235 108Q238 103 245 95T257 80L281 50Q281 49 227 10T172 -29L159 -13Q133 19 116 36T94 56ZM652 64Q658 64 667 84T685 162T697 303V336L686 341Q653 356 619 367L591 376Q590 376 553 361T514 344T512 324T510 275T508 221Q508 167 510 152T521 126Q537 112 590 88T652 64\",120221:\"8 -90Q8 -68 13 -63Q13 -56 53 -8T120 63L128 71L129 85Q133 120 134 182Q134 308 131 331T106 365Q100 367 97 369L75 381L35 365L20 377Q20 378 47 397T110 440T161 471L253 413V396Q253 378 254 378L309 422Q364 466 365 466Q365 467 366 466T370 461T376 454Q403 419 426 396L441 380L438 377Q438 376 433 372T420 359T404 344L372 314Q351 320 338 327T310 344T277 364Q261 364 252 316Q251 306 251 235Q251 136 255 129Q257 127 258 124T268 113T298 92Q334 68 335 68Q340 70 349 73T377 84T408 95T421 99Q422 99 422 90L423 82L334 26Q246 -28 243 -28L200 8Q156 43 148 43Q144 43 130 36T99 9T83 -36Q83 -67 121 -89T198 -118L237 -124V-129L238 -133L193 -160Q183 -166 171 -173T152 -184L146 -188Q140 -187 131 -185T98 -173T56 -154T23 -127T8 -90\",120222:\"280 53Q272 47 246 27T199 -10T176 -27L167 -18Q137 17 107 44L90 60L93 71Q108 130 109 290V331Q109 339 109 344T108 353T107 359T105 364T102 369T97 374T91 381Q60 412 60 432Q60 448 86 479T138 534L164 557Q168 553 180 553Q163 532 163 511Q165 491 186 468Q206 443 231 423V404L232 385L371 477L389 468Q439 441 498 418L512 412V386Q512 360 507 190T500 14Q488 -26 445 -67Q401 -111 355 -148T282 -203T249 -221Q247 -220 230 -210T213 -199T229 -191T269 -172T306 -151Q361 -120 379 14Q391 92 391 182Q391 218 386 305Q384 339 380 341Q363 353 330 366T288 379Q282 379 258 368L230 356V181V141Q230 127 232 120T236 108T251 89T275 59L280 53\",120223:\"153 371Q141 371 126 365T100 354T78 340L65 331L57 338L50 346L62 356Q133 419 222 471Q274 453 306 422T338 366Q338 356 329 346T283 301L243 264L262 257Q298 246 361 214Q378 154 378 73Q378 33 371 -9T356 -74T345 -104Q340 -106 267 -160L191 -214H177Q60 -214 13 -150Q-7 -122 -7 -115Q-7 -112 19 -77T106 25T241 149Q241 152 227 158T181 173T109 185V190L108 194L158 229Q212 267 223 278T234 306Q234 329 208 350T153 371ZM258 1Q258 42 257 68T254 105T252 118Q235 105 210 85T144 22T102 -45Q102 -79 146 -106T234 -133H238Q248 -128 254 -80Q258 -58 258 1\",120224:\"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606\",120225:\"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190\",120226:\"59 347Q59 440 100 521T218 654T392 705Q473 705 550 680Q577 670 577 667Q576 666 572 642T564 595T559 571Q515 601 479 613T392 626Q300 626 232 549T164 347Q164 231 229 150T397 68Q453 68 489 80T568 120L581 129L582 110Q584 91 585 71T587 46Q580 40 566 31T502 5T396 -11Q296 -11 218 41T99 174T59 347\",120227:\"88 0V694H237H258H316Q383 694 425 686T511 648Q578 604 622 525T666 343Q666 190 564 86Q494 18 400 3Q387 1 237 0H88ZM565 341Q565 409 546 463T495 550T429 600T359 621Q348 623 267 623H189V71H267Q272 71 286 71T310 70Q461 70 527 184Q565 251 565 341\",120228:\"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86\",120229:\"86 0V691H526V611H358L190 612V384H485V308H190V0H86\",120230:\"59 346Q59 499 157 601T384 704Q436 704 466 700T541 679Q551 674 560 670T575 664T583 660T588 658T590 656Q590 652 582 605T573 557L564 564Q489 626 392 626Q301 626 233 549T164 347T233 145T392 68Q441 68 506 84V223H388V299H599V38L588 33Q494 -11 393 -11Q296 -11 219 40T100 172T59 346\",120231:\"86 0V694H190V399H517V694H621V0H517V323H190V0H86\",120232:\"87 0V694H191V0H87\",120233:\"181 53Q200 53 215 56T241 66T259 79T272 95T280 109T285 122L287 129V694H388V415V229Q388 135 385 112T369 63Q364 51 355 39T328 12T280 -12T212 -22Q172 -22 130 -12T66 8T43 20L46 42Q50 65 54 88L58 110Q58 111 65 104Q107 53 181 53\",120234:\"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88\",120235:\"87 0V694H191V79L297 80H451L499 81V0H87\",120236:\"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92\",120237:\"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88\",120238:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147\",120239:\"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485\",120240:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 284 665 231T629 143T587 85T551 48L536 35L648 -120L652 -125H531L452 -8L440 -12Q407 -22 369 -22Q239 -22 147 85T55 345ZM579 345Q579 473 517 555T369 637Q279 637 218 554T156 345Q156 223 215 141T368 58Q376 58 382 58T392 58T397 59T401 60T403 61H404Q404 63 360 128T315 194H421L453 150Q485 105 486 105Q490 108 496 113T517 138T545 182T567 247T579 334V345\",120241:\"88 0V694H227H259H302Q365 694 399 689T474 663Q528 637 558 595T589 504Q589 482 584 462T569 426T547 396T522 372T495 353T470 338T449 328T434 322L429 320L440 300Q452 280 477 238T523 160L617 1L565 0Q513 0 512 1Q512 2 424 156L337 309H189V0H88ZM492 504Q492 600 367 620Q354 622 271 623H189V385H271Q363 386 388 392Q432 402 462 430T492 504\",120242:\"55 514Q55 589 115 652T283 716Q315 716 345 711T396 699T432 685T457 672T467 667Q467 666 459 618T449 568Q383 634 282 634Q214 634 182 600T150 525Q150 507 155 492T172 465T194 446T222 432T247 423T272 416T289 412Q353 396 378 384Q432 358 466 307T500 194Q500 110 438 44T272 -22Q215 -22 159 -5T73 28T44 50Q45 51 49 75T57 122T62 146L65 143Q68 140 74 136T88 125T107 111T131 98T160 85T194 74T232 66T274 63H286Q327 63 366 96T406 182Q406 245 352 280Q329 296 265 310T173 339Q124 363 90 409T55 514\",120243:\"36 608V688H644V608H518L392 609V0H288V609L162 608H36\",120244:\"87 450V694H191V449Q192 203 193 194Q200 148 220 117T266 72T311 54T347 49Q404 49 446 84T501 178Q505 195 505 218T507 449V694H600V450Q600 414 600 356Q599 198 595 181Q594 178 594 177Q575 89 505 34T345 -22Q258 -22 184 34T89 196Q88 205 87 450\",120245:\"14 692Q14 694 68 694H122L146 633Q325 165 339 90Q340 87 341 87Q341 124 530 619L558 694H605Q652 694 652 692Q650 690 523 354T390 10L387 0H279L276 10Q271 18 144 354T14 692\",120246:\"115 694Q115 693 156 550T233 266T270 90L271 85Q272 86 272 92Q272 153 405 616L427 694H524L553 590Q672 174 681 95L682 84L684 95Q689 138 728 287T803 563T841 692Q841 694 885 694T929 693Q929 691 829 346L730 0H679L628 1L606 75Q478 524 470 600L469 611L467 600Q458 518 338 101L310 0H213L114 346Q14 691 14 693Q14 694 64 694H115\",120247:\"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14\",120248:\"4 693L64 694H125L174 621Q335 378 340 364L341 362Q361 398 395 450L558 694H663L383 277V0H282V278L143 485Q112 531 75 586T21 668L4 693\",120249:\"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69\",120250:\"236 387Q209 387 184 382T141 370T111 355T91 342T83 337L82 355Q80 373 79 393T77 417Q77 419 81 421Q86 423 91 426Q155 460 227 460H238Q319 460 368 400Q393 371 400 341T408 252Q408 240 408 207T407 152V0H317V39L306 32Q244 -10 159 -10H152Q109 -10 77 22Q38 61 38 126Q38 142 39 146Q55 199 130 223T295 252H314V277Q314 305 313 310Q308 342 287 364T236 387ZM303 186Q124 180 124 126Q124 105 144 86T208 66Q284 66 309 124Q314 137 314 166V186H303\",120251:\"303 -11Q280 -11 259 -6T222 6T194 21T176 33T168 38V0H75V694H165V550L166 405Q247 455 336 455Q397 455 439 389T482 226Q482 115 428 52T303 -11ZM390 221Q390 283 361 331T265 379Q214 379 177 342L168 334V118Q203 66 258 66Q316 66 353 106T390 221\",120252:\"34 223Q34 327 99 393T245 460Q290 460 301 459Q328 455 354 445T395 427T410 415L396 338L386 344Q377 349 362 357T335 370Q305 381 258 381H252Q182 381 146 315Q126 275 126 224Q126 158 159 113T255 68Q329 68 394 106L408 114L410 93Q411 72 412 52L414 32Q407 27 394 20T338 2T252 -10Q156 -10 95 58T34 223\",120253:\"33 224Q33 321 81 388T197 455Q277 455 342 414L351 408V694H441V0H348V44L338 37Q278 -10 198 -10Q177 -10 168 -8Q99 11 62 90Q33 148 33 224ZM348 337Q307 378 263 378Q260 378 256 378T251 379Q239 379 223 374T182 355T142 305T126 220Q126 90 225 67Q231 66 250 66H255Q306 66 342 115L348 124V337\",120254:\"28 226Q28 329 91 395T235 461Q258 461 279 456T325 436T368 397T399 332T415 238V219H113V215Q113 163 151 114T248 65Q273 65 298 70T341 82T373 96T396 108L403 113Q403 106 406 76T409 38Q409 34 408 33T393 24Q325 -10 252 -10Q155 -10 92 59T28 226ZM340 289L338 297Q335 305 333 310T327 326T317 343T304 358T286 372T263 381T233 385Q212 385 193 376T162 353T140 325T127 301T123 289H340\",120255:\"262 705H267Q300 705 347 694V612L336 616Q303 628 274 628H266Q224 628 199 605Q187 590 184 579T181 541V507V444H287V371H184V0H94V371H27V444H94V492Q94 544 95 550Q102 617 151 661T262 705\",120256:\"55 286Q55 357 105 406T224 455Q280 455 323 421L322 423L318 427Q318 428 339 434T396 448T465 455H471L478 416L485 377Q484 377 474 379T445 383T401 385Q397 385 391 385T381 384L362 383L357 387Q358 386 364 375T375 354T384 325T389 287Q389 217 340 168T221 119Q178 119 138 142Q133 145 131 143Q125 131 125 117Q125 82 155 72L227 71Q230 71 251 71T280 71T310 69T343 65T373 57T403 46T428 30T449 7Q471 -26 471 -62V-71Q471 -136 384 -178Q326 -206 250 -206Q159 -206 102 -172T30 -92Q28 -84 28 -68T31 -37T40 -12T52 7T64 21T75 31T82 38Q60 68 60 106Q60 145 80 180L86 189L80 199Q55 240 55 286ZM304 233T304 287T279 362T220 383Q189 383 165 361T140 287Q140 243 161 217T220 191Q253 191 278 212ZM250 -134Q298 -134 331 -122T375 -96T387 -69Q387 -21 306 -7Q288 -5 216 -5Q161 -5 153 -7Q146 -9 139 -13T122 -31T113 -66Q113 -75 113 -80T127 -97T166 -121Q203 -134 250 -134\",120257:\"163 395Q223 455 307 455Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V694H163V395\",120258:\"67 576V680H171V576H67ZM74 0V444H164V0H74\",120259:\"88 576V680H192V576H88ZM31 -126Q40 -126 48 -125T62 -122T73 -117T82 -111T89 -105T94 -99T98 -92L102 -86V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171T-51 -133T-41 -96L-38 -99Q-34 -102 -28 -106T-13 -115T7 -123T31 -126\",120260:\"76 0V694H163V257L340 444H449L286 272L292 263Q296 259 378 138T463 12L471 0H372L309 92Q294 114 277 139T250 179T237 198L228 211L160 139V0H76\",120261:\"74 0V694H164V0H74\",120262:\"160 392Q223 455 304 455Q359 455 386 436T430 383L437 391Q495 455 584 455Q694 455 715 354Q719 331 720 164V0H627V157Q626 315 625 320Q611 378 536 378H530Q501 378 481 358Q457 334 450 301T442 209Q442 198 442 172T443 129V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392\",120263:\"160 392Q214 446 283 454Q285 454 292 454T303 455H306Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392\",120264:\"28 222Q28 323 95 391T244 460Q275 460 281 459Q364 445 417 377T471 219Q471 124 408 57T250 -10Q158 -10 93 57T28 222ZM377 230Q377 277 364 310T328 358T287 379T248 385Q233 385 219 382T186 369T155 342T132 297T122 230Q122 146 159 108T250 69H253Q263 69 274 70T305 81T339 106T365 154T377 230\",120265:\"166 404Q194 424 241 439T337 455H341Q410 455 451 370Q483 307 483 222Q483 128 433 59T306 -10Q282 -10 260 -5T222 7T194 21T176 33T168 38V-194H75V444H165V424L166 404ZM390 222Q390 287 354 331T266 376T177 340L168 332V118Q200 66 257 66Q313 66 351 112T390 222\",120266:\"33 220Q33 325 87 389T206 454Q286 454 341 406L351 398V455H441V-194H348V41L338 35Q276 -8 198 -11Q171 -11 154 -5Q102 12 68 74T33 220ZM126 220Q126 160 161 113T251 65Q305 65 351 123V298L350 301Q349 304 347 308T342 319T336 331T327 343T315 355T300 365T283 373Q273 375 256 375Q208 375 167 332T126 220\",120267:\"171 389Q237 455 320 455H327V373H317Q262 369 220 336T167 248Q165 239 164 119V0H74V450H159V377L171 389\",120268:\"33 326Q33 376 60 408T117 450T175 460H190Q245 460 272 454T345 429Q345 428 338 388L331 349Q278 386 188 386H183Q119 386 119 336Q119 307 142 295T210 276T278 256Q360 213 360 130Q360 108 354 88T332 43T281 5T195 -10Q152 -10 111 1T49 22T28 35Q29 36 32 56T39 95T43 115T51 110T72 99T102 85T143 73T193 68Q274 68 274 123Q274 152 248 167Q234 178 187 186T115 207Q66 229 46 273Q33 298 33 326\",120269:\"333 27Q333 24 314 16T257 -1T184 -10H172Q146 -10 128 14T105 58T99 91Q95 113 95 251V371H18V444H98V571H182V444H316V371H182V253Q183 128 189 104Q199 68 234 68Q277 72 314 98Q315 93 323 61T333 27\",120270:\"353 39Q352 38 344 34T331 27T315 19T295 11T270 3T241 -3T207 -8T168 -10H162Q148 -10 137 -8T111 2T87 30T74 81Q73 89 73 268V444H166V268L167 92Q171 79 174 74T192 64T238 59Q317 59 344 116Q349 128 349 148T350 291V444H443V0H353V39\",120271:\"178 0Q15 441 14 442Q14 444 60 444Q107 444 107 442Q108 441 136 364T196 194T232 67Q233 98 280 234T356 442Q356 444 401 444T446 442L282 0H178\",120272:\"14 444H105L108 434Q192 160 200 74V65L201 75Q206 144 282 399L296 444H381L399 381Q480 112 480 69L481 70Q481 113 562 386L580 444H668L534 1L483 0H432L429 10Q343 294 338 367L337 377Q336 375 336 370Q336 340 313 250T269 88T245 11L242 0H195L148 1L14 444\",120273:\"187 229L6 444H107L227 294L344 444H393L442 443Q439 437 299 268L267 229L460 0H359L294 88Q280 107 262 131T236 166L227 177L100 0H0Q1 1 47 58T140 171T187 229\",120274:\"113 -204Q83 -204 63 -200L43 -197Q43 -196 40 -157T36 -117L48 -121Q79 -133 114 -133Q124 -133 130 -132T145 -121T163 -94Q169 -82 184 -42T200 1L188 29Q176 57 152 115T107 223T62 330T26 416L14 443Q14 444 61 444H109L122 411Q230 155 236 75L237 65V74Q245 161 348 424L356 444H401Q446 444 446 443L396 313Q345 183 293 49T236 -93Q191 -204 123 -204H113\",120275:\"42 370V444H400V395L156 76L279 77H402V0H28V51L273 371L157 370H42\",120276:\"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279\",120277:\"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194\",120278:\"423 -11Q339 -11 275 9T171 62T106 143T71 240T61 347Q61 450 93 527Q157 664 313 694Q357 704 416 704Q479 704 517 699T608 676Q634 667 635 660Q635 653 624 592L612 528L609 524Q604 521 601 521Q595 521 583 531T555 555T505 578T428 589H424Q298 589 250 494Q224 438 224 347Q224 292 233 251T265 175T329 122T432 104Q488 104 524 115T604 158Q607 160 610 162T615 165T619 168L621 170Q625 172 630 170T637 163Q638 160 642 109T647 54Q646 49 625 37T568 11T499 -7Q463 -11 423 -11\",120279:\"119 1Q98 5 92 28V667Q98 686 118 693H124Q131 693 142 693T168 694T200 694T237 694H296Q416 694 450 692T525 677Q732 617 732 342Q732 169 644 81Q593 32 528 16T372 0Q356 0 324 0T276 1H119ZM573 349Q573 387 571 413T559 473T532 527T482 567T403 591Q395 592 320 593H250V101H321Q418 102 456 114Q553 144 569 263Q573 303 573 349\",120280:\"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277\",120281:\"512 572Q451 572 356 573T258 575H253V400H370H431Q494 400 506 392T518 345Q518 307 507 299T437 291H370H253V161Q253 141 253 113T254 75Q254 23 245 12T195 0H170L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 327 691T538 689Q564 682 564 644V632V618Q564 582 538 573Q537 573 535 573T526 572T512 572\",120282:\"61 347Q61 405 70 454T105 550T171 631T276 685T426 705Q483 705 537 693T620 668T650 646Q650 645 649 637T645 612T639 578L627 514L624 510Q620 507 615 507T597 520T566 548T512 577T430 590Q223 590 223 347T431 104Q478 104 506 112Q508 112 508 164V215H471L434 216L428 222L427 268Q427 315 429 318Q432 323 444 323T544 324H652Q655 320 659 317V45L656 43Q654 39 624 27T536 2T424 -11Q366 -11 317 -2T219 33T137 97T82 200T61 347\",120283:\"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667\",120284:\"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667\",120285:\"236 -22Q190 -22 144 -11T72 12T46 29Q63 147 69 153Q80 164 92 146Q124 91 191 91Q222 91 242 102T267 134Q268 139 268 402Q268 663 270 669Q275 687 294 692Q298 694 347 694H367Q393 694 406 690T425 669Q427 663 427 399Q427 132 426 125Q421 87 404 58T366 15T318 -9T273 -20T236 -22\",120286:\"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667\",120287:\"92 667Q98 684 109 689T142 694H172H198Q244 694 251 669Q253 663 253 389V116L278 117Q410 119 490 119H495Q511 119 517 115T534 93V63V48Q534 9 508 2Q503 0 310 0L119 1Q99 7 92 28V667\",120288:\"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120289:\"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120290:\"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433\",120291:\"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467\",120292:\"450 -20Q444 -20 429 -21T396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715Q364 715 376 715T394 716Q732 716 732 340Q732 268 719 210T686 120T647 68T615 39T601 29T638 -22T676 -73Q679 -78 679 -83Q679 -98 661 -106H593Q526 -106 521 -104Q514 -103 507 -97T496 -84T477 -55L454 -19L450 -20ZM554 509Q516 622 391 622Q294 622 250 535Q220 475 220 345Q220 299 222 266T234 198T258 140T299 99T363 74Q378 71 393 71H395L381 92Q367 114 353 136T338 161Q336 165 336 170Q336 186 352 193L361 194Q370 194 384 194T412 194H452Q457 194 460 194T466 194T471 192T476 191T480 188T483 185T487 180T492 174T497 167T504 158L526 129Q532 127 552 175Q573 231 573 348Q573 455 554 509\",120293:\"654 24Q654 9 644 5T612 0H577L521 1Q509 5 503 13Q498 20 421 160L343 304H250V168Q250 147 250 118T251 78Q251 24 242 12T192 0H168L119 1Q99 7 92 28V667Q98 686 118 693H124Q131 693 141 693T165 694T195 694T229 694T280 694T332 695Q389 695 428 691T510 675T582 637T627 569Q641 532 641 493Q641 377 537 331L497 317L493 316L571 177Q653 28 654 24ZM487 472T487 492T485 525T476 553T450 577T404 591Q398 592 322 593H250V391H321Q327 391 353 391T385 392T412 395T438 401T457 412T474 430T483 456\",120294:\"61 503Q61 547 72 583T110 650T186 698T305 716Q405 716 496 671Q513 664 514 657Q514 656 513 648T509 623T503 589L491 525L488 521Q484 518 479 518H475L461 532Q430 565 395 581T305 598Q201 598 201 523Q201 480 240 462T345 431T443 394Q549 324 549 204Q549 160 538 123T502 51T427 -2T308 -22Q180 -22 69 41Q50 52 49 57Q49 58 50 66T54 91T60 125L72 189L75 193Q80 196 84 196Q87 196 104 182T145 149T212 117T304 102Q408 102 408 188Q408 215 396 234T362 263T319 278T267 290T219 302Q149 324 105 380T61 503\",120295:\"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687\",120296:\"92 667Q101 694 143 694H172H200Q242 694 251 671Q253 663 253 430Q254 189 255 185Q262 134 288 107T384 79Q498 79 516 168Q520 191 521 431Q521 663 523 671Q532 694 572 694H596H618Q639 694 648 692T665 679Q671 672 671 653Q672 632 672 555V432Q671 200 670 190Q652 79 581 29T383 -22Q137 -22 98 166Q92 195 92 303V667\",120297:\"27 667Q27 683 39 688T75 694H101Q155 694 159 692Q182 687 194 665Q202 652 283 419T374 142Q376 165 473 445Q552 664 553 666Q568 694 618 694H639H658Q681 694 693 689T705 667Q705 660 592 347Q481 32 477 28Q466 7 441 1H292Q266 7 255 28Q251 32 140 347Q27 660 27 667\",120298:\"994 694Q1012 683 1014 668Q1014 661 977 519T896 217T845 26Q831 0 783 0H747H711Q685 0 672 5T649 26Q644 36 583 272T517 548Q516 552 516 551Q503 479 437 227Q389 37 383 26Q367 0 323 0H288H254Q207 0 193 26Q191 32 108 346T24 665Q24 685 44 693Q47 694 98 694H115Q152 694 168 668Q174 657 235 417T297 144Q297 134 300 153Q307 204 362 421T427 668Q441 694 488 694H523Q586 694 597 688Q612 683 620 661T651 549Q664 496 673 462Q744 194 750 146V140Q767 223 800 354T857 576T883 668Q897 694 938 694H958H994\",120299:\"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52\",120300:\"635 694H668Q688 694 698 690T708 670Q708 664 704 658L446 278L445 152V27Q442 20 440 17T433 9T419 1L368 0H339Q316 0 305 5T288 26Q286 31 286 154V278L157 468Q135 500 101 550Q43 635 34 650T24 671Q24 686 39 693Q42 694 105 694H122H132Q163 694 180 689T214 666Q225 654 336 485Q373 425 373 420L374 418Q375 419 375 421Q378 432 418 493T496 609T536 667Q543 676 551 681T572 689T591 693T615 694T635 694\",120301:\"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584\",120302:\"255 394Q218 394 186 383T138 358T109 333T94 321H91Q88 321 86 322T83 325T80 331T79 339T78 349T77 362T75 377Q72 410 72 420Q72 423 72 425T73 429T74 431T77 433T80 435T85 437Q166 475 262 475Q360 475 413 440Q462 406 471 341Q472 332 472 181Q472 155 472 119T473 73Q473 20 462 10T398 0H380Q349 0 337 8T324 48V65Q298 30 257 10T172 -11Q109 -11 70 37T31 145Q31 276 307 289H321V309Q321 337 318 352T300 381T255 394ZM176 146Q176 116 190 97T231 77Q251 77 266 85Q322 110 322 185Q322 189 322 192T322 198L321 201V234L308 232Q176 220 176 146\",120303:\"54 667Q63 694 102 694H127H151Q190 694 199 671Q201 663 201 544L202 422L211 428Q270 468 355 468Q523 468 523 231Q523 -10 321 -10Q286 -10 261 -2T204 33Q197 11 187 6T142 0H126L81 1Q61 7 54 28V667ZM372 230Q372 317 355 349T280 382Q251 382 204 356V107Q235 76 274 76Q301 76 320 84T349 105T364 139T371 180T372 230\",120304:\"188 233Q188 199 190 177T200 131T225 95T271 83H281Q356 83 421 130Q433 138 434 139Q446 141 448 131Q449 128 453 84T457 36Q455 30 432 20T364 -1T273 -11Q37 -11 37 232Q37 456 244 474Q246 474 257 474T276 475Q349 475 400 455Q443 436 448 431L451 425Q451 419 443 377Q442 372 441 366T439 356T438 348T436 340T435 334T433 330T431 327T429 325T426 324Q420 324 406 336Q376 362 350 372T281 382Q254 382 236 373T208 352T194 317T189 278T188 233\",120305:\"225 -11Q192 -11 164 -3T104 29T55 102T37 227Q37 321 63 376Q111 469 223 469Q292 469 349 433L359 426V546Q359 564 359 589T358 623Q358 675 369 684T433 694H451Q497 694 505 669Q507 663 507 347T505 25Q500 9 487 5T450 0H432H413Q356 0 356 36V40Q298 -11 225 -11ZM356 359Q326 382 286 382Q239 382 215 358Q189 330 189 256V229V203V195Q189 102 231 86Q251 76 274 76Q318 76 356 114V359\",120306:\"30 231Q30 301 51 351T107 426T181 463T262 474H268Q293 474 312 472T366 459T422 427T462 363T480 260Q480 230 466 222T405 213Q395 213 364 213T311 214H173V211Q173 183 183 148T216 96Q244 76 287 76Q319 76 350 85T399 104T433 125T451 136Q463 138 465 128Q466 125 469 84T473 39Q471 29 423 13T330 -9Q321 -10 286 -10Q213 -10 161 11T81 68T42 144T30 231ZM353 292Q350 324 342 344T320 373T294 384T264 387Q191 387 175 286V282H353V292\",120307:\"67 458H78V502V509Q78 538 79 556T90 604T117 651T169 685T253 704Q254 704 258 704T265 705T275 705T287 704Q364 704 381 687V638V607Q381 591 378 585T366 579Q362 581 351 591T323 610T282 618Q238 618 226 587Q224 581 223 519V458H253Q288 458 298 453Q315 441 315 415Q315 399 312 390T299 377T282 372T259 371H255H226V201Q226 31 224 25Q215 0 174 0H150L106 1Q86 7 79 28L78 199V371H69Q29 371 29 412Q29 425 30 431T40 447T67 458\",120308:\"63 108Q63 142 83 176L76 184Q35 227 35 300Q35 469 243 469Q330 469 385 437L397 443Q451 469 508 469Q515 468 517 466T522 456T528 425Q534 392 534 386Q532 379 523 377Q520 377 509 381T477 390T431 398L425 399Q453 362 453 297Q453 268 445 242T417 189T351 146T242 130Q169 130 119 153Q117 141 117 136Q117 95 155 83Q161 81 252 81Q354 80 362 79Q437 71 475 48T526 -24Q532 -42 532 -65Q532 -116 489 -156T341 -204Q323 -206 274 -206H256Q39 -206 18 -84Q17 -79 17 -68Q17 15 82 42L76 53Q63 79 63 108ZM310 300Q310 359 298 377T238 396Q217 396 204 390T186 368T179 339T178 300Q178 245 189 224T244 203T299 224T310 300ZM414 -66Q414 -55 411 -47T401 -32T387 -21T368 -14T346 -10T322 -7T297 -6T271 -6T246 -6H193Q163 -6 154 -10T140 -30Q135 -45 135 -62Q135 -134 274 -134Q414 -134 414 -66\",120309:\"53 667Q62 694 101 694H126H148Q191 694 198 669Q200 663 200 526V390Q263 469 361 469Q390 469 412 465T456 449T491 413T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V667\",120310:\"72 574Q55 583 51 591T46 619V636L47 670L48 673Q50 676 52 678T56 684T63 690T73 694H81Q89 694 102 694T129 695H181Q193 687 196 685T203 676T207 661T208 634Q208 603 204 593T181 574H72ZM54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",120311:\"70 634V648Q70 686 96 693Q100 695 151 695H176Q201 695 213 691T230 670Q232 665 232 634V620Q232 582 206 575Q202 573 151 573H126Q101 573 89 577T72 598Q70 603 70 634ZM-41 -84Q-1 -105 28 -105Q67 -105 78 -85Q83 -77 83 -48T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -62 -124T-52 -89Q-49 -84 -41 -84\",120312:\"496 23Q496 9 487 5T457 0H427H398Q367 0 354 11Q352 12 288 99L226 183L191 150V90V54Q191 30 186 18T165 2Q160 0 124 0L90 1Q70 7 63 28V667Q72 694 108 694H128H146Q183 694 192 671Q194 663 194 496L195 325L254 383Q266 394 281 409T301 429T316 441T329 450T341 455T357 458T376 458H409H436Q461 458 470 454T480 437Q480 430 477 427T445 395Q417 368 396 347L319 271Q319 270 358 217T442 103T494 32Q496 30 496 23\",120313:\"54 667Q63 694 102 694H127H149Q192 694 199 669Q201 663 201 347T199 25Q190 0 149 0H125L81 1Q61 7 54 28V667\",120314:\"197 386Q256 468 366 468Q404 468 430 461T471 438T491 413T503 385Q563 469 666 469Q731 469 769 446T814 350Q815 343 815 185Q815 31 813 25Q808 9 796 5T758 0H737L692 1Q672 7 665 28L664 186V206V290Q664 349 655 365T610 381Q581 381 560 370T529 341T515 311T510 291Q509 286 509 157V82Q509 24 501 12T452 0H431L386 1Q366 7 359 28L358 186V206V290Q358 349 349 365T304 381Q275 381 254 370T223 341T209 311T204 291Q203 286 203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386\",120315:\"197 386Q264 468 350 468Q375 468 390 467T429 460T466 443T492 408T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386\",120316:\"274 -11Q32 -11 32 225Q32 346 85 406T249 474H266H271Q302 474 325 471T385 458T451 419T498 346Q518 300 518 225Q518 -11 274 -11ZM367 233Q367 322 350 354T270 387Q240 387 222 377T195 344T184 298T182 233Q182 151 198 117T275 83H282Q318 83 339 104Q355 119 361 146T367 233\",120317:\"125 458H139Q174 458 185 452T202 420L211 426Q245 448 288 458T354 469Q356 469 361 469T369 468Q443 468 481 412Q523 355 523 223Q523 164 509 120T473 51T423 12T371 -7T323 -11Q260 -11 204 33V-65Q204 -80 204 -102T205 -131Q205 -162 200 -175T178 -192Q173 -194 126 -194L81 -193Q61 -187 54 -166V431Q58 447 81 458H125ZM372 230Q372 376 282 376Q247 376 204 352V107L208 103Q213 99 218 95T232 87T251 79T274 76Q323 76 349 116Q372 153 372 230\",120318:\"226 -11Q37 -11 37 236Q37 294 51 338T86 407T135 445T186 464T233 469H235Q300 469 349 422L359 413V425Q359 452 376 464Q384 469 433 469H455Q498 469 505 444Q507 438 507 137Q507 -163 505 -169Q500 -185 487 -189T450 -194H432H413Q367 -194 358 -171Q356 -163 356 -63V40L348 33Q296 -11 231 -11H226ZM281 375Q188 375 188 228Q188 77 275 77Q322 77 359 120V328Q338 357 324 366T281 375\",120319:\"54 437Q58 453 81 464H122H147Q186 464 194 439Q196 434 196 405V377L203 387Q245 456 324 468Q325 468 331 468T340 469Q347 469 356 462V360Q350 355 346 354T339 353T326 353T300 347Q260 337 234 311T202 252Q201 247 201 138Q201 122 201 98T202 66Q202 33 197 20T175 2Q170 0 125 0L81 1Q61 7 54 28V437\",120320:\"37 328Q37 392 75 433T203 474Q254 474 265 473Q319 465 370 442Q378 439 380 432Q380 426 372 384Q364 336 359 333Q358 331 355 331Q348 331 337 341Q282 388 216 388H208Q190 388 180 387T161 377T151 351Q151 333 164 323T224 306L267 297Q314 285 355 246T396 144Q396 17 282 -5Q260 -10 218 -10Q170 -10 124 2T55 26T30 44Q30 48 39 99T49 153Q52 159 60 159Q66 159 70 153Q100 120 133 101T218 82Q231 82 238 83T258 87T277 101T283 126Q283 149 260 160T200 176T153 186Q109 201 73 236T37 328\",120321:\"225 267Q225 202 226 169T232 115T244 88T265 82Q295 84 318 100T345 116Q352 116 354 110T364 77Q373 46 373 43Q373 28 312 9T190 -10Q160 -10 139 1T107 29T89 77T82 136T80 210V258V371H66H59Q39 371 27 386Q20 394 20 417Q21 432 23 437Q35 458 60 458H65H83V510L84 562Q93 589 131 589H154H174Q216 589 223 564Q225 558 225 508V458H274Q330 458 338 453Q355 441 355 415Q355 388 338 376Q330 371 274 371H225V267\",120322:\"53 431Q62 459 100 459Q105 459 114 459T127 458H152Q192 458 201 435Q203 427 203 262Q204 86 208 77Q209 74 216 71Q227 66 258 66H264Q334 66 354 140L356 150L357 290Q357 427 359 435Q365 449 377 453T412 458H432H450Q498 458 506 433Q508 427 508 229T506 25Q498 0 451 0H434H418Q386 0 374 7T360 43V58L352 49Q298 -11 199 -11Q135 -9 101 11T56 80Q52 100 52 273L53 431\",120323:\"26 429T26 435T32 448T44 456Q48 458 85 458H99Q145 458 161 431Q162 429 207 285L251 145L294 284Q333 410 341 430Q351 451 374 456Q379 458 420 458H430Q450 458 457 456T471 443Q473 437 473 435Q473 426 443 325T381 126L350 28Q339 7 316 2Q312 0 250 0Q187 0 183 2Q160 7 149 28L136 68Q124 109 106 166T70 283T39 385\",120324:\"699 458Q717 447 719 432Q719 426 666 230T610 27Q602 10 588 5T548 0H512H482Q431 0 420 17T384 135Q356 241 352 298V308L351 295Q348 251 322 145T290 28Q279 0 233 0H212H191Q146 0 133 27Q130 33 77 229T24 430Q24 449 44 457Q47 458 79 458Q122 458 126 456Q154 450 163 419L233 153Q241 187 272 304T307 431Q318 458 368 458Q394 458 398 456Q421 451 430 431Q434 423 509 147L547 286Q582 416 588 429Q600 454 624 457Q632 458 647 458H663H699\",120325:\"92 0Q87 0 77 0T62 -1Q24 -1 24 22Q24 29 33 41T106 136Q185 237 184 238Q184 239 147 284T73 376T33 427Q31 430 31 436Q31 451 45 457Q48 458 96 458H122Q152 458 163 450T208 394L247 345L282 394Q288 403 297 416T309 434T319 444T328 452T338 455T352 458T372 458H393H440Q457 449 457 435Q457 428 450 419T379 328Q308 239 308 237L389 137Q409 112 436 79Q475 31 475 23Q475 -1 436 -1Q432 -1 422 -1T407 0Q360 0 352 3Q343 6 336 16T291 83L247 151L245 148Q243 145 239 139T229 124T218 106T204 84Q167 24 160 15T141 1L92 0\",120326:\"454 458Q473 446 473 430Q473 426 394 184L311 -68Q291 -119 245 -162T123 -205Q51 -205 46 -190Q44 -187 40 -142T36 -92Q36 -90 36 -88L37 -87Q41 -80 46 -80Q48 -80 73 -92T126 -105Q146 -105 161 -98T185 -76T197 -53T206 -28L215 0L122 212Q29 427 29 435Q29 448 46 457Q49 458 91 458Q93 458 106 458T125 457T140 454T157 446T170 431Q183 410 224 305T266 158Q266 152 266 151Q267 151 268 163Q271 206 302 310T342 432Q354 458 398 458H418H454\",120327:\"268 376Q250 376 180 375T92 374Q69 374 63 380Q46 390 46 419Q46 428 49 437Q57 451 73 457Q76 458 242 458T413 456Q420 455 427 448Q439 438 439 413Q439 392 433 385Q432 383 318 236T204 88Q235 88 306 89T395 90H399Q408 90 414 89T427 84T438 70T442 45Q442 9 416 2Q411 0 236 0H136Q73 0 62 1T41 12Q31 23 31 47Q31 68 36 77Q37 78 51 97T96 155T153 228L268 376\",120328:\"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492\",120329:\"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322\",120330:\"124 266Q124 372 179 473T333 639T544 705Q592 705 635 697T698 679L718 670Q719 669 701 621T681 572L676 576Q670 580 661 586T641 598T614 611T583 620Q558 625 526 625Q406 625 318 516T230 276Q230 238 236 212Q251 148 294 108T412 68Q469 68 508 80T598 123Q608 129 608 128Q606 109 603 87L598 45L573 33Q521 7 486 -1T394 -10Q358 -10 346 -8Q260 5 202 62Q124 145 124 266\",120331:\"162 348L236 694H385Q535 693 543 692Q600 682 641 654T705 586T737 506T747 425Q747 296 672 187Q625 114 548 62T384 1Q376 0 262 0Q88 0 88 1L98 46Q107 90 126 177T162 348ZM622 533Q575 624 443 624Q434 624 419 624T399 623H321L263 348Q249 283 234 213T212 107L204 72Q204 71 289 71Q374 72 386 74Q501 94 573 193T646 422Q646 487 622 533\",120332:\"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2\",120333:\"86 2Q88 4 160 346T233 689Q233 691 453 691T673 689Q670 686 656 611H488L320 612Q314 579 302 523T281 427T272 385Q272 384 419 384H567L551 308H255L223 156Q216 124 207 82T194 20L190 2Q190 0 138 0H86V2\",120334:\"125 267Q125 375 182 476T337 641T544 705Q598 705 644 693T710 669T730 655L712 609L693 560L692 557L681 567Q618 626 526 626Q447 626 378 573T269 440T229 277Q229 185 276 127T406 68Q422 68 451 71T502 78T524 84L526 93Q528 102 532 119T539 153L553 222Q553 223 495 223Q436 223 436 224Q436 230 444 262L452 299H662V296Q661 290 635 166T607 40Q606 37 576 25T492 1T391 -11Q272 -11 199 66T125 267\",120335:\"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2\",120336:\"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348\",120337:\"377 424L435 694H535V691Q534 685 476 412T416 135Q401 74 350 26T210 -22Q165 -22 124 -11T65 9T46 21L54 41Q62 61 70 83T81 109Q82 111 85 106Q86 105 87 103Q93 94 103 84T135 64T185 53Q238 53 272 76T317 142Q317 145 325 182T348 289T377 424\",120338:\"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223\",120339:\"161 348L235 694H338V691Q338 690 273 385T208 79Q278 80 362 80H516Q502 11 499 2V0H293Q87 0 87 1L96 46Q106 90 125 177T161 348\",120340:\"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691\",120341:\"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609\",120342:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58\",120343:\"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513\",120344:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 305 693 194T543 36Q547 29 586 -47T625 -125H504L450 -8Q406 -22 363 -22Q256 -22 187 56T118 254ZM661 437Q661 532 616 584T506 636Q428 636 361 578T257 433T220 258Q220 167 264 113T380 58Q390 58 397 58T408 59T413 60T417 61Q417 63 387 127T356 193Q356 194 409 194H462L485 150L508 105Q509 103 532 125T567 161Q661 278 661 437\",120345:\"162 348L236 694H375H414H445Q507 694 538 690T606 668Q698 623 698 534V528Q698 447 608 377Q582 358 555 345T512 326L497 321L617 0H565L513 1L402 309H255L189 0H138Q88 0 88 1L98 46Q107 90 126 177T162 348ZM603 525Q603 603 499 620Q486 622 403 623H321L297 506Q292 482 285 449T274 402L271 387V385H346Q350 385 363 385T386 384Q548 384 592 479Q603 503 603 525\",120346:\"161 478Q161 568 242 642T435 716Q527 716 599 673L609 667Q595 633 589 615L571 568Q570 568 564 575T546 592T518 611T475 628T417 635Q351 635 305 596T259 507Q259 465 290 444T372 411T432 396Q473 385 509 343T545 236Q545 140 464 59T270 -22Q155 -22 54 48L92 146Q93 146 101 138T124 117T161 92T216 72T288 63Q360 63 403 109T447 204Q447 220 444 233T435 256T421 273T404 285T385 295T366 301T347 306T331 310T315 314T292 321T265 331T235 346T207 367T183 395T168 431T161 478\",120347:\"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165\",120348:\"340 -22Q251 -22 191 33T131 177V187Q131 192 131 195T132 205T133 215T136 231T141 253T147 285T156 328T168 384T184 457L235 694H338V691Q338 690 288 451T236 210Q234 194 234 177Q234 138 247 111T280 72T319 54T357 49Q408 49 449 74T510 128Q516 136 521 143T530 158T538 175T545 194T553 220T560 250T569 289T579 336T591 395T606 464L655 694H747V691Q651 243 645 213Q623 149 587 102Q482 -22 340 -22\",120349:\"220 348L161 694H216Q270 694 270 693L283 613Q334 313 346 215Q359 102 359 96Q359 87 358 84Q388 162 684 657L706 694H753Q799 694 799 693L387 0H333Q279 0 279 1L272 45Q264 89 249 177T220 348\",120350:\"596 540Q596 562 597 585T599 609Q599 588 436 255Q402 185 362 104L310 0H213V3Q213 6 188 347T161 694H263L265 664Q290 327 293 184Q293 112 289 85Q290 85 290 87Q290 95 301 123T332 194T373 282T419 380T463 469T498 541T517 579L574 694H671V689L674 646Q678 603 682 538T691 401T699 263T703 160Q703 102 700 87Q719 154 930 576L989 694H1076Q1076 693 903 347L730 0H628V4L626 26Q624 48 622 85T616 168T609 267T603 369T598 464T596 540\",120351:\"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14\",120352:\"151 692Q151 694 212 694H272L418 362L696 683L705 694H758L809 693Q809 692 630 490T444 280Q442 275 413 139L383 1L333 0Q282 0 282 2Q283 3 312 141L341 278L246 484L151 692\",120353:\"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54\",120354:\"313 386Q286 386 260 381T217 369T186 355T164 342T155 337Q154 338 159 377T165 418Q251 461 320 461Q322 461 328 461T337 460Q397 460 435 424T473 329Q473 325 473 318T472 308Q432 110 407 2V0H317V2L325 38Q295 21 269 10Q215 -10 156 -10H149Q76 -10 62 69Q61 75 61 90Q61 127 73 150T116 194Q146 215 207 231T348 252H368L373 277Q378 302 378 318Q378 367 339 384Q332 386 313 386ZM150 116Q150 93 171 79T223 65Q259 65 293 85T341 135Q343 140 348 160T353 184Q353 186 342 186Q298 186 231 174T153 134Q150 127 150 116\",120355:\"302 -11Q266 -11 235 1T190 26L176 38Q170 8 168 2V0H121Q75 0 75 1L84 46Q94 90 113 177T149 348L223 694H267Q312 694 312 693T282 551T251 407Q251 406 256 408T271 415Q347 454 430 454H438Q501 454 528 374Q539 339 539 299Q539 179 466 84T302 -11ZM443 275Q443 317 421 348T346 379Q318 379 296 369Q269 359 238 332L193 118L198 109Q220 65 269 65Q350 65 396 130T443 275\",120356:\"75 164Q75 226 100 282T165 377T252 437T342 460H347Q447 460 499 417L483 378Q468 339 468 338Q466 338 455 347T424 366T385 378Q355 382 334 382Q262 382 215 318T168 177Q168 120 196 95T259 69H269Q345 69 420 108Q432 114 432 113T427 72L422 32L402 22Q382 12 344 2T259 -11Q214 -11 180 2T126 36T95 81T79 126T75 164\",120357:\"73 156Q73 224 102 293T184 408T294 455Q375 455 432 413Q438 407 438 410T469 553L499 694H588V691Q588 690 515 348T441 2V0H348V2Q357 29 357 43L352 41Q332 24 288 7T196 -10H190Q178 -10 166 -7T134 8T98 46T75 113Q73 129 73 156ZM419 335Q419 339 412 348T386 368T342 379Q284 379 243 343T184 261T167 168Q167 122 191 94T263 66Q321 66 367 116L374 124L397 229Q419 333 419 335\",120358:\"248 -11Q170 -11 121 41T71 173Q71 265 133 349T285 454Q305 460 318 460H328Q368 460 399 448Q472 414 472 309Q472 274 464 234L462 219H159Q156 198 156 185Q156 137 179 107T237 68Q246 66 268 66Q345 66 427 113V109Q426 108 422 73T417 37Q417 34 409 29Q329 -11 248 -11ZM401 299Q399 337 376 361T316 385Q291 385 266 371Q220 350 184 289H401V299\",120359:\"381 443Q381 440 374 407T366 371H315Q263 371 263 369Q262 368 224 186Q215 145 205 97T189 25L184 2V0H94V2L99 25Q104 48 114 96T134 186Q172 368 173 369Q173 371 139 371H106V373L114 410L121 444H155L188 445L191 455L212 551Q232 612 288 658T415 705Q438 705 464 701T494 694Q478 614 477 614L467 618Q457 621 440 624T406 629H400Q333 629 306 579Q301 568 289 507L275 444H328Q381 444 381 443\",120360:\"113 252Q113 334 177 394T311 454Q332 454 350 451T379 442T398 432T410 424L413 421Q412 423 411 424L409 426Q409 429 434 436T496 449T560 455H568V451Q568 447 567 429T566 394L565 377L553 379Q522 385 479 385Q463 385 456 384L443 383L436 392Q454 357 454 324Q454 243 390 182T249 120Q233 120 219 122T195 128T178 136T167 142L163 145Q149 131 149 105Q149 78 171 72L242 71Q246 71 269 71T303 71T336 68T372 62T403 51T432 32Q461 8 461 -40Q461 -112 383 -159T211 -206Q123 -206 68 -172T12 -86Q12 -55 31 -23T82 32Q90 38 89 39Q89 40 87 44T82 59T80 82Q80 134 126 189Q113 228 113 252ZM369 319Q369 354 350 368T304 383Q274 383 252 369T218 333T202 291T197 255Q197 221 217 206T263 191Q317 191 343 233T369 319ZM373 -59Q373 -41 362 -30T330 -13T291 -7T247 -5H216Q167 -5 158 -6T139 -12Q123 -20 110 -38T97 -76Q97 -102 133 -118T221 -134Q242 -134 267 -130T316 -118T357 -94T373 -59\",120361:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 1L82 46Q92 90 111 177T147 348L221 694H265Q310 694 310 693T279 544L247 395Q325 455 403 455Q513 455 513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120362:\"189 578Q190 579 199 627T211 678V680H315V678Q313 675 304 627T293 578V576H189V578ZM168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224\",120363:\"211 577L233 680H284Q336 680 336 679L315 576H263Q211 576 211 577ZM19 -204Q-12 -204 -40 -196T-82 -179T-96 -170Q-96 -168 -78 -132L-61 -95L-54 -103Q-32 -126 3 -126Q26 -126 50 -116Q76 -101 83 -85Q84 -79 140 180T196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204\",120364:\"150 348L224 694H310V691Q218 259 218 258L232 270Q245 281 274 306T327 351L435 444H489L542 443Q542 442 443 357L344 272L471 1L422 0H372L366 14Q359 27 347 54T323 105L273 210Q271 210 231 174L190 139L160 0H118Q76 0 76 1L86 46Q95 90 114 177T150 348\",120365:\"148 348L222 694H311V691Q311 690 238 348T164 2V0H119Q74 0 74 1L84 46Q93 90 112 177T148 348\",120366:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392H400Q451 454 472 439Q482 434 489 427T500 412T506 399T510 388L511 384Q511 384 517 388Q563 431 620 446Q648 455 680 455Q790 455 790 358Q790 334 785 309Q784 304 753 156T720 2V0H627V2L634 34Q641 65 650 110T669 200T686 281T693 321Q693 379 613 379Q553 379 514 302Q503 276 486 202T457 66T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120367:\"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392Q416 454 433 452T470 440T502 411T513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321\",120368:\"69 169Q69 238 107 306T211 417T348 461Q419 461 471 412T523 271Q523 161 438 75T247 -11Q170 -11 120 39T69 169ZM432 279Q432 338 401 361T333 385Q280 385 240 352T182 273T164 178Q164 119 195 94T265 68Q306 68 344 94Q380 115 406 169T432 279\",120369:\"259 443Q251 405 251 404L260 409Q269 414 286 421T324 436T375 449T434 455Q482 455 510 417T538 303Q538 169 463 79T302 -11Q226 -11 176 39V36Q175 35 151 -80L127 -193Q127 -194 80 -194H34V-191L102 127L169 443Q169 444 214 444T259 443ZM269 65Q332 65 386 124T441 262Q441 304 422 334T370 373Q356 375 339 375Q293 375 238 331L193 118Q200 103 206 94T229 75T269 65\",120370:\"72 149Q72 272 146 363T304 455Q340 455 371 442T409 423T436 398Q438 411 442 427L448 455H538L400 -193Q400 -194 354 -194Q307 -194 307 -193L356 37V41Q355 41 350 38T332 27T302 13Q247 -10 191 -10H179Q138 -10 105 32T72 149ZM414 298Q402 376 341 376Q277 376 223 317T169 182Q169 121 198 93T265 65Q319 65 365 111L377 123L414 298\",120371:\"240 377L244 380Q248 384 255 390T272 404T296 419T325 434T361 446T401 454Q403 454 408 454T416 455H424L421 442Q419 435 413 405T406 373Q351 373 294 336T216 237Q213 231 201 173T178 60T164 2V0H119Q74 0 74 2L122 226L170 449Q170 450 213 450H255L247 414Q246 409 245 403T243 393T241 385T240 379T240 377\",120372:\"99 299Q99 318 106 341T133 393T195 441T298 461Q336 461 370 453T420 437L436 429Q436 428 421 389T405 350Q356 386 273 386H265Q248 386 237 384T211 371T191 337Q189 329 189 326Q189 320 190 315T194 306T200 299T209 293T218 289T228 285T239 283T251 281T263 278L270 276Q278 275 283 274T298 270T316 264T333 255T351 243T367 228T380 209T388 186T391 157Q391 96 341 43T193 -11Q171 -11 150 -8T114 -1T84 9T61 19T45 28T35 33Q35 36 67 116L76 109Q132 67 211 67Q258 67 279 88T301 135Q301 159 280 170T224 187T180 197Q141 212 120 239T99 299\",120373:\"245 68Q267 68 289 75T322 90L334 98Q338 94 338 28V24L324 19Q268 -4 218 -8Q198 -11 177 -11Q118 -11 118 75Q118 98 123 127Q125 137 149 251T174 369Q174 371 135 371H97V373L105 410L112 444H152L192 445L200 478Q208 512 213 541L219 571H261Q303 571 303 570T290 506L276 444H343Q410 444 410 443Q410 440 403 407T395 371H328Q261 371 261 369Q211 152 211 118Q211 68 245 68\",120374:\"166 -10H160Q146 -10 137 -8T115 0T97 22T90 63Q90 79 130 268L167 443Q167 444 214 444Q260 444 260 443L224 273Q187 97 187 86Q187 70 202 65T250 59Q303 59 336 83T379 139Q380 143 412 292T444 443Q444 444 491 444Q537 444 537 443T491 225T443 2V0H353V2L361 38L352 34Q344 29 326 22T286 7T232 -5T166 -10\",120375:\"177 6L108 442V444H201V442Q202 441 213 371T235 213T246 90V65Q259 117 429 406L450 444H495Q540 444 540 443Q539 442 411 221L282 1L230 0H178L177 6\",120376:\"148 5Q147 8 128 222T109 440L108 444H199V442Q200 441 204 385T214 253T219 140Q219 108 215 76Q215 72 214 67V65L215 66Q219 95 278 221L390 444H475V437Q497 203 497 121Q497 90 494 70Q494 67 494 67L496 73Q520 143 654 405L674 444H718Q762 444 762 443L534 1L483 0H432V5Q429 28 422 126T413 283Q413 343 416 370L417 378Q416 377 416 376Q401 303 248 12L242 0H148V5\",120377:\"317 229Q453 9 460 0H409L359 1L312 88Q266 176 265 176Q265 177 254 165T223 132T182 88L100 0H1L15 14Q29 28 61 59T118 115L236 229L226 244Q108 433 100 444H201L290 294L438 444H537L528 435Q526 432 512 418T468 376T418 327L317 229\",120378:\"11 -117L20 -120Q28 -124 46 -128T84 -132H100Q124 -122 149 -85Q200 -6 200 1Q200 17 155 204T109 442Q109 444 156 444H203Q203 443 208 419T221 357T235 277T248 190T254 114Q254 81 250 67V65Q251 65 251 67Q256 94 297 177Q339 259 422 397L450 444H540Q540 443 386 186T219 -90Q179 -153 145 -179T73 -205Q52 -205 34 -202Q29 -202 21 -201T7 -198L1 -197Q1 -196 6 -157T11 -117\",120379:\"129 408L136 444H315Q494 444 494 443Q494 441 489 419L484 396L164 76L291 77Q418 77 418 76T411 41T402 2V0H215Q28 0 28 2L34 27L38 50L360 371L240 370Q121 370 121 371Q124 388 129 408\",120432:\"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221\",120433:\"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176\",120434:\"40 305Q40 437 110 529T281 622Q315 622 343 611T387 589T404 578Q409 585 415 596T425 611T435 618T452 622Q472 622 478 609T485 566Q485 559 485 540T484 508V460Q484 413 478 403T442 393Q417 393 409 402Q400 409 400 420Q400 428 395 445T380 487T347 528T295 546Q235 546 180 483T124 306Q124 245 141 197T186 121T241 80T296 66Q346 66 373 103T400 178Q400 209 435 209H442H450Q484 209 484 172Q480 96 421 43T281 -11Q177 -11 109 84T40 305\",120435:\"38 1Q16 8 16 38Q16 62 32 73Q39 76 58 76H78V535H58Q40 535 32 538Q16 548 16 573Q16 587 17 591Q23 604 34 607T83 611H166H176Q188 611 209 611T239 612Q299 612 337 597T415 530Q485 438 485 300Q485 180 431 100T301 3L291 1H38ZM400 301Q400 363 385 410T346 482T303 519T267 534Q261 535 210 535H162V76H214L267 77Q323 89 361 148T400 301\",120436:\"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271\",120437:\"384 260Q384 230 377 221T342 212Q317 212 309 220Q300 229 300 252V268H179V76H249Q264 67 267 61T271 38Q271 10 249 1H44Q22 9 22 32V38Q22 63 39 73Q45 76 69 76H95V535H69H59Q42 535 32 542T22 573Q22 602 44 610H50Q56 610 66 610T91 610T125 610T164 611T208 611T257 611H468Q470 609 475 606T481 602T485 598T488 593T489 586T490 576T490 562V526V488Q490 452 472 444Q468 442 448 442Q423 442 415 450Q408 457 407 463T406 501V535H179V344H300V360Q300 383 309 392T342 401Q373 401 382 381Q384 376 384 306V260\",120438:\"38 306Q38 447 105 534T261 622Q280 622 298 618T329 608T350 596T366 585L371 581Q373 581 377 591T390 612T417 622Q437 622 443 609T450 566Q450 559 450 540T449 508V460Q449 413 443 403T407 393Q392 393 386 394T373 402T364 426Q360 472 335 509T271 546Q214 546 168 477T121 308Q121 210 164 138T271 65Q293 65 310 78T337 109T352 147T360 180T362 195Q362 196 333 196L304 197Q282 204 282 227V234Q282 247 282 251T288 261T304 272H474Q488 263 492 256T496 234Q496 211 479 199Q475 197 461 196H449V21Q441 6 434 3T412 -1H407H402Q385 -1 379 3T364 28Q350 14 322 2T260 -11Q173 -11 106 76T38 306\",120439:\"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571\",120440:\"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400\",120441:\"202 543T202 573T224 610H228Q231 610 237 610T251 610T269 610T291 611T315 611T342 611H457Q471 602 475 595T479 573Q479 549 462 538Q454 535 432 535H408V328Q408 159 408 133T402 93Q386 48 340 19T229 -11Q158 -11 108 16T57 100Q57 129 73 141T108 154Q128 154 143 140T159 102Q159 93 155 79Q188 65 228 65H230Q290 65 318 106Q323 115 323 139T324 329V535H274L224 536Q202 543 202 573\",120442:\"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573\",120443:\"27 594Q34 605 43 608T84 611H154H213Q258 611 269 605T281 573Q281 546 263 538Q257 535 222 535H185V76H404V118V145Q404 168 411 177T446 186H453Q478 186 486 167Q488 161 488 93V50Q488 24 485 17T466 1L258 0H147H99Q47 0 36 6T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594\",120444:\"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50\",120445:\"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571\",120446:\"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513\",120447:\"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421\",120448:\"56 306Q56 380 58 426T68 510T87 568T120 600T170 617T240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 124 447 66Q433 23 394 6L424 -53Q454 -112 454 -118Q454 -128 441 -138H377Q367 -135 363 -129T333 -69L304 -11H254Q205 -10 180 -8T128 6T91 36T70 92T58 178T56 306ZM227 151Q227 171 262 171H276H281Q292 171 296 171T305 170T313 165T317 158T323 145T332 127L353 88Q356 88 361 95T372 131T382 202Q384 228 384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 248 141 217T146 154T157 109T178 83T212 68T262 65H266L264 70Q261 75 256 85T247 105Q227 145 227 151\",120449:\"16 571Q16 598 27 605T76 612Q84 612 108 612T148 611Q268 611 294 605Q346 592 389 550T432 440Q432 394 410 359Q393 329 366 310L358 303Q387 273 399 239Q405 219 405 178T408 106T421 68Q426 65 428 65Q433 65 435 74T438 96T441 112Q450 130 480 130H485Q519 130 522 100Q522 79 516 56T488 11T434 -11Q421 -11 408 -8T377 5T344 37T324 93Q322 101 322 154L321 209Q304 257 257 267Q252 268 207 268H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571ZM348 440Q348 478 321 502T260 532Q252 534 208 535H165V344H208Q212 344 223 344T239 345T252 346T266 348T278 351T293 358Q348 387 348 440\",120450:\"52 454Q52 524 107 572T229 621Q266 621 274 620Q326 610 360 588L371 581Q377 594 379 598T386 610T397 619T412 622Q433 622 439 610T446 570Q446 563 446 545T445 515V479Q445 441 444 432T436 417Q428 408 403 408T370 417Q361 424 361 434Q361 439 360 448T351 476T331 509T295 535T238 546Q194 546 163 522T132 458Q132 435 148 412Q155 401 166 393T192 380T218 371T247 364T270 359Q341 342 349 339Q389 325 418 296T461 229Q472 201 472 164Q469 92 417 41T287 -11Q240 -11 200 -1T143 19L126 29Q117 6 109 -2Q100 -11 84 -11Q64 -11 58 1T51 42Q51 49 51 66T52 95V135Q52 173 53 180T61 194Q70 203 95 203Q119 203 127 194Q136 186 136 168Q143 66 284 66H290Q325 66 350 85Q391 115 391 165Q391 204 369 228T322 260Q320 260 255 275T185 293Q123 309 88 355T52 454\",120451:\"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38\",120452:\"-3 573Q-3 597 8 604T50 612Q57 612 77 612T111 611H200Q214 602 218 595T222 573Q222 549 205 538Q198 535 175 535H151V359Q151 333 151 291Q152 177 156 162Q157 160 157 159Q165 123 193 95T262 66Q303 66 330 94T367 159Q371 175 371 191T373 359V535H349H339Q328 535 322 537T309 548T303 573T306 595T325 611H506Q520 602 524 595T528 573Q528 549 511 538Q504 535 481 535H457V364Q457 189 456 182Q448 101 394 45T262 -11Q189 -11 132 43T68 182Q67 189 67 364V535H43H33Q22 535 16 537T3 548T-3 573\",120453:\"19 578Q19 585 20 590T23 598T29 604T38 608T48 610T62 611T78 612T97 611T119 611H195Q210 602 213 596T217 573Q217 561 216 555T206 542T179 535H164Q166 529 188 435T235 231T261 94L262 84V88Q263 91 263 94Q265 121 289 231T336 438L360 535H345Q308 535 308 566V573Q308 586 308 590T314 600T330 611H484Q499 602 502 595T505 573Q505 560 504 554T493 541T465 535H447L384 278Q321 19 319 14Q309 -7 278 -7H262H246Q215 -7 205 14Q203 19 140 278L78 535H59Q45 535 38 536T25 547T19 573V578\",120454:\"459 611Q491 611 501 605T512 573Q512 538 482 535H474L439 276Q406 26 402 11Q398 2 389 -3Q387 -3 386 -4L380 -7H359H349Q324 -7 313 13Q307 29 285 139T263 275Q263 283 262 283Q261 282 261 274Q261 248 239 137T211 13Q200 -7 175 -7H165H144Q136 -3 127 3Q121 10 117 36T85 276L50 535H42Q26 536 19 545T12 564V573Q12 603 33 610Q37 611 101 611H134Q165 611 175 604T186 573Q186 563 186 559T182 547T169 538T143 535H122V531Q124 517 133 446T155 266T172 96V84L173 102Q176 157 192 243T215 346Q227 367 259 367H262H265Q297 367 309 346Q316 329 332 243T351 102L352 84V96Q356 161 368 266T390 444T402 531V535H381Q366 535 359 536T345 547T338 573Q338 600 356 608Q362 611 425 611H459\",120455:\"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571\",120456:\"20 573Q20 597 30 604T72 611H121H198Q212 602 216 595T220 573Q220 568 219 563T217 555T214 549T211 544T207 541T203 538T198 537T194 536T190 536L188 535Q179 535 179 534L188 516Q196 497 208 470T232 415T252 363T261 332Q261 329 262 329T263 332Q263 354 333 508L345 534Q345 535 336 535Q305 538 305 567V573Q305 589 308 595T327 611H483Q505 598 505 573Q505 549 488 538Q481 535 460 535H438L304 245V76H325H331Q343 76 350 75T363 64T369 38Q369 10 347 1H178Q167 5 162 11T157 21T156 38V44Q156 66 172 73Q180 76 199 76H220V245L86 535H64Q44 535 36 538Q20 548 20 573\",120457:\"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71\",120458:\"126 306Q105 306 90 321T74 359Q74 439 211 439Q268 439 276 438Q343 426 383 390T430 306Q431 301 431 190V81Q446 79 465 78T492 76T509 72T521 60T524 38Q524 11 506 3Q502 1 466 1Q426 1 406 5T379 14T355 36L345 30Q284 -6 205 -6Q135 -6 92 39T48 141Q48 182 79 212T158 256T252 278T342 285H347V290Q347 315 325 335T267 362Q258 363 224 363Q189 363 185 362H179L178 358Q178 353 178 352T176 345T174 337T170 330T165 322T158 316T150 311T139 308T126 306ZM132 140Q132 115 157 93T224 70Q269 70 302 87T344 133Q346 139 347 175V211H339Q256 209 194 190T132 140\",120459:\"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 491V396L182 402Q217 424 256 431Q280 437 309 437Q376 437 434 379T492 217Q492 162 473 118T422 47T358 8T293 -6Q229 -6 174 38Q171 13 163 7T135 1H131H122Q99 1 90 23L89 279V535H58L27 536Q4 543 4 573ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215\",120460:\"291 -6Q196 -6 131 60T66 216Q66 296 119 361Q154 403 200 421T273 439Q275 440 293 440H313Q400 440 433 409Q454 388 454 359Q454 335 439 321T402 306Q380 306 365 321T350 357V362L340 363Q339 363 326 363T303 364Q280 364 266 362Q217 352 184 313T151 215Q151 153 199 112T313 70Q341 70 357 85T381 118T394 140Q402 146 424 146Q443 146 447 144Q466 137 466 117Q466 106 457 88T429 47T374 10T291 -6\",120461:\"266 573Q266 596 277 603T314 611H352H385Q411 611 419 607T435 586V76H498Q512 67 516 60T520 38Q520 9 498 1H436Q429 1 417 1T398 0Q375 0 363 7T351 34V43L342 36Q288 -6 223 -6Q143 -6 87 58T31 216Q31 307 88 372T230 437Q292 437 342 405L351 399V535H320L289 536Q266 543 266 573ZM351 290Q347 302 337 316T302 346T244 361Q193 361 154 319T115 215Q115 152 152 111T235 70Q314 70 351 170V290\",120462:\"48 217Q48 295 100 361T248 439L258 440Q268 440 274 440Q329 438 369 416T428 359T456 292T464 228Q464 215 461 208T454 198T442 190L288 189H135L138 179Q153 132 199 102T303 71Q336 71 353 86T380 120T398 143Q404 146 422 146Q453 146 462 126Q464 120 464 116Q464 84 416 39T285 -6Q187 -6 118 59T48 217ZM377 264Q371 291 365 306T341 338T294 362Q288 363 264 363Q225 363 190 336T139 264H377\",120463:\"43 395Q44 405 44 408T47 416T53 423T66 431H176V461Q176 500 182 518Q201 570 252 593T353 617Q399 614 418 593T437 548Q437 528 424 514T387 499Q365 499 353 511T338 537V541H328Q275 536 261 494Q260 490 260 460V431H327Q334 431 346 431T364 432Q392 432 404 425T416 393T405 362T365 355H327H260V76H319Q375 76 388 71T401 38Q401 27 400 23T395 12T379 1H58Q47 6 42 12T36 23T35 38Q35 65 53 73Q59 76 117 76H176V355H121H93Q64 355 54 362T43 395\",120464:\"60 274Q60 337 107 386T233 436Q278 436 316 417L329 410L338 416Q384 442 427 442T489 423T509 381T494 345T460 332Q449 332 440 338Q432 341 427 348T419 360T415 365Q414 364 410 364L383 355Q406 320 406 274Q406 211 358 162T233 112Q189 112 155 128L146 133Q142 125 142 115Q142 99 150 85T175 71Q182 72 187 70Q188 70 195 70T218 70T254 69Q259 69 275 69T297 69T318 68T340 66T361 62T384 57T405 49T428 38Q495 -1 495 -76Q495 -143 427 -186T262 -229Q161 -229 94 -185T29 -73Q30 -60 33 -48T39 -26T47 -8T57 8T67 20T77 30T86 38L91 43Q91 44 86 53T75 80T70 117Q70 142 89 183L83 194Q60 232 60 274ZM321 274Q321 312 296 337T230 362Q197 362 171 338T145 274Q145 235 170 211T233 187Q273 187 297 212T321 274ZM422 -78Q422 -54 408 -38T366 -15T315 -6T255 -4H200Q198 -4 193 -4T183 -3Q148 -3 125 -26T102 -78Q102 -110 151 -132T261 -154Q321 -154 371 -132T422 -78\",120465:\"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 489Q173 394 175 394L186 402Q197 410 219 420T269 434Q278 436 306 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 10 286 32V38V46Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V535H58L27 536Q4 543 4 573\",120466:\"202 538T202 559T218 596T260 612Q283 612 300 597T317 560Q317 538 300 523T260 507Q235 507 219 522ZM411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411\",120467:\"261 559Q261 580 277 596T319 612Q342 612 359 597T376 560T360 523T320 507Q296 507 279 523T261 559ZM75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107\",120468:\"13 42Q13 63 23 69T69 76H102V535H69H54Q34 535 24 542T13 573Q13 588 15 593Q22 605 29 608T56 611H95Q113 611 122 611T140 610T152 609T159 607T163 603T167 597T173 589V413L174 237L295 355H275Q260 355 253 356T239 367T232 393Q232 419 243 425T304 431H359H464Q479 422 482 415T485 393Q485 364 464 356L431 355H398L293 254L427 76H486Q501 67 504 60T507 38Q507 28 507 24T501 12T486 1H314Q292 8 292 38Q292 62 308 73Q312 75 326 76L338 77L290 140Q279 154 267 171T248 196L242 204L207 171L173 139V76H206H221Q241 76 251 69T262 38Q262 11 244 3Q240 1 138 1Q123 1 100 1T70 0Q32 0 23 7T13 42\",120469:\"51 573Q51 602 73 610H76Q79 610 84 610T97 610T113 610T133 611T155 611T179 611H282Q301 598 304 586V76H452Q466 67 470 60T474 38Q474 10 452 1H73Q51 9 51 32V38Q51 54 54 60T73 76H220V535H146L73 536Q51 545 51 567V573\",120470:\"133 76Q156 74 164 67T172 38Q172 9 151 1H11Q-12 8 -12 38Q-12 61 5 73Q10 75 28 76H45V355H28Q10 356 5 358Q-12 370 -12 393Q-12 419 11 431H52H70Q91 431 100 427T116 405Q163 436 200 436Q255 436 281 390L285 394Q289 398 292 400T301 407T314 415T329 423T346 429T366 434T389 436H392Q425 436 448 411Q469 390 474 360T480 268V232V203V76H497Q520 74 528 67T536 38Q536 9 515 1H396Q374 9 374 32V38Q374 73 402 76H409V191V242Q409 317 404 339T375 361Q343 361 323 332T299 264Q298 258 298 165V76H315Q338 74 346 67T354 38Q354 9 333 1H214Q192 9 192 32V38Q192 73 220 76H227V191V242Q227 317 222 339T193 361Q161 361 141 332T117 264Q116 258 116 165V76H133\",120471:\"89 431Q94 431 105 431T122 432Q173 432 173 399Q173 394 175 394Q176 394 190 404T233 425T298 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 9 286 32V38V45Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89\",120472:\"52 216Q52 318 118 379T261 440Q343 440 407 378T472 216Q472 121 410 58T262 -6Q176 -6 114 58T52 216ZM388 225Q388 281 351 322T261 364Q213 364 175 325T136 225Q136 158 174 114T262 70T350 114T388 225\",120473:\"89 431Q93 431 104 431T121 432Q173 432 173 401V396L182 402Q237 437 305 437Q376 437 434 378T492 217Q492 146 459 93T382 17T291 -6Q261 -6 232 5T188 26L174 37Q173 37 173 -54V-146H236Q250 -155 254 -162T258 -184Q258 -213 236 -221H27Q4 -214 4 -184Q4 -169 8 -162T27 -146H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215\",120474:\"34 215Q34 309 91 368T222 436Q224 436 231 436T242 437Q309 437 372 390V401Q372 419 381 428T414 437Q426 437 432 436T444 430T456 412V-146H489H504Q524 -146 534 -153T545 -184Q545 -211 527 -219Q523 -221 414 -221Q398 -221 374 -221T342 -222Q304 -222 294 -216T283 -184Q283 -157 301 -149Q307 -146 339 -146H372V-51Q372 43 371 43L364 38Q357 33 345 26T318 12T280 -1T236 -6Q155 -6 95 55T34 215ZM117 215Q117 152 157 111T250 70Q289 70 318 92T363 146Q372 163 372 192V215L371 263Q339 360 254 360Q206 360 162 321T117 215\",120475:\"327 76Q359 76 369 70T380 38Q380 10 359 1H47Q24 8 24 38Q24 54 28 61T47 76H145V355H96L47 356Q24 363 24 393Q24 409 28 416T47 431H207Q223 419 226 414T229 393V387V369Q297 437 394 437Q436 437 461 417T487 368Q487 347 473 332T438 317Q428 317 420 320T407 327T398 337T393 347T390 356L388 361Q348 356 324 345Q228 299 228 170Q228 161 228 151T229 138V76H293H327\",120476:\"72 317Q72 361 108 396T229 439Q231 439 245 439T268 440Q303 439 324 435T353 427T363 423L372 432Q380 440 397 440Q430 440 430 395Q430 390 430 380T429 366V335Q429 311 422 302T387 293Q364 293 355 300T346 316T343 336T325 353Q306 364 257 364Q209 364 178 351T147 317Q147 284 231 272Q327 256 357 247Q458 210 458 129V121Q458 74 413 34T271 -6Q246 -6 224 -3T189 5T165 14T150 22T144 26Q142 23 139 18T135 11T132 6T128 1T124 -2T119 -4T113 -5T104 -6Q84 -6 78 6T71 43Q71 48 71 60T72 79Q72 132 73 141T81 157Q90 166 115 166Q135 166 142 162T157 140Q168 108 191 90T260 70Q297 70 323 76T361 91T379 110T384 129Q384 157 346 171T247 195T165 212Q119 228 96 256T72 317\",120477:\"25 395Q26 405 26 408T29 416T35 423T48 431H145V481L146 532Q154 547 161 550T184 554H189Q218 554 227 534Q229 529 229 480V431H405Q406 430 411 427T418 422T422 416T426 407T427 393Q427 387 427 382T424 374T421 368T417 363T413 360T408 358L405 356L317 355H229V249Q229 237 229 214T228 179Q228 126 241 98T295 70Q354 70 365 149Q366 167 375 174Q383 182 407 182H415Q438 182 446 166Q448 161 448 148Q448 84 398 39T282 -6Q226 -6 189 29T146 128Q145 134 145 247V355H96H72Q45 355 35 362T25 395\",120478:\"4 393Q4 416 15 423T52 431H90Q141 431 151 429T168 417Q171 412 173 409V254L174 100Q182 70 244 70Q320 70 344 119Q349 130 350 144T351 248V355H320L289 356Q266 363 266 393Q266 408 270 415T289 431H351H386Q409 431 418 428T433 411Q435 406 435 241V76H498Q512 67 516 60T520 38Q520 9 498 1H436H394Q372 1 364 5T351 26L342 21Q293 -5 227 -5Q118 -5 96 67Q91 82 90 101T89 227V355H58L27 356Q4 363 4 393\",120479:\"24 392Q24 417 36 424T79 432Q85 432 103 432T132 431H215Q229 422 233 415T237 393Q237 355 198 355H193H172L262 77L352 355H331H323Q288 355 288 393Q288 409 291 415T310 431H478Q491 423 495 416T500 393Q500 364 478 356L452 355H426L374 190Q320 24 318 20Q307 -4 273 -4H262H251Q217 -4 206 20Q204 24 150 190L98 355H72L47 356Q24 363 24 392\",120480:\"54 355Q16 355 16 388V393Q16 423 37 430Q41 431 125 431H162Q206 431 218 425T230 393Q230 366 212 358Q206 355 174 355Q141 355 141 354L150 296Q181 110 181 89V84Q182 85 183 96Q185 118 199 173T218 237Q223 247 245 259H264H268Q294 259 309 240Q315 229 329 174T343 92Q343 84 344 84V86Q344 88 344 91T345 97Q347 125 356 187T374 301T383 354Q383 355 350 355H333Q314 355 304 362T294 393Q294 420 312 428Q318 431 401 431H440Q485 431 496 425T508 393Q508 382 508 377T498 363T470 355L455 354Q455 353 441 271T413 104T396 16Q384 -4 355 -4H351Q315 -4 305 9T280 79Q278 90 276 96Q265 149 265 169Q265 176 264 169Q263 166 263 162Q261 130 248 79T230 18Q220 -4 183 -4H175L151 -3Q134 5 127 17L112 102Q97 188 83 270T69 354Q62 355 54 355\",120481:\"35 393Q35 417 46 424T89 432Q95 432 112 432T141 431H223Q238 422 241 415T244 393Q244 389 244 383T237 367T216 355Q209 355 209 354L234 319Q259 286 260 286L308 354Q308 355 301 355Q285 356 278 365T270 384L271 393Q271 420 289 428Q295 431 376 431H459Q460 430 465 427T472 422T476 416T480 407T481 393Q481 368 470 362T434 355H425H392L344 290Q295 225 295 223Q294 223 309 203T350 149L405 77L439 76H453Q474 76 484 69T495 38Q495 10 473 1H303Q281 9 281 32V38Q281 49 282 54T290 67T313 76Q324 76 324 77L259 173L197 77Q202 76 209 76Q225 75 233 68T241 55T242 38Q242 28 242 24T236 12T221 1H51Q29 9 29 32V38Q29 48 29 51T31 59T38 67T51 76H117L171 149Q224 222 224 223L124 355H90H78Q54 355 45 361T35 393\",120482:\"26 393Q26 417 37 424T80 431H134H217Q232 422 235 416T239 393Q239 379 236 371T226 360T214 356T197 355L179 354V353L188 330Q197 306 209 272T235 201T259 133T271 89V84L274 95Q279 122 298 185T335 300T352 354Q352 355 331 355Q312 355 304 358Q288 368 288 393Q288 408 291 415T310 431H478Q479 430 484 427T491 422T495 416T499 407T500 393Q500 376 493 367T479 357T458 355H452Q426 355 425 353Q420 337 351 124T280 -94Q240 -195 168 -220Q147 -228 125 -228Q89 -228 66 -201T42 -139Q42 -116 56 -102T93 -87Q117 -87 130 -102T144 -135V-138H126Q121 -148 121 -150T130 -152Q182 -147 207 -87Q211 -78 223 -40T236 1Q230 10 102 355H75L49 356Q26 363 26 393\",120483:\"56 1Q40 7 37 14T34 41Q34 59 36 64Q39 67 43 73Q65 95 191 213T341 355H133V334Q133 306 124 297Q116 289 91 289H83Q60 289 51 308Q49 313 49 361L50 409Q59 427 72 430H78Q83 430 92 430T115 430T144 430T179 431T219 431T262 431H450Q452 430 455 428T459 424T463 422T466 419T468 416T469 413T470 409T471 404T472 398T472 391Q472 374 469 368L462 358Q453 349 315 218Q210 122 164 76H391V103Q391 136 400 146Q409 155 433 155Q464 155 473 135Q475 130 475 78V46Q475 24 472 16T453 1H56\",120488:\"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390\",120489:\"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192\",120490:\"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H612V676Q614 670 627 552T643 428V424H581V428Q580 430 576 461T562 524T532 576Q512 596 481 605T426 616T357 618H304V62H439V0H425\",120491:\"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137\",120492:\"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286\",120493:\"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80\",120494:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400\",120495:\"629 -10T446 -10T164 89T64 340Q64 380 71 420T102 510T163 596T266 662T418 696H438Q488 696 499 695Q582 686 644 655T741 584T796 495T823 409T829 338Q829 188 729 89ZM439 645Q416 645 390 638T333 615T275 564T236 480Q221 423 221 341Q221 272 230 228Q247 144 301 94T447 43T592 93T663 228Q672 272 672 341Q672 645 439 645ZM286 242V446H348V412H545V446H607V242H545V276H348V242H286\",120496:\"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397\",120497:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400\",120498:\"285 0Q267 3 154 3Q56 3 47 0H40V62H131Q131 63 167 160T244 369T321 578T359 678Q366 698 393 698H404H413Q437 698 446 678Q448 672 560 369T674 62H765V0H754Q733 3 604 3Q453 3 429 0H416V62H461L507 63L355 470Q353 468 279 265L203 63L249 62H294V0H285\",120499:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314\",120500:\"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314\",120501:\"54 465L63 674Q63 675 383 675T703 674L712 465Q712 464 681 464H650V467Q650 490 646 516T632 545Q612 550 383 550H283Q169 550 149 548T124 531Q123 530 123 529Q116 506 116 467V464H85Q54 464 54 465ZM160 256V447H222V414H544V447H606V256H544V289H222V256H160ZM57 0L48 222H110V219Q110 147 125 133Q127 130 130 129T160 127T235 126T383 126Q482 126 530 126T604 127T635 129T641 133Q656 146 656 219V222H718L709 0H57\",120502:\"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454\",120503:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V618H39V680H860V618H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V618H304V62H412V0H400\",120504:\"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475\",120506:\"766 271Q764 266 750 137T735 4V0H407Q74 0 71 4L70 5Q64 9 64 18Q64 24 82 41T213 158L359 288Q360 288 320 336T214 460Q67 633 66 635Q64 638 64 655Q64 679 75 684Q78 686 407 686H735V682Q738 676 751 558T766 434V430H735Q704 430 704 431Q704 434 703 444T696 477T681 520T654 563T613 598Q578 615 527 619T371 624H281L396 489Q506 358 513 351Q517 342 512 334Q503 325 371 208Q338 179 303 147T249 99L231 83L243 81Q258 81 364 81Q382 81 418 81T470 82T513 83T554 88T587 96T619 109T645 129Q689 173 702 260L704 274Q704 275 735 275H766V271\",120507:\"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425\",120508:\"64 556Q69 619 114 658T224 697Q271 697 310 677T375 622T417 554T444 484L447 477V479Q456 516 473 551T516 620T582 676T670 697Q735 697 780 656T829 556Q829 539 818 532H772Q761 539 761 548Q761 571 681 571Q664 571 653 570T623 562T587 537T555 490Q536 448 531 410T525 300V210V62H660V0H646L447 3Q257 1 247 0H233V62H368V210V301Q368 373 363 410T338 490Q324 518 307 536T270 561T240 569T212 571Q132 571 132 548Q132 539 121 532H75Q64 538 64 556\",120509:\"609 0Q582 3 415 3T221 0H207V62H342V168L328 169Q193 180 117 241Q64 286 64 343T117 445Q193 506 328 517L342 518V624H207V686H221Q248 683 415 683T609 686H623V624H488V518L502 517Q637 506 713 445Q766 400 766 343T713 241Q637 180 502 169L488 168V62H623V0H609ZM342 219T342 343T340 467Q328 467 304 459Q277 451 261 439T237 409T228 378T226 343Q226 314 229 296T250 259T301 228Q331 219 341 219Q342 219 342 343ZM604 343Q604 365 602 379T591 413T560 446T503 464L489 467Q488 467 488 343T489 219Q499 219 529 228Q554 236 570 248T593 277T602 308T604 343\",120510:\"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327\",120511:\"64 515Q64 532 71 536T104 540H139Q200 540 207 538Q225 533 236 521T253 489T260 454T264 414Q264 340 287 296T347 237Q369 226 373 226Q374 226 374 425V624H239V686H253Q280 683 447 683T641 686H655V624H520V226L522 227Q525 228 531 229T552 240T580 261T606 298T624 354Q627 368 628 394T631 440T637 482T654 518T686 538Q693 540 754 540H794Q817 540 823 536T829 515Q829 500 824 495T811 489T796 483T782 461T775 408Q767 212 568 175Q526 168 521 168Q520 168 520 115V62H655V0H641Q614 3 447 3T253 0H239V62H374V168L364 169Q290 178 243 203Q126 261 118 409Q117 443 111 461T98 484T83 489T70 495T64 515\",120512:\"598 645T415 645T232 458Q232 385 275 239T318 26Q318 8 311 4T272 -1Q265 -1 240 -1T196 0H88V3Q86 5 70 108Q52 211 51 212V215H113V212Q123 149 132 133Q136 124 149 122T202 118Q241 118 241 119Q241 132 132 277Q64 378 64 457Q64 564 158 630T403 696Q487 696 543 685T661 638Q722 599 744 549T766 458Q766 434 761 410T749 368T729 327T709 293T684 258T663 229Q632 187 614 160T592 126L589 119Q589 118 628 118Q667 119 680 121T698 133Q702 140 706 160T714 196L717 212V215H779V212Q778 211 760 108Q744 5 742 3V0H634H562Q528 0 520 4T512 26Q512 92 555 238T598 458Q598 645 415 645\",120513:\"56 673Q56 679 65 686H892Q901 679 901 673Q901 668 714 331T521 -15Q518 -18 506 -24H452Q440 -19 436 -15Q431 -8 337 162T150 501L57 669Q57 670 56 672V673ZM528 136L758 553H297Q298 551 414 341L528 136\",120546:\"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260\",120547:\"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229\",120548:\"49 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H714Q721 676 721 669Q721 664 708 557T694 447Q692 440 674 440H662Q655 445 655 454Q655 455 658 480T661 534Q661 572 652 592Q638 619 603 626T501 634H471Q398 633 393 630Q389 628 386 622Q385 619 315 341T245 60Q245 46 333 46H345Q366 46 366 35Q366 33 363 21T358 6Q356 1 339 1Q334 1 292 1T187 2Q122 2 88 2T49 1\",120549:\"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346\",120550:\"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213\",120551:\"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8\",120552:\"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637\",120553:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM640 466Q640 523 625 565T583 628T532 658T479 668Q370 668 273 559T151 255Q150 245 150 213Q150 156 165 116T207 55T259 26T313 17Q385 17 451 63T561 184Q590 234 615 312T640 466ZM510 276Q510 278 512 288L515 298Q515 299 384 299H253L250 285Q246 271 244 268T231 265H227Q216 265 214 266T207 274Q207 278 223 345T244 416Q247 419 260 419H263Q280 419 280 408Q280 406 278 396L275 386Q275 385 406 385H537L540 399Q544 413 546 416T559 419H563Q574 419 576 418T583 410Q583 403 566 339Q549 271 544 267Q542 265 538 265H530H527Q510 265 510 276\",120554:\"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1\",120555:\"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628\",120556:\"135 2Q114 2 90 2T60 1Q35 1 35 11Q35 28 42 40Q45 46 55 46Q119 46 151 94Q153 97 325 402T498 709Q505 716 526 716Q543 716 549 710Q550 709 560 548T580 224T591 57Q594 52 595 52Q603 47 638 46H663Q670 39 670 35Q669 12 657 0H644Q613 2 530 2Q497 2 469 2T424 2T405 1Q388 1 388 10Q388 15 391 24Q392 27 393 32T395 38T397 41T401 44T406 45T415 46Q473 46 487 64L472 306Q468 365 465 426T459 518L457 550Q456 550 328 322T198 88Q196 80 196 77Q196 49 243 46Q261 46 261 35Q261 34 259 22Q256 7 254 4T240 0Q237 0 211 1T135 2\",120557:\"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629\",120558:\"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637\",120559:\"222 668Q222 670 229 677H654Q677 677 705 677T740 678Q764 678 770 676T777 667Q777 662 764 594Q761 579 757 559T751 528L749 519Q747 512 729 512H717Q710 519 710 525Q712 532 715 559T719 591Q718 595 711 595Q682 598 486 598Q252 598 246 592Q239 587 228 552L216 517Q214 512 197 512H185Q178 517 178 522Q178 524 198 591T222 668ZM227 262Q218 262 215 262T209 266L207 270L227 356Q247 435 250 439Q253 443 260 443H267H280Q287 438 287 433Q287 430 285 420T280 402L278 393Q278 392 431 392H585L590 415Q595 436 598 439T612 443H628Q635 438 635 433Q635 431 615 351T594 268Q592 262 575 262H572Q556 262 556 272Q556 280 560 293L565 313H258L252 292Q248 271 245 267T230 262H227ZM60 0Q53 4 53 11Q53 14 68 89T84 169Q88 176 98 176H104H116Q123 169 123 163Q122 160 117 127T112 88Q112 80 243 80H351H454Q554 80 574 81T597 88V89Q603 100 610 121T622 157T630 174Q633 176 646 176H658Q665 171 665 166Q665 164 643 89T618 7Q616 2 607 1T548 0H335H60\",120560:\"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476\",120561:\"48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H541Q621 680 709 680T812 681Q841 681 855 681T877 679T886 676T887 670Q887 663 885 656Q880 637 875 635Q871 634 860 634H854Q827 634 794 631Q780 628 775 619Q773 614 704 338T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q528 52 533 61Q536 67 572 209T642 491T678 632Q678 634 533 634H388Q387 631 316 347T245 59Q245 55 246 54T253 50T270 48T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1\",120562:\"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554\",120564:\"65 0Q58 4 58 11Q58 16 114 67Q173 119 222 164L377 304Q378 305 340 386T261 552T218 644Q217 648 219 660Q224 678 228 681Q231 683 515 683H799Q804 678 806 674Q806 667 793 559T778 448Q774 443 759 443Q747 443 743 445T739 456Q739 458 741 477T743 516Q743 552 734 574T710 609T663 627T596 635T502 637Q480 637 469 637H339Q344 627 411 486T478 341V339Q477 337 477 336L457 318Q437 300 398 265T322 196L168 57Q167 56 188 56T258 56H359Q426 56 463 58T537 69T596 97T639 146T680 225Q686 243 689 246T702 250H705Q726 250 726 239Q726 238 683 123T639 5Q637 1 610 1Q577 0 348 0H65\",120565:\"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40\",120566:\"45 535Q34 535 31 536T28 544Q28 554 39 578T70 631T126 683T206 705Q230 705 251 698T295 671T330 612T344 514Q344 477 342 473V472Q343 472 347 480T361 509T380 547Q471 704 596 704Q615 704 625 702Q659 692 679 663T700 595Q700 565 696 552T687 537T670 535Q656 535 653 536T649 543Q649 544 649 550T650 562Q650 589 629 605T575 621Q502 621 448 547T365 361Q290 70 290 60Q290 46 379 46H404Q410 40 410 39T408 19Q404 6 398 0H381Q340 2 225 2Q184 2 149 2T94 2T69 1Q61 1 58 1T53 4T51 10Q51 11 53 23Q54 25 55 30T56 36T58 40T60 43T62 44T67 46T73 46T82 46H89Q144 46 163 49T190 62L198 93Q206 124 217 169T241 262T262 350T274 404Q281 445 281 486V494Q281 621 185 621Q147 621 116 601T74 550Q71 539 66 537T45 535\",120567:\"356 624Q356 637 267 637H243Q237 642 237 645T239 664Q243 677 249 683H264Q342 681 429 681Q565 681 571 683H583Q589 677 589 674T587 656Q582 641 578 637H540Q516 637 504 637T479 633T463 630T454 623T448 613T443 597T438 576Q436 566 434 556T430 539L428 533Q442 533 472 526T543 502T613 451T642 373Q642 301 567 241T386 158L336 150Q332 150 331 146Q310 66 310 60Q310 46 399 46H424Q430 40 430 39T428 19Q424 6 418 0H401Q360 2 247 2Q207 2 173 2T119 2T95 1Q87 1 84 1T79 4T77 10Q77 11 79 23Q80 25 81 30T82 36T84 40T86 43T88 44T93 46T99 46T108 46H115Q170 46 189 49T216 62Q220 74 228 107L239 150L223 152Q139 164 82 205T24 311Q24 396 125 462Q207 517 335 533L346 578Q356 619 356 624ZM130 291Q130 203 241 188H249Q249 190 287 342L325 495H324Q313 495 291 491T229 466T168 414Q130 357 130 291ZM536 393Q536 440 507 463T418 496L341 187L351 189Q443 201 487 255Q536 314 536 393\",120568:\"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0\",120569:\"216 151Q48 174 48 329Q48 361 56 403T65 458Q65 482 58 494T43 507T28 510T21 520Q21 528 23 534T29 544L32 546H72H94Q110 546 119 544T139 536T154 514T159 476V465Q159 445 149 399T138 314Q142 229 197 201Q223 187 226 190L233 218Q240 246 253 300T280 407Q333 619 333 625Q333 637 244 637H220Q214 642 214 645T216 664Q220 677 226 683H241Q321 681 405 681Q543 681 549 683H560Q566 677 566 674T564 656Q559 641 555 637H517Q448 636 436 628Q429 623 423 600T373 404L320 192Q370 201 419 248Q451 281 469 317T500 400T518 457Q529 486 542 505T569 532T594 543T621 546H644H669Q692 546 692 536Q691 509 676 509Q623 509 593 399Q587 377 579 355T552 301T509 244T446 195T359 159Q324 151 314 151Q311 151 310 150T298 106T287 60Q287 46 376 46H401Q407 40 407 39T405 19Q401 6 395 0H378Q337 2 224 2Q184 2 150 2T96 2T72 1Q64 1 61 1T56 4T54 10Q54 11 56 23Q57 25 58 30T59 36T61 40T63 43T65 44T70 46T76 46T85 46H92Q147 46 166 49T193 62L204 106Q216 149 216 151\",120570:\"125 84Q127 78 194 76H243V78Q243 122 208 215T165 350Q164 359 162 389Q162 522 272 610Q328 656 396 680T525 704Q628 704 698 661Q734 637 755 601T781 544T786 504Q786 439 747 374T635 226T537 109Q518 81 518 77Q537 76 557 76Q608 76 620 78T640 92Q646 100 656 119T673 155T683 172Q690 173 698 173Q718 173 718 162Q718 161 681 82T642 2Q639 0 550 0H461Q455 5 455 9T458 28Q472 78 510 149T584 276T648 402T677 525Q677 594 636 631T530 668Q476 668 423 641T335 568Q284 499 271 400Q270 388 270 348Q270 298 277 228T285 115Q285 82 280 49T271 6Q269 1 258 1T175 0H87Q83 3 80 7V18Q80 22 82 98Q84 156 85 163T91 172Q94 173 104 173T119 172Q124 169 124 126Q125 104 125 84\",120572:\"34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26\",120573:\"29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431\",120574:\"31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249\",120575:\"195 609Q195 656 227 686T302 717Q319 716 351 709T407 697T433 690Q451 682 451 662Q451 644 438 628T403 612Q382 612 348 641T288 671T249 657T235 628Q235 584 334 463Q401 379 401 292Q401 169 340 80T205 -10H198Q127 -10 83 36T36 153Q36 286 151 382Q191 413 252 434Q252 435 245 449T230 481T214 521T201 566T195 609ZM112 130Q112 83 136 55T204 27Q233 27 256 51T291 111T309 178T316 232Q316 267 309 298T295 344T269 400L259 396Q215 381 183 342T137 256T118 179T112 130\",120576:\"190 -22Q124 -22 76 11T27 107Q27 174 97 232L107 239L99 248Q76 273 76 304Q76 364 144 408T290 452H302Q360 452 405 421Q428 405 428 392Q428 381 417 369T391 356Q382 356 371 365T338 383T283 392Q217 392 167 368T116 308Q116 289 133 272Q142 263 145 262T157 264Q188 278 238 278H243Q308 278 308 247Q308 206 223 206Q177 206 142 219L132 212Q68 169 68 112Q68 39 201 39Q253 39 286 49T328 72T345 94T362 105Q376 103 376 88Q376 79 365 62T334 26T275 -8T190 -22\",120577:\"296 643Q298 704 324 704Q342 704 342 687Q342 682 339 664T336 633Q336 623 337 618T338 611Q339 612 341 612Q343 614 354 616T374 618L384 619H394Q471 619 471 586Q467 548 386 546H372Q338 546 320 564L311 558Q235 506 175 398T114 190Q114 171 116 155T125 127T137 104T153 86T171 72T192 61T213 53T235 46T256 39L322 16Q389 -10 389 -80Q389 -119 364 -154T300 -202Q292 -204 274 -204Q247 -204 225 -196Q210 -192 193 -182T172 -167Q167 -159 173 -148Q180 -139 191 -139Q195 -139 221 -153T283 -168Q298 -166 310 -152T322 -117Q322 -91 302 -75T250 -51T183 -29T116 4T65 62T44 160Q44 287 121 410T293 590L302 595Q296 613 296 643\",120578:\"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287\",120579:\"35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132\",120580:\"139 -10Q111 -10 92 0T64 25T52 52T48 74Q48 89 55 109T85 199T135 375L137 384Q139 394 140 397T145 409T151 422T160 431T173 439T190 442Q202 442 213 435T225 410Q225 404 214 358T181 238T137 107Q126 74 126 54Q126 43 126 39T130 31T142 27H147Q206 27 255 78Q272 98 281 114T290 138T295 149T313 153Q321 153 324 153T329 152T332 149T332 143Q332 106 276 48T145 -10H139\",120581:\"83 -11Q70 -11 62 -4T51 8T49 17Q49 30 96 217T147 414Q160 442 193 442Q205 441 213 435T223 422T225 412Q225 401 208 337L192 270Q193 269 208 277T235 292Q252 304 306 349T396 412T467 431Q489 431 500 420T512 391Q512 366 494 347T449 327Q430 327 418 338T405 368Q405 370 407 380L397 375Q368 360 315 315L253 266L240 257H245Q262 257 300 251T366 230Q422 203 422 150Q422 140 417 114T411 67Q411 26 437 26Q484 26 513 137Q516 149 519 151T535 153Q554 153 554 144Q554 121 527 64T457 -7Q447 -10 431 -10Q386 -10 360 17T333 90Q333 108 336 122T339 146Q339 170 320 186T271 209T222 218T185 221H180L155 122Q129 22 126 16Q113 -11 83 -11\",120582:\"166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673\",120583:\"58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216\",120584:\"74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431\",120585:\"268 632Q268 704 296 704Q314 704 314 687Q314 682 311 664T308 635T309 620V616H315Q342 619 360 619Q443 619 443 586Q439 548 358 546H344Q326 546 317 549T290 566Q257 550 226 505T195 405Q195 381 201 364T211 342T218 337Q266 347 298 347Q375 347 375 314Q374 297 359 288T327 277T280 275Q234 275 208 283L195 286Q149 260 119 214T88 130Q88 116 90 108Q101 79 129 63T229 20Q238 17 243 15Q337 -21 354 -33Q383 -53 383 -94Q383 -137 351 -171T273 -205Q240 -205 202 -190T158 -167Q156 -163 156 -159Q156 -151 161 -146T176 -140Q182 -140 189 -143Q232 -168 274 -168Q286 -168 292 -165Q313 -151 313 -129Q313 -112 301 -104T232 -75Q214 -68 204 -64Q198 -62 171 -52T136 -38T107 -24T78 -8T56 12T36 37T26 66T21 103Q21 149 55 206T145 301L154 307L148 313Q141 319 136 323T124 338T111 358T103 382T99 413Q99 471 143 524T259 602L271 607Q268 618 268 632\",120586:\"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120\",120587:\"132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11\",120588:\"58 -216Q25 -216 23 -186Q23 -176 73 26T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 219 486 165T425 74T345 13T266 -10H255H248Q197 -10 165 35L160 41L133 -71Q108 -168 104 -181T92 -202Q76 -216 58 -216ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q217 269 193 170L176 102Q193 26 260 26Q298 26 334 62Q367 92 389 158T418 266T424 322\",120589:\"31 207Q31 306 115 374T302 442Q341 442 373 430T405 400Q405 392 399 383T379 374Q373 375 348 390T296 405Q222 405 160 357T98 249Q98 232 103 218T112 195T132 175T154 159T186 141T219 122Q234 114 255 102T286 85T299 78L302 74Q306 71 308 69T315 61T322 51T328 40T332 25T334 8Q334 -31 305 -69T224 -107Q194 -107 163 -92Q156 -88 156 -80Q156 -73 162 -67T178 -61Q186 -61 190 -63Q209 -71 224 -71Q244 -71 253 -59T263 -30Q263 -25 263 -21T260 -12T255 -4T248 3T239 9T227 17T213 25T195 34T174 46Q170 48 150 58T122 74T97 90T70 112T51 137T36 169T31 207\",120590:\"184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278\",120591:\"39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284\",120592:\"413 384Q413 406 432 424T473 443Q492 443 507 425T523 367Q523 334 508 270T468 153Q424 63 373 27T282 -10H268Q220 -10 186 2T135 36T111 78T104 121Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Q200 441 225 419T250 355Q248 336 247 334Q247 331 232 291T201 199T185 118Q185 68 211 47T275 26Q317 26 355 57T416 132T452 216T465 277Q465 301 457 318T439 343T421 361T413 384\",120593:\"92 210Q92 176 106 149T142 108T185 85T220 72L235 70L237 71L250 112Q268 170 283 211T322 299T370 375T429 423T502 442Q547 442 582 410T618 302Q618 224 575 152T457 35T299 -10Q273 -10 273 -12L266 -48Q260 -83 252 -125T241 -179Q236 -203 215 -212Q204 -218 190 -218Q159 -215 159 -185Q159 -175 214 -2L209 0Q204 2 195 5T173 14T147 28T120 46T94 71T71 103T56 142T50 190Q50 238 76 311T149 431H162Q183 431 183 423Q183 417 175 409Q134 361 114 300T92 210ZM574 278Q574 320 550 344T486 369Q437 369 394 329T323 218Q309 184 295 109L286 64Q304 62 306 62Q423 62 498 131T574 278\",120594:\"576 -125Q576 -147 547 -175T487 -204H476Q394 -204 363 -157Q334 -114 293 26L284 59Q283 58 248 19T170 -66T92 -151T53 -191Q49 -194 43 -194Q36 -194 31 -189T25 -177T38 -154T151 -30L272 102L265 131Q189 405 135 405Q104 405 87 358Q86 351 68 351Q48 351 48 361Q48 369 56 386T89 423T148 442Q224 442 258 400Q276 375 297 320T330 222L341 180Q344 180 455 303T573 429Q579 431 582 431Q600 431 600 414Q600 407 587 392T477 270Q356 138 353 134L362 102Q392 -10 428 -89T490 -168Q504 -168 517 -156T536 -126Q539 -116 543 -115T557 -114T571 -115Q576 -118 576 -125\",120595:\"161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441\",120596:\"495 384Q495 406 514 424T555 443Q574 443 589 425T604 364Q604 334 592 278T555 155T483 38T377 -11Q297 -11 267 66Q266 68 260 61Q201 -11 125 -11Q15 -11 15 139Q15 230 56 325T123 434Q135 441 147 436Q160 429 160 418Q160 406 140 379T94 306T62 208Q61 202 61 187Q61 124 85 100T143 76Q201 76 245 129L253 137V156Q258 297 317 297Q348 297 348 261Q348 243 338 213T318 158L308 135Q309 133 310 129T318 115T334 97T358 83T393 76Q456 76 501 148T546 274Q546 305 533 325T508 357T495 384\",120597:\"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306\",120598:\"227 -11Q149 -11 95 41T40 174Q40 262 87 322Q121 367 173 396T287 430Q289 431 329 431H367Q382 426 382 411Q382 385 341 385H325H312Q191 385 154 277L150 265H327Q340 256 340 246Q340 228 320 219H138V217Q128 187 128 143Q128 77 160 52T231 26Q258 26 284 36T326 57T343 68Q350 68 354 58T358 39Q358 36 357 35Q354 31 337 21T289 0T227 -11\",120599:\"537 500Q537 474 533 439T524 383L521 362Q558 355 561 351Q563 349 563 345Q563 321 552 318Q542 318 521 323L510 326Q496 261 459 187T362 51T241 -11Q100 -11 100 105Q100 139 127 242T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Q21 291 27 313T47 368T79 418Q103 442 134 442Q169 442 201 419T233 344Q232 330 206 228T180 98Q180 26 247 26Q292 26 332 90T404 260L427 349Q422 349 398 359T339 392T289 440Q265 476 265 520Q265 590 312 647T417 705Q463 705 491 670T528 592T537 500ZM464 564Q464 668 413 668Q373 668 339 622T304 522Q304 494 317 470T349 431T388 406T421 391T435 387H436L443 415Q450 443 457 485T464 564\",120600:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",120601:\"409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282\",120602:\"205 -174Q136 -174 102 -153T67 -76Q67 -25 91 85T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 169 431 80T253 -10Q226 -10 204 -2T169 19T146 44T132 64L128 73Q128 72 124 53T116 5T112 -44Q112 -68 117 -78T150 -95T236 -102Q327 -102 356 -111T386 -154Q386 -166 384 -178Q381 -190 378 -192T361 -194H348Q342 -188 342 -179Q342 -169 315 -169Q294 -169 264 -171T205 -174ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q221 276 204 217Q188 152 188 116Q188 68 210 47T259 26Q297 26 334 62Q367 92 389 158T418 266T424 322\",120603:\"206 -10Q158 -10 136 24T114 110Q114 233 199 349L205 358H184Q144 358 121 347Q108 340 95 330T75 312T61 295T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 532 431Q799 431 803 430Q823 423 823 402Q823 377 801 364Q790 358 766 358Q748 358 748 357Q748 355 749 348T752 327T754 297Q754 258 738 207T693 107T618 24T520 -10Q488 -10 466 2T432 36T416 77T411 120Q411 128 410 128T404 122Q373 71 323 31T206 -10ZM714 296Q714 316 707 358H251Q250 357 244 348T230 328T212 301T193 267T176 229T164 187T159 144Q159 62 222 62Q290 62 349 127T432 285Q433 286 434 288T435 291T437 293T440 294T444 294T452 294H466Q472 288 472 286Q472 285 464 244T456 170Q456 62 534 62Q604 62 659 139T714 296\",120604:\"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372\",120605:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240\",120606:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H763Q769 677 772 673T776 666L777 664Q777 659 766 549T751 433Q745 424 723 424Q704 424 699 427T693 441Q693 444 695 467T697 513Q697 543 689 563T670 594T636 610T592 617T534 618H516H456L455 614Q455 613 387 339T317 64Q317 62 375 62H411Q430 62 438 59T447 44Q444 7 430 2Q426 0 416 0Q409 0 359 1T231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120607:\"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342\",120608:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120609:\"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430\",120610:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624\",120611:\"358 -17Q218 -17 136 49T54 243Q54 298 70 356T123 474T211 582T338 663T504 702H527Q578 702 590 701Q709 688 776 622T844 441Q844 379 825 315T765 192T668 86T532 11T358 -17ZM700 474Q700 525 685 561T642 616T587 643T528 652Q390 652 301 534Q252 472 225 373T198 210Q198 160 214 125T256 71T311 44T372 36Q484 36 571 119Q639 189 669 299T700 474ZM366 428Q366 425 364 419T362 411H466L570 412L573 422Q576 437 581 441T604 445Q620 445 623 444Q636 440 636 429Q636 423 616 340T593 253Q586 243 572 243H566Q545 243 539 249Q536 251 535 253T534 258T534 263T535 270T537 277H329L326 266Q323 251 318 247T295 243Q279 243 276 244Q263 248 263 259Q263 265 283 346Q288 366 295 394Q304 431 308 438T326 445H334H338Q366 445 366 428\",120612:\"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624\",120613:\"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0\",120614:\"439 0Q425 6 425 18Q425 35 436 57Q442 62 485 62Q525 62 525 64L478 483Q478 484 465 463T422 394T350 277Q222 69 222 68Q223 67 224 67Q229 64 271 62Q290 62 297 59T305 45Q305 38 302 28Q297 9 293 5T274 0Q270 0 238 1T159 2Q133 2 105 2T72 1Q56 1 52 3T44 15Q44 19 48 35Q53 55 58 58T89 62Q142 64 151 73Q154 76 345 387T538 699Q550 711 570 711H580H592Q613 711 618 695Q619 692 654 379T690 63Q690 62 726 62H746Q776 62 776 44Q773 7 759 2Q755 0 747 0Q743 0 707 1T600 2Q502 2 476 1L439 0\",120615:\"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",120616:\"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624\",120617:\"206 466Q175 466 175 484Q175 487 201 574T230 666Q235 673 241 675H547Q853 675 857 673Q867 668 867 657Q867 655 850 569T832 478Q827 466 808 466H802H795Q773 466 771 481Q771 486 775 508T779 541V549H774Q755 552 505 552Q281 551 267 548Q262 548 255 533T242 496T233 472Q228 466 206 466ZM259 255H252Q231 255 228 270Q228 275 248 355T270 439Q277 448 288 448H298Q321 448 326 440Q331 434 326 414Q326 413 486 413H647L650 424Q654 441 658 444T678 448H683H693Q702 448 705 446T714 432L694 348Q674 267 669 261Q664 255 652 255H643Q622 255 617 261Q613 265 613 272T613 283T616 289Q616 290 456 290H295L294 285Q293 280 292 275T288 265T281 257Q278 255 259 255ZM150 131Q150 124 281 123Q346 123 390 123Q640 123 664 126Q668 127 675 127Q686 131 704 198Q708 213 713 216T733 220H738Q755 220 759 218Q768 213 768 203Q768 198 741 105T710 8Q708 4 699 0H388Q77 0 73 2Q62 7 62 18Q62 27 81 115Q99 206 102 212Q106 220 120 220H129Q140 220 145 220T155 215T160 202Q160 196 159 192Q150 145 150 131\",120618:\"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489\",120619:\"257 618H231Q198 618 198 636Q202 672 214 678L219 680H1011Q1022 675 1026 665Q1022 626 1009 620Q1005 618 956 618H907L906 614Q906 613 838 339T768 64Q768 62 812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66Q614 67 682 341T752 616Q752 618 604 618H456L455 614Q455 613 387 339T317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618\",120620:\"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558\",120622:\"847 430Q828 430 823 434T817 450Q817 454 817 466T818 487Q818 526 809 551T784 591T737 613T675 622T590 624H528H430L513 487Q594 351 596 345Q596 335 590 330Q583 323 418 204L250 81L363 80Q533 80 591 89T694 142Q739 185 765 252Q772 268 776 271T799 274Q816 274 820 272Q832 266 830 254Q829 250 784 130T736 7Q732 3 725 0H405Q84 0 80 2Q69 7 69 18Q69 26 75 32Q76 32 98 48T168 100T255 164L432 293Q429 300 329 465T225 637Q223 675 245 686H888Q900 680 902 671Q902 667 890 556T876 441Q871 430 847 430\",120623:\"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498\",120624:\"32 544Q32 586 91 644T229 703Q277 703 311 683T363 628T389 560T397 491V478L404 491Q455 589 526 646T677 703Q730 703 766 671T802 584Q802 551 793 541T766 531H757L736 532L732 535L729 539V549Q731 569 715 575T658 581H650Q545 581 477 443Q453 392 443 351Q441 345 424 273T389 133T371 64Q371 62 428 62H461Q483 62 492 59T501 44Q498 10 485 2L480 0L431 1Q401 2 278 2T127 1L85 0Q71 5 71 17Q71 24 74 33Q77 46 78 49T84 57T95 61T118 62H154H216Q232 126 249 193T273 287T287 345T296 388T299 416T300 452Q294 581 198 581Q154 581 132 575T106 562T99 546T86 533Q82 531 60 531L39 532Q32 537 32 544\",120625:\"323 624H293Q267 624 261 626T251 639Q255 678 268 684Q272 686 293 686Q348 684 475 684Q557 684 600 685T647 686H648Q671 686 671 668Q667 632 655 626Q650 624 588 624H525L500 520Q500 519 520 518T579 507T656 480Q737 440 737 372Q737 294 648 237Q562 180 426 169L412 168L399 118Q386 66 386 65L385 62H443H479Q498 62 506 59T515 44Q511 8 499 2L494 0L447 1Q417 2 298 2Q212 2 167 1T118 0Q100 0 95 15Q99 54 112 60Q116 62 179 62H241Q242 64 254 114T266 167Q266 168 262 168Q256 168 237 170T180 181T110 205T54 249T29 316Q29 391 112 446T327 516Q345 518 349 518Q351 518 353 518L355 519Q356 520 368 570T381 623Q381 624 323 624ZM342 466Q341 467 339 467Q320 467 283 455T225 420Q181 361 181 296Q181 273 193 257T222 233T254 222T277 219L280 220Q281 220 311 342T342 466ZM583 389Q583 409 576 423T557 444T533 456T509 463T492 467H486L455 343Q444 300 437 271T428 231T426 219Q430 219 445 222T483 232T521 250Q551 269 567 310T583 389\",120626:\"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686\",120627:\"205 471Q205 445 196 403T186 333Q186 303 194 281T218 248T240 233T262 224L361 623Q361 624 303 624Q296 624 284 624T266 623Q232 623 232 641Q232 648 235 657Q240 678 244 682T268 686H273Q329 684 457 684Q502 684 540 684T599 685T626 686H628Q651 686 651 668Q649 633 631 624H505L407 227Q410 228 416 229T439 239T472 259T507 294T539 345Q549 365 563 416T597 498T649 538Q657 540 717 540Q725 540 737 540T755 541Q790 541 790 524Q790 512 784 497Q780 491 767 490T742 477Q736 471 731 463T722 449T715 433T710 419T705 403T701 389Q686 340 658 302T599 240T530 201T463 179T404 169L391 168L379 116Q365 67 365 63Q365 62 422 62H455Q477 62 486 59T495 44Q492 10 479 2L474 0L427 1Q397 2 278 2T131 1L90 0Q76 5 76 17Q76 24 79 33Q82 46 83 49T89 57T100 61T123 62H159H221Q247 162 247 168H244Q241 169 239 169Q202 176 178 182T123 207T74 252Q46 291 46 351Q46 375 52 404T59 454Q59 489 40 489Q32 489 27 494T22 507Q22 535 37 538Q40 540 99 540H128Q168 540 186 528T205 471\",120628:\"162 119Q181 115 235 115L273 116Q273 133 231 222T180 345Q173 368 173 391V406V414Q173 477 214 540Q255 600 315 635Q353 661 423 682T585 703Q656 703 711 690T799 656T851 608T879 555T886 503Q886 449 860 401Q840 359 810 322T725 230T643 146Q619 117 619 116T650 115Q707 115 722 120Q730 123 750 165T775 210Q779 212 796 212Q828 212 828 196Q828 191 807 144T764 52L743 7Q740 4 740 4T733 2T717 0T686 0H632H573Q535 0 526 3T517 17Q517 44 544 103T617 243T671 341Q729 454 729 535Q729 599 686 625T583 652Q549 652 517 645T450 616T388 561T344 470T327 340Q327 304 331 237T336 135Q336 93 330 50T313 2Q308 0 208 0H142Q107 0 100 4T93 25Q93 28 93 41T95 77T96 118L100 199Q105 208 109 210T131 212Q147 212 151 210T161 199V160Q161 131 162 125V119\",120630:\"39 166Q39 213 59 261T117 353T219 424T362 452Q420 452 466 433T536 384T573 325T586 269V265Q593 272 609 308T636 381Q640 397 644 399T669 402H680Q700 402 700 388Q700 379 691 351T659 276T604 188L593 173L595 153Q600 79 612 43H618Q634 45 642 51T653 64T658 71Q661 73 684 73Q712 73 712 59Q712 39 685 16T603 -7Q588 -7 575 -5T551 2T532 12T516 24T503 37T494 49T487 60T481 69L469 61Q362 -8 251 -8Q159 -8 99 36T39 166ZM260 43Q310 43 361 63T438 101T465 124Q458 240 453 277Q435 401 354 401Q291 401 245 355Q230 337 217 313Q201 279 186 216T170 126Q170 72 208 54Q230 43 260 43\",120631:\"59 -194H49Q31 -194 28 -182Q28 -178 107 139T192 473Q212 533 248 580T324 652T395 689T450 701H461Q514 701 551 688T605 652T630 607T637 561Q637 546 634 526T611 465T556 393Q572 382 590 347T608 262Q608 146 522 69T299 -8Q279 -8 261 -6T228 2T204 13T183 26T169 37T157 48L150 56L120 -64Q113 -90 104 -128Q93 -175 89 -184T73 -194H59ZM531 592Q531 651 463 651Q399 651 341 600T253 466Q250 458 217 327T182 185Q180 176 180 159Q180 108 212 76T301 44Q330 44 354 51T393 65T423 91T444 118T459 151T468 179T475 206Q490 264 491 296Q491 313 489 326T484 345L482 350Q481 350 477 348T464 344T444 340T413 335T372 333T334 334T301 340T274 355T265 380Q265 444 397 444Q425 444 445 441T476 436L485 433Q489 433 499 458Q509 482 520 527T531 592ZM424 390Q424 393 389 393Q383 393 374 393T362 392Q348 392 333 388Q345 384 379 384Q424 384 424 390\",120632:\"5 269Q5 285 19 312T57 368T124 421T215 451H241Q274 451 303 439T353 406T389 361T416 311T432 266T442 232L444 220L446 216L450 226Q473 278 513 357T561 441Q566 444 584 444H594Q617 444 617 430Q617 426 596 389T536 273T462 110L452 84L451 70Q447 12 427 -76T388 -192Q375 -211 355 -211Q339 -211 332 -198T325 -171Q325 -114 386 64L393 84V98Q393 181 371 241Q360 280 319 303T210 327Q158 327 126 317T84 296T68 272T59 258Q55 256 36 256Q23 256 18 256T9 260T5 269\",120633:\"216 610Q216 640 229 664T262 700T299 719T327 725Q330 725 406 709T487 690Q513 681 513 651Q513 627 494 607T450 587Q417 587 378 631Q346 663 314 663Q286 663 272 639Q271 637 271 634Q271 609 344 536L397 484Q438 448 458 410T478 313Q478 234 443 147T338 18Q298 -8 249 -8Q214 -8 180 0T113 26T60 81T39 168Q39 200 50 237T87 316T160 391T272 442L260 465Q216 553 216 610ZM348 235Q348 274 336 313T310 372L298 392Q295 391 290 390T269 380T241 359T212 323T185 267Q157 168 157 130Q157 83 186 63T255 43Q280 43 300 67Q317 89 332 138T348 235\",120634:\"224 -17Q126 -17 81 22T36 112Q36 178 84 226L93 236L88 246Q79 264 79 289Q79 341 124 388Q201 461 333 461Q402 461 455 425Q480 409 481 390Q481 365 464 350T428 334Q415 334 387 352T313 370Q141 370 141 293Q141 275 146 270Q147 270 148 270T155 272Q202 291 263 291H270Q349 291 349 244Q349 195 281 183Q274 182 239 182Q201 182 184 185T137 200Q123 188 112 168T100 129T112 98T148 81T189 75T237 74H243H251Q288 74 310 75T359 86T398 112Q405 124 417 124Q426 124 432 117T439 100Q439 88 427 70T390 32T322 -3T224 -17ZM286 238Q286 240 253 240Q245 240 234 239T216 237T209 235Q209 232 250 232Q286 232 286 238\",120635:\"361 711Q373 711 381 703T389 683Q389 681 388 676T383 656T376 618V612H379Q385 618 429 618Q521 618 521 572Q521 551 506 534Q483 510 415 507Q385 507 371 511T336 536L326 528Q254 472 204 381T154 209Q154 190 157 177Q159 165 162 154T170 135T182 119T195 106T212 95T229 86T249 78T269 72T290 66T311 60Q385 37 388 36Q437 14 454 -36Q456 -46 456 -64Q456 -83 455 -90Q445 -132 413 -167T333 -202Q300 -202 257 -191T206 -169Q203 -164 203 -158Q203 -148 210 -140T231 -130Q239 -130 263 -139T326 -151H329Q337 -151 342 -150T352 -143T357 -123Q356 -117 355 -113T350 -104T344 -96T335 -90T324 -85T310 -80T294 -74T275 -68T254 -62Q253 -62 231 -56T205 -48T179 -39T150 -26T125 -10T100 11T80 37T62 70T53 109T48 157Q48 281 123 396T317 586V612Q319 638 320 649T325 678T338 703T361 711ZM454 564Q445 567 424 567Q407 567 398 565T387 563Q387 558 411 558Q434 558 450 562L454 564\",120636:\"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q202 452 233 435Q267 419 284 384L294 392Q304 401 316 410T348 429T388 445Q410 451 445 451H453Q468 451 482 450T519 443T558 425T587 391T600 337V327Q600 311 538 64Q484 -158 478 -168Q457 -211 409 -211Q386 -211 372 -197T357 -161Q357 -158 415 80Q476 330 477 348Q477 366 473 377T461 393T448 399T432 400H427Q379 400 335 363Q300 332 280 298Q277 293 246 170T213 40Q205 22 186 7T142 -8T103 7T89 39Q89 49 106 117T142 260T164 351Q166 363 166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296\",120637:\"213 -8Q130 -8 85 50T40 200V207Q40 303 83 428Q122 535 189 608Q279 702 381 702Q410 702 437 693T492 661T537 593T554 486Q554 428 539 362T495 230T425 111T330 25T213 -8ZM433 562Q433 600 419 625T377 651Q363 651 348 644T311 619T268 557T229 453Q225 441 217 411T208 378H401Q433 500 433 562ZM161 140Q161 43 217 43Q249 43 280 74Q310 103 332 150T378 287Q385 313 385 315Q385 316 289 316H192Q191 308 183 275T169 205T161 140\",120638:\"161 -8Q111 -8 75 16T38 85Q38 95 48 121T80 214T123 368L124 374Q126 381 127 386T132 399T139 414T149 428T162 440T180 448T203 452Q226 452 241 439T257 404Q257 386 230 290T171 111Q157 73 157 57Q157 43 166 43Q209 43 258 69T322 144Q326 157 330 159T348 162H355H366Q386 162 386 148Q386 143 383 132T367 100T335 61Q301 27 253 10T161 -8\",120639:\"258 405Q258 394 251 364T237 308T230 281T238 284T270 306T330 349Q365 377 389 394T450 427T519 444Q545 444 559 430T574 391Q574 360 551 336T491 312Q469 312 454 326T439 364Q439 372 438 372Q433 372 395 344T320 289T283 260H285Q287 260 290 260T297 259Q495 248 495 146Q495 132 491 110T486 74Q486 43 505 43Q520 43 531 53Q559 72 578 141Q582 157 586 159T611 162H622Q642 162 642 148T627 100T578 29T504 -7H495Q435 -7 399 22T363 96Q363 111 366 122T369 142Q369 155 364 165T347 182T326 193T298 200T269 204T238 207T212 210L211 206L190 123L169 40Q161 22 142 7T98 -8T59 7T45 39Q45 48 67 139T112 317L134 404Q142 424 161 438T204 452Q226 452 242 440T258 405\",120640:\"95 -13Q70 -13 55 4T40 41Q40 65 61 88Q65 92 210 207T357 322L235 602Q217 640 185 643Q182 643 178 644T173 645Q161 651 161 666Q161 677 167 684T181 692Q189 694 212 694Q335 694 358 660Q362 653 500 340T647 18Q652 10 652 6Q652 -8 622 -8H589H538L526 -5Q506 1 500 8Q494 16 444 128Q442 133 440 138L387 259L265 134Q156 20 137 4T95 -13\",120641:\"294 -8Q265 -8 244 -5T213 1T201 4Q200 4 192 -32T172 -111T155 -168Q134 -211 86 -211Q62 -211 48 -196T34 -158Q37 -144 103 123T174 404Q182 424 201 438T244 452Q271 452 284 436T298 404Q298 392 267 269T235 114Q235 43 305 43Q342 43 375 68T418 110Q420 112 455 253T492 397Q514 444 562 444Q587 444 601 429T615 397Q615 387 599 320T563 178T542 93Q540 81 540 72Q540 42 558 42Q580 42 596 75Q606 94 616 134Q621 155 624 158T646 162H651H662Q682 162 682 148Q681 142 679 132T665 94T641 47T602 9T548 -8Q523 -8 502 -3T468 11T446 27T432 40L429 46Q367 -8 294 -8\",120642:\"88 382Q70 382 65 385T59 402T64 427T78 443Q79 444 157 448T247 452Q256 452 261 448T266 440L267 437Q267 432 223 252L177 71L192 77Q293 117 371 199T480 388Q489 424 511 438T556 452Q579 452 593 438T608 402Q608 378 593 340T540 251T446 152T299 62T96 -1Q91 -2 78 -2Q38 -2 38 15Q38 22 82 198L127 379Q124 382 88 382\",120643:\"287 648Q291 671 293 680T305 700T329 711Q339 711 347 705T356 687Q356 680 351 653T345 619Q345 615 346 615Q358 618 398 618Q490 618 490 572Q490 553 476 536T434 512Q411 508 378 508H366Q332 508 306 534L298 525Q271 496 254 456T237 375Q237 336 244 336Q272 346 319 346H325Q354 346 372 344T406 331T422 300Q422 252 350 238Q332 236 303 236Q286 236 269 238T240 242T218 247T202 252L196 254Q191 254 174 237T141 191T124 139Q124 108 151 92T267 46Q285 40 295 37Q308 33 332 25T366 13T392 3T415 -8T432 -20T445 -36T451 -55T454 -80Q454 -118 427 -153T358 -199Q349 -201 327 -201Q313 -201 298 -200T271 -196T246 -191T226 -185T210 -180T200 -176L196 -174Q187 -170 187 -158T196 -138T216 -130Q217 -130 254 -140T329 -151Q349 -151 349 -135Q349 -127 340 -122T293 -104Q260 -93 238 -85Q130 -48 115 -41Q71 -19 47 15T23 88Q23 126 48 179T130 277L144 288L136 297Q99 336 99 390Q99 456 148 514T285 602V619Q285 624 286 635T287 648ZM355 563Q362 560 376 558Q424 558 423 564Q405 567 390 567Q369 567 355 563ZM279 292Q297 287 315 287Q355 287 355 293Q355 296 321 296Q316 296 308 296L301 295Q295 295 289 294L279 292\",120644:\"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400\",120645:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 418 444Q591 444 617 444T652 439Q674 426 674 400Q674 378 661 360T625 335Q621 334 549 333H479L477 321Q476 312 476 279Q476 219 491 174T521 104T536 65Q536 38 511 15T457 -8Q403 -8 386 94Q384 110 384 139Q384 181 391 229T406 304L413 331Q413 333 365 333H316L315 329Q315 328 312 314T301 272T288 220Q274 167 258 103Q244 49 240 38T228 18Q225 16 224 14Q200 -8 172 -8Q146 -8 132 7T118 44Q118 54 121 61Q122 65 142 102T190 195T235 293Q250 329 250 333Q177 333 166 332Q115 328 88 301L77 290L55 289\",120646:\"307 -8Q277 -8 251 0T215 14L205 20Q203 18 193 -25T171 -114T155 -168Q134 -211 87 -211Q64 -211 49 -198T34 -162Q34 -158 137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 285Q603 172 520 82T307 -8ZM474 343Q474 364 458 382T409 400H406Q339 400 299 341Q281 313 264 257Q261 248 242 170T222 89Q222 84 230 74T260 54T308 43Q334 43 365 57T417 110Q437 145 456 228Q474 298 474 332V343\",120647:\"33 209Q33 277 80 334T195 421T330 451H344Q410 451 439 429Q457 417 457 402Q457 386 445 375T420 363Q415 363 406 368T383 383T354 398Q347 400 330 400Q256 400 196 361T135 265V257Q135 242 147 225T174 199L358 107Q400 77 400 28T362 -63T271 -105Q254 -105 229 -99T195 -86Q188 -82 188 -71Q188 -56 197 -50T216 -44Q225 -44 237 -48T270 -53H282Q293 -44 293 -31Q293 -19 283 -10Q278 -4 200 33T115 76Q77 98 55 133T33 209\",120648:\"35 151Q35 190 51 236T99 327T184 404T306 443Q307 443 316 443T342 443T378 444T425 444T476 444Q606 444 626 444T655 439Q677 426 677 400Q677 358 639 340Q625 333 563 333Q510 333 510 331Q518 319 518 272Q518 155 437 74T226 -8Q123 -8 79 41T35 151ZM396 278Q396 314 375 323T305 332Q249 332 222 310T180 243Q171 219 162 178T153 116V110Q153 43 234 43Q347 43 382 199Q383 203 383 204Q396 255 396 278\",120649:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 386 444Q571 444 577 442Q588 441 599 432T610 402Q610 359 572 340Q561 335 547 334T452 333H353V331Q352 330 342 261T320 119T306 40Q300 18 281 3Q257 -13 233 -13Q210 -13 196 0T181 35Q181 44 182 48Q183 53 229 187T279 331Q279 333 228 333H209Q163 333 136 328T88 301L77 290L55 289\",120650:\"189 388Q189 396 187 398T176 401Q144 399 122 369T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T188 452Q232 452 270 430T308 361Q308 345 275 258T241 123Q241 44 336 44H344Q380 44 415 73T474 140T511 214T526 267Q526 280 513 292Q505 301 486 311T456 333T444 367Q444 400 471 426T529 453Q555 453 579 431T604 358Q604 327 592 271T557 172Q550 157 541 142T510 97T464 47T404 9T328 -8Q264 -8 219 5T154 41T125 85T117 131Q117 182 153 277T189 388\",120651:\"238 4Q230 5 218 8T174 26T118 58T73 112T53 190Q53 219 60 246Q77 313 103 362T143 426T163 443Q165 444 186 444Q217 444 217 432Q217 425 188 392Q157 351 137 291T116 206Q116 127 263 109L276 107L288 139Q347 304 414 378T566 452Q621 449 662 412T703 286Q698 167 598 82T357 -8H332V-11Q332 -12 327 -46T317 -116T310 -157Q306 -180 286 -198T234 -216Q211 -216 197 -203T183 -168Q183 -160 184 -155Q184 -152 198 -112T225 -34T238 4ZM637 260Q637 303 607 322T541 341Q502 341 466 319T405 264Q368 218 356 159Q348 111 348 104Q348 103 361 103Q502 103 569 152T637 260\",120652:\"58 -194Q32 -194 32 -164Q32 -153 46 -139L175 -13Q296 104 296 106Q271 232 226 308Q165 401 141 401Q128 401 117 390T100 365Q94 350 91 349T69 346H45Q35 348 35 359Q35 380 62 411T133 450Q143 452 165 452Q286 452 329 402Q347 379 366 333T394 254T404 215Q404 213 405 213Q405 212 420 227T463 268T520 324Q637 437 640 438Q647 444 661 444Q667 444 676 438T685 419Q685 405 670 389T549 271L420 145Q433 85 444 53Q466 -25 509 -88T575 -151Q590 -151 600 -140T617 -114T626 -98Q629 -96 650 -96H655Q681 -96 681 -108Q681 -114 679 -119Q670 -148 646 -169T591 -199Q581 -201 550 -201Q422 -201 381 -143Q345 -88 316 20L311 39L230 -40Q144 -126 114 -153Q85 -182 77 -188T58 -194\",120653:\"244 141Q244 117 254 98T277 70T305 55T329 48T342 47L344 48L424 366Q501 678 505 686Q508 691 512 692T533 694T555 693T562 688T565 683Q565 678 486 362T406 45Q406 43 415 43Q467 49 514 78T590 143T636 213T653 266Q653 282 641 293T613 311T585 332T572 367Q572 397 598 425T657 453Q684 453 708 430T732 358Q732 330 723 287T706 225Q671 124 578 58T401 -8H393L370 -101Q346 -196 345 -197Q340 -202 316 -202H306Q286 -202 286 -188Q286 -187 296 -144T318 -57T331 -8Q331 -6 328 -6Q290 -6 233 11T148 62Q119 97 119 146Q119 181 154 275T190 388Q190 401 181 401Q154 401 129 375T90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T189 452Q237 452 273 428T309 362Q309 343 277 260T244 141\",120654:\"532 367Q532 399 559 426T618 453Q645 453 668 430T691 357Q691 319 677 261T649 171Q640 149 626 125T586 68T521 14T438 -7Q401 -7 372 7T333 30T311 57Q246 -8 165 -8Q119 -8 82 19T30 102Q24 126 24 163V178Q24 210 37 255Q61 346 118 424Q141 451 161 451Q174 451 184 443T194 419Q194 402 179 387Q91 273 91 206Q91 159 122 138T189 117T281 145V173Q283 223 294 253Q304 276 323 289T364 303Q386 303 400 287T415 250Q415 219 385 157L378 144Q378 142 388 136T419 124T462 117Q522 117 566 165T610 255Q610 288 561 320Q532 337 532 367\",120655:\"230 475Q202 475 189 492T175 526T186 570T221 631T288 687T389 710Q430 710 438 709Q495 701 537 679T601 629T637 568T653 509T657 459Q657 409 640 341Q617 248 581 180T507 75T424 16T348 -11T282 -17Q171 -17 113 37Q60 88 60 159Q60 192 71 231Q96 336 184 402Q264 462 366 462Q407 462 439 448T497 389L502 380Q503 381 508 403T519 463T525 531Q523 580 499 610T447 648T387 657Q324 657 283 616Q271 604 276 604Q279 604 286 600T302 583T311 555Q311 523 287 499T230 475ZM196 110Q196 41 287 41Q351 41 398 88Q422 111 437 151Q473 243 473 298Q473 386 409 409Q408 409 383 411Q316 411 278 373Q265 360 259 351T241 311T217 226Q196 143 196 110\",120656:\"415 89Q423 89 429 74T436 46Q436 43 434 39Q432 36 420 29T380 11T322 -5Q311 -7 281 -7Q216 -7 168 10T94 54T56 110T44 167V181Q44 262 94 329Q104 343 119 357T162 391T234 425T327 443Q328 443 348 443T383 444Q434 444 442 438Q450 430 450 416Q446 392 424 383L376 382Q306 381 278 369Q230 349 208 294Q199 274 199 268Q199 267 291 267Q305 267 325 267T353 268Q383 268 394 263T406 241Q406 214 380 206Q375 205 279 205T183 203Q174 176 174 140Q174 87 208 65T292 43Q295 43 300 43T307 44Q337 49 372 69T415 89\",120657:\"114 132Q114 153 140 253T166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296Q25 302 27 312T41 350T65 397T104 435T158 452Q184 452 211 445T263 414T288 354V339L265 245Q237 134 237 118V107V102Q237 87 239 77T257 56T300 43Q395 43 455 254Q479 346 479 347L460 354Q294 408 294 528Q294 606 350 653T464 701Q536 701 579 659Q634 601 634 491Q634 468 630 438T623 388L620 370Q624 370 631 369T647 364T656 352Q656 347 653 335Q647 317 642 316Q640 315 637 315Q635 315 619 317Q606 319 605 316Q605 315 603 308Q587 248 550 177T457 57Q379 -8 293 -8Q192 -8 153 23T114 116V132ZM519 566Q519 600 507 625T464 651Q425 651 391 617T356 529Q356 501 370 478T404 441T443 417T477 404L491 400Q493 400 499 428T512 497T519 566\",120658:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",120659:\"274 -7Q232 -4 195 7T125 38T71 94T51 176V190Q51 213 60 242T95 307T156 373T255 425T393 451L397 452L427 568Q434 597 443 636Q452 677 456 685T472 694H486H495Q517 694 517 680L514 665Q510 650 503 621T489 564L460 451H469Q527 447 574 430T657 370T693 266Q693 163 599 82T350 -7H346L322 -100Q301 -190 295 -197Q291 -202 283 -202H269H258Q238 -202 238 -188Q238 -186 260 -96L283 -7H274ZM449 400Q448 400 404 225T359 47T366 45Q464 55 516 119Q542 149 558 199T575 295Q575 387 462 398L449 400ZM384 398Q384 399 381 399Q350 399 298 378T214 308Q168 236 168 149Q168 68 259 49Q282 44 294 44H295L384 398\",120660:\"371 -168Q357 -168 323 -171T245 -175Q143 -175 109 -150T75 -66Q75 -5 100 108T137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 282Q603 213 569 148T465 38T304 -8Q273 -8 247 -2T204 14T176 31T159 46T152 53Q152 52 148 27T144 -16Q144 -36 150 -44T189 -58T293 -64Q405 -65 432 -75Q466 -88 466 -127Q466 -140 459 -172Q455 -188 451 -191T426 -194H420Q405 -194 400 -191T395 -176Q396 -170 394 -169T378 -168Q373 -168 371 -168ZM236 116Q236 77 258 60T311 43Q369 43 407 94Q429 123 451 206T474 331Q474 400 409 400H406Q339 400 299 341Q276 305 256 227T236 116\",120661:\"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 562 444Q922 444 928 442Q961 434 961 400Q961 376 944 355T886 333H870Q872 322 872 295V279Q872 230 842 165T751 46T618 -8Q581 -8 554 6T513 45T494 84T484 119Q484 121 478 114Q477 113 476 111Q384 -7 268 -7H265Q251 -7 237 -4T199 11T162 54T147 132Q147 149 149 166T155 198T165 229T176 256T189 281T200 301T211 319T220 333H199Q120 333 88 301L77 290L55 289ZM639 103Q674 103 712 122T780 188T811 295Q811 318 808 330V333H289Q274 318 244 263T214 169Q214 133 236 118T288 103Q351 103 412 153T494 278Q497 290 502 292T529 295Q546 295 551 293T556 283Q556 281 553 260T550 218Q550 153 576 128T639 103\",120662:\"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279\",120663:\"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194\",120664:\"92 664Q98 683 118 690Q121 691 312 691T508 689Q534 682 534 644V632V618Q534 582 508 573L502 572Q496 572 489 572Q486 572 463 572T416 573Q333 573 291 575H253V303Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664\",120665:\"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148\",120666:\"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277\",120667:\"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584\",120668:\"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667\",120669:\"62 340Q62 716 425 716Q511 716 576 696T681 642T747 559T783 458T793 341Q793 264 777 203T721 89T608 7T428 -22Q62 -22 62 340ZM638 333Q638 365 637 387T632 441T621 495T600 542T567 583T518 611T451 628Q443 629 427 629Q402 629 378 624T327 608T276 571T240 511Q217 453 217 345Q217 254 231 204T279 120Q333 69 428 69Q522 69 576 120Q638 183 638 333ZM279 349V373Q279 413 305 420Q309 422 427 422H487Q550 422 563 414T576 369V349Q576 345 576 337T577 324Q577 284 550 277Q545 275 428 275H369Q306 275 293 283T279 329V349\",120670:\"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667\",120671:\"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667\",120672:\"106 0H83Q41 0 41 28Q41 39 133 349T229 667Q242 694 296 694H335H375Q403 694 418 689T442 667Q445 660 537 350T630 28Q630 11 619 6T584 0H555H526Q478 0 465 27Q462 32 431 136T366 372T325 555V546Q320 503 287 376T222 141T186 27Q184 22 177 15T165 6Q154 0 106 0\",120673:\"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120674:\"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667\",120675:\"627 553Q609 553 512 554T366 555Q316 555 220 554T105 553Q96 553 90 553T82 554T78 554Q61 560 57 571T52 605V623L53 661Q59 680 79 687Q82 688 366 688Q649 688 654 686Q680 679 680 639V621V603Q680 563 654 554Q653 554 651 554T642 554T627 553ZM149 423Q152 424 366 424Q579 424 584 422Q610 415 610 376V358V340Q610 300 584 293Q579 291 366 291H232Q162 291 150 293T129 306Q122 315 122 360L123 397Q129 416 149 423ZM108 135Q143 135 226 134T363 133Q407 133 507 134T632 135H645Q675 135 684 110Q686 104 686 68V49Q686 9 660 2Q655 0 364 0L74 1Q57 7 49 21L47 28L46 65V83Q46 126 72 133Q80 135 108 135\",120676:\"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433\",120677:\"92 664Q98 683 118 690Q121 691 396 691T676 689Q695 684 700 666Q702 660 702 345Q702 31 700 25Q696 9 684 5T646 0H621H596Q571 0 559 4T542 25Q540 31 540 307V582H253V307Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664\",120678:\"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467\",120680:\"322 124Q326 124 457 125T672 127H689Q721 127 730 102Q732 96 732 64V48Q732 9 706 2Q701 0 394 0L89 1Q76 5 69 13T62 29V36Q62 37 62 38Q62 47 70 58T126 126Q161 167 185 196Q302 335 302 336L187 463Q74 584 68 594Q61 603 61 639L62 667Q68 686 88 693Q91 694 396 694T706 692Q732 686 732 647V635V621Q732 585 706 576Q705 576 702 576T691 576T670 575L302 578Q302 577 394 475T490 371Q498 362 498 347Q498 336 488 323T408 226L322 124\",120681:\"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687\",120682:\"62 560Q62 607 94 644T169 698T253 715Q273 715 286 713T322 704T363 677T398 625Q413 597 423 556L428 540Q429 541 436 566T454 620T494 677T561 713Q570 715 593 715Q682 715 737 668T793 560Q793 549 793 545T786 533T767 520H670Q646 532 644 551T632 579Q618 594 591 594Q539 594 524 530T509 321V216Q509 31 507 25Q498 0 455 0H426L375 1Q355 7 348 28L347 232Q346 344 346 441Q346 442 343 468T335 521T312 571T266 594Q252 594 247 593Q228 586 220 576T212 557T209 539T191 523L185 520H88Q75 527 69 534T63 545T62 560\",120683:\"62 292T62 347T80 445T124 511T183 552T243 574T292 584L315 587H319V627L320 667Q329 694 370 694H397H422Q466 694 473 669Q475 663 475 625V587H478Q479 587 500 584T548 575T608 553T668 513T713 446T732 347Q732 253 674 187Q655 167 628 152T576 128T530 116T493 109L478 107H475V69V50Q475 9 449 2Q444 0 395 0L347 1Q327 7 320 28L319 67V107H315L292 110Q269 114 243 119T184 142T124 182T80 249ZM319 197T319 347T318 497Q316 497 307 494T284 485T262 471Q220 438 220 347Q220 285 239 249Q248 234 261 223T286 208T308 200L317 197Q319 197 319 347ZM572 347V357Q572 387 569 407T548 452T496 491Q495 491 494 491T487 493T475 497V197Q518 210 541 232T571 303Q572 312 572 347\",120684:\"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52\",120685:\"61 585Q62 594 62 597T64 606T73 616T89 626H138Q196 626 208 620Q243 602 253 546T261 431T271 309T325 219Q342 205 349 205Q350 205 350 436L351 667Q360 694 401 694H428H454Q495 694 504 671Q506 663 506 436L507 205Q542 222 561 251T586 318T593 392T595 472T602 546Q614 614 661 625Q665 626 708 626H730Q766 626 780 618T794 582Q794 548 768 540Q755 538 754 501T750 410T736 298T680 191T560 120Q550 116 512 109H506V70V50Q506 9 480 2Q475 0 426 0L378 1Q358 7 351 28L350 68V109L335 111Q298 117 267 129T214 156T175 191T146 229T127 272T115 314T109 357T106 395T105 429Q104 537 87 540Q66 548 63 565Q61 570 61 585\",120686:\"241 122Q225 154 191 199T131 278T83 363T61 464Q61 497 68 527T94 591T145 650T228 693T349 715Q354 715 370 715T396 716Q539 716 622 668Q658 647 682 617T715 556T728 505T732 465Q732 415 711 365T663 280T602 200T552 122H632Q649 122 669 122T693 123H697Q736 123 742 98Q744 92 744 62V47Q744 9 718 2Q713 0 591 0L471 1Q454 7 446 21Q444 27 444 45Q444 96 463 154T506 257T549 360T569 469Q569 504 563 530T538 580T485 616T396 629Q313 629 268 594T223 468Q223 419 243 361T286 258T330 152T350 41Q350 14 335 7T276 -1Q267 -1 241 -1T197 0L77 1Q57 7 50 28L49 59V74Q49 114 75 121Q81 123 100 123Q104 123 124 123T161 122H241\",120782:\"266 654H280H282Q500 654 524 418Q529 370 529 320Q529 125 456 52Q397 -10 287 -10Q110 -10 63 154Q45 212 45 316Q45 504 113 585Q140 618 185 636T266 654ZM374 548Q347 604 286 604Q247 604 218 575Q197 552 193 511T188 311Q188 159 196 116Q202 87 225 64T287 41Q339 41 367 87Q379 107 382 152T386 329Q386 518 374 548\",120783:\"481 0L294 3Q136 3 109 0H96V62H227V304Q227 546 225 546Q169 529 97 529H80V591H97Q231 591 308 647L319 655H333Q355 655 359 644Q361 640 361 351V62H494V0H481\",120784:\"175 580Q175 578 185 572T205 551T215 510Q215 467 191 449T137 430Q107 430 83 448T58 511Q58 558 91 592T168 640T259 654Q328 654 383 637Q451 610 484 563T517 459Q517 401 482 360T368 262Q340 243 265 184L210 140H274Q416 140 429 145Q439 148 447 186T455 237H517V233Q516 230 501 119Q489 9 486 4V0H57V25Q57 51 58 54Q60 57 109 106T215 214T288 291Q364 377 364 458Q364 515 328 553T231 592Q214 592 201 589T181 584T175 580\",120785:\"80 503Q80 565 133 610T274 655Q366 655 421 623T491 538Q493 528 493 510Q493 446 453 407T361 348L376 344Q452 324 489 281T526 184Q526 152 514 121T474 58T392 8T265 -11Q175 -11 111 34T48 152Q50 187 72 209T132 232Q171 232 193 208T216 147Q216 136 214 126T207 108T197 94T187 84T178 77T170 72L168 71Q168 70 179 65T215 54T266 48H270Q331 48 350 105Q358 128 358 185Q358 239 348 268T309 313Q292 321 242 322Q205 322 198 324T191 341V348Q191 366 196 369T232 375Q239 375 247 376T260 377T268 378Q284 383 297 393T326 436T341 517Q341 536 339 547T331 573T308 593T266 600Q248 600 241 599Q214 593 183 576Q234 556 234 503Q234 462 210 444T157 426Q126 426 103 446T80 503\",120786:\"531 0Q510 3 381 3Q238 3 214 0H201V62H313V155H32V217L205 434Q342 606 362 630T387 655L391 656Q395 656 401 656T414 656H427Q447 656 451 645Q453 641 453 429V217H542V155H453V62H542V0H531ZM324 217V494L103 218L213 217H324\",120787:\"100 565V605Q100 637 102 646T113 655Q116 655 139 647T202 631T286 623Q332 623 372 631T434 647T459 655Q466 655 469 651T472 643T472 629Q472 613 463 601Q370 487 219 487Q195 487 183 488T169 490T168 433V376Q169 376 174 379T188 387T211 397T244 405T288 409Q390 409 453 352T517 201Q517 106 445 48T253 -11Q169 -11 113 37T57 154Q57 187 79 208T131 229T183 209T206 154Q206 99 155 83Q152 82 157 78Q196 47 253 47Q347 47 358 135Q358 137 358 138Q360 158 360 209Q360 277 355 301T337 338Q315 358 282 358Q202 358 160 303Q153 294 149 292T130 290Q107 290 102 301Q100 304 100 474V565\",120788:\"48 318Q48 395 68 456T120 553T193 613T273 646T350 655Q425 655 461 616T497 524Q497 485 475 468T428 451Q399 451 378 470T357 521Q357 565 403 588Q375 601 351 601Q313 601 282 584Q242 565 222 526Q199 473 199 367Q201 369 210 380T227 396T246 410T275 422T312 426Q438 426 494 332Q526 285 526 208V199Q526 112 465 53Q428 17 388 3T285 -11Q236 -11 195 7T135 43T104 80Q48 165 48 318ZM375 231V244V268Q375 295 373 310T364 342T341 366T299 374H297Q231 374 208 287Q200 257 200 196Q201 120 209 100Q231 47 288 47Q351 47 368 90Q375 112 375 231\",120789:\"256 -11Q231 -11 208 5T185 65Q185 105 193 146T212 220T241 289T275 349T312 402T346 445T377 479T397 502L400 504H301Q156 503 150 497Q142 491 134 456T126 407H64V411Q65 414 82 544T99 675T130 676H161V673Q161 669 162 666T167 661T173 657T181 654T190 652T200 651T210 650T220 649T229 648Q237 648 254 647T276 646Q277 646 426 644H558V620V607Q558 596 551 586T509 537Q489 515 476 500Q390 401 384 393Q349 339 337 259T324 113T322 38Q307 -11 256 -11\",120790:\"80 474Q80 561 139 607T278 654Q357 654 411 632Q490 593 494 509Q494 424 416 376L407 371L418 364Q432 356 447 345T481 312T513 260T526 192Q526 100 461 45T285 -11Q184 -11 116 32T48 164Q48 181 50 196T58 225T69 249T84 270T100 286T117 300T134 311T149 321T162 329L152 336Q120 360 100 397T80 474ZM347 404Q404 446 404 503Q404 579 317 599Q309 600 276 600Q178 600 170 538Q170 532 171 527T173 518T178 509T184 501T194 492T205 484T219 476T235 467T254 456T275 445L347 404ZM289 47Q323 47 351 54T402 82T425 137Q425 147 421 161Q411 183 391 197T303 249Q224 293 223 293Q220 291 215 288T197 273T175 248T157 213T149 167Q149 109 188 78T289 47\",120791:\"178 59Q206 48 238 48Q311 48 345 102Q370 138 375 259V278Q374 278 369 271T350 252T322 232Q297 220 258 220Q172 220 110 275T48 438V446Q54 561 146 618Q199 654 278 654Q321 654 329 653Q526 621 526 330Q526 252 507 190T457 92T388 31T312 -2T240 -11Q165 -11 121 25T77 120Q77 159 99 176T147 193T194 177T217 122Q217 113 216 106T211 92T205 82T198 73T191 67T184 62T178 59ZM374 446V465Q374 523 364 552T315 598Q309 600 293 601Q227 601 210 562Q199 539 199 433Q199 343 204 319T235 279Q250 272 274 271H282Q293 271 303 274T327 288T353 323T371 385Q374 403 374 446\",120802:\"117 621Q174 678 247 678Q305 678 351 647Q396 617 424 557Q460 472 460 328Q460 271 455 224Q448 154 427 104T376 27T314 -10T249 -22Q201 -22 160 1T91 67Q39 154 39 316Q39 541 117 621ZM250 55Q274 55 293 66T324 93T344 136T357 185T364 240T366 291T367 340Q367 373 367 393T363 449T352 507T332 553T299 589T250 601Q217 601 194 584T159 542T141 479T133 411T132 340V331Q132 299 133 277T137 219T147 157T167 107T201 68T250 55\",120803:\"94 612Q172 616 211 632T284 678H307V73H430V0H88V73H213V317Q213 560 212 560Q210 558 197 554T155 546T96 540L83 539V612H94\",120804:\"222 599Q190 599 166 585T128 550T108 509T97 474T93 459L67 492L42 526L47 539Q72 608 120 642T225 677Q304 677 355 644Q449 579 449 454Q449 373 361 290Q351 280 315 250T199 144Q156 103 137 85L293 86H449V0H50V79L216 242Q284 302 317 349T351 456Q351 517 315 558T222 599\",120805:\"333 521Q333 554 313 579T243 604Q154 604 99 514L78 546Q56 577 56 579Q56 580 62 589T82 611T114 637T162 662T222 677Q224 677 231 677T242 678H245Q318 678 374 634T430 520Q430 483 417 452T382 398T351 369T329 354L328 353Q369 333 373 330Q408 306 432 268T457 184Q457 103 397 41T242 -22Q131 -22 51 58L42 68L49 105L55 142L58 138Q62 134 66 130T77 120T91 108T108 96T129 83T152 72T179 63T209 57T242 54Q285 54 319 86T353 184Q353 231 331 267T260 315L213 316H166V354Q166 392 167 392Q233 395 257 405Q290 418 311 450T333 521\",120806:\"271 654L272 656H380V235H471V159H380V0H286V159H28V235L149 443Q269 652 271 654ZM292 235V607Q292 604 290 591T286 571T280 548T269 517T252 476T226 422T189 354T140 267Q136 260 132 253T126 240L123 236Q123 235 207 235H292\",120807:\"257 350Q236 350 218 342T189 323T171 301T160 281L157 273Q157 272 116 272H75V656H416V577H162V486Q162 396 163 396T174 403T207 418T258 426Q339 426 394 360T449 203Q449 113 386 46T226 -21H223Q188 -21 156 -11T102 13T64 42T41 66T33 77Q34 78 44 95T64 128L73 144Q93 112 117 93Q165 54 223 54Q270 54 306 86T345 197Q345 350 257 350\",120808:\"42 318Q42 396 61 460T109 564T173 629T237 666T289 677H301H317Q359 677 408 658V621Q408 585 407 585H406Q359 605 308 605Q246 605 203 556T146 421Q143 403 144 403Q145 402 152 409Q216 469 299 469Q333 469 357 457T407 405Q457 330 457 226Q457 126 402 57Q340 -22 251 -22Q216 -22 183 -7T116 43T63 149T42 318ZM260 393Q216 393 188 365T150 306T141 243Q141 153 172 104Q192 68 230 56Q238 54 251 54Q311 54 342 116Q360 152 360 226Q360 297 344 332Q320 382 277 392Q275 392 270 392T260 393\",120809:\"42 570V656H457V577L447 564Q345 439 295 289T244 0V-11H145V12Q160 330 356 550Q360 556 365 561T374 571L208 570H42\",120810:\"55 500Q55 568 109 623T250 678Q327 678 385 627T444 501Q444 445 410 410T336 357L329 353H330Q378 335 417 293T456 184Q456 93 393 36T249 -22T106 35T43 184Q43 251 82 293T169 353Q171 354 166 356Q165 356 163 357Q113 378 84 416T55 500ZM358 496Q358 557 325 581T250 605Q206 605 174 580T141 496Q141 446 171 420T250 393Q298 393 328 419T358 496ZM245 316Q205 316 172 285T139 185V179Q139 79 222 57Q231 55 250 55H254Q295 55 327 84Q360 120 360 188Q360 254 326 285Q295 316 245 316\",120811:\"44 476Q57 561 116 619T245 677H255Q308 677 349 647Q392 619 424 545T457 334Q457 178 382 78T205 -22Q168 -22 135 -10T86 14L72 25Q73 25 91 58L110 91Q127 78 136 72T163 60T203 54Q238 54 265 71T308 110T335 164T350 214T357 253V257L347 248Q284 187 200 187Q165 187 140 201T87 258Q42 332 42 430Q42 458 44 476ZM269 604Q265 605 254 605Q222 605 199 591T164 554T148 517T141 487Q140 478 140 430T141 373Q146 335 164 307T207 269Q223 263 247 263Q299 266 328 308T358 417Q358 435 356 456T346 511T318 570T269 604\",120812:\"274 -22Q227 -22 190 -9T128 24T87 76T62 135T49 204T44 271T43 336V343V362Q43 407 45 440T56 524T86 613T141 677Q197 715 264 715Q314 715 353 702T418 669T460 616T487 555T500 483T505 413T506 343Q506 310 506 293T503 241T498 185T486 133T467 83T437 42T397 8T343 -13T274 -22ZM355 355V401Q355 448 354 476T349 537T336 587T311 617T272 629Q270 629 266 629T261 628Q219 618 207 568T194 419V355Q194 203 200 156T231 85Q250 66 275 66Q299 66 318 85Q342 109 348 156T355 355\",120813:\"118 560H116Q107 560 100 561T85 572T76 600Q76 612 77 618T83 632T99 644Q102 645 135 646T207 660T275 700Q292 716 310 716Q353 716 360 691Q362 685 362 386V87H446Q464 76 468 69T473 44Q473 12 446 1H118Q105 7 100 13T94 25T93 44V62Q100 79 119 87H210V329Q210 571 208 571Q182 560 118 560\",120814:\"339 477Q339 505 332 531T301 579T242 601Q165 601 136 503Q133 493 130 490T121 486Q116 486 94 514Q86 523 82 528Q46 572 46 577Q46 591 77 632T147 691Q192 716 257 716Q305 716 351 700Q416 674 455 615T494 481Q494 421 463 376T356 266Q326 240 287 205T224 146T199 122H331Q359 122 392 122T431 123H445Q485 123 492 98Q494 92 494 62V47Q494 9 468 2Q463 0 272 0L83 1Q63 7 56 28L55 57V89Q59 97 215 261Q255 303 275 327T317 394T339 477\",120815:\"61 624Q62 630 83 650T153 693T262 716Q328 716 373 698T438 650T465 593T473 536Q473 438 375 376L387 371Q450 350 476 305T503 208Q503 164 492 126T456 53T380 -2T261 -22Q224 -22 189 -15T130 2T86 24T57 43T46 53Q46 56 53 99T62 145Q65 152 71 152Q76 152 90 143T123 121T175 99T248 87Q302 87 321 113T341 202Q341 264 329 292T279 329L232 331L190 332L184 338V411Q190 417 192 417Q193 418 205 419T232 421T252 424Q280 430 299 461T318 539V551Q318 599 283 609Q276 611 257 611Q225 611 199 601T159 577T136 554T120 543T102 560T76 597T62 618T61 624\",120816:\"278 693H282Q285 693 291 693T305 694T322 694T342 694H377Q402 694 411 691T430 677Q434 670 434 646T435 456V249H461H472Q509 249 516 224Q518 219 518 194Q518 178 518 171T511 155T492 142Q488 140 461 140H435V86V53Q435 9 409 2Q405 0 366 0H351Q306 0 298 25Q296 31 296 86V140H179H123Q99 140 80 129T50 106T37 95Q31 95 31 163V208Q31 246 33 251Q251 673 262 684Q268 691 278 693ZM302 249V416L301 576Q301 536 165 276L151 250L226 249H302\",120817:\"109 282Q87 290 83 310V666Q83 667 84 670T87 676T91 682T98 688T108 693Q112 694 269 694T431 692Q457 686 457 648V637V624Q457 588 431 581Q426 579 326 579H227V510Q227 442 229 442Q243 450 288 450Q377 450 435 399T494 222Q494 -22 241 -22Q202 -22 167 -11T109 16T69 49T45 79T37 94T69 151Q91 185 97 185Q105 185 112 170Q127 135 160 111T240 87Q266 87 284 94T311 111T325 142T331 179T332 226Q332 307 324 335T281 363Q228 363 197 306Q189 289 172 282H109\",120818:\"414 589Q410 589 389 600T334 612Q275 612 243 575Q209 538 202 433V422L209 431Q243 487 317 487Q392 487 440 442Q478 402 490 357T503 236Q503 113 454 54Q421 13 381 -4T279 -22Q263 -22 250 -21T214 -15T173 1T133 30T96 77T68 146T50 242Q46 278 46 336Q46 406 52 447Q84 698 312 715L315 716Q318 716 321 716Q323 716 328 716T337 715Q398 715 425 688V596Q419 591 414 589ZM282 87Q324 89 336 117T348 231Q348 310 343 343T324 388T277 399Q249 399 231 373T208 317T202 253Q202 201 207 168T224 117T249 93T282 87\",120819:\"135 38Q135 190 198 335T353 572H215Q185 572 151 572T110 571H96Q55 571 48 596Q46 602 46 633V648Q46 686 72 693Q76 695 124 695Q134 695 183 695T274 694Q472 694 477 692Q503 686 503 648V637Q503 612 502 605T491 588Q300 349 292 46V36Q292 -4 266 -9Q262 -11 214 -11H192Q160 -11 148 -3T135 38\",120820:\"61 518Q61 574 79 614T128 676T192 706T263 715H270Q298 715 318 714T373 701T430 671T470 612T488 517Q488 459 458 423T390 376Q388 375 393 373Q395 372 398 371Q503 330 503 204Q503 -22 275 -22Q209 -22 163 -3T92 49T57 120T46 204Q46 230 50 252T61 289T77 318T96 339T116 353T134 363T148 369T158 373T160 376Q118 389 90 424T61 518ZM344 538Q344 563 340 578T326 600T307 609T279 612Q232 612 218 594T204 518Q204 459 216 439T275 418Q328 418 338 450Q344 464 344 515V538ZM248 88T274 88T315 94T338 117T346 149T349 197Q349 269 342 290Q338 309 320 320T274 331Q246 331 229 320T207 290Q200 269 200 197Q201 163 202 149T210 118T232 94\",120821:\"347 272Q346 272 342 266T330 250T309 230T276 214T230 207Q185 207 150 223Q116 240 90 276T54 357Q46 393 46 468Q46 469 46 484T47 502T48 520T51 540T55 559T61 579T69 599T81 620T96 640T115 661Q174 716 276 716Q299 716 317 714T369 698T426 658T471 580T499 456Q503 402 503 342Q503 115 392 29Q322 -22 231 -22Q163 -22 115 7L82 31Q76 38 81 46Q116 112 127 123Q130 126 134 126T148 116T179 97T226 87Q287 87 318 132Q323 139 326 146T332 165T337 182T340 204T342 225T345 249T347 272ZM201 547T201 454T211 329T262 294Q276 294 285 296T310 312T335 355Q347 391 347 447Q347 520 340 550T317 595Q300 612 277 612Q226 612 214 580\",120822:\"42 305Q42 450 111 535T257 621Q335 621 390 562Q482 468 482 306Q482 174 418 82T262 -10T106 82T42 305ZM257 545Q209 545 168 481T126 320Q126 220 162 147Q204 65 262 65Q318 65 358 139T398 320V328Q395 411 364 470T284 543Q270 545 257 545\",120823:\"99 461Q99 470 99 474T104 487T120 498T151 502Q213 517 251 596Q264 622 283 622Q308 622 319 597V76H373H401Q428 76 439 69T450 38Q450 11 428 1H127Q104 10 104 38Q104 62 115 69T153 76H181H235V269Q235 461 234 461Q184 426 137 424H133Q124 424 119 425T109 431T99 447V461\",120824:\"52 462Q52 528 110 575T247 622H250Q343 622 407 565T472 421Q472 371 446 324T390 248T308 178Q307 177 275 151T214 101L185 77Q185 76 286 76H388V87Q388 105 397 114T430 123T463 114Q470 107 471 100T472 61V42Q472 24 468 16T450 1H75Q53 10 53 32V38V48Q53 57 63 67T127 122Q153 144 169 157L289 256Q388 345 388 419Q388 473 346 509T231 545H224Q176 545 146 499L144 494Q155 476 155 459Q154 459 155 455T154 444T148 430T136 417T114 408Q113 408 110 408T104 407Q80 407 66 422T52 462\",120825:\"260 546Q233 546 211 541T180 531T171 524L174 514Q177 505 177 497Q177 476 162 461T125 446Q106 446 90 459T73 504Q76 540 98 565T150 601T203 616T239 621Q241 622 265 622Q322 620 362 602T420 558T444 513T451 478Q451 386 369 329L375 326Q381 323 386 320T401 311T419 298T436 283T452 263T466 240T475 212T479 180Q479 99 416 44T259 -11T105 28T44 130Q44 154 59 168T95 183Q117 183 132 169T148 131Q148 119 139 101Q175 65 260 65Q316 65 355 97T395 179Q395 211 375 240Q336 292 253 292H234H215Q194 292 185 299T175 330Q175 350 184 359Q192 368 238 370T309 384Q336 398 351 423T367 474Q367 496 350 513Q321 546 260 546\",120826:\"235 1Q213 10 213 32V38V46Q213 65 230 73Q236 76 274 76H314V168H183L52 169Q37 175 33 182T29 205V218L30 244Q53 283 155 443T264 613Q276 623 298 623H323H363Q378 616 385 601V244H429H450Q474 244 484 237T495 206Q495 179 477 171Q471 168 429 168H385V76H425H442Q466 76 476 69T487 38Q487 10 465 1H235ZM314 244V554L117 245L215 244H314\",120827:\"387 189Q387 244 354 278T273 313Q230 313 205 301T163 271T138 249H120Q102 249 97 251Q85 258 83 266T80 311Q80 320 80 359T81 430Q81 587 82 591Q88 605 103 610H108Q112 610 120 610T138 610T163 610T192 611T225 611T260 611H415Q416 610 421 607T428 602T432 596T436 587T437 573Q437 567 437 562T434 554T431 548T427 543T423 540T418 538L415 536L289 535H164V363L170 366Q175 368 184 372T207 380T238 386T276 389Q357 389 414 331T472 187Q472 116 412 53T245 -10Q218 -10 209 -9Q126 5 89 48T52 137Q52 164 68 177T104 191Q130 191 143 175T156 141Q156 132 154 125T149 113T146 107Q146 104 155 95T188 76T245 65Q298 65 342 98T387 189\",120828:\"357 536Q357 546 318 546Q258 546 205 497T133 357V353L144 361Q210 402 285 402Q362 402 414 350Q479 285 479 193Q479 111 418 50T263 -11Q234 -11 207 -3T149 26T97 81T60 171T45 301Q45 444 129 533T319 622Q388 622 421 589T454 510Q454 491 442 475T402 458Q373 458 362 475T350 510Q350 520 354 528L357 536ZM319 326T269 326T179 298T136 223Q136 202 143 174T176 112T237 68Q246 66 265 66Q319 66 360 107Q395 146 395 197Q395 250 356 289Q319 326 269 326\",120829:\"204 -10Q162 -10 162 40Q162 146 198 261T310 477Q311 478 321 491T342 517T358 535H128V524Q128 506 119 497Q111 489 86 489H78Q55 489 46 508Q44 513 44 557V580Q44 605 52 616T88 627H93Q114 627 125 611H458Q474 598 477 593T480 573Q480 559 478 553T469 543T446 521T408 477Q252 290 246 49Q246 43 246 37T246 27T245 22Q243 11 233 1T204 -10\",120830:\"58 460Q58 523 117 572T254 621Q290 621 298 620Q376 607 421 560T466 460Q466 441 460 424T443 393T421 370T397 352T374 340T357 332L350 330L356 328Q363 325 371 321T392 310T415 295T439 274T459 249T473 217T479 179Q479 102 418 46T262 -10T106 46T45 179Q45 202 52 222T70 257T96 284T123 305T148 319T167 328L174 330L170 332Q166 333 159 336T145 343Q104 362 81 393T58 460ZM382 458Q382 491 349 518T263 546Q215 546 179 521T142 458Q142 421 178 395T262 368Q315 368 348 396T382 458ZM396 178Q396 223 358 257T263 292Q206 292 167 258T128 178Q128 137 163 102T262 66Q324 66 360 101T396 178\",120831:\"392 259Q333 210 236 210H233Q163 210 109 262Q46 325 46 411T99 550Q164 622 264 622Q293 622 319 615T376 587T428 532T464 440T479 304Q479 167 400 78T217 -11Q140 -11 105 22T70 101Q70 124 84 138T122 153Q150 153 162 137T174 101Q174 91 168 76Q179 65 216 65Q267 65 300 93Q322 109 339 130T366 173T380 210T388 242T392 259ZM388 389Q388 438 357 492T268 546T185 520Q129 479 129 415Q129 384 138 363Q145 349 156 334T195 302T255 285Q305 285 345 313T388 389\"},{8243:\"\\u2032\\u2032\",8244:\"\\u2032\\u2032\\u2032\",8246:\"\\u2035\\u2035\",8247:\"\\u2035\\u2035\\u2035\",8279:\"\\u2032\\u2032\\u2032\\u2032\",8708:\"\\u2203\\u0338\",8716:\"\\u220b\\u0338\",8772:\"\\u2243\\u0338\",8777:\"\\u2248\\u0338\",8802:\"\\u2261\\u0338\",8813:\"\\u224d\\u0338\",8820:\"\\u2272\\u0338\",8821:\"\\u2273\\u0338\",8824:\"\\u2276\\u0338\",8825:\"\\u2277\\u0338\",8836:\"\\u2282\\u0338\",8837:\"\\u2283\\u0338\",8930:\"\\u2291\\u0338\",8931:\"\\u2292\\u0338\",10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normal=void 0,e.normal={32:[0,0,.25],33:[.716,0,.278],34:[.694,-.379,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.778],39:[.694,-.379,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.32,.5],43:[.583,.082,.778],44:[.121,.194,.278],45:[.252,-.179,.333],46:[.12,0,.278],47:[.75,.25,.5],48:[.666,.022,.5],49:[.666,0,.5],50:[.666,0,.5],51:[.665,.022,.5],52:[.677,0,.5],53:[.666,.022,.5],54:[.666,.022,.5],55:[.676,.022,.5],56:[.666,.022,.5],57:[.666,.022,.5],58:[.43,0,.278],59:[.43,.194,.278],60:[.54,.04,.778],61:[.583,.082,.778],62:[.54,.04,.778],63:[.705,0,.472],64:[.705,.011,.778],65:[.716,0,.75],66:[.683,0,.708],67:[.705,.021,.722],68:[.683,0,.764],69:[.68,0,.681],70:[.68,0,.653],71:[.705,.022,.785],72:[.683,0,.75],73:[.683,0,.361],74:[.683,.022,.514],75:[.683,0,.778],76:[.683,0,.625],77:[.683,0,.917],78:[.683,0,.75],79:[.705,.022,.778],80:[.683,0,.681],81:[.705,.193,.778],82:[.683,.022,.736],83:[.705,.022,.556],84:[.677,0,.722],85:[.683,.022,.75],86:[.683,.022,.75],87:[.683,.022,1.028],88:[.683,0,.75],89:[.683,0,.75],90:[.683,0,.611],91:[.75,.25,.278],92:[.75,.25,.5],93:[.75,.25,.278],94:[.694,-.531,.5],95:[-.025,.062,.5],96:[.699,-.505,.5],97:[.448,.011,.5],98:[.694,.011,.556],99:[.448,.011,.444],100:[.694,.011,.556],101:[.448,.011,.444],102:[.705,0,.306,{ic:.066}],103:[.453,.206,.5],104:[.694,0,.556],105:[.669,0,.278],106:[.669,.205,.306],107:[.694,0,.528],108:[.694,0,.278],109:[.442,0,.833],110:[.442,0,.556],111:[.448,.01,.5],112:[.442,.194,.556],113:[.442,.194,.528],114:[.442,0,.392],115:[.448,.011,.394],116:[.615,.01,.389],117:[.442,.011,.556],118:[.431,.011,.528],119:[.431,.011,.722],120:[.431,0,.528],121:[.431,.204,.528],122:[.431,0,.444],123:[.75,.25,.5],124:[.75,.249,.278],125:[.75,.25,.5],126:[.318,-.215,.5],160:[0,0,.25],163:[.714,.011,.769],165:[.683,0,.75],168:[.669,-.554,.5],172:[.356,-.089,.667],174:[.709,.175,.947],175:[.59,-.544,.5],176:[.715,-.542,.5],177:[.666,0,.778],180:[.699,-.505,.5],183:[.31,-.19,.278],215:[.491,-.009,.778],240:[.749,.021,.556],247:[.537,.036,.778],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.56,-.043,.275],710:[.694,-.531,.5],711:[.644,-.513,.5],713:[.59,-.544,.5],714:[.699,-.505,.5],715:[.699,-.505,.5],728:[.694,-.515,.5],729:[.669,-.549,.5],730:[.715,-.542,.5],732:[.668,-.565,.5],768:[.699,-.505,0],769:[.699,-.505,0],770:[.694,-.531,0],771:[.668,-.565,0],772:[.59,-.544,0],774:[.694,-.515,0],775:[.669,-.549,0],776:[.669,-.554,0],778:[.715,-.542,0],779:[.701,-.51,0],780:[.644,-.513,0],824:[.716,.215,0],913:[.716,0,.75],914:[.683,0,.708],915:[.68,0,.625],916:[.716,0,.833],917:[.68,0,.681],918:[.683,0,.611],919:[.683,0,.75],920:[.705,.022,.778],921:[.683,0,.361],922:[.683,0,.778],923:[.716,0,.694],924:[.683,0,.917],925:[.683,0,.75],926:[.677,0,.667],927:[.705,.022,.778],928:[.68,0,.75],929:[.683,0,.681],931:[.683,0,.722],932:[.677,0,.722],933:[.705,0,.778],934:[.683,0,.722],935:[.683,0,.75],936:[.683,0,.778],937:[.704,0,.722],8192:[0,0,.5],8193:[0,0,1],8194:[0,0,.5],8195:[0,0,1],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.1],8203:[0,0,0],8204:[0,0,0],8211:[.285,-.248,.5],8212:[.285,-.248,1],8213:[.285,-.248,1],8214:[.75,.25,.5],8215:[-.025,.062,.5],8216:[.694,-.379,.278],8217:[.694,-.379,.278],8220:[.694,-.379,.5],8221:[.694,-.379,.5],8224:[.705,.216,.444],8225:[.705,.205,.444],8226:[.444,-.055,.5],8230:[.12,0,1.172],8242:[.56,-.043,.275],8243:[.56,0,.55],8244:[.56,0,.825],8245:[.56,-.043,.275],8246:[.56,0,.55],8247:[.56,0,.825],8254:[.59,-.544,.5],8260:[.75,.25,.5],8279:[.56,0,1.1],8288:[0,0,0],8289:[0,0,0],8290:[0,0,0],8291:[0,0,0],8292:[0,0,0],8407:[.714,-.516,.5],8450:[.702,.019,.722],8459:[.717,.036,.969,{ic:.272,sk:.333}],8460:[.666,.133,.72],8461:[.683,0,.778],8462:[.694,.011,.576,{sk:-.0278}],8463:[.695,.013,.54,{ic:.022}],8464:[.717,.314,1.052,{ic:.081,sk:.417}],8465:[.686,.026,.554],8466:[.717,.017,.874,{ic:.161,sk:.306}],8467:[.705,.02,.417,{sk:.111}],8469:[.683,.02,.722],8472:[.453,.216,.636,{sk:.111}],8473:[.683,0,.611],8474:[.701,.181,.778],8475:[.717,.017,.85,{ic:.037,sk:.194}],8476:[.686,.026,.828],8477:[.683,0,.722],8484:[.683,0,.667],8486:[.704,0,.722],8487:[.684,.022,.722],8488:[.729,.139,.602],8492:[.708,.028,.908,{ic:.02,sk:.194}],8493:[.685,.024,.613],8496:[.707,.008,.562,{ic:.156,sk:.139}],8497:[.735,.036,.895,{ic:.095,sk:.222}],8498:[.695,0,.556],8499:[.721,.05,1.08,{ic:.136,sk:.444}],8501:[.694,0,.611],8502:[.763,.021,.667,{ic:.02}],8503:[.764,.043,.444],8504:[.764,.043,.667],8513:[.705,.023,.639],8592:[.511,.011,1],8593:[.694,.193,.5],8594:[.511,.011,1],8595:[.694,.194,.5],8596:[.511,.011,1],8597:[.772,.272,.5],8598:[.72,.195,1],8599:[.72,.195,1],8600:[.695,.22,1],8601:[.695,.22,1],8602:[.437,-.06,1],8603:[.437,-.06,1],8606:[.417,-.083,1],8608:[.417,-.083,1],8610:[.417,-.083,1.111],8611:[.417,-.083,1.111],8614:[.511,.011,1],8617:[.511,.011,1.126],8618:[.511,.011,1.126],8619:[.575,.041,1],8620:[.575,.041,1],8621:[.417,-.083,1.389],8622:[.437,-.06,1],8624:[.722,0,.5],8625:[.722,0,.5],8630:[.461,0,1],8631:[.46,0,1],8634:[.65,.083,.778],8635:[.65,.083,.778],8636:[.511,-.23,1],8637:[.27,.011,1],8638:[.694,.194,.417],8639:[.694,.194,.417],8640:[.511,-.23,1],8641:[.27,.011,1],8642:[.694,.194,.417],8643:[.694,.194,.417],8644:[.667,0,1],8646:[.667,0,1],8647:[.583,.083,1],8648:[.694,.193,.833],8649:[.583,.083,1],8650:[.694,.194,.833],8651:[.514,.014,1],8652:[.671,.011,1],8653:[.534,.035,1],8654:[.534,.037,1],8655:[.534,.035,1],8656:[.525,.024,1],8657:[.694,.194,.611],8658:[.525,.024,1],8659:[.694,.194,.611],8660:[.526,.025,1],8661:[.772,.272,.611],8666:[.611,.111,1],8667:[.611,.111,1],8669:[.417,-.083,1],8672:[.437,-.064,1.334],8674:[.437,-.064,1.334],8704:[.694,.022,.556],8705:[.846,.021,.5],8706:[.715,.022,.531,{ic:.035,sk:.0833}],8707:[.694,0,.556],8708:[.716,.215,.556],8709:[.772,.078,.5],8710:[.716,0,.833],8711:[.683,.033,.833],8712:[.54,.04,.667],8713:[.716,.215,.667],8715:[.54,.04,.667],8716:[.716,.215,.667],8717:[.44,0,.429,{ic:.027}],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8722:[.583,.082,.778],8723:[.5,.166,.778],8724:[.766,.093,.778],8725:[.75,.25,.5],8726:[.75,.25,.5],8727:[.465,-.035,.5],8728:[.444,-.055,.5],8729:[.444,-.055,.5],8730:[.8,.2,.833,{ic:.02}],8733:[.442,.011,.778],8734:[.442,.011,1],8736:[.694,0,.722],8737:[.714,.02,.722],8738:[.551,.051,.722],8739:[.75,.249,.278],8740:[.75,.252,.278,{ic:.019}],8741:[.75,.25,.5],8742:[.75,.25,.5,{ic:.018}],8743:[.598,.022,.667],8744:[.598,.022,.667],8745:[.598,.022,.667],8746:[.598,.022,.667],8747:[.716,.216,.417,{ic:.055}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8756:[.471,.082,.667],8757:[.471,.082,.667],8764:[.367,-.133,.778],8765:[.367,-.133,.778],8768:[.583,.083,.278],8769:[.467,-.032,.778],8770:[.463,-.034,.778],8771:[.464,-.036,.778],8772:[.716,.215,.778],8773:[.589,-.022,.778],8775:[.652,.155,.778],8776:[.483,-.055,.778],8777:[.716,.215,.778],8778:[.579,.039,.778],8781:[.484,-.016,.778],8782:[.492,-.008,.778],8783:[.492,-.133,.778],8784:[.67,-.133,.778],8785:[.609,.108,.778],8786:[.601,.101,.778],8787:[.601,.102,.778],8790:[.367,-.133,.778],8791:[.721,-.133,.778],8796:[.859,-.133,.778],8800:[.716,.215,.778],8801:[.464,-.036,.778],8802:[.716,.215,.778],8804:[.636,.138,.778],8805:[.636,.138,.778],8806:[.753,.175,.778],8807:[.753,.175,.778],8808:[.752,.286,.778],8809:[.752,.286,.778],8810:[.568,.067,1],8811:[.567,.067,1],8812:[.75,.25,.5],8813:[.716,.215,.778],8814:[.708,.209,.778],8815:[.708,.209,.778],8816:[.801,.303,.778],8817:[.801,.303,.778],8818:[.732,.228,.778],8819:[.732,.228,.778],8820:[.732,.228,.778],8821:[.732,.228,.778],8822:[.681,.253,.778],8823:[.681,.253,.778],8824:[.716,.253,.778],8825:[.716,.253,.778],8826:[.539,.041,.778],8827:[.539,.041,.778],8828:[.58,.153,.778],8829:[.58,.154,.778],8830:[.732,.228,.778],8831:[.732,.228,.778],8832:[.705,.208,.778],8833:[.705,.208,.778],8834:[.54,.04,.778],8835:[.54,.04,.778],8836:[.716,.215,.778],8837:[.716,.215,.778],8838:[.636,.138,.778],8839:[.636,.138,.778],8840:[.801,.303,.778],8841:[.801,.303,.778],8842:[.635,.241,.778],8843:[.635,.241,.778],8846:[.598,.022,.667],8847:[.539,.041,.778],8848:[.539,.041,.778],8849:[.636,.138,.778],8850:[.636,.138,.778],8851:[.598,0,.667],8852:[.598,0,.667],8853:[.583,.083,.778],8854:[.583,.083,.778],8855:[.583,.083,.778],8856:[.583,.083,.778],8857:[.583,.083,.778],8858:[.582,.082,.778],8859:[.582,.082,.778],8861:[.582,.082,.778],8862:[.689,0,.778],8863:[.689,0,.778],8864:[.689,0,.778],8865:[.689,0,.778],8866:[.694,0,.611],8867:[.694,0,.611],8868:[.668,0,.778],8869:[.668,0,.778],8872:[.75,.249,.867],8873:[.694,0,.722],8874:[.694,0,.889],8876:[.695,0,.611],8877:[.695,0,.611],8878:[.695,0,.722],8879:[.695,0,.722],8882:[.539,.041,.778],8883:[.539,.041,.778],8884:[.636,.138,.778],8885:[.636,.138,.778],8888:[.408,-.092,1.111],8890:[.431,.212,.556],8891:[.716,0,.611],8892:[.716,0,.611],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8900:[.488,-.012,.5],8901:[.31,-.19,.278],8902:[.486,-.016,.5],8903:[.545,.044,.778],8904:[.505,.005,.9],8905:[.492,-.008,.778],8906:[.492,-.008,.778],8907:[.694,.022,.778],8908:[.694,.022,.778],8909:[.464,-.036,.778],8910:[.578,.021,.76],8911:[.578,.022,.76],8912:[.54,.04,.778],8913:[.54,.04,.778],8914:[.598,.022,.667],8915:[.598,.022,.667],8916:[.736,.022,.667],8918:[.541,.041,.778],8919:[.541,.041,.778],8920:[.568,.067,1.333],8921:[.568,.067,1.333],8922:[.886,.386,.778],8923:[.886,.386,.778],8926:[.734,0,.778],8927:[.734,0,.778],8928:[.801,.303,.778],8929:[.801,.303,.778],8930:[.716,.215,.778],8931:[.716,.215,.778],8934:[.73,.359,.778],8935:[.73,.359,.778],8936:[.73,.359,.778],8937:[.73,.359,.778],8938:[.706,.208,.778],8939:[.706,.208,.778],8940:[.802,.303,.778],8941:[.801,.303,.778],8942:[1.3,.03,.278],8943:[.31,-.19,1.172],8945:[1.52,-.1,1.282],8965:[.716,0,.611],8966:[.813,.097,.611],8968:[.75,.25,.444],8969:[.75,.25,.444],8970:[.75,.25,.444],8971:[.75,.25,.444],8988:[.694,-.306,.5],8989:[.694,-.306,.5],8990:[.366,.022,.5],8991:[.366,.022,.5],8994:[.388,-.122,1],8995:[.378,-.134,1],9001:[.75,.25,.389],9002:[.75,.25,.389],9136:[.744,.244,.412],9137:[.744,.244,.412],9168:[.602,0,.667],9416:[.709,.175,.902],9484:[.694,-.306,.5],9488:[.694,-.306,.5],9492:[.366,.022,.5],9496:[.366,.022,.5],9585:[.694,.195,.889],9586:[.694,.195,.889],9632:[.689,0,.778],9633:[.689,0,.778],9642:[.689,0,.778],9650:[.575,.02,.722],9651:[.716,0,.889],9652:[.575,.02,.722],9653:[.716,0,.889],9654:[.539,.041,.778],9656:[.539,.041,.778],9657:[.505,.005,.5],9660:[.576,.019,.722],9661:[.5,.215,.889],9662:[.576,.019,.722],9663:[.5,.215,.889],9664:[.539,.041,.778],9666:[.539,.041,.778],9667:[.505,.005,.5],9674:[.716,.132,.667],9711:[.715,.215,1],9723:[.689,0,.778],9724:[.689,0,.778],9733:[.694,.111,.944],9824:[.727,.13,.778],9825:[.716,.033,.778],9826:[.727,.162,.778],9827:[.726,.13,.778],9837:[.75,.022,.389],9838:[.734,.223,.389],9839:[.723,.223,.389],10003:[.706,.034,.833],10016:[.716,.022,.833],10072:[.75,.249,.278],10216:[.75,.25,.389],10217:[.75,.25,.389],10222:[.744,.244,.412],10223:[.744,.244,.412],10229:[.511,.011,1.609],10230:[.511,.011,1.638],10231:[.511,.011,1.859],10232:[.525,.024,1.609],10233:[.525,.024,1.638],10234:[.525,.024,1.858],10236:[.511,.011,1.638],10731:[.716,.132,.667],10744:[.716,.215,.778],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],10799:[.491,-.009,.778],10815:[.683,0,.75],10846:[.813,.097,.611],10877:[.636,.138,.778],10878:[.636,.138,.778],10885:[.762,.29,.778],10886:[.762,.29,.778],10887:[.635,.241,.778],10888:[.635,.241,.778],10889:[.761,.387,.778],10890:[.761,.387,.778],10891:[1.003,.463,.778],10892:[1.003,.463,.778],10901:[.636,.138,.778],10902:[.636,.138,.778],10927:[.636,.138,.778],10928:[.636,.138,.778],10933:[.752,.286,.778],10934:[.752,.286,.778],10935:[.761,.294,.778],10936:[.761,.294,.778],10937:[.761,.337,.778],10938:[.761,.337,.778],10949:[.753,.215,.778],10950:[.753,.215,.778],10955:[.783,.385,.778],10956:[.783,.385,.778],12296:[.75,.25,.389],12297:[.75,.25,.389],57350:[.43,.023,.222,{ic:.018}],57351:[.431,.024,.389,{ic:.018}],57352:[.605,.085,.778],57353:[.434,.006,.667,{ic:.067}],57356:[.752,.284,.778],57357:[.752,.284,.778],57358:[.919,.421,.778],57359:[.801,.303,.778],57360:[.801,.303,.778],57361:[.919,.421,.778],57366:[.828,.33,.778],57367:[.752,.332,.778],57368:[.828,.33,.778],57369:[.752,.333,.778],57370:[.634,.255,.778],57371:[.634,.254,.778],119808:[.698,0,.869],119809:[.686,0,.818],119810:[.697,.011,.831],119811:[.686,0,.882],119812:[.68,0,.756],119813:[.68,0,.724],119814:[.697,.01,.904],119815:[.686,0,.9],119816:[.686,0,.436],119817:[.686,.011,.594],119818:[.686,0,.901],119819:[.686,0,.692],119820:[.686,0,1.092],119821:[.686,0,.9],119822:[.696,.01,.864],119823:[.686,0,.786],119824:[.696,.193,.864],119825:[.686,.011,.862],119826:[.697,.011,.639],119827:[.675,0,.8],119828:[.686,.011,.885],119829:[.686,.007,.869],119830:[.686,.007,1.189],119831:[.686,0,.869],119832:[.686,0,.869],119833:[.686,0,.703],119834:[.453,.006,.559],119835:[.694,.006,.639],119836:[.453,.006,.511],119837:[.694,.006,.639],119838:[.452,.006,.527],119839:[.7,0,.351,{ic:.101}],119840:[.455,.201,.575],119841:[.694,0,.639],119842:[.695,0,.319],119843:[.695,.2,.351],119844:[.694,0,.607],119845:[.694,0,.319],119846:[.45,0,.958],119847:[.45,0,.639],119848:[.452,.005,.575],119849:[.45,.194,.639],119850:[.45,.194,.607],119851:[.45,0,.474],119852:[.453,.006,.454],119853:[.635,.005,.447],119854:[.45,.006,.639],119855:[.444,0,.607],119856:[.444,0,.831],119857:[.444,0,.607],119858:[.444,.2,.607],119859:[.444,0,.511],119860:[.716,0,.75,{sk:.139}],119861:[.683,0,.759,{sk:.0833}],119862:[.705,.022,.715,{ic:.045,sk:.0833}],119863:[.683,0,.828,{sk:.0556}],119864:[.68,0,.738,{ic:.026,sk:.0833}],119865:[.68,0,.643,{ic:.106,sk:.0833}],119866:[.705,.022,.786,{sk:.0833}],119867:[.683,0,.831,{ic:.057,sk:.0556}],119868:[.683,0,.44,{ic:.064,sk:.111}],119869:[.683,.022,.555,{ic:.078,sk:.167}],119870:[.683,0,.849,{ic:.04,sk:.0556}],119871:[.683,0,.681,{sk:.0278}],119872:[.683,0,.97,{ic:.081,sk:.0833}],119873:[.683,0,.803,{ic:.085,sk:.0833}],119874:[.704,.022,.763,{sk:.0833}],119875:[.683,0,.642,{ic:.109,sk:.0833}],119876:[.704,.194,.791,{sk:.0833}],119877:[.683,.021,.759,{sk:.0833}],119878:[.705,.022,.613,{ic:.032,sk:.0833}],119879:[.677,0,.584,{ic:.12,sk:.0833}],119880:[.683,.022,.683,{ic:.084,sk:.0278}],119881:[.683,.022,.583,{ic:.186}],119882:[.683,.022,.944,{ic:.104}],119883:[.683,0,.828,{ic:.024,sk:.0833}],119884:[.683,0,.581,{ic:.182}],119885:[.683,0,.683,{ic:.04,sk:.0833}],119886:[.441,.01,.529],119887:[.694,.011,.429],119888:[.442,.011,.433,{sk:.0556}],119889:[.694,.01,.52,{sk:.167}],119890:[.442,.011,.466,{sk:.0556}],119891:[.705,.205,.49,{ic:.06,sk:.167}],119892:[.442,.205,.477,{sk:.0278}],119894:[.661,.011,.345],119895:[.661,.204,.412],119896:[.694,.011,.521],119897:[.694,.011,.298,{sk:.0833}],119898:[.442,.011,.878],119899:[.442,.011,.6],119900:[.441,.011,.485,{sk:.0556}],119901:[.442,.194,.503,{sk:.0833}],119902:[.442,.194,.446,{ic:.014,sk:.0833}],119903:[.442,.011,.451,{sk:.0556}],119904:[.442,.01,.469,{sk:.0556}],119905:[.626,.011,.361,{sk:.0833}],119906:[.442,.011,.572,{sk:.0278}],119907:[.443,.011,.485,{sk:.0278}],119908:[.443,.011,.716,{sk:.0833}],119909:[.442,.011,.572,{sk:.0278}],119910:[.442,.205,.49,{sk:.0556}],119911:[.442,.011,.465,{sk:.0556}],119912:[.711,0,.869,{sk:.16}],119913:[.686,0,.866,{sk:.0958}],119914:[.703,.017,.817,{ic:.038,sk:.0958}],119915:[.686,0,.938,{sk:.0639}],119916:[.68,0,.81,{ic:.015,sk:.0958}],119917:[.68,0,.689,{ic:.12,sk:.0958}],119918:[.703,.016,.887,{sk:.0958}],119919:[.686,0,.982,{ic:.045,sk:.0639}],119920:[.686,0,.511,{ic:.062,sk:.128}],119921:[.686,.017,.631,{ic:.063,sk:.192}],119922:[.686,0,.971,{ic:.032,sk:.0639}],119923:[.686,0,.756,{sk:.0319}],119924:[.686,0,1.142,{ic:.077,sk:.0958}],119925:[.686,0,.95,{ic:.077,sk:.0958}],119926:[.703,.017,.837,{sk:.0958}],119927:[.686,0,.723,{ic:.124,sk:.0958}],119928:[.703,.194,.869,{sk:.0958}],119929:[.686,.017,.872,{sk:.0958}],119930:[.703,.017,.693,{ic:.021,sk:.0958}],119931:[.675,0,.637,{ic:.135,sk:.0958}],119932:[.686,.016,.8,{ic:.077,sk:.0319}],119933:[.686,.016,.678,{ic:.208}],119934:[.686,.017,1.093,{ic:.114}],119935:[.686,0,.947,{sk:.0958}],119936:[.686,0,.675,{ic:.201}],119937:[.686,0,.773,{ic:.032,sk:.0958}],119938:[.452,.008,.633],119939:[.694,.008,.521],119940:[.451,.008,.513,{sk:.0639}],119941:[.694,.008,.61,{sk:.192}],119942:[.452,.008,.554,{sk:.0639}],119943:[.701,.201,.568,{ic:.056,sk:.192}],119944:[.452,.202,.545,{sk:.0319}],119945:[.694,.008,.668,{sk:-.0319}],119946:[.694,.008,.405],119947:[.694,.202,.471],119948:[.694,.008,.604],119949:[.694,.008,.348,{sk:.0958}],119950:[.452,.008,1.032],119951:[.452,.008,.713],119952:[.452,.008,.585,{sk:.0639}],119953:[.452,.194,.601,{sk:.0958}],119954:[.452,.194,.542,{sk:.0958}],119955:[.452,.008,.529,{sk:.0639}],119956:[.451,.008,.531,{sk:.0639}],119957:[.643,.007,.415,{sk:.0958}],119958:[.452,.008,.681,{sk:.0319}],119959:[.453,.008,.567,{sk:.0319}],119960:[.453,.008,.831,{sk:.0958}],119961:[.452,.008,.659,{sk:.0319}],119962:[.452,.202,.59,{sk:.0639}],119963:[.452,.008,.555,{sk:.0639}],119964:[.717,.008,.803,{ic:.213,sk:.389}],119966:[.728,.026,.666,{ic:.153,sk:.278}],119967:[.708,.031,.774,{ic:.081,sk:.111}],119970:[.717,.037,.61,{ic:.128,sk:.25}],119973:[.717,.314,1.052,{ic:.081,sk:.417}],119974:[.717,.037,.914,{ic:.29,sk:.361}],119977:[.726,.036,.902,{ic:.306,sk:.389}],119978:[.707,.008,.738,{ic:.067,sk:.167}],119979:[.716,.037,1.013,{ic:.018,sk:.222}],119980:[.717,.017,.883,{sk:.278}],119982:[.708,.036,.868,{ic:.148,sk:.333}],119983:[.735,.037,.747,{ic:.249,sk:.222}],119984:[.717,.017,.8,{ic:.16,sk:.25}],119985:[.717,.017,.622,{ic:.228,sk:.222}],119986:[.717,.017,.805,{ic:.221,sk:.25}],119987:[.717,.017,.944,{ic:.187,sk:.278}],119988:[.716,.017,.71,{ic:.249,sk:.194}],119989:[.717,.016,.821,{ic:.211,sk:.306}],120068:[.696,.026,.718],120069:[.691,.027,.884],120071:[.685,.027,.832],120072:[.685,.024,.663],120073:[.686,.153,.611],120074:[.69,.026,.785],120077:[.686,.139,.552],120078:[.68,.027,.668,{ic:.014}],120079:[.686,.026,.666],120080:[.692,.027,1.05],120081:[.686,.025,.832],120082:[.729,.027,.827],120083:[.692,.218,.828],120084:[.729,.069,.827],120086:[.692,.027,.829],120087:[.701,.027,.669],120088:[.697,.027,.646,{ic:.019}],120089:[.686,.026,.831],120090:[.686,.027,1.046],120091:[.688,.027,.719],120092:[.686,.218,.833],120094:[.47,.035,.5],120095:[.685,.031,.513],120096:[.466,.029,.389],120097:[.609,.033,.499],120098:[.467,.03,.401],120099:[.681,.221,.326],120100:[.47,.209,.504],120101:[.688,.205,.521],120102:[.673,.02,.279],120103:[.672,.208,.281],120104:[.689,.025,.389],120105:[.685,.02,.28],120106:[.475,.026,.767],120107:[.475,.022,.527],120108:[.48,.028,.489],120109:[.541,.212,.5],120110:[.479,.219,.489],120111:[.474,.021,.389],120112:[.478,.029,.443],120113:[.64,.02,.333,{ic:.015}],120114:[.474,.023,.517],120115:[.53,.028,.512],120116:[.532,.028,.774],120117:[.472,.188,.389],120118:[.528,.218,.499],120119:[.471,.214,.391],120120:[.701,0,.722],120121:[.683,0,.667],120123:[.683,0,.722],120124:[.683,0,.667],120125:[.683,0,.611],120126:[.702,.019,.778],120128:[.683,0,.389],120129:[.683,.077,.5],120130:[.683,0,.778],120131:[.683,0,.667],120132:[.683,0,.944],120134:[.701,.019,.778],120138:[.702,.012,.556],120139:[.683,0,.667],120140:[.683,.019,.722],120141:[.683,.02,.722],120142:[.683,.019,1],120143:[.683,0,.722],120144:[.683,0,.722],120172:[.686,.031,.847],120173:[.684,.031,1.044],120174:[.676,.032,.723],120175:[.683,.029,.982],120176:[.686,.029,.783],120177:[.684,.146,.722],120178:[.687,.029,.927],120179:[.683,.126,.851],120180:[.681,.025,.655],120181:[.68,.141,.652],120182:[.681,.026,.789,{ic:.017}],120183:[.683,.028,.786],120184:[.683,.032,1.239],120185:[.679,.03,.983],120186:[.726,.03,.976],120187:[.688,.223,.977],120188:[.726,.083,.976],120189:[.688,.028,.978],120190:[.685,.031,.978],120191:[.686,.03,.79,{ic:.012}],120192:[.688,.039,.851,{ic:.02}],120193:[.685,.029,.982],120194:[.683,.03,1.235],120195:[.681,.035,.849],120196:[.688,.214,.984],120197:[.677,.148,.711],120198:[.472,.032,.603],120199:[.69,.032,.59],120200:[.473,.026,.464],120201:[.632,.028,.589],120202:[.471,.027,.472],120203:[.687,.222,.388],120204:[.472,.208,.595],120205:[.687,.207,.615],120206:[.686,.025,.331],120207:[.682,.203,.332],120208:[.682,.025,.464],120209:[.681,.024,.337],120210:[.476,.031,.921],120211:[.473,.028,.654],120212:[.482,.034,.609],120213:[.557,.207,.604],120214:[.485,.211,.596],120215:[.472,.026,.46],120216:[.479,.034,.523],120217:[.648,.027,.393,{ic:.014}],120218:[.472,.032,.589,{ic:.014}],120219:[.546,.027,.604],120220:[.549,.032,.918],120221:[.471,.188,.459],120222:[.557,.221,.589],120223:[.471,.214,.461],120224:[.694,0,.667],120225:[.694,0,.667],120226:[.705,.011,.639],120227:[.694,0,.722],120228:[.691,0,.597],120229:[.691,0,.569],120230:[.704,.011,.667],120231:[.694,0,.708],120232:[.694,0,.278],120233:[.694,.022,.472],120234:[.694,0,.694],120235:[.694,0,.542],120236:[.694,0,.875],120237:[.694,0,.708],120238:[.715,.022,.736],120239:[.694,0,.639],120240:[.715,.125,.736],120241:[.694,0,.646],120242:[.716,.022,.556],120243:[.688,0,.681],120244:[.694,.022,.688],120245:[.694,0,.667],120246:[.694,0,.944],120247:[.694,0,.667],120248:[.694,0,.667],120249:[.694,0,.611],120250:[.46,.01,.481],120251:[.694,.011,.517],120252:[.46,.01,.444],120253:[.694,.01,.517],120254:[.461,.01,.444],120255:[.705,0,.306,{ic:.041}],120256:[.455,.206,.5],120257:[.694,0,.517],120258:[.68,0,.239],120259:[.68,.205,.267],120260:[.694,0,.489],120261:[.694,0,.239],120262:[.455,0,.794],120263:[.455,0,.517],120264:[.46,.01,.5],120265:[.455,.194,.517],120266:[.455,.194,.517],120267:[.455,0,.342],120268:[.46,.01,.383],120269:[.571,.01,.361],120270:[.444,.01,.517],120271:[.444,0,.461],120272:[.444,0,.683],120273:[.444,0,.461],120274:[.444,.204,.461],120275:[.444,0,.435],120276:[.694,0,.733],120277:[.694,0,.733],120278:[.704,.011,.703],120279:[.694,0,.794],120280:[.691,0,.642],120281:[.691,0,.611],120282:[.705,.011,.733],120283:[.694,0,.794],120284:[.694,0,.331],120285:[.694,.022,.519],120286:[.694,0,.764],120287:[.694,0,.581],120288:[.694,0,.978],120289:[.694,0,.794],120290:[.716,.022,.794],120291:[.694,0,.703],120292:[.716,.106,.794],120293:[.694,0,.703],120294:[.716,.022,.611],120295:[.688,0,.733],120296:[.694,.022,.764],120297:[.694,0,.733],120298:[.694,0,1.039],120299:[.694,0,.733],120300:[.694,0,.733],120301:[.694,0,.672],120302:[.475,.011,.525],120303:[.694,.01,.561],120304:[.475,.011,.489],120305:[.694,.011,.561],120306:[.474,.01,.511],120307:[.705,0,.336,{ic:.045}],120308:[.469,.206,.55],120309:[.694,0,.561],120310:[.695,0,.256],120311:[.695,.205,.286],120312:[.694,0,.531],120313:[.694,0,.256],120314:[.469,0,.867],120315:[.468,0,.561],120316:[.474,.011,.55],120317:[.469,.194,.561],120318:[.469,.194,.561],120319:[.469,0,.372],120320:[.474,.01,.422],120321:[.589,.01,.404],120322:[.458,.011,.561],120323:[.458,0,.5],120324:[.458,0,.744],120325:[.458,0,.5],120326:[.458,.205,.5],120327:[.458,0,.476],120328:[.694,0,.667],120329:[.694,0,.667,{ic:.029}],120330:[.705,.01,.639,{ic:.08}],120331:[.694,0,.722,{ic:.025}],120332:[.691,0,.597,{ic:.091}],120333:[.691,0,.569,{ic:.104}],120334:[.705,.011,.667,{ic:.063}],120335:[.694,0,.708,{ic:.06}],120336:[.694,0,.278,{ic:.06}],120337:[.694,.022,.472,{ic:.063}],120338:[.694,0,.694,{ic:.091}],120339:[.694,0,.542],120340:[.694,0,.875,{ic:.054}],120341:[.694,0,.708,{ic:.058}],120342:[.716,.022,.736,{ic:.027}],120343:[.694,0,.639,{ic:.051}],120344:[.716,.125,.736,{ic:.027}],120345:[.694,0,.646,{ic:.052}],120346:[.716,.022,.556,{ic:.053}],120347:[.688,0,.681,{ic:.109}],120348:[.694,.022,.688,{ic:.059}],120349:[.694,0,.667,{ic:.132}],120350:[.694,0,.944,{ic:.132}],120351:[.694,0,.667,{ic:.091}],120352:[.694,0,.667,{ic:.143}],120353:[.694,0,.611,{ic:.091}],120354:[.461,.01,.481],120355:[.694,.011,.517,{ic:.022}],120356:[.46,.011,.444,{ic:.055}],120357:[.694,.01,.517,{ic:.071}],120358:[.46,.011,.444,{ic:.028}],120359:[.705,0,.306,{ic:.188}],120360:[.455,.206,.5,{ic:.068}],120361:[.694,0,.517],120362:[.68,0,.239,{ic:.076}],120363:[.68,.204,.267,{ic:.069}],120364:[.694,0,.489,{ic:.054}],120365:[.694,0,.239,{ic:.072}],120366:[.455,0,.794],120367:[.454,0,.517],120368:[.461,.011,.5,{ic:.023}],120369:[.455,.194,.517,{ic:.021}],120370:[.455,.194,.517,{ic:.021}],120371:[.455,0,.342,{ic:.082}],120372:[.461,.011,.383,{ic:.053}],120373:[.571,.011,.361,{ic:.049}],120374:[.444,.01,.517,{ic:.02}],120375:[.444,0,.461,{ic:.079}],120376:[.444,0,.683,{ic:.079}],120377:[.444,0,.461,{ic:.076}],120378:[.444,.205,.461,{ic:.079}],120379:[.444,0,.435,{ic:.059}],120432:[.623,0,.525],120433:[.611,0,.525],120434:[.622,.011,.525],120435:[.611,0,.525],120436:[.611,0,.525],120437:[.611,0,.525],120438:[.622,.011,.525],120439:[.611,0,.525],120440:[.611,0,.525],120441:[.611,.011,.525],120442:[.611,0,.525],120443:[.611,0,.525],120444:[.611,0,.525],120445:[.611,0,.525],120446:[.621,.01,.525],120447:[.611,0,.525],120448:[.621,.138,.525],120449:[.611,.011,.525],120450:[.622,.011,.525],120451:[.611,0,.525],120452:[.611,.011,.525],120453:[.611,.007,.525],120454:[.611,.007,.525],120455:[.611,0,.525],120456:[.611,0,.525],120457:[.611,0,.525],120458:[.439,.006,.525],120459:[.611,.006,.525],120460:[.44,.006,.525],120461:[.611,.006,.525],120462:[.44,.006,.525],120463:[.617,0,.525],120464:[.442,.229,.525],120465:[.611,0,.525],120466:[.612,0,.525],120467:[.612,.228,.525],120468:[.611,0,.525],120469:[.611,0,.525],120470:[.436,0,.525,{ic:.011}],120471:[.436,0,.525],120472:[.44,.006,.525],120473:[.437,.221,.525],120474:[.437,.221,.525,{ic:.02}],120475:[.437,0,.525],120476:[.44,.006,.525],120477:[.554,.006,.525],120478:[.431,.005,.525],120479:[.431,0,.525],120480:[.431,0,.525],120481:[.431,0,.525],120482:[.431,.228,.525],120483:[.431,0,.525],120488:[.698,0,.869],120489:[.686,0,.818],120490:[.68,0,.692],120491:[.698,0,.958],120492:[.68,0,.756],120493:[.686,0,.703],120494:[.686,0,.9],120495:[.696,.01,.894],120496:[.686,0,.436],120497:[.686,0,.901],120498:[.698,0,.806],120499:[.686,0,1.092],120500:[.686,0,.9],120501:[.675,0,.767],120502:[.696,.01,.864],120503:[.68,0,.9],120504:[.686,0,.786],120506:[.686,0,.831],120507:[.675,0,.8],120508:[.697,0,.894],120509:[.686,0,.831],120510:[.686,0,.869],120511:[.686,0,.894],120512:[.696,0,.831],120513:[.686,.024,.958],120546:[.716,0,.75,{sk:.139}],120547:[.683,0,.759,{sk:.0833}],120548:[.68,0,.615,{ic:.106,sk:.0833}],120549:[.716,0,.833,{sk:.167}],120550:[.68,0,.738,{ic:.026,sk:.0833}],120551:[.683,0,.683,{ic:.04,sk:.0833}],120552:[.683,0,.831,{ic:.057,sk:.0556}],120553:[.704,.022,.763,{sk:.0833}],120554:[.683,0,.44,{ic:.064,sk:.111}],120555:[.683,0,.849,{ic:.04,sk:.0556}],120556:[.716,0,.694,{sk:.167}],120557:[.683,0,.97,{ic:.081,sk:.0833}],120558:[.683,0,.803,{ic:.085,sk:.0833}],120559:[.677,0,.742,{ic:.035,sk:.0833}],120560:[.704,.022,.763,{sk:.0833}],120561:[.68,0,.831,{ic:.056,sk:.0556}],120562:[.683,0,.642,{ic:.109,sk:.0833}],120564:[.683,0,.78,{ic:.026,sk:.0833}],120565:[.677,0,.584,{ic:.12,sk:.0833}],120566:[.705,0,.583,{ic:.117,sk:.0556}],120567:[.683,0,.667,{sk:.0833}],120568:[.683,0,.828,{ic:.024,sk:.0833}],120569:[.683,0,.612,{ic:.08,sk:.0556}],120570:[.704,0,.772,{ic:.014,sk:.0833}],120572:[.442,.011,.64,{sk:.0278}],120573:[.705,.194,.566,{sk:.0833}],120574:[.441,.216,.518,{ic:.025}],120575:[.717,.01,.444,{sk:.0556}],120576:[.452,.022,.466,{sk:.0833}],120577:[.704,.204,.438,{ic:.033,sk:.0833}],120578:[.442,.216,.497,{sk:.0556}],120579:[.705,.01,.469,{sk:.0833}],120580:[.442,.01,.354,{sk:.0556}],120581:[.442,.011,.576],120582:[.694,.012,.583],120583:[.442,.216,.603,{sk:.0278}],120584:[.442,0,.494,{ic:.036,sk:.0278}],120585:[.704,.205,.438,{sk:.111}],120586:[.441,.011,.485,{sk:.0556}],120587:[.431,.011,.57],120588:[.442,.216,.517,{sk:.0833}],120589:[.442,.107,.363,{ic:.042,sk:.0833}],120590:[.431,.011,.571],120591:[.431,.013,.437,{ic:.08,sk:.0278}],120592:[.443,.01,.54,{sk:.0278}],120593:[.442,.218,.654,{sk:.0833}],120594:[.442,.204,.626,{sk:.0556}],120595:[.694,.205,.651,{sk:.111}],120596:[.443,.011,.622],120597:[.715,.022,.531,{ic:.035,sk:.0833}],120598:[.431,.011,.406,{sk:.0556}],120599:[.705,.011,.591,{sk:.0833}],120600:[.434,.006,.667,{ic:.067}],120601:[.694,.205,.596,{sk:.0833}],120602:[.442,.194,.517,{sk:.0833}],120603:[.431,.01,.828],120604:[.711,0,.869,{sk:.16}],120605:[.686,0,.866,{sk:.0958}],120606:[.68,0,.657,{ic:.12,sk:.0958}],120607:[.711,0,.958,{sk:.192}],120608:[.68,0,.81,{ic:.015,sk:.0958}],120609:[.686,0,.773,{ic:.032,sk:.0958}],120610:[.686,0,.982,{ic:.045,sk:.0639}],120611:[.702,.017,.867,{sk:.0958}],120612:[.686,0,.511,{ic:.062,sk:.128}],120613:[.686,0,.971,{ic:.032,sk:.0639}],120614:[.711,0,.806,{sk:.192}],120615:[.686,0,1.142,{ic:.077,sk:.0958}],120616:[.686,0,.95,{ic:.077,sk:.0958}],120617:[.675,0,.841,{ic:.026,sk:.0958}],120618:[.703,.017,.837,{sk:.0958}],120619:[.68,0,.982,{ic:.044,sk:.0639}],120620:[.686,0,.723,{ic:.124,sk:.0958}],120622:[.686,0,.885,{ic:.017,sk:.0958}],120623:[.675,0,.637,{ic:.135,sk:.0958}],120624:[.703,0,.671,{ic:.131,sk:.0639}],120625:[.686,0,.767,{sk:.0958}],120626:[.686,0,.947,{sk:.0958}],120627:[.686,0,.714,{ic:.076,sk:.0639}],120628:[.703,0,.879,{sk:.0958}],120630:[.452,.008,.761,{sk:.0319}],120631:[.701,.194,.66,{sk:.0958}],120632:[.451,.211,.59,{ic:.027}],120633:[.725,.008,.522,{sk:.0639}],120634:[.461,.017,.529,{sk:.0958}],120635:[.711,.202,.508,{ic:.013,sk:.0958}],120636:[.452,.211,.6,{sk:.0639}],120637:[.702,.008,.562,{sk:.0958}],120638:[.452,.008,.412,{sk:.0639}],120639:[.452,.008,.668],120640:[.694,.013,.671],120641:[.452,.211,.708,{sk:.0319}],120642:[.452,0,.577,{ic:.031,sk:.0319}],120643:[.711,.201,.508,{sk:.128}],120644:[.452,.008,.585,{sk:.0639}],120645:[.444,.008,.682],120646:[.451,.211,.612,{sk:.0958}],120647:[.451,.105,.424,{ic:.033,sk:.0958}],120648:[.444,.008,.686],120649:[.444,.013,.521,{ic:.089,sk:.0319}],120650:[.453,.008,.631,{sk:.0319}],120651:[.452,.216,.747,{sk:.0958}],120652:[.452,.201,.718,{sk:.0639}],120653:[.694,.202,.758,{sk:.128}],120654:[.453,.008,.718],120655:[.71,.017,.628,{ic:.029,sk:.0958}],120656:[.444,.007,.483,{sk:.0639}],120657:[.701,.008,.692,{sk:.0958}],120658:[.434,.006,.667,{ic:.067}],120659:[.694,.202,.712,{sk:.0958}],120660:[.451,.194,.612,{sk:.0958}],120661:[.444,.008,.975],120662:[.694,0,.733],120663:[.694,0,.733],120664:[.691,0,.581],120665:[.694,0,.917],120666:[.691,0,.642],120667:[.694,0,.672],120668:[.694,0,.794],120669:[.716,.022,.856],120670:[.694,0,.331],120671:[.694,0,.764],120672:[.694,0,.672],120673:[.694,0,.978],120674:[.694,0,.794],120675:[.688,0,.733],120676:[.716,.022,.794],120677:[.691,0,.794],120678:[.694,0,.703],120680:[.694,0,.794],120681:[.688,0,.733],120682:[.715,0,.856],120683:[.694,0,.794],120684:[.694,0,.733],120685:[.694,0,.856],120686:[.716,0,.794],120782:[.654,.01,.575],120783:[.655,0,.575],120784:[.654,0,.575],120785:[.655,.011,.575],120786:[.656,0,.575],120787:[.655,.011,.575],120788:[.655,.011,.575],120789:[.676,.011,.575],120790:[.654,.011,.575],120791:[.654,.011,.575],120802:[.678,.022,.5],120803:[.678,0,.5],120804:[.677,0,.5],120805:[.678,.022,.5],120806:[.656,0,.5],120807:[.656,.021,.5],120808:[.677,.022,.5],120809:[.656,.011,.5],120810:[.678,.022,.5],120811:[.677,.022,.5],120812:[.715,.022,.55],120813:[.716,0,.55],120814:[.716,0,.55],120815:[.716,.022,.55],120816:[.694,0,.55],120817:[.694,.022,.55],120818:[.716,.022,.55],120819:[.695,.011,.55],120820:[.715,.022,.55],120821:[.716,.022,.55],120822:[.621,.01,.525],120823:[.622,0,.525],120824:[.622,0,.525],120825:[.622,.011,.525],120826:[.624,0,.525],120827:[.611,.01,.525],120828:[.622,.011,.525],120829:[.627,.01,.525],120830:[.621,.01,.525],120831:[.622,.011,.525]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBoldItalic=void 0;var r=Q(6),T=Q(238);e.sansSerifBoldItalic=r.AddPaths(T.sansSerifBoldItalic,{305:\"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",567:\"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBoldItalic=void 0,e.sansSerifBoldItalic={305:[.458,0,.256],567:[.458,.205,.286]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBold=void 0;var r=Q(6),T=Q(240);e.sansSerifBold=r.AddPaths(T.sansSerifBold,{33:\"111 669Q111 680 111 682T113 689T121 693T137 694H184H249Q255 686 256 681Q244 220 239 213Q236 208 229 208T183 207T137 207T127 213T118 431T111 669ZM110 71V95Q110 137 136 144Q140 146 183 146H200Q246 146 254 121Q256 115 256 73V51Q256 9 230 2Q225 0 181 0L138 1Q121 7 113 21L111 28L110 71\",34:\"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687\",35:\"61 365Q61 370 62 375T65 383T69 390T74 395T80 399T85 403T90 406L94 407H344L381 536Q418 668 426 680Q431 687 445 692Q451 694 457 694Q477 694 488 682T500 651Q500 645 466 528T431 409Q431 407 504 407H577L609 521Q651 668 656 675Q669 693 691 693Q710 693 721 680T733 651Q733 645 699 528T664 409Q664 407 743 407H823L827 405Q831 403 834 402T841 397T848 389T853 379T855 365Q855 337 823 324L731 323H639L619 253Q599 181 598 180V177H823L827 175Q831 173 834 172T841 167T848 159T853 149T855 135Q855 107 823 94L698 93H573L540 -21Q498 -168 493 -175Q480 -193 458 -193Q439 -193 428 -180T416 -151Q416 -144 450 -27T485 91Q485 93 412 93H340L307 -21Q265 -168 260 -175Q247 -193 225 -193Q206 -193 195 -180T183 -151Q183 -144 217 -27T252 91Q252 93 173 93L94 94Q61 105 61 135Q61 140 62 145T65 153T69 160T74 165T80 169T85 173T90 176L94 177H185L277 178L297 248L318 320V323H206L94 324Q61 335 61 365ZM551 320V323H479Q406 323 405 322Q404 319 385 249T365 178T438 177L510 178L530 248L551 320\",36:\"231 712L232 716Q232 719 232 722T234 729T239 736T246 743T256 748T271 750Q318 750 318 711V703Q393 692 451 656Q469 645 470 640Q470 635 461 587L453 537Q445 529 442 529Q438 529 424 540T384 565T330 585Q328 585 325 585T320 586L318 587V434Q322 433 333 429T350 424T365 418T382 409T399 397T419 380Q488 313 488 213Q488 24 334 -5L318 -8V-17Q318 -56 279 -56H272Q253 -56 243 -46T232 -30T231 -18V-8H224Q170 2 127 20T68 50T49 67Q49 71 58 122T68 176Q71 182 79 182Q83 182 98 169T145 138T216 110Q228 108 229 108H231V288Q167 299 114 356T61 496Q61 537 70 570T94 624T126 661T162 684T195 696T219 701L228 702H231V712ZM231 521Q231 583 230 583Q226 582 220 579T204 561T193 521Q193 491 212 472Q226 458 230 458Q231 458 231 521ZM318 112Q356 131 356 187Q356 237 318 263V112\",37:\"61 549Q61 733 218 749Q220 749 228 749T241 750Q286 750 321 735T369 708T389 683Q422 634 422 548V538Q422 519 420 501T408 453T381 401T328 364T243 347Q61 347 61 549ZM292 549Q292 663 242 663Q221 663 211 648T198 615T196 566V548Q196 471 206 454Q218 434 242 434Q292 434 292 549ZM243 -55Q223 -55 212 -42T201 -13Q201 -2 207 7Q209 11 480 371T758 738Q770 750 788 750Q805 750 817 738T830 709Q830 694 820 681L544 315Q273 -43 269 -47Q258 -55 243 -55ZM606 146Q606 330 763 346Q764 346 773 346T786 347Q831 347 866 332T914 305T934 280Q966 233 966 146V135Q966 115 964 97T952 49T925 -2T872 -40T788 -56Q606 -56 606 146ZM742 146V132Q742 107 743 93T748 62T762 39T787 31Q819 31 832 79Q837 97 837 146Q837 260 787 260Q767 260 757 246T744 214T742 169V146\",38:\"757 117Q762 117 769 110V3Q759 -7 718 -14T641 -22T571 -15T518 1T477 19T453 31L437 23Q350 -19 257 -22Q158 -22 103 30T47 155Q47 188 57 216T87 263T119 292T151 313L182 333L187 336L181 349Q150 431 150 506Q150 605 211 660T347 716Q417 716 471 668T526 543Q526 517 518 495T471 432T360 343L342 330Q342 327 358 306T402 250T458 189L467 181Q518 225 556 289T607 395L620 437Q622 443 630 443Q631 443 679 430Q718 420 725 418T733 409Q733 402 722 365T670 255T573 123Q562 111 563 111Q589 94 644 94Q678 94 703 100T740 111T757 117ZM397 544Q397 573 384 601T346 629Q320 629 299 607T277 538Q277 484 295 429Q301 413 301 412Q302 409 309 415Q397 476 397 544ZM227 258Q197 228 197 177Q197 150 207 126T234 95Q242 93 251 93Q288 93 337 107L349 110L328 131Q266 196 234 248L227 258\",39:\"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687\",40:\"79 250Q79 352 100 441T152 585T213 678T266 733L287 749Q288 750 324 750H359Q366 741 366 738Q366 734 356 721T329 682T296 623T262 531T238 407Q230 346 230 250Q230 142 244 55T278 -82T318 -165T352 -215T366 -238Q366 -242 359 -249H286L277 -242Q79 -74 79 250\",41:\"61 737Q61 750 85 750H106H141L150 742Q348 574 348 250T150 -242L141 -249L106 -250H87Q61 -250 61 -238Q61 -233 74 -216Q157 -113 183 51Q197 130 197 250T183 449Q174 505 158 554T126 634T95 687T71 722T61 737\",42:\"241 579Q241 582 228 639T215 702Q215 722 233 736T271 750Q296 750 315 736T334 702V697Q334 693 328 664T314 607L308 579L352 620Q389 654 397 660T417 668Q447 668 464 647T482 602Q482 591 479 583T472 569T459 559T443 552T421 546T397 538L342 521L397 504Q405 501 420 497T442 490T458 483T472 473T479 460T482 440Q482 416 465 395T417 374Q406 375 398 381T352 422L308 463L314 435Q321 407 327 378T334 345Q336 333 327 319T296 295Q288 293 275 293Q241 293 227 311T215 345Q215 349 221 378T234 435L241 463L197 422Q160 388 152 382T132 374Q102 374 85 395T67 440Q67 451 70 459T77 473T90 483T106 490T128 496T152 504L207 521L152 538Q144 541 129 545T107 552T91 559T77 569T70 582T67 602Q67 626 84 647T132 668Q143 667 151 661T197 620L241 579\",43:\"61 250Q61 276 94 292H386V436V535Q386 577 388 589T401 607Q411 617 427 617Q458 617 468 587Q470 581 470 436V292H762L766 290Q770 288 773 287T780 282T787 274T792 264T794 250Q794 222 762 209L616 208H470V64Q470 -81 468 -87Q458 -116 428 -116T388 -87Q386 -81 386 64V208H240L94 209Q61 220 61 250\",44:\"81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139\",45:\"12 230Q12 257 26 265T80 274Q88 274 114 274T158 273T201 273T235 274Q276 274 290 266T305 230T291 194T235 185Q226 185 201 185T159 186Q143 186 119 186T85 185Q43 185 28 193T12 230\",46:\"219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219\",47:\"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249\",58:\"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219\",59:\"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139\",61:\"94 324Q61 335 61 366Q61 396 91 405Q96 407 429 407H762Q763 406 767 404T774 400T781 395T787 387T792 378T794 365Q794 338 762 324H94ZM94 94Q61 105 61 135Q61 149 69 160T92 175Q97 177 430 177H762L766 175Q770 173 773 172T780 167T787 159T792 149T794 135Q794 107 762 94H94\",63:\"61 644Q61 652 87 666T157 693T244 705Q344 705 400 671T457 551Q457 516 446 490T422 451T387 421T356 391Q330 361 318 332T305 292T303 252Q303 218 300 213T290 208T244 207H220Q194 207 188 213Q187 214 186 215V255Q187 282 188 296T198 345T229 417T288 496Q306 515 306 559Q306 596 296 607T253 618Q214 618 185 607T143 583T120 558T103 547Q99 547 95 551Q93 553 77 597T61 644ZM171 71V95Q171 137 197 144Q201 146 244 146H261Q307 146 315 121Q317 115 317 73V51Q317 9 291 2Q286 0 242 0L199 1Q182 7 174 21L172 28L171 71\",64:\"61 264T61 347T82 494T136 596T217 660T311 694T410 704Q460 704 471 703Q534 694 577 666Q633 623 651 552T670 370V342Q670 249 633 195Q583 116 454 116Q238 116 238 347Q238 443 276 499Q328 578 456 578Q488 578 494 577L504 575Q475 617 430 617H421Q196 617 196 347Q196 215 253 143Q310 76 427 76Q499 76 561 102L575 107H664Q671 97 671 94V89L663 81Q566 -11 422 -11Q365 -11 316 -2T219 33T137 97T82 200ZM469 490Q459 492 453 492Q429 492 405 472Q374 439 374 347Q374 233 423 210Q436 202 454 202L486 210Q536 228 536 347Q536 461 486 484Q476 490 469 490\",91:\"318 -206Q318 -235 305 -243T255 -251Q248 -251 229 -251T198 -250H143Q112 -250 99 -246T81 -225Q79 -219 79 250T81 725Q85 741 98 745T143 750H198Q210 750 229 750T255 751Q291 751 304 743T318 707Q318 680 301 668Q293 663 255 663H224V-163H255Q293 -163 301 -168Q318 -180 318 -206\",93:\"24 706Q24 734 39 742T90 751Q97 751 114 751T143 750H198Q230 750 243 746T261 725Q263 719 263 250T261 -225Q257 -241 244 -245T198 -250H143Q131 -250 112 -250T86 -251Q50 -251 37 -243T24 -207Q24 -180 41 -168Q49 -163 87 -163H118V663H87H71Q24 663 24 706\",94:\"108 550Q108 554 135 589T190 658T219 692Q221 694 275 694Q328 694 330 693Q331 692 381 629T438 557Q441 553 441 549T434 538L399 537Q363 537 362 538Q361 538 318 575L275 611Q274 611 231 575Q188 538 187 538Q186 537 150 537L115 538Q108 545 108 550\",95:\"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66\",126:\"92 215Q92 259 122 301T204 344Q238 344 264 329T310 300T343 285Q356 285 361 295T369 322T377 344H450Q457 334 457 330Q457 281 427 240T344 198Q312 198 285 213T239 242T206 257Q188 257 182 230T172 199L137 198H120Q102 198 97 200T92 215\",305:\"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431\",567:\"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84\",768:\"-458 682Q-458 690 -452 692T-426 694H-381H-314L-312 691Q-311 691 -305 682T-287 655T-263 622L-218 555V549Q-218 544 -224 538L-259 537Q-295 537 -296 538Q-298 539 -376 606T-456 676Q-458 680 -458 682\",769:\"-290 537H-310Q-334 537 -334 549Q-334 553 -311 588T-264 656L-241 690Q-240 690 -239 691T-236 693Q-235 694 -167 694H-100Q-93 684 -93 681T-94 677Q-95 675 -173 607T-255 538Q-256 537 -290 537\",770:\"-442 550Q-442 554 -415 589T-360 658T-331 692Q-329 694 -275 694Q-222 694 -220 693Q-219 692 -169 629T-112 557Q-109 552 -109 549Q-109 545 -116 538L-151 537Q-187 537 -188 538Q-189 538 -232 575L-275 611Q-276 611 -319 575Q-362 538 -363 538Q-364 537 -400 537L-435 538Q-442 545 -442 550\",771:\"-458 565Q-458 609 -428 651T-346 694Q-312 694 -286 679T-240 650T-207 635Q-194 635 -189 645T-181 672T-173 694H-100Q-93 684 -93 680Q-93 631 -123 590T-206 548Q-238 548 -265 563T-311 592T-344 607Q-362 607 -368 580T-378 549L-413 548H-430Q-448 548 -453 550T-458 565\",772:\"-84 660Q-81 656 -77 653V567L-81 564L-84 561L-274 560H-383Q-469 560 -471 565L-472 566Q-474 569 -474 611L-473 653Q-469 659 -466 659Q-465 660 -274 660H-84\",774:\"-123 694Q-80 694 -80 657Q-80 626 -99 601T-161 563Q-199 552 -275 552Q-352 552 -389 563Q-470 586 -470 655Q-470 667 -468 673Q-457 694 -435 694H-431Q-408 694 -396 685Q-387 676 -387 671Q-384 661 -275 661Q-167 661 -164 671Q-164 674 -163 677T-151 687T-123 694\",775:\"-329 596Q-346 602 -351 611T-356 638V646Q-356 653 -356 654T-356 661T-355 668T-353 673T-351 679T-347 684T-341 689T-332 693T-274 695H-221Q-202 683 -198 676T-194 645Q-194 632 -195 625T-202 610T-221 596H-329\",776:\"-331 695Q-312 683 -308 676T-304 645Q-304 632 -304 626T-311 610T-331 596L-380 595H-408Q-448 595 -457 617Q-459 621 -459 645T-457 673Q-448 696 -409 696Q-405 696 -396 696T-380 695H-331ZM-247 644Q-247 658 -246 665T-239 680T-221 694Q-217 695 -169 695H-143Q-102 695 -93 672Q-91 664 -91 645V635Q-91 613 -106 602Q-113 597 -121 596T-171 595L-219 596Q-232 600 -238 608T-246 622T-247 644\",778:\"-365 616Q-365 658 -331 676T-256 694Q-253 694 -247 694T-236 693Q-166 693 -139 666Q-119 644 -119 616T-139 565Q-166 538 -237 538H-242Q-365 538 -365 616ZM-181 616Q-181 641 -195 647T-242 654Q-258 654 -266 654T-284 650T-298 638T-303 616Q-303 592 -289 585T-242 577Q-209 577 -195 584T-181 616\",779:\"-426 686Q-424 694 -394 694H-350H-283Q-277 686 -277 682Q-277 673 -317 608T-361 538L-396 537H-420Q-432 537 -436 539T-440 548Q-440 560 -434 616Q-432 633 -430 650T-427 677L-426 686ZM-243 686Q-241 694 -211 694H-167H-100Q-94 686 -94 682Q-94 673 -134 608T-178 538L-213 537H-237Q-249 537 -253 539T-257 548Q-257 560 -251 616Q-249 633 -247 650T-244 677L-243 686\",780:\"-442 645Q-442 657 -418 657H-398Q-393 657 -388 657T-379 657T-371 656T-365 656H-363L-319 620L-276 583Q-275 583 -232 619Q-189 656 -188 656Q-187 657 -151 657H-116Q-109 649 -109 645Q-109 642 -112 637Q-118 629 -168 566T-220 501Q-222 500 -275 500Q-329 500 -331 501Q-442 634 -442 645\",8211:\"0 284Q0 318 26 325Q30 327 274 327Q469 327 497 327T532 322Q549 310 549 283Q549 257 532 245Q525 241 498 241T275 240Q31 240 26 242Q0 249 0 284\",8212:\"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284\",8213:\"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284\",8215:\"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66\",8216:\"87 443L81 449V581L119 636Q125 644 131 653T141 667T148 677T154 685T158 689T163 692T167 693T173 694H190H201Q226 694 226 683Q226 678 208 635T189 590Q189 588 204 588H219Q222 584 226 581V449L219 443H87\",8217:\"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687\",8220:\"144 443L138 449V581L176 636Q182 644 188 653T198 667T205 677T211 685T215 689T220 692T224 693T230 694H247H258Q283 694 283 683Q283 678 265 635T246 590Q246 588 261 588H276Q279 584 283 581V449L276 443H144ZM381 443L375 449V581L413 636Q419 644 425 653T435 667T442 677T448 685T452 689T457 692T461 693T467 694H484H495Q520 694 520 683Q520 678 502 635T483 590Q483 588 498 588H513Q516 584 520 581V449L513 443H381\",8221:\"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687\",8260:\"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249\",8710:\"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifBold=void 0,e.sansSerifBold={33:[.694,0,.367],34:[.694,-.442,.558],35:[.694,.193,.917],36:[.75,.056,.55],37:[.75,.056,1.029],38:[.716,.022,.831],39:[.694,-.442,.306],40:[.75,.249,.428],41:[.75,.25,.428],42:[.75,-.293,.55],43:[.617,.116,.856],44:[.146,.106,.306],45:[.273,-.186,.367],46:[.146,0,.306],47:[.75,.249,.55],58:[.458,0,.306],59:[.458,.106,.306],61:[.407,-.094,.856],63:[.705,0,.519],64:[.704,.011,.733],91:[.75,.25,.343],93:[.75,.25,.343],94:[.694,-.537,.55],95:[-.023,.11,.55],126:[.344,-.198,.55],305:[.458,0,.256],567:[.458,.205,.286],768:[.694,-.537,0],769:[.694,-.537,0],770:[.694,-.537,0],771:[.694,-.548,0],772:[.66,-.56,0],774:[.694,-.552,0],775:[.695,-.596,0],776:[.695,-.595,0],778:[.694,-.538,0],779:[.694,-.537,0],780:[.657,-.5,0],8211:[.327,-.24,.55],8212:[.327,-.24,1.1],8213:[.327,-.24,1.1],8215:[-.023,.11,.55],8216:[.694,-.443,.306],8217:[.694,-.442,.306],8220:[.694,-.443,.558],8221:[.694,-.442,.558],8260:[.75,.249,.55],8710:[.694,0,.917]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifItalic=void 0;var r=Q(6),T=Q(242);e.sansSerifItalic=r.AddPaths(T.sansSerifItalic,{33:\"160 187L257 694H306Q355 694 355 693L238 186H199Q160 186 160 187ZM110 2Q111 3 120 49T131 96Q131 98 180 98T229 96L219 50Q209 3 208 2V0H110V2\",34:\"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647\",35:\"793 170Q809 162 809 149Q809 145 807 141T802 135T796 132L793 130H547L472 -27Q397 -184 394 -187Q389 -194 379 -194Q367 -194 362 -183Q359 -179 359 -173Q360 -168 431 -20L503 129Q503 130 410 130H317L242 -27Q167 -184 164 -187Q159 -194 149 -194Q137 -194 132 -183Q129 -179 129 -173Q130 -168 201 -19L273 130H187L100 131Q87 141 87 150Q87 162 102 170H294L331 248Q339 265 349 286T365 318L370 328Q370 330 258 330Q145 330 142 332Q129 338 129 351Q129 362 140 368Q146 370 267 370L391 371L467 527Q542 684 544 686Q544 688 549 691T560 694H562Q565 693 567 692T571 690T575 686T578 681T579 672Q577 665 507 520T436 373L435 370H528L621 371L692 518Q767 675 769 677Q775 694 789 694Q798 694 804 688T809 672Q806 664 737 519L665 371L751 370Q835 370 841 368Q851 362 851 350Q851 337 841 334T799 330H765H741H645L606 250L568 170H793ZM600 328Q600 330 508 330H415Q412 326 338 171Q338 170 431 170H524L561 248Q569 265 579 286T595 318L600 328\",36:\"228 70Q233 92 246 155T270 266T280 316Q271 318 265 320T237 333T200 360T172 403T159 468Q159 537 205 600T325 691Q352 701 360 701Q361 701 361 701T362 703T364 711T368 727L372 750H409Q445 750 445 749L436 705Q436 703 450 702T494 691T554 657L565 649Q562 642 548 604L534 568Q511 591 484 605T440 621L424 623L419 624L372 405Q399 400 424 384Q490 338 490 247V240Q490 156 430 85Q374 13 294 -5L284 -7L280 -30Q279 -35 278 -41T275 -52L274 -55Q274 -56 237 -56Q201 -56 201 -54Q202 -53 205 -34T211 -11Q211 -9 206 -9Q154 -2 115 19Q80 35 56 59L88 141L99 131Q109 121 119 113T141 99T160 89T180 82T197 77T214 73T228 70ZM303 426Q304 427 313 471T332 564T345 620L335 616Q287 596 263 549Q252 525 252 499Q252 470 267 451T298 426Q303 424 303 426ZM302 75Q305 75 315 80T340 98T367 125T390 164T399 214Q399 247 384 268T349 297Q338 247 326 186L302 75\",37:\"268 347Q224 347 195 386T165 488Q165 517 173 552Q191 637 246 693T349 749Q389 749 414 725T448 673T456 614Q456 506 396 427T268 347ZM372 604Q372 674 339 674Q311 674 290 633T261 549T253 482V474Q253 438 272 426Q277 424 286 424Q319 424 345 485T372 604ZM189 -56Q179 -56 173 -49T167 -37Q167 -30 347 198Q425 296 475 360Q780 745 785 747Q790 750 796 750Q814 748 814 730Q814 725 811 719L204 -49Q198 -56 189 -56ZM523 87Q523 184 583 265T713 347Q758 347 786 308T815 207Q815 110 757 28T629 -55Q576 -55 550 -12T523 87ZM729 200Q729 271 696 271Q675 271 658 247T631 189T616 125T611 76Q611 21 644 21H647Q672 21 700 77T729 200\",38:\"219 -22Q158 -22 117 13T71 111Q71 131 74 150T84 185T98 215T118 241T137 262T159 281T179 295T199 308L214 318L258 348L256 362Q254 373 254 413V435Q254 483 271 537T325 641T411 708Q427 715 441 715Q446 716 455 716Q504 716 534 681T565 590Q565 522 519 468T377 347L358 334Q359 333 363 320T374 290T387 262Q404 227 428 187T460 139Q521 183 574 251T651 362T674 409L710 398Q746 388 747 388Q747 381 720 333T635 213T517 94L510 87Q542 57 598 57Q649 57 708 72Q716 75 718 75L709 34L701 -7Q636 -22 578 -22Q531 -22 498 -8T428 34L408 25Q314 -22 219 -22ZM480 579Q480 640 436 640Q410 640 385 615T351 554Q340 513 340 457Q340 413 343 410Q343 406 360 419Q431 471 455 505T480 579ZM245 57Q279 59 311 67T359 81T375 89T358 113T318 178T281 260L274 277L245 257Q167 205 167 135Q167 110 174 93T194 69T217 60T237 57H245\",39:\"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647\",40:\"195 37Q195 -7 200 -47T213 -113T231 -166T250 -204T268 -232T280 -250H204L194 -238Q104 -124 104 55Q104 238 181 432T405 740L417 750H454Q491 750 491 749L468 729Q446 709 411 667T337 565T262 405T208 188Q195 110 195 37\",41:\"300 463Q300 634 222 740L214 750H290L299 740Q300 738 309 726T323 707T337 682T353 651T367 613T379 566T387 510T390 444Q390 314 344 156T203 -125Q179 -155 145 -191Q111 -224 89 -241L78 -250H2Q4 -248 27 -227T65 -189T107 -140T155 -71T200 16T244 129T278 266Q300 372 300 463\",42:\"193 608Q193 628 210 644T246 660Q250 660 252 660T257 658T264 654T272 648T284 638T302 623Q340 590 340 593Q341 594 345 623T354 682T360 715Q365 729 378 739T407 750Q424 750 433 740T443 720Q443 712 427 652L410 591L462 623Q505 650 514 655T534 660Q549 660 558 650T568 625Q568 617 567 611T560 599T551 590T536 580T519 571T496 561T470 548L429 528L474 500Q482 495 492 489T506 481T516 475T523 469T527 464T529 458T530 450Q530 430 514 414T479 397H475Q468 397 460 402T423 433Q414 440 404 448T388 461L383 465L365 344Q348 306 314 306Q302 306 292 313T281 338Q281 347 297 404L313 464L260 433Q201 397 195 397H189Q173 397 165 407T156 432Q156 438 157 443T161 452T166 460T175 468T185 475T198 482T212 489T230 497T250 506L295 528L250 556Q203 582 202 585Q193 591 193 608\",43:\"108 244T108 250T112 261T119 268T124 270H426V272Q428 274 457 419Q489 565 492 573Q497 583 508 583Q516 583 522 577T528 565Q528 553 498 417Q491 384 483 346T471 288L467 270H760Q775 262 775 250T760 230H458Q456 221 426 77T394 -71Q389 -83 375 -83Q367 -83 362 -78T356 -64Q356 -58 387 84Q394 118 401 155T413 210L417 229Q417 230 271 230H124Q123 230 120 232T112 239\",44:\"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2\",45:\"66 257V259H332V257L324 220L317 186H184Q51 186 51 187T58 220T66 257\",46:\"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2\",47:\"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744\",48:\"245 -22Q209 -22 181 -11T135 20T107 65T92 116T88 171Q88 235 114 354T194 557Q226 606 269 635T340 671T392 678H395Q422 678 446 670T495 643T534 582T549 481Q549 430 534 350T499 213Q459 89 379 25Q315 -22 247 -22H245ZM430 582Q408 601 378 601Q313 601 269 534Q234 475 205 341Q181 232 181 174Q181 104 209 76Q231 54 260 54T318 73T368 125Q410 194 447 375Q460 445 460 487Q460 555 430 582\",49:\"234 613Q277 613 331 628T428 678H439Q451 678 451 676Q450 671 387 373T323 74T384 73H445L430 0H259L88 1L104 73H229L332 560Q278 541 198 539Q198 540 198 541T199 546T200 554T202 564T205 576L213 612H219Q221 612 226 612T234 613\",50:\"190 460Q189 460 181 475T164 507T155 527Q155 535 182 571Q259 678 380 678Q462 678 506 630T551 513V507Q551 418 487 349Q469 329 441 305T391 265T344 232T316 212Q158 87 158 86T188 85Q194 85 234 85T311 86Q467 86 467 85Q451 9 449 2V0H50Q54 18 58 40L67 79L133 133Q246 226 269 243Q369 318 410 373T452 492Q452 535 433 560T393 592T350 599Q311 599 279 578T231 532T203 484T190 460\",51:\"446 542Q446 576 424 590T372 605Q330 605 288 583T216 524Q209 515 208 516Q207 517 192 549L178 580L187 589Q224 627 276 652T386 678Q456 678 500 642T544 550Q544 515 530 482T495 427T453 387T418 362L403 353L413 348Q440 335 462 313Q500 271 500 217Q500 135 423 57T236 -22T63 59L56 68L85 141Q106 112 125 98Q177 54 254 54Q315 54 355 105T396 218Q396 242 393 254Q380 301 335 313Q327 315 280 316Q233 316 233 318L249 392Q298 392 322 399Q373 408 409 453T446 542\",52:\"78 235L411 656H465Q519 656 519 655T475 447T430 237V235H521V233L505 160Q505 159 459 159H414L380 0H286L320 159H62L63 164Q64 169 66 179T70 198L78 235ZM342 235L421 607Q420 607 419 604Q409 535 197 267Q173 236 173 235H342\",53:\"330 350Q263 350 214 272H133V275Q134 276 174 467L214 655Q214 656 385 656H555V653Q555 652 554 647T550 631T546 613L539 577H284L265 486Q261 464 256 441T248 406L246 395L250 398Q255 401 264 406T286 415T315 423T350 427Q412 427 455 381T498 256Q498 150 415 64T222 -22Q186 -22 155 -12T105 12T74 41T55 65T50 77L51 79Q61 89 78 112L104 145L107 138Q110 130 114 123T125 106T142 88T165 72T196 60T236 55Q282 55 316 79T366 140T389 208T396 267Q396 310 378 330T337 350H330\",54:\"437 605Q397 605 361 585T301 536T261 477T236 426T228 401L236 408Q244 414 260 424T296 445T345 462T402 469H404Q422 469 434 467T465 446T498 394Q515 351 515 307Q515 254 497 193T439 85Q352 -22 246 -22Q220 -22 196 -14T148 15T109 78T94 179Q94 272 123 373Q163 505 257 591T450 678Q474 678 498 674T535 664T548 656L540 621L532 586L520 590Q509 594 485 599T437 605ZM339 392Q281 392 233 334T185 163V158Q185 87 230 61Q244 54 262 54Q325 54 371 122Q395 158 407 217T419 298Q419 337 401 364T339 392\",55:\"173 614L181 656H389Q596 656 596 655L595 650Q594 645 592 635T588 616L580 578L554 551Q313 307 245 4L242 -11H192Q143 -11 143 -10Q144 0 148 17T169 89T212 198T285 327T393 470Q423 504 472 550Q479 555 485 561T496 571L329 570Q163 570 163 571L164 577Q166 583 168 593T173 614\",56:\"159 470Q159 547 229 612T394 678Q467 678 510 636T554 533Q554 512 549 493T535 458T515 429T492 405T467 386T443 372T423 362T409 356L404 354Q404 353 405 353Q411 353 432 341T476 295T500 218Q500 134 424 56T246 -22Q175 -22 126 22T77 143Q77 204 110 251T188 327L202 334Q216 340 229 346T243 353T235 358T214 372T189 393T168 426T159 470ZM467 527Q467 605 375 605Q317 605 281 566T244 472Q244 429 271 411T334 392Q392 392 429 430T467 527ZM405 228Q405 262 384 289T315 316Q257 316 216 266T174 144Q174 95 199 75T262 54Q329 54 367 109T405 228\",57:\"220 594Q303 677 389 677Q545 677 545 479Q545 413 526 327Q493 175 398 77T202 -22Q124 -22 77 25L130 91L137 83Q169 54 218 54Q255 54 290 76T347 129Q364 151 380 182T403 232T411 256Q410 255 390 241T353 217T303 197T236 187Q195 187 173 209Q155 226 140 263T124 352Q124 392 135 435Q154 527 220 594ZM455 497Q455 605 383 605Q340 605 305 577T246 492Q220 411 220 360Q220 278 279 264Q280 264 287 264T299 263Q347 263 387 302Q455 375 455 497\",58:\"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2\",59:\"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2\",61:\"142 368Q145 370 463 370Q780 370 784 368Q796 364 796 350T784 332Q780 330 463 330Q145 330 142 332Q129 338 129 351Q129 362 142 368ZM88 137T88 150T102 170H738Q739 170 742 168T750 161T754 150T750 139T743 132T738 130H102Q88 137 88 150\",63:\"194 652Q194 654 218 666T284 691T362 704Q444 704 490 678T536 583Q536 541 516 500T459 433Q415 400 387 371T343 313T321 266T307 216L301 186H262Q223 186 223 187Q224 199 228 218T250 288T294 377Q317 413 344 440T391 481T414 499Q442 527 442 574Q442 584 441 590T433 607T409 623T362 629Q335 629 310 624T267 610T235 595T214 582T205 576L200 614Q194 651 194 652ZM173 2Q174 3 183 49T194 96Q194 98 243 98T292 96L282 50Q272 3 271 2V0H173V2\",64:\"120 267Q120 377 179 478T336 642T538 705Q610 705 658 662T707 513Q707 425 681 331Q658 241 590 179T447 117Q386 117 343 163T300 288Q300 397 374 486T544 576Q575 576 608 562Q590 628 517 628Q406 628 309 522T212 278Q212 179 267 122T404 65T550 91H631Q513 -10 390 -10Q265 -10 193 70T120 267ZM600 397Q600 441 581 471T530 501Q476 501 433 436T390 298Q390 254 409 224T462 193Q512 193 556 257T600 397\",91:\"148 252L253 750H339Q425 750 425 749L424 744Q423 739 421 729T417 711L409 675L367 674H325L235 252Q145 -167 145 -172Q145 -174 187 -174H229V-176Q213 -240 213 -250H127Q41 -250 41 -248Q41 -245 148 252\",93:\"353 749Q353 746 303 512T200 27T141 -250H-31Q-31 -240 -15 -176V-174H70L250 674H208L165 675L181 750H267Q353 750 353 749\",94:\"190 527L360 694H434L484 611Q533 528 533 527H457L390 632L385 639L266 527H190\",95:\"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75\",126:\"330 327Q356 326 388 298T446 269Q470 269 484 327H522Q560 327 560 325L557 316Q554 306 549 292T535 263T512 232T480 208Q453 193 429 193T370 222T315 251Q285 251 275 193H199V197Q214 257 251 292T330 327\",305:\"168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224\",567:\"-54 -96L-48 -104Q-41 -111 -27 -118T7 -126Q60 -126 82 -87Q85 -81 140 181L196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204Q-13 -204 -41 -196T-83 -180T-96 -170Q-55 -96 -54 -96\",768:\"-262 681L-270 694H-177L-132 612Q-89 530 -87 528Q-87 527 -125 527H-163L-208 598Q-254 670 -262 681\",769:\"-96 625L-29 694H63Q42 673 -31 605L-114 527H-190L-176 541Q-160 559 -96 625\",770:\"-310 527L-140 694H-66L-16 611Q33 528 33 527H-43L-110 632L-115 639L-234 527H-310\",771:\"-170 677Q-144 676 -112 648T-54 619Q-30 619 -16 677H22Q60 677 60 675L57 666Q54 656 49 642T35 613T12 582T-20 558Q-47 543 -71 543T-130 572T-185 601Q-215 601 -225 543H-301V547Q-286 607 -249 642T-170 677\",772:\"-314 553L-297 631H-116Q64 631 64 630Q60 612 56 591L47 553L-133 552Q-314 552 -314 553\",774:\"-142 508Q-205 508 -244 548T-284 652Q-284 666 -281 683L-280 694H-204Q-205 689 -205 677Q-205 650 -196 631T-173 604T-147 593T-125 590Q-85 590 -50 618T-5 686L-2 694H73V690Q53 610 -10 559T-142 508\",775:\"-180 578Q-179 579 -170 627T-158 678V680H-54V678Q-56 675 -65 627T-76 578V576H-180V578\",776:\"-273 584Q-272 585 -262 632L-252 678V680H-154V678L-164 632Q-174 585 -175 584Q-175 582 -224 582T-273 584ZM-78 586Q-78 587 -69 632T-58 678V680H40L39 677Q39 676 38 670T34 651T29 628L19 583L-30 582H-79L-78 586\",778:\"-227 597Q-227 639 -186 666T-102 693H-97Q-29 693 -8 649Q-2 637 -2 623Q-2 582 -43 555T-132 527Q-171 527 -199 546T-227 597ZM-59 619Q-59 635 -68 643T-104 652Q-142 652 -156 636T-171 602Q-171 569 -123 569Q-119 569 -111 570T-99 571Q-59 582 -59 619\",779:\"-236 619L-195 694H-149Q-103 694 -103 693L-211 527H-287L-282 536Q-281 539 -236 619ZM-70 619L-29 694H17Q63 694 63 693L-45 527H-121L-116 536Q-115 539 -70 619\",780:\"-283 654H-207L-140 549L-135 542L-16 654H60L-109 487H-147L-184 488L-234 570Q-283 653 -283 654\",913:\"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492\",914:\"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322\",915:\"87 2Q88 4 160 346T234 689Q234 691 440 691T646 689Q643 686 629 611H475L321 612Q193 4 191 2V0H87V2\",916:\"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576\",917:\"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2\",918:\"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54\",919:\"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2\",920:\"119 260Q119 348 157 433T254 579T387 677T533 715Q701 715 772 574Q804 511 804 431Q804 315 744 209T586 41T384 -22Q262 -22 191 59T119 260ZM706 426Q706 524 655 582T525 640Q454 640 395 600T293 502Q256 447 237 383T218 266Q218 168 269 112T401 55Q518 55 612 166T706 426ZM283 349L293 397H473Q652 397 652 396Q647 374 642 347L632 299H452Q273 299 273 300Q278 322 283 349\",921:\"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348\",922:\"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223\",923:\"28 0L401 694H504V690Q505 686 543 345T582 1Q582 0 528 0H473V3Q472 6 460 113T435 359T422 558Q422 593 424 603L425 610L424 608Q414 572 343 431Q287 316 143 49L117 1L73 0H28\",924:\"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691\",925:\"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609\",926:\"193 687Q193 688 479 688H765V686Q764 685 755 642L747 600H461L175 601Q175 602 184 645L193 687ZM196 400Q196 401 418 401T640 400L622 315Q622 314 400 314T178 315L196 400ZM42 2Q43 3 51 44T60 87H64Q68 87 75 87T93 87T119 87T151 88T190 88T237 88T291 88T352 88H643Q638 66 634 44T627 13T624 2V0H42V2\",927:\"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58\",928:\"86 2Q88 4 160 346T233 689Q233 691 501 691Q768 691 768 689Q766 688 694 346T621 2V0H517V2Q518 3 582 304T646 609L648 615H321L190 0H86V2\",929:\"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513\",931:\"194 655L202 694H508Q813 694 813 693Q809 675 805 653L797 614H559L321 615Q327 606 405 478L485 347Q449 311 348 203T247 86Q247 84 294 84Q303 84 359 84T465 85H684Q684 84 675 42L666 0H360L55 1L195 154Q346 319 347 320L359 333L273 473Q187 614 186 614L187 620Q188 625 190 635T194 655\",932:\"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165\",933:\"357 637Q320 637 297 612T266 555H173Q178 576 188 598Q214 651 265 683T373 716Q497 716 497 542V509L504 526Q579 715 711 715Q773 715 808 677T843 589Q843 576 840 555H747L748 557Q748 559 748 563T749 574V580Q749 604 731 622Q715 638 693 638Q591 638 543 465Q531 425 506 309T462 98T441 2V0H337V2Q425 401 436 486Q438 504 438 526Q438 637 364 637H357\",934:\"124 308Q124 399 208 481T433 587Q437 587 437 589Q438 590 449 643L459 694H508Q557 694 557 693Q557 691 546 641T535 587Q543 587 562 583T614 565T674 531T722 472T743 387Q743 288 656 209T449 110L433 106Q411 3 410 2Q410 0 361 0H312L313 3Q313 5 324 56L335 107H331L321 108Q311 110 297 114T266 124T228 141T190 168Q124 225 124 308ZM227 315Q227 282 239 257T270 218T306 197T338 186L350 184H351L386 346Q420 507 420 509H419Q411 509 393 505T342 485T284 444Q227 387 227 315ZM642 381Q642 413 629 437T599 475T563 496T533 507T519 510Q518 510 484 348T450 184Q544 201 593 258T642 381\",935:\"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14\",936:\"325 556Q325 524 310 447T294 330Q294 289 304 260Q314 234 333 216T364 192T380 187L488 694H585V691Q584 689 531 438L478 188H479Q485 188 503 195T555 231T613 305Q637 352 654 435Q662 470 669 496T681 538T690 562T698 578T704 587Q719 609 733 615T772 621H802H854V619L838 546Q838 545 832 545Q775 539 749 418Q716 274 638 196Q616 173 590 156T543 131T503 117T473 110T460 106Q460 105 450 54T438 2V0H340V2Q341 3 351 54T362 106Q363 107 358 108T344 111T322 117T295 128T267 145T239 171T216 207T200 256T194 319Q194 356 203 408T213 483Q213 517 203 530T182 544T171 546Q184 609 187 619V621H239Q286 621 294 620T309 612Q325 596 325 556\",937:\"148 407Q148 475 182 534T269 633T386 694T511 716Q622 716 695 658T769 507Q769 461 747 409T699 321T628 225T562 136Q533 90 533 86Q542 85 557 85Q564 85 583 85T614 86Q695 86 695 85Q679 9 677 2V0H425Q426 3 433 30T447 72T480 131T549 241L554 248Q558 254 563 261T576 281T592 306T609 335T625 366T640 400T653 434T661 466T664 498Q664 562 618 601T497 640Q416 640 351 596T262 482Q250 441 250 392T276 237T302 70V56Q302 28 296 2V0H44V2L62 85Q62 86 143 86L225 85V88Q224 89 224 89T224 91T224 95T223 101T222 110T220 123T216 140T209 163T200 191T188 227Q148 344 148 407\",8211:\"59 275L66 312H316Q565 312 565 311T558 275T549 238Q549 236 299 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8212:\"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8213:\"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275\",8215:\"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75\",8216:\"309 567L299 520Q289 474 288 473Q288 471 239 471T190 473L192 480Q193 486 196 499T201 522L211 569L287 694H312L335 693L332 685Q328 677 321 661T307 630L279 570L294 569Q309 569 309 567\",8217:\"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647\",8220:\"393 567L383 520Q373 474 372 473Q372 471 323 471T274 473L276 480Q277 486 280 499T285 522L295 569L371 694H396L419 693L416 685Q412 677 405 661T391 630L363 570L378 569Q393 569 393 567ZM587 567L577 520Q567 474 566 473Q566 471 517 471T468 473L470 480Q471 486 474 499T479 522L489 569L565 694H590L613 693L610 685Q606 677 599 661T585 630L557 570L572 569Q587 569 587 567\",8221:\"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647\",8260:\"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744\",8710:\"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerifItalic=void 0,e.sansSerifItalic={33:[.694,0,.319,{ic:.036}],34:[.694,-.471,.5],35:[.694,.194,.833,{ic:.018}],36:[.75,.056,.5,{ic:.065}],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278,{ic:.057}],40:[.75,.25,.389,{ic:.102}],41:[.75,.25,.389],42:[.75,-.306,.5,{ic:.068}],43:[.583,.083,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5,{ic:.1}],48:[.678,.022,.5,{ic:.049}],49:[.678,0,.5],50:[.678,0,.5,{ic:.051}],51:[.678,.022,.5,{ic:.044}],52:[.656,0,.5,{ic:.021}],53:[.656,.022,.5,{ic:.055}],54:[.678,.022,.5,{ic:.048}],55:[.656,.011,.5,{ic:.096}],56:[.678,.022,.5,{ic:.054}],57:[.677,.022,.5,{ic:.045}],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778,{ic:.018}],63:[.704,0,.472,{ic:.064}],64:[.705,.01,.667,{ic:.04}],91:[.75,.25,.289,{ic:.136}],93:[.75,.25,.289,{ic:.064}],94:[.694,-.527,.5,{ic:.033}],95:[-.038,.114,.5,{ic:.065}],126:[.327,-.193,.5,{ic:.06}],305:[.444,0,.239,{ic:.019}],567:[.444,.204,.267,{ic:.019}],768:[.694,-.527,0],769:[.694,-.527,0,{ic:.063}],770:[.694,-.527,0,{ic:.033}],771:[.677,-.543,0,{ic:.06}],772:[.631,-.552,0,{ic:.064}],774:[.694,-.508,0,{ic:.073}],775:[.68,-.576,0],776:[.68,-.582,0,{ic:.04}],778:[.693,-.527,0],779:[.694,-.527,0,{ic:.063}],780:[.654,-.487,0,{ic:.06}],913:[.694,0,.667],914:[.694,0,.667,{ic:.029}],915:[.691,0,.542,{ic:.104}],916:[.694,0,.833],917:[.691,0,.597,{ic:.091}],918:[.694,0,.611,{ic:.091}],919:[.694,0,.708,{ic:.06}],920:[.715,.022,.778,{ic:.026}],921:[.694,0,.278,{ic:.06}],922:[.694,0,.694,{ic:.091}],923:[.694,0,.611],924:[.694,0,.875,{ic:.054}],925:[.694,0,.708,{ic:.058}],926:[.688,0,.667,{ic:.098}],927:[.716,.022,.736,{ic:.027}],928:[.691,0,.708,{ic:.06}],929:[.694,0,.639,{ic:.051}],931:[.694,0,.722,{ic:.091}],932:[.688,0,.681,{ic:.109}],933:[.716,0,.778,{ic:.065}],934:[.694,0,.722,{ic:.021}],935:[.694,0,.667,{ic:.091}],936:[.694,0,.778,{ic:.076}],937:[.716,0,.722,{ic:.047}],8211:[.312,-.236,.5,{ic:.065}],8212:[.312,-.236,1,{ic:.065}],8213:[.312,-.236,1,{ic:.065}],8215:[-.038,.114,.5,{ic:.065}],8216:[.694,-.471,.278,{ic:.058}],8217:[.694,-.471,.278,{ic:.057}],8220:[.694,-.471,.5,{ic:.114}],8221:[.694,-.471,.5],8260:[.75,.25,.5,{ic:.1}],8710:[.694,0,.833]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerif=void 0;var r=Q(6),T=Q(244);e.sansSerif=r.AddPaths(T.sansSerif,{33:\"120 187Q120 225 115 440T110 693Q110 694 159 694T208 693Q208 655 203 440T198 187Q198 186 159 186T120 187ZM110 0V98H208V0H110\",34:\"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227\",35:\"56 350Q56 363 70 370H192Q314 370 314 371L356 526Q396 676 401 685Q406 694 416 694Q423 694 429 689T436 677Q436 673 396 523T355 371Q355 370 449 370Q544 370 544 371L586 526Q628 682 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 670 645 593T605 444L585 371Q585 370 673 370H762Q777 362 777 350Q777 337 767 334T723 330H668H573L567 305Q560 282 545 226L530 171L646 170H721Q756 170 766 167T777 150Q777 138 762 130H640Q518 130 518 129L476 -26Q434 -182 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -178Q397 -170 417 -93T457 56L477 129Q477 130 383 130Q288 130 288 129L246 -26Q204 -182 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -178Q167 -170 187 -94T227 56L247 129Q247 130 159 130H70Q56 137 56 150Q56 165 72 170H259L265 195Q273 222 287 275L302 330H186L70 331Q63 334 58 339Q56 343 56 350ZM489 170L532 330H343L337 305Q330 282 315 226L300 171L394 170H489\",36:\"55 509Q55 585 103 638T213 701V750H286V703H289Q312 703 354 689Q372 682 399 666T427 646L413 569Q413 568 403 575Q352 615 291 624H286V405Q357 389 400 331T444 199Q444 128 402 69T286 -7V-56H213V-9Q167 -3 125 14T63 44T44 60Q44 61 52 101L59 140L69 132Q78 125 87 119T107 107T124 97T141 90T157 84T173 80T187 76T201 73T213 70V317L202 319Q141 335 98 386T55 509ZM213 424V620L203 615Q143 587 143 522Q143 455 213 424ZM356 187Q356 208 350 227T334 258T315 280T298 293T287 297Q286 297 286 186V75Q356 110 356 187\",37:\"56 549Q56 639 98 694T195 750Q248 750 290 694T332 548Q332 455 290 401T195 347Q141 347 99 403T56 549ZM248 549Q248 602 234 638T195 674Q145 674 145 549Q145 423 195 423Q219 423 233 459T248 549ZM197 -56Q187 -56 182 -49T176 -35Q176 -33 178 -27Q179 -25 399 356T623 741Q626 750 639 750Q648 750 654 744T659 729Q657 721 435 336T207 -52Q203 -56 197 -56ZM500 146Q500 235 542 291T639 347Q692 347 734 293T776 146Q776 53 733 -1T639 -56Q587 -56 544 -2T500 146ZM692 146Q692 199 678 235T639 271Q589 271 589 146Q589 20 639 20Q663 20 677 56T692 146\",38:\"156 502Q156 600 198 658T302 716Q367 716 405 665T444 549Q444 531 442 523Q426 446 304 348L287 334Q305 297 340 249T402 170T430 139T443 149T472 181T509 231T549 303T583 394Q584 398 586 404Q587 408 587 409Q588 409 626 399T665 388Q663 381 660 369T644 322T614 253T567 176T502 98L491 87Q534 57 584 57Q653 57 700 75Q702 75 702 34T700 -7Q652 -22 586 -22H580Q505 -22 434 26L421 34Q419 33 405 25T374 11T336 -4T285 -17T226 -22Q143 -22 93 31T42 152Q42 184 51 211T81 260T111 291T144 317L184 348L178 365Q156 430 156 502ZM359 552Q359 588 345 614T302 640Q292 640 282 636T260 622T241 590T233 535Q236 474 253 417L257 407L271 419Q312 454 330 479Q359 514 359 552ZM345 102Q262 190 216 277Q215 277 204 267T180 247T165 236Q135 208 135 159Q135 123 152 97T198 61Q207 58 227 58Q286 58 357 89L345 102\",39:\"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90\",40:\"74 250Q74 564 240 733L257 750H333L323 739Q167 573 167 250T323 -239L333 -250H257L240 -233Q74 -63 74 250\",41:\"221 -73T221 250T65 739L55 750H131L148 733Q314 567 314 250T148 -233L131 -250H55L65 -239Q221 -73 221 250\",42:\"208 717Q211 731 222 740T250 750Q265 750 277 741T291 717Q291 706 290 675T286 617L285 591L329 622Q369 651 376 655T393 659Q411 659 423 647T436 616Q436 609 434 603T429 594T419 585T407 577T389 567T368 556L316 528L368 500Q421 472 429 464Q436 455 436 440Q436 422 423 409T393 396Q390 396 388 396T384 397T380 398T375 401T367 406T358 413T346 422T329 434L285 465Q284 465 285 438T289 381T291 347Q291 327 278 317T250 306Q234 306 222 315T208 339Q208 350 209 381T212 439L214 465L170 434Q130 405 123 401T106 397Q88 397 76 409T63 440Q63 447 65 453T70 462T80 471T92 479T110 489T131 500L183 528L131 556Q78 584 70 592Q63 601 63 616Q63 634 76 647T106 660Q109 660 111 660T115 659T119 658T124 655T132 650T141 643T153 634T170 622L214 591L212 617Q211 643 210 674T208 717\",43:\"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250\",44:\"90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90\",45:\"11 186V259H277V186H11\",46:\"90 0V98H188V0H90\",47:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",58:\"90 346V444H188V346H90ZM90 0V98H188V0H90\",59:\"90 346V444H188V346H90ZM90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90\",61:\"56 350Q56 363 70 370H707Q722 362 722 350Q722 339 708 331L390 330H72Q56 335 56 350ZM56 150Q56 165 72 170H708Q722 160 722 150Q722 138 707 130H70Q56 137 56 150\",63:\"55 652Q63 658 77 666T132 689T214 704T265 703Q303 698 332 684T376 653T401 615T413 578T416 546Q416 475 360 426Q325 396 303 365T273 303T263 256T261 216V186H183V225Q184 281 194 322Q206 368 232 409T276 469T306 495Q323 517 323 550Q323 596 297 612T223 629Q187 629 157 618Q122 607 91 583L83 576L55 652ZM173 0V98H271V0H173\",64:\"422 576Q440 576 456 573T480 566L488 563Q488 565 484 571T472 588T452 607T424 622T387 629Q294 629 220 550T146 347Q146 233 210 155T365 66Q376 65 400 65Q465 68 517 86L532 91H612L598 76Q511 -11 388 -11Q250 -11 153 93T56 347Q56 454 107 538T231 663T378 704Q446 704 492 680T564 608T599 506T611 376Q611 320 607 299Q595 227 546 173T422 118Q343 118 288 185T232 347Q232 444 287 510T422 576ZM520 347Q520 429 487 465T421 501Q385 501 354 461T323 347Q323 270 355 232T422 193Q454 193 487 229T520 347\",91:\"94 -250V750H266V674H181V-174H266V-250H94\",93:\"22 674V750H194V-250H22V-174H107V674H22\",94:\"146 612L212 694H287L353 612Q417 532 420 529Q421 528 418 527Q414 527 383 527H345L250 639Q244 633 199 580L154 527H116Q79 528 79 529Q82 532 146 612\",95:\"0 -114V-38H499V-114H0\",126:\"83 204Q86 254 113 290T186 327Q211 327 251 299T312 270Q337 270 340 315V327H416V316Q413 258 382 226T315 193Q289 193 249 221T187 250Q162 250 159 205V193H83V204\",305:\"74 0V444H164V0H74\",567:\"-35 -95Q-4 -126 34 -126Q58 -126 76 -116T100 -88Q102 -82 102 181V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171L-47 -133L-35 -95\",768:\"-415 692L-417 694H-324L-262 612Q-249 594 -233 572T-208 539L-200 528L-237 527H-275L-344 608Q-359 625 -378 647T-406 680T-415 692\",769:\"-239 612L-177 694H-84L-86 692Q-86 691 -95 681T-123 648T-157 608L-226 527H-264L-301 528L-293 539Q-285 550 -269 572T-239 612\",770:\"-354 612L-288 694H-213L-147 612Q-83 532 -80 529Q-79 528 -82 527Q-86 527 -117 527H-155L-250 639Q-256 633 -301 580L-346 527H-384Q-421 528 -421 529Q-418 532 -354 612\",771:\"-417 554Q-414 604 -387 640T-314 677Q-289 677 -249 649T-188 620Q-163 620 -160 665V677H-84V666Q-87 608 -118 576T-185 543Q-211 543 -251 571T-313 600Q-338 600 -341 555V543H-417V554\",772:\"-431 552V631H-70V552H-431\",774:\"-250 508Q-331 508 -379 567T-427 689V694H-351V685Q-348 649 -321 620T-250 591Q-206 591 -180 619T-150 685V694H-74V689Q-74 624 -122 566T-250 508\",775:\"-302 576V680H-198V576H-302\",776:\"-397 582V680H-299V582H-397ZM-202 582V680H-104V582H-202\",778:\"-319 611Q-319 649 -285 671T-211 694Q-164 694 -132 671T-99 611Q-99 572 -133 550T-209 527T-285 549T-319 611ZM-155 610Q-155 635 -171 643T-215 651Q-263 651 -263 610Q-263 570 -211 570H-209H-207Q-155 570 -155 610\",779:\"-250 693Q-317 544 -323 527H-399L-343 694H-296Q-250 694 -250 693ZM-84 693Q-151 544 -157 527H-233L-177 694H-130Q-84 694 -84 693\",780:\"-421 652Q-422 653 -419 654Q-415 654 -384 654H-346L-301 601Q-287 585 -275 571T-258 551T-250 542L-155 654H-117Q-80 653 -80 652Q-83 649 -147 569L-213 487H-288L-354 569Q-418 649 -421 652\",913:\"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606\",914:\"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190\",915:\"87 0V691H499V611H345L191 612V0H87\",916:\"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630\",917:\"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86\",918:\"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69\",919:\"86 0V694H190V399H517V694H621V0H517V323H190V0H86\",920:\"56 344Q56 430 86 502T164 619T271 690T388 716Q448 716 506 691T613 619T692 501T722 344Q722 188 624 84T389 -21Q252 -21 154 83T56 344ZM624 345Q624 423 597 488T513 596T380 639Q343 639 305 621T232 568T175 475T153 344Q153 216 222 136T388 56Q487 56 555 138T624 345ZM209 299V397H568V299H209\",921:\"87 0V694H191V0H87\",922:\"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88\",923:\"294 606Q294 574 252 430T163 144T117 0H72Q28 0 28 1T141 348L254 694H357L469 348Q582 2 582 1T527 0L473 1L469 11Q469 13 427 141T343 411T296 599L294 610V606\",924:\"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92\",925:\"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88\",926:\"47 600V688H619V600H47ZM111 314V401H555V314H111ZM42 0V88H624V0H42\",927:\"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147\",928:\"86 0V691H621V0H517V615H190V0H86\",929:\"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485\",931:\"55 0Q56 3 171 167T288 332Q288 334 172 474L55 615V694H666V614H428L190 615L412 347L322 218Q236 97 228 84L447 85H666V0H55\",932:\"36 608V688H644V608H518L392 609V0H288V609L162 608H36\",933:\"55 565Q59 625 105 670T219 716H222Q310 716 353 627Q376 583 386 524L389 510L393 532Q397 555 407 584T433 644T482 695T557 716Q621 716 669 673T722 565V555H629V563Q627 592 607 615T557 638Q530 638 511 629T479 598T459 553T447 488T442 411T441 319V202V0H337V202Q337 453 331 497Q313 634 226 638Q185 638 167 612T148 563V555H55V565\",934:\"666 347Q666 326 661 302T638 247T594 190T520 140T413 107H410V0H312V54Q312 107 311 107Q286 107 229 128T125 192Q55 260 55 347Q55 396 77 438T131 507T200 552T265 579T311 587Q312 587 312 641V694H410V587H413Q476 576 524 552T598 502T640 444T661 390T666 347ZM310 510Q305 510 291 507T252 492T208 464T172 416T157 347T171 279T204 233T247 205T286 190T310 184H312V347Q312 510 310 510ZM564 347Q564 385 549 416T514 463T470 491T433 505T414 509L410 510V184Q413 184 426 187T464 200T510 227T548 275T564 347\",935:\"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14\",936:\"340 187V694H438V187Q481 206 495 219Q518 239 533 267T553 332T560 386T562 435Q562 576 593 608Q608 621 637 621H670H722V545H719Q718 545 715 545T710 544Q679 536 666 487Q664 474 662 429T654 344T633 259T580 175T486 119Q450 109 438 108V0H340V108L326 110Q122 149 117 415Q116 460 111 487Q98 536 67 544Q65 544 62 544T58 545H55V621H107Q160 621 163 620Q191 613 202 573Q213 536 213 473T220 351T256 249Q262 239 270 230T285 216T301 205T316 197T329 192T340 187\",937:\"55 462Q55 561 141 638T359 716Q492 716 579 640T666 462Q666 407 642 347T579 222T529 126Q515 91 515 86Q517 85 528 85Q530 85 552 85T596 86H677V0H425V14Q429 79 465 168L492 228Q494 232 504 254T516 283T527 310T539 340T548 368T556 399T560 428T562 460Q562 531 510 585T361 639Q263 639 211 585T159 460Q159 422 170 378T192 309T229 228L256 168Q292 79 296 14V0H44V86H125Q146 86 168 86T193 85L206 86Q206 103 183 148T131 241T79 352T55 462\",8211:\"0 236V312H499V236H0\",8212:\"0 236V312H999V236H0\",8213:\"0 236V312H999V236H0\",8215:\"0 -114V-38H499V-114H0\",8216:\"90 568L140 694H189L174 633Q159 572 158 571Q158 569 173 569H188V471H90V568\",8217:\"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90\",8220:\"174 568L224 694H273L258 633Q243 572 242 571Q242 569 257 569H272V471H174V568ZM368 568L418 694H467L452 633Q437 572 436 571Q436 569 451 569H466V471H368V568\",8221:\"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227\",8260:\"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750\",8710:\"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sansSerif=void 0,e.sansSerif={33:[.694,0,.319],34:[.694,-.471,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.306,.5],43:[.583,.082,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778],63:[.704,0,.472],64:[.704,.011,.667],91:[.75,.25,.289],93:[.75,.25,.289],94:[.694,-.527,.5],95:[-.038,.114,.5],126:[.327,-.193,.5],305:[.444,0,.239],567:[.444,.205,.267],768:[.694,-.527,0],769:[.694,-.527,0],770:[.694,-.527,0],771:[.677,-.543,0],772:[.631,-.552,0],774:[.694,-.508,0],775:[.68,-.576,0],776:[.68,-.582,0],778:[.694,-.527,0],779:[.694,-.527,0],780:[.654,-.487,0],913:[.694,0,.667],914:[.694,0,.667],915:[.691,0,.542],916:[.694,0,.833],917:[.691,0,.597],918:[.694,0,.611],919:[.694,0,.708],920:[.716,.021,.778],921:[.694,0,.278],922:[.694,0,.694],923:[.694,0,.611],924:[.694,0,.875],925:[.694,0,.708],926:[.688,0,.667],927:[.715,.022,.736],928:[.691,0,.708],929:[.694,0,.639],931:[.694,0,.722],932:[.688,0,.681],933:[.716,0,.778],934:[.694,0,.722],935:[.694,0,.667],936:[.694,0,.778],937:[.716,0,.722],8211:[.312,-.236,.5],8212:[.312,-.236,1],8213:[.312,-.236,1],8215:[-.038,.114,.5],8216:[.694,-.471,.278],8217:[.694,-.471,.278],8220:[.694,-.471,.5],8221:[.694,-.471,.5],8260:[.75,.25,.5],8710:[.694,0,.833]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.scriptBold=void 0,e.scriptBold={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.script=void 0,e.script={}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.smallop=void 0;var r=Q(6),T=Q(248);e.smallop=r.AddPaths(T.smallop,{40:\"152 251Q152 646 388 850H416Q422 844 422 841Q422 837 403 816T357 753T302 649T255 482T236 250Q236 124 255 19T301 -147T356 -251T403 -315T422 -340Q422 -343 416 -349H388Q359 -325 332 -296T271 -213T212 -97T170 56T152 251\",41:\"305 251Q305 -145 69 -349H56Q43 -349 39 -347T35 -338Q37 -333 60 -307T108 -239T160 -136T204 27T221 250T204 473T160 636T108 740T60 807T35 839Q35 850 50 850H56H69Q197 743 256 566Q305 425 305 251\",47:\"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838\",91:\"202 -349V850H394V810H242V-309H394V-349H202\",92:\"522 -326Q522 -337 515 -343T500 -349Q487 -349 481 -337Q477 -328 267 248T55 827Q54 835 60 842T76 850Q89 850 96 838Q100 829 310 253T522 -326\",93:\"22 810V850H214V-349H22V-309H174V810H22\",123:\"477 -343L471 -349H458Q432 -349 367 -325T273 -263Q258 -245 250 -212L249 -51Q249 -27 249 12Q248 118 244 128Q243 129 243 130Q220 189 121 228Q109 232 107 235T105 250Q105 256 105 257T105 261T107 265T111 268T118 272T128 276T142 283T162 291Q224 324 243 371Q243 372 244 373Q248 384 249 469Q249 475 249 489Q249 528 249 552L250 714Q253 728 256 736T271 761T299 789T347 816T422 843Q440 849 441 849H443Q445 849 447 849T452 850T457 850H471L477 844V830Q477 820 476 817T470 811T459 807T437 801T404 785Q353 760 338 724Q333 710 333 550Q333 526 333 492T334 447Q334 393 327 368T295 318Q257 280 181 255L169 251L184 245Q318 198 332 112Q333 106 333 -49Q333 -209 338 -223Q351 -255 391 -277T469 -309Q477 -311 477 -329V-343\",125:\"110 849L115 850Q120 850 125 850Q151 850 215 826T309 764Q324 747 332 714L333 552Q333 528 333 489Q334 383 338 373Q339 372 339 371Q353 336 391 310T469 271Q477 268 477 251Q477 241 476 237T472 232T456 225T428 214Q357 179 339 130Q339 129 338 128Q334 117 333 32Q333 26 333 12Q333 -27 333 -51L332 -212Q328 -228 323 -240T302 -271T255 -307T175 -338Q139 -349 125 -349T108 -346T105 -329Q105 -314 107 -312T130 -304Q233 -271 248 -209Q249 -203 249 -49V57Q249 106 253 125T273 167Q307 213 398 245L413 251L401 255Q265 300 250 389Q249 395 249 550Q249 710 244 724Q224 774 112 811Q105 813 105 830Q105 845 110 849\",710:\"279 669Q273 669 142 610T9 551L0 569Q-8 585 -8 587Q-8 588 -7 588L12 598Q30 608 66 628T136 666L277 744L564 587L555 569Q549 556 547 554T544 552Q539 555 410 612T279 669\",732:\"374 597Q337 597 269 627T160 658Q101 658 34 606L24 597L12 611Q1 624 1 626Q1 627 27 648T55 671Q120 722 182 722Q219 722 286 692T395 661Q454 661 521 713L531 722L543 708Q554 695 554 693Q554 692 528 671T500 648Q434 597 374 597\",770:\"-277 669Q-283 669 -414 610T-547 551L-556 569Q-564 585 -564 587Q-564 588 -563 588L-544 598Q-526 608 -490 628T-420 666L-279 744L8 587L-1 569Q-7 556 -9 554T-12 552Q-17 555 -146 612T-277 669\",771:\"-182 597Q-219 597 -287 627T-396 658Q-455 658 -522 606L-532 597L-544 611Q-555 624 -555 626Q-555 627 -529 648T-501 671Q-436 722 -374 722Q-337 722 -270 692T-161 661Q-102 661 -35 713L-25 722L-13 708Q-2 695 -2 693Q-2 692 -28 671T-56 648Q-122 597 -182 597\",8214:\"257 0V602H300V0H257ZM478 0V602H521V0H478\",8260:\"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838\",8593:\"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421\",8595:\"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96\",8657:\"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329\",8659:\"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236\",8719:\"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8720:\"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656\",8721:\"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748\",8730:\"263 249Q264 249 315 130T417 -108T470 -228L725 302Q981 837 982 839Q989 850 1001 850Q1008 850 1013 844T1020 832V826L741 243Q645 43 540 -176Q479 -303 469 -324T453 -348Q449 -350 436 -350L424 -349L315 -96Q206 156 205 156L171 130Q138 104 137 104L111 130L263 249\",8739:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",8741:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612\",8747:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244\",8748:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244\",8749:\"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244\",8750:\"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107\",8896:\"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249\",8897:\"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708\",8898:\"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217\",8899:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750\",8968:\"202 -349V850H449V810H242V-349H202\",8969:\"22 810V850H269V-349H229V810H22\",8970:\"202 -349V850H242V-309H449V-349H202\",8971:\"229 -309V850H269V-349H22V-309H229\",9001:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",9002:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\",9168:\"312 0V602H355V0H312\",10072:\"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612\",10216:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",10217:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\",10752:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250\",10753:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103\",10754:\"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59\",10756:\"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276\",10758:\"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217\",12296:\"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850\",12297:\"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832\"},{10764:\"\\u222c\\u222c\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.smallop=void 0,e.smallop={40:[.85,.349,.458],41:[.85,.349,.458],47:[.85,.349,.578],91:[.85,.349,.417],92:[.85,.349,.578],93:[.85,.349,.417],123:[.85,.349,.583],125:[.85,.349,.583],710:[.744,-.551,.556],732:[.722,-.597,.556],770:[.744,-.551,0],771:[.722,-.597,0],8214:[.602,0,.778],8260:[.85,.349,.578],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8730:[.85,.35,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[.805,.306,.472,{ic:.138}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8968:[.85,.349,.472],8969:[.85,.349,.472],8970:[.85,.349,.472],8971:[.85,.349,.472],9001:[.85,.35,.472],9002:[.85,.35,.472],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[.85,.35,.472],10217:[.85,.35,.472],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],12296:[.85,.35,.472],12297:[.85,.35,.472]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphicBold=void 0;var r=Q(6),T=Q(250);e.texCalligraphicBold=r.AddPaths(T.texCalligraphicBold,{65:\"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266\",66:\"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83\",67:\"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20\",68:\"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391\",69:\"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516\",70:\"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567\",71:\"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279\",72:\"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447\",73:\"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499\",74:\"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390\",75:\"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142\",76:\"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17\",77:\"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20\",78:\"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47\",79:\"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433\",80:\"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468\",81:\"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453\",82:\"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0\",83:\"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476\",84:\"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462\",85:\"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586\",86:\"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608\",87:\"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607\",88:\"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562\",89:\"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555\",90:\"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622\",305:\"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296\",567:\"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphicBold=void 0,e.texCalligraphicBold={65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphic=void 0;var r=Q(6),T=Q(252);e.texCalligraphic=r.AddPaths(T.texCalligraphic,{65:\"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249\",66:\"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342\",67:\"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25\",68:\"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407\",69:\"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470\",70:\"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579\",71:\"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68\",72:\"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487\",73:\"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0\",74:\"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78\",75:\"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429\",76:\"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11\",77:\"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9\",78:\"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705\",79:\"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428\",80:\"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475\",81:\"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286\",82:\"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475\",83:\"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512\",84:\"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475\",85:\"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592\",86:\"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633\",87:\"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633\",88:\"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324\",89:\"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599\",90:\"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texCalligraphic=void 0,e.texCalligraphic={65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texMathit=void 0;var r=Q(6),T=Q(254);e.texMathit=r.AddPaths(T.texMathit,{65:\"85 46Q112 48 132 56T161 73T176 92T185 104Q185 106 353 407T524 709Q527 716 551 716Q568 716 572 712Q573 711 574 710Q576 708 594 384Q613 54 617 52H618Q626 46 672 46H689Q696 41 696 36Q696 13 683 0H670Q639 2 557 2Q526 2 500 2T459 2T441 1Q425 1 425 10Q425 12 427 24Q428 27 429 31T430 36T432 40T434 43T437 45T443 46T450 46Q514 46 514 69Q514 74 511 136L506 209H292L260 152Q222 84 222 74Q222 48 264 46Q280 46 280 35Q280 33 278 21Q275 7 272 4T259 0Q256 0 232 1T159 2Q135 2 109 1T78 0Q58 0 58 10Q58 14 61 26T66 40Q68 46 85 46ZM504 260Q503 263 496 407T486 553L466 520Q446 486 402 406L318 256Q318 255 411 255H504V260\",66:\"57 11Q57 38 69 45L74 46Q78 46 85 46T99 46Q134 47 145 50T162 62Q164 66 233 344T303 626Q303 627 302 629V631Q296 637 241 637H223Q217 642 217 645T219 664Q223 677 229 683H411L593 682L605 680Q616 678 628 675T660 662T694 639T720 601T732 547Q732 519 726 503Q710 452 662 414T556 360L545 357L556 355Q604 346 641 312T678 221Q678 155 622 92T482 8Q459 2 439 2T256 0H154H105Q74 0 66 2T57 11ZM629 549Q628 550 629 557T627 576T619 600T601 622T570 636Q564 637 490 637Q472 637 454 637T424 636T411 636Q399 635 395 622T364 500Q333 377 332 376Q332 374 408 374L485 375L495 377Q547 390 588 437T629 549ZM504 336Q500 337 410 337Q323 337 322 336Q322 334 305 263T270 122T252 51Q252 47 337 46Q346 46 361 46T384 45Q425 45 455 55T515 95Q574 156 574 235Q574 276 555 304T504 336\",67:\"395 -21Q279 -21 215 56T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q321 502 287 397T252 213Q252 123 297 74Q347 24 421 24Q500 24 564 89T653 240Q656 253 659 255T677 257Q700 257 700 248Q700 242 694 222Q681 183 656 143T593 65T504 3T395 -21\",68:\"56 11Q56 38 68 45L72 46Q77 46 84 46T98 46Q133 47 144 50T161 62Q163 66 232 344T302 626Q302 627 302 629L301 631Q295 637 240 637H222Q216 642 216 645T218 664Q222 677 228 683H403Q582 683 589 682Q672 674 723 608T775 440Q775 312 709 209T562 54Q502 14 432 2Q423 1 243 0H148H102Q72 0 64 2T56 11ZM254 51Q254 46 348 46Q395 46 422 50T484 71Q585 121 633 255Q679 396 679 477Q679 522 665 554T629 603T587 626T548 636Q547 636 536 636T510 636T480 637Q420 637 411 636T398 627Q396 623 325 339T254 51\",69:\"248 634Q216 634 214 638Q213 641 213 646Q213 674 224 678Q226 680 481 680H736Q743 676 743 669Q743 665 729 557T713 447Q711 440 690 440H675Q667 445 667 454Q667 455 671 481T675 536Q675 583 658 604T592 632Q574 634 475 634Q439 634 424 633T405 631T399 625Q397 622 367 501T336 377Q336 376 367 376H388Q451 376 477 389Q493 399 503 419T520 462T528 489Q531 493 549 493Q557 493 561 492T566 491T569 488T572 483L539 351Q507 221 503 216Q503 216 500 213H484Q468 213 465 216Q461 219 461 225Q461 228 466 250T472 290Q472 317 452 323T368 330H324Q323 326 289 191T255 51T331 46H360Q413 46 444 49T511 67T570 113Q589 137 608 175T638 242T652 272Q656 274 670 274Q693 274 693 262L648 148Q590 4 588 2Q585 0 323 0H61Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623Q299 630 292 631T248 634\",70:\"299 623Q299 630 292 631T247 634H219Q213 640 213 642T215 661Q218 673 225 680H724Q731 676 731 669Q731 665 717 557T701 447Q699 440 678 440H663Q656 444 656 452Q656 457 659 485T663 538Q663 586 644 607T566 633Q564 633 535 633T486 634H458Q404 634 399 625Q396 620 364 492L332 363H380Q446 365 464 373Q496 389 514 458Q518 477 523 479Q527 480 541 480H556Q563 475 563 470Q563 467 532 339T498 207Q496 200 475 200H460Q453 207 453 212Q454 213 456 225T461 254T464 278Q464 304 445 310T369 317H321L289 190Q257 66 257 59Q257 54 261 52T283 48T337 46Q348 46 352 46T360 45T366 42T368 37Q368 32 365 23Q360 4 355 2Q352 1 342 1Q336 1 297 1T199 2Q138 2 106 2T71 1H68Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623\",71:\"632 -1Q629 -1 622 5T604 25T583 53Q508 -22 394 -22Q287 -22 219 52T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q319 501 286 394T252 208Q252 156 269 118T314 61T369 33T425 24Q470 24 509 46T566 104Q571 116 583 162T595 214Q595 222 583 223Q561 227 517 227H495Q488 230 488 238Q488 254 495 268Q500 273 511 273Q515 273 532 273T581 272T649 271Q731 271 752 273H761Q767 267 767 264T765 246Q761 233 755 227H742Q698 227 693 213L639 4Q636 -1 632 -1\",72:\"61 0Q54 7 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 396 612T367 500Q360 474 352 442T340 395L336 380Q336 378 466 378H596Q657 622 657 626Q657 627 656 629V631Q650 637 595 637H577Q571 642 571 645T573 664Q577 677 583 683H596Q664 681 729 681Q837 681 843 683H853Q860 676 860 672Q858 647 848 637H819Q783 636 772 634T756 623Q753 618 684 340T614 57Q614 50 621 49T666 46Q697 46 699 40Q701 37 698 21Q693 3 689 1Q686 0 677 0Q673 0 657 0T611 1T546 2Q453 2 428 0H418Q411 7 411 11Q411 27 418 41Q422 46 452 46Q488 47 499 50T516 62Q517 64 550 196T584 331Q584 332 454 332H324L291 197Q257 64 257 56Q257 50 265 49T309 46Q340 46 342 40Q344 37 341 21Q336 3 332 1Q329 0 320 0Q316 0 300 0T254 1T189 2Q96 2 71 0H61\",73:\"235 637Q217 637 213 638T209 649Q209 673 220 682Q222 683 237 683Q278 681 369 681Q404 681 441 682T483 683Q499 683 503 681T508 672Q508 670 505 658T500 643Q498 637 464 637Q425 635 415 633T398 621Q396 618 327 340T257 58T260 52T278 48T322 46Q349 46 349 36Q349 31 346 22Q342 4 337 1Q336 1 334 1T329 0Q325 0 307 0T258 1T190 2Q95 2 67 0H56Q49 7 49 11Q51 38 62 46H91Q129 47 141 50T159 62Q161 66 230 344T300 625Q300 637 235 637\",74:\"361 637Q333 637 331 641Q330 644 330 649Q330 673 341 682Q343 683 360 683Q405 681 500 681Q551 681 577 681T607 682Q622 682 622 673Q622 665 616 647Q614 640 610 639T587 637Q547 636 541 624Q538 618 477 374T413 124Q391 64 333 22T207 -21T109 12T78 86Q78 130 101 150T149 170Q193 170 196 129Q196 100 178 80T137 58L132 57Q134 52 138 46T160 28T205 16Q242 16 273 48T319 122Q322 129 383 371T444 627Q444 637 361 637\",75:\"668 621Q668 635 645 637Q629 637 629 648Q629 650 632 662T637 677Q640 682 653 682Q657 682 688 681T764 680Q786 680 810 681T839 682Q859 682 859 672Q859 655 852 643Q849 637 839 637Q804 637 768 621T717 595T697 578Q696 578 600 497L505 417L508 408Q543 311 574 227T618 106T632 69Q645 47 688 46H707Q713 38 713 37T710 19Q706 6 700 0H688Q659 2 587 2Q557 2 532 2T492 2T474 1Q458 1 458 10Q458 13 460 23Q464 39 466 42T480 46Q526 46 526 72Q526 75 476 213L427 350Q426 350 396 325T334 272T302 242Q302 241 299 230T290 194T279 150Q257 61 257 55Q257 50 265 49T309 46H337Q343 40 343 38T341 19Q337 6 331 0H316Q280 2 190 2Q158 2 131 2T89 2T70 1Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q386 681 414 681T464 682L487 683H496Q502 677 502 674T500 656Q495 641 491 637H462Q426 636 415 634T399 623Q396 618 358 467L320 314Q321 314 484 452Q510 474 552 509Q625 570 646 590T668 621\",76:\"61 0Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H240Q275 681 371 681Q407 681 438 681T487 682T509 682Q527 682 527 674Q527 670 524 659Q523 657 523 654T522 649T520 645T519 642T517 640T515 639T512 638T507 637T502 637T494 637H478Q433 636 417 633T396 617Q395 614 325 334T255 51Q255 47 319 47Q387 47 410 52Q459 65 494 98T543 163T570 229T589 273H622Q628 264 628 262Q628 259 584 133T539 5Q537 1 511 1Q482 0 296 0H61\",77:\"72 1Q58 1 58 11Q58 33 66 41Q68 46 87 46Q150 50 168 84Q172 91 238 356T304 626Q304 627 304 629L303 631Q297 637 242 637H224Q218 642 218 645T220 664Q224 677 230 683H326H394Q417 683 422 682T429 676L480 127L502 163Q523 199 560 262T642 400Q801 668 805 676L817 683H1003Q1010 678 1010 672Q1010 650 997 637H979Q915 637 906 623Q903 618 834 340T764 57Q764 50 771 49T817 46H845Q851 38 851 37T848 19Q845 7 838 0H824Q789 2 701 2Q670 2 644 2T603 2T584 1Q569 1 569 11Q569 13 571 25Q576 42 581 45L586 46Q590 46 597 46T611 46Q646 47 657 50T674 62L813 616L634 313Q453 7 452 7Q446 0 428 0Q409 0 407 6Q405 10 379 304T351 604L285 348Q220 83 220 82Q220 65 233 57T279 46H295Q301 38 301 37T298 19Q295 7 288 0H275Q244 2 171 2Q145 2 123 2T88 2T72 1\",78:\"633 637Q624 637 621 639T617 650Q617 670 630 683H641Q682 680 736 680Q836 680 845 683H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q746 590 673 300Q656 230 638 156T610 44L600 7Q598 0 576 0H559Q553 6 448 297L342 588Q341 588 279 336T216 81Q216 49 274 46Q293 46 295 40Q297 37 294 21Q293 19 292 16T291 11T290 7T289 4T287 2T284 1T280 1T275 0T263 0T229 1T167 2Q91 2 70 0H61Q54 7 54 11T57 27Q61 41 64 43T83 46Q146 50 164 84Q167 90 235 362L303 634Q300 635 253 637H220Q214 643 214 645T216 664Q220 677 226 683H314Q386 683 397 683T410 677Q412 675 501 428L591 179Q591 178 592 180T595 189T600 209T610 246T624 303T645 385Q698 595 698 606Q698 618 683 627T633 637\",79:\"149 237Q149 326 186 413T282 563T412 665T552 704Q619 704 667 678T741 611T777 528T788 444Q788 328 728 219T572 44T377 -22Q275 -22 212 50T149 237ZM688 487Q688 570 650 617T548 665Q467 665 398 592T291 413T253 203Q253 119 290 70T387 20Q440 20 489 52T573 135T635 249T675 373T688 487\",80:\"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H404H431H502Q578 683 615 675T684 636Q729 595 729 531Q729 462 671 396T524 308Q499 302 404 301H318L288 182Q258 63 258 55T310 46Q341 46 343 40Q345 37 342 21Q337 3 333 1Q330 0 321 0Q317 0 301 0T255 1T190 2Q97 2 72 0H62ZM626 555V562Q626 620 552 635Q546 636 481 637Q466 637 450 637T423 636T412 636Q401 635 398 627Q396 622 361 484Q353 452 344 416T330 362L325 344Q325 342 390 342H427Q523 342 567 386Q596 415 611 473T626 555\",81:\"460 -107Q460 -72 464 -42T468 -7L457 -10Q446 -14 424 -18T379 -22Q276 -22 213 50T149 237Q149 326 186 413T282 563T412 665T552 704Q664 704 726 631T788 442Q788 305 703 180Q627 64 517 13L506 8Q506 7 508 -12T513 -38T522 -59T538 -79T565 -85Q604 -85 634 -59T672 0Q676 11 684 11Q693 11 695 2Q695 -1 690 -20T673 -69T644 -126T599 -174T538 -194Q464 -194 460 -110Q460 -108 460 -107ZM689 481Q689 578 646 621T551 665Q468 665 391 586Q321 512 285 399T249 202Q249 106 295 58Q310 41 314 41Q315 41 315 46Q315 83 344 118T420 154Q450 154 473 135Q493 114 500 69L502 58L512 65Q571 110 613 192T672 348T689 481ZM472 49Q472 118 415 118Q393 118 373 98T353 51Q353 18 386 18H387Q424 18 472 40V49\",82:\"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H386Q554 682 569 679Q571 678 580 676Q643 662 680 623T717 533Q717 473 667 420T528 337L538 330Q563 314 578 286T594 228Q594 212 588 147T581 65Q581 36 589 26T616 16H618Q637 16 652 37Q668 57 677 94Q679 105 701 105T723 95Q723 89 717 72T698 33T662 -5T610 -22Q555 -22 513 3T471 88Q471 107 486 168T502 244Q502 303 452 320Q445 322 382 323H320L288 192Q255 63 255 55T307 46Q338 46 340 40Q342 37 339 21Q335 3 330 1Q326 0 320 0Q317 0 306 0T265 1T190 2Q99 2 73 0H62ZM612 558Q612 566 612 568T610 581T603 597T590 611T567 625T532 635Q526 636 470 637Q458 637 445 637T422 636T412 636Q402 635 397 627L390 598Q383 570 373 532T354 455T337 389T330 361Q356 360 384 360H415Q483 360 527 382Q557 399 574 424T604 498Q612 533 612 558\",83:\"198 460Q198 551 269 628T432 705Q516 705 557 644L583 673Q589 679 593 684T600 693T605 698T609 702T611 704T614 705T618 705H620Q633 705 633 698T605 577T573 459L570 456H554Q546 456 543 456T536 457T532 460T531 466Q531 469 533 489T536 532Q536 573 525 600T496 640T462 657T427 662Q369 662 325 612T281 503Q281 475 290 458T318 430T356 415T407 401T463 383Q506 360 522 323T538 258V244Q538 141 465 60T300 -22Q198 -22 152 41L143 31Q137 25 126 12T106 -10T95 -21L92 -22Q88 -22 86 -22Q81 -22 78 -20T74 -16V-14Q74 -11 132 221Q134 227 155 227H171Q177 221 177 215Q177 212 175 205T171 182T169 147Q171 99 195 70T246 33T306 25Q358 25 400 70T453 169Q455 180 455 203V210Q455 263 414 285Q409 288 347 305Q271 328 254 339Q239 350 224 371Q198 409 198 460\",84:\"178 437Q173 442 171 446Q171 451 238 654Q243 670 250 677H681H762Q792 677 799 676T806 667Q806 661 788 553T768 444Q768 437 746 437Q727 437 723 445Q723 450 729 492T736 562Q736 589 728 602T693 624Q675 630 622 630H595Q575 630 571 629T564 623Q562 621 492 342T422 59Q422 48 502 46H542Q548 38 548 37T545 19Q541 6 535 0H517Q475 2 357 2Q315 2 279 2T223 2T198 1Q179 1 179 9Q179 14 182 24Q187 42 190 44Q194 46 206 46H232Q289 47 301 49T326 65L395 344Q465 619 465 626Q465 629 462 629Q456 631 411 631Q364 631 336 625T288 597T255 549T224 467Q215 442 210 437H178\",85:\"636 637Q627 637 624 639T620 650Q620 670 633 683H644Q702 681 753 681Q760 681 772 681T796 681T820 682T838 683H845H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q745 588 698 400T648 204Q627 140 584 86Q484 -22 378 -22Q300 -22 247 31T194 167Q194 176 194 182T196 198T200 218T207 248T217 288T231 346T250 422Q300 618 300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 394 603T344 410Q299 232 292 198T284 135Q284 102 294 78T322 44T355 29T387 24Q455 24 515 74T604 211Q605 215 653 404T701 607Q701 618 686 627T636 637\",86:\"667 637Q657 637 654 639T650 650Q650 670 663 683H675Q704 681 772 681Q793 681 818 682T847 683Q868 683 868 672Q868 670 865 658T860 643Q857 637 848 637Q785 637 749 587L394 -15Q387 -22 366 -22Q346 -22 342 -16Q341 -13 313 303Q285 622 285 623Q283 631 273 634T229 637Q205 637 205 648Q205 654 208 666T217 682Q219 683 230 683Q276 680 329 680Q444 680 456 683H466Q472 677 472 674T470 656Q466 643 460 637H448Q384 637 384 615Q385 612 406 371T427 126Q427 125 495 240T632 473T704 596Q707 604 707 609Q707 633 667 637\",87:\"234 637H226Q205 637 205 648Q205 673 216 682Q218 683 231 683Q265 681 340 681Q371 681 404 682T443 683Q458 683 462 681T467 672Q467 670 464 658T459 643Q457 637 434 637Q407 636 394 632T378 623T376 613Q376 589 385 377T394 149L511 361Q542 419 596 519L613 551L612 585Q610 621 610 624Q608 637 559 637H555Q537 637 537 647Q537 654 540 664Q544 677 550 683H561Q600 680 656 680Q771 680 783 683H792Q798 677 798 675T796 658Q792 643 790 640T778 637H774Q721 637 708 620L717 385Q726 150 727 149Q727 148 752 193T812 303T882 433T942 546T969 596Q970 600 970 606Q970 610 969 613T966 620T961 625T955 628T949 631T941 633T934 634T927 636T920 637Q903 637 903 648Q903 650 905 664Q909 677 915 683H928Q960 681 1031 681Q1050 681 1073 681T1101 682Q1124 682 1124 672Q1124 655 1117 643Q1114 637 1104 637Q1085 637 1069 632T1043 618T1026 603T1014 588L1009 580L687 -16Q681 -22 660 -22Q643 -22 637 -16Q635 -14 627 223Q617 441 617 464L602 441Q578 397 487 228Q456 171 423 110T372 17T355 -15Q348 -22 328 -22Q312 -22 308 -20T303 -9Q303 -5 291 310T277 627Q273 636 234 637\",88:\"684 0Q670 0 634 1T569 2Q512 2 482 2T449 1Q433 1 433 10Q433 11 435 25Q437 34 438 37T442 43T448 45T459 46T476 49Q506 58 506 64Q506 65 467 179T426 295L382 244Q339 194 295 142T249 86Q245 79 245 72Q245 48 279 46Q293 46 293 32Q293 13 280 0H268Q206 2 151 2Q70 2 64 0Q50 0 50 11Q50 15 53 27Q57 41 60 43T78 46Q154 49 205 100Q207 103 312 225L411 341L407 353Q404 360 381 428T336 560T310 627Q301 636 255 637H229Q223 643 223 645T225 664Q229 677 235 683H246Q288 680 346 680Q462 680 477 683H487Q493 677 493 674T491 656Q488 644 485 641T471 637Q461 635 454 635Q419 626 421 619Q421 617 453 524T486 430T554 509T624 593Q631 604 631 611Q631 622 621 629T598 637Q583 637 583 648Q583 650 585 660Q589 676 591 679T602 683Q606 683 637 682T715 680Q742 680 771 681T804 682Q825 682 825 672Q825 650 817 642Q814 637 797 637Q739 634 700 608Q684 597 659 569T505 389L501 384L557 222Q612 61 616 57Q625 47 671 46Q691 46 697 45T704 36Q704 35 702 23Q701 19 700 14T699 7T696 3T692 1T684 0\",89:\"232 637Q198 637 198 647Q198 651 201 664T210 682Q212 683 223 683Q269 680 325 680Q443 680 455 683H465Q472 676 472 672Q472 656 465 642Q460 637 441 637Q395 634 395 623Q395 621 438 478T482 334T583 460T688 591Q688 593 694 601T700 617Q700 637 668 637H666Q655 637 655 648Q655 654 658 664Q660 672 660 673T663 678T668 682T677 683Q680 683 704 682T776 680Q801 680 828 681T858 682Q875 682 875 673Q875 669 872 657T867 643Q865 637 848 637Q788 634 749 597Q733 581 608 424L487 273L461 170Q454 145 448 118T438 76T434 60Q434 54 436 52T452 48T496 46H514Q520 41 520 38T518 19Q514 6 508 0H495Q427 2 364 2Q350 2 323 2T272 0H250H241Q234 7 234 11Q234 27 241 41Q245 46 275 46Q312 47 323 50T340 64Q340 65 344 79T355 120T368 171L393 274L341 448Q288 622 286 626Q278 636 232 637\",90:\"203 452Q203 455 236 565T270 677Q270 681 274 681Q276 683 488 683H699Q704 678 704 675Q704 663 697 649Q697 647 449 348L201 50L266 49H301Q442 49 495 116Q525 155 556 251Q563 274 565 278T579 282H585Q609 285 609 271Q609 270 570 142T528 8T518 1T466 0H303Q253 0 197 0T131 -1Q112 -1 102 -1T87 1T81 3T80 8Q80 30 89 39Q90 41 204 178T446 470T575 626L584 637H512H504H475Q446 637 426 635T378 624T330 597T289 546T254 467Q247 446 243 444Q239 442 226 442Q203 442 203 452\",97:\"418 53Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521Q531 153 534 153T540 150T543 144Q543 141 540 126T529 88T509 43T477 5T434 -11Q404 -11 383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 260 177 351T333 442Q343 442 352 441T369 437T382 431T393 425T402 417T409 410T414 402T419 396Q423 406 436 414T461 422Q475 422 484 413T494 395Q494 384 459 244T420 88Q418 80 418 58V53ZM397 323Q397 344 382 374T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100V94Q184 54 207 35Q218 26 235 26Q279 26 330 91Q343 109 346 118T372 217Q397 317 397 323\",98:\"158 683Q163 683 223 688T300 694Q312 694 312 685T279 544Q243 405 243 403L256 412Q268 422 292 432T338 442Q395 442 431 398T467 284Q467 175 393 82T229 -11Q175 -11 142 32T108 142Q108 176 115 207T166 412Q177 458 190 510T209 588T216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683ZM178 109Q178 27 234 27Q247 27 254 29Q295 44 323 94Q343 129 363 208T384 332Q384 354 382 361Q369 405 332 405Q282 405 228 326L222 317L205 250Q178 142 178 109\",99:\"257 -10Q183 -10 143 37T103 155Q103 257 173 341T337 440Q341 441 348 441H358Q421 441 445 415T469 356Q469 320 450 305T410 289Q392 289 381 299T370 325Q370 362 404 378L414 383Q392 402 365 405Q322 405 285 375T227 294Q217 271 202 213T187 119Q187 27 263 27Q299 27 330 40Q361 51 386 71T424 106T440 121Q444 121 455 110T466 96Q466 92 458 81T432 54T390 24T331 0T257 -10\",100:\"418 54Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521H526Q543 153 543 144Q543 143 541 129Q531 91 521 65T487 14T434 -11T383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 255 174 348T337 441Q354 441 368 437T390 427T404 414T413 404T417 400L471 616Q471 629 464 632T425 637H404Q398 643 398 645T400 664Q405 683 413 683Q418 683 478 688T555 694Q567 694 567 686Q567 676 495 389L419 86Q418 80 418 61V54ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323\",101:\"107 166Q107 230 131 283T193 369T270 420T345 441Q346 441 352 441T361 442H364Q409 442 439 418T470 355Q470 270 366 239Q308 223 218 223H205Q189 164 189 125Q189 83 206 55T261 27Q309 27 353 50T426 109Q436 121 440 121T453 111T466 97Q469 92 455 77Q424 41 372 16T258 -10Q184 -10 146 41T107 166ZM416 333T416 354T401 390T360 405Q322 405 292 384T246 336T223 288T215 261Q215 260 240 260Q262 261 276 262T314 266T353 275T384 291T408 317\",102:\"351 608Q351 642 389 661Q368 668 365 668Q358 668 352 664Q349 663 347 661T342 654T337 647T333 637T330 627T327 614T324 601T321 587T318 571L291 432Q291 431 343 431H394Q400 426 400 423T398 404Q394 390 389 386L335 385H282L255 246Q212 20 189 -51Q136 -199 58 -204Q22 -204 0 -185T-23 -134Q-23 -100 -3 -85T37 -69Q54 -69 65 -80T76 -108Q76 -115 75 -119Q70 -134 61 -144T46 -158L39 -161Q39 -162 42 -163T50 -166T61 -168Q77 -168 91 -145Q98 -128 105 -95L125 -1Q145 90 146 98Q149 109 163 180T189 317T202 384T158 385H114Q108 390 108 393T110 412Q113 424 120 431H165Q211 431 211 433Q213 435 219 473T237 561T266 639Q282 667 310 686T367 705Q402 705 426 686T450 635Q450 600 430 585T390 569Q373 569 362 580T351 608\",103:\"103 163Q106 263 173 347T320 441Q322 441 329 441T341 442Q387 439 419 398Q420 399 420 400Q421 402 425 406T440 416T464 422Q476 421 485 413T494 396Q494 386 465 268T407 38T377 -77Q365 -123 310 -164T179 -205Q46 -205 46 -139Q46 -114 64 -97T106 -79Q127 -79 136 -91T146 -115Q146 -127 141 -138T130 -155T124 -162T125 -163Q133 -166 170 -168Q200 -168 217 -162Q242 -153 264 -130T297 -78Q298 -74 305 -46T320 10T327 38Q326 38 317 31T291 15T256 2Q249 1 231 1Q182 1 143 38T103 163ZM398 324Q398 330 395 346T375 383T332 405Q330 405 326 405T320 404Q291 396 263 365Q230 324 208 239T185 115Q185 38 238 38Q258 38 279 50T312 77T336 106L348 122Q349 125 373 223T398 324\",104:\"398 44Q398 26 414 26Q431 26 451 43Q477 71 496 136Q499 148 501 150T515 153H521Q531 153 534 153T541 150T544 143Q544 133 534 105T496 41T432 -8Q424 -10 408 -10Q370 -10 348 12T326 72Q326 93 342 135Q397 288 397 349Q397 367 396 372Q386 405 357 405Q283 405 228 310Q217 290 212 274T180 152Q153 42 148 26T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 685Q312 674 277 539Q241 395 241 393Q242 394 249 399T259 407T271 415T285 424T300 431T318 437T338 440T362 442Q423 442 449 410T475 338Q475 290 437 178T398 44\",105:\"234 599Q234 620 251 638T292 656Q306 656 319 647T332 617Q332 594 313 577T273 560Q260 560 247 569T234 599ZM75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287\",106:\"266 600Q266 622 283 639T322 656Q340 656 352 645T364 616Q364 596 347 578T305 560Q291 560 279 569T266 600ZM75 287Q75 293 86 316T117 369T168 420T236 442Q282 442 304 415T327 358V332L278 134Q269 98 260 60T246 3T236 -36T227 -66T220 -85T213 -101T204 -114Q181 -150 139 -177T46 -204Q8 -204 -12 -186T-32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 38 -166Q42 -168 49 -168Q75 -168 98 -147T130 -108T146 -71Q150 -59 199 138T250 346Q253 359 253 373Q253 405 230 405Q206 405 184 386T149 345T126 301L117 280Q115 278 98 278H81Q75 284 75 287\",107:\"158 683Q163 683 223 688T300 694Q312 694 312 686Q312 679 262 478L211 273Q212 272 219 276T248 299T296 349Q317 371 328 382T360 410T399 434T439 442Q462 442 480 427T498 373Q498 329 479 313T437 296Q420 296 409 305T398 331Q398 357 413 372T445 391Q454 392 448 399Q445 405 431 405Q408 405 377 385Q351 368 314 327T250 261Q243 257 243 254Q249 254 279 243T328 220Q366 192 366 146Q366 131 361 109T355 62V54Q355 26 376 26Q379 26 387 28Q420 36 443 130Q449 151 454 152Q457 153 465 153H470Q484 153 488 152T492 144Q492 141 489 126T476 88T454 42T420 5T372 -11Q331 -11 306 17T280 88Q280 100 283 119T287 146Q287 172 265 190T221 215T198 220Q197 220 173 121Q152 37 148 24T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683\",108:\"162 61Q162 26 183 26Q211 26 239 131Q245 151 249 152Q252 153 261 153H266H271Q288 153 288 144Q288 143 286 129Q276 91 266 65T232 14T179 -11Q144 -11 116 12T87 81Q87 96 88 102L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 686Q312 676 240 389L164 86Q162 74 162 61\",109:\"81 278Q75 284 75 289Q77 299 89 338Q101 373 114 396T142 428T166 439T186 442H189Q225 440 251 417Q266 401 271 384L275 374L286 386Q342 442 414 442Q428 442 440 440T461 435T479 427T493 418T503 407T511 397T516 387T520 378T523 370L524 366Q546 395 583 418T667 442Q729 442 755 411T782 338Q782 290 743 178T704 45Q704 26 720 26Q773 26 802 136Q805 148 807 150T822 153H828Q838 153 841 153T848 150T851 143Q851 137 843 115T821 63T778 12T715 -10Q671 -10 652 16T632 71Q632 88 668 191T704 349Q704 367 703 372Q693 405 664 405Q637 405 613 393T571 360T547 329T534 309Q523 290 518 274T487 151Q455 24 452 16Q438 -11 408 -11T376 18Q376 26 411 167T447 314Q449 325 449 346Q449 372 444 384Q431 405 408 405Q334 405 276 305Q266 289 262 273T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 26 159 182T200 347Q202 361 202 372Q202 405 181 405Q168 405 159 391Q145 374 132 328T117 280T98 278H81\",110:\"449 44Q449 26 465 26Q482 26 502 43Q528 71 547 136Q550 148 552 150T566 153H572Q582 153 585 153T592 150T595 143Q595 133 585 105T547 41T483 -8Q475 -10 459 -10Q421 -10 399 12T377 72Q377 93 393 135Q448 288 448 349Q448 367 447 372Q437 405 408 405Q381 405 357 393T315 360T291 329T278 309Q267 290 262 274T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 406 183 406Q163 406 148 374Q142 360 135 338T124 299T117 280T98 278H81Q75 284 75 287Q76 293 78 303T90 341T110 388T141 425T184 442Q195 442 204 441T221 436T235 429T247 421T256 412T262 403T267 394T271 387T273 381L274 378V374L287 387Q342 442 414 442Q474 442 500 410T526 338Q526 290 488 178T449 44\",111:\"103 155Q103 266 185 354T366 442Q435 442 476 394T517 275Q517 169 436 79T255 -11Q194 -11 149 32T103 155ZM187 119Q187 67 209 47T260 26Q290 26 321 47Q354 68 380 113T426 260Q432 291 432 315Q432 361 408 385Q388 405 358 405Q319 405 283 374T227 294Q217 271 202 213T187 119\",112:\"81 278Q75 284 75 287Q93 379 131 417Q154 442 189 442Q222 440 243 423T272 382L280 390Q335 442 389 442Q446 442 482 398T518 284Q518 212 480 137T375 19Q321 -10 291 -10H282H278Q237 -10 204 28L202 32L181 -51Q160 -135 160 -139Q160 -147 205 -148H230Q236 -155 236 -157T233 -175Q230 -187 227 -190T214 -194Q211 -194 202 -194T169 -193T108 -192Q40 -192 21 -194H13Q6 -187 6 -183T9 -167Q13 -153 16 -151T39 -148Q73 -147 78 -136Q82 -128 139 104Q199 337 199 347Q202 362 202 372Q202 406 182 406Q169 406 159 391Q145 374 132 328T117 280T98 278H81ZM221 111Q234 26 286 26Q307 26 336 47T385 116Q398 147 416 217T435 332Q435 354 433 361Q420 405 383 405Q333 405 279 326L273 317L221 111\",113:\"228 -11Q172 -11 137 33T101 147Q101 205 125 266T201 377T318 441Q322 442 333 442Q388 442 420 394L429 403Q439 413 455 423T481 437T494 442Q498 442 501 439T504 434Q504 425 435 149Q364 -135 364 -139Q364 -147 409 -148H434Q440 -155 440 -157T437 -175Q433 -191 429 -193Q425 -194 418 -194Q416 -194 406 -194T372 -193T309 -192Q259 -192 233 -192T204 -193Q190 -193 190 -184Q190 -181 192 -169Q196 -153 199 -151T219 -148Q266 -148 277 -141Q283 -137 305 -51L325 29L316 22Q270 -11 228 -11ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323\",114:\"81 278Q75 284 75 289Q77 301 89 339Q122 442 183 442Q219 442 241 425T271 384L283 396Q327 442 384 442Q424 442 454 421T484 362Q484 327 464 312T424 296Q407 296 396 305T385 331Q385 352 394 365T414 384T424 390Q409 405 378 405Q322 405 276 315L268 300L234 161Q200 25 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 405 182 405Q164 405 150 377T128 316T117 280Q115 278 98 278H81\",115:\"153 285Q153 349 197 395T311 442Q355 442 386 420T418 356Q418 321 401 308T365 294Q336 294 331 326Q331 336 334 345T343 359T353 368T362 374L366 376Q365 379 362 383T344 396T308 404Q265 404 246 377T226 325T244 289T287 275T339 258T383 212Q395 188 395 163Q395 132 379 95T333 32Q279 -11 207 -11Q154 -11 115 13T76 86Q76 108 83 123T102 145T121 153T135 156Q154 156 164 145T175 117Q175 82 142 66L132 62Q131 62 131 61Q131 57 139 49T166 34T210 26Q250 26 277 44T312 83T321 123Q321 153 301 166T248 185T204 198Q176 211 162 241Q153 258 153 285\",116:\"94 385Q87 392 87 395Q87 399 90 411T95 425Q97 430 103 430T149 431H196L215 511Q218 521 222 539T228 565T234 585T242 603T251 615T264 623T281 626Q311 626 315 597Q315 591 296 513T275 433Q275 431 320 431H366Q373 424 373 420Q373 398 360 385H263L189 86Q188 80 188 61V54Q188 29 201 27Q213 23 229 30Q253 37 276 66T316 138Q321 149 324 151T342 153H347Q364 153 364 146T360 130Q331 63 290 26T202 -11Q158 -11 135 18T111 81Q111 93 129 168T166 314L184 383Q184 385 139 385H94\",117:\"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q301 26 324 43T358 77T369 99Q369 102 406 249T446 404Q460 431 490 431T522 402Q522 394 485 245T446 89Q443 74 443 56Q443 28 461 26Q487 26 507 86Q524 130 524 146Q524 147 530 153H547Q570 153 570 144Q570 138 561 109T544 62Q530 29 512 12Q492 -11 454 -11Q429 -9 410 2T385 23T376 41L363 28Q350 16 325 3T269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287\",118:\"387 386Q387 407 406 425T445 443Q466 443 479 423T492 371Q492 330 473 253Q411 18 307 -8Q298 -10 279 -10Q208 -10 179 26T149 114Q149 162 185 261T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 337 259 245T226 102Q226 26 285 26Q328 26 360 72T422 237Q429 265 429 290Q428 324 408 349T387 386\",119:\"591 386Q591 407 610 425T649 443Q670 443 683 423T696 371Q696 327 672 232T621 85Q575 -11 493 -11Q469 -11 449 -6T418 8T398 24T386 38L382 43Q347 -10 293 -10H286Q221 -10 186 21T150 115Q150 164 185 262T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 336 260 246T227 108Q227 26 292 26H295Q332 26 361 93L366 103V119Q366 122 367 133T369 150Q372 167 401 282T433 404Q446 431 477 431Q507 431 509 402Q509 396 500 358T474 254T446 140Q444 126 444 104V92Q444 66 459 46T502 26H505Q527 28 545 43T577 88T602 149T623 226Q633 265 633 290Q632 324 612 349T591 386\",120:\"275 356Q275 383 262 394T233 405Q196 405 166 371T121 289Q119 280 116 279T98 278H81Q77 282 76 283T75 288T78 300Q88 332 109 363T153 411Q195 442 235 442Q306 442 333 386Q373 442 427 442Q461 442 487 421T513 364T494 312T453 296Q436 296 425 305T414 331Q414 352 424 366T446 386L456 390Q448 404 421 404H418Q382 404 358 341Q355 332 328 227T298 105Q295 90 295 75Q295 26 339 26Q365 26 388 43T424 82T444 123T451 146L457 153H474Q490 153 493 152T496 144Q496 133 486 110T456 58T404 10T333 -11Q276 -11 237 45Q197 -11 146 -11Q108 -11 83 10T58 67Q58 99 76 117T119 135Q136 135 147 124T158 96Q158 89 157 85Q149 57 125 45L115 41Q125 26 151 26Q171 26 187 45T214 93Q217 102 244 210T273 330Q275 339 275 356\",121:\"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q325 26 367 93L405 245Q442 393 446 404Q460 431 490 431T522 402Q522 400 416 -24Q389 -102 327 -153T196 -205Q152 -205 122 -181T91 -119Q91 -84 110 -67T152 -49Q170 -49 180 -60T191 -87Q191 -108 174 -128Q167 -134 157 -138T146 -144Q155 -153 159 -156T173 -163T199 -167Q229 -167 255 -149T297 -105T325 -52T342 -6T347 15Q315 -10 269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287\",122:\"160 317Q158 317 155 317Q136 317 136 324Q136 351 171 396T260 442Q292 442 321 410T365 375H369Q384 375 404 408L425 441Q427 442 444 442H460Q466 436 466 434Q466 419 426 367Q387 314 294 222T178 105L170 95L181 94Q198 93 236 81T295 68Q328 68 356 89T395 141Q398 150 401 151T419 153Q441 153 441 144Q441 110 394 50T282 -11Q251 -11 221 23T171 57Q157 57 143 47T121 26T104 3T95 -10Q93 -11 76 -11H60Q54 -5 54 -2Q54 3 61 14Q103 88 233 215Q349 329 349 338L302 351Q269 362 247 362Q227 362 212 356T192 342T183 327T178 320Q175 317 160 317\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texMathit=void 0,e.texMathit={65:[.716,0,.743],66:[.683,0,.704],67:[.705,.021,.716],68:[.683,0,.755],69:[.68,0,.678],70:[.68,0,.653],71:[.705,.022,.774],72:[.683,0,.743],73:[.683,0,.386],74:[.683,.021,.525],75:[.683,0,.769],76:[.683,0,.627],77:[.683,0,.897],78:[.683,0,.743],79:[.704,.022,.767],80:[.683,0,.678],81:[.704,.194,.767],82:[.683,.022,.729],83:[.705,.022,.562],84:[.677,0,.716],85:[.683,.022,.743],86:[.683,.022,.743],87:[.683,.022,.999],88:[.683,0,.743],89:[.683,0,.743],90:[.683,0,.613],97:[.442,.011,.511],98:[.694,.011,.46],99:[.441,.01,.46],100:[.694,.011,.511],101:[.442,.01,.46],102:[.705,.204,.307],103:[.442,.205,.46],104:[.694,.011,.511],105:[.656,.01,.307],106:[.656,.204,.307],107:[.694,.011,.46],108:[.694,.011,.256],109:[.442,.011,.818],110:[.442,.011,.562],111:[.442,.011,.511],112:[.442,.194,.511],113:[.442,.194,.46],114:[.442,.011,.422],115:[.442,.011,.409],116:[.626,.011,.332],117:[.441,.011,.537],118:[.443,.01,.46],119:[.443,.011,.664],120:[.442,.011,.464],121:[.441,.205,.486],122:[.442,.011,.409]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyleBold=void 0;var r=Q(6),T=Q(256);e.texOldstyleBold=r.AddPaths(T.texOldstyleBold,{48:\"259 460H279Q352 460 403 444T491 378Q528 320 528 219Q528 100 475 45Q417 -17 287 -17Q152 -17 99 44T46 219Q46 246 47 265T57 318T82 376T131 422T210 454Q234 460 259 460ZM389 229V271Q389 351 371 380T280 409Q232 409 208 385Q194 371 190 345T185 229V210Q185 108 194 83Q208 35 287 35Q317 35 336 42Q372 55 380 85T389 204V229\",49:\"119 417Q191 417 240 428T310 450T338 461Q353 461 357 452T361 400Q361 389 361 342T360 254V62H420H456Q483 62 488 58T494 35V29Q494 13 491 7T473 0Q468 0 424 1T295 2T167 1T117 0Q114 0 111 0T107 1Q96 8 96 27V35Q96 54 102 58T140 62H170H229V213Q229 363 228 363Q220 360 196 358T150 356L130 355H93Q84 360 82 365T80 386Q80 404 81 407T95 417H119\",50:\"214 399Q202 399 191 398T175 395T170 392L171 390Q172 389 174 386T178 379T181 369T182 355Q182 328 165 312T123 296Q99 296 82 312T64 356Q64 397 105 428T253 460Q301 460 337 456T411 441T476 403T514 338Q516 328 516 310V304Q516 257 470 227Q456 217 427 205T376 184L354 176Q350 174 325 162T277 139L254 128Q414 129 428 130H439Q450 148 453 166T460 188T486 193H493Q515 193 517 178Q517 171 502 94T484 11Q481 3 472 2T410 0H269Q65 0 62 2Q55 5 53 10T51 32Q51 54 56 58Q60 62 173 131Q296 207 318 224Q368 264 368 308Q368 342 342 363T283 392T214 399\",51:\"80 309Q80 367 131 414T276 461Q388 461 441 417T494 313Q494 265 463 223T373 155L361 151L376 147Q436 132 480 92T525 -15T487 -127T393 -192T274 -211Q179 -211 114 -167T48 -53Q48 -18 69 5T128 29Q168 29 188 5T208 -50Q208 -59 207 -67T203 -81T197 -92T190 -101T183 -109T177 -114T170 -118L167 -121Q160 -125 164 -127Q167 -129 176 -133Q215 -152 268 -152H273Q337 -152 356 -92Q364 -69 364 -14Q364 45 352 74T303 120Q287 125 240 125H230Q201 125 196 127T191 146V152Q192 170 196 173T233 178Q234 178 241 178T252 179T262 181T274 183T285 188T297 195T308 205T319 218T328 235T337 257Q345 280 345 320V330Q345 345 343 355T335 379T312 399T270 407Q226 407 177 377Q226 356 226 310Q226 270 204 253T153 235Q123 235 102 253T80 309\",52:\"180 0Q155 0 124 0T84 -1Q48 -1 40 3T32 27V37Q32 59 34 63T204 265T377 465Q380 468 383 468H387Q391 468 398 468T411 469Q432 469 438 468T449 459Q451 455 451 258V62H489H498Q531 62 536 58T542 31Q542 9 537 5T504 0H489H451V-132H489H498Q530 -132 536 -136T542 -163Q542 -181 538 -187T522 -194Q518 -194 483 -193T378 -192Q281 -192 256 -193L217 -194Q203 -189 203 -169V-163V-158Q203 -140 209 -136T246 -132H265H314V0H180ZM325 62V320L105 63L215 62H325\",53:\"131 29Q159 26 175 12T194 -13T197 -35V-41Q197 -58 195 -66Q191 -76 185 -84T173 -97T161 -105T152 -109L148 -110Q148 -112 158 -121T195 -141T252 -152Q274 -152 280 -151Q335 -137 349 -104T363 9Q363 85 356 114T322 157Q305 166 286 166Q251 166 223 154T182 131T162 109Q154 98 150 96T130 93Q107 93 102 104Q100 107 100 279V371V424Q100 461 110 461Q114 461 123 458T149 450T183 441Q234 429 286 429Q313 429 340 432T387 440T422 449T447 457T458 461Q472 461 472 435Q472 420 470 418Q464 405 438 379T352 325T226 297Q189 297 171 301H168V182Q169 182 174 185T190 194T213 205T248 213T292 217Q391 217 454 159T517 5Q517 -92 444 -151T255 -211Q167 -211 112 -160T57 -44Q57 -12 76 8T131 29\",54:\"48 316Q48 398 70 462T124 562T198 621T274 652T339 660Q377 660 384 659Q497 632 497 532Q497 507 482 487T431 466Q397 466 381 486T365 530Q365 569 405 593Q382 603 381 603Q361 607 350 607Q316 607 279 589T221 533Q199 489 196 385L195 370Q196 371 203 379T217 395T237 410T263 424Q283 431 313 431Q409 431 468 368Q526 310 526 208Q526 131 492 81T405 5Q359 -17 289 -17Q256 -17 227 -11T163 17T105 73T65 170T48 316ZM293 380Q244 380 220 331T196 212Q196 104 216 80Q240 41 292 41Q295 41 301 41T309 42Q338 46 355 62Q372 81 375 108T379 230Q378 314 372 333Q358 375 299 380H293\",55:\"95 210H88Q66 210 64 225Q64 229 82 345T102 465Q106 476 125 476H131Q162 476 162 458Q162 451 213 448Q221 448 238 447T260 446Q261 446 410 444Q436 444 468 444T509 445Q544 445 551 440T558 413V404Q558 395 547 380T478 301L392 202Q354 150 339 81T321 -104V-132Q321 -187 286 -203Q273 -211 255 -211Q236 -211 217 -199T190 -160Q189 -153 189 -130Q194 17 282 156Q309 200 370 270Q404 307 400 307H293Q151 306 146 303Q140 300 132 259T120 215Q115 210 95 210\",56:\"48 164Q48 199 59 228T92 277T128 307T163 329Q159 332 155 336Q135 346 110 382Q80 427 80 477Q80 564 147 620Q202 660 264 660Q266 660 275 660T290 661Q384 661 439 619T494 506Q494 486 489 468T477 437T459 413T440 395T421 380T406 370L410 368Q414 365 421 361T437 351T456 335T476 316T495 291T511 262T522 228T526 189Q526 93 460 38T282 -17Q242 -17 205 -9T130 19T71 75T48 164ZM406 506Q406 545 379 576T283 607Q218 606 193 585T168 536Q168 522 172 513T195 490T224 471T275 443L346 403Q406 446 406 506ZM291 42Q365 42 395 70T425 134V141Q425 170 401 190T319 242Q308 248 302 251Q286 260 266 271T235 288L225 294Q222 292 217 289T198 274T175 249T157 212T148 163Q148 116 179 79T291 42\",57:\"175 -140Q198 -152 236 -152Q294 -152 332 -116Q356 -91 366 -54T379 62V78L376 74Q372 70 366 64T352 50T333 35T308 23Q289 17 262 17Q168 17 108 77T48 235Q48 273 59 317Q81 381 141 421T276 461Q279 461 285 461T295 460Q326 460 354 454T415 426T471 371T510 277T526 136Q526 42 501 -28T432 -136T341 -192T240 -210Q199 -210 169 -201T121 -178T94 -146T80 -112T77 -82Q77 -51 95 -33T143 -15Q170 -15 189 -33T209 -81Q209 -116 175 -140ZM377 244V274Q377 300 376 316T368 352T348 384T312 405Q307 406 283 406Q257 406 238 396T213 376T205 361Q196 341 196 259V233V181Q196 122 211 96T278 69H298Q330 82 345 104Q367 134 376 190Q377 200 377 244\",65:\"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266\",66:\"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83\",67:\"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20\",68:\"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391\",69:\"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516\",70:\"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567\",71:\"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279\",72:\"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447\",73:\"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499\",74:\"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390\",75:\"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142\",76:\"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17\",77:\"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20\",78:\"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47\",79:\"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433\",80:\"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468\",81:\"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453\",82:\"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0\",83:\"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476\",84:\"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462\",85:\"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586\",86:\"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608\",87:\"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607\",88:\"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562\",89:\"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555\",90:\"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyleBold=void 0,e.texOldstyleBold={48:[.46,.017,.575],49:[.461,0,.575],50:[.46,0,.575],51:[.461,.211,.575],52:[.469,.194,.575],53:[.461,.211,.575],54:[.66,.017,.575],55:[.476,.211,.575],56:[.661,.017,.575],57:[.461,.21,.575],65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyle=void 0;var r=Q(6),T=Q(258);e.texOldstyle=r.AddPaths(T.texOldstyle,{48:\"39 213Q39 274 53 319T89 389T139 429T192 448T242 452Q347 452 400 400Q460 335 460 213Q460 -22 250 -22Q39 -22 39 213ZM364 242Q364 279 363 301T355 348T338 385T306 406T254 415Q250 415 245 415T238 416Q217 416 190 404T150 368Q136 339 136 221Q136 114 146 78T200 23Q219 16 250 16Q280 16 299 23Q341 41 352 77T364 221V242\",49:\"116 410Q176 412 215 423T269 443T288 453H291Q293 453 301 447V254Q301 62 303 60Q307 52 322 49T394 46Q418 46 422 43T426 23Q426 8 424 4T411 0Q407 0 369 1T258 2T148 1T106 0Q96 0 94 4T91 23Q91 40 95 43T123 46Q180 46 195 49T215 61Q216 63 216 220V376Q192 367 119 364H93L86 371V403L92 410H116\",50:\"55 334Q55 386 105 419T236 453Q333 453 390 413T448 307Q448 278 437 256T406 218T365 193T318 172T277 151L248 134Q219 118 191 102T163 84T267 83L382 85H391Q399 99 406 126Q410 143 413 145T429 148Q440 148 442 147T449 139Q449 137 435 73T420 7Q420 6 414 0H233Q94 0 71 0T46 5Q46 5 46 6Q44 8 44 24Q44 39 46 41Q47 44 98 78T212 155T294 212Q347 257 347 304Q347 354 306 380T203 407Q150 407 120 377Q118 375 123 373Q146 362 146 332Q146 315 133 302T101 288Q85 288 70 298T55 334\",51:\"69 312Q69 377 122 414T233 452Q333 452 381 409T430 313Q430 268 402 223T311 149L301 144Q307 143 317 140T355 123T402 92T439 44T456 -25Q456 -101 396 -158T241 -216Q154 -216 98 -173T42 -68Q42 -58 44 -50T50 -35T57 -25T66 -17T75 -13T82 -10L87 -8Q92 -7 102 -7Q132 -7 147 -25T162 -66Q162 -112 118 -125L113 -126Q113 -129 127 -140T173 -162T239 -173Q268 -173 292 -158Q345 -124 345 -24Q345 33 329 67Q298 125 229 125H210H172Q166 131 166 142Q166 159 172 161Q178 161 208 164T244 169Q251 169 263 176T291 199T316 245T327 314Q327 413 238 413Q182 413 130 369Q177 350 181 312Q181 289 166 273T125 257Q102 257 86 272T69 312\",52:\"163 0Q139 0 109 0T71 -1Q43 -1 36 2T28 15V27V46L190 270Q325 457 330 462Q333 464 352 464H371L377 458V46H464L471 40V6L464 0H377V-65V-108Q377 -131 379 -137T391 -144Q409 -148 446 -148H464Q468 -151 471 -155V-187L464 -194H453Q395 -192 325 -192Q222 -192 210 -194H199L193 -188V-154L199 -148H228Q241 -148 250 -148T265 -146T275 -145T281 -143T284 -141T286 -138T289 -134V0H163ZM295 46V350L75 46H295\",53:\"159 -44Q159 -66 145 -80T109 -96H102L107 -105Q148 -173 228 -173Q255 -173 280 -162Q351 -128 351 -6V8Q351 67 344 98T316 151Q288 176 255 176Q175 176 136 109Q129 100 114 100Q97 100 95 106Q93 110 93 277V403Q93 451 98 451Q100 452 103 452Q105 452 124 445T177 431T251 423Q294 423 328 430T380 445T401 453Q410 453 410 435V422Q332 331 203 331Q152 331 140 339Q139 339 139 254V168Q194 214 256 214Q332 214 390 154T448 0Q448 -95 381 -155T229 -216Q153 -216 104 -166T50 -49Q50 -15 66 -1T105 13Q128 13 143 -3T159 -44\",54:\"42 313Q42 401 68 472T133 583T215 644T296 665H304Q317 665 329 664T360 657T393 640T418 608T432 557Q432 533 422 519T401 502T380 498Q358 498 343 512T328 550Q328 591 367 601L372 602Q372 604 365 609T341 620T307 626Q260 626 226 600T174 537Q147 483 143 376V356Q192 434 266 434Q317 434 357 409Q406 375 435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM251 396Q211 396 178 354T145 217Q145 159 152 122T166 73T187 47Q216 21 252 21Q294 21 321 47Q342 68 349 99T356 203V232Q356 264 354 285T345 331T322 373T280 395Q274 396 251 396\",55:\"75 246Q64 246 62 247T55 255Q55 259 72 357T90 458L94 462H99Q104 463 109 463H121Q128 460 128 452Q128 445 134 441T165 435T233 432T356 431H478L485 425V392L414 298Q408 290 385 260T358 223T337 191T317 154T302 116T289 68T282 14T275 -55T274 -137Q274 -173 272 -177Q262 -216 223 -216Q170 -216 170 -157V-148Q172 -78 189 -12T237 109T288 196T338 266Q345 275 348 279Q395 340 395 342Q396 343 376 343T274 343Q122 342 117 339T103 294T90 248Q88 246 75 246\",56:\"69 496Q69 570 124 618T247 666Q321 666 375 624T429 515Q429 468 405 433T320 361L346 344Q385 320 403 301T439 250Q456 212 456 181V172V160Q456 141 449 119T426 71T386 26T326 -8T246 -21Q160 -21 102 30T43 155Q43 265 167 332L176 337L161 347Q105 384 87 423Q69 458 69 496ZM371 513Q371 567 334 596T249 626Q198 626 163 598T127 532Q127 521 129 511T138 492T150 476T167 460T185 447T207 433T228 420L284 384L294 391Q346 424 363 469Q371 486 371 513ZM190 21T250 21T351 56T393 140Q393 180 362 213Q354 221 317 246T246 292L212 313Q210 313 200 307T173 287T142 256T117 212T106 157Q106 100 148 61\",57:\"171 -101Q171 -118 163 -130T146 -146T134 -151Q132 -151 132 -152Q132 -154 140 -159T167 -168T206 -173Q274 -173 317 -108Q356 -50 356 79V86L350 77Q308 9 231 9Q150 9 92 81Q42 141 42 228Q42 289 64 333Q93 390 142 421T235 452Q237 452 244 452T255 453Q289 453 321 439T386 391T437 290T457 128Q457 -29 381 -122T206 -216Q148 -216 108 -187T67 -104Q67 -75 84 -62T119 -49Q141 -49 156 -63T171 -101ZM242 46Q293 46 324 94T355 223Q355 323 337 356Q316 401 275 410Q267 412 248 412Q206 412 179 386Q155 360 149 328T143 224Q143 120 163 88Q192 46 242 46\",65:\"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249\",66:\"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342\",67:\"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25\",68:\"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407\",69:\"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470\",70:\"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579\",71:\"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68\",72:\"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487\",73:\"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0\",74:\"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78\",75:\"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429\",76:\"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11\",77:\"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9\",78:\"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705\",79:\"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428\",80:\"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475\",81:\"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286\",82:\"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475\",83:\"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512\",84:\"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475\",85:\"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592\",86:\"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633\",87:\"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633\",88:\"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324\",89:\"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599\",90:\"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texOldstyle=void 0,e.texOldstyle={48:[.452,.022,.5],49:[.453,0,.5],50:[.453,0,.5],51:[.452,.216,.5],52:[.464,.194,.5],53:[.453,.216,.5],54:[.665,.022,.5],55:[.463,.216,.5],56:[.666,.021,.5],57:[.453,.216,.5],65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize3=void 0;var r=Q(6),T=Q(260);e.texSize3=r.AddPaths(T.texSize3,{40:\"701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940\",41:\"34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438\",47:\"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949\",91:\"247 -949V1450H516V1388H309V-887H516V-949H247\",92:\"988 -922Q988 -933 980 -941T962 -949Q947 -949 940 -938Q936 -934 645 -155L204 1020Q56 1416 56 1424Q56 1433 62 1441T84 1450Q97 1448 103 1439Q107 1435 398 656L839 -519Q988 -918 988 -922\",93:\"11 1388V1450H280V-949H11V-887H218V1388H11\",123:\"618 -943L612 -949H582L568 -943Q472 -903 411 -841T332 -703Q327 -682 327 -653T325 -350Q324 -28 323 -18Q317 24 301 61T264 124T221 171T179 205T147 225T132 234Q130 238 130 250Q130 255 130 258T131 264T132 267T134 269T139 272T144 275Q207 308 256 367Q310 436 323 519Q324 529 325 851Q326 1124 326 1154T332 1205Q369 1358 566 1443L582 1450H612L618 1444V1429Q618 1413 616 1411L608 1406Q599 1402 585 1393T552 1372T515 1343T479 1305T449 1257T429 1200Q425 1180 425 1152T423 851Q422 579 422 549T416 498Q407 459 388 424T346 364T297 318T250 284T214 264T197 254L188 251L205 242Q290 200 345 138T416 3Q421 -18 421 -48T423 -349Q423 -397 423 -472Q424 -677 428 -694Q429 -697 429 -699Q434 -722 443 -743T465 -782T491 -816T519 -845T548 -868T574 -886T595 -899T610 -908L616 -910Q618 -912 618 -928V-943\",125:\"131 1414T131 1429T133 1447T148 1450H153H167L182 1444Q276 1404 336 1343T415 1207Q421 1184 421 1154T423 851L424 531L426 517Q434 462 460 415T518 339T571 296T608 274Q615 270 616 267T618 251Q618 241 618 238T615 232T608 227Q542 194 491 132T426 -15L424 -29L423 -350Q422 -622 422 -652T415 -706Q397 -780 337 -841T182 -943L167 -949H153Q137 -949 134 -946T131 -928Q131 -914 132 -911T144 -904Q146 -903 148 -902Q299 -820 323 -680Q324 -663 325 -349T327 -19Q355 145 541 241L561 250L541 260Q356 355 327 520Q326 537 325 850T323 1181Q315 1227 293 1267T244 1332T193 1374T151 1401T132 1413Q131 1414 131 1429\",710:\"1439 564Q1434 564 1080 631T722 698Q719 698 362 631Q7 564 4 564L0 583Q-4 602 -4 603L720 772L1083 688Q1446 603 1447 603Q1447 602 1443 583L1439 564\",732:\"1 643Q1 646 76 671T271 722T476 749Q555 749 626 736T742 706T856 676T999 662Q1088 662 1192 684T1363 727T1432 749Q1432 745 1437 731T1442 716Q1442 714 1381 693T1212 645T1012 611Q1000 610 955 610Q851 610 701 653T444 697Q355 697 251 676T80 632T11 610Q11 614 6 628T1 643\",770:\"-5 564Q-9 564 -363 631T-722 698Q-725 698 -1082 631Q-1437 564 -1440 564L-1444 583Q-1448 602 -1448 603L-724 772L-361 688Q2 603 3 603Q3 602 -1 583L-5 564\",771:\"-1443 643Q-1443 646 -1368 671T-1173 722T-968 749Q-889 749 -818 736T-702 706T-588 676T-445 662Q-356 662 -252 684T-81 727T-12 749Q-12 745 -7 731T-2 716Q-2 714 -63 693T-232 645T-432 611Q-444 610 -489 610Q-593 610 -743 653T-1000 697Q-1089 697 -1193 676T-1364 632T-1433 610Q-1433 614 -1438 628T-1443 643\",8260:\"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949\",8730:\"424 -948Q422 -947 313 -434T202 80L170 31Q165 24 157 10Q137 -21 137 -21Q131 -16 124 -8L111 5L264 248L473 -720Q473 -717 727 359T983 1440Q989 1450 1001 1450Q1007 1450 1013 1445T1020 1433Q1020 1425 742 244T460 -941Q458 -950 439 -950H436Q424 -950 424 -948\",8968:\"246 -949V1450H571V1388H308V-949H246\",8969:\"11 1388V1450H336V-949H274V1388H11\",8970:\"246 -949V1450H308V-887H571V-949H246\",8971:\"274 -887V1450H336V-949H11V-887H274\",9001:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",9002:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\",10216:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",10217:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\",12296:\"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242\",12297:\"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize3=void 0,e.texSize3={40:[1.45,.949,.736],41:[1.45,.949,.736],47:[1.45,.949,1.044],91:[1.45,.949,.528],92:[1.45,.949,1.044],93:[1.45,.949,.528],123:[1.45,.949,.75],125:[1.45,.949,.75],710:[.772,-.564,1.444],732:[.749,-.61,1.444],770:[.772,-.564,0],771:[.749,-.61,0],8260:[1.45,.949,1.044],8730:[1.45,.95,1,{ic:.02}],8968:[1.45,.949,.583],8969:[1.45,.949,.583],8970:[1.45,.949,.583],8971:[1.45,.949,.583],9001:[1.45,.95,.75],9002:[1.45,.949,.75],10216:[1.45,.95,.75],10217:[1.45,.949,.75],12296:[1.45,.95,.75],12297:[1.45,.949,.75]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize4=void 0;var r=Q(6),T=Q(262);e.texSize4=r.AddPaths(T.texSize4,{40:\"758 -1237T758 -1240T752 -1249H736Q718 -1249 717 -1248Q711 -1245 672 -1199Q237 -706 237 251T672 1700Q697 1730 716 1749Q718 1750 735 1750H752Q758 1744 758 1741Q758 1737 740 1713T689 1644T619 1537T540 1380T463 1176Q348 802 348 251Q348 -242 441 -599T744 -1218Q758 -1237 758 -1240\",41:\"33 1741Q33 1750 51 1750H60H65Q73 1750 81 1743T119 1700Q554 1207 554 251Q554 -707 119 -1199Q76 -1250 66 -1250Q65 -1250 62 -1250T56 -1249Q55 -1249 53 -1249T49 -1250Q33 -1250 33 -1239Q33 -1236 50 -1214T98 -1150T163 -1052T238 -910T311 -727Q443 -335 443 251Q443 402 436 532T405 831T339 1142T224 1438T50 1716Q33 1737 33 1741\",47:\"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738\",91:\"269 -1249V1750H577V1677H342V-1176H577V-1249H269\",92:\"56 1720Q56 1732 64 1741T85 1750Q104 1750 111 1738Q113 1734 666 264T1220 -1214Q1220 -1215 1220 -1217T1221 -1220Q1221 -1231 1212 -1240T1191 -1249Q1175 -1249 1166 -1237Q1164 -1233 611 237T57 1715Q57 1716 56 1718V1720\",93:\"5 1677V1750H313V-1249H5V-1176H240V1677H5\",123:\"661 -1243L655 -1249H622L604 -1240Q503 -1190 434 -1107T348 -909Q346 -897 346 -499L345 -98L343 -82Q335 3 287 87T157 223Q146 232 145 236Q144 240 144 250Q144 265 145 268T157 278Q242 333 288 417T343 583L345 600L346 1001Q346 1398 348 1410Q379 1622 600 1739L622 1750H655L661 1744V1727V1721Q661 1712 661 1710T657 1705T648 1700T630 1690T602 1668Q589 1659 574 1643T531 1593T484 1508T459 1398Q458 1389 458 1001Q458 614 457 605Q441 435 301 316Q254 277 202 251L250 222Q260 216 301 185Q443 66 457 -104Q458 -113 458 -501Q458 -888 459 -897Q463 -944 478 -988T509 -1060T548 -1114T580 -1149T602 -1167Q620 -1183 634 -1192T653 -1202T659 -1207T661 -1220V-1226V-1243\",125:\"144 1727Q144 1743 146 1746T162 1750H167H183L203 1740Q274 1705 325 1658T403 1562T440 1478T456 1410Q458 1398 458 1001Q459 661 459 624T465 558Q470 526 480 496T502 441T529 395T559 356T588 325T615 301T637 284T654 273L660 269V266Q660 263 660 259T661 250V239Q661 236 661 234T660 232T656 229T649 224Q577 179 528 105T465 -57Q460 -86 460 -123T458 -499V-661Q458 -857 457 -893T447 -955Q425 -1048 359 -1120T203 -1239L183 -1249H168Q150 -1249 147 -1246T144 -1226Q144 -1213 145 -1210T153 -1202Q169 -1193 186 -1181T232 -1140T282 -1081T322 -1000T345 -897Q346 -888 346 -501Q346 -113 347 -104Q359 58 503 184Q554 226 603 250Q504 299 430 393T347 605Q346 614 346 1002Q346 1389 345 1398Q338 1493 288 1573T153 1703Q146 1707 145 1710T144 1727\",710:\"5 561Q-4 561 -9 582T-14 618Q-14 623 -13 625Q-11 628 461 736T943 845Q945 845 1417 738T1896 628Q1902 628 1902 618Q1902 607 1897 584T1883 561Q1881 561 1412 654L945 750L476 654Q6 561 5 561\",732:\"1212 583Q1124 583 1048 603T923 647T799 691T635 711Q524 711 375 679T120 615L16 583Q14 584 12 587T9 592Q-2 650 2 659Q2 669 38 687Q54 696 146 723T309 767Q527 823 666 823Q759 823 837 803T964 759T1088 715T1252 695Q1363 695 1512 727T1764 791T1871 823Q1872 822 1874 819T1878 814Q1885 783 1885 753Q1885 748 1884 747Q1884 738 1849 719Q1836 712 1740 682T1484 617T1212 583\",770:\"-1884 561Q-1893 561 -1898 582T-1903 618Q-1903 623 -1902 625Q-1900 628 -1428 736T-946 845Q-944 845 -472 738T7 628Q13 628 13 618Q13 607 8 584T-6 561Q-8 561 -477 654L-944 750L-1413 654Q-1883 561 -1884 561\",771:\"-677 583Q-765 583 -841 603T-966 647T-1090 691T-1254 711Q-1365 711 -1514 679T-1768 615L-1873 583Q-1875 584 -1877 587T-1880 592Q-1891 650 -1887 659Q-1887 669 -1851 687Q-1835 696 -1743 723T-1580 767Q-1362 823 -1223 823Q-1130 823 -1052 803T-925 759T-801 715T-637 695Q-526 695 -377 727T-125 791T-18 823Q-17 822 -15 819T-11 814Q-4 782 -4 753Q-4 748 -5 747Q-5 738 -40 719Q-53 712 -149 682T-405 617T-677 583\",8260:\"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738\",8730:\"983 1739Q988 1750 1001 1750Q1008 1750 1013 1745T1020 1733Q1020 1726 742 244T460 -1241Q458 -1250 439 -1250H436Q424 -1250 424 -1248L410 -1166Q395 -1083 367 -920T312 -601L201 44L137 -83L111 -57L187 96L264 247Q265 246 369 -357Q470 -958 473 -963L727 384Q979 1729 983 1739\",8968:\"269 -1249V1750H633V1677H342V-1249H269\",8969:\"5 1677V1750H369V-1249H296V1677H5\",8970:\"269 -1249V1750H342V-1176H633V-1249H269\",8971:\"296 -1176V1750H369V-1249H5V-1176H296\",9001:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",9002:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",9115:\"837 1154Q843 1148 843 1145Q843 1141 818 1106T753 1002T667 841T574 604T494 299Q417 -84 417 -609Q417 -641 416 -647T411 -654Q409 -655 366 -655Q299 -655 297 -654Q292 -652 292 -643T291 -583Q293 -400 304 -242T347 110T432 470T574 813T785 1136Q787 1139 790 1142T794 1147T796 1150T799 1152T802 1153T807 1154T813 1154H819H837\",9116:\"413 -9Q412 -9 407 -9T388 -10T354 -10Q300 -10 297 -9Q294 -8 293 -5Q291 5 291 127V300Q291 602 292 605L296 609Q298 610 366 610Q382 610 392 610T407 610T412 609Q416 609 416 592T417 473V127Q417 -9 413 -9\",9117:\"843 -635Q843 -638 837 -644H820Q801 -644 800 -643Q792 -635 785 -626Q684 -503 605 -363T473 -75T385 216T330 518T302 809T291 1093Q291 1144 291 1153T296 1164Q298 1165 366 1165Q409 1165 411 1164Q415 1163 416 1157T417 1119Q417 529 517 109T833 -617Q843 -631 843 -635\",9118:\"31 1143Q31 1154 49 1154H59Q72 1154 75 1152T89 1136Q190 1013 269 873T401 585T489 294T544 -8T572 -299T583 -583Q583 -634 583 -643T577 -654Q575 -655 508 -655Q465 -655 463 -654Q459 -653 458 -647T457 -609Q457 -58 371 340T100 1037Q87 1059 61 1098T31 1143\",9119:\"579 -9Q578 -9 573 -9T554 -10T520 -10Q466 -10 463 -9Q460 -8 459 -5Q457 5 457 127V300Q457 602 458 605L462 609Q464 610 532 610Q548 610 558 610T573 610T578 609Q582 609 582 592T583 473V127Q583 -9 579 -9\",9120:\"56 -644H50Q31 -644 31 -635Q31 -632 37 -622Q69 -579 100 -527Q286 -228 371 170T457 1119Q457 1161 462 1164Q464 1165 520 1165Q575 1165 577 1164Q582 1162 582 1153T583 1093Q581 910 570 752T527 400T442 40T300 -303T89 -626Q78 -640 75 -642T61 -644H56\",9121:\"319 -645V1154H666V1070H403V-645H319\",9122:\"319 0V602H403V0H319\",9123:\"319 -644V1155H403V-560H666V-644H319\",9124:\"0 1070V1154H347V-645H263V1070H0\",9125:\"263 0V602H347V0H263\",9126:\"263 -560V1155H347V-644H0V-560H263\",9127:\"712 899L718 893V876V865Q718 854 704 846Q627 793 577 710T510 525Q510 524 509 521Q505 493 504 349Q504 345 504 334Q504 277 504 240Q504 -2 503 -4Q502 -8 494 -9T444 -10Q392 -10 390 -9Q387 -8 386 -5Q384 5 384 230Q384 262 384 312T383 382Q383 481 392 535T434 656Q510 806 664 892L677 899H712\",9128:\"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 924Q504 691 503 682Q494 549 425 439T243 259L229 250L243 241Q349 175 421 66T503 -182Q504 -191 504 -424Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -425V-282Q384 -176 377 -116T342 10Q325 54 301 92T255 155T214 196T183 222T171 232Q170 233 170 250T171 268Q171 269 191 284T240 331T300 407T354 524T383 679Q384 691 384 925Q384 1152 385 1155L389 1159\",9129:\"718 -893L712 -899H677L666 -893Q542 -825 468 -714T385 -476Q384 -466 384 -282Q384 3 385 5L389 9Q392 10 444 10Q486 10 494 9T503 4Q504 2 504 -239V-310V-366Q504 -470 508 -513T530 -609Q546 -657 569 -698T617 -767T661 -812T699 -843T717 -856T718 -876V-893\",9130:\"384 150V266Q384 304 389 309Q391 310 455 310Q496 310 498 309Q502 308 503 298Q504 283 504 150Q504 32 504 12T499 -9H498Q496 -10 444 -10T390 -9Q386 -8 385 2Q384 17 384 150\",9131:\"170 875Q170 892 172 895T189 899H194H211L222 893Q345 826 420 715T503 476Q504 467 504 230Q504 51 504 21T499 -9H498Q496 -10 444 -10Q402 -10 394 -9T385 -4Q384 -2 384 240V311V366Q384 469 380 513T358 609Q342 657 319 698T271 767T227 812T189 843T171 856T170 875\",9132:\"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 925V782Q504 676 511 616T546 490Q563 446 587 408T633 345T674 304T705 278T717 268Q718 267 718 250T717 232Q717 231 697 216T648 169T588 93T534 -24T505 -179Q504 -191 504 -425Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -424Q384 -191 385 -182Q394 -49 463 61T645 241L659 250L645 259Q539 325 467 434T385 682Q384 692 384 873Q384 1153 385 1155L389 1159\",9133:\"384 -239V-57Q384 4 389 9Q391 10 455 10Q496 10 498 9Q501 8 502 5Q504 -5 504 -230Q504 -261 504 -311T505 -381Q505 -486 492 -551T435 -691Q357 -820 222 -893L211 -899H195Q176 -899 173 -896T170 -874Q170 -858 171 -855T184 -846Q262 -793 312 -709T378 -525Q378 -524 379 -522Q383 -493 384 -351Q384 -345 384 -334Q384 -276 384 -239\",9143:\"742 -871Q740 -873 737 -876T733 -880T730 -882T724 -884T714 -885H702L222 569L180 484Q138 399 137 399Q131 404 124 412L111 425L265 736L702 -586V168L703 922Q713 935 722 935Q734 935 742 920V-871\",10216:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",10217:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",12296:\"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242\",12297:\"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714\",57344:\"722 -14H720Q708 -14 702 0V306L703 612Q713 625 722 625Q734 625 742 610V0Q734 -14 724 -14H722\",57345:\"702 589Q706 601 718 605H1061Q1076 597 1076 585Q1076 572 1061 565H742V0Q734 -14 724 -14H722H720Q708 -14 702 0V589\",57680:\"-18 -213L-24 -207V-172L-16 -158Q75 2 260 84Q334 113 415 119Q418 119 427 119T440 120Q454 120 457 117T460 98V60V25Q460 7 457 4T441 0Q308 0 193 -55T25 -205Q21 -211 18 -212T-1 -213H-18\",57681:\"-10 60Q-10 104 -10 111T-5 118Q-1 120 10 120Q96 120 190 84Q375 2 466 -158L474 -172V-207L468 -213H451H447Q437 -213 434 -213T428 -209T423 -202T414 -187T396 -163Q331 -82 224 -41T9 0Q-4 0 -7 3T-10 25V60\",57682:\"-24 327L-18 333H-1Q11 333 15 333T22 329T27 322T35 308T54 284Q115 203 225 162T441 120Q454 120 457 117T460 95V60V28Q460 8 457 4T442 0Q355 0 260 36Q75 118 -16 278L-24 292V327\",57683:\"-10 60V95Q-10 113 -7 116T9 120Q151 120 250 171T396 284Q404 293 412 305T424 324T431 331Q433 333 451 333H468L474 327V292L466 278Q375 118 190 36Q95 0 8 0Q-5 0 -7 3T-10 24V60\",57684:\"-10 0V120H410V0H-10\"},{57685:\"\\ue153\\ue152\",57686:\"\\ue151\\ue150\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texSize4=void 0,e.texSize4={40:[1.75,1.249,.792],41:[1.75,1.249,.792],47:[1.75,1.249,1.278],91:[1.75,1.249,.583],92:[1.75,1.249,1.278],93:[1.75,1.249,.583],123:[1.75,1.249,.806],125:[1.75,1.249,.806],710:[.845,-.561,1.889,{ic:.013}],732:[.823,-.583,1.889],770:[.845,-.561,0,{ic:.013}],771:[.823,-.583,0],8260:[1.75,1.249,1.278],8730:[1.75,1.25,1,{ic:.02}],8968:[1.75,1.249,.639],8969:[1.75,1.249,.639],8970:[1.75,1.249,.639],8971:[1.75,1.249,.639],9001:[1.75,1.248,.806],9002:[1.75,1.248,.806],9115:[1.154,.655,.875],9116:[.61,.01,.875],9117:[1.165,.644,.875],9118:[1.154,.655,.875],9119:[.61,.01,.875],9120:[1.165,.644,.875],9121:[1.154,.645,.667],9122:[.602,0,.667],9123:[1.155,.644,.667],9124:[1.154,.645,.667],9125:[.602,0,.667],9126:[1.155,.644,.667],9127:[.899,.01,.889],9128:[1.16,.66,.889],9129:[.01,.899,.889],9130:[.29,.015,.889],9131:[.899,.01,.889],9132:[1.16,.66,.889],9133:[.01,.899,.889],9143:[.935,.885,1.056],10216:[1.75,1.248,.806],10217:[1.75,1.248,.806],12296:[1.75,1.248,.806],12297:[1.75,1.248,.806],57344:[.625,.014,1.056],57345:[.605,.014,1.056,{ic:.02}],57680:[.12,.213,.45,{ic:.01}],57681:[.12,.213,.45,{ic:.024}],57682:[.333,0,.45,{ic:.01}],57683:[.333,0,.45,{ic:.024}],57684:[.32,.2,.4,{ic:.01}],57685:[.333,0,.9,{ic:.01}],57686:[.12,.213,.9,{ic:.01}]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texVariant=void 0;var r=Q(6),T=Q(264);e.texVariant=r.AddPaths(T.texVariant,{710:\"1 561Q-3 563 -6 577T-12 604L-14 618Q-14 625 -7 628T23 635Q31 636 36 637Q63 641 621 745Q1148 845 1165 845Q1167 845 1752 739L2338 630Q2346 630 2346 618Q2340 565 2332 561Q2329 561 1749 654Q1617 675 1466 699T1241 736T1167 748Q1165 748 1093 737T867 700T583 654Q3 561 1 561\",732:\"804 788Q717 788 606 772T397 732T213 685T75 645T18 628Q11 628 11 632Q8 637 4 668T2 704Q2 713 36 732Q55 739 242 795Q622 898 826 898Q893 898 947 895Q1009 887 1056 872T1187 819Q1286 776 1356 758T1527 739Q1614 739 1725 755T1934 795T2118 842T2256 882T2313 899Q2320 899 2320 895Q2323 890 2327 860T2329 824Q2329 818 2296 795Q2273 787 2089 732Q1810 657 1598 632Q1562 629 1492 629Q1389 629 1320 644T1144 708Q1048 751 977 769T804 788\",770:\"-2332 561Q-2336 563 -2340 577T-2346 604L-2347 618Q-2347 625 -2340 628T-2310 635Q-2302 636 -2297 637Q-2270 641 -1712 745Q-1185 845 -1168 845Q-1166 845 -581 739L5 630Q13 630 13 618Q7 565 -1 561Q-4 561 -584 654Q-716 675 -867 699T-1092 736T-1166 748Q-1168 748 -1240 737T-1466 700T-1750 654Q-2330 561 -2332 561\",771:\"-1529 788Q-1616 788 -1727 772T-1936 732T-2120 685T-2258 645T-2315 628Q-2322 628 -2322 632Q-2325 637 -2329 668T-2331 704Q-2331 713 -2297 732Q-2278 739 -2091 795Q-1711 898 -1507 898Q-1440 898 -1386 895Q-1324 887 -1277 872T-1146 819Q-1047 776 -977 758T-806 739Q-719 739 -608 755T-399 795T-215 842T-77 882T-20 899Q-13 899 -13 895Q-10 890 -6 860T-4 824Q-4 818 -37 795Q-60 787 -244 732Q-523 657 -735 632Q-771 629 -841 629Q-944 629 -1013 644T-1189 708Q-1285 751 -1356 769T-1529 788\",1008:\"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325\",8463:\"182 599Q182 611 174 615T133 619Q118 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 295 644T282 597Q282 592 360 592H399Q430 592 445 587T460 563Q460 552 451 541L442 535H266L251 468Q247 453 243 436T236 409T233 399Q233 395 244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26L166 530Q166 534 161 534T129 535Q127 535 122 535T112 534Q74 534 74 562Q74 570 77 576T84 585T96 589T109 591T124 592T138 592L182 595V599\",8592:\"292 419Q292 400 261 347T211 275H306Q319 275 338 275T364 276Q399 276 410 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419\",8594:\"188 417Q188 437 221 437H233Q256 437 263 434T275 417Q294 373 327 333T402 270Q417 261 417 250Q417 241 410 236T382 217T341 182Q315 155 299 128T275 85T263 66Q259 64 231 64H219Q197 64 191 72T193 100Q202 124 215 147T239 185T257 210T267 223L269 225H174H116Q80 225 69 229T58 250T70 271T114 276Q121 276 140 276T174 275H269L267 277Q266 280 257 291T233 325T205 374Q188 408 188 417\",8652:\"755 512Q755 514 778 514H801L804 503Q805 501 812 486T824 462T839 437T862 408T892 381T932 354L944 347V327H507Q70 327 67 329Q55 335 55 347T67 365Q70 367 454 367H837L828 376Q803 403 785 437T761 489T755 512ZM55 153V173H492Q928 173 932 171Q944 166 944 153T932 135Q928 133 545 133H162L171 124Q198 95 216 61T239 8L244 -12Q244 -14 221 -14H198L195 -4Q160 95 67 146L55 153\",8708:\"55 676Q55 688 66 694H199L333 696L351 772Q364 827 370 843T386 860Q393 860 399 854T406 841Q406 836 391 765L375 696Q375 694 431 694H484Q491 688 497 681V12L493 5L486 1L353 -1H219L202 -79Q184 -153 180 -159Q175 -166 165 -166Q146 -166 146 -148Q146 -141 161 -76T177 -4Q177 -1 122 -1H68Q55 12 55 20T66 39H126L186 41L219 181Q226 215 234 251T246 305T251 325Q251 328 166 328H79Q68 345 68 347Q68 352 75 359L82 368H262L291 505Q298 539 306 575T319 630T324 650V654H68Q55 669 55 676ZM457 368V654H411Q366 654 366 652Q365 651 361 634T349 580T333 514Q303 373 302 372V368H457ZM457 39V328H375Q293 328 293 325Q292 322 260 183T228 41T344 39H457\",8709:\"624 470Q624 468 639 446T668 382T683 291Q683 181 612 99T437 -1Q425 -2 387 -2T337 -1Q245 18 193 70L179 81L131 39Q96 8 89 3T75 -3Q55 -3 55 17Q55 24 61 30T111 73Q154 113 151 113Q151 114 140 130T115 177T95 241Q94 253 94 291T95 341Q112 431 173 495Q265 587 385 587Q410 587 437 581Q522 571 582 513L595 501L642 541Q689 586 695 586Q696 586 697 586T699 587Q706 587 713 583T720 568Q720 560 711 551T664 510Q651 499 642 490T628 475T624 470ZM564 477Q517 522 448 539Q428 546 375 546Q290 546 229 492T144 370Q133 332 133 279Q136 228 151 195Q157 179 168 160T184 141Q186 141 375 307T564 477ZM642 290Q642 318 637 343T625 386T611 416T598 436T593 444Q590 444 402 277T213 108Q213 104 231 89T293 55T392 37Q495 37 568 111T642 290\",8722:\"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250\",8726:\"91 404T91 410T97 423T111 430Q117 430 395 224Q676 13 678 10Q685 3 685 -3T678 -16T664 -23Q658 -23 380 184T98 397Q91 404 91 410\",8733:\"56 250Q56 346 122 409T276 472Q349 472 407 430T486 326L489 316Q490 317 493 326T501 345T514 367T531 393Q557 425 602 448T698 472Q722 472 722 452Q722 437 702 435T642 421T571 377Q520 323 520 250Q520 179 568 126T693 68Q722 66 722 48Q722 28 698 28Q636 28 576 67T493 174L490 184Q489 181 483 167T475 150T468 136T458 120T447 107T432 90T412 73Q350 28 277 28Q188 28 122 91T56 250ZM199 68T278 68T408 122T459 250Q459 322 414 370T308 430Q302 431 273 431Q204 431 150 380T96 250Q96 176 147 122\",8739:\"91 417Q104 430 111 430T131 417V-10Q116 -23 111 -23T91 -10V417\",8740:\"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417\",8741:\"55 417Q69 431 76 431T95 419V-12Q84 -23 76 -23Q72 -23 69 -22T62 -16T55 -10V417ZM293 419Q300 431 310 431L324 424L331 417V-10Q316 -23 309 -23L297 -19L293 -12V419\",8742:\"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417\",8764:\"73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q148 353 195 363Q199 364 212 364Q262 364 294 350T408 272Q472 222 522 212Q537 208 555 208Q606 208 646 243Q671 268 680 296T691 342T702 365Q713 365 716 354T719 314Q714 236 664 179L660 176Q657 173 654 170T644 163T631 154T615 146T596 139T574 134T549 132Q510 132 465 156T386 211T307 265T223 290Q162 290 124 249T86 165Q86 155 82 144T73 132\",8776:\"55 326Q55 394 101 437T226 481Q268 479 313 460T392 419T469 379T555 361Q622 361 662 401Q686 423 688 450Q693 479 702 479H705Q719 479 719 442Q719 367 670 327T554 286Q512 286 466 304T386 345T307 385T220 404Q184 404 157 394T120 374L111 363Q86 339 86 317Q86 288 71 288Q55 288 55 326ZM55 90Q55 164 105 205T226 246Q269 243 314 224T392 183T470 144T558 126Q622 126 662 166Q686 187 688 214Q693 244 704 244Q716 244 719 210Q719 165 702 132T658 82T605 58T552 50T498 58T447 77T384 110Q322 146 302 152Q263 168 220 168Q179 168 144 152Q128 147 107 125T86 81Q86 52 71 52Q55 52 55 90\",8808:\"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",8809:\"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101\",8816:\"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623\",8817:\"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461\",8840:\"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710\",8841:\"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473\",8842:\"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122\",8843:\"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614\",8872:\"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V464H540Q554 456 555 446Q555 442 554 439T552 434T549 430T546 428T542 426T539 424H95V270H539Q540 270 542 269T545 267T549 264T552 260T554 255T555 248Q554 238 540 230H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678\",8901:\"71 0Q59 4 55 16V96L56 176Q59 180 66 187L70 189H209Q219 181 222 174V15Q219 10 209 1L140 0H71\",8994:\"77 122Q68 122 63 126T57 135T55 142Q55 151 68 176T111 235T177 302T271 356T388 378Q451 378 508 355T602 300T668 233T709 174T722 142Q722 124 704 122Q692 122 685 134T658 179T606 243Q511 338 390 338Q354 338 320 329Q251 312 193 263T97 141Q87 123 77 122\",8995:\"389 143Q324 143 266 164T171 215T107 277T67 330T55 358T60 371T77 378Q85 377 92 367T116 331T158 280Q256 182 389 182Q475 182 552 227T675 351Q688 378 704 378Q722 376 722 358Q722 352 710 330T670 276T605 215T511 164T389 143\",9651:\"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99ZM476 260L360 509L248 266Q137 24 135 22Q135 20 360 20Q586 20 586 21L476 260\",9661:\"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556ZM586 534Q586 536 361 536Q135 536 135 535L358 52L361 47L473 290Q584 532 586 534\",10887:\"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370\",10888:\"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379\",10955:\"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7\",10956:\"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732\"},{})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.texVariant=void 0,e.texVariant={710:[.845,-.561,2.333,{ic:.013}],732:[.899,-.628,2.333],770:[.845,-.561,0,{ic:.013}],771:[.899,-.628,0],1008:[.434,.006,.667,{ic:.067}],8463:[.695,.013,.54,{ic:.022}],8592:[.437,-.064,.5],8594:[.437,-.064,.5],8652:[.514,.014,1],8708:[.86,.166,.556],8709:[.587,0,.778],8722:[.27,-.23,.5],8726:[.43,.023,.778],8733:[.472,-.028,.778],8739:[.43,.023,.222],8740:[.43,.023,.222,{ic:.018}],8741:[.431,.023,.389],8742:[.431,.024,.389,{ic:.018}],8764:[.365,-.132,.778],8776:[.481,-.05,.778],8808:[.752,.284,.778],8809:[.752,.284,.778],8816:[.919,.421,.778],8817:[.919,.421,.778],8840:[.828,.33,.778],8841:[.828,.33,.778],8842:[.634,.255,.778],8843:[.634,.254,.778],8872:[.694,0,.611],8901:[.189,0,.278],8994:[.378,-.122,.778],8995:[.378,-.143,.778],9651:[.575,.02,.722],9661:[.576,.019,.722],10887:[.801,.303,.778],10888:[.801,.303,.778],10955:[.752,.332,.778],10956:[.752,.333,.778]}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.delimiters=e.VSIZES=e.HDW3=e.HDW2=e.HDW1=void 0;var r=Q(28);e.HDW1=[.75,.25,.875],e.HDW2=[.85,.349,.667],e.HDW3=[.583,.082,.5],e.VSIZES=[1,1.2,1.8,2.4,3];var T={c:47,dir:r.V,sizes:e.VSIZES},n={c:175,dir:r.H,sizes:[.59],stretch:[0,175],HDW:[.59,-.544,.5]},o={c:710,dir:r.H,sizes:[.517,.817,1.335,1.777,1.909]},i={c:732,dir:r.H,sizes:[.583,.805,1.33,1.773,1.887]},a={c:8211,dir:r.H,sizes:[.5],stretch:[0,8211],HDW:[.285,-.248,.5]},s={c:8592,dir:r.H,sizes:[1],stretch:[8592,8722],HDW:e.HDW3},l={c:8594,dir:r.H,sizes:[1],stretch:[0,8722,8594],HDW:e.HDW3},c={c:8596,dir:r.H,sizes:[1],stretch:[8592,8722,8594],HDW:e.HDW3},u={c:8612,dir:r.H,stretch:[8592,8722,8739],HDW:e.HDW3,min:1.278},p={c:8614,dir:r.H,sizes:[1],stretch:[8739,8722,8594],HDW:e.HDW3},h={c:8656,dir:r.H,sizes:[1],stretch:[8656,61],HDW:e.HDW3},f={c:8658,dir:r.H,sizes:[1],stretch:[0,61,8658],HDW:e.HDW3},d={c:8660,dir:r.H,sizes:[1],stretch:[8656,61,8658],HDW:e.HDW3},L={c:8722,dir:r.H,sizes:[.778],stretch:[0,8722],HDW:e.HDW3},H={c:8739,dir:r.V,sizes:[1],stretch:[0,8739],HDW:[.627,.015,.333]},m={c:9180,dir:r.H,sizes:[.778,1],schar:[8994,8994],stretch:[57680,57684,57681],HDW:[.32,.2,.5]},y={c:9181,dir:r.H,sizes:[.778,1],schar:[8995,8995],stretch:[57682,57684,57683],HDW:[.32,.2,.5]},v={c:9182,dir:r.H,stretch:[57680,57684,57681,57685],HDW:[.32,.2,.5],min:1.8},g={c:9183,dir:r.H,stretch:[57682,57684,57683,57686],HDW:[.32,.2,.5],min:1.8},b={c:10216,dir:r.V,sizes:e.VSIZES},M={c:10217,dir:r.V,sizes:e.VSIZES},V={c:10502,dir:r.H,stretch:[8656,61,8739],HDW:e.HDW3,min:1.278},x={c:10503,dir:r.H,stretch:[8872,61,8658],HDW:e.HDW3,min:1.278};e.delimiters={40:{dir:r.V,sizes:e.VSIZES,stretch:[9115,9116,9117],HDW:[.85,.349,.875]},41:{dir:r.V,sizes:e.VSIZES,stretch:[9118,9119,9120],HDW:[.85,.349,.875]},45:L,47:T,61:{dir:r.H,sizes:[.767],stretch:[0,61],HDW:e.HDW3},91:{dir:r.V,sizes:e.VSIZES,stretch:[9121,9122,9123],HDW:e.HDW2},92:{dir:r.V,sizes:e.VSIZES},93:{dir:r.V,sizes:e.VSIZES,stretch:[9124,9125,9126],HDW:e.HDW2},94:o,95:a,123:{dir:r.V,sizes:e.VSIZES,stretch:[9127,9130,9129,9128],HDW:[.85,.349,.889]},124:{dir:r.V,sizes:[1],stretch:[0,8739],HDW:[.75,.25,.333]},125:{dir:r.V,sizes:e.VSIZES,stretch:[9131,9130,9133,9132],HDW:[.85,.349,.889]},126:i,175:n,710:o,713:n,732:i,770:o,771:i,818:a,8211:a,8212:a,8213:a,8214:{dir:r.V,sizes:[.602,1],schar:[0,8741],stretch:[0,8741],HDW:[.602,0,.556]},8215:a,8254:n,8407:l,8592:s,8593:{dir:r.V,sizes:[.888],stretch:[8593,9168],HDW:[.6,0,.667]},8594:l,8595:{dir:r.V,sizes:[.888],stretch:[0,9168,8595],HDW:[.6,0,.667]},8596:c,8597:{dir:r.V,sizes:[1.044],stretch:[8593,9168,8595],HDW:e.HDW1},8606:{dir:r.H,sizes:[1],stretch:[8606,8722],HDW:e.HDW3},8608:{dir:r.H,sizes:[1],stretch:[0,8722,8608],HDW:e.HDW3},8612:u,8613:{dir:r.V,stretch:[8593,9168,8869],HDW:e.HDW1,min:1.555},8614:p,8615:{dir:r.V,stretch:[8868,9168,8595],HDW:e.HDW1,min:1.555},8624:{dir:r.V,sizes:[.722],stretch:[8624,9168],HDW:e.HDW1},8625:{dir:r.V,sizes:[.722],stretch:[8625,9168],HDW:e.HDW1},8636:{dir:r.H,sizes:[1],stretch:[8636,8722],HDW:e.HDW3},8637:{dir:r.H,sizes:[1],stretch:[8637,8722],HDW:e.HDW3},8638:{dir:r.V,sizes:[.888],stretch:[8638,9168],HDW:e.HDW1},8639:{dir:r.V,sizes:[.888],stretch:[8639,9168],HDW:e.HDW1},8640:{dir:r.H,sizes:[1],stretch:[0,8722,8640],HDW:e.HDW3},8641:{dir:r.H,sizes:[1],stretch:[0,8722,8641],HDW:e.HDW3},8642:{dir:r.V,sizes:[.888],stretch:[0,9168,8642],HDW:e.HDW1},8643:{dir:r.V,sizes:[.888],stretch:[0,9168,8643],HDW:e.HDW1},8656:h,8657:{dir:r.V,sizes:[.888],stretch:[8657,8214],HDW:[.599,0,.778]},8658:f,8659:{dir:r.V,sizes:[.888],stretch:[0,8214,8659],HDW:[.6,0,.778]},8660:d,8661:{dir:r.V,sizes:[1.044],stretch:[8657,8214,8659],HDW:[.75,.25,.778]},8666:{dir:r.H,sizes:[1],stretch:[8666,8801],HDW:[.464,-.036,.5]},8667:{dir:r.H,sizes:[1],stretch:[0,8801,8667],HDW:[.464,-.036,.5]},8722:L,8725:T,8730:{dir:r.V,sizes:e.VSIZES,stretch:[57345,57344,9143],HDW:[.85,.35,1.056]},8739:H,8741:{dir:r.V,sizes:[1],stretch:[0,8741],HDW:[.627,.015,.556]},8968:{dir:r.V,sizes:e.VSIZES,stretch:[9121,9122],HDW:e.HDW2},8969:{dir:r.V,sizes:e.VSIZES,stretch:[9124,9125],HDW:e.HDW2},8970:{dir:r.V,sizes:e.VSIZES,stretch:[0,9122,9123],HDW:e.HDW2},8971:{dir:r.V,sizes:e.VSIZES,stretch:[0,9125,9126],HDW:e.HDW2},8978:m,8994:m,8995:y,9001:b,9002:M,9130:{dir:r.V,sizes:[.32],stretch:[9130,9130,9130],HDW:[.29,.015,.889]},9135:a,9136:{dir:r.V,sizes:[.989],stretch:[9127,9130,9133],HDW:[.75,.25,.889]},9137:{dir:r.V,sizes:[.989],stretch:[9131,9130,9129],HDW:[.75,.25,.889]},9140:{dir:r.H,stretch:[9484,8722,9488],HDW:e.HDW3,min:1},9141:{dir:r.H,stretch:[9492,8722,9496],HDW:e.HDW3,min:1},9168:{dir:r.V,sizes:[.602,1],schar:[0,8739],stretch:[0,8739],HDW:[.602,0,.333]},9180:m,9181:y,9182:v,9183:g,9184:{dir:r.H,stretch:[714,713,715],HDW:[.59,-.544,.5],min:1},9185:{dir:r.H,stretch:[715,713,714],HDW:[.59,-.544,.5],min:1},9472:a,10072:H,10216:b,10217:M,10222:{dir:r.V,sizes:[.989],stretch:[9127,9130,9129],HDW:[.75,.25,.889]},10223:{dir:r.V,sizes:[.989],stretch:[9131,9130,9133],HDW:[.75,.25,.889]},10229:s,10230:l,10231:c,10232:h,10233:f,10234:d,10235:u,10236:p,10237:V,10238:x,10502:V,10503:x,10574:{dir:r.H,stretch:[8636,8722,8640],HDW:e.HDW3,min:2},10575:{dir:r.V,stretch:[8638,9168,8642],HDW:e.HDW1,min:1.776},10576:{dir:r.H,stretch:[8637,8722,8641],HDW:e.HDW3,min:2},10577:{dir:r.V,stretch:[8639,9168,8643],HDW:e.HDW1,min:.5},10586:{dir:r.H,stretch:[8636,8722,8739],HDW:e.HDW3,min:1.278},10587:{dir:r.H,stretch:[8739,8722,8640],HDW:e.HDW3,min:1.278},10588:{dir:r.V,stretch:[8638,9168,8869],HDW:e.HDW1,min:1.556},10589:{dir:r.V,stretch:[8868,9168,8642],HDW:e.HDW1,min:1.556},10590:{dir:r.H,stretch:[8637,8722,8739],HDW:e.HDW3,min:1.278},10591:{dir:r.H,stretch:[8739,8722,8641],HDW:e.HDW3,min:1.278},10592:{dir:r.V,stretch:[8639,9168,8869],HDW:e.HDW1,min:1.776},10593:{dir:r.V,stretch:[8868,9168,8643],HDW:e.HDW1,min:1.776},12296:b,12297:M,65079:v,65080:g}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontCache=void 0;var r=function(){function t(t){this.cache=new Map,this.defs=null,this.localID=\"\",this.nextID=0,this.jax=t}return t.prototype.cachePath=function(t,e,Q){var r=\"MJX-\"+this.localID+(this.jax.font.getVariant(t).cacheID||\"\")+\"-\"+e;return this.cache.has(r)||(this.cache.set(r,Q),this.jax.adaptor.append(this.defs,this.jax.svg(\"path\",{id:r,d:Q}))),r},t.prototype.clearLocalID=function(){this.localID=\"\"},t.prototype.useLocalID=function(t){void 0===t&&(t=null),this.localID=(null==t?++this.nextID:t)+(\"\"===t?\"\":\"-\")},t.prototype.clearCache=function(){this.cache=new Map,this.defs=this.jax.svg(\"defs\")},t.prototype.getCache=function(){return this.defs},t}();e.FontCache=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MJContextMenu=void 0;var i=Q(273),a=Q(103),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.mathItem=null,e.annotation=\"\",e.annotationTypes={},e}return T(e,t),e.prototype.post=function(e,Q){if(this.mathItem){if(void 0!==Q){var r=this.mathItem.inputJax.name,T=this.findID(\"Show\",\"Original\");T.content=\"MathML\"===r?\"Original MathML\":r+\" Commands\",this.findID(\"Copy\",\"Original\").content=T.content;var n=this.findID(\"Settings\",\"semantics\");\"MathML\"===r?n.disable():n.enable(),this.getAnnotationMenu(),this.dynamicSubmenus()}t.prototype.post.call(this,e,Q)}},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.mathItem=null},e.prototype.findID=function(){for(var t,e,Q=[],r=0;r<arguments.length;r++)Q[r]=arguments[r];var T=this,o=null;try{for(var i=n(Q),s=i.next();!s.done;s=i.next()){var l=s.value;T?(o=T.find(l),T=o instanceof a.Submenu?o.submenu:null):o=null}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return o},e.prototype.getAnnotationMenu=function(){var t=this,e=this.getAnnotations(this.getSemanticNode());this.createAnnotationMenu(\"Show\",e,(function(){return t.showAnnotation.post()})),this.createAnnotationMenu(\"Copy\",e,(function(){return t.copyAnnotation()}))},e.prototype.getSemanticNode=function(){for(var t=this.mathItem.root;t&&!t.isKind(\"semantics\");){if(t.isToken||1!==t.childNodes.length)return null;t=t.childNodes[0]}return t},e.prototype.getAnnotations=function(t){var e,Q,r=[];if(!t)return r;try{for(var T=n(t.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;if(i.isKind(\"annotation\")){var a=this.annotationMatch(i);if(a){var s=i.childNodes.reduce((function(t,e){return t+e.toString()}),\"\");r.push([a,s])}}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return r},e.prototype.annotationMatch=function(t){var e,Q,r=t.attributes.get(\"encoding\");try{for(var T=n(Object.keys(this.annotationTypes)),o=T.next();!o.done;o=T.next()){var i=o.value;if(this.annotationTypes[i].indexOf(r)>=0)return i}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=T.return)&&Q.call(T)}finally{if(e)throw e.error}}return null},e.prototype.createAnnotationMenu=function(t,e,Q){var r=this,T=this.findID(t,\"Annotation\");T.submenu=this.factory.get(\"subMenu\")(this.factory,{items:e.map((function(t){var e=o(t,2),T=e[0],n=e[1];return{type:\"command\",id:T,content:T,action:function(){r.annotation=n,Q()}}})),id:\"annotations\"},T),e.length?T.enable():T.disable()},e.prototype.dynamicSubmenus=function(){var t,Q;try{for(var r=n(e.DynamicSubmenus),T=r.next();!T.done;T=r.next()){var i=o(T.value,2),a=i[0],s=i[1],l=this.find(a);if(l){var c=s(this,l);l.submenu=c,c.items.length?l.enable():l.disable()}}}catch(e){t={error:e}}finally{try{T&&!T.done&&(Q=r.return)&&Q.call(r)}finally{if(t)throw t.error}}},e.DynamicSubmenus=new Map,e}(i.ContextMenu);e.MJContextMenu=s},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Menu=void 0;var T=Q(25),n=Q(14),o=Q(1),i=Q(7),a=Q(267),s=Q(269),l=Q(270),c=Q(104),u=Q(301),p=Q(276),h=Q(312),f=o.MathJax,d=\"undefined\"!=typeof window&&window.navigator&&\"Mac\"===window.navigator.platform.substr(0,3),L=function(){function t(t,e){var Q=this;void 0===e&&(e={}),this.settings=null,this.defaultSettings=null,this.menu=null,this.MmlVisitor=new s.MmlVisitor,this.jax={CHTML:null,SVG:null},this.rerenderStart=n.STATE.LAST,this.about=new c.Info('<b style=\"font-size:120%;\">MathJax</b> v'+T.mathjax.version,(function(){var t=[];return t.push(\"Input Jax: \"+Q.document.inputJax.map((function(t){return t.name})).join(\", \")),t.push(\"Output Jax: \"+Q.document.outputJax.name),t.push(\"Document Type: \"+Q.document.kind),t.join(\"<br/>\")}),'<a href=\"https://www.mathjax.org\">www.mathjax.org</a>'),this.help=new c.Info(\"<b>MathJax Help</b>\",(function(){return[\"<p><b>MathJax</b> is a JavaScript library that allows page\",\" authors to include mathematics within their web pages.\",\" As a reader, you don't need to do anything to make that happen.</p>\",\"<p><b>Browsers</b>: MathJax works with all modern browsers including\",\" Edge, Firefox, Chrome, Safari, Opera, and most mobile browsers.</p>\",\"<p><b>Math Menu</b>: MathJax adds a contextual menu to equations.\",\" Right-click or CTRL-click on any mathematics to access the menu.</p>\",'<div style=\"margin-left: 1em;\">',\"<p><b>Show Math As:</b> These options allow you to view the formula's\",\" source markup (as MathML or in its original format).</p>\",\"<p><b>Copy to Clipboard:</b> These options copy the formula's source markup,\",\" as MathML or in its original format, to the clipboard\",\" (in browsers that support that).</p>\",\"<p><b>Math Settings:</b> These give you control over features of MathJax,\",\" such the size of the mathematics, and the mechanism used\",\" to display equations.</p>\",\"<p><b>Accessibility</b>: MathJax can work with screen\",\" readers to make mathematics accessible to the visually impaired.\",\" Turn on the explorer to enable generation of speech strings\",\" and the ability to investigate expressions interactively.</p>\",\"<p><b>Language</b>: This menu lets you select the language used by MathJax\",\" for its menus and warning messages. (Not yet implemented in version 3.)</p>\",\"</div>\",\"<p><b>Math Zoom</b>: If you are having difficulty reading an\",\" equation, MathJax can enlarge it to help you see it better, or\",\" you can scall all the math on the page to make it larger.\",\" Turn these features on in the <b>Math Settings</b> menu.</p>\",\"<p><b>Preferences</b>: MathJax uses your browser's localStorage database\",\" to save the preferences set via this menu locally in your browser.  These\",\" are not used to track you, and are not transferred or used remotely by\",\" MathJax in any way.</p>\"].join(\"\\n\")}),'<a href=\"https://www.mathjax.org\">www.mathjax.org</a>'),this.mathmlCode=new l.SelectableInfo(\"MathJax MathML Expression\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.toMML(Q.menu.mathItem);return\"<pre>\"+Q.formatSource(t)+\"</pre>\"}),\"\"),this.originalText=new l.SelectableInfo(\"MathJax Original Source\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.mathItem.math;return'<pre style=\"font-size:125%; margin:0\">'+Q.formatSource(t)+\"</pre>\"}),\"\"),this.annotationText=new l.SelectableInfo(\"MathJax Annotation Text\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.annotation;return'<pre style=\"font-size:125%; margin:0\">'+Q.formatSource(t)+\"</pre>\"}),\"\"),this.zoomBox=new c.Info(\"MathJax Zoomed Expression\",(function(){if(!Q.menu.mathItem)return\"\";var t=Q.menu.mathItem.typesetRoot.cloneNode(!0);return t.style.margin=\"0\",'<div style=\"font-size: '+1.25*parseFloat(Q.settings.zscale)+'%\">'+t.outerHTML+\"</div>\"}),\"\"),this.document=t,this.options=i.userOptions(i.defaultOptions({},this.constructor.OPTIONS),e),this.initSettings(),this.mergeUserSettings(),this.initMenu()}return Object.defineProperty(t.prototype,\"isLoading\",{get:function(){return t.loading>0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"loadingPromise\",{get:function(){return this.isLoading?(t._loadingPromise||(t._loadingPromise=new Promise((function(e,Q){t._loadingOK=e,t._loadingFailed=Q}))),t._loadingPromise):Promise.resolve()},enumerable:!1,configurable:!0}),t.prototype.initSettings=function(){this.settings=this.options.settings,this.jax=this.options.jax;var t=this.document.outputJax;this.jax[t.name]=t,this.settings.renderer=t.name,f._.a11y&&f._.a11y.explorer&&Object.assign(this.settings,this.document.options.a11y),this.settings.scale=t.options.scale,this.defaultSettings=Object.assign({},this.settings)},t.prototype.initMenu=function(){var t=this,e=new u.Parser([[\"contextMenu\",a.MJContextMenu.fromJson.bind(a.MJContextMenu)]]);this.menu=e.parse({type:\"contextMenu\",id:\"MathJax_Menu\",pool:[this.variable(\"texHints\"),this.variable(\"semantics\"),this.variable(\"zoom\"),this.variable(\"zscale\"),this.variable(\"renderer\",(function(e){return t.setRenderer(e)})),this.variable(\"alt\"),this.variable(\"cmd\"),this.variable(\"ctrl\"),this.variable(\"shift\"),this.variable(\"scale\",(function(e){return t.setScale(e)})),this.variable(\"explorer\",(function(e){return t.setExplorer(e)})),this.a11yVar(\"highlight\"),this.a11yVar(\"backgroundColor\"),this.a11yVar(\"backgroundOpacity\"),this.a11yVar(\"foregroundColor\"),this.a11yVar(\"foregroundOpacity\"),this.a11yVar(\"speech\"),this.a11yVar(\"subtitles\"),this.a11yVar(\"braille\"),this.a11yVar(\"viewBraille\"),this.a11yVar(\"locale\"),this.a11yVar(\"speechRules\"),this.a11yVar(\"magnification\"),this.a11yVar(\"magnify\"),this.a11yVar(\"treeColoring\"),this.a11yVar(\"infoType\"),this.a11yVar(\"infoRole\"),this.a11yVar(\"infoPrefix\"),this.variable(\"autocollapse\"),this.variable(\"collapsible\",(function(e){return t.setCollapsible(e)})),this.variable(\"inTabOrder\",(function(e){return t.setTabOrder(e)})),this.variable(\"assistiveMml\",(function(e){return t.setAssistiveMml(e)}))],items:[this.submenu(\"Show\",\"Show Math As\",[this.command(\"MathMLcode\",\"MathML Code\",(function(){return t.mathmlCode.post()})),this.command(\"Original\",\"Original Form\",(function(){return t.originalText.post()})),this.submenu(\"Annotation\",\"Annotation\")]),this.submenu(\"Copy\",\"Copy to Clipboard\",[this.command(\"MathMLcode\",\"MathML Code\",(function(){return t.copyMathML()})),this.command(\"Original\",\"Original Form\",(function(){return t.copyOriginal()})),this.submenu(\"Annotation\",\"Annotation\")]),this.rule(),this.submenu(\"Settings\",\"Math Settings\",[this.submenu(\"Renderer\",\"Math Renderer\",this.radioGroup(\"renderer\",[[\"CHTML\"],[\"SVG\"]])),this.rule(),this.submenu(\"ZoomTrigger\",\"Zoom Trigger\",[this.command(\"ZoomNow\",\"Zoom Once Now\",(function(){return t.zoom(null,\"\",t.menu.mathItem)})),this.rule(),this.radioGroup(\"zoom\",[[\"Click\"],[\"DoubleClick\",\"Double-Click\"],[\"NoZoom\",\"No Zoom\"]]),this.rule(),this.label(\"TriggerRequires\",\"Trigger Requires:\"),this.checkbox(d?\"Option\":\"Alt\",d?\"Option\":\"Alt\",\"alt\"),this.checkbox(\"Command\",\"Command\",\"cmd\",{hidden:!d}),this.checkbox(\"Control\",\"Control\",\"ctrl\",{hiddne:d}),this.checkbox(\"Shift\",\"Shift\",\"shift\")]),this.submenu(\"ZoomFactor\",\"Zoom Factor\",this.radioGroup(\"zscale\",[[\"150%\"],[\"175%\"],[\"200%\"],[\"250%\"],[\"300%\"],[\"400%\"]])),this.rule(),this.command(\"Scale\",\"Scale All Math...\",(function(){return t.scaleAllMath()})),this.rule(),this.checkbox(\"texHints\",\"Add TeX hints to MathML\",\"texHints\"),this.checkbox(\"semantics\",\"Add original as annotation\",\"semantics\"),this.rule(),this.command(\"Reset\",\"Reset to defaults\",(function(){return t.resetDefaults()}))]),this.submenu(\"Accessibility\",\"Accessibility\",[this.checkbox(\"Activate\",\"Activate\",\"explorer\"),this.submenu(\"Speech\",\"Speech\",[this.checkbox(\"Speech\",\"Speech Output\",\"speech\"),this.checkbox(\"Subtitles\",\"Speech Subtities\",\"subtitles\"),this.checkbox(\"Braille\",\"Braille Output\",\"braille\"),this.checkbox(\"View Braille\",\"Braille Subtitles\",\"viewBraille\"),this.rule(),this.submenu(\"A11yLanguage\",\"Language\"),this.rule(),this.submenu(\"Mathspeak\",\"Mathspeak Rules\",this.radioGroup(\"speechRules\",[[\"mathspeak-default\",\"Verbose\"],[\"mathspeak-brief\",\"Brief\"],[\"mathspeak-sbrief\",\"Superbrief\"]])),this.submenu(\"Clearspeak\",\"Clearspeak Rules\",this.radioGroup(\"speechRules\",[[\"clearspeak-default\",\"Auto\"]])),this.submenu(\"ChromeVox\",\"ChromeVox Rules\",this.radioGroup(\"speechRules\",[[\"default-default\",\"Standard\"],[\"default-alternative\",\"Alternative\"]]))]),this.submenu(\"Highlight\",\"Highlight\",[this.submenu(\"Background\",\"Background\",this.radioGroup(\"backgroundColor\",[[\"Blue\"],[\"Red\"],[\"Green\"],[\"Yellow\"],[\"Cyan\"],[\"Magenta\"],[\"White\"],[\"Black\"]])),{type:\"slider\",variable:\"backgroundOpacity\",content:\" \"},this.submenu(\"Foreground\",\"Foreground\",this.radioGroup(\"foregroundColor\",[[\"Black\"],[\"White\"],[\"Magenta\"],[\"Cyan\"],[\"Yellow\"],[\"Green\"],[\"Red\"],[\"Blue\"]])),{type:\"slider\",variable:\"foregroundOpacity\",content:\" \"},this.rule(),this.radioGroup(\"highlight\",[[\"None\"],[\"Hover\"],[\"Flame\"]]),this.rule(),this.checkbox(\"TreeColoring\",\"Tree Coloring\",\"treeColoring\")]),this.submenu(\"Magnification\",\"Magnification\",[this.radioGroup(\"magnification\",[[\"None\"],[\"Keyboard\"],[\"Mouse\"]]),this.rule(),this.radioGroup(\"magnify\",[[\"200%\"],[\"300%\"],[\"400%\"],[\"500%\"]])]),this.submenu(\"Semantic Info\",\"Semantic Info\",[this.checkbox(\"Type\",\"Type\",\"infoType\"),this.checkbox(\"Role\",\"Role\",\"infoRole\"),this.checkbox(\"Prefix\",\"Prefix\",\"infoPrefix\")],!0),this.rule(),this.checkbox(\"Collapsible\",\"Collapsible Math\",\"collapsible\"),this.checkbox(\"AutoCollapse\",\"Auto Collapse\",\"autocollapse\",{disabled:!0}),this.rule(),this.checkbox(\"InTabOrder\",\"Include in Tab Order\",\"inTabOrder\"),this.checkbox(\"AssistiveMml\",\"Include Hidden MathML\",\"assistiveMml\")]),this.submenu(\"Language\",\"Language\"),this.rule(),this.command(\"About\",\"About MathJax\",(function(){return t.about.post()})),this.command(\"Help\",\"MathJax Help\",(function(){return t.help.post()}))]});var Q=this.menu;this.about.attachMenu(Q),this.help.attachMenu(Q),this.originalText.attachMenu(Q),this.annotationText.attachMenu(Q),this.mathmlCode.attachMenu(Q),this.zoomBox.attachMenu(Q),this.checkLoadableItems(),this.enableExplorerItems(this.settings.explorer),Q.showAnnotation=this.annotationText,Q.copyAnnotation=this.copyAnnotation.bind(this),Q.annotationTypes=this.options.annotationTypes,h.CssStyles.addInfoStyles(this.document.document),h.CssStyles.addMenuStyles(this.document.document)},t.prototype.checkLoadableItems=function(){var t,e;if(f&&f._&&f.loader&&f.startup)!this.settings.collapsible||f._.a11y&&f._.a11y.complexity||this.loadA11y(\"complexity\"),!this.settings.explorer||f._.a11y&&f._.a11y.explorer||this.loadA11y(\"explorer\"),!this.settings.assistiveMml||f._.a11y&&f._.a11y[\"assistive-mml\"]||this.loadA11y(\"assistive-mml\");else{var Q=this.menu;try{for(var T=r(Object.keys(this.jax)),n=T.next();!n.done;n=T.next()){var o=n.value;this.jax[o]||Q.findID(\"Settings\",\"Renderer\",o).disable()}}catch(e){t={error:e}}finally{try{n&&!n.done&&(e=T.return)&&e.call(T)}finally{if(t)throw t.error}}Q.findID(\"Accessibility\",\"Activate\").disable(),Q.findID(\"Accessibility\",\"AutoCollapse\").disable(),Q.findID(\"Accessibility\",\"Collapsible\").disable()}},t.prototype.enableExplorerItems=function(t){var e,Q,T=this.menu.findID(\"Accessibility\",\"Activate\").menu;try{for(var n=r(T.items.slice(1)),o=n.next();!o.done;o=n.next()){var i=o.value;if(i instanceof p.Rule)break;t?i.enable():i.disable()}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.prototype.mergeUserSettings=function(){try{var e=localStorage.getItem(t.MENU_STORAGE);if(!e)return;Object.assign(this.settings,JSON.parse(e)),this.setA11y(this.settings)}catch(t){console.log(\"MathJax localStorage error: \"+t.message)}},t.prototype.saveUserSettings=function(){var e,Q,T={};try{for(var n=r(Object.keys(this.settings)),o=n.next();!o.done;o=n.next()){var i=o.value;this.settings[i]!==this.defaultSettings[i]&&(T[i]=this.settings[i])}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}try{Object.keys(T).length?localStorage.setItem(t.MENU_STORAGE,JSON.stringify(T)):localStorage.removeItem(t.MENU_STORAGE)}catch(t){console.log(\"MathJax localStorage error: \"+t.message)}},t.prototype.setA11y=function(t){f._.a11y&&f._.a11y.explorer&&f._.a11y.explorer_ts.setA11yOptions(this.document,t)},t.prototype.getA11y=function(t){if(f._.a11y&&f._.a11y.explorer)return this.document.options.a11y[t]},t.prototype.setScale=function(t){this.document.outputJax.options.scale=parseFloat(t),this.document.rerender()},t.prototype.setRenderer=function(t){var e=this;if(this.jax[t])this.setOutputJax(t);else{var Q=t.toLowerCase();this.loadComponent(\"output/\"+Q,(function(){var r=f.startup;Q in r.constructors&&(r.useOutput(Q,!0),r.output=r.getOutputJax(),e.jax[t]=r.output,e.setOutputJax(t))}))}},t.prototype.setOutputJax=function(t){this.jax[t].setAdaptor(this.document.adaptor),this.document.outputJax=this.jax[t],this.rerender()},t.prototype.setTabOrder=function(t){this.menu.store.inTaborder(t)},t.prototype.setAssistiveMml=function(t){this.document.options.enableAssistiveMml=t,!t||f._.a11y&&f._.a11y[\"assistive-mml\"]?this.rerender():this.loadA11y(\"assistive-mml\")},t.prototype.setExplorer=function(t){this.enableExplorerItems(t),this.document.options.enableExplorer=t,!t||f._.a11y&&f._.a11y.explorer?this.rerender(this.settings.collapsible?n.STATE.RERENDER:n.STATE.COMPILED):this.loadA11y(\"explorer\")},t.prototype.setCollapsible=function(t){this.document.options.enableComplexity=t,!t||f._.a11y&&f._.a11y.complexity?this.rerender(n.STATE.COMPILED):this.loadA11y(\"complexity\")},t.prototype.scaleAllMath=function(){var t=(100*parseFloat(this.settings.scale)).toFixed(1).replace(/.0$/,\"\"),e=prompt(\"Scale all mathematics (compared to surrounding text) by\",t+\"%\");if(e)if(e.match(/^\\s*\\d+(\\.\\d*)?\\s*%?\\s*$/)){var Q=parseFloat(e)/100;Q?this.setScale(String(Q)):alert(\"The scale should not be zero\")}else alert(\"The scale should be a percentage (e.g., 120%)\")},t.prototype.resetDefaults=function(){var e,Q;t.loading++;var T=this.menu.pool,o=this.defaultSettings;try{for(var i=r(Object.keys(this.settings)),a=i.next();!a.done;a=i.next()){var s=a.value,l=T.lookup(s);if(l){l.setValue(o[s]);var c=l.items[0];c&&c.executeCallbacks_()}else this.settings[s]=o[s]}}catch(t){e={error:t}}finally{try{a&&!a.done&&(Q=i.return)&&Q.call(i)}finally{if(e)throw e.error}}t.loading--,this.rerender(n.STATE.COMPILED)},t.prototype.checkComponent=function(e){var Q=t.loadingPromises.get(e);Q&&T.mathjax.retryAfter(Q)},t.prototype.loadComponent=function(e,Q){if(!t.loadingPromises.has(e)){var r=f.loader;if(r){t.loading++;var T=r.load(e).then((function(){t.loading--,t.loadingPromises.delete(e),Q(),0===t.loading&&t._loadingPromise&&(t._loadingPromise=null,t._loadingOK())})).catch((function(e){t._loadingPromise?(t._loadingPromise=null,t._loadingFailed(e)):console.log(e)}));t.loadingPromises.set(e,T)}}},t.prototype.loadA11y=function(e){var Q=this,r=!n.STATE.ENRICHED;this.loadComponent(\"a11y/\"+e,(function(){var o=f.startup;T.mathjax.handlers.unregister(o.handler),o.handler=o.getHandler(),T.mathjax.handlers.register(o.handler);var i=Q.document;Q.document=o.document=o.getDocument(),Q.document.menu=Q,Q.transferMathList(i),Q.document.processed=i.processed,t._loadingPromise||Q.rerender(\"complexity\"===e||r?n.STATE.COMPILED:n.STATE.TYPESET)}))},t.prototype.transferMathList=function(t){var e,Q,T=this.document.options.MathItem;try{for(var n=r(t.math),o=n.next();!o.done;o=n.next()){var i=o.value,a=new T;Object.assign(a,i),this.document.math.push(a)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}},t.prototype.formatSource=function(t){return t.trim().replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")},t.prototype.toMML=function(t){return this.MmlVisitor.visitTree(t.root,t,{texHints:this.settings.texHints,semantics:this.settings.semantics&&\"MathML\"!==t.inputJax.name})},t.prototype.zoom=function(t,e,Q){t&&!this.isZoomEvent(t,e)||(this.menu.mathItem=Q,t&&this.menu.post(t),this.zoomBox.post())},t.prototype.isZoomEvent=function(t,e){return this.settings.zoom===e&&(!this.settings.alt||t.altKey)&&(!this.settings.ctrl||t.ctrlKey)&&(!this.settings.cmd||t.metaKey)&&(!this.settings.shift||t.shiftKey)},t.prototype.rerender=function(e){void 0===e&&(e=n.STATE.TYPESET),this.rerenderStart=Math.min(e,this.rerenderStart),t.loading||(this.document.rerender(this.rerenderStart),this.rerenderStart=n.STATE.LAST)},t.prototype.copyMathML=function(){this.copyToClipboard(this.toMML(this.menu.mathItem))},t.prototype.copyOriginal=function(){this.copyToClipboard(this.menu.mathItem.math)},t.prototype.copyAnnotation=function(){this.copyToClipboard(this.menu.annotation)},t.prototype.copyToClipboard=function(t){var e=document.createElement(\"textarea\");e.value=t,e.setAttribute(\"readonly\",\"\"),e.style.cssText=\"height: 1px; width: 1px; padding: 1px; position: absolute; left: -10px\",document.body.appendChild(e),e.select();try{document.execCommand(\"copy\")}catch(t){alert(\"Can't copy to clipboard: \"+t.message)}document.body.removeChild(e)},t.prototype.addMenu=function(t){var e=this,Q=t.typesetRoot;Q.addEventListener(\"contextmenu\",(function(){return e.menu.mathItem=t}),!0),Q.addEventListener(\"keydown\",(function(){return e.menu.mathItem=t}),!0),Q.addEventListener(\"click\",(function(Q){return e.zoom(Q,\"Click\",t)}),!0),Q.addEventListener(\"dblclick\",(function(Q){return e.zoom(Q,\"DoubleClick\",t)}),!0),this.menu.store.insert(Q)},t.prototype.clear=function(){this.menu.store.clear()},t.prototype.variable=function(t,e){var Q=this;return{name:t,getter:function(){return Q.settings[t]},setter:function(r){Q.settings[t]=r,e&&e(r),Q.saveUserSettings()}}},t.prototype.a11yVar=function(t){var e=this;return{name:t,getter:function(){return e.getA11y(t)},setter:function(Q){e.settings[t]=Q;var r={};r[t]=Q,e.setA11y(r),e.saveUserSettings()}}},t.prototype.submenu=function(t,e,Q,T){var n,o;void 0===Q&&(Q=[]),void 0===T&&(T=!1);var i=[];try{for(var a=r(Q),s=a.next();!s.done;s=a.next()){var l=s.value;Array.isArray(l)?i=i.concat(l):i.push(l)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(n)throw n.error}}return{type:\"submenu\",id:t,content:e,menu:{items:i},disabled:0===i.length||T}},t.prototype.command=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"command\",id:t,content:e,action:Q},r)},t.prototype.checkbox=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"checkbox\",id:t,content:e,variable:Q},r)},t.prototype.radioGroup=function(t,e){var Q=this;return e.map((function(e){return Q.radio(e[0],e[1]||e[0],t)}))},t.prototype.radio=function(t,e,Q,r){return void 0===r&&(r={}),Object.assign({type:\"radio\",id:t,content:e,variable:Q},r)},t.prototype.label=function(t,e){return{type:\"label\",id:t,content:e}},t.prototype.rule=function(){return{type:\"rule\"}},t.MENU_STORAGE=\"MathJax-Menu-Settings\",t.OPTIONS={settings:{texHints:!0,semantics:!1,zoom:\"NoZoom\",zscale:\"200%\",renderer:\"CHTML\",alt:!1,cmd:!1,ctrl:!1,shift:!1,scale:1,autocollapse:!1,collapsible:!1,inTabOrder:!0,assistiveMml:!0,explorer:!1},jax:{CHTML:null,SVG:null},annotationTypes:i.expandable({TeX:[\"TeX\",\"LaTeX\",\"application/x-tex\"],StarMath:[\"StarMath 5.0\"],Maple:[\"Maple\"],ContentMathML:[\"MathML-Content\",\"application/mathml-content+xml\"],OpenMath:[\"OpenMath\"]})},t.loading=0,t.loadingPromises=new Map,t._loadingPromise=null,t._loadingOK=null,t._loadingFailed=null,t}();e.Menu=L},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MmlVisitor=void 0;var n=Q(83),o=Q(7),i=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.options={texHints:!0,semantics:!1},e.mathItem=null,e}return T(e,t),e.prototype.visitTree=function(t,e,Q){return void 0===e&&(e=null),void 0===Q&&(Q={}),this.mathItem=e,o.userOptions(this.options,Q),this.visitNode(t,\"\")},e.prototype.visitTeXAtomNode=function(e,Q){return this.options.texHints?t.prototype.visitTeXAtomNode.call(this,e,Q):e.childNodes[0]&&1===e.childNodes[0].childNodes.length?this.visitNode(e.childNodes[0],Q):Q+\"<mrow\"+this.getAttributes(e)+\">\\n\"+this.childNodeMml(e,Q+\"  \",\"\\n\")+Q+\"</mrow>\"},e.prototype.visitMathNode=function(e,Q){if(!this.options.semantics||\"TeX\"!==this.mathItem.inputJax.name)return t.prototype.visitDefault.call(this,e,Q);var r=e.childNodes.length&&e.childNodes[0].childNodes.length>1;return Q+\"<math\"+this.getAttributes(e)+\">\\n\"+Q+\"  <semantics>\\n\"+(r?Q+\"    <mrow>\\n\":\"\")+this.childNodeMml(e,Q+(r?\"      \":\"    \"),\"\\n\")+(r?Q+\"    </mrow>\\n\":\"\")+Q+'    <annotation encoding=\"application/x-tex\">'+this.mathItem.math+\"</annotation>\\n\"+Q+\"  </semantics>\\n\"+Q+\"</math>\"},e}(n.SerializedMmlVisitor);e.MmlVisitor=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectableInfo=void 0;var n=Q(104),o=Q(10),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addEvents=function(t){var e=this;t.addEventListener(\"keypress\",(function(t){\"a\"===t.key&&(t.ctrlKey||t.metaKey)&&(e.selectAll(),e.stop(t))}))},e.prototype.selectAll=function(){document.getSelection().selectAllChildren(this.html.querySelector(\"pre\"))},e.prototype.copyToClipboard=function(){this.selectAll();try{document.execCommand(\"copy\")}catch(t){alert(\"Can't copy to clipboard: \"+t.message)}document.getSelection().removeAllRanges()},e.prototype.generateHtml=function(){var e=this;t.prototype.generateHtml.call(this);var Q=this.html.querySelector(\"span.\"+o.HtmlClasses.INFOSIGNATURE).appendChild(document.createElement(\"input\"));Q.type=\"button\",Q.value=\"Copy to Clipboard\",Q.addEventListener(\"click\",(function(t){return e.copyToClipboard()}))},e}(n.Info);e.SelectableInfo=i},function(t,e){var Q;Q=function(){return this}();try{Q=Q||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(Q=window)}t.exports=Q},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({NJcy:\"\\u040a\",Nacute:\"\\u0143\",Ncaron:\"\\u0147\",Ncedil:\"\\u0145\",Ncy:\"\\u041d\",NegativeMediumSpace:\"\\u200b\",NegativeThickSpace:\"\\u200b\",NegativeThinSpace:\"\\u200b\",NegativeVeryThinSpace:\"\\u200b\",NewLine:\"\\n\",NoBreak:\"\\u2060\",NonBreakingSpace:\"\\xa0\",Not:\"\\u2aec\",NotCongruent:\"\\u2262\",NotCupCap:\"\\u226d\",NotEqualTilde:\"\\u2242\\u0338\",NotGreaterFullEqual:\"\\u2267\\u0338\",NotGreaterGreater:\"\\u226b\\u0338\",NotGreaterLess:\"\\u2279\",NotGreaterSlantEqual:\"\\u2a7e\\u0338\",NotGreaterTilde:\"\\u2275\",NotHumpDownHump:\"\\u224e\\u0338\",NotHumpEqual:\"\\u224f\\u0338\",NotLeftTriangleBar:\"\\u29cf\\u0338\",NotLessGreater:\"\\u2278\",NotLessLess:\"\\u226a\\u0338\",NotLessSlantEqual:\"\\u2a7d\\u0338\",NotLessTilde:\"\\u2274\",NotNestedGreaterGreater:\"\\u2aa2\\u0338\",NotNestedLessLess:\"\\u2aa1\\u0338\",NotPrecedesEqual:\"\\u2aaf\\u0338\",NotReverseElement:\"\\u220c\",NotRightTriangleBar:\"\\u29d0\\u0338\",NotSquareSubset:\"\\u228f\\u0338\",NotSquareSubsetEqual:\"\\u22e2\",NotSquareSuperset:\"\\u2290\\u0338\",NotSquareSupersetEqual:\"\\u22e3\",NotSubset:\"\\u2282\\u20d2\",NotSucceedsEqual:\"\\u2ab0\\u0338\",NotSucceedsTilde:\"\\u227f\\u0338\",NotSuperset:\"\\u2283\\u20d2\",NotTildeEqual:\"\\u2244\",NotTildeFullEqual:\"\\u2247\",NotTildeTilde:\"\\u2249\",Ntilde:\"\\xd1\",Nu:\"\\u039d\",nGg:\"\\u22d9\\u0338\",nGt:\"\\u226b\\u20d2\",nGtv:\"\\u226b\\u0338\",nLl:\"\\u22d8\\u0338\",nLt:\"\\u226a\\u20d2\",nLtv:\"\\u226a\\u0338\",nabla:\"\\u2207\",nacute:\"\\u0144\",nang:\"\\u2220\\u20d2\",nap:\"\\u2249\",napE:\"\\u2a70\\u0338\",napid:\"\\u224b\\u0338\",napos:\"\\u0149\",napprox:\"\\u2249\",natural:\"\\u266e\",naturals:\"\\u2115\",nbsp:\"\\xa0\",nbump:\"\\u224e\\u0338\",nbumpe:\"\\u224f\\u0338\",ncap:\"\\u2a43\",ncaron:\"\\u0148\",ncedil:\"\\u0146\",ncong:\"\\u2247\",ncongdot:\"\\u2a6d\\u0338\",ncup:\"\\u2a42\",ncy:\"\\u043d\",ndash:\"\\u2013\",ne:\"\\u2260\",neArr:\"\\u21d7\",nearhk:\"\\u2924\",nearrow:\"\\u2197\",nedot:\"\\u2250\\u0338\",nequiv:\"\\u2262\",nesear:\"\\u2928\",nesim:\"\\u2242\\u0338\",nexist:\"\\u2204\",nexists:\"\\u2204\",ngE:\"\\u2267\\u0338\",nge:\"\\u2271\",ngeq:\"\\u2271\",ngeqq:\"\\u2267\\u0338\",ngeqslant:\"\\u2a7e\\u0338\",nges:\"\\u2a7e\\u0338\",ngsim:\"\\u2275\",ngt:\"\\u226f\",ngtr:\"\\u226f\",nhArr:\"\\u21ce\",nhpar:\"\\u2af2\",ni:\"\\u220b\",nis:\"\\u22fc\",nisd:\"\\u22fa\",niv:\"\\u220b\",njcy:\"\\u045a\",nlArr:\"\\u21cd\",nlE:\"\\u2266\\u0338\",nldr:\"\\u2025\",nle:\"\\u2270\",nleftarrow:\"\\u219a\",nleftrightarrow:\"\\u21ae\",nleq:\"\\u2270\",nleqq:\"\\u2266\\u0338\",nleqslant:\"\\u2a7d\\u0338\",nles:\"\\u2a7d\\u0338\",nless:\"\\u226e\",nlsim:\"\\u2274\",nlt:\"\\u226e\",nltri:\"\\u22ea\",nltrie:\"\\u22ec\",nmid:\"\\u2224\",notin:\"\\u2209\",notinE:\"\\u22f9\\u0338\",notindot:\"\\u22f5\\u0338\",notinva:\"\\u2209\",notinvb:\"\\u22f7\",notinvc:\"\\u22f6\",notni:\"\\u220c\",notniva:\"\\u220c\",notnivb:\"\\u22fe\",notnivc:\"\\u22fd\",npar:\"\\u2226\",nparallel:\"\\u2226\",nparsl:\"\\u2afd\\u20e5\",npart:\"\\u2202\\u0338\",npolint:\"\\u2a14\",npr:\"\\u2280\",nprcue:\"\\u22e0\",npre:\"\\u2aaf\\u0338\",nprec:\"\\u2280\",npreceq:\"\\u2aaf\\u0338\",nrArr:\"\\u21cf\",nrarrc:\"\\u2933\\u0338\",nrarrw:\"\\u219d\\u0338\",nrightarrow:\"\\u219b\",nrtri:\"\\u22eb\",nrtrie:\"\\u22ed\",nsc:\"\\u2281\",nsccue:\"\\u22e1\",nsce:\"\\u2ab0\\u0338\",nshortmid:\"\\u2224\",nshortparallel:\"\\u2226\",nsim:\"\\u2241\",nsime:\"\\u2244\",nsimeq:\"\\u2244\",nsmid:\"\\u2224\",nspar:\"\\u2226\",nsqsube:\"\\u22e2\",nsqsupe:\"\\u22e3\",nsub:\"\\u2284\",nsubE:\"\\u2ac5\\u0338\",nsube:\"\\u2288\",nsubset:\"\\u2282\\u20d2\",nsubseteq:\"\\u2288\",nsubseteqq:\"\\u2ac5\\u0338\",nsucc:\"\\u2281\",nsucceq:\"\\u2ab0\\u0338\",nsup:\"\\u2285\",nsupE:\"\\u2ac6\\u0338\",nsupe:\"\\u2289\",nsupset:\"\\u2283\\u20d2\",nsupseteq:\"\\u2289\",nsupseteqq:\"\\u2ac6\\u0338\",ntgl:\"\\u2279\",ntilde:\"\\xf1\",ntlg:\"\\u2278\",ntriangleleft:\"\\u22ea\",ntrianglelefteq:\"\\u22ec\",ntriangleright:\"\\u22eb\",ntrianglerighteq:\"\\u22ed\",num:\"#\",numero:\"\\u2116\",numsp:\"\\u2007\",nvHarr:\"\\u2904\",nvap:\"\\u224d\\u20d2\",nvge:\"\\u2265\\u20d2\",nvgt:\">\\u20d2\",nvinfin:\"\\u29de\",nvlArr:\"\\u2902\",nvle:\"\\u2264\\u20d2\",nvlt:\"<\\u20d2\",nvltrie:\"\\u22b4\\u20d2\",nvrArr:\"\\u2903\",nvrtrie:\"\\u22b5\\u20d2\",nvsim:\"\\u223c\\u20d2\",nwArr:\"\\u21d6\",nwarhk:\"\\u2923\",nwarrow:\"\\u2196\",nwnear:\"\\u2927\"},\"n\")},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextMenu=void 0;var n=Q(101),o=Q(10),i=Q(298),a=Q(299),s=function(t){function e(e){var Q=t.call(this)||this;return Q.factory=e,Q.id=\"\",Q.moving=!1,Q._store=new i.MenuStore(Q),Q.widgets=[],Q.variablePool=new a.VariablePool,Q}return T(e,t),e.fromJson=function(t,e){var Q=e.pool,r=e.items,T=e.id,n=void 0===T?\"\":T,o=new this(t);o.id=n;var i=t.get(\"variable\");Q.forEach((function(e){return i(t,e,o.pool)}));var a=t.get(\"items\")(t,r,o);return o.items=a,o},e.prototype.generateHtml=function(){this.isPosted()&&this.unpost(),t.prototype.generateHtml.call(this),this._frame=document.createElement(\"div\"),this._frame.classList.add(o.HtmlClasses.MENUFRAME);var e=\"left: 0px; top: 0px; z-index: 200; width: 100%; height: 100%; border: 0px; padding: 0px; margin: 0px;\";this._frame.setAttribute(\"style\",\"position: absolute; \"+e);var Q=document.createElement(\"div\");Q.setAttribute(\"style\",\"position: fixed; \"+e),this._frame.appendChild(Q),Q.addEventListener(\"mousedown\",function(t){this.unpost(),this.unpostWidgets(),this.stop(t)}.bind(this))},e.prototype.display=function(){document.body.appendChild(this.frame),this.frame.appendChild(this.html),this.focus()},e.prototype.escape=function(t){this.unpost(),this.unpostWidgets()},e.prototype.unpost=function(){if(t.prototype.unpost.call(this),!(this.widgets.length>0)){this.frame.parentNode.removeChild(this.frame);var e=this.store;this.moving||e.insertTaborder(),e.active.focus()}},e.prototype.left=function(t){this.move_(this.store.previous())},e.prototype.right=function(t){this.move_(this.store.next())},Object.defineProperty(e.prototype,\"frame\",{get:function(){return this._frame},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"store\",{get:function(){return this._store},enumerable:!1,configurable:!0}),e.prototype.post=function(e,Q){if(void 0!==Q)return this.moving||this.store.removeTaborder(),void t.prototype.post.call(this,e,Q);var r,T,n,o=e;if(o instanceof Event?(r=o.target,this.stop(o)):r=o,o instanceof MouseEvent&&(T=o.pageX,n=o.pageY,T||n||!o.clientX||(T=o.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=o.clientY+document.body.scrollTop+document.documentElement.scrollTop)),!T&&!n&&r){var i=window.pageXOffset||document.documentElement.scrollLeft,a=window.pageYOffset||document.documentElement.scrollTop,s=r.getBoundingClientRect();T=(s.right+s.left)/2+i,n=(s.bottom+s.top)/2+a}this.store.active=r,this.anchor=this.store.active;var l=this.html;T+l.offsetWidth>document.body.offsetWidth-5&&(T=document.body.offsetWidth-l.offsetWidth-5),this.post(T,n)},e.prototype.registerWidget=function(t){this.widgets.push(t)},e.prototype.unregisterWidget=function(t){var e=this.widgets.indexOf(t);e>-1&&this.widgets.splice(e,1),0===this.widgets.length&&this.unpost()},e.prototype.unpostWidgets=function(){this.widgets.forEach((function(t){return t.unpost()}))},e.prototype.toJson=function(){return{type:\"\"}},e.prototype.move_=function(t){this.anchor&&t!==this.anchor&&(this.moving=!0,this.unpost(),this.post(t),this.moving=!1)},e}(n.AbstractMenu);e.ContextMenu=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuElement=void 0;var n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.addAttributes=function(t){for(var e in t)this.html.setAttribute(e,t[e])},Object.defineProperty(e.prototype,\"html\",{get:function(){return this._html||this.generateHtml(),this._html},set:function(t){this._html=t,this.addEvents(t)},enumerable:!1,configurable:!0}),e.prototype.generateHtml=function(){var t=document.createElement(\"div\");t.classList.add(this.className),t.setAttribute(\"role\",this.role),this.html=t},e.prototype.focus=function(){var t=this.html;t.setAttribute(\"tabindex\",\"0\"),t.focus()},e.prototype.unfocus=function(){var t=this.html;t.hasAttribute(\"tabindex\")&&t.setAttribute(\"tabindex\",\"-1\");try{t.blur()}catch(t){}t.blur()},e}(Q(296).AbstractNavigatable);e.MenuElement=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEntry=void 0;var n=Q(274),o=Q(10),i=function(t){function e(e,Q){var r=t.call(this)||this;return r._menu=e,r._type=Q,r.className=o.HtmlClasses.MENUITEM,r.role=\"menuitem\",r.hidden=!1,r}return T(e,t),Object.defineProperty(e.prototype,\"menu\",{get:function(){return this._menu},set:function(t){this._menu=t},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"type\",{get:function(){return this._type},enumerable:!1,configurable:!0}),e.prototype.hide=function(){this.hidden=!0,this.menu.generateMenu()},e.prototype.show=function(){this.hidden=!1,this.menu.generateMenu()},e.prototype.isHidden=function(){return this.hidden},e}(n.MenuElement);e.AbstractEntry=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Rule=void 0;var n=Q(275),o=Q(10),i=function(t){function e(e){var Q=t.call(this,e,\"rule\")||this;return Q.className=o.HtmlClasses.MENUITEM,Q.role=\"separator\",Q}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this);var e=this.html;e.classList.add(o.HtmlClasses.MENURULE),e.setAttribute(\"aria-orientation\",\"vertical\")},e.prototype.addEvents=function(t){},e.prototype.toJson=function(){return{type:\"rule\"}},e}(n.AbstractEntry);e.Rule=i},function(t,e,Q){\"use strict\";(function(t){var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONFIG=e.MathJax=e.Startup=void 0;var n,o=Q(1),i=Q(21);!function(Q){var n,o,s=new i.PrioritizedList;function l(t){return n.visitTree(t,Q.document)}function c(){n=new e.MathJax._.core.MmlTree.SerializedMmlVisitor.SerializedMmlVisitor,o=e.MathJax._.mathjax.mathjax,Q.input=L(),Q.output=H(),Q.adaptor=m(),Q.handler&&o.handlers.unregister(Q.handler),Q.handler=y(),Q.handler&&(o.handlers.register(Q.handler),Q.document=v())}function u(){var t,e;Q.input&&Q.output&&p();var r=Q.output?Q.output.name.toLowerCase():\"\";try{for(var n=T(Q.input),o=n.next();!o.done;o=n.next()){var i=o.value,a=i.name.toLowerCase();f(a,i),d(a,i),Q.output&&h(a,r,i)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}function p(){e.MathJax.typeset=function(t){void 0===t&&(t=null),Q.document.options.elements=t,Q.document.reset(),Q.document.render()},e.MathJax.typesetPromise=function(t){return void 0===t&&(t=null),Q.document.options.elements=t,Q.document.reset(),o.handleRetriesFor((function(){Q.document.render()}))},e.MathJax.typesetClear=function(t){void 0===t&&(t=null),t?Q.document.clearMathItemsWithin(t):Q.document.clear()}}function h(t,r,T){var n=t+\"2\"+r;e.MathJax[n]=function(t,e){return void 0===e&&(e={}),e.format=T.name,Q.document.convert(t,e)},e.MathJax[n+\"Promise\"]=function(t,e){return void 0===e&&(e={}),e.format=T.name,o.handleRetriesFor((function(){return Q.document.convert(t,e)}))},e.MathJax[r+\"Stylesheet\"]=function(){return Q.output.styleSheet(Q.document)},\"getMetricsFor\"in Q.output&&(e.MathJax.getMetricsFor=function(t,e){return Q.output.getMetricsFor(t,e)})}function f(t,r){var T=e.MathJax._.core.MathItem.STATE;e.MathJax[t+\"2mml\"]=function(t,e){return void 0===e&&(e={}),e.end=T.CONVERT,e.format=r.name,l(Q.document.convert(t,e))},e.MathJax[t+\"2mmlPromise\"]=function(t,e){return void 0===e&&(e={}),e.end=T.CONVERT,e.format=r.name,o.handleRetriesFor((function(){return l(Q.document.convert(t,e))}))}}function d(t,Q){\"tex\"===t&&(e.MathJax.texReset=function(t){return void 0===t&&(t=0),Q.parseOptions.tags.reset(t)})}function L(){var t,r,n=[];try{for(var o=T(e.CONFIG.input),i=o.next();!i.done;i=o.next()){var a=i.value,s=Q.constructors[a];if(!s)throw Error('Input Jax \"'+a+'\" is not defined (has it been loaded?)');n.push(new s(e.MathJax.config[a]))}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n}function H(){var t=e.CONFIG.output;if(!t)return null;var r=Q.constructors[t];if(!r)throw Error('Output Jax \"'+t+'\" is not defined (has it been loaded?)');return new r(e.MathJax.config[t])}function m(){var t=e.CONFIG.adaptor;if(!t||\"none\"===t)return null;var r=Q.constructors[t];if(!r)throw Error('DOMAdaptor \"'+t+'\" is not defined (has it been loaded?)');return r(e.MathJax.config[t])}function y(){var t,r,n=e.CONFIG.handler;if(!n||\"none\"===n||!Q.adaptor)return null;var o=Q.constructors[n];if(!o)throw Error('Handler \"'+n+'\" is not defined (has it been loaded?)');var i=new o(Q.adaptor,5);try{for(var a=T(s),l=a.next();!l.done;l=a.next()){i=l.value.item(i)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return i}function v(t){return void 0===t&&(t=null),o.document(t||e.CONFIG.document,r(r({},e.MathJax.config.options),{InputJax:Q.input,OutputJax:Q.output}))}Q.constructors={},Q.input=[],Q.output=null,Q.handler=null,Q.adaptor=null,Q.elements=null,Q.document=null,Q.promise=new Promise((function(t,e){Q.promiseResolve=t,Q.promiseReject=e})),Q.pagePromise=new Promise((function(e,Q){var r=t.document;if(r&&r.readyState&&\"complete\"!==r.readyState&&\"interactive\"!==r.readyState){var T=function(){return e()};r.defaultView.addEventListener(\"load\",T,!0),r.defaultView.addEventListener(\"DOMContentLoaded\",T,!0)}else e()})),Q.toMML=l,Q.registerConstructor=function(t,e){Q.constructors[t]=e},Q.useHandler=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.handler&&!Q||(e.CONFIG.handler=t)},Q.useAdaptor=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.adaptor&&!Q||(e.CONFIG.adaptor=t)},Q.useInput=function(t,Q){void 0===Q&&(Q=!1),a&&!Q||e.CONFIG.input.push(t)},Q.useOutput=function(t,Q){void 0===Q&&(Q=!1),e.CONFIG.output&&!Q||(e.CONFIG.output=t)},Q.extendHandler=function(t,e){void 0===e&&(e=10),s.add(t,e)},Q.defaultReady=function(){c(),u(),Q.pagePromise.then((function(){return e.CONFIG.pageReady()})).then((function(){return Q.promiseResolve()})).catch((function(t){return Q.promiseReject(t)}))},Q.defaultPageReady=function(){return e.CONFIG.typeset&&e.MathJax.typesetPromise?e.MathJax.typesetPromise(e.CONFIG.elements):Promise.resolve()},Q.getComponents=c,Q.makeMethods=u,Q.makeTypesetMethods=p,Q.makeOutputMethods=h,Q.makeMmlMethods=f,Q.makeResetMethod=d,Q.getInputJax=L,Q.getOutputJax=H,Q.getAdaptor=m,Q.getHandler=y,Q.getDocument=v}(n=e.Startup||(e.Startup={})),e.MathJax=o.MathJax,void 0===e.MathJax._.startup&&(o.combineDefaults(e.MathJax.config,\"startup\",{input:[],output:\"\",handler:null,adaptor:null,document:\"undefined\"==typeof document?\"\":document,elements:null,typeset:!0,ready:n.defaultReady.bind(n),pageReady:n.defaultPageReady.bind(n)}),o.combineWithMathJax({startup:n,options:{}})),e.CONFIG=e.MathJax.config.startup;var a=0!==e.CONFIG.input.length}).call(this,Q(271))},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MathMLVisitor=void 0;var o=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.document=null,e}return T(e,t),e.prototype.visitTree=function(t,e){this.document=e;var Q=e.createElement(\"top\");return this.visitNode(t,Q),this.document=null,Q.firstChild},e.prototype.visitTextNode=function(t,e){e.appendChild(this.document.createTextNode(t.getText()))},e.prototype.visitXMLNode=function(t,e){e.appendChild(t.getXML().cloneNode(!0))},e.prototype.visitInferredMrowNode=function(t,e){var Q,r;try{for(var T=n(t.childNodes),o=T.next();!o.done;o=T.next()){var i=o.value;this.visitNode(i,e)}}catch(t){Q={error:t}}finally{try{o&&!o.done&&(r=T.return)&&r.call(T)}finally{if(Q)throw Q.error}}},e.prototype.visitDefault=function(t,e){var Q,r,T=this.document.createElement(t.kind);this.addAttributes(t,T);try{for(var o=n(t.childNodes),i=o.next();!i.done;i=o.next()){var a=i.value;this.visitNode(a,T)}}catch(t){Q={error:t}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(Q)throw Q.error}}e.appendChild(T)},e.prototype.addAttributes=function(t,e){var Q,r,T=t.attributes,o=T.getExplicitNames();try{for(var i=n(o),a=i.next();!a.done;a=i.next()){var s=a.value;e.setAttribute(s,T.getExplicit(s).toString())}}catch(t){Q={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(Q)throw Q.error}}},e}(Q(82).MmlVisitor);e.MathMLVisitor=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RegisterHTMLHandler=void 0;var r=Q(25),T=Q(49);e.RegisterHTMLHandler=function(t){var e=new T.HTMLHandler(t);return r.mathjax.handlers.register(e),e}},function(t,e,Q){\"use strict\";var r=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},T=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoloadConfiguration=void 0;var n=Q(2),o=Q(3),i=Q(26),a=Q(91),s=Q(29),l=Q(7);function c(t,e,Q,n){var o,i,l,c;if(s.Package.packages.has(t.options.require.prefix+Q)){var h=t.options.autoload[Q],f=r(2===h.length&&Array.isArray(h[0])?h:[h,[]],2),d=f[0],L=f[1];try{for(var H=T(d),m=H.next();!m.done;m=H.next()){var y=m.value;u.remove(y)}}catch(t){o={error:t}}finally{try{m&&!m.done&&(i=H.return)&&i.call(H)}finally{if(o)throw o.error}}try{for(var v=T(L),g=v.next();!g.done;g=v.next()){var b=g.value;p.remove(b)}}catch(t){l={error:t}}finally{try{g&&!g.done&&(c=v.return)&&c.call(v)}finally{if(l)throw l.error}}t.string=(n?e:\"\\\\begin{\"+e.slice(1)+\"}\")+t.string.slice(t.i),t.i=0}a.RequireLoad(t,Q)}var u=new o.CommandMap(\"autoload-macros\",{},{}),p=new o.CommandMap(\"autoload-environments\",{},{});e.AutoloadConfiguration=n.Configuration.create(\"autoload\",{handler:{macro:[\"autoload-macros\"],environment:[\"autoload-environments\"]},options:{autoload:l.expandable({action:[\"toggle\",\"mathtip\",\"texttip\"],amscd:[[],[\"CD\"]],bbox:[\"bbox\"],boldsymbol:[\"boldsymbol\"],braket:[\"bra\",\"ket\",\"braket\",\"set\",\"Bra\",\"Ket\",\"Braket\",\"Set\",\"ketbra\",\"Ketbra\"],bussproofs:[[],[\"prooftree\"]],cancel:[\"cancel\",\"bcancel\",\"xcancel\",\"cancelto\"],color:[\"color\",\"definecolor\",\"textcolor\",\"colorbox\",\"fcolorbox\"],enclose:[\"enclose\"],extpfeil:[\"xtwoheadrightarrow\",\"xtwoheadleftarrow\",\"xmapsto\",\"xlongequal\",\"xtofrom\",\"Newextarrow\"],html:[\"href\",\"class\",\"style\",\"cssId\"],mhchem:[\"ce\",\"pu\"],newcommand:[\"newcommand\",\"renewcommand\",\"newenvironment\",\"renewenvironment\",\"def\",\"let\"],unicode:[\"unicode\"],verb:[\"verb\"]})},config:function(t,e){var Q,n,o,s,l,h,f=e.parseOptions,d=f.handlers.get(\"macro\"),L=f.handlers.get(\"environment\"),H=f.options.autoload;f.packageData.set(\"autoload\",{Autoload:c});try{for(var m=T(Object.keys(H)),y=m.next();!y.done;y=m.next()){var v=y.value,g=H[v],b=r(2===g.length&&Array.isArray(g[0])?g:[g,[]],2),M=b[0],V=b[1];try{for(var x=(o=void 0,T(M)),O=x.next();!O.done;O=x.next()){var _=O.value;d.lookup(_)&&\"color\"!==_||u.add(_,new i.Macro(_,c,[v,!0]))}}catch(t){o={error:t}}finally{try{O&&!O.done&&(s=x.return)&&s.call(x)}finally{if(o)throw o.error}}try{for(var S=(l=void 0,T(V)),E=S.next();!E.done;E=S.next()){var C=E.value;L.lookup(C)||p.add(C,new i.Macro(C,c,[v,!1]))}}catch(t){l={error:t}}finally{try{E&&!E.done&&(h=S.return)&&h.call(S)}finally{if(l)throw l.error}}}}catch(t){Q={error:t}}finally{try{y&&!y.done&&(n=m.return)&&n.call(m)}finally{if(Q)throw Q.error}}f.packageData.get(\"require\")||a.RequireConfiguration.config(t,e)},init:function(t){t.options.require||l.defaultOptions(t.options,a.RequireConfiguration.options)},priority:10})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(13),n=Q(16),o=Q(23),i=Q(0);new r.RegExpMap(\"letter\",o.default.variable,/[a-z]/i),new r.RegExpMap(\"digit\",o.default.digit,/[0-9.,]/),new r.RegExpMap(\"command\",o.default.controlSequence,/^\\\\/),new r.MacroMap(\"special\",{\"{\":\"Open\",\"}\":\"Close\",\"~\":\"Tilde\",\"^\":\"Superscript\",_:\"Subscript\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"'\":\"Prime\",\"%\":\"Comment\",\"&\":\"Entry\",\"#\":\"Hash\",\"\\xa0\":\"Space\",\"\\u2019\":\"Prime\"},n.default),new r.CharacterMap(\"mathchar0mi\",o.default.mathchar0mi,{alpha:\"\\u03b1\",beta:\"\\u03b2\",gamma:\"\\u03b3\",delta:\"\\u03b4\",epsilon:\"\\u03f5\",zeta:\"\\u03b6\",eta:\"\\u03b7\",theta:\"\\u03b8\",iota:\"\\u03b9\",kappa:\"\\u03ba\",lambda:\"\\u03bb\",mu:\"\\u03bc\",nu:\"\\u03bd\",xi:\"\\u03be\",omicron:\"\\u03bf\",pi:\"\\u03c0\",rho:\"\\u03c1\",sigma:\"\\u03c3\",tau:\"\\u03c4\",upsilon:\"\\u03c5\",phi:\"\\u03d5\",chi:\"\\u03c7\",psi:\"\\u03c8\",omega:\"\\u03c9\",varepsilon:\"\\u03b5\",vartheta:\"\\u03d1\",varpi:\"\\u03d6\",varrho:\"\\u03f1\",varsigma:\"\\u03c2\",varphi:\"\\u03c6\",S:[\"\\xa7\",{mathvariant:T.TexConstant.Variant.NORMAL}],aleph:[\"\\u2135\",{mathvariant:T.TexConstant.Variant.NORMAL}],hbar:[\"\\u210f\",{variantForm:!0}],imath:\"\\u0131\",jmath:\"\\u0237\",ell:\"\\u2113\",wp:[\"\\u2118\",{mathvariant:T.TexConstant.Variant.NORMAL}],Re:[\"\\u211c\",{mathvariant:T.TexConstant.Variant.NORMAL}],Im:[\"\\u2111\",{mathvariant:T.TexConstant.Variant.NORMAL}],partial:[\"\\u2202\",{mathvariant:T.TexConstant.Variant.ITALIC}],infty:[\"\\u221e\",{mathvariant:T.TexConstant.Variant.NORMAL}],prime:[\"\\u2032\",{mathvariant:T.TexConstant.Variant.NORMAL,variantForm:!0}],emptyset:[\"\\u2205\",{mathvariant:T.TexConstant.Variant.NORMAL}],nabla:[\"\\u2207\",{mathvariant:T.TexConstant.Variant.NORMAL}],top:[\"\\u22a4\",{mathvariant:T.TexConstant.Variant.NORMAL}],bot:[\"\\u22a5\",{mathvariant:T.TexConstant.Variant.NORMAL}],angle:[\"\\u2220\",{mathvariant:T.TexConstant.Variant.NORMAL}],triangle:[\"\\u25b3\",{mathvariant:T.TexConstant.Variant.NORMAL}],backslash:[\"\\u2216\",{mathvariant:T.TexConstant.Variant.NORMAL,variantForm:!0}],forall:[\"\\u2200\",{mathvariant:T.TexConstant.Variant.NORMAL}],exists:[\"\\u2203\",{mathvariant:T.TexConstant.Variant.NORMAL}],neg:[\"\\xac\",{mathvariant:T.TexConstant.Variant.NORMAL}],lnot:[\"\\xac\",{mathvariant:T.TexConstant.Variant.NORMAL}],flat:[\"\\u266d\",{mathvariant:T.TexConstant.Variant.NORMAL}],natural:[\"\\u266e\",{mathvariant:T.TexConstant.Variant.NORMAL}],sharp:[\"\\u266f\",{mathvariant:T.TexConstant.Variant.NORMAL}],clubsuit:[\"\\u2663\",{mathvariant:T.TexConstant.Variant.NORMAL}],diamondsuit:[\"\\u2662\",{mathvariant:T.TexConstant.Variant.NORMAL}],heartsuit:[\"\\u2661\",{mathvariant:T.TexConstant.Variant.NORMAL}],spadesuit:[\"\\u2660\",{mathvariant:T.TexConstant.Variant.NORMAL}]}),new r.CharacterMap(\"mathchar0mo\",o.default.mathchar0mo,{surd:\"\\u221a\",coprod:[\"\\u2210\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigvee:[\"\\u22c1\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigwedge:[\"\\u22c0\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],biguplus:[\"\\u2a04\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigcap:[\"\\u22c2\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigcup:[\"\\u22c3\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],int:[\"\\u222b\",{texClass:i.TEXCLASS.OP}],intop:[\"\\u222b\",{texClass:i.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:[\"\\u222c\",{texClass:i.TEXCLASS.OP}],iiint:[\"\\u222d\",{texClass:i.TEXCLASS.OP}],prod:[\"\\u220f\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],sum:[\"\\u2211\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigotimes:[\"\\u2a02\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigoplus:[\"\\u2a01\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],bigodot:[\"\\u2a00\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],oint:[\"\\u222e\",{texClass:i.TEXCLASS.OP}],bigsqcup:[\"\\u2a06\",{texClass:i.TEXCLASS.OP,movesupsub:!0}],smallint:[\"\\u222b\",{largeop:!1}],triangleleft:\"\\u25c3\",triangleright:\"\\u25b9\",bigtriangleup:\"\\u25b3\",bigtriangledown:\"\\u25bd\",wedge:\"\\u2227\",land:\"\\u2227\",vee:\"\\u2228\",lor:\"\\u2228\",cap:\"\\u2229\",cup:\"\\u222a\",ddagger:\"\\u2021\",dagger:\"\\u2020\",sqcap:\"\\u2293\",sqcup:\"\\u2294\",uplus:\"\\u228e\",amalg:\"\\u2a3f\",diamond:\"\\u22c4\",bullet:\"\\u2219\",wr:\"\\u2240\",div:\"\\xf7\",odot:[\"\\u2299\",{largeop:!1}],oslash:[\"\\u2298\",{largeop:!1}],otimes:[\"\\u2297\",{largeop:!1}],ominus:[\"\\u2296\",{largeop:!1}],oplus:[\"\\u2295\",{largeop:!1}],mp:\"\\u2213\",pm:\"\\xb1\",circ:\"\\u2218\",bigcirc:\"\\u25ef\",setminus:\"\\u2216\",cdot:\"\\u22c5\",ast:\"\\u2217\",times:\"\\xd7\",star:\"\\u22c6\",propto:\"\\u221d\",sqsubseteq:\"\\u2291\",sqsupseteq:\"\\u2292\",parallel:\"\\u2225\",mid:\"\\u2223\",dashv:\"\\u22a3\",vdash:\"\\u22a2\",leq:\"\\u2264\",le:\"\\u2264\",geq:\"\\u2265\",ge:\"\\u2265\",lt:\"<\",gt:\">\",succ:\"\\u227b\",prec:\"\\u227a\",approx:\"\\u2248\",succeq:\"\\u2ab0\",preceq:\"\\u2aaf\",supset:\"\\u2283\",subset:\"\\u2282\",supseteq:\"\\u2287\",subseteq:\"\\u2286\",in:\"\\u2208\",ni:\"\\u220b\",notin:\"\\u2209\",owns:\"\\u220b\",gg:\"\\u226b\",ll:\"\\u226a\",sim:\"\\u223c\",simeq:\"\\u2243\",perp:\"\\u22a5\",equiv:\"\\u2261\",asymp:\"\\u224d\",smile:\"\\u2323\",frown:\"\\u2322\",ne:\"\\u2260\",neq:\"\\u2260\",cong:\"\\u2245\",doteq:\"\\u2250\",bowtie:\"\\u22c8\",models:\"\\u22a8\",notChar:\"\\u29f8\",Leftrightarrow:\"\\u21d4\",Leftarrow:\"\\u21d0\",Rightarrow:\"\\u21d2\",leftrightarrow:\"\\u2194\",leftarrow:\"\\u2190\",gets:\"\\u2190\",rightarrow:\"\\u2192\",to:[\"\\u2192\",{accent:!1}],mapsto:\"\\u21a6\",leftharpoonup:\"\\u21bc\",leftharpoondown:\"\\u21bd\",rightharpoonup:\"\\u21c0\",rightharpoondown:\"\\u21c1\",nearrow:\"\\u2197\",searrow:\"\\u2198\",nwarrow:\"\\u2196\",swarrow:\"\\u2199\",rightleftharpoons:\"\\u21cc\",hookrightarrow:\"\\u21aa\",hookleftarrow:\"\\u21a9\",longleftarrow:\"\\u27f5\",Longleftarrow:\"\\u27f8\",longrightarrow:\"\\u27f6\",Longrightarrow:\"\\u27f9\",Longleftrightarrow:\"\\u27fa\",longleftrightarrow:\"\\u27f7\",longmapsto:\"\\u27fc\",ldots:\"\\u2026\",cdots:\"\\u22ef\",vdots:\"\\u22ee\",ddots:\"\\u22f1\",dotsc:\"\\u2026\",dotsb:\"\\u22ef\",dotsm:\"\\u22ef\",dotsi:\"\\u22ef\",dotso:\"\\u2026\",ldotp:[\".\",{texClass:i.TEXCLASS.PUNCT}],cdotp:[\"\\u22c5\",{texClass:i.TEXCLASS.PUNCT}],colon:[\":\",{texClass:i.TEXCLASS.PUNCT}]}),new r.CharacterMap(\"mathchar7\",o.default.mathchar7,{Gamma:\"\\u0393\",Delta:\"\\u0394\",Theta:\"\\u0398\",Lambda:\"\\u039b\",Xi:\"\\u039e\",Pi:\"\\u03a0\",Sigma:\"\\u03a3\",Upsilon:\"\\u03a5\",Phi:\"\\u03a6\",Psi:\"\\u03a8\",Omega:\"\\u03a9\",_:\"_\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",And:\"&\"}),new r.DelimiterMap(\"delimiter\",o.default.delimiter,{\"(\":\"(\",\")\":\")\",\"[\":\"[\",\"]\":\"]\",\"<\":\"\\u27e8\",\">\":\"\\u27e9\",\"\\\\lt\":\"\\u27e8\",\"\\\\gt\":\"\\u27e9\",\"/\":\"/\",\"|\":[\"|\",{texClass:i.TEXCLASS.ORD}],\".\":\"\",\"\\\\\\\\\":\"\\\\\",\"\\\\lmoustache\":\"\\u23b0\",\"\\\\rmoustache\":\"\\u23b1\",\"\\\\lgroup\":\"\\u27ee\",\"\\\\rgroup\":\"\\u27ef\",\"\\\\arrowvert\":\"\\u23d0\",\"\\\\Arrowvert\":\"\\u2016\",\"\\\\bracevert\":\"\\u23aa\",\"\\\\Vert\":[\"\\u2225\",{texClass:i.TEXCLASS.ORD}],\"\\\\|\":[\"\\u2225\",{texClass:i.TEXCLASS.ORD}],\"\\\\vert\":[\"|\",{texClass:i.TEXCLASS.ORD}],\"\\\\uparrow\":\"\\u2191\",\"\\\\downarrow\":\"\\u2193\",\"\\\\updownarrow\":\"\\u2195\",\"\\\\Uparrow\":\"\\u21d1\",\"\\\\Downarrow\":\"\\u21d3\",\"\\\\Updownarrow\":\"\\u21d5\",\"\\\\backslash\":\"\\\\\",\"\\\\rangle\":\"\\u27e9\",\"\\\\langle\":\"\\u27e8\",\"\\\\rbrace\":\"}\",\"\\\\lbrace\":\"{\",\"\\\\}\":\"}\",\"\\\\{\":\"{\",\"\\\\rceil\":\"\\u2309\",\"\\\\lceil\":\"\\u2308\",\"\\\\rfloor\":\"\\u230b\",\"\\\\lfloor\":\"\\u230a\",\"\\\\lbrack\":\"[\",\"\\\\rbrack\":\"]\"}),new r.CommandMap(\"macros\",{displaystyle:[\"SetStyle\",\"D\",!0,0],textstyle:[\"SetStyle\",\"T\",!1,0],scriptstyle:[\"SetStyle\",\"S\",!1,1],scriptscriptstyle:[\"SetStyle\",\"SS\",!1,2],rm:[\"SetFont\",T.TexConstant.Variant.NORMAL],mit:[\"SetFont\",T.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",T.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",T.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",T.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",T.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",T.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",T.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",T.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",T.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],arcsin:[\"NamedFn\"],arccos:[\"NamedFn\"],arctan:[\"NamedFn\"],arg:[\"NamedFn\"],cos:[\"NamedFn\"],cosh:[\"NamedFn\"],cot:[\"NamedFn\"],coth:[\"NamedFn\"],csc:[\"NamedFn\"],deg:[\"NamedFn\"],det:\"NamedOp\",dim:[\"NamedFn\"],exp:[\"NamedFn\"],gcd:\"NamedOp\",hom:[\"NamedFn\"],inf:\"NamedOp\",ker:[\"NamedFn\"],lg:[\"NamedFn\"],lim:\"NamedOp\",liminf:[\"NamedOp\",\"lim&thinsp;inf\"],limsup:[\"NamedOp\",\"lim&thinsp;sup\"],ln:[\"NamedFn\"],log:[\"NamedFn\"],max:\"NamedOp\",min:\"NamedOp\",Pr:\"NamedOp\",sec:[\"NamedFn\"],sin:[\"NamedFn\"],sinh:[\"NamedFn\"],sup:\"NamedOp\",tan:[\"NamedFn\"],tanh:[\"NamedFn\"],limits:[\"Limits\",1],nolimits:[\"Limits\",0],overline:[\"UnderOver\",\"00AF\",null,1],underline:[\"UnderOver\",\"005F\"],overbrace:[\"UnderOver\",\"23DE\",1],underbrace:[\"UnderOver\",\"23DF\",1],overparen:[\"UnderOver\",\"23DC\"],underparen:[\"UnderOver\",\"23DD\"],overrightarrow:[\"UnderOver\",\"2192\"],underrightarrow:[\"UnderOver\",\"2192\"],overleftarrow:[\"UnderOver\",\"2190\"],underleftarrow:[\"UnderOver\",\"2190\"],overleftrightarrow:[\"UnderOver\",\"2194\"],underleftrightarrow:[\"UnderOver\",\"2194\"],overset:\"Overset\",underset:\"Underset\",stackrel:[\"Macro\",\"\\\\mathrel{\\\\mathop{#2}\\\\limits^{#1}}\",2],over:\"Over\",overwithdelims:\"Over\",atop:\"Over\",atopwithdelims:\"Over\",above:\"Over\",abovewithdelims:\"Over\",brace:[\"Over\",\"{\",\"}\"],brack:[\"Over\",\"[\",\"]\"],choose:[\"Over\",\"(\",\")\"],frac:\"Frac\",sqrt:\"Sqrt\",root:\"Root\",uproot:[\"MoveRoot\",\"upRoot\"],leftroot:[\"MoveRoot\",\"leftRoot\"],left:\"LeftRight\",right:\"LeftRight\",middle:\"Middle\",llap:\"Lap\",rlap:\"Lap\",raise:\"RaiseLower\",lower:\"RaiseLower\",moveleft:\"MoveLeftRight\",moveright:\"MoveLeftRight\",\",\":[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",T.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],big:[\"MakeBig\",i.TEXCLASS.ORD,.85],Big:[\"MakeBig\",i.TEXCLASS.ORD,1.15],bigg:[\"MakeBig\",i.TEXCLASS.ORD,1.45],Bigg:[\"MakeBig\",i.TEXCLASS.ORD,1.75],bigl:[\"MakeBig\",i.TEXCLASS.OPEN,.85],Bigl:[\"MakeBig\",i.TEXCLASS.OPEN,1.15],biggl:[\"MakeBig\",i.TEXCLASS.OPEN,1.45],Biggl:[\"MakeBig\",i.TEXCLASS.OPEN,1.75],bigr:[\"MakeBig\",i.TEXCLASS.CLOSE,.85],Bigr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.15],biggr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.45],Biggr:[\"MakeBig\",i.TEXCLASS.CLOSE,1.75],bigm:[\"MakeBig\",i.TEXCLASS.REL,.85],Bigm:[\"MakeBig\",i.TEXCLASS.REL,1.15],biggm:[\"MakeBig\",i.TEXCLASS.REL,1.45],Biggm:[\"MakeBig\",i.TEXCLASS.REL,1.75],mathord:[\"TeXAtom\",i.TEXCLASS.ORD],mathop:[\"TeXAtom\",i.TEXCLASS.OP],mathopen:[\"TeXAtom\",i.TEXCLASS.OPEN],mathclose:[\"TeXAtom\",i.TEXCLASS.CLOSE],mathbin:[\"TeXAtom\",i.TEXCLASS.BIN],mathrel:[\"TeXAtom\",i.TEXCLASS.REL],mathpunct:[\"TeXAtom\",i.TEXCLASS.PUNCT],mathinner:[\"TeXAtom\",i.TEXCLASS.INNER],vcenter:[\"TeXAtom\",i.TEXCLASS.VCENTER],buildrel:\"BuildRel\",hbox:[\"HBox\",0],text:\"HBox\",mbox:[\"HBox\",0],fbox:\"FBox\",strut:\"Strut\",mathstrut:[\"Macro\",\"\\\\vphantom{(}\"],phantom:\"Phantom\",vphantom:[\"Phantom\",1,0],hphantom:[\"Phantom\",0,1],smash:\"Smash\",acute:[\"Accent\",\"00B4\"],grave:[\"Accent\",\"0060\"],ddot:[\"Accent\",\"00A8\"],tilde:[\"Accent\",\"007E\"],bar:[\"Accent\",\"00AF\"],breve:[\"Accent\",\"02D8\"],check:[\"Accent\",\"02C7\"],hat:[\"Accent\",\"005E\"],vec:[\"Accent\",\"2192\"],dot:[\"Accent\",\"02D9\"],widetilde:[\"Accent\",\"007E\",1],widehat:[\"Accent\",\"005E\",1],matrix:\"Matrix\",array:\"Matrix\",pmatrix:[\"Matrix\",\"(\",\")\"],cases:[\"Matrix\",\"{\",\"\",\"left left\",null,\".1em\",null,!0],eqalign:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\"],displaylines:[\"Matrix\",null,null,\"center\",null,\".5em\",\"D\"],cr:\"Cr\",\"\\\\\":\"CrLaTeX\",newline:[\"CrLaTeX\",!0],hline:[\"HLine\",\"solid\"],hdashline:[\"HLine\",\"dashed\"],eqalignno:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"right\"],leqalignno:[\"Matrix\",null,null,\"right left\",T.TexConstant.Length.THICKMATHSPACE,\".5em\",\"D\",null,\"left\"],hfill:\"HFill\",hfil:\"HFill\",hfilll:\"HFill\",bmod:[\"Macro\",'\\\\mmlToken{mo}[lspace=\"thickmathspace\" rspace=\"thickmathspace\"]{mod}'],pmod:[\"Macro\",\"\\\\pod{\\\\mmlToken{mi}{mod}\\\\kern 6mu #1}\",1],mod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern12mu}{\\\\kern12mu}{\\\\kern12mu}\\\\mmlToken{mi}{mod}\\\\,\\\\,#1\",1],pod:[\"Macro\",\"\\\\mathchoice{\\\\kern18mu}{\\\\kern8mu}{\\\\kern8mu}{\\\\kern8mu}(#1)\",1],iff:[\"Macro\",\"\\\\;\\\\Longleftrightarrow\\\\;\"],skew:[\"Macro\",\"{{#2{#3\\\\mkern#1mu}\\\\mkern-#1mu}{}}\",3],mathcal:[\"Macro\",\"{\\\\cal #1}\",1],mathscr:[\"Macro\",\"{\\\\scr #1}\",1],mathrm:[\"Macro\",\"{\\\\rm #1}\",1],mathbf:[\"Macro\",\"{\\\\bf #1}\",1],mathbb:[\"Macro\",\"{\\\\bbFont #1}\",1],Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],mathit:[\"Macro\",\"{\\\\it #1}\",1],mathfrak:[\"Macro\",\"{\\\\frak #1}\",1],mathsf:[\"Macro\",\"{\\\\sf #1}\",1],mathtt:[\"Macro\",\"{\\\\tt #1}\",1],textrm:[\"HBox\",null,T.TexConstant.Variant.NORMAL],textit:[\"HBox\",null,T.TexConstant.Variant.ITALIC],textbf:[\"HBox\",null,T.TexConstant.Variant.BOLD],textsf:[\"HBox\",null,T.TexConstant.Variant.SANSSERIF],texttt:[\"HBox\",null,T.TexConstant.Variant.MONOSPACE],pmb:[\"Macro\",\"\\\\rlap{#1}\\\\kern1px{#1}\",1],TeX:[\"Macro\",\"T\\\\kern-.14em\\\\lower.5ex{E}\\\\kern-.115em X\"],LaTeX:[\"Macro\",\"L\\\\kern-.325em\\\\raise.21em{\\\\scriptstyle{A}}\\\\kern-.17em\\\\TeX\"],\" \":[\"Macro\",\"\\\\text{ }\"],not:\"Not\",dots:\"Dots\",space:\"Tilde\",\"\\xa0\":\"Tilde\",begin:\"BeginEnd\",end:\"BeginEnd\",label:\"HandleLabel\",ref:\"HandleRef\",nonumber:\"HandleNoTag\",mathchoice:\"MathChoice\",mmlToken:\"MmlToken\"},n.default),new r.EnvironmentMap(\"environment\",o.default.environment,{array:[\"AlignedArray\"],equation:[\"Equation\",null,!0],\"equation*\":[\"Equation\",null,!1],eqnarray:[\"EqnArray\",null,!0,!0,\"rcl\",\"0 \"+T.TexConstant.Length.THICKMATHSPACE,\".5em\"]},n.default),new r.CharacterMap(\"not_remap\",null,{\"\\u2190\":\"\\u219a\",\"\\u2192\":\"\\u219b\",\"\\u2194\":\"\\u21ae\",\"\\u21d0\":\"\\u21cd\",\"\\u21d2\":\"\\u21cf\",\"\\u21d4\":\"\\u21ce\",\"\\u2208\":\"\\u2209\",\"\\u220b\":\"\\u220c\",\"\\u2223\":\"\\u2224\",\"\\u2225\":\"\\u2226\",\"\\u223c\":\"\\u2241\",\"~\":\"\\u2241\",\"\\u2243\":\"\\u2244\",\"\\u2245\":\"\\u2247\",\"\\u2248\":\"\\u2249\",\"\\u224d\":\"\\u226d\",\"=\":\"\\u2260\",\"\\u2261\":\"\\u2262\",\"<\":\"\\u226e\",\">\":\"\\u226f\",\"\\u2264\":\"\\u2270\",\"\\u2265\":\"\\u2271\",\"\\u2272\":\"\\u2274\",\"\\u2273\":\"\\u2275\",\"\\u2276\":\"\\u2278\",\"\\u2277\":\"\\u2279\",\"\\u227a\":\"\\u2280\",\"\\u227b\":\"\\u2281\",\"\\u2282\":\"\\u2284\",\"\\u2283\":\"\\u2285\",\"\\u2286\":\"\\u2288\",\"\\u2287\":\"\\u2289\",\"\\u22a2\":\"\\u22ac\",\"\\u22a8\":\"\\u22ad\",\"\\u22a9\":\"\\u22ae\",\"\\u22ab\":\"\\u22af\",\"\\u227c\":\"\\u22e0\",\"\\u227d\":\"\\u22e1\",\"\\u2291\":\"\\u22e2\",\"\\u2292\":\"\\u22e3\",\"\\u22b2\":\"\\u22ea\",\"\\u22b3\":\"\\u22eb\",\"\\u22b4\":\"\\u22ec\",\"\\u22b5\":\"\\u22ed\",\"\\u2203\":\"\\u2204\"})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({Pcy:\"\\u041f\",Poincareplane:\"\\u210c\",Pr:\"\\u2abb\",Prime:\"\\u2033\",Proportion:\"\\u2237\",par:\"\\u2225\",para:\"\\xb6\",parallel:\"\\u2225\",parsim:\"\\u2af3\",parsl:\"\\u2afd\",part:\"\\u2202\",pcy:\"\\u043f\",percnt:\"%\",permil:\"\\u2030\",perp:\"\\u22a5\",pertenk:\"\\u2031\",phmmat:\"\\u2133\",phone:\"\\u260e\",pitchfork:\"\\u22d4\",planck:\"\\u210f\",planckh:\"\\u210e\",plankv:\"\\u210f\",plus:\"+\",plusacir:\"\\u2a23\",plusb:\"\\u229e\",pluscir:\"\\u2a22\",plusdo:\"\\u2214\",plusdu:\"\\u2a25\",pluse:\"\\u2a72\",plusmn:\"\\xb1\",plussim:\"\\u2a26\",plustwo:\"\\u2a27\",pm:\"\\xb1\",pointint:\"\\u2a15\",pound:\"\\xa3\",pr:\"\\u227a\",prE:\"\\u2ab3\",prcue:\"\\u227c\",pre:\"\\u2aaf\",prec:\"\\u227a\",precapprox:\"\\u2ab7\",preccurlyeq:\"\\u227c\",preceq:\"\\u2aaf\",precsim:\"\\u227e\",primes:\"\\u2119\",prnE:\"\\u2ab5\",prnap:\"\\u2ab9\",prnsim:\"\\u22e8\",prod:\"\\u220f\",profalar:\"\\u232e\",profline:\"\\u2312\",profsurf:\"\\u2313\",prop:\"\\u221d\",propto:\"\\u221d\",prsim:\"\\u227e\",prurel:\"\\u22b0\",puncsp:\"\\u2008\"},\"p\")},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),Q(19).add({RBarr:\"\\u2910\",REG:\"\\xae\",Racute:\"\\u0154\",Rang:\"\\u27eb\",Rarrtl:\"\\u2916\",Rcaron:\"\\u0158\",Rcedil:\"\\u0156\",Rcy:\"\\u0420\",ReverseElement:\"\\u220b\",ReverseUpEquilibrium:\"\\u296f\",Rho:\"\\u03a1\",RightArrowBar:\"\\u21e5\",RightDoubleBracket:\"\\u27e7\",RightDownTeeVector:\"\\u295d\",RightDownVectorBar:\"\\u2955\",RightTeeVector:\"\\u295b\",RightTriangleBar:\"\\u29d0\",RightUpDownVector:\"\\u294f\",RightUpTeeVector:\"\\u295c\",RightUpVectorBar:\"\\u2954\",RightVectorBar:\"\\u2953\",RoundImplies:\"\\u2970\",RuleDelayed:\"\\u29f4\",rAarr:\"\\u21db\",rArr:\"\\u21d2\",rAtail:\"\\u291c\",rBarr:\"\\u290f\",rHar:\"\\u2964\",race:\"\\u223d\\u0331\",racute:\"\\u0155\",radic:\"\\u221a\",raemptyv:\"\\u29b3\",rang:\"\\u27e9\",rangd:\"\\u2992\",range:\"\\u29a5\",rangle:\"\\u27e9\",raquo:\"\\xbb\",rarr:\"\\u2192\",rarrap:\"\\u2975\",rarrb:\"\\u21e5\",rarrbfs:\"\\u2920\",rarrc:\"\\u2933\",rarrfs:\"\\u291e\",rarrhk:\"\\u21aa\",rarrlp:\"\\u21ac\",rarrpl:\"\\u2945\",rarrsim:\"\\u2974\",rarrw:\"\\u219d\",ratail:\"\\u291a\",ratio:\"\\u2236\",rationals:\"\\u211a\",rbarr:\"\\u290d\",rbbrk:\"\\u2773\",rbrke:\"\\u298c\",rbrksld:\"\\u298e\",rbrkslu:\"\\u2990\",rcaron:\"\\u0159\",rcedil:\"\\u0157\",rceil:\"\\u2309\",rcub:\"}\",rcy:\"\\u0440\",rdca:\"\\u2937\",rdldhar:\"\\u2969\",rdquo:\"\\u201d\",rdquor:\"\\u201d\",rdsh:\"\\u21b3\",real:\"\\u211c\",realine:\"\\u211b\",realpart:\"\\u211c\",reals:\"\\u211d\",rect:\"\\u25ad\",reg:\"\\xae\",rfisht:\"\\u297d\",rfloor:\"\\u230b\",rhard:\"\\u21c1\",rharu:\"\\u21c0\",rharul:\"\\u296c\",rightarrow:\"\\u2192\",rightarrowtail:\"\\u21a3\",rightharpoondown:\"\\u21c1\",rightharpoonup:\"\\u21c0\",rightleftarrows:\"\\u21c4\",rightleftharpoons:\"\\u21cc\",rightsquigarrow:\"\\u219d\",risingdotseq:\"\\u2253\",rlarr:\"\\u21c4\",rlhar:\"\\u21cc\",rlm:\"\\u200f\",rmoustache:\"\\u23b1\",rnmid:\"\\u2aee\",roang:\"\\u27ed\",roarr:\"\\u21fe\",robrk:\"\\u27e7\",ropar:\"\\u2986\",roplus:\"\\u2a2e\",rotimes:\"\\u2a35\",rpar:\")\",rpargt:\"\\u2994\",rppolint:\"\\u2a12\",rrarr:\"\\u21c9\",rsaquo:\"\\u203a\",rsh:\"\\u21b1\",rsqb:\"]\",rsquo:\"\\u2019\",rsquor:\"\\u2019\",rthree:\"\\u22cc\",rtrie:\"\\u22b5\",rtrif:\"\\u25b8\",rtriltri:\"\\u29ce\",ruluhar:\"\\u2968\",rx:\"\\u211e\"},\"r\")},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(34),T=Q(3),n=Q(13),o=Q(23),i=Q(9),a=Q(0),s=function(t){for(var e=[],Q=0,r=t.length;Q<r;Q++)e[Q]=i.default.Em(t[Q]);return e.join(\" \")};new T.CharacterMap(\"AMSmath-mathchar0mo\",o.default.mathchar0mo,{iiiint:[\"\\u2a0c\",{texClass:a.TEXCLASS.OP}]}),new T.CommandMap(\"AMSmath-macros\",{mathring:[\"Accent\",\"02DA\"],nobreakspace:\"Tilde\",negmedspace:[\"Spacer\",n.TexConstant.Length.NEGATIVEMEDIUMMATHSPACE],negthickspace:[\"Spacer\",n.TexConstant.Length.NEGATIVETHICKMATHSPACE],idotsint:[\"MultiIntegral\",\"\\\\int\\\\cdots\\\\int\"],dddot:[\"Accent\",\"20DB\"],ddddot:[\"Accent\",\"20DC\"],sideset:[\"Macro\",\"\\\\mathop{\\\\mathop{\\\\rlap{\\\\phantom{#3}}}\\\\nolimits#1\\\\!\\\\mathop{#3}\\\\nolimits#2}\",3],boxed:[\"Macro\",\"\\\\fbox{$\\\\displaystyle{#1}$}\",1],tag:\"HandleTag\",notag:\"HandleNoTag\",eqref:[\"HandleRef\",!0],substack:[\"Macro\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\",1],injlim:[\"NamedOp\",\"inj&thinsp;lim\"],projlim:[\"NamedOp\",\"proj&thinsp;lim\"],varliminf:[\"Macro\",\"\\\\mathop{\\\\underline{\\\\mmlToken{mi}{lim}}}\"],varlimsup:[\"Macro\",\"\\\\mathop{\\\\overline{\\\\mmlToken{mi}{lim}}}\"],varinjlim:[\"Macro\",\"\\\\mathop{\\\\underrightarrow{\\\\mmlToken{mi}{lim}}}\"],varprojlim:[\"Macro\",\"\\\\mathop{\\\\underleftarrow{\\\\mmlToken{mi}{lim}}}\"],DeclareMathOperator:\"HandleDeclareOp\",operatorname:\"HandleOperatorName\",SkipLimits:\"SkipLimits\",genfrac:\"Genfrac\",frac:[\"Genfrac\",\"\",\"\",\"\",\"\"],tfrac:[\"Genfrac\",\"\",\"\",\"\",\"1\"],dfrac:[\"Genfrac\",\"\",\"\",\"\",\"0\"],binom:[\"Genfrac\",\"(\",\")\",\"0\",\"\"],tbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"1\"],dbinom:[\"Genfrac\",\"(\",\")\",\"0\",\"0\"],cfrac:\"CFrac\",shoveleft:[\"HandleShove\",n.TexConstant.Align.LEFT],shoveright:[\"HandleShove\",n.TexConstant.Align.RIGHT],xrightarrow:[\"xArrow\",8594,5,6],xleftarrow:[\"xArrow\",8592,7,3]},r.AmsMethods),new T.EnvironmentMap(\"AMSmath-environment\",o.default.environment,{\"eqnarray*\":[\"EqnArray\",null,!1,!0,\"rcl\",\"0 \"+n.TexConstant.Length.THICKMATHSPACE,\".5em\"],align:[\"EqnArray\",null,!0,!0,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0])],\"align*\":[\"EqnArray\",null,!1,!0,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0])],multline:[\"Multline\",null,!0],\"multline*\":[\"Multline\",null,!1],split:[\"EqnArray\",null,!1,!1,\"rl\",s([0])],gather:[\"EqnArray\",null,!0,!0,\"c\"],\"gather*\":[\"EqnArray\",null,!1,!0,\"c\"],alignat:[\"AlignAt\",null,!0,!0],\"alignat*\":[\"AlignAt\",null,!1,!0],alignedat:[\"AlignAt\",null,!1,!1],aligned:[\"AmsEqnArray\",null,null,null,\"rlrlrlrlrlrl\",s([0,2,0,2,0,2,0,2,0,2,0]),\".5em\",\"D\"],gathered:[\"AmsEqnArray\",null,null,null,\"c\",null,\".5em\",\"D\"],subarray:[\"Array\",null,null,null,null,s([0]),\"0.1em\",\"S\",1],smallmatrix:[\"Array\",null,null,null,\"c\",s([1/3]),\".2em\",\"S\",1],matrix:[\"Array\",null,null,null,\"c\"],pmatrix:[\"Array\",null,\"(\",\")\",\"c\"],bmatrix:[\"Array\",null,\"[\",\"]\",\"c\"],Bmatrix:[\"Array\",null,\"\\\\{\",\"\\\\}\",\"c\"],vmatrix:[\"Array\",null,\"\\\\vert\",\"\\\\vert\",\"c\"],Vmatrix:[\"Array\",null,\"\\\\Vert\",\"\\\\Vert\",\"c\"],cases:[\"Array\",null,\"\\\\{\",\".\",\"ll\",null,\".2em\",\"T\"]},r.AmsMethods),new T.DelimiterMap(\"AMSmath-delimiter\",o.default.delimiter,{\"\\\\lvert\":[\"|\",{texClass:a.TEXCLASS.OPEN}],\"\\\\rvert\":[\"|\",{texClass:a.TEXCLASS.CLOSE}],\"\\\\lVert\":[\"\\u2016\",{texClass:a.TEXCLASS.OPEN}],\"\\\\rVert\":[\"\\u2016\",{texClass:a.TEXCLASS.CLOSE}]}),new T.CharacterMap(\"AMSsymbols-mathchar0mi\",o.default.mathchar0mi,{digamma:\"\\u03dd\",varkappa:\"\\u03f0\",varGamma:[\"\\u0393\",{mathvariant:n.TexConstant.Variant.ITALIC}],varDelta:[\"\\u0394\",{mathvariant:n.TexConstant.Variant.ITALIC}],varTheta:[\"\\u0398\",{mathvariant:n.TexConstant.Variant.ITALIC}],varLambda:[\"\\u039b\",{mathvariant:n.TexConstant.Variant.ITALIC}],varXi:[\"\\u039e\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPi:[\"\\u03a0\",{mathvariant:n.TexConstant.Variant.ITALIC}],varSigma:[\"\\u03a3\",{mathvariant:n.TexConstant.Variant.ITALIC}],varUpsilon:[\"\\u03a5\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPhi:[\"\\u03a6\",{mathvariant:n.TexConstant.Variant.ITALIC}],varPsi:[\"\\u03a8\",{mathvariant:n.TexConstant.Variant.ITALIC}],varOmega:[\"\\u03a9\",{mathvariant:n.TexConstant.Variant.ITALIC}],beth:\"\\u2136\",gimel:\"\\u2137\",daleth:\"\\u2138\",backprime:[\"\\u2035\",{variantForm:!0}],hslash:\"\\u210f\",varnothing:[\"\\u2205\",{variantForm:!0}],blacktriangle:\"\\u25b4\",triangledown:[\"\\u25bd\",{variantForm:!0}],blacktriangledown:\"\\u25be\",square:\"\\u25fb\",Box:\"\\u25fb\",blacksquare:\"\\u25fc\",lozenge:\"\\u25ca\",Diamond:\"\\u25ca\",blacklozenge:\"\\u29eb\",circledS:[\"\\u24c8\",{mathvariant:n.TexConstant.Variant.NORMAL}],bigstar:\"\\u2605\",sphericalangle:\"\\u2222\",measuredangle:\"\\u2221\",nexists:\"\\u2204\",complement:\"\\u2201\",mho:\"\\u2127\",eth:[\"\\xf0\",{mathvariant:n.TexConstant.Variant.NORMAL}],Finv:\"\\u2132\",diagup:\"\\u2571\",Game:\"\\u2141\",diagdown:\"\\u2572\",Bbbk:[\"k\",{mathvariant:n.TexConstant.Variant.DOUBLESTRUCK}],yen:\"\\xa5\",circledR:\"\\xae\",checkmark:\"\\u2713\",maltese:\"\\u2720\"}),new T.CharacterMap(\"AMSsymbols-mathchar0m0\",o.default.mathchar0mo,{dotplus:\"\\u2214\",ltimes:\"\\u22c9\",smallsetminus:[\"\\u2216\",{variantForm:!0}],rtimes:\"\\u22ca\",Cap:\"\\u22d2\",doublecap:\"\\u22d2\",leftthreetimes:\"\\u22cb\",Cup:\"\\u22d3\",doublecup:\"\\u22d3\",rightthreetimes:\"\\u22cc\",barwedge:\"\\u22bc\",curlywedge:\"\\u22cf\",veebar:\"\\u22bb\",curlyvee:\"\\u22ce\",doublebarwedge:\"\\u2a5e\",boxminus:\"\\u229f\",circleddash:\"\\u229d\",boxtimes:\"\\u22a0\",circledast:\"\\u229b\",boxdot:\"\\u22a1\",circledcirc:\"\\u229a\",boxplus:\"\\u229e\",centerdot:[\"\\u22c5\",{variantForm:!0}],divideontimes:\"\\u22c7\",intercal:\"\\u22ba\",leqq:\"\\u2266\",geqq:\"\\u2267\",leqslant:\"\\u2a7d\",geqslant:\"\\u2a7e\",eqslantless:\"\\u2a95\",eqslantgtr:\"\\u2a96\",lesssim:\"\\u2272\",gtrsim:\"\\u2273\",lessapprox:\"\\u2a85\",gtrapprox:\"\\u2a86\",approxeq:\"\\u224a\",lessdot:\"\\u22d6\",gtrdot:\"\\u22d7\",lll:\"\\u22d8\",llless:\"\\u22d8\",ggg:\"\\u22d9\",gggtr:\"\\u22d9\",lessgtr:\"\\u2276\",gtrless:\"\\u2277\",lesseqgtr:\"\\u22da\",gtreqless:\"\\u22db\",lesseqqgtr:\"\\u2a8b\",gtreqqless:\"\\u2a8c\",doteqdot:\"\\u2251\",Doteq:\"\\u2251\",eqcirc:\"\\u2256\",risingdotseq:\"\\u2253\",circeq:\"\\u2257\",fallingdotseq:\"\\u2252\",triangleq:\"\\u225c\",backsim:\"\\u223d\",thicksim:[\"\\u223c\",{variantForm:!0}],backsimeq:\"\\u22cd\",thickapprox:[\"\\u2248\",{variantForm:!0}],subseteqq:\"\\u2ac5\",supseteqq:\"\\u2ac6\",Subset:\"\\u22d0\",Supset:\"\\u22d1\",sqsubset:\"\\u228f\",sqsupset:\"\\u2290\",preccurlyeq:\"\\u227c\",succcurlyeq:\"\\u227d\",curlyeqprec:\"\\u22de\",curlyeqsucc:\"\\u22df\",precsim:\"\\u227e\",succsim:\"\\u227f\",precapprox:\"\\u2ab7\",succapprox:\"\\u2ab8\",vartriangleleft:\"\\u22b2\",lhd:\"\\u22b2\",vartriangleright:\"\\u22b3\",rhd:\"\\u22b3\",trianglelefteq:\"\\u22b4\",unlhd:\"\\u22b4\",trianglerighteq:\"\\u22b5\",unrhd:\"\\u22b5\",vDash:[\"\\u22a8\",{variantForm:!0}],Vdash:\"\\u22a9\",Vvdash:\"\\u22aa\",smallsmile:[\"\\u2323\",{variantForm:!0}],shortmid:[\"\\u2223\",{variantForm:!0}],smallfrown:[\"\\u2322\",{variantForm:!0}],shortparallel:[\"\\u2225\",{variantForm:!0}],bumpeq:\"\\u224f\",between:\"\\u226c\",Bumpeq:\"\\u224e\",pitchfork:\"\\u22d4\",varpropto:[\"\\u221d\",{variantForm:!0}],backepsilon:\"\\u220d\",blacktriangleleft:\"\\u25c2\",blacktriangleright:\"\\u25b8\",therefore:\"\\u2234\",because:\"\\u2235\",eqsim:\"\\u2242\",vartriangle:[\"\\u25b3\",{variantForm:!0}],Join:\"\\u22c8\",nless:\"\\u226e\",ngtr:\"\\u226f\",nleq:\"\\u2270\",ngeq:\"\\u2271\",nleqslant:[\"\\u2a87\",{variantForm:!0}],ngeqslant:[\"\\u2a88\",{variantForm:!0}],nleqq:[\"\\u2270\",{variantForm:!0}],ngeqq:[\"\\u2271\",{variantForm:!0}],lneq:\"\\u2a87\",gneq:\"\\u2a88\",lneqq:\"\\u2268\",gneqq:\"\\u2269\",lvertneqq:[\"\\u2268\",{variantForm:!0}],gvertneqq:[\"\\u2269\",{variantForm:!0}],lnsim:\"\\u22e6\",gnsim:\"\\u22e7\",lnapprox:\"\\u2a89\",gnapprox:\"\\u2a8a\",nprec:\"\\u2280\",nsucc:\"\\u2281\",npreceq:[\"\\u22e0\",{variantForm:!0}],nsucceq:[\"\\u22e1\",{variantForm:!0}],precneqq:\"\\u2ab5\",succneqq:\"\\u2ab6\",precnsim:\"\\u22e8\",succnsim:\"\\u22e9\",precnapprox:\"\\u2ab9\",succnapprox:\"\\u2aba\",nsim:\"\\u2241\",ncong:\"\\u2247\",nshortmid:[\"\\u2224\",{variantForm:!0}],nshortparallel:[\"\\u2226\",{variantForm:!0}],nmid:\"\\u2224\",nparallel:\"\\u2226\",nvdash:\"\\u22ac\",nvDash:\"\\u22ad\",nVdash:\"\\u22ae\",nVDash:\"\\u22af\",ntriangleleft:\"\\u22ea\",ntriangleright:\"\\u22eb\",ntrianglelefteq:\"\\u22ec\",ntrianglerighteq:\"\\u22ed\",nsubseteq:\"\\u2288\",nsupseteq:\"\\u2289\",nsubseteqq:[\"\\u2288\",{variantForm:!0}],nsupseteqq:[\"\\u2289\",{variantForm:!0}],subsetneq:\"\\u228a\",supsetneq:\"\\u228b\",varsubsetneq:[\"\\u228a\",{variantForm:!0}],varsupsetneq:[\"\\u228b\",{variantForm:!0}],subsetneqq:\"\\u2acb\",supsetneqq:\"\\u2acc\",varsubsetneqq:[\"\\u2acb\",{variantForm:!0}],varsupsetneqq:[\"\\u2acc\",{variantForm:!0}],leftleftarrows:\"\\u21c7\",rightrightarrows:\"\\u21c9\",leftrightarrows:\"\\u21c6\",rightleftarrows:\"\\u21c4\",Lleftarrow:\"\\u21da\",Rrightarrow:\"\\u21db\",twoheadleftarrow:\"\\u219e\",twoheadrightarrow:\"\\u21a0\",leftarrowtail:\"\\u21a2\",rightarrowtail:\"\\u21a3\",looparrowleft:\"\\u21ab\",looparrowright:\"\\u21ac\",leftrightharpoons:\"\\u21cb\",rightleftharpoons:[\"\\u21cc\",{variantForm:!0}],curvearrowleft:\"\\u21b6\",curvearrowright:\"\\u21b7\",circlearrowleft:\"\\u21ba\",circlearrowright:\"\\u21bb\",Lsh:\"\\u21b0\",Rsh:\"\\u21b1\",upuparrows:\"\\u21c8\",downdownarrows:\"\\u21ca\",upharpoonleft:\"\\u21bf\",upharpoonright:\"\\u21be\",downharpoonleft:\"\\u21c3\",restriction:\"\\u21be\",multimap:\"\\u22b8\",downharpoonright:\"\\u21c2\",leftrightsquigarrow:\"\\u21ad\",rightsquigarrow:\"\\u21dd\",leadsto:\"\\u21dd\",dashrightarrow:\"\\u21e2\",dashleftarrow:\"\\u21e0\",nleftarrow:\"\\u219a\",nrightarrow:\"\\u219b\",nLeftarrow:\"\\u21cd\",nRightarrow:\"\\u21cf\",nleftrightarrow:\"\\u21ae\",nLeftrightarrow:\"\\u21ce\"}),new T.DelimiterMap(\"AMSsymbols-delimiter\",o.default.delimiter,{\"\\\\ulcorner\":\"\\u231c\",\"\\\\urcorner\":\"\\u231d\",\"\\\\llcorner\":\"\\u231e\",\"\\\\lrcorner\":\"\\u231f\"}),new T.CommandMap(\"AMSsymbols-macros\",{implies:[\"Macro\",\"\\\\;\\\\Longrightarrow\\\\;\"],impliedby:[\"Macro\",\"\\\\;\\\\Longleftarrow\\\\;\"]},r.AmsMethods)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(23),n=Q(136);new r.EnvironmentMap(\"amscd_environment\",T.default.environment,{CD:\"CD\"},n.default),new r.CommandMap(\"amscd_macros\",{minCDarrowwidth:\"minCDarrowwidth\",minCDarrowheight:\"minCDarrowheight\"},n.default),new r.MacroMap(\"amscd_special\",{\"@\":\"arrow\"},n.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(141);new r.CommandMap(\"Braket-macros\",{bra:[\"Macro\",\"{\\\\langle {#1} \\\\vert}\",1],ket:[\"Macro\",\"{\\\\vert {#1} \\\\rangle}\",1],braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!1,1/0],set:[\"Braket\",\"{\",\"}\",!1,1],Bra:[\"Macro\",\"{\\\\left\\\\langle {#1} \\\\right\\\\vert}\",1],Ket:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle}\",1],Braket:[\"Braket\",\"\\u27e8\",\"\\u27e9\",!0,1/0],Set:[\"Braket\",\"{\",\"}\",!0,1],ketbra:[\"Macro\",\"{\\\\vert {#1} \\\\rangle\\\\langle {#2} \\\\vert}\",2],Ketbra:[\"Macro\",\"{\\\\left\\\\vert {#1} \\\\right\\\\rangle\\\\left\\\\langle {#2} \\\\right\\\\vert}\",2],\"|\":\"Bar\"},T.default),new r.MacroMap(\"Braket-characters\",{\"|\":\"Bar\"},T.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(144),T=Q(23),n=Q(3);new n.CommandMap(\"Bussproofs-macros\",{AxiomC:\"Axiom\",UnaryInfC:[\"Inference\",1],BinaryInfC:[\"Inference\",2],TrinaryInfC:[\"Inference\",3],QuaternaryInfC:[\"Inference\",4],QuinaryInfC:[\"Inference\",5],RightLabel:[\"Label\",\"right\"],LeftLabel:[\"Label\",\"left\"],AXC:\"Axiom\",UIC:[\"Inference\",1],BIC:[\"Inference\",2],TIC:[\"Inference\",3],RL:[\"Label\",\"right\"],LL:[\"Label\",\"left\"],noLine:[\"SetLine\",\"none\",!1],singleLine:[\"SetLine\",\"solid\",!1],solidLine:[\"SetLine\",\"solid\",!1],dashedLine:[\"SetLine\",\"dashed\",!1],alwaysNoLine:[\"SetLine\",\"none\",!0],alwaysSingleLine:[\"SetLine\",\"solid\",!0],alwaysSolidLine:[\"SetLine\",\"solid\",!0],alwaysDashedLine:[\"SetLine\",\"dashed\",!0],rootAtTop:[\"RootAtTop\",!0],alwaysRootAtTop:[\"RootAtTop\",!0],rootAtBottom:[\"RootAtTop\",!1],alwaysRootAtBottom:[\"RootAtTop\",!1],fCenter:\"FCenter\",Axiom:\"AxiomF\",UnaryInf:[\"InferenceF\",1],BinaryInf:[\"InferenceF\",2],TrinaryInf:[\"InferenceF\",3],QuaternaryInf:[\"InferenceF\",4],QuinaryInf:[\"InferenceF\",5]},r.default),new n.EnvironmentMap(\"Bussproofs-environments\",T.default.environment,{prooftree:[\"Prooftree\",null,!1]},r.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(88);new(Q(3).CommandMap)(\"Newcommand-macros\",{newcommand:\"NewCommand\",renewcommand:\"NewCommand\",newenvironment:\"NewEnvironment\",renewenvironment:\"NewEnvironment\",def:\"MacroDef\",let:\"Let\"},r.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r={go:function(t,e){if(!t)return[];void 0===e&&(e=\"ce\");var Q,T=\"0\",n={};n.parenthesisLevel=0,t=(t=(t=t.replace(/\\n/g,\" \")).replace(/[\\u2212\\u2013\\u2014\\u2010]/g,\"-\")).replace(/[\\u2026]/g,\"...\");for(var o=10,i=[];;){Q!==t?(o=10,Q=t):o--;var a=r.stateMachines[e],s=a.transitions[T]||a.transitions[\"*\"];t:for(var l=0;l<s.length;l++){var c=r.patterns.match_(s[l].pattern,t);if(c){for(var u=s[l].task,p=0;p<u.action_.length;p++){var h;if(a.actions[u.action_[p].type_])h=a.actions[u.action_[p].type_](n,c.match_,u.action_[p].option);else{if(!r.actions[u.action_[p].type_])throw[\"MhchemBugA\",\"mhchem bug A. Please report. (\"+u.action_[p].type_+\")\"];h=r.actions[u.action_[p].type_](n,c.match_,u.action_[p].option)}r.concatArray(i,h)}if(T=u.nextState||T,!(t.length>0))return i;if(u.revisit||(t=c.remainder),!u.toContinue)break t}}if(o<=0)throw[\"MhchemBugU\",\"mhchem bug U. Please report.\"]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var Q=0;Q<e.length;Q++)t.push(e[Q]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\\s/,\"space A\":/^\\s(?=[A-Z\\\\$])/,space$:/^\\s$/,\"a-z\":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\"\\\\greek\":/^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\"one lowercase latin letter $\":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,\"$one lowercase latin letter$ $\":/^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\"one lowercase greek letter $\":/^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,\"-9.,9\":/^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\"-9.,9 no missing 0\":/^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\"(-)(9.,9)(e)(99)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"(-)(9)^(-9)\":function(t){var e=t.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},\"state of aggregation $\":function(t){var e=r.patterns.findObserveGroups(t,\"\",/^\\([a-z]{1,3}(?=[\\),])/,\")\",\"\");if(e&&e.remainder.match(/^($|[\\s,;\\)\\]\\}])/))return e;var Q=t.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);return Q?{match_:Q[0],remainder:t.substr(Q[0].length)}:null},\"_{(state of aggregation)}$\":/^_\\{(\\([a-z]{1,3}\\))\\}/,\"{[(\":/^(?:\\\\\\{|\\[|\\()/,\")]}\":/^(?:\\)|\\]|\\\\\\})/,\", \":/^[,;]\\s*/,\",\":/^[,;]/,\".\":/^[.]/,\". \":/^([.\\u22C5\\u00B7\\u2022])\\s*/,\"...\":/^\\.\\.\\.(?=$|[^.])/,\"* \":/^([*])\\s*/,\"^{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"^{\",\"\",\"\",\"}\")},\"^($...$)\":function(t){return r.patterns.findObserveGroups(t,\"^\",\"$\",\"$\",\"\")},\"^a\":/^\\^([0-9]+|[^\\\\_])/,\"^\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"^\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"^\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"^\\\\x\":/^\\^(\\\\[a-zA-Z]+)\\s*/,\"^(-1)\":/^\\^(-?\\d+)/,\"'\":/^'/,\"_{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"_{\",\"\",\"\",\"}\")},\"_($...$)\":function(t){return r.patterns.findObserveGroups(t,\"_\",\"$\",\"$\",\"\")},_9:/^_([+\\-]?[0-9]+|[^\\\\])/,\"_\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"_\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"_\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"_\\\\x\":/^_(\\\\[a-zA-Z]+)\\s*/,\"^_\":/^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\"{}\":/^\\{\\}/,\"{...}\":function(t){return r.patterns.findObserveGroups(t,\"\",\"{\",\"}\",\"\")},\"{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"{\",\"\",\"\",\"}\")},\"$...$\":function(t){return r.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\")},\"${(...)}$\":function(t){return r.patterns.findObserveGroups(t,\"${\",\"\",\"\",\"}$\")},\"$(...)$\":function(t){return r.patterns.findObserveGroups(t,\"$\",\"\",\"\",\"$\")},\"=<>\":/^[=<>]/,\"#\":/^[#\\u2261]/,\"+\":/^\\+/,\"-$\":/^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,\"-9\":/^-(?=[0-9])/,\"- orbital overlap\":/^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\"-\":/^-/,\"pm-operator\":/^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,operator:/^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\"\\\\bond{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\bond{\",\"\",\"\",\"}\")},\"->\":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,CMT:/^[CMT](?=\\[)/,\"[(...)]\":function(t){return r.patterns.findObserveGroups(t,\"[\",\"\",\"\",\"]\")},\"1st-level escape\":/^(&|\\\\\\\\|\\\\hline)\\s*/,\"\\\\,\":/^(?:\\\\[,\\ ;:])/,\"\\\\x{}{}\":function(t){return r.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\",\"\",\"{\",\"}\",\"\",!0)},\"\\\\x{}\":function(t){return r.patterns.findObserveGroups(t,\"\",/^\\\\[a-zA-Z]+\\{/,\"}\",\"\")},\"\\\\ca\":/^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\"\\\\x\":/^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\\/~|]/,\"\\\\frac{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\frac{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\overset{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\overset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underset{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\underset{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\underbrace{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\underbrace{\",\"\",\"\",\"}_\",\"{\",\"\",\"\",\"}\")},\"\\\\color{(...)}0\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\")},\"\\\\color{(...)}{(...)}1\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color{\",\"\",\"\",\"}\",\"{\",\"\",\"\",\"}\")},\"\\\\color(...){(...)}2\":function(t){return r.patterns.findObserveGroups(t,\"\\\\color\",\"\\\\\",\"\",/^(?=\\{)/,\"{\",\"\",\"\",\"}\")},\"\\\\ce{(...)}\":function(t){return r.patterns.findObserveGroups(t,\"\\\\ce{\",\"\",\"\",\"}\")},oxidation$:/^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"d-oxidation$\":/^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\"roman numeral\":/^[IVX]+/,\"1/2$\":/^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var Q=r.patterns.findObserveGroups(t,\"\",\"$\",\"$\",\"\");return Q&&(e=Q.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},\"(KV letters),\":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\\([a-z]+\\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\"/\":/^\\s*(\\/)\\s*/,\"//\":/^\\s*(\\/\\/)\\s*/,\"*\":/^\\s*[*.]\\s*/},findObserveGroups:function(t,e,Q,r,T,n,o,i,a,s){var l=function(t,e){if(\"string\"==typeof e)return 0!==t.indexOf(e)?null:e;var Q=t.match(e);return Q?Q[0]:null},c=l(t,e);if(null===c)return null;if(t=t.substr(c.length),null===(c=l(t,Q)))return null;var u=function(t,e,Q){for(var r=0;e<t.length;){var T=t.charAt(e),n=l(t.substr(e),Q);if(null!==n&&0===r)return{endMatchBegin:e,endMatchEnd:e+n.length};if(\"{\"===T)r++;else if(\"}\"===T){if(0===r)throw[\"ExtraCloseMissingOpen\",\"Extra close brace or missing open brace\"];r--}e++}return null}(t,c.length,r||T);if(null===u)return null;var p=t.substring(0,r?u.endMatchEnd:u.endMatchBegin);if(n||o){var h=this.findObserveGroups(t.substr(u.endMatchEnd),n,o,i,a);if(null===h)return null;var f=[p,h.match_];return{match_:s?f.join(\"\"):f,remainder:h.remainder}}return{match_:p,remainder:t.substr(u.endMatchEnd)}},match_:function(t,e){var Q=r.patterns.patterns[t];if(void 0===Q)throw[\"MhchemBugP\",\"mhchem bug P. Please report. (\"+t+\")\"];if(\"function\"==typeof Q)return r.patterns.patterns[t](e);var T=e.match(Q);return T?{match_:T[2]?[T[1],T[2]]:T[1]?T[1]:T[0],remainder:e.substr(T[0].length)}:null}},actions:{\"a=\":function(t,e){t.a=(t.a||\"\")+e},\"b=\":function(t,e){t.b=(t.b||\"\")+e},\"p=\":function(t,e){t.p=(t.p||\"\")+e},\"o=\":function(t,e){t.o=(t.o||\"\")+e},\"q=\":function(t,e){t.q=(t.q||\"\")+e},\"d=\":function(t,e){t.d=(t.d||\"\")+e},\"rm=\":function(t,e){t.rm=(t.rm||\"\")+e},\"text=\":function(t,e){t.text_=(t.text_||\"\")+e},insert:function(t,e,Q){return{type_:Q}},\"insert+p1\":function(t,e,Q){return{type_:Q,p1:e}},\"insert+p1+p2\":function(t,e,Q){return{type_:Q,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:\"rm\",p1:e||\"\"}},text:function(t,e){return r.go(e,\"text\")},\"{text}\":function(t,e){var Q=[\"{\"];return r.concatArray(Q,r.go(e,\"text\")),Q.push(\"}\"),Q},\"tex-math\":function(t,e){return r.go(e,\"tex-math\")},\"tex-math tight\":function(t,e){return r.go(e,\"tex-math tight\")},bond:function(t,e,Q){return{type_:\"bond\",kind_:Q||e}},\"color0-output\":function(t,e){return{type_:\"color0\",color:e[0]}},ce:function(t,e){return r.go(e)},\"1/2\":function(t,e){var Q=[];e.match(/^[+\\-]/)&&(Q.push(e.substr(0,1)),e=e.substr(1));var r=e.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);return r[1]=r[1].replace(/\\$/g,\"\"),Q.push({type_:\"frac\",p1:r[1],p2:r[2]}),r[3]&&(r[3]=r[3].replace(/\\$/g,\"\"),Q.push({type_:\"tex-math\",p1:r[3]})),Q},\"9,9\":function(t,e){return r.go(e,\"9,9\")}},createTransitions:function(t){var e,Q,r,T,n={};for(e in t)for(Q in t[e])for(r=Q.split(\"|\"),t[e][Q].stateArray=r,T=0;T<r.length;T++)n[r[T]]=[];for(e in t)for(Q in t[e])for(r=t[e][Q].stateArray||[],T=0;T<r.length;T++){var o=t[e][Q];if(o.action_){o.action_=[].concat(o.action_);for(var i=0;i<o.action_.length;i++)\"string\"==typeof o.action_[i]&&(o.action_[i]={type_:o.action_[i]})}else o.action_=[];for(var a=e.split(\"|\"),s=0;s<a.length;s++)if(\"*\"===r[T])for(var l in n)n[l].push({pattern:a[s],task:o});else n[r[T]].push({pattern:a[s],task:o})}return n},stateMachines:{}};r.stateMachines={ce:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},else:{\"0|1|2\":{action_:\"beginsWithBond=false\",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:\"oxidation-output\"}},CMT:{r:{action_:\"rdt=\",nextState:\"rt\"},rd:{action_:\"rqt=\",nextState:\"rdt\"}},arrowUpDown:{\"0|1|2|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"1\"}},uprightEntities:{\"0|1|2\":{action_:[\"o=\",\"output\"],nextState:\"1\"}},orbital:{\"0|1|2|3\":{action_:\"o=\",nextState:\"o\"}},\"->\":{\"0|1|2|3\":{action_:\"r=\",nextState:\"r\"},\"a|as\":{action_:[\"output\",\"r=\"],nextState:\"r\"},\"*\":{action_:[\"output\",\"r=\"],nextState:\"r\"}},\"+\":{o:{action_:\"d= kv\",nextState:\"d\"},\"d|D\":{action_:\"d=\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"qd|qD\":{action_:\"d=\",nextState:\"qd\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"},3:{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},amount:{\"0|2\":{action_:\"a=\",nextState:\"a\"}},\"pm-operator\":{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",{type_:\"operator\",option:\"\\\\pm\"}],nextState:\"0\"}},operator:{\"0|1|2|a|as\":{action_:[\"sb=false\",\"output\",\"operator\"],nextState:\"0\"}},\"-$\":{\"o|q\":{action_:[\"charge or bond\",\"output\"],nextState:\"qd\"},d:{action_:\"d=\",nextState:\"d\"},D:{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},q:{action_:\"d=\",nextState:\"qd\"},qd:{action_:\"d=\",nextState:\"qd\"},\"qD|dq\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},\"-9\":{\"3|o\":{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"3\"}},\"- orbital overlap\":{o:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},d:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"}},\"-\":{\"0|1|2\":{action_:[{type_:\"output\",option:1},\"beginsWithBond=true\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"},3:{action_:{type_:\"bond\",option:\"-\"}},a:{action_:[\"output\",{type_:\"insert\",option:\"hyphen\"}],nextState:\"2\"},as:{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"-\"}],nextState:\"3\"},b:{action_:\"b=\"},o:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},q:{action_:{type_:\"- after o/d\",option:!1},nextState:\"2\"},\"d|qd|dq\":{action_:{type_:\"- after o/d\",option:!0},nextState:\"2\"},\"D|qD|p\":{action_:[\"output\",{type_:\"bond\",option:\"-\"}],nextState:\"3\"}},amount2:{\"1|3\":{action_:\"a=\",nextState:\"a\"}},letters:{\"0|1|2|3|a|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"q|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"},\"d|D|qd|qD\":{action_:\"o after d\",nextState:\"o\"}},digits:{o:{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},q:{action_:[\"output\",\"o=\"],nextState:\"o\"},a:{action_:\"o=\",nextState:\"o\"}},\"space A\":{\"b|p|bp\":{}},space:{a:{nextState:\"as\"},0:{action_:\"sb=false\"},\"1|2\":{action_:\"sb=true\"},\"r|rt|rd|rdt|rdq\":{action_:\"output\",nextState:\"0\"},\"*\":{action_:[\"output\",\"sb=true\"],nextState:\"1\"}},\"1st-level escape\":{\"1|2\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}]},\"*\":{action_:[\"output\",{type_:\"insert+p1\",option:\"1st-level escape\"}],nextState:\"0\"}},\"[(...)]\":{\"r|rt\":{action_:\"rd=\",nextState:\"rd\"},\"rd|rdt\":{action_:\"rq=\",nextState:\"rdq\"}},\"...\":{\"o|d|D|dq|qd|qD\":{action_:[\"output\",{type_:\"bond\",option:\"...\"}],nextState:\"3\"},\"*\":{action_:[{type_:\"output\",option:1},{type_:\"insert\",option:\"ellipsis\"}],nextState:\"1\"}},\". |* \":{\"*\":{action_:[\"output\",{type_:\"insert\",option:\"addition compound\"}],nextState:\"1\"}},\"state of aggregation $\":{\"*\":{action_:[\"output\",\"state of aggregation\"],nextState:\"1\"}},\"{[(\":{\"a|as|o\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"0|1|2|3\":{action_:[\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"},\"*\":{action_:[\"output\",\"o=\",\"output\",\"parenthesisLevel++\"],nextState:\"2\"}},\")]}\":{\"0|1|2|3|b|p|bp|o\":{action_:[\"o=\",\"parenthesisLevel--\"],nextState:\"o\"},\"a|as|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\",\"parenthesisLevel--\"],nextState:\"o\"}},\", \":{\"*\":{action_:[\"output\",\"comma\"],nextState:\"0\"}},\"^_\":{\"*\":{}},\"^{(...)}|^($...$)\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"D\"},q:{action_:\"d=\",nextState:\"qD\"},\"d|D|qd|qD|dq\":{action_:[\"output\",\"d=\"],nextState:\"D\"}},\"^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|'\":{\"0|1|2|as\":{action_:\"b=\",nextState:\"b\"},p:{action_:\"b=\",nextState:\"bp\"},\"3|o\":{action_:\"d= kv\",nextState:\"d\"},q:{action_:\"d=\",nextState:\"qd\"},\"d|qd|D|qD\":{action_:\"d=\"},dq:{action_:[\"output\",\"d=\"],nextState:\"d\"}},\"_{(state of aggregation)}$\":{\"d|D|q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x\":{\"0|1|2|as\":{action_:\"p=\",nextState:\"p\"},b:{action_:\"p=\",nextState:\"bp\"},\"3|o\":{action_:\"q=\",nextState:\"q\"},\"d|D\":{action_:\"q=\",nextState:\"dq\"},\"q|qd|qD|dq\":{action_:[\"output\",\"q=\"],nextState:\"q\"}},\"=<>\":{\"0|1|2|3|a|as|o|q|d|D|qd|qD|dq\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"#\":{\"0|1|2|3|a|as|o\":{action_:[{type_:\"output\",option:2},{type_:\"bond\",option:\"#\"}],nextState:\"3\"}},\"{}\":{\"*\":{action_:{type_:\"output\",option:1},nextState:\"1\"}},\"{...}\":{\"0|1|2|3|a|as|b|p|bp\":{action_:\"o=\",nextState:\"o\"},\"o|d|D|q|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"$...$\":{a:{action_:\"a=\"},\"0|1|2|3|as|b|p|bp|o\":{action_:\"o=\",nextState:\"o\"},\"as|o\":{action_:\"o=\"},\"q|d|D|qd|qD|dq\":{action_:[\"output\",\"o=\"],nextState:\"o\"}},\"\\\\bond{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"bond\"],nextState:\"3\"}},\"\\\\frac{(...)}\":{\"*\":{action_:[{type_:\"output\",option:1},\"frac-output\"],nextState:\"3\"}},\"\\\\overset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"overset-output\"],nextState:\"3\"}},\"\\\\underset{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underset-output\"],nextState:\"3\"}},\"\\\\underbrace{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"underbrace-output\"],nextState:\"3\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:[{type_:\"output\",option:2},\"color-output\"],nextState:\"3\"}},\"\\\\color{(...)}0\":{\"*\":{action_:[{type_:\"output\",option:2},\"color0-output\"]}},\"\\\\ce{(...)}\":{\"*\":{action_:[{type_:\"output\",option:2},\"ce\"],nextState:\"3\"}},\"\\\\,\":{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"1\"}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"0|1|2|3|a|as|b|p|bp|o|c0\":{action_:[\"o=\",\"output\"],nextState:\"3\"},\"*\":{action_:[\"output\",\"o=\",\"output\"],nextState:\"3\"}},others:{\"*\":{action_:[{type_:\"output\",option:1},\"copy\"],nextState:\"3\"}},else2:{a:{action_:\"a to o\",nextState:\"o\",revisit:!0},as:{action_:[\"output\",\"sb=true\"],nextState:\"1\",revisit:!0},\"r|rt|rd|rdt|rdq\":{action_:[\"output\"],nextState:\"0\",revisit:!0},\"*\":{action_:[\"output\",\"copy\"],nextState:\"3\"}}}),actions:{\"o after d\":function(t,e){var Q;if((t.d||\"\").match(/^[0-9]+$/)){var T=t.d;t.d=void 0,Q=this.output(t),t.b=T}else Q=this.output(t);return r.actions[\"o=\"](t,e),Q},\"d= kv\":function(t,e){t.d=e,t.dType=\"kv\"},\"charge or bond\":function(t,e){if(t.beginsWithBond){var Q=[];return r.concatArray(Q,this.output(t)),r.concatArray(Q,r.actions.bond(t,e,\"-\")),Q}t.d=e},\"- after o/d\":function(t,e,Q){var T=r.patterns.match_(\"orbital\",t.o||\"\"),n=r.patterns.match_(\"one lowercase greek letter $\",t.o||\"\"),o=r.patterns.match_(\"one lowercase latin letter $\",t.o||\"\"),i=r.patterns.match_(\"$one lowercase latin letter$ $\",t.o||\"\"),a=\"-\"===e&&(T&&\"\"===T.remainder||n||o||i);!a||t.a||t.b||t.p||t.d||t.q||T||!o||(t.o=\"$\"+t.o+\"$\");var s=[];return a?(r.concatArray(s,this.output(t)),s.push({type_:\"hyphen\"})):(T=r.patterns.match_(\"digits\",t.d||\"\"),Q&&T&&\"\"===T.remainder?(r.concatArray(s,r.actions[\"d=\"](t,e)),r.concatArray(s,this.output(t))):(r.concatArray(s,this.output(t)),r.concatArray(s,r.actions.bond(t,e,\"-\")))),s},\"a to o\":function(t){t.o=t.a,t.a=void 0},\"sb=true\":function(t){t.sb=!0},\"sb=false\":function(t){t.sb=!1},\"beginsWithBond=true\":function(t){t.beginsWithBond=!0},\"beginsWithBond=false\":function(t){t.beginsWithBond=!1},\"parenthesisLevel++\":function(t){t.parenthesisLevel++},\"parenthesisLevel--\":function(t){t.parenthesisLevel--},\"state of aggregation\":function(t,e){return{type_:\"state of aggregation\",p1:r.go(e,\"o\")}},comma:function(t,e){var Q=e.replace(/\\s*$/,\"\");return Q!==e&&0===t.parenthesisLevel?{type_:\"comma enumeration L\",p1:Q}:{type_:\"comma enumeration M\",p1:Q}},output:function(t,e,Q){var T,n,o;t.r?(n=\"M\"===t.rdt?r.go(t.rd,\"tex-math\"):\"T\"===t.rdt?[{type_:\"text\",p1:t.rd||\"\"}]:r.go(t.rd),o=\"M\"===t.rqt?r.go(t.rq,\"tex-math\"):\"T\"===t.rqt?[{type_:\"text\",p1:t.rq||\"\"}]:r.go(t.rq),T={type_:\"arrow\",r:t.r,rd:n,rq:o}):(T=[],(t.a||t.b||t.p||t.o||t.q||t.d||Q)&&(t.sb&&T.push({type_:\"entitySkip\"}),t.o||t.q||t.d||t.b||t.p||2===Q?t.o||t.q||t.d||!t.b&&!t.p?t.o&&\"kv\"===t.dType&&r.patterns.match_(\"d-oxidation$\",t.d||\"\")?t.dType=\"oxidation\":t.o&&\"kv\"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),T.push({type_:\"chemfive\",a:r.go(t.a,\"a\"),b:r.go(t.b,\"bd\"),p:r.go(t.p,\"pq\"),o:r.go(t.o,\"o\"),q:r.go(t.q,\"pq\"),d:r.go(t.d,\"oxidation\"===t.dType?\"oxidation\":\"bd\"),dType:t.dType})));for(var i in t)\"parenthesisLevel\"!==i&&\"beginsWithBond\"!==i&&delete t[i];return T},\"oxidation-output\":function(t,e){var Q=[\"{\"];return r.concatArray(Q,r.go(e,\"oxidation\")),Q.push(\"}\"),Q},\"frac-output\":function(t,e){return{type_:\"frac-ce\",p1:r.go(e[0]),p2:r.go(e[1])}},\"overset-output\":function(t,e){return{type_:\"overset\",p1:r.go(e[0]),p2:r.go(e[1])}},\"underset-output\":function(t,e){return{type_:\"underset\",p1:r.go(e[0]),p2:r.go(e[1])}},\"underbrace-output\":function(t,e){return{type_:\"underbrace\",p1:r.go(e[0]),p2:r.go(e[1])}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1])}},\"r=\":function(t,e){t.r=e},\"rdt=\":function(t,e){t.rdt=e},\"rd=\":function(t,e){t.rd=e},\"rqt=\":function(t,e){t.rqt=e},\"rq=\":function(t,e){t.rq=e},operator:function(t,e,Q){return{type_:\"operator\",kind_:Q||e}}}},a:{transitions:r.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},\"$(...)$\":{\"*\":{action_:\"tex-math tight\",nextState:\"1\"}},\",\":{\"*\":{action_:{type_:\"insert\",option:\"commaDecimal\"}}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},o:{transitions:r.createTransitions({empty:{\"*\":{}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"1\",revisit:!0}},letters:{\"*\":{action_:\"rm\"}},\"\\\\ca\":{\"*\":{action_:{type_:\"insert\",option:\"circa\"}}},\"\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"{text}\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{}},text:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"{...}\":{\"*\":{action_:\"text=\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"\\\\greek\":{\"*\":{action_:[\"output\",\"rm\"]}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:[\"output\",\"copy\"]}},else:{\"*\":{action_:\"text=\"}}}),actions:{output:function(t){if(t.text_){var e={type_:\"text\",p1:t.text_};for(var Q in t)delete t[Q];return e}}}},pq:{transitions:r.createTransitions({empty:{\"*\":{}},\"state of aggregation $\":{\"*\":{action_:\"state of aggregation\"}},i$:{0:{nextState:\"!f\",revisit:!0}},\"(KV letters),\":{0:{action_:\"rm\",nextState:\"0\"}},formula$:{0:{nextState:\"f\",revisit:!0}},\"1/2$\":{0:{action_:\"1/2\"}},else:{0:{nextState:\"!f\",revisit:!0}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"a-z\":{f:{action_:\"tex-math\"}},letters:{\"*\":{action_:\"rm\"}},\"-9.,9\":{\"*\":{action_:\"9,9\"}},\",\":{\"*\":{action_:{type_:\"insert+p1\",option:\"comma enumeration S\"}}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"state of aggregation\":function(t,e){return{type_:\"state of aggregation subscript\",p1:r.go(e,\"o\")}},\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1],\"pq\")}}}},bd:{transitions:r.createTransitions({empty:{\"*\":{}},x$:{0:{nextState:\"!f\",revisit:!0}},formula$:{0:{nextState:\"f\",revisit:!0}},else:{0:{nextState:\"!f\",revisit:!0}},\"-9.,9 no missing 0\":{\"*\":{action_:\"9,9\"}},\".\":{\"*\":{action_:{type_:\"insert\",option:\"electron dot\"}}},\"a-z\":{f:{action_:\"tex-math\"}},x:{\"*\":{action_:{type_:\"insert\",option:\"KV x\"}}},letters:{\"*\":{action_:\"rm\"}},\"'\":{\"*\":{action_:{type_:\"insert\",option:\"prime\"}}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},\"{(...)}\":{\"*\":{action_:\"text\"}},\"\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2\":{\"*\":{action_:\"color-output\"}},\"\\\\color{(...)}0\":{\"*\":{action_:\"color0-output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:\"ce\"}},\"\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"copy\"}},else2:{\"*\":{action_:\"copy\"}}}),actions:{\"color-output\":function(t,e){return{type_:\"color\",color1:e[0],color2:r.go(e[1],\"bd\")}}}},oxidation:{transitions:r.createTransitions({empty:{\"*\":{}},\"roman numeral\":{\"*\":{action_:\"roman-numeral\"}},\"${(...)}$|$(...)$\":{\"*\":{action_:\"tex-math\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{\"roman-numeral\":function(t,e){return{type_:\"roman numeral\",p1:e||\"\"}}}},\"tex-math\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var Q in t)delete t[Q];return e}}}},\"tex-math tight\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"\\\\ce{(...)}\":{\"*\":{action_:[\"output\",\"ce\"]}},\"{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x\":{\"*\":{action_:\"o=\"}},\"-|+\":{\"*\":{action_:\"tight operator\"}},else:{\"*\":{action_:\"o=\"}}}),actions:{\"tight operator\":function(t,e){t.o=(t.o||\"\")+\"{\"+e+\"}\"},output:function(t){if(t.o){var e={type_:\"tex-math\",p1:t.o};for(var Q in t)delete t[Q];return e}}}},\"9,9\":{transitions:r.createTransitions({empty:{\"*\":{}},\",\":{\"*\":{action_:\"comma\"}},else:{\"*\":{action_:\"copy\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}}}},pu:{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},space$:{\"*\":{action_:[\"output\",\"space\"]}},\"{[(|)]}\":{\"0|a\":{action_:\"copy\"}},\"(-)(9)^(-9)\":{0:{action_:\"number^\",nextState:\"a\"}},\"(-)(9.,9)(e)(99)\":{0:{action_:\"enumber\",nextState:\"a\"}},space:{\"0|a\":{}},\"pm-operator\":{\"0|a\":{action_:{type_:\"operator\",option:\"\\\\pm\"},nextState:\"0\"}},operator:{\"0|a\":{action_:\"copy\",nextState:\"0\"}},\"//\":{d:{action_:\"o=\",nextState:\"/\"}},\"/\":{d:{action_:\"o=\",nextState:\"/\"}},\"{...}|else\":{\"0|d\":{action_:\"d=\",nextState:\"d\"},a:{action_:[\"space\",\"d=\"],nextState:\"d\"},\"/|q\":{action_:\"q=\",nextState:\"q\"}}}),actions:{enumber:function(t,e){var Q=[];return\"+-\"===e[0]||\"+/-\"===e[0]?Q.push(\"\\\\pm \"):e[0]&&Q.push(e[0]),e[1]&&(r.concatArray(Q,r.go(e[1],\"pu-9,9\")),e[2]&&(e[2].match(/[,.]/)?r.concatArray(Q,r.go(e[2],\"pu-9,9\")):Q.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),\"e\"===e[3]||\"*\"===e[3].substr(0,1)?Q.push({type_:\"cdot\"}):Q.push({type_:\"times\"}))),e[3]&&Q.push(\"10^{\"+e[5]+\"}\"),Q},\"number^\":function(t,e){var Q=[];return\"+-\"===e[0]||\"+/-\"===e[0]?Q.push(\"\\\\pm \"):e[0]&&Q.push(e[0]),r.concatArray(Q,r.go(e[1],\"pu-9,9\")),Q.push(\"^{\"+e[2]+\"}\"),Q},operator:function(t,e,Q){return{type_:\"operator\",kind_:Q||e}},space:function(){return{type_:\"pu-space-1\"}},output:function(t){var e,Q=r.patterns.match_(\"{(...)}\",t.d||\"\");Q&&\"\"===Q.remainder&&(t.d=Q.match_);var T=r.patterns.match_(\"{(...)}\",t.q||\"\");if(T&&\"\"===T.remainder&&(t.q=T.match_),t.d&&(t.d=t.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.d=t.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\")),t.q){t.q=t.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g,\"{}^{\\\\circ}C\"),t.q=t.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g,\"{}^{\\\\circ}F\");var n={d:r.go(t.d,\"pu\"),q:r.go(t.q,\"pu\")};\"//\"===t.o?e={type_:\"pu-frac\",p1:n.d,p2:n.q}:(e=n.d,n.d.length>1||n.q.length>1?e.push({type_:\" / \"}):e.push({type_:\"/\"}),r.concatArray(e,n.q))}else e=r.go(t.d,\"pu-2\");for(var o in t)delete t[o];return e}}},\"pu-2\":{transitions:r.createTransitions({empty:{\"*\":{action_:\"output\"}},\"*\":{\"*\":{action_:[\"output\",\"cdot\"],nextState:\"0\"}},\"\\\\x\":{\"*\":{action_:\"rm=\"}},space:{\"*\":{action_:[\"output\",\"space\"],nextState:\"0\"}},\"^{(...)}|^(-1)\":{1:{action_:\"^(-1)\"}},\"-9.,9\":{0:{action_:\"rm=\",nextState:\"0\"},1:{action_:\"^(-1)\",nextState:\"0\"}},\"{...}|else\":{\"*\":{action_:\"rm=\",nextState:\"1\"}}}),actions:{cdot:function(){return{type_:\"tight cdot\"}},\"^(-1)\":function(t,e){t.rm+=\"^{\"+e+\"}\"},space:function(){return{type_:\"pu-space-2\"}},output:function(t){var e=[];if(t.rm){var Q=r.patterns.match_(\"{(...)}\",t.rm||\"\");e=Q&&\"\"===Q.remainder?r.go(Q.match_,\"pu\"):{type_:\"rm\",p1:t.rm}}for(var T in t)delete t[T];return e}}},\"pu-9,9\":{transitions:r.createTransitions({empty:{0:{action_:\"output-0\"},o:{action_:\"output-o\"}},\",\":{0:{action_:[\"output-0\",\"comma\"],nextState:\"o\"}},\".\":{0:{action_:[\"output-0\",\"copy\"],nextState:\"o\"}},else:{\"*\":{action_:\"text=\"}}}),actions:{comma:function(){return{type_:\"commaDecimal\"}},\"output-0\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){var Q=t.text_.length%3;0===Q&&(Q=3);for(var r=t.text_.length-3;r>0;r-=3)e.push(t.text_.substr(r,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(0,Q)),e.reverse()}else e.push(t.text_);for(var T in t)delete t[T];return e},\"output-o\":function(t){var e=[];if(t.text_=t.text_||\"\",t.text_.length>4){for(var Q=t.text_.length-3,r=0;r<Q;r+=3)e.push(t.text_.substr(r,3)),e.push({type_:\"1000 separator\"});e.push(t.text_.substr(r))}else e.push(t.text_);for(var T in t)delete t[T];return e}}}};var T={go:function(t,e){if(!t)return\"\";for(var Q=\"\",r=!1,n=0;n<t.length;n++){var o=t[n];\"string\"==typeof o?Q+=o:(Q+=T._go2(o),\"1st-level escape\"===o.type_&&(r=!0))}return e||r||!Q||(Q=\"{\"+Q+\"}\"),Q},_goInner:function(t){return t?T.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case\"chemfive\":e=\"\";var Q={a:T._goInner(t.a),b:T._goInner(t.b),p:T._goInner(t.p),o:T._goInner(t.o),q:T._goInner(t.q),d:T._goInner(t.d)};Q.a&&(Q.a.match(/^[+\\-]/)&&(Q.a=\"{\"+Q.a+\"}\"),e+=Q.a+\"\\\\,\"),(Q.b||Q.p)&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\hphantom{\"+(Q.b||\"\")+\"}}_{\\\\hphantom{\"+(Q.p||\"\")+\"}}\",e+=\"{\\\\vphantom{X}}\",e+=\"^{\\\\smash[t]{\\\\vphantom{2}}\\\\llap{\"+(Q.b||\"\")+\"}}\",e+=\"_{\\\\vphantom{2}\\\\llap{\\\\smash[t]{\"+(Q.p||\"\")+\"}}}\"),Q.o&&(Q.o.match(/^[+\\-]/)&&(Q.o=\"{\"+Q.o+\"}\"),e+=Q.o),\"kv\"===t.dType?((Q.d||Q.q)&&(e+=\"{\\\\vphantom{X}}\"),Q.d&&(e+=\"^{\"+Q.d+\"}\"),Q.q&&(e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\")):\"oxidation\"===t.dType?(Q.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+Q.d+\"}\"),Q.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\")):(Q.q&&(e+=\"{\\\\vphantom{X}}\",e+=\"_{\\\\smash[t]{\"+Q.q+\"}}\"),Q.d&&(e+=\"{\\\\vphantom{X}}\",e+=\"^{\"+Q.d+\"}\"));break;case\"rm\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"text\":t.p1.match(/[\\^_]/)?(t.p1=t.p1.replace(\" \",\"~\").replace(\"-\",\"\\\\text{-}\"),e=\"\\\\mathrm{\"+t.p1+\"}\"):e=\"\\\\text{\"+t.p1+\"}\";break;case\"roman numeral\":e=\"\\\\mathrm{\"+t.p1+\"}\";break;case\"state of aggregation\":e=\"\\\\mskip2mu \"+T._goInner(t.p1);break;case\"state of aggregation subscript\":e=\"\\\\mskip1mu \"+T._goInner(t.p1);break;case\"bond\":if(!(e=T._getBond(t.kind_)))throw[\"MhchemErrorBond\",\"mhchem Error. Unknown bond type (\"+t.kind_+\")\"];break;case\"frac\":var r=\"\\\\frac{\"+t.p1+\"}{\"+t.p2+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+r+\"}{\"+r+\"}{\"+r+\"}{\"+r+\"}\";break;case\"pu-frac\":var n=\"\\\\frac{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";e=\"\\\\mathchoice{\\\\textstyle\"+n+\"}{\"+n+\"}{\"+n+\"}{\"+n+\"}\";break;case\"tex-math\":e=t.p1+\" \";break;case\"frac-ce\":e=\"\\\\frac{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"overset\":e=\"\\\\overset{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"underset\":e=\"\\\\underset{\"+T._goInner(t.p1)+\"}{\"+T._goInner(t.p2)+\"}\";break;case\"underbrace\":e=\"\\\\underbrace{\"+T._goInner(t.p1)+\"}_{\"+T._goInner(t.p2)+\"}\";break;case\"color\":e=\"{\\\\color{\"+t.color1+\"}{\"+T._goInner(t.color2)+\"}}\";break;case\"color0\":e=\"\\\\color{\"+t.color+\"}\";break;case\"arrow\":var o={rd:T._goInner(t.rd),rq:T._goInner(t.rq)},i=T._getArrow(t.r);o.rd||o.rq?\"<=>\"===t.r||\"<=>>\"===t.r||\"<<=>\"===t.r||\"<--\\x3e\"===t.r?(i=\"\\\\long\"+i,o.rd&&(i=\"\\\\overset{\"+o.rd+\"}{\"+i+\"}\"),o.rq&&(i=\"\\\\underset{\\\\lower7mu{\"+o.rq+\"}}{\"+i+\"}\"),i=\" {}\\\\mathrel{\"+i+\"}{} \"):(o.rq&&(i+=\"[{\"+o.rq+\"}]\"),i=\" {}\\\\mathrel{\\\\x\"+(i+=\"{\"+o.rd+\"}\")+\"}{} \"):i=\" {}\\\\mathrel{\\\\long\"+i+\"}{} \",e=i;break;case\"operator\":e=T._getOperator(t.kind_);break;case\"1st-level escape\":e=t.p1+\" \";break;case\"space\":e=\" \";break;case\"entitySkip\":case\"pu-space-1\":e=\"~\";break;case\"pu-space-2\":e=\"\\\\mkern3mu \";break;case\"1000 separator\":e=\"\\\\mkern2mu \";break;case\"commaDecimal\":e=\"{,}\";break;case\"comma enumeration L\":e=\"{\"+t.p1+\"}\\\\mkern6mu \";break;case\"comma enumeration M\":e=\"{\"+t.p1+\"}\\\\mkern3mu \";break;case\"comma enumeration S\":e=\"{\"+t.p1+\"}\\\\mkern1mu \";break;case\"hyphen\":e=\"\\\\text{-}\";break;case\"addition compound\":e=\"\\\\,{\\\\cdot}\\\\,\";break;case\"electron dot\":e=\"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";break;case\"KV x\":e=\"{\\\\times}\";break;case\"prime\":e=\"\\\\prime \";break;case\"cdot\":e=\"\\\\cdot \";break;case\"tight cdot\":e=\"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";break;case\"times\":e=\"\\\\times \";break;case\"circa\":e=\"{\\\\sim}\";break;case\"^\":e=\"uparrow\";break;case\"v\":e=\"downarrow\";break;case\"ellipsis\":e=\"\\\\ldots \";break;case\"/\":e=\"/\";break;case\" / \":e=\"\\\\,/\\\\,\";break;default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}return e},_getArrow:function(t){switch(t){case\"->\":case\"\\u2192\":case\"\\u27f6\":return\"rightarrow\";case\"<-\":return\"leftarrow\";case\"<->\":return\"leftrightarrow\";case\"<--\\x3e\":return\"leftrightarrows\";case\"<=>\":case\"\\u21cc\":return\"rightleftharpoons\";case\"<=>>\":return\"Rightleftharpoons\";case\"<<=>\":return\"Leftrightharpoons\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getBond:function(t){switch(t){case\"-\":case\"1\":return\"{-}\";case\"=\":case\"2\":return\"{=}\";case\"#\":case\"3\":return\"{\\\\equiv}\";case\"~\":return\"{\\\\tripledash}\";case\"~-\":return\"{\\\\rlap{\\\\lower.1em{-}}\\\\raise.1em{\\\\tripledash}}\";case\"~=\":case\"~--\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{\\\\tripledash}}-}\";case\"-~-\":return\"{\\\\rlap{\\\\lower.2em{-}}\\\\rlap{\\\\raise.2em{-}}\\\\tripledash}\";case\"...\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"....\":return\"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";case\"->\":return\"{\\\\rightarrow}\";case\"<-\":return\"{\\\\leftarrow}\";case\"<\":return\"{<}\";case\">\":return\"{>}\";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}},_getOperator:function(t){switch(t){case\"+\":return\" {}+{} \";case\"-\":return\" {}-{} \";case\"=\":return\" {}={} \";case\"<\":return\" {}<{} \";case\">\":return\" {}>{} \";case\"<<\":return\" {}\\\\ll{} \";case\">>\":return\" {}\\\\gg{} \";case\"\\\\pm\":return\" {}\\\\pm{} \";case\"\\\\approx\":case\"$\\\\approx$\":return\" {}\\\\approx{} \";case\"v\":case\"(v)\":return\" \\\\downarrow{} \";case\"^\":case\"(^)\":return\" \\\\uparrow{} \";default:throw[\"MhchemBugT\",\"mhchem bug T. Please report.\"]}}};function n(t){}function o(t){}e.mhchemParser=r,e.texify=T,e.assertNever=n,e.assertString=o},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(161),n=Q(13),o=Q(23),i=Q(0);new r.CommandMap(\"Physics-automatic-bracing-macros\",{quantity:\"Quantity\",qty:\"Quantity\",pqty:[\"Quantity\",\"(\",\")\",!0],bqty:[\"Quantity\",\"[\",\"]\",!0],vqty:[\"Quantity\",\"|\",\"|\",!0],Bqty:[\"Quantity\",\"{\",\"}\",!0],absolutevalue:[\"Quantity\",\"|\",\"|\",!0],abs:[\"Quantity\",\"|\",\"|\",!0],norm:[\"Quantity\",\"\\\\|\",\"\\\\|\",!0],evaluated:\"Eval\",eval:\"Eval\",order:[\"Quantity\",\"(\",\")\",!0,\"O\",n.TexConstant.Variant.CALLIGRAPHIC],commutator:\"Commutator\",comm:\"Commutator\",anticommutator:[\"Commutator\",\"\\\\{\",\"\\\\}\"],acomm:[\"Commutator\",\"\\\\{\",\"\\\\}\"],poissonbracket:[\"Commutator\",\"\\\\{\",\"\\\\}\"],pb:[\"Commutator\",\"\\\\{\",\"\\\\}\"]},T.default),new r.CharacterMap(\"Physics-vector-chars\",o.default.mathchar0mi,{dotproduct:[\"\\u22c5\",{mathvariant:n.TexConstant.Variant.BOLD}],vdot:[\"\\u22c5\",{mathvariant:n.TexConstant.Variant.BOLD}],crossproduct:\"\\xd7\",cross:\"\\xd7\",cp:\"\\xd7\",gradientnabla:[\"\\u2207\",{mathvariant:n.TexConstant.Variant.BOLD}],real:[\"\\u211c\",{mathvariant:n.TexConstant.Variant.NORMAL}],imaginary:[\"\\u2111\",{mathvariant:n.TexConstant.Variant.NORMAL}]}),new r.CommandMap(\"Physics-vector-macros\",{vectorbold:\"VectorBold\",vb:\"VectorBold\",vectorarrow:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],va:[\"StarMacro\",1,\"\\\\vec{\\\\vb\",\"{#1}}\"],vectorunit:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],vu:[\"StarMacro\",1,\"\\\\hat{\\\\vb\",\"{#1}}\"],gradient:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],grad:[\"OperatorApplication\",\"\\\\gradientnabla\",\"(\",\"[\"],divergence:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],div:[\"VectorOperator\",\"\\\\gradientnabla\\\\vdot\",\"(\",\"[\"],curl:[\"VectorOperator\",\"\\\\gradientnabla\\\\crossproduct\",\"(\",\"[\"],laplacian:[\"OperatorApplication\",\"\\\\nabla^2\",\"(\",\"[\"]},T.default),new r.CommandMap(\"Physics-expressions-macros\",{sin:\"Expression\",sinh:\"Expression\",arcsin:\"Expression\",asin:\"Expression\",cos:\"Expression\",cosh:\"Expression\",arccos:\"Expression\",acos:\"Expression\",tan:\"Expression\",tanh:\"Expression\",arctan:\"Expression\",atan:\"Expression\",csc:\"Expression\",csch:\"Expression\",arccsc:\"Expression\",acsc:\"Expression\",sec:\"Expression\",sech:\"Expression\",arcsec:\"Expression\",asec:\"Expression\",cot:\"Expression\",coth:\"Expression\",arccot:\"Expression\",acot:\"Expression\",exp:[\"Expression\",!1],log:\"Expression\",ln:\"Expression\",det:[\"Expression\",!1],Pr:[\"Expression\",!1],tr:[\"Expression\",!1],trace:[\"Expression\",!1,\"tr\"],Tr:[\"Expression\",!1],Trace:[\"Expression\",!1,\"Tr\"],rank:\"NamedFn\",erf:[\"Expression\",!1],Res:[\"OperatorApplication\",\"{\\\\rm Res}\",\"(\",\"[\",\"{\"],principalvalue:[\"OperatorApplication\",\"{\\\\cal P}\"],pv:[\"OperatorApplication\",\"{\\\\cal P}\"],PV:[\"OperatorApplication\",\"{\\\\rm P.V.}\"],Re:[\"OperatorApplication\",\"{\\\\rm Re}\",\"{\"],Im:[\"OperatorApplication\",\"{\\\\rm Im}\",\"{\"],sine:[\"NamedFn\",\"sin\"],hypsine:[\"NamedFn\",\"sinh\"],arcsine:[\"NamedFn\",\"arcsin\"],asine:[\"NamedFn\",\"asin\"],cosine:[\"NamedFn\",\"cos\"],hypcosine:[\"NamedFn\",\"cosh\"],arccosine:[\"NamedFn\",\"arccos\"],acosine:[\"NamedFn\",\"acos\"],tangent:[\"NamedFn\",\"tan\"],hyptangent:[\"NamedFn\",\"tanh\"],arctangent:[\"NamedFn\",\"arctan\"],atangent:[\"NamedFn\",\"atan\"],cosecant:[\"NamedFn\",\"csc\"],hypcosecant:[\"NamedFn\",\"csch\"],arccosecant:[\"NamedFn\",\"arccsc\"],acosecant:[\"NamedFn\",\"acsc\"],secant:[\"NamedFn\",\"sec\"],hypsecant:[\"NamedFn\",\"sech\"],arcsecant:[\"NamedFn\",\"arcsec\"],asecant:[\"NamedFn\",\"asec\"],cotangent:[\"NamedFn\",\"cot\"],hypcotangent:[\"NamedFn\",\"coth\"],arccotangent:[\"NamedFn\",\"arccot\"],acotangent:[\"NamedFn\",\"acot\"],exponential:[\"NamedFn\",\"exp\"],logarithm:[\"NamedFn\",\"log\"],naturallogarithm:[\"NamedFn\",\"ln\"],determinant:[\"NamedFn\",\"det\"],Probability:[\"NamedFn\",\"Pr\"]},T.default),new r.CommandMap(\"Physics-quick-quad-macros\",{qqtext:\"Qqtext\",qq:\"Qqtext\",qcomma:[\"Macro\",\"\\\\qqtext*{,}\"],qc:[\"Macro\",\"\\\\qqtext*{,}\"],qcc:[\"Qqtext\",\"c.c.\"],qif:[\"Qqtext\",\"if\"],qthen:[\"Qqtext\",\"then\"],qelse:[\"Qqtext\",\"else\"],qotherwise:[\"Qqtext\",\"otherwise\"],qunless:[\"Qqtext\",\"unless\"],qgiven:[\"Qqtext\",\"given\"],qusing:[\"Qqtext\",\"using\"],qassume:[\"Qqtext\",\"assume\"],\"qsince,\":[\"Qqtext\",\"since,\"],qlet:[\"Qqtext\",\"let\"],qfor:[\"Qqtext\",\"for\"],qall:[\"Qqtext\",\"all\"],qeven:[\"Qqtext\",\"even\"],qodd:[\"Qqtext\",\"odd\"],qinteger:[\"Qqtext\",\"integer\"],qand:[\"Qqtext\",\"and\"],qor:[\"Qqtext\",\"or\"],qas:[\"Qqtext\",\"as\"],qin:[\"Qqtext\",\"in\"]},T.default),new r.CommandMap(\"Physics-derivative-macros\",{flatfrac:[\"Macro\",\"\\\\left.#1\\\\middle/#2\\\\right.\",2],differential:[\"Differential\",\"{\\\\rm d}\"],dd:[\"Differential\",\"{\\\\rm d}\"],variation:[\"Differential\",\"\\\\delta\"],var:[\"Differential\",\"\\\\delta\"],derivative:[\"Derivative\",2,\"{\\\\rm d}\"],dv:[\"Derivative\",2,\"{\\\\rm d}\"],partialderivative:[\"Derivative\",3,\"\\\\partial\"],pderivative:[\"Derivative\",3,\"\\\\partial\"],pdv:[\"Derivative\",3,\"\\\\partial\"],functionalderivative:[\"Derivative\",2,\"\\\\delta\"],fderivative:[\"Derivative\",2,\"\\\\delta\"],fdv:[\"Derivative\",2,\"\\\\delta\"]},T.default),new r.CommandMap(\"Physics-bra-ket-macros\",{bra:\"Bra\",ket:\"Ket\",innerproduct:\"BraKet\",braket:\"BraKet\",outerproduct:\"KetBra\",dyad:\"KetBra\",ketbra:\"KetBra\",op:\"KetBra\",expectationvalue:\"Expectation\",expval:\"Expectation\",ev:\"Expectation\",matrixelement:\"MatrixElement\",matrixel:\"MatrixElement\",mel:\"MatrixElement\"},T.default),new r.CommandMap(\"Physics-matrix-macros\",{matrixquantity:\"MatrixQuantity\",mqty:\"MatrixQuantity\",pmqty:[\"Macro\",\"\\\\mqty(#1)\",1],Pmqty:[\"Macro\",\"\\\\mqty*(#1)\",1],bmqty:[\"Macro\",\"\\\\mqty[#1]\",1],vmqty:[\"Macro\",\"\\\\mqty|#1|\",1],smallmatrixquantity:[\"MatrixQuantity\",!0],smqty:[\"MatrixQuantity\",!0],spmqty:[\"Macro\",\"\\\\smqty(#1)\",1],sPmqty:[\"Macro\",\"\\\\smqty*(#1)\",1],sbmqty:[\"Macro\",\"\\\\smqty[#1]\",1],svmqty:[\"Macro\",\"\\\\smqty|#1|\",1],matrixdeterminant:[\"Macro\",\"\\\\vmqty{#1}\",1],mdet:[\"Macro\",\"\\\\vmqty{#1}\",1],smdet:[\"Macro\",\"\\\\svmqty{#1}\",1],identitymatrix:\"IdentityMatrix\",imat:\"IdentityMatrix\",xmatrix:\"XMatrix\",xmat:\"XMatrix\",zeromatrix:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],zmat:[\"Macro\",\"\\\\xmat{0}{#1}{#2}\",2],paulimatrix:\"PauliMatrix\",pmat:\"PauliMatrix\",diagonalmatrix:\"DiagonalMatrix\",dmat:\"DiagonalMatrix\",antidiagonalmatrix:[\"DiagonalMatrix\",!0],admat:[\"DiagonalMatrix\",!0]},T.default),new r.EnvironmentMap(\"Physics-aux-envs\",o.default.environment,{smallmatrix:[\"Array\",null,null,null,\"c\",\"0.333em\",\".2em\",\"S\",1]},T.default),new r.MacroMap(\"Physics-characters\",{\"|\":[\"AutoClose\",i.TEXCLASS.ORD],\")\":\"AutoClose\",\"]\":\"AutoClose\"},T.default)},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(3),T=Q(13),n=Q(90);new r.MacroMap(\"text-special\",{$:\"Math\",\"%\":\"Comment\",\"^\":\"MathModeOnly\",_:\"MathModeOnly\",\"&\":\"Misplaced\",\"#\":\"Misplaced\",\"~\":\"Tilde\",\" \":\"Space\",\"\\t\":\"Space\",\"\\r\":\"Space\",\"\\n\":\"Space\",\"\\xa0\":\"Tilde\",\"{\":\"OpenBrace\",\"}\":\"CloseBrace\",\"`\":\"OpenQuote\",\"'\":\"CloseQuote\"},n.TextMacrosMethods),new r.CommandMap(\"text-macros\",{\"(\":\"Math\",$:\"SelfQuote\",_:\"SelfQuote\",\"%\":\"SelfQuote\",\"{\":\"SelfQuote\",\"}\":\"SelfQuote\",\" \":\"SelfQuote\",\"&\":\"SelfQuote\",\"#\":\"SelfQuote\",\"\\\\\":\"SelfQuote\",\"'\":[\"Accent\",\"\\xb4\"],\"\\u2019\":[\"Accent\",\"\\xb4\"],\"`\":[\"Accent\",\"`\"],\"\\u2018\":[\"Accent\",\"`\"],\"^\":[\"Accent\",\"^\"],'\"':[\"Accent\",\"\\xa8\"],\"~\":[\"Accent\",\"~\"],\"=\":[\"Accent\",\"\\xaf\"],\".\":[\"Accent\",\"\\u02d9\"],u:[\"Accent\",\"\\u02d8\"],v:[\"Accent\",\"\\u02c7\"],emph:\"Emph\",rm:[\"SetFont\",T.TexConstant.Variant.NORMAL],mit:[\"SetFont\",T.TexConstant.Variant.ITALIC],oldstyle:[\"SetFont\",T.TexConstant.Variant.OLDSTYLE],cal:[\"SetFont\",T.TexConstant.Variant.CALLIGRAPHIC],it:[\"SetFont\",\"-tex-mathit\"],bf:[\"SetFont\",T.TexConstant.Variant.BOLD],bbFont:[\"SetFont\",T.TexConstant.Variant.DOUBLESTRUCK],scr:[\"SetFont\",T.TexConstant.Variant.SCRIPT],frak:[\"SetFont\",T.TexConstant.Variant.FRAKTUR],sf:[\"SetFont\",T.TexConstant.Variant.SANSSERIF],tt:[\"SetFont\",T.TexConstant.Variant.MONOSPACE],tiny:[\"SetSize\",.5],Tiny:[\"SetSize\",.6],scriptsize:[\"SetSize\",.7],small:[\"SetSize\",.85],normalsize:[\"SetSize\",1],large:[\"SetSize\",1.2],Large:[\"SetSize\",1.44],LARGE:[\"SetSize\",1.73],huge:[\"SetSize\",2.07],Huge:[\"SetSize\",2.49],mathcal:\"MathModeOnly\",mathscr:\"MathModeOnly\",mathrm:\"MathModeOnly\",mathbf:\"MathModeOnly\",mathbb:\"MathModeOnly\",mathit:\"MathModeOnly\",mathfrak:\"MathModeOnly\",mathsf:\"MathModeOnly\",mathtt:\"MathModeOnly\",Bbb:[\"Macro\",\"{\\\\bbFont #1}\",1],textrm:[\"Macro\",\"{\\\\rm #1}\",1],textit:[\"Macro\",\"{\\\\it #1}\",1],textbf:[\"Macro\",\"{\\\\bf #1}\",1],textsf:[\"Macro\",\"{\\\\sf #1}\",1],texttt:[\"Macro\",\"{\\\\tt #1}\",1],dagger:[\"Insert\",\"\\u2020\"],ddagger:[\"Insert\",\"\\u2021\"],S:[\"Insert\",\"\\xa7\"],\",\":[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],\":\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\">\":[\"Spacer\",T.TexConstant.Length.MEDIUMMATHSPACE],\";\":[\"Spacer\",T.TexConstant.Length.THICKMATHSPACE],\"!\":[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],enspace:[\"Spacer\",\".5em\"],quad:[\"Spacer\",\"1em\"],qquad:[\"Spacer\",\"2em\"],thinspace:[\"Spacer\",T.TexConstant.Length.THINMATHSPACE],negthinspace:[\"Spacer\",T.TexConstant.Length.NEGATIVETHINMATHSPACE],hskip:\"Hskip\",hspace:\"Hskip\",kern:\"Hskip\",mskip:\"Hskip\",mspace:\"Hskip\",mkern:\"Hskip\",rule:\"rule\",Rule:[\"Rule\"],Space:[\"Rule\",\"blank\"],color:\"CheckAutoload\",textcolor:\"CheckAutoload\",colorbox:\"CheckAutoload\",fcolorbox:\"CheckAutoload\",href:\"CheckAutoload\",style:\"CheckAutoload\",class:\"CheckAutoload\",cssId:\"CheckAutoload\",unicode:\"CheckAutoload\",ref:[\"HandleRef\",!1],eqref:[\"HandleRef\",!0]},n.TextMacrosMethods)},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__assign||function(){return(n=Object.assign||function(t){for(var e,Q=1,r=arguments.length;Q<r;Q++)for(var T in e=arguments[Q])Object.prototype.hasOwnProperty.call(e,T)&&(t[T]=e[T]);return t}).apply(this,arguments)},o=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommonTeXFontMixin=void 0,e.CommonTeXFontMixin=function(t){var e;return(e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getDelimiterData=function(t){return this.getChar(\"-smallop\",t)||this.getChar(\"-size4\",t)},e}(t)).defaultVariants=i(t.defaultVariants,[[\"-smallop\",\"normal\"],[\"-largeop\",\"normal\"],[\"-size3\",\"normal\"],[\"-size4\",\"normal\"],[\"-tex-calligraphic\",\"italic\"],[\"-tex-bold-calligraphic\",\"bold-italic\"],[\"-tex-oldstyle\",\"normal\"],[\"-tex-bold-oldstyle\",\"bold\"],[\"-tex-mathit\",\"italic\"],[\"-tex-variant\",\"normal\"]]),e.defaultCssFonts=n(n({},t.defaultCssFonts),{\"-smallop\":[\"serif\",!1,!1],\"-largeop\":[\"serif\",!1,!1],\"-size3\":[\"serif\",!1,!1],\"-size4\":[\"serif\",!1,!1],\"-tex-calligraphic\":[\"cursive\",!0,!1],\"-tex-bold-calligraphic\":[\"cursive\",!0,!0],\"-tex-oldstyle\":[\"serif\",!1,!1],\"-tex-bold-oldstyle\":[\"serif\",!1,!0],\"-tex-mathit\":[\"serif\",!0,!1]}),e.defaultSizeVariants=[\"normal\",\"-smallop\",\"-largeop\",\"-size3\",\"-size4\"],e}},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(224);Object.defineProperty(e,\"doubleStruck\",{enumerable:!0,get:function(){return r.doubleStruck}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(245);Object.defineProperty(e,\"scriptBold\",{enumerable:!0,get:function(){return r.scriptBold}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=Q(246);Object.defineProperty(e,\"script\",{enumerable:!0,get:function(){return r.script}})},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractNavigatable=void 0;var r=Q(51),T=Q(297),n=function(){function t(){this.bubble=!1}return t.prototype.bubbleKey=function(){this.bubble=!0},t.prototype.keydown=function(t){switch(t.keyCode){case r.KEY.ESCAPE:this.escape(t);break;case r.KEY.RIGHT:this.right(t);break;case r.KEY.LEFT:this.left(t);break;case r.KEY.UP:this.up(t);break;case r.KEY.DOWN:this.down(t);break;case r.KEY.RETURN:case r.KEY.SPACE:this.space(t);break;default:return}this.bubble?this.bubble=!1:this.stop(t)},t.prototype.escape=function(t){},t.prototype.space=function(t){},t.prototype.left=function(t){},t.prototype.right=function(t){},t.prototype.up=function(t){},t.prototype.down=function(t){},t.prototype.stop=function(t){t&&(t.stopPropagation(),t.preventDefault(),t.cancelBubble=!0)},t.prototype.mousedown=function(t){return this.stop(t)},t.prototype.mouseup=function(t){return this.stop(t)},t.prototype.mouseover=function(t){return this.stop(t)},t.prototype.mouseout=function(t){return this.stop(t)},t.prototype.click=function(t){return this.stop(t)},t.prototype.addEvents=function(t){t.addEventListener(T.MOUSE.DOWN,this.mousedown.bind(this)),t.addEventListener(T.MOUSE.UP,this.mouseup.bind(this)),t.addEventListener(T.MOUSE.OVER,this.mouseover.bind(this)),t.addEventListener(T.MOUSE.OUT,this.mouseout.bind(this)),t.addEventListener(T.MOUSE.CLICK,this.click.bind(this)),t.addEventListener(\"keydown\",this.keydown.bind(this)),t.addEventListener(\"dragstart\",this.stop.bind(this)),t.addEventListener(T.MOUSE.SELECTSTART,this.stop.bind(this)),t.addEventListener(\"contextmenu\",this.stop.bind(this)),t.addEventListener(T.MOUSE.DBLCLICK,this.stop.bind(this))},t}();e.AbstractNavigatable=n},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MOUSE=void 0,e.MOUSE={CLICK:\"click\",DBLCLICK:\"dblclick\",DOWN:\"mousedown\",UP:\"mouseup\",OVER:\"mouseover\",OUT:\"mouseout\",MOVE:\"mousemove\",SELECTEND:\"selectend\",SELECTSTART:\"selectstart\"}},function(t,e,Q){\"use strict\";var r=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuStore=void 0;var T=Q(17),n=Q(10),o=Q(51),i=function(){function t(t){this.menu=t,this.store=[],this._active=null,this.counter=0,this.attachedClass=n.HtmlClasses.ATTACHED+\"_\"+T.MenuUtil.counter(),this.taborder=!0,this.attrMap={}}return Object.defineProperty(t.prototype,\"active\",{get:function(){return this._active},set:function(t){do{if(-1!==this.store.indexOf(t)){this._active=t;break}t=t.parentNode}while(t)},enumerable:!1,configurable:!0}),t.prototype.next=function(){var t=this.store.length;if(0===t)return this.active=null,null;var e=this.store.indexOf(this.active);return e=-1===e?0:e<t-1?e+1:0,this.active=this.store[e],this.active},t.prototype.previous=function(){var t=this.store.length;if(0===t)return this.active=null,null;var e=t-1,Q=this.store.indexOf(this.active);return Q=-1===Q||0===Q?e:Q-1,this.active=this.store[Q],this.active},t.prototype.clear=function(){this.remove(this.store)},t.prototype.insert=function(t){var e,Q,T=t instanceof HTMLElement?[t]:t;try{for(var n=r(T),o=n.next();!o.done;o=n.next()){var i=o.value;this.insertElement(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}this.sort()},t.prototype.remove=function(t){var e,Q,T=t instanceof HTMLElement?[t]:t;try{for(var n=r(T),o=n.next();!o.done;o=n.next()){var i=o.value;this.removeElement(i)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(Q=n.return)&&Q.call(n)}finally{if(e)throw e.error}}this.sort()},t.prototype.inTaborder=function(t){this.taborder&&!t&&this.removeTaborder(),!this.taborder&&t&&this.insertTaborder(),this.taborder=t},t.prototype.insertTaborder=function(){this.taborder&&this.insertTaborder_()},t.prototype.removeTaborder=function(){this.taborder&&this.removeTaborder_()},t.prototype.insertElement=function(t){t.classList.contains(this.attachedClass)||(t.classList.add(this.attachedClass),this.taborder&&this.addTabindex(t),this.addEvents(t))},t.prototype.removeElement=function(t){t.classList.contains(this.attachedClass)&&(t.classList.remove(this.attachedClass),this.taborder&&this.removeTabindex(t),this.removeEvents(t))},t.prototype.sort=function(){var t=document.getElementsByClassName(this.attachedClass);this.store=[].slice.call(t)},t.prototype.insertTaborder_=function(){this.store.forEach((function(t){return t.setAttribute(\"tabindex\",\"0\")}))},t.prototype.removeTaborder_=function(){this.store.forEach((function(t){return t.setAttribute(\"tabindex\",\"-1\")}))},t.prototype.addTabindex=function(t){t.hasAttribute(\"tabindex\")&&t.setAttribute(n.HtmlAttrs.OLDTAB,t.getAttribute(\"tabindex\")),t.setAttribute(\"tabindex\",\"0\")},t.prototype.removeTabindex=function(t){t.hasAttribute(n.HtmlAttrs.OLDTAB)?(t.setAttribute(\"tabindex\",t.getAttribute(n.HtmlAttrs.OLDTAB)),t.removeAttribute(n.HtmlAttrs.OLDTAB)):t.removeAttribute(\"tabindex\")},t.prototype.addEvents=function(t){t.hasAttribute(n.HtmlAttrs.COUNTER)||(this.addEvent(t,\"contextmenu\",this.menu.post.bind(this.menu)),this.addEvent(t,\"keydown\",this.keydown.bind(this)),t.setAttribute(n.HtmlAttrs.COUNTER,this.counter.toString()),this.counter++)},t.prototype.addEvent=function(t,e,Q){var r=n.HtmlAttrs[e.toUpperCase()+\"FUNC\"];this.attrMap[r+this.counter]=Q,t.addEventListener(e,Q)},t.prototype.removeEvents=function(t){if(t.hasAttribute(n.HtmlAttrs.COUNTER)){var e=t.getAttribute(n.HtmlAttrs.COUNTER);this.removeEvent(t,\"contextmenu\",e),this.removeEvent(t,\"keydown\",e),t.removeAttribute(n.HtmlAttrs.COUNTER)}},t.prototype.removeEvent=function(t,e,Q){var r=n.HtmlAttrs[e.toUpperCase()+\"FUNC\"],T=this.attrMap[r+Q];t.removeEventListener(e,T)},t.prototype.keydown=function(t){t.keyCode===o.KEY.SPACE&&(this.menu.post(t),t.preventDefault(),t.stopImmediatePropagation())},t}();e.MenuStore=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VariablePool=void 0;var r=function(){function t(){this.pool={}}return t.prototype.insert=function(t){this.pool[t.name]=t},t.prototype.lookup=function(t){return this.pool[t]},t.prototype.remove=function(t){delete this.pool[t]},t.prototype.update=function(){for(var t in this.pool)this.pool[t].update()},t}();e.VariablePool=r},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.CloseButton=void 0;var n=Q(102),o=Q(10),i=function(t){function e(e){var Q=t.call(this)||this;return Q.element=e,Q.className=o.HtmlClasses.MENUCLOSE,Q.role=\"button\",Q}return T(e,t),e.prototype.generateHtml=function(){var t=document.createElement(\"span\");t.classList.add(this.className),t.setAttribute(\"role\",this.role),t.setAttribute(\"tabindex\",\"0\");var e=document.createElement(\"span\");e.textContent=\"\\xd7\",t.appendChild(e),this.html=t},e.prototype.display=function(){},e.prototype.unpost=function(){t.prototype.unpost.call(this),this.element.unpost()},e.prototype.keydown=function(e){this.bubbleKey(),t.prototype.keydown.call(this,e)},e.prototype.space=function(t){this.unpost(),this.stop(t)},e.prototype.mousedown=function(t){this.unpost(),this.stop(t)},e}(n.AbstractPostable);e.CloseButton=i},function(t,e,Q){\"use strict\";var r=this&&this.__rest||function(t,e){var Q={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(Q[r]=t[r]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var T=0;for(r=Object.getOwnPropertySymbols(t);T<r.length;T++)e.indexOf(r[T])<0&&Object.prototype.propertyIsEnumerable.call(t,r[T])&&(Q[r[T]]=t[r[T]])}return Q},T=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o},n=this&&this.__values||function(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,Q=e&&t[e],r=0;if(Q)return Q.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(T(arguments[e]));return t};Object.defineProperty(e,\"__esModule\",{value:!0}),e.Parser=void 0;var i=Q(302),a=Q(273),s=Q(303),l=Q(304),c=Q(305),u=Q(306),p=Q(307),h=Q(103),f=Q(276),d=Q(308),L=Q(309),H=Q(310),m=Q(311),y=function(){function t(t){var e=this;void 0===t&&(t=[]),this._initList=[[\"command\",i.Command.fromJson.bind(i.Command)],[\"checkbox\",l.Checkbox.fromJson.bind(l.Checkbox)],[\"combo\",c.Combo.fromJson.bind(c.Combo)],[\"slider\",d.Slider.fromJson.bind(d.Slider)],[\"label\",u.Label.fromJson.bind(u.Label)],[\"radio\",p.Radio.fromJson.bind(p.Radio)],[\"rule\",f.Rule.fromJson.bind(f.Rule)],[\"submenu\",h.Submenu.fromJson.bind(h.Submenu)],[\"contextMenu\",a.ContextMenu.fromJson.bind(a.ContextMenu)],[\"subMenu\",L.SubMenu.fromJson.bind(L.SubMenu)],[\"variable\",s.Variable.fromJson.bind(s.Variable)],[\"items\",this.items.bind(this)],[\"selectionMenu\",H.SelectionMenu.fromJson.bind(H.SelectionMenu)],[\"selectionBox\",H.SelectionBox.fromJson.bind(H.SelectionBox)]],this._factory=new m.ParserFactory(this._initList),t.forEach((function(t){var Q=T(t,2),r=Q[0],n=Q[1];return e.factory.add(r,n)}))}return Object.defineProperty(t.prototype,\"factory\",{get:function(){return this._factory},enumerable:!1,configurable:!0}),t.prototype.items=function(t,e,Q){var r,T,o=[];try{for(var i=n(e),a=i.next();!a.done;a=i.next()){var s=a.value,l=this.parse(s,Q);l&&(Q.items.push(l),s.disabled&&l.disable(),s.hidden&&o.push(l))}}catch(t){r={error:t}}finally{try{a&&!a.done&&(T=i.return)&&T.call(i)}finally{if(r)throw r.error}}return o.forEach((function(t){return t.hide()})),Q.items},t.prototype.parse=function(t){for(var e=[],Q=1;Q<arguments.length;Q++)e[Q-1]=arguments[Q];var T=t.type,n=r(t,[\"type\"]),i=this.factory.get(T);return i?i.apply(void 0,o([this.factory,n],e)):null},t}();e.Parser=y},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Command=void 0;var n=Q(36),o=Q(17),i=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"command\",Q,T)||this;return n.command=r,n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.action,e.id)},e.prototype.executeAction=function(){try{this.command(o.MenuUtil.getActiveElement(this))}catch(t){o.MenuUtil.error(t,\"Illegal command callback.\")}o.MenuUtil.close(this)},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Command=i},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Variable=void 0;var r=Q(17),T=function(){function t(t,e,Q){this._name=t,this.getter=e,this.setter=Q,this.items=[]}return t.fromJson=function(t,e,Q){var r=new this(e.name,e.getter,e.setter);Q.insert(r)},Object.defineProperty(t.prototype,\"name\",{get:function(){return this._name},enumerable:!1,configurable:!0}),t.prototype.getValue=function(t){try{return this.getter(t)}catch(t){return r.MenuUtil.error(t,\"Command of variable \"+this.name+\" failed.\"),null}},t.prototype.setValue=function(t,e){try{this.setter(t,e)}catch(t){r.MenuUtil.error(t,\"Command of variable \"+this.name+\" failed.\")}this.update()},t.prototype.register=function(t){-1===this.items.indexOf(t)&&this.items.push(t)},t.prototype.unregister=function(t){var e=this.items.indexOf(t);-1!==e&&this.items.splice(e,1)},t.prototype.update=function(){this.items.forEach((function(t){return t.update()}))},t.prototype.registerCallback=function(t){this.items.forEach((function(e){return e.registerCallback(t)}))},t.prototype.unregisterCallback=function(t){this.items.forEach((function(e){return e.unregisterCallback(t)}))},t.prototype.toJson=function(){return{type:\"variable\",name:this.name,getter:this.getter.toString(),setter:this.setter.toString()}},t}();e.Variable=T},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Checkbox=void 0;var n=Q(52),o=Q(17),i=Q(10),a=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"checkbox\",Q,T)||this;return n.role=\"menuitemcheckbox\",n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(!this.variable.getValue()),o.MenuUtil.close(this)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.textContent=\"\\u2713\",this.span.classList.add(i.HtmlClasses.MENUCHECK)},e.prototype.updateAria=function(){this.html.setAttribute(\"aria-checked\",this.variable.getValue()?\"true\":\"false\")},e.prototype.updateSpan=function(){this.span.style.display=this.variable.getValue()?\"\":\"none\"},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Checkbox=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Combo=void 0;var n=Q(52),o=Q(17),i=Q(10),a=Q(51),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"combobox\",Q,T)||this;return n.role=\"combobox\",n.inputEvent=!1,n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.input.value,o.MenuUtil.getActiveElement(this))},e.prototype.space=function(e){t.prototype.space.call(this,e),o.MenuUtil.close(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.input.focus()},e.prototype.unfocus=function(){t.prototype.unfocus.call(this),this.updateSpan()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.MENUCOMBOBOX)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.classList.add(i.HtmlClasses.MENUINPUTBOX),this.input=document.createElement(\"input\"),this.input.addEventListener(\"keydown\",this.inputKey.bind(this)),this.input.setAttribute(\"size\",\"10em\"),this.input.setAttribute(\"type\",\"text\"),this.input.setAttribute(\"tabindex\",\"-1\"),this.span.appendChild(this.input)},e.prototype.inputKey=function(t){this.bubbleKey(),this.inputEvent=!0},e.prototype.keydown=function(e){if(this.inputEvent&&e.keyCode!==a.KEY.ESCAPE&&e.keyCode!==a.KEY.RETURN)return this.inputEvent=!1,void e.stopPropagation();t.prototype.keydown.call(this,e),e.stopPropagation()},e.prototype.updateAria=function(){},e.prototype.updateSpan=function(){var t;try{t=this.variable.getValue(o.MenuUtil.getActiveElement(this))}catch(e){t=\"\"}this.input.value=t},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Combo=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Label=void 0;var n=Q(36),o=Q(10),i=function(t){function e(e,Q,r){return t.call(this,e,\"label\",Q,r)||this}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.id)},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(o.HtmlClasses.MENULABEL)},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractItem);e.Label=i},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Radio=void 0;var n=Q(52),o=Q(17),i=Q(10),a=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"radio\",Q,T)||this;return n.role=\"menuitemradio\",n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.id),o.MenuUtil.close(this)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.span.textContent=\"\\u2713\",this.span.classList.add(i.HtmlClasses.MENURADIOCHECK)},e.prototype.updateAria=function(){this.html.setAttribute(\"aria-checked\",this.variable.getValue()===this.id?\"true\":\"false\")},e.prototype.updateSpan=function(){this.span.style.display=this.variable.getValue()===this.id?\"\":\"none\"},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Radio=a},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.Slider=void 0;var n=Q(52),o=Q(17),i=Q(10),a=Q(51),s=function(t){function e(e,Q,r,T){var n=t.call(this,e,\"slider\",Q,T)||this;return n.role=\"slider\",n.labelId=\"ctx_slideLabel\"+o.MenuUtil.counter(),n.valueId=\"ctx_slideValue\"+o.MenuUtil.counter(),n.inputEvent=!1,n.variable=e.pool.lookup(r),n.register(),n}return T(e,t),e.fromJson=function(t,e,Q){return new this(Q,e.content,e.variable,e.id)},e.prototype.executeAction=function(){this.variable.setValue(this.input.value,o.MenuUtil.getActiveElement(this)),this.update()},e.prototype.space=function(e){t.prototype.space.call(this,e),o.MenuUtil.close(this)},e.prototype.focus=function(){t.prototype.focus.call(this),this.input.focus()},e.prototype.unfocus=function(){t.prototype.unfocus.call(this),this.updateSpan()},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.MENUSLIDER),this.valueSpan=document.createElement(\"span\"),this.valueSpan.setAttribute(\"id\",this.valueId),this.valueSpan.classList.add(i.HtmlClasses.SLIDERVALUE),this.html.appendChild(this.valueSpan)},e.prototype.generateSpan=function(){this.span=document.createElement(\"span\"),this.labelSpan=document.createElement(\"span\"),this.labelSpan.setAttribute(\"id\",this.labelId),this.labelSpan.appendChild(this.html.childNodes[0]),this.html.appendChild(this.labelSpan),this.input=document.createElement(\"input\"),this.input.setAttribute(\"type\",\"range\"),this.input.setAttribute(\"min\",\"0\"),this.input.setAttribute(\"max\",\"100\"),this.input.setAttribute(\"aria-valuemin\",\"0\"),this.input.setAttribute(\"aria-valuemax\",\"100\"),this.input.setAttribute(\"aria-labelledby\",this.labelId),this.input.addEventListener(\"keydown\",this.inputKey.bind(this)),this.input.addEventListener(\"input\",this.executeAction.bind(this)),this.input.classList.add(i.HtmlClasses.SLIDERBAR),this.span.appendChild(this.input)},e.prototype.inputKey=function(t){this.inputEvent=!0},e.prototype.mousedown=function(t){t.stopPropagation()},e.prototype.mouseup=function(t){event.stopPropagation()},e.prototype.keydown=function(e){var Q=e.keyCode;return Q===a.KEY.UP||Q===a.KEY.DOWN?(e.preventDefault(),void t.prototype.keydown.call(this,e)):this.inputEvent&&Q!==a.KEY.ESCAPE&&Q!==a.KEY.RETURN?(this.inputEvent=!1,void e.stopPropagation()):(t.prototype.keydown.call(this,e),void e.stopPropagation())},e.prototype.updateAria=function(){var t=this.variable.getValue();t&&this.input&&(this.input.setAttribute(\"aria-valuenow\",t),this.input.setAttribute(\"aria-valuetext\",t+\"%\"))},e.prototype.updateSpan=function(){var t;try{t=this.variable.getValue(o.MenuUtil.getActiveElement(this)),this.valueSpan.innerHTML=t+\"%\"}catch(e){t=\"\"}this.input.value=t},e.prototype.toJson=function(){return{type:\"\"}},e}(n.AbstractVariableItem);e.Slider=s},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)});Object.defineProperty(e,\"__esModule\",{value:!0}),e.SubMenu=void 0;var n=function(t){function e(e){var Q=t.call(this)||this;return Q._anchor=e,Q.variablePool=Q.anchor.menu.pool,Q.setBaseMenu(),Q}return T(e,t),e.fromJson=function(t,e,Q){var r=e.items,T=new this(Q),n=t.get(\"items\")(t,r,T);return T.items=n,T},Object.defineProperty(e.prototype,\"anchor\",{get:function(){return this._anchor},enumerable:!1,configurable:!0}),e.prototype.post=function(){if(this.anchor.menu.isPosted()){for(var e=this.anchor.html,Q=this.html,r=this.baseMenu.frame,T=e.offsetWidth,n=T-2,o=0;e&&e!==r;)n+=e.offsetLeft,o+=e.offsetTop,e=e.parentNode;n+Q.offsetWidth>document.body.offsetWidth-5&&(n=Math.max(5,n-T-Q.offsetWidth+6)),t.prototype.post.call(this,n,o)}},e.prototype.display=function(){this.baseMenu.frame.appendChild(this.html)},e.prototype.setBaseMenu=function(){var t=this;do{t=t.anchor.menu}while(t instanceof e);this.baseMenu=t},e.prototype.left=function(t){this.focused=null,this.anchor.focus()},e.prototype.toJson=function(){return{type:\"\"}},e}(Q(101).AbstractMenu);e.SubMenu=n},function(t,e,Q){\"use strict\";var r,T=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var Q in e)e.hasOwnProperty(Q)&&(t[Q]=e[Q])})(t,e)},function(t,e){function Q(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(Q.prototype=e.prototype,new Q)}),n=this&&this.__read||function(t,e){var Q=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!Q)return t;var r,T,n=Q.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=n.next()).done;)o.push(r.value)}catch(t){T={error:t}}finally{try{r&&!r.done&&(Q=n.return)&&Q.call(n)}finally{if(T)throw T.error}}return o};Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectionBox=e.SelectionMenu=void 0;var o=Q(17),i=Q(10),a=Q(101),s=Q(104),l=function(t){function e(e){var Q=t.call(this)||this;return Q.anchor=e,Q.className=i.HtmlClasses.SELECTIONMENU,Q.variablePool=Q.anchor.menu.pool,Q.baseMenu=Q.anchor.menu,Q}return T(e,t),e.fromJson=function(t,e,Q){var r=e.title,T=e.values,n=e.variable,o=new this(Q),i=t.get(\"label\")(t,{content:r||\"\",id:r||\"id\"},o),a=t.get(\"rule\")(t,{},o),s=T.map((function(e){return t.get(\"radio\")(t,{content:e,variable:n,id:e},o)})),l=[i,a].concat(s);return o.items=l,o},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.items.forEach((function(t){return t.html.classList.add(i.HtmlClasses.SELECTIONITEM)}))},e.prototype.display=function(){},e.prototype.right=function(t){this.anchor.right(t)},e.prototype.left=function(t){this.anchor.left(t)},e}(a.AbstractMenu);e.SelectionMenu=l;var c=function(t){function e(e,Q,r,T){void 0===r&&(r=\"none\"),void 0===T&&(T=\"vertical\");var n=t.call(this,e,null,Q)||this;return n.style=r,n.grid=T,n._selections=[],n.prefix=\"ctxt-selection\",n._balanced=!0,n}return T(e,t),e.fromJson=function(t,e,Q){var r=e.title,T=e.signature,n=e.selections,o=new this(r,T,e.order,e.grid);o.attachMenu(Q);var i=n.map((function(e){return t.get(\"selectionMenu\")(t,e,o)}));return o.selections=i,o},e.prototype.attachMenu=function(t){this.menu=t},Object.defineProperty(e.prototype,\"selections\",{get:function(){return this._selections},set:function(t){var e=this;this._selections=[],t.forEach((function(t){return e.addSelection(t)}))},enumerable:!1,configurable:!0}),e.prototype.addSelection=function(t){t.anchor=this,this._selections.push(t)},e.prototype.rowDiv=function(t){var e=this,Q=document.createElement(\"div\");this.contentDiv.appendChild(Q);var r=t.map((function(t){return Q.appendChild(t.html),t.html.id||(t.html.id=e.prefix+o.MenuUtil.counter()),t.html.getBoundingClientRect()})),T=r.map((function(t){return t.width})),n=T.reduce((function(t,e){return t+e}),0),a=r.reduce((function(t,e){return Math.max(t,e.height)}),0);return Q.classList.add(i.HtmlClasses.SELECTIONDIVIDER),Q.setAttribute(\"style\",\"height: \"+a+\"px;\"),[Q,n,a,T]},e.prototype.display=function(){if(t.prototype.display.call(this),this.order(),this.selections.length){for(var e=[],Q=0,r=[],T=this.getChunkSize(this.selections.length),o=function(t){var o=i.selections.slice(t,t+T),a=n(i.rowDiv(o),4),s=a[0],l=a[1],c=a[2],u=a[3];e.push(s),Q=Math.max(Q,l),o.forEach((function(t){return t.html.style.height=c+\"px\"})),r=i.combineColumn(r,u)},i=this,a=0;a<this.selections.length;a+=T)o(a);this._balanced&&(this.balanceColumn(e,r),Q=r.reduce((function(t,e){return t+e}),20)),e.forEach((function(t){return t.style.width=Q+\"px\"}))}},e.prototype.getChunkSize=function(t){switch(this.grid){case\"square\":return Math.floor(Math.sqrt(t));case\"horizontal\":return Math.floor(t/e.chunkSize);case\"vertical\":default:return e.chunkSize}},e.prototype.balanceColumn=function(t,e){t.forEach((function(t){for(var Q=Array.from(t.children),r=0,T=void 0;T=Q[r];r++)T.style.width=e[r]+\"px\"}))},e.prototype.combineColumn=function(t,e){for(var Q=[],r=0;t[r]||e[r];){if(!t[r]){Q=Q.concat(e.slice(r));break}if(!e[r]){Q=Q.concat(t.slice(r));break}Q.push(Math.max(t[r],e[r])),r++}return Q},e.prototype.left=function(t){var e=this;this.move(t,(function(t){return(0===t?e.selections.length:t)-1}))},e.prototype.right=function(t){var e=this;this.move(t,(function(t){return t===e.selections.length-1?0:t+1}))},e.prototype.generateHtml=function(){t.prototype.generateHtml.call(this),this.html.classList.add(i.HtmlClasses.SELECTION)},e.prototype.generateContent=function(){var e=t.prototype.generateContent.call(this);return e.classList.add(i.HtmlClasses.SELECTIONBOX),e.removeAttribute(\"tabindex\"),e},e.prototype.findSelection=function(t){var e=t.target,Q=null;if(e.id&&(Q=this.selections.find((function(t){return t.html.id===e.id}))),!Q){var r=e.parentElement.id;Q=this.selections.find((function(t){return t.html.id===r}))}return Q},e.prototype.move=function(t,e){var Q=this.findSelection(t);Q.focused&&Q.focused.unfocus();var r=e(this.selections.indexOf(Q));this.selections[r].focus()},e.prototype.order=function(){this.selections.sort(e.orderMethod.get(this.style))},e.prototype.toJson=function(){return{type:\"\"}},e.chunkSize=4,e.orderMethod=new Map([[\"alphabetical\",function(t,e){return t.items[0].content.localeCompare(e.items[0].content)}],[\"none\",function(t,e){return 1}],[\"decreasing\",function(t,e){var Q=t.items.length,r=e.items.length;return Q<r?1:r<Q?-1:0}],[\"increasing\",function(t,e){var Q=t.items.length,r=e.items.length;return Q<r?-1:r<Q?1:0}]]),e}(s.Info);e.SelectionBox=c},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParserFactory=void 0;var r=function(){function t(t){this._parser=new Map(t)}return t.prototype.get=function(t){return this._parser.get(t)},t.prototype.add=function(t,e){this._parser.set(t,e)},t}();e.ParserFactory=r},function(t,e,Q){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CssStyles=void 0;var r=Q(10);!function(t){function e(t){return\".\"+(r.HtmlClasses[t]||t)}var Q={};Q[e(\"INFOCLOSE\")]=\"{  top:.2em; right:.2em;}\",Q[e(\"INFOCONTENT\")]=\"{  overflow:auto; text-align:left; font-size:80%;  padding:.4em .6em; border:1px inset; margin:1em 0px;  max-height:20em; max-width:30em; background-color:#EEEEEE;  white-space:normal;}\",Q[e(\"INFO\")+e(\"MOUSEPOST\")]=\"{outline:none;}\",Q[e(\"INFO\")]='{  position:fixed; left:50%; width:auto; text-align:center;  border:3px outset; padding:1em 2em; background-color:#DDDDDD;  color:black;  cursor:default; font-family:message-box; font-size:120%;  font-style:normal; text-indent:0; text-transform:none;  line-height:normal; letter-spacing:normal; word-spacing:normal;  word-wrap:normal; white-space:nowrap; float:none; z-index:201;  border-radius: 15px;                     /* Opera 10.5 and IE9 */  -webkit-border-radius:15px;               /* Safari and Chrome */  -moz-border-radius:15px;                  /* Firefox */  -khtml-border-radius:15px;                /* Konqueror */  box-shadow:0px 10px 20px #808080;         /* Opera 10.5 and IE9 */  -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */  -moz-box-shadow:0px 10px 20px #808080;    /* Forefox 3.5 */  -khtml-box-shadow:0px 10px 20px #808080;  /* Konqueror */  filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color=\"gray\", Positive=\"true\"); /* IE */}';var T={};T[e(\"MENU\")]=\"{  position:absolute;  background-color:white;  color:black;  width:auto; padding:5px 0px;  border:1px solid #CCCCCC; margin:0; cursor:default;  font: menu; text-align:left; text-indent:0; text-transform:none;  line-height:normal; letter-spacing:normal; word-spacing:normal;  word-wrap:normal; white-space:nowrap; float:none; z-index:201;  border-radius: 5px;                     /* Opera 10.5 and IE9 */  -webkit-border-radius: 5px;             /* Safari and Chrome */  -moz-border-radius: 5px;                /* Firefox */  -khtml-border-radius: 5px;              /* Konqueror */  box-shadow:0px 10px 20px #808080;         /* Opera 10.5 and IE9 */  -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */  -moz-box-shadow:0px 10px 20px #808080;    /* Forefox 3.5 */  -khtml-box-shadow:0px 10px 20px #808080;  /* Konqueror */}\",T[e(\"MENUITEM\")]=\"{  padding: 1px 2em;  background:transparent;}\",T[e(\"MENUARROW\")]=\"{  position:absolute; right:.5em; padding-top:.25em; color:#666666;  font-family: null; font-size: .75em}\",T[e(\"MENUACTIVE\")+\" \"+e(\"MENUARROW\")]=\"{color:white}\",T[e(\"MENUARROW\")+e(\"RTL\")]=\"{left:.5em; right:auto}\",T[e(\"MENUCHECK\")]=\"{  position:absolute; left:.7em;  font-family: null}\",T[e(\"MENUCHECK\")+e(\"RTL\")]=\"{ right:.7em; left:auto }\",T[e(\"MENURADIOCHECK\")]=\"{  position:absolute; left: .7em;}\",T[e(\"MENURADIOCHECK\")+e(\"RTL\")]=\"{  right: .7em; left:auto}\",T[e(\"MENUINPUTBOX\")]=\"{  padding-left: 1em; right:.5em; color:#666666;  font-family: null;}\",T[e(\"MENUINPUTBOX\")+e(\"RTL\")]=\"{  left: .1em;}\",T[e(\"MENUCOMBOBOX\")]=\"{  left:.1em; padding-bottom:.5em;}\",T[e(\"MENUSLIDER\")]=\"{  left: .1em;}\",T[e(\"SLIDERVALUE\")]=\"{  position:absolute; right:.1em; padding-top:.25em; color:#333333;  font-size: .75em}\",T[e(\"SLIDERBAR\")]=\"{  outline: none; background: #d3d3d3}\",T[e(\"MENULABEL\")]=\"{  padding: 1px 2em 3px 1.33em;  font-style:italic}\",T[e(\"MENURULE\")]=\"{  border-top: 1px solid #DDDDDD;  margin: 4px 3px;}\",T[e(\"MENUDISABLED\")]=\"{  color:GrayText}\",T[e(\"MENUACTIVE\")]=\"{  background-color: #606872;  color: white;}\",T[e(\"MENUDISABLED\")+\":focus\"]=\"{  background-color: #E8E8E8}\",T[e(\"MENULABEL\")+\":focus\"]=\"{  background-color: #E8E8E8}\",T[e(\"CONTEXTMENU\")+\":focus\"]=\"{  outline:none}\",T[e(\"CONTEXTMENU\")+\" \"+e(\"MENUITEM\")+\":focus\"]=\"{  outline:none}\",T[e(\"SELECTIONMENU\")]=\"{  position:relative; float:left;  border-bottom: none; -webkit-box-shadow:none; -webkit-border-radius:0px; }\",T[e(\"SELECTIONITEM\")]=\"{  padding-right: 1em;}\",T[e(\"SELECTION\")]=\"{  right: 40%; width:50%; }\",T[e(\"SELECTIONBOX\")]=\"{  padding: 0em; max-height:20em; max-width: none;  background-color:#FFFFFF;}\",T[e(\"SELECTIONDIVIDER\")]=\"{  clear: both; border-top: 2px solid #000000;}\",T[e(\"MENU\")+\" \"+e(\"MENUCLOSE\")]=\"{  top:-10px; left:-10px}\";var n={};n[e(\"MENUCLOSE\")]='{  position:absolute;  cursor:pointer;  display:inline-block;  border:2px solid #AAA;  border-radius:18px;  -webkit-border-radius: 18px;             /* Safari and Chrome */  -moz-border-radius: 18px;                /* Firefox */  -khtml-border-radius: 18px;              /* Konqueror */  font-family: \"Courier New\", Courier;  font-size:24px;  color:#F0F0F0}',n[e(\"MENUCLOSE\")+\" span\"]=\"{  display:block; background-color:#AAA; border:1.5px solid;  border-radius:18px;  -webkit-border-radius: 18px;             /* Safari and Chrome */  -moz-border-radius: 18px;                /* Firefox */  -khtml-border-radius: 18px;              /* Konqueror */  line-height:0;  padding:8px 0 6px     /* may need to be browser-specific */}\",n[e(\"MENUCLOSE\")+\":hover\"]=\"{  color:white!important;  border:2px solid #CCC!important}\",n[e(\"MENUCLOSE\")+\":hover span\"]=\"{  background-color:#CCC!important}\",n[e(\"MENUCLOSE\")+\":hover:focus\"]=\"{  outline:none}\";var o=!1,i=!1,a=!1;function s(t){a||(l(n,t),a=!0)}function l(t,e){var Q=e||document,r=Q.createElement(\"style\");r.type=\"text/css\";var T=\"\";for(var n in t)T+=n,T+=\" \",T+=t[n],T+=\"\\n\";r.innerHTML=T,Q.head.appendChild(r)}t.addMenuStyles=function(t){i||(l(T,t),i=!0,s(t))},t.addInfoStyles=function(t){o||(l(Q,t),o=!0,s(t))}}(e.CssStyles||(e.CssStyles={}))},function(t,e,Q){\"use strict\";Q.r(e);var r=Q(1),T=Q(11),n=Q(29),o=Q(277);Object(r.combineWithMathJax)({_:{components:{loader:T,package:n,startup:o}}}),T.Loader.preLoad(\"loader\",\"startup\",\"core\",\"input/tex-full\",\"output/svg\",\"output/svg/fonts/tex.js\",\"ui/menu\",\"a11y/assistive-mml\");var i=Q(105),a=Q(96),s=Q(106),l=Q(107),c=Q(108),u=Q(118),p=Q(54),h=Q(53),f=Q(14),d=Q(56),L=Q(24),H=Q(111),m=Q(278),y=Q(57),v=Q(0),g=Q(81),b=Q(73),M=Q(114),V=Q(115),x=Q(59),O=Q(116),_=Q(72),S=Q(68),E=Q(71),C=Q(65),w=Q(79),A=Q(38),P=Q(75),N=Q(60),k=Q(31),I=Q(69),R=Q(70),j=Q(67),B=Q(64),D=Q(63),Z=Q(62),F=Q(66),G=Q(113),q=Q(39),W=Q(76),X=Q(78),z=Q(61),U=Q(77),J=Q(74),K=Q(80),$=Q(82),Y=Q(112),tt=Q(83),et=Q(55),Qt=Q(37),rt=Q(58),Tt=Q(110),nt=Q(119),ot=Q(120),it=Q(121),at=Q(279),st=Q(122),lt=Q(125),ct=Q(49),ut=Q(123),pt=Q(124),ht=Q(25),ft=Q(126),dt=Q(18),Lt=Q(117),Ht=Q(19),mt=Q(30),yt=Q(109),vt=Q(7),gt=Q(21),bt=Q(40),Mt=Q(127),Vt=Q(84),xt=Q(32),Ot=Q(128),_t=Q(15);Object(r.combineWithMathJax)({_:{adaptors:{HTMLAdaptor:i,browserAdaptor:a},components:{global:r},core:{DOMAdaptor:s,FindMath:l,Handler:c,HandlerList:u,InputJax:p,MathDocument:h,MathItem:f,MathList:d,MmlTree:{Attributes:L,MML:H,MathMLVisitor:m,MmlFactory:y,MmlNode:v,MmlNodes:{TeXAtom:g,maction:b,maligngroup:M,malignmark:V,math:x,mathchoice:O,menclose:_,merror:S,mfenced:E,mfrac:C,mglyph:w,mi:A,mmultiscripts:P,mn:N,mo:k,mpadded:I,mphantom:R,mroot:j,mrow:B,ms:D,mspace:Z,msqrt:F,mstyle:G,msubsup:q,mtable:W,mtd:X,mtext:z,mtr:U,munderover:J,semantics:K},MmlVisitor:$,OperatorDictionary:Y,SerializedMmlVisitor:tt},OutputJax:et,Tree:{Factory:Qt,Node:rt,NodeFactory:Tt,Visitor:nt,Wrapper:ot,WrapperFactory:it}},handlers:{html_ts:at,html:{HTMLDocument:st,HTMLDomStrings:lt,HTMLHandler:ct,HTMLMathItem:ut,HTMLMathList:pt}},mathjax:ht,util:{AsyncLoad:ft,BBox:dt,BitField:Lt,Entities:Ht,FunctionList:mt,LinkedList:yt,Options:vt,PrioritizedList:gt,Retries:bt,StyleList:Mt,Styles:Vt,lengths:xt,numeric:Ot,string:_t}}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"HTMLHandler\",ct.HTMLHandler),MathJax.startup.registerConstructor(\"browserAdaptor\",a.browserAdaptor),MathJax.startup.useHandler(\"HTMLHandler\"),MathJax.startup.useAdaptor(\"browserAdaptor\")),MathJax.loader&&(MathJax._.mathjax.mathjax.asyncLoad=function(t){return MathJax.loader.load(t)});var St,Et=Q(97),Ct=Q(98),wt=Q(2),At=Q(130),Pt=Q(129),Nt=Q(33),kt=Q(41),It=Q(8),Rt=Q(23),jt=Q(86),Bt=Q(9),Dt=Q(85),Zt=Q(22),Ft=Q(131),Gt=Q(26),qt=Q(3),Wt=Q(20),Xt=Q(13),zt=Q(5),Ut=Q(12),Jt=Q(132),Kt=Q(135),$t=Q(136),Yt=Q(133),te=Q(134),ee=Q(34),Qe=Q(280),re=Q(42),Te=Q(27),ne=Q(16),oe=Q(137),ie=Q(138),ae=Q(139),se=Q(140),le=Q(141),ce=Q(142),ue=Q(143),pe=Q(144),he=Q(43),fe=Q(145),de=Q(150),Le=Q(146),He=Q(149),me=Q(147),ye=Q(148),ve=Q(151),ge=Q(87),be=Q(152),Me=Q(154),Ve=Q(155),xe=Q(156),Oe=Q(89),_e=Q(153),Se=Q(88),Ee=Q(44),Ce=Q(157),we=Q(158),Ae=Q(159),Pe=Q(160),Ne=Q(161),ke=Q(91),Ie=Q(162),Re=Q(163),je=Q(90),Be=Q(164),De=Q(165),Ze=Q(166);function Fe(t,e,Q){var T,n,o,i=MathJax.config.tex;if(i&&i.packages){var a=i.packages,s=a.indexOf(t);s>=0&&(a[s]=e),Q&&i[t]&&(Object(r.combineConfig)(i,(T={},n=e,o=i[t],n in T?Object.defineProperty(T,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):T[n]=o,T)),delete i[t])}}function Ge(t,e){(null==e||e>t.length)&&(e=t.length);for(var Q=0,r=new Array(e);Q<e;Q++)r[Q]=t[Q];return r}Object(r.combineWithMathJax)({_:{input:{tex_ts:Et,tex:{AllPackages:Ct,Configuration:wt,FilterUtil:At,FindTeX:Pt,MapHandler:Nt,NodeFactory:kt,NodeUtil:It,ParseMethods:Rt,ParseOptions:jt,ParseUtil:Bt,Stack:Dt,StackItem:Zt,StackItemFactory:Ft,Symbol:Gt,SymbolMap:qt,Tags:Wt,TexConstants:Xt,TexError:zt,TexParser:Ut,action:{ActionConfiguration:Jt},amscd:{AmsCdConfiguration:Kt,AmsCdMethods:$t},ams:{AmsConfiguration:Yt,AmsItems:te,AmsMethods:ee},autoload:{AutoloadConfiguration:Qe},base:{BaseConfiguration:re,BaseItems:Te,BaseMethods:ne},bbox:{BboxConfiguration:oe},boldsymbol:{BoldsymbolConfiguration:ie},braket:{BraketConfiguration:ae,BraketItems:se,BraketMethods:le},bussproofs:{BussproofsConfiguration:ce,BussproofsItems:ue,BussproofsMethods:pe,BussproofsUtil:he},cancel:{CancelConfiguration:fe},colorv2:{ColorV2Configuration:de},color:{ColorConfiguration:Le,ColorConstants:He,ColorMethods:me,ColorUtil:ye},configmacros:{ConfigMacrosConfiguration:ve},enclose:{EncloseConfiguration:ge},extpfeil:{ExtpfeilConfiguration:be},html:{HtmlConfiguration:Me,HtmlMethods:Ve},mhchem:{MhchemConfiguration:xe},newcommand:{NewcommandConfiguration:Oe,NewcommandItems:_e,NewcommandMethods:Se,NewcommandUtil:Ee},noerrors:{NoErrorsConfiguration:Ce},noundefined:{NoUndefinedConfiguration:we},physics:{PhysicsConfiguration:Ae,PhysicsItems:Pe,PhysicsMethods:Ne},require:{RequireConfiguration:ke},tagformat:{TagFormatConfiguration:Ie},textmacros:{TextMacrosConfiguration:Re,TextMacrosMethods:je,TextParser:Be},unicode:{UnicodeConfiguration:De},verb:{VerbConfiguration:Ze}}}}}),T.Loader.preLoad(\"input/tex-base\",\"[tex]/all-packages\",\"[tex]/require\"),function(t){if(MathJax.startup){MathJax.startup.registerConstructor(\"tex\",Et.TeX),MathJax.startup.useInput(\"tex\"),MathJax.config.tex||(MathJax.config.tex={});var e=MathJax.config.tex.packages;MathJax.config.tex.packages=t,e&&Object(vt.insert)(MathJax.config.tex,{packages:e})}}([\"require\"].concat(function(t){if(Array.isArray(t))return Ge(t)}(St=Ct.AllPackages)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(St)||function(t,e){if(t){if(\"string\"==typeof t)return Ge(t,e);var Q=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===Q&&t.constructor&&(Q=t.constructor.name),\"Map\"===Q||\"Set\"===Q?Array.from(t):\"Arguments\"===Q||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Q)?Ge(t,e):void 0}}(St)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),Fe(\"amsCd\",\"amscd\",!0),Fe(\"colorV2\",\"colorv2\",!1),Fe(\"configMacros\",\"configmacros\",!1),Fe(\"tagFormat\",\"tagformat\",!0);var qe=Q(28),We=Q(45),Xe=Q(167),ze=Q(168),Ue=Q(169),Je=Q(170),Ke=Q(171),$e=Q(92),Ye=Q(172),tQ=Q(173),eQ=Q(174),QQ=Q(175),rQ=Q(176),TQ=Q(177),nQ=Q(178),oQ=Q(179),iQ=Q(180),aQ=Q(181),sQ=Q(182),lQ=Q(93),cQ=Q(183),uQ=Q(184),pQ=Q(185),hQ=Q(46),fQ=Q(186),dQ=Q(187),LQ=Q(188),HQ=Q(94),mQ=Q(47),yQ=Q(189),vQ=Q(190),gQ=Q(50),bQ=Q(266),MQ=Q(6),VQ=Q(215),xQ=Q(4),OQ=Q(191),_Q=Q(192),SQ=Q(218),EQ=Q(219),CQ=Q(213),wQ=Q(193),AQ=Q(214),PQ=Q(200),NQ=Q(206),kQ=Q(204),IQ=Q(217),RQ=Q(195),jQ=Q(209),BQ=Q(197),DQ=Q(196),ZQ=Q(202),FQ=Q(203),GQ=Q(205),qQ=Q(194),WQ=Q(198),XQ=Q(201),zQ=Q(95),UQ=Q(48),JQ=Q(210),KQ=Q(212),$Q=Q(199),YQ=Q(211),tr=Q(208),er=Q(207),Qr=Q(216);Object(r.combineWithMathJax)({_:{output:{common:{FontData:qe,Notation:We,OutputJax:Xe,Wrapper:ze,WrapperFactory:Ue,Wrappers:{TeXAtom:Je,TextNode:Ke,maction:$e,math:Ye,menclose:tQ,mfenced:eQ,mfrac:QQ,mglyph:rQ,mi:TQ,mmultiscripts:nQ,mn:oQ,mo:iQ,mpadded:aQ,mroot:sQ,mrow:lQ,ms:cQ,mspace:uQ,msqrt:pQ,msubsup:hQ,mtable:fQ,mtd:dQ,mtext:LQ,mtr:HQ,munderover:mQ,scriptbase:yQ,semantics:vQ}},svg_ts:gQ,svg:{FontCache:bQ,FontData:MQ,Notation:VQ,Wrapper:xQ,WrapperFactory:OQ,Wrappers_ts:_Q,Wrappers:{TeXAtom:SQ,TextNode:EQ,maction:CQ,math:wQ,menclose:AQ,merror:PQ,mfenced:NQ,mfrac:kQ,mglyph:IQ,mi:RQ,mmultiscripts:jQ,mn:BQ,mo:DQ,mpadded:ZQ,mphantom:FQ,mroot:GQ,mrow:qQ,ms:WQ,mspace:XQ,msqrt:zQ,msubsup:UQ,mtable:JQ,mtd:KQ,mtext:$Q,mtr:YQ,munderover:tr,scriptbase:er,semantics:Qr}}}}}),MathJax.loader&&Object(r.combineDefaults)(MathJax.config.loader,\"output/svg\",{checkReady:function(){return MathJax.loader.load(\"output/svg/fonts/tex\")}}),MathJax.startup&&(MathJax.startup.registerConstructor(\"svg\",gQ.SVG),MathJax.startup.useOutput(\"svg\"));var rr=Q(221),Tr=Q(223),nr=Q(265),or=Q(224),ir=Q(226),ar=Q(228),sr=Q(230),lr=Q(232),cr=Q(234),ur=Q(236),pr=Q(238),hr=Q(240),fr=Q(242),dr=Q(244),Lr=Q(245),Hr=Q(246),mr=Q(248),yr=Q(250),vr=Q(252),gr=Q(254),br=Q(256),Mr=Q(258),Vr=Q(260),xr=Q(262),Or=Q(264),_r=Q(35),Sr=Q(220),Er=Q(222),Cr=Q(225),wr=Q(227),Ar=Q(229),Pr=Q(231),Nr=Q(233),kr=Q(235),Ir=Q(237),Rr=Q(239),jr=Q(241),Br=Q(243),Dr=Q(247),Zr=Q(249),Fr=Q(251),Gr=Q(253),qr=Q(255),Wr=Q(257),Xr=Q(259),zr=Q(261),Ur=Q(263);if(Object(r.combineWithMathJax)({_:{output:{common:{fonts:{tex:{\"bold-italic\":rr,bold:Tr,delimiters:nr,\"double-struck\":or,\"fraktur-bold\":ir,fraktur:ar,italic:sr,largeop:lr,monospace:cr,normal:ur,\"sans-serif-bold-italic\":pr,\"sans-serif-bold\":hr,\"sans-serif-italic\":fr,\"sans-serif\":dr,\"script-bold\":Lr,script:Hr,smallop:mr,\"tex-calligraphic-bold\":yr,\"tex-calligraphic\":vr,\"tex-mathit\":gr,\"tex-oldstyle-bold\":br,\"tex-oldstyle\":Mr,\"tex-size3\":Vr,\"tex-size4\":xr,\"tex-variant\":Or}}},svg:{fonts:{tex_ts:_r,tex:{\"bold-italic\":Sr,bold:Er,\"fraktur-bold\":Cr,fraktur:wr,italic:Ar,largeop:Pr,monospace:Nr,normal:kr,\"sans-serif-bold-italic\":Ir,\"sans-serif-bold\":Rr,\"sans-serif-italic\":jr,\"sans-serif\":Br,smallop:Dr,\"tex-calligraphic-bold\":Zr,\"tex-calligraphic\":Fr,\"tex-mathit\":Gr,\"tex-oldstyle-bold\":qr,\"tex-oldstyle\":Wr,\"tex-size3\":Xr,\"tex-size4\":zr,\"tex-variant\":Ur}}}}}}),MathJax.startup){var Jr=Object(vt.selectOptionsFromKeys)(MathJax.config.svg||{},_r.TeXFont.OPTIONS);Object(r.combineDefaults)(MathJax.config,\"svg\",{font:new _r.TeXFont(Jr)})}var Kr=Q(267),$r=Q(268),Yr=Q(99),tT=Q(269),eT=Q(270);Object(r.combineWithMathJax)({_:{ui:{menu:{MJContextMenu:Kr,Menu:$r,MenuHandler:Yr,MmlVisitor:tT,SelectableInfo:eT}}}}),MathJax.startup&&\"undefined\"!=typeof window&&MathJax.startup.extendHandler((function(t){return Object(Yr.MenuHandler)(t)}),20);var QT=Q(100);Object(r.combineWithMathJax)({_:{a11y:{\"assistive-mml\":QT}}}),MathJax.startup&&MathJax.startup.extendHandler((function(t){return Object(QT.AssistiveMmlHandler)(t)}));var rT={tex:\"[mathjax]/input/tex/extensions\",sre:\"[mathjax]/sre/\"+(\"undefined\"==typeof window?\"sre-node\":\"sre_browser\")},TT=[\"[tex]/action\",\"[tex]/ams\",\"[tex]/amscd\",\"[tex]/bbox\",\"[tex]/boldsymbol\",\"[tex]/braket\",\"[tex]/bussproofs\",\"[tex]/cancel\",\"[tex]/color\",\"[tex]/configmacros\",\"[tex]/enclose\",\"[tex]/extpfeil\",\"[tex]/html\",\"[tex]/mhchem\",\"[tex]/newcommand\",\"[tex]/noerrors\",\"[tex]/noundefined\",\"[tex]/physics\",\"[tex]/require\",\"[tex]/tagformat\",\"[tex]/textmacros\",\"[tex]/unicode\",\"[tex]/verb\"],nT={startup:[\"loader\"],\"input/tex\":[\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\",\"[tex]/noundefined\",\"[tex]/require\",\"[tex]/autoload\",\"[tex]/configmacros\"],\"input/tex-full\":[\"input/tex-base\",\"[tex]/all-packages\"].concat(TT),\"[tex]/all-packages\":TT};function oT(t,e){(null==e||e>t.length)&&(e=t.length);for(var Q=0,r=new Array(e);Q<e;Q++)r[Q]=t[Q];return r}Object(r.combineDefaults)(MathJax.config.loader,\"dependencies\",{\"a11y/semantic-enrich\":[\"input/mml\",\"[sre]\"],\"a11y/complexity\":[\"a11y/semantic-enrich\"],\"a11y/explorer\":[\"a11y/semantic-enrich\",\"ui/menu\"],\"[tex]/all-packages\":[\"input/tex-base\"],\"[tex]/action\":[\"input/tex-base\",\"[tex]/newcommand\"],\"[tex]/autoload\":[\"input/tex-base\",\"[tex]/require\"],\"[tex]/ams\":[\"input/tex-base\"],\"[tex]/amscd\":[\"input/tex-base\"],\"[tex]/bbox\":[\"input/tex-base\",\"[tex]/ams\",\"[tex]/newcommand\"],\"[tex]/boldsymbol\":[\"input/tex-base\"],\"[tex]/braket\":[\"input/tex-base\"],\"[tex]/bussproofs\":[\"input/tex-base\"],\"[tex]/cancel\":[\"input/tex-base\",\"[tex]/enclose\"],\"[tex]/color\":[\"input/tex-base\"],\"[tex]/colorv2\":[\"input/tex-base\"],\"[tex]/configmacros\":[\"input/tex-base\",\"[tex]/newcommand\"],\"[tex]/enclose\":[\"input/tex-base\"],\"[tex]/extpfeil\":[\"input/tex-base\",\"[tex]/newcommand\",\"[tex]/ams\"],\"[tex]/html\":[\"input/tex-base\"],\"[tex]/mhchem\":[\"input/tex-base\",\"[tex]/ams\"],\"[tex]/newcommand\":[\"input/tex-base\"],\"[tex]/noerrors\":[\"input/tex-base\"],\"[tex]/noundefined\":[\"input/tex-base\"],\"[tex]/physics\":[\"input/tex-base\"],\"[tex]/require\":[\"input/tex-base\"],\"[tex]/tagformat\":[\"input/tex-base\"],\"[tex]/textmacros\":[\"input/tex-base\"],\"[tex]/unicode\":[\"input/tex-base\"],\"[tex]/verb\":[\"input/tex-base\"]}),Object(r.combineDefaults)(MathJax.config.loader,\"paths\",rT),Object(r.combineDefaults)(MathJax.config.loader,\"provides\",nT),Object(r.combineDefaults)(MathJax.config.loader,\"source\",{\"[tex]/amsCd\":\"[tex]/amscd\",\"[tex]/colorV2\":\"[tex]/colorv2\",\"[tex]/configMacros\":\"[tex]/configmacros\",\"[tex]/tagFormat\":\"[tex]/tagformat\"}),T.Loader.preLoad(\"loader\"),T.Loader.load.apply(T.Loader,function(t){return function(t){if(Array.isArray(t))return oT(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return oT(t,e);var Q=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===Q&&t.constructor&&(Q=t.constructor.name);if(\"Map\"===Q||\"Set\"===Q)return Array.from(t);if(\"Arguments\"===Q||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Q))return oT(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}(T.CONFIG.load)).then((function(){return T.CONFIG.ready()})).catch((function(t){return T.CONFIG.failed(t)}))}]);"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/method.d.ts",
    "content": "import * as adapterRender from \"./ts/markdown/adapterRender\";\ndeclare class Vditor {\n    /** 点击图片放大 */\n    static adapterRender: typeof adapterRender;\n    /** 点击图片放大 */\n    static previewImage: (oldImgElement: HTMLImageElement, lang?: keyof II18n, theme?: string) => void;\n    /** 为 element 中的代码块添加复制按钮 */\n    static codeRender: (element: HTMLElement, option?: IHljs) => void;\n    /** 对 graphviz 进行渲染 */\n    static graphvizRender: (element: HTMLElement, cdn?: string) => void;\n    /** 为 element 中的代码块进行高亮渲染 */\n    static highlightRender: (hljsOption?: IHljs, element?: HTMLElement | Document, cdn?: string) => void;\n    /** 对数学公式进行渲染 */\n    static mathRender: (element: HTMLElement, options?: {\n        cdn?: string;\n        math?: IMath;\n    }) => void;\n    /** 流程图/时序图/甘特图渲染 */\n    static mermaidRender: (element: HTMLElement, cdn: string, theme: string) => void;\n    /** 支持markdown的思维导图 */\n    static markmapRender: (element: HTMLElement, cdn: string, theme: string) => void;\n    /** flowchart.js 渲染 */\n    static flowchartRender: (element: HTMLElement, cdn?: string) => void;\n    /** 图表渲染 */\n    static chartRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** 五线谱渲染 */\n    static abcRender: (element?: HTMLElement | Document, cdn?: string) => void;\n    /** 脑图渲染 */\n    static mindmapRender: (element: HTMLElement | Document, cdn: string, theme: string) => void;\n    /** plantuml渲染 */\n    static plantumlRender: (element?: HTMLElement | Document, cdn?: string) => void;\n    /** 大纲渲染 */\n    static outlineRender: (contentElement: HTMLElement, targetElement: Element, vditor?: IVditor) => string;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    static mediaRender: (element: HTMLElement) => void;\n    /** 对选中的文字进行阅读 */\n    static speechRender: (element: HTMLElement, lang?: keyof II18n) => void;\n    /** 对图片进行懒加载 */\n    static lazyLoadImageRender: (element?: HTMLElement | Document) => boolean;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    static md2html: (mdText: string, options?: IPreviewOptions) => Promise<string>;\n    /** 页面 Markdown 文章渲染 */\n    static preview: (previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) => Promise<void>;\n    /** 设置代码主题 */\n    static setCodeTheme: (codeTheme: string, cdn?: string) => void;\n    /** 设置内容主题 */\n    static setContentTheme: (contentTheme: string, path: string) => void;\n}\nexport default Vditor;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/method.js",
    "content": "/*!\n * Vditor v3.10.5 - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3log.org\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vditor\"] = factory();\n\telse\n\t\troot[\"Vditor\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 793:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"g\": () => (/* binding */ Constants)\n/* harmony export */ });\n/* unused harmony export VDITOR_VERSION */\nvar _VDITOR_VERSION = (/* unused pure expression or super */ null && (\"3.10.5\"));\n\nvar Constants = /** @class */ (function () {\n    function Constants() {\n    }\n    Constants.ZWSP = \"\\u200b\";\n    Constants.DROP_EDITOR = \"application/editor\";\n    Constants.MOBILE_WIDTH = 520;\n    Constants.CLASS_MENU_DISABLED = \"vditor-menu--disabled\";\n    Constants.EDIT_TOOLBARS = [\"emoji\", \"headings\", \"bold\", \"italic\", \"strike\", \"link\", \"list\",\n        \"ordered-list\", \"outdent\", \"indent\", \"check\", \"line\", \"quote\", \"code\", \"inline-code\", \"insert-after\",\n        \"insert-before\", \"upload\", \"record\", \"table\"];\n    Constants.CODE_THEME = [\"abap\", \"algol\", \"algol_nu\", \"arduino\", \"autumn\", \"borland\", \"bw\",\n        \"colorful\", \"dracula\", \"emacs\", \"friendly\", \"fruity\", \"github\", \"igor\", \"lovelace\", \"manni\", \"monokai\",\n        \"monokailight\", \"murphy\", \"native\", \"paraiso-dark\", \"paraiso-light\", \"pastie\", \"perldoc\", \"pygments\",\n        \"rainbow_dash\", \"rrt\", \"solarized-dark\", \"solarized-dark256\", \"solarized-light\", \"swapoff\", \"tango\", \"trac\",\n        \"vim\", \"vs\", \"xcode\", \"ant-design\"];\n    Constants.CODE_LANGUAGES = [\"mermaid\", \"echarts\", \"mindmap\", \"plantuml\", \"abc\", \"graphviz\", \"flowchart\", \"apache\",\n        \"js\", \"ts\", \"html\", \"markmap\",\n        // common\n        \"properties\", \"apache\", \"bash\", \"c\", \"csharp\", \"cpp\", \"css\", \"coffeescript\", \"diff\", \"go\", \"xml\", \"http\",\n        \"json\", \"java\", \"javascript\", \"kotlin\", \"less\", \"lua\", \"makefile\", \"markdown\", \"nginx\", \"objectivec\", \"php\",\n        \"php-template\", \"perl\", \"plaintext\", \"python\", \"python-repl\", \"r\", \"ruby\", \"rust\", \"scss\", \"sql\", \"shell\",\n        \"swift\", \"ini\", \"typescript\", \"vbnet\", \"yaml\",\n        \"ada\", \"clojure\", \"dart\", \"erb\", \"fortran\", \"gradle\", \"haskell\", \"julia\", \"julia-repl\", \"lisp\", \"matlab\",\n        \"pgsql\", \"powershell\", \"sql_more\", \"stata\", \"cmake\", \"mathematica\",\n        // ext\n        \"solidity\", \"yul\"\n    ];\n    Constants.CDN = \"https://unpkg.com/vditor@\".concat(\"3.10.5\");\n    Constants.MARKDOWN_OPTIONS = {\n        autoSpace: false,\n        gfmAutoLink: true,\n        codeBlockPreview: true,\n        fixTermTypo: false,\n        footnotes: true,\n        linkBase: \"\",\n        linkPrefix: \"\",\n        listStyle: false,\n        mark: false,\n        mathBlockPreview: true,\n        paragraphBeginningSpace: false,\n        sanitize: true,\n        toc: false,\n    };\n    Constants.HLJS_OPTIONS = {\n        enable: true,\n        lineNumber: false,\n        defaultLang: \"\",\n        style: \"github\",\n    };\n    Constants.MATH_OPTIONS = {\n        engine: \"KaTeX\",\n        inlineDigit: false,\n        macros: {},\n    };\n    Constants.THEME_OPTIONS = {\n        current: \"light\",\n        list: {\n            \"ant-design\": \"Ant Design\",\n            \"dark\": \"Dark\",\n            \"light\": \"Light\",\n            \"wechat\": \"WeChat\",\n        },\n        path: \"\".concat(Constants.CDN, \"/dist/css/content-theme\"),\n    };\n    return Constants;\n}());\n\n\n\n/***/ }),\n\n/***/ 386:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Q\": () => (/* binding */ abcRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar abcRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element);\n    if (abcElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/abcjs/abcjs_basic.min.js\"), \"vditorAbcjsScript\").then(function () {\n            abcElements.forEach(function (item) {\n                if (item.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    item.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                if (item.getAttribute(\"data-processed\") === \"true\") {\n                    return;\n                }\n                ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim());\n                item.style.overflowX = \"auto\";\n                item.setAttribute(\"data-processed\", \"true\");\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 781:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"abcRenderAdapter\": () => (/* binding */ abcRenderAdapter),\n/* harmony export */   \"chartRenderAdapter\": () => (/* binding */ chartRenderAdapter),\n/* harmony export */   \"flowchartRenderAdapter\": () => (/* binding */ flowchartRenderAdapter),\n/* harmony export */   \"graphvizRenderAdapter\": () => (/* binding */ graphvizRenderAdapter),\n/* harmony export */   \"markmapRenderAdapter\": () => (/* binding */ markmapRenderAdapter),\n/* harmony export */   \"mathRenderAdapter\": () => (/* binding */ mathRenderAdapter),\n/* harmony export */   \"mermaidRenderAdapter\": () => (/* binding */ mermaidRenderAdapter),\n/* harmony export */   \"mindmapRenderAdapter\": () => (/* binding */ mindmapRenderAdapter),\n/* harmony export */   \"plantumlRenderAdapter\": () => (/* binding */ plantumlRenderAdapter)\n/* harmony export */ });\nvar mathRenderAdapter = {\n    getCode: function (mathElement) { return mathElement.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-math\"); },\n};\nvar mermaidRenderAdapter = {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-mermaid\"); },\n};\nvar markmapRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (element) { return element.querySelectorAll(\".language-markmap\"); },\n};\nvar mindmapRenderAdapter = {\n    getCode: function (el) { return el.getAttribute(\"data-code\"); },\n    getElements: function (el) { return el.querySelectorAll(\".language-mindmap\"); },\n};\nvar chartRenderAdapter = {\n    getCode: function (el) { return el.innerText; },\n    getElements: function (el) { return el.querySelectorAll(\".language-echarts\"); },\n};\nvar abcRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-abc\"); },\n};\nvar graphvizRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-graphviz\"); },\n};\nvar flowchartRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-flowchart\"); },\n};\nvar plantumlRenderAdapter = {\n    getCode: function (el) { return el.textContent; },\n    getElements: function (el) { return el.querySelectorAll(\".language-plantuml\"); },\n};\n\n\n/***/ }),\n\n/***/ 379:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"p\": () => (/* binding */ chartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar chartRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element);\n    if (echartsElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js\"), \"vditorEchartsScript\").then(function () {\n            echartsElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim();\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    var option = JSON.parse(text);\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption(option);\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"echarts render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 895:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"O\": () => (/* binding */ codeRender)\n/* harmony export */ });\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(528);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n\n\nvar codeRender = function (element, option) {\n    Array.from(element.querySelectorAll(\"pre > code\")).filter(function (e, index) {\n        if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n            e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n            return false;\n        }\n        if (e.classList.contains(\"language-mermaid\") || e.classList.contains(\"language-flowchart\") ||\n            e.classList.contains(\"language-echarts\") || e.classList.contains(\"language-mindmap\") ||\n            e.classList.contains(\"language-plantuml\") || e.classList.contains(\"language-markmap\") ||\n            e.classList.contains(\"language-abc\") || e.classList.contains(\"language-graphviz\") ||\n            e.classList.contains(\"language-math\")) {\n            return false;\n        }\n        if (e.style.maxHeight.indexOf(\"px\") > -1) {\n            return false;\n        }\n        // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67\n        if (element.classList.contains(\"vditor-preview\") && index > 5) {\n            return false;\n        }\n        return true;\n    }).forEach(function (e) {\n        var _a, _b, _c;\n        var codeText = e.innerText;\n        if (e.classList.contains(\"highlight-chroma\")) {\n            var codeElement = e.cloneNode(true);\n            codeElement.querySelectorAll(\".highlight-ln\").forEach(function (item) {\n                item.remove();\n            });\n            codeText = codeElement.innerText;\n        }\n        else if (codeText.endsWith(\"\\n\")) {\n            codeText = codeText.substr(0, codeText.length - 1);\n        }\n        var iconHTML = '<svg><use xlink:href=\"#vditor-icon-copy\"></use></svg>';\n        if (!document.getElementById(\"vditorIconScript\")) {\n            iconHTML = '<svg viewBox=\"0 0 32 32\"><path d=\"M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z\"></path></svg>';\n        }\n        var divElement = document.createElement(\"div\");\n        divElement.className = \"vditor-copy\";\n        divElement.innerHTML = \"<span aria-label=\\\"\".concat(((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copy) || \"复制\", \"\\\"\\nonmouseover=\\\"this.setAttribute('aria-label', '\").concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.copy) || \"复制\", \"')\\\"\\nclass=\\\"vditor-tooltipped vditor-tooltipped__w\\\"\\nonclick=\\\"this.previousElementSibling.select();document.execCommand('copy');this.setAttribute('aria-label', '\").concat(((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copied) || \"已复制\", \"');this.previousElementSibling.blur()\\\">\").concat(iconHTML, \"</span>\");\n        var textarea = document.createElement(\"textarea\");\n        textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);\n        divElement.insertAdjacentElement(\"afterbegin\", textarea);\n        if (option && option.renderMenu) {\n            option.renderMenu(e, divElement);\n        }\n        e.before(divElement);\n        e.style.maxHeight = (window.outerHeight - 40) + \"px\";\n        // https://github.com/Vanessa219/vditor/issues/1356\n        e.insertAdjacentHTML(\"afterend\", \"<span style=\\\"position: absolute\\\">\".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, \"</span>\"));\n    });\n};\n\n\n/***/ }),\n\n/***/ 169:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ flowchartRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar flowchartRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element);\n    if (flowchartElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/flowchart.js/flowchart.min.js\"), \"vditorFlowchartScript\").then(function () {\n        flowchartElements.forEach(function (item) {\n            if (item.getAttribute(\"data-processed\") === \"true\") {\n                return;\n            }\n            var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item));\n            item.innerHTML = \"\";\n            flowchartObj.drawSVG(item);\n            item.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 572:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"v\": () => (/* binding */ graphvizRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar graphvizRender = function (element, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element);\n    if (graphvizElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/graphviz/viz.js\"), \"vditorGraphVizScript\").then(function () {\n        graphvizElements.forEach(function (e) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e);\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            if (e.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            try {\n                var blob = new Blob([\"importScripts('\".concat(document.getElementById(\"vditorGraphVizScript\").src.replace(\"viz.js\", \"full.render.js\"), \"');\")], { type: \"application/javascript\" });\n                var url = window.URL || window.webkitURL;\n                var blobUrl = url.createObjectURL(blob);\n                var worker = new Worker(blobUrl);\n                new Viz({ worker: worker })\n                    .renderSVGElement(code).then(function (result) {\n                    e.innerHTML = result.outerHTML;\n                }).catch(function (error) {\n                    e.innerHTML = \"graphviz render error: <br>\".concat(error);\n                    e.className = \"vditor-reset--error\";\n                });\n            }\n            catch (e) {\n                console.error(\"graphviz error\", e);\n            }\n            e.setAttribute(\"data-processed\", \"true\");\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 702:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"s\": () => (/* binding */ highlightRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(296);\n\n\n\nvar highlightRender = function (hljsOption, element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var style = hljsOption.style;\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) {\n        style = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".css\");\n    if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n    }\n    (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(\"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(style, \".css\"), \"vditorHljsStyle\");\n    if (hljsOption.enable === false) {\n        return;\n    }\n    var codes = element.querySelectorAll(\"pre > code\");\n    if (codes.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/highlight.pack.js\"), \"vditorHljsScript\").then(function () {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/solidity.min.js\"), \"vditorHljsSolidityScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/highlight.js/yul.min.js\"), \"vditorHljsYulScript\").then(function () {\n                element.querySelectorAll(\"pre > code\").forEach(function (block) {\n                    // ir & wysiwyg 区域不渲染\n                    if (block.parentElement.classList.contains(\"vditor-ir__marker--pre\") ||\n                        block.parentElement.classList.contains(\"vditor-wysiwyg__pre\")) {\n                        return;\n                    }\n                    if (block.classList.contains(\"language-mermaid\") || block.classList.contains(\"language-flowchart\") ||\n                        block.classList.contains(\"language-echarts\") || block.classList.contains(\"language-mindmap\") ||\n                        block.classList.contains(\"language-plantuml\") ||\n                        block.classList.contains(\"language-abc\") || block.classList.contains(\"language-graphviz\") ||\n                        block.classList.contains(\"language-math\")) {\n                        return;\n                    }\n                    if (hljsOption.defaultLang !== \"\" && block.className.indexOf(\"language-\") === -1) {\n                        block.classList.add(\"language-\" + hljsOption.defaultLang);\n                    }\n                    hljs.highlightElement(block);\n                    if (!hljsOption.lineNumber) {\n                        return;\n                    }\n                    block.classList.add(\"vditor-linenumber\");\n                    var linenNumberTemp = block.querySelector(\".vditor-linenumber__temp\");\n                    if (!linenNumberTemp) {\n                        linenNumberTemp = document.createElement(\"div\");\n                        linenNumberTemp.className = \"vditor-linenumber__temp\";\n                        block.insertAdjacentElement(\"beforeend\", linenNumberTemp);\n                    }\n                    var whiteSpace = getComputedStyle(block).whiteSpace;\n                    var isSoftWrap = false;\n                    if (whiteSpace === \"pre-wrap\" || whiteSpace === \"pre-line\") {\n                        isSoftWrap = true;\n                    }\n                    var lineNumberHTML = \"\";\n                    var lineList = block.textContent.split(/\\r\\n|\\r|\\n/g);\n                    lineList.pop();\n                    lineList.map(function (line) {\n                        var lineHeight = \"\";\n                        if (isSoftWrap) {\n                            linenNumberTemp.textContent = line || \"\\n\";\n                            lineHeight = \" style=\\\"height:\".concat(linenNumberTemp.getBoundingClientRect().height, \"px\\\"\");\n                        }\n                        lineNumberHTML += \"<span\".concat(lineHeight, \"></span>\");\n                    });\n                    linenNumberTemp.style.display = \"none\";\n                    lineNumberHTML = \"<span class=\\\"vditor-linenumber__rows\\\">\".concat(lineNumberHTML, \"</span>\");\n                    block.insertAdjacentHTML(\"beforeend\", lineNumberHTML);\n                });\n            });\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 593:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"K\": () => (/* binding */ markmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar enabled = {};\nvar transform = function (transformer, content) {\n    var result = transformer.transform(content);\n    var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; });\n    keys.forEach(function (key) {\n        enabled[key] = true;\n    });\n    var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts;\n    var markmap = window.markmap;\n    if (styles)\n        markmap.loadCSS(styles);\n    if (scripts)\n        markmap.loadJS(scripts);\n    return result;\n};\nvar init = function (el, code) {\n    var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS;\n    var transformer = new Transformer();\n    el.innerHTML = '<svg style=\"width:100%\"></svg>';\n    var svg = el.firstChild;\n    var mm = Markmap.create(svg, null);\n    var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter;\n    var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap;\n    var frontmatterOptions = deriveOptions(markmapOptions);\n    mm.setData(root, frontmatterOptions);\n    mm.fit();\n};\nvar markmapRender = function (element, cdn, theme) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element);\n    if (markmapElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/markmap/markmap.min.js\"), \"vditorMermaidScript\").then(function () {\n        markmapElements.forEach(function (item) {\n            var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item);\n            if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                return;\n            }\n            var render = document.createElement(\"div\");\n            render.className = \"language-markmap\";\n            item.parentNode.appendChild(render);\n            init(render, code);\n            if (item.parentNode.childNodes[0].nodeName == \"CODE\") {\n                item.parentNode.removeChild(item.parentNode.childNodes[0]);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 982:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"H\": () => (/* binding */ mathRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(998);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(296);\n/* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(528);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\n\n\nvar mathRender = function (element, options) {\n    var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element);\n    if (mathElements.length === 0) {\n        return;\n    }\n    var defaultOptions = {\n        cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN,\n        math: {\n            engine: \"KaTeX\",\n            inlineDigit: false,\n            macros: {},\n        },\n    };\n    if (options && options.math) {\n        options.math =\n            Object.assign({}, defaultOptions.math, options.math);\n    }\n    options = Object.assign({}, defaultOptions, options);\n    if (options.math.engine === \"KaTeX\") {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_2__/* .addStyle */ .c)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.css?v=0.16.9\"), \"vditorKatexStyle\");\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/katex.min.js?v=0.16.9\"), \"vditorKatexScript\").then(function () {\n            (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)(\"\".concat(options.cdn, \"/dist/js/katex/mhchem.min.js?v=0.16.9\"), \"vditorKatexChemScript\").then(function () {\n                mathElements.forEach(function (mathElement) {\n                    if (mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                        mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                        return;\n                    }\n                    if (mathElement.getAttribute(\"data-math\")) {\n                        return;\n                    }\n                    var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement));\n                    mathElement.setAttribute(\"data-math\", math);\n                    try {\n                        mathElement.innerHTML = katex.renderToString(math, {\n                            displayMode: mathElement.tagName === \"DIV\",\n                            output: \"html\",\n                            macros: options.math.macros,\n                        });\n                    }\n                    catch (e) {\n                        mathElement.innerHTML = e.message;\n                        mathElement.className = \"language-math vditor-reset--error\";\n                    }\n                    mathElement.addEventListener(\"copy\", function (event) {\n                        event.stopPropagation();\n                        event.preventDefault();\n                        var vditorMathElement = event.currentTarget.closest(\".language-math\");\n                        event.clipboardData.setData(\"text/html\", vditorMathElement.innerHTML);\n                        event.clipboardData.setData(\"text/plain\", vditorMathElement.getAttribute(\"data-math\"));\n                    });\n                });\n            });\n        });\n    }\n    else if (options.math.engine === \"MathJax\") {\n        var chainAsync_1 = function (fns) {\n            if (fns.length === 0) {\n                return;\n            }\n            var curr = 0;\n            var last = fns[fns.length - 1];\n            var next = function () {\n                var fn = fns[curr++];\n                fn === last ? fn() : fn(next);\n            };\n            next();\n        };\n        if (!window.MathJax) {\n            window.MathJax = {\n                loader: {\n                    paths: { mathjax: \"\".concat(options.cdn, \"/dist/js/mathjax\") },\n                },\n                startup: {\n                    typeset: false,\n                },\n                tex: {\n                    macros: options.math.macros,\n                },\n            };\n            // https://github.com/Vanessa219/vditor/issues/1453\n            Object.assign(window.MathJax, options.math.mathJaxOptions);\n        }\n        // 循环加载会抛异常\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScriptSync */ .J)(\"\".concat(options.cdn, \"/dist/js/mathjax/tex-svg-full.js\"), \"protyleMathJaxScript\");\n        var renderMath_1 = function (mathElement, next) {\n            var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim();\n            var mathOptions = window.MathJax.getMetricsFor(mathElement);\n            mathOptions.display = mathElement.tagName === \"DIV\";\n            window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) {\n                mathElement.innerHTML = \"\";\n                mathElement.setAttribute(\"data-math\", math);\n                mathElement.append(node);\n                window.MathJax.startup.document.clear();\n                window.MathJax.startup.document.updateDocument();\n                var errorTextElement = node.querySelector('[data-mml-node=\"merror\"]');\n                if (errorTextElement && errorTextElement.textContent.trim() !== \"\") {\n                    mathElement.innerHTML = errorTextElement.textContent.trim();\n                    mathElement.className = \"vditor-reset--error\";\n                }\n                if (next) {\n                    next();\n                }\n            });\n        };\n        window.MathJax.startup.promise.then(function () {\n            var chains = [];\n            var _loop_1 = function (i) {\n                var mathElement = mathElements[i];\n                if (!mathElement.parentElement.classList.contains(\"vditor-wysiwyg__pre\") &&\n                    !mathElement.parentElement.classList.contains(\"vditor-ir__marker--pre\") &&\n                    !mathElement.getAttribute(\"data-math\") && (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim()) {\n                    chains.push(function (next) {\n                        if (i === mathElements.length - 1) {\n                            renderMath_1(mathElement);\n                        }\n                        else {\n                            renderMath_1(mathElement, next);\n                        }\n                    });\n                }\n            };\n            for (var i = 0; i < mathElements.length; i++) {\n                _loop_1(i);\n            }\n            chainAsync_1(chains);\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 431:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ mediaRender)\n/* harmony export */ });\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(446);\n\nvar videoRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<video controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></video>\"));\n    element.remove();\n};\nvar audioRender = function (element, url) {\n    element.insertAdjacentHTML(\"afterend\", \"<audio controls=\\\"controls\\\" src=\\\"\".concat(url, \"\\\"></audio>\"));\n    element.remove();\n};\nvar iframeRender = function (element, url) {\n    var youtubeMatch = url.match(/\\/\\/(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?/);\n    var youkuMatch = url.match(/\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/);\n    var qqMatch = url.match(/\\/\\/v\\.qq\\.com\\/x\\/cover\\/.*\\/([^\\/]+)\\.html\\??.*/);\n    var coubMatch = url.match(/(?:www\\.|\\/\\/)coub\\.com\\/view\\/(\\w+)/);\n    var facebookMatch = url.match(/(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/);\n    var dailymotionMatch = url.match(/.+dailymotion.com\\/(video|hub)\\/(\\w+)\\?/);\n    var bilibiliMatch = url.match(/(?:www\\.|\\/\\/)bilibili\\.com\\/video\\/(\\w+)/);\n    var tedMatch = url.match(/(?:www\\.|\\/\\/)ted\\.com\\/talks\\/(\\w+)/);\n    if (youtubeMatch && youtubeMatch[1].length === 11) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//www.youtube.com/embed/\".concat(youtubeMatch[1] +\n            (youtubeMatch[2] ? \"?start=\" + youtubeMatch[2] : \"\"), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (youkuMatch && youkuMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//player.youku.com/embed/\".concat(youkuMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (qqMatch && qqMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"https://v.qq.com/txp/iframe/player.html?vid=\".concat(qqMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (coubMatch && coubMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"//coub.com/embed/\".concat(coubMatch[1], \"?muted=false&autostart=false&originalSize=true&startWithHD=true\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (facebookMatch && facebookMatch[0]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.facebook.com/plugins/video.php?href=\".concat(encodeURIComponent(facebookMatch[0]), \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (dailymotionMatch && dailymotionMatch[2]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\"\\n src=\\\"https://www.dailymotion.com/embed/video/\".concat(dailymotionMatch[2], \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (url.indexOf(\"bilibili.com\") > -1 && (url.indexOf(\"bvid=\") > -1 || (bilibiliMatch && bilibiliMatch[1]))) {\n        var params_1 = {\n            bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .o)(\"bvid\", url) || (bilibiliMatch && bilibiliMatch[1]),\n            page: \"1\",\n            high_quality: \"1\",\n            as_wide: \"1\",\n            allowfullscreen: \"true\",\n            autoplay: \"0\"\n        };\n        new URL(url.startsWith(\"http\") ? url : \"https:\" + url).search.split(\"&\").forEach(function (item, index) {\n            if (!item) {\n                return;\n            }\n            if (index === 0) {\n                item = item.substr(1);\n            }\n            var keyValue = item.split(\"=\");\n            params_1[keyValue[0]] = keyValue[1];\n        });\n        var src_1 = \"https://player.bilibili.com/player.html?\";\n        var keys_1 = Object.keys(params_1);\n        keys_1.forEach(function (key, index) {\n            src_1 += \"\".concat(key, \"=\").concat(params_1[key]);\n            if (index < keys_1.length - 1) {\n                src_1 += \"&\";\n            }\n        });\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"\".concat(src_1, \"\\\"></iframe>\"));\n        element.remove();\n    }\n    else if (tedMatch && tedMatch[1]) {\n        element.insertAdjacentHTML(\"afterend\", \"<iframe class=\\\"iframe__video\\\" src=\\\"//embed.ted.com/talks/\".concat(tedMatch[1], \"\\\"></iframe>\"));\n        element.remove();\n    }\n};\nvar mediaRender = function (element) {\n    if (!element) {\n        return;\n    }\n    element.querySelectorAll(\"a\").forEach(function (aElement) {\n        var url = aElement.getAttribute(\"href\");\n        if (!url) {\n            return;\n        }\n        if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) {\n            videoRender(aElement, url);\n        }\n        else if (url.match(/^.+.(mp3|wav|flac)$/)) {\n            audioRender(aElement, url);\n        }\n        else {\n            iframeRender(aElement, url);\n        }\n    });\n};\n\n\n/***/ }),\n\n/***/ 570:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"i\": () => (/* binding */ mermaidRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n/* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(446);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\nvar mermaidRender = function (element, cdn, theme) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mermaidElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getElements(element);\n    if (mermaidElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/mermaid/mermaid.min.js\"), \"vditorMermaidScript\").then(function () {\n        var config = {\n            securityLevel: \"loose\",\n            altFontFamily: \"sans-serif\",\n            fontFamily: \"sans-serif\",\n            startOnLoad: false,\n            flowchart: {\n                htmlLabels: true,\n                useMaxWidth: !0\n            },\n            sequence: {\n                useMaxWidth: true,\n                diagramMarginX: 8,\n                diagramMarginY: 8,\n                boxMargin: 8,\n                showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers\n            },\n            gantt: {\n                leftPadding: 75,\n                rightPadding: 20\n            }\n        };\n        if (theme === \"dark\") {\n            config.theme = \"dark\";\n        }\n        mermaid.initialize(config);\n        mermaidElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {\n            var code, id, mermaidData, e_1, errorElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getCode(item);\n                        if (item.getAttribute(\"data-processed\") === \"true\" || code.trim() === \"\") {\n                            return [2 /*return*/];\n                        }\n                        id = \"mermaid\" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .W)();\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, mermaid.render(id, item.textContent)];\n                    case 2:\n                        mermaidData = _a.sent();\n                        item.innerHTML = mermaidData.svg;\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        errorElement = document.querySelector(\"#\" + id);\n                        item.innerHTML = \"\".concat(errorElement.outerHTML, \"<br>\\n<div style=\\\"text-align: left\\\"><small>\").concat(e_1.message.replace(/\\n/, \"<br>\"), \"</small></div>\");\n                        errorElement.parentElement.remove();\n                        return [3 /*break*/, 4];\n                    case 4:\n                        item.setAttribute(\"data-processed\", \"true\");\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n    });\n};\n\n\n/***/ }),\n\n/***/ 558:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"P\": () => (/* binding */ mindmapRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar mindmapRender = function (element, cdn, theme) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var mindmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getElements(element);\n    if (mindmapElements.length > 0) {\n        (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/echarts/echarts.min.js\"), \"vditorEchartsScript\").then(function () {\n            mindmapElements.forEach(function (e) {\n                if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                    e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                    return;\n                }\n                var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getCode(e);\n                if (!text) {\n                    return;\n                }\n                try {\n                    if (e.getAttribute(\"data-processed\") === \"true\") {\n                        return;\n                    }\n                    echarts.init(e, theme === \"dark\" ? \"dark\" : undefined).setOption({\n                        series: [\n                            {\n                                data: [JSON.parse(decodeURIComponent(text))],\n                                initialTreeDepth: -1,\n                                itemStyle: {\n                                    borderWidth: 0,\n                                    color: \"#4285f4\",\n                                },\n                                label: {\n                                    backgroundColor: \"#f6f8fa\",\n                                    borderColor: \"#d1d5da\",\n                                    borderRadius: 5,\n                                    borderWidth: 0.5,\n                                    color: \"#586069\",\n                                    lineHeight: 20,\n                                    offset: [-5, 0],\n                                    padding: [0, 5],\n                                    position: \"insideRight\",\n                                },\n                                lineStyle: {\n                                    color: \"#d1d5da\",\n                                    width: 1,\n                                },\n                                roam: true,\n                                symbol: function (value, params) {\n                                    var _a;\n                                    if ((_a = params === null || params === void 0 ? void 0 : params.data) === null || _a === void 0 ? void 0 : _a.children) {\n                                        return \"circle\";\n                                    }\n                                    else {\n                                        return \"path://\";\n                                    }\n                                },\n                                type: \"tree\",\n                            },\n                        ],\n                        tooltip: {\n                            trigger: \"item\",\n                            triggerOn: \"mousemove\",\n                        },\n                    });\n                    e.setAttribute(\"data-processed\", \"true\");\n                }\n                catch (error) {\n                    e.className = \"vditor-reset--error\";\n                    e.innerHTML = \"mindmap render error: <br>\".concat(error);\n                }\n            });\n        });\n    }\n};\n\n\n/***/ }),\n\n/***/ 182:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"k\": () => (/* binding */ outlineRender)\n/* harmony export */ });\n/* harmony import */ var _util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(946);\n/* harmony import */ var _mathRender__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(982);\n\n\nvar outlineRender = function (contentElement, targetElement, vditor) {\n    var tocHTML = \"\";\n    var ids = [];\n    Array.from(contentElement.children).forEach(function (item, index) {\n        if ((0,_util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByHeadings */ .W)(item)) {\n            if (vditor) {\n                var lastIndex = item.id.lastIndexOf(\"_\");\n                item.id = item.id.substring(0, lastIndex === -1 ? undefined : lastIndex) + \"_\" + index;\n            }\n            ids.push(item.id);\n            tocHTML += item.outerHTML.replace(\"<wbr>\", \"\");\n        }\n    });\n    if (tocHTML === \"\") {\n        targetElement.innerHTML = \"\";\n        return \"\";\n    }\n    var tempElement = document.createElement(\"div\");\n    if (vditor) {\n        vditor.lute.SetToC(true);\n        if (vditor.currentMode === \"wysiwyg\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else if (vditor.currentMode === \"ir\" && !vditor.preview.element.contains(contentElement)) {\n            tempElement.innerHTML = vditor.lute.SpinVditorIRDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        else {\n            tempElement.innerHTML = vditor.lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n        }\n        vditor.lute.SetToC(vditor.options.preview.markdown.toc);\n    }\n    else {\n        targetElement.classList.add(\"vditor-outline\");\n        var lute = Lute.New();\n        lute.SetToC(true);\n        tempElement.innerHTML = lute.HTML2VditorDOM(\"<p>[ToC]</p>\" + tocHTML);\n    }\n    var headingsElement = tempElement.firstElementChild.querySelectorAll(\"li > span[data-target-id]\");\n    headingsElement.forEach(function (item, index) {\n        if (item.nextElementSibling && item.nextElementSibling.tagName === \"UL\") {\n            var iconHTML = \"<svg class='vditor-outline__action'><use xlink:href='#vditor-icon-down'></use></svg>\";\n            if (!document.getElementById(\"vditorIconScript\")) {\n                iconHTML = '<svg class=\"vditor-outline__action\" viewBox=\"0 0 32 32\"><path d=\"M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z\"></path></svg>';\n            }\n            item.innerHTML = \"\".concat(iconHTML, \"<span>\").concat(item.innerHTML, \"</span>\");\n        }\n        else {\n            item.innerHTML = \"<svg></svg><span>\".concat(item.innerHTML, \"</span>\");\n        }\n        item.setAttribute(\"data-target-id\", ids[index]);\n    });\n    tocHTML = tempElement.firstElementChild.innerHTML;\n    if (headingsElement.length === 0) {\n        targetElement.innerHTML = \"\";\n        return tocHTML;\n    }\n    targetElement.innerHTML = tocHTML;\n    if (vditor) {\n        (0,_mathRender__WEBPACK_IMPORTED_MODULE_0__/* .mathRender */ .H)(targetElement, {\n            cdn: vditor.options.cdn,\n            math: vditor.options.preview.math,\n        });\n    }\n    targetElement.firstElementChild.addEventListener(\"click\", function (event) {\n        var target = event.target;\n        while (target && !target.isEqualNode(targetElement)) {\n            if (target.classList.contains(\"vditor-outline__action\")) {\n                if (target.classList.contains(\"vditor-outline__action--close\")) {\n                    target.classList.remove(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:block\");\n                }\n                else {\n                    target.classList.add(\"vditor-outline__action--close\");\n                    target.parentElement.nextElementSibling.setAttribute(\"style\", \"display:none\");\n                }\n                event.preventDefault();\n                event.stopPropagation();\n                break;\n            }\n            else if (target.getAttribute(\"data-target-id\")) {\n                event.preventDefault();\n                event.stopPropagation();\n                var idElement = document.getElementById(target.getAttribute(\"data-target-id\"));\n                if (!idElement) {\n                    return;\n                }\n                if (vditor) {\n                    if (vditor.options.height === \"auto\") {\n                        var windowScrollY = idElement.offsetTop + vditor.element.offsetTop;\n                        if (!vditor.options.toolbarConfig.pin) {\n                            windowScrollY += vditor.toolbar.element.offsetHeight;\n                        }\n                        window.scrollTo(window.scrollX, windowScrollY);\n                    }\n                    else {\n                        if (vditor.element.offsetTop < window.scrollY) {\n                            window.scrollTo(window.scrollX, vditor.element.offsetTop);\n                        }\n                        if (vditor.preview.element.contains(contentElement)) {\n                            contentElement.parentElement.scrollTop = idElement.offsetTop;\n                        }\n                        else {\n                            contentElement.scrollTop = idElement.offsetTop;\n                        }\n                    }\n                }\n                else {\n                    window.scrollTo(window.scrollX, idElement.offsetTop);\n                }\n                break;\n            }\n            target = target.parentElement;\n        }\n    });\n    return tocHTML;\n};\n\n\n/***/ }),\n\n/***/ 931:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"B\": () => (/* binding */ plantumlRender)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(998);\n/* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(781);\n\n\n\nvar plantumlRender = function (element, cdn) {\n    if (element === void 0) { element = document; }\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    var plantumlElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getElements(element);\n    if (plantumlElements.length === 0) {\n        return;\n    }\n    (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(\"\".concat(cdn, \"/dist/js/plantuml/plantuml-encoder.min.js\"), \"vditorPlantumlScript\").then(function () {\n        plantumlElements.forEach(function (e) {\n            if (e.parentElement.classList.contains(\"vditor-wysiwyg__pre\") ||\n                e.parentElement.classList.contains(\"vditor-ir__marker--pre\")) {\n                return;\n            }\n            var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getCode(e).trim();\n            if (!text) {\n                return;\n            }\n            try {\n                e.innerHTML = \"<object type=\\\"image/svg+xml\\\" data=\\\"https://www.plantuml.com/plantuml/svg/~1\".concat(plantumlEncoder.encode(text), \"\\\"/>\");\n            }\n            catch (error) {\n                e.className = \"vditor-reset--error\";\n                e.innerHTML = \"plantuml render error: <br>\".concat(error);\n            }\n        });\n    });\n};\n\n\n/***/ }),\n\n/***/ 65:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ setLute)\n/* harmony export */ });\nvar setLute = function (options) {\n    var lute = Lute.New();\n    lute.PutEmojis(options.emojis);\n    lute.SetEmojiSite(options.emojiSite);\n    lute.SetHeadingAnchor(options.headingAnchor);\n    lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);\n    lute.SetAutoSpace(options.autoSpace);\n    lute.SetToC(options.toc);\n    lute.SetFootnotes(options.footnotes);\n    lute.SetFixTermTypo(options.fixTermTypo);\n    lute.SetVditorCodeBlockPreview(options.codeBlockPreview);\n    lute.SetVditorMathBlockPreview(options.mathBlockPreview);\n    lute.SetSanitize(options.sanitize);\n    lute.SetChineseParagraphBeginningSpace(options.paragraphBeginningSpace);\n    lute.SetRenderListStyle(options.listStyle);\n    lute.SetLinkBase(options.linkBase);\n    lute.SetLinkPrefix(options.linkPrefix);\n    lute.SetMark(options.mark);\n    lute.SetGFMAutoLink(options.gfmAutoLink);\n    if (options.lazyLoadImage) {\n        lute.SetImageLazyLoading(options.lazyLoadImage);\n    }\n    return lute;\n};\n\n\n/***/ }),\n\n/***/ 971:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"E\": () => (/* binding */ previewImage)\n/* harmony export */ });\nvar previewImage = function (oldImgElement, lang, theme) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (theme === void 0) { theme = \"classic\"; }\n    var oldImgRect = oldImgElement.getBoundingClientRect();\n    var height = 36;\n    document.body.insertAdjacentHTML(\"beforeend\", \"<div class=\\\"vditor vditor-img\".concat(theme === \"dark\" ? \" vditor--dark\" : \"\", \"\\\">\\n    <div class=\\\"vditor-img__bar\\\">\\n      <span class=\\\"vditor-img__btn\\\" data-deg=\\\"0\\\">\\n        <svg><use xlink:href=\\\"#vditor-icon-redo\\\"></use></svg>\\n        \").concat(window.VditorI18n.spin, \"\\n      </span>\\n      <span class=\\\"vditor-img__btn\\\"  onclick=\\\"this.parentElement.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n        X &nbsp;\").concat(window.VditorI18n.close, \"\\n      </span>\\n    </div>\\n    <div class=\\\"vditor-img__img\\\" onclick=\\\"this.parentElement.outerHTML = '';document.body.style.overflow = ''\\\">\\n      <img style=\\\"width: \").concat(oldImgElement.width, \"px;height:\").concat(oldImgElement.height, \"px;transform: translate3d(\").concat(oldImgRect.left, \"px, \").concat(oldImgRect.top - height, \"px, 0)\\\" src=\\\"\").concat(oldImgElement.getAttribute(\"src\"), \"\\\">\\n    </div>\\n</div>\"));\n    document.body.style.overflow = \"hidden\";\n    // 图片从原始位置移动到预览正中间的动画效果\n    var imgElement = document.querySelector(\".vditor-img img\");\n    var translate3d = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2, \"px, 0)\");\n    setTimeout(function () {\n        imgElement.setAttribute(\"style\", \"transition: transform .3s ease-in-out;transform: \".concat(translate3d));\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n    // 旋转\n    var btnElement = document.querySelector(\".vditor-img__btn\");\n    btnElement.addEventListener(\"click\", function () {\n        var deg = parseInt(btnElement.getAttribute(\"data-deg\"), 10) + 90;\n        if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) {\n            imgElement.style.transform = \"translate3d(\".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, \"px, \").concat(oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2, \"px, 0) rotateZ(\").concat(deg, \"deg)\");\n        }\n        else {\n            imgElement.style.transform = \"\".concat(translate3d, \" rotateZ(\").concat(deg, \"deg)\");\n        }\n        btnElement.setAttribute(\"data-deg\", deg.toString());\n        setTimeout(function () {\n            imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);\n        }, 400);\n    });\n};\n\n\n/***/ }),\n\n/***/ 34:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Y\": () => (/* binding */ setCodeTheme)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(296);\n\n\nvar setCodeTheme = function (codeTheme, cdn) {\n    if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }\n    if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(codeTheme)) {\n        codeTheme = \"github\";\n    }\n    var vditorHljsStyle = document.getElementById(\"vditorHljsStyle\");\n    var href = \"\".concat(cdn, \"/dist/js/highlight.js/styles/\").concat(codeTheme, \".css\");\n    if (!vditorHljsStyle) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n    else if (vditorHljsStyle.getAttribute('href') !== href) {\n        vditorHljsStyle.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, \"vditorHljsStyle\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 652:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Z\": () => (/* binding */ setContentTheme)\n/* harmony export */ });\n/* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(296);\n\nvar setContentTheme = function (contentTheme, path) {\n    if (!contentTheme || !path) {\n        return;\n    }\n    var vditorContentTheme = document.getElementById(\"vditorContentTheme\");\n    var cssPath = \"\".concat(path, \"/\").concat(contentTheme, \".css\");\n    if (!vditorContentTheme) {\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n    else if (vditorContentTheme.getAttribute(\"href\") !== cssPath) {\n        vditorContentTheme.remove();\n        (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, \"vditorContentTheme\");\n    }\n};\n\n\n/***/ }),\n\n/***/ 998:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"G\": () => (/* binding */ addScript),\n/* harmony export */   \"J\": () => (/* binding */ addScriptSync)\n/* harmony export */ });\nvar addScriptSync = function (path, id) {\n    if (document.getElementById(id)) {\n        return false;\n    }\n    var xhrObj = new XMLHttpRequest();\n    xhrObj.open(\"GET\", path, false);\n    xhrObj.setRequestHeader(\"Accept\", \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01\");\n    xhrObj.send(\"\");\n    var scriptElement = document.createElement(\"script\");\n    scriptElement.type = \"text/javascript\";\n    scriptElement.text = xhrObj.responseText;\n    scriptElement.id = id;\n    document.head.appendChild(scriptElement);\n};\nvar addScript = function (path, id) {\n    return new Promise(function (resolve, reject) {\n        if (document.getElementById(id)) {\n            // 脚本加载后再次调用直接返回\n            resolve(true);\n            return false;\n        }\n        var scriptElement = document.createElement(\"script\");\n        scriptElement.src = path;\n        scriptElement.async = true;\n        // 循环调用时 Chrome 不会重复请求 js\n        document.head.appendChild(scriptElement);\n        scriptElement.onerror = function (event) {\n            reject(event);\n        };\n        scriptElement.onload = function () {\n            if (document.getElementById(id)) {\n                // 循环调用需清除 DOM 中的 script 标签\n                scriptElement.remove();\n                resolve(true);\n                return false;\n            }\n            scriptElement.id = id;\n            resolve(true);\n        };\n    });\n};\n\n\n/***/ }),\n\n/***/ 296:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"c\": () => (/* binding */ addStyle)\n/* harmony export */ });\nvar addStyle = function (url, id) {\n    if (!document.getElementById(id)) {\n        var styleElement = document.createElement(\"link\");\n        styleElement.id = id;\n        styleElement.rel = \"stylesheet\";\n        styleElement.type = \"text/css\";\n        styleElement.href = url;\n        document.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n    }\n};\n\n\n/***/ }),\n\n/***/ 528:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"X\": () => (/* binding */ code160to32)\n/* harmony export */ });\nvar code160to32 = function (text) {\n    // 非打断空格转换为空格\n    return text.replace(/\\u00a0/g, \" \");\n};\n\n\n/***/ }),\n\n/***/ 446:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"W\": () => (/* binding */ genUUID),\n/* harmony export */   \"o\": () => (/* binding */ getSearch)\n/* harmony export */ });\nvar genUUID = function () { return ([1e7].toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {\n    return (parseInt(c, 10) ^ (window.crypto.getRandomValues(new Uint32Array(1))[0] & (15 >> (parseInt(c, 10) / 4)))).toString(16);\n}); };\nvar getSearch = function (key, link) {\n    if (link === void 0) { link = window.location.search; }\n    var params = link.substring(link.indexOf(\"?\"));\n    var hashIndex = params.indexOf(\"#\");\n    // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams\n    var urlSearchParams = new URLSearchParams(params.substring(0, hashIndex >= 0 ? hashIndex : undefined));\n    return urlSearchParams.get(key);\n};\n\n\n/***/ }),\n\n/***/ 118:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fb\": () => (/* binding */ hasClosestByClassName),\n/* harmony export */   \"lG\": () => (/* binding */ hasClosestByMatchTag)\n/* harmony export */ });\n/* unused harmony exports hasTopClosestByClassName, hasTopClosestByAttribute, hasTopClosestByTag, getTopList, hasClosestByAttribute, hasClosestBlock, getLastNode */\n\nvar hasTopClosestByClassName = function (element, className) {\n    var closest = hasClosestByClassName(element, className);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByClassName(closest.parentElement, className);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByAttribute = function (element, attr, value) {\n    var closest = hasClosestByAttribute(element, attr, value);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByAttribute(closest.parentElement, attr, value);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar hasTopClosestByTag = function (element, nodeName) {\n    var closest = hasClosestByTag(element, nodeName);\n    var parentClosest = false;\n    var findTop = false;\n    while (closest && !closest.classList.contains(\"vditor-reset\") && !findTop) {\n        parentClosest = hasClosestByTag(closest.parentElement, nodeName);\n        if (parentClosest) {\n            closest = parentClosest;\n        }\n        else {\n            findTop = true;\n        }\n    }\n    return closest || false;\n};\nvar getTopList = function (element) {\n    var topUlElement = hasTopClosestByTag(element, \"UL\");\n    var topOlElement = hasTopClosestByTag(element, \"OL\");\n    var topListElement = topUlElement;\n    if (topOlElement && (!topUlElement || (topUlElement && topOlElement.contains(topUlElement)))) {\n        topListElement = topOlElement;\n    }\n    return topListElement;\n};\nvar hasClosestByAttribute = function (element, attr, value) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.getAttribute(attr) === value) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestBlock = function (element) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    var blockElement = hasClosestByAttribute(element, \"data-block\", \"0\");\n    if (blockElement) {\n        return blockElement;\n    }\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.tagName === \"H1\" ||\n            e.tagName === \"H2\" ||\n            e.tagName === \"H3\" ||\n            e.tagName === \"H4\" ||\n            e.tagName === \"H5\" ||\n            e.tagName === \"H6\" ||\n            e.tagName === \"P\" ||\n            e.tagName === \"BLOCKQUOTE\" ||\n            e.tagName === \"OL\" ||\n            e.tagName === \"UL\") {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByMatchTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName === nodeName) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByClassName = function (element, className) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.classList.contains(className)) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar getLastNode = function (node) {\n    while (node && node.lastChild) {\n        node = node.lastChild;\n    }\n    return node;\n};\n\n\n/***/ }),\n\n/***/ 946:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"W\": () => (/* binding */ hasClosestByHeadings)\n/* harmony export */ });\n/* unused harmony export hasClosestByTag */\n// NOTE: 减少 method.ts 打包，故从 hasClosest.ts 中拆分\nvar hasClosestByTag = function (element, nodeName) {\n    if (!element) {\n        return false;\n    }\n    if (element.nodeType === 3) {\n        element = element.parentElement;\n    }\n    var e = element;\n    var isClosest = false;\n    while (e && !isClosest && !e.classList.contains(\"vditor-reset\")) {\n        if (e.nodeName.indexOf(nodeName) === 0) {\n            isClosest = true;\n        }\n        else {\n            e = e.parentElement;\n        }\n    }\n    return isClosest && e;\n};\nvar hasClosestByHeadings = function (element) {\n    var headingElement = hasClosestByTag(element, \"H\");\n    if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== \"HR\") {\n        return headingElement;\n    }\n    return false;\n};\n\n\n/***/ }),\n\n/***/ 2:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"T\": () => (/* binding */ merge)\n/* harmony export */ });\nvar merge = function () {\n    var options = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        options[_i] = arguments[_i];\n    }\n    var target = {};\n    var merger = function (obj) {\n        for (var prop in obj) {\n            if (obj.hasOwnProperty(prop)) {\n                if (Object.prototype.toString.call(obj[prop]) === \"[object Object]\") {\n                    target[prop] = merge(target[prop], obj[prop]);\n                }\n                else {\n                    target[prop] = obj[prop];\n                }\n            }\n        }\n    };\n    for (var i = 0; i < options.length; i++) {\n        merger(options[i]);\n    }\n    return target;\n};\n\n\n/***/ }),\n\n/***/ 307:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Hc\": () => (/* binding */ setSelectionFocus)\n/* harmony export */ });\n/* unused harmony exports getEditorRange, getCursorPosition, selectIsEditor, getSelectPosition, setSelectionByPosition, setRangeByWbr, insertHTML */\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(793);\n\n\n\nvar getEditorRange = function (vditor) {\n    var range;\n    var element = vditor[vditor.currentMode].element;\n    if (getSelection().rangeCount > 0) {\n        range = getSelection().getRangeAt(0);\n        if (element.isEqualNode(range.startContainer) || element.contains(range.startContainer)) {\n            return range;\n        }\n    }\n    if (vditor[vditor.currentMode].range) {\n        return vditor[vditor.currentMode].range;\n    }\n    element.focus();\n    range = element.ownerDocument.createRange();\n    range.setStart(element, 0);\n    range.collapse(true);\n    return range;\n};\nvar getCursorPosition = function (editor) {\n    var range = window.getSelection().getRangeAt(0);\n    if (!editor.contains(range.startContainer) && !hasClosestByClassName(range.startContainer, \"vditor-panel--none\")) {\n        return {\n            left: 0,\n            top: 0,\n        };\n    }\n    var parentRect = editor.parentElement.getBoundingClientRect();\n    var cursorRect;\n    if (range.getClientRects().length === 0) {\n        if (range.startContainer.nodeType === 3) {\n            // 空行时，会出现没有 br 的情况，需要根据父元素 <p> 获取位置信息\n            var parent_1 = range.startContainer.parentElement;\n            if (parent_1 && parent_1.getClientRects().length > 0) {\n                cursorRect = parent_1.getClientRects()[0];\n            }\n            else {\n                return {\n                    left: 0,\n                    top: 0,\n                };\n            }\n        }\n        else {\n            var children = range.startContainer.children;\n            if (children[range.startOffset] &&\n                children[range.startOffset].getClientRects().length > 0) {\n                // markdown 模式回车\n                cursorRect = children[range.startOffset].getClientRects()[0];\n            }\n            else if (range.startContainer.childNodes.length > 0) {\n                // in table or code block\n                var cloneRange = range.cloneRange();\n                range.selectNode(range.startContainer.childNodes[Math.max(0, range.startOffset - 1)]);\n                cursorRect = range.getClientRects()[0];\n                range.setEnd(cloneRange.endContainer, cloneRange.endOffset);\n                range.setStart(cloneRange.startContainer, cloneRange.startOffset);\n            }\n            else {\n                cursorRect = range.startContainer.getClientRects()[0];\n            }\n            if (!cursorRect) {\n                var parentElement = range.startContainer.childNodes[range.startOffset];\n                while (!parentElement.getClientRects ||\n                    (parentElement.getClientRects && parentElement.getClientRects().length === 0)) {\n                    parentElement = parentElement.parentElement;\n                }\n                cursorRect = parentElement.getClientRects()[0];\n            }\n        }\n    }\n    else {\n        cursorRect = range.getClientRects()[0];\n    }\n    return {\n        left: cursorRect.left - parentRect.left,\n        top: cursorRect.top - parentRect.top,\n    };\n};\nvar selectIsEditor = function (editor, range) {\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return false;\n        }\n        else {\n            range = getSelection().getRangeAt(0);\n        }\n    }\n    var container = range.commonAncestorContainer;\n    return editor.isEqualNode(container) || editor.contains(container);\n};\nvar setSelectionFocus = function (range) {\n    var selection = window.getSelection();\n    selection.removeAllRanges();\n    selection.addRange(range);\n};\nvar getSelectPosition = function (selectElement, editorElement, range) {\n    var position = {\n        end: 0,\n        start: 0,\n    };\n    if (!range) {\n        if (getSelection().rangeCount === 0) {\n            return position;\n        }\n        range = window.getSelection().getRangeAt(0);\n    }\n    if (selectIsEditor(editorElement, range)) {\n        var preSelectionRange = range.cloneRange();\n        if (selectElement.childNodes[0] && selectElement.childNodes[0].childNodes[0]) {\n            preSelectionRange.setStart(selectElement.childNodes[0].childNodes[0], 0);\n        }\n        else {\n            preSelectionRange.selectNodeContents(selectElement);\n        }\n        preSelectionRange.setEnd(range.startContainer, range.startOffset);\n        position.start = preSelectionRange.toString().length;\n        position.end = position.start + range.toString().length;\n    }\n    return position;\n};\nvar setSelectionByPosition = function (start, end, editor) {\n    var charIndex = 0;\n    var line = 0;\n    var pNode = editor.childNodes[line];\n    var foundStart = false;\n    var stop = false;\n    start = Math.max(0, start);\n    end = Math.max(0, end);\n    var range = editor.ownerDocument.createRange();\n    range.setStart(pNode || editor, 0);\n    range.collapse(true);\n    while (!stop && pNode) {\n        var nextCharIndex = charIndex + pNode.textContent.length;\n        if (!foundStart && start >= charIndex && start <= nextCharIndex) {\n            if (start === 0) {\n                range.setStart(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setStart(pNode.childNodes[0], start - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setStartBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setStartAfter(pNode);\n                }\n            }\n            foundStart = true;\n            if (start === end) {\n                stop = true;\n                break;\n            }\n        }\n        if (foundStart && end >= charIndex && end <= nextCharIndex) {\n            if (end === 0) {\n                range.setEnd(pNode, 0);\n            }\n            else {\n                if (pNode.childNodes[0].nodeType === 3) {\n                    range.setEnd(pNode.childNodes[0], end - charIndex);\n                }\n                else if (pNode.nextSibling) {\n                    range.setEndBefore(pNode.nextSibling);\n                }\n                else {\n                    range.setEndAfter(pNode);\n                }\n            }\n            stop = true;\n        }\n        charIndex = nextCharIndex;\n        pNode = editor.childNodes[++line];\n    }\n    if (!stop && editor.childNodes[line - 1]) {\n        range.setStartBefore(editor.childNodes[line - 1]);\n    }\n    setSelectionFocus(range);\n    return range;\n};\nvar setRangeByWbr = function (element, range) {\n    var wbrElement = element.querySelector(\"wbr\");\n    if (!wbrElement) {\n        return;\n    }\n    if (!wbrElement.previousElementSibling) {\n        if (wbrElement.previousSibling) {\n            // text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n        else if (wbrElement.nextSibling) {\n            if (wbrElement.nextSibling.nodeType === 3) {\n                // <wbr>text\n                range.setStart(wbrElement.nextSibling, 0);\n            }\n            else {\n                // <wbr><br> https://github.com/Vanessa219/vditor/issues/400\n                range.setStartBefore(wbrElement.nextSibling);\n            }\n        }\n        else {\n            // 内容为空\n            range.setStart(wbrElement.parentElement, 0);\n        }\n    }\n    else {\n        if (wbrElement.previousElementSibling.isSameNode(wbrElement.previousSibling)) {\n            if (wbrElement.previousElementSibling.lastChild) {\n                // <em>text</em><wbr>\n                range.setStartBefore(wbrElement);\n                range.collapse(true);\n                setSelectionFocus(range);\n                // fix Chrome set range bug: **c**\n                if (isChrome() && (wbrElement.previousElementSibling.tagName === \"EM\" ||\n                    wbrElement.previousElementSibling.tagName === \"STRONG\" ||\n                    wbrElement.previousElementSibling.tagName === \"S\")) {\n                    range.insertNode(document.createTextNode(Constants.ZWSP));\n                    range.collapse(false);\n                }\n                wbrElement.remove();\n                return;\n            }\n            else {\n                // <br><wbr>\n                range.setStartAfter(wbrElement.previousElementSibling);\n            }\n        }\n        else {\n            // <em>text</em>text<wbr>\n            range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);\n        }\n    }\n    range.collapse(true);\n    wbrElement.remove();\n    setSelectionFocus(range);\n};\nvar insertHTML = function (html, vditor) {\n    // 使用 lute 方法会添加 p 元素，只有一个 p 元素的时候进行删除\n    var tempElement = document.createElement(\"div\");\n    tempElement.innerHTML = html;\n    var tempBlockElement = tempElement.querySelectorAll(\"p\");\n    if (tempBlockElement.length === 1 && !tempBlockElement[0].previousSibling && !tempBlockElement[0].nextSibling &&\n        vditor[vditor.currentMode].element.children.length > 0 && tempElement.firstElementChild.tagName === \"P\") {\n        html = tempBlockElement[0].innerHTML.trim();\n    }\n    var pasteElement = document.createElement(\"div\");\n    pasteElement.innerHTML = html;\n    var range = getEditorRange(vditor);\n    if (range.toString() !== \"\") {\n        vditor[vditor.currentMode].preventInput = true;\n        document.execCommand(\"delete\", false, \"\");\n    }\n    if (pasteElement.firstElementChild &&\n        pasteElement.firstElementChild.getAttribute(\"data-block\") === \"0\") {\n        // 粘贴内容为块元素时，应在下一段落中插入\n        pasteElement.lastElementChild.insertAdjacentHTML(\"beforeend\", \"<wbr>\");\n        var blockElement = hasClosestBlock(range.startContainer);\n        if (!blockElement) {\n            vditor[vditor.currentMode].element.insertAdjacentHTML(\"beforeend\", pasteElement.innerHTML);\n        }\n        else {\n            blockElement.insertAdjacentHTML(\"afterend\", pasteElement.innerHTML);\n        }\n        setRangeByWbr(vditor[vditor.currentMode].element, range);\n    }\n    else {\n        var pasteTemplate = document.createElement(\"template\");\n        pasteTemplate.innerHTML = html;\n        range.insertNode(pasteTemplate.content.cloneNode(true));\n        range.collapse(false);\n        setSelectionFocus(range);\n    }\n};\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ method)\n});\n\n// EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts\nvar abcRender = __webpack_require__(386);\n// EXTERNAL MODULE: ./src/ts/markdown/adapterRender.ts\nvar adapterRender = __webpack_require__(781);\n// EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts\nvar chartRender = __webpack_require__(379);\n// EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts\nvar codeRender = __webpack_require__(895);\n// EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts\nvar flowchartRender = __webpack_require__(169);\n// EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts\nvar graphvizRender = __webpack_require__(572);\n// EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts\nvar highlightRender = __webpack_require__(702);\n;// CONCATENATED MODULE: ./src/ts/markdown/lazyLoadImageRender.ts\nvar lazyLoadImageRender = function (element) {\n    if (element === void 0) { element = document; }\n    var loadImg = function (it) {\n        var testImage = document.createElement(\"img\");\n        testImage.src = it.getAttribute(\"data-src\");\n        testImage.addEventListener(\"load\", function () {\n            if (!it.getAttribute(\"style\") && !it.getAttribute(\"class\") &&\n                !it.getAttribute(\"width\") && !it.getAttribute(\"height\")) {\n                if (testImage.naturalHeight > testImage.naturalWidth &&\n                    testImage.naturalWidth / testImage.naturalHeight <\n                        document.querySelector(\".vditor-reset\").clientWidth / (window.innerHeight - 40) &&\n                    testImage.naturalHeight > (window.innerHeight - 40)) {\n                    it.style.height = (window.innerHeight - 40) + \"px\";\n                }\n            }\n            it.src = testImage.src;\n        });\n        it.removeAttribute(\"data-src\");\n    };\n    if (!(\"IntersectionObserver\" in window)) {\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            if (imgElement.getAttribute(\"data-src\")) {\n                loadImg(imgElement);\n            }\n        });\n        return false;\n    }\n    if (window.vditorImageIntersectionObserver) {\n        window.vditorImageIntersectionObserver.disconnect();\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n    else {\n        window.vditorImageIntersectionObserver = new IntersectionObserver(function (entries) {\n            entries.forEach(function (entrie) {\n                if ((typeof entrie.isIntersecting === \"undefined\"\n                    ? entrie.intersectionRatio !== 0\n                    : entrie.isIntersecting)\n                    && entrie.target.getAttribute(\"data-src\")) {\n                    loadImg(entrie.target);\n                }\n            });\n        });\n        element.querySelectorAll(\"img\").forEach(function (imgElement) {\n            window.vditorImageIntersectionObserver.observe(imgElement);\n        });\n    }\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts\nvar mathRender = __webpack_require__(982);\n// EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts\nvar mediaRender = __webpack_require__(431);\n// EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts\nvar mermaidRender = __webpack_require__(570);\n// EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts\nvar markmapRender = __webpack_require__(593);\n// EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts\nvar mindmapRender = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts\nvar outlineRender = __webpack_require__(182);\n// EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts\nvar plantumlRender = __webpack_require__(931);\n// EXTERNAL MODULE: ./src/ts/constants.ts\nvar constants = __webpack_require__(793);\n// EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts\nvar setContentTheme = __webpack_require__(652);\n// EXTERNAL MODULE: ./src/ts/util/addScript.ts\nvar addScript = __webpack_require__(998);\n// EXTERNAL MODULE: ./src/ts/util/hasClosest.ts\nvar hasClosest = __webpack_require__(118);\n// EXTERNAL MODULE: ./src/ts/util/merge.ts\nvar merge = __webpack_require__(2);\n;// CONCATENATED MODULE: ./src/ts/markdown/anchorRender.ts\nvar anchorRender = function (type) {\n    document.querySelectorAll(\".vditor-anchor\").forEach(function (anchor) {\n        if (type === 1) {\n            anchor.classList.add(\"vditor-anchor--left\");\n        }\n        anchor.onclick = function () {\n            var id = anchor.getAttribute(\"href\").substr(1);\n            var top = document.getElementById(\"vditorAnchor-\" + id).offsetTop;\n            document.querySelector(\"html\").scrollTop = top;\n        };\n    });\n    window.onhashchange = function () {\n        var element = document.getElementById(\"vditorAnchor-\" + decodeURIComponent(window.location.hash.substr(1)));\n        if (element) {\n            document.querySelector(\"html\").scrollTop = element.offsetTop;\n        }\n    };\n};\n\n// EXTERNAL MODULE: ./src/ts/markdown/setLute.ts\nvar setLute = __webpack_require__(65);\n// EXTERNAL MODULE: ./src/ts/util/selection.ts\nvar selection = __webpack_require__(307);\n;// CONCATENATED MODULE: ./src/ts/markdown/speechRender.ts\n\nvar speechRender = function (element, lang) {\n    if (lang === void 0) { lang = \"zh_CN\"; }\n    if (typeof speechSynthesis === \"undefined\" || typeof SpeechSynthesisUtterance === \"undefined\") {\n        return;\n    }\n    var getVoice = function () {\n        var voices = speechSynthesis.getVoices();\n        var currentVoice;\n        var defaultVoice;\n        voices.forEach(function (item) {\n            if (item.lang === lang.replace(\"_\", \"-\")) {\n                currentVoice = item;\n            }\n            if (item.default) {\n                defaultVoice = item;\n            }\n        });\n        if (!currentVoice) {\n            currentVoice = defaultVoice;\n        }\n        return currentVoice;\n    };\n    var playSVG = '<svg><use xlink:href=\"#vditor-icon-play\"></use></svg>';\n    var pauseSVG = '<svg><use xlink:href=\"#vditor-icon-pause\"></use></svg>';\n    if (!document.getElementById(\"vditorIconScript\")) {\n        playSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M3.436 0l25.128 16-25.128 16v-32z\"></path></svg>';\n        pauseSVG = '<svg viewBox=\"0 0 32 32\"><path d=\"M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z\"></path></svg>';\n    }\n    var speechDom = document.querySelector(\".vditor-speech\");\n    if (!speechDom) {\n        speechDom = document.createElement(\"button\");\n        speechDom.className = \"vditor-speech\";\n        element.insertAdjacentElement(\"beforeend\", speechDom);\n        if (speechSynthesis.onvoiceschanged !== undefined) {\n            speechSynthesis.onvoiceschanged = getVoice;\n        }\n    }\n    var voice = getVoice();\n    var utterThis = new SpeechSynthesisUtterance();\n    utterThis.voice = voice;\n    utterThis.onend = utterThis.onerror = function () {\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n    };\n    element.addEventListener(window.ontouchstart !== undefined ? \"touchend\" : \"click\", function (event) {\n        var target = event.target;\n        if (target.classList.contains(\"vditor-speech\") || target.parentElement.classList.contains(\"vditor-speech\")) {\n            if (!speechDom.classList.contains(\"vditor-speech--current\")) {\n                utterThis.text = speechDom.getAttribute(\"data-text\");\n                speechSynthesis.speak(utterThis);\n                speechDom.classList.add(\"vditor-speech--current\");\n                speechDom.innerHTML = pauseSVG;\n            }\n            else {\n                if (speechSynthesis.speaking) {\n                    if (speechSynthesis.paused) {\n                        speechSynthesis.resume();\n                        speechDom.innerHTML = pauseSVG;\n                    }\n                    else {\n                        speechSynthesis.pause();\n                        speechDom.innerHTML = playSVG;\n                    }\n                }\n            }\n            (0,selection/* setSelectionFocus */.Hc)(window.vditorSpeechRange);\n            element.focus();\n            return;\n        }\n        speechDom.style.display = \"none\";\n        speechSynthesis.cancel();\n        speechDom.classList.remove(\"vditor-speech--current\");\n        speechDom.innerHTML = playSVG;\n        if (getSelection().rangeCount === 0) {\n            return;\n        }\n        var range = getSelection().getRangeAt(0);\n        var text = range.toString().trim();\n        if (!text) {\n            return;\n        }\n        window.vditorSpeechRange = range.cloneRange();\n        var rect = range.getBoundingClientRect();\n        speechDom.innerHTML = playSVG;\n        speechDom.style.display = \"block\";\n        speechDom.style.top = (rect.top + rect.height + document.querySelector(\"html\").scrollTop - 20) + \"px\";\n        if (window.ontouchstart !== undefined) {\n            speechDom.style.left = (event.changedTouches[event.changedTouches.length - 1].pageX + 2) + \"px\";\n        }\n        else {\n            speechDom.style.left = (event.clientX + 2) + \"px\";\n        }\n        speechDom.setAttribute(\"data-text\", text);\n    });\n};\n\n;// CONCATENATED MODULE: ./src/ts/markdown/previewRender.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeOptions = function (options) {\n    var _a;\n    var defaultOption = {\n        anchor: 0,\n        cdn: constants/* Constants.CDN */.g.CDN,\n        customEmoji: {},\n        emojiPath: \"\".concat(constants/* Constants.CDN */.g.CDN, \"/dist/images/emoji\"),\n        hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,\n        icon: \"ant\",\n        lang: \"zh_CN\",\n        markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,\n        math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,\n        mode: \"light\",\n        speech: {\n            enable: false,\n        },\n        render: {\n            media: {\n                enable: true,\n            }\n        },\n        theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,\n    };\n    if (options.cdn) {\n        if (!((_a = options.theme) === null || _a === void 0 ? void 0 : _a.path)) {\n            defaultOption.theme.path = \"\".concat(options.cdn, \"/dist/css/content-theme\");\n        }\n        if (!options.emojiPath) {\n            defaultOption.emojiPath = \"\".concat(options.cdn, \"/dist/images/emoji\");\n        }\n    }\n    return (0,merge/* merge */.T)(defaultOption, options);\n};\nvar md2html = function (mdText, options) {\n    var mergedOptions = mergeOptions(options);\n    return (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/lute/lute.min.js\"), \"vditorLuteScript\").then(function () {\n        var lute = (0,setLute/* setLute */.X)({\n            autoSpace: mergedOptions.markdown.autoSpace,\n            gfmAutoLink: mergedOptions.markdown.gfmAutoLink,\n            codeBlockPreview: mergedOptions.markdown.codeBlockPreview,\n            emojiSite: mergedOptions.emojiPath,\n            emojis: mergedOptions.customEmoji,\n            fixTermTypo: mergedOptions.markdown.fixTermTypo,\n            footnotes: mergedOptions.markdown.footnotes,\n            headingAnchor: mergedOptions.anchor !== 0,\n            inlineMathDigit: mergedOptions.math.inlineDigit,\n            lazyLoadImage: mergedOptions.lazyLoadImage,\n            linkBase: mergedOptions.markdown.linkBase,\n            linkPrefix: mergedOptions.markdown.linkPrefix,\n            listStyle: mergedOptions.markdown.listStyle,\n            mark: mergedOptions.markdown.mark,\n            mathBlockPreview: mergedOptions.markdown.mathBlockPreview,\n            paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,\n            sanitize: mergedOptions.markdown.sanitize,\n            toc: mergedOptions.markdown.toc,\n        });\n        if (options === null || options === void 0 ? void 0 : options.renderers) {\n            lute.SetJSRenderers({\n                renderers: {\n                    Md2HTML: options.renderers,\n                },\n            });\n        }\n        lute.SetHeadingID(true);\n        return lute.Md2HTML(mdText);\n    });\n};\nvar previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {\n    var mergedOptions, html, i18nScriptPrefix, i18nScriptID_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                mergedOptions = mergeOptions(options);\n                return [4 /*yield*/, md2html(markdown, mergedOptions)];\n            case 1:\n                html = _a.sent();\n                if (mergedOptions.transform) {\n                    html = mergedOptions.transform(html);\n                }\n                previewElement.innerHTML = html;\n                previewElement.classList.add(\"vditor-reset\");\n                if (!!mergedOptions.i18n) return [3 /*break*/, 5];\n                if (!![\"en_US\", \"fr_FR\", \"pt_BR\", \"ja_JP\", \"ko_KR\", \"ru_RU\", \"sv_SE\", \"zh_CN\", \"zh_TW\"].includes(mergedOptions.lang)) return [3 /*break*/, 2];\n                throw new Error(\"options.lang error, see https://ld246.com/article/1549638745630#options\");\n            case 2:\n                i18nScriptPrefix = \"vditorI18nScript\";\n                i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;\n                document.querySelectorAll(\"head script[id^=\\\"\".concat(i18nScriptPrefix, \"\\\"]\")).forEach(function (el) {\n                    if (el.id !== i18nScriptID_1) {\n                        document.head.removeChild(el);\n                    }\n                });\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/i18n/\").concat(mergedOptions.lang, \".js\"), i18nScriptID_1)];\n            case 3:\n                _a.sent();\n                _a.label = 4;\n            case 4: return [3 /*break*/, 6];\n            case 5:\n                window.VditorI18n = mergedOptions.i18n;\n                _a.label = 6;\n            case 6:\n                if (!mergedOptions.icon) return [3 /*break*/, 8];\n                return [4 /*yield*/, (0,addScript/* addScript */.G)(\"\".concat(mergedOptions.cdn, \"/dist/js/icons/\").concat(mergedOptions.icon, \".js\"), \"vditorIconScript\")];\n            case 7:\n                _a.sent();\n                _a.label = 8;\n            case 8:\n                (0,setContentTheme/* setContentTheme */.Z)(mergedOptions.theme.current, mergedOptions.theme.path);\n                if (mergedOptions.anchor === 1) {\n                    previewElement.classList.add(\"vditor-reset--anchor\");\n                }\n                (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);\n                (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);\n                (0,mathRender/* mathRender */.H)(previewElement, {\n                    cdn: mergedOptions.cdn,\n                    math: mergedOptions.math,\n                });\n                (0,mermaidRender/* mermaidRender */.i)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);\n                (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);\n                (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);\n                (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);\n                (0,abcRender/* abcRender */.Q)(previewElement, mergedOptions.cdn);\n                if (mergedOptions.render.media.enable) {\n                    (0,mediaRender/* mediaRender */.Y)(previewElement);\n                }\n                if (mergedOptions.speech.enable) {\n                    speechRender(previewElement);\n                }\n                if (mergedOptions.anchor !== 0) {\n                    anchorRender(mergedOptions.anchor);\n                }\n                if (mergedOptions.after) {\n                    mergedOptions.after();\n                }\n                if (mergedOptions.lazyLoadImage) {\n                    lazyLoadImageRender(previewElement);\n                }\n                previewElement.addEventListener(\"click\", function (event) {\n                    var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, \"SPAN\");\n                    if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, \"vditor-toc\")) {\n                        var headingElement = previewElement.querySelector(\"#\" + spanElement.getAttribute(\"data-target-id\"));\n                        if (headingElement) {\n                            window.scrollTo(window.scrollX, headingElement.offsetTop);\n                        }\n                        return;\n                    }\n                });\n                return [2 /*return*/];\n        }\n    });\n}); };\n\n// EXTERNAL MODULE: ./src/ts/preview/image.ts\nvar preview_image = __webpack_require__(971);\n// EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts\nvar setCodeTheme = __webpack_require__(34);\n;// CONCATENATED MODULE: ./src/method.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Vditor = /** @class */ (function () {\n    function Vditor() {\n    }\n    /** 点击图片放大 */\n    Vditor.adapterRender = adapterRender;\n    /** 点击图片放大 */\n    Vditor.previewImage = preview_image/* previewImage */.E;\n    /** 为 element 中的代码块添加复制按钮 */\n    Vditor.codeRender = codeRender/* codeRender */.O;\n    /** 对 graphviz 进行渲染 */\n    Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;\n    /** 为 element 中的代码块进行高亮渲染 */\n    Vditor.highlightRender = highlightRender/* highlightRender */.s;\n    /** 对数学公式进行渲染 */\n    Vditor.mathRender = mathRender/* mathRender */.H;\n    /** 流程图/时序图/甘特图渲染 */\n    Vditor.mermaidRender = mermaidRender/* mermaidRender */.i;\n    /** 支持markdown的思维导图 */\n    Vditor.markmapRender = markmapRender/* markmapRender */.K;\n    /** flowchart.js 渲染 */\n    Vditor.flowchartRender = flowchartRender/* flowchartRender */.P;\n    /** 图表渲染 */\n    Vditor.chartRender = chartRender/* chartRender */.p;\n    /** 五线谱渲染 */\n    Vditor.abcRender = abcRender/* abcRender */.Q;\n    /** 脑图渲染 */\n    Vditor.mindmapRender = mindmapRender/* mindmapRender */.P;\n    /** plantuml渲染 */\n    Vditor.plantumlRender = plantumlRender/* plantumlRender */.B;\n    /** 大纲渲染 */\n    Vditor.outlineRender = outlineRender/* outlineRender */.k;\n    /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */\n    Vditor.mediaRender = mediaRender/* mediaRender */.Y;\n    /** 对选中的文字进行阅读 */\n    Vditor.speechRender = speechRender;\n    /** 对图片进行懒加载 */\n    Vditor.lazyLoadImageRender = lazyLoadImageRender;\n    /** Markdown 文本转换为 HTML，该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */\n    Vditor.md2html = md2html;\n    /** 页面 Markdown 文章渲染 */\n    Vditor.preview = previewRender;\n    /** 设置代码主题 */\n    Vditor.setCodeTheme = setCodeTheme/* setCodeTheme */.Y;\n    /** 设置内容主题 */\n    Vditor.setContentTheme = setContentTheme/* setContentTheme */.Z;\n    return Vditor;\n}());\n/* harmony default export */ const method = (Vditor);\n\n})();\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/constants.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare const _VDITOR_VERSION: string;\nexport { _VDITOR_VERSION as VDITOR_VERSION };\nexport declare abstract class Constants {\n    static readonly ZWSP: string;\n    static readonly DROP_EDITOR: string;\n    static readonly MOBILE_WIDTH: number;\n    static readonly CLASS_MENU_DISABLED: string;\n    static readonly EDIT_TOOLBARS: string[];\n    static readonly CODE_THEME: string[];\n    static readonly CODE_LANGUAGES: string[];\n    static readonly CDN: string;\n    static readonly MARKDOWN_OPTIONS: {\n        autoSpace: boolean;\n        gfmAutoLink: boolean;\n        codeBlockPreview: boolean;\n        fixTermTypo: boolean;\n        footnotes: boolean;\n        linkBase: string;\n        linkPrefix: string;\n        listStyle: boolean;\n        mark: boolean;\n        mathBlockPreview: boolean;\n        paragraphBeginningSpace: boolean;\n        sanitize: boolean;\n        toc: boolean;\n    };\n    static readonly HLJS_OPTIONS: {\n        enable: boolean;\n        lineNumber: boolean;\n        defaultLang: string;\n        style: string;\n    };\n    static readonly MATH_OPTIONS: IMath;\n    static readonly THEME_OPTIONS: {\n        current: string;\n        list: {\n            \"ant-design\": string;\n            dark: string;\n            light: string;\n            wechat: string;\n        };\n        path: string;\n    };\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/devtools/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class DevTools {\n    element: HTMLDivElement;\n    private ASTChart;\n    constructor();\n    renderEchart(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/export/index.d.ts",
    "content": "export declare const download: (vditor: IVditor, content: string, filename: string) => void;\nexport declare const exportMarkdown: (vditor: IVditor) => void;\nexport declare const exportPDF: (vditor: IVditor) => void;\nexport declare const exportHTML: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/hint/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Hint {\n    timeId: number;\n    element: HTMLDivElement;\n    recentLanguage: string;\n    private splitChar;\n    private lastIndex;\n    constructor(hintExtends: IHintExtend[]);\n    render(vditor: IVditor): void;\n    genHTML(data: IHintData[], key: string, vditor: IVditor): void;\n    fillEmoji: (element: HTMLElement, vditor: IVditor) => void;\n    select(event: KeyboardEvent, vditor: IVditor): boolean;\n    private getKey;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/expandMarker.d.ts",
    "content": "export declare const expandMarker: (range: Range, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/highlightToolbarIR.d.ts",
    "content": "export declare const highlightToolbarIR: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class IR {\n    range: Range;\n    element: HTMLPreElement;\n    processTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    composingLock: boolean;\n    preventInput: boolean;\n    constructor(vditor: IVditor);\n    private copy;\n    private bindEvent;\n}\nexport { IR };\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/input.d.ts",
    "content": "export declare const input: (vditor: IVditor, range: Range, ignoreSpace?: boolean, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/process.d.ts",
    "content": "export declare const processHint: (vditor: IVditor) => void;\nexport declare const processAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const processHeading: (vditor: IVditor, value: string) => void;\nexport declare const processToolbar: (vditor: IVditor, actionBtn: Element, prefix: string, suffix: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ir/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/abcRender.d.ts",
    "content": "export declare const abcRender: (element?: (HTMLElement | Document), cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/adapterRender.d.ts",
    "content": "export declare const mathRenderAdapter: {\n    getCode: (mathElement: Element) => string;\n    getElements: (element: HTMLElement) => NodeListOf<Element>;\n};\nexport declare const mermaidRenderAdapter: {\n    /** 不仅要返回code，并且需要将 code 设置为 el 的 innerHTML */\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement) => NodeListOf<Element>;\n};\nexport declare const markmapRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (element: HTMLElement) => NodeListOf<Element>;\n};\nexport declare const mindmapRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const chartRenderAdapter: {\n    getCode: (el: HTMLElement) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const abcRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const graphvizRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const flowchartRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\nexport declare const plantumlRenderAdapter: {\n    getCode: (el: Element) => string;\n    getElements: (el: HTMLElement | Document) => NodeListOf<Element>;\n};\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/anchorRender.d.ts",
    "content": "export declare const anchorRender: (type: number) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/chartRender.d.ts",
    "content": "export declare const chartRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/codeRender.d.ts",
    "content": "export declare const codeRender: (element: HTMLElement, option?: IHljs) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/flowchartRender.d.ts",
    "content": "export declare const flowchartRender: (element: HTMLElement, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/getHTML.d.ts",
    "content": "export declare const getHTML: (vditor: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/getMarkdown.d.ts",
    "content": "export declare const getMarkdown: (vditor: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/graphvizRender.d.ts",
    "content": "export declare const graphvizRender: (element: HTMLElement, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/highlightRender.d.ts",
    "content": "export declare const highlightRender: (hljsOption?: IHljs, element?: HTMLElement | Document, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/lazyLoadImageRender.d.ts",
    "content": "declare global {\n    interface Window {\n        vditorImageIntersectionObserver: IntersectionObserver;\n    }\n}\nexport declare const lazyLoadImageRender: (element?: (HTMLElement | Document)) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/markmapRender.d.ts",
    "content": "export declare const markmapRender: (element: HTMLElement, cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/mathRender.d.ts",
    "content": "declare global {\n    interface Window {\n        MathJax: any;\n    }\n}\nexport declare const mathRender: (element: HTMLElement, options?: {\n    cdn?: string;\n    math?: IMath;\n}) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/mediaRender.d.ts",
    "content": "export declare const mediaRender: (element: HTMLElement) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/mermaidRender.d.ts",
    "content": "export declare const mermaidRender: (element: HTMLElement, cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/mindmapRender.d.ts",
    "content": "export declare const mindmapRender: (element: (HTMLElement | Document), cdn: string, theme: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/outlineRender.d.ts",
    "content": "export declare const outlineRender: (contentElement: HTMLElement, targetElement: Element, vditor?: IVditor) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/plantumlRender.d.ts",
    "content": "export declare const plantumlRender: (element?: (HTMLElement | Document), cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/previewRender.d.ts",
    "content": "export declare const md2html: (mdText: string, options?: IPreviewOptions) => Promise<string>;\nexport declare const previewRender: (previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) => Promise<void>;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/setLute.d.ts",
    "content": "export declare const setLute: (options: ILuteOptions) => Lute;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/markdown/speechRender.d.ts",
    "content": "declare global {\n    interface Window {\n        vditorSpeechRange: Range;\n    }\n}\nexport declare const speechRender: (element: HTMLElement, lang?: keyof II18n) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/outline/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Outline {\n    element: HTMLElement;\n    constructor(outlineLabel: string);\n    render(vditor: IVditor): string;\n    toggle(vditor: IVditor, show?: boolean, focus?: boolean): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/preview/image.d.ts",
    "content": "export declare const previewImage: (oldImgElement: HTMLImageElement, lang?: keyof II18n, theme?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/preview/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Preview {\n    element: HTMLElement;\n    previewElement: HTMLElement;\n    private mdTimeoutId;\n    constructor(vditor: IVditor);\n    render(vditor: IVditor, value?: string): void;\n    private afterRender;\n    private copyToX;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/resize/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Resize {\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    private bindEvent;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/sv/combineFootnote.d.ts",
    "content": "/**\n * 合并脚注\n * @param elements vditor.sv.element\n * @param afterCombine 每个脚注块合并完成后的回调, param: root为合并后的脚注块\n */\nexport declare const combineFootnote: (elements: HTMLElement, afterCombine?: (root: HTMLElement) => void) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/sv/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class Editor {\n    range: Range;\n    element: HTMLPreElement;\n    composingLock: boolean;\n    processTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    preventInput: boolean;\n    constructor(vditor: IVditor);\n    private copy;\n    private bindEvent;\n}\nexport { Editor };\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/sv/inputEvent.d.ts",
    "content": "export declare const inputEvent: (vditor: IVditor, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/sv/process.d.ts",
    "content": "export declare const processPaste: (vditor: IVditor, text: string) => void;\nexport declare const getSideByType: (spanNode: Node, type: string, isPrevious?: boolean) => false | Element;\nexport declare const processSpinVditorSVDOM: (html: string, vditor: IVditor) => string;\nexport declare const processPreviousMarkers: (spanElement: HTMLElement) => string;\nexport declare const processAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const processHeading: (vditor: IVditor, value: string) => void;\nexport declare const processToolbar: (vditor: IVditor, actionBtn: Element, prefix: string, suffix: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/sv/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/tip/index.d.ts",
    "content": "export declare class Tip {\n    element: HTMLElement;\n    constructor();\n    show(text: string, time?: number): void;\n    hide(): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Both.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Both extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Br.d.ts",
    "content": "export declare class Br {\n    element: HTMLElement;\n    constructor();\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/CodeTheme.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class CodeTheme extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/ContentTheme.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class ContentTheme extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Counter.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Counter {\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    render(vditor: IVditor, mdText: string): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Custom.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Custom extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Devtools.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Devtools extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Divider.d.ts",
    "content": "export declare class Divider {\n    element: HTMLElement;\n    constructor();\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/EditMode.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare const setEditMode: (vditor: IVditor, type: string, event: Event | string) => void;\nexport declare class EditMode extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, panelElement: HTMLElement, menuItem: IMenuItem): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Emoji.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Emoji extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    private bindEvent;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Export.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Export extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Fullscreen.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Fullscreen extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, menuItem: IMenuItem): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Headings.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Headings extends MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor, panelElement: HTMLElement): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Help.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Help extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Indent.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Indent extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Info.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Info extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/InsertAfter.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class InsertAfter extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/InsertBefore.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class InsertBefore extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/MenuItem.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class MenuItem {\n    element: HTMLElement;\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Outdent.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Outdent extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Outline.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Outline extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Preview.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Preview extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Record.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Record extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Redo.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Redo extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Undo.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Undo extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/Upload.d.ts",
    "content": "/// <reference types=\"./types\" />\nimport { MenuItem } from \"./MenuItem\";\nexport declare class Upload extends MenuItem {\n    constructor(vditor: IVditor, menuItem: IMenuItem);\n    _bindEvent(vditor: IVditor): void;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/index.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Toolbar {\n    elements: {\n        [key: string]: HTMLElement;\n    };\n    element: HTMLElement;\n    constructor(vditor: IVditor);\n    updateConfig(vditor: IVditor, options: IToolbarConfig): void;\n    private genItem;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/toolbar/setToolbar.d.ts",
    "content": "export declare const removeCurrentToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const setCurrentToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const enableToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const disableToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const hideToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const showToolbar: (toolbar: {\n    [key: string]: HTMLElement;\n}, names: string[]) => void;\nexport declare const hidePanel: (vditor: IVditor, panels: string[], exceptElement?: HTMLElement) => void;\nexport declare const toggleSubMenu: (vditor: IVditor, panelElement: HTMLElement, actionBtn: Element, level: number) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ui/initUI.d.ts",
    "content": "export declare const initUI: (vditor: IVditor) => void;\nexport declare const setPadding: (vditor: IVditor) => void;\nexport declare const setTypewriterPosition: (vditor: IVditor) => void;\nexport declare function UIUnbindListener(): void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ui/setCodeTheme.d.ts",
    "content": "export declare const setCodeTheme: (codeTheme: string, cdn?: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ui/setContentTheme.d.ts",
    "content": "export declare const setContentTheme: (contentTheme: string, path: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ui/setPreviewMode.d.ts",
    "content": "export declare const setPreviewMode: (mode: \"both\" | \"editor\", vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/ui/setTheme.d.ts",
    "content": "export declare const setTheme: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/undo/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class Undo {\n    private stackSize;\n    private dmp;\n    private wysiwyg;\n    private ir;\n    private sv;\n    constructor();\n    clearStack(vditor: IVditor): void;\n    resetIcon(vditor: IVditor): void;\n    undo(vditor: IVditor): void;\n    redo(vditor: IVditor): void;\n    recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void;\n    addToUndoStack(vditor: IVditor): void;\n    private renderDiff;\n    private resetStack;\n    private addCaret;\n}\nexport { Undo };\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/upload/getElement.d.ts",
    "content": "export declare const getElement: (vditor: IVditor) => HTMLPreElement;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/upload/index.d.ts",
    "content": "declare class Upload {\n    element: HTMLElement;\n    isUploading: boolean;\n    range: Range;\n    constructor();\n}\ndeclare const uploadFiles: (vditor: IVditor, files: FileList | DataTransferItemList | File[], element?: HTMLInputElement) => Promise<void>;\nexport { Upload, uploadFiles };\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/upload/setHeaders.d.ts",
    "content": "export declare const setHeaders: (vditor: IVditor, xhr: XMLHttpRequest) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/Options.d.ts",
    "content": "/// <reference types=\"./types\" />\nexport declare class Options {\n    options: IOptions;\n    private defaultOptions;\n    constructor(options: IOptions);\n    merge(): IOptions;\n    private mergeToolbar;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/RecordMedia.d.ts",
    "content": "export declare class RecordMedia {\n    SAMPLE_RATE: number;\n    DEFAULT_SAMPLE_RATE: number;\n    isRecording: boolean;\n    readyFlag: boolean;\n    leftChannel: Float32List[];\n    rightChannel: Float32List[];\n    recordingLength: number;\n    recorder: ScriptProcessorNode;\n    constructor(e: MediaStream);\n    cloneChannelData(leftChannelData: Float32List, rightChannelData: Float32List): void;\n    startRecordingNewWavFile(): void;\n    stopRecording(): void;\n    buildWavFileBlob(): Blob;\n    private downSampleBuffer;\n    private mergeBuffers;\n    private writeUTFBytes;\n}\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/addScript.d.ts",
    "content": "export declare const addScriptSync: (path: string, id: string) => boolean;\nexport declare const addScript: (path: string, id: string) => Promise<unknown>;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/addStyle.d.ts",
    "content": "export declare const addStyle: (url: string, id: string) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/code160to32.d.ts",
    "content": "export declare const code160to32: (text: string) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/compatibility.d.ts",
    "content": "export declare const isSafari: () => boolean;\nexport declare const isFirefox: () => boolean;\nexport declare const accessLocalStorage: () => boolean;\nexport declare const getEventName: () => \"click\" | \"touchstart\";\nexport declare const isCtrl: (event: KeyboardEvent) => boolean;\nexport declare const updateHotkeyTip: (hotkey: string) => string;\nexport declare const isChrome: () => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/editorCommonEvent.d.ts",
    "content": "export declare const focusEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const dblclickEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const blurEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const dropEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const copyEvent: (vditor: IVditor, editorElement: HTMLElement, copy: (event: ClipboardEvent, vditor: IVditor) => void) => void;\nexport declare const cutEvent: (vditor: IVditor, editorElement: HTMLElement, copy: (event: ClipboardEvent, vditor: IVditor) => void) => void;\nexport declare const scrollCenter: (vditor: IVditor) => void;\nexport declare const hotkeyEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\nexport declare const selectEvent: (vditor: IVditor, editorElement: HTMLElement) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/fixBrowserBehavior.d.ts",
    "content": "export declare const fixGSKeyBackspace: (event: KeyboardEvent, vditor: IVditor, startContainer: Node) => boolean;\nexport declare const fixCJKPosition: (range: Range, vditor: IVditor, event: KeyboardEvent) => void;\nexport declare const fixCursorDownInlineMath: (range: Range, key: string) => void;\nexport declare const insertEmptyBlock: (vditor: IVditor, position: InsertPosition) => void;\nexport declare const isFirstCell: (cellElement: HTMLElement) => false | HTMLTableElement;\nexport declare const isLastCell: (cellElement: HTMLElement) => false | HTMLTableElement;\nexport declare const insertAfterBlock: (vditor: IVditor, event: KeyboardEvent, range: Range, element: HTMLElement, blockElement: HTMLElement) => boolean;\nexport declare const insertBeforeBlock: (vditor: IVditor, event: KeyboardEvent, range: Range, element: HTMLElement, blockElement: HTMLElement) => boolean;\nexport declare const listToggle: (vditor: IVditor, range: Range, type: string, cancel?: boolean) => void;\nexport declare const listIndent: (vditor: IVditor, liElement: HTMLElement, range: Range) => void;\nexport declare const listOutdent: (vditor: IVditor, liElement: HTMLElement, range: Range, topListElement: HTMLElement) => void;\nexport declare const setTableAlign: (tableElement: HTMLTableElement, type: string) => void;\nexport declare const isHrMD: (text: string) => boolean;\nexport declare const isHeadingMD: (text: string) => boolean;\nexport declare const execAfterRender: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\nexport declare const fixList: (range: Range, vditor: IVditor, pElement: HTMLElement | false, event: KeyboardEvent) => boolean;\nexport declare const fixTab: (vditor: IVditor, range: Range, event: KeyboardEvent) => boolean;\nexport declare const fixMarkdown: (event: KeyboardEvent, vditor: IVditor, pElement: HTMLElement | false, range: Range) => boolean;\nexport declare const insertRow: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const insertRowAbove: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const insertColumn: (vditor: IVditor, tableElement: HTMLTableElement, cellElement: HTMLElement, type?: InsertPosition) => void;\nexport declare const deleteRow: (vditor: IVditor, range: Range, cellElement: HTMLElement) => void;\nexport declare const deleteColumn: (vditor: IVditor, range: Range, tableElement: HTMLTableElement, cellElement: HTMLElement) => void;\nexport declare const fixTable: (vditor: IVditor, event: KeyboardEvent, range: Range) => boolean;\nexport declare const fixCodeBlock: (vditor: IVditor, event: KeyboardEvent, codeRenderElement: HTMLElement, range: Range) => boolean;\nexport declare const fixBlockquote: (vditor: IVditor, range: Range, event: KeyboardEvent, pElement: HTMLElement | false) => boolean;\nexport declare const fixTask: (vditor: IVditor, range: Range, event: KeyboardEvent) => boolean;\nexport declare const fixDelete: (vditor: IVditor, range: Range, event: KeyboardEvent, pElement: HTMLElement | false) => boolean;\nexport declare const fixHR: (range: Range) => void;\nexport declare const fixFirefoxArrowUpTable: (event: KeyboardEvent, blockElement: false | HTMLElement, range: Range) => boolean;\nexport declare const paste: (vditor: IVditor, event: (ClipboardEvent | DragEvent) & {\n    target: HTMLElement;\n}, callback: {\n    pasteCode(code: string): void;\n}) => Promise<void>;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/function.d.ts",
    "content": "export declare const genUUID: () => string;\nexport declare const getSearch: (key: string, link?: string) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/getSelectText.d.ts",
    "content": "export declare const getSelectText: (editor: HTMLElement, range?: Range) => string;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/hasClosest.d.ts",
    "content": "export declare const hasTopClosestByClassName: (element: Node, className: string) => false | HTMLElement;\nexport declare const hasTopClosestByAttribute: (element: Node, attr: string, value: string) => false | HTMLElement;\nexport declare const hasTopClosestByTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const getTopList: (element: Node) => false | HTMLElement;\nexport declare const hasClosestByAttribute: (element: Node, attr: string, value: string) => false | HTMLElement;\nexport declare const hasClosestBlock: (element: Node) => false | HTMLElement;\nexport declare const hasClosestByMatchTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const hasClosestByClassName: (element: Node, className: string) => false | HTMLElement;\nexport declare const getLastNode: (node: Node) => Node;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/hasClosestByHeadings.d.ts",
    "content": "export declare const hasClosestByTag: (element: Node, nodeName: string) => false | HTMLElement;\nexport declare const hasClosestByHeadings: (element: Node) => false | HTMLElement;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/highlightToolbar.d.ts",
    "content": "export declare const highlightToolbar: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/hotKey.d.ts",
    "content": "export declare const matchHotKey: (hotKey: string, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/log.d.ts",
    "content": "export declare const log: (method: string, content: string, type: string, print: boolean) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/merge.d.ts",
    "content": "export declare const merge: (...options: any[]) => any;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/processCode.d.ts",
    "content": "export declare const processPasteCode: (html: string, text: string, type?: string) => string | false;\nexport declare const processCodeRender: (previewPanel: HTMLElement, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/selection.d.ts",
    "content": "export declare const getEditorRange: (vditor: IVditor) => Range;\nexport declare const getCursorPosition: (editor: HTMLElement) => {\n    left: number;\n    top: number;\n};\nexport declare const selectIsEditor: (editor: HTMLElement, range?: Range) => boolean;\nexport declare const setSelectionFocus: (range: Range) => void;\nexport declare const getSelectPosition: (selectElement: HTMLElement, editorElement: HTMLElement, range?: Range) => {\n    end: number;\n    start: number;\n};\nexport declare const setSelectionByPosition: (start: number, end: number, editor: HTMLElement) => Range;\nexport declare const setRangeByWbr: (element: HTMLElement, range: Range) => void;\nexport declare const insertHTML: (html: string, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/util/toc.d.ts",
    "content": "export declare const renderToc: (vditor: IVditor) => void;\nexport declare const clickToc: (event: MouseEvent & {\n    target: HTMLElement;\n}, vditor: IVditor) => void;\nexport declare const keydownToc: (blockElement: HTMLElement, vditor: IVditor, event: KeyboardEvent, range: Range) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/afterRenderEvent.d.ts",
    "content": "export declare const afterRenderEvent: (vditor: IVditor, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts",
    "content": "export declare const highlightToolbarWYSIWYG: (vditor: IVditor) => void;\nexport declare const genLinkRefPopover: (vditor: IVditor, linkRefElement: HTMLElement, range?: Range) => void;\nexport declare const genAPopover: (vditor: IVditor, aElement: HTMLElement, range: Range) => void;\nexport declare const genImagePopover: (event: Event, vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/index.d.ts",
    "content": "/// <reference types=\"./types\" />\ndeclare class WYSIWYG {\n    range: Range;\n    element: HTMLPreElement;\n    popover: HTMLDivElement;\n    selectPopover: HTMLDivElement;\n    afterRenderTimeoutId: number;\n    hlToolbarTimeoutId: number;\n    preventInput: boolean;\n    composingLock: boolean;\n    commentIds: string[];\n    private scrollListener;\n    constructor(vditor: IVditor);\n    getComments(vditor: IVditor, getData?: boolean): ICommentsData[];\n    triggerRemoveComment(vditor: IVditor): void;\n    showComment(): void;\n    hideComment(): void;\n    unbindListener(): void;\n    private copy;\n    private bindEvent;\n}\nexport { WYSIWYG };\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/inlineTag.d.ts",
    "content": "export declare const previoueIsEmptyA: (node: Node) => false | HTMLElement;\nexport declare const nextIsCode: (range: Range) => boolean;\nexport declare const getNextHTML: (node: Node) => string;\nexport declare const getPreviousHTML: (node: Node) => string;\nexport declare const getRenderElementNextNode: (blockCodeElement: HTMLElement) => ChildNode;\nexport declare const splitElement: (range: Range) => {\n    afterHTML: string;\n    beforeHTML: string;\n};\nexport declare const modifyPre: (vditor: IVditor, range: Range) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/input.d.ts",
    "content": "export declare const input: (vditor: IVditor, range: Range, event?: InputEvent) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/processKeydown.d.ts",
    "content": "export declare const processKeydown: (vditor: IVditor, event: KeyboardEvent) => boolean;\nexport declare const removeBlockElement: (vditor: IVditor, event: KeyboardEvent) => boolean;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/renderDomByMd.d.ts",
    "content": "export declare const renderDomByMd: (vditor: IVditor, md: string, options?: {\n    enableAddUndoStack: boolean;\n    enableHint: boolean;\n    enableInput: boolean;\n}) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/setHeading.d.ts",
    "content": "export declare const setHeading: (vditor: IVditor, tagName: string) => void;\nexport declare const removeHeading: (vditor: IVditor) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/showCode.d.ts",
    "content": "export declare const showCode: (previewElement: HTMLElement, vditor: IVditor, first?: boolean) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/ts/wysiwyg/toolbarEvent.d.ts",
    "content": "export declare const toolbarEvent: (vditor: IVditor, actionBtn: Element, event: Event) => void;\n"
  },
  {
    "path": "src/frontend/platform/public/vditor/dist/types/index.d.ts",
    "content": "declare module \"*.svg\";\n\ndeclare module \"*.png\";\n\ninterface Window {\n    VditorI18n: ITips;\n}\n\ninterface IObject {\n    [key: string]: string;\n}\n\ninterface ILuteNode {\n    TokensStr: () => string;\n    __internal_object__: {\n        Parent: {\n            Type: number,\n        },\n        HeadingLevel: string,\n    };\n}\n\ntype ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];\n\n/** @link https://ld246.com/article/1588412297062 */\ninterface ILuteRender {\n    renderDocument?: ILuteRenderCallback;\n    renderParagraph?: ILuteRenderCallback;\n    renderText?: ILuteRenderCallback;\n    renderCodeBlock?: ILuteRenderCallback;\n    renderCodeBlockOpenMarker?: ILuteRenderCallback;\n    renderCodeBlockInfoMarker?: ILuteRenderCallback;\n    renderCodeBlockCode?: ILuteRenderCallback;\n    renderCodeBlockCloseMarker?: ILuteRenderCallback;\n    renderMathBlock?: ILuteRenderCallback;\n    renderMathBlockOpenMarker?: ILuteRenderCallback;\n    renderMathBlockContent?: ILuteRenderCallback;\n    renderMathBlockCloseMarker?: ILuteRenderCallback;\n    renderBlockquote?: ILuteRenderCallback;\n    renderBlockquoteMarker?: ILuteRenderCallback;\n    renderHeading?: ILuteRenderCallback;\n    renderHeadingC8hMarker?: ILuteRenderCallback;\n    renderList?: ILuteRenderCallback;\n    renderListItem?: ILuteRenderCallback;\n    renderTaskListItemMarker?: ILuteRenderCallback;\n    renderThematicBreak?: ILuteRenderCallback;\n    renderHTML?: ILuteRenderCallback;\n    renderTable?: ILuteRenderCallback;\n    renderTableHead?: ILuteRenderCallback;\n    renderTableRow?: ILuteRenderCallback;\n    renderTableCell?: ILuteRenderCallback;\n    renderFootnotesDef?: ILuteRenderCallback;\n    renderCodeSpan?: ILuteRenderCallback;\n    renderCodeSpanOpenMarker?: ILuteRenderCallback;\n    renderCodeSpanContent?: ILuteRenderCallback;\n    renderCodeSpanCloseMarker?: ILuteRenderCallback;\n    renderInlineMath?: ILuteRenderCallback;\n    renderInlineMathOpenMarker?: ILuteRenderCallback;\n    renderInlineMathContent?: ILuteRenderCallback;\n    renderInlineMathCloseMarker?: ILuteRenderCallback;\n    renderEmphasis?: ILuteRenderCallback;\n    renderEmAsteriskOpenMarker?: ILuteRenderCallback;\n    renderEmAsteriskCloseMarker?: ILuteRenderCallback;\n    renderEmUnderscoreOpenMarker?: ILuteRenderCallback;\n    renderEmUnderscoreCloseMarker?: ILuteRenderCallback;\n    renderStrong?: ILuteRenderCallback;\n    renderStrongA6kOpenMarker?: ILuteRenderCallback;\n    renderStrongA6kCloseMarker?: ILuteRenderCallback;\n    renderStrongU8eOpenMarker?: ILuteRenderCallback;\n    renderStrongU8eCloseMarker?: ILuteRenderCallback;\n    renderStrikethrough?: ILuteRenderCallback;\n    renderStrikethrough1OpenMarker?: ILuteRenderCallback;\n    renderStrikethrough1CloseMarker?: ILuteRenderCallback;\n    renderStrikethrough2OpenMarker?: ILuteRenderCallback;\n    renderStrikethrough2CloseMarker?: ILuteRenderCallback;\n    renderHardBreak?: ILuteRenderCallback;\n    renderSoftBreak?: ILuteRenderCallback;\n    renderInlineHTML?: ILuteRenderCallback;\n    renderLink?: ILuteRenderCallback;\n    renderOpenBracket?: ILuteRenderCallback;\n    renderCloseBracket?: ILuteRenderCallback;\n    renderOpenParen?: ILuteRenderCallback;\n    renderCloseParen?: ILuteRenderCallback;\n    renderLinkText?: ILuteRenderCallback;\n    renderLinkSpace?: ILuteRenderCallback;\n    renderLinkDest?: ILuteRenderCallback;\n    renderLinkTitle?: ILuteRenderCallback;\n    renderImage?: ILuteRenderCallback;\n    renderBang?: ILuteRenderCallback;\n    renderEmoji?: ILuteRenderCallback;\n    renderEmojiUnicode?: ILuteRenderCallback;\n    renderEmojiImg?: ILuteRenderCallback;\n    renderEmojiAlias?: ILuteRenderCallback;\n    renderToC?: ILuteRenderCallback;\n    renderFootnotesRef?: ILuteRenderCallback;\n    renderBackslash?: ILuteRenderCallback;\n    renderBackslashContent?: ILuteRenderCallback;\n}\n\ninterface ILuteOptions extends IMarkdownConfig {\n    emojis: IObject;\n    emojiSite: string;\n    headingAnchor: boolean;\n    inlineMathDigit: boolean;\n    lazyLoadImage?: string;\n}\n\ndeclare class Lute {\n    public static WalkStop: number;\n    public static WalkSkipChildren: number;\n    public static WalkContinue: number;\n    public static Version: string;\n    public static Caret: string;\n\n    public static New(): Lute;\n\n    public static EscapeHTMLStr(html: string): string;\n\n    public static GetHeadingID(node: ILuteNode): string;\n\n    public static NewNodeID(): string;\n\n    public static Sanitize(html: string): string;\n\n    private constructor();\n\n    public SetJSRenderers(options?: {\n        renderers: {\n            HTML2VditorDOM?: ILuteRender,\n            HTML2VditorIRDOM?: ILuteRender,\n            HTML2Md?: ILuteRender,\n            Md2HTML?: ILuteRender,\n            Md2VditorDOM?: ILuteRender,\n            Md2VditorIRDOM?: ILuteRender,\n            Md2VditorSVDOM?: ILuteRender,\n        },\n    }): void;\n\n    public SetChineseParagraphBeginningSpace(enable: boolean): void;\n\n    public SetHeadingID(enable: boolean): void;\n\n    public SetRenderListStyle(enable: boolean): void;\n\n    public SetLinkBase(url: string): void;\n\n    public SetVditorIR(enable: boolean): void;\n\n    public SetVditorSV(enable: boolean): void;\n\n    public SetVditorWYSIWYG(enable: boolean): void;\n\n    public SetLinkPrefix(url: string): void;\n\n    public SetMark(enable: boolean): void;\n\n    public SetGFMAutoLink(enable: boolean): void;\n\n    public SetSanitize(enable: boolean): void;\n\n    public SetHeadingAnchor(enable: boolean): void;\n\n    public SetImageLazyLoading(imagePath: string): void;\n\n    public SetInlineMathAllowDigitAfterOpenMarker(enable: boolean): void;\n\n    public SetToC(enable: boolean): void;\n\n    public SetFootnotes(enable: boolean): void;\n\n    public SetAutoSpace(enable: boolean): void;\n\n    public SetFixTermTypo(enable: boolean): void;\n\n    public SetEmojiSite(emojiSite: string): void;\n\n    public SetVditorCodeBlockPreview(enable: boolean): void;\n\n    public SetVditorMathBlockPreview(enable: boolean): void;\n\n    public PutEmojis(emojis: IObject): void;\n\n    public GetEmojis(): IObject;\n\n    public IsValidLinkDest(link: string): boolean;\n\n    // debugger md\n    public RenderEChartsJSON(text: string): string;\n\n    // md 转换为 html\n    public Md2HTML(markdown: string): string;\n\n    // 粘贴时将 html 转换为 md\n    public HTML2Md(html: string): string;\n\n    // wysiwyg 转换为 html\n    public VditorDOM2HTML(vhtml: string): string;\n\n    // wysiwyg 输入渲染\n    public SpinVditorDOM(html: string): string;\n\n    // 粘贴时将 html 转换为 wysiwyg\n    public HTML2VditorDOM(html: string): string;\n\n    // 将 wysiwyg 转换为 md\n    public VditorDOM2Md(html: string): string;\n\n    // 将 md 转换为 wysiwyg\n    public Md2VditorDOM(markdown: string): string;\n\n    // ir 输入渲染\n    public SpinVditorIRDOM(markdown: string): string;\n\n    // ir 获取 md\n    public VditorIRDOM2Md(html: string): string;\n\n    // md 转换为 ir\n    public Md2VditorIRDOM(text: string): string;\n\n    // 获取 HTML\n    public VditorIRDOM2HTML(html: string): string;\n\n    // 粘贴时将 html 转换为 sv\n    public HTML2VditorIRDOM(html: string): string;\n\n    // sv 输入渲染\n    public SpinVditorSVDOM(text: string): string;\n\n    // 粘贴是 md 转换为 sv\n    public Md2VditorSVDOM(text: string): string;\n\n    // 将markdown转化为JSON结构输出 https://github.com/88250/lute/issues/120\n    public RenderJSON(markdown: string): string;\n}\n\ndeclare const webkitAudioContext: {\n    prototype: AudioContext\n    new(contextOptions?: AudioContextOptions): AudioContext,\n};\n\ninterface ITips {\n    [index: string]: string;\n\n    alignCenter: string;\n    alignLeft: string;\n    alignRight: string;\n    alternateText: string;\n    bold: string;\n    both: string;\n    check: string;\n    close: string;\n    code: string;\n    \"code-theme\": string;\n    column: string;\n    comment: string;\n    confirm: string;\n    \"content-theme\": string;\n    copied: string;\n    copy: string;\n    \"delete-column\": string;\n    \"delete-row\": string;\n    devtools: string;\n    down: string;\n    downloadTip: string;\n    edit: string;\n    \"edit-mode\": string;\n    emoji: string;\n    export: string;\n    fileTypeError: string;\n    footnoteRef: string;\n    fullscreen: string;\n    generate: string;\n    headings: string;\n    help: string;\n    imageURL: string;\n    indent: string;\n    info: string;\n    \"inline-code\": string;\n    \"insert-after\": string;\n    \"insert-before\": string;\n    insertColumnLeft: string;\n    insertColumnRight: string;\n    insertRowAbove: string;\n    insertRowBelow: string;\n    instantRendering: string;\n    italic: string;\n    language: string;\n    line: string;\n    link: string;\n    linkRef: string;\n    list: string;\n    more: string;\n    nameEmpty: string;\n    \"ordered-list\": string;\n    outdent: string;\n    outline: string;\n    over: string;\n    performanceTip: string;\n    preview: string;\n    quote: string;\n    record: string;\n    \"record-tip\": string;\n    recording: string;\n    redo: string;\n    remove: string;\n    row: string;\n    spin: string;\n    splitView: string;\n    strike: string;\n    table: string;\n    textIsNotEmpty: string;\n    title: string;\n    tooltipText: string;\n    undo: string;\n    up: string;\n    update: string;\n    upload: string;\n    uploadError: string;\n    uploading: string;\n    wysiwyg: string;\n}\n\ninterface II18n {\n    en_US: ITips;\n    fr_FR: ITips;\n    ja_JP: ITips;\n    ko_KR: ITips;\n    ru_RU: ITips;\n    sv_SE: ITips;\n    zh_CN: ITips;\n    zh_TW: ITips;\n    pt_BR: ITips;\n}\n\ninterface IClasses {\n    preview?: string;\n}\n\ninterface IPreviewTheme {\n    current: string;\n    list?: IObject;\n    path?: string;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-upload */\ninterface IUpload {\n    /** 上传 url */\n    url?: string;\n    /** 上传文件最大 Byte */\n    max?: number;\n    /** 剪切板中包含图片地址时，使用此 url 重新上传 */\n    linkToImgUrl?: string;\n    /** 剪切板中包含图片地址时，使用此方法进行自定义 */\n    renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number];\n    /** CORS 上传验证，头为 X-Upload-Token */\n    token?: string;\n    /** 文件上传类型，同 [input accept](https://www.w3schools.com/tags/att_input_accept.asp) */\n    accept?: string;\n    /** 跨站点访问控制。默认值: false */\n    withCredentials?: boolean;\n    /** 请求头设置 */\n    headers?: IObject;\n    /** 额外请求参数 */\n    extraData?: { [key: string]: string | Blob };\n    /** 是否允许多文件上传。默认值：true */\n    multiple?: boolean;\n    /** 上传字段名。默认值：file[] */\n    fieldName?: string;\n\n    /** 每次上传前都会重新设置请求头 */\n    setHeaders?(): IObject;\n\n    /** 上传成功回调 */\n    success?(editor: HTMLPreElement, msg: string): void;\n\n    /** 上传失败回调 */\n    error?(msg: string): void;\n\n    /** 文件名安全处理。 默认值: name => name.replace(/\\W/g, '') */\n    filename?(name: string): string;\n\n    /** 校验，成功时返回 true 否则返回错误信息 */\n    validate?(files: File[]): string | boolean;\n\n    /** 自定义上传，当发生错误时返回错误信息 */\n    handler?(files: File[]): string | null | Promise<string> | Promise<null>;\n\n    /** 对服务端返回的数据进行转换，以满足内置的数据结构 */\n    format?(files: File[], responseText: string): string;\n\n    /** 对服务端返回的数据进行转换(对应linkToImgUrl)，以满足内置的数据结构 */\n    linkToImgFormat?(responseText: string): string;\n\n    /** 将上传的文件处理后再返回  */\n    file?(files: File[]): File[] | Promise<File[]>;\n\n    /** 图片地址上传后的回调  */\n    linkToImgCallback?(responseText: string): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-toolbar */\ninterface IMenuItem {\n    /** 唯一标示 */\n    name: string;\n    /** svg 图标 HTML */\n    icon?: string;\n    /** 元素的样式名称 */\n    className?: string;\n    /** 提示 */\n    tip?: string;\n    /** 快捷键，支持⌘/ctrl-key 或 ⌘/ctrl-⇧/shift-key 格式的配置，不支持 wysiwyg 模式 */\n    hotkey?: string;\n    /** 插入编辑器中的后缀 */\n    suffix?: string;\n    /** 插入编辑器中的前缀 */\n    prefix?: string;\n    /** 提示位置：ne, nw */\n    tipPosition?: string;\n    /** 子菜单 */\n    toolbar?: Array<string | IMenuItem>;\n    /** 菜单层级，最大为 3，内部使用 */\n    level?: number;\n\n    /** 自定义按钮点击时触发的事件 */\n    click?(event: Event, vditor: IVditor): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-hljs */\ninterface IHljs {\n    /** 代码块没有指定语言时，使用此值。默认值: \"\" */\n    defaultLang?: string;\n    /** 是否启用行号。默认值: false */\n    lineNumber?: boolean;\n    /** 代码风格，可选值参见 [Chroma](https://xyproto.github.io/splash/docs/longer/all.html)。 默认值: 'github' */\n    style?: string;\n    /** 是否启用代码高亮。默认值: true */\n    enable?: boolean;\n    /** 自定义指定语言: CODE_LANGUAGES */\n    langs?: string[];\n\n    /** 渲染右上角菜单按钮 */\n    renderMenu?(element: HTMLElement, menuElement: HTMLElement): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-math */\ninterface IMath {\n    /** 内联数学公式起始 $ 后是否允许数字。默认值: false */\n    inlineDigit?: boolean;\n    /** 使用 MathJax 渲染时传入的宏定义。默认值: {} */\n    macros?: object;\n    /** 数学公式渲染引擎。默认值: 'KaTeX' */\n    engine?: \"KaTeX\" | \"MathJax\";\n    /** 数学公式渲染引擎为 MathJax 时传入的参数 */\n    mathJaxOptions?: any;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview-markdown */\ninterface IMarkdownConfig {\n    /** 自动空格。默认值: false */\n    autoSpace?: boolean;\n    /** 段落开头是否空两格。默认值: false */\n    paragraphBeginningSpace?: boolean;\n    /** 自动矫正术语。默认值: false */\n    fixTermTypo?: boolean;\n    /** 插入目录。默认值: false */\n    toc?: boolean;\n    /** 脚注。默认值: true */\n    footnotes?: boolean;\n    /** wysiwyg & ir 模式代码块是否渲染。默认值: true */\n    codeBlockPreview?: boolean;\n    /** wysiwyg & ir 模式数学公式块是否渲染。默认值: true */\n    mathBlockPreview?: boolean;\n    /** 是否启用过滤 XSS。默认值: true */\n    sanitize?: boolean;\n    /** 链接相对路径前缀。默认值：'' */\n    linkBase?: string;\n    /** 链接强制前缀。默认值：'' */\n    linkPrefix?: string;\n    /** 为列表添加标记，以便[自定义列表样式](https://github.com/Vanessa219/vditor/issues/390) 默认值：false */\n    listStyle?: boolean;\n    /** 支持 mark 标记 */\n    mark?: boolean;\n    /** 支持自动链接 */\n    gfmAutoLink?: boolean;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-preview */\ninterface IPreview {\n    /** 预览 debounce 毫秒间隔。默认值: 1000 */\n    delay?: number;\n    /** 预览区域最大宽度。默认值: 768 */\n    maxWidth?: number;\n    /** 显示模式。默认值: 'both' */\n    mode?: \"both\" | \"editor\";\n    /** md 解析请求 */\n    url?: string;\n    /** @link https://ld246.com/article/1549638745630#options-preview-hljs */\n    hljs?: IHljs;\n    /** @link https://ld246.com/article/1549638745630#options-preview-math */\n    math?: IMath;\n    /** @link https://ld246.com/article/1549638745630#options-preview-markdown */\n    markdown?: IMarkdownConfig;\n    /** @link https://ld246.com/article/1549638745630#options-preview-theme */\n    theme?: IPreviewTheme;\n    /** @link https://ld246.com/article/1549638745630#options-preview-actions  */\n    actions?: Array<IPreviewAction | IPreviewActionCustom>;\n    render?: IPreviewRender\n\n    /** 预览回调 */\n    parse?(element: HTMLElement): void;\n\n    /** 渲染之前回调 */\n    transform?(html: string): string;\n}\n\ninterface IPreviewRender {\n    media?: {\n        enable?: boolean;\n    }\n}\n\ntype IPreviewAction = \"desktop\" | \"tablet\" | \"mobile\" | \"mp-wechat\" | \"zhihu\";\n\ninterface IPreviewActionCustom {\n    /** 键名 */\n    key: string;\n    /** 按钮文本 */\n    text: string;\n    /** 按钮 className 值 */\n    className?: string;\n    /** 按钮提示信息 */\n    tooltip?: string;\n    /** 点击回调 */\n    click: (key: string) => void;\n}\n\ninterface IPreviewOptions {\n    mode: \"dark\" | \"light\";\n    customEmoji?: IObject;\n    lang?: (keyof II18n);\n    i18n?: ITips;\n    lazyLoadImage?: string;\n    emojiPath?: string;\n    hljs?: IHljs;\n    speech?: {\n        enable?: boolean,\n    };\n    anchor?: number; // 0: no render, 1: render left, 2: render right\n    math?: IMath;\n    cdn?: string;\n    markdown?: IMarkdownConfig;\n    renderers?: ILuteRender;\n    theme?: IPreviewTheme;\n    icon?: \"ant\" | \"material\" | undefined;\n    render?: IPreviewRender\n\n    transform?(html: string): string;\n\n    after?(): void;\n}\n\ninterface IHintData {\n    html: string;\n    value: string;\n}\n\ninterface IHintExtend {\n    key: string;\n\n    hint?(value: string): IHintData[] | Promise<IHintData[]>;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-hint */\ninterface IHint {\n    /** 提示内容是否进行 md 解析 */\n    parse?: boolean;\n    /** 常用表情提示 HTML */\n    emojiTail?: string;\n    /** 提示 debounce 毫秒间隔。默认值: 200 */\n    delay?: number;\n    /** 默认表情，可从 [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go#L32) 中选取，也可自定义 */\n    emoji?: IObject;\n    /** 表情图片地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}/dist/images/emoji' */\n    emojiPath?: string;\n    extend?: IHintExtend[];\n}\n\n/** @link https://ld246.com/article/1549638745630#options-toolbarConfig */\ninterface IToolbarConfig {\n    /** 是否隐藏工具栏。默认值: false */\n    hide?: boolean;\n    /** 是否固定工具栏。默认值: false */\n    pin?: boolean;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-comment */\ninterface IComment {\n    /** 是否启用评论模式。默认值: false */\n    enable: boolean;\n\n    /** 添加评论回调 */\n    add?(id: string, text: string, commentsData: ICommentsData[]): void;\n\n    /** 删除评论回调 */\n    remove?(ids: string[]): void;\n\n    /** 滚动回调 */\n    scroll?(top: number): void;\n\n    /** 文档修改时，适配评论高度 */\n    adjustTop?(commentsData: ICommentsData[]): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options-outline */\ninterface IOutline {\n    /** 初始化是否展现大纲。默认值: false */\n    enable: boolean;\n    /** 大纲位置：'left', 'right'。默认值: 'left' */\n    position: \"left\" | \"right\";\n}\n\ninterface IResize {\n    position?: string;\n    enable?: boolean;\n\n    after?(height: number): void;\n}\n\n/** @link https://ld246.com/article/1549638745630#options */\ninterface IOptions {\n    /** RTL */\n    rtl?: boolean;\n    /** 历史记录间隔 */\n    undoDelay?: number;\n    /** 内部调试时使用 */\n    _lutePath?: string;\n    /** 编辑器初始化值。默认值: '' */\n    value?: string;\n    /** 是否显示日志。默认值: false */\n    debugger?: boolean;\n    /** 是否启用打字机模式。默认值: false */\n    typewriterMode?: boolean;\n    /** 编辑器总高度。默认值: 'auto' */\n    height?: number | string;\n    /** 编辑器最小高度 */\n    minHeight?: number;\n    /** 编辑器总宽度，支持 %。默认值: 'auto' */\n    width?: number | string;\n    /** 输入区域为空时的提示。默认值: '' */\n    placeholder?: string;\n    /** 多语言。默认值: 'zh_CN' */\n    lang?: (keyof II18n);\n    /** 国际化, 自定义语言。优先级低于lang */\n    i18n?: ITips;\n    /** @link https://ld246.com/article/1549638745630#options-fullscreen */\n    fullscreen?: {\n        /** 全屏层级。默认值: 90 */\n        index: number;\n    };\n    /** @link https://ld246.com/article/1549638745630#options-toolbar */\n    toolbar?: Array<string | IMenuItem>;\n    /** @link https://ld246.com/article/1549638745630#options-resize */\n    resize?: IResize;\n    /** @link https://ld246.com/article/1549638745630#options-counter */\n    counter?: {\n        /** 是否启用计数器。默认值: false */\n        enable: boolean;\n        /** 允许输入的最大值 */\n        max?: number;\n        /** 统计类型。默认值: 'markdown' */\n        type?: \"markdown\" | \"text\";\n        /** 字数统计回调。 */\n        after?(length: number, counter: {\n            /** 是否启用计数器。默认值: false */\n            enable: boolean;\n            /** 允许输入的最大值 */\n            max?: number;\n            /** 统计类型。默认值: 'markdown' */\n            type?: \"markdown\" | \"text\"\n        }): void\n    };\n    /** @link https://ld246.com/article/1549638745630#options-cache */\n    cache?: {\n        /** 缓存 key，第一个参数为元素且启用缓存时必填 */\n        id?: string;\n        /** 是否使用 localStorage 进行缓存。默认值: true */\n        enable?: boolean;\n        /** 缓存后的回调 */\n        after?(markdown: string): void;\n    };\n    /** 编辑模式。默认值: 'wysiwyg'\n     *\n     * wysiwyg: 所见即所得\n     *\n     * ir: 即时渲染\n     *\n     * sv: 分屏预览\n     */\n    mode?: \"wysiwyg\" | \"sv\" | \"ir\";\n    /** @link https://ld246.com/article/1549638745630#options-preview */\n    preview?: IPreview;\n    /** @link https://ld246.com/article/1549638745630#options-link */\n    link?: {\n        /** 是否打开链接地址。默认值: true */\n        isOpen?: boolean;\n        /** 点击链接事件 */\n        click?: (bom: Element) => void;\n    },\n    /** @link https://ld246.com/article/1549638745630#options-image */\n    image?: {\n        /** 是否预览图片。默认值: true */\n        isPreview?: boolean;\n        /** 图片预览处理 */\n        preview?: (bom: Element) => void;\n    },\n    /** @link https://ld246.com/article/1549638745630#options-hint */\n    hint?: IHint;\n    /** @link https://ld246.com/article/1549638745630#options-toolbarConfig */\n    toolbarConfig?: IToolbarConfig;\n    /** 评论\n     * @link https://ld246.com/article/1549638745630#options-comment\n     */\n    comment?: IComment;\n    /** 主题。默认值: 'classic' */\n    theme?: \"classic\" | \"dark\";\n    /** 图标。默认值: 'ant' */\n    icon?: \"ant\" | \"material\";\n    /** @link https://ld246.com/article/1549638745630#options-upload */\n    upload?: IUpload;\n    /** @link https://ld246.com/article/1549638745630#options-classes */\n    classes?: IClasses;\n    /** 配置自建 CDN 地址。默认值: 'https://unpkg.com/vditor@${VDITOR_VERSION}' */\n    cdn?: string;\n    /** tab 键操作字符串，支持 \\t 及任意字符串 */\n    tab?: string;\n    /** @link https://ld246.com/article/1549638745630#options-outline */\n    outline?: IOutline;\n    customRenders?: {\n        language: string,\n        render: (element: HTMLElement, vditor: IVditor) => void\n    }[],\n\n    /** 编辑器异步渲染完成后的回调方法 */\n    after?(): void;\n\n    /** 输入后触发 */\n    input?(value: string): void;\n\n    /** 聚焦后触发  */\n    focus?(value: string): void;\n\n    /** 失焦后触发 */\n    blur?(value: string): void;\n\n    /** 按下键盘触发 */\n    keydown?(event: KeyboardEvent): void;\n\n    /** `esc` 按下后触发 */\n    esc?(value: string): void;\n\n    /** `⌘/ctrl+enter` 按下后触发 */\n    ctrlEnter?(value: string): void;\n\n    /** 编辑器中选中文字后触发 */\n    select?(value: string): void;\n}\n\ninterface IEChart {\n    setOption(option: any): void;\n\n    resize(): void;\n}\n\ninterface IVditor {\n    element: HTMLElement;\n    options: IOptions;\n    originalInnerHTML: string;\n    lute: Lute;\n    currentMode: \"sv\" | \"wysiwyg\" | \"ir\";\n    devtools?: {\n        element: HTMLDivElement,\n        renderEchart(vditor: IVditor): void,\n    };\n    outline: {\n        element: HTMLElement,\n        render(vditor: IVditor): string,\n        toggle(vditor: IVditor, show?: boolean, focus?: boolean): void,\n    };\n    toolbar?: {\n        elements?: { [key: string]: HTMLElement },\n        element?: HTMLElement,\n        updateConfig(vditor: IVditor, options: IToolbarConfig): void,\n    };\n    preview?: {\n        element: HTMLElement,\n        previewElement: HTMLElement,\n        render(vditor: IVditor, value?: string): void,\n    };\n    counter?: {\n        element: HTMLElement\n        render(vditor: IVditor, mdText?: string): void,\n    };\n    resize?: {\n        element: HTMLElement,\n    };\n    hint: {\n        timeId: number\n        element: HTMLDivElement\n        recentLanguage: string\n        fillEmoji(element: HTMLElement, vditor: IVditor): void\n        render(vditor: IVditor): void,\n        genHTML(data: IHintData[], key: string, vditor: IVditor): void\n        select(event: KeyboardEvent, vditor: IVditor): boolean,\n    };\n    tip: {\n        element: HTMLElement\n        show(text: string, time?: number): void\n        hide(): void,\n    };\n    upload?: {\n        element: HTMLElement\n        isUploading: boolean\n        range: Range,\n    };\n    undo?: {\n        clearStack(vditor: IVditor): void,\n        redo(vditor: IVditor): void\n        undo(vditor: IVditor): void\n        addToUndoStack(vditor: IVditor): void\n        recordFirstPosition(vditor: IVditor, event: KeyboardEvent): void,\n        resetIcon(vditor: IVditor): void,\n    };\n    wysiwyg?: {\n        range: Range,\n        element: HTMLPreElement,\n        selectPopover: HTMLDivElement,\n        popover: HTMLDivElement,\n        afterRenderTimeoutId: number,\n        hlToolbarTimeoutId: number,\n        preventInput: boolean,\n        composingLock: boolean,\n        commentIds: string[]\n        getComments(vditor: IVditor, getData?: boolean): ICommentsData[],\n        triggerRemoveComment(vditor: IVditor): void,\n        showComment(): void,\n        hideComment(): void,\n        unbindListener(): void,\n    };\n    ir?: {\n        range: Range,\n        element: HTMLPreElement,\n        composingLock: boolean,\n        preventInput: boolean,\n        processTimeoutId: number,\n        hlToolbarTimeoutId: number,\n    };\n    sv?: {\n        range: Range,\n        element: HTMLPreElement,\n        processTimeoutId: number,\n        hlToolbarTimeoutId: number,\n        composingLock: boolean,\n        preventInput: boolean,\n    };\n}\n\ninterface ICommentsData {\n    id: string;\n    top: number;\n}\n"
  },
  {
    "path": "src/frontend/platform/set_proxy.sh",
    "content": "#! /bin/bash\n# Edit package.json to set proxy\nbackend_url=$BACKEND_URL\necho \"Setting proxy to $backend_url\"\n# Load package.json file and edit proxy\npackagejson=$(cat package.json)\n\npackagejson=$(echo \"$packagejson\" | jq \".proxy = \\\"$backend_url\\\"\")\n\necho \"$packagejson\" > package.json"
  },
  {
    "path": "src/frontend/platform/src/App.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.App {\n\ttext-align: center;\n}\n\n.App-logo {\n\theight: 40vmin;\n\tpointer-events: none;\n}\n\n::selection {\n\tcolor: #fff;\n\t/* background-color: hsl(var(--primary)); */\n\tbackground-color: #111;\n}\n\n/* 整个滚动条（包括轨道） */\n::-webkit-scrollbar {\n\twidth: 8px;\n\theight: 8px;\n}\n\n/* 滚动条滑块 */\n::-webkit-scrollbar-thumb {\n\tbackground-color: hsl(var(--border));\n\t;\n\tborder-radius: 4px;\n}\n\n/* 滚动条轨道 */\n::-webkit-scrollbar-track {\n\tbackground: hsl(var(--background));\n\tborder-radius: 8px;\n}\n\n.dark ::-webkit-scrollbar-track {\n\tbackground: #111;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n\t.App-logo {\n\t\tanimation: App-logo-spin infinite 20s linear;\n\t}\n}\n\n.App-header {\n\tbackground-color: #282c34;\n\tmin-height: 100vh;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-size: calc(10px + 2vmin);\n\tcolor: white;\n}\n\n.App-link {\n\tcolor: #61dafb;\n}\n\n.custom-card-btn {\n\topacity: 0;\n}\n\n.custom-card:hover .custom-card-btn,\n.custom-card:hover .card-component-delete-icon {\n\topacity: 1;\n}\n\n.l2Param .l2Param-edit {\n\topacity: 0;\n}\n\n.l2Param:hover .l2Param-edit {\n\topacity: 1;\n}\n\n.stroke-connection.selected path {\n\tstroke-width: 2;\n\tstroke-dasharray: 0;\n}\n\n.animate-cursor {\n\tanimation: pulse2 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes pulse2 {\n\n\t0%,\n\t20% {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n\n\t100% {\n\t\topacity: 0;\n\t\ttransform: scale(.6);\n\t}\n\n\t/* 0%, 20%, 80%, 100% {\n\t  opacity: 1;\n\t  transform: scale(1);\n\t}\n\t50% {\n\t  opacity: 0;\n\t  transform: scale(1.6);\n\t} */\n}\n\n.anwser-souce span {\n\tcolor: #347ef9;\n\tcursor: pointer;\n}\n\n@keyframes App-logo-spin {\n\tfrom {\n\t\ttransform: rotate(0deg);\n\t}\n\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n@font-face {\n\tfont-family: AlibabaPuHuiTi-3-55-Regular;\n\t/* src: url(\"assets/text-security-disc.woff\") format(\"woff\"); */\n\tsrc: url(\"assets/AlibabaPuHuiTi-3-55-Regular.otf\") format(\"opentype\");\n}\n\n:root {\n\t--font-sans: 'AlibabaPuHuiTi-3-55-Regular'\n}\n\n/* pdf-text */\n.textLayer :is(span, br) {\n\tcolor: transparent;\n\tposition: absolute;\n\twhite-space: pre;\n\tcursor: text;\n\ttransform-origin: 0% 0%;\n}\n\n.textLayer span.markedContent {\n\ttop: 0;\n\theight: 0;\n}\n\n.textLayer ::selection {\n\tbackground: #357ef9;\n}\n\n.textLayer br::selection {\n\tbackground: transparent;\n}\n\n.highlightArea {\n\tposition: absolute;\n}\n\n.flag.active {\n\tbackground: linear-gradient(to right, rgba(53, 126, 249, .60), transparent);\n}\n\n.flag:after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 23px;\n\theight: 2px;\n\tright: -3px;\n\ttop: 7px;\n\tbackground: rgba(53, 126, 249, .60);\n\ttransform: rotate(-50deg) translate(0, 0);\n}\n\n.flag::before {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 23px;\n\theight: 2px;\n\tright: -3px;\n\ttop: 25px;\n\tbackground: rgba(53, 126, 249, .60);\n\ttransform: rotate(50deg) translate(0, 0);\n}\n\n.chat .chat-image {\n\talign-self: start;\n}\n\n.chat-bubble:before {\n\tdisplay: none;\n}\n\n.build-tab {}\n\n.build-tab a.active {\n\tbackground: #fff;\n\tbox-shadow: 1px 1px 2px 0 #e9e9e9\n\t\t/* background: #F4F5F8;\n\tpadding: 10px 40px; */\n}\n\n.build-tab a.active>svg {\n\tcolor: hsl(var(--primary)) !important;\n}\n\n.build-tab a.active>span {\n\tcolor: hsl(var(--primary)) !important;\n}\n\n:is(.dark .build-tab a.active>svg) {\n\tcolor: #fff !important;\n}\n\n:is(.dark .build-tab a.active>span) {\n\tcolor: #fff !important;\n}\n\n.bs-chat-bg {\n\twidth: 100%;\n\tbackground-position: 0 100%;\n\tbackground-repeat: repeat-x;\n\tbackground-size: 10px 432px;\n}\n\n/* report情况隐藏离开按钮 */\n.report-hidden .leave {\n\tdisplay: none !important;\n}\n\n/* react-flow */\n.dark .react-flow__controls-button {\n\tbackground: #111;\n}\n\n.bs-table-td {\n\tbackground-color: #FBFBFB;\n}\n\n.dark .bs-table-td {\n\tbackground-color: #171717;\n}\n\n.bs-table-row:nth-child(odd) .bs-table-td {\n\tbackground-color: #f4f5f8;\n}\n\n.dark .bs-table-row:nth-child(odd) .bs-table-td {\n\tbackground-color: #111;\n}\n\n.bs-table-row:hover .bs-table-td {\n\tbackground-color: #ebf0ff;\n}\n\n.dark .bs-table-row:hover .bs-table-td {\n\tbackground-color: #2a2b2e;\n}\n\n/* vditor编辑器 */\n.vditor-toolbar.vditor-toolbar--hide {\n\tdisplay: none !important;\n}\n\n.vditor-reset table td,\n.vditor-reset table th {\n\tword-wrap: break-word !important;\n\twhite-space: normal !important;\n\tfont-size: 12px;\n\tpadding: 2px 4px !important;\n\tword-break: break-all !important;\n}\n\n.file-vditor .vditor-reset {\n\tfont-size: 14px;\n\tcolor: #6b7280;\n\tpadding: 0 !important;\n}\n\n.file-vditor .vditor-content {\n\tmin-height: 20px;\n}\n\n/* 隐藏公式解析红字 */\n.vditor-reset--error {\n\topacity: 0;\n}\n\n.linsight-vditor .vditor-reset {\n\tborder-radius: 8px;\n\tfont-size: 16px;\n\tpadding: 0 20px 160px 14px !important;\n\tscrollbar-color: transparent transparent;\n}\n\n.linsight-vditor .vditor-toolbar {\n\tdisplay: none;\n}\n\n.linsight-vditor .vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\n\topacity: 0.8;\n}\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h1:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h2:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h3:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h4:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h5:before,\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h6:before,\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\n.vditor-wysiwyg .vditor-toc:before {\n  margin-left: -20px;\n  padding-right: 0;\n  font-size: 12px;\n  position: relative;\n  left: 6px;\n}\n.linsi-span {\n\tbackground: #E9F1FF;\n\tcolor: #2A3F73;\n\tfont-size: 14px;\n\tpadding: 1px 8px;\n\tborder-radius: 4px;\n}\n\n.linsi-error {\n\tbackground: #ffece9;\n\tcolor: #a13434;\n\tfont-size: 14px;\n\tpadding: 1px 8px;\n\tborder-radius: 4px;\n}\n\n/* .react-flow.theme-attribution {\n\tanimation: scrollBackground 10s linear infinite;\n  }\n\n  @keyframes scrollBackground {\n\tfrom {\n\t  background-position: 0 0;\n\t}\n\tto {\n\t  background-position: 100% 100%;\n\t}\n  }\n */\n.react-flow__panel.react-flow__attribution {\n\tdisplay: none !important;\n}\n\n.vditor-content ol>li[data-marker]:before {\n\tcontent: attr(data-marker);\n\tmargin-right: 5px;\n\tfont-weight: bold;\n}\n\n.hover-reveal .hover-reveal-child {\n\topacity: 0;\n\ttransition: opacity .2s ease-in-out;\n}\n\n.hover-reveal:hover .hover-reveal-child {\n\topacity: 100;\n}\n\n\n.flow-bg-logo {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100px;\n\t/* 根据需要调整高度 */\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: #F4F5F8 !important;\n}\n\n.flow-bg-logo::before {\n\tcontent: \"BISHENG\";\n\t/* 设置文字内容 */\n\tfont-size: 180px;\n\tfont-weight: bold;\n\tcolor: rgba(232, 235, 242, 0.7);\n\t/* color: rgba(0,102,204,0.7); */\n\ttext-shadow: 1px 3px 6px #fff, 0 0 0 #000, 1px 3px 6px #fff;\n\tdisplay: block;\n\ttext-align: center;\n\topacity: 0.2;\n}\n\n\n\n/* react-markdown 表格样式 */\n.react-markdown table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n}\n\n.react-markdown th,\n.react-markdown td {\n\tborder: 1px solid #dfe2e5;\n\tpadding: 2px 4px;\n}\n\n.react-markdown th {\n\tbackground-color: #fafbfc;\n\ttext-align: left;\n}\n\n.react-markdown tr:nth-child(even) {\n\tbackground-color: #f9f9f9;\n}\n\n.react-markdown tr:hover {\n\tbackground-color: #f1f1f1;\n}"
  },
  {
    "path": "src/frontend/platform/src/App.tsx",
    "content": "import cloneDeep from \"lodash-es/cloneDeep\";\nimport uniqueId from \"lodash-es/uniqueId\";\nimport { Suspense, useContext, useEffect, useMemo, useState } from \"react\";\nimport { RouterProvider } from \"react-router-dom\";\nimport \"./App.css\";\nimport \"./style/vditor.css\"\n\nimport i18next from \"i18next\";\nimport { useTranslation } from \"react-i18next\";\nimport ErrorAlert from \"./alerts/error\";\nimport NoticeAlert from \"./alerts/notice\";\nimport SuccessAlert from \"./alerts/success\";\nimport { Toaster } from \"./components/bs-ui/toast\";\nimport { alertContext } from \"./contexts/alertContext\";\nimport { locationContext } from \"./contexts/locationContext\";\nimport { userContext } from \"./contexts/userContext\";\nimport { getAdminRouter, getPrivateRouter, publicRouter } from \"./routes\";\nimport { LoadingIcon } from \"./components/bs-icons/loading\";\nimport { useToast } from \"./components/bs-ui/toast/use-toast\";\n\nexport default function App() {\n  let { setCurrent, setShowSideBar, setIsStackedOpen } = useContext(locationContext);\n  // let location = useLocation();\n  useEffect(() => {\n    setCurrent(location.pathname.replace(/\\/$/g, \"\").split(\"/\"));\n    setShowSideBar(true);\n    setIsStackedOpen(true);\n  }, [setCurrent, setIsStackedOpen, setShowSideBar]);\n  const {\n    errorData,\n    errorOpen,\n    setErrorOpen,\n    noticeData,\n    noticeOpen,\n    setNoticeOpen,\n    successData,\n    successOpen,\n    setErrorData,\n    setSuccessOpen,\n  } = useContext(alertContext);\n\n  // Initialize state variable for the list of alerts\n  const [alertsList, setAlertsList] = useState<\n    Array<{\n      type: string;\n      data: { title: string; list?: Array<string>; link?: string };\n      id: string;\n    }>\n  >([]);\n\n  // Use effect hook to update alertsList when a new alert is added\n  useEffect(() => {\n    // If there is an error alert open with data, add it to the alertsList\n    if (errorOpen && errorData) {\n      if (\n        alertsList.length > 0 &&\n        JSON.stringify(alertsList[alertsList.length - 1].data) ===\n        JSON.stringify(errorData)\n      ) {\n        return;\n      }\n      setErrorOpen(false);\n      setAlertsList((old) => {\n        let newAlertsList = [\n          ...old,\n          { type: \"error\", data: cloneDeep(errorData), id: uniqueId() },\n        ];\n        return newAlertsList;\n      });\n    }\n    // If there is a notice alert open with data, add it to the alertsList\n    else if (noticeOpen && noticeData) {\n      if (\n        alertsList.length > 0 &&\n        JSON.stringify(alertsList[alertsList.length - 1].data) ===\n        JSON.stringify(noticeData)\n      ) {\n        return;\n      }\n      setNoticeOpen(false);\n      setAlertsList((old) => {\n        let newAlertsList = [\n          ...old,\n          { type: \"notice\", data: cloneDeep(noticeData), id: uniqueId() },\n        ];\n        return newAlertsList;\n      });\n    }\n    // If there is a success alert open with data, add it to the alertsList\n    else if (successOpen && successData) {\n      if (\n        alertsList.length > 0 &&\n        JSON.stringify(alertsList[alertsList.length - 1].data) ===\n        JSON.stringify(successData)\n      ) {\n        return;\n      }\n      setSuccessOpen(false);\n      setAlertsList((old) => {\n        let newAlertsList = [\n          ...old,\n          { type: \"success\", data: cloneDeep(successData), id: uniqueId() },\n        ];\n        return newAlertsList;\n      });\n    }\n  }, [\n    errorData,\n    errorOpen,\n    noticeData,\n    noticeOpen,\n    setErrorOpen,\n    setNoticeOpen,\n    setSuccessOpen,\n    successData,\n    successOpen,\n  ]);\n\n\n  /**\n   * 暴露弹窗全局使用\n   **/\n  useEffect(() => {\n    window.errorAlerts = (errorList: string[]) => {\n      setAlertsList((old) => {\n        let newAlertsList = [\n          ...old,\n          { type: \"error\", data: { title: '', list: errorList }, id: uniqueId() },\n        ];\n        return newAlertsList;\n      })\n    }\n  }, [])\n\n  const removeAlert = (id: string) => {\n    setAlertsList((prevAlertsList) =>\n      prevAlertsList.filter((alert) => alert.id !== id)\n    );\n  };\n\n  const { user, setUser } = useContext(userContext);\n\n  // 退出\n  useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.ctrlKey && event.keyCode === 81) {\n        setUser(null)\n        localStorage.setItem('UUR_INFO', '')\n      }\n    };\n    document.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, []);\n\n  // i18n title\n  const { t } = useTranslation()\n\n  // init language\n  useEffect(() => {\n    const lang = user?.user_id ? localStorage.getItem('i18nextLng') : null\n    if (lang) {\n      i18next.changeLanguage(lang === 'zh' ? 'zh-Hans' : lang)\n    }\n  }, [user])\n\n  // 免登录列表\n  const noAuthPages = ['chat', 'resouce']\n  const path = location.pathname.replace(__APP_ENV__.BASE_URL, '').split('/')?.[1] || ''\n\n  // 动态路由根据权限\n  const router = useMemo(() => {\n    // return getAdminRouter()\n    if (user && ['admin', 'group_admin'].includes(user.role)) return getAdminRouter()\n    return user?.user_id ? getPrivateRouter(user.web_menu) : null\n  }, [user])\n\n  // url error toast\n  const { toast } = useToast()\n  useEffect(() => {\n    if (window.url_error) {\n      toast({ description: t(`errors.${window.url_error}`), variant: 'error' });\n      delete window.url_error\n    }\n  }, [])\n\n  return (\n    //need parent component with width and height\n    <div className=\"flex h-full flex-col\">\n      {(user?.user_id || noAuthPages.includes(path)) && router ?\n        <Suspense fallback={\n          <div className='absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared'>\n            <LoadingIcon className=\"w-48 text-primary\" />\n          </div>\n        }>\n          <RouterProvider router={router} />\n        </Suspense>\n        : user ? <div className='absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared'>\n          <LoadingIcon className=\"w-48 text-primary\" />\n        </div>\n          : <Suspense fallback={\n            <div className='absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared'>\n              <LoadingIcon className=\"w-48 text-primary\" />\n            </div>\n          }>\n            <RouterProvider router={publicRouter} />\n          </Suspense>}\n      <div></div>\n      <div className=\"app-div\" style={{ zIndex: 1000 }}>\n        {alertsList.map((alert) => (\n          <div key={alert.id}>\n            {alert.type === \"error\" ? (\n              <ErrorAlert\n                key={alert.id}\n                title={alert.data.title}\n                list={alert.data.list}\n                id={alert.id}\n                removeAlert={removeAlert}\n              />\n            ) : alert.type === \"notice\" ? (\n              <NoticeAlert\n                key={alert.id}\n                title={alert.data.title}\n                link={alert.data.link}\n                id={alert.id}\n                removeAlert={removeAlert}\n              />\n            ) : (\n              <SuccessAlert\n                key={alert.id}\n                title={alert.data.title}\n                id={alert.id}\n                removeAlert={removeAlert}\n              />\n            )}\n          </div>\n        ))}\n      </div>\n      {/* 新弹窗 */}\n      <Toaster></Toaster>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx",
    "content": "import KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport ModelSelect from \"@/pages/BuildPage/assistant/editAssistant/ModelSelect\";\nimport CollectionNameComponent from \"@/pages/BuildPage/skills/editSkill/CollectionNameComponent\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { Info } from \"lucide-react\";\nimport React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { Handle, Position, useUpdateNodeInternals } from \"@xyflow/react\";\nimport ShadTooltip from \"../../../../components/ShadTooltipComponent\";\nimport VariablesComponent from \"../../../../components/VariablesComponent\";\nimport CodeAreaComponent from \"../../../../components/codeAreaComponent\";\nimport DictComponent from \"../../../../components/dictComponent\";\nimport Dropdown from \"../../../../components/dropdownComponent\";\nimport FloatComponent from \"../../../../components/floatComponent\";\nimport InputComponent from \"../../../../components/inputComponent\";\nimport InputFileComponent from \"../../../../components/inputFileComponent\";\nimport InputListComponent from \"../../../../components/inputListComponent\";\nimport IntComponent from \"../../../../components/intComponent\";\nimport KeypairListComponent from \"../../../../components/keypairListComponent\";\nimport PromptAreaComponent from \"../../../../components/promptComponent\";\nimport TextAreaComponent from \"../../../../components/textAreaComponent\";\nimport ToggleShadComponent from \"../../../../components/toggleShadComponent\";\nimport { PopUpContext } from \"../../../../contexts/popUpContext\";\nimport { TabsContext } from \"../../../../contexts/tabsContext\";\nimport { typesContext } from \"../../../../contexts/typesContext\";\nimport { reloadCustom } from \"../../../../controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../../controllers/request\";\nimport { ParameterComponentType } from \"../../../../types/components\";\nimport { cleanEdges, convertObjToArray, convertValuesToNumbers, hasDuplicateKeys } from \"../../../../util/reactflowUtils\";\nimport {\n  classNames,\n  getNodeNames,\n  groupByFamily,\n  isValidConnection,\n  nodeColors,\n  nodeIconsLucide\n} from \"../../../../utils\";\n\nexport default function ParameterComponent({\n  left,\n  id,\n  data,\n  tooltipTitle,\n  title,\n  color,\n  type,\n  name = \"\",\n  required = false,\n  optionalHandle = null,\n  info = \"\",\n  isGroup = false,\n  onChange\n}: ParameterComponentType) {\n  // console.log('data, id :>> ', name, optionalHandle);\n  const { id: flowId } = useParams();\n\n  const ref = useRef(null);\n  const refHtml = useRef(null);\n  const refNumberComponents = useRef(0);\n  const infoHtml = useRef(null);\n  const updateNodeInternals = useUpdateNodeInternals();\n  const [position, setPosition] = useState(0);\n  const { closePopUp } = useContext(PopUpContext);\n  const { setTabsState, flow, version } = useContext(TabsContext);\n\n  const groupedEdge = useRef(null); // 用yu过滤菜单的数据\n\n  useEffect(() => {\n    if (ref.current && ref.current.offsetTop && ref.current.clientHeight) {\n      setPosition(ref.current.offsetTop + ref.current.clientHeight / 2);\n      updateNodeInternals(data.id);\n    }\n  }, [data.id, ref, ref.current, ref.current?.offsetTop, updateNodeInternals]);\n\n  useEffect(() => {\n    updateNodeInternals(data.id);\n  }, [data.id, position, updateNodeInternals]);\n\n  useEffect(() => { }, [closePopUp, data.node.template]);\n\n  const { reactFlowInstance } = useContext(typesContext);\n  const disabled = useMemo(() => {\n    let dis = reactFlowInstance?.getEdges().some((e) => e.targetHandle === id) ?? false;\n    // 特殊处理含有知识库组件的 disabled\n    if (['index_name', 'collection_name'].includes(name)\n      && reactFlowInstance?.getEdges().some((e) => e.targetHandle.indexOf('documents') !== -1\n        && e.targetHandle.indexOf(data.id) !== -1)) {\n      dis = true\n    }\n    return dis\n  }, [id, data, reactFlowInstance])\n  // milvus 组件，知识库不为空是 embbeding取消必填限制\n  useEffect(() => {\n    const { embedding, index_name, collection_name, connection_args } = data.node.template\n    if ((index_name || collection_name) && embedding) {\n      const hidden = disabled ? false : !!(collection_name || index_name).value\n      data.node.template.embedding.required = !hidden\n      data.node.template.embedding.show = !hidden\n      if (hidden && connection_args) data.node.template.connection_args.value = ''\n      onChange?.()\n    }\n  }, [data, disabled])\n  const handleRemoveMilvusEmbeddingEdge = (nodeId) => {\n    const edges = reactFlowInstance.getEdges().filter(edge => edge.targetHandle.indexOf('Embeddings|embedding|' + nodeId) === -1)\n    reactFlowInstance.setEdges(edges)\n  }\n  const [myData, setMyData] = useState(useContext(typesContext).data);\n\n  const handleOnNewValue = useCallback((newValue: any) => {\n    // TODO 使用setNodes 保存修改（onChange）\n    data.node.template[name].value = ['float', 'int'].includes(type) ? Number(newValue) : newValue;\n    // Set state to pending\n    setTabsState((prev) => {\n      return {\n        ...prev,\n        [flow.id]: {\n          ...prev[flow.id],\n          isPending: true,\n        },\n      };\n    });\n  }, [data, flow.id]);\n\n  // 临时处理知识库保存方法, 类似方法多了需要抽象\n  const handleOnNewLibValue = (newValue: string, collectionId: number | '') => {\n    // TODO 使用setNodes 保存修改（onChange）\n    data.node.template[name].value = newValue;\n    data.node.template[name].collection_id = collectionId;\n    // Set state to pending\n    setTabsState((prev) => {\n      return {\n        ...prev,\n        [flow.id]: {\n          ...prev[flow.id],\n          isPending: true,\n        },\n      };\n    });\n  };\n\n  // custom 组件 reload\n  const handleReloadCustom = (code) => {\n    captureAndAlertRequestErrorHoc(reloadCustom(code)).then(res => {\n      if (res) {\n        reactFlowInstance.setNodes((nds) =>\n          nds.map((nd) => {\n            if (nd.id === data.id) {\n              let newNode = cloneDeep(nd);\n              newNode.data.node = res\n              return newNode;\n            }\n            return nd\n          })\n        )\n        // 清理线\n        setTimeout(() => {\n          const edges = cleanEdges(\n            reactFlowInstance.getNodes(),\n            reactFlowInstance.getEdges()\n          )\n          reactFlowInstance.setEdges(edges)\n        }, 60);\n      }\n    })\n  }\n\n  useEffect(() => {\n    infoHtml.current = (\n      <div className=\"h-full w-full break-words\">\n        {info.split(\"\\n\").map((line, i) => (\n          <p key={i} className=\"block\">\n            {line}\n          </p>\n        ))}\n      </div>\n    );\n  }, [info]);\n\n  const [errorDuplicateKey, setErrorDuplicateKey] = useState(false);\n\n  useEffect(() => {\n    let groupedObj: any = groupByFamily(myData, tooltipTitle!, left, flow.data?.nodes || []);\n    groupedEdge.current = groupedObj;\n\n    if (groupedObj && groupedObj.length > 0) {\n      //@ts-ignore\n      refHtml.current = groupedObj.map((item, index) => {\n        const Icon: any =\n          nodeIconsLucide[item.family] ?? nodeIconsLucide[\"unknown\"];\n\n        return (\n          <div key={index}>\n            {index === 0 && (\n              <span>\n                {left\n                  ? \"Avaliable input components:\"\n                  : \"Avaliable output components:\"}\n              </span>\n            )}\n            <span\n              key={index}\n              className={classNames(\n                index > 0 ? \"mt-2 flex items-center\" : \"mt-3 flex items-center\"\n              )}\n            >\n              <div\n                className=\"h-5 w-5\"\n                style={{\n                  color: nodeColors[item.family],\n                }}\n              >\n                <Icon\n                  className=\"h-5 w-5\"\n                  strokeWidth={1.5}\n                  style={{\n                    color: nodeColors[item.family] ?? nodeColors.unknown,\n                  }}\n                />\n              </div>\n              <span className=\"ps-2 text-xs text-foreground\">\n                {getNodeNames()[item.family] ?? \"Other\"}{\" \"}\n                {item?.display_name && item?.display_name?.length > 0 ? (\n                  <span className=\"text-xs\">\n                    {\" \"}\n                    {item.display_name === \"\" ? \"\" : \" - \"}\n                    {item.display_name.split(\", \").length > 2\n                      ? item.display_name.split(\", \").map((el, index) => (\n                        <React.Fragment key={el + index}>\n                          <span>\n                            {index ===\n                              item.display_name.split(\", \").length - 1\n                              ? el\n                              : (el += `, `)}\n                          </span>\n                        </React.Fragment>\n                      ))\n                      : item.display_name}\n                  </span>\n                ) : (\n                  <span className=\"text-xs\">\n                    {\" \"}\n                    {item.type === \"\" ? \"\" : \" - \"}\n                    {item.type.split(\", \").length > 2\n                      ? item.type.split(\", \").map((el, index) => (\n                        <React.Fragment key={el + index}>\n                          <span>\n                            {index === item.type.split(\", \").length - 1\n                              ? el\n                              : (el += `, `)}\n                          </span>\n                        </React.Fragment>\n                      ))\n                      : item.type}\n                  </span>\n                )}\n              </span>\n            </span>\n          </div>\n        );\n      });\n    } else {\n      //@ts-ignore\n      refHtml.current = <span>No compatible components found.</span>;\n    }\n  }, [tooltipTitle]);\n\n  return (\n    <div\n      ref={ref}\n      className=\"flex w-full flex-wrap items-center justify-between bg-muted px-5 py-2\"\n    >\n      <>\n        <div\n          className={\n            \"w-full truncate text-sm\" +\n            (left ? \"\" : \" text-end\") +\n            (info !== \"\" ? \" flex items-center\" : \"\")\n          }\n        >\n          {title}\n          <span className=\"text-status-red\">{required ? \" *\" : \"\"}</span>\n          <div className=\"\">\n            {info !== \"\" && (\n              <ShadTooltip content={infoHtml.current}>\n                <Info className=\"relative bottom-0.5 ml-2 h-3 w-3\" />\n              </ShadTooltip>\n            )}\n          </div>\n        </div>\n        {/* 触点 */}\n        {left &&\n          (type === \"str\" ||\n            type === \"bool\" ||\n            type === \"float\" ||\n            type === \"code\" ||\n            type === \"prompt\" ||\n            type === \"file\" ||\n            type === \"int\" ||\n            type === \"variable\" ||\n            type === \"button\" ||\n            type === \"knowledge_one\" ||\n            type === \"knowledge_list\" ||\n            type === \"NestedDict\" ||\n            type === \"dict\" ||\n            type === \"bisheng_model\" ||\n            type === \"bisheng_embedding\") &&\n          !optionalHandle ? (<></>)\n          : (\n            <ShadTooltip\n              styleClasses={\"tooltip-fixed-width custom-scroll nowheel\"}\n              delayDuration={0}\n              content={refHtml.current}\n              side={left ? \"left\" : \"right\"}\n            >\n              <Handle\n                type={left ? \"target\" : \"source\"}\n                position={left ? Position.Left : Position.Right}\n                id={id}\n                isValidConnection={(connection) =>\n                  isValidConnection(connection, reactFlowInstance)\n                }\n                className={classNames(\n                  left ? \"-ml-0.5 \" : \"-mr-0.5 \",\n                  \"h-3 w-3 rounded-full border-2 bg-background\"\n                )}\n                style={{\n                  borderColor: color,\n                  top: position,\n                }}\n              ></Handle>\n            </ShadTooltip>\n          )}\n\n        {/* 左侧input输入项 */}\n        {!data.node.template[name] ? null : left === true &&\n          type === \"str\" &&\n          !data.node.template[name].options ? (\n          <div className=\"mt-2 w-full\">\n            {data.node.template[name].list ? (\n              // input list\n              <InputListComponent\n                isGroup={isGroup}\n                disabled={disabled}\n                value={\n                  !data.node.template[name].value ||\n                    data.node.template[name].value === \"\"\n                    ? [\"\"]\n                    : data.node.template[name].value\n                }\n                onChange={handleOnNewValue}\n              />\n            ) : data.node.template[name].multiline ? (\n              // 多行数如\n              <TextAreaComponent\n                disabled={disabled}\n                value={data.node.template[name].value ?? \"\"}\n                onChange={handleOnNewValue}\n              />\n            ) : ['index_name', 'collection_name'].includes(name) ? (\n              // 知识库选择\n              <CollectionNameComponent\n                disabled={disabled}\n                id={data.node.template[name].collection_id ?? \"\"}\n                value={data.node.template[name].value ?? \"\"}\n                onSelect={(val, id) => { handleOnNewLibValue(val, id); val && handleRemoveMilvusEmbeddingEdge(data.id) }}\n                onChange={() => { }}\n              />\n            ) : (\n              // 单行输入\n              <InputComponent\n                disabled={disabled}\n                password={data.node.template[name].password ?? false}\n                value={data.node.template[name].value ?? \"\"}\n                onChange={handleOnNewValue}\n              />\n            )}\n          </div>\n        ) : left === true && type === \"knowledge_one\" ? (\n          // 单选知识库\n          <div className=\"mt-2 w-full\">\n            <CollectionNameComponent\n              disabled={disabled}\n              id={data.node.template[name].collection_id ?? \"\"}\n              value={data.node.template[name].value ?? \"\"}\n              onSelect={(val, id) => { handleOnNewLibValue(val, id); val && handleRemoveMilvusEmbeddingEdge(data.id) }}\n              onChange={() => { }}\n            />\n          </div>\n        ) : left === true && type === \"knowledge_list\" ? (\n          // 多选知识库\n          <div className=\"mt-2 w-full\">\n            <KnowledgeSelect\n              multiple\n              disabled={disabled}\n              value={data.node.template[name].value?.map?.((item) => ({\n                label: item.value,\n                value: item.key,\n              })) || []}\n              onChange={(vals) => {\n                handleOnNewValue(vals.map(v => ({\n                  key: v.value,\n                  value: v.label\n                })))\n              }}\n            />\n          </div>\n        ) : left === true && type === \"bool\" ? (\n          <div className=\"mt-2 w-full\">\n            {/* switch */}\n            <ToggleShadComponent\n              disabled={disabled}\n              enabled={data.node.template[name].value}\n              setEnabled={(t) => {\n                handleOnNewValue(t);\n              }}\n              size=\"large\"\n            />\n          </div>\n        ) : left === true && type === \"float\" ? (\n          <div className=\"mt-2 w-full\">\n            <FloatComponent\n              disabled={disabled}\n              value={data.node.template[name].value ?? \"\"}\n              onChange={handleOnNewValue}\n            />\n          </div>\n        ) : left === true &&\n          type === \"str\" &&\n          data.node.template[name].options ? (\n          // 下拉框\n          <div className=\"mt-2 w-full\">\n            <Dropdown\n              options={data.node.template[name].options}\n              onSelect={handleOnNewValue}\n              value={data.node.template[name].value ?? \"Choose an option\"}\n            ></Dropdown>\n          </div>\n        ) : left === true && type === \"code\" ? (\n          <div className=\"mt-2 w-full\">\n            <CodeAreaComponent\n              setNodeClass={(nodeClass) => {\n                data.node = nodeClass; // 无用\n              }}\n              nodeClass={data.node}\n              disabled={disabled}\n              value={data.node.template[name].value ?? \"\"}\n              onChange={data.type === 'Data' ? handleReloadCustom : handleOnNewValue}\n            />\n          </div>\n        ) : left === true && type === \"file\" ? (\n          <div className=\"mt-2 w-full\">\n            <InputFileComponent\n              disabled={disabled}\n              value={data.node.template[name].value ?? \"\"}\n              onChange={handleOnNewValue}\n              fileTypes={data.node.template[name].fileTypes}\n              suffixes={data.node.template[name].suffixes}\n              onFileChange={(t: string) => {\n                data.node.template[name].file_path = t;\n                // save();\n              }}\n            ></InputFileComponent>\n          </div>\n        ) : left === true && type === \"int\" ? (\n          <div className=\"mt-2 w-full\">\n            <IntComponent\n              disabled={disabled}\n              value={data.node.template[name].value ?? \"\"}\n              onChange={handleOnNewValue}\n            />\n          </div>\n        ) : left === true && type === \"prompt\" ? (\n          <div className=\"mt-2 w-full\">\n            <PromptAreaComponent\n              field_name={name}\n              setNodeClass={(nodeClass, code) => {\n                if (reactFlowInstance) {\n                  reactFlowInstance.setNodes((nds) =>\n                    nds.map((nd) => {\n                      if (nd.id === data.id) {\n                        let newNode = cloneDeep(nd);\n                        newNode.data.node = nodeClass\n                        newNode.data.node.template[name].value = code;\n                        return newNode;\n                      }\n                      return nd\n                    })\n                  )\n                  // 清理线\n                  setTimeout(() => {\n                    const edges = cleanEdges(\n                      reactFlowInstance.getNodes(),\n                      reactFlowInstance.getEdges()\n                    )\n                    reactFlowInstance.setEdges(edges)\n                  }, 60);\n                }\n              }}\n              nodeClass={data.node}\n              disabled={disabled}\n              value={data.node.template[name].value ?? \"\"}\n              onChange={handleOnNewValue}\n            />\n          </div>\n        ) : left === true && type === \"NestedDict\" ? (\n          <div className=\"mt-2 w-full\">\n            <DictComponent\n              disabled={disabled}\n              editNode={false}\n              value={\n                !data.node!.template[name].value ||\n                  data.node!.template[name].value?.toString() === \"{}\"\n                  ? '{\"yourkey\": \"value\"}'\n                  : data.node!.template[name].value\n              }\n              onChange={(newValue) => {\n                data.node!.template[name].value = newValue;\n                handleOnNewValue(newValue);\n              }}\n            />\n          </div>\n        ) : left === true && type === \"dict\" ? (\n          <div className=\"mt-2 w-full\">\n            <KeypairListComponent\n              disabled={disabled}\n              editNode={false}\n              value={\n                data.node!.template[name].value?.length === 0 ||\n                  !data.node!.template[name].value\n                  ? [{ \"\": \"\" }]\n                  : convertObjToArray(data.node!.template[name].value)\n              }\n              duplicateKey={errorDuplicateKey}\n              onChange={(newValue) => {\n                const valueToNumbers = convertValuesToNumbers(newValue);\n                data.node!.template[name].value = valueToNumbers;\n                setErrorDuplicateKey(hasDuplicateKeys(valueToNumbers));\n                handleOnNewValue(valueToNumbers);\n              }}\n            />\n          </div>\n        ) : left === true && type === \"variable\" ? (\n          <div className=\"mt-2 w-full\">\n            <VariablesComponent vid={version?.id} nodeId={data.id} flowId={flowId} onChange={(newValue) => {\n              data.node!.template[name].value = newValue;\n              handleOnNewValue(newValue);\n            }} />\n          </div>\n        ) : left === true && type === \"bisheng_model\" ? (\n          <div className=\"mt-2 w-full\">\n            <ModelSelect\n              type='flow'\n              value={data.node!.template[name].value || null}\n              onChange={(newValue) => {\n                data.node!.template[name].value = newValue;\n                handleOnNewValue(newValue);\n              }}\n            />\n          </div>\n        ) : left === true && type === \"bisheng_embedding\" ? (\n          <div className=\"mt-2 w-full\">\n            <ModelSelect\n              type='flow'\n              modelType=\"embedding\"\n              value={data.node!.template[name].value || null}\n              onChange={(newValue) => {\n                data.node!.template[name].value = newValue;\n                handleOnNewValue(newValue);\n              }}\n            />\n          </div>\n        ) : (\n          <></>\n        )}\n      </>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx",
    "content": "import CollectionNameComponent from \"@/pages/BuildPage/skills/editSkill/CollectionNameComponent\";\nimport { useContext, useState } from \"react\";\nimport CodeAreaComponent from \"../../../../components/codeAreaComponent\";\nimport DictComponent from \"../../../../components/dictComponent\";\nimport Dropdown from \"../../../../components/dropdownComponent\";\nimport FloatComponent from \"../../../../components/floatComponent\";\nimport InputComponent from \"../../../../components/inputComponent\";\nimport InputFileComponent from \"../../../../components/inputFileComponent\";\nimport InputListComponent from \"../../../../components/inputListComponent\";\nimport IntComponent from \"../../../../components/intComponent\";\nimport KeypairListComponent from \"../../../../components/keypairListComponent\";\nimport PromptAreaComponent from \"../../../../components/promptComponent\";\nimport TextAreaComponent from \"../../../../components/textAreaComponent\";\nimport ToggleShadComponent from \"../../../../components/toggleShadComponent\";\nimport { TabsContext } from \"../../../../contexts/tabsContext\";\nimport { typesContext } from \"../../../../contexts/typesContext\";\nimport { cleanEdges, convertObjToArray, convertValuesToNumbers, hasDuplicateKeys } from \"../../../../util/reactflowUtils\";\n\nexport default function L2ParameterComponent({\n    // id,\n    data,\n    type,\n    name = \"\",\n}) {\n    const { reactFlowInstance } = useContext(typesContext);\n    // let disabled = reactFlowInstance?.getEdges().some((e) => e.targetHandle === id) ?? false;\n    let disabled = false\n\n    const [errorDuplicateKey, setErrorDuplicateKey] = useState(false);\n\n    const { setTabsState, flow } = useContext(TabsContext);\n    const handleOnNewValue = (newValue: any) => {\n        data.node.template[name].value = ['float', 'int'].includes(type) ? Number(newValue) : newValue;\n        // Set state to pending\n        setTabsState((prev) => {\n            return {\n                ...prev,\n                [flow.id]: {\n                    ...prev[flow.id],\n                    isPending: true,\n                },\n            };\n        });\n    };\n\n    // 临时处理知识库保存方法, 类似方法多了需要抽象\n    const handleOnNewLibValue = (newValue: string, collectionId: number | '') => {\n        data.node.template[name].value = newValue;\n        data.node.template[name].collection_id = collectionId;\n        // Set state to pending\n        setTabsState((prev) => {\n            return {\n                ...prev,\n                [flow.id]: {\n                    ...prev[flow.id],\n                    isPending: true,\n                },\n            };\n        });\n    };\n    return <div className=\"flex w-full flex-wrap items-center justify-between py-2 col-span-2\" >\n        {type === \"str\" &&\n            !data.node.template[name].options ? (\n            <div className=\"mt-2 w-full\">\n                {data.node.template[name].list ? (\n                    <InputListComponent\n                        disabled={disabled}\n                        value={\n                            !data.node.template[name].value ||\n                                data.node.template[name].value === \"\"\n                                ? [\"\"]\n                                : data.node.template[name].value\n                        }\n                        onChange={handleOnNewValue}\n                    />\n                ) : data.node.template[name].multiline ? (\n                    <TextAreaComponent\n                        disabled={disabled}\n                        value={data.node.template[name].value ?? \"\"}\n                        onChange={handleOnNewValue}\n                    />\n                ) : ['index_name', 'collection_name'].some(key => name.indexOf(key) === 0) ? (\n                    // 知识库选择\n                    <CollectionNameComponent\n                        setNodeClass={(nodeClass) => {\n                            data.node = nodeClass;\n                        }}\n                        nodeClass={data.node}\n                        disabled={disabled}\n                        id={data.node.template[name].collection_id ?? \"\"}\n                        value={data.node.template[name].value ?? \"\"}\n                        onSelect={handleOnNewLibValue}\n                        onChange={() => { }}\n                    />\n                ) : (\n                    <InputComponent\n                        disabled={disabled}\n                        password={data.node.template[name].password ?? false}\n                        value={data.node.template[name].value ?? \"\"}\n                        onChange={handleOnNewValue}\n                    />\n                )}\n            </div>\n        ) : type === \"bool\" ? (\n            <div className=\"mt-2 w-full\">\n                <ToggleShadComponent\n                    disabled={disabled}\n                    enabled={data.node.template[name].value}\n                    setEnabled={(t) => {\n                        handleOnNewValue(t);\n                    }}\n                    size=\"large\"\n                />\n            </div>\n        ) : type === \"float\" ? (\n            <div className=\"mt-2 w-full\">\n                <FloatComponent\n                    disabled={disabled}\n                    value={data.node.template[name].value ?? \"\"}\n                    onChange={handleOnNewValue}\n                />\n            </div>\n        ) : type === \"str\" &&\n            data.node.template[name].options ? (\n            <div className=\"mt-2 w-full\">\n                <Dropdown\n                    options={data.node.template[name].options}\n                    onSelect={handleOnNewValue}\n                    value={data.node.template[name].value ?? \"choose option\"}\n                ></Dropdown>\n            </div>\n        ) : type === \"code\" ? (\n            <div className=\"mt-2 w-full\">\n                <CodeAreaComponent\n                    setNodeClass={(nodeClass) => {\n                        data.node = nodeClass;\n                    }}\n                    nodeClass={data.node}\n                    disabled={disabled}\n                    value={data.node.template[name].value ?? \"\"}\n                    onChange={handleOnNewValue}\n                />\n            </div>\n        ) : type === \"file\" ? (\n            <div className=\"mt-2 w-full\">\n                <InputFileComponent\n                    disabled={disabled}\n                    value={data.node.template[name].value ?? \"\"}\n                    onChange={handleOnNewValue}\n                    fileTypes={data.node.template[name].fileTypes}\n                    suffixes={data.node.template[name].suffixes}\n                    onFileChange={(t: string) => {\n                        data.node.template[name].file_path = t;\n                    }}\n                ></InputFileComponent>\n            </div>\n        ) : type === \"int\" ? (\n            <div className=\"mt-2 w-full\">\n                <IntComponent\n                    disabled={disabled}\n                    value={data.node.template[name].value ?? \"\"}\n                    onChange={handleOnNewValue}\n                />\n            </div>\n        ) : type === \"prompt\" ? (\n            <div className=\"mt-2 w-full\">\n                <PromptAreaComponent\n                    field_name={name}\n                    setNodeClass={(nodeClass) => {\n                        data.node = nodeClass;\n                        if (reactFlowInstance) {\n                            const edges = cleanEdges(\n                                reactFlowInstance.getNodes(),\n                                reactFlowInstance.getEdges()\n                            )\n                            reactFlowInstance.setEdges(edges)\n                        }\n                    }}\n                    nodeClass={data.node}\n                    disabled={disabled}\n                    value={data.node.template[name].value ?? \"\"}\n                    onChange={handleOnNewValue}\n                />\n            </div>\n        ) : type === \"NestedDict\" ? (\n            <div className=\"mt-2 w-full\">\n                <DictComponent\n                    disabled={disabled}\n                    editNode={false}\n                    value={\n                        !data.node!.template[name].value ||\n                            data.node!.template[name].value?.toString() === \"{}\"\n                            ? '{\"yourkey\": \"value\"}'\n                            : data.node!.template[name].value\n                    }\n                    onChange={(newValue) => {\n                        data.node!.template[name].value = newValue;\n                        handleOnNewValue(newValue);\n                    }}\n                />\n            </div>\n        ) : type === \"dict\" ? (\n            <div className=\"mt-2 w-full\">\n                <KeypairListComponent\n                    disabled={disabled}\n                    editNode={false}\n                    value={\n                        data.node!.template[name].value?.length === 0 ||\n                            !data.node!.template[name].value\n                            ? [{ \"\": \"\" }]\n                            : convertObjToArray(data.node!.template[name].value)\n                    }\n                    duplicateKey={errorDuplicateKey}\n                    onChange={(newValue) => {\n                        const valueToNumbers = convertValuesToNumbers(newValue);\n                        data.node!.template[name].value = valueToNumbers;\n                        setErrorDuplicateKey(hasDuplicateKeys(valueToNumbers));\n                        handleOnNewValue(valueToNumbers);\n                    }}\n                />\n            </div>) : (\n            <></>\n        )}\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/CustomNodes/GenericNode/index.tsx",
    "content": "import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport NodeToolbarComponent from \"@/pages/BuildPage/skills/editSkill/nodeToolbarComponent\";\nimport { Zap } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { NodeToolbar } from \"@xyflow/react\";\nimport ShadTooltip from \"../../components/ShadTooltipComponent\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport EditLabel from \"../../components/ui/editLabel\";\nimport { useSSE } from \"../../contexts/SSEContext\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { typesContext } from \"../../contexts/typesContext\";\nimport { NodeDataType } from \"../../types/flow\";\nimport {\n  classNames,\n  nodeColors,\n  nodeIconsLucide,\n  toTitleCase,\n} from \"../../utils\";\nimport ParameterComponent from \"./components/parameterComponent\";\n\nexport default function GenericNode({ data, positionAbsoluteX, positionAbsoluteY, selected }: {\n  data: NodeDataType;\n  positionAbsoluteX: number;\n  positionAbsoluteY: number;\n  selected: boolean;\n}) {\n  const { id: flowId } = useParams();\n  // console.log('data :>> ', data);\n\n  const { setErrorData } = useContext(alertContext);\n  const showError = useRef(true);\n  const { types, deleteNode } = useContext(typesContext);\n\n  const { closePopUp, openPopUp } = useContext(PopUpContext);\n  // any to avoid type conflict\n  const Icon: any =\n    nodeIconsLucide[data.type] || nodeIconsLucide[types[data.type]];\n  const [validationStatus, setValidationStatus] = useState(null);\n  // State for outline color\n  const { sseData, isBuilding } = useSSE();\n\n  // useEffect(() => {\n  //   if (reactFlowInstance) {\n  //     setParams(Object.values(reactFlowInstance.toObject()));\n  //   }\n  // }, [save]);\n\n  // New useEffect to watch for changes in sseData and update validation status\n  useEffect(() => {\n    const relevantData = sseData[data.id];\n    if (relevantData) {\n      // Extract validation information from relevantData and update the validationStatus state\n      setValidationStatus(relevantData);\n    } else {\n      setValidationStatus(null);\n    }\n  }, [sseData, data.id]);\n\n  if (!Icon) {\n    if (showError.current) {\n      setErrorData({\n        title: data.type\n          ? `can be translated to \"Unable to render the ${data.type} node. Please check your JSON file.`\n          : `can be translated to \"One node cannot be rendered. Please check your JSON file.`\n      });\n      showError.current = false;\n    }\n    deleteNode(data.id);\n    return;\n  }\n\n  const [_, fouceUpdateNode] = useState(false)\n  const isGroup = !!data.node?.flow;\n\n  return (\n    <>\n\n    \n      <NodeToolbar>\n        <NodeToolbarComponent\n          position={{ x: positionAbsoluteX, y: positionAbsoluteY }}\n          data={data}\n          openPopUp={openPopUp}\n          deleteNode={deleteNode}\n        ></NodeToolbarComponent>\n      </NodeToolbar>\n\n      <div className={classNames(\"border-4 generic-node-div relative\", selected ? \"border-ring\" : \"\")} style={{ borderColor: nodeColors[types[data.type]] ?? nodeColors.unknown }}>\n        {isGroup && <div className={`generic-node-div absolute border-2 w-full h-full left-3 top-3 z-[-1] ${selected ? \"border-ring\" : \"\"}`} style={{ borderColor: nodeColors[types[data.type]] ?? nodeColors.unknown }}>\n          <div className={`generic-node-div absolute border-4 w-full h-full left-3 top-3 z-[-1] bg-transparent ${selected ? \"border-ring\" : \"\"}`} style={{ borderColor: nodeColors[types[data.type]] ?? nodeColors.unknown }}>\n          </div>\n        </div>}\n        <div className=\"generic-node-div-title\">\n          {/* title */}\n          <div className=\"generic-node-title-arrangement\">\n            {/* <Icon\n              strokeWidth={1.5}\n              className=\"generic-node-icon\"\n              style={{\n                color: nodeColors[types[data.type]] ?? nodeColors.unknown,\n              }}\n            /> */}\n            <div className=\"round-button-div\">\n              <div>\n                <TooltipProvider>\n                  <Tooltip>\n                    <TooltipTrigger asChild>\n                      <div className=\"generic-node-status-position\">\n                        <div\n                          className={classNames(\n                            validationStatus && validationStatus.valid ? \"green-status\" : \"status-build-animation\", \"status-div\"\n                          )}\n                        ></div>\n                        <div\n                          className={classNames(\n                            validationStatus && !validationStatus.valid ? \"red-status\" : \"status-build-animation\", \"status-div\"\n                          )}\n                        ></div>\n                        <div\n                          className={classNames(\n                            !validationStatus || isBuilding ? \"yellow-status\" : \"status-build-animation\", \"status-div\"\n                          )}\n                        ></div>\n                      </div>\n                    </TooltipTrigger>\n                    <TooltipContent className=\"bg-background text-foreground\">\n                      {\n                        isBuilding ? (<span>build...</span>) :\n                          !validationStatus ? (\n                            <span className=\"flex\">\n                              Build{\" \"} <Zap className=\"mx-0.5 h-5 fill-build-trigger stroke-build-trigger stroke-1\" strokeWidth={1.5} />{\" \"} flow to validate status.\n                            </span>\n                          ) : (\n                            <div className=\"max-h-96 overflow-auto\">\n                              {validationStatus.params ? validationStatus.params.split(\"\\n\")\n                                .map((line, index) => <div key={index}>{line}</div>)\n                                : \"\"}\n                            </div>\n                          )\n                      }\n                    </TooltipContent>\n                  </Tooltip>\n                </TooltipProvider>\n              </div>\n            </div>\n            <div className=\"generic-node-tooltip-div\">\n              <ShadTooltip content={data.node.display_name}>\n                <div className=\"generic-node-tooltip-div \">\n                  {isGroup ? <EditLabel\n                    rule={[\n                      { required: true }\n                    ]}\n                    str={data.node.display_name}\n                    onChange={(val) => { (data.node.display_name = val); fouceUpdateNode(!_) }}>\n                    {(val) => <div className=\"max-w-[300px] overflow-hidden text-ellipsis\">{val}</div>}\n                  </EditLabel> : data.node.display_name}\n                </div>\n              </ShadTooltip>\n            </div>\n          </div>\n          {/* <div className=\"round-button-div\">\n            <button className=\"relative\" onClick={(event) => { event.preventDefault(); openPopUp(<NodeModal data={data} />)}} ></button>\n          </div> */}\n        </div >\n\n        <div className=\"generic-node-desc nodrag\">\n          <div className=\"generic-node-desc-text \">{data.node.description}</div>\n          <>\n            {Object.keys(data.node.template)\n              .filter((t) => t.charAt(0) !== \"_\")\n              .map((t: string, idx) => (\n                <div key={idx}>\n                  {/* {idx === 0 ? (\n                                <div\n                                    className={classNames(\n                                        \"px-5 py-2 mt-2 text-center\",\n                                        Object.keys(data.node.template).filter(\n                                            (key) =>\n                                                !key.startsWith(\"_\") &&\n                                                data.node.template[key].show &&\n                                                !data.node.template[key].advanced\n                                        ).length === 0\n                                            ? \"hidden\"\n                                            : \"\"\n                                    )}\n                                >\n                                    Inputs\n                                </div>\n                            ) : (\n                                <></>\n                            )} */}\n                  {data.node.template[t].show &&\n                    !data.node.template[t].advanced ? (\n                    <ParameterComponent\n                      data={data}\n                      isGroup={isGroup}\n                      color={\n                        nodeColors[types[data.node.template[t].type]] ??\n                        nodeColors[data.node.template[t].type] ??\n                        nodeColors.unknown\n                      }\n                      title={\n                        data.node.template[t].display_name\n                          ? data.node.template[t].display_name\n                          : data.node.template[t].name\n                            ? toTitleCase(data.node.template[t].name)\n                            : toTitleCase(t)\n                      }\n                      info={data.node.template[t].info}\n                      name={t}\n                      tooltipTitle={\n                        data.node.template[t].input_types?.join(\"\\n\") ??\n                        data.node.template[t].type\n                      }\n                      required={data.node.template[t].required}\n                      id={(data.node.template[t].input_types?.join(\";\") ?? data.node.template[t].type) + \"|\" + t + \"|\" + data.id}\n                      left={true}\n                      type={data.node.template[t].type}\n                      optionalHandle={data.node.template[t].input_types}\n                      onChange={() => fouceUpdateNode(!_)}\n                    />\n                  ) : (\n                    <></>\n                  )}\n                </div>\n              ))}\n            <div\n              className={classNames(\n                Object.keys(data.node.template).length < 1 ? \"hidden\" : \"\",\n                \"flex-max-width justify-center\"\n              )}\n            >\n              {\" \"}\n            </div>\n            {/* 输出节点 */}\n            <ParameterComponent\n              data={data}\n              color={nodeColors[types[data.type]] ?? nodeColors.unknown}\n              title={\n                data.node.output_types && data.node.output_types.length > 0\n                  ? data.node.output_types.join(\"|\")\n                  : data.type\n              }\n              tooltipTitle={data.node.base_classes.join(\"\\n\")}\n              id={[data.type, data.id, ...data.node.base_classes].join(\"|\")}\n              type={data.node.base_classes.join(\"|\")}\n              left={false}\n            />\n            {data.type === 'Report' && <div className=\"w-full bg-muted px-5 py-2\">\n              <Link to={`/report/${flowId}`}><Button variant=\"outline\" className=\"px-10\" onClick={() => {\n                const dom = document.getElementById(\"flow-page\") as HTMLElement;\n                if (dom) dom.className += ' report-hidden';\n              }}>Edit</Button></Link>\n            </div>}\n          </>\n        </div>\n      </div >\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/alertDropDown/components/singleAlertComponent/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { CheckCircle2, Info, X, XCircle } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { SingleAlertComponentType } from \"../../../../types/alerts\";\n\nexport default function SingleAlert({\n  dropItem,\n  removeAlert,\n}: SingleAlertComponentType) {\n  const [show, setShow] = useState(true);\n  const type = dropItem.type;\n\n  return (\n    <Transition\n      className=\"relative\"\n      show={show}\n      appear={true}\n      enter=\"transition-transform duration-500 ease-out\"\n      enterFrom={\"transform translate-x-[-100%]\"}\n      enterTo={\"transform translate-x-0\"}\n      leave=\"transition-transform duration-500 ease-in\"\n      leaveFrom={\"transform translate-x-0\"}\n      leaveTo={\"transform translate-x-[-100%]\"}\n    >\n      {type === \"error\" ? (\n        <div\n          className=\"mx-2 mb-2 flex rounded-md bg-error-background p-3\"\n          key={dropItem.id}\n        >\n          <div className=\"flex-shrink-0\">\n            <XCircle className=\"h-5 w-5 text-status-red\" aria-hidden=\"true\" />\n          </div>\n          <div className=\"ml-3\">\n            <h3 className=\"break-words text-sm font-medium text-error-foreground\">\n              {dropItem.title}\n            </h3>\n            {dropItem.list ? (\n              <div className=\"mt-2 text-sm text-error-foreground\">\n                <ul className=\"list-disc space-y-1 pl-5\">\n                  {dropItem.list.map((item, idx) => (\n                    <li className=\"break-words\" key={idx}>\n                      {item}\n                    </li>\n                  ))}\n                </ul>\n              </div>\n            ) : (\n              <></>\n            )}\n          </div>\n          <div className=\"ml-auto pl-3\">\n            <div className=\"-mx-1.5 -my-1.5\">\n              <button\n                type=\"button\"\n                onClick={() => {\n                  setShow(false);\n                  setTimeout(() => {\n                    removeAlert(dropItem.id);\n                  }, 500);\n                }}\n                className=\"inline-flex rounded-md p-1.5 text-status-red\"\n              >\n                <span className=\"sr-only\">Dismiss</span>\n                <X\n                  className=\"h-4 w-4 text-error-foreground\"\n                  aria-hidden=\"true\"\n                />\n              </button>\n            </div>\n          </div>\n        </div>\n      ) : type === \"notice\" ? (\n        <div\n          className=\"mx-2 mb-2 flex rounded-md bg-info-background p-3\"\n          key={dropItem.id}\n        >\n          <div className=\"flex-shrink-0\">\n            <Info className=\"h-5 w-5 text-status-blue \" aria-hidden=\"true\" />\n          </div>\n          <div className=\"ml-3 flex-1 md:flex md:justify-between\">\n            <p className=\"text-sm font-medium text-info-foreground\">\n              {dropItem.title}\n            </p>\n            <p className=\"mt-3 text-sm md:ml-6 md:mt-0\">\n              {dropItem.link ? (\n                <Link\n                  to={dropItem.link}\n                  className=\"whitespace-nowrap font-medium text-info-foreground hover:text-accent-foreground\"\n                >\n                  Details\n                </Link>\n              ) : (\n                <></>\n              )}\n            </p>\n          </div>\n          <div className=\"ml-auto pl-3\">\n            <div className=\"-mx-1.5 -my-1.5\">\n              <button\n                type=\"button\"\n                onClick={() => {\n                  setShow(false);\n                  setTimeout(() => {\n                    removeAlert(dropItem.id);\n                  }, 500);\n                }}\n                className=\"inline-flex rounded-md p-1.5 text-info-foreground\"\n              >\n                <span className=\"sr-only\">Dismiss</span>\n                <X\n                  className=\"h-4 w-4 text-info-foreground\"\n                  aria-hidden=\"true\"\n                />\n              </button>\n            </div>\n          </div>\n        </div>\n      ) : (\n        <div\n          className=\"mx-2 mb-2 flex rounded-md bg-success-background p-3\"\n          key={dropItem.id}\n        >\n          <div className=\"flex-shrink-0\">\n            <CheckCircle2\n              className=\"h-5 w-5 text-status-green\"\n              aria-hidden=\"true\"\n            />\n          </div>\n          <div className=\"ml-3\">\n            <p className=\"text-sm font-medium text-success-foreground\">\n              {dropItem.title}\n            </p>\n          </div>\n          <div className=\"ml-auto pl-3\">\n            <div className=\"-mx-1.5 -my-1.5\">\n              <button\n                type=\"button\"\n                onClick={() => {\n                  setShow(false);\n                  setTimeout(() => {\n                    removeAlert(dropItem.id);\n                  }, 500);\n                }}\n                className=\"inline-flex rounded-md p-1.5 text-status-green\"\n              >\n                <span className=\"sr-only\">Dismiss</span>\n                <X\n                  className=\"h-4 w-4 text-success-foreground\"\n                  aria-hidden=\"true\"\n                />\n              </button>\n            </div>\n          </div>\n        </div>\n      )}\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/alertDropDown/index.tsx",
    "content": "import { Trash2, X } from \"lucide-react\";\nimport { useContext, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { useOnClickOutside } from \"../hooks/useOnClickOutside\";\nimport SingleAlert from \"./components/singleAlertComponent\";\n\nexport default function AlertDropdown() {\n  const { t } = useTranslation()\n\n  const { closePopUp } = useContext(PopUpContext);\n  const componentRef = useRef<HTMLDivElement>(null);\n\n  // Use the custom hook\n  useOnClickOutside(componentRef, () => {\n    closePopUp();\n  });\n\n  const {\n    notificationList,\n    clearNotificationList,\n    removeFromNotificationList,\n  } = useContext(alertContext);\n\n  return <div\n    ref={componentRef}\n    className=\"z-10 flex h-[500px] w-[400px] flex-col overflow-hidden rounded-md bg-muted px-2 py-3 pb-4 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\"\n  >\n    <div className=\"text-md flex flex-row justify-between pl-3 font-medium text-foreground\">\n      {t('flow.notification')}\n      <div className=\"flex gap-3 pr-3\">\n        <button\n          className=\"text-foreground hover:text-status-red\"\n          onClick={() => {\n            closePopUp();\n            setTimeout(clearNotificationList, 100);\n          }}\n        >\n          <Trash2 className=\"h-[1.1rem] w-[1.1rem]\" />\n        </button>\n        <button\n          className=\"text-foreground hover:text-status-red\"\n          onClick={closePopUp}\n        >\n          <X className=\"h-5 w-5\" />\n        </button>\n      </div>\n    </div>\n    <div className=\"text-high-foreground mt-3 flex h-full w-full flex-col overflow-y-scroll scrollbar-hide\">\n      {notificationList.length !== 0 ? (\n        notificationList.map((alertItem, index) => (\n          <SingleAlert\n            key={alertItem.id}\n            dropItem={alertItem}\n            removeAlert={removeFromNotificationList}\n          />\n        ))\n      ) : (\n        <div className=\"flex h-full w-full items-center justify-center pb-16 text-ring\">\n          {t('flow.noNewNotifications')}\n        </div>\n      )}\n    </div>\n  </div>\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/error/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { XCircle } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { ErrorAlertType } from \"../../types/alerts\";\n\nexport default function ErrorAlert({\n  title,\n  list = [],\n  id,\n  removeAlert,\n}: ErrorAlertType) {\n  const [show, setShow] = useState(true);\n  useEffect(() => {\n    if (show) {\n      setTimeout(() => {\n        setShow(false);\n        setTimeout(() => {\n          removeAlert(id);\n        }, 500);\n      }, 5000);\n    }\n  }, [id, removeAlert, show]);\n\n  return (\n    <Transition\n      className=\"relative\"\n      show={show}\n      appear={true}\n      enter=\"transition-transform duration-500 ease-out\"\n      enterFrom={\"transform translate-x-[-100%]\"}\n      enterTo={\"transform translate-x-0\"}\n      leave=\"transition-transform duration-500 ease-in\"\n      leaveFrom={\"transform translate-x-0\"}\n      leaveTo={\"transform translate-x-[-100%]\"}\n    >\n      <div\n        onClick={() => {\n          setShow(false);\n          setTimeout(() => {\n            removeAlert(id);\n          }, 500);\n        }}\n        className=\"error-build-message\"\n      >\n        <div className=\"flex\">\n          <div className=\"flex-shrink-0\">\n            <XCircle\n              className=\"error-build-message-circle\"\n              aria-hidden=\"true\"\n            />\n          </div>\n          <div className=\"ml-3\">\n            <h3 className=\"error-build-foreground\">{title}</h3>\n            {list?.length !== 0 &&\n            list?.some((item) => item !== null && item !== undefined) ? (\n              <div className=\"error-build-message-div\">\n                <ul className=\"error-build-message-list\">\n                  {list.map((item, index) => (\n                    <li key={index}>{item}</li>\n                  ))}\n                </ul>\n              </div>\n            ) : (\n              <></>\n            )}\n          </div>\n        </div>\n      </div>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/hooks/useOnClickOutside/index.ts",
    "content": "import { useEffect } from \"react\";\n\nexport function useOnClickOutside(ref, handler) {\n  useEffect(() => {\n    const listener = (event) => {\n      // Do nothing if clicking ref's element or its children\n      if (!ref.current || ref.current.contains(event.target)) {\n        return;\n      }\n\n      handler(event);\n    };\n\n    // Attach the listener to the document\n    document.addEventListener(\"mousedown\", listener, { passive: true });\n\n    // Attach the listener to the react-flow instance\n    const reactFlowContainer = document.querySelector(\".react-flow\");\n    if (reactFlowContainer) {\n      reactFlowContainer.addEventListener(\"mousedown\", listener, {\n        passive: true,\n      });\n    }\n\n    // Clean up the listener when the component is unmounted\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      if (reactFlowContainer) {\n        reactFlowContainer.removeEventListener(\"mousedown\", listener);\n      }\n    };\n  }, [ref, handler]); // Rerun only if ref or handler changes\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/notice/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { Info } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { NoticeAlertType } from \"../../types/alerts\";\n\nexport default function NoticeAlert({\n  title,\n  link = \"\",\n  id,\n  removeAlert,\n}: NoticeAlertType) {\n  const [show, setShow] = useState(true);\n  useEffect(() => {\n    if (show) {\n      setTimeout(() => {\n        setShow(false);\n        setTimeout(() => {\n          removeAlert(id);\n        }, 500);\n      }, 5000);\n    }\n  }, [id, removeAlert, show]);\n  return (\n    <Transition\n      show={show}\n      enter=\"transition-transform duration-500 ease-out\"\n      enterFrom={\"transform translate-x-[-100%]\"}\n      enterTo={\"transform translate-x-0\"}\n      leave=\"transition-transform duration-500 ease-in\"\n      leaveFrom={\"transform translate-x-0\"}\n      leaveTo={\"transform translate-x-[-100%]\"}\n    >\n      <div\n        onClick={() => {\n          setShow(false);\n          removeAlert(id);\n        }}\n        className=\"mt-6 w-96 rounded-md bg-info-background p-4 shadow-xl\"\n      >\n        <div className=\"flex\">\n          <div className=\"flex-shrink-0\">\n            <Info className=\"h-5 w-5 text-status-blue \" aria-hidden=\"true\" />\n          </div>\n          <div className=\"ml-3 flex-1 md:flex md:justify-between\">\n            <p className=\"text-sm text-info-foreground\">{title}</p>\n            <p className=\"mt-3 text-sm md:ml-6 md:mt-0\">\n              {link !== \"\" ? (\n                <Link\n                  to={link}\n                  className=\"whitespace-nowrap font-medium text-info-foreground hover:text-accent-foreground\"\n                >\n                  Details\n                </Link>\n              ) : (\n                <></>\n              )}\n            </p>\n          </div>\n        </div>\n      </div>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/alerts/success/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { CheckCircle2 } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { SuccessAlertType } from \"../../types/alerts\";\n\nexport default function SuccessAlert({\n  title,\n  id,\n  removeAlert,\n}: SuccessAlertType) {\n  const [show, setShow] = useState(true);\n  useEffect(() => {\n    if (show) {\n      setTimeout(() => {\n        setShow(false);\n        setTimeout(() => {\n          removeAlert(id);\n        }, 500);\n      }, 5000);\n    }\n  }, [id, removeAlert, show]);\n  return (\n    <Transition\n      show={show}\n      enter=\"transition-transform duration-500 ease-out\"\n      enterFrom={\"transform translate-x-[-100%]\"}\n      enterTo={\"transform translate-x-0\"}\n      leave=\"transition-transform duration-500 ease-in\"\n      leaveFrom={\"transform translate-x-0\"}\n      leaveTo={\"transform translate-x-[-100%]\"}\n    >\n      <div\n        onClick={() => {\n          setShow(false);\n          removeAlert(id);\n        }}\n        className=\"success-alert\"\n      >\n        <div className=\"flex\">\n          <div className=\"flex-shrink-0\">\n            <CheckCircle2 className=\"success-alert-icon\" aria-hidden=\"true\" />\n          </div>\n          <div className=\"ml-3\">\n            <p className=\"success-alert-message\">{title}</p>\n          </div>\n        </div>\n      </div>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/EditFlowSettingsComponent/index.tsx",
    "content": "import React, { ChangeEvent, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Input, Textarea } from \"../../components/bs-ui/input\";\nimport { Label } from \"../../components/bs-ui/label\";\n\ntype InputProps = {\n  name: string | null;\n  description: string | null;\n  maxLength?: number;\n  setName: (name: string) => void;\n  setDescription: (description: string) => void;\n};\n\nexport const EditFlowSettings: React.FC<InputProps> = ({\n  name,\n  description,\n  maxLength = 50,\n  setName,\n  setDescription\n}) => {\n  const { t } = useTranslation()\n  const [isMaxLength, setIsMaxLength] = useState(false);\n\n  const handleNameChange = (event: ChangeEvent<HTMLInputElement>) => {\n    const { value } = event.target;\n    setIsMaxLength(value.length >= maxLength);\n    setName(value);\n  };\n\n  const handleDescriptionChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n    setDescription(event.target.value);\n  };\n\n  return (\n    <>\n      <Label>\n        <div className=\"edit-flow-arrangement\">\n          <span className=\"font-medium\">{t('flow.skillName')}</span>{\" \"}\n          {isMaxLength && (\n            <span className=\"edit-flow-span\">{t('flow.nameTooLong')}</span>\n          )}\n        </div>\n        <Input\n          className=\"mt-2 font-normal\"\n          onChange={handleNameChange}\n          type=\"text\"\n          name=\"name\"\n          value={name ?? \"\"}\n          placeholder=\"File name\"\n          id=\"name\"\n          maxLength={maxLength}\n          showCount\n        />\n      </Label>\n      <Label>\n        <span className=\"font-medium\">{t('flow.skillDescription')}</span>\n        <Textarea\n          name=\"description\"\n          id=\"description\"\n          onChange={handleDescriptionChange}\n          value={description ?? \"\"}\n          placeholder=\"Flow description\"\n          className=\"mt-2 max-h-[100px] font-normal\"\n          rows={3}\n        />\n      </Label>\n    </>\n  );\n};\n\nexport default EditFlowSettings;\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/DeleteConfirmModal.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\n\ninterface DeleteConfirmModalProps {\n    open: boolean;\n    content: string;\n    cancelText: string;\n    okText: string;\n    onClose: () => void;\n    onConfirm: () => void;\n}\n\nexport default function DeleteConfirmModal({ open, content, cancelText, okText, onClose, onConfirm }: DeleteConfirmModalProps) {\n    if (!open) return null;\n    return (\n        <div className=\"fixed inset-0 z-[1000] bg-opacity-50 flex items-center justify-center\">\n            <div className=\"relative rounded-lg p-6 w-[500px]  h-[150px]\" style={{ background: 'white', opacity: 1, border: '1px solid #e5e7eb' }}>\n                <button\n                    className=\"absolute top-3 right-3 text-gray-400 hover:text-gray-600\"\n                    onClick={onClose}\n                >\n                    ×\n                </button>\n                <p className=\"text-gray-600 text-center mb-6\">{content}</p>\n                <div className=\"flex justify-between space-x-3\">\n                    <Button variant=\"ghost\" onClick={onClose}>\n                        {cancelText}\n                    </Button>\n                    <Button type=\"button\" onClick={onConfirm}>\n                        {okText}\n                    </Button>\n                </div>\n            </div>\n        </div>\n    );\n}\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/LocalFileImportDialog.tsx",
    "content": "import { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { UploadIcon } from \"@/components/bs-icons\";\n\ninterface LocalFileImportDialogProps {\n    open: boolean;\n    onOpenChange: (open: boolean) => void;\n    t: (key: string, params?: any) => string;\n    getRootProps: any;\n    getInputProps: any;\n    importFiles: File[];\n    isImporting: boolean;\n    onImport: () => Promise<void> | void;\n    onCancel: () => void;\n    downloadExample: () => void;\n}\n\nexport default function LocalFileImportDialog({ open, onOpenChange, t, getRootProps, getInputProps, importFiles, isImporting, onImport, onCancel, downloadExample }: LocalFileImportDialogProps) {\n    return (\n        <Dialog open={open} onOpenChange={onOpenChange}>\n            <DialogContent className=\"sm:max-w-[1200px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('chatConfig.importManual')}</DialogTitle>\n                </DialogHeader>\n\n                <div className=\"grid gap-4 py-4\">\n                    <div className=\"flex justify-between items-center w-full\">\n                        <div className=\"flex items-center gap-2\">\n                            <span className=\"text-red-500\">*</span>\n                            <span>{t('chatConfig.uploadFile')}</span>\n                        </div>\n                        <button className=\"flex items-center gap-1\" onClick={downloadExample}>\n                            <span className=\"text-black\">{t('chatConfig.exampleFile')}:</span>\n                            <span className=\"text-blue-600 hover:underline\">{t('chatConfig.exampleFileName')}</span>\n                        </button>\n                    </div>\n\n                    <div\n                        {...getRootProps()}\n                        className=\"group h-40 border border-dashed rounded-md flex flex-col justify-center items-center cursor-pointer gap-3 hover:border-primary\"\n                    >\n                        <input {...getInputProps()} />\n                        <UploadIcon className=\"group-hover:text-primary size-5\" />\n                        <p className=\"text-sm\">{t('code.clickOrDragHere')}</p>\n                    </div>\n\n                    {importFiles.length > 0 && (\n                        <div className=\"text-sm text-start text-green-500 mt-2\">\n                            {importFiles.slice(0, 1).map((file, index) => (\n                                <div key={index}>\n                                    <span>{file.name}</span>\n                                </div>\n                            ))}\n                        </div>\n                    )}\n                </div>\n\n                <div className=\"flex justify-end gap-2\">\n                    <Button variant=\"outline\" onClick={onCancel}>\n                        {t('cancel')}\n                    </Button>\n                    <Button onClick={onImport} disabled={isImporting || importFiles.length === 0}>\n                        {isImporting ? t('chatConfig.importing') : t('submit')}\n                    </Button>\n                </div>\n            </DialogContent>\n        </Dialog>\n    )\n}\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopActionsBar.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\n\ninterface SopActionsBarProps {\n    importFromRecord: () => void;\n    importFromLocal: () => void;\n    createManual: () => void;\n    batchDelete: () => void;\n    batchDeleting: boolean;\n    disableBatchDelete: boolean;\n    importText: string;\n    importLocalText: string;\n    createText: string;\n    batchDeleteText: string;\n}\n\nexport default function SopActionsBar({\n    importFromRecord,\n    importFromLocal,\n    createManual,\n    batchDelete,\n    batchDeleting,\n    disableBatchDelete,\n    importText,\n    importLocalText,\n    createText,\n    batchDeleteText\n}: SopActionsBarProps) {\n    return (\n        <div className=\"flex gap-2\">\n            <Button variant=\"default\" size=\"sm\" onClick={importFromRecord}>\n                {importText}\n            </Button>\n            <Button variant=\"outline\" size=\"sm\" onClick={importFromLocal}>\n                {importLocalText}\n            </Button>\n            <Button variant=\"outline\" size=\"sm\" onClick={createManual}>\n                {createText}\n            </Button>\n            <Button\n                variant=\"outline\"\n                size=\"sm\"\n                disabled={disableBatchDelete || batchDeleting}\n                onClick={batchDelete}\n            >\n                {batchDeleting && <LoadIcon className=\" mr-2 text-gray-600\" />}\n                {batchDeleteText}\n            </Button>\n        </div>\n    );\n}\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopFormDrawer.tsx",
    "content": "// components/ToolSelectionPanel.tsx\nimport { Sheet, SheetContent, SheetTitle } from \"@/components/bs-ui/sheet\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { sopApi } from \"@/controllers/API/linsight\";\nimport { TaskFlowContent } from \"@/workspace/SopTasks\";\nimport { Star } from \"lucide-react\";\nimport { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { LoadIcon } from \"../bs-icons/loading\";\nimport { Button } from '../bs-ui/button';\nimport { Input, Textarea } from \"../bs-ui/input\";\nimport { Tabs, TabsList, TabsTrigger } from \"../bs-ui/tabs\";\nimport SopMarkdown from \"./SopMarkdown\";\n\n/**\n * SopFormDrawer\n * @param {any} props\n */\nconst SopFormDrawer: any = (props) => {\n  const {\n    isDrawerOpen,\n    setIsDrawerOpen,\n    isEditing,\n    sopForm,\n    setSopForm,\n    tools,\n    linsight,\n    handleSaveSOP,\n    sopShowcase,\n    onShowcaseToggled\n  } = props;\n  const { t } = useTranslation()\n  const [errors, setErrors] = useState({\n    name: '',\n    content: ''\n  });\n  const [charCount, setCharCount] = useState({\n    name: 0,\n    description: 0,\n    content: 0\n  });\n  const nameInputRef = useRef(null);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const isFeatured = !!sopForm.showcase;\n  const [activeTab, setActiveTab] = useState('manual');\n\n  const MAX_LENGTHS = {\n    name: 500,\n    description: 1000,\n    content: 50000\n  };\n  const { toast } = useToast()\n  const validateForm = () => {\n    const newErrors = {\n      name: '',\n      content: ''\n    };\n    let isValid = true;\n\n    if (!sopForm.name.trim()) {\n      newErrors.name = t('sopForm.nameRequired');\n      isValid = false;\n    } else if (sopForm.name.length > MAX_LENGTHS.name) {\n      newErrors.name = t('sopForm.nameMaxLength', { max: MAX_LENGTHS.name });\n      isValid = false;\n    }\n\n    if (!sopForm.content.trim()) {\n      newErrors.content = t('sopForm.contentRequired');\n      isValid = false;\n    } else if (sopForm.content.length > MAX_LENGTHS.content) {\n      newErrors.content = t('sopForm.contentMaxLength', { max: MAX_LENGTHS.content });\n      isValid = false;\n    }\n\n    setErrors(newErrors);\n    return isValid;\n  };\n\n  const handleInputChange = (field, value) => {\n    //  Calculate the actual content length (excluding Markdown markup characters) \n    const rawContent = field === 'content'\n      ? value.replace(/[#*_\\-`~\\[\\]()]/g, '')\n      : value;\n    const length = rawContent.length;\n\n    setSopForm(prev => ({ ...prev, [field]: value }));\n    setCharCount(prev => ({ ...prev, [field]: length }));\n\n    if (length > MAX_LENGTHS[field]) {\n      setErrors(prev => ({\n        ...prev,\n        [field]: field === 'content'\n          ? t('sopForm.contentMaxLength', { max: MAX_LENGTHS[field] })\n          : t('sopForm.nameMaxLength', { max: MAX_LENGTHS[field] })\n      }));\n    } else if (errors[field]) {\n\n      setErrors(prev => ({ ...prev, [field]: '' }));\n    }\n  };\n\n  const handleSubmit = async (e) => {\n    e.preventDefault();\n    if (isSubmitting) return;\n    // toast({\n    //   variant: 'error',\n    //   title: t('sopForm.importFailed'),\n    //   description: `${sopForm.name}${t('sopForm.contentTooLong')}`\n    // })\n    if (validateForm()) {\n      setIsSubmitting(true);\n\n      try {\n        await handleSaveSOP();\n      } catch (error) {\n        console.error(t('sopForm.saveFailed'), error);\n      } finally {\n        setIsSubmitting(false);\n      }\n    }\n  };\n\n  useEffect(() => {\n    if (isDrawerOpen) {\n      setErrors({\n        name: '',\n        content: ''\n      });\n      setCharCount({\n        name: sopForm.name.length,\n        description: sopForm.description.length,\n        content: sopForm.content.length\n      });\n    }\n  }, [isDrawerOpen]);\n\n  useEffect(() => {\n    if (isDrawerOpen) {\n      setActiveTab('manual');\n    }\n  }, [isDrawerOpen]);\n\n  return (\n    <Sheet open={isDrawerOpen} onOpenChange={setIsDrawerOpen}>\n      <SheetContent\n        className=\"w-[40%]\"\n        style={{ minWidth: '40%', maxWidth: '40%' }}\n      >\n        <div className=\"flex flex-col \">\n          <div className=\"flex items-center justify-between px-4 pt-5 border-gray-200\">\n            <SheetTitle className=\"text-lg font-medium text-gray-900\">\n              {isEditing ? t('sopForm.editManual') : t('sopForm.createManual')}\n            </SheetTitle>\n            {isEditing && (\n              <div className=\"flex items-center gap-3 mr-6\">\n                <Tabs value={activeTab} onValueChange={setActiveTab}>\n                  <TabsList>\n                    <TabsTrigger value=\"manual\">{t('sopForm.manual')}</TabsTrigger>\n                    {sopShowcase ? (\n                      <Tip content={t('sopForm.noResult')} side=\"bottom\">\n                        <div className=\"inline-block\">\n                          <TabsTrigger\n                            value=\"result\"\n                            onMouseDown={(e) => e.preventDefault()}\n                            className=\"opacity-50 cursor-not-allowed pointer-events-none\"\n                            aria-disabled\n                          >\n                            {t('sopForm.result')}\n                          </TabsTrigger>\n                        </div>\n                      </Tip>\n                    ) : (\n                      <TabsTrigger value=\"result\">{t('sopForm.result')}</TabsTrigger>\n                    )}\n                  </TabsList>\n                </Tabs>\n                {sopShowcase ? (\n                  <Tip content={t('sopForm.onlyFeaturedWithResult')} side=\"bottom\">\n                    <div className=\"inline-block\">\n                      <Button\n                        type=\"button\"\n                        variant='outline'\n                        disabled\n                        className={`${isFeatured ? 'border-yellow-500 bg-yellow-50 text-yellow-700' : ''}`}\n                      >\n                        <span className=\"inline-flex items-center gap-2\">\n                          <span className=\"inline-flex items-center justify-center w-4 h-4 rounded-sm \">\n                            {isFeatured ? (\n                              <Star className=\"w-3 h-3 text-yellow-500\" fill=\"currentColor\" />\n                            ) : (\n                              <Star className=\"w-3 h-3 text-gray-400\" />\n                            )}\n                          </span>\n                          {isFeatured ? t('sopForm.featuredCase') : t('sopForm.setAsFeaturedCase')}\n                        </span>\n                      </Button>\n                    </div>\n                  </Tip>\n                ) : (\n                  <Button\n                    type=\"button\"\n                    variant='outline'\n                    onClick={async () => {\n                      try {\n                        const next = !isFeatured;\n                        await sopApi.switchShowcase({ sop_id: sopForm.id, showcase: next });\n                        //  Synchronize the parent form to avoid state crosstalk \n                        setSopForm((prev) => ({ ...prev, showcase: next }));\n                        onShowcaseToggled && onShowcaseToggled();\n                      } catch (e) {\n                        toast({ variant: 'error', description: t('sopForm.failToSetFeaturedCase') });\n                      }\n                    }}\n                    className={`${isFeatured ? 'border-yellow-500 bg-yellow-50 text-yellow-700' : ''}`}\n                  >\n                    <span className=\"inline-flex items-center gap-2\">\n                      <span className=\"inline-flex items-center justify-center w-4 h-4 rounded-sm \">\n                        {isFeatured ? (\n                          <Star className=\"w-3 h-3 text-yellow-500\" fill=\"currentColor\" />\n                        ) : (\n                          <Star className=\"w-3 h-3 text-gray-400\" />\n                        )}\n                      </span>\n                      {isFeatured ? t('sopForm.featuredCase') : t('sopForm.setAsFeaturedCase')}\n                    </span>\n                  </Button>\n                )}\n              </div>\n            )}\n          </div>\n          <div className=\"flex-1 px-4 pb-4 pt-3\">\n\n            {activeTab === 'result' && (\n              <div className=\"mt-4 overflow-y-auto scrollbar-hide taskflow-scroll\" style={{\n                scrollbarWidth: 'thin',\n                scrollbarColor: '#d1d5db transparent',\n                height: 'calc(100vh - 200px)'\n              }}>\n                <TaskFlowContent linsight={linsight} />\n              </div>\n            )}\n            {activeTab === 'manual' && (\n              <form onSubmit={handleSubmit} className=\"space-y-4\">\n                <div>\n                  <label htmlFor=\"sop-name\" className=\"block text-sm font-medium pb-1 text-gray-700\">\n                    {t('sopForm.manualName')}<span className=\"text-red-500\">*</span>\n                  </label>\n                  < Input\n                    type=\"text\"\n                    showCount\n                    maxLength={500}\n                    id=\"sop-name\"\n                    ref={nameInputRef}\n                    value={sopForm.name}\n                    onChange={(e) => handleInputChange('name', e.target.value)}\n                    className={`mt-1 block w-full border ${errors.name ? 'border-red-500' : 'border-gray-300'} rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-blue-500 focus:border-blue-500 text-[16px]`}\n                    placeholder={t('sopForm.namePlaceholder')}\n                  />\n                  <div className=\"flex justify-between\">\n                    {errors.name && (\n                      <p className=\"mt-1 text-sm text-red-600\">{errors.name}</p>\n                    )}\n                  </div>\n                </div>\n\n                <div>\n                  <label htmlFor=\"sop-description\" className=\"block text-sm pb-1 font-medium text-gray-700\">\n                    {t('sopForm.description')}\n                  </label>\n                  <Textarea\n                    id=\"sop-description\"\n                    maxLength={1000}\n                    rows={3}\n                    value={sopForm.description}\n                    onChange={(e) => handleInputChange('description', e.target.value)}\n                    className=\"mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-blue-500 focus:border-blue-500 text-[16px]\"\n                    placeholder={t('sopForm.descriptionPlaceholder')}\n                  />\n                </div>\n\n                <div>\n                  <label htmlFor=\"sop-content\" className=\"h-full block text-sm pb-1 font-medium text-gray-700\">\n                    {t('sopForm.detailedContent')}<span className=\"text-red-500\">*</span>\n                  </label>\n                  {isDrawerOpen && (\n                    <div className=\"relative mt-1\">\n                      <SopMarkdown\n                        tools={tools}\n                        defaultValue={sopForm.content}\n                        onChange={(val) => handleInputChange('content', val)}\n                        className=\"h-full text-lg\"\n                      />\n                      <div className=\"absolute bottom-0 right-0 bg-white/80 px-2 py-1 rounded text-xs text-gray-500\">\n                        {charCount.content}/{MAX_LENGTHS.content}\n                      </div>\n                    </div>\n                  )}\n                  {/* <Textarea\n                  id=\"sop-content\"\n                  maxLength={50000}\n                  ref={contentInputRef}\n                  rows={6}\n                  value={sopForm.content}\n                  onChange={(e) => handleInputChange('content', e.target.value)}\n                  className={`mt-1 block w-full border ${errors.content ? 'border-red-500' : 'border-gray-300'} rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-blue-500 focus:border-blue-500`}\n                  placeholder={t('sopForm.contentPlaceholder')}\n                /> */}\n                  <div className=\"flex justify-between\">\n                    {errors.content && (\n                      <p className=\"mt-0 text-sm text-red-600\">{errors.content}</p>\n                    )}\n\n                  </div>\n                </div>\n\n                <div className=\"flex-shrink-0 px-4 py-2 border-t border-gray-200 flex justify-end space-x-3\">\n                  <Button type=\"button\" variant='outline' onClick={() => setIsDrawerOpen(false)}>{t('sopForm.cancel')}</Button>\n                  <Button\n                    type=\"submit\"\n                    onClick={handleSubmit}\n                    disabled={isSubmitting}\n                  >\n                    {isSubmitting ? (\n                      <>\n                        <LoadIcon className=\"animate-spin mr-2\" />\n                        {t('sopForm.saving')}\n                      </>\n                    ) : (\n                      t('sopForm.save')\n                    )}\n                  </Button>\n                </div>\n              </form>\n            )}\n          </div>\n        </div>\n      </SheetContent>\n    </Sheet>\n  );\n};\nexport default SopFormDrawer;"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopFromRecord.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/bs-ui/dialog';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/bs-ui/sheet';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { sopApi } from \"@/controllers/API/linsight\";\nimport { captureAndAlertRequestErrorHoc } from '@/controllers/request';\nimport { TaskFlowContent } from \"@/workspace/SopTasks\";\nimport { Check, ChevronDown, ChevronUp, Search, Star } from 'lucide-react';\nimport * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LoadIcon } from '../bs-icons/loading';\nimport AutoPagination from '../bs-ui/pagination/autoPagination';\nimport { Tabs, TabsList, TabsTrigger } from '../bs-ui/tabs';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../bs-ui/tooltip';\nimport Tip from '../bs-ui/tooltip/tip';\nimport SopMarkdown from './SopMarkdown';\n\ninterface SopRecord {\n  id: number;\n  name: string;\n  description: string;\n  user_id: number;\n  content: string;\n  rating: number;\n  linsight_version_id: string;\n  create_time: string;\n  update_time: string;\n  user_name: string;\n}\n\nexport default function ImportFromRecordsDialog({ open, tools, onOpenChange, setDuplicateNames, duplicateNames, duplicateDialogOpen, setDuplicateDialogOpen, importFormData }) {\n  const { toast } = useToast();\n  const { t } = useTranslation();\n  const [searchTerm, setSearchTerm] = useState('');\n  const [records, setRecords] = useState<SopRecord[]>([]);\n  const [currentRecord, setCurrentRecord] = useState<SopRecord | null>(null);\n  const [loading, setLoading] = useState(false);\n  const [page, setPage] = useState(1);\n  const [pageSize, setPageSize] = useState(10);\n  const [total, setTotal] = useState(0);\n  const [sortConfig, setSortConfig] = useState({\n    key: 'create_time',\n    direction: 'desc' as 'asc' | 'desc'\n  });\n  const [linsight, setLinsight] = useState({});\n  const [sopShowcase, setSopShowcase] = useState(false);\n  const [activeTab, setActiveTab] = useState('manual');\n  const [pageInputValue, setPageInputValue] = useState(page.toString());\n  const [selectedRecordIds, setSelectedRecordIds] = useState<number[]>([]);\n  const [allRecords, setAllRecords] = useState<SopRecord[]>([]);\n  const [selectedRecords, setSelectedRecords] = useState<SopRecord[]>([]);\n  const [isSavingAsNew, setIsSavingAsNew] = useState(false);\n  const [isOverwriting, setIsOverwriting] = useState(false);\n  const isMountedRef = useRef(false);\n  // Obtain SOP records \n  const fetchRecords = async (isSearch = false) => {\n    setLoading(true);\n    try {\n      const params = {\n        keyword: searchTerm,\n        // Fix 1: Always pass pagination parameters, regardless of whether a search is performed or not\n        page,\n        page_size: pageSize,\n        sort: sortConfig.direction,\n      };\n\n      const res = await sopApi.GetSopRecord(params);\n\n      if (Array.isArray(res)) {\n        setAllRecords(res);\n        setRecords(res);\n        setTotal(res.length);\n        if (res.length > 0 && !currentRecord) {\n          setCurrentRecord(res[0]);\n        }\n      } else if (res?.list) {\n        setAllRecords(res.list);\n        setRecords(res.list);\n        setTotal(res.total);\n        if (res.list.length > 0 && !currentRecord) {\n          setCurrentRecord(res.list[0]);\n        }\n      }\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  useEffect(() => {\n    if (!open) {\n      setIsOverwriting(false);\n      setIsSavingAsNew(false);\n    }\n  }, [open]);\n  // init\n  useEffect(() => {\n    if (open) {\n      fetchRecords();\n    } else {\n      setRecords([]);\n      setSelectedRecordIds([]);\n      setCurrentRecord(null);\n      setSearchTerm('');\n      setPage(1);\n    }\n  }, [open]);\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      if (open) {\n        setPage(1);  // Reset to the first page when searching \n        fetchRecords(!!searchTerm);\n      }\n    }, 500);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n  //  Reload data when search and pagination change \n  useEffect(() => {\n    if (open) {\n      fetchRecords(!!searchTerm);\n    }\n  }, [page, pageSize, sortConfig]);\n\n  // sort\n  const sortedRecords = useMemo(() => {\n    return [...records].sort((a, b) => {\n      const aValue = a[sortConfig.key as keyof SopRecord];\n      const bValue = b[sortConfig.key as keyof SopRecord];\n\n      if (aValue === null || bValue === null) return 0;\n\n      if (aValue < bValue) {\n        return sortConfig.direction === 'asc' ? -1 : 1;\n      }\n      if (aValue > bValue) {\n        return sortConfig.direction === 'asc' ? 1 : -1;\n      }\n      return 0;\n    });\n  }, [records, sortConfig]);\n\n  // input change\n  const handlePageInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value;\n    if (value === '' || /^\\d+$/.test(value)) {\n      setPageInputValue(value);\n    }\n  };\n\n  // page change\n  const handlePageInputConfirm = () => {\n    if (pageInputValue === '') {\n      setPageInputValue(page.toString());\n      return;\n    }\n\n    const newPage = parseInt(pageInputValue);\n    const maxPage = Math.max(1, Math.ceil(total / pageSize));\n\n    if (newPage >= 1 && newPage <= maxPage) {\n      setPage(newPage);\n    } else {\n      setPageInputValue(page.toString());\n    }\n  };\n\n  const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'Enter') {\n      handlePageInputConfirm();\n    }\n  };\n\n  // Handle record selection and multi-selection\n  const handleSelectRecord = (record: SopRecord) => setCurrentRecord(record);\n\n  const handleToggleSelect = (record: SopRecord, e: React.MouseEvent) => {\n    e.stopPropagation();\n    setSelectedRecordIds(prev => {\n      const newIds = prev.includes(record.id)\n        ? prev.filter(id => id !== record.id)\n        : [...prev, record.id];\n\n      // update selectedRecords\n      setSelectedRecords(prevRecords =>\n        prev.includes(record.id)\n          ? prevRecords.filter(r => r.id !== record.id)\n          : [...prevRecords, record]\n      );\n\n      return newIds;\n    });\n    setCurrentRecord(record);\n  };\n  // Select All/Deselect All on Current Page\n  const handleToggleSelectAll = () => {\n    const currentPageIds = records.map(r => r.id);\n    const allSelected = currentPageIds.every(id => selectedRecordIds.includes(id));\n\n    setSelectedRecordIds(prev =>\n      allSelected\n        ? prev.filter(id => !currentPageIds.includes(id))\n        : [...new Set([...prev, ...currentPageIds])]\n    );\n\n    // update selectedRecords\n    setSelectedRecords(prev => {\n      if (allSelected) {\n        return prev.filter(r => !currentPageIds.includes(r.id));\n      } else {\n        const newRecords = records.filter(r => !prev.some(p => p.id === r.id));\n        return [...prev, ...newRecords];\n      }\n    });\n  };\n\n  const importSops = async (recordsToImport: SopRecord[], overwrite = false, saveNew = false) => {\n    setLoading(true);\n    try {\n      const res = await captureAndAlertRequestErrorHoc(\n        sopApi.SyncSopRecord({\n          record_ids: recordsToImport.map(r => r.id),\n          override: overwrite,\n          save_new: saveNew\n        })\n      );\n\n      if (res === false) return;\n\n      if (res?.repeat_name) {\n        setDuplicateNames(res.repeat_name);\n        setDuplicateDialogOpen(true);\n        return;\n      }\n\n      toast({ variant: 'success', description: t('importLinsight.success') });\n      onOpenChange(false);\n\n      // clear\n      setSelectedRecordIds([]);\n      setSelectedRecords([]);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const markdownRef = useRef(null);\n  useEffect(() => {\n    markdownRef.current?.setValue(currentRecord?.content || '');\n  }, [currentRecord])\n  useEffect(() => {\n    const fetchSopShowcase = async () => {\n      const res = await sopApi.getSopShowcaseDetail({ linsight_version_id: currentRecord?.linsight_version_id });\n      if (res.execute_tasks.length === 0) {\n        setSopShowcase(true);\n        setLinsight({});\n        return;\n      }\n      setLinsight({\n        ...res.version_info,\n        tasks: res.execute_tasks,\n        summary: ''\n      });\n      setSopShowcase(false);\n    }\n    fetchSopShowcase();\n  }, [currentRecord])\n\n  // When switching records, reset the Tab to \"guidebook\" \n  useEffect(() => {\n    if (currentRecord) {\n      setActiveTab('manual');\n    }\n  }, [currentRecord]);\n  return (\n    <Sheet open={open} onOpenChange={onOpenChange}>\n      <SheetContent className=\"w-[87.5vw] min-w-[87.5vw]\">\n        <div className=\"flex h-full\" onClick={e => e.stopPropagation()}>\n          {/* left list */}\n          <div className=\"p-6 w-[50%] min-w-160\">\n            <SheetHeader>\n              <SheetTitle>{t('importLinsight.title')}</SheetTitle>\n            </SheetHeader>\n\n            <div className=\"relative mt-6 mb-6 w-[100%]\">\n              <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n              <input\n                type=\"text\"\n                placeholder={t('importLinsight.searchPlaceholder')}\n                className=\"w-full pl-10 pr-4 py-2 rounded-md border focus:outline-none focus:ring-2 focus:ring-primary\"\n                value={searchTerm}\n                onChange={(e) => setSearchTerm(e.target.value)}\n              />\n            </div>\n\n            <div className=\"flex-1 overflow-y-auto h-[calc(100%-180px)]\">\n              {loading ? (\n                <div className=\"flex justify-center items-center h-full bg-gray-50 rounded-lg\">\n                  <div className=\"flex flex-col items-center gap-2\">\n                    <LoadIcon className=\"animate-spin w-10 h-10 text-primary\" />\n                    <span>{t('importLinsight.loading')}</span>\n                  </div>\n                </div>\n              ) : records.length === 0 ? (\n                <div className=\"text-center text-muted-foreground py-4\">\n                  {searchTerm ? t('importLinsight.noMatchingRecords') : t('importLinsight.noRecords')}\n                </div>\n              ) : (\n                <div className=\"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden flex flex-col h-full\">\n                  <div className=\"flex-1 overflow-y-auto\">\n                    <table className=\"min-w-full divide-y divide-gray-200\">\n                      <thead className=\"bg-gray-50 sticky top-0 z-10\">\n                        <tr>\n                          <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            <button\n                              type=\"button\"\n                              className={`h-4 w-4 rounded border flex items-center justify-center ${records.length > 0 &&\n                                records.every(r => selectedRecordIds.includes(r.id))\n                                ? 'bg-blue-600 border-blue-600'\n                                : 'bg-white border-gray-300'\n                                } ${loading ? 'opacity-50 cursor-not-allowed' : ''}`}\n                              onClick={handleToggleSelectAll}\n                              disabled={loading}\n                            >\n                              {records.length > 0 &&\n                                records.every(r => selectedRecordIds.includes(r.id)) && (\n                                  <Check className=\"w-3 h-3 text-white\" />\n                                )}\n                            </button>\n                          </th>\n                          <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            {t('importLinsight.columns.name')}\n                          </th>\n                          <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            <div className=\"flex items-center\">\n                              {t('importLinsight.columns.createTime')}\n                              <div className=\"flex flex-col ml-1\">\n                                <button onClick={() => setSortConfig({\n                                  key: 'create_time',\n                                  direction: 'asc'\n                                })}>\n                                  <ChevronUp className={`w-3 h-3 ${sortConfig.key === 'create_time' && sortConfig.direction === 'asc' ? 'text-blue-500' : 'text-gray-400'}`} />\n                                </button>\n                                <button onClick={() => setSortConfig({\n                                  key: 'create_time',\n                                  direction: 'desc'\n                                })}>\n                                  <ChevronDown className={`w-3 h-3 ${sortConfig.key === 'create_time' && sortConfig.direction === 'desc' ? 'text-blue-500' : 'text-gray-400'}`} />\n                                </button>\n                              </div>\n                            </div>\n                          </th>\n                          <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            {t('importLinsight.columns.createUser')}\n                          </th>\n                          <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            {t('importLinsight.columns.rating')}\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody className=\"bg-white divide-y divide-gray-200\">\n                        {sortedRecords.map((record) => (\n                          <tr\n                            key={record.id}\n                            className={`cursor-pointer ${currentRecord?.id === record.id ? 'bg-blue-50' : ''}`}\n                            onClick={() => handleSelectRecord(record)}\n                          >\n                            <td className=\"px-6 py-4 whitespace-nowrap\">\n                              <button\n                                type=\"button\"\n                                className={`h-4 w-4 rounded border flex items-center justify-center ${selectedRecordIds.includes(record.id)\n                                  ? 'bg-blue-600 border-blue-600'\n                                  : 'bg-white border-gray-300'\n                                  } ${loading ? 'opacity-50 cursor-not-allowed' : ''}`}\n                                onClick={(e) => !loading && handleToggleSelect(record, e)}\n                                disabled={loading}\n                              >\n                                {selectedRecordIds.includes(record.id) && (\n                                  <Check className=\"w-3 h-3 text-white\" />\n                                )}\n                              </button>\n                            </td>\n                            <td className=\"px-6 py-4 whitespace-nowrap max-w-[200px]\">\n                              <div className=\"text-sm font-medium text-gray-900 truncate\">\n                                {record.name}\n                              </div>\n                            </td>\n                            <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-500\">\n                              {new Date(record.create_time).toLocaleString()}\n                            </td>\n                            <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-500\">\n                              {record.user_name}\n                            </td>\n                            <td className=\"px-6 py-4 whitespace-nowrap\">\n                              <div className=\"flex items-center\">\n                                {[...Array(5)].map((_, i) => (\n                                  <Star\n                                    key={i}\n                                    className={`w-4 h-4 ${i < (record.rating || 0) ? 'text-yellow-400' : 'text-gray-300'}`}\n                                  />\n                                ))}\n                              </div>\n                            </td>\n                          </tr>\n                        ))}\n                      </tbody>\n                    </table>\n                  </div>\n                  {records.length > 0 && (\n                    <div className=\"px-6 py-3 flex items-center justify-between border-t border-gray-200\">\n                      <div className=\"flex items-center whitespace-nowrap min-w-16\">\n                        <span className=\"text-sm  text-gray-700\">\n                          {t('importLinsight.pagination.totalRecords', { total })}\n                        </span>\n                      </div>\n                      <div className=\"flex items-center ml-4\">\n                        <AutoPagination\n                          page={page}\n                          pageSize={pageSize}\n                          total={total}\n                          onChange={setPage}\n                        />\n                        <span className=\"text-sm text-gray-700 mr-2 whitespace-nowrap\">\n                          {t('importLinsight.pagination.goToPage')}\n                        </span>\n                        <input\n                          type=\"number\"\n                          min=\"1\"\n                          max={Math.max(1, Math.ceil(total / pageSize))}\n                          value={pageInputValue}\n                          onChange={handlePageInputChange}\n                          onBlur={handlePageInputConfirm}\n                          onKeyDown={handleKeyDown}\n                          className=\"w-16 px-2 py-1 border rounded text-sm text-center\"\n                          disabled={loading}\n                        />\n                        <span className=\"text-sm text-gray-700 ml-2 whitespace-nowrap\">\n                          {t('importLinsight.pagination.page')}\n                        </span>\n                        {loading && <LoadIcon className=\"animate-spin w-4 h-4 ml-2\" />}\n                      </div>\n                    </div>\n                  )}\n                </div>\n              )}\n            </div>\n\n            <div className=\"flex items-center justify-start mt-4\">\n              <span>{t('importLinsight.selectedCount', { count: selectedRecordIds.length })}</span>\n              <Button\n                onClick={() => {\n                  importSops(selectedRecords, false, false);\n                }}\n                disabled={selectedRecordIds.length === 0 || loading}\n                className=\"ml-4\"\n              >\n                {loading ? t('importLinsight.loading') : t('importLinsight.batchImport')}\n              </Button>\n            </div>\n          </div>\n\n          {/* right viewpanne */}\n          <div className=\"flex-1 bg-[#fff] p-6 h-full flex flex-col w-[50%]\">\n            {currentRecord ? (\n              <Tabs value={activeTab} onValueChange={setActiveTab} className=\"flex flex-col h-full\">\n                <div className=\"flex items-center justify-between gap-4\">\n                  <h3 className=\"text-lg font-semibold truncate\">{currentRecord.name}</h3>\n                  <TabsList className='mr-4'>\n                    <TabsTrigger value=\"manual\">{t('importLinsight.guidelineManual')}</TabsTrigger>\n                    {sopShowcase ? <Tip content={t('importLinsight.noRunningResult')} side=\"bottom\">\n                      <span className=\"inline-block\">\n                        <TabsTrigger value=\"result\" disabled={sopShowcase}>{t('importLinsight.runningResult')}</TabsTrigger>\n                      </span>\n                    </Tip> : <TabsTrigger value=\"result\" disabled={sopShowcase}>{t('importLinsight.runningResult')}</TabsTrigger>}\n                  </TabsList>\n                </div>\n\n                {activeTab === 'manual' && (\n                  <div className=\"flex-1 flex flex-col\">\n                    <Tooltip>\n                      <TooltipTrigger asChild>\n                        <p className=\"text-muted-foreground truncate\">\n                          {currentRecord.description}\n                        </p>\n                      </TooltipTrigger>\n                      <TooltipContent>\n                        <p className=\"max-w-[300px] break-words\">{currentRecord.description}</p>\n                      </TooltipContent>\n                    </Tooltip>\n                    <div className=\"flex-1 overflow-y-auto bg-gray-50 rounded-md mt-2\">\n                      <SopMarkdown\n                        ref={markdownRef}\n                        defaultValue={currentRecord?.content}\n                        tools={tools}\n                        height='h-[calc(100vh-170px)]'\n                        className=\"h-full\"\n                        disabled={true}\n                      />\n                    </div>\n                    <div className=\"flex justify-start gap-2 pt-4\">\n                      <Button\n                        onClick={() => {\n                          if (!currentRecord) return;\n                          setSelectedRecordIds([]);\n                          setSelectedRecords([]);\n                          importSops([currentRecord]).then((hasDuplicate) => {\n                            if (hasDuplicate === false) {\n                              setDuplicateDialogOpen(true);\n                            }\n                          });\n                        }}\n                        disabled={!currentRecord || loading}\n                      >\n                        {loading ? t('importLinsight.loading') : t('importLinsight.importCurrent')}\n                      </Button>\n                    </div>\n                  </div>\n                )}\n\n                {activeTab === 'result' && (\n                  <div className=\"flex-1 flex flex-col\">\n                    <div className=\"flex-1 overflow-y-auto bg-gray-50 rounded-md p-4 text-sm text-gray-500\">\n                      <TaskFlowContent showFeedBack linsight={linsight} />\n                    </div>\n                    <div className=\"flex justify-start gap-2 pt-4\">\n                      <Button\n                        onClick={() => {\n                          if (!currentRecord) return;\n                          setSelectedRecordIds([]);\n                          setSelectedRecords([]);\n                          importSops([currentRecord]).then((hasDuplicate) => {\n                            if (hasDuplicate === false) {\n                              setDuplicateDialogOpen(true);\n                            }\n                          });\n                        }}\n                        disabled={!currentRecord || loading}\n                      >\n                        {loading ? t('importLinsight.loading') : t('importLinsight.importCurrent')}\n                      </Button>\n                    </div>\n                  </div>\n                )}\n              </Tabs>\n            ) : (\n              <div className=\"flex justify-center items-center h-full text-muted-foreground\">\n                {t('importLinsight.preview.noSelection')}\n              </div>\n            )}\n          </div>\n        </div>\n      </SheetContent>\n      <Dialog open={duplicateDialogOpen} onOpenChange={setDuplicateDialogOpen}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>{t('importLinsight.duplicateDialog.title')}</DialogTitle>\n            <DialogDescription>\n              {t('importLinsight.duplicateDialog.description')}\n            </DialogDescription>\n          </DialogHeader>\n          <div className=\"max-h-[300px] overflow-y-auto border rounded-md p-4\">\n            {duplicateNames.length > 0 ? (\n              duplicateNames.map((name, index) => (\n                <div key={index} className=\"py-2 border-b last:border-b-0\">\n                  {name}\n                </div>\n              ))\n            ) : (\n              <div className=\"text-center py-2 text-muted-foreground\">\n                {t('importLinsight.duplicateDialog.noDuplicateNames')}\n              </div>\n            )}\n          </div>\n          <div className=\"flex justify-end gap-2 pt-4\">\n            <Button\n              variant=\"outline\"\n              onClick={async () => {\n                setIsSavingAsNew(true);\n                if (importFormData) {\n                  const newFormData = new FormData();\n                  for (const [key, value] of importFormData.entries()) {\n                    if (key === 'override' || key === 'save_new') continue;\n                    newFormData.append(key, value);\n                  }\n\n                  newFormData.append('override', 'false');\n                  newFormData.append('save_new', 'true');\n\n                  try {\n                    setLoading(true);\n                    await captureAndAlertRequestErrorHoc(sopApi.UploadSopRecord(newFormData))\n                    toast({ variant: 'success', description: t('importLinsight.success') });\n                    setDuplicateDialogOpen(false);\n                    onOpenChange(false);\n                  } finally {\n                    setLoading(false);\n                    setIsSavingAsNew(false);\n                  }\n                } else {\n                  const recordsToUse = selectedRecords.length > 0\n                    ? selectedRecords\n                    : currentRecord\n                      ? [currentRecord]\n                      : [];\n                  importSops(recordsToUse, false, true);\n                  setDuplicateDialogOpen(false);\n                }\n              }}\n            >\n              {isSavingAsNew ? (\n                <div className=\"flex items-center gap-2\">\n                  <LoadIcon className=\"animate-spin w-4 h-4\" />\n                  {t('importLinsight.duplicateDialog.savingAsNew')}\n                </div>\n              ) : t('importLinsight.duplicateDialog.saveAsNew')}\n            </Button>\n            <Button\n              onClick={async () => {\n                setIsOverwriting(true);\n                if (importFormData) {\n                  const newFormData = new FormData();\n                  for (const [key, value] of importFormData.entries()) {\n                    if (key === 'override' || key === 'save_new') continue;\n                    newFormData.append(key, value);\n                  }\n                  newFormData.append('override', 'true');\n                  newFormData.append('save_new', 'false');\n\n                  try {\n                    setLoading(true);\n                    await sopApi.UploadSopRecord(newFormData);\n                    toast({ variant: 'success', description: t('importLinsight.success') });\n                    setDuplicateDialogOpen(false);\n                    onOpenChange(false);\n                  } catch (error) {\n                    toast({ variant: 'error', description: t('importLinsight.error') });\n                    if (isMountedRef.current) {\n                      setIsOverwriting(false);\n                    }\n                  } finally {\n                    setLoading(false);\n                    if (isMountedRef.current) {\n                      setIsOverwriting(false);\n                    }\n                  }\n                } else {\n                  const recordsToUse = selectedRecordIds.length > 0\n                    ? records.filter(r => selectedRecordIds.includes(r.id))\n                    : currentRecord\n                      ? [currentRecord]\n                      : [];\n                  try {\n                    await importSops(recordsToUse, true, false);\n                    setDuplicateDialogOpen(false);\n                  } finally {\n                    if (isMountedRef.current) {\n                      setIsOverwriting(false);\n                    }\n                  }\n                }\n              }}\n            >\n              {isOverwriting ? (\n                <div className=\"flex items-center gap-2\">\n                  <LoadIcon className=\"animate-spin w-4 h-4\" />\n                  {t('importLinsight.duplicateDialog.overwriting')}\n                </div>\n              ) : t('importLinsight.duplicateDialog.overwrite')}\n            </Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </Sheet>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopMarkdown.tsx",
    "content": "import { getLinsightTools, getPersonalKnowledgeInfo, readFileLibDatabase } from \"@/controllers/API\";\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useQuery } from \"react-query\";\nimport Vditor from \"vditor\";\nimport \"vditor/dist/index.css\";\nimport SopToolsDown from \"./SopToolsDown\";\nimport { useTranslation } from \"react-i18next\";\n\n// Error tool tooltip\nconst ToolErrorTip = () => {\n    const [tooltipState, setTooltipState] = useState({\n        show: false,\n        message: 'Error variable',\n        position: { left: 0, top: 0 }\n    });\n    const currentElementRef = useRef<HTMLElement | null>(null);\n    const tooltipRef = useRef<HTMLDivElement>(null);\n\n    // Handle mouseover event\n    const handleMouseOver = (e: MouseEvent) => {\n        const target = (e.target as HTMLElement).closest?.('.linsi-error');\n        if (!(target instanceof HTMLElement)) return;\n\n        currentElementRef.current = target;\n        const rect = target.getBoundingClientRect();\n        setTooltipState({\n            show: true,\n            message: '⚠️ Tool or resource not found, please re-select',\n            position: {\n                left: rect.left + rect.width / 2,\n                top: rect.top - 4\n            }\n        });\n    };\n\n    // Handle mouseout event\n    const handleMouseOut = (e: MouseEvent) => {\n        const relatedTarget = e.relatedTarget as HTMLElement;\n        if (\n            !relatedTarget ||\n            !currentElementRef.current?.contains(relatedTarget) &&\n            !tooltipRef.current?.contains(relatedTarget)\n        ) {\n            setTooltipState(prev => ({ ...prev, show: false }));\n        }\n    };\n\n    // Handle scroll event\n    const handleScroll = () => {\n        if (currentElementRef.current && tooltipState.show) {\n            const rect = currentElementRef.current.getBoundingClientRect();\n            setTooltipState(prev => ({\n                ...prev,\n                position: {\n                    left: rect.left + rect.width / 2,\n                    top: rect.top - 4\n                }\n            }));\n        }\n    };\n\n    useEffect(() => {\n        const container = document.getElementById('sop-vditor');\n        if (!container) return;\n\n        container.addEventListener('mouseover', handleMouseOver as EventListener);\n        container.addEventListener('mouseout', handleMouseOut as EventListener);\n        window.addEventListener('scroll', handleScroll, true);\n\n        return () => {\n            container.removeEventListener('mouseover', handleMouseOver as EventListener);\n            container.removeEventListener('mouseout', handleMouseOut as EventListener);\n            window.removeEventListener('scroll', handleScroll, true);\n        };\n    }, []);\n\n    return (\n        <div\n            ref={tooltipRef}\n            className={`pointer-events-none fixed transition-opacity ${tooltipState.show ? 'opacity-100' : 'opacity-0'\n                }`}\n            style={{\n                left: tooltipState.position.left,\n                top: tooltipState.position.top,\n                transform: 'translateX(-50%) translateY(-100%)'\n            }}\n        >\n            <div className=\"bg-red-100 text-red-500 text-xs px-2 py-1 rounded shadow-lg\">\n                {tooltipState.message}\n                <div className=\"absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-full w-0 h-0 border-l-4 border-r-4 border-t-4 border-l-transparent border-r-transparent border-t-red-100\" />\n            </div>\n        </div>\n    );\n};\n\ninterface MarkdownProps {\n    defaultValue: string,\n    onChange?: any;\n    disabled?: boolean;\n    tools?: any;\n    className?: string;\n    height?: string;\n}\n\ninterface MarkdownRef {\n    getValue: () => string;\n}\n\nconst SopMarkdown = forwardRef<MarkdownRef, MarkdownProps>((props, ref) => {\n    const { value, tools, height = 'h-[calc(100vh-420px)]', defaultValue, disabled = false, onChange, className } = props;\n\n    const veditorRef = useRef<any>(null);\n    const inserRef = useRef<any>(null);\n    const boxRef = useRef<any>(null);\n    const scrollBoxRef = useRef<any>(null);\n\n    useAutoHeight(boxRef);\n\n    const { nameToValueRef, valueToNameRef, buildTreeData: toolOptions } = useSopTools(tools)\n    const [RenderingCompleted, setRenderingCompleted] = useState(false);\n\n    useEffect(() => {\n        const vditorDom = document.getElementById('sop-vditor');\n        if (!vditorDom) return;\n\n        const vditor = new Vditor(\"sop-vditor\", {\n            value: defaultValue,\n            cdn: location.origin + __APP_ENV__.BASE_URL + '/vditor',\n            toolbar: [],\n            cache: {\n                enable: false\n            },\n            height: boxRef.current.clientHeight,\n            mode: \"wysiwyg\",\n            placeholder: \"\",\n            after: () => {\n                setRenderingCompleted(true);\n                veditorRef.current = vditor;\n                scrollBoxRef.current = vditorDom.querySelector('.vditor-reset');\n                // Intercept paste\n                const editorElement = vditor.vditor[vditor.vditor.currentMode].element;\n                getMarkdownPaste(editorElement, (text) => {\n                    const value = replaceBracesToMarkers(text, nameToValueRef.current);\n                    const name = replaceMarkersToBraces(value, valueToNameRef.current, nameToValueRef.current);\n                    vditor.insertValue(name);\n                })\n                // Disable\n                disabled ? vditor.disabled() : vditor.enable();\n            },\n            input: (val) => onChange(replaceBracesToMarkers(val, nameToValueRef.current)),\n            hint: {\n                parse: false, // Must\n                placeholder: {\n                    delay: 2000,\n                    text: \"输入 @ 添加知识库、文件或工具\",\n                },\n                extend: [{\n                    key: '@',\n                    callback(open, insert) {\n                        const pos = vditor.getCursorPosition()\n                        // console.log('pos :>> ', open, pos);\n                        setMenuPosition({ left: pos.left, top: pos.top + 28 });\n                        setMenuOpen(open);\n\n                        inserRef.current = insert;\n                    }\n                }]\n            },\n            preview: {\n                delay: 500,\n                markdown: {\n                    toc: true,\n                    mark: true,\n                    footnotes: true,\n                    autoSpace: true,\n                },\n                math: {\n                    inlineDigit: true,\n                }\n            },\n            tab: \"\\t\",\n            offPaste: true\n        });\n\n        return () => {\n            veditorRef.current?.destroy();\n            veditorRef.current = null;\n        };\n    }, []);\n\n    useEffect(() => {\n        // Sync user input value to markdown\n        if (defaultValue === '' || defaultValue) {\n            // Show value\n            veditorRef.current?.setValue(replaceMarkersToBraces(defaultValue, valueToNameRef.current, nameToValueRef.current))\n        }\n    }, [RenderingCompleted])\n\n    // Expose methods to the parent component\n    useImperativeHandle(ref, () => ({\n        getValue: () => {\n            return replaceBracesToMarkers(veditorRef.current?.getValue(), nameToValueRef.current)\n        },\n        setValue: (val) => {\n            veditorRef.current && veditorRef.current?.setValue(replaceMarkersToBraces(val, valueToNameRef.current, nameToValueRef.current))\n        }\n    }));\n\n    const [menuOpen, setMenuOpen] = useState(false);\n    const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 });\n\n    const handleChange = (val) => {\n        inserRef.current(`{{@${val.label}@}}`);\n        setMenuOpen(false)\n    }\n\n    useAtTip(scrollBoxRef);\n\n    return <div ref={boxRef} className={\"relative border rounded-md bg-[#fff] \" + height}>\n        <div id=\"sop-vditor\" className=\"linsight-vditor rounded-md border-none\" />\n        {/* Tool selection */}\n        <SopToolsDown\n            open={menuOpen}\n            parentRef={boxRef}\n            position={menuPosition}\n            options={toolOptions}\n            onChange={handleChange}\n            onClose={() => setMenuOpen(false)}\n        />\n        <ToolErrorTip />\n    </div >;\n});\n\n\nexport default SopMarkdown;\n\n\n// Tool integration\nconst useSopTools = (tools) => {\n    const nameToValueRef = useRef({});\n    const valueToNameRef = useRef({});\n    const { t } = useTranslation('tool');\n\n    const files = []\n    const { data: orgTools } = useQuery({\n        queryKey: ['OrgTools'],\n        queryFn: () => readFileLibDatabase({ page: 1, pageSize: 400, type: 0 }),\n        select(data) {\n            return data?.data;\n        },\n        refetchOnWindowFocus: false,\n        refetchOnReconnect: false,\n    });\n\n    const { data: personalTool } = useQuery({\n        queryKey: ['PersonalTools'],\n        queryFn: () => getPersonalKnowledgeInfo(),\n        refetchOnWindowFocus: false,\n        refetchOnReconnect: false,\n    });\n\n    const { data: linsightTools } = useQuery({\n        queryKey: ['LinsightTools'],\n        queryFn: getLinsightTools,\n        refetchOnWindowFocus: false,\n        refetchOnReconnect: false,\n        refetchOnMount: false,\n    });\n\n    // Combine data into a secondary tree structure\n    const buildTreeData = useMemo(() => {\n        const tree: { label: string; value: string; desc: string; children: any[] }[] = [];\n\n        // 1. Convert files data\n        if (files && files.length > 0) {\n            const fileNode = {\n                label: t('uploadFile'),\n                value: \"\",\n                desc: '',\n                children: []\n            };\n            fileNode.children = files.map(file => {\n                const name = file.file_name;\n                const value = `${file.file_name}的文件储存信息:{'文件储存在语义检索库中的id':'${file.file_id}','文件储存地址':'./${decodeURIComponent(file.markdown_filename)}'}`;\n                nameToValueRef.current[name] = value;\n                valueToNameRef.current[value] = name;\n                return {\n                    label: file.file_name,\n                    value: file.file_id,\n                    desc: '',\n                    children: []\n                }\n            });\n            tree.push(fileNode);\n        }\n\n        // 2. Convert orgTools data\n        if (orgTools && orgTools.length > 0) {\n            tree.push({\n                label: t('organizeKnowledgeBase'),\n                value: \"org_knowledge_base\", // 使用特殊标识避免ID冲突\n                desc: '',\n                children: orgTools.map(tool => {\n                    const name = tool.name;\n                    const value = `${tool.name}的储存信息:{'知识库储存在语义检索库中的id':'${tool.id}'}`\n                    nameToValueRef.current[name] = value;\n                    valueToNameRef.current[value] = name;\n                    return {\n                        label: tool.name,\n                        value: tool.id,\n                        desc: tool.description,\n                        children: []\n                    }\n                })\n            });\n        }\n\n        // 3. Convert PersonalTool data (single object to array)\n        if (personalTool && personalTool[0]) {\n            tree.push({\n                label: t(personalTool[0].name),\n                value: personalTool[0].id,\n                desc: '',\n                children: [] // Personal knowledge base has no children\n            });\n            const name = t(personalTool[0].name);\n            const value = `${personalTool[0].name}的储存信息:{'知识库储存在语义检索库中的id':'${personalTool[0].id}'}`\n            nameToValueRef.current[name] = value;\n            valueToNameRef.current[value] = name;\n        }\n\n        // 4. Convert linsightTools data\n        if (linsightTools && linsightTools.length > 0) {\n            linsightTools.forEach(toolGroup => {\n                tree.push({\n                    label: t(toolGroup.name),\n                    value: toolGroup.id,\n                    desc: t(toolGroup.name + 'desc'),\n                    children: (toolGroup.children || []).map(child => {\n                        const name = t(child.name);\n                        const value = `${child.tool_key}`\n                        nameToValueRef.current[name] = value;\n                        valueToNameRef.current[value] = name;\n                        return {\n                            label: name,\n                            value: child.tool_key,\n                            desc: t(child.name + 'desc'),\n                            children: [] // No children for second-level nodes\n                        }\n                    })\n                });\n            });\n        }\n        // 5. Convert tools data\n        if (tools && tools.length > 0) {\n            tools.forEach(toolGroup => {\n                const isPreset = toolGroup.is_preset === 1;\n                toolGroup.children.length && tree.push({\n                    label: isPreset ? t(`categories.${toolGroup.name}.name`) : toolGroup.name,\n                    value: toolGroup.id,\n                    desc: isPreset ? t(`categories.${toolGroup.name}.desc`) : toolGroup.description,\n                    children: (toolGroup.children || []).map(child => {\n                        const name = isPreset ? t(`tools.${child.tool_key}.name`) : child.name;\n                        const value = `${child.tool_key}`\n                        nameToValueRef.current[name] = value;\n                        valueToNameRef.current[value] = name;\n                        return {\n                            label: name,\n                            value: child.tool_key,\n                            desc: isPreset ? t(`tools.${child.tool_key}.desc`) : child.desc,\n                            children: []\n                        }\n                    })\n                });\n            });\n        }\n\n        return tree;\n    }, [linsightTools, personalTool, orgTools, files, tools, t]);\n\n    console.log('Combined tree structure:', buildTreeData);\n    return { nameToValueRef, valueToNameRef, buildTreeData };\n};\n\n// Hide @ marker on scroll or resize\nconst useAtTip = (scrollBoxRef) => {\n    useEffect(() => {\n\n        const handleHideAtDom = () => {\n            const atDom = document.querySelector('#vditor-placeholder-at');\n            if (atDom) {\n                atDom.style.display = 'none';\n            }\n        };\n        let resizeObserver;\n        if (scrollBoxRef.current) {\n            scrollBoxRef.current.addEventListener('scroll', handleHideAtDom);\n            // Set up ResizeObserver for width changes\n            resizeObserver = new ResizeObserver(handleHideAtDom);\n            resizeObserver.observe(scrollBoxRef.current);\n        }\n\n        return () => {\n            if (scrollBoxRef.current) {\n                scrollBoxRef.current.removeEventListener('scroll', handleHideAtDom);\n            }\n            if (resizeObserver) {\n                resizeObserver.disconnect();\n            }\n        };\n    }, [scrollBoxRef.current])\n}\n// Auto resize height\nconst useAutoHeight = (boxRef) => {\n    useEffect(() => {\n        if (!boxRef.current) return;\n\n        const vditorDom = document.getElementById(\"sop-vditor\");\n        if (!vditorDom) return;\n\n        // Listen to boxRef height changes\n        const resizeObserver = new ResizeObserver((entries) => {\n            for (const entry of entries) {\n                const { height } = entry.contentRect;\n                vditorDom.style.height = `${height}px`;\n            }\n        });\n\n        resizeObserver.observe(boxRef.current);\n\n        // Unsubscribe on component unmount\n        return () => {\n            resizeObserver.disconnect();\n        };\n    }, []);\n}\n\n// Markdown paste logic\nconst getMarkdownPaste = async (editorElement, callBack) => {\n    // Listen to paste event\n    editorElement.addEventListener('paste', async (event) => {\n        // 1. Prevent default paste behavior\n        event.preventDefault();\n\n        // 2. Get clipboard data\n        const clipboardData = event.clipboardData || window.clipboardData;\n\n        // 3. Process different types of data\n        let processedContent = '';\n\n        // Case 1: Plain text processing\n        if (clipboardData.types.includes('text/plain')) {\n            const text = clipboardData.getData('text/plain');\n            processedContent = await processText(text); // Custom text processing function\n        }\n\n        // Case 2: HTML content processing (like copied from a webpage)\n        // else if (clipboardData.types.includes('text/html')) {\n        //     const html = clipboardData.getData('text/html');\n        //     processedContent = await processHTML(html); // Custom HTML processing function\n        // }\n\n        // Case 3: Image processing\n        // else if ([...clipboardData.items].some(item => item.type.includes('image'))) {\n        //     processedContent = await processImage(clipboardData); // Custom image processing\n        // }\n\n        // 4. Insert processed content\n        if (processedContent) {\n            // Use Vditor API to insert content\n            callBack(processedContent);\n            // Or directly manipulate DOM (for complex insertions)\n            // document.execCommand('insertHTML', false, processedContent);\n        }\n    });\n\n    // Example processing function\n    async function processText(text) {\n        // Implement your text processing logic here\n        return text;\n    }\n\n    async function processHTML(html) {\n        // Example: remove all HTML tags and keep only plain text\n        const doc = new DOMParser().parseFromString(html, 'text/html');\n        return doc.body.textContent || \"\";\n    }\n\n    async function processImage(clipboardData) {\n        // Get image file\n        const imageItem = [...clipboardData.items].find(item =>\n            item.type.includes('image')\n        );\n\n        if (!imageItem) return '';\n\n        const blob = imageItem.getAsFile();\n        const base64 = await convertBlobToBase64(blob);\n\n        // Return Markdown image format\n        return `![Pasted Image](${base64})`;\n    }\n\n    function convertBlobToBase64(blob) {\n        return new Promise((resolve) => {\n            const reader = new FileReader();\n            reader.onloadend = () => resolve(reader.result);\n            reader.readAsDataURL(blob);\n        });\n    }\n}\n\n/**\n * Forward replace: Replace @mark@ with {{value}} format\n * @param {string} inputStr - Input string\n * @param {Object} valueToNameMap - Mapping object {id: value}\n * @returns {string} - Replaced string\n */\nfunction replaceMarkersToBraces(inputStr, valueToNameMap, nameToValueMap) {\n    const regex = /@([^@\\r\\n]+)@/g;\n    return inputStr.replace(regex, (match, id) => {\n        // Check if the ID exists in the mapping\n        if (Object.prototype.hasOwnProperty.call(valueToNameMap, id)) {\n            return `{{@${valueToNameMap[id]}@}}`;\n        }\n        // Reverse map to original value\n        if (Object.prototype.hasOwnProperty.call(nameToValueMap, id)) {\n            return `{{@${id}@}}`;\n        }\n        // No validation for files\n        const pattern = /([^@{}'\\.]+?\\.[^@{}'\\s]+)的文件储存信息:\\{(['\"])[^'\"]+\\2:\\s*(['\"])[^'\"]*\\3,\\s*(['\"])[^'\"]+\\4:\\s*(['\"])[^'\"]*\\5\\}/g\n        const _match = pattern.exec(id);\n        if (_match?.[1]) {\n            // Special relationship\n            const name = _match[1];\n            const value = id;\n            valueToNameMap[value] = name;\n            nameToValueMap[name] = value;\n\n            return `{{@${_match[1]}@}}`;\n        }\n        // Check for file extensions .md, .html, .csv, .txt\n        if (/(\\.md)|(\\.html)|(\\.csv)|(\\.txt)/g.test(id.toLowerCase())) {\n            return `{{@${id}@}}`;\n        }\n        console.warn('ID not found during conversion  :>> ', valueToNameMap, id);\n        return `{{@${id}@}}`;\n    });\n}\n\n/**\n * Reverse replacement: Replace {{value}} with @id@ format\n * @param {string} inputStr - Input string\n * @param {Object} nameToValueMap - Mapping object {value: id}\n * @returns {string} - Replaced string\n */\nfunction replaceBracesToMarkers(inputStr, nameToValueMap) {\n    const regex = /\\{\\{[@#](.*?)[@#]\\}\\}/g;\n    return inputStr.replace(regex, (match, value) => {\n        // Check if the value exists in the mapping\n        if (Object.prototype.hasOwnProperty.call(nameToValueMap, value)) {\n            return `@${nameToValueMap[value]}@`;\n        }\n        console.warn('Tool not found during conversion  :>> ', nameToValueMap, value);\n        return `@${value}@`; // If not found, keep the original value\n    });\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopSearchBar.tsx",
    "content": "import { useDebounce } from \"@/util/hook\";\nimport { Search } from \"lucide-react\";\nimport { useEffect } from \"react\";\n\ninterface SopSearchBarProps {\n    value: string;\n    placeholder: string;\n    onChangeValue: (v: string) => void;\n    onSearch: (v: string) => void;\n    debounceMs?: number;\n    debounceKey?: any;\n}\n\nexport default function SopSearchBar({ value, placeholder, onChangeValue, onSearch, debounceMs = 500, debounceKey }: SopSearchBarProps) {\n    const debouncedSearch = useDebounce((v: string) => onSearch(v), debounceMs, false);\n\n    useEffect(() => {\n        return () => {\n            (debouncedSearch as any)?.cancel?.();\n        }\n    }, []);\n\n    useEffect(() => {\n        // Cancel the previous timeout when external dependencies change, and use the new debounce interval\n        (debouncedSearch as any)?.cancel?.();\n    }, [debounceKey]);\n\n    return (\n        <div className=\"relative flex-1 max-w-xs\">\n            <div className=\"relative\">\n                <input\n                    type=\"text\"\n                    placeholder={placeholder}\n                    className=\"w-full pl-10 pr-3 py-1.5 text-sm border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500\"\n                    value={value}\n                    onChange={(e) => {\n                        const newValue = e.target.value;\n                        onChangeValue(newValue);\n                        debouncedSearch(newValue);\n                    }}\n                    onKeyDown={(e) => {\n                        if (e.key === 'Enter') {\n                            (debouncedSearch as any)?.cancel?.();\n                            onSearch(value);\n                        }\n                    }}\n                />\n                <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400\" />\n            </div>\n        </div>\n    );\n}\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopTable.tsx",
    "content": "// components/SopTable.tsx\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { Check, Filter, Star } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LoadIcon } from '../bs-icons';\nimport { Button } from '../bs-ui/button';\nimport AutoPagination from '../bs-ui/pagination/autoPagination';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../bs-ui/tooltip';\n\nconst SopTable = ({\n    datalist,\n    selectedItems,\n    handleSelectItem,\n    handleSelectAll,\n    handleEdit,\n    handleDelete,\n    page,\n    pageSize,\n    total,\n    loading,\n    pageInputValue,\n    handlePageChange,\n    handlePageInputChange,\n    handlePageInputConfirm,\n    handleKeyDown,\n    onShowcaseFilterChange\n}) => {\n    // Whether the featured filter is selected: state management (similar to Files.tsx)\n    const [featuredSelectedFilters, setFeaturedSelectedFilters] = useState<number[]>([]);\n    const [featuredTempFilters, setFeaturedTempFilters] = useState<number[]>([]);\n    const [isFeaturedFilterOpen, setIsFeaturedFilterOpen] = useState(false);\n    const { t } = useTranslation()\n\n    const applyFeaturedFilters = () => {\n        setFeaturedSelectedFilters([...featuredTempFilters]);\n        setIsFeaturedFilterOpen(false);\n        // Pass to parent component: Only effective when selecting single 1 or 0; multiple selections or empty means no filter\n        if (Array.isArray(featuredTempFilters)) {\n            if (featuredTempFilters.length === 1) {\n                const value = featuredTempFilters[0];\n                onShowcaseFilterChange?.(value === 1 ? 1 : 0);\n            } else {\n                onShowcaseFilterChange?.(undefined);\n            }\n        } else {\n            onShowcaseFilterChange?.(undefined);\n        }\n    };\n\n    const resetFeaturedFilters = () => {\n        const empty: number[] = [];\n        setFeaturedTempFilters(empty);\n        setFeaturedSelectedFilters(empty);\n        onShowcaseFilterChange?.(undefined);\n        setIsFeaturedFilterOpen(false);\n    };\n\n    const handleFeaturedOpenChange = (open: boolean) => {\n        if (open) {\n            setFeaturedTempFilters([...featuredSelectedFilters]);\n        }\n        setIsFeaturedFilterOpen(open);\n    };\n\n    const ratingDisplay = (rating) => {\n        return rating > 0 ? (\n            <div className=\"flex items-center\">\n                {[...Array(5)].map((_, i) => (\n                    <Star\n                        key={i}\n                        className={`w-4 h-4 ${i < rating ? 'text-yellow-400' : 'text-gray-300'}`}\n                    />\n                ))}\n            </div>\n        ) : (\n            <span className=\"text-sm text-gray-400\">{t('importLinsight.noRatings')}</span>\n        );\n    };\n\n    return (\n        <div className=\"bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden\">\n            <table className=\"min-w-full divide-y divide-gray-200\">\n                <thead className=\"bg-gray-50\">\n                    <tr>\n                        <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            <button\n                                type=\"button\"\n                                className={`h-4 w-4 rounded border flex items-center justify-center transition-colors ${datalist.length > 0 &&\n                                    datalist.every(item => selectedItems.includes(item.id))\n                                    ? 'bg-blue-600 border-blue-600'\n                                    : 'bg-white border-gray-300'\n                                    }`}\n                                style={{ color: 'white' }}\n                                onClick={(e) => {\n                                    handleSelectAll();\n                                }}\n                                aria-pressed={datalist.length > 0 &&\n                                    datalist.every(item => selectedItems.includes(item.id))}\n                            >\n                                {datalist.length > 0 &&\n                                    datalist.every(item => selectedItems.includes(item.id)) && (\n                                        <Check className=\"w-3 h-3 text-white\" />\n                                    )}\n                            </button>\n                        </th>\n                        <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">{t('importLinsight.name')}</th>\n                        <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">{t('importLinsight.creator')}</th>\n                        <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">{t('importLinsight.description')}</th>\n                        <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                            <div className=\"flex items-center gap-2\">\n                                <span>{t('importLinsight.featured')}</span>\n                                <div className=\"relative\">\n                                    <DropdownMenu open={isFeaturedFilterOpen} onOpenChange={handleFeaturedOpenChange}>\n                                        <DropdownMenuTrigger asChild>\n                                            <Button\n                                                variant=\"ghost\"\n                                                className={`flex items-center gap-1 ${featuredSelectedFilters.length > 0 ? 'text-blue-500' : ''}`}\n                                            >\n                                                <Filter size={16} />\n                                            </Button>\n                                        </DropdownMenuTrigger>\n                                        <DropdownMenuContent\n                                            className=\"h-full p-0 shadow-lg rounded-md border\"\n                                            style={{ backgroundColor: 'white', opacity: 1 }}\n                                            align=\"end\"\n                                        >\n                                            <div className=\"px-2\">\n                                                {[\n                                                    { value: 1, label: t('importLinsight.featured') },\n                                                    { value: 0, label: t('importLinsight.notFeatured') }\n                                                ].map(({ value, label }) => (\n                                                    <div\n                                                        key={value}\n                                                        className=\"flex items-center gap-3 px-2 py-3 hover:bg-gray-100 rounded cursor-pointer\"\n                                                        onClick={(e) => {\n                                                            e.stopPropagation();\n                                                            setFeaturedTempFilters(prev =>\n                                                                prev.includes(value)\n                                                                    ? prev.filter(v => v !== value)\n                                                                    : [...prev, value]\n                                                            );\n                                                        }}\n                                                    >\n                                                        <input\n                                                            type=\"checkbox\"\n                                                            checked={featuredTempFilters.includes(value)}\n                                                            onChange={() => { }}\n                                                            className=\"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n                                                        />\n                                                        <div className=\"flex items-center gap-2\">\n                                                            <span>{label}</span>\n                                                        </div>\n                                                    </div>\n                                                ))}\n                                            </div>\n                                            <div className=\"border-t border-gray-200\"></div>\n                                            <div className=\"flex justify-end gap-2 px-3 py-2\">\n                                                <Button\n                                                    variant=\"ghost\"\n                                                    size=\"sm\"\n                                                    onClick={(e) => {\n                                                        e.stopPropagation();\n                                                        resetFeaturedFilters();\n                                                    }}\n                                                    disabled={featuredTempFilters.length === 0}\n                                                >\n                                                    {t('importLinsight.reset')}\n                                                </Button>\n                                                <Button\n                                                    size=\"sm\"\n                                                    onClick={(e) => {\n                                                        e.stopPropagation();\n                                                        applyFeaturedFilters();\n                                                    }}\n                                                >\n                                                    {t('importLinsight.apply')}\n                                                </Button>\n                                            </div>\n                                        </DropdownMenuContent>\n                                    </DropdownMenu>\n                                </div>\n                            </div>\n                        </th>\n                        <th className=\"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider\">{t('importLinsight.actions')}</th>\n                    </tr>\n                </thead>\n                <tbody className=\"bg-white divide-y divide-gray-200\">\n                    {datalist.length > 0 ? (\n                        datalist.map((item) => (\n                            <tr key={item.id}>\n                                <td className=\"px-6 py-4 whitespace-nowrap\">\n                                    <button\n                                        type=\"button\"\n                                        className=\"relative h-4 w-4 rounded border flex items-center justify-center\"\n                                        style={{\n                                            backgroundColor: selectedItems.includes(item.id) ? '#2563eb' : 'white',\n                                            borderColor: selectedItems.includes(item.id) ? '#2563eb' : '#d1d5db',\n                                            color: \"white\"\n                                        }}\n                                        onClick={() => handleSelectItem(item.id)}\n                                    >\n                                        {selectedItems.includes(item.id) && (\n                                            <Check className=\"w-3 h-3 text-white\" />\n                                        )}\n                                    </button>\n                                </td>\n                                <td className=\"px-6 py-4 whitespace-nowrap max-w-[200px]\">\n                                    <TooltipProvider>\n                                        <Tooltip>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"text-sm font-medium text-gray-900 truncate\">\n                                                    {item.name}\n                                                </div>\n                                            </TooltipTrigger>\n                                            <TooltipContent align=\"start\" className='max-w-[700px] break-words whitespace-normal text-left'>\n                                                <p>{item.name}</p>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    </TooltipProvider>\n                                </td>\n                                <td className=\"px-6 py-4 whitespace-nowrap max-w-[200px]\">\n                                    <TooltipProvider>\n                                        <Tooltip>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"text-sm font-medium text-gray-900 truncate\">\n                                                    {item.user_name}\n                                                </div>\n                                            </TooltipTrigger>\n                                        </Tooltip>\n                                    </TooltipProvider>\n                                </td>\n                                <td className=\"px-6 py-4 max-w-[300px]\">\n                                    <TooltipProvider>\n                                        <Tooltip>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"text-sm text-gray-500 truncate\">\n                                                    {item.description}\n                                                </div>\n                                            </TooltipTrigger>\n                                            <TooltipContent className=\"max-w-[900px] break-words whitespace-normal\">\n                                                <p className=\"text-sm\">{item.description}</p>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    </TooltipProvider>\n                                </td>\n                                <td className=\"px-6 py-4 whitespace-nowrap max-w-[200px]\">\n                                    <TooltipProvider>\n                                        <Tooltip>\n                                            <TooltipTrigger asChild>\n                                                <div className=\"text-sm font-medium text-gray-500 truncate\">\n                                                    {item.showcase ? t('importLinsight.featured') : t('importLinsight.notFeatured')}\n                                                </div>\n                                            </TooltipTrigger>\n                                        </Tooltip>\n                                    </TooltipProvider>\n                                </td>\n                                {/* <td className=\"px-6 py-4 whitespace-nowrap\">\n                                    {ratingDisplay(item.rating || 0)}\n                                </td> */}\n                                <td className=\"px-6 py-4 whitespace-nowrap text-center text-sm font-medium\">\n                                    <Button\n                                        variant=\"ghost\"\n                                        className=\"text-blue-600 hover:text-blue-900 mr-3\"\n                                        onClick={() => handleEdit(item.id)}\n                                    >\n                                        {t('importLinsight.edit')}\n                                    </Button>\n                                    <Button\n                                        variant=\"ghost\"\n                                        onClick={() => handleDelete(item.id)}\n                                        className=\"text-red-600 hover:text-red-900\"\n                                    >\n                                        {t('importLinsight.delete')}\n                                    </Button>\n                                </td>\n                            </tr>\n                        ))\n                    ) : (\n                        <tr>\n                            <td colSpan={5} className=\"px-6 py-4 text-center text-sm text-gray-500\">\n                                {t('importLinsight.noSOPFound')}\n                            </td>\n                        </tr>\n                    )}\n                </tbody>\n            </table>\n\n            {datalist.length > 0 && (\n                <div className=\"px-6 py-3 flex items-center justify-between border-t border-gray-200\">\n                    <div className=\"flex items-center\">\n                    </div>\n                    <div className=\"flex items-center ml-4\">\n                        <AutoPagination\n                            page={page}\n                            pageSize={pageSize}\n                            total={total}\n                            onChange={(newPage) => handlePageChange(newPage)}\n                        />\n                        <span className=\"text-sm text-gray-700 mr-2 whitespace-nowrap\">{t('importLinsight.goTo')}</span>\n                        <input\n                            type=\"number\"\n                            min=\"1\"\n                            max={Math.max(1, Math.ceil(total / pageSize))}\n                            value={pageInputValue}\n                            onChange={handlePageInputChange}\n                            onBlur={handlePageInputConfirm}\n                            onKeyDown={handleKeyDown}\n                            className=\"w-16 px-2 py-1 border rounded text-sm text-center\"\n                            disabled={loading}\n                        />\n                        <span className=\"text-sm text-gray-700 ml-2 whitespace-nowrap\">\n                            {t('importLinsight.pages')}\n                        </span>\n                        {loading && <LoadIcon className=\"animate-spin w-4 h-4 ml-2\" />}\n                    </div>\n                </div>\n            )}\n        </div>\n    );\n};\n\nexport default SopTable;\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SopToolsDown.tsx",
    "content": "import { ChevronRightIcon } from \"lucide-react\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../bs-ui/tooltip\";\n\nexport default function SopToolsDown({\n    open,\n    position = { top: 0, left: 0 },\n    value,\n    options,\n    onChange,\n    onClose,\n    parentRef\n}: {\n    open: boolean;\n    position?: { top: number; left: number };\n    value?: string;\n    options: {\n        label: string;\n        value?: string;\n        desc: string;\n        children?: {\n            label: string;\n            value: string;\n            desc: string;\n        }[];\n    }[];\n    onChange: (value: any) => void;\n    onClose: () => void;\n    parentRef?: React.RefObject<HTMLElement>;\n}) {\n    const [hoverIndex, setHoverIndex] = useState<number | null>(null);\n    const [adjustedPosition, setAdjustedPosition] = useState(position);\n    const popupRef = useRef<HTMLDivElement>(null);\n    const [isHoveringMenu, setIsHoveringMenu] = useState(false);\n\n    // Initialize the state\n    useEffect(() => {\n        if (!open) {\n            setHoverIndex(null);\n            return;\n        }\n\n        // Find the active menu item based on the current value\n        let foundActiveIndex: any = null;\n        options.forEach((option, index) => {\n            if (option.value === value) foundActiveIndex = index;\n            if (option.children) {\n                option.children.forEach(child => {\n                    if (child.value === value) foundActiveIndex = index;\n                });\n            }\n        });\n\n        setHoverIndex(foundActiveIndex);\n    }, [open, value, options]);\n\n    // Position adjustment logic\n    useLayoutEffect(() => {\n        if (!open || !popupRef.current) return;\n        const SAFE_MARGIN = 8;\n\n        const popup = popupRef.current;\n        const popupRect = popup.getBoundingClientRect();\n\n        // Get the boundaries of the parent container (default to viewport)\n        const parentRect = parentRef?.current?.getBoundingClientRect() || {\n            top: 0,\n            left: 0,\n            right: window.innerWidth,\n            bottom: window.innerHeight,\n            width: window.innerWidth,\n            height: window.innerHeight\n        };\n\n        // Calculate the adjusted position (considering the parent's offset)\n        let adjustedTop = position.top;\n        let adjustedLeft = position.left;\n\n        if (position.top + popupRect.height > parentRect.height) {\n            adjustedTop = parentRect.height - popupRect.height - SAFE_MARGIN;\n        }\n\n        if (position.left + popupRect.width * 2 > parentRect.width) {\n            adjustedLeft = parentRect.width - popupRect.width * 2 - SAFE_MARGIN;\n        }\n\n        setAdjustedPosition({ top: adjustedTop, left: adjustedLeft });\n    }, [open, position, parentRef]);\n\n    // Handle menu interaction\n    const handleParentHover = (index: number) => setHoverIndex(index);\n\n    const handleParentClick = (index: number, e: React.MouseEvent) => {\n        e.stopPropagation();\n        const option = options[index];\n\n        if (!option.children?.length && option.value) {\n            onChange(option);\n            onClose();\n            return;\n        }\n    };\n\n    const handleChildClick = (obj: any, e: React.MouseEvent) => {\n        e.stopPropagation();\n        onChange(obj);\n        onClose();\n    };\n\n    // Close the menu if clicking outside\n    useEffect(() => {\n        if (!open) return;\n\n        const handleClickOutside = () => {\n            if (!isHoveringMenu) {\n                onClose();\n            }\n        };\n\n        document.addEventListener(\"click\", handleClickOutside);\n        return () => document.removeEventListener(\"click\", handleClickOutside);\n    }, [open, onClose, isHoveringMenu]);\n\n    if (!open) return null;\n    {/* Dropdown popup */ }\n    return <div\n        ref={popupRef}\n        className=\"absolute bg-white shadow-lg rounded-md border border-gray-200\"\n        style={{\n            top: adjustedPosition.top,\n            left: adjustedPosition.left,\n            transform: 'translateZ(0)' // Ensure accurate rendering\n        }}\n        onClick={(e) => e.stopPropagation()}\n    >\n        <div className=\"flex text-sm\">\n            {/* First-level menu */}\n            <div className=\"w-48 border-r border-gray-100 overflow-auto max-h-96\">\n                {options.map((option, index) => {\n                    const hasChildren = option.children && option.children.length > 0;\n                    const isHovered = hoverIndex === index;\n\n                    return (\n                        <div\n                            key={index}\n                            className={`\n                                        relative flex items-center justify-between px-3 py-2 cursor-pointer\n                                        transition-colors\n                                        ${isHovered ? \"bg-blue-50 font-medium\" : \"\"}\n                                    `}\n                            onMouseEnter={() => handleParentHover(index)}\n                            onClick={(e) => handleParentClick(index, e)}\n                        >\n                            {option.desc ? (\n                                <Tooltip disableHoverableContent>\n                                    <TooltipTrigger asChild>\n                                        <div className=\"truncate\">{option.label}</div>\n                                    </TooltipTrigger>\n                                    <TooltipContent>\n                                        <p>{option.desc}</p>\n                                    </TooltipContent>\n                                </Tooltip>\n                            ) : (\n                                <div className=\"truncate\">{option.label}</div>\n                            )}\n                            {hasChildren && (\n                                <ChevronRightIcon className=\"w-3.5 h-3.5 text-gray-400 flex-shrink-0\" />\n                            )}\n                        </div>\n                    );\n                })}\n            </div>\n\n            {/* Second-level menu */}\n            {hoverIndex !== null && options[hoverIndex]?.children?.length > 0 && (\n                <div className=\"w-44 max-h-96 overflow-y-auto\">\n                    {options[hoverIndex].children?.map((child, childIndex) => (\n                        <div\n                            key={childIndex}\n                            className=\"px-3 py-2 cursor-pointer transition-colors hover:bg-blue-50\"\n                            onClick={(e) => handleChildClick(child, e)}\n                        >\n                            {child.desc ? (\n                                <Tooltip disableHoverableContent>\n                                    <TooltipTrigger asChild>\n                                        <div className=\"truncate\">{child.label}</div>\n                                    </TooltipTrigger>\n                                    <TooltipContent>\n                                        <p>{child.desc}</p>\n                                    </TooltipContent>\n                                </Tooltip>\n                            ) : (\n                                <div className=\"truncate\">{child.label}</div>\n                            )}\n                        </div>\n                    ))}\n                </div>\n            )}\n        </div>\n    </div>\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/SvgImage.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { FileIcon } from '../bs-icons/file';\n\ninterface SvgImageProps {\n  fileUrl: string;\n  alt: string;\n  className?: string;\n}\n\nexport const SvgImage = ({ fileUrl, alt, className = \"\" }: SvgImageProps) => {\n  const [svgContent, setSvgContent] = useState<string | null>(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(false);\n  const fullUrl = `${__APP_ENV__.BASE_URL}${fileUrl}`;\n\n  // Core: Add width: 100% and height: auto styles to the SVG to maintain responsive aspect ratio\n  const addSvgResponsiveStyles = (svgText: string) => {\n    const svgRegex = /<svg([^>]*?)>/i; // Match the root SVG element\n    return svgText.replace(\n      svgRegex,\n      (match, attributes) => {\n        // Target style: width 100%, height auto\n        const targetStyles = 'width: 100%; height: auto;';\n\n        if (attributes.includes('style=')) {\n          // If there's an existing style attribute, merge the styles (avoiding duplicates)\n          return `<svg${attributes.replace(\n            /style=([\"'])(.*?)\\1/,\n            (styleMatch, quote, styles) => {\n              // Remove existing width and height styles\n              const filteredStyles = styles\n                .split(';')\n                .filter(style =>\n                  !style.trim().startsWith('width:') &&\n                  !style.trim().startsWith('height:')\n                )\n                .join(';');\n              // Append the new styles\n              const newStyles = filteredStyles\n                ? `${filteredStyles}; ${targetStyles}`\n                : targetStyles;\n              return `style=${quote}${newStyles}${quote}`;\n            }\n          )}>`;\n        } else {\n          // If no style attribute, directly add the styles\n          return `<svg${attributes} style=\"${targetStyles}\">`;\n        }\n      }\n    );\n  };\n\n  useEffect(() => {\n    const abortController = new AbortController();\n\n    const fetchSvg = async () => {\n      try {\n        setLoading(true);\n        setError(false);\n\n        const response = await fetch(fullUrl, {\n          signal: abortController.signal,\n          headers: { 'Accept': 'image/svg+xml, text/plain' }\n        });\n\n        if (!response.ok) throw new Error(`HTTP ${response.status}`);\n\n        const text = await response.text();\n        // Process SVG text, adding responsive styles\n        const processedSvg = addSvgResponsiveStyles(text);\n        setSvgContent(processedSvg);\n      } catch (err) {\n        if (!abortController.signal.aborted) {\n          setError(true);\n          console.error('SVG load failed:', err);\n        }\n      } finally {\n        if (!abortController.signal.aborted) setLoading(false);\n      }\n    };\n\n    fetchSvg();\n    return () => abortController.abort();\n  }, [fullUrl]);\n\n  if (loading) {\n    return (\n      <div className={`flex items-center justify-center ${className}`}>\n        <FileIcon type=\"svg\" className=\"size-10 opacity-50 animate-pulse\" />\n      </div>\n    );\n  }\n\n  if (error || !svgContent) {\n    return (\n      <div className={`flex flex-col items-center justify-center ${className}`}>\n        <FileIcon type=\"svg\" className=\"size-10 text-gray-400\" />\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={className}\n      dangerouslySetInnerHTML={{ __html: svgContent }}\n    />\n  );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/ToolSelector.tsx",
    "content": "// components/ToolSelector.tsx\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';\nimport { AlignJustify, Check, CpuIcon, Minus, Plus, Star, User, X } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from 'react-i18next';\nimport { LoadIcon } from '../bs-icons/loading';\nimport { SearchInput } from '../bs-ui/input';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../bs-ui/tooltip';\ntype CheckboxState = 'checked' | 'unchecked' | 'indeterminate';\n\nconst ToolSelector = ({\n  selectedTools,\n  toggleTool,\n  removeTool,\n  isToolSelected,\n  handleDragEnd,\n  showToolSelector,\n  setShowToolSelector,\n  toolsData,\n  activeToolTab,\n  setActiveToolTab,\n  toolSearchTerm,\n  setToolSearchTerm,\n  loading,\n  filteredTools,\n  expandedItems,\n  setManuallyExpandedItems,\n  toggleGroup,\n}) => {\n  const { t } = useTranslation()\n  const [scrollToParentId, setScrollToParentId] = useState<string | null>(null);\n  const [isExpanding, setIsExpanding] = useState(false);\n  const [targetCategory, setTargetCategory] = useState<string | null>(null);\n  const scrollAttempts = useRef(0);\n  const scrollTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n  const leftPanelRef = useRef<HTMLDivElement>(null);\n  const rightContentRef = useRef<HTMLDivElement>(null);\n  const MIN_HEIGHT = 360; // 设置最小高度\n  const syncPanelHeights = useCallback(() => {\n    if (leftPanelRef.current && rightContentRef.current) {\n      const leftHeight = Math.max(leftPanelRef.current.scrollHeight, MIN_HEIGHT);\n      const maxAllowedHeight = window.innerHeight * 0.8;\n      const calculatedHeight = Math.min(leftHeight, maxAllowedHeight);\n\n      // 应用高度到右侧容器\n      rightContentRef.current.style.minHeight = `${MIN_HEIGHT}px`;\n      rightContentRef.current.style.height = `${calculatedHeight}px`;\n\n      // 设置左侧面板高度\n      leftPanelRef.current.style.minHeight = `${MIN_HEIGHT}px`;\n      leftPanelRef.current.style.height = `${calculatedHeight}px`\n    }\n  }, [MIN_HEIGHT]);\n\n  // 增加对 requestIdleCallback 的判断和使用\n  useEffect(() => {\n    if (showToolSelector && filteredTools.length > 0) {\n      const handle = requestIdleCallback(() => {\n        syncPanelHeights();\n      }, { timeout: 1000 });\n      return () => cancelIdleCallback(handle);\n    }\n  }, [showToolSelector, filteredTools, syncPanelHeights]);\n  useEffect(() => {\n    if (showToolSelector) {\n      const id = requestAnimationFrame(() => {\n        syncPanelHeights();\n      });\n      return () => cancelAnimationFrame(id);\n    }\n  }, [showToolSelector, syncPanelHeights]);\n  useEffect(() => {\n    syncPanelHeights();\n  }, [syncPanelHeights, selectedTools, filteredTools, expandedItems, showToolSelector]);\n\n  const handleSelectedToolClick = (tool) => {\n    setShowToolSelector(true);\n\n    let toolCategory = 'builtin';\n    if (tool.is_preset === 0) {\n      toolCategory = 'api';\n    } else if (tool.is_preset === 2) {\n      toolCategory = 'mcp';\n    }\n\n    setTargetCategory(toolCategory);\n    setScrollToParentId(tool.id);\n\n    // 使用setTimeout确保DOM更新完成后再执行滚动\n    setTimeout(() => {\n      if (activeToolTab !== toolCategory) {\n        setActiveToolTab(toolCategory);\n      } else {\n        if (!expandedItems.includes(tool.id)) {\n          setManuallyExpandedItems(prev => [...prev, tool.id]);\n          // 等待展开动画完成\n          setTimeout(() => scrollToTool(tool.id), 300);\n        } else {\n          scrollToTool(tool.id);\n        }\n      }\n    }, 50);\n  };\n  const scrollToTool = useCallback((toolId: string) => {\n    if (scrollTimeoutRef.current) {\n      clearTimeout(scrollTimeoutRef.current);\n    }\n\n    scrollAttempts.current = 0;\n\n    const tryScroll = () => {\n      scrollAttempts.current++;\n      const parentElement = document.getElementById(`tool-${toolId}`);\n      const childElement = document.getElementById(`tool-child-${toolId}`);\n      const container = rightContentRef.current;\n\n      if (!container) {\n        if (scrollAttempts.current < 10) {\n          scrollTimeoutRef.current = setTimeout(tryScroll, 200);\n        }\n        return;\n      }\n\n      if (parentElement) {\n        const parentRect = parentElement.getBoundingClientRect();\n        const containerRect = container.getBoundingClientRect();\n\n        // 判断元素是否完全可见\n        const isFullyVisible = parentRect.top >= containerRect.top &&\n          parentRect.bottom <= containerRect.bottom;\n\n        if (!isFullyVisible) {\n          // 对于长菜单项的特殊处理\n          if (parentElement.offsetHeight > container.offsetHeight * 0.8) {\n            // 如果菜单项高度超过容器高度的80%，滚动到顶部\n            parentElement.scrollIntoView({\n              behavior: 'smooth',\n              block: 'start'\n            });\n          } else {\n            // 正常大小的菜单项使用居中显示\n            parentElement.scrollIntoView({\n              behavior: 'smooth',\n              block: 'center'\n            });\n          }\n        }\n\n        return;\n      }\n\n      if (scrollAttempts.current < 10) {\n        scrollTimeoutRef.current = setTimeout(tryScroll, 200);\n      }\n    };\n\n    tryScroll();\n  }, []);\n  useEffect(() => {\n    const resizeObserver = new ResizeObserver(() => {\n      syncPanelHeights();\n    });\n\n    if (leftPanelRef.current) {\n      resizeObserver.observe(leftPanelRef.current);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [syncPanelHeights]);\n  useEffect(() => {\n    if (targetCategory && activeToolTab === targetCategory && scrollToParentId) {\n      if (!expandedItems.includes(scrollToParentId)) {\n        setManuallyExpandedItems(prev => [...prev, scrollToParentId]);\n        setTimeout(() => {\n          scrollToTool(scrollToParentId);\n          setTargetCategory(null);\n        }, 300);\n      } else {\n        scrollToTool(scrollToParentId);\n        setTargetCategory(null);\n      }\n    }\n  }, [activeToolTab, targetCategory, scrollToParentId, expandedItems]);\n\n  useEffect(() => {\n    if (isExpanding && scrollToParentId) {\n      setTimeout(() => {\n        scrollToTool(scrollToParentId);\n        setIsExpanding(false);\n      }, 100);\n    }\n  }, [isExpanding, scrollToParentId]);\n\n  useEffect(() => {\n    return () => {\n      if (scrollTimeoutRef.current) {\n        clearTimeout(scrollTimeoutRef.current);\n      }\n    };\n  }, []);\n\n  const getGroupState = (group): CheckboxState => {\n    const parent = selectedTools.find(t => t.id === group.id);\n    if (!parent) return 'unchecked';\n    if (parent.children?.length === group.children.length) return 'checked';\n    return 'indeterminate';\n  };\n\n  const CustomCheckbox = ({ state, onChange }) => (\n    <button\n      type=\"button\"\n      className={`w-4 h-4 border rounded flex items-center justify-center \n        ${state !== 'unchecked' ? 'bg-primary border-primary' : 'border-gray-300'}`}\n      style={{ color: 'white' }}\n      onClick={() => onChange(state !== 'checked')}\n    >\n      {state === 'checked' && <Check className=\"w-3 h-3 text-white\" />}\n      {state === 'indeterminate' && <Minus className=\"w-3 h-3 text-white\" />}\n    </button>\n  );\n\n  return (\n    <div className=\"flex gap-4\">\n      {/* 已选工具面板 */}\n      <div\n        ref={leftPanelRef}\n        className=\"w-1/3 flex border rounded-lg bg-white\"\n      >\n        <div className=\"flex-1 p-4\">\n          <h3 className=\"text-[16px] font-medium\">{t('toolSelector.selectedTools')}</h3>\n\n          {selectedTools.length === 0 ? (\n            <div className=\"mt-4 border-2 border-dashed border-gray-200 rounded-lg bg-gray-50 flex flex-col items-center justify-center py-6 px-4 text-center\">\n              <div className=\"mb-2\">\n                <Plus className=\"w-6 h-6 text-gray-400\" />\n              </div>\n              <div className=\"text-sm font-medium text-gray-500 mb-1\">\n                {t('toolSelector.noToolsSelected')}\n              </div>\n              <div className=\"text-xs text-gray-400\">\n                {t('toolSelector.selectToolsPrompt')}\n              </div>\n            </div>\n          ) : (\n            <DragDropContext onDragEnd={handleDragEnd}>\n              <Droppable droppableId=\"selectedTools\">\n                {(provided) => (\n                  <div\n                    {...provided.droppableProps}\n                    ref={provided.innerRef}\n                    className=\"space-y-2 flex-1 overflow-y-auto\"\n                    style={{ maxHeight: '300px' }}\n                  >\n                    {selectedTools.map((tool, index) => (\n                      <Draggable key={tool.id.toString()} draggableId={tool.id.toString()} index={index}>\n                        {(provided, snapshot) => (\n                          <div\n                            ref={provided.innerRef}\n                            {...provided.draggableProps}\n                            {...provided.dragHandleProps}\n                            className={`flex items-center justify-between p-3 py-2 rounded-lg ${snapshot.isDragging ? 'bg-blue-50 shadow-md' : 'bg-white border'\n                              }`}\n                            onClick={() => handleSelectedToolClick(tool)}\n                          >\n                            <div className=\"flex items-center\">\n                              <AlignJustify className=\"w-4 h-4 mr-2 text-gray-400\" />\n                              <TooltipProvider>\n                                <Tooltip>\n                                  <TooltipTrigger asChild>\n                                    <span className=\"truncate max-w-[240px]\">{tool.is_preset === 1 ? t(`categories.${tool.name}.name`, { ns: 'tool' }) : tool.name}</span>\n                                  </TooltipTrigger>\n                                  <TooltipContent>\n                                    <p>{tool.name}</p>\n                                  </TooltipContent>\n                                </Tooltip>\n                              </TooltipProvider>\n                            </div>\n                            <button\n                              onClick={(e) => {\n                                e.stopPropagation();\n                                removeTool(index);\n                              }}\n                              className=\"text-red-500 hover:text-red-700 ml-2\"\n                            >\n                              <X className=\"w-4 h-4\" />\n                            </button>\n                          </div>\n                        )}\n                      </Draggable>\n                    ))}\n                    {provided.placeholder}\n                  </div>\n                )}\n              </Droppable>\n            </DragDropContext>\n          )}\n        </div>\n      </div>\n\n      {/* 工具选择器 */}\n      {(\n        <div\n          className=\"w-2/3 flex border rounded-lg bg-white overflow-hidden transition-all duration-300 ease-in-out\"\n          key={activeToolTab}\n          ref={rightContentRef}\n        >\n          {/* 左侧分类栏 - 固定宽度 */}\n          <div\n            className=\"w-1/3 border-r bg-gray-50 flex flex-col\">\n            <div className=\"p-2 border-b\">\n              <h3 className=\"font-medium\">{t('toolSelector.allTools')}</h3>\n            </div>\n            <div className=\"relative p-2 border-b\">\n              <SearchInput\n                placeholder={t('toolSelector.searchPlaceholder')}\n                value={toolSearchTerm}\n                onChange={(e) => setToolSearchTerm(e.target.value)}\n                onClear={() => setToolSearchTerm('')}\n\n              />\n            </div>\n\n            <div className=\"flex-1 overflow-y-auto p-2\">\n              <div className=\"space-y-1\">\n                <button\n                  className={`flex items-center w-full text-left p-2 rounded ${activeToolTab === 'builtin' ? 'bg-blue-100 text-blue-600' : 'hover:bg-gray-100'}`}\n                  onClick={() => setActiveToolTab('builtin')}\n                >\n                  <User className=\"w-4 h-4 mr-2\" />\n                  {t('toolSelector.builtinTools')}\n                </button>\n                <button\n                  className={`flex items-center w-full text-left p-2 rounded ${activeToolTab === 'api' ? 'bg-blue-100 text-blue-600' : 'hover:bg-gray-100'}`}\n                  onClick={() => setActiveToolTab('api')}\n                >\n                  <Star className=\"w-4 h-4 mr-2\" />\n                  {t('toolSelector.apiTools')}\n                </button>\n                <button\n                  className={`flex items-center w-full text-left p-2 rounded ${activeToolTab === 'mcp' ? 'bg-blue-100 text-blue-600' : 'hover:bg-gray-100'}`}\n                  onClick={() => setActiveToolTab('mcp')}\n                >\n                  <CpuIcon className=\"w-4 h-4 mr-2\" />\n                  {t('toolSelector.mcpTools')}\n                </button>\n              </div>\n            </div>\n          </div>\n\n          <div\n\n            className=\"right-content w-2/3 flex flex-col h-full overflow-y-auto\"\n            style={{\n              transition: 'max-height 0.3s ease-out',\n            }}\n          >\n            {loading ? (\n              <div className=\"flex justify-center items-center h-full\">\n                <LoadIcon className=\"animate-spin\" />\n              </div>\n            ) : filteredTools.length > 0 ? (\n              <Accordion\n                type=\"multiple\"\n                className=\"w-full p-4\"\n                value={expandedItems}\n                onValueChange={(values) => {\n                  if (!toolSearchTerm) {\n                    setManuallyExpandedItems(values);\n                  }\n                }}\n              >\n                {filteredTools.map((tool) => (\n                  <AccordionItem\n                    key={tool.id}\n                    value={tool.id}\n                    id={`tool-${tool.id}`}\n                    className={expandedItems.includes(tool.id) ? 'bg-gray-50' : ''}\n                  >\n                    <div className=\"flex items-center gap-2 py-3\">\n                      <AccordionTrigger className=\"p-0 w-4 hover:no-underline\">\n                      </AccordionTrigger>\n                      <CustomCheckbox\n                        state={getGroupState(tool)}\n                        onChange={(checked) => toggleGroup(tool, checked)}\n                      />\n                      <TooltipProvider>\n                        <Tooltip>\n                          <TooltipTrigger asChild>\n                            <div className=\"flex flex-col min-w-0\">\n                              <p className=\"truncate max-w-[180px]\">\n                                {(tool.is_preset === 1 ? t(`categories.${tool.name}.name`, { ns: 'tool' }) : tool.name).split(new RegExp(`(${toolSearchTerm})`, 'gi')).map((part, i) => (\n                                  part.toLowerCase() === toolSearchTerm.toLowerCase() ? (\n                                    <span key={i} className=\"bg-yellow-200\">{part}</span>\n                                  ) : (\n                                    <span key={i}>{part}</span>\n                                  )\n                                ))}\n                              </p>\n                              {/* 一级菜单描述 - 与二级菜单样式一致 */}\n                              {tool.description && (\n                                <p className=\"text-xs text-gray-500 truncate mt-1 max-w-[260px]\">\n                                  {tool.is_preset === 1 ? t(`categories.${tool.name}.desc`, { ns: 'tool' }) : tool.description}\n                                </p>\n                              )}\n                            </div>\n                          </TooltipTrigger>\n                          <TooltipContent>\n                            {tool.description && (\n                              <p className='text-xs mt-1 max-w-[240px]'>\n                                {tool.is_preset === 1 ? t(`categories.${tool.name}.desc`, { ns: 'tool' }) : tool.description}\n                              </p>\n                            )}\n                          </TooltipContent>\n                        </Tooltip>\n                      </TooltipProvider>\n                    </div>\n\n                    <AccordionContent>\n                      {tool.children?.map(child => (\n                        <div\n                          key={child.id}\n                          id={`tool-child-${child.id}`}\n                          className=\"flex items-center gap-2 ml-10 p-2 hover:bg-gray-50 cursor-pointer\"\n                          onClick={() => toggleTool(tool, child)}\n                        >\n                          <div className={`w-4 h-4 border rounded flex items-center justify-center \n                            ${isToolSelected(tool.id, child.id) ? 'bg-primary border-primary' : 'border-gray-300'}`}>\n                            {isToolSelected(tool.id, child.id) && <Check className=\"w-3 h-3\" style={{ color: 'white' }} />}\n                          </div>\n                          <div className=\"min-w-0\">\n                            <TooltipProvider>\n                              <Tooltip>\n                                <TooltipTrigger asChild>\n                                  <p className=\"truncate max-w-[180px]\">\n                                    {(tool.is_preset === 1 ? t(`tools.${child.tool_key}.name`, { ns: 'tool' }) : child.name).split(new RegExp(`(${toolSearchTerm})`, 'gi')).map((part, i) => (\n                                      part.toLowerCase() === toolSearchTerm.toLowerCase() ? (\n                                        <span key={i} className=\"bg-yellow-200\">{part}</span>\n                                      ) : (\n                                        <span key={i}>{part}</span>\n                                      )\n                                    ))}\n                                  </p>\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                  <p className='max-w-[240px]'>{tool.is_preset === 1 ? t(`tools.${child.tool_key}.name`, { ns: 'tool' }) : child.name}</p>\n                                </TooltipContent>\n                              </Tooltip>\n                            </TooltipProvider>\n                            {child.desc && (\n                              <TooltipProvider>\n                                <Tooltip>\n                                  <TooltipTrigger asChild>\n                                    <p className=\"text-xs text-gray-500 truncate max-w-[260px] mt-1\">{tool.is_preset === 1 ? t(`tools.${child.tool_key}.desc`, { ns: 'tool' }) : child.desc}</p>\n                                  </TooltipTrigger>\n                                  <TooltipContent>\n                                    <p className='max-w-[240px]'>{tool.is_preset === 1 ? t(`tools.${child.tool_key}.desc`, { ns: 'tool' }) : child.desc}</p>\n                                  </TooltipContent>\n                                </Tooltip>\n                              </TooltipProvider>\n                            )}\n                          </div>\n                        </div>\n                      ))}\n                    </AccordionContent>\n                  </AccordionItem>\n                ))}\n              </Accordion>\n            ) : (\n              <div className=\"text-center text-sm text-gray-500 py-4\">\n                {t('toolSelector.noToolsFound')}\n              </div>\n            )}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ToolSelector;"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/ToolSelectorContainer.tsx",
    "content": "import { useMemo, useState } from 'react';\r\nimport ToolSelector from './ToolSelector';\r\n\r\nexport default function ToolSelectorContainer({\r\n  toolsData: initialToolsData,\r\n  selectedTools,\r\n  toggleTool,\r\n  removeTool,\r\n  isToolSelected,\r\n  handleDragEnd,\r\n  toggleGroup,\r\n  activeToolTab,\r\n  setActiveToolTab,\r\n  showToolSelector,\r\n  setShowToolSelector,\r\n  toolSearchTerm,\r\n  setToolSearchTerm\r\n}) {\r\n  const [manuallyExpandedItems, setManuallyExpandedItems] = useState<string[]>([]);\r\n  const filteredTools = useMemo(() => {\r\n    const currentTools = initialToolsData[activeToolTab] || [];\r\n    const searchTerm = toolSearchTerm.toLowerCase();\r\n\r\n    return currentTools\r\n      .map(tool => {\r\n        const match = tool.name?.toLowerCase().includes(searchTerm) || tool.description?.toLowerCase().includes(searchTerm);\r\n        const matchedChildren = tool.children?.filter(child =>\r\n          child.name?.toLowerCase().includes(searchTerm) || child.desc?.toLowerCase().includes(searchTerm)\r\n        );\r\n        return match || matchedChildren?.length\r\n          ? { ...tool, children: tool.children || [], _forceExpanded: true }\r\n          : null;\r\n      })\r\n      .filter(Boolean);\r\n  }, [initialToolsData, toolSearchTerm, activeToolTab]);\r\n\r\n  // Expansion Item Logic \r\n  const expandedItems = useMemo(() => {\r\n    const searchExpanded = toolSearchTerm\r\n      ? filteredTools.filter(tool => tool._forceExpanded).map(tool => tool.id)\r\n      : [];\r\n    return [...new Set([...searchExpanded, ...manuallyExpandedItems])];\r\n  }, [filteredTools, toolSearchTerm, manuallyExpandedItems]);\r\n\r\n  return (\r\n    <ToolSelector\r\n      selectedTools={selectedTools}\r\n      toggleTool={toggleTool}\r\n      removeTool={removeTool}\r\n      isToolSelected={isToolSelected}\r\n      handleDragEnd={handleDragEnd}\r\n      toolsData={initialToolsData}\r\n      activeToolTab={activeToolTab}\r\n      setActiveToolTab={setActiveToolTab}\r\n      toolSearchTerm={toolSearchTerm}\r\n      setToolSearchTerm={setToolSearchTerm}\r\n      filteredTools={filteredTools}\r\n      expandedItems={expandedItems}\r\n      setManuallyExpandedItems={setManuallyExpandedItems}\r\n      toggleGroup={toggleGroup}\r\n      showToolSelector={showToolSelector}\r\n      setShowToolSelector={setShowToolSelector}\r\n    />\r\n  );\r\n}"
  },
  {
    "path": "src/frontend/platform/src/components/LinSight/ValidationDialog.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\n\ninterface ValidationDialogProps {\n    open: boolean;\n    statusMessage: {\n        errorTitle: string;\n        errorMsgs: string[];\n    };\n    t: (key: string, params?: any) => string;\n    onConfirm: () => void;\n    onOpenChange: (open: boolean) => void;\n}\n\nexport default function ValidationDialog({ open, statusMessage, t, onConfirm, onOpenChange }: ValidationDialogProps) {\n    return (\n        <Dialog open={open} onOpenChange={onOpenChange}>\n            <DialogContent className=\"sm:max-w-[500px] max-h-[80vh]\" close={false}>\n                <div className=\"absolute left-0 top-0 h-full w-1.5 bg-blue-500\"></div>\n                <div\n                    className=\"pl-4 overflow-y-auto\"\n                    style={{\n                        maxHeight: 'calc(80vh - 2rem)',\n                        scrollbarWidth: 'thin',\n                        scrollbarColor: '#3b82f6 transparent'\n                    }}\n                >\n                    <DialogHeader>\n                        <div className=\"flex items-center gap-4\">\n                            <div className=\"w-8 h-8 rounded-full bg-blue-500 flex items-center justify-center\">\n                                <span className=\"text-white font-bold text-lg\">i</span>\n                            </div>\n                            <DialogTitle>{t('chatConfig.fileFormatError')}</DialogTitle>\n                        </div>\n                    </DialogHeader>\n\n                    <div className=\"py-4\">\n                        <p className=\"font-medium\">{statusMessage.errorTitle}：</p>\n                        <div className=\"text-sm text-gray-600\">\n                            {\n                                statusMessage.errorMsgs.map((line, index) => <p key={index}>{line.trim()}</p>)\n                            }\n                        </div>\n                    </div>\n\n                    <div className=\"flex justify-end\">\n                        <Button onClick={onConfirm}>\n                            {t('chatConfig.gotIt')}\n                        </Button>\n                    </div>\n                </div>\n            </DialogContent>\n        </Dialog>\n    );\n}\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/Pro/security/AssistantSetting.tsx",
    "content": "import { SettingIcon } from \"@/components/bs-icons\";\nimport { AccordionContent, AccordionItem, AccordionTrigger } from \"@/components/bs-ui/accordion\";\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from \"@/components/bs-ui/sheet\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { getSensitiveApi, sensitiveSaveApi } from \"@/controllers/API/pro\";\nimport { CircleHelp } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FormSet from \"./FormSet\";\nimport FormView from \"./FormView\";\n\ninterface AssistantSettingProps {\n    id: string | number;\n    type: string;\n}\n\nexport interface AssistantSettingRef {\n    create: (id: number) => Promise<boolean>;\n}\n\nconst AssistantSetting = forwardRef<AssistantSettingRef, AssistantSettingProps>(({ id, type }, ref) => {\n    const { t } = useTranslation();\n\n    const [open, setOpen] = useState(false);\n    const { toast, message } = useToast();\n    const [form, setForm] = useState({\n        isCheck: false,\n        autoReply: \"\",\n        words: \"\",\n        wordsType: [],\n    });\n\n    // load\n    useEffect(() => {\n        if (id && id !== 3) {\n            getSensitiveApi(id, type).then(res => {\n                const { is_check, auto_reply, words, words_type } = res;\n                setForm({\n                    isCheck: !!is_check,\n                    autoReply: auto_reply,\n                    words,\n                    wordsType: Array.isArray(words_type) ? words_type : [words_type],\n                });\n            });\n        }\n    }, [id, type]);\n\n    // 验证表单\n    const validateForm = (formData: typeof form) => {\n        if (!formData.isCheck) return true\n        const errors = [];\n        if (formData.wordsType.length === 0) {\n            errors.push(t('build.errors.selectAtLeastOneWordType'));\n        }\n        if (formData.autoReply === '') {\n            errors.push(t('build.errors.autoReplyNotEmpty'));\n        }\n        if (errors.length) {\n            toast({ title: t('prompt'), variant: 'error', description: errors.join(', ') });\n            return false\n        }\n        return true\n    };\n\n    // 暴露 save 方法给 ref\n    useImperativeHandle(ref, () => ({\n        create: async (saveId?: number) => {\n            if (!form.isCheck) return true\n            if (!validateForm(form)) return false\n            const res = await sensitiveSaveApi({ ...form, id: saveId, type });\n            return true;\n        }\n    }));\n\n    const handleFormChange = async (_form) => {\n        if (!validateForm(_form)) return true\n\n        setForm(_form);\n        if (id) {\n            await sensitiveSaveApi({ ..._form, id, type });\n            message({ title: t('prompt'), variant: 'success', description: t('build.saveSuccess') });\n            return false\n        }\n    };\n\n    const onOff = (bln) => {\n        setForm({ ...form, isCheck: bln });\n        id && sensitiveSaveApi({ ...form, isCheck: bln, id, type });\n        if (bln) setOpen(true);\n    };\n\n    return (\n        <AccordionItem value=\"item-3\">\n            <AccordionTrigger>\n                <div className=\"flex flex-1 items-center justify-between\">\n                    <div className=\"flex items-center space-x-2\">\n                        <span>{t('build.contentSecurityR')}</span>\n                        <TooltipProvider delayDuration={0}>\n                            <Tooltip>\n                                <TooltipTrigger>\n                                    <CircleHelp className=\"w-4 h-4\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"text-slate-50\">{t('build.contentSecurityDesc')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                    <div className=\"h-[20px] flex items-center\">\n                        <Sheet open={open} onOpenChange={(bln) => setOpen(bln)}>\n                            <SheetTrigger>\n                                {/* @ts-ignore */}\n                                {form.isCheck && <SettingIcon onClick={(e) => { e.stopPropagation(); setOpen(!open) }} className=\"w-[32px] h-[32px]\" />}\n                            </SheetTrigger>\n                            <SheetContent className=\"w-[500px]\" onClick={(e) => e.stopPropagation()}>\n                                <SheetTitle className=\"font-[500] pl-3 pt-2\">{t('build.contentSecuritySettings')}</SheetTitle>\n                                <FormSet data={form} onChange={handleFormChange} onSave={() => setOpen(false)} onCancel={() => setOpen(false)} />\n                            </SheetContent>\n                        </Sheet>\n                        <Switch\n                            className=\"mx-4\"\n                            onClick={(e) => e.stopPropagation()}\n                            checked={form.isCheck}\n                            onCheckedChange={onOff}\n                        />\n                    </div>\n                </div>\n            </AccordionTrigger>\n            <AccordionContent className=\"mb-[-16px]\">\n                {form.isCheck && <FormView data={form} />}\n            </AccordionContent>\n        </AccordionItem>\n    );\n})\n\n\nAssistantSetting.displayName = \"AssistantSetting\";\n\nexport default AssistantSetting;"
  },
  {
    "path": "src/frontend/platform/src/components/Pro/security/FlowSetting.tsx",
    "content": "import { SettingIcon } from \"@/components/bs-icons\";\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from \"@/components/bs-ui/sheet\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { getSensitiveApi, sensitiveSaveApi } from \"@/controllers/API/pro\";\nimport { CircleHelp } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FormSet from \"./FormSet\";\nimport FormView from \"./FormView\";\n\nexport default function FlowSetting({ id, type, isOnline, onSubTask }) {\n    const { t } = useTranslation();\n\n    const [open, setOpen] = useState(false);\n    const { toast, message } = useToast();\n    const [form, setForm] = useState({\n        isCheck: false,\n        autoReply: \"\",\n        words: \"\",\n        wordsType: [],\n    });\n\n    // load\n    useEffect(() => {\n        id !== 3 && getSensitiveApi(id, type).then(res => {\n            const { is_check, auto_reply, words, words_type } = res\n            setForm({\n                isCheck: !!is_check,\n                autoReply: auto_reply,\n                words,\n                wordsType: Array.isArray(words_type) ? words_type : [words_type],\n            })\n        })\n    }, [id])\n\n    const handleFormChange = async (_form) => {\n        const errors = [];\n        if (_form.wordsType.length === 0) errors.push(t('build.errors.selectAtLeastOneWordType'));\n        if (_form.autoReply === '') errors.push(t('build.errors.autoReplyNotEmpty'));\n        if (errors.length) {\n            return toast({ title: t('prompt'), variant: 'error', description: errors.join(', ') });\n        }\n\n        setForm(_form);\n        if (isOnline) return; // 在线状态不允许修改\n        const callBack = async (id) => {\n            await sensitiveSaveApi({ ..._form, id, type });\n            message({ title: t('prompt'), variant: 'success', description: t('build.saveSuccess') });\n        }\n        id ? callBack(id) : onSubTask?.(callBack);\n    };\n\n    const onOff = (bln) => {\n        setForm({ ...form, isCheck: bln });\n        if (bln) setOpen(true);\n        if (isOnline) return; // 在线状态不允许修改\n        const callBack = async (id) => {\n            sensitiveSaveApi({ ...form, isCheck: bln, id, type });\n        }\n        id ? callBack(id) : onSubTask?.(callBack);\n    };\n\n    return (\n        <div>\n            <div className=\"mt-6 flex items-center h-[30px] mb-4 px-6\">\n                {/* <span className=\"text-sm font-medium leading-none\">开启内容安全审查</span> */}\n                <div className=\"flex items-center space-x-2\">\n                    <span>{t('build.enableContentSecurityReview')}</span>\n                    <TooltipProvider delayDuration={0}>\n                        <Tooltip>\n                            <TooltipTrigger>\n                                <CircleHelp className=\"w-4 h-4\" />\n                            </TooltipTrigger>\n                            <TooltipContent>\n                                <p className=\"text-[white]\">{t('build.contentSecurityDesc')}</p>\n                            </TooltipContent>\n                        </Tooltip>\n                    </TooltipProvider>\n                </div>\n                <div className=\"flex items-center ml-6\">\n                    <Sheet open={open} onOpenChange={(bln) => setOpen(bln)}>\n                        <SheetTrigger>\n                            {form.isCheck && <SettingIcon onClick={(e) => { e.stopPropagation(); setOpen(!open) }} className=\"w-[32px] h-[32px]\" />}\n                        </SheetTrigger>\n                        <SheetContent className=\"w-[500px] bg-background-login\" onClick={(e) => e.stopPropagation()}>\n                            <SheetTitle className=\"font-[500] pl-3 pt-2\">{t('build.contentSecuritySettings')}</SheetTitle>\n                            <FormSet data={form} onChange={handleFormChange} onSave={() => setOpen(false)} onCancel={() => setOpen(false)} />\n                        </SheetContent>\n                    </Sheet>\n                    <Switch\n                        className=\"mx-4\"\n                        onClick={(e) => e.stopPropagation()}\n                        checked={form.isCheck}\n                        onCheckedChange={onOff}\n                    />\n                </div>\n            </div>\n            <div className=\"text-sm\">\n                {form.isCheck && <FormView data={form} />}\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/Pro/security/FormSet.tsx",
    "content": "\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { t } from \"i18next\";\nimport { Upload } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\nexport default function FormSet({ data, onChange, onSave, onCancel }) {\n\n    const [form, setForm] = useState<any>({})\n    useEffect(() => {\n        setForm(data)\n    }, [data])\n\n    const handleCheckboxChange = (val, name) => {\n        let temp = form.wordsType\n        // setForm({ ...form, wordsType: [1] })\n        val ? setForm({\n            ...form, wordsType: [...temp, name]\n        }) : setForm({\n            ...form, wordsType: temp.filter(v => v !== name)\n        })\n    }\n\n    const handleUploadFile = (e) => {\n        const file = e.target.files[0]\n        if (file) {\n            const reader = new FileReader()\n            reader.onload = (evt) => {\n                const text = evt.target.result\n                //@ts-ignore\n                const formatContent = text.replace(/[\\s,，\\r\\n]+/g, '\\n') // 将所有符号替换成换行符\n                setForm({ ...form, words: formatContent })\n            }\n            reader.readAsText(file)\n        }\n    }\n    const handleSave = () => {\n        onChange(form).then(res => {\n            !res && onSave()\n        })\n    }\n    return <>\n        <div className=\"px-4 mt-6\">\n            <span className=\"bisheng-label\">{t('build.reviewType')}</span>\n            <RadioGroup value=\"1\"\n                className=\"flex space-x-2 h-[20px] mt-4 mb-6\">\n                <div>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" value=\"1\" />{t('build.sensitiveWordListMatch')}\n                    </Label>\n                </div>\n                <div>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem disabled className=\"mr-2\" value=\"模型审查\" />{t('build.modelReview')}\n                    </Label>\n                </div>\n            </RadioGroup>\n            <div className=\"mb-6\">\n                <span className=\"bisheng-label\">{t('build.wordListType')}</span>\n                <div className=\"mt-4 mb-6 space-y-3\">\n                    <div className=\"space-x-2 flex items-center\">\n                        <Checkbox\n                            id=\"c1\"\n                            value=\"1\"\n                            checked={form.wordsType?.includes(1)}\n                            onCheckedChange={(val) => handleCheckboxChange(val, 1)}\n                        />\n                        <Label htmlFor=\"c1\" className=\"cursor-pointer\">{t('build.builtinWordList')}</Label>\n                    </div>\n                    <div className=\"space-x-2 flex items-center\">\n                        <Checkbox\n                            id=\"c2\"\n                            value=\"2\"\n                            checked={form.wordsType?.includes(2)}\n                            onCheckedChange={(val) => handleCheckboxChange(val, 2)}\n                        />\n                        <Label htmlFor=\"c2\" className=\"cursor-pointer\">{t('build.customWordList')}</Label>\n                    </div>\n                </div>\n                <div className=\"flex justify-center relative\">\n                    <Textarea className=\"h-[100px] resize-none\" value={form.words}\n                        onChange={(e) => setForm({ ...form, words: e.target.value })}\n                        placeholder={t('build.useNewlineToSeparate')}></Textarea>\n                    <input type=\"file\" accept=\".txt\" id=\"fileUpload\" className=\"hidden\" onChange={handleUploadFile} />\n                    {/* @ts-ignore */}\n                    <div className=\"flex items-center absolute right-1 top-1 cursor-pointer\" onClick={() => document.querySelector('#fileUpload').click()}>\n                        <Upload id=\"ul\" color=\"blue\" className=\"w-3 h-3\" />\n                        <Label htmlFor=\"ul\"><span className=\"text-xs text-primary cursor-pointer\">{t('build.txtFile')}</span></Label>\n                    </div>\n                </div>\n            </div>\n            <span className=\"bisheng-label\">{t('build.autoReplyContent')}</span>\n            <div className=\"flex justify-center mt-4\">\n                <Textarea className=\"h-[100px] resize-none\" value={form.autoReply}\n                    onChange={(e) => setForm({ ...form, autoReply: e.target.value })}\n                    maxLength={500}\n                    placeholder={t('build.defaultAutoReply')}></Textarea>\n            </div>\n        </div>\n        <div className=\"absolute bottom-10 right-4 sapce-x-10 flex space-x-8\">\n            <Button onClick={onCancel} variant=\"outline\">{t('cancel')}</Button>\n            <Button onClick={handleSave}>{t('save')}</Button>\n        </div>\n    </>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/Pro/security/FormView.tsx",
    "content": "import { useTranslation } from \"react-i18next\"\n\nexport default function FormView({ data }) {\n    const { t } = useTranslation();\n    const map = {\n        '1': t('build.builtinWordList'),\n        '2': t('build.customWordList')\n    };\n\n    return (\n        <div className=\"mb-4 px-6\">\n            <div className=\"flex items-center mb-4\">\n                <span className=\"bisheng-label\">{t('build.reviewType')}：</span> \n                <span className=\"bg-gray-200 dark:bg-slate-900 px-2 rounded-xl text-xs\">{t('build.sensitiveWordMatch')}</span>\n            </div>\n            <div className=\"flex items-center mb-4\">\n                <span className=\"bisheng-label\">{t('build.wordListType')}：</span>\n                <div className=\"inline\">\n                    {data.wordsType?.map((v, index) => <span key={index} className=\"mr-2 bg-gray-200 dark:bg-slate-900 px-2 rounded-xl text-xs\">{map[v]}</span>)}\n                </div>\n            </div>\n            <span className=\"bisheng-label\">{t('build.autoReplyContent')}：</span>\n            <div className=\"flex justify-center mt-4\">\n                <p className=\"h-[100px] w-full overflow-y-auto scrollbar-hide bg-background-login py-2 px-4\">\n                    {data.autoReply || t('build.defaultAutoReply')}</p>\n            </div>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/RadialProgress/index.tsx",
    "content": "import { RadialProgressType } from \"../../types/components\";\n\nexport default function RadialProgressComponent({\n  value,\n  color,\n}: RadialProgressType) {\n  const style = {\n    \"--value\": value * 100,\n    \"--size\": \"1.5rem\",\n    \"--thickness\": \"2px\",\n  } as React.CSSProperties;\n\n  return (\n    <div className={\"radial-progress \" + color} style={style}>\n      <strong className=\"text-[8px]\">{Math.trunc(value * 100)}%</strong>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/SanitizedHTMLWrapper/index.tsx",
    "content": "import DOMPurify from \"dompurify\";\n\nconst SanitizedHTMLWrapper = ({\n  className,\n  content,\n  onClick,\n  suppressWarning = false,\n}) => {\n  const sanitizedHTML = DOMPurify.sanitize(content);\n\n  return (\n    <div\n      className={className}\n      dangerouslySetInnerHTML={{ __html: sanitizedHTML }}\n      suppressContentEditableWarning={suppressWarning}\n      onClick={onClick}\n    />\n  );\n};\n\nexport default SanitizedHTMLWrapper;\n"
  },
  {
    "path": "src/frontend/platform/src/components/ShadTooltipComponent/index.tsx",
    "content": "import { ShadToolTipType } from \"../../types/components\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../bs-ui/tooltip\";\n\nexport default function ShadTooltip({\n  content,\n  side,\n  asChild = true,\n  children,\n  styleClasses,\n  delayDuration = 500,\n}: ShadToolTipType): JSX.Element {\n  return (\n    <Tooltip delayDuration={delayDuration}>\n      <TooltipTrigger asChild={asChild}>{children}</TooltipTrigger>\n\n      <TooltipContent\n        className={styleClasses}\n        side={side}\n        avoidCollisions={false}\n        sticky=\"always\"\n      >\n        {content}\n      </TooltipContent>\n    </Tooltip>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/VariablesComponent/VarDialog.tsx",
    "content": "import cloneDeep from 'lodash-es/cloneDeep';\nimport { ArrowDownUp, Plus, X } from \"lucide-react\";\nimport { useContext, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from 'react-i18next';\nimport { alertContext } from '../../contexts/alertContext';\nimport { generateUUID } from '../../utils';\nimport { Button } from '../bs-ui/button';\nimport { DialogContent, DialogFooter } from '../bs-ui/dialog';\nimport { Input } from '../bs-ui/input';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../bs-ui/tabs';\n\nexport default function VarDialog({ data, onSave, onClose }) {\n\n    const [item, setItem] = useState(data)\n    const { t } = useTranslation()\n\n    const [errors, setErrors] = useState([])\n    const { setErrorData } = useContext(alertContext);\n\n    const handleSave = () => {\n        // 校验\n        const _errors = []\n        if (item.type === 'select') {\n            item.options.forEach((op, i) => {\n                if (!op.value) {\n                    _errors[i] = true\n                }\n            })\n            setErrors(_errors)\n\n            if (!item.options.length || _errors.length) {\n                return setErrorData({\n                    title: t('prompt'),\n                    list: [t('flow.varOptionRequired')],\n                });\n            }\n            const valiMap = {}\n            if (item.options.find((op) => {\n                if (valiMap[op.value]) return true\n                valiMap[op.value] = true\n            })) {\n                return setErrorData({\n                    title: t('prompt'),\n                    list: [t('flow.optionRepeated')]\n                });\n            }\n        }\n\n        // 处理保存逻辑\n        onSave({ ...item })\n    };\n\n    const handleDragEnd = (result) => {\n        if (!result.destination) return;\n\n        const newOptions = Array.from(item.options);\n        const [movedOption] = newOptions.splice(result.source.index, 1);\n        newOptions.splice(result.destination.index, 0, movedOption);\n\n        setItem({ ...item, options: newOptions });\n        setErrors([])\n    };\n\n    const handleChangeOptionValue = (value, index) => {\n        const updatedItem = { ...item };\n        updatedItem.options[index].value = value;\n        setItem(updatedItem)\n    }\n\n    const VariablesName = <div>\n        <label className='text-sm text-gray-500'>{t('flow.variableName')}：</label>\n        <Input value={item.name} className='mt-2' onChange={(e) => setItem(prevItem => ({\n            ...prevItem,\n            name: e.target.value\n        }))} />\n    </div>\n\n    return (<DialogContent className=\"sm:max-w-[425px]\">\n        <Tabs defaultValue={item.type}\n            className=\"w-full\"\n            onValueChange={(t) => setItem(prevItem => ({\n                ...prevItem,\n                type: t\n            }))} >\n            <TabsList className=\"\">\n                <TabsTrigger value=\"text\" className=\"roundedrounded-xl\">{t('flow.text')}</TabsTrigger>\n                <TabsTrigger value=\"select\">{t('flow.dropdown')}</TabsTrigger>\n            </TabsList>\n\n            <TabsContent value=\"text\">\n                {VariablesName}\n                <div>\n                    <label className='text-sm text-gray-500'>{t('flow.maxLength')}：</label>\n                    <Input value={item.maxLength} className='mt-2' onChange={(e) => setItem(prevItem => ({\n                        ...prevItem,\n                        maxLength: e.target.value\n                    }))} />\n                </div>\n            </TabsContent>\n            <TabsContent value=\"select\" className='pb-10 px-2 max-h-80 overflow-y-auto scrollbar-hide'>\n                {VariablesName}\n                <label className='text-sm text-gray-500'>{t('flow.options')}：</label>\n                <DragDropContext onDragEnd={handleDragEnd}>\n                    <Droppable droppableId=\"list\" direction=\"vertical\" >\n                        {(provide) => (\n                            <div  {...provide.droppableProps} ref={provide.innerRef}>\n                                {item.options.map((option, index) =>\n                                    <Draggable key={'li' + option.key} draggableId={'li' + option.key} index={index}>\n                                        {(provided, snapshot) => (\n                                            <div className='flex mt-2 gap-2 select-none'\n                                                ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps}\n                                                style={snapshot.isDragging ? {\n                                                    ...provided.draggableProps.style, position: 'relative', left: 0, top: 0\n                                                } : provided.draggableProps.style}>\n                                                <Input value={option.value} className={errors[index] && 'border-red-400'} onChange={(e) => handleChangeOptionValue(e.target.value, index)} />\n                                                <button onClick={() => {\n                                                    setItem((old) => {\n                                                        let newItem = cloneDeep(old);\n                                                        newItem.options.splice(index, 1);\n                                                        return newItem;\n                                                    });\n                                                    setErrors([])\n                                                }}>\n                                                    <X className={\"h-4 w-4 hover:text-accent-foreground\"} />\n                                                </button>\n                                                <button>\n                                                    <ArrowDownUp className={\"h-4 w-4 hover:text-accent-foreground\"} />\n                                                </button>\n                                            </div>\n                                        )}\n                                    </Draggable>\n                                )}\n                                {/* {provide.placeholder} */}\n                            </div>\n                        )}\n                    </Droppable>\n                </DragDropContext>\n                <button onClick={() =>\n                    setItem(prevItem => ({\n                        ...prevItem,\n                        options: [...prevItem.options, { key: generateUUID(4), value: \"\" }]\n                    }))\n                }>\n                    <Plus className={\"h-4 w-4 mt-2 hover:text-accent-foreground\"} />\n                </button>\n            </TabsContent>\n        </Tabs>\n        <DialogFooter>\n            <Button className='px-8' variant='outline' size='sm' onClick={() => onClose(false)}>{t('cancel')}</Button>\n            <Button className='px-8' onClick={handleSave} size='sm'>{t('save')}</Button>\n        </DialogFooter>\n        <div className='flex mt-4 justify-end gap-4'>\n        </div>\n    </DialogContent>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/components/VariablesComponent/index.tsx",
    "content": "import cloneDeep from \"lodash-es/cloneDeep\";\nimport { ExternalLink, Plus, X } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { Variable, VariableType, delVariableApi, getVariablesApi, saveVariableApi } from \"../../controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { generateUUID } from \"../../utils\";\nimport { Dialog } from \"../bs-ui/dialog\";\nimport VarDialog from \"./VarDialog\";\n\n/**\n * @component 变量编辑，分文本和options类型\n * @description\n * 维护一个变量的列表。\n * 通过 nodeId 获取该组件的变量集合，支持增删改\n * 通过子组件VarDialog编辑每一项\n */\n\nexport default function VariablesComponent({ vid, nodeId, flowId, onChange }: {\n    vid: number\n    nodeId: string\n    flowId: string\n    onChange: (val: any) => void\n}) {\n    const [items, setItems] = useState<Variable[]>([])\n\n    useEffect(() => {\n        // api nodeId -> items\n        flowId && vid && getVariablesApi({\n            version_id: vid,\n            flow_id: flowId,\n            node_id: nodeId\n        }).then(arr => setItems(arr))\n    }, [flowId, vid])\n\n    const [openPop, setOpenPop] = useState(false)\n    const { setErrorData } = useContext(alertContext);\n\n    const { t } = useTranslation()\n\n    // save\n    const handleSave = async (_item) => {\n        if (!_item.name) {\n            return setErrorData({\n                title: t('prompt'),\n                list: [t('flow.enterVarName')]\n            });\n        }\n        // 重名校验\n        const hasName = items.find(item => item.name === _item.name)\n        if (hasName && hasName.id !== _item.id) {\n            return setErrorData({\n                title: t('prompt'),\n                list: [t('flow.varNameExists')],\n            });\n        }\n\n        setOpenPop(false)\n        // api\n        const param: any = {\n            \"flow_id\": flowId,\n            \"node_id\": nodeId,\n            version_id: vid,\n            \"variable_name\": _item.name,\n            \"value_type\": Number(_item.type === VariableType.Select) + 1,\n            \"value\": _item.type === VariableType.Text ? (_item.maxLength + '') : _item.options.map(el => el.value).join(',')\n        }\n        if (_item.update) {\n            param.id = _item.id\n        }\n        captureAndAlertRequestErrorHoc(saveVariableApi(param).then(res => {\n            const _items = items.map(item => item.id === _item.id ? { ..._item, id: res.id, update: true } : item)\n            // const hasValue = _items.find(item => item.name)\n            // 保存时 id传出去保存，用来校验必填项\n            onChange(_items.map(el => el.name))\n            setItems(_items)\n        }))\n    }\n\n    // \n    const handleDelClick = async (index) => {\n        let newItems = cloneDeep(items);\n        const item = newItems.splice(index, 1);\n        item[0].update && await captureAndAlertRequestErrorHoc(delVariableApi(item[0].id))\n        setItems(newItems)\n        // 触发必填校验\n        !newItems.length && onChange('')\n    }\n\n    // list超出滚动，配合template-scrollbar使用（TODO 抽象为插槽）\n    const scrollBodyRef = useRef<HTMLDivElement>(null);\n    useEffect(() => {\n        const scrollFun = (event) => {\n            // 双指缩放 event.ctrlKey为 true\n            if (!event.ctrlKey) {\n                event.stopPropagation();\n            }\n        }\n        scrollBodyRef.current.addEventListener('wheel', scrollFun);\n        return () => scrollBodyRef.current?.removeEventListener('wheel', scrollFun);\n    }, [])\n\n    return (\n        <div ref={scrollBodyRef} className=\"flex flex-col gap-3 template-scrollbar\" >\n            {items.map((item, idx) => {\n                return (\n                    <div key={idx} className=\"flex w-full gap-3\">\n                        <div className=\"input-primary min-h-8\" onClick={() => setOpenPop(true)}>{item.name}</div>\n                        <button onClick={() => setOpenPop(true)}><ExternalLink className={\"h-4 w-4 hover:text-accent-foreground\"} /></button>\n                        <Dialog open={openPop} onOpenChange={setOpenPop}>\n                            <VarDialog data={item} onSave={handleSave} onClose={setOpenPop} />\n                        </Dialog>\n                        <button onClick={() => handleDelClick(idx)} >\n                            <X className={\"h-4 w-4 hover:text-accent-foreground\"} />\n                        </button>\n                    </div>\n                );\n            })}\n            <button\n                onClick={() => {\n                    setItems((old) => {\n                        let newItems = cloneDeep(old);\n                        newItems.push({\n                            id: generateUUID(8),\n                            name: \"\",\n                            maxLength: 50,\n                            type: VariableType.Text,\n                            update: false,\n                            options: [{\n                                key: generateUUID(4),\n                                value: \"\"\n                            }],\n                            nodeId,\n                            required: false\n                        });\n                        return newItems;\n                    });\n                }}\n            >\n                <Plus className={\"h-4 w-4 hover:text-accent-foreground\"} />\n            </button>\n        </div >\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/FileView.tsx",
    "content": "import throttle from 'lodash-es/throttle';\nimport * as pdfjsLib from 'pdfjs-dist';\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FixedSizeList as List, areEqual } from 'react-window';\nimport { LoadingIcon } from '../bs-icons/loading';\n\n// A4 比例(itemSize：item的高度)\n// 595.32 * 841.92 采用宽高比0.70约束\nlet pageScale = 0.7\nlet pdfPageCache = {}\n\ninterface RowProps {\n    drawfont: boolean\n    index: number\n    style: any\n    size: number\n    labels?: { id: string, label: number[], active: boolean }[]\n    pdf: any\n    onLoad: (w: number) => void\n    onSelectLabel: (data: { id: string, active: boolean }) => void\n}\n// 绘制一页pdf\nconst Row = React.memo(({ drawfont, index, style, size, labels, pdf, onLoad, onSelectLabel }: RowProps) => {\n    const wrapRef = useRef(null);\n    const txtRef = useRef(null);\n    const annotRef = useRef(null);\n    // 绘制\n    const [scaleState, setScaleState] = useState(1)\n    // 清晰度倍数\n    const clarity = 2.5;\n    const draw = async () => {\n        const page = pdfPageCache[index + 1] || await pdf.getPage(index + 1);\n        pdfPageCache[index + 1] = page\n        const viewport = page.getViewport({ scale: clarity });\n        const scale = size / viewport.width;\n        const canvas = document.createElement('canvas')\n        const context = canvas.getContext('2d')\n        const outputScale = window.devicePixelRatio || 1;\n        canvas.width = Math.floor(viewport.width);\n        canvas.height = Math.floor(viewport.height);\n        canvas.style.width = size + \"px\";\n        canvas.style.height = Math.floor(viewport.height * scale) + \"px\";\n        wrapRef.current?.append(canvas)\n        const transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale,\n            0, 0\n        ] : null;\n\n        const baseViewport = page.getViewport({ scale: 1 });\n        const baseScale = size / baseViewport.width;\n        setScaleState(baseScale)\n        onLoad?.(baseViewport.width)\n\n        // 渲染批注层\n        await renderAnnotations(page, baseScale);\n        // 渲染页面\n        page.render({\n            canvasContext: context,\n            viewport: page.getViewport({ scale: clarity }),\n            // transform\n        });\n        // 渲染文本层（如果需要）\n        { drawfont && drawText(page, page.getViewport({ baseScale })) }\n    }\n\n    const drawText = async (page, viewport) => {\n        page.getTextContent().then(function (textContent) {\n            return pdfjsLib.renderTextLayer({\n                textContentSource: textContent,\n                container: txtRef.current,\n                viewport: viewport,\n                textDivs: []\n            });\n        })\n    }\n\n    const renderAnnotations = async (page, scale) => {\n        // 创建注释层实例\n        // const annotationLayer = new pdfjsLib.AnnotationLayer({\n        //     div: annotRef.current,\n        //     accessibilityManager: null,\n        //     annotationCanvasMap: new Map(),\n        //     l10n: {\n        //         async translate(element: HTMLElement) {\n        //             return Promise.resolve();\n        //         },\n        //         async get(key: string, args?: any) {\n        //             return Promise.resolve(key);\n        //         }\n        //     },\n        //     page,\n        //     viewport\n        // });\n        // console.log('viewport :>> ', viewport);\n\n        page.getAnnotations().then((annotations) => {\n            const viewport = page.getViewport({ scale: 1 });\n            // 自定义方式处理批注\n            annotations.forEach(annotation => {\n                if (annotation.subtype === 'FreeText') {\n                    const { richText, rect } = annotation\n                    const rootHtml = createElementFromJSON(richText.html);\n                    rootHtml.style.position = 'absolute';\n                    rootHtml.style.left = `${rect[0] * scale}px`;\n                    rootHtml.style.top = `${(viewport.height - rect[3]) * scale - 4}px`;\n                    // rootHtml.style.width = `${rect[2] * scale}px`;\n                    // rootHtml.style.height = `${rect[3] * scale}px`;\n                    rootHtml.style.transform = `scale(${viewport.scale})`;\n                    annotRef.current.appendChild(rootHtml);\n                }\n            });\n            // annotationLayer.render({\n            //     viewport,\n            //     div: annotRef.current,\n            //     annotations,\n            //     page,\n            //     renderForms: true,\n            //     linkService: null,  // 根据需要提供链接服务\n            //     downloadManager: null,  // 下载管理\n            // }).then(() => {\n            //     console.log('Annotation layer rendered.', annotations);\n            // });\n        })\n    };\n\n    useEffect(() => {\n        draw()\n        // return () => {};\n    }, [])\n\n    // 去重\n    const bboxMap = {}\n    const areEqualFn = (bbox) => {\n        if (bboxMap[bbox.join('-')]) {\n            return true\n        } else {\n            bboxMap[bbox.join('-')] = true\n            return false\n        }\n    }\n\n    return <div className=\"bg-[#fff] border-b-2 overflow-hidden\" style={style}>\n        {/* <span className=\"absolute\">{index + 1}</span> */}\n        {/* canvas  */}\n        <div ref={wrapRef} className=\"canvasWrapper\"></div>\n        {/* label */}\n        {labels && <svg className=\"absolute top-0 w-full h-full z-30\">\n            {labels.map(box =>\n                !areEqualFn(box.label) && <rect\n                    key={box.id}\n                    x={box.label[0] * scaleState}\n                    y={box.label[1] * scaleState}\n                    width={(box.label[2] - box.label[0]) * scaleState}\n                    height={(box.label[3] - box.label[1]) * scaleState}\n                    style={box.active ?\n                        { fill: 'rgba(255, 236, 61, 0.2)', strokeWidth: 1, stroke: '#ffec3d', cursor: 'pointer' }\n                        : { fill: 'transparent', strokeWidth: 1, stroke: '#666', strokeDasharray: 4, cursor: 'pointer' }}\n                    onClick={() => onSelectLabel({ id: box.id, active: !box.active })}\n                />\n            )}\n        </svg>}\n        {/* text  */}\n        <div ref={txtRef} className=\"textLayer absolute inset-0 overflow-hidden opacity-25 origin-top-left z-20 leading-none\"></div>\n        {/* annotaions */}\n        <div ref={annotRef} className='absolute inset-0 overflow-hidden origin-top-left z-20'></div>\n    </div>\n}, areEqual)\n\n// 拖拽面板\nconst DragPanne = ({ onMouseEnd }) => {\n    const [isDragging, setIsDragging] = useState(false);\n    const [startPos, setStartPos] = useState({ x: 0, y: 0 });\n    const [currentPos, setCurrentPos] = useState({ x: 0, y: 0 });\n    // const [isShiftPressed, setIsShiftPressed] = useState(false);\n    const boxRef = useRef(null);\n\n    useEffect(() => {\n        const handleMouseDown = (e) => {\n            const rect = boxRef.current.getBoundingClientRect();\n            setIsDragging(true);\n            setStartPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n            setCurrentPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n        };\n\n        const handleMouseMove = (e) => {\n            if (isDragging) {\n                const rect = boxRef.current.getBoundingClientRect();\n                setCurrentPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n            }\n        };\n\n        const handleMouseUp = () => {\n            if (isDragging) {\n                setIsDragging(false);\n                onMouseEnd(startPos, currentPos)\n                // console.log('Selection coordinates:', {\n                //     topLeft: startPos,\n                //     bottomRight: currentPos,\n                // });\n            }\n        };\n\n        window.addEventListener('mousedown', handleMouseDown);\n        window.addEventListener('mousemove', handleMouseMove);\n        window.addEventListener('mouseup', handleMouseUp);\n\n        return () => {\n            window.removeEventListener('mousedown', handleMouseDown);\n            window.removeEventListener('mousemove', handleMouseMove);\n            window.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, [isDragging, startPos, currentPos, onMouseEnd]);\n\n    return (\n        <div\n            ref={boxRef}\n            className=\"absolute inset-x-2 inset-y-4 overflow-hidden z-10\"\n            style={{ pointerEvents: 'none' }}\n        >\n            {isDragging && (\n                <div\n                    className=\"absolute border-2 border-blue-500 bg-blue-100 bg-opacity-25\"\n                    style={{\n                        opacity: Math.abs(currentPos.x - startPos.x) + Math.abs(currentPos.y - startPos.y) > 2 ? 1 : 0,\n                        left: Math.min(startPos.x, currentPos.x),\n                        top: Math.min(startPos.y, currentPos.y),\n                        width: Math.abs(currentPos.x - startPos.x),\n                        height: Math.abs(currentPos.y - startPos.y),\n                    }}\n                />\n            )}\n        </div>\n    );\n};\nexport default function FileView({\n    startIndex = 1,\n    drawfont = false,\n    select = false,\n    scrollTo,\n    fileUrl,\n    labels,\n    onPageChange = (offset, h, paperSize, scale) => { },\n    onSelectLabel = () => { }\n}) {\n    const { t } = useTranslation()\n    const paneRef = useRef(null)\n    const listRef = useRef(null)\n    const [boxSize, setBoxSize] = useState({ width: 0, height: 0 })\n    const [loading, setLoading] = useState(false)\n\n    // 视口\n    useEffect(() => {\n        const panneDom = paneRef.current;\n\n        const throttledResizeHandler = throttle(entries => {\n            if (panneDom) {\n                for (let entry of entries) {\n                    const [width, height] = [entry.contentRect.width, entry.contentRect.height];\n                    setBoxSize({ width, height });\n                    const warpDom = document.getElementById('warp-pdf');\n                    if (warpDom) {\n                        warpDom.style.setProperty(\"--scale-factor\", width / fileWidthRef.current + '');\n                    }\n                }\n            }\n        }, 300);\n\n        const resizeObserver = new ResizeObserver(throttledResizeHandler);\n\n        if (panneDom) {\n            resizeObserver.observe(panneDom);\n        }\n\n        return () => resizeObserver.unobserve(panneDom)\n    }, []);\n    // 加载文件\n    const [pdf, setPdf] = useState(null)\n\n\n    useEffect(() => {\n        // loding\n        setLoading(true)\n        // sass环境使用sass地址\n        const pdfUrl = fileUrl.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL);  // '/doc.pdf';\n\n\n        pdfjsLib.GlobalWorkerOptions.workerSrc = __APP_ENV__.BASE_URL + '/pdf.worker.min.js';\n        pdfjsLib.getDocument({\n            url: pdfUrl,\n            cMapUrl: __APP_ENV__.BASE_URL + '/cmaps/',\n            cMapPacked: true,\n        }).promise.then(async (pdfDocument) => {\n            pdfPageCache = {}\n            const page = pdfPageCache[1] || await pdfDocument.getPage(1);\n            pdfPageCache[1] = page\n\n            const viewport = page.getViewport({ scale: 1 });\n            // 计算是否A4纸\n            pageScale = Math.min(pageScale, viewport.width / viewport.height)\n            setPdf(pdfDocument)\n            setLoading(false)\n        })\n    }, [fileUrl])\n\n    const scrollToFunc = (() => {\n        const pageY = (scrollTo[0] - startIndex) * (boxSize.width / pageScale)\n        const offsetY = scrollTo[1] * (boxSize.width / fileWidthRef.current) - 100\n        listRef.current.scrollTo(pageY + offsetY);\n    })\n    useEffect(() => {\n        listRef.current && scrollToFunc()\n    }, [scrollTo])\n\n    const fileWidthRef = useRef(1)\n    const loadedRef = useRef(false)\n    const handleLoadPage = (w: number) => {\n        // 文档宽度变化时 初始化样式、宽度、定位等信息\n        if (loadedRef.current) return\n        // if (Math.abs(fileWidthRef.current - w) < 1) return\n        const warpDom = document.getElementById('warp-pdf')\n        warpDom.style.setProperty(\"--scale-factor\", boxSize.width / w + '')\n        fileWidthRef.current = w\n        loadedRef.current = true\n        scrollToFunc()\n    }\n\n    const scrollOffsetRef = useRef(0)\n    const hanleDragSelectLabel = useCallback((start, end) => {\n        let { x, y } = start\n        let { x: x1, y: y1 } = end\n        const scale = fileWidthRef.current / boxSize.width\n        const scroll = scrollOffsetRef.current\n        x *= scale\n        y = (y + scroll) * scale\n        x1 *= scale\n        y1 = (y1 + scroll) * scale\n\n        const selects = []\n        Object.keys(labels).forEach(key => {\n            const pagelabels = labels[key]\n            pagelabels.forEach(item => {\n                const [sx, sy, ex, ey] = item.label\n                const pageH = (key - startIndex) * (boxSize.width / pageScale * scale)\n                if (x <= sx && y <= sy + pageH && x1 >= ex && y1 >= ey + pageH) {\n                    console.log('item.id :>> ', item.id);\n                    selects.push({ id: item.id, active: !item.active })\n                }\n            })\n        })\n        selects.length && onSelectLabel(selects)\n    }, [boxSize, labels])\n\n    const handleScroll = ({ scrollOffset }) => {\n        scrollOffsetRef.current = scrollOffset\n        onPageChange?.(scrollOffset, boxSize.height, boxSize.width / pageScale, fileWidthRef.current / boxSize.width)\n        // console.log('object :>> ', scrollOffset, boxSize.height, boxSize.width / 0.7);\n    }\n\n    const itemRenderer = useCallback((props) => <Row\n        {...props}\n        key={props.index}\n        drawfont={drawfont}\n        pdf={pdf}\n        size={boxSize.width}\n        labels={labels[props.index + startIndex]}\n        onLoad={handleLoadPage}\n        onSelectLabel={val => select && onSelectLabel([val])}\n    ></Row>, [pdf, drawfont, select, labels, boxSize]);\n\n    return <div ref={paneRef} className=\"flex-1 h-full bg-gray-100 rounded-md py-4 px-2 relative\"\n        onContextMenu={(e) => e.preventDefault()}\n    >\n        {\n            loading\n                ? <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                    <LoadingIcon />\n                </div>\n                : <div id=\"warp-pdf\" className=\"file-view absolute\">\n                    <List\n                        ref={listRef}\n                        itemCount={pdf?.numPages || 100}\n                        itemSize={boxSize.width / pageScale}\n                        // 滚动区盒子大小\n                        width={boxSize.width}\n                        height={boxSize.height}\n                        onScroll={handleScroll}\n                    >\n                        {itemRenderer}\n                    </List>\n                </div>\n        }\n        {select && <DragPanne onMouseEnd={hanleDragSelectLabel} />}\n    </div>\n};\n\n\nconst SASS_HOST = 'https://bisheng.dataelem.com'\nexport const checkSassUrl = (url: string) => {\n    return url.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)\n    // location.origin === SASS_HOST ? url.replace(/https?:\\/\\/[^\\/]+/, '') : url;\n}\n\n\n/**\n * 根据给定的 JSON 结构创建 HTML 元素\n * @param {Object} node - JSON 节点\n * @returns {HTMLElement} - 创建的 HTML 元素\n */\nfunction createElementFromJSON(node) {\n    if (!node || !node.name) return null;\n\n    // 创建元素\n    const element = document.createElement(node.name);\n\n    // 设置属性\n    if (node.attributes) {\n        for (const [attr, value] of Object.entries(node.attributes)) {\n            if (attr === 'style' && typeof value === 'object') {\n                for (const [styleName, styleValue] of Object.entries(value)) {\n                    // 将驼峰式属性名转换为CSS属性名\n                    const cssProperty = styleName.replace(/([A-Z])/g, '-$1').toLowerCase();\n                    element.style[cssProperty] = styleValue;\n                }\n            } else if (attr === 'class' && Array.isArray(value)) {\n                element.classList.add(...value);\n            } else if (attr !== 'value') { // 确保 'value' 不是一个属性\n                if (value !== undefined && value !== null) { // 避免设置 undefined 或 null\n                    element.setAttribute(attr, value);\n                }\n            }\n        }\n    }\n\n    // 添加子元素或文本内容\n    if (node.children && Array.isArray(node.children)) {\n        node.children.forEach(child => {\n            const childElement = createElementFromJSON(child);\n            if (childElement) {\n                element.appendChild(childElement);\n            }\n        });\n    }\n\n    // 如果存在文本值，将其作为文本节点添加\n    if (node.value && typeof node.value === 'string') {\n        const textNode = document.createTextNode(node.value);\n        element.appendChild(textNode);\n    }\n\n    return element;\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/apiComponent/ApiAccess.tsx",
    "content": "import { Badge } from '@/components/bs-ui/badge';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/bs-ui/card';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/bs-ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/bs-ui/tabs';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { copyText } from '@/utils';\nimport { Check, Clipboard } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\n\nexport const JsonItem = ({ name, type, desc, required = false, example = '', remark = '', children = null, line = false }) => {\n    const { t } = useTranslation()\n    return <div className='pl-6 mb-4'>\n        <div className='relative flex justify-between mb-2'>\n            <div className='flex gap-x-4 gap-y-1 flex-wrap'>\n                <Badge variant='outline' className='bg-primary/15 text-primary'>{name}</Badge>\n                <div>{type}</div>\n                <div className='text-gray-500'>{desc}</div>\n            </div>\n            {required ? <span className='text-red-500 min-w-12'>{t('api.required')}</span> : <span className='text-gray-500 min-w-12'>{t('api.optional')}</span>}\n            {line && <div className='absolute bg-input w-6 h-[1px] -left-8 top-2.5'></div>}\n        </div>\n        {example && <div className='mb-2'>{t('api.exampleValue')}：<span className='text-gray-500'>{example}</span></div>}\n        {remark && <div className='mb-4 text-orange-500'>{remark}</div>}\n        {children && <div className='border-l border-dashed border-input pl-2'>{children}</div>}\n    </div>\n}\n\nconst ApiAccess = ({ }) => {\n\n    const { t } = useTranslation()\n    const { id: assisId } = useParams()\n\n    const curl = () => {\n        return `curl -X POST \"${window.location.protocol}//${window.location.host}/api/v2/assistant/chat/completions\" \\\\\n-H \"User-Agent: Apifox/1.0.0 (https://apifox.com)\" \\\\\n-H \"Content-Type: application/json\" \\\\\n-d '{\n  \"model\": \"${assisId}\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"你好\"\n    }\n  ],\n  \"temperature\": 0,\n  \"stream\": true\n}'\n`\n    }\n\n    const python = () => {\n        return `from openai import OpenAI\nbase_url = \"${window.location.protocol}//${window.location.host}/api/v2/assistant\"\nmodel = \"${assisId}\"\nclient = OpenAI(base_url=base_url, api_key=\"empty\")\n# Round 1\nmessages = [{\"role\": \"user\", \"content\": \"9.11 and 9.8, 谁更大?\"}]\nresponse = client.chat.completions.create(\n    model=model,\n    messages=messages,\n    stream=True\n)\nreasoning_content = \"\"\ncontent = \"\"\nfor chunk in response:\n    if chunk.choices[0].delta.model_extra.get(\"reasoning_content\"):\n        if not reasoning_content:\n            print(\"\\\\n\\\\n-----Reasoning Content-----\\\\n\")\n        reasoning_chunk = chunk.choices[0].delta.reasoning_content\n        print(reasoning_chunk, end='', flush=True)  # 流式打印reasoning\n        reasoning_content += reasoning_chunk\n    elif chunk.choices[0].delta.content:\n        if not content:\n            print(\"\\\\n\\\\n-----Final content-----\\\\n\")\n        content_chunk = chunk.choices[0].delta.content\n        print(content_chunk, end='', flush=True)  # 流式打印答案\n        content += content_chunk`\n    }\n\n    const { message } = useToast()\n    const handleCopyLink = (e) => {\n        copyText(e.target).then(() => {\n            message({ variant: 'success', description: t('api.copySuccess') })\n        })\n    }\n\n    const [isCopied, setIsCopied] = useState<Boolean>(false);\n    const copyToClipboard = (code: string) => {\n        setIsCopied(true);\n        copyText(code).then(() => {\n            setTimeout(() => {\n                setIsCopied(false);\n            }, 2000);\n        })\n    }\n\n    return (\n\n        <section className='max-w-[1600px] flex-grow'>\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle>{t('api.apiRequestExample')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <h3 className=\"mb-2 bg-secondary px-4 py-2 inline-flex items-center rounded-md gap-1\">\n                        <Badge>POST</Badge>\n                        <span className='hover:underline cursor-pointer' onClick={handleCopyLink}>/api/v2/assistant/chat/completions</span>\n                    </h3>\n                    <p className='mt-2'>\n                        {t('api.sdkNote')}\n                    </p>\n                    <p className='my-2'>{t('api.exampleCode')}：</p>\n                    <Tabs defaultValue=\"curl\" className=\"w-full mb-[40px]\">\n                        <TabsList>\n                            <TabsTrigger value=\"curl\">cURL</TabsTrigger>\n                            <TabsTrigger value=\"python\">Python API</TabsTrigger>\n                        </TabsList>\n                        <TabsContent value=\"curl\" className='relative'>\n                            <button\n                                className=\"absolute right-0 flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                                onClick={() => copyToClipboard(curl())}\n                            >\n                                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n                            </button>\n                            <SyntaxHighlighter\n                                className=\"w-full overflow-auto custom-scroll\"\n                                language={'bash'}\n                                style={oneDark}\n                            >\n                                {curl()}\n                            </SyntaxHighlighter>\n                        </TabsContent>\n                        <TabsContent value=\"python\" className='relative'>\n                            <button\n                                className=\"absolute right-0 flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                                onClick={() => copyToClipboard(python())}\n                            >\n                                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n                            </button>\n                            <SyntaxHighlighter\n                                className=\"w-full overflow-auto custom-scroll\"\n                                language={'python'}\n                                style={oneDark}\n                            >\n                                {python()}\n                            </SyntaxHighlighter>\n                        </TabsContent>\n                    </Tabs>\n                </CardContent>\n            </Card>\n\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle>{t('api.requestParams')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[60%]'>\n                                    {t('api.bodyParams')} <span className='bg-secondary px-2 py-1 rounded-md text-sm'>application/json</span>\n                                </TableHead>\n                                <TableHead>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top pt-6'>\n                                    <JsonItem name=\"model\" type=\"string\" desc={t('api.assistantId')} required example={assisId}></JsonItem>\n                                    <JsonItem name=\"messages\" type=\"array [object {2}] \" desc={t('api.messageList')} required>\n                                        <JsonItem name=\"role\" type=\"string\" desc=\"\" required example=\"user\" line></JsonItem>\n                                        <JsonItem name=\"content\" type=\"string\" desc=\"\" required example=\"你好\" line></JsonItem>\n                                    </JsonItem>\n                                    <JsonItem name=\"temperature\" type=\"integer\" desc={t('api.temperature')} ></JsonItem>\n                                    <JsonItem name=\"stream\" type=\"boolean\" desc={t('api.stream')} ></JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"model\": \"${assisId}\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"你好\"\n    }\n  ],\n  \"temperature\": 0,\n  \"stream\": true\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card>\n\n            <Card>\n                <CardHeader>\n                    <CardTitle>{t('api.responseData')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[60%]'>{t('api.dataStructure')}</TableHead>\n                                <TableHead>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top pt-6'>\n                                    <JsonItem name=\"id\" type=\"string\" desc='' required></JsonItem>\n                                    <JsonItem name=\"object\" type=\"string\" desc='' required></JsonItem>\n                                    <JsonItem name=\"created\" type=\"integer\" desc='' required></JsonItem>\n                                    <JsonItem name=\"choices\" type=\"array [object {3}]\" desc='' required>\n                                        <JsonItem name=\"index\" type=\"integer\" desc='' line></JsonItem>\n                                        <JsonItem name=\"message\" type=\"object\" desc='' line>\n                                            <JsonItem name=\"role\" type=\"string\" desc=\"\" required line></JsonItem>\n                                            <JsonItem name=\"content\" type=\"string\" desc=\"\" required line></JsonItem>\n                                        </JsonItem>\n                                        <JsonItem name=\"finish_reason\" type=\"string\" desc='' line></JsonItem>\n                                    </JsonItem>\n                                    <JsonItem name=\"usage\" type=\"object \" desc='' required>\n                                        <JsonItem name=\"prompt_tokens\" type=\"integer\" desc='' required line></JsonItem>\n                                        <JsonItem name=\"completion_tokens\" type=\"integer\" desc='' required line></JsonItem>\n                                        <JsonItem name=\"total_tokens\" type=\"integer\" desc='' required line></JsonItem>\n                                    </JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`\n{\n  \"id\": \"148964adf7ec439f87a6240289735740\",\n  \"object\": \"chat.completion\",\n  \"created\": 1720755036,\n  \"model\": \"a31d044d-af13-43da-b715-d87a29569809\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"message\": {\n        \"role\": \"assistant\",\n        \"content\": \"你好，有什么可以帮你的？\"\n      },\n      \"finish_reason\": \"stop\"\n    }\n  ]\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card>\n        </section>\n    );\n};\n\nexport default ApiAccess;"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/apiComponent/ApiAccessFlow.tsx",
    "content": "import { Badge } from '@/components/bs-ui/badge';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/bs-ui/card';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/bs-ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/bs-ui/tabs';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { getCurlCode, getPythonApiCode } from '@/constants';\nimport { TabsContext } from '@/contexts/tabsContext';\nimport { copyText } from '@/utils';\nimport { Check, Clipboard } from 'lucide-react';\nimport { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\nimport { JsonItem } from './ApiAccess';\nimport { Button } from '@/components/bs-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/bs-ui/popover';\nimport { useParams } from 'react-router-dom';\n\n\nconst ApiAccessFlow = () => {\n    const { t } = useTranslation()\n    const { id } = useParams()\n    // const { flow, getTweak, tabsState } = useContext(TabsContext);\n    // const curl_code = getCurlCode(flow, getTweak, tabsState);\n    // const pythonCode = getPythonApiCode(flow, getTweak, tabsState);\n\n    const { message } = useToast()\n    const handleCopyLink = (e) => {\n        copyText(e.target).then(() => {\n            message({ variant: 'success', description: t('api.copySuccess') })\n        })\n    }\n\n    const [isCopied, setIsCopied] = useState<Boolean>(false);\n    const copyToClipboard = (code: string) => {\n        setIsCopied(true);\n        copyText(code).then(() => {\n            setTimeout(() => {\n                setIsCopied(false);\n            }, 2000);\n        })\n    }\n\n    const brand = t('bisheng') === 'BISHENG' ? '' : t('bisheng')\n\n    const scrollToSection = (params) => {\n\n    }\n\n    const firstCode = `import requests\nimport json\n\nurl = \"${location.origin}/api/v2/workflow/invoke\"\n\npayload = json.dumps({\n   \"workflow_id\": \"${id}\",\n   \"stream\": False, # 是否请求流式返回工作流事件，默认为 True。本示例为了直观展示返回结果，所以改为False 使用非流式请求，真实业务场景中为了用户体验建议请求流式返回。\n})\n\nheaders = {\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)# 输出工作流的响应`\n\n\n    return (\n        <section className='max-w-[1600px] flex-grow'>\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle id=\"guide-t1\">接口基本信息</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <h3 className='py-2' id=\"guide-word\">1. 工作流请求执行接口</h3>\n                    <h3 className=\"mb-2 bg-secondary px-4 py-2 inline-flex items-center rounded-md gap-1\">\n                        <Badge>POST</Badge> <span className='hover:underline cursor-pointer' onClick={handleCopyLink}>{location.origin}/api/v2/workflow/invoke</span>\n                    </h3>\n                    <h3 className='py-2' id=\"guide-word\">2. 工作流停止运行接口</h3>\n                    <h3 className=\"mb-2 bg-secondary px-4 py-2 inline-flex items-center rounded-md gap-1\">\n                        <Badge>POST</Badge> <span className='hover:underline cursor-pointer' onClick={handleCopyLink}>{location.origin}/api/v2/workflow/stop</span>\n                    </h3>\n                </CardContent>\n            </Card>\n\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle id=\"guide-t2\">整体调用流程</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <div className='w-[700px] mx-auto'><img src={__APP_ENV__.BASE_URL + '/assets/api/flow.png'} className='size-full' alt=\"\" /></div>\n                    <p className='bisheng-label pb-2'>如时序图所示，在对接工作流 API 时，一般会经历以下步骤：</p>\n                    <p className=\"bisheng-label pb-2\"><span className=\"font-semibold\">1. 第一步：</span>发起工作流执行。通过/invoke 接口让工作流从开始节点开始运行：</p>\n                    <div className='relative  max-w-[80vw]'>\n                        <button\n                            className=\"absolute right-0 flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                            onClick={() => copyToClipboard(firstCode)}\n                        >\n                            {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n                        </button>\n                        <SyntaxHighlighter\n                            className=\"w-full overflow-auto custom-scroll text-sm\"\n                            language={'json'}\n                            style={oneDark}\n                        >\n                            {firstCode}\n                        </SyntaxHighlighter>\n                    </div>\n                    <p className=\"bisheng-label py-2\"><span className=\"font-semibold\">2. 第二步：</span>获取并解析工作流返回的事件。（一定要保留 session_id 等上下文信息，以便后续继续请求）</p>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll text-sm\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n    \"status_code\": 200,\n    \"status_message\": \"SUCCESS\",\n    \"data\": {\n        \"session_id\": \"d4347ab8e8cd48c48ac9920dbb5a9b35_async_task_id\",\n        \"events\": [\n            {\n                \"event\": \"guide_word\",\n                \"message_id\": null,\n                \"status\": \"end\",\n                \"node_id\": \"start_553b9\",\n                \"node_execution_id\": \"ce9a73b376c647159b1b2de1806129cf\",\n                \"output_schema\": {\n                    \"message\": \"您好，请问想聊些什么呢？\",\n                    \"reasoning_content\": null,\n                    \"output_key\": null,\n                    \"files\": null,\n                    \"source_url\": null,\n                    \"extra\": null\n                },\n                \"input_schema\": null\n            },\n            {\n                \"event\": \"input\",\n                \"message_id\": \"387216\",\n                \"status\": \"end\",\n                \"node_id\": \"input_2775b\",\n                \"node_execution_id\": null,\n                \"output_schema\": null,\n                \"input_schema\": {\n                    \"input_type\": \"dialog_input\",\n                    \"value\": [\n                        {\n                            \"key\": \"user_input\",\n                            \"type\": \"text\",\n                            \"value\": null,\n                            \"label\": null,\n                            \"multiple\": false,\n                            \"required\": true,\n                            \"options\": null\n                        }\n                    ]\n                }\n            }\n        ]\n    }\n}`}\n                    </SyntaxHighlighter>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\"><span className=\"font-semibold\">3. 第三步：</span>根据事件类型渲染前端，并收集用户输入。</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>如果事件是 <strong>普通输出</strong>（比如 <code className=\"bg-gray-200 py-1 rounded\">event=\"output_msg\"</code>），则直接展示内容。</li>\n                            <li className='mt-2 leading-6'>如果事件是 <strong>等待用户交互输入</strong>（比如 <code className=\"bg-gray-200 p-1 rounded\">event=\"input\"</code> 或 <code className=\"bg-gray-200 p-1 rounded\">event=\"output_with_input_msg\"</code> 或 <code class=\"bg-gray-200 p-1 rounded\">event=\"output_with_choose_msg\"</code>），则需要渲染对应的界面（对话框、表单等）。</li>\n                        </ul>\n                    </div>\n                    <p className=\"bisheng-label py-2\"><span className=\"font-semibold\">4. 第四步：</span>带着用户输入再次调用 <code className=\"bg-gray-200 p-1 rounded\">/invoke</code> 接口。</p>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll text-sm\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`payload = json.dumps({\n    \"workflow_id\": \"7481368b-dd1c-43ef-a254-dce219ee53e8\",\n    \"stream\": False,  # 启用流式传输\n    \"input\": {\"input_2775b\": {  # 事件里的节点ID\n        \"user_input\": \"贵州茅台股价情况\"  # 用户输入内容\n    }},\n    \"message_id\": \"387216\",\n    \"session_id\": \"1fc60fe0edb44219bbef5f8870dd4639_async_task_id\"\n})\n`}\n                    </SyntaxHighlighter>\n                    <p className=\"bisheng-label py-2\"><span className=\"font-semibold\">5. 第五步：</span>继续获取并解析返回的事件……直到返回 <code className=\"bg-gray-100 p-1 rounded\">close</code> 事件（非必须）结束工作流运行，也可调用 <code className=\"bg-gray-100 p-1 rounded\">POST /workflow/stop</code> 接口手动终止工作流。</p>\n                </CardContent>\n            </Card>\n\n            {/* <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle>请求参数</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[60%]'>{t('api.dataStructure')}</TableHead>\n                                <TableHead className='w-[40%]'>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <JsonItem name=\"workflow_id\" required type=\"string\" desc={'工作流唯一ID'}></JsonItem>\n                                    <JsonItem name=\"stream\" type=\"boolean\" desc={'是否流式'}>\n                                        <p className='text-gray-500'>默认值: false</p>\n                                    </JsonItem>\n                                    <JsonItem name=\"input\" type=\"object\" desc={'用户输入'}>\n                                        <p className='text-gray-500'>用户输入，在workflow是待输入状态时传入用户输入的内容</p>\n                                    </JsonItem>\n                                    <JsonItem name=\"message_id\" type=\"string\" desc={'消息唯一ID'}>\n                                        <p className='text-gray-500'>用户输入时需要传消息ID</p>\n                                    </JsonItem>\n                                    <JsonItem name=\"session_id\" type=\"string\" desc={'一次调用的唯一ID'}>\n                                        <p className='text-gray-500'>workflow运行期间唯一的标识，首次不用传后续传此参数。不传此参数默认是更新运行workflow</p>\n                                    </JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full max-w-[40vw] overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"workflow_id\": \"string\",\n  \"stream\": true,\n  \"input\": {},\n  \"message_id\": \"string\",\n  \"session_id\": \"string\"\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card> */}\n\n\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle id=\"guide-t3\">返回事件类型与处理方式</CardTitle>\n                </CardHeader>\n                <CardContent className='relative'>\n                    <p className='bisheng-label py-2'>工作流返回的响应 JSON 通常包含一个或多个事件对象（数组形式），每个事件的字段可能不一样，以下枚举全部字段情况（非真实值，仅供参考）：</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='min-w-[600px]'>{t('api.dataStructure')}</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <JsonItem name=\"event\" required type=\"str\" desc=\"事件名称\"></JsonItem>\n                                    <JsonItem name=\"node_id\" required type=\"str\" desc=\"触发事件的节点ID\"></JsonItem>\n                                    <JsonItem name=\"message_id\" required type=\"str\" desc=\"消息在数据库中的唯一ID\"></JsonItem>\n                                    <JsonItem name=\"node_execution_id\" required type=\"str\" desc=\"执行此节点时的唯一ID\"></JsonItem>\n                                    <JsonItem name=\"input_schema\" required type=\"Json\" desc=\"需要用户输入的schema\">\n                                        <JsonItem line name=\"input_type\" type=\"str\" desc=\"输入类型\" example=\"form_input\" remark=\"输入方式\"></JsonItem>\n                                        <JsonItem line name=\"value\" type=\"JsonArray\" desc=\"需要用户输入的字段信息\">\n                                            <JsonItem line name=\"key\" type=\"str\" desc=\"字段的唯一key\" example=\"category\"></JsonItem>\n                                            <JsonItem line name=\"type\" type=\"str\" desc=\"字段类型\" example=\"select\"></JsonItem>\n                                            <JsonItem line name=\"value\" type=\"str\" desc=\"字段的默认值\" example=\"\"></JsonItem>\n                                            <JsonItem line name=\"multiple\" type=\"boolean\" desc=\"是否支持多选\" example=\"True\"></JsonItem>\n                                            <JsonItem line name=\"label\" type=\"str\" desc=\"字段的展示名称\" example=\"请选择接下来要进行的操作\"></JsonItem>\n                                            <JsonItem line name=\"options\" type=\"JsonArray\" desc=\"下拉框类型的选项列表\">\n                                                <JsonItem line name=\"id\" type=\"str\" desc=\"选项的唯一ID\" example=\"0b8a2fe9\"></JsonItem>\n                                                <JsonItem line name=\"text\" type=\"str\" desc=\"选项的文本\" example=\"操作1\"></JsonItem>\n                                                <JsonItem line name=\"type\" type=\"str\" desc=\"选项类型\" example=\"\"></JsonItem>\n                                            </JsonItem>\n                                            <JsonItem line name=\"required\" type=\"boolean\" desc=\"是否必填\" example=\"True\"></JsonItem>\n                                        </JsonItem>\n                                    </JsonItem>\n                                    <JsonItem name=\"output_schema\" required type=\"Json\" desc=\"输出schema\">\n                                        <JsonItem line name=\"message\" type=\"str\" desc=\"输出的内容\"></JsonItem>\n                                        <JsonItem line name=\"reasoning_content\" type=\"str\" desc=\"推理模型的思考过程内容\"></JsonItem>\n                                        <JsonItem line name=\"output_key\" type=\"str\" desc=\"输出内容对应的变量key\" example=\"output\"></JsonItem>\n                                        <JsonItem line name=\"files\" type=\"JsonArray\" desc=\"文件列表\">\n                                            <JsonItem line name=\"path\" type=\"str\" desc=\"文件路径\" example=\"http://minio:9000/xxx.png?aa=xxx\"></JsonItem>\n                                            <JsonItem line name=\"name\" type=\"str\" desc=\"文件名称\" example=\"测试图片.png\"></JsonItem>\n                                        </JsonItem>\n                                        <JsonItem line name=\"source_url\" type=\"str\" desc=\"溯源url\" example=\"\"></JsonItem>\n                                        <JsonItem line name=\"extra\" type=\"str\" desc=\"QA知识库溯源内容\" example='{\"qa\": \"本答案来源于已有问答库: QA 知识库\", \"url\": null}'></JsonItem>\n                                    </JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"event\": \"guide_word\",  \n  # 表示当前事件类型，例如 guide_word（开场白事件）、guide_question（引导问题事件）、input（等待输入事件）、output_msg（输出事件）、close（结束事件）……\n  \n  \"node_id\": \"input_xxxx\",  \n  # 当前事件是由哪个工作流节点触发的。对于需要输入的事件（如 event=\"input\"），必须在后续请求中携带此 node_id ，以告诉后端对哪个节点进行输入。 \n  \n  \"message_id\": \"xxxxxxx\",  \n  # 消息在数据库中的唯一ID\n  \n  \"node_execution_id\": \"xxxxx\",  \n  # 此节点时的唯一执行ID。由于同一个节点可能在运行过程中执行多次，该字段用于唯一标识某次节点执行，在流式输出事件中，需要用它来区分多条流式消息。\n  \n  \"input_schema\": {   # input_schema ：需要用户输入的schema，此字段不为空 则需要给用户渲染对应的输入UI\n    \"input_type\": \"form_input\",  \n    # input_type：输入类型。取值范围包括：1) form_input：表单形式的输入；2) dialogue_input：对话框形式的用户输入；3)message_inline_input：需要用户输入的消息;4)需要用户选择的消息。\n    \n    \"value\": [  # 需要用户输入哪些字段信息，随着 input_type 类型不同，需要填写不同的字段\n      {\n        \"key\": \"category\",  # 字段的唯一key，拼接用户输入时，使用此key\n        \"type\": \"select\",  # 字段类型，1）text：文本输入框；2）file：文件上传；3）select：下拉框\n        \"value\": \"\",  # 字段的默认值\n        \"multiple\": True,  # type=select时，通过此字段指定下拉框是否可多选\n        \"label\": \"请选择接下来要进行的操作\",  # 字段的前端展示名称\n        \"options\": [  # 如果 type=select，则在这里列出可选值的 id、text 等信息\n          {\n            \"id\": \"0b8a2fe9\",\n            \"text\": \"操作1\",\n            \"type\": \"\"\n          },\n          {\n            \"id\": \"eb5f4ade\",\n            \"text\": \"操作2\",\n            \"type\": \"\"\n          }\n        ],  \n        \"required\": True  # 是否必填\n      }\n    ]\n  },\n  \"output_schema\": {# 需要在用户会话界面展示的数据\n    \"message\": \"输出内容\",  # 直接展示给用户的文本输出内容。\n    \"reasoning_content\"：\"思考过程内容\" # R1 等推理模型的思考过程内容\n    \"output_key\": \"output\",  # 输出内容对应的变量标识\n    \"files\": [  # 文件文件列表，每个文件包含 path 和 name 信息。前端可据此展示文件列表，允许用户下载或者预览。\n      {\n        \"path\": \"http://minio:9000/xxx.png?aa=xxx\",\n        \"name\": \"测试图片.png\"\n      }\n    ],\n    \"source_url\": \"\",  # 知识库问答溯源页面地址，需要自己拼接毕昇的前端地址。具体是否支持溯源请参考产品文档\n    \"extra\": \"{\\\"qa\\\": \\\"本答案来源于已有问答库: QA 知识库\\\", \\\"url\\\": null}\"  # QA知识库溯源内容\n  },\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n\n\n                    <Popover>\n                        <PopoverTrigger asChild>\n                            <Button className=\"fixed top-20 right-10 z-10 size-11 rounded-full\">导航</Button>\n                        </PopoverTrigger>\n                        <PopoverContent className=\"p-4 shadow-lg flex flex-col gap-2\">\n                            <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#000] mr-2'></span><a href=\"#guide-t1\">接口基本信息</a></Badge>\n                            <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#000] mr-2'></span><a href=\"#guide-t2\">整体调用流程</a></Badge>\n                            <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#000] mr-2'></span><a href=\"#guide-t3\">返回事件类型与处理方式</a></Badge>\n                            <div className='pl-4 flex flex-col gap-2'>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#FFD89A] mr-2'></span><a href=\"#guide-2\">引导问题事件</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-primary mr-2'></span><a href=\"#guide-3\">等待输入事件-对话框形式</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-primary mr-2'></span><a href=\"#guide-5\">等待输入事件-表单形式</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#BBDBFF] mr-2'></span><a href=\"#guide-6\">输出事件</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#BBDBFF] mr-2'></span><a href=\"#guide-7\">输出事件-需输入类型</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#BBDBFF] mr-2'></span><a href=\"#guide-8\">输出事件-选择类型</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#FFD89A] mr-2'></span><a href=\"#guide-9\">流式输出事件-输出中</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-[#FFD89A] mr-2'></span><a href=\"#guide-10\">流式输出事件-结束</a></Badge>\n                                <Badge variant='gray' className='p-2'><span className='size-2 rounded-full bg-red-400 mr-2'></span><a href=\"#guide-11\">结束事件</a></Badge>\n                            </div>\n                        </PopoverContent>\n                    </Popover>\n                    <h3 className='mt-8' id=\"guide-1\">开场白事件</h3>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top relative'>\n                                    {brand && <div className='absolute w-40 top-4 left-4 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                    <div className='max-w-[300px]'><img src={__APP_ENV__.BASE_URL + '/assets/api/chat1.png'} className='size-full min-w-72' alt=\"\" /></div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"event\": \"guide_word\",  # 开场白事件\n  \"node_id\": \"start_xxx\",  # 节点ID，\n  \"node_execution_id\": \"xxxxxxxx\",  # 执行此节点的唯一标识\n  \"output_schema\": {  # output\n    \"message\": \"本工作流可以解决xxxx等问题\"\n  }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <p className='bisheng-label mt-2'>处理逻辑：将 output_schema.message 展示给用户即可。</p>\n\n                    <h3 className='mt-8' id=\"guide-2\">引导问题事件</h3>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top relative'>\n                                    {brand && <div className='absolute w-40 top-4 left-4 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                    <div className='max-w-[300px]'><img src={__APP_ENV__.BASE_URL + '/assets/api/chat2.png'} className='size-full min-w-72' alt=\"\" /></div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"event\": \"guide_question\",\n  \"node_id\": \"start_xxx\",\n  \"node_execution_id\": \"xxxxxxxx\",\n  \"output_schema\": {\n    \"message\": [\n      \"引导问题1\",\n      \"引导问题2\"\n    ]\n  }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <p className='bisheng-label mt-2'>处理逻辑：向用户展示引导问题列表，将用户选中的问题作为输入，继续调用工作流接口。</p>\n\n\n                    <h3 className='mt-8' id=\"guide-3\">等待输入事件-对话框形式</h3>\n                    <div className='border border-red-200 rounded-sm bg-orange-100 p-4 text-sm'>\n                        <p className='bisheng-label'>当工作流返回 <span className=\"bg-orange-50\">event=\"input\"</span> 且 <span className=\"bg-orange-50\">input_type=\"dialog_input\"</span>时，表示后端希望前端在对话框中接收用户输入以及上传文件（非必须）。</p>\n                        <p className='bisheng-label mt-2'>下一次请求 <span className=\"bg-orange-50\">/invoke</span> 接口必带的关键字段是 <span className=\"bg-orange-50\">node_id</span>,<span className=\"bg-orange-50\">message_id</span>,<span className=\"bg-orange-50\">session_id</span> 以及对话框输入。</p>\n                    </div>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top relative'>\n                                    {brand && <div className='absolute w-40 top-4 left-4 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                    <div className='max-w-[300px]'><img src={__APP_ENV__.BASE_URL + '/assets/api/output.png'} className='size-full min-w-72' alt=\"\" /></div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n    \"event\": \"input\",# 等待输入事件\n    \"node_id\": \"input_xxxx\",\n    \"node_execution_id\": \"xxxxx\",\n    \"input_schema\": {\n        \"input_type\": \"dialog_input\",# 对话框形式\n        \"value\": [\n            {\n                \"key\": \"user_input\",\n                \"type\": \"text\"\n            },\n            {\n                \"key\": \"dialog_files_content\", # 需要用户上传文件\n                \"type\": \"dialog_file\"\n            },\n            {\n                \"key\": \"dialog_file_accept\",  # 上传文件的格式限制\n                \"type\": \"dialog_file_accept\",\n                \"value\": \"all\"  # 允许的文件类型\n            }\n        ]\n    }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑：</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>绘制对话框，接收用户输入内容</li>\n                            <li className='mt-2 leading-6'>携带 <code className=\"bg-gray-200 p-1 rounded\">node_id</code>、<code className=\"bg-gray-200 p-1 rounded\">session_id</code>、<code className=\"bg-gray-200 p-1 rounded\">message_id</code> 再次请求 /workflow/invoke</li>\n                            <li className='mt-2 leading-6'>如果用户没有在对话框内上传文件，请求示例如下</li>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`payload = json.dumps({\n    \"workflow_id\": \"c90bb7f2-b7d1-49bf-9fb6-3ab60ff8e414\",\n    \"session_id\": \"d4347ab8e8cd48c48ac9920dbb5a9b35_async_task_id\",  # 上次返回的 session_id\n    \"message_id\": \"385140\",\n    \"input\": {\n        \"input_2775b\": {  # 这里对应返回事件里的 node_id\n            # input_schema.value中元素的 key 以及对应要传入的值\n            \"user_input\": \"你好\"\n        }\n    }\n})`}\n                    </SyntaxHighlighter>\n\n                    <div className=\"mb-6\">\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>如果用户在对话框内上传了文件</li>\n                            <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                                <li className='mt-2 leading-6'>如果有文件类型，调用毕昇文件上传接口获取到文件url，示例如下：</li>\n                            </ul>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`import requests\ndef upload_file(local_path: str):\n    server = \"http://ip:port\"\n    url = server + '/api/v1/knowledge/upload'\n    headers = {}\n    files = {'file': open(local_path, 'rb')}\n    res = requests.post(url, headers=headers, files=files)\n    file_path = res.json()['data'].get('file_path', '')\n    return file_path\n    \n financeA = upload_file(\"caibao.pdf\")\n financeB = upload_file(\"caibao2.pdf\")`}\n                    </SyntaxHighlighter>\n\n                    <div className=\"mb-6\">\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                                <li className='mt-2 leading-6'>成功获取用户的输入和上传文件的url后，拼接为如下格式的接口入参</li>\n                            </ul>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`payload = json.dumps({\n    \"workflow_id\": \"c90bb7f2-b7d1-49bf-9fb6-3ab60ff8e414\",\n    \"session_id\": \"d4347ab8e8cd48c48ac9920dbb5a9b35_async_task_id\",  # 上次返回的 session_id\n    \"message_id\": \"385140\",\n    \"input\": {\n        \"input_2775b\": {  # 这里对应返回事件里的 node_id\n            # input_schema.value中元素的 key 以及对应要传入的值\n            \"user_input\": \"你好\",\n            # 上传文件后获取到的文件url列表\n            \"dialog_files_content\": [\"minio://127.0.0.1:9000/xxxx\"]\n        }\n    }\n})\n`}\n                    </SyntaxHighlighter>\n\n\n                    <h3 className='mt-8' id=\"guide-5\">等待输入事件-表单形式</h3>\n                    <div className='border border-red-200 rounded-sm bg-orange-100 p-4 text-sm'>\n                        <p className='bisheng-label'>当工作流返回 <span className=\"bg-orange-50\">event=\"input\"</span> 且 <span className=\"bg-orange-50\">input_type=\"form_input\"</span>时，后端希望前端渲染一个表单，让用户填写内容。</p>\n                        <p className='bisheng-label mt-2'>下一次请求 <span className=\"bg-orange-50\">/invoke</span> 接口必带的字段是 <span className=\"bg-orange-50\">node_id</span>, <span className=\"bg-orange-50\">message_id</span>, <span className=\"bg-orange-50\">session_id</span> 以及用户填写的表单值。</p>\n                    </div>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top relative'>\n                                    {brand && <div className='absolute w-40 top-4 left-4 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                    <div className='max-w-[300px]'><img src={__APP_ENV__.BASE_URL + '/assets/api/chat4.png'} className='size-full min-w-72' alt=\"\" /></div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n    \"event\": \"input\",\n    \"node_id\": \"input_xxxx\",\n    \"node_execution_id\": \"xxxxx\",\n    \"input_schema\": {\n        \"input_type\": \"form_input\",\n        \"value\": [\n            {\n                \"key\": \"text_input\",\n                \"type\": \"text\",\n                \"value\": \"文本输入类型\",\n                \"label\": \"文本输入类型\",\n                \"options\": [],\n                \"required\": true\n            },\n            {\n                \"key\": \"file_qu798wan\",\n                \"type\": \"file\",\n                \"value\": \"\",\n                \"label\": \"文件类型的输入\",\n                \"options\": [],\n                \"required\": true\n            },\n            {\n                \"key\": \"category\",\n                \"type\": \"select\",\n                \"value\": \"\",\n                \"label\": \"下拉框类型\",\n                \"required\": true,\n                \"multiple\": false,\n                \"options\": [\n                    {\n                        \"id\": \"0b8a2fe9\",\n                        \"text\": \"选项1\",\n                        \"type\": \"\"\n                    },\n                    {\n                        \"id\": \"eb5f4ade\",\n                        \"text\": \"选项2\",\n                        \"type\": \"\"\n                    }\n                ]\n            }\n        ]\n    }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑：</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>解析<code className=\"bg-gray-200 p-1 rounded\">input_schema.value</code> 中的表单元素，在前端渲染表单样式</li>\n                            <li className='mt-2 leading-6'>如果有文件类型，调用毕昇文件上传接口获取到文件url，示例如下：</li>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`import requests\ndef upload_file(local_path: str):\n    server = \"http://ip:port\"\n    url = server + '/api/v1/knowledge/upload'\n    headers = {}\n    files = {'file': open(local_path, 'rb')}\n    res = requests.post(url, headers=headers, files=files)\n    file_path = res.json()['data'].get('file_path', '')\n    return file_path\n    \n financeA = upload_file(\"caibao.pdf\")\n financeB = upload_file(\"caibao2.pdf\")`}\n                    </SyntaxHighlighter>\n                    <p className='mt-4 bisheng-label'>3. 提交时，JSON 中要和返回的 <code className=\"bg-gray-200 p-1 rounded\">key</code> 对应，并带上 <code className=\"bg-gray-200 p-1 rounded\">session_id</code>、<code className=\"bg-gray-200 p-1 rounded\">message_id</code>、<code className=\"bg-gray-200 p-1 rounded\">node_id</code> 等必备信息。</p>\n                    <SyntaxHighlighter\n                        className=\"w-full max-w-[80vw] overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n    \"workflow_id\": \"xxxxx\",\n    \"session_id\": \"使用接口返回的session_id\",\n    \"message_id\": \"xxxxx\",\n    \"input\": {\n        \"input_xxx\": {  # 事件里的 node_id\n            # key是input_schema.value中元素的 key 以及对应要传入的值\n            \"text_input\": \"用户输入的内容\",\n            \"file\": [\"minio://127.0.0.1:9000/xxxx\"] # 用户上传文件获取到的文件url, 允许多选就是多个url\n            \"category\": \"选项2\" # 将选项内容赋值给变量。当允许多选时，多个选项内容通过逗号分隔。\n        }\n    }\n}`}\n                    </SyntaxHighlighter>\n\n\n\n                    <h3 className='mt-8' id=\"guide-6\">输出事件</h3>\n                    <p className=\"bisheng-label py-2\">事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <div className='max-w-[300px] relative'>\n                                        {brand && <div className='absolute w-40 top-1 left-2 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                        <img src={__APP_ENV__.BASE_URL + '/assets/api/chat5.png'} className='size-full min-w-72' alt=\"\" />\n                                        {!brand && <img src={__APP_ENV__.BASE_URL + '/assets/api/chat6.png'} className='size-full' alt=\"\" />}\n                                    </div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"event\": \"output_msg\",\n  \"node_id\": \"output_xxx\",\n  \"node_execution_id\": \"xxxxxxxxx\",\n  \"output_schema\": {\n    \"message\": \"输出内容\",\n    \"output_key\": \"output\",\n    \"files\": [\n      {\n        \"path\": \"http://minio:9000/xxx.png?aa=xxx\",\n        \"name\": \"测试图片.png\"\n      }\n    ],\n    \"source_url\": \"\"\n  }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑：</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>将 <code className=\"bg-gray-200 p-1 rounded\">output_schema.message</code> 展示给用户</li>\n                            <li className='mt-2 leading-6'>如果 <code className=\"bg-gray-200 p-1 rounded\">files</code> 不为空，则提供文件下载按钮或预览功能</li>\n                            <li className='mt-2 leading-6'><code className=\"bg-gray-200 p-1 rounded\">source_url</code> 基于毕昇服务根路径，需要拼接毕昇访问地址才可访问</li>\n                        </ul>\n                    </div>\n\n\n                    <h3 className='mt-8' id=\"guide-7\">输出事件-需输入类型</h3>\n                    <div className='border border-red-200 rounded-sm bg-orange-100 p-4 text-sm'>\n                        <p className='bisheng-label'>此时工作流处于待输入状态</p>\n                    </div>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <div className='max-w-[300px] relative'>\n                                        {brand && <div className='absolute w-40 top-1 left-2 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                        <img src={__APP_ENV__.BASE_URL + '/assets/api/chat6.png'} className='size-full' alt=\"\" />\n                                    </div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n    \"event\": \"output_with_input_msg\",\n    \"node_id\": \"output_ 123\",\n    \"node_execution_id\": \"xxxxxxxxx\",\n    \"message_id\": \"xxxxx\",\n    \"output_schema\": {\n        \"message\": \"输出内容\",\n        \"output_key\": \"output\",\n        \"files\": [\n            {\n                \"path\": \"http://minio:9000/xxx.png?aa=xxx\",\n                \"name\": \"测试图片.png\"\n            }\n        ],\n        \"source_url\": \"\"\n    },\n    \"input_schema\": {\n        \"input_type\": \"message_inline_input\",\n        \"value\": [\n            {\n                \"key\": \"output_result\",\n                \"type\": \"text\",\n                \"value\": \"以下是AI生成的的草稿：XXXX\"\n            }\n        ]\n    }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑：</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>展示 <code className=\"bg-gray-200 p-1 rounded\">output_schema</code> 内容</li>\n                            <li className='mt-2 leading-6'>根据 <code className=\"bg-gray-200 p-1 rounded\">input_schema</code> 在消息体中绘制输入框，<code className=\"bg-gray-200 p-1 rounded\">input_schema.value.value</code> 为输入框内的默认值，用户可在其基础上二次编辑</li>\n                            <li className='mt-2 leading-6'>用户编辑或确认后，再次调用 API 提交。示例如下：</li>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n    \"workflow_id\": \"xxxxx\",\n    \"session_id\": \"使用接口返回的session_id\",\n    \"message_id\": \"消息的唯一ID\",\n    \"input\": {\n        \"output_123\": {  # 事件里的节点ID\n            # key是input_schema.value中元素的key\n            \"output_result\": \"用户输入的内容\"\n        }\n    }\n}`}\n                    </SyntaxHighlighter>\n\n\n\n\n                    <h3 className='mt-8' id=\"guide-8\">输出事件-选择类型</h3>\n                    <div className='border border-red-200 rounded-sm bg-orange-100 p-4 text-sm'>\n                        <p className='bisheng-label'>此时工作流处于待输入状态</p>\n                    </div>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[300px]'>样式预览</TableHead>\n                                <TableHead className=''>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <div className='max-w-[300px] relative'>\n                                        {brand && <div className='absolute w-40 top-1 left-2 z-10 bg-[#EFF1F5] text-gray-400 text-xs'>{brand}</div>}\n                                        <img src={__APP_ENV__.BASE_URL + '/assets/api/chat7.png'} className='size-full min-w-72' alt=\"\" />\n                                    </div>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n    \"event\": \"output_with_choose_msg\",\n    \"node_id\": \"output_xxx\",\n    \"node_execution_id\": \"xxxxxxxxx\",\n    \"message_id\": \"xxxxx\",\n    \"output_schema\": {\n        \"message\": \"输出内容\",\n        \"output_key\": \"output\",\n        \"files\": [\n            {\n                \"path\": \"http://minio:9000/xxx.png?aa=xxx\",\n                \"name\": \"测试图片.png\"\n            }\n        ],\n        \"source_url\": \"\"\n    },\n    \"input_schema\": {\n        \"input_type\": \"message_inline_option\",\n        \"value\": [\n            {\n                \"key\": \"output_result\",\n                \"type\": \"select\",\n                \"value\": \"\",\n                \"options\": [\n                    {\n                        \"id\": \"e2107f75\",\n                        \"label\": \"选项1\",\n                        \"value\": \"\"\n                    },\n                    {\n                        \"id\": \"790c36f9\",\n                        \"label\": \"选项2\",\n                        \"value\": \"\"\n                    }\n                ]\n            }\n        ]\n    }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑：</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>展示 <code className=\"bg-gray-200 p-1 rounded\">output_schema</code> 内容</li>\n                            <li className='mt-2 leading-6'>根据 <code className=\"bg-gray-200 p-1 rounded\">input_schema</code> 在消息体中绘制选项</li>\n                            <li className='mt-2 leading-6'>接收到用户选择动作后，拼接接口的入参，再次调用 API，示例如下：</li>\n                        </ul>\n                    </div>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n    \"workflow_id\": \"xxxxx\",\n    \"session_id\": \"使用接口返回的session_id\",\n    \"message_id\": \"xxxxxx\",\n    \"input\": {\n        \"output_xxx\": {  # 事件里的节点ID\n            # key是input_schema.value中元素的key\n            \"output_result\": \"e2107f75\"  # 用户选择选项对应的id\n        }\n    }\n}`}\n                    </SyntaxHighlighter>\n\n\n\n\n                    <h3 className='mt-8' id='guide-9'>流式输出事件-输出中</h3>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n  \"event\": \"stream_msg\",\n  \"node_id\": \"llm_xxx\",\n  \"node_execution_id\": \"xxxxxx\",\n  \"status\": \"stream\",\n  \"output_schema\": {\n    \"message\": \"你\",\n    \"reasoning_content\": \"\",  # 深度思考的内容，message内容不为空代表深度思考结束\n    \"output_key\": \"output_1\" # output_1 是节点中的输出变量名\n  }\n}`}\n                    </SyntaxHighlighter>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">调用方处理示例</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'><code className=\"bg-gray-200 p-1 rounded\">status=\"stream\"</code> 代表当处于流式输出中，需要根据 <code className=\"bg-gray-200 p-1 rounded\">node_execution_id</code> 和 <code className=\"bg-gray-200 p-1 rounded\">output_schema.output_key</code> 来确定流式内容是否属于同一条消息（节点批量运行模式下，会共用同一个 <code className=\"bg-gray-200 p-1 rounded\">node_execution_id</code>，所以需要根据 <code className=\"bg-gray-200 p-1 rounded\">output_key</code> 来区分是否是不同的消息）。</li>\n                            <li className='mt-2 leading-6'>如果找到对应的消息，则将 <code className=\"bg-gray-200 p-1 rounded\">message</code> 内容添加到对应的消息里。</li>\n                            <li className='mt-2 leading-6'>如果未找到对应的消息，则开启一条新的消息，并将 <code className=\"bg-gray-200 p-1 rounded\">message</code> 和后续此消息的 <code className=\"bg-gray-200 p-1 rounded\">message</code> 拼接在一起。</li>\n                        </ul>\n                    </div>\n\n\n                    <h3 className='mt-8' id=\"guide-10\">流式输出事件-结束</h3>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n  \"event\": \"stream_msg\",\n  \"node_id\": \"llm_xxx\",\n  \"node_execution_id\": \"xxxxxx\",\n  \"status\": \"end\",  # end表示流式事件结束了\n  \"output_schema\": {\n    \"message\": \"你好，这是流式完成后最终的答案\",\n    \"reasoning_content\": \"\",  # 深度思考的内容，message内容不为空代表深度思考结束\n    \"output_key\": \"output_1\",\n    \"source_url\": \"\" # 是否支持溯源请参考产品文档\n  }\n}`}\n                    </SyntaxHighlighter>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>1. <code className=\"bg-gray-200 p-1 rounded\">status=\"end\"</code>代表流式输出完成，此时根据 node_execution_id 和 output_schema.output_key 找到对应的<code className=\"bg-gray-200 p-1 rounded\">message</code></li>\n                            <li className='mt-2 leading-6'>2. 使用 <code className=\"bg-gray-200 p-1 rounded\">message</code> 内容覆盖之前流式输出的结果，显示最终完整答案</li>\n                        </ul>\n                    </div>\n\n\n\n                    <h3 className='mt-8' id=\"guide-11\">结束事件</h3>\n                    <div className='border border-red-200 rounded-sm bg-orange-100 p-4 text-sm'>\n                        <p className='bisheng-label'>当接收到 <span className=\"bg-orange-50\">event=\"close\"</span> 时，代表工作流已运行结束</p>\n                    </div>\n                    <p className='bisheng-label mt-2'>事件数据示例</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'json'}\n                        style={oneDark}\n                    >\n                        {`{\n  \"event\": \"close\",\n  \"unique_id\": \"xxxxxx\",\n  \"status\": \"end\",\n  \"output_schema\": {\n    \"message\": {\n        \"code\": \"500\",\n        \"message\": \"报错内容\"\n    }# 如果为空表示工作流正常结束；如果不为空则表示执行出错，内容就是错误信息\n  }\n}`}\n                    </SyntaxHighlighter>\n                    <div className=\"mb-6\">\n                        <p className=\"bisheng-label py-2\">处理逻辑</p>\n                        <ul className=\"list-disc list-inside pl-4 mt-2 bisheng-label pb-2\">\n                            <li className='mt-2 leading-6'>判断message是否为空，为空则告知用户工作流运行结束</li>\n                            <li className='mt-2 leading-6'>如果message不为空，则告知用户工作流运行失败，并把报错信息抛出给用户或者自行处理</li>\n                        </ul>\n                    </div>\n\n\n\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[100%]'>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`500: 服务端异常，查看后端日志解决\n10527: 工作流等待用户输入超时\n10528: 节点执行超过最大次数\n10531: <节点名称>功能已升级，需删除后重新拖入。\n10532: 工作流版本已升级，请联系创建者重新编排\n10540: 服务器线程数已满，请稍候再试`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card >\n\n\n        </section >\n\n    );\n};\n\nexport default ApiAccessFlow;\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/apiComponent/ApiAccessSkill.tsx",
    "content": "import { Badge } from '@/components/bs-ui/badge';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/bs-ui/card';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/bs-ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/bs-ui/tabs';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { getCurlCode, getPythonApiCode } from '@/constants';\nimport { TabsContext } from '@/contexts/tabsContext';\nimport { copyText } from '@/utils';\nimport { Check, Clipboard } from 'lucide-react';\nimport { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\nimport { JsonItem } from './ApiAccess';\n\n\nconst ApiAccessSkill = ({ }) => {\n    const { t } = useTranslation()\n    const { flow, getTweak, tabsState } = useContext(TabsContext);\n    const curl_code = getCurlCode(flow, getTweak, tabsState);\n    const pythonCode = getPythonApiCode(flow, getTweak, tabsState);\n\n    const { message } = useToast()\n    const handleCopyLink = (e) => {\n        copyText(e.target).then(() => {\n            message({ variant: 'success', description: t('api.copySuccess') })\n        })\n    }\n\n    const [isCopied, setIsCopied] = useState<Boolean>(false);\n    const copyToClipboard = (code: string) => {\n        setIsCopied(true);\n        copyText(code).then(() => {\n            setTimeout(() => {\n                setIsCopied(false);\n            }, 2000);\n        })\n    }\n\n    return (\n        <section className='max-w-[1600px] flex-grow'>\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle>{t('api.apiRequestExample')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <h3 className=\"mb-2 bg-secondary px-4 py-2 inline-flex items-center rounded-md gap-1\">\n                        <Badge>POST</Badge> <span className='hover:underline cursor-pointer' onClick={handleCopyLink}>/api/v1/process/{flow.id}</span>\n                    </h3>\n                    <p className='my-2'>{t('api.exampleCode')}：</p>\n                    <Tabs defaultValue=\"curl\" className=\"w-full mb-[40px]\">\n                        <TabsList className=\"\">\n                            <TabsTrigger value=\"curl\" className=\"\">cURL</TabsTrigger>\n                            <TabsTrigger value=\"python\">Python API</TabsTrigger>\n                        </TabsList>\n\n                        <TabsContent value=\"curl\" className='relative'>\n                            <button\n                                className=\"absolute right-0 flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                                onClick={() => copyToClipboard(curl_code)}\n                            >\n                                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n                            </button>\n                            <SyntaxHighlighter\n                                className=\"w-full overflow-auto custom-scroll\"\n                                language={'bash'}\n                                style={oneDark}\n                            >\n                                {curl_code}\n                            </SyntaxHighlighter>\n                        </TabsContent>\n                        <TabsContent value=\"python\" className='relative'>\n                            <button\n                                className=\"absolute right-0 flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                                onClick={() => copyToClipboard(pythonCode)}\n                            >\n                                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n                            </button>\n                            <SyntaxHighlighter\n                                className=\"w-full overflow-auto custom-scroll\"\n                                language={'python'}\n                                style={oneDark}\n                            >\n                                {pythonCode}\n                            </SyntaxHighlighter>\n                        </TabsContent>\n                    </Tabs>\n                </CardContent>\n            </Card>\n\n            <Card className=\"mb-8\">\n                <CardHeader>\n                    <CardTitle>{t('api.requestParams')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[60%]'>\n                                    {t('api.bodyParams')} <span className='bg-secondary px-2 py-1 rounded-md text-sm'>application/json</span>\n                                </TableHead>\n                                <TableHead>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <JsonItem name=\"flow_id\" required type=\"UUID\" desc={t('api.skillId')} remark={t('api.urlParam')}></JsonItem>\n                                    <JsonItem name=\"inputs\" required type=\"Json\" desc={t('api.skillInput')} example='{\"query\":\"什么是金融\"}' remark={t('api.singleInput')} ></JsonItem>\n                                    <JsonItem name=\"history_count\" type=\"int\" desc={t('api.historyCount')}></JsonItem>\n                                    <JsonItem name=\"clear_cache\" type=\"boolean\" desc={t('api.clearCache')}></JsonItem>\n                                    <JsonItem name=\"session_id\" type=\"str\" desc={t('api.sessionId')} remark={t('api.sessionRemark')}></JsonItem>\n                                    <JsonItem name=\"tweaks\" required type=\"Json\" desc={t('api.tweaks')} remark={t('api.tweaksRemark')}>\n                                        <JsonItem line name=\"ChatOpenAI-MzIaC\" type=\"Json\" desc={t('api.exampleComponent')} example='{\"openai_api_key\": \"sk-xxx\"} 或者 {}' remark={t('api.defaultConfig')} ></JsonItem>\n                                        <JsonItem line name=\"...\" type=\"Json\" desc={t('api.componentParams')}></JsonItem>\n                                    </JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\" w-full overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"inputs\": {\n    \"query\": \"总结下文档内容\"\n  },\n  \"tweaks\": {\n    \"Milvus-f74d8\": {\n      \"collection_id\": \"10\"\n    },\n    \"ChatOpenAI-7f49c\": {},\n    \"ElasticKeywordsSearch-0d2c8\": {},\n    \"BishengRetrievalQA-7e0ae\": {}\n  },\n  \"history_count\": 10,\n  \"clear_cache\": false\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card>\n\n            <Card>\n                <CardHeader>\n                    <CardTitle>{t('api.responseData')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className='w-[60%]'>{t('api.dataStructure')}</TableHead>\n                                <TableHead className='w-[40%]'>{t('api.example')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            <TableRow>\n                                <TableCell className='align-top'>\n                                    <JsonItem name=\"data\" type=\"object\" desc={t('api.returnContent')}>\n                                        <JsonItem line name=\"session_id\" type=\"string\" desc={t('api.sessionIdReturn')}></JsonItem>\n                                        <JsonItem line name=\"result\" type=\"object\" desc={t('api.skillResult')}>\n                                            <JsonItem line name=\"answer\" type=\"string\" desc={t('api.llmAnswer')}></JsonItem>\n                                            <JsonItem line name=\"message_id\" type=\"int\" desc={t('api.messageId')}></JsonItem>\n                                            <JsonItem line name=\"source\" type=\"int\" desc={t('api.source')}></JsonItem>\n                                            <JsonItem line name=\"{key}\" type=\"string\" desc={t('api.dynamicKey')}></JsonItem>\n                                        </JsonItem>\n                                    </JsonItem>\n                                </TableCell>\n                                <TableCell className='align-top'>\n                                    <SyntaxHighlighter\n                                        className=\"w-full max-w-[40vw] overflow-auto custom-scroll\"\n                                        language={'json'}\n                                        style={oneDark}\n                                    >\n                                        {`{\n  \"status_code\": 200,\n  \"status_message\": \"SUCCESS\",\n  \"data\": {\n    \"result\": {\n      \"result\": \"文档内容是关于电力集团关键信息基础设施网络安全保护的标准起草。文档以“基于管理防护要求”为主题，参考知识库内容，根据模版撰写相应内容。这份文档的撰写要求是不少于500字，不允许使用markdown格式，每行需要缩进两格。\",\n      \"doc\": [\n        {\n          \"title\": \"关基网络安全保护工作指南.docx\",\n          \"url\": \"www.baidu.com\"\n        }\n      ],\n      \"source\": 3,\n      \"message_id\": 1322,\n      \"answer\": \"文档内容是关于电力集团关键信息基础设施网络安全保护的标准起草。文档以“基于管理防护要求”为主题，参考知识库内容，根据模版撰写相应内容。\"\n    },\n    \"session_id\": \"AUU629:059865218b3e895f103dbcad4d1b60ee40157191800f3aa8adaa12488f2cf82b\",\n    \"backend\": \"anyio\"\n  }\n}`}\n                                    </SyntaxHighlighter>\n                                </TableCell>\n                            </TableRow>\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card>\n\n            <Card className='mt-8'>\n                <CardHeader>\n                    <CardTitle>{t('api.useCase')}</CardTitle>\n                </CardHeader>\n                <CardContent>\n                    <h3 className=\"text-lg font-medium mb-2\">{t('api.knowledgeQADemo')}</h3>\n                    <SyntaxHighlighter\n                        className=\" w-full overflow-auto custom-scroll\"\n                        language={'python'}\n                        style={oneDark}\n                    >\n                        {`import requests\nfrom typing import Optional\nBASE_API_URL = \"http://{IP}:{port}/api/v1/process\"\nFLOW_ID = \"your flow_id\"\n# You can tweak the flow by adding a tweaks dictionary\n# e.g {\"OpenAI-XXXXX\": {\"model_name\": \"gpt-4\"}}\nTWEAKS = {\n  \"ConversationChain-A1J5d\": {},\n  \"ProxyChatLLM-NloT5\": {}\n}\ndef run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None) -> dict:\n    api_url = f\"{BASE_API_URL}/{flow_id}\"\n    payload = {\"inputs\": inputs}\n    if tweaks:\n        payload[\"tweaks\"] = tweaks\n    response = requests.post(api_url, json=payload)\n    return response.json()\ninputs = {\"input\":\"什么是金融\"}\nprint(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS))`}\n                    </SyntaxHighlighter>\n\n                    <p className=\"text-md text-gray-500 mb-2\">{t('api.specifyKnowledgeBase')}</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'python'}\n                        style={oneDark}\n                    >\n                        {`TWEAKS = {\n  \"ConversationChain-A1J5d\": {},\n   \"Milvus-T3kRH\": {\"collection_id\": \"your collection_id\"},\n  \"ProxyChatLLM-NloT5\": {}\n}`}\n                    </SyntaxHighlighter>\n\n                    <h3 className=\"text-lg font-medium mb-2 mt-12\">{t('api.reportGenerationDemo')}</h3>\n                    <p className=\"text-md mb-2\">{t('api.step1')}</p>\n                    <p className=\"text-md text-gray-500 mb-2\">\n                        {t('api.dependenciesDescription')}\n                    </p>\n                    <p className=\"text-md mb-2\">{t('api.step2')}</p>\n                    <p className=\"text-md text-gray-500 mb-2\">{t('api.uploadFiles')}</p>\n                    <SyntaxHighlighter\n                        className=\" w-full overflow-auto custom-scroll\"\n                        language={'python'}\n                        style={oneDark}\n                    >\n                        {`import requests\ndef upload_file(local_path: str):\n    server = \"http://ip:port\"\n    url = server + '/api/v1/knowledge/upload'\n    headers = {}\n    files = {'file': open(local_path, 'rb')}\n    res = requests.post(url, headers=headers, files=files)\n    file_path = res.json()['data'].get('file_path', '')\n    return file_path\n    \n financeA = upload_file(\"caibao.pdf\")\n financeB = upload_file(\"caibao2.pdf\")`}\n                    </SyntaxHighlighter>\n\n                    <p className=\"text-md mb-2\">{t('api.step3')}</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'python'}\n                        style={oneDark}\n                    >\n                        {`tweaks = {\n  \"InputFileNode-ozsI2\": {\"file_path\": financeA},\n  \"InputFileNode-16U46\": {\"file_path\": financeB},\n  \"Milvus-6HDPE\": {\"collection_name\": \"tmp\", \"drop_old\": True} \n}`}\n                    </SyntaxHighlighter>\n\n                    <p className=\"text-md mb-2\">{t('api.step4')}</p>\n                    <SyntaxHighlighter\n                        className=\"w-full overflow-auto custom-scroll\"\n                        language={'bash'}\n                        style={oneDark}\n                    >\n                        {`response = requests.post(url=\"http://192.168.106.120:3002/api/v1/process/940a528f-eccc-4d43-aa19-55c4725645cf\",\n    json={\"inputs\": {\"report_name\":\"\",\"id\":\"Report-tuc6Q\"}, \"tweaks\": tweaks})\n\nprint(response.text)`}\n                    </SyntaxHighlighter>\n                </CardContent>\n            </Card>\n        </section>\n\n    );\n};\n\nexport default ApiAccessSkill;\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/apiComponent/ChatLink.tsx",
    "content": "import { Alert, AlertDescription } from '@/components/bs-ui/alert';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/bs-ui/card';\nimport Skeleton from '@/components/bs-ui/skeleton';\nimport { copyText } from '@/utils';\nimport { Check, CircleX, Clipboard, Info } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\n\nconst BorwserSkeleton = ({ size = '' }) => {\n  return <div className=\"p-4 rounded-lg max-w-lg mx-auto\">\n    {/* 浏览器窗口的骨架 */}\n    <div className=\"border border-border rounded-lg overflow-hidden\">\n      {/* 浏览器顶部导航栏骨架 */}\n      <div className=\"p-2 bg-accent flex items-center justify-between\">\n        <div className=\"flex items-center space-x-2\">\n          <Skeleton className=\"h-4 w-4 rounded-full\" /> {/* 浏览器左上角圆形图标 */}\n          <Skeleton className=\"h-4 w-4 rounded-full\" />\n          <Skeleton className=\"h-4 w-4 rounded-full\" />\n        </div>\n        <Skeleton className=\"h-4 w-1/2 rounded\" /> {/* 浏览器地址栏骨架 */}\n        <Skeleton className=\"h-4 w-4 rounded\" /> {/* 浏览器右上角按钮 */}\n      </div>\n\n      {/* 聊天窗口的骨架 */}\n      {\n        size ? <div className=\"p-4 bg-white flex justify-end items-end\">\n          <div className=\"border w-[200px] rounded-lg p-4 space-y-4\">\n            <Skeleton className=\"h-4 w-3/4 rounded\" /> {/* 聊天标题 */}\n            <Skeleton className=\"h-44 w-full rounded\" /> {/* 聊天内容区域 */}\n            <div className=\"flex items-center\">\n              <Skeleton className=\"h-6 w-full rounded\" /> {/* 输入框骨架 */}\n              <Skeleton className=\"h-6 w-16 ml-2 rounded\" /> {/* 发送按钮骨架 */}\n            </div>\n          </div>\n          <CircleX className='h-6 w-6 text-foreground' />\n        </div>\n          : <div className=\"p-4 bg-white\">\n            <div className=\"border border-border rounded-lg p-4 space-y-4\">\n              <Skeleton className=\"h-6 w-3/4 rounded\" /> {/* 聊天标题 */}\n              <Skeleton className=\"h-40 w-full rounded\" /> {/* 聊天内容区域 */}\n              <div className=\"flex items-center\">\n                <Skeleton className=\"h-8 w-full rounded\" /> {/* 输入框骨架 */}\n                <Skeleton className=\"h-8 w-16 ml-2 rounded\" /> {/* 发送按钮骨架 */}\n              </div>\n            </div>\n          </div>\n      }\n    </div>\n  </div>\n}\n\nconst enum API_TYPE {\n  ASSISTANT = 'assistant',\n  SKILL = 'skill',\n  FLOW = 'flow'\n}\n\nconst NoLoginLink = ({ type, noLogin = false }) => {\n  const [isCopied, setIsCopied] = useState<Boolean>(false);\n  const { t } = useTranslation()\n  const { id } = useParams()\n\n  const copyToClipboard = (code: string) => {\n    setIsCopied(true);\n    copyText(code).then(() => {\n      setTimeout(() => {\n        setIsCopied(false);\n      }, 2000);\n    })\n  }\n\n  const [embed, setEmbed] = useState(false)\n  const url = useMemo(() => {\n    const loginUrl = `${location.origin}${__APP_ENV__.BASE_URL}/chat/${type}/auth/${id}`\n    const noLoginUrl = `${location.origin}${__APP_ENV__.BASE_URL}/chat/${type === API_TYPE.SKILL ? '' : type+'/'}${id}`\n    return noLogin ? noLoginUrl : loginUrl;\n  }, [type, noLogin])\n\n  const embedCode = useMemo(() => {\n    if (embed) return `<script\n  src=\"${location.origin}/iframe.js\"\n  id=\"chatbot-iframe-script\"\n  data-bot-src=\"${url}\"\n  data-drag=\"true\"\n  data-open-icon=\"${location.origin}/assets/user.png\"\n  data-close-icon=\"${location.origin}/logo-small-dark.png\"\n  defer\n></script>\n<script>console.log(\"chat ready\")</script>\n`\n\n    return `<iframe\n  src=\"${url}\"\n  style=\"width: 100%; height: 100%; min-height: 700px\"\n  frameborder=\"0\"\n  allow=\"fullscreen;clipboard-write\">\n</iframe>`\n  }, [embed, url])\n\n  return (\n    <section className='pb-20 max-w-[1600px]'>\n      <Alert className='mb-4'>\n        <Info className=\"h-4 w-4\" />\n        <AlertDescription className='mt-0.5'>\n          {noLogin\n            ? t('api.noLoginLinkDescription')\n            : t('api.loginLinkDescription')}\n        </AlertDescription>\n      </Alert>\n\n      <h3 className=\"text-lg font-bold mt-8 mb-2\">{t('api.publishAsStandalonePage')}</h3>\n      <Card className='mb-4'>\n        <CardHeader className='pt-2 pb-0'>\n          <CardTitle className='flex justify-between items-center'>\n            <p>{t('api.copyLinkToBrowser')}</p>\n            <div>\n              <button\n                className=\"flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                onClick={() => copyToClipboard(url)}\n              >\n                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n              </button>\n            </div>\n          </CardTitle>\n        </CardHeader>\n        <CardContent>\n          <SyntaxHighlighter\n            className=\"w-full overflow-auto custom-scroll\"\n            language={'javascript'}\n            style={oneDark}\n          >\n            {url}\n          </SyntaxHighlighter>\n        </CardContent>\n      </Card>\n\n      <h3 className=\"text-lg font-bold mt-8 mb-2\">{t('api.embedIntoWebsite')}</h3>\n      <div className='flex gap-2 mb-4'>\n        <Card className={`w-1/2 dark:bg-[#111] cursor-pointer border-2 ${embed ? '' : 'border-primary hover:border-primary dark:hover:border-primary'}`} onClick={() => setEmbed(false)}>\n          <CardHeader className='pt-2 pb-0'>\n            <CardTitle>{t('api.styleOne')}</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <BorwserSkeleton />\n          </CardContent>\n        </Card>\n        <Card className={`w-1/2 dark:bg-[#111] cursor-pointer border-2 ${embed ? 'border-primary hover:border-primary dark:hover:border-primary' : ''}`} onClick={() => setEmbed(true)}>\n          <CardHeader className='pt-2 pb-0'>\n            <CardTitle>{t('api.styleTwo')}</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <BorwserSkeleton size='small' />\n          </CardContent>\n        </Card>\n      </div>\n\n      <Card>\n        <CardHeader className='pt-2 pb-0'>\n          <CardTitle className='flex justify-between items-center'>\n            <p>{t('api.embedCodeDescription')}</p>\n            <div>\n              <button\n                className=\"flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300\"\n                onClick={() => copyToClipboard(embedCode)}\n              >\n                {isCopied ? <Check size={18} /> : <Clipboard size={15} />}\n              </button>\n            </div>\n          </CardTitle>\n        </CardHeader>\n        <CardContent>\n          <SyntaxHighlighter\n            className=\"w-full overflow-auto custom-scroll\"\n            language={'javascript'}\n            style={oneDark}\n          >\n            {embedCode}\n          </SyntaxHighlighter>\n        </CardContent>\n      </Card>\n    </section>\n  );\n};\n\nexport default NoLoginLink;\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/apiComponent/index.tsx",
    "content": "import { useState, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ApiAccess from './ApiAccess';\nimport ApiAccessFlow from './ApiAccessFlow';\nimport ApiAccessSkill from './ApiAccessSkill';\nimport ChatLink from './ChatLink';\n\nenum API_TYPE {\n    ASSISTANT = 'assistant',\n    SKILL = 'skill',\n    FLOW = 'flow'\n}\n\ntype MenuItem = {\n    key: string;\n    labelKey: string;\n    component: React.ReactNode;\n};\n\ninterface ApiMainPageProps {\n    /** \n     * API 类型，决定显示哪种类型的接入方式\n     * @default API_TYPE.ASSISTANT\n     */\n    type?: API_TYPE;\n}\n\nconst ApiMainPage = ({ type = API_TYPE.ASSISTANT }: ApiMainPageProps) => {\n    const { t } = useTranslation();\n    const [activeMenu, setActiveMenu] = useState('api-access');\n\n    // 菜单配置项\n    const menuItems = useMemo((): MenuItem[] => [\n        {\n            key: 'api-access',\n            labelKey: t('api.apiAccess'),\n            component: getApiAccessComponent(type)\n        },\n        {\n            key: 'no-login-link',\n            labelKey: t('api.noLoginLink'),\n            component: <ChatLink noLogin type={type} />\n        },\n        {\n            key: 'login-link',\n            labelKey: t('api.loginLink'),\n            component: <ChatLink type={type} />\n        }\n    ], [type]);\n\n    // 当前活动内容\n    const activeContent = useMemo(\n        () => menuItems.find(item => item.key === activeMenu)?.component,\n        [activeMenu, menuItems]\n    );\n\n    return (\n        <div className=\"flex size-full bg-background-main\">\n            {/* 左侧菜单组件 */}\n            <MenuPanel\n                items={menuItems}\n                activeKey={activeMenu}\n                onChange={setActiveMenu}\n            />\n\n            {/* 右侧内容区 */}\n            <main className=\"flex-1 p-2 pl-0 overflow-y-auto\" style={{ scrollBehavior: 'smooth' }}>\n                {activeContent}\n            </main>\n        </div>\n    );\n};\n\n// 辅助函数：获取 API 接入组件\nconst getApiAccessComponent = (type: API_TYPE) => {\n    const components = {\n        [API_TYPE.ASSISTANT]: <ApiAccess />,\n        [API_TYPE.SKILL]: <ApiAccessSkill />,\n        [API_TYPE.FLOW]: <ApiAccessFlow />\n    };\n    return components[type] || <ApiAccess />;\n};\n\n// 菜单面板组件\nconst MenuPanel = ({ items, activeKey, onChange }: {\n    items: MenuItem[];\n    activeKey: string;\n    onChange: (key: string) => void\n}) => (\n    <aside className=\"w-52 flex-shrink-0\">\n        <nav className=\"p-2\">\n            <ul className=\"space-y-4\">\n                {items.map((item) => (\n                    <li key={item.key}>\n                        <button\n                            role=\"tab\"\n                            aria-selected={activeKey === item.key}\n                            className={`w-full text-left p-2 pl-6 rounded transition-colors ${activeKey === item.key\n                                ? 'bg-card hover:bg-card/90'\n                                : 'hover:bg-card/50'\n                                }`}\n                            onClick={() => onChange(item.key)}\n                        >\n                            {item.labelKey}\n                        </button>\n                    </li>\n                ))}\n            </ul>\n        </nav>\n    </aside>\n);\n\nexport default ApiMainPage;"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/cardComponent/LabelShow.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport LabelSelect, { UPDATETYPE } from \"../selectComponent/LabelSelect\";\nimport { Bookmark } from \"lucide-react\";\n\nexport default function LabelShow({ data, user, all, type, onChange }) {\n  const { t } = useTranslation();\n\n  const hasWritePermission = useMemo(() => {\n    // 确保data存在且write属性明确为true\n    return !!data && data.write === true;\n  }, [data]);\n\n  const [freshData, setFreshData] = useState(() =>\n    data.tags.map(d => ({ label: d.name, value: d.id, selected: true, edit: false }))\n  )\n  const labels = useMemo(() => {\n    return data.tags.map(d => ({ label: d.name, value: d.id, selected: true, edit: false }))\n  }, [data])\n\n  const [allData, setAllData] = useState([])\n  useEffect(() => {\n    setAllData(all)\n  }, [all])\n  const [isShow, setIsShow] = useState(data.tags.length > 0)\n\n  const resource = { id: data.id, type }\n\n  const isOperator = useMemo(() => {\n    if (data && user) {\n      if (user.role === 'admin') return true\n      data.group_ids.forEach(element => {\n        if (user.admin_groups.includes(element)) return true\n      })\n      if (data.user_id === user.user_id) return true\n      if(data.write) return true\n    }\n    return false\n  }, [data, user])\n\n  const handleUpdate = (obj: { type: string, data: any }) => {\n    switch (obj.type) {\n      case UPDATETYPE.DELETELINK: {\n        setFreshData(pre => pre.filter(l => l.value !== obj.data.value))\n        break\n      }\n      case UPDATETYPE.CREATELINK: {\n        setFreshData(pre => [obj.data, ...pre])\n        break\n      }\n      case UPDATETYPE.UPDATENAME: {\n        setFreshData(pre => pre.map(d => d.value === obj.data.value ? { ...d, label: obj.data.label } : d))\n        onChange()\n        break\n      }\n      case UPDATETYPE.CREATELABEL: {\n        onChange()\n        break\n      }\n      case UPDATETYPE.DELETELABEL: {\n        setFreshData(pre => pre.filter(d => d.value !== obj.data.value))\n        onChange()\n        // setAllData(pre => pre.filter(a => a.value !== obj.data.value))\n        break\n      }\n      default: console.log('error：>>事件类型错误！！！')\n    }\n  }\n\n  useEffect(() => {\n    setIsShow(freshData.length > 0)\n  }, [freshData])\n\n  return (\n    <div className=\"w-full\">\n      {!hasWritePermission ? (\n        <LabelSelect onUpdate={handleUpdate} labels={labels} resource={resource} all={allData}>\n          <div\n            onClick={(e) => e.stopPropagation()}\n            className=\"mb-[10px] flex place-items-center rounded-sm p-1 opacity-0 border border-transparent group-hover:bg-search-input group-hover:border-input group-hover:opacity-100\"\n          >\n            <Bookmark className=\"w-4 h-4 mr-2 text-muted-foreground\" />\n            <div className=\"text-sm text-muted-foreground\">\n              <span>{t('tag.addLabel')}</span>\n            </div>\n          </div>\n        </LabelSelect>\n      ) : (isShow ? (\n        isOperator ? (\n          <LabelSelect onUpdate={handleUpdate} labels={labels} resource={resource} all={allData}>\n            <div onClick={(e) => e.stopPropagation()} className=\"mb-[10px] max-w-[100%] flex place-items-center rounded-sm p-1 border border-transparent group-hover:bg-search-input group-hover:border-input\">\n              <Bookmark className=\"w-4 h-4 mr-2 text-muted-foreground\" />\n              <div className=\"text-sm text-muted-foreground max-w-[250px] truncate\">\n                {freshData.map((l, index) => <span>{l.label}{index !== freshData.length - 1 && '，'}</span>)}\n              </div>\n            </div>\n          </LabelSelect>\n        ) : (\n          <div className=\"mb-[10px] flex place-items-center max-w-[100%] rounded-sm p-1\">\n            <Bookmark className=\"w-4 h-4 mr-2 text-muted-foreground\" />\n            <div className=\"text-sm text-muted-foreground max-w-[250px] truncate\">\n              {freshData.map((l, index) => <span>{l.label}{index !== freshData.length - 1 && '，'}</span>)}\n            </div>\n          </div>\n        )\n      ) : (\n        isOperator ? (\n          <LabelSelect onUpdate={handleUpdate} labels={labels} resource={resource} all={allData}>\n            <div onClick={(e) => e.stopPropagation()} className=\"mb-[10px] flex place-items-center rounded-sm p-1 opacity-0 border border-transparent group-hover:bg-search-input group-hover:border-input group-hover:opacity-100\">\n              <Bookmark className=\"w-4 h-4 mr-2 text-muted-foreground\" />\n              <div className=\"text-sm text-muted-foreground\">\n                <span>{t('tag.addLabel')}</span>\n              </div>\n            </div>\n          </LabelSelect>\n        ) : (\n          <div></div>\n        )\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/cardComponent/avatar.tsx",
    "content": "import { AssistantIcon, FlowIcon, SkillIcon } from \"@/components/bs-icons\";\nimport { AppNumType } from \"@/types/app\";\nimport { cn } from \"@/utils\";\nimport { useMemo } from \"react\";\n\nconst gradients = [\n    'bg-amber-500',\n    'bg-orange-600',\n    'bg-teal-500',\n    'bg-purple-600',\n    'bg-blue-700'\n]\n\nexport default function AppAvator({ id = 1, flowType = '', url = '', className = '' }) {\n\n    const color = useMemo(() => {\n        const str = (id + '').substring(0, 4)\n        let hex = '';\n        for (let i = 0; i < str.length; i++) {\n            hex += str.charCodeAt(i).toString(16);\n        }\n        const num = parseInt(hex, 16) || 0;\n        return gradients[parseInt(num + '', 16) % gradients.length]\n    }, [id])\n\n    if (url) return <img src={__APP_ENV__.BASE_URL + url} className={cn(`w-6 h-6 rounded-sm object-cover`, className)} />\n\n    const flowIcons = {\n        [AppNumType.SKILL]: <SkillIcon className=\"\" />,\n        [AppNumType.ASSISTANT]: <AssistantIcon className=\"\" />,\n        [AppNumType.FLOW]: <FlowIcon className=\"\" />\n    }\n\n    return <div className={cn(`size-6 min-w-6 p-0.5 rounded-sm flex justify-center items-center`, color, className)}>\n        {flowIcons[flowType] || <FlowIcon className=\"\" />}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/cardComponent/index.tsx",
    "content": "import { cname } from \"@/components/bs-ui/utils\";\nimport { AppNumType, AppType } from \"@/types/app\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { SkillIcon } from \"../../bs-icons\";\nimport { AddToIcon } from \"../../bs-icons/addTo\";\nimport { DelIcon } from \"../../bs-icons/del\";\nimport { GoIcon } from \"../../bs-icons/go\";\nimport { PlusIcon } from \"../../bs-icons/plus\";\nimport { SettingIcon } from \"../../bs-icons/setting\";\nimport { UserIcon } from \"../../bs-icons/user\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"../../bs-ui/card\";\nimport { Switch } from \"../../bs-ui/switch\";\nimport i18next from \"i18next\";\n\ninterface IProps<T> {\n  data: T,\n  /** id为''时，表示新建 */\n  id?: number | string,\n  logo?: React.ReactNode,\n  type: AppType | AppNumType;// 技能列表｜侧边弹窗列表\n  title: string,\n  edit?: boolean,\n  description: React.ReactNode | string,\n  checked?: boolean,\n  user?: string,\n  currentUser?: any,\n  labelPannel?: React.ReactNode,\n  isAdmin?: boolean,\n  headSelecter?: React.ReactNode,\n  footer?: React.ReactNode,\n  onClick?: () => void,\n  onSwitchClick?: () => void,\n  onAddTemp?: (data: T) => void,\n  onCheckedChange?: (b: boolean, data: T) => Promise<any>\n  onDelete?: (data: T) => void,\n  onSetting?: (data: T) => void,\n}\n\nexport const gradients = [\n  'bg-amber-500',\n  'bg-orange-600',\n  'bg-teal-500',\n  'bg-purple-600',\n  'bg-blue-700'\n]\n\n// 'bg-slate-600',\n// 'bg-amber-500',\n// 'bg-red-600',\n// 'bg-orange-600',\n// 'bg-teal-500',\n// 'bg-purple-600',\n// 'bg-blue-700',\n// 'bg-yellow-600',\n// 'bg-emerald-600',\n// 'bg-green-700',\n// 'bg-cyan-600',\n// 'bg-sky-600',\n// 'bg-indigo-600',\n// 'bg-violet-600',\n// 'bg-purple-600',\n// 'bg-fuchsia-700',\n// 'bg-pink-600',\n// 'bg-rose-600'\nexport function TitleIconBg({ id, className = '', children = <SkillIcon /> }) {\n  return <div className={cname(`rounded-md flex justify-center items-center ${gradients[parseInt(id + '', 16) % gradients.length]}`, className)}>{children}</div>\n}\n\nexport default function CardComponent<T>({\n  id = '',\n  logo = '',\n  data,\n  type,\n  edit = false,\n  user,\n  labelPannel = null,\n  title,\n  checked,\n  isAdmin,\n  description,\n  footer = null,\n  headSelecter = null,\n  onClick,\n  onSwitchClick,\n  onDelete,\n  onAddTemp,\n  onCheckedChange,\n  onSetting\n}: IProps<T>) {\n\n  const [_checked, setChecked] = useState(checked)\n\n  const { t } = useTranslation()\n\n  const handleCheckedChange = async (bln) => {\n    const res = await onCheckedChange(bln, data)\n    if (res === false) return\n    setChecked(bln)\n  }\n\n  // 新建小卡片（sheet）\n  if (!id && type === 'sheet') return <Card className=\"group w-[320px] cursor-pointer border-dashed border-[#BEC6D6] transition hover:border-primary hover:shadow-none bg-background-new\" onClick={onClick}>\n    <CardHeader>\n      <CardTitle>\n        <div className=\"flex gap-2 items-center\">\n          <div className=\"justify-between\"><PlusIcon className=\"group-hover:text-primary transition-none\" /></div>\n          <span>{title}</span>\n        </div>\n      </CardTitle>\n    </CardHeader>\n    <CardContent className=\"h-fit max-h-[44px] overflow-auto scrollbar-hide\">\n      <CardDescription className=\"break-all\">{description}</CardDescription>\n    </CardContent>\n    <CardFooter className=\"flex justify-end h-10\">\n      <div className=\"rounded cursor-pointer\"><GoIcon className=\"group-hover:text-primary transition-none\" /></div>\n    </CardFooter>\n  </Card>\n\n\n  // 新建卡片\n  if (!id) return <Card className=\"group w-[320px] cursor-pointer border-dashed border-[#BEC6D6] transition hover:border-primary hover:shadow-none bg-background-new\" onClick={onClick}>\n    <CardHeader>\n      <div className=\"flex justify-between pb-2\"><PlusIcon className=\"group-hover:text-primary transition-none\" /></div>\n      <CardTitle className=\"\">{title}</CardTitle>\n    </CardHeader>\n    <CardContent className=\"h-[140px] overflow-auto scrollbar-hide\">\n      <CardDescription>{description}</CardDescription>\n    </CardContent>\n    <CardFooter className=\"flex justify-end h-10\">\n      <div className=\"rounded cursor-pointer\"><GoIcon className=\"group-hover:text-primary transition-none dark:text-slate-50\" /></div>\n    </CardFooter>\n  </Card>\n\n\n  // 侧边弹窗列表（sheet）\n  if (type === 'sheet') return <Card className=\"group max-h-[146px] w-[316px] cursor-pointer bg-[#F7F9FC] dark:bg-background-main dark:hover:bg-background-login hover:bg-[#EDEFF6] hover:shadow-none relative\" onClick={onClick}>\n    <CardHeader className=\"pb-2\">\n      <CardTitle className=\"truncate-doubleline\">\n        <div className=\"flex gap-2 pb-2 items-center\">\n          {logo}\n          <p className=\"leading-5 align-middle\">{title}</p>\n        </div>\n        {/* <span></span> */}\n      </CardTitle>\n    </CardHeader>\n    <CardContent className=\"h-fit max-h-[60px] overflow-auto scrollbar-hide mb-2\">\n      <CardDescription className=\"break-all\">{description}</CardDescription>\n    </CardContent>\n    <CardFooter className=\" block\">\n      {footer}\n    </CardFooter>\n  </Card>\n\n  // 助手&技能&工作流列表卡片组件\n  return <Card className=\"group w-[320px] hover:bg-card/80 cursor-pointer grid\" onClick={() => onClick()}>\n    <CardHeader>\n      <div className=\"flex justify-between pb-2\">\n        {logo}\n        <div className=\"flex gap-1 items-center\">\n          {headSelecter}\n          <Switch\n            checked={_checked}\n            className={i18next.language === 'ja' ? 'w-20' : 'w-12'}\n            // @ts-ignore\n            texts={[t('skills.online'), t('skills.offline')]}\n            onCheckedChange={(b) => edit && handleCheckedChange(b)}\n            onClick={e => { e.stopPropagation(); onSwitchClick?.() }}\n          ></Switch>\n        </div>\n      </div>\n      <CardTitle className=\"truncate-doubleline leading-5 break-all\">{title}</CardTitle>\n    </CardHeader>\n    <CardContent className=\"h-[140px] overflow-auto scrollbar-hide\">\n      <CardDescription className=\"break-all\">{description}</CardDescription>\n    </CardContent>\n    <CardFooter className=\"h-20 grid grid-rows-2 self-end\">\n      {labelPannel}\n      <div className=\"flex justify-between items-center h-10\">\n        <div className=\"flex gap-1 items-center\">\n          <UserIcon />\n          <span className=\"text-sm text-muted-foreground\">{t('skills.createdBy')}</span>\n          <span className=\"text-sm font-medium leading-none overflow-hidden text-ellipsis max-w-32 \">{user}</span>\n        </div>\n        {edit\n          && <div className=\"hidden group-hover:flex\">\n            {/* {!checked && <div className=\"hover:bg-[#EAEDF3] rounded cursor-pointer\" onClick={(e) => { e.stopPropagation(); onSetting(data) }}><SettingIcon /></div>} */}\n            {isAdmin && type !== 'assistant' && <div className=\"hover:bg-[#EAEDF3] rounded cursor-pointer\" onClick={(e) => { e.stopPropagation(); onAddTemp(data) }}><AddToIcon /></div>}\n            {!checked && <div className=\"hover:bg-[#EAEDF3] rounded cursor-pointer\" onClick={(e) => { e.stopPropagation(); onDelete(data) }}><DelIcon /></div>}\n          </div>\n        }\n      </div>\n      {footer}\n    </CardFooter>\n  </Card>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/ChatInput.tsx",
    "content": "import { ClearIcon } from \"@/components/bs-icons/clear\";\nimport { FormIcon } from \"@/components/bs-icons/form\";\nimport { SendIcon } from \"@/components/bs-icons/send\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { useAudioStore } from \"@/components/voiceFunction/audioPlayerStore\";\nimport SpeechToTextComponent from \"@/components/voiceFunction/speechToText\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport { formatDate } from \"@/util/utils\";\nimport { CirclePause } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport GuideQuestions from \"./GuideQuestions\";\nimport { useMessageStore } from \"./messageStore\";\n\nexport default function ChatInput({ clear, form, questions, inputForm, wsUrl, onBeforSend, onClickClear }) {\n    const { toast } = useToast()\n    const { t } = useTranslation()\n    const { appConfig } = useContext(locationContext)\n\n    const [formShow, setFormShow] = useState(false)\n    const [showWhenLocked, setShowWhenLocked] = useState(false) // 强制开启表单按钮，不限制于input锁定\n    const [inputLock, setInputLock] = useState({ locked: false, reason: '' })\n    const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n\n    const { isLoading: audioOpening } = useAudioStore()\n\n    const { messages, hisMessages, chatId, createSendMsg, createWsMsg, updateCurrentMessage, destory, setShowGuideQuestion } = useMessageStore()\n    const currentChatIdRef = useRef(null)\n    const inputRef = useRef(null)\n    const continueRef = useRef(false)\n    // 停止状态\n    const [stop, setStop] = useState({\n        show: false,\n        disable: false\n    })\n    const [autogenStop, setAutogenStop] = useState(false)\n\n    useEffect(() => {\n        if (!chatId) return\n        continueRef.current = false\n        // console.log('message chatid', messages, form, chatId);\n\n        if (form && messages.length === 0 && hisMessages.length === 0) {\n            setInputLock({ locked: true, reason: '' })\n            setFormShow(true)\n            setShowWhenLocked(true)\n        } else {\n            setFormShow(false)\n            setShowWhenLocked(false)\n            setInputLock({ locked: false, reason: '' })\n        }\n        currentChatIdRef.current = chatId\n        createWebSocket(chatId).then(() => {\n            // 切换会话默认发送一条空消息\n            const [wsMsg] = onBeforSend('', '')\n            sendWsMsg(wsMsg)\n        })\n    }, [chatId])\n\n    // 销毁\n    useEffect(() => {\n        return () => {\n            destory()\n            if (wsRef.current) {\n                wsRef.current.close()\n            }\n        }\n    }, [])\n\n    const handleSendClick = async () => {\n        // 解除锁定状态下 form 按钮开放的状态\n        setShowWhenLocked(false)\n        // 关闭引导词\n        setShowGuideQuestion(false)\n        // 收起表单\n        // formShow && setFormShow(false)\n        setFormShow(false)\n\n        const value = inputRef.current.value\n        if (value.trim() === '') return\n\n        const event = new Event('input', { bubbles: true, cancelable: true });\n        inputRef.current.value = ''\n        inputRef.current.dispatchEvent(event); // 触发调节input高度\n        const contunue = continueRef.current ? 'continue' : ''\n        continueRef.current = false\n        const [wsMsg, inputKey] = onBeforSend(contunue, value)\n        // msg to store\n        createSendMsg(wsMsg.inputs, inputKey)\n        // 锁定 input\n        setInputLock({ locked: true, reason: '' })\n        await createWebSocket(chatId)\n        sendWsMsg(wsMsg)\n\n        // 滚动聊天到底\n        const messageDom = document.getElementById('message-panne')\n        if (messageDom) {\n            messageDom.scrollTop = messageDom.scrollHeight;\n        }\n    }\n\n    const diffRef = useRef(0)\n    const sendWsMsg = async (msg) => {\n        try {\n            diffRef.current = Date.now()\n            // console.log('WebSocket send: ' + diffRef.current + ' 毫秒');\n\n            wsRef.current.send(JSON.stringify(msg))\n        } catch (error) {\n            toast({\n                title: 'There was an error sending the message',\n                variant: 'error',\n                description: error.message\n            });\n        }\n    }\n\n    const wsRef = useRef(null)\n    const createWebSocket = (chatId) => {\n        // 单例\n        if (wsRef.current) return Promise.resolve('ok');\n        const isSecureProtocol = window.location.protocol === \"https:\";\n        const webSocketProtocol = isSecureProtocol ? \"wss\" : \"ws\";\n\n        return new Promise((res, rej) => {\n            try {\n                let startTime = Date.now();\n                const ws = new WebSocket(`${webSocketProtocol}://${wsUrl}&chat_id=${chatId}`)\n                wsRef.current = ws\n                // websocket linsen\n                ws.onopen = () => {\n                    // 记录连接成功的时间\n                    let endTime = Date.now();\n\n                    // 计算连接建立所需的时间\n                    let connectionTime = endTime - startTime;\n\n                    // console.log('WebSocket 连接建立时间: ' + connectionTime + ' 毫秒');\n                    console.log(\"WebSocket connection established!\");\n                    res('ok')\n                };\n                ws.onmessage = (event) => {\n                    // console.log(`WebSocket get: ${Date.now()} 毫秒；与send差值${Date.now() - diffRef.current}毫秒`);\n                    const data = JSON.parse(event.data);\n\n                    let errorMsg = ''\n                    if (data.category === 'error') {\n                        errorMsg = data.message.status_message || 'error'\n                        toast({\n                            variant: 'error',\n                            description: t(`errors.${data.message.status_code}`)\n                        })\n                    }\n                    // 异常类型处理，提示\n                    if (errorMsg) {\n                        updateCurrentMessage({\n                            type: 'end_cover',\n                            category: 'tool',\n                            message: \"{}\"\n                        }, true)\n                        setStop({ show: false, disable: false })\n                        return setInputLock({ locked: true, reason: errorMsg })\n                    }\n                    // 拦截会话串台情况\n                    if (currentChatIdRef.current && currentChatIdRef.current !== data.chat_id) return\n                    handleWsMessage(data)\n                    // 群聊@自己时，开启input\n                    if (['end', 'end_cover'].includes(data.type) && data.receiver?.is_self) {\n                        setInputLock({ locked: false, reason: '' })\n                        setStop({ show: false, disable: false })\n                        setAutogenStop(true)\n                        continueRef.current = true\n                    }\n                    if ('close' === data.type) {\n                        setAutogenStop(false)\n                    }\n                }\n                ws.onclose = (event) => {\n                    // wsRef.current = null\n                    console.error('链接手动断开 event :>> ', event);\n                    // setStop({ show: false, disable: false })\n\n                    // if ([1005, 1008, 1009].includes(event.code)) {\n                    //     console.warn('即将废弃 :>> ');\n                    //     setInputLock({ locked: true, reason: event.reason })\n                    // } else {\n                    //     if (event.reason) {\n                    //         toast({\n                    //             title: t('prompt'),\n                    //             variant: 'error',\n                    //             description: event.reason\n                    //         });\n                    //     }\n                    //     setInputLock({ locked: false, reason: '' })\n                    // }\n                };\n                ws.onerror = (ev) => {\n                    wsRef.current = null\n                    setStop({ show: false, disable: false })\n                    console.error('链接异常error', ev);\n                    // toast({\n                    //     title: `${t('chat.networkError')}:`,\n                    //     variant: 'error',\n                    //     description: [\n                    //         t('chat.networkErrorList1'),\n                    //         t('chat.networkErrorList2'),\n                    //         t('chat.networkErrorList3')\n                    //     ]\n                    // });\n                    // reConnect(params)\n                };\n            } catch (err) {\n                console.error('创建链接异常', err);\n                rej(err)\n            }\n        })\n    }\n\n    // 接受 ws 消息\n    const msgClosedRef = useRef(true) // 消息闭合\n    const handleWsMessage = (data) => {\n        if (Array.isArray(data) && data.length) return\n        if (data.type === 'start') {\n            msgClosedRef.current = false\n            // 非continue时，展示stop按钮\n            !continueRef.current && setStop({ show: true, disable: false })\n            createWsMsg(data)\n        } else if (data.type === 'stream') {\n            //@ts-ignore\n            updateCurrentMessage({\n                chat_id: data.chat_id,\n                message: data.message,\n                thought: data.intermediate_steps\n            })\n        } else if (['end', 'end_cover'].includes(data.type)) {\n            if (msgClosedRef.current && !['tool', 'flow', 'knowledge'].includes(data.category)) {\n                // 无未闭合的消息，先创建（补一条start）  工具类除外\n                console.log('重复end,新建消息 :>> ');\n                createWsMsg(data)\n            }\n            updateCurrentMessage({\n                ...data,\n                end: true,\n                thought: data.intermediate_steps || '',\n                messageId: data.message_id,\n                noAccess: false,\n                liked: 0,\n                create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n            }, data.type === 'end_cover' && data.category === 'anwser')\n\n            if (!msgClosedRef.current) msgClosedRef.current = true\n        } else if (data.type === \"close\") {\n            setStop({ show: false, disable: false })\n            setInputLock((prev) => (prev.reason ? prev : { locked: false, reason: '' }))\n        }\n    }\n\n    // 触发发送消息事件（重试、表单）\n    useEffect(() => {\n        const handleCustomEvent = (e) => {\n            if (!showWhenLocked && inputLock.locked) return console.error('弹窗已锁定，消息无法发送')\n            const { send, message } = e.detail\n            inputRef.current.value = message\n            if (send) handleSendClick()\n        }\n        document.addEventListener('userResendMsgEvent', handleCustomEvent)\n        return () => {\n            document.removeEventListener('userResendMsgEvent', handleCustomEvent)\n        }\n    }, [inputLock.locked, showWhenLocked])\n\n    // 点击引导词\n    const handleClickGuideWord = (message) => {\n        if (!showWhenLocked && inputLock.locked) return console.error('弹窗已锁定，消息无法发送')\n        inputRef.current.value = message\n        handleSendClick()\n    }\n\n    // auto input height\n    const handleTextAreaHeight = (e) => {\n        const textarea = e.target\n        textarea.style.height = 'auto'\n        textarea.style.height = textarea.scrollHeight + 'px'\n        // setInputEmpty(textarea.value.trim() === '')\n    }\n\n    const handleSpeechRecognition = (text) => {\n        console.log('text', text);\n\n        if (!showWhenLocked && inputLock.locked) return;\n        if (!inputRef.current) return;\n\n        // 将识别结果追加到当前输入框内容后\n        const currentValue = inputRef.current.value;\n        inputRef.current.value = currentValue + text;\n\n        // 触发input事件以更新UI（如自动调整高度）\n        const event = new Event('input', { bubbles: true, cancelable: true });\n        inputRef.current.dispatchEvent(event);\n    };\n\n    return <div className=\"absolute bottom-0 w-full pt-1 bg-[#fff] dark:bg-[#1B1B1B] z-10\">\n        <div className={`relative ${clear && 'pl-9'}`}>\n            {/* 语音转文字 */}\n            {linsightConfig?.asr_model?.id && <SpeechToTextComponent disabled={inputLock.locked} onChange={handleSpeechRecognition} />}\n            {/* form */}\n            {\n                formShow && <div className=\"relative\">\n                    <div className=\"absolute left-0 border bottom-2 bg-background-login px-4 py-2 rounded-md w-[50%] min-w-80 z-40\">\n                        {inputForm}\n                    </div>\n                </div>\n            }\n            {/* 引导问题 */}\n            <GuideQuestions\n                locked={inputLock.locked}\n                chatId={chatId}\n                questions={questions}\n                onClick={handleClickGuideWord}\n            />\n            {/* clear */}\n            <div className=\"flex absolute left-0 top-4 z-10\">\n                {\n                    clear && <div\n                        className={`w-6 h-6 rounded-sm hover:bg-gray-200 cursor-pointer flex justify-center items-center `}\n                        onClick={() => { !inputLock.locked && onClickClear?.() }}\n                    ><ClearIcon className={`${!showWhenLocked && inputLock.locked ? 'text-muted-foreground' : 'text-foreground'} dark:text-slate-50 dark:hover:bg-[#282828]`} ></ClearIcon></div>\n                }\n            </div>\n            {/* form switch */}\n            <div className=\"flex absolute left-3 top-4 z-10\">\n                {\n                    form && <div\n                        className={`w-6 h-6 rounded-sm hover:bg-gray-200 cursor-pointer flex justify-center items-center `}\n                        onClick={() => (showWhenLocked || !inputLock.locked) && setFormShow(!formShow)}\n                    ><FormIcon className={!showWhenLocked && inputLock.locked ? 'text-muted-foreground' : 'text-foreground'}></FormIcon></div>\n                }\n            </div>\n            {/* send */}\n            <div className=\"flex gap-2 absolute right-3 top-4 z-10\">\n                {stop.show ?\n                    <div\n                        onClick={() => {\n                            if (stop.disable || inputLock.locked) return\n                            setStop({ show: true, disable: true });\n                            sendWsMsg({ \"action\": \"stop\" });\n                        }}\n                        className={`w-6 h-6 bg-foreground rounded-full flex justify-center items-center cursor-pointer ${stop.disable || inputLock.locked && 'bg-muted-foreground text-muted-foreground'}`}>\n                        <span className=\"w-2 h-2.5 border-x-2 border-border\"></span>\n                    </div>\n                    : <div\n                        id=\"bs-send-btn\"\n                        className=\"w-6 h-6 rounded-sm hover:bg-gray-200 dark:hover:bg-gray-950 cursor-pointer flex justify-center items-center\"\n                        onClick={() => { !inputLock.locked && handleSendClick() }}>\n                        <SendIcon className={`${inputLock.locked || audioOpening ? 'text-muted-foreground' : 'text-foreground'}`} />\n                    </div>\n                }\n            </div>\n            {/* stop autogen等待输入时专用*/}\n            <div className=\"absolute w-full flex justify-center bottom-32\">\n                {autogenStop && <Button\n                    className=\"rounded-full\"\n                    variant=\"outline\" onClick={() => {\n                        if (stop.disable) return\n                        setStop({ show: true, disable: true });\n                        setAutogenStop(false)\n                        sendWsMsg({ \"action\": \"stop\" });\n                    }}><CirclePause className=\"mr-2\" />Stop</Button>}\n            </div>\n            {/* question */}\n            <Textarea\n                id=\"bs-send-input\"\n                ref={inputRef}\n                rows={1}\n                style={{ height: 56 }}\n                disabled={inputLock.locked}\n                onInput={handleTextAreaHeight}\n                placeholder={inputLock.locked ? inputLock.reason : t('chat.inputPlaceholder')}\n                className={\"resize-none py-4 pr-10 text-md min-h-6 max-h-[200px] scrollbar-hide dark:bg-[#2A2B2E] text-gray-800\" + (form && ' pl-10')}\n                onKeyDown={(event) => {\n                    if (event.key === \"Enter\" && !event.shiftKey) {\n                        event.preventDefault();\n                        !inputLock.locked && handleSendClick()\n                    }\n                }}\n            ></Textarea>\n        </div>\n        <p className=\"text-center text-sm pt-2 pb-4 text-gray-400\">{appConfig.dialogTips}</p>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/FileBs.tsx",
    "content": "import { AvatarIcon } from \"@/components/bs-icons/avatar\";\nimport { WordIcon } from \"@/components/bs-icons/office\";\nimport { downloadFile } from \"@/util/utils\";\nimport { useTranslation } from \"react-i18next\";\nimport { checkSassUrl } from \"../FileView\";\n\n// 颜色列表\nconst colorList = [\n    \"#666\",\n    \"#FF5733\",\n    \"#3498DB\",\n    \"#27AE60\",\n    \"#E74C3C\",\n    \"#9B59B6\",\n    \"#F1C40F\",\n    \"#34495E\",\n    \"#16A085\",\n    \"#E67E22\",\n    \"#95A5A6\"\n]\n\nexport default function FileBs({ data }) {\n    const { t } = useTranslation()\n    const avatarColor = colorList[(data.sender?.split('').reduce((num, s) => num + s.charCodeAt(), 0) || 0) % colorList.length]\n\n    // download file\n    const handleDownloadFile = (file) => {\n        const url = file?.file_url\n        url && downloadFile(checkSassUrl(url), file?.file_name)\n    }\n\n    return <div className=\"flex w-full py-1\">\n        <div className=\"w-fit min-h-8 rounded-2xl px-6 py-4 max-w-[90%]\">\n            {data.sender && <p className=\"text-primary text-xs mb-2\" style={{ background: avatarColor }}>{data.sender}</p>}\n            <div className=\"flex gap-2 \">\n                <div className=\"w-6 h-6 min-w-6 flex justify-center items-center rounded-full\" style={{ background: avatarColor }} ><AvatarIcon /></div>\n                <div\n                    className=\"flex gap-2 w-52 border border-gray-200 shadow-sm bg-gray-50 dark:bg-gray-600 px-4 py-2 rounded-sm cursor-pointer\"\n                    onClick={() => handleDownloadFile(data.files[0])}\n                >\n                    <div className=\"flex items-center\"><WordIcon /></div>\n                    <div>\n                        <h1 className=\"text-sm font-bold\">{data.files[0]?.file_name}</h1>\n                        <p className=\"text-xs text-gray-400 mt-1\">{t('chat.clickDownload')}</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/GuideQuestions.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\"\nimport { useMessageStore } from \"./messageStore\"\nimport { useTranslation } from \"react-i18next\"\n\n// 引导词推荐\nexport default function GuideQuestions({ locked, chatId, questions, onClick }) {\n    const [showGuideQuestion, setShowGuideQuestion] = useMessageStore(state => [state.showGuideQuestion, state.setShowGuideQuestion])\n\n    const { t } = useTranslation()\n\n    useEffect(() => {\n        questions.length && setShowGuideQuestion(true)\n    }, [chatId])\n\n    const words = useMemo(() => {\n        if (questions.length < 4) return questions\n        // 随机按序取三个\n        const res = []\n        const randomIndex = Math.floor(Math.random() * questions.length)\n        for (let i = 0; i < 3; i++) {\n            const item = questions[(randomIndex + i) % (questions.length - 1)]\n            res.push(item)\n        }\n        return res\n    }, [questions])\n\n    if (locked || !words.length) return null\n\n    if (showGuideQuestion) return <div className=\"relative\">\n        <div className=\"absolute left-0 bottom-0\">\n            <p className=\"text-gray-950 text-sm mb-2 bg-[rgba(255,255,255,0.8)] rounded-md w-fit px-2 py-1\">{t('chat.recommendationQuestions')}</p>\n            {\n                words.map((question, index) => (\n                    <div\n                        key={index}\n                        className=\"w-fit bg-[#d4dffa] border-2 border-gray-50 shadow-md text-gray-600 rounded-md mb-1 px-4 py-1 text-sm cursor-pointer\"\n                        onClick={() => {\n                            setShowGuideQuestion(false)\n                            onClick(question)\n                        }}\n                    >{question}</div>\n                ))\n            }\n        </div>\n    </div>\n\n\n    return null\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/MessageBs.tsx",
    "content": "import { ToastIcon } from \"@/components/bs-icons\";\nimport { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\";\nimport { ChatMessageType } from \"@/types/chat\";\nimport { formatStrTime } from \"@/util/utils\";\nimport { copyText } from \"@/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport MessageButtons from \"./MessageButtons\";\nimport SourceEntry from \"./SourceEntry\";\nimport { useMessageStore } from \"./messageStore\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport { AudioPlayComponent } from \"@/components/voiceFunction/audioPlayButton\";\nimport { useTranslation } from \"react-i18next\";\n\n\n// 颜色列表\nconst colorList = [\n    \"#111\",\n    \"#FF5733\",\n    \"#3498DB\",\n    \"#27AE60\",\n    \"#E74C3C\",\n    \"#9B59B6\",\n    \"#F1C40F\",\n    \"#34495E\",\n    \"#16A085\",\n    \"#E67E22\",\n    \"#95A5A6\"\n]\n\nexport const ReasoningLog = ({ loading, msg = '' }) => {\n    const [open, setOpen] = useState(true)\n    // console.log('msg :>> ', msg);\n    if (!msg) return null\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm border\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\" onClick={() => setOpen(!open)}>\n                {loading ? <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    <LoadIcon className=\"text-primary duration-300\" />\n                    <span>思考中</span>\n                </div>\n                    : <div className=\"flex items-center font-bold gap-2 text-sm\">\n                        <ToastIcon type=\"success\" />\n                        <span>已深度思考</span>\n                    </div>\n                }\n                <ChevronDown className={open && 'rotate-180'} />\n            </div>\n            <div className={cname('bg-[#F5F6F8] dark:bg-[#313336] px-4 py-2 overflow-hidden text-sm ', open ? 'h-auto' : 'h-0 p-0')}>\n                {msg.split('\\n').map((line, index) => (\n                    <p className=\"text-md mb-1 text-muted-foreground\" key={index}>{line}</p>\n                ))}\n            </div>\n        </div>\n    </div>\n}\n\nexport default function MessageBs({ debug,start,version, mark = false, logo, data, onUnlike = () => { }, onSource, onMarkClick, chat }: { logo: string, data: ChatMessageType, onUnlike?: any, onSource?: any }) {\n    const avatarColor = colorList[\n        (data.sender?.split('').reduce((num, s) => num + s.charCodeAt(), 0) || 0) % colorList.length\n    ]\n        const { t } = useTranslation('flow')\n\n    const message = useMemo(() => {\n        return data.message[data.chatKey] || data.message\n    }, [data.message])\n\n\n    const messageRef = useRef<HTMLDivElement>(null)\n    const handleCopyMessage = () => {\n        // api data.id\n        copyText(messageRef.current)\n    }\n    const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n\n    const chatId = useMessageStore(state => state.chatId)\n\n    return <div className=\"flex w-full\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <ReasoningLog loading={!data.end && data.reasoning_log} msg={data.reasoning_log} />\n            {!(data.reasoning_log && !message && !data.files.length) && <>\n                <div className=\"flex justify-between items-center mb-1\">\n                    {data.sender ? <p className=\"text-gray-600 text-xs\">{data.sender}</p> : <p />}\n                    <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                        <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time,  t('short'))}</span>\n                    </div>\n                </div>\n                <div className=\"min-h-8 px-6 py-4 rounded-2xl bg-[#F5F6F8] dark:bg-[#313336]\">\n                    <div className=\"flex gap-2\">\n                        {logo}\n                        {data.message.toString() ?\n                            <div ref={messageRef} className=\"text-sm max-w-[calc(100%-24px)]\">\n                                {<MessageMarkDown message={message} version={version}/>}\n                                {/* @user */}\n                                {data.receiver && <p className=\"text-blue-500 text-sm\">@ {data.receiver.user_name}</p>}\n                                {/* 光标 */}\n                                {/* {data.message.toString() && !data.end && <div className=\"animate-cursor absolute w-2 h-5 ml-1 bg-gray-600\" style={{ left: cursor.x, top: cursor.y }}></div>} */}\n                            </div>\n                            : <div><LoadingIcon className=\"size-6 text-primary\" /></div>\n                        }\n                    </div>\n                </div>\n                <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    {linsightConfig?.tts_model?.id && (version !== 'v2')&& (\n                        <AudioPlayComponent\n                            messageId={String(data.id)}\n                            msg={message}\n                        />\n                    )}\n                </div>\n                <div className=\"flex justify-end mt-2\">\n                    {start && <MessageButtons\n                            mark={mark}\n                            id={data.id}\n                            data={data.liked}\n                            onUnlike={onUnlike}\n                            onCopy={handleCopyMessage}\n                            onMarkClick={onMarkClick}\n                            version={version}\n                            debug={debug}\n                            text={data?.message || data.thought}\n                        ></MessageButtons>}\n                </div>\n\n            </>}\n            {/* 附加信息 */}\n            {\n                !!data.id && data.end && <div className=\"flex justify-between mt-2\">\n                    <SourceEntry\n                        extra={data.extra}\n                        end={data.end}\n                        source={data.source}\n                        className=\"pl-4\"\n                        onSource={() => onSource?.({\n                            chatId,\n                            messageId: data.id,\n                            message: data.message || data.thought,\n                        })} />\n                    {!debug && <MessageButtons\n                        mark={mark}\n                        id={data.id}\n                        data={data.liked}\n                        onUnlike={onUnlike}\n                        onCopy={handleCopyMessage}\n                        onMarkClick={onMarkClick}\n                        version={version}\n                        debug={debug}\n                        text={data?.message || data.thought}\n                    ></MessageButtons>}\n                </div>\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/MessageButtons.tsx",
    "content": "import { FlagIcon } from \"@/components/bs-icons\";\nimport { ThunmbIcon } from \"@/components/bs-icons/thumbs\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { copyTrackingApi, likeChatApi } from \"@/controllers/API\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { AudioPlayComponent } from \"@/components/voiceFunction/audioPlayButton\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\n\nconst enum ThumbsState {\n    Default = 0,\n    ThumbsUp,\n    ThumbsDown\n}\n\nexport default function MessageButtons({ debug, mark = false, id, onCopy, data, onUnlike, onMarkClick, version, text = '' }) {\n\n    const { t } = useTranslation()\n    const [state, setState] = useState<ThumbsState>(data)\n    const [copied, setCopied] = useState(false)\n\n    const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n    const handleClick = (type: ThumbsState) => {\n        if (mark) return\n        setState(_type => {\n            const newType = type === _type ? ThumbsState.Default : type\n            // api\n            likeChatApi(id, newType);\n            return newType\n        })\n        if (state !== ThumbsState.ThumbsDown && type === ThumbsState.ThumbsDown) onUnlike?.(id)\n    }\n\n    const handleCopy = (e) => {\n        if (mark) return\n        setCopied(true)\n        onCopy()\n        setTimeout(() => {\n            setCopied(false)\n        }, 2000);\n\n        copyTrackingApi(id)\n    }\n\n    return <div className=\"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n        {mark && <Button className=\"h-6 text-xs group-hover:opacity-100 opacity-0\" onClick={onMarkClick}>\n            <FlagIcon width={12} height={12} className=\"cursor-pointer\" />\n            <span>{t('addQa')}</span>\n        </Button>}\n        {!mark && linsightConfig?.tts_model?.id && (\n            <AudioPlayComponent\n                messageId={String(id)}\n                msg={text}\n            />\n        )}\n\n        {!debug && (version === 'v2') &&\n            <>\n                <ThunmbIcon\n                    type='copy'\n                    className={`cursor-pointer ${copied && 'text-primary hover:text-primary'}`}\n                    onClick={handleCopy}\n                />\n                <ThunmbIcon\n                    type='like'\n                    className={`cursor-pointer ${state === ThumbsState.ThumbsUp && 'text-primary hover:text-primary'}`}\n                    onClick={() => handleClick(ThumbsState.ThumbsUp)}\n                />\n                <ThunmbIcon\n                    type='unLike'\n                    className={`cursor-pointer ${state === ThumbsState.ThumbsDown && 'text-primary hover:text-primary'}`}\n                    onClick={() => handleClick(ThumbsState.ThumbsDown)}\n                /></>\n        }\n\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/MessagePanne.tsx",
    "content": "import ResouceModal from \"@/pages/ChatAppPage/components/ResouceModal\";\nimport ThumbsMessage from \"@/pages/ChatAppPage/components/ThumbsMessage\";\nimport { useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FileBs from \"./FileBs\";\nimport MessageBs, { ReasoningLog } from \"./MessageBs\";\nimport MessageSystem from \"./MessageSystem\";\nimport MessageUser from \"./MessageUser\";\nimport RunLog from \"./RunLog\";\nimport Separator from \"./Separator\";\nimport { useMessageStore } from \"./messageStore\";\n\nexport default function MessagePanne({ debug = false, mark = false, logo, useName, guideWord, loadMore,chat, version,onMarkClick = (...a: any) => { } }) {\n    const { t } = useTranslation()\n    const { chatId, messages, hisMessages } = useMessageStore()\n\n    // 反馈\n    const thumbRef = useRef(null)\n    // 溯源\n    const sourceRef = useRef(null)\n\n    // 自动滚动\n    const messagesRef = useRef(null)\n    const scrollLockRef = useRef(false)\n    useEffect(() => {\n        scrollLockRef.current = false\n        queryLockRef.current = false\n    }, [chatId])\n    const lastScrollTimeRef = useRef(0); // 记录上次执行的时间戳\n    useEffect(() => {\n        if (scrollLockRef.current) return;\n\n        const now = Date.now();\n        const throttleTime = 1200; // 1秒\n\n        // 如果距离上次执行的时间小于 throttleTime，则直接返回\n        if (now - lastScrollTimeRef.current < throttleTime) {\n            return;\n        }\n\n        // 执行滚动操作\n        messagesRef.current.scrollTop = messagesRef.current.scrollHeight;\n\n        // 更新上次执行的时间戳\n        lastScrollTimeRef.current = now;\n    }, [messages]);\n\n    // 消息滚动加载\n    const queryLockRef = useRef(false)\n    useEffect(() => {\n        function handleScroll() {\n            if (queryLockRef.current) return\n            const { scrollTop, clientHeight, scrollHeight } = messagesRef.current\n            // 距离底部 600px内，开启自动滚动\n            scrollLockRef.current = (scrollHeight - scrollTop - clientHeight) > 400\n\n            if (messagesRef.current.scrollTop <= 90) {\n                console.log('请求 :>> ', 1);\n                queryLockRef.current = true\n                loadMore()\n                // TODO 翻页定位\n                // 临时处理防抖\n                setTimeout(() => {\n                    queryLockRef.current = false\n                }, 1000);\n            }\n        }\n\n        messagesRef.current?.addEventListener('scroll', handleScroll);\n        return () => messagesRef.current?.removeEventListener('scroll', handleScroll)\n    }, [messagesRef.current, messages, chatId]);\n\n    const messagesList = [...hisMessages, ...messages]\n    // 成对的qa msg\n    const findQa = (msgs, index) => {\n        const item = msgs[index]\n        if (item.category === 'answer') {\n            const a = item.message[item.chatKey] || item.message\n            let q = ''\n            while (index > -1) {\n                const qItem = msgs[--index]\n                if (qItem.category === 'question') {\n                    q = qItem.message[qItem.chatKey] || qItem.message\n                    break\n                }\n            }\n            return { q, a }\n        } else if (item.category === 'question') {\n            const q = item.message[item.chatKey] || item.message\n            let a = ''\n            while (msgs[++index]) {\n                const aItem = msgs[index]\n                if (aItem.category === 'answer') {\n                    a = aItem.message[aItem.chatKey] || aItem.message\n                    break\n                }\n            }\n            return { q, a }\n        }\n    }\n\n    return <div id=\"message-panne\" ref={messagesRef} className=\"h-full overflow-y-auto scrollbar-hide pt-12 pb-60\">\n        {guideWord && <MessageBs\n            key={9999}\n            version={version}\n            start\n            data={{ message: guideWord, isSend: false, chatKey: '', end: true, user_name: '' }} />}\n        {\n            messagesList.map((msg, index) => {\n                // 工厂\n                let type = 'llm'\n                if (msg.isSend) {\n                    type = 'user'\n                } else if (msg.category === 'divider') {\n                    type = 'separator'\n                } else if (msg.files?.length) {\n                    type = 'file'\n                } else if (['tool', 'flow', 'knowledge'].includes(msg.category)\n                    // || (msg.category === 'processing' && msg.thought.indexOf(`status_code`) === -1)\n                ) { // 项目演示？\n                    type = 'runLog'\n                } else if (msg.thought) {\n                    type = 'system'\n                } else if (msg.category === 'reasoning_answer') {\n                    type = 'reasoning'\n                }\n\n                switch (type) {\n                    case 'user':\n                        return <MessageUser debug={debug} mark={mark} key={msg.id} useName={useName} data={msg} onMarkClick={() => onMarkClick('question', msg.id, findQa(messagesList, index))} />;\n                    case 'llm':\n                        return <MessageBs\n                            debug={debug}\n                            mark={mark}\n                            logo={logo}\n                            key={msg.id}\n                            version={version}\n                            data={msg}\n                            chat={chat}\n                            onUnlike={(chatId) => { thumbRef.current?.openModal(chatId) }}\n                            onSource={(data) => { sourceRef.current?.openModal(data) }}\n                            onMarkClick={() => onMarkClick('answer', msg.id, findQa(messagesList, index))}\n                        />;\n                    case 'system':\n                        return <MessageSystem key={msg.id} data={msg} />;\n                    case 'separator':\n                        return <Separator key={msg.id} text={msg.message || t('chat.roundOver')} />;\n                    case 'file':\n                        return <FileBs key={msg.id} data={msg} />;\n                    case 'runLog':\n                        return <RunLog key={msg.id} data={msg} />;\n                    case 'reasoning':\n                        return <ReasoningLog key={msg.id} loading={false} msg={msg.message} />\n                    default:\n                        return <div className=\"text-sm mt-2 border rounded-md p-2\" key={msg.id}>Unknown message type</div>;\n                }\n            })\n        }\n        {/* 踩 反馈 */}\n        <ThumbsMessage ref={thumbRef}></ThumbsMessage>\n        {/* 源文件类型 */}\n        <ResouceModal ref={sourceRef}></ResouceModal>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/MessageSystem.tsx",
    "content": "import { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\"\nimport { copyText } from \"@/utils\"\nimport { Copy } from \"lucide-react\"\nimport { useMemo } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\nexport default function MessageSystem({ data }) {\n    const { message } = useToast()\n    const { t } = useTranslation()\n\n    const handleCopy = (dom) => {\n        copyText(dom)\n\n        message({\n            variant: 'success',\n            title: t('prompt'),\n            description: t('chat.copyTip')\n        })\n    }\n\n    // 日志markdown\n    const logMkdown = useMemo(\n        () => (\n            data.thought && <MessageMarkDown message={data.thought.toString()} />\n        ),\n        [data.thought]\n    )\n\n    const border = { system: 'border-slate-500', question: 'border-amber-500', processing: 'border-cyan-600', answer: 'border-lime-600', report: 'border-slate-500', guide: 'border-none' }\n\n    return <div className=\"py-1\">\n        <div className={`relative rounded-sm px-6 py-4 border text-sm dark:bg-gray-900 ${data.category === 'guide' ? 'bg-[#EDEFF6]' : 'bg-slate-50'} ${border[data.category || 'system']}`}>\n            {logMkdown}\n            {data.category === 'report' && <Copy className=\" absolute right-4 top-2 cursor-pointer\" onClick={(e) => handleCopy(e.target.parentNode)}></Copy>}\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/MessageUser.tsx",
    "content": "import { FlagIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { ChatMessageType } from \"@/types/chat\";\nimport { formatStrTime } from \"@/util/utils\";\nimport { RefreshCw, Search, SquarePen } from \"lucide-react\";\nimport { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useMessageStore } from \"./messageStore\";\n\nexport default function MessageUser({ debug, mark = false, useName = '', data, onMarkClick }: { data: ChatMessageType }) {\n    const { t } = useTranslation()\n    const msg = data.message[data.chatKey]\n\n    const { appConfig } = useContext(locationContext)\n    const running = useMessageStore(state => state.running)\n\n    const handleSearch = () => {\n        window.open(appConfig.dialogQuickSearch + encodeURIComponent(msg))\n    }\n\n    const handleResend = (send) => {\n        const myEvent = new CustomEvent('userResendMsgEvent', {\n            detail: {\n                send,\n                message: msg\n            }\n        });\n        document.dispatchEvent(myEvent);\n    }\n\n    return <div className=\"flex justify-end w-full\">\n        <div className=\"w-fit group min-h-8 max-w-[90%]\">\n            <div className=\"flex justify-end items-center mb-2 gap-2\">\n                <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                </div>\n                {useName && <p className=\"text-gray-600 text-sm\">{useName}</p>}\n            </div>\n            <div className=\"rounded-2xl px-6 py-4 bg-[#EEF2FF] dark:bg-[#333A48]\">\n                <div className=\"flex gap-2 \">\n                    <div className=\"text-[#0D1638] dark:text-[#CFD5E8] text-sm break-all whitespace-break-spaces\">{msg}</div>\n                    <div className=\"w-6 h-6 min-w-6\"><img src={__APP_ENV__.BASE_URL + '/assets/user.png'} alt=\"\" /></div>\n                </div>\n            </div>\n            {/* 附加信息 */}\n            {\n                // 数组类型的 data通常是文件上传消息，不展示附加按钮\n                mark ? <div className=\"flex justify-between mt-2\">\n                    <span></span>\n                    <div className=\"flex gap-2 text-gray-400 cursor-pointer self-end\">\n                        {'question' === data.category && <Button className=\"h-6 text-xs group-hover:opacity-100 opacity-0\" onClick={onMarkClick}>\n                            <FlagIcon width={12} height={12} className=\"cursor-pointer\" />\n                            <span>{t('addSimilarQuestion')}</span>\n                        </Button>}\n                    </div>\n                </div> : (!Array.isArray(data.message.data) && <div className=\"flex justify-between mt-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n                    <span></span>\n                    {!debug && <div className=\"flex gap-0.5 text-gray-400 cursor-pointer self-end\">\n                        {!running && <SquarePen className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(false)} />}\n                        {!running && <RefreshCw className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(true)} />}\n                        {appConfig.dialogQuickSearch && <Search className=\"size-6 p-1 hover:text-gray-500\" onClick={handleSearch} />}\n                    </div>}\n                </div>)\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/RunLog.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { ToastIcon } from \"@/components/bs-icons/toast\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useMemo, useState } from \"react\";\n\nexport default function RunLog({ data }) {\n    const [open, setOpen] = useState(false)\n\n    // 该组件只有在助手测试页面用到，临时使用耦合方案，取 toollist来匹配 name\n    const assistantState = useAssistantStore(state => state.assistantState)\n\n    const [title, lost] = useMemo(() => {\n        let lost = false\n        let title = ''\n        const status = data.end ? '已使用' : '正在使用'\n        if (data.category === 'flow') {\n            const flow = assistantState.flow_list?.find(flow => flow.id === data.message.tool_key)\n            // if (!flow) throw new Error('调试日志无法匹配到使用的技能详情，id:' + data.message.tool_key)\n            if (flow) {\n                lost = flow.status === 1\n                title = lost ? `${flow.name} 已下线` : `${status} ${flow.name}`\n            } else {\n                title = '技能已被删除，无法获取技能名'\n            }\n        } else if (data.category === 'tool') {\n            const tool = assistantState.tool_list?.find(tool => tool.tool_key === data.message.tool_key)\n            // if (!tool) throw new Error('调试日志无法匹配到使用的工具详情，id:' + data.message.tool_key)\n\n            title = tool ? `${status} ${tool.name}` : '工具已被删除，无法获取工具名'\n        } else if (data.category === 'knowledge') {\n            const knowledge = assistantState.knowledge_list?.find(knowledge => knowledge.id === parseInt(data.message.tool_key))\n            // if (!knowledge) throw new Error('调试日志无法匹配到使用的知识库详情，id:' + data.message.tool_key)\n\n            title = knowledge ? `${data.end ? '已搜索' : '正在搜索'} ${knowledge.name}` : '知识库已被删除，无法获取知识库名'\n        } else {\n            title = data.end ? '完成' : '思考中'\n        }\n        return [title, lost]\n    }, [assistantState, data])\n\n    // 没任何匹配的工具，隐藏\n    if (assistantState.tool_list.length + assistantState.knowledge_list.length\n        + assistantState.flow_list.length === 0) return null\n\n    if (data.type === 'end_cover') return null\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm border max-w-[90%]\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\" onClick={() => setOpen(!open)}>\n                <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    {\n                        data.end ? <ToastIcon type={lost ? 'error' : 'success'} /> :\n                            <LoadIcon className=\"text-primary duration-300\" />\n                    }\n                    <span>{title}</span>\n                </div>\n                <ChevronDown className={open && 'rotate-180'} />\n            </div>\n            <div className={cname('bg-[#F5F6F8] dark:bg-[#313336] px-4 py-2 overflow-hidden text-sm ', open ? 'h-auto' : 'h-0 p-0')}>\n                {data.thought.split('\\n').map((line, index) => (\n                    <p className=\"text-md mb-1 text-muted-foreground\" key={index}>{line}</p>\n                ))}\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/Separator.tsx",
    "content": "export default function Separator({ className = '', text }) {\n    \n    return <div className={'flex items-center justify-center py-4 text-gray-400 text-sm ' + className}>\n        ----------- {text} -----------\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/SourceEntry.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Info } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst enum SourceType {\n    /** 无溯源 */\n    NONE = 0,\n    /** 文件 */\n    FILE = 1,\n    /** 无权限 */\n    NO_PERMISSION = 2,\n    /** 链接s */\n    LINK = 3,\n    /** 已命中的QA */\n    HAS_QA = 4,\n}\n\nexport default function SourceEntry({ extra, end, source, className = '', onSource }) {\n    const { t } = useTranslation()\n\n    if (source === SourceType.NONE || !end) return <div className={className}></div>\n    const extraObj = extra ? (typeof extra === 'string' ? JSON.parse(extra) : extra) : null\n\n    return <div className={className}>\n        {(() => {\n            switch (source) {\n                case SourceType.FILE:\n                    return <Badge className=\"cursor-pointer\" onClick={onSource}>{t('chat.source')}</Badge>;\n                case SourceType.NO_PERMISSION:\n                    return <p className=\"flex text-xs text-gray-400 gap-1 items-center\"><Info className=\"text-red-300\" />{t('chat.noAccess')}</p>;\n                case SourceType.LINK:\n                    return (\n                        <div className=\"flex flex-col text-blue-500 text-xs\">\n                            {\n                                extraObj.doc?.map(el => <a key={el.url} href={el.url} target=\"_blank\">{el.title}</a>)\n                            }\n                        </div>\n                    );\n                case SourceType.HAS_QA:\n                    return <a href={extraObj.url} target=\"_blank\" className=\"text-blue-500 text-xs\">{t('chat.sourceFromQaLibrary')}：{extraObj.qa}</a>;\n                default:\n                    return null;\n            }\n        })()}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/index.tsx",
    "content": "import ChatInput from \"./ChatInput\";\nimport MessagePanne from \"./MessagePanne\";\n\nexport default function ChatComponent({\n    stop = false,\n    debug = false,\n    logo = '',\n    clear = false,\n    questions = [],\n    form = false,\n    useName,\n    inputForm = null,\n    guideWord,\n    wsUrl,\n    onBeforSend,\n    onClickClear,\n    chat,\n    loadMore = () => { },\n    version\n}) {\n\n    return <div className=\"relative h-full\">\n        <MessagePanne logo={logo} debug={debug} version={version} useName={useName} guideWord={guideWord} loadMore={loadMore} chat={chat}></MessagePanne>\n        <ChatInput clear={clear} questions={questions} version={version} form={form} wsUrl={wsUrl} inputForm={inputForm} onBeforSend={onBeforSend} onClickClear={onClickClear}></ChatInput>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/chatComponent/messageStore.ts",
    "content": "import { getChatHistory } from '@/controllers/API';\nimport { ChatMessageType } from '@/types/chat';\nimport { formatDate } from '@/util/utils';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport { create } from 'zustand';\n\n/**\n * 会话消息管理\n */\n\ntype State = {\n    running: boolean,\n    /**\n     * 会话 ID\n     * 变更会触发 ws建立，解锁滚动\n     */\n    chatId: string,\n    /** 没有更多历史纪录 */\n    historyEnd: boolean,\n    messages: ChatMessageType[]\n    /** 历史回话独立存储 */\n    hisMessages: ChatMessageType[]\n    /**\n     * 控制引导问题的显示状态\n     */\n    showGuideQuestion: boolean\n}\n\ntype Actions = {\n    loadHistoryMsg: (flowid: string, chatId: string, data: { appendHistory: boolean, lastMsg: string }) => Promise<void>;\n    loadMoreHistoryMsg: (flowid: string, appendHistory: boolean) => Promise<void>;\n    destory: () => void;\n    createSendMsg: (inputs: any, inputKey?: string) => void;\n    createWsMsg: (data: any) => void;\n    updateCurrentMessage: (wsdata: any, cover: boolean) => void;\n    changeChatId: (chatId: string) => void;\n    startNewRound: (str: string) => void;\n    insetSeparator: (text: string) => void;\n    insetSystemMsg: (text: string) => void;\n    insetBsMsg: (text: string) => void;\n    setShowGuideQuestion: (text: boolean) => void;\n    clearMsgs: () => void;\n}\n\n\nconst handleHistoryMsg = (data: any[]): ChatMessageType[] => {\n    const correctedJsonString = (str: string) => str\n        // .replace(/\\\\([\\s\\S])|(`)/g, '\\\\\\\\$1$2') // 转义反斜线和反引号\n        .replace(/\\n/g, '\\\\n')                  // 转义换行符\n        .replace(/\\r/g, '\\\\r')                  // 转义回车符\n        .replace(/\\t/g, '\\\\t')                  // 转义制表符\n        .replace(/'/g, '\"');                    // 将单引号替换为双引号\n    const newData = data.filter(item =>\n        ['answer', 'question', 'processing', 'system', 'report', 'tool', 'knowledge', 'divider', 'flow', 'reasoning_answer'].includes(item.category)\n    )\n    return newData.map(item => {\n        // let count = 0\n        let { message, files, is_bot, intermediate_steps, ...other } = item\n        try {\n            message = message && message[0] === '{' ? JSON.parse(message) : message || ''\n        } catch (e) {\n            // 未考虑的情况暂不处理\n            console.error('消息 to JSON error :>> ', e);\n        }\n\n        // hack\n        let chatKey = undefined\n        if (typeof message !== 'string') {\n            // 优先 input\n            if ('input' in message) {\n                chatKey = 'input'\n            } else {\n                chatKey = Object.keys(message)[0]\n            }\n        }\n\n        return {\n            ...other,\n            chatKey,\n            end: true,\n            files: files ? JSON.parse(files) : [],\n            isSend: !is_bot,\n            message,\n            thought: intermediate_steps,\n            noAccess: true\n        }\n    })\n}\n\nlet currentChatId = ''\nconst runLogsTypes = ['tool', 'flow', 'knowledge']\nexport const useMessageStore = create<State & Actions>((set, get) => ({\n    running: false,\n    chatId: '',\n    messages: [],\n    hisMessages: [],\n    historyEnd: false,\n    showGuideQuestion: false,\n    setShowGuideQuestion(bln: boolean) {\n        set({ showGuideQuestion: bln })\n    },\n    async loadHistoryMsg(flowid, chatId, { appendHistory, lastMsg }) {\n        const res = await getChatHistory(flowid, chatId, 30, 0)\n        const msgs = handleHistoryMsg(res)\n        currentChatId = chatId\n        const hisMessages = appendHistory ? [] : msgs.reverse()\n        if (hisMessages.length) {\n            hisMessages.push({\n                ...bsMsgItem,\n                id: Math.random() * 1000000,\n                category: 'divider',\n                message: lastMsg,\n            })\n        }\n        set({\n            historyEnd: false,\n            messages: appendHistory ? msgs.reverse() : [],\n            hisMessages\n        })\n    },\n    async loadMoreHistoryMsg(flowid, appendHistory) {\n        if (get().running) return // 会话进行中禁止加载more历史\n        if (get().historyEnd) return // 没有更多历史纪录\n        const chatId = get().chatId\n        const prevMsgs = get().messages\n        // 最后一条消息id不存在，忽略 loadmore\n        if (!prevMsgs[0]?.id) return\n        const res = await getChatHistory(flowid, chatId, 10, prevMsgs[0]?.id || 0)\n        // 过滤非同一会话消息\n        if (res[0]?.chat_id !== currentChatId) {\n            return console.warn('loadMoreHistoryMsg chatId not match, ignore')\n        }\n        const msgs = handleHistoryMsg(res)\n        if (msgs.length) {\n            set({ [appendHistory ? 'messages' : 'hisMessages']: [...msgs.reverse(), ...prevMsgs] })\n        } else {\n            set({ historyEnd: true })\n        }\n    },\n    clearMsgs() {\n        setTimeout(() => {\n            set({ hisMessages: [], messages: [], historyEnd: true })\n        }, 0);\n    },\n    destory() {\n        set({ chatId: '', messages: [] })\n    },\n    createSendMsg(inputs, inputKey) {\n        console.log('change createSendMsg', inputs, inputKey);\n\n        set((state) => ({\n            messages:\n                [...state.messages, {\n                    isSend: true,\n                    message: inputs,\n                    chatKey: inputKey,\n                    thought: '',\n                    category: '',\n                    files: [],\n                    end: false,\n                    user_name: \"\",\n                    create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n                }]\n        }))\n    },\n    // start\n    createWsMsg(data) {\n        console.log('change createWsMsg');\n        set((state) => {\n            let newChat = cloneDeep(state.messages);\n            newChat.push({\n                isSend: false,\n                message: runLogsTypes.includes(data.category) ? JSON.parse(data.message) : '',\n                chatKey: '',\n                thought: data.intermediate_steps || '',\n                category: data.category || '',\n                files: [],\n                end: false,\n                user_name: '',\n                extra: data.extra,\n                reasoning_log: ''\n            })\n            return { messages: newChat }\n        })\n    },\n    // stream end\n    updateCurrentMessage(wsdata, cover = false) {\n        // console.log( wsdata.chat_id, get().chatId);\n        // if (wsdata.end) {\n        //     debugger\n        // }\n        console.log('change updateCurrentMessage');\n        const messages = get().messages\n        const isRunLog = runLogsTypes.includes(wsdata.category);\n        // run log类型存在嵌套情况，使用 extra 匹配 currentMessage; 否则取最近\n        let currentMessageIndex = 0\n        for (let i = messages.length - 1; i >= 0; i--) {\n            if (messages[i].isSend) break;\n            if (isRunLog && messages[i].extra === wsdata.extra) {\n                currentMessageIndex = i;\n                break;\n            } else if (!isRunLog && !runLogsTypes.includes(messages[i].category)) {\n                currentMessageIndex = i;\n                break;\n            } else if (wsdata.type === 'end_cover' && messages[i].category === 'tool') {\n                currentMessageIndex = i;\n                break;\n            }\n        }\n        const currentMessage = messages[currentMessageIndex]\n        if (!currentMessage) return\n        // deepseek\n        let message = ''\n        let reasoning_log = currentMessage.reasoning_log\n        if (isRunLog) {\n            message = JSON.parse(wsdata.message)\n        } else if (typeof wsdata.message !== 'string' && wsdata.message && 'reasoning_content' in wsdata.message) {\n            message = currentMessage.message + (wsdata.message.content || '')\n            reasoning_log += (wsdata.message.reasoning_content || '')\n        } else {\n            message = currentMessage.message + (wsdata.message || '')\n        }\n\n        // 敏感词特殊处理\n        if (wsdata.type === 'end_cover' && wsdata.category === 'tool') {\n            messages.forEach((msg) => {\n                msg.end = true // 闭合所有会话\n            })\n            cover = false\n        }\n        const newCurrentMessage = {\n            ...currentMessage,\n            ...wsdata,\n            id: currentMessage.id || (isRunLog ? wsdata.extra : wsdata.messageId), // 每条消息必唯一\n            message,\n            reasoning_log,\n            thought: currentMessage.thought + (wsdata.thought ? `${wsdata.thought}\\n` : ''),\n            files: wsdata.files || [],\n            category: wsdata.category || '',\n            source: wsdata.source\n        }\n        // 无id补上（如文件解析完成消息，后端无返回messageid）\n        if (!newCurrentMessage.id) {\n            newCurrentMessage.id = Math.random() * 1000000\n            // console.log('msg:', newCurrentMessage);\n        }\n\n        messages[currentMessageIndex] = newCurrentMessage\n        // 会话特殊处理，兼容后端的缺陷\n        if (!isRunLog) {\n            // start - end 之间没有内容删除load\n            if (newCurrentMessage.end && !(newCurrentMessage.files.length || newCurrentMessage.thought || newCurrentMessage.message)) {\n                messages.pop()\n            }\n            // 无 messageid 删除\n            // if (newCurrentMessage.end && !newCurrentMessage.id) {\n            //     messages.pop()\n            // }\n            // 删除重复消息\n            const prevMessage = messages[currentMessageIndex - 1];\n\n            // hack \n            if (wsdata.type === 'end_cover' && !prevMessage.isSend) {\n                cover = true\n            }\n\n            // 有思考不覆盖 只覆盖message,保留思考\n            if (prevMessage?.reasoning_log) {\n                if ((prevMessage\n                    && prevMessage.message === newCurrentMessage.message\n                    && prevMessage.thought === newCurrentMessage.thought)\n                    || cover) {\n                    const removedMsg = messages.pop()\n                    prevMessage.message = removedMsg.message\n                }\n            } else {\n                if ((prevMessage\n                    && prevMessage.message === newCurrentMessage.message\n                    && prevMessage.thought === newCurrentMessage.thought)\n                    || cover) {\n                    const removedMsg = messages.pop()\n                    // 使用最后一条的信息作为准确信息\n                    Object.keys(prevMessage).forEach((key) => {\n                        prevMessage[key] = removedMsg[key]\n                    })\n                }\n            }\n\n        }\n        set((state) => ({ messages: [...messages] }))\n    },\n    changeChatId(chatId) {\n        set((state) => ({ chatId }))\n    },\n    startNewRound(str) {\n        get().insetSeparator(str)\n        set((state) => ({ showGuideQuestion: true }))\n    },\n    insetSeparator(text) {\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                id: Math.random() * 1000000,\n                category: 'divider',\n                message: text,\n            }]\n        }))\n    },\n    insetSystemMsg(text) {\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                id: Math.random() * 1000000,\n                category: 'guide',\n                thought: text,\n            }]\n        }))\n    },\n    insetBsMsg(text) {\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                id: 0,\n                category: 'guide',\n                thought: '',\n                message: text\n            }]\n        }))\n    }\n}))\n\n\nconst bsMsgItem = {\n    id: Math.random() * 1000000,\n    isSend: false,\n    message: '',\n    chatKey: '',\n    thought: '',\n    category: '',\n    files: [],\n    end: true,\n    user_name: ''\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/filterTableDataComponent/FilterByApp.tsx",
    "content": "import { MultiSelect } from \"@/components/bs-ui/multiSelect.tsx\";\nimport { getGroupsApi } from \"@/controllers/API/log\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface AppOption {\n    label: string;\n    value: string;\n    placeholder?: string;\n}\n\nexport default function FilterByApp({ value, placeholder = 'App Name', onChange }) {\n    const { apps, loadApps, searchApps, loadMoreApps } = useApps();\n\n    useEffect(() => {\n        loadApps(\"\");\n    }, [])\n\n    return (\n        <div className=\"w-[200px] relative\">\n            <MultiSelect\n                multiple\n                value={value}\n                options={apps}\n                onValueChange={onChange}\n                hasMore\n                onSearch={searchApps}\n                onLoadMore={loadMoreApps}\n                contentClassName=\"max-w-[320px]\"\n                placeholder={placeholder}\n            />\n        </div>\n    );\n}\n\n/**\n * 自定义 Hook：用于管理应用列表的数据加载逻辑\n */\nconst useApps = () => {\n    const [apps, setApps] = useState<AppOption[]>([]); // 应用列表数据\n    const pageRef = useRef(1); // 当前页码\n    const hasMoreRef = useRef(true); // 是否还有更多数据\n    const loadLock = useRef(false); // 加载锁，防止重复请求\n    const keywordRef = useRef(\"\"); // 当前搜索关键词\n    const abortControllerRef = useRef<AbortController>(); // 用于取消请求\n\n    /**\n     * 将 API 返回的数据映射为选项格式\n     */\n    const mapApiData = (data: any[]): AppOption[] =>\n        data.map((item) => ({ label: item.name, value: item.id }));\n\n    /**\n     * 发起 API 请求获取数据\n     */\n    const fetchData = async (params: {\n        keyword: string;\n        page: number;\n        pageSize: number;\n    }) => {\n        // 取消之前的请求\n        abortControllerRef.current?.abort();\n        abortControllerRef.current = new AbortController();\n\n        try {\n            const res = await getGroupsApi(\n                {\n                    keyword: params.keyword,\n                    page: params.page,\n                    page_size: params.pageSize,\n                },\n                { signal: abortControllerRef.current.signal } // 绑定 AbortController\n            );\n            return res.data;\n        } catch (error) {\n            if (error.name === \"AbortError\") return []; // 忽略取消请求的错误\n            throw error; // 抛出其他错误\n        }\n    };\n\n    /**\n     * 加载应用列表（初始加载或搜索）\n     */\n    const loadApps = useCallback(async (keyword: string) => {\n        if (loadLock.current) return; // 如果正在加载，则直接返回\n\n        loadLock.current = true; // 加锁\n        keywordRef.current = keyword; // 更新搜索关键词\n\n        try {\n            const data = await fetchData({\n                keyword,\n                page: 1,\n                pageSize: 10,\n            });\n\n            setApps(mapApiData(data)); // 更新应用列表\n            pageRef.current = 1; // 重置页码\n            hasMoreRef.current = data.length === 10; // 判断是否还有更多数据\n        } catch (error) {\n            console.error(\"加载应用列表失败:\", error);\n        } finally {\n            loadLock.current = false; // 解锁\n        }\n    }, []);\n\n    /**\n     * 加载更多应用（滚动加载）\n     */\n    const loadMoreApps = useCallback(async () => {\n        if (!hasMoreRef.current || loadLock.current) return; // 如果没有更多数据或正在加载，则直接返回\n\n        loadLock.current = true; // 加锁\n\n        try {\n            const nextPage = pageRef.current + 1;\n            const data = await fetchData({\n                keyword: keywordRef.current,\n                page: nextPage,\n                pageSize: 10,\n            });\n\n            setApps((prev) => [...prev, ...mapApiData(data)]); // 追加新数据\n            pageRef.current = nextPage; // 更新页码\n            hasMoreRef.current = data.length === 10; // 判断是否还有更多数据\n        } catch (error) {\n            console.error(\"加载更多应用失败:\", error);\n        } finally {\n            loadLock.current = false; // 解锁\n        }\n    }, []);\n\n    /**\n     * 组件卸载时取消未完成的请求\n     */\n    useEffect(() => {\n        return () => abortControllerRef.current?.abort();\n    }, []);\n\n    return { apps, loadApps, searchApps: loadApps, loadMoreApps };\n};"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/filterTableDataComponent/FilterByDate.tsx",
    "content": "import { DatePicker } from \"@/components/bs-ui/calendar/datePicker\";\nimport { useCallback } from \"react\";\n\ninterface DateFilterProps {\n    value?: [Date | null, Date | null];\n    onChange: (value: [Date | null, Date | null]) => void;\n    placeholders?: [string, string];\n}\n\nexport default function FilterByDate({ value = [null, null], placeholders = ['Start Date', 'End Date'], onChange }: DateFilterProps) {\n    const [startDate, endDate] = value;\n\n    /**\n     * 处理日期变化，自动调整关联日期\n     * startDate 不能晚于 endDate\n     * endDate 不能早于 startDate\n     */\n    const handleDateChange = useCallback(\n        (type: \"start\" | \"end\", date: Date | null) => {\n            const newDates: [Date | null, Date | null] = [...value];\n\n            if (type === \"start\") {\n                newDates[0] = date;\n                // 如果新开始日期晚于当前结束日期，则清空结束日期\n                if (date && endDate && date > endDate) {\n                    newDates[1] = null;\n                }\n            } else {\n                newDates[1] = date;\n                // 如果新结束日期早于当前开始日期，则清空开始日期\n                if (date && startDate && date < startDate) {\n                    newDates[0] = null;\n                }\n            }\n\n            onChange(newDates);\n        },\n        [value, startDate, endDate, onChange]\n    );\n\n    return (\n        <div className=\"flex gap-2 flex-wrap\">\n            <div className=\"w-[180px] relative\">\n                <DatePicker\n                    value={startDate}\n                    placeholder={placeholders[0]}\n                    onChange={(v) => handleDateChange(\"start\", v)}\n                />\n            </div>\n            <div className=\"w-[180px] relative\">\n                <DatePicker\n                    value={endDate}\n                    placeholder={placeholders[1]}\n                    onChange={(v) => handleDateChange(\"end\", v)}\n                />\n            </div>\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/filterTableDataComponent/FilterByUser.tsx",
    "content": "import MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { getUsersApi } from \"@/controllers/API/user\";\nimport { debounce } from \"lodash\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface UserOption {\n    label: string;\n    value: string;\n    placeholder?: string;\n}\n\nexport default function FilterByUser({ value, placeholder = 'Username', onChange }) {\n    const { users, loadUsers, searchUser, loadMoreUsers } = useUsers();\n\n    return (\n        <div className=\"w-[200px] relative\">\n            <MultiSelect\n                contentClassName=\"overflow-y-auto max-w-[200px]\"\n                options={users}\n                value={value}\n                placeholder={placeholder}\n                onLoad={() => loadUsers(\"\")}\n                onSearch={searchUser}\n                onScrollLoad={loadMoreUsers}\n                onChange={onChange}\n            />\n        </div>\n    );\n}\n\nconst useUsers = () => {\n    const [users, setUsers] = useState<UserOption[]>([]);\n    const pageRef = useRef(1);\n    const hasMoreRef = useRef(true);\n    const loadLock = useRef(false);\n    const keywordRef = useRef(\"\");\n    const abortControllerRef = useRef<AbortController>();\n\n    // 通用数据映射\n    const mapUserData = (data: any[]): UserOption[] =>\n        data.map(u => ({ label: u.user_name, value: u.user_id }));\n\n    // 统一请求处理\n    const fetchUsers = async (params: {\n        name: string;\n        page: number;\n        pageSize: number\n    }) => {\n        abortControllerRef.current?.abort();\n        abortControllerRef.current = new AbortController();\n\n        try {\n            const res = await getUsersApi(\n                {\n                    name: params.name,\n                    page: params.page,\n                    pageSize: params.pageSize\n                },\n                { signal: abortControllerRef.current.signal }\n            );\n            return res.data;\n        } catch (error) {\n            if (error.name === 'AbortError') return [];\n            throw error;\n        }\n    };\n\n    // 加载用户（初始/搜索）\n    const loadUsers = useCallback(async (name: string) => {\n        if (loadLock.current) return;\n\n        loadLock.current = true;\n        keywordRef.current = name;\n\n        try {\n            const data = await fetchUsers({\n                name,\n                page: 1,\n                pageSize: 20  // 统一分页大小\n            });\n\n            setUsers(mapUserData(data));\n            pageRef.current = 1;\n            hasMoreRef.current = data.length === 20;\n        } catch (error) {\n            console.error(\"用户加载失败:\", error);\n        } finally {\n            loadLock.current = false;\n        }\n    }, []);\n\n    // 滚动加载更多\n    const loadMoreUsers = useCallback(async () => {\n        if (!hasMoreRef.current || loadLock.current) return;\n\n        loadLock.current = true;\n\n        try {\n            const nextPage = pageRef.current + 1;\n            const data = await fetchUsers({\n                name: keywordRef.current,\n                page: nextPage,\n                pageSize: 20\n            });\n\n            setUsers(prev => [...prev, ...mapUserData(data)]);\n            pageRef.current = nextPage;\n            hasMoreRef.current = data.length === 20;\n        } catch (error) {\n            console.error(\"加载更多用户失败:\", error);\n        } finally {\n            loadLock.current = false;\n        }\n    }, []);\n\n    // 防抖搜索\n    const searchUser = useCallback(\n        debounce((name: string) => loadUsers(name), 500),\n        [loadUsers]\n    );\n\n    // 组件卸载时取消请求\n    useEffect(() => {\n        return () => abortControllerRef.current?.abort();\n    }, []);\n\n    return {\n        users,\n        loadUsers,\n        searchUser,\n        loadMoreUsers\n    };\n};"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/filterTableDataComponent/FilterByUsergroup.tsx",
    "content": "import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { getUserGroupsApi } from \"@/controllers/API/user\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface Group {\n    id: string;\n    group_name: string;\n    placeholder?: string;\n}\n\nexport default function FilterByUsergroup({ value, placeholder = '', onChange }) {\n    const { groups, loading } = useGroups();\n\n    return (\n        <div className=\"w-[200px] relative\">\n            <Select value={value} onValueChange={onChange} disabled={loading}>\n                <SelectTrigger className=\"w-[200px]\">\n                    {value ? (\n                        <span>{groups.find(g => g.id === value)?.group_name}</span>\n                    ) : (\n                        <SelectValue placeholder={placeholder} />\n                    )}\n                </SelectTrigger>\n                <SelectContent className=\"max-w-[200px] break-all\">\n                    <SelectGroup>\n                        {groups.map(g => (\n                            <SelectItem\n                                value={g.id}\n                                key={g.id}\n                                className=\"truncate max-w-[180px]\"\n                            >\n                                {g.group_name}\n                            </SelectItem>\n                        ))}\n                        {!loading && groups.length === 0 && (\n                            <div className=\"text-gray-400 text-sm px-2 py-1\">\n                                列表是空的\n                            </div>\n                        )}\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n        </div>\n    );\n};\n\nconst useGroups = () => {\n    const [groups, setGroups] = useState<Group[]>([]);\n    const [loading, setLoading] = useState(true);\n    const abortControllerRef = useRef<AbortController>();\n\n    const loadData = useCallback(async () => {\n        abortControllerRef.current?.abort();\n        abortControllerRef.current = new AbortController();\n\n        setLoading(true);\n        try {\n            const res = await getUserGroupsApi({\n                signal: abortControllerRef.current.signal\n            });\n            setGroups(res.records || []);\n        } catch (error) {\n            if (error.name !== 'AbortError') {\n                console.error('Failed to load user groups:', error);\n            }\n        } finally {\n            setLoading(false);\n        }\n    }, []);\n\n    useEffect(() => {\n        loadData();\n        return () => abortControllerRef.current?.abort();\n    }, [loadData]);\n\n    return { groups, loading, loadData };\n};"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/knowledgeUploadComponent/DropZone.tsx",
    "content": "import { message } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { UploadIcon } from \"lucide-react\";\nimport { useContext } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function DropZone({ onDrop }) {\n    const { t } = useTranslation()\n    const { appConfig } = useContext(locationContext)\n\n    // Define supported file formats (for display purposes only, not for filtering)\n    const supportedFormats = appConfig.enableEtl4lm\n        ? ['.PDF', '.TXT', '.DOCX', '.PPT', '.PPTX', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV', '.DOC', '.PNG', '.JPG', '.JPEG', '.BMP']\n        : ['.PDF', '.TXT', '.DOCX', '.DOC', '.PPT', '.PPTX', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV'];\n    const allowedExts = new Set(\n        supportedFormats.map(ext => ext.toLowerCase().replace('.', ''))\n    );\n    const { getRootProps, getInputProps } = useDropzone({\n        accept: {\n            'application/*': supportedFormats\n        },\n        useFsAccessApi: false,\n        onDrop: (acceptedFiles, disAcceptedFiles) => {\n            // Filter files that don't match the allowed formats\n            const validFiles = acceptedFiles.filter(file => {\n                // Get file extension (if no extension, consider invalid)\n                const ext = file.name.split('.').pop()?.toLowerCase();\n                return ext ? allowedExts.has(ext) : false;\n            });\n\n            if (disAcceptedFiles.length > 0) {\n                // @ts-ignore\n                const uniqueExtensions = [...new Set(\n                    disAcceptedFiles\n                        .map(f => f.file.name.split('.').pop()?.toLowerCase())\n                        .filter(Boolean)\n                )];\n                message({\n                    title: t('prompt'),\n                    description: t('unsupportedFileType', { extensions: uniqueExtensions.join(', ') }),\n                    variant: 'error'\n                });\n            }\n\n            // Only pass valid files to parent component\n            if (validFiles.length > 0) {\n                onDrop(validFiles);\n            }\n        }\n    });\n\n    const formatText = appConfig.enableEtl4lm\n        ? t('supportedFormatsWithImages', { maxSize: appConfig.uploadFileMaxSize })\n        : t('supportedFormatsWithoutImages', { maxSize: appConfig.uploadFileMaxSize })\n\n    return (\n        <div {...getRootProps()} className=\"group h-48 border border-dashed rounded-md flex flex-col justify-center items-center cursor-pointer gap-3 hover:border-primary\">\n            <input {...getInputProps()} />\n            <UploadIcon className=\"group-hover:text-primary size-5\" />\n            <p className=\"text-sm\">{t('code.clickOrDragHere')}</p>\n            <p className=\"bisheng-label px-4 text-center\">{formatText}</p>\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/knowledgeUploadComponent/ProgressItem.tsx",
    "content": "import { FileIcon } from \"@/components/bs-icons/file\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { uploadFileApi } from \"@/controllers/API\";\nimport { cn } from \"@/util/utils\";\nimport { CheckCircle2Icon, RefreshCw, RotateCw, XCircle } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Progress, ProgressStatus } from \".\";\n\nexport default function ProgressItem({ analysis = false, knowledgeId = '', item, onResulte, onDelete }: {\n    analysis: boolean,\n    item: Progress,\n    knowledgeId?: string,\n    onResulte?: (id: string, res: any) => void\n    onDelete?: (id: string) => void\n}) {\n    const [progress, setProgress] = useState(analysis ? 100 : 0)\n    const [retrying, setRetrying] = useState(false)\n    const abortControllerRef = useRef(null)\n\n    const uploadApi = async (item) => {\n        // 如果已有未完成的请求，先取消\n        if (abortControllerRef.current) {\n            abortControllerRef.current.abort();\n        }\n        uploadFileApi({\n            fileKey: 'file',\n            file: item.file,\n            knowledgeId,\n            onProgress: (progress) => {\n                setProgress(progress)\n            },\n            onFinish: (res) => {\n                console.log('上传结果 :>> ', item.fileName, res);\n                setProgress(100)\n                onResulte(item.id, {\n                    id: item.id,\n                    fileName: item.fileName,\n                    file_path: res.file_path,\n                    repeat: res.repeat,\n                    time: res.repeat_update_time\n                })\n                setRetrying(false)\n            },\n            onFail: (err) => {\n                console.log('上传失败 :>> ', item.fileName);\n                setProgress(100)\n                onResulte(item.id, {\n                    id: item.id,\n                    fileName: item.fileName,\n                    file_path: '',\n                    repeat: false,\n                    time: ''\n                })\n                setRetrying(false)\n            },\n            onAbort: (abort) => {\n                abortControllerRef.current = abort\n            }\n        })\n    }\n\n    useEffect(() => {\n        if (item.progress === ProgressStatus.Uploading) {\n            console.log('开始上传 :>> ', item.fileName, item.id);\n            uploadApi(item)\n        }\n    }, [item.progress])\n\n    const extension = useMemo(() => {\n        return item.fileName.split('.').pop().toLowerCase() || 'txt';\n    }, [item.fileName])\n\n    const handleCancel = () => {\n        if (abortControllerRef.current) {\n            console.log('取消上传 :>> ', item.id);\n            abortControllerRef.current.abort();\n        }\n        onDelete(item.id)\n    }\n\n    const analysisStatusIcon = (item) => {\n        if (!analysis) return\n        if (item.progress === ProgressStatus.Await) {\n            return <RotateCw size={18} className=\" text-primary animate-spin\" />\n        } else if (item.reason) {\n            return <QuestionTooltip error content={item.reason} />\n        } else {\n            return <CheckCircle2Icon size={18} className=\" text-primary\" />\n        }\n    }\n\n    return (\n        <div className={cn(\n            \"border border-primary/20 rounded-xl cursor-pointer hover:border-primary/80 hover:shadow-lg relative overflow-hidden\",\n            // { \"border-[#A8A8A8]/40\": item.error && !retrying },\n            { \"border-red-500\": item.reason },\n            { \"hover:border-red-500\": item.error && !retrying }\n        )}>\n            <div className={cn(\n                \"absolute h-full\",\n                {\n                    \"bg-primary/20\": (!item.error || retrying) && progress !== 100,\n                    \"animate-pulse\": progress !== 100 && !item.error,\n                    \"bg-red-500/10\": item.reason || (item.error && !retrying)\n                }\n            )} style={{ width: `${progress}%` }}></div>\n            <div className=\"group flex gap-2 p-2 items-center relative z-10\">\n                <FileIcon type={extension} className=\"size-[30px] min-w-[30px]\" />\n                <div className=\"progress-item__title flex-grow min-w-0\">\n                    <span className=\"progress-item__title__name truncate block w-full pr-4\">{item.fileName}</span>\n                </div>\n                <div className=\"ml-auto flex opacity-0 group-hover:opacity-100\">\n                    {item.error && !analysis &&\n                        <Button\n                            size=\"icon\"\n                            className=\"size-8\"\n                            variant=\"ghost\"\n                            onClick={() => {\n                                uploadApi(item);\n                                setRetrying(true);\n                            }}\n                        ><RefreshCw size={16} /></Button>\n                    }\n                    {onDelete && <Button\n                        size=\"icon\"\n                        className=\"size-8\"\n                        variant=\"ghost\"\n                        onClick={handleCancel}\n                    ><XCircle size={16} /></Button>}\n                </div>\n                {analysisStatusIcon(item)}\n            </div>\n        </div>\n    )\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/knowledgeUploadComponent/index.tsx",
    "content": "import { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { cname, generateUUID } from \"@/components/bs-ui/utils\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport DropZone from \"./DropZone\";\nimport ProgressItem from \"./ProgressItem\";\n\nexport interface Progress {\n    id: string,\n    file: File,\n    fileName: string,\n    progress: ProgressStatus,\n    error: boolean\n}\n\nexport const enum ProgressStatus {\n    Await = 'await',\n    Uploading = 'uploading',\n    End = 'end'\n}\n\nconst KnowledgeUploadComponent = ({\n    size = 50,\n    progressClassName = '',\n    knowledgeId,\n    onFileChange,\n    onSelectFile,\n    initialFiles = []\n}) => {\n    const { t } = useTranslation()\n    const { message } = useToast()\n\n    const [progressList, setProgressList] = useState<Progress[]>([])\n    const progressCountRef = useRef(0) // 文件总数\n    const { appConfig } = useContext(locationContext)\n\n    const successFilesRef = useRef([]) // 记录上传成功的文件\n    const failFilesRef = useRef([]) // 记录上传失败的文件\n    // 上传任务调度(追加,)\n    useEffect(() => {\n        onSelectFile(progressList.length)\n        if (progressList.length === 0) return\n\n        const MaximumTask = 6 // 最大并发\n        const [uploadingList, awaitingList] = progressList.reduce(([uploading, awaitList], pros) => {\n            if (pros.progress === ProgressStatus.Await) {\n                return [uploading, [...awaitList, pros]]\n            } else if (pros.progress === ProgressStatus.Uploading) {\n                return [[...uploading, pros], awaitList]\n            }\n            return [uploading, awaitList]\n        }, [[], []])\n\n        if (awaitingList.length === 0 && uploadingList.length === 0) {\n            console.log('所有文件上传完成 :>> ');\n            onFileChange(successFilesRef.current, failFilesRef.current)\n        } else if (awaitingList.length > 0 && uploadingList.length < MaximumTask) {\n            let runCount = 0\n            setProgressList((oldState) => {\n                return oldState.map((pros) => {\n                    if (pros.progress === ProgressStatus.Await && runCount++ < MaximumTask - uploadingList.length) {\n                        console.log('开启上传任务 +1 :>> ', pros.id);\n                        return {\n                            ...pros,\n                            progress: ProgressStatus.Uploading\n                        }\n                    } else {\n                        return pros\n                    }\n                })\n            })\n        }\n    }, [progressList])\n\n    // beforeupload\n    const handleDrop = (acceptedFiles) => {\n        const sizeLimit = appConfig.uploadFileMaxSize * 1024 * 1024;\n\n        const [bigFiles, files] = acceptedFiles.reduce(\n            ([big, small], file) => {\n                if (progressList.some(pros => pros.fileName === file.name)) return [big, small];\n                // 大小校验\n                return file.size < sizeLimit\n                    ? [big, [...small, file]] // 合法文件\n                    : [[...big, file.name], small]; // 超大小文件\n            },\n            [[], [], []]\n        );\n\n\n        if (bigFiles.length > 0) {\n            message({\n                title: t('prompt'),\n                description: bigFiles.map(str => `${t('code.file')}: ${str} ${t('code.sizeExceedsLimit', { size: appConfig.uploadFileMaxSize + 'MB' })}`).join('；'),\n                variant: 'error'\n            });\n        }\n        if (!files?.length) return\n        setProgressList((list) => {\n            return [...list, ...files.map(file => {\n                return {\n                    id: generateUUID(6),\n                    file,\n                    fileName: file.name,\n                    progress: ProgressStatus.Await,\n                    error: false\n                }\n            })];\n        });\n        progressCountRef.current += files.length;\n    }\n\n    const handleUploadResult = (id: string, result: any) => {\n        console.log('上传完成+1 :>> ', id);\n        setProgressList((list) => list.map((pros) => (\n            pros.id === id ? {\n                ...pros,\n                progress: ProgressStatus.End,\n                error: !result.file_path\n            } : pros\n        )))\n\n        // 临时去重方式\n        successFilesRef.current = successFilesRef.current.filter((pros) => pros.id !== id)\n        failFilesRef.current = failFilesRef.current.filter((pros) => pros.id !== id)\n\n        result.file_path\n            ? successFilesRef.current.push(result)\n            : failFilesRef.current.push(result)\n    }\n\n    const handleDelete = (id: string) => {\n        successFilesRef.current = successFilesRef.current.filter((pros) => pros.id !== id)\n        failFilesRef.current = failFilesRef.current.filter((pros) => pros.id !== id)\n        setProgressList((list) => list.filter((pros) => pros.id !== id))\n    }\n    useEffect(() => {\n        if (initialFiles.length > 0) {\n            // 将初始文件转换为组件需要的Progress格式\n            const initialProgress = initialFiles.map(file => ({\n                id: file.id || generateUUID(6), // 用现有ID或生成新ID\n                fileName: file.fileName,\n                // 模拟已完成状态（无实际File对象，因为是回显）\n                progress: ProgressStatus.End,\n                error: false,\n                // 保留原始文件数据\n                fileData: file\n            }));\n\n            // 添加到进度列表\n            setProgressList(initialProgress);\n            // 更新计数和成功文件列表\n            progressCountRef.current = initialFiles.length;\n            successFilesRef.current = initialFiles;\n            // 通知父组件\n            onSelectFile(initialFiles.length);\n            onFileChange(initialFiles, []);\n        }\n    }, [initialFiles]);\n\n    return <div className=\"\">\n        <DropZone onDrop={handleDrop} />\n        <div className={cname('overflow-y-auto mt-4 space-y-2', progressClassName)}>\n            {progressList.map((pros) =>\n                <ProgressItem\n                    key={pros.id}\n                    knowledgeId={knowledgeId}\n                    item={{\n                        ...pros,\n                        // 优先使用fileData（回显文件），其次用原始file（新上传文件）\n                        displayFile: pros.fileData || pros.file\n                    }}\n                    onResulte={handleUploadResult}\n                    onDelete={handleDelete}\n                />\n            )}\n        </div>\n    </div>\n};\n\nexport default KnowledgeUploadComponent"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/loadMore/index.tsx",
    "content": "import { useEffect, useRef } from \"react\";\n\nexport default function LoadMore({ onScrollLoad }) {\n    // scroll load\n    const footerRef = useRef<HTMLDivElement>(null)\n    useEffect(function () {\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting) {\n                    onScrollLoad()\n                }\n            });\n        }, {\n            // root: null, // 视口\n            rootMargin: '0px', // 视口的边距\n            threshold: 0.1 // 目标元素超过视口的10%即触发回调\n        });\n\n        observer.observe(footerRef.current);\n        return () => footerRef.current && observer.unobserve(footerRef.current);\n    }, [])\n\n    return <div ref={footerRef} style={{ height: 20 }}></div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/selectComponent/LabelSelect.tsx",
    "content": "import { TrashIcon } from \"@/components/bs-icons\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Input, SearchInput } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { userContext } from \"@/contexts/userContext\";\nimport {\n    createLabelApi,\n    createLinkApi,\n    deleteLabelApi,\n    deleteLinkApi,\n    updateLabelApi\n} from \"@/controllers/API/label\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { Plus, SquarePen } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport enum UPDATETYPE {\n    DELETELINK = 'deleteLink',\n    CREATELINK = 'createLink',\n    UPDATENAME = 'updateName',\n    CREATELABEL = 'createLabel',\n    DELETELABEL = 'deleteLabel'\n}\n\nexport default function LabelSelect({ labels, all, children, resource, onUpdate }) {\n    const [open, setOpen] = useState(false)\n    const [data, setData] = useState([])\n    const { user } = useContext(userContext)\n    const dataRef = useRef([])\n    const { message } = useToast()\n    const { t } = useTranslation()\n\n    useEffect(() => {\n        const newData = all.map(d => {\n            if (dataRef.current.length) {\n                // change name\n                const oldItem = dataRef.current.find(l => l.value === d.value)\n                return d ? { ...oldItem, label: d.label, value: d.value } : oldItem\n            }\n            const res = labels.find(l => l.value === d.value)\n            return res ? { ...d, selected: true } : d\n        })\n        dataRef.current = newData\n        setData(newData)\n    }, [all])\n\n    const handleEdit = (id) => {\n        setData(pre => pre.map(d => ({ ...d, edit: d.value === id })))\n    }\n\n    const handleChecked = (id) => {\n        const type = resource.type === 5 ? 3 : resource.type === 1 ? 2 : 5\n        setData(pre => {\n            const newData = pre.map(d => d.value === id ? { ...d, selected: !d.selected } : d)\n            const cur = newData.find(d => d.value === id)\n            captureAndAlertRequestErrorHoc(\n                (cur.selected ? createLinkApi(id, resource.id, type) : deleteLinkApi(id, resource.id, type)).then(() => {\n                    onUpdate({\n                        type: cur.selected ? UPDATETYPE.CREATELINK : UPDATETYPE.DELETELINK,\n                        data: cur\n                    })\n                })\n            )\n            return newData\n        })\n    }\n\n    const nameRef = useRef('')\n    const handleChange = (e, id) => {\n        nameRef.current = id ? dataRef.current.find(d => d.value === id).label : ''\n        setData(pre => pre.map(d => d.value === id ? { ...d, label: e.target.value } : d))\n    }\n\n    const errorRestName = (preName, id) => { //错误发生回退初值\n        preName\n            ? setData(pre => pre.map(d => d.value === id ? { ...d, label: nameRef.current } : d))\n            : setData(pre => pre.filter(d => d.value))\n    }\n\n    const handleSave = async (e, id) => {\n        if (e.key === 'Enter') {\n            setData(pre => pre.map(d => d.value === id ? { ...d, edit: false } : d))\n            const label = data.find(d => d.value === id)\n            if (label.label.length > 10) {\n                errorRestName(nameRef.current, id)\n                return message({ title: t('prompt'), variant: 'warning', description: t('tag.labelMaxLength') })\n            }\n            const err = await captureAndAlertRequestErrorHoc(updateLabelApi(id, label.label).then((res: any) => {\n                setData(pre => {\n                    const newData = pre.map(d => d.value ? d : { ...d, label: res.name, value: res.id })\n                    dataRef.current = newData\n                    return newData\n                })\n                onUpdate({\n                    type: UPDATETYPE.UPDATENAME,\n                    data: label\n                })\n                return message({ title: t('prompt'), variant: 'success', description: id ? t('updateSuccess') : t('createSuccess') })\n            }))\n            if (!err) {\n                errorRestName(nameRef.current, id)\n            }\n        }\n    }\n\n    const handleDelete = (label) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('tag.confirmDeleteLabel', { label: label.label }),\n            okTxt: t('confirm'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteLabelApi(label.value).then(() => {\n                    onUpdate({\n                        type: UPDATETYPE.DELETELABEL,\n                        data: label\n                    })\n                    message({ title: t('prompt'), variant: 'success', description: t('deleteSuccess') })\n                }))\n                next()\n            }\n        })\n    }\n\n    const handleOpenChange = (b) => { // 可用于整体保存\n        setOpen(b)\n        setData(pre => pre.map(d => ({ ...d, edit: false })))\n    }\n\n    const [keyword, setKeyword] = useState('')\n    const handleSearch = (e) => {\n        const key = e.target.value\n        setKeyword(key)\n        const newData = dataRef.current.filter(d => d.label.toUpperCase().includes(key.toUpperCase()))\n        setData(newData)\n    }\n\n    const handleAdd = () => {\n        if (keyword.length > 10) {\n            return message({ title: t('prompt'), variant: 'warning', description: t('tag.labelMaxLength') })\n        }\n        createLabelApi(keyword).then((res: any) => {\n            const addItem = { label: res.name, value: res.id, edit: false, selected: false }\n            dataRef.current = [addItem, ...dataRef.current]\n            setData([addItem])\n            onUpdate({\n                type: UPDATETYPE.CREATELABEL,\n                data: addItem\n            })\n        })\n    }\n\n    const showAdd = useMemo(() => {\n        if (data.length === 1 && data[0].label === keyword) {\n            return false\n        }\n        return true\n    }, [data])\n\n    return <Popover open={open} onOpenChange={handleOpenChange}>\n        <PopoverTrigger asChild>\n            {children}\n        </PopoverTrigger>\n        <PopoverContent className=\"z-[20]\" onClick={(e) => e.stopPropagation()}>\n            <div>\n                <SearchInput placeholder={t('chat.searchLabels')} value={keyword} onChange={handleSearch} className=\"w-[240px]\"\n                    onKeyDown={(e) => {\n                        if (e.key === 'Enter') {\n                            (!data.length && user.role === 'admin') ? handleAdd() : null\n                        }\n                    }} />\n            </div>\n            <div className=\"mt-4 h-[200px] overflow-y-auto\">\n                {data.map(d => <div className=\"flex group justify-between h-8 rounded-sm px-2 hover:bg-[#EBF0FF] dark:hover:bg-gray-700\">\n                    <div className=\"flex place-items-center space-x-2\">\n                        <Checkbox id={d.value} checked={d.selected} onCheckedChange={() => handleChecked(d.value)} />\n                        {\n                            d.edit\n                                ? <Input autoFocus className=\"h-6\" type=\"text\" value={d.label || ''}\n                                    onChange={(e) => handleChange(e, d.value)}\n                                    onKeyDown={(e) => handleSave(e, d.value)} />\n                                : <Label htmlFor={d.value} className=\"cursor-pointer\">{d.label}</Label>\n                        }\n                    </div>\n                    {user.role === 'admin' && <div className=\"flex place-items-center gap-2 opacity-0 group-hover:opacity-100\">\n                        <SquarePen className=\"size-4 cursor-pointer text-muted-foreground\" onClick={() => handleEdit(d.value)} />\n                        <TrashIcon className=\"cursor-pointer text-muted-foreground\" onClick={() => handleDelete(d)} />\n                    </div>}\n                </div>)}\n                {(keyword && showAdd && user.role === 'admin') && <div onClick={handleAdd}\n                    className=\"flex group items-center h-8 rounded-sm bg-[#EBF0FF] dark:bg-gray-700 cursor-pointer\">\n                    <Plus className=\"mx-2 text-[#727C8F]\" />\n                    <span>{t('create')}”{keyword}”</span>\n                </div>}\n            </div>\n        </PopoverContent>\n    </Popover>\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/selectComponent/Users.tsx",
    "content": "import MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { getUsersApi } from \"@/controllers/API/user\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function UsersSelect({ multiple = false, lockedValues = [], value, disabled = false, onChange, children }:\n    { multiple?: boolean, lockedValues?: any[], value: any, disabled?: boolean, onChange: (a: any) => any, children?: (fun: any) => React.ReactNode }) {\n\n    const { t } = useTranslation()\n    const [options, setOptions] = useState<any>([]);\n    const originOptionsRef = useRef([])\n\n    const pageRef = useRef(1)\n    const reload = (page, name) => {\n        getUsersApi({ page, pageSize: 40, name }).then(res => {\n            pageRef.current = page\n            originOptionsRef.current = res.data\n            const opts = res.data.map(el => ({ label: el.user_name, value: el.user_id }))\n            setOptions(_ops => page > 1 ? [..._ops, ...opts] : opts)\n        })\n    }\n\n    useEffect(() => {\n        reload(1, '')\n    }, [])\n\n    // 加载更多\n    const loadMore = (name) => {\n        reload(pageRef.current + 1, name)\n    }\n\n    return <MultiSelect\n        contentClassName=\" max-w-[630px]\"\n        multiple={multiple}\n        value={value}\n        lockedValues={lockedValues}\n        disabled={disabled}\n        options={options}\n        placeholder={t('system.selectUser')}\n        searchPlaceholder={t('system.searchUser')}\n        onChange={onChange}\n        onLoad={() => reload(1, '')}\n        onSearch={(val) => reload(1, val)}\n        onScrollLoad={(val) => loadMore(val)}\n    >\n        {children?.(reload)}\n    </MultiSelect>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/selectComponent/knowledge.tsx",
    "content": "import MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { readFileLibDatabase } from \"@/controllers/API\";\nimport { memo, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst TabsHead = memo(({ onChange }) => {\n    const { t } = useTranslation()\n\n    return <Tabs defaultValue=\"file\" className=\"mb-2\" onValueChange={onChange}>\n        <TabsList className=\"grid w-full grid-cols-2 py-1 max-w-80\">\n            <TabsTrigger value=\"file\" className=\"text-xs\">{t('lib.fileData')}</TabsTrigger>\n            <TabsTrigger value=\"qa\" className=\"text-xs\">{t('lib.qaData')}</TabsTrigger>\n        </TabsList>\n    </Tabs>\n})\n\nconst enum KnowledgeType {\n    FILE = 'file',\n    QA = 'qa',\n    ALL = 'all'\n}\ntype KnowledgeTypeValues = `${KnowledgeType}`;\n\nexport default function KnowledgeSelect({\n    type = KnowledgeType.ALL,\n    multiple = false,\n    className = '',\n    value,\n    disabled = false,\n    onChange,\n    children\n}:\n    { type?: KnowledgeTypeValues, multiple?: boolean, className?: string, value: any, disabled?: boolean, onChange: (a: any) => any, children?: (fun: any) => React.ReactNode }) {\n\n    const { t } = useTranslation()\n    const [options, setOptions] = useState<any>([]);\n    const originOptionsRef = useRef([])\n\n    const pageRef = useRef(1)\n    const typeRef = useRef(type === 'qa' ? 1 : 0)\n    const reload = (page, name) => {\n        readFileLibDatabase({ page, pageSize: 60, name, type: typeRef.current }).then(res => {\n            pageRef.current = page\n            originOptionsRef.current = res.data\n            const opts = res.data.map(el => ({ label: el.name, value: el.id }))\n            setOptions(_ops => page > 1 ? [..._ops, ...opts] : opts)\n        })\n    }\n\n    useEffect(() => {\n        reload(1, '')\n    }, [])\n\n    // const handleChange = (res) => {\n    //     // id => obj\n    //     onChange(res.map(el => originOptionsRef.current.find(el2 => el2.id === el)))\n    // }\n\n    // 加载更多\n    const loadMore = (name) => {\n        reload(pageRef.current + 1, name)\n    }\n\n    const handleTabChange = (val) => {\n        typeRef.current = val === 'qa' ? 1 : 0\n        reload(1, '')\n        const inputDom = document.getElementById('knowledge-select')\n        if (inputDom) {\n            inputDom.value = ''\n        }\n    }\n\n    return <MultiSelect\n        id=\"knowledge-select\"\n        tabs={type === KnowledgeType.ALL ? <TabsHead onChange={handleTabChange} /> : null}\n        multiple={multiple}\n        className={className}\n        value={value}\n        disabled={disabled}\n        options={options}\n        placeholder={t('build.selectKnowledgeBase')}\n        searchPlaceholder={t('build.searchBaseName')}\n        onChange={onChange}\n        onLoad={() => {\n            typeRef.current = type === 'qa' ? 1 : 0\n            reload(1, '');\n        }}\n        onSearch={(val) => reload(1, val)}\n        onScrollLoad={(val) => loadMore(val)}\n    >\n        {children?.(reload)}\n    </MultiSelect>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/sheets/AppTempSheet.tsx",
    "content": "import { AbilitiesIcon, FlowIcon, HelperIcon } from \"@/components/bs-icons/app\";\nimport { readTempsDatabase } from \"@/controllers/API\";\nimport { AppType, AppTypeToNum } from \"@/types/app\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { SearchInput } from \"../../bs-ui/input\";\nimport { Sheet, SheetContent, SheetDescription, SheetTitle, SheetTrigger } from \"../../bs-ui/sheet\";\nimport CardComponent from \"../cardComponent\";\nimport AppAvator from \"../cardComponent/avatar\";\n\n/** 应用模板选择 */\nexport default function AppTempSheet({ children, onCustomCreate, onSelect }) {\n    const [open, setOpen] = useState(false)\n    const [type, setType] = useState<AppType>(AppType.FLOW)\n    const { t } = useTranslation('flow')\n    const createDesc = useMemo(() => {\n        const descs = {\n            [AppType.ASSISTANT]: {\n                title: t('customAssistant'),\n                desc: <>\n                    <p>{t('createAppWithNoCode')}</p>\n                    <p>{t('assistantCanUseSkillsAndTools')}</p>\n                </>\n            },\n            [AppType.FLOW]: {\n                title: t('customWorkflow'),\n                desc: t('simpleNodeOrchestration')\n            },\n            [AppType.SKILL]: {\n                title: t('customSkill'),\n                desc: t('richComponentsForBuildingApps')\n            }\n        }\n        return descs[type]\n    }, [type, t])\n\n    const [keyword, setKeyword] = useState(' ')\n    const allDataRef = useRef([])\n\n    useEffect(() => {\n        setKeyword(' ')\n        readTempsDatabase(type).then(res => {\n            allDataRef.current = res\n            setKeyword('')\n        })\n    }, [type])\n\n    const options = useMemo(() => {\n        return allDataRef.current.filter(el => el.name.toLowerCase().includes(keyword.toLowerCase()))\n    }, [keyword])\n\n    return <Sheet open={open} onOpenChange={setOpen}>\n        <SheetTrigger asChild>\n            {children}\n        </SheetTrigger>\n        <SheetContent className=\"sm:min-w-[966px] \">\n            <div className=\"app-sheet flex h-full\" onClick={e => e.stopPropagation()}>\n                <div className=\"w-fit p-6\">\n                    <SheetTitle>{t('appTemplate')}</SheetTitle>\n                    <SheetDescription>{t('chooseTemplateOrCreateBlank')}</SheetDescription>\n                    <SearchInput value={keyword} placeholder={t('search')} className=\"my-6\" onChange={(e) => setKeyword(e.target.value)} />\n                    {/* type */}\n                    <div className=\"mt-4\">\n                        <div\n                            className={`flex items-center gap-2 px-4 py-2 rounded-md cursor-pointer hover:bg-muted-foreground/10 transition-all duration-200 mb-2 ${type === AppType.FLOW && 'bg-muted-foreground/10'}`}\n                            onClick={() => setType(AppType.FLOW)}\n                        >\n                            <FlowIcon/>\n                            <span>{t('workflow')}</span>\n                        </div>\n                        <div\n                            className={`flex items-center gap-2 px-4 py-2 rounded-md cursor-pointer hover:bg-muted-foreground/10 transition-all duration-200 mb-2 ${type === AppType.ASSISTANT && 'bg-muted-foreground/10'}`}\n                            onClick={() => setType(AppType.ASSISTANT)}\n                        >\n                            <HelperIcon />\n                            <span>{t('assistant')}</span>\n                        </div>\n                        <div\n                            className={`flex items-center gap-2 px-4 py-2 rounded-md cursor-pointer hover:bg-muted-foreground/10 transition-all duration-200 mb-2 ${type === AppType.SKILL && 'bg-muted-foreground/10'}`}\n                            onClick={() => setType(AppType.SKILL)}\n                        >\n                            <AbilitiesIcon />\n                            <span>{t('skill')}</span>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"flex-1 min-w-[696px] bg-[#fff] dark:bg-[#030712] p-5 pt-12 h-full flex flex-wrap gap-1.5 overflow-y-auto scrollbar-hide content-start\">\n                    <CardComponent\n                        id={0}\n                        type=\"sheet\"\n                        data={null}\n                        title={createDesc.title}\n                        description={createDesc.desc}\n                        onClick={() => { onCustomCreate(type); setOpen(false) }}\n                    // onClick={() => navigate('/build/skill')}\n                    ></CardComponent>\n                    {\n                        options.map((flow, i) => (\n                            <CardComponent key={i}\n                                id={i + 1}\n                                data={flow}\n                                logo={<AppAvator id={flow.name} flowType={AppTypeToNum[type]} url={flow.logo} />}\n                                title={flow.name}\n                                description={flow.description}\n                                type=\"sheet\"\n                                footer={null}\n                                onClick={() => { onSelect(type, flow.id); setOpen(false) }}\n                            />\n                        ))\n                    }\n                </div>\n            </div>\n        </SheetContent>\n    </Sheet>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/sheets/SkillChatSheet.tsx",
    "content": "import { AssistantIcon, SkillIcon } from \"@/components/bs-icons\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { getChatOnlineApi } from \"@/controllers/API/assistant\";\nimport { useDebounce } from \"@/util/hook\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { SearchInput } from \"../../bs-ui/input\";\nimport { Sheet, SheetContent, SheetDescription, SheetTitle, SheetTrigger } from \"../../bs-ui/sheet\";\nimport CardComponent from \"../cardComponent\";\nimport LoadMore from \"../loadMore\";\nimport AppAvator from \"../cardComponent/avatar\";\n\nexport default function SkillChatSheet({ children, onSelect }) {\n    const [open, setOpen] = useState(false)\n    const { t } = useTranslation()\n    const navigate = useNavigate()\n\n    const pageRef = useRef(1)\n    const searchRef = useRef('')\n    const [options, setOptions] = useState<any>([])\n\n    const loadData = (more = false) => {\n        open && getChatOnlineApi(pageRef.current, searchRef.current).then(res => {\n            setOptions(opts => more ? [...opts, ...res] : res)\n        })\n    }\n    const debounceLoad = useDebounce(loadData, 600, false)\n\n    useEffect(() => {\n        pageRef.current = 1\n        searchRef.current = ''\n        loadData()\n    }, [open])\n\n    const handleSearch = (e) => {\n        pageRef.current = 1\n        searchRef.current = e.target.value\n        debounceLoad()\n    }\n\n    const handleLoadMore = () => {\n        pageRef.current++\n        loadData(true)\n    }\n\n    return <Sheet open={open} onOpenChange={setOpen}>\n        <SheetTrigger asChild>\n            {children}\n        </SheetTrigger>\n        <SheetContent className=\"sm:min-w-[966px]\">\n            <div className=\"flex h-full\" onClick={e => e.stopPropagation()}>\n                <div className=\"w-fit p-6\">\n                    <SheetTitle>{t('chat.dialogueSelection')}</SheetTitle>\n                    <SheetDescription>{t('chat.chooseSkillOrAssistant')}</SheetDescription>\n                    <SearchInput placeholder={t('chat.search')} className=\"my-6\" onChange={handleSearch} />\n                </div>\n                <div className=\"flex-1 min-w-[696px] bg-[#fff] dark:bg-[#030712] p-5 pt-12 h-full flex flex-wrap gap-1.5 overflow-y-auto scrollbar-hide content-start\">\n                    {\n                        options.length ? options.map((flow, i) => (\n                            <CardComponent key={i}\n                                id={i + 1}\n                                data={flow}\n                                logo={<AppAvator id={flow.name} flowType={flow.flow_type} url={flow.logo} />}\n                                title={flow.name}\n                                description={flow.desc}\n                                type=\"sheet\"\n                                footer={\n                                    <Badge className={`absolute right-0 bottom-0 rounded-none rounded-br-md ${flow.flow_type === 'flow' && 'bg-gray-950'}`}>\n                                        {flow.flow_type === 'flow' ? t('build.skill') : t('build.assistant')}\n                                    </Badge>\n                                }\n                                onClick={() => { onSelect(flow); setOpen(false) }}\n                            />\n                        )) : <div className=\"flex flex-col items-center justify-center pt-40 w-full\">\n                            <p className=\"text-sm text-muted-foreground mb-3\">{t('build.empty')}</p>\n                            <Button className=\"w-[200px]\" onClick={() => navigate('/build/assist')}>{t('build.onlineSA')}</Button>\n                        </div>\n                    }\n                    <LoadMore onScrollLoad={handleLoadMore} />\n                </div>\n            </div>\n        </SheetContent>\n    </Sheet>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/sheets/SkillSheet.tsx",
    "content": "import { useState } from \"react\";\nimport { readOnlineFlows } from \"../../../controllers/API/flow\";\nimport { FlowType } from \"../../../types/flow\";\nimport { useTable } from \"../../../util/hook\";\nimport { Button } from \"../../bs-ui/button\";\nimport { SearchInput } from \"../../bs-ui/input\";\nimport {\n  Sheet,\n  SheetContent,\n  SheetTitle,\n  SheetTrigger,\n} from \"../../bs-ui/sheet\";\nimport CardComponent from \"../cardComponent\";\nimport { useTranslation } from \"react-i18next\";\nimport AppAvator from \"../cardComponent/avatar\";\n\nexport default function SkillSheet({ select, children, onSelect }) {\n  const [keyword, setKeyword] = useState(\"\");\n  const {\n    data: onlineFlows,\n    loading,\n    search,\n  } = useTable<FlowType>({}, (param) =>\n    readOnlineFlows(param.page, param.keyword).then((res) => {\n      return res;\n    })\n  );\n\n  const handleSearch = (e) => {\n    const { value } = e.target;\n    setKeyword(value);\n    search(value);\n  };\n\n  const toCreateFlow = () => {\n    //@ts-ignore\n    window.open(__APP_ENV__.BASE_URL + \"/build/apps\");\n  };\n\n  const { t } = useTranslation()\n\n  return (\n    <Sheet>\n      <SheetTrigger asChild>{children}</SheetTrigger>\n      <SheetContent className=\"sm:min-w-[966px]\">\n        <div className=\"flex h-full\" onClick={(e) => e.stopPropagation()}>\n          <div className=\"w-fit p-6\">\n            <SheetTitle>{t(\"build.addSkill\")}</SheetTitle>\n            <SearchInput\n              value={keyword}\n              placeholder={t(\"build.search\")}\n              className=\"my-6\"\n              onChange={handleSearch}\n            />\n            <Button className=\"w-full text-slate-50\" onClick={toCreateFlow}>\n              {t(\"build.createSkill\")}\n            </Button>\n          </div>\n          <div className=\"flex h-full min-w-[696px] flex-1 flex-wrap content-start gap-1.5 overflow-y-auto p-5 pt-12 scrollbar-hide\">\n            {onlineFlows[0] ? (\n              onlineFlows.map((flow, i) => (\n                <CardComponent\n                  key={i}\n                  id={i + 1}\n                  logo={<AppAvator id={flow.name} flowType={flow.flow_type} url={flow.logo} />}\n                  data={flow}\n                  title={flow.name}\n                  description={flow.description}\n                  type=\"sheet\"\n                  footer={\n                    <div className=\"flex justify-end\">\n                      {select.some((_) => _.id === flow.id) ? (\n                        <Button size=\"sm\" className=\"h-6\" disabled>\n                          {t(\"build.added\")}\n                        </Button>\n                      ) : (\n                        <Button\n                          size=\"sm\"\n                          className=\"h-6\"\n                          onClick={() => onSelect(flow)}\n                        >\n                          {t(\"build.add\")}\n                        </Button>\n                      )}\n                    </div>\n                  }\n                />\n              ))\n            ) : (\n              <div className=\"flex w-full flex-col items-center justify-center pt-40\">\n                <p className=\"mb-3 text-sm text-muted-foreground\">\n                  {t(\"build.empty\")}\n                </p>\n                <Button className=\"w-[200px]\" onClick={toCreateFlow}>\n                  {t(\"build.createSkill\")}\n                </Button>\n              </div>\n            )}\n          </div>\n        </div>\n      </SheetContent>\n    </Sheet>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/sheets/TaggingSheet.tsx",
    "content": "import { useState } from \"react\";\nimport {\n    Sheet,\n    SheetContent,\n    SheetTitle,\n    SheetTrigger,\n} from \"../../bs-ui/sheet\";\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\n\nexport default function TaggingSheet({children}) {\n    const init = [\n        {id:'01',name:'Button01'},\n        {id:'02',name:'Button02'},\n        {id:'03',name:'Button03'},\n    ]\n    const [buttons, setButtons] = useState(init)\n\n    const handleDragEnd = (result) => {\n        if(!result.destination) return\n        const newButtons = buttons\n        const [moveItem] = newButtons.splice(result.source.index, 1)\n        newButtons.splice(result.destination.index, 0, moveItem)\n        setButtons(newButtons)\n    }\n\n    return <Sheet>\n        <SheetTrigger asChild>{children}</SheetTrigger>\n        <SheetContent className=\"sm:min-w-[800px]\">\n            <SheetTitle>给助手打标签</SheetTitle>\n            <div className=\"w-full h-full grid grid-cols-[80%,20%]\">\n                <div className=\"bg-slate-500\">\n\n                </div>\n                <div className=\"bg-slate-300\">\n                    <DragDropContext onDragEnd={handleDragEnd}>\n                        <Droppable droppableId={'list'}>\n                            {(provided) => (\n                                <div {...provided.droppableProps} ref={provided.innerRef}>\n                                    {buttons.map((b,index) => (\n                                        <Draggable key={'drag' + b.id} draggableId={'drag' + b.id} index={index}>\n                                            {(provided) => (\n                                                <div ref={provided.innerRef} {...provided.draggableProps} \n                                                {...provided.dragHandleProps}>\n                                                {index + 1} + {b.name}\n                                                </div>\n                                        )}\n                                    </Draggable>\n                                    ))}\n                                    {/* {provided.placeholder} */}\n                                </div>\n                            )}\n                        </Droppable>\n                    </DragDropContext>\n                </div>\n            </div>\n        </SheetContent>\n    </Sheet>\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/sheets/ToolsSheet.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { Accordion } from \"@/components/bs-ui/accordion\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from \"@/components/bs-ui/sheet\";\nimport { getToolsApi } from \"@/controllers/API/tools\";\nimport { useMcpRefrensh } from \"@/pages/BuildPage/tools\";\nimport ToolItem from \"@/pages/BuildPage/tools/ToolItem\";\nimport { CpuIcon, Star, User } from \"lucide-react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ToolsSheet({ select, onSelect, children }) {\n    const { t } = useTranslation()\n    const [type, setType] = useState('default') // default custom\n\n    const [keyword, setKeyword] = useState('')\n    const [allData, setAllData] = useState([])\n\n\n    const loadMData = () => {\n        getToolsApi(type).then(res => {\n            setAllData(res)\n            setKeyword('')\n        })\n    }\n    useEffect(() => {\n        loadMData()\n    }, [type])\n\n    const options = useMemo(() => {\n        return allData.filter((el) => {\n            // 搜索范围：工具名称、工具描述、工具api名称、工具api描述\n            const targetStr = `${el.name}-${el.description}-${el.children?.map((el) => el.name + el.desc).join(\"-\") || ''}`\n            return targetStr.toLowerCase().includes(keyword.toLowerCase());\n        });\n    }, [keyword, allData])\n\n    const { loading, refresh } = useMcpRefrensh()\n    return (\n        <Sheet onOpenChange={open => !open && setKeyword('')}>\n            <SheetTrigger asChild>\n                {children}\n            </SheetTrigger>\n            <SheetContent className=\"w-[1000px] sm:max-w-[1000px]\">\n                <div className=\"flex h-full\" onClick={e => e.stopPropagation()}>\n                    <div className=\"w-fit p-6\">\n                        <SheetTitle>{t('build.addTool')}</SheetTitle>\n                        <SearchInput placeholder={t('build.search')} className=\"mt-6\" onChange={(e) => setKeyword(e.target.value)} />\n                        <div className=\"mt-4\">\n                            <div\n                                className={`flex items-center gap-2 px-4 py-2 rounded-md cursor-pointer hover:bg-muted-foreground/10 transition-all duration-200 ${type === 'default' && 'bg-muted-foreground/10'}`}\n                                onClick={() => setType('default')}\n                            >\n                                <User />\n                                <span>{t('tools.builtinTools')}</span>\n                            </div>\n                            <div\n                                className={`flex items-center gap-2 px-4 py-2 rounded-md cursor-pointer hover:bg-muted-foreground/10 transition-all duration-200 mt-1 ${type === 'custom' && 'bg-muted-foreground/10'}`}\n                                onClick={() => setType('custom')}\n                            >\n                                <Star />\n                                <span>{t('tools.customTools')}</span>\n                            </div>\n                            <div\n                                className={`mt-1 flex cursor-pointer items-center gap-2 rounded-md px-4 py-2 transition-all duration-200 hover:bg-muted-foreground/10 ${type === \"mcp\" && \"bg-muted-foreground/10\"\n                                    }`}\n                                onClick={() => setType(\"mcp\")}\n                            >\n                                <CpuIcon />\n                                <span>{t('tools.mcpTools')}</span>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"flex-1 bg-background-main p-5 pt-12 h-full overflow-auto scrollbar-hide\">\n                        <div className=\"mb-4\">\n                            {type === 'custom' && <Button\n                                className=\"mt-4  text-[white]\"\n                                onClick={() => window.open(__APP_ENV__.BASE_URL + \"/build/tools?c=api\")}\n                            >\n                                {t('create')}{t(\"tools.createCustomTool\")}\n                            </Button>}\n                            {type === 'mcp' && <Button\n                                className=\"mt-4  text-[white]\"\n                                onClick={() => window.open(__APP_ENV__.BASE_URL + \"/build/tools?c=mcp\")}\n                            >\n                                {t(\"tools.addMcpServer\")}\n                            </Button>}\n                            {type === 'mcp' && <Button\n                                variant=\"outline\"\n                                disabled={loading}\n                                className=\"mt-4 ml-4\"\n                                onClick={async () => {\n                                    await refresh()\n                                    loadMData()\n                                }}\n                            >\n                                {loading && <LoadIcon className=\"text-gray-800\" />}\n                                {t(\"tools.refresh\")}\n                            </Button>}\n                        </div>\n                        <Accordion type=\"single\" collapsible className=\"w-full\">\n                            {\n                                options.length ? options.map(el => (\n                                    <ToolItem\n                                        key={el.id}\n                                        type={type === 'default' ? '' : type}\n                                        select={select}\n                                        data={el}\n                                        onSelect={onSelect}\n                                    ></ToolItem>\n                                )) : <div className=\"pt-40 text-center text-sm text-muted-foreground mt-2\">\n                                    {t('build.empty')}\n                                </div>\n                            }\n                        </Accordion>\n                    </div>\n                </div>\n            </SheetContent>\n        </Sheet>\n    );\n\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-comp/tableComponent/ColFilterUser.tsx",
    "content": "import { FilterIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport { useDebounce } from \"@/components/bs-ui/utils\";\nimport { getLabelUsersApi, getUsersApi } from \"@/controllers/API/user\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ColFilterUser({ label, onFilter }) {\n    const { t } = useTranslation()\n    const [open, setOpen] = useState(false);\n    const [value, setValue] = useState([]);\n\n    const { options, setOptions, reload, loadMore, search } = useUsersOptions(label)\n    const searchDb = useDebounce(search, 200, false)\n\n    const handlerChecked = (id) => {\n        setValue(val => {\n            const index = val.indexOf(id)\n            index === -1 ? val.push(id) : val.splice(index, 1)\n            return [...val]\n        })\n        // 已选项上浮\n        const checked = options.filter(o => value.includes(o.id))\n        const uncheck = options.filter(o => !value.includes(o.id))\n        setOptions([...checked, ...uncheck])\n    }\n\n    return <Popover open={open} onOpenChange={(bln) => setOpen(bln)}>\n        <PopoverTrigger>\n            <FilterIcon onClick={() => setOpen(!open)} className={value.length ? 'text-primary ml-3' : 'text-gray-400 ml-3'} />\n        </PopoverTrigger>\n        <PopoverContent>\n            <div>\n                {!label && <SearchInput placeholder={'用户名称'} className=\"w-[240px]\" onChange={(e) => searchDb(e.target.value)}></SearchInput>}\n                <div className=\"mt-2 max-h-[260px] min-h-20 overflow-y-auto\">\n                    {options.map((el) => (\n                        <div className=\"flex items-center space-x-2 mb-1\" key={el.value}>\n                            <Checkbox id={el.value} checked={value.includes(el.value)} onCheckedChange={() => handlerChecked(el.value)} />\n                            <Label htmlFor={el.value} className=\"cursor-pointer text-sm truncate\">{el.label}</Label>\n                        </div>\n                    ))}\n                    {options.length === 0 && (\n                        <div className=\"flex items-center justify-center h-[70px]\">\n                            <Button variant=\"ghost\">{t('build.empty')}</Button>\n                        </div>\n                    )}\n                </div>\n                <div className=\"flex justify-between mt-4\">\n                    <Button variant=\"ghost\" className=\"px-8 h-8\" onClick={() => {\n                        setValue([])\n                        onFilter([])\n                    }}>{t('system.reset')}</Button>\n                    <Button className=\"px-8 h-8\" onClick={() => {\n                        setOpen(false)\n                        onFilter(value)\n                    }}>{t('system.confirm')}</Button>\n                </div>\n            </div>\n        </PopoverContent>\n    </Popover>\n};\n\n// users\nconst useUsersOptions = (label) => {\n    const [options, setOptions] = useState([])\n    const optionsRef = useRef([])\n    const pageRef = useRef(1)\n    const keywordRef = useRef(\"\")\n\n    const loadApps = () => {\n        const page = pageRef.current;\n        (label ? getLabelUsersApi(label) : getUsersApi({ page, pageSize: 400, name: keywordRef.current })).then((res: any) => {\n            const resData = label ? res : res.data\n            const newOptions = resData.map(el => ({\n                label: el.user_name,\n                value: el.user_id\n            }))\n            optionsRef.current = page === 1 ? newOptions : [...optionsRef.current, ...newOptions]\n            setOptions(optionsRef.current)\n        })\n    }\n    useEffect(() => {\n        loadApps()\n    }, [])\n\n    return {\n        options,\n        setOptions,\n        reload: () => {\n            keywordRef.current = ''\n            pageRef.current = 1\n            loadApps()\n        },\n        loadMore: () => {\n            pageRef.current++\n            loadApps()\n        },\n        search: (keyword) => {\n            pageRef.current = 1\n            keywordRef.current = keyword\n            loadApps()\n        }\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/DownIcon.tsx",
    "content": "\nexport default function DownIcon({ className = '', ...props }) {\n    return (\n        <svg t=\"1753723248175\" className={className} {...props} viewBox=\"0 0 1394 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5047\" width=\"48\" height=\"48\"><path d=\"M808.665066 968.123525a139.174837 139.174837 0 0 1-222.989114 0L28.061551 224.448838A140.525626 140.525626 0 0 1 0 140.133462C0 62.746326 62.484883 0 139.567002 0h1115.228801c30.283817 0 59.739731 9.891261 83.944998 28.192273 61.569833 46.558646 73.901229 134.425289 27.538666 196.256565L808.665066 968.123525z\" fill=\"#000000\" p-id=\"5048\"></path></svg>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/addTo/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport AddTo from \"./AddTo.svg?react\";\n\nexport const AddToIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-400 ' + (className || '')\n    return <AddTo ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/app/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Helper from \"./helper.svg?react\";\nimport Flow from \"./flow.svg?react\";\nimport Abilities from \"./abilities.svg?react\";\n\nexport const HelperIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Helper ref={ref} {...props} />;\n});\n\nexport const FlowIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Flow ref={ref} {...props} />;\n});\n\nexport const AbilitiesIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Abilities ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/avatar/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Avatar from \"./Avatar.svg?react\";\n\nexport const AvatarIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Avatar ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/bookOpen/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport BookOpen from \"./BookOpen.svg?react\";\n\nexport const BookOpenIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <BookOpen ref={ref} {...props} className={className || ''} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/clear/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Clear from \"./Clear.svg?react\";\n\nexport const ClearIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Clear ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/dashboard/index.tsx",
    "content": "import { forwardRef } from \"react\";\n\nexport const FilterIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <svg ref={ref} {...props} className={className || ''} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clip-path=\"url(#clip0_572_6083)\">\n            <path d=\"M3.66674 3.33325H12.3334C12.4294 3.36692 12.5164 3.42213 12.5878 3.49463C12.6592 3.56713 12.7131 3.65501 12.7452 3.75153C12.7774 3.84806 12.7871 3.95066 12.7735 4.0515C12.7598 4.15233 12.7233 4.24871 12.6667 4.33325L9.3334 7.99992V12.6666L6.66674 10.6666V7.99992L3.3334 4.33325C3.2768 4.24871 3.2403 4.15233 3.22669 4.0515C3.21309 3.95066 3.22274 3.84806 3.25491 3.75153C3.28709 3.65501 3.34093 3.56713 3.41231 3.49463C3.4837 3.42213 3.57073 3.36692 3.66674 3.33325Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </g>\n        <defs>\n            <clipPath id=\"clip0_572_6083\">\n                <rect width=\"16\" height=\"16\" fill=\"white\" />\n            </clipPath>\n        </defs>\n    </svg>\n});\n\n\nexport const GridAddIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <svg ref={ref} {...props} className={className || ''} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g clip-path=\"url(#clip0_572_6079)\">\n            <path d=\"M5.99984 2.66675H3.33317C2.96498 2.66675 2.6665 2.96522 2.6665 3.33341V6.00008C2.6665 6.36827 2.96498 6.66675 3.33317 6.66675H5.99984C6.36803 6.66675 6.6665 6.36827 6.6665 6.00008V3.33341C6.6665 2.96522 6.36803 2.66675 5.99984 2.66675Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n            <path d=\"M12.6668 2.66675H10.0002C9.63197 2.66675 9.3335 2.96522 9.3335 3.33341V6.00008C9.3335 6.36827 9.63197 6.66675 10.0002 6.66675H12.6668C13.035 6.66675 13.3335 6.36827 13.3335 6.00008V3.33341C13.3335 2.96522 13.035 2.66675 12.6668 2.66675Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n            <path d=\"M5.99984 9.33325H3.33317C2.96498 9.33325 2.6665 9.63173 2.6665 9.99992V12.6666C2.6665 13.0348 2.96498 13.3333 3.33317 13.3333H5.99984C6.36803 13.3333 6.6665 13.0348 6.6665 12.6666V9.99992C6.6665 9.63173 6.36803 9.33325 5.99984 9.33325Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n            <path d=\"M11.3335 9.33325V13.3333M9.3335 11.3333H13.3335H9.3335Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </g>\n        <defs>\n            <clipPath id=\"clip0_572_6079\">\n                <rect width=\"16\" height=\"16\" fill=\"white\" />\n            </clipPath>\n        </defs>\n    </svg>\n});\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/del/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Del from \"./Del.svg?react\";\nimport Trash from \"./Trash.svg?react\";\n\nexport const DelIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Del ref={ref} {...props} />;\n});\n\n\nexport const TrashIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Trash ref={ref} {...props} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/down/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport DropDown from \"./DropDown.svg?react\";\n\nexport const DropDownIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <DropDown ref={ref} {...props} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/en/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport En from \"./En.svg?react\";\n\nexport const EnIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <En ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/expand/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\n\nexport const ExpandIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <svg ref={ref} {...props} className={className || ''} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M2 2.66675H14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        <path d=\"M2 8H6.66667\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        <path d=\"M2 13.3333H14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        <path d=\"M12 6L14 8L12 10\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        <path d=\"M14 8H10\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n    </svg>\n});\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/file/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport CsvIcon from \"./csv.svg?react\";\nimport DocIcon from \"./doc.svg?react\";\nimport DocxIcon from \"./docx.svg?react\";\nimport ImageIcon from \"./image.svg?react\";\nimport PdfIcon from \"./pdf.svg?react\";\nimport PptIcon from \"./ppt.svg?react\";\nimport PptxIcon from \"./pptx.svg?react\";\nimport TxtIcon from \"./txt.svg?react\";\nimport XlsIcon from \"./xls.svg?react\";\nimport XlsxIcon from \"./xlsx.svg?react\";\n\nexport type FileType =\n    | 'pdf'\n    | 'doc'\n    | 'docx'\n    | 'ppt'\n    | 'pptx'\n    | 'md' | 'html' | 'txt' | 'json'\n    | 'jpg'\n    | 'jpeg'\n    | 'png'\n    | 'bmp'\n    | 'csv'\n    | 'xls'\n    | 'xlsx';\n\n// 文件扩展名到图标组件的映射\nconst iconComponents: Record<FileType, React.ComponentType<any>> = {\n    pdf: PdfIcon,\n    txt: TxtIcon,\n    json: TxtIcon,\n    doc: DocIcon,\n    docx: DocxIcon,\n    ppt: PptIcon,\n    pptx: PptxIcon,\n    md: TxtIcon,\n    html: TxtIcon,\n    jpg: ImageIcon,\n    jpeg: ImageIcon,\n    png: ImageIcon,\n    bmp: ImageIcon,\n    csv: CsvIcon,\n    xls: XlsIcon,\n    xlsx: XlsxIcon\n};\n\ninterface FileIconProps extends React.PropsWithChildren<{\n    className?: string;\n    type: FileType;\n}> { }\n\nexport const FileIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    FileIconProps\n>((props, ref) => {\n\n    const IconComponent = iconComponents[props.type || 'txt'];\n\n    if (!IconComponent) {\n        console.warn(`No icon found for type: ${props.type}`);\n        return <TxtIcon ref={ref} className={props.className} {...props} />;\n    }\n\n    return <IconComponent ref={ref} className={props.className} {...props} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/filter/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Filter from \"./Filter.svg?react\";\n\nexport const FilterIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Filter ref={ref} {...props} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/flag/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Flag from \"./Flag.svg?react\";\n\nexport const FlagIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Flag ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/flow/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Assistant from \"./assistant.svg?react\";\nimport Skill from \"./Skill.svg?react\";\nimport Flow from \"./flow.svg?react\";\nimport Skill2 from \"./skill2.svg?react\";\nimport Flow2 from \"./flow2.svg?react\";\n\nexport const AssistantIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Assistant ref={ref} {...props} />;\n});\n\nexport const SkillIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Skill ref={ref} {...props} />;\n});\n\nexport const FlowIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Flow ref={ref} {...props} />;\n});\n\nexport const Skill2Icon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Skill2 ref={ref} {...props} />;\n});\n\nexport const Flow2Icon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Flow2 ref={ref} {...props} />;\n});\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/form/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Form from \"./Form.svg?react\";\n\nexport const FormIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Form ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/github/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Github from \"./Github.svg?react\";\n\nexport const GithubIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Github ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/go/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Go from \"./Go.svg?react\";\n\nexport const GoIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Go ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/index.ts",
    "content": "export { AddToIcon } from './addTo';\nexport { AvatarIcon } from './avatar';\nexport { BookOpenIcon } from './bookOpen';\nexport { ClearIcon } from './clear';\nexport { DelIcon, TrashIcon } from './del';\nexport { DropDownIcon } from './down';\nexport { EnIcon } from './en';\nexport { FilterIcon } from './filter';\nexport { FlagIcon } from './flag';\nexport { AssistantIcon, FlowIcon, SkillIcon, Skill2Icon, Flow2Icon } from './flow';\nexport { FormIcon } from './form';\nexport { GithubIcon } from './github';\nexport { GoIcon } from './go';\nexport { KnowledgeIcon } from './knowledge';\nexport { LoadIcon } from './loading';\nexport { ApplicationIcon } from './menu/application';\nexport { EvaluatingIcon } from './menu/evaluation';\nexport { LabelIcon } from './menu/label';\nexport { LogIcon } from './menu/log';\nexport { ModelIcon } from './menu/model';\nexport { SystemIcon } from './menu/system';\nexport { TechnologyIcon } from './menu/technology';\nexport { MoonIcon } from './moon';\nexport { MoveOneIcon } from './moveOne';\nexport { NewApplicationIcon } from './newApplication';\nexport { WordIcon } from './office';\nexport { PlusIcon } from './plus';\nexport { PlusBoxIcon } from './plusBox';\nexport { QuestionMarkIcon } from './questionMark';\nexport { QuitIcon } from './quit';\nexport { SaveIcon } from './save';\nexport { SearchIcon } from './search';\nexport { SendIcon } from './send';\nexport { SettingIcon } from './setting';\nexport { TabIcon } from './tab';\nexport { ThunmbIcon } from './thumbs';\nexport { TipIcon } from './tip';\nexport { ToastIcon } from './toast';\nexport { ToolIcon } from './tool';\nexport { UploadIcon } from './upload';\nexport { UserIcon } from './user';\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/knowledge/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Knowledge from \"./Knowledge.svg?react\";\nimport Book from \"./file-logo.svg?react\";\nimport Qa from \"./qa-logo.svg?react\";\n\nexport const KnowledgeIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Knowledge ref={ref} {...props} className={className || ''} />;\n});\n\nexport const BookIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Book ref={ref} {...props} className={className || ''} />;\n});\n\n\nexport const QaIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Qa ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/label/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Label from \"./Label.svg?react\";\n\nexport const LabelIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Label ref={ref} {...props} className={_className} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/loading/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Load from \"./Load.svg?react\";\nimport Loading from \"./Loading.svg?react\";\nimport { cname } from \"../../bs-ui/utils\";\n\nexport const LoadIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Load ref={ref} {...props} className={cname('text-gray-50 animate-spin', className)} />;\n});\n\n\nexport const LoadingIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    if (window.BRAND_CONFIG.loadingIcon) {\n        return <img src={window.BRAND_CONFIG.loadingIcon} ref={ref} {...props} className={cname('text-primary max-w-14', className, window.BRAND_CONFIG.loadingAnimation)} />;\n    }\n    return <Loading ref={ref} {...props} className={cname('text-primary', className)} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/application/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Application from \"./Application.svg?react\";\n\nexport const ApplicationIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Application ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/dataset/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Dataset from \"./Dataset.svg?react\";\n\nexport const DatasetIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Dataset ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/evaluation/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Icon from \"./Evaluation.svg?react\";\n\nexport const EvaluatingIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Icon ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/label/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Label from \"./Label.svg?react\";\n\nexport const LabelIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Label ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/log/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Log from \"./Log.svg?react\";\n\nexport const LogIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Log ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/model/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Model from \"./Model.svg?react\";\n\nexport const ModelIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Model ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/system/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport System from \"./System.svg?react\";\n\nexport const SystemIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <System ref={ref} {...props} className={className || ''} />;\n});\n\n\nexport const DashboardIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <svg ref={ref} {...props} className={className || ''} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M12 2.9541C14.075 2.95399 16.0986 3.59936 17.7904 4.80075C19.4822 6.00214 20.7584 7.70005 21.4421 9.65916C22.1258 11.6183 22.1831 13.7415 21.6062 15.7347C21.0292 17.7278 19.8465 19.4922 18.222 20.7831C18.0451 20.9236 17.8259 21.0001 17.6 21.0001H6.40001C6.17411 21.0001 5.95488 20.9236 5.77801 20.7831C4.1535 19.4922 2.97081 17.7278 2.39384 15.7347C1.81687 13.7415 1.87421 11.6183 2.55791 9.65916C3.2416 7.70005 4.51779 6.00214 6.20959 4.80075C7.9014 3.59936 9.92502 2.95399 12 2.9541ZM16.207 8.7931C16.0195 8.60563 15.7652 8.50032 15.5 8.50032C15.2348 8.50032 14.9805 8.60563 14.793 8.7931L12.517 11.0671C12.2303 10.9909 11.9302 10.9793 11.6384 11.0332C11.3466 11.0871 11.0705 11.2052 10.8299 11.3789C10.5893 11.5525 10.3904 11.7775 10.2474 12.0375C10.1044 12.2974 10.0209 12.5859 10.003 12.8821L10 13.0001C10.0005 13.2844 10.0617 13.5654 10.1794 13.8243C10.2971 14.0831 10.4686 14.3139 10.6825 14.5012C10.8965 14.6885 11.1479 14.828 11.42 14.9105C11.6922 14.9929 11.9787 15.0164 12.2607 14.9794C12.5426 14.9423 12.8134 14.8456 13.0549 14.6956C13.2965 14.5456 13.5033 14.3458 13.6616 14.1096C13.8199 13.8734 13.9259 13.6061 13.9727 13.3256C14.0195 13.0451 14.006 12.7579 13.933 12.4831L16.207 10.2071C16.3945 10.0196 16.4998 9.76527 16.4998 9.5001C16.4998 9.23494 16.3945 8.98063 16.207 8.7931Z\" fill=\"currentColor\" />\n    </svg>\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/menu/technology/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Technology from \"./Technology.svg?react\";\n\nexport const TechnologyIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Technology ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/moon/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Moon from \"./Moon.svg?react\";\n\nexport const MoonIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Moon ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/moveOne/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport MoveOne from \"./MoveOne.svg?react\";\n\nexport const MoveOneIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <MoveOne ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/newApplication/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport NewApplication from \"./NewApplication.svg?react\";\n\nexport const NewApplicationIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <NewApplication ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/office/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Word from \"./Word.svg?react\";\n\nexport const WordIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Word ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/plus/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Plus from \"./Plus.svg?react\";\n\nexport const PlusIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Plus ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/plusBox/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport PlusBox from \"./PlusBox.svg?react\";\nimport PlusBoxDark from \"./PlusBox-dark.svg?react\";\n\nexport const PlusBoxIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <PlusBox ref={ref} {...props} className={_className} />;\n});\n\nexport const PlusBoxIconDark = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <PlusBoxDark ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/prompt/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Prompt from \"./Prompt.svg?react\";\n\nexport const PromptIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Prompt ref={ref} {...props} className={_className} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/questionMark/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport QuestionMark from \"./QuestionMark.svg?react\";\n\nexport const QuestionMarkIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <QuestionMark ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/quit/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Quit from \"./Quit.svg?react\";\n\nexport const QuitIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Quit ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/rbDrag/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Drag from \"./Drag.svg?react\";\n\nexport const RbDragIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    return <Drag ref={ref} {...props} className={className || ''} />;\n});"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/save/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Save from \"./icon.svg?react\";\n\nexport const SaveIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-0 ' + (className || '')\n    return <Save ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/search/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Search from \"./Search.svg?react\";\n\nexport const SearchIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Search ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/send/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Send from \"./Send.svg?react\";\n\nexport const SendIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Send ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/setting/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport Setting from \"./Setting.svg?react\";\n\nexport const SettingIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({className, ...props}, ref) => {\n    return <Setting ref={ref} className={cname('text-[#9CA3BA]', className)} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/tab/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Tab from \"./icon.svg?react\";\n\nexport const TabIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Tab ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/thumbs/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport copy from \"./copy.svg?react\";\nimport like from \"./like.svg?react\";\nimport unLike from \"./unLike.svg?react\";\nimport { cname } from \"@/components/bs-ui/utils\";\n\ntype ThunmbIconType = 'copy' | 'like' | 'unLike' | 'copyDark' | 'likeDark' | 'unLikeDark';\n\nexport const ThunmbIcon = forwardRef<\n    SVGSVGElement & { type: ThunmbIconType, className: string },\n    React.PropsWithChildren<{ type: ThunmbIconType, className: string }>\n>((props, ref) => {\n    const comps = {\n        'copy': copy,\n        'like': like,\n        'unLike': unLike,\n    }\n    const Comp = comps[props.type];\n    const _className = cname('transition text-gray-400 hover:text-gray-500', props.className)\n    return <Comp ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/tip/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Tip from \"./icon.svg?react\";\n\nexport const TipIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Tip ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/toast/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Info from \"./Info.svg?react\";\nimport Success from \"./Success.svg?react\";\nimport Warning from \"./Warning.svg?react\";\nimport Error from \"./Error.svg?react\";\n\ntype Type = 'info' | 'error' | 'success' | 'warning'\n\nexport const ToastIcon = forwardRef<\n    SVGSVGElement & { type: Type },\n    React.PropsWithChildren<{ type?: Type }>\n>(({ type = 'info', ...props }, ref) => {\n    const coponents = {\n        info: Info,\n        error: Error,\n        success: Success,\n        warning: Warning\n    }\n    const Comp = coponents[type]\n    return <Comp ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/tool/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Tool from \"./icon.svg?react\";\n\nexport const ToolIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <Tool ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/upload/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport Upload from \"./icon.svg?react\";\n\nexport const UploadIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>(({ className, ...props }, ref) => {\n    const _className = 'transition text-gray-950 ' + (className || '')\n    return <Upload ref={ref} {...props} className={_className} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-icons/user/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport User from \"./User.svg?react\";\n\nexport const UserIcon = forwardRef<\n    SVGSVGElement & { className: any },\n    React.PropsWithChildren<{ className?: string }>\n>((props, ref) => {\n    return <User ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/accordion/index.tsx",
    "content": "\"use client\"\n\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\nimport { cn } from \"@/util/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n    React.ElementRef<typeof AccordionPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n    <AccordionPrimitive.Item\n        ref={ref}\n        className={cname(\"border-b\", className)}\n        {...props}\n    />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n    React.ElementRef<typeof AccordionPrimitive.Trigger>,\n    React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, hoverable, ...props }, ref) => (\n    <AccordionPrimitive.Header className=\"flex\">\n        <AccordionPrimitive.Trigger\n            ref={ref}\n            className={cname(\n                \"group flex flex-1 items-center py-4 text-sm font-medium transition-all [&[data-state=open]>svg]:rotate-180 dark:text-muted-foreground\",\n                className\n            )}\n            {...props}\n        >\n            <ChevronDown className={cn(hoverable && 'opacity-0 group-hover:opacity-100', \" mx-2 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\")} />\n            {children}\n        </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n    React.ElementRef<typeof AccordionPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n    <AccordionPrimitive.Content\n        ref={ref}\n        className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n        {...props}\n    >\n        <div className={cname(\"pb-4 pt-0\", className)}>{children}</div>\n    </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cname } from \"./utils\"\n\nconst alertVariants = cva(\n    \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n    {\n        variants: {\n            variant: {\n                default: \"bg-background text-foreground\",\n                destructive:\n                    \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n            },\n        },\n        defaultVariants: {\n            variant: \"default\",\n        },\n    }\n)\n\nconst Alert = React.forwardRef<\n    HTMLDivElement,\n    React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n    <div\n        ref={ref}\n        role=\"alert\"\n        className={cname(alertVariants({ variant }), className)}\n        {...props}\n    />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n    HTMLParagraphElement,\n    React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n    <h5\n        ref={ref}\n        className={cname(\"mb-1 font-medium leading-none tracking-tight text-sm\", className)}\n        {...props}\n    />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n    HTMLParagraphElement,\n    React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n    <div\n        ref={ref}\n        className={cname(\"text-sm [&_p]:leading-relaxed\", className)}\n        {...props}\n    />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/alertDialog/index.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\nimport { buttonVariants } from \"@/components/bs-ui/button\"\nimport { cname } from \"../utils\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPrimitive.Overlay\n        className={cname(\n            \"fixed inset-0 z-40 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n            className\n        )}\n        {...props}\n        ref={ref}\n    />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPortal>\n        <AlertDialogOverlay />\n        <AlertDialogPrimitive.Content\n            ref={ref}\n            className={cname(\n                \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-sm translate-x-[-50%] translate-y-[-50%] gap-10 border bg-background-prompt p-3 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg outline-none\",\n                className\n            )}\n            {...props}\n        />\n    </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex flex-col space-y-2 text-center sm:text-left\",\n            className\n        )}\n        {...props}\n    />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex justify-center flex-col-reverse sm:flex-row sm:space-x-2\",\n            className\n        )}\n        {...props}\n    />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Title>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPrimitive.Title\n        ref={ref}\n        className={cname(\"text-lg font-semibold text-center\", className)}\n        {...props}\n    />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Description>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPrimitive.Description\n        ref={ref}\n        className={cname(\"text-sm text-center text-prompt-description\", className)}\n        {...props}\n    />\n))\nAlertDialogDescription.displayName =\n    AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Action>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPrimitive.Action\n        ref={ref}\n        className={cname(buttonVariants({variant: \"destructive\"} ), className)}\n        {...props}\n    />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n    React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n    React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n    <AlertDialogPrimitive.Cancel\n        ref={ref}\n        className={cname(\n            buttonVariants({ variant: \"outline\" }),\n            \"mt-2 sm:mt-0\",\n            className\n        )}\n        {...props}\n    />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n    AlertDialog,\n    AlertDialogPortal,\n    AlertDialogOverlay,\n    AlertDialogTrigger,\n    AlertDialogContent,\n    AlertDialogHeader,\n    AlertDialogFooter,\n    AlertDialogTitle,\n    AlertDialogDescription,\n    AlertDialogAction,\n    AlertDialogCancel,\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/alertDialog/useConfirm.tsx",
    "content": "\nimport { TipIcon } from \"@/components/bs-icons/tip\"\nimport i18next from \"i18next\"\nimport { X } from \"lucide-react\"\nimport { useRef, useState } from \"react\"\nimport { createRoot } from \"react-dom/client\"\nimport { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from \".\"\n\ninterface ConfirmParams {\n    title?: string\n    desc: string | React.ReactNode\n    canelTxt?: string\n    okTxt?: string\n    showClose?: boolean\n    onClose?: () => void\n    onCancel?: () => void\n    onOk?: (next) => void\n}\n\nlet openFn = (_: ConfirmParams) => { }\n\nfunction ConfirmWrapper() {\n\n    const [open, setOpen] = useState(false)\n    const paramRef = useRef(null)\n\n    openFn = (params: ConfirmParams) => {\n        paramRef.current = params\n        setOpen(true)\n    }\n\n    const close = () => {\n        paramRef.current?.onClose?.()\n        setOpen(false)\n    }\n\n    const handleCancelClick = () => {\n        paramRef.current?.onCancel?.()\n        close()\n    }\n\n    const handleOkClick = () => {\n        paramRef.current?.onOk\n            ? paramRef.current?.onOk?.(close)\n            : close()\n    }\n\n    if (!paramRef.current) return null\n    const { title, desc, okTxt, canelTxt, showClose = true } = paramRef.current\n\n    return (\n        <AlertDialog open={open} onOpenChange={setOpen}>\n            <AlertDialogContent>\n                <AlertDialogHeader className=\"relative\">\n                    <div><TipIcon /></div>\n                    {showClose && <X onClick={close} className=\"absolute right-0 top-[-0.5rem] cursor-pointer text-gray-400 hover:text-gray-600\"></X>}\n                    <AlertDialogTitle>{title}</AlertDialogTitle>\n                    <AlertDialogDescription className=\"text-popover-foreground\">\n                        {desc}\n                    </AlertDialogDescription>\n                </AlertDialogHeader>\n                <AlertDialogFooter>\n                    <AlertDialogCancel onClick={handleCancelClick} className=\"px-11\">{canelTxt}</AlertDialogCancel>\n                    <AlertDialogAction onClick={handleOkClick} className=\"px-11\">{okTxt}</AlertDialogAction>\n                </AlertDialogFooter>\n            </AlertDialogContent>\n        </AlertDialog>\n    )\n}\n\nlet confirmRoot: ReturnType<typeof createRoot> | null = null;\n\n(function () {\n    // 挂载组件\n    let el = document.getElementById('confirm-wrap');\n    if (!el) {\n        el = document.createElement('div');\n        el.id = 'confirm-wrap';\n        document.body.append(el);\n    }\n    // 统一使用 createRoot (React 18+)\n    if (!confirmRoot) {\n        confirmRoot = createRoot(el);\n    }\n    confirmRoot.render(<ConfirmWrapper />);\n})();\n\n\nconst bsConfirm = (params: ConfirmParams) => {\n    const resource = i18next.getResourceBundle(i18next.language, 'bs')\n\n    openFn({\n        title: resource.prompt,\n        canelTxt: resource.cancel,\n        okTxt: resource.confirmButton,\n        ...params,\n    })\n}\nexport { bsConfirm }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/badge/index.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cname } from \"../utils\"\n\nconst badgeVariants = cva(\n    \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n    {\n        variants: {\n            variant: {\n                default:\n                    \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n                secondary:\n                    \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n                destructive:\n                    \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n                outline: \"text-foreground\",\n                gray: \"bg-[#E8EBF2] text-[#61646D] px-1 py-[1px]\"\n            },\n        },\n        defaultVariants: {\n            variant: \"default\",\n        },\n    }\n)\n\nexport interface BadgeProps\n    extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> { }\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n    return (\n        <div className={cname(badgeVariants({ variant }), className)} {...props} />\n    )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/button/actionButton.tsx",
    "content": "import { ChevronDown } from \"lucide-react\";\nimport { Button } from \".\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip\";\n\nexport default function ActionButton({\n    children,\n    className = '',\n    dropDown = null,\n    align = 'center',\n    buttonTipContent = null,\n    delayDuration = 700,\n    variant = \"default\",\n    iconClassName = '',\n    ...props\n}) {\n\n    return <div className=\"flex items-center\">\n        <>\n            {buttonTipContent ? <TooltipProvider>\n                <Tooltip delayDuration={delayDuration}>\n                    <TooltipTrigger asChild>\n                        <Button variant={variant} className={`rounded-r-none ${className}`} {...props}>{children}</Button>\n                    </TooltipTrigger>\n                    <TooltipContent className=\"bg-[#fff] text-gray-800\">\n                        {buttonTipContent}\n                    </TooltipContent>\n                </Tooltip>\n            </TooltipProvider> :\n                <Button variant={variant} className={`rounded-r-none ${className}`} {...props}>{children}</Button>\n            }\n        </>\n        <Popover>\n            <PopoverTrigger asChild>\n                <Button\n                    size={props.size || 'icon'}\n                    variant={variant}\n                    className={`rounded-l-none ml-[1px] [&[data-state=open]>svg]:rotate-180 ${iconClassName}`}\n                ><ChevronDown className=\"size-4\" /></Button>\n            </PopoverTrigger>\n            <PopoverContent className=\"w-80 p-0\" align={align}>\n                {dropDown}\n            </PopoverContent>\n        </Popover>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/button/group.tsx",
    "content": "import { cn } from \"@/utils\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Separator } from \"../separator\"\n\nconst buttonGroupVariants = cva(\n    \"flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2\",\n    {\n        variants: {\n            orientation: {\n                horizontal:\n                    \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n                vertical:\n                    \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n            },\n        },\n        defaultVariants: {\n            orientation: \"horizontal\",\n        },\n    }\n)\n\nfunction ButtonGroup({\n    className,\n    orientation,\n    ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n    return (\n        <div\n            role=\"group\"\n            data-slot=\"button-group\"\n            data-orientation={orientation}\n            className={cn(buttonGroupVariants({ orientation }), className)}\n            {...props}\n        />\n    )\n}\n\nfunction ButtonGroupText({\n    className,\n    asChild = false,\n    ...props\n}: React.ComponentProps<\"div\"> & {\n    asChild?: boolean\n}) {\n    const Comp = asChild ? Slot : \"div\"\n\n    return (\n        <Comp\n            className={cn(\n                \"bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction ButtonGroupSeparator({\n    className,\n    orientation = \"vertical\",\n    ...props\n}: React.ComponentProps<typeof Separator>) {\n    return (\n        <Separator\n            data-slot=\"button-group-separator\"\n            orientation={orientation}\n            className={cn(\n                \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nexport {\n    ButtonGroup,\n    ButtonGroupSeparator,\n    ButtonGroupText,\n    buttonGroupVariants,\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/button/index.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cname } from \"../utils\"\nimport { LoadIcon } from \"@/components/bs-icons\"\nconst buttonVariants = cva(\n    \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\",\n    {\n        variants: {\n            variant: {\n                default:\n                    \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n                destructive:\n                    \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n                outline:\n                    \"border border-input shadow-sm hover:bg-accent hover:text-accent-foreground\",\n                secondary:\n                    \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n                ghost: \"hover:bg-accent hover:text-accent-foreground\",\n                link: \"text-primary no-underline hover:underline\",\n                black: \"bg-black-button text-primary-foreground shadow hover:bg-black-button/85\"\n            },\n            size: {\n                default: \"h-9 px-4 py-2\",\n                sm: \"h-8 rounded-md px-3 text-xs\",\n                lg: \"h-10 rounded-md px-8\",\n                icon: \"h-9 w-9\",\n            },\n        },\n        defaultVariants: {\n            variant: \"default\",\n            size: \"default\",\n        },\n    }\n)\n\nexport interface ButtonProps\n    extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n    asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n    ({ className, variant, size, asChild = false, ...props }, ref) => {\n        const Comp = asChild ? Slot : \"button\"\n        return (\n            <Comp\n                className={cname(buttonVariants({ variant, size, className }))}\n                ref={ref}\n                {...props}\n            />\n        )\n    }\n)\nButton.displayName = \"Button\"\n\n\nconst ButtonNumber = React.forwardRef<HTMLButtonElement, {\n    className?: string,\n    defaultValue?: number,\n    value?: number,\n    max?: number,\n    min?: number,\n    step?: number,\n    size?: \"default\" | \"sm\" | \"lg\" | \"icon\",\n    onChange?: (value: number) => void\n}>(({ className, value: userValue, defaultValue, max = 100, min = 0, step = 1, size = 'sm', onChange }, ref) => {\n    if (max <= min) {\n        throw new Error('max must be greater than min');\n    }\n    const [value, setValue] = React.useState(defaultValue)\n    React.useEffect(() => {\n        setValue(userValue)\n    }, [userValue])\n\n    const getDecimalCount = (value: number) => {\n        return (String(value).split('.')[1] || '').length;\n    }\n    const roundValue = (value: number, decimalCount: number) => {\n        const rounder = Math.pow(10, decimalCount);\n        return Math.round(value * rounder) / rounder;\n    }\n    const valueAdd = () => {\n        const sum = roundValue(value + step, getDecimalCount(step))\n        const updateValue = sum > max ? max : sum\n        setValue(updateValue)\n        onChange?.(updateValue)\n    }\n    const valueReduce = () => {\n        const sum = roundValue(value - step, getDecimalCount(step))\n        const updateValue = sum < min ? min : sum\n        setValue(updateValue)\n        onChange?.(updateValue)\n    }\n    return (<div className={cname(\"flex items-center border input-border bg-gray-50 dark:bg-background-login rounded-md\", className)}>\n        <Button variant=\"ghost\" size={size} disabled={value === min} onClick={valueReduce}>-</Button>\n        <span className=\"min-w-10 block text-center\">{value}</span>\n        <Button variant=\"ghost\" size={size} disabled={value === max} onClick={valueAdd}>+</Button>\n    </div>)\n}\n)\nButtonNumber.displayName = \"ButtonNumber\"\n\nconst LoadButton = React.forwardRef<HTMLButtonElement, ButtonProps & { loading?: boolean }>(\n    ({ loading = false, disabled = false, ...props }, ref) => {\n        return <Button {...props} disabled={loading || disabled} ref={ref}>{loading && <LoadIcon className=\"mr-1\" />}{props.children}</Button>\n    }\n)\n\nexport { Button, ButtonNumber, LoadButton, buttonVariants }"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/calendar/datePicker.tsx",
    "content": "\"use client\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\"\nimport { formatDate } from \"@/util/utils\"\nimport { CalendarDays, Clock } from \"lucide-react\"\nimport { useMemo, useEffect, useState, useCallback, useRef } from \"react\"\nimport { Button } from \"../button\"\nimport { Calendar } from \"../calendar\"\nimport { cname } from \"../utils\"\nimport { useTranslation } from \"react-i18next\"\n\nconst parseDate = (value: string | Date | number | undefined): Date | null => {\n  if (!value) return null\n  if (value instanceof Date) return value\n\n  // 处理数字时间戳（可能是秒级或毫秒级）\n  if (typeof value === 'number') {\n    console.log('Parsing timestamp:', value)\n    // 判断是秒级还是毫秒级时间戳\n    // 如果数值小于 1000000000000（即小于 2001-09-09），则认为是秒级\n    const timestamp = value < 1000000000000 ? value * 1000 : value\n    const date = new Date(timestamp)\n    console.log('Timestamp result:', date)\n    return isNaN(date.getTime()) ? null : date\n  }\n\n  // 处理字符串日期\n  if (typeof value === 'string') {\n    let date: Date\n\n    // 处理 ISO 格式 (包含 T 的格式)\n    if (value.includes('T')) {\n      date = new Date(value)\n    }\n    // 处理 yyyy-MM-dd HH:mm:ss 格式\n    else if (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$/.test(value)) {\n      date = new Date(value.replace(' ', 'T'))\n    }\n    // 处理 yyyy-MM-dd 格式\n    else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n      date = new Date(value + 'T00:00:00')\n    }\n    // 其他格式\n    else {\n      date = new Date(value)\n    }\n\n    console.log('Parsing date string:', value, '->', date)\n    return isNaN(date.getTime()) ? null : date\n  }\n\n  return null\n}\n\n// 滚动式时间选择器列\nconst TimeColumn = ({\n  value,\n  onChange,\n  max,\n  label\n}: {\n  value: number\n  onChange: (val: number) => void\n  max: number\n  label: string\n}) => {\n  const columnRef = useRef<HTMLDivElement>(null)\n  const itemHeight = 32 // 每项高度\n  const scrollTimeoutRef = useRef<NodeJS.Timeout>()\n  const isScrollingRef = useRef(false)\n\n  // 滚动到指定值\n  const scrollToValue = useCallback((val: number, smooth = true) => {\n    if (columnRef.current) {\n      const scrollTop = val * itemHeight\n      columnRef.current.scrollTo({\n        top: scrollTop,\n        behavior: smooth ? 'smooth' : 'auto'\n      })\n    }\n  }, [itemHeight])\n\n  // 初始化滚动位置\n  useEffect(() => {\n    scrollToValue(value, false)\n  }, [])\n\n  // 当 value 变化时，平滑滚动到新位置\n  useEffect(() => {\n    if (columnRef.current && !isScrollingRef.current) {\n      scrollToValue(value, true)\n    }\n  }, [value, scrollToValue])\n\n  // 处理滚动事件\n  const handleScroll = useCallback(() => {\n    if (!columnRef.current) return\n\n    isScrollingRef.current = true\n\n    // 清除之前的定时器\n    if (scrollTimeoutRef.current) {\n      clearTimeout(scrollTimeoutRef.current)\n    }\n\n    // 设置新的定时器，在滚动停止后对齐\n    scrollTimeoutRef.current = setTimeout(() => {\n      if (!columnRef.current) return\n\n      const scrollTop = columnRef.current.scrollTop\n      const currentIndex = Math.round(scrollTop / itemHeight)\n      const clampedIndex = Math.max(0, Math.min(max, currentIndex))\n\n      if (clampedIndex !== value) {\n        onChange(clampedIndex)\n      }\n\n      isScrollingRef.current = false\n    }, 150) // 滚动结束后150ms触发对齐\n  }, [value, onChange, max, itemHeight])\n\n  // 处理点击\n  const handleClick = useCallback((val: number) => {\n    onChange(val)\n    scrollToValue(val, true)\n  }, [onChange, scrollToValue])\n\n  // 处理滚轮事件\n  const handleWheel = useCallback((e: React.WheelEvent) => {\n    e.preventDefault()\n    if (!columnRef.current) return\n\n    const delta = e.deltaY > 0 ? 1 : -1\n    const newValue = Math.max(0, Math.min(max, value + delta))\n\n    onChange(newValue)\n    scrollToValue(newValue, true)\n  }, [value, onChange, max, scrollToValue])\n\n  // 清理定时器\n  useEffect(() => {\n    return () => {\n      if (scrollTimeoutRef.current) {\n        clearTimeout(scrollTimeoutRef.current)\n      }\n    }\n  }, [])\n\n  return (\n    <div className=\"flex flex-col items-center\">\n      <div className=\"text-xs text-muted-foreground mb-1\">{label}</div>\n      <div className=\"relative h-40 w-16 overflow-hidden rounded border border-border\">\n        {/* 选中指示器 */}\n        {/* <div className=\"absolute top-1/2 left-0 right-0 h-8 -translate-y-1/2 border-y border-primary/20 bg-primary/5 pointer-events-none z-10\" /> */}\n\n        {/* 滚动列表 */}\n        <div\n          ref={columnRef}\n          className=\"h-full overflow-y-auto scrollbar-hide scroll-smooth\"\n          style={{\n            paddingTop: `${itemHeight * 2}px`,\n            paddingBottom: `${itemHeight * 2}px`\n          }}\n          onScroll={handleScroll}\n          onWheel={handleWheel}\n        >\n          {Array.from({ length: max + 1 }, (_, i) => (\n            <div\n              key={i}\n              className={cname(\n                \"flex items-center justify-center cursor-pointer transition-colors text-sm select-none\",\n                value === i ? \"text-foreground font-semibold\" : \"text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n              )}\n              style={{\n                height: `${itemHeight}px`\n              }}\n              onClick={() => handleClick(i)}\n            >\n              {i.toString().padStart(2, '0')}\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  )\n}\n\n// 时间选择器弹窗\nconst TimePicker = ({\n  value,\n  onChange\n}: {\n  value: { hour: number; minute: number; second: number }\n  onChange: (time: { hour: number; minute: number; second: number }) => void\n}) => {\n  const [open, setOpen] = useState(false)\n  const [tempTime, setTempTime] = useState(value)\n  const { t } = useTranslation('knowledge');\n  // 当弹窗打开时，同步外部时间到临时状态\n  useEffect(() => {\n    if (open) {\n      setTempTime(value)\n    }\n  }, [open, value])\n\n  const handleConfirm = useCallback(() => {\n    onChange(tempTime)\n    setOpen(false)\n  }, [tempTime, onChange])\n\n  const handleNow = useCallback(() => {\n    const now = new Date()\n    const newTime = {\n      hour: now.getHours(),\n      minute: now.getMinutes(),\n      second: now.getSeconds()\n    }\n    setTempTime(newTime)\n    onChange(newTime) // 立即更新外部状态\n  }, [onChange])\n\n  const timeStr = useMemo(() =>\n    `${value.hour.toString().padStart(2, '0')}:${value.minute.toString().padStart(2, '0')}:${value.second.toString().padStart(2, '0')}`,\n    [value]\n  )\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          className=\"h-8 px-2 font-normal\"\n        >\n          <Clock className=\"mr-1.5 h-3.5 w-3.5\" />\n          {timeStr}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-2\" align=\"center\">\n        <div className=\"flex flex-col gap-2\">\n          <div className=\"flex gap-2 justify-center\">\n            <TimeColumn\n              value={tempTime.hour}\n              onChange={(hour) => setTempTime(prev => ({ ...prev, hour }))}\n              max={23}\n              label=\"时\"\n            />\n            <TimeColumn\n              value={tempTime.minute}\n              onChange={(minute) => setTempTime(prev => ({ ...prev, minute }))}\n              max={59}\n              label=\"分\"\n            />\n            <TimeColumn\n              value={tempTime.second}\n              onChange={(second) => setTempTime(prev => ({ ...prev, second }))}\n              max={59}\n              label=\"秒\"\n            />\n          </div>\n          <div className=\"flex gap-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={handleNow}\n              className=\"flex-1\"\n            >\n              {t('now')}\n            </Button>\n            <Button\n              size=\"sm\"\n              onClick={handleConfirm}\n              className=\"flex-1\"\n            >\n              {t('confirm1')}\n            </Button>\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}\n\ninterface DatePickerProps {\n  value?: string | Date\n  placeholder?: string\n  onChange?: (date: Date) => void\n  showTime?: boolean\n  dateFormat?: string\n  disabled?: boolean\n}\n\nexport function DatePicker({\n  value,\n  placeholder = '',\n  onChange,\n  showTime = false,\n  dateFormat = showTime ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd',\n  disabled = false\n}: DatePickerProps) {\n  const { t } = useTranslation('knowledge');\n  console.log('DatePicker value:', value)\n\n  const initialDate = useMemo(() => parseDate(value), [value])\n  const now = useMemo(() => new Date(), [])\n\n  const [date, setDate] = useState<Date | null>(initialDate)\n  const [time, setTime] = useState({\n    hour: initialDate ? initialDate.getHours() : now.getHours(),\n    minute: initialDate ? initialDate.getMinutes() : now.getMinutes(),\n    second: initialDate ? initialDate.getSeconds() : now.getSeconds()\n  })\n  const [open, setOpen] = useState(false)\n\n  const isInternalChangeRef = useRef(false)\n\n  const dateStr = useMemo(() => {\n    if (!date) return ''\n    const mergedDate = new Date(date)\n    if (showTime) {\n      mergedDate.setHours(time.hour)\n      mergedDate.setMinutes(time.minute)\n      mergedDate.setSeconds(time.second)\n    }\n    return formatDate(mergedDate, dateFormat)\n  }, [date, time, showTime, dateFormat])\n\n  useEffect(() => {\n    if (isInternalChangeRef.current) {\n      isInternalChangeRef.current = false\n      return\n    }\n\n    const parsed = parseDate(value)\n    setDate(parsed)\n\n    if (showTime && parsed) {\n      setTime({\n        hour: parsed.getHours(),\n        minute: parsed.getMinutes(),\n        second: parsed.getSeconds()\n      })\n    }\n  }, [value, showTime])\n\n\n  const handleTimeChange = useCallback((newTime: { hour: number; minute: number; second: number }) => {\n    setTime(newTime)\n  }, [])\n\n  const handleConfirm = useCallback(() => {\n    if (!date) return\n    handleSave(date)\n    setOpen(false)\n  }, [date, time, showTime, onChange])\n\n  const handleSave = (date) => {\n    const mergedDate = new Date(date)\n    if (showTime) {\n      mergedDate.setHours(time.hour, time.minute, time.second, 0)\n    } else {\n      mergedDate.setHours(0, 0, 0, 0)\n    }\n    isInternalChangeRef.current = true\n    onChange?.(mergedDate)\n  }\n\n  const handleNow = useCallback(() => {\n    const now = new Date()\n    setDate(now)\n    if (showTime) {\n      setTime({\n        hour: now.getHours(),\n        minute: now.getMinutes(),\n        second: now.getSeconds()\n      })\n    }\n  }, [showTime])\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant=\"outline\"\n          disabled={disabled}\n          className={cname(\n            \"w-full justify-start text-left font-normal bg-search-input\",\n            !dateStr && \"text-muted-foreground\"\n          )}\n        >\n          <CalendarDays className={cname(\n            \"h-4 w-4\",\n            !dateStr && \"mr-2\"\n          )} />\n          {dateStr || <span>{placeholder}</span>}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        className=\"w-auto p-0\"\n        align=\"start\"\n      >\n        <div className=\"\">\n          <Calendar\n            mode=\"single\"\n            selected={date}\n            onSelect={(d) => {\n              setDate(d)\n              !showTime && handleSave(d)\n            }}\n            initialFocus\n          />\n\n          {showTime && (\n            <div className=\"flex flex-col mx-2 mt-0 py-2 border-t\">\n              <div className=\"flex items-center justify-between\">\n                <TimePicker\n                  value={time}\n                  onChange={handleTimeChange}\n                />\n                <div className=\"flex gap-2\">\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    onClick={handleNow}\n                  >\n                    {t('now')}\n                  </Button>\n                  <Button\n                    size=\"sm\"\n                    onClick={handleConfirm}\n                    disabled={!date}\n                  >\n                    {t('confirm1')}\n                  </Button>\n                </div>\n              </div>\n            </div>\n          )}\n        </div>\n      </PopoverContent>\n    </Popover>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/calendar/index.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/utils\";\nimport { enUS, zhCN } from 'date-fns/locale';\nimport i18next from \"i18next\";\nimport {\n    ChevronDownIcon,\n    ChevronLeftIcon,\n    ChevronRightIcon,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n    DayPicker,\n    getDefaultClassNames,\n    type DayButton,\n} from \"react-day-picker\";\nimport { Button, buttonVariants } from \"../button\";\n\nfunction Calendar({\n    className,\n    classNames,\n    showOutsideDays = false,\n    captionLayout = \"label\",\n    buttonVariant = \"ghost\",\n    formatters,\n    components,\n    ...props\n}: React.ComponentProps<typeof DayPicker> & {\n    buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n    const defaultClassNames = getDefaultClassNames()\n\n    return (\n        <DayPicker\n            locale={i18next.language === 'zh-Hans' ? zhCN : enUS}\n            showOutsideDays={showOutsideDays}\n            className={cn(\n                \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n                String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n                String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n                className\n            )}\n            captionLayout={captionLayout}\n            formatters={{\n                formatMonthDropdown: (date) =>\n                    date.toLocaleString(\"default\", { month: \"short\" }),\n                ...formatters,\n            }}\n            classNames={{\n                root: cn(\"w-fit\", defaultClassNames.root, props.mode === \"range\" ? \"min-w-[420px]\" : \"min-w-56\"),\n                months: cn(\n                    \"flex gap-4 flex-col md:flex-row relative\",\n                    defaultClassNames.months\n                ),\n                month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n                nav: cn(\n                    \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n                    defaultClassNames.nav\n                ),\n                button_previous: cn(\n                    buttonVariants({ variant: buttonVariant }),\n                    \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n                    defaultClassNames.button_previous\n                ),\n                button_next: cn(\n                    buttonVariants({ variant: buttonVariant }),\n                    \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n                    defaultClassNames.button_next\n                ),\n                month_caption: cn(\n                    \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n                    defaultClassNames.month_caption\n                ),\n                dropdowns: cn(\n                    \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n                    defaultClassNames.dropdowns\n                ),\n                dropdown_root: cn(\n                    \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n                    defaultClassNames.dropdown_root\n                ),\n                dropdown: cn(\n                    \"absolute bg-popover inset-0 opacity-0\",\n                    defaultClassNames.dropdown\n                ),\n                caption_label: cn(\n                    \"select-none font-medium\",\n                    captionLayout === \"label\"\n                        ? \"text-sm\"\n                        : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n                    defaultClassNames.caption_label\n                ),\n                table: \"w-full border-collapse\",\n                weekdays: cn(\"flex\", defaultClassNames.weekdays),\n                weekday: cn(\n                    \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n                    defaultClassNames.weekday\n                ),\n                week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n                week_number_header: cn(\n                    \"select-none w-(--cell-size)\",\n                    defaultClassNames.week_number_header\n                ),\n                week_number: cn(\n                    \"text-[0.8rem] select-none text-muted-foreground\",\n                    defaultClassNames.week_number\n                ),\n                day: cn(\n                    \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n                    props.showWeekNumber\n                        ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n                        : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n                    defaultClassNames.day\n                ),\n                range_start: cn(\n                    \"rounded-l-md bg-accent\",\n                    defaultClassNames.range_start\n                ),\n                range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n                range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n                today: cn(\n                    \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n                    defaultClassNames.today\n                ),\n                outside: cn(\n                    \"text-muted-foreground aria-selected:text-muted-foreground\",\n                    defaultClassNames.outside\n                ),\n                disabled: cn(\n                    \"text-muted-foreground opacity-50\",\n                    defaultClassNames.disabled\n                ),\n                hidden: cn(\"invisible\", defaultClassNames.hidden),\n                ...classNames,\n            }}\n            components={{\n                Root: ({ className, rootRef, ...props }) => {\n                    return (\n                        <div\n                            data-slot=\"calendar\"\n                            ref={rootRef}\n                            className={cn(className)}\n                            {...props}\n                        />\n                    )\n                },\n                Chevron: ({ className, orientation, ...props }) => {\n                    if (orientation === \"left\") {\n                        return (\n                            <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n                        )\n                    }\n\n                    if (orientation === \"right\") {\n                        return (\n                            <ChevronRightIcon\n                                className={cn(\"size-4\", className)}\n                                {...props}\n                            />\n                        )\n                    }\n\n                    return (\n                        <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n                    )\n                },\n                DayButton: CalendarDayButton,\n                WeekNumber: ({ children, ...props }) => {\n                    return (\n                        <td {...props}>\n                            <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n                                {children}\n                            </div>\n                        </td>\n                    )\n                },\n                ...components,\n            }}\n            {...props}\n        />\n    )\n}\n\nfunction CalendarDayButton({\n    className,\n    day,\n    modifiers,\n    ...props\n}: React.ComponentProps<typeof DayButton>) {\n    const defaultClassNames = getDefaultClassNames()\n\n    const ref = React.useRef<HTMLButtonElement>(null)\n    React.useEffect(() => {\n        if (modifiers.focused) ref.current?.focus()\n    }, [modifiers.focused])\n\n    return (\n        <Button\n            ref={ref}\n            variant=\"ghost\"\n            size=\"icon\"\n            data-day={day.date.toLocaleDateString()}\n            data-selected-single={\n                modifiers.selected &&\n                !modifiers.range_start &&\n                !modifiers.range_end &&\n                !modifiers.range_middle\n            }\n            data-range-start={modifiers.range_start}\n            data-range-end={modifiers.range_end}\n            data-range-middle={modifiers.range_middle}\n            className={cn(\n                \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n                defaultClassNames.day,\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nexport { Calendar, CalendarDayButton };\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/card/index.tsx",
    "content": "import * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst Card = React.forwardRef<\n    HTMLDivElement,\n    React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n    <div\n        ref={ref}\n        className={cname(\n            \"rounded-md bg-card text-card-foreground border border-transparent hover:shadow-[0_8px_16px_0px_rgba(40,47,84,0.15)] hover:border-[#EDF0F4] dark:hover:border-[#282829] relative hover:z-10\",\n            className\n        )}\n        {...props}\n    />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n    HTMLDivElement,\n    React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n    <div\n        ref={ref}\n        className={cname(\"flex flex-col space-y-1.5 p-5 pb-4\", className)}\n        {...props}\n    />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n    HTMLParagraphElement,\n    React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n    <h3\n        ref={ref}\n        className={cname(\"font-semibold leading-none tracking-tight\", className)}\n        {...props}\n    />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n    HTMLParagraphElement,\n    React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n    <p\n        ref={ref}\n        className={cname(\"text-sm text-muted-foreground \", className)}\n        {...props}\n    />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n    HTMLDivElement,\n    React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n    <div ref={ref} className={cname(\"p-5 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n    HTMLDivElement,\n    React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n    <div\n        ref={ref}\n        className={cname(\"flex items-center p-5 pb-4 pt-0\", className)}\n        {...props}\n    />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/checkBox/index.tsx",
    "content": "\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cname } from \"../utils\";\n\nconst Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cname(\n      \"peer h-4 w-4 shrink-0 rounded-sm border border-gray-400 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground\",\n      className\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator\n      className={cname(\"flex items-center justify-center text-current\")}\n    >\n      <Check className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/command.tsx",
    "content": "\"use client\"\n\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cn } from \"../../utils\"\nimport { Dialog, DialogContent } from \"./dialog\"\n\nconst Command = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n    <CommandPrimitive\n        ref={ref}\n        className={cn(\n            \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n            className\n        )}\n        {...props}\n    />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps { }\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n    return (\n        <Dialog {...props}>\n            <DialogContent className=\"overflow-hidden p-0\">\n                <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n                    {children}\n                </Command>\n            </DialogContent>\n        </Dialog>\n    )\n}\n\nconst CommandInput = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.Input>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n    <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n        <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n        <CommandPrimitive.Input\n            ref={ref}\n            className={cn(\n                \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n                className\n            )}\n            {...props}\n        />\n    </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.List>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n    <CommandPrimitive.List\n        ref={ref}\n        className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n        {...props}\n    />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.Empty>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n    <CommandPrimitive.Empty\n        ref={ref}\n        className=\"py-6 text-center text-sm\"\n        {...props}\n    />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.Group>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n    <CommandPrimitive.Group\n        ref={ref}\n        className={cn(\n            \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n            className\n        )}\n        {...props}\n    />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.Separator>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n    <CommandPrimitive.Separator\n        ref={ref}\n        className={cn(\"-mx-1 h-px bg-border\", className)}\n        {...props}\n    />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n    React.ElementRef<typeof CommandPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n    <CommandPrimitive.Item\n        ref={ref}\n        className={cn(\n            \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n            className\n        )}\n        {...props}\n    />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n    return (\n        <span\n            className={cn(\n                \"ml-auto text-xs tracking-widest text-muted-foreground\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n    Command,\n    CommandDialog, CommandEmpty,\n    CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/dialog/DialogForceUpdate.tsx",
    "content": "import { useState } from \"react\";\nimport { Dialog, DialogTrigger } from \".\";\n\n// 强制刷新children的 dialog 组件\nexport default function DialogForceUpdate({ children, trigger }) {\n\n    const [open, setOpen] = useState(false);\n\n    return <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger asChild>\n            {trigger}\n        </DialogTrigger>\n        {open ? children : null}\n    </Dialog>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/dialog/index.tsx",
    "content": "\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Overlay>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Overlay\n        ref={ref}\n        className={cname(\n            \"fixed inset-0 z-50 bg-black/40  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n            className\n        )}\n        {...props}\n    />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, close = true, ...props }, ref) => (\n    <DialogPortal>\n        <DialogOverlay />\n        <DialogPrimitive.Content\n            ref={ref}\n            className={cname(\n                \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background dark:bg-[#303134] p-5 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg outline-none\",\n                className\n            )}\n            {...props}\n        >\n            {children}\n            {close && <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n                <X className=\"h-4 w-4\" />\n                <span className=\"sr-only\">Close</span>\n            </DialogPrimitive.Close>}\n        </DialogPrimitive.Content>\n    </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex flex-col space-y-1.5 text-center sm:text-left\",\n            className\n        )}\n        {...props}\n    />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n            className\n        )}\n        {...props}\n    />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Title>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Title\n        ref={ref}\n        className={cname(\n            \"text-base font-semibold leading-none tracking-tight\",\n            className\n        )}\n        {...props}\n    />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Description>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Description\n        ref={ref}\n        className={cname(\"text-sm text-muted-foreground\", className)}\n        {...props}\n    />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n    Dialog, DialogClose,\n    DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/dropdownMenu/index.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { cn } from \"@/utils\"\n\nfunction DropdownMenu({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n    return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n    return (\n        <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n    )\n}\n\nfunction DropdownMenuTrigger({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n    return (\n        <DropdownMenuPrimitive.Trigger\n            data-slot=\"dropdown-menu-trigger\"\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuContent({\n    className,\n    sideOffset = 4,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n    return (\n        <DropdownMenuPrimitive.Portal>\n            <DropdownMenuPrimitive.Content\n                data-slot=\"dropdown-menu-content\"\n                sideOffset={sideOffset}\n                className={cn(\n                    \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n                    className\n                )}\n                {...props}\n            />\n        </DropdownMenuPrimitive.Portal>\n    )\n}\n\nfunction DropdownMenuGroup({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n    return (\n        <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n    )\n}\n\nfunction DropdownMenuItem({\n    className,\n    inset,\n    variant = \"default\",\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n    variant?: \"default\" | \"destructive\"\n}) {\n    return (\n        <DropdownMenuPrimitive.Item\n            data-slot=\"dropdown-menu-item\"\n            data-inset={inset}\n            data-variant={variant}\n            className={cn(\n                \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus-visible:outline-none\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuCheckboxItem({\n    className,\n    children,\n    checked,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n    return (\n        <DropdownMenuPrimitive.CheckboxItem\n            data-slot=\"dropdown-menu-checkbox-item\"\n            className={cn(\n                \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n                className\n            )}\n            checked={checked}\n            {...props}\n        >\n            <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n                <DropdownMenuPrimitive.ItemIndicator>\n                    <CheckIcon className=\"size-4\" />\n                </DropdownMenuPrimitive.ItemIndicator>\n            </span>\n            {children}\n        </DropdownMenuPrimitive.CheckboxItem>\n    )\n}\n\nfunction DropdownMenuRadioGroup({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n    return (\n        <DropdownMenuPrimitive.RadioGroup\n            data-slot=\"dropdown-menu-radio-group\"\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuRadioItem({\n    className,\n    children,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n    return (\n        <DropdownMenuPrimitive.RadioItem\n            data-slot=\"dropdown-menu-radio-item\"\n            className={cn(\n                \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n                className\n            )}\n            {...props}\n        >\n            <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n                <DropdownMenuPrimitive.ItemIndicator>\n                    <CircleIcon className=\"size-2 fill-current\" />\n                </DropdownMenuPrimitive.ItemIndicator>\n            </span>\n            {children}\n        </DropdownMenuPrimitive.RadioItem>\n    )\n}\n\nfunction DropdownMenuLabel({\n    className,\n    inset,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n}) {\n    return (\n        <DropdownMenuPrimitive.Label\n            data-slot=\"dropdown-menu-label\"\n            data-inset={inset}\n            className={cn(\n                \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuSeparator({\n    className,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n    return (\n        <DropdownMenuPrimitive.Separator\n            data-slot=\"dropdown-menu-separator\"\n            className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuShortcut({\n    className,\n    ...props\n}: React.ComponentProps<\"span\">) {\n    return (\n        <span\n            data-slot=\"dropdown-menu-shortcut\"\n            className={cn(\n                \"text-muted-foreground ml-auto text-xs tracking-widest\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nfunction DropdownMenuSub({\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n    return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n    className,\n    inset,\n    children,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n}) {\n    return (\n        <DropdownMenuPrimitive.SubTrigger\n            data-slot=\"dropdown-menu-sub-trigger\"\n            data-inset={inset}\n            className={cn(\n                \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus-visible:outline-none\",\n                className\n            )}\n            {...props}\n        >\n            {children}\n            <ChevronRightIcon className=\"ml-auto size-4\" />\n        </DropdownMenuPrimitive.SubTrigger>\n    )\n}\n\nfunction DropdownMenuSubContent({\n    className,\n    ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n    return (\n        <DropdownMenuPrimitive.SubContent\n            data-slot=\"dropdown-menu-sub-content\"\n            className={cn(\n                \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n                className\n            )}\n            {...props}\n        />\n    )\n}\n\nexport {\n    DropdownMenu,\n    DropdownMenuPortal,\n    DropdownMenuTrigger,\n    DropdownMenuContent,\n    DropdownMenuGroup,\n    DropdownMenuLabel,\n    DropdownMenuItem,\n    DropdownMenuCheckboxItem,\n    DropdownMenuRadioGroup,\n    DropdownMenuRadioItem,\n    DropdownMenuSeparator,\n    DropdownMenuShortcut,\n    DropdownMenuSub,\n    DropdownMenuSubTrigger,\n    DropdownMenuSubContent,\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/editLabel/index.tsx",
    "content": "import { PenLine } from \"lucide-react\";\nimport { useContext, useRef, useState } from \"react\";\nimport { alertContext } from \"../../../contexts/alertContext\";\n\nexport default function EditLabel({ str, rule, children, onChange }) {\n    const [edit, setEdit] = useState(false)\n    const inputRef = useRef(null)\n\n    const { setErrorData } = useContext(alertContext);\n\n    const handleChange = () => {\n        const value = inputRef.current.value\n        if (rule.length) {\n            const errors = []\n            rule.forEach(r => {\n                if (r.pattern) {\n                    if (!r.pattern.test(value)) {\n                        errors.push(r.message)\n                    }\n                }\n                if (r.validator) {\n                    if (!r.validator(value)) {\n                        errors.push(r.message)\n                    }\n                }\n            })\n\n            if (errors.length) return setErrorData({\n                title: \"\",\n                list: errors,\n            });\n        }\n        setEdit(false)\n        onChange(value)\n    }\n\n    if (edit) return <div className=\"\">\n        <input\n            type=\"text\"\n            ref={inputRef}\n            defaultValue={str}\n            onKeyDown={(e) => {\n                e.key === 'Enter' && handleChange();\n                e.code === 'Space' && e.preventDefault();\n            }}\n            onBlur={handleChange}\n            className=\"flex h-6 w-full rounded-xl border border-input bg-search-input px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n        />\n    </div>\n\n\n    return <div className=\"flex items-center text-gray-900 dark:text-gray-300 group\">\n        {children(inputRef.current?.value || str)}\n        <button\n            className=\"hidden transition-all group-hover:block\"\n            // title={t('flow.editAlias')}\n            onClick={() => setEdit(true)}\n        >\n            <PenLine size={18} className=\"ml-2 cursor-pointer\" />\n        </button>\n    </div >\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/input/avator.tsx",
    "content": "import { Camera, X } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useToast } from \"../toast/use-toast\";\nimport { cname } from \"../utils\";\n\n// 头像\nexport default function Avator({\n    size = 5 * 1024 * 1024,\n    accept = \"image/jpeg,image/png\",\n    value,\n    close = false,\n    className,\n    onChange,\n    children\n}) {\n    const { message } = useToast();\n    const { t } = useTranslation()\n    const defaultButtonName = t('build.uploadAvator');\n\n    const handleFileChange = (event) => {\n        const file = event.target.files[0];\n        if (file) {\n            const isValidSize = file.size <= size;\n            const isValidType = accept.split(',').some(type => file.type === type);\n\n            const errormgs = []\n            if (!isValidSize) errormgs.push(`${t('build.fileSizeLimit')} ${size / 1024 / 1024}MB`)\n            if (!isValidType) errormgs.push(`${t('build.fileTypeLimit')} ${accept}`)\n\n            errormgs.length ? message({\n                variant: 'error',\n                description: errormgs\n            }) : onChange(file)\n        }\n    };\n\n    return <div className={cname(\"flex w-full rounded-md gap-4\", className)}>\n        <div className=\"relative group\">\n            {\n                value ? <img src={value} className=\"max-w-24 max-h-24 min-w-8 min-h-8 rounded-md object-cover border\" alt=\"\" /> : children\n            }\n            <div className=\"absolute left-0 top-0 w-full h-full opacity-0 group-hover:opacity-100 transition-opacity duration-300 bg-black/50 flex items-center justify-center rounded-md\">\n                <input\n                    className=\"absolute top-0 left-0 inset-0 w-full h-full opacity-0 cursor-pointer\"\n                    type=\"file\"\n                    accept={accept}\n                    onChange={handleFileChange}\n                />\n                <Camera className=\"text-gray-50 w-6 h-6\" />\n                {close && value && <div className=\"absolute -top-3 -right-3 bg-gray-50 rounded-full p-1 cursor-pointer border border-gray-300\" onClick={() => onChange(null)}><X size={14} /></div>}\n            </div>\n        </div>\n        {/* <Button variant=\"outline\" className=\"relative\">\n            {buttonName || defaultButtonName}\n            <input\n                className=\" absolute top-0 left-0 inset-0 w-full h-full opacity-0 cursor-pointer\"\n                type=\"file\"\n                accept={accept}\n                onChange={handleFileChange}\n            />\n        </Button> */}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/input/editTitle.tsx",
    "content": "import { PenLine } from \"lucide-react\";\nimport { useRef, useState } from \"react\";\nimport { Input } from \".\";\nimport { useToast } from \"../toast/use-toast\";\n\nexport default function EditTitle({ str, rule = [], className = '', children, onChange }) {\n    const [edit, setEdit] = useState(false)\n    const inputRef = useRef(null)\n\n    const { toast } = useToast()\n\n    const handleChange = () => {\n        const value = inputRef.current.value\n        if (rule.length) {\n            const errors = []\n            rule.forEach(r => {\n                if (r.pattern) {\n                    if (!r.pattern.test(value)) {\n                        errors.push(r.message)\n                    }\n                }\n                if (r.validator) {\n                    if (!r.validator(value)) {\n                        errors.push(r.message)\n                    }\n                }\n            })\n\n            if (errors.length) return toast({\n                title: \"\",\n                variant: \"error\",\n                description: errors,\n            })\n        }\n        setEdit(false)\n        onChange(value)\n    }\n\n    if (edit) return <div className=\"\">\n        <Input\n            type=\"text\"\n            ref={inputRef}\n            defaultValue={str}\n            onKeyDown={(e) => {\n                e.key === 'Enter' && handleChange();\n                e.code === 'Space' && e.preventDefault();\n            }}\n            onBlur={handleChange}\n            className=\"h-6\"\n        />\n    </div>\n\n\n    return <div className=\"flex items-center text-gray-900 dark:text-gray-300 group\">\n        {children(inputRef.current?.value || str)}\n        <button\n            className=\"hidden transition-all group-hover:block\"\n            // title={t('flow.editAlias')}\n            onClick={() => setEdit(true)}\n        >\n            <PenLine size={18} className={\"size-3.5 ml-2 cursor-pointer \" + className} />\n        </button>\n    </div >\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/input/index.tsx",
    "content": "import { CircleMinus, CirclePlus, Eye, EyeOff } from \"lucide-react\"\nimport * as React from \"react\"\nimport { useState } from \"react\"\nimport { SearchIcon } from \"../../bs-icons/search\"\nimport { cname, generateUUID } from \"../utils\"\nimport { QuestionTooltip } from \"../tooltip\"\n\nexport interface InputProps\n    extends React.InputHTMLAttributes<HTMLInputElement> {\n    boxClassName?: string;    // 外层容器的 className\n    showCount?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n    ({ className, boxClassName, type, maxLength, showCount, value, defaultValue, onChange, ...props }, ref) => {\n        const [currentValue, setCurrentValue] = useState(value ?? defaultValue ?? '');\n\n        const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n            const { value } = e.target;\n            if (type === \"number\") {\n                // 使用正则表达式精确阻止负数（包括粘贴操作）\n                if (/-/.test(value)) return;\n\n                // 阻止单独的0\n                if (props.min > 0 && value === \"0\") return;\n\n                // 最大长度限制\n                if (maxLength && value.length > maxLength) return;\n                // 最大值限制\n                if (props.max && value > props.max) return\n            }\n\n            setCurrentValue(value);\n            if (onChange) {\n                onChange(e);\n            }\n        };\n\n        // 处理粘贴事件\n        const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n            if (type === \"number\") {\n                const pasteData = e.clipboardData.getData('text/plain');\n                // 阻止包含负数的粘贴\n                if (/-/.test(pasteData)) {\n                    e.preventDefault();\n                }\n            }\n        };\n\n        React.useEffect(() => {\n            if (value !== undefined) {\n                // 处理外部传入值为0的情况\n                if (type === \"number\" && (value === 0 || value === \"0\")) {\n                    // setCurrentValue('');\n                } else {\n                    setCurrentValue(value);\n                }\n            }\n        }, [value, type]);\n\n        const noEmptyProps =\n            value === undefined ? {} : { value: currentValue }\n\n        return (\n            <div className={cname(\"relative w-full\", boxClassName)}>\n                <input\n                    type={type}\n                    className={cname(\n                        \"flex h-8 w-full rounded-md border border-input bg-search-input px-3 py-1 text-sm text-[#111] dark:text-gray-50 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n                        type === 'number' ? 'number-input-arrows' : '',\n                        className\n                    )}\n                    defaultValue={defaultValue}\n                    onChange={handleChange}\n                    onPaste={handlePaste} // 添加粘贴事件处理\n                    maxLength={maxLength}\n                    ref={ref}\n                    {...noEmptyProps}\n                    {...props}\n                />\n                {showCount && maxLength && (\n                    <div className=\"absolute right-1 bottom-1 text-xs text-gray-400 dark:text-gray-500\">\n                        {currentValue.length}/{maxLength}\n                    </div>\n                )}\n\n                <style jsx>{`\n                    .number-input-arrows::-webkit-inner-spin-button,\n                    .number-input-arrows::-webkit-outer-spin-button {\n                        opacity: 1;\n                    }\n                `}</style>\n            </div>\n        );\n    }\n);\nInput.displayName = \"Input\"\n\n\nconst SearchInput = React.forwardRef<HTMLInputElement, InputProps & { inputClassName?: string, iconClassName?: string }>(\n    ({ className, inputClassName, iconClassName, ...props }, ref) => {\n        return <div className={cname(\"relative\", className)}>\n            <SearchIcon className={cname(\"h-5 w-5 absolute left-2 top-2 text-gray-950 dark:text-gray-500 z-10\", iconClassName)} />\n            <Input type=\"text\" ref={ref} className={cname(\"pl-8 bg-search-input\", inputClassName)} {...props}></Input>\n        </div>\n    }\n)\n\nSearchInput.displayName = \"SearchInput\"\n\nexport const PassInput = React.forwardRef<HTMLInputElement, InputProps & {\n    inputClassName?: string,\n    iconClassName?: string\n}>(({\n    className,\n    inputClassName,\n    iconClassName,\n    value,\n    onChange,\n    id,\n    label,\n    placeholder = '',\n    error = '',\n    tooltip = '',\n    required = false,\n    name,\n    ...props\n}, ref) => {\n\n    const [displayValue, setDisplayValue] = useState('');\n    const [realValue, setRealValue] = useState(value || '');\n    const [showClear, setShowClear] = useState(false);\n\n    // 将真实值转换为星号显示\n    React.useEffect(() => {\n        setDisplayValue(value ? new Array(value.length).fill('•').join('') : '');\n        setRealValue(value || '');\n        setShowClear(!!value);\n    }, [value]);\n\n    const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const newValue = e.target.value;\n        const selectionStart = e.target.selectionStart;\n        const selectionEnd = e.target.selectionEnd;\n    if (\n        newValue.length !== displayValue.length &&\n        selectionStart === selectionEnd &&\n        Math.abs(newValue.length - displayValue.length) > 1\n        ) {\n        setRealValue(newValue);\n        setDisplayValue('•'.repeat(newValue.length));\n        setShowClear(newValue.length > 0);\n\n        if (onChange) {\n            const syntheticEvent = {\n            ...e,\n            target: {\n                ...e.target,\n                value: newValue,\n                name: name || ''\n            }\n            };\n            onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n        }\n        return;\n    }\n\n        // 处理全选删除的情况\n        if (selectionStart === 0 && selectionEnd === displayValue.length && newValue === '') {\n            // 用户全选并删除了所有内容\n            setRealValue('');\n            setDisplayValue('');\n            setShowClear(false);\n\n            if (onChange) {\n                const syntheticEvent = {\n                    ...e,\n                    target: {\n                        ...e.target,\n                        value: '',\n                        name: name || ''\n                    }\n                };\n                onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n            }\n            return;\n        }\n\n        // 处理部分选择删除的情况\n        if (newValue.length < displayValue.length && selectionStart !== null && selectionEnd !== null) {\n            // 用户选择了一段文本并删除\n            const deletedCount = displayValue.length - newValue.length;\n            const realValueArray = realValue.split('');\n            realValueArray.splice(selectionStart, deletedCount);\n            const updatedRealValue = realValueArray.join('');\n\n            setRealValue(updatedRealValue);\n            setDisplayValue(newValue.length > 0 ? new Array(newValue.length).fill('•').join('') : '');\n            setShowClear(newValue.length > 0);\n\n            if (onChange) {\n                const syntheticEvent = {\n                    ...e,\n                    target: {\n                        ...e.target,\n                        value: updatedRealValue,\n                        name: name || ''\n                    }\n                };\n                onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n            }\n            return;\n        }\n\n        // 原有逻辑：处理单个字符的添加或删除\n        if (newValue.length > displayValue.length) {\n            // 用户正在输入新字符\n            const addedChars = newValue.slice(displayValue.length);\n            const updatedRealValue = realValue + addedChars;\n            setRealValue(updatedRealValue);\n\n            if (onChange) {\n                const syntheticEvent = {\n                    ...e,\n                    target: {\n                        ...e.target,\n                        value: updatedRealValue,\n                        name: name || ''\n                    }\n                };\n                onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n            }\n        } else if (newValue.length < displayValue.length) {\n            // 用户正在删除字符（单个删除）\n            const deletedCount = displayValue.length - newValue.length;\n            const updatedRealValue = realValue.slice(0, -deletedCount);\n            setRealValue(updatedRealValue);\n\n            if (onChange) {\n                const syntheticEvent = {\n                    ...e,\n                    target: {\n                        ...e.target,\n                        value: updatedRealValue,\n                        name: name || ''\n                    }\n                };\n                onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n            }\n        }\n\n        // 更新显示值（星号）\n        setDisplayValue(newValue.length > 0 ? new Array(newValue.length).fill('•').join('') : '');\n        setShowClear(newValue.length > 0);\n    };\n\n    // 清空输入\n    const handleClear = () => {\n        setDisplayValue('');\n        setRealValue('');\n        setShowClear(false);\n\n        if (onChange) {\n            const syntheticEvent = {\n                target: {\n                    value: '',\n                    name: name || ''\n                }\n            };\n            onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n        }\n    };\n\n    // 处理粘贴事件\n    const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n        const pasteData = e.clipboardData.getData('text/plain');\n        if (pasteData) {\n            // 阻止默认粘贴行为，手动处理\n            e.preventDefault();\n\n            const updatedRealValue = realValue + pasteData;\n            setRealValue(updatedRealValue);\n\n            // 更新显示值（星号）\n            const newDisplayValue = displayValue + new Array(pasteData.length).fill('•').join('');\n            setDisplayValue(newDisplayValue);\n            setShowClear(true);\n\n            // 触发父组件的 onChange\n            if (onChange) {\n                const syntheticEvent = {\n                    target: {\n                        value: updatedRealValue,\n                        name: name || ''\n                    }\n                };\n                onChange(syntheticEvent as React.ChangeEvent<HTMLInputElement>);\n            }\n        }\n    };\n\n    return (\n        <div className={cname(\"\", className)}>\n            <label htmlFor={id} className=\"bisheng-label flex items-center gap-1 mb-2\">\n                {label}\n                {tooltip && <QuestionTooltip content={tooltip} />}\n                {required && <span className=\"bisheng-tip\">*</span>}\n            </label>\n\n            <div className=\"relative\">\n                <Input\n                    type=\"text\" // 使用 text 类型以便显示星号\n                    value={displayValue}\n                    placeholder={placeholder}\n                    onChange={handleInputChange}\n                    onPaste={handlePaste}\n                    className={cname(\"pr-20\", inputClassName)} // 增加右边距以容纳按钮\n                    id={id}\n                    name={name}\n                    ref={ref}\n                    {...props}\n                />\n            </div>\n\n            {error && <p className=\"bisheng-tip mt-1\">{typeof error === 'string' ? error : '不能为空'}</p>}\n        </div>\n    );\n});\nconst PasswordInput = React.forwardRef<HTMLInputElement, InputProps & { inputClassName?: string, iconClassName?: string }>(\n    ({ className, inputClassName, iconClassName, ...props }, ref) => {\n        const [type, setType] = useState('password')\n        const handleShowPwd = () => {\n            type === 'password' ? setType('text') : setType('password')\n        }\n        return <div className={cname(\"relative flex place-items-center\", className)}>\n            <Input type={type} ref={ref} className={cname(\"pr-8 bg-search-input\", inputClassName)} {...props}></Input>\n            {\n                type === 'password'\n                    ? <EyeOff onClick={handleShowPwd} className={cname(\"size-4 absolute right-2 text-gray-950 dark:text-gray-500 cursor-pointer\", iconClassName)} />\n                    : <Eye onClick={handleShowPwd} className={cname(\"size-4 absolute right-2 text-gray-950 dark:text-gray-500 cursor-pointer\", iconClassName)} />\n            }\n        </div>\n    }\n)\n\nPasswordInput.displayName = 'PasswordInput'\n\n\n/**\n * 多行文本\n */\nexport interface TextareaProps\n    extends React.TextareaHTMLAttributes<HTMLTextAreaElement> { }\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps & { boxClassName?: string }>(\n    ({ className, boxClassName = '', maxLength, value, defaultValue, onChange, ...props }, ref) => {\n        // 用于存储当前的输入值\n        const [currentValue, setCurrentValue] = useState(value || defaultValue || '');\n\n        // 处理 onChange 事件，更新 currentValue\n        const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n            if (onChange) {\n                onChange(e);\n            }\n            if (value === undefined && defaultValue === undefined) return\n            setCurrentValue(e.target.value);\n        };\n\n        // 当 value 或 defaultValue 改变时更新 currentValue\n        React.useEffect(() => {\n            if (value !== undefined) {\n                setCurrentValue(value || '');\n            }\n        }, [value]);\n\n        const noEmptyProps =\n            value === undefined ? {} : { value: currentValue }\n\n        return (\n            <div className={cname('relative w-full', boxClassName)}>\n                <textarea\n                    className={cname(\n                        \"flex min-h-[80px] w-full rounded-md border border-input bg-search-input px-3 py-2 text-sm text-[#111] dark:text-gray-50 shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n                        className\n                    )}\n                    ref={ref}\n                    defaultValue={defaultValue}\n                    maxLength={maxLength}\n                    onChange={handleChange}\n                    {...noEmptyProps}\n                    {...props}\n                />\n                {maxLength && (\n                    <div className=\"absolute right-1 bottom-1 text-xs text-gray-400 dark:text-gray-500\">\n                        {currentValue.length}/{maxLength}\n                    </div>\n                )}\n            </div>\n        );\n    }\n);\nTextarea.displayName = \"Textarea\"\n\n\n/**\n * input list\n */\nconst InputList = React.forwardRef<HTMLDivElement, InputProps & {\n    rules?: any[],\n    dict?: boolean, // value 数据结构类型\n    value?: string[],\n    inputClassName?: string,\n    className?: string,\n    defaultValue?: string[],\n    onChange?: (values: string[], info: { action: 'u' | 'd', id: string, value: string }) => void\n}>(\n    ({ rules = [], className, dict = false, inputClassName, value = [], defaultValue = [], ...props }, ref) => {\n        // 初始化 inputs 状态，为每个值分配唯一 ID\n        const [inputs, setInputs] = React.useState(() =>\n            dict ? value : value.map(val => ({ key: generateUUID(6), value: val }))\n        );\n\n        React.useEffect(() => {\n            if (dict) return\n            // 仅为新增的值分配新的 ID\n            const updatedInputs = value.map((val, index) => {\n                return inputs[index] && inputs[index].value === val\n                    ? inputs[index] // 如果当前输入项与外部值相同，则保持不变\n                    : { key: generateUUID(6), value: val }; // 否则，创建新的输入项\n            });\n            setInputs(updatedInputs);\n        }, [dict, value]); // 依赖项中包含 value，确保外部 value 更新时同步更新\n\n        const handleChange = (newValue, id, index) => {\n            let newInputs = inputs.map(input =>\n                input.key === id ? { ...input, value: newValue } : input\n            );\n            // push\n            if (index === newInputs.length - 1) {\n                newInputs = ([...newInputs, { key: generateUUID(6), value: '' }]);\n            }\n            setInputs(newInputs);\n            props.onChange(dict ? newInputs : newInputs.map(input => input.value), {\n                action: 'u',\n                id,\n                value: newValue\n            });\n        };\n\n        // delete input\n        const handleRemoveInput = (id) => {\n            const newInputs = inputs.filter(input => input.key !== id);\n            setInputs(newInputs);\n            props.onChange(dict ? newInputs : newInputs.map(input => input.value), {\n                action: 'd',\n                id,\n                value: ''\n            });\n        };\n\n        return <div className={cname('', className)}>\n            {\n                inputs.map((item, index) => (\n                    <div className=\"relative mb-2\">\n                        <Input\n                            key={item.key}\n                            defaultValue={item.value}\n                            className={cname('pr-8', inputClassName)}\n                            placeholder={props.placeholder || ''}\n                            onChange={(e) => handleChange(e.target.value, item.key, index)}\n                        // onInput={(e) => {\n                        //     rules.some(rule => {\n                        //         if (rule.maxLength && e.target.value.length > rule.maxLength) {\n                        //             e.target.parentNode.nextSibling.textContent = rule.message;\n                        //             e.target.parentNode.nextSibling.style.display = '';\n                        //             return true;\n                        //         }\n                        //         if (e.target.nextSibling) {\n                        //             e.target.parentNode.nextSibling.style.display = 'none';\n                        //         }\n                        //     })\n                        // }}\n                        // onFocus={(e) => {\n                        //     if (e.target.value && index === inputs.length - 1) {\n                        //         setInputs([...inputs, { id: generateUUID(8), value: '' }]);\n                        //     }\n                        // }}\n                        ></Input>\n                        <p className=\"text-sm text-red-500\" style={{ display: 'none' }}></p>\n                        {index === inputs.length - 1 ? <CirclePlus className=\"w-4 h-4 absolute top-2.5 right-2 text-gray-500 hover:text-gray-700 cursor-pointer\"\n                            onClick={() => {\n                                const newInputs = [...inputs, { key: generateUUID(6), value: '' }]\n                                setInputs(newInputs);\n                                props.onChange(dict ? newInputs : newInputs.map(input => input.value));\n                            }} /> : <CircleMinus\n                            onClick={(e) => {\n                                if (e.target.previousSibling) {\n                                    e.target.previousSibling.style.display = 'none';\n                                }\n                                handleRemoveInput(item.key)\n                            }} className=\"w-4 h-4 absolute top-2.5 right-2 text-gray-500 hover:text-gray-700 cursor-pointer\" />}\n                    </div>\n                ))\n            }\n        </div>\n    }\n)\n\nexport { Input, InputList, PasswordInput, SearchInput, Textarea }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/input/textInput.tsx",
    "content": "import { useState } from \"react\"\nimport { Input } from \".\"\n\nexport default function TextInput({\n    type = 'doubleclick',\n    value,\n    disabled = false,\n    onChange = (val) => { },\n    onSave = (val) => { },\n    ...props }) {\n\n    const [edit, setEdit] = useState(false)\n\n    if (edit) return <Input defaultValue={value} {...props}\n        onKeyDown={(event) => {\n            if (event.key === \"Enter\" && !event.shiftKey) {\n                event.preventDefault();\n                onSave(event.target.value)\n                setEdit(false)\n            }\n        }}\n        onBlur={e => {\n            onSave(e.target.value)\n            setEdit(false)\n        }}\n        onMouseLeave={() => setEdit(false)}\n        onChange={onChange}\n    ></Input>\n\n    if (disabled) return <p className=\"text-sm px-3 py-1 border border-transparent w-full overflow-hidden text-ellipsis truncate\">{value}</p>\n\n    return <p\n        className=\"text-sm px-3 py-1 border border-transparent w-full overflow-hidden text-ellipsis truncate\"\n        onDoubleClick={() => setEdit(true)} onMouseOver={() => type === 'hover' && setEdit(true)}>{value}</p>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/label/index.tsx",
    "content": "\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cname } from \"../utils\";\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n);\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cname(labelVariants(), className)}\n    {...props}\n  />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/multiSelect.tsx/Example.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { MultiSelect, type Option } from \"./index\"\n\nconst mockOptions: Option[] = [\n    { label: \"毕昇\", value: \"bisheng\" },\n    { label: \"CHATGPT\", value: \"openai\" },\n    { label: \"DEEPSEEK\", value: \"deepseek\" },\n    { label: \"GPT-4\", value: \"gpt4\" },\n    { label: \"LLM\", value: \"llm\" },\n    { label: \"LLAMA\", value: \"llama\" },\n    { label: \"LLAMA2\", value: \"llama2\" },\n    { label: \"LLAMA3\", value: \"llama3\" }\n]\n\nconst mockDatabase: Record<string, Option> = {\n    \"user-123\": { label: \"张三 (User)\", value: \"user-123\" },\n    \"user-456\": { label: \"李四 (Admin)\", value: \"user-456\" },\n    \"user-789\": { label: \"王五 (Manager)\", value: \"user-789\" },\n    \"dept-001\": { label: \"技术部\", value: \"dept-001\" },\n    \"dept-002\": { label: \"产品部\", value: \"dept-002\" },\n    \"dept-003\": { label: \"设计部\", value: \"dept-003\" },\n}\n\nexport default function MultiSelectDemo() {\n    const [selectedFrameworks, setSelectedFrameworks] = useState<string[]>([\"react\", \"nextjs\"])\n    const [singleValue, setSingleValue] = useState<string[]>([])\n    const [searchResults, setSearchResults] = useState<Option[]>(mockOptions)\n    const [loading, setLoading] = useState(false)\n\n    const [selectedUsers, setSelectedUsers] = useState<string[]>([\"user-123\", \"user-456\", \"dept-001\"])\n\n    const handleSearch = async (query: string) => {\n        setLoading(true)\n        // Simulate API call\n        setTimeout(() => {\n            const filtered = mockOptions.filter((option) => option.label.toLowerCase().includes(query.toLowerCase()))\n            setSearchResults(filtered)\n            setLoading(false)\n        }, 500)\n    }\n\n    const handleFetchByIds = async (ids: string[]): Promise<Option[]> => {\n        console.log(\"[v0] Fetching options for IDs:\", ids)\n\n        // Simulate API delay\n        await new Promise((resolve) => setTimeout(resolve, 1000))\n\n        const results: Option[] = []\n        ids.forEach((id) => {\n            const option = mockDatabase[id]\n            if (option) {\n                results.push(option)\n            } else {\n                // Return error option for unknown IDs\n                results.push({\n                    value: id,\n                    label: `Unknown (${id})`,\n                    error: true,\n                })\n            }\n        })\n\n        console.log(\"[v0] Fetched options:\", results)\n        return results\n    }\n\n    return (\n        <div className=\"container mx-auto p-8 space-y-8\">\n            <div className=\"space-y-2\">\n                <h1 className=\"text-3xl font-bold\">Multi-Select Component Demo</h1>\n                <p className=\"text-muted-foreground\">\n                    A redesigned multi-select component with improved accessibility, performance, and maintainability.\n                </p>\n            </div>\n\n            <div className=\"grid gap-8 md:grid-cols-2\">\n                <div className=\"space-y-4\">\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Multi-Select (Controlled)</h2>\n                        <MultiSelect\n                            options={mockOptions}\n                            value={selectedFrameworks}\n                            onValueChange={setSelectedFrameworks}\n                            placeholder=\"Select frameworks...\"\n                            searchPlaceholder=\"Search frameworks...\"\n                            multiple={true}\n                            searchable={true}\n                            clearable={true}\n                            lockedValues={[\"react\"]} // React is locked and cannot be removed\n                            maxDisplayed={2}\n                        />\n                        <p className=\"text-sm text-muted-foreground mt-2\">Selected: {selectedFrameworks.join(\", \") || \"None\"}</p>\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Single Select</h2>\n                        <MultiSelect\n                            options={mockOptions}\n                            value={singleValue}\n                            onValueChange={setSingleValue}\n                            placeholder=\"Select a framework...\"\n                            multiple={false}\n                            searchable={true}\n                            clearable={true}\n                        />\n                        <p className=\"text-sm text-muted-foreground mt-2\">Selected: {singleValue[0] || \"None\"}</p>\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">With External Search</h2>\n                        <MultiSelect\n                            options={searchResults}\n                            placeholder=\"Search and select...\"\n                            onSearch={handleSearch}\n                            loading={loading}\n                            searchable={true}\n                            multiple={true}\n                        />\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">With FetchByIds (回显场景)</h2>\n                        <MultiSelect\n                            options={[]} // No initial options\n                            value={selectedUsers}\n                            onValueChange={setSelectedUsers}\n                            onFetchByIds={handleFetchByIds}\n                            placeholder=\"Select users/departments...\"\n                            searchPlaceholder=\"Search users...\"\n                            multiple={true}\n                            searchable={true}\n                            clearable={true}\n                            maxDisplayed={2}\n                        />\n                        <p className=\"text-sm text-muted-foreground mt-2\">Selected: {selectedUsers.join(\", \") || \"None\"}</p>\n                        <p className=\"text-xs text-muted-foreground mt-1\">\n                            这个示例演示了回显场景：组件初始化时只有ID值，通过onFetchByIds获取对应的名称显示\n                        </p>\n                    </div>\n                </div>\n\n                <div className=\"space-y-4\">\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Error State</h2>\n                        <MultiSelect\n                            options={mockOptions}\n                            placeholder=\"This has an error...\"\n                            error={true}\n                            errorMessage=\"Please select at least one option\"\n                            multiple={true}\n                        />\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Disabled</h2>\n                        <MultiSelect\n                            options={mockOptions}\n                            defaultValue={[\"react\", \"vue\"]}\n                            placeholder=\"Disabled select...\"\n                            disabled={true}\n                            multiple={true}\n                        />\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Not Searchable</h2>\n                        <MultiSelect\n                            options={mockOptions.slice(0, 5)}\n                            placeholder=\"Select options...\"\n                            searchable={false}\n                            multiple={true}\n                        />\n                    </div>\n\n                    <div>\n                        <h2 className=\"text-xl font-semibold mb-2\">Custom Styling</h2>\n                        <MultiSelect\n                            options={mockOptions}\n                            placeholder=\"Custom styled...\"\n                            className=\"border-2 border-blue-200\"\n                            triggerClassName=\"bg-blue-50\"\n                            multiple={true}\n                        />\n                    </div>\n                </div>\n            </div>\n\n            <div className=\"space-y-2\">\n                <h2 className=\"text-xl font-semibold\">Key Improvements</h2>\n                <ul className=\"list-disc list-inside space-y-1 text-sm text-muted-foreground\">\n                    <li>\n                        <strong>Type Safety:</strong> Proper TypeScript interfaces and generics\n                    </li>\n                    <li>\n                        <strong>Accessibility:</strong> ARIA attributes, keyboard navigation, screen reader support\n                    </li>\n                    <li>\n                        <strong>Performance:</strong> React.memo, useMemo, useCallback for optimization\n                    </li>\n                    <li>\n                        <strong>Maintainability:</strong> Custom hooks, separated concerns, clean component structure\n                    </li>\n                    <li>\n                        <strong>Flexibility:</strong> Controlled/uncontrolled modes, extensive customization options\n                    </li>\n                    <li>\n                        <strong>User Experience:</strong> Better loading states, error handling, visual feedback\n                    </li>\n                    <li>\n                        <strong>FetchByIds:</strong> Support for fetching option names by IDs for echo scenarios\n                    </li>\n                </ul>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/multiSelect.tsx/index.tsx",
    "content": "\"use client\"\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { debounce } from \"lodash-es\"\nimport { Check, ChevronDown, Loader2, Search, X } from \"lucide-react\"\nimport * as React from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { Badge } from \"../badge\"\nimport { Button } from \"../button\"\nimport { Input } from \"../input\"\nimport { cname } from \"../utils\"\n\n// Types\nexport interface Option {\n    label: string\n    value: string\n    disabled?: boolean\n    loading?: boolean // Added loading state for individual options\n    error?: boolean // Added error state for individual options\n}\n\nexport interface MultiSelectProps {\n    // Core functionality\n    options: Option[]\n    value?: string[]\n    defaultValue?: string[]\n    onValueChange?: (value: string[]) => void\n\n    // UI Configuration\n    placeholder?: string\n    searchPlaceholder?: string\n    emptyMessage?: string\n    maxDisplayed?: number\n\n    // Behavior\n    multiple?: boolean\n    searchable?: boolean\n    clearable?: boolean\n    disabled?: boolean\n    loading?: boolean\n\n    // Validation\n    error?: boolean\n    errorMessage?: string\n    required?: boolean\n\n    // Advanced features\n    lockedValues?: string[]\n    onSearch?: (query: string) => void\n    onLoadMore?: () => void\n    hasMore?: boolean\n    onFetchByIds?: (ids: string[]) => Promise<Option[]>\n\n    // Styling\n    className?: string\n    triggerClassName?: string\n    contentClassName?: string\n\n    // Accessibility\n    id?: string\n    name?: string\n    \"aria-label\"?: string\n    \"aria-describedby\"?: string\n}\n\nfunction useOptionCache({ options, onFetchByIds }: Pick<MultiSelectProps, \"options\" | \"onFetchByIds\">) {\n    const [optionCache, setOptionCache] = React.useState<Map<string, Option>>(new Map())\n    const [fetchingIds, setFetchingIds] = React.useState<Set<string>>(new Set())\n\n    // Update cache when options change\n    React.useEffect(() => {\n        const newCache = new Map(optionCache)\n        options.forEach((option) => {\n            newCache.set(option.value, option)\n        })\n        setOptionCache(newCache)\n    }, [options])\n\n    // Function to fetch missing options by IDs\n    const fetchMissingOptions = React.useCallback(\n        async (ids: string[]) => {\n            if (!onFetchByIds) return\n\n            const missingIds = ids.filter((id) => !optionCache.has(id) && !fetchingIds.has(id))\n            if (missingIds.length === 0) return\n\n            // Mark IDs as being fetched\n            setFetchingIds((prev) => new Set([...prev, ...missingIds]))\n\n            // Add loading placeholders to cache\n            setOptionCache((prev) => {\n                const newCache = new Map(prev)\n                missingIds.forEach((id) => {\n                    newCache.set(id, {\n                        value: id,\n                        label: `Loading...`,\n                        loading: true,\n                    })\n                })\n                return newCache\n            })\n\n            try {\n                const fetchedOptions = await onFetchByIds(missingIds)\n\n                // Update cache with fetched options\n                setOptionCache((prev) => {\n                    const newCache = new Map(prev)\n                    fetchedOptions.forEach((option) => {\n                        newCache.set(option.value, option)\n                    })\n                    return newCache\n                })\n            } catch (error) {\n                console.error(\"Failed to fetch options:\", error)\n\n                // Mark failed options with error state\n                setOptionCache((prev) => {\n                    const newCache = new Map(prev)\n                    missingIds.forEach((id) => {\n                        newCache.set(id, {\n                            value: id,\n                            label: `Unknown (${id})`,\n                            error: true,\n                        })\n                    })\n                    return newCache\n                })\n            } finally {\n                // Remove IDs from fetching set\n                setFetchingIds((prev) => {\n                    const newSet = new Set(prev)\n                    missingIds.forEach((id) => newSet.delete(id))\n                    return newSet\n                })\n            }\n        },\n        [optionCache, fetchingIds, onFetchByIds],\n    )\n\n    // Get option by ID from cache\n    const getOptionById = React.useCallback(\n        (id: string): Option | undefined => {\n            return optionCache.get(id)\n        },\n        [optionCache],\n    )\n\n    // Get all available options (from props + cache)\n    const allOptions = React.useMemo(() => {\n        const optionMap = new Map<string, Option>()\n\n        // Add options from cache first\n        optionCache.forEach((option, id) => {\n            optionMap.set(id, option)\n        })\n\n        // Override with options from props (they are more up-to-date)\n        options.forEach((option) => {\n            optionMap.set(option.value, option)\n        })\n\n        return Array.from(optionMap.values())\n    }, [options, optionCache])\n\n    return {\n        fetchMissingOptions,\n        getOptionById,\n        allOptions: options,\n    }\n}\n\n// Custom hook for managing component state\nfunction useMultiSelectState({\n    value,\n    defaultValue = [],\n    onValueChange,\n    multiple = true,\n    lockedValues = [],\n    onFetchByIds,\n    fetchMissingOptions,\n}: Pick<MultiSelectProps, \"value\" | \"defaultValue\" | \"onValueChange\" | \"multiple\" | \"lockedValues\" | \"onFetchByIds\"> & {\n    fetchMissingOptions: (ids: string[]) => Promise<void>\n}) {\n    const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue)\n    const isControlled = value !== undefined\n    const currentValue = isControlled ? value : internalValue\n\n    React.useEffect(() => {\n        if (onFetchByIds && currentValue.length > 0) {\n            fetchMissingOptions(currentValue)\n        }\n    }, [currentValue, onFetchByIds, fetchMissingOptions])\n\n    const updateValue = React.useCallback(\n        (newValue: string[]) => {\n            if (!isControlled) {\n                setInternalValue(newValue)\n            }\n            onValueChange?.(newValue)\n        },\n        [isControlled, onValueChange],\n    )\n\n    const toggleOption = React.useCallback(\n        (optionValue: string) => {\n            if (lockedValues.includes(optionValue)) return\n\n            if (multiple) {\n                const newValue = currentValue.includes(optionValue)\n                    ? currentValue.filter((v) => v !== optionValue)\n                    : [...currentValue, optionValue]\n                updateValue(newValue)\n            } else {\n                updateValue(currentValue.includes(optionValue) ? [] : [optionValue])\n            }\n        },\n        [currentValue, multiple, lockedValues, updateValue],\n    )\n\n    const removeOption = React.useCallback(\n        (optionValue: string) => {\n            if (lockedValues.includes(optionValue)) return\n            updateValue(currentValue.filter((v) => v !== optionValue))\n        },\n        [currentValue, lockedValues, updateValue],\n    )\n\n    const clearAll = React.useCallback(() => {\n        const lockedOnly = currentValue.filter((v) => lockedValues.includes(v))\n        updateValue(lockedOnly)\n    }, [currentValue, lockedValues, updateValue])\n\n    return {\n        currentValue,\n        toggleOption,\n        removeOption,\n        clearAll,\n    }\n}\n\n// Custom hook for search functionality\nfunction useSearch({\n    options,\n    onSearch,\n    searchable = true,\n}: Pick<MultiSelectProps, \"options\" | \"onSearch\" | \"searchable\">) {\n    const [searchQuery, setSearchQuery] = React.useState(\"\")\n\n    const setDebounceValue = React.useCallback(debounce((value) => {\n        setSearchQuery(value)\n        onSearch(value)\n    }, 500), [setSearchQuery])\n\n    // Filter options based on search\n    const filteredOptions = React.useMemo(() => {\n        if (!searchable || !searchQuery) {\n            return options\n        }\n        if (onSearch) {\n            return options // External search handles filtering\n        }\n\n        const filtered = options.filter((option) => option.label.toLowerCase().includes(searchQuery.toLowerCase()))\n        return filtered\n    }, [options, searchQuery, searchable, onSearch])\n\n    return {\n        searchQuery,\n        setSearchQuery: setDebounceValue,\n        filteredOptions,\n    }\n}\n\nconst OptionItem = React.memo<{\n    option: Option\n    isSelected: boolean\n    isLocked: boolean\n    onToggle: (value: string) => void\n}>(({ option, isSelected, isLocked, onToggle }) => {\n    return (\n        <div\n            role=\"option\"\n            aria-selected={isSelected}\n            className={cname(\n                \"relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors\",\n                \"hover:bg-[#EBF0FF] hover:text-accent-foreground\",\n                \"focus:bg-[#EBF0FF] focus:text-accent-foreground\",\n                isSelected && \"bg-[#EBF0FF] text-accent-foreground\",\n                (option.disabled || isLocked || option.loading) && \"pointer-events-none opacity-50\",\n                option.error && \"text-destructive\",\n            )}\n            onClick={() => !option.disabled && !isLocked && !option.loading && onToggle(option.value)}\n        >\n            <span className=\"flex-1 truncate\">{option.label}</span>\n            <div className=\"ml-2 flex items-center gap-1\">\n                {option.loading && <Loader2 className=\"h-3 w-3 animate-spin\" />}\n                {isSelected && !option.loading && <Check className=\"size-3.5 shrink-0\" />}\n                {isLocked && <span className=\"text-xs text-muted-foreground\">Locked</span>}\n                {option.error && <span className=\"text-xs text-destructive\">Error</span>}\n            </div>\n        </div>\n    )\n})\nOptionItem.displayName = \"OptionItem\"\n\nconst SelectedValues = React.memo<{\n    selectedOptions: Option[]\n    lockedValues: string[]\n    maxDisplayed: number\n    onRemove: (value: string) => void\n}>(({ selectedOptions, lockedValues, maxDisplayed, onRemove }) => {\n    const { t } = useTranslation()\n    const displayedOptions = selectedOptions.slice(0, maxDisplayed)\n    const remainingCount = selectedOptions.length - maxDisplayed\n\n    return (\n        <div className=\"flex flex-wrap gap-1\">\n            {displayedOptions.map((option) => {\n                const isLocked = lockedValues.includes(option.value)\n                return (\n                    <Badge\n                        key={option.value}\n                        variant={option.error ? \"destructive\" : \"secondary\"}\n                        className=\"bg-primary/20 text-primary hover:bg-primary/15 gap-1\"\n                    >\n                        <span className=\"\">\n                            {option.loading ? (\n                                <span className=\"flex items-center gap-1\">\n                                    <Loader2 className=\"h-3 w-3 animate-spin\" />\n                                    Loading...\n                                </span>\n                            ) : (\n                                option.label\n                            )}\n                        </span>\n                        {!isLocked && !option.loading && (\n                            <Button\n                                variant=\"ghost\"\n                                size=\"sm\"\n                                className=\"h-auto p-0 text-primary\"\n                                onClick={(e) => {\n                                    e.preventDefault()\n                                    e.stopPropagation()\n                                    onRemove(option.value)\n                                }}\n                            >\n                                <X className=\"h-3 w-3\" />\n                            </Button>\n                        )}\n                    </Badge>\n                )\n            })}\n            {remainingCount > 0 && (\n                <Badge variant=\"outline\" className=\"pointer-events-none text-primary\">\n                    +{remainingCount} {t('more')}\n                </Badge>\n            )}\n        </div>\n    )\n})\nSelectedValues.displayName = \"SelectedValues\"\n\n// Main component\nexport const MultiSelect = React.forwardRef<React.ElementRef<typeof PopoverPrimitive.Trigger>, MultiSelectProps>(\n    (\n        {\n            options = [],\n            value,\n            defaultValue,\n            onValueChange,\n            placeholder = \"\",\n            searchPlaceholder = \"\",\n            emptyMessage = \"\",\n            maxDisplayed = 3,\n            multiple = false,\n            searchable = true,\n            clearable = true,\n            disabled = false,\n            loading = false,\n            error = false,\n            errorMessage,\n            required = false,\n            lockedValues = [],\n            onSearch,\n            onLoadMore,\n            hasMore = false,\n            onFetchByIds, // Added onFetchByIds prop\n            className,\n            triggerClassName,\n            contentClassName,\n            id,\n            name,\n            \"aria-label\": ariaLabel,\n            \"aria-describedby\": ariaDescribedBy,\n            ...props\n        },\n        ref,\n    ) => {\n        const [open, setOpen] = React.useState(false)\n        const searchInputRef = React.useRef<HTMLInputElement>(null)\n        const footerRef = useScrollLoad(searchInputRef, onLoadMore)\n\n        const { fetchMissingOptions, getOptionById, allOptions } = useOptionCache({\n            options,\n            onFetchByIds,\n        })\n\n        const { currentValue, toggleOption, removeOption, clearAll } = useMultiSelectState({\n            value,\n            defaultValue,\n            onValueChange,\n            multiple,\n            lockedValues,\n            onFetchByIds,\n            fetchMissingOptions,\n        })\n\n        const { searchQuery, setSearchQuery, filteredOptions } = useSearch({\n            options: allOptions,\n            onSearch,\n            searchable,\n        })\n\n        const selectedOptions = React.useMemo(() => {\n            const result = currentValue.map((value) => {\n                const cachedOption = getOptionById(value)\n                if (cachedOption) {\n                    return cachedOption\n                }\n                // Create placeholder option if not found in cache\n                const placeholder = {\n                    value,\n                    label: `Loading...`,\n                    loading: true,\n                }\n                return placeholder\n            })\n            return result\n        }, [currentValue, getOptionById])\n\n        // Focus search input when popover opens\n        React.useEffect(() => {\n            if (open && searchable && searchInputRef.current) {\n                searchInputRef.current.focus()\n            }\n        }, [open, searchable])\n\n        // Clear search when popover closes\n        React.useEffect(() => {\n            if (!open) {\n                setSearchQuery(\"\")\n            }\n        }, [open, setSearchQuery])\n\n        const handleKeyDown = (event: React.KeyboardEvent) => {\n            if (event.key === \"Escape\") {\n                setOpen(false)\n            }\n        }\n\n        const canClear = clearable && currentValue.length > 0 && !disabled\n        const hasSelection = currentValue.length > 0\n\n        return (\n            <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n                <PopoverPrimitive.Trigger\n                    ref={ref}\n                    className={cname(\n                        \"flex h-auto min-h-9 w-full items-center justify-between rounded-md border border-input  bg-search-input px-3 py-2 text-sm ring-offset-background transition-colors\",\n                        \"placeholder:text-muted-foreground\",\n                        \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n                        \"disabled:cursor-not-allowed disabled:opacity-50\",\n                        error && \"border-destructive focus:ring-destructive\",\n                        triggerClassName,\n                    )}\n                    disabled={disabled}\n                    aria-label={ariaLabel}\n                    aria-describedby={ariaDescribedBy}\n                    aria-expanded={open}\n                    aria-haspopup=\"listbox\"\n                    role=\"combobox\"\n                    onKeyDown={handleKeyDown}\n                    {...props}\n                >\n                    <div className=\"flex-1 overflow-hidden text-left\">\n                        {hasSelection ? (\n                            multiple ? (\n                                <SelectedValues\n                                    selectedOptions={selectedOptions}\n                                    lockedValues={lockedValues}\n                                    maxDisplayed={maxDisplayed}\n                                    onRemove={removeOption}\n                                />\n                            ) : (\n                                <span className=\"truncate\">{selectedOptions[0]?.label}</span>\n                            )\n                        ) : (\n                            <span className=\"text-muted-foreground\">{placeholder}</span>\n                        )}\n                    </div>\n\n                    <div className=\"flex items-center gap-1\">\n                        {loading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n                        {canClear && (\n                            <Button\n                                variant=\"ghost\"\n                                size=\"sm\"\n                                className=\"h-auto p-1 text-muted-foreground hover:text-foreground\"\n                                onClick={(e) => {\n                                    e.preventDefault()\n                                    e.stopPropagation()\n                                    clearAll()\n                                }}\n                            >\n                                <X className=\"h-3 w-3\" />\n                                <span className=\"sr-only\">Clear selection</span>\n                            </Button>\n                        )}\n                        <ChevronDown className=\"size-5 opacity-50\" />\n                    </div>\n                </PopoverPrimitive.Trigger>\n\n                <PopoverPrimitive.Portal>\n                    <PopoverPrimitive.Content\n                        className={cname(\n                            \"z-50 w-full min-w-[var(--radix-popover-trigger-width)] rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\",\n                            \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n                            contentClassName,\n                        )}\n                        align=\"start\"\n                        sideOffset={4}\n                    >\n                        {searchable && (\n                            <div className=\"border-b p-2\">\n                                <div className=\"relative\">\n                                    <Search className=\"absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-gray-950 dark:text-gray-500  z-10\" />\n                                    <Input\n                                        ref={searchInputRef}\n                                        placeholder={searchPlaceholder}\n                                        value={searchQuery}\n                                        onChange={(e) => setSearchQuery(e.target.value)}\n                                        className=\"pl-8 bg-search-input h-8\"\n                                    />\n                                </div>\n                            </div>\n                        )}\n\n                        <div role=\"listbox\" aria-multiselectable={multiple} className=\"max-h-60 overflow-auto p-1\">\n                            {filteredOptions.length === 0 ? (\n                                <div className=\"py-6 text-center text-sm text-muted-foreground\">{emptyMessage}</div>\n                            ) : (\n                                filteredOptions.map((option) => (\n                                    <OptionItem\n                                        key={option.value}\n                                        option={option}\n                                        isSelected={currentValue.includes(option.value)}\n                                        isLocked={lockedValues.includes(option.value)}\n                                        onToggle={toggleOption}\n                                    />\n                                ))\n                            )}\n\n                            {hasMore && onLoadMore && (\n                                <div className=\"p-2\">\n                                    <Button variant=\"ghost\" size=\"sm\" className=\"w-full\" disabled={loading}>\n                                        {loading ? (\n                                            <>\n                                                <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                                Loading...\n                                            </>\n                                        ) :\n                                            <div ref={footerRef} className=\"h-6\"></div>\n                                        }\n                                    </Button>\n                                </div>\n                            )}\n                        </div>\n                    </PopoverPrimitive.Content>\n                </PopoverPrimitive.Portal>\n\n                {/* Hidden input for form integration */}\n                {name && (\n                    <input\n                        type=\"hidden\"\n                        name={name}\n                        value={currentValue.join(\",\")}\n                        required={required && currentValue.length === 0}\n                    />\n                )}\n            </PopoverPrimitive.Root>\n        )\n    },\n)\n\nMultiSelect.displayName = \"MultiSelect\"\n\n\n\nconst useScrollLoad = (inputRef, onLoadMore) => {\n    const [footerElement, setFooterElement] = React.useState(null)\n\n    const footerRef = React.useCallback((node) => {\n        if (node !== null) {\n            setFooterElement(node)\n        }\n    }, [])\n\n    React.useLayoutEffect(function () {\n        if (!footerElement) return\n\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting) {\n                    // console.log('div is in the viewport!');\n                    onLoadMore?.(inputRef.current?.value || '')\n                }\n            });\n        }, {\n            rootMargin: '0px',\n            threshold: 0.1\n        });\n\n        // 开始观察目标元素\n        observer.observe(footerElement);\n\n        return () => observer.unobserve(footerElement);\n    }, [footerElement])\n\n    return footerRef\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/pagination/autoPagination.tsx",
    "content": "import { useState } from 'react';\nimport { ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from './index';\nimport { Input } from '../input';\n\ninterface IProps {\n    /** Current page number */\n    page: number,\n    /** Limit */\n    pageSize: number,\n    /** Item total */\n    total: number,\n    /** Maximum number of pages to display at once */\n    maxVisiblePages?: number,\n    /** Function to handle page change */\n    onChange?: (p: number) => void,\n    className?: string,\n    /** Whether to show jump to page input */\n    showJumpInput?: boolean,\n    /** Text for \"Jump to\" label */\n    jumpToText?: string,\n    /** Text for \"page\" label */\n    pageText?: string\n}\n\nconst AutoPagination = ({\n    page,\n    pageSize,\n    total,\n    maxVisiblePages = 5,\n    className,\n    onChange,\n    showJumpInput = false,\n    jumpToText = 'Go to',\n    pageText = 'page'\n}: IProps) => {\n    const totalPages = Math.ceil(total / pageSize);\n    const [jumpPage, setJumpPage] = useState<string>(\"\");\n\n    const handlePageChange = (newPage: number) => {\n        if (newPage >= 1 && newPage <= totalPages && newPage !== page) {\n            onChange?.(newPage);\n        }\n    };\n\n    const handleJumpPage = () => {\n        const pageNum = parseInt(jumpPage, 10);\n        if (!isNaN(pageNum) && pageNum >= 1 && pageNum <= totalPages) {\n            handlePageChange(pageNum);\n        }\n    };\n\n    const handleJumpInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        setJumpPage(e.target.value);\n    };\n\n    const handleJumpInputBlur = () => {\n        handleJumpPage();\n    };\n\n    const renderPaginationItems = () => {\n        const items = [];\n        const startPage = Math.max(1, page - Math.floor(maxVisiblePages / 2));\n        const endPage = Math.min(totalPages || 1, startPage + maxVisiblePages - 1);\n\n        if (page !== 1) {\n            items.push(\n                <PaginationItem key=\"start\">\n                    <PaginationLink href=\"javascript:;\" onClick={() => handlePageChange(1)}>\n                        <ChevronsLeft />\n                    </PaginationLink>\n                </PaginationItem>\n            );\n        }\n\n        items.push(\n            <PaginationItem key=\"previous\">\n                <PaginationPrevious href=\"javascript:;\"\n                    className={page === startPage && 'text-gray-400'}\n                    onClick={() => handlePageChange(page - 1)} />\n            </PaginationItem>\n        );\n\n        for (let i = startPage; i <= endPage; i++) {\n            items.push(\n                <PaginationItem key={i}>\n                    <PaginationLink href=\"javascript:;\"\n                        className={page === i ? 'font-bold' : 'text-gray-500'}\n                        onClick={() => handlePageChange(i)} isActive={i === page}>\n                        {i}\n                    </PaginationLink>\n                </PaginationItem>\n            );\n        }\n\n        items.push(\n            <PaginationItem key=\"next\">\n                <PaginationNext href=\"javascript:;\"\n                    className={page === endPage && 'text-gray-400'}\n                    onClick={() => handlePageChange(page + 1)} />\n            </PaginationItem>\n        );\n\n        if (page !== totalPages) {\n            items.push(\n                <PaginationItem key=\"end\">\n                    <PaginationLink href=\"javascript:;\" onClick={() => handlePageChange(totalPages)} >\n                        <ChevronsRight />\n                    </PaginationLink>\n                </PaginationItem>\n            );\n        }\n\n        return items;\n    };\n\n    return (\n        <Pagination className={className}>\n            <PaginationContent>\n                {renderPaginationItems()}\n\n                {/* Conditionally render the \"Jump to Page\" input */}\n                {showJumpInput && (\n                    <PaginationItem key=\"jump\">\n                        <div className=\"flex items-center text-sm gap-1\">\n                            <span>{jumpToText}</span>\n                            <Input\n                                type=\"number\"\n                                className=\"w-[40px] h-6 text-center p-0\"\n                                boxClassName=\"w-auto\"\n                                value={jumpPage}\n                                onChange={handleJumpInputChange}\n                                onBlur={handleJumpInputBlur}\n                                onKeyDown={(e) => e.key === 'Enter' && handleJumpPage()}\n                            />\n                            <span>{pageText}</span>\n                        </div>\n                    </PaginationItem>\n                )}\n            </PaginationContent>\n        </Pagination>\n    );\n};\n\nexport default AutoPagination;"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/pagination/index.tsx",
    "content": "import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, Ellipsis } from \"lucide-react\"\nimport { ButtonProps, buttonVariants } from \"../button\"\nimport { cname } from \"../utils\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n    <nav\n        role=\"navigation\"\n        aria-label=\"pagination\"\n        className={cname(\"mx-auto flex w-full justify-center\", className)}\n        {...props}\n    />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n    HTMLUListElement,\n    React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n    <ul\n        ref={ref}\n        className={cname(\"flex flex-row items-center gap-1\", className)}\n        {...props}\n    />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n    HTMLLIElement,\n    React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n    <li ref={ref} className={cname(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n    isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n    React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n    className,\n    isActive,\n    size = \"icon\",\n    ...props\n}: PaginationLinkProps) => (\n    <a\n        aria-current={isActive ? \"page\" : undefined}\n        className={cname(\n            buttonVariants({\n                variant: isActive ? \"outline\" : \"ghost\",\n                size,\n            }),\n            \"text-gray-950\",\n            \"dark:text-gray-400\",\n            isActive && \"dark:bg-[#34353A] dark:text-[#F2F2F2]\", // 暗黑模式设计\n            className\n        )}\n        {...props}\n    />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n    className,\n    ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n    <PaginationLink\n        aria-label=\"Go to previous page\"\n        size=\"default\"\n        className={cname(\"gap-1 pl-2.5\", className)}\n        {...props}\n    >\n        <ChevronLeft className=\"h-4 w-4\" />\n        {/* <span>Previous</span> */}\n    </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n    className,\n    ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n    <PaginationLink\n        aria-label=\"Go to next page\"\n        size=\"default\"\n        className={cname(\"gap-1 pr-2.5\", className)}\n        {...props}\n    >\n        {/* <span>Next</span> */}\n        <ChevronRight className=\"h-4 w-4\" />\n    </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n    className,\n    ...props\n}: React.ComponentProps<\"span\">) => (\n    <span\n        aria-hidden\n        className={cname(\"flex h-9 w-9 items-center justify-center\", className)}\n        {...props}\n    >\n        <Ellipsis className=\"h-4 w-4\" />\n        {/* <span className=\"sr-only\">More pages</span> */}\n    </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n    Pagination,\n    PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/popover/index.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { cname } from \"../utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverClose = PopoverPrimitive.Close\n\nconst PopoverContent = React.forwardRef<\n    React.ElementRef<typeof PopoverPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n    <PopoverPrimitive.Portal>\n        <PopoverPrimitive.Content\n            ref={ref}\n            align={align}\n            sideOffset={sideOffset}\n            className={cname(\n                \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n                className\n            )}\n            {...props}\n        />\n    </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverClose }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/progress.tsx",
    "content": "\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\nimport { cname } from \"./utils\";\n\nconst Progress = React.forwardRef<\n  React.ElementRef<typeof ProgressPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, error, ...props }, ref) => (\n  <ProgressPrimitive.Root\n    ref={ref}\n    className={cname(\n      \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n      className\n    )}\n    {...props}\n  >\n    <ProgressPrimitive.Indicator\n      className={`h-full w-full flex-1 bg-primary transition-all ${error && 'bg-red-400'}`}\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n    />\n  </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/radio/index.tsx",
    "content": "\"use client\"\n\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\n\nconst RadioGroup = React.forwardRef<\n    React.ElementRef<typeof RadioGroupPrimitive.Root>,\n    React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n    return (\n        <RadioGroupPrimitive.Root\n            className={cname(\"grid gap-2\", className)}\n            {...props}\n            ref={ref}\n        />\n    )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n    React.ElementRef<typeof RadioGroupPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n    return (\n        <RadioGroupPrimitive.Item\n            ref={ref}\n            className={cname(\n                \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n                className\n            )}\n            {...props}\n        >\n            <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n                <span className=\"w-3.5 h-3.5 border-[3px] border-primary rounded-full\"></span>\n            </RadioGroupPrimitive.Indicator>\n        </RadioGroupPrimitive.Item>\n    )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/radio/radioCard.tsx",
    "content": "import React from \"react\";\nimport { cname } from \"../utils\";\n\nexport default function RadioCard({ calssName = '', checked, title, description = '' }) {\n\n    return <div className={cname('w-96 border rounded-sm flex gap-2 p-4 cursor-pointer transition-all hover:border-primary/50', calssName, checked && 'border-primary bg-primary/10')}>\n        <div className={`bg-[#fff] border border-gray-400 rounded-full w-5 h-5 min-w-5 ${checked && 'bg-primary flex justify-center items-center'}`}>\n            {checked && <div className=\"w-2 h-2 bg-gray-50 rounded-full\" />}\n        </div>\n        <div>\n            <div className=\"text-sm font-medium leading-none mt-0.5 mb-2\">{title}</div>\n            <div className=\"text-sm text-muted-foreground\">{description}</div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cn } from \"../../utils\"\n\nconst RadioGroup = React.forwardRef<\n    React.ElementRef<typeof RadioGroupPrimitive.Root>,\n    React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n    return (\n        <RadioGroupPrimitive.Root\n            className={cn(\"grid gap-2\", className)}\n            {...props}\n            ref={ref}\n        />\n    )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n    React.ElementRef<typeof RadioGroupPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n    return (\n        <RadioGroupPrimitive.Item\n            ref={ref}\n            className={cn(\n                \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n                className\n            )}\n            {...props}\n        >\n            <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n                <Check className=\"h-3 w-3\" />\n            </RadioGroupPrimitive.Indicator>\n        </RadioGroupPrimitive.Item>\n    )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/cascader.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons\";\nimport { ChevronRight, X } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Select, SelectContent, SelectTrigger } from \".\";\nimport { Input } from \"../input\";\n\n/**\n * Cascader 组件支持以下属性：\n\nplaceholder (string, 可选): 输入框的占位符。\ndefaultValue (string[], 可选): 默认选中的值数组。\noptions (Option[], 必填): 可选项的数据源，支持多层级嵌套。\nloadData (function, 可选): 异步加载数据的回调函数，接收一个选中的Option对象。\nonChange (function, 可选): 当选中的值变化时的回调函数，接收两个参数，分别是选中的值数组和选中的Option数组。\n */\n\ninterface Option {\n    value: string;\n    label: string;\n    children?: Option[];\n    isLeaf?: boolean;\n}\n\ninterface IProps {\n    error?: boolean,\n    placeholder?: string,\n    defaultValue?: Option[],\n    options: Option[],\n    close?: boolean,\n    loadData?,\n    onChange,\n    selectClass?,\n    selectPlaceholder?\n}\n\nconst Item = (props: {\n    isAsync: boolean,\n    isSelected: boolean, // 新增选中状态\n    option: Option,\n    isHovered: boolean,\n    onHover: (o: Option, isLeaf: boolean) => void,\n    onClick: (o: Option, isLeaf: boolean) => void\n}) => {\n    const { isAsync, isSelected, option, isHovered, onHover, onClick } = props\n    const [loading, setLoading] = useState(false)\n    const isLeaf = option.isLeaf === false ? option.isLeaf : !option.children || option.children.length === 0\n\n    const handleClick = () => {\n        const _isAsync = isAsync && !(option.children && option.children.length !== 0)\n        _isAsync && !isLeaf && setLoading(true)\n        onClick(option, isLeaf)\n    }\n\n    useEffect(() => {\n        setLoading(false)\n    }, [option.children])\n\n    return <div\n        data-focus={isSelected} // 使用选中状态\n        data-hovered={isHovered}\n        className=\"relative flex justify-between w-full select-none items-center rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] data-[hovered=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 dark:data-[hovered=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n        onMouseEnter={() => onHover(option, isLeaf)}\n        onClick={handleClick}>\n        <span className=\"w-28 overflow-hidden text-ellipsis\">{option.label}</span>\n        {!isLeaf && (loading ? <LoadIcon className=\"text-foreground\" /> : <ChevronRight className=\"size-4\" />)}\n    </div>\n}\n\nconst Col = (props: {\n    isAsync: boolean,\n    selectedValue: string | null, // 改为传递选中值\n    options: Option[],\n    onHover: (o: Option, isLeaf: boolean) => void,\n    onClick: (o: Option, isLeaf: boolean) => void\n}) => {\n    const { options, selectedValue, ...opros } = props\n    const [hoveredOption, setHoveredOption] = useState<Option | null>(null)\n\n    const handleHover = (option: Option, isLeaf: boolean) => {\n        setHoveredOption(option)\n        props.onHover(option, isLeaf)\n    }\n\n    return <div className=\"w-36 border-l first:border-none max-h-80 overflow-y-auto\">\n        {\n            options.map(option => (\n                <Item\n                    {...opros}\n                    option={option}\n                    key={option.value}\n                    isSelected={selectedValue === option.value} // 传递选中状态\n                    isHovered={hoveredOption?.value === option.value}\n                    onHover={handleHover}\n                />\n            ))\n        }\n    </div>\n}\n\n\nconst resetCols = (values, options) => {\n    const vals = [options]\n    let currentOptions = options\n    values.forEach(dfval => {\n        const option = currentOptions.find(op => op.value === dfval.value)\n        if (option) {\n            currentOptions = option.children || []\n            option.children && vals.push(currentOptions)\n        }\n    })\n    return vals\n}\n\nexport default function Cascader({ error = false, selectClass = '', close = false, placeholder = '', defaultValue = [], options, loadData, onChange }: IProps) {\n\n    const [open, setOpen] = useState(false)\n    const [values, setValues] = useState<any>(defaultValue)\n    const [isHover, setIsHover] = useState(false)\n    useEffect(() => {\n        !open && setIsHover(false)\n    }, [open])\n\n    const [cols, setCols] = useState(() => resetCols(defaultValue, options))\n\n    // 当defaultValue变化时，同步更新内部状态\n    useEffect(() => {\n        if (defaultValue && defaultValue.length > 0) {\n            setValues(defaultValue)\n            selectOptionsRef.current = [...defaultValue]\n        }\n        setCols(resetCols(defaultValue, options))\n    }, [defaultValue, options])\n\n    const selectOptionsRef = useRef([])\n    const handleHover = (option, isLeaf, colIndex) => {\n        setIsHover(true)\n        const isAsync = loadData && !(option.children && option.children.length !== 0)\n        if (!(isAsync || isLeaf)) {\n            setCols(cols => {\n                const newCols = [...cols].slice(0, colIndex + 1)\n                newCols[colIndex + 1] = option.children\n                return newCols\n            })\n        }\n        selectOptionsRef.current.splice(colIndex + 1)\n        selectOptionsRef.current[colIndex] = option\n    }\n\n    useEffect(() => {\n        updateCols.current?.(options)\n        updateCols.current = null\n    }, [options])\n\n    const updateCols = useRef(null)\n    const handleClick = (option, isLeaf) => {\n        if (!isLeaf) {\n            const isAsync = loadData && !(option.children && option.children.length !== 0)\n            if (!isAsync) return\n\n            const selectOptions = selectOptionsRef.current\n            updateCols.current = (options) => {\n                setCols(resetCols(selectOptions, options))\n            }\n            return loadData(option)\n        }\n        const vals = selectOptionsRef.current.map(el => el.value)\n        setValues([...selectOptionsRef.current])\n        onChange?.(vals, selectOptionsRef.current)\n        setOpen(false)\n    }\n\n    const handleClearClick = () => {\n        setValues([])\n        onChange?.([null, null], [])\n    }\n\n    return <Select open={open} onOpenChange={setOpen}>\n        <SelectTrigger className={`${error && 'border-red-500'} group data-[placeholder]:text-inherit ${selectClass}`}>\n            <Input className=\"border-none bg-transparent px-0 focus-visible:ring-0\" placeholder={placeholder} readOnly value={values.map(el => el.label).join('/')} />\n            {close && values.length !== 0 && <X\n                className=\"hidden group-hover:block bg-border text-[#666] rounded-full p-0.5\"\n                width={14}\n                height={14}\n                onPointerDown={(e) => e.stopPropagation()}\n                onClick={handleClearClick}\n            />}\n        </SelectTrigger>\n        <SelectContent auto>\n            {cols.length\n                ? <div className=\"flex \">\n                    {\n                        cols.map((_options, index) => {\n                            return <Col\n                                isAsync={loadData}\n                                selectedValue={values[index]?.value || null} // 直接传递选中值\n                                options={_options}\n                                onHover={(op, isLeaf) => handleHover(op, isLeaf, index)}\n                                onClick={handleClick}\n                                key={index}\n                            />\n                        })\n                    }\n                </div>\n                : <div className=\"w-full flex justify-center items-center bisheng-label\">空</div>\n            }\n        </SelectContent>\n    </Select>\n};\n\n\n// test\n\n// const optionLists = [\n//     {\n//         value: 'zhejiang',\n//         label: 'Zhejiang',\n//         children: [\n//             {\n//                 value: 'hangzhou',\n//                 label: 'Hangzhou',\n//                 children: [\n//                     {\n//                         value: 'xihu',\n//                         label: 'West Lake',\n//                     },\n//                 ],\n//             },\n//         ],\n//     },\n//     {\n//         value: 'jiangsu',\n//         label: 'Jiangsu',\n//         children: [\n//             {\n//                 value: 'nanjing',\n//                 label: 'Nanjing',\n//                 children: [\n//                     {\n//                         value: 'zhonghuamen',\n//                         label: 'Zhong Hua Men',\n//                     },\n//                 ],\n//             },\n//         ],\n//     },\n// ];\n\n// const [options, setOptions] = useState(optionLists);\n\n\n// const handleChange = (value, option) => {\n//     console.log('object :>> ', value, option);\n//     // [1,2], [{id: 1, id： 2}]\n// }\n\n// const handleLoadData = (targetOption) => {\n\n//     // load options lazily\n//     setTimeout(() => {\n//         targetOption.children = [\n//             {\n//                 label: `${targetOption.label} Dynamic 1`,\n//                 value: 'dynamic1',\n//             },\n//             {\n//                 label: `${targetOption.label} Dynamic 2`,\n//                 value: 'dynamic2',\n//             },\n//         ];\n//         setOptions([...options]);\n//     }, 1000);\n// }\n\n// <Cascader options={options} loadData={handleLoadData} onChange={handleChange} />\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/filter.tsx",
    "content": "import { FilterIcon } from \"@/components/bs-icons/filter\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport React from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { Select, SelectContent, SelectGroup, SelectItem } from '.';\nimport { SearchInput } from \"../../../components/bs-ui/input\";\n\nexport const TableHeadEnumFilter = ({ options, onChange }: { options: { label: string, value: string }[], onChange: (value: string) => void }) => {\n  const [open, setOpen] = React.useState(false)\n  const [value, setValue] = React.useState<string>('')\n\n  return <Select value={value} onOpenChange={setOpen} onValueChange={(v) => { setValue(v); onChange(v) }}>\n    <SelectPrimitive.Trigger className='outline-none' >\n      <FilterIcon onClick={() => setOpen(!open)} className={value ? 'text-primary ml-3' : 'text-gray-400 ml-3'} />\n    </SelectPrimitive.Trigger>\n    <SelectContent>\n      <SelectGroup>\n        {options.map(el => (\n          <SelectItem key={el.value} value={el.value}>{el.label}</SelectItem>\n        ))}\n      </SelectGroup>\n    </SelectContent>\n  </Select>\n}\n\n\n// 定义组件的 props 类型\ninterface FilterUserGroupProps {\n  value: string[];\n  options: { id: string;[key: string]: any }[];\n  nameKey?: string;\n  placeholder: string;\n  onChecked: (id: string) => void;\n  search: (event: React.ChangeEvent<HTMLInputElement>) => void;\n  onClearChecked: () => void;\n  onOk: () => void;\n}\n\nconst FilterUserGroup: React.FC<FilterUserGroupProps> = ({\n  value = [],\n  options,\n  nameKey = 'name',\n  placeholder,\n  onChecked,\n  search,\n  onClearChecked,\n  onOk\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"h-full\">\n      <div>\n        <SearchInput placeholder={placeholder} className=\"w-[240px]\" onChange={search}></SearchInput>\n      </div>\n      <div className=\"mt-2 max-h-[260px] min-h-20 overflow-y-auto\">\n        {options.map((i) => (\n          <div className=\"flex items-center space-x-2 text-gray-500 mb-1\" key={i.id}>\n            <Checkbox id={i.id} checked={value.includes(i.id)} onCheckedChange={() => onChecked(i.id)} />\n            <label htmlFor={i.id} className=\"cursor-pointer text-sm\">{i[nameKey]}</label>\n          </div>\n        ))}\n        {options.length === 0 && (\n          <div className=\"flex items-center justify-center h-[70px]\">\n            <Button variant=\"ghost\">{t('build.empty')}</Button>\n          </div>\n        )}\n      </div>\n      <div className=\"flex justify-between mt-4\">\n        <Button variant=\"ghost\" className=\"px-8 h-8\" onClick={onClearChecked}>{t('system.reset')}</Button>\n        <Button className=\"px-8 h-8\" onClick={onOk}>{t('system.confirm')}</Button>\n      </div>\n    </div>\n  );\n}\n\nexport default React.memo(FilterUserGroup);"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/hover.tsx",
    "content": "import { cn } from \"@/utils\";\nimport { useRef, useState } from \"react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\nexport function SelectHoverItem({ children, ...props }) {\n\n    return <div {...props} className=\"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-[#EBF0FF] dark:text-gray-50 dark:hover:bg-gray-700\">\n        {children}\n    </div>\n}\n\n\nexport function SelectHover({ triagger, className, children }) {\n    const [open, setOpen] = useState(false);\n    const timerRef = useRef(null);\n\n    const handleMouseEnter = () => {\n        if (timerRef.current) clearTimeout(timerRef.current);\n        setOpen(true);\n    };\n\n    const handleMouseLeave = () => {\n        timerRef.current = setTimeout(() => {\n            setOpen(false);\n        }, 150);\n    };\n\n    return (\n        <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger\n                asChild\n                onMouseEnter={handleMouseEnter}\n                onMouseLeave={handleMouseLeave}\n                onClick={(e) => {\n                    e.preventDefault();\n                    e.stopPropagation();\n                }}\n            >\n                <div className=\"inline-block cursor-pointer\">{triagger}</div>\n            </PopoverTrigger>\n\n            <PopoverContent\n                side=\"top\"\n                className={cn(\"text-popover-foreground w-auto bg-popover dark:bg-[#2A2B2E] shadow-md p-2 relative\", className)}\n                onMouseEnter={handleMouseEnter}\n                onMouseLeave={handleMouseLeave}\n            >\n                {children}\n            </PopoverContent>\n        </Popover>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/index.tsx",
    "content": "\"use client\"\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.Trigger>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, showIcon = true, ...props }, ref) => (\n    <SelectPrimitive.Trigger\n        ref={ref}\n        className={cname(\n            \"group flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-500\",\n            className\n        )}\n        {...props}\n    >\n        {children}\n        {\n            showIcon && <SelectPrimitive.Icon asChild>\n                <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n            </SelectPrimitive.Icon>\n        }\n    </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n    <SelectPrimitive.ScrollUpButton\n        ref={ref}\n        className={cname(\n            \"flex cursor-default items-center justify-center py-1\",\n            className\n        )}\n        {...props}\n    >\n        <ChevronUp />\n    </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n    <SelectPrimitive.ScrollDownButton\n        ref={ref}\n        className={cname(\n            \"flex cursor-default items-center justify-center py-1\",\n            className\n        )}\n        {...props}\n    >\n        <ChevronDown />\n    </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n    SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, headNode = null, footerNode = null, auto, position = \"popper\", ...props }, ref) => (\n    <SelectPrimitive.Portal>\n        <SelectPrimitive.Content\n            ref={ref}\n            className={cname(\n                \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-[#DEE3EF] dark:border-[#484B57] bg-popover text-popover-foreground dark:text-gray-200 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n                position === \"popper\" &&\n                \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n                className\n            )}\n            position={position}\n            {...props}\n        >\n            {headNode}\n            {/* <SelectScrollUpButton /> */}\n            <SelectPrimitive.Viewport\n                className={cname(\n                    \"p-1\",\n                    position === \"popper\" && !auto &&\n                    \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n                )}\n            >\n                {children}\n            </SelectPrimitive.Viewport>\n            {/* <SelectScrollDownButton /> */}\n            {footerNode}\n        </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.Label>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n    <SelectPrimitive.Label\n        ref={ref}\n        className={cname(\"px-2 py-1.5 text-sm font-semibold\", className)}\n        {...props}\n    />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & { showIcon?: boolean; customContent?: boolean; }\n>(({ className, children, customContent = false, showIcon = true, ...props }, ref) => (\n    <SelectPrimitive.Item\n        ref={ref}\n        className={cname(\n            \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-[#EBF0FF] dark:focus:bg-gray-700 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n            className\n        )}\n        {...props}\n    >\n     {customContent ? (\n            // 自定义内容模式\n            children\n        ) : (\n            // 默认模式\n            <>\n                {showIcon && <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n                    <SelectPrimitive.ItemIndicator>\n                        <Check className=\"h-4 w-4\" />\n                    </SelectPrimitive.ItemIndicator>\n                </span>}\n                <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n            </>\n        )}\n    </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n    React.ElementRef<typeof SelectPrimitive.Separator>,\n    React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n    <SelectPrimitive.Separator\n        ref={ref}\n        className={cname(\"-mx-1 my-1 h-px bg-muted\", className)}\n        {...props}\n    />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n    Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/multi.tsx",
    "content": "import { Check, X } from \"lucide-react\"\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { Select, SelectContent, SelectTrigger } from \".\"\nimport { Badge } from \"../badge\"\nimport { SearchInput } from \"../input\"\nimport { cname, useDebounce } from \"../utils\"\n\nconst MultiItem: React.FC<\n    { active: boolean; children: React.ReactNode; value: string; onClick: (value: string, label: string) => void }\n> = ({ active, children, value, onClick }) => {\n\n    return <div\n        key={value}\n        className={`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 mb-1 text-sm outline-none hover:bg-[#EBF0FF] dark:hover:bg-gray-700 hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 break-all \n    ${active && 'bg-[#EBF0FF] dark:bg-gray-700'}`}\n        onClick={() => { onClick(value, children as string) }}\n    >\n        <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n            {active && <Check className=\"h-4 w-4\"></Check>}\n        </span>\n        {children}\n    </div>\n}\ninterface Option {\n    label: string;\n    value: string;\n}\n\ninterface BaseProps<T> {\n    /** 多选 */\n    id?: string;\n    multiple?: boolean;\n    error?: boolean;\n    errorKeys?: string[];\n    /** 高度不变，内部滚动 */\n    scroll?: boolean;\n    disabled?: boolean;\n    className?: string;\n    contentClassName?: string;\n    options: Option[];\n    children?: React.ReactNode;\n    placeholder?: string;\n    searchPlaceholder?: string;\n    tabs?: React.ReactNode;\n    hideSearch?: boolean;\n    /** 锁定不可修改的值 */\n    lockedValues?: string[];\n    close?: boolean;\n    onLoad?: () => void;\n    onSearch?: (name: string) => void;\n    onChange?: (value: T) => void;\n}\n\n// onScrollLoad有值表示开启分页、异步检索\ninterface ScrollLoadProps extends BaseProps<Option[]> {\n    onScrollLoad: (name: string) => void;\n    value?: Option[];\n    defaultValue?: Option[];\n}\n\ninterface NonScrollLoadProps extends BaseProps<string[]> {\n    onScrollLoad?: undefined;\n    value?: string[];\n    defaultValue?: string[];\n}\n\ntype IProps = ScrollLoadProps | NonScrollLoadProps;\n\nconst MultiSelect = ({\n    id = `${Date.now()}`,\n    error = false,\n    errorKeys = [],\n    multiple = false,\n    className,\n    contentClassName,\n    value = [],\n    scroll = false,\n    close = false,\n    defaultValue = [],\n    options = [],\n    children = null,\n    placeholder = '',\n    searchPlaceholder = '',\n    lockedValues = [],\n    tabs = null,\n    hideSearch = false,\n    onSearch,\n    onLoad,\n    onScrollLoad,\n    onChange, ...props\n}: IProps) => {\n\n    const [values, setValues] = React.useState(defaultValue)\n    const [optionFilter, setOptionFilter] = React.useState(options)\n    const [created, creatInput] = useState(false)\n    const inputRef = useRef(null)\n\n    useEffect(() => {\n        setValues(value)\n    }, [value])\n\n    useEffect(() => {\n        // if (onScrollLoad) {\n        setOptionFilter(options);\n        // }\n    }, [options]);\n\n    // delete \n    const handleDelete = (value: string) => {\n        const newValues = (values as any[]).filter((item) => {\n            const _value = onScrollLoad ? (item as Option).value : item;\n            return _value !== value\n        })\n        setValues(newValues)\n        onChange?.(newValues)\n    }\n    // add\n    const triggerRef = useRef(null)\n    const handleSwitch = (value: string, label: string) => {\n        if (lockedValues.includes(value)) {\n            return\n        }\n\n        const updateValues = (newValues: any) => {\n            setValues(newValues);\n            onChange?.(newValues);\n        };\n\n        // 单选\n        if (!multiple) {\n            const newValues = onScrollLoad ? [{ label, value }] : [value]\n            updateValues(newValues);\n            // 关闭弹窗\n            const element = triggerRef.current;\n            if (element) {\n                // 创建 PointerEvent\n                const event = new PointerEvent('pointerdown', {\n                    bubbles: true,\n                    cancelable: true,\n                    pointerId: 1,\n                    pointerType: 'mouse'\n                });\n                element.dispatchEvent(event);\n            }\n            return\n        }\n\n        if (onScrollLoad) {\n            const newValues = (values as Option[]).some(item => item.value === value)\n                ? (values as Option[]).filter(item => item.value !== value)\n                : [...(values as Option[]), { label, value }];\n            updateValues(newValues);\n        } else {\n            const newValues = (values as string[]).includes(value)\n                ? (values as string[]).filter(item => item !== value)\n                : [...(values as string[]), value];\n            updateValues(newValues);\n        }\n    }\n\n    // search\n    const handleSearch = useDebounce((e) => {\n        if (onSearch) {\n            return onSearch?.(inputRef.current?.value || '')\n        }\n        const newValues = options.filter((item) => {\n            return item.label.toLowerCase().indexOf(e.target.value.trim().toLowerCase()) !== -1\n        })\n        setOptionFilter(newValues)\n    }, 500, false)\n\n    // scroll laod\n    const footerRef = useRef(null)\n    useEffect(function () {\n        if (!created) return\n        if (!footerRef.current) return\n        if (!onScrollLoad) return // 不绑定滚动事件\n\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting) {\n                    // console.log('div is in the viewport!');\n                    onScrollLoad?.(inputRef.current?.value || '')\n                }\n            });\n        }, {\n            // root: null, // 视口\n            rootMargin: '0px', // 视口的边距\n            threshold: 0.1 // 目标元素超过视口的10%即触发回调\n        });\n\n        // 开始观察目标元素\n        observer.observe(footerRef.current);\n\n        return () => observer.unobserve(footerRef.current);\n    }, [created])\n\n    const handleClearClick = () => {\n        setValues([])\n        onChange?.([])\n    }\n\n    return <Select\n        {...props}\n        required\n        onOpenChange={(e) => {\n            creatInput(e);\n            if (e) {\n                onLoad?.();\n                setOptionFilter(options);\n            }\n        }}\n    >\n        <SelectTrigger className={cname(`group min-h-9 py-1 ${error && 'border-red-500'} ${scroll ? 'h-9 overflow-y-auto items-start pt-1.5' : 'h-auto'}`, className)} ref={triggerRef}>\n            {\n                !multiple && (values.length ? <span className=\"text-foreground\">{onScrollLoad ? (values[0] as Option).label : options.find(op => op.value === values[0])?.label}</span> : placeholder)\n            }\n            {\n                multiple && (values.length ? (\n                    onScrollLoad ? <div className=\"flex flex-wrap w-full\">\n                        {\n                            values.map(item =>\n                                <Badge onPointerDown={(e) => e.stopPropagation()} key={item.value}\n                                    className={`flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] break-all ${errorKeys.includes(item.value) && 'bg-red-100 border-red-600'}`}>\n                                    {item.label}\n                                    {lockedValues.includes(item.value) || <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(item.value)}></X>}\n                                </Badge>\n                            )\n                        }\n                    </div> : <div className=\"flex flex-wrap w-full\">\n                        {\n                            // 使用key反推label\n                            options.filter(option => (values as string[]).includes(option.value)).map(option =>\n                                <Badge onPointerDown={(e) => e.stopPropagation()} key={option.value} className=\"flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] break-all  11\">\n                                    {option.label}\n                                    {lockedValues.includes(option.value) || <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(option.value)}></X>}\n                                </Badge>\n                            )\n                        }\n                    </div>)\n                    : placeholder)\n            }\n            {close && values.length !== 0 && <X\n                className=\"group-hover:block hidden bg-border text-[#666] rounded-full p-0.5 min-w-[14px] mt-1\"\n                width={14}\n                height={14}\n                onPointerDown={(e) => e.stopPropagation()}\n                onClick={handleClearClick}\n            />}\n        </SelectTrigger>\n        <SelectContent\n            className={contentClassName + ' overflow-visible'}\n            headNode={\n                <div className=\"p-2\">\n                    {tabs}\n                    {!hideSearch && <SearchInput id={id} ref={inputRef} inputClassName=\"h-8 dark:border-gray-700\" placeholder={searchPlaceholder} onChange={handleSearch} iconClassName=\"w-4 h-4\" />}\n                </div>\n            }\n            footerNode={children}\n        >\n            <div className=\"mt-2 max-w-96\">\n                {\n                    optionFilter.map((item) => (\n                        <MultiItem\n                            active={values.some(val => val === item.value || val.value === item.value)}\n                            value={item.value}\n                            onClick={handleSwitch}\n                        >{item.label}</MultiItem>\n                    ))\n                }\n                <div ref={footerRef} style={{ height: 20 }}></div>\n            </div>\n        </SelectContent>\n    </Select>\n}\n\nMultiSelect.displayName = 'MultiSelect'\n\nexport default MultiSelect"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/select/select.tsx",
    "content": "import React, { ChangeEvent } from \"react\"\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { SearchInput } from \"../input\";\n\ninterface SelectSearchProps {\n    value: any,\n    options: { label: string, value: string }[],\n    selectPlaceholder?: string,\n    inputPlaceholder?: string,\n    onOpenChange?: (open: boolean) => void,\n    onValueChange: (value: string) => void,\n    onChange: (e: ChangeEvent<HTMLInputElement>) => void,\n    selectClass?: string,\n    contentClass?: string,\n    children?: React.ReactNode\n}\n\nconst _SelectSearch: React.FC<SelectSearchProps> = ({\n    value,\n    options,\n    selectPlaceholder = '',\n    inputPlaceholder = '',\n    onOpenChange,\n    onValueChange,\n    onChange,\n    selectClass = '',\n    contentClass = '',\n    children\n}) => {\n    return <Select value={value} onOpenChange={(open) => onOpenChange?.(open)} onValueChange={(v) => onValueChange(v)}>\n        <SelectTrigger className={selectClass}>\n            <SelectValue placeholder={selectPlaceholder} />\n        </SelectTrigger>\n        <SelectContent className={contentClass}>\n            <SearchInput inputClassName=\"h-8 mb-2 dark:border-gray-700\" placeholder={inputPlaceholder}\n                onChange={(e) => onChange(e)} onKeyDown={e => e.stopPropagation()} iconClassName=\"w-4 h-4\" />\n            <SelectGroup>\n                {children}\n                {options.map(el => (\n                    <SelectItem key={el.value} value={el.value}>{el.label}</SelectItem>\n                ))}\n            </SelectGroup>\n        </SelectContent>\n    </Select>\n}\nconst SelectSearch = React.memo(_SelectSearch)\nexport default SelectSearch"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/separator.tsx",
    "content": "\"use client\";\n\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils\";\n\nconst Separator = React.forwardRef<\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n  (\n    { className, orientation = \"horizontal\", decorative = true, ...props },\n    ref\n  ) => (\n    <SeparatorPrimitive.Root\n      ref={ref}\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-ring/40\",\n        orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/sheet/index.tsx",
    "content": "\"use client\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n    React.ElementRef<typeof SheetPrimitive.Overlay>,\n    React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n    <SheetPrimitive.Overlay\n        className={cname(\n            \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n            className\n        )}\n        onClick={e => e.stopPropagation()}\n        {...props}\n        ref={ref}\n    />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n    \"fixed z-50 gap-4 bg-background shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n    {\n        variants: {\n            side: {\n                top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n                bottom:\n                    \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n                left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n                right:\n                    \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n            },\n        },\n        defaultVariants: {\n            side: \"right\",\n        },\n    }\n)\n\ninterface SheetContentProps\n    extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n    VariantProps<typeof sheetVariants> { }\n\nconst SheetContent = React.forwardRef<\n    React.ElementRef<typeof SheetPrimitive.Content>,\n    SheetContentProps\n>(({ side = \"right\", className, noOverlay = false, noClose = false, children, ...props }, ref) => (\n    <SheetPortal>\n        {!noOverlay && <SheetOverlay />}\n        <SheetPrimitive.Content\n            ref={ref}\n            className={cname(sheetVariants({ side }), 'bg-gray-100 dark:bg-gray-950', className)}\n            {...props}\n        >\n            {children}\n            {!noClose && <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n                <X className=\"h-4 w-4\" />\n                <span className=\"sr-only\">Close</span>\n            </SheetPrimitive.Close>}\n        </SheetPrimitive.Content>\n    </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex flex-col space-y-2 text-center sm:text-left\",\n            className\n        )}\n        {...props}\n    />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cname(\n            \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n            className\n        )}\n        {...props}\n    />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n    React.ElementRef<typeof SheetPrimitive.Title>,\n    React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n    <SheetPrimitive.Title\n        ref={ref}\n        className={cname(\"text-lg font-semibold text-foreground mb-2\", className)}\n        {...props}\n    />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n    React.ElementRef<typeof SheetPrimitive.Description>,\n    React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n    <SheetPrimitive.Description\n        ref={ref}\n        className={cname(\"text-sm text-muted-foreground\", className)}\n        {...props}\n    />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n    Sheet, SheetClose,\n    SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/skeleton/index.tsx",
    "content": "import { cname } from \"../utils\";\n\nexport default function Skeleton({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n\n    return (\n        <div\n            className={cname(\"animate-pulse rounded-md bg-primary/10\", className)}\n            {...props}\n        />\n    )\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/slider/index.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\nimport { cname } from \"../utils\"\n\n\nconst Slider = React.forwardRef<\n    React.ElementRef<typeof SliderPrimitive.Root>,\n    React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n    <SliderPrimitive.Root\n        ref={ref}\n        className={cname(\n            \"relative flex w-full touch-none select-none items-center\",\n            className\n        )}\n        {...props}\n    >\n        <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n            <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n        </SliderPrimitive.Track>\n        <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background dark:bg-[#fff] shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n    </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/step/index.tsx",
    "content": "import { Check } from \"lucide-react\";\nimport React from \"react\";\n/**\n * \n组件参数说明：\n \n    参数名\t类型\t默认值\t说明\n    steps\tnumber\t2\t总步骤数\n    currentStep\tnumber\t1\t当前所在步骤（从1开始）\n    align\tstring\t\"left\"\t对齐方式，可选值：\"left\", \"center\", \"right\"\n    labels\tstring[]\t[]\t自定义步骤文字，数组长度需与steps一致，未提供时显示\"第 x 步\"\n */\ninterface StepProgressProps {\n    steps?: number;\n    currentStep?: number;\n    align?: \"left\" | \"center\" | \"right\";\n    labels?: string[];\n}\n\n/**\n使用示例：\n    // 三步流程，当前在第二步，居中布局\n    <StepProgress\n        steps={3}\n        currentStep={2}\n        align=\"center\"\n        labels={[\"填写信息\", \"验证身份\", \"完成注册\"]}\n    />\n*/\nexport default function StepProgress({\n    steps = 2,\n    currentStep = 1,\n    align = \"left\",\n    labels = []\n}: StepProgressProps) {\n    steps = labels.length || steps;\n    // 处理边界情况\n    const validatedStep = Math.min(Math.max(currentStep, 1), steps);\n    const alignmentClasses = {\n        left: \"justify-start\",\n        center: \"justify-center\",\n        right: \"justify-end\"\n    };\n\n    return (\n        <div className={`flex items-center gap-6 my-6 px-12 text-md font-bold ${alignmentClasses[align]}`}>\n            {Array.from({ length: steps }).map((_, index) => {\n                const isCompleted = index < validatedStep - 1;\n                const isCurrent = index === validatedStep - 1;\n\n                return (\n                    <React.Fragment key={index}>\n                        <div className=\"flex items-center gap-2\">\n                            {/* 圆形指示器 */}\n                            <div\n                                className={`size-[26px] rounded-full flex items-center justify-center text-[#fff] transition-colors\n                    ${isCompleted || isCurrent ? \"bg-primary \" : \"bg-primary/30\"}`}\n                            >\n                                {isCompleted ? <Check size={16} /> : <span>{index + 1}</span>}\n                            </div>\n                            {/* 步骤文字 */}\n                            <span\n                                className={`transition-colors ${isCompleted || isCurrent ? \"text-primary\" : \"text-gray-600\"}`}\n                            >\n                                {labels[index] || `第 ${index + 1} 步`}\n                            </span>\n                        </div>\n                        {/* 步骤连接线 */}\n                        {index !== steps - 1 && (\n                            <div\n                                className={`h-[1px] flex-grow transition-colors max-w-10 ${isCompleted ? \"bg-primary\" : \"bg-gray-300\"}`}\n                            />\n                        )}\n                    </React.Fragment>\n                );\n            })}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/switch/index.tsx",
    "content": "import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { cname } from \"../utils\"\n\nconst Switch = React.forwardRef<\n    React.ElementRef<typeof SwitchPrimitives.Root>,\n    React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, texts = null, ...props }, ref) => (\n    <SwitchPrimitives.Root\n        className={cname(\n            \"group peer relative inline-flex h-5 min-w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-gray-950\",\n            className\n        )}\n        {...props}\n        ref={ref}\n    >\n        <SwitchPrimitives.Thumb\n            className={cname(\n                \"pointer-events-none block h-3.5 min-w-3.5 w-3.5 rounded-full bg-background dark:bg-[#C0D6FF] shadow-lg ring-0 transition-transform data-[state=checked]:ml-[100%] data-[state=checked]:translate-x-[calc(-50%-8px)] data-[state=unchecked]:translate-x-0 dark:data-[state=unchecked]:bg-[#333437]\"\n            )}\n        />\n        {texts && <>\n            <span className=\"text text-xs absolute left-1 text-gray-50 hidden group-data-[state=checked]:block\">{texts[0]}</span>\n            <span className=\"text text-xs absolute right-1 text-gray-400 hidden group-data-[state=unchecked]:block\">{texts[1]}</span>\n        </>}\n    </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/table/index.tsx",
    "content": "import * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst Table = React.forwardRef<\n    HTMLTableElement,\n    React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n    <div className={cname(\"relative w-full\", props.noScroll ? \"\" : \"overflow-auto\")}>\n        <table\n            ref={ref}\n            className={cname(\"w-full caption-bottom text-sm border-separate border-spacing-y-1\", className)}\n            {...props}\n        />\n    </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n    HTMLTableSectionElement,\n    React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n    <thead ref={ref} className={cname(\"[&>tr]:first:bg-transparent [&>tr]:first:border-none\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n    HTMLTableSectionElement,\n    React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n    <tbody\n        ref={ref}\n        className={cname(\"[&_tr:last-child]:border-0\", className)}\n        {...props}\n    />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n    HTMLTableSectionElement,\n    React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n    <tfoot\n        ref={ref}\n        className={cname(\n            \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n            className\n        )}\n        {...props}\n    />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n    HTMLTableRowElement,\n    React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n    <tr\n        ref={ref}\n        className={cname(\n            \"group transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n            className\n        )}\n        {...props}\n    />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n    HTMLTableCellElement,\n    React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n    <th\n        ref={ref}\n        className={cname(\n            \"h-10 px-2 text-left align-middle font-medium text-muted-foreground text-md [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n            className\n        )}\n        {...props}\n    />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n    HTMLTableCellElement,\n    React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n    <td\n        ref={ref}\n        className={cname(\n            \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] bg-[#FBFBFB] dark:bg-[#171717] first:rounded-l-md last:rounded-r-md group-odd:bg-[#f4f5f8] group-hover:bg-[#ebf0ff] dark:group-odd:bg-[#111] dark:group-hover:bg-[#2a2b2e]\",\n            className\n        )}\n        {...props}\n    />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n    HTMLTableCaptionElement,\n    React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n    <caption\n        ref={ref}\n        className={cname(\"mt-4 text-sm text-muted-foreground\", className)}\n        {...props}\n    />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n    Table,\n    TableHeader,\n    TableBody,\n    TableFooter,\n    TableHead,\n    TableRow,\n    TableCell,\n    TableCaption,\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/tabs/index.tsx",
    "content": "\"use client\";\n\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cname } from \"../utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cname(\n      \"inline-flex h-[38px] items-center justify-center rounded-md p-1 text-muted-foreground bg-primary\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cname(\n      \"inline-flex items-center text-[#fff] border-none justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:border data-[state=inactive]:border data-[state=inactive]:border-muted data-[state=active]:bg-background dark:data-[state=active]:bg-[#34353A] data-[state=active]:text-foreground data-[state=active]:shadow-sm data-[state=inactive]:hover:bg-secondary/20\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cname(\n      \"mt-2 ring-offset-background focus-visible:outline-none data-[state=inactive]:hidden\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/toast/index.tsx",
    "content": "import { ToastIcon } from \"../../bs-icons/toast\"\nimport {\n    Toast,\n    ToastClose,\n    ToastDescription,\n    ToastProvider,\n    ToastTitle,\n    ToastViewport,\n} from \"./toast\"\nimport { useToast } from \"./use-toast\"\n\nexport function Toaster() {\n    const { toasts } = useToast()\n\n    return (\n        <ToastProvider>\n            {toasts.map(function ({ id, title, description, action, ...props }) {\n                return (\n                    <Toast key={id} {...props} duration={4000}>\n                        <div className=\" self-start\">\n                            <ToastIcon type={props.variant} />\n                        </div>\n                        <div className=\"grid gap-1\">\n                            {title && <ToastTitle>{title}</ToastTitle>}\n                            {description && (\n                                <ToastDescription className=\"whitespace-pre-wrap\">{description}</ToastDescription>\n                            )}\n                        </div>\n                        {action}\n                        <ToastClose />\n                    </Toast>\n                )\n            })}\n            <ToastViewport />\n        </ToastProvider>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/toast/toast.tsx",
    "content": "import * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Viewport>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n    <ToastPrimitives.Viewport\n        ref={ref}\n        className={cname(\n            \"fixed top-0 z-[1000] flex w-full flex-col-reverse pointer-events-none\",\n            className\n        )}\n        {...props}\n    />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n    \"group pointer-events-auto relative flex w-full md:w-[420px] items-center space-x-3 overflow-hidden rounded-md border p-4 mt-4 mr-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-top-full\",\n    {\n        variants: {\n            variant: {\n                info: \"info border-[#024FE5] bg-[#F1F6FF] dark:bg-[#1C2C24] self-end\",\n                success: \"success border-[#0BA95D] bg-[#F2FFF9] dark:bg-[#1A2335] self-end\",\n                warning: \"warning border-[#EA991F] bg-[#FFF7EC] dark:bg-[#2F2517] self-end\",\n                error: \"error border-[#D8341E] bg-[#FFF2F0] dark:bg-[#351F1C] self-end\",\n            },\n            message: {\n                info: \"shadow-xl bg-[#fff] dark:bg-[#303134] self-center\",\n                success: \"shadow-xl bg-[#fff] dark:bg-[#303134] self-center\",\n                warning: \"shadow-xl bg-[#fff] dark:bg-[#303134] self-center\",\n                error: \"shadow-xl bg-[#fff] dark:bg-[#303134] self-center\",\n            }\n        },\n        defaultVariants: {},\n    }\n)\n\nconst Toast = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Root>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants> &\n    { isAlert?: boolean }\n>(({ className, variant = 'info', isAlert, ...props }, ref) => {\n    const variants = isAlert ? { message: variant } : { variant }\n\n    return (\n        <ToastPrimitives.Root\n            ref={ref}\n            className={cname(toastVariants(variants), className)}\n            {...props}\n        />\n    )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Action>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n    <ToastPrimitives.Action\n        ref={ref}\n        className={cname(\n            \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n            className\n        )}\n        {...props}\n    />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Close>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n    <ToastPrimitives.Close\n        ref={ref}\n        className={cname(\n            \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100\",\n            className\n        )}\n        toast-close=\"\"\n        {...props}\n    >\n        <X className=\"h-4 w-4\" />\n    </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Title>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n    <ToastPrimitives.Title\n        ref={ref}\n        className={cname(\"text-sm font-semibold [&+div]:text-xs group-[.info]:text-[#024FE5] group-[.success]:text-[#0BA95D] group-[.warning]:text-[#EA991F] group-[.error]:text-[#D8341E]\", className)}\n        {...props}\n    />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n    React.ElementRef<typeof ToastPrimitives.Description>,\n    React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n    <ToastPrimitives.Description\n        ref={ref}\n        className={cname(\"text-sm opacity-90 break-all\", className)}\n        {...props}\n    />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n    Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, type ToastActionElement, type ToastProps\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/toast/use-toast.tsx",
    "content": "import * as React from \"react\"\n\nimport type {\n    ToastActionElement,\n    ToastProps,\n} from \"./toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 6 * 1000\n\ntype ToasterToast = ToastProps & {\n    id: string\n    isAlert?: boolean,\n    title?: React.ReactNode\n    description?: React.ReactNode\n    action?: ToastActionElement\n}\n\nconst actionTypes = {\n    ADD_TOAST: \"ADD_TOAST\",\n    UPDATE_TOAST: \"UPDATE_TOAST\",\n    DISMISS_TOAST: \"DISMISS_TOAST\",\n    REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n    count = (count + 1) % Number.MAX_SAFE_INTEGER\n    return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n    | {\n        type: ActionType[\"ADD_TOAST\"]\n        toast: ToasterToast\n    }\n    | {\n        type: ActionType[\"UPDATE_TOAST\"]\n        toast: Partial<ToasterToast>\n    }\n    | {\n        type: ActionType[\"DISMISS_TOAST\"]\n        toastId?: ToasterToast[\"id\"]\n    }\n    | {\n        type: ActionType[\"REMOVE_TOAST\"]\n        toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n    toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n    if (toastTimeouts.has(toastId)) {\n        return\n    }\n\n    const timeout = setTimeout(() => {\n        toastTimeouts.delete(toastId)\n        dispatch({\n            type: \"REMOVE_TOAST\",\n            toastId: toastId,\n        })\n    }, TOAST_REMOVE_DELAY)\n\n    toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n    switch (action.type) {\n        case \"ADD_TOAST\":\n            return {\n                ...state,\n                toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n            }\n\n        case \"UPDATE_TOAST\":\n            return {\n                ...state,\n                toasts: state.toasts.map((t) =>\n                    t.id === action.toast.id ? { ...t, ...action.toast } : t\n                ),\n            }\n\n        case \"DISMISS_TOAST\": {\n            const { toastId } = action\n\n            // ! Side effects ! - This could be extracted into a dismissToast() action,\n            // but I'll keep it here for simplicity\n            if (toastId) {\n                addToRemoveQueue(toastId)\n            } else {\n                state.toasts.forEach((toast) => {\n                    addToRemoveQueue(toast.id)\n                })\n            }\n\n            return {\n                ...state,\n                toasts: state.toasts.map((t) =>\n                    t.id === toastId || toastId === undefined\n                        ? {\n                            ...t,\n                            open: false,\n                        }\n                        : t\n                ),\n            }\n        }\n        case \"REMOVE_TOAST\":\n            if (action.toastId === undefined) {\n                return {\n                    ...state,\n                    toasts: [],\n                }\n            }\n            return {\n                ...state,\n                toasts: state.toasts.filter((t) => t.id !== action.toastId),\n            }\n    }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n    memoryState = reducer(memoryState, action)\n    listeners.forEach((listener) => {\n        listener(memoryState)\n    })\n}\n\ntype Toast = Omit<ToasterToast, \"id\" | \"isAlert\"> & { description: string[] | string }\n\nfunction toast({ description: descs = [], ...props }: Toast & { isAlert?: boolean }) {\n    const id = genId()\n\n    const update = (props: ToasterToast) =>\n        dispatch({\n            type: \"UPDATE_TOAST\",\n            toast: { ...props, id },\n        })\n    const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n    const description = Array.isArray(descs) ? descs.map(msg => <p>{msg}</p>) : descs\n\n    dispatch({\n        type: \"ADD_TOAST\",\n        toast: {\n            ...props,\n            description,\n            id,\n            open: true,\n            onOpenChange: (open) => {\n                console.log('toast remove', id, open);\n                if (!open) dismiss()\n            },\n        },\n    })\n\n    return {\n        id: id,\n        dismiss,\n        update,\n    }\n}\n\nfunction message(props: Toast) {\n    return toast({ ...props, isAlert: true })\n}\n\nfunction useToast() {\n    const [state, setState] = React.useState<State>(memoryState)\n\n    React.useEffect(() => {\n        listeners.push(setState)\n        return () => {\n            const index = listeners.indexOf(setState)\n            if (index > -1) {\n                listeners.splice(index, 1)\n            }\n        }\n    }, [state])\n\n    return {\n        ...state,\n        message,\n        toast,\n        dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n    }\n}\n\n// message中间提示，toast右侧告警\nexport { useToast, toast, message }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/toggle-group.tsx",
    "content": "import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\nimport { cn } from \"../../utils\"\nimport { toggleVariants } from \"./toggle\"\n\nconst ToggleGroupContext = React.createContext<\n    VariantProps<typeof toggleVariants>\n>({\n    size: \"default\",\n    variant: \"default\",\n})\n\nconst ToggleGroup = React.forwardRef<\n    React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n    React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n    <ToggleGroupPrimitive.Root\n        ref={ref}\n        className={cn(\"flex items-center justify-center gap-1\", className)}\n        {...props}\n    >\n        <ToggleGroupContext.Provider value={{ variant, size }}>\n            {children}\n        </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n))\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n    React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n    React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n    VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n    const context = React.useContext(ToggleGroupContext)\n\n    return (\n        <ToggleGroupPrimitive.Item\n            ref={ref}\n            className={cn(\n                toggleVariants({\n                    variant: context.variant || variant,\n                    size: context.size || size,\n                }),\n                className\n            )}\n            {...props}\n        >\n            {children}\n        </ToggleGroupPrimitive.Item>\n    )\n})\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/toggle.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../utils\"\n\nconst toggleVariants = cva(\n    \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n    {\n        variants: {\n            variant: {\n                default: \"bg-transparent\",\n                outline:\n                    \"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground\",\n            },\n            size: {\n                default: \"h-9 px-3\",\n                sm: \"h-8 px-2\",\n                lg: \"h-10 px-3\",\n            },\n        },\n        defaultVariants: {\n            variant: \"default\",\n            size: \"default\",\n        },\n    }\n)\n\nconst Toggle = React.forwardRef<\n    React.ElementRef<typeof TogglePrimitive.Root>,\n    React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n    <TogglePrimitive.Root\n        ref={ref}\n        className={cn(toggleVariants({ variant, size, className }))}\n        {...props}\n    />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/tooltip/index.tsx",
    "content": "\"use client\"\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { CircleHelp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { cname } from \"../utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\nconst Tooltip = TooltipPrimitive.Root\nconst TooltipTrigger = TooltipPrimitive.Trigger\nconst Portal = TooltipPrimitive.Portal\n\nconst TooltipContent = React.forwardRef<\n    React.ElementRef<typeof TooltipPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n    <TooltipPrimitive.Content\n        ref={ref}\n        sideOffset={sideOffset}\n        className={cname(\n            \"z-50 overflow-hidden rounded-md bg-primary/80 px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[side=top-right]:translate-x-4\",\n            className\n        )}\n        {...props}\n    />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Portal }\n\n\nexport const QuestionTooltip = ({\n    error = false,\n    className = '',\n    content,\n    // 新增：支持自定义触发元素，默认保留问号图标\n    children = null\n}) => (\n    <TooltipProvider delayDuration={100}>\n        <Tooltip defaultOpen={false}>\n            <TooltipTrigger className={className} tabIndex={-1}>\n                {/* 保留原有问号图标作为默认值，同时支持传入自定义内容 */}\n                {children || (\n                    <CircleHelp className={`w-3.5 h-3.5 ${error && 'text-red-500'}`} />\n                )}\n            </TooltipTrigger>\n            <TooltipContent className={error && 'bg-red-500/80'}>\n                <div className=\"max-w-96 text-left break-all whitespace-normal\">{content}</div>\n            </TooltipContent>\n        </Tooltip>\n    </TooltipProvider>\n);\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/tooltip/tip.tsx",
    "content": "import { Tooltip, TooltipContent, TooltipTrigger, Portal } from \"./index\";\n\nexport default function Tip({\n    content,\n    side,\n    asChild = true,\n    children,\n    styleClasses,\n    delayDuration = 200,\n    align = \"center\"\n}: {\n    content: string;\n    side: \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-right\";\n    asChild?: boolean;\n    children: React.ReactNode;\n    styleClasses?: string;\n    delayDuration?: number\n    align?: \"center\" | \"start\" | \"end\"\n}): JSX.Element {\n    return content ? <Tooltip delayDuration={delayDuration}>\n        <TooltipTrigger asChild={asChild}>{children}</TooltipTrigger>\n        <Portal>\n            <TooltipContent\n                className={`${styleClasses} text-sm shadow-md`}\n                side={side}\n                align={align}\n                avoidCollisions={false}\n                sticky=\"always\"\n            >\n                <div className=\" max-w-96 text-left break-all whitespace-normal\">{content}</div>\n            </TooltipContent>\n        </Portal>\n    </Tooltip> : children\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/upload/simple.tsx",
    "content": "import { UploadIcon } from \"@/components/bs-icons\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { useToast } from \"../toast/use-toast\";\nimport { cname } from \"../utils\";\nimport axios from \"@/controllers/request\";\n\nexport default function SimpleUpload({ filekey, uploadUrl, accept, className = '', preCheck, onUpload, onProgress, onError, onSuccess }) {\n    const { t } = useTranslation();\n    const { toast } = useToast()\n\n    const onDrop = async (acceptedFiles) => {\n        const sizeLimit = 50 * 1024 * 1024;\n        const errorFile = [];\n        const files = []\n        acceptedFiles.forEach(file => {\n            file.size < sizeLimit ?\n                files.push(file) :\n                errorFile.push(file.name);\n        });\n        errorFile.length && toast({\n            title: t('prompt'),\n            description: errorFile.map(str => `${t('code.file')}: ${str} ${t('code.sizeExceedsLimit')}`),\n        });\n        if (!files.length) return\n\n        // Perform pre-verification (if the preCheck function is provided)\n        if (preCheck) {\n            try {\n                const checkResult = await preCheck(files[0]);\n                if (checkResult?.valid === false) {\n                    toast({\n                        title: t('prompt'),\n                        description: checkResult.message || t('code.preCheckFailed'),\n                    });\n                    return;\n                }\n            } catch (error) {\n                toast({\n                    title: t('prompt'),\n                    description: error.message || t('code.preCheckError'),\n                });\n                return;\n            }\n        }\n\n        const formData = new FormData();\n        formData.append(filekey, files[0]);\n\n        const res = await axios.post(uploadUrl, formData);\n        onSuccess(files[0].name, res.file_path)\n    }\n\n    const { getRootProps, getInputProps, isDragActive } = useDropzone({\n        accept: {\n            'application/*': accept.map(str => `.${str}`)\n        },\n        multiple: false,\n        useFsAccessApi: false,\n        onDrop\n    });\n\n\n    return <div {...getRootProps()} className={cname('group h-[100px] border border-dashed rounded-md flex flex-col justify-center items-center cursor-pointer gap-3 hover:border-primary', className)}>\n        <input {...getInputProps()} />\n        <UploadIcon className=\"group-hover:text-primary\" />\n        {isDragActive ? <p className=\"text-gray-400 text-sm\">{t('code.dropFileHere')}</p> : <p className=\"text-gray-400 text-sm\">{t('code.clickOrDragHere')}</p>}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/utils.tsx",
    "content": "import clsx, { ClassValue } from \"clsx\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * 样式合并\n */\nexport function cname(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\n\nexport const generateUUID = (length: number) => {\n  let d = new Date().getTime()\n  const uuid = ''.padStart(length, 'x').replace(/[xy]/g, (c) => {\n    const r = (d + Math.random() * 16) % 16 | 0\n    d = Math.floor(d / 16)\n    return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16)\n  })\n  return uuid\n}\n\n\n// 防抖\nexport function useDebounce(func: any, wait: number, immediate: boolean, callback?: any,): (any?: any) => any {\n  let timer = useRef<NodeJS.Timeout | null>();\n  const fnRef = useRef<any>(func);\n  useEffect(() => { fnRef.current = func; }, [func]);\n  const timerCancel = function () { if (timer.current) clearTimeout(timer.current); };\n\n  function debounced(...args: any[]) {\n    const runFunction = () => {\n      return callback\n        ? callback(fnRef.current.apply(fnRef.current, args))\n        : fnRef.current.apply(fnRef.current, args);\n    };\n    timerCancel();\n    if (immediate) {\n      let runNow = !timer.current;\n      timer.current = setTimeout(() => { timer.current = null; }, wait);\n      if (runNow) {\n        runFunction();\n      }\n    } else {\n      timer.current = setTimeout(() => { runFunction(); }, wait);\n    }\n  }\n  debounced.cancel = function () { timerCancel(); timer.current = null; };\n  return useCallback(debounced, [wait, immediate, timerCancel, func]);\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/bs-ui/voice/index.tsx",
    "content": "import React, { useState, useEffect, useRef } from 'react';\n\nconst VoiceRecordingIcon = ({ \n  size = 28,  \n  onClick, \n  circleColor = '#f0f0f0',  \n  barColor = 'black'      \n}) => {\n  const [bars, setBars] = useState([0, 0, 0, 0, 0]);\n  const animationRef = useRef(null);\n\n  // 生成明显的随机波形\n  const generateWave = () => {\n    // 强制每条竖线有明显高度差异（0.2-1.0范围）\n    return [\n      0.2 + Math.random() * 0.5,  // 第一条：低幅度波动\n      0.3 + Math.random() * 0.7,  // 第二条：中幅度\n      0.5 + Math.random() * 0.5,  // 第三条：高幅度（最明显）\n      0.3 + Math.random() * 0.7,  // 第四条：中幅度\n      0.2 + Math.random() * 0.5   // 第五条：低幅度\n    ];\n  };\n\n  // 动画循环（每100ms强制更新一次，确保肉眼可见）\n  const animate = () => {\n    setBars(generateWave());\n    animationRef.current = setTimeout(animate, 200); // 改用setTimeout确保固定间隔\n  };\n\n  // 组件挂载时启动动画，卸载时清理\n  useEffect(() => {\n    animate();\n    return () => clearTimeout(animationRef.current);\n  }, []);\n\n  const innerSize = size * 0.6;\n\n  return (\n    <div \n      style={{\n        width: size,\n        height: size,\n        borderRadius: '50%',\n        backgroundColor: circleColor,\n        border: '1px solid #e0e0e0',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        cursor: 'pointer',\n      }}\n      onClick={onClick}\n    >\n      <div \n        style={{\n          width: innerSize,\n          height: innerSize * 0.9, // 增加高度占比，让波动更明显\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n        }}\n      >\n        {bars.map((height, i) => (\n          <div \n            key={i}\n            style={{\n              width: innerSize * 0.07, // 加宽竖线，增强视觉效果\n              height: height * innerSize * 0.9,\n              backgroundColor: barColor,\n              margin: `0 ${innerSize * 0.06}px`, \n              borderRadius: 1,\n            }}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default VoiceRecordingIcon;"
  },
  {
    "path": "src/frontend/platform/src/components/chatComponent/buildTrigger/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { Zap } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport Loading from \"../../../components/ui/loading\";\nimport { useSSE } from \"../../../contexts/SSEContext\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport { typesContext } from \"../../../contexts/typesContext\";\nimport { postBuildInit } from \"../../../controllers/API\";\nimport { FlowType } from \"../../../types/flow\";\nimport { validateNodes } from \"../../../utils\";\n\nimport { TabsContext } from \"../../../contexts/tabsContext\";\nimport RadialProgressComponent from \"../../RadialProgress\";\n\nexport default function BuildTrigger({\n  open,\n  flow,\n  setIsBuilt,\n}: {\n  open: boolean;\n  flow: FlowType;\n  setIsBuilt: any;\n  isBuilt: boolean;\n}) {\n  const { updateSSEData, isBuilding, setIsBuilding, sseData } = useSSE();\n  const { reactFlowInstance } = useContext(typesContext);\n  const { version, setTabsState } = useContext(TabsContext);\n  const { setErrorData, setSuccessData } = useContext(alertContext);\n  // const [isIconTouched, setIsIconTouched] = useState(false);\n  const eventClick = isBuilding ? \"pointer-events-none\" : \"\";\n  const [progress, setProgress] = useState(0);\n\n  async function handleBuild(flow: FlowType) {\n    try {\n      if (isBuilding) {\n        return;\n      }\n      const errors = validateNodes(reactFlowInstance);\n      if (errors.length > 0) {\n        setErrorData({\n          title: \"It seems like you are missing some configurations.\",\n          list: errors,\n        });\n        return;\n      }\n      const minimumLoadingTime = 200; // in milliseconds\n      const startTime = Date.now();\n      setIsBuilding(true);\n\n      const allNodesValid = await streamNodeData(flow);\n      await enforceMinimumLoadingTime(startTime, minimumLoadingTime); // 200内完成streamNodeData，阻塞剩余时间；否则不阻塞（最大等待200）\n      setIsBuilt(allNodesValid);\n      if (!allNodesValid) {\n        setErrorData({\n          title: \"It seems like you are missing some configurations.\",\n          list: [\n            \"Check the components and try again. You can hover over the component status icon 🔴 to inspect.\",\n          ],\n        });\n      }\n    } catch (error) {\n      console.error(\"Error:\", error);\n    } finally {\n      setIsBuilding(false);\n    }\n  }\n  async function streamNodeData(flow: FlowType) {\n    // Step 1: Make a POST request to send the flow data and receive a unique session ID\n    const { flowId } = await postBuildInit({ flow });\n    // Step 2: Use the session ID to establish an SSE connection using EventSource\n    let validationResults = [];\n    let finished = false;\n    let buildEnd = false\n    const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/build/stream/${flowId}`;\n    const eventSource = new EventSource(apiUrl);\n\n    eventSource.onmessage = (event) => {\n      // If the event is parseable, return\n      if (!event.data) {\n        return;\n      }\n      const parsedData = JSON.parse(event.data);\n      // if the event is the end of the stream, close the connection\n      if (parsedData.end_of_stream) {\n        eventSource.close();\n        buildEnd = true\n\n        return;\n      } else if (parsedData.log) {\n        // If the event is a log, log it\n        setSuccessData({ title: parsedData.log });\n      } else if (parsedData.input_keys) {\n        setTabsState((old) => {\n          return {\n            ...old,\n            [flowId]: {\n              ...old[flowId],\n              formKeysData: parsedData,\n            },\n          };\n        });\n      } else {\n        // Otherwise, process the data\n        const isValid = processStreamResult(parsedData); // ?\n        setProgress(parsedData.progress);\n        validationResults.push(isValid);\n      }\n    };\n\n    eventSource.onerror = (error: any) => {\n      console.error(\"EventSource failed:\", error);\n      eventSource.close();\n      if (error.data) {\n        const parsedData = JSON.parse(error.data);\n        setErrorData({ title: parsedData.error });\n        setIsBuilding(false);\n      }\n    };\n    // Step 3: Wait for the stream to finish\n    while (!finished) {\n      await new Promise((resolve) => setTimeout(resolve, 100));\n      finished = buildEnd // validationResults.length === flow.data.nodes.length;\n    }\n    // Step 4: Return true if all nodes are valid, false otherwise\n    return validationResults.every((result) => result);\n  }\n\n  function processStreamResult(parsedData) {\n    // Process each chunk of data here\n    // Parse the chunk and update the context\n    try {\n      updateSSEData({ [parsedData.id]: parsedData });\n    } catch (err) {\n      console.log(\"Error parsing stream data: \", err);\n    }\n    return parsedData.valid;\n  }\n\n  async function enforceMinimumLoadingTime(\n    startTime: number,\n    minimumLoadingTime: number\n  ) {\n    const elapsedTime = Date.now() - startTime;\n    const remainingTime = minimumLoadingTime - elapsedTime;\n\n    if (remainingTime > 0) {\n      return new Promise((resolve) => setTimeout(resolve, remainingTime));\n    }\n  }\n\n  const handleMouseEnter = () => {\n    // setIsIconTouched(true);\n  };\n\n  const handleMouseLeave = () => {\n    // setIsIconTouched(false);\n  };\n\n  return (\n    <Transition\n      show={!open}\n      appear={true}\n      enter=\"transition ease-out duration-300\"\n      enterFrom=\"translate-y-96\"\n      enterTo=\"translate-y-0\"\n      leave=\"transition ease-in duration-300\"\n      leaveFrom=\"translate-y-0\"\n      leaveTo=\"translate-y-96\"\n    >\n      <div className=\"fixed bottom-20 right-4\">\n        <div\n          className={`${eventClick} round-button-form`}\n          onClick={() => {\n            handleBuild(flow);\n          }}\n        // onMouseEnter={handleMouseEnter}\n        // onMouseLeave={handleMouseLeave}\n        >\n          <button>\n            <div className=\"round-button-div\">\n              {isBuilding && progress < 1 ? (\n                // Render your loading animation here when isBuilding is true\n                <RadialProgressComponent\n                  // ! confirm below works\n                  color={\"text-build-trigger\"}\n                  value={progress}\n                ></RadialProgressComponent>\n              ) : isBuilding ? (\n                <Loading\n                  strokeWidth={1.5}\n                  className=\"build-trigger-loading-icon\"\n                />\n              ) : (\n                <Zap\n                  strokeWidth={1.5}\n                  className=\"sh-6 w-6 fill-build-trigger stroke-build-trigger stroke-1\"\n                />\n              )}\n            </div>\n          </button>\n        </div>\n      </div>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/chatComponent/chatTrigger/index.tsx",
    "content": "import { Transition } from \"@headlessui/react\";\nimport { MessagesSquare } from \"lucide-react\";\n\nimport { useContext } from \"react\";\nimport {\n  CHAT_CANNOT_OPEN_DESCRIPTION,\n  CHAT_CANNOT_OPEN_TITLE,\n  FLOW_NOT_BUILT_DESCRIPTION,\n  FLOW_NOT_BUILT_TITLE,\n} from \"../../../constants\";\nimport { alertContext } from \"../../../contexts/alertContext\";\n\nexport default function ChatTrigger({ open, setOpen, isBuilt, canOpen }) {\n  const { setErrorData } = useContext(alertContext);\n\n  function handleClick() {\n    if (isBuilt) {\n      if (canOpen) {\n        setOpen(true);\n      } else {\n        setErrorData({\n          title: CHAT_CANNOT_OPEN_TITLE,\n          list: [CHAT_CANNOT_OPEN_DESCRIPTION],\n        });\n      }\n    } else {\n      setErrorData({\n        title: FLOW_NOT_BUILT_TITLE,\n        list: [FLOW_NOT_BUILT_DESCRIPTION],\n      });\n    }\n  }\n\n  return (\n    <Transition\n      show={!open}\n      appear={true}\n      enter=\"transition ease-out duration-300\"\n      enterFrom=\"translate-y-96\"\n      enterTo=\"translate-y-0\"\n      leave=\"transition ease-in duration-300\"\n      leaveFrom=\"translate-y-0\"\n      leaveTo=\"translate-y-96\"\n    >\n      <button\n        onClick={handleClick}\n        className={\n          \"shadow-round-btn-shadow hover:shadow-round-btn-shadow message-button \" +\n          (!isBuilt || !canOpen ? \"cursor-not-allowed\" : \"cursor-pointer\")\n        }\n      >\n        <div className=\"flex gap-3\">\n          <MessagesSquare\n            className={\n              \"h-6 w-6 transition-all \" +\n              (isBuilt && canOpen\n                ? \"message-button-icon\"\n                : \"disabled-message-button-icon\")\n            }\n            style={{ color: \"white\" }}\n            strokeWidth={1.5}\n          />\n        </div>\n      </button>\n    </Transition>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/chatComponent/index.tsx",
    "content": "import { useContext, useEffect, useRef, useState } from \"react\";\nimport { useNodes } from \"@xyflow/react\";\nimport { ChatType } from \"../../types/chat\";\nimport BuildTrigger from \"./buildTrigger\";\nimport ChatTrigger from \"./chatTrigger\";\n\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { TabsContext } from \"../../contexts/tabsContext\";\nimport { getBuildStatus } from \"../../controllers/API\";\nimport FormModal from \"../../modals/formModal\";\nimport { NodeType } from \"../../types/flow\";\n\nexport default function Chat({ flow }: { flow: ChatType['flow'], reactFlowInstance: any }) {\n  const [open, setOpen] = useState(false);\n  const [isBuilt, setIsBuilt] = useState(false); // 构建完成\n  const [canOpen, setCanOpen] = useState(false); // 是否可打开对话\n  const { version, tabsState } = useContext(TabsContext);\n\n  // 打开对话框快捷键\n  useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (\n        (event.key === \"K\" || event.key === \"k\") &&\n        (event.metaKey || event.ctrlKey) &&\n        isBuilt\n      ) {\n        event.preventDefault();\n        setOpen((oldState) => !oldState);\n      }\n    };\n    document.addEventListener(\"keydown\", handleKeyDown);\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown);\n    };\n  }, [isBuilt]);\n\n  // 获取构建状态\n  useEffect(() => {\n    if (!flow || !version) return;\n    // Define an async function within the useEffect hook\n    const fetchBuildStatus = async () => {\n      const response = await getBuildStatus(flow.id, version.id);\n      setIsBuilt(response.built);\n    };\n\n    // Call the async function\n    fetchBuildStatus();\n  }, [flow, version]);\n\n  // 根据tabsState跟新build和canopen状态\n  const prevNodesRef = useRef<any[] | undefined>();\n  // const firstChange = useRef(true)\n  const nodes = useNodes();\n  useEffect(() => {\n    const prevNodes = prevNodesRef.current;\n    const currentNodes = nodes.map((node: NodeType) =>\n      cloneDeep(node.data.node.template)\n    );\n    if (\n      tabsState &&\n      tabsState[flow.id] &&\n      tabsState[flow.id].isPending &&\n      JSON.stringify(prevNodes) !== JSON.stringify(currentNodes)\n    ) {\n      // 上一次与当前node template不同，改变build状态\n      setIsBuilt(false);\n      // !firstChange.current && console.log('有变更 :>> ');\n    }\n    // 有input keys时打开canopen\n    if (\n      tabsState &&\n      tabsState[flow.id] &&\n      tabsState[flow.id].formKeysData &&\n      tabsState[flow.id].formKeysData.input_keys &&\n      tabsState[flow.id].formKeysData.input_keys.length\n      // Object.keys(tabsState[flow.id].formKeysData.input_keys).length > 0\n    ) {\n      setCanOpen(true);\n    } else {\n      setCanOpen(false);\n    }\n\n    prevNodesRef.current = currentNodes;\n  }, [tabsState, flow.id]);\n\n  return (\n    <>\n      <div>\n        {/* 构建按钮 */}\n        <BuildTrigger\n          open={open}\n          flow={flow}\n          setIsBuilt={setIsBuilt}\n          isBuilt={isBuilt}\n        />\n        {/* 对话表单 */}\n        {isBuilt &&\n          tabsState[flow.id] &&\n          tabsState[flow.id].formKeysData &&\n          canOpen && (\n            <FormModal\n              key={flow.id}\n              flow={flow}\n              open={open}\n              setOpen={setOpen}\n            />\n          )}\n        {/* 对话按钮 */}\n        <ChatTrigger\n          canOpen={canOpen}\n          open={open}\n          setOpen={setOpen}\n          isBuilt={isBuilt}\n        />\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/codeAreaComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport CodeAreaModal from \"../../modals/codeAreaModal\";\nimport { TextAreaComponentType } from \"../../types/components\";\n\nimport { ExternalLink } from \"lucide-react\";\n\nexport default function CodeAreaComponent({\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n  nodeClass,\n  setNodeClass,\n}: TextAreaComponentType) {\n  const [myValue, setMyValue] = useState(\n    typeof value == \"string\" ? value : JSON.stringify(value)\n  );\n  const { openPopUp } = useContext(PopUpContext);\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setMyValue(typeof value == \"string\" ? value : JSON.stringify(value));\n  }, [value]);\n\n  return (\n    <div className={disabled ? \"pointer-events-none w-full \" : \" w-full\"}>\n      <div className=\"flex w-full items-center\">\n        <span\n          onClick={() => {\n            openPopUp(\n              <CodeAreaModal\n                value={myValue}\n                nodeClass={nodeClass}\n                setNodeClass={setNodeClass}\n                setValue={(t: string) => {\n                  setMyValue(t);\n                  onChange(t);\n                }}\n              />\n            );\n          }}\n          className={\n            editNode\n              ? \"input-edit-node input-dialog\"\n              : (disabled ? \" input-disable input-ring \" : \"\") +\n                \" input-primary text-muted-foreground \"\n          }\n        >\n          {myValue !== \"\" ? myValue : \"input...\"}\n        </span>\n        <button\n          onClick={() => {\n            openPopUp(\n              <CodeAreaModal\n                setNodeClass={setNodeClass}\n                value={myValue}\n                nodeClass={nodeClass}\n                setValue={(t: string) => {\n                  setMyValue(t);\n                  onChange(t);\n                }}\n              />\n            );\n          }}\n        >\n          {!editNode && (\n            <ExternalLink\n              strokeWidth={1.5}\n              className={\n                \"icons-parameters-comp\" +\n                (disabled ? \" text-ring\" : \" hover:text-accent-foreground\")\n              }\n            />\n          )}\n        </button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/dictComponent/index.tsx",
    "content": "import { useEffect, useRef } from \"react\";\nimport { DictComponentType } from \"../../types/components\";\n\nimport DictAreaModal from \"../../modals/dictAreaModal\";\nimport { classNames } from \"../../util/utils\";\nimport { Input } from \"../bs-ui/input\";\n\nexport default function DictComponent({\n    value,\n    onChange,\n    disabled,\n    editNode = false,\n}: DictComponentType): JSX.Element {\n    useEffect(() => {\n        if (disabled) {\n            onChange({});\n        }\n    }, [disabled]);\n\n    const ref = useRef(value);\n    return (\n        <div\n            className={classNames(\n                value.length > 1 && editNode ? \"my-1\" : \"\",\n                \"flex flex-col gap-3\"\n            )}\n        >\n            {\n                <div className=\"flex w-full gap-3\">\n                    <DictAreaModal\n                        value={ref.current}\n                        onChange={(obj) => {\n                            onChange(obj);\n                        }}\n                    >\n                        <Input\n                            type=\"text\"\n                            value={value}\n                            readOnly\n                            className={\n                                editNode\n                                    ? \"input-edit-node input-disable pointer-events-none cursor-pointer\"\n                                    : \"input-disable pointer-events-none cursor-pointer text-gray-500\"\n                            }\n                            placeholder=\"Click to edit your dictionary...\"\n                        />\n                    </DictAreaModal>\n                </div>\n            }\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/dropdownComponent/index.tsx",
    "content": "import { Listbox, Transition } from \"@headlessui/react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { Fragment, useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { DropDownComponentType } from \"../../types/components\";\nimport { classNames } from \"../../utils\";\n\nexport default function Dropdown({\n  value,\n  options,\n  onSelect,\n  editNode = false,\n  numberOfOptions = 0,\n  apiModal = false,\n}: DropDownComponentType) {\n  const { closePopUp } = useContext(PopUpContext);\n\n  let [internalValue, setInternalValue] = useState(\n    value === \"\" || !value ? \"\" : value\n  );\n\n  useEffect(() => {\n    setInternalValue(value === \"\" || !value ? \"\" : value);\n  }, [closePopUp]);\n\n  useEffect(() => {\n    if (internalValue !== value) {\n      setInternalValue(value)\n    }\n  }, [value])\n\n  return (\n    <>\n      <Listbox\n        value={internalValue}\n        onChange={(value) => {\n          setInternalValue(value);\n          onSelect(value);\n        }}\n      >\n        {({ open }) => (\n          <>\n            <div className={editNode ? \"mt-1\" : \"relative mt-1\" + ' col-span-3'}>\n              <Listbox.Button\n                className={\n                  editNode\n                    ? \"dropdown-component-outline min-h-[38px]\"\n                    : \"dropdown-component-false-outline min-h-[38px]\"\n                }\n              >\n                <span className=\"dropdown-component-display\">\n                  {internalValue}\n                </span>\n                <span className={\"dropdown-component-arrow\"}>\n                  <ChevronsUpDown\n                    className=\"dropdown-component-arrow-color\"\n                    aria-hidden=\"true\"\n                  />\n                </span>\n              </Listbox.Button>\n\n              <Transition\n                show={open}\n                as={Fragment}\n                leave=\"transition ease-in duration-100\"\n                leaveFrom=\"opacity-100\"\n                leaveTo=\"opacity-0\"\n              >\n                <Listbox.Options\n                  className={classNames(\n                    editNode\n                      ? \"dropdown-component-true-options nowheel custom-scroll\"\n                      : \"dropdown-component-false-options nowheel custom-scroll\",\n                    apiModal ? \"mb-2 w-[250px]\" : \"absolute\"\n                  )}\n                >\n                  {options.map((option, id) => (\n                    <Listbox.Option\n                      key={id}\n                      className={({ active }) =>\n                        classNames(\n                          active ? \" bg-accent\" : \"\",\n                          editNode\n                            ? \"dropdown-component-false-option\"\n                            : \"dropdown-component-true-option\"\n                        )\n                      }\n                      value={option}\n                    >\n                      {({ selected, active }) => (\n                        <>\n                          <span\n                            className={classNames(\n                              selected ? \"font-semibold\" : \"font-normal\",\n                              \"block truncate \"\n                            )}\n                          >\n                            {option}\n                          </span>\n\n                          {selected ? (\n                            <span\n                              className={classNames(\n                                active ? \"text-background \" : \"\",\n                                \"dropdown-component-choosal\"\n                              )}\n                            >\n                              <Check\n                                className={\n                                  active\n                                    ? \"dropdown-component-check-icon\"\n                                    : \"dropdown-component-check-icon\"\n                                }\n                                aria-hidden=\"true\"\n                              />\n                            </span>\n                          ) : null}\n                        </>\n                      )}\n                    </Listbox.Option>\n                  ))}\n                </Listbox.Options>\n              </Transition>\n            </div>\n          </>\n        )}\n      </Listbox>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/floatComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { FloatComponentType } from \"../../types/components\";\n\nexport default function FloatComponent({\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n}: FloatComponentType) {\n  const [myValue, setMyValue] = useState(value ?? \"\");\n  const { closePopUp } = useContext(PopUpContext);\n\n  const step = 0.1;\n  const min = 0;\n  const max = 1;\n\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setMyValue(value);\n  }, [closePopUp]);\n\n  return (\n    <div className={\"w-full \" + (disabled ? \"float-component-pointer\" : \"\")}>\n      <input\n        type=\"number\"\n        step={step}\n        min={min}\n        onInput={(e: React.ChangeEvent<HTMLInputElement>) => {\n          if (e.target.value < min.toString()) {\n            e.target.value = min.toString();\n          }\n          if (e.target.value > max.toString()) {\n            e.target.value = max.toString();\n          }\n        }}\n        max={max}\n        value={myValue}\n        className={\n          editNode\n            ? \"input-edit-node\"\n            : \"input-primary\" + (disabled ? \" input-disable \" : \"\")\n        }\n        placeholder={\n          editNode ? \"number from 0 to 1\" : \"Input a number from 0 to 1\"\n        }\n        onChange={(e) => {\n          setMyValue(e.target.value);\n          onChange(e.target.value);\n        }}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/inputComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { InputComponentType } from \"../../types/components\";\nimport { classNames } from \"../../utils\";\n\nexport default function InputComponent({\n  value,\n  onChange,\n  disabled,\n  password,\n  type = 'input',\n  maxLength = 150,\n  editNode = false,\n}: InputComponentType) {\n  const [myValue, setMyValue] = useState(value ?? \"\");\n  const [pwdVisible, setPwdVisible] = useState(false);\n  const { closePopUp } = useContext(PopUpContext);\n\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setMyValue(value ?? \"\");\n  }, [closePopUp]);\n\n  return (\n    <div className={disabled ? \"input-component-div\" : \"relative\"}>\n      {type === 'textarea' ? <textarea\n        value={myValue}\n        // maxLength={maxLength}\n        className={classNames(\n          \"whitespace-normal\",\n          disabled ? \" input-disable \" : \"\",\n          password && !pwdVisible && myValue !== \"\"\n            ? \" text-clip password \"\n            : \"\",\n          editNode ? \" input-edit-node \" : \" input-primary \",\n          password && editNode ? \"pr-8\" : \"\",\n          password && !editNode ? \"pr-10\" : \"\"\n        )}\n        placeholder={password && editNode ? \"Key\" : \"input...\"}\n        onChange={(e) => {\n          setMyValue(e.target.value);\n          onChange(e.target.value);\n        }}\n      />\n        : <input value={myValue}\n          maxLength={maxLength}\n          className={\n            classNames(\n              disabled ? \" input-disable \" : \"\",\n              password && !pwdVisible && myValue !== \"\"\n                ? \" text-clip password \"\n                : \"\",\n              editNode ? \" input-edit-node \" : \" input-primary \",\n              password && editNode ? \"pr-8\" : \"\",\n              password && !editNode ? \"pr-10\" : \"\"\n            )}\n          placeholder={password && editNode ? \"Key\" : \"input...\"}\n          onChange={(e) => {\n            setMyValue(e.target.value);\n            onChange(e.target.value);\n          }}\n        />}\n      {password && (\n        <button\n          className={classNames(\n            editNode\n              ? \"input-component-true-button\"\n              : \"input-component-false-button\"\n          )}\n          onClick={() => {\n            setPwdVisible(!pwdVisible);\n          }}\n        >\n          {password &&\n            (pwdVisible ? (\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                fill=\"none\"\n                viewBox=\"0 0 24 24\"\n                strokeWidth={1.5}\n                stroke=\"currentColor\"\n                className={classNames(\n                  editNode\n                    ? \"input-component-true-svg\"\n                    : \"input-component-false-svg\"\n                )}\n              >\n                <path\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  d=\"M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88\"\n                />\n              </svg>\n            ) : (\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                fill=\"none\"\n                viewBox=\"0 0 24 24\"\n                strokeWidth={1.5}\n                stroke=\"currentColor\"\n                className={classNames(\n                  editNode\n                    ? \"input-component-true-svg\"\n                    : \"input-component-false-svg\"\n                )}\n              >\n                <path\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  d=\"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z\"\n                />\n                <path\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n                />\n              </svg>\n            ))}\n        </button>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/inputFileComponent/index.tsx",
    "content": "import { locationContext } from \"@/contexts/locationContext\";\nimport { FileSearch2 } from \"lucide-react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { TabsContext } from \"../../contexts/tabsContext\";\nimport { uploadFile } from \"../../controllers/API\";\nimport { uploadFileWithProgress } from \"../../modals/UploadModal/upload\";\nimport { FileComponentType } from \"../../types/components\";\nimport { LoadIcon } from \"../bs-icons/loading\";\nimport { Button } from \"../bs-ui/button\";\nimport { useToast } from \"../bs-ui/toast/use-toast\";\n\nexport default function InputFileComponent({\n  value,\n  onChange,\n  disabled,\n  suffixes = [],\n  fileTypes,\n  placeholder = 'The current file is empty',\n  onFileChange,\n  editNode = false,\n  isSSO = false,\n  multiple = false\n}: FileComponentType) {\n  const [myValue, setMyValue] = useState(value);\n  const [loading, setLoading] = useState(false);\n  const { setErrorData } = useContext(alertContext);\n  const { flow } = useContext(TabsContext);\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n      onFileChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  function checkFileType(fileName: string): boolean {\n    for (let index = 0; index < suffixes.length; index++) {\n      if (fileName.endsWith(suffixes[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  useEffect(() => {\n    setMyValue(value);\n  }, [value]);\n\n  const { appConfig } = useContext(locationContext)\n  const { toast } = useToast()\n  const checkFileSize = (file) => {\n    const maxSize = (appConfig.uploadFileMaxSize || 50) * 1024 * 1024;\n    if (file.size > maxSize) {\n      return `文件：${file.name} 超过 ${appConfig.uploadFileMaxSize} MB，已移除`\n    }\n    return ''\n  }\n\n  const handleButtonClick = () => {\n    if (multiple) return batchUpload()\n    // Create a file input element\n    const input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.accept = suffixes.join(\",\");\n    input.style.display = \"none\"; // Hidden from view\n    input.multiple = false; // Allow only one file selection\n\n    input.onchange = (e: Event) => {\n      setLoading(true);\n\n      // Get the selected file\n      const file = (e.target as HTMLInputElement).files?.[0];\n\n      const errorMsg = checkFileSize(file)\n      if (errorMsg) {\n        toast({\n          variant: 'error',\n          description: errorMsg\n        })\n        return setLoading(false);\n      }\n      // Check if the file type is correct\n      // if (file && checkFileType(file.name)) {\n      // Upload the file\n      isSSO ? uploadFileWithProgress(file, (progress) => { }).then(res => {\n        setLoading(false);\n        if (typeof res === 'string') return toast({\n          variant: 'error',\n          description: res\n        })\n        const { file_path } = res;\n        setMyValue(file.name);\n        onChange(file.name);\n        // sets the value that goes to the backend\n        onFileChange(file_path);\n      }) : uploadFile(file, flow.id)\n        .then((data) => {\n          console.log(\"File uploaded successfully\");\n          // Get the file name from the response\n          const { file_path } = data;\n\n          // Update the state and callback with the name of the file\n          // sets the value to the user\n          setMyValue(file.name);\n          onChange(file.name);\n          // sets the value that goes to the backend\n          onFileChange(file_path);\n          setLoading(false);\n        })\n        .catch(() => {\n          console.error(\"Error occurred while uploading file\");\n          setLoading(false);\n        });\n      // } else {\n      //   // Show an error if the file type is not allowed\n      //   setErrorData({\n      //     title:\n      //       \"请选择有效文件。只允许使用这些文件类型：\",\n      //     list: fileTypes,\n      //   });\n      //   setLoading(false);\n      // }\n    };\n\n    // Trigger the file selection dialog\n    input.click();\n  };\n\n  const batchUpload = () => {\n    // Create a file input element\n    const input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.accept = suffixes.join(\",\");\n    input.style.display = \"none\"; // Hidden from view\n    input.multiple = true; // Allow multiple file selection\n\n    input.onchange = (e: Event) => {\n      setLoading(true);\n\n      // Get the selected files\n      const _files = (e.target as HTMLInputElement).files;\n\n      if (_files && _files.length > 0) {\n        const filePaths = []; // This will hold the file paths after successful upload\n\n        const errorMsgs = []\n        const files = []\n        for (let i = 0; i < _files.length; i++) {\n          const errorMsg = checkFileSize(_files[i])\n          errorMsg ? errorMsgs.push(errorMsg) : files.push(_files[i])\n        }\n\n        if (errorMsgs.length) {\n          toast({\n            variant: 'error',\n            description: errorMsgs\n          })\n          // 文件都不符合要求 结束上传\n          if (errorMsgs.length === _files.length) {\n            return setLoading(false);\n          }\n        }\n\n        const fileNames = Array.from(files).map(file => file.name); // Extract file names\n\n        // Perform the upload for each file\n        const uploadPromises = Array.from(files).map(file => {\n          return isSSO\n            ? uploadFileWithProgress(file, (progress) => { }) // Adjust upload method if needed\n              .then(res => {\n                if (typeof res === 'string') {\n                  setErrorData({ title: \"Error\", list: [res] });\n                  toast({\n                    variant: 'error',\n                    description: res\n                  })\n                  setLoading(false);\n                  throw new Error(res); // Exit the upload if error occurs\n                }\n                return res.file_path\n              })\n            : uploadFile(file, flow.id).then((data) => {\n              console.log(\"File uploaded successfully\");\n              return data.file_path\n            });\n        });\n\n        // Wait for all file uploads to finish\n        Promise.all(uploadPromises)\n          .then((filePaths) => {\n            // After all files are uploaded successfully, update the state\n            setMyValue(fileNames.join(\",\")); // Join file names with commas\n            onChange(fileNames); // Pass an array of file names\n            onFileChange(filePaths); // Pass an array of file paths\n\n            setLoading(false); // Hide loading state\n          })\n          .catch((error) => {\n            console.error(\"Error occurred while uploading files\", error);\n            setLoading(false); // Hide loading state if an error occurs\n          });\n      } else {\n        toast({\n          variant: 'error',\n          description: '没有选择文件'\n        })\n        setLoading(false); // Hide loading state if no files were selected\n      }\n    };\n\n    // Trigger the file selection dialog\n    input.click();\n  };\n\n\n\n  return (\n    <div className={disabled ? \"input-component-div\" : \"w-full\"}>\n      <div className=\"input-file-component\">\n        <span\n          onClick={handleButtonClick}\n          className={\n            editNode\n              ? \"input-edit-node input-dialog text-muted-foreground\"\n              : disabled\n                ? \"input-disable input-dialog input-primary\"\n                : \"input-dialog input-primary text-muted-foreground\"\n          }\n        >\n          {myValue !== \"\" ? myValue : placeholder}\n        </span>\n        <Button size=\"icon\" variant=\"ghost\" onClick={handleButtonClick}>\n          {!editNode && !loading && (\n            <FileSearch2\n              strokeWidth={1.5}\n              className={\n                (disabled ? \" text-ring \" : \" hover:text-accent-foreground\")\n              }\n            />\n          )}\n          {!editNode && loading && (<LoadIcon className=\"text-primary duration-300 pointer-events-none\" />)}\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/inputListComponent/index.tsx",
    "content": "import { useContext, useEffect, useRef, useState } from \"react\";\nimport { InputListComponentType } from \"../../types/components\";\n\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { Plus, X } from \"lucide-react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\n\nexport default function InputListComponent({\n  value,\n  onChange,\n  disabled,\n  isGroup = false,\n  editNode = false\n}: InputListComponentType) {\n  const [inputList, setInputList] = useState(value ?? [\"\"]);\n  const { closePopUp } = useContext(PopUpContext);\n\n  useEffect(() => {\n    if (disabled) {\n      setInputList([\"\"]);\n      onChange([\"\"]);\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setInputList(value);\n  }, [closePopUp]);\n\n  // list超出滚动，配合template-scrollbar使用（TODO 抽象为插槽）\n  const scrollBodyRef = useRef<HTMLDivElement>(null);\n  useEffect(() => {\n    const scrollFun = (event) => {\n      // 双指缩放 event.ctrlKey为 true\n      if (!event.ctrlKey) {\n        event.stopPropagation();\n      }\n    }\n    scrollBodyRef.current.addEventListener('wheel', scrollFun);\n    return () => scrollBodyRef.current?.removeEventListener('wheel', scrollFun);\n  }, [])\n\n  return (\n    <div\n      ref={scrollBodyRef}\n      className={`${disabled ? \"pointer-events-none cursor-not-allowed\" : \"\"}\n       flex flex-col gap-3 template-scrollbar \n       ${isGroup && \"max-h-[170px]\"}`\n      }\n    >\n      {inputList.map((i, idx) => {\n        return (\n          <div key={idx} className=\"flex w-full gap-3\">\n            <input\n              type=\"text\"\n              value={i}\n              className={\n                editNode\n                  ? \"input-edit-node \"\n                  : \"input-primary \" + (disabled ? \"input-disable\" : \"\")\n              }\n              placeholder=\"input...\"\n              onChange={(e) => {\n                setInputList((old) => {\n                  let newInputList = cloneDeep(old);\n                  newInputList[idx] = e.target.value;\n                  onChange(newInputList);\n                  return newInputList;\n                });\n              }}\n            />\n            {idx === inputList.length - 1 && (\n              <button\n                onClick={() => {\n                  setInputList((old) => {\n                    let newInputList = cloneDeep(old);\n                    newInputList.push(\"\");\n                    onChange(newInputList);\n                    return newInputList;\n                  });\n                }}\n              >\n                <Plus className={\"h-4 w-4 hover:text-accent-foreground\"} />\n              </button>\n            )}\n            {\n              inputList.length !== 1 && <button\n                onClick={() => {\n                  setInputList((old) => {\n                    let newInputList = cloneDeep(old);\n                    newInputList.splice(idx, 1);\n                    onChange(newInputList);\n                    return newInputList;\n                  });\n                }}\n              >\n                <X className=\"h-4 w-4 hover:text-status-red\" />\n              </button>\n            }\n          </div>\n        );\n      })}\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/intComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { FloatComponentType } from \"../../types/components\";\n\nexport default function IntComponent({\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n}: FloatComponentType) {\n  const [myValue, setMyValue] = useState(value ?? \"\");\n  const min = 0;\n  const { closePopUp } = useContext(PopUpContext);\n\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setMyValue(value);\n  }, [closePopUp]);\n\n  return (\n    <div\n      className={\n        \"w-full \" +\n        (disabled ? \"pointer-events-none w-full cursor-not-allowed\" : \"\")\n      }\n    >\n      <input\n        onKeyDown={(event) => {\n          if (\n            event.key !== \"Backspace\" &&\n            event.key !== \"Enter\" &&\n            event.key !== \"Delete\" &&\n            event.key !== \"ArrowLeft\" &&\n            event.key !== \"ArrowRight\" &&\n            event.key !== \"Control\" &&\n            event.key !== \"Meta\" &&\n            event.key !== \"Shift\" &&\n            event.key !== \"c\" &&\n            event.key !== \"v\" &&\n            event.key !== \"a\" &&\n            !/^[-]?\\d*$/.test(event.key)\n          ) {\n            event.preventDefault();\n          }\n        }}\n        type=\"number\"\n        step=\"1\"\n        min={min}\n        onInput={(e: React.ChangeEvent<HTMLInputElement>) => {\n          if (e.target.value < min.toString()) {\n            e.target.value = min.toString();\n          }\n        }}\n        value={myValue}\n        className={\n          editNode\n            ? \" input-edit-node \"\n            : \" input-primary \" + (disabled ? \" input-disable\" : \"\")\n        }\n        placeholder={editNode ? \"integer\" : \"Enter an integer\"}\n        onChange={(e) => {\n          setMyValue(e.target.value);\n          onChange(e.target.value);\n        }}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/keypairListComponent/index.tsx",
    "content": "import { useEffect, useRef } from \"react\";\nimport { KeyPairListComponentType } from \"../../types/components\";\n\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { classNames } from \"../../util/utils\";\nimport { Input } from \"../bs-ui/input\";\nimport { Plus, X } from \"lucide-react\";\n\nexport default function KeypairListComponent({\n    value,\n    onChange,\n    disabled,\n    editNode = false,\n    duplicateKey,\n    advanced = false,\n    dataValue,\n}: KeyPairListComponentType): JSX.Element {\n    useEffect(() => {\n        if (disabled) {\n            onChange([\"\"]);\n        }\n    }, [disabled]);\n\n    const ref = useRef(value.length === 0 ? [{ \"\": \"\" }] : value);\n\n    useEffect(() => {\n        if (JSON.stringify(value) !== JSON.stringify(ref.current)) {\n            ref.current = value;\n            onChange(value);\n        }\n    }, [value]);\n\n    const handleChangeKey = (event, idx) => {\n        const oldKey = Object.keys(ref.current[idx])[0];\n        const updatedObj = { [event.target.value]: ref.current[idx][oldKey] };\n        ref.current[idx] = updatedObj;\n        onChange(ref.current);\n    };\n\n    const handleChangeValue = (newValue, idx) => {\n        const key = Object.keys(ref.current[idx])[0];\n        ref.current[idx][key] = newValue;\n        onChange(ref.current);\n    };\n\n    return (\n        <div\n            className={classNames(\n                ref.current?.length > 1 && editNode ? \"mx-2 my-1\" : \"\",\n                \"flex h-full flex-col gap-3\"\n            )}\n        >\n            {ref.current?.map((obj, index) => {\n                return Object.keys(obj).map((key, idx) => {\n                    return (\n                        <div key={idx} className=\"flex w-full gap-2\">\n                            <Input\n                                id={\"keypair\" + index}\n                                type=\"text\"\n                                value={key.trim()}\n                                className={classNames(\n                                    editNode ? \"input-edit-node\" : \"\",\n                                    duplicateKey ? \"input-invalid\" : \"\"\n                                )}\n                                placeholder=\"Type key...\"\n                                onChange={(event) => handleChangeKey(event, index)}\n                                onKeyDown={(e) => {\n                                    if (e.ctrlKey && e.key === \"Backspace\") {\n                                        e.preventDefault();\n                                        e.stopPropagation();\n                                    }\n                                }}\n                            />\n\n                            <Input\n                                id={\"keypair\" + (index + 100).toString()}\n                                type=\"text\"\n                                value={obj[key]}\n                                className={editNode ? \"input-edit-node\" : \"\"}\n                                placeholder=\"Type a value...\"\n                                onChange={(event) =>\n                                    handleChangeValue(event.target.value, index)\n                                }\n                            />\n\n                            {index === ref.current.length - 1 ? (\n                                <button\n                                    onClick={() => {\n                                        let newInputList = cloneDeep(ref.current);\n                                        newInputList.push({ \"\": \"\" });\n                                        onChange(newInputList);\n                                    }}\n                                    id={\"plusbtn\" + index.toString()}\n                                >\n                                    <Plus className={\"h-4 w-4 hover:text-accent-foreground\"}\n                                    />\n                                </button>\n                            ) : (\n                                <button\n                                    onClick={() => {\n                                        let newInputList = cloneDeep(ref.current);\n                                        newInputList.splice(index, 1);\n                                        onChange(newInputList);\n                                    }}\n                                    id={\"minusbtn\" + index.toString()}\n                                >\n                                    <X className=\"h-4 w-4 hover:text-status-red\" />\n                                </button>\n                            )}\n                        </div>\n                    );\n                });\n            })}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/components/promptComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport GenericModal from \"../../modals/genericModal\";\nimport { TextAreaComponentType } from \"../../types/components\";\nimport { TypeModal } from \"../../utils\";\n\nimport { ExternalLink } from \"lucide-react\";\n\nexport default function PromptAreaComponent({\n  field_name,\n  setNodeClass,\n  nodeClass,\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n  type = TypeModal.PROMPT\n}: TextAreaComponentType) {\n  const [myValue, setMyValue] = useState(value);\n  const { openPopUp } = useContext(PopUpContext);\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  // useEffect(() => {\n  //   if (value !== \"\" && myValue !== value && reactFlowInstance) {\n  //     // only executed once\n  //     setMyValue(value);\n  //     postValidatePrompt(field_name, value, nodeClass)\n  //       .then((apiReturn) => {\n  //         if (apiReturn.data) {\n  //           setNodeClass(apiReturn.data.frontend_node);\n  //           // need to update reactFlowInstance to re-render the nodes.\n  //           reactFlowInstance.setEdges(\n  //             _.cloneDeep(reactFlowInstance.getEdges())\n  //           );\n  //         }\n  //       })\n  //       .catch((error) => {});\n  //   }\n  // }, [reactFlowInstance, field_name, myValue, nodeClass, setNodeClass, value]);\n\n  const handleSave = (t: string) => {\n    setMyValue(t);\n    onChange(t);\n  }\n\n  return (\n    <div className={disabled ? \"pointer-events-none w-full \" : \"w-full\"}>\n      <div className=\"flex w-full items-center\">\n        <span\n          onClick={() => {\n            openPopUp(\n              <GenericModal\n                type={type}\n                value={myValue}\n                buttonText=\"check & Save\"\n                modalTitle=\"Edit Prompt\"\n                setValue={(t: string) => {\n                  setMyValue(t);\n                  onChange(t);\n                }}\n                nodeClass={nodeClass}\n                setNodeClass={setNodeClass}\n              />\n            );\n          }}\n          className={\n            editNode\n              ? \"input-edit-node input-dialog\"\n              : (disabled ? \" input-disable text-ring \" : \"\") +\n              \" input-primary text-muted-foreground whitespace-wrap\"\n          }\n        >\n          {myValue !== \"\" ? myValue : \"enter your prompt\"}\n        </span>\n        <button\n          onClick={() => {\n            openPopUp(\n              <GenericModal\n                field_name={field_name}\n                type={TypeModal.PROMPT}\n                value={myValue}\n                buttonText=\"check & Save\"\n                modalTitle=\"Edit Prompt\"\n                setValue={handleSave}\n                nodeClass={nodeClass}\n                setNodeClass={setNodeClass}\n              />\n            );\n          }}\n        >\n          {!editNode && (\n            <ExternalLink\n              strokeWidth={1.5}\n              className={\n                \"icons-parameters-comp\" +\n                (disabled ? \" text-ring\" : \" hover:text-accent-foreground\")\n              }\n            />\n          )}\n        </button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/textAreaComponent/index.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport GenericModal from \"../../modals/genericModal\";\nimport { TextAreaComponentType } from \"../../types/components\";\nimport { TypeModal } from \"../../utils\";\n\nimport { ExternalLink } from \"lucide-react\";\n\nexport default function TextAreaComponent({\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n}: TextAreaComponentType) {\n  const [myValue, setMyValue] = useState(value);\n  const { openPopUp, closePopUp } = useContext(PopUpContext);\n\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  useEffect(() => {\n    setMyValue(value);\n  }, [closePopUp]);\n\n  return (\n    <div className={disabled ? \"pointer-events-none w-full \" : \" w-full\"}>\n      <div className=\"flex w-full items-center\">\n        <input\n          value={myValue}\n          className={\n            editNode\n              ? \" input-edit-node \"\n              : \" input-primary \" + (disabled ? \" input-disable\" : \"\")\n          }\n          placeholder={\"input enter...\"}\n          onChange={(e) => {\n            setMyValue(e.target.value);\n            onChange(e.target.value);\n          }}\n        />\n\n        <button\n          onClick={() => {\n            openPopUp(\n              <GenericModal\n                type={TypeModal.TEXT}\n                buttonText=\"Finishing Editing\"\n                modalTitle=\"Edit Text\"\n                value={myValue}\n                setValue={(t: string) => {\n                  setMyValue(t);\n                  onChange(t);\n                }}\n              />\n            );\n          }}\n        >\n          {!editNode && (\n            <ExternalLink\n              strokeWidth={1.5}\n              className={\n                \"icons-parameters-comp\" +\n                (disabled ? \" text-ring\" : \" hover:text-accent-foreground\")\n              }\n            />\n          )}\n        </button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/toggleComponent/index.tsx",
    "content": "import { Switch } from \"@headlessui/react\";\nimport { useEffect } from \"react\";\nimport { ToggleComponentType } from \"../../types/components\";\nimport { classNames } from \"../../utils\";\n\nexport default function ToggleComponent({\n  enabled,\n  setEnabled,\n  disabled,\n}: ToggleComponentType) {\n  useEffect(() => {\n    if (disabled) {\n      setEnabled(false);\n    }\n  }, [disabled, setEnabled]);\n  return (\n    <div className={disabled ? \"pointer-events-none cursor-not-allowed\" : \"\"}>\n      <Switch\n        checked={enabled}\n        onChange={(x: boolean) => {\n          setEnabled(x);\n        }}\n        className={classNames(\n          enabled ? \"bg-primary\" : \"bg-input\",\n          \"toggle-component-switch \"\n        )}\n      >\n        <span className=\"sr-only\">Use setting</span>\n        <span\n          className={classNames(\n            enabled ? \"translate-x-5\" : \"translate-x-0\",\n            \"toggle-component-span\",\n            disabled ? \"bg-input \" : \"bg-background\"\n          )}\n        >\n          <span\n            className={classNames(\n              enabled\n                ? \"opacity-0 duration-100 ease-out\"\n                : \"opacity-100 duration-200 ease-in\",\n              \"toggle-component-second-span\"\n            )}\n            aria-hidden=\"true\"\n          ></span>\n          <span\n            className={classNames(\n              enabled\n                ? \"opacity-100 duration-200 ease-in\"\n                : \"opacity-0 duration-100 ease-out\",\n              \"toggle-component-second-span\"\n            )}\n            aria-hidden=\"true\"\n          ></span>\n        </span>\n      </Switch>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/toggleShadComponent/index.tsx",
    "content": "import { ToggleComponentType } from \"../../types/components\";\nimport { Switch } from \"../bs-ui/switch\";\n\nexport default function ToggleShadComponent({\n  enabled,\n  setEnabled,\n  disabled,\n  size,\n}: ToggleComponentType) {\n  let scaleX, scaleY;\n  switch (size) {\n    case \"small\":\n      scaleX = 0.6;\n      scaleY = 0.6;\n      break;\n    case \"medium\":\n      scaleX = 0.8;\n      scaleY = 0.8;\n      break;\n    case \"large\":\n      scaleX = 1;\n      scaleY = 1;\n      break;\n    default:\n      scaleX = 1;\n      scaleY = 1;\n  }\n  return (\n    <div className={disabled ? \"pointer-events-none cursor-not-allowed \" : \"\"}>\n      <Switch\n        style={{\n          transform: `scaleX(${scaleX}) scaleY(${scaleY})`,\n        }}\n        disabled={disabled}\n        className=\"\"\n        checked={enabled}\n        onCheckedChange={(x: boolean) => {\n          setEnabled(x);\n        }}\n      ></Switch>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/components/ui/accordion.tsx",
    "content": "\"use client\";\n\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b\", className)}\n    {...props}\n  />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all [&[data-state=open]>svg]:rotate-180\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown className=\"h-4 w-4 text-muted-foreground transition-transform duration-200\" />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n      className\n    )}\n    {...props}\n  >\n    <div className=\"pb-4 pt-0\">{children}</div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n\n"
  },
  {
    "path": "src/frontend/platform/src/components/ui/editLabel.tsx",
    "content": "import { PenLine } from \"lucide-react\";\nimport { useContext, useRef, useState } from \"react\";\nimport { alertContext } from \"../../contexts/alertContext\";\n\nexport default function EditLabel({ str, rule, children, onChange }) {\n    const [edit, setEdit] = useState(false)\n    const inputRef = useRef(null)\n\n    const { setErrorData } = useContext(alertContext);\n\n    const handleChange = () => {\n        const value = inputRef.current.value\n        if (rule.length) {\n            const errors = []\n            rule.forEach(r => {\n                if (r.pattern) {\n                    if (!r.pattern.test(value)) {\n                        errors.push(r.message)\n                    }\n                }\n                if (r.validator) {\n                    if (!r.validator(value)) {\n                        errors.push(r.message)\n                    }\n                }\n            })\n\n            if (errors.length) return setErrorData({\n                title: \"\",\n                list: errors,\n            });\n        }\n        setEdit(false)\n        onChange(value)\n    }\n\n    if (edit) return <div className=\"\">\n        <input\n            type=\"text\"\n            ref={inputRef}\n            defaultValue={str}\n            onKeyDown={(e) => {\n                e.key === 'Enter' && handleChange();\n                e.code === 'Space' && e.preventDefault();\n            }}\n            onBlur={handleChange}\n            className=\"flex h-6 w-full rounded-xl border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n        />\n    </div>\n\n\n    return <div className=\"flex items-center text-gray-900 dark:text-gray-300 group\">\n        {children(inputRef.current?.value || str)}\n        <button\n            className=\"hidden transition-all group-hover:block\"\n            // title={t('flow.editAlias')}\n            onClick={() => setEdit(true)}\n        >\n            <PenLine size={18} className=\"ml-2 cursor-pointer\" />\n        </button>\n    </div >\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/ui/loading.tsx",
    "content": "import { SVGProps } from \"react\";\n\n// https://github.com/feathericons/feather/issues/695#issuecomment-1503699643\nexport const Loading = (props: SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={24}\n    height={24}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    strokeWidth={2}\n    strokeLinecap=\"round\"\n    strokeLinejoin=\"round\"\n    className=\"feather feather-circle\"\n    {...props}\n  >\n    <circle cx={12} cy={12} r={10} strokeDasharray={63} strokeDashoffset={21}>\n      <animateTransform\n        attributeName=\"transform\"\n        type=\"rotate\"\n        from=\"0 12 12\"\n        to=\"360 12 12\"\n        dur=\"2s\"\n        repeatCount=\"indefinite\"\n      />\n      <animate\n        attributeName=\"stroke-dashoffset\"\n        dur=\"8s\"\n        repeatCount=\"indefinite\"\n        keyTimes=\"0; 0.5; 1\"\n        values=\"-16; -47; -16\"\n        calcMode=\"spline\"\n        keySplines=\"0.4 0 0.2 1; 0.4 0 0.2 1\"\n      />\n    </circle>\n  </svg>\n);\nexport default Loading;\n"
  },
  {
    "path": "src/frontend/platform/src/components/ui/select-custom.tsx",
    "content": "\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils\";\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\"flex w-full items-center justify-between\", className)}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild></SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n    {...props}\n  />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-3 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n};\n"
  },
  {
    "path": "src/frontend/platform/src/components/voiceFunction/audioPlayButton.tsx",
    "content": "// components/AudioPlayButton.tsx\nimport { textToSpeech } from '@/controllers/API/workbench';\nimport { Loader, Volume2 } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from '../bs-ui/toast/use-toast';\nimport { useAudioPlayerStore } from './audioPlayerStore';\n\ninterface AudioPlayButtonProps {\n  messageId: string;\n  msg?: string;\n  version?: string;\n}\n\nexport const AudioPlayComponent = ({ messageId, msg = '' }: AudioPlayButtonProps) => {\n  const [error, setError] = useState('');\n  const { t } = useTranslation('flow')\n  const [version] = useState(window.chat_version || 'v1');\n  const {\n    currentPlayingId,\n    soundInstance,\n    isLoading,\n    playAudio,\n    pauseAudio,\n    resumeAudio,\n    stopAudio,\n    setLoading,\n    setCurrentPlayingId,\n  } = useAudioPlayerStore();\n\n  const API_BASE_URL = __APP_ENV__.BASE_URL || '';\n\n  const getAudioUrl = async (text: string) => {\n    console.log('请求TTS的文本:', text);\n\n    // 1. 调用API\n    const response = await textToSpeech(text, version);\n    console.log('TTS API 原始响应:', response);\n\n    // 2. 处理响应\n    let audioPath = '';\n    if (typeof response === 'string') {\n      // 情况A: API直接返回了路径字符串\n      audioPath = response;\n    } else if (response?.data) {\n      // 情况B: API返回了JSON对象\n      if (typeof response.data === 'string') {\n        audioPath = response.data;\n      } else if (response.data?.data) {\n        audioPath = response.data.data;\n      }\n    }\n\n    if (audioPath) {\n      // 3. 将相对路径拼接成完整的URL\n      const audioUrl = `${API_BASE_URL}${audioPath}`;\n      console.log('生成的音频播放链接:', audioUrl);\n      return audioUrl;\n    } else {\n      // 如果无法解析路径，抛出异常\n      throw new Error(t('playbackUnavailable'));\n    }\n  };\n\n  const isPlaying = currentPlayingId === messageId && soundInstance?.playing();\n  const isThisLoading = currentPlayingId === messageId && isLoading;\n\n  const handlePlay = async () => {\n    try {\n      setError('');\n\n      if (currentPlayingId === messageId) {\n        if (soundInstance?.playing()) {\n          pauseAudio();\n        } else {\n          resumeAudio();\n        }\n        return;\n      }\n\n      if (currentPlayingId) {\n        stopAudio();\n      }\n\n      setLoading(true);\n      setCurrentPlayingId(messageId);\n\n      const audioUrl = await getAudioUrl(msg);\n      console.log('成功获取音频链接:', audioUrl);\n\n      playAudio({\n        id: messageId,\n        audioUrl,\n        onEnd: () => {\n          // 播放结束后的回调\n        },\n      });\n    } catch (err) {\n      console.error('播放请求异常详情:', err);\n      toast({\n        title: t('prompt'),\n        variant: 'error',\n        description: t('playbackUnavailable')\n      });\n      setLoading(false);\n      setCurrentPlayingId(null);\n    }\n  };\n\n  return (\n    <div className=\"audio-play-button-container\">\n      <button\n        onClick={handlePlay}\n        disabled={isThisLoading}\n        aria-label={isPlaying ? 'Pause' : 'Play'}\n      >\n        {isThisLoading ? (\n          <Loader size={20} strokeWidth={1.8} color=\"#9ca3af\" className={'mt-0.5 mr-1 animate-spin'} />\n        ) : (\n          <Volume2 size={20} strokeWidth={1.8} color=\"#9ca3af\" className={`cursor-pointer mt-0.5 mr-1 text-primary hover:text-primary`} />\n\n        )}\n      </button>\n      {error && <div className=\"error-message\">{error}</div>}\n    </div>\n  );\n};"
  },
  {
    "path": "src/frontend/platform/src/components/voiceFunction/audioPlayerStore.tsx",
    "content": "\n// stores/audioPlayerStore.ts\nimport { create } from 'zustand';\nimport { Howl } from 'howler';\n\ninterface AudioPlayerState {\n  currentPlayingId: string | null;\n  soundInstance: Howl | null;\n  isLoading: boolean;\n  progress: number; // 0-1\n  duration: number;\n  playAudio: (params: {\n    id: string;\n    audioUrl: string;\n    onEnd?: () => void;\n  }) => void;\n  pauseAudio: () => void;\n  resumeAudio: () => void;\n  stopAudio: () => void;\n  setLoading: (isLoading: boolean) => void;\n  setCurrentPlayingId: (id: string | null) => void;\n}\n\nexport const useAudioPlayerStore = create<AudioPlayerState>((set, get) => ({\n  currentPlayingId: null,\n  soundInstance: null,\n  isLoading: false,\n  progress: 0,\n  duration: 0,\n\n  playAudio: ({ id, audioUrl, onEnd }) => {\n    const { stopAudio, currentPlayingId } = get();\n\n    // 如果已经在播放，先停止\n    if (currentPlayingId) {\n      stopAudio();\n    }\n\n    set({ isLoading: true, currentPlayingId: id });\n\n    const sound = new Howl({\n      src: [audioUrl],\n      html5: true, // 使用 HTML5 Audio API\n      onload: () => {\n        const currentId = get().currentPlayingId;\n        // 只有当当前播放ID仍然是该音频的ID时，才播放\n        if (currentId === id) {\n          set({ isLoading: false, duration: sound.duration() });\n          sound.play();\n        } else {\n          // 否则，清理该音频的状态\n          set({ isLoading: false });\n          // 销毁声音实例\n          sound.unload();\n        }\n      },\n      onplay: () => {\n        // 更新进度\n        const updateProgress = () => {\n          if (sound.playing()) {\n            set({\n              progress: sound.seek() / sound.duration(),\n            });\n            requestAnimationFrame(updateProgress);\n          }\n        };\n        updateProgress();\n      },\n      onend: () => {\n        set({ currentPlayingId: null, soundInstance: null, progress: 0 });\n        onEnd?.();\n      },\n      onpause: () => {\n        // 暂停时逻辑\n      },\n      onstop: () => {\n        set({ progress: 0 });\n      },\n      onerror: () => {\n        set({ isLoading: false, currentPlayingId: null });\n      },\n    });\n\n    set({ soundInstance: sound });\n  },\n\n  pauseAudio: () => {\n    const { soundInstance } = get();\n    soundInstance?.pause();\n  },\n\n  resumeAudio: () => {\n    const { soundInstance } = get();\n    soundInstance?.play();\n  },\n\n  stopAudio: () => {\n    const { soundInstance } = get();\n    soundInstance?.stop();\n    set({ currentPlayingId: null, soundInstance: null, progress: 0 });\n  },\n\n  setLoading: (isLoading) => set({ isLoading }),\n  setCurrentPlayingId: (id) => set({ currentPlayingId: id }),\n}));\n\n\n/**\n * 录音loading\n * Atomic state and hook for recording audio loading state\n * */\ninterface AudioStore {\n  isLoading: boolean\n  setIsLoading: (loading: boolean) => void\n}\n\nexport const useAudioStore = create<AudioStore>((set) => ({\n  isLoading: false,\n  setIsLoading: (loading: boolean) => set({ isLoading: loading }),\n}))"
  },
  {
    "path": "src/frontend/platform/src/components/voiceFunction/speechToText.tsx",
    "content": "import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Mic, Square, Loader, LoaderCircle, Ellipsis } from 'lucide-react';\nimport i18next from \"i18next\";\nimport { captureAndAlertRequestErrorHoc } from '@/controllers/request';\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { speechToText } from '@/controllers/API/workbench';\nimport VoiceRecordingIcon from '../bs-ui/voice';\nimport { useAudioPlayerStore, useAudioStore } from './audioPlayerStore';\nimport { useTranslation } from 'react-i18next';\n\n// --- 核心音频处理逻辑 ---\nconst encodeWAV = (audioBuffer) => {\n  const sampleRate = audioBuffer.sampleRate;\n  const channels = audioBuffer.numberOfChannels;\n  let samples = audioBuffer.getChannelData(0);\n\n  // 多声道转单声道（降低杂音）\n  if (channels > 1) {\n    const monoSamples = new Float32Array(samples.length);\n    for (let i = 0; i < samples.length; i++) {\n      let sum = 0;\n      for (let c = 0; c < channels; c++) {\n        sum += audioBuffer.getChannelData(c)[i];\n      }\n      monoSamples[i] = sum / channels;\n    }\n    samples = monoSamples;\n  }\n\n  // WAV文件头编码\n  const buffer = new ArrayBuffer(44 + samples.length * 2);\n  const view = new DataView(buffer);\n  const writeString = (view, offset, string) => {\n    for (let i = 0; i < string.length; i++) {\n      view.setUint8(offset + i, string.charCodeAt(i));\n    }\n  };\n\n  // RIFF Chunk\n  writeString(view, 0, 'RIFF');\n  view.setUint32(4, 36 + samples.length * 2, true);\n  writeString(view, 8, 'WAVE');\n\n  // fmt Chunk\n  writeString(view, 12, 'fmt ');\n  view.setUint32(16, 16, true);\n  view.setUint16(20, 1, true);\n  view.setUint16(22, 1, true);\n  view.setUint32(24, sampleRate, true);\n  view.setUint32(28, sampleRate * 2, true);\n  view.setUint16(32, 2, true);\n  view.setUint16(34, 16, true);\n\n  // data Chunk\n  writeString(view, 36, 'data');\n  view.setUint32(40, samples.length * 2, true);\n\n  // 写入PCM数据\n  let offset = 44;\n  for (let i = 0; i < samples.length; i++) {\n    const s = Math.max(-1, Math.min(1, samples[i]));\n    view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\n    offset += 2;\n  }\n\n  return new Blob([view], { type: 'audio/wav' });\n};\n\nconst convertBlobToWav = async (blob) => {\n  return new Promise((resolve, reject) => {\n    const audioContext = new (window.AudioContext || window.webkitAudioContext)({\n      sampleRate: 44100\n    });\n    const fileReader = new FileReader();\n\n    fileReader.onload = async () => {\n      try {\n        const audioBuffer = await audioContext.decodeAudioData(fileReader.result);\n        const wavBlob = encodeWAV(audioBuffer);\n        resolve(wavBlob);\n        if (audioContext.state !== 'closed') await audioContext.close();\n      } catch (err) {\n        reject(new Error(\"音频解码失败: \" + err.message));\n        if (audioContext.state !== 'closed') await audioContext.close();\n      }\n    };\n\n    fileReader.onerror = () => {\n      reject(new Error(\"读取音频文件失败\"));\n    };\n\n    fileReader.readAsArrayBuffer(blob);\n  });\n};\n\n// --- 主组件---\nconst SpeechToTextComponent = ({ disabled, onChange }) => {\n  const [version] = useState(window.chat_version || 'v1');\n  const { toast } = useToast();\n  const { t } = useTranslation('knowledge')\n  const [isRecording, _setIsRecording] = useState(false);\n  const isRecordingRef = useRef(false);\n  const setIsRecording = (val) => {\n    isRecordingRef.current = val;\n    _setIsRecording(val);\n  }\n  const [isProcessing, _setIsProcessing] = useState(false);\n  const isProcessingRef = useRef(false);\n  const setIsProcessing = (val) => {\n    isProcessingRef.current = val;\n    _setIsProcessing(val);\n  }\n  const [_, setRecordDuration] = useState(0); // 录音时长（秒）\n  const mediaRecorderRef = useRef(null);\n  const audioChunksRef = useRef([]);\n  const timerRef = useRef(null); // 定时器引用\n  const maxRecordTime = 600; // 最大录音时长：10分钟 = 600秒\n  const { stopAudio, setCurrentPlayingId } = useAudioPlayerStore();\n  const { isLoading, setIsLoading } = useAudioStore()\n\n  // 格式化时长为 \"MM:SS\" 格式\n  const formatDuration = (seconds) => {\n    const mins = Math.floor(seconds / 60);\n    const secs = seconds % 60;\n    return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;\n  };\n\n  // 开始录音（添加10分钟限制逻辑）\n  const startRecording = async () => {\n    if (disabled) return\n    try {\n      setIsLoading(true);\n      audioChunksRef.current = [];\n      setIsProcessing(false);\n      setRecordDuration(0); // 重置时长\n\n      // 优化的音频请求配置（保留降噪、高采样率）\n      const stream = await navigator.mediaDevices.getUserMedia({\n        audio: {\n          sampleRate: 44100,\n          channelCount: 1,\n          echoCancellation: true,\n          noiseSuppression: true,\n          autoGainControl: true\n        }\n      });\n      stopAudio(); // 停止音频播放\n      setCurrentPlayingId(null); // 重置当前播放ID，避免状态残留\n\n      // 初始化MediaRecorder\n      const options = { mimeType: 'audio/webm; codecs=opus' };\n      mediaRecorderRef.current = new MediaRecorder(stream, options);\n\n      // 收集录音数据\n      mediaRecorderRef.current.ondataavailable = (event) => {\n        if (event.data.size > 0) {\n          audioChunksRef.current.push(event.data);\n        }\n      };\n\n      // 录音停止处理\n      mediaRecorderRef.current.onstop = async () => {\n        try {\n          setIsProcessing(true);\n          const rawBlob = new Blob(audioChunksRef.current, { type: 'audio/webm' });\n          const wavBlob = await convertBlobToWav(rawBlob);\n          await convertSpeechToText(wavBlob);\n        } catch (conversionError) {\n          console.error('音频转换失败:', conversionError);\n          toast({\n            title: i18next.t('prompt'),\n            variant: 'error',\n            description: '语音识别不可用，请联系管理员'\n          });\n        } finally {\n          setIsProcessing(false);\n          // 清理资源\n          if (mediaRecorderRef.current?.stream) {\n            mediaRecorderRef.current.stream.getTracks().forEach(track => track.stop());\n          }\n          // 清除定时器\n          if (timerRef.current) {\n            clearInterval(timerRef.current);\n            timerRef.current = null;\n          }\n          setIsLoading(false);\n        }\n      };\n\n      // 开始录音\n      mediaRecorderRef.current.start();\n      setIsRecording(true);\n\n      // 启动定时器：每秒更新时长，到达10分钟自动停止\n      timerRef.current = setInterval(() => {\n        setRecordDuration(prev => {\n          const newDuration = prev + 1;\n          // 到达最大时长，自动停止录音\n          if (newDuration >= maxRecordTime) {\n            clearInterval(timerRef.current);\n            timerRef.current = null;\n            stopRecording();\n            // 提示用户已达最大时长\n            toast({\n              title: i18next.t('prompt'),\n              variant: 'info',\n              description: '已达到最大录音时长（10分钟），录音已自动停止'\n            });\n          }\n          return newDuration;\n        });\n      }, 1000);\n\n    } catch (err) {\n\n      setIsLoading(false);\n      toast({\n        title: i18next.t('prompt'),\n        variant: 'error',\n        description: '麦克风未授权'\n      });\n    }\n  };\n\n  // 停止录音\n  const stopRecording = () => {\n    if (isProcessingRef.current) return;\n    if (mediaRecorderRef.current && isRecordingRef.current) {\n      setIsProcessing(true);\n      mediaRecorderRef.current.stop();\n      setIsRecording(false);\n      // 清除定时器\n      if (timerRef.current) {\n        clearInterval(timerRef.current);\n        timerRef.current = null;\n      }\n    }\n  };\n\n  // 组件卸载时清理资源\n  useEffect(() => {\n    return () => {\n      if (timerRef.current) {\n        clearInterval(timerRef.current);\n      }\n      if (mediaRecorderRef.current?.stream) {\n        mediaRecorderRef.current.stream.getTracks().forEach(track => track.stop());\n      }\n      setIsLoading(false);\n    };\n  }, []);\n\n  // 语音转文字API\n  const convertSpeechToText = async (audioBlob) => {\n    try {\n      const formData = new FormData();\n      formData.append('file', audioBlob, 'recording.wav');\n\n      // 直接调用API，不要使用captureAndAlertRequestErrorHoc\n      const res = await speechToText(formData, version);\n\n      // 解析返回的JSON数据\n      const responseData = res.data || res;\n      console.log('responseData', responseData);\n\n      // 从data字段中获取识别文本\n      const transcript = responseData || '';\n\n      // 调用onChange回调，传递识别到的文本\n      onChange(transcript);\n\n    } catch (err) {\n      toast({\n        title: i18next.t('prompt'),\n        variant: 'error',\n        // description: '语音识别不可用，请联系管理员'\n        description: t('unavailable')\n      });\n    } finally {\n      setIsProcessing(false);\n    }\n  };\n\n  //绝对定位、按钮布局、pulse-ring ---\n  return (\n    <div className=\"relative z-10\">\n      {/* right-12 top-5 绝对定位 */}\n      <div className=\"absolute right-12 top-5 cursor-pointer\">\n        {isProcessing && (\n          <LoaderCircle className=\"animate-spin\" />\n        )}\n        {!isProcessing && isRecording && (\n          <VoiceRecordingIcon size={18} onClick={stopRecording} />\n        )}\n        {!isProcessing && !isRecording && (\n          <Mic size={18} className={disabled && 'cursor-not-allowed opacity-40'} onClick={startRecording} />\n        )}\n      </div>\n\n      {isRecording && <div className=\"pulse-ring\"></div>}\n    </div>\n  );\n};\n\n// 类型定义\nSpeechToTextComponent.propTypes = {\n  onChange: PropTypes.func.isRequired\n};\n\nexport default SpeechToTextComponent;"
  },
  {
    "path": "src/frontend/platform/src/constants.tsx",
    "content": "// src/constants.tsx\n\nimport { MessageSquare } from \"lucide-react\";\nimport { FlowType } from \"./types/flow\";\nimport { TabsState } from \"./types/tabs\";\nimport { buildInputs, buildTweaks } from \"./utils\";\n\n/**\n * Number maximum of components to scroll on tooltips\n * @constant\n */\nexport const MAX_LENGTH_TO_SCROLL_TOOLTIP = 200;\n\n/**\n * Number maximum of components to scroll on tooltips\n * @constant\n */\nexport const MAX_WORDS_HIGHLIGHT = 79;\n\n/**\n * The base text for subtitle of Export Dialog (Toolbar)\n * @constant\n */\nexport const EXPORT_DIALOG_SUBTITLE = \"将技能导出为 JSON 文件。\";\n\n/**\n * The base text for subtitle of Flow Settings (Menubar)\n * @constant\n */\nexport const SETTINGS_DIALOG_SUBTITLE = \"编辑项目详情。\";\n\n/**\n * The base text for subtitle of Code Dialog (Toolbar)\n * @constant\n */\nexport const CODE_DIALOG_SUBTITLE =\n  \"导出您的技能，以便与此代码一起使用。\";\n\n/**\n * The base text for subtitle of Chat Form\n * @constant\n */\nexport const CHAT_FORM_DIALOG_SUBTITLE =\n  \"设置提示模板中定义的输入变量。与代理和链互动\";\n\n/**\n * The base text for subtitle of Edit Node Dialog\n * @constant\n */\nexport const EDIT_DIALOG_SUBTITLE =\n  \"调整组件的配置。定义画布视图的参数可见性。完成后请记得保存。\";\n\n/**\n * The base text for subtitle of Code Dialog\n * @constant\n */\nexport const CODE_PROMPT_DIALOG_SUBTITLE =\n  \"编辑你的 Python 代码此代码片段接受模块导入和一个函数定义。确保您的函数返回一个字符串。\";\n\n/**\n * The base text for subtitle of Prompt Dialog\n * @constant\n */\nexport const PROMPT_DIALOG_SUBTITLE =\n  \"创建提示词。提示词可以帮助指导语言模型的行为。\";\n\nexport const CHAT_CANNOT_OPEN_TITLE = \"不能打开聊天窗\";\n\nexport const CHAT_CANNOT_OPEN_DESCRIPTION = \"这不是聊天技能。\";\n\nexport const FLOW_NOT_BUILT_TITLE = \"技能没有被构建\";\n\nexport const THOUGHTS_ICON = MessageSquare;\n\nexport const FLOW_NOT_BUILT_DESCRIPTION =\n  \"请在聊天前构建技能。\";\n\n/**\n * The base text for subtitle of Text Dialog\n * @constant\n */\nexport const TEXT_DIALOG_SUBTITLE = \"编辑文本\";\n\n/**\n * Function to get the python code for the API\n * @param {string} flowId - The id of the flow\n * @returns {string} - The python code\n */\nexport const getPythonApiCode = (\n  flow: FlowType,\n  tweak?: any[],\n  tabsState?: TabsState\n): string => {\n  const flowId = flow.id;\n\n  // create a dictionary of node ids and the values is an empty dictionary\n  // flow.data.nodes.forEach((node) => {\n  //   node.data.id\n  // }\n  const tweaks = buildTweaks(flow);\n  const inputs = buildInputs(tabsState, flow.id);\n  return `import requests\nfrom typing import Optional\n\nBASE_API_URL = \"${window.location.protocol}//${window.location.host}/api/v1/process\"\nFLOW_ID = \"${flowId}\"\n# You can tweak the flow by adding a tweaks dictionary\n# e.g {\"OpenAI-XXXXX\": {\"model_name\": \"gpt-4\"}}\nTWEAKS = ${tweak && tweak.length > 0\n      ? buildTweakObject(tweak)\n      : JSON.stringify(tweaks, null, 2)\n    }\n\ndef run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None) -> dict:\n    \"\"\"\n    Run a flow with a given message and optional tweaks.\n\n    :param message: The message to send to the flow\n    :param flow_id: The ID of the flow to run\n    :param tweaks: Optional tweaks to customize the flow\n    :return: The JSON response from the flow\n    \"\"\"\n    api_url = f\"{BASE_API_URL}/{flow_id}\"\n\n    payload = {\"inputs\": inputs}\n\n    if tweaks:\n        payload[\"tweaks\"] = tweaks\n\n    response = requests.post(api_url, json=payload)\n    return response.json()\n\n# Setup any tweaks you want to apply to the flow\ninputs = ${inputs}\nprint(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS))`;\n};\n/**\n * Function to get the curl code for the API\n * @param {string} flowId - The id of the flow\n * @returns {string} - The curl code\n */\nexport const getCurlCode = (\n  flow: FlowType,\n  tweak?: any[],\n  tabsState?: TabsState\n): string => {\n  const flowId = flow.id;\n  const tweaks = buildTweaks(flow);\n  const inputs = buildInputs(tabsState, flow.id);\n\n  return `curl -X POST \\\\\n  ${window.location.protocol}//${window.location.host\n    }/api/v1/process/${flowId} \\\\\n  -H 'Content-Type: application/json' \\\\\n  -d '{\"inputs\": ${inputs}, \"tweaks\": ${tweak && tweak.length > 0\n      ? buildTweakObject(tweak)\n      : JSON.stringify(tweaks, null, 2)\n    }}'`;\n};\n/**\n * Function to get the python code for the API\n * @param {string} flowName - The name of the flow\n * @returns {string} - The python code\n */\nexport const getPythonCode = (\n  flow: FlowType,\n  tweak?: any[],\n  tabsState?: TabsState\n): string => {\n  const flowName = flow.name;\n  const tweaks = buildTweaks(flow);\n  const inputs = buildInputs(tabsState, flow.id);\n  return `from bisheng import load_flow_from_json\nTWEAKS = ${tweak && tweak.length > 0\n      ? buildTweakObject(tweak)\n      : JSON.stringify(tweaks, null, 2)\n    }\nflow = load_flow_from_json(\"${flowName}.json\", tweaks=TWEAKS)\n# Now you can use it like any chain\ninputs = ${inputs}\nflow(inputs)`;\n};\n\nfunction buildTweakObject(tweak) {\n  tweak.forEach((el) => {\n    Object.keys(el).forEach((key) => {\n      for (let kp in el[key]) {\n        try {\n          el[key][kp] = JSON.parse(el[key][kp]);\n        } catch { }\n      }\n    });\n  });\n\n  const tweakString = JSON.stringify(tweak[0], null, 2);\n  return tweakString;\n}\n\n/**\n * The base text for subtitle of Import Dialog\n * @constant\n */\nexport const IMPORT_DIALOG_SUBTITLE =\n  \"上传 JSON 文件或从可用的社区示例中进行选择。\";\n\n/**\n * The base text for subtitle of code dialog\n * @constant\n */\nexport const EXPORT_CODE_DIALOG =\n  \"生成代码，将流程集成到外部应用程序中 (打开此页面前请先build技能)。\";\n\n/**\n * The base text for subtitle of code dialog\n * @constant\n */\nexport const COLUMN_DIV_STYLE =\n  \" w-full h-full flex overflow-auto flex-col bg-muted px-16 \";\n\nexport const NAV_DISPLAY_STYLE =\n  \" w-full flex justify-between py-12 pb-2 px-6 \";\n\n/**\n * The base text for subtitle of code dialog\n * @constant\n */\nexport const DESCRIPTIONS: string[] = [\n  \"Chain the Words, Master Language!\",\n  \"Language Architect at Work!\",\n  \"Empowering Language Engineering.\",\n  \"Craft Language Connections Here.\",\n  \"Create, Connect, Converse.\",\n  \"Smart Chains, Smarter Conversations.\",\n  \"Bridging Prompts for Brilliance.\",\n  \"Language Models, Unleashed.\",\n  \"Your Hub for Text Generation.\",\n  \"Promptly Ingenious!\",\n  \"Building Linguistic Labyrinths.\",\n  \"Langflow: Create, Chain, Communicate.\",\n  \"Connect the Dots, Craft Language.\",\n  \"Interactive Language Weaving.\",\n  \"Generate, Innovate, Communicate.\",\n  \"Conversation Catalyst Engine.\",\n  \"Language Chainlink Master.\",\n  \"Design Dialogues with Langflow.\",\n  \"Nurture NLP Nodes Here.\",\n  \"Conversational Cartography Unlocked.\",\n  \"Design, Develop, Dialogize.\",\n];\nexport const BUTTON_DIV_STYLE =\n  \" flex gap-2 focus:ring-1 focus:ring-offset-1 focus:ring-ring focus:outline-none \";\n\n/**\n * The base text for subtitle of code dialog\n * @constant\n */\nexport const ADJECTIVES: string[] = [\n  \"admiring\",\n  \"adoring\",\n  \"agitated\",\n  \"amazing\",\n  \"angry\",\n  \"awesome\",\n  \"backstabbing\",\n  \"berserk\",\n  \"big\",\n  \"boring\",\n  \"clever\",\n  \"cocky\",\n  \"compassionate\",\n  \"condescending\",\n  \"cranky\",\n  \"desperate\",\n  \"determined\",\n  \"distracted\",\n  \"dreamy\",\n  \"drunk\",\n  \"ecstatic\",\n  \"elated\",\n  \"elegant\",\n  \"evil\",\n  \"fervent\",\n  \"focused\",\n  \"furious\",\n  \"gigantic\",\n  \"gloomy\",\n  \"goofy\",\n  \"grave\",\n  \"happy\",\n  \"high\",\n  \"hopeful\",\n  \"hungry\",\n  \"insane\",\n  \"jolly\",\n  \"jovial\",\n  \"kickass\",\n  \"lonely\",\n  \"loving\",\n  \"mad\",\n  \"modest\",\n  \"naughty\",\n  \"nauseous\",\n  \"nostalgic\",\n  \"pedantic\",\n  \"pensive\",\n  \"prickly\",\n  \"reverent\",\n  \"romantic\",\n  \"sad\",\n  \"serene\",\n  \"sharp\",\n  \"sick\",\n  \"silly\",\n  \"sleepy\",\n  \"small\",\n  \"stoic\",\n  \"stupefied\",\n  \"suspicious\",\n  \"tender\",\n  \"thirsty\",\n  \"tiny\",\n  \"trusting\",\n  \"bubbly\",\n  \"charming\",\n  \"cheerful\",\n  \"comical\",\n  \"dazzling\",\n  \"delighted\",\n  \"dynamic\",\n  \"effervescent\",\n  \"enthusiastic\",\n  \"exuberant\",\n  \"fluffy\",\n  \"friendly\",\n  \"funky\",\n  \"giddy\",\n  \"giggly\",\n  \"gleeful\",\n  \"goofy\",\n  \"graceful\",\n  \"grinning\",\n  \"hilarious\",\n  \"inquisitive\",\n  \"joyous\",\n  \"jubilant\",\n  \"lively\",\n  \"mirthful\",\n  \"mischievous\",\n  \"optimistic\",\n  \"peppy\",\n  \"perky\",\n  \"playful\",\n  \"quirky\",\n  \"radiant\",\n  \"sassy\",\n  \"silly\",\n  \"spirited\",\n  \"sprightly\",\n  \"twinkly\",\n  \"upbeat\",\n  \"vibrant\",\n  \"witty\",\n  \"zany\",\n  \"zealous\",\n];\n/**\n * Nouns for the name of the flow\n * @constant\n *\n */\nexport const NOUNS: string[] = [\n  \"albattani\",\n  \"allen\",\n  \"almeida\",\n  \"archimedes\",\n  \"ardinghelli\",\n  \"aryabhata\",\n  \"austin\",\n  \"babbage\",\n  \"banach\",\n  \"bardeen\",\n  \"bartik\",\n  \"bassi\",\n  \"bell\",\n  \"bhabha\",\n  \"bhaskara\",\n  \"blackwell\",\n  \"bohr\",\n  \"booth\",\n  \"borg\",\n  \"bose\",\n  \"boyd\",\n  \"brahmagupta\",\n  \"brattain\",\n  \"brown\",\n  \"carson\",\n  \"chandrasekhar\",\n  \"colden\",\n  \"cori\",\n  \"cray\",\n  \"curie\",\n  \"darwin\",\n  \"davinci\",\n  \"dijkstra\",\n  \"dubinsky\",\n  \"easley\",\n  \"einstein\",\n  \"elion\",\n  \"engelbart\",\n  \"euclid\",\n  \"euler\",\n  \"fermat\",\n  \"fermi\",\n  \"feynman\",\n  \"franklin\",\n  \"galileo\",\n  \"gates\",\n  \"goldberg\",\n  \"goldstine\",\n  \"goldwasser\",\n  \"golick\",\n  \"goodall\",\n  \"hamilton\",\n  \"hawking\",\n  \"heisenberg\",\n  \"heyrovsky\",\n  \"hodgkin\",\n  \"hoover\",\n  \"hopper\",\n  \"hugle\",\n  \"hypatia\",\n  \"jang\",\n  \"jennings\",\n  \"jepsen\",\n  \"joliot\",\n  \"jones\",\n  \"kalam\",\n  \"kare\",\n  \"keller\",\n  \"khorana\",\n  \"kilby\",\n  \"kirch\",\n  \"knuth\",\n  \"kowalevski\",\n  \"lalande\",\n  \"lamarr\",\n  \"leakey\",\n  \"leavitt\",\n  \"lichterman\",\n  \"liskov\",\n  \"lovelace\",\n  \"lumiere\",\n  \"mahavira\",\n  \"mayer\",\n  \"mccarthy\",\n  \"mcclintock\",\n  \"mclean\",\n  \"mcnulty\",\n  \"meitner\",\n  \"meninsky\",\n  \"mestorf\",\n  \"minsky\",\n  \"mirzakhani\",\n  \"morse\",\n  \"murdock\",\n  \"newton\",\n  \"nobel\",\n  \"noether\",\n  \"northcutt\",\n  \"noyce\",\n  \"panini\",\n  \"pare\",\n  \"pasteur\",\n  \"payne\",\n  \"perlman\",\n  \"pike\",\n  \"poincare\",\n  \"poitras\",\n  \"ptolemy\",\n  \"raman\",\n  \"ramanujan\",\n  \"ride\",\n  \"ritchie\",\n  \"roentgen\",\n  \"rosalind\",\n  \"saha\",\n  \"sammet\",\n  \"shaw\",\n  \"shirley\",\n  \"shockley\",\n  \"sinoussi\",\n  \"snyder\",\n  \"spence\",\n  \"stallman\",\n  \"stonebraker\",\n  \"swanson\",\n  \"swartz\",\n  \"swirles\",\n  \"tesla\",\n  \"thompson\",\n  \"torvalds\",\n  \"turing\",\n  \"varahamihira\",\n  \"visvesvaraya\",\n  \"volhard\",\n  \"wescoff\",\n  \"williams\",\n  \"wilson\",\n  \"wing\",\n  \"wozniak\",\n  \"wright\",\n  \"yalow\",\n  \"yonath\",\n  \"coulomb\",\n  \"degrasse\",\n  \"dewey\",\n  \"edison\",\n  \"eratosthenes\",\n  \"faraday\",\n  \"galton\",\n  \"gauss\",\n  \"herschel\",\n  \"hubble\",\n  \"joule\",\n  \"kaku\",\n  \"kepler\",\n  \"khayyam\",\n  \"lavoisier\",\n  \"maxwell\",\n  \"mendel\",\n  \"mendeleev\",\n  \"ohm\",\n  \"pascal\",\n  \"planck\",\n  \"riemann\",\n  \"schrodinger\",\n  \"sagan\",\n  \"tesla\",\n  \"tyson\",\n  \"volta\",\n  \"watt\",\n  \"weber\",\n  \"wien\",\n  \"zoBell\",\n  \"zuse\",\n];\n\n/**\n * Header text for user projects\n * @constant\n *\n */\nexport const USER_PROJECTS_HEADER = \"My Collection\";\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/SSEContext.tsx",
    "content": "import { createContext, useCallback, useContext, useState } from \"react\";\n\nconst initialValue = {\n  updateSSEData: ({}) => {},\n  sseData: {},\n  isBuilding: false,\n  setIsBuilding: (isBuilding: boolean) => {},\n};\n\nconst SSEContext = createContext(initialValue);\n\nexport function useSSE() {\n  return useContext(SSEContext);\n}\n\nexport function SSEProvider({ children }) {\n  const [sseData, setSSEData] = useState({});\n  const [isBuilding, setIsBuilding] = useState(false);\n\n  const updateSSEData = useCallback((newData: any) => {\n    setSSEData((prevData) => ({\n      ...prevData,\n      ...newData,\n    }));\n  }, []);\n\n  return (\n    <SSEContext.Provider\n      value={{ sseData, updateSSEData, isBuilding, setIsBuilding }}\n    >\n      {children}\n    </SSEContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/alertContext.tsx",
    "content": "import { createContext, ReactNode, useState } from \"react\";\nimport { AlertItemType } from \"../types/alerts\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport uniqueId from \"lodash-es/uniqueId\";\n\n//types for alertContextType\ntype alertContextType = {\n  errorData: { title: string; list?: Array<string> };\n  setErrorData: (newState: { title: string; list?: Array<string> }) => void;\n  errorOpen: boolean;\n  setErrorOpen: (newState: boolean) => void;\n  noticeData: { title: string; link?: string };\n  setNoticeData: (newState: { title: string; link?: string }) => void;\n  noticeOpen: boolean;\n  setNoticeOpen: (newState: boolean) => void;\n  successData: { title: string };\n  setSuccessData: (newState: { title: string }) => void;\n  successOpen: boolean;\n  setSuccessOpen: (newState: boolean) => void;\n  notificationCenter: boolean;\n  setNotificationCenter: (newState: boolean) => void;\n  notificationList: Array<AlertItemType>;\n  pushNotificationList: (Object: AlertItemType) => void;\n  clearNotificationList: () => void;\n  removeFromNotificationList: (index: string) => void;\n};\n\n//initial values to alertContextType\nconst initialValue: alertContextType = {\n  errorData: { title: \"\", list: [] },\n  setErrorData: () => { },\n  errorOpen: false,\n  setErrorOpen: () => { },\n  noticeData: { title: \"\", link: \"\" },\n  setNoticeData: () => { },\n  noticeOpen: false,\n  setNoticeOpen: () => { },\n  successData: { title: \"\" },\n  setSuccessData: () => { },\n  successOpen: false,\n  setSuccessOpen: () => { },\n  notificationCenter: false,\n  setNotificationCenter: () => { },\n  notificationList: [],\n  pushNotificationList: () => { },\n  clearNotificationList: () => { },\n  removeFromNotificationList: () => { },\n};\n\nexport const alertContext = createContext<alertContextType>(initialValue);\n\nexport function AlertProvider({ children }: { children: ReactNode }) {\n  const [errorData, setErrorDataState] = useState<{\n    title: string;\n    list?: Array<string>;\n  }>({ title: \"\", list: [] });\n  const [errorOpen, setErrorOpen] = useState(false);\n  const [noticeData, setNoticeDataState] = useState<{\n    title: string;\n    link?: string;\n  }>({ title: \"\", link: \"\" });\n  const [noticeOpen, setNoticeOpen] = useState(false);\n  const [successData, setSuccessDataState] = useState<{ title: string }>({\n    title: \"\",\n  });\n  const [successOpen, setSuccessOpen] = useState(false);\n  const [notificationCenter, setNotificationCenter] = useState(false);\n  const [notificationList, setNotificationList] = useState([]);\n  const pushNotificationList = (notification: AlertItemType) => {\n    setNotificationList((old) => {\n      let newNotificationList = cloneDeep(old);\n      newNotificationList.unshift(notification);\n      return newNotificationList;\n    });\n  };\n  /**\n   * Sets the error data state, opens the error dialog and pushes the new error notification to the notification list\n   * @param newState An object containing the new error data, including title and optional list of error messages\n   */\n  function setErrorData(newState: { title: string; list?: Array<string> }) {\n    setErrorDataState(newState);\n    setErrorOpen(true);\n    setNotificationCenter(true);\n    pushNotificationList({\n      type: \"error\",\n      title: newState.title || \" \",\n      list: newState.list,\n      id: uniqueId(),\n    });\n  }\n  /**\n   * Sets the state of the notice data and opens the notice modal, also adds a new notice to the notification center if the title is defined.\n   * @param newState An object containing the title of the notice and optionally a link.\n   */\n  function setNoticeData(newState: { title: string; link?: string }) {\n    if (newState.title && newState.title !== \"\") {\n      setNoticeDataState(newState);\n      setNoticeOpen(true);\n      // Add new notice to notification center\n      setNotificationCenter(true);\n      pushNotificationList({\n        type: \"notice\",\n        title: newState.title,\n        link: newState.link,\n        id: uniqueId(),\n      });\n    }\n  }\n  /**\n   * Update the success data state and show a success alert notification.\n   * @param newState - A state object with a \"title\" property to set in the success data state.\n   */\n  function setSuccessData(newState: { title: string }) {\n    // If the new state has a \"title\" property, add a new success notification to the list\n    if (newState.title && newState.title !== \"\") {\n      setSuccessDataState(newState); // update the success data state with the provided new state\n      setSuccessOpen(true); // open the success alert\n      setNotificationCenter(true); // show the notification center\n      pushNotificationList({\n        // add the new notification to the list\n        type: \"success\",\n        title: newState.title,\n        id: uniqueId(),\n      });\n    }\n  }\n  function clearNotificationList() {\n    setNotificationList([]);\n  }\n  function removeFromNotificationList(index: string) {\n    // set the notification list to a new array that filters out the alert with the matching id\n    setNotificationList((prevAlertsList) =>\n      prevAlertsList.filter((alert) => alert.id !== index)\n    );\n  }\n  return (\n    <alertContext.Provider\n      value={{\n        removeFromNotificationList,\n        clearNotificationList,\n        notificationList,\n        pushNotificationList,\n        setNotificationCenter,\n        notificationCenter,\n        errorData,\n        setErrorData,\n        errorOpen,\n        setErrorOpen,\n        noticeData,\n        setNoticeData,\n        noticeOpen,\n        setNoticeOpen,\n        successData,\n        setSuccessData,\n        successOpen,\n        setSuccessOpen,\n      }}\n    >\n      {children}\n    </alertContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/darkContext.tsx",
    "content": "import { createContext, useEffect, useState } from \"react\";\n\ntype darkContextType = {\n  dark: {};\n  setDark: (newState: {}) => void;\n};\n\nconst initialValue = {\n  dark: {},\n  setDark: () => { },\n};\n\nexport const darkContext = createContext<darkContextType>(initialValue);\n\nexport function DarkProvider({ children }) {\n  const [dark, setDark] = useState(\n    JSON.parse(window.localStorage.getItem(\"isDark\")) ?? false\n  );\n  useEffect(() => {\n    if (dark) {\n      document.getElementById(\"body\").classList.add(\"dark\");\n    } else {\n      document.getElementById(\"body\").classList.remove(\"dark\");\n    }\n    window.localStorage.setItem(\"isDark\", dark.toString());\n  }, [dark]);\n  return (\n    <darkContext.Provider\n      value={{\n        dark,\n        setDark,\n      }}\n    >\n      {children}\n    </darkContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/index.tsx",
    "content": "import { ReactNode } from \"react\";\nimport { ReactFlowProvider } from \"@xyflow/react\";\nimport { TooltipProvider } from \"../components/bs-ui/tooltip\";\nimport { SSEProvider } from \"./SSEContext\";\nimport { AlertProvider } from \"./alertContext\";\nimport { DarkProvider } from \"./darkContext\";\nimport { LocationProvider } from \"./locationContext\";\nimport PopUpProvider from \"./popUpContext\";\nimport { TabsProvider } from \"./tabsContext\";\nimport { TypesProvider } from \"./typesContext\";\nimport { UndoRedoProvider } from \"./undoRedoContext\";\nimport { UserProvider } from \"./userContext\";\n\nexport default function ContextWrapper({ children }: { children: ReactNode }) {\n  //element to wrap all context\n  return (\n    <>\n      <TooltipProvider>\n        <ReactFlowProvider>\n          <DarkProvider>\n            <TypesProvider>\n              <LocationProvider>\n                <AlertProvider>\n                  <SSEProvider>\n                    <TabsProvider>\n                      <UndoRedoProvider>\n                        <UserProvider>\n                          <PopUpProvider>{children}</PopUpProvider>\n                        </UserProvider>\n                      </UndoRedoProvider>\n                    </TabsProvider>\n                  </SSEProvider>\n                </AlertProvider>\n              </LocationProvider>\n            </TypesProvider>\n          </DarkProvider>\n        </ReactFlowProvider>\n      </TooltipProvider>\n    </>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/locationContext.tsx",
    "content": "import { createContext, ReactNode, useEffect, useState } from \"react\";\nimport { getAppConfig, getWorkstationConfigApi } from \"../controllers/API\";\n\n//types for location context\ntype locationContextType = {\n  current: Array<string>;\n  setCurrent: (newState: Array<string>) => void;\n  isStackedOpen: boolean;\n  setIsStackedOpen: (newState: boolean) => void;\n  showSideBar: boolean;\n  setShowSideBar: (newState: boolean) => void;\n  extraNavigation: {\n    title: string;\n    options?: Array<{\n      name: string;\n      href: string;\n      icon: any;\n      children?: Array<any>;\n    }>;\n  };\n  setExtraNavigation: (newState: {\n    title: string;\n    options?: Array<{\n      name: string;\n      href: string;\n      icon: any;\n      children?: Array<any>;\n    }>;\n  }) => void;\n  extraComponent: any;\n  setExtraComponent: (newState: any) => void;\n  appConfig: any;\n  reloadConfig: () => void\n};\n\n//initial value for location context\nconst initialValue = {\n  //actual\n  current: window.location.pathname.replace(/\\/$/g, \"\").split(\"/\"),\n  isStackedOpen:\n    window.innerWidth > 1024 && window.location.pathname.split(\"/\")[1]\n      ? true\n      : false,\n  setCurrent: () => { },\n  setIsStackedOpen: () => { },\n  showSideBar: window.location.pathname.split(\"/\")[1] ? true : false,\n  setShowSideBar: () => { },\n  extraNavigation: { title: \"\" },\n  setExtraNavigation: () => { },\n  extraComponent: <></>,\n  setExtraComponent: () => { },\n  appConfig: { libAccepts: [] },\n  reloadConfig: () => { }\n};\n\nexport const locationContext = createContext<locationContextType>(initialValue);\n\nexport function LocationProvider({ children }: { children: ReactNode }) {\n  const [current, setCurrent] = useState(initialValue.current);\n  const [isStackedOpen, setIsStackedOpen] = useState(\n    initialValue.isStackedOpen\n  );\n  const [showSideBar, setShowSideBar] = useState(initialValue.showSideBar);\n  const [extraNavigation, setExtraNavigation] = useState({ title: \"\" });\n  const [extraComponent, setExtraComponent] = useState(<></>);\n  const [appConfig, setAppConfig] = useState<any>({\n    libAccepts: [],\n    noFace: true,\n  })\n\n  const loadConfig = () => {\n    getAppConfig()\n      .then(res => {\n        // Set all config values that come from getAppConfig\n        setAppConfig((prev) => ({\n          ...prev,\n          isDev: res.env === 'dev',\n          libAccepts: res.uns_support,\n          officeUrl: res.office_url,\n          dialogTips: res.dialog_tips,\n          dialogQuickSearch: res.dialog_quick_search,\n          websocketHost: res.websocket_url,\n          isPro: !!res.pro,\n          chatPrompt: !!res.application_usage_tips,\n          noFace: !res.show_github_and_help,\n          register: !!res.enable_registration,\n          uploadFileMaxSize: res.uploaded_files_maximum_size || 200,\n          enableEtl4lm: res.enable_etl4lm\n        }));\n\n        // backend version\n        res.version && console.log(\n          \"%cversion \" + res.version,\n          \"background-color:#024de3;color:#fff;font-weight:bold;font-size: 38px;\" +\n          \"padding: 6px 12px;font-family:'american typewriter';text-shadow:1px 1px 3px black;\"\n        );\n\n        // Then get workstation config separately\n        return getWorkstationConfigApi()\n          .then(bench => {\n            // Only update the benchMenu property\n            setAppConfig(prev => ({\n              ...prev,\n              benchMenu: bench?.menuShow ?? true,\n              worksapceIcon: bench?.assistantIcon?.image ?? '',\n            }));\n          })\n          .catch(error => {\n            console.error('Failed to get workstation config:', error);\n            // Set default value for benchMenu if the request fails\n            setAppConfig(prev => ({\n              ...prev,\n              benchMenu: false\n            }));\n          });\n      })\n      .catch(error => {\n        console.error('Failed to get app config:', error);\n        // You might want to set some default values here if the main config fails\n      });\n  }\n\n  // 获取系统配置\n  useEffect(() => {\n    loadConfig()\n  }, [])\n\n  return (\n    <locationContext.Provider\n      value={{\n        isStackedOpen,\n        setIsStackedOpen,\n        current,\n        setCurrent,\n        showSideBar,\n        setShowSideBar,\n        extraNavigation,\n        setExtraNavigation,\n        extraComponent,\n        setExtraComponent,\n        appConfig,\n        reloadConfig: loadConfig,\n      }}\n    >\n      {children}\n    </locationContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/popUpContext.tsx",
    "content": "import React, { createContext, useState } from \"react\";\n\n// context to set JSX element on the DOM\nexport const PopUpContext = createContext({\n  openPopUp: (popUpElement: JSX.Element) => {},\n  closePopUp: () => {},\n  setCloseEdit: (value: string) => {},\n  closeEdit: \"\",\n});\n\ninterface PopUpProviderProps {\n  children: React.ReactNode;\n}\n\nconst PopUpProvider = ({ children }: PopUpProviderProps) => {\n  const [popUpElements, setPopUpElements] = useState<JSX.Element[]>([]);\n\n  const openPopUp = (element: JSX.Element) => {\n    setPopUpElements((prevPopUps) => [element, ...prevPopUps]);\n  };\n\n  const closePopUp = () => {\n    setPopUpElements((prevPopUps) => prevPopUps.slice(1));\n  };\n\n  const [closeEdit, setCloseEdit] = useState(\"\");\n\n  return (\n    <PopUpContext.Provider\n      value={{ openPopUp, closePopUp, closeEdit, setCloseEdit }}\n    >\n      {children}\n      {popUpElements[0]}\n    </PopUpContext.Provider>\n  );\n};\n\nexport default PopUpProvider;\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/tabsContext.tsx",
    "content": "import cloneDeep from \"lodash-es/cloneDeep\";\nimport { ReactNode, createContext, useContext, useState } from \"react\";\nimport { addEdge } from \"@xyflow/react\";\nimport { updateFlowApi } from \"../controllers/API/flow\";\nimport { APIClassType, APITemplateType } from \"../types/api\";\nimport { FlowType, FlowVersionItem, NodeType } from \"../types/flow\";\nimport { TabsContextType, TabsState } from \"../types/tabs\";\nimport { generateUUID, updateTemplate } from \"../utils\";\nimport { alertContext } from \"./alertContext\";\nimport { typesContext } from \"./typesContext\";\nimport { captureAndAlertRequestErrorHoc } from \"../controllers/request\";\n\nconst TabsContextInitialValue: TabsContextType = {\n  flow: null,\n  tabsState: {}, // keyform isPending\n  setFlow: (ac, f) => { },\n  setTabsState: (state: TabsState) => { },\n  saveFlow: async (flow: FlowType) => Promise.resolve(),\n  uploadFlow: () => { },\n  setTweak: (tweak: any) => { },\n  getTweak: [],\n  // 跨组件粘贴\n  lastCopiedSelection: null,\n  setLastCopiedSelection: (selection: any) => { },\n  downloadFlow: (flow: FlowType) => { },\n  getNodeId: (nodeType: string) => \"\",\n  paste: (\n    selection: { nodes: any; edges: any },\n    position: { x: number; y: number; paneX?: number; paneY?: number }\n  ) => { },\n  version: null,\n  setVersion: (version: FlowVersionItem | null) => \"\"\n};\n\nexport const TabsContext = createContext<TabsContextType>(\n  TabsContextInitialValue\n);\n\nexport function TabsProvider({ children }: { children: ReactNode }) {\n  const [flow, setFlow] = useState<FlowType>(null);\n  const [version, setVersion] = useState<FlowVersionItem | null>(null);\n  // flowid: formKeysData\n  const [tabsState, setTabsState] = useState<TabsState>({});\n  const [lastCopiedSelection, setLastCopiedSelection] = useState(null);\n  const [getTweak, setTweak] = useState([]);\n\n  const { setErrorData, setNoticeData } = useContext(alertContext);\n  const { templates, reactFlowInstance } = useContext(typesContext);\n\n  async function saveFlow(flow: FlowType) {\n    // save api\n    const { data, ...info } = flow\n    const newFlow = await captureAndAlertRequestErrorHoc(updateFlowApi(info))\n    if (!newFlow) return null;\n    setFlow((flow) => ({ ...newFlow, data: flow.data }))\n    setTabsState((prev) => {\n      return {\n        ...prev,\n        [newFlow.id]: {\n          ...prev[newFlow.id],\n          isPending: false,\n        },\n      };\n    });\n    return newFlow\n  }\n\n  /**\n   * Creates a file input and listens to a change event to upload a JSON flow file.\n   * If the file type is application/json, the file is read and parsed into a JSON object.\n   * The resulting JSON object is passed to the addFlow function.\n   */\n  function uploadFlow(file?: File) {\n    if (file) {\n      file.text().then((text) => {\n        // parse the text into a JSON object\n        let flow: FlowType = JSON.parse(text);\n        // 粘贴\n        paste(\n          { nodes: flow.data.nodes, edges: flow.data.edges },\n          { x: 10, y: 10 },\n          true\n        );\n        // 覆盖\n        // setFlow(flow);\n      });\n    } else {\n      // create a file input\n      const input = document.createElement(\"input\");\n      input.type = \"file\";\n      input.accept = \".json\";\n      // add a change event listener to the file input\n      input.onchange = (e: Event) => {\n        // check if the file type is application/json\n        if (\n          (e.target as HTMLInputElement).files[0].type === \"application/json\"\n        ) {\n          // get the file from the file input\n          const currentfile = (e.target as HTMLInputElement).files[0];\n          // read the file as text\n          currentfile.text().then((text) => {\n            // parse the text into a JSON object\n            let flow: FlowType = JSON.parse(text);\n            // 粘贴\n            paste(\n              { nodes: flow.data.nodes, edges: flow.data.edges },\n              { x: 10, y: 10 },\n              true\n            );\n          });\n        }\n      };\n      // trigger the file input click event to open the file dialog\n      input.click();\n    }\n  }\n\n  function getNodeId(nodeType: string) {\n    return nodeType + \"-\" + generateUUID(5);\n  }\n\n  /**\n * Downloads the current flow as a JSON file\n */\n  function downloadFlow(\n    flow: FlowType,\n    flowName: string,\n    flowDescription?: string\n  ) {\n    // create a data URI with the current flow data\n    const jsonString = `data:text/json;chatset=utf-8,${encodeURIComponent(\n      JSON.stringify({ ...flow, name: flowName, description: flowDescription })\n    )}`;\n\n    // create a link element and set its properties\n    const link = document.createElement(\"a\");\n    link.href = jsonString;\n    link.download = `${flowName || flow.name}.json`;\n\n    // simulate a click on the link element to trigger the download\n    link.click();\n    setNoticeData({\n      title: \"警告：关键数据，JSON 文件可能包含 API 密钥。\",\n    });\n  }\n\n  /**\n * Add a new flow to the list of flows.\n * @param flow Optional flow to add.\n */\n\n  function paste(\n    selectionInstance,\n    position: { x: number; y: number; paneX?: number; paneY?: number },\n    keepId: boolean = false // keep id\n  ) {\n    let minimumX = Infinity;\n    let minimumY = Infinity;\n    let idsMap = {};\n    let nodes = reactFlowInstance.getNodes();\n    let edges = reactFlowInstance.getEdges();\n    selectionInstance.nodes.forEach((n) => {\n      if (n.position.y < minimumY) {\n        minimumY = n.position.y;\n      }\n      if (n.position.x < minimumX) {\n        minimumX = n.position.x;\n      }\n    });\n\n    const insidePosition = position.paneX\n      ? { x: position.paneX + position.x, y: position.paneY + position.y }\n      : reactFlowInstance.screenToFlowPosition({ x: position.x, y: position.y });\n\n    selectionInstance.nodes.forEach((n: NodeType) => {\n      // Generate a unique node ID\n      let newId = getNodeId(n.data.type);\n      // 保留原id； 重复 id除外\n      if (keepId && !nodes.find(node => node.id === n.id)) {\n        newId = n.id;\n      }\n      idsMap[n.id] = newId;\n\n      // Create a new node object\n      const newNode: NodeType = {\n        id: newId,\n        type: \"genericNode\",\n        position: {\n          x: insidePosition.x + n.position.x - minimumX,\n          y: insidePosition.y + n.position.y - minimumY,\n        },\n        data: {\n          ...cloneDeep(n.data),\n          id: newId,\n        },\n      };\n\n      // Add the new node to the list of nodes in state\n      nodes = nodes\n        .map((e) => ({ ...e, selected: false }))\n        .concat({ ...newNode, selected: false });\n    });\n    console.log(nodes)\n    reactFlowInstance.setNodes(nodes);\n\n    selectionInstance.edges.forEach((e) => {\n      let source = idsMap[e.source];\n      let target = idsMap[e.target];\n      let sourceHandleSplitted = e.sourceHandle.split(\"|\");\n      let sourceHandle =\n        sourceHandleSplitted[0] +\n        \"|\" +\n        source +\n        \"|\" +\n        sourceHandleSplitted.slice(2).join(\"|\");\n      let targetHandleSplitted = e.targetHandle.split(\"|\");\n      let targetHandle =\n        targetHandleSplitted.slice(0, -1).join(\"|\") + \"|\" + target;\n      let id =\n        \"reactflow__edge-\" +\n        source +\n        sourceHandle +\n        \"-\" +\n        target +\n        targetHandle;\n      edges = addEdge(\n        {\n          source,\n          target,\n          sourceHandle,\n          targetHandle,\n          id,\n          style: { stroke: \"#555\" },\n          className:\n            targetHandle.split(\"|\")[0] === \"Text\"\n              ? \"stroke-gray-800 \"\n              : \"stroke-gray-900 \",\n          animated: targetHandle.split(\"|\")[0] === \"Text\",\n          selected: false,\n        },\n        edges.map((e) => ({ ...e, selected: false }))\n      );\n    });\n    reactFlowInstance.setEdges(edges);\n  }\n\n  // --\n  function updateNodeEdges(\n    flow: FlowType,\n    node: NodeType,\n    template: APIClassType\n  ) {\n    flow.data.edges.forEach((edge) => {\n      if (edge.source === node.id) {\n        edge.sourceHandle = edge.sourceHandle\n          .split(\"|\")\n          .slice(0, 2)\n          .concat(template[\"base_classes\"])\n          .join(\"|\");\n      }\n    });\n  }\n\n  function processFlowEdges(flow) {\n    if (!flow.data || !flow.data.edges) return;\n    flow.data.edges.forEach((edge) => {\n      edge.className = \"\";\n      edge.style = { stroke: \"#555\" };\n    });\n  }\n\n  function processFlowNodes(flow) {\n    if (!flow.data || !flow.data.nodes) return;\n    flow.data.nodes.forEach((node: NodeType) => {\n      const template = templates[node.data.type];\n      if (!template) {\n        // setErrorData({ title: `Unknown node type: ${node.data.type}` });\n        console.warn(`Unknown node type: ${node.data.type}`)\n        return;\n      }\n      if (Object.keys(template[\"template\"]).length > 0) {\n        node.data.node.display_name = template[\"display_name\"] || node.data.type;\n        node.data.node.base_classes = template[\"base_classes\"];\n        node.data.node.description = template[\"description\"];\n        node.data.node.documentation = template[\"documentation\"];\n        updateNodeEdges(flow, node, template);\n        node.data.node.template = updateTemplate(\n          template[\"template\"] as unknown as APITemplateType,\n          node.data.node.template as APITemplateType\n        );\n      }\n    });\n  }\n\n  // 上线版本的版本 id\n  const [onlineVid, setOnlineVid] = useState(0);\n  const updateOnlineVid = (vid: number) => {\n    setOnlineVid(flow.status === 2 ? vid : 0);\n  }\n\n  return (\n    <TabsContext.Provider\n      value={{\n        flow,\n        setFlow: (action, flow) => {\n          if (action === \"flow_init\") {\n            // 按模板矫正数据格式\n            processFlowEdges(flow);\n            processFlowNodes(flow);\n          }\n\n          setFlow(flow);\n        },\n        saveFlow,\n        getTweak,\n        setTweak,\n        lastCopiedSelection,\n        setLastCopiedSelection,\n        downloadFlow,\n        uploadFlow,\n        getNodeId,\n        tabsState,\n        setTabsState,\n        paste,\n        version,\n        setVersion,\n        isOnlineVersion: () => version.id === onlineVid,\n        updateOnlineVid\n      }}\n    >\n      {children}\n    </TabsContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/typesContext.tsx",
    "content": "import { createContext, ReactNode, useEffect, useState } from \"react\";\nimport { Node } from \"@xyflow/react\";\nimport { getAll } from \"../controllers/API\";\nimport { APIKindType } from \"../types/api\";\nimport { typesContextType } from \"../types/typesContext\";\n\n//context to share types adn functions from nodes to flow\n// 技能组件模板\n\nconst initialValue: typesContextType = {\n  reactFlowInstance: null,\n  setReactFlowInstance: () => {},\n  deleteNode: () => {},\n  types: {},\n  setTypes: () => {},\n  templates: {},\n  setTemplates: () => {},\n  data: {},\n  setData: () => {},\n};\n\nexport const typesContext = createContext<typesContextType>(initialValue);\n\nexport function TypesProvider({ children }: { children: ReactNode }) {\n  const [types, setTypes] = useState({});\n  const [reactFlowInstance, setReactFlowInstance] = useState(null);\n  const [templates, setTemplates] = useState({});\n  const [data, setData] = useState({});\n\n  useEffect(() => {\n    let delay = 1000; // Start delay of 1 second\n    let intervalId = null;\n    let retryCount = 0; // Count of retry attempts\n    const maxRetryCount = 2; // Max retry attempts\n\n    // We will keep a flag to handle the case where the component is unmounted before the API call resolves.\n    let isMounted = true;\n\n    async function getTypes(): Promise<void> {\n      try {\n        const result = await getAll();\n        // Make sure to only update the state if the component is still mounted.\n        if (isMounted) {\n          setData(result);\n          setTemplates(\n            Object.keys(result).reduce((acc, curr) => {\n              Object.keys(result[curr]).forEach((c: keyof APIKindType) => {\n                acc[c] = result[curr][c];\n              });\n              return acc;\n            }, {})\n          );\n          // Set the types by reducing over the keys of the result data and updating the accumulator.\n          setTypes(\n            // Reverse the keys so the tool world does not overlap\n            Object.keys(result)\n              .reverse()\n              .reduce((acc, curr) => {\n                Object.keys(result[curr]).forEach(\n                  (c: keyof APIKindType) => {\n                    acc[c] = curr;\n                    // Add the base classes to the accumulator as well.\n                    result[curr][c].base_classes?.forEach((b) => {\n                      acc[b] = curr;\n                    });\n                  }\n                );\n                return acc;\n              }, {})\n          );\n        }\n        // Clear the interval if successful.\n        clearInterval(intervalId);\n      } catch (error) {\n        retryCount++;\n        // On error, double the delay for the next attempt up to a maximum.\n        delay = Math.min(30000, delay * 2);\n        // Log errors but don't do anything else - the function will try again on the next interval.\n        console.error(error);\n        // Clear the old interval and start a new one with the new delay.\n        if (retryCount <= maxRetryCount) {\n          clearInterval(intervalId);\n          intervalId = setInterval(getTypes, delay);\n        } else {\n          console.error(\"Max retry attempts reached. Stopping retries.\");\n        }\n      }\n    }\n\n    // Start the initial interval.\n    getTypes()\n    // intervalId = setInterval(getTypes, delay);\n\n    return () => {\n      // This will clear the interval when the component unmounts, or when the dependencies of the useEffect hook change.\n      clearInterval(intervalId);\n      // Indicate that the component has been unmounted.\n      isMounted = false;\n    };\n  }, []);\n\n  function deleteNode(idx: string) {\n    if (!reactFlowInstance) return\n    reactFlowInstance.setNodes(\n      reactFlowInstance.getNodes().filter((n: Node) => n.id !== idx)\n    );\n    reactFlowInstance.setEdges(\n      reactFlowInstance\n        .getEdges()\n        .filter((ns) => ns.source !== idx && ns.target !== idx)\n    );\n  }\n\n  return (\n    <typesContext.Provider\n      value={{\n        types,\n        setTypes,\n        reactFlowInstance,\n        setReactFlowInstance,\n        deleteNode,\n        setTemplates,\n        templates,\n        data,\n        setData,\n      }}\n    >\n      {children}\n    </typesContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/undoRedoContext.tsx",
    "content": "import cloneDeep from \"lodash-es/cloneDeep\";\nimport {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useState,\n} from \"react\";\nimport { Edge, Node, useReactFlow } from \"@xyflow/react\";\nimport { TabsContext } from \"./tabsContext\";\n\ntype undoRedoContextType = {\n  undo: () => void;\n  redo: () => void;\n  takeSnapshot: () => void;\n};\n\ntype UseUndoRedoOptions = {\n  maxHistorySize: number;\n  enableShortcuts: boolean;\n};\n\ntype UseUndoRedo = (options?: UseUndoRedoOptions) => {\n  undo: () => void;\n  redo: () => void;\n  takeSnapshot: () => void;\n  canUndo: boolean;\n  canRedo: boolean;\n};\n\ntype HistoryItem = {\n  nodes: Node[];\n  edges: Edge[];\n};\n\nconst initialValue = {\n  undo: () => { },\n  redo: () => { },\n  takeSnapshot: () => { },\n};\n\nconst defaultOptions: UseUndoRedoOptions = {\n  maxHistorySize: 100,\n  enableShortcuts: true,\n};\n\nexport const undoRedoContext = createContext<undoRedoContextType>(initialValue);\n\nexport function UndoRedoProvider({ children }) {\n  const { flow } = useContext(TabsContext);\n\n  const [past, setPast] = useState<HistoryItem[]>([]);\n  const [future, setFuture] = useState<HistoryItem[]>([]);\n\n  useEffect(() => {\n    // whenever the flows variable changes, we need to add one array to the past and future states\n    setPast([]);\n    setFuture([]);\n  }, [flow?.id]);\n\n  // 通过getNodes, getEdges读取状态写入队列，通过setNodes, setEdges还原\n  const { setNodes, setEdges, getNodes, getEdges } = useReactFlow();\n\n  const takeSnapshot = useCallback(() => {\n    // push the current graph to the past state\n    setPast((old) => {\n      let newPast = cloneDeep(old);\n      newPast = old.slice(\n        old.length - defaultOptions.maxHistorySize + 1,\n        old.length\n      );\n      newPast.push({ nodes: getNodes(), edges: getEdges() });\n      return newPast;\n    });\n\n    // whenever we take a new snapshot, the redo operations need to be cleared to avoid state mismatches\n    setFuture([]);\n  }, [getNodes, getEdges, past, future, flow, setPast, setFuture]);\n\n  const undo = useCallback(() => {\n    // get the last state that we want to go back to\n    const pastState = past[past.length - 1];\n\n    if (pastState) {\n      // first we remove the state from the history\n      setPast((old) => {\n        let newPast = cloneDeep(old);\n        newPast = old.slice(0, old.length - 1);\n        return newPast;\n      });\n      // we store the current graph for the redo operation\n      setFuture((old) => {\n        let newFuture = cloneDeep(old);\n        newFuture = old;\n        newFuture.push({ nodes: getNodes(), edges: getEdges() });\n        return newFuture;\n      });\n      // keep same id \n      pastState.nodes.forEach(el => {\n        el.data.id = el.id\n      })\n      // now we can set the graph to the past state\n      setNodes(pastState.nodes);\n      setEdges(pastState.edges);\n    }\n  }, [\n    setNodes,\n    setEdges,\n    getNodes,\n    getEdges,\n    future,\n    past,\n    setFuture,\n    setPast\n  ]);\n\n  const redo = useCallback(() => {\n    const futureState = future[future.length - 1];\n\n    if (futureState) {\n      setFuture((old) => {\n        let newFuture = cloneDeep(old);\n        newFuture = old.slice(0, old.length - 1);\n        return newFuture;\n      });\n      setPast((old) => {\n        let newPast = cloneDeep(old);\n        newPast.push({ nodes: getNodes(), edges: getEdges() });\n        return newPast;\n      });\n      // keep same id \n      futureState.nodes.forEach(el => {\n        el.data.id = el.id\n      })\n      setNodes(futureState.nodes);\n      setEdges(futureState.edges);\n    }\n  }, [\n    future,\n    past,\n    setFuture,\n    setPast,\n    setNodes,\n    setEdges,\n    getNodes,\n    getEdges,\n    future\n  ]);\n\n  useEffect(() => {\n    // this effect is used to attach the global event handlers\n    if (!defaultOptions.enableShortcuts) {\n      return;\n    }\n\n    const keyDownHandler = (event: KeyboardEvent) => {\n      if (\n        event.key === \"z\" &&\n        (event.ctrlKey || event.metaKey) &&\n        event.shiftKey\n      ) {\n        redo();\n      } else if (event.key === \"y\" && (event.ctrlKey || event.metaKey)) {\n        event.preventDefault(); // prevent the default action\n        redo();\n      } else if (event.key === \"z\" && (event.ctrlKey || event.metaKey)) {\n        undo();\n      }\n    };\n\n    document.addEventListener(\"keydown\", keyDownHandler);\n\n    return () => {\n      document.removeEventListener(\"keydown\", keyDownHandler);\n    };\n  }, [undo, redo]);\n  return (\n    <undoRedoContext.Provider\n      value={{\n        undo,\n        redo,\n        takeSnapshot,\n      }}\n    >\n      {children}\n    </undoRedoContext.Provider>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/contexts/userContext.tsx",
    "content": "import { toast } from \"@/components/bs-ui/toast/use-toast\";\nimport { ReactNode, createContext, useLayoutEffect, useState } from \"react\";\nimport { delComponentApi, getComponents, overridComponent, saveComponent } from \"../controllers/API\";\nimport { getUserInfo, logoutApi } from \"../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc, requestInterceptor } from \"../controllers/request\";\nimport { User } from \"../types/api/user\";\n\ntype userContextType = {\n    user: any; // {} loading null login\n    setUser: (newState: User) => void;\n    savedComponents: any;\n    addSavedComponent: (newCom: any, overrid: boolean, rename?: boolean) => Promise<any>;\n    checkComponentsName: (name: string) => boolean;\n    delComponent: (name: string) => void;\n}\n\n// const userInfoLocalStr = localStorage.getItem('UUR_INFO')\nconst initialValue = {\n    user: {}, // userInfoLocalStr ? JSON.parse(atob(userInfoLocalStr)) : null,\n    setUser: () => { },\n    savedComponents: [],\n    addSavedComponent: () => null,\n    checkComponentsName: () => false,\n    delComponent: () => { }\n}\n\nexport const userContext = createContext<userContextType>(initialValue);\n\nexport function UserProvider({ children }: { children: ReactNode }) {\n    const [user, setUser] = useState<any>(initialValue.user);\n    const [savedComponents, setSavedComponents] = useState([]);\n\n    const loadComponents = async () => {\n        const res = await getComponents()\n        setSavedComponents(res)\n    }\n\n    // 重名校验\n    const checkComponentsName = (name: string) => {\n        return savedComponents.some(item => item.name === name)\n    }\n\n    const addSavedComponent = (component: any, overrid: boolean, rename: boolean = true) => {\n        // return delComponent(component.type)\n        const nodeName = component.node.display_name\n        const newNode = {\n            ...component, node: { ...component.node, official: false }\n        }\n\n        const data = {\n            name: nodeName,\n            data: newNode,\n            description: ''\n        }\n        // 覆盖\n        if (overrid) {\n            return captureAndAlertRequestErrorHoc(overridComponent(data)).then(res => {\n                setSavedComponents((comps =>\n                    comps.map(comp =>\n                        comp.name === data.name ? data : comp\n                    )\n                ))\n            })\n        } else {\n            // 重命名\n            if (rename) {\n                const regex = /\\((\\d+)\\)$/;\n                do {\n                    const match = data.name.match(regex);\n                    if (match) {\n                        // 如果找到匹配项，将数字提取出来，转换成数字类型，并加1\n                        const num = parseInt(match[1], 10) + 1;\n                        data.name = data.name.replace(regex, `(${num})`);\n                    } else {\n                        data.name += \"(1)\";\n                    }\n                } while (savedComponents.some(item => item.name === data.name))\n            }\n            return captureAndAlertRequestErrorHoc(saveComponent(data)).then(sucess => {\n                sucess && setSavedComponents([...savedComponents, data])\n            })\n        }\n    }\n\n    // del\n    const delComponent = (name) => {\n        delComponentApi(name).then(res => {\n            setSavedComponents(comps => comps.filter(item => item.name !== name))\n        })\n    }\n\n    \n    useLayoutEffect(() => {\n        // 链接ar参数存cookie（免登录接口）\n        const cookie = location.search.match(/(?<=token=)[^&]+/g)?.[0]\n        if (cookie) {\n            document.cookie = `access_token_cookie=${cookie}; path=/`;\n            localStorage.setItem('isLogin', '1')\n            location.href = location.origin + location.pathname;\n            return\n        }\n        // record workspace auth\n        const search = location.search;\n        const params = new URLSearchParams(search);\n        const error = params.get('error');\n        if (error) {\n            window.url_error = error;\n        }\n\n        // 异地登录强制退出\n        requestInterceptor.remoteLoginFuc = (msg) => {\n            logoutApi().then(_ => {\n                setUser(null)\n                localStorage.removeItem('isLogin')\n            })\n\n            toast({\n                description: msg.split(`\\n`),\n                variant: 'error'\n            })\n        }\n        // 获取用户信息\n        getUserInfo().then(res => {\n            setUser(res.user_id ? res : null)\n            const { user_id, web_menu = [] } = res;\n\n            localStorage.setItem('UUR_INFO', user_id ? String(user_id) : '');\n            if (user_id) loadComponents();\n            // 是否有访问后台权限\n            if (/^(\\/\\w+)?\\/chat/.test(location.pathname)) return // 排除免登陆\n\n            if (res.role !== 'admin' && !web_menu.includes('backend')) {\n                location.href = `${location.origin}/workspace/c/new?error=90001`;\n                return;\n            }\n\n            const BASE_URL = __APP_ENV__.BASE_URL\n            const pathName = location.pathname.replace(BASE_URL, '');\n\n            // Jump to the route based on permissions \n            if (pathName === '/admin') {\n                const MENU_ROUTE_MAP = [\n                    { key: 'board', path: '/dashboard' },\n                    { key: 'build', path: '/build/apps' },\n                    { key: 'knowledge', path: '/filelib' },\n                    { key: 'model', path: '/model/management' },\n                    { key: 'evaluation', path: '/evaluation' },\n                    { key: 'label', path: '/label' }, // 兜底选项放在最后\n                ];\n                const target = MENU_ROUTE_MAP.find(item => web_menu.includes(item.key));\n                if (target) {\n                    history.pushState(null, '', BASE_URL + target.path);\n                } else {\n                    history.pushState(null, '', BASE_URL + '/label');\n                }\n            } else {\n                // 403\n                const MENU_KEY_MAP = {\n                    '/dashboard': 'board',\n                    '/build/apps': 'build',\n                    '/filelib': 'knowledge',\n                    '/model/management': 'model',\n                    '/evaluation': 'evaluation',\n                }\n                const menuName = MENU_KEY_MAP[pathName]\n                if (menuName && res.role !== 'admin' && !web_menu.includes(menuName)) {\n                    history.pushState(null, '', BASE_URL + '/403');\n                }\n            }\n        }).catch(e => {\n            setUser(null)\n        })\n    }, [])\n\n    return (\n        <userContext.Provider\n            value={{\n                user, setUser, savedComponents, checkComponentsName, delComponent, addSavedComponent\n            }}\n        >\n            {children}\n        </userContext.Provider>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/assistant.ts",
    "content": "import { AssistantDetail } from '@/types/assistant';\nimport axios from \"../request\";\n\nexport interface AssistantItemDB {\n    create_time: string;\n    desc: string;\n    id: string;\n    logo?: string;\n    name: string;\n    update_time: string;\n    user_id: number;\n    user_name: string;\n    status: number;\n}\n// 获取助手列表\nexport const getAssistantsApi = async (page, limit, name, tag_id): Promise<AssistantItemDB[]> => {\n    return await axios.get(`/api/v1/assistant`, {\n        params: {\n            page, limit, name,\n            tag_id: tag_id === -1 ? null : tag_id\n        }\n    });\n};\n\n// 创建助手\nexport const createAssistantsApi = async (name, prompt, url) => {\n    if (url) {\n        // logo保存相对路径\n        url = url.replace('/bisheng', '')\n    }\n    return await axios.post(`/api/v1/assistant`, { name, prompt, logo: url })\n};\n\n// 获取助手详情\nexport const getAssistantDetailApi = async (id, version): Promise<AssistantDetail> => {\n    return await axios.get(`/api/${version}/assistant/info/${id}`)\n};\n\n// 获取助手系统模型\nexport const getAssistantModelsApi = async (): Promise<any> => {\n    return await axios.get(`/api/v1/assistant/models`)\n};\n\n// 上下线助手\nexport const changeAssistantStatusApi = async (id, status) => {\n    return await axios.post(`/api/v1/assistant/status`, { id, status })\n};\n\n// 保存助手\nexport const saveAssistanttApi = async (\n    data: Omit<AssistantDetail, 'flow_list' | 'tool_list' | 'knowledge_list'> & { flow_list: string[], tool_list: number[], knowledge_list: number[] }\n): Promise<any> => {\n    return await axios.put(`/api/v1/assistant`, data)\n};\n\n// 删除助手\nexport const deleteAssistantApi = async (id) => {\n    return await axios.post(`/api/v1/assistant/delete?assistant_id=${id}`)\n};\n\n\n// 获取会话选择列表\nexport const getChatOnlineApi = async (page, keyword, tag_id) => {\n    return await axios.get(`/api/v1/chat/online`, {\n        params: {\n            page, keyword,\n            limit: 40,\n            tag_id: tag_id === -1 ? null : tag_id\n        }\n    })\n}\n// export const getChatOnlineApi = async (tag_id:-1) => {\n//     const tagStr = tag_id === -1 ? '' : `tag_id=${tag_id}`\n//     return await axios.get(`/api/v1/chat/online?${tagStr}`)\n// };\n\n// 刷新mcp服务\nexport const refreshMcpApi = async (): Promise<any> => {\n    return await axios.post(`/api/v1/tool/mcp/refresh`)\n}\n\n// 获取自动优化任务taskid\nexport const getAssistantOptimizeTaskApi = async (assistant_id, prompt) => {\n    return await axios.post(`/api/v1/assistant/auto/task`, { assistant_id, prompt })\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/dashboard.ts",
    "content": "// Mock API functions for dashboard operations\n\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { ChartType, Dashboard, DashboardComponent, LayoutItem, TimeRangeMode, TimeRangeType } from \"@/pages/Dashboard/types/dataConfig\";\nimport axios from \"../request\";\n\n// Simulate API delay\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\nexport async function getDashboards(): Promise<Dashboard[]> {\n    // has administrative privileges or can view published dashboards\n    return await axios.get(`/api/v1/telemetry/dashboard`).then(res =>\n        res.data.filter(dashboard => (dashboard.write || dashboard.status === 'published')));\n}\n\nexport async function getDashboard(id: string, fromShare: boolean = false): Promise<Dashboard> {\n    const query = fromShare ? `?from_share=true` : ''\n    return await axios.get(`/api/v1/telemetry/dashboard/${id}${query}`);\n}\n\nexport async function createDashboard(title: string): Promise<Dashboard> {\n    return await axios.post(`/api/v1/telemetry/dashboard`, {\n        title,\n        description: \"\",\n        layout_config: { layouts: [] },\n        style_config: { theme: 'light' }\n    })\n}\n\nexport async function updateDashboardTitle(id: string, title: string): Promise<Dashboard> {\n    return await axios.post(`/api/v1/telemetry/dashboard/${id}/title`, {\n        title\n    })\n}\n\nexport async function setDefaultDashboard(id: string): Promise<Dashboard> {\n    return await axios.post(`/api/v1/telemetry/dashboard/${id}/default`, {\n        dashboard_id: id\n    })\n}\n\nexport async function copyDashboard({ id, title }: { id: string, title: string }): Promise<Dashboard> {\n    return await axios.post(`/api/v1/telemetry/dashboard/${id}/copy`, {\n        new_title: title\n    })\n}\n\nexport async function updateDashboard(id: string, data: Partial<Dashboard>): Promise<Dashboard> {\n    const payload = cloneDeep(data);\n    // delete time\n    delete payload.create_time;\n    delete payload.update_time;\n    payload.components.forEach(component => {\n        delete component.create_time;\n        delete component.update_time;\n    })\n    return await axios.put(`/api/v1/telemetry/dashboard/${id}`, payload)\n}\n\nexport async function deleteDashboard(id: string): Promise<void> {\n    return await axios.delete(`/api/v1/telemetry/dashboard/${id}`)\n}\n\n\nexport async function getShareLink(id: string): Promise<string> {\n    await delay(300)\n    return `${window.location.origin}/share/${id}`\n}\n\nexport async function publishDashboard(id: string, status: any): Promise<Dashboard> {\n    return await axios.post(`/api/v1/telemetry/dashboard/${id}/status`, {\n        status\n    })\n}\n\nexport async function copyComponentTo(component: DashboardComponent, targetId: string, layout: LayoutItem): Promise<any> {\n    const targetDashboard = await getDashboard(targetId)\n    console.log('targetDashboard :>> ', targetDashboard, layout);\n    const copyComponentId = generateUUID(6)\n    targetDashboard.components.push({\n        ...component,\n        id: copyComponentId\n    })\n\n    // // Calculate position at bottom left of target dashboard\n    const maxY = targetDashboard.layout_config.layouts.length > 0\n        ? Math.max(...targetDashboard.layout_config.layouts.map(l => l.y + l.h))\n        : 0\n    const newLayoutItem: LayoutItem = {\n        ...layout,\n        i: copyComponentId,\n        x: 0,\n        y: maxY\n    }\n\n    targetDashboard.layout_config.layouts.push(newLayoutItem)\n    return await updateDashboard(targetId, targetDashboard)\n}\n\n// Dataset related types and APIs\n// 时间粒度\nexport interface TimeGranularity {\n    name: string\n    aggregation: Record<string, any>\n}\n\n// 维度配置\nexport interface DimensionConfig {\n    name: string\n    type: 'integer' | 'keyword' | 'date'\n    field: string\n    time_granularity?: TimeGranularity[]\n    aggregation?: Record<string, any>\n    aggregation_name: string\n    bucket_path: string\n}\n\n// 指标配置\nexport interface MetricConfig {\n    name: string\n    filter?: Record<string, any>\n    aggregation: Record<string, any>\n    aggregation_name: string\n    bucket_path?: string\n}\n\n// Schema 配置\nexport interface SchemaConfig {\n    metrics: MetricConfig[]\n    dimensions: DimensionConfig[]\n}\n\n// 数据集\nexport interface DashboardDataset {\n    id: number\n    dataset_name: string\n    dataset_code: string\n    es_index_name: string\n    description: string\n    is_commercial_only: boolean\n    schema_config: SchemaConfig\n}\n\n// 获取数据集列表\nexport async function getDatasets(): Promise<DashboardDataset[]> {\n    return await axios.get(`/api/v1/telemetry/dashboard/dataset/list`);\n}\n\n// 查询图表数据\nimport {\n    QueryDataResponse\n} from '@/pages/Dashboard/types/chartData';\nimport { cloneDeep } from \"lodash-es\";\n\nfunction transformStackedData(resData: any) {\n    const { value, dimensions: rawDimensions } = resData;\n    const groups: string[] = [];\n    const seriesKeys: string[] = [];\n    const dataMap: Record<string, Record<string, number>> = {};\n\n    rawDimensions.forEach((dim: string[], index: number) => {\n        const seriesName = dim[dim.length - 1];\n        const groupName = dim.slice(0, -1).join('\\n');\n        const val = value[index][0];\n\n        if (!groups.includes(groupName)) groups.push(groupName);\n        if (!seriesKeys.includes(seriesName)) seriesKeys.push(seriesName);\n\n        if (!dataMap[groupName]) dataMap[groupName] = {};\n        dataMap[groupName][seriesName] = val;\n    });\n\n    const series = seriesKeys.map(name => ({\n        name,\n        data: groups.map(group => dataMap[group][name] ?? null)\n    }));\n\n    return { dimensions: groups, series };\n}\n\nfunction transformNormalData(resData: any, component: DashboardComponent) {\n    const dimensions = resData.dimensions.map((name: string[]) => name.join('\\n'));\n    const metrics = component.data_config.metrics || [];\n    const series = metrics.map((m, idx) => ({\n        name: m.displayName.length > 24 ? m.displayName.slice(0, 24) + '...' : m.displayName,\n        data: resData.value.map((val: any[]) => val[idx])\n    }));\n\n    return { dimensions, series };\n}\n\nexport async function queryChartData(params: {\n    useId: boolean,\n    component: DashboardComponent,\n    dashboardId: string\n    queryParams?: any\n}): Promise<QueryDataResponse> {\n    const { component, useId, dashboardId, queryParams } = params;\n\n    const resData = await axios.post(`/api/v1/telemetry/dashboard/component/query`, {\n        dashboard_id: dashboardId,\n        component_data: useId ? undefined : component,\n        component_id: useId ? component.id : undefined,\n        time_filters: queryParams\n            .filter(p => p.queryComponentParams || (p.queryConditions && p.queryConditions.hasDefaultValue)) // all\n            .map(({ queryComponentParams: p, queryConditions: q }) => {\n                if (p) {\n                    return {\n                        type: p.shortcutKey ? TimeRangeType.RECENT_DAYS : TimeRangeType.CUSTOM,\n                        mode: p.isDynamic ? TimeRangeMode.Dynamic : TimeRangeMode.Fixed,\n                        recentDays: p.shortcutKey ? Number(p.shortcutKey.replace('last_', '')) : undefined,\n                        startDate: p.startTime,\n                        endDate: p.endTime,\n                    }\n                } else if (q) {\n                    return q.defaultValue\n                }\n            })\n    });\n\n    if (!resData?.value?.length) return null\n\n    const isStacked = !!component.data_config.stackDimension?.fieldId;\n    const { dimensions, series } = isStacked\n        ? transformStackedData(resData)\n        : transformNormalData(resData, component);\n\n    // console.log('query params :>> ', dimensions, series);\n\n    const chartType = params.component.type\n\n    // 根据图表类型返回对应的 数据\n    switch (chartType) {\n        case ChartType.Bar:\n        case ChartType.StackedBar:\n        case ChartType.GroupedBar:\n        case ChartType.HorizontalBar:\n        case ChartType.StackedHorizontalBar:\n        case ChartType.GroupedHorizontalBar:\n        case ChartType.Line:\n        case ChartType.Area:\n        case ChartType.StackedLine:\n        case ChartType.StackedArea:\n            return {\n                dimensions,// xAxis.data\n                series // legend && series(chart line) \n            }\n        case ChartType.Pie:\n        case ChartType.Donut:\n            return {\n                dimensions: [],\n                series: [\n                    {\n                        name: '',\n                        data: dimensions.map((name, index) => ({\n                            name: name,\n                            value: resData.value[index][0]\n                        }))\n                    }\n                ]\n            }\n        case ChartType.Metric:\n            return {\n                value: resData.value[0]?.[0] ?? 0,\n                title: series[0]?.name || '',\n                unit: '',\n                trend: { value: 0, direction: 'up', label: '' },\n                format: { decimalPlaces: 2, thousandSeparator: true }\n            };\n    }\n}\n\n// 获取字段枚举列表\nexport async function getFieldEnums({ dataset_code, field, page, pageSize = 20, keyword = \"\" }: {\n    dataset_code: string\n    field: string\n    page: number\n    pageSize?: number\n    keyword?: string\n}): Promise<any> {\n    return await axios.get(`/api/v1/telemetry/dashboard/dataset/field/enums`, {\n        params: {\n            index_name: dataset_code,\n            field,\n            page,\n            size: pageSize,\n            keyword\n        }\n    });\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/evaluate.ts",
    "content": "import { ReactFlowJsonObject } from \"@xyflow/react\";\nimport { FlowStyleType, FlowType, FlowVersionItem } from \"../../types/flow\";\nimport axios from \"../request\";\n\n\nexport type Evaluation = {\n    file_path: string,\n    file_name: string,\n    unique_id: string,\n    prompt: string,\n    result_score: {\n        answer_f1: string,\n        answer_precision: string,\n        answer_recall: string,\n    },\n    create_time: string,\n    id: number,\n    user_id: number,\n    exec_type: string,\n    version: number,\n    status: number,\n    progress?: string,\n    result_file_path: string,\n    is_delete: number,\n    update_time: string,\n    unique_name: string,\n    version_name: string,\n    user_name: string,\n}\n\n/**\n * 获取评测列表\n * @param data \n * @returns \n */\nexport const getEvaluationApi = async (page, limit): Promise<Evaluation[]> => {\n    return await axios.get(`/api/v1/evaluation`, {\n        params: {\n            page, limit\n        }\n    });\n};\n\n/**\n * 创建测评任务\n */\nexport const createEvaluationApi = async (data): Promise<any> => {\n    return await axios.post(`/api/v1/evaluation`, data,{\n        headers: {\n            'Content-Type':'multipart/form-data'\n        }\n    });\n};\n\n/**\n * 删除测评任务\n */\nexport const deleteEvaluationApi = async (id): Promise<any> => {\n    return await axios.delete(`/api/v1/evaluation/${id}`);\n};\n\n/**\n * 获取下载链接\n */\nexport const getEvaluationUrlApi = async (id): Promise<{ url: string }> => {\n    return await axios.get(`/api/v1/evaluation/result/file/download?file_url=${id}`);\n};\n"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/finetune.ts",
    "content": "import { FileDB, FileItem, TaskDB } from \"../../types/api/finetune\";\nimport axios from \"../request\";\n\ninterface Tasks_query {\n    /**\n     * 每页条数\n     */\n    limit?: number;\n    model_name: string;\n    /**\n     * 页码\n     */\n    page?: number;\n    /**\n     * 关联的RT服务ID\n     */\n    server?: string;\n    /**\n     * 训练任务的状态，1: 训练中 2: 训练失败 3: 任务中止 4: 训练成功 5: 发布完成\n     */\n    status?: string;\n}\n// 任务列表\nexport const getTasksApi = async (params: Tasks_query): Promise<TaskDB[]> => {\n    const server = params.server === 'all' ? undefined : params.server;\n    const status = params.status === 'all'\n        ? undefined :\n        params.status === '2'\n            ? '2,3' :\n            params.status === '4'\n                ? '4,5' : params.status;\n    return await axios.get(`/api/v1/finetune/job`, { params: { ...params, server, status } });\n};\n\n// 创建任务\nexport const createTaskApi = async (data: any): Promise<TaskDB> => {\n    const filterData = (arr) => {\n        return arr?.reduce((res, el) => {\n            const item = {\n                id: el.id,\n                num: el.sampleSize,\n                url: el.dataSource,\n                name: el.name\n            }\n            return el.checked ? [...res, item] : res\n        }, []) || []\n    }\n    const train_data = filterData(data.train_data)\n    const preset_data = filterData(data.preset_data)\n    return await axios.post(`/api/v1/finetune/job`, { ...data, train_data, preset_data });\n};\n\n// 删除任务\nexport const deleteTaskApi = async (taskId: string) => {\n    return await axios.delete(`/api/v1/finetune/job?job_id=${taskId}`);\n};\n\n// 取消任务训练\nexport const cancelTaskApi = async (taskId: string): Promise<TaskDB> => {\n    return await axios.post(`/api/v1/finetune/job/cancel?job_id=${taskId}`);\n};\n\n// 取消发布任务\nexport const unPublishTaskApi = async (taskId: string): Promise<TaskDB> => {\n    return await axios.post(`/api/v1/finetune/job/publish/cancel?job_id=${taskId}`);\n};\n\n// 发布任务\nexport const publishTaskApi = async (taskId: string): Promise<TaskDB> => {\n    return await axios.post(`/api/v1/finetune/job/publish?job_id=${taskId}`);\n};\n\n// 获取任务详情\nexport const getTaskInfoApi = async (taskId: string): Promise<{ finetune: TaskDB, log: any, report: any, loss_data: any }> => {\n    return await axios.get(`/api/v1/finetune/job/info?job_id=${taskId}`);\n};\n\n// 修改任务名\nexport const updataTaskNameApi = async (taskId: string, name: string) => {\n    return await axios.patch(`/api/v1/finetune/job/model`, {\n        id: taskId,\n        model_name: name\n    });\n};\n\n// 上传文件\nexport const uploadTaskFileApi = async (data, config): Promise<FileItem> => {\n    return await axios.post(`/api/v1/finetune/job/file`, data, config).then((res: any) => {\n        if (!res.length) return null\n        const { id, url, name } = res[0]\n        return {\n            id,\n            name,\n            checked: true,\n            sampleSize: 1000,\n            dataSource: url\n        }\n    });\n};\n\n// 获取预设文件列表\nexport const getPresetFileApi = async (data: { page_size: number, page_num: number, keyword: string }): Promise<FileItem[]> => {\n    return await (axios.get(`/api/v1/finetune/job/file/preset`, { params: data }) as Promise<FileDB[]>).then((data) => {\n        const list = data.list.map(item => {\n            return {\n                ...item,\n                id: item.id,\n                checked: false,\n                sampleSize: 1000,\n                name: item.name,\n                dataSource: item.url\n            }\n        })\n        return { data: list, total: data.total }\n    });\n};\n\n// 获取下载链接\nexport const getFileUrlApi = async (urlkey): Promise<{ url: string }> => {\n    return await axios.get(`/api/v1/finetune/job/file/download?file_url=${urlkey}`);\n};\n\n// 获模型列表\nexport const getModelListApi = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm`);\n}\n\n// 添加模型\nexport const addLLmServer = async (data: any) => {\n    // 删除前端生成的id (id: string )\n    data.models = data.models.map((item) => {\n        const { id, ...other } = item\n        return typeof id === 'string' ? {\n            ...other\n        } : item\n    })\n    return await axios.post(`/api/v1/llm`, data)\n};\n\n// 修改模型\nexport const updateLLmServer = async (data: any) => {\n    // 删除前端生成的id (id: string )\n    data.models = data.models.map((item) => {\n        const { id, ...other } = item\n        return typeof id === 'string' ? {\n            ...other\n        } : item\n    })\n    return await axios.put(`/api/v1/llm`, data)\n}\n\n// 删除模型\nexport const deleteLLmServer = async (server_id: string) => {\n    return await axios.delete(`/api/v1/llm`, { data: { server_id } })\n}\n\n// 模型上下线\nexport const changeLLmServerStatus = async (model_id: string, online: number) => {\n    return await axios.post(`/api/v1/llm/online`, { model_id, online })\n}\n\n// 获取模型详情\nexport const getLLmServerDetail = async (server_id: string): Promise<any> => {\n    return await axios.get(`/api/v1/llm/info?server_id=${server_id}`)\n}\n\n// 获取知识库模型配置\nexport const getKnowledgeModelConfig = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm/knowledge`)\n}\n\n// 更新知识库模型配置\nexport const updateKnowledgeModelConfig = async (data: any): Promise<any> => {\n    return await axios.post(`/api/v1/llm/knowledge`, data)\n}\n// 获取灵思模型配置\nexport const getLinsightModelConfig = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm/workbench`)\n}\n// 更新灵思模型配置\nexport const updateLinsightModelConfig = async (data: any): Promise<any> => {\n    return await axios.post(`/api/v1/llm/workbench`, data)\n}\n// 获取助手模型配置\nexport const getAssistantModelConfig = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm/assistant`)\n}\n\n// 更新助手模型配置\nexport const updateAssistantModelConfig = async (data: any): Promise<any> => {\n    return await axios.post(`/api/v1/llm/assistant`, data)\n}\n\n// 获取评测模型配置\nexport const getEvaluationModelConfig = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm/evaluation`)\n}\n\n// 更新评测模型配置\nexport const updateEvaluationModelConfig = async (data: any): Promise<any> => {\n    return await axios.post(`/api/v1/llm/evaluation`, data)\n}\n\n/**\n * llm 助手节点默认模型\n */\nexport async function setLlmDefaultModel(data: { model_id: string }): Promise<any> {\n    return await axios.post(`/api/v1/llm/workflow`, data)\n}\n\n/**\n * llm 助手节点默认模型\n */\nexport async function getLlmDefaultModel(): Promise<any> {\n    return await axios.get(`/api/v1/llm/workflow`)\n}\n\n// 获取助手模型可选列表\nexport const getAssistantModelList = async (): Promise<any> => {\n    return await axios.get(`/api/v1/llm/assistant/llm_list`)\n}\n\n// 创建数据集\nexport const createDatasetApi = async (data: { name: string, files: string, qa_list: string[] }): Promise<any> => {\n    return await axios.post(`/api/v1/finetune/job/file/preset `, data);\n}\n\n// 删除数据集\nexport const deleteDatasetApi = async (id) => {\n    return await axios.delete(`/api/v1/finetune/job/file/preset?file_id=${id}`);\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/flow.ts",
    "content": "import { ReactFlowJsonObject } from \"@xyflow/react\";\nimport { FlowStyleType, FlowType, FlowVersionItem } from \"../../types/flow\";\nimport axios from \"../request\";\n\n/**\n * 保存组件 variables 变量\n */\nexport function saveVariableApi(data): Promise<{ id: string }> {\n    return axios.post(`/api/v1/variable/`, data);\n}\n\nexport const enum VariableType {\n    /** 文本 */\n    Text = \"text\",\n    /** 下拉框 */\n    Select = \"select\",\n    /** 文件 */\n    File = \"file\"\n}\nexport interface Variable {\n    id: string | number;\n    update: boolean;\n    name: string;\n    maxLength: number;\n    type: VariableType;\n    nodeId: string;\n    required: boolean;\n    options: {\n        key: string;\n        value: string;\n    }[];\n    value?: string;\n}\n/**\n * get组件 variables 变量\n * params flow_id, node_id\n */\nexport function getVariablesApi(params) {\n    return (axios.get(`/api/v1/variable/list`, { params }) as Promise<any[]>).then(res => {\n        return res.map((item) => {\n            const types = ['', VariableType.Text, VariableType.Select, VariableType.File]\n            return {\n                id: item.id,\n                update: true,\n                name: item.variable_name,\n                type: types[item.value_type],\n                nodeId: item.node_id,\n                required: item.is_option === 1,\n                maxLength: item.value_type === 1 ? item.value : '',\n                options: item.value_type === 2 ? item.value\n                    .split(',')\n                    .map((op, i) => ({ key: i, value: op })) : [],\n                value: ''\n            }\n        }) as Variable[]\n    });\n}\n\n/**\n * 删除 变量\n */\nexport function delVariableApi(id) {\n    return axios.delete(`/api/v1/variable/del`, {\n        params: { id }\n    });\n}\n\n/**\n * 保存变量和filenodename必填和排序信息\n */\nexport function saveReportFormApi(vid, flowId, data: Variable[]) {\n    const _data = data.map((item) => {\n        const { id, maxLength, name: variable_name, nodeId: node_id, options, required, type } = item\n        const types = {\n            [VariableType.Text]: () => ({ type: 1, value: maxLength }),\n            [VariableType.Select]: () => ({ type: 2, value: options.map((op) => op.value).join(',') }),\n            [VariableType.File]: () => ({ type: 3, value: \"0\" }),\n        }\n        const typeInfo = types[type]()\n        return {\n            id,\n            version_id: vid,\n            flow_id: flowId,\n            node_id,\n            is_option: Number(required),\n            variable_name,\n            value_type: typeInfo.type,\n            value: typeInfo.value\n        }\n    })\n    return axios.post(`/api/v1/variable/save_all`, _data);\n}\n\n/**\n * 初始化 file key 与 flowId的关系\n */\n// export function initFileKeyApi(flow_id, key) {\n//     return axios.post(`/api/v1/report/save_template`, { key, flow_id });\n// }\n\n/**\n * 获取 report表单信息\n */\nexport function getReportFormApi(flow_id): Promise<any> {\n    return axios.get(`/api/v1/report/report_temp`, {\n        params: { flow_id }\n    })\n}\n\n/**\n * Fetches a flow from the database by ID.\n *\n * @param {number} flowId - The ID of the flow to fetch.\n * @returns {Promise<any>} The flow data.\n * @throws Will throw an error if fetching fails.\n */\nexport async function getFlowApi(flowId: string, version: string = 'v1'): Promise<FlowType> {\n    return await axios.get(`/api/${version}/flows/${flowId}`)\n}\n\n/**\n * 删除的技能 工作流详情\n */\nexport async function getDeleteFlowApi(chatId: string): Promise<FlowType> {\n    return await axios.get(`/api/v1/chat/info?chat_id=${chatId}`)\n}\n\n/**\n * Saves a new flow to the database.\n *\n * @param {FlowType} newFlow - The flow data to save.\n * @returns {Promise<any>} The saved flow data.\n * @throws Will throw an error if saving fails.\n */\nexport async function saveFlowToDatabase(newFlow: {\n    name: string;\n    id: string;\n    data: ReactFlowJsonObject;\n    description: string;\n    style?: FlowStyleType;\n}): Promise<FlowType> {\n    const id = newFlow.id ? { flow_id: newFlow.id } : {}\n    const response: FlowType = await axios.post(\"/api/v1/flows/\", {\n        ...id,\n        name: newFlow.name,\n        data: newFlow.data,\n        description: newFlow.description,\n    });\n    return response\n}\n\n/**\n* Reads all flows from the database.\n*\n* @returns {Promise<any>} The flows data.\n* @throws Will throw an error if reading fails.\n*/\nexport async function readFlowsFromDatabase(page: number = 1, pageSize: number = 20, search: string, tag_id = -1) {\n    const tagIdStr = tag_id === -1 ? '' : `&tag_id=${tag_id}`\n    const { data, total }: { data: any[], total: number } = await axios.get(`/api/v1/flows/?page_num=${page}&page_size=${pageSize}&name=${search}${tagIdStr}`);\n    return { data, total };\n}\n\n/* app list */\nexport async function getAppsApi({ page = 1, pageSize = 20, keyword, tag_id = -1, type, managed }) {\n    const tagIdStr = tag_id === -1 ? '' : `&tag_id=${tag_id}`\n    const map = { assistant: 5, skill: 1, flow: 10 }\n    const flowType = map[type] ? `&flow_type=${map[type]}` : ''\n    const managedStr = (managed !== undefined && managed !== null && managed !== '')\n        ? `&managed=${managed}`\n        : '';\n    const { data, total }: { data: any[], total: number } = await axios.get(`/api/v1/workflow/list?page_num=${page}&page_size=${pageSize}&name=${keyword}${tagIdStr}${flowType}${managedStr}`);\n    const newData = data.map(item => {\n        if (item.flow_type !== 5) return item\n        return {\n            ...item,\n            version_list: item.version_list || [],\n        }\n    })\n    return { data: newData, total };\n}\n\n/**\n * Deletes a flow from the database.\n *\n * @param {string} flowId - The ID of the flow to delete.\n * @returns {Promise<any>} The deleted flow data.\n * @throws Will throw an error if deletion fails.\n */\nexport async function deleteFlowFromDatabase(flowId: string) {\n    return await axios.delete(`/api/v1/flows/${flowId}`);\n}\n\n/**\n * 创建自定义技能\n * @param 技能名称 技能描述\n * @param 创建人\n */\nexport const createCustomFlowApi = async (params: {\n    logo: string,\n    name: string,\n    description: string,\n    guide_word: string\n}, userName: string) => {\n    if (params.logo) {\n        // logo保存相对路径\n        params.logo = params.logo.replace(/^\\/\\w+/, '')\n    }\n    const response: FlowType = await axios.post(\"/api/v1/flows/\", {\n        ...params,\n        data: null\n    });\n\n    return {\n        ...response,\n        write: true,\n        status: 1,\n        user_name: userName\n    }\n};\n\n/**\n * 修改技能数据.\n *\n * @param {FlowType} updatedFlow - The updated flow data.\n * @returns {Promise<any>} The updated flow data.\n * @throws Will throw an error if the update fails.\n */\nexport async function updateFlowApi(\n    updatedFlow: FlowType\n): Promise<FlowType> {\n    if (updatedFlow.logo) {\n        // logo保存相对路径\n        updatedFlow.logo = updatedFlow.logo.replace(/^\\/\\w+/, '')\n    }\n    return await axios.patch(`/api/v1/flows/${updatedFlow.id}`, {\n        logo: updatedFlow.logo || '',\n        name: updatedFlow.name,\n        data: updatedFlow.data,\n        description: updatedFlow.description,\n        guide_word: updatedFlow.guide_word\n    });\n}\n\n/**\n * 上下线\n *\n */\nexport async function updataOnlineState(id, updatedFlow, open) {\n    return await axios.patch(`/api/v1/flows/${id}`, {\n        name: updatedFlow.name,\n        description: updatedFlow.description,\n        status: open ? 2 : 1\n    });\n}\n\n/**\n * 获取在线技能列表.\n *\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function readOnlineFlows(page: number = 1, searchKey: string = \"\") {\n    const data: { data: any, total: number } = await axios.get(`/api/v1/flows/?page_num=${page}&page_size=${100}&status=2&name=${searchKey}`);\n    return data;\n}\n\n\n// 解析 custom 组件节点\nexport async function reloadCustom(code): Promise<any> {\n    const response = await axios.post(\"/api/v1/component/custom_component\", {\n        code,\n        \"field\": \"\",\n        \"frontend_node\": {}\n    });\n    return response\n}\n\n\n/**\n * 获取技能对应的版本列表.\n *\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function getFlowVersions(flow_id): Promise<{ data: FlowVersionItem[], total: number }> {\n    return await axios.get(`/api/v1/flows/versions`, {\n        params: { flow_id }\n    });\n}\n\n/**\n * 创建新的技能版本.\n *\n * @param {object} versionData - 新版本的数据.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function createFlowVersion(flow_id, versionData: { name: string, description: string, original_version_id: number, data: any }) {\n    return await axios.post(`/api/v1/flows/versions?flow_id=${flow_id}`, versionData);\n}\n\n/**\n * 获取单个版本的信息.\n *\n * @param {string} versionId - 版本的ID.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function getVersionDetails(versionId: string) {\n    return await axios.get(`/api/v1/flows/versions/${versionId}`);\n}\n\n/**\n * 更新版本信息.\n *\n * @param {string} versionId - 要更新的版本ID.\n * @param {object} versionData - 更新的版本数据.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function updateVersion(versionId: string, versionData: { name: string, description: string, data: any }) {\n    return await axios.put(`/api/v1/flows/versions/${versionId}`, versionData);\n}\n\n/**\n * 删除版本.\n *\n * @param {string} versionId - 要删除的版本ID.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function deleteVersion(versionId: string) {\n    return await axios.delete(`/api/v1/flows/versions/${versionId}`);\n}\n\n/**\n * 切换版本.\n *\n * @param {object} versionData - 包含要更改到的版本ID的数据.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function changeCurrentVersion({ flow_id, version_id }: { flow_id: string, version_id: number }) {\n    return await axios.post(`/api/v1/flows/change_version?flow_id=${flow_id}&version_id=${version_id}`);\n}\n\n/**\n * 运行测试用例.\n */\nexport async function runTestCase(data: { question_list, version_list, node_id, inputs }): Promise<any[]> {\n    return await axios.post(`/api/v1/flows/compare`, data);\n}\n\n/**\n * 聊天窗上传文件\n */\nexport async function uploadChatFile(v, file: File, onProgress): Promise<any> {\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    return await axios.post(`/api/v1/knowledge/upload`, formData, {\n        headers: {\n            \"Content-Type\": \"multipart/form-data\"\n        },\n        onUploadProgress: (progressEvent) => {\n            // Calculate progress percentage\n            if (progressEvent.total) {\n                const progress = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n                onProgress(progress);\n            }\n        }\n    });\n}\n\n\n/**\n * 检查是否有编辑app权限\n */\nexport async function checkAppEditPermission(flowId, flowType) {\n    return await axios.get(`/api/v1/workflow/write/auth`, {\n        params: { flow_id: flowId, flow_type: flowType }\n    }).catch(e => {\n        // console.error('error :>> ', e);\n        // location.href = __APP_ENV__.BASE_URL + '/404';\n    });\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/index.ts",
    "content": "import { AppNumType, AppType } from \"@/types/app\";\nimport originAxios from \"axios\";\nimport { AppConfig } from \"../../types/api/app\";\nimport { FlowType } from \"../../types/flow\";\nimport axios from \"../request\";\nimport {\n  APIClassType,\n  BuildStatusTypeAPI,\n  InitTypeAPI,\n  RTServer\n} from \"./../../types/api/index\";\n\nexport const paramsSerializer = (params) => {\n  return Object.keys(params)\n    .map(key => {\n      const value = params[key];\n      if (value === undefined) {\n        return null; // 只返回非undefined的值\n      }\n      if (Array.isArray(value)) {\n        return value.map(val => `${key}=${val}`).join('&');\n      }\n      return `${key}=${value}`;\n    })\n    .filter(item => item !== null) // 过滤掉值为null的项\n    .join('&');\n}\n\nconst GITHUB_API_URL = \"https://api.github.com\";\n\nexport async function getRepoStars(owner, repo) {\n  try {\n    const response = await axios.get(\n      `${GITHUB_API_URL}/repos/${owner}/${repo}`\n    );\n    return response.data.stargazers_count;\n  } catch (error) {\n    console.error(\"Error fetching repository data:\", error);\n    return null;\n  }\n}\n\n\n/**\n * Fetches all objects from the API endpoint.\n *\n * @returns  A promise that resolves to an AxiosResponse containing all the objects.\n */\nexport async function getAll() {\n  return await axios.get(`/api/v1/all`);\n}\n\n/**\n * 读取 saved 组件s\n */\nexport async function getComponents(): Promise<any[]> {\n  return await axios.get(`/api/v1/component`);\n}\n/**\n * save 组件\n */\nexport async function saveComponent(data): Promise<any[]> {\n  return await axios.post(`/api/v1/component`, data);\n}\n\n/**\n * 覆盖 组件\n */\nexport async function overridComponent(data): Promise<any[]> {\n  return await axios.patch(`/api/v1/component`, data);\n}\n/**\n * 删除 组件\n */\nexport async function delComponentApi(name): Promise<any> {\n  return await axios.delete(`/api/v1/component`, { data: { name } });\n}\n/**\n * 获取平台配置\n */\nexport async function getAppConfig(): Promise<AppConfig> {\n  return await axios.get(`/api/v1/env`);\n}\n/**\n * 获取平台配置\n */\nexport async function saveThemeApi(data: string): Promise<any> {\n  return await axios.post(`/api/v1/web/config`, { value: data });\n}\n/**\n * Reads all templates from the database.\n *\n * @returns The flows data.\n * @throws Will throw an error if reading fails.\n */\nexport async function readTempsDatabase(type, id?: number): Promise<FlowType[]> {\n  const typeMap = {\n    [AppType.FLOW]: 10,\n    [AppType.ASSISTANT]: 5,\n    [AppType.SKILL]: 1\n  }\n  return await axios.get(`/api/v1/skill/template?flow_type=${typeMap[type]}${id ? '&id=' + id : ''}`);\n}\n\n/**\n * 创建模板.(工作流\\助手\\技能)\n *\n * @param data {flow_id name description}\n * @returns  null.\n */\nexport function createTempApi(params, type) {\n  const map = { assistant: 5, skill: 1, flow: 10 }\n  return axios.post(`/api/v1/skill/template/create`, { ...params, flow_type: map[type] });\n}\n\n/**\n * 删除模板.\n *\n * @param data {flow_id name description}\n * @returns  null.\n */\nexport function deleteTempApi(temp_id) {\n  return axios.delete(`/api/v1/skill/template/${temp_id}`);\n}\n\n/**\n * 修改模板.\n *\n * @param data {flow_id name description}\n * @returns  null.\n */\nexport function updateTempApi(temp_id, data) {\n  return axios.post(`/api/v1/skill/template/${temp_id}`, data);\n}\n\n/**\n * 获取知识库列表\n * type 0文件库 1qa库\n */\nexport async function readFileLibDatabase({ page = 1, pageSize = 20, name = '', type = 0 }) {\n  try {\n    const response: { data: any[], total: number } = await axios.get('/api/v1/knowledge', {\n      params: {\n        page_num: page,\n        page_size: pageSize,\n        name,\n        type,\n      },\n    });\n    return response;\n  } catch (error) {\n    console.error(error);\n    throw error;\n  }\n}\n\n/**\n * 复制知识库\n */\nexport async function copyLibDatabase(knowledge_id, newName) {\n  await axios.post(`/api/v1/knowledge/copy`, { knowledge_id, knowledge_name: newName });\n}\n/**\n * 复制qa知识库\n */\nexport async function copyQaDatabase(knowledge_id, knowledge_name) {\n  await axios.post(`/api/v1/knowledge/qa/copy`, { knowledge_id, knowledge_name });\n}\n/**\n * 获取知识库下文件列表\n */\nexport async function readFileByLibDatabase({ id, page, pageSize = 20, name = '', status, file_ids }) {\n  if (Array.isArray(status)) {\n    if (status?.includes(1)) { // 4合并到解析中\n      status.push(4)\n    } else {\n      status = status?.filter(item => item !== 4)\n    }\n  }\n\n  const params = {\n    page_num: page,\n    page_size: pageSize,\n    file_name: name,\n    status: status === 999 ? undefined : status,\n    file_ids,\n  }\n  const response: { data: any[], total: number, writeable: any } = await axios.get(`/api/v1/knowledge/file_list/${id}`, {\n    params, paramsSerializer\n  });\n\n  return response\n  // return { data, writeable, pages: Math.ceil(total / pageSize) }\n}\n/**\n * 添加元数据\n */\nexport async function addMetadata(knowledge_id, metadata_fields) {\n  await axios.post(`/api/v1/knowledge/add_metadata_fields`, {\n    knowledge_id: knowledge_id,\n    metadata_fields: metadata_fields,\n  });\n}\n/**\n * 修改元数据名称\n */\nexport async function updateMetadataFields(\n  knowledge_id: string | number,\n  updates: Array<{ old_field_name: string; new_field_name: string }>\n) {\n  await axios.put(`/api/v1/knowledge/update_metadata_fields`, {\n    knowledge_id: knowledge_id,\n    metadata_fields: updates,\n  });\n}\n/**\n * 用户自定义元数据\n */\nexport async function saveUserMetadataApi(\n  knowledge_id: string | number,\n  updates: Array<{ field_name: string; field_value: any }>,\n  updated_at?: string | number\n) {\n  await axios.put(`/api/v1/knowledge/file/user_metadata`, {\n    knowledge_file_id: knowledge_id,\n    user_metadata_list: updates,\n    updated_at: updated_at\n  });\n}\n/**\n * 删除元数据\n */\nexport async function deleteMetadataFields(\n  knowledge_id: string | number,\n  fieldNames: string[]\n) {\n  await axios.delete(`/api/v1/knowledge/delete_metadata_fields`, {\n    data: {\n      knowledge_id: knowledge_id,\n      field_names: fieldNames,\n    },\n  });\n}\n// 获取元数据\nexport async function getMetaFile(file_id): Promise<any> {\n  return await axios.get(`/api/v1/knowledge/file/info/${file_id}`);\n}\n\n/**\n * 重试解析文件\n */\nexport async function retryKnowledgeFileApi(data) {\n  await axios.post(`/api/v1/knowledge/retry`, data);\n}\n\n/**\n * 上传文件\n */\nexport async function uploadLibFile(data, config, type: 'knowledge' | 'icon', url) {\n  const urls = {\n    knowledge: '/api/v1/knowledge/upload',\n    icon: '/api/v1/upload/icon',\n  }\n  return await axios.post(url || urls[type], data, config);\n}\n\n/**\n * 确定上传文件\n * file_path knowledge_id chunck_size\n */\n\ntype ExcelRule = {\n  slice_length: number;\n  append_header: boolean;\n  header_start_row: number;\n  header_end_row: number;\n};\ntype UploadFileFc = {\n  knowledge_id: number; // 必需\n  separator: string[]; // 必需，切分相关参数，如果不传，使用默认值\n  separator_rule: ('after' | 'before')[]; // 必需\n  chunk_size: number; // 必需\n  chunk_overlap: number; // 必需\n  file_list: { file_path: string }[]; // 必需\n  retain_images?: boolean; //保留文档图片\n  force_ocr?: boolean;//强制开启ocr\n  enable_formula?: boolean;//开启公式识别\n  filter_page_header_footer?: boolean;//过滤页眉页脚\n  excel_rules: {\n    [uuid: string]: ExcelRule\n  };\n}\ntype DefaultUploadFileFc = {\n  knowledge_id: number; // 必需\n  file_list: { file_path: string }[]; // 必需\n};\n///\nexport async function subUploadLibFile(data: UploadFileFc): Promise<any>;\nexport async function subUploadLibFile(data: DefaultUploadFileFc): Promise<any>;\nexport async function subUploadLibFile(data: UploadFileFc | DefaultUploadFileFc) {\n  return await axios.post(`/api/v1/knowledge/process`, data);\n}\n//调整分段策略\nexport async function rebUploadFile(data) {\n  return await axios.post(`/api/v1/knowledge/process/rebuild`, data);\n}\n/**\n * 查看文件切片（SSE 版本）\n * 取消逻辑基于 EventSource.close()，无需 CancelToken\n */\nlet currentEventSource = null; // 仅保留此变量用于跟踪当前连接\n\n// 用 fetch 实现 POST 方式的 SSE\n/**\n * 预览文档分片（轮询模式）。\n * 首次请求创建任务，返回任务标识；随后访问 `/api/v1/knowledge/preview/Polling` 轮询状态。\n * @param {Record<string, any>} data 请求体\n * @param {(eventType: string, payload: any) => void} onEvent 事件回调\n * @param {{ pollInterval?: number }} [options] 轮询配置\n * @returns {() => void} 取消函数\n */\nexport function previewFileSplitApi(\n  data: Record<string, any>,\n  onEvent: (eventType: string, payload: any) => void,\n  options: { pollInterval?: number } = {}\n) {\n  const createController = new AbortController();\n  const pollingController = new AbortController();\n  const createSignal = createController.signal;\n  const pollingSignal = pollingController.signal;\n  const pollInterval = Math.max(1000, options.pollInterval || 2000);\n  let pollTimer = null;\n  let isFinished = false;\n\n  const clear = () => {\n    if (pollTimer) {\n      clearTimeout(pollTimer);\n      pollTimer = null;\n    }\n    createController.abort();\n    pollingController.abort();\n  };\n\n  const emitError = (payload) => {\n    onEvent('error', {\n      code: payload?.code || 10952,\n      message: payload?.message || '文档解析失败'\n    });\n  };\n\n  /**\n   * 轮询状态请求。\n   * @param {string} taskId 任务标识\n   */\n  /**\n   * 轮询状态请求。\n   * @param {string} previewFileId 预览任务标识\n   */\n  const pollStatus = (previewFileId) => {\n    if (isFinished) return;\n    console.log('开始轮询状态, preview_file_id:', previewFileId);\n    axios\n      .get(`/api/v1/knowledge/preview/status`, {\n        params: { preview_file_id: previewFileId },\n        signal: pollingSignal\n      })\n      .then((result: any) => {\n        // axios 拦截器已经返回了 response.data.data，所以这里直接使用 result\n        // 后端返回格式: resp_200(data=file_status)，其中 file_status 是 {\"status\":\"processing\"} 或 {\"status\":\"completed\",\"data\":{...}}\n        // 经过拦截器后，result 应该是: {\"status\":\"processing\"} 或 {\"status\":\"completed\",\"data\":{...}}\n        console.log('轮询状态响应:', result);\n        const status: string = result?.status;\n        const payload = result?.data;\n        const code = result?.code;\n        const message = result?.message;\n\n        if (!status || typeof status !== 'string') {\n          console.error('轮询响应缺少 status 字段或格式异常:', result);\n          isFinished = true;\n          emitError({ message: '轮询响应格式异常' });\n          return;\n        }\n\n        switch (status) {\n          case 'processing':\n            onEvent('processing', payload || {});\n            if (!isFinished) {\n              pollTimer = setTimeout(() => pollStatus(previewFileId), pollInterval);\n            }\n            break;\n          case 'completed':\n            isFinished = true;\n            onEvent('completed', payload || {});\n            onEvent('closed', { message: '轮询完成' });\n            break;\n          case 'error':\n            isFinished = true;\n            emitError({ code, message, ...(payload || {}) });\n            break;\n          case 'canceled':\n            isFinished = true;\n            onEvent('canceled', payload || {});\n            break;\n          default:\n            // 未知状态视为错误\n            console.warn('未知的轮询状态:', status);\n            isFinished = true;\n            emitError({ code, message: message || `未知状态: ${status}` });\n        }\n      })\n      .catch((err) => {\n        console.error('preview 轮询请求失败', err);\n\n        if (originAxios.isCancel?.(err) || err?.code === 'ERR_CANCELED' || err?.name === 'CanceledError') {\n          return;\n        }\n        isFinished = true;\n        emitError({ message: '文档解析失败' });\n      });\n  };\n\n  axios\n    .post('/api/v1/knowledge/preview', data, {\n      signal: createSignal\n    })\n    .then((result: any) => {\n      console.log('preview 创建任务响应:', result);\n\n      if (!result || isFinished) {\n        console.warn('预览任务创建响应为空或已结束');\n        return;\n      }\n      const previewFileId = result?.preview_file_id || result?.previewFileId;\n\n      if (previewFileId) {\n        console.log('获取到 preview_file_id:', previewFileId, '开始轮询');\n        // 立即开始第一次轮询\n        pollStatus(previewFileId);\n        return;\n      }\n\n      // 如果没有 preview_file_id，可能是响应格式异常\n      console.error('任务创建失败：未找到 preview_file_id，响应数据:', JSON.stringify(result));\n      isFinished = true;\n      emitError({ message: '任务创建失败：响应中缺少任务ID，请检查后端接口返回格式' });\n    })\n    .catch((err) => {\n      console.error('preview 请求失败', err);\n\n      if (originAxios.isCancel?.(err) || err?.code === 'ERR_CANCELED' || err?.name === 'CanceledError') {\n        return;\n      }\n      isFinished = true;\n      emitError({ message: '文档解析失败' });\n    });\n\n  return () => {\n    isFinished = true;\n    clear();\n  };\n}\n\n/**\n * 获取知识库下的切分段落\n */\nexport async function getKnowledgeChunkApi(params): Promise<any> {\n  let queryStr = ''\n  if (params.file_ids?.length) {\n    queryStr = params.file_ids.map(id => `file_ids=${id}`).join('&');\n  } else {\n    delete params.file_ids;\n    return Promise.resolve({ data: [] });\n  }\n  return await axios.get(`/api/v1/knowledge/chunk?${queryStr}`, { params });\n}\n\n/**\n * 删除知识库分块内容\n */\nexport async function delChunkApi(data) {\n  return await axios.delete(`/api/v1/knowledge/chunk`, { data });\n}\n\n/**\n * 删除知识库分块内容(预览时)\n */\nexport async function delChunkInPreviewApi(data) {\n  return await axios.delete(`/api/v1/knowledge/preview`, { data });\n}\n\n/**\n * 跟新知识库分块内容\n */\nexport async function updatePreviewChunkApi(data) {\n  return await axios.put(`/api/v1/knowledge/preview`, data);\n}\n\n/**\n * 删除知识库分块内容\n */\ntype KnowledgePutRequest = {\n  knowledge_id: number;\n  file_id: number;\n  chunk_index: number;\n  text: string;\n  bbox: any\n}\nexport async function updateChunkApi(data: KnowledgePutRequest) {\n  return await axios.put(`/api/v1/knowledge/chunk`, data);\n}\n\n/**\n * 创建支持库\n */\nexport async function createFileLib(data) {\n  return await axios.post(`/api/v1/knowledge/create`, data);\n}\n\n/**\n * 修改知识库\n */\nexport async function updateKnowledgeApi(data) {\n  return await axios.put(`/api/v1/knowledge/`, data);\n};\n\n/**\n * 删除支持库\n */\nexport async function deleteFileLib(id) {\n  return await axios.delete(`/api/v1/knowledge/`, { data: { knowledge_id: id } });\n}\n\n// 获取灵思工具\nexport async function getLinsightTools(): Promise<any> {\n  return await axios.get('/api/v1/tool/linsight/preset');\n}\n\n// 获取个人知识库信息\nexport async function getPersonalKnowledgeInfo(): Promise<any> {\n  return await axios.get('/api/v1/knowledge/personal_knowledge_info');\n}\n\n/**\n * 删除知识库下文件\n */\nexport async function deleteFile(id) {\n  return await axios.delete(`/api/v1/knowledge/file/${id}`);\n}\n\n/**\n * 获取Qa问题列表\n */\nexport async function getQaList(id, data: { page, pageSize, keyword }) {\n  return await axios.get(`/api/v1/knowledge/qa/list/${id}`, {\n    params: {\n      page_size: data.pageSize,\n      page_num: data.page,\n      keyword: data.keyword\n    },\n  });\n}\n\n\n/**\n * 导出QA文件\n */\nexport async function getQaFile(id): Promise<{ file_list: string[] }> {\n  return await axios.get(`/api/v1/knowledge/qa/export/${id}`);\n}\n\n/**\n * 导入QA文件\n */\nexport async function postImportQaFile(id, params): Promise<{\n  result: {\n    answers: string,\n    questions: string[],\n  }[]\n}> {\n  const { url } = params;\n  return await axios.post(`/api/v1/knowledge/qa/import/${id}`, {\n    file_list: [url],\n  });\n}\n\n/**\n * 预览QA文件\n */\nexport async function getQaFilePreview(id, params): Promise<{\n  result: {\n    answers: string,\n    questions: string[],\n  }[]\n}> {\n  const { url, size, offset } = params;\n  return await axios.post(`/api/v1/knowledge/qa/preview/${id}`, {\n    file_url: url,\n    size,\n    offset,\n  });\n}\n\n/**\n * 修改qa状态\n */\nexport async function updateQaStatus(id, status) {\n  return await axios.post(`/api/v1/knowledge/qa/status_switch`, {\n    id,\n    status\n  });\n}\n\n/**\n * Qa问题新增/修改\n */\nexport async function updateQa(id, data: { questions, answers, knowledge_id, source }) {\n  if (id) {\n    data.id = id\n  }\n\n  return await axios.post(`/api/v1/knowledge/qa/add`, data);\n}\n\n/**\n * 删除Qa问题\n */\nexport async function deleteQa(ids) {\n  return await axios.delete(`/api/v1/knowledge/qa/delete`, {\n    data: { ids }\n  });\n}\n\n/**\n * 获取Qa问题详情\n */\nexport async function getQaDetail(id) {\n  return await axios.get(`/api/v1/knowledge/qa/detail?id=${id}`);\n}\n\n/**\n * 添加相似问到问题\n */\nexport async function addSimilarQa(data: { ids: string[], question: string }) {\n  return await axios.post(`/api/v1/knowledge/qa/append`, data);\n}\n\n/**\n * 生成相似问\n */\nexport async function generateSimilarQa(question, anwser) {\n  return await axios.post(`/api/v1/knowledge/qa/auto_question`, {\n    \"ori_question\": question,\n    \"anwser\": anwser,\n    \"number\": 3\n  });\n}\n\n/**\n * 获取模型列表\n */\nexport async function getEmbeddingModel(): Promise<{ models: string[] }> {\n  return await axios.get(`/api/v1/knowledge/embedding_param`);\n}\n\n/**\n * 获取文件地址\n */\nexport async function getFilePathApi(file_id) {\n  return await axios.get(`/api/v1/knowledge/file_share`, { params: { file_id } });\n}\n\n/**\n * 获取文件chunk对应的文本\n */\nexport async function getFileBboxApi(file_id) {\n  return await axios.get(`/api/v1/knowledge/file_bbox`, { params: { file_id } });\n}\n\n/**\n * 获取知识库详情\n */\nexport async function getKnowledgeDetailApi(knowledge_id): Promise<any[]> {\n  let queryStr = knowledge_id.map(id => `knowledge_id=${id}`).join('&');\n  return await axios.get(`/api/v1/knowledge/info?${queryStr}`);\n}\n\n/**\n * 获取RT服务列表\n */\nexport async function getServicesApi(): Promise<RTServer[]> {\n  return await axios.get(`/api/v1/server/list_server`);\n}\n\n/**\n * 获取FT服务列表\n */\nexport async function getFTServicesApi(server_id: number): Promise<RTServer[]> {\n  return await axios.get(`/api/v1/finetune/model/list?server_id=${server_id}`);\n}\n\n/**\n * 获取RT服务列表（包含已删除data）\n */\nexport async function getAllServicesApi(): Promise<any[]> {\n  return await axios.get(`/api/v1/finetune/server/filters`);\n}\n\n/**\n * 添加服务\n */\nexport async function addServiceApi(name: string, ftUrl: string): Promise<{ id: number }> {\n  return await axios.post(`/api/v1/server/add`,\n    { endpoint: '', sft_endpoint: ftUrl, server: name, remark: 'RT模块创建' });\n}\n\n/**\n * 删除知识库下文件\n *\n */\nexport async function deleteServiceApi(id) {\n  return await axios.delete(`/api/v1/server/${id}`);\n}\n\n/**\n * 获取发布模型的状态信息\n */\nexport async function getModelInfoApi(id) {\n  return await axios.get(`/api/v1/server/model/${id}`);\n}\n\n\nexport async function postValidateCode(\n  code: string\n): Promise<any> {\n  return await axios.post(\"/api/v1/validate/code\", { code });\n}\n\n/**\n * Checks the prompt for the code block by sending it to an API endpoint.\n * @param {string} name - The name of the field to check.\n * @param {string} template - The template string of the prompt to check.\n * @param {APIClassType} frontend_node - The frontend node to check.\n * @returns A promise that resolves to an AxiosResponse containing the validation results.\n */\nexport async function postValidatePrompt(\n  name: string,\n  template: string,\n  frontend_node: APIClassType\n): Promise<any> {\n  return await axios.post(\"/api/v1/validate/prompt\", {\n    name: name,\n    template: template,\n    frontend_node: frontend_node,\n  });\n}\n\n/**\n * 获取会话列表\n */\nexport const getChatsApi = (page) => {\n  function isJsonSerializable(str) {\n    try {\n      JSON.parse(str);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  return (axios.get(`/api/v1/chat/list?page=${page}&limit=40`) as Promise<any[]>).then(res => {\n    const result = res?.filter((el, i) => el.chat_id) || []\n    return result.map(el => {\n      const { intermediate_steps, message } = el.latest_message || { intermediate_steps: '', message: '' }\n      const _message = (function () {\n        if (intermediate_steps) return intermediate_steps;\n        if (isJsonSerializable(message)) {\n          const json = JSON.parse(message);\n          if (Array.isArray(json)) return message\n          const chatKey = el.flow_type === AppNumType.FLOW ? 'msg' : Object.keys(json)[0]\n          return json[chatKey] || ''\n        }\n        return message;\n      }())\n\n      return {\n        ...el,\n        latest_message: {\n          ...el.latest_message,\n          message: typeof _message === 'string' ? _message.substring(0, 40) : ''\n        }\n      }\n    })\n  })\n};\n\n/**\n * 删除会话\n */\nexport const deleteChatApi = (chatId) => {\n  return axios.delete(`/api/v1/chat/${chatId}`)\n};\n\n\n/**\n * 获取会话消息记录\n *\n * @param id flow_id chat_id - .\n * @returns {Promise<any>} his data.\n */\nexport interface MessageDB {\n  /** 场景 */\n  category: string;\n  chat_id: string;\n  create_time: string;\n  extra: string;\n  /** 文件列表 */\n  files: string;\n  flow_id: string;\n  id: number;\n  /** 日志 */\n  intermediate_steps: string;\n  /** 机器人回复 */\n  is_bot: boolean;\n  /** 已点赞 */\n  liked: number;\n  /** 消息内容 */\n  message: string;\n  receiver: null;\n  remark: null;\n  sender: string;\n  solved: number;\n  /** 有溯源 */\n  source: number;\n  type: string;\n  update_time: string;\n  user_id: number;\n}\n\nexport async function getChatHistory(flowId: string, chatId: string, pageSize: number, id?: number): Promise<MessageDB[]> {\n  // hack Switch API URL based on routing \n  let url = '/api/v1/chat/history'\n  if (location.pathname.indexOf('/log/chatlog') || location.pathname.indexOf('/label/chat')) {\n    url = '/api/v1/session/chat/history'\n  }\n  return await axios.get(`${url}?flow_id=${flowId}&chat_id=${chatId}&page_size=${pageSize}&id=${id || ''}`);\n}\n\n/**\n * 赞 踩消息\n */\nexport const likeChatApi = (chatId, liked) => {\n  liked && copyTrackingApi({\n    message_id: chatId,\n    operation_type: liked === 1 ? 'like' : 'dislike'\n  })\n  return axios.post(`/api/v1/liked`, { message_id: chatId, liked });\n};\n\n/**\n * 踩消息反馈\n */\nexport const disLikeCommentApi = (message_id, comment) => {\n  return axios.post(`/api/v1/chat/comment`, { message_id, comment });\n};\n\n/**\n * 点击复制上报\n * */\nexport const copyTrackingApi = (msgId) => {\n  trackingApi({\n    message_id: msgId,\n    operation_type: 'copy'\n  })\n  return axios.post(`/api/v1/chat/copied`, { message_id: msgId });\n}\n\n/**\n * Tracking\n */\nexport const trackingApi = (data: { message_id: string, operation_type: 'dislike' | 'like' | 'copy' }) => {\n  return axios.post(`/api/v1/session/chat/message/telemetry`, data);\n}\n\n/**\n * Fetches the version of the API.\n *\n * @returns {Promise<AxiosResponse<any>>} A promise that resolves to an AxiosResponse containing the version information.\n */\nexport async function getVersion() {\n  const respnose = await axios.get(\"/api/v1/version\");\n  return respnose.data;\n}\n\n/**\n * Fetches the build status of a flow.\n * @param {string} flowId - The ID of the flow to fetch the build status for.\n * @returns {Promise<BuildStatusTypeAPI>} A promise that resolves to an AxiosResponse containing the build status.\n *\n */\nexport async function getBuildStatus(\n  flowId: string,\n  versionId?: number\n): Promise<BuildStatusTypeAPI> {\n  const qstr = versionId ? `?version_id=${versionId}` : \"\";\n  return await axios.get(`/api/v1/build/${flowId}/status${qstr}`);\n}\n\n//docs for postbuildinit\n/**\n * Posts the build init of a flow.\n * @param {string} flowId - The ID of the flow to fetch the build status for.\n * @returns {Promise<InitTypeAPI>} A promise that resolves to an AxiosResponse containing the build status.\n *\n */\nexport async function postBuildInit(data: {\n  flow: FlowType\n  chatId?: string\n  versionId?: number\n}): Promise<any> {\n  const { flow, chatId, versionId } = data;\n  const qstr = versionId ? `?version_id=${versionId}` : ''\n  return await axios.post(`/api/v1/build/init/${flow.id}${qstr}`, chatId ? { chat_id: chatId } : flow);\n}\n\n// fetch(`/upload/${id}`, {\n//   method: \"POST\",\n//   body: formData,\n// });\n/**\n * Uploads a file to the server.\n * @param {File} file - The file to upload.\n * @param {string} id - The ID of the flow to upload the file to.\n */\nexport async function uploadFile(\n  file: File,\n  id: string\n): Promise<any> {\n  const formData = new FormData();\n  formData.append(\"file\", file);\n  return await axios.post(`/api/v1/upload/${id}`, formData);\n}\n\n/***************************\n * ************ model ************ \n */\n/**\n * 获取知识库下文件列表\n *\n */\nexport async function serverListApi(byRtName?: string): Promise<any[]> {\n  return await axios.get(`/api/v1/server/list`).then((list: any) => {\n    return byRtName ? list.filter(item => item.server === byRtName) : list\n  });\n}\n\n/**\n * 上下线\n */\nexport async function switchOnLineApi(id, on) {\n  return await axios.post(`/api/v1/server/${on ? 'load' : 'unload'}`, { deploy_id: id });\n}\n\n/**\n * 修改配置\n */\nexport async function updateConfigApi(id, config) {\n  return await axios.post(`/api/v1/server/update`, { id, config });\n}\n\n/**\n * 获取gpu\n *\n */\nexport async function GPUlistApi(): Promise<any> {\n  return await axios.get(`/api/v1/server/GPU`);\n}\nexport async function GPUlistByFinetuneApi(): Promise<any> {\n  return await axios.get(`/api/v1/finetune/gpu`);\n}\n\n// 工作台配置\nexport async function setWorkstationConfigApi(data): Promise<any> {\n  return await axios.post(`api/v1/workstation/config`, data);\n}\nexport async function getWorkstationConfigApi(): Promise<any> {\n  return await axios.get(`api/v1/workstation/config`);\n}\n\nexport async function getChatHistoryApi(chatId: string): Promise<any> {\n  return await axios.get('/api/v1/session/chat/messages/' + chatId);\n}\n\n/***************************\n * ************ 溯源 ************ \n */\n// 分词\nexport async function splitWordApi(word: string, messageId: string): Promise<string[]> {\n  return await axios.get(`/api/v1/qa/keyword?message_id=${messageId}`)\n}\n\n// 获取 chunks\nexport async function getSourceChunksApi(chatId: string, messageId: number, keys: string) {\n  try {\n    let chunks: any[] = await axios.post(`/api/v1/qa/chunk`, {\n      chat_id: chatId,\n      message_id: messageId,\n      keys,\n    })\n\n    const fileMap = {}\n    chunks.forEach(chunk => {\n      const list = fileMap[chunk.file_id]\n      if (list) {\n        fileMap[chunk.file_id].push(chunk)\n      } else {\n        fileMap[chunk.file_id] = [chunk]\n      }\n    });\n\n    return Object.keys(fileMap).map(fileId => {\n      const { file_id: id, source: fileName, source_url, original_url: originUrl, ...other } = fileMap[fileId][0]\n\n      const chunks = fileMap[fileId].sort((a, b) => b.score - a.score)\n        .map(chunk => ({\n          box: chunk.chunk_bboxes,\n          score: chunk.score\n        }))\n      const score = chunks[0].score\n\n      // 兼容后端历史逻辑\n      let fileUrl = ''\n      let suffix = fileName.split('.').pop().toLowerCase()\n      let isNew = false\n      if (['uns', 'local'].includes(other.parse_type)) {\n        fileUrl = other.chunk_bboxes ? source_url : originUrl;\n        if (other.chunk_bboxes) {\n          suffix = 'pdf'\n        }\n      } else if (['etl4lm', 'un_etl4lm'].includes(other.parse_type)) {\n        fileUrl = source_url || originUrl\n        isNew = true\n      }\n      return { id, fileName, suffix, isNew, fileUrl, originUrl, chunks, ...other, score }\n    }).sort((a, b) => b.score - a.score)\n  } catch (error) {\n    console.error(error);\n    throw error;\n  }\n}\n\n\nexport async function updateKnowledge(data): Promise<any[]> {\n  return await axios.post(`/api/v1/knowledge/update_knowledge`, data);\n}\n\n\n/**\n * Knowledge Base Upload\n */\nexport async function uploadFileApi({ fileKey, knowledgeId, file, onProgress, onFinish, onFail, onAbort }:\n  {\n    fileKey: string,\n    file: File,\n    knowledgeId: string,\n    onProgress?: (progressEvent: number) => void,\n    onFail?: (error: any) => void,\n    onFinish?: (response: any) => void,\n    onAbort?: (abortCtlr: any) => void\n  }): Promise<any> {\n  // 创建新的控制器\n  const abortCtlr = new AbortController();\n  onAbort(abortCtlr);\n\n  try {\n    const formData = new FormData();\n    formData.append(fileKey, file);\n\n    let isFinished = false;\n\n    const config = {\n      headers: { 'Content-Type': 'multipart/form-data;charset=utf-8' },\n      onUploadProgress: (progressEvent) => {\n        const { loaded, total } = progressEvent;\n        const progress = Math.min(99.99, (loaded * 100) / total);\n        console.log(`Upload progress: ${file.name} ${progress}%`);\n        // UI with the progress information here\n        !isFinished && onProgress(progress)\n      },\n      signal: abortCtlr.signal,\n    }\n    const response = await axios.post(`/api/v1/knowledge/upload/${knowledgeId}`, formData, config);\n    // 处理成功\n    isFinished = true;\n    onFinish(response);\n  } catch (error) {\n    if (error?.code === \"ERR_CANCELED\") {\n      console.log('用户取消了上传');\n    } else {\n      onFail(error);\n    }\n  } finally {\n    onAbort(null);\n  }\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/label.ts",
    "content": "import axios from \"../request\";\n\nexport async function getAllLabelsApi() {\n    return await axios.get('/api/v1/tag')\n}\n\n// admin全局创建一个标签\nexport async function createLabelApi(name:string) {\n    return await axios.post('/api/v1/tag', {\n        name\n    })\n}\n\n// admin修改标签\nexport async function updateLabelApi(id:number, name:string) {\n    return await axios.put('/api/v1/tag', {\n        tag_id: id,\n        name\n    })\n}\n\n// admin删除标签\nexport async function deleteLabelApi(id:number) {\n    return await axios.delete('/api/v1/tag', {\n        data: {\n            tag_id: id\n        }\n    })\n}\n\n// 建立助手或技能和标签的关系，即选择标签\nexport async function createLinkApi(tag_id:number, resource_id:string, resource_type:number) {\n    return await axios.post('/api/v1/tag/link', {\n        tag_id,\n        resource_id,\n        resource_type\n    })\n}\n\n// 删除助手或技能和标签的关系，即不选标签\nexport async function deleteLinkApi(tag_id:number, resource_id:string, resource_type:number) {\n    return await axios.delete('/api/v1/tag/link', {\n        data: {\n            tag_id,\n            resource_id,\n            resource_type\n        }\n    })\n}\n\n// 获取首页展示的标签列表\nexport async function getHomeLabelApi() {\n    return await axios.get('/api/v1/tag/home')\n}\n\n// 更新首页展示的标签列表\nexport async function updateHomeLabelApi(tag_ids) {\n    return await axios.post('/api/v1/tag/home', {\n        tag_ids\n    })\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/linsight.ts",
    "content": "import axios from \"../request\";\n\n// src/controllers/API.ts\nexport const sopApi = {\n  // 获取SOP列表\n  getSopList: (params: { keywords?: string; page?: number; page_size?: number; showcase?: 0 | 1 }) => {\n    return axios.get('/api/v1/linsight/sop/list', { params });\n  },\n\n  // 添加SOP\n  addSop: (data: { name: string; description?: string; content: string; rating?: number }) => {\n    return axios.post('/api/v1/linsight/sop/add', data);\n  },\n\n  // 更新SOP\n  updateSop: (data: { id: string; name: string; description: string; content: string; rating: number }) => {\n    return axios.post('/api/v1/linsight/sop/update', data);\n  },\n\n  // 删除SOP\n  deleteSop: (id: string) => {\n    return axios.delete(`/api/v1/linsight/sop/remove`, {\n      data: {\n        sop_ids: [id]\n      }\n    });\n  },\n  // 批量删除SOP\n  batchDeleteSop: (sop_ids: string[]) => {\n    return axios.delete('/api/v1/linsight/sop/remove', {\n      data: { sop_ids }\n    });\n  },\n  // 获取工具列表\n  getToolList: () => {\n    return axios.get('/api/v1/workstation/config');\n  },\n  setToolList: (data) => {\n    return axios.post(`api/v1/workstation/config`, data);\n  },\n  GetSopRecord(params: { keyword?: string; page?: number; page_size?: number; sort?: string }) {\n    return axios.get('/api/v1/linsight/sop/record', { params });\n  },\n  SyncSopRecord: (data) => {\n    return axios.post(`/api/v1/linsight/sop/record/sync`, data);\n  },\n  UploadSopRecord: (data) => {\n    return axios.post(`/api/v1/linsight/sop/upload`, data);\n  },\n  // 设为/取消精选\n  switchShowcase: (data: { sop_id: string; showcase: boolean }) => {\n    return axios.post(`/api/v1/linsight/sop/showcase`, data);\n  },\n  getSopShowcaseDetail: (data: { sop_id: string; linsight_version_id: string }) => {\n    if (!data.sop_id && !data.linsight_version_id) {\n      return Promise.reject('缺少必要参数');\n    }\n    return axios.get(`/api/v1/linsight/sop/showcase/result`, { params: data });\n  },\n  batchDownload: async (data: {\n    fileName: string,\n    files: { file_name: string, file_url: string }[]\n  }) => {\n    const res = await axios.post('/api/v1/linsight/workbench/batch-download-files', {\n      zip_name: data.fileName,\n      file_info_list: data.files\n    }, {\n      responseType: 'blob'\n    })\n\n    console.log('res :>> ', res);\n    const url = window.URL.createObjectURL(new Blob([res]));\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = data.fileName || 'downloadFile.zip';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    window.URL.revokeObjectURL(url);\n  },\n  getLinsightFileDownloadApi: async (fileUrl: string, vid: string): Promise<any> => {\n    return axios.post('/api/v1/linsight/workbench/file_download', { file_url: fileUrl, session_version_id: vid });\n  }\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/log.ts",
    "content": "import { paramsSerializer } from \".\";\nimport axios from \"../request\";\n\n// 获取操作过组下资源的所有用户\nexport async function getOperatorsApi(): Promise<[]> {\n    return await axios.get('/api/v1/audit/operators')\n}\n\n// 分页获取审计列表\nexport async function getLogsApi({ page, pageSize, userIds, groupId = '', start, end, moduleId = '', action = '' }: {\n    page: number,\n    pageSize: number,\n    userIds?: number[],\n    groupId?: string,\n    start?: string,\n    end?: string,\n    moduleId?: string,\n    action?: string\n}): Promise<{ data: any[], total: number }> {\n    const uids = userIds?.reduce((pre, val) => `${pre}&operator_ids=${val}`, '') || ''\n    const startStr = start ? `&start_time=${start}` : ''\n    const endStr = end ? `&end_time=${end}` : ''\n    return await axios.get(\n        `/api/v1/audit?page=${page}&limit=${pageSize}&group_ids=${groupId}${uids}` +\n        `&system_id=${moduleId}&event_type=${action}` + startStr + endStr\n    )\n}\n\n// 系统模块\nexport async function getModulesApi(): Promise<{ data: any[] }> {\n    return {\n        data: [{ name: 'log.systemIdEnum.chat', value: 'chat' }, { name: 'log.systemIdEnum.build', value: 'build' }, { name: 'log.systemIdEnum.knowledge', value: 'knowledge' }, { name: 'log.systemIdEnum.system', value: 'system' },{ name: 'log.systemIdEnum.dashboard', value: 'dashboard' }]\n    }\n}\n\nconst actions = [\n    { name: 'log.eventTypeEnum.createChat', value: 'create_chat' },\n    { name: 'log.eventTypeEnum.deleteChat', value: 'delete_chat' },\n    { name: 'log.eventTypeEnum.createBuild', value: 'create_build' },\n    { name: 'log.eventTypeEnum.updateBuild', value: 'update_build' },\n    { name: 'log.eventTypeEnum.deleteBuild', value: 'delete_build' },\n    { name: 'log.eventTypeEnum.createKnowledge', value: 'create_knowledge' },\n    { name: 'log.eventTypeEnum.deleteKnowledge', value: 'delete_knowledge' },\n    { name: 'log.eventTypeEnum.uploadFile', value: 'upload_file' },\n    { name: 'log.eventTypeEnum.deleteFile', value: 'delete_file' },\n    { name: 'log.eventTypeEnum.updateUser', value: 'update_user' },\n    { name: 'log.eventTypeEnum.forbidUser', value: 'forbid_user' },\n    { name: 'log.eventTypeEnum.recoverUser', value: 'recover_user' },\n    { name: 'log.eventTypeEnum.createUserGroup', value: 'create_user_group' },\n    { name: 'log.eventTypeEnum.deleteUserGroup', value: 'delete_user_group' },\n    { name: 'log.eventTypeEnum.updateUserGroup', value: 'update_user_group' },\n    { name: 'log.eventTypeEnum.createRole', value: 'create_role' },\n    { name: 'log.eventTypeEnum.deleteRole', value: 'delete_role' },\n    { name: 'log.eventTypeEnum.updateRole', value: 'update_role' },\n    { name: 'log.eventTypeEnum.userLogin', value: 'user_login' },\n    { name: 'log.eventTypeEnum.add_tool', value: 'add_tool' },\n    { name: 'log.eventTypeEnum.update_tool', value: 'update_tool' },\n    { name: 'log.eventTypeEnum.delete_tool', value: 'delete_tool' },\n    { name: 'log.eventTypeEnum.create_dashboard', value: 'create_dashboard' },\n    { name: 'log.eventTypeEnum.update_dashboard', value: 'update_dashboard' },\n    { name: 'log.eventTypeEnum.delete_dashboard', value: 'delete_dashboard' }\n];\n\n// 全部操作行为\nexport async function getActionsApi() {\n    return actions\n}\n\n// 系统模块下操作行为\nexport async function getActionsByModuleApi(moduleId) {\n    switch (moduleId) {\n        case 'chat': return actions.filter(a => a.value.includes('chat'))\n        case 'build': return actions.filter(a => a.value.includes('build'))\n        case 'knowledge': return actions.filter(a => a.value.includes('knowledge') || a.value.includes('file'))\n        case 'system': return actions.filter(a => a.value.includes('user') || a.value.includes('role'))\n        case 'dashboard': return actions.filter(a => a.value.includes('dashboard'))\n    }\n}\n\n// 应用数据标记列表\nexport async function getChatLabelsApi(params) {\n    const { page, pageSize, keyword } = params\n\n    return await axios.get('/api/v1/chat/app/list', {\n        params: {\n            page_num: page,\n            page_size: pageSize,\n            keyword\n        }\n    })\n}\n\n// 标注任务列表\nexport async function getMarksApi({ status, pageSize, page }): Promise<{}> {\n    return await axios.get('/api/v1/mark/list', {\n        params: {\n            page_num: page,\n            page_size: pageSize,\n            status\n        }\n    }).then(res => {\n        res.data = res.list\n        return res\n    })\n}\n\n// 创建标注任务\nexport async function createMarkApi(data: { app_list: string[], user_list: string[] }) {\n    return await axios.post('/api/v1/mark/create_task', data)\n}\n\n// 删除标注任务\nexport async function deleteMarkApi(task_id) {\n    return await axios.delete('/api/v1/mark/del', { params: { task_id } })\n}\n\n// 标注会话列表\nexport async function getMarkChatsApi({ task_id, keyword, page, pageSize, mark_status, mark_user }) {\n    return await axios.get('/api/v1/chat/app/list', {\n        params: {\n            task_id,\n            keyword,\n            mark_status,\n            mark_user: mark_user?.join(','),\n            page_num: page,\n            page_size: pageSize\n        }\n    })\n}\n\n// 获取用户标注权限\nexport async function getMarkPermissionApi(): Promise<boolean> {\n    return await axios.get('/api/v1/user/mark')\n}\n\n// 更新标注状态\nexport async function updateMarkStatusApi(data: { session_id: string, task_id: number, status: number }) {\n    return await axios.post('/api/v1/mark/mark', data)\n}\n\n// 获取下一个标注会话\nexport async function getNextMarkChatApi({ action, chat_id, task_id }) {\n    return await axios.get('/api/v1/mark/next', {\n        params: {\n            action,\n            chat_id,\n            task_id\n        }\n    })\n}\n\n// 获取会话标注状态\nexport async function getMarkStatusApi({ chat_id, task_id }) {\n    return await axios.get('/api/v1/mark/get_status', {\n        params: {\n            chat_id,\n            task_id\n        }\n    })\n}\n/**\n * 获取应用分组列表\n * @param params 请求参数：keyword（关键词）、page（页码）、page_size（每页大小）\n * @param config axios 配置，包含 signal（用于取消请求）\n * @returns 返回分组列表数据\n */\nexport async function getGroupsApi(\n    params: { keyword: string; page: number; page_size: number },\n    config?: { signal?: AbortSignal } // 接收 AbortSignal\n): Promise<any[]> {\n    return await axios.get(\"/api/v1/group/manage/resources\", {\n        params, // 请求参数\n        signal: config?.signal, // 绑定 AbortSignal\n    });\n}\n\n\n// 获取审计应用列表\nexport async function getAuditAppListApi(params: {\n    flow_ids,\n    user_ids,\n    group_ids,\n    start_date,\n    end_date,\n    feedback,\n    sensitive_status,\n    page,\n    page_size\n}) {\n    return await axios.get('/api/v1/audit/session', {\n        params, paramsSerializer\n    })\n}\n\n// 导出csv\n\nexport async function exportCsvApi(params: {\n    flow_ids,\n    user_ids,\n    group_ids,\n    start_date,\n    end_date,\n    feedback,\n    sensitive_status\n}) {\n    return await axios.get('/api/v1/audit/session/export', {\n        params, paramsSerializer\n    })\n}\n\n// 包装csv的表格数据\nexport async function exportCsvDataApi(params: {\n    flow_ids,\n    user_ids,\n    group_ids,\n    start_date,\n    end_date,\n    feedback,\n    sensitive_status\n}) {\n    return await axios.get('/api/v1/audit/session/export/data', {\n        params, paramsSerializer\n    })\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/pro.ts",
    "content": "import axios from \"../request\";\n\n/**\n * 保存敏感词\n */\nexport const sensitiveSaveApi = async (data: any): Promise<any> => {\n    const { id, type, isCheck, words, wordsType, autoReply } = data\n\n    return await axios.post(`/api/sensitive/saveWords`, {\n        resource_id: id,\n        resource_type: type,\n        is_check: isCheck,\n        words,\n        words_type: wordsType,\n        auto_reply: autoReply\n    });\n};\n\n/**\n * 获取敏感词配置\n */\nexport const getSensitiveApi = async (resourceId, resourceType): Promise<any> => {\n\n    return await axios.get(`/api/sensitive/wordsDetail`, {\n        params: {\n            resourceId,\n            resourceType\n        }\n    });\n};\n\n/**\n * 获取资源组流量\n */\nexport const getGroupFlowsApi = async (page: number, pageSize: number, resourceType: string, groupId: number, name: string): Promise<any> => {\n    if (!groupId) return Promise.resolve([{ data: [], total: 0 }]);\n    return await axios.get(`/api/resource/groupFlows`, {\n        params: {\n            name,\n            page,\n            pageSize,\n            resourceType,\n            groupId\n        }\n    });\n};\n\n\n/**\n * 保存组信息\n */\nexport const saveGroupApi = async (data: any): Promise<any> => {\n    const { id,\n        groupLimit: group_limit,\n        adminUser: admin_user,\n        adminUserId: admin_user_id,\n        groupName: group_name,\n        assistant,\n        workFlows,\n        skill } = data;\n    // const {resourceId, groupId, resourceLimit} = assistant\n\n    return await axios.post(`/api/group/save`, {\n        id,\n        group_limit,\n        admin_user,\n        admin_user_id,\n        group_name,\n        assistant,\n        skill,\n        work_flows: workFlows\n    });\n};\n\n// 用户组列表\nexport function getUserGroupsProApi() {\n    return axios.get(`/api/group/list`);\n}\n\n// GET sso URL\nexport function getSSOurlApi() {\n    // return Promise.resolve(url)\n    return axios.get(`/api/oauth2/list`)\n}\n\nexport async function getKeyApi() {\n    return await axios.get('/api/getkey')\n}\n\nexport async function ldapLoginApi(username:string, password:string) {\n    return await axios.post('/api/oauth2/ldap', {\n        username,\n        password\n    })\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/tools.ts",
    "content": "import axios from \"../request\";\n\nexport interface AssistantItemDB {\n    create_time: string;\n    desc: string;\n    id: string;\n    logo?: string;\n    name: string;\n    update_time: string;\n    user_id: number;\n    user_name: string;\n    status: number;\n}\n\n/**\n * 创建工具接口\n * POST请求\n * @returns Promise<any> 创建工具的结果\n */\nexport const createTool = async (data: any): Promise<any> => {\n    return await axios.post(`/api/v1/tool`, data);\n};\n\nexport const getToolsApi = async (type: 'all' | 'default' | 'custom' | 'mcp'): Promise<any> => {\n    const queryStr = {\n        all: '',\n        default: '?is_preset=1',\n        custom: '?is_preset=0',\n        mcp: '?is_preset=2'\n    }\n    return await axios.get(`/api/v1/tool${queryStr[type]}`)\n};\n/**\n * 修改工具接口\n * PUT请求\n * @param toolId string 工具的ID\n * @returns Promise<any> 修改工具的结果\n */\nexport const updateTool = async (data: any): Promise<any> => {\n    return await axios.put(`/api/v1/tool`, data);\n};\n\n/**\n * 删除工具接口\n * DELETE请求\n * @returns Promise<any> 删除工具的结果\n */\nexport const deleteTool = async (id: number): Promise<any> => {\n    return await axios({\n        method: 'delete',\n        url: '/api/v1/tool',\n        data: {\n            tool_type_id: id\n        }\n    })\n};\n\n// 修改内置工具配置\nexport const updateToolApi = async (tool_id, extra) => {\n    return await axios.post(`/api/v1/tool/config`, { tool_id, extra })\n}\n\n/**\n * 下载或解析tool schema的内容接口\n * POST请求\n * download_url string \n * file_content string\n * @returns Promise<any> 下载或解析tool schema的结果\n */\nexport const downloadToolSchema = async (data: { download_url: string } | { file_content: string }): Promise<any> => {\n    return await axios.post(`/api/v1/tool/schema`, data);\n};\n\n/**\n * 解析mcp服务器配置接口\n */\nlet getMcpServeByConfigController: AbortController | null = null;\nexport const getMcpServeByConfig = async (data: { file_content: string }): Promise<any> => {\n    if (getMcpServeByConfigController) {\n        getMcpServeByConfigController.abort();\n    }\n    getMcpServeByConfigController = new AbortController();\n    const promise = await axios.post(`/api/v1/tool/mcp/schema`, data, {\n        signal: getMcpServeByConfigController.signal, // cancel abort\n    });\n    getMcpServeByConfigController = null;\n    return promise;\n}\n\n/**\n * mcp测试接口\n */\nexport const testMcpApi = async (data: { file_content: string }) => {\n    return await axios({\n        method: 'post',\n        url: '/api/v1/tool/mcp/test',\n        data\n    })\n}\n\n\n/**\n * 工具测试接口\n * @returns \n */\nexport const testToolApi = async (data: {\n    server_host: string\n    extra: string\n    auth_method: number\n    auth_type: string\n    api_key: string\n    request_params: Object\n    api_location: string\n    parameter_name: string\n}): Promise<any> => {\n    return await axios({\n        method: 'post',\n        url: '/api/v1/tool/test',\n        data\n    })\n};"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/user.ts",
    "content": "import { paramsSerializer } from \".\";\nimport { ROLE, User } from \"../../types/api/user\";\nimport axios from \"../request\";\n\n// 获取 key\nexport const getPublicKeyApi = async (): Promise<{ public_key: string }> => {\n  return await axios.get(`/api/v1/user/public_key`);\n};\n// 获取验证码\nexport const getCaptchaApi = (): Promise<any> => {\n  return axios.get(`/api/v1/user/get_captcha`);\n};\n\n// 校验登录\nexport async function getUserInfo(): Promise<User> {\n  return await axios.get(`/api/v1/user/info`);\n}\n// 退出登录\nexport async function logoutApi() {\n  return await axios.post(`/api/v1/user/logout`);\n}\n// 登录\nexport async function loginApi(name, pwd, captcha_key?, captcha?) {\n  return await axios.post(`/api/v1/user/login`, {\n    user_name: name,\n    password: pwd,\n    captcha_key,\n    captcha,\n  });\n}\n// 注册\nexport async function registerApi(name, pwd, captcha_key?, captcha?) {\n  return await axios.post(`/api/v1/user/regist`, {\n    user_name: name,\n    password: pwd,\n    captcha_key,\n    captcha,\n  });\n}\n// 用户列表\nexport async function getUsersApi({ name = '', page, pageSize, groupId, roleId }: {\n  name: string,\n  page: number,\n  pageSize: number,\n  groupId?: number[],\n  roleId?: number[]\n},\n  config?: { signal?: AbortSignal }): Promise<{ data: User[]; total: number }> {\n\n  return await axios.get(\n    `/api/v1/user/list`,\n    {\n      params: {\n        name,\n        page_num: page,\n        page_size: pageSize,\n        group_id: groupId,\n        role_id: roleId,\n      },\n      paramsSerializer,\n      signal: config?.signal, // 绑定 AbortSignal\n    }\n  );\n}\n\n// 标注任务下用户列表\nexport async function getLabelUsersApi(taskId: number): Promise<{ data: User[]; total: number }> {\n  return await axios.get(\n    `/api/v1/mark/get_user?task_id=${taskId}`\n  );\n}\n\n// 修改用户状态（启\\禁用）\nexport async function disableUserApi(userid, status) {\n  return await axios.post(`/api/v1/user/update`, {\n    user_id: userid,\n    delete: status,\n  });\n}\n// 角色列表\nexport async function getRolesApi(searchkey = \"\"): Promise<{ data: ROLE[] }> {\n  return await axios.get(`/api/v1/role/list?role_name=${searchkey}`)\n    .then(res => res.data);\n}\n// 用户组下角色列表\nexport async function getRolesByGroupApi(searchkey = \"\", groupIds: any[]): Promise<{ data: ROLE[] }> {\n  const groupStr = groupIds?.reduce((pre, id) => `${pre}&group_id=${id}`, '') || ''\n  return await axios.get(`/api/v1/group/roles?keyword=${searchkey}${groupStr}`)\n    .then(res => res.data);\n}\n/**\n * 获取配置\n */\nexport async function getSysConfigApi(): Promise<string> {\n  return await axios.get(`/api/v1/config`);\n}\n/**\n * 更新配置\n */\nexport async function setSysConfigApi(data) {\n  return await axios.post(`/api/v1/config/save`, data);\n}\n/**\n * 根据角色获取技能列表\n */\nexport async function getRoleSkillsApi(\n  params\n): Promise<{ data: any[]; total: number }> {\n  return await axios.get(`/api/v1/role_access/flow`, { params });\n}\n/**\n * 根据角色获取技能列表\n */\nexport async function getRoleAssistApi(\n  params\n): Promise<{ data: any[]; total: number }> {\n  return await axios.get(`/api/v1/role_access/list_type`, { params });\n}\n/**\n * 根据角色获取知识库列表\n */\nexport async function getRoleLibsApi(\n  params\n): Promise<{ data: any[]; total: number }> {\n  return await axios.get(`/api/v1/role_access/knowledge`, { params });\n}\n/**\n * 根据用户组获取资源列表\n */\nexport async function getGroupResourcesApi(\n  params: {\n    group_id: string,\n    resource_type: number,\n    name: string,\n    page_size: number,\n    page_num: number\n  }\n): Promise<{ data: any[]; total: number }> {\n  return await axios.get(`/api/v1/group/get_group_resources`, { params });\n}\n/**\n * 新增角色\n */\nexport async function createRole(groupId, name) {\n  return await axios.post(`/api/v1/role/add`, {\n    group_id: groupId,\n    role_name: name,\n    remark: \"手动创建用户\",\n  });\n}\n/**\n * 更新角色权限\n */\nenum ACCESS_TYPE {\n  USE_LIB = 1,\n  USE_SKILL,\n  MANAGE_LIB,\n  ASSISTANT = 5,\n  TOOL = 4,\n  MENU = 99\n}\nexport async function updateRolePermissionsApi(data: {\n  role_id: number;\n  access_id: number[];\n  type: ACCESS_TYPE;\n}) {\n  return await axios.post(`/api/v1/role_access/refresh`, data);\n}\n\n/**\n * 获取角色下的权限\n */\nexport async function getRolePermissionsApi(\n  roleId\n): Promise<{ data: any[]; total: number }> {\n  const params = { role_id: roleId, page_size: 200, page_num: 1 };\n  return axios.get(`/api/v1/role_access/list`, { params });\n  // return Promise.all([\n  //     axios.get(url, { params: { ...params, type: 1 } }),\n  //     axios.get(url, { params: { ...params, type: 2 } }),\n  //     axios.get(url, { params: { ...params, type: 3 } })\n  // ])\n}\n\n/**\n * 更新角色基本信息\n */\nexport async function updateRoleNameApi(roleId, name) {\n  return axios.patch(`/api/v1/role/${roleId}`, {\n    role_name: name,\n    remark: \"手动创建用户\",\n  });\n}\n\n/**\n * 删除角色\n */\nexport async function delRoleApi(roleId) {\n  return axios.delete(`/api/v1/role/${roleId}`);\n}\n\n// 用户组列表\nexport function getUserGroupsApi(config) {\n  return axios.get(`/api/v1/group/list`, {\n    signal: config?.signal, // 绑定 AbortSignal\n  });\n}\n\n\n// 删除用户组post\nexport function delUserGroupApi(group_id) {\n  return axios.delete(`/api/v1/group/create`, { params: { group_id } });\n  // return axios.post(`/api/v1/group/del/${userGroupId}`);\n}\n\n// 保存用户组\nexport function saveUserGroup(form, selected) {\n  console.log('form :>> ', form);\n  const { groupName: group_name } = form\n  return axios.post(`/api/v1/group/create`, {\n    group_name,\n    group_admins: selected.map(item => item.value),\n  });\n}\n\n// 修改用户组\nexport function updateUserGroup(id, form, selected) {\n  const { groupName: group_name } = form\n  const a = axios.put(`/api/v1/group/create`, {\n    id,\n    group_name\n  });\n  const b = axios.post(`/api/v1/group/set_group_admin`, {\n    group_id: id,\n    user_ids: selected.map(item => item.value)\n  })\n  return Promise.all([a, b])\n}\n\n\n/**\n * 获取用户的角色信息\n */\nexport async function getUserRoles(userId): Promise<ROLE[]> {\n  return axios.get(`/api/v1/user/role?user_id=${userId}`);\n}\n\n/**\n * 更新用户角色\n */\nexport async function updateUserRoles(userId, roles) {\n  return await axios.post(`/api/v1/user/role_add`, {\n    user_id: userId,\n    role_id: roles,\n  });\n}\n// 更新用户组\nexport async function updateUserGroups(userId, groupIds) {\n  return await axios.post(`/api/v1/group/set_user_group`, {\n    user_id: userId,\n    group_id: groupIds,\n    is_group_admin: false\n  });\n}\n\n// 超管创建用户组\nexport async function createUserApi(user_name: string, password: string, group_roles: any[]) {\n  return await axios.post('/api/v1/user/create', {\n    user_name,\n    password,\n    group_roles\n  })\n}\n\n/**\n * 获取所有管理员\n */\nexport async function getAdminsApi(): Promise<any> {\n  return axios.get(`/api/v1/user/admin`);\n}\n\n\n/**\n * 重置密码（管理员专用）\n */\nexport async function resetPasswordApi(userId, password): Promise<any> {\n  return axios.post(`/api/v1/user/reset_password`, {\n    user_id: userId,\n    password\n  });\n}\n\n/**\n * 密码过期重置个人密码\n */\nexport async function changePasswordApi(userName, password, new_password): Promise<any> {\n  return axios.post(`/api/v1/user/change_password_public`, {\n    username: userName,\n    password,\n    new_password\n  });\n}\n\n// 已登录状态重置个人密码\nexport async function loggedChangePasswordApi(password, new_password): Promise<any> {\n  return axios.post(`/api/v1/user/change_password`, {\n    password,\n    new_password\n  })\n}"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/workbench.ts",
    "content": "import axios from \"../request\";\n\nexport type SpeechToTextResponse = {\n    text: string;\n};\n\nexport type TextToSpeechResponse = {\n    audio: string;\n};\n\n// 语音转文字\nexport const speechToText = (data: FormData, version: string): Promise<SpeechToTextResponse> => {\n    return axios.post(`/api/${version}/llm/workbench/asr`, data);\n}\n\n// 文字转语音\n// export const textToSpeech = (text: string, version: string): Promise<TextToSpeechResponse> => {\n//     // 对中文文本进行 URL 编码，确保参数传递正确\n//     const encodedText = encodeURIComponent(text);\n//     return axios.get(`/api/${version}/llm/workbench/tts?text=${encodedText}`);\n//   };\n  export const textToSpeech = (text: string, version: string): Promise<TextToSpeechResponse> => {\n    return axios.post(`/api/${version}/llm/workbench/tts`, {\n      text: text\n    });\n  };\n\n"
  },
  {
    "path": "src/frontend/platform/src/controllers/API/workflow.ts",
    "content": "import { WorkFlow } from \"@/types/flow\";\nimport axios from \"../request\";\n\n/**\n * 获取工作流节点模板s\n */\nexport const getWorkflowNodeTemplate = async (): Promise<any[]> => {\n    return new Promise(res => setTimeout(() => {\n        res(workflowTemplate)\n    }, 100));\n}\n\n/**\n * 获取某工作流报告模板信息\n */\nexport const getWorkflowReportTemplate = async (key: string, flowId: string): Promise<any> => {\n    return await axios.get(`/api/v1/workflow/report/file?version_key=${key}&workflow_id=${flowId}`);\n}\n\n/**\n * 创建工作流\n */\nexport const createWorkflowApi = async (name, desc, url, flow): Promise<any> => {\n    if (url) {\n        // logo保存相对路径\n        url = url.replace('/bisheng', '')\n    }\n    const data = flow || {}\n    return await axios.post(\"/api/v1/workflow/create\", {\n        ...data,\n        name,\n        description: desc,\n        logo: url\n    });\n}\n\n/**\n * 保存工作流\n */\nexport const saveWorkflow = async (versionId: number, data: WorkFlow): Promise<any> => {\n    if (data.logo) {\n        // logo保存相对路径\n        data.logo = data.logo.replace(/^\\/\\w+/, '')\n    }\n    return await axios.put(`/api/v1/workflow/versions/${versionId}`, data);\n}\n\n\n\n/**\n * 删除版本.\n *\n * @param {string} versionId - 要删除的版本ID.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function deleteVersion(versionId: string) {\n    return await axios.delete(`/api/v1/workflow/versions/${versionId}`);\n}\n\n/**\n * 创建新的工作流版本.\n *\n * @param {object} versionData - 新版本的数据.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function createWorkFlowVersion(flow_id, versionData: { name: string, description: string, original_version_id: number, data: any }) {\n    return await axios.post(`/api/v1/workflow/versions?flow_id=${flow_id}`, versionData);\n}\n\n/**\n * 获取单个版本的信息.\n *\n * @param {string} versionId - 版本的ID.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function getVersionDetails(versionId: string) {\n    return await axios.get(`/api/v1/workflow/versions/${versionId}`);\n}\n\n/**\n * 更新版本信息.\n *\n * @param {string} versionId - 要更新的版本ID.\n * @param {object} versionData - 更新的版本数据.\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function updateVersion(versionId: string, versionData: { name: string, description: string, data: any }) {\n    return await axios.put(`/api/v1/workflow/versions/${versionId}`, versionData);\n}\n\n/**\n * 获取工作流对应的版本列表.\n *\n * @returns {Promise<any>}.\n * @throws .\n */\nexport async function getWorkFlowVersions(flow_id): Promise<{ data: any[], total: number }> {\n    return await axios.get(`/api/v1/workflow/versions`, {\n        params: { flow_id }\n    });\n}\n\n\n/** 上线工作流 & 修改信息 \n * status: 2 上线 1 下线\n*/\nexport const onlineWorkflow = async (flow, status = ''): Promise<any> => {\n    const { name, description, logo } = flow\n    const data = { name, description, logo }\n    if (status) {\n        data['status'] = status\n        delete data['logo']\n    }\n    return await axios.patch(`/api/v1/workflow/update/${flow.id}`, data);\n}\n\n/**\n * 上线指定版本工作流\n */\nexport const onlineWorkflowApi = async (data: { flow_id, version_id, status }) => {\n    return await axios.patch(`/api/v1/workflow/status`, data);\n};\n\n/**\n * 单节点运行\n * \n */\nexport const runWorkflowNodeApi = async ({ node_input, data, workflow_id }): Promise<any> => {\n    return await axios.post(`/api/v1/workflow/run_once`, {\n        node_input,\n        workflow_id,\n        node_data: {\n            id: data.id,\n            data,\n        }\n    });\n}\n\n/**\n * 复制报告模板\n */\nexport const copyReportTemplate = async (nodeData): Promise<any> => {\n    // console.log('nodeData :>> ', nodeData);\n    if (nodeData.type === 'report') {\n        const { version_key } = nodeData.group_params[0].params[0].value\n        if (version_key) {\n            return axios.post(`/api/v1/workflow/report/copy`, {\n                version_key\n            }).then(res => {\n                nodeData.group_params[0].params[0].value.version_key = res.version_key\n                console.warn('REPORT:使用旧KEY :>> ', version_key);\n                console.warn('REPORT:获取新KEY :>> ', res.version_key);\n            })\n        }\n    }\n    return Promise.resolve('ok')\n}\n\n/**\n * 工作流节点模板\n */\nconst workflowTemplate = [\n    {\n        \"id\": \"start_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"start\",\n        \"v\": \"3\",\n        \"group_params\": [\n            {\n                \"name\": \"开场引导\",\n                \"params\": [\n                    {\n                        \"key\": \"guide_word\",\n                        \"label\": \"true\",\n                        \"value\": \"\",\n                        \"type\": \"textarea\",\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"guide_question\",\n                        \"label\": \"true\",\n                        \"value\": [],\n                        \"type\": \"input_list\",\n                        \"placeholder\": \"true\",\n                        \"help\": \"true\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"全局变量\",\n                \"params\": [\n                    {\n                        \"key\": \"user_info\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"value\": \"\",\n                    },\n                    {\n                        \"key\": \"current_time\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"value\": \"\"\n                    },\n                    {\n                        \"key\": \"chat_history\",\n                        \"global\": \"key\",\n                        \"type\": \"chat_history_num\",\n                        \"value\": 10\n                    },\n                    {\n                        \"key\": \"preset_question\",\n                        \"label\": \"true\",\n                        \"global\": \"item:input_list\",\n                        \"type\": \"input_list\",\n                        \"value\": [],\n                        \"placeholder\": \"true\",\n                        \"help\": \"true\"\n                    },\n                    {\n                        \"key\": \"custom_variables\",\n                        \"label\": \"true\",\n                        \"global\": \"item:input_list\",\n                        \"type\": \"global_var\",\n                        \"value\": [],\n                        \"help\": \"true\"\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"input_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"input\",\n        \"v\": \"3\",\n        \"tab\": {\n            \"value\": \"dialog_input\",\n            \"options\": [\n                {\n                    \"label\": \"true\",\n                    \"key\": \"dialog_input\",\n                    \"help\": \"true\"\n                },\n                {\n                    \"label\": \"true\",\n                    \"key\": \"form_input\",\n                    \"help\": \"true\"\n                }\n            ]\n        },\n        \"group_params\": [\n            {\n                \"name\": \"接收文本\",\n                \"params\": [\n                    {\n                        \"key\": \"user_input\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"tab\": \"dialog_input\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"\",\n                \"groupKey\": \"inputfile\",\n                \"params\": [\n                    {\n                        \"groupTitle\": true,\n                        \"key\": \"user_input_file\",\n                        \"tab\": \"dialog_input\",\n                        \"value\": true\n                    },\n                    {\n                        \"key\": \"file_parse_mode\",\n                        \"type\": \"select_parsemode\",\n                        \"tab\": \"dialog_input\",\n                        \"value\": \"extract_text\"\n                    },\n                    {\n                        \"key\": \"dialog_files_content\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"tab\": \"dialog_input\"\n                    },\n                    {\n                        \"key\": \"dialog_files_content_size\",\n                        \"label\": \"true\",\n                        \"type\": \"char_number\",\n                        \"min\": 0,\n                        \"value\": 15000,\n                        \"tab\": \"dialog_input\"\n                    },\n                    {\n                        \"key\": \"dialog_file_accept\",\n                        \"label\": \"true\",\n                        \"type\": \"select_fileaccept\",\n                        \"value\": \"all\",\n                        \"tab\": \"dialog_input\"\n                    },\n                    {\n                        \"key\": \"dialog_image_files\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"tab\": \"dialog_input\",\n                        \"help\": \"true\"\n                    },\n                    {\n                        \"key\": \"dialog_file_paths\",\n                        \"global\": \"key\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"tab\": \"dialog_input\",\n                        \"help\": \"true\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"\",\n                \"groupKey\": \"custom\",\n                \"params\": [\n                    {\n                        \"groupTitle\": true,\n                        \"key\": \"recommended_questions_flag\",\n                        \"label\": \"true\",\n                        \"hidden\": \"true\",\n                        \"tab\": \"dialog_input\",\n                        \"help\": \"true\",\n                        \"value\": false\n                    },\n                    {\n                        \"key\": \"recommended_llm\",\n                        \"label\": \"true\",\n                        \"type\": \"bisheng_model\",\n                        \"tab\": \"dialog_input\",\n                        \"value\": \"\",\n                        \"placeholder\": \"true\",\n                        \"required\": true,\n                    },\n                    {\n                        \"key\": \"recommended_system_prompt\",\n                        \"label\": \"true\",\n                        \"tab\": \"dialog_input\",\n                        \"type\": \"var_textarea\",\n                        \"value\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"recommended_history_num\",\n                        \"label\": \"true\",\n                        \"type\": \"slide\",\n                        \"tab\": \"dialog_input\",\n                        \"help\": \"true\",\n                        \"scope\": [\n                            1,\n                            10\n                        ],\n                        \"step\": 1,\n                        \"value\": 2\n                    }\n                ]\n            },\n            {\n                \"name\": \"\",\n                \"params\": [\n                    {\n                        \"key\": \"form_input\",\n                        \"global\": \"item:form_input\",\n                        \"label\": \"true\",\n                        \"type\": \"form\",\n                        \"tab\": \"form_input\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"output_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"output\",\n        \"v\": \"2\",\n        \"group_params\": [\n            {\n                \"params\": [\n                    {\n                        \"key\": \"message\",\n                        \"label\": \"true\",\n                        \"global\": \"key\",\n                        \"type\": \"var_textarea_file\",\n                        \"required\": true,\n                        \"placeholder\": \"true\",\n                        \"value\": {\n                            \"msg\": \"\",\n                            \"files\": []\n                        }\n                    },\n                    {\n                        \"key\": \"output_result\",\n                        \"label\": \"true\",\n                        \"global\": \"value.type=input\",\n                        \"type\": \"output_form\",\n                        \"required\": true,\n                        \"value\": {\n                            \"type\": \"\",\n                            \"value\": \"\"\n                        },\n                        \"options\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"llm_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"llm\",\n        \"v\": \"2\",\n        \"tab\": {\n            \"value\": \"single\",\n            \"options\": [\n                {\n                    \"label\": \"true\",\n                    \"key\": \"single\"\n                },\n                {\n                    \"label\": \"true\",\n                    \"key\": \"batch\"\n                }\n            ]\n        },\n        \"group_params\": [\n            {\n                \"params\": [\n                    {\n                        \"key\": \"batch_variable\",\n                        \"label\": \"true\",\n                        \"global\": \"self\",\n                        \"type\": \"user_question\",\n                        \"test\": \"var\",\n                        \"value\": [],\n                        \"required\": true,\n                        \"linkage\": \"output\",\n                        \"placeholder\": \"true\",\n                        \"help\": \"true\",\n                        \"tab\": \"batch\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"模型设置\",\n                \"params\": [\n                    {\n                        \"key\": \"model_id\",\n                        \"label\": \"true\",\n                        \"type\": \"bisheng_model\",\n                        \"value\": \"\",\n                        \"required\": true,\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"temperature\",\n                        \"label\": \"true\",\n                        \"type\": \"slide\",\n                        \"scope\": [\n                            0,\n                            2\n                        ],\n                        \"step\": 0.1,\n                        \"value\": 0.7\n                    }\n                ]\n            },\n            {\n                \"name\": \"提示词\",\n                \"params\": [\n                    {\n                        \"key\": \"system_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"test\": \"var\",\n                        \"value\": \"\"\n                    },\n                    {\n                        \"key\": \"user_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"test\": \"var\",\n                        \"value\": \"\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"image_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"image_prompt\",\n                        \"value\": [],\n                        \"help\": \"true\"\n                    },\n                ]\n            },\n            {\n                \"name\": \"输出\",\n                \"params\": [\n                    {\n                        \"key\": \"output_user\",\n                        \"label\": \"true\",\n                        \"type\": \"switch\",\n                        \"help\": \"true\",\n                        \"value\": true\n                    },\n                    {\n                        \"key\": \"output\",\n                        \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\",\n                        \"label\": \"true\",\n                        \"help\": \"true\",\n                        \"type\": \"var\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"agent_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"agent\",\n        \"v\": \"2\",\n        \"tab\": {\n            \"value\": \"single\",\n            \"options\": [\n                {\n                    \"label\": \"true\",\n                    \"key\": \"single\"\n                },\n                {\n                    \"label\": \"true\",\n                    \"key\": \"batch\"\n                }\n            ]\n        },\n        \"group_params\": [\n            {\n                \"params\": [\n                    {\n                        \"key\": \"batch_variable\",\n                        \"label\": \"true\",\n                        \"required\": true,\n                        \"type\": \"user_question\",\n                        \"test\": \"var\",\n                        \"global\": \"self\",\n                        \"value\": [],\n                        \"linkage\": \"output\",\n                        \"placeholder\": \"true\",\n                        \"tab\": \"batch\",\n                        \"help\": \"true\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"模型设置\",\n                \"params\": [\n                    {\n                        \"key\": \"model_id\",\n                        \"label\": \"true\",\n                        \"type\": \"agent_model\",\n                        \"required\": true,\n                        \"value\": \"\",\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"temperature\",\n                        \"label\": \"true\",\n                        \"type\": \"slide\",\n                        \"scope\": [\n                            0,\n                            2\n                        ],\n                        \"step\": 0.1,\n                        \"value\": 0.7\n                    }\n                ]\n            },\n            {\n                \"name\": \"提示词\",\n                \"params\": [\n                    {\n                        \"key\": \"system_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"test\": \"var\",\n                        \"value\": \"true\",\n                        \"placeholder\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"user_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"test\": \"var\",\n                        \"value\": \"\",\n                        \"placeholder\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"chat_history_flag\",\n                        \"label\": \"true\",\n                        \"type\": \"slide_switch\",\n                        \"scope\": [\n                            0,\n                            100\n                        ],\n                        \"step\": 1,\n                        \"value\": {\n                            \"flag\": true,\n                            \"value\": 50\n                        },\n                        \"help\": \"true\"\n                    },\n                    {\n                        \"key\": \"image_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"image_prompt\",\n                        \"value\": \"\",\n                        \"help\": \"true\"\n                    },\n                ]\n            },\n            {\n                \"name\": \"知识库\",\n                \"params\": [\n                    {\n                        \"key\": \"knowledge_id\",\n                        \"label\": \"true\",\n                        \"type\": \"knowledge_select_multi\",\n                        \"placeholder\": \"true\",\n                        \"value\": {\n                            \"type\": \"knowledge\",\n                            \"value\": []\n                        }\n                    }\n                ]\n            },\n            {\n                \"name\": \"数据库\",\n                \"params\": [\n                    {\n                        \"key\": \"sql_agent\",\n                        \"type\": \"sql_config\",\n                        \"value\": {\n                            \"open\": false,\n                            \"db_address\": \"\",\n                            \"db_name\": \"\",\n                            \"db_username\": \"\",\n                            \"db_password\": \"\"\n                        }\n                    }\n                ]\n            },\n            {\n                \"name\": \"工具\",\n                \"params\": [\n                    {\n                        \"key\": \"tool_list\",\n                        \"label\": \"true\",\n                        \"type\": \"add_tool\",\n                        \"value\": []\n                    }\n                ]\n            },\n            {\n                \"name\": \"输出\",\n                \"params\": [\n                    {\n                        \"key\": \"output_user\",\n                        \"label\": \"true\",\n                        \"type\": \"switch\",\n                        \"help\": \"true\",\n                        \"value\": true\n                    },\n                    {\n                        \"key\": \"output\",\n                        \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"help\": \"true\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"qa_retriever_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"qa_retriever\",\n        \"v\": \"1\",\n        \"group_params\": [\n            {\n                \"name\": \"检索设置\",\n                \"params\": [\n                    {\n                        \"key\": \"user_question\",\n                        \"label\": \"true\",\n                        \"type\": \"var_select\",\n                        \"test\": \"var\",\n                        \"value\": \"\",\n                        \"required\": true,\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"qa_knowledge_id\",\n                        \"label\": \"true\",\n                        \"type\": \"qa_select_multi\",\n                        \"value\": [],\n                        \"required\": true,\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"score\",\n                        \"label\": \"true\",\n                        \"type\": \"slide\",\n                        \"value\": 0.8,\n                        \"scope\": [\n                            0.01,\n                            0.99\n                        ],\n                        \"step\": 0.01,\n                        \"help\": \"true\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"输出\",\n                \"params\": [\n                    {\n                        \"key\": \"retrieved_result\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"global\": \"key\",\n                        \"value\": \"\"\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"rag_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"rag\",\n        \"v\": \"2\",\n        \"group_params\": [\n            {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                    {\n                        \"key\": \"user_question\",\n                        \"label\": \"true\",\n                        \"global\": \"self=user_prompt\",\n                        \"type\": \"user_question\",\n                        \"test\": \"var\",\n                        \"help\": \"true\",\n                        \"linkage\": \"output_user_input\",\n                        \"value\": [],\n                        \"placeholder\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"knowledge\",\n                        \"label\": \"true\",\n                        \"type\": \"knowledge_select_multi\",\n                        \"placeholder\": \"true\",\n                        \"value\": {\n                            \"type\": \"knowledge\",\n                            \"value\": []\n                        },\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"metadata_filter\",\n                        \"label\": \"true\",\n                        \"type\": \"metadata_filter\",\n                        \"value\": {},\n                    },\n                    {\n                        \"key\": \"advanced_retrieval_switch\",\n                        \"label\": \"true\",\n                        \"type\": \"search_switch\",\n                        \"value\": {},\n                    },\n                    {\n                        \"key\": \"retrieved_result\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"global\": \"self=user_prompt\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"AI回复生成设置\",\n                \"params\": [\n                    {\n                        \"key\": \"system_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"value\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"user_prompt\",\n                        \"label\": \"true\",\n                        \"type\": \"var_textarea\",\n                        \"value\": \"true\",\n                        \"test\": \"var\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"model_id\",\n                        \"label\": \"true\",\n                        \"type\": \"bisheng_model\",\n                        \"value\": \"\",\n                        \"required\": true,\n                        \"placeholder\": \"true\"\n                    },\n                    {\n                        \"key\": \"temperature\",\n                        \"label\": \"true\",\n                        \"type\": \"slide\",\n                        \"scope\": [\n                            0,\n                            2\n                        ],\n                        \"step\": 0.1,\n                        \"value\": 0.7\n                    }\n                ]\n            },\n            {\n                \"name\": \"输出\",\n                \"params\": [\n                    {\n                        \"key\": \"output_user\",\n                        \"label\": \"true\",\n                        \"type\": \"switch\",\n                        \"value\": true,\n                        \"help\": \"true\"\n                    },\n                    {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"help\": \"true\",\n                        \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"knowledge_retriever_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"knowledge_retriever\",\n        \"v\": \"1\",\n        \"group_params\": [\n            {\n                \"name\": \"知识库检索设置\",\n                \"params\": [\n                    {\n                        \"key\": \"user_question\",\n                        \"label\": \"true\",\n                        \"global\": \"self=user_prompt\",\n                        \"type\": \"user_question\",\n                        \"test\": \"var\",\n                        \"help\": \"true\",\n                        \"linkage\": \"retrieved_result\",\n                        \"value\": [],\n                        \"placeholder\": \"true\",\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"knowledge\",\n                        \"label\": \"true\",\n                        \"type\": \"knowledge_select_multi\",\n                        \"placeholder\": \"true\",\n                        \"value\": {\n                            \"type\": \"knowledge\",\n                            \"value\": []\n                        },\n                        \"required\": true\n                    },\n                    {\n                        \"key\": \"metadata_filter\",\n                        \"label\": \"true\",\n                        \"type\": \"metadata_filter\",\n                        \"value\": {},\n                    },\n                    {\n                        \"key\": \"advanced_retrieval_switch\",\n                        \"label\": \"true\",\n                        \"type\": \"search_switch\",\n                        \"value\": {},\n                    },\n                ]\n            },\n            {\n                \"name\": \"输出\",\n                \"params\": [\n                    {\n                        \"key\": \"retrieved_result\",\n                        \"label\": \"true\",\n                        \"type\": \"var\",\n                        \"global\": \"code:value.map(el => ({ label: el.label, value: el.key }))\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"report_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"report\",\n        \"v\": \"1\",\n        \"group_params\": [\n            {\n                \"params\": [\n                    {\n                        \"key\": \"report_info\",\n                        \"label\": \"true\",\n                        \"placeholder\": \"true\",\n                        \"required\": true,\n                        \"type\": \"report\",\n                        \"value\": {}\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"code_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"code\",\n        \"v\": \"1\",\n        \"group_params\": [\n            {\n                \"name\": \"入参\",\n                \"params\": [\n                    {\n                        \"key\": \"code_input\",\n                        \"type\": \"code_input\",\n                        \"test\": \"input\",\n                        \"required\": true,\n                        \"value\": [\n                            {\n                                \"key\": \"arg1\",\n                                \"type\": \"input\",\n                                \"label\": \"\",\n                                \"value\": \"\"\n                            },\n                            {\n                                \"key\": \"arg2\",\n                                \"type\": \"input\",\n                                \"label\": \"\",\n                                \"value\": \"\"\n                            }\n                        ]\n                    }\n                ]\n            },\n            {\n                \"name\": \"执行代码\",\n                \"params\": [\n                    {\n                        \"key\": \"code\",\n                        \"type\": \"code\",\n                        \"required\": true,\n                        \"value\": \"def main(arg1: str, arg2: str) -> dict: \\n    return {'result1': arg1, 'result2': arg2}\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"出参\",\n                \"params\": [\n                    {\n                        \"key\": \"code_output\",\n                        \"type\": \"code_output\",\n                        \"global\": \"code:value.map(el => ({ label: el.key, value: el.key }))\",\n                        \"required\": true,\n                        \"value\": [\n                            {\n                                \"key\": \"result1\",\n                                \"type\": \"str\"\n                            },\n                            {\n                                \"key\": \"result2\",\n                                \"type\": \"str\"\n                            }\n                        ]\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"condition_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"condition\",\n        \"v\": \"1\",\n        \"group_params\": [\n            {\n                \"params\": [\n                    {\n                        \"key\": \"condition\",\n                        \"label\": \"\",\n                        \"type\": \"condition\",\n                        \"value\": []\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"end_xxx\",\n        \"name\": \"true\",\n        \"description\": \"true\",\n        \"type\": \"end\",\n        \"v\": \"1\",\n        \"group_params\": []\n    },\n]\n"
  },
  {
    "path": "src/frontend/platform/src/controllers/hooks/knowledge.ts",
    "content": "import { useState, useEffect } from 'react';\nimport { getKnowledgeDetailApi } from '../API';\n\n/**\n * 获取知识库详情的自定义 Hook\n * @param {string[]} [knowledgeIds] - 知识库 ID 数组（可选）\n * @returns {[Array, Function]} - 返回 [知识库详情数据, 手动请求函数]\n */\nexport const useKnowledgeDetails = (knowledgeIds) => {\n    const [details, setDetails] = useState([]);\n\n    // 请求知识库详情的函数\n    const fetchDetails = async (ids) => {\n        if (!ids?.length) return;\n        try {\n            const res = await getKnowledgeDetailApi(ids);\n            setDetails(res);\n        } catch (error) {\n            console.error('获取知识库详情失败:', error);\n            setDetails([]); // 失败时清空数据\n        }\n    };\n\n    // 自动请求（当 knowledgeIds 变化时）\n    useEffect(() => {\n        fetchDetails(knowledgeIds);\n    }, []);\n\n    return [details, fetchDetails];\n};"
  },
  {
    "path": "src/frontend/platform/src/controllers/hooks/useSopManagement.ts",
    "content": "// hooks/useSopManagement.ts\nimport { useState, useEffect, useCallback } from 'react';\nimport { sopApi } from \"@/controllers/API/linsight\"\nimport { toast } from '@/components/bs-ui/toast/use-toast';\n\nexport const useSopManagement = () => {\n  const [keywords, setKeywords] = useState('');\n  const [datalist, setDatalist] = useState([]);\n  const [total, setTotal] = useState(1);\n  const [loading, setLoading] = useState(false);\n  const [page, setPage] = useState(1);\n  const [pageSize] = useState(10);\n  const [selectedItems, setSelectedItems] = useState([]);\n  const [sortConfig, setSortConfig] = useState({ key: null, direction: 'asc' });\n  const [isBatchDeleteModalOpen, setIsBatchDeleteModalOpen] = useState(false);\n  const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n  const [isEditing, setIsEditing] = useState(false);\n  const [currentSopId, setCurrentSopId] = useState(null);\n  const [sopForm, setSopForm] = useState({\n    id: '',\n    name: '',\n    description: '',\n    content: '',\n    rating: 0\n  });\n\n  const fetchData = useCallback(async (params = {}) => {\n    setLoading(true);\n    try {\n      const res = await sopApi.getSopList({\n        page_size: params.pageSize || pageSize,\n        page: params.page || page,\n        keywords: params.keyword || keywords\n      });\n      \n      setDatalist(res.items || []);\n      const hasItems = res.items && res.items.length > 0;\n      const calculatedTotal = hasItems ? Math.max(res.total || 0, (params.page || page) * pageSize) : 0;\n      setTotal(calculatedTotal);\n    } catch (error) {\n      console.error('请求失败:', error);\n      toast({ variant: 'error', description: '搜索失败，请稍后重试' });\n    } finally {\n      setLoading(false);\n    }\n  }, [keywords, page, pageSize]);\n\n  // 其他操作函数...\n\n  return {\n    keywords, setKeywords,\n    datalist, setDatalist,\n    total, setTotal,\n    loading, setLoading,\n    page, setPage,\n    pageSize,\n    selectedItems, setSelectedItems,\n    sortConfig, setSortConfig,\n    isBatchDeleteModalOpen, setIsBatchDeleteModalOpen,\n    isDrawerOpen, setIsDrawerOpen,\n    isEditing, setIsEditing,\n    currentSopId, setCurrentSopId,\n    sopForm, setSopForm,\n    fetchData,\n    // 其他返回的函数...\n  };\n};"
  },
  {
    "path": "src/frontend/platform/src/controllers/request.ts",
    "content": "import { toast } from \"@/components/bs-ui/toast/use-toast\";\nimport axios from \"axios\";\nimport i18next from \"i18next\";\naxios.defaults.withCredentials = true;\nconst customAxios = axios.create({\n    baseURL: import.meta.env.BASE_URL\n    // 配置\n});\nexport const requestInterceptor = {\n    remoteLoginFuc(msg) { }\n};\n\ncustomAxios.interceptors.request.use(function (config) {\n    const token = localStorage.getItem('ws_token');\n    if (token && !/^\\/bisheng/.test(config.url)) {\n        config.headers['Authorization'] = `Bearer ${token}`;\n    }\n    return config;\n}, function (error) {\n    return Promise.reject(error);\n});\n\ncustomAxios.interceptors.response.use(function (response) {\n    if (response.data instanceof Blob) return response.data;\n    if (response.data.status_code === 200) {\n        return response.data.data;\n    }\n    if (response.data.status_code === 11010) {\n        return response.data;\n    }\n    const i18Msg = i18next.t(`errors.${response.data.status_code}`, response.data.data)\n    const errorMessage = i18Msg === `errors.${response.data.status_code}` ? response.data.status_message : i18Msg\n\n    // 无权访问\n    if ([403, 404].includes(response.data.status_code) && response.config.url !== '/api/v1/user/info') {\n        // 修改不跳转\n        localStorage.setItem('noAccessUrl', response.request.responseURL)\n        if (response.config.method === 'get') {\n            location.href = __APP_ENV__.BASE_URL + '/' + response.data.status_code\n        }\n        return Promise.reject(errorMessage);\n    }\n    // 应用无编辑权限 (TODO业务状态码放行到具体业务中)\n    if ([10599, 17005].includes(response.data.status_code)) {\n        location.href = `${__APP_ENV__.BASE_URL}/build/apps?error=${response.data.status_code}`\n        return Promise.reject(errorMessage);\n    }\n    // 异地登录\n    if (response.data.status_code === 10604) {\n        requestInterceptor.remoteLoginFuc(response.data.status_message)\n        return Promise.reject(errorMessage);\n    }\n    return Promise.reject(errorMessage);\n}, function (error) {\n    console.error('application error :>> ', error);\n    if (error.response?.status === 401) {\n        // cookie expires\n        console.error('登录过期 :>> ');\n        const UUR_INFO = 'UUR_INFO'\n        const infoStr = localStorage.getItem(UUR_INFO)\n        localStorage.removeItem(UUR_INFO)\n        infoStr && location.reload()\n        return Promise.reject('登录过期,请重新登录');\n    }\n    if (error.code === \"ERR_CANCELED\") return Promise.reject(error);\n    // app 弹窗\n    toast({\n        title: `${i18next.t('prompt')}`,\n        variant: 'error',\n        description: error.message\n    })\n    // window.errorAlerts([error.message])\n    return Promise.reject(null);\n})\n\nexport default customAxios\n\n\n// 接口异常提示弹窗\nexport function captureAndAlertRequestErrorHoc(apiFunc, iocFunc?) {\n    return apiFunc.catch(error => {\n        if (error === null) return // app error\n        if (error?.code === \"ERR_CANCELED\") return 'canceled'\n\n        console.log('error :>> ', error);\n        iocFunc?.(error)\n        // 弹窗\n        toast({\n            title: `${i18next.t('prompt')}`,\n            variant: 'error',\n            description: typeof error === 'string' ? error : JSON.stringify(error)\n        })\n        console.error('逻辑异常 :>> ', error);\n        return false\n    })\n};\n"
  },
  {
    "path": "src/frontend/platform/src/flow_constants.tsx",
    "content": "/**\n * Default description for the flow\n * @constant\n */\nexport const DESCRIPTIONS: string[] = [\n  \"Chain the Words, Master Language!\",\n  \"Language Architect at Work!\",\n  \"Empowering Language Engineering.\",\n  \"Craft Language Connections Here.\",\n  \"Create, Connect, Converse.\",\n  \"Smart Chains, Smarter Conversations.\",\n  \"Bridging Prompts for Brilliance.\",\n  \"Language Models, Unleashed.\",\n  \"Your Hub for Text Generation.\",\n  \"Promptly Ingenious!\",\n  \"Building Linguistic Labyrinths.\",\n  \"Create, Chain, Communicate.\",\n  \"Connect the Dots, Craft Language.\",\n  \"Interactive Language Weaving.\",\n  \"Generate, Innovate, Communicate.\",\n  \"Conversation Catalyst Engine.\",\n  \"Language Chainlink Master.\",\n  \"Design Dialogues with Langflow.\",\n  \"Nurture NLP Nodes Here.\",\n  \"Conversational Cartography Unlocked.\",\n  \"Design, Develop, Dialogize.\",\n  \"Unleashing Linguistic Creativity.\",\n  \"Graph Your Way to Great Conversations.\",\n  \"The Power of Language at Your Fingertips.\",\n  \"Sculpting Language with Precision.\",\n  \"Where Language Meets Logic.\",\n  \"Building Intelligent Interactions.\",\n  \"Your Passport to Linguistic Landscapes.\",\n  \"Create, Curate, Communicate with Langflow.\",\n  \"Flow into the Future of Language.\",\n  \"Mapping Meaningful Conversations.\",\n  \"Unravel the Art of Articulation.\",\n  \"Language Engineering Excellence.\",\n  \"Navigate the Networks of Conversation.\",\n  \"Crafting Conversations, One Node at a Time.\",\n  \"The Pinnacle of Prompt Generation.\",\n  \"Language Models, Mapped and Mastered.\",\n  \"Powerful Prompts, Perfectly Positioned.\",\n  \"Innovation in Interaction with Langflow.\",\n  \"Your Toolkit for Text Generation.\",\n  \"Unfolding Linguistic Possibilities.\",\n  \"Building Powerful Solutions with Language Models.\",\n  \"Uncover Business Opportunities with NLP.\",\n  \"Harness the Power of Conversational AI.\",\n  \"Transform Your Business with Smart Dialogues.\",\n  \"Craft Meaningful Interactions, Generate Value.\",\n  \"Unleashing Business Potential through Language Engineering.\",\n  \"Empowering Enterprises with Intelligent Interactions.\",\n  \"Driving Innovation in Business Communication.\",\n  \"Catalyzing Business Growth through Conversational AI.\",\n  \"Text Generation Meets Business Transformation.\",\n  \"Navigate the Linguistic Landscape, Discover Opportunities.\",\n  \"Create Powerful Connections, Boost Business Value.\",\n  \"Empowering Communication, Enabling Opportunities.\",\n  \"Advanced NLP for Groundbreaking Business Solutions.\",\n  \"Innovation in Interaction, Revolution in Revenue.\",\n  \"Maximize Impact with Intelligent Conversations.\",\n  \"Beyond Text Generation - Unleashing Business Opportunities.\",\n  \"Unlock the Power of AI in Your Business Conversations.\",\n  \"Crafting Dialogues that Drive Business Success.\",\n  \"Engineered for Excellence, Built for Business.\",\n];\n\n/**\n * Adjectives for the name of the flow\n * @constant\n *\n */\nexport const ADJECTIVES: string[] = [\n  \"admiring\",\n  \"adoring\",\n  \"agitated\",\n  \"amazing\",\n  \"angry\",\n  \"awesome\",\n  \"backstabbing\",\n  \"berserk\",\n  \"big\",\n  \"boring\",\n  \"clever\",\n  \"cocky\",\n  \"compassionate\",\n  \"condescending\",\n  \"cranky\",\n  \"desperate\",\n  \"determined\",\n  \"distracted\",\n  \"dreamy\",\n  \"drunk\",\n  \"ecstatic\",\n  \"elated\",\n  \"elegant\",\n  \"evil\",\n  \"fervent\",\n  \"focused\",\n  \"furious\",\n  \"gigantic\",\n  \"gloomy\",\n  \"goofy\",\n  \"grave\",\n  \"happy\",\n  \"high\",\n  \"hopeful\",\n  \"hungry\",\n  \"insane\",\n  \"jolly\",\n  \"jovial\",\n  \"kickass\",\n  \"lonely\",\n  \"loving\",\n  \"mad\",\n  \"modest\",\n  \"naughty\",\n  \"nauseous\",\n  \"nostalgic\",\n  \"pedantic\",\n  \"pensive\",\n  \"prickly\",\n  \"reverent\",\n  \"romantic\",\n  \"sad\",\n  \"serene\",\n  \"sharp\",\n  \"sick\",\n  \"silly\",\n  \"sleepy\",\n  \"small\",\n  \"stoic\",\n  \"stupefied\",\n  \"suspicious\",\n  \"tender\",\n  \"thirsty\",\n  \"tiny\",\n  \"trusting\",\n  \"bubbly\",\n  \"charming\",\n  \"cheerful\",\n  \"comical\",\n  \"dazzling\",\n  \"delighted\",\n  \"dynamic\",\n  \"effervescent\",\n  \"enthusiastic\",\n  \"exuberant\",\n  \"fluffy\",\n  \"friendly\",\n  \"funky\",\n  \"giddy\",\n  \"giggly\",\n  \"gleeful\",\n  \"goofy\",\n  \"graceful\",\n  \"grinning\",\n  \"hilarious\",\n  \"inquisitive\",\n  \"joyous\",\n  \"jubilant\",\n  \"lively\",\n  \"mirthful\",\n  \"mischievous\",\n  \"optimistic\",\n  \"peppy\",\n  \"perky\",\n  \"playful\",\n  \"quirky\",\n  \"radiant\",\n  \"sassy\",\n  \"silly\",\n  \"spirited\",\n  \"sprightly\",\n  \"twinkly\",\n  \"upbeat\",\n  \"vibrant\",\n  \"witty\",\n  \"zany\",\n  \"zealous\",\n];\n/**\n * Nouns for the name of the flow\n * @constant\n *\n */\nexport const NOUNS: string[] = [\n  \"albattani\",\n  \"allen\",\n  \"almeida\",\n  \"archimedes\",\n  \"ardinghelli\",\n  \"aryabhata\",\n  \"austin\",\n  \"babbage\",\n  \"banach\",\n  \"bardeen\",\n  \"bartik\",\n  \"bassi\",\n  \"bell\",\n  \"bhabha\",\n  \"bhaskara\",\n  \"blackwell\",\n  \"bohr\",\n  \"booth\",\n  \"borg\",\n  \"bose\",\n  \"boyd\",\n  \"brahmagupta\",\n  \"brattain\",\n  \"brown\",\n  \"carson\",\n  \"chandrasekhar\",\n  \"colden\",\n  \"cori\",\n  \"cray\",\n  \"curie\",\n  \"darwin\",\n  \"davinci\",\n  \"dijkstra\",\n  \"dubinsky\",\n  \"easley\",\n  \"einstein\",\n  \"elion\",\n  \"engelbart\",\n  \"euclid\",\n  \"euler\",\n  \"fermat\",\n  \"fermi\",\n  \"feynman\",\n  \"franklin\",\n  \"galileo\",\n  \"gates\",\n  \"goldberg\",\n  \"goldstine\",\n  \"goldwasser\",\n  \"golick\",\n  \"goodall\",\n  \"hamilton\",\n  \"hawking\",\n  \"heisenberg\",\n  \"heyrovsky\",\n  \"hodgkin\",\n  \"hoover\",\n  \"hopper\",\n  \"hugle\",\n  \"hypatia\",\n  \"jang\",\n  \"jennings\",\n  \"jepsen\",\n  \"joliot\",\n  \"jones\",\n  \"kalam\",\n  \"kare\",\n  \"keller\",\n  \"khorana\",\n  \"kilby\",\n  \"kirch\",\n  \"knuth\",\n  \"kowalevski\",\n  \"lalande\",\n  \"lamarr\",\n  \"leakey\",\n  \"leavitt\",\n  \"lichterman\",\n  \"liskov\",\n  \"lovelace\",\n  \"lumiere\",\n  \"mahavira\",\n  \"mayer\",\n  \"mccarthy\",\n  \"mcclintock\",\n  \"mclean\",\n  \"mcnulty\",\n  \"meitner\",\n  \"meninsky\",\n  \"mestorf\",\n  \"minsky\",\n  \"mirzakhani\",\n  \"morse\",\n  \"murdock\",\n  \"newton\",\n  \"nobel\",\n  \"noether\",\n  \"northcutt\",\n  \"noyce\",\n  \"panini\",\n  \"pare\",\n  \"pasteur\",\n  \"payne\",\n  \"perlman\",\n  \"pike\",\n  \"poincare\",\n  \"poitras\",\n  \"ptolemy\",\n  \"raman\",\n  \"ramanujan\",\n  \"ride\",\n  \"ritchie\",\n  \"roentgen\",\n  \"rosalind\",\n  \"saha\",\n  \"sammet\",\n  \"shaw\",\n  \"shirley\",\n  \"shockley\",\n  \"sinoussi\",\n  \"snyder\",\n  \"spence\",\n  \"stallman\",\n  \"stonebraker\",\n  \"swanson\",\n  \"swartz\",\n  \"swirles\",\n  \"tesla\",\n  \"thompson\",\n  \"torvalds\",\n  \"turing\",\n  \"varahamihira\",\n  \"visvesvaraya\",\n  \"volhard\",\n  \"wescoff\",\n  \"williams\",\n  \"wilson\",\n  \"wing\",\n  \"wozniak\",\n  \"wright\",\n  \"yalow\",\n  \"yonath\",\n  \"coulomb\",\n  \"degrasse\",\n  \"dewey\",\n  \"edison\",\n  \"eratosthenes\",\n  \"faraday\",\n  \"galton\",\n  \"gauss\",\n  \"herschel\",\n  \"hubble\",\n  \"joule\",\n  \"kaku\",\n  \"kepler\",\n  \"khayyam\",\n  \"lavoisier\",\n  \"maxwell\",\n  \"mendel\",\n  \"mendeleev\",\n  \"ohm\",\n  \"pascal\",\n  \"planck\",\n  \"riemann\",\n  \"schrodinger\",\n  \"sagan\",\n  \"tesla\",\n  \"tyson\",\n  \"volta\",\n  \"watt\",\n  \"weber\",\n  \"wien\",\n  \"zoBell\",\n  \"zuse\",\n  \"carroll\",\n];\n"
  },
  {
    "path": "src/frontend/platform/src/i18n.js",
    "content": "import i18n from \"i18next\";\nimport Backend from 'i18next-http-backend';\nimport {\n    initReactI18next\n} from \"react-i18next\";\nimport json from \"../package.json\";\n\n// Obtain user language preferences, supporting full language codes (e.g., zh-Hans, en-US) \nconst getBrowserLanguage = () => {\n    const savedLanguage = localStorage.getItem('i18nextLng');\n    if (savedLanguage) return savedLanguage === 'zh' ? 'zh-Hans' : savedLanguage;\n\n    const browserLang = navigator.language || navigator.userLanguage || 'en-US';\n    // Map browser language codes to the languages we support \n    if (browserLang.startsWith('zh')) return 'zh-Hans';\n    if (browserLang.startsWith('ja')) return 'ja';\n    return 'en-US';\n};\n\nconst userLanguage = getBrowserLanguage();\nconst config = window.BRAND_CONFIG || {};\n\ni18n.use(Backend)\n    .use(initReactI18next)\n    .init({\n        partialBundledLanguages: true,\n        ns: ['bs', 'flow'],\n        lng: userLanguage,\n        fallbackLng: 'en-US',\n        backend: {\n            loadPath: __APP_ENV__.BASE_URL + '/locales/{{lng}}/{{ns}}.json?v=' + json.version\n        },\n        interpolation: {\n            escapeValue: false, // react already safes from xss\n            defaultVariables: {\n                bisheng: config.brandName?.en,\n                bishengZh: config.brandName?.zh,\n                linsight: config.linsightAgentName?.en,\n                linsightZh: config.linsightAgentName?.zh,\n                linsightFull: config.linsightFullName?.en,\n                linsightFullZh: config.linsightFullName?.zh\n            }\n        }\n    });\n\nexport default i18n;\n\n// Dynamically load the namespace \n// i18n.loadNamespaces(['bs']);"
  },
  {
    "path": "src/frontend/platform/src/icons/AWS/AWS.jsx",
    "content": "const SvgAWS = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    id=\"Layer_1\"\n    x={0}\n    y={0}\n    style={{\n      enableBackground: \"new 0 0 304 182\",\n    }}\n    viewBox=\"0 0 304 182\"\n    {...props}\n  >\n    <style>{\".st1{fill-rule:evenodd;clip-rule:evenodd;fill:#f90}\"}</style>\n    <path\n      d=\"M86.4 66.4c0 3.7.4 6.7 1.1 8.9.8 2.2 1.8 4.6 3.2 7.2.5.8.7 1.6.7 2.3 0 1-.6 2-1.9 3L83.2 92c-.9.6-1.8.9-2.6.9-1 0-2-.5-3-1.4-1.4-1.5-2.6-3.1-3.6-4.7-1-1.7-2-3.6-3.1-5.9-7.8 9.2-17.6 13.8-29.4 13.8-8.4 0-15.1-2.4-20-7.2-4.9-4.8-7.4-11.2-7.4-19.2 0-8.5 3-15.4 9.1-20.6 6.1-5.2 14.2-7.8 24.5-7.8 3.4 0 6.9.3 10.6.8 3.7.5 7.5 1.3 11.5 2.2v-7.3c0-7.6-1.6-12.9-4.7-16-3.2-3.1-8.6-4.6-16.3-4.6-3.5 0-7.1.4-10.8 1.3-3.7.9-7.3 2-10.8 3.4-1.6.7-2.8 1.1-3.5 1.3-.7.2-1.2.3-1.6.3-1.4 0-2.1-1-2.1-3.1v-4.9c0-1.6.2-2.8.7-3.5.5-.7 1.4-1.4 2.8-2.1 3.5-1.8 7.7-3.3 12.6-4.5C41 1.9 46.2 1.3 51.7 1.3c11.9 0 20.6 2.7 26.2 8.1 5.5 5.4 8.3 13.6 8.3 24.6v32.4zM45.8 81.6c3.3 0 6.7-.6 10.3-1.8 3.6-1.2 6.8-3.4 9.5-6.4 1.6-1.9 2.8-4 3.4-6.4.6-2.4 1-5.3 1-8.7v-4.2c-2.9-.7-6-1.3-9.2-1.7-3.2-.4-6.3-.6-9.4-.6-6.7 0-11.6 1.3-14.9 4-3.3 2.7-4.9 6.5-4.9 11.5 0 4.7 1.2 8.2 3.7 10.6 2.4 2.5 5.9 3.7 10.5 3.7zm80.3 10.8c-1.8 0-3-.3-3.8-1-.8-.6-1.5-2-2.1-3.9L96.7 10.2c-.6-2-.9-3.3-.9-4 0-1.6.8-2.5 2.4-2.5h9.8c1.9 0 3.2.3 3.9 1 .8.6 1.4 2 2 3.9l16.8 66.2 15.6-66.2c.5-2 1.1-3.3 1.9-3.9.8-.6 2.2-1 4-1h8c1.9 0 3.2.3 4 1 .8.6 1.5 2 1.9 3.9l15.8 67 17.3-67c.6-2 1.3-3.3 2-3.9.8-.6 2.1-1 3.9-1h9.3c1.6 0 2.5.8 2.5 2.5 0 .5-.1 1-.2 1.6-.1.6-.3 1.4-.7 2.5l-24.1 77.3c-.6 2-1.3 3.3-2.1 3.9-.8.6-2.1 1-3.8 1h-8.6c-1.9 0-3.2-.3-4-1-.8-.7-1.5-2-1.9-4L156 23l-15.4 64.4c-.5 2-1.1 3.3-1.9 4-.8.7-2.2 1-4 1h-8.6zm128.5 2.7c-5.2 0-10.4-.6-15.4-1.8-5-1.2-8.9-2.5-11.5-4-1.6-.9-2.7-1.9-3.1-2.8-.4-.9-.6-1.9-.6-2.8v-5.1c0-2.1.8-3.1 2.3-3.1.6 0 1.2.1 1.8.3.6.2 1.5.6 2.5 1 3.4 1.5 7.1 2.7 11 3.5 4 .8 7.9 1.2 11.9 1.2 6.3 0 11.2-1.1 14.6-3.3 3.4-2.2 5.2-5.4 5.2-9.5 0-2.8-.9-5.1-2.7-7-1.8-1.9-5.2-3.6-10.1-5.2L246 52c-7.3-2.3-12.7-5.7-16-10.2-3.3-4.4-5-9.3-5-14.5 0-4.2.9-7.9 2.7-11.1 1.8-3.2 4.2-6 7.2-8.2 3-2.3 6.4-4 10.4-5.2 4-1.2 8.2-1.7 12.6-1.7 2.2 0 4.5.1 6.7.4 2.3.3 4.4.7 6.5 1.1 2 .5 3.9 1 5.7 1.6 1.8.6 3.2 1.2 4.2 1.8 1.4.8 2.4 1.6 3 2.5.6.8.9 1.9.9 3.3v4.7c0 2.1-.8 3.2-2.3 3.2-.8 0-2.1-.4-3.8-1.2-5.7-2.6-12.1-3.9-19.2-3.9-5.7 0-10.2.9-13.3 2.8-3.1 1.9-4.7 4.8-4.7 8.9 0 2.8 1 5.2 3 7.1 2 1.9 5.7 3.8 11 5.5l14.2 4.5c7.2 2.3 12.4 5.5 15.5 9.6 3.1 4.1 4.6 8.8 4.6 14 0 4.3-.9 8.2-2.6 11.6-1.8 3.4-4.2 6.4-7.3 8.8-3.1 2.5-6.8 4.3-11.1 5.6-4.5 1.4-9.2 2.1-14.3 2.1z\"\n      style={{\n        fill: \"#252f3e\",\n      }}\n    />\n    <path\n      d=\"M273.5 143.7c-32.9 24.3-80.7 37.2-121.8 37.2-57.6 0-109.5-21.3-148.7-56.7-3.1-2.8-.3-6.6 3.4-4.4 42.4 24.6 94.7 39.5 148.8 39.5 36.5 0 76.6-7.6 113.5-23.2 5.5-2.5 10.2 3.6 4.8 7.6z\"\n      className=\"st1\"\n    />\n    <path\n      d=\"M287.2 128.1c-4.2-5.4-27.8-2.6-38.5-1.3-3.2.4-3.7-2.4-.8-4.5 18.8-13.2 49.7-9.4 53.3-5 3.6 4.5-1 35.4-18.6 50.2-2.7 2.3-5.3 1.1-4.1-1.9 4-9.9 12.9-32.2 8.7-37.5z\"\n      className=\"st1\"\n    />\n  </svg>\n);\nexport default SvgAWS;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/AWS/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgAWS from \"./AWS\";\n\nexport const AWSIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgAWS ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Airbyte/Airbyte.jsx",
    "content": "const SvgAirbyte = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    style={{\n      enableBackground: \"new 0 0 841.89 595.28\",\n    }}\n    viewBox=\"0 0 841.89 595.28\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <path\n      d=\"M349.6 124.45c48.94-54.99 129.98-71.12 196.61-39.38 88.52 42.17 120.82 149.6 72.62 232.48L510.41 503.76c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l131.26-225.49c34.97-60.15 11.58-138.11-52.6-168.8-48.16-23.03-107.02-11.53-142.6 28.08-19.62 21.74-30.64 49.82-31.01 79.01-.37 29.2 9.94 57.53 29.01 79.76 3.43 3.99 7.12 7.75 11.04 11.25l-76.63 131.88c-3 5.16-6.99 9.67-11.74 13.3a45.845 45.845 0 0 1-15.97 7.82 46.098 46.098 0 0 1-17.77 1.16 46.124 46.124 0 0 1-16.87-5.68l83.19-143.17a164.492 164.492 0 0 1-25.29-56.58l-50.97 87.9c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l131.83-226.76a168.65 168.65 0 0 1 19.03-26.19zm152.16 72.18c31.75 18.21 42.71 58.7 24.34 90.22L399.69 503.74c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l117.38-201.93a66.675 66.675 0 0 1-26.01-11.65 66.228 66.228 0 0 1-18.7-21.4 65.82 65.82 0 0 1-7.95-27.22c-.64-9.54.82-19.1 4.27-28.02 3.45-8.92 8.8-17 15.7-23.67a66.558 66.558 0 0 1 24.24-14.95c9.08-3.18 18.74-4.37 28.32-3.49s18.85 3.82 27.18 8.62zm-45.98 40.76c-2.17 1.66-4 3.72-5.36 6.08h-.01a20.613 20.613 0 0 0-2.75 11.71c.27 4.09 1.76 8 4.27 11.25s5.94 5.69 9.84 7c3.91 1.32 8.12 1.45 12.1.39 3.99-1.06 7.56-3.27 10.28-6.35 2.72-3.08 4.46-6.89 5-10.95s-.15-8.19-1.97-11.87a20.806 20.806 0 0 0-8.28-8.78 20.964 20.964 0 0 0-15.83-2.07c-2.64.72-5.12 1.93-7.29 3.59z\"\n      style={{\n        fillRule: \"evenodd\",\n        clipRule: \"evenodd\",\n        fill: \"#505aa5\",\n      }}\n    />\n  </svg>\n);\nexport default SvgAirbyte;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Airbyte/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgAirbyte from \"./Airbyte\";\n\nexport const AirbyteIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgAirbyte ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Anthropic/Anthropic.jsx",
    "content": "const SvgAnthropic = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"-170.333 113.047 600 67.4\"\n    {...props}\n  >\n    <path\n      d=\"M-23.533 126.747h21.9v52.6h14v-52.6h21.9v-12.6h-57.8v12.6Zm-24.6 33-29.3-45.6h-15.8v65.1h13.5v-45.6l29.3 45.7h15.8v-65.1h-13.5v45.5Zm138.2-19.6h-30.7v-26h-14v65.1h14v-26.6h30.7v26.6h14v-65.1h-14v26Zm-234.4-26-26 65.1h14.5l5.3-13.7h27.2l5.3 13.7h14.5l-26-65.1h-14.8Zm-1.5 39.4 8.9-22.9 8.9 22.9h-17.8Zm365.5-40.5c-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 18.7 0 31.9-14 31.9-33.6 0-19.8-13.2-33.8-31.9-33.8Zm0 54.4c-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 10.9 0 17.5 7.8 17.5 20.8 0 12.7-6.6 20.6-17.5 20.6Zm195.1-10c-2.4 6.3-7.3 10-13.9 10-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 6.6 0 11.4 3.6 13.9 10h14.8c-3.6-14-14.5-23-28.7-23-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 14.2 0 25.1-9.1 28.8-23h-14.9Zm-88.9-43.3 26 65.1h14.2l-26-65.1h-14.2Zm-29.5 0h-31.8v65.1h14v-23.6h17.9c14.8 0 23.8-7.8 23.8-20.8 0-12.9-9.1-20.7-23.9-20.7Zm-.6 29h-17.2v-16.4h17.2c6.9 0 10.5 2.8 10.5 8.2 0 5.4-3.6 8.2-10.5 8.2Zm-118.9-9.1c0-12.3-9-19.8-23.8-19.8h-31.8v65.1h14v-25.5h15.5l14 25.5h15.4l-15.5-27.4c7.7-3.1 12.2-9.3 12.2-17.9Zm-41.7-7.3h17.2c6.9 0 10.5 2.5 10.5 7.3 0 4.7-3.6 7.3-10.5 7.3h-17.2v-14.6Z\"\n      style={{\n        fill: \"#1f1f1e\",\n      }}\n    />\n  </svg>\n);\nexport default SvgAnthropic;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Anthropic/AnthropicBox.jsx",
    "content": "const SvgAnthropicBox = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"-126.9 247.9 207.161 212.728\"\n    {...props}\n  >\n    <defs>\n      <style>{\".anthropic_box_svg__st0{fill:#1f1f1e}\"}</style>\n    </defs>\n    <path\n      d=\"M19.9 260.5h21.9v52.6h14v-52.6h21.9v-12.6H19.9v12.6Zm-24.6 33L-34 247.9h-15.8V313h13.5v-45.6L-7 313.1H8.8V248H-4.7v45.5Zm-96.2-45.6-26 65.1h14.5l5.3-13.7h27.2l5.3 13.7h14.5l-26-65.1h-14.8Zm-1.5 39.4 8.9-22.9 8.9 22.9h-17.8ZM38.246 437.628c-2.4 6.3-7.3 10-13.9 10-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 6.6 0 11.4 3.6 13.9 10h14.8c-3.6-14-14.5-23-28.7-23-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 14.2 0 25.1-9.1 28.8-23h-14.9Zm-88.9-43.3 26 65.1h14.2l-26-65.1h-14.2Zm-29.5 0h-31.8v65.1h14v-23.6h17.9c14.8 0 23.8-7.8 23.8-20.8 0-12.9-9.1-20.7-23.9-20.7Zm-.6 29h-17.2v-16.4h17.2c6.9 0 10.5 2.8 10.5 8.2 0 5.4-3.6 8.2-10.5 8.2ZM-81.239 347.704h-30.7v-26h-14v65.1h14v-26.6h30.7v26.6h14v-65.1h-14v26Zm129.6-27.1c-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 18.7 0 31.9-14 31.9-33.6 0-19.8-13.2-33.8-31.9-33.8Zm0 54.4c-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 10.9 0 17.5 7.8 17.5 20.8 0 12.7-6.6 20.6-17.5 20.6Zm-42.8-33.4c0-12.3-9-19.8-23.8-19.8h-31.8v65.1h14v-25.5h15.5l14 25.5h15.4l-15.5-27.4c7.7-3.1 12.2-9.3 12.2-17.9Zm-41.7-7.3h17.2c6.9 0 10.5 2.5 10.5 7.3 0 4.7-3.6 7.3-10.5 7.3h-17.2v-14.6Z\"\n      className=\"anthropic_box_svg__st0\"\n    />\n  </svg>\n);\nexport default SvgAnthropicBox;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Anthropic/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgAnthropicBox from \"./AnthropicBox\";\n\nexport const AnthropicIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgAnthropicBox ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/AstraDB/AstraDB.jsx",
    "content": "const AstraSVG = (props) => (\n  <svg\n    width=\"96\"\n    height=\"96\"\n    viewBox=\"12 33 72 29\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <g clip-path=\"url(#clip0_702_1449)\">\n      {/* <rect width=\"96\" height=\"96\" rx=\"6\" fill=\"white\"/> */}\n      <path\n        d=\"M38.0469 33H12V62.1892H38.0469L44.5902 57.1406V38.0485L38.0469 33ZM17.0478 38.0485H39.5424V57.1459H17.0478V38.0485Z\"\n        fill=\"black\"\n      />\n      <path\n        d=\"M82.0705 38.2605V33.3243H58.2546L51.788 38.2605V45.038L58.2546 49.9742H79.0107V56.9286H53.076V61.8648H77.5334L84 56.9286V49.9742L77.5334 45.038H56.7772V38.2605H82.0705Z\"\n        fill=\"black\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_702_1449\">\n        <rect width=\"96\" height=\"96\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\nexport default AstraSVG;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/AstraDB/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport AstraSVG from \"./AstraDB\";\n\nexport const AstraDBIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <AstraSVG ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/AzLogo/AzLogo.jsx",
    "content": "const SvgAzLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 103 103\"\n    {...props}\n  >\n    <image\n      width={103}\n      height={103}\n      href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAABnCAYAAAAdQVz5AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAC gXpUWHRSYXcgcHJvZmlsZSB0eXBlIHhtcAAAOI2VVV3WnTAIfGcVXUIEAslyvGreek4fu/wOeH+s 2vbr9dyohDAwTCL9/P6DvsWvaSNZZHjzYpOJPay6cjG2am7dNlmZt/F4PAYz7N00LNWl6ipFVy8q 8G3WSZvPjoVVfNatquGOgCJYxCxDNi6yeJPZm2GhrQFmE5d4t8U2l5ijQEA2aiPykHmfeLtnJp8w sD1ihb5XcKlN11qII7nhaZLKmxRekU8RE6BiVNgmUVg6xs4LrIy3CZ4DI2Ms4sRrmGQW1IaxxPLT xc/yGFmYzJVV1U6lMeVklNdccSEkyhmeP94cXrxlxp74Pa7MITJhjOsOgIxcHP0JRryhLCDE/O9Z IAW0Co1g68lUB0PweM3bRCBsOIiNrHZij70IgnVFqy85J+D2aRPhBWTbinIackoCk3LYwnoJLq41 dHYihO6i/zl4KNFRHHxGhHPJetiEIMWMH7zcFfbvonZYusN9hXzyM2t0re+bBgEWjRDiNWQbbdKu msreFyGy5m6aQ3haZVJGs2EUgXIq9lYVgQQmhQwVapIGG5xDtqRTPjQIsl8yuUG+A0YMZMRqz+gV uNhFKf8J6Mgr7zU8MI+8YGMAC7waNs8BmBI5BCkhSQvi6gW5f5APwHoEpv9DRrBQd0VzNDZOjeKH LbLS6UgoOKRGOkk+lTgdwHGcC9jOde9czGMbvjcSQOhAbM2dZMDDC55DkuWg5Nn+QgEdOUAZE5rd Yy1KjeZyyuDV9mAkCm8oO/jKf7ZpojjCkoMj8hfbftQbfVVwJ709z3Ier4OE7k+as9t+Kr6tl0+B bBRTNx+kGr3Jcnj/ltAv3lyKr0wOoNMAAAZzSURBVHja7Z1LT1tHFMd/Y2wDtiFpeBuT8LIc0qSq BInUbqJAWFWqVAkpUnb9CpGSqFI/QGIp/RDdRapaKVJWLQsWySJRRDetgFCQCeERDAnCvPyALhxH gA2BY98HvvOTLKHB5/rcOT4z/zn33rF68OBPClABfA8MARHg649tmtKQAf4GxoHfgCf379/MHHyT q4BhBHgO/A7cBnrRgSk1FWT79TbZfn7+8OFfkYNvciml2PO6o5QaVUpdO9CuX8a+rimlRqPR4Tv7 grPn7yjwCKi2+mvlUKqBR9HocDTXkAvOLeCu1d5pALgbjQ7fAlDR6LAXmAJarfZK84lJ4EsXWUWm A2MvuoEht1LqO6s90RTkOxdZSaexH9+4lVLNVnuhKUirCzhjtReagnjdSimrndAcgqv4Q2iMQmeO jdGZY2N05tgYt1EHvn69k4aGgCknMTLyH0tL64f+f2joK1P8OIylpQQjI1MntjMkcwYHw1y61GTa yVdVeTjqPEIh61cLkn4ueXAGB8P09DSafuJ2H54l/pVUEFgRmHKmZJlz82a3hYGxd+YoZeGwNjDQ TU9Pw6k7eRM9tGZYszow5UxRmTMw0MXFi9YHplwFgTg4/f2dtghM7sTLMTiiYa21tdY2gSlnhJlj t2+pvTPHVLVmt34oV7VmWG3tMMbH44yPx/PaI5F6IpF6Qz7zyZOxoo9RU1PJjRsdItvt7bTITpg5 8m/p2lqS+flEXnswWCs+5ucEQaHPOyn19X6xbSy2auawJg/OYUNQMaOSGWrtyhVZITeZzDAxsWym lC6mIw7rSCOOWRrq6qqpqfGKbKWBAX0l9FhcviyvGU5MLIttTVdrxgxrxqq19vazIrvl5U1WVrbE vpk+5xgxrBk554TD5/B6Zc+OvX69UpRfWhB8hgsX5FdRJyffF+WXnnOOIBDwioMTi62STGZEtjm0 WjuCcPic2LbYrAEtCI4kHP5CZJdMZnjzZs2q4Ngrc4yYc5qb/QQCsrXN5OSHkvijBcEhdHfLsgZg bEy+8NyLFgQF8HoraGurEdmurGyRSKRK4ocWBAU4f75WvLYZGytubbMXLQgK0NV1Vmw7O5uwOjj2 ypxSzjl+v4emJp/IdmpqlVRq5/QGx+6CoKtLXhEoZdaAFgR5dHbKgrO+nmJ2tviLenvRgmAPjY0+ /H6PyLbUWQNaEOyjs1N+qXxiQnYp+ii0IPiIx+MiFJI97PXhwzYbG+nTHxy7CoJQKIDHI5uCjcga 0HPOJzo6ZBWBVGqHubkNQ4Kj1Rrg97tpaJDtAfj27Tqp1I4hfmlBAITDZ8W2sVjpVVoOLQiA1lZZ RWBjI008vl0+wbGbIAgGffh8sruSjcwa0IKAYFCWNQAzM8YIgRyOnnM8Hhfnz8vugY7Ht9nczBga HEertZYW+S7NMzPrYtvj4mhB0NUlX9ssLMjv5DwujhUEPl8FZ87IipwLC1uk07v2DE45CILOTlnW AExNrZvyJJ1jBUFzc5XoszY2Mqytlb7IWQhHCoLm5ip8PtkNHNPTxguBHKbPOW1tPurqKvPapZ2V 8+ckPkmzBmBx0biKwEFMD051dQXV1aX9OZ6TBMfjUYRCMgm9uLjN1lbpbuD4HI7bh6Cp6XRkDThw H4L2dlm5JpXaZW7O3OA4ShDU1rqprZUVOd+92zbdXwsqBKXnuHNOa6t8SIvFjK8IHEQH5xhsbu6Q SBhb5CyEYwRBY6MXt1vm98yM+VkDDppzWlpkD0IBzM2ZP9+AQ9Sa261obJQFZ2kpRSZjzVDuiDkn GKw8wdH2Mz+ftOx8HRIcWdak07vE4+YUOQth+n5r09NbTE/nj+EdHZV0dMil7lEEArJykdut6O8v fqv99+/TjI6evGDq2Os5ZnJqtpG0y/Ucc7Fo02+NcTj6Bg8z0dtI2hg9rJUZWq2ZgFZrNg6OVmtl iFZrJqHVmo0R9fOzZ1u7VjuuKYz+hV0bowWBjdGZY2N05tgYt1JqFbD+x5s1B0m4gAWrvdAU5K1b KfUKiFjtiSaPVy7gqdVeaAryVL14kfEC/wDdVnuj+cQ0cNEFJIGfrfZGs4+frl51JXPrnMfANeCO 1V5p+KWvTz2G/euce2QzKGm1dw4lN4LdyzWoly/zNnKLAL+SzSSNObwAfuzrU//ubSxUvhkHvgV+ AIbICoVeq70vQ16RnfgfA3/09pL3M1X/AznvTJ80sftLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIz LTA1LTI5VDIzOjEwOjMwKzAwOjAwEYyoUQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wNS0yOVQy MzoxMDozMCswMDowMGDREO0AAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjMtMDUtMjlUMjM6MTA6 MzArMDA6MDA3xDEyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5E rkJggg==\"\n    />\n  </svg>\n);\nexport default SvgAzLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/AzLogo/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgAzLogo from \"./AzLogo\";\n\nexport const AzIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgAzLogo ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Azure/Azure.jsx",
    "content": "export const SvgAzure = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"35\"\n    height=\"35\"\n    version=\"1\"\n    viewBox=\"0 0 750 750\"\n  >\n    <defs>\n      <filter id=\"ac4759936b\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\"\n        ></feColorMatrix>\n      </filter>\n      <filter id=\"c69d7a8db3\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.2126 0.7152 0.0722 0 0\"\n        ></feColorMatrix>\n      </filter>\n      <image\n        width=\"1200\"\n        height=\"1200\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAAAAADOSuwTAAAAAmJLR0QA/4ePzL8AACAASURBVHic7d1Zj2TJddjxuLln7b1MTy+zdA+pGVJDiqJkS4Zs2IBhQy8G7Be/+QvYX8AP9hfQq/ViwLANSYAo0QZM25IXSAJsLhY54s6Z0ay9Vld3V1VX1165px96qyWzKvPeiHNi+f9eyOnuynvq5o1zT8SNG2EMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjItAPAeOVSqd83JjMmywbDocmygTGmNDCZyYZmePQfZyf+D4wx5b4xmRkOtOOAHVzdnpo5KL3z737L7M8c/eNer9vrd01W3WjUTL/Xr+wNjTFDM9wZDs3QmKf/ZY5ns2m/5+M/7rlTfrtutTLs1ZfKX5z809Z/abN4SHCDhOWbardU+XTn3b1+1l/SjiVNg5Ixxpj9823lQHASCcsv5fqeMffKlyragWCwfsmYMn1Jv5CwfFLutR8u7l/VDgPPtczehWpPOwq8xJ3cG9XqZ4/NnbcNHUF/NEzD7OxcpszyBhWWJ6rllXPaMWCcekc7AjxFwvJCVu72KHa91S/TUDxR0g4AxpjFwW065x4rGzMc0lR8wI1DX629tagdA860uURj0cd3oO7GTe0IMKFSYBNqI0RHRNn8dlc7BEzqzoVZ7RBSR4Wl6+p97QgwFRqMLkYSVWU/1I4A01nRDiBx3DA0le8yqz04NBlNVFiKzu+Sr8Kzrh1A0khYemZ+0tAOAdO7QK9QEfWtmlJfOwLk0q7TatRQYWmpsAhAoOpDeoVquFcomd3VjgD58Z6OFk68jsovtCNAAdld7QhSRYWlorzGWjJhazW1I0gTCUtDhddxgterakeQJLqEGjjrQC40HQVzt7UjQGGlbe0IkkSXUF6pRW8iAsOMxiOPCkte6ZF2BLAgW9WOIEXcJOQNOOmR4IsUR4UlrtrSjgAIFfcIaRmb3MWiV6H5SKPCksai1NHgq5RHwhKWdXjpORod3imUxgkX9lvvcV+ORm21rh1CauiEyyp957e0Q4BFH31ZO4LEkLBkNQ60I4BVVXr4ougSysra2hHAqm5ZO4K0UGHJ2pnTjgB20YJEUWGJqpKvIkMXXxb3B0nZYMAdIjY0IUmcbVFD7QBgHU1IEjd8SQzQAoWQsCSxdUGEhpRYgjjZkugRxog2JIgKSxCzRoFiuDsIosCKUbda6WvHkA4SlhxWwooUjUgOXUI5TZYajdKWdgApIWHJud3QjgAulFkVSw6nWg7bPcdpztDXF0PCEvPmJe0I4MaGdgAJIWGJ+RZLjUZqkbmjYjjTUpr72hHAGZqRFCosKQvaAcCZDglLCglLyu9qBwBnasxskMKtQUj5zjXtEOAO7UgIJ1pItaMdAdxpNbUjSAVdQiFr2gHAoQaviQqhwhLCFR03GpIMKiwZF7UDgFN7Ve0IEkHCkvEt7QDg1CwzG2RwmkUs8Nw7drQkEVRYIhjBih0PgWWQsET8F+0A4FhtjxJLAmdZBBVW/MosMiOACksC+xEmgHwlgYQl4VPtAODekOWDBNAllECPMAW0JQFUWAKq9BYS0NMOIAkkLAEfcpYTMGAvCgGUsQLoEaaBxuQeNwX3qm3tCCDhAQnLPc6xcyU2Mk9Dq0Frco5T7N6Ak5wIvmjn6BI69zoVViJWaU3OcYqd+8+c40Qs9vmqXaOIda22y9puyaA5ucYtwbXL5Ktk7NKcXOMMu/bvtQOAmDmGK12jhnVs9u557RAgh/bkGBWWY1XyVULWWEjIMe4Ijm0taEcASTQotzi/btVb2hFAFA3KLbqEbi1pBwBRew3tCCJHwnLrP2kHAFGze7Qop6hgnVrY5AQnhi/cKe4HTs1x+SZmXzuAyJGwXKr8iXYEEDbD3FGnqABcyljMPT00KZeosFzi7AJW0aRc+kw7AMhjLwqXqF9dYveJFNGmHOJu4FBdOwAo4DmhSyQsh+gRpqjR0Y4gZpSvDtEjTBONyh0qLHfqD7QjgIa1inYEEeNm4M72vHYE0NCp0aqcocJyh3Obppp2ADGjUTlzlZVGErWtHUDESFjOfJPlchO1wNMWZ+htu1LfpMJKFs3KFSosVy6Sr5LF3FFnSFiu/IF2AFAzQ5/QFRKWI81f0Y4Aeg60A4gWCcuR6gXtCKCnRYnlCKODjjBrNG00LDeosNxokq+StkHDcoPz6gaLI6ftPEu7u0HCcqL8M04sYB9dbSdmdzixiWu0tSOIEoWAC0u75KvUtaraEUSJhOXC7q52BFDX1Q4gSiQsF96mOwC4QNfFgXpLOwJ4oMTsUfuosBxoszYyaFtOUGE5UG1zWkHbcoG7gH2NFS5VsGmSEyQs+zo72hEAkSJh2Td/QzsC+OC+dgAxovNiH10BPEXrso4Ky7oSUwYBR0hY1i0+4KUMGGPMHe0AIkTRalttnaWw8EyFVWYsI2HZVqFDiOdoXrbRJbTtAjdVPLOpHUB8uAVY1mDDFDzXq9C+LOOEWsbayDiE9mUZXULLGh3tCOCPbe0AosMdwK6szZwGHEIDs4vzaRc9QhxBA7OLLqFdDe0A4BWeE1rGDcCuXlk7AviFFmYVFZZVGS8+Aw6RsKyqVbQjgGd4CGMVBatNvJaDE9hR1SYqLJt6G9oRwDc98pVNVFg2nX+sHQG8QxOziQrLotkPtCOAf3gOYxMJy6L6Ze0IgLiRsCxiDhZGoI1ZxMm0p/xN7QjgoT0WSLOIEUF7zvGMEKM0W9oRxIMKy54Z7QDgpQ0amT1UWPa8/652BPATrcwaTqU1rCyDMWhl1lCtWjPHEBZG+kw7gIiQ+21hP0KMVWL2qCVUWLZk5CuMsU8zs4UzaUuTISyMMcNULFtIWJbUP+dUYowBPUJbGMOyhGeEOAXtzBLKAktqJCyMRZfQFhKWJWucSYxVpk9oCaWqHfQIcSoamh3UBXbMagcAr+3UtSOIBAnLjve0A4DX5re0I4gElaoVi2vs5oRT0dKsoMKyYoZ8hdMtaAcQBxKWDeW/1I4AvluraUcQBRKWDX2eWuMMtY52BFGgZ20D+xHiTDQ1G6iwbPhEOwD4jyrcBhKWBZcuaEeAALALnAUkLAu4d2ICvFBoAQnLgj/XDgAB4MmMDYwEFje3ox0BgjC/qx1B+KiwimNtZEyi3dOOIAJUWMU9uKwdAULQrdLaCuMUFjfsMIkZk6C1FUaXsLDZ++QrTOKmdgARIOcXVVthFhYmVOtqRxA6ElZRtbZ2BAgGG6oWRZewqPPMB8SENrQDCB8VVkHlW69rh4Bw0N4K4gQWVKLAwuRobwXRJSyoyRAWJratHUDwyPgFdSvaESAkNLhiqLCKqZCvADkkrGJe1Q4AQXmiHUDoSFjFfEM7AATlHBOxiqFLXUiVnQUwHVpcIVRYhdzQDgCBaWkHEDgSVhHZ72tHgMA06BMWQoFaRNYj4WM6Qy6ZIjh7RSxx+jCljBKrCCqsIg4a2hEgPLS5AigRCqiRrzA13uUqgoQFiKozilUA5y6/bFk7AoRonT5hfiSs/MqL2hEgRBX2AMiPZJ8bs9yRE60uNyqs3LpmVTsEBImdwvMjYeVWNZe0Q0CQKLDy49zlxW45yI1mlxcVVl6dlX3tEIDUsGBmXhevakeAUDEfJjdq05wan7C9F3Kr9rQjCBRdwpza89oRIGDkq5xIWDk15rQjQLj2tAMIFl3CfLKBdgQIGg0vHyqsfFjUCFBAwsqnqh0AgvZYO4BQkbByyW5pR4CgXaBEz4eudC4MYaEgWl4uVFi5LD7UjgBhe6QdQKDI83nwHiEKo+nlwVnLhREIFEXTy4MuYR6zu9oRIHSPeY03DxJWDvWbTHNHQTNdpsbkQF2aA88IYQFtLwcqrBzYRAAW0PZy4KTl0NIOADH4tK4dQYBIWDn8QjsAxOAttl2aHv3o6bG/F6xoMJ1vaiSs6TEJCzb0y7S+qdElnFqZHiFsKGsHECJy/NQaB9oRIA5r17raIQSHhDW1dplbI+woM6NvSrwfMK0ZZmHBFvLVtBjDmtaMdgCIxtqsdgTBIWFN64+1A0A0XtllSGZKnLAp1ZnmDntof1OiwpoS+6fCnv6SdgShIcNP6eYN7QgQExrgdDhf02FlGVhFA5wOXcLpMA0ENm1pBxAaEvx09pvaESAutMCpUGFNZZ58BSgiYU2lv60dAeLS5T2vqVCQTuXRJe0IEBua4DSosKbCe4SwjSY4Dc7WNJa4G8KyFdaDnAYtcAq1h+e0Q0B8FhkYnRwJaxrcDGEfbXAKdAmnwItfgC4S1hT+SjsAxGiPmQ2TI2FNoaEdAGI07GtHEBAS1uTOv6YdAWLU5/WJyZGwJveZdgCIUmVfO4KAkLAmVtrVjgBRYpeAKZCwJtZ8XTsCxGlTO4CAkLAmtsvaRXCiNuQ54aSYtDapakc7AkSLZjgpKqxJXWFxZDiyQjOcFKl9Uj/4De0IEK8Sb31NhoQ1oUpXOwJEjHY4IWrRCV3TDgAxY2rDhMjsE/r4be0IEDMa4mQ4T5NhP0I4RUOcDF3CydS1A0DUmOM3IRL7RMo97QgQOVriRKiwJsJDZ8AHJKyJXOV1LzjVosKaCKdpIp99QTsCxI6mOAnO0kToEsI1JrtPgi7hJJr3tCNA7O5rBxAGKqwJ1LaZ1QDn2J9wAiSsSVCswz3a4gToEk5gVjsAJOBAO4AgkLAm8G3tAJCA5pDGeDbO0QTe1A4AKRjyvurZ6DefbYEXvSCBxng2KqyzfaAdANLAs52zkbDORqUOEVTyZ6MKPdPcjnYESAXN8SxUWGdih3rAFySss9Rf1Y4AqdisaUfgPWrQs8zzwgTE0B7PQIV1hvrn2hEgHSy7dhYS1hlqLe0IkI6lC9oR+I4S9HSlvnYESAoN8nRUWKcbmA3tEAA8R0I/Xa2tHQFS0qtqR+A5Etap2D8Vwlgp+VR0CU81XOd1CUjqkK9OVdEOwG/l2aZ2CEhKRzsAz1FhnWb2x+QriJqjwjoVY1inKe2z+wSE0SRPQ4V1msvMaQB8Qjo/RZ1Z7hC3O68dgc9IWKd5sqQdAdJDmzwFXcJTzJGvIO6udgBeI2GN1/y5dgRI0LUhJdZ4nJvxmOYODR0eTY9HhTVeWTsAJKlGoxyPczNed087AiSJJY3Go0s4HnOOoYNWORYV1ljn97UjQJq4U45HLh+HIXeoKXPxjUHCGov7HLTQLMehSzjOGw+1I0Cqtln1aRxS+RjsPgE9vRr1/WhUWGMMWUkNaobkqzFIWGO8xe4TUFNlxYYx6BKOxjNCaBrwmsVoVFijDQdd7RCQMNrlGDyOGK1c4pIBvEOzHKn8mXYESBtrzIxGwhrp/Jx2BEgczwlHImGNVLuoHQESxwZzI5GwRvqv2gEgcf19+oSjcFZGmWElLOgaZjTNUaiwRmEEC8oy09AOwUskrFH+h3YASN5wWzsCL1F3jsAGqvAAbXMEKqwROCnQt6UdgJfI4idVdtlnCR6gcZ7EORmBOXvwAY3zJHo/J/GMED7YrWlH4CGS+EkHPFCGF2idJ3BKTqJHCD/QOk+gS3jCUoeMBR/0tAPwEDn8ONYahTdK3DuPocICvEW+Oo6Eddw7O9oRAE9tVLUj8A5dwuMevqodAfAc7fMYTsgxZUY64Q/a5zF0CY/5knYAwEtMYj6GDH7MnTe0IwBeooEexfk4KtutsfMZ/EEDPYrzcRRDWPAKDfQoxrCOaN7SjgA4jBvoUSTwI1hrFJ6Z3deOwCtUWEewHSE8Q746goR1xP/hRUJ4pT0sa4fgFbqEh5X62hEAx/AC9GFUWIe9pR0AcMwq+eowKqxDsp98TTsE4LgKdf9LJKxDWAoLHqKNHkKX8BCGN+Gf+9oBeIXs/VJtbUE7BOAkGulLnItDGN6Ej2ikL9ElfOm8dgDACGsMVbxE8n4ha7FxJXw0pKx4gYT1Ej1C+IlW+gK5+4WLXe0IgJFYou0FcvcLFFjwFa/nPEeF9RypG94iXz1HwnruHZbCgqc2aKbPUVc8d/+qdgTAOGXeGnuKhPUMK8vAX32G3Z+h1nzmHe0AgLEGs9oR+IIK65kHl7UjAMajoT5FhfUM+QoeW21oR+AJEvdT7EcIv83vakfgBSqsp1a1AwBOMyBfGWNIWM80WKkBXmuxZIMxhoT1DOs0wG8zjFkYYxjDemZvRjsC4HQ0VWOosJ4qk6/guX0SljEkLGOMMVXKbfiOl3OMMSQsY4wx3eG6dgjA6eraAfiBhGWMKWcXtUMAzvBEOwAv0DHmvWcEgmX8qLCMMWbQ0Y4AONsy+YqEZYwxZWZhIQCLXKckLGNM82PtCIAJzDypaoegj4RlyiyOhhCUZ9jXiUF3Y6oMYSEIB8xvJmHxjBDBGPAGNAmLLZQQDJorY1iMYCEUzB0lYVX/QjsCYELn6A0kX2NmvFOKcCTfXqmwtAMAJsa8huQzdpcxLASklnjOSj5hMSqAkKTeYFPvEl6/zxgWwvFwUTsCZYkn7IUt7QiAaSy/u60dgqrEExY9QgQm8RabeJewRocQQTlIfM/6tBNW9iDt3x/BaT7WjkBX4gXmflM7AmA6aTfZtCuMCvkKoUm7T5h0uq4kPgkPAWrXk26zSVdY/V3WwkJgEt+fMOlszVqjCFDSe0AnXWEtawcATG3YT7nKSPl3L/X7LDmL8FQSHslIucIqGfIVwtNOeUmklBPWt7QDAHKobGhHoCjhLmFji510EaSEW23CFVaFfAUEJuGE9W3tAIB8El5jJOHiMuFvHYFLt9mmW2Gl/KgFYdvVDkBPsgmr+TPtCICc5taTvd2mW1vSI0S4km23yVZY7O6FcN1N9vJNNlPfvKEdAZBfqq/npJqw2KEeQUu14abaJXyXhIWA3ZzXjkBJoglr8XcS/cURh7e2Z7VD0JFqZckzQoQt0ZabaKGR+DqzCN5aojOx0szT2epF7RCAYtJcKTnNCitraUcAFJRkvkq0wppN+GUsRKKe5BYqSVZY5XvaEQBFtbUDUJFkwipRYAFBSrJLWO5pRwAU1U5yz/okExaTsBCDaoI3XhIWEKgUG2+KY1gp/s6Iz2PtADSk2Hj/l3YAgAWzKfYUUqwqU/yeEaMEW2+CFdacdgAAckowYX1POwDAjmF6zTfBopIeIWKRXvNNL0WXtQMALHmiHYC85BJW5WPtCABLzvWTWxUrvZqSHiHikVz7Ta7CWtIOALDmQDsAccll6IMkXxlFrFJ7nzC5hEWPEDFJrQGn1iW8wdp97m1qB5COm4vaEQhLLGHN/tHr2iHEb8D6iGLe2kxsR9XUKkp6hAI+67+jHUI6EmvBqVVYiQ1R6uim9/AKQhJLWB9XtCNIQW03zS2oVCT2PmFav22VhiShVP5AO4SEpHVNp5Ww6gy5S6jUbmqHkI7EHskmlbBqn2hHkIZGuftQO4ZkLKX1HCmphNVNq3pW0yzN/Vw7hnSkVWIllbBK17QjSEO9ef6WdgzpSKvESiph7WgHkIist0DCghNJPeZvageQiMq5/g+1Y0jIaiWh2YUpVVjJLXam5tyTv0zsjRFNi13tCAQlVGFVHgwTe41BTf3jFs83xNRTOtcJVVjDDvlKyl8kNRCsrZTQWEc6FVYlpcJZ2Sd/MjT1tnYU6dhPZxm/dCqs3jCtCSua/nrZmI52EAlZTSZfJZSwZu+xnLuUj4bGMItETjqtOJ3VdGrtPjsSyuiXZw6MMaW+diAJqadS0CaTmzs75Csh5U/bxqS2ioCyVPJVOgmr9Ll2BOn442e5ikFDKd26dgRSkukS/uRXtSNIxvZXnu70UeM5oZiHV7QjEJJKhZWRr8T8aPnp/3bWdONIyWXtAKSkkrDe1Q4gIX/4fNZoaltQaZrTDkBIIl3C8q15JjUI2Xxt7/n/Zb67mHtvaEcgI5GExTR3OeuXXuQpEpacRFpyIl3CjAdWUtq/dyhNJfO0XV0q94Y08jJzGOUMvvrhi/9fW1tQjCQpvUoaTTmN37Le0o4gHduHh9pTue/7II2mnEaXkEnXcr5x5L/IWFIS6USkkZZpNnLeuHfoP+Y2eSFKTBJtOYlfsnGgHUE6lo/uVcutQk4SbTmJLiGtRs4faAeQrBXtAESkkJUpsOR0b9w/8t8Zw4dyKgmMY6VQYfGIUM5Pj+YriltJCeSrJBLWq9oBJORPtANIWQr72KXQJbz9Go+qpLy+fOwPZvZG/jvY11p9UzsE91JIWHRLxNy+ceKPOPtithJ4wT+BLuEl7QAS8ocj/oyMJWWxph2Be/FXWKW9hnYIydj61dsn/7CVzPK9+hJoztoBOFdN4Lbji5/eHvGH5CsxCWysFn/CGrCyuJgfj/xTlvaRMhP/zSH+GnKLFU7EzO+O+MPq5ox4IMmKvj1HX2FV57UjSMf9UfkqoS2o9MW/YGL0CesL0d9z/PHN0X/MLDgxe+e0I3At+ub8g9/QjiAZe1++N/LPeZ9QTvT7E8ZeYWV/UzuCdLw/Ol+ZIZtui4l+f8LYE9bXoi8h/fGNcX/xBcko0rYT+2T32Nvzd/+2dgTpWBg7DYjJ7lKGH3xVOwS3Ik9Y5Z52BOnojV8sgIQlJ/IWHXmXMPJvzyedUe8RvvhLsTBSF/uaWHG36OpjZmGJ+fJHY/+quhr70IpHSlHXs3EnLPoicjqnzQ/le5ATd5OOu0s4x+pxYv7o1L/tCkWByEWdjtmhXtAXbp7yl3MP5sQCSV7UbTrqX46eiJy109dJ5JuQE3WbjrpLeHFDO4J0/L52AHgm7pk8MWdj9iMUdPHxqX+d9aK+NfqlEfEScDFfRuxHKOfnp+crM4z5QvNNxPkq6oTF3B85f3rWP6B3Dhti7hLenSdlSXljzEoNL1SZ7C5mJ+JFdmNOWP2Yy0e/rFw785/wnFBOxK064jY9H/Hv5pt/e/Y/ecIyfigu3lxcupnAxt2eePLlR2f+m9oT9qIQE+/7hPFWIYOKdgTp+OjsfGU65Csx/WjzVcQJa/aqdgTpGL0f4VFZ5DMafXI/3n0/4u0SxnuT8c9kMxU3ot/SxR/RtutoK6xovzEPrUw2U5F8JSbet/6jTVi/rB1AQv6jdgA4pjOrHYEr0RYiP/66dgTJaL172soyL2UH7AEt5WA20iGRWBMWS2HJee83J/yHWxHPwPZNtA1bOwBHvqYdQEL+w6T/kHwl5kGsmxnEmoh/8qvaEaTjlfVJ/2Wk3RQPte/9knYIbsSasGgaYtqNif/pHpNHxUTasiPtEtIw5Pzzyf8pXwsKijNhVdgtR85fTP5PSVhyhuM34g5ZnIVjYz/O38tHZ+w+cRQ9dTlxNoE4K6x+nF+Wl35nmn+86SoKJCLOlt1ihqKYxe1p/jWLKsqJsm1Hef2UyVdi1qbKV/QJUUyUCSvidz+982+m++fxrnvind0oR91jLBsrm9G++umdwZXV6X5g7aKbQHBSjOuOxpiw6HfIuffGlD/AdyMnxsYdY5fwVRqFmH819U/w5UjZ0g7AhRiT8K3r2hGkYphVp173mG9HToStO8Zfif2kxOTYspMKS06ErTvCLuEV7QAS8i+1A8ApYuwTxpeDq794RzuEZNz90sHUP0MBLCi+5h1fhdVn/1Qxy9PnK7qEgja0A7AvvoSVdbUjSMf38/xQ1rIdBsY4P6xph2BbfDUjd3ApW4vTPyM0hm9I0CC6Nwviq7AgZfED9nL2XD+613OiS1iRLmXtob757Xw/GF0j8le1ox2BbbF1CUs//ap2COnI+64afUIxB7Et8hpbhTXLM0Ix38qbeAa7VuPAeM1F7Qgsi63C4uYtpvXa45w/WWbsS05kLTy2CmuVRXil7Lfz/iTLlcmJbRCroh2AXYsNdheWcrtAx24Y2X3fX7F1OeK6cHjtQ1At/wzd8so0W+2gkALfk4fiqrCGrd6cdgyJ6N4u0A76LDsqphNVvoosYV2afNd0FFP9oMAPl2MbOvVYZHPdo+oSzt7mzi3m2kqBH67lHrDHtPYXY3ooG1XCMoO4fh2fbS0V+vHYxoJ9FlWjiKo2n4nqq/Ha8EfFfr5FxpLyRDsAq2Jq4sxHlLPz9sNCP5+1olv4xF8xNfKYfpf43vT0V7tZsESiwpITUyOPqUvI9qly2oUTzr6NMDCBe3XtCCyKKPkya1TO6vUciyMfRYklJ99Ci16KKGHxjFBQ8VNNwpITUcOIaOJoOaKvxXPLg6xwvhlsnrcRCs52UImnwoooYcXzpXiv/CvF66MyJZaUZjee9wkjqkpoAHKaFna+Wb9Q/DMwmXiaeTxPCVkpXM59G2/WNC18BiZyn4TlnRKTsMR8+I6Nanb+YwsfgklcG0Qz9BNP6qVHKOX29by7TxzFNyYnmnYeTYV1nv2EpVwfkGpCE83mObEkrMoDlsISMjQ37HxQxuY5Yn6gHYAt0ZSK3PTlzBSe5v4U35mcWBp6LBXWde0A0nHw/yzlK9PatvRBOFMsz2QjSbzl7/2mdgjpWLSWZyixxHz4rnYEdsSSsJjmLmfe1thTw1aphrNF0tIj6RKyUIOcZWtj5a3otvmEa3EkrOrn2hEk5Ev2PqoUyW0/BMM4lniNI2H1zmlHkIzeyp69Dxvu2PssnCGOph7Hb7FYbAsXTK7yoc0PY4UZOXHMrI6jJt+YjaPeDcHlRxY/bO4BO3UL6VajaOtx/BKMuYvZnbf6cUxskBPFQslRdAkvaQeQkO9Y/ry+5c/DOHtRnOooKqwf/Zp2BMnYvf7Y7gfu0CcUE0Njj+F3oF8hqGL5Ps13JyeGxh5Dl7CsHUBCfmK9X8FsdykbMSSsGH6HlSvaESRj+6L13QwoseTUw3+zIIaExSUvx/71wrcnJ4LWHkGXsLylHUEytpYdzHd7Yv8j7ktltwAAIABJREFUMVIMU0cjWJz+UTR7rvlur/3L9vsUxbdkxYQaw/BLrPB/A/oUglxcLkxskBN+cw+/Szi7rB1BOj5x8aHR7I/gv7vhrzsafsrtRtCrDcTmKy5e7sg+etvBp2Kk4Nt78L8APUIxn7zt5mrhG5QTfHsPvkv4hnYA6XhLOwAUZvfVdQWhJ6zyN7UjSEZ/4Gj1qkYMqwgE4vvaARQVfIlIf0KOve1yjuI7lBN6gw+9wnpFO4CUuNpG8BYz6cSE/kw28IRV+VPtCNKx13D1yV9uu/pkHPdd7QAKCrxCrHBvluPsWiltz7r6aBwXeIsPPXwWR5bSqrqb8MYglpzAW3zYXcJsTTuCdGw7fCKePXT32Thqu64dQSFhJ6yFC9oRJOPxQ5cr7V12+Nk4Yj7sUZSwC8TKJoMfYsruut9LLDEjJ+wmH3b0W82qdgjJqDm9M/fDLvUDMigF3eaDvk7mF8hXUlbc9iT2nH46Xgq6xQdeYZWi2GktEG6vlOEg8IYUjieO3rCSEfJlUmHDFTGrjldSynbdfj5eOBf0JJKgK6ygz3xQ+geuX/Pnu5QTcqMPucIqUWFJ6TtfxpjnhGIehNzoQ062vSzkMx+U9pzzJWAosaQMSra37xYUcpMvhxx8UPbqAjc23rISUjLh5quQExY71IvpGvfTo/cDbkUQE3DC6j3QjiAZSwvuj3GOEUkpw4C73+FuOVM2V7RDSEVvZcf9QTr292jFaCEPXIcbe9ZysG06RpO4TJg7KubBtWBrrHCvkR3ylZSPRRbFyFh3VMqVcB9whFthBXuPCFBdpLu2uShxFBgTcLsPdgzri9oBpGPjfZnhJfKVnEZLO4KcQu0Sln5XO4J0rP4DmeNUbskcB8Z8qh1AXsGWhvQIpbQyZ9vlHMN3KifUhh9qhXVVO4B0NCSmuT/FFtBipG5CtgWasKq/px1BOu5VpCqfLNgR1fCEOk030MqQ/QjFfH5dLo0wFUtOoC0/0LBZa1RQSWxsKdsPtacSnINmmE0/0DsarxFK6TzO5MbCh+QrKc1AV9EPNGGxH6GU2iPHiyMfVnrAg0IplTArrDCjnt/WjiAZw1nR4dkHbKkqJsi2H2SFVbqtHUE6MtmdzclXOFWQCasZ9EZFYfnzTe0I4EglxMYfYlnII0I5j68L77/VZS6WmCAbv3YAOQy6ob65GZ6m9ORz8pWYIFtRiAkr6/H0W4z4Vc3Co1KCXBQrwKqwyiUtZu/SvvARsyCbUaACbP0BVljdA65pIfsb0vnKDDcYocR4AQ4ZlARnMiauqzCPkyfAcirhLY8RXoVV+yG3YCmLb8sfk+0mxRw81o5geuH1YhnkkLP+isZBee9KTHjNP7wuYXjnOFi3VN7su3BAn19IgBVWcF3CrMtuUFIWv6Jx1CzAZhSoC+G9ax5evRLeOQ6XztXBNywnuPYfXIU183+1I0iG8Es5LzzaUTpwesLbpyi0DFujQyjm068oTdEdhHZVhmv1cmD1bHCXRmDnN2haFwffsZzQEkBoXcLmsnYEydj6SOvId1nSRkpwL0CHlrBuvqYdQTKyr2sd+U2m2klp3NaOYEqhVYT0FqS0GnrXBt+ynMAyQGAV1rUV7QiSoXrvpcSSshNYBggrv7LWqKC63jI+5fBeyg1XOai7Q1gJi76CmHZd89Lge5YTVgoIqyCsM6VQSv1HmpfGQ8VjJyawPYnDSq/MKBSze0F1Ydfbb2oePSXdalB9wrAyAFuqyHllXfPo9AnlBJUDguoSvkK+EvN91XxVIWPJCWrJxJCyK88I5Wxc7uoGcMDOSGJKAd0dQkpY3HXldJrKAxt813JCSgIhdQmpsASpD8SymZuUoJ4TBpSwsr56I0pGe0E7gqymHUEyFkKqZgNKWAvDqnYIqXjyc/3HG0y5kzKrHcA0AkpYuyF1tcPWaOxph2DmtQNISEBZIKAksF7jGhYyPLelHYKZW69rh5CK4TCcmQ36pf+kKmxXJ+a+fr4yuzskLCFZQGVLOMVgSCODgXt4VTsCY4y5eKAdQTKehJOxwklYq9oBpGOo/ozQGGOqQT1uD9q53WCeZ4WTWqmwxPT8uHz5xsVsBDPeEkyF9dpfaUeQjK4nb5cx707Mk2DGskNJWM0//hvaISRjuenHKwUNEpaUL6yFMhkrmC4h/QMxjy5rR/AM37mcUBJBKBUWL2qI2fLn6Zw/kcRu1Y9hy7OFkrA+0Q4gHZUvaUfwXEjzgwJ36aZ2BBMK5ZKgdyDHn2uCb12OP9/6qQKpsF67pR1BOtj6MUXL2gFMKIy8yj51gjzakyDzJ5T4Vfx4NnyGMOZfBHEq47BT8ShJ0CUUFEYjC6NLeEl/tZNUzO/79M7xR8oryydEddORyYXRJez22JJAyMpbbe0QDinfu6IdQiqGWRB7UYSRsEI4k7G4/Eg7gsP45uUEkQuC6BKe1w4gIXtr2hEcln2Pxy1izmkHMIkQsirPiuSsX/Vs1Kjnx4vYSQihTxhCwqJfIGfgW37guxcTxBozIXQJK0+0I0iHfzcw+oRSgpjXEEDCyjYXtUNIRs+7fT6yMGYKxqCxrx3BBAJIWM2DAIKMw+Nl/ya8hfJWbvjmfZqBN45/XYAT6i3tCJLRrfp3PTCIJcejt7LGCaB4aW1rR5CMqof9r1AWaorAMIBRLP8TVsl4sYdLEj728Irt3dOOIBn+ldcn+Z+weClHjpfn+nXtANLx0P+U5X+EezPaESRj9ZqPcwhKu03tENIx4/uq1P4nLAZd5fh5NXAFyPHzCjjE+y7htfe0I0iGrzfXwY52BMm47f3MBt8zauM77Eco5f6bHo65G2NKfoYVpY3XPZ896nvCoj8gpl+uefbi83NcA3J8Twi+dwm9fG4Vp57xNF+Zxx3tCJKx53uf0PeExYsZYrrerod0UTuAdMz6vmeS7xUgvQE5/m6b0vVwBn6sPM8InldYb97WjiAh3uarQPZ2isIjz8+13/mU/QjltM97/Hxon7mjYvx+A9rvfOrvPT86t/Y8zlckLEFe5yvPK6xzG9oRJGNQ8vnOylCmmF3v1nA8wu8xrNvaAaRj06cdn0/IlrUjSMbc0Osixu8uIQvLSFl/4nf3m/1U5XhdznqdTV9jKSQ5Xl8JfjeiyHh9JXjdJSRfifkzv0ttz3sCcfH65uB1wuIpoZTP3/X8VPc/0o4gHZvaAZzG5/Kv3PE7nUbF32nuTzV++o52CKkYlDy+GHxOWI8uaUeQioPBor+X6DNed1Tisj+rHcF4HtcwTfKVlOaW/3vTPPRvy8RYtTxOWB5XWDMr7Pgso9W97v8MXV7TEuRvWvA3Ml7HEFQNIBvQJxRz4O/GL/52CUvkKyndXwSQr4wJIsgoNOe0IxjL2wor8/lNkdg02toRTIArQpC3ecHbCmu4yvUppHvg7VVwGF1COS3tAMby9lItLXkbWmzutnzd4AtKMm8bn6+Blfo17RCS8cFXtCM4zdPOSVadMUtryqGko973dTMKb/uqrQGD7jDGDPtmmJnS9tKt+39HO5aE+JoYfI2rdOsN7RDgk74pHWyxyIyUdtPTIUNfu4TfI1/hsHI5mwnhWWYk6o89XR/D1wqrzRAWjlu76OvlGiFPX4D2tMJa8LQghaYl8pWYbT/zlacVFu+NAbqGNS8boZ8Ji0mCgDI/U4OfXUI/zxWQED9XHPIzNVBgAdq8zA1+VlgAMIKXCatMhQUo8/MFUx8TVvZQOwIgec197QhG8bGfyqQGwAM+JgcfKywA+lbL2hGM4GMSZQQL8EHZv0U0SVgARvMwO3jYJaw/0Y4AgDE+PvzyL4dmg+0F7RgAGB/Tg38V1pB8BWA0/xLWDPkK8MO8dgAn+FfzMeQO+MK7/OBdhVVhyB3whH+LUvuXQT1d6RBIkHd7gnuXsOgRAv7wLUH41iX0c9UwIFEkrNNRYAH+WPWtQXqWsLL3tSMA8MIl3xKWZxXflRXtCAAcUvIrZXlWYa17uWgYkKqWZyWNXwmr8t6MdggAXmps+rUHu2f506/yE4BfKcKvCgsATuFXwuK1HMAzQ6/mRvpV79EjBHzjVY7wqsLyKpUDMMZsagdwhFfZc980tUMAcIxPSaKiHcAhTdIVgNP41CX0KXkCeGrfp0LCo4SVbR9ohwDguJm7De0QXvKpe8ozQsBHHmUJjyqsOgUW4KFH2gEc4lHCes+/fbEBmFc96vt4VOx5dFYAvPT4onYEL/iTsBr0CAE/+bMXhT9dwjvaAQAYzZ9VsfxJWJe0AwAw2rI34zXeZM4ma40CvvKmT+hNwvImhQM4wZdE4UuXkIUaAJzJl4QFwF9r2gE850vC+lA7AABjveLLkI0nXVMmYQFe82TY3ZMKq9PTjgDAeLtd7Qie8iNhVd5nLSzAY3NdP/Yn9KRL6EsPGcBofqQKPyosjxYIAzAKCeslbx6aAhjNj9Wf/Eib9AgB33mRK7yosLwIAsApWtoBGGM8yRXdbe0IAJwu86If5EOZV+prRwDgTF4kC+0AjGG7ZyAAOz7MxPIgaZZ3mdUA+K8329EOwYeExTNCIAgeZAsPuoSlHe0IAJxt24NV6zxIWHtb2hEAONtCRz9deFDk9fXPAoAJ6KcL/WRR0Q8BwAQ29PuE+imTIXcgFOr5Qr+8WdEOAMBk9Ieb1RPWuavaEQCYTEW9P6Re4qmfAQCT6mmPYmlXWNrHBzC5x/PKAWhXWFX9yf4AJlbS7RNpVzhPlI8PYAq7ymM4ygkr067wAExhZkn3+LoJgw4hEBjdlKFbYXX7fmwnC2AyyntR6Cas0kFd9fgApvNI9/Cq9V3jQPPoAHIoaxZZqhVWi4QFhEa1U6iasFioAQhOWfPgmilj7mPtef4ApqU6d1JzDIvtvYAAqSYNxWPXHygeHEAuyxXFg2smy93OOcWjA8hHMWtoHlp5ChqAXBRfgFbsEma8lwMEqKv4nFCvwmruqx0aQBF6aUOxS8hao0CY9NKGXpdwQe3IAAppqh1ZLWGVP9E6MoBiPlU7slptl2mO3AEoQi1v6FVY5CsgVGp5Q+3A7J8KBEvtrTq10o5nhEC4tBKHVoWl95gBQFG7NaUDayVKCiwgYNuLOsfVqrA+UDouAAu0EodShVXp6hwXgBUNnQ2vdBLlLPkKCFpLZ7lgpQprc57l3IGQ6aQOnbyR7ZCvgJA90klYOkftMc0dCJxK7lCpdKrkKwA5qCQs1kYGgqdSYakclFmjQPg0kodGhTWvcEwAlmlMdtdIWOUDhYMCsEtjVwaNqo4eIRCBh1fkj0nCApBPtSd+SIUuYUNvQWgA1mwrLOMnX2GV97WW0gFglXyJJV9h9clXQBTWUugSnhc/IgAXXqmIH1K+S9jbZx4WEAfx/CGfsHhGCETiYEb6iOJdwob0AQE40hQveMQT1sGe9BEBOCK+joF4hqRHCMRDOoFIV1ishAXEY1P6gNIJcv2C8AEBOCScQaQrLGaNAhF5JHw84fxY7cgeD4BTwm/nyFZYdfIVEJWu7DJ+whVWL2N/LyAinbro4WTzR/WAfAXEpCXbpGUrrOVroocD4JzoKJZowrq2LHk0AAJEc4jowcryy+cAcKsiufCoaAe0ty15NAACRMsQyYS1aBYEjwZAhORzQsmExToNQHweSCYRyTEsFmoAYiSYRQSTo8YWiABiIpiwytLvSQIQsC64aJRc2ZOJL04IQML+rNih5CqsYVfsUAAE7csdSi5hZVWxQwEQNCuYRsSO1B2SsYAYDTOxPCKXsJjUAMRKLI+I1XLsPgFEK7qElfHeswjB4U/gBbEpAFIJi4X7ZMyYh9ohAO5IJRJGsIQ8eXJLOwSkZ0PqQFIJa1foOMk717rBcCGknZeqSIQSVp2xFSF75342yCRXVAMECSWsARs+C5ktf61umtpRIDkVmcPIJKxF9iMUcydrmy41FoQJvXknk7C2t0QOA2PuzBtjjKl8rhwHEnMgcxiZCV+VrRmR48B0arWn97p1euEQJbIZhUiFlZGvxDzPV+bibdU4kJptkWEIkaGyGfKVlNt3X4wl3Nie14wEiZHpE4pUWCzTIKXX/xcv/4M9iiDoVZGpWCJjWFs0HTFHvlDeL4AgiWQiUmGRr4T0zc+O/Df7fkDO1pzAQQQSVsZ9Xsr+5//06B9k39UJBAlq7ggcROIePOwJzYJN3sH69ePrfHC3gBiBbCJwiDJLYQnpl0d9nz1ehoaI1RvuXxl23yWcJ19JKd9ujPjTWfZXg4hLe+67Uu4T1s5+2/kxYIwxZnll1KlulzfFI0Ga3Bcn7ruE89vOD4FnhmPuPwxkQcKdG86vNOcVVv1/uz4CXhi3rExGjQUBb7pf5MB5hcUO9WK6G5fH/h01FiQ4zyfOKyzmLorZfHX8yZ5bFQwEcMV5wmIlOTFr1fF11N6rgoEgWc4reecF0D7L9Yo59cusbfJNwDnXCcV1hVWnlYjZO/VvO/P0CuHamutZyq4TIoO9YlpnzhA9GDWvFLCp7PYpGwkrHmd+l4tPeAQCxxxfYo67hCzdJ2aCDt9WlX3s4ZbrHZMdJ6wODwml1CYYPehfMbx3AJfmHPep3CasimGlACmdicYOskUjsWoR0uW2ybt9vZqlRuVcqkz25inrKcKlzZLTXpXTCqv+2OWn47DW7KRvytfdL1qEdC116i4/3mnCat9x+ek4rDHxVuGd2Q2XgSBxD50uJ+W0S1h9w+Wn45C921MU4hfoFcIZpwWW0wqr1mHaj5T2P5tmvh7fC5w5N25VNiucXrq333T56TikN+WMt81FN3EAuy53HHeZDEvkKzE/mvLfn+fFQjgycDmxwWGFVe24+2wcMdz4ex9M/TNbFFlwoVdxmFVcdgkZ2pVyUJqZ/pVTvh444jCrOOwSMrIrJqvneEU+c78AN5K0HmTCqgx4j1DKSq5XCpYosuDCxYG7VfBcDrrzHqGQdi3f+4HZTywHAhhjjDlw9snuEtaAae5S6nlr2V83rDcD+z5199HOepvZYMfldAwcNnf66sinuT1/3mIggDGmV6m62gPaWcKqt1x9Mo7plwt8i/U9eu6wzlnCcvYuoauAccL99oQry4zSrjDyDtt2nS3s7qzCohmIab9abIJCZ+uipUiAZ1wlFucbqcK5esEJVbX8I2DASM7qFVcJa87R5+KE3r2in3D9lo04gBc2XI01uarc6BGKaed4Lec4vi5Y5iiz0CUMXp7Xco7LHM6cAexxlAeZ1CBme8HKd7iVMW0OFpXcVO2OKqyWu7n5OGLYtDOP6pzblW2RmkHNyce6qbAqE++IgMJsfYVdt1u+ITFuUoubCqvOIK4UezP0qsbpdidIy96Mk491krCy+6yFJaVjbwJJ9gPDloWwZHbPydQmN5mFAkuOzW+Q7w32OMktTios5kqIebBpc2wzy5y9A4bkOHmr3kVuKa85+FCMVPpbdrf6KD8gZcGO/Sm3npuIk7Kt7eaJJkao2F6Imm4h7Fh/xcGHuqiwSuQrMbesL5zP8xLY4WQNEBcJi80npAxv/bb9DyVjwQ4XxbqLq7PHGpZS9mddfCq9Qtiwdsn+ZzqosOqP7H8mRptxMjs94xuEBS52gLafsKotN1NccdLynJuVqC/Tq0dx5wb2X1C1n7Ays2T9MzHS3p6rmem8Vggb7N9P7Ses3rL1j8Ros190NtrEyDuKu2e/UreesCod1lUS03D30ZnF16qRqFeH1vOL9Q9slBdtfyRG6++43Est4wUrFFQz1qsX61clK/eJ+Xjb6fyR8l89cPnxSIH1QVbrYxXM4RGzccXue4Qn8F2iKNsJhoQVrJ6LaS7H8G2iGNvXqO0uoZOZ1xjFcXlljDFmRuQoiNam7ZlYthPWruXPw1h9gTegDmaZpIIClmxvn2W7YqMPIWVQEpkrxZJ+KMTyVWq5wuK1ZzGdvsjGXEOmkKIIy4NElhNWb8/u52G8utAmN2QsFLBr9/qx+2mzDGHJkUsk9PORn93r1G6Fxc1YzOC7csfia0VuO3bXH7Z6LZbbjGFJ2V8S3F27cvOyiw0FkISGzbELuzdPdp+QsvbkHdHjDc1BU/SAiIbVHGP1w0qs+yanJDuyNBxk9AyRw5bV9fFsjmGVBDspqds+LzwSnrXJV8hjcWhzOUibCWvgav1LHHcveyJ9yJnvSR8RkbC5CpLN22bZ5fJMOEzixecTmN2APHpNi4nBZoVFvhKzr7HRB4NYyKNic6jIZsJicygpNz/TWSeRjIUc1ix+lsWExZQGMYu/pjTHILP98j0S8IrFwQSL90yGOOTolTp8y5jazoK1j7JXYbGVnZx79i6AadErxNT69pKDvetvftvaR+EMVc3nGwNyFqZl7ZqxVmHVtmx9Es4kshLWOGz/hWk9tnbF2rv6WJlSyt493VXHMt5owHQWrL07b6tUYyVdObuL2ie7w9oNmI6tRGOrwhoOtRtRMtbn1E91jYVlMZV1Wx9krUu4y9CGkLYHT+rmtANAWKyt7G7p2q8zoVBOzYcxJOZjYSqWlkOyVBe113mRUMjGfR/ylcluaUeAoFi6w1mqsFi6T5B+j9AYY8xwl44hJnXzS3bus3YqrEs/psCSMlCdhHVINv9YOwQE47qlJ8t27tashCXnwVXtCF5gLgsmtr1o5WPsVFi8RyjninYALw0znVVuEKAVOx9jpcIq75WYSSjk3ttePZDtcq/ChCo2BrrtdAl5xi3HkyH353gVGhOycqVY6RKyfaqctfPaERxVYuQdE2lZKcZtJKxGjzF3Id2ffn1DO4ZjLmoHgDDUrcxrsFKm3bxh41MwCQ97YPQKMREb14mNCmuefCXGt/rKGGNKHe0IEIIVG31CC0mv1BswiCVkcMnLISMeumACd64X/wwLCWtmh4UaxHja+yJjYQIWlva2kGta5CsxH1pbpsOu7Il2BPDfnoWJWBbu2MMOOxIK6de8fRnm4avaEcB3rUbxdGMjYRX/CEzI0x6hMcYMzbbe5mMIQ/Hrt3h3buH9wh+BCa14/AZUxhulOMOd4huWF055Dd5/lVP2tkdojOHFQpypWfRN2MIVVutB0U/AxIrfoJyqMiELp7pX+M39whVWxYsFe5Ow3r+sHcJZdliEFKcpvLJ74QqLfCVm75p2BGea1w4Afis8psEcqmBsvxnAl5Xd0Y4APtsp+gFF2wCr5Io5CKKave7j247wReEJxgXHsMhXgqys2Ojeh1/WjgAeK5pxiv34DHuWS9kondMOYULMJMZ4BTNOwS4hk7DEnA9mklNWeKAC8Sq4skvBhDXYKvbzmFjrFe0IJrbg5Ro48ELBBRuKJaxZY2ezMZyt5dVuOae7SOUNN4olrG4Yw8AxOAjhEeELMze1I0CcCiWs8jZLjUrZflM7gql8wWxTZWGU4UyRny42Zs/zIDkerywzEtcGRit0JReqsOq8+CwntMWmMlYhxSiPCuWcIj+ctQoVd5jCj17b1g5haud5hIyTXm0VKbEKlWcsiysntB6hMYZuIUZ5XGTv3SIV1jXylZgwR7CzgKZiQMqwXuCHi9y49+gRStn46op2CPlQY+GEYYEyqUDCylrsliOm8MJnWlauaEcA7xTIOgVyXYl8JeaWp/sRnu2qdgDwTpE3t/LnumywxXs5QtqzAb9ScO817QjgmwJpJ/9BQ+2khGdrPug3CniYjGPyp538XcIvruf+UUxnsRTM0jKjXF7WjgB+Wc6fdnKnumzP8z2nIjKcD3ydxI1Q1h6EkJm883Ryp7rhWt6fxLSygEewjDHGnGd3JRz2KPe8wtwJ64L3e+RFY6cdfGvPGPHEIc3ceSfvD2bLTGqQshfyM8Jnstq+dgjwx0LuKzr3GFY36HHgkDw5F+ys0SOi+CVgSd7Ek7vCIl9JeRJJU8862hHAGw/z/mDeRHfQyHtETKseS0tfv6AdAbyRM/Pk/LEmIxJSNspL2iFYE0epCBtybgucM2GVwh8GDkeQS2GNRsbCM+V8m8bnHMPqBz6TMSD9mEYLWTYZTw1yljz5EtacCXb1gOAsR1XMXtzVjgBeKJl8o+D5ElZGaS9l982qdgg2DeZNLI8QUMhevusgX8J6EtGwiufWa8FPcz8qY8YxjDGz+cY68mUeFkeWE9+9YZN11GByXtm5Kqwa+UrOee0ArFvivXnklSdhzazkeyKJ6e1e39AOwb5L2gHAB7l2z8mTsLoXCu3disn15+5oh+BC9qfaEcAD7Rw/kyf1BL1eb1jKH2lH4MY/MreYkZW6lTyj7nkGvtaK7NyKqby6qh2BKzy4SV6e54Q5KqyLXGlyiuyI5DemHidvP0dfLUfC2utN/zPI579FNWv0qKzL08K07ed4iSNHl5AXn8Xc+mLUz2Nvv6kdATR1cjwmzFFh9XMvII/pdBejzlfm+i3tCKCpluMNvxwV1nDArAYZ/XIciyOPF/mvhzNMn37y5B7ylZByNfYGnf21dgRQ1Jr+R/JUWNP/CPLYG85rh+DevaU57RCgpT39EjNUS/7qziXw6P+dPO9nIA4y87AgZKOUwLqu+7Ud7RCgJc8cBftRwI5BI43O98JwSzsE6MgxQYqE5a07V7UjEFJiCyZMioTlrXoy383V/8nLE0nKMYbFU0J/5dy5LUTDXkx7A2FSMvOwIKB7t5pOvjJZ9Vbck/phCRWWtxbSenzGZZUgKqxo7Jm08pXJSFk4GxWWr3Ju5R0wLqzkUGHFI71vJr4NzWBdes0iFAkNuT+Xxbu+KizJkbB27UeB4+7FvrDMSBcj2+Uap7s7/Y/kGcPaXJr+hzCVbjXR/lEn4jWhcYLMGBbXlHPJnuLaNkUWTpEnYUW4F7FvVhJYCWu0xXXtCCAmx66bebqEw0S7K5ISPsWrr2hHACFXHk79IzkaRm2P976ca+TZxjsSKT5uSJPMelgd8pVj29++lnC+MtmfmeQmzWJCeboew9b0SzFjKgn3CI1h1CEV1emXFcpE8p7rAAAElUlEQVRRYZVNZ/ofwjRS7xRlzGdOQo5l0PJspHo+gb0RVK3S6V5c1o4AzuXZfyRP6T3LXHfH6BCZCvOxojeXY5OVPLX3XifB99wE3c6zdGxseiTt2H2WZ1OoXJdFLeVnWO5tXc6xI26EUh/Ji12eAivfag1sGeBSt0y+MsYYkzG5IWq5dt3MlbAGD/L8FCbTfaIdgS/KDJbimHzPj9+yHAUO2XhbOwJvXPpAOwI4k2+gNufQJsMLDuWYThcrnhXGK1/qyTlDL9nlT9xrl8hXL/Rq66SsOOVMITkTVq9teFLoRo3q9ZDuK6TvGPU+z/m95p3tQq3uyMF5nhEeRQKPUd5NofK+tNUzhoblQpOK4pjsm7tU87H5s7xTVnLPJy71zYBXVK377/+YguKEYW/IoGlMduZzP1jKnXMGlT75yr5/Tb46KauuaYcAm2YWcvcjCryxRdOyb2dBOwJPcbHF5OGV3D9aIGHN5Jpaj/GGvToNcwxOTDS2FgtknQLduv1mh6Vsrcou0yzHyVghJBaL5QI/XGQcqlVjp3urDthAbTyW3InFd4qUOYUyziIvQdv0aEY7Aq+xQFYcPvm7RX662FVQ366ZHrc+S2iRZ3h8XjsCFLZ2qdCPF+vTtZvGVFgDxIrbRXr2abhwoB0BCiuWr4oOQg0q75u5/WKfAWOMMTd4gHGmGd6uCNyPi3Yjio6a9//h+2Zmp+CHwOwzlXsSTS61oP38N4p+QvFxk7mdPbb9KqZf3l7UjiEU915jk9VwFf/qis9L2K0xslDMZvngde0YgvG64dF0qH5m4VZj425V+/7XLXxKyurspT0FZteG6ce/buFDrJTX1c6DK9u8BZfTnQvnWFJmGqV2hW5hYLZnHrxu5Tuz9MXXeXyT1+71x9ohhKbUJ2GFpl+1UxhberemXbuzaeeTErOxvEC+mtYgK21px4ApbJrPbb3Wb/FOxdDCtPa7iw0W08xn2GUiSDia1npgFt9ezlg1eTqtmYUa+Sqn7NKQqy0IPfN+Zu+rsjsWcJfH8xPqVg0bEBZFTR+CB9dsfk9214d5IzO0wYlUh4+bGeeqmCxjUpbvtrOrVu8r1p+21Fum0+0u2f7YiAyzTs2Yed4Zt2LA80JftRoOZhi6+LpLfTPMdocNRkVHeHi51ci9KRtG+OzC/MFwXjsKnLCz5OAyd3N/as48rBhzUKo7+fQwDQftatUYYyp0BW0bGmM6psL6t34YZsa0L7jZ8sHNd3zwuJpl13frZtkYY4bthNfjHnS3jTFtYx6VZ6o/vpFVsj75yrYsy7If1bJ2q2eMMb39LuPxau5sm9WLWdZwtEWN+xGAd95L/aWdYWa+/fcTztmisoFpU9gr+eE/ua8dAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHL+PxzkP5GIJ5T3AAAAAElFTkSuQmCC\"\n      ></image>\n      <mask id=\"6e273c3c6d\">\n        <g filter=\"url(#ac4759936b)\">\n          <g filter=\"url(#c69d7a8db3)\" transform=\"matrix(.625 0 0 .625 0 0)\">\n            <image\n              width=\"1200\"\n              height=\"1200\"\n              xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAAAAADOSuwTAAAAAmJLR0QA/4ePzL8AACAASURBVHic7d1Zj2TJddjxuLln7b1MTy+zdA+pGVJDiqJkS4Zs2IBhQy8G7Be/+QvYX8AP9hfQq/ViwLANSYAo0QZM25IXSAJsLhY54s6Z0ay9Vld3V1VX1165px96qyWzKvPeiHNi+f9eyOnuynvq5o1zT8SNG2EMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjItAPAeOVSqd83JjMmywbDocmygTGmNDCZyYZmePQfZyf+D4wx5b4xmRkOtOOAHVzdnpo5KL3z737L7M8c/eNer9vrd01W3WjUTL/Xr+wNjTFDM9wZDs3QmKf/ZY5ns2m/5+M/7rlTfrtutTLs1ZfKX5z809Z/abN4SHCDhOWbardU+XTn3b1+1l/SjiVNg5Ixxpj9823lQHASCcsv5fqeMffKlyragWCwfsmYMn1Jv5CwfFLutR8u7l/VDgPPtczehWpPOwq8xJ3cG9XqZ4/NnbcNHUF/NEzD7OxcpszyBhWWJ6rllXPaMWCcekc7AjxFwvJCVu72KHa91S/TUDxR0g4AxpjFwW065x4rGzMc0lR8wI1DX629tagdA860uURj0cd3oO7GTe0IMKFSYBNqI0RHRNn8dlc7BEzqzoVZ7RBSR4Wl6+p97QgwFRqMLkYSVWU/1I4A01nRDiBx3DA0le8yqz04NBlNVFiKzu+Sr8Kzrh1A0khYemZ+0tAOAdO7QK9QEfWtmlJfOwLk0q7TatRQYWmpsAhAoOpDeoVquFcomd3VjgD58Z6OFk68jsovtCNAAdld7QhSRYWlorzGWjJhazW1I0gTCUtDhddxgterakeQJLqEGjjrQC40HQVzt7UjQGGlbe0IkkSXUF6pRW8iAsOMxiOPCkte6ZF2BLAgW9WOIEXcJOQNOOmR4IsUR4UlrtrSjgAIFfcIaRmb3MWiV6H5SKPCksai1NHgq5RHwhKWdXjpORod3imUxgkX9lvvcV+ORm21rh1CauiEyyp957e0Q4BFH31ZO4LEkLBkNQ60I4BVVXr4ougSysra2hHAqm5ZO4K0UGHJ2pnTjgB20YJEUWGJqpKvIkMXXxb3B0nZYMAdIjY0IUmcbVFD7QBgHU1IEjd8SQzQAoWQsCSxdUGEhpRYgjjZkugRxog2JIgKSxCzRoFiuDsIosCKUbda6WvHkA4SlhxWwooUjUgOXUI5TZYajdKWdgApIWHJud3QjgAulFkVSw6nWg7bPcdpztDXF0PCEvPmJe0I4MaGdgAJIWGJ+RZLjUZqkbmjYjjTUpr72hHAGZqRFCosKQvaAcCZDglLCglLyu9qBwBnasxskMKtQUj5zjXtEOAO7UgIJ1pItaMdAdxpNbUjSAVdQiFr2gHAoQaviQqhwhLCFR03GpIMKiwZF7UDgFN7Ve0IEkHCkvEt7QDg1CwzG2RwmkUs8Nw7drQkEVRYIhjBih0PgWWQsET8F+0A4FhtjxJLAmdZBBVW/MosMiOACksC+xEmgHwlgYQl4VPtAODekOWDBNAllECPMAW0JQFUWAKq9BYS0NMOIAkkLAEfcpYTMGAvCgGUsQLoEaaBxuQeNwX3qm3tCCDhAQnLPc6xcyU2Mk9Dq0Frco5T7N6Ak5wIvmjn6BI69zoVViJWaU3OcYqd+8+c40Qs9vmqXaOIda22y9puyaA5ucYtwbXL5Ktk7NKcXOMMu/bvtQOAmDmGK12jhnVs9u557RAgh/bkGBWWY1XyVULWWEjIMe4Ijm0taEcASTQotzi/btVb2hFAFA3KLbqEbi1pBwBRew3tCCJHwnLrP2kHAFGze7Qop6hgnVrY5AQnhi/cKe4HTs1x+SZmXzuAyJGwXKr8iXYEEDbD3FGnqABcyljMPT00KZeosFzi7AJW0aRc+kw7AMhjLwqXqF9dYveJFNGmHOJu4FBdOwAo4DmhSyQsh+gRpqjR0Y4gZpSvDtEjTBONyh0qLHfqD7QjgIa1inYEEeNm4M72vHYE0NCp0aqcocJyh3Obppp2ADGjUTlzlZVGErWtHUDESFjOfJPlchO1wNMWZ+htu1LfpMJKFs3KFSosVy6Sr5LF3FFnSFiu/IF2AFAzQ5/QFRKWI81f0Y4Aeg60A4gWCcuR6gXtCKCnRYnlCKODjjBrNG00LDeosNxokq+StkHDcoPz6gaLI6ftPEu7u0HCcqL8M04sYB9dbSdmdzixiWu0tSOIEoWAC0u75KvUtaraEUSJhOXC7q52BFDX1Q4gSiQsF96mOwC4QNfFgXpLOwJ4oMTsUfuosBxoszYyaFtOUGE5UG1zWkHbcoG7gH2NFS5VsGmSEyQs+zo72hEAkSJh2Td/QzsC+OC+dgAxovNiH10BPEXrso4Ky7oSUwYBR0hY1i0+4KUMGGPMHe0AIkTRalttnaWw8EyFVWYsI2HZVqFDiOdoXrbRJbTtAjdVPLOpHUB8uAVY1mDDFDzXq9C+LOOEWsbayDiE9mUZXULLGh3tCOCPbe0AosMdwK6szZwGHEIDs4vzaRc9QhxBA7OLLqFdDe0A4BWeE1rGDcCuXlk7AviFFmYVFZZVGS8+Aw6RsKyqVbQjgGd4CGMVBatNvJaDE9hR1SYqLJt6G9oRwDc98pVNVFg2nX+sHQG8QxOziQrLotkPtCOAf3gOYxMJy6L6Ze0IgLiRsCxiDhZGoI1ZxMm0p/xN7QjgoT0WSLOIEUF7zvGMEKM0W9oRxIMKy54Z7QDgpQ0amT1UWPa8/652BPATrcwaTqU1rCyDMWhl1lCtWjPHEBZG+kw7gIiQ+21hP0KMVWL2qCVUWLZk5CuMsU8zs4UzaUuTISyMMcNULFtIWJbUP+dUYowBPUJbGMOyhGeEOAXtzBLKAktqJCyMRZfQFhKWJWucSYxVpk9oCaWqHfQIcSoamh3UBXbMagcAr+3UtSOIBAnLjve0A4DX5re0I4gElaoVi2vs5oRT0dKsoMKyYoZ8hdMtaAcQBxKWDeW/1I4AvluraUcQBRKWDX2eWuMMtY52BFGgZ20D+xHiTDQ1G6iwbPhEOwD4jyrcBhKWBZcuaEeAALALnAUkLAu4d2ICvFBoAQnLgj/XDgAB4MmMDYwEFje3ox0BgjC/qx1B+KiwimNtZEyi3dOOIAJUWMU9uKwdAULQrdLaCuMUFjfsMIkZk6C1FUaXsLDZ++QrTOKmdgARIOcXVVthFhYmVOtqRxA6ElZRtbZ2BAgGG6oWRZewqPPMB8SENrQDCB8VVkHlW69rh4Bw0N4K4gQWVKLAwuRobwXRJSyoyRAWJratHUDwyPgFdSvaESAkNLhiqLCKqZCvADkkrGJe1Q4AQXmiHUDoSFjFfEM7AATlHBOxiqFLXUiVnQUwHVpcIVRYhdzQDgCBaWkHEDgSVhHZ72tHgMA06BMWQoFaRNYj4WM6Qy6ZIjh7RSxx+jCljBKrCCqsIg4a2hEgPLS5AigRCqiRrzA13uUqgoQFiKozilUA5y6/bFk7AoRonT5hfiSs/MqL2hEgRBX2AMiPZJ8bs9yRE60uNyqs3LpmVTsEBImdwvMjYeVWNZe0Q0CQKLDy49zlxW45yI1mlxcVVl6dlX3tEIDUsGBmXhevakeAUDEfJjdq05wan7C9F3Kr9rQjCBRdwpza89oRIGDkq5xIWDk15rQjQLj2tAMIFl3CfLKBdgQIGg0vHyqsfFjUCFBAwsqnqh0AgvZYO4BQkbByyW5pR4CgXaBEz4eudC4MYaEgWl4uVFi5LD7UjgBhe6QdQKDI83nwHiEKo+nlwVnLhREIFEXTy4MuYR6zu9oRIHSPeY03DxJWDvWbTHNHQTNdpsbkQF2aA88IYQFtLwcqrBzYRAAW0PZy4KTl0NIOADH4tK4dQYBIWDn8QjsAxOAttl2aHv3o6bG/F6xoMJ1vaiSs6TEJCzb0y7S+qdElnFqZHiFsKGsHECJy/NQaB9oRIA5r17raIQSHhDW1dplbI+woM6NvSrwfMK0ZZmHBFvLVtBjDmtaMdgCIxtqsdgTBIWFN64+1A0A0XtllSGZKnLAp1ZnmDntof1OiwpoS+6fCnv6SdgShIcNP6eYN7QgQExrgdDhf02FlGVhFA5wOXcLpMA0ENm1pBxAaEvx09pvaESAutMCpUGFNZZ58BSgiYU2lv60dAeLS5T2vqVCQTuXRJe0IEBua4DSosKbCe4SwjSY4Dc7WNJa4G8KyFdaDnAYtcAq1h+e0Q0B8FhkYnRwJaxrcDGEfbXAKdAmnwItfgC4S1hT+SjsAxGiPmQ2TI2FNoaEdAGI07GtHEBAS1uTOv6YdAWLU5/WJyZGwJveZdgCIUmVfO4KAkLAmVtrVjgBRYpeAKZCwJtZ8XTsCxGlTO4CAkLAmtsvaRXCiNuQ54aSYtDapakc7AkSLZjgpKqxJXWFxZDiyQjOcFKl9Uj/4De0IEK8Sb31NhoQ1oUpXOwJEjHY4IWrRCV3TDgAxY2rDhMjsE/r4be0IEDMa4mQ4T5NhP0I4RUOcDF3CydS1A0DUmOM3IRL7RMo97QgQOVriRKiwJsJDZ8AHJKyJXOV1LzjVosKaCKdpIp99QTsCxI6mOAnO0kToEsI1JrtPgi7hJJr3tCNA7O5rBxAGKqwJ1LaZ1QDn2J9wAiSsSVCswz3a4gToEk5gVjsAJOBAO4AgkLAm8G3tAJCA5pDGeDbO0QTe1A4AKRjyvurZ6DefbYEXvSCBxng2KqyzfaAdANLAs52zkbDORqUOEVTyZ6MKPdPcjnYESAXN8SxUWGdih3rAFySss9Rf1Y4AqdisaUfgPWrQs8zzwgTE0B7PQIV1hvrn2hEgHSy7dhYS1hlqLe0IkI6lC9oR+I4S9HSlvnYESAoN8nRUWKcbmA3tEAA8R0I/Xa2tHQFS0qtqR+A5Etap2D8Vwlgp+VR0CU81XOd1CUjqkK9OVdEOwG/l2aZ2CEhKRzsAz1FhnWb2x+QriJqjwjoVY1inKe2z+wSE0SRPQ4V1msvMaQB8Qjo/RZ1Z7hC3O68dgc9IWKd5sqQdAdJDmzwFXcJTzJGvIO6udgBeI2GN1/y5dgRI0LUhJdZ4nJvxmOYODR0eTY9HhTVeWTsAJKlGoxyPczNed087AiSJJY3Go0s4HnOOoYNWORYV1ljn97UjQJq4U45HLh+HIXeoKXPxjUHCGov7HLTQLMehSzjOGw+1I0Cqtln1aRxS+RjsPgE9vRr1/WhUWGMMWUkNaobkqzFIWGO8xe4TUFNlxYYx6BKOxjNCaBrwmsVoVFijDQdd7RCQMNrlGDyOGK1c4pIBvEOzHKn8mXYESBtrzIxGwhrp/Jx2BEgczwlHImGNVLuoHQESxwZzI5GwRvqv2gEgcf19+oSjcFZGmWElLOgaZjTNUaiwRmEEC8oy09AOwUskrFH+h3YASN5wWzsCL1F3jsAGqvAAbXMEKqwROCnQt6UdgJfI4idVdtlnCR6gcZ7EORmBOXvwAY3zJHo/J/GMED7YrWlH4CGS+EkHPFCGF2idJ3BKTqJHCD/QOk+gS3jCUoeMBR/0tAPwEDn8ONYahTdK3DuPocICvEW+Oo6Eddw7O9oRAE9tVLUj8A5dwuMevqodAfAc7fMYTsgxZUY64Q/a5zF0CY/5knYAwEtMYj6GDH7MnTe0IwBeooEexfk4KtutsfMZ/EEDPYrzcRRDWPAKDfQoxrCOaN7SjgA4jBvoUSTwI1hrFJ6Z3deOwCtUWEewHSE8Q746goR1xP/hRUJ4pT0sa4fgFbqEh5X62hEAx/AC9GFUWIe9pR0AcMwq+eowKqxDsp98TTsE4LgKdf9LJKxDWAoLHqKNHkKX8BCGN+Gf+9oBeIXs/VJtbUE7BOAkGulLnItDGN6Ej2ikL9ElfOm8dgDACGsMVbxE8n4ha7FxJXw0pKx4gYT1Ej1C+IlW+gK5+4WLXe0IgJFYou0FcvcLFFjwFa/nPEeF9RypG94iXz1HwnruHZbCgqc2aKbPUVc8d/+qdgTAOGXeGnuKhPUMK8vAX32G3Z+h1nzmHe0AgLEGs9oR+IIK65kHl7UjAMajoT5FhfUM+QoeW21oR+AJEvdT7EcIv83vakfgBSqsp1a1AwBOMyBfGWNIWM80WKkBXmuxZIMxhoT1DOs0wG8zjFkYYxjDemZvRjsC4HQ0VWOosJ4qk6/guX0SljEkLGOMMVXKbfiOl3OMMSQsY4wx3eG6dgjA6eraAfiBhGWMKWcXtUMAzvBEOwAv0DHmvWcEgmX8qLCMMWbQ0Y4AONsy+YqEZYwxZWZhIQCLXKckLGNM82PtCIAJzDypaoegj4RlyiyOhhCUZ9jXiUF3Y6oMYSEIB8xvJmHxjBDBGPAGNAmLLZQQDJorY1iMYCEUzB0lYVX/QjsCYELn6A0kX2NmvFOKcCTfXqmwtAMAJsa8huQzdpcxLASklnjOSj5hMSqAkKTeYFPvEl6/zxgWwvFwUTsCZYkn7IUt7QiAaSy/u60dgqrEExY9QgQm8RabeJewRocQQTlIfM/6tBNW9iDt3x/BaT7WjkBX4gXmflM7AmA6aTfZtCuMCvkKoUm7T5h0uq4kPgkPAWrXk26zSVdY/V3WwkJgEt+fMOlszVqjCFDSe0AnXWEtawcATG3YT7nKSPl3L/X7LDmL8FQSHslIucIqGfIVwtNOeUmklBPWt7QDAHKobGhHoCjhLmFji510EaSEW23CFVaFfAUEJuGE9W3tAIB8El5jJOHiMuFvHYFLt9mmW2Gl/KgFYdvVDkBPsgmr+TPtCICc5taTvd2mW1vSI0S4km23yVZY7O6FcN1N9vJNNlPfvKEdAZBfqq/npJqw2KEeQUu14abaJXyXhIWA3ZzXjkBJoglr8XcS/cURh7e2Z7VD0JFqZckzQoQt0ZabaKGR+DqzCN5aojOx0szT2epF7RCAYtJcKTnNCitraUcAFJRkvkq0wppN+GUsRKKe5BYqSVZY5XvaEQBFtbUDUJFkwipRYAFBSrJLWO5pRwAU1U5yz/okExaTsBCDaoI3XhIWEKgUG2+KY1gp/s6Iz2PtADSk2Hj/l3YAgAWzKfYUUqwqU/yeEaMEW2+CFdacdgAAckowYX1POwDAjmF6zTfBopIeIWKRXvNNL0WXtQMALHmiHYC85BJW5WPtCABLzvWTWxUrvZqSHiHikVz7Ta7CWtIOALDmQDsAccll6IMkXxlFrFJ7nzC5hEWPEDFJrQGn1iW8wdp97m1qB5COm4vaEQhLLGHN/tHr2iHEb8D6iGLe2kxsR9XUKkp6hAI+67+jHUI6EmvBqVVYiQ1R6uim9/AKQhJLWB9XtCNIQW03zS2oVCT2PmFav22VhiShVP5AO4SEpHVNp5Ww6gy5S6jUbmqHkI7EHskmlbBqn2hHkIZGuftQO4ZkLKX1HCmphNVNq3pW0yzN/Vw7hnSkVWIllbBK17QjSEO9ef6WdgzpSKvESiph7WgHkIist0DCghNJPeZvageQiMq5/g+1Y0jIaiWh2YUpVVjJLXam5tyTv0zsjRFNi13tCAQlVGFVHgwTe41BTf3jFs83xNRTOtcJVVjDDvlKyl8kNRCsrZTQWEc6FVYlpcJZ2Sd/MjT1tnYU6dhPZxm/dCqs3jCtCSua/nrZmI52EAlZTSZfJZSwZu+xnLuUj4bGMItETjqtOJ3VdGrtPjsSyuiXZw6MMaW+diAJqadS0CaTmzs75Csh5U/bxqS2ioCyVPJVOgmr9Ll2BOn442e5ikFDKd26dgRSkukS/uRXtSNIxvZXnu70UeM5oZiHV7QjEJJKhZWRr8T8aPnp/3bWdONIyWXtAKSkkrDe1Q4gIX/4fNZoaltQaZrTDkBIIl3C8q15JjUI2Xxt7/n/Zb67mHtvaEcgI5GExTR3OeuXXuQpEpacRFpyIl3CjAdWUtq/dyhNJfO0XV0q94Y08jJzGOUMvvrhi/9fW1tQjCQpvUoaTTmN37Le0o4gHduHh9pTue/7II2mnEaXkEnXcr5x5L/IWFIS6USkkZZpNnLeuHfoP+Y2eSFKTBJtOYlfsnGgHUE6lo/uVcutQk4SbTmJLiGtRs4faAeQrBXtAESkkJUpsOR0b9w/8t8Zw4dyKgmMY6VQYfGIUM5Pj+YriltJCeSrJBLWq9oBJORPtANIWQr72KXQJbz9Go+qpLy+fOwPZvZG/jvY11p9UzsE91JIWHRLxNy+ceKPOPtithJ4wT+BLuEl7QAS8ocj/oyMJWWxph2Be/FXWKW9hnYIydj61dsn/7CVzPK9+hJoztoBOFdN4Lbji5/eHvGH5CsxCWysFn/CGrCyuJgfj/xTlvaRMhP/zSH+GnKLFU7EzO+O+MPq5ox4IMmKvj1HX2FV57UjSMf9UfkqoS2o9MW/YGL0CesL0d9z/PHN0X/MLDgxe+e0I3At+ub8g9/QjiAZe1++N/LPeZ9QTvT7E8ZeYWV/UzuCdLw/Ol+ZIZtui4l+f8LYE9bXoi8h/fGNcX/xBcko0rYT+2T32Nvzd/+2dgTpWBg7DYjJ7lKGH3xVOwS3Ik9Y5Z52BOnojV8sgIQlJ/IWHXmXMPJvzyedUe8RvvhLsTBSF/uaWHG36OpjZmGJ+fJHY/+quhr70IpHSlHXs3EnLPoicjqnzQ/le5ATd5OOu0s4x+pxYv7o1L/tCkWByEWdjtmhXtAXbp7yl3MP5sQCSV7UbTrqX46eiJy109dJ5JuQE3WbjrpLeHFDO4J0/L52AHgm7pk8MWdj9iMUdPHxqX+d9aK+NfqlEfEScDFfRuxHKOfnp+crM4z5QvNNxPkq6oTF3B85f3rWP6B3Dhti7hLenSdlSXljzEoNL1SZ7C5mJ+JFdmNOWP2Yy0e/rFw785/wnFBOxK064jY9H/Hv5pt/e/Y/ecIyfigu3lxcupnAxt2eePLlR2f+m9oT9qIQE+/7hPFWIYOKdgTp+OjsfGU65Csx/WjzVcQJa/aqdgTpGL0f4VFZ5DMafXI/3n0/4u0SxnuT8c9kMxU3ot/SxR/RtutoK6xovzEPrUw2U5F8JSbet/6jTVi/rB1AQv6jdgA4pjOrHYEr0RYiP/66dgTJaL172soyL2UH7AEt5WA20iGRWBMWS2HJee83J/yHWxHPwPZNtA1bOwBHvqYdQEL+w6T/kHwl5kGsmxnEmoh/8qvaEaTjlfVJ/2Wk3RQPte/9knYIbsSasGgaYtqNif/pHpNHxUTasiPtEtIw5Pzzyf8pXwsKijNhVdgtR85fTP5PSVhyhuM34g5ZnIVjYz/O38tHZ+w+cRQ9dTlxNoE4K6x+nF+Wl35nmn+86SoKJCLOlt1ihqKYxe1p/jWLKsqJsm1Hef2UyVdi1qbKV/QJUUyUCSvidz+982+m++fxrnvind0oR91jLBsrm9G++umdwZXV6X5g7aKbQHBSjOuOxpiw6HfIuffGlD/AdyMnxsYdY5fwVRqFmH819U/w5UjZ0g7AhRiT8K3r2hGkYphVp173mG9HToStO8Zfif2kxOTYspMKS06ErTvCLuEV7QAS8i+1A8ApYuwTxpeDq794RzuEZNz90sHUP0MBLCi+5h1fhdVn/1Qxy9PnK7qEgja0A7AvvoSVdbUjSMf38/xQ1rIdBsY4P6xph2BbfDUjd3ApW4vTPyM0hm9I0CC6Nwviq7AgZfED9nL2XD+613OiS1iRLmXtob757Xw/GF0j8le1ox2BbbF1CUs//ap2COnI+64afUIxB7Et8hpbhTXLM0Ix38qbeAa7VuPAeM1F7Qgsi63C4uYtpvXa45w/WWbsS05kLTy2CmuVRXil7Lfz/iTLlcmJbRCroh2AXYsNdheWcrtAx24Y2X3fX7F1OeK6cHjtQ1At/wzd8so0W+2gkALfk4fiqrCGrd6cdgyJ6N4u0A76LDsqphNVvoosYV2afNd0FFP9oMAPl2MbOvVYZHPdo+oSzt7mzi3m2kqBH67lHrDHtPYXY3ooG1XCMoO4fh2fbS0V+vHYxoJ9FlWjiKo2n4nqq/Ha8EfFfr5FxpLyRDsAq2Jq4sxHlLPz9sNCP5+1olv4xF8xNfKYfpf43vT0V7tZsESiwpITUyOPqUvI9qly2oUTzr6NMDCBe3XtCCyKKPkya1TO6vUciyMfRYklJ99Ci16KKGHxjFBQ8VNNwpITUcOIaOJoOaKvxXPLg6xwvhlsnrcRCs52UImnwoooYcXzpXiv/CvF66MyJZaUZjee9wkjqkpoAHKaFna+Wb9Q/DMwmXiaeTxPCVkpXM59G2/WNC18BiZyn4TlnRKTsMR8+I6Nanb+YwsfgklcG0Qz9BNP6qVHKOX29by7TxzFNyYnmnYeTYV1nv2EpVwfkGpCE83mObEkrMoDlsISMjQ37HxQxuY5Yn6gHYAt0ZSK3PTlzBSe5v4U35mcWBp6LBXWde0A0nHw/yzlK9PatvRBOFMsz2QjSbzl7/2mdgjpWLSWZyixxHz4rnYEdsSSsJjmLmfe1thTw1aphrNF0tIj6RKyUIOcZWtj5a3otvmEa3EkrOrn2hEk5Ev2PqoUyW0/BMM4lniNI2H1zmlHkIzeyp69Dxvu2PssnCGOph7Hb7FYbAsXTK7yoc0PY4UZOXHMrI6jJt+YjaPeDcHlRxY/bO4BO3UL6VajaOtx/BKMuYvZnbf6cUxskBPFQslRdAkvaQeQkO9Y/ry+5c/DOHtRnOooKqwf/Zp2BMnYvf7Y7gfu0CcUE0Njj+F3oF8hqGL5Ps13JyeGxh5Dl7CsHUBCfmK9X8FsdykbMSSsGH6HlSvaESRj+6L13QwoseTUw3+zIIaExSUvx/71wrcnJ4LWHkGXsLylHUEytpYdzHd7Yv8j7ktltwAAIABJREFUMVIMU0cjWJz+UTR7rvlur/3L9vsUxbdkxYQaw/BLrPB/A/oUglxcLkxskBN+cw+/Szi7rB1BOj5x8aHR7I/gv7vhrzsafsrtRtCrDcTmKy5e7sg+etvBp2Kk4Nt78L8APUIxn7zt5mrhG5QTfHsPvkv4hnYA6XhLOwAUZvfVdQWhJ6zyN7UjSEZ/4Gj1qkYMqwgE4vvaARQVfIlIf0KOve1yjuI7lBN6gw+9wnpFO4CUuNpG8BYz6cSE/kw28IRV+VPtCNKx13D1yV9uu/pkHPdd7QAKCrxCrHBvluPsWiltz7r6aBwXeIsPPXwWR5bSqrqb8MYglpzAW3zYXcJsTTuCdGw7fCKePXT32Thqu64dQSFhJ6yFC9oRJOPxQ5cr7V12+Nk4Yj7sUZSwC8TKJoMfYsruut9LLDEjJ+wmH3b0W82qdgjJqDm9M/fDLvUDMigF3eaDvk7mF8hXUlbc9iT2nH46Xgq6xQdeYZWi2GktEG6vlOEg8IYUjieO3rCSEfJlUmHDFTGrjldSynbdfj5eOBf0JJKgK6ygz3xQ+geuX/Pnu5QTcqMPucIqUWFJ6TtfxpjnhGIehNzoQ062vSzkMx+U9pzzJWAosaQMSra37xYUcpMvhxx8UPbqAjc23rISUjLh5quQExY71IvpGvfTo/cDbkUQE3DC6j3QjiAZSwvuj3GOEUkpw4C73+FuOVM2V7RDSEVvZcf9QTr292jFaCEPXIcbe9ZysG06RpO4TJg7KubBtWBrrHCvkR3ylZSPRRbFyFh3VMqVcB9whFthBXuPCFBdpLu2uShxFBgTcLsPdgzri9oBpGPjfZnhJfKVnEZLO4KcQu0Sln5XO4J0rP4DmeNUbskcB8Z8qh1AXsGWhvQIpbQyZ9vlHMN3KifUhh9qhXVVO4B0NCSmuT/FFtBipG5CtgWasKq/px1BOu5VpCqfLNgR1fCEOk030MqQ/QjFfH5dLo0wFUtOoC0/0LBZa1RQSWxsKdsPtacSnINmmE0/0DsarxFK6TzO5MbCh+QrKc1AV9EPNGGxH6GU2iPHiyMfVnrAg0IplTArrDCjnt/WjiAZw1nR4dkHbKkqJsi2H2SFVbqtHUE6MtmdzclXOFWQCasZ9EZFYfnzTe0I4EglxMYfYlnII0I5j68L77/VZS6WmCAbv3YAOQy6ob65GZ6m9ORz8pWYIFtRiAkr6/H0W4z4Vc3Co1KCXBQrwKqwyiUtZu/SvvARsyCbUaACbP0BVljdA65pIfsb0vnKDDcYocR4AQ4ZlARnMiauqzCPkyfAcirhLY8RXoVV+yG3YCmLb8sfk+0mxRw81o5geuH1YhnkkLP+isZBee9KTHjNP7wuYXjnOFi3VN7su3BAn19IgBVWcF3CrMtuUFIWv6Jx1CzAZhSoC+G9ax5evRLeOQ6XztXBNywnuPYfXIU183+1I0iG8Es5LzzaUTpwesLbpyi0DFujQyjm068oTdEdhHZVhmv1cmD1bHCXRmDnN2haFwffsZzQEkBoXcLmsnYEydj6SOvId1nSRkpwL0CHlrBuvqYdQTKyr2sd+U2m2klp3NaOYEqhVYT0FqS0GnrXBt+ynMAyQGAV1rUV7QiSoXrvpcSSshNYBggrv7LWqKC63jI+5fBeyg1XOai7Q1gJi76CmHZd89Lge5YTVgoIqyCsM6VQSv1HmpfGQ8VjJyawPYnDSq/MKBSze0F1Ydfbb2oePSXdalB9wrAyAFuqyHllXfPo9AnlBJUDguoSvkK+EvN91XxVIWPJCWrJxJCyK88I5Wxc7uoGcMDOSGJKAd0dQkpY3HXldJrKAxt813JCSgIhdQmpsASpD8SymZuUoJ4TBpSwsr56I0pGe0E7gqymHUEyFkKqZgNKWAvDqnYIqXjyc/3HG0y5kzKrHcA0AkpYuyF1tcPWaOxph2DmtQNISEBZIKAksF7jGhYyPLelHYKZW69rh5CK4TCcmQ36pf+kKmxXJ+a+fr4yuzskLCFZQGVLOMVgSCODgXt4VTsCY4y5eKAdQTKehJOxwklYq9oBpGOo/ozQGGOqQT1uD9q53WCeZ4WTWqmwxPT8uHz5xsVsBDPeEkyF9dpfaUeQjK4nb5cx707Mk2DGskNJWM0//hvaISRjuenHKwUNEpaUL6yFMhkrmC4h/QMxjy5rR/AM37mcUBJBKBUWL2qI2fLn6Zw/kcRu1Y9hy7OFkrA+0Q4gHZUvaUfwXEjzgwJ36aZ2BBMK5ZKgdyDHn2uCb12OP9/6qQKpsF67pR1BOtj6MUXL2gFMKIy8yj51gjzakyDzJ5T4Vfx4NnyGMOZfBHEq47BT8ShJ0CUUFEYjC6NLeEl/tZNUzO/79M7xR8oryydEddORyYXRJez22JJAyMpbbe0QDinfu6IdQiqGWRB7UYSRsEI4k7G4/Eg7gsP45uUEkQuC6BKe1w4gIXtr2hEcln2Pxy1izmkHMIkQsirPiuSsX/Vs1Kjnx4vYSQihTxhCwqJfIGfgW37guxcTxBozIXQJK0+0I0iHfzcw+oRSgpjXEEDCyjYXtUNIRs+7fT6yMGYKxqCxrx3BBAJIWM2DAIKMw+Nl/ya8hfJWbvjmfZqBN45/XYAT6i3tCJLRrfp3PTCIJcejt7LGCaB4aW1rR5CMqof9r1AWaorAMIBRLP8TVsl4sYdLEj728Irt3dOOIBn+ldcn+Z+weClHjpfn+nXtANLx0P+U5X+EezPaESRj9ZqPcwhKu03tENIx4/uq1P4nLAZd5fh5NXAFyPHzCjjE+y7htfe0I0iGrzfXwY52BMm47f3MBt8zauM77Eco5f6bHo65G2NKfoYVpY3XPZ896nvCoj8gpl+uefbi83NcA3J8Twi+dwm9fG4Vp57xNF+Zxx3tCJKx53uf0PeExYsZYrrerod0UTuAdMz6vmeS7xUgvQE5/m6b0vVwBn6sPM8InldYb97WjiAh3uarQPZ2isIjz8+13/mU/QjltM97/Hxon7mjYvx+A9rvfOrvPT86t/Y8zlckLEFe5yvPK6xzG9oRJGNQ8vnOylCmmF3v1nA8wu8xrNvaAaRj06cdn0/IlrUjSMbc0Osixu8uIQvLSFl/4nf3m/1U5XhdznqdTV9jKSQ5Xl8JfjeiyHh9JXjdJSRfifkzv0ttz3sCcfH65uB1wuIpoZTP3/X8VPc/0o4gHZvaAZzG5/Kv3PE7nUbF32nuTzV++o52CKkYlDy+GHxOWI8uaUeQioPBor+X6DNed1Tisj+rHcF4HtcwTfKVlOaW/3vTPPRvy8RYtTxOWB5XWDMr7Pgso9W97v8MXV7TEuRvWvA3Ml7HEFQNIBvQJxRz4O/GL/52CUvkKyndXwSQr4wJIsgoNOe0IxjL2wor8/lNkdg02toRTIArQpC3ecHbCmu4yvUppHvg7VVwGF1COS3tAMby9lItLXkbWmzutnzd4AtKMm8bn6+Blfo17RCS8cFXtCM4zdPOSVadMUtryqGko973dTMKb/uqrQGD7jDGDPtmmJnS9tKt+39HO5aE+JoYfI2rdOsN7RDgk74pHWyxyIyUdtPTIUNfu4TfI1/hsHI5mwnhWWYk6o89XR/D1wqrzRAWjlu76OvlGiFPX4D2tMJa8LQghaYl8pWYbT/zlacVFu+NAbqGNS8boZ8Ji0mCgDI/U4OfXUI/zxWQED9XHPIzNVBgAdq8zA1+VlgAMIKXCatMhQUo8/MFUx8TVvZQOwIgec197QhG8bGfyqQGwAM+JgcfKywA+lbL2hGM4GMSZQQL8EHZv0U0SVgARvMwO3jYJaw/0Y4AgDE+PvzyL4dmg+0F7RgAGB/Tg38V1pB8BWA0/xLWDPkK8MO8dgAn+FfzMeQO+MK7/OBdhVVhyB3whH+LUvuXQT1d6RBIkHd7gnuXsOgRAv7wLUH41iX0c9UwIFEkrNNRYAH+WPWtQXqWsLL3tSMA8MIl3xKWZxXflRXtCAAcUvIrZXlWYa17uWgYkKqWZyWNXwmr8t6MdggAXmps+rUHu2f506/yE4BfKcKvCgsATuFXwuK1HMAzQ6/mRvpV79EjBHzjVY7wqsLyKpUDMMZsagdwhFfZc980tUMAcIxPSaKiHcAhTdIVgNP41CX0KXkCeGrfp0LCo4SVbR9ohwDguJm7De0QXvKpe8ozQsBHHmUJjyqsOgUW4KFH2gEc4lHCes+/fbEBmFc96vt4VOx5dFYAvPT4onYEL/iTsBr0CAE/+bMXhT9dwjvaAQAYzZ9VsfxJWJe0AwAw2rI34zXeZM4ma40CvvKmT+hNwvImhQM4wZdE4UuXkIUaAJzJl4QFwF9r2gE850vC+lA7AABjveLLkI0nXVMmYQFe82TY3ZMKq9PTjgDAeLtd7Qie8iNhVd5nLSzAY3NdP/Yn9KRL6EsPGcBofqQKPyosjxYIAzAKCeslbx6aAhjNj9Wf/Eib9AgB33mRK7yosLwIAsApWtoBGGM8yRXdbe0IAJwu86If5EOZV+prRwDgTF4kC+0AjGG7ZyAAOz7MxPIgaZZ3mdUA+K8329EOwYeExTNCIAgeZAsPuoSlHe0IAJxt24NV6zxIWHtb2hEAONtCRz9deFDk9fXPAoAJ6KcL/WRR0Q8BwAQ29PuE+imTIXcgFOr5Qr+8WdEOAMBk9Ieb1RPWuavaEQCYTEW9P6Re4qmfAQCT6mmPYmlXWNrHBzC5x/PKAWhXWFX9yf4AJlbS7RNpVzhPlI8PYAq7ymM4ygkr067wAExhZkn3+LoJgw4hEBjdlKFbYXX7fmwnC2AyyntR6Cas0kFd9fgApvNI9/Cq9V3jQPPoAHIoaxZZqhVWi4QFhEa1U6iasFioAQhOWfPgmilj7mPtef4ApqU6d1JzDIvtvYAAqSYNxWPXHygeHEAuyxXFg2smy93OOcWjA8hHMWtoHlp5ChqAXBRfgFbsEma8lwMEqKv4nFCvwmruqx0aQBF6aUOxS8hao0CY9NKGXpdwQe3IAAppqh1ZLWGVP9E6MoBiPlU7slptl2mO3AEoQi1v6FVY5CsgVGp5Q+3A7J8KBEvtrTq10o5nhEC4tBKHVoWl95gBQFG7NaUDayVKCiwgYNuLOsfVqrA+UDouAAu0EodShVXp6hwXgBUNnQ2vdBLlLPkKCFpLZ7lgpQprc57l3IGQ6aQOnbyR7ZCvgJA90klYOkftMc0dCJxK7lCpdKrkKwA5qCQs1kYGgqdSYakclFmjQPg0kodGhTWvcEwAlmlMdtdIWOUDhYMCsEtjVwaNqo4eIRCBh1fkj0nCApBPtSd+SIUuYUNvQWgA1mwrLOMnX2GV97WW0gFglXyJJV9h9clXQBTWUugSnhc/IgAXXqmIH1K+S9jbZx4WEAfx/CGfsHhGCETiYEb6iOJdwob0AQE40hQveMQT1sGe9BEBOCK+joF4hqRHCMRDOoFIV1ishAXEY1P6gNIJcv2C8AEBOCScQaQrLGaNAhF5JHw84fxY7cgeD4BTwm/nyFZYdfIVEJWu7DJ+whVWL2N/LyAinbro4WTzR/WAfAXEpCXbpGUrrOVroocD4JzoKJZowrq2LHk0AAJEc4jowcryy+cAcKsiufCoaAe0ty15NAACRMsQyYS1aBYEjwZAhORzQsmExToNQHweSCYRyTEsFmoAYiSYRQSTo8YWiABiIpiwytLvSQIQsC64aJRc2ZOJL04IQML+rNih5CqsYVfsUAAE7csdSi5hZVWxQwEQNCuYRsSO1B2SsYAYDTOxPCKXsJjUAMRKLI+I1XLsPgFEK7qElfHeswjB4U/gBbEpAFIJi4X7ZMyYh9ohAO5IJRJGsIQ8eXJLOwSkZ0PqQFIJa1foOMk717rBcCGknZeqSIQSVp2xFSF75342yCRXVAMECSWsARs+C5ktf61umtpRIDkVmcPIJKxF9iMUcydrmy41FoQJvXknk7C2t0QOA2PuzBtjjKl8rhwHEnMgcxiZCV+VrRmR48B0arWn97p1euEQJbIZhUiFlZGvxDzPV+bibdU4kJptkWEIkaGyGfKVlNt3X4wl3Nie14wEiZHpE4pUWCzTIKXX/xcv/4M9iiDoVZGpWCJjWFs0HTFHvlDeL4AgiWQiUmGRr4T0zc+O/Df7fkDO1pzAQQQSVsZ9Xsr+5//06B9k39UJBAlq7ggcROIePOwJzYJN3sH69ePrfHC3gBiBbCJwiDJLYQnpl0d9nz1ehoaI1RvuXxl23yWcJ19JKd9ujPjTWfZXg4hLe+67Uu4T1s5+2/kxYIwxZnll1KlulzfFI0Ga3Bcn7ruE89vOD4FnhmPuPwxkQcKdG86vNOcVVv1/uz4CXhi3rExGjQUBb7pf5MB5hcUO9WK6G5fH/h01FiQ4zyfOKyzmLorZfHX8yZ5bFQwEcMV5wmIlOTFr1fF11N6rgoEgWc4reecF0D7L9Yo59cusbfJNwDnXCcV1hVWnlYjZO/VvO/P0CuHamutZyq4TIoO9YlpnzhA9GDWvFLCp7PYpGwkrHmd+l4tPeAQCxxxfYo67hCzdJ2aCDt9WlX3s4ZbrHZMdJ6wODwml1CYYPehfMbx3AJfmHPep3CasimGlACmdicYOskUjsWoR0uW2ybt9vZqlRuVcqkz25inrKcKlzZLTXpXTCqv+2OWn47DW7KRvytfdL1qEdC116i4/3mnCat9x+ek4rDHxVuGd2Q2XgSBxD50uJ+W0S1h9w+Wn45C921MU4hfoFcIZpwWW0wqr1mHaj5T2P5tmvh7fC5w5N25VNiucXrq333T56TikN+WMt81FN3EAuy53HHeZDEvkKzE/mvLfn+fFQjgycDmxwWGFVe24+2wcMdz4ex9M/TNbFFlwoVdxmFVcdgkZ2pVyUJqZ/pVTvh444jCrOOwSMrIrJqvneEU+c78AN5K0HmTCqgx4j1DKSq5XCpYosuDCxYG7VfBcDrrzHqGQdi3f+4HZTywHAhhjjDlw9snuEtaAae5S6nlr2V83rDcD+z5199HOepvZYMfldAwcNnf66sinuT1/3mIggDGmV6m62gPaWcKqt1x9Mo7plwt8i/U9eu6wzlnCcvYuoauAccL99oQry4zSrjDyDtt2nS3s7qzCohmIab9abIJCZ+uipUiAZ1wlFucbqcK5esEJVbX8I2DASM7qFVcJa87R5+KE3r2in3D9lo04gBc2XI01uarc6BGKaed4Lec4vi5Y5iiz0CUMXp7Xco7LHM6cAexxlAeZ1CBme8HKd7iVMW0OFpXcVO2OKqyWu7n5OGLYtDOP6pzblW2RmkHNyce6qbAqE++IgMJsfYVdt1u+ITFuUoubCqvOIK4UezP0qsbpdidIy96Mk491krCy+6yFJaVjbwJJ9gPDloWwZHbPydQmN5mFAkuOzW+Q7w32OMktTios5kqIebBpc2wzy5y9A4bkOHmr3kVuKa85+FCMVPpbdrf6KD8gZcGO/Sm3npuIk7Kt7eaJJkao2F6Imm4h7Fh/xcGHuqiwSuQrMbesL5zP8xLY4WQNEBcJi80npAxv/bb9DyVjwQ4XxbqLq7PHGpZS9mddfCq9Qtiwdsn+ZzqosOqP7H8mRptxMjs94xuEBS52gLafsKotN1NccdLynJuVqC/Tq0dx5wb2X1C1n7Ays2T9MzHS3p6rmem8Vggb7N9P7Ses3rL1j8Ros190NtrEyDuKu2e/UreesCod1lUS03D30ZnF16qRqFeH1vOL9Q9slBdtfyRG6++43Est4wUrFFQz1qsX61clK/eJ+Xjb6fyR8l89cPnxSIH1QVbrYxXM4RGzccXue4Qn8F2iKNsJhoQVrJ6LaS7H8G2iGNvXqO0uoZOZ1xjFcXlljDFmRuQoiNam7ZlYthPWruXPw1h9gTegDmaZpIIClmxvn2W7YqMPIWVQEpkrxZJ+KMTyVWq5wuK1ZzGdvsjGXEOmkKIIy4NElhNWb8/u52G8utAmN2QsFLBr9/qx+2mzDGHJkUsk9PORn93r1G6Fxc1YzOC7csfia0VuO3bXH7Z6LZbbjGFJ2V8S3F27cvOyiw0FkISGzbELuzdPdp+QsvbkHdHjDc1BU/SAiIbVHGP1w0qs+yanJDuyNBxk9AyRw5bV9fFsjmGVBDspqds+LzwSnrXJV8hjcWhzOUibCWvgav1LHHcveyJ9yJnvSR8RkbC5CpLN22bZ5fJMOEzixecTmN2APHpNi4nBZoVFvhKzr7HRB4NYyKNic6jIZsJicygpNz/TWSeRjIUc1ix+lsWExZQGMYu/pjTHILP98j0S8IrFwQSL90yGOOTolTp8y5jazoK1j7JXYbGVnZx79i6AadErxNT69pKDvetvftvaR+EMVc3nGwNyFqZl7ZqxVmHVtmx9Es4kshLWOGz/hWk9tnbF2rv6WJlSyt493VXHMt5owHQWrL07b6tUYyVdObuL2ie7w9oNmI6tRGOrwhoOtRtRMtbn1E91jYVlMZV1Wx9krUu4y9CGkLYHT+rmtANAWKyt7G7p2q8zoVBOzYcxJOZjYSqWlkOyVBe113mRUMjGfR/ylcluaUeAoFi6w1mqsFi6T5B+j9AYY8xwl44hJnXzS3bus3YqrEs/psCSMlCdhHVINv9YOwQE47qlJ8t27tashCXnwVXtCF5gLgsmtr1o5WPsVFi8RyjninYALw0znVVuEKAVOx9jpcIq75WYSSjk3ttePZDtcq/ChCo2BrrtdAl5xi3HkyH353gVGhOycqVY6RKyfaqctfPaERxVYuQdE2lZKcZtJKxGjzF3Id2ffn1DO4ZjLmoHgDDUrcxrsFKm3bxh41MwCQ97YPQKMREb14mNCmuefCXGt/rKGGNKHe0IEIIVG31CC0mv1BswiCVkcMnLISMeumACd64X/wwLCWtmh4UaxHja+yJjYQIWlva2kGta5CsxH1pbpsOu7Il2BPDfnoWJWBbu2MMOOxIK6de8fRnm4avaEcB3rUbxdGMjYRX/CEzI0x6hMcYMzbbe5mMIQ/Hrt3h3buH9wh+BCa14/AZUxhulOMOd4huWF055Dd5/lVP2tkdojOHFQpypWfRN2MIVVutB0U/AxIrfoJyqMiELp7pX+M39whVWxYsFe5Ow3r+sHcJZdliEFKcpvLJ74QqLfCVm75p2BGea1w4Afis8psEcqmBsvxnAl5Xd0Y4APtsp+gFF2wCr5Io5CKKave7j247wReEJxgXHsMhXgqys2Ojeh1/WjgAeK5pxiv34DHuWS9kondMOYULMJMZ4BTNOwS4hk7DEnA9mklNWeKAC8Sq4skvBhDXYKvbzmFjrFe0IJrbg5Ro48ELBBRuKJaxZY2ezMZyt5dVuOae7SOUNN4olrG4Yw8AxOAjhEeELMze1I0CcCiWs8jZLjUrZflM7gql8wWxTZWGU4UyRny42Zs/zIDkerywzEtcGRit0JReqsOq8+CwntMWmMlYhxSiPCuWcIj+ctQoVd5jCj17b1g5haud5hIyTXm0VKbEKlWcsiysntB6hMYZuIUZ5XGTv3SIV1jXylZgwR7CzgKZiQMqwXuCHi9y49+gRStn46op2CPlQY+GEYYEyqUDCylrsliOm8MJnWlauaEcA7xTIOgVyXYl8JeaWp/sRnu2qdgDwTpE3t/LnumywxXs5QtqzAb9ScO817QjgmwJpJ/9BQ+2khGdrPug3CniYjGPyp538XcIvruf+UUxnsRTM0jKjXF7WjgB+Wc6fdnKnumzP8z2nIjKcD3ydxI1Q1h6EkJm883Ryp7rhWt6fxLSygEewjDHGnGd3JRz2KPe8wtwJ64L3e+RFY6cdfGvPGPHEIc3ceSfvD2bLTGqQshfyM8Jnstq+dgjwx0LuKzr3GFY36HHgkDw5F+ys0SOi+CVgSd7Ek7vCIl9JeRJJU8862hHAGw/z/mDeRHfQyHtETKseS0tfv6AdAbyRM/Pk/LEmIxJSNspL2iFYE0epCBtybgucM2GVwh8GDkeQS2GNRsbCM+V8m8bnHMPqBz6TMSD9mEYLWTYZTw1yljz5EtacCXb1gOAsR1XMXtzVjgBeKJl8o+D5ElZGaS9l982qdgg2DeZNLI8QUMhevusgX8J6EtGwiufWa8FPcz8qY8YxjDGz+cY68mUeFkeWE9+9YZN11GByXtm5Kqwa+UrOee0ArFvivXnklSdhzazkeyKJ6e1e39AOwb5L2gHAB7l2z8mTsLoXCu3disn15+5oh+BC9qfaEcAD7Rw/kyf1BL1eb1jKH2lH4MY/MreYkZW6lTyj7nkGvtaK7NyKqby6qh2BKzy4SV6e54Q5KqyLXGlyiuyI5DemHidvP0dfLUfC2utN/zPI579FNWv0qKzL08K07ed4iSNHl5AXn8Xc+mLUz2Nvv6kdATR1cjwmzFFh9XMvII/pdBejzlfm+i3tCKCpluMNvxwV1nDArAYZ/XIciyOPF/mvhzNMn37y5B7ylZByNfYGnf21dgRQ1Jr+R/JUWNP/CPLYG85rh+DevaU57RCgpT39EjNUS/7qziXw6P+dPO9nIA4y87AgZKOUwLqu+7Ud7RCgJc8cBftRwI5BI43O98JwSzsE6MgxQYqE5a07V7UjEFJiCyZMioTlrXoy383V/8nLE0nKMYbFU0J/5dy5LUTDXkx7A2FSMvOwIKB7t5pOvjJZ9Vbck/phCRWWtxbSenzGZZUgKqxo7Jm08pXJSFk4GxWWr3Ju5R0wLqzkUGHFI71vJr4NzWBdes0iFAkNuT+Xxbu+KizJkbB27UeB4+7FvrDMSBcj2+Uap7s7/Y/kGcPaXJr+hzCVbjXR/lEn4jWhcYLMGBbXlHPJnuLaNkUWTpEnYUW4F7FvVhJYCWu0xXXtCCAmx66bebqEw0S7K5ISPsWrr2hHACFXHk79IzkaRm2P976ca+TZxjsSKT5uSJPMelgd8pVj29++lnC+MtmfmeQmzWJCeboew9b0SzFjKgn3CI1h1CEV1emXFcpE8p7rAAAElUlEQVRRYZVNZ/ofwjRS7xRlzGdOQo5l0PJspHo+gb0RVK3S6V5c1o4AzuXZfyRP6T3LXHfH6BCZCvOxojeXY5OVPLX3XifB99wE3c6zdGxseiTt2H2WZ1OoXJdFLeVnWO5tXc6xI26EUh/Ji12eAivfag1sGeBSt0y+MsYYkzG5IWq5dt3MlbAGD/L8FCbTfaIdgS/KDJbimHzPj9+yHAUO2XhbOwJvXPpAOwI4k2+gNufQJsMLDuWYThcrnhXGK1/qyTlDL9nlT9xrl8hXL/Rq66SsOOVMITkTVq9teFLoRo3q9ZDuK6TvGPU+z/m95p3tQq3uyMF5nhEeRQKPUd5NofK+tNUzhoblQpOK4pjsm7tU87H5s7xTVnLPJy71zYBXVK377/+YguKEYW/IoGlMduZzP1jKnXMGlT75yr5/Tb46KauuaYcAm2YWcvcjCryxRdOyb2dBOwJPcbHF5OGV3D9aIGHN5Jpaj/GGvToNcwxOTDS2FgtknQLduv1mh6Vsrcou0yzHyVghJBaL5QI/XGQcqlVjp3urDthAbTyW3InFd4qUOYUyziIvQdv0aEY7Aq+xQFYcPvm7RX662FVQ366ZHrc+S2iRZ3h8XjsCFLZ2qdCPF+vTtZvGVFgDxIrbRXr2abhwoB0BCiuWr4oOQg0q75u5/WKfAWOMMTd4gHGmGd6uCNyPi3Yjio6a9//h+2Zmp+CHwOwzlXsSTS61oP38N4p+QvFxk7mdPbb9KqZf3l7UjiEU915jk9VwFf/qis9L2K0xslDMZvngde0YgvG64dF0qH5m4VZj425V+/7XLXxKyurspT0FZteG6ce/buFDrJTX1c6DK9u8BZfTnQvnWFJmGqV2hW5hYLZnHrxu5Tuz9MXXeXyT1+71x9ohhKbUJ2GFpl+1UxhberemXbuzaeeTErOxvEC+mtYgK21px4ApbJrPbb3Wb/FOxdDCtPa7iw0W08xn2GUiSDia1npgFt9ezlg1eTqtmYUa+Sqn7NKQqy0IPfN+Zu+rsjsWcJfH8xPqVg0bEBZFTR+CB9dsfk9214d5IzO0wYlUh4+bGeeqmCxjUpbvtrOrVu8r1p+21Fum0+0u2f7YiAyzTs2Yed4Zt2LA80JftRoOZhi6+LpLfTPMdocNRkVHeHi51ci9KRtG+OzC/MFwXjsKnLCz5OAyd3N/as48rBhzUKo7+fQwDQftatUYYyp0BW0bGmM6psL6t34YZsa0L7jZ8sHNd3zwuJpl13frZtkYY4bthNfjHnS3jTFtYx6VZ6o/vpFVsj75yrYsy7If1bJ2q2eMMb39LuPxau5sm9WLWdZwtEWN+xGAd95L/aWdYWa+/fcTztmisoFpU9gr+eE/ua8dAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHL+PxzkP5GIJ5T3AAAAAElFTkSuQmCC\"\n            ></image>\n          </g>\n        </g>\n      </mask>\n      <image\n        width=\"1200\"\n        height=\"1200\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAIAAABkQySYAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzde5Rs91Un9r3373fOqVc/7vslyZIsW5bRwzbGxvgBtrFljA0LAmTIWoQwExIMzGLhNVmZEBZMQsIwHmBImOExySxYAzOZhJkBZmIMZiAYbGzLWLYsW7Z0bcuWrPuS7r39qNc55/f77fxR3dX17K7qW9VV1f39rFpafatPnfOr6u6j3z77d/YmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmE886wEAAEyILcRL57KbT4+4+e0/+ktE/OyvvZeILvzYLxfveaUq1S9+6vKvv/f8j/wyKz33m+/t3P7cj/xi4Z6HWJkDkRJpoKCkYftEqtsb+vrTj13+F//jxN4XAGy7/xf+1bE3vj0vFnqe10CkTDqpWU3vfowGURHPLjTX//wDza88cf23fneNvjKhwwEAzBICQgBYTA++PDl1X3TuQX7y6c1P/PbWk5Wz5x783rx0V0op282MixxUVZnZJnFxqVJeWUqKxebxYhRFNkqIKA8+KImIWOPzEEiJiJWsJyIiplwoTnMfiRMiIkMsnr0GYUN5ql1n0e2YkNOwMzPl3u/2Gvb8MHN13h538HCITfg3M8vzOIoiazVQ5jKJouOnT544fWr9/NmB22vrT3QCBr+RkubOlzX3GX/lqTc9fNtv/lb561/jJZhAxU1Z/+AfNi9+4fP/9n+e0BgAAA7OXE0sAAB2JW+g8GG5/T3h2V8nInrfPzj9/jStHCOqSUaRmixrJsuF1KUmWMk1SGRaZzlVH4InDUwqrM6bciFeXbLHV+TEcvHsieXzZ0rHlml52QXvAlmWSI14ZSJiSckLBfWBhCWyRKSZEyKRwRNQVYRJALeKjfHeUwitPzSvqkxkhP2wwC+bzIF18P4DNUhUIjFNqpeK3FBrrVqqUu1UtXL8Ofvv/nP7yt/4gH/b26598N9dufQE/dz/NJnxAABMGQJCAJh3Qj9rV7+Wrf0LIqLiRvKWX9PqclT+SqVWun6qtnSl4svFkKUFGzmXe8O55omN8rSpHEREmJm3znVKpMKxsqqGECjo1hGImLly+kzlrvOrX/fi6I6zrhjlqkLGWuudlo2RQM3gmkZVfcXLCkU3JB84YGYEhAC3TNh7z60E/lZMGFTV+Hjg5jyx9aKDsZGUgmdNVLz3BRVHmhFl8Y0VdyG4Wi6bhfLxODd//KChmO/61++vb1y7+txF+rmfn+rAAABuEQJCAJhfxdMPyPKJ2hf/IiJdfes/iSN/1a9VTIFC2WgwLNXcnCn4a64RR5m6ms+4UjrrcvG+FkdpysyqIYQQAhExcys8dFneSuKJiDGGmUMI3vu6ulJSIiI1ZvVFt539hgeTe+9oLMUuC7EY66mVFQzCmfqgGtPgTAJr6SA/JYBDqRXfsZLq1p8xMRtjiOoDt5chmb1JEfbGF0WTF2zjdspekJpwYl3ZFrJq05SVSfMNT6uyUgtfLlQuFML6n9xfpqhy/of/Hot/7jf/yVSHBwCwbwgIAWAeRat35WtPE9Ftb/2FamUjWztxYmV9Y7PkK3nciJXrQpwWlgruRnTTp8tBuCBc9N57zfLgiRI2JZvXeRttr+RUVbFMQVVZVXkrSUjMHBftxsaGKpcLRe+1kWelE8fO3H7h3MNv0mPlfCkhldhR8FSXUE/MarqTCWwnIYlIuXmgHxbAYdS6jiMikZitDKH3IQTSaPALeHDGflLilNbjZh7ruTS+JHS6GbmCrttmnBqbu3BsqVYTW7wS8uUzWlnLQqbKKw3a9FKoP/Kq22/7Oz8dhfD0byFbCABzBwEhAMwXc/xOf+MrRHT6zf+rXy5kzcyn6fJxuV4NURwvccIbV5vFcpyV1rm6lJy6YavLqTQajSiK4kh83ogiMbGpNZoxx7otEJnt4HAjr4uItdawEFErhchBTbMZFxIS8XlOQa21asQF36ynxx58yepr7i+95M7iynKkMTlllZw9dYeC28IBf2gAh1LrD9Z775zTEIwxIhKG3KPLNHgp6fhHHbz/hE2Dcoml1Ag3ElNJVSw32fnE8o2CmDxKmqmlEy/Q+rI16ojzlC2FMlNWk+h0I/uzN5Xv+7l/de7t/9mfv7a3SioAwAwhIASAuXCMqHr7Q/mzjxFR5Z0/x3lejitZXst1NUriLL+RSFx0GzfpDrZXjTHLWe0FW6qkuZFiQ5oiNgRiJaOBgnolFhs0a0VrgYiZW5EhEcWytUZUVY1IO6ILTE6DshoWCZ598ORZxETW1zIiKd152+k3vPr4gy8L5bJLnYrSwIBwykvXAI4C6ajP1M7zhxCMDrvgMt0LMbmJAnlSLTZDdaVQaHgi8upEpEB16yubph7CclKkm838pKZVMifDck2er4aVSnxTjfj15aRIKfnn/+z306cvfvX/QNUZAJgLCAgBYPb43LfHcVr66n+6+bd+6fyV9XpSHLiZ0lZGrnUFf1Axz8B9T3bOKbe/Dv2vbeUReXvLndcG36pmbwOxDxzFhTsvnHrjq059/dfVVWxOwZEkBeLAtWYc203r4qFVEAGg185f6HwXY5pU9eBUshId/8vX8Ivf91vyzu++eP/KRHYLALBvCAgBYLYKcubl4eqj8qpfK52/FNeXtVhStzlwUyXfCtWmFBC2vkOs3QGhEgUSZmZxIaQ+t2JPH0/OnHzZu95aPHVyXciQTTxrYprskix4nFkBRnbUAkKjzfWwdDquf6Vo6CMfrX70o5d/G6lCAJglTFsAYGbMN7/VbnD6qQ8nD//DcrIeZad8rRGOr4VmeeD2BxAQtkoasnQ8GTT2IRcNViyJzUPIvFdla10xue2/ePjkg/f5ZiiurGw2mhLURBGr398HAnAEtf/05tykAkJX0LzaOCmVtOg3N5Ye/WZ+9U/91n0P/MDvfL+dyP4BAMaFgBAAZqF00p660331b5Kf+fnVj6uNZLNKZlU5JCEd3l2at+4Ras8d+6Zo+wkIO28v3JmV8lZJUgpaZmmoa1JgIxGL8cpKzLzhG3GTV17/4IW/9U5PsswliZNm8BLcPj4SgCMqzFcsOKnAb5hik+sVdbVEio1g43J27banL1w5laYr9i+/IZnqoQEABkJACAAzkJx7Zbr+7NI7/x41Klq7lJdOrxSqzeePmdKaD0ZkyIRscgFh+/mejhQ9ASERUVBmDaReQ6tUKQUfSANTQYRylTSEC6fu+IF3le68I3HWK9Ow8QMcYcMCrXnLDU47IJTg62Wb5OqrvLTiGrSS1a4Xk6VirgXr/vA1lakeHQCgHyofAMBBq5x9ML38qVOv/XF1xeMbVytLGjXXmnmwxaxSzJbtzM5LXfVCdefrGjlHakmKKgXPBbVFlWKQLMtcyKloC5dvfOWXfmftI4+mJjUhncHQAeYe6+BHP+XOv7/DRjS3vlZ0wVU4X29o89moEpU2pWDdTQ2veWRj1gMEgCPn8J5xAWAeLSdn70mvPPrSb/vHV4TjLLjCWt2vVDjxUneZNmxacctCQxpMTzlDSNS3eo2VgubsIxbxzD6oKrMKsZI3xeT62s1iZC2LlUjJnnjdK85+z1sCl8b/ZAAOiVvMBLZDwWlnDqedCRzGJ2Wb8QvhuTv4gs+yZkm57iXmlJ0yFQIteXn/65EnBICDg4AQAA5O6cwr6le/fPrbfqpmYuNVjJemRsmyy65GzEQnfLKRu5jCqAEh9c7qbjEgFAp99WBUhTwza2CnQYXJCKsnFzhzXLROnbo8CaauwRWLd7/8vjM/+L1jfzQAhwUCwt2VNaxLUkpsll9zLmZ7nM0Vai6lkU0oP55JjYLR7M/ecHImwwOAIwgBIQAckOjsK/Mrn3rRwz93rXCS02sVTlzHKahzcjbSRI1DZ55QdatXRCvq46Cq2g4ghwsDj9iqNdr5761DdHTEVlUhR533H27vc/m+u+/5oe9P7ZLzVClaLy6tNlekUjdDAl2Aw2TOisQMM6uAcJicXMmbKkcroebJqK5+6I2YpAHAQcA9hABwEOzZB/Irn1p9xz+raTjZuG5oKZVDcK+dtM+iHfcfypWLzzz9G79XNMHaUMtTX81tUqiWMLcDgKEKlhtGChXKua66qrLx5g+tzXpQAHAkICAEgKmLzr3KXXm88m2/YO21wKfTqLxCOWk0bPuu4i6j6Wolfwv72fMQg/bZeyItZrz25a9e/Oe/G7gZB06KFcm0njUmOBiAmdMhZj2uXosyTudCpnWzkdXlQl68ZJw6y9/8keasxwUAhx8CQgCYrsKZl+eXHz32rt+wXE0lceaq+sIaRUsa7/IqZr7FcK4dv002LBxyoK5zabCSU/Pax//m2r//YFSKfdNJFJ0gdJ2GQ2X0qqEwCmU6bk4JJTGvR7bQKDmhRLj5jkdemPXQAOCQQ0AIAFMUn36oefWJs2/7Wdd8jun2xHAItmFr5dRvmr1njvuO5XpeOKmYcHiSsIv3npwrrCYvfPAjlz/woZCwc7nDTBkAhksyU3XrzUrEzU11UZaXNFQT62o+fuPH1mc9OgA4zBAQAsC0ROe+Mbv22Ilv/aXN1duXTVHdZrZRikrLZRc24zzmiVVYmXYOcLRDSHubFUdRkvg8SMKXfu/9G098Tsq84Q7BPZNwFC1KJnBRloYO40uhYKO628iXT0q9sqKqq4Vr6TKxmhp/1++iPyEATAsCQgCYlvzyx1bf/W+KRt3G1apdKkfctFmykW9KWF4pa2PPEqBEk07uTZdunVEzzX3TGZuQC95mz/zL30uvPr9qilMfAMAULHqgtSic03oiyz6YZsKF+rr4xkZYMWnN2GOXaeO4m/UAAeDQQkAIAFMRH3sxEQX37LWYV7jgw82q+FORWYuzWLKwUVc5NeKu9hfL9b9qCjFhX4lRFVKplZijODSCN8zis+bmV//P35cUE2iACTisAWocjsVZGsSUuVbLQsm4UkJ1o3Hg516SasF828ezWY8RAA4nBIQAMHnRqVdkN790/u2/lMVuKefUeCMF9lQLrqRGfMGxIem6K4Y79MztBk/1VJREeauNdU+wF5gCU2j3Gex56c70UQaeBpWJZED02D5c64gqGjr+SaKtx4qLNG+agsRibGZspjeff2bzTz9QK0RJPTAFMsQ+kJFiUkgDLvzDfAg6+DEjrT+3/sdh5bhK3pA3DZbIsobIO7bKpDbKJCkXm3n69g8hJgSAyUNACACTlz//6WPf8itVqlbSvBZ33SvYjqBmMrFrx42jVJ3ZJaM45FtbZ1RHQY3Ngm86x8xGJHth7TN//THz1FdcRTwL5WqSuNmsrzdry0llv+8GAA4/azxX7PPpC5FPsgjdawBg8hAQAsCExWdeSUQuueFLpVA4c6w+doZhSjVCd9/hnkfpby8xiBBR6gNFhoxlI2QkEVuOYtqoXvrD9xsbAguRSV1eTCKJjUsnVlwH4DA5rEtDx1X1WWhWoqXlWvmmo+i1WDgKAJOGgBAAJsxUzpx4+Fez6FzIT95oXE3jfFY1CadTSKbjvkEVJtN3RImMFTKkSiJ58PVmvWBtSezm45+99NFPUFC1kSG2YjR3OmhtKsD0LErV0EUZ57RVbDDUjNbKoXkyN1YGL4QHANg/BIQAMEnm3IONL/0xa1bk66vR1QueSHqra4bFiYCG5Cp7zpy9J9JIWXJPuTdk2Bon7FibWZpYffb9/1/SrNZ9Q30gEptTwGkYDhYyb4vF5lGjlGtyNbI3I/Ic8td/eG3WgwKAQwUzEQCYJH/5M8V3/yJHzqR2PaOqOd4MA5ZEtoq+jG4iHepHbCs/wID7HXuq0XSdS0NwQpoYS6piIkkiiSM24pjl2auXHnlkyYYQQlBTiJNMm2OPB2AEi5JhQ4C6u8TYaL1YMcezqEihwd6nYmc9KAA4VMzemwAAjMacuEcbN5Ze+t21kBaJl30INjfFWN3gud0EMoWsu+ynFfrxzj8HV5Qh0taT7TnoVujYM9h2OdPtd9O5f2bZ2atREopM5LI8qDrnNQRSZYpY3ZXLz973mq/3leU0C6IkSSCPa3MwBYipDoWaybQYGr7GeeBCeZMi/4WPm5PnNz/14VkPDQAOCQSEADAhckLrzy2963+z+TNijnvJlCs5F9O8ZnlwwDOrgJB6Y0Jt/bMVEO7Ejb1bbsWEtDPN1u7Ntr7hbMhzx8QaQpwkzCyqkVjK2RUD16vmxHG+445ESj7kwjkpTsUwBYgHD4VY1eZLPiklaVO5cCZcbZ68+8kfeyfRMlE669EBwGGAy9IAMBnx8gmy966mXyK77HzTSCHzNcOZ0dKwlwTm1oOIdw8Ph64fUyGVQBpISbbaGHa8iolE2WhHvDeIqLIqt8PC1patpmetnW892Vo7Kqy8szdlVmZVbR2OSIyTSKKgytY4lxEFFc4piPGsxFG0/h/+KnGbbFJPIdbyLm8c4NDA0tD9ETJOGi7UUh+KwT5VPLvirhLdduZb3zrroQHAIYGAEAAmI1t76tw3vcuU78xCmUyRRY3JrWmI1G9956P1hJiWsXbet/HOadaTGmKf5bW0ufnYlxriimwy1AyEW4NA63DzOblaasVQQlHWuNAw66VjD3/yz6IXv2zWQwOAQwIBIQBMjK7ccb0hDW+YxWV58MQqRiZznplqyLfvo4/2/PYnIMwqkZo85Df/6lEhxxocTsMAMFzTclQs2UAUy7o0rMvSNXnGnPvab/5D+Z53zXp0AHAYoFAVAExAfP6h7NJjNVfPmctJWchrzsKJc7FXIzLdQpr9zSEmkh7p2c/uEWl3TRqj6ru/L8zErF59wSQ588bnv3jh6o1s5QTjBkK4NfNWOBTJyf0afHEoMVIPwdSyYhRVo6YPzZesrq7fyL8ULmVy/oCHCACHEiYiADAB0elXrr7xRy2rYREKmmWGOYqSPBgiwzyg80Snnkhr7GTg9ox4+MsGNI4YvFlfJdLeiqPbtUaZqF2etO/Q2rorsl2QdOvuROcdU0IcXK65S5aXive/WJyg+geMYligtTh9PWE3w+LouNFsWKpES3GDojjOQq2ZZQ2rdz5X4W9+3drv/+uDHSYAHEJYqwQAt0rOv6b5pT/ONmN1ETsOaa4+sOFMM0dVmzRbpV8GPIbrKQ8zW/sYydb4+94jW5MFDSHES4Vrf/1o7IIdMVaFI29R+grCXmTIYzAtRIVYlPI6aYO4UC5xgfIyUdALd3/LN3386kEOHQAOJQSEAHCrwqVH4u/4l8VijdgYG0dJISqWPJvce6ag+VFpvD6wz2E7smVmY4wJ7Fk1YpVQvXy5/uWvBcSD0G1RisQsyjjnzbifW52iPG2m2UZ0rNBk2qw2jZNylbK8oFHV50PLOAMAjAgBIQDcqvgVP0A2b2ox42ZGaRqyXDULxphKOV5lt/+l6ftOEs5PdrErSSgccheEuRA36zURXnvi6VxRZRQAhir5QkwSJxo21o6lWpGSckGoslR+Ia+fFEUxCAC4VbiHEABuSXL7W7Kn/vD4ve9wng3nTMTErMGQZ3Iu5CrDewxyu5UfKbf6vnc+RtfxKtaehvKqyizEQiysrLrdsL5D536YZUA4yUzMTLzdi56JWZmIWYmYVLdvKGz9s/0GtaOrhHhyRjmxhSwEtpHa+uVrF97xKiMVl9a9VWc1VmtV8uAoYsZq0iOJtfcvYdy/B5gLHLp/brK/n6TnnMlqiNUYL7rVHFXydRuXfLz+pb/hCydrn/jIBAcOAEcNAkIAuCXJi95SvOd7GsYs26ueijzI0JIu3fc/DdxoHwVmBkVz24s5tfXPPfcyYvWOdjEb7RznTkDYPXxmDhSINAqaixplYinc+yKzfIKNWGvVq3plMSykrRgZjiAsujwkeqtlTXbvq/lmHhfSO5ef/qF3T3bPAHDUYMkoANwSG5XMiTtt1Ag68VtZeudPE1kIOsHVpP3tLnbf3jOJiPVbUakKadq4/uhniIJaCYGiYDypl8DMJuD8fMgtyj14izLOedP9afHEP7crycmCu3HiRnLvb35gUvsEgKMJEw4A2D85/46NR3+1UL9SCNGmVIZtxqIDHyMcYascS2e9ltEjunY1l55nDsb2sXZOs45VRIzTQOSFSFSD3/jcRfGZEmWps2qtiT0pBWVMuA87VA097PauIDqaMPBxMlDuKtUltknpzHt+ajJDBoAjCQEhAOyfsRS9+lc2JS9wIWg2nYMMLt05nWPtR0+MOmBsHT02mFlIlKWVKBAhd+Va+twlUUciTEQciIMQBZyfARbBtDOow5pUhGbDlUt27aZ51auv/vrPT+pwAHAEYcIBAPuXP/PHpROiy6fyul+SKQWENNl7bw4kmOzKCWw3sRejwauSsGdmFVYKEZnMX3/0cePzuBArUZ7n7L1h8nMU88ItWZRMIJaG7td4fQUnpZHkxFmcnLSa3vvP/2jahwOAQwwBIQDs14WXEdFS5KT2bLCZUnHcHQysQMPMzKbv7NRbnW+ukoRD9J5grXIgVTZKYlVExbGwMdc//ZirbXqmQMrMlphU1eD8fEgg0DqqxisQKzr4MYwmgTfXrI/K1aRoSi/5gZ+ZzKgB4OhB+xoA2KfS+Qfqr/3u66F51p26xjmZWuzjSe2cee976Jh5z1n1KNtMD7NR9e1/CnGgoEYCaaSG1Tuh2NjGc1eyatUtNQucFKzlkJEL3oolv8vOAfYHsejhEKflkHCI8qx5/fwdb/yj3/mWWY8IABYV2k4AwP6sFu78hrPJqbSauGKWiEa5D3xLp5RWN0JlIg0DS++rkFJXN4ZBNWa6ehK2WkC0t9hueDhg56ykW60E23vo24yJeOfV2tFvcKuLIjMzKwdiYlVqtaNgJVYlVWajEkitMlHwotaHwD4OPsTF4/e91NtIPOdBXWwjZULP+sUSlFr9KHseM6IDuxkO+r2GUejQD3TM/bTPTx1PirbuHx6wtjgM+p1SIqaGj6J1v3aysZStyKkH3njpA787wfcLAEcHliQBwH4s3fmNm3/9f+dajEqWxTdcTsOrjE7QRFaKtor09exWt7vV73m48ccw+EzbvrdQha899nn2jrLcex9FUayCNA7AodRzE+nu60J3Yb0UNvxyVLpSKRWbDVcpnvnhn57gOAHg6ECGEAD2w564+/QrvneDbeCmpSSXqtHTxI2J7HxYvY12zDZqQY7t7QY2lNe+5/siPR30ZGd+svM57dhOqfdddG2gTEJEW2lFNUzZC9Vjr76/uLISVKM44sw55oGZTJhfc/bj0iEDmv+7b2dr+LWYSX5yov03Rg8+7tBfK1ndLDxv8hAZDg3XuP2uL//I2yc4QgA4OhAQAsA+RPnNi/x174wLqyHPC6audILIE7mJ7F07lo92PtpkxJnZkICwHcj1x4R9Axm0146vOtas7sRvTELaG84xd426FQoqK6kSU4GiZmRPvvI+CeKFNA8ajxz3wsFincTCwQOwKOOcOzKRpaHD9x6Yxig7O+wb6xIqeRTE+7xg4yhu+uj0+ZsfQblRABgblowCwNiWT99DVNZ4uV67Xiom4iqU13RC6cGFMGRlac8ZdcAJtj23C7z1KmXx3ucx1z75+TSrM6sPpJGhBSijekShaiiMYtyqoYPbzw//fbsQJPj11fiUC5uJcszJl9/34y/60Z84wLcIAIcEAkIAGJtZPvPyt/y33l0tF0v1DaemWbInvG4e5Bhu7WZC2e5sIYGEyZAK72PFhPaPoaf/2E4/+vZTHV8LkzBzFEWbrh5vbFSffkZFWYkj69xk0q2wb+gfeLip8sDHxA7AYfCjT/9dzd0G9znMm7UQH3u+dqkQxdeCpIX1N33uy4U7Xzqx8QPAkYGAEADGdvOLf7FROZZklUazGlfY6arz1605dsDD2DsmVNl6dE+kel4Ytv+1ZwmZARtsTx+HD6b3NKtETGZne2WxRkjF6NpHH3NCUSD2QVBidNYQaMFUhe5QcNzfN7dkXJGNnGMqnCi4prq8Gp1683cfzOAB4DBBQAgA44nPPUREN3wl0cSaxFFoBhdCplQ6+MHsL0/YnwMIvBUW7lJldOi3hsSErX/uMsJ2INpM0xUb10K6+amLjr0oUeYSG436fgBgoXTFgX33SI9o05cKG75sN5KMa6mL82PWHde88PqPHOhiDQA4BNCYHgDGE597qPKqHyTSLMpEmXJiyp0pU745/iWmIVVbWjfX7ZWKaW/Qjqx67s8J4ohk50mV1obBdzV8b++HlZR3etkHktYAhbnzUn1r6qaqxF2zOG31PNzO7AVqFZrR7UtvujMJ5HKf2CAAACAASURBVEAUmEml1aCw4E0wlFF9Qx9/il5+fyPzFSp6ynb/BOBIQXJyfya1CrS9m85lw1v9AwcZMcXf3puOeQJNQqqW02Aoyg2JUBaISDGvA4CxIUMIAONYWuLiSuvLnThq/7fz3VKj5xGO232K25638baerXcmfMx9Lx48hJ4L+8y8e9fBzhsId0YpFPLMszrWy49+LkRcjGzT5XsfHyYBS0NhFJPqHzjB8XRqXxdb/9RfHfxgAGChISAEgDEcu/21m5/57f7p8sD46sAMO3T/jE05dD6x55hHOkUOyj+M9mls7d4wRSRelVlvPPZknjYM8wRrWwDApOxZLHRP07sAEZiI+bM//s6lt6MhIQCMAUsLAGBUx+k4ueTu1//EzWFb6JAAasiSqgnaCsBGmVRxYNpZktpeINq/w9bzQq3/aN+3lFtdBIlIeVj1yc79MxtV3/19YSbyucSJz12iRBu1zaee1ntfaiWhgEKjB2HeCociOblfwy7gTObzlNYi0AlcqZnitfhAet/jn/n8Aw9O7xAAcPggQwgAo2pQg5766EZ+ZlgEdfBD2qUGzLiv3f3l7W/1fzH6/omopy/F1jpSF5whISNe2YT1j32ajJeAqGDCsDT0cJvVz3dY/8BZWc3vfdlv/OHsjg8AiwcBIQCMyp6++wbdyOLmwFBnt4lXu/1Dz2PaRjtEe71rGD+s7aw1umdZ0WEDMyIN5xObMHNgV//8xajeRHpw4halryDsZXBfvsntf9QQb3/9Ayc1ymHLVgsbVCgcf9F7fnJSBwKAQ2/8RswAcFQlL37Lsa/7VindoSGdzB73OxmX7qBrpxhMT6MIIqauxZyBSXlnItXXVUK1b+e9Q+56SddiNCZulyDtGsPOS7T9ZOeoYpIqaZGMp8AUQiNbuesOOndacM1uX4Zdm5i3uzKRnNyfaX9sQrp7qatApCOsQ532OFuj6r/ZOKe4fLd97G9/33QPDwCHCGYbADCy5FhWeFnuNya2w31lDvdcJtr7TO8Ou67p97+855L/rkFr31B1tyqpXaV3tkfFzMpCRMFpbqhInIbs+U9/wVtECwDzZSL9Ayerr24WSXx97caxGQ0HABYSMoQAMJLKS95Wffz/iV7ynTY0iKd8LYm3yr309YfYuiaurTIu288KMSuR6vAb/LbyhNs5w/ZX1Hkg6viGtNd/MrdSAltfduR1Wi0He3KSqkoiSkzMTEIsxFv5BKadV2rHTNKLL6ptikbETRNW1dQv3Tz9tm8IphQH710qiWGxWeajJAo+52l//guO9RaamcD84ND9c5NJ/yRD66LUdmSnoiqkw47Qe6lo53x0S+1z9m1gRMpEwZrcVSp3v5iNb3z5yWkPAwAOAcwqAGAkunz72W9/n11qJs05vbftwKra7H6gERtOdG6mSl7IsrSykU4oqLv51NPBeTVW4iTLnPc+MibLMmNwIQ+OhgO4zbjngIfiskGlEU5w/eS3vePGf/oPsx4LACwGBIQAMBIbVTbNiZvXny9UVmc9loOetXE3otAK59qX59vRXfvOonGj0yAszOKVlXKhEPLrj3w6YXKswRhDhoNaK6KkgoBwy6JUDV2Ucc6b7k+LD+ZzU567qqHjesFKXlCtLd/3a38067EAwGJAQAgAeyu9+C3rH/vfV1zteGnl2lwkCGd5JX87JtyamPbEhKO9nLqbT5hAKhqEmZlzVuJQ//wXTaORe5f6ENsCkVDQyFjv/bA9HzWoGnrYTaoy56RCvGlXN52MFVrOg5dSkELx/A//d7MeDgAsAFxpBoC9FV70xuUHv69ZzEp6PtebMu14bKRJ/dAIbHBsNmifw99Gz9qxoU3nt47FXdVEWba/6Hg5MzP11X8gJlZDJiNvvQpREBM0GCau1kt3312+7UzmOfJKokGdIcmnfgfn4kDsdygMT/pN5jwzrGpo69EuGaq0R+3QecvpypB7ZaOsaXjFp1fthXNPvue7Zj1MAFgAmFcAwN5svMTR6rpbzZpXyzL9DNWo1Ud7mkYM/mICw1HuOVv29avYyRPuetwBXelbb02YmdRbVmbjDbExFC594tGicBTbPM/JiIr6/CjeQ7gomUAsDd2vecu8zdt4xpMX/Hqxepxuc1S88+//8qyHAwALYGFOcAAwK3LuoZuP/LOi9xVqko1cmN3dNAPCwgOqH6mqnSfMnll+Z0w4UHeU2HviDSFEJKKUM2swCUc5hWCldvFi8/nnrbIV4zWINUx0BJsTItA6qsYr1yk6+DEW5YX/fXORxJvp1XJacelXfuG9d/2dn531iABg3h25iQUAjCtcfiz+9l/eLPpC3TVtITXJrEc0GxOcETJ3ZflCCEakdfdgIIk19oG8YdmoXn322SxvJkmS+4w4iIhzC1Te4nBa9IABhjkcVUaTmrHJ8krKgd1b/zqU7nr5rEcEAPPOznoAADDnioX7v7PsqdrIS4lN3KYTqzw4JpneKr6tFBx1rVYN27M3UaaOLJwnJWZloqBb+YGOAbOSl9arSHlnzNK1d1He2lA72htuJyu2q4x2hAHbI1RVbXUyY2ZiUvXbr2z1Stx6iWFDHFovoIhdHkiigifhULN5rIYCURLSv/gEvfJ+UhIf+5SL3qVJSu6QrhoN8xVTDQ0P5muYC0PHjrcGf9Dt3XSecES7/sw7jX4FpbXDefvxjpvkJCERuq6Nc7WkUdLCyszrQgPAvEOGEAB2c/yub2l+9oPBuHJhxZo8zXX+72Ez/WvMDryh2S65hp77DAfec8jMyuSy/OrXLkXrtY2sFhkbGZMbEsF5G460nptI97EutOWwZnozdq7xfCHJv1aOl/0Ln/y7D6+87d2zHhQAzDVMLABgN7mEe97yE2qzWr2qLioucZ4N3bjVl6//MW1h0CFYd6sr0z+DDLz/OjR7FZIZuuXOP7cLk7bfC7Nh5vraWvbUs7lxkRFW8mIUXScOymENGKbtYD63/d0ieBQU49W8aG2tshRKGy5/6FNX1//0P856UAAw1+b9Sj8AzFQhu/lk+Lp3kpQjiSO5mboVMX7c+uuTCwmHHle56yjt7YTa6bit5aE9RSp2GRvzsO9qxzZdq1W7d8u0FWRuH3d7Y2aWdscKZlVPpEytNoTEpEpKRBGxiAl5WH3dQ5ITefURUwhDx7UgeEi5/LmzKOOcOzKkxcOk9h6Yxig7O/xsNd1xTsq4A9rg6nJjJdirXtlEy1HuolPnbn7kT6YyOAA4FJAhBIChls/eR3TMFU426i6OU++X2DSCH/u8cfCZw8GJuHaR0o5WFtpdVn5AaDdm2nBQ54k9PrGeIqWBpRUchkBG9foTT5r1DSWvIkoyYEHsokHmDUYxbtXQYe3nF+X3bSJVUonoGJUbVK0s3ZbresHFxWz5y//oJ2/7b9ChHgCGQkAIAEPJ0qn73/mTqb8cS9nngeJMs5KxnoeY9Xh3bM+iBl7v7z3v7d6Nek/DbgIk2grymHfaGA5bMsrM7eIX7SeNRLl30mxWH79omYy1Pndz9TnvDv0DDzdVHviY2AE4DH70CXtUjlnsvoLjMg0xxdWb6+sFc+6q99Wk+rpPPl+8+6WzHhcAzK9De0IEgFtWWLv4wWvGFN0S6ZoxJtflJK5TmLul5jtVBzuCpY4r64NXdfbuZBK97Lf3MPDUKtTXu6L1z511p7JV0TQwkTIZUUuRpRuPfCaE4Fhb+Y5bHOSBQaAFUxW6Q8FF+X2bVCZwmJB4H12xGjNVTyzVmsJeXbxycmIHAIBDBwEhAAwWnbufaPV64JJGxcRpsE2Xezd3s6s2lcHJt9a/Op8Z/T6h0UPE3ZeJ7r6f0Jf0aG2fe2cim/ts7YtfyfJm6l3BRiOOB+AQ64oDD6p41aK4HgepLiVSSPKonrlKXi6m9nPv+a7b//b/MOuhAcCcQh9CABjMVE6Xv/37iaipdaYiaV4SCmSZ/bBr7sPCnmEX6YfN4YatKty6166zqCiH9vaDkgEamFRVOiqO7hLRhu0GgtsvbnUm5O2j6NZWA99LR0NCVa9M2hrYVq/DoKztZoetVF+rFSJxEBXdHtd2otKoaeUNVGMjaWPzk4/d/k1veiFLS5UyZc3hbwKGmsNk0UKY1CrQKfUPbO9N5/Uad2f2j6ff57CSBjKUUYMsGU1UUkeF139k84U///0pHxkAFtWcnj0BYMaiqHnxjwZ+B7PqWzEkZh54R5Mok89yZfJMzz/2VCa+EsXpLn0/ZmRRlurBbE2qf+Bi6XmPM3zH0TGsGgWAwRAQAsAA5XP3Urk8qb2NW4RmVv0MR7Nz2hznnsNRTrZ92xgRlSAiIptfeLq6uRYJq46YOAGYR7d+y9wCXYCYo4iX+bM//s7lt7191uMAgHmEJaMA0Os4HfelC3d9/btvZkSTKLUyKVurL2dPeiqC9kxGmVvLS7cLxnDXBsxMnetLd16inXtu7dbEidNMiOJm8/pnv1B83UpCkc5Zc/r5+KHsmM/YYBEMu2wxmc9TWr/bEzidLMa17DmKBolI9f7HHv/sQw/MehwAMI8W46wKAAepETnzhU9cqy/RPEWDLf15wl1mXd1NHbq+GFP/kk4ZI1W4a3JzWLKUmcmH3DKriHMU0Y1HPu3Yx2FmP5EFyszAPszq5zusf+CimHbV0ElZrt993z/FbYQAMAACQgDoxctnb5SaNilPOxrcXz/DzvBqlFnXxN6FDrjNb8hjq6gp806Lju6vdxmStDcwLJ4o5oiIPOfZF5+hjU2eXXpwUfoKwl6m3Zdv1BDvCPYPnN31HIo26eRD3/rmT1ye2QgAYF4t9okVAKahfv2ps9/43kgndg/hlMzg/DUgJtwyKMbb7wC3jyIigUi8esPCqlnz5mNPuum/7UXJBC7KOOfNtD+3PcO4EXOAh+/nezDR4LDPLS8UbaFazYoHMQgAWCgICAFggKz8IqYbsx7FghleQXRPfduokIrXIGJd5nLLCQtFfPlvHs9lgRbTAXQ5Uv0De97ZDHODLVH8wpXqCfUoHgEAvRAQAkCX+MwDRBSMZn5m54fdl5KyKBklo16CF+ocZuCdh6py0P6beQbfsEfERIGkFYlt5eiEtaMejAqrMJPpf/kQQTloq8eaMilvLyIVZSLZfkcqnnzgnZsJW69SDs5ERUemEAVr14KuNkzz4tPmxnNBDHtnybNVTyo2zoOf4F1XWBoKowlEQToeRoMZXgW35xvt3ytVHviY9ujHNe69gj3fmfm9hQ0plNVsPvXo+f/6vTMbBADMpdFnNgBwJCT3vmv5ge/LSrZUXfNRMuvh9Ogt5rn9FRH3Xo/XccoZtrZUJiZSVWbubHfdGUNy3zAGjrPvJT1f6daouXW3Yfc3t5tXt44sGoIGJUrYNNQXL5wypy+UiqV62mRjQlDDEjRE1kxsMR1iv0NuUrGW9u6r9Wc4ZPe7lH+a0HimazFGOdxKFtKCj8+UnvzR7531WABgviBDCABdbLycls43NjdKyydmPZa9daX7hLvCMObtzN/OQ5VUt1KInXT4bHXilXWYeYRzrzCzaUWlwkbJCjmrrO7aJx4rGnGsaq2oWBbvc8uSh7HDuEW5R2tRxjlvZvK5KaNq6AEZ9+f7NRMqpCY79bJf/Y8HOU4AmH8ICAFgR/HFb9v42K8s+caxor1Sn78L4ir9DybTsdiyK37rXEHa+Wh/d8AR+joK7nuwfdFpz7c6Tr8qg1aiSqs5oRILsQmSURCh+he/amr1WqMexQVWY9iykhXjwtjVR7E09LCbVJXOSYV4h7Bq6AI5Y47VQwjSOP7K17/5oy/MejgAMEdwIgaAHWb5/PGH//G63LD58ThKZz2cfdoliutpa3GQZR72iAmJOhtObG+jqupJ2VhWchriyETV5pXPPB5TCEE5qAs5iVoZGFLCkTDtTOCwMK71GD1MnLdM76JkAicl27yushJTPTGhxpj+AcAOnBEAYIeNyhwV6nzC5fWKyWc9nF6j5OtapSi2783be/vOmHDic9PeAQyok7GTIRm4lNQSe5acmQKbQMTGRPa5j/3Nahx774TYaSAOweUiw1tiLEgmcN4ChsUxb5m3eRvPYpvU30VY5dysFbNzz5to89EPT2OoALCgcIIGgC3xvW9fe+TXSmlzlRpqTC1rznpEA4yS/euICZWZWo/t+wQH3C04LE848bsHibpiwr3bVKiPSYjIiZCahGKnITfGPfPM+uVLlkSY2YhnCt7z8Ev+CLRgFBPJmLUK8+L3bR4FNXW3uZQtqf/8j37HPf/Vz8x6QAAwLxAQAsAWUz699J2/2CyXC1VN4xCKc1pUpj+O0r7v9vc36+ldMUu6xzDa31VVIVamnJmZIxbvNOVQytwXP/tZwxpCIFFuzdl1Yc7nCBgOq/lrFbFIpv13YVwihUrUCJQ23/EXvnDXyye1ZwBYdAszgQCAKTsp8THJ3GZGufWxJ0mzWQ9pqN7OhCqkooH75k/dJUaZlVlFSLhVknSLaJAQJLSTIaqqgYMnCkrd4WVgUjaBJAw6f26PStq91JgNiVGWQNzeie70Jmx1lmBl8qqBSEXbby2IaRi1yhXnOeKG0YglJtssePrYYz7Uo8h6J44KcVRw0qSggx8z0u483vOA/ZlUv76BPwhRIg4DH8NKygQO3XcMCqvw/F2YOGr3Cg7TEKnSRsm5IJVqFI699d2zHhEAzIu5O3EDwEys3PPq2sf+Lya7VCyRNZqmZKNZD+pWjTpVVhk3czipTOPI+5HWutatd5T79eev0wtrqU8tSUySpmmESAtG03MT6b6jo/YlGGR6F8KyC8tp4fnSxrF8qWFuePav//iiVg4DgMlCQAgARESO/Yve8SNsqVl7wYViuaJZToesOMRuZVRUmHlAf8KORMo+Aq6x4satxOB2gmVgjRkmUSYTONSaa48/6YyPgsaevAY7f32zsTR0nk06Ubaop4WDN6u/i/VyCJpHZvWS2VxqGLYJ+bF71QDAoYQzOAAQUbF28U9vJmXlcmRLkazXG0VjF6iV9GDM3B/F8dZ/+r6hW6tItXM1afdth517G/E+wD2fHGTrzCyttvS8FcmqMBExSWApFpIrn3gssGMKLs05icjP3c9rUaqbzptJLQ0dRigIDVoduo89LfhFoiOlsN5Yik4En590mlcsZ1lGyBACABFO4gBARJXzLyM6oeZsNa2biK1Lcpuz2+UVC5M5HFhIZvuZoTPsnjxh5046p+VjteveNRrs//S6nmFmZtMaWGBSEja08cyzjatXRch5r8Zm4zemh8Nt3Hvnhv0+L0qmF/cK7o4LK5v8XKW2knGch/y6vWmCvPYvcd4AgLmcwAHAAZOlky/9jr+bZ9dik+QZcdTwvhyZhZ8otKeCHeVndp5hHpQn3Nbfi2JQTLhbYLxnkrCzWWLPAtHuPorSfi/tojWNPIuDv/npzxvLJrKqOsMCqosSMMyfKV9YGVIkpn/D3RvKL9AFoLkyb38XlmndrITiTcNSaZbvoOMaKkILf54HgFuHEzoA0MaTf3pTrNUk0poxecanSlGVOBl/T/M4cdxrqd3eMeHAewtJxrs/kEZaMrrbZ6Xb3zVsiENkaePRJ1yzQUbEBTGjDwfmwswDhp6c9vjj4cGrr6cMmcD9aXKUNNKNgrkZf61hN27kseVsY8URrt0AHHkICAGOuujcQ0S0mSZWXNlGEvymqs2yQzZH6E8S0hg39U3guBPZ1VaniqBRFOV5mn31cmOjSj5w7nFvHoyuKw5EO5CjoZytRyVz9rop81lpnigyq7/xuQeLtz2DOwkBjjpcUgY46uLzr6h8049ZESLOiQJTRJkXo+R5Ytf+pxWs9N0iyETcjvla39jKcfS0J+zKa7QTHb3jbJVBaX03KLFyd0CpSq1nlTofzMTc/RQRM2kgptZ3t55lIiYh3j5yaA+MuXM83MpKtubtEasj44SLrlmpVKKXviSSQpMzM6kWcBwGVoNBImF/VLv6Ye47sdbeTecrRYk5DOz4GKjn97Ljt7FDx2hkIuOcONGdoczhZexF+cPISYzn1CqFoCYPlJPEtz+Tbnzqwxt/8LuzHh0AzNIcnloB4AAtUfOpP5n1IKZrqj0D97dz1d1qRobtbQZ9U4jIOSciHNQzX3viKRVlt1sJoPHHJ4MfMFOT6h+4WHre4xF4xwftaz/4Dv7Z/37WowCAWcL/4AGOtLh8F50/gOPM+N7CEcO2PTebYExI2zc3Dgz8tpfzyaCdi7IJIVhj1MrmxWfrL1xVE2QOMjlwAG79lrmZ37s4urmKeBflcxt3nKI3Vs685CBHCADzBgEhwJGWXXn67AP/y7DvDliFdtjvNRrYpmK4rciW2YwS6Ia+CLC1fi/QgIRhOyak3i/I2qjp8thYISPB3/jkZ1ziozCx8/miTHznz3QvfEynf+C8FH/qN1fR4CH2wF83S5Wzsx4FAMzS3P0PAAAOyqqhtxJRWthlKjBWp719OLiJ6Vh5vF02Hn0/A2PLwFv95ft32B8Tdrad6HpSRVkpqGaBCvHmI592mkUO5/MZm1UgPe2/0mlD1dD9mdTvW1lOX/ov30Xf8+3TGCQALARMIACOrKanT1ZMqOXXx33lgmYOx8z+jbefYXse+LwOaVmhvGvAuX0Xn1cqxIkLXlQyq/Lc1eZzz7HB+fzATPtCxqgh3hHsH9jfIBRuUaFqKDxD//b9sx4IAMwMqowCHFkJ0ebxh4+ZQkHDuL2JBxcvnFxV0mFVGUe7+D2oA0N7ZMxb3959rINvF+zYeVeL+d5nugaw0/GiI94T4u46otsvZG5/jLKzw+0qo0xEFFQiQy5kotaZEGc5LS2VX3af6nhpIawC3Z9pf2xCg8uStrXLh+5uUX68o581Qm994Kk4an8XaWnz5CU1b3jT5h/8m1mPBQBmY7GvFALA/snriI6v23UK1VkPZU7tI504ykta22xNbbu33/vlKkQUxGiaknCwEivn4tY/e7FJ40b1uziEmaXD4Uj1D+x5Z8gNToun0vrpuLBqfvanZz0UAJgNZAgBjir9MpXqJ27/nJ9gp7FBzetazfsmdIDBV+671nB21Njo7OLX1b1NuxKGex91u/mbMvF28oaJtX2Eju5wg/J+7cO22gwaJmESbe2rawEqc2twSswcWqmKrcRi+9hifNMmCWUhCHmioo/X67UXPXCHVE6pCZxnSWwzS6okufcxy9hT6VHa1x1lk/p9Dq0WH+1l16Iqnb+dfVv3DGIrbz6hPofT1tlOcB+jnNN3NX3TzlhGPrhi/eI7XuLe/PapHggA5hau+AIcUfFdP7b69vdVNbMLVH1iFOO3yxsrE9iOrcaao3WsGt3zWLuNv5UOyq1Jg2MxxhhVZWbr/ZXHv8CimXdkbJ754DQSY609auvfFtohTvfB3GItqS4/+Jf1WQ8EAGYGGUKAo8i8/EF38f8t3vMd+XLNUKYaT/VwB35vIXfeRsh9X+znsIP3o31bDXi+g3LXWXdA7nTrUKo93+b2bpnySELuYhESyYIrkEjQWrV62xtenxsRMaLsSI0yq3oKjDhjX4bH0pPMePf/BoSx87Pz9fO9xUzggcG1kpa0mBWyAlt78rUPl8p33Pzch2Y9IgA4aMgQAhxF/onPlP7BLxqbxI3Velqa9uGmX5W071Sm0koVdh5k30dsLX0dY/vRKo52BId9QcFWY8OdMWvHa5XZqqHAIQRmzoUiMfnlaxuXLkVGsqBiIsvivffeM+PC375N6l7KSTWGwL2dh9ms2pbEaSnz1xK7eerUG+74ob8/7cMBwBzC/0gAjqjypzZ5wzWdXSqX5qeM/i0QZtMXcfUaFhPub9Xo2AYvZ23feyg9I2l93T9m6zVhI0TOqxHrhFLxxutzj346dt5rUCX1gUVFRMZfQ3vUTHsiPuyvq/UY/a9iVgHDMOgfeDh4k1YKF5oNXz+5RpzNejgAMAOYKAAcPS/6JiLS/JSUl8VsSmPsPoSTMoXMoewZ2k0kMxl4j7CwP67rHtiwc29/qrAjMdjuXuidFQrCKhyLUaZmcGzM2ueekHo1MtZpUFUxRqwJ7pDdJDoN85Z5m7fxLLZ5C6Tnjbf5NUqFG0na8EXz2g/hkwE4cvA/GIAjJy6dpR/8g82Kr8vVhG5s2nOzG8tUMoejp/sm0qd+/N1Kx38HvLD/5X1BbHCkeSxkRHKKyDhiEuYrz29+7TlhJSIWdepUFRnCAzORjJkyAphDbt5+vsUsjvyatad15VymZWc3ZzUSAJgVTBQAjpok+/y/P3vp2mqtGqciepsJzVkPabJGPa2N3QNwCgYcdNcMZitJyEZy8U5Ihcn5SIyIEFFcb1z56jMubaoGMSbP8xBCZOzUhg8Thuo/t2LeAq1FYfNClJTIh1r9y2nxcqxYNQpw5KDYAMDRwsfuoqYvvfShhFbrxSTT60UtBx7W03zEqp4TH+Ut9jNkZmGW7SKOfQ8hYqbAtN3ATUWJW5t3hWjdTQL7CBGzthd67nw8vDOGjuNu72mnbOT2G1Nilp1ipkxbS2e1PQZtr1FlZjKsYgKbwGrZqbfMnoKLA39t7fRbvzHm2KtwnMRKQR3CjJZJ9etr76ZrEbAScRj4ezusaqhy6O45KEw8uZK8E7MoVUPnzaLEolUjicsDFzIKJ3164+KT5vTt1Uf/ctbjAoCDg4AQ4Ihp3ogf/qnmyjl2uXOSkPFcIx43iTSbic74c+Uh42zVDO2Mkwa1qRhhQDrwJcP3sNt4enfCTNq5erYrrGtHobwdXCgF8s6TlO+9J15dCSzO+5g50IJMSw/CZKKYnohI2lHdkFq0Q5uQ9H5jToOsOR0WTEghzV1FqjdvHlsqNPUsnTv/1HvQoR7gaMGSUYAjxRBRwqfCxo0NW1+NEqJKZnFhqMcBTYDHWqQ6sHsEt/KTrTsPyUgQ59zNTz9BEXtVo0REQTCfn4pJF9XE/45HhaWh+6M6+OFLmTT50TCzBgAAIABJREFUZGW1UaukjbWlvHH/P/2jWQ8WAA4U/g8EcITIuRcTlaPy5mnRs95ep3otbyR2ZdbjGtWkqpL2zxz7UjvTCqLaQWD/F9QXIvZGjN3lYVpLSJm5tXSViGKOiHTzsxcpS5W8FaPKfkbp3BlS5YGPSe1fKAgF4r7HPvaECqJwUIasxKdMy3nuKw1KzRW/WvJOKq963Ss+m856vABwcFBsAOAICZefKvzwr5hLufriddMsx8aFVGv18c8E485fJ9X5YNh+9jOfVt693fz0b5XcmzCT6tYdnsysrZiQXfeKRd8KC0U4hDy/cq36zFdLd76EgyqzqsfdAfszNPs3JLQc9ts5PHk1X8lbtBDcn/lLTg77vRo8zkLQtcjcMP6Uvf1GWm2G9Xz5dLGWT298ADBvcFUS4GjRa0ktLtzkcJKjjdpabE3RDKsoszD2kTkcIUlIM5mvD1pHOrRBRTtJqCRE5EVIfeSz5z/9REwUgkpkzZxFHRM15X59/TnAIZnAvZqloK/gfmBp6P4MywQOkxc2lkKxQMuXs2dWnaH45PHn65zhcwY4QvA/JIAj4+SdRBTTRqmWLcVaj6iYh6YXP+jmtCNKhXq79s2+nuL2otD2193VcJiJ/n/23jRYkuy67zvn3JtZ21v6dfd0T/cMBoN9H2AADE2QEAYESVMggSEJkCHTNJcgbOmLEBS4hEJLmGbQshwKc7GCIQdtM0KyI2TZpG1RsgQuQZBYiIXENvsCzMJZe3v7qy3z3nv8IavqZVVl1quql/Uys+r8IoF5nZV582RWVtX959kIERnBIHukQMH+I0+6ZouIjLM6b/sXR+6CYaRv5uz25FOwM5N+iStI7vfblMxqJ+5W1pB36KUGr7W9wLNh0FEqgPv/OKvIDkEQio4IQkFYGW49Rx/7NT8As74eONNp+7peDTwyoXwPnBHj3r+0TvQnDsJjAyKowLHWFHDYuXazub+PWrU6XXCFm7AuAUM6cN5cVkEoArxRbQaHrKubdL7pQi90ZsORbVglaYSCsCpIDqEgrBAb4brVAEELUXmqa52qBl3nncGR0zTngnMLCQGAmePhUjjoHEg8eIkYmLnvK8X4Lsyc6sOJ3InMDh3EUrAibRCNgIiDZ/Pc608IzHbogT0TMDsAQEcc7RIZ0nvYj+AGwzIzOAawAMAMFqLGiggAawwtqljPXjT21le++LqLd3rVhuNmZpc5J7KqBzMyzOAtppQLNOVlO75VZn7GekZaPe79K0Jq7AgFdLKVg4w+19S17Ol6AId4UHd+oAENBJVDsjJFFIRVQTwDgrAS+Bffk7cJuTHif0ubfaa56U503yHiWKDpCSNMs2YOus5oJDC2q/DWE88aNsoEpnDz//yZnFK1ZIzEgq7MeQunJdT2ni+287ZCEISzQB7/CMJqsHnxwlv/ZwutvO0oFpG3DvrVWSZsNtmJEXkdRzipium0RIITMZ4FRDCIHe2vRASnlbbGZwo9Onr+WvP6y2t33t1GefDXI/52DMmkGcV4+s1QuLDRQmUGlsUTWBY7F01He1qLIBSElUAmCoKwEgRP/1Fz63reVuQGIg6n2x2TGI2Y6ME7wYmX5CScEOo42Uk4Za3RkS21XzXGVJRmpArAta9+k5QpVQ7hYqtxRv0DE7oIFszOrCiUGhTmBlOWRVOt7nb+8iuLP44gCPlTuB8wQRAyZ23zHQCAdClvQ8ZJm1gvZMKdqOgQEQinLAoyQRP2AkfHZCEft49P2OWEAYf/xlg92MQdGYiZicGGTjUqh197yARNz5Xmez6vKo4uZSkLUjV0PkpTNdQlL4tmY//KY3/3w+fu/9GFH0kQhLwpzURBEIS5Odp/+N3v/zR2mnkbkj8TEgVHXpouqW/oSX1vkBRNOI1JYwcdV4wUNZlIHIEtVCp+Fxw6ZADc3jl6/kXCAqYGLNrDlpXEK4cncCYmR0cLOZKXJzCNrune+5mjvc/+v/mZIAjCGSH9xwRh6alsvO0n2ldBe6Hjs6goukjmfHg/Fp158jhp87AkoYjx/yCiQ2YEjG+MMFyrNMUA5DHTcFxR4pi2ifZiUD7aACySJmuUcoD++rvuOQtvwiws2gdDwNNMrB0AT7yliucrSmZ6zRCpwUVrjAI62crB4I4cWXKi4+/qzf21t37v9qf/TW5GCIJwJpT7SacgCCdxuXrHew8e/XfXqaWDK3kbkxuT3X2DedeUpT4naMIJm52ijugMO9pO4DShIj/kbgW3H3yiy3be4y4zxZLIi2HkvhHfoDATpC7A9h3n3/1d3/G5l/O2RRCExVLAUCJBEDIk7Lz07Ss/+t+0A9WqtMjkbc5pmbOfoQMGjDcGHBoHY2VF4j692LP5kcwiBAbmfts5x4gYpWwxM/at5PFn+9T3JbIaHjBqKsjAGO2MjgEAMXK2DLoSRua5vv3HM/zoLwUh1GpsuwadJlU7gv16p/LNv3RvfW+3hpsWIeTdKlUtNQLXbDB1y+7JcTB8T/Q8pSnKJ+0uyarP4aKZNS1wZPOVzSossscS4fh+TfjGyBVq8kbF7rslCC0RBOEExEMoCMuNA2i3DSBpdEHexiwDA8U48sdAnM0xp0uvOIqDNMLYNgnf2/1XyTnnk1KoLIFFQGteeeJp5XsqdIZdF13VIjjbJQtmCZ1kJVF2wkozVMHGQWGL2dSr4bZtWm40vym1RgVhyRFBKAjLTG3rNgDHvlZ6jbsKU8jbzBIQV2WIqRLulBczpcd92phj1WsInQXNigAckdWgAW489qTttiqOLZIBrAAhO+P1nJALJZcqjoxSNfSMKEuVzsKCxX6A0QQfq/U61h7/+Y/c+Xd+MW9zBEFYICIIBWGJqbR3v/Wm7/8Uh7rb3q7UpSv9qRgWe4wIBEMN6TNQg72xR7+ZEQmSnJMjWzKQUgqZnGEgtAgVRHtjd++ZZzxfGXbIwGABnQJkOoPJaFZVOqVqqHAyRROoaVVDkTFa8jJsSg7h1man1uRXvvPrr6BZA7g7b4sEQVgU8kMoCMuLQoDNm9W7KwR1XwVh6gS6/J7Ds57oj2izkajR2Rm3trfm5Hchrgkdo9KMANYppQwyAFQYr339m8wWESuOOmwZQFt22RWbXPREfHJvyullYtEEQ1k8gcJ85NU/cGaQE5cGrWM1qNla5XDjhd/9V1GqsyAIS4kIQkFYWvwrb4Fa0FRt090hqFl3W94WlZdJ/cDims0hnMLzRuMDDtuQfFAE1VvjjEPnCBFRIQGAcVYp1Xny252dHY+UJuWAmVg54CyLThbN81Y0e8pN0YR02Ym888V/3nahvda0znim3eoCBBfe//15WyQIwqKQPoSCsLTQne88/56PV/E8AQYOyHc449Pp8nsOhwK18Pjv4bnsFG0Jo+lvvATp6JFirkLC5EsXNyvNYIx1ihu50sgIwIiISPH+hIgYNd7TbAMEUKSZ0DIjMyIzY6fjverq+p13OQZgpzQCK8U03vRwXrK5JYhTGnNPtHPkNR57ewtLiT5IhaI0WjSt2+jgGymzD+B0YNoHLJlAG1KdtttSF+1dD/wdj7ybn/+/ztBcQRDODnliKghLS/jYH92qvnot2AFdMb3YOiFLRrTxaaRySpWasa9oxgmVNDWp0IUhARFxaJRSoFVI7IXBzjPPG2dbbJRlAOigU2YJ9Ujh07IKjXgCz5qEClIFgrDS6lQang32XtyqXLjtgx/M2yJBEBaFeAgFYTnRF17n2rsX77qP6xc6Qai7O2rzIoer3XkCAdABMjAN+wn7tR76mjnm0GNmTvCMYq9L4MgRotnzIAsHGZO9W72WgoNxHQD3FwAAx8y9Z/eRP3DImce9MqfIgIDIUZdFAEtOo1aOGYAVAoOyjhANBGavffsH7gMgz6tCwNZD6zHN+IiAOa1Mxozj9PeL70ncf3fGlvjVGVrQ8fAY2PMDF4tUz6cwkdJo0bQbNI347b0IZvQEphE4pXXLQA2gzvzi0dPP1s9f2X3w8wuwWBCEnBFBKAjLiWvvbj3w60FlK2wdqsp5v4bdvVukK3nblTvxzuXjs7HemrEgz5TJ1NgAoz5DmBTuGNt0dJteAGp8g7jQGRU93D+W6/0XAIEAGdgBsGZuhWbj7rvrly4SKkAgQrZudu2UjYoZmaDSQNWlXKu0KzimFwoqsgpqlpAVRdOtGd1wm0GA1Wpn/+ii73b9K5c2b/urT304m6EFQSgYhQ5XEAThNOyRh0F3q1brhjstt+X7OquRy55bmGY/ggKmcVdg7O/FWjX5pfF4yLFdjo2PNnYIwEikXRDu/uVDvqKuM0gEjlXes9isi2rKz9m0SGjofDAnL8vK0Uarc2DWNs8fdGud7nVlTd4WCYKwKMRDKAhLiD7/Wtfevf0N/2ldd4+a+171cgCHCtekbnjfmZbmIeyFYgJyijwbKfOCk50Dc3sIoV9xAkc26JehwNhmMQ9h38N5vBczAlvHiHDQufTd7+4qUlpb47RK1WJZhYamQeAQkirdp9kzYaQyBGAW2jhhajKKxFw8WdmE1TaDT9S1L5+vXnrZ5yv3fcg/d/ngoS9mdABBEIpCEb/KBEE4PVs/9M+0CgO+oCB0uoPhOmKbMR8vSpGcDw4AsFfLYTSFLm4nEkPflzI2CMd3GREy6I4bOvTy4pLGh5hUZLZp20T/pF5S4WClw9ir0e7YPxYz96WeY2eY2VqjlFJNe8cnf+L8O99tUZNxjAZTalpwRrVZUhUnJicvpqU0pt8/xfIKlqWFYJE+jwDFsyd1auQKZmdWKYgpn/c28HlUQdCy3nmNHJpXKKiQhi983+3ZHFcQhMJQrF9TQRCyYt+rhnDJoHXc1NxQ+sh3UmX0BIa8gn2xlOQqjGXzIQ5mU4hIfKpao2kmpbUMjPe6iBmnGFW/f4ViBFYK2ToKX/7aQxUAZtBah+AW3q8PXfIyxuSG8tJXcD4kNHQ+Uvq0523Wwki7Txq6u2sN6ds67pZuhrp60auCo8xSDwRBKA7ygyoIy4a++g4AOGet5mbDWd9rBGbX4qbJTxCWNedw4EBjGisQH9UJHTqFTBxEaZdl2ss1ZCcNdiQHRnPzqWeDmzvKMrlj/2eOgsENS8HZ7cknam+Q/TiyCJPJ/X6bkrLYuWi8YF0p1a69UqnWt72mDV1br4HW3/WFZt6mCYKQMSIIBWHZUOtX1h7471Fzx1aQeNd5pGshG9RreZsmzE+ak3Cq7S14CEazv986uHZDWbadUFOeOeRDOhAnt1cUBCEHAgpUCLWgwW29rpWynucskMdOctEFYdmQojKCsGzY7acbb/ooMymyFsAHi0zaWQYrWcP9/ndRvzvCYxfTccOJ1O1TBowaCgJHnfGQERl7XSIYAfsFWhCQh8qjxHruTa5MQ71GiECIg4qjA+OwNz4DxErPIMGgwSEpj9uGPEueZ7F5VPuu9zrwtZu5Wn5arRkFDo9l3fGS2j8w4RJH9yYlHyBv4o0EC/gYdQWdV9kwa//AvMiomk3qBzJtewAktgyIjoEcGmZg5w6++bWbf/gXADunOSdBEApFAX/aBEGYn/qle/I2QRhi4Kkbm3cdf/3OET0b32Xw9/g4kdvNWkuApJW19pUXX6o3O10bzOpyhNXLrYoYiQVd9tMVhBN47Of/9qWf+8/ytkIQhCwRQSgIy8QWbt5x1/f+s/ESHcUMyStrbuFJTH0KyZpwdPexWqDHzQZja6LyNqMFZhCBkAB9TU4hI3V397tPPKd8nN1BmBklytGSzMA5KNH7WywyeuLCLnnJind84Q9qr3lDZsMJglAARBAKwjJhmt/68v5mv+dAvrYsEbNqVGSgsZIzEAVXjjJdtcyk/hA98TwspAeaMP7uEylEDNmR8mp+5eUv/WVVuXD2GSKBS1xmHacsVUOLpgZFaM3HYrtqrh4aL61tnD8P5/M2RBCEzCjcD7AgCHPT2LoboNuErcGakmrCAnoO5zNgpGmEQ2BUcVkYdwBMchJCsibsvTK8V5IrmEIXAoBxUPH87SefgJ1dosy+/13KUhakauh8lEWgLtpjNjNZxV4n5O2eRSjIevf8Kz//M/6HvnvRBxIE4cwQQSgIy0Nz9+G3f///6IJufGWJ5uXFZ2pNOOqNcIiuv6/Dnqtw8gxwgiYcT/8b1IaI7+X67kNgYoSK0s6hCQKy3eZj3/aUl37wrCReOTyBMzFH7qVwNogn8Gwwhl7/5c9f+8y/z9sQQRAyQ6qMCsLSUFl7x4+3r/o1Tzk79NFmmRWN0ldPo2tSmObhfcomiRoSAYY9eWk1TileARUgql2KjJz4nhIObRdVOI3GNWgqoJiVs4Guom25jfe+O81oSqknmkba1SmeryiZ6T8dkRpc9KepgE62clCaqqHZDJPXbdKu7Ff99Y23v+/mp//PfCwQBCFryv2kVhCEAbW3/MDRw/9xO7ig29W8bVlmTlkR9HjlKZ7HRYLhRFcVIh5vQ8jGep6HGlu2s//0s512e9bjlj00dFZGLrD4BgUBAJSn4cbGuXd96H1fuZW3LYIgZIPO2wBBEDJhjZnPf+xXg65p6nOKD0denjxrL8uToTQxNrtHpXfGkQcNebDGjRxlhpEJmXmyKzEarafT0OHxuxJ7B/DYH+kg6K/rj9AzGAGAGDjuWkTHPW9wtLmNbHcIDmzFIHmq69qKtTL1owbAV79oPvAhFRiuUM1A1zF4ai1w+1VDZjaxygWsYJvErGmBI5uvbFZhkT2W8azZExp6nj0ZtWTJM90xibWjNa53woq58el/m7ctgiBkg4SMCsJy4Jtbz3lvuN9RRcEhgpeSTZM8QSnHdH5hnBw4Ot3EDhFPmpHysdrEVPV4LP960b6IoyGcPBzvGu1Fkf0jjQ8R0SlgQAYXWucrrRx0whA8unTve9kZ0so6p0mDY0Z2AJRyR6SfXDnuoHJYKZzEkEAt8sOIrEwrmM5teyFTu3OAj/+XfyNvWwRByIayOAYEQZhE/fY3A0BYa9S9Ood+3uacNQWsSpoJJ51CUiTqYJdYVVJGYkKDZJGJiAD90G4/9azd2wFicBwyIJGyHBBg+UNDy1I1tCxVOgsLFlkNLi91o7u8sb5x/p7f+dNX/cwv5m2OIAgZIB5CQVgGKlfedeU7fjKgoNXx1mtd49I+2sl1+Bg4sRbDisy2svIQThigN0z8giKnOeLiHsJ+mdCEw2BP/vHI+uj/EBC4H35qHZIiQnasEI0JPa1tGDYu31573VVlyRlnfaWtBULACQ8KqRR1HAtnUEkomhZNrRrKiIBY/Pd5ST2ER15nowXoHXlbFzqH7Z0/+wJAK2+jBEE4FSIIBaH8eF5w80nvzT9mfLXuXIvd7AVLljOUdErPYYaCcIZJarp3YzhkNHHYhNBQgCh8rnd+g8hUAPSZGREYkZmAQ2f8io/OBoE9/5/co50mB50Ka2s9B4GmtNMtmF4A4jLIU2FuSlM1NKMbMbm4b+Hu6EC5jdqF7eYu1xuP/hcfAfAARrPWBUEoFxIyKgilx7/8dqjXb3kN3b5pdI1tffYxkvvFlT10cBXABIfe6BqFxMzsnAYEIKdVF5xz7ui558Kbt1ihUposMzExOMal7B+YIxIami3IVESddGrKcp+c61w8NNsNz8NdD6Bx+f0fztsiQRBOi3gIBaH0qLc8cO6tH1tHCqkB9hAqgJkVyF9Oz+EIp/cQDryOM1yZ2TyEI/mEcQ9h4u6RQ7BvFTmDDhF8h8459omtVcZx0PUvX/ZecxcyaWOdBwzITIX0wiSwZPfhmVFAjZFMatUl7H8mzvZEVswTmEYDzKFt4/rtWN15+8d+AZS+/rl/k7dRgiCcCnniKwilRyu9U7vNdy9ppQKsoa2Kh+csGYlBnamYzUkbD719iKr3R8KzvEkTygCM9QiJEJGt06QAoKJ8TXD47ee71nSJawYcQFeDFhfwvJTFw7M8cCm/08p+n+x7vsI1r9Vsd/agWr34oQ/mbZEgCKdFPISCUG68O+7pPvb/XXzDvU7fZkLwO4ewdoltK6Pkm+RdEocuURGa0ZTC/sIuisActHYYCDZkjp7r8yALkZkT5BwCYM9/l3Q14q4A5MjjgDRaNKa/FWLv0uL4+8jIgIyxrMF+0RpmRnADJwoDEGvlABwwMGqF1hJACIwKui/sXL3/Pg+9w6raaBP7uguGCvbsQHIF56M0GmPWXMHeR4ezavSXNP4ib7iSvC1pBARVCNuwhkxYuXH45FP+1m37D34xb7sEQZgfEYSCUG7c4fVzH/9nbX0BggCoVlmrNPdeVF41o+HTQpuWNJR0SOMlnONIvt5k/178tZO2TJshHoeMju7SKx2THHc6MiBCL+q1v773KtvQKV257TZ952Xfqzp2wGDT+xDmRbGsETKnaAJp0Tdc0c53Ri50wla9Ylv7FxzY2h1+vfHwL/5I3kYJgnAqivUYWBCEGVEAsBdueJbXPGIIjyzUGzpvq8pKomyLVvZeKkOIGiICUIoEJThu5Y2IyOh2v/IQeozWdDQSo0Z5UHgCZQ/5ywvm5GVZYZe8lJ39DRMc7V2qXrqpGp2jbY/lG0MQSk8JJjeCIKThXXwNQOOK36mEzTAwhOCcC3UDkROX7I68nFVJGZOXiLgmnNz4fqY0wslMSFBM+7tPwtc7U2S3ik6KlGJrg+deUM1WEASMAEqLO05YEPFIz0VHfQqLI4BqDS7s6L1z7iCsNY6qIQBcvP+jedslCML8yHMdQSgxrrVz28d/td22zt9iC77nhd22TzrdWZFPLFQ5NcbxucTzARERYao6nNOf9Rwho4MNBi/Fm9T3vZp9O6Mu9dHK3jYIgA4dhMazrC9drN99FzsEQGVdav3TBSO5gvNRPOdkSqh54cyUqqHzwAHW6gxHpGub1XYrZHjtT3+K0Lv52T/I2zRBEOZEPISCUG5umjVd2+wEoVbW2E69UiVj0jfPx4dXFs9hesgojW7ANDl8dNx9l6HbMPEo/RUjayLnrRtMxR0eR5M6UJ7SrPmlL36tQeCTMuxILe1EdlYkNHQ+Vs0TuGr3SaW6v9+q6MraQfvliq0opSveudu+50fztksQhPkRQSgIZcW7+i4AuECGA7PlOybHrhsg2fR5CKZwdkYXnrQQTZwlsy6rSzqiKqcbNnWb2H1BiCpqYoGeMuTCF1/pvHQLEDUw48KlOnHyIkymLMKjLHYK86GCy0q1NN7srFUPKq0wIMPGgnr/Zzp5myYIwpyIIBSEskLrVzZ/5J9b5wfgE7gD9lABE7CuZHgQ6WcYY+jECyykpzUMHRrgrgt85p1vPddhoxlDaxdqnCAIpcayrVg4BHN+Z83X1RrbJrbBeQ7CvE0TBGFOVnZiJwglR9e6T34aGQCcR92Wgzo4xxUKu8Az/yqnF6GZNdhzNgFZtFBSZss8kEMEQC4CLKOL+7D6XR9UtCAoBNWLI2VykTOEEKjXsTDygEX9C4eyExER0QFFy0gYKjP2+tGTYqTjf/ZeZXbIhEw4ZBXAIECv71ccehcc9l6yFALV1tQGcufWV77gK3bk6eXNfUpDPFpzUrQPcBoZxbAua9XQVFLKwlrsOsXa1my9G4ah9UBbz2CbC5ckKgjCtIggFIRSUr/8JqhdyNuK5ef0bsDJI8ynOsbHnDVlMXqVgNjYwBoA2Lu5zTd2O7ZNWoqNCYIwM6zNd/7VrbytEARhHqRfmSCUEty4fPc7P7qbMudf4voNZw8int5Z5CbUCT3F4IgIjDBt1h+NuG80EYIKGBSqoNU+evip6gfvs9l5xiQtcD7EOTknGX3xLbPTb6HUHLczTFgQBOHsEA+hIJSR9ebjf7RT20oP0cwm9y+7IjSz2VmWSLQ04heI8bgeTPR3wvZzXdWhkqdJL8Uq4qRs6VBpZEWAqqr1ra9+o4Ic2hJd6dmQ0ND5WK2mCitISmjorMO43Y059hIEoQiIIBSE8lG/cAfAHU2spm0wucG6kMaC6sT0Lj4la8K53Gjj8r635uRTGNaE1loiCi14SK0XXrDXb8xxEaRq6HyURaAWLncuq74W8kWZKeS3tMEP/Ml+3oYIgjAzIggFoXy0tp942w9/0nXnyPWa1XOY5qtb2n6GC+3DEQ0+8Bkioop1Dpz9uGPdESce+vhvUNEaQh3aQJMCIGutRrPz4KO+9mY0Q1gSxBO43Cz6/a0yKeeaNKERriAIBUUEoSCUDA88ALhRrW1V2nnZIP0MJ5N2KUYiOQc+tFNcOsKxcjLjB41aDo7sCEBAyhEqBkJNBKztztcesUHpa8eXxfNWNArnCVwwq3afLPp8W/7+Dd3tbvp+d2mvoSAsKyIIBaFkVK++ZxM2b5qqbosAWxTZFhflWK+JaUqAzjp+2poTsdaSVhwYANAVv2nazedfbh4cntI2QRBWkLB9/i6uPvWOtSvPBXnbIgjCbEiVUUEoGxu31+77hO3udmsNMLM9iE3LjsmqKimmDMQzp+WkPatK9lak+TBmf+J1vEe/uGiUmNc7QnQe0VkiYlRBIXrG3gsH7a+JDzo4eecGPkFgAIuADMzH7buYEOA4EhiPmyICshsMFH+uzxwZ7ZjZIQACATI7iCRoZBI6BgZE6B2OGR0zK4VhiK5W0cZw0/i41l339Rc/d/TAA7e3YdsPakxdRfUuKKRDbSsTiqUK6RTZ6dRLbAUAgML1kZOqoQAwx/d2Tveb8dsdsO/5LN66Iq1rBKFkyIdWEEpGcOsJ9bYf0l4t7DSJsnmmg6nZJVlNLLISErPZk518SRZ4qd3/Jk5kh9P5Jnn2MN7CPv3t4P6WPb2acDiOW44AgIyIClToDCCzswqJAdqmy+wu3/edlpgJFINDVA4UoVNErmCCQZiLIYFa5Boq+XxtFI6y5HZegI3toMXrXufJv+q8/ar57BfytkgQhGmRkFFBKBPehdcBQKdVD93NKt2Z1bBSbO+UnKppxHS7c9RJvgchqsG+iOhQ8AbtAAAgAElEQVRia5J2Jhx5/McUlRtVqAGVZUStSKHHcOv5F+Gl6y3P+IwISgNaBcxjrS0KwKrlgGUOyodcyI4DuL5e2YLu0e5PvLf9q/80b3MEQZiBAv7EC4KQSrj99OWP/nq9sVPl9S69svgDSj/Dqc7u9BsnXpARFdfXhNSX60NvRPy8EJNcCDzal4KZiYiIgNAhOOcaXsULze5Dj1lyaBkRybIjNOwgtKMDCsMUTaCmeZaQMVryMkxYSg6MVuw0NF73+RsAAFDL2SBBEKZGBKEglAe8HwAO0EdQxpis4kUnIJ7DbBmRfCcWhnEIjCouC6Pr39uMMO4nTDxgXBYi4piGZGZm6xDRsrPsNCkP1fajj+ogKgvRT0FEKGSQmjCJ0lQNlb6Cc1G0BxBbaxv1LjkbVM3tAHfSj38sL0sEQZgVEYSCUB74s6DtRa/aDgF1HU09P1Okn2ECC2q84XDUVThg1E/YDwQdNmbEqljhHI2Ajp0jUAgKSBlnmblz/RV46TqTYsaoAA0REOX2e1G0iW/ZQaZiJqGdklW7T4qWWxi2DnYruwQXQ9Py+Vvn7//B/GwRBGE2RBAKQmnQd/9C44f+DxceeRrCAEjn1ocwK5apn2FWZieOM17d83izvp8wtuMJX+wDvyKjIwKNpJEAQPte4KwjoqC98+CTBhkcEpGyNtGGlWUZhAdTVNP2TBFP4FyU5X6rdxuVyha6bbdB9/7ZK1ff/0N5WyQIwrSIIBSEcoD44+a530Bu7SmoWlXxwiDDMh+RZ2l8EU4ik36A04yQ5iRM2XGq984YowAJGRmsZUZlANDT5MLtJ54xwMyslEbrmNktfgJalonv8lDOz/iq3SdF8wSmYWt2u73jVRqmGV5qvpq+5cN/u7RviiAsGaX8MRCEFYT595TiwLW3wq2ugrZRCg4yGx1d8pJmzMIf0M8ayzlbsZm0USyCxeNDRu5KAhxxjo2cbCTD4lPSeCf6FPqTOiIgGtm9N8hxp0EmBkA3Ug9m8IcDZiRGYmbslQtBB+RwUKumN4HsmYoQba9QW0CLZAm01mCdT4otdyra/PVL8PzzWpmuCxVViIjS74dlpTTCY8YYaEY3WBZiT1aeQKFUaNrQZrfSRc/CfoW++WTt0t3NvI0SBGEqRBAKQinwvdd88twDv1WloM0tAtfxjjY4s7YT2ZFXVdLsswIHO08jdBfkFZx1+wklTKfcMjpZto6Jtx//dst2Kp5vCJxh+b0QBGECB3bH1LeOdNhA16k8+/YP3lirhXkbJQjCVEhjekEoA295m/vWn9u3fqdRWx53iHxidp0u64LFDaXENuFpO0Nz1hFSKfYMN3Yf/MFJqnCCQTzcCH4Kc/rbp5QhJcBxB0uCqBt2XiHGzqXfnn6wFyJyLDGQeo3vmYGZjSIdHHYufOc7tK6EiIqRiLJyjhXRyVYG0i5bwb4FMjOIXczbzlN53ktN2ueicO9vCtVgTVf5kEh1mPlqAw7gmUduq9194/HP5m2aIAgnIIJQEMrArev0j//++e03k9l3ugbBod684ByfQUHOTMDULJjpJ3cMwIiUURGaZHtG4l5nEoRDZmDyNqkkCcL434mCcPSgMKYYhjvNDbaNaUJmAGQCQEbGKBwSGdCRBXvUvnTfPUG95oEC0ugcL/FkvAwglyOXLDObVux2K0uuYBqkmna7621sklMN1dxhfKt722d+7XvytksQhJMRQSgI5eBS40eM22v7Pge6UrPt7Sb4VYSS9ArPzHO46NkRj/wjOh4zjmtaHBO0x+oUeTalykO+u3HSBGHiOANjBuGuca/gsKkOUfVOExkZARiQgZlCw8xqc73+xtd6IRpFZG2ZJqezUDyPZcoHpnBmZqRQuexSaDbK7glMwwGs12vtdpfVvt+smzVv9/zhpTfef+1P/nXepgmCcAKSEyIIhefy2wBAY72r8Nz+pqpVuobV+vo6LnG+flrm4aL7Fo5mPzogN+P3ZJqXb+5B5j7c4J+x6jL9ujI9LTvUw5D7/lcARUTap5f+8ptrxmok5xyqmc+lNEVZCsaq1WRZtftkWeUvkr1mPE2IvM5+1evu0YGr3fe+j/zx0r6VgrA0iCAUhMJz/VH4mf/7oLrfbLTDervWDaxFzd3rrPO2bNFM+wU1exGarMimiE6cOcyeZpd4odQRhyEiAsUuFxOBMh6xhs6NG8Gz1wxBlcFQOeKTJ1AW4VEWO4XVJO3+bAHraruuPGOOrG+t53Ur5kK4tadaeZssCMIJiCAUhKJTufenLl5/BezFq0cXQ241/VtU3agEh1tuLW/Txsitn+GiPYfzM41aS/Psnf4o8fWRn3Dy9tE2ClQXnDFBVavtx59ug/UYw2JcT0EQikmje3mzbYOgY6t1B4eqVbvY2Xqusu3kq0MQCs8SBCkIwlJz6S1w4/HNH/ntvO04U5CzmUCkO1Vm1aguPtRg58QoPkS0bKKdYBCiGe2e0PZtbAh3vGbEfur/i8FGrw50XcyDdHyInnnYMz7andkNRsbBebmoiyETAzMHro1Y8dFB51BfvPTmf/jLWm+ErokpaedlcV4Vzs6yzJMzClfN6GNdHop2v2XErJ+jUCtb33jwvTLhFITiIh5CQSg2Nx7H7/tHeRtRVjIMJU3cKzGQr3CqYwri6YUAoEizc5adBW7uH4av3GqFTVRShEwQhJmx9Q2vI1GjglBolj4HSRBKjQcQ1qqvAjB5W3KmpPWCz7euBiImij0eaxoRbckYNfeL7RtFzw75CXt1TDMxD6bwSUSWjJwLIyDTwDBNhA4tOq20M+bgwScat19A1GVpO1FGTV4IxBMoxMjqc9TYv2U9P5OhBEFYEOIhFIQCc/k1AOfO147ytuPsSSvWkk0Rl7k9hyPbMA4tDjhaBhsnK9tTJ1WOOPRgWItO7wJlHD4jpqj2jDWsCCw7JF3zvJvfeFCzsTatloSorxNY1qqSQg/m5EUAAAAiZ9vmjb+3l7chgiCkIoJQEArM9afoZ/5RpyPPVnuMCLDBUmQWpAknM624ZeL+r0DPTiYH1JN5jhE0AHSuvRK8/Ioq3vy2LAKVXfKSG1n1tSjjB1I4cwKoHxwov5a3HYIgpCOCUBCKi/+eH18/XD9obOZtyPIxf1XSGfxvfWUyhSbMwId0itqkNLKSPN+40AdiUkEQ+B7vPPiolon+SYgncLlZ1vd30Q9WdFBbu4DB41/IakBBEDJHBKEgFJVXvSX42u852F87OMzblFVhylDSE+MzLXAUezmYVDngBD21SD/hBH04GvgKMPJbQKgdoQdETEzMvjt86Mmg1V6MpctD4TyBC6YsHtqsWLXzzQoLO1tVfuqXP3L1Az+ety2CICQjglAQisoLj8NP/GMwNfIk1KZwJObv5WXAabaJM5CsxlkgROucc36lcmQ74bVbR3sHc9gpCMKKg/7aweHeA3/CL3/u9/K2RRCEZKSMuCAUlztf/ZPbPpNH5GzethQbxMQFZ66KyYnLuEut17+v3wlwxFUY5VHFV0Z/uKjqaCzajBmAMSpA0a9FEwWh9ToHRhtGUu04RWvM64QMCG4kfA2hV9G0V4AUgVPK3ABGHs3ewcNoQ0+jDYnBGTINvdk5hHvffq4Ne1VVtYCEiGwIafGhpEV2wiAAcu+Gy9uWMZAziXFkl/LJKAmcEuuZeiUKfL+dhjP9HDENLvQh8ZaDwHPVC1dvfenTZ2eDIAhTIx5CQSgkV98DAG0f11RNt27mbY2Q7G2bI59wJhz2lrHhKCncdJrv86kMrmpPIQGABQZCrXXY6b7y1y9UOmHgsQZmAGSw7ACAaOV+R4biBR1I6GDByaqGjjAf6xq6UDcET/zGJ7e+90N5myMIQgIr90MuCKWgcuUt8MDvBLaljnahej5vc8pKeYogEgCNufdSG0j0VGJME/bPa6wJR186jgw1HvIaX8PWRUrHADvAiudpB0c3t4O/fqnlOc+yA0ZEi5HpRbygZ0Oaw1UQVprhx1Wh7Va7/i04es9Xvrz7p5/JyyhBECYgglAQighWz122z1e8aqd+O5kwb3PKS5b9DMdFFCNGy+nTCJGPZ1FxlTGhqs2IJoy9RCNbjmxysjXOIAASodKR+qv7FR/o5tcfcWTIOCZEx4wKOcv4uqIV7UirKon9Nz4vwwRhAgv/HEWPmSYswxiHVFcXlFbXXp+ZDYIgZIoIQkEoHu96oPMXv91svN6Gbe1Ci/I5zZhMPIdxreXG1sw21GCqNqwJB4YlakJETIgm7TH5nhnNJBtxEiokRERUSmtgMsYgg4e0/fiTXifUwIDoHCtEZnbLGypZmqqh0ldwLor2AGJZWQd90N0H43uNCwCw8X0fztsiQRBGkYmmIBSOiu3Cz/4uNMO9+u3KhB5Luf+iMFpdBkdfStOEM2jFJD9h/G+KzVcR0aV+jcf8hKAGw8ZcjukGEzpmay0yRSmCzGzZub0999zLpNEhGHbaATHY1fsZQablaEA3wqoJpGXtK5gfyaEWbR+07x1Yz/KNt371W5sf/OFcjBMEYQKr90suCIWn+/Af3dl8YY269c6OBsMkU5TiMpBqblgTjrcxnE8TDsafsPtAE44EtSIO15Geuu2hYQcA1loA0ORF5U4docf2xl89ZMlFB/AcwVzFJpdBeDDB2X8yxRM4F8twvyVR4PMa+qrxA8eEpLFTQ9W8WF2/LS+zBEFIQwShIBSLytX3AsDN9tahX1835JQ9wI28jRImMT6RnlDB5TTExhnNZkypOzrGlJoQUXlaKQ8Hk05C1EoRXnv4qcBZBw4VaUCEpCKoq8PUGrtQFFhILATxBOaLcsq4boPajaNzF9rht37+4xviJBSEgqHzNkAQhCFo/fbLP/y/dtwNcBuB9g1TA44Y/LztWgk4JV0TY3ljA1VGAHYwjY6qvPTdZeOjRHspdoDAHPcZRs0DiZnBMcQEHjMjQXQAHFQwYbDAUR7bUBJj71WMOkIQ93YEJECIb++QiY/37dnPxOiQASjq3YhsWQEDgCVArdg5MGwhgE6r/dRzF1/zhgMPteMKYYAm7dliaTTGjGmBjAvOI5SWCEKM3D5HMz/vSPlcWGCqQDPsatNV7q2f3XnsfimdLQjFQhrTC0Kh8M324/SWv+mYfdcGPzSMGhzLRzVfkMfbWMfnaCNxoZgSRznYarDx0BoeGirafjQ1kQcvTUhWHPVZDtmDzMPn0j8EjYR/DvbCge4lx10XVmvn730LhAyKDDNFtUZLTdHsX7T3qmjnKxSUjEIbaqEJrK4itdu+WqsbrS5e3fvyZwGkgLYgFIVShrsIwrKyfuXNAOu4zlrd4fNGp80mRI8qedslACSFhp6GBEVHOJIEmNnIcZggNc5z6BeBh9tXRI0Hq0R7Dz/RCVuKHShliXR5YkaZk5dlpTRVUjNi1UJhy0IrUA17oaV0jQLrN7RrP/ubv7b5PVJrVBAKhAhCQSgQbu3Kmz7694729sNgv0u7G3XP8yHomrztEnrV8xhH+xbOKttGKs30R3CIDOAYHaBDYkAHKXGJ450J0xoVDhitGHKsCYcdm70ehqPn5fqRtNZaz9d6b3//6eesp8A6ULpEE+6sarIIxURyBedkunaCc9Pg2k7tWQBo6XO0d33fd+/4/Df2/+z3sxpfEITTI3FoglAc/HDnqYPX/63zFc1gsK7cAbDPSnslmnMvPcPzy35Q5Uh5z6lDRqMRxnYfXTN2wMkmJpS5AcDh9QiMCDx0oITD9LbpnZEzAOw5CAC23vsO1XGKlLWmeJPuFGlQtI8RcjYKhldLCqV9H5b9hPP7nl/slcOwU/M3OmGnWnMttQXcrbGvLt65/6UvAXQWemhBEKZEPISCUBQaV94JsA6bayoEVNQNq8wNBSowyxvjVUKGew+qYYdhchuu432nm/BN2Gh6h2TSlpQe9Tr8Ao4+K3RIiFjVtY4NWXPziWf58JAAwTjWhZuHr5oncNVCJVdL/mbIgj2Baaz7Fw87tmK8bkh1sGudwDH89a//+m0/8/cWfWhBEKZEBKEgFIaN21/70X9i9wJW1IVuFZphbQ/BMNu8LROGGJdVvYqexxosUSUSDGvCwd8OweFQLGg0XPwQc6QUnqgJE8eMVvLwrwMiOiQmhUQWrTk66Dz21+wpcIaK9zOyagJJKBerdn++7F33KnqDzHr76JA83rxkjHvbZ/68/urX5m2aIAg9ivdLLgirSvPJf39N+bfX9pqmpb3L+qgSeIpDpbX0nMiZcRdtWsv4KWXb+ORvgjabZvCJRUenJHnLuDLsBsbzPAvWkjt89BlDYNgt8URWEITTs9W5rcNtg7WOf8lzu3pvt6EbVaicv//78zZNEIQeIggFoRD4d9wLAB6Ypqsp3aBgv1uDWqidYnBSVCZn0r8oo2Iwfa8aM7MFcA7ADcvIYSdAr4TMYBNiiHoDjhSM6fkJERGxtz8CEEZydMRRGfUqZAR26PomR+0NHQ6UoYOYmrXAFjjyT0aH495BHaA7NqYfVKbIOaxr1Vh3wbWHvuKHXYU1Y/IThC5lKRoZxbCuWtXQlSsLmxU5hYam0aXDNet3wTB0PKfbVT/gruZaBSv3f/4oL6sEQYgjglAQ8uciXNTrd53/0d/O2xBhUczdQ2IyEzphHDeDoDmdhOOCk0g7YwNnSWm29trDT4DnlJLiZIIgzEzF87kjCRGCUAhEEApC/rSgVX/iL/acTKyXmfF2EacZaspXZz9izyWIsRrUjD2fg0ZSyBaZtSbLt772CCjmZXZRzUhWnsAVyzFbVuR9jEi7Dm4/2Hn4c3lbJwgCgAhCQSgC+so7b8GtSy7I2xBh0RCiSqpNOjMDeRn34xHgQH1MpT+HhR/0BCQOXoVhSWkte0ozKsNKIfELLwbNPbALF4RSVXLJkdDQ+ShYaOisBBv8yC989PZP/FLehgiCIIJQEAqAu+ONt3/kfzr0JXhmSThRiWXrKhzPJ4wYRI2O9jkcOfrYDDLaEREHFWWi8UNrGYGZLTMgw97u3ref9vTCf0cKlzu36L4WgyTRkUUQlgg6wnu/dI0X/0RJEIQTEUEoCLlzDv3NI3+3DZfytkTIjBkDRFPbVCSSqA64r+IgpgAdAk+TQ5iiCfu29cZXyrNgPSQgHwht2Np/8DE/u98R8QQuN8v6/i48NLQknsBZr0PdWzNH3ev/8jfO0khBEBIp3BeKIKwalStvOvzi/+Z1Kg3YztsW4ew4vZMwrgDTRp6QTzgiWRFVokkMgP0+9crTlp0PhKAcoa244FvPtvYOTnkix8cqmidwwazc+UpOnRBjh1qb5APA5j33A5zP2xxBWGlEEApCznRf+cqlj/5Tu75pAykqs2xMX/1lPtI04YKOaBmNtcRgjLPAUCG4tXfrleunGVMQhNUEyZpw4/1/fGv/oYfztkUQVh2ZgApCvlRr9/4kXHxN0O2sK2PlGU2pYAAGRIra/EVaKwqC48EGcRHGDIg0eBVSFNqgISFzf0AE7gfXca/kxqBpYHxPB8g4nM+GyMy9KFPsh+khEiBFhTsQEIkduGgnRESOtoSYDxEBkMH6yjdgAUKldDcErnpb+7v0/vc22hAiKsDQY225rd1aqMwUtzMCICPC4AIWCeRMYhzZxZo8xpeSwCmxnqlXYkmdfmfqzGQqbFBtVtehg+06oAd6813vu/7Hvw/QzmRYQRDmQGafgpAn9Td+f/sbf2CUrVcqR1DN2xxhZhbUYHDCISYeMTHzkCbscrL9sQ2IiBEACB0SgEIKOt3rr1zD3cOuZq3JApNFACDSLj13cbj2PEjoYMFZdA0dYTXZUJea2OZKzazhlZ/7z/M2RxBWGvEQCkKe1O767o37Pu6qoA+Y/BaAh0nkbaaQyuDdGSncObTN6PbTTqUjjRTtMpzvBxPuE2Qcn633fY6jR4j+h8BJrx5v1B88clkysCNCReSsDbvB1h138Z3nffRCdtoxELBS4PhE3wYWvHJmVtaJdhJmongFYxZBlw5rXbxG7caVylOf/Om8zRGElUYEoSDkyIb/uu/yVKPjNQKPPPAsc2JkWbFnzavLkEgbDg4d2mx0lxkEYVyJDQ+ZuHD/cAmaEABo9FY6Fpw94xgAgAlp3HeIyOyYWWsFDM46hUiICMiGGu9+k8fKEFYsOEIGtsyq39ZwNOKysDGiI4ggXEkW7qweCgctbuHVzK4DukQXc5dpQ69rANU0+rZX7335SwDdbI4oCMKMrMRTKEEoJv499x/+xe8ebV3xINR2rW2O8rZIKBazBIue9kgjKxyCw9EmFkTEzOzQITjnrGV0rAD3n37GazWN6SAiMSIiWQbE0lTRzComcsX6B0rVUOE0nCNsHnJVA+rbnvut37j9E38/b4sEYXURQSgIuUEuXPup/7qxvb2Pm8CH53Wqx96lLIKQSizqLE1JMo0GJI+sGWjCwTjMbJxFUOT5pJRDYGZuHtinX3RgkZ0FZkBlQanU+xmZCuQHyY5VE0iFdm+VkhMakBYddMlLCq2KrdSa++0tC7fu/eJDlVe9+iyNFQQhTmm/dwSh/HQe+cNGK4S1+qZraqjewnralokJY5JbKJxAkiYcuW0GDegH613SbRW9ysxEhIiMgESoFSoCRah5568eBQBwbKNgU3eSX4wJOL3szIIQT+BcLKvQLfB5nencLK/rQM0aYSXU++GGZ1tHt3/gBxZ9REEQ0hBBKAj5QFffCwAH3bUDr+p1FdBh1Zi8jRJOS94qfezoTANZmGZbT+yljDikDx1rrT3Pc8DWRot1wKDg5sNPMlhyHKk8dAyhPdnechbPKLCQWAjiCRQWgVauYw43PaK9tdvN5uGT37jwc/8gb6MEYUWRojKCkA/6Vd/hve+X1vx9goZF0+Zzvm4y6wnFQsZJrEAjRWjODBe/4INGhIgu6k842A4x2ox664be03F/b5I3b9D6jRgQU+UbD7aN3wPMUR0Xgl77QYz+QGTiqHTEYHDGXkZhT+GoQTNCdEDMzjnHioiQARySQmAFFrtOX71t68odXcsV0AFaUulmLrp3QUb9A1NZWum3nOSm1VOLx6TukFOTyjQ7U8xIKRIz+1FdiIq6YLVifevo6ptf/OQPnvZUBEGYi1I+nRWE0qOr4WP/trJW69gKhgzhfhUPdRjkbZawtMzoukyatjIljuMAQgIAd+3Bxw25CqiOtaQ9tpLlKgilIJ8sdVPpWrbUMJ5pKXPbZgfu+tRvLvqggiAkIoJQEHKgdseboLrlm23tNRAJq2sh+V1126zjSG5hEUj8GkXE+Ctn86bMfpTxChYUC+NMGI2x3+YeEVFF/2Uk8Kjz5HPtg11FwIoYEbD0vy+lqZKaEasWCrtqFO397XZ0jS8HxJq6xluv2KPnf/NT6x/6cF72CMIqU/ofbEEoI7h+5c4HPhkYPGh3lQ08cnUwEBym70EpSzKMmLgs4lxWnPh7MKgqEhNmWWrCaUZIfCJwUvuKZCMREXHkJRrZq5d/6NARbHbC/cefCpSpag8Mo5Lfl5IhuYJzEmXqji/CRLZ4fbv6DHWxqTboYKfj45u/9PThZz6dt12CsIpIDqEgnD3V8MYT7s0/RlZV1mvQbTv2TOCqdbSJFR4nMdvDXZnbZUvC9cTjzBs83oqTtk997ybnE07T2h4npBkObcfI0YCxYzLE04ESbO4nKHI/g5KdM2DWkFqdoPEd91St70JjFNOifQ9Z5QryakmhNKdQ2U84P2dX2a/cjGSU+ltpdbzaBjQtrlmjquC45jbVxTv2v/R5AEmgEIQzRZ5gCcJZU73jbQDnNGgMgm7nQNfqlqpUPdd0czygmc1zKP0Mz4Ck7gOl+KZNMzJBnQ7+GaFUBVB1bTd44WV3cGRD4/s+lCfUsGihdItmteRvhpTEE5jZ/TxjX8F0g5KvW807326FFV6zoa64tt/qYFB5/tf/u8s/+6mZDyEIwuko3BeZICw9tHb71R/9B01Gtbap0Q8Ci2aXujcarr3oQ0vO4dmAoMamiRRl3J2dDbO8rdHGcQuHdx++SZi4/9vR+wM9H6iDYRC2u48+Y5QDBdotraAS8mXVBHzZQceJy/OVV3TFr1Tbjc7REWy0t85be3jPZ79SefUb8zZZEFYOEYSCcNa0nvwPR+Hapmq67p4LHHobThNU66E6l7dpwlIxQROeIBcTnB4I6a6BwIKyTBUvUO7wkWecpq4NyU3Rh1AQhHkpnCdwRs6Ft7dd6xC56Z3XHKjW3roPYNfP3y8d6gXhrBFBKAhnir74RgAAjwJTt6qqtXZ2j7hirXW2k91xJJQ0V9ji2PVDxxYhesEBDN4U6udyD0TayJRu4MU9Xt9vbDh62H5HMEiOXB22BxEAHEat52PvOWE0F4xtMOiNRq7nEnSM/VNAD/UhYc2orVpo2099Ezo70HWoG1Ndq2lIbHo2eyLTqlUNBebkRZhMSUJDiwY7ZIdojxeySBajL5nxpUuHDedbJs0hoUGqHjJWrNOs3/fZ/bzPRhBWC/mCE4Qzxdx66tzHfydvK4TFwpigx0YKBrnjP2IVXKaO8zzbQF+cfMQKeoFPaEKlVODMjW88bn10zpyhhYIgFI75nj14mqgt8QWCcKaIIBSEs8QHgMPieSQkt3ARnOijOyVpb9Bchz3xt2C02Gn8n9pAqBGsU+QFiIffeFxXyM0xG8zKEyg5ZkuBvI8Rpb4Oc1ipd4K9h7+QvSmCIKQjglAQzo7KHfcAnL/EGYaGzor0MzwLjhU1DQlsimI9T9p3pgONron9PY0iHWmZ2PtnP0BupLRM2iBsAcA5xcxIRPzyTbNzi1Ge8Z8VEho6H6sWGrrgqqFZmRmew0d/+YGrP/sLWQ0oCMKJLO8XnyAUD+/O91z+2D88wGrehgi5EZdYsYnYkD5HVIhqju/nccU2o5dy+IhTz/BY+coY4wE4UA5d+3DnocdoQlHVjDyB6QZh8iIIwqlJqxpKDLrInwMAACAASURBVMQJuYKzYjp832dfdMuc3SsIhUMEoSCcHeirtmq0dd52JCBFaBZFXIb0uzsch+NOuG5TugpP3GySDkqQfMPvO1N8/JG/j6vgKE3GAQBqTwFaF+w/9Lg/jfXCLEj/wDkpiSewcFVDc7pua1jvBOG1f/Vbiz6QIAgDCveFKAjLin/Hew4//y90sLtuSv+5k5zDmRjRhHFZmMl1m3sERBxM71ItmWL+Z5jJI9+4gAhRKYXdl6+1btyaz6rpWbWqoaXOJZvAsp5X2UnzBM40yByO+UPVWdM+AKzf8wGA8zPvLwjC7JR+YioIZSF46WsXP/a/tCu3A3fztkVYLOOSJIpYXJxmPtXIY5Jv1tGcA1Wr+CG3wVpgUmCbh9eefW5+kwRBKD/zhWnbKuqjtff+ybXDhx7J2iJBEJKZkOQhCEKW1N79U+bCq/wOe6proYhho0mkBaklPyTmlGXVXIfp1Vd6123ENzi4UFHRGextyw7ZAXOUcxfrRtir/MIMkbOx72OJCTmMH4gBAJOsQhcdmXEkHpQBkcFFqX3RCP2qoUgACASAzL1NPR+DrnFKVZV2wB1j/bV65fqNjQ98hw1tVVUtgHGh5xEzp5gyCXYpN1ZJ4JSP0Yn3yZJxpk4/psIG1WZ2HdBlU5V3MF5sJXGqnnMpKbrjibrzXX0v7IR+lZS3/o77bv3x/wPQnn0MQRBmQzyEgnAWrL3+Q+2v/+8e+6pOR6aetzlCEUns6BD///j6QgXUMTMREREzO+cAqNvu7O3shi/fRI8CDhGRiMiNqNZVYdE1dAThNIzo5qg2TI6EqHxjlXGqUbntpz+RpymCsDKIh1AQzoLGXe8/d+/fCpVqBuFFbYLSf/SS5wtpuYUrpwBSwIlerePcwtgO0RruN7CIvdBbEAn7D+dHFOXY0ccPyRBPa+yb0R+n5wqOrUdEHH+OyOCICIGZmZgVEQKbMKxtXqy/8a7QOI3KEWiLBlmd3Hoj4QCCMAPFKxizEDJ6qBA9XaKx5xQOMZdivVyrd0JY98PW1qXnfvFHFn48QRDEQygIZ0TtgoJNW/dq1DiiJai/KFVJMyZNNQ9UYmL19pO09unnbif/RsRsoMgBqJXSpHxU+488CWGHkRkdOsbIkSjqbtlZeJGYtOqXBSsfWriqoSmQI3JFuoydZtWrHhw279b1N/8P/zE3MwRhlSjK96YgLDGNt/zA7pd+q1W/4LpH1tUIw7wtOmvEcTiZxGDR8X86HCpSmjBIwjTu9DlU4x3qRwNZCXUsiZGMMWABEVsvv2xvbGvFAACOHQDSxAnxivUPlOqawlmSSdXQM2DDkO921/Xl51p6650f/Bt/3snbIkFYfkQQCsLC8TYuX/rYb4TByx11Z9XuEAd5W7Q4xHOYJeMztajR80h64ai6nuXR/gQtenyUEwdkBscAQEqBIgawwABkgqPOk89qYCbUgEYBAFiw6cOslkCSvoJZc8IXTtFZsCdweofqfA3ls2K7ygdKYQBVCrRHgVviX0xBKAql/d4UhPJgK2s+stZ6o7MdVP0ubORtUVEQz+GJjIihvjpyUeHPXvnP8YnjacO9xmbVE0PImBmAGIGRkAi1QiJHaD3cfvBx1+lYth6jIQDHiNMVKFwillXoFvi8znRuU+DrMBuRDjwzKZjmsazaNeyEh1eeN+Sapnm0obQzZ2STIKwqIggFYbHU3vThw8/9i2uAhs8rYk8ZZSQARpiBtHnliDdvEUI6LTx1BKUUEQGAtdY4y0AOwTnnNBw8/XzY6hjnFJIBBsdAuDQT6CkRT6BQcOI6MPfnMxVzsKFu4xtXNXUrtvbkuytXn5EfTUFYLGVphiYIZYWBLjzwzztmo6au7cL5C6ZrPZ/tqsVFpj17Sr4OaVen7E+w+LhCp4uq+UVayzkHMd3l+iKw36bw+LwRHQA4IIiaPbBDRO57Dp1i4qhRYU9xMDMwA1JURZS5d9yosks0Dg52j44GjMTogJkGdgKAQnQYdUcEAKCBokFnnQO2CEBI0SEBFSBrqFWw1Xnw63T/9zaxsmGpic11qLdBnveXidy0+syO7ry+V2f7fssqCjT1SU3Kx2tK11/uDVG67Fn3slc/17UY8uF9f6pfeP4rOdskCMtO2edXglB0Ok/+B4v1sLpbdRc96B6SdZ1W3kYJ5Sa5osxcO06/jQNI9mxxQtUZAHBI4DhAvvHot33Hnq+CMPRAt41kBAlLRj7Z0MvqaceKV/GqR6Z7oY1O+YboxU/8oP6VX8rbLkFYZkQQCsIC0edfDwCo1xHCg2C/BhcQG1qt521X0VnB3MLJhUan3Gv6bUYyhZLkXPRfSoocS1jFQL1BUB1XuyEGTYfPvGB3bhnlHBKBdsv7Pi7rBF2IKNr7G3WQH1+KxqzVTdVhp8vccGrvnNpydTxoV/n6+YtvOEubBWHVKHt3bEEoNK69c+GHfqurjjxGrF20wQ2tHFRCtvIsJiItuyp5rsApSwkVxskZOog4EjoKMBTOhYijne4JkZMqhQ6PO9iJMeXSRQ3r+XiHvtjr/wGD/8SOdWwMQxRnqBwaUwkRz22q17+qYT0Dbq7O9OVAcgXnhGm1rlxWHwA3W3GmvNICZz3dulcJTcBI4MLA+ryGd3273Wp33L/78wAOF2OjIKw6MisVhMXx3QDQXmNd8T30u2bf1xUwF0y4ih6wTJDrlg2EQBjNDgdzxMGVHHgYmHqOvljq4yS4/4PC/daFzjm2QL63/81HudvUDsxSzPKL5inKimU9r1VjUCx0ZFk0WXksW6Zja7XOmle32HVBQHCgz+184r/q/srfXoDVgiAAiCAUhEXyFwA7HtfaTTro+OvqvA2bYbXlg16xqvtzIP0MZ2CyJE57dbA+fuOpnt9x/FKPX/9RP2T8nz0YCL0W2vDaNX1rx4BRygOb2oewLIgncE6m7oOXL5kJ46z6Cq7YdTvYUqrN51rWIF4BDZ2g0gwP+atbF1+3CLMFQQARhIKwOPy7P3X5h/8wCG6da2xWG67T3lc1hLBiXWp1X/GAzUfZr1uiqRmmEU7J0LN8JhhyEo4eCxFxzHM44iQkUKA9i+A47HzzyZYHvgUsYJLTiiGewHKRloOXlydw0Wxst87bqgLbte7I79SVj+v4nX/ibbz/I3mbJghLiwhCQVgQPxY895uHZJ2/3m3tVk018AOHvme2DXp52yaUnnEdOCjlcuK+J3qkey+NuyASnBIIgGl1YsixVUppP0C7/c3HuhXgbri0GYTCypKVJ1AAAABaq91QdrcK5PnOBqFPZn8bzAXzR4/AB38lb+sEYTmRojKCsCAeA3C1t31ZswZCC0aDZqeYFGF6E7bZaqysIEtThAYBjxeGSMmNngUiICLxcVhxXMVhz3N3vIyPEDFYi73NxkIcEXBIKLq+aci9oREJHTsARCAEctyrIoOIyIOqMy5WbAbRhE5Dm7sXQy88aq295zVr1Q3mBk/4CBQKcZrNR0mKxGTmFM3oGQc7BEZyiNxbiBEZZ6wds3DQMTKML1nBFhQZbRCBGRUZR7rG1H70uTfBv/yezA4jCEIMEYSCsBDwdX9X/c2nfZvRR0zmpScw2wUq3MwUAIaqdA5Wxat9AozVCRybhJ1wHSac+PBLnPgSsxv8E4cUbP8PZKTj1Yog6mVPCGhdt1Gvv+G12mnG0qcRChMp5idsYWQlhnisJjD0ntQUirx8/HfdvYd3fejgc/86n8MLwlIjIaOCkDGX4XL97e/hp38bOLNZb9lz5PKibNctKUSTh8vqnHkxibG8QRyfnh5vE9lGg9Klih36oDsE7KnW15+y5CRk9MyQXMGIUl+HHK0s2nVTnfrr3/f+H/v9crxxglAuRBAKQsYcwdH6Iy9W/smvXWldzGpMqUp6EuWuShoTXYX4Tp6smQevcl/4DdWxiKrR9CJcGQA0Ejg2Hunre+baDaOKFy/KnLwIkylJ9cvMWLGqoYXD4wvtjZ3Kdt52CMISIl9AgpAxBtR1uM5fa7xcP1j0scrmASsKBbxuMQMK8bU84hgcXUmj18ohMPVPgXt9CIk0M1qlKg67bJ0Nj776GBdQEArCGZJWNTTq2lecqqFZ9RXMihbob29+K1DyAycI2VOImYcgLBPdS/8/e28eLkt2FHZGxMmlqm7Vvffdt/brRVKrF/UiqaUWaNdYfBqzIwkhbGsAgfH48z+DEQYGjD2eYWSPh2HMIGx/HxgzzIA99sfgkQ22xY5kga0FpFbvu9TL6+633a22XM6J+SNryarKrFtVN+tmZlX8vvzeq5t18mTUyZOZJ07EibgN4MxWqM7p08s+l1gOj6JklsNC6YSTGBw3HvaNhBOmQiZgYlQAwMy2ZSEbrfjgoafswD85iUeR/IELUhKLVmYujmIJLCQ19pDOBS5/9x9085ZFEFYNeTAJQtZc/nP4y/93oOAav5i3KMJ85GY5TBgmTlNcT4ZEI+FAJ4zviYpM1qDZKGVbhnxil4kt6uzt+s+9sly50ynamqisWNXfVXbSLIFzVXICE3yZyHkCBAo6Cl8F9V0jUakEIWNEIRSEjLHf/NGd8MkQqw19Km9ZhPJRWI/fcdtggphRworh34bBtm1LQ9MENiMi+zq88vjTS5ZUEFYEcfeIo8k9u2s9E/oBeHnLIgirhqSdEIRMOX+Xeer36bZvc1Fri3KLS4GYvBVuzjcvCpbPsJfJa5AocOh5CTC8mgMpNQAgISMgERJGG2Pk1TZp20Tq1QEIHBtkjhSLN4OJhqK91mAEA8wAzIZ4IJ6JMiiOGlERcehXSqiNCUNiGy0DhEQVG/wXnt/5C++0lc0eIFlMhlkrZZn00S+nXK7U9l9R49iJGv1GcgkWi8zaAU1CNr35o+DG8nwOIU7V59LyCk46/Gfb+svOH7iAQH0Jxn5lch7Lqml6Nig6PHz84cqpW/Yf/Ew+YgvCKiIKoSBkSusqfuNP7WxucVA5wNDJW5xxVnOcnCH55zOcJR+g6SlevRI4LJq2zCk2ruKe1jlN/Oi0CUNFpqG/KCcJDD3tMtJkwSAiAAEbBgBjmI0xZuP2O9VmXVlWGAbKVmiYCSldHln7lwdr0MAZKUNjHZK4/zlFIczL7le4hC/I/XmHATSl47Wp1jVmW2l3884HfuIvnoCAgrA+iMuoIGRMo37joYct6GwpN29ZxilgdM1SsIbtlvgbR/88+vXBSACEiIRWdKxmE4bh3gOPgmU0alRkEFSOGT+ERCTwyTxEKzYHS+8GTMYLzTdqaOEYdrMjwn1FuJZtW3jN32Daf80P/fyypROEtUIe+oKQHa++HwDAsqtKW5bldwu3zkGikh5FOaKSpjt6zSd/av0z6LqR6W8s8MzYn3HXPkQkIkQEooNHnsDA80Lfsiw0DJqZkI3ohSdFWvTLgoXBLFzU0BTIEJniNmOBSXtApTxZW680UDeszmVr69lP/M3TH/7JHEQWhBVFHliCkBl481vhr/6zevMgwKpntZW1kbdEs7KGFrBMKEi7LVWRwpGYopOjt2kDX0SM0tMPJh2IiIj46rXW115wbRVon0AZhcxMNPf7aFWja67q7yo7ZYnGWRY554VsR4fQVJXz4bU7f+Nw49bX5S2RIKwOohAKQlZsKnvTblVe3jnvdF9p+JvstPMWaVbEcngURbccnmy+xJEfPkUBHnwVKTMGiU2k+wXXvvRw1VEd33OAwFIc6gUUQllbmDULmpSLwpItgbMbVMU1dJQZn59HPCn92nn2DlmHbdypb5mt93xgqUILwlohQWUEISNu/nrzwG/X7nhX1W+BVQdmYzqAdt5iHY/Szykvm+yD0MwSVIZT1LD0MLLJ9Rwhw6hbas9UOCwSDyrDY/L0IsQg96SFaIKBkRmAwWK93925/w2hsjfAblvG4mkBL9KMY2Ufcudn9EtrOYx9ODnZsosaulyZ8ahJMnOyU2mFixqayvQWMf2wzVFZk1be1e0mOjXlOAq6zJ2nHoCdWzoPfjpjYQVhLRGFUBAy4uA5+Mu/3ggPjLsdsgUIXcuxyu7lVXLxl0+KonIMX9LlKIQjJjQcpHFIGTwmKoQT4o0ohInFOJrsZyIEQkQEZAZkH323yfj62xpnL2A3bFumquwgCNKMhGIJzJojFUIo5c2fn0JoYnrg8PZaqjQFjBqaSlpLmJFuFmWhSC+vDVkbluk4lfCKYbuz87oXf+K9GUsqCOuKKISCkAVWxXnT99bPXNwN0bYM+qCsbmDqFgR5S3Y8JJ/hEaSpKjPlMxwqeMww0PGwr9ghMJgRzQ+Rp2iDiEAQJT/D+E4Ag4AAzNxTS5EZGHo5IXBSgWXQg8Emjp6Cew7GpncYR79rYAkcpi5kAAICYIzkQQNRwgwGY1zLdDYs1ne81rIbOwEfVPyKJl7RZau5WQJHcgnOokrHu+dJkiZnihgZ5Q9MnbjRiJywTckfOFLtSU1YFE8hTLuOZuLhl9jHjmi5to2b3Q6jYavqW7pjNRunbtn/3H9c6k8ShDWhtEsFBKFQ3PB6/+FPwrVXTlfAAQ2qizbWm3t5iyWUhjEdbzSUS4k4QmBEBCCjA3CsS08+u8HIWrfYUCBrrtaZfOL1SvCeckG+6+JG13EP/a6t6Y2m+tzP/9DW+yQhoSBkgJW3AIKwEjz/BfjAP3Ksc+qwu09dQtA+4jZBmLdgyyFNUZGx1HTGtb6jCh+zOXE08cN0YUa/UsMDGWDweRifg2YZrxsEYsWg+4doAGBCpTBU0Lx0Wb/4kn3xNYFNygAimpTME6IqrgZFez5QijjFkhKgeAFC87EluHX/5WtXNp0LvkKXNp/v7L/xzx964M335iKMIKwY4jIqCMfHBdC11/zXHh22NyvbYAzabXKVZyGtaGq1+Twl15CZGmgGPYdnKzaokQehXwb6HiJGvp4xDXA8BkxCTYPD46ojcmw/Dr1TB98DIFK8bkZA4Kg0Yk8lsCwMQ5+UUqw277kDbYcDrfputLJWcG7mdg0tOVn5Sqb5gKaQV+Dl4rmGTl8TeKRr6IJseo5V2bgO2goDD13L9jc82zp30fvTzwZlX50hCHkjLqOCcGwu3A5wzm3Y1Y0t/yDsYsC2qnfCoFLyEKPzU5C8fCtMwdoz7Q0yqo304/JzFFkGUbOBgO2Ke/DAo+w1LQMhIBTODDI34oK4GkRJIya3ZUOcvAkRTfb2dHBeq5pTqbcCctw9aBz87D88/f1/I2/RBKH0iMuoIByblx+CH/il5isBu9WGu9Fov7jntGm74rR3Ad28hTtRUmfQZUzTY1SDGjZL8vT2dJ/PY3Jk5fECvc9ME1ndqP8zGHFkzIxIkYpkcORnI6IJtFKO1hrbh96LlyqvOYWosswXt6okpbwrINmlkcioS6S2W7EeTMWbOyhWfzPVTjWstaEdAlpV1fVNI6j5f/z7+g//S96iCULpKdbdLghlxPq6j5zq+mdd76zdrnkv7lXAU1q17UrKgihBGCM1amiR4sr0jJP9sXWSrTL9hcIEFPmyKgBQoMCyOTBg8+6fP2JAO0ymPAqhWALLBRpO3PKyBJaffIIAVcOG71VBWyHajmsqDnfrBzX/TP2d37HsUwvCyiMKoSAcC/fG+8Iv/MtWF5u8eR21jz7YpxW7e1jVttxfwqwkRhk9ZiXxPVkqllPsVONfjei0iL1Ebg4pn6GCqgX+9YcfDwkUg+YVDcEkHAma5E0QYnh6165b2vJPe6Q6XW6z2woq3Ru7Tzx67qM/nLd0glBuZCpMEI6DA+Cf/+DPd2i9XEMzo/zLxrIBe7rQWDjBQTCJuPUJmeP5+kYMU/0x9KCeqAaTlheRda/Y+H6Do6fo5RvEnnEMGZCYuP8nxk1kPRMLM0e2tEgeJEbuSWt04Cmoe0GIRiPe+dHv3rr93o5xifwpjVQclm4MFNfQhWCDMBo7tNcVU8rnZQwsXtTQATT6YclzNGnXPaX/c8qahI578NB7X52NSIKwrpTjrSMIBUVZAPWO6eYth1BymHobjGyJIQ9nyd7OVKzJvrivKQCAIjtkRtIEms3ug091yMiKdiFzCqt4FZ6TcAEdPvfGtjnZbFZe9bFPAGwuQ0ZBWBNEIRSExWncfB9UXadyU96ClBWJSjoLjNNzBk5rrqlR9FOZ7r86uEaRgWXMKxUxNZsR9984msAxAIoCAFTUevhZHXZBFc5FUNYKRpS6HTi/qKGlbrcSEW6f+trP/czWe74pb0EEocTInKwgLA43ztz51u/+WveyY1XzlqWUSFTSGeHRFIazRB9lwqHjaKbRSuNZ0QwmhcUfBiPtyT0oxkAIgKwREQiNZocpaDb1s5f82ysWr1lq3JK4hmbGmkUNLSHRBcq5W6Y/rJJfGIF3+fW///kH33dxeSIJwsqzZm9fQcgQx/FfesS75/1Vq2pMSkptsXUtBKbYDvOWa3n0NbeU/dBvk97n0daIJ44fObqfkn7ykKPOm1IQY2fof2LspZ0f5LtH6CX45pFE9j0xGEARsIn8WrUVGK2oFpD9xlsVr9sc5Qp36SQyyrCOBpCTNgBMyjafF8SJb4Xik3FC+exIWUNouqfUjbx9/uBzfwIgKzgEYRHWbHpSELKjduFeqNc9val9iY6YMTwxpMt3YJcf8fWEBECIaopPZiLx9YQLK9U9TY9TvUkRMfGF0h9UjuQoRIaAjTbGVS4BasWHT37V9ld3JJfRWqllk5mLY1ZRQ0vSbuVhfJVyfysa88l5M52+trf7/Cd+5qaPfuwkpRSEVaKADwJBKAfcuHjL+/5eFQKiKVH4RbMRMmOs4yQbCXNmik44xBhQSAEDMbCjLDbNbtN/6rkTkC8RWetVTNLyB85VyQk8bjORM1cmbtsTSfuR1X33Ctj2qcO3/9Fn6jfdvgw5BWEdEIVQEBak8/BvX6btGh6EWnJOCMekPwU+agmZHJFNmU+YUSfMS3VEHL5uGKHmuIygw5AVOp5pWuGVh5/MRTBhhZHJt0U4uQyQ2VgsHeNXO7bb3N5613uXIaUgrAOiEArCIlhn7gQAR/kenDZ4PW9x1gbC5G1VYGImRuJohj41dEZ/Hn1yMWGivjcaXNEgcrSBIiaM1vXF1wxNWrJNLAdY7xR9rRVBxcKNmkHhsRWPzDzIU4+IXRNWyGJyTEi+Y9WA97/8FWMCYoCALVXxfB+Aq45r9KKtmdJuJ2QJLLCLY9FcQxOXrCUEK+qTFjV0MnZotLYwKwpnCUxt8DRFy6RvMYrab9Oooq/w1FXaVej8hd/Zy1scQSglpbnhBaFQhFcfP/2hf07oHPoHNbeetzjC2nEMQ9/IY7+fK+KI2uY63SyFBxrjQIll5r2nnglZK8sKQ992HQup43uF8YYVlsVYtBXiadqgMMK45lbMNYHL5YoOuuifqm87qLizdj9fEDJB7hxBWATnTR/d1y6w3sTOYTB/aERZW5gpks+wR0oQjomm6D354yPvXotFWxILL1mcVpSGl4mZd//sYbI4hJCZiQgMhGymrdEtLOWxrhSByD45MLgNyCt/YGkYdrPChocBWL5lfqN2huz2C50Ds2tdffgzWVUrCGtFQR8fglBk3Hu+w//S/2U5vu23kepoFy6h9rqxbvr19MTxCUSOoSPFhsPHDJXnyXow9tXkUL5nGyTFBgGg88Sz5Hf90LcsS2vmUKNVyNxIadEvC+ZrVzTX0DTIEJniNmOBSdMDZ/ALPVGWG90UDw5ts3Hegv1N7+Gf+rabvufHs6pZENYHeeAKwtzg1o1b3/3LKtjf37gVAKzQy6zqddNsloxYDockmwqHzGsAnF4m+pYmysR1wqhfI6ioPDPTwcHes886NgIaCI1B6C8+nI8TXSsozEzh1uClUBY5hQi3Cm0TdDoXd9h7+6euVW++K2+JBKF8iEIoCPOyDfZmQJaqnq/uv3CAxtWSh7CgiH49zsxWl0TNOU0JTNw/uTox+hypeQgqEiZaTBjtVJa+/MUHq5blB0EFFdiKQ10qRa7QnntHs2RL4OwGVXENHWVGC1vOlkBmTNyWfd4D5VuG6tX2nnuKQ7X17m9f9hkFYfUopDeOIBQYvOVN4Vc+Zd32jlr3qmVtWE6gcYN52e9gTN5kzLQYxVUxGKYvugMAADzGD0Acxl2c1I4Ngomnsh89z1jhobKHTL0vebTwpJwMANxfp4iAgxiTDMykw/3u1pvuNnalxpZnE2gNOGlo7NeVm66Ydokw9uHkZMusHTKMyJlc/RFd25zslA0ajsKQjm3FY3qLmJEorWhmeIQsiXzOu6ErB27T8ZW2dj0G/6kHq6cu7D/4J7kIIwglRRRCQZiT/Res7/nHmz51a06oG8DYQbKWrhCmIArhYhRxzBexoEI4jx8sDvS9yXqisXiswOhixbQTDUf6PMw2ATDZ0NhPUNEbdjMDMCIwGwAMyHdbYF736s2zF5yuaTngIBYymdyRCiEUuZOlkp9CaGJ6IJ/UfFchdb9E0lrCjHQzNP2ftF4KodFguRvdDp0iy9jOZuPsgz/5/lwkEYTyIgqhIMyDVQETnn3dh1uI4HuWCXXlsBa4Jq+RRfFGyuVgEE5zbMt/gIhR7jRAAqQ0gbBvIh5oZ8xM/bHhEUsl0TD2W2Aw9O7X1jOSjFih+8Y8QEDDYACZwQwk7Wl+CNzXMHuJB6E/tOehUZIZogSKJhr/U3RcpBAChg7YfuOg7bzp9exsVtn4pmspy+S1fIspxTifekBKUr1lkyZnihiR5nBs01jaGl3Ug1SXI5tJceEe0xOPbOWsKJ5CmHYdzWjXSutjJ9RyzIlC5vY2CixudJtMDmCXA9gD3Dp9Yffzv5OXPIJQRkq71EEQ8sC56T5oXGwevGyp0HVqYNcC02iyTKwIJ8pgDD3wFUTMbKXX8SPKzHksAQBi7yZi5ssvv2Q1O13d1cYwM6K8p44kn6iSErxHKAJtdkDVvYra9xEsdauNT//Cj5z9wR/KWy5BKBPzZ1PeswAAIABJREFU508ThDVG1S+c+bq/xLjpt5pNGzfQOtPidoO1n9PkaJoLVvGmvktBmp5TtDEuMyNizPAGAAsG5BzjqEooxeiko/8MEsXcpydrG+xBROh/1TdsKrCYgJp7+8Ezz5s3NDQoC1yJ7jigaP0wLX18saQEKF4XKsccR3p/K5Zril3p7l69ulXbZtowTJf03t1/+nT3U797JW/BBKFElOOpJAjFYKvz0CdNUGt39k19Y9uQQeeg3mh3xEK4IhQtKukUu0/PFnM82RYw9CVmp4jvZFLDXPODFYPjXqwMUQoKHjEPAjGCskhd/dKDFQRmVLYT+npeIeem2OkECwsbTNzylqu8rFf+wHlJdHNGhjMHzqnqhX0mHXjtUFukTu/W1amLAGfzElUQSoe88ARhVpyLdwHc0t3EWnXTNDGgwCgG31eWm7doExRNsyk5hc1nmKPJaMrPN30nT0QEGo8kMnZg71tUCIpZa21sx7r21BPqYJdZB77mDNMeCCdClDRicls2xMmbsBqkuSh3KbjE/pa77Ve9Le1oqu7X1ZMf+2s73/8DeYssCKVBFEJBmBW1ee70+/87Oujs+sbU63VW5Hc82zsdtvMWTVguRdOv4zqVgYxXbS2whpB76wCHSrJBYlKDwtw/pFeAYofzUHskUMYAMJpOy3vqqwopCLTj2Mf+TbFzlcESmNnavKzyCq5bu2VGsSxsaeSVPzAryGlvWtZBcOArv2V88J3qobn90/+pfssdeYsmCKWhcA8mQSgsncf+HVhOQ+GpCtZb16+ratepGq9x6MpaXOGkGfHSxMVNhVnZOTnpbWKwl9NwMkn9YLSJiADUWxKJSMrVyGjDtS8/gtoopTQs32VUmAoaTtzysgSWn6K5hhaLeRV7t1vHTo2anks7yupUNwLP9k51t868QzLUC8KsiEIoCLNwk3XmbgC4Zm92W1WPQSkvYNshUyfl6Ot5iyesF5MjR0Yw88fyWEwbHDcPDmPDTHuhJMTIRzT9RYY9y4kGpRQjagqvPfms9j3btrvd7gJCrhdZWQIFoYTsW4fhhnG2oXKAdoV323sVvW13ztlgff1nLuUtnSCUAwmGIQgzYdqw/YH/0TGKbUbDIdoWaNTA6IdQyVu62UnJHyWT+ouRks+QU6IazquAIULaYsUoDRmO5pozBAjD69k7lrCX7T661IwAGCWEBx7TGRAZEVDH1v1hP5c8QC8sKOJI2rFR8UaSOTIDMffLcyQ2IgBD9MsAgNEYMIgMCAqgZZlqaIgVhkHlbGPr/LlQ1XFeI+Hc+QPzITNvxoyiCrNBYCQzzBxIjFOyyeflVIiGs0ijuAwGHU8BEICeLX/goqTmk0yLllys/IFpDPKbziglgaNMyNrSltFGOegwaK26sOFd/d3f2/3M5wEOT056QSgnYiEUhBlQCPCC5o285RDKQWGD0CyPtF836Sw6MbSjwbcawQ7ZMBqFRuHew8+0UKtCDPTXFGn7RTkRF9CSrO3Mi3BPP/Pxn8xbCkEoB2IhFISj2bjxTUHQ2br3g1p7ecuyJMRymCmZjaOPqAh7//SdNge2wYlCiX9FkSPGC/cMif0dE5redM02biFExJgNs/cBASZ+V8+uqJErhhhMqNBCMldalbfd4zrV+Ru0WB136XFNsrKOcWRgHsfkFFQprd2KdXVHGBOtaAp1sVpu6dfX3XJuuhBAEDz3UFZVCsKqIjNJgjADjYuved//fNh+Pm85hJJAmLzNX9FsUQqP9SSfHgWEez6fAJDgvxrfk5iicGxPf//EIUzAZICJiAkZgQBNtxs+/UKI6bMw62YhWbOooSWkELFhihdtNZm0vIJZUTEvw7s+0P7sv8qsRkFYXeQFIAhHoWqtR//NZao3Kpt5i3LiFC3fgtBjUi08Vjj7SZ1wXsPgJLHyNPEBxpYF9dRFhoABgMgwhzqskvdnjyJKlNGMSYsaGmXtK07U0NLmFZSooYVgHzduouyS1gjCSiMuo4JwBO7Z1+oQ4a5vsvyAFzHyrCLSDIuREoRmUc+y8SO5HwBkRpfR+Gx83HeURwOJ9LS1mQTCMTe5gQVwWPf4esJ+yBtERWAMA4KFBGHoOUSXmztvuxeteimCYWQXJCYtWMi8AiUH15leU3EmfIoRJyZOWrCioglasKBKhpcaWyeNBrFpafe19zBQ97lHl34+QSgzohAKwhHo1tWb3/9xj5pktgHDvMUpBoUZMq4Ii46NkHFUqVtcIYS4Tkgj38yuEEbVJJ1uuJIwUmJjauFgYSEwIRlGyyIdhhYoAL/tN24449xw86wnXw0y0oQW0yvHFMLxVaZLoMBRQ8dIa4kJnTBq+iW3XPoERMEe0DldypbeNFth7eJ9T/8v35OPBIJQHsRlVBCO5iWo103NgGiDwrEob/TRpGChI18lM8OyNMRhGc+EFhEjBkFgbHRD8Kp49eEnF5FYyILiWAvLxMllgJxxjXHO5LWmsUF+cHBtC9v3/K+fXPa5BKHsyMNeEKZhnbsjvPzE2Q//c58c9g8ArbwlKjaFnNUvL4MxU9SuwxTwONhpqF8Secrw3UQjsGEAGAZmnj5yZeb+eq1eMRyVKoYe24n9Yv39pleVYQBg7Msz+kupv5NZA2tmjayZzX0/+mPeziZ2wHIqrD2HsOnQhsd+Tv0tS9fQLBhIE7/+xMAp6//yWhaIKfk5c2PQ/uMzF2k6VbGWBXLR9PWCXV9SxvYs395zoeob+Ny3XshbIkEoLoWbSRKEQhFefmLnr/xiEOj97r5NTt7iCOtFtsbDUpgiE7ny2FPM2qraJvSVUr4OOQx04RZu5cbYErGSRF4pBuPhVYtoYRMW4xD8pg1bats34PgSXUYQpiEPPkGYgmu/5QcOTN221bbyParmLU/hkaikWRNpcT2TYF+ji+yBA3q2uDybecJpLWGcPY24sto3gw6G5nj5Kw/ZwAFqZCCyGMhFW0u36tMzt/aDhQ6YjBeab9TQwjHsogV1towoSxqJ3EhJx1JVG64VPotBo1XbfeSzeUspCIWmoI8/QSgC6qb7gi/+poKOZdpgaqzC8q4BE8pOXN+jnLz9EyMFTh+WjiWfmMxVOJnYEAAQVZS20QAhov/cJdg/6PhdpZTWGhQ5qMzyLYSZDcSzyh+YAhkiI3kFFyBNDzQpW14Ua63gsvMHZoXb8uzQrZnufsN76Kfef9N3/1jeEglCcZEXhiCkol/43MZ3/W9u0Lns3GgrC4OWGMAWRBruGAwNg5jg9mmOkyHwpBOUH1GzBh0XL5ptMUDK61x59LGqIkajtQbCMAjWcCImLX9g3nKNUxY5hcUoi8XSJnVod8k/X0V4+29ert1yd94SCUJxEYVQENJwrLd8n+9YlnPjRuuljlIbazf+FHJmcoTFCEAj+hIimii731QFKa5ljX1YIgm65YhlY9JIGDk0crSz7zVKtrny5Yc3yQqxl7IiCAKLipc2acmWwNkVeHENHWVGC1vOlkBmTNzykqdwlsA5769mDWzfVOy9PdhEawN2Tp+ksIJQLkQhFIRk1N0fDL/4/6mwY13/aqXqOLrbxfSgMoTJmyAcj37yvnG/yknfy2IFQASAoVLX+zwp87QDgQZ3UGBp/eIrrUuvGIqSqhMplaHFqSwWjyM54VWCq2IJHNUDTy5pRNEpzX2RMlFidShUgU1uA65cr7af+NvfcepdH8hbVkEoKKIQCkIyBIHz4X9iBQA7F/a0hbzRLaBFQlgDJsdfk2EkC+0/eVwfVPIorPr6paefYQuMMcYY5dg6lLygQ+J6oHhkz8yoPTBbc66QN1qxpc6GexUKcEPh/f9+f/ezkpBQEJKRAa4gJOE0zMsPNO7+Ft+qmbDtBGg2uk7LZjXfcIEhFhI+tslQrU9S60gD9YmnExiNYGQYx+O5IKKJZu8RaTzcEQ9q6E3w95o5ISoSATAgACIQIAEBASESIsXrGY0LyuPXDQEQNYQAzGAAe+IyAoDh2I2BjNB3BAXAyABByP1fDYhIpuKpzsZ+q/aO++tYD4KubWPIGarBlNIVU4whaDLxpUsLUoUakRM2k7IUd0z3G8tCsTyKF0ck7Tqa2cIhnVDLMac893Ki99iINQwxIOeX1yXt/uK065uMoZrrXwW0vYrrNu3rdndz54a9z//OSf4UQSgLYiEUhAQqF18PjYtBu+1SSI4LVcsLuOXoeeuRqKTCCZMYtDNtz0CXGFnFl6UwKuktM+2907tBRo2KWmsCPNzfC16+2tU+2VYQhEplOKGZT1TJ0rjkCUIJMbSPbJmGaYfXle3fztZXf+FH6u95f95yCUIRsfIWQBCKCNfPXXjL93i00fXbDKFlzDZh4JogkNz0J0Kau1vxTBKFInGuARGnqxh9E92xzjtFjUFUk8rVQFQeudhDoxwjICCDQtCKgIj8dqf56JO1d5xXtuu1g4ptGePPJWfRdK209PHFkhKgeMsCyzGXnd7fijUnOHn7n5Dj7JIddBXgvmpZXCHacRGvdc0dv3/9ifftLPWkglBSxGVUECZQdf3KV/zbv8mxNFi2CrRT22l3LQ82FAaZnAFTbIeZVL7KSAsBAAAepTJMtNO4c+l4Z8N0P12MK2ypA1wE7NcwdOViGLid4UBmZJjo6YNC/QiosfMyoCI0rEmz74c3fN19PhCaSAvNacVXVhMTaT6gKeS1LLB48zBpDTGja+iJMZ+L47JBLpI0kN6x5nQNTaPCrgNnm+HhKav9io9Y9xtByzrzquBznw0gm1e5IKwM5ZhmE4STxL3hDeDcUNu2Ae2Opyqkfd/XFXI4swkUScu3INJw2ZHoTXrMWYnpHqoD4hFQegUQx+OpMg0uLDOjAQLsXrpkrlwxJkRQxqxsUJlBsNCxbdlEwYomN2E1WDcXZW5bbevaOXez28FXq2o9UIfodH7+H97wEclQLwjjiEIoCOM4N91//pv/zv6u39S2siqE6FhtE17bxGt5iyYIy4LHNLRkZsznllTVRKzRdA0HxwNmMjPamoC0v//oEwqRiFS63SqzgW9WeQVnzh+YL8VTGObrb/lRFjlzYtn5OVPonjm0OsRhy0b9sq5d8WunyL342w8GiACvXvbZBaFcyANLEMbRru3b9i0VtwpeRR90VP3QKLbON2npCwglCI1wHNLWEM7YhTIxtU4zEk7VCROE7JcnJgRbI4Btdr/ymAl8i6h4S+1SScvXl5clsPzkEwQojaIp0vPKM6m8npDjxZInSqpdYEXXg47n1lX1lZ16+zq1bdv72r/4P+nD7wE4m9WJBGEFEIVQEEao3vWt7U//oz2HDjsUKF3BbscoW9mbYc3WXt7SCcIRpEUZTXPdHCOTgWBMA8TxnUcN+KJhKzOP6YqGAZUVQHj4teeDdpeZtcluFVBOFgxBEJZHh0K0dmy3fqHbMH7Qbet60HC7GxX+U/Mb/zFv6QShWEhQGUEYwT5359a7P2YZNBYophBtGzQZNtjWuPyovGnpqUpjC8mLlIZbRWMLIibk/RsvABwLwhDL+zfSkwiSjYcMBpCxn1vPAI9VCH0Fr3/4aNCa4Qce2icRGAwiAw2DyjAzASJSTw9FjOrqKY8IDAhIzCHbgH5oKUcFWm1VNm++kWBDQ0bLCDOKmsIGgZHMMHMgMWIBg8QYziKN4jIYRBOJEpbo5QaJSc0nmXxhipY/MI15g8dMtumCvyqj/IFZgcZC7pCBtvIJbEIFwKGCs48H+rWnW5/5FEhoGUHoIxZCQYhRhc4jv42uTJQIwpDjOy33tcfxOyu95pH9zMjMtm2HfhDYtP/YMwGEmufOC3ryFELJKiUn4gJakrWdQsZU65c//jH8uz+YtxyCUCDkwScIQ6rn3wI70OkWb6BJmLwJ05GopBkxag88Br3R9sSqpaMG4kQUGRu1o/xnLrWuXdVUjiijnF/U0KKtbROyRa7vYhjfUPDk5pl78hZEEAqEKISCEKN+043v+WUCO285ZkWC0Kwrx4j2uSiIGFdmNDATHqXYJDmGDRW/6S+goQrKimyjukGoqq5io4Lw4JGnUUnU0NUjz9gwA8qiaCW6Z+bp+luS+6JCePcfnq5VL+QtiCAUiMLdqIKQHx/qPPTJ61xxan7eksyKGMAWpOQNt4Dan9VMwYyZBkd3TilAk+Vj1siePskIEGrDrIlsT5uqaj7wKIad4/yQ45AWNTTK2lecqKGlzSuYc9RQYTVIU+w5xI2g+tJf/wD9vb+bt4yCUBREIRSEAb8J4NWqnWZ76eklBOH4JGliowbDiRn6GXXCBVTHSQP1mE6YXieNfp58KyETGmPcak37AQAEyoSXLgdXr6RLI5bAYlKWfH0Fk9Nw8pYXJY/KG6Jj/Es2++e278xbFkEoChI8QxB6OK/+0e337oWmSZUAzfIDii4TTHEmzVuuwlO2FpoeRzVmdBuMHWccRPIMdr/hnzS1WEwc7gkcc2uL/sZIsFFdcqhbAoNhcmzwPLYI2FAI0KhsvOa2ZPEzcptLDUI5lTFLMy8/2G2Bo4aOMSWG0Ki4UdMvueXSvUAL9iAo2qVM7Vv5tNu83rwBQc3q3vawG77+riu/9A+WJJUglIsCzswJQg4o+LD/1Z/tEoJT4fZG3uIIwrKYfV5glpJzpT2c4yyjVjgTalYYBEGFra6DrkFtw5XHnp7xFDlSHjfkInFytqaCWQJTKMuaxrJQgc5lq3pQMd6nvgz/1f+QtziCUAjKbQYRhKzQ8BsbwKH9rzhsVXE7yCq/WU6kDkNlCDGdtIYrpLUFInmjtIP9UWM8HKgZXO/RETYBxkeTA5VssJO5lw8QAOM/ncEklh8sk6MorXy/Xu4vA4sOISZmBgZmQgZEAwBsGAAYCRCANSKC4UjgqH5EVMoBYDLsO1YlQF9p0IZfuhS+8qJz4VzIljKkCHwIgdAycy8+G/zE+OUnTr1dZl8WmG3HwRy9BBMZ9KtxN9o0nWq2K7O2Trkp1zc35440zTynC5SVDkxsznlbIcPT/tvh0+/KpE5BKDviMioIAADWrT/sfeuTVmBtBpVutYlmRW+Ngo0nS0Ox7TyT+eJTSvU2HH4+ukOMWgDTyvd1wJSDe2rq6FeRm+holdz7J+lEGO1nBmADjMBmY6t2201oFBChIuN57NoqNDxnRpaxPNnE/c8pEwS5JZQv2v07zDk+gKbeLYX7AXkLMErhmqdYrqFZ0aoo30Pl7t548UpQeU37S7+Tt0SCkD/rOg8nCENusu55W/jM/9FoN3booGlrTcXLQ5gVks9wMUoSlTTNgfOY9RyHI6tKUN76e4bHRgbP4cJCQkRg2nvwcWZtOCQCzcYhxbTIWtmecbUfLHRAXvkDS8NIBpEiOltGiMvlEZQ8SMy8nOsYnzpoTpNz4cqv/Mgtb/1Q3hIJQv4U9PEtCCdIGD78Qv2nf5aVrbqbFcU6rOUt0kkj+QyFMTLsAImZKhARptQ/LaQN9ZITEsKV6/7lq6yMBRgGnqq6FGg9/2uNDJGRaKILkKYHmpQtL4q1VrBw+QPTWNEou01DG7bdUpZ3cPiRf+E/97nfzFsiQcifFfWLE4Q5sACYNu+zwD1wu3Z7I6xqSxfw5bxMMGVbs2aYn5SGO1lVeoazjVxITNmfUHM//Gf/7zldRifOO6ocDpY49lYqIg4KMPfL974kAAZCAAbuRe5E29e6Xtl63WvJM2w4dJTVCQOb0lLtpUfjLJhraOmjhhZN1oLNbRXNOFkw19BlG28t4rBSqwbPwcbptmmfvvddL//R/7PUMwpC8Sn9TI8gHJcztwBccRu3apeqrc1TFdtqe3nLJAjZcJSVb7mWk7SzD82P/QKTfpgYD2cz+MgEhIi9qUxNfvOhJy0v0GAqttMNA0IkSpd/ZouHuIaOMmM/ydkSyIyJW17yFM4SuGauoWkY0zaH1wxerFy93troVO5/57f/YTdvoQQhZyTKqLD2XP0KfOjXWHdU6DlUuYRoHKPW7hWZTNqAXpbfrA+ImPnlZgTkkZoRcRATlQCZE04dlYm0EATFEAY22Ff3Wl970b31VjRoGzAWWbz4CPeElcDCRQ1dkNH2Hl6ldac0z8mSRw2dF73VCNq1Oh/yRiUM3TPV6lV54wtrjzy1hXXHue/7z4W21WQLrdZGO8DLp/XarSEUVp1Rw86ca4GWsZp0YLaZK9vhMOMFAoIKySitrz75VbagG/hVtDpowF8kZ0zcJFjUmEEFZNQeuJbmJqF01C+za15pWo3Ap4YKHg8BdbkTTQnC8RGFUFhr6PTt/pd/ta12uV4J29TFylZoBTKm6VOS4JrF42Qbrlc3YeIZFCD0Ay1GI3iDholNP57moGSibhZV3nPyHHWz7AV3idUwVKsi37jRnx95zAFS70tGAIpSDfbOxQwAJnYDRueNquUo1Ggs4pHLm13utP/si1bIimoQsEugFaJO3tKiho4ZBvN37cuNNNfQ2YLEnFTQkaK5hvbuIzPcyDDlaP5Ncw1d0SAx87Jb05apbXoQ1D1l1Dmv5QF+458GecslCHmydg8CQYhjrj3pvvOHu04t8LyKHVa7XteyWkZcqQVhVqab+OayLk4pHP8qGvkzgmaDiL7ntV54KQRDlmJGhXL/CoKQChGxoq7uGG372nsJK2cazoEvE8HCWiMKobDunL7t3cp0jQmNU6mxHRKgkaAyRyH5DBcjP5PrlPgusxQ7qtqJECOx35WYdmKqJFNeTDQYtUXxR4lIB/61Bx4G22hgYFXAhXmDDIdjW34SFSsNQxplyR84aU8+odA6JQkSU7Tr2PBDA8q3AlZOp1q5pbL3Yiv0fT8veQShCEjaCWF9sV5zv9l7qX3hG+o1siq271tK6xYGDUsZJsnDsAjSPIuRnUo4WVO8144pYpSqmI1fSBx+Ndg1ebF7BybIMKZ2jnzJY5+ZIx/V+IpBjk4YRSalQWoPYgKDAN5h59xb72O2mAh1ahj93NJIFO6+SGsIA8BJW16kPYfzIeqBRZEG0jtW6vtLAADoKq7ZzZDdWtvlIDSm0enuB088ZNdf1Xz003lLJwj5IAqhsL7QG99f/4t/HfEUkN0Kryuv6tZsHwAJ0+dYCzeyKxQ9bSDntHxlJLN8hokKYaQIDjQ97P+ZXn2yQji6a2TxYX9dH86idk0qhH2RhgUQCYB7MlL/hBgpnYjADMBsHEVhGHLH27zrte7maWOQUJucDLFUNIUhlTShivZ8K1jjFc04WbD8gWWB6PReEDRcw35AdVSd66frbkh3P/nx9+YtmiDkRuFcRAThhKhcsNztg5ZT7TznsFFKKbd6aHzbhBYjY/JWFlervMAU8pZLWCLx64u9e+SIYvE9U9cN9qcsGcfKMyoEZYxhtENjHNT7Dz2GYDTzlDSEy6ZornHleV6VRc6cKIlraFlAaIIV+m22qmdr7WsH9Rses3ag9sItf+OfAJzKWzpByAexEApryc6OOv/64MHfO/Oa++uW7jKztpVbMaBd7hptcdqCq9QaCzZzXDAwRVXMW67Ck5GFMGYc65njosZPcxllHh9rYuzb/qfUPo8pztXD7BEjO+N7hjbGmMkRGZlMrxD2TZsMgEYDkyGtSAfNcPMNb0DbsdDkNVIW19DFKJrhLU2HT2tNmlhOwNl6RpTENbSAyzsTaYRh27Y3sLqrOwHqKh+cMj4gPvIj/239PW/1v3YZoJO3jIJw0sgMnLCm6Otfrn7rx7t0/nn3tW27YhuX/avKBIwQqM28pROEInJ8HT4xhs1RMWb6MMKoQ6plOUGgLcfxjK+vXG0e7hORZn1MIQVBWGEOlG3rQ+VbjaAF1sVQvcpvVphqd/zuLzc/85m8pROEfBALobCm2Hf/pXDnjQ4cOrqrDDAxgAWADDZBerQxxMQN09aAieUwQppnQeZbW4gYRV8Zfk+9FtYIzLHmjiwYkTsjT9gUEAlx1OyBAAiGOVY4kmRitSEiIDIgI+LEBe7ZEBCgL2oURiY6cnD2aP+wbtXPNNG3JzIAAhtCFfghsmtXqRvYNcu9/eZKWNO0XJ0QDQ9yFca34pFoBsxOUDQJrYCTHaovDac9CIrFvMFjJtt0wV+V1p5iCcyGfjMyE7shhaxsYg9MF2xm5jrcQKc29z//OYBm3qIKwkkjFkJhHVGbdwSf++VNfCVvQQQhY/pL7PKWY2amLDsckhwThlAbtVFzNIRGa4WvPP4MBrqrJXz8SSGJzoXScHS3pJZ+7h9/4tz3ft8JSCMIRUMe3MI6ol95YOMbf64dZpbAWoKpLIjkM1yMqfkM4x3PIBgEnoibu5hFa5ldmqb+CQAjam5PktCENlmGGNHYGFy6Grx82biZmS+KFyRGyBK5vqtN7JLiLNeXiF//u/+mdtPtJymkIBQEUQiFdcR94/fYFVtl5zplUjaJnifkAiKOWdQSZygWUPCymelgBJ6sh0ZFGr9NEMePUkoFnm8IFSiNXFfW9S89Qu5xpROOSVkUrUT3zDxdf8XimjHzvXADtFzvgjq1vVSZBKGYyINGWD9e8/XeA7/uVS64TmYWQiFbphrAhFmZbLREnXAxtfA4gvWYuKJjGSyGaSfSxLCVFZjQsdkYZFAO7T34mOkcZiAbAAAQJ2+CsA6URbHPauK141Knev7pH/+unR/4m8uQUhCKjCiEwvrx7Ofpr/2aBVf3g51ln0ryGS6GuOAen0FzzaJI59a2sQSDAFEY/TFhRu6LMSOhj1wF29hkQm1ZVifoqsNW+OIKrw0uy3OjYHIaTt7yQvIKZkq64jrfY81w1Queuu0zz27ddM+SRBWEwlLAF4kgLJ16a3e70z0Nz+UtiDAfoijORVwnHKiFvQyEx376Z9bsYwprgk44cbr+IcYYQwiG0bIREYmVxbtfeXReEdBw4jZvPetGeSxIwjRW+jrOEY7V4c4NweZNrR3aPLNUmQShgIhCKKwXtQtfDwAUVF+sneryqbzFEYTlMmuKv0XXEy4i09SNFDLZAAAgAElEQVQaEDFp0dTEnn7u+hBZBQC2CnTo2k7XhFceeeqYUgkzUzBLYAorrfAIszDTk8oGf9+2Lofe0z/2ndvv/uCyZRKEQiFrqIT1grYvvvpNv3a1cn2zbXtuaIX5iMEpI2lMjR8g3kQAU7wfZWgXEW+gfnAMROylnMXhN1FOQgYd/Wlio3hkMMMGjXYPu1/PE6uX8RCAiZlxYl1dpOmZfq3EJr5fQ8/+1jfwIgADsyHGXrZEQjAmUvoMIHM/hR0M5UFUhlghGkOhQqx2dYgWQnOv+8wTjdteG4CjfVOpOn7ohWG4YbtBmNMNPzfyHFiIFKNubk4EaV6gEidmIXjudeTzvRgOXafRDLW7+6bfOfzSNzbmPJcglBt5KgnrRfOxTx5uB24HWuCr7NJOCMIKMBg3T/HFzWpsPW89U4QxOF7mpS8/6tsMQWARdU1oMdquIxYhYc0RS+l0am1EMhXY6Ji9vGURhJNGFEJhjWi86h4A2A1qttpx3FOOlVk0wqyQNXILIvkMFwIRCUa6GY7mqyhD3+sNZ3tiEwJA84mvBoHHoC1CzYYMI2KodX5CpiEulyuBBInJFGZM3LI7Q3KiKId2fafi6+1N/xQAnHrvt2R3RkEoOoV78QjC8jCbF173ff/TVs2/HgamdV0HlbwlGkfyGQonyVjKtZhOOJyGOFInzNBmGK9qcipk7FsYeshitPIQUUX/Oq1W99kXtAJNUDUUGK21Lr5qGyP9SZAPxXr+FC5/YBqSV7CQpPXmfafq6eukq3vulbd89pnGu74tb0kF4eSQB5OwRrQe/INnvQ29p7je3aw0WCxIq47kM5wdM/Fn6krXnLxGEw9nBEQ0ONRmgRA4OPizh0GBb/xKCIECZiaS992KIBbL6ZSnfZY90TDfxMr50HasSouubtpnD/Yqp97x4ewkEYSiIy9IYV2oXHgDACDf7NS145/xsWPQz1uoWZF8hoshLrjTGRsjTiqB0dBpSqMtQzmcNBVOOV1fDySAnr8oMGkKvSefR88DAAgDILL0+I89Wcpxny7fVW8+CmcJFNfQUjHvXbcXNK0gON894xxe3/RuIGO9+Q+eOTlxBSFXJKiGsC7YN75t+03fe6A9g77FbZ8rBtGS8JRrSZoaU8hJ9OXCzPHWiOwIkQqAHCWBGEYrjbfP2J8Lc5x64sciIkdeo6BRsdc+7DzzQv3OOzwFDhAZbQqnf4FEDZ1Oae7HnLxAS9M+KRRNfm+joULT3bzeCaHq+l1nl/163kIJwglRxDekICyFyqZXuUXVfOi2yZwlQFDtvGUShDyJ5sunD8s43UC3sHkwq3oiJqVXBJ2ge+Xxp20NnoO2ATRslFiGBUFIZavTqoJ7xXeroQnDl7l1gYw8NIR1QeUtgCCcADfVbri39ci/Vq//JmVsh/GapRzwiV0su4UQMXFDiJK2TW4l/71ZsRbNE/thOPkNAiIzABIiDX55zwMTIDIM9lQ1JEBiiG6XKDkgIREDc+9IxkHfi2t30c7+1zA4PlleBGDA6CwG+sUMMBD07JYcxbvpCRzlLOx19/4vAICQ3Ap39StXzr7n7YqrOvS4QnQSQUYppWMZAE7a8qGf1HFyy0sehugK9jdi6GekzAM0yb6qnHZ9hWksu78RmMTV4vPW4zs+e35NnWHvGjsXbO21n/nK1pkz17/yn7MSVRAKi1gIhbWg/dJzt3z7L2B1w4Q+K7VDLdsEVrhSw39BKDKDqfborjvKKpj8bho/ajRGUP9b8n3ftm2jg91nn/NNaFdcZlAycBcEIR3drSA53fBls3E6DHb3XLjlrtc99ev/e95yCcJJIBZCYS2oveWD/g3vONz/ahVU17YtPzSu0hbgijqEUGowFdGBp5JicS19s6V089jukcWBY/8OoNHM9T3LX2Tbi9WZ5hE61o5JEWLisvRUPcShAXfsPEPtMirHvTWQmgPXwjA0Pljb99xhKycIQxsts/Q1e2nPk3w6ULozcLGee8jjAp2Q/TTNEph+wAkINUnR1trNz3Lbbd4HdFp7Nox9qELL6gaHDm2HhNjUjdrW9t4Xfi8LMQWh0IiFUFh9tl//nvYXf8m3X7x45gJapF0ysNXuYLeIiaqzQfIZCktieszP8cL9keBCQUonu+X4ntjhI5qq4zh+oImo/dQz7LfDMASgExlVS/7AaRQuamgakj9wIZad7oI4ecuKPWjvkGLjqBpVDsyGT3T9hWf/6Y+dedt3ZHYOQSgq8oATVp+uxld/5Be7e+3mAYa21j4wmtNY2zK1vEUTysG65TMcMw8m/jk6zospGykDaEScO/MnE/bdWAbuoKN/9gsCAIBBiBISWkjMAIR4eNB+/nkEY5Mdcjjf2YWsKU9+PGExljwBseS0H8ppvMztCtbqQeA6tX3DO1s3vutfX776X/5dVqcQhMIiLqPCqqM2w8sPHtz2nRcqDbRCT7cBzqlKE/wm28as26SvBKFZiNR8hmVpnlSX0cEX4y6jI8WGPp9j+xPKj5gEx60/vZwW8QNGD8corExvf3Q040jEmJFuyTHZeh8ZgMOAlK1BO8wBqbN33g2WHRqvl65wDtKCiBTtwpck2ElezVYS19Dyk027Eaf05jmtyfPONShlKd31A2i7jdPt7p6zv7dR0ayqW2f3vvhZgGCu2gShXIhCKKw0p26tbp0PfWf7DW8F3+uEB1V7E9gOuKWcsAXKKmRuspMn/TVetIFvscAUVTFvuSZIX0PYl3Ykyuh4sf6PojHdL6na0RLjCmGiOBMqZX914uBoHDtwoJJx8oGhVsrx0ScIwoNg89670a2AMji3VbdYawLTKJqNLW0gntaaNKFkR2EpM7uR0hSJgkUNLYuxdNlRQ3FuBT4blBeoqjJsuei24NCywPWDGl998Ed/sPHOb/KfvwrQWrYMgpAXMhoWVpxO9/D2b/l+4+/s1eph9XTQIYdedj3XDWtu92ze0gmCAJAQh4Ymd06WRByZ02SAyLTgWJYxzKR8Dqz9w/3ru0EQKMlDKAjrxLwuym3XrbQtQqW6l3CjBsGN7FU13XLXb/3p4Z/88QkKLgg5IBZCYcXZuOebr2+/R1HT0kYZBsWGbSAOAZC6eUtXGMSVdDHK0jxpqhAOrITjRppEU6fhXuJBnDgeAJg53mUYJqP/ISIhEgMyRhsPPEgR0SBDlLkQoySD3PvQN+0xGhzkPgQwaHqnx76TGTAChCZEBZtGHTqqAqpy2K687a5K19VoOJ5f8WgSkwdmd3VTLSHJ4hUtf2AamObyl8Jkmy74q0qSP7AslsAJaHq7pXXPdMtwNvkDUy3SqdG2k7HYBAQIhpULmpG6aAFDWMcbadvZ/8KnxGtUWGHEQiisMtXt21qf+5VKfT9vQQRh9Tm+r2xivopeDJuUb3uM+oISESJ2TQiBRqWuvHTJaXa7EECKopsbEs1SKA1Hd8vSRJGdE+O9+LV/+sPb7/6GvAURhCUiLx5hlem8/IWbvuVXw1Ynb0HKyrwzrEIPwuRNOArV72CDf8d0vcTUoeO6olKsjbEsm5QB3dk/8J96IbBXNs1MXkjU0NUmdklxna+vrfG+T728959+K29BBGGJiMuosOKou99F9fMciqfHIqQ5zIkr6YLkFmVxxu+PkC8t3GjagTN4f3G8toFaF0WUiWmG8Zg3w2gzHLcMRv0y+pJA+1pVbNtg6Puu5Rif6/ffQVpBbJrjKNlyo1wJ5YviiAmQ7sMtLMYRPqLHpCxhmgNLqSDAsxcPPy8Z6oWVRSyEwsrinH0dAPiNV/nNZt6yCALASuQznEWVykbXoqGdMH5eRDSYnI0wak1EZEZE1IBsjAa2bbX3zFfp4LBXav1MHEIulMeCuuT8gWBStvlYenumuXAr57C28eIv/NjOR34is3MJQsEQhVBYWfwrj93wXb+KB/vk7OQty6rRjwgyvi1/YFFuVsYFd1LmuOaWVmZeIm0Ze/0KIGaINNjrWmOBRntnZrBt2xhjgtBxHD/0QPvdp77KPNJFEVVR+2fB7iPDyVteLDlB+bqRrmhl82gqWG9OxWDy1oJNDFq3//v9zVtuy1tGQVgWBbwlBSEzfPeKvelZ/EreggjCNJauKJbZNMkIQBgpfvHlhbHFhOM5KhCRAZQBIgsVhahRmetfeWxgTyiIlaY8FiRhGit9HedyGS2JJXBO6ubaeWydg8Otd397XjIIwrIRhVBYTawb3woA+8FZblcVb+ctjiCsGsswbE6JScgIU19YI1+h4W7gK0Bl20EQgKW6xj94+jnojzWzE/mYlMN2UrQBunDizHSzl6M3z4/ijav+DU2w/CcfuOEjP5W3OIKwFMoxQywI81J9+w/ZN7y1u3mtdm1D1xQYCTCYJ5g6dhQvr6ks2ytvVP1Chr4BTcf1vbShP8W+6n8YuaDxA+OnYki+H4lH+wP2rHm9enqtYXC4s5dXUAFGpzbGMDMSMDMYRsOABoxmEzLz7e9//8ab7/HZVh5CRSk2YcfDmgs6n37IRTPS5ugFmkiaF2jBMnOURTdedn+jjJ7nS2/PWP9JjFo8hu90LY8sMEw7f/ZttSUKJgj5UaynqiBkBbvbXEXLD4ylCO28xRGEFSevlZBjvrWTf8Y/XHr4cc2GNLMFYRjajFxzVDkG80L+iKV0xZhFGwSAWnvH4s2qsrumefvfl+QTwmoiCqGwguzc9Q3dP/5p36s09BnLqnfN5bwlWndWJpjKSZNTPsPxtH6zXakpkWaylSdlZ8LrLL7OEBFbzzzvNw8ADTqWAgRtQpsgWLr7gCgSRyBBYjKFGRO37M5Q7rWCg2gxQ0mmLql28JXAwa6x6tqq3nf/mz79/LIlFISTRxRCYQUxWzff9p0fr1Zf7DTdgC9b6kzeEq076cOHVV11sqYk6oTLUxQnGO05UeIKUIg9K6Dre/vPfo0tBjAuKo81aHMibpvF6ufRWs3JrXCkpQEQcqVYvTmd2dXWqPMTJ2+7bsMLX0FvZ9fZVXXtd5yT/R2CcBIU8BYWhOMSVnYu2+dVs2o3ApuqWssCQmGlKF3Q0BkVxXkr7OeNiEMAZBAQKMpJODRHEyrU1778GLMGP1RsuoptDWBNJq5YccRiOZ3ytI/kD5zOHO0zZULkgqnUVLVt7Tfcs63dugpl5CysINKthVVj67Zvbv7xzx1i3dLUDik02rVEISwoYjlcjOW74I63fJLqlSrb7KdZoHDSITRejNFg1EoEMFSVQ6X951/iwxaxMcZoi1yDGjIbmC7fVW8+CmcJFNfQUlGWp/Ax1daBJTCN3bDphOZsCKr1ylaI/hMPXfhv/lYWggtCgVi7mVFh5and+o3n3/C9rQY2sOrZ10JTt7UusvFknUlTbNIvVwEn6YvEvM2DU/46+gRJ5RnSlvzFi6coJTj2A5LES+wcCBiXjSMxokMQEBgig4QKyGPr7NnGDRcNoiFUiKExlFnA7YI9aIpm1EpNKkL9yzW2LZdCGv3mYNnij9+PRYVh7v5DPFJoeummuwWBolqnxXbd3jDnGk/99x/K9icIQu4UcK5HEI4FVzbbjZtt7e/518g7zw4q6OQtlCCsF7OFgUndOb3axDiis9RmyCDz5UefYjABgaMhYGMVTYsTBGGZxI2Bs0w8bAWXGrZ/2a9XIWDPQ2/7zo9LrFFh1RALobBSVG68r/nw/0t3fZtFUOVw36pvBF1GzWDlLZowB5yyYfI0MIrlsAdi8paa7R0BEDnWklH5pAMQo3SSkR8m9tIWRpcGjQHDwFFlOJKWcHD1DECyz+JAi2M00WJIjA3TEJGxfwz2+gADAhKAZjZ9V83oCIMIvVyFwP3SiECIaOlqGw6d/f2N+994GrY7jgEypNW8bpTMaf0wH6LWxtitQgzI+d0VaJJ9VXOyBJadZfc3ApO4Knl+OZfb45B7Nv/++chgb18icTPgcVrNVGxvf3+7sh0YrcHd8MN294pz9tThVz630O8QhCIiCqGwUoSHL1/84Cc69Rq02zY4RKFBDNQGcZi3aEIGiCvpgqQ1Dw7+mekAZh41wQ3+jGLaIAL1tNKe0rjA8rAJHRWQY3KOSmvGjowk7yuufdF6uzEIAtfFThBUz93onL+g2AQW2Jp47nV1RdRhcOJzfgrh1A4nzM1y260srqEj+hzTkVkEs2q1bps2txvt9q4mVbHoWk3Xz9Ye//G/klH1glAIxGVUWCUqtbf8QKtyU3v/koOW59RsHSJpDv28BRPmQ/IWZktWUUnn9/mMhaJYStqAKNrN5BkBYBhMZiChQXDJ0cyHDz4ROCFoA4iYrg2WJdrkpNl1kViQi5y4HEFiynIdy0Je7RkLGHO0NpghZ5TVCn3LUS0T+FVzOgxb4cVb/8EnT04CQVg+YiEUVofavR9qf/m37fvecaay0+nqdoXsAFh3bVvJq39FSHGJFFfS6UxXsGe3EE4pFl/dh4kFZggqMyg/JtKkhbAvfGQKJOhHkZk4b9/HNNpLiEYDsml6p+6/x1YVM00fBJg/WMVSwYxc4LIUKBFxDV2IdJ0qm6ZLdaEsWA7KuKN5fIvdjzORVYfzKcCACSrbFRVe3w/dOgRNbB46p04fPvSfMzqJIOSMKITC6kC3ve/UO79/r3UIpmG7RkPFptAi1WGlRDFYacSV9DhkohD2qoophDi6FhFjeml6/dMUQkIc/Ns/Xbz6uMmTETFaFzWYGEAGA6x1WAHo+F33zOntm2+GEELSlOosUzAdpmgzW+IamjHLVaQxbW1nwVggamgi2TWcc0C8hcoPglrd4Vb9jFPR29XH/86HszqDIOSOKITCqlA5X7n165u1MxecKpDf9ps6PA1OSwWBchw2hfNiEjJEgtAch+MrhENj4zQL4Sz1z2IhjGuB8TWNw+A5OFhNCNCPcgOAaIyxLKVMaEh7be+mN7+FjdIOoymJRSuvbju3IlG8pisHxbIE5uVVmx4nJnl/VsFj0rCUBS5jp+XpnVPcuuQGL9fChu/aO2f3v/AZAIlQIKwCohAKq8H5xtnXNZ/4vfN33E/d0DPtWnUTlRuarsM6CDSSdPVVRvIZLka/lSaaLWUgONGiCVkHETFmxEtRCCejJkZ7+svP0hTC6JrGnF1HNNJYNsJ+HBkARsC+2sjMNiifAoU6OPR37rpXVTcCx2DBRnRpA/G0/kwTkxy95sxKoJK4hpZlWeCyo4aWxRKYxlSFEAFwTANcNtWuDqsBaUVufTds7YCuh2HIu4/9rY9uvvObvecvA7SXL4UgLBcJKiOsCIcvPXbXu//2Hl681DjXcS76TePws7bvgOOEdj1v6QRhRUjJ+0f9+C69+DEIaqHgMZSyLVDPCNEAEhVBN/SICYyjzfWvXfLCUGs9f/2CsPoUMxgPxdYLn4xCeGhv2F6g0Km0nsX6OQ9Oa79hw633/NbnD/7kj5Z/fkE4CcRsIqwI9Td/8MrFr3Nxz9WeBT5boKECSmsDCkJxYVpP0l1JSzNZfhL0rUnDoV4/ecRgi8Zg3EvoMLidBnP0UfY/7mU9RDZgGJmQALB/DEVBURiYRs23g4A0iL16GJkxyoTGAGwAIisVxs6OiAaHlkDsVQ7AzMQU5TLkvqdcz3sYQ8V1H7x6Re82q75vv/V1db+qC2Y8mTd4DMN4h15woFyS/IG56ySLckRMlDTDYbpleLn5A5cd7dn08mWOb2nlacp3y4QwYLYNsLaqVughBECG0bPR3Xj9W67/wb8VC6GwAoiFUFgFtm7/huaf/0q1/spIaPulhLkXVoOsLFFC9iw64ky/fP1wM4YZDbOioOtVKpXDvX1zZdeXJUDCSXD04yVRGS/YZIUwRPGGqtQufuSv5i2IIGSADICEVUCjvuVb/5ney1sOoWAse4Z73ZjSnpNGhuOYcVKu0ZEXbvyNNqyHEQAYDBH5hBgCuXb34LD9xLPayS3iVDFd8oSsiF1SXOvru6ITtc2gWb/zjZf+5c/kLYggZEDpb0hBAIDmE/+hZR3adVkrKMwEIyZuYjk8CpOyDZkc744p4VMV8tT2R0QFiEAQyy8xkZUeRpYyjp8OmdC2LA9MRbmhNhbw4SNPMfjztECWFM4itKID9/yQBwgAgMHkLQ3i5K1oVO2g0qnd/tP/Nm9BBCED1v05JawA9pk7AMDbuMVveXnLIghryjDy51gKikXtsfEDFeBwOBjZ+nCgFqYOuCfVRSIyzICKEEMOLZu6L75krl9fTEJh2ZTHgrrsiaSjJ2JmYentuaITCmntFjiVK/rqxr3vuPc/NPOWURCOS+lvVEEIrj5x/kO/yIdXyLohb1mEcpM+7BLLYQbMqxwm+vciRtkHx/ZP2gOjP1V8pwLUWluWFQaGLEuTCbvt5hNPzyXVIhhO3vICTfImLES6opWNd3pZnj6raglMY6tj1x0IK1UyuXkZCEJWFPCRIghzEzote9NWuPyBnbDSyJrDxYiFCc3GPDhR+cQAOGYiPIrhgcaETKQMAilSKjAhOnDwwGPHF1I4DuWxBC7AXOFYS2IJXFHmbbemuuTZZOlma8eCQJpXKDeiEArlpnLj2wDgwOyApzC8UJ65VCFfpJ9kTFwVzFAbnP3UOEsWJcPKsozWlmUBQIiMjnX43EvLllAG6GvPTPeCPJXKhR28uhpWgCpPf13j7JNB3uIIwrGw8hZAEI6Fc8vbTr31Y1fMFdRnPGdfmbQuPXir9mdbI/+o8i9vEBZivkn3tNJl7z0amLinUDFOJLOLgYjIw3aIjHOD8Cdx3Sb+2URVDnTFyN+TWZMh7u83zNy7D8fa2WBPlUKM1hBSVKSvAYIBBkJmxp4sClhHLmrRv9GvYyYAbZgtmwJ2bNXuMNd8qAIdaNjyX/LRr6Jy/daeOlshssJrB3b9XFg9oNZ8DZriBZqbkTnNC1SeewvBsxqlh0csRY7cifWfKR6hA0rkBToX7Pz/7N13vCRXfSD63++cip1u3ztzZ6QZjSSUBcgIRAaTnQA/EMHGIHYdntNzYNfPfux69xnz1nhBttfP3vUaf9aLE8ImiGwMXmNLBIkgQAJlFJBGk+emTpVO2D96bu66t6tvVVdV9+/7qY8t7nRX/bq6uqpO/c75nZ7yfOWYT/kHb/noF/IOh5A9oasCKTdp1XwH9juNEBQfagzM6jE/EYPdSd7K/Ux/rTXYt3a7u32i843/OmZ7b02trSEKpVJSITM5N21LG261UhMrR5F7fiB895DPIzdaNlndsqITJhWbSRllSifMMK3BCbYMgjUct2sc9HrHfumHjXf8+7wjImR0pblxIWQ7+/B13Vt/p+N7K0sRMyLkleHeV74bd5Kv6RlbuLHVN/x9+l52Rf+9cSOldl7zwH8dPOYQGABjzGSG1sC4wECF7QjA73Ufuf3YK57tGKaxvFKXUafKW8oJfHZAzI38ocaNisSkSmscuKS3hXKPFdxeLSbBkN4CSGu/zYKFS22sNc6aK45uz81ckUW0hIwH3RCTEguOfePA6/5Hs6Lc/aal7UCsxL+Wmn8kfWWvSrqtJudq39FVidqEuzYLN1b7XPtvjQOmrEjJ+g5fbcFzzZVWDDVobjDbMb0WAPDXvh7YrNeUATcMrPh8acZmnliO/SBFmz8wzoROA1B25Tg7JGm29g/+slcNTarjoGE4i0GHW/wZN/u2eyHABXkHRciICngKImQ4+GIAWEQZ+rzXUWh4HBvxmZztF7JiXoJJmUxu5hDXF71h2fVtA2eJ2O0/NAIwBJZWSdKNNv3GtdZMK4WMIyIzHIOHC48CQCR6K5VHgCt32QAv5IZoB6FlWXFboa6POyvP/qH5A3eWYP8U8YFIxlxPBI67X4ugUgvsmaO/+K/ZG1+Ud1CEjIiKypDS0rcyWzvspgDDGQfOtHvN6mwUiZgXb7/X7F+V46791NuKjC6+CE2xjjfUu7fy1gq2AEDqvxdE3PW+dtfX9CvVbHzZ5rcwAHWuocgRtdYMpIZIMgyWvBP3ssrBsHvmvu+//MWfXejN1qreSd+uzUbuEvOsmOxGbre+1Au0VMryxHGPR1Vhc4BZt5lDDmYnaNWFs2wyv+Xo+32sZbpFQrIzRJ1uQgrJufT/br5wOYDTVfuAF4bCEJaqaIhrEOrVShlDThZc1EscKYO4zGH8kZfP8XZuirRdfxC49hK9+c9r1v8e9yk3f/zBr+9POR8X6vYA1iNYrY6DgyM8V0FVoQKhNOcGao2u2TkRPP5FrVn4yD1X/96n7fmrtewpiAzD7IBvuj5EBbtExmVhNNuU1F1fslXIpF8CWYePJbmOaEh8/DC96UXjONqKpx4ir9q+DurKFLP2xV9b0C99ycpn/i7vuAgZRVkeYBGyxfX+w38g7CW095l+q8tE3d4XiU7syzeVWKCn7CQtZRkNtJONrQxE3FIuoi9R0YjhBxP2rdWoGLm3LQ438yE3GAoFAKGSIEF6K9bBp4JoA0CwsthyOpF12jf3K19J7qowtssoIdNsY0pwOpuCfUsOtFS7qisdHnrC61oNXJyBl/zHvOMiZBTUZZSU1McAu6G6CbEn+Gw9Os2AK2YxkINfjhxg44Vr9YIWWza7WF37SFGVez7DgW08DrFdNHU/odj/x41lF9WmzN6Wt/c7cGqtJQCe+6dNL2D63I6RG964JbTVX+qGCQsRtQYGqLXWuDqkChkCaC3X3sU0rO/40JA1tKNIKhVx7t/zUd443P+XztG7H3nZv3rWZ5fNwLdsO1Rthiy3TjQ0f2CqUi0QOgBL6bqQdca1/8td3xma7TxvxDB9QYuQA80rU12VOlRaM1ELmR+A33AfU8+DW16aSzCE7FHB+sMQMhz30rc1f8TruVW+XNOVoxLneRRxJnXSDANNNEwKAAf319pxqvj84Kb/BwDQH8I3zHvZuZ6zWz7XgE+64+q2tRs3lirtB7SxM9uGnqMSJSrQyHV7URz7qg7a/X/q3vXli//go+pAreGYSyG6FlpdW89PYQ4AACAASURBVBo5PQCKLdAxtcmYPcp2v5Wla+imdN5urUGgo203nkRuO6G0mAmIwGHhgvm6sC/o3nUbgJd3dIQkQ48bSQm99EXew3/kBCdVr+PU2hoaoWKBHXZ54gccyatETkIXQZKXSa1KuuUjrP1PBVrBpnKI8TUW2fb1jLb1LX/UG4qXImohhGE6ghtu+zHr4DM3viVonY5m5kKxgqqhhNmZ3WEam5SUZP7A8lQNLYe89ueGOqe7twYLqGjHoWMqKToaZVv1FKKtmSGWTv/171/7un+XV0iEjIxuZEn5YM+F//QfT1QusAIlgq4ZWpbRMXBuzjeSNtg0qoHLOD8OIWWfz1AjG7is/uv6K1cbwAM/Bdvwgk2GbChumdBiaxYSEZm2TWu53WEYLd73Beid3fgC/4lHHn7ePgUXNdyl0NdmVB9mo5mg+QNHknWDoSzz7A1xPiEpMENwGbpacUNxZvueFfLqT77/DjhyWd6hEZIYnRdI2VgN/dXPWfddaS+frdWaIa+YyMywK8JlwNRu4OIzOeW4QSflMqmZwzX9NuG2TxT7wxnYJtyhobj9Pza+ZS0ZorRWQtaqjah9AmAxbJ/auLal/3njU2+8uRo8GgiYqdTB84f6bKRAMj4/lySjS9ep8VDgSuEwARXuem2fO5YxA3eZtm7WAObzjo6QZOgEQUqGN49A7YiBoZixe8I3Va+D0K3vC6vhEu7QxSutzGHcQhdgkr7yZg63N95ihusmi3nINuFaU3AtedNvE0ZKmowboJ3Oo8ahq7aP82l+37XdGXMRROQfZ0Z6Y+xL05AgAOllAovWxTFuVGBZMp9FE1YCz1aB6EofZmozftj1lo6Gbveud77lqrf+Yt7REZJMgW4gCBmGPH1P46W/sb8duD3hYahqdRkt2kvYCPbXrfhpJwgpoQnLHCoYeEM8+DI0/MccpvGJiArBtC0hhIy89rdvge7C9lVFDhdh/aA12zNs7WTfZbRgXUOL14AZTGscuKS2gUluwCMAFrzhV5bjkEe9SIaVKiohAxFwtzbDmzbC9f/4bTxydd7REZIMNQhJ+bRmDh9tHnAEzIUQCaiZVduotvGsFNW8QyNkNEXP+OVi52oxO9ODZjWMhOKcR2EAAGLlzPZ3ffUlF9vKUX6vgobwl5KHTMi6YjZsmIaNpYLL+nipAKrefEXsk0Fomlyg11U+EzZG6sFw39zzfzjv6AhJZtpvOEjJzFwLADV/qRZ0eo4RGGAJGQAL+bIj63KUwznhjXjivjV0o0+GEd85dO+vTi4uIXmuH2Z/kvrd5qpHREQOwPqzBPb/2H/TlrA1cgVMbf6B6A0dPvs/MlRr99PrLzs3o/2GIqVbg9rw8zQUY4aE5QeMI8+OC/vsrR9B5BCG0qgMv8dWP3NMZokygenYtav/4CV+dWrgkjSsuP2ZdYa//6vZvsS9nmnNtN7429Lbai+NU2mOQ60HLh27zaEteF1qYAgNaXZMBQwqUUcAe8W/FO+DEBKPbkxJqazcCS++FR2aP5OQgTJ/ADGuDqubYu63+jZOIDEkRATN1mJWOvAF9773NViduX477/EHbntlTbrSEnQ/Vyi7H8aoBy+EjJOJrXq1EXZ7eQdCSALUICQlU515SBWva2jyJ8GUOSSjy3dsYY6DGHfa9E7pynO/LDSQa2Vd/lKxfCzupUdv+t3Lfv9jAbMr0chhknRsTLYVOoOUtYJlmCdWTCYw6Wo6vNo5fTbA2KdOhBQQnVBIeTzpmQBQr82a6mT2G0urKikh4zO2qqSJ2oSjNlaTFyDVaxti27bIAFioTXXmXvBXoLPTOSRc6QgUnhEmDJhu3FNHT8oAVjPk25c4VDU0X6bwWw0UkbzmI9QmJKUx7edZUiLYOMJ+9s+ld7bFa3nHMqz4TA5lCEn68s0cxsWzhxWca01tHPa0eYXbfjUa8dxfBvygRKT9B29R7V2eKPmPPXT3y5+qrD0EXgylGaOV+fkwnVG3me/PCX2gULTjEGOWtAShNS9VKBrAkj9UIiQnVF+KlIn54x+M7BP7g/MCKNqc0QnvLXZ4upvK+gnZIO7eK/5Oc9PxNvDtqEHr3Udord75bVrh9jf1N7Eaz4YXKw0AG5Pta78cVHrtZ8S02hQqaq11/739H1v/74bo+mce9r/7efAWd4x6/qob/2ruiudEcW3CuOR/we7dC9n2GyB+xghMpejJCHViBsp6f+5QD2agsiT9inYcxh1tacVpo47Cmm9JVPLb18+msk5CslasqxchsQ48GQAa2pptu1IHeUdDSJlklDnMLPe49cI0sIPctlTh7vSZu5nX2q01CABn5PLJaKY0D0yLloFJVaLkTUkygROqLPst6zh9HYpa18QF/3tfPXDD29JaLSGZogYhKYnT98KbP6zDs6rebKPIOxpCimncXZGTDiYc+rUjxjxoE+urWvn27bI11Ajk7rEHvv7SudFiIBkY6sihjvikCCJeD3sadc2++srT7/+jvMMhZChUvp+Ugmle97Mzjcs8zgVEFeFpZuYd0hZxoxJiHjrGvFzHPMtGZMnWT6aUjlmSvVpp0IBs/agbtAYEQECNoHe6XV9toW1ez+rxixtehogalUatz6303D8AImrELce81krrteafRtCICkADakRTSc+ybAVSBwzRUIbPpBssQHXOf/TbAN6u+7F915cvf8/N9v4jjhmaYdSxKwBoQdTlYp9sBhhlPAppMmmd7egtLMv5UK+fzxWuT5AR93Km6WgbScbJybi1z4S6VVEugvJnzf3zra9/LtMwCEkFPTsjZXDFy6JvvD+QnYYd7QetsZl3QFkpWlEQMrWGPOqG7GeVxTG8wzolSJSmZhFnNkMjYsoyq52T92tvCWBhyPVHK23f7bSFGVTmpNYzfquiLYvzY+aZlD5BYmXpkkeGlHgsOSmDjunpXhTJimGwJ/7k3573+p/LOyJCdkcNQlICrHE+vvrf1dxesKJaYqFVcfOOqDiokxQZXdwDiH5bS2142cZ3bWmB5NIg2aWFyQ2mUaDQwLWQPRGqMArv/3rUOj38JnpPPHT3K15omBW+crYpZOA6PWmGXeeg3LfX6Ced7ud5ty3pbaHcYwW3zxuhccd5NAuGHkzsTFizZl3VFY/so0//22/MXPiUvCMiZHfUZZQUX41d/hKzep7iDXRsg1UsrwOsLBfPdLqSJr9ZoGszScFqb9Cth9N6e6xf1HOIwxNxwGG/7X164N83N//0oDduXQsDJZUykBtMK6tiB0tQnYu+d9cw/UX7unc9dNkf/IU7f3VgL0t0bOZ0sV23nSj0ClZMtICyPT8zGNz3tGhUbAfurcEiACBw6ho6kri2aF67zvI6FV1rS08Kfh6fWV5ZXLjlwznFQsiw6LJGCu/iq+St/x32XcLksgrMNqoap0vkGsoQkgwhnptgYYeM3K7dQddeMLbOz0pzhp7SrgahmTbR8E5+G8IlgF3ri250vHrtM7zK/cBts828qKst1hYdx7SzintVeTIwNH/gzhLsn90mcCGxsh2ZmnRkNgCvVECEDbuBpniINR/87R/b/zP/Jr1wCMkE3TiSwvveHfhT77KXT3tGrW4vsNA6YUzAlTPhjRTTg5fYGyZqKJI9Wes4ioj9vm0D23VDtvHGPIYQAIAjoqF0GGqmOsvhI18W7RNJNyHMs6431/BcMVd3pQfQmIuqbZprelzKchbbY7N1/XReMOV5MFEsni8XHfcYPoJqpqmCq2//XvXQpXkHRcguCnhqJWSrfe2qoV1Hhz6YDdXbp6p5R0TIRGO4sZNyv02ocGtTcEPHURy8pCdZk1JHSpjIQtQMTdcWZypXvEIuHU260XtedDVKU6Jt+22hWE0HK9jhtXbS9cSGWfIb7rLHn57ETddNj/Woa+iQtB68pLX6hJnA2PW4qtLrzvNLZRTM9mT9VGBVDqYVJCEZoQYhKbbznwYAWuOy3QVseMgMEG0e5R3WuFH1UVIQa2nD0d64l40Oz2AS0EEWSqGF4qJ7Eryz4C+PsOmzX/r4snNW8TOa7ec9T5lNJem6SfZkYzKQmoKTh3umWbF6yyfdinWmJqB3/nf//Y8duOE38o6LkJ3QhY0UGp85BK/+w65tu2AJKee8RY8Zrkw8hqQ8Bj9pjn0SH9OVNP7JfVk6YZFcKb1pRJNmCBw06+cJ9caSTgyRs35GcXVZrysJq0mk/msROSLfcrxtPD77WwHNFDC14fhUSm3IO7H+HfWW5/cbn5IIaTMuzJCBqcOg1/7mR0QnQX3RjTpPfOfeVxxhYVUaYei4rupw0RhtVeWVddVQBmrgkjzObDOW/ekCN9q5a2hsT/+NMe8hE5WWgmd6cx8TGCumr7CtxUoQ2PXI64m6tpZnxTWfO029RknB0Y0gKTBel/f/Q63iVFDIwENmSaveY46PVt6RFR1lFMmYxR1jw5ecGfL1w7AsK4oiYIxZbjVcdq55Y3ji3tFWdeav//CyGz/quSumsRIoy+BowSiZRjIBtvSDnuAHk8VRxotWyB2D13jXrIGDTKnusrvctWuHAS7MOzRCYlGDkBRX7chTwTrU8SJUyjFQofI1V6BBUVWH1FHmkKRj16cPG/9J4/pbBr4g7i87/13LSEppVxqh1M7yd5nfHTr8AYL2gs8vjWTNk67Q3HcT36MWPANTOnntz37iem0p3XmyLMfhemDFjjNW5DPG0HQ8FS1Lb3+1VtHO/b/1Sxe9+a15R0ZIrNKcyMgU0vXzLnvj2935i0PFlFIyCjTIGUu7qpN3aIU3TF8lQrI0ZK5vLeWya5tw5xVqrddeoGRk2/ZKuwPSP3vnP0P71PBhb+c9/vj9LzMtXjuIZ2VgCDWx8/dm3WAoy2kpnckuyKiKNwFjsokthBN4vCe1qmqY445YiRbd5os+/Y/8wsvGGTQhiUzshY2UntmMTtwZXPWGnq8MJh3H0shFGCACA6nQzDu+MUvppil22A+LueDRXdCUGtz6Wh1BtX3i+IGv3z5TxWpNms1vwcH3Vhv+uDYKEeP/sl7whiNGSnLDMb1jfGbOe/jO4eej36531xeueffHag3wqnMur1q9luTGyGsrtrjzQDoQ1blxeFuWgtEp7YciNWmKaAzzB6ZDJRt02EDwQ8kYD03WYSFwUzKrwxGWFhc//xWgPuekkChDSArKPXglVC+2TF63Jcqw2/EsyzTcuqeNDtbyjm784rp00nyGpOgQcUuWSa8eSGtlZjQyjWzLu0beoogUN22Dgd16BL0zCeejH2D2qdfp6gWeH4nwaM9y97i2iZdWJrAsXRzLkvksmrjvN79HBOk0UZekVbOaZsgdAY5mQgSO7jmB+u5vvu2y178li7gJ2btJfcxJSg/rFx6+5rUrUeSYKNxar9eTQU9IxdDgdk1Fg6cCo2swIeOX6B693z7UG+6z+m2/7SvZ3pLc8seBLwAAZvBIStBy8Rufcc+/fPjYYlmNSGKNVzuoHDMCf3DnmgK2VQZKsUDoYDjhPQsKfqEpy3G4g36bMOvjdCuVzn5zlM38QNqgLeb1pNZYNbhelD/ygc88fMc3U9kEIamjHg2kuGZed3NUiaTfAbcBIqpqXyvBmNEVjBuDD92CX6fHaPANWXwRjnTWTybDxvF4G/+4dqO/tXT+phvQ9f/G1X/askK11qLbsg216UBk6yvferxpLWGtQbihfdh/PdMsRKl9X5+5L7zrAzt+1mE99+9XKghtBKGYgYPrWpXlRjzrBuEIM0YMpFSy81ha1G5zyq9HAgC5zhgxUFmOw7g55TdmCPdyqCbeCyld1hTjXPvC0BCoJtvXRdWWLdesR2DVxcpXXk+T1JMiojGEpIiM865UnQV+7Q8zrTjnXAkOSiJTzJDIGI+9RGyYDG3TMn1PPhJeCmN6yuiYCyRi3BibktyIkB3FDwg89/2eq78/+H5uc1er1fGCG1+hV1+3/a0a1ocUbhitgxoQNx1g68fblrUhotCRy5U4cY8Svjpz39CfeyfukSvF4cvdIIxcjjLxE5RiYOvfyyA65jwQP/JYDTzjJg0rrgGT9fQ5CtigEY2x62c7/Fseyt7wi5Wwt+be9gKiRjx3ekkHag3AmeIMjRAiDcJCjlpYXLQe+o5dO9i+/8tpbYuQtNBYIFJE4uQD+37qL1BNW+WYwqH5DMkOinkkaK1B8o4E/+FbdPtkWqttPXbfXa/ZF9QiVxTxUw9h98v9wIIvxav5Qkhqxnt4+42DTzv2sRvHuUlChkQZQlJE7rP+tbSfZLrGDl2GEjVUSnoHtwdZVyXNeLukoDZ9vzhym7BfDjR+/QNXqlcziLC+Xb323xvfwjkIFbLKrHjimxAOHm+cVPfuL1/yno+oAxfNhWbAy9FlekMGKZOHvyMkA/OhB/doSHp6m77rSEIZZyzTWvv6IOTxDlJUShuG5T75hYu3/O04t0vIMChDSArHvuh53tf/yrE1eL2k76WM1qqUqoMmLp9HVUmnzmg/sWHetf0FCgf/65ZXhhjhqfu014L28aSB7SBc7nCtWmz0GSzGjn6AAAAKBy9xqGropBjcBxr1uWXM0dhGdNbmjac9/yWfKNE5hEyLab9OkAIKHrt9/l/d7EMY2PvTWmfSGwJCSCIjNwvj/rLxPzaufPPPdv2hAwIHzfpLFKrwnn+ClROJP8aOwscfvvuV16JdwBNH1g9i0pmqPfNpJFYPgK1LyZVl+o20DJzzb5RPq/TgJSdhsK8aLTRYpaeivGIgJA5NO0GKxqo886eC0ADWFHKBT90E9FlLem80+J5Px5SVx9h7r7i/l6PrHenDmGkehn9BKhSeS9dgzHwVDaX8q3/Qv+8f093u6Zvee9W7/9Lo8NBJd8V7Fb/P06nzVJYWVdJnfJT0m06o2Wp2cKwXoIaMliszZ32vwmm4FimcspznybQwL3hO744PMP+EabQb6Q1QietKSpnD0VDX3KmV+rc8zArPFTXdYOPvdMsatNZw8tusuwT+6dSiPOdMtHyy1yxXMyLRzNolyQROqNLst/5cL9uX8litljTWe+BlZ1n5rZoFKw997dDr3zbOTROyK2oQkmKJnvhi88feJ+pG6FVappt3OISQrXZuwqXScTTpu7asYfnbn1Mrx0ZY5666x++/8+XzWaw5Y0PtYRoBTKbKuCvo8gqoRs/QjUOXHr/5j8a7bUJ2QWlrUiSO41z3c8b8U6NeD9GuGJ7KafgHzWe4KuEFk6lz5Rf6szqdW5iOGbZB8xmWy3pPq/7/3PyjWJt9fnADrz/X1+pLEddvxvT6ROn9wqVsy/R3iApBr85ouL5yE8M2VlwtFXiIrsXMHluZCTtQm/ce/irA4Onj96Jz122Xvvsj6tBlLqyYkgk+z/WSNmse7xgwgzrboUE6bqLAlJSxaqjCYecPzGqvTbCSVA0FlXDQYdZzquDgA64hxVnUB2S1LVnzmhcs3PJ3mWydkJHQsz9SIJWrXuU/8IEwOlutVq3qihAluTshW2xrxlMX0wlTkO9Oasa1AK441gyuIy4cY3/n5N0QrgCkM9vEdlHrjKNOqPZ82KhFRoARNMKgoQ2tlzLaIolD3ftJiXSZtnm3I5Ya9Vr1ac+57hMP5h0RIeuoQUgKBGsH51/yu03sLARC+R0ZHcl8i9RQSdfgmn5UOYZssuUnNvIvTnPLRK1RK2VFoteNPOVD97tfCFsp1xfdKHzs7m+98mq/blVPn+HYVkZtCXUnqM7gbFqb0BoHLmmtv+xjBbcP9t4+yrTISjNWsGhKPnaxpw5LQ85BrSVOMdY2FQ2KIQVCVUZJgWizERi8g7V9DDzjfAaPAtAZM18pVQeNK+cX+4SfqpIWkmZrHbFwU3HLfL4XqYCpSAAiRIhoOnW2fMa+6lXB/X+f3UZP3vQnl/zhR007XNBVOwJZMXi3pWcqreUFNApWfjRGWZ4ED39UoQaNVDV00pWo0T9IE49hNNcDzYRVwdoKk3lHRMi6slwXyOSrHHp271/e7dUOmdjtRVyHYLqFG+NKVUl3Q3Uopkju6XStNUNUytLYBbQsZXgnb1f+afAWM92ubB8P6/c2IlN5aHe9yOG602lgJfmaaP7AnSXYP+MuEDJBsh2ZmnxewazjyUvERdANK0YTzO6jvNL+3r3Nt/w/eQdFyDl030aKonf8axe/9q/ZwpLnVmesbqhAdGfyCoa6ku5m1xu1oe5rNaqByx62S8Ytld/FqIVGNSAyZiCEArjqLopHviDbR/cez868o3fd/exnIxNuvcGV4pFV1e4yFG7S1LL8WvbYbO3XsSpgerAsXUOLFqdWg5fC2VicZohCNVLO9Wb3nzAe0WJ2vx3pq65ZvunGccZLyA4Kl4EhU6v+jLfivgORy20d+KzqiiXtFq5oQFxDUccUJi1W9DnY5ZYituGduGtQ4e6xJtOgQxoB1vb/yI3DbW/Tm/4Yc4+FAKAAGGNaoVMzOo+z+vnRE1+DKNtqn91vfvPwL7/HvfQ60MqOQs/FUPuiERlhsktq1rfcZakaqiGu2nCsjYVDYVIySFkbQyawYCvKWMJ9Fxh+JWhbUNEYNrq+qwTMnde645+yCY6QZAr4rJBMI/Pp17e/+Tdd5ti6Evl1yX0H6zKiMa6lU8wMBJlMBjIJGnSgQjMCGXkndO8sdLtj2PSx//b249ZSoDu9mmv1rIps1JfKchtbehuTgdQUHF7RMoHTpqJqmls81Bxri9V9MhJPvPfth9749rzjIgSAbt1IQTCtqz/zNx2tgWnLZg2v1WKyIgvYRySZ6RtzuKWr16id1NY6gW1e4m9oytI5rtwGJuoUgOpPQIm8v9s33GJuy0YgA2RKa71t3kmNSgOoDV+oRgCGGkEr1ArP1bDVDIH3/8MXGhlztKEMH3zRu/0Dsn1qPLuifsOvOA88VAGOPcG4HZinIzN2DGHWVUMZqIFL0vVk3WDY3p9uyK6hW84Em2IeYkxa1qatoZV0TGCsdIa4Zi9h19BYodflTNuh55+sSa9XqT7rQ0uVI5dlEDEhidENEykAPhPc+XFbyoaBUeh1AhFoWxiuz+28IyPFQmM7S2GIb2RQXmfAhCW7cCxTCCGRGU6lGrXsp/1E9MR3kq5kNO33/9fKZc9fMKyw1g1NtMBVmmoG7mLL5BAFvPMnJDu2RqZQ+cascR7TTlf3GGtbjfMBDuYdGiHUICQFYB66EqwLl5e6tkbLZlbFNZ26CUYk/bxDGxY1VAjZaOeD/9y/bk6R9f8Y98bBUxcqxTmXCgKpOo9+BXudPQWd0NkvfUqIuUpQFwFDaQirNF3c88po9TPJa8uQmfziVIspTSaw5PP1TaoOV5JJsK1Agd/1Dji2ifa9v/0zs897bt6hEUINQlIA2DzcfPUvNPY9CZntRSIIu0G3h/5KlZemQUh2k1KXzpiupJlvlyQ31AOR4bpNDlwVIkaBbxiGAGAqDB/4arT4RNIg9yJ47LsPvxojxZvVdqfTqUuZdYMh8eGfk7R6Ahbz05HkSjKRRFpdQ2NYyBsi5NIL7cCos2B55ZRVu+4jtyzd/om0NkHIyKjKKMmbOSNP3InXvdX3NI9CMNF0HBOQA3KbCckHX0hKPufUwJKkU1mVNKXvkaqSFsPq1zDU7sXN74FtScL+/0eMLZbJABSC1syRp3S1GT36HYBxVJTp879z69W/9ynnYE2yRtWotY0Wk1amN76IKtMb1rSMUDV0oOk7HyZTmqqhKq1BhxnL+IDzbSa0r8CImLKVUWVKyEpoOG5zfuWOLwNkWxuZkJ3Rk3KSM+v8q6FyEZfa1j1kEqQK/cBT6KHZEaUfQ0hdSXeTTgaP5jPMV9JDetPrNQ7443CYwRVoZNB95A7onQU4nXQNezRz3Qv4vktO6wBFG0Q1rdWmlQksSxfH4T/vpBflSqZ43y9lAndir4Sz5iwLXcc3gVeWODLenZW9x9/7nsvf9KtZb52QnZVmzAOZVHjh8+eecVAqYKZW6FgaUIba5FIjUyaAl3eAmYi791UxT02p39TOYtsStN/GBRG334nGfS9aa0RcH9SkEWMa4/3Vxq1ca8U40yKK7v8a2394L/GPhlVmvfbS+Vat3es6DIVK6YDb6VnGJBjthDa2pmAB28zlkNbxP6GkY6xEIbMdF6JOrxdxdp5tqpWlV338Kw996ct5R0emHT0RJzlD02xXr4zACcBYESAlN5XgyjdVzxY0hpCQ0kiS4tt+6Rklk6A1KqW0iIxrXqXOHkv69r277blY0dhd+t4MZ93izZtavAwSAM0iSKaVyQ2MAoaeB2csV7vWzGJknJg/+D113uwLfiTv6Mi0ozGEJE/mhc8N7/pg5ZpXIyjUYKHWKCUztOYauNzpeUVM15TiDadJxfSNOYzrepTw+930bgaI55bY1aS03WnVPyBRn9vROraSiAaAzd/FuUFFiAiI+tyq1n7XqOHcKpHh2oGPOgJm9+68GQH04j2ZfrQ41SOXX3TNDx6LlvZJHnI9+LQU814GauAvO2kMcW28rLusK2AD+97FvZ7t8G9DSH+MXN5t42FlHOfe1o5rv/eUwkkPDv495kVrxZgBGhGqoDVqwVDYUpqMtR78ltXY37nv9tyCI1OPMoQkT9HjX2ne8Hcimsx+oaRgJrwbXhH0Gxvpzbi+C8Z0JCSceUQuPDamTW4jjx/9zIvR5A3fMnIamkRIbujw3jsuveoFV5346H/JOxAy1ShDSHLGLn+54zaVSmlO55JfnZI+0S/eI9ms7fH7TVQFM8XtTgu9touxn1cdYr/pc6/fIm5U6MbfA7e5WFkCp6lP3QuiPULAe7d4561Pe9dn1fxhS7YVMxO9d4RkYD704KqhSVv+03e+SiY205vW+tNaz2qciY+AMStYdHHfb4DYALSf+oLFWz445pAIWUMZQpIbfvjZAFCxZpR3Nu9YSFnssTrouenQqCppdtbaaxpHKRy6q403Vb2IpHbcCwAAIABJREFUBY/epjvHwD+e+oaGd96TX/wsf6brOjnGkKl+bc/tS5yyzJdIdjO4Cz3qc0ve4a0qSWp+bb9tWWosPO1aje97/nM/Ob5ZcwjZonCD4Mn0MGaP2M/95ZB3Qjxs6JXBL9IJ77njXj+hVfvi7sno3msVG9RTVFFV0uwoANbvOKpXxwSmMVhre6FRrbWSDB79nGpeuseV79Fh4TzktJyIx4+ZTOf8k/mYt9jzZ7abzVpZxgoWLRNIVUPHI/T218yjpnVBGAV5x0KmFz3hJrkJ7r7ZqTph5CDSU7Fd0HyGu9khg5cglUeZw1T087B6w/GZ7rG6dn9fky372jfD8sMprnwE73sjnlhEI77fe1mOEsoEkmGgzukQLkkm8NwZcPsSo4Khac93eu3OPV8YY5SEbFLASxKZCsaBqwDACkLQLXcMg380G7yUXFxDMemNHemjhne5+I98GXvLeUcBABD02De+2kxrbcWcLqL4SrPftB68lMdqQ6z019Ai8I3llmo7jnrwt14799zX5B0OmVL0Yyb5EKfv3/eWv1nS6DrNllnNOxwy8ehcl7O9tKvj3uvfd4tYfHzk1aboxDHnkqvblDEjU6WAybkyUkaFRw2h1XM+uLT4lU/kHQ6ZUnSTRHJhus/6uUg0Q8BAWjNh/LQTqAYvaZnQzGGc6c4c7qGz3qYbfFxfhtpWkTsJZivuMOv/Twlaa93fjVqBVutlK9jm3KxSQhnApPZ4twKHhQYLIoyWrae/Spz9Xh6fbKvod4zwShbqiJkswkULVcfkqIMKr0pVvGl1NpzrFKwvcS+nhu6IMs4E6pglsYRdHIfrTr8HE9o1NE6PM65ExTeULS9958cyCJSQ3U3dDQopguo1r/K+fhPg2QNWhPpMh09sdT4yiSazQNEYbEn0rTX5du2Xi8xQYcS5YVtWVz9hS69raO/457V3CqCTbdBD69XYXT96sBeK2fbBlskbkknF/EjUebK5KMZpah4GEVJcDc+zTS6azoLqVq59/hWfOZ13RGQaUZVRkgOl4OBbblQBW46gYbqL2DAhpsponLgHk5Ob3Esk7va6iMNpyDTpFwvt/99+igkRYb0e6eDjUzM0pKGAsYCFrF1V9YDZ8q5b1cGLxhn8zk5dWbvkKy3J22q+yrrLVY2dqhm1usvVesMfXDcrr9/j9nZgfwaBAuZgBqLz2Ihi9xs9GNhJ/PyQ6ey3FjaAdXQ7OmjXF0xpR/R1kBzQ3TMZv4p3z8c9v7rsRo5R6Zi6ohbzDolMm6znM4xbP3UlPfe0ggOu/Xe/h+gOb9EyQsaF9Jh0HXNesGptKXKefIM+9dhYQh4OorClwy5c6XhaVzqOqzqsUTWqvp9XRMP3aOs3Balr6ITTOHghO4qbPzDpeuK6+O43FtzQnDPrx6Wc8RiPLVdMSIam60aEFIF98GKA/WG16kTQYZGMbNdK744jrTGHNLZwisYWDmPgV6/iq5KmNLhkQjG99aZIo0Y2aDQUogZAzSQyjb6JBoaVFd1d+fonYeVs3p9jq9YXP/PNH+rNMKduoxSs5TQiT0Z8Ob/qlwkeQJQlPVhAg6dvT2/9SccKZh0PSdeiugjM4xDp/cyCSPNIPv0DZ/IOikwd6jJKxi04de8Fb/3TVlv7rjEPsGQ0ut4SFneUzUShrqS72aHN3/+noRp1cc+O4++547Zb7jbk9tnkd33lxkN0/S+aA3Jmgoj8SMmZur+08o/Sz3k++u2WF+8BdkP04aAL7YoJh8JIozujmJ/x97jHtRc2B1iW81LR4tRlOW0U7CFEXNJPJ6zUk/RTNXTYk5dE0ItCZRkdFdYjI0q4DkL2iucdAJlG/KrXdo2oZmDAO6zdhrqLMusrWFqPR2OevRbswpZUXKZLx3QymuKHzUM2bwYvyXtnlfu4AtQbG3gbP/z25t8O/zNCZUkF3BBaGRbUV5aleV546ouZxT2qW7902a//pXnJ4Url/G7Q6rhqWYQuqyud7e2dBpY0J8T0phdRBmkYY8gEFmxFGSvaMZfTfvOc45pZXqVaw8BntYB3Vha+2376RfCFW/MJiEwlyhCSsTIvel702O1c8dlKfdEP0DLPt8WZSNOBSEqClT1rN37D5wm3v+VcERoLse0L1lCGjMB/4p8fcPcXYj767Zrf/0PITc87UVUN2TbbzR5f6kV23mFttjElWLR78iIrWiaQTAh9eL4jPdXuVUNbSNNo3P9TLwLrZXmHRaYLXQvIWFVf/KvWhd+/0vOcitTIGr1Oi80yU6HKaRh11sMCM5qmaVyS3gAVtu9ZZvby/W449lTSHVfy4woEAPQLja6lAdeG1W3vNaq5DqRVQ8WjxWWzKW/+BWBPBXV3HrHv7rpPnmBoseiMzfYvWGZNKgnpZAj7HRE2pplXj4NdzmMF/2GWpqGVUpypfdqynAaK1oMmpf2W1qcyI7NbieoeWwaYsz0VNkLwHv/mh86++20pbYGQ3U1skQxSRPYF0mqi2avYTIU86NkRuNywGGBqE+wSUhpluZsrABZZKhBKhOxgMzhlPvlVhW0NAsDSlz+ttG83D54xLWWHRjR4zokRbCkJSQcQIRNA2hK0jJhwG9V2L+jaiNXa2Xe/jf3Wb+QdGpki1CAk41OZv9D/wvsWl1ZAByYzbauKti0gDDw/t3L8aVUlnVDxVTQJ2Ytzw68Qtwx+GzyMUAV1w7aNcKVthQuf/2NsHc8n6uF4j9/3jf/jsHeMz8ISBoLhbFprVsA2LkOeJ4uTHsyv2mpCWg9eCMmAkqEMo6DOjKWWdGsMVNDyTHlmtnFF3qGRKUJFZcj4RK2jF776d3D+MgsCEQaSgdAtjbpiOCo2HRg3IWzWUtpC0brKZGz6WopxZSaG/N77iXDUoAD19gWBx5ex2Mt2c3cuTgZbmn8DXoqIAJGlIHLRDnV4982ytwJKjCHK0XTuvv3q3/kUv/iQ1tLFucBaQJVslLSK7TGR7BfWrxxDyi/mPFO0nzvq2NNVPuEMLu+VdD1Z72YLeU1bvW6nzixLocdljRnn3S16Qbf9D58ByG0iUzJVKENIxoVdDwBd62BrabnX6wGAaQAyprXc8QlxyTOHNJ8hzWe4Cc1nCLCa91tLBm75n9tVTGNJhTzAOjzmXvUDILzxxDky0TtTdXmgeyDDjhih7ZrTeW/KFG3+wFhKD17IjsqSkQ4NaxFUw57xmVqqoAFKtlcCVT/+K2/h7/jVvKMj04IuMGRMzEPPRLstnJ5t+tx0gLkqZChrXDuSuiCWDXUl3c0ON/QJ7uwHzvmx49QVk9mQ8HzWsJuho45//L26tZB3OLsLnnjgi6+YNeyDPcvcJ2tZb47pwct29IBmo+I1GEoypfyg7gw5dodBjQOXpOvJupZB3Lcb9SIbsWtZSohGNxQS2FxF22Drh2dmLk5v+4TspHgnGjKZZq1r3lG5pBFWQw6WxgoAqCjk3NRaK1RJ+75gXkkSqko6EqSH2Vvt7YtOfFNfsOMKVf+2e63K6Npd+PbbcUQEHfoITuC1PnUjgABYGnO8I7j0xo/OXP1CiDzLcYRM9n2pbIYFrh01WY8qLGASZrCM40y89oL9TGMVbShEwaqGxm9g8BYakdWqh37HdMFvGrzr8ZVZpSS6Ybd1qProCw5kHRchMAFPjkk54I+E33ln2GQoZlhUCwSX3ON8hYPHQGqGyTMhhJQanXsTULzOImlavnPVdWWZPjdaPt2rdBx7BrpmumveMosgnSYJKbWWGaDfRYsxg58w/K5bufC0ngtDEPvFZ++G739H3gGSqUA3JWQs9AfAPOu0a8CFMAKL+SwyFDQjMCUCUyppD5SYHlLlGVsYZ0LHHNLYwkH20KVz01GP68tQ2ypAV1LNEDgCV8Ck3mna+n76kIllH2YWbv5/EQOAM2MMdHS9J+67/+WXGJ7XrcQ2CLdUDd1QPnSw7R1BE3Vp26Er6WiK1+UyRsZVQ/fW1XD0Lo6ZK1jX0LRkPs1V4uMNNVRtFUgARzgmtM80IEDDgd5R9VL44jtTDI2QOFRllGTOAotd/m+dV54UzMOMD7n8yq5lfC0v/zV4oOLdAeVlL9+vXt+RiVdTiONqx5+tRkSLqxnssf2Xdb/xofGFtTe9u7565BffY151NZodpqyBr0laBJR+L5OniO3ANQUObZNCnMbSp9zovIMtedFLe7f9bd6xkMlX+swDKbiDcNC65jn2d98bBUKz7B9A5JVho/kMR0KZQ7IrrfVZMePqRTNMbYb38Tj6p29vactQ+yc18180WWcs08osrQemIIs4J1VpMtIp8bXZRfPQ/sozrqdeoyRzdEEimat+50HvPe+uBTP7gkbW24obi5h5FxGyI6pKups9duk8NxeFRjVwiV9/wbqSxkw+YTL5yEf/VLVOjj+evai94Ecfes35TFtJH3wMXzWUFNvgupKF6yNakq6haVUTTS2ejGvCci+qG/JZ57/8mx+jXqMkc9RllGTOf/H1fPECr95aMbmZW84s5sKcdasw9kKb9KoRc+kp3jU7FXEN+8LcQI1N3PfLBv2Tjm14a0j4SGSsx9WWn+H2NqGjPWPfkdY3PwvQG2NcexUeffCKGz9mnjcPKlkbu2jHeVmSMGndoKf2aVVJnkQW7YCLU7Bdl/Vuq3De9eq9hjp4xQuP33pTxlsj044yhCRb3cPXeLe+z2zua0RWXTp5h0OKhTKHu5nS+Qw3HgNa60p4mvkrAGfHFkBaopWTyozt6UqZwOmEOqdUfEkyged6PGxfEkqrZ1Dcg4asu7CuyCo3l/1ei1/7vFd8vkzPwkgZUYOQZOzYV+B1H+R+twu+jKhBmDYam0SGMLijVQFvBLfp310d+/SfRce+lXcso/CO3vetV1yadxTDKs0YrYyrho7BakOMztUklmudMp16V2OtYbV8mXc4ZMKVY0InUlomQDRbMbSousLqVpasiJI/hKSIlWc262QQN05HccY7UbKKMn0n//qPr3jXJ/OOghQUapputwTyeiaioBou6zkXn1gO4f5bcomBTA96OkWy1HwaQDOIWggQmNJUzbwD2ormMyymuK6kVJV0kFzmM1w10nGrVvttnftaz02+x1AzMEyu/B5wi2MIDgCgVtZVryrX6MGN6te8kCmT44qpHKYi0LYIe44FWtED2d0Uev7ADRJ2cdxc8CkD1DW0cOMNRxFpVTVhAfmMPnv/f3jt/pe9Lu+IyCQrzQ0iKaXlO+BlH7fAqaqecKPIezTvgAghcRLdiK1eO1J90KB0JLUhQda0AGA2dC3Q7Y/9Uqnv7lBzxQLPPrAsV4RjAe+5TfS7rCmn/UkGIWQHVihMu14RZ04je9Ft/tl//mjeEZFJRhckkiH72l+oXPGCJcu3Q3CwoStK+iLvoIYS+yw1r6kF07rnLvnUiEm77kxffY49fr+rh5lKuuOSbVdvq4+rtWYAoAVYTEWWCX5bGA3TXhGL5qO3+Xd+MGE8xXLdJ84yIXXFsFrYq/Zc2N8KVaV2QvszucRTxGGBA2UcZ+K1x8VTtH6fBUsGxh1vac0YkdanjY0zpfUnpRw7arXdmonhPugsLnz9A4/+ya/lFAuZfJQhJFlxnvGG4M73MstqSGRNx8dK5Ad5BzUsms+wmKgq6W7GM59h6ttdZaLfY9yKImlVzKoKju/XuuytQQAwImlqZNGicBlXs0IuNB3eFtW84yIJJS/XSyC9+QOzvv5mPa9gUobnA9S0sgz/DJuHR//k1xrP+6H8wiETjhqEJCtG7VDzZ/9O+YHPmqzD7OCYrtTyDmrvcirHn9aYw5KPLUyKxhzuZuBXr+Ib3tuH+KR5/HPJ0RYycCzo2dGZirX/1MffYe6/Mq3154UDhqY4W53jJgrxBIMZT67UIzPvuIoi6xvxpA2JojUMyHSyDKuG0gs7C67gHf7Um+9p3f65vIMiE2tibwRJ7tBqGCvhUrUTssAyzYY5B164qXDFUEUsCNkdZQ53k918hjsXxhj2AUr/y7LVCtcNwXqG6YbGzHEhAFais48k/rgFc9sbDqBmFy2Gp8NWzbpYA/IokEYn6+2WZRqJosWp1eClcApWPKYsmcCyTFvS0X7HbqNtV2HGjDhGjSM//668gyITixqEJBuHn9X+p9+R2jBDrOqmr70lbjhQysLxU2HKModkNJtv9NJvePd6ULN8YPW2CCKu9vEQAACitNafo86tn4ikbtYOm2opiDxRMStRJe+gxq1omUCSrqI17Msibr9pGdjQrApjUZ0StjvjqKN/9h8aL/zhvOMlk4lu+Eg2jn0drv+r0LDqzvky+i6L6gaLWjZNTE9IMQ13LdjUUTn9jAnfd7Hf6igdWJZVC04t3Pwrxv7LUt9KLrpHH/zSmw7ppe+0DYtZNvcdn03d9ZcaDIQMz4SL3WgZPW/eqrRUZzmoPOXvH2h96bN5x0UmE887ADKJbJtd95OVA08WzLWDJ3q8YXMJEGklWdwhhzh4Kc2twuBn35l/gNguQ2k9do95pl+wKnZx4rqS6pjyENPdx3TjVxxbZnfzobWag9l0dLBdf7+D/wFRCi90+Fxggzzq49Xh/R9UvcU9fqqCWLn39ivf+eHakadLveAqu8sYGCFT6bQJp61NldqnVSVJKaIefCbOS0r7LfM9XfLfhaOiroU6VAuGs9/2VEs1zBrMnd+64zaAMO/oyKSZuieUZAyMuWeq+z/clWc187Q5a/K6UiAFY3Jf3qERQrI2eubQZLIaBW1DCeM81CetJ78xxbByN/OUl8m2tPnhjmk7FV3t0sT0hJBYAQS+77uuU2dWty3cWqMVwdE//f0r3/iLeYdGJhBdkEj6xIkvN170/qByAPBoJ/QYNLX2NFeWoYScsqR03DC8rOcDjFs/DQvcUVwB0umbzzAfXe1WTNf2jq9Y58vPvt2YvyLviNKkQ60dJltdp9pr92zHdgCSzctamkxgWeIkE6Fo8wfGSfr71QY62vHDgClw7Ho79JjrvOZDn33w9q9lFCGZZnR3SNJm1Ixn/Hx0EdPqCYykiqo2sxmratkUYfJZmEtelZSmrSomqkq6m3TmM1z9j+3LYI4MtPDAnbd5F/wlceKuvX+S4vj6m/czrvw6k5zXjLkl5ucd0fQoyUQSVDV0tDjL8e0mJiLJtaEtQ0d+qHSlZkq/9wgegJnkt1KE7IYahCRl1gVXins/4SmJXXTUQZu5iJ7UgTZ8ZUzIcKAU5FXVk+YzHAnNZ7ibpPMZDlYx+YrgGHVqYsF5yg+CmLgmkwlNpnXYsYRImB0sotJUDVV68EJ2REWARpPWfnO5HQUBM027Zocq8P1WnWsFtft++41Peh31GiUpm7L+eyR7cvnE/je+Hd1DVaW0oZVa1KCFbljANIMRHi4OpCGm1kkqax+DuFotuRU0SGnPlaTYTJykDZjSHG+p2aEJMKgaTdzLYw6TnjLrru1za/mDv8rtGdk6kfXnGTMDmpFj8flL2pwfxCDUJb8EF65tEHPAFS7MYhWJQT24qlvS9WS9myc1ExiHS2Y5RqCw53dsm1togghA8qdcf8NSz1/+ymfyDpBMlAn+KZHcsDf/lcuWUdZ8Pe/IFrNZwExXtnvSMrO+/yn5Q1/MoJT/ULJO7mU9ZjJjcQ93aWzhNsN90TG/U1urgIGKRPdjvwXQBeilGVohXAwAT//cN8Ko68gaxvwuSpOEyTjOxGsvy2mmaA/OUtpvVDW0L63fr6HMEDtMN5gV6chHXZM8sCU7bdvNqHPnG4+kshVC+ia2ixfJBTvvUgCo81nuXwJ2TVRWmNOSWgWR4jKyOBUxImSy7ema4rFaqMO6ROfKFwJU04qpUA7c8GYfVmqsWo2ivGMhhBSXZAq5NjTnCplQjNfbyDSIuozaD99z6Pq35R0gmSjUICRpUicfdn7yv0S6J+0VHUXVAKVqAECVRT6v6uwHzZS9iIsGNnDJfMNpjS2cUHFdSWls4SBDFKHhur8g0/0jjYFioLjoBGz25Cd/wYAI4MwYYx6b7yno3vdDl/A2P1OrlmaMltaDl7RWv6exgqMXO8lcwYrEpCXrIjFZH29pyfr3q0GicgTvRUpK0xF6oaF0xDjT4eyhK49/7I8AmmltixBqEJIUmQBQ92ZBUyaQEBJvtQqRhrVyRAyAmaY8qLv1l/xa54FP5x1iVs6+/48u/L/e4zVPcTiZdyyToPzNK0KSMSRr2azf/5yQtFCDkKSGX3wdQDM05jyeW23AiZ1OoOxVPcsef0KUOUyqPxnFgmw4csH0W3mHk63H//vbw7BW7z0p70C2yj7jkU5maT0wBVnEOalKk5EumKLtt8ieh0b98hvf96Q3/EZeMZDJM7E3ZGT8sHGk+pPvgfAUx+JlCGk+Q5KBiX0AkZrd5zPceBi7nD9283+SK8fGHeZ4zb/g9ad/9FpudPMOpPgG15UsXB/RknQNTWtewdTimbKqoWmRK0et7tKFF11jXnQ471jI5KCfHklLFaBrvvlmY6ZnLBuKybzjGU7Zq5LGhZ/X8L+0kn4lH76Y9OHx9FUrXf9+1/YVarBQRifvb33hzwAmubE0D/P7bvwL4+lPs3tO3rFsllLSI7XDuSyngeK1/QYrWDXRuBvQoiUtixYPNxxTLvvmgTtfM5mVt0guKENI0lG56PsADkjOm0t+uzzzW5Y981b2+CcVZQ5HoBFc/yj6S5PdGgSAM3AGn35tWJ7zZNGg3q1qUWYbLkUm8FwP7O1LQml18Y2djrRgXTGLFk8cpfViaDFvBQCaz3tN3uGQCUENQpKSi19w0VvfOcdaK0a9WZ77HLpxL6gpG3NI+p745P8fPvGNvKMYBwnM9fM7UZakiuMOVhtidE4gU0cpaNrAuHvth5caz6EGIUkHnUxJOtCyHjPOCwNEhS3WzjscQkiRxY0tbHvH7887tnF48AcOcVmeJ2dFVcDkHNmuLJm3slCA2uvZLAwjaTf25R0OmRDUICQpqH7fa7r/63ebXlfzilaBoxt5R7RXZe+KSfMZFhPNZ9inGArD5tLtMsERQmZayEGcsJ78IwBh3tGNi0YlTeBtO7KRSR7ZoQxtGyTY6W2iyPMHbpCwi6NGtbaMHv0OqGtouvMKFkzZG6iB9kR15rQU+xh89/97TfX5r8w7IjIJqEFIUqBmjhy84S98A41ggXFHCr/0LSpCSGaY8iBCxG5dhlprCwMlZeejvwl6alqDAFpzNMKAzy2aPalRNMKKE/Z8oxmW5saUEDJ+81JaojYnOwt2dOnHH+ne9pm8IyKTgBqEJAWGPbOIjtCWduqeBrd4s04kNbFjC8s+Nq/s8Sc0qZlDQ6PDA0CLc7OtJcPZNlfuM98a3vf5vEMbn2+9rskUm/GFZbI5z+l5bUce6QmrU1/IO7TMlH/sItlB2TNvZdHjblefEHiB3WFzvcqT3vmhvCMik2Bib6TI2NSe/Pr2P71rPgJUPR8ti7u9aKe+PuXOHNJ8hiQDE/sAIobkXIqaNFpC1muOLbqPn2cI746/yTuucTOkiqSshisLtpjRB1bE8fNcoy3dvOPKDJ2ARlOSrqE0r+B4COkJ41DIujMGD6ty9snPe8bHj+YdFCk9ahCSvcLmofPe+IEz6oRpzrvKs+RJzet5B0USyjrzFje2MK0xh5Q5LFXmUOqKb/hRVGGyZQWnGm7z2E0/7154Xd5xjZvSWvDoTGUWLRTiCWRNT640hJV0PVnfiCdtSFDDgBTBpGYsK+acJU4oQ5w2gHcCMEGVfEZlUgQTe8NExgbNqm/KiF/k61BDxISoGiLvoMat7A++yx7/pJrUzKEDnog4OhqZFcD+M0zWXv7r3uNTMeHERl97w0ENfN9irxf2lHGoAmYUdpWZeBrGot34ajV4KZyCFY9BjQOXpOvJvEgMdf0dj5gHnZHsCAOZ0WWd5r7qASF15zu35R0rKT1qEJI9sa6+vnXru1mnN2v7FYQVYWrDiMIpqgzRN6k37qU3ZZnDsvC74VylDarekaHg1X3giWAl76Dy0fnCJ5hpufZ8zfZavSVoVBzfjHtx0TKBJF1Fa9iXxbTtNyalw12rPQszZ4+utLgQD73jTef/2K/nHRcpN7oxInvTPFx7/d8E87Nh1zWDY6bJbbPWhVr8PGOEkGnHGwdY0PG7S1XHnhG90x/4Zb5yLO+g8uEde+j215+nw/u7gkGjytu8Z8RW5Zq2G19CyHbCOl90ly0wXPSNmqtw5hk3n3QvvDLvuEi50cS4ZA+cWXbpi2FmnxZOXS512HzV0KEOBQQGYDqjTkqeY9NQ9o81+HvBrNMGsV25UtpzBZxSLIm4jLSO6f1buONNdjo4U3NNQzzesg5X9l3V+eqf5x1TPlr33HbZu25q7H+6DlcsVm3Z1qwIRMadC1I7+lVJUoqoizWoMaX9lvmepmcN46FZoty/oSJpcisM2pWGqc4ausJNCBaWFm/9XwC9cQZOJgllbMjonH2XRV/+b74UaEvlGmjIMBQitB1o5h0aIaS4DMuypQzDhmAHZj2QwdR1Mt9Itlo9e9GdvTjUYBthgFHeERFCiiswZA+VqFoyEuixKpid5eChd/70hW+4Ie/QSIlRg5CMzj/29fNe9luV6pEw0EtBgGZo2BEyH1Qr79CKYmLHFpZ9bF7Z40+oaFVJl3qOssOqeryn7JM3/7R67I7cQimA7hP3fueVV4QnW3N6RfcQ9QwV7SDjVJauyGWJM2u2F9YURwRTaNtsdFWEszMv/LvPGkeuzjs0UmLln0Gc5Mayr7vB238hREsmC0NucUAhDaVMk3EJQTobSVpgrSRdAeM+VknCj49/vGGQLeKeNRTtnumgIQPf8ZyKFhqA+8emukF4+qb/+pT//GGY650RjsUDDFnxfkhxARXruCraCTSuQKhOuN+y/lSFO9wmVUrPHFXN9jxPMGCIoWSMC9aNlq2LeOMYwCGA46lshUybiX0iTrLmXnhN8I2MB0BWAAAgAElEQVQPrYQe+AsVkzncQc2F5MikZlPdAWwYlDkcUVrzFsahzOFYMoeG6i3zTl0zV1nGU36ArkSid7pa7wnWwcjtgZ/WalOrGqr04IXsiDJao6H9tjM/FBXLdQ2HoeqAJw1R44Ip97vv/MVLXv8TeUdHymraL8NkZN7j3zjylnfWKw3XsGVkQCiY0mgxw/Qi7OQdXVmVfT7AssdPxuMsN0270ROi/eEfZ1oCLOYdUc4Wv/Tpf/n+y5tQE4a0WY5jsEsypTzNHzhanOX4dssv4weLrjIcJUUr5IC1RiVA7GgPIXzFBz6lL7oqra2QaUNdRsnojqnzLe84MB4x6fBQKy7B4RAxcBAHJwnpId/OYpOEtN92FpckTOsaHLeeFJOTWSpaV1IncgMeMcbcl73d++f35BJDoZz5l38AACFa3HfFDPIgpwLglPQbSVmua2WJk+xMuKwbdix7BlggltoW1msz+1XLe6hyUfN583lHR8qKMoRkFMbBqwCg4roWmwVzPtBVZAowUCzg4EFMa5AQQgBAuEuW73m8rQIqQHXO4d/841NNwRt2bdnJOxZCSHFZnm9xxZShhJ516lxVjoZhx5Z1wTuP3HfBG34l7wBJKVFnATICB8CfveEvQ8mRJ3umoPNKqBSs2EBScU92S/6xACGnAyKtzGFJMoRJxR1vLKXjzYcqY6eDv/0lfs2r5Hf+Pp2VltyFtzww16nZvgic/Vx0E713b18Lrp1GCpdBKssJLuFpgOYP7Cvc8Rb7zcT13MknpxK337gGG9u3//jlY46HTAbKEJIRSIBZP7SYTQ8UCCGJHVQL88Kwn/nT1Bpc8/hrf6h1173aaNjdsWZNy9LmIiR75R5lqVnUCep5R0HKihqEJDHnyHMBluqW8v25pO+d2OqaGZvY/Vb2qp5ljz+htKqSPoHWCePy4I73ZRBjiT3yez97wm/KSmwTLa2iI+tlGxVQFcfhUfXL0dB+Gw/G97XnKk+68bMHf/zf5B0LKZ/y31CScdtvP/UHZp/yowEPOozZKdUlyq0raZySPDanrqQjyrrNRl1Jd+QbTnTTm/DIi/XRW1MIazI0L268+m0Hn/ks57KrLDH4+En+s465xBeteExZTlgp/azT+rSxs0MWrK1VtHhSk/F1JOl+E12PzWmmOIrGnT82m1FUZFJRg5AkVQGo2D/xZ5bTgcjRINJZa9wEvnldSMpygxKnaDd8CcXu/qwbWtRQ3FHS32NcQ9FGr3Pycf+W/5xCTJPlug8vOVbH03Y6qyvL4VaW8y01CEdStHhSU7AGIZqApsD2+cCXvvnj+zOKikyqie3aRDJiHrgc4KwwQ9tjfhAz69wIE88VbF6psiv7fIBlj5/srOvPor+SdxRFxAXrLVyQ9VZQMwCWww1AWc7zKmZJKK0uvnEj24rWFbNo8aSmJEMDjGCmu7zE8RRq/vSbF/IOh5QMzUNIkolO37X/TR9sGZZnKidQWZ/qizZ/WlnQfIYjovkMd5TO71GD9/E3GVe9IZ2YJkvkNaC+PIYN9VthGll50oiETKa07mcsvWQ656MCZSg1wthuMt0K94SDFJzznP9zxXJnW13eWxDczTscQkjZIFgv+G1x/0fyjqOIvvXTaLtybJsrYHKObDexmbeiKUkmMM6SVWFsWeuulNy7h4Znk2RKc6CTIjCveYP/1T+v6DM9a06jhRg/WVbZu5JOaJ/Fsn8sDWzgkvmGUQ1eCADEV8GVTPhMG7bRBqW0F5mGgWH75MXKSzbP3lThjM3VnYA5tuagwpBJyW1be8KIfwCXsIujRrW2ZPERqGvoaF1Dy4IaqKNJbb/FXI+EXrZk8ySv1GHlwd++vv68H83gQ5CJRQ1CkoDRuLD65g+ajNvh8chsYODnHREhpLgk71mqgUvBLK9qVoMIfHDh1peIo1/PO7Ticm1jwYtCI/JVO6xW9nXdSIWhjRW/k3dohJDiampgqnZ+tNDh6uoPn2jf/qm8IyJlQg1CkgB3m5Y0FtjByK0aosXMRl6RTOy8fBmb2P1W8q4+pY8/RsOf42i0qgaIRWkIhYtcSACAM7fkHFmB/dPLG5WIN3o+48rsRD03sC0d9KrKqYDWgxcyESjzRv43e3ceJslVHYj+nHtvbLnU3t1qqVstCUmAkFiFhABjzBvGGxgEiM1mMcYeL8/jwQv2jHe28e55fn72Z7N4bLNvAmzGNuNnG7GaRQiQEJtQSy2pt9pyjfXeM39kVXdVd0Z1Z3VERkTm+X3xQak6K/JkRGRE3Dj3nnshUHt9WkmsWhIsWol1+W9+uOiIWJVU/oaDjY336Bd3//k3ZM12+ycCjZG9YOLR+31xV1KWA94t5dQWmsTaDHR8e0YBNWM3hjl1DZeTOYfuJz78cNgf2zVQ3poImwH20Vda8IG+SxXpGppWTZRlrCoP4EYcqhCA33cXTKyWRBtse+6RN974nrVxxssqrXxfAFZWwpiFl30o6X3H2LMe6HrUjpVbdFBnmtgMWM4mdrvlfeHPe2xhVW5cUiiL+rIVO0u11qprGrFzUfj+5xJXtz4X88B33vkCEetIGN3oR92aezCZX0eeqIONFWcsd6eo7eZZs068QopOKEsGD9joxJjRTNFsCsiiA2CVEZ+4a+Hq55+sSZ3Ua0o7cV8rlV1vpZRno6M2SVInbMoozFHfuCpNqpTwKeWfqvKx0ndL3gdEzluohPU5hmnGc4Edh5GW9X0UrmmzLvY9Jv78nxcdV9mduOvjB1774Yv2XxxLT3hCrCehFdnSJlOy/Y5UqpQWEiIMWUZdT+5bmdtU40GiGjlXNJn0eJJJGFkxSCcJxWJjqWP8/p2fWv34e/IImU2eyjxpZsWSB68HgNWwsyCsOWW6JumKOiZR0XExVkpclRQAAFrJyVm96IpZ6n6nX1uIoWb8dtFBVYN78Ol3feFAoI/2A5KuMNJ1Qy4qcw6c0dod3m67U7bt1lfaVvNWgJ6TrK2sW3H8rdc97+ALXlNUPKxauEHIzos69KTaS94mF2uJ72DQQRnVVdKxLik6Lpavie1KysZCNRD6fqJ7onFRs/1g9L7/rB+4veigquHkQzMXP3x1MbmsYRxCPxayK2aLDooxVmLiUtFZRaVtGZnakm/rJ7/7iHXg4UWHxaqBG4TsPDgHyNsjlRtrocyxnm3VoNZP0E1Wc3/rjIoooBi+5G5Ci0BU/WNVfj7DiowtlGHQ82BW1zpx3PfmAdrmgS8WHVQ1tP47xlfbfftEUkMB6PTb5FqFRVO2eQUrUiSGq8KOSUXOh6MipKFL2uvd4GTU9CBI+nqmKR5yo3pXSNk4AHDZGKNmVVX5LwwbA3fP/ui2N3djksoW3owQIgxDY4zFtSEYY+lks0H9eKXe3atFfOXd4obvBQiLDqoylj/zgdu//4AbNGIQ0HSEP3VdjhmbKCM+EETCoUva65O6CvuhZVkRmBN+JIWNPn7rDf/3/he/KJ/PwyYKNwjZuQUPfP6i7/tPbmMmiqJWYASBrSyhFCRx0aFdKO4SuTu83UqqZE/K263+XG3J68SrtK5f9yby+kVFUkXra/eCg306YmLX0kaJ0af5YWNRtrFkaaoSZ9lUZbtRuzsrXFCoouRie9ENYt2oPeFDH3S41yg7D1xllJ2LVXOe+Ao49JQ4iixIAISFZIxGoSj/YmzpuCppKZXuEjmq4R8g/90ymVVJbZjzzX3JzJznLSWdi83tXO9uFLd9fP+ffWR25pqabhzDZEb1tcm51yhXDd0Vnj9wTKasauiotEDQoIE0GHAco0zY7qG1ZNYfWv239+X97qzqyvdFYiVTv/T63vJhuPktTnii0WjECQBAnGhh2QCARhcc3xmyOuem9MrI/aFgRaYTSJMWfgkfpo4kdbfkXTg07+RezvFLZfs+mZqf/M2LAeq5vtdEOnB37+Qj5GM+ugp6vh/3bZHz+bZs55+MDs9pm0ai6ufbVAV1dhh5exZUUFoYRUTSljr021HgNt1Zo6Kw/sUfmVl82c+t/O3/U0hUrCq4yyg7h979X7j8+17b9FTDsrQmE4UIBq2ahaCT8l11sqp2UlQRhYpXa0kLv+Ifq/LxF0WbviODWX8WoA5wc9HhVM/JR8hDn/ZXYoXRSk1lN2i7ZEViRh0rlSbvIjGcCRyTgrq+V6VrKBocujgxSoW+H9sG9jeayojVuN1X8dUf+46795qio2Zlxw1Cdm4n1MG4vRKh9MkRAghEbBCSQHCPY8ZyVfX5DLHrALQB1BW/DHBr0dFUT4hu8OEP7VW1NU94ycTOQ1iVG/GqxMmmU8eiGEJbOH0JLQq0tues2QO9yDk65z77+WXLY7Oy4QYh24l98AYACGccVwE6zRAcDYjCIiGliQRV58aUFYqL0EynxCxG1IxvfX7ynd8tOpaqMke+9ZlnNxYid1k0i46FMXYhRsthp2UC015vAwgTIykgMZtYs313HeR9s1HTCu757sX9X2/l86HYhOAbMraT2lN/pnbwpljOaWoXHUs+MuolVVjTuGxjfkaU9nC94h8LMKvBT6PKqldVRklIjFtQuzT84pejr90D9DeZrHMKXfpTf+j8x5+dh+WERuw1WpUv0oiH27SNCUxTvuRk6mDrlJdXZExgmpw7a+zQ9huJihU1/CPH7jjxUz+UyQrZROIMIdsJeot9FfcCv+hAGGPVE7qHcO1wdNebgf6l6Fgq7P4//4U91v2ka0UHwtjOeJRlGSXK9NA98VM/JH7zF4uOhZUXNwhZKuvAE3r/+3VK7nObPJf0OXCXyN3h7VZSGRV18CBs/91/kYuLecQ4PQ6+9D+vff1ebdaKDuRC8Ri83eHtNtny3r+kjdULLDo2u3B1Vutkk4cbhCxV/MAXZ295sxIn/f7kNgi5KinLQd7VDqsijNsAc3rlGwAPFB1LhR1555/AVY+IGwdTX1GyqqFpsqommlk8nM+aaJk1tHIu7iVIDF2yWr+thELvkR8lfHBiC1OxC8cNQpYCvwsAuu7FSWR5XsMgDF3YzjgDtjvV325i+JJ3OfW8q5KOGP8+cdK79qkAbmYBTKtEyRbdWXQUjLHqiQyGtUifmFv9vZ8vOhZWXtwgZCnoE2D1mtQLY3saa4ly5rBQPJ/hZLjvXf8VW/cBrBcdSOWFcGI2XqxKJhBMyjKirDLtaZnAsnXFLFs8mSloXsGR5fxAbdSqoVmxBemuqHt9Sd3mT/1S3m/HKmpy70TYhbGvfq33pCcAEJLT0ZEj9NCXiepfqkbDVUkLlXZvVPGPNaFVSRG673xFNutnAI+/9XjRIZy3jA7nrL7WaTc6ZWtrlS2ezOTc9stsu1WkauioHOX63bVGbcY3/bUDjcNPXSgkDFZy5XtCw0rhedE3f0+A03K06EWOExcdD2MAk9CVdLrY1z236BAmx9qnPlJ0CFU1sZm3sqlKJnDK+H4Yz1tt6sW0IL8h4df4yGdD8BeVDfVBgMCQXw9wvW5haKW9burGFmbU5w/F8CV3E9pncejnqFDakEAMXXJ/46y6SBlHGhMrLzRiBkiIBoXE6cFsBUe+cfvN+8jz4sAJTW8f1pIkESYMlV1YTCXrGloV3EDdnaoUiSmqa2hqPODaYa3RR8tK7rl3ZmmJ+/CzIWTRAbAyUg//pdrN/U4cLEaJY2HXTpQe7VxW+RbGqLL6wEXdEkzKDsPU/6gkrMgBQWhJsRxbge3PRaKbYKdO2l56VO/zb80pvinUvevTh974PqtpLzodFO5q6GDNSE+7/ZoRSTExcROGbVORc27ODwsLLJw7lIJVbcWhpbUTLjXXw2/e3vv0O4sOipUOZwjZWR51TfKN3090WIfFYy6uazXf7xUd07TgLpG7c3pDCd5uBfCkbJt9M8ES2n7gHHAjVadZjDpFxzVporXjHXfPGhxcpkXbCkLTDvueBQW1BsuHM29snKpyvJG9vw8HmgFRO2jO7D/+Bz/4uFt+s+igWOlwg5Cd5a6vwW//Vi1QNenX/Ll5a2FVzRYdU+lxVdLSqHj421SlK51PSR3WehhaSkN0IrAuO/z+l1C7OkVQKsJ/8PDhZ+8zBhYwIdNddB6GZiUWKvc3rkjXUJ5XcEyqMlaw4vMHZqVjgsXO8lpjfia5NFh96FXvNXjJw4oOipUOnyrZMK98u6d7YVxz3ZqMWoGoWzC8ymhWJrZaaVZtuZTGTe4PIys0Dm+YtPBL+BB3JGWrSoooQuHPhs6a16+bvRAtJyfv6/3bG8Yc3TS48rc/uPfyx/kNTwgRh8GCVX8Iw0beoz9KVjU0/Q3K9b2u+nkmFVcN3Vh9NW6hJYXaIjA1SHRsZmui0yTnX354vui4WLmU7kkGK9jeRwJALVELesb2LjLQNkkonaKjqi7OHBaq4uGnKlvmMCS9QAu+4+jekgdHXAMYnCwunEk286gb1pdq0vQtoySojooW3UZWK0fCocuo68n9+CQavrBscSYQAKqTCUxj60aM1O8HiAROJ46gb5ln/RN3NWfbVOaAZmNy4m546TutpPegeFDEK2Dc2NpTC92iw2JsBLvt0VYhImXJWcqNlyOS5WBZ0nGvKfvx3PEP/Di1Hso9mKkU1Cwr1IiiE9hiHtF31ruZtb2rMiaqbHi77U5VtlvV40SKE6S5xp4udBEiqsul2dlujxuEbBtuELItmmA9+WVCCCEXm3AtUmLrxBKyhzwWiE0ULt6TLSF1TeyPaZGi1QQd5xn/rXf33xUd1GT62g/sczT6YvGg3en0KEGr7uU/hpAxVlkna3M134LOyf1UC42D/eTYiZBMt+i4WLlwg5CdpurPiA//7Z7gXt+q9ainLBNrANTK5D7PFc9nyPMZZuic+bJyh797Rc1naLSl3ShIejNCaatrwnbe7zjVSO0JWydE5KF0PZt6qfPEpqpIkRjuGjomVekaOiJCGrqkvb7qXUPTOHqdqO57tZ6m+cBeqc15zr2rh7945at+qejQWIlU/kBnGUqO/Utz72e1dV1I31DUwWgWAED0NBU38TFjrPRk3Pcgduq10I/Ct/+Y6dxfdESTrK7Dji1iy0kEhP01bFb/SQZj52PEsYJZjYmtPJ1IE9kudaDVUOHevr8q9xy46fHfftvvFx0ZKxFuELLTrEf/FD1qreu2FDU9nKeEALUmCyizogVsPLhL5O7wdtsdKUQ76MaxHTRr9We8Vn/lI0VHNMn+9cUHDBlp5IKeJQt7Oio6ogtV9TFaRcdVdlXZbpMaJzpWkAQ60FhrnsSOI/ykA186Wr/6DX8/zrBZyXGDkG1QT/j++Ct/3lV3h0ns4QyqVmydACUFoRSrRUc3NbgqaaEqHn6qvLv2BWiTs1Sjk7NBhyIempI7aUy9u9bW9zu4UItTi35VpWoozx84JlXpGppz1dBpY/xENWtJIGpmb99qtEXvEhcv60f2lY+/6QN3Fh0dKwsejM42zV7h/cSf6N5+ByRq3ScNtmcJB0ItURZVjmrUYYQTO59hRtKSXSV8CFoq1d9uafd82dxjxVivyRaE9ePveUX9Uc/KZJ1sB3YUaFVbshtHzTErrksrHvqy6hyf5cLbjU2SOeO2KUCBsB7OzM2Claz2TgROY97q+qFXdHSsLMr3ZIgVY1GphSQ56Mm+A5pioc0MiCYlqGMjBHcZLRpnDgtV8fBTZZX5qVs6abVbVt39nl/p3cXdkHL3qR++mmy3tU4OUtI0nAlk21QlE1gQNDh0KTquM2XVhbUvwVBQa5rI6a2HbZ0Ip7EUe7XVzmLv7i/kETmrIll0AKwcHva45Av/uHDZ0/vQRABSPrm+JBABAOrE66GuRjK5dGf0vGX1gYt6IF71HVb5RMLwW3Qc9YP5fTXbqHXXwvUH9AOfzydUto198Gr7sZdHEV0UmGAclYWzwJm3MSnmxJpZZjXnZ5TTVlemK8iRqH3feLY145EfyRBELJsefOVnb/Se+v3J/d8uOkZWvIpcRVje7vk0/PTvdJu12FJaRVokqGsidBwQjuMEiVN0fIyVERehGXC82nrkrN7603LtcNGxTAv/+N13PPNihLm24ge7bEqMlsOuSiYwTVYZwhpIETkKF6yeEMdaHiI6CCrugDjw99/yP/kPeQTPKocvJAwAQN70Y878TRD6logBEMBCAhA6kaSBLBLpnX3K9cQ3rWtfZa4AI0vZLyN+YMThS/67N5v4C1ONr8UujJY5jJOea+8Fywm/+t4xBzq1ul/5zFWv/4hevLQme4ZG68GR++FZkUxg+cYKpsWTckJMvTTnK7tMoBlxCMNonY6rkglM255ZPXBEMIDGoAYJaEmDqAEQQAlJ/frcY65f+7f3XfCHYJXHGUIG8KQX6M+8FdrH4jo/IGCMjYysPWr1ruiLbys6kOkyd+1Nlzv9IG4WHQjLCo+yZONzlFpX2IGnGgee9/NFx8KKxw1CBrZ3AF7znqby6n5QdCysXLhL5O5M23ZzIFj76C+pvVcXHch0mVfxaiK9qF10IGVXlfnl2O7w/t2dQ5G7GvZnLnv0Ax/8o6JjYcXjBiFrUG1h4QhFnojAHv3PRcrCCsVVSQtV8fBTpY3gaWkNzWayfrjoAKfLx5598ck7b1vds1BUAJzPmmyZNbRynldQkBi6ZLX+SUVOo412aKkDr/6DomNhxeMvzNS74gnxR3+vtWRHQU+Yie16ZHD4wnZn2jJgWan+dhv+AOhiueI87BngcPWpcbvv128xneNFR8EYO7fCMpkp05DECVBNtbT9wFt+sXnTc3IPg5VbhW5EWG5+4sNWpyW8S9z4WEx5DyPM7KFgJngi+w0ZJf2oqN07hqRlrkyl46feu17uXfoY//4vFx3J1Jl/4c8uXf8DzYc9fui/ZnVUpd0olK1XXtniyUxBya6Rt2d2Sb+U1Vf7lrWw4zPl+KHIN/acC7prya/fMj/moFjZcIZw2tlP+k8L7cRTIHoP9pRfdDjjxplDxi4YAgC3Bgux9t7/N601yNh54jF42arK9rQdpybXhW5j2Dr0G+8vOhxWMG4QTrcrnhR99i8iGWJUM42G509sl1HGyqzqXUmta28uOgSWo6rc4FZeSte+osNik0kDtWK3L/YqB2cecf2Nb1spOiJWpNEmL2KTxYXvfBZ+8t2zLbOienZkhdJVEOX8pmnXtnJ1JU1LEnIX051hyu41OnWepWzeOK1gS0W6kqbWmylZ+Ai2pKQjA0XWHrDWtBBJ0v3AD8uDTys6tKlGYAAaSFFPrB8KLzleWwFEkzQUTWanD26L7k5m2427hgJACY/DtGcHKfsrArA83ViN1p32bHCxdnSOsbHS4ydP00wDzM91qYtWIBfBaswCly+fVjmXxax6BowNaGwT9qRwVGyvU5fk8YZ7BGCfPvLFokObXrc/f1/sJAYfcrBTF3LZblFkE/Us2S86NMZYec1gK/Htzqwn44VoJl6/+1NFR8SKxA3C6WUfugFgretAn2yLWhT2+8RFAhkrkbI1pG2sd8zcrJ4h2Q7kwXoyUzMLM9c9BaBRVEgMANY+/b96S3Yo5tv+vkRi3+5YZkn1Rx4CwF1D2Tjx8bZLGXUt7uGsK6keLScC/Fh8+w03X3rza/OIl1UCNwinF85cvPCyv7bWW65oS3GJwVWDbnHh8HyGpZRR5hDF8CV3FZ8QsGzhR2AcWu6Lvk2zOjns1+a+865fliQBeOaDIvlH7/v2027Qsd7vBVr7M+4lgGugwlHXw/MKjklVxgry/IETjWRD9Fb6ludB6Jnud/3tCl768KKDYoXJe44BVl76xNfkI18dzJs9favjxkZ7tkrK92yuXAGl3aBP3T1TVh+4qN1b8R2GKbnDvN9XodvHYM7QuoqbYs6KV9Se69qfeydAkPdbsx34d3z9qte/bWZ+ruNSLfRMb6UuZo+JvlvxS/zkJovy/apmN1Yw3+2PFXk2V77jMG3MvAGkIUsKSShmPNkViXvMBJee9GLVOrl223vyipqVGz+JmVLeZU8GgK611kiiNWnHcX/GtqNYE8DQpTicOSwlzhwWqqjwQ+0tQqOryMSiZtat/h7snwRYy/2N2TmcTLoP9fbV425gg3DsuWUM94lLUl9ONHxh2eJMIABwJrCsIh1AnyI3Nv1Zr9ad1fE9r7956fofLDouVgz+Qk6ry246+KpbF9RckLg19GwlViJnxo7LNmapKng+QzYNLLm8FrdUEnu1mb62TnzkZrN+ouigGABA79i3v/qMPfMWthT0Zozqydh8s+igzhePJdudqmw3jnO3AaU8UMioAb8geivkKct1vUY/qWmhn/aW+5e/8NE8Pgorv2r3J2G75C24D3vqcmMv6m4s7FiYfVHP1JP1YNYScdHBnafSXUuGqk6TUKSMHhpxO4/4gdMeQBR2Ca7ODhsu5+2GqF2xJ0SiBAGN9Ob8r7w937dk56f35U8/4rdvhUsevSfUq1F/ybmoI2Np+JlvsSpyQuGuoSWV73RK67KxgDGEa5HxZOxLK25KT8zOr97xL5msn1ULXy2m0IHankd3b/vTPZ37QusSTbYH0ZqpY9SwVS/tb7gr6e5UJ3NoUpZ8pT2RTetKmvsT3Ip3JQWBw5eMaOFEaCiOXBU6UgWf/6us1swuXNRed8NuS1JdWgR9CiV3DR2TqnQNHREhDV3SXs9dQy/ItoNHAam8u/LWkrifiMCdt7Xvyeayc6CNx779V78696RnAezL6l1YVfAXdRr17//2ZT/wW9bcVRS2XOyjDHzoRRTY6TeO3JWUnReez3CiqXhFWaScOdnFtXe81Lr0xqIjYqdF99/12RfuS5C6EC3Hq/OeXXRErGRGbGAg4dBlnCFPq9yfxgKAArJNjBhGql8T/uzy6qq19Lh3f2n9s58fw7uzsuEuo9PIveFFvQNP78WhNJ2aMJpEYjlCCQwiEFU/JKrx8HvqrqhclbRQWVUlVWBHcezbuCCVXLy6/+V35xEt25321z592etuhXwEX5YAACAASURBVINX7MNZonhNh3bJnvmWcNhYRrhqKABU5fJb2uPwjKNopwKhmUgEAYCQqm8iLeJZ1w1DK5q7wvNU+0v/CFCVAUQsG+W6WrAxcK97WvC5P/WppUXHc0Frzw8aEmsWCLGLBwSIw5fCVKMr6dThqqSFyir8ntBk7ZkL2wH1KO7kECm7IO51N2G/3W8fF2LPUlVuzytkQruGsulkGxkJMrGaE5d0yG2J7gIFM/cde+Ctr7nyuT9RdHRs3PhENn3mr5p76V/MqtjFMDEiQk86njJREvRBOUUHNy2qM7aQTbJRu+DGUKvTGuHMyrteFbXuH2eo7HxgHCqwaLbRo+M6mCsqjNJVa2SsDNIeKKTVDs2Z66O0haHQCWAWZgM/CW2f9uL3/fURuJhnqJ863CCcMt6CcGcj9wrqaBE5WstEJsoOJHVA+3F2DRIuQsPOC2cOCzVq+IvorsUtLWXje37Nv/PDY4yUnZe7X3hICcf3aVabdoN7fO1W1TOBORcjQYNDl6zWnxV+MLGzyFGkfaX6HbNCNrlOM4jUSpzco9XSjT9QdHRs3KpzgmNZUPuu63/iT6zWvYnt2k7DtiyAIAg7xpDt1Elx8Y+CceaQlVkUHp2ZWfLCPoXtomNhw6196sNzZK+itT/hKSIrhhswbIvcM4RRXYWhBgNYFz70tNY2unuocZHbXzl899Jz/2veAbBS4QbhdEkOf3zmOW+Omot9J+wlPRMENkqFNUFzEhta66IDZFVXTCaWH0CMh7FmOh158v2vpHXuL1pSyZFvfuZFswpm12i26FhY2YzWd6cqmcA0VW5gj6PKKLX6DWcR9Izdl81O4hKARWHSaZuGvOym5Q/99zHEwMqj6iUl2ShsW93w43TxoxMduZoQBQkBRAjGCKMpUdU4UWZr6Gzso0/InrO0rn3luzJn1Fk4ow+WVvOIzPCQsmtDphxX5dthQ5nNCvO4ZashoO2Hbr2WWIvhlz8K4BcdJhui/bVPXv6Gj7T2X3koCCMpCBCQCAABBAECCQLK6Dgv3711Wjwpn5dEylc1X9lVDTWANGRJ/4ORPm9VZphI256FPShMO67S9teQvZblcXhq++CWa7IwABLAJIDGSDISaXCmEKjIGEvMPfKpq7e9K6sYWPlxhnCKeI97YfLVtwf9w3VZ2FW8fGMLWSnxfIYlcMblgRDW9jU6naPJFz4GsFBMTOw86M7xx1pHTlgEmztxcGRXJ7Wza6M1eBibHmc0OXc4GzxkxftkIl1r7/Nek3dUrDy4QThFTGP/4gv/elY6MhhHb4Sh+EacsUoYem2Y8bvJrT+DS9wXsdSsI1/52A9e5UQ+gDmj79kg9zvqCqvc9Y6dG+/fXTr/eqFjqRq6g5FmNLw0clf8rnX5o0588I9zi4iVDncZnR4z8hHP7LvNmqy3Ucix9FAfQenmM6xGV9Lpa0ln0xUz9XDLffdWoytpWjhG2/Gdn4D+EYCTYw2IjWLtq5+77NVvVI9+htQxwJmZ9Yp0AxyPimyLkbuGjkaQGHpGzGr9kytlE+U8ofyoRg1HoeyLyHI9NXswvP0zGsJ84mLlwhnCaaEOPT76h9+R7mIY9LXkBwETgquSsnFyQgNwAkAVHQg7h8Nv+dU9K3cNPRuU6151onHmLVuFbc+qTENiaPgyoighUbM64Hbe/IczT/7ePCJlJcR3jlOk+Yq/00GfmjO1sOVXZddX5tpZroyrqMpmy9uIj0ZT7y2KyqqU6UmzAfDf8SPWJTfED36u6FjYOVz+nFe7T3qOc9UTYZTL/MS2VQq6dx95e+bcq7BCBUKHKuz4HPX4Kap36ChtP8LUywsmxlczQkaOE95x84FsYmOlV+2zAzt/3pN+wnrEf7ASv28iY9WlqUaSMO0ALd+NS7kahGmmrqGYUYOKitq9pWkQDjaAPn539M9vLDgUdn6u+8BRQBAEg1GDm999YSD1hrV859WM5NwgzLJqaJ6q0iAs3XGYdvwU1PBLrap63ptt8IQz7fWuZUem5yeRLRP/7q9+63Uv2kWQrHLKl/JmOVCX3uh/9i9VErZgybX2FjjbIHdxZOenmPkM2cCZ9ehO/RTwfPSVMajLe/bZdZK/RVXp2sfYGJ3xIPic/V0o6IWJlNZ+N9m7cNWNT3/rSn6xsfLgoSBTIbn/32d+5J0xaaNWZGSRVQcIColk1AxVyZ4T7iDtnqNcmcO0tnf5Mofl2m6YsnuNznk+w7RLd86Zwx7Ytdq6Xl+01bqUc+uOX1tXvQ+8WF33vFzfl2UJQQGhvRR3Wkr0bNzbsrq2wCSsK2gVHVwlcSYwW5wJ3J1RT/9nHA7n/POIrLrQQRAK65jr709UMtr7sWriJ2fTQlHUlwjQ7DWtJbNcdDgXiuczZOeF5zPcFRej2a7QtfVAORit721Hc9CvP/2/JV/9YNGhsfN15837YxO50d0PE23tJAGhio3tr3nIaV7GWCpTa0eh12m4q9gMvODoNz9VdERsHLhBOPnUlTcCQMsoF/buARH0qaVnig7qQk3qjThjZdDQsycAvMSWYW3d3bvsRMuuDRGnlSpm/ZMfOOxb92lnGfZ79qoi6TrzJLpFx8WywVVMd6kqXYszqho6KoqaaOtGtNr08Tu2uOeNz7v4ll/O+01Z4cr3BWBZo5lDzZ991zzGcXjveuzMypXEndyuwqWbz5DHwpVSRplDFMOX3OWc+ew4HUIMpLTd4xS15/Ujwnf8SNA5mtX62Xi07vvO0R++Jpqv7zfL7ciRTv2hYN2YpaLjumBVuaHPeYJyQWLoktX62XSqmZoJVkjWlR0fDPzr37dmHXh40UGx3FWj1CS7EHT0rujhL9d2sICzuo7UEYmbSM3JtGKV6yFuWvti6o6SrD5wUbs3o/gN2rG1ui/Y2xKrrr3XMofhouuiz7w5m7WzcYnu/vzVv/GhOdcB2hM4cRz0FlSzL2qSihlDnp18z0zZjRXM90SARU2HM6LyJS3TxmYbQBqy5B0NAcKQpShEoBfqcSDmzbF1ujQWCbVOrt327uIiYuPAT5ImHB56IgBIHc71aVk2onaE0kbtFh0X48xhKWWVeRt6VzGGOSQyij9M4kv8vTFq3Ws4sb/sdpPwWB7xsryZlZNGX4VO5MZgyVDo0El6RQd13jgTCACcCWTjJUyc+Kauo3Ywa7sdLw7uef1zmzc8H4DnJJxkfEKZcNalT1Yv+yvPkt16LUkCux71G82Z8KGi4xo3HnO4OzxNyO5U/XirW2EnapFo4WJNkYa3/WLUebDooNhu+A/c/7kftfyYtBFuvY49Iqfq6cHMVGUMHse524BSHijk3IAfOcySbbeG1ZEdN7YsnGkGcR1N/Mi339v53L8XFQ8bD+4yOtG8RefypziNKwyE2pfGtWf8boR9LQ4h+EUHd0HMiF0cK3MnXrKupGmqsz3FsJ44OPJ2nrKupBIj3zoQYGAFUWI1rJlr439/Sz6RsXx1vnHbI9/493rPgT1GrMShqe2LYE2SVXRc56kiZxruGlpSxUzbM7KShdNWDXJ9iFtoGm7SN1bi2J6a8Vpf+t8AYdHRsbxwhnCCXebueXT/U3/u9e6PrItCx2nqfh/qllgMcLXqXRYFDV/SVGeaimrsl+pkDk3KUoy0IjS5PyEesSupIWWsZY3ak1Ifnkn86nQyZGcxvbWH791z0rTmAQz2GpFddERnqUrX0BER0tAl7fXcNfSCbDt4FJAqWyawqKqh52tz6zlRYvUcY80b3VHQaNmXONHx+9/62vkbvhvg4qKjZHnhE80kC+6/96Lv/3WzeEUctR3RFSLUxsckmDW83zdUp6HICjVl8xnGkZaRtRgtQGQHt/2H5PCni4qEZeDotz/8NGw0DiV2zw8E2pNbZbpkkHDoUnRc06BcU8lXwJbnDokki+JaEhkZWFbPWl87qfY+4W++tPa5LxYYIMsbdxmdZNYTX9A98LR+EivTrgvQJBLLVkJS4JNKuyeYrtZQ2W7E01Vjv5Rww+VrQruSNtVsGGPHPk62o7/8AerfN96wWJZW7vj4da/7h2huydNSuH5AtqSy3S5XpGpomqy6IFbjNF/CqqEDZxxFY6njNZKyhXNqP27PQhtpJAljiRbFBMkeyw5Dq714uefJ7pf+CSAqIFaWP84UTSz7Md8Vf/5Pje5Z0J610SReL2wY6SWWiFRVBpAUp3TzGbJSmtD5DPvmKNXiWiTDIMDrbsk/DpavxWue/Cjlasdp+d5SXNx5rOpdQ8vWBZGxC5HyBXS1FUiKEzUjL+kbt0f9Beo3jhw/+rbXHHzejxUSKRuD6pyI2Yho4arGy/9ywY48TBISkXQt21Em1kEXrR3GkFRjDBsrp+qMLWQ76aJuhhIcB97zGlrn+qKVt1eoozqkvtzTsNZEu+hwGNuVtAcKabVDi1K2sYKjPogJSVngxGG9bzw5u55EoRN5i/jktx8W+68ZY9xsrPhGf0K5+4UzF3hX+D2jjRWAjFWi7MClrhMHVoWeyLINaQ11bsBPtILmM9xHj1pJWn2LANbhyO15vx3L23ufVz/aVmhF3X4vtmu5vx9nAs+xehy6ZLX+rJRtOgS2O+n7cfhX0thSm4CsfgtW0TENey6I5XGjj0cz7uz8mINnY1OdEzQbhbzkmvDf/ry+etjYjmU3XGmR8aOoC5ocu76rmjLc8ACo0pjDcuHM4e4UdbwFweF6fRGXF+DaWwB42rpJECbijnv21hJnNpnYLx43YNgW+WcIy5YJ3I0hN3LkWlFoIimpIeOkLyLtgDeLjQNu5xtvumXmic8qJFCWt4m9MLD6qz5ixXHPNrVIC02JbUUGlUFhq44Jazqr96n28Im0NknaDBZpX5jy3XNUY7/sMFNIyaQ9+0jZzjkn8fKuCeK7kRXNhG9/Pjz8JfCNd+X7ZmwsrN+hKy9aa9bFqlxu6Hq+b1ZQMjCz83BGycASJv1GYszw7VDYM9Cdj6tte23wc87HYUXafpR6HG7dPqe3XkjQVA6GCRHFIhGKBMgo0YljRGjd9UqeeWIyVftsxYZzHPXEV9sPfxaEPopkpD+lzCpiV6NBkhluEGaqOg3FEZWtoahdUuuAdWNcQz2BZEMNICIRCl/37rg7uef3cwmUFeHKN6/Nz7YwcQFMZAEhyNA40guMEY5MwgittAMo5brADb9zrL4at1ile6CZdlwVNCzw1PbZev4WVLpOLukNv2xo8LRYDe+6/d43caWxCTR1Xf6mQe1xL0i++vZ+77jw4qJjYYyVF9ptMlLrWKq27YQoktiEscauiTu3/ii3BieMH8IX7jwU1i1t161YIGHfFf1aHHndTrJmey4ApiyMTbsznuaVrTU4BjNJXKcmON7Ss19TdCwsezxB7QTSzYv2PP8vopAgSBIcbYaJtK4gpXuCWDK83VgVaeOiJEUGEoHCEqS17CsLXZz1DQLcAvC+omNkmXnoxNxVV6xDq7/iYVNoadccY4l2x/VIepbuJXxHsDtp53nktvTOSpYJ3EG5ZjRMzcznG6Xv9trGuBc/+t6/42GEE4gzhBPHWyBnfjmJLUuFkPNAEbaJRlzyx0WASilt3sKM5jMctSqp1o6QGhFN7JpYIQgEV2vXWQ+c6/6EW4MThl6HycOgNlvbZ1mOFftRCyMxB3shdAQ6IhltfEGV5Fw1VJAYumS1flascrUGiyueRJFrag37UvfyX/tQ3u/Fxo9PWJPGvea50f//R8JbCH3fCDn6CsyISxpukLDd46qkuzNqVVKhfEO+0SSklk5bIEA0F/tO58MvpVUuLjqBWp/7+89873y4Cm5ozwgrok6/Ab6yg0ijW7ovGFcNzVZh27Mq05CUrWpoybabwprd65uH6nPX3vTY9x4vKgyWk/J9IdmFkTP75275a6+1ljQP1jGzCYh5uoXdKd924/kMp1JK5lAAJDGiMMoxWjtxaFmqNzP7gDYyfqhbdNAseytr3wZX+Af2rpBXx5ono7Z+UMjE0RCL9Ad8JbsxTcXzB7JxyawAX3UImSzE9TodJwE6pQItq65dZJBYqTlXP1M1FhzRC6NeYJMyeQ8KGfWkmFa0YLoe+pavoZimXPslrWdlCTdcNjL6YGnHmzAOGRR2QmQlfl2K0JV+3JonOqhXfjeb92alctvH973oF/Yf3NPzvH5fLEpBGCJJO5GgMD1XlO83LLuqofmer7AijYDyJVFTthuakbq4ZyV9zOd5rwFHe/3ulG03Bo7xk2WllkKI11fv7j7xcvj4x4sOimWmfE/42AWwr/uh7sd+QxtYFXvqdtOO7KIjYoyVl8BYgEUUxzomabzZlahXa3/8hdE3/7jo0FherLj72R9+/L54JV5Y6Eee1o7vOIlyrIgqkwlkbIzOmAapIo8FslfvxxIPBHOrsgdHf/oZ9Nu/XXRELEucIZwo8uJrvGf8kkA7cex6GPVkV0K+bULE4QtnDidFNbb/5GYOU74XGX0wEm6EJ5u6kdRqMgh8CsCeiT9/DajvBnNfNu/BSqZ99xev/fV3OfuegGa5K/VsPKdV25FJW7oq525gWc4fmGdmCQ0iDVmyWn9WSpcJJJFyviomE5gGabTJVc7Y89lPxpK23YqSsr/aNT3ji1BL4dl771yOLr88+PQnAHh6swnBT/4mSnTHrdhoCglxRB0TzFvzRUfEGCsvI47W1GU+QLAWuA3Xs/ba3TYAQMIdgSZZ1GqbYMXzFQkJyhI4r9t7F6hfdFyMsfJa7JpEy6iusRsFGtd//034m79UdFAsM9wgnBzWoScCQNdfEUIIKSxrX7vTKyqY6oyRKxfebmycJCxReDy2hDerVGu5Zfz1f/05te9RRcfF8tU/ctdnXn5lKOabqtPz+06wjN5qUGA1xYJwFdNdqkrX4rJVDU1R2HGYVoQpZf8KdIwDF7XQtpQTgaSvzDeuyD1INi7l+wKz3TKzh2Zf9ldNdVEUYDNGDfda83uKDoqNhuczZOclo/kMMaZQCimQwtWoOXdJZwna7WT92+P8KGz8Hrj1Ty77rY+uOEkUzKpm24cmea7BuaLjOgvPH8hYadxfc9xkfc2oREYztvPYd2jLWgTg+8wJwSe+iXGz/sr7W7QYJauWNZ8k61I4nc5KcTf0PJ8hKx7PZ7gzAXWtTqpkPrK1WO8Ja3nmmhdCGBYdF8td3DmxaOKGbgdWTVm1eP1YjE5WK+fMW7Yqsz1zbsCnvu3wWXXyftvRVSWzmmIhtsI55Sor1KajTC+uH/8vr5S/+bNFx8WyUZkDkZ3LrQCdPeSSOhDBcWiaxOyfd+pFR3Um7hK5O+Xbbjyf4SSQIjC0SHTMixaSxcaR97w87hwuOig2DubI3be/YPE+Z8brQS3puK6nzGph0XAmkE2ByjTsU8RJj/poJT3lzdo90qJv07ea3sGi42LZyHuSOjYm1sN+0Xn8h4WYtWSQRCLsi6btJ1EAYlILyaZdy6drstS0NmGFrjGFSEsSiinbbIFcr0eeb2YdtWL1EgDwj3yu6KDYOBx97+8dfN37lrAXioVENayeb9fa8YjHf1XOMxznLqW1mfNP+o2kMtutqKrdaftrxGciNWVBHLu2ve5HNkDTMVe++fiyM5NBhKwE+AnZRLBuie/5A8trnPTWTCdRrp61F40fxy7PQ8gYSxUldQ81uT2LYqPAe8wLi46IjU90579HWtWpb+Ll/lyvxw+IGctC1TOBaUIkacXH4oRsoR1tggi9xROveb669jlFh8YywF31JsU8zT39g87ek+3OQbJ7QgXkN5U0ZuQnUmV78pfVIVquz5W7jK49ZJAQBjNwKUIkYYA0CgIJYBA0oBFkAAkJBGCiN3q3EgpE1IQAQEQSdco7VGO/TOqJ0kq6kbM3SmApvvehj77Rfs4f0MEnaAAijRXZNTmi4ZWbzr6xIyI89Z0bHCt09jxidMYKCYg2fnn6ldtWvvHz1r+izf/Z+CuiwWoMAG2+Cjf/wsDRO+DvfgWe9UbYf+3Gnz/0Vfjorw9e5/7ga4OPvvn6d3+a1MUEq1bshnK0Z8SZ3eOmZDAoZRxY2pSAab1Aq3IvXnCc27aeAADApKBQUpSvQOg2mxsw//04eKMt35qdc7YZ9Y6WIgGyjEZDMSpCVe92rJMn4vavLmayflasSb3PmS7qkb/gXvNkqxmEsRvrulMPAPo6cCQqEqPOGVquu0BuEO5SRhckaUAL0AiCNk4WhsggCDCKUGzcnYpEqEigRpReDVECohACpELcKHEZiWqcaspYhyBPQiSJQZAW2C70Q892tbAiQkFB0aGVA6U0VIa1CQVt64p8dvdjBHPGHxrQcNZRR1uaiJuv3wxj0O6kwY90+vVm88adYONmcXDrLCKgzTr7g7chA0SWiWKDNq1HUbB4/fdeetkhilciZdsj3nDn3SAcFTcIL+ztz9h6ghuEI9iy9cbSINz+lRlLg5AgBrIVSoLEYIxSJkk9DNXav75l5R2vyeQtWIGqcZfGdvKMp8G/3Nb4mT8z/UuSGITyLWlToo0JJNZGzxCmKapBldUFfroahGlf7FG3m0UUI2oEAgGkBRgSQGhqBrQBTaDBSpQDbgNdDy07VgoAABFQDsY3EgoAQJMylrUiLbCq3FCOjGyBviXiME6EM2cijSK0RBSZRtGRjVfa/jVpme349J9s/VM86zcD+vR6kICINm7gzn5fOuOXZvt/aoBTt8V0eg062vIXdPp0R4M4DRAB4qA1CEQY9kgoSBTMWKodX/+cZ0rhrDmenbSGftrcj/+MGoRYkQrCJT2fnN1sKNlYwbI1CE/vx8ILFI2lQQhojBZS2CiMNn2DWgob0PvKS5Yuv/H59/77B7J5F1YQHjNQecq9PHnj03pfO2gJz7bXgCIduoBaKGM0FjaImRUqu8cABgABBAIIkAgEhghB+5Q4VlKvGa9ubE9IT4AjjdBbrjuGaOO+lEjAqJnqcqEJLYRrIEBQ2jdS2FobsBRFgMZDrPb+Spf2gCnl5ZTSIByaOSQa/sUb9N7cfI9BAw62tOlO2WxOEiLCqXQigthoQ2609Ag3ulIKAgJNRCgMnGpqCkBDgINRSwJg83aQSJAk0IBgGjboGCNJUSyg1Y5P1BsHdNTKvapA2RoYjF2IwtuB44VSkAFjjBQohAUGSGuA3o+/K37zS6yio2MXihuEVbdgqf3e1x5OKkCK0KCJmpQI5QqQtShyLOln9EZFVfVMW/+oN+hclXQ3EtjY0oJAGEJCAASBYWPB2JapucbzQNmahEkgIYPaAAAimq1bHMGItExLuWTWQ7kiaokHRoUGlCV00lOuTEQSksSpqzc2vEUotv9+S2Jn69F96vd4qqm2fdUEKAG2JO5gM2GOBgAE4NaVIyIRAQhEGDQLDQIgAqCAwT9tfJsMAhpx6rEfoSEgMINkIAEYQAWgN9uixiAQSQCCqOEkHQARdmPbFq17js08+sAC+D54I2wzVjk7N2DK01wvWSawAlVDx9I0JZ0gCRRERgBaUlgAhrS+Ixres4BVy5Td/kyeg0+GI1/f99K/ip221gDGIRSaCASRkEaDzL1LHnclnQgp280QISKgERqRBIEgaWmlwr0HAAYXIQECYXDDigAmRMTBxWn7lBjVePY0bQ1CIh8QwLGBFPQSMEo6thYgkm7RoeVjxDFmSMMzpVvHNm/k5Qa/RwNpFWKQtqUQiYaffDZeY7b9BjZ/Q5vjAE853X3UbPztoD/q4PcUnfleRgMRkvDi1b6SmCjSvpzdc/n/9QzbCe1o+Pd05PNqzk0L7hq6S9wg3BVKPd7OGss3HkU1CCEWQiFYxpBOSEppSdRaI4at2z/W++JHj9926xjCYDmpxlmV7eTFb4X6Us03gAZVIJUhY+tEAMVSCkN534iX5hICAFyEZrfStpohBDBAWhAgWlq5Sa2pHde4dQCUwhokNwyQpgSAEAUA0NaOdkQAoExaf5JynYKmbX5CpeLExFoYIpTgoEGNQBQiOkWHNlapN+6pXUZPF4NJ/9utv6czf2MIcLMf6eDRyZZBiYi0bc2nGnhApwYZbv4RbcQzaA3iqWahBgCg5NR7bTZcDRCBaULSAREhSQp9aXuXP+XGub3NWJerSEz66st13khT8QahyX1mspI1/NLs2CAcGO8NAyZn7pqxNAjloNMCGjKYGBKAQggk3fPsh826//Qfm2OIgeWnGo/tWRrrhp9ckpeuJMfArgHYEQ2qAdctGQrSEDeNyqrLKJtGSALQIBAgkBTGc0xjxtTqVhhqAG1CvdGiQ4mgCCNCAEBQZ2SmE5lWra5kXRNTrvtUsoZrVpJYWqohIgPSEEQoDSXGkY0orSFUeaPet6UdnwmcyifjlpTgxv9tjP07o/DMRofPwW23AAA8NcoWtuYVT3dB3WzFnc4rwpaf8PQ6jYbBgxjabGoCIAEaCwbNEq0BANGgEUREuCosaRKipAdKaxN3jz+4OHN1bJXrOK9Kwy9Naua5AmOSp+uR6AUbf6ow/+b6WQSp2IQGEymlkkIAEMWkkwPr+qsGDvzEHz/wl1xrtMLKf1ZiqeRlr9SH/ye84kOziIkpWxGIcl1OOHO4Mw2EiNvyYEQAEEpwYy01xU49mFui5gIgijAgaRcVKmOZ2ymTM5job+sTjrN7e56d6Nh8/WZN0dMvO5VXxM0upqfWcupNtsaDg78kOrW6zWkkcGMei1M9RTdr1SBt/v5UR9NTUyAaAgCLKBFASR+MUYBJHEPDvemZ39OTyiTaVgIAEjIoxCDO1PwDZwIBoEKZwPJ0Ch0oWYYwPRNYkLT9VbJiNsbWsjPz5VfPHnzVrx952+uLDoftUrmOKjYSse+g8/SPuxSbZKXoWFi1pT2xVgZISO24UGtKy0MSaAhGnL2asWrLNJ8zeDaFmMnw7vPuNoa4USho0L6Eza6qiESEBBDFrZVVRBRCEKE+ndwUZbv7ZJVDKYqOi2Wj1u0mVv8pn4ytNusU9gAAIABJREFUxSuLjoXtHncZrTDh1eVVvtMWfW+vMmWbSLpcVT3TGjx8TRo4e4zc4BeWgVhKXauJegPsGmggMCB4NhPGRrdR/DOL9ZwmTo9F3EQoNsYQCtyWhKFB91baSDiiAkg2vsxxcvKBo5fs3YdCaGMMgRASAJFos+ppjlK7VnInpp1VJBNYuulmy1Y1NE1FnsUsNxb2QrT+9ZW5G55ddCxs96pxtLGzWYeeGP7br4j+etQwJMKiw2GTCUmA7WivGdk1gxIBkER2/W8ZK4Xcx3TRkFvNXb0pDhvosXkdxy0NqEHhXxKnfkMIiAiEQBsla0CIQdtSCAWG1k8s6zAQQoBAAoEo8dT9KJrhS0YEiaFLVutnbCvOWO6OSFmcPviJcByifvvGd3yz6DDZLnGGsKri+z4/+4r/aXwdKNe22gC1oiM6TzyfYTUM7lYTZZHbILcOQhlNEhERJrXeCJtmgwN+55vCDHJliIPhgxeWM8Ez25coNsqHgkQ0RIOZDzUQbLQJz6gSdPq0JwgIpQCQcc/3W23HcUAgaSMAwRhE0FM3G0sqbjOcQ8nGBJYuE1iRMYFp0o7/uogDsyj0YduSvp6uCtWTpBpHIRtK0gF/DyhInO6CQRi6sJ1hiqLjKgVEjOsNchogXTAAlCAaROTzBptUQ777m785/U9ZnB8Id9vMws3aplujQgQUp9a8Gao4/XqUgLhZFhVBDOasEABAShCAEAK0aR0/TnEsYLNO6cZzrsyedqHBoUtW62eMXbi0TGCargRyTth6fjWa6X39s+MLlGWKb+yq6bKbAKAXr5ku2JGbOD0Ak7KwnWW13UY9hZbL2R3RSKBBSGpNbblSSzQIoAliQoMgi4mSsQmQ2fOms9uuALAt23B2+3Zrs3bwcAeFMkCDZuTqsWNJ4G80G0mjIcRBzZnpUrouhSSGLzl35U0Np2zbJ0VV4iybUbdbHbWMvGXhzzj6nje9aOax3zfOaFlWKnPDyra59Cb80fe5IrFsiGtODGWbc4JV2+CuERHBsQ1I0iCJBJIBYww/ZWCTbHI7CIjTSUI43S4lgWAMACCibq0ncQhASPw1Z4ydF9WrdTDZY8kkFtf8j6+37/jHoiNiu8FP+itJXvVMci/yhNLg+NCcgZUEnM00z7aF0BDS2QuCHPr64qpsDQ2msHgQhy+jjzks1+dKY4SMARyQpHVskZ1I0lb/on2IdQQANIQEIGDjsClX8Ixl68w24UaHTITTzSQEwI355HFo0m/Llx0RkE7PU795Ktl81cYchVv/aKM4DNHpDqKDADaSddtKxwAiAAES0GDlBjc7w9Pm45vBf8Hpeo+nPwgSAAo0QIgCKEySvZdcoiWikIOXKRSjtg7RINKQZcTV5K50ySISw68XaABpyFKQweF89lKYtO1WlLT9VbY4txAXEI1xu4YWT0T9i4Hixnz9isetfeb92YfIcsYZwgq66qn6n1/nmb52Z2Lpy/DeGHYxSzh3MWVbkBabk10LAhAIyhJoFR0WY6WUPtRwt4Zdi0db55ZaozuuZ0tzd6PKKCKSQAAwxvi9fhxGaAgASCARJZwtZIylS4yo9ZavmEtOyhnZX5l//E3X/8ORooNiI+MqoxX0rU/Cz/2vxurxVqelPDlTX1zxbVu2U15d9TZ/uap6Tup8hgIMDTILYJDQCEm2i8riW0HGdoIFJcyHTmk4iIUEbFYCPlUWlTaSkTiocgooN/9cEGg89WJDUbfXXV+r79kzKExKAglTRxHy/IG7VJGqkqWrGpqisOvvpFQNvcCphRU1yNXBMeXUje3qZEHoFhcjr55qHLVsK/e7fvri1tq6dXFNBZZOurEv7N6oKzFohi55BMzKDwkkEoBBRGFQI2rHAuQHRoyly3i04QVfjnFjDMipvplnd9I8XdFzo/roxssQkRCllBDFK0ePK0OCQBuDQghMHVrC8wcyVn5pJe+yqn0XyERK6tVa5IZ+6MZH4rU7vwywlEHobIz4xF01198cfOLPetYe0TmRODMRukiJ0FHRYY1fUVU9J7YqKSJqBIOAhjSKRNlkeIwxY1k4e8qK4Y3J4SeB4R0Thv8SALYnKM5qHG6Zl2Jz7YPxfYggJACuHT+JsZYojDEZTL1YApWpNllQ1dCh493KWFw2rdoq21Hex78XOctw3K7tNUnbsWfW3YXDb/ix+ef/eFbrZ+PBX6SKEUbDT/5Ny6wEjT1SR7HTCNBuJo1drGnowvMZ7s5kzGdogABAEBiBxpZUviIQjJXReX7Th7xsaAtQwJZG4Lb5D8/9RhtzD9L5XNy3DCZEkCDQAIBQ1O331ttKoEAkImMMZwJZGVSmYV8RWbX8HZ3ssx+RdFZNMu97Vk2vPOydn2tefHkWMbLx4S5hFWNu/4j7uB9wfKmSzkrjCpvWLbEcwt4M3yHl93zt31nadhu1TVXUmEkBhBqNhaA2i8pAwrudsXPJ4LmP2OUX/PRIwiFDGQkEgN4Y5Xj2eMPTqT8BoGmwAoGQEAAdf/CB5kVLG68x6YMIS6Z0bYO0NnPJRmdUZrsVVeC64mMFzwlpSPfy8xeBCONvOE69F9FS0HKF6SfyoZlmdgGycZiQo3lKiEM3AUBI+zUeMLU9TrI2E0QJ7o1UbeR1cdcLtsXgMmuICEECCiFA8sHAWLod5nzfhfM/96a+C278a3oUZ97z0cYwQjrVpUFZQARCrpw4kUQxIgpEWbWeDqzqOBNYLWEDNcyHNLukIRDh/Th/zJL3v/Ele2/++aJDYyPgDGGViLmD9tN/AXScqFgTCMSetEViBHVH7tWZ+oRy+H1JWr2Z8vUaKltV0uHXsNF7Y+b7uYjIIHgkfDDoWDIG0IYE3wmyKTVo3W3M43e60+ap4pybv6dTj9YH0+xt1tYb+r3H7f90Kr+3Uar0dJ6QBpMWDnJ7W++DN863BGg21jNYyeD1RJv9vgEQ0RCgJKKNqEggGEBEAgMAZDZCIQMAhBIQKDHCcoyOIQy6qyszF+2LIwOkQHLNwPOw7Wo46LubFBRKipJXDT29AfOOc/BGW66eO+dsS3efMxyO2GbOalAIhqECBRB3HAByPQghVtf9zYPHb/3DbN6AjUU1jnI2kHz5vYMfzvgW8xg/lplT10U+qBg7p/N/ZjLq05VdPI1BBBCnEpWn7/Y2Jxs8x5+TgMGIcSIwtHL8pERBCELxuWAXytUptALG3ejiHZS7E7f+UdEhsBFwg7Ay1L6rBj8UdHEuXVXMEVU9/nwhwGAqagGIm1fKyhXFYSx7Z3wLLuRLscPfnn8d0XPZ+tR/8+dtJ7rNB4i4UaVGyG11a4gEIIBYPvqQiWIASMo3gLAiXQq5yXEOp/ecwfHux2rvmooc/3DZ6/+h+YLXFB0FO198Q1wR1mxy/FuLL///+A59MpStKungrcXmBQWNBjKlrDvO2BidTztt+xQOu1nhTi/fRV5RbPurwY9ikCSU21959p9LQBRC2EJCt98+uSoRYqr23TMrLy5esCvle7w9PKLo6mtrBx5TZFxsFDyGsCJMDLVDK3Kfx5fmjBU15rC8VUkFQQI0GObILULGzm3QuDo9IHDz51FXcq4/2jor4MYox1NvdLriKBAKODV0cOP3YtsAso1fbnzFCQWQBkRABRCTkGRiQHny6ENX7N8rcUiR0im1c9OlPLVDyzZWsPxVQ7lRegHSkpMLcPGd/+OV442F7R5/B6rBWboS+vc1KBj6rwWe+9PmLeT5DKvl1CEkBkUsiEAbYbiSBGPnbUvObYfMHo6UUTzfJCEOe5a0mXvB7b8capBCBASUGigx2lJq7eRy4vuWKOzEXZWucWxn6fuRb0F3gkRDl6LiMSlLGtE9BgAzj7xhbBGyC8HfxmoIj3/l0ue/WVhzZ/9TWa+No546GAAAIg1dRl/TaJ1KtrbYEQwaDUaX7jEzY+M1tDF24V2709Zwvr8/+z83frO9p+jg95upj1NjCxHlxgsRAcVmZ3UBCGQMKAlIJKQBMH7QWl5VCZ8Hdif/652h4UuVFNLbkW9FdmPkBzSKnvKOb7Tv/twYY2S7xw3Caqg/800rC4/q99bE9q9etU78rBI2MoREgg8vxnZr53bjtjouu1jbmf855KezCDh1yRgUjjlbQigEIIKSxhggaq+tm7iwuROqnCHkJsdIuE04gTDWD9Dey3/1g0UHws6LPPdLWNH2veoDcfNQGAeWbWj7ZRxTugqVAA5dCM3QPhA7zaZcjOHxF9cGp5Rl5AkoU5YYhJ1oZZGwJSQQmwRVo5EASFQKlCA0qEEaQAkk+FkEmwapbQ8UAHjm94/o9PfizLPF5hdt43y9OSpvy8uQAAaTxA9etvF63JjgcDCA0JgtyUA866Z2YxDjltbm4I02hx1uTDxIG/WjtgS7+amQEEAKAMJIK6G63dbBKy4LUYEBR0pDpI1GKQejELOqg5W2nQsrvkVi+HkSDSClLttjH8eVuWSnYTIINGxJ/4stSw7S9hdJgDN2cZGQaOhVuSgm5W7jrI12jki1sGx0gu6aO3dR7+ufGt8HYLvCGcIK6KKqi56HYOnVomNhkwkJBCIKIjSDma3RRBQFKKUBio3Wg/tKg1Xrj8RYbnbdMhn2h4PbZtxVB/Fz2fnJ71lDH4kAQAhBRGBobWVFSgQ0sdEAIKUkImMMT0szNlXOlLLptZic6Dnh3KHHnrj1d4uOhZ0bZwgrQO27bn32oJt0QcyZyvdzGJ6hqs6dRTGZw/Qn5dlsOUGGpCJAQ1oiGQIDEkFQrW4MAA2emCMA4Vg+L2MVQTv959nfEtz+TwhD/g9ge7opPcNyxhcRN3pa4Kn/BNooXrqRf9z8DW5/+82KwkhASEAGjJFCktaEoA0tHjwAAIYMCUQhjDFIJET1HyiPmgksCNIoeZkxSNtuRUnNBJYszhRlC8ikPmsYLdJl11uMKYpw9lFPWfvkuy88MJar6p/QJ5177S3+P/5qM0wSa75L0el5e85Y2FTKrkuVEASIAIgaERGV+T/svXmQLN9V3/k9596sqt5ev+33fu+36veTkEAbAglJSGCHMY4xZhdiEV4CT2jAwHiswDM2BplhPGMPMBgcMWEcBDFjAWYGAWMCbBAjmDEzDrMZxggbsUlo//3e0v1ed9demfeeM39kVXVVdWW/ru6szsyq+4mM96pzuXkqK+9y7jn3HEe9NpIBwcESMMxYPRn4PhBYbZZuBJvnK3exm05fO7FSkYiUxjZAnp2FUwJY6Piq1EJIxEd795Nul0h1VPf5Ep5MoMQEi+X5KFv+wOzQf/lIuuu3DuLu1U3decUbXv+eT+T/BQK5EhSJkvO0t41r7/jpmmn3Xddis2h5AlkU1dTnFs1VVQnCRFAmIiZlP5Buk8VxGo1ClZQZdJ4ca4FANTnLDMs5tKO5QWJOW2y1SNkTn0dNkPLoppN7eCJC6ehSVcCAjIKU2BCjN2g+eGAE1lqBwoNBhvgc7UxQJB5B2aKGhgnoXFm3979uuhGutjsPGJJwVLQ4gUcQKnbJcckHfrVzo34Ymw0MalJ1f9FMQj7DYvHEqsoKk6Y+giUikFC3bQZdVgeeSE5dXF6yQKAQ5qh8oz2Lxgs9nUfE4DhFsMm766QSyycqLE8dnSpHhp+JPAMmPZMO7tyVJCEeDl5ZQUShHQ4E5rJulsAs7ie6aQ83d2/07Gbrj349r2IDSyIohKXGPv4c0I8OdXPjGkVC6BYt0eUT8hmeh0XzGaphDw9RUkCNV1IwiOpJD4OOH/RIhIkhIsdxDgOBwGKcZku8ULU6MYwba5ajYjVNO0FzZDjeM1YdyQgIhr0KG9Pce5D0+uo8wAwiZVXNXmhUPktIlqWLZP62bHHK9nwyKJ2cWb9XySyZpXtuGSxbzsfq1nnsDY5E4499z9tvvP4v5VVyYBkEhbDUuHu/ef2vvseao+6g3bW7ovWiJQqsJpoOBEkM0hCC6pWUKRKng4HGgzTEvKoGhTCwnuSej/5Sl+HNuIZOMTEMmIkTwyTimRmdtu/H3nvS4dpCESnhADcQCJSHuN03fK1BW5HVt/7whx/8h18qWqLAaYQoo6UmevM3dW89U9dNJTi/u2MeJmozzs2IfllcYLScmP+9Qj7D8zI/nyELGAyQQIiUCQSlVAdMnE2ctezrVgwDXIMlFSUoCdgTBKMkRWV7+oFAjsxZ+DdMSDi2KaXhlzCM6HlSB1PMts/DZXvTOtvxtYKJK4btm+p0NsJRVExMXj6KMgoZNTaeRu6gqg50XP017ShIIQpKs4wSpcuGhUWIWTpJ//azzyCyogAJM5PM5sUtnhA19HyULRpnBaOGcgmkycofmJHmMDdJGfMTUKKeDNzGgDvXBkmzcf3qy9/w8Nd+Jq+bBnInWAjLy/Zrvjj5rR9pODfYurpFR+rv+ExtMBBYCjEpWwP1vtUyrXZN1UQm1mQYkQJMwqRslFlPMUEEAutB9lLD8zKvj16szFEJU4sM5znUnVi8SDBDt1NFp9lKegMXJ8aQVyEiMmH8EAgEMknUbHSbjxt7j3fr7qjx2re++mf2ixYqkElQMMqLv/6S2+/4Ic+819mz5tNuRc2HsYvIFy1XSaj6WCRL/uUuX8nyUsty/lJiZYZ46rWNiGU72Nz0hrynoUlQYRQADFN2MYHAmkEFeQHQvCDANPQDAKa7D2WQEOYnklEmEh3aLRVod44ePLxy+xZEAHgVOleg0XyoSqDLAgOELkJh3r9ZyzUr8vuOnxuHzLzzEBeZXSSt9sb2NqQvjR3qtooWKpBJUAjLi2zderB5PZLtDd8i7B25JKLawqUs2rAufz19oIRkKYqRGA8HIIpASd8d7ovf5Ss7wmNvc047RVGV8jnsBgIFkLOp/MJ6FxmoRxpRJh23MiFV9mAAIaI0wMrx+DbtCJhISZlIDRR7L9x5/KmnenFia9EgSYwxob4H1oGsUVRRSmB2c7BcSXnBhsg3rHXugOsmag6OrtrOi0cf/1AukgSWQTWmYdaQjde9bfBL/yBpPNX1vS2iNptN34spJHJZecqVz7AuxKJg1YjUeD/oUqdV77RJEkBApIaEyRMEpVtPFAiUnZNJI+Yrk/MbgfnzOPN3ApieHxydpVMfJk7QNP0og0igsFFn74EfxKwQgJmlhGmQCooaOne9WxnX75csGmdVCFFDz8d2l+/1H2xub1FfalHS3fy0j3/P27fe8CVFyRM4nTCCKymNP/c3t559E/Tqg7pY2d71D9t+l2sDOLfcG6+ohZBL13QvSjG/S02MJ5+wCJSUASZYBcv1x8RaH9WUozQGPSBp7IZAYIWZP7pSP3nG6JMMHThP8Rskhers9P24BJ1dIEAqYxlSbXAoT2rd05MlyPGe9LMqQTQteSQYQVR1KOpQjxGIknqIqiqSDrMVn7z09Z9987ln+iK2Vkv6CRcVli5LhymoAcrS/cqmM2jZckdWxGWUMn7H8e++UO7Qs7OoJTCv921RS2AW9b4x2zSIm/0ocv7JjcF+m/xHvvHZXAoP5E6IMlpSok//zwbXboD70os12hQcbtnDrlwxJ4YIOVPGWc0cKFk3eA6K+V0SViYyQhAoEbFhFbiExAMCMsqGyBClaQ5X8+UJBB7FvDefTjs4e07mYZ3++/jPKfPgTLs938w4Pocmh5pp6vlR/FOi4WeCKhMUCgUNFVfte3/7macTFTYGXpfuu1CRqKGlWz1dtmicFYwaOkmWQDT5YQlSZ71Vy37dKKfxhqXNgT6Ap667cc28eCuKrbb9tWfav/dvcik/kC/lmoYJpNjP+tre+/+hibfi6PoG1yx3fXwTtGvCuuXA5dI33kFZuCHWCHtJPJKaBXe61Osi7sM7QEhhZBhdJhBYa05J+34Ozm4qybwLDY9OHed059DMmO6h6QliJhmPENKAosS9g0MfJ0Tkk+RS8ygGFqFsroOB9eSgHrtavce1G7bXEfOh5OZe/bE7P/buW1/5bUWLFphDaNDLiP2sr40+6+sWu2bZriAr6gvImvW9qjJXUpCLFDwJe1NLtraSnV3UtshZiknrsapCdJzxTJihuqKvT2BN0XT53FQih5Gn5dSf46Mjz46ZMXlqeTt56HjndLGjD6kxbHaIrwoaZR0cHhpa9oYXjg4NfURluJ8AjL1GR56lxx/gOUnEAC4hp5/2uldvv+wlfabIEeXriz+l/aYq6JKXSCxKyaOGjh5giBp6Popyclm0e9RMF9Ws/fO/V16uoYu+b0f//hc+8c++JZdbB3KkGrV03XAf+OmiRQgETkOYPQHiuN+L2l3b7RM8NUi9QsiQNRwBEO/hQvDRwPpxduvZkuxsUw6lBPCcGzHhTAbMkeVQFcDD/QekYkHGLHXJSZhDWpCKKF2Bs6NKc7dTrsjYysXum760aBECcwgtSOnYfMmbznMZ0/wt8AiKiuqZF8XIL2rEEJHapF9vHdnWEcc94QRsARaQKkEZQqQIrs6BFWRGj7qIXnfKtQsVex4Z0lCik4UMvUmRRowhwtCMSCBSpgd7e67bZ1KPZSfFDTrhIzh2BhUKrqFnJ7jUFksCeepf/GnRUgRmCXkIy8Zz/uorn/2zf2tv4Quz+s6cdMIVzWeY5Wlb/aiky4WFYEhZrAj5AfXhGaoD07gmpAp4FRCRNUwqIpXSsQOBR5GV70Fn/tQ5n7MKzH08OiMAiEiGo95RknoiApSIhnumxSAa5axnghI4IvIax0f3Hzy+s9PxznKo14USrILnonxPbcn5A7OKWXB4mJfO3DJu8Nu/mktRgRwJUUZLh7937+j1Xxchzqc44nRmd3ZbtsJT8Wil1Tetzg3dNhu08NxEngGIEWXldOmFeCQi1homMlYBqMJaIhLxROXrggOB/DkR7XOoOur8hneyockctE1W23GiiKyTZ8rRSd2Vxo0AgcCjDzRacXiifRjrh0SAMpGqB7OK3nryyZiFFx1aZ0aVzIgdWhSi5fK8K1s0zhWNGloUy16amt1cFPNO+8bjL/6dNxdy68AphFFauTA3nwE+dtW38ytyfsLx/MpfTYTmb4EUIgWJiHpBQiQEK34j7mlz38SdCI4NgQkqolK67jcQuEwmVbJsr87pNBJ51Zm5w3HG6ZnTpiQBiNIoo6oK75lN++HDfrsdRVFOQgYeQbaLYxjCncb8FXjFuYYuezTGOn8DyfytIG609gFceVXQCctFaE3Khd//T7tv/6Fka6NoQQKB0xhYAWCFjURKLEwgMerqgza1D7XTNC6mNIyhaAgqE1gx5up1F0/DkFXCQiXPUyxPLHdM9+u0ZpimpkgPEQ/LIYPUqxSjJYWilPj9e/dl6ROLyx+wis7fqkS1Fr2vNVVZu7hsOds8eMt7P9r8g9/Kq8BALgSX0XJhPvdbei/9C7Z7B7zkydfT5ofzoOIuo1lUX7PJ53fpR8JKNW8MWZBJSAHPkAbIJcnACUzdRHUQqwqDV+DBBQKnQ0TITGNz7OpJM/a36Y/HR6dcPc/uMprRsuvQN3SqHB021KNk9AAYpBj5jx6frGJAANRAE19n24deefpxs7AqcmpDMNVryKPPvzhV6aYenWYgt+UAZyKzfy9XQ18uaU77hU75fRdwwaUsV96SYZUe6q2tazdav/vLRcsSOCYohCVi8/VfF//2j+LVX21rIDVLXQOWvcQsX1elk6tEStc2LYTS/I0gGeGey9Yl5bO2MBIiQFiFBBCjSiAFx/BMajSxvh+pN7WatzVRYxjqBRAiEFTFA0SGKzMgCwQmyJwsJx6qb1OLA0frz+ZcNW4Y00uGythkpRyqbEojtY1GK8MnbO+qE8bAk82sDjXRcXr6VOsb+YwRRikHeaQopvtHZVqwJygciI1Xgca99tPPPNNnrkeRemFiYk68ZyIGadZasqwB65xh66WsPStZ+6OS0cFkX7HcBY4VWSuYpmIoizTIHA0Ay31uyw8OkQ/eSEPth7/7C2989bt6wU5YGoKnQYnwV1/62Df+7Da8dZ2iZQkEzoMxEcGwQhLn+j3XbVPSIxavooR0RQOI2EREVDXXrEDgbGR5eD7S83PeCak6QLSMubTTZ4SPhdFU4WTGWEtUPNzfr9Vq/Tgmw0rw3nNZg45WxVUvEFgHrgx6CQ8+/b0fbdx6TdGyBI4pafO9pjSu7PlrDh1rdgqTIeQzPCdVz2eYDzxyNmNJfNKV3hH3WnXXBQA2YKMgJSZKA9ovO49ZIFAyLp5XcHrnaKXfiVWCU39OZ6VPP6et+nA3T101/jCyTckwSqqFACbNVkX3P/miIfZelYyAncCShTKUyxbE4kwmycskfUont6LI+r3KJmdFqMoERFFy3tmobyCODm9cf/OXL/tegbMTKnZZqL32awbv+44GN629fnRafVy24rHkOFgr2sGEqKQpIoAqkdaYInEU97jXNN1DUjGE1MihXr0KyudNGwickYvHj3kE83wA6TiJxTmEydAY07kZGtv9ePYWSjNpzIhIBCDuPTyMW52aZQBeZWwelIr4rRVIVRSGslG2adfs0dJyJWXI3C2v8pfNrm61+3ZzJzY+eeOPfqpocQJDKj8QXxnUmO2/8tNXfbut3bqWL8posByuOFkd2GIdWzqsYQURRYRIHCV96bWp3+G4Z0XSRQ6krEpLH1UHAkuD6NEv8PwTTr1q9hIi5Laye7KUURXWsRfo5J5R9toxhiECAGRArFBDjMTtv/jihq0BEJGaqYnzDPIFKoRlixq6ohOgRREU6dVgQxvWcrv3qYgRUwhlUhZCw1QWkg+81+9cuSv1La+GeosXECyHZWTdLIepEcNDPVQITMri4QbUfojOEcU9K2LOMJIOBCrBnDd5tGduvNDxoUWrwCNii5wi2OSNpmZh+MSMHk8dnSiH0gz1yiDynJ5ITObhnbvqElWvqswgVVDIcxu4KMESmJKXJbBsivS+f6DG7daf6Zha6w9+vSgxAjNUfsC9GtjHXwW6wvqkAAAgAElEQVRAOm63EUnNkwvD5UBFESICGRFRVZAhIhKqDY64f4Rem1w8bnQ0tD+BNWZSJzxNP3zUaafqlieGp2PNcnSVjvLUnyyHjs/R4Z9khBhRJFAiSg4O+0dNUs/M6iVdGTztYboUyjbAzaJ0clZkrWDpnlsGVZGzbFxvXOW49wIOqO8/8n1vv/aGLy5aogAQFMKS4O79wbVv+OkN9NoD1+OriwUeCARKg4hgGBGRhwNNNkLYUG9drP2uxANxSRpOJtgJAytA7vnoL7VeZKxLBDA1PFDF2KqpytYKVEQQDzrtJikYKiIMBSQsJQgECqEyCmq772u3ruu2ifpv/JGPHPx/7ytaoAAQ8hCWhOhzv6n7+CstJYzIUX2XDmPNKzF9PnnnFi8+rzFBxg0qn89QlPTkRvPTF1Umn+FkrIrhB1VGuk7AswysHxgZMJG3dTU1sLAg8gpAGGBhRd2rD2PKQIlJx1iZmhvRKCHh2LmLRknChgniZ0dpitn2jUZ5C6d0tnG+QZksdZhecCYbYbqT5Lj1ON4txzkP4Wnk7K3DhYJEpERA6ik6vJYVAiJAIZIGmyHGYbP5kpe9TAzHKrZe94mrqVm2V3z6eE5uhVGyvHxVyR84CZdAmqz8gRlpDnOTlDE/AWVe5RdGxvuW2C2RT9WwAV93jOj6zeYH/u+iZQ0EC2EJaLzu7clv/kij15HNxzfdUa192PdbRQsVCOQJMzNZIhKfSDzwgx7HPXYxoELqGQxiIVarwCDMUwVKz2J2vGxvzPMyr+8+Z5lz69t0+bOhR4ehaFRVB3Gn1RTnjDFxHDNzkUFlAoFA6dlIBhFfT2zTxHW/k3zqR79z93O+tGihAkEhLAHm+tPXvuEnN6nZ78YPNnd3rm630S1aqAsTopI+gnyielYFUdJh9kEvcR+9FnWbtncEFbB6Q57YKLMnJVZT+e8bCMynKDfp+fFORx9OrBY7TaUbpalQAqnCy96LdyMwKZRAhvN0eS1b1NAMCnPVq8iawCzGD4pK7uJYMirjGprBp6KmMdbZKwfmoQzMZ/6vnzr6nV8oWqhAcBktAdGrvtxevd6iGw3b3O7arhlEbgO87EBtS3YlzXJ9DK6kpzLHa4SgVA6fnjMx//mLKhEMwMQMQDyLNz7haFMAWFZKdUMArFz1nzGw4px51d/0ezw8TfHoGq3HV08VPpURcPznaaXNr0s09D4dO4SmTnF0nERw6Nk68kYFjTsITd1GAZA4WNsfxE8//xKnwpZVlZlyG5tWpR3IrV9bkMyGsho9xtih8JLJcg2ddlwNrqFnZkFX5BuQfnyFTX9T/AZtkDV69Xo7eI0WTelmjNaNxme+o/u+d3fMs4l2Gq7WjdAY9BNji5ZrWWQpPIFVIdPCyToMM8OMiGBdQoNudHRo+11IAqNqyBNI1PjQLgVWHD19nHkyacR8nXO++8DZ8h+m+QZPnjaScHSOEii9yzh5PUAww4WGov6o1T9qMYY2ijSy1ELMXe9WxlmhiljeykZVLFpVkbPqEG8n9l59fwNmM4HcMXt33/Od1972Xxct17oTGrKCsVdvX/trP6/xp6LoySOCqZkm121tUJxEy3VZJNK5W17lr2qHXfV8hhEbADqKpQOAWC1UOgfcPuJeB96BNfU34/K5hAUCeXJGp8o5p81tjcfJ5TH54dQIolPXpl6gwz/n5ImeuCMRCMpp/Ctma+AF0L27dyM2zjljjPqVzUMYFIbzkTWqWLbmH/IH5kxO46skdl00Nm8OGj1qxXh5fOOl/+LO9pOfsQyRA2en8gPlirMrGzcNH2y4TjT4uPc7Nmk+FXcH8WbRggUCeUI6HKd6kEOalALKBOpT0qm12lGrY5JYScSQhAFWYIXJYYndeTvuU2997KlB86yOw5syRqnqiQiGAWE2+3fuqXioJyKzuIvdqg58c6PiawUfySVbg0v3vq0ZcWN7p4Y9xC9u3dvdGLxA9RvORl/2tigOP0GRVK/hWCXsZ31l9/3ff8jXBrWnDNfY9mJ/5cH2Zm0FgspkQBkULVdguZAqRJUJZEDGQT1IlKhBFi7q9Wy7x/0YokLwYWlzoGo8uhE7ecJF2r2zD/pPv8swQ8b4r/HJjOMViidK0GEue1EBoM4nraN+t0dEzrmzClZigsIQCCwP6h+o7zb6jZv6nD3caojr19uf/PM3bv6nVtGirTVh5FUkfPs19S/6TgMlTYSMUSUSSDljcS45CE1G8ZrhZLG4DrmqQWiy8hmW6yXS0cMezWBTunrJUx0g1YQlhuuReljWKIIDgy3Bk8A4MEh5w5MLU1iBsjLO257+AWCYjTBtyFIHThqlGqW0Euh8hY1G/04enF1PONH8DhPzUVrxp1WXkw0dpScDAARpZkRVqA6niBUgGV5Jo3AbqcNbetqwEI0SiDWAwOvm5kbj+lXPVIOVrHZVNCuaRyk4jo1REBXMHzgJZSTsy74gn6+SHSRmkrNkOswa58wnryAx1ZlryOmVYzZSU1LR2NU8QeDNzd9vDf7od2rvf393dS0iJScMr4rEfeB/K1qEshMsiqsNOWGFJWYIeU9xn/s9M+ijRgKfeM/CpDWoUWifq9JrBgIjzhTf5cwXXpw5oWVG+6cVzjM0s8ZD2VowQ+TB/T0LGGJfmdHtNBX0tAyczuKW3ozo6IFLQNH/23+t+TV/tmg51peVjWZZfurPvGXwyd8oWoqykxWAtOKGvRyp9iCGRYmHQ0/ShGNiBSVJn6FEZCIoG0eAOvZilCoUSCcQGHM+7Y4IWYPXUw7lc3dObZ3HVxKP7JwG4lMBJE06SATi1v4D1+6ZXeN53hrEUnKsGyiHcf9KU5VXcq3Z1w+Ani5aivUluIwWRvTc59/48/9gYKs+wF2uK+nYzWpmC/kMT6cq+QwJRARlCAmgpAIR9onzYqOI6nWvUAcGYIxCyvcNAoFphs6iMy+qzp5wcv9UIRMnn9YU6cyH7OoxI8CUB+nEPShNk5jupHHuwXEGxZm7sCJxEK1b6+Mk2trauXbVW8605ZetWS3cR3SGiuQVXNg1dMloZv7AfERjzSh0wXFCZVxDC3JRfuL3+/LSZ+U3/q3DKixFrhxh1qQgzNf0/+N7mxsbRctRVUI+wxWByTMcqSdWIiIycOz6tXaHOm2fdMGKCGBirxR+4EAVmRtO5uIeoQuVkH0yEU3H3B9OEyuN48qMD9HkIQAwNrUjJirGRg9fuEuJBwSi87eiKFs0zlWPGnrJhCBA1SLr90rc1eQH/iF993cULeCaEhqagvA/gy2N3AoPcEM+wzJStnyGSgRAUwnYwLACQthgkdahHjzkpGusF/KiLtLg0RAoNVnr7i6y7Hnq2twWFk7N9w8XZj8yYcSUJKM/rSVrxCfK1Ds6itudEuYhzFYYKt+kL5Xl9uKLk51XMIvFTFus87dMBb7qlGycw8mgpZ/Y2Xm+KAHWnDDAKoboM75j4wubdQNH8+OmFC3g8ljypN2yjUgVdyXNisdWlCtmatZlEKca/dBfl4kJzrHzpMLMnknJaPVdeQNrxERLnu33+SiXUYyih86/w2w52XbA+XV8uHx35r469Ckdik1pvRu6wo5CnDKgUHBaK8UpQF5so1G/uWvKNrTI7BdyXuNwViriGrrAOtVLITtF7Sm/7+knnKmUlXUNXfL7tuhzEIqf+GPnX/Hyox/7x0sSKXAKYXqsEN6e/NH32A3blOAnfU5C9NEVQdQojLARhpB6AKxk+hrXI9qCRO2OazYZnmo2BJQJVIOJhmhuo3SOlur4knxbucywXel/E36kc09UQFVFUa+ByBIf7O1XMxhwGAsFVtcSWBUMXBPul38fX/DdRYuyjpRsGm9d+ENwUn/NH9WkJmZ+W7O6Ck/Wmu+Qz/BymC9/YfkMiZSQ3mvk2qMEFRUhCCkg5BMkDuy5YUQjACRkiUghkoAVEYcuO1ASaH5QGRra22brk04enz0fNK4UGQ3kuIHT1LSeWvOOq62O48FMN1PHQWIURMcWTNVhEsLUNDjKPUikU5JSmp6QQF6tgSg8GzJOksT1bt+64aPNWlQn76HKxngVArEu3YFD56eFO+WuS04tUJG8gmULEpOdV3C5z+0cKQSrQcnetyzqMGr4w93PxHu+oGhZ1pGgEBaAfeXf1a86IGxqvdB19uViuc8hwzM3vwaxMgphFlnjzWL6DE1/HCZK82arQkFetFYDQASvqmTYGIYhkRL2bYHALLPhPYGxT2bmJaMLM33lxqrd8Weac8LE7U7cnWZP4CmX0ekyUn1Tx1czAYAXVlUSiLMbjZ3bt8U7pqHmSEyEPOLoPJKyxZ2qiGtouaQ5bTSwXElXViEs3S88H4dEhK7d6Ln6M4Pf/z+LFmftCG4Sl8xjePUb3R/+TzelbjTp+m7R8qwLISrpoyhZ+AAdCcBqVGpJEvV6ptnUQctqAlZQ6pjGDFi/qr14YG24eMhQmlED5xkqZ//kaVVv9pJhNFEaxfcdH0r/pjRaCxEzAFU1HMHr/t17EBURDxWCQEnzXlVVsmAYIWpovlQlamhV5Fw2eT0HT7FtEHdrR+9912e/LXiNXjahYbpkOvjgx/Df/2Nq14ynK3Jr0etX15U0RCUtI0VFJTUKKIuqEGBgGFZi6wbcPKR+y4iDAaAi4pXAdukCBQKlJSOJxdn6hXlqJAAedSupAVB5+GFshEujQQEQUQwVS0sM4kGz2z48iJgE6tOgUN4j10gbYSB+Pko27XdK1NDlSsqQuVte5RdGxcchxm3G4k298c4fV3f7pUWLs3ZU5kVZFTywt/XiSwdwA9rs1/aLlmfdCZbDcmJBLOkQjz3BGxVWzy7qdal1RJ2WdQkMQBDyLjRjgUoxX1U7VX+bvSTPScATJkGkJvpRikIa7+FZ5dOYYSBKw2RYRMhE8HLw4l1rDAAnYikiUQACv7BoFR/glo2gSAcuwrLfH2tMRNtkuv9v/wW5eiWvYgNnJDSsl8tzrwMQ9dum/nS04ThuFi1Q+QmWwzKybMvh2PCd9jce6kg9owGYwQDtpu21NrwzrAgBZQKVYJyCIjte6CW4e8y/u07cd+RHOjEvxhNScXoo3WOGYWwAJmVyKkQE5ubenvQHPFqRleqUymGm7ZIIlsCUvCyBpVOkV3RckTinyYNaHNvd3ge/522v+PzvKlqi9aLyL1C1oCvP46//hFM95I+1/eGWfFpuJa+sK2mgnCyeIngRPImSEJEFGWH2ZITJk1qQCid9dI7QObJJTIKqrJgPBM7CZLt9Wht+oeQWJ4bdY9cIogmT4OyNZvYcj4mViK0CZBiqSatztP/QEluy4py1NZwrbljpBuIVWStYuueWQVXkDFwOZotZdr0z3N340r+X9LfioiVaL4JCeKnof/ypWv/xmrm1Fd0w3VpsHxQt0boTFOly4sj7dAUTyMJYYSNsYWIIIrIMHfR9u4le14owhWjJgRVkpiG61HYpY10igLGREIB6D6TpyxVMo5WHiiRpHRwCIKIkSQxxGOUHyk9QUIsldo5sfbC5zyb5xGfe+cT7v69oidaLEIzhEnnu1fjYB7cbvRZ3d7oDG9HA7FppLfWeWWOI6rdxWXMZixmpMp9DRvGasQpm4bFa1uRxZfwf58svGfLzgpPl4/MFKuSP8+MoQzwrGiDvYtc5YMTRxkbXbrNQJCyExAhoLEuY8wpcHml7QicNaClEabykiXaE0/OAYYqCyUs0zQo4TESI8TnDZEWpzqajBBDDz4KxtgYlIlU9zkaoaWxeHbUzo8uPk1ukCl56Mz/+LnqcHknGgiigbABABWy8erLWeQE1CMnenU899YpnOapLZAeqJNpgdpkPLqueFtRPZbXD1ffKWypZvZcueV3+KsSDmUtB71tR48N6stWxXXa1WoTkMAJw45Vvf/CH/7IQYdaQ0LpdIh/7IP67n6X4emMgXdO3m5u11sOiZQosRrAoFgsBRKRMShB47xPp95NOx6oDuYHxiQHDGDFGgtkwUACLtQbzlhFe7P7z+vRzlnlcg2bWEB7vnCn5OBQNfJK0Wy313lqbeEfWVH8WMhAILJEkur8Jqtl6/KDGj9Nb351sv/EvFS3UGhEshJfGhvmCb6zf2Wg19uLa1lay0djr9a/3MYiKFiwQyJHlzjGxpv+IMJEqqWjcpyRhE/l6DfUNwMKT9SpEYCMrm2g4sFrMyVl/Wfc9qaeNZVFewGeBSEkp/ReA8/t37j27cw3qASEygsyvWJiuWHFLYNZzCzOUpxPmJlLK9hwi3zBMqpuDK3e22s/tvfxj3HqsaKHWiGq0eqvAy1/rf/Un/GAg1N5qx3X0m5syGGwXJc7qWrqWHJWUde6WV/llC06QF/lGJU2vVaaIUINE3snRA9NpmmTA8EqISSWs/QhcOudc9Td2Mc2nAb5IczHMRJ/+oTRskSYT0xMZTIYMJRrfkdIU9sM95sGLd43COWdqkV9Rn75iKSqaaNWjhpaOFe33F8Vt1pKjBNqyuNnlTzJufvR//oqn3/6tRcu1LqzdC1cYH/r3eNd/e7VlpH6lxjtHkCSSTR8stBVDs7aQz/BSGCcESU1/zLAgC7V+UOv2as2W6XYUsUYkES+6cDEQKBylU+07J5NGzNc554/C5yuoszv5OPfg1O5hDFId6oSsBJpUIFN/URgiUsMA0O31Wk07ymmhSmHgez6qEuykKnIGyomPk/jGDrxPkuh6/Ji6B2/533+/fvvTi5ZrXQgKyeWxdfexzi1jut2OMRG2lToN7rcRXEYvh3yC0GSTVU5OY53KB6GZT5aRMMvmOtKxGaICMJEARIhshCRxrSPynoxoY0vJ5pgXMRC4DOY6cM49bZa0ffAndsowrsxMBsJH34gBAZFCSUGUrgCcLp/McXScNGloWqwyWaOJA3jvxbsvuX5j4FzERhOnq+CEUgBFaczZvctygwDlZfQrnS66ZkFiFuUKXd8f7G3YnU3Ifeo1rrje4RZ2niharnUhzMxdCi/9bACDxsagE0e2Xhsc7th2o+sPebNoyWZZXVfS5RKe23lZLJ+hqhKRAbGCFaoqUAclIjGq6mjQqbWbUbfDLlZTjV4wEADOHfplkvN26Kfe+tjTgeZZHYc35ZFDKRGRMqBqjN27czdJEvg04G9x7WFF8gdWhWAJDCwD37xXtzvOSjdqbsW7epi07K0//d6vvfkX/1bRoq0FoeG7DMxzn0ff9E+N7l6pma4M0His6bBhN0n7RYsWCFSJ8ZiDYVLfNgELm8SJN0QNw+Rsp2uabRrEwWU3UDiPnhXKTvt+Hs6uzJx+F6K56t8wCWHW99JRikIFmBnQVnvQ7RGR9545jDcCgQKoigKfbD8VuRd8b4e0ETWOGuZGjQ4+4598uPFM8Bq9DILL6GXAjWv15GmYVs9jE3VBzyh61DeoTGT8kM/wvMXPfz4hn+GIBfMZ8ijDNenxuiWFgsmBoSAIHJJWvZ2YpN269iScGKfE6uDT/IQR2FWn6gWqDhGpSPpptMsMPTbVH6eAV0AVxCACjxK+z20/0mLGh8b+n8NQpTxuvsbBYNLFt8fN9bDdUNB0IN5jV1IBgUaLdlUVBIBAgjTNJ2SYXk7SQyBlkCgMoCRejUlUDLj58U/e/sxXdQHWCMjMRJgPFY8aSgX1p2frLSafYZacWf3X/PNX1jW0IDKjzlbEWUn9IehxS0fwGMAAYgTYbdgrN4sWbS2oRitZacyb//Pkff9D0VIEykVwMc2X1E9tNBwUEfFJ7OI+HR1ZcajDMSAUwRqOkvCYA+XkLC3AklqJOaFlznZTnhM+S1VgDEQ8dG9vT5wnhWpVZqkCQxa3LGWFXQsEzs/HfvDrnn7Hf1W0FKtPUAiXTm3nRu1d/7ZoKQKBarFY+PKxRZGImIhJId4PBvXmIfWPRBMYJTKkrGoQXNcCl8+MTkU0Z+f5ijrjoQuePGToMooTZgclHNfQtIoxk+G41W4fHkVhsFFtws8XWDpZExBv+bkP1W+9rGjpVp/gMrp8GlevPvzjtl3N9JrBlfR8ZKUu1LwiY1belXQ+2Y9HPNSACELEFlBVUbWuLe1YIbS5y9YkTtUrjD0RjzEQWCZZ+R7mumueMdBo7m1sWuZxyRNBSocZ6iddWIdhSDH0Jp0qh9hq3CdrIABh/5MvfNrNx/oQqnq3kBNFuYZms+SooYt6mGZQmXFFRVyUy0bW6zC473jr8UsVZS0Jb+1SeRwv+7LeL/z9Vv120ZIEykXIZ5g76chVNF3qBCJiCHFCcc+0WqbTVonVCBjkKjKqCKwb4/WEFywkt5MnzPLjMS4bDBWF0VEiKKVZ6dO09QDArJLuocP7+xq7PEfzIWporlQl6EggZd1+rx7f+tD3fH3jzV9WtCArThhpLpXHAeC//GXb+VSNkqKFuVRWuG3KYLmL42nZY5qKWw7Hz5/kOOWaKoEcwyhsYuuyvYPNHSULxxIyUgQukcx6DZlzSHX4Pp8MKjNhYiOdLnbq89gALuOT54tBAjlRiJ68ykMnThYPgMYFavqnDk8WhbiaNXG/A3gkHmxf9blv5MeusuYUzKkiwWMy7W4lCx6jmZOO4/1nEjjbEriiwWNCXsFzkRl6KON7GRvdr9Gdrw9GwuUSQu0tl8bn//Uru5uRH3heL+/c9Quakk8Dnfnclm0lrLgvlyqIGCAFKZGCUq/cUeozgTjjHCuBjTPpyYHAJTG36aNhUNC5ZOynqY9ZLerEbj1x3cypSlOF0sRHokl9gMYJJU46tepsSQwDeHEghaKmcIZ3nrhFebVjme1VybqYkg3cJVOeRyqEZ3qwp7xmZ7l8THUUnuW+b9V5Dguy4PdqaEt80157uvOBf7MkiQIILqNLxX72l/X/3T+xftCpreYCwkCgJMg4rD8RiIh5pEqbBJLAReRrcUxHzaTfQy1MhAXKyDmmzI4vyXe6LUtzG4bCGdWgrLWRRHGvl2qUtZoV5x/c31vZ0W1gTJYrbyBwAdru+nayff9H333rq76raFlWmfUyW10yDNp45893YrkW322bzaLFKQWrG4RmyYR8hqdijAEmPJ9G75OqGrIAHECWiJKt7h719ttPvRSxsidmViJhQDwBGubIAsthGJ1lAtU0Z6BCNTWhTJyQvod+NuXgWE+j4btOOq/ktFiMZuIptcwJYeLMUeQYBcAC0WFEmWH5UNBE8BOCjBxHgWOPVtZxpBml49pHgNYbqp7JxC5BzcAN5IW7cvt2ZKx6z8zC5L23HBmQ04z8hBVxDS1bkJjsVnvR51au71UYJXvfKkNO9YLoXiSPv+Yn4sNf/8lcCgzMJbzlSyT+3Z+sCUtt+37tRtGyBJbNYmkS8mL9XHMXYzIqqapCVUREBPcfWDegBjkDr0qeDNmgDQaKIavCXqQiP/La8xR+uml90lFVQcTMIgIvIIZzD/b261HNe2+MkaEIlGYNXVySQCCwLgxqG3Gk0juIrlwrWpZVJgyAlgU9/2cBxM6KqdfloGhxAoF1ZKwbp0HYRCTVCbeODrjX8tIHCwBWqOa2vikQyI2Lhwyd3nmm2aKZYKfpZ04tkukuPt4/+WFchXQU20kIIMMGogd7+xAn6pRH5k0iIhJ1IWpovlQlCmVV5Fw24TmcznW9ddSVqKYf/d4vv/rV31y0OCtLaFiXxE1cfZn9L35l07p65+PGBNfcR7C6lq7lWg6Jde6WV/lVH5Cd7FNVlYCGSdA5wuEBBj1rQERepWwBKQKBC5GRxCKzXT1Lvnsap5cgAFCevUoJSHeqkkllYGawibu9h3v3IyavIgRVHUYxrU47X4wfSDaSsS1bUobM3fIqvzAq3t8VBWVsefFA9p+oJzbpP/feDwgaQLATLoXwoi8J0d/91yK+DSf1TcV20fIEVpOsfIaBGWZmGZIakY/NUbPebNfiPsiRyTssRyCwIPNVtTzzCp775KlshEQ0vYdnlE9iTq0eYAO2ImqMgWL/hRdrxooI87BQUuXqxHgKlpzARVjV92fZ34ujuG+s142Erzf/jx8DenmVHJgkKITL4fm3Am5L2qxdsXbQi4sWKFA2ljzXvOxobxWZST3ZI6U6YVsckW6pRt2mtA4o6Rh4DibCwOUz0qNOiRd6Ce4SWXefuC8PvUaP4amjE+cT0TCSDRExe/EAYNDZ3/eDAVGapgIAVH0JXbWDJTAlL0tg6RShivRfZWPZlsAsdnqPHcX9uhxtPtgBDq68/guXf891JFSA5fD8m/DOn4Oxvdot59zuZnAZPSer60q6ZEYJGGa39WM2Y5qqqpI3YCORCGL0W2g10e2yywh1GAiUgLO2e9O5BB9ZzqLFprGXjr1G5xWl6jG0IhLbCATPAAG9/sHefUMsIkSpYginrmwD9NIpMBlURc7AalDU+9aoddlESWPX7hy95p99YOPJz1j2HdeToBAuhVrdgLrbvf0dJKLU90nREgWWTVFzZ4FHM9NfkegONVSoR+JqahBTt6OdLlyop4G14Jw6ITLXJQKYHE6o98enMYNHtkTRg/v7BuS959F8X1BgVoagoAaWwR4SGLvdS3zy0NZfc+8XfqBoiVaToBDmT/T858a/9O4n4vvdzSf6SZeZPTeEMHcLrAoVWc3HOn/Li5LN9M/Vy5VpQAkT1SQyzgosG1+LH0b7H6VBj+DUipJX9YaYjC3frxioGEO7dJaDAxHIKHh26KyEicyaU0fTQ0oKUhCYQBNZv0ZqWxrrE0DqYJheJJgqSlVV0rSGPKowY2MgKQjEUA8dJSEkQZpWkUYpCInASqTKo1C9FEEJqmB4HxNZFQZqBHN4777v9ho2cspCNRXTkOBBMyTLNVSV5m553TcEicn5thVXjGeGpoVPb9fdJvWP7l27uumvdPlPAGx/+luKE2dlCQph/iQf/c2r7/ypvdpTcb8jdbthe9TqFy3UqrG6rqRlW72yXtSbD7nbhAhsnVEzjtg5BJUwcFo1xyQAACAASURBVGEWa52yvTEXumqCR7UhZxdv7nh6cidNlzY6NPwKzneaLUkcM3tJiOjE0sRAIFAkJOVSaE3Ur127LnfuW9dv0I3X/y8vtv/4N4oSZoWpTnivylCvff7fGNx6nhxxfZNiob5r7JLz8/vj0BMGzsaS2+JlB3agauhUNm6reIEhs8EceQXgGRJy1gcuyNkUwhPVhOhMlTPzDJ3/eW51JDo+MCutDq2OqUVQaVSj9fjWqXVwOGocF6UAAUIghZB4MBzj2mM3yUSiCoJhSEHNQ9YYt6h+OfsxLDmk0IL9S3WMXct9btV5DuenDGPUJHZR/2B7+9YLYm09asiB7j7d/r3/q2i5Vo0wysmZ+hvfEf+7n6ijDnQ341bMJA3tJ1eyzs9yJQ0upucjWA7PSYhKCgBwkdqkv3F4VGseeOlKXcVakwSXtsCFuGgcl3wasItUt6lrlQBlgpljCRzrjdOxbRQAGYBB3Ly/p4mDODbkVaS4cUhR/hhVjxpaOirSv1SFskVBqNU3Yr7d7z143IrRvRfk+p0f/3u3vuLbipZr1QgVJmf0ytO73/rj3HwQRY89iOq7PBj423AHRcsVCJxKiEoKAHCmBiLrO6Zz3/QewLWVKDG1ouUKrDu6yOgsW+EcahfnckDl48wTM4dGf+lk+UqjQKNDkYiIrCEFer3OwaFlUlXmEysnl0BV1nRVRc7AalCV961L3jbqlg0GNZ/sPpHce817PnHl6ZcXLdeqERTCvKlvdjuRu/FEVw6uDQaJPCY12uCQhzCwJILlME9MbIRNHInXbq15sHF4ZJKe1kvXQQbWi0X0t+mMgnNbg6HONj+8zSMYljYyWjLo5MKTyfWEBIKS0dQr0Vr1Hsbu371DEOectRb+Ufe8MMESGPIHXui2ZXsOOVGV2OhXXXu/H0dR1Kz5XUR7dutmBOw8XrRcq0ZQCPMk+pyvj9/3bhhvumZbokHN1fUFjnVgrhYt2rqzuq6kS2bNLIeRF1V1TMTGOmc6HdM+xCBY+APFkUN1O29Hf+qtJxxZ+eQokmg0thylqk8DkwIw0KP9vX6nS6SQEualXzqrqmAEVoNh8OLyvI+yu8txbHzk7yfiI1N7wV358Pe+/daX/jdFS7ZSBIUwT2j3mc1v/le7iNtkEup5c80lW1t61A3BewJnpSpzdquJtWDvOGGDhnJdxFH3qNF8ULRcgVXj0bNR5zHfZZNhRTmPkZAmijoOEDptFZwrAkFFYNh7j8Gg3WlFUeS9Zw7jkECpCQp8sbRqjZ3koEVas7fF88aANnH/tT98t/5U8BrNk6Co5Il55RejcSuGsYgJlsR7A09k1WcO9Bfs4kfZp2a3oDEEpllyX5Wlt+Y23Z9VX5b7vRwBzDy0XAhYCUJJQq5rauxrEYQp4QZbNurQJUTphapKJ332AoFsiGgYk/PYyZOH77nKsTU+TWhKDGJA5k8QDbP/pefPDVWKicifqQlg2P9Mv64ZFe34FAGN+i0iiIy/yehWmoYkJcUwD6KmhwkguAT1CArjFF6uPXELjZo4yau9SnPzXf50mpwpCy2fQaLFJgQZMndEsKj81dFtiokaWnkPo0V/35JNRBsZOFO3YhQi7GFUNYKRxhOvuP+vf7Bo6VaHMDOXG1df/Vfj9727aCkCi1H5hj6TkM8wT2gQu1YLvS6sUoP76mInlreOT5h4Z6ozugpUhAJbpDmhZSYPDo+enAjSudNDqb4qQtY0m824P0gG/RWuL4tblubqlSv7fAKBi6DsX/2ePylaitUhDBBzQ67ffv5r31+0FIFAIH/YOeq2qH1k4g5xokYUxki9aLkC1Wc2Yue8MJ653yWnk6eWEY72zEyoKR0fZVuDAMaAjOv2WgcHFoQVSHvwaMJYK7B0Vte19cR0dmoL54HVpCCRVpCQXys33Obu3Z19yPZil2W52C3oGrdoikJegSZimWQZCavftmaNS3Iak2UFIM0rEFxWOTkGPp1/W19Xln7HQXXbmcaOkhkkfk6ExUDg7MxtZ2ja6W/sBao63yN02aQ3Pb41A0JEqgplsEzllVdWkqH8PCstGYYTY+uu3wPzg0/duf30sz1ZOMwola4dzmrf8pEzs79edMlJ6Z5bBiGF4LlYAdemMzEaNjek9/CPPlisLKtEqHX50Hj2L3Tf/139CReyQGAdWdGopGLZGKp7V2u3TbNpBgOoA6+DZSNQAiYr0bkrVJ5GwokJ+/HYnc3EHh6WoISxkZDIKwEsUKgQc2f/ofb7y57NuQRW1zKzmoTfq8JMGFHa/umPfv9frn3eV+PatQIlWhkqP1ArD0/8ld95sH2X4yXnVMopqEawEJ6P9eszchqrZT23Zc8E5zTW9EatwHqFqKMoaWzq9lVsbjq/GitOA8WQGcQCMueQ6rg+kk5fO9kviJ64avx53D0dlzNfDJqx+6XnnbgqLXB88tjWNzzfAyCoqkIVCsCTiroBICyQOHn5G9+w8fTtrHYg0+5WUDuc1ZpoZjCt8f4zCZxtCcynHStd/1WQJbB0z2FBst62qn+vRzNd0RT2njX73/YKADgI2aEuSnB4yoeNt/5N99S1qJN4s+RHmtPgM4xhz8fqBqHJIqcOJstyuOwkZDlNoFgxXlUMiJlVkTjAGxZnNjByMF6P9yGQJ3NfFSLKrnejYJ6z15w8Ze7tHlXO8anTsasnriQimtVzxgLP3HsYZTSNOwoAxBYQFRiQ+Aim7921p29nqn4lG+BKpjyPVAjP1Cac8nOc5fIx1VEMiokaWnlW9XtlMPwdT4wW2O/V6m1u3O7+7q/AuQIkWy2Cy2gONF7/lb1f/6cevX4tmK0DJWGx8OWB06k7kHKfqW9IDddIo0FPDh+mHfPKDjsC5SBbbzzTxXmKcvoMznhNbfZNnRM2Bs4REStae/veL9mtpkKQzN8CgcBJoud3etf3/vm3b732C4sWZRUIA8QLs/F07TV/ZvN1f3GQXFcbQ6JixAiupIWyuipBQWORRaMkLUpOYyzj4sGNJ5KdW9CIXEJGlACH48Ab8AoGmIiIjUoIiRaYZX7rkbpZTjbswz2jsJyqEE0N08cljM6f8gXV6UKA6Xot45sMfTsxDnYqkNFNJw5NeIEKVAGfmgZJZbg/7UhkdM4IUoEIQ/2gByZIAmNe9oqXNZ5/mWUjzhljlMg5Z5mNGk/F6IqLu4bmA+fU3pauPwquoeej6vIviC74+lvTqvW297fx0W94djkSrRfBZTQH/IN7+Owv2RTT1R2DggZ8wZW0UFbXlTTL0rjkjqoirqSJjYwTck4igq2RMIuIVYIBMTFGrwYAguR238BaMNd3dGrn0Fd54ujM/3PLxHSx05VtMu8F6cgndMp9dOKPcdxRBXAcHXXyJpMCiwJqDIt4EIEU3oPo2jPPqvfGGFUFkaoaZlUpqkM6xet2qfc9R075irACXWFg+Sz4+jdle7O25SW215/ofOBXliPTGhFcRi9K7dk3o/epQYJ2tLPpekWLEwgELg+FoUHfdh6Y3iHcAMpKdrzCKo2+Pxo/i65FvrXAZfNoM0heM1MzAU5PpExU4vm3O1Y5FVAiA7IAgSy8HD088P2eescMJwKAueCRSVWiUFZFzmUTnsN6csX2j3q+Hm3f+9G/e+Mr/k7R4lSeoBBekGu089SNb/jFG+Td4NDVC/IXxShN58ltQYTmb4HzsbqWQ87YcmLZa2mU528L0hgkauDJR61WvdVkGlDE5M0wqKIOnerSk3llp/8Dl0UuTceihWSff9yU8ahZ4zTbBI/PGJ6W9kfGAPCqYALUgGCMJHJw926NTbqYUHV0MS+9nZSMbdntG0PmbnmVXxg5tavrxtqt+M9pvNoy/Fh06Fr7n/6evWU7Fa0DoaJekN7g936+J7VY6qa+SRrCHAUCeVCRfIaRxESkFMF52zuw7X2KOyBO+7fhSTpaeRSCQwTOxfwppIWmlvJMQnjM0CSIoQZIRACP/EXnaVBEUBIVZgaRhxIxiPZfvGMNiQgzU7o2UsLsSWCWVbUErur3WjZsrvRM5FniSB/+3PcXLU7lCQrhxXj+zcCBNz2o2xTp9stXgYPlMHCprJflUOpMieeEJCLRQa350B4eqA4slEmZeJRdI11hFdZsB87MSCs71vouEmv0/FLMv/vE/mEO+olehSfO4Vmx05A0TGCGSLpIcXDYTLp9ImJroJx2LR65RZSpuiWwdApDsASei2AJTLe83ueNtu96v2N0s30AYOt1X7mE77BGhAp8Iejqk3jnz1rLrdpjPtbNrXrREgWqweq6ki6ZklkO+xwpMWtMcEQkIhS3bOe+xH3yjiAMAni+tSQQWJT0VT+fJrBgNVkgrcWxSfBRNxIBM1K/UGYYBgxUkST3791N75iOC5lZlu9iXTpFK7DShPctXzbMAAa+8SRtbL3sBw933hgUwgsRxigXQn/3J61uXRk0G4SuWpb7RUsUCOTL2s1pLoRozdcI1tfjxDqT1OtCvnG05+O+j2P4GVNAaG8DeZL7FBJlmQHPcGW2AXPitVciZqhCBAAxkzUwzMT79+4DEBlWGWZew4FyUBgCq8Sy3+ejWgLANA/ieN9ehd3eyavk9SS4MJ0feuJVaO/dfOVXtBscg0FesMuVWUaYMdBfcICR5ZEaNIbANEse02Rmx8jrTZx/A4ZjBWCEjbCSCimEzGa3bdhLzYqNoIYUBMCKDldGCTMBqipgZsPrlm8qMEmmjwARiAGazc+V7hw5Is8UNrWlutgwe+Gk2qZTl6QvKAEYf0jPomE6ifSc4wPjzkKAUWoKeBp9l+NMfiSEcaSZkW5IDCIlsDJUSUkldkn/8aefUGittuG8eOcbtiYL1gtJw5ie3HS5E1sMmdsT5lV+YSgXMiFYdR1YpodA6zuNmtfPOG6gpjc7sN4j3jU1NDDY+8h3/blnvvRdzT/5rZzuunaEGevzo3f+oPaNP/Vg41mX9EwS79Y56R0VLVQgUE6WvLawZCRW/WCgzRZ1u4Yc14wakoEfDfsNwOm/CBaAwLJ5tKEvuyYuYIScN788ua6M5h8iIsMRvH94fy+yNkmSWq3GzGnQ0UCgcpAES+9lYDdMtKXdw+a1OI75JW/94Y80nnx50UJVmJUdkF0C5vO+2fQUdJdrTw+MSrd/Y6e4tBOBlSCsLVwNHAM+rnXatXaTBm3FABCQARslVuJhaCcmKCBh4Bs4F3m2DGfTCefHOx19mKf+zaS9n/xDCURmGJxM9P6LL0RELhmkMUgvYQ1hUQTX0JR1eA7r0HkX9TuKa+lh6/bOrT+1G6bW8Qzdub7sm64wQSE8J/yGd/hf++Fk50YUx9Y/qAvabLpayymoZ3GEqKSlZHUVxYpbDjOi7RFgoJacGbSp1dRWEz42dQNJMxSqSurGtvQokYFV42TYz3O8Qql1epZz1LupTPRKoxoxKZKOzqGRE+XIc5WIFCAyXgXE8WEzafeYOfaJEE7JTl/1qKGlI0QNzZW1W22f18CXdP6Wedtt2tlpttuP6WGN6C7hwz/wl2998bsu9F3WmFDhzwnvPhv9jZ/bfng/3m303c1aw4uLnBsULVcgEJiAaf62ZCIPZlYDoiTqdaJWi/t90ZjJs47W2KZLwFZEsQ9UAJqx9dEJJ8+zvIqz5/Bx7sHZM4f/60grG2aoB9JM9hNnGuYIiXt4/16jHjnncC4tax0sToHyEN63YulioNtXd6TX08eivrtKvdf+0Ee2n3lV0XJVFVu0AFVFGzfMwHav3oi6fYoOB/0rsrt1rfnhtr06//yMfjZ77qNk5PQFsoyEXJXnEKgYGcPKrPc2p0lxUvYkSjAKA88uGXSbXvq8eRXESixIo+rT0sPtBNaccRrMSYviaMxKMDqT7m9uZoszrUIUECmUFEMVUf2cc0YoQZWJFQJYQyoQ7N25e+u554iIiMU5NVlDlKx6mk9tysvoVzrdoCCjX+meQ06s20ye5mULz2nge1Vbewcb0nisETW7ZNhtXdu+0rlyK5fC15BgITwP/LK3+Pd9e2J2EDtEWlfd9gebSfOg/njRogXWi9V1JV0yS85n6IlVCUKqJEwgb+Ju1Dp0/Q6cI01o1LWqqlbJpzywcpxDSTi1pkxlqJ9/4om9aZIJ5m6z1Tw6emQrFiwzgTLzKFfHQD6wPLZhBjZ6kMRS811Xq99T/sj3v+3WVwav0fMQFMLzIH/6G7Vv+ZdXBkdxVOeBa9caam+yOwrPMxDIYLlh38uGMyCYmhiAY9IBnFG/5RLt95K4q+JBEoYLgUWZoyVdeBZjrua18I2GGTJGHHtl89Q5c2/EBPECtWzg4qOHB6TKAJ+yiDBQKYICH1gGR4RrGnd1I9HNzbqpxbVG8uC1P/aR+hOvKFq0SrKyA7Jl03jnv1ro/EXbvsoPFnP6AsGV9Hysbl9bUPyGnAIiDSK+cUQHT95wG0/UzCHLNS/tpBaZTss3mGmHfRJRK9a6T2q1TU1caKLXEU3zs0+FZlEAUH+8U3WYYJBo6JypOusyOdkOy8Tncfsw/DCuVjJ53Wwzoopx7M/0EI3ESC8UHR1K5QEgkNRkKGlpJKqQ9BY6EtvEiTcCSRD7+vUrr/wzb01sxH2ZzmRxrB9mt29Z9WX++SvrGprFkl1GK/McFmVVv1cGZXMNXfy+8sF3PlfMratMmIFbmNpLPr9oEQKBQCXZ9vFe4+Bq8+GG8fHA9KN25Ij7MNu7W1QX33ewPbnho13sbMaD6kcvDCyVAp3D54SWmV6mmIHSsVPp+HzPADOcGmOS/qDf6UJUmRa3LM3PS3/+rxkIBKqGKF7xzz9UtBTVIyiEC8PXnrzxDb+46FVhrVfgMgnvWzlxevVmzTwwm73/8RW4ehXgXk21Pohj7foGyCKSOjsM2nBdQ6F9XmNmamv6Z+5VeKECz3N3BsbJJmaTEB6PQJgATc+QxB3cvW91JhpwqAuBpbNurq2r+n09J0YaRUtRPU5EnQ48Cnf3g9HnfLFHfbm3yVhyVZ0RfT5fICu9TXWeQ7movqKYtRYxa8upb8sp7ksPd8U80+jedxtv0k/8Ip58JXCTRZnjyEZeCK57jeMEJAk2jHehiQ6Moen3earaZrznZzhl+tg4+ugjzzypH47zDGKqqU89RScr4+iL0LhAZnjP1vjBwLLpx/HjzzztGKScy2Jj1owVzAu6tFVmrHz83NZizXZerNdKd6T9Wh7fmLIqWDFE/kr7T37t6Nd/ujAJqkmYdVuIa/zEmwC0eLtoSQKBwCWSUz7DG8lLxB+2f/Kr5Le/Hff+GN/3FqAjG2qS2A5erHMMbO2rTaId8LYLzXPgdHIJjZunkTDNSZgqemPrn8FI7Zs4SkQ0NBLSsCoREQwDSI5a/Wa7UhNV68WqWpYCq4G3/uPf/9W3vuhvFy1IxQjTz4uh7ebGN/4/3sbGF7S8J1gOAQTLYeCs5DVGyVqbpMchxie3jDcxZluXjt/4NXnh9XjwY/i8byVDta0n451XJP2DOsTYhlOFCBN50rwsk4HV4JSleRkXZJwyW9CZLYQ0E7eGZq4iStvzcciZ9LhOHR15hxKlhsNhL6Decc1I7Egp2qhv3rgKNQvZGrItgZJRTytOsASei2AJXA1LYBYN6t34gm8f9Pdb/2Hh5V3rTFAIF4KAztXP+qLNdhJH+Ty6vFz4ylclFySnL1D551AQ1XclzWLJY76sfIYZilx/o5l0e/xCR+7/fQD45G/XvuQfCUW1zp+6nWeSQVz3R2ojEWwaHyeOODTR60h2Kois9/lCLqMTd3u0Qvj/s/fmYbJlVYHvWmvvM0RERg53rnmCgrIoiqKqHlAUKvSzZbB96gOfokh/qDQO+LXYKp82zZOhqBYZGkRFn1OrPLV56OtGZGhHiioGC3zIIFJA1a2qO+bNKaYz7L3W++NEREZmRuTNyBuRJ07E/n3n3ow8sc/e65w8Z5+99lp7rS3Tbj1GIWyrd5162pqebCvWbWVbTSQiYIUAmDVjwnbxxHEkr9+ZDD6RwWLv5fBN+Qpj7BpvF12c6zAk03peAxjZ6RZkRGDQxAHGVaw/8zr4u7/LW5zC4HyShoAuvxEAWsjnq/N5y+JwOIrHwsaC+pPvTb/wM909yVtu1vF5q+dKtdOwcE0ChrAEUo5J/JEF/3ZMJ5c0ZTPa6Z5BpmzMmrrIvAYCimVUCqwh3xNrWvWGSdKhxUDuvzkcjpmBYgi4cvannwe/9Et5y1IknEK4dyp86ouVV33AIIQ8cdNLg1woC8OIToCx/+aYVWjANu5mBRUoiKuy7kkSYSkFn8nfqPopVBG+u7ds9LZna5NYr1JZ+1LqX2EgBlmz6nCiac6C2BgFRAUENW2XRHMgjbHL78ibncqeiEh29wpmc/6bBhzBzcV42HHRxG3+9ATU3/IvOx4QQRKELZ4CWb5BIQFqr57NsiC2xQUBbPfZ2P4dwHYsjtwpn2lomcgd6REFUippsQLsgyirCYibjzxsQDxP2yQhQgbJRJrF5LRC/TfH7rRv2h3blCLcfxuavv7VE+hizf03H23K8bPfu3zircMlDJ9xXIeyZzwCOG5QWyyjaeYtjcPhmFxYqRSpRcEqzSd+ueRLCRt+srK4/mV92w8I/Nm28q233eml65Efgr/MSSVIlrzWaUC/pltB6SizBwlaQQu2FOnI93M5KccEsbt9bx/Wv4sesh+L4u6GwZ4KmUUEiDIdFJDA2tXVVQ1gjPE8r6v6Tq0To8PhGBE1VYkCfc425m+8g+RM3uIUBqcQ7pXg+mfBYgytI17YkmRh3M1N75ouR5Fw9+H+MNaCsO/7xisbFhttpAK6VF790Lv1gLVcjbc9ywYpNOcgTrwKJ5oOaR/DalxLgJLA3wBIIZAWVSAae//jmGj29gBeXHca1YO8LdjpjpSJkmXU7NNc18CYGR41IIoIKgUsjbX1pNmQNFEas3Nph6oZXf/jomVmuOvgmCbKyNXIzvvhQ99JRx40eYtTGFzEgr2i7/jeI3e9SjiOUwhLLSv5XLqhB+ijCeqZI6M5AReV1LGVQVHXBm3DjY1834O47pmIEUM0JGmLqpHF0tGros99EJKV/of97W/B7T/llckGilPdatSoteZXfaCYWgEEAdNjWsWaA0Y7gmvgKDB98wFeVAPctcfbHrSmn8t+W9kTkD4KHu74ANRpEzupB3GrpNlOBcCdgKQsKvN7NazKpYWFeSFiYQQkIhFBBSjct0e/yOlPPi5q6L4YUQzN4jBjUUOFB0T4HlDegvFj1aT46IPceugfGx/5nwDOre/iOAvh3qDXYeP6s0YDkKe1cTNnDodjMJIaTTrQCIKSGg9hvjp3BFZtawPqD+125LueBKEyLYYmwVGfD1/hrbJNgrgMGPvKXGmjkvVrB3UejgkjW7Z3MX/RIWxoo0xCuEnbJAjtbISI2RLHzh6hfkZFAZAs/IwFQEWg1MqZ04TCbLLVgwoQxU2F7J9ptQRO63k5MoZWf2XBBLiQqiAsn33ND+Prf/rARC00TiHcG/zG6FMvXyJPSmUQZZNy3gJdKi4ITYYLQrM/nCvp7jCzpTBmP8WKBBVC3Tj10PKfvA4e/sRFj03/z+ulBapSK7fOe7WkftRAWgWNRtUOpZ6gb6VyAKfgmGQu+qyN+2HcrH9rQz372znoe3rl3vFG24m0XZ47JkciUAQibAERzcZGXG9kfYvqtMTDWwInTmFwQWL2xSxaAvttE3c/j4oRjeuEbaqaG1611ryg5NGKf804hJ0+XAe0J+im/1h6+ceNWU+gnkaApYkLY+0G6I5JwN2HGUQkOmCwwGmSJC1Ui0sViB9LTv7jno5/1xMCWk2/eGX61uspCea9CGt1qIQryZqnY9dtO3rBrrVtfyPCIR/PvT7O3ayEXT1nlwMtZwN7EUFEUCQIAgLWnj1ziqizHpIl8xodSmDH1DC1ipAjY0RRYQMVcZLMWwwWlq79L+cWvcrl45B26nAji4tyBOGl/OU3GYjj0EPLJUoSCPOWyuFwTC4CEJtYp415L6p4tiVUx5L/9JeA3dhjDc03Py/982vwOSvqwYeMMlI9TPXIzi9S5EHqvOYcuzHyKRgcZAbcw5GD9cAtww8iQkCwVhAoCzdK5JG6cO48IjJzNvRXuNugxSkMjmnC3c/7g63yw+NNdba1vr5Q8vnnvmvlphfnLVQBcArhxRH4qEKToi21FpWREiCr5byFGhfOlTTDuZI6tjJcPkMLUqE0VXMbcZB4hwObxr/13Xbo/jaQj18G9Q8333Kzaqyzd6wEcewRoAioMkMYGwGlAUNGkVAulv7bUSz629hFQDoJCbMd3PFYQZXtzFL29fGlk3ZCsd50hVlL/dQ26onWIl3nPBERRpHOskDcNP21K0cCsSC2J3IMYRbBLmsXoZsvXgiBEEhx1oZWgAhCiASirLXSbKQb65qZEYUoTVMtxQkbmJNraNEViW2v2ul3DR03Y88rOCAh4IiKD4tKQ0XNOKlKKUblnXqdib78/pHVPr24AcRFKAPgTa/WL1k1GLPy2aLV6Xx6TYqzlRu68H3xiE6g8NfBMWL6v1OVp02thqF/GJumWQ9hHS97enLfr+2jAT75GbzrlUCeX6lGHC7oeqznKVpJqoeNTTwdpJYBa+hZAQ/3k4TYUTS2hRXdrsvtYZyHW34MPnZwfN1uuNG+yJZj26UEMyWw87nvsQKCKALCIEJiBcVqfejocRBUSiGBABdnLtu9MfZFcXTX8TKqyzD223DI1Z3j/vP6ay1rfVoIrIZm/fDliQ1OtL74sTG3WniK0qvmBt50/fyX3xSZUildKjcbZU+aVtXx8bzl2ituTZdjEpi1+zCKmRcWQwxXqFr3D6XB1RCv77s2uf83vSufaikItFmXRWiu8fyVfnRGBZC21gDRhJcrMeoSmnAUj92yDY3wyRo8SNiZe7D3V0SgATPOOxIVbhs7CgIACSGgwL3CNgAAIABJREFUAoELj59WICJihAURgIpuARsVs3AdpvYl0cMs/B0PkkZa8sKY1bqOra8v9+ONlT/52Tu/+/V5yzXpOIXwIjS+/IXkdff4XA64ZfR8aiMIrgig8Imhhx2gO1fSDOdK6thKf1fSQ37LJOGqpHOm7nl+/XdeZDcuyc88fusdSpEIzmEDKsdo/euJPWIbdNliqLgJzZThhPhzozorx+QyqJfeGfZzH2phx+l0K5cyTiDoBBrd/n7p9ZzcmdUQEVGJCJKCVjPaqGmFxqTWWqLJG7e4qKEjZSYiiPYyqgHW2F1Di0FJLUX1ioJSCn6ysNyQ0o//gaQnrs5brknHdVgXp3XyNoXn1jxrA0k9VvWvpTwgr7TD4XAANBPtebWyBE3tBc1H/Lv+XfK5911infE9N/uYth7+IjbO8Nxlc9SAcP70hoSShMpaa7lIMzSOfbHv4C4XqXWrrW/nYtS9NNS3DO00Bm4Wxo7+iYggmDXdOzvJSCgESOdOPa4IENEYFnefTwvOMjblsPTfxoyyUprzvMRwKWpGpQTUXzW/Ur3zO8bdbtFxCuGuXHkXAGBZla13aKOiwVLrqDoyr8DPW7JJwVkOM5zlcH9MqytpwztyOI6aEoXWUjCf3P/ekVRbv+dW+43PyNteVDardRuDrGCp0lLVyK4J1gPjXEYde6bzlGE/iyLujC/QN/DMnh7VTSMhAPXRNreOQwSBgSSLVaOJQRBh+cxpTmLPU4goNr+Fsi5IzEiZtbyCwv23oSmMJTCfvzDq1SgW5FWBpER2TrfQm2/W5H9/7QReognCKYS74V/7LHjxB0px/YJH8SKbVk0TQxw3Kc5btHExrQN0R7Eo+n3oc7OJtuoFKZiN33mJvvZZI6v6gfd5d39/9I8fhvJxsDyXrLAOKiUNyp9EVzpHcdmHnrNrhokBGeq7h26OFDefdyQAQBZutVZXV1BEI7mZtqlnchUcR19ysgQOIk4kKJUVLhgbgSVItYr42tPHTx26kJdIhcANIHalvHioylFSqeKxZlKzlVSIoV5eRLdWx+FwDKTCtYZ/WT1uNr3L9AvfaB5+YHR1n03veyc3V+GXrq5SWDPzpXStER8vp0mkXb80o/SZK7nk2ZO+8y97bgh3fNyWpuXiY48sc0a7RYSN1bU0TRFRTbMNqT/TaiF0TAuTZesthdX1tQuiS+Xg8ljSmDzPSx98wldXHvn7vEQqBE4hHMy3vDz56Oua5GMQp+mFAEsqmbcQYRA3C5QHKSecK2mGcyWdTeqqpG0aoi7RqsRjSFHzd+/QT/722r3fFOBKmhxRuNYM5iT1hSXQIhSI8oV8si0tqXjzoxfAcbC0LWYivRH5O9kIqZ2KMPPqFATO8joooE7KwZ1IO7VgX9VCQGRAbPgtOmHbYZK2N7H5KwMKbnq1dfIWUicjBQqgCKEgdKLRZ6kUSYBQlJBi5YXW33j4MY1stKTTazkapPgV3WOifd/u3AYVL9yAYSuz5xo6WUSmuaBLTWimSZPAeGATprL1v/Ke71l6yvfkLd3k4hTCgVDlanj9X+cthcPhKB5lW9dJLUVq/eaLce3r42jC/PNH1F0/bP7po/rwhlVJ0FiZIx+UnxqC+Dy0UmUuaG8uxaqXOD+ZGWPfMWBG3zTt+u32g/vXJsQgVri2tq4AnWXM4XAMD97xptbqFz6QtxiTi1MIB4LBUvCIswS2KfwMpWMqKMp9GOm5RJc4XMAX/Gfz4J+OqRV7/29jsha97lthw4Cv6/5pXyJrW175BFRLPi6kWrREbmnhVLEz49/Onfurao9fXWLhNgQdg+DO51ewfcsSUWb2tCBs7erZ85pHFlvVMXJmzbV11s530tYKDkv9stp1P/3neUsxubiRwgDu/FH7Z69BL8xbjkln2AG6cyXNcK6k000s5TlqcNyUuDbWhszf/B484Znw7jvjcgzJnEFSupqmjXKr1iKlm5akHttgrDI4Do6+XWtfFRFgF5e8i1R4iWzXUTuJJQBAMgWvtzRtP7D9GSDTDIWA0CKAyMbyBUkTOgCXOZdXcF9M1kqyA2Dm8gcW+y+s/Gb5lqfd9P6H8xZkQnEd3AA4gZ/4tMjpvOVwOBzFoxSfi/15+L0XwcpY/EV7WIWH/hKe+6P4sa96//nJlMQiTc3awPqcJIkfGHUUQ2/MMjgmjL4pIvZRycgK90SU6apVpKBtJMxWIWY19KiRhJzptIigEBBtrZFsNKYgmu7MWZYcxaIglsBhnyPvbIvnofb3Hz1IIQtEYTT7gyUAiOmHPzhvVaTSvIUpJKN6t03iHNlQjOgEqOjXISfyGmOpcC5eO8mPPGAf+L8OpkUPjDzrDF+T8LXePDyyEc+DskFpEZLl2FZQ55e6zTE6Bt3PCNznKxEAbn/Y9mVPv4Sytdotn23nE/ce16ct5C3jxayA7DzKgvQUZgsA2K2w3VxPxBERsAbAgKQkyK30sic/8egTr+/6lF4qORn9iq77DRo4Fv28BjLA6Df0+RZlQFOQ18Ww11+HsZVjX/y3i2OSp+gUfqZtLFx2C8C8J9Iit4ZwnxRlrZdjusnrPjSNDQ5LB6YNAkAK2jxwJV/rqZN/swHXzC14SpfSeMVIWArsxY93FIG+t+6l38+Dahiq5i2Fe8x925843K6GSe9X3R/dQzppJ4iIAFfOnEuSZO9S5cu0WgKn9bwGMWvnO2mM6vrLephEKwDgP/H2MYhZeJxC2I/T/wA/8kGlPNZ5S+JwOAqIINrfeymcuOmgG773Knvyc3DvVXG9aW2r7IXWQuw6shljHyoiblPARsWg9VRtpU9dpFFEIsqshYioEOK1dWPcRK3D4RiapJIu8dxlv/q55KsP5i3LJKIuXmT28J79E4tHFjZoToMtioV/ahmwhrk4psbRnMCgtevFuQ7TidWibUBQIxSjEmuP+hID+nFYhgf/AOrLOch08pN01ysBsXT4ihYDaF9MAki+spYD0B4IaVP3tTI0h+Jc4gvGAGUvSykIALJFuRIApPaWuWJu2uuyQ3DTnNen5t6gEVnHhYCC0GNpl27yQASkthjYWwG2RevuQs5q2EzNhtxjKew5BbSCmQMbAZDlVIVaR1F4/HJCwKwhovbPXRzyhAodDCM3ZswIJtltuHMbls2Um5N9u43qfAsCidcSOkJN/cRnrH/ShRvdjrMQ7uCGu9NPvKdhFzxchLSVtzQOh2OCYRQkhrIxVeTA18bqpqG1xbUv5ynU/b8ZXHdnAprJVySgfAAFGPiyjhYDWUNdibDq2/UchXSMhd3te/uw/l30kH3U2eMyOkAL7WBtuwnO0g8qmyTr6+sEjG3dFtM0HVyVw+EoDON2zSUNqQctmMdgaf75/35U1U4NTiHcwdfugx//IHrzXnweQ5d2YsS4tYWOSWBU96EWZE6AEFArVsJ1A+iTv/rBd3vXPmccku+R5ltuM+ghs0nYI/AgTpK6oUVRgjKXKlZpvTChAxx7ZG838OYAa9BAa1Qd8rZgpzsfMVLby3c+dfcppTbDimoFQFGj0VivZWFpEJGZcx/HuDVmDsfkkyTJIWy22LeX37rx4XfmLc7EkXtHOnGEd//EFWv1CBpxwBXr1io4xoPLZzgVaBCDDdGReClBapN6aiqqFVbvfkV6/kzOwt3zZLFCj34Sk7poLwiX2DbDuB4FYZiSxmYipZwldIyV3ZNP9MYE3b3HGFY/3EP5bovtD12bYVfmrD9UHgAJqsy5FYlAKSC68Pjj1Ams6itfRBDRCrv8gfuj2Nnl9sGM5Q8U7r/NGksEtVYwXy4vSP34S9+ctzgTh+sot3Ldv4rue09j/nhJNQKUWrIApPpvjpHiLIeOgiIIYDm1CQCVy8H8wkI5Og2tDWh8NW/RAN56M578ZPIrd5q1VWNqRAHoxgLHEWIsi+C5/n9aELl47sHeHnVnigrcXniI1vdcuJ0uArFHSSOgTAPsr7lZa4UZSCMoEQAhJL1x9iyxBWDDrLUGRhCy47fITaslcFrPy5Excwr/AM6Y0PPFa5yhw0fPvu8Xq9/983lLNFk4xWYra9+AH/lMxKcNXu1xgiUf7ICgC66vzJdBPZwLQgMALgjNfhl2YiJJUvKCMpRTKmnwrK3XV8/WP/xGSjbM+smDlHwQ8uhn4c5XQFiRI0+r4qlGuhiDDfyKD+vGeIizN0s8rSB2/htEFkCmX4lu1JjBUVm21TNYirbJr1eULe0itdVXgmwdIAC293SFQGy/YVGAGRBJKUQRNsAMKJCki8eOqVJoBT2l2VhEBFKTZ5uZLGZOMZD+ZzwyXXfSrt2A881brO3kNdeAXupps2GPx3yq8r33qI3TjU//j1wkmUzcDPEW9F2vWUjWDgGSTZkTSS4MLOoshweCsxw6JoFB96FXDgmVacXGNFPD6HmLC4tQPxmd/nzeIvfwmd+BJ7xAm/WN6LgfCoiKW8uJhIGK85bMMUZw0/1yX8OvIbvZvXTL2EkqCAAgdNFDEBVg+8WKiKgUEgEjIJw9fQoRBcFaVkozc9vS6BiMswROOSL9NwcAAFSlxUlaIgyULMiaXz6Ut0SThVMIe7j2bnP/25t+HHKZ/TqqxDNLecvkcDgmFwPGsiFoBJUI/DRqMcSl8Gkvg2TCAni+6TKTaO0nJABkSkHJMibi5S2W40AZ+VTatgovvX5E3ExO2K2Qma21VhBRKQUiGmnl7Nls6aCIKKWY2Sk2jm04BdjRS2QXRaraRCyht6Ee/eUXLzzju/IWaoJwCmEPD98Hr/jQXGpPE5dtzeeKxeHDQjjL4UQyqjXkueGC0EwkOoKyhrpfxqgamrL27dofvBw4yFuufrz9CVpZk6BulCxHICyqKdoLpOFxJKA8ZK01AYpLZD/Z9PeVEAERAeq+1oW7Wf7axRhE+nqQdfsTQsAei2L/dYm0pQciBMJMMWuPtRE7rmrtY7NQG4AkbEBs1/9UuLOYMGuXUJAFGRFBEShi5rYMhKBAgCwAKm2MgTRtXFjWzACQWCYizSMLAld0RWJblz6hjoMFYuzBY3jANprieTFpz1EItZZXD+lcYOYlSG75o/X1T7lshJs4hXALSz7WffDIpq35de+4oRN5S+RwOCYXnIdmqxZaqWizTmdKoOe//aejz0/oOyZ68y0Q+RBsGK7DfABxFdI0MkGi5oLQTxpGJTULGAbuvVBMtilv+7bXXfzAfd8h1OfY3lgyu0QE7XwlhFprYD5/9pwiyCyESikp0gzfeEGerIG442LQgM0xSppwRNkT6/ZwI1mumRQ26tf/hz/OW6gJwt1wbdTxWwEAkuXUPxZaAl+DObVkXGL6CcWtLXRMAkkjwPCqqrYbRmmcWzRzFK0CLOct10DMu29kVZeHrsTXXVPy6uBVobTg27pENVg6Fqn5KsVRs5G3mI5LYJducJQ95N4GDzt1VMT+LjP9ZduxExUAEBEIbJw7K4kBYRFBUjw4JM4gJs2CMQ5m4aU4C3/HSaYo1z/RqwtpGodxtVxNvGsVnxbtV1/0k3nLNSnMQl+xV+Ze/lcBnr4AgQ6PzvG6FY45IZobTe1sR1OPY1eG7YOmNirdiE6MpvX6jAjtNeNWOfHn5+2j68H18N7nLD71pWuff1/ecl0EhETffZYr/6C+6Yjy/BZVwSTKNm3lCjCtgNLEuREXhHaPJ1uieoLYbYUAOn1C9pkHPNiYRaHY3kbn/51OadxzXO9hFqATmrR3fzf3GUvbgzWrG9J2yUzSLMdgOx6GtBtiIWCxDCLampQTALnh9tvnjpxgREZQyDLkfTuBY9bRMK3nNYCRpdQryoBgwrxDC/McYYQiIKqZypKuMEXn2Jz6sSflLdak4CyEPVBrPVyolI6Wm7Wa1k3bSkrXjq5yt7bwIHCWQ8dBYmMUT0IvSWCu2jgV3vVjk68NAoCAn953Faz/9+Qdz0kxAGZdKqvyIYrOA5vYujWERWPUwV361IMIuK8XVl9hsoigna92CEwA1FnBiO09hJwtXAQwIAAIhOcfP+UhEJG1dgYT0BfFMuPYJyz9N8f+4GOqqRXEJV9vSEnELkqYt0wTxMx1oP257psBoKF9r2ka0RlbwlJcCb0jqjVhoQIdo2ZQrBYXhCbDBaHZnYSum5NGK25Vk2jJT6L7fz1viYbAfvJ36dmv4kc/5weeieIkiquVEpAuUZS3aI782KmkbckouDedcE8aKcFmTsO+K6b6rDbMJviEEBCIZeP8OZvGSlEW1WZQS9OqOBUj69zoEO6/Dc3Yg8SMiln7C4+GQc87aYlCBLg8hShUy9isQCAAEN7xwrxFngicQggAQNc9B37ko6KaydIVKrgyjDeE65Zj/wAePGc5PBCc5dAxDrQ+FQEtKbzgVU/+2U+Vb7w7b4mGgz/xG/qGu9iYwIMyttalCkkLbJK3XI4JZh+GuIE9ba9OCL0Dkq2d85bDs9CmpBQbC0m8tnKBrdVIk+ZHlyOTq+A4+lIQS2DRJ1bO2yYSkbcxz3LBLtbmy5B6J3774cXbX5S3aBOBUwgBACicD5kPxby4/i+UpCulE7FKFM7Fei1v0RwOx+Sik5TwcC0lG/r+t7y2ef6LeUs0NMkbn6SQlY21pyCKdaXS0gt5C+UYDX3mvEaRKnCP5fru3fFxm23wImOS9kQegtYaxKL21lZW4zgGAHITfI6i4iyBB8ETYqsAmyZZt4eXQqxGj5aj5olU9JzLUA/gFEIACG59qfnQz4OyTR00vCWlmoFpaQysNH0u5yaWsxxOJM6VNMO5kmakWrUQA0qOe3VsXoDV1bwl2g/xPbdoksTqCq+YNAEAkcVQTJlA4qDslUSsQCp6RBG2HKOjrSC146+06WQjpHYqwmwxniAwgCCg2m3AKZJ91Xfuf3vMmU7oly3pDUVACCRbB7hN3O4nBhTsWLLaDSEiCrTDyDBAJwlhu0VCRAYSIGSVpFaV51Rq104+4mlOJCGlim7BGEg3xM62bVDxwr2YtjJ7rqGTRVGeo2HlXPFFBJT4no4kacR6vhF6MeBjb/v+I9/5Mwcp+WTiFEKwh66d/6G/yFsKh8NRPCpRS/EFo8Kzv/pivfZw3uLsn4233Kk4Sf1Kaa4KiKAebgk3WIKlRsOshWJAKiQreYvpuDT2YkPbh51tL/kP+4SN6f2yk8K+f+Pb9yIoILIgAkCkV88ve1m2eofD4RiSm377VHD8xrylyB+nEIIqLWyUXFS9GcWtLXRcChdKXsBXEIf6+fc2Pv2neYtzSTR+5RmqXDXNjaB5CoIrISiXVWRqFmQpomoJ6iTzecvoGExfrWx/Xdn+MhkO757aVf92LiMU7OObKtgZsRACEQgxAiKeP3XaQ2IpfG6nolhmRsWsnW9R1gpOGuO+T7AJunp4VLUVl1lXCMPbXhZ/6OfnrVuN7phtnCvpPjmEeLqVtqS1kbckI6D1H6+h1nJ66iF9/kIlajTjEkM1tHXwVBSUOW3mLaBjAHsxynV/3Za0cO8VjqTkZnmCrm1QqJ2IoovQZvezJftFdmi7dxKlmTlaWbOtFhbfFXDmVpKNag1GYVxDZ+4vXAgwxEfe/uLy0749b0FyZtYVQkFYesXHDNfyFmTPuLWFB4KzHDr2wqHowoZfgj/4N3b1G3nLMhridzwXvvEZ86u3N2JFXkWozqHV8bokMQeFt8DMOu0leTs+D1tJ3897iWGz/XvaNPp1g5d2X2fSyUa45UgCQgYAESAETzFbSG3twgWa9eGMY2IoiCVw5iy0A7CycfU7v9z8x4/kLUjOzLoiYU9/3rvzZS0iVfRJmtl7hieLARN/Bb+rYFQnNmgiuOjXRyoV24jkqqfAfe/OW5aRIY8/CM94lQqD8omrksRa8ZRl9g4FaWTRDbqLxGCNr/2+2P4IbjHFDVT8YDOuzJb3Tp/WUGDbqykLgbOt1WwPderbUgABBLBXHAThdlFCsFaBAqK5Y0cAizGkmTk7kYzojFGKceFGdb6OAwFFhX5Ac0caX/jrvGXJk5l+u3uX3QIAtpGUpuA5dZZDh+PgWW/aBcDW1OWn+dRvlJ707KjRgqYtxUk6dxhaawpKeYvl6E9f54VL92gYVMNQNWMfi2Lbd3R7PV0j4bbqsedH+xDRys8ibZLylZX1lZUkbu1dqnyZNcvMrJ3vpFGU65+XnIGkksDZ//sXF27/3wCOjru5iWWmFcL09D8d/5EP6VLQAD9vWRzFwLmSOnpJKhre82KpPZa3IKOn/vrrTTMthaY0X4e4hiXT1BfyFspxSexDb8ReF9ORyrLrl52pzEGNimitQQSEtdZi2TaaWTZCh8PhGIoYvYjwlt/6l/UH789bljyZaQtS8OxXx0duiKEcUjR5cyUjAqn/NrUnPGE4V9JdKYorKXJJEXscl+OyqJWmKguISJj4gfbm+FO/n7eA4+HTvzH/bT9U/8Jl9reeoO+OmdLQxgYDAl9zaiVVGnVSs3oJIc1b1plm8CQ6AiBkuf16lSsBQALIlhFyFmYGN813WWCPzu99nTyz90i3fNuxMyuNmUwAAEDtwm0xepxMcfsCRMAsaChiN+Ucclty6TkSETQYkwISkbKpsWR16Nn1jUNXX5tYQ562loXF155lywopr9fdjL1n2568O7dhKYpr6KjOd8aYNOOkkEb0LbO3uFj//MdgVl9ns2sh9K55VvyJdxtQ6JebXM9bHIfDMbmkYhKKWmGy5kviLZWoVIZmmc8uLJ82D/x63tKNkZVfujv5wLV09xo/gkFcjuhypYm5ZQKv5FdsEiRzT/DkfN5iOi7G7va9cfg47KNO2RyQ9LNb9iq07QWECAq1AlDGmGazGbeavtJimYiUUpM27nQ4HBOIB2sximBw5g9/bvG2u/MWJzdmVyFMH3lg6WX/j9a61Dq7JJW8xXEUG+dKOt2gb1iUiMTExmiJ48hIYkvrH3mtOnFr3tKNGVH88cPe5ZEBS9HDFNc9vyRWtVpNUAZsDSHMW0THruytI9pUn3aqUaPtyrYFON3ZVe5c/d5OWdENSSo93yASAYOJovULywqEmYkQEa0wANAkmpYcjtFTlLWCk0ZqK4vQVCBP/9V/WvvcR/MWJzdmVyH07/6pSIExJlVBPNOes44cGFX6pYljSvMZElqKdJiUAlAhoI8RlI5R+QaonbIrX89NrAMkfutNYlbJK1NpIW2aUrxaLQNoRo6IXR7XnBlu7mn3hBM9o8ctD+6+01T01nAxtqeqF9p+VNunXAEqELLCDAKKUCkAXDl3Fq0hyNJSiIgQ0QEMiGcupuSM5Q8U7r85dqcoCmrJm1trmcDXCaTXvuZ9eYuTGzOqEKqn/2By37vShWsDSoCwybMXPc9FJT0QnOVwOiAWjb7HnkCswChMwLaaJx9QT305JMXJYnpp8Dueo8JqmjAEWkLFkSEO0Uqk3f2cP/07liwH/cX8RTcP3DFU2z7IH1bz3BvtbISIPV6jnVT1Qu1gB9tTGmbnRcKISAgKSMera2mr6aFCFmbuKIRjz59ZlIGvY3/MnMI/Y6xYowPFG7W4epP/xOfc+J6VvCXKhxlVCPHQ5f6PfmR+5XzDO2ZAroTChKt2TDfOcrg7eVkOxZAEbLRNMInYsCDVz/ID97KZrcCG8RtuZCRCE8lSQy2BGAYAmr0JtUll34kidikwkv5nULTSzf3U1vqEsLO/d0nh1slKywAAhECEikSEmUEEklZtdVV3s1cgigiOTjGbOcVgQL89tQpwQV7AU3v9c+KQbaqgtB5ezvXHgCsBzGhUkRlVCCmYA7WWllPgOki8xht5SzQxOMuhw7EDZrZomUEpIk9ZvxKGR/xbXixf+1Deoh04b7mRIQC2ADFg7IchNJO8ZXIMAXZthvsbQQ7p4LAXh4h2mY6baI/FcoCEqLKRetcuioiACgCXz5+1qRERISQiZh6hR4YbiE85Iv03x64U/bkIU7FxNCervqrP49nmVz+Zt0T5MIsKobrum5O/+E9hBGTny7KhlGrSVXkL5ZgtnCtpsdAeMYNqeWXWykYbCTfp6uQT74R4JueS7rkBIPXRzgMldZwLTd4COTbZRzcy9CFD2htH1LNtDldIKRABZgFBVKiIiLTWKNy4sJKkETMTUdtC6PrV/VL0gb7DsRfOl4+gknLSiPTlDNWvvfN7F+54Qd5C5cAsKoT2G39f+eGPEql1iMopWKlX+VTeQk08znKYKwXxZBmegriSGsCQ4qQqtcQm+pCv4/h3bscTt4+sgcJx781lhCZrHUZ18H3xBJslAZWI1iSYBGYOPBe9+UDpjtS3qEAiICJA3de97AgCxO28gztr7DyPhIBb7XVtm17vAkXqPQgIgTBTydo6RJahcDPBobRztiGKWADuVsWCbTuh6tbJiIJEoAgRmRmIgAgALFgBsoRGRAQBpLG8rBEsQyqEgv7wHcG2I6bfNXTcjD14DA/YRlM8L5xCfjAsRSfFKEVAMUVe7dbffmj9H/4yb6FyYBYVQgBIg7SBuAC8pg8xXl2HpbwlcjgckwuVwK5ByN6iFwTN1cM1CwBy5sG85cqTtXueykqsQWip2KxDcEUKqQnnU68RmGNWn5X0Qt4yOgCgXziWvvuHracP+x5R0JZjsRtOpkPP5+3zRdKzZFApEDl//jwBEwoRkFZ2+HCQyG4gXixowOZwXJzz/kJUqi6HFY9XiIM0CvKWKB9mzsLjH3+qbZxdvPVFsX898HpMWplGxTN2GqwteeDekSNlWFfSqb1rR3Rio7o+2NDNQxhKI0qkMSeRaI/ZnvvSiKovKvzxX4P/5dWADLgYJPVUM6gaWFtNbLO04HHCs/eKyZf+fUXXmtcnwyBs7kTs/z3s8iD1SVnYu3Nn2NMtIg0+tmM94k2psOclLd2qBQAQBAVBWCEK27QVHbn8SvICBgQEAL6UnmBq+9geBuu6E9YRj4oJG7YUZa6hKHIOC1m9JFENvaqON/DysLkcXHEjoyRWDbu6AAAgAElEQVSnH8pbtANl1mZQysnZz1/xQx9ppSZtnSZdrWKtoqQVz2iQWUfRca6kuzMqV1I9l1bqao1LGiSUG81/fXFKs9Z5DuAdTwYsE0VxaBcQIC6DOhxBFerNypSOHgrGoOmkka3r2/kg7P3R2CFDJ5pon2dddlSbOawiCKEgACoRAVRgef3CBY+IbWqtRdJ7lmdTrNlyE52xvIIORy8VSsnAYrq+HNMirwU+hHc8v/7ZDwOEeYt2oMzamMYCHH38cIvVQqlyJDUbKlaRjXzvurwFKyxubeGB4ILQ5Au3mEux9hYMymL9q8HdP8b/35/mLdTE8LZr2U/11z+11hDPRl5TK5VCRdb0Qt6SzTy7B3fZb675HT3PngcSQr0entmP7WpXezcKbo0+CtBeCZl1fW11ZUvmeskk0XT+9GkNopGYeZcJILdGa8ph6b85HD2c9ymxEQocKpdaGLJWGkOAJYCxpzCdKGZLIfSv+2aA8/O1AEm1ktMKpAYl8ecNurDpjqnCWQ53Z1jLYc0vVRKC1grh2eXFM/F9v35JZzF9vPkW8/XPwH+5LT18LvUeakhDkYLU5XctFBfLX9/52W8J4k7z3W6V9LP1bdKrMe7NAplFoMlWDTIjYLRyIW7UA60VAO8IorPZ7IzlFRTuvw1NYSyBs/YXHg2zNlFSBm7opRQXbZT6vJyYmvHKAKvzt78ob9EOlNlSCPGGOw79yEc3ILL+UZRDClIvtFbqsczWNMBB4CyHjimihIkRrpYOG7jCvOcn8Ybb8pZo8vjUe+F5PwD/83F4+/8KflBaQaXcwGtSGcfYbo86YRsC2KoH9tUJu79i32Jd1bQ9KYSkgbQYC2JXzp0FNkqpfQxkJ1fBcfSlIJbAWVO0ioJNqnM++Erm0SxzuVm5qiK1m3/zkfnbvy1v0Q6U2VIIJVxY9+I5SyX7dZG4pk6ASeZjf57dTLajkDhX0oOhlFJdwUryeOJV8bt+Rb72ubwlmkj++o/g/h+GZy3TZx+pVxmMG+hMNPl0FAPDyfQUQMhsgz22/4uNVRARURBAKRBRfrC8vJzGCbnOcCZwlkDH/ilBzeJGlK6s0Vy1VJpvrFMjZRY1dzhv0Q6UGVII8fYfTD74WmUo0brFCz5ZnzcYVENLhEMvOnfsj6l1ZSwIU3v9x+xKuqIM6NZhMweXlyStj+MMpoQY4W+PcuNv4Z7nWxX6NhGtkGxgUlGheF5gIrGTl/BrKuhV8PpODAkQoAJUmVbWMU10YvQLDhxICwIDAALCFpvGZjZCyLIOdspLO/9hb21b0hhuuwek/S0yAAPKZmI4yiLHSFY7AiOKEAJ1Q5ISCICQAAELaAKtoRlHy+etJJGJPaGuPNu3ARS9Y5w919DJoiiWwKLIOW4Mok091BWUWMf1ROtW6APAI2//vmPf8dN5S3dwzJBCCIvXqFd+JG8hHA5H8ZgHrxJfsREKvOHZUD+ZtzgTz8f/EJ78LfCWbzGwoaXMcagqKSRNSEN/rhoqt2a7gOxtheFuO/dSZji/053LGgkEQClSShjOnT0beN4MDnAdDsew7OyebnnvSf/4k3IQJSdmSCHE0oJ174W8QVR9t7zlmjacK+loMcZobqZJiM96Ffzd7+QtzuTzGPzz3+CTnmrf+q3ALfCiVCqBWLDrGxGkajFv8Rw97L1b2F8HsvOoIevBdnSZgdnjBNsjGSQCEQSFWgHi+cdPKUHmqY0RMHMWnoKsFZw0Zu4+GZ6+XVIa+zR/AuD4QUuTE7OiENJtL+MP/lwwWO/gITeHY5pwrqS70wojEQF7Wh74jXGIOY2ckq98mO7+SXvyk6B82wBLEviGCOzUjs+LxjbPT9iDqjYO7bHrd9qGoGv0E4LtOQlp+4HtzwAARARAwjYVUEpBrRE36jjFLo4zlz/QrRV0jJ6dNxAJkIAtxSff8e/mbntGDjLlwYw8SMfV019It720ROsRlEZS46xo0rkzvZO7E8WgycJJHBKMhCFPDFMF2mv97vPh6jvh5GfGJNR08otfxlQEUJUYmlDhpBWkhst5izUTDHyugSVbRLcldYRsznYOsrpgP4NMp5VsoaH01tM5aLskyFvqyda39ZRBARG7ubCQBQBQOFuW2G5CBEQQoX0uwCAAbMAmwIZIcWove/KNx667xvJ0vrH3syywL5PW0Q80+k3WkLUoRraiyDkhUHeizKYxJl/9iZtzFefgmM5ecgd1+9kPKS9JRqQNOhwzgrMctovPx6rF3r/5j04bHJo33ySAqIETjxVuYIA4n7dMjg4i0C/c6C7u5ePxPO9r59nMNrG90Y4TKSBK9m22xxoiIu2B0sxMQGtnz0/DaNhZAp0l0HEgUO/ToChUh0+89J7cpDlYZkIhVJc9GeBslBBJmrcsjiFx+Qwdk0DE9Sd8TuILectRTH75JhAlj9wvaKCiEhPkLdCssJe1xPtQ8EaiE26ppP0ZYWd8VNwSaQZ7HUBxyw8AACIUgkw/FNKArVqt0ahdurT54taA5UtRrn9R5Jw0hDHbkFFkcwMgy/GZ9/3Cwp0vzFvGg2AmFEJ7+sH5H/0Lr6xTCPOWxeGYRFwQmt0h48GbftFEX8lbkKIib7kRTn4K3vLU8kZdwfm8xZl19vJo716mz7ej6S76BybtGMMuMmJBrZmZrQUQRFSCkJr12sYoBHM4HLOFEh0bdevvfn39Mx/KW5aDYCYsLf6zf9JbuiGxoSk1lR2NDiwDNjeCPhgEpK9Hibv+B8QAj56iX3+Eo4w2xDjh1KcAsdJKNxbJQ9uw8RP4s3+Yt4BF5uQ/eM98pSFly0+CwHi0YUMFURComEtLAiuKy+Iido2UQcaBdu+JtOWJRQQBQALIPDA5W2SI2JOfUHDTnIe4I5Vfp9ruZ8BOa+18851DqFMSt784EVG6ZkABQEBGyZpj6a4qzNIQIm5qi4jAFhQQKhASsVax9smurR6/7olxEoNWCIgMHiprLWm1SyrCEcFDjRRkUPFhwf7vx4ljVOc7Yzij3/4Q3nS3JkHsbgOej9hnihiVqt74jNUH3p+DxAfL9CuEdO2zzD99ILnjB7W3EDbOsRqvt9IEdrlTyqBgCY48Kfr1FzpPFKdcCvwgtVqrZkmZDZLWH38Pn31+3tIVHn7sQfm2X1E+hXiIOKU1pAomHEsjBZoDC0BOITwo2mrd1o50S5gZ6fpwbj+0t3x/ZOfnTbVts/WdNW5rTwAAJFNVAUTaX2YKo+w4WhiABLO88wximVnYVo+f8IKQMuVWBBBFGOgAuqsh18KNapxflI7Y6TWOg2SPngYdgsQj3/oWk/qKnjvefOiT4xNtEph+l1F++AH/374fAu0lZ8F3oe2mBJfP8GCYNVdSLRXNvgExNkotmxRKrapVHkRHgb4vb+mmgnfe6KuqTVZbG8YuHjbCIKW5+Uoga17ont+DZW8P8qY5YufwfbRdQTs2zOav27uabavHN1XXTknsap0IRAAKmG1qV86d9TBTX7N/QkTCbvbBsQW3Bm+6oc7WZfeYSjEFG2haOglPPPX8h985fgFzZvpfwPruVwcL16akgXxQVmS8OvAgV1LnYnpAuL47XwruSsqCyiL5ZZPEgadEGRTjR1Wjnymn3wMQ5y3gNGDu+xV72ytwTlh9g+A6iTcAljG5LIEG4vTPUR4kF5272fX7nr4Ut2qDvU/0Ni1u57HbLIQ7G8ZttW+WxE0joHQMmgKSSSAdH1dsfy9dyyEiSI/9T1rGHjtxghEQKatSKeKuvfHgkSEth4MoiGvoIFfYyZN0snC66P6ggY/FjjsOAQEY+4/PE4qD0ryKmwqFFi6rf+GvDv5cDpJpf/ve8YPmvndHh64rS6oEotQFlZl2XFTSA2FaLYesUqY04BIAB6BjW17zzcb7n4urDYD1vKWbIn7t6eKfgy89kd98aKm0KLAYBwyh07dHz/4fzN4Dd6YexO2Fh6p5jwUF27klegKNUtvVUwhkyxrIzTMVASAQQiRCDaSlXo8b9UxbzMoIArgFqwfFiNRfh2NP9EYK3Ro1tF/hwTfinIJwZc16Sy0qn/njX7jyBT87LokngylXCL2Fy+DHPuyvn2uoYwaw6kd5S+RwzCJFyWeoyCMMrHwDMOS0Kdgs+QuQaPPoct6iTR1vegF84MrwObXGI8R+BbABdZcndlzsohMOHU20w0ie3836ByXDyKbzEDOTH2b5BjedRalXGOyYK7vOfgwCjMBpbXWVgAkRCAExX9vL1LomFqSjn9rrP2OQ9N/2CHe2QUQc1eYX5lqi7Poz33VOHb9+FFJPLlOuEGJQXYzWFsQS1y2kEBc+H5FjnzjLoWMPiFXAaSSHRDPKibkwnVtb8Z/8WrBvyFu0qSSMPn7UXp9KGitLh/Tlecszo2zXyvY3Mh7SDjlE6ou2tyhtkXPH0YLA0DECIiKqdixTABBcPn+WjeXOukFmngKPholDpP/m2BWnoO6PoSyBGbxVD2zPVyD33co8TyZdO/GoMmqFN7zvfDEk5mBOLRemWSHE234g+dB/igGWwzmlaz5hhFfnLZTDMc0U3ZUUsaHSMpcUgzF61dTVufe/NPnne/OWa5qxb3gCWtbkr+hv5C3LNLMPS+DQT+7FlywOMANeEj3DmGwMTQhEQIhEgIhEKDZeXTM2YW4nrsjiyoyi9d0Q7r85HI6Dp/fJ24vpWnEzRt87fYWpYHV+8aHvWDrx6fo4BcyZaVYIAUG94kMeHrGSeiaNFIJt5i3TdnjA5jgYCuLhMrVM2vUvMTfD1IuDIFn3jY4Wjqqn3AP0A7kJNBvYX74lVjW0Gi0DNEVpzSyKhTH0l3SylreAxaZratipgGU+Vr1leiBGkr6LvboPKiHgVotiN9rnZlvUexAQAiEibhpBEDvB/tpbNtEPKCK2933IQG0fUZH2skYSxE6qDBaQzTiCmJkKCEWRIGik+mOnUJhJoeiAvNQWZ7I/uz47t5Ex5EikIAMXZ3mbDnYmp9zdNXTg7dlj/UPY3AbVUyvxoZYJvLXEcJrap/3qWXPf347onCaR6VUIyyCf/SPQuKHqodUmlZKkWPLyFsvhcEwuq95lqXgVWS8Fx5ulqLJ22n72bcB/mbdcM8Cb70BLoFh5c2ASBuuxgbDcqp1JS1fkLdyMMWrD4B5GGr0hiann180o8T0Rbgh6P282skUMbquFCADgeSZJ1tbWNAGIBWBrrdZ6D+c2I9CAzeHIn22zUntfJXiJRFEYab0WBMdtqWZaG9V0+bXfRa+f2tAyU/vAq0M3wxEI8TAEdZuaMDgGaTlN8hbLMWG4fIYHQ1FcSec5mpOzNdTSiuI0aPzB99O0ryOfHPitTyXPZ8tKkdUhgu83TkNpHtHmLdqsIu0leaOoa9fBxvY89dtapD5Wyq5KiJuxZHbktsBMe0TyQKS+vp62IjSMiBZGmXPCWaLypSjXvyhyThrI2LvtZa3gSDgmQEGtkvL5ClTZ8xLw5Fz1VHE8C4Zk4gZkI2TuZe+3XhRBZc6bT0yc6NUSLJrJ82oYiqnV4CcNdmPQg2DYd+EonaT6QdACXCJVruPjQbwY//7LAeoAjfG26uhB/cIXGEkIMRaCVDyrUm3Gv9xripGehHt9nzgE3rJ/SxkGAOABDx7KpvfmzsNlZy/KPcf1OpoyiLRb6Qa2kS2eYigsIiCCAgJpr1Rt+bMK20v0GAVQLDODCEgClsGaY0+88cQ1N6DWlllgZHFlRrYscNwd3KiYsHFUUXSqosg5aSD3f06Hvg1xuCNSNj42FZeTwMdUe2kyp80nf+KJAGWAiVuAdulM61v2bgBoLpSDIAiCUiteRlWGZJHAWX4ce8NFJT0QJs1y6GEZZLWemDLqQ/FaeMu/BpjLS5jZxN7zFCHEhIkNBRW21I0M6Tgg+uea38txOyx7l9Lu1l+7lsD2B+gxEmb+jVuMhAQA3DUeGkCtQOHKmTNeZpMhHKjlOrqw9N8cjjEgjH23oSsaEDV02GoquOjrhRZ4pZSM4nSOTwoBHIWXvHBokYrAtCqE94FaX4hLG7VSBGY+vN5CLcA0ljRvwS6VgqzldjjGwtiD0CQrHBwpe2mUBKf/+Pu0tADOjq52x954401krSCmtXX0y9Yv5y3QbLO7ctj5tn9GQRnhGIO2ft5Sczs/4dbWEVSnc0CxFgDMxoaNWoaNBd7HGsKRRQ0de5CYUeFSyu8H5xq6PyZtJeuK12o0GiUi68FCgxvGzFWOonxh/tYX5CfUGJnOB9u7/ddLd1zLMUIJ61z30xC054FNhBCm0/13WjX7SWPQK1v6OEc59k9erqSRPoZ4oRKvsz4U/fP/4E/82mjqdeyDf/8gaA1pqkJgDPOWpsAM4TIq0hOvJSvJgAh2gNKTPXicxQrFzfq7/2d1bM7N7+oy2ita+9stWexQQMSCSBYYUERA7OZR2a+ZPCiZ16iABREVWwsJSAqGr7rxpup114jSoVA65Gzq1LqGDjT6TdYQsSg6VVHknDQGuYZ22evzN7wxsC+JiioQGoLYmnJcUsSW5mzr/PrNc6eeP4WhzqZQj0B4PZZKsZF6JZAEKyIclhPbSrymJ87lz+FwDKRqHiVDZVFNVXPaYM6883ZIUwy1DefzFmW2yMFnW6gnY0TvtkUSQcj2y2ZA0c0xzC5iI2YZMlCRWj53XiklCMZM5+zwvnCWQMekM2wWwUunZEtea45jBGOZ2KrU1h+1i8f4Y1+ib3392Js/cKbzgSdg75Uf7fvVrFlyplDjn0xcEJoDYdyWQ+VxIz0UcCP+/RfC9c+Er39yuOMdI+f1/wKRQMuH0hkI53QkRnxQLRBYsuGacs/dfhj4HPW+H7eEmensH2hJku1Gvx6TY48FslMP4qZJsGuWFAHkzZ1Ze9si3LRtWR1LIDBKVrhrM5TuUe04NACQxKAAOIU0AaVuufOZamGhwRIMCFY0tZbAQUzYspOiWNiKImde9F6dXmUjryAxw1ffX86vLl9jXj+F2tMUWszom37B/74G2P7LAxD7x7E4YCEPjKk9sUnDvRgmkmHvf8X1I7ahKILLbjef+f2xyOQYir97N9z+MxCsg49gPaYggNS3AQdLLYhxoILi2B+DrufFrjMOeNYQAaDnz9Qvj8WWQDLSZ2dvM11Fsf1f106w7UDpbVeRFpuCMBKBoCi9cPgIeB4OVIz77x6aoryA3WPkGBv9sgj2fzCGvg1HNOEySLEf1Ksdmm+mpRPxlz42ktYnhykzIN1AT3k2f+kek06houuYaFxU0gNh3FFJ6+qKFQwS7wRGa6Oq03GpvOs6CIz60uHyPTdDUo/L8zY1bFZBx3lLNtWMe550Z/17anGbjyhBv3Fk1i0IdgpnLqaoiAgALpw/J8Yi88wF/3BRQ/fFzN0nI6KrCpJsbvuqaDRRQweSuazv3AYQtc6t/7efg2e9ZGQCTAZDR9mabFb4C+C/6e3Vr5bqwaCAov3/xoPeREV3MR30xEzZTIDD0ZdBywwGTixKA4LF2m8+z3/6y8cmlGN43nRHAJLedZq+9CjfHiflI3PcqEfHQa3kLdk00vXhxI5Frvvh0tm7nokIkv3PPftQhDLnUsFeXZAAGBGzYbp0bRCEwMLMoDzg1FoBRE5Ns1HzqAo4oiFQUVxDC2OydEwD2Jlr2PF4TNZ9OOx4OKxU4b8JvGSyzuLSmTK9IAH4WvLI9RcqbnbfMRk4y+GBMCrLYYk0NB/zvv0NyWedv+hk0QRM77+c6/8d3vgsSGMxVfS/nrdQ00afR6Y3mcRQD9TWwtjVMPfY3Na9ffZ15u8FCTFTyEg2hzQIXRMigjATUabWEiAIrJw7603bcK6HglgCneVtusH+kaIG6x0TZgkchFe77EmPf/HIz/7xyASbDKZLITx6PQAEZf9EdCJvUSYdl8/QMcsMzGeYNiyUpHkhbwEdA/j734a7flw99g9xuS7xkbylmV5kM5NEL/mtt8e+v/WTp6Mo9u4h4mwxI2kAgNRcOL+s92GmcPkDHY4d9HqEbvMO7ftw5DX+RJG+27D1qPC8KiVVO3fFdMUanS5LRfMc/B8fLGFzJUw1j+bUXBAaxzhAIMQ+m1vdny8lsY3/+hJYvFrOfilvWRwDePQz6nt+yRqCwKCdrjnNg2KwRb0n6d+WCJzt/YMTO+z27tgeVGZz/86isqWmLVnmqUdAAQSQzKkUEKRjJGxXsu1gRATbjkRKQGIMiJ1bWlRhebDU/c+kGEzYa6QoRr+iyDlxyIAJiK2zEAwgu9+bY55bwRGlqqijMfbQUX76P//ec0dS4YQwVW9TfddPLSxpbUNI5vKWxeFwFI81teg/+9X8lY/kLYhjN8wbbhXNYKbq/TUJ7GWuc+j50HHMn3bq7Azw9nYnIIIIIoJSgLSyvDx6wRwORz+myQFtySQ+eitXXrj8e9+etyyjZHpeqHTzc83970qsrnnhIo3Q42tIH+iC41xJD4aBLouOkTLIEhJ7c4oTLdZLU7Y69g4ZoliXq41Hk3/6MwhcJvSJ5w23IqOAEWgQLpQTj4gEAHUF7QZ0lidlZcUysFBh7DtjZ9DaLZZs0Z0CxM0LiFnfRAAkSNLN8ter6QkKIFBn29YYkHRq6H2HCgJQx+MmSyEoJJkAQNs6RMFOK9CxCyJnYgh28g0iAwkAAvYYGhFFGIgQPSDPAKACYrN28hskhohiCxZJKSVsAUCQCuMa6l7Y+8KtXdwfwtjdsGcbVH7gLTnmtYK4VbyLyjksEZYCMbpVO/Wnr7nhudPjNTo9ig1/8W/8N3485NQytdThcTc3qiAWDofj4PE5ClBQQd0/GoZc3nikZNePpWc2/t//oI8/OW/pHHtC7n0KQIw4z6rVCK3lJoRl3Vr3gqtgRxcNzh9sj+zlLbaPN91FD9lHnb3RIHq00M6LuI/raUf5zA6k2voGISoUAmBm9wZ3OPbC9GgO+8KoNFEtgea/fgPT5dfkLc7ImJ4/q/+8VwffeLg5d5mnMElN3uI4HPvCRSU9EEQksSA6AOAkbarSPJSPX7Bzlee9xjz2Odh4LG8BHXvj3meAUsIG2GpVqcQbiT8Xx3XYpv6RUwiHYW960cWv5yXqV4MCnOJ2IySiAthUADcti9ttjNg1SIqgFVk9fw6ZFZKIdBVCZ0neN87yNt3sdJDL13Dea7Hs3cbdbsuWKpIILjy+8HWamx5/omlRCK/95uSv3836Smw+SmmjggeQsLi/K+m0Wg6dZ4pjmiAAKJVbCXr2jKJSTXR9Iz4coG3WoeVCjBYJedONwFaD0omKkgCgpkIjIpCN8bnjTLjTlXGGuegraXuBkbzCRvse3Kn+AWyLIC8I2HU9bae9UIBKiARBAGsXljmJFWXpDQUxi1IzcW824f6bY3ecgro/dokauo3s2cprfJjXgq7DMH/B80DXKTVfee+Lj3/PK8ff5kEwLQrhw38Pr/hoQhcIfdCBkhFlm3U4JgRnORwpysRx2tSgvBJp0ZU5WAjUud96mVp/PG/RHMNz7y3aagPAXgCgKWVExCzvnDMMDmD/M5VDHbi3kjsrvFgTBABA2KMBtv/c7cRiO5X/jtjtE0cFANyoN2trKltmiNKjOU4WLomE4yAZkJ2h/x23W+yDcecVzIkLuhbWmdIjan7u1j96UNjLW6LRMC0KIUDFN6k5Cph6plbzlvITxAWhmbz5VYdjK8Yraz8MbaNpNLFpXDgb+fPh3T/a+OwH8xbNsR+it95olQZtVLmSkiJAhaSUcqsHd2cXvWt3lWwsbi+IsPMvNSiXfdtNFAFRcDMHfZvNtPXdSgiAuB0zRgEgoAKbrC0vs7UoWQ3ZuytHH7hiRBtzlrfpYO+WwL4cnCXw0uQcOUtSg0oQmvQ0R7Z59Nyfvyc3UUbKVCgq1/8rAGgqdTRREkBEFc+s5i3TdqbVldSRL4iq75a3XJNOwmyilAIMbJgoWDh0VbXxxei+PwKYkqm+GUTuvZ4CDaYV+qk1hpk7o3zHPunRvjqBQPdVy6W2vstXCCC0pQncUi7b054XANkc8xACIiGunj9nk7hXmclTsWmHWt2xOXbFKaj7YyhLYMa2ef/2fMWYLYH7kHOsGPYCOSOMZZgPxAOAhae9KC9hRsg0KIR0w/PgVZ8OY5OEG1HMoSfiRnUOh2MwZR2VQG34FT+SpoKoZpd//5X+/8/ee8dJll11nuece58Ll6Z8lbqrrYRMq9VSqyXRklhpQAYG2GEGmGFZzKJhAbldWDHD7AoYCWSQBiG3GDFiAGEHNAw7wGhhESAHqOUdQqZ9mayqNJER8dy99+wfLyIzIjMiKyMyIt97kff7eZ+srBfP/CLyxb333HPuOedvy1uX5UDoV9/iYJJ0GJLEKGVHhPthAk9gAc3sYYPD3vBmqFpEQHRI6M1NpRSDyZYR2gAXi2UU/d+NQrquDwmCoCXORkCOCJvhyh1ve6jxlG/JW9QUmAeDEFzHRR3K5U1SAmsQaSxijLINJbU97fQpSYRR4fBTkwqXYzTeShBB2nDlvS9PHvwQwOW8pVkORPTTd5lIg7tEwRO18ZCbjmSJPjvITJCGiLEk1zPo0CZzzCl4dERbpi2DebeBl8VkwXB3GRkkHrqIbasBIgTs8yhupQkdyBdK/SdlWX+QejuhW2uw7y5dxwAgM+tuf5LdgQkNda+f7UGDyIgIiMjATN3ihNmbpa6YGFh43pX7v0SoyXXROMIIEBP0y2P2eCXpIK3nbT7gXWHQe4dcjnw8+7x/CNvbtHTOun7gtIjRLEYtMo9GmmRwxhjfqZ4AeEzeug5K2Q2Sm+D2F5s/+XFuf8ozscd1R6IxJi3e/KXFYikOq95ixFzjqCJvjH2ntrqiPvT2vEVZpsTbnk7+efMPIbzjVq39FE6amCDsCEf4Xt1FJ4UwEiJJjwlapGol0naAuz/G7Vivf/w4I5CBq21Pp25bs/0pRvt+Zxw41/SfxaS1brfbJi+b2XYAACAASURBVFVJHGcHGzPBAPdoTfhaysWO2ZscV9/NB6GLbePUqrcGUeA0Vxx98avvfIX35Hvz1nVQym443QQA8L/9aoPB27y6hnWpSTiJchqgDqHyxFQY3vfM6ySc7SFzxui8FRQCgiokD0XB8olO53KlBr/yzeLkU/TKJ/PWZZkeFYanX8IbU3HjporNsuOsiSYndQABmIKDnoJYp+BJJ2F1JBumrNDC1u+7D0Aw2/t3HmAAAMyIfgqzxW8779dz6w271PZ5fa+iAebuXRABBtfUMQMYBGRmNMzMgGr7vmi6V8uOZwZgZGDWyBoMM2jQCSgDAm956l1uY1kKD8FomL1LomDOwLKMN8qis2iM62Qb+XjOOPiugM7AoXDkkJciJU1TuUGsr8rT19b5yqtO5K3roJS9G1wXX/cvgitX0hhW/fOKjKhjNaakNNYg2HqGhYyUscw5KV7UzsmATl5xHV9XAU7plS/lLcoyVToIf31G3LjJxriBWUXttE6CkwQOgpEQh1XRIYch0T6meWstA9PpfYb6zfY/DtlVHbGXQKuXaLRPJw+5LG9VIyQEIAIJiJAmG1eueoKYNdtilZYjQ271AwuWNXRc2E8bzvp6yjXXvZxUkujKef+hk//y9XnrOiglNwif+s/1X79ZnzzrpFLEV8EV7SgIqwFjNW9lFkshsfUMAQDAFQ3BG+00bRAei9f9O18MUMtblGX6qJ99opBGGQBKkiUVRAmpi8JPgKprShDUAKodm4NsnwysABzrvB1n7XvgkRUVHLgvAg6kFe2agtvFJ/pq1mf255ahyN01hCbTgNk5AFKsrlyWxmijeLq5Cw0P3yyWGcAGh25jX+iIZQ0dn5Mrsawsuqlq18mta3fTv3nld3/i5At+Im9hB6LcBqFsPAZe8hGzudb02to9fSxJF3AFwwhkiR6sURytNQnWc2g5TETYZveMJzodxY++59tw7R9tOpl5JXntnQYNaA9Wdbj4pDYHbhL7ghil0jGi0ubITYhMh72Nw96rO2tXZAxz341m74Np8PeBg7v1CXcdz5mfEAhQgJS8uRk1mwBgEGia/awtKT8JNpnNZBRt1Fh2T+AohJMsKRG0G5VOe0U64UI1Xrn8pDdvemdvylvagSi3gYGVRi3ewMCViXLji21yOUHl4cnkQt7SZsW8hpJaLIdJ0zub6CbEawEtA0D40IfzVmSZJT9zF3QE+sJpfhyCM2HqutE1kgzC+DKRsV1Yez1mMRaflU0I/RXqt/Kobt8WAVEAIgOgICAgIgBcuXDBEQSTpdwoiSfQGlpHnEOecC+/J3A4GD+Uur5UTUH+aQB/bdM78RjwH63d9cK8pR2IMhuEtzwn/dMfM3UWHZC4JBw/Eibxg468tYVB3uIsFktxWVBXHePViDaDNfm078pbjmX2vPVx0lxmqvmbF+DY+ZZUrglAVVNkPqplJ8alSDOPA0oYIfOF9A019z22McaYlEhcuXQZEY0xrCd4Hqwn0FJ0bBXBaaHc+irV2p5oNpwVHaJAR61FwAL4GW9cy1vd5JTXIKzDVz8AP/hnWiELYuykbDwl2AgvfUDPc2H6ogUFzBYbSnpIHLG1hYlE1LVNrpt3/nNNKm85lsMgfdO9Mo2NF1TWP2Hcs4p1RVxTQFpWBKSsHEQBmDICCM0GCOb2+c/oN/AGIk16LiPOIip7y/AGXUnUrTeYlRzcQTbeRMoq/nF/QcLsJ3ZTp+0+b+f+7im7W/3tIS1y7z1wdz0hQjeBKoJB3Lr7lv7u1RQBCAeMMISgk2hlxdEq8krfn5bFE1gWnbmRrZ7dtY2q1zdqvLR71IQMyDNfKzivkMI6t0kZN+Y6QiKlZuNgUI0W2147b3WTU96GLwU4O+fdtcVimQ2MEdNXPbdZe8HP8kd/P285lkMi+vl7pLqWimNuCgpEBxdEWwELTT4Em4aBDVISeOCQENoJ89ZbDGbhGJz4mgO24sijRng/du8lQCQpERGUWb1yVQgxB2ucLHMC8/DNUkiuNK5sfPlv81YxOWU1COnm5wJcqLgLeQspCnZtoWUmzKnnMDU3SFpcWl2kaD1vLZZDpfOm/wG5ojiGdL2iExC1hUokwmu1+HRgpOuyEXEEbTbkpF7eYg+bHZUbhvcgh9+tXO+OW+Zfr6rEdiKZActwq+giUve4zOXCXU/mtdWrkGrUo9eUlmStYNGwnsDJmFpSlllnDZ1WdtOSk6rFh9/xL+ov/JG8hUxISQ3CU3zsvPcD/2/cuZi3kuJg6xnaUFLLftGiyVh76A9ehFdtG3LkSN54qzFtlwRTrIPOxnqoKmda3kqorqnEAzaSl0ikKdtY4kF2RH7mxY56g919CADAtNM3uLWnd1b3yCyWFREYDRtEAa7DUdzcWEOzR5Ihu1bQcniUxZA+WguZRnOeN86+5bPB2cfmLWRCSvona/F9fxxXatJfyluJxXIkKbnnsOYGneThygt/ZuPz78lbiyUP3vx0ITgRABhC9WyV19xkAZxFp4K+XBAm4gQBjrRBuGOF4e6XJ77uqLvs/6zdJti2HchbvkHashK36tdnZ3ZdiLi1g5lQSgkM1y5f8rA0nsCyGAyWSRnT1Jr1msCsLujuzQIAAJeCxUU3qN71T/MWMiGl/EPima8BuLwQtVRkZ/evy9Gau7GeQ8t+UKtXzpllDq/lLcSSG+Hrn6ZJSePX1KNtfSxJ2p4yaefRyLRi2TJYqZGdcNxlsDEP2ZkLuyX0BY4OU9gzFPv3MIMQQJINGmPAcPPaGqfaegIth8m4oaF5jXOGF5GwExA95Oa1kP344mer3/RDeWuZhFIaBnzxY85L/nTTccg5mbeWsjKvoaQWy37wa94j7/lmZ/1S3kIsufKaZ/g6jOg01M5BI3KWlEkXUHQQzoFst0yct74iklc3MST16NYLO63W7QWEAy/Rtk+w7yIEggCYDQIipElztXDzRGXxBJZFZ9GY13p9Rw2/EmCQqhtvbv/JL+WtZRJKE+LVj3zOy/j07aDJAzTW/TMhR6uNti3rIVGSvr/DNVlZCj/6W0c8LNCSfPBXzQt+Dj63Ae+6He5Y084JQWktiY1OTJ0xLeWc6VToN6UIt0tHDFpf1/u+D6tJ0XeDrdMHrjPkFBwcHWPfScMsVNx6DfrXPXL2v77jDSACGNBaICEiAzBg4+SpPd6TxTJdcEzbb+S3Dmfb/46r86iRptpL8XjSSJcanc/+Vd5yxqZ8vZ24+fnqA++oYmK81JhOtw7S7s1yHWwoqZ1LmAEFW1uYOouG2grZ0+usvMiravA1VB1sph/8TYAgL2GWAvFqF957XNxz1VysVfCKNkFScVLlQiyZ/boJK3GTscbGrbBmBYzVvBXPkP5okS33juFs0Z0AxG2fD2aVALP9NNzyY2To65f7k+YzZ5FxgGLHud1qhFnMXDfVPm0XRWQEBuCsShvt9Phlynu+wZ5UA2h6p+B2We7sFCNAuBqB0QhWrcuPgkqYGUlqA66QaAwz8/z2j+NiPYGT0Z+Bs79+4KjjR45bZrxWcFSdw2ldvyyMO26ssYjd2pq7cuV3f2rpKS86PKFTonwNnL7/Lys/8JFEpb5aUo6ftxyLxVJcZHu1lmIFsSlv8CumEl5xaKOmH43f8xK67e681VkKQ4L6gyfc86sKhA8bUUT1WgzsobrW9I63/QWgCDyIdTsIDIgkb7l5MNMSFDxsOpJp8ltsJbqgXl4Zpl2RpTsS1SAwGQBGaq6vOkRpmgohtNYAQFS+wZKlsNiHqRSM6zbpOB0nZlDLd7/tH9Y++d8PT+iUKFvIqAzkvS/HxSrVbwpV0088I4ZHfOGIVXKHrLd04IgPLm9ds2Ju31jRQBq+zXhS2a0E3EmMhISrYK6Rruig2gLfPXaz+vR7Qa3O9O6WcpF+8JecZ78kYYchSbAu07apnaqqFc3MJoWUTf00hdeMSoCcvMXmQRZ1OZLRL12/neXecdsX2ZGNdKeM/iSo2xUUt5sUBEbEwWt2f98OrMO+mNUsXw4zsIkRTp0+E8fKcV2lUwJAIZgBZ7zUwjrZ5hti3JGbCDnLezv8+FmHho563vYI9LbsAalq7HXQUc5mKpZPbX7ur/JWNB5lm6e4+1+p+34j8RapdbkCUVIZOVPLOHyzXA9bz9CGks4Pm3GL6w0jAtesSZIJLaRrSSXq6CQEm2LUsovoDU81YJCExJZyFqF5sa0qrOh4tY5IsLHGcompkbfM3Bje5vciSPfVI2RBmyM58JgEd5ek778mwY5kM109AlBki6QMUHRtNe1ErqSs1AQRHU1TzYaGTsb+s4ZmT2le45CpFb4/Yoz6XhgKKZIuYbPuPvr7P7X84pfnrXQ8SmYQok7he95dVdwKFjQuktrIW5HFYjkAM15z6AVuO2xFrQhdlOwETrzsQecPfxi++oFp3cIyb7zxTkHKsCt4HapnF6iDQe1q0/iYBq5hZkCZt8TCsMu0m7Cu4MijJrr+Vpjo7nuNroKIiECIWdhUEm+uX3UdqbVGRCY0xsw4YYdlfhgra+hejopZ1xU8YrkkZg15jqJOGC7VU7zt7f/on35C3orGo2R/eP7ob3oAm41jFQO6vUIwftkJm4RmQo5Ww2E9h/OBaXHDD05IijWChla00qwvQ+eqvvTxvKVZiov62acgpwDSSx7ZMGQ6a9AIQsCItWIVwJH2Le9hkk0pZmRXt4K4I7Z8RwmKXRUpKPP7bXsCB3R1nYS9nwRAQMhACIIpS12j169eRcOGFRIBgDHTbP6t520+OKCHzXoC54xEyRrhIl644jR8c2zxqd+Ut6LxKNOAXpy9CwBiWvQ3L7gpLwULkYzyFnXUmddQUst84Dp+FEWxBF9jisJpHHOan4UTJwB03tIshUa//k5pWin4IJZAkrP5KAT1itAgK9oc9ZHUdFr4SQNH92WRdv/tizUYWLklunu2s54SZB5CREAgpPXVtU6nkwWLMvN8J5WxBupkTFA/cMf8cncp04w9gbbO4WSM+73wdMImTmnZEy1yWgxw+6/cf5iCD0iZ2jh94RONH/6wp1bcSnUd5BqBhDBvURaLpcCoNRbpeqXhJGksPYhN+z/9r2L5dqjOc+UAy1SI3/gMQ3WH24uIKZ4TrVbbHK/Ga4kYPzJl7hhilU1gJW6fsnsoMp0IlN6gd9j1sWcu9pVYZARAIgSIOmG7NWAQTjNUz3IU6X+AbFaL4oM8fBtFJL0OVBg8qTkKU+XpRJcp/Vh5DELRcJ/7Y8K0YjjeiiggTekm8vGpXd+Gkk6IDSW1oaQzYEprCwWaGtch1UmFK2q9qgP5ta/QX/wwXLkyC9WWeeP1t1RBhUZ6fFF7y47caLNBkTIr33iIdaZVJhdSkqhYlL6/uK5fqBtrZpANAtNWOpmsuJ/JKlfv7je3sroRdv1yW3RDOnnQnjQAhtF0r0aIPQcddzfOUosCALAxmWjEbfG9BYRoCJgATC+PqUHkbrNtNBjRE2+ytw8oAIWSDgFuPHS/SwZdaRL0hZeascMKrOdtPuBdCT/3DrncT/1AhO1tWjpt/cDpMm5ySqGhgrITPyIdD4NaO6nwF/7mEPUelNIM3L0bn5X83e81oysNp+PjBnoxSS8x1kNosVhG0nROXnP9xfhigDVUjTXVVh9+W96iLGVi/Q13AXcM+X7ycBod950GJyk4Xiyajn4EknMBC+m6qXDdtJ232Cmwn3DQg4aMXv/0KYxMdi0sBIC+TDOwlXtmmKtTGURstVpJFOkocRwnSRIhylamyzIldtSKsKvvLEPpyJCFf7x6/MpaM4jWbwkvPvS271p46jfnrWu/lGnm4MR3v2/zRODGG+lmLXU7S07Y1stapDO96SjvsJ3kux7DJ73m9XMrzczKvDJi8r6O2NJtXwUpogYv/I0XwqknweXPHrI6S9nxX/WRhCrGC0E3QDFyhdU1r1qN0xRVm92Kw3XJnbIvamfmfjtqVHON3HsJza5SogYAYNQyS2Rg3ultYe6eNfRSO+7YRQP0vDbc57/Jjsn8hcDMjIaZGVBt3xdN92q8JSbzHxoCY4wBZlChZFI6veGOO2onzwRuJY5jcoXRw9uZsvRrZdFZNMZ1so10+c046tg6AydjWt8LVMrX3JSU1vwb4stNOocMn/7h01O5+CFQknGs61af/cqQr+rO6ibWdBWw1lhVXiJnnhnC1jOcFBtKakNJ8ydJklQsm+qJ0DOqvg4A1hq0TED0pmcZLwTTAFoET7K3AW4Q82bNVDhYosRFrULl5i3zoOxw/U2jruA+Gdo77L+/GBTQJ6kv0egwJyFiN/Q0SycDhIiAiMLVBEB09dKlgEhrzf3xqBYLANj6gZYdeB54Rup2VbsPhjcmaQfV5TP/6rV5y9ov5Riguzd/bftT764vPgaZ2HQkVLGjsNJGtpkhLBbLyDWHG9UTbnJ1QzUrUqWyk7dKS5l5zTMBFxGM5BOoHTCeYB3HUNOh8dcTNwJnHkJG98lOW3Eim3CXwbnvAQnTrjKDCDBgmnZNwWHFJzizP7dNxO4vfUN5ZDZAHK5vpFHIrBl3OzAt80a2OHb3NvaFbNbQI0nT+FHKauF8Z7N53DMGnU3wL/7Oq5df/Kq8pe2LchiEyRf/avl/+t2LcWjgBHlnHX1pQW86ad3Tm7lpskloJgJRDN3y1jUrrOcwX05tfimsPiZwDDar8Nbvh3OPy1uRpcy89qyACn4urbzuNvA2vNZx8NMW1kErDEPp2QnKfdAzw/pKRPT1m7y/MUn3lP0PYHZ6IDN/YO8/3WMQEVFg5gwUDhgDWjevXBOCgFBAafopm8xmMooW12Q9gdNl1t+LgIyrRaVzpVLpPCLcANk3zu1vX3HP3DKtW8yUchiEznNeuslxzWGBK0FyfwKwiUnk+5Esh37LdbH1DC2zoBOcF2lMcScOagAAj34xb0WWcqNeu+y+dzF57orz1eXOMiFpiELJZx3nvFpfyVvdzNmrTZ5Wc71Pm7AL7fPWiAgo+pyEvdP7gku3rokoQBAgSuBrK5cBIJvHs4bWEeeQJ3atJ7Bc+OaCEujICoV8Q7ou4zARxLSxcOeL85a2L0pgUHl3f0/6gXcCB5odLaoidhOxCEGDw4WAbQyYxWIZSSgihsSVSVxv4tO/J285lnmgDV76NzekjzUyjjHV5CiiVmKuOLU5rE/YbwFef4XhYU7h7eNeWyNn3g7e2R7zDDVuzdZ+Y4CIlW5tNOM41sAqmW0GO0vBsVUELXuj+fgV/2xThyKobLLX8iS5ohIRSvP4dz+ct7rrUwKDkJkXfvj/IyIDWhgdO46EkBV7cC0BP291u7ChpBNStGCN2WJDSQ8HwymK0025BG/5JhYqbzmWOeKnbhVJymQ8Zs0EJNMkYhACUiaHyQHpk2l7pBgreWs9EFuG05Y3bGdytSxdZxdCpm6vt7vfy05DyvrEbd/aVt6XbmKXnWfyiP17rsvqW2RosKu2F3iS2Xy9NOIDLj7DzBJAM7DDrguctC4+7BtIZOFqTFuP5XXI0gvt2kbV6xvVL+/unbsFyme8VtAyGbP+Xox6Qhj0sl6RIBItpYiJiRKVeISB0/zIn0zr7rOjBAPu5GO/mSR2JGexWMamFidO+gU/bItvfB387W/nLccyV8RvvlMgpyg1C9chIAeIGQJHtyBNpF4hbESw4OFa3krLw8Q+xuEnDo5wdh5Co14AACAiKZkZlFpfXSMGsbNchqXwbBcXGdwslgMwtvuiRY++64cOTd7EFN0gdG59DgDEi+WeYQW7Rm5S7OdmOQgd9yblN9qqBu31vLVY5pDwjU9VIIk5aceeJJlqnV5htw5O1eHjqROTWjW6NMlISsa+OoLeIIe7ywUZCXb4BLeXEfZWJGYlKARlXoXm+noaR5hfDIf1BE7G1JKyzDpr6LSymx4xyvK9SI0AgMpTi76SsOAG4QleevzCj7yvdm0jbyUHxdYznBQbSmpDSSeHo0tCH4PffJFeu5C3Fsuc8oYnmFSLCx814Qb42vXPq5T99GrHZz/xHaCUrEF4KGBWeWJYNtE9utpetGp3npEQABAFIBhjAIhcF1SytnqVzMzrHlumS1kMhqM1yjl6NPjaTb/4Jef0nQA35a1lLwr+yLG677809bL0vbyVWCyW8kFLtUp40XneK+HT78lbi2V++fkn84N/m/6He9S6Uuaii2mi4lpoItOK0SFnIW99M2N36YgpxXzuNwxk+GHDdmLmJMxOEpA5CbcrHiH0WY/MDIhsABCFEIB07fIl14aMlo8xTa1ZrwnM6mfu3ixzwagJiLAa6KS68ae/C1DoSKVCP4ji1mcCMOLFNTO/azBsEpqJsPUMredwP1TXNldvbaTvf2veQixzjvnIu+CeH4QrnzF4vkaRgaCFkeef8kGZpJm3uhlTxBj+EZK6UaP9u7qjIO7fwwzkACII0loDmHhjg9NkRlotB2Tc0NC8+tPhRSSK57EsGmXx9GaphnZvYr1VlxrgAe+WO/PWuBcFbMe38b/hNXTbs4zxjYxQH7HRryncs14Shj8nBWw7pkKhZ3QKQBXUtXd9KzzxufC5v8lbi+UI8O8uudxMNPlOpLRnzCqhh0yKyv1NHd1+mt0pOtAwZ04V5pFONWTkXZft/Rd7Rf92tOdDTkGzc2cvawgCAjKYbOCoAXo2H+vepXT3eDRZh4vQG2WaBFGySgjYJN3qVjc87vH1czeOeD/TYV77qVmDYy63GzmanHGC0HF1WjKK9r0YpQdHyRQBKtGKNx/+8Vtnp+rgFLqXMoHvagOcaF2sp8FisZSCTlxxnv8K+Nzf5S3EcjR43elEk8RQJ6HSTV9UFHhGyrxllYpZ+Buz4JHh4aVD9woAAANASERIDFJeW7kyfWEWi6VsjPIEjkLqtoZ2ZRHOveL3DlHm2BTXIPRufnbyxz++LkzKgS+OmHsQbCjpxByt5dk2lDQj8lAie9SsdChlg2ktMSkIL3x8M/3L/wRgFyFbDoufuw1NpISGaqujl0CElHhMoipioTqM0hOAiETEXBpDcXSS514D27cUiilLmEaAAnBEQhdGhr5+rb8YAHMW8QcodpzbrUaYxQJ2Swj0jgTajgRFBETG3l2QgA0AAgOgyfR33YNoADRwL7NoN9sbAxoGDQ4ZQCM9Rg81R2tXOQqJwTAaRiklK0VEZvzscGUJgSsa/Rk4++sHjjp+ZP8447WCo+ocTuv6ZWHc8cm8fi8cxpCqqBoi8I+9+KV5yxlJcQfK8f0fPPGS/1ZFgSLCMMxbjsViKS5+JJIwBl1fXSZHBi5ElaqmZgI/8TK445l5q7McLdI3PZ39GPQC1C+TI8hpg9atSCh3wXVltJm4uqM1+/5crHke6mGblpePh03nca84xIQXBIBuNlFg6joDB44ZfmUDsL52DYGJiJmNMbYGUl4Ud+Rq6eNoTc+PZk2axXQjSdb9x9x+7c/embeckRT6T7PhYhqlpIU7Hx3nNLB1+SbDfm7zDSGD76OqgupIhS3RapkkWUD3G14Jn/kMwLxn9bAUjZ/+OnA1rLbNp/8hjjxw6uA3Au6YsAlLJyNn0edO1OnkrXJKHLwhvc4V9jdQ6RWQGNyXFZMQu3b2uy5p4ODs1WzLPIeZvxHg2uVLaLRAAgBjDBFtn2WZPbstir1D9WbNvHq0LBnT+vs6oKRbEQ4Z9k59x2tmIXUqFNQgFLc+GwB8rteEMTJZTxfzVlQUbD3DSTlac1VHLZTU0Bp7cUxtSmIPhOMs0PpJ//LDHK8DXMxbneVI8uqnwQMXof0k+PXHep2HK/FKiIFKQTQfAuFHUA280oSMXpfhRlE2ctrn1Fu3HPwoDtxW9+oT8i47cOt3g4NvBLHroiTKbMik2UzjhMAgIgMYBGbewyCxBsNk7D9raPbXzKu/m1rh+yNGWb4X464VHIU0i61OGHDsxenl3//JU9/wozMQOwWKOSCu8/L54KV/Gsebq7KyxIFx56fjtFgsU8dTN6bNJWPchrcYmaYTr9bctPXeV/NXPpC3NMsR5r98J9z3BPGUh3jlmHGrECeyUpXVY9i+BMShKmb/Ow12mXYHqyu4+6iJrr8dJnq9e/WVVcxgICAEraL2hjG6twqUQRvrIZw6I6ozDP+c95oQn3VdwSM20TyvzNpAVeCgS7E4Vg/SO3/uUSrqnEExH9zYfPSPQ9NyKzfXsL2qo8CEtqDndbBJaCbC1jOcD89hmy82FsiF5nq4AZUg1dXmkgG4rNbuy1ua5Wizivovz9ONKtUgHKHiJI6TauCBcHyYq7Xxe9hFUzKZdnX3iDuKXuzw7+109/VCQHnLEzjQRRJsWxfbI/tud4AITIhmc22NjcGem4DZjkIm54AeNusJtEyFaXkCRxFhVBMKw/UveCdcP734vrdM7dJTpZhNmQHYrIIHq/cZUdMmqNNG3pIsRwu75rBcUOA1N9Y8r+r79XY7hEDW1N/BTQBunLc0iwWi192R5br0HK5h2BKLELaB07x1TZnptJCTBo7uyyLt/ts35YfdO3YXFm4f072jAUAQWV1DYlhfXcO+KsGZn7AsIXBFYyxPYMaOeczukpkZewIn0GmB8oSGzppFaHagqlzvMdFDnbRz28t+J29FwymkQXjTMwAgYT8+fnsnQlGBVjq3HhuLxXJwZAS+G4Tg6WYSuDVXR623/nu58ASwq48txUC/4YmSWJgEiSFR4HmRnMOnc4hVNoGVuH3K7iHKdELy+jyB3Tv2Rqk7r49ZRpnseDaq00JkZjbGdF/NKlhYZk+/hWezJxSfWXveyoKToGI3RmR1yvGO+bff88S3fSVvUUMopEF487Ph+/4rqZSSdiCNjDcN+iNngIaHj85BENyUsKGkE3K01gaUPZQ0EpyIJrP2UEj0ktiVj/s/1ac+Dw/krcxi6RG//skCdcpeNb0CDGCQuCI5JdRsXNcodgxTUkDPw3Xn9bujZamJpwAAIABJREFU8+3uuJtOJivuZwCzEoLDT2MEQkAYiP/sJvzkQXvSQLcKYLdrQ+qlisk23Pb4ZVXrGBkoqzpoAAz07oCGuhfk7L4asmOQs3qFvSQ3BruqBJBj3AC0CddXgQ2DlOAZpTVZg/A6ZH+dfvYOudxPfzQLA8PWD5wueSVBHBnhZXj4NmMiN5CwUWWjpVZmgxFgeHnWnCniABdveQ5KCUQGQQMjIop96BwIDyji+7JYLDPC1eTrpRgjVYk7+kr8ey9SX/zZvEVZLDvZfMMzhI5TtxbUaoCI0EyBNVPgYxyxk6RAC1X085Y5hMMImL/+Lfbds++81PZ03vYb6Z9E7vuduyZl9zDTdxYzA2IURV0LmdmuI9gPODj+tavvLDOloKGq3UaGACh3LUMpouGEQgghiIgZjQEDzHtlAxsMFh+Ve8YmoRnErpGbDPu5FRMflxOzLpRBlloscIJA3563KItlCO03P0NU6qqz4XYeVE4dnMB3EhO1YOFE6iz76Waokrw1HpgZNon778R3a6Ah+7DnyaQhLflAgrGu01K2m5uIyKCzIaZt/6/LDofb5GvwZp411DIJBTXACgMzM2eB5pjNI1kP4X5BJEbK4jYYwGTTciMNvL62wNp7+8bWM5wUG0paxFBSBW2lG1VPe/Gil4b4hFeD+c95i7JYhhP+Xzdi57K68KBcv7CgkyipJCBF6yHQceR6nlc4g3CHzbMvE+g6dQX3ydDWdVKbEBF6Bt52otGhDsMe3D1EdINagYCo3W7L7WPnuf2fNbZ+oGUm5BQaOhrq+wkAexdLyY0iNmTct2KhF6eBBmHoZrFYLCnEbnW1BbKtV+P3vJg//9q8FVkse5H8wtfDA59S7/jOjcgAA0sJ1QUfIwhboZmjJGoT2YS7DM59D1SYBjKIQlaPfsA07ZqC/cUntkzCzLrbMhS5m33U9GRlMaJxHEPP28jMxnpCerDBodvYF7JZQy3zCQFkzVQRH7YiGoRbZLVfrzcZ2fcW9tNe2FDSvbFJaCbC1jPM13OI4FTiM6ly5aIPsY0XtZQA8/d/AM/8LrzwOYkxGKUT46AE56RURzJJSa+j7ysR0dfvjNdH730wDf6+M6fortMJABgIEQEJEcEoYwyiXUC4k6LFz1hP4HQpWmhoebKYmt7PAsZXbVNEQwizhVq9DoCY9nrgdlh0oyaWbKy5JQ/smsPDwRilYM2hutcG9+5ftvGiljJwAf72zeKmJxki6YKAVpsWobUhZN66psu0mrtZ2YQAKLIFhLhVfKJvLm/bowgEWVJTZq3TbFjCzIhFHEcVk0OeQLSewPmmaAbqnvQ972h2pd0tBIVsyLC39JuZjdnvX9eWnbBYjioonQiry9Gl9d96Pl/r5C3HYtkv6o1PIQdRx54vTdJxF2Rchgmj8Wa18nhHgwoHBHC2GhCozzTY11gIsxoEiEZpNt1hhl26sk9sFUHLUcUADMQwFvPhL6RBCFlmUeguIqS9AjMGlhQC9bbRU6y2nuFk2FDSCSlaEM1sySuUVLMSrDcdD1I/feADs7+hxTI11GvucASrNeV/5R8S0KBqngkZYkE+KYMYo0g8lTAVy3W4u1/ujvK3+gXmvtKChEzdXmN3v5GdiZSduz0LvLWcD2FoFlDesX/rjmgGL7KzniFmsWVM/b0YZ+n/kHsDuK1XtqodZvnuKE1TEsKABkLSRZzsnw6IQ7dR9fpGtf+jqgjaSK5iUjTP27aAoiSJGQ9GIgZkQgAG0FhI/+AcD0wnx9YztFjKhkDQSCk4AAD83rzlWCzj0XnN0+nilWTjPPzMDQEmkTwpZUOpdagEDrqcLkXVU47ZzFtmfkzZx7gjZHT0qztn8gUAQEFj0mZAZmDv3iwWywEopoewWDOOU2TUFNNIC2/HpFT/okTLaEY5b4saxl0U7Oc2XdxkPcVK9Gv/I555Gl/8WN5yLJaxif7gWwDW5b2t+EHCMw+QbEhnUUFHt12odCCNkCvFTJhQIBD3ba4QgAYAYAI0wMxIwJq75iEB6K2rMfYO61YmVFm4aS9JKRd0fHdgRuVfGfspnPE4alQi0/n8q0yPco03bOM3a+bYAzYiVM/WM5wqtp7hpNhQ0mmGkmKwHPnHAY7zxS9M76oWyyGzqD70GD5zUcgFdpZV2vGa8cJSB9ghilDb2cl9MLT+IW7nee9L6zWsTv32KQKgLx6VEICA0CD0V7aY70Fq0UIHR3G0etOjR1Fzh84bR+4rY+sZWizzR9RquqaJd38rQCVvLRbLgeC3fB06S8qk4CwZX5uOBEwwXYidNG9p+2Z36YiJYz4HT9xvMpvhhw3b2fX+ZScJgG7ygu0DuGcTIgAQgoC+glgFtI6mypim1qzXBNqyYXNNWSYg5hX7RdpiRD3DUQ2QbZj2xiahmQhbz3Ayz6Gsn0x++Rtx9YsAV6ev0mI5XNLXnWfykOMUb9lEJbGidQiibJMdRUuXigh9JSIGbMvMuhu2mHBgJzMQoiAUhIjZUHUOygiNW68vr+Rhw4tIWIPhepTF0Np/XUEbiTYLrAHTY1Q9Q4ulANh6hnvDSRsAzFc/mLcQi2VKvO4GhgaYNTAeiHUnCDAsj4ewAIxsHocOJHtd/8Ds23by0l6yUwZEFMIhmquxk63XZzlMDmig2gdzRhSxUUPOtduzZScslrIhbG1oy/zx+pNglCtUJZFpFFe9o90fjT//df0ps8z8Gx5eOurcbFmh2Lq4nZizWCxjQazyljCEIo6iGFzBTZcbQnmp1izAw5l/diPrGY6Kibf1DCfCJqGZlKO1bH5USJJUOnJuJFQREhtk8tmkrjGtd71Y3vycvFVbLNPmTU/0GUMGpKjFHhhmN+EkFkp6bo3DqgcVFht5qRsdsDCYxQ0AAJi6ZQoBBeCIhC6MDLuWGGRXZs4iGQHFjnO71Qj7Yxy5G/a4u51k7N6FM5cfZD9M7y1slZDWAGY7RQ0jMINR7CB7niMlGmPQpKBK1L2zwa2tv37gqONHhobOeK3gqDqH07p+WRg3NHf+QkP3Pr1EMHqaEw2She+ZljBFXAdUyAGlpATPJ/oh9DuBK9EE7fRY3prGx9YztFimjUdRLbyEKvLMel1HTrTuVp0m+843vUHdb+vRW+aQ5hufrFAzEKg2y8W6OgYLFeWoqLUS1FqRu4Z0Nm+NwxjqN5tSahngYdNhw9bw79d9t2W14tZ/d43YGFEIw8bx3K1hdkndg3ZEUgqO1jTw/FKJOfJICkpEKtMO6ZOqkDX/ivhoUeqJWptwyRgXTchwxfi5JYoYe/H0jqkym2xmELsWznIQ2uCnohOTH7hLq96x2D/WbgnfTXQU5y3NYpkV/Ma7wCgEzwkvx+3L0ErB7biNahgJwS53ilqwfuYN+zgd67BspTwk1LzfdUn9BwMiCgkagiAwPYuwXJ3XbosiX09LWTxalsmwf9+MSIIba4lQZZaCrzokCpmgpIiGirx/qfoIGlcZY5LUGOUJXspPjq1neCjYrKQTcdSykkb+csUIlt66Un5KItxYqIfRL30fbTyStzSLZZa86WlSRZK4UiUActs1nSA4ijroisW8xY1kuL205Vwby5oafjANHjJ+l4GDvsGd1yQAML0a9MwMzJVKBQCZOZvNLOAAd/9ZQ7N3nVfW0HGzm1oyymJoHTA0dG5IBKAyrA0paCfmHD60/qn35S1qCEW0WPgf/0r94XNjrYSuoqyTI520cDOgtp6hxZID0XoiI9ekHrgRReh5a5cj+ZzvVPf9Vt7KLJbZkr7lbs/DyIhAxomDmpM6LaVOmkA7b2n7ZpfBNrZNOAuPXDbzuI8JXDYGhPC9IJNdWINwrKyhe63hn3VdQRsUaTkC1BUlgTTAoScpOPZ3L38hXPpC3qKGUMQvnn54pZMiQIDiClJC6JNy8xa1f2w9w2lik9BMxrx6DqsuuxFFIGITHuNECnRPVNUH3gHQyVuaxTJz1l93N6LRwg0qDGmyieugK0HQzFvXXuxh8k0Yb7nzrJFOwn6zbeCInRUIB52EuCM4pa8aIYPwPOE6RLTlk8nRo3VAD5v1BFqmg+HhmwUAABJiMmyMQQWd1Jx9+bsf/bP35C1qCEU0PFLz7+lb30LSYUMQB5D6qSzPg2XrGU4Vu+bQ0k8n8TakL6RbdzDmtth8OPmP/ws97vl567JYDonw9U8TnkiursJDjwD4y2zCTi1vUddh9i324GK/SS6AgDgwFYtdyxO3LEYEQKxUKkIIpq5jMAscPZD2AzBB/cAdEaHdCdYZewJtncPJKEtoqGVvQglOrCVCndklBhMCXMlb1BCKaBACACJLFkYYBwxAJ/Wv5a1ofGzZCYtl2kjCho7ARJtp0nRv3Fy8zf0nrzIPfzpvXRbL4RG++gn64gqsfw28/vwma/B03oquzxCr6UB21LBkMFMZz3R9g1tTulsrngiAQJDjulvrCUuXV6Z/IGJjbYpPWdbgWcN1b4KEIw8cgbFQlLYvvPM78lY0nIIahPqPfpRNU/ghaYocroelKTsxfj1DNXxCztYz3BMbSjoZZQ8lTVFuOsJQ1QfHNU0naetoEzq5ZSG2WPLh978N/uI2euY19bkHQQcIiqVwEAQb9n2QbhDHTDPvL6477Os2y9vdWTedDCACowHMSggOP40RCAEBgAcKD3KviOA2BsAwGgPMfQdn4jgL+MQtE5QNMiNn+WK6W/YmENEQAABrQARgJAY0wBqQERi0Xjp+DAUprUkIbQwRGTP7zxlgx6e8d8jlfpLEzMLAsPUDp0vhxjkjQkNtJNd1YAXUiEIjQbiuPP6iV+YtaDgFNQjx7F3pL36XCV1VJ9AUU26Fd2fP9f4Etp6hxdLDl806G+6kwCg5jt71TXjtq3mLsljywLjmw2e49dfw+meQaldiN9GBELHbCjmS4tiJhSQ5BBWHMey7/i36Qz33PHjI+sNd4aZMW4exQexlsmEEEQREA8cfjhsks2e3RVvXi8VSImRkVOQ1nMg4n335Tcnlh/MWNJyCGhh84fMAG0mlQeuRYEh8J29FB2VfaZ15MCGNrWc4GjsjdTTRemkjWWu4a5F/MpRV8ZxXqo//dt6iLJb8+OCv4mOfrt58bwxpAJExLjgI6ebmRrjhH89b3C5m2ETv2yaE3a/S7n1dOzCz9wiBGRAbjYaUknur3/Cw1hDucLhNvgZv5llDLZNgQy7nm4jO1UTETd3RBHCq+Yki1pwAgMKGimm4+7tF9TavihGp5fhYgmUvPI1DN+T+//Yfrrf3DBiKto3Yk6wX373Zj21PEGnotitSKWdS06l5x1LvuNP6KkOg/+hleSuyWPIlhGtfwa99GaJJls4YwVphPQAtFFMFzWz7zR220CjTqC/vJ+8qHcFbP/Y8c/cLuOu07T24sz8deWSmG5Bw4FyDiMgAzIiECGAMCDpx+pRfCbIQSKJuBCzuXblhGuCIG5heNOmObY8LTUUP8fABzR5/MEuJwJF/X8skBPFax5wOqroRrcfI4Vf+AQpZK6i4Hie8cr/+jW8NubHIi6swt2uEbD1Di2X/VIjamKYbK8I/p371BXjzc/NWZLHkD3/4HfqmpwEisI8etY0jk1SaIiay6zKRV22XwbnvAQzTzulvJIAB05Sx6xXMJmn7XX9sEAy6nlepVbdCRqF3wBT7azY4dBv7QjZrqOUAWI/ldKHGoiceCDvmvlfd4XEb4HLeioZT9C+w89L3o0kTUo4ufdToWNCOeNKJg0VtNAgAjF7pYR2uk8GcV2JDmaapUzVJa9O59OX0fT+VkwyLpXj8uy8CKUAtI1RR3VnaUMlhBwENbWmzZpaZBxOnZUcaABhZsqx3JvScft3rb/3kHX2c2XnHQXEDCzWyjDN9xyAb5myPBsOCUCtFRIYZgJdPnTz1mNNZJXpmzkoRAsAUa9OPm39lZO8+pX5/1GJFa/tNRtFsqlHjn6LpLDubiak5VcD42hc+fvUXvy1vOSMprocQAPDe70hPfUlIbBTRuTotaHi+bFvPcKrYNYfzAQrFvudHFETKtAvsALFYDp/XPQ5Qiy9/2jWMDZPGlbwF7cm0mt/Rs6XDWvi9xzzb1Sa6/+2ZfNJ1FxcXobdoMDMCD78H2SsHwQywnsD5xnoCD4fzFQdV5x875+L2et5a9qLQBiG7IfzkD6aJjqv1vLXkhy07YbH0cNIUtMNOGv7e98KDf5e3HIulYLz2yfTAZzr/4Rvdzv1ArcO//3g20iGkY9l1i8E9A68yQjY/i9txoZSdIlynWq8ZZtMbLh/+uNlWEbRYyshKEhrP5X/rbF64P28te1HYpDIAAPDAP+Jd32uOfa2kEBOVVGsGrwTKTWUURNWwDqjnoEkcvg58oOzMdrkgQjQjipVqwL7SQtv9XN+S4O34AFP8aOHDoZsTYNdmP529mXUSmkR6nulEWHFNWCXd4jpJgWzcWIOnO6kHn3gPNy9M5V4WyzxhHnmQbn+S+pOfhHteDk5C2kckhhgcH1whWigIzSxj5YfVoN8qA9gX8Nk9DJERaJRxuN0iY78Nlh2c/SREoG6pQYRuwpgdzfj2iWa7icr0DCS5yUI2GVLteoHqtEFKEmR0fOOtN5Mj+uNK9mX6jkhyhgaRh2yjLmOG5c/B7O3MsnL5HpIse1A0J9uWHtxv9iHLJFT1+oZzQ0XGaUtVacPR9TW34tJV11S444Hg8M/fmLfGvSi0hxAA2Aj49XuR6lT3GteuSritQydJx8Yx9TjxUvtEb2HrGVrmBx+UMQZQgPBilkTa1R2ThHFdxATwH18INz8nb40WSzF5xHzpv8NjXwA//6SqFthZNTIKcJHgEjQ7skapp/JWOD2m7GPs+gMBUSmFvgcAmk1tedn3/UkCRLMVibs3i8Uyd1zz61XdjDvhwqnKinOy4zm36EsmPK2g/sV/ewZ00adXiu0hBIDLn6Cnf3d6wxkR+dppV+JO5GrH8TByUy81nALKvCUeKtxdCL9zGwx82VHPsG/KkGmXt/BIM3Jtof14JmQ6H5xgbRjR8ZExSlIXdUAp+LUQSIYxE8EX/mQqN7JY5pNrX3Hu/aGUtH7cY4KwFqaJF7nCuzGGNUhjxLyStA0We8j+hX1k99ozamOgrEXfXfr24+ABw/Rs34fBGEYENiQEp8n5W28WUgKNPZ6bVnkGnrEnkA0ORiV1t6IPYPOmaJ7AvbGDvlnjOk5LmyUhNsK2cUUabrTN2ZrTpPgyk3f1z38hb4HXoQSeIoMxvOPbY6b02ONiRwsdkg463qrUJpGNvNUdPjR8YxpRvL4/qVoJ/txFgXD4ZtkTRDF0G/c6DKiYIA2BteP6jsTNJG3HxklR/do/g9UHZyHeYpkn0g/9kr7zaaLjhZSQoyOvEtNDQMKnhVnfuoj5unbWP+zu7Rlo/S8RCAHGAIAxprK06AU+Exoz9hr+cZN2mBHbrBkxqrDMCVOdPbCMZDOEpTgUQiipG3HtRG0hkRvtCn7m39w965KwU6HwHkIAePTzeNdLvNNfr9Iv+0rGtUXsVGrG12ZddOtnWobO7gEj4MBywb7PyjYPk2E/tgkZ74MzKKTjOqBYKyIwBpSsBZUKrdfUZ98F6w/PSKXFMlf8+a/ws18KrVW+9AXneN2wEhxw6jEls77z8DTO230Rbh/HE3kI+y6OWyboKA9h/6HD6mLs+E1KYdKUPIeBb77tFgAWjpzAHYRbITn7K/E9a08gjNBjR1HzwcjyWoes46hSJbdNqasFEGowmLZ8uVBLPqFEZeV9v5q3uutTjjkgAjd+9xMlHq/JxaX1L6ey3cQV1z/jsc26eV0Gw0e3YBpvswDAaMPbsjfjeg5TBkQWCMYYoZPUEDpecPXT4e/cI274J4ep3GIpNz/zJLh6v7x6B7327kD5Wq/QIZYvGu4qLKIBMmC+aq1BCKP18vHjnuehFGmaCjGyvSIevo0iL0/g8CISpYp7tOzB8ISDw/68dtwyC0IRVrDeTOK2X6mYdULDOrnvld8idSdvafuiNE8E3vo8/sr76z/wp5vLgdxsVfzTafhQKI87euYznSVhy2Yb6Fa2+6Qdg4BxbTxbAnFvRhVWtuzJqAL3LImjkEgk4C07uoVB0mnDH7zCPXkuuf+DhyzSYik7HjDee9ncuEo3NpX0tD68NYSDXguzO6UKGuasf8kKzQ8FGXloofnsxd6Nuv3U6PL0aAauM1CVHhi66VfZKCD0fPfmm282aPzADcPQdd1RUaNFKyg/+vKlGfIViqKtFRzpCdyfzC1T0AaKTZeIxBLHHaxhsn4tqB0Pky/86DMbT3lu85PvzVvaviiN54e/8n5x9/ds1hvYIc/Uks0NqRig2IV3C4WtZ2gpD4I1gpF+FUQQRpFK9aKP8vHPS1YezVuaxVI+YsDoQ6fpxqbCQOlDres78/WE418f+wJWhx4gpAStT548KVzHcZw0TT3P03r47JXFYrEAgFSJSCEyWoI4wVzTdP5/fl3zk3+Tt679UhqDEAC0lPALzxZCKEi1jxzUFpQRQkDSRtbGqYBwPFQEJqUjaCgOjzox2LcB9TYJaK6zDTAqfNQall1sKOlkjAoljWQ99RoctV1Y00JgYNZ/+Z9KjqBd6LquFkuRid74TAVVYMXsMilAWTUJioQZnOA4q0MoZD+YBQ0AAJhwez8S0LDFh4wMu5J7ZYcxdxvb7aRfvStnC+n7r8bdcM7sdkSYJY8BFGwYDCAJRtBpeOrGM9VGVZuYQSNCmiZEzAa3NuzbRr3bkaGh++p2JwcH5V1X57wybmjuuEmA8mL/oaF7n26ZEG6gAJlEqEXH8YE4YB2iAccPwVly2FCUqsbVBz928slfD3A1b7n7pUwGIfztu/G256m3Pdtzk9ScTEPTFI9G4DuNE64UTtJE1VEGJGEA5QjYLTQDnZMZsb9Uz4+lPATrFz3QwltMYuGLs/rt3463PT/62G/nrctiKTlvuA2AgFJCh1m3wWEF4ARJ8wLUzxyGgP2tKtyvX3HkYdfpm7LrG2PIcYAZdIqOEFIao4C5urxYqVSIBi7CfTN8tucrBTZ7qmUWoGx2VCyqFVeaIG1hnBrteGLRNS0D4YO6Ls3xL71iaeMr9330VbfkLXYMypBltJ/VB8S93xfdeZcfxwGfiHwXOptElKRKCHJdzzCz0cSKSQ6vL2cBgH3WM+xOImXZ22w9w72w9Qyni1+RssObuOEFZ0P/fmfhdv3RPwQoQeJmi6XofOjt9HUv7a6GQ5fcwFMbyqlC2EI6lNHyVsO4u/tAhD1CK7ZeGNmu8u7fh16tu1NrFIKNAQDpOFqloLVfDU6ePhZUfCI0xhBRVkwekYhxR5LQbqLzEYpHypxSvzk6q6Qd6swDNmtoMZFx5LkeMoadjlMJ0HGVUWHacRxtGjfX9WUQX/RPPfnyf/7pvJWOR/nmSrTrwk9+ZyOOm+klodWypwLukHAirLa0BAAgTMQRDBkdl33PnXVDWWw9w0mwoaST0YzMRsVHt2b0JZE21OO/BqCZtyiLZU4wP/tEYAAU4LCJdWw8h8KKOLyGaZrZR/fhJBw5F4xojAFEEEKpFJRyAu/48eWqH0gk0Ia4G35JTGLYBHrWmOdWP3DM7KaWjCMSGmqZEUbWBFMSxVxZ7GCtFcWuTE9U0Ri3efHRWqqITzTuvjNvmWNTwpH9+//Au+WulV9+Yc11G0m6Co0oSWtSAWhOtBBCIKnRns+RnhwLAOTXsc0r9nmbjJoMCAWqmr7wRdQp/8K/zFuRxTJfvOGJIBFjJdOmkE6qRYxu3pomZXjRebhuhCAKkfn+AAC0zqzBxaUGABhjMgthy1TgEWvw9prgm/FaQRsUabEcPi1PRpyC77AXcNhe4lQoWNuQrq6c8Z12Kn0dfO6lL8xb5tiUdWAqb/k69dW/Fi//gHZPYfOBBWqxrITgIAPqxAACybEuWMDJocJgYHcPM7GT0JavAIADp42eexQ6TrQR/fq34dO+nz/2a3nLsVjmE/m/32eENCaFyhIkiBTO4i67m7tudQfQ/Qf1fjMEONxjs9U+jirzYwzwzl4GGbJebOuCiNi7ncniRcFocsXJY8vLxxaJICsvgYgAtK2ECQe9b9fvzKbU341y+rGNNpmIwo33bNmqUmFAe4zsOZthssRpxRcXEpFWzqfqkaWUqpo//qM35a1xEkrcmuBtz+Mvv3/xe38bl85uRtqHSCBsKHLcwOcoZmsQTsbwJKK2nuEhYTsGAABQvsuf+CNqXlaf+r28tVgsc82PfhSECyr1Axmb8frNfTLKIAQ0Q0oCIhPDgQxCGOhokAFxICZwyyBko7JbC0cuLS8cX1qUDiiliCT0JZ7JfmFmxJ0dWGaR4YzDaI5ggtCpUJpxne33S0XAWiupHTBqs+5WLqcsfFroXLv40P3mcfes/MjNeQuckBKHFvCX3++cf+76r78SNi4o/2wLqsiaUKLfaKd5iysvA0vchgWf2LITltmj3/Z8TjasNWixzJyffzqoVEiI0+Twb75HScADhdbvc6YSEYmAqFarHT9+3PMdpRQR4pYFydw7imCww7OrwYtPWdbglWVNoyVjw6UNclMppCM2daUtzxxPm5/4sXvgC39RXmsQSu0hBACAE85NT0kf+CS8/HcaUSfyTzsJpLyJEkClsTxd5Y1UpkkkPc/1VUfhZgrj1eS138m9oevahAMdM42oYGFGz02Mun6J5zL2YF5DScmpRcnakpahwJDcqtGR2NDyWC3cJKLIIy+RbDaUOEtyI/nMn3P7iv7Ye/JWbbEcFfBVf89SgmO85KQ0F9q8tAS1NUxd5ESsknGYmYh0qmVQMcaYNJEIGsdrh3e2b9uOkd01383gATvkMvRSf26n8mTuntUXfZr9Iwi0UgCAKJkZALvLDtNIus7iUuP4csPzHKWU1toRbspjznVOKfLFegKnS+HGb9YTWCoqam3DPcWInCrXAzRuy0BgWh4+AAAUqUlEQVTDhKkLQjkKQgC/SmnbLIRfej986S8e/bNfzlvygSj7qPpK+sAn4banwNu/ngOkzqW2uOI64EK6jKGjLrYdvZDoim+MMZGj2nQub8FHj4PWM7SL5ueBMLm2TLrlhNpd8LV2vaSil0VnUzhu0z2VxOima8o7ppONzju/G8NNaw1aLIcJv+kecAx9/lT8C2fbnIDbbIlVcFYSGXumatBhp6E1geurKIS4BY6nxEGT0Bw0vdbo3KG937o9hY5Sx/Gl9FipbsUlw2DY9b1jx5eWlxeFEHGcas1E0vr9LBYLAFyt3IgmFWyOC5WurYNRp+WmMM3KWqTMmuMe00nH63QC0wxuf17ZrUEov4ewi7ztXvXlD5172R+u0rmQCfUmpo4JgJJkiTaisKr9jjE+ywDN7pnISSjczFNuDJ8ZHWKxZa7CUUsQ7drCvSn5zCJLcJOO8KsbiUtG1dSaYND1s2HUYk6Vf1Ymj7JzQv/fz8Kbns8PfBJgNW/JFsvRw1dwz8NQ+zg+9Ul+qsNK4sU6jheWnCtrXHNApU4ddBqYdugsQtRGOV4p4x39JnJvDxrY2aXuw0PYvej21bf6Ixy4l3GEm3Y6QECOY7RGIiml0smZ0ydqtYrrukolYIwQAhGVUjCqHuOM+ynrIZyM0ozHSt6PHzU8I5SIsaPoOJs1EQcawyoEXk2IlVS4onMDr20mJBX//avuyFvsFJif1ie47Vnhlz8C3//RJfdyG6QvtIagjRVQLbdWgWZc8c1GmjjoTOV2pWmAcmJ0KGlfdGh/NKk1CPek7KGkmGo/OLGu2zLuLFfMNQ0IC5isoNMQUjfSKKx4zbd+I976fP7KX+Yt1mI52jz3ZfA374Cf+HQjFM3FENIAsAYxu7KZJIyu50MYUt01UTpm+7OXQdg7ovfiZAZh91zccS9thJRaa2CNAlgpv1o5d+6c76FSyhgjhBBCAIDWrLUWo0oy2qyhhaRo47FR/XLRdFr2JlFR1V+KVQdDx2+Y1XS57qyoKEwdWkphBf26MCcp/OuXPjlvpdNhvOm9IqNWH4Gn/Gu58pHOf/s33rNeGhuIdGNRPZT6S368EeLxSFODNhRMp9SSrS+3N9yNy9m5YfajS9/HVRbLJidGPm9l+dgoUKqDzA03vqp9pnpNXwlrt0jTjjqt9ru/j0wqbrhDfeaP8xZqsRx5Hvx7+JoXwB/9H/HXf78X1jxVTfWqdKGKsSLPuIHSDGniczs9WOlC3Ioa3Wr/t/tQ3vox/Mz+/+3seRGB+3cKIbRSJBCI2eilpeVz5057nguotDaImFmDaaoBwHVdBjXbbCSM2bvftVnmAmv4zQXHOLmqF1ueU5Nq1cSndXPFOdPQAI732ZffVjt1S3rqaz7zisfnLXNqzGEDJG57vv7yX579of+nKYVWhKzcWGx45FWOVza+2vKWZnp3OwM0monqGVrP4Z6UxnOIwnjh8Za+aAwunHOvbmI99NrG+Mnmu74Dzj8HHvwkwGbeKi0WS4/n/mtafqx47IsNJ1rr/7+9e4uxJSsLOP59a6267Np7d/e5zOUMGc4MlxCQZAhMIvAgYtBElMTEB6Mg4CWYkOgMGjVGQ3jwxQR98DaGGCUGMfBkoiMjEDL4IDEMM3IxA6MCI2fg3E9f9q2q1sWH3d2nT5+uw/TQM92z+//Lycnu6t3Vq6pr11pfrcvX7+XjtZGtqmBKEXXGm+hb+YHSO21mI0zphvv8VoZAkVv2EG69U0Wv73k7scSObIQpJUlBRVNoiqp315k7+v1e27YpBTVJxW6tKaopBWOMMSYmv6/j6kJP4ME6au0regIXm/Wjpr+STQrnrg7C0qXZOZudHvRmj73/h4av/6mNxx8+7AIesMXpIdyWrn5reP/P17P1dOplk/6Sm6bxym3D2DSTc/Xw5Rpmh13AY8LseOq5mRlKRHX7yej8Vnr9yWvXEB1urLfyYuk5dHbS+kFrplrceXJ6vtHa9u/Z+MhbNaq96zXh658SOYQl7wF0evrx9PXP6Jt/Nal15aBt6nTyHpfq3I+82kxjY09reo716bz77vpNf+d9frNn79n2EOpedcdmdkBNW78rOKcnT5+6447b8szGGK2mGIKxRtWklGIUVbWZVZN8aM1BDfahJ3CxEfgttLE7fXp0bkP8enm3pGspP/2NB8+GYJZfdf+Vf/v4YZfu4C30jem3/93NZsk0EoqsHkmxPAvjXA5mDmEXngxtSlZkVzgXZdcT051pJ9I+EyLTc3hrR2zyei12KGlqXH+2vlacKc2V2UNvt6/88fDfnznsogG4lewPngpfeyT+4wez33y41b4rC5/cSnt+NbtTY72vXW2n9Zu/3q4f0s1pJ1IQ+cF6COV6NdGrzKkTJweDQUw+hWitWtWUQhSzlfDNqKakovMHlAdUvbBIzME6cu2rI1bP4mBFY01bZ06naWk5XLjyza9s/M8TVz71x4ddrufLgt+t7AOPSLSubYrZeH340iysa1Yur19c7d3l08zpujNnmuZqWeisHQxk1NaTODwdkrh6ZIt85LW0mWnHwZZZanyUlPfUz1px2T7zFB25G9kRo9I1ROfGJBPXVyXt6lDabz7D40U7rsO247RZl8tkbEzeukKlzbWpY+ZlWZKt3BUzbSWPM6nUnJBwsRSdGiltMW2jmJBp9K3zpnenPT+Kw5H3rtBhM7z21z9i7n+PEe8f+/vn8VABHJgV86ZfSKdepq9+W9JMikGarklW9IKbmlHP9KZ2Kv5EFabqNsZtL9PQ9pZkUg9kNrEphqqf9aftpWiHEp8pbVHrUpJagteg2otxVlzvbJn3zqUkKRkbNgO2KCJi5jnjVb1vduecUFXVFI3E+QDUJKEVTUvD/tLS0mDQVS8823p5O4jd3rLz4eaNcZ9ufzfFvR9A6zEb+eI7jtd1VMupI5BOz/cqrx3b/Y2Xz/bRmKMWEHbMwVHTzj9HO5e6SCmJWcwQwJmsaRpjREK01qaUxBW1D84tZe2qxLaxpTq1zVrQ5IuVYeOjsdey9tRGVffNhl99hXHPtCHXYprrba3/jwdefvd7/+z2+97ypQ8syPoxe1rMq2GXpfd+ss6XkzWSZ81kVK2cCpfXzUk3G5dZnPZMteayPI4apxJj2daxlcaVeZb30mytnmQn74xXz0U3LIsqjq6k4tSS1mtdAd4B3bCOWwC5n/pxfsu7xSqmt/ip4047KrB5xXbzqkjTpl5Ztj7KaGYzV1V+FJuJVNUorVutrLgoRmzw3qdQacxyl9qw6pzLYuHCdDxYSc1EG/XOn/Tm6t/8ZPaGX7TJzR7/2+f9UAEcNP2d/xKbp+hFpJJx7fKoJ1J9vjCmLlQmVnLJrcQ6T24ajGRxYH2cZWNxUk4rLyk4TTMnIbhB8CmTqVrXhHkP4eaKo3r9dazFGDFGVU2SGGOKUWKULJfNWiOmeD1lhRpNbSvRm16+1B9UVVn1yjzPY5ju6zB3z3XcbkPfuALO9fdr1N1tcWOSJGn33P9x6zjMOw64K1Dsav8c1nlzfnd55gXxL5Jmxfzi3O6fn0+ala3refGE2azsD2JSEUnRi8RZ0xa9YWxHyZUppTJFEQnZoKl9Jt6n3NvLy6G/UfWyda/FdCOYYTbUds2oXf/yv8TvPvXMI3962If1vFvQy2Ev+QOP+ic/Gz/9h/LuL9nlSVE3zta1zEq9YyOcz4qltjHGGKONapab5bae+XhtuTwR6lEwphX1rgjWunZd2qlkwwMp1XEL/Dp1Pdna3XNobnqxS1dP4z6HpC6orust79gedMWnqya20QyDtkM/UtX1cukOn13daMqTPrSZn8ycnfYHt0/8pbzVkTuVTS9LWWbJT1Kp1jXRyEfe4l7/zizJ9Al6BYEXud99MpMmqg+6IXK7hiLldeFX6/xe086ysFan5MT43EjSXPPGBWlHLrqsiZI30/ykhMKEddVesH1Nl8TvdWtKSa3djAC3Y0VjVFNqRUySJPMYQVWsqDGmTdMyy6t+r9/vV2VhnYYQQmj3uwD4ze/f2UN4y8eX5oaew7T3SJakC7h8wy240FG/dFTjKe2dLzo+zw92uwKkbCsg3PWnD+5oNaG7zpvVfOfnazsgXFQDnW60JuaDGKONdW5iUuPFmDSL+UrTeNeOJGnMh5JMHiZJJeYxC0VoLhTVmWkYzvJnnn7fa17ySw8t3fe2Jx985WEf0AvkaF3NL4T73qenz5reUvjnX68e+FSanW7s1b6UdjqeuqCZK5Jr2jSxUUyqVCSZyXgip+7JZ9fcbFXKYUx2lt2e+/N77r5rKEjXx69zlchjlsHCdC03qh0BXtecQ+YWisj+Vx9tdwTSOxs0IWuqaa65Ua3DKE2rk2XPnbj8vQulcW6ljk0KWpW2bTYk9URiFdeb6t56dE17mdW6+cu3m5/+E5mtx2vfli999AAPEMAh+71HRfp2nHr/d2l0tieDl1TTps1jq4WNxmZ1TN7PcrGZZI0kb1IR06rYMzLd6KfVuqq8j9J4cUM1Yc+AcHMm4XZtmJJsTtYwoknifPnQ6Iy1Tq2a5ZP9sszLstQkIbZpM/mRqO4vkPi+9XXX8qG7b7AdeY/1mAWEoWNorukIFLvq8XRII326rgdzxJrQe8zFFRERjZvbd418XtR25kVZPp172ThfVdWqN9EWNs56UsdYicQsy0Ly1qgPs+jbLHdRMqtLazpdafx/PviKuz/wyWbjyuzC19b+6S8O+1BeUIt5NTwb2Q+/M8XMf/GjMhz2fu7j0/J0kZyRug3XyjyfTbS/NFyfXuhJL2aVa9an0VVlLtPVkC3bMPVadOyYIaPPzUEFcswhvJWuOYRhqwLeldA5ysAZ0ek0zzSVadLUPhZihyKzQRH9xqyosknr25D3KtUmTkJPsiQPvVVEzP3vUk3hi3QJAgtr8DMPN8su9vraW87qk+2JRsKkNb3eeCJxmpZ66jM/s0VlUr0xzion45iZKLmMWmPzfFjOxmubAcDNQ0Ylymb22vl3dL4ltrVaza3Li6xX5GVRFEVWuCxoa4yJMXrvU0q5tcYYEfGdaST2F2DcHAd2NaHm7/Q3jXHcGrZ3zALCjtPUPQfvcKZ+dE2p6Cq/PXLNtI7zpkFuDP92Lu+0eAqbTSYT55xa471PKv1+fzIalzbfaNU5Y9s1zfLUP3V1NKmcDMLsKw++6uxvfKIdXYrffer8MRgduqfFvBr2Ic/t2TfLK37M3POWdOEp/y8fXH73R9ayu04Uk/XL54rleydtkna2VJlZM41GY/Q2c1Zi8AeT4L7L8QsIv+9Qz113uq4Ko2to6MHklVpUTtRs5wTbcV9IKTVFa5pgtF/HVIR4oiivWKmmOqq/N1y5e3WyNugvnZpdevpj77dvfFd49MPyhvfI6rflfz9/aAcD4AVXvf+ZUIZk2pBFSddC+ZT03yrfupydSW30clVkWIkR22ioW5v7nkxHMZe8X9WTiS1E9gwIvaQkMYkmY4xzLssya7Vf5fMvnVGrRjWpqkpsfZwvPCMiapKqxhhDCGafccTNDeXNOVc7VkbdZjaHMu6RaNfa3VX58avZRboDJ3/E8iN1lXOvWaMi3T2fR00IdvNDceNg0UUNCG0zdmWvaWNRFG1b1z6Zcmncpsz5leay5IO17M7h6Dtf/a23nXngod69r519+eHwvW9ceOTPD7vgh2wxr4bnqDxT3PeOeOJl2cvf5KN3Epug8dI342c/ZH72w3HprLatU5P78diezsx4z32kjtVH91sNLOoHdf925KS6Lu7/SSE9hLe0uaZDku2n4PNlZqTO5cQoGzsdle2JZul2vfiZ+mMfyN7+R/mdr2vF27yXhVq+85he/fba458QPzrEgwBwJHzoY5LdI1OnuixhJhpTNPL0E/LxXzYPfiGeea2cf6xYOltLJZOnxeQ2ppuryJRSL8+ttS4zzjkznz2YksQUk1dVY4yqSExbqSNErdkeFBdjlO0lNOL+HgjOf3ZnSTZfbPX47ap+wvzOKbKrovFhcvNO5Pil19Wwd/3b1fN2WGxHk9ik3dML53/AoxYQdrUbb7v9pds5ihd+vKiIjE1RpUZjU6fMR3O3XPjC77/jjl/7q/49rymMV82TmNUnHg3nnrz46b8Teeawy3tULOwFcWCGd+mrfyKduldf+kZ1PRtaESeSorFGdw/X3p6xsNf2fVvgj+sPZvtkPvvzs/ffBZuSSJIUNzNB63xkaRKRYMQlTclE0WhsT/3Ef/Pz6eKXw1f+9ZDLDODFRt/4K+klr5NX/qjJCglB1MbYqp+KGL2pJ80a46zNnHXOWmc3w7+UUoqSoqhsLqGf5hvTfItsBYQ7BsUl6aia97T9s9tfbr3YnJAoN2aXT1sVv0rSHb8lJp9SmK/zcUMbYN4Pup/z9uKWkuzVszo/aUdnoUvd/HdTgdLWpu2prJv/7+eqeqHc3G4siqooq7Lsdy2VtGD8fGpnSppCiJqnZvzVz8nFp8597h9keu6wSwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeA7+Hxatq0ZC8IqIAAAAAElFTkSuQmCC\"\n      ></image>\n    </defs>\n    <g mask=\"url(#6e273c3c6d)\">\n      <image\n        width=\"1200\"\n        height=\"1200\"\n        transform=\"matrix(.625 0 0 .625 0 0)\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAIAAABkQySYAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzde5Rs91Un9r3373fOqVc/7vslyZIsW5bRwzbGxvgBtrFljA0LAmTIWoQwExIMzGLhNVmZEBZMQsIwHmBImOExySxYAzOZhJkBZmIMZiAYbGzLWLYsW7Z0bcuWrPuS7r39qNc55/f77fxR3dX17K7qW9VV1f39rFpafatPnfOr6u6j3z77d/YmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmE886wEAAEyILcRL57KbT4+4+e0/+ktE/OyvvZeILvzYLxfveaUq1S9+6vKvv/f8j/wyKz33m+/t3P7cj/xi4Z6HWJkDkRJpoKCkYftEqtsb+vrTj13+F//jxN4XAGy7/xf+1bE3vj0vFnqe10CkTDqpWU3vfowGURHPLjTX//wDza88cf23fneNvjKhwwEAzBICQgBYTA++PDl1X3TuQX7y6c1P/PbWk5Wz5x783rx0V0op282MixxUVZnZJnFxqVJeWUqKxebxYhRFNkqIKA8+KImIWOPzEEiJiJWsJyIiplwoTnMfiRMiIkMsnr0GYUN5ql1n0e2YkNOwMzPl3u/2Gvb8MHN13h538HCITfg3M8vzOIoiazVQ5jKJouOnT544fWr9/NmB22vrT3QCBr+RkubOlzX3GX/lqTc9fNtv/lb561/jJZhAxU1Z/+AfNi9+4fP/9n+e0BgAAA7OXE0sAAB2JW+g8GG5/T3h2V8nInrfPzj9/jStHCOqSUaRmixrJsuF1KUmWMk1SGRaZzlVH4InDUwqrM6bciFeXbLHV+TEcvHsieXzZ0rHlml52QXvAlmWSI14ZSJiSckLBfWBhCWyRKSZEyKRwRNQVYRJALeKjfHeUwitPzSvqkxkhP2wwC+bzIF18P4DNUhUIjFNqpeK3FBrrVqqUu1UtXL8Ofvv/nP7yt/4gH/b26598N9dufQE/dz/NJnxAABMGQJCAJh3Qj9rV7+Wrf0LIqLiRvKWX9PqclT+SqVWun6qtnSl4svFkKUFGzmXe8O55omN8rSpHEREmJm3znVKpMKxsqqGECjo1hGImLly+kzlrvOrX/fi6I6zrhjlqkLGWuudlo2RQM3gmkZVfcXLCkU3JB84YGYEhAC3TNh7z60E/lZMGFTV+Hjg5jyx9aKDsZGUgmdNVLz3BRVHmhFl8Y0VdyG4Wi6bhfLxODd//KChmO/61++vb1y7+txF+rmfn+rAAABuEQJCAJhfxdMPyPKJ2hf/IiJdfes/iSN/1a9VTIFC2WgwLNXcnCn4a64RR5m6ms+4UjrrcvG+FkdpysyqIYQQAhExcys8dFneSuKJiDGGmUMI3vu6ulJSIiI1ZvVFt539hgeTe+9oLMUuC7EY66mVFQzCmfqgGtPgTAJr6SA/JYBDqRXfsZLq1p8xMRtjiOoDt5chmb1JEfbGF0WTF2zjdspekJpwYl3ZFrJq05SVSfMNT6uyUgtfLlQuFML6n9xfpqhy/of/Hot/7jf/yVSHBwCwbwgIAWAeRat35WtPE9Ftb/2FamUjWztxYmV9Y7PkK3nciJXrQpwWlgruRnTTp8tBuCBc9N57zfLgiRI2JZvXeRttr+RUVbFMQVVZVXkrSUjMHBftxsaGKpcLRe+1kWelE8fO3H7h3MNv0mPlfCkhldhR8FSXUE/MarqTCWwnIYlIuXmgHxbAYdS6jiMikZitDKH3IQTSaPALeHDGflLilNbjZh7ruTS+JHS6GbmCrttmnBqbu3BsqVYTW7wS8uUzWlnLQqbKKw3a9FKoP/Kq22/7Oz8dhfD0byFbCABzBwEhAMwXc/xOf+MrRHT6zf+rXy5kzcyn6fJxuV4NURwvccIbV5vFcpyV1rm6lJy6YavLqTQajSiK4kh83ogiMbGpNZoxx7otEJnt4HAjr4uItdawEFErhchBTbMZFxIS8XlOQa21asQF36ynxx58yepr7i+95M7iynKkMTlllZw9dYeC28IBf2gAh1LrD9Z775zTEIwxIhKG3KPLNHgp6fhHHbz/hE2Dcoml1Ag3ElNJVSw32fnE8o2CmDxKmqmlEy/Q+rI16ojzlC2FMlNWk+h0I/uzN5Xv+7l/de7t/9mfv7a3SioAwAwhIASAuXCMqHr7Q/mzjxFR5Z0/x3lejitZXst1NUriLL+RSFx0GzfpDrZXjTHLWe0FW6qkuZFiQ5oiNgRiJaOBgnolFhs0a0VrgYiZW5EhEcWytUZUVY1IO6ILTE6DshoWCZ598ORZxETW1zIiKd152+k3vPr4gy8L5bJLnYrSwIBwykvXAI4C6ajP1M7zhxCMDrvgMt0LMbmJAnlSLTZDdaVQaHgi8upEpEB16yubph7CclKkm838pKZVMifDck2er4aVSnxTjfj15aRIKfnn/+z306cvfvX/QNUZAJgLCAgBYPb43LfHcVr66n+6+bd+6fyV9XpSHLiZ0lZGrnUFf1Axz8B9T3bOKbe/Dv2vbeUReXvLndcG36pmbwOxDxzFhTsvnHrjq059/dfVVWxOwZEkBeLAtWYc203r4qFVEAGg185f6HwXY5pU9eBUshId/8vX8Ivf91vyzu++eP/KRHYLALBvCAgBYLYKcubl4eqj8qpfK52/FNeXtVhStzlwUyXfCtWmFBC2vkOs3QGhEgUSZmZxIaQ+t2JPH0/OnHzZu95aPHVyXciQTTxrYprskix4nFkBRnbUAkKjzfWwdDquf6Vo6CMfrX70o5d/G6lCAJglTFsAYGbMN7/VbnD6qQ8nD//DcrIeZad8rRGOr4VmeeD2BxAQtkoasnQ8GTT2IRcNViyJzUPIvFdla10xue2/ePjkg/f5ZiiurGw2mhLURBGr398HAnAEtf/05tykAkJX0LzaOCmVtOg3N5Ye/WZ+9U/91n0P/MDvfL+dyP4BAMaFgBAAZqF00p660331b5Kf+fnVj6uNZLNKZlU5JCEd3l2at+4Ras8d+6Zo+wkIO28v3JmV8lZJUgpaZmmoa1JgIxGL8cpKzLzhG3GTV17/4IW/9U5PsswliZNm8BLcPj4SgCMqzFcsOKnAb5hik+sVdbVEio1g43J27banL1w5laYr9i+/IZnqoQEABkJACAAzkJx7Zbr+7NI7/x41Klq7lJdOrxSqzeePmdKaD0ZkyIRscgFh+/mejhQ9ASERUVBmDaReQ6tUKQUfSANTQYRylTSEC6fu+IF3le68I3HWK9Ow8QMcYcMCrXnLDU47IJTg62Wb5OqrvLTiGrSS1a4Xk6VirgXr/vA1lakeHQCgHyofAMBBq5x9ML38qVOv/XF1xeMbVytLGjXXmnmwxaxSzJbtzM5LXfVCdefrGjlHakmKKgXPBbVFlWKQLMtcyKloC5dvfOWXfmftI4+mJjUhncHQAeYe6+BHP+XOv7/DRjS3vlZ0wVU4X29o89moEpU2pWDdTQ2veWRj1gMEgCPn8J5xAWAeLSdn70mvPPrSb/vHV4TjLLjCWt2vVDjxUneZNmxacctCQxpMTzlDSNS3eo2VgubsIxbxzD6oKrMKsZI3xeT62s1iZC2LlUjJnnjdK85+z1sCl8b/ZAAOiVvMBLZDwWlnDqedCRzGJ2Wb8QvhuTv4gs+yZkm57iXmlJ0yFQIteXn/65EnBICDg4AQAA5O6cwr6le/fPrbfqpmYuNVjJemRsmyy65GzEQnfLKRu5jCqAEh9c7qbjEgFAp99WBUhTwza2CnQYXJCKsnFzhzXLROnbo8CaauwRWLd7/8vjM/+L1jfzQAhwUCwt2VNaxLUkpsll9zLmZ7nM0Vai6lkU0oP55JjYLR7M/ecHImwwOAIwgBIQAckOjsK/Mrn3rRwz93rXCS02sVTlzHKahzcjbSRI1DZ55QdatXRCvq46Cq2g4ghwsDj9iqNdr5761DdHTEVlUhR533H27vc/m+u+/5oe9P7ZLzVClaLy6tNlekUjdDAl2Aw2TOisQMM6uAcJicXMmbKkcroebJqK5+6I2YpAHAQcA9hABwEOzZB/Irn1p9xz+raTjZuG5oKZVDcK+dtM+iHfcfypWLzzz9G79XNMHaUMtTX81tUqiWMLcDgKEKlhtGChXKua66qrLx5g+tzXpQAHAkICAEgKmLzr3KXXm88m2/YO21wKfTqLxCOWk0bPuu4i6j6Wolfwv72fMQg/bZeyItZrz25a9e/Oe/G7gZB06KFcm0njUmOBiAmdMhZj2uXosyTudCpnWzkdXlQl68ZJw6y9/8keasxwUAhx8CQgCYrsKZl+eXHz32rt+wXE0lceaq+sIaRUsa7/IqZr7FcK4dv002LBxyoK5zabCSU/Pax//m2r//YFSKfdNJFJ0gdJ2GQ2X0qqEwCmU6bk4JJTGvR7bQKDmhRLj5jkdemPXQAOCQQ0AIAFMUn36oefWJs2/7Wdd8jun2xHAItmFr5dRvmr1njvuO5XpeOKmYcHiSsIv3npwrrCYvfPAjlz/woZCwc7nDTBkAhksyU3XrzUrEzU11UZaXNFQT62o+fuPH1mc9OgA4zBAQAsC0ROe+Mbv22Ilv/aXN1duXTVHdZrZRikrLZRc24zzmiVVYmXYOcLRDSHubFUdRkvg8SMKXfu/9G098Tsq84Q7BPZNwFC1KJnBRloYO40uhYKO628iXT0q9sqKqq4Vr6TKxmhp/1++iPyEATAsCQgCYlvzyx1bf/W+KRt3G1apdKkfctFmykW9KWF4pa2PPEqBEk07uTZdunVEzzX3TGZuQC95mz/zL30uvPr9qilMfAMAULHqgtSic03oiyz6YZsKF+rr4xkZYMWnN2GOXaeO4m/UAAeDQQkAIAFMRH3sxEQX37LWYV7jgw82q+FORWYuzWLKwUVc5NeKu9hfL9b9qCjFhX4lRFVKplZijODSCN8zis+bmV//P35cUE2iACTisAWocjsVZGsSUuVbLQsm4UkJ1o3Hg516SasF828ezWY8RAA4nBIQAMHnRqVdkN790/u2/lMVuKefUeCMF9lQLrqRGfMGxIem6K4Y79MztBk/1VJREeauNdU+wF5gCU2j3Gex56c70UQaeBpWJZED02D5c64gqGjr+SaKtx4qLNG+agsRibGZspjeff2bzTz9QK0RJPTAFMsQ+kJFiUkgDLvzDfAg6+DEjrT+3/sdh5bhK3pA3DZbIsobIO7bKpDbKJCkXm3n69g8hJgSAyUNACACTlz//6WPf8itVqlbSvBZ33SvYjqBmMrFrx42jVJ3ZJaM45FtbZ1RHQY3Ngm86x8xGJHth7TN//THz1FdcRTwL5WqSuNmsrzdry0llv+8GAA4/azxX7PPpC5FPsgjdawBg8hAQAsCExWdeSUQuueFLpVA4c6w+doZhSjVCd9/hnkfpby8xiBBR6gNFhoxlI2QkEVuOYtqoXvrD9xsbAguRSV1eTCKJjUsnVlwH4DA5rEtDx1X1WWhWoqXlWvmmo+i1WDgKAJOGgBAAJsxUzpx4+Fez6FzIT95oXE3jfFY1CadTSKbjvkEVJtN3RImMFTKkSiJ58PVmvWBtSezm45+99NFPUFC1kSG2YjR3OmhtKsD0LErV0EUZ57RVbDDUjNbKoXkyN1YGL4QHANg/BIQAMEnm3IONL/0xa1bk66vR1QueSHqra4bFiYCG5Cp7zpy9J9JIWXJPuTdk2Bon7FibWZpYffb9/1/SrNZ9Q30gEptTwGkYDhYyb4vF5lGjlGtyNbI3I/Ic8td/eG3WgwKAQwUzEQCYJH/5M8V3/yJHzqR2PaOqOd4MA5ZEtoq+jG4iHepHbCs/wID7HXuq0XSdS0NwQpoYS6piIkkiiSM24pjl2auXHnlkyYYQQlBTiJNMm2OPB2AEi5JhQ4C6u8TYaL1YMcezqEihwd6nYmc9KAA4VMzemwAAjMacuEcbN5Ze+t21kBaJl30INjfFWN3gud0EMoWsu+ynFfrxzj8HV5Qh0taT7TnoVujYM9h2OdPtd9O5f2bZ2atREopM5LI8qDrnNQRSZYpY3ZXLz973mq/3leU0C6IkSSCPa3MwBYipDoWaybQYGr7GeeBCeZMi/4WPm5PnNz/14VkPDQAOCQSEADAhckLrzy2963+z+TNijnvJlCs5F9O8ZnlwwDOrgJB6Y0Jt/bMVEO7Ejb1bbsWEtDPN1u7Ntr7hbMhzx8QaQpwkzCyqkVjK2RUD16vmxHG+445ESj7kwjkpTsUwBYgHD4VY1eZLPiklaVO5cCZcbZ68+8kfeyfRMlE669EBwGGAy9IAMBnx8gmy966mXyK77HzTSCHzNcOZ0dKwlwTm1oOIdw8Ph64fUyGVQBpISbbaGHa8iolE2WhHvDeIqLIqt8PC1patpmetnW892Vo7Kqy8szdlVmZVbR2OSIyTSKKgytY4lxEFFc4piPGsxFG0/h/+KnGbbFJPIdbyLm8c4NDA0tD9ETJOGi7UUh+KwT5VPLvirhLdduZb3zrroQHAIYGAEAAmI1t76tw3vcuU78xCmUyRRY3JrWmI1G9956P1hJiWsXbet/HOadaTGmKf5bW0ufnYlxriimwy1AyEW4NA63DzOblaasVQQlHWuNAw66VjD3/yz6IXv2zWQwOAQwIBIQBMjK7ccb0hDW+YxWV58MQqRiZznplqyLfvo4/2/PYnIMwqkZo85Df/6lEhxxocTsMAMFzTclQs2UAUy7o0rMvSNXnGnPvab/5D+Z53zXp0AHAYoFAVAExAfP6h7NJjNVfPmctJWchrzsKJc7FXIzLdQpr9zSEmkh7p2c/uEWl3TRqj6ru/L8zErF59wSQ588bnv3jh6o1s5QTjBkK4NfNWOBTJyf0afHEoMVIPwdSyYhRVo6YPzZesrq7fyL8ULmVy/oCHCACHEiYiADAB0elXrr7xRy2rYREKmmWGOYqSPBgiwzyg80Snnkhr7GTg9ox4+MsGNI4YvFlfJdLeiqPbtUaZqF2etO/Q2rorsl2QdOvuROcdU0IcXK65S5aXive/WJyg+geMYligtTh9PWE3w+LouNFsWKpES3GDojjOQq2ZZQ2rdz5X4W9+3drv/+uDHSYAHEJYqwQAt0rOv6b5pT/ONmN1ETsOaa4+sOFMM0dVmzRbpV8GPIbrKQ8zW/sYydb4+94jW5MFDSHES4Vrf/1o7IIdMVaFI29R+grCXmTIYzAtRIVYlPI6aYO4UC5xgfIyUdALd3/LN3386kEOHQAOJQSEAHCrwqVH4u/4l8VijdgYG0dJISqWPJvce6ag+VFpvD6wz2E7smVmY4wJ7Fk1YpVQvXy5/uWvBcSD0G1RisQsyjjnzbifW52iPG2m2UZ0rNBk2qw2jZNylbK8oFHV50PLOAMAjAgBIQDcqvgVP0A2b2ox42ZGaRqyXDULxphKOV5lt/+l6ftOEs5PdrErSSgccheEuRA36zURXnvi6VxRZRQAhir5QkwSJxo21o6lWpGSckGoslR+Ia+fFEUxCAC4VbiHEABuSXL7W7Kn/vD4ve9wng3nTMTErMGQZ3Iu5CrDewxyu5UfKbf6vnc+RtfxKtaehvKqyizEQiysrLrdsL5D536YZUA4yUzMTLzdi56JWZmIWYmYVLdvKGz9s/0GtaOrhHhyRjmxhSwEtpHa+uVrF97xKiMVl9a9VWc1VmtV8uAoYsZq0iOJtfcvYdy/B5gLHLp/brK/n6TnnMlqiNUYL7rVHFXydRuXfLz+pb/hCydrn/jIBAcOAEcNAkIAuCXJi95SvOd7GsYs26ueijzI0JIu3fc/DdxoHwVmBkVz24s5tfXPPfcyYvWOdjEb7RznTkDYPXxmDhSINAqaixplYinc+yKzfIKNWGvVq3plMSykrRgZjiAsujwkeqtlTXbvq/lmHhfSO5ef/qF3T3bPAHDUYMkoANwSG5XMiTtt1Ag68VtZeudPE1kIOsHVpP3tLnbf3jOJiPVbUakKadq4/uhniIJaCYGiYDypl8DMJuD8fMgtyj14izLOedP9afHEP7crycmCu3HiRnLvb35gUvsEgKMJEw4A2D85/46NR3+1UL9SCNGmVIZtxqIDHyMcYascS2e9ltEjunY1l55nDsb2sXZOs45VRIzTQOSFSFSD3/jcRfGZEmWps2qtiT0pBWVMuA87VA097PauIDqaMPBxMlDuKtUltknpzHt+ajJDBoAjCQEhAOyfsRS9+lc2JS9wIWg2nYMMLt05nWPtR0+MOmBsHT02mFlIlKWVKBAhd+Va+twlUUciTEQciIMQBZyfARbBtDOow5pUhGbDlUt27aZ51auv/vrPT+pwAHAEYcIBAPuXP/PHpROiy6fyul+SKQWENNl7bw4kmOzKCWw3sRejwauSsGdmFVYKEZnMX3/0cePzuBArUZ7n7L1h8nMU88ItWZRMIJaG7td4fQUnpZHkxFmcnLSa3vvP/2jahwOAQwwBIQDs14WXEdFS5KT2bLCZUnHcHQysQMPMzKbv7NRbnW+ukoRD9J5grXIgVTZKYlVExbGwMdc//ZirbXqmQMrMlphU1eD8fEgg0DqqxisQKzr4MYwmgTfXrI/K1aRoSi/5gZ+ZzKgB4OhB+xoA2KfS+Qfqr/3u66F51p26xjmZWuzjSe2cee976Jh5z1n1KNtMD7NR9e1/CnGgoEYCaaSG1Tuh2NjGc1eyatUtNQucFKzlkJEL3oolv8vOAfYHsejhEKflkHCI8qx5/fwdb/yj3/mWWY8IABYV2k4AwP6sFu78hrPJqbSauGKWiEa5D3xLp5RWN0JlIg0DS++rkFJXN4ZBNWa6ehK2WkC0t9hueDhg56ykW60E23vo24yJeOfV2tFvcKuLIjMzKwdiYlVqtaNgJVYlVWajEkitMlHwotaHwD4OPsTF4/e91NtIPOdBXWwjZULP+sUSlFr9KHseM6IDuxkO+r2GUejQD3TM/bTPTx1PirbuHx6wtjgM+p1SIqaGj6J1v3aysZStyKkH3njpA787wfcLAEcHliQBwH4s3fmNm3/9f+dajEqWxTdcTsOrjE7QRFaKtor09exWt7vV73m48ccw+EzbvrdQha899nn2jrLcex9FUayCNA7AodRzE+nu60J3Yb0UNvxyVLpSKRWbDVcpnvnhn57gOAHg6ECGEAD2w564+/QrvneDbeCmpSSXqtHTxI2J7HxYvY12zDZqQY7t7QY2lNe+5/siPR30ZGd+svM57dhOqfdddG2gTEJEW2lFNUzZC9Vjr76/uLISVKM44sw55oGZTJhfc/bj0iEDmv+7b2dr+LWYSX5yov03Rg8+7tBfK1ndLDxv8hAZDg3XuP2uL//I2yc4QgA4OhAQAsA+RPnNi/x174wLqyHPC6audILIE7mJ7F07lo92PtpkxJnZkICwHcj1x4R9Axm0146vOtas7sRvTELaG84xd426FQoqK6kSU4GiZmRPvvI+CeKFNA8ajxz3wsFincTCwQOwKOOcOzKRpaHD9x6Yxig7O+wb6xIqeRTE+7xg4yhu+uj0+ZsfQblRABgblowCwNiWT99DVNZ4uV67Xiom4iqU13RC6cGFMGRlac8ZdcAJtj23C7z1KmXx3ucx1z75+TSrM6sPpJGhBSijekShaiiMYtyqoYPbzw//fbsQJPj11fiUC5uJcszJl9/34y/60Z84wLcIAIcEAkIAGJtZPvPyt/y33l0tF0v1DaemWbInvG4e5Bhu7WZC2e5sIYGEyZAK72PFhPaPoaf/2E4/+vZTHV8LkzBzFEWbrh5vbFSffkZFWYkj69xk0q2wb+gfeLip8sDHxA7AYfCjT/9dzd0G9znMm7UQH3u+dqkQxdeCpIX1N33uy4U7Xzqx8QPAkYGAEADGdvOLf7FROZZklUazGlfY6arz1605dsDD2DsmVNl6dE+kel4Ytv+1ZwmZARtsTx+HD6b3NKtETGZne2WxRkjF6NpHH3NCUSD2QVBidNYQaMFUhe5QcNzfN7dkXJGNnGMqnCi4prq8Gp1683cfzOAB4DBBQAgA44nPPUREN3wl0cSaxFFoBhdCplQ6+MHsL0/YnwMIvBUW7lJldOi3hsSErX/uMsJ2INpM0xUb10K6+amLjr0oUeYSG436fgBgoXTFgX33SI9o05cKG75sN5KMa6mL82PWHde88PqPHOhiDQA4BNCYHgDGE597qPKqHyTSLMpEmXJiyp0pU745/iWmIVVbWjfX7ZWKaW/Qjqx67s8J4ohk50mV1obBdzV8b++HlZR3etkHktYAhbnzUn1r6qaqxF2zOG31PNzO7AVqFZrR7UtvujMJ5HKf2CAAACAASURBVEAUmEml1aCw4E0wlFF9Qx9/il5+fyPzFSp6ynb/BOBIQXJyfya1CrS9m85lw1v9AwcZMcXf3puOeQJNQqqW02Aoyg2JUBaISDGvA4CxIUMIAONYWuLiSuvLnThq/7fz3VKj5xGO232K25638baerXcmfMx9Lx48hJ4L+8y8e9fBzhsId0YpFPLMszrWy49+LkRcjGzT5XsfHyYBS0NhFJPqHzjB8XRqXxdb/9RfHfxgAGChISAEgDEcu/21m5/57f7p8sD46sAMO3T/jE05dD6x55hHOkUOyj+M9mls7d4wRSRelVlvPPZknjYM8wRrWwDApOxZLHRP07sAEZiI+bM//s6lt6MhIQCMAUsLAGBUx+k4ueTu1//EzWFb6JAAasiSqgnaCsBGmVRxYNpZktpeINq/w9bzQq3/aN+3lFtdBIlIeVj1yc79MxtV3/19YSbyucSJz12iRBu1zaee1ntfaiWhgEKjB2HeCociOblfwy7gTObzlNYi0AlcqZnitfhAet/jn/n8Aw9O7xAAcPggQwgAo2pQg5766EZ+ZlgEdfBD2qUGzLiv3f3l7W/1fzH6/omopy/F1jpSF5whISNe2YT1j32ajJeAqGDCsDT0cJvVz3dY/8BZWc3vfdlv/OHsjg8AiwcBIQCMyp6++wbdyOLmwFBnt4lXu/1Dz2PaRjtEe71rGD+s7aw1umdZ0WEDMyIN5xObMHNgV//8xajeRHpw4halryDsZXBfvsntf9QQb3/9Ayc1ymHLVgsbVCgcf9F7fnJSBwKAQ2/8RswAcFQlL37Lsa/7VindoSGdzB73OxmX7qBrpxhMT6MIIqauxZyBSXlnItXXVUK1b+e9Q+56SddiNCZulyDtGsPOS7T9ZOeoYpIqaZGMp8AUQiNbuesOOndacM1uX4Zdm5i3uzKRnNyfaX9sQrp7qatApCOsQ532OFuj6r/ZOKe4fLd97G9/33QPDwCHCGYbADCy5FhWeFnuNya2w31lDvdcJtr7TO8Ou67p97+855L/rkFr31B1tyqpXaV3tkfFzMpCRMFpbqhInIbs+U9/wVtECwDzZSL9Ayerr24WSXx97caxGQ0HABYSMoQAMJLKS95Wffz/iV7ynTY0iKd8LYm3yr309YfYuiaurTIu288KMSuR6vAb/LbyhNs5w/ZX1Hkg6viGtNd/MrdSAltfduR1Wi0He3KSqkoiSkzMTEIsxFv5BKadV2rHTNKLL6ptikbETRNW1dQv3Tz9tm8IphQH710qiWGxWeajJAo+52l//guO9RaamcD84ND9c5NJ/yRD66LUdmSnoiqkw47Qe6lo53x0S+1z9m1gRMpEwZrcVSp3v5iNb3z5yWkPAwAOAcwqAGAkunz72W9/n11qJs05vbftwKra7H6gERtOdG6mSl7IsrSykU4oqLv51NPBeTVW4iTLnPc+MibLMmNwIQ+OhgO4zbjngIfiskGlEU5w/eS3vePGf/oPsx4LACwGBIQAMBIbVTbNiZvXny9UVmc9loOetXE3otAK59qX59vRXfvOonGj0yAszOKVlXKhEPLrj3w6YXKswRhDhoNaK6KkgoBwy6JUDV2Ucc6b7k+LD+ZzU567qqHjesFKXlCtLd/3a38067EAwGJAQAgAeyu9+C3rH/vfV1zteGnl2lwkCGd5JX87JtyamPbEhKO9nLqbT5hAKhqEmZlzVuJQ//wXTaORe5f6ENsCkVDQyFjv/bA9HzWoGnrYTaoy56RCvGlXN52MFVrOg5dSkELx/A//d7MeDgAsAFxpBoC9FV70xuUHv69ZzEp6PtebMu14bKRJ/dAIbHBsNmifw99Gz9qxoU3nt47FXdVEWba/6Hg5MzP11X8gJlZDJiNvvQpREBM0GCau1kt3312+7UzmOfJKokGdIcmnfgfn4kDsdygMT/pN5jwzrGpo69EuGaq0R+3QecvpypB7ZaOsaXjFp1fthXNPvue7Zj1MAFgAmFcAwN5svMTR6rpbzZpXyzL9DNWo1Ud7mkYM/mICw1HuOVv29avYyRPuetwBXelbb02YmdRbVmbjDbExFC594tGicBTbPM/JiIr6/CjeQ7gomUAsDd2vecu8zdt4xpMX/Hqxepxuc1S88+//8qyHAwALYGFOcAAwK3LuoZuP/LOi9xVqko1cmN3dNAPCwgOqH6mqnSfMnll+Z0w4UHeU2HviDSFEJKKUM2swCUc5hWCldvFi8/nnrbIV4zWINUx0BJsTItA6qsYr1yk6+DEW5YX/fXORxJvp1XJacelXfuG9d/2dn531iABg3h25iQUAjCtcfiz+9l/eLPpC3TVtITXJrEc0GxOcETJ3ZflCCEakdfdgIIk19oG8YdmoXn322SxvJkmS+4w4iIhzC1Te4nBa9IABhjkcVUaTmrHJ8krKgd1b/zqU7nr5rEcEAPPOznoAADDnioX7v7PsqdrIS4lN3KYTqzw4JpneKr6tFBx1rVYN27M3UaaOLJwnJWZloqBb+YGOAbOSl9arSHlnzNK1d1He2lA72htuJyu2q4x2hAHbI1RVbXUyY2ZiUvXbr2z1Stx6iWFDHFovoIhdHkiigifhULN5rIYCURLSv/gEvfJ+UhIf+5SL3qVJSu6QrhoN8xVTDQ0P5muYC0PHjrcGf9Dt3XSecES7/sw7jX4FpbXDefvxjpvkJCERuq6Nc7WkUdLCyszrQgPAvEOGEAB2c/yub2l+9oPBuHJhxZo8zXX+72Ez/WvMDryh2S65hp77DAfec8jMyuSy/OrXLkXrtY2sFhkbGZMbEsF5G460nptI97EutOWwZnozdq7xfCHJv1aOl/0Ln/y7D6+87d2zHhQAzDVMLABgN7mEe97yE2qzWr2qLioucZ4N3bjVl6//MW1h0CFYd6sr0z+DDLz/OjR7FZIZuuXOP7cLk7bfC7Nh5vraWvbUs7lxkRFW8mIUXScOymENGKbtYD63/d0ieBQU49W8aG2tshRKGy5/6FNX1//0P856UAAw1+b9Sj8AzFQhu/lk+Lp3kpQjiSO5mboVMX7c+uuTCwmHHle56yjt7YTa6bit5aE9RSp2GRvzsO9qxzZdq1W7d8u0FWRuH3d7Y2aWdscKZlVPpEytNoTEpEpKRBGxiAl5WH3dQ5ITefURUwhDx7UgeEi5/LmzKOOcOzKkxcOk9h6Yxig7O/xsNd1xTsq4A9rg6nJjJdirXtlEy1HuolPnbn7kT6YyOAA4FJAhBIChls/eR3TMFU426i6OU++X2DSCH/u8cfCZw8GJuHaR0o5WFtpdVn5AaDdm2nBQ54k9PrGeIqWBpRUchkBG9foTT5r1DSWvIkoyYEHsokHmDUYxbtXQYe3nF+X3bSJVUonoGJUbVK0s3ZbresHFxWz5y//oJ2/7b9ChHgCGQkAIAEPJ0qn73/mTqb8cS9nngeJMs5KxnoeY9Xh3bM+iBl7v7z3v7d6Nek/DbgIk2grymHfaGA5bMsrM7eIX7SeNRLl30mxWH79omYy1Pndz9TnvDv0DDzdVHviY2AE4DH70CXtUjlnsvoLjMg0xxdWb6+sFc+6q99Wk+rpPPl+8+6WzHhcAzK9De0IEgFtWWLv4wWvGFN0S6ZoxJtflJK5TmLul5jtVBzuCpY4r64NXdfbuZBK97Lf3MPDUKtTXu6L1z511p7JV0TQwkTIZUUuRpRuPfCaE4Fhb+Y5bHOSBQaAFUxW6Q8FF+X2bVCZwmJB4H12xGjNVTyzVmsJeXbxycmIHAIBDBwEhAAwWnbufaPV64JJGxcRpsE2Xezd3s6s2lcHJt9a/Op8Z/T6h0UPE3ZeJ7r6f0Jf0aG2fe2cim/ts7YtfyfJm6l3BRiOOB+AQ64oDD6p41aK4HgepLiVSSPKonrlKXi6m9nPv+a7b//b/MOuhAcCcQh9CABjMVE6Xv/37iaipdaYiaV4SCmSZ/bBr7sPCnmEX6YfN4YatKty6166zqCiH9vaDkgEamFRVOiqO7hLRhu0GgtsvbnUm5O2j6NZWA99LR0NCVa9M2hrYVq/DoKztZoetVF+rFSJxEBXdHtd2otKoaeUNVGMjaWPzk4/d/k1veiFLS5UyZc3hbwKGmsNk0UKY1CrQKfUPbO9N5/Uad2f2j6ff57CSBjKUUYMsGU1UUkeF139k84U///0pHxkAFtWcnj0BYMaiqHnxjwZ+B7PqWzEkZh54R5Mok89yZfJMzz/2VCa+EsXpLn0/ZmRRlurBbE2qf+Bi6XmPM3zH0TGsGgWAwRAQAsAA5XP3Urk8qb2NW4RmVv0MR7Nz2hznnsNRTrZ92xgRlSAiIptfeLq6uRYJq46YOAGYR7d+y9wCXYCYo4iX+bM//s7lt7191uMAgHmEJaMA0Os4HfelC3d9/btvZkSTKLUyKVurL2dPeiqC9kxGmVvLS7cLxnDXBsxMnetLd16inXtu7dbEidNMiOJm8/pnv1B83UpCkc5Zc/r5+KHsmM/YYBEMu2wxmc9TWr/bEzidLMa17DmKBolI9f7HHv/sQw/MehwAMI8W46wKAAepETnzhU9cqy/RPEWDLf15wl1mXd1NHbq+GFP/kk4ZI1W4a3JzWLKUmcmH3DKriHMU0Y1HPu3Yx2FmP5EFyszAPszq5zusf+CimHbV0ElZrt993z/FbYQAMAACQgDoxctnb5SaNilPOxrcXz/DzvBqlFnXxN6FDrjNb8hjq6gp806Lju6vdxmStDcwLJ4o5oiIPOfZF5+hjU2eXXpwUfoKwl6m3Zdv1BDvCPYPnN31HIo26eRD3/rmT1ye2QgAYF4t9okVAKahfv2ps9/43kgndg/hlMzg/DUgJtwyKMbb7wC3jyIigUi8esPCqlnz5mNPuum/7UXJBC7KOOfNtD+3PcO4EXOAh+/nezDR4LDPLS8UbaFazYoHMQgAWCgICAFggKz8IqYbsx7FghleQXRPfduokIrXIGJd5nLLCQtFfPlvHs9lgRbTAXQ5Uv0De97ZDHODLVH8wpXqCfUoHgEAvRAQAkCX+MwDRBSMZn5m54fdl5KyKBklo16CF+ocZuCdh6py0P6beQbfsEfERIGkFYlt5eiEtaMejAqrMJPpf/kQQTloq8eaMilvLyIVZSLZfkcqnnzgnZsJW69SDs5ERUemEAVr14KuNkzz4tPmxnNBDHtnybNVTyo2zoOf4F1XWBoKowlEQToeRoMZXgW35xvt3ytVHviY9ujHNe69gj3fmfm9hQ0plNVsPvXo+f/6vTMbBADMpdFnNgBwJCT3vmv5ge/LSrZUXfNRMuvh9Ogt5rn9FRH3Xo/XccoZtrZUJiZSVWbubHfdGUNy3zAGjrPvJT1f6daouXW3Yfc3t5tXt44sGoIGJUrYNNQXL5wypy+UiqV62mRjQlDDEjRE1kxsMR1iv0NuUrGW9u6r9Wc4ZPe7lH+a0HimazFGOdxKFtKCj8+UnvzR7531WABgviBDCABdbLycls43NjdKyydmPZa9daX7hLvCMObtzN/OQ5VUt1KInXT4bHXilXWYeYRzrzCzaUWlwkbJCjmrrO7aJx4rGnGsaq2oWBbvc8uSh7HDuEW5R2tRxjlvZvK5KaNq6AEZ9+f7NRMqpCY79bJf/Y8HOU4AmH8ICAFgR/HFb9v42K8s+caxor1Sn78L4ir9DybTsdiyK37rXEHa+Wh/d8AR+joK7nuwfdFpz7c6Tr8qg1aiSqs5oRILsQmSURCh+he/amr1WqMexQVWY9iykhXjwtjVR7E09LCbVJXOSYV4h7Bq6AI5Y47VQwjSOP7K17/5oy/MejgAMEdwIgaAHWb5/PGH//G63LD58ThKZz2cfdoliutpa3GQZR72iAmJOhtObG+jqupJ2VhWchriyETV5pXPPB5TCEE5qAs5iVoZGFLCkTDtTOCwMK71GD1MnLdM76JkAicl27yushJTPTGhxpj+AcAOnBEAYIeNyhwV6nzC5fWKyWc9nF6j5OtapSi2783be/vOmHDic9PeAQyok7GTIRm4lNQSe5acmQKbQMTGRPa5j/3Nahx774TYaSAOweUiw1tiLEgmcN4ChsUxb5m3eRvPYpvU30VY5dysFbNzz5to89EPT2OoALCgcIIGgC3xvW9fe+TXSmlzlRpqTC1rznpEA4yS/euICZWZWo/t+wQH3C04LE848bsHibpiwr3bVKiPSYjIiZCahGKnITfGPfPM+uVLlkSY2YhnCt7z8Ev+CLRgFBPJmLUK8+L3bR4FNXW3uZQtqf/8j37HPf/Vz8x6QAAwLxAQAsAWUz699J2/2CyXC1VN4xCKc1pUpj+O0r7v9vc36+ldMUu6xzDa31VVIVamnJmZIxbvNOVQytwXP/tZwxpCIFFuzdl1Yc7nCBgOq/lrFbFIpv13YVwihUrUCJQ23/EXvnDXyye1ZwBYdAszgQCAKTsp8THJ3GZGufWxJ0mzWQ9pqN7OhCqkooH75k/dJUaZlVlFSLhVknSLaJAQJLSTIaqqgYMnCkrd4WVgUjaBJAw6f26PStq91JgNiVGWQNzeie70Jmx1lmBl8qqBSEXbby2IaRi1yhXnOeKG0YglJtssePrYYz7Uo8h6J44KcVRw0qSggx8z0u483vOA/ZlUv76BPwhRIg4DH8NKygQO3XcMCqvw/F2YOGr3Cg7TEKnSRsm5IJVqFI699d2zHhEAzIu5O3EDwEys3PPq2sf+Lya7VCyRNZqmZKNZD+pWjTpVVhk3czipTOPI+5HWutatd5T79eev0wtrqU8tSUySpmmESAtG03MT6b6jo/YlGGR6F8KyC8tp4fnSxrF8qWFuePav//iiVg4DgMlCQAgARESO/Yve8SNsqVl7wYViuaJZToesOMRuZVRUmHlAf8KORMo+Aq6x4satxOB2gmVgjRkmUSYTONSaa48/6YyPgsaevAY7f32zsTR0nk06Ubaop4WDN6u/i/VyCJpHZvWS2VxqGLYJ+bF71QDAoYQzOAAQUbF28U9vJmXlcmRLkazXG0VjF6iV9GDM3B/F8dZ/+r6hW6tItXM1afdth517G/E+wD2fHGTrzCyttvS8FcmqMBExSWApFpIrn3gssGMKLs05icjP3c9rUaqbzptJLQ0dRigIDVoduo89LfhFoiOlsN5Yik4En590mlcsZ1lGyBACABFO4gBARJXzLyM6oeZsNa2biK1Lcpuz2+UVC5M5HFhIZvuZoTPsnjxh5046p+VjteveNRrs//S6nmFmZtMaWGBSEja08cyzjatXRch5r8Zm4zemh8Nt3Hvnhv0+L0qmF/cK7o4LK5v8XKW2knGch/y6vWmCvPYvcd4AgLmcwAHAAZOlky/9jr+bZ9dik+QZcdTwvhyZhZ8otKeCHeVndp5hHpQn3Nbfi2JQTLhbYLxnkrCzWWLPAtHuPorSfi/tojWNPIuDv/npzxvLJrKqOsMCqosSMMyfKV9YGVIkpn/D3RvKL9AFoLkyb38XlmndrITiTcNSaZbvoOMaKkILf54HgFuHEzoA0MaTf3pTrNUk0poxecanSlGVOBl/T/M4cdxrqd3eMeHAewtJxrs/kEZaMrrbZ6Xb3zVsiENkaePRJ1yzQUbEBTGjDwfmwswDhp6c9vjj4cGrr6cMmcD9aXKUNNKNgrkZf61hN27kseVsY8URrt0AHHkICAGOuujcQ0S0mSZWXNlGEvymqs2yQzZH6E8S0hg39U3guBPZ1VaniqBRFOV5mn31cmOjSj5w7nFvHoyuKw5EO5CjoZytRyVz9rop81lpnigyq7/xuQeLtz2DOwkBjjpcUgY46uLzr6h8049ZESLOiQJTRJkXo+R5Ytf+pxWs9N0iyETcjvla39jKcfS0J+zKa7QTHb3jbJVBaX03KLFyd0CpSq1nlTofzMTc/RQRM2kgptZ3t55lIiYh3j5yaA+MuXM83MpKtubtEasj44SLrlmpVKKXviSSQpMzM6kWcBwGVoNBImF/VLv6Ye47sdbeTecrRYk5DOz4GKjn97Ljt7FDx2hkIuOcONGdoczhZexF+cPISYzn1CqFoCYPlJPEtz+Tbnzqwxt/8LuzHh0AzNIcnloB4AAtUfOpP5n1IKZrqj0D97dz1d1qRobtbQZ9U4jIOSciHNQzX3viKRVlt1sJoPHHJ4MfMFOT6h+4WHre4xF4xwftaz/4Dv7Z/37WowCAWcL/4AGOtLh8F50/gOPM+N7CEcO2PTebYExI2zc3Dgz8tpfzyaCdi7IJIVhj1MrmxWfrL1xVE2QOMjlwAG79lrmZ37s4urmKeBflcxt3nKI3Vs685CBHCADzBgEhwJGWXXn67AP/y7DvDliFdtjvNRrYpmK4rciW2YwS6Ia+CLC1fi/QgIRhOyak3i/I2qjp8thYISPB3/jkZ1ziozCx8/miTHznz3QvfEynf+C8FH/qN1fR4CH2wF83S5Wzsx4FAMzS3P0PAAAOyqqhtxJRWthlKjBWp719OLiJ6Vh5vF02Hn0/A2PLwFv95ft32B8Tdrad6HpSRVkpqGaBCvHmI592mkUO5/MZm1UgPe2/0mlD1dD9mdTvW1lOX/ov30Xf8+3TGCQALARMIACOrKanT1ZMqOXXx33lgmYOx8z+jbefYXse+LwOaVmhvGvAuX0Xn1cqxIkLXlQyq/Lc1eZzz7HB+fzATPtCxqgh3hHsH9jfIBRuUaFqKDxD//b9sx4IAMwMqowCHFkJ0ebxh4+ZQkHDuL2JBxcvnFxV0mFVGUe7+D2oA0N7ZMxb3959rINvF+zYeVeL+d5nugaw0/GiI94T4u46otsvZG5/jLKzw+0qo0xEFFQiQy5kotaZEGc5LS2VX3af6nhpIawC3Z9pf2xCg8uStrXLh+5uUX68o581Qm994Kk4an8XaWnz5CU1b3jT5h/8m1mPBQBmY7GvFALA/snriI6v23UK1VkPZU7tI504ykta22xNbbu33/vlKkQUxGiaknCwEivn4tY/e7FJ40b1uziEmaXD4Uj1D+x5Z8gNToun0vrpuLBqfvanZz0UAJgNZAgBjir9MpXqJ27/nJ9gp7FBzetazfsmdIDBV+671nB21Njo7OLX1b1NuxKGex91u/mbMvF28oaJtX2Eju5wg/J+7cO22gwaJmESbe2rawEqc2twSswcWqmKrcRi+9hifNMmCWUhCHmioo/X67UXPXCHVE6pCZxnSWwzS6okufcxy9hT6VHa1x1lk/p9Dq0WH+1l16Iqnb+dfVv3DGIrbz6hPofT1tlOcB+jnNN3NX3TzlhGPrhi/eI7XuLe/PapHggA5hau+AIcUfFdP7b69vdVNbMLVH1iFOO3yxsrE9iOrcaao3WsGt3zWLuNv5UOyq1Jg2MxxhhVZWbr/ZXHv8CimXdkbJ754DQSY609auvfFtohTvfB3GItqS4/+Jf1WQ8EAGYGGUKAo8i8/EF38f8t3vMd+XLNUKYaT/VwB35vIXfeRsh9X+znsIP3o31bDXi+g3LXWXdA7nTrUKo93+b2bpnySELuYhESyYIrkEjQWrV62xtenxsRMaLsSI0yq3oKjDhjX4bH0pPMePf/BoSx87Pz9fO9xUzggcG1kpa0mBWyAlt78rUPl8p33Pzch2Y9IgA4aMgQAhxF/onPlP7BLxqbxI3Velqa9uGmX5W071Sm0koVdh5k30dsLX0dY/vRKo52BId9QcFWY8OdMWvHa5XZqqHAIQRmzoUiMfnlaxuXLkVGsqBiIsvivffeM+PC375N6l7KSTWGwL2dh9ms2pbEaSnz1xK7eerUG+74ob8/7cMBwBzC/0gAjqjypzZ5wzWdXSqX5qeM/i0QZtMXcfUaFhPub9Xo2AYvZ23feyg9I2l93T9m6zVhI0TOqxHrhFLxxutzj346dt5rUCX1gUVFRMZfQ3vUTHsiPuyvq/UY/a9iVgHDMOgfeDh4k1YKF5oNXz+5RpzNejgAMAOYKAAcPS/6JiLS/JSUl8VsSmPsPoSTMoXMoewZ2k0kMxl4j7CwP67rHtiwc29/qrAjMdjuXuidFQrCKhyLUaZmcGzM2ueekHo1MtZpUFUxRqwJ7pDdJDoN85Z5m7fxLLZ5C6Tnjbf5NUqFG0na8EXz2g/hkwE4cvA/GIAjJy6dpR/8g82Kr8vVhG5s2nOzG8tUMoejp/sm0qd+/N1Kx38HvLD/5X1BbHCkeSxkRHKKyDhiEuYrz29+7TlhJSIWdepUFRnCAzORjJkyAphDbt5+vsUsjvyatad15VymZWc3ZzUSAJgVTBQAjpok+/y/P3vp2mqtGqciepsJzVkPabJGPa2N3QNwCgYcdNcMZitJyEZy8U5Ihcn5SIyIEFFcb1z56jMubaoGMSbP8xBCZOzUhg8Thuo/t2LeAq1FYfNClJTIh1r9y2nxcqxYNQpw5KDYAMDRwsfuoqYvvfShhFbrxSTT60UtBx7W03zEqp4TH+Ut9jNkZmGW7SKOfQ8hYqbAtN3ATUWJW5t3hWjdTQL7CBGzthd67nw8vDOGjuNu72mnbOT2G1Nilp1ipkxbS2e1PQZtr1FlZjKsYgKbwGrZqbfMnoKLA39t7fRbvzHm2KtwnMRKQR3CjJZJ9etr76ZrEbAScRj4ezusaqhy6O45KEw8uZK8E7MoVUPnzaLEolUjicsDFzIKJ3164+KT5vTt1Uf/ctbjAoCDg4AQ4Ihp3ogf/qnmyjl2uXOSkPFcIx43iTSbic74c+Uh42zVDO2Mkwa1qRhhQDrwJcP3sNt4enfCTNq5erYrrGtHobwdXCgF8s6TlO+9J15dCSzO+5g50IJMSw/CZKKYnohI2lHdkFq0Q5uQ9H5jToOsOR0WTEghzV1FqjdvHlsqNPUsnTv/1HvQoR7gaMGSUYAjxRBRwqfCxo0NW1+NEqJKZnFhqMcBTYDHWqQ6sHsEt/KTrTsPyUgQ59zNTz9BEXtVo0REQTCfn4pJF9XE/45HhaWh+6M6+OFLmTT50TCzBgAAIABJREFUZGW1UaukjbWlvHH/P/2jWQ8WAA4U/g8EcITIuRcTlaPy5mnRs95ep3otbyR2ZdbjGtWkqpL2zxz7UjvTCqLaQWD/F9QXIvZGjN3lYVpLSJm5tXSViGKOiHTzsxcpS5W8FaPKfkbp3BlS5YGPSe1fKAgF4r7HPvaECqJwUIasxKdMy3nuKw1KzRW/WvJOKq963Ss+m856vABwcFBsAOAICZefKvzwr5hLufriddMsx8aFVGv18c8E485fJ9X5YNh+9jOfVt693fz0b5XcmzCT6tYdnsysrZiQXfeKRd8KC0U4hDy/cq36zFdLd76EgyqzqsfdAfszNPs3JLQc9ts5PHk1X8lbtBDcn/lLTg77vRo8zkLQtcjcMP6Uvf1GWm2G9Xz5dLGWT298ADBvcFUS4GjRa0ktLtzkcJKjjdpabE3RDKsoszD2kTkcIUlIM5mvD1pHOrRBRTtJqCRE5EVIfeSz5z/9REwUgkpkzZxFHRM15X59/TnAIZnAvZqloK/gfmBp6P4MywQOkxc2lkKxQMuXs2dWnaH45PHn65zhcwY4QvA/JIAj4+SdRBTTRqmWLcVaj6iYh6YXP+jmtCNKhXq79s2+nuL2otD2193VcJiJ/n/23jRYkuy67zvn3JtZ21v6dfd0T/cMBoN9H2AADE2QEAYESVMggSEJkCHTNJcgbOmLEBS4hEJLmGbQshwKc7GCIQdtM0KyI2TZpG1RsgQuQZBYiIXENvsCzMJZe3v7qy3z3nv8IavqZVVl1quql/Uys+r8IoF5nZV582RWVtX959kIERnBIHukQMH+I0+6ZouIjLM6b/sXR+6CYaRv5uz25FOwM5N+iStI7vfblMxqJ+5W1pB36KUGr7W9wLNh0FEqgPv/OKvIDkEQio4IQkFYGW49Rx/7NT8As74eONNp+7peDTwyoXwPnBHj3r+0TvQnDsJjAyKowLHWFHDYuXazub+PWrU6XXCFm7AuAUM6cN5cVkEoArxRbQaHrKubdL7pQi90ZsORbVglaYSCsCpIDqEgrBAb4brVAEELUXmqa52qBl3nncGR0zTngnMLCQGAmePhUjjoHEg8eIkYmLnvK8X4Lsyc6sOJ3InMDh3EUrAibRCNgIiDZ/Pc608IzHbogT0TMDsAQEcc7RIZ0nvYj+AGwzIzOAawAMAMFqLGiggAawwtqljPXjT21le++LqLd3rVhuNmZpc5J7KqBzMyzOAtppQLNOVlO75VZn7GekZaPe79K0Jq7AgFdLKVg4w+19S17Ol6AId4UHd+oAENBJVDsjJFFIRVQTwDgrAS+Bffk7cJuTHif0ubfaa56U503yHiWKDpCSNMs2YOus5oJDC2q/DWE88aNsoEpnDz//yZnFK1ZIzEgq7MeQunJdT2ni+287ZCEISzQB7/CMJqsHnxwlv/ZwutvO0oFpG3DvrVWSZsNtmJEXkdRzipium0RIITMZ4FRDCIHe2vRASnlbbGZwo9Onr+WvP6y2t33t1GefDXI/52DMmkGcV4+s1QuLDRQmUGlsUTWBY7F01He1qLIBSElUAmCoKwEgRP/1Fz63reVuQGIg6n2x2TGI2Y6ME7wYmX5CScEOo42Uk4Za3RkS21XzXGVJRmpArAta9+k5QpVQ7hYqtxRv0DE7oIFszOrCiUGhTmBlOWRVOt7nb+8iuLP44gCPlTuB8wQRAyZ23zHQCAdClvQ8ZJm1gvZMKdqOgQEQinLAoyQRP2AkfHZCEft49P2OWEAYf/xlg92MQdGYiZicGGTjUqh197yARNz5Xmez6vKo4uZSkLUjV0PkpTNdQlL4tmY//KY3/3w+fu/9GFH0kQhLwpzURBEIS5Odp/+N3v/zR2mnkbkj8TEgVHXpouqW/oSX1vkBRNOI1JYwcdV4wUNZlIHIEtVCp+Fxw6ZADc3jl6/kXCAqYGLNrDlpXEK4cncCYmR0cLOZKXJzCNrune+5mjvc/+v/mZIAjCGSH9xwRh6alsvO0n2ldBe6Hjs6goukjmfHg/Fp158jhp87AkoYjx/yCiQ2YEjG+MMFyrNMUA5DHTcFxR4pi2ifZiUD7aACySJmuUcoD++rvuOQtvwiws2gdDwNNMrB0AT7yliucrSmZ6zRCpwUVrjAI62crB4I4cWXKi4+/qzf21t37v9qf/TW5GCIJwJpT7SacgCCdxuXrHew8e/XfXqaWDK3kbkxuT3X2DedeUpT4naMIJm52ijugMO9pO4DShIj/kbgW3H3yiy3be4y4zxZLIi2HkvhHfoDATpC7A9h3n3/1d3/G5l/O2RRCExVLAUCJBEDIk7Lz07Ss/+t+0A9WqtMjkbc5pmbOfoQMGjDcGHBoHY2VF4j692LP5kcwiBAbmfts5x4gYpWwxM/at5PFn+9T3JbIaHjBqKsjAGO2MjgEAMXK2DLoSRua5vv3HM/zoLwUh1GpsuwadJlU7gv16p/LNv3RvfW+3hpsWIeTdKlUtNQLXbDB1y+7JcTB8T/Q8pSnKJ+0uyarP4aKZNS1wZPOVzSossscS4fh+TfjGyBVq8kbF7rslCC0RBOEExEMoCMuNA2i3DSBpdEHexiwDA8U48sdAnM0xp0uvOIqDNMLYNgnf2/1XyTnnk1KoLIFFQGteeeJp5XsqdIZdF13VIjjbJQtmCZ1kJVF2wkozVMHGQWGL2dSr4bZtWm40vym1RgVhyRFBKAjLTG3rNgDHvlZ6jbsKU8jbzBIQV2WIqRLulBczpcd92phj1WsInQXNigAckdWgAW489qTttiqOLZIBrAAhO+P1nJALJZcqjoxSNfSMKEuVzsKCxX6A0QQfq/U61h7/+Y/c+Xd+MW9zBEFYICIIBWGJqbR3v/Wm7/8Uh7rb3q7UpSv9qRgWe4wIBEMN6TNQg72xR7+ZEQmSnJMjWzKQUgqZnGEgtAgVRHtjd++ZZzxfGXbIwGABnQJkOoPJaFZVOqVqqHAyRROoaVVDkTFa8jJsSg7h1man1uRXvvPrr6BZA7g7b4sEQVgU8kMoCMuLQoDNm9W7KwR1XwVh6gS6/J7Ds57oj2izkajR2Rm3trfm5Hchrgkdo9KMANYppQwyAFQYr339m8wWESuOOmwZQFt22RWbXPREfHJvyullYtEEQ1k8gcJ85NU/cGaQE5cGrWM1qNla5XDjhd/9V1GqsyAIS4kIQkFYWvwrb4Fa0FRt090hqFl3W94WlZdJ/cDims0hnMLzRuMDDtuQfFAE1VvjjEPnCBFRIQGAcVYp1Xny252dHY+UJuWAmVg54CyLThbN81Y0e8pN0YR02Ym888V/3nahvda0znim3eoCBBfe//15WyQIwqKQPoSCsLTQne88/56PV/E8AQYOyHc449Pp8nsOhwK18Pjv4bnsFG0Jo+lvvATp6JFirkLC5EsXNyvNYIx1ihu50sgIwIiISPH+hIgYNd7TbAMEUKSZ0DIjMyIzY6fjverq+p13OQZgpzQCK8U03vRwXrK5JYhTGnNPtHPkNR57ewtLiT5IhaI0WjSt2+jgGymzD+B0YNoHLJlAG1KdtttSF+1dD/wdj7ybn/+/ztBcQRDODnliKghLS/jYH92qvnot2AFdMb3YOiFLRrTxaaRySpWasa9oxgmVNDWp0IUhARFxaJRSoFVI7IXBzjPPG2dbbJRlAOigU2YJ9Ujh07IKjXgCz5qEClIFgrDS6lQang32XtyqXLjtgx/M2yJBEBaFeAgFYTnRF17n2rsX77qP6xc6Qai7O2rzIoer3XkCAdABMjAN+wn7tR76mjnm0GNmTvCMYq9L4MgRotnzIAsHGZO9W72WgoNxHQD3FwAAx8y9Z/eRP3DImce9MqfIgIDIUZdFAEtOo1aOGYAVAoOyjhANBGavffsH7gMgz6tCwNZD6zHN+IiAOa1Mxozj9PeL70ncf3fGlvjVGVrQ8fAY2PMDF4tUz6cwkdJo0bQbNI347b0IZvQEphE4pXXLQA2gzvzi0dPP1s9f2X3w8wuwWBCEnBFBKAjLiWvvbj3w60FlK2wdqsp5v4bdvVukK3nblTvxzuXjs7HemrEgz5TJ1NgAoz5DmBTuGNt0dJteAGp8g7jQGRU93D+W6/0XAIEAGdgBsGZuhWbj7rvrly4SKkAgQrZudu2UjYoZmaDSQNWlXKu0KzimFwoqsgpqlpAVRdOtGd1wm0GA1Wpn/+ii73b9K5c2b/urT304m6EFQSgYhQ5XEAThNOyRh0F3q1brhjstt+X7OquRy55bmGY/ggKmcVdg7O/FWjX5pfF4yLFdjo2PNnYIwEikXRDu/uVDvqKuM0gEjlXes9isi2rKz9m0SGjofDAnL8vK0Uarc2DWNs8fdGud7nVlTd4WCYKwKMRDKAhLiD7/Wtfevf0N/2ldd4+a+171cgCHCtekbnjfmZbmIeyFYgJyijwbKfOCk50Dc3sIoV9xAkc26JehwNhmMQ9h38N5vBczAlvHiHDQufTd7+4qUlpb47RK1WJZhYamQeAQkirdp9kzYaQyBGAW2jhhajKKxFw8WdmE1TaDT9S1L5+vXnrZ5yv3fcg/d/ngoS9mdABBEIpCEb/KBEE4PVs/9M+0CgO+oCB0uoPhOmKbMR8vSpGcDw4AsFfLYTSFLm4nEkPflzI2CMd3GREy6I4bOvTy4pLGh5hUZLZp20T/pF5S4WClw9ir0e7YPxYz96WeY2eY2VqjlFJNe8cnf+L8O99tUZNxjAZTalpwRrVZUhUnJicvpqU0pt8/xfIKlqWFYJE+jwDFsyd1auQKZmdWKYgpn/c28HlUQdCy3nmNHJpXKKiQhi983+3ZHFcQhMJQrF9TQRCyYt+rhnDJoHXc1NxQ+sh3UmX0BIa8gn2xlOQqjGXzIQ5mU4hIfKpao2kmpbUMjPe6iBmnGFW/f4ViBFYK2ToKX/7aQxUAZtBah+AW3q8PXfIyxuSG8tJXcD4kNHQ+Uvq0523Wwki7Txq6u2sN6ds67pZuhrp60auCo8xSDwRBKA7ygyoIy4a++g4AOGet5mbDWd9rBGbX4qbJTxCWNedw4EBjGisQH9UJHTqFTBxEaZdl2ss1ZCcNdiQHRnPzqWeDmzvKMrlj/2eOgsENS8HZ7cknam+Q/TiyCJPJ/X6bkrLYuWi8YF0p1a69UqnWt72mDV1br4HW3/WFZt6mCYKQMSIIBWHZUOtX1h7471Fzx1aQeNd5pGshG9RreZsmzE+ak3Cq7S14CEazv986uHZDWbadUFOeOeRDOhAnt1cUBCEHAgpUCLWgwW29rpWynucskMdOctEFYdmQojKCsGzY7acbb/ooMymyFsAHi0zaWQYrWcP9/ndRvzvCYxfTccOJ1O1TBowaCgJHnfGQERl7XSIYAfsFWhCQh8qjxHruTa5MQ71GiECIg4qjA+OwNz4DxErPIMGgwSEpj9uGPEueZ7F5VPuu9zrwtZu5Wn5arRkFDo9l3fGS2j8w4RJH9yYlHyBv4o0EC/gYdQWdV9kwa//AvMiomk3qBzJtewAktgyIjoEcGmZg5w6++bWbf/gXADunOSdBEApFAX/aBEGYn/qle/I2QRhi4Kkbm3cdf/3OET0b32Xw9/g4kdvNWkuApJW19pUXX6o3O10bzOpyhNXLrYoYiQVd9tMVhBN47Of/9qWf+8/ytkIQhCwRQSgIy8QWbt5x1/f+s/ESHcUMyStrbuFJTH0KyZpwdPexWqDHzQZja6LyNqMFZhCBkAB9TU4hI3V397tPPKd8nN1BmBklytGSzMA5KNH7WywyeuLCLnnJind84Q9qr3lDZsMJglAARBAKwjJhmt/68v5mv+dAvrYsEbNqVGSgsZIzEAVXjjJdtcyk/hA98TwspAeaMP7uEylEDNmR8mp+5eUv/WVVuXD2GSKBS1xmHacsVUOLpgZFaM3HYrtqrh4aL61tnD8P5/M2RBCEzCjcD7AgCHPT2LoboNuErcGakmrCAnoO5zNgpGmEQ2BUcVkYdwBMchJCsibsvTK8V5IrmEIXAoBxUPH87SefgJ1dosy+/13KUhakauh8lEWgLtpjNjNZxV4n5O2eRSjIevf8Kz//M/6HvnvRBxIE4cwQQSgIy0Nz9+G3f///6IJufGWJ5uXFZ2pNOOqNcIiuv6/Dnqtw8gxwgiYcT/8b1IaI7+X67kNgYoSK0s6hCQKy3eZj3/aUl37wrCReOTyBMzFH7qVwNogn8Gwwhl7/5c9f+8y/z9sQQRAyQ6qMCsLSUFl7x4+3r/o1Tzk79NFmmRWN0ldPo2tSmObhfcomiRoSAYY9eWk1TileARUgql2KjJz4nhIObRdVOI3GNWgqoJiVs4Guom25jfe+O81oSqknmkba1SmeryiZ6T8dkRpc9KepgE62clCaqqHZDJPXbdKu7Ff99Y23v+/mp//PfCwQBCFryv2kVhCEAbW3/MDRw/9xO7ig29W8bVlmTlkR9HjlKZ7HRYLhRFcVIh5vQ8jGep6HGlu2s//0s512e9bjlj00dFZGLrD4BgUBAJSn4cbGuXd96H1fuZW3LYIgZIPO2wBBEDJhjZnPf+xXg65p6nOKD0denjxrL8uToTQxNrtHpXfGkQcNebDGjRxlhpEJmXmyKzEarafT0OHxuxJ7B/DYH+kg6K/rj9AzGAGAGDjuWkTHPW9wtLmNbHcIDmzFIHmq69qKtTL1owbAV79oPvAhFRiuUM1A1zF4ai1w+1VDZjaxygWsYJvErGmBI5uvbFZhkT2W8azZExp6nj0ZtWTJM90xibWjNa53woq58el/m7ctgiBkg4SMCsJy4Jtbz3lvuN9RRcEhgpeSTZM8QSnHdH5hnBw4Ot3EDhFPmpHysdrEVPV4LP960b6IoyGcPBzvGu1Fkf0jjQ8R0SlgQAYXWucrrRx0whA8unTve9kZ0so6p0mDY0Z2AJRyR6SfXDnuoHJYKZzEkEAt8sOIrEwrmM5teyFTu3OAj/+XfyNvWwRByIayOAYEQZhE/fY3A0BYa9S9Ood+3uacNQWsSpoJJ51CUiTqYJdYVVJGYkKDZJGJiAD90G4/9azd2wFicBwyIJGyHBBg+UNDy1I1tCxVOgsLFlkNLi91o7u8sb5x/p7f+dNX/cwv5m2OIAgZIB5CQVgGKlfedeU7fjKgoNXx1mtd49I+2sl1+Bg4sRbDisy2svIQThigN0z8giKnOeLiHsJ+mdCEw2BP/vHI+uj/EBC4H35qHZIiQnasEI0JPa1tGDYu31573VVlyRlnfaWtBULACQ8KqRR1HAtnUEkomhZNrRrKiIBY/Pd5ST2ER15nowXoHXlbFzqH7Z0/+wJAK2+jBEE4FSIIBaH8eF5w80nvzT9mfLXuXIvd7AVLljOUdErPYYaCcIZJarp3YzhkNHHYhNBQgCh8rnd+g8hUAPSZGREYkZmAQ2f8io/OBoE9/5/co50mB50Ka2s9B4GmtNMtmF4A4jLIU2FuSlM1NKMbMbm4b+Hu6EC5jdqF7eYu1xuP/hcfAfAARrPWBUEoFxIyKgilx7/8dqjXb3kN3b5pdI1tffYxkvvFlT10cBXABIfe6BqFxMzsnAYEIKdVF5xz7ui558Kbt1ihUposMzExOMal7B+YIxIami3IVESddGrKcp+c61w8NNsNz8NdD6Bx+f0fztsiQRBOi3gIBaH0qLc8cO6tH1tHCqkB9hAqgJkVyF9Oz+EIp/cQDryOM1yZ2TyEI/mEcQ9h4u6RQ7BvFTmDDhF8h8459omtVcZx0PUvX/ZecxcyaWOdBwzITIX0wiSwZPfhmVFAjZFMatUl7H8mzvZEVswTmEYDzKFt4/rtWN15+8d+AZS+/rl/k7dRgiCcCnniKwilRyu9U7vNdy9ppQKsoa2Kh+csGYlBnamYzUkbD719iKr3R8KzvEkTygCM9QiJEJGt06QAoKJ8TXD47ee71nSJawYcQFeDFhfwvJTFw7M8cCm/08p+n+x7vsI1r9Vsd/agWr34oQ/mbZEgCKdFPISCUG68O+7pPvb/XXzDvU7fZkLwO4ewdoltK6Pkm+RdEocuURGa0ZTC/sIuisActHYYCDZkjp7r8yALkZkT5BwCYM9/l3Q14q4A5MjjgDRaNKa/FWLv0uL4+8jIgIyxrMF+0RpmRnADJwoDEGvlABwwMGqF1hJACIwKui/sXL3/Pg+9w6raaBP7uguGCvbsQHIF56M0GmPWXMHeR4ezavSXNP4ib7iSvC1pBARVCNuwhkxYuXH45FP+1m37D34xb7sEQZgfEYSCUG7c4fVzH/9nbX0BggCoVlmrNPdeVF41o+HTQpuWNJR0SOMlnONIvt5k/178tZO2TJshHoeMju7SKx2THHc6MiBCL+q1v773KtvQKV257TZ952Xfqzp2wGDT+xDmRbGsETKnaAJp0Tdc0c53Ri50wla9Ylv7FxzY2h1+vfHwL/5I3kYJgnAqivUYWBCEGVEAsBdueJbXPGIIjyzUGzpvq8pKomyLVvZeKkOIGiICUIoEJThu5Y2IyOh2v/IQeozWdDQSo0Z5UHgCZQ/5ywvm5GVZYZe8lJ39DRMc7V2qXrqpGp2jbY/lG0MQSk8JJjeCIKThXXwNQOOK36mEzTAwhOCcC3UDkROX7I68nFVJGZOXiLgmnNz4fqY0wslMSFBM+7tPwtc7U2S3ik6KlGJrg+deUM1WEASMAEqLO05YEPFIz0VHfQqLI4BqDS7s6L1z7iCsNY6qIQBcvP+jedslCML8yHMdQSgxrrVz28d/td22zt9iC77nhd22TzrdWZFPLFQ5NcbxucTzARERYao6nNOf9Rwho4MNBi/Fm9T3vZp9O6Mu9dHK3jYIgA4dhMazrC9drN99FzsEQGVdav3TBSO5gvNRPOdkSqh54cyUqqHzwAHW6gxHpGub1XYrZHjtT3+K0Lv52T/I2zRBEOZEPISCUG5umjVd2+wEoVbW2E69UiVj0jfPx4dXFs9hesgojW7ANDl8dNx9l6HbMPEo/RUjayLnrRtMxR0eR5M6UJ7SrPmlL36tQeCTMuxILe1EdlYkNHQ+Vs0TuGr3SaW6v9+q6MraQfvliq0opSveudu+50fztksQhPkRQSgIZcW7+i4AuECGA7PlOybHrhsg2fR5CKZwdkYXnrQQTZwlsy6rSzqiKqcbNnWb2H1BiCpqYoGeMuTCF1/pvHQLEDUw48KlOnHyIkymLMKjLHYK86GCy0q1NN7srFUPKq0wIMPGgnr/Zzp5myYIwpyIIBSEskLrVzZ/5J9b5wfgE7gD9lABE7CuZHgQ6WcYY+jECyykpzUMHRrgrgt85p1vPddhoxlDaxdqnCAIpcayrVg4BHN+Z83X1RrbJrbBeQ7CvE0TBGFOVnZiJwglR9e6T34aGQCcR92Wgzo4xxUKu8Az/yqnF6GZNdhzNgFZtFBSZss8kEMEQC4CLKOL+7D6XR9UtCAoBNWLI2VykTOEEKjXsTDygEX9C4eyExER0QFFy0gYKjP2+tGTYqTjf/ZeZXbIhEw4ZBXAIECv71ccehcc9l6yFALV1tQGcufWV77gK3bk6eXNfUpDPFpzUrQPcBoZxbAua9XQVFLKwlrsOsXa1my9G4ah9UBbz2CbC5ckKgjCtIggFIRSUr/8JqhdyNuK5ef0bsDJI8ynOsbHnDVlMXqVgNjYwBoA2Lu5zTd2O7ZNWoqNCYIwM6zNd/7VrbytEARhHqRfmSCUEty4fPc7P7qbMudf4voNZw8int5Z5CbUCT3F4IgIjDBt1h+NuG80EYIKGBSqoNU+evip6gfvs9l5xiQtcD7EOTknGX3xLbPTb6HUHLczTFgQBOHsEA+hIJSR9ebjf7RT20oP0cwm9y+7IjSz2VmWSLQ04heI8bgeTPR3wvZzXdWhkqdJL8Uq4qRs6VBpZEWAqqr1ra9+o4Ic2hJd6dmQ0ND5WK2mCitISmjorMO43Y059hIEoQiIIBSE8lG/cAfAHU2spm0wucG6kMaC6sT0Lj4la8K53Gjj8r635uRTGNaE1loiCi14SK0XXrDXb8xxEaRq6HyURaAWLncuq74W8kWZKeS3tMEP/Ml+3oYIgjAzIggFoXy0tp942w9/0nXnyPWa1XOY5qtb2n6GC+3DEQ0+8Bkioop1Dpz9uGPdESce+vhvUNEaQh3aQJMCIGutRrPz4KO+9mY0Q1gSxBO43Cz6/a0yKeeaNKERriAIBUUEoSCUDA88ALhRrW1V2nnZIP0MJ5N2KUYiOQc+tFNcOsKxcjLjB41aDo7sCEBAyhEqBkJNBKztztcesUHpa8eXxfNWNArnCVwwq3afLPp8W/7+Dd3tbvp+d2mvoSAsKyIIBaFkVK++ZxM2b5qqbosAWxTZFhflWK+JaUqAzjp+2poTsdaSVhwYANAVv2nazedfbh4cntI2QRBWkLB9/i6uPvWOtSvPBXnbIgjCbEiVUUEoGxu31+77hO3udmsNMLM9iE3LjsmqKimmDMQzp+WkPatK9lak+TBmf+J1vEe/uGiUmNc7QnQe0VkiYlRBIXrG3gsH7a+JDzo4eecGPkFgAIuADMzH7buYEOA4EhiPmyICshsMFH+uzxwZ7ZjZIQACATI7iCRoZBI6BgZE6B2OGR0zK4VhiK5W0cZw0/i41l339Rc/d/TAA7e3YdsPakxdRfUuKKRDbSsTiqUK6RTZ6dRLbAUAgML1kZOqoQAwx/d2Tveb8dsdsO/5LN66Iq1rBKFkyIdWEEpGcOsJ9bYf0l4t7DSJsnmmg6nZJVlNLLISErPZk518SRZ4qd3/Jk5kh9P5Jnn2MN7CPv3t4P6WPb2acDiOW44AgIyIClToDCCzswqJAdqmy+wu3/edlpgJFINDVA4UoVNErmCCQZiLIYFa5Boq+XxtFI6y5HZegI3toMXrXufJv+q8/ar57BfytkgQhGmRkFFBKBPehdcBQKdVD93NKt2Z1bBSbO+UnKppxHS7c9RJvgchqsG+iOhQ8AbtAAAgAElEQVRia5J2Jhx5/McUlRtVqAGVZUStSKHHcOv5F+Gl6y3P+IwISgNaBcxjrS0KwKrlgGUOyodcyI4DuL5e2YLu0e5PvLf9q/80b3MEQZiBAv7EC4KQSrj99OWP/nq9sVPl9S69svgDSj/Dqc7u9BsnXpARFdfXhNSX60NvRPy8EJNcCDzal4KZiYiIgNAhOOcaXsULze5Dj1lyaBkRybIjNOwgtKMDCsMUTaCmeZaQMVryMkxYSg6MVuw0NF73+RsAAFDL2SBBEKZGBKEglAe8HwAO0EdQxpis4kUnIJ7DbBmRfCcWhnEIjCouC6Pr39uMMO4nTDxgXBYi4piGZGZm6xDRsrPsNCkP1fajj+ogKgvRT0FEKGSQmjCJ0lQNlb6Cc1G0BxBbaxv1LjkbVM3tAHfSj38sL0sEQZgVEYSCUB74s6DtRa/aDgF1HU09P1Okn2ECC2q84XDUVThg1E/YDwQdNmbEqljhHI2Ajp0jUAgKSBlnmblz/RV46TqTYsaoAA0REOX2e1G0iW/ZQaZiJqGdklW7T4qWWxi2DnYruwQXQ9Py+Vvn7//B/GwRBGE2RBAKQmnQd/9C44f+DxceeRrCAEjn1ocwK5apn2FWZieOM17d83izvp8wtuMJX+wDvyKjIwKNpJEAQPte4KwjoqC98+CTBhkcEpGyNtGGlWUZhAdTVNP2TBFP4FyU5X6rdxuVyha6bbdB9/7ZK1ff/0N5WyQIwrSIIBSEcoD44+a530Bu7SmoWlXxwiDDMh+RZ2l8EU4ik36A04yQ5iRM2XGq984YowAJGRmsZUZlANDT5MLtJ54xwMyslEbrmNktfgJalonv8lDOz/iq3SdF8wSmYWt2u73jVRqmGV5qvpq+5cN/u7RviiAsGaX8MRCEFYT595TiwLW3wq2ugrZRCg4yGx1d8pJmzMIf0M8ayzlbsZm0USyCxeNDRu5KAhxxjo2cbCTD4lPSeCf6FPqTOiIgGtm9N8hxp0EmBkA3Ug9m8IcDZiRGYmbslQtBB+RwUKumN4HsmYoQba9QW0CLZAm01mCdT4otdyra/PVL8PzzWpmuCxVViIjS74dlpTTCY8YYaEY3WBZiT1aeQKFUaNrQZrfSRc/CfoW++WTt0t3NvI0SBGEqRBAKQinwvdd88twDv1WloM0tAtfxjjY4s7YT2ZFXVdLsswIHO08jdBfkFZx1+wklTKfcMjpZto6Jtx//dst2Kp5vCJxh+b0QBGECB3bH1LeOdNhA16k8+/YP3lirhXkbJQjCVEhjekEoA295m/vWn9u3fqdRWx53iHxidp0u64LFDaXENuFpO0Nz1hFSKfYMN3Yf/MFJqnCCQTzcCH4Kc/rbp5QhJcBxB0uCqBt2XiHGzqXfnn6wFyJyLDGQeo3vmYGZjSIdHHYufOc7tK6EiIqRiLJyjhXRyVYG0i5bwb4FMjOIXczbzlN53ktN2ueicO9vCtVgTVf5kEh1mPlqAw7gmUduq9194/HP5m2aIAgnIIJQEMrArev0j//++e03k9l3ugbBod684ByfQUHOTMDULJjpJ3cMwIiUURGaZHtG4l5nEoRDZmDyNqkkCcL434mCcPSgMKYYhjvNDbaNaUJmAGQCQEbGKBwSGdCRBXvUvnTfPUG95oEC0ugcL/FkvAwglyOXLDObVux2K0uuYBqkmna7621sklMN1dxhfKt722d+7XvytksQhJMRQSgI5eBS40eM22v7Pge6UrPt7Sb4VYSS9ArPzHO46NkRj/wjOh4zjmtaHBO0x+oUeTalykO+u3HSBGHiOANjBuGuca/gsKkOUfVOExkZARiQgZlCw8xqc73+xtd6IRpFZG2ZJqezUDyPZcoHpnBmZqRQuexSaDbK7glMwwGs12vtdpfVvt+smzVv9/zhpTfef+1P/nXepgmCcAKSEyIIhefy2wBAY72r8Nz+pqpVuobV+vo6LnG+flrm4aL7Fo5mPzogN+P3ZJqXb+5B5j7c4J+x6jL9ujI9LTvUw5D7/lcARUTap5f+8ptrxmok5xyqmc+lNEVZCsaq1WRZtftkWeUvkr1mPE2IvM5+1evu0YGr3fe+j/zx0r6VgrA0iCAUhMJz/VH4mf/7oLrfbLTDervWDaxFzd3rrPO2bNFM+wU1exGarMimiE6cOcyeZpd4odQRhyEiAsUuFxOBMh6xhs6NG8Gz1wxBlcFQOeKTJ1AW4VEWO4XVJO3+bAHraruuPGOOrG+t53Ur5kK4tadaeZssCMIJiCAUhKJTufenLl5/BezFq0cXQ241/VtU3agEh1tuLW/Txsitn+GiPYfzM41aS/Psnf4o8fWRn3Dy9tE2ClQXnDFBVavtx59ug/UYw2JcT0EQikmje3mzbYOgY6t1B4eqVbvY2Xqusu3kq0MQCs8SBCkIwlJz6S1w4/HNH/ntvO04U5CzmUCkO1Vm1aguPtRg58QoPkS0bKKdYBCiGe2e0PZtbAh3vGbEfur/i8FGrw50XcyDdHyInnnYMz7andkNRsbBebmoiyETAzMHro1Y8dFB51BfvPTmf/jLWm+ErokpaedlcV4Vzs6yzJMzClfN6GNdHop2v2XErJ+jUCtb33jwvTLhFITiIh5CQSg2Nx7H7/tHeRtRVjIMJU3cKzGQr3CqYwri6YUAoEizc5adBW7uH4av3GqFTVRShEwQhJmx9Q2vI1GjglBolj4HSRBKjQcQ1qqvAjB5W3KmpPWCz7euBiImij0eaxoRbckYNfeL7RtFzw75CXt1TDMxD6bwSUSWjJwLIyDTwDBNhA4tOq20M+bgwScat19A1GVpO1FGTV4IxBMoxMjqc9TYv2U9P5OhBEFYEOIhFIQCc/k1AOfO147ytuPsSSvWkk0Rl7k9hyPbMA4tDjhaBhsnK9tTJ1WOOPRgWItO7wJlHD4jpqj2jDWsCCw7JF3zvJvfeFCzsTatloSorxNY1qqSQg/m5EUAAAAiZ9vmjb+3l7chgiCkIoJQEArM9afoZ/5RpyPPVnuMCLDBUmQWpAknM624ZeL+r0DPTiYH1JN5jhE0AHSuvRK8/Ioq3vy2LAKVXfKSG1n1tSjjB1I4cwKoHxwov5a3HYIgpCOCUBCKi/+eH18/XD9obOZtyPIxf1XSGfxvfWUyhSbMwId0itqkNLKSPN+40AdiUkEQ+B7vPPiolon+SYgncLlZ1vd30Q9WdFBbu4DB41/IakBBEDJHBKEgFJVXvSX42u852F87OMzblFVhylDSE+MzLXAUezmYVDngBD21SD/hBH04GvgKMPJbQKgdoQdETEzMvjt86Mmg1V6MpctD4TyBC6YsHtqsWLXzzQoLO1tVfuqXP3L1Az+ety2CICQjglAQisoLj8NP/GMwNfIk1KZwJObv5WXAabaJM5CsxlkgROucc36lcmQ74bVbR3sHc9gpCMKKg/7aweHeA3/CL3/u9/K2RRCEZKSMuCAUlztf/ZPbPpNH5GzethQbxMQFZ66KyYnLuEut17+v3wlwxFUY5VHFV0Z/uKjqaCzajBmAMSpA0a9FEwWh9ToHRhtGUu04RWvM64QMCG4kfA2hV9G0V4AUgVPK3ABGHs3ewcNoQ0+jDYnBGTINvdk5hHvffq4Ne1VVtYCEiGwIafGhpEV2wiAAcu+Gy9uWMZAziXFkl/LJKAmcEuuZeiUKfL+dhjP9HDENLvQh8ZaDwHPVC1dvfenTZ2eDIAhTIx5CQSgkV98DAG0f11RNt27mbY2Q7G2bI59wJhz2lrHhKCncdJrv86kMrmpPIQGABQZCrXXY6b7y1y9UOmHgsQZmAGSw7ACAaOV+R4biBR1I6GDByaqGjjAf6xq6UDcET/zGJ7e+90N5myMIQgIr90MuCKWgcuUt8MDvBLaljnahej5vc8pKeYogEgCNufdSG0j0VGJME/bPa6wJR186jgw1HvIaX8PWRUrHADvAiudpB0c3t4O/fqnlOc+yA0ZEi5HpRbygZ0Oaw1UQVprhx1Wh7Va7/i04es9Xvrz7p5/JyyhBECYgglAQighWz122z1e8aqd+O5kwb3PKS5b9DMdFFCNGy+nTCJGPZ1FxlTGhqs2IJoy9RCNbjmxysjXOIAASodKR+qv7FR/o5tcfcWTIOCZEx4wKOcv4uqIV7UirKon9Nz4vwwRhAgv/HEWPmSYswxiHVFcXlFbXXp+ZDYIgZIoIQkEoHu96oPMXv91svN6Gbe1Ci/I5zZhMPIdxreXG1sw21GCqNqwJB4YlakJETIgm7TH5nhnNJBtxEiokRERUSmtgMsYgg4e0/fiTXifUwIDoHCtEZnbLGypZmqqh0ldwLor2AGJZWQd90N0H43uNCwCw8X0fztsiQRBGkYmmIBSOiu3Cz/4uNMO9+u3KhB5Luf+iMFpdBkdfStOEM2jFJD9h/G+KzVcR0aV+jcf8hKAGw8ZcjukGEzpmay0yRSmCzGzZub0999zLpNEhGHbaATHY1fsZQablaEA3wqoJpGXtK5gfyaEWbR+07x1Yz/KNt371W5sf/OFcjBMEYQKr90suCIWn+/Af3dl8YY269c6OBsMkU5TiMpBqblgTjrcxnE8TDsafsPtAE44EtSIO15Geuu2hYQcA1loA0ORF5U4docf2xl89ZMlFB/AcwVzFJpdBeDDB2X8yxRM4F8twvyVR4PMa+qrxA8eEpLFTQ9W8WF2/LS+zBEFIQwShIBSLytX3AsDN9tahX1835JQ9wI28jRImMT6RnlDB5TTExhnNZkypOzrGlJoQUXlaKQ8Hk05C1EoRXnv4qcBZBw4VaUCEpCKoq8PUGrtQFFhILATxBOaLcsq4boPajaNzF9rht37+4xviJBSEgqHzNkAQhCFo/fbLP/y/dtwNcBuB9g1TA44Y/LztWgk4JV0TY3ljA1VGAHYwjY6qvPTdZeOjRHspdoDAHPcZRs0DiZnBMcQEHjMjQXQAHFQwYbDAUR7bUBJj71WMOkIQ93YEJECIb++QiY/37dnPxOiQASjq3YhsWQEDgCVArdg5MGwhgE6r/dRzF1/zhgMPteMKYYAm7dliaTTGjGmBjAvOI5SWCEKM3D5HMz/vSPlcWGCqQDPsatNV7q2f3XnsfimdLQjFQhrTC0Kh8M324/SWv+mYfdcGPzSMGhzLRzVfkMfbWMfnaCNxoZgSRznYarDx0BoeGirafjQ1kQcvTUhWHPVZDtmDzMPn0j8EjYR/DvbCge4lx10XVmvn730LhAyKDDNFtUZLTdHsX7T3qmjnKxSUjEIbaqEJrK4itdu+WqsbrS5e3fvyZwGkgLYgFIVShrsIwrKyfuXNAOu4zlrd4fNGp80mRI8qedslACSFhp6GBEVHOJIEmNnIcZggNc5z6BeBh9tXRI0Hq0R7Dz/RCVuKHShliXR5YkaZk5dlpTRVUjNi1UJhy0IrUA17oaV0jQLrN7RrP/ubv7b5PVJrVBAKhAhCQSgQbu3Kmz7694729sNgv0u7G3XP8yHomrztEnrV8xhH+xbOKttGKs30R3CIDOAYHaBDYkAHKXGJ450J0xoVDhitGHKsCYcdm70ehqPn5fqRtNZaz9d6b3//6eesp8A6ULpEE+6sarIIxURyBedkunaCc9Pg2k7tWQBo6XO0d33fd+/4/Df2/+z3sxpfEITTI3FoglAc/HDnqYPX/63zFc1gsK7cAbDPSnslmnMvPcPzy35Q5Uh5z6lDRqMRxnYfXTN2wMkmJpS5AcDh9QiMCDx0oITD9LbpnZEzAOw5CAC23vsO1XGKlLWmeJPuFGlQtI8RcjYKhldLCqV9H5b9hPP7nl/slcOwU/M3OmGnWnMttQXcrbGvLt65/6UvAXQWemhBEKZEPISCUBQaV94JsA6bayoEVNQNq8wNBSowyxvjVUKGew+qYYdhchuu432nm/BN2Gh6h2TSlpQe9Tr8Ao4+K3RIiFjVtY4NWXPziWf58JAAwTjWhZuHr5oncNVCJVdL/mbIgj2Baaz7Fw87tmK8bkh1sGudwDH89a//+m0/8/cWfWhBEKZEBKEgFIaN21/70X9i9wJW1IVuFZphbQ/BMNu8LROGGJdVvYqexxosUSUSDGvCwd8OweFQLGg0XPwQc6QUnqgJE8eMVvLwrwMiOiQmhUQWrTk66Dz21+wpcIaK9zOyagJJKBerdn++7F33KnqDzHr76JA83rxkjHvbZ/68/urX5m2aIAg9ivdLLgirSvPJf39N+bfX9pqmpb3L+qgSeIpDpbX0nMiZcRdtWsv4KWXb+ORvgjabZvCJRUenJHnLuDLsBsbzPAvWkjt89BlDYNgt8URWEITTs9W5rcNtg7WOf8lzu3pvt6EbVaicv//78zZNEIQeIggFoRD4d9wLAB6Ypqsp3aBgv1uDWqidYnBSVCZn0r8oo2Iwfa8aM7MFcA7ADcvIYSdAr4TMYBNiiHoDjhSM6fkJERGxtz8CEEZydMRRGfUqZAR26PomR+0NHQ6UoYOYmrXAFjjyT0aH495BHaA7NqYfVKbIOaxr1Vh3wbWHvuKHXYU1Y/IThC5lKRoZxbCuWtXQlSsLmxU5hYam0aXDNet3wTB0PKfbVT/gruZaBSv3f/4oL6sEQYgjglAQ8uciXNTrd53/0d/O2xBhUczdQ2IyEzphHDeDoDmdhOOCk0g7YwNnSWm29trDT4DnlJLiZIIgzEzF87kjCRGCUAhEEApC/rSgVX/iL/acTKyXmfF2EacZaspXZz9izyWIsRrUjD2fg0ZSyBaZtSbLt772CCjmZXZRzUhWnsAVyzFbVuR9jEi7Dm4/2Hn4c3lbJwgCgAhCQSgC+so7b8GtSy7I2xBh0RCiSqpNOjMDeRn34xHgQH1MpT+HhR/0BCQOXoVhSWkte0ozKsNKIfELLwbNPbALF4RSVXLJkdDQ+ShYaOisBBv8yC989PZP/FLehgiCIIJQEAqAu+ONt3/kfzr0JXhmSThRiWXrKhzPJ4wYRI2O9jkcOfrYDDLaEREHFWWi8UNrGYGZLTMgw97u3ref9vTCf0cKlzu36L4WgyTRkUUQlgg6wnu/dI0X/0RJEIQTEUEoCLlzDv3NI3+3DZfytkTIjBkDRFPbVCSSqA64r+IgpgAdAk+TQ5iiCfu29cZXyrNgPSQgHwht2Np/8DE/u98R8QQuN8v6/i48NLQknsBZr0PdWzNH3ev/8jfO0khBEBIp3BeKIKwalStvOvzi/+Z1Kg3YztsW4ew4vZMwrgDTRp6QTzgiWRFVokkMgP0+9crTlp0PhKAcoa244FvPtvYOTnkix8cqmidwwazc+UpOnRBjh1qb5APA5j33A5zP2xxBWGlEEApCznRf+cqlj/5Tu75pAykqs2xMX/1lPtI04YKOaBmNtcRgjLPAUCG4tXfrleunGVMQhNUEyZpw4/1/fGv/oYfztkUQVh2ZgApCvlRr9/4kXHxN0O2sK2PlGU2pYAAGRIra/EVaKwqC48EGcRHGDIg0eBVSFNqgISFzf0AE7gfXca/kxqBpYHxPB8g4nM+GyMy9KFPsh+khEiBFhTsQEIkduGgnRESOtoSYDxEBkMH6yjdgAUKldDcErnpb+7v0/vc22hAiKsDQY225rd1aqMwUtzMCICPC4AIWCeRMYhzZxZo8xpeSwCmxnqlXYkmdfmfqzGQqbFBtVtehg+06oAd6813vu/7Hvw/QzmRYQRDmQGafgpAn9Td+f/sbf2CUrVcqR1DN2xxhZhbUYHDCISYeMTHzkCbscrL9sQ2IiBEACB0SgEIKOt3rr1zD3cOuZq3JApNFACDSLj13cbj2PEjoYMFZdA0dYTXZUJea2OZKzazhlZ/7z/M2RxBWGvEQCkKe1O767o37Pu6qoA+Y/BaAh0nkbaaQyuDdGSncObTN6PbTTqUjjRTtMpzvBxPuE2Qcn633fY6jR4j+h8BJrx5v1B88clkysCNCReSsDbvB1h138Z3nffRCdtoxELBS4PhE3wYWvHJmVtaJdhJmongFYxZBlw5rXbxG7caVylOf/Om8zRGElUYEoSDkyIb/uu/yVKPjNQKPPPAsc2JkWbFnzavLkEgbDg4d2mx0lxkEYVyJDQ+ZuHD/cAmaEABo9FY6Fpw94xgAgAlp3HeIyOyYWWsFDM46hUiICMiGGu9+k8fKEFYsOEIGtsyq39ZwNOKysDGiI4ggXEkW7qweCgctbuHVzK4DukQXc5dpQ69rANU0+rZX7335SwDdbI4oCMKMrMRTKEEoJv499x/+xe8ebV3xINR2rW2O8rZIKBazBIue9kgjKxyCw9EmFkTEzOzQITjnrGV0rAD3n37GazWN6SAiMSIiWQbE0lTRzComcsX6B0rVUOE0nCNsHnJVA+rbnvut37j9E38/b4sEYXURQSgIuUEuXPup/7qxvb2Pm8CH53Wqx96lLIKQSizqLE1JMo0GJI+sGWjCwTjMbJxFUOT5pJRDYGZuHtinX3RgkZ0FZkBlQanU+xmZCuQHyY5VE0iFdm+VkhMakBYddMlLCq2KrdSa++0tC7fu/eJDlVe9+iyNFQQhTmm/dwSh/HQe+cNGK4S1+qZraqjewnralokJY5JbKJxAkiYcuW0GDegH613SbRW9ysxEhIiMgESoFSoCRah5568eBQBwbKNgU3eSX4wJOL3szIIQT+BcLKvQLfB5nencLK/rQM0aYSXU++GGZ1tHt3/gBxZ9REEQ0hBBKAj5QFffCwAH3bUDr+p1FdBh1Zi8jRJOS94qfezoTANZmGZbT+yljDikDx1rrT3Pc8DWRot1wKDg5sNPMlhyHKk8dAyhPdnechbPKLCQWAjiCRQWgVauYw43PaK9tdvN5uGT37jwc/8gb6MEYUWRojKCkA/6Vd/hve+X1vx9goZF0+Zzvm4y6wnFQsZJrEAjRWjODBe/4INGhIgu6k842A4x2ox664be03F/b5I3b9D6jRgQU+UbD7aN3wPMUR0Xgl77QYz+QGTiqHTEYHDGXkZhT+GoQTNCdEDMzjnHioiQARySQmAFFrtOX71t68odXcsV0AFaUulmLrp3QUb9A1NZWum3nOSm1VOLx6TukFOTyjQ7U8xIKRIz+1FdiIq6YLVifevo6ptf/OQPnvZUBEGYi1I+nRWE0qOr4WP/trJW69gKhgzhfhUPdRjkbZawtMzoukyatjIljuMAQgIAd+3Bxw25CqiOtaQ9tpLlKgilIJ8sdVPpWrbUMJ5pKXPbZgfu+tRvLvqggiAkIoJQEHKgdseboLrlm23tNRAJq2sh+V1126zjSG5hEUj8GkXE+Ctn86bMfpTxChYUC+NMGI2x3+YeEVFF/2Uk8Kjz5HPtg11FwIoYEbD0vy+lqZKaEasWCrtqFO397XZ0jS8HxJq6xluv2KPnf/NT6x/6cF72CMIqU/ofbEEoI7h+5c4HPhkYPGh3lQ08cnUwEBym70EpSzKMmLgs4lxWnPh7MKgqEhNmWWrCaUZIfCJwUvuKZCMREXHkJRrZq5d/6NARbHbC/cefCpSpag8Mo5Lfl5IhuYJzEmXqji/CRLZ4fbv6DHWxqTboYKfj45u/9PThZz6dt12CsIpIDqEgnD3V8MYT7s0/RlZV1mvQbTv2TOCqdbSJFR4nMdvDXZnbZUvC9cTjzBs83oqTtk997ybnE07T2h4npBkObcfI0YCxYzLE04ESbO4nKHI/g5KdM2DWkFqdoPEd91St70JjFNOifQ9Z5QryakmhNKdQ2U84P2dX2a/cjGSU+ltpdbzaBjQtrlmjquC45jbVxTv2v/R5AEmgEIQzRZ5gCcJZU73jbQDnNGgMgm7nQNfqlqpUPdd0czygmc1zKP0Mz4Ck7gOl+KZNMzJBnQ7+GaFUBVB1bTd44WV3cGRD4/s+lCfUsGihdItmteRvhpTEE5jZ/TxjX8F0g5KvW807326FFV6zoa64tt/qYFB5/tf/u8s/+6mZDyEIwuko3BeZICw9tHb71R/9B01Gtbap0Q8Ci2aXujcarr3oQ0vO4dmAoMamiRRl3J2dDbO8rdHGcQuHdx++SZi4/9vR+wM9H6iDYRC2u48+Y5QDBdotraAS8mXVBHzZQceJy/OVV3TFr1Tbjc7REWy0t85be3jPZ79SefUb8zZZEFYOEYSCcNa0nvwPR+Hapmq67p4LHHobThNU66E6l7dpwlIxQROeIBcTnB4I6a6BwIKyTBUvUO7wkWecpq4NyU3Rh1AQhHkpnCdwRs6Ft7dd6xC56Z3XHKjW3roPYNfP3y8d6gXhrBFBKAhnir74RgAAjwJTt6qqtXZ2j7hirXW2k91xJJQ0V9ji2PVDxxYhesEBDN4U6udyD0TayJRu4MU9Xt9vbDh62H5HMEiOXB22BxEAHEat52PvOWE0F4xtMOiNRq7nEnSM/VNAD/UhYc2orVpo2099Ezo70HWoG1Ndq2lIbHo2eyLTqlUNBebkRZhMSUJDiwY7ZIdojxeySBajL5nxpUuHDedbJs0hoUGqHjJWrNOs3/fZ/bzPRhBWC/mCE4Qzxdx66tzHfydvK4TFwpigx0YKBrnjP2IVXKaO8zzbQF+cfMQKeoFPaEKlVODMjW88bn10zpyhhYIgFI75nj14mqgt8QWCcKaIIBSEs8QHgMPieSQkt3ARnOijOyVpb9Bchz3xt2C02Gn8n9pAqBGsU+QFiIffeFxXyM0xG8zKEyg5ZkuBvI8Rpb4Oc1ipd4K9h7+QvSmCIKQjglAQzo7KHfcAnL/EGYaGzor0MzwLjhU1DQlsimI9T9p3pgONron9PY0iHWmZ2PtnP0BupLRM2iBsAcA5xcxIRPzyTbNzi1Ge8Z8VEho6H6sWGrrgqqFZmRmew0d/+YGrP/sLWQ0oCMKJLO8XnyAUD+/O91z+2D88wGrehgi5EZdYsYnYkD5HVIhqju/nccU2o5dy+IhTz/BY+coY4wE4UA5d+3DnocdoQlHVjDyB6QZh8iIIwqlJqxpKDLrInwMAACAASURBVMQJuYKzYjp832dfdMuc3SsIhUMEoSCcHeirtmq0dd52JCBFaBZFXIb0uzsch+NOuG5TugpP3GySDkqQfMPvO1N8/JG/j6vgKE3GAQBqTwFaF+w/9Lg/jfXCLEj/wDkpiSewcFVDc7pua1jvBOG1f/Vbiz6QIAgDCveFKAjLin/Hew4//y90sLtuSv+5k5zDmRjRhHFZmMl1m3sERBxM71ItmWL+Z5jJI9+4gAhRKYXdl6+1btyaz6rpWbWqoaXOJZvAsp5X2UnzBM40yByO+UPVWdM+AKzf8wGA8zPvLwjC7JR+YioIZSF46WsXP/a/tCu3A3fztkVYLOOSJIpYXJxmPtXIY5Jv1tGcA1Wr+CG3wVpgUmCbh9eefW5+kwRBKD/zhWnbKuqjtff+ybXDhx7J2iJBEJKZkOQhCEKW1N79U+bCq/wOe6proYhho0mkBaklPyTmlGXVXIfp1Vd6123ENzi4UFHRGextyw7ZAXOUcxfrRtir/MIMkbOx72OJCTmMH4gBAJOsQhcdmXEkHpQBkcFFqX3RCP2qoUgACASAzL1NPR+DrnFKVZV2wB1j/bV65fqNjQ98hw1tVVUtgHGh5xEzp5gyCXYpN1ZJ4JSP0Yn3yZJxpk4/psIG1WZ2HdBlU5V3MF5sJXGqnnMpKbrjibrzXX0v7IR+lZS3/o77bv3x/wPQnn0MQRBmQzyEgnAWrL3+Q+2v/+8e+6pOR6aetzlCEUns6BD///j6QgXUMTMREREzO+cAqNvu7O3shi/fRI8CDhGRiMiNqNZVYdE1dAThNIzo5qg2TI6EqHxjlXGqUbntpz+RpymCsDKIh1AQzoLGXe8/d+/fCpVqBuFFbYLSf/SS5wtpuYUrpwBSwIlerePcwtgO0RruN7CIvdBbEAn7D+dHFOXY0ccPyRBPa+yb0R+n5wqOrUdEHH+OyOCICIGZmZgVEQKbMKxtXqy/8a7QOI3KEWiLBlmd3Hoj4QCCMAPFKxizEDJ6qBA9XaKx5xQOMZdivVyrd0JY98PW1qXnfvFHFn48QRDEQygIZ0TtgoJNW/dq1DiiJai/KFVJMyZNNQ9UYmL19pO09unnbif/RsRsoMgBqJXSpHxU+488CWGHkRkdOsbIkSjqbtlZeJGYtOqXBSsfWriqoSmQI3JFuoydZtWrHhw279b1N/8P/zE3MwRhlSjK96YgLDGNt/zA7pd+q1W/4LpH1tUIw7wtOmvEcTiZxGDR8X86HCpSmjBIwjTu9DlU4x3qRwNZCXUsiZGMMWABEVsvv2xvbGvFAACOHQDSxAnxivUPlOqawlmSSdXQM2DDkO921/Xl51p6650f/Bt/3snbIkFYfkQQCsLC8TYuX/rYb4TByx11Z9XuEAd5W7Q4xHOYJeMztajR80h64ai6nuXR/gQtenyUEwdkBscAQEqBIgawwABkgqPOk89qYCbUgEYBAFiw6cOslkCSvoJZc8IXTtFZsCdweofqfA3ls2K7ygdKYQBVCrRHgVviX0xBKAql/d4UhPJgK2s+stZ6o7MdVP0ubORtUVEQz+GJjIihvjpyUeHPXvnP8YnjacO9xmbVE0PImBmAGIGRkAi1QiJHaD3cfvBx1+lYth6jIQDHiNMVKFwillXoFvi8znRuU+DrMBuRDjwzKZjmsazaNeyEh1eeN+Sapnm0obQzZ2STIKwqIggFYbHU3vThw8/9i2uAhs8rYk8ZZSQARpiBtHnliDdvEUI6LTx1BKUUEQGAtdY4y0AOwTnnNBw8/XzY6hjnFJIBBsdAuDQT6CkRT6BQcOI6MPfnMxVzsKFu4xtXNXUrtvbkuytXn5EfTUFYLGVphiYIZYWBLjzwzztmo6au7cL5C6ZrPZ/tqsVFpj17Sr4OaVen7E+w+LhCp4uq+UVayzkHMd3l+iKw36bw+LwRHQA4IIiaPbBDRO57Dp1i4qhRYU9xMDMwA1JURZS5d9yosks0Dg52j44GjMTogJkGdgKAQnQYdUcEAKCBokFnnQO2CEBI0SEBFSBrqFWw1Xnw63T/9zaxsmGpic11qLdBnveXidy0+syO7ry+V2f7fssqCjT1SU3Kx2tK11/uDVG67Fn3slc/17UY8uF9f6pfeP4rOdskCMtO2edXglB0Ok/+B4v1sLpbdRc96B6SdZ1W3kYJ5Sa5osxcO06/jQNI9mxxQtUZAHBI4DhAvvHot33Hnq+CMPRAt41kBAlLRj7Z0MvqaceKV/GqR6Z7oY1O+YboxU/8oP6VX8rbLkFYZkQQCsIC0edfDwCo1xHCg2C/BhcQG1qt521X0VnB3MLJhUan3Gv6bUYyhZLkXPRfSoocS1jFQL1BUB1XuyEGTYfPvGB3bhnlHBKBdsv7Pi7rBF2IKNr7G3WQH1+KxqzVTdVhp8vccGrvnNpydTxoV/n6+YtvOEubBWHVKHt3bEEoNK69c+GHfqurjjxGrF20wQ2tHFRCtvIsJiItuyp5rsApSwkVxskZOog4EjoKMBTOhYijne4JkZMqhQ6PO9iJMeXSRQ3r+XiHvtjr/wGD/8SOdWwMQxRnqBwaUwkRz22q17+qYT0Dbq7O9OVAcgXnhGm1rlxWHwA3W3GmvNICZz3dulcJTcBI4MLA+ryGd3273Wp33L/78wAOF2OjIKw6MisVhMXx3QDQXmNd8T30u2bf1xUwF0y4ih6wTJDrlg2EQBjNDgdzxMGVHHgYmHqOvljq4yS4/4PC/daFzjm2QL63/81HudvUDsxSzPKL5inKimU9r1VjUCx0ZFk0WXksW6Zja7XOmle32HVBQHCgz+184r/q/srfXoDVgiAAiCAUhEXyFwA7HtfaTTro+OvqvA2bYbXlg16xqvtzIP0MZ2CyJE57dbA+fuOpnt9x/FKPX/9RP2T8nz0YCL0W2vDaNX1rx4BRygOb2oewLIgncE6m7oOXL5kJ46z6Cq7YdTvYUqrN51rWIF4BDZ2g0gwP+atbF1+3CLMFQQARhIKwOPy7P3X5h/8wCG6da2xWG67T3lc1hLBiXWp1X/GAzUfZr1uiqRmmEU7J0LN8JhhyEo4eCxFxzHM44iQkUKA9i+A47HzzyZYHvgUsYJLTiiGewHKRloOXlydw0Wxst87bqgLbte7I79SVj+v4nX/ibbz/I3mbJghLiwhCQVgQPxY895uHZJ2/3m3tVk018AOHvme2DXp52yaUnnEdOCjlcuK+J3qkey+NuyASnBIIgGl1YsixVUppP0C7/c3HuhXgbri0GYTCypKVJ1AAAABaq91QdrcK5PnOBqFPZn8bzAXzR4/AB38lb+sEYTmRojKCsCAeA3C1t31ZswZCC0aDZqeYFGF6E7bZaqysIEtThAYBjxeGSMmNngUiICLxcVhxXMVhz3N3vIyPEDFYi73NxkIcEXBIKLq+aci9oREJHTsARCAEctyrIoOIyIOqMy5WbAbRhE5Dm7sXQy88aq295zVr1Q3mBk/4CBQKcZrNR0mKxGTmFM3oGQc7BEZyiNxbiBEZZ6wds3DQMTKML1nBFhQZbRCBGRUZR7rG1H70uTfBv/yezA4jCEIMEYSCsBDwdX9X/c2nfZvRR0zmpScw2wUq3MwUAIaqdA5Wxat9AozVCRybhJ1wHSac+PBLnPgSsxv8E4cUbP8PZKTj1Yog6mVPCGhdt1Gvv+G12mnG0qcRChMp5idsYWQlhnisJjD0ntQUirx8/HfdvYd3fejgc/86n8MLwlIjIaOCkDGX4XL97e/hp38bOLNZb9lz5PKibNctKUSTh8vqnHkxibG8QRyfnh5vE9lGg9Klih36oDsE7KnW15+y5CRk9MyQXMGIUl+HHK0s2nVTnfrr3/f+H/v9crxxglAuRBAKQsYcwdH6Iy9W/smvXWldzGpMqUp6EuWuShoTXYX4Tp6smQevcl/4DdWxiKrR9CJcGQA0Ejg2Hunre+baDaOKFy/KnLwIkylJ9cvMWLGqoYXD4wvtjZ3Kdt52CMISIl9AgpAxBtR1uM5fa7xcP1j0scrmASsKBbxuMQMK8bU84hgcXUmj18ohMPVPgXt9CIk0M1qlKg67bJ0Nj776GBdQEArCGZJWNTTq2lecqqFZ9RXMihbob29+K1DyAycI2VOImYcgLBPdS/8/e28eLkt2FHZGxMmlqm7Vvffdt/brRVKrF/UiqaUWaNdYfBqzIwkhbGsAgfH48z+DEQYGjD2eYWSPh2HMIGx/HxgzzIA99sfgkQ22xY5kga0FpFbvu9TL6+633a22XM6J+SNryarKrFtVN+tmZlX8vvzeq5t18mTUyZOZJ07EibgN4MxWqM7p08s+l1gOj6JklsNC6YSTGBw3HvaNhBOmQiZgYlQAwMy2ZSEbrfjgoafswD85iUeR/IELUhKLVmYujmIJLCQ19pDOBS5/9x9085ZFEFYNeTAJQtZc/nP4y/93oOAav5i3KMJ85GY5TBgmTlNcT4ZEI+FAJ4zviYpM1qDZKGVbhnxil4kt6uzt+s+9sly50ynamqisWNXfVXbSLIFzVXICE3yZyHkCBAo6Cl8F9V0jUakEIWNEIRSEjLHf/NGd8MkQqw19Km9ZhPJRWI/fcdtggphRworh34bBtm1LQ9MENiMi+zq88vjTS5ZUEFYEcfeIo8k9u2s9E/oBeHnLIgirhqSdEIRMOX+Xeer36bZvc1Fri3KLS4GYvBVuzjcvCpbPsJfJa5AocOh5CTC8mgMpNQAgISMgERJGG2Pk1TZp20Tq1QEIHBtkjhSLN4OJhqK91mAEA8wAzIZ4IJ6JMiiOGlERcehXSqiNCUNiGy0DhEQVG/wXnt/5C++0lc0eIFlMhlkrZZn00S+nXK7U9l9R49iJGv1GcgkWi8zaAU1CNr35o+DG8nwOIU7V59LyCk46/Gfb+svOH7iAQH0Jxn5lch7Lqml6Nig6PHz84cqpW/Yf/Ew+YgvCKiIKoSBkSusqfuNP7WxucVA5wNDJW5xxVnOcnCH55zOcJR+g6SlevRI4LJq2zCk2ruKe1jlN/Oi0CUNFpqG/KCcJDD3tMtJkwSAiAAEbBgBjmI0xZuP2O9VmXVlWGAbKVmiYCSldHln7lwdr0MAZKUNjHZK4/zlFIczL7le4hC/I/XmHATSl47Wp1jVmW2l3884HfuIvnoCAgrA+iMuoIGRMo37joYct6GwpN29ZxilgdM1SsIbtlvgbR/88+vXBSACEiIRWdKxmE4bh3gOPgmU0alRkEFSOGT+ERCTwyTxEKzYHS+8GTMYLzTdqaOEYdrMjwn1FuJZtW3jN32Daf80P/fyypROEtUIe+oKQHa++HwDAsqtKW5bldwu3zkGikh5FOaKSpjt6zSd/av0z6LqR6W8s8MzYn3HXPkQkIkQEooNHnsDA80Lfsiw0DJqZkI3ohSdFWvTLgoXBLFzU0BTIEJniNmOBSXtApTxZW680UDeszmVr69lP/M3TH/7JHEQWhBVFHliCkBl481vhr/6zevMgwKpntZW1kbdEs7KGFrBMKEi7LVWRwpGYopOjt2kDX0SM0tMPJh2IiIj46rXW115wbRVon0AZhcxMNPf7aFWja67q7yo7ZYnGWRY554VsR4fQVJXz4bU7f+Nw49bX5S2RIKwOohAKQlZsKnvTblVe3jnvdF9p+JvstPMWaVbEcngURbccnmy+xJEfPkUBHnwVKTMGiU2k+wXXvvRw1VEd33OAwFIc6gUUQllbmDULmpSLwpItgbMbVMU1dJQZn59HPCn92nn2DlmHbdypb5mt93xgqUILwlohQWUEISNu/nrzwG/X7nhX1W+BVQdmYzqAdt5iHY/Szykvm+yD0MwSVIZT1LD0MLLJ9Rwhw6hbas9UOCwSDyrDY/L0IsQg96SFaIKBkRmAwWK93925/w2hsjfAblvG4mkBL9KMY2Ufcudn9EtrOYx9ODnZsosaulyZ8ahJMnOyU2mFixqayvQWMf2wzVFZk1be1e0mOjXlOAq6zJ2nHoCdWzoPfjpjYQVhLRGFUBAy4uA5+Mu/3ggPjLsdsgUIXcuxyu7lVXLxl0+KonIMX9LlKIQjJjQcpHFIGTwmKoQT4o0ohInFOJrsZyIEQkQEZAZkH323yfj62xpnL2A3bFumquwgCNKMhGIJzJojFUIo5c2fn0JoYnrg8PZaqjQFjBqaSlpLmJFuFmWhSC+vDVkbluk4lfCKYbuz87oXf+K9GUsqCOuKKISCkAVWxXnT99bPXNwN0bYM+qCsbmDqFgR5S3Y8JJ/hEaSpKjPlMxwqeMww0PGwr9ghMJgRzQ+Rp2iDiEAQJT/D+E4Ag4AAzNxTS5EZGHo5IXBSgWXQg8Emjp6Cew7GpncYR79rYAkcpi5kAAICYIzkQQNRwgwGY1zLdDYs1ne81rIbOwEfVPyKJl7RZau5WQJHcgnOokrHu+dJkiZnihgZ5Q9MnbjRiJywTckfOFLtSU1YFE8hTLuOZuLhl9jHjmi5to2b3Q6jYavqW7pjNRunbtn/3H9c6k8ShDWhtEsFBKFQ3PB6/+FPwrVXTlfAAQ2qizbWm3t5iyWUhjEdbzSUS4k4QmBEBCCjA3CsS08+u8HIWrfYUCBrrtaZfOL1SvCeckG+6+JG13EP/a6t6Y2m+tzP/9DW+yQhoSBkgJW3AIKwEjz/BfjAP3Ksc+qwu09dQtA+4jZBmLdgyyFNUZGx1HTGtb6jCh+zOXE08cN0YUa/UsMDGWDweRifg2YZrxsEYsWg+4doAGBCpTBU0Lx0Wb/4kn3xNYFNygAimpTME6IqrgZFez5QijjFkhKgeAFC87EluHX/5WtXNp0LvkKXNp/v7L/xzx964M335iKMIKwY4jIqCMfHBdC11/zXHh22NyvbYAzabXKVZyGtaGq1+Twl15CZGmgGPYdnKzaokQehXwb6HiJGvp4xDXA8BkxCTYPD46ojcmw/Dr1TB98DIFK8bkZA4Kg0Yk8lsCwMQ5+UUqw277kDbYcDrfputLJWcG7mdg0tOVn5Sqb5gKaQV+Dl4rmGTl8TeKRr6IJseo5V2bgO2goDD13L9jc82zp30fvTzwZlX50hCHkjLqOCcGwu3A5wzm3Y1Y0t/yDsYsC2qnfCoFLyEKPzU5C8fCtMwdoz7Q0yqo304/JzFFkGUbOBgO2Ke/DAo+w1LQMhIBTODDI34oK4GkRJIya3ZUOcvAkRTfb2dHBeq5pTqbcCctw9aBz87D88/f1/I2/RBKH0iMuoIByblx+CH/il5isBu9WGu9Fov7jntGm74rR3Ad28hTtRUmfQZUzTY1SDGjZL8vT2dJ/PY3Jk5fECvc9ME1ndqP8zGHFkzIxIkYpkcORnI6IJtFKO1hrbh96LlyqvOYWosswXt6okpbwrINmlkcioS6S2W7EeTMWbOyhWfzPVTjWstaEdAlpV1fVNI6j5f/z7+g//S96iCULpKdbdLghlxPq6j5zq+mdd76zdrnkv7lXAU1q17UrKgihBGCM1amiR4sr0jJP9sXWSrTL9hcIEFPmyKgBQoMCyOTBg8+6fP2JAO0ymPAqhWALLBRpO3PKyBJaffIIAVcOG71VBWyHajmsqDnfrBzX/TP2d37HsUwvCyiMKoSAcC/fG+8Iv/MtWF5u8eR21jz7YpxW7e1jVttxfwqwkRhk9ZiXxPVkqllPsVONfjei0iL1Ebg4pn6GCqgX+9YcfDwkUg+YVDcEkHAma5E0QYnh6165b2vJPe6Q6XW6z2woq3Ru7Tzx67qM/nLd0glBuZCpMEI6DA+Cf/+DPd2i9XEMzo/zLxrIBe7rQWDjBQTCJuPUJmeP5+kYMU/0x9KCeqAaTlheRda/Y+H6Do6fo5RvEnnEMGZCYuP8nxk1kPRMLM0e2tEgeJEbuSWt04Cmoe0GIRiPe+dHv3rr93o5xifwpjVQclm4MFNfQhWCDMBo7tNcVU8rnZQwsXtTQATT6YclzNGnXPaX/c8qahI578NB7X52NSIKwrpTjrSMIBUVZAPWO6eYth1BymHobjGyJIQ9nyd7OVKzJvrivKQCAIjtkRtIEms3ug091yMiKdiFzCqt4FZ6TcAEdPvfGtjnZbFZe9bFPAGwuQ0ZBWBNEIRSExWncfB9UXadyU96ClBWJSjoLjNNzBk5rrqlR9FOZ7r86uEaRgWXMKxUxNZsR9984msAxAIoCAFTUevhZHXZBFc5FUNYKRpS6HTi/qKGlbrcSEW6f+trP/czWe74pb0EEocTInKwgLA43ztz51u/+WveyY1XzlqWUSFTSGeHRFIazRB9lwqHjaKbRSuNZ0QwmhcUfBiPtyT0oxkAIgKwREQiNZocpaDb1s5f82ysWr1lq3JK4hmbGmkUNLSHRBcq5W6Y/rJJfGIF3+fW///kH33dxeSIJwsqzZm9fQcgQx/FfesS75/1Vq2pMSkptsXUtBKbYDvOWa3n0NbeU/dBvk97n0daIJ44fObqfkn7ykKPOm1IQY2fof2LspZ0f5LtH6CX45pFE9j0xGEARsIn8WrUVGK2oFpD9xlsVr9sc5Qp36SQyyrCOBpCTNgBMyjafF8SJb4Xik3FC+exIWUNouqfUjbx9/uBzfwIgKzgEYRHWbHpSELKjduFeqNc9val9iY6YMTwxpMt3YJcf8fWEBECIaopPZiLx9YQLK9U9TY9TvUkRMfGF0h9UjuQoRIaAjTbGVS4BasWHT37V9ld3JJfRWqllk5mLY1ZRQ0vSbuVhfJVyfysa88l5M52+trf7/Cd+5qaPfuwkpRSEVaKADwJBKAfcuHjL+/5eFQKiKVH4RbMRMmOs4yQbCXNmik44xBhQSAEDMbCjLDbNbtN/6rkTkC8RWetVTNLyB85VyQk8bjORM1cmbtsTSfuR1X33Ctj2qcO3/9Fn6jfdvgw5BWEdEIVQEBak8/BvX6btGh6EWnJOCMekPwU+agmZHJFNmU+YUSfMS3VEHL5uGKHmuIygw5AVOp5pWuGVh5/MRTBhhZHJt0U4uQyQ2VgsHeNXO7bb3N5613uXIaUgrAOiEArCIlhn7gQAR/kenDZ4PW9x1gbC5G1VYGImRuJohj41dEZ/Hn1yMWGivjcaXNEgcrSBIiaM1vXF1wxNWrJNLAdY7xR9rRVBxcKNmkHhsRWPzDzIU4+IXRNWyGJyTEi+Y9WA97/8FWMCYoCALVXxfB+Aq45r9KKtmdJuJ2QJLLCLY9FcQxOXrCUEK+qTFjV0MnZotLYwKwpnCUxt8DRFy6RvMYrab9Oooq/w1FXaVej8hd/Zy1scQSglpbnhBaFQhFcfP/2hf07oHPoHNbeetzjC2nEMQ9/IY7+fK+KI2uY63SyFBxrjQIll5r2nnglZK8sKQ992HQup43uF8YYVlsVYtBXiadqgMMK45lbMNYHL5YoOuuifqm87qLizdj9fEDJB7hxBWATnTR/d1y6w3sTOYTB/aERZW5gpks+wR0oQjomm6D354yPvXotFWxILL1mcVpSGl4mZd//sYbI4hJCZiQgMhGymrdEtLOWxrhSByD45MLgNyCt/YGkYdrPChocBWL5lfqN2huz2C50Ds2tdffgzWVUrCGtFQR8fglBk3Hu+w//S/2U5vu23kepoFy6h9rqxbvr19MTxCUSOoSPFhsPHDJXnyXow9tXkUL5nGyTFBgGg88Sz5Hf90LcsS2vmUKNVyNxIadEvC+ZrVzTX0DTIEJniNmOBSdMDZ/ALPVGWG90UDw5ts3Hegv1N7+Gf+rabvufHs6pZENYHeeAKwtzg1o1b3/3LKtjf37gVAKzQy6zqddNsloxYDockmwqHzGsAnF4m+pYmysR1wqhfI6ioPDPTwcHes886NgIaCI1B6C8+nI8TXSsozEzh1uClUBY5hQi3Cm0TdDoXd9h7+6euVW++K2+JBKF8iEIoCPOyDfZmQJaqnq/uv3CAxtWSh7CgiH49zsxWl0TNOU0JTNw/uTox+hypeQgqEiZaTBjtVJa+/MUHq5blB0EFFdiKQ10qRa7QnntHs2RL4OwGVXENHWVGC1vOlkBmTNyWfd4D5VuG6tX2nnuKQ7X17m9f9hkFYfUopDeOIBQYvOVN4Vc+Zd32jlr3qmVtWE6gcYN52e9gTN5kzLQYxVUxGKYvugMAADzGD0Acxl2c1I4Ngomnsh89z1jhobKHTL0vebTwpJwMANxfp4iAgxiTDMykw/3u1pvuNnalxpZnE2gNOGlo7NeVm66Ydokw9uHkZMusHTKMyJlc/RFd25zslA0ajsKQjm3FY3qLmJEorWhmeIQsiXzOu6ErB27T8ZW2dj0G/6kHq6cu7D/4J7kIIwglRRRCQZiT/Res7/nHmz51a06oG8DYQbKWrhCmIArhYhRxzBexoEI4jx8sDvS9yXqisXiswOhixbQTDUf6PMw2ATDZ0NhPUNEbdjMDMCIwGwAMyHdbYF736s2zF5yuaTngIBYymdyRCiEUuZOlkp9CaGJ6IJ/UfFchdb9E0lrCjHQzNP2ftF4KodFguRvdDp0iy9jOZuPsgz/5/lwkEYTyIgqhIMyDVQETnn3dh1uI4HuWCXXlsBa4Jq+RRfFGyuVgEE5zbMt/gIhR7jRAAqQ0gbBvIh5oZ8xM/bHhEUsl0TD2W2Aw9O7X1jOSjFih+8Y8QEDDYACZwQwk7Wl+CNzXMHuJB6E/tOehUZIZogSKJhr/U3RcpBAChg7YfuOg7bzp9exsVtn4pmspy+S1fIspxTifekBKUr1lkyZnihiR5nBs01jaGl3Ug1SXI5tJceEe0xOPbOWsKJ5CmHYdzWjXSutjJ9RyzIlC5vY2CixudJtMDmCXA9gD3Dp9Yffzv5OXPIJQRkq71EEQ8sC56T5oXGwevGyp0HVqYNcC02iyTKwIJ8pgDD3wFUTMbKXX8SPKzHksAQBi7yZi5ssvv2Q1O13d1cYwM6K8p44kn6iSErxHKAJtdkDVvYra9xEsdauNT//Cj5z9wR/KWy5BKBPzZ1PeswAAIABJREFU508ThDVG1S+c+bq/xLjpt5pNGzfQOtPidoO1n9PkaJoLVvGmvktBmp5TtDEuMyNizPAGAAsG5BzjqEooxeiko/8MEsXcpydrG+xBROh/1TdsKrCYgJp7+8Ezz5s3NDQoC1yJ7jigaP0wLX18saQEKF4XKsccR3p/K5Zril3p7l69ulXbZtowTJf03t1/+nT3U797JW/BBKFElOOpJAjFYKvz0CdNUGt39k19Y9uQQeeg3mh3xEK4IhQtKukUu0/PFnM82RYw9CVmp4jvZFLDXPODFYPjXqwMUQoKHjEPAjGCskhd/dKDFQRmVLYT+npeIeem2OkECwsbTNzylqu8rFf+wHlJdHNGhjMHzqnqhX0mHXjtUFukTu/W1amLAGfzElUQSoe88ARhVpyLdwHc0t3EWnXTNDGgwCgG31eWm7doExRNsyk5hc1nmKPJaMrPN30nT0QEGo8kMnZg71tUCIpZa21sx7r21BPqYJdZB77mDNMeCCdClDRicls2xMmbsBqkuSh3KbjE/pa77Ve9Le1oqu7X1ZMf+2s73/8DeYssCKVBFEJBmBW1ee70+/87Oujs+sbU63VW5Hc82zsdtvMWTVguRdOv4zqVgYxXbS2whpB76wCHSrJBYlKDwtw/pFeAYofzUHskUMYAMJpOy3vqqwopCLTj2Mf+TbFzlcESmNnavKzyCq5bu2VGsSxsaeSVPzAryGlvWtZBcOArv2V88J3qobn90/+pfssdeYsmCKWhcA8mQSgsncf+HVhOQ+GpCtZb16+ratepGq9x6MpaXOGkGfHSxMVNhVnZOTnpbWKwl9NwMkn9YLSJiADUWxKJSMrVyGjDtS8/gtoopTQs32VUmAoaTtzysgSWn6K5hhaLeRV7t1vHTo2anks7yupUNwLP9k51t868QzLUC8KsiEIoCLNwk3XmbgC4Zm92W1WPQSkvYNshUyfl6Ot5iyesF5MjR0Yw88fyWEwbHDcPDmPDTHuhJMTIRzT9RYY9y4kGpRQjagqvPfms9j3btrvd7gJCrhdZWQIFoYTsW4fhhnG2oXKAdoV323sVvW13ztlgff1nLuUtnSCUAwmGIQgzYdqw/YH/0TGKbUbDIdoWaNTA6IdQyVu62UnJHyWT+ouRks+QU6IazquAIULaYsUoDRmO5pozBAjD69k7lrCX7T661IwAGCWEBx7TGRAZEVDH1v1hP5c8QC8sKOJI2rFR8UaSOTIDMffLcyQ2IgBD9MsAgNEYMIgMCAqgZZlqaIgVhkHlbGPr/LlQ1XFeI+Hc+QPzITNvxoyiCrNBYCQzzBxIjFOyyeflVIiGs0ijuAwGHU8BEICeLX/goqTmk0yLllys/IFpDPKbziglgaNMyNrSltFGOegwaK26sOFd/d3f2/3M5wEOT056QSgnYiEUhBlQCPCC5o285RDKQWGD0CyPtF836Sw6MbSjwbcawQ7ZMBqFRuHew8+0UKtCDPTXFGn7RTkRF9CSrO3Mi3BPP/Pxn8xbCkEoB2IhFISj2bjxTUHQ2br3g1p7ecuyJMRymCmZjaOPqAh7//SdNge2wYlCiX9FkSPGC/cMif0dE5redM02biFExJgNs/cBASZ+V8+uqJErhhhMqNBCMldalbfd4zrV+Ru0WB136XFNsrKOcWRgHsfkFFQprd2KdXVHGBOtaAp1sVpu6dfX3XJuuhBAEDz3UFZVCsKqIjNJgjADjYuved//fNh+Pm85hJJAmLzNX9FsUQqP9SSfHgWEez6fAJDgvxrfk5iicGxPf//EIUzAZICJiAkZgQBNtxs+/UKI6bMw62YhWbOooSWkELFhihdtNZm0vIJZUTEvw7s+0P7sv8qsRkFYXeQFIAhHoWqtR//NZao3Kpt5i3LiFC3fgtBjUi08Vjj7SZ1wXsPgJLHyNPEBxpYF9dRFhoABgMgwhzqskvdnjyJKlNGMSYsaGmXtK07U0NLmFZSooYVgHzduouyS1gjCSiMuo4JwBO7Z1+oQ4a5vsvyAFzHyrCLSDIuREoRmUc+y8SO5HwBkRpfR+Gx83HeURwOJ9LS1mQTCMTe5gQVwWPf4esJ+yBtERWAMA4KFBGHoOUSXmztvuxeteimCYWQXJCYtWMi8AiUH15leU3EmfIoRJyZOWrCioglasKBKhpcaWyeNBrFpafe19zBQ97lHl34+QSgzohAKwhHo1tWb3/9xj5pktgHDvMUpBoUZMq4Ii46NkHFUqVtcIYS4Tkgj38yuEEbVJJ1uuJIwUmJjauFgYSEwIRlGyyIdhhYoAL/tN24449xw86wnXw0y0oQW0yvHFMLxVaZLoMBRQ8dIa4kJnTBq+iW3XPoERMEe0DldypbeNFth7eJ9T/8v35OPBIJQHsRlVBCO5iWo103NgGiDwrEob/TRpGChI18lM8OyNMRhGc+EFhEjBkFgbHRD8Kp49eEnF5FYyILiWAvLxMllgJxxjXHO5LWmsUF+cHBtC9v3/K+fXPa5BKHsyMNeEKZhnbsjvPzE2Q//c58c9g8ArbwlKjaFnNUvL4MxU9SuwxTwONhpqF8Secrw3UQjsGEAGAZmnj5yZeb+eq1eMRyVKoYe24n9Yv39pleVYQBg7Msz+kupv5NZA2tmjayZzX0/+mPeziZ2wHIqrD2HsOnQhsd+Tv0tS9fQLBhIE7/+xMAp6//yWhaIKfk5c2PQ/uMzF2k6VbGWBXLR9PWCXV9SxvYs395zoeob+Ny3XshbIkEoLoWbSRKEQhFefmLnr/xiEOj97r5NTt7iCOtFtsbDUpgiE7ny2FPM2qraJvSVUr4OOQx04RZu5cbYErGSRF4pBuPhVYtoYRMW4xD8pg1bats34PgSXUYQpiEPPkGYgmu/5QcOTN221bbyParmLU/hkaikWRNpcT2TYF+ji+yBA3q2uDybecJpLWGcPY24sto3gw6G5nj5Kw/ZwAFqZCCyGMhFW0u36tMzt/aDhQ6YjBeab9TQwjHsogV1towoSxqJ3EhJx1JVG64VPotBo1XbfeSzeUspCIWmoI8/QSgC6qb7gi/+poKOZdpgaqzC8q4BE8pOXN+jnLz9EyMFTh+WjiWfmMxVOJnYEAAQVZS20QAhov/cJdg/6PhdpZTWGhQ5qMzyLYSZDcSzyh+YAhkiI3kFFyBNDzQpW14Ua63gsvMHZoXb8uzQrZnufsN76Kfef9N3/1jeEglCcZEXhiCkol/43MZ3/W9u0Lns3GgrC4OWGMAWRBruGAwNg5jg9mmOkyHwpBOUH1GzBh0XL5ptMUDK61x59LGqIkajtQbCMAjWcCImLX9g3nKNUxY5hcUoi8XSJnVod8k/X0V4+29ert1yd94SCUJxEYVQENJwrLd8n+9YlnPjRuuljlIbazf+FHJmcoTFCEAj+hIimii731QFKa5ljX1YIgm65YhlY9JIGDk0crSz7zVKtrny5Yc3yQqxl7IiCAKLipc2acmWwNkVeHENHWVGC1vOlkBmTNzykqdwlsA5769mDWzfVOy9PdhEawN2Tp+ksIJQLkQhFIRk1N0fDL/4/6mwY13/aqXqOLrbxfSgMoTJmyAcj37yvnG/yknfy2IFQASAoVLX+zwp87QDgQZ3UGBp/eIrrUuvGIqSqhMplaHFqSwWjyM54VWCq2IJHNUDTy5pRNEpzX2RMlFidShUgU1uA65cr7af+NvfcepdH8hbVkEoKKIQCkIyBIHz4X9iBQA7F/a0hbzRLaBFQlgDJsdfk2EkC+0/eVwfVPIorPr6paefYQuMMcYY5dg6lLygQ+J6oHhkz8yoPTBbc66QN1qxpc6GexUKcEPh/f9+f/ezkpBQEJKRAa4gJOE0zMsPNO7+Ft+qmbDtBGg2uk7LZjXfcIEhFhI+tslQrU9S60gD9YmnExiNYGQYx+O5IKKJZu8RaTzcEQ9q6E3w95o5ISoSATAgACIQIAEBASESIsXrGY0LyuPXDQEQNYQAzGAAe+IyAoDh2I2BjNB3BAXAyABByP1fDYhIpuKpzsZ+q/aO++tYD4KubWPIGarBlNIVU4whaDLxpUsLUoUakRM2k7IUd0z3G8tCsTyKF0ck7Tqa2cIhnVDLMac893Ki99iINQwxIOeX1yXt/uK065uMoZrrXwW0vYrrNu3rdndz54a9z//OSf4UQSgLYiEUhAQqF18PjYtBu+1SSI4LVcsLuOXoeeuRqKTCCZMYtDNtz0CXGFnFl6UwKuktM+2907tBRo2KWmsCPNzfC16+2tU+2VYQhEplOKGZT1TJ0rjkCUIJMbSPbJmGaYfXle3fztZXf+FH6u95f95yCUIRsfIWQBCKCNfPXXjL93i00fXbDKFlzDZh4JogkNz0J0Kau1vxTBKFInGuARGnqxh9E92xzjtFjUFUk8rVQFQeudhDoxwjICCDQtCKgIj8dqf56JO1d5xXtuu1g4ptGePPJWfRdK209PHFkhKgeMsCyzGXnd7fijUnOHn7n5Dj7JIddBXgvmpZXCHacRGvdc0dv3/9ifftLPWkglBSxGVUECZQdf3KV/zbv8mxNFi2CrRT22l3LQ82FAaZnAFTbIeZVL7KSAsBAAAepTJMtNO4c+l4Z8N0P12MK2ypA1wE7NcwdOViGLid4UBmZJjo6YNC/QiosfMyoCI0rEmz74c3fN19PhCaSAvNacVXVhMTaT6gKeS1LLB48zBpDTGja+iJMZ+L47JBLpI0kN6x5nQNTaPCrgNnm+HhKav9io9Y9xtByzrzquBznw0gm1e5IKwM5ZhmE4STxL3hDeDcUNu2Ae2Opyqkfd/XFXI4swkUScu3INJw2ZHoTXrMWYnpHqoD4hFQegUQx+OpMg0uLDOjAQLsXrpkrlwxJkRQxqxsUJlBsNCxbdlEwYomN2E1WDcXZW5bbevaOXez28FXq2o9UIfodH7+H97wEclQLwjjiEIoCOM4N91//pv/zv6u39S2siqE6FhtE17bxGt5iyYIy4LHNLRkZsznllTVRKzRdA0HxwNmMjPamoC0v//oEwqRiFS63SqzgW9WeQVnzh+YL8VTGObrb/lRFjlzYtn5OVPonjm0OsRhy0b9sq5d8WunyL342w8GiACvXvbZBaFcyANLEMbRru3b9i0VtwpeRR90VP3QKLbON2npCwglCI1wHNLWEM7YhTIxtU4zEk7VCROE7JcnJgRbI4Btdr/ymAl8i6h4S+1SScvXl5clsPzkEwQojaIp0vPKM6m8npDjxZInSqpdYEXXg47n1lX1lZ16+zq1bdv72r/4P+nD7wE4m9WJBGEFEIVQEEao3vWt7U//oz2HDjsUKF3BbscoW9mbYc3WXt7SCcIRpEUZTXPdHCOTgWBMA8TxnUcN+KJhKzOP6YqGAZUVQHj4teeDdpeZtcluFVBOFgxBEJZHh0K0dmy3fqHbMH7Qbet60HC7GxX+U/Mb/zFv6QShWEhQGUEYwT5359a7P2YZNBYophBtGzQZNtjWuPyovGnpqUpjC8mLlIZbRWMLIibk/RsvABwLwhDL+zfSkwiSjYcMBpCxn1vPAI9VCH0Fr3/4aNCa4Qce2icRGAwiAw2DyjAzASJSTw9FjOrqKY8IDAhIzCHbgH5oKUcFWm1VNm++kWBDQ0bLCDOKmsIGgZHMMHMgMWIBg8QYziKN4jIYRBOJEpbo5QaJSc0nmXxhipY/MI15g8dMtumCvyqj/IFZgcZC7pCBtvIJbEIFwKGCs48H+rWnW5/5FEhoGUHoIxZCQYhRhc4jv42uTJQIwpDjOy33tcfxOyu95pH9zMjMtm2HfhDYtP/YMwGEmufOC3ryFELJKiUn4gJakrWdQsZU65c//jH8uz+YtxyCUCDkwScIQ6rn3wI70OkWb6BJmLwJ05GopBkxag88Br3R9sSqpaMG4kQUGRu1o/xnLrWuXdVUjiijnF/U0KKtbROyRa7vYhjfUPDk5pl78hZEEAqEKISCEKN+043v+WUCO285ZkWC0Kwrx4j2uSiIGFdmNDATHqXYJDmGDRW/6S+goQrKimyjukGoqq5io4Lw4JGnUUnU0NUjz9gwA8qiaCW6Z+bp+luS+6JCePcfnq5VL+QtiCAUiMLdqIKQHx/qPPTJ61xxan7eksyKGMAWpOQNt4Dan9VMwYyZBkd3TilAk+Vj1siePskIEGrDrIlsT5uqaj7wKIad4/yQ45AWNTTK2lecqKGlzSuYc9RQYTVIU+w5xI2g+tJf/wD9vb+bt4yCUBREIRSEAb8J4NWqnWZ76eklBOH4JGliowbDiRn6GXXCBVTHSQP1mE6YXieNfp58KyETGmPcak37AQAEyoSXLgdXr6RLI5bAYlKWfH0Fk9Nw8pYXJY/KG6Jj/Es2++e278xbFkEoChI8QxB6OK/+0e337oWmSZUAzfIDii4TTHEmzVuuwlO2FpoeRzVmdBuMHWccRPIMdr/hnzS1WEwc7gkcc2uL/sZIsFFdcqhbAoNhcmzwPLYI2FAI0KhsvOa2ZPEzcptLDUI5lTFLMy8/2G2Bo4aOMSWG0Ki4UdMvueXSvUAL9iAo2qVM7Vv5tNu83rwBQc3q3vawG77+riu/9A+WJJUglIsCzswJQg4o+LD/1Z/tEoJT4fZG3uIIwrKYfV5glpJzpT2c4yyjVjgTalYYBEGFra6DrkFtw5XHnp7xFDlSHjfkInFytqaCWQJTKMuaxrJQgc5lq3pQMd6nvgz/1f+QtziCUAjKbQYRhKzQ8BsbwKH9rzhsVXE7yCq/WU6kDkNlCDGdtIYrpLUFInmjtIP9UWM8HKgZXO/RETYBxkeTA5VssJO5lw8QAOM/ncEklh8sk6MorXy/Xu4vA4sOISZmBgZmQgZEAwBsGAAYCRCANSKC4UjgqH5EVMoBYDLsO1YlQF9p0IZfuhS+8qJz4VzIljKkCHwIgdAycy8+G/zE+OUnTr1dZl8WmG3HwRy9BBMZ9KtxN9o0nWq2K7O2Trkp1zc35440zTynC5SVDkxsznlbIcPT/tvh0+/KpE5BKDviMioIAADWrT/sfeuTVmBtBpVutYlmRW+Ngo0nS0Ox7TyT+eJTSvU2HH4+ukOMWgDTyvd1wJSDe2rq6FeRm+holdz7J+lEGO1nBmADjMBmY6t2201oFBChIuN57NoqNDxnRpaxPNnE/c8pEwS5JZQv2v07zDk+gKbeLYX7AXkLMErhmqdYrqFZ0aoo30Pl7t548UpQeU37S7+Tt0SCkD/rOg8nCENusu55W/jM/9FoN3booGlrTcXLQ5gVks9wMUoSlTTNgfOY9RyHI6tKUN76e4bHRgbP4cJCQkRg2nvwcWZtOCQCzcYhxbTIWtmecbUfLHRAXvkDS8NIBpEiOltGiMvlEZQ8SMy8nOsYnzpoTpNz4cqv/Mgtb/1Q3hIJQv4U9PEtCCdIGD78Qv2nf5aVrbqbFcU6rOUt0kkj+QyFMTLsAImZKhARptQ/LaQN9ZITEsKV6/7lq6yMBRgGnqq6FGg9/2uNDJGRaKILkKYHmpQtL4q1VrBw+QPTWNEou01DG7bdUpZ3cPiRf+E/97nfzFsiQcifFfWLE4Q5sACYNu+zwD1wu3Z7I6xqSxfw5bxMMGVbs2aYn5SGO1lVeoazjVxITNmfUHM//Gf/7zldRifOO6ocDpY49lYqIg4KMPfL974kAAZCAAbuRe5E29e6Xtl63WvJM2w4dJTVCQOb0lLtpUfjLJhraOmjhhZN1oLNbRXNOFkw19BlG28t4rBSqwbPwcbptmmfvvddL//R/7PUMwpC8Sn9TI8gHJcztwBccRu3apeqrc1TFdtqe3nLJAjZcJSVb7mWk7SzD82P/QKTfpgYD2cz+MgEhIi9qUxNfvOhJy0v0GAqttMNA0IkSpd/ZouHuIaOMmM/ydkSyIyJW17yFM4SuGauoWkY0zaH1wxerFy93troVO5/57f/YTdvoQQhZyTKqLD2XP0KfOjXWHdU6DlUuYRoHKPW7hWZTNqAXpbfrA+ImPnlZgTkkZoRcRATlQCZE04dlYm0EATFEAY22Ff3Wl970b31VjRoGzAWWbz4CPeElcDCRQ1dkNH2Hl6ldac0z8mSRw2dF73VCNq1Oh/yRiUM3TPV6lV54wtrjzy1hXXHue/7z4W21WQLrdZGO8DLp/XarSEUVp1Rw86ca4GWsZp0YLaZK9vhMOMFAoIKySitrz75VbagG/hVtDpowF8kZ0zcJFjUmEEFZNQeuJbmJqF01C+za15pWo3Ap4YKHg8BdbkTTQnC8RGFUFhr6PTt/pd/ta12uV4J29TFylZoBTKm6VOS4JrF42Qbrlc3YeIZFCD0Ay1GI3iDholNP57moGSibhZV3nPyHHWz7AV3idUwVKsi37jRnx95zAFS70tGAIpSDfbOxQwAJnYDRueNquUo1Ggs4pHLm13utP/si1bIimoQsEugFaJO3tKiho4ZBvN37cuNNNfQ2YLEnFTQkaK5hvbuIzPcyDDlaP5Ncw1d0SAx87Jb05apbXoQ1D1l1Dmv5QF+458GecslCHmydg8CQYhjrj3pvvOHu04t8LyKHVa7XteyWkZcqQVhVqab+OayLk4pHP8qGvkzgmaDiL7ntV54KQRDlmJGhXL/CoKQChGxoq7uGG372nsJK2cazoEvE8HCWiMKobDunL7t3cp0jQmNU6mxHRKgkaAyRyH5DBcjP5PrlPgusxQ7qtqJECOx35WYdmKqJFNeTDQYtUXxR4lIB/61Bx4G22hgYFXAhXmDDIdjW34SFSsNQxplyR84aU8+odA6JQkSU7Tr2PBDA8q3AlZOp1q5pbL3Yiv0fT8veQShCEjaCWF9sV5zv9l7qX3hG+o1siq271tK6xYGDUsZJsnDsAjSPIuRnUo4WVO8144pYpSqmI1fSBx+Ndg1ebF7BybIMKZ2jnzJY5+ZIx/V+IpBjk4YRSalQWoPYgKDAN5h59xb72O2mAh1ahj93NJIFO6+SGsIA8BJW16kPYfzIeqBRZEG0jtW6vtLAADoKq7ZzZDdWtvlIDSm0enuB088ZNdf1Xz003lLJwj5IAqhsL7QG99f/4t/HfEUkN0Kryuv6tZsHwAJ0+dYCzeyKxQ9bSDntHxlJLN8hokKYaQIDjQ97P+ZXn2yQji6a2TxYX9dH86idk0qhH2RhgUQCYB7MlL/hBgpnYjADMBsHEVhGHLH27zrte7maWOQUJucDLFUNIUhlTShivZ8K1jjFc04WbD8gWWB6PReEDRcw35AdVSd66frbkh3P/nx9+YtmiDkRuFcRAThhKhcsNztg5ZT7TznsFFKKbd6aHzbhBYjY/JWFlervMAU8pZLWCLx64u9e+SIYvE9U9cN9qcsGcfKMyoEZYxhtENjHNT7Dz2GYDTzlDSEy6ZornHleV6VRc6cKIlraFlAaIIV+m22qmdr7WsH9Rses3ag9sItf+OfAJzKWzpByAexEApryc6OOv/64MHfO/Oa++uW7jKztpVbMaBd7hptcdqCq9QaCzZzXDAwRVXMW67Ck5GFMGYc65njosZPcxllHh9rYuzb/qfUPo8pztXD7BEjO+N7hjbGmMkRGZlMrxD2TZsMgEYDkyGtSAfNcPMNb0DbsdDkNVIW19DFKJrhLU2HT2tNmlhOwNl6RpTENbSAyzsTaYRh27Y3sLqrOwHqKh+cMj4gPvIj/239PW/1v3YZoJO3jIJw0sgMnLCm6Otfrn7rx7t0/nn3tW27YhuX/avKBIwQqM28pROEInJ8HT4xhs1RMWb6MMKoQ6plOUGgLcfxjK+vXG0e7hORZn1MIQVBWGEOlG3rQ+VbjaAF1sVQvcpvVphqd/zuLzc/85m8pROEfBALobCm2Hf/pXDnjQ4cOrqrDDAxgAWADDZBerQxxMQN09aAieUwQppnQeZbW4gYRV8Zfk+9FtYIzLHmjiwYkTsjT9gUEAlx1OyBAAiGOVY4kmRitSEiIDIgI+LEBe7ZEBCgL2oURiY6cnD2aP+wbtXPNNG3JzIAAhtCFfghsmtXqRvYNcu9/eZKWNO0XJ0QDQ9yFca34pFoBsxOUDQJrYCTHaovDac9CIrFvMFjJtt0wV+V1p5iCcyGfjMyE7shhaxsYg9MF2xm5jrcQKc29z//OYBm3qIKwkkjFkJhHVGbdwSf++VNfCVvQQQhY/pL7PKWY2amLDsckhwThlAbtVFzNIRGa4WvPP4MBrqrJXz8SSGJzoXScHS3pJZ+7h9/4tz3ft8JSCMIRUMe3MI6ol95YOMbf64dZpbAWoKpLIjkM1yMqfkM4x3PIBgEnoibu5hFa5ldmqb+CQAjam5PktCENlmGGNHYGFy6Grx82biZmS+KFyRGyBK5vqtN7JLiLNeXiF//u/+mdtPtJymkIBQEUQiFdcR94/fYFVtl5zplUjaJnifkAiKOWdQSZygWUPCymelgBJ6sh0ZFGr9NEMePUkoFnm8IFSiNXFfW9S89Qu5xpROOSVkUrUT3zDxdf8XimjHzvXADtFzvgjq1vVSZBKGYyINGWD9e8/XeA7/uVS64TmYWQiFbphrAhFmZbLREnXAxtfA4gvWYuKJjGSyGaSfSxLCVFZjQsdkYZFAO7T34mOkcZiAbAAAQJ2+CsA6URbHPauK141Knev7pH/+unR/4m8uQUhCKjCiEwvrx7Ofpr/2aBVf3g51ln0ryGS6GuOAen0FzzaJI59a2sQSDAFEY/TFhRu6LMSOhj1wF29hkQm1ZVifoqsNW+OIKrw0uy3OjYHIaTt7yQvIKZkq64jrfY81w1Queuu0zz27ddM+SRBWEwlLAF4kgLJ16a3e70z0Nz+UtiDAfoijORVwnHKiFvQyEx376Z9bsYwprgk44cbr+IcYYQwiG0bIREYmVxbtfeXReEdBw4jZvPetGeSxIwjRW+jrOEY7V4c4NweZNrR3aPLNUmQShgIhCKKwXtQtfDwAUVF+sneryqbzFEYTlMmuKv0XXEy4i09SNFDLZAAAgAElEQVQaEDFp0dTEnn7u+hBZBQC2CnTo2k7XhFceeeqYUgkzUzBLYAorrfAIszDTk8oGf9+2Lofe0z/2ndvv/uCyZRKEQiFrqIT1grYvvvpNv3a1cn2zbXtuaIX5iMEpI2lMjR8g3kQAU7wfZWgXEW+gfnAMROylnMXhN1FOQgYd/Wlio3hkMMMGjXYPu1/PE6uX8RCAiZlxYl1dpOmZfq3EJr5fQ8/+1jfwIgADsyHGXrZEQjAmUvoMIHM/hR0M5UFUhlghGkOhQqx2dYgWQnOv+8wTjdteG4CjfVOpOn7ohWG4YbtBmNMNPzfyHFiIFKNubk4EaV6gEidmIXjudeTzvRgOXafRDLW7+6bfOfzSNzbmPJcglBt5KgnrRfOxTx5uB24HWuCr7NJOCMIKMBg3T/HFzWpsPW89U4QxOF7mpS8/6tsMQWARdU1oMdquIxYhYc0RS+l0am1EMhXY6Ji9vGURhJNGFEJhjWi86h4A2A1qttpx3FOOlVk0wqyQNXILIvkMFwIRCUa6GY7mqyhD3+sNZ3tiEwJA84mvBoHHoC1CzYYMI2KodX5CpiEulyuBBInJFGZM3LI7Q3KiKId2fafi6+1N/xQAnHrvt2R3RkEoOoV78QjC8jCbF173ff/TVs2/HgamdV0HlbwlGkfyGQonyVjKtZhOOJyGOFInzNBmGK9qcipk7FsYeshitPIQUUX/Oq1W99kXtAJNUDUUGK21Lr5qGyP9SZAPxXr+FC5/YBqSV7CQpPXmfafq6eukq3vulbd89pnGu74tb0kF4eSQB5OwRrQe/INnvQ29p7je3aw0WCxIq47kM5wdM/Fn6krXnLxGEw9nBEQ0ONRmgRA4OPizh0GBb/xKCIECZiaS992KIBbL6ZSnfZY90TDfxMr50HasSouubtpnD/Yqp97x4ewkEYSiIy9IYV2oXHgDACDf7NS145/xsWPQz1uoWZF8hoshLrjTGRsjTiqB0dBpSqMtQzmcNBVOOV1fDySAnr8oMGkKvSefR88DAAgDILL0+I89Wcpxny7fVW8+CmcJFNfQUjHvXbcXNK0gON894xxe3/RuIGO9+Q+eOTlxBSFXJKiGsC7YN75t+03fe6A9g77FbZ8rBtGS8JRrSZoaU8hJ9OXCzPHWiOwIkQqAHCWBGEYrjbfP2J8Lc5x64sciIkdeo6BRsdc+7DzzQv3OOzwFDhAZbQqnf4FEDZ1Oae7HnLxAS9M+KRRNfm+joULT3bzeCaHq+l1nl/163kIJwglRxDekICyFyqZXuUXVfOi2yZwlQFDtvGUShDyJ5sunD8s43UC3sHkwq3oiJqVXBJ2ge+Xxp20NnoO2ATRslFiGBUFIZavTqoJ7xXeroQnDl7l1gYw8NIR1QeUtgCCcADfVbri39ci/Vq//JmVsh/GapRzwiV0su4UQMXFDiJK2TW4l/71ZsRbNE/thOPkNAiIzABIiDX55zwMTIDIM9lQ1JEBiiG6XKDkgIREDc+9IxkHfi2t30c7+1zA4PlleBGDA6CwG+sUMMBD07JYcxbvpCRzlLOx19/4vAICQ3Ap39StXzr7n7YqrOvS4QnQSQUYppWMZAE7a8qGf1HFyy0sehugK9jdi6GekzAM0yb6qnHZ9hWksu78RmMTV4vPW4zs+e35NnWHvGjsXbO21n/nK1pkz17/yn7MSVRAKi1gIhbWg/dJzt3z7L2B1w4Q+K7VDLdsEVrhSw39BKDKDqfborjvKKpj8bho/ajRGUP9b8n3ftm2jg91nn/NNaFdcZlAycBcEIR3drSA53fBls3E6DHb3XLjlrtc99ev/e95yCcJJIBZCYS2oveWD/g3vONz/ahVU17YtPzSu0hbgijqEUGowFdGBp5JicS19s6V089jukcWBY/8OoNHM9T3LX2Tbi9WZ5hE61o5JEWLisvRUPcShAXfsPEPtMirHvTWQmgPXwjA0Pljb99xhKycIQxsts/Q1e2nPk3w6ULozcLGee8jjAp2Q/TTNEph+wAkINUnR1trNz3Lbbd4HdFp7Nox9qELL6gaHDm2HhNjUjdrW9t4Xfi8LMQWh0IiFUFh9tl//nvYXf8m3X7x45gJapF0ysNXuYLeIiaqzQfIZCktieszP8cL9keBCQUonu+X4ntjhI5qq4zh+oImo/dQz7LfDMASgExlVS/7AaRQuamgakj9wIZad7oI4ecuKPWjvkGLjqBpVDsyGT3T9hWf/6Y+dedt3ZHYOQSgq8oATVp+uxld/5Be7e+3mAYa21j4wmtNY2zK1vEUTysG65TMcMw8m/jk6zospGykDaEScO/MnE/bdWAbuoKN/9gsCAIBBiBISWkjMAIR4eNB+/nkEY5Mdcjjf2YWsKU9+PGExljwBseS0H8ppvMztCtbqQeA6tX3DO1s3vutfX776X/5dVqcQhMIiLqPCqqM2w8sPHtz2nRcqDbRCT7cBzqlKE/wm28as26SvBKFZiNR8hmVpnlSX0cEX4y6jI8WGPp9j+xPKj5gEx60/vZwW8QNGD8corExvf3Q040jEmJFuyTHZeh8ZgMOAlK1BO8wBqbN33g2WHRqvl65wDtKCiBTtwpck2ElezVYS19Dyk027Eaf05jmtyfPONShlKd31A2i7jdPt7p6zv7dR0ayqW2f3vvhZgGCu2gShXIhCKKw0p26tbp0PfWf7DW8F3+uEB1V7E9gOuKWcsAXKKmRuspMn/TVetIFvscAUVTFvuSZIX0PYl3Ykyuh4sf6PojHdL6na0RLjCmGiOBMqZX914uBoHDtwoJJx8oGhVsrx0ScIwoNg89670a2AMji3VbdYawLTKJqNLW0gntaaNKFkR2EpM7uR0hSJgkUNLYuxdNlRQ3FuBT4blBeoqjJsuei24NCywPWDGl998Ed/sPHOb/KfvwrQWrYMgpAXMhoWVpxO9/D2b/l+4+/s1eph9XTQIYdedj3XDWtu92ze0gmCAJAQh4Ymd06WRByZ02SAyLTgWJYxzKR8Dqz9w/3ru0EQKMlDKAjrxLwuym3XrbQtQqW6l3CjBsGN7FU13XLXb/3p4Z/88QkKLgg5IBZCYcXZuOebr2+/R1HT0kYZBsWGbSAOAZC6eUtXGMSVdDHK0jxpqhAOrITjRppEU6fhXuJBnDgeAJg53mUYJqP/ISIhEgMyRhsPPEgR0SBDlLkQoySD3PvQN+0xGhzkPgQwaHqnx76TGTAChCZEBZtGHTqqAqpy2K687a5K19VoOJ5f8WgSkwdmd3VTLSHJ4hUtf2AamObyl8Jkmy74q0qSP7AslsAJaHq7pXXPdMtwNvkDUy3SqdG2k7HYBAQIhpULmpG6aAFDWMcbadvZ/8KnxGtUWGHEQiisMtXt21qf+5VKfT9vQQRh9Tm+r2xivopeDJuUb3uM+oISESJ2TQiBRqWuvHTJaXa7EECKopsbEs1SKA1Hd8vSRJGdE+O9+LV/+sPb7/6GvAURhCUiLx5hlem8/IWbvuVXw1Ynb0HKyrwzrEIPwuRNOArV72CDf8d0vcTUoeO6olKsjbEsm5QB3dk/8J96IbBXNs1MXkjU0NUmdklxna+vrfG+T728959+K29BBGGJiMuosOKou99F9fMciqfHIqQ5zIkr6YLkFmVxxu+PkC8t3GjagTN4f3G8toFaF0WUiWmG8Zg3w2gzHLcMRv0y+pJA+1pVbNtg6Puu5Rif6/ffQVpBbJrjKNlyo1wJ5YviiAmQ7sMtLMYRPqLHpCxhmgNLqSDAsxcPPy8Z6oWVRSyEwsrinH0dAPiNV/nNZt6yCALASuQznEWVykbXoqGdMH5eRDSYnI0wak1EZEZE1IBsjAa2bbX3zFfp4LBXav1MHEIulMeCuuT8gWBStvlYenumuXAr57C28eIv/NjOR34is3MJQsEQhVBYWfwrj93wXb+KB/vk7OQty6rRjwgyvi1/YFFuVsYFd1LmuOaWVmZeIm0Ze/0KIGaINNjrWmOBRntnZrBt2xhjgtBxHD/0QPvdp77KPNJFEVVR+2fB7iPDyVteLDlB+bqRrmhl82gqWG9OxWDy1oJNDFq3//v9zVtuy1tGQVgWBbwlBSEzfPeKvelZ/EreggjCNJauKJbZNMkIQBgpfvHlhbHFhOM5KhCRAZQBIgsVhahRmetfeWxgTyiIlaY8FiRhGit9HedyGS2JJXBO6ubaeWydg8Otd397XjIIwrIRhVBYTawb3woA+8FZblcVb+ctjiCsGsswbE6JScgIU19YI1+h4W7gK0Bl20EQgKW6xj94+jnojzWzE/mYlMN2UrQBunDizHSzl6M3z4/ijav+DU2w/CcfuOEjP5W3OIKwFMoxQywI81J9+w/ZN7y1u3mtdm1D1xQYCTCYJ5g6dhQvr6ks2ytvVP1Chr4BTcf1vbShP8W+6n8YuaDxA+OnYki+H4lH+wP2rHm9enqtYXC4s5dXUAFGpzbGMDMSMDMYRsOABoxmEzLz7e9//8ab7/HZVh5CRSk2YcfDmgs6n37IRTPS5ugFmkiaF2jBMnOURTdedn+jjJ7nS2/PWP9JjFo8hu90LY8sMEw7f/ZttSUKJgj5UaynqiBkBbvbXEXLD4ylCO28xRGEFSevlZBjvrWTf8Y/XHr4cc2GNLMFYRjajFxzVDkG80L+iKV0xZhFGwSAWnvH4s2qsrumefvfl+QTwmoiCqGwguzc9Q3dP/5p36s09BnLqnfN5bwlWndWJpjKSZNTPsPxtH6zXakpkWaylSdlZ8LrLL7OEBFbzzzvNw8ADTqWAgRtQpsgWLr7gCgSRyBBYjKFGRO37M5Q7rWCg2gxQ0mmLql28JXAwa6x6tqq3nf/mz79/LIlFISTRxRCYQUxWzff9p0fr1Zf7DTdgC9b6kzeEq076cOHVV11sqYk6oTLUxQnGO05UeIKUIg9K6Dre/vPfo0tBjAuKo81aHMibpvF6ufRWs3JrXCkpQEQcqVYvTmd2dXWqPMTJ2+7bsMLX0FvZ9fZVXXtd5yT/R2CcBIU8BYWhOMSVnYu2+dVs2o3ApuqWssCQmGlKF3Q0BkVxXkr7OeNiEMAZBAQKMpJODRHEyrU1778GLMGP1RsuoptDWBNJq5YccRiOZ3ytI/kD5zOHO0zZULkgqnUVLVt7Tfcs63dugpl5CysINKthVVj67Zvbv7xzx1i3dLUDik02rVEISwoYjlcjOW74I63fJLqlSrb7KdZoHDSITRejNFg1EoEMFSVQ6X951/iwxaxMcZoi1yDGjIbmC7fVW8+CmcJFNfQUlGWp/Ax1daBJTCN3bDphOZsCKr1ylaI/hMPXfhv/lYWggtCgVi7mVFh5and+o3n3/C9rQY2sOrZ10JTt7UusvFknUlTbNIvVwEn6YvEvM2DU/46+gRJ5RnSlvzFi6coJTj2A5LES+wcCBiXjSMxokMQEBgig4QKyGPr7NnGDRcNoiFUiKExlFnA7YI9aIpm1EpNKkL9yzW2LZdCGv3mYNnij9+PRYVh7v5DPFJoeummuwWBolqnxXbd3jDnGk/99x/K9icIQu4UcK5HEI4FVzbbjZtt7e/518g7zw4q6OQtlCCsF7OFgUndOb3axDiis9RmyCDz5UefYjABgaMhYGMVTYsTBGGZxI2Bs0w8bAWXGrZ/2a9XIWDPQ2/7zo9LrFFh1RALobBSVG68r/nw/0t3fZtFUOVw36pvBF1GzWDlLZowB5yyYfI0MIrlsAdi8paa7R0BEDnWklH5pAMQo3SSkR8m9tIWRpcGjQHDwFFlOJKWcHD1DECyz+JAi2M00WJIjA3TEJGxfwz2+gADAhKAZjZ9V83oCIMIvVyFwP3SiECIaOlqGw6d/f2N+994GrY7jgEypNW8bpTMaf0wH6LWxtitQgzI+d0VaJJ9VXOyBJadZfc3ApO4Knl+OZfb45B7Nv/++chgb18icTPgcVrNVGxvf3+7sh0YrcHd8MN294pz9tThVz630O8QhCIiCqGwUoSHL1/84Cc69Rq02zY4RKFBDNQGcZi3aEIGiCvpgqQ1Dw7+mekAZh41wQ3+jGLaIAL1tNKe0rjA8rAJHRWQY3KOSmvGjowk7yuufdF6uzEIAtfFThBUz93onL+g2AQW2Jp47nV1RdRhcOJzfgrh1A4nzM1y260srqEj+hzTkVkEs2q1bps2txvt9q4mVbHoWk3Xz9Ye//G/klH1glAIxGVUWCUqtbf8QKtyU3v/koOW59RsHSJpDv28BRPmQ/IWZktWUUnn9/mMhaJYStqAKNrN5BkBYBhMZiChQXDJ0cyHDz4ROCFoA4iYrg2WJdrkpNl1kViQi5y4HEFiynIdy0Je7RkLGHO0NpghZ5TVCn3LUS0T+FVzOgxb4cVb/8EnT04CQVg+YiEUVofavR9qf/m37fvecaay0+nqdoXsAFh3bVvJq39FSHGJFFfS6UxXsGe3EE4pFl/dh4kFZggqMyg/JtKkhbAvfGQKJOhHkZk4b9/HNNpLiEYDsml6p+6/x1YVM00fBJg/WMVSwYxc4LIUKBFxDV2IdJ0qm6ZLdaEsWA7KuKN5fIvdjzORVYfzKcCACSrbFRVe3w/dOgRNbB46p04fPvSfMzqJIOSMKITC6kC3ve/UO79/r3UIpmG7RkPFptAi1WGlRDFYacSV9DhkohD2qoophDi6FhFjeml6/dMUQkIc/Ns/Xbz6uMmTETFaFzWYGEAGA6x1WAHo+F33zOntm2+GEELSlOosUzAdpmgzW+IamjHLVaQxbW1nwVggamgi2TWcc0C8hcoPglrd4Vb9jFPR29XH/86HszqDIOSOKITCqlA5X7n165u1MxecKpDf9ps6PA1OSwWBchw2hfNiEjJEgtAch+MrhENj4zQL4Sz1z2IhjGuB8TWNw+A5OFhNCNCPcgOAaIyxLKVMaEh7be+mN7+FjdIOoymJRSuvbju3IlG8pisHxbIE5uVVmx4nJnl/VsFj0rCUBS5jp+XpnVPcuuQGL9fChu/aO2f3v/AZAIlQIKwCohAKq8H5xtnXNZ/4vfN33E/d0DPtWnUTlRuarsM6CDSSdPVVRvIZLka/lSaaLWUgONGiCVkHETFmxEtRCCejJkZ7+svP0hTC6JrGnF1HNNJYNsJ+HBkARsC+2sjMNiifAoU6OPR37rpXVTcCx2DBRnRpA/G0/kwTkxy95sxKoJK4hpZlWeCyo4aWxRKYxlSFEAFwTANcNtWuDqsBaUVufTds7YCuh2HIu4/9rY9uvvObvecvA7SXL4UgLBcJKiOsCIcvPXbXu//2Hl681DjXcS76TePws7bvgOOEdj1v6QRhRUjJ+0f9+C69+DEIaqHgMZSyLVDPCNEAEhVBN/SICYyjzfWvXfLCUGs9f/2CsPoUMxgPxdYLn4xCeGhv2F6g0Km0nsX6OQ9Oa79hw633/NbnD/7kj5Z/fkE4CcRsIqwI9Td/8MrFr3Nxz9WeBT5boKECSmsDCkJxYVpP0l1JSzNZfhL0rUnDoV4/ecRgi8Zg3EvoMLidBnP0UfY/7mU9RDZgGJmQALB/DEVBURiYRs23g4A0iL16GJkxyoTGAGwAIisVxs6OiAaHlkDsVQ7AzMQU5TLkvqdcz3sYQ8V1H7x6Re82q75vv/V1db+qC2Y8mTd4DMN4h15woFyS/IG56ySLckRMlDTDYbpleLn5A5cd7dn08mWOb2nlacp3y4QwYLYNsLaqVughBECG0bPR3Xj9W67/wb8VC6GwAoiFUFgFtm7/huaf/0q1/spIaPulhLkXVoOsLFFC9iw64ky/fP1wM4YZDbOioOtVKpXDvX1zZdeXJUDCSXD04yVRGS/YZIUwRPGGqtQufuSv5i2IIGSADICEVUCjvuVb/5ney1sOoWAse4Z73ZjSnpNGhuOYcVKu0ZEXbvyNNqyHEQAYDBH5hBgCuXb34LD9xLPayS3iVDFd8oSsiF1SXOvru6ITtc2gWb/zjZf+5c/kLYggZEDpb0hBAIDmE/+hZR3adVkrKMwEIyZuYjk8CpOyDZkc744p4VMV8tT2R0QFiEAQyy8xkZUeRpYyjp8OmdC2LA9MRbmhNhbw4SNPMfjztECWFM4itKID9/yQBwgAgMHkLQ3i5K1oVO2g0qnd/tP/Nm9BBCED1v05JawA9pk7AMDbuMVveXnLIghryjDy51gKikXtsfEDFeBwOBjZ+nCgFqYOuCfVRSIyzICKEEMOLZu6L75krl9fTEJh2ZTHgrrsiaSjJ2JmYentuaITCmntFjiVK/rqxr3vuPc/NPOWURCOS+lvVEEIrj5x/kO/yIdXyLohb1mEcpM+7BLLYQbMqxwm+vciRtkHx/ZP2gOjP1V8pwLUWluWFQaGLEuTCbvt5hNPzyXVIhhO3vICTfImLES6opWNd3pZnj6raglMY6tj1x0IK1UyuXkZCEJWFPCRIghzEzote9NWuPyBnbDSyJrDxYiFCc3GPDhR+cQAOGYiPIrhgcaETKQMAilSKjAhOnDwwGPHF1I4DuWxBC7AXOFYS2IJXFHmbbemuuTZZOlma8eCQJpXKDeiEArlpnLj2wDgwOyApzC8UJ65VCFfpJ9kTFwVzFAbnP3UOEsWJcPKsozWlmUBQIiMjnX43EvLllAG6GvPTPeCPJXKhR28uhpWgCpPf13j7JNB3uIIwrGw8hZAEI6Fc8vbTr31Y1fMFdRnPGdfmbQuPXir9mdbI/+o8i9vEBZivkn3tNJl7z0amLinUDFOJLOLgYjIw3aIjHOD8Cdx3Sb+2URVDnTFyN+TWZMh7u83zNy7D8fa2WBPlUKM1hBSVKSvAYIBBkJmxp4sClhHLmrRv9GvYyYAbZgtmwJ2bNXuMNd8qAIdaNjyX/LRr6Jy/daeOlshssJrB3b9XFg9oNZ8DZriBZqbkTnNC1SeewvBsxqlh0csRY7cifWfKR6hA0rkBToX7Pz/7N13vCRXfSD63++cip1u3ztzZ6QZjSSUBcgIRAaTnQA/EMHGIHYdntNzYNfPfux69xnz1nhBttfP3vUaf9aLE8ImiGwMXmNLBIkgQAJlFJBGk+emTpVO2D96bu66t6tvVVdV9+/7qY8t7nRX/bq6uqpO/c75nZ7yfOWYT/kHb/noF/IOh5A9oasCKTdp1XwH9juNEBQfagzM6jE/EYPdSd7K/Ux/rTXYt3a7u32i843/OmZ7b02trSEKpVJSITM5N21LG261UhMrR5F7fiB895DPIzdaNlndsqITJhWbSRllSifMMK3BCbYMgjUct2sc9HrHfumHjXf8+7wjImR0pblxIWQ7+/B13Vt/p+N7K0sRMyLkleHeV74bd5Kv6RlbuLHVN/x9+l52Rf+9cSOldl7zwH8dPOYQGABjzGSG1sC4wECF7QjA73Ufuf3YK57tGKaxvFKXUafKW8oJfHZAzI38ocaNisSkSmscuKS3hXKPFdxeLSbBkN4CSGu/zYKFS22sNc6aK45uz81ckUW0hIwH3RCTEguOfePA6/5Hs6Lc/aal7UCsxL+Wmn8kfWWvSrqtJudq39FVidqEuzYLN1b7XPtvjQOmrEjJ+g5fbcFzzZVWDDVobjDbMb0WAPDXvh7YrNeUATcMrPh8acZmnliO/SBFmz8wzoROA1B25Tg7JGm29g/+slcNTarjoGE4i0GHW/wZN/u2eyHABXkHRciICngKImQ4+GIAWEQZ+rzXUWh4HBvxmZztF7JiXoJJmUxu5hDXF71h2fVtA2eJ2O0/NAIwBJZWSdKNNv3GtdZMK4WMIyIzHIOHC48CQCR6K5VHgCt32QAv5IZoB6FlWXFboa6POyvP/qH5A3eWYP8U8YFIxlxPBI67X4ugUgvsmaO/+K/ZG1+Ud1CEjIiKypDS0rcyWzvspgDDGQfOtHvN6mwUiZgXb7/X7F+V46791NuKjC6+CE2xjjfUu7fy1gq2AEDqvxdE3PW+dtfX9CvVbHzZ5rcwAHWuocgRtdYMpIZIMgyWvBP3ssrBsHvmvu+//MWfXejN1qreSd+uzUbuEvOsmOxGbre+1Au0VMryxHGPR1Vhc4BZt5lDDmYnaNWFs2wyv+Xo+32sZbpFQrIzRJ1uQgrJufT/br5wOYDTVfuAF4bCEJaqaIhrEOrVShlDThZc1EscKYO4zGH8kZfP8XZuirRdfxC49hK9+c9r1v8e9yk3f/zBr+9POR8X6vYA1iNYrY6DgyM8V0FVoQKhNOcGao2u2TkRPP5FrVn4yD1X/96n7fmrtewpiAzD7IBvuj5EBbtExmVhNNuU1F1fslXIpF8CWYePJbmOaEh8/DC96UXjONqKpx4ir9q+DurKFLP2xV9b0C99ycpn/i7vuAgZRVkeYBGyxfX+w38g7CW095l+q8tE3d4XiU7syzeVWKCn7CQtZRkNtJONrQxE3FIuoi9R0YjhBxP2rdWoGLm3LQ438yE3GAoFAKGSIEF6K9bBp4JoA0CwsthyOpF12jf3K19J7qowtssoIdNsY0pwOpuCfUsOtFS7qisdHnrC61oNXJyBl/zHvOMiZBTUZZSU1McAu6G6CbEn+Gw9Os2AK2YxkINfjhxg44Vr9YIWWza7WF37SFGVez7DgW08DrFdNHU/odj/x41lF9WmzN6Wt/c7cGqtJQCe+6dNL2D63I6RG964JbTVX+qGCQsRtQYGqLXWuDqkChkCaC3X3sU0rO/40JA1tKNIKhVx7t/zUd443P+XztG7H3nZv3rWZ5fNwLdsO1Rthiy3TjQ0f2CqUi0QOgBL6bqQdca1/8td3xma7TxvxDB9QYuQA80rU12VOlRaM1ELmR+A33AfU8+DW16aSzCE7FHB+sMQMhz30rc1f8TruVW+XNOVoxLneRRxJnXSDANNNEwKAAf319pxqvj84Kb/BwDQH8I3zHvZuZ6zWz7XgE+64+q2tRs3lirtB7SxM9uGnqMSJSrQyHV7URz7qg7a/X/q3vXli//go+pAreGYSyG6FlpdW89PYQ4AACAASURBVBo5PQCKLdAxtcmYPcp2v5Wla+imdN5urUGgo203nkRuO6G0mAmIwGHhgvm6sC/o3nUbgJd3dIQkQ48bSQm99EXew3/kBCdVr+PU2hoaoWKBHXZ54gccyatETkIXQZKXSa1KuuUjrP1PBVrBpnKI8TUW2fb1jLb1LX/UG4qXImohhGE6ghtu+zHr4DM3viVonY5m5kKxgqqhhNmZ3WEam5SUZP7A8lQNLYe89ueGOqe7twYLqGjHoWMqKToaZVv1FKKtmSGWTv/171/7un+XV0iEjIxuZEn5YM+F//QfT1QusAIlgq4ZWpbRMXBuzjeSNtg0qoHLOD8OIWWfz1AjG7is/uv6K1cbwAM/Bdvwgk2GbChumdBiaxYSEZm2TWu53WEYLd73Beid3fgC/4lHHn7ePgUXNdyl0NdmVB9mo5mg+QNHknWDoSzz7A1xPiEpMENwGbpacUNxZvueFfLqT77/DjhyWd6hEZIYnRdI2VgN/dXPWfddaS+frdWaIa+YyMywK8JlwNRu4OIzOeW4QSflMqmZwzX9NuG2TxT7wxnYJtyhobj9Pza+ZS0ZorRWQtaqjah9AmAxbJ/auLal/3njU2+8uRo8GgiYqdTB84f6bKRAMj4/lySjS9ep8VDgSuEwARXuem2fO5YxA3eZtm7WAObzjo6QZOgEQUqGN49A7YiBoZixe8I3Va+D0K3vC6vhEu7QxSutzGHcQhdgkr7yZg63N95ihusmi3nINuFaU3AtedNvE0ZKmowboJ3Oo8ahq7aP82l+37XdGXMRROQfZ0Z6Y+xL05AgAOllAovWxTFuVGBZMp9FE1YCz1aB6EofZmozftj1lo6Gbveud77lqrf+Yt7REZJMgW4gCBmGPH1P46W/sb8duD3hYahqdRkt2kvYCPbXrfhpJwgpoQnLHCoYeEM8+DI0/MccpvGJiArBtC0hhIy89rdvge7C9lVFDhdh/aA12zNs7WTfZbRgXUOL14AZTGscuKS2gUluwCMAFrzhV5bjkEe9SIaVKiohAxFwtzbDmzbC9f/4bTxydd7REZIMNQhJ+bRmDh9tHnAEzIUQCaiZVduotvGsFNW8QyNkNEXP+OVi52oxO9ODZjWMhOKcR2EAAGLlzPZ3ffUlF9vKUX6vgobwl5KHTMi6YjZsmIaNpYLL+nipAKrefEXsk0Fomlyg11U+EzZG6sFw39zzfzjv6AhJZtpvOEjJzFwLADV/qRZ0eo4RGGAJGQAL+bIj63KUwznhjXjivjV0o0+GEd85dO+vTi4uIXmuH2Z/kvrd5qpHREQOwPqzBPb/2H/TlrA1cgVMbf6B6A0dPvs/MlRr99PrLzs3o/2GIqVbg9rw8zQUY4aE5QeMI8+OC/vsrR9B5BCG0qgMv8dWP3NMZokygenYtav/4CV+dWrgkjSsuP2ZdYa//6vZvsS9nmnNtN7429Lbai+NU2mOQ60HLh27zaEteF1qYAgNaXZMBQwqUUcAe8W/FO+DEBKPbkxJqazcCS++FR2aP5OQgTJ/ADGuDqubYu63+jZOIDEkRATN1mJWOvAF9773NViduX477/EHbntlTbrSEnQ/Vyi7H8aoBy+EjJOJrXq1EXZ7eQdCSALUICQlU515SBWva2jyJ8GUOSSjy3dsYY6DGHfa9E7pynO/LDSQa2Vd/lKxfCzupUdv+t3Lfv9jAbMr0chhknRsTLYVOoOUtYJlmCdWTCYw6Wo6vNo5fTbA2KdOhBQQnVBIeTzpmQBQr82a6mT2G0urKikh4zO2qqSJ2oSjNlaTFyDVaxti27bIAFioTXXmXvBXoLPTOSRc6QgUnhEmDJhu3FNHT8oAVjPk25c4VDU0X6bwWw0UkbzmI9QmJKUx7edZUiLYOMJ+9s+ld7bFa3nHMqz4TA5lCEn68s0cxsWzhxWca01tHPa0eYXbfjUa8dxfBvygRKT9B29R7V2eKPmPPXT3y5+qrD0EXgylGaOV+fkwnVG3me/PCX2gULTjEGOWtAShNS9VKBrAkj9UIiQnVF+KlIn54x+M7BP7g/MCKNqc0QnvLXZ4upvK+gnZIO7eK/5Oc9PxNvDtqEHr3Udord75bVrh9jf1N7Eaz4YXKw0AG5Pta78cVHrtZ8S02hQqaq11/739H1v/74bo+mce9r/7efAWd4x6/qob/2ruiudEcW3CuOR/we7dC9n2GyB+xghMpejJCHViBsp6f+5QD2agsiT9inYcxh1tacVpo47Cmm9JVPLb18+msk5CslasqxchsQ48GQAa2pptu1IHeUdDSJlklDnMLPe49cI0sIPctlTh7vSZu5nX2q01CABn5PLJaKY0D0yLloFJVaLkTUkygROqLPst6zh9HYpa18QF/3tfPXDD29JaLSGZogYhKYnT98KbP6zDs6rebKPIOxpCimncXZGTDiYc+rUjxjxoE+urWvn27bI11Ajk7rEHvv7SudFiIBkY6sihjvikCCJeD3sadc2++srT7/+jvMMhZChUvp+Ugmle97Mzjcs8zgVEFeFpZuYd0hZxoxJiHjrGvFzHPMtGZMnWT6aUjlmSvVpp0IBs/agbtAYEQECNoHe6XV9toW1ez+rxixtehogalUatz6303D8AImrELce81krrteafRtCICkADakRTSc+ybAVSBwzRUIbPpBssQHXOf/TbAN6u+7F915cvf8/N9v4jjhmaYdSxKwBoQdTlYp9sBhhlPAppMmmd7egtLMv5UK+fzxWuT5AR93Km6WgbScbJybi1z4S6VVEugvJnzf3zra9/LtMwCEkFPTsjZXDFy6JvvD+QnYYd7QetsZl3QFkpWlEQMrWGPOqG7GeVxTG8wzolSJSmZhFnNkMjYsoyq52T92tvCWBhyPVHK23f7bSFGVTmpNYzfquiLYvzY+aZlD5BYmXpkkeGlHgsOSmDjunpXhTJimGwJ/7k3573+p/LOyJCdkcNQlICrHE+vvrf1dxesKJaYqFVcfOOqDiokxQZXdwDiH5bS2142cZ3bWmB5NIg2aWFyQ2mUaDQwLWQPRGqMArv/3rUOj38JnpPPHT3K15omBW+crYpZOA6PWmGXeeg3LfX6Ced7ud5ty3pbaHcYwW3zxuhccd5NAuGHkzsTFizZl3VFY/so0//22/MXPiUvCMiZHfUZZQUX41d/hKzep7iDXRsg1UsrwOsLBfPdLqSJr9ZoGszScFqb9Cth9N6e6xf1HOIwxNxwGG/7X164N83N//0oDduXQsDJZUykBtMK6tiB0tQnYu+d9cw/UX7unc9dNkf/IU7f3VgL0t0bOZ0sV23nSj0ClZMtICyPT8zGNz3tGhUbAfurcEiACBw6ho6kri2aF67zvI6FV1rS08Kfh6fWV5ZXLjlwznFQsiw6LJGCu/iq+St/x32XcLksgrMNqoap0vkGsoQkgwhnptgYYeM3K7dQddeMLbOz0pzhp7SrgahmTbR8E5+G8IlgF3ri250vHrtM7zK/cBts828qKst1hYdx7SzintVeTIwNH/gzhLsn90mcCGxsh2ZmnRkNgCvVECEDbuBpniINR/87R/b/zP/Jr1wCMkE3TiSwvveHfhT77KXT3tGrW4vsNA6YUzAlTPhjRTTg5fYGyZqKJI9Wes4ioj9vm0D23VDtvHGPIYQAIAjoqF0GGqmOsvhI18W7RNJNyHMs6431/BcMVd3pQfQmIuqbZprelzKchbbY7N1/XReMOV5MFEsni8XHfcYPoJqpqmCq2//XvXQpXkHRcguCnhqJWSrfe2qoV1Hhz6YDdXbp6p5R0TIRGO4sZNyv02ocGtTcEPHURy8pCdZk1JHSpjIQtQMTdcWZypXvEIuHU260XtedDVKU6Jt+22hWE0HK9jhtXbS9cSGWfIb7rLHn57ETddNj/Woa+iQtB68pLX6hJnA2PW4qtLrzvNLZRTM9mT9VGBVDqYVJCEZoQYhKbbznwYAWuOy3QVseMgMEG0e5R3WuFH1UVIQa2nD0d64l40Oz2AS0EEWSqGF4qJ7Eryz4C+PsOmzX/r4snNW8TOa7ec9T5lNJem6SfZkYzKQmoKTh3umWbF6yyfdinWmJqB3/nf//Y8duOE38o6LkJ3QhY0UGp85BK/+w65tu2AJKee8RY8Zrkw8hqQ8Bj9pjn0SH9OVNP7JfVk6YZFcKb1pRJNmCBw06+cJ9caSTgyRs35GcXVZrysJq0mk/msROSLfcrxtPD77WwHNFDC14fhUSm3IO7H+HfWW5/cbn5IIaTMuzJCBqcOg1/7mR0QnQX3RjTpPfOfeVxxhYVUaYei4rupw0RhtVeWVddVQBmrgkjzObDOW/ekCN9q5a2hsT/+NMe8hE5WWgmd6cx8TGCumr7CtxUoQ2PXI64m6tpZnxTWfO029RknB0Y0gKTBel/f/Q63iVFDIwENmSaveY46PVt6RFR1lFMmYxR1jw5ecGfL1w7AsK4oiYIxZbjVcdq55Y3ji3tFWdeav//CyGz/quSumsRIoy+BowSiZRjIBtvSDnuAHk8VRxotWyB2D13jXrIGDTKnusrvctWuHAS7MOzRCYlGDkBRX7chTwTrU8SJUyjFQofI1V6BBUVWH1FHmkKRj16cPG/9J4/pbBr4g7i87/13LSEppVxqh1M7yd5nfHTr8AYL2gs8vjWTNk67Q3HcT36MWPANTOnntz37iem0p3XmyLMfhemDFjjNW5DPG0HQ8FS1Lb3+1VtHO/b/1Sxe9+a15R0ZIrNKcyMgU0vXzLnvj2935i0PFlFIyCjTIGUu7qpN3aIU3TF8lQrI0ZK5vLeWya5tw5xVqrddeoGRk2/ZKuwPSP3vnP0P71PBhb+c9/vj9LzMtXjuIZ2VgCDWx8/dm3WAoy2kpnckuyKiKNwFjsokthBN4vCe1qmqY445YiRbd5os+/Y/8wsvGGTQhiUzshY2UntmMTtwZXPWGnq8MJh3H0shFGCACA6nQzDu+MUvppil22A+LueDRXdCUGtz6Wh1BtX3i+IGv3z5TxWpNms1vwcH3Vhv+uDYKEeP/sl7whiNGSnLDMb1jfGbOe/jO4eej36531xeueffHag3wqnMur1q9luTGyGsrtrjzQDoQ1blxeFuWgtEp7YciNWmKaAzzB6ZDJRt02EDwQ8kYD03WYSFwUzKrwxGWFhc//xWgPuekkChDSArKPXglVC+2TF63Jcqw2/EsyzTcuqeNDtbyjm784rp00nyGpOgQcUuWSa8eSGtlZjQyjWzLu0beoogUN22Dgd16BL0zCeejH2D2qdfp6gWeH4nwaM9y97i2iZdWJrAsXRzLkvksmrjvN79HBOk0UZekVbOaZsgdAY5mQgSO7jmB+u5vvu2y178li7gJ2btJfcxJSg/rFx6+5rUrUeSYKNxar9eTQU9IxdDgdk1Fg6cCo2swIeOX6B693z7UG+6z+m2/7SvZ3pLc8seBLwAAZvBIStBy8Rufcc+/fPjYYlmNSGKNVzuoHDMCf3DnmgK2VQZKsUDoYDjhPQsKfqEpy3G4g36bMOvjdCuVzn5zlM38QNqgLeb1pNZYNbhelD/ygc88fMc3U9kEIamjHg2kuGZed3NUiaTfAbcBIqpqXyvBmNEVjBuDD92CX6fHaPANWXwRjnTWTybDxvF4G/+4dqO/tXT+phvQ9f/G1X/askK11qLbsg216UBk6yvferxpLWGtQbihfdh/PdMsRKl9X5+5L7zrAzt+1mE99+9XKghtBKGYgYPrWpXlRjzrBuEIM0YMpFSy81ha1G5zyq9HAgC5zhgxUFmOw7g55TdmCPdyqCbeCyld1hTjXPvC0BCoJtvXRdWWLdesR2DVxcpXXk+T1JMiojGEpIiM865UnQV+7Q8zrTjnXAkOSiJTzJDIGI+9RGyYDG3TMn1PPhJeCmN6yuiYCyRi3BibktyIkB3FDwg89/2eq78/+H5uc1er1fGCG1+hV1+3/a0a1ocUbhitgxoQNx1g68fblrUhotCRy5U4cY8Svjpz39CfeyfukSvF4cvdIIxcjjLxE5RiYOvfyyA65jwQP/JYDTzjJg0rrgGT9fQ5CtigEY2x62c7/Fseyt7wi5Wwt+be9gKiRjx3ekkHag3AmeIMjRAiDcJCjlpYXLQe+o5dO9i+/8tpbYuQtNBYIFJE4uQD+37qL1BNW+WYwqH5DMkOinkkaK1B8o4E/+FbdPtkWqttPXbfXa/ZF9QiVxTxUw9h98v9wIIvxav5Qkhqxnt4+42DTzv2sRvHuUlChkQZQlJE7rP+tbSfZLrGDl2GEjVUSnoHtwdZVyXNeLukoDZ9vzhym7BfDjR+/QNXqlcziLC+Xb323xvfwjkIFbLKrHjimxAOHm+cVPfuL1/yno+oAxfNhWbAy9FlekMGKZOHvyMkA/OhB/doSHp6m77rSEIZZyzTWvv6IOTxDlJUShuG5T75hYu3/O04t0vIMChDSArHvuh53tf/yrE1eL2k76WM1qqUqoMmLp9HVUmnzmg/sWHetf0FCgf/65ZXhhjhqfu014L28aSB7SBc7nCtWmz0GSzGjn6AAAAKBy9xqGropBjcBxr1uWXM0dhGdNbmjac9/yWfKNE5hEyLab9OkAIKHrt9/l/d7EMY2PvTWmfSGwJCSCIjNwvj/rLxPzaufPPPdv2hAwIHzfpLFKrwnn+ClROJP8aOwscfvvuV16JdwBNH1g9i0pmqPfNpJFYPgK1LyZVl+o20DJzzb5RPq/TgJSdhsK8aLTRYpaeivGIgJA5NO0GKxqo886eC0ADWFHKBT90E9FlLem80+J5Px5SVx9h7r7i/l6PrHenDmGkehn9BKhSeS9dgzHwVDaX8q3/Qv+8f093u6Zvee9W7/9Lo8NBJd8V7Fb/P06nzVJYWVdJnfJT0m06o2Wp2cKwXoIaMliszZ32vwmm4FimcspznybQwL3hO744PMP+EabQb6Q1QietKSpnD0VDX3KmV+rc8zArPFTXdYOPvdMsatNZw8tusuwT+6dSiPOdMtHyy1yxXMyLRzNolyQROqNLst/5cL9uX8litljTWe+BlZ1n5rZoFKw997dDr3zbOTROyK2oQkmKJnvhi88feJ+pG6FVappt3OISQrXZuwqXScTTpu7asYfnbn1Mrx0ZY5666x++/8+XzWaw5Y0PtYRoBTKbKuCvo8gqoRs/QjUOXHr/5j8a7bUJ2QWlrUiSO41z3c8b8U6NeD9GuGJ7KafgHzWe4KuEFk6lz5Rf6szqdW5iOGbZB8xmWy3pPq/7/3PyjWJt9fnADrz/X1+pLEddvxvT6ROn9wqVsy/R3iApBr85ouL5yE8M2VlwtFXiIrsXMHluZCTtQm/ce/irA4Onj96Jz122Xvvsj6tBlLqyYkgk+z/WSNmse7xgwgzrboUE6bqLAlJSxaqjCYecPzGqvTbCSVA0FlXDQYdZzquDgA64hxVnUB2S1LVnzmhcs3PJ3mWydkJHQsz9SIJWrXuU/8IEwOlutVq3qihAluTshW2xrxlMX0wlTkO9Oasa1AK441gyuIy4cY3/n5N0QrgCkM9vEdlHrjKNOqPZ82KhFRoARNMKgoQ2tlzLaIolD3ftJiXSZtnm3I5Ya9Vr1ac+57hMP5h0RIeuoQUgKBGsH51/yu03sLARC+R0ZHcl8i9RQSdfgmn5UOYZssuUnNvIvTnPLRK1RK2VFoteNPOVD97tfCFsp1xfdKHzs7m+98mq/blVPn+HYVkZtCXUnqM7gbFqb0BoHLmmtv+xjBbcP9t4+yrTISjNWsGhKPnaxpw5LQ85BrSVOMdY2FQ2KIQVCVUZJgWizERi8g7V9DDzjfAaPAtAZM18pVQeNK+cX+4SfqpIWkmZrHbFwU3HLfL4XqYCpSAAiRIhoOnW2fMa+6lXB/X+f3UZP3vQnl/zhR007XNBVOwJZMXi3pWcqreUFNApWfjRGWZ4ED39UoQaNVDV00pWo0T9IE49hNNcDzYRVwdoKk3lHRMi6slwXyOSrHHp271/e7dUOmdjtRVyHYLqFG+NKVUl3Q3Uopkju6XStNUNUytLYBbQsZXgnb1f+afAWM92ubB8P6/c2IlN5aHe9yOG602lgJfmaaP7AnSXYP+MuEDJBsh2ZmnxewazjyUvERdANK0YTzO6jvNL+3r3Nt/w/eQdFyDl030aKonf8axe/9q/ZwpLnVmesbqhAdGfyCoa6ku5m1xu1oe5rNaqByx62S8Ytld/FqIVGNSAyZiCEArjqLopHviDbR/cez868o3fd/exnIxNuvcGV4pFV1e4yFG7S1LL8WvbYbO3XsSpgerAsXUOLFqdWg5fC2VicZohCNVLO9Wb3nzAe0WJ2vx3pq65ZvunGccZLyA4Kl4EhU6v+jLfivgORy20d+KzqiiXtFq5oQFxDUccUJi1W9DnY5ZYituGduGtQ4e6xJtOgQxoB1vb/yI3DbW/Tm/4Yc4+FAKAAGGNaoVMzOo+z+vnRE1+DKNtqn91vfvPwL7/HvfQ60MqOQs/FUPuiERlhsktq1rfcZakaqiGu2nCsjYVDYVIySFkbQyawYCvKWMJ9Fxh+JWhbUNEYNrq+qwTMnde645+yCY6QZAr4rJBMI/Pp17e/+Tdd5ti6Evl1yX0H6zKiMa6lU8wMBJlMBjIJGnSgQjMCGXkndO8sdLtj2PSx//b249ZSoDu9mmv1rIps1JfKchtbehuTgdQUHF7RMoHTpqJqmls81Bxri9V9MhJPvPfth9749rzjIgSAbt1IQTCtqz/zNx2tgWnLZg2v1WKyIgvYRySZ6RtzuKWr16id1NY6gW1e4m9oytI5rtwGJuoUgOpPQIm8v9s33GJuy0YgA2RKa71t3kmNSgOoDV+oRgCGGkEr1ArP1bDVDIH3/8MXGhlztKEMH3zRu/0Dsn1qPLuifsOvOA88VAGOPcG4HZinIzN2DGHWVUMZqIFL0vVk3WDY3p9uyK6hW84Em2IeYkxa1qatoZV0TGCsdIa4Zi9h19BYodflTNuh55+sSa9XqT7rQ0uVI5dlEDEhidENEykAPhPc+XFbyoaBUeh1AhFoWxiuz+28IyPFQmM7S2GIb2RQXmfAhCW7cCxTCCGRGU6lGrXsp/1E9MR3kq5kNO33/9fKZc9fMKyw1g1NtMBVmmoG7mLL5BAFvPMnJDu2RqZQ+cascR7TTlf3GGtbjfMBDuYdGiHUICQFYB66EqwLl5e6tkbLZlbFNZ26CUYk/bxDGxY1VAjZaOeD/9y/bk6R9f8Y98bBUxcqxTmXCgKpOo9+BXudPQWd0NkvfUqIuUpQFwFDaQirNF3c88po9TPJa8uQmfziVIspTSaw5PP1TaoOV5JJsK1Agd/1Dji2ifa9v/0zs897bt6hEUINQlIA2DzcfPUvNPY9CZntRSIIu0G3h/5KlZemQUh2k1KXzpiupJlvlyQ31AOR4bpNDlwVIkaBbxiGAGAqDB/4arT4RNIg9yJ47LsPvxojxZvVdqfTqUuZdYMh8eGfk7R6Ahbz05HkSjKRRFpdQ2NYyBsi5NIL7cCos2B55ZRVu+4jtyzd/om0NkHIyKjKKMmbOSNP3InXvdX3NI9CMNF0HBOQA3KbCckHX0hKPufUwJKkU1mVNKXvkaqSFsPq1zDU7sXN74FtScL+/0eMLZbJABSC1syRp3S1GT36HYBxVJTp879z69W/9ynnYE2yRtWotY0Wk1amN76IKtMb1rSMUDV0oOk7HyZTmqqhKq1BhxnL+IDzbSa0r8CImLKVUWVKyEpoOG5zfuWOLwNkWxuZkJ3Rk3KSM+v8q6FyEZfa1j1kEqQK/cBT6KHZEaUfQ0hdSXeTTgaP5jPMV9JDetPrNQ7443CYwRVoZNB95A7onQU4nXQNezRz3Qv4vktO6wBFG0Q1rdWmlQksSxfH4T/vpBflSqZ43y9lAndir4Sz5iwLXcc3gVeWODLenZW9x9/7nsvf9KtZb52QnZVmzAOZVHjh8+eecVAqYKZW6FgaUIba5FIjUyaAl3eAmYi791UxT02p39TOYtsStN/GBRG334nGfS9aa0RcH9SkEWMa4/3Vxq1ca8U40yKK7v8a2394L/GPhlVmvfbS+Vat3es6DIVK6YDb6VnGJBjthDa2pmAB28zlkNbxP6GkY6xEIbMdF6JOrxdxdp5tqpWlV338Kw996ct5R0emHT0RJzlD02xXr4zACcBYESAlN5XgyjdVzxY0hpCQ0kiS4tt+6Rklk6A1KqW0iIxrXqXOHkv69r277blY0dhd+t4MZ93izZtavAwSAM0iSKaVyQ2MAoaeB2csV7vWzGJknJg/+D113uwLfiTv6Mi0ozGEJE/mhc8N7/pg5ZpXIyjUYKHWKCUztOYauNzpeUVM15TiDadJxfSNOYzrepTw+930bgaI55bY1aS03WnVPyBRn9vROraSiAaAzd/FuUFFiAiI+tyq1n7XqOHcKpHh2oGPOgJm9+68GQH04j2ZfrQ41SOXX3TNDx6LlvZJHnI9+LQU814GauAvO2kMcW28rLusK2AD+97FvZ7t8G9DSH+MXN5t42FlHOfe1o5rv/eUwkkPDv495kVrxZgBGhGqoDVqwVDYUpqMtR78ltXY37nv9tyCI1OPMoQkT9HjX2ne8Hcimsx+oaRgJrwbXhH0Gxvpzbi+C8Z0JCSceUQuPDamTW4jjx/9zIvR5A3fMnIamkRIbujw3jsuveoFV5346H/JOxAy1ShDSHLGLn+54zaVSmlO55JfnZI+0S/eI9ms7fH7TVQFM8XtTgu9touxn1cdYr/pc6/fIm5U6MbfA7e5WFkCp6lP3QuiPULAe7d4561Pe9dn1fxhS7YVMxO9d4RkYD704KqhSVv+03e+SiY205vW+tNaz2qciY+AMStYdHHfb4DYALSf+oLFWz445pAIWUMZQpIbfvjZAFCxZpR3Nu9YSFnssTrouenQqCppdtbaaxpHKRy6q403Vb2IpHbcCwAAIABJREFUBY/epjvHwD+e+oaGd96TX/wsf6brOjnGkKl+bc/tS5yyzJdIdjO4Cz3qc0ve4a0qSWp+bb9tWWosPO1aje97/nM/Ob5ZcwjZonCD4Mn0MGaP2M/95ZB3Qjxs6JXBL9IJ77njXj+hVfvi7sno3msVG9RTVFFV0uwoANbvOKpXxwSmMVhre6FRrbWSDB79nGpeuseV79Fh4TzktJyIx4+ZTOf8k/mYt9jzZ7abzVpZxgoWLRNIVUPHI/T218yjpnVBGAV5x0KmFz3hJrkJ7r7ZqTph5CDSU7Fd0HyGu9khg5cglUeZw1T087B6w/GZ7rG6dn9fky372jfD8sMprnwE73sjnlhEI77fe1mOEsoEkmGgzukQLkkm8NwZcPsSo4Khac93eu3OPV8YY5SEbFLASxKZCsaBqwDACkLQLXcMg380G7yUXFxDMemNHemjhne5+I98GXvLeUcBABD02De+2kxrbcWcLqL4SrPftB68lMdqQ6z019Ai8I3llmo7jnrwt14799zX5B0OmVL0Yyb5EKfv3/eWv1nS6DrNllnNOxwy8ehcl7O9tKvj3uvfd4tYfHzk1aboxDHnkqvblDEjU6WAybkyUkaFRw2h1XM+uLT4lU/kHQ6ZUnSTRHJhus/6uUg0Q8BAWjNh/LQTqAYvaZnQzGGc6c4c7qGz3qYbfFxfhtpWkTsJZivuMOv/Twlaa93fjVqBVutlK9jm3KxSQhnApPZ4twKHhQYLIoyWrae/Spz9Xh6fbKvod4zwShbqiJkswkULVcfkqIMKr0pVvGl1NpzrFKwvcS+nhu6IMs4E6pglsYRdHIfrTr8HE9o1NE6PM65ExTeULS9958cyCJSQ3U3dDQopguo1r/K+fhPg2QNWhPpMh09sdT4yiSazQNEYbEn0rTX5du2Xi8xQYcS5YVtWVz9hS69raO/457V3CqCTbdBD69XYXT96sBeK2fbBlskbkknF/EjUebK5KMZpah4GEVJcDc+zTS6azoLqVq59/hWfOZ13RGQaUZVRkgOl4OBbblQBW46gYbqL2DAhpsponLgHk5Ob3Esk7va6iMNpyDTpFwvt/99+igkRYb0e6eDjUzM0pKGAsYCFrF1V9YDZ8q5b1cGLxhn8zk5dWbvkKy3J22q+yrrLVY2dqhm1usvVesMfXDcrr9/j9nZgfwaBAuZgBqLz2Ihi9xs9GNhJ/PyQ6ey3FjaAdXQ7OmjXF0xpR/R1kBzQ3TMZv4p3z8c9v7rsRo5R6Zi6ohbzDolMm6znM4xbP3UlPfe0ggOu/Xe/h+gOb9EyQsaF9Jh0HXNesGptKXKefIM+9dhYQh4OorClwy5c6XhaVzqOqzqsUTWqvp9XRMP3aOs3Balr6ITTOHghO4qbPzDpeuK6+O43FtzQnDPrx6Wc8RiPLVdMSIam60aEFIF98GKA/WG16kTQYZGMbNdK744jrTGHNLZwisYWDmPgV6/iq5KmNLhkQjG99aZIo0Y2aDQUogZAzSQyjb6JBoaVFd1d+fonYeVs3p9jq9YXP/PNH+rNMKduoxSs5TQiT0Z8Ob/qlwkeQJQlPVhAg6dvT2/9SccKZh0PSdeiugjM4xDp/cyCSPNIPv0DZ/IOikwd6jJKxi04de8Fb/3TVlv7rjEPsGQ0ut4SFneUzUShrqS72aHN3/+noRp1cc+O4++547Zb7jbk9tnkd33lxkN0/S+aA3Jmgoj8SMmZur+08o/Sz3k++u2WF+8BdkP04aAL7YoJh8JIozujmJ/x97jHtRc2B1iW81LR4tRlOW0U7CFEXNJPJ6zUk/RTNXTYk5dE0ItCZRkdFdYjI0q4DkL2iucdAJlG/KrXdo2oZmDAO6zdhrqLMusrWFqPR2OevRbswpZUXKZLx3QymuKHzUM2bwYvyXtnlfu4AtQbG3gbP/z25t8O/zNCZUkF3BBaGRbUV5aleV546ouZxT2qW7902a//pXnJ4Url/G7Q6rhqWYQuqyud7e2dBpY0J8T0phdRBmkYY8gEFmxFGSvaMZfTfvOc45pZXqVaw8BntYB3Vha+2376RfCFW/MJiEwlyhCSsTIvel702O1c8dlKfdEP0DLPt8WZSNOBSEqClT1rN37D5wm3v+VcERoLse0L1lCGjMB/4p8fcPcXYj767Zrf/0PITc87UVUN2TbbzR5f6kV23mFttjElWLR78iIrWiaQTAh9eL4jPdXuVUNbSNNo3P9TLwLrZXmHRaYLXQvIWFVf/KvWhd+/0vOcitTIGr1Oi80yU6HKaRh11sMCM5qmaVyS3gAVtu9ZZvby/W449lTSHVfy4woEAPQLja6lAdeG1W3vNaq5DqRVQ8WjxWWzKW/+BWBPBXV3HrHv7rpPnmBoseiMzfYvWGZNKgnpZAj7HRE2pplXj4NdzmMF/2GWpqGVUpypfdqynAaK1oMmpf2W1qcyI7NbieoeWwaYsz0VNkLwHv/mh86++20pbYGQ3U1skQxSRPYF0mqi2avYTIU86NkRuNywGGBqE+wSUhpluZsrABZZKhBKhOxgMzhlPvlVhW0NAsDSlz+ttG83D54xLWWHRjR4zokRbCkJSQcQIRNA2hK0jJhwG9V2L+jaiNXa2Xe/jf3Wb+QdGpki1CAk41OZv9D/wvsWl1ZAByYzbauKti0gDDw/t3L8aVUlnVDxVTQJ2Ytzw68Qtwx+GzyMUAV1w7aNcKVthQuf/2NsHc8n6uF4j9/3jf/jsHeMz8ISBoLhbFprVsA2LkOeJ4uTHsyv2mpCWg9eCMmAkqEMo6DOjKWWdGsMVNDyTHlmtnFF3qGRKUJFZcj4RK2jF776d3D+MgsCEQaSgdAtjbpiOCo2HRg3IWzWUtpC0brKZGz6WopxZSaG/N77iXDUoAD19gWBx5ex2Mt2c3cuTgZbmn8DXoqIAJGlIHLRDnV4982ytwJKjCHK0XTuvv3q3/kUv/iQ1tLFucBaQJVslLSK7TGR7BfWrxxDyi/mPFO0nzvq2NNVPuEMLu+VdD1Z72YLeU1bvW6nzixLocdljRnn3S16Qbf9D58ByG0iUzJVKENIxoVdDwBd62BrabnX6wGAaQAyprXc8QlxyTOHNJ8hzWe4Cc1nCLCa91tLBm75n9tVTGNJhTzAOjzmXvUDILzxxDky0TtTdXmgeyDDjhih7ZrTeW/KFG3+wFhKD17IjsqSkQ4NaxFUw57xmVqqoAFKtlcCVT/+K2/h7/jVvKMj04IuMGRMzEPPRLstnJ5t+tx0gLkqZChrXDuSuiCWDXUl3c0ON/QJ7uwHzvmx49QVk9mQ8HzWsJuho45//L26tZB3OLsLnnjgi6+YNeyDPcvcJ2tZb47pwct29IBmo+I1GEoypfyg7gw5dodBjQOXpOvJupZB3Lcb9SIbsWtZSohGNxQS2FxF22Drh2dmLk5v+4TspHgnGjKZZq1r3lG5pBFWQw6WxgoAqCjk3NRaK1RJ+75gXkkSqko6EqSH2Vvt7YtOfFNfsOMKVf+2e63K6Npd+PbbcUQEHfoITuC1PnUjgABYGnO8I7j0xo/OXP1CiDzLcYRM9n2pbIYFrh01WY8qLGASZrCM40y89oL9TGMVbShEwaqGxm9g8BYakdWqh37HdMFvGrzr8ZVZpSS6Ybd1qProCw5kHRchMAFPjkk54I+E33ln2GQoZlhUCwSX3ON8hYPHQGqGyTMhhJQanXsTULzOImlavnPVdWWZPjdaPt2rdBx7BrpmumveMosgnSYJKbWWGaDfRYsxg58w/K5bufC0ngtDEPvFZ++G739H3gGSqUA3JWQs9AfAPOu0a8CFMAKL+SwyFDQjMCUCUyppD5SYHlLlGVsYZ0LHHNLYwkH20KVz01GP68tQ2ypAV1LNEDgCV8Ck3mna+n76kIllH2YWbv5/EQOAM2MMdHS9J+67/+WXGJ7XrcQ2CLdUDd1QPnSw7R1BE3Vp26Er6WiK1+UyRsZVQ/fW1XD0Lo6ZK1jX0LRkPs1V4uMNNVRtFUgARzgmtM80IEDDgd5R9VL44jtTDI2QOFRllGTOAotd/m+dV54UzMOMD7n8yq5lfC0v/zV4oOLdAeVlL9+vXt+RiVdTiONqx5+tRkSLqxnssf2Xdb/xofGFtTe9u7565BffY151NZodpqyBr0laBJR+L5OniO3ANQUObZNCnMbSp9zovIMtedFLe7f9bd6xkMlX+swDKbiDcNC65jn2d98bBUKz7B9A5JVho/kMR0KZQ7IrrfVZMePqRTNMbYb38Tj6p29vactQ+yc18180WWcs08osrQemIIs4J1VpMtIp8bXZRfPQ/sozrqdeoyRzdEEimat+50HvPe+uBTP7gkbW24obi5h5FxGyI6pKups9duk8NxeFRjVwiV9/wbqSxkw+YTL5yEf/VLVOjj+evai94Ecfes35TFtJH3wMXzWUFNvgupKF6yNakq6haVUTTS2ejGvCci+qG/JZ57/8mx+jXqMkc9RllGTOf/H1fPECr95aMbmZW84s5sKcdasw9kKb9KoRc+kp3jU7FXEN+8LcQI1N3PfLBv2Tjm14a0j4SGSsx9WWn+H2NqGjPWPfkdY3PwvQG2NcexUeffCKGz9mnjcPKlkbu2jHeVmSMGndoKf2aVVJnkQW7YCLU7Bdl/Vuq3De9eq9hjp4xQuP33pTxlsj044yhCRb3cPXeLe+z2zua0RWXTp5h0OKhTKHu5nS+Qw3HgNa60p4mvkrAGfHFkBaopWTyozt6UqZwOmEOqdUfEkyged6PGxfEkqrZ1Dcg4asu7CuyCo3l/1ei1/7vFd8vkzPwkgZUYOQZOzYV+B1H+R+twu+jKhBmDYam0SGMLijVQFvBLfp310d+/SfRce+lXcso/CO3vetV1yadxTDKs0YrYyrho7BakOMztUklmudMp16V2OtYbV8mXc4ZMKVY0InUlomQDRbMbSousLqVpasiJI/hKSIlWc262QQN05HccY7UbKKMn0n//qPr3jXJ/OOghQUapputwTyeiaioBou6zkXn1gO4f5bcomBTA96OkWy1HwaQDOIWggQmNJUzbwD2ormMyymuK6kVJV0kFzmM1w10nGrVvttnftaz02+x1AzMEyu/B5wi2MIDgCgVtZVryrX6MGN6te8kCmT44qpHKYi0LYIe44FWtED2d0Uev7ADRJ2cdxc8CkD1DW0cOMNRxFpVTVhAfmMPnv/f3jt/pe9Lu+IyCQrzQ0iKaXlO+BlH7fAqaqecKPIezTvgAghcRLdiK1eO1J90KB0JLUhQda0AGA2dC3Q7Y/9Uqnv7lBzxQLPPrAsV4RjAe+5TfS7rCmn/UkGIWQHVihMu14RZ04je9Ft/tl//mjeEZFJRhckkiH72l+oXPGCJcu3Q3CwoStK+iLvoIYS+yw1r6kF07rnLvnUiEm77kxffY49fr+rh5lKuuOSbVdvq4+rtWYAoAVYTEWWCX5bGA3TXhGL5qO3+Xd+MGE8xXLdJ84yIXXFsFrYq/Zc2N8KVaV2QvszucRTxGGBA2UcZ+K1x8VTtH6fBUsGxh1vac0YkdanjY0zpfUnpRw7arXdmonhPugsLnz9A4/+ya/lFAuZfJQhJFlxnvGG4M73MstqSGRNx8dK5Ad5BzUsms+wmKgq6W7GM59h6ttdZaLfY9yKImlVzKoKju/XuuytQQAwImlqZNGicBlXs0IuNB3eFtW84yIJJS/XSyC9+QOzvv5mPa9gUobnA9S0sgz/DJuHR//k1xrP+6H8wiETjhqEJCtG7VDzZ/9O+YHPmqzD7OCYrtTyDmrvcirHn9aYw5KPLUyKxhzuZuBXr+Ib3tuH+KR5/HPJ0RYycCzo2dGZirX/1MffYe6/Mq3154UDhqY4W53jJgrxBIMZT67UIzPvuIoi6xvxpA2JojUMyHSyDKuG0gs7C67gHf7Um+9p3f65vIMiE2tibwRJ7tBqGCvhUrUTssAyzYY5B164qXDFUEUsCNkdZQ53k918hjsXxhj2AUr/y7LVCtcNwXqG6YbGzHEhAFais48k/rgFc9sbDqBmFy2Gp8NWzbpYA/IokEYn6+2WZRqJosWp1eClcApWPKYsmcCyTFvS0X7HbqNtV2HGjDhGjSM//668gyITixqEJBuHn9X+p9+R2jBDrOqmr70lbjhQysLxU2HKModkNJtv9NJvePd6ULN8YPW2CCKu9vEQAACitNafo86tn4ikbtYOm2opiDxRMStRJe+gxq1omUCSrqI17Msibr9pGdjQrApjUZ0StjvjqKN/9h8aL/zhvOMlk4lu+Eg2jn0drv+r0LDqzvky+i6L6gaLWjZNTE9IMQ13LdjUUTn9jAnfd7Hf6igdWJZVC04t3Pwrxv7LUt9KLrpHH/zSmw7ppe+0DYtZNvcdn03d9ZcaDIQMz4SL3WgZPW/eqrRUZzmoPOXvH2h96bN5x0UmE887ADKJbJtd95OVA08WzLWDJ3q8YXMJEGklWdwhhzh4Kc2twuBn35l/gNguQ2k9do95pl+wKnZx4rqS6pjyENPdx3TjVxxbZnfzobWag9l0dLBdf7+D/wFRCi90+Fxggzzq49Xh/R9UvcU9fqqCWLn39ivf+eHakadLveAqu8sYGCFT6bQJp61NldqnVSVJKaIefCbOS0r7LfM9XfLfhaOiroU6VAuGs9/2VEs1zBrMnd+64zaAMO/oyKSZuieUZAyMuWeq+z/clWc187Q5a/K6UiAFY3Jf3qERQrI2eubQZLIaBW1DCeM81CetJ78xxbByN/OUl8m2tPnhjmk7FV3t0sT0hJBYAQS+77uuU2dWty3cWqMVwdE//f0r3/iLeYdGJhBdkEj6xIkvN170/qByAPBoJ/QYNLX2NFeWoYScsqR03DC8rOcDjFs/DQvcUVwB0umbzzAfXe1WTNf2jq9Y58vPvt2YvyLviNKkQ60dJltdp9pr92zHdgCSzctamkxgWeIkE6Fo8wfGSfr71QY62vHDgClw7Ho79JjrvOZDn33w9q9lFCGZZnR3SNJm1Ixn/Hx0EdPqCYykiqo2sxmratkUYfJZmEtelZSmrSomqkq6m3TmM1z9j+3LYI4MtPDAnbd5F/wlceKuvX+S4vj6m/czrvw6k5zXjLkl5ucd0fQoyUQSVDV0tDjL8e0mJiLJtaEtQ0d+qHSlZkq/9wgegJnkt1KE7IYahCRl1gVXins/4SmJXXTUQZu5iJ7UgTZ8ZUzIcKAU5FXVk+YzHAnNZ7ibpPMZDlYx+YrgGHVqYsF5yg+CmLgmkwlNpnXYsYRImB0sotJUDVV68EJ2REWARpPWfnO5HQUBM027Zocq8P1WnWsFtft++41Peh31GiUpm7L+eyR7cvnE/je+Hd1DVaW0oZVa1KCFbljANIMRHi4OpCGm1kkqax+DuFotuRU0SGnPlaTYTJykDZjSHG+p2aEJMKgaTdzLYw6TnjLrru1za/mDv8rtGdk6kfXnGTMDmpFj8flL2pwfxCDUJb8EF65tEHPAFS7MYhWJQT24qlvS9WS9myc1ExiHS2Y5RqCw53dsm1togghA8qdcf8NSz1/+ymfyDpBMlAn+KZHcsDf/lcuWUdZ8Pe/IFrNZwExXtnvSMrO+/yn5Q1/MoJT/ULJO7mU9ZjJjcQ93aWzhNsN90TG/U1urgIGKRPdjvwXQBeilGVohXAwAT//cN8Ko68gaxvwuSpOEyTjOxGsvy2mmaA/OUtpvVDW0L63fr6HMEDtMN5gV6chHXZM8sCU7bdvNqHPnG4+kshVC+ia2ixfJBTvvUgCo81nuXwJ2TVRWmNOSWgWR4jKyOBUxImSy7ema4rFaqMO6ROfKFwJU04qpUA7c8GYfVmqsWo2ivGMhhBSXZAq5NjTnCplQjNfbyDSIuozaD99z6Pq35R0gmSjUICRpUicfdn7yv0S6J+0VHUXVAKVqAECVRT6v6uwHzZS9iIsGNnDJfMNpjS2cUHFdSWls4SBDFKHhur8g0/0jjYFioLjoBGz25Cd/wYAI4MwYYx6b7yno3vdDl/A2P1OrlmaMltaDl7RWv6exgqMXO8lcwYrEpCXrIjFZH29pyfr3q0GicgTvRUpK0xF6oaF0xDjT4eyhK49/7I8AmmltixBqEJIUmQBQ92ZBUyaQEBJvtQqRhrVyRAyAmaY8qLv1l/xa54FP5x1iVs6+/48u/L/e4zVPcTiZdyyToPzNK0KSMSRr2azf/5yQtFCDkKSGX3wdQDM05jyeW23AiZ1OoOxVPcsef0KUOUyqPxnFgmw4csH0W3mHk63H//vbw7BW7z0p70C2yj7jkU5maT0wBVnEOalKk5EumKLtt8ieh0b98hvf96Q3/EZeMZDJM7E3ZGT8sHGk+pPvgfAUx+JlCGk+Q5KBiX0AkZrd5zPceBi7nD9283+SK8fGHeZ4zb/g9ad/9FpudPMOpPgG15UsXB/RknQNTWtewdTimbKqoWmRK0et7tKFF11jXnQ471jI5KCfHklLFaBrvvlmY6ZnLBuKybzjGU7Zq5LGhZ/X8L+0kn4lH76Y9OHx9FUrXf9+1/YVarBQRifvb33hzwAmubE0D/P7bvwL4+lPs3tO3rFsllLSI7XDuSyngeK1/QYrWDXRuBvQoiUtixYPNxxTLvvmgTtfM5mVt0guKENI0lG56PsADkjOm0t+uzzzW5Y981b2+CcVZQ5HoBFc/yj6S5PdGgSAM3AGn35tWJ7zZNGg3q1qUWYbLkUm8FwP7O1LQml18Y2djrRgXTGLFk8cpfViaDFvBQCaz3tN3uGQCUENQpKSi19w0VvfOcdaK0a9WZ77HLpxL6gpG3NI+p745P8fPvGNvKMYBwnM9fM7UZakiuMOVhtidE4gU0cpaNrAuHvth5caz6EGIUkHnUxJOtCyHjPOCwNEhS3WzjscQkiRxY0tbHvH7887tnF48AcOcVmeJ2dFVcDkHNmuLJm3slCA2uvZLAwjaTf25R0OmRDUICQpqH7fa7r/63ebXlfzilaBoxt5R7RXZe+KSfMZFhPNZ9inGArD5tLtMsERQmZayEGcsJ78IwBh3tGNi0YlTeBtO7KRSR7ZoQxtGyTY6W2iyPMHbpCwi6NGtbaMHv0OqGtouvMKFkzZG6iB9kR15rQU+xh89/97TfX5r8w7IjIJqEFIUqBmjhy84S98A41ggXFHCr/0LSpCSGaY8iBCxG5dhlprCwMlZeejvwl6alqDAFpzNMKAzy2aPalRNMKKE/Z8oxmW5saUEDJ+81JaojYnOwt2dOnHH+ne9pm8IyKTgBqEJAWGPbOIjtCWduqeBrd4s04kNbFjC8s+Nq/s8Sc0qZlDQ6PDA0CLc7OtJcPZNlfuM98a3vf5vEMbn2+9rskUm/GFZbI5z+l5bUce6QmrU1/IO7TMlH/sItlB2TNvZdHjblefEHiB3WFzvcqT3vmhvCMik2Bib6TI2NSe/Pr2P71rPgJUPR8ti7u9aKe+PuXOHNJ8hiQDE/sAIobkXIqaNFpC1muOLbqPn2cI746/yTuucTOkiqSshisLtpjRB1bE8fNcoy3dvOPKDJ2ARlOSrqE0r+B4COkJ41DIujMGD6ty9snPe8bHj+YdFCk9ahCSvcLmofPe+IEz6oRpzrvKs+RJzet5B0USyjrzFje2MK0xh5Q5LFXmUOqKb/hRVGGyZQWnGm7z2E0/7154Xd5xjZvSWvDoTGUWLRTiCWRNT640hJV0PVnfiCdtSFDDgBTBpGYsK+acJU4oQ5w2gHcCMEGVfEZlUgQTe8NExgbNqm/KiF/k61BDxISoGiLvoMat7A++yx7/pJrUzKEDnog4OhqZFcD+M0zWXv7r3uNTMeHERl97w0ENfN9irxf2lHGoAmYUdpWZeBrGot34ajV4KZyCFY9BjQOXpOvJvEgMdf0dj5gHnZHsCAOZ0WWd5r7qASF15zu35R0rKT1qEJI9sa6+vnXru1mnN2v7FYQVYWrDiMIpqgzRN6k37qU3ZZnDsvC74VylDarekaHg1X3giWAl76Dy0fnCJ5hpufZ8zfZavSVoVBzfjHtx0TKBJF1Fa9iXxbTtNyalw12rPQszZ4+utLgQD73jTef/2K/nHRcpN7oxInvTPFx7/d8E87Nh1zWDY6bJbbPWhVr8PGOEkGnHGwdY0PG7S1XHnhG90x/4Zb5yLO+g8uEde+j215+nw/u7gkGjytu8Z8RW5Zq2G19CyHbCOl90ly0wXPSNmqtw5hk3n3QvvDLvuEi50cS4ZA+cWXbpi2FmnxZOXS512HzV0KEOBQQGYDqjTkqeY9NQ9o81+HvBrNMGsV25UtpzBZxSLIm4jLSO6f1buONNdjo4U3NNQzzesg5X9l3V+eqf5x1TPlr33HbZu25q7H+6DlcsVm3Z1qwIRMadC1I7+lVJUoqoizWoMaX9lvmepmcN46FZoty/oSJpcisM2pWGqc4ausJNCBaWFm/9XwC9cQZOJgllbMjonH2XRV/+b74UaEvlGmjIMBQitB1o5h0aIaS4DMuypQzDhmAHZj2QwdR1Mt9Itlo9e9GdvTjUYBthgFHeERFCiiswZA+VqFoyEuixKpid5eChd/70hW+4Ie/QSIlRg5CMzj/29fNe9luV6pEw0EtBgGZo2BEyH1Qr79CKYmLHFpZ9bF7Z40+oaFVJl3qOssOqeryn7JM3/7R67I7cQimA7hP3fueVV4QnW3N6RfcQ9QwV7SDjVJauyGWJM2u2F9YURwRTaNtsdFWEszMv/LvPGkeuzjs0UmLln0Gc5Mayr7vB238hREsmC0NucUAhDaVMk3EJQTobSVpgrSRdAeM+VknCj49/vGGQLeKeNRTtnumgIQPf8ZyKFhqA+8emukF4+qb/+pT//GGY650RjsUDDFnxfkhxARXruCraCTSuQKhOuN+y/lSFO9wmVUrPHFXN9jxPMGCIoWSMC9aNlq2LeOMYwCGA46lshUybiX0iTrLmXnhN8I2MB0BWAAAgAElEQVQPrYQe+AsVkzncQc2F5MikZlPdAWwYlDkcUVrzFsahzOFYMoeG6i3zTl0zV1nGU36ArkSid7pa7wnWwcjtgZ/WalOrGqr04IXsiDJao6H9tjM/FBXLdQ2HoeqAJw1R44Ip97vv/MVLXv8TeUdHymraL8NkZN7j3zjylnfWKw3XsGVkQCiY0mgxw/Qi7OQdXVmVfT7AssdPxuMsN0270ROi/eEfZ1oCLOYdUc4Wv/Tpf/n+y5tQE4a0WY5jsEsypTzNHzhanOX4dssv4weLrjIcJUUr5IC1RiVA7GgPIXzFBz6lL7oqra2QaUNdRsnojqnzLe84MB4x6fBQKy7B4RAxcBAHJwnpId/OYpOEtN92FpckTOsaHLeeFJOTWSpaV1IncgMeMcbcl73d++f35BJDoZz5l38AACFa3HfFDPIgpwLglPQbSVmua2WJk+xMuKwbdix7BlggltoW1msz+1XLe6hyUfN583lHR8qKMoRkFMbBqwCg4roWmwVzPtBVZAowUCzg4EFMa5AQQgBAuEuW73m8rQIqQHXO4d/841NNwRt2bdnJOxZCSHFZnm9xxZShhJ516lxVjoZhx5Z1wTuP3HfBG34l7wBJKVFnATICB8CfveEvQ8mRJ3umoPNKqBSs2EBScU92S/6xACGnAyKtzGFJMoRJxR1vLKXjzYcqY6eDv/0lfs2r5Hf+Pp2VltyFtzww16nZvgic/Vx0E713b18Lrp1GCpdBKssJLuFpgOYP7Cvc8Rb7zcT13MknpxK337gGG9u3//jlY46HTAbKEJIRSIBZP7SYTQ8UCCGJHVQL88Kwn/nT1Bpc8/hrf6h1173aaNjdsWZNy9LmIiR75R5lqVnUCep5R0HKihqEJDHnyHMBluqW8v25pO+d2OqaGZvY/Vb2qp5ljz+htKqSPoHWCePy4I73ZRBjiT3yez97wm/KSmwTLa2iI+tlGxVQFcfhUfXL0dB+Gw/G97XnKk+68bMHf/zf5B0LKZ/y31CScdtvP/UHZp/yowEPOozZKdUlyq0raZySPDanrqQjyrrNRl1Jd+QbTnTTm/DIi/XRW1MIazI0L268+m0Hn/ks57KrLDH4+En+s465xBeteExZTlgp/azT+rSxs0MWrK1VtHhSk/F1JOl+E12PzWmmOIrGnT82m1FUZFJRg5AkVQGo2D/xZ5bTgcjRINJZa9wEvnldSMpygxKnaDd8CcXu/qwbWtRQ3FHS32NcQ9FGr3Pycf+W/5xCTJPlug8vOVbH03Y6qyvL4VaW8y01CEdStHhSU7AGIZqApsD2+cCXvvnj+zOKikyqie3aRDJiHrgc4KwwQ9tjfhAz69wIE88VbF6psiv7fIBlj5/srOvPor+SdxRFxAXrLVyQ9VZQMwCWww1AWc7zKmZJKK0uvnEj24rWFbNo8aSmJEMDjGCmu7zE8RRq/vSbF/IOh5QMzUNIkolO37X/TR9sGZZnKidQWZ/qizZ/WlnQfIYjovkMd5TO71GD9/E3GVe9IZ2YJkvkNaC+PIYN9VthGll50oiETKa07mcsvWQ656MCZSg1wthuMt0K94SDFJzznP9zxXJnW13eWxDczTscQkjZIFgv+G1x/0fyjqOIvvXTaLtybJsrYHKObDexmbeiKUkmMM6SVWFsWeuulNy7h4Znk2RKc6CTIjCveYP/1T+v6DM9a06jhRg/WVbZu5JOaJ/Fsn8sDWzgkvmGUQ1eCADEV8GVTPhMG7bRBqW0F5mGgWH75MXKSzbP3lThjM3VnYA5tuagwpBJyW1be8KIfwCXsIujRrW2ZPERqGvoaF1Dy4IaqKNJbb/FXI+EXrZk8ySv1GHlwd++vv68H83gQ5CJRQ1CkoDRuLD65g+ajNvh8chsYODnHREhpLgk71mqgUvBLK9qVoMIfHDh1peIo1/PO7Ticm1jwYtCI/JVO6xW9nXdSIWhjRW/k3dohJDiampgqnZ+tNDh6uoPn2jf/qm8IyJlQg1CkgB3m5Y0FtjByK0aosXMRl6RTOy8fBmb2P1W8q4+pY8/RsOf42i0qgaIRWkIhYtcSACAM7fkHFmB/dPLG5WIN3o+48rsRD03sC0d9KrKqYDWgxcyESjzRv43e3ceJslVHYj+nHtvbLnU3t1qqVstCUmAkFiFhABjzBvGGxgEiM1mMcYeL8/jwQv2jHe28e55fn72Z7N4bLNvAmzGNuNnG7GaRQiQEJtQSy2pt9pyjfXeM39kVXdVd0Z1Z3VERkTm+X3xQak6K/JkRGRE3Dj3nnshUHt9WkmsWhIsWol1+W9+uOiIWJVU/oaDjY336Bd3//k3ZM12+ycCjZG9YOLR+31xV1KWA94t5dQWmsTaDHR8e0YBNWM3hjl1DZeTOYfuJz78cNgf2zVQ3poImwH20Vda8IG+SxXpGppWTZRlrCoP4EYcqhCA33cXTKyWRBtse+6RN974nrVxxssqrXxfAFZWwpiFl30o6X3H2LMe6HrUjpVbdFBnmtgMWM4mdrvlfeHPe2xhVW5cUiiL+rIVO0u11qprGrFzUfj+5xJXtz4X88B33vkCEetIGN3oR92aezCZX0eeqIONFWcsd6eo7eZZs068QopOKEsGD9joxJjRTNFsCsiiA2CVEZ+4a+Hq55+sSZ3Ua0o7cV8rlV1vpZRno6M2SVInbMoozFHfuCpNqpTwKeWfqvKx0ndL3gdEzluohPU5hmnGc4Edh5GW9X0UrmmzLvY9Jv78nxcdV9mduOvjB1774Yv2XxxLT3hCrCehFdnSJlOy/Y5UqpQWEiIMWUZdT+5bmdtU40GiGjlXNJn0eJJJGFkxSCcJxWJjqWP8/p2fWv34e/IImU2eyjxpZsWSB68HgNWwsyCsOWW6JumKOiZR0XExVkpclRQAAFrJyVm96IpZ6n6nX1uIoWb8dtFBVYN78Ol3feFAoI/2A5KuMNJ1Qy4qcw6c0dod3m67U7bt1lfaVvNWgJ6TrK2sW3H8rdc97+ALXlNUPKxauEHIzos69KTaS94mF2uJ72DQQRnVVdKxLik6Lpavie1KysZCNRD6fqJ7onFRs/1g9L7/rB+4veigquHkQzMXP3x1MbmsYRxCPxayK2aLDooxVmLiUtFZRaVtGZnakm/rJ7/7iHXg4UWHxaqBG4TsPDgHyNsjlRtrocyxnm3VoNZP0E1Wc3/rjIoooBi+5G5Ci0BU/WNVfj7DiowtlGHQ82BW1zpx3PfmAdrmgS8WHVQ1tP47xlfbfftEUkMB6PTb5FqFRVO2eQUrUiSGq8KOSUXOh6MipKFL2uvd4GTU9CBI+nqmKR5yo3pXSNk4AHDZGKNmVVX5LwwbA3fP/ui2N3djksoW3owQIgxDY4zFtSEYY+lks0H9eKXe3atFfOXd4obvBQiLDqoylj/zgdu//4AbNGIQ0HSEP3VdjhmbKCM+EETCoUva65O6CvuhZVkRmBN+JIWNPn7rDf/3/he/KJ/PwyYKNwjZuQUPfP6i7/tPbmMmiqJWYASBrSyhFCRx0aFdKO4SuTu83UqqZE/K263+XG3J68SrtK5f9yby+kVFUkXra/eCg306YmLX0kaJ0af5YWNRtrFkaaoSZ9lUZbtRuzsrXFCoouRie9ENYt2oPeFDH3S41yg7D1xllJ2LVXOe+Ao49JQ4iixIAISFZIxGoSj/YmzpuCppKZXuEjmq4R8g/90ymVVJbZjzzX3JzJznLSWdi83tXO9uFLd9fP+ffWR25pqabhzDZEb1tcm51yhXDd0Vnj9wTKasauiotEDQoIE0GHAco0zY7qG1ZNYfWv239+X97qzqyvdFYiVTv/T63vJhuPktTnii0WjECQBAnGhh2QCARhcc3xmyOuem9MrI/aFgRaYTSJMWfgkfpo4kdbfkXTg07+RezvFLZfs+mZqf/M2LAeq5vtdEOnB37+Qj5GM+ugp6vh/3bZHz+bZs55+MDs9pm0ai6ufbVAV1dhh5exZUUFoYRUTSljr021HgNt1Zo6Kw/sUfmVl82c+t/O3/U0hUrCq4yyg7h979X7j8+17b9FTDsrQmE4UIBq2ahaCT8l11sqp2UlQRhYpXa0kLv+Ifq/LxF0WbviODWX8WoA5wc9HhVM/JR8hDn/ZXYoXRSk1lN2i7ZEViRh0rlSbvIjGcCRyTgrq+V6VrKBocujgxSoW+H9sG9jeayojVuN1X8dUf+46795qio2Zlxw1Cdm4n1MG4vRKh9MkRAghEbBCSQHCPY8ZyVfX5DLHrALQB1BW/DHBr0dFUT4hu8OEP7VW1NU94ycTOQ1iVG/GqxMmmU8eiGEJbOH0JLQq0tues2QO9yDk65z77+WXLY7Oy4QYh24l98AYACGccVwE6zRAcDYjCIiGliQRV58aUFYqL0EynxCxG1IxvfX7ynd8tOpaqMke+9ZlnNxYid1k0i46FMXYhRsthp2UC015vAwgTIykgMZtYs313HeR9s1HTCu757sX9X2/l86HYhOAbMraT2lN/pnbwpljOaWoXHUs+MuolVVjTuGxjfkaU9nC94h8LMKvBT6PKqldVRklIjFtQuzT84pejr90D9DeZrHMKXfpTf+j8x5+dh+WERuw1WpUv0oiH27SNCUxTvuRk6mDrlJdXZExgmpw7a+zQ9huJihU1/CPH7jjxUz+UyQrZROIMIdsJeot9FfcCv+hAGGPVE7qHcO1wdNebgf6l6Fgq7P4//4U91v2ka0UHwtjOeJRlGSXK9NA98VM/JH7zF4uOhZUXNwhZKuvAE3r/+3VK7nObPJf0OXCXyN3h7VZSGRV18CBs/91/kYuLecQ4PQ6+9D+vff1ebdaKDuRC8Ri83eHtNtny3r+kjdULLDo2u3B1Vutkk4cbhCxV/MAXZ295sxIn/f7kNgi5KinLQd7VDqsijNsAc3rlGwAPFB1LhR1555/AVY+IGwdTX1GyqqFpsqommlk8nM+aaJk1tHIu7iVIDF2yWr+thELvkR8lfHBiC1OxC8cNQpYCvwsAuu7FSWR5XsMgDF3YzjgDtjvV325i+JJ3OfW8q5KOGP8+cdK79qkAbmYBTKtEyRbdWXQUjLHqiQyGtUifmFv9vZ8vOhZWXtwgZCnoE2D1mtQLY3saa4ly5rBQPJ/hZLjvXf8VW/cBrBcdSOWFcGI2XqxKJhBMyjKirDLtaZnAsnXFLFs8mSloXsGR5fxAbdSqoVmxBemuqHt9Sd3mT/1S3m/HKmpy70TYhbGvfq33pCcAEJLT0ZEj9NCXiepfqkbDVUkLlXZvVPGPNaFVSRG673xFNutnAI+/9XjRIZy3jA7nrL7WaTc6ZWtrlS2ezOTc9stsu1WkauioHOX63bVGbcY3/bUDjcNPXSgkDFZy5XtCw0rhedE3f0+A03K06EWOExcdD2MAk9CVdLrY1z236BAmx9qnPlJ0CFU1sZm3sqlKJnDK+H4Yz1tt6sW0IL8h4df4yGdD8BeVDfVBgMCQXw9wvW5haKW9burGFmbU5w/F8CV3E9pncejnqFDakEAMXXJ/46y6SBlHGhMrLzRiBkiIBoXE6cFsBUe+cfvN+8jz4sAJTW8f1pIkESYMlV1YTCXrGloV3EDdnaoUiSmqa2hqPODaYa3RR8tK7rl3ZmmJ+/CzIWTRAbAyUg//pdrN/U4cLEaJY2HXTpQe7VxW+RbGqLL6wEXdEkzKDsPU/6gkrMgBQWhJsRxbge3PRaKbYKdO2l56VO/zb80pvinUvevTh974PqtpLzodFO5q6GDNSE+7/ZoRSTExcROGbVORc27ODwsLLJw7lIJVbcWhpbUTLjXXw2/e3vv0O4sOipUOZwjZWR51TfKN3090WIfFYy6uazXf7xUd07TgLpG7c3pDCd5uBfCkbJt9M8ES2n7gHHAjVadZjDpFxzVporXjHXfPGhxcpkXbCkLTDvueBQW1BsuHM29snKpyvJG9vw8HmgFRO2jO7D/+Bz/4uFt+s+igWOlwg5Cd5a6vwW//Vi1QNenX/Ll5a2FVzRYdU+lxVdLSqHj421SlK51PSR3WehhaSkN0IrAuO/z+l1C7OkVQKsJ/8PDhZ+8zBhYwIdNddB6GZiUWKvc3rkjXUJ5XcEyqMlaw4vMHZqVjgsXO8lpjfia5NFh96FXvNXjJw4oOipUOnyrZMK98u6d7YVxz3ZqMWoGoWzC8ymhWJrZaaVZtuZTGTe4PIys0Dm+YtPBL+BB3JGWrSoooQuHPhs6a16+bvRAtJyfv6/3bG8Yc3TS48rc/uPfyx/kNTwgRh8GCVX8Iw0beoz9KVjU0/Q3K9b2u+nkmFVcN3Vh9NW6hJYXaIjA1SHRsZmui0yTnX354vui4WLmU7kkGK9jeRwJALVELesb2LjLQNkkonaKjqi7OHBaq4uGnKlvmMCS9QAu+4+jekgdHXAMYnCwunEk286gb1pdq0vQtoySojooW3UZWK0fCocuo68n9+CQavrBscSYQAKqTCUxj60aM1O8HiAROJ46gb5ln/RN3NWfbVOaAZmNy4m546TutpPegeFDEK2Dc2NpTC92iw2JsBLvt0VYhImXJWcqNlyOS5WBZ0nGvKfvx3PEP/Di1Hso9mKkU1Cwr1IiiE9hiHtF31ruZtb2rMiaqbHi77U5VtlvV40SKE6S5xp4udBEiqsul2dlujxuEbBtuELItmmA9+WVCCCEXm3AtUmLrxBKyhzwWiE0ULt6TLSF1TeyPaZGi1QQd5xn/rXf33xUd1GT62g/sczT6YvGg3en0KEGr7uU/hpAxVlkna3M134LOyf1UC42D/eTYiZBMt+i4WLlwg5CdpurPiA//7Z7gXt+q9ainLBNrANTK5D7PFc9nyPMZZuic+bJyh797Rc1naLSl3ShIejNCaatrwnbe7zjVSO0JWydE5KF0PZt6qfPEpqpIkRjuGjomVekaOiJCGrqkvb7qXUPTOHqdqO57tZ6m+cBeqc15zr2rh7945at+qejQWIlU/kBnGUqO/Utz72e1dV1I31DUwWgWAED0NBU38TFjrPRk3Pcgduq10I/Ct/+Y6dxfdESTrK7Dji1iy0kEhP01bFb/SQZj52PEsYJZjYmtPJ1IE9kudaDVUOHevr8q9xy46fHfftvvFx0ZKxFuELLTrEf/FD1qreu2FDU9nKeEALUmCyizogVsPLhL5O7wdtsdKUQ76MaxHTRr9We8Vn/lI0VHNMn+9cUHDBlp5IKeJQt7Oio6ogtV9TFaRcdVdlXZbpMaJzpWkAQ60FhrnsSOI/ykA186Wr/6DX8/zrBZyXGDkG1QT/j++Ct/3lV3h0ns4QyqVmydACUFoRSrRUc3NbgqaaEqHn6qvLv2BWiTs1Sjk7NBhyIempI7aUy9u9bW9zu4UItTi35VpWoozx84JlXpGppz1dBpY/xENWtJIGpmb99qtEXvEhcv60f2lY+/6QN3Fh0dKwsejM42zV7h/cSf6N5+ByRq3ScNtmcJB0ItURZVjmrUYYQTO59hRtKSXSV8CFoq1d9uafd82dxjxVivyRaE9ePveUX9Uc/KZJ1sB3YUaFVbshtHzTErrksrHvqy6hyf5cLbjU2SOeO2KUCBsB7OzM2Claz2TgROY97q+qFXdHSsLMr3ZIgVY1GphSQ56Mm+A5pioc0MiCYlqGMjBHcZLRpnDgtV8fBTZZX5qVs6abVbVt39nl/p3cXdkHL3qR++mmy3tU4OUtI0nAlk21QlE1gQNDh0KTquM2XVhbUvwVBQa5rI6a2HbZ0Ip7EUe7XVzmLv7i/kETmrIll0AKwcHva45Av/uHDZ0/vQRABSPrm+JBABAOrE66GuRjK5dGf0vGX1gYt6IF71HVb5RMLwW3Qc9YP5fTXbqHXXwvUH9AOfzydUto198Gr7sZdHEV0UmGAclYWzwJm3MSnmxJpZZjXnZ5TTVlemK8iRqH3feLY145EfyRBELJsefOVnb/Se+v3J/d8uOkZWvIpcRVje7vk0/PTvdJu12FJaRVokqGsidBwQjuMEiVN0fIyVERehGXC82nrkrN7603LtcNGxTAv/+N13PPNihLm24ge7bEqMlsOuSiYwTVYZwhpIETkKF6yeEMdaHiI6CCrugDjw99/yP/kPeQTPKocvJAwAQN70Y878TRD6logBEMBCAhA6kaSBLBLpnX3K9cQ3rWtfZa4AI0vZLyN+YMThS/67N5v4C1ONr8UujJY5jJOea+8Fywm/+t4xBzq1ul/5zFWv/4hevLQme4ZG68GR++FZkUxg+cYKpsWTckJMvTTnK7tMoBlxCMNonY6rkglM255ZPXBEMIDGoAYJaEmDqAEQQAlJ/frcY65f+7f3XfCHYJXHGUIG8KQX6M+8FdrH4jo/IGCMjYysPWr1ruiLbys6kOkyd+1Nlzv9IG4WHQjLCo+yZONzlFpX2IGnGgee9/NFx8KKxw1CBrZ3AF7znqby6n5QdCysXLhL5O5M23ZzIFj76C+pvVcXHch0mVfxaiK9qF10IGVXlfnl2O7w/t2dQ5G7GvZnLnv0Ax/8o6JjYcXjBiFrUG1h4QhFnojAHv3PRcrCCsVVSQtV8fBTpY3gaWkNzWayfrjoAKfLx5598ck7b1vds1BUAJzPmmyZNbRynldQkBi6ZLX+SUVOo412aKkDr/6DomNhxeMvzNS74gnxR3+vtWRHQU+Yie16ZHD4wnZn2jJgWan+dhv+AOhiueI87BngcPWpcbvv128xneNFR8EYO7fCMpkp05DECVBNtbT9wFt+sXnTc3IPg5VbhW5EWG5+4sNWpyW8S9z4WEx5DyPM7KFgJngi+w0ZJf2oqN07hqRlrkyl46feu17uXfoY//4vFx3J1Jl/4c8uXf8DzYc9fui/ZnVUpd0olK1XXtniyUxBya6Rt2d2Sb+U1Vf7lrWw4zPl+KHIN/acC7prya/fMj/moFjZcIZw2tlP+k8L7cRTIHoP9pRfdDjjxplDxi4YAgC3Bgux9t7/N601yNh54jF42arK9rQdpybXhW5j2Dr0G+8vOhxWMG4QTrcrnhR99i8iGWJUM42G509sl1HGyqzqXUmta28uOgSWo6rc4FZeSte+osNik0kDtWK3L/YqB2cecf2Nb1spOiJWpNEmL2KTxYXvfBZ+8t2zLbOienZkhdJVEOX8pmnXtnJ1JU1LEnIX051hyu41OnWepWzeOK1gS0W6kqbWmylZ+Ai2pKQjA0XWHrDWtBBJ0v3AD8uDTys6tKlGYAAaSFFPrB8KLzleWwFEkzQUTWanD26L7k5m2427hgJACY/DtGcHKfsrArA83ViN1p32bHCxdnSOsbHS4ydP00wDzM91qYtWIBfBaswCly+fVjmXxax6BowNaGwT9qRwVGyvU5fk8YZ7BGCfPvLFokObXrc/f1/sJAYfcrBTF3LZblFkE/Us2S86NMZYec1gK/Htzqwn44VoJl6/+1NFR8SKxA3C6WUfugFgretAn2yLWhT2+8RFAhkrkbI1pG2sd8zcrJ4h2Q7kwXoyUzMLM9c9BaBRVEgMANY+/b96S3Yo5tv+vkRi3+5YZkn1Rx4CwF1D2Tjx8bZLGXUt7uGsK6keLScC/Fh8+w03X3rza/OIl1UCNwinF85cvPCyv7bWW65oS3GJwVWDbnHh8HyGpZRR5hDF8CV3FZ8QsGzhR2AcWu6Lvk2zOjns1+a+865fliQBeOaDIvlH7/v2027Qsd7vBVr7M+4lgGugwlHXw/MKjklVxgry/IETjWRD9Fb6ludB6Jnud/3tCl768KKDYoXJe44BVl76xNfkI18dzJs9favjxkZ7tkrK92yuXAGl3aBP3T1TVh+4qN1b8R2GKbnDvN9XodvHYM7QuoqbYs6KV9Se69qfeydAkPdbsx34d3z9qte/bWZ+ruNSLfRMb6UuZo+JvlvxS/zkJovy/apmN1Yw3+2PFXk2V77jMG3MvAGkIUsKSShmPNkViXvMBJee9GLVOrl223vyipqVGz+JmVLeZU8GgK611kiiNWnHcX/GtqNYE8DQpTicOSwlzhwWqqjwQ+0tQqOryMSiZtat/h7snwRYy/2N2TmcTLoP9fbV425gg3DsuWUM94lLUl9ONHxh2eJMIABwJrCsIh1AnyI3Nv1Zr9ad1fE9r7956fofLDouVgz+Qk6ry246+KpbF9RckLg19GwlViJnxo7LNmapKng+QzYNLLm8FrdUEnu1mb62TnzkZrN+ouigGABA79i3v/qMPfMWthT0Zozqydh8s+igzhePJdudqmw3jnO3AaU8UMioAb8geivkKct1vUY/qWmhn/aW+5e/8NE8Pgorv2r3J2G75C24D3vqcmMv6m4s7FiYfVHP1JP1YNYScdHBnafSXUuGqk6TUKSMHhpxO4/4gdMeQBR2Ca7ODhsu5+2GqF2xJ0SiBAGN9Ob8r7w937dk56f35U8/4rdvhUsevSfUq1F/ybmoI2Np+JlvsSpyQuGuoSWV73RK67KxgDGEa5HxZOxLK25KT8zOr97xL5msn1ULXy2m0IHankd3b/vTPZ37QusSTbYH0ZqpY9SwVS/tb7gr6e5UJ3NoUpZ8pT2RTetKmvsT3Ip3JQWBw5eMaOFEaCiOXBU6UgWf/6us1swuXNRed8NuS1JdWgR9CiV3DR2TqnQNHREhDV3SXs9dQy/ItoNHAam8u/LWkrifiMCdt7Xvyeayc6CNx779V78696RnAezL6l1YVfAXdRr17//2ZT/wW9bcVRS2XOyjDHzoRRTY6TeO3JWUnReez3CiqXhFWaScOdnFtXe81Lr0xqIjYqdF99/12RfuS5C6EC3Hq/OeXXRErGRGbGAg4dBlnCFPq9yfxgKAArJNjBhGql8T/uzy6qq19Lh3f2n9s58fw7uzsuEuo9PIveFFvQNP78WhNJ2aMJpEYjlCCQwiEFU/JKrx8HvqrqhclbRQWVUlVWBHcezbuCCVXLy6/+V35xEt25321z592etuhXwEX5YAACAASURBVINX7MNZonhNh3bJnvmWcNhYRrhqKABU5fJb2uPwjKNopwKhmUgEAYCQqm8iLeJZ1w1DK5q7wvNU+0v/CFCVAUQsG+W6WrAxcK97WvC5P/WppUXHc0Frzw8aEmsWCLGLBwSIw5fCVKMr6dThqqSFyir8ntBk7ZkL2wH1KO7kECm7IO51N2G/3W8fF2LPUlVuzytkQruGsulkGxkJMrGaE5d0yG2J7gIFM/cde+Ctr7nyuT9RdHRs3PhENn3mr5p76V/MqtjFMDEiQk86njJREvRBOUUHNy2qM7aQTbJRu+DGUKvTGuHMyrteFbXuH2eo7HxgHCqwaLbRo+M6mCsqjNJVa2SsDNIeKKTVDs2Z66O0haHQCWAWZgM/CW2f9uL3/fURuJhnqJ863CCcMt6CcGcj9wrqaBE5WstEJsoOJHVA+3F2DRIuQsPOC2cOCzVq+IvorsUtLWXje37Nv/PDY4yUnZe7X3hICcf3aVabdoN7fO1W1TOBORcjQYNDl6zWnxV+MLGzyFGkfaX6HbNCNrlOM4jUSpzco9XSjT9QdHRs3KpzgmNZUPuu63/iT6zWvYnt2k7DtiyAIAg7xpDt1Elx8Y+CceaQlVkUHp2ZWfLCPoXtomNhw6196sNzZK+itT/hKSIrhhswbIvcM4RRXYWhBgNYFz70tNY2unuocZHbXzl899Jz/2veAbBS4QbhdEkOf3zmOW+Omot9J+wlPRMENkqFNUFzEhta66IDZFVXTCaWH0CMh7FmOh158v2vpHXuL1pSyZFvfuZFswpm12i26FhY2YzWd6cqmcA0VW5gj6PKKLX6DWcR9Izdl81O4hKARWHSaZuGvOym5Q/99zHEwMqj6iUl2ShsW93w43TxoxMduZoQBQkBRAjGCKMpUdU4UWZr6Gzso0/InrO0rn3luzJn1Fk4ow+WVvOIzPCQsmtDphxX5dthQ5nNCvO4ZashoO2Hbr2WWIvhlz8K4BcdJhui/bVPXv6Gj7T2X3koCCMpCBCQCAABBAECCQLK6Dgv3711Wjwpn5dEylc1X9lVDTWANGRJ/4ORPm9VZphI256FPShMO67S9teQvZblcXhq++CWa7IwABLAJIDGSDISaXCmEKjIGEvMPfKpq7e9K6sYWPlxhnCKeI97YfLVtwf9w3VZ2FW8fGMLWSnxfIYlcMblgRDW9jU6naPJFz4GsFBMTOw86M7xx1pHTlgEmztxcGRXJ7Wza6M1eBibHmc0OXc4GzxkxftkIl1r7/Nek3dUrDy4QThFTGP/4gv/elY6MhhHb4Sh+EacsUoYem2Y8bvJrT+DS9wXsdSsI1/52A9e5UQ+gDmj79kg9zvqCqvc9Y6dG+/fXTr/eqFjqRq6g5FmNLw0clf8rnX5o0588I9zi4iVDncZnR4z8hHP7LvNmqy3Ucix9FAfQenmM6xGV9Lpa0ln0xUz9XDLffdWoytpWjhG2/Gdn4D+EYCTYw2IjWLtq5+77NVvVI9+htQxwJmZ9Yp0AxyPimyLkbuGjkaQGHpGzGr9kytlE+U8ofyoRg1HoeyLyHI9NXswvP0zGsJ84mLlwhnCaaEOPT76h9+R7mIY9LXkBwETgquSsnFyQgNwAkAVHQg7h8Nv+dU9K3cNPRuU6151onHmLVuFbc+qTENiaPgyoighUbM64Hbe/IczT/7ePCJlJcR3jlOk+Yq/00GfmjO1sOVXZddX5tpZroyrqMpmy9uIj0ZT7y2KyqqU6UmzAfDf8SPWJTfED36u6FjYOVz+nFe7T3qOc9UTYZTL/MS2VQq6dx95e+bcq7BCBUKHKuz4HPX4Kap36ChtP8LUywsmxlczQkaOE95x84FsYmOlV+2zAzt/3pN+wnrEf7ASv28iY9WlqUaSMO0ALd+NS7kahGmmrqGYUYOKitq9pWkQDjaAPn539M9vLDgUdn6u+8BRQBAEg1GDm999YSD1hrV859WM5NwgzLJqaJ6q0iAs3XGYdvwU1PBLrap63ptt8IQz7fWuZUem5yeRLRP/7q9+63Uv2kWQrHLKl/JmOVCX3uh/9i9VErZgybX2FjjbIHdxZOenmPkM2cCZ9ehO/RTwfPSVMajLe/bZdZK/RVXp2sfYGJ3xIPic/V0o6IWJlNZ+N9m7cNWNT3/rSn6xsfLgoSBTIbn/32d+5J0xaaNWZGSRVQcIColk1AxVyZ4T7iDtnqNcmcO0tnf5Mofl2m6YsnuNznk+w7RLd86Zwx7Ytdq6Xl+01bqUc+uOX1tXvQ+8WF33vFzfl2UJQQGhvRR3Wkr0bNzbsrq2wCSsK2gVHVwlcSYwW5wJ3J1RT/9nHA7n/POIrLrQQRAK65jr709UMtr7sWriJ2fTQlHUlwjQ7DWtJbNcdDgXiuczZOeF5zPcFRej2a7QtfVAORit721Hc9CvP/2/JV/9YNGhsfN15837YxO50d0PE23tJAGhio3tr3nIaV7GWCpTa0eh12m4q9gMvODoNz9VdERsHLhBOPnUlTcCQMsoF/buARH0qaVnig7qQk3qjThjZdDQsycAvMSWYW3d3bvsRMuuDRGnlSpm/ZMfOOxb92lnGfZ79qoi6TrzJLpFx8WywVVMd6kqXYszqho6KoqaaOtGtNr08Tu2uOeNz7v4ll/O+01Z4cr3BWBZo5lDzZ991zzGcXjveuzMypXEndyuwqWbz5DHwpVSRplDFMOX3OWc+ew4HUIMpLTd4xS15/Ujwnf8SNA5mtX62Xi07vvO0R++Jpqv7zfL7ciRTv2hYN2YpaLjumBVuaHPeYJyQWLoktX62XSqmZoJVkjWlR0fDPzr37dmHXh40UGx3FWj1CS7EHT0rujhL9d2sICzuo7UEYmbSM3JtGKV6yFuWvti6o6SrD5wUbs3o/gN2rG1ui/Y2xKrrr3XMofhouuiz7w5m7WzcYnu/vzVv/GhOdcB2hM4cRz0FlSzL2qSihlDnp18z0zZjRXM90SARU2HM6LyJS3TxmYbQBqy5B0NAcKQpShEoBfqcSDmzbF1ujQWCbVOrt327uIiYuPAT5ImHB56IgBIHc71aVk2onaE0kbtFh0X48xhKWWVeRt6VzGGOSQyij9M4kv8vTFq3Ws4sb/sdpPwWB7xsryZlZNGX4VO5MZgyVDo0El6RQd13jgTCACcCWTjJUyc+Kauo3Ywa7sdLw7uef1zmzc8H4DnJJxkfEKZcNalT1Yv+yvPkt16LUkCux71G82Z8KGi4xo3HnO4OzxNyO5U/XirW2EnapFo4WJNkYa3/WLUebDooNhu+A/c/7kftfyYtBFuvY49Iqfq6cHMVGUMHse524BSHijk3IAfOcySbbeG1ZEdN7YsnGkGcR1N/Mi339v53L8XFQ8bD+4yOtG8RefypziNKwyE2pfGtWf8boR9LQ4h+EUHd0HMiF0cK3MnXrKupGmqsz3FsJ44OPJ2nrKupBIj3zoQYGAFUWI1rJlr439/Sz6RsXx1vnHbI9/493rPgT1GrMShqe2LYE2SVXRc56kiZxruGlpSxUzbM7KShdNWDXJ9iFtoGm7SN1bi2J6a8Vpf+t8AYdHRsbxwhnCCXebueXT/U3/u9e6PrItCx2nqfh/qllgMcLXqXRYFDV/SVGeaimrsl+pkDk3KUoy0IjS5PyEesSupIWWsZY3ak1Ifnkn86nQyZGcxvbWH791z0rTmAQz2GpFddERnqUrX0BER0tAl7fXcNfSCbDt4FJAqWyawqKqh52tz6zlRYvUcY80b3VHQaNmXONHx+9/62vkbvhvg4qKjZHnhE80kC+6/96Lv/3WzeEUctR3RFSLUxsckmDW83zdUp6HICjVl8xnGkZaRtRgtQGQHt/2H5PCni4qEZeDotz/8NGw0DiV2zw8E2pNbZbpkkHDoUnRc06BcU8lXwJbnDokki+JaEhkZWFbPWl87qfY+4W++tPa5LxYYIMsbdxmdZNYTX9A98LR+EivTrgvQJBLLVkJS4JNKuyeYrtZQ2W7E01Vjv5Rww+VrQruSNtVsGGPHPk62o7/8AerfN96wWJZW7vj4da/7h2huydNSuH5AtqSy3S5XpGpomqy6IFbjNF/CqqEDZxxFY6njNZKyhXNqP27PQhtpJAljiRbFBMkeyw5Dq714uefJ7pf+CSAqIFaWP84UTSz7Md8Vf/5Pje5Z0J610SReL2wY6SWWiFRVBpAUp3TzGbJSmtD5DPvmKNXiWiTDIMDrbsk/DpavxWue/Cjlasdp+d5SXNx5rOpdQ8vWBZGxC5HyBXS1FUiKEzUjL+kbt0f9Beo3jhw/+rbXHHzejxUSKRuD6pyI2Yho4arGy/9ywY48TBISkXQt21Em1kEXrR3GkFRjDBsrp+qMLWQ76aJuhhIcB97zGlrn+qKVt1eoozqkvtzTsNZEu+hwGNuVtAcKabVDi1K2sYKjPogJSVngxGG9bzw5u55EoRN5i/jktx8W+68ZY9xsrPhGf0K5+4UzF3hX+D2jjRWAjFWi7MClrhMHVoWeyLINaQ11bsBPtILmM9xHj1pJWn2LANbhyO15vx3L23ufVz/aVmhF3X4vtmu5vx9nAs+xehy6ZLX+rJRtOgS2O+n7cfhX0thSm4CsfgtW0TENey6I5XGjj0cz7uz8mINnY1OdEzQbhbzkmvDf/ry+etjYjmU3XGmR8aOoC5ocu76rmjLc8ACo0pjDcuHM4e4UdbwFweF6fRGXF+DaWwB42rpJECbijnv21hJnNpnYLx43YNgW+WcIy5YJ3I0hN3LkWlFoIimpIeOkLyLtgDeLjQNu5xtvumXmic8qJFCWt4m9MLD6qz5ixXHPNrVIC02JbUUGlUFhq44Jazqr96n28Im0NknaDBZpX5jy3XNUY7/sMFNIyaQ9+0jZzjkn8fKuCeK7kRXNhG9/Pjz8JfCNd+X7ZmwsrN+hKy9aa9bFqlxu6Hq+b1ZQMjCz83BGycASJv1GYszw7VDYM9Cdj6tte23wc87HYUXafpR6HG7dPqe3XkjQVA6GCRHFIhGKBMgo0YljRGjd9UqeeWIyVftsxYZzHPXEV9sPfxaEPopkpD+lzCpiV6NBkhluEGaqOg3FEZWtoahdUuuAdWNcQz2BZEMNICIRCl/37rg7uef3cwmUFeHKN6/Nz7YwcQFMZAEhyNA40guMEY5MwgittAMo5brADb9zrL4at1ile6CZdlwVNCzw1PbZev4WVLpOLukNv2xo8LRYDe+6/d43caWxCTR1Xf6mQe1xL0i++vZ+77jw4qJjYYyVF9ptMlLrWKq27YQoktiEscauiTu3/ii3BieMH8IX7jwU1i1t161YIGHfFf1aHHndTrJmey4ApiyMTbsznuaVrTU4BjNJXKcmON7Ss19TdCwsezxB7QTSzYv2PP8vopAgSBIcbYaJtK4gpXuCWDK83VgVaeOiJEUGEoHCEqS17CsLXZz1DQLcAvC+omNkmXnoxNxVV6xDq7/iYVNoadccY4l2x/VIepbuJXxHsDtp53nktvTOSpYJ3EG5ZjRMzcznG6Xv9trGuBc/+t6/42GEE4gzhBPHWyBnfjmJLUuFkPNAEbaJRlzyx0WASilt3sKM5jMctSqp1o6QGhFN7JpYIQgEV2vXWQ+c6/6EW4MThl6HycOgNlvbZ1mOFftRCyMxB3shdAQ6IhltfEGV5Fw1VJAYumS1flascrUGiyueRJFrag37UvfyX/tQ3u/Fxo9PWJPGvea50f//R8JbCH3fCDn6CsyISxpukLDd46qkuzNqVVKhfEO+0SSklk5bIEA0F/tO58MvpVUuLjqBWp/7+89873y4Cm5ozwgrok6/Ab6yg0ijW7ovGFcNzVZh27Mq05CUrWpoybabwprd65uH6nPX3vTY9x4vKgyWk/J9IdmFkTP75275a6+1ljQP1jGzCYh5uoXdKd924/kMp1JK5lAAJDGiMMoxWjtxaFmqNzP7gDYyfqhbdNAseytr3wZX+Af2rpBXx5ono7Z+UMjE0RCL9Ad8JbsxTcXzB7JxyawAX3UImSzE9TodJwE6pQItq65dZJBYqTlXP1M1FhzRC6NeYJMyeQ8KGfWkmFa0YLoe+pavoZimXPslrWdlCTdcNjL6YGnHmzAOGRR2QmQlfl2K0JV+3JonOqhXfjeb92alctvH973oF/Yf3NPzvH5fLEpBGCJJO5GgMD1XlO83LLuqofmer7AijYDyJVFTthuakbq4ZyV9zOd5rwFHe/3ulG03Bo7xk2WllkKI11fv7j7xcvj4x4sOimWmfE/42AWwr/uh7sd+QxtYFXvqdtOO7KIjYoyVl8BYgEUUxzomabzZlahXa3/8hdE3/7jo0FherLj72R9+/L54JV5Y6Eee1o7vOIlyrIgqkwlkbIzOmAapIo8FslfvxxIPBHOrsgdHf/oZ9Nu/XXRELEucIZwo8uJrvGf8kkA7cex6GPVkV0K+bULE4QtnDidFNbb/5GYOU74XGX0wEm6EJ5u6kdRqMgh8CsCeiT9/DajvBnNfNu/BSqZ99xev/fV3OfuegGa5K/VsPKdV25FJW7oq525gWc4fmGdmCQ0iDVmyWn9WSpcJJJFyviomE5gGabTJVc7Y89lPxpK23YqSsr/aNT3ji1BL4dl771yOLr88+PQnAHh6swnBT/4mSnTHrdhoCglxRB0TzFvzRUfEGCsvI47W1GU+QLAWuA3Xs/ba3TYAQMIdgSZZ1GqbYMXzFQkJyhI4r9t7F6hfdFyMsfJa7JpEy6iusRsFGtd//034m79UdFAsM9wgnBzWoScCQNdfEUIIKSxrX7vTKyqY6oyRKxfebmycJCxReDy2hDerVGu5Zfz1f/05te9RRcfF8tU/ctdnXn5lKOabqtPz+06wjN5qUGA1xYJwFdNdqkrX4rJVDU1R2HGYVoQpZf8KdIwDF7XQtpQTgaSvzDeuyD1INi7l+wKz3TKzh2Zf9ldNdVEUYDNGDfda83uKDoqNhuczZOclo/kMMaZQCimQwtWoOXdJZwna7WT92+P8KGz8Hrj1Ty77rY+uOEkUzKpm24cmea7BuaLjOgvPH8hYadxfc9xkfc2oREYztvPYd2jLWgTg+8wJwSe+iXGz/sr7W7QYJauWNZ8k61I4nc5KcTf0PJ8hKx7PZ7gzAXWtTqpkPrK1WO8Ja3nmmhdCGBYdF8td3DmxaOKGbgdWTVm1eP1YjE5WK+fMW7Yqsz1zbsCnvu3wWXXyftvRVSWzmmIhtsI55Sor1KajTC+uH/8vr5S/+bNFx8WyUZkDkZ3LrQCdPeSSOhDBcWiaxOyfd+pFR3Um7hK5O+Xbbjyf4SSQIjC0SHTMixaSxcaR97w87hwuOig2DubI3be/YPE+Z8brQS3puK6nzGph0XAmkE2ByjTsU8RJj/poJT3lzdo90qJv07ea3sGi42LZyHuSOjYm1sN+0Xn8h4WYtWSQRCLsi6btJ1EAYlILyaZdy6drstS0NmGFrjGFSEsSiinbbIFcr0eeb2YdtWL1EgDwj3yu6KDYOBx97+8dfN37lrAXioVENayeb9fa8YjHf1XOMxznLqW1mfNP+o2kMtutqKrdaftrxGciNWVBHLu2ve5HNkDTMVe++fiyM5NBhKwE+AnZRLBuie/5A8trnPTWTCdRrp61F40fxy7PQ8gYSxUldQ81uT2LYqPAe8wLi46IjU90579HWtWpb+Ll/lyvxw+IGctC1TOBaUIkacXH4oRsoR1tggi9xROveb669jlFh8YywF31JsU8zT39g87ek+3OQbJ7QgXkN5U0ZuQnUmV78pfVIVquz5W7jK49ZJAQBjNwKUIkYYA0CgIJYBA0oBFkAAkJBGCiN3q3EgpE1IQAQEQSdco7VGO/TOqJ0kq6kbM3SmApvvehj77Rfs4f0MEnaAAijRXZNTmi4ZWbzr6xIyI89Z0bHCt09jxidMYKCYg2fnn6ldtWvvHz1r+izf/Z+CuiwWoMAG2+Cjf/wsDRO+DvfgWe9UbYf+3Gnz/0Vfjorw9e5/7ga4OPvvn6d3+a1MUEq1bshnK0Z8SZ3eOmZDAoZRxY2pSAab1Aq3IvXnCc27aeAADApKBQUpSvQOg2mxsw//04eKMt35qdc7YZ9Y6WIgGyjEZDMSpCVe92rJMn4vavLmayflasSb3PmS7qkb/gXvNkqxmEsRvrulMPAPo6cCQqEqPOGVquu0BuEO5SRhckaUAL0AiCNk4WhsggCDCKUGzcnYpEqEigRpReDVECohACpELcKHEZiWqcaspYhyBPQiSJQZAW2C70Q892tbAiQkFB0aGVA6U0VIa1CQVt64p8dvdjBHPGHxrQcNZRR1uaiJuv3wxj0O6kwY90+vVm88adYONmcXDrLCKgzTr7g7chA0SWiWKDNq1HUbB4/fdeetkhilciZdsj3nDn3SAcFTcIL+ztz9h6ghuEI9iy9cbSINz+lRlLg5AgBrIVSoLEYIxSJkk9DNXav75l5R2vyeQtWIGqcZfGdvKMp8G/3Nb4mT8z/UuSGITyLWlToo0JJNZGzxCmKapBldUFfroahGlf7FG3m0UUI2oEAgGkBRgSQGhqBrQBTaDBSpQDbgNdDy07VgoAABFQDsY3EgoAQJMylrUiLbCq3FCOjGyBviXiME6EM2cijSK0RBSZRtGRjVfa/jVpme349J9s/VM86zcD+vR6kICINm7gzn5fOuOXZvt/aoBTt8V0eg062vIXdPp0R4M4DRAB4qA1CEQY9kgoSBTMWKodX/+cZ0rhrDmenbSGftrcj/+MGoRYkQrCJT2fnN1sKNlYwbI1CE/vx8ILFI2lQQhojBZS2CiMNn2DWgob0PvKS5Yuv/H59/77B7J5F1YQHjNQecq9PHnj03pfO2gJz7bXgCIduoBaKGM0FjaImRUqu8cABgABBAIIkAgEhghB+5Q4VlKvGa9ubE9IT4AjjdBbrjuGaOO+lEjAqJnqcqEJLYRrIEBQ2jdS2FobsBRFgMZDrPb+Spf2gCnl5ZTSIByaOSQa/sUb9N7cfI9BAw62tOlO2WxOEiLCqXQigthoQ2609Ag3ulIKAgJNRCgMnGpqCkBDgINRSwJg83aQSJAk0IBgGjboGCNJUSyg1Y5P1BsHdNTKvapA2RoYjF2IwtuB44VSkAFjjBQohAUGSGuA3o+/K37zS6yio2MXihuEVbdgqf3e1x5OKkCK0KCJmpQI5QqQtShyLOln9EZFVfVMW/+oN+hclXQ3EtjY0oJAGEJCAASBYWPB2JapucbzQNmahEkgIYPaAAAimq1bHMGItExLuWTWQ7kiaokHRoUGlCV00lOuTEQSksSpqzc2vEUotv9+S2Jn69F96vd4qqm2fdUEKAG2JO5gM2GOBgAE4NaVIyIRAQhEGDQLDQIgAqCAwT9tfJsMAhpx6rEfoSEgMINkIAEYQAWgN9uixiAQSQCCqOEkHQARdmPbFq17js08+sAC+D54I2wzVjk7N2DK01wvWSawAlVDx9I0JZ0gCRRERgBaUlgAhrS+Ixres4BVy5Td/kyeg0+GI1/f99K/ip221gDGIRSaCASRkEaDzL1LHnclnQgp280QISKgERqRBIEgaWmlwr0HAAYXIQECYXDDigAmRMTBxWn7lBjVePY0bQ1CIh8QwLGBFPQSMEo6thYgkm7RoeVjxDFmSMMzpVvHNm/k5Qa/RwNpFWKQtqUQiYaffDZeY7b9BjZ/Q5vjAE853X3UbPztoD/q4PcUnfleRgMRkvDi1b6SmCjSvpzdc/n/9QzbCe1o+Pd05PNqzk0L7hq6S9wg3BVKPd7OGss3HkU1CCEWQiFYxpBOSEppSdRaI4at2z/W++JHj9926xjCYDmpxlmV7eTFb4X6Us03gAZVIJUhY+tEAMVSCkN534iX5hICAFyEZrfStpohBDBAWhAgWlq5Sa2pHde4dQCUwhokNwyQpgSAEAUA0NaOdkQAoExaf5JynYKmbX5CpeLExFoYIpTgoEGNQBQiOkWHNlapN+6pXUZPF4NJ/9utv6czf2MIcLMf6eDRyZZBiYi0bc2nGnhApwYZbv4RbcQzaA3iqWahBgCg5NR7bTZcDRCBaULSAREhSQp9aXuXP+XGub3NWJerSEz66st13khT8QahyX1mspI1/NLs2CAcGO8NAyZn7pqxNAjloNMCGjKYGBKAQggk3fPsh826//Qfm2OIgeWnGo/tWRrrhp9ckpeuJMfArgHYEQ2qAdctGQrSEDeNyqrLKJtGSALQIBAgkBTGc0xjxtTqVhhqAG1CvdGiQ4mgCCNCAEBQZ2SmE5lWra5kXRNTrvtUsoZrVpJYWqohIgPSEEQoDSXGkY0orSFUeaPet6UdnwmcyifjlpTgxv9tjP07o/DMRofPwW23AAA8NcoWtuYVT3dB3WzFnc4rwpaf8PQ6jYbBgxjabGoCIAEaCwbNEq0BANGgEUREuCosaRKipAdKaxN3jz+4OHN1bJXrOK9Kwy9Naua5AmOSp+uR6AUbf6ow/+b6WQSp2IQGEymlkkIAEMWkkwPr+qsGDvzEHz/wl1xrtMLKf1ZiqeRlr9SH/ye84kOziIkpWxGIcl1OOHO4Mw2EiNvyYEQAEEpwYy01xU49mFui5gIgijAgaRcVKmOZ2ymTM5job+sTjrN7e56d6Nh8/WZN0dMvO5VXxM0upqfWcupNtsaDg78kOrW6zWkkcGMei1M9RTdr1SBt/v5UR9NTUyAaAgCLKBFASR+MUYBJHEPDvemZ39OTyiTaVgIAEjIoxCDO1PwDZwIBoEKZwPJ0Ch0oWYYwPRNYkLT9VbJiNsbWsjPz5VfPHnzVrx952+uLDoftUrmOKjYSse+g8/SPuxSbZKXoWFi1pT2xVgZISO24UGtKy0MSaAhGnL2asWrLNJ8zeDaFmMnw7vPuNoa4USho0L6Eza6qiESEBBDFrZVVRBRCEKE+ndwUZbv7ZJVDKYqOi2Wj1u0mVv8pn4ytNusU9gAAIABJREFUxSuLjoXtHncZrTDh1eVVvtMWfW+vMmWbSLpcVT3TGjx8TRo4e4zc4BeWgVhKXauJegPsGmggMCB4NhPGRrdR/DOL9ZwmTo9F3EQoNsYQCtyWhKFB91baSDiiAkg2vsxxcvKBo5fs3YdCaGMMgRASAJFos+ppjlK7VnInpp1VJBNYuulmy1Y1NE1FnsUsNxb2QrT+9ZW5G55ddCxs96pxtLGzWYeeGP7br4j+etQwJMKiw2GTCUmA7WivGdk1gxIBkER2/W8ZK4Xcx3TRkFvNXb0pDhvosXkdxy0NqEHhXxKnfkMIiAiEQBsla0CIQdtSCAWG1k8s6zAQQoBAAoEo8dT9KJrhS0YEiaFLVutnbCvOWO6OSFmcPviJcByifvvGd3yz6DDZLnGGsKri+z4/+4r/aXwdKNe22gC1oiM6TzyfYTUM7lYTZZHbILcOQhlNEhERJrXeCJtmgwN+55vCDHJliIPhgxeWM8Ez25coNsqHgkQ0RIOZDzUQbLQJz6gSdPq0JwgIpQCQcc/3W23HcUAgaSMAwRhE0FM3G0sqbjOcQ8nGBJYuE1iRMYFp0o7/uogDsyj0YduSvp6uCtWTpBpHIRtK0gF/DyhInO6CQRi6sJ1hiqLjKgVEjOsNchogXTAAlCAaROTzBptUQ777m785/U9ZnB8Id9vMws3aplujQgQUp9a8Gao4/XqUgLhZFhVBDOasEABAShCAEAK0aR0/TnEsYLNO6cZzrsyedqHBoUtW62eMXbi0TGCargRyTth6fjWa6X39s+MLlGWKb+yq6bKbAKAXr5ku2JGbOD0Ak7KwnWW13UY9hZbL2R3RSKBBSGpNbblSSzQIoAliQoMgi4mSsQmQ2fOms9uuALAt23B2+3Zrs3bwcAeFMkCDZuTqsWNJ4G80G0mjIcRBzZnpUrouhSSGLzl35U0Np2zbJ0VV4iybUbdbHbWMvGXhzzj6nje9aOax3zfOaFlWKnPDyra59Cb80fe5IrFsiGtODGWbc4JV2+CuERHBsQ1I0iCJBJIBYww/ZWCTbHI7CIjTSUI43S4lgWAMACCibq0ncQhASPw1Z4ydF9WrdTDZY8kkFtf8j6+37/jHoiNiu8FP+itJXvVMci/yhNLg+NCcgZUEnM00z7aF0BDS2QuCHPr64qpsDQ2msHgQhy+jjzks1+dKY4SMARyQpHVskZ1I0lb/on2IdQQANIQEIGDjsClX8Ixl68w24UaHTITTzSQEwI355HFo0m/Llx0RkE7PU795Ktl81cYchVv/aKM4DNHpDqKDADaSddtKxwAiAAES0GDlBjc7w9Pm45vBf8Hpeo+nPwgSAAo0QIgCKEySvZdcoiWikIOXKRSjtg7RINKQZcTV5K50ySISw68XaABpyFKQweF89lKYtO1WlLT9VbY4txAXEI1xu4YWT0T9i4Hixnz9isetfeb92YfIcsYZwgq66qn6n1/nmb52Z2Lpy/DeGHYxSzh3MWVbkBabk10LAhAIyhJoFR0WY6WUPtRwt4Zdi0db55ZaozuuZ0tzd6PKKCKSQAAwxvi9fhxGaAgASCARJZwtZIylS4yo9ZavmEtOyhnZX5l//E3X/8ORooNiI+MqoxX0rU/Cz/2vxurxVqelPDlTX1zxbVu2U15d9TZ/uap6Tup8hgIMDTILYJDQCEm2i8riW0HGdoIFJcyHTmk4iIUEbFYCPlUWlTaSkTiocgooN/9cEGg89WJDUbfXXV+r79kzKExKAglTRxHy/IG7VJGqkqWrGpqisOvvpFQNvcCphRU1yNXBMeXUje3qZEHoFhcjr55qHLVsK/e7fvri1tq6dXFNBZZOurEv7N6oKzFohi55BMzKDwkkEoBBRGFQI2rHAuQHRoyly3i04QVfjnFjDMipvplnd9I8XdFzo/roxssQkRCllBDFK0ePK0OCQBuDQghMHVrC8wcyVn5pJe+yqn0XyERK6tVa5IZ+6MZH4rU7vwywlEHobIz4xF01198cfOLPetYe0TmRODMRukiJ0FHRYY1fUVU9J7YqKSJqBIOAhjSKRNlkeIwxY1k4e8qK4Y3J4SeB4R0Thv8SALYnKM5qHG6Zl2Jz7YPxfYggJACuHT+JsZYojDEZTL1YApWpNllQ1dCh493KWFw2rdoq21Hex78XOctw3K7tNUnbsWfW3YXDb/ix+ef/eFbrZ+PBX6SKEUbDT/5Ny6wEjT1SR7HTCNBuJo1drGnowvMZ7s5kzGdogABAEBiBxpZUviIQjJXReX7Th7xsaAtQwJZG4Lb5D8/9RhtzD9L5XNy3DCZEkCDQAIBQ1O331ttKoEAkImMMZwJZGVSmYV8RWbX8HZ3ssx+RdFZNMu97Vk2vPOydn2tefHkWMbLx4S5hFWNu/4j7uB9wfKmSzkrjCpvWLbEcwt4M3yHl93zt31nadhu1TVXUmEkBhBqNhaA2i8pAwrudsXPJ4LmP2OUX/PRIwiFDGQkEgN4Y5Xj2eMPTqT8BoGmwAoGQEAAdf/CB5kVLG68x6YMIS6Z0bYO0NnPJRmdUZrsVVeC64mMFzwlpSPfy8xeBCONvOE69F9FS0HKF6SfyoZlmdgGycZiQo3lKiEM3AUBI+zUeMLU9TrI2E0QJ7o1UbeR1cdcLtsXgMmuICEECCiFA8sHAWLod5nzfhfM/96a+C278a3oUZ97z0cYwQjrVpUFZQARCrpw4kUQxIgpEWbWeDqzqOBNYLWEDNcyHNLukIRDh/Th/zJL3v/Ele2/++aJDYyPgDGGViLmD9tN/AXScqFgTCMSetEViBHVH7tWZ+oRy+H1JWr2Z8vUaKltV0uHXsNF7Y+b7uYjIIHgkfDDoWDIG0IYE3wmyKTVo3W3M43e60+ap4pybv6dTj9YH0+xt1tYb+r3H7f90Kr+3Uar0dJ6QBpMWDnJ7W++DN863BGg21jNYyeD1RJv9vgEQ0RCgJKKNqEggGEBEAgMAZDZCIQMAhBIQKDHCcoyOIQy6qyszF+2LIwOkQHLNwPOw7Wo46LubFBRKipJXDT29AfOOc/BGW66eO+dsS3efMxyO2GbOalAIhqECBRB3HAByPQghVtf9zYPHb/3DbN6AjUU1jnI2kHz5vYMfzvgW8xg/lplT10U+qBg7p/N/ZjLq05VdPI1BBBCnEpWn7/Y2Jxs8x5+TgMGIcSIwtHL8pERBCELxuWAXytUptALG3ejiHZS7E7f+UdEhsBFwg7Ay1L6rBj8UdHEuXVXMEVU9/nwhwGAqagGIm1fKyhXFYSx7Z3wLLuRLscPfnn8d0XPZ+tR/8+dtJ7rNB4i4UaVGyG11a4gEIIBYPvqQiWIASMo3gLAiXQq5yXEOp/ecwfHux2rvmooc/3DZ6/+h+YLXFB0FO198Q1wR1mxy/FuLL///+A59MpStKungrcXmBQWNBjKlrDvO2BidTztt+xQOu1nhTi/fRV5RbPurwY9ikCSU21959p9LQBRC2EJCt98+uSoRYqr23TMrLy5esCvle7w9PKLo6mtrBx5TZFxsFDyGsCJMDLVDK3Kfx5fmjBU15rC8VUkFQQI0GObILULGzm3QuDo9IHDz51FXcq4/2jor4MYox1NvdLriKBAKODV0cOP3YtsAso1fbnzFCQWQBkRABRCTkGRiQHny6ENX7N8rcUiR0im1c9OlPLVDyzZWsPxVQ7lRegHSkpMLcPGd/+OV442F7R5/B6rBWboS+vc1KBj6rwWe+9PmLeT5DKvl1CEkBkUsiEAbYbiSBGPnbUvObYfMHo6UUTzfJCEOe5a0mXvB7b8capBCBASUGigx2lJq7eRy4vuWKOzEXZWucWxn6fuRb0F3gkRDl6LiMSlLGtE9BgAzj7xhbBGyC8HfxmoIj3/l0ue/WVhzZ/9TWa+No546GAAAIg1dRl/TaJ1KtrbYEQwaDUaX7jEzY+M1tDF24V2709Zwvr8/+z83frO9p+jg95upj1NjCxHlxgsRAcVmZ3UBCGQMKAlIJKQBMH7QWl5VCZ8Hdif/652h4UuVFNLbkW9FdmPkBzSKnvKOb7Tv/twYY2S7xw3Caqg/800rC4/q99bE9q9etU78rBI2MoREgg8vxnZr53bjtjouu1jbmf855KezCDh1yRgUjjlbQigEIIKSxhggaq+tm7iwuROqnCHkJsdIuE04gTDWD9Dey3/1g0UHws6LPPdLWNH2veoDcfNQGAeWbWj7ZRxTugqVAA5dCM3QPhA7zaZcjOHxF9cGp5Rl5AkoU5YYhJ1oZZGwJSQQmwRVo5EASFQKlCA0qEEaQAkk+FkEmwapbQ8UAHjm94/o9PfizLPF5hdt43y9OSpvy8uQAAaTxA9etvF63JjgcDCA0JgtyUA866Z2YxDjltbm4I02hx1uTDxIG/WjtgS7+amQEEAKAMJIK6G63dbBKy4LUYEBR0pDpI1GKQejELOqg5W2nQsrvkVi+HkSDSClLttjH8eVuWSnYTIINGxJ/4stSw7S9hdJgDN2cZGQaOhVuSgm5W7jrI12jki1sGx0gu6aO3dR7+ufGt8HYLvCGcIK6KKqi56HYOnVomNhkwkJBCIKIjSDma3RRBQFKKUBio3Wg/tKg1Xrj8RYbnbdMhn2h4PbZtxVB/Fz2fnJ71lDH4kAQAhBRGBobWVFSgQ0sdEAIKUkImMMT0szNlXOlLLptZic6Dnh3KHHnrj1d4uOhZ0bZwgrQO27bn32oJt0QcyZyvdzGJ6hqs6dRTGZw/Qn5dlsOUGGpCJAQ1oiGQIDEkFQrW4MAA2emCMA4Vg+L2MVQTv959nfEtz+TwhD/g9ge7opPcNyxhcRN3pa4Kn/BNooXrqRf9z8DW5/+82KwkhASEAGjJFCktaEoA0tHjwAAIYMCUQhjDFIJET1HyiPmgksCNIoeZkxSNtuRUnNBJYszhRlC8ikPmsYLdJl11uMKYpw9lFPWfvkuy88MJar6p/QJ5177S3+P/5qM0wSa75L0el5e85Y2FTKrkuVEASIAIgaERGV+T/svXmQLN9V3/k9596sqt5ev+33fu+36veTkEAbAglJSGCHMY4xZhdiEV4CT2jAwHiswDM2BplhPGMPMBgcMWEcBDFjAWYGAWMCbBAjmDEzDrMZxggbsUlo//3e0v1ed9demfeeM39kVXVVdWW/ru6szsyq+4mM96pzuXkqK+9y7jn3HEe9NpIBwcESMMxYPRn4PhBYbZZuBJvnK3exm05fO7FSkYiUxjZAnp2FUwJY6Piq1EJIxEd795Nul0h1VPf5Ep5MoMQEi+X5KFv+wOzQf/lIuuu3DuLu1U3decUbXv+eT+T/BQK5EhSJkvO0t41r7/jpmmn3Xddis2h5AlkU1dTnFs1VVQnCRFAmIiZlP5Buk8VxGo1ClZQZdJ4ca4FANTnLDMs5tKO5QWJOW2y1SNkTn0dNkPLoppN7eCJC6ehSVcCAjIKU2BCjN2g+eGAE1lqBwoNBhvgc7UxQJB5B2aKGhgnoXFm3979uuhGutjsPGJJwVLQ4gUcQKnbJcckHfrVzo34Ymw0MalJ1f9FMQj7DYvHEqsoKk6Y+giUikFC3bQZdVgeeSE5dXF6yQKAQ5qh8oz2Lxgs9nUfE4DhFsMm766QSyycqLE8dnSpHhp+JPAMmPZMO7tyVJCEeDl5ZQUShHQ4E5rJulsAs7ie6aQ83d2/07Gbrj349r2IDSyIohKXGPv4c0I8OdXPjGkVC6BYt0eUT8hmeh0XzGaphDw9RUkCNV1IwiOpJD4OOH/RIhIkhIsdxDgOBwGKcZku8ULU6MYwba5ajYjVNO0FzZDjeM1YdyQgIhr0KG9Pce5D0+uo8wAwiZVXNXmhUPktIlqWLZP62bHHK9nwyKJ2cWb9XySyZpXtuGSxbzsfq1nnsDY5E4499z9tvvP4v5VVyYBkEhbDUuHu/ef2vvseao+6g3bW7ovWiJQqsJpoOBEkM0hCC6pWUKRKng4HGgzTEvKoGhTCwnuSej/5Sl+HNuIZOMTEMmIkTwyTimRmdtu/H3nvS4dpCESnhADcQCJSHuN03fK1BW5HVt/7whx/8h18qWqLAaYQoo6UmevM3dW89U9dNJTi/u2MeJmozzs2IfllcYLScmP+9Qj7D8zI/nyELGAyQQIiUCQSlVAdMnE2ctezrVgwDXIMlFSUoCdgTBKMkRWV7+oFAjsxZ+DdMSDi2KaXhlzCM6HlSB1PMts/DZXvTOtvxtYKJK4btm+p0NsJRVExMXj6KMgoZNTaeRu6gqg50XP017ShIIQpKs4wSpcuGhUWIWTpJ//azzyCyogAJM5PM5sUtnhA19HyULRpnBaOGcgmkycofmJHmMDdJGfMTUKKeDNzGgDvXBkmzcf3qy9/w8Nd+Jq+bBnInWAjLy/Zrvjj5rR9pODfYurpFR+rv+ExtMBBYCjEpWwP1vtUyrXZN1UQm1mQYkQJMwqRslFlPMUEEAutB9lLD8zKvj16szFEJU4sM5znUnVi8SDBDt1NFp9lKegMXJ8aQVyEiMmH8EAgEMknUbHSbjxt7j3fr7qjx2re++mf2ixYqkElQMMqLv/6S2+/4Ic+819mz5tNuRc2HsYvIFy1XSaj6WCRL/uUuX8nyUsty/lJiZYZ46rWNiGU72Nz0hrynoUlQYRQADFN2MYHAmkEFeQHQvCDANPQDAKa7D2WQEOYnklEmEh3aLRVod44ePLxy+xZEAHgVOleg0XyoSqDLAgOELkJh3r9ZyzUr8vuOnxuHzLzzEBeZXSSt9sb2NqQvjR3qtooWKpBJUAjLi2zderB5PZLtDd8i7B25JKLawqUs2rAufz19oIRkKYqRGA8HIIpASd8d7ovf5Ss7wmNvc047RVGV8jnsBgIFkLOp/MJ6FxmoRxpRJh23MiFV9mAAIaI0wMrx+DbtCJhISZlIDRR7L9x5/KmnenFia9EgSYwxob4H1oGsUVRRSmB2c7BcSXnBhsg3rHXugOsmag6OrtrOi0cf/1AukgSWQTWmYdaQjde9bfBL/yBpPNX1vS2iNptN34spJHJZecqVz7AuxKJg1YjUeD/oUqdV77RJEkBApIaEyRMEpVtPFAiUnZNJI+Yrk/MbgfnzOPN3ApieHxydpVMfJk7QNP0og0igsFFn74EfxKwQgJmlhGmQCooaOne9WxnX75csGmdVCFFDz8d2l+/1H2xub1FfalHS3fy0j3/P27fe8CVFyRM4nTCCKymNP/c3t559E/Tqg7pY2d71D9t+l2sDOLfcG6+ohZBL13QvSjG/S02MJ5+wCJSUASZYBcv1x8RaH9WUozQGPSBp7IZAYIWZP7pSP3nG6JMMHThP8Rskhers9P24BJ1dIEAqYxlSbXAoT2rd05MlyPGe9LMqQTQteSQYQVR1KOpQjxGIknqIqiqSDrMVn7z09Z9987ln+iK2Vkv6CRcVli5LhymoAcrS/cqmM2jZckdWxGWUMn7H8e++UO7Qs7OoJTCv921RS2AW9b4x2zSIm/0ocv7JjcF+m/xHvvHZXAoP5E6IMlpSok//zwbXboD70os12hQcbtnDrlwxJ4YIOVPGWc0cKFk3eA6K+V0SViYyQhAoEbFhFbiExAMCMsqGyBClaQ5X8+UJBB7FvDefTjs4e07mYZ3++/jPKfPgTLs938w4Pocmh5pp6vlR/FOi4WeCKhMUCgUNFVfte3/7macTFTYGXpfuu1CRqKGlWz1dtmicFYwaOkmWQDT5YQlSZ71Vy37dKKfxhqXNgT6Ap667cc28eCuKrbb9tWfav/dvcik/kC/lmoYJpNjP+tre+/+hibfi6PoG1yx3fXwTtGvCuuXA5dI33kFZuCHWCHtJPJKaBXe61Osi7sM7QEhhZBhdJhBYa05J+34Ozm4qybwLDY9OHed059DMmO6h6QliJhmPENKAosS9g0MfJ0Tkk+RS8ygGFqFsroOB9eSgHrtavce1G7bXEfOh5OZe/bE7P/buW1/5bUWLFphDaNDLiP2sr40+6+sWu2bZriAr6gvImvW9qjJXUpCLFDwJe1NLtraSnV3UtshZiknrsapCdJzxTJihuqKvT2BN0XT53FQih5Gn5dSf46Mjz46ZMXlqeTt56HjndLGjD6kxbHaIrwoaZR0cHhpa9oYXjg4NfURluJ8AjL1GR56lxx/gOUnEAC4hp5/2uldvv+wlfabIEeXriz+l/aYq6JKXSCxKyaOGjh5giBp6Popyclm0e9RMF9Ws/fO/V16uoYu+b0f//hc+8c++JZdbB3KkGrV03XAf+OmiRQgETkOYPQHiuN+L2l3b7RM8NUi9QsiQNRwBEO/hQvDRwPpxduvZkuxsUw6lBPCcGzHhTAbMkeVQFcDD/QekYkHGLHXJSZhDWpCKKF2Bs6NKc7dTrsjYysXum760aBECcwgtSOnYfMmbznMZ0/wt8AiKiuqZF8XIL2rEEJHapF9vHdnWEcc94QRsARaQKkEZQqQIrs6BFWRGj7qIXnfKtQsVex4Z0lCik4UMvUmRRowhwtCMSCBSpgd7e67bZ1KPZSfFDTrhIzh2BhUKrqFnJ7jUFksCeepf/GnRUgRmCXkIy8Zz/uorn/2zf2tv4Quz+s6cdMIVzWeY5Wlb/aiky4WFYEhZrAj5AfXhGaoD07gmpAp4FRCRNUwqIpXSsQOBR5GV70Fn/tQ5n7MKzH08OiMAiEiGo95RknoiApSIhnumxSAa5axnghI4IvIax0f3Hzy+s9PxznKo14USrILnonxPbcn5A7OKWXB4mJfO3DJu8Nu/mktRgRwJUUZLh7937+j1Xxchzqc44nRmd3ZbtsJT8Wil1Tetzg3dNhu08NxEngGIEWXldOmFeCQi1homMlYBqMJaIhLxROXrggOB/DkR7XOoOur8hneyockctE1W23GiiKyTZ8rRSd2Vxo0AgcCjDzRacXiifRjrh0SAMpGqB7OK3nryyZiFFx1aZ0aVzIgdWhSi5fK8K1s0zhWNGloUy16amt1cFPNO+8bjL/6dNxdy68AphFFauTA3nwE+dtW38ytyfsLx/MpfTYTmb4EUIgWJiHpBQiQEK34j7mlz38SdCI4NgQkqolK67jcQuEwmVbJsr87pNBJ51Zm5w3HG6ZnTpiQBiNIoo6oK75lN++HDfrsdRVFOQgYeQbaLYxjCncb8FXjFuYYuezTGOn8DyfytIG609gFceVXQCctFaE3Khd//T7tv/6Fka6NoQQKB0xhYAWCFjURKLEwgMerqgza1D7XTNC6mNIyhaAgqE1gx5up1F0/DkFXCQiXPUyxPLHdM9+u0ZpimpkgPEQ/LIYPUqxSjJYWilPj9e/dl6ROLyx+wis7fqkS1Fr2vNVVZu7hsOds8eMt7P9r8g9/Kq8BALgSX0XJhPvdbei/9C7Z7B7zkydfT5ofzoOIuo1lUX7PJ53fpR8JKNW8MWZBJSAHPkAbIJcnACUzdRHUQqwqDV+DBBQKnQ0TITGNz7OpJM/a36Y/HR6dcPc/uMprRsuvQN3SqHB021KNk9AAYpBj5jx6frGJAANRAE19n24deefpxs7AqcmpDMNVryKPPvzhV6aYenWYgt+UAZyKzfy9XQ18uaU77hU75fRdwwaUsV96SYZUe6q2tazdav/vLRcsSOCYohCVi8/VfF//2j+LVX21rIDVLXQOWvcQsX1elk6tEStc2LYTS/I0gGeGey9Yl5bO2MBIiQFiFBBCjSiAFx/BMajSxvh+pN7WatzVRYxjqBRAiEFTFA0SGKzMgCwQmyJwsJx6qb1OLA0frz+ZcNW4Y00uGythkpRyqbEojtY1GK8MnbO+qE8bAk82sDjXRcXr6VOsb+YwRRikHeaQopvtHZVqwJygciI1Xgca99tPPPNNnrkeRemFiYk68ZyIGadZasqwB65xh66WsPStZ+6OS0cFkX7HcBY4VWSuYpmIoizTIHA0Ay31uyw8OkQ/eSEPth7/7C2989bt6wU5YGoKnQYnwV1/62Df+7Da8dZ2iZQkEzoMxEcGwQhLn+j3XbVPSIxavooR0RQOI2EREVDXXrEDgbGR5eD7S83PeCak6QLSMubTTZ4SPhdFU4WTGWEtUPNzfr9Vq/Tgmw0rw3nNZg45WxVUvEFgHrgx6CQ8+/b0fbdx6TdGyBI4pafO9pjSu7PlrDh1rdgqTIeQzPCdVz2eYDzxyNmNJfNKV3hH3WnXXBQA2YKMgJSZKA9ovO49ZIFAyLp5XcHrnaKXfiVWCU39OZ6VPP6et+nA3T101/jCyTckwSqqFACbNVkX3P/miIfZelYyAncCShTKUyxbE4kwmycskfUont6LI+r3KJmdFqMoERFFy3tmobyCODm9cf/OXL/tegbMTKnZZqL32awbv+44GN629fnRafVy24rHkOFgr2sGEqKQpIoAqkdaYInEU97jXNN1DUjGE1MihXr0KyudNGwickYvHj3kE83wA6TiJxTmEydAY07kZGtv9ePYWSjNpzIhIBCDuPTyMW52aZQBeZWwelIr4rRVIVRSGslG2adfs0dJyJWXI3C2v8pfNrm61+3ZzJzY+eeOPfqpocQJDKj8QXxnUmO2/8tNXfbut3bqWL8posByuOFkd2GIdWzqsYQURRYRIHCV96bWp3+G4Z0XSRQ6krEpLH1UHAkuD6NEv8PwTTr1q9hIi5Laye7KUURXWsRfo5J5R9toxhiECAGRArFBDjMTtv/jihq0BEJGaqYnzDPIFKoRlixq6ohOgRREU6dVgQxvWcrv3qYgRUwhlUhZCw1QWkg+81+9cuSv1La+GeosXECyHZWTdLIepEcNDPVQITMri4QbUfojOEcU9K2LOMJIOBCrBnDd5tGduvNDxoUWrwCNii5wi2OSNpmZh+MSMHk8dnSiH0gz1yiDynJ5ITObhnbvqElWvqswgVVDIcxu4KMESmJKXJbBsivS+f6DG7daf6Zha6w9+vSgxAjNUfsC9GtjHXwW6wvqkAAAgAElEQVRAOm63EUnNkwvD5UBFESICGRFRVZAhIhKqDY64f4Rem1w8bnQ0tD+BNWZSJzxNP3zUaafqlieGp2PNcnSVjvLUnyyHjs/R4Z9khBhRJFAiSg4O+0dNUs/M6iVdGTztYboUyjbAzaJ0clZkrWDpnlsGVZGzbFxvXOW49wIOqO8/8n1vv/aGLy5aogAQFMKS4O79wbVv+OkN9NoD1+OriwUeCARKg4hgGBGRhwNNNkLYUG9drP2uxANxSRpOJtgJAytA7vnoL7VeZKxLBDA1PFDF2KqpytYKVEQQDzrtJikYKiIMBSQsJQgECqEyCmq772u3ruu2ifpv/JGPHPx/7ytaoAAQ8hCWhOhzv6n7+CstJYzIUX2XDmPNKzF9PnnnFi8+rzFBxg0qn89QlPTkRvPTF1Umn+FkrIrhB1VGuk7AswysHxgZMJG3dTU1sLAg8gpAGGBhRd2rD2PKQIlJx1iZmhvRKCHh2LmLRknChgniZ0dpitn2jUZ5C6d0tnG+QZksdZhecCYbYbqT5Lj1ON4txzkP4Wnk7K3DhYJEpERA6ik6vJYVAiJAIZIGmyHGYbP5kpe9TAzHKrZe94mrqVm2V3z6eE5uhVGyvHxVyR84CZdAmqz8gRlpDnOTlDE/AWVe5RdGxvuW2C2RT9WwAV93jOj6zeYH/u+iZQ0EC2EJaLzu7clv/kij15HNxzfdUa192PdbRQsVCOQJMzNZIhKfSDzwgx7HPXYxoELqGQxiIVarwCDMUwVKz2J2vGxvzPMyr+8+Z5lz69t0+bOhR4ehaFRVB3Gn1RTnjDFxHDNzkUFlAoFA6dlIBhFfT2zTxHW/k3zqR79z93O+tGihAkEhLAHm+tPXvuEnN6nZ78YPNnd3rm630S1aqAsTopI+gnyielYFUdJh9kEvcR+9FnWbtncEFbB6Q57YKLMnJVZT+e8bCMynKDfp+fFORx9OrBY7TaUbpalQAqnCy96LdyMwKZRAhvN0eS1b1NAMCnPVq8iawCzGD4pK7uJYMirjGprBp6KmMdbZKwfmoQzMZ/6vnzr6nV8oWqhAcBktAdGrvtxevd6iGw3b3O7arhlEbgO87EBtS3YlzXJ9DK6kpzLHa4SgVA6fnjMx//mLKhEMwMQMQDyLNz7haFMAWFZKdUMArFz1nzGw4px51d/0ezw8TfHoGq3HV08VPpURcPznaaXNr0s09D4dO4SmTnF0nERw6Nk68kYFjTsITd1GAZA4WNsfxE8//xKnwpZVlZlyG5tWpR3IrV9bkMyGsho9xtih8JLJcg2ddlwNrqFnZkFX5BuQfnyFTX9T/AZtkDV69Xo7eI0WTelmjNaNxme+o/u+d3fMs4l2Gq7WjdAY9BNji5ZrWWQpPIFVIdPCyToMM8OMiGBdQoNudHRo+11IAqNqyBNI1PjQLgVWHD19nHkyacR8nXO++8DZ8h+m+QZPnjaScHSOEii9yzh5PUAww4WGov6o1T9qMYY2ijSy1ELMXe9WxlmhiljeykZVLFpVkbPqEG8n9l59fwNmM4HcMXt33/Od1972Xxct17oTGrKCsVdvX/trP6/xp6LoySOCqZkm121tUJxEy3VZJNK5W17lr2qHXfV8hhEbADqKpQOAWC1UOgfcPuJeB96BNfU34/K5hAUCeXJGp8o5p81tjcfJ5TH54dQIolPXpl6gwz/n5ImeuCMRCMpp/Ctma+AF0L27dyM2zjljjPqVzUMYFIbzkTWqWLbmH/IH5kxO46skdl00Nm8OGj1qxXh5fOOl/+LO9pOfsQyRA2en8gPlirMrGzcNH2y4TjT4uPc7Nmk+FXcH8WbRggUCeUI6HKd6kEOalALKBOpT0qm12lGrY5JYScSQhAFWYIXJYYndeTvuU2997KlB86yOw5syRqnqiQiGAWE2+3fuqXioJyKzuIvdqg58c6PiawUfySVbg0v3vq0ZcWN7p4Y9xC9u3dvdGLxA9RvORl/2tigOP0GRVK/hWCXsZ31l9/3ff8jXBrWnDNfY9mJ/5cH2Zm0FgspkQBkULVdguZAqRJUJZEDGQT1IlKhBFi7q9Wy7x/0YokLwYWlzoGo8uhE7ecJF2r2zD/pPv8swQ8b4r/HJjOMViidK0GEue1EBoM4nraN+t0dEzrmzClZigsIQCCwP6h+o7zb6jZv6nD3caojr19uf/PM3bv6nVtGirTVh5FUkfPs19S/6TgMlTYSMUSUSSDljcS45CE1G8ZrhZLG4DrmqQWiy8hmW6yXS0cMezWBTunrJUx0g1YQlhuuReljWKIIDgy3Bk8A4MEh5w5MLU1iBsjLO257+AWCYjTBtyFIHThqlGqW0Euh8hY1G/04enF1PONH8DhPzUVrxp1WXkw0dpScDAARpZkRVqA6niBUgGV5Jo3AbqcNbetqwEI0SiDWAwOvm5kbj+lXPVIOVrHZVNCuaRyk4jo1REBXMHzgJZSTsy74gn6+SHSRmkrNkOswa58wnryAx1ZlryOmVYzZSU1LR2NU8QeDNzd9vDf7od2rvf393dS0iJScMr4rEfeB/K1qEshMsiqsNOWGFJWYIeU9xn/s9M+ijRgKfeM/CpDWoUWifq9JrBgIjzhTf5cwXXpw5oWVG+6cVzjM0s8ZD2VowQ+TB/T0LGGJfmdHtNBX0tAyczuKW3ozo6IFLQNH/23+t+TV/tmg51peVjWZZfurPvGXwyd8oWoqykxWAtOKGvRyp9iCGRYmHQ0/ShGNiBSVJn6FEZCIoG0eAOvZilCoUSCcQGHM+7Y4IWYPXUw7lc3dObZ3HVxKP7JwG4lMBJE06SATi1v4D1+6ZXeN53hrEUnKsGyiHcf9KU5VXcq3Z1w+Ani5aivUluIwWRvTc59/48/9gYKs+wF2uK+nYzWpmC/kMT6cq+QwJRARlCAmgpAIR9onzYqOI6nWvUAcGYIxCyvcNAoFphs6iMy+qzp5wcv9UIRMnn9YU6cyH7OoxI8CUB+nEPShNk5jupHHuwXEGxZm7sCJxEK1b6+Mk2trauXbVW8605ZetWS3cR3SGiuQVXNg1dMloZv7AfERjzSh0wXFCZVxDC3JRfuL3+/LSZ+U3/q3DKixFrhxh1qQgzNf0/+N7mxsbRctRVUI+wxWByTMcqSdWIiIycOz6tXaHOm2fdMGKCGBirxR+4EAVmRtO5uIeoQuVkH0yEU3H3B9OEyuN48qMD9HkIQAwNrUjJirGRg9fuEuJBwSi87eiKFs0zlWPGnrJhCBA1SLr90rc1eQH/iF993cULeCaEhqagvA/gy2N3AoPcEM+wzJStnyGSgRAUwnYwLACQthgkdahHjzkpGusF/KiLtLg0RAoNVnr7i6y7Hnq2twWFk7N9w8XZj8yYcSUJKM/rSVrxCfK1Ds6itudEuYhzFYYKt+kL5Xl9uKLk51XMIvFTFus87dMBb7qlGycw8mgpZ/Y2Xm+KAHWnDDAKoboM75j4wubdQNH8+OmFC3g8ljypN2yjUgVdyXNisdWlCtmatZlEKca/dBfl4kJzrHzpMLMnknJaPVdeQNrxERLnu33+SiXUYyih86/w2w52XbA+XV8uHx35r469Ckdik1pvRu6wo5CnDKgUHBaK8UpQF5so1G/uWvKNrTI7BdyXuNwViriGrrAOtVLITtF7Sm/7+knnKmUlXUNXfL7tuhzEIqf+GPnX/Hyox/7x0sSKXAKYXqsEN6e/NH32A3blOAnfU5C9NEVQdQojLARhpB6AKxk+hrXI9qCRO2OazYZnmo2BJQJVIOJhmhuo3SOlur4knxbucywXel/E36kc09UQFVFUa+ByBIf7O1XMxhwGAsFVtcSWBUMXBPul38fX/DdRYuyjpRsGm9d+ENwUn/NH9WkJmZ+W7O6Ck/Wmu+Qz/BymC9/YfkMiZSQ3mvk2qMEFRUhCCkg5BMkDuy5YUQjACRkiUghkoAVEYcuO1ASaH5QGRra22brk04enz0fNK4UGQ3kuIHT1LSeWvOOq62O48FMN1PHQWIURMcWTNVhEsLUNDjKPUikU5JSmp6QQF6tgSg8GzJOksT1bt+64aPNWlQn76HKxngVArEu3YFD56eFO+WuS04tUJG8gmULEpOdV3C5z+0cKQSrQcnetyzqMGr4w93PxHu+oGhZ1pGgEBaAfeXf1a86IGxqvdB19uViuc8hwzM3vwaxMgphFlnjzWL6DE1/HCZK82arQkFetFYDQASvqmTYGIYhkRL2bYHALLPhPYGxT2bmJaMLM33lxqrd8Weac8LE7U7cnWZP4CmX0ekyUn1Tx1czAYAXVlUSiLMbjZ3bt8U7pqHmSEyEPOLoPJKyxZ2qiGtouaQ5bTSwXElXViEs3S88H4dEhK7d6Ln6M4Pf/z+LFmftCG4Sl8xjePUb3R/+TzelbjTp+m7R8qwLISrpoyhZ+AAdCcBqVGpJEvV6ptnUQctqAlZQ6pjGDFi/qr14YG24eMhQmlED5xkqZ//kaVVv9pJhNFEaxfcdH0r/pjRaCxEzAFU1HMHr/t17EBURDxWCQEnzXlVVsmAYIWpovlQlamhV5Fw2eT0HT7FtEHdrR+9912e/LXiNXjahYbpkOvjgx/Df/2Nq14ynK3Jr0etX15U0RCUtI0VFJTUKKIuqEGBgGFZi6wbcPKR+y4iDAaAi4pXAdukCBQKlJSOJxdn6hXlqJAAedSupAVB5+GFshEujQQEQUQwVS0sM4kGz2z48iJgE6tOgUN4j10gbYSB+Pko27XdK1NDlSsqQuVte5RdGxcchxm3G4k298c4fV3f7pUWLs3ZU5kVZFTywt/XiSwdwA9rs1/aLlmfdCZbDcmJBLOkQjz3BGxVWzy7qdal1RJ2WdQkMQBDyLjRjgUoxX1U7VX+bvSTPScATJkGkJvpRikIa7+FZ5dOYYSBKw2RYRMhE8HLw4l1rDAAnYikiUQACv7BoFR/glo2gSAcuwrLfH2tMRNtkuv9v/wW5eiWvYgNnJDSsl8tzrwMQ9dum/nS04ThuFi1Q+QmWwzKybMvh2PCd9jce6kg9owGYwQDtpu21NrwzrAgBZQKVYJyCIjte6CW4e8y/u07cd+RHOjEvxhNScXoo3WOGYWwAJmVyKkQE5ubenvQHPFqRleqUymGm7ZIIlsCUvCyBpVOkV3RckTinyYNaHNvd3ge/522v+PzvKlqi9aLyL1C1oCvP46//hFM95I+1/eGWfFpuJa+sK2mgnCyeIngRPImSEJEFGWH2ZITJk1qQCid9dI7QObJJTIKqrJgPBM7CZLt9Wht+oeQWJ4bdY9cIogmT4OyNZvYcj4mViK0CZBiqSatztP/QEluy4py1NZwrbljpBuIVWStYuueWQVXkDFwOZotZdr0z3N340r+X9LfioiVaL4JCeKnof/ypWv/xmrm1Fd0w3VpsHxQt0boTFOly4sj7dAUTyMJYYSNsYWIIIrIMHfR9u4le14owhWjJgRVkpiG61HYpY10igLGREIB6D6TpyxVMo5WHiiRpHRwCIKIkSQxxGOUHyk9QUIsldo5sfbC5zyb5xGfe+cT7v69oidaLEIzhEnnu1fjYB7cbvRZ3d7oDG9HA7FppLfWeWWOI6rdxWXMZixmpMp9DRvGasQpm4bFa1uRxZfwf58svGfLzgpPl4/MFKuSP8+MoQzwrGiDvYtc5YMTRxkbXbrNQJCyExAhoLEuY8wpcHml7QicNaClEabykiXaE0/OAYYqCyUs0zQo4TESI8TnDZEWpzqajBBDDz4KxtgYlIlU9zkaoaWxeHbUzo8uPk1ukCl56Mz/+LnqcHknGgiigbABABWy8erLWeQE1CMnenU899YpnOapLZAeqJNpgdpkPLqueFtRPZbXD1ffKWypZvZcueV3+KsSDmUtB71tR48N6stWxXXa1WoTkMAJw45Vvf/CH/7IQYdaQ0LpdIh/7IP67n6X4emMgXdO3m5u11sOiZQosRrAoFgsBRKRMShB47xPp95NOx6oDuYHxiQHDGDFGgtkwUACLtQbzlhFe7P7z+vRzlnlcg2bWEB7vnCn5OBQNfJK0Wy313lqbeEfWVH8WMhAILJEkur8Jqtl6/KDGj9Nb351sv/EvFS3UGhEshJfGhvmCb6zf2Wg19uLa1lay0djr9a/3MYiKFiwQyJHlzjGxpv+IMJEqqWjcpyRhE/l6DfUNwMKT9SpEYCMrm2g4sFrMyVl/Wfc9qaeNZVFewGeBSEkp/ReA8/t37j27cw3qASEygsyvWJiuWHFLYNZzCzOUpxPmJlLK9hwi3zBMqpuDK3e22s/tvfxj3HqsaKHWiGq0eqvAy1/rf/Un/GAg1N5qx3X0m5syGGwXJc7qWrqWHJWUde6WV/llC06QF/lGJU2vVaaIUINE3snRA9NpmmTA8EqISSWs/QhcOudc9Td2Mc2nAb5IczHMRJ/+oTRskSYT0xMZTIYMJRrfkdIU9sM95sGLd43COWdqkV9Rn75iKSqaaNWjhpaOFe33F8Vt1pKjBNqyuNnlTzJufvR//oqn3/6tRcu1LqzdC1cYH/r3eNd/e7VlpH6lxjtHkCSSTR8stBVDs7aQz/BSGCcESU1/zLAgC7V+UOv2as2W6XYUsUYkES+6cDEQKBylU+07J5NGzNc554/C5yuoszv5OPfg1O5hDFId6oSsBJpUIFN/URgiUsMA0O31Wk07ymmhSmHgez6qEuykKnIGyomPk/jGDrxPkuh6/Ji6B2/533+/fvvTi5ZrXQgKyeWxdfexzi1jut2OMRG2lToN7rcRXEYvh3yC0GSTVU5OY53KB6GZT5aRMMvmOtKxGaICMJEARIhshCRxrSPynoxoY0vJ5pgXMRC4DOY6cM49bZa0ffAndsowrsxMBsJH34gBAZFCSUGUrgCcLp/McXScNGloWqwyWaOJA3jvxbsvuX5j4FzERhOnq+CEUgBFaczZvctygwDlZfQrnS66ZkFiFuUKXd8f7G3YnU3Ifeo1rrje4RZ2niharnUhzMxdCi/9bACDxsagE0e2Xhsc7th2o+sPebNoyWZZXVfS5RKe23lZLJ+hqhKRAbGCFaoqUAclIjGq6mjQqbWbUbfDLlZTjV4wEADOHfplkvN26Kfe+tjTgeZZHYc35ZFDKRGRMqBqjN27czdJEvg04G9x7WFF8gdWhWAJDCwD37xXtzvOSjdqbsW7epi07K0//d6vvfkX/1bRoq0FoeG7DMxzn0ff9E+N7l6pma4M0His6bBhN0n7RYsWCFSJ8ZiDYVLfNgELm8SJN0QNw+Rsp2uabRrEwWU3UDiPnhXKTvt+Hs6uzJx+F6K56t8wCWHW99JRikIFmBnQVnvQ7RGR9545jDcCgQKoigKfbD8VuRd8b4e0ETWOGuZGjQ4+4598uPFM8Bq9DILL6GXAjWv15GmYVs9jE3VBzyh61DeoTGT8kM/wvMXPfz4hn+GIBfMZ8ijDNenxuiWFgsmBoSAIHJJWvZ2YpN269iScGKfE6uDT/IQR2FWn6gWqDhGpSPpptMsMPTbVH6eAV0AVxCACjxK+z20/0mLGh8b+n8NQpTxuvsbBYNLFt8fN9bDdUNB0IN5jV1IBgUaLdlUVBIBAgjTNJ2SYXk7SQyBlkCgMoCRejUlUDLj58U/e/sxXdQHWCMjMRJgPFY8aSgX1p2frLSafYZacWf3X/PNX1jW0IDKjzlbEWUn9IehxS0fwGMAAYgTYbdgrN4sWbS2oRitZacyb//Pkff9D0VIEykVwMc2X1E9tNBwUEfFJ7OI+HR1ZcajDMSAUwRqOkvCYA+XkLC3AklqJOaFlznZTnhM+S1VgDEQ8dG9vT5wnhWpVZqkCQxa3LGWFXQsEzs/HfvDrnn7Hf1W0FKtPUAiXTm3nRu1d/7ZoKQKBarFY+PKxRZGImIhJId4PBvXmIfWPRBMYJTKkrGoQXNcCl8+MTkU0Z+f5ijrjoQuePGToMooTZgclHNfQtIoxk+G41W4fHkVhsFFtws8XWDpZExBv+bkP1W+9rGjpVp/gMrp8GlevPvzjtl3N9JrBlfR8ZKUu1LwiY1belXQ+2Y9HPNSACELEFlBVUbWuLe1YIbS5y9YkTtUrjD0RjzEQWCZZ+R7mumueMdBo7m1sWuZxyRNBSocZ6iddWIdhSDH0Jp0qh9hq3CdrIABh/5MvfNrNx/oQqnq3kBNFuYZms+SooYt6mGZQmXFFRVyUy0bW6zC473jr8UsVZS0Jb+1SeRwv+7LeL/z9Vv120ZIEykXIZ5g76chVNF3qBCJiCHFCcc+0WqbTVonVCBjkKjKqCKwb4/WEFywkt5MnzPLjMS4bDBWF0VEiKKVZ6dO09QDArJLuocP7+xq7PEfzIWporlQl6EggZd1+rx7f+tD3fH3jzV9WtCArThhpLpXHAeC//GXb+VSNkqKFuVRWuG3KYLmL42nZY5qKWw7Hz5/kOOWaKoEcwyhsYuuyvYPNHSULxxIyUgQukcx6DZlzSHX4Pp8MKjNhYiOdLnbq89gALuOT54tBAjlRiJ68ykMnThYPgMYFavqnDk8WhbiaNXG/A3gkHmxf9blv5MeusuYUzKkiwWMy7W4lCx6jmZOO4/1nEjjbEriiwWNCXsFzkRl6KON7GRvdr9Gdrw9GwuUSQu0tl8bn//Uru5uRH3heL+/c9Quakk8Dnfnclm0lrLgvlyqIGCAFKZGCUq/cUeozgTjjHCuBjTPpyYHAJTG36aNhUNC5ZOynqY9ZLerEbj1x3cypSlOF0sRHokl9gMYJJU46tepsSQwDeHEghaKmcIZ3nrhFebVjme1VybqYkg3cJVOeRyqEZ3qwp7xmZ7l8THUUnuW+b9V5Dguy4PdqaEt80157uvOBf7MkiQIILqNLxX72l/X/3T+xftCpreYCwkCgJMg4rD8RiIh5pEqbBJLAReRrcUxHzaTfQy1MhAXKyDmmzI4vyXe6LUtzG4bCGdWgrLWRRHGvl2qUtZoV5x/c31vZ0W1gTJYrbyBwAdru+nayff9H333rq76raFlWmfUyW10yDNp45893YrkW322bzaLFKQWrG4RmyYR8hqdijAEmPJ9G75OqGrIAHECWiJKt7h719ttPvRSxsidmViJhQDwBGubIAsthGJ1lAtU0Z6BCNTWhTJyQvod+NuXgWE+j4btOOq/ktFiMZuIptcwJYeLMUeQYBcAC0WFEmWH5UNBE8BOCjBxHgWOPVtZxpBml49pHgNYbqp7JxC5BzcAN5IW7cvt2ZKx6z8zC5L23HBmQ04z8hBVxDS1bkJjsVnvR51au71UYJXvfKkNO9YLoXiSPv+Yn4sNf/8lcCgzMJbzlSyT+3Z+sCUtt+37tRtGyBJbNYmkS8mL9XHMXYzIqqapCVUREBPcfWDegBjkDr0qeDNmgDQaKIavCXqQiP/La8xR+uml90lFVQcTMIgIvIIZzD/b261HNe2+MkaEIlGYNXVySQCCwLgxqG3Gk0juIrlwrWpZVJgyAlgU9/2cBxM6KqdfloGhxAoF1ZKwbp0HYRCTVCbeODrjX8tIHCwBWqOa2vikQyI2Lhwyd3nmm2aKZYKfpZ04tkukuPt4/+WFchXQU20kIIMMGogd7+xAn6pRH5k0iIhJ1IWpovlQlCmVV5Fw24TmcznW9ddSVqKYf/d4vv/rV31y0OCtLaFiXxE1cfZn9L35l07p65+PGBNfcR7C6lq7lWg6Jde6WV/lVH5Cd7FNVlYCGSdA5wuEBBj1rQERepWwBKQKBC5GRxCKzXT1Lvnsap5cgAFCevUoJSHeqkkllYGawibu9h3v3IyavIgRVHUYxrU47X4wfSDaSsS1bUobM3fIqvzAq3t8VBWVsefFA9p+oJzbpP/feDwgaQLATLoXwoi8J0d/91yK+DSf1TcV20fIEVpOsfIaBGWZmGZIakY/NUbPebNfiPsiRyTssRyCwIPNVtTzzCp775KlshEQ0vYdnlE9iTq0eYAO2ImqMgWL/hRdrxooI87BQUuXqxHgKlpzARVjV92fZ34ujuG+s142Erzf/jx8DenmVHJgkKITL4fm3Am5L2qxdsXbQi4sWKFA2ljzXvOxobxWZST3ZI6U6YVsckW6pRt2mtA4o6Rh4DibCwOUz0qNOiRd6Ce4SWXefuC8PvUaP4amjE+cT0TCSDRExe/EAYNDZ3/eDAVGapgIAVH0JXbWDJTAlL0tg6RShivRfZWPZlsAsdnqPHcX9uhxtPtgBDq68/guXf891JFSA5fD8m/DOn4Oxvdot59zuZnAZPSer60q6ZEYJGGa39WM2Y5qqqpI3YCORCGL0W2g10e2yywh1GAiUgLO2e9O5BB9ZzqLFprGXjr1G5xWl6jG0IhLbCATPAAG9/sHefUMsIkSpYginrmwD9NIpMBlURc7AalDU+9aoddlESWPX7hy95p99YOPJz1j2HdeToBAuhVrdgLrbvf0dJKLU90nREgWWTVFzZ4FHM9NfkegONVSoR+JqahBTt6OdLlyop4G14Jw6ITLXJQKYHE6o98enMYNHtkTRg/v7BuS959F8X1BgVoagoAaWwR4SGLvdS3zy0NZfc+8XfqBoiVaToBDmT/T858a/9O4n4vvdzSf6SZeZPTeEMHcLrAoVWc3HOn/Li5LN9M/Vy5VpQAkT1SQyzgosG1+LH0b7H6VBj+DUipJX9YaYjC3frxioGEO7dJaDAxHIKHh26KyEicyaU0fTQ0oKUhCYQBNZv0ZqWxrrE0DqYJheJJgqSlVV0rSGPKowY2MgKQjEUA8dJSEkQZpWkUYpCInASqTKo1C9FEEJqmB4HxNZFQZqBHN4777v9ho2cspCNRXTkOBBMyTLNVSV5m553TcEicn5thVXjGeGpoVPb9fdJvWP7l27uumvdPlPAGx/+luKE2dlCQph/iQf/c2r7/ypvdpTcb8jdbthe9TqFy3UqrG6rqRlW72yXtSbD7nbhAhsnVEzjtg5BJUwcFo1xyQAACAASURBVGEWa52yvTEXumqCR7UhZxdv7nh6cidNlzY6NPwKzneaLUkcM3tJiOjE0sRAIFAkJOVSaE3Ur127LnfuW9dv0I3X/y8vtv/4N4oSZoWpTnivylCvff7fGNx6nhxxfZNiob5r7JLz8/vj0BMGzsaS2+JlB3agauhUNm6reIEhs8EceQXgGRJy1gcuyNkUwhPVhOhMlTPzDJ3/eW51JDo+MCutDq2OqUVQaVSj9fjWqXVwOGocF6UAAUIghZB4MBzj2mM3yUSiCoJhSEHNQ9YYt6h+OfsxLDmk0IL9S3WMXct9btV5DuenDGPUJHZR/2B7+9YLYm09asiB7j7d/r3/q2i5Vo0wysmZ+hvfEf+7n6ijDnQ341bMJA3tJ1eyzs9yJQ0upucjWA7PSYhKCgBwkdqkv3F4VGseeOlKXcVakwSXtsCFuGgcl3wasItUt6lrlQBlgpljCRzrjdOxbRQAGYBB3Ly/p4mDODbkVaS4cUhR/hhVjxpaOirSv1SFskVBqNU3Yr7d7z143IrRvRfk+p0f/3u3vuLbipZr1QgVJmf0ytO73/rj3HwQRY89iOq7PBj423AHRcsVCJxKiEoKAHCmBiLrO6Zz3/QewLWVKDG1ouUKrDu6yOgsW+EcahfnckDl48wTM4dGf+lk+UqjQKNDkYiIrCEFer3OwaFlUlXmEysnl0BV1nRVRc7AalCV961L3jbqlg0GNZ/sPpHce817PnHl6ZcXLdeqERTCvKlvdjuRu/FEVw6uDQaJPCY12uCQhzCwJILlME9MbIRNHInXbq15sHF4ZJKe1kvXQQbWi0X0t+mMgnNbg6HONj+8zSMYljYyWjLo5MKTyfWEBIKS0dQr0Vr1Hsbu371DEOectRb+Ufe8MMESGPIHXui2ZXsOOVGV2OhXXXu/H0dR1Kz5XUR7dutmBOw8XrRcq0ZQCPMk+pyvj9/3bhhvumZbokHN1fUFjnVgrhYt2rqzuq6kS2bNLIeRF1V1TMTGOmc6HdM+xCBY+APFkUN1O29Hf+qtJxxZ+eQokmg0thylqk8DkwIw0KP9vX6nS6SQEualXzqrqmAEVoNh8OLyvI+yu8txbHzk7yfiI1N7wV358Pe+/daX/jdFS7ZSBIUwT2j3mc1v/le7iNtkEup5c80lW1t61A3BewJnpSpzdquJtWDvOGGDhnJdxFH3qNF8ULRcgVXj0bNR5zHfZZNhRTmPkZAmijoOEDptFZwrAkFFYNh7j8Gg3WlFUeS9Zw7jkECpCQp8sbRqjZ3koEVas7fF88aANnH/tT98t/5U8BrNk6Co5Il55RejcSuGsYgJlsR7A09k1WcO9Bfs4kfZp2a3oDEEpllyX5Wlt+Y23Z9VX5b7vRwBzDy0XAhYCUJJQq5rauxrEYQp4QZbNurQJUTphapKJ332AoFsiGgYk/PYyZOH77nKsTU+TWhKDGJA5k8QDbP/pefPDVWKicifqQlg2P9Mv64ZFe34FAGN+i0iiIy/yehWmoYkJcUwD6KmhwkguAT1CArjFF6uPXELjZo4yau9SnPzXf50mpwpCy2fQaLFJgQZMndEsKj81dFtiokaWnkPo0V/35JNRBsZOFO3YhQi7GFUNYKRxhOvuP+vf7Bo6VaHMDOXG1df/Vfj9727aCkCi1H5hj6TkM8wT2gQu1YLvS6sUoP76mInlreOT5h4Z6ozugpUhAJbpDmhZSYPDo+enAjSudNDqb4qQtY0m824P0gG/RWuL4tblubqlSv7fAKBi6DsX/2ePylaitUhDBBzQ67ffv5r31+0FIFAIH/YOeq2qH1k4g5xokYUxki9aLkC1Wc2Yue8MJ653yWnk6eWEY72zEyoKR0fZVuDAMaAjOv2WgcHFoQVSHvwaMJYK7B0Vte19cR0dmoL54HVpCCRVpCQXys33Obu3Z19yPZil2W52C3oGrdoikJegSZimWQZCavftmaNS3Iak2UFIM0rEFxWOTkGPp1/W19Xln7HQXXbmcaOkhkkfk6ExUDg7MxtZ2ja6W/sBao63yN02aQ3Pb41A0JEqgplsEzllVdWkqH8PCstGYYTY+uu3wPzg0/duf30sz1ZOMwola4dzmrf8pEzs79edMlJ6Z5bBiGF4LlYAdemMzEaNjek9/CPPlisLKtEqHX50Hj2L3Tf/139CReyQGAdWdGopGLZGKp7V2u3TbNpBgOoA6+DZSNQAiYr0bkrVJ5GwokJ+/HYnc3EHh6WoISxkZDIKwEsUKgQc2f/ofb7y57NuQRW1zKzmoTfq8JMGFHa/umPfv9frn3eV+PatQIlWhkqP1ArD0/8ld95sH2X4yXnVMopqEawEJ6P9eszchqrZT23Zc8E5zTW9EatwHqFqKMoaWzq9lVsbjq/GitOA8WQGcQCMueQ6rg+kk5fO9kviJ64avx53D0dlzNfDJqx+6XnnbgqLXB88tjWNzzfAyCoqkIVCsCTiroBICyQOHn5G9+w8fTtrHYg0+5WUDuc1ZpoZjCt8f4zCZxtCcynHStd/1WQJbB0z2FBst62qn+vRzNd0RT2njX73/YKADgI2aEuSnB4yoeNt/5N99S1qJN4s+RHmtPgM4xhz8fqBqHJIqcOJstyuOwkZDlNoFgxXlUMiJlVkTjAGxZnNjByMF6P9yGQJ3NfFSLKrnejYJ6z15w8Ze7tHlXO8anTsasnriQimtVzxgLP3HsYZTSNOwoAxBYQFRiQ+Aim7921p29nqn4lG+BKpjyPVAjP1Cac8nOc5fIx1VEMiokaWnlW9XtlMPwdT4wW2O/V6m1u3O7+7q/AuQIkWy2Cy2gONF7/lb1f/6cevX4tmK0DJWGx8OWB06k7kHKfqW9IDddIo0FPDh+mHfPKDjsC5SBbbzzTxXmKcvoMznhNbfZNnRM2Bs4REStae/veL9mtpkKQzN8CgcBJoud3etf3/vm3b732C4sWZRUIA8QLs/F07TV/ZvN1f3GQXFcbQ6JixAiupIWyuipBQWORRaMkLUpOYyzj4sGNJ5KdW9CIXEJGlACH48Ab8AoGmIiIjUoIiRaYZX7rkbpZTjbswz2jsJyqEE0N08cljM6f8gXV6UKA6Xot45sMfTsxDnYqkNFNJw5NeIEKVAGfmgZJZbg/7UhkdM4IUoEIQ/2gByZIAmNe9oqXNZ5/mWUjzhljlMg5Z5mNGk/F6IqLu4bmA+fU3pauPwquoeej6vIviC74+lvTqvW297fx0W94djkSrRfBZTQH/IN7+Owv2RTT1R2DggZ8wZW0UFbXlTTL0rjkjqoirqSJjYwTck4igq2RMIuIVYIBMTFGrwYAguR238BaMNd3dGrn0Fd54ujM/3PLxHSx05VtMu8F6cgndMp9dOKPcdxRBXAcHXXyJpMCiwJqDIt4EIEU3oPo2jPPqvfGGFUFkaoaZlUpqkM6xet2qfc9R075irACXWFg+Sz4+jdle7O25SW215/ofOBXliPTGhFcRi9K7dk3o/epQYJ2tLPpekWLEwgELg+FoUHfdh6Y3iHcAMpKdrzCKo2+Pxo/i65FvrXAZfNoM0heM1MzAU5PpExU4vm3O1Y5FVAiA7IAgSy8HD088P2eescMJwKAueCRSVWiUFZFzmUTnsN6csX2j3q+Hm3f+9G/e+Mr/k7R4lSeoBBekGu089SNb/jFG+Td4NDVC/IXxShN58ltQYTmb4HzsbqWQ87YcmLZa2mU528L0hgkauDJR61WvdVkGlDE5M0wqKIOnerSk3llp/8Dl0UuTceihWSff9yU8ahZ4zTbBI/PGJ6W9kfGAPCqYALUgGCMJHJw926NTbqYUHV0MS+9nZSMbdntG0PmbnmVXxg5tavrxtqt+M9pvNoy/Fh06Fr7n/6evWU7Fa0DoaJekN7g936+J7VY6qa+SRrCHAUCeVCRfIaRxESkFMF52zuw7X2KOyBO+7fhSTpaeRSCQwTOxfwppIWmlvJMQnjM0CSIoQZIRACP/EXnaVBEUBIVZgaRhxIxiPZfvGMNiQgzU7o2UsLsSWCWVbUErur3WjZsrvRM5FniSB/+3PcXLU7lCQrhxXj+zcCBNz2o2xTp9stXgYPlMHCprJflUOpMieeEJCLRQa350B4eqA4slEmZeJRdI11hFdZsB87MSCs71vouEmv0/FLMv/vE/mEO+olehSfO4Vmx05A0TGCGSLpIcXDYTLp9ImJroJx2LR65RZSpuiWwdApDsASei2AJTLe83ueNtu96v2N0s30AYOt1X7mE77BGhAp8Iejqk3jnz1rLrdpjPtbNrXrREgWqweq6ki6ZklkO+xwpMWtMcEQkIhS3bOe+xH3yjiAMAni+tSQQWJT0VT+fJrBgNVkgrcWxSfBRNxIBM1K/UGYYBgxUkST3791N75iOC5lZlu9iXTpFK7DShPctXzbMAAa+8SRtbL3sBw933hgUwgsRxigXQn/3J61uXRk0G4SuWpb7RUsUCOTL2s1pLoRozdcI1tfjxDqT1OtCvnG05+O+j2P4GVNAaG8DeZL7FBJlmQHPcGW2AXPitVciZqhCBAAxkzUwzMT79+4DEBlWGWZew4FyUBgCq8Sy3+ejWgLANA/ieN9ehd3eyavk9SS4MJ0feuJVaO/dfOVXtBscg0FesMuVWUaYMdBfcICR5ZEaNIbANEse02Rmx8jrTZx/A4ZjBWCEjbCSCimEzGa3bdhLzYqNoIYUBMCKDldGCTMBqipgZsPrlm8qMEmmjwARiAGazc+V7hw5Is8UNrWlutgwe+Gk2qZTl6QvKAEYf0jPomE6ifSc4wPjzkKAUWoKeBp9l+NMfiSEcaSZkW5IDCIlsDJUSUkldkn/8aefUGittuG8eOcbtiYL1gtJw5ie3HS5E1sMmdsT5lV+YSgXMiFYdR1YpodA6zuNmtfPOG6gpjc7sN4j3jU1NDDY+8h3/blnvvRdzT/5rZzuunaEGevzo3f+oPaNP/Vg41mX9EwS79Y56R0VLVQgUE6WvLawZCRW/WCgzRZ1u4Yc14wakoEfDfsNwOm/CBaAwLJ5tKEvuyYuYIScN788ua6M5h8iIsMRvH94fy+yNkmSWq3GzGnQ0UCgcpAES+9lYDdMtKXdw+a1OI75JW/94Y80nnx50UJVmJUdkF0C5vO+2fQUdJdrTw+MSrd/Y6e4tBOBlSCsLVwNHAM+rnXatXaTBm3FABCQARslVuJhaCcmKCBh4Bs4F3m2DGfTCefHOx19mKf+zaS9n/xDCURmGJxM9P6LL0RELhmkMUgvYQ1hUQTX0JR1eA7r0HkX9TuKa+lh6/bOrT+1G6bW8Qzdub7sm64wQSE8J/yGd/hf++Fk50YUx9Y/qAvabLpayymoZ3GEqKSlZHUVxYpbDjOi7RFgoJacGbSp1dRWEz42dQNJMxSqSurGtvQokYFV42TYz3O8Qql1epZz1LupTPRKoxoxKZKOzqGRE+XIc5WIFCAyXgXE8WEzafeYOfaJEE7JTl/1qKGlI0QNzZW1W22f18CXdP6Wedtt2tlpttuP6WGN6C7hwz/wl2998bsu9F3WmFDhzwnvPhv9jZ/bfng/3m303c1aw4uLnBsULVcgEJiAaf62ZCIPZlYDoiTqdaJWi/t90ZjJs47W2KZLwFZEsQ9UAJqx9dEJJ8+zvIqz5/Bx7sHZM4f/60grG2aoB9JM9hNnGuYIiXt4/16jHjnncC4tax0sToHyEN63YulioNtXd6TX08eivrtKvdf+0Ee2n3lV0XJVFVu0AFVFGzfMwHav3oi6fYoOB/0rsrt1rfnhtr06//yMfjZ77qNk5PQFsoyEXJXnEKgYGcPKrPc2p0lxUvYkSjAKA88uGXSbXvq8eRXESixIo+rT0sPtBNaccRrMSYviaMxKMDqT7m9uZoszrUIUECmUFEMVUf2cc0YoQZWJFQJYQyoQ7N25e+u554iIiMU5NVlDlKx6mk9tysvoVzrdoCCjX+meQ06s20ye5mULz2nge1Vbewcb0nisETW7ZNhtXdu+0rlyK5fC15BgITwP/LK3+Pd9e2J2EDtEWlfd9gebSfOg/njRogXWi9V1JV0yS85n6IlVCUKqJEwgb+Ju1Dp0/Q6cI01o1LWqqlbJpzywcpxDSTi1pkxlqJ9/4om9aZIJ5m6z1Tw6emQrFiwzgTLzKFfHQD6wPLZhBjZ6kMRS811Xq99T/sj3v+3WVwav0fMQFMLzIH/6G7Vv+ZdXBkdxVOeBa9caam+yOwrPMxDIYLlh38uGMyCYmhiAY9IBnFG/5RLt95K4q+JBEoYLgUWZoyVdeBZjrua18I2GGTJGHHtl89Q5c2/EBPECtWzg4qOHB6TKAJ+yiDBQKYICH1gGR4RrGnd1I9HNzbqpxbVG8uC1P/aR+hOvKFq0SrKyA7Jl03jnv1ro/EXbvsoPFnP6AsGV9Hysbl9bUPyGnAIiDSK+cUQHT95wG0/UzCHLNS/tpBaZTss3mGmHfRJRK9a6T2q1TU1caKLXEU3zs0+FZlEAUH+8U3WYYJBo6JypOusyOdkOy8Tncfsw/DCuVjJ53Wwzoopx7M/0EI3ESC8UHR1K5QEgkNRkKGlpJKqQ9BY6EtvEiTcCSRD7+vUrr/wzb01sxH2ZzmRxrB9mt29Z9WX++SvrGprFkl1GK/McFmVVv1cGZXMNXfy+8sF3PlfMratMmIFbmNpLPr9oEQKBQCXZ9vFe4+Bq8+GG8fHA9KN25Ij7MNu7W1QX33ewPbnho13sbMaD6kcvDCyVAp3D54SWmV6mmIHSsVPp+HzPADOcGmOS/qDf6UJUmRa3LM3PS3/+rxkIBKqGKF7xzz9UtBTVIyiEC8PXnrzxDb+46FVhrVfgMgnvWzlxevVmzTwwm73/8RW4ehXgXk21Pohj7foGyCKSOjsM2nBdQ6F9XmNmamv6Z+5VeKECz3N3BsbJJmaTEB6PQJgATc+QxB3cvW91JhpwqAuBpbNurq2r+n09J0YaRUtRPU5EnQ48Cnf3g9HnfLFHfbm3yVhyVZ0RfT5fICu9TXWeQ7movqKYtRYxa8upb8sp7ksPd8U80+jedxtv0k/8Ip58JXCTRZnjyEZeCK57jeMEJAk2jHehiQ6Moen3earaZrznZzhl+tg4+ugjzzypH47zDGKqqU89RScr4+iL0LhAZnjP1vjBwLLpx/HjzzztGKScy2Jj1owVzAu6tFVmrHz83NZizXZerNdKd6T9Wh7fmLIqWDFE/kr7T37t6Nd/ujAJqkmYdVuIa/zEmwC0eLtoSQKBwCWSUz7DG8lLxB+2f/Kr5Le/Hff+GN/3FqAjG2qS2A5erHMMbO2rTaId8LYLzXPgdHIJjZunkTDNSZgqemPrn8FI7Zs4SkQ0NBLSsCoREQwDSI5a/Wa7UhNV68WqWpYCq4G3/uPf/9W3vuhvFy1IxQjTz4uh7ebGN/4/3sbGF7S8J1gOAQTLYeCs5DVGyVqbpMchxie3jDcxZluXjt/4NXnh9XjwY/i8byVDta0n451XJP2DOsTYhlOFCBN50rwsk4HV4JSleRkXZJwyW9CZLYQ0E7eGZq4iStvzcciZ9LhOHR15hxKlhsNhL6Decc1I7Egp2qhv3rgKNQvZGrItgZJRTytOsASei2AJXA1LYBYN6t34gm8f9Pdb/2Hh5V3rTFAIF4KAztXP+qLNdhJH+Ty6vFz4ylclFySnL1D551AQ1XclzWLJY76sfIYZilx/o5l0e/xCR+7/fQD45G/XvuQfCUW1zp+6nWeSQVz3R2ojEWwaHyeOODTR60h2Kois9/lCLqMTd3u0Qvj/s/fmYbJlVYHvWmvvM0RERg53rnmCgrIoiqKqHlAUKvSzZbB96gOfokh/qDQO+LXYKp82zZOhqBYZGkRFn1OrPLV56OtGZGhHiioGC3zIIFJA1a2qO+bNKaYz7L3W++NEREZmRuTNyBuRJ07E/n3n3ow8sc/e65w8Z5+99lp7rS3Tbj1GIWyrd5162pqebCvWbWVbTSQiYIUAmDVjwnbxxHEkr9+ZDD6RwWLv5fBN+Qpj7BpvF12c6zAk03peAxjZ6RZkRGDQxAHGVaw/8zr4u7/LW5zC4HyShoAuvxEAWsjnq/N5y+JwOIrHwsaC+pPvTb/wM909yVtu1vF5q+dKtdOwcE0ChrAEUo5J/JEF/3ZMJ5c0ZTPa6Z5BpmzMmrrIvAYCimVUCqwh3xNrWvWGSdKhxUDuvzkcjpmBYgi4cvannwe/9Et5y1IknEK4dyp86ouVV33AIIQ8cdNLg1woC8OIToCx/+aYVWjANu5mBRUoiKuy7kkSYSkFn8nfqPopVBG+u7ds9LZna5NYr1JZ+1LqX2EgBlmz6nCiac6C2BgFRAUENW2XRHMgjbHL78ibncqeiEh29wpmc/6bBhzBzcV42HHRxG3+9ATU3/IvOx4QQRKELZ4CWb5BIQFqr57NsiC2xQUBbPfZ2P4dwHYsjtwpn2lomcgd6REFUippsQLsgyirCYibjzxsQDxP2yQhQgbJRJrF5LRC/TfH7rRv2h3blCLcfxuavv7VE+hizf03H23K8bPfu3zircMlDJ9xXIeyZzwCOG5QWyyjaeYtjcPhmFxYqRSpRcEqzSd+ueRLCRt+srK4/mV92w8I/Nm28q233eml65Efgr/MSSVIlrzWaUC/pltB6SizBwlaQQu2FOnI93M5KccEsbt9bx/Wv4sesh+L4u6GwZ4KmUUEiDIdFJDA2tXVVQ1gjPE8r6v6Tq0To8PhGBE1VYkCfc425m+8g+RM3uIUBqcQ7pXg+mfBYgytI17YkmRh3M1N75ouR5Fw9+H+MNaCsO/7xisbFhttpAK6VF790Lv1gLVcjbc9ywYpNOcgTrwKJ5oOaR/DalxLgJLA3wBIIZAWVSAae//jmGj29gBeXHca1YO8LdjpjpSJkmXU7NNc18CYGR41IIoIKgUsjbX1pNmQNFEas3Nph6oZXf/jomVmuOvgmCbKyNXIzvvhQ99JRx40eYtTGFzEgr2i7/jeI3e9SjiOUwhLLSv5XLqhB+ijCeqZI6M5AReV1LGVQVHXBm3DjY1834O47pmIEUM0JGmLqpHF0tGros99EJKV/of97W/B7T/llckGilPdatSoteZXfaCYWgEEAdNjWsWaA0Y7gmvgKDB98wFeVAPctcfbHrSmn8t+W9kTkD4KHu74ANRpEzupB3GrpNlOBcCdgKQsKvN7NazKpYWFeSFiYQQkIhFBBSjct0e/yOlPPi5q6L4YUQzN4jBjUUOFB0T4HlDegvFj1aT46IPceugfGx/5nwDOre/iOAvh3qDXYeP6s0YDkKe1cTNnDodjMJIaTTrQCIKSGg9hvjp3BFZtawPqD+125LueBKEyLYYmwVGfD1/hrbJNgrgMGPvKXGmjkvVrB3UejgkjW7Z3MX/RIWxoo0xCuEnbJAjtbISI2RLHzh6hfkZFAZAs/IwFQEWg1MqZ04TCbLLVgwoQxU2F7J9ptQRO63k5MoZWf2XBBLiQqiAsn33ND+Prf/rARC00TiHcG/zG6FMvXyJPSmUQZZNy3gJdKi4ITYYLQrM/nCvp7jCzpTBmP8WKBBVC3Tj10PKfvA4e/sRFj03/z+ulBapSK7fOe7WkftRAWgWNRtUOpZ6gb6VyAKfgmGQu+qyN+2HcrH9rQz372znoe3rl3vFG24m0XZ47JkciUAQibAERzcZGXG9kfYvqtMTDWwInTmFwQWL2xSxaAvttE3c/j4oRjeuEbaqaG1611ryg5NGKf804hJ0+XAe0J+im/1h6+ceNWU+gnkaApYkLY+0G6I5JwN2HGUQkOmCwwGmSJC1Ui0sViB9LTv7jno5/1xMCWk2/eGX61uspCea9CGt1qIQryZqnY9dtO3rBrrVtfyPCIR/PvT7O3ayEXT1nlwMtZwN7EUFEUCQIAgLWnj1ziqizHpIl8xodSmDH1DC1ipAjY0RRYQMVcZLMWwwWlq79L+cWvcrl45B26nAji4tyBOGl/OU3GYjj0EPLJUoSCPOWyuFwTC4CEJtYp415L6p4tiVUx5L/9JeA3dhjDc03Py/982vwOSvqwYeMMlI9TPXIzi9S5EHqvOYcuzHyKRgcZAbcw5GD9cAtww8iQkCwVhAoCzdK5JG6cO48IjJzNvRXuNugxSkMjmnC3c/7g63yw+NNdba1vr5Q8vnnvmvlphfnLVQBcArhxRH4qEKToi21FpWREiCr5byFGhfOlTTDuZI6tjJcPkMLUqE0VXMbcZB4hwObxr/13Xbo/jaQj18G9Q8333Kzaqyzd6wEcewRoAioMkMYGwGlAUNGkVAulv7bUSz629hFQDoJCbMd3PFYQZXtzFL29fGlk3ZCsd50hVlL/dQ26onWIl3nPBERRpHOskDcNP21K0cCsSC2J3IMYRbBLmsXoZsvXgiBEEhx1oZWgAhCiASirLXSbKQb65qZEYUoTVMtxQkbmJNraNEViW2v2ul3DR03Y88rOCAh4IiKD4tKQ0XNOKlKKUblnXqdib78/pHVPr24AcRFKAPgTa/WL1k1GLPy2aLV6Xx6TYqzlRu68H3xiE6g8NfBMWL6v1OVp02thqF/GJumWQ9hHS97enLfr+2jAT75GbzrlUCeX6lGHC7oeqznKVpJqoeNTTwdpJYBa+hZAQ/3k4TYUTS2hRXdrsvtYZyHW34MPnZwfN1uuNG+yJZj26UEMyWw87nvsQKCKALCIEJiBcVqfejocRBUSiGBABdnLtu9MfZFcXTX8TKqyzD223DI1Z3j/vP6ay1rfVoIrIZm/fDliQ1OtL74sTG3WniK0qvmBt50/fyX3xSZUildKjcbZU+aVtXx8bzl2ituTZdjEpi1+zCKmRcWQwxXqFr3D6XB1RCv77s2uf83vSufaikItFmXRWiu8fyVfnRGBZC21gDRhJcrMeoSmnAUj92yDY3wyRo8SNiZe7D3V0SgATPOOxIVbhs7CgIACSGgwL3CNgAAIABJREFUAoELj59WICJihAURgIpuARsVs3AdpvYl0cMs/B0PkkZa8sKY1bqOra8v9+ONlT/52Tu/+/V5yzXpOIXwIjS+/IXkdff4XA64ZfR8aiMIrgig8Imhhx2gO1fSDOdK6thKf1fSQ37LJOGqpHOm7nl+/XdeZDcuyc88fusdSpEIzmEDKsdo/euJPWIbdNliqLgJzZThhPhzozorx+QyqJfeGfZzH2phx+l0K5cyTiDoBBrd/n7p9ZzcmdUQEVGJCJKCVjPaqGmFxqTWWqLJG7e4qKEjZSYiiPYyqgHW2F1Di0FJLUX1ioJSCn6ysNyQ0o//gaQnrs5brknHdVgXp3XyNoXn1jxrA0k9VvWvpTwgr7TD4XAANBPtebWyBE3tBc1H/Lv+XfK5911infE9N/uYth7+IjbO8Nxlc9SAcP70hoSShMpaa7lIMzSOfbHv4C4XqXWrrW/nYtS9NNS3DO00Bm4Wxo7+iYggmDXdOzvJSCgESOdOPa4IENEYFnefTwvOMjblsPTfxoyyUprzvMRwKWpGpQTUXzW/Ur3zO8bdbtFxCuGuXHkXAGBZla13aKOiwVLrqDoyr8DPW7JJwVkOM5zlcH9MqytpwztyOI6aEoXWUjCf3P/ekVRbv+dW+43PyNteVDardRuDrGCp0lLVyK4J1gPjXEYde6bzlGE/iyLujC/QN/DMnh7VTSMhAPXRNreOQwSBgSSLVaOJQRBh+cxpTmLPU4goNr+Fsi5IzEiZtbyCwv23oSmMJTCfvzDq1SgW5FWBpER2TrfQm2/W5H9/7QReognCKYS74V/7LHjxB0px/YJH8SKbVk0TQxw3Kc5btHExrQN0R7Eo+n3oc7OJtuoFKZiN33mJvvZZI6v6gfd5d39/9I8fhvJxsDyXrLAOKiUNyp9EVzpHcdmHnrNrhokBGeq7h26OFDefdyQAQBZutVZXV1BEI7mZtqlnchUcR19ysgQOIk4kKJUVLhgbgSVItYr42tPHTx26kJdIhcANIHalvHioylFSqeKxZlKzlVSIoV5eRLdWx+FwDKTCtYZ/WT1uNr3L9AvfaB5+YHR1n03veyc3V+GXrq5SWDPzpXStER8vp0mkXb80o/SZK7nk2ZO+8y97bgh3fNyWpuXiY48sc0a7RYSN1bU0TRFRTbMNqT/TaiF0TAuTZesthdX1tQuiS+Xg8ljSmDzPSx98wldXHvn7vEQqBE4hHMy3vDz56Oua5GMQp+mFAEsqmbcQYRA3C5QHKSecK2mGcyWdTeqqpG0aoi7RqsRjSFHzd+/QT/722r3fFOBKmhxRuNYM5iT1hSXQIhSI8oV8si0tqXjzoxfAcbC0LWYivRH5O9kIqZ2KMPPqFATO8joooE7KwZ1IO7VgX9VCQGRAbPgtOmHbYZK2N7H5KwMKbnq1dfIWUicjBQqgCKEgdKLRZ6kUSYBQlJBi5YXW33j4MY1stKTTazkapPgV3WOifd/u3AYVL9yAYSuz5xo6WUSmuaBLTWimSZPAeGATprL1v/Ke71l6yvfkLd3k4hTCgVDlanj9X+cthcPhKB5lW9dJLUVq/eaLce3r42jC/PNH1F0/bP7po/rwhlVJ0FiZIx+UnxqC+Dy0UmUuaG8uxaqXOD+ZGWPfMWBG3zTt+u32g/vXJsQgVri2tq4AnWXM4XAMD97xptbqFz6QtxiTi1MIB4LBUvCIswS2KfwMpWMqKMp9GOm5RJc4XMAX/Gfz4J+OqRV7/29jsha97lthw4Cv6/5pXyJrW175BFRLPi6kWrREbmnhVLEz49/Onfurao9fXWLhNgQdg+DO51ewfcsSUWb2tCBs7erZ85pHFlvVMXJmzbV11s530tYKDkv9stp1P/3neUsxubiRwgDu/FH7Z69BL8xbjkln2AG6cyXNcK6k000s5TlqcNyUuDbWhszf/B484Znw7jvjcgzJnEFSupqmjXKr1iKlm5akHttgrDI4Do6+XWtfFRFgF5e8i1R4iWzXUTuJJQBAMgWvtzRtP7D9GSDTDIWA0CKAyMbyBUkTOgCXOZdXcF9M1kqyA2Dm8gcW+y+s/Gb5lqfd9P6H8xZkQnEd3AA4gZ/4tMjpvOVwOBzFoxSfi/15+L0XwcpY/EV7WIWH/hKe+6P4sa96//nJlMQiTc3awPqcJIkfGHUUQ2/MMjgmjL4pIvZRycgK90SU6apVpKBtJMxWIWY19KiRhJzptIigEBBtrZFsNKYgmu7MWZYcxaIglsBhnyPvbIvnofb3Hz1IIQtEYTT7gyUAiOmHPzhvVaTSvIUpJKN6t03iHNlQjOgEqOjXISfyGmOpcC5eO8mPPGAf+L8OpkUPjDzrDF+T8LXePDyyEc+DskFpEZLl2FZQ55e6zTE6Bt3PCNznKxEAbn/Y9mVPv4Sytdotn23nE/ce16ct5C3jxayA7DzKgvQUZgsA2K2w3VxPxBERsAbAgKQkyK30sic/8egTr+/6lF4qORn9iq77DRo4Fv28BjLA6Df0+RZlQFOQ18Ww11+HsZVjX/y3i2OSp+gUfqZtLFx2C8C8J9Iit4ZwnxRlrZdjusnrPjSNDQ5LB6YNAkAK2jxwJV/rqZN/swHXzC14SpfSeMVIWArsxY93FIG+t+6l38+Dahiq5i2Fe8x925843K6GSe9X3R/dQzppJ4iIAFfOnEuSZO9S5cu0WgKn9bwGMWvnO2mM6vrLephEKwDgP/H2MYhZeJxC2I/T/wA/8kGlPNZ5S+JwOAqIINrfeymcuOmgG773Knvyc3DvVXG9aW2r7IXWQuw6shljHyoiblPARsWg9VRtpU9dpFFEIsqshYioEOK1dWPcRK3D4RiapJIu8dxlv/q55KsP5i3LJKIuXmT28J79E4tHFjZoToMtioV/ahmwhrk4psbRnMCgtevFuQ7TidWibUBQIxSjEmuP+hID+nFYhgf/AOrLOch08pN01ysBsXT4ihYDaF9MAki+spYD0B4IaVP3tTI0h+Jc4gvGAGUvSykIALJFuRIApPaWuWJu2uuyQ3DTnNen5t6gEVnHhYCC0GNpl27yQASkthjYWwG2RevuQs5q2EzNhtxjKew5BbSCmQMbAZDlVIVaR1F4/HJCwKwhovbPXRzyhAodDCM3ZswIJtltuHMbls2Um5N9u43qfAsCidcSOkJN/cRnrH/ShRvdjrMQ7uCGu9NPvKdhFzxchLSVtzQOh2OCYRQkhrIxVeTA18bqpqG1xbUv5ynU/b8ZXHdnAprJVySgfAAFGPiyjhYDWUNdibDq2/UchXSMhd3te/uw/l30kH3U2eMyOkAL7WBtuwnO0g8qmyTr6+sEjG3dFtM0HVyVw+EoDON2zSUNqQctmMdgaf75/35U1U4NTiHcwdfugx//IHrzXnweQ5d2YsS4tYWOSWBU96EWZE6AEFArVsJ1A+iTv/rBd3vXPmccku+R5ltuM+ghs0nYI/AgTpK6oUVRgjKXKlZpvTChAxx7ZG838OYAa9BAa1Qd8rZgpzsfMVLby3c+dfcppTbDimoFQFGj0VivZWFpEJGZcx/HuDVmDsfkkyTJIWy22LeX37rx4XfmLc7EkXtHOnGEd//EFWv1CBpxwBXr1io4xoPLZzgVaBCDDdGReClBapN6aiqqFVbvfkV6/kzOwt3zZLFCj34Sk7poLwiX2DbDuB4FYZiSxmYipZwldIyV3ZNP9MYE3b3HGFY/3EP5bovtD12bYVfmrD9UHgAJqsy5FYlAKSC68Pjj1Ams6itfRBDRCrv8gfuj2Nnl9sGM5Q8U7r/NGksEtVYwXy4vSP34S9+ctzgTh+sot3Ldv4rue09j/nhJNQKUWrIApPpvjpHiLIeOgiIIYDm1CQCVy8H8wkI5Og2tDWh8NW/RAN56M578ZPIrd5q1VWNqRAHoxgLHEWIsi+C5/n9aELl47sHeHnVnigrcXniI1vdcuJ0uArFHSSOgTAPsr7lZa4UZSCMoEQAhJL1x9iyxBWDDrLUGRhCy47fITaslcFrPy5Excwr/AM6Y0PPFa5yhw0fPvu8Xq9/983lLNFk4xWYra9+AH/lMxKcNXu1xgiUf7ICgC66vzJdBPZwLQgMALgjNfhl2YiJJUvKCMpRTKmnwrK3XV8/WP/xGSjbM+smDlHwQ8uhn4c5XQFiRI0+r4qlGuhiDDfyKD+vGeIizN0s8rSB2/htEFkCmX4lu1JjBUVm21TNYirbJr1eULe0itdVXgmwdIAC293SFQGy/YVGAGRBJKUQRNsAMKJCki8eOqVJoBT2l2VhEBFKTZ5uZLGZOMZD+ZzwyXXfSrt2A881brO3kNdeAXupps2GPx3yq8r33qI3TjU//j1wkmUzcDPEW9F2vWUjWDgGSTZkTSS4MLOoshweCsxw6JoFB96FXDgmVacXGNFPD6HmLC4tQPxmd/nzeIvfwmd+BJ7xAm/WN6LgfCoiKW8uJhIGK85bMMUZw0/1yX8OvIbvZvXTL2EkqCAAgdNFDEBVg+8WKiKgUEgEjIJw9fQoRBcFaVkozc9vS6BiMswROOSL9NwcAAFSlxUlaIgyULMiaXz6Ut0SThVMIe7j2bnP/25t+HHKZ/TqqxDNLecvkcDgmFwPGsiFoBJUI/DRqMcSl8Gkvg2TCAni+6TKTaO0nJABkSkHJMibi5S2W40AZ+VTatgovvX5E3ExO2K2Qma21VhBRKQUiGmnl7Nls6aCIKKWY2Sk2jm04BdjRS2QXRaraRCyht6Ee/eUXLzzju/IWaoJwCmEPD98Hr/jQXGpPE5dtzeeKxeHDQjjL4UQyqjXkueGC0EwkOoKyhrpfxqgamrL27dofvBw4yFuufrz9CVpZk6BulCxHICyqKdoLpOFxJKA8ZK01AYpLZD/Z9PeVEAERAeq+1oW7Wf7axRhE+nqQdfsTQsAei2L/dYm0pQciBMJMMWuPtRE7rmrtY7NQG4AkbEBs1/9UuLOYMGuXUJAFGRFBEShi5rYMhKBAgCwAKm2MgTRtXFjWzACQWCYizSMLAld0RWJblz6hjoMFYuzBY3jANprieTFpz1EItZZXD+lcYOYlSG75o/X1T7lshJs4hXALSz7WffDIpq35de+4oRN5S+RwOCYXnIdmqxZaqWizTmdKoOe//aejz0/oOyZ68y0Q+RBsGK7DfABxFdI0MkGi5oLQTxpGJTULGAbuvVBMtilv+7bXXfzAfd8h1OfY3lgyu0QE7XwlhFprYD5/9pwiyCyESikp0gzfeEGerIG442LQgM0xSppwRNkT6/ZwI1mumRQ26tf/hz/OW6gJwt1wbdTxWwEAkuXUPxZaAl+DObVkXGL6CcWtLXRMAkkjwPCqqrYbRmmcWzRzFK0CLOct10DMu29kVZeHrsTXXVPy6uBVobTg27pENVg6Fqn5KsVRs5G3mI5LYJducJQ95N4GDzt1VMT+LjP9ZduxExUAEBEIbJw7K4kBYRFBUjw4JM4gJs2CMQ5m4aU4C3/HSaYo1z/RqwtpGodxtVxNvGsVnxbtV1/0k3nLNSnMQl+xV+Ze/lcBnr4AgQ6PzvG6FY45IZobTe1sR1OPY1eG7YOmNirdiE6MpvX6jAjtNeNWOfHn5+2j68H18N7nLD71pWuff1/ecl0EhETffZYr/6C+6Yjy/BZVwSTKNm3lCjCtgNLEuREXhHaPJ1uieoLYbYUAOn1C9pkHPNiYRaHY3kbn/51OadxzXO9hFqATmrR3fzf3GUvbgzWrG9J2yUzSLMdgOx6GtBtiIWCxDCLampQTALnh9tvnjpxgREZQyDLkfTuBY9bRMK3nNYCRpdQryoBgwrxDC/McYYQiIKqZypKuMEXn2Jz6sSflLdak4CyEPVBrPVyolI6Wm7Wa1k3bSkrXjq5yt7bwIHCWQ8dBYmMUT0IvSWCu2jgV3vVjk68NAoCAn953Faz/9+Qdz0kxAGZdKqvyIYrOA5vYujWERWPUwV361IMIuK8XVl9hsoigna92CEwA1FnBiO09hJwtXAQwIAAIhOcfP+UhEJG1dgYT0BfFMuPYJyz9N8f+4GOqqRXEJV9vSEnELkqYt0wTxMx1oP257psBoKF9r2ka0RlbwlJcCb0jqjVhoQIdo2ZQrBYXhCbDBaHZnYSum5NGK25Vk2jJT6L7fz1viYbAfvJ36dmv4kc/5weeieIkiquVEpAuUZS3aI782KmkbckouDedcE8aKcFmTsO+K6b6rDbMJviEEBCIZeP8OZvGSlEW1WZQS9OqOBUj69zoEO6/Dc3Yg8SMiln7C4+GQc87aYlCBLg8hShUy9isQCAAEN7xwrxFngicQggAQNc9B37ko6KaydIVKrgyjDeE65Zj/wAePGc5PBCc5dAxDrQ+FQEtKbzgVU/+2U+Vb7w7b4mGgz/xG/qGu9iYwIMyttalCkkLbJK3XI4JZh+GuIE9ba9OCL0Dkq2d85bDs9CmpBQbC0m8tnKBrdVIk+ZHlyOTq+A4+lIQS2DRJ1bO2yYSkbcxz3LBLtbmy5B6J3774cXbX5S3aBOBUwgBACicD5kPxby4/i+UpCulE7FKFM7Fei1v0RwOx+Sik5TwcC0lG/r+t7y2ef6LeUs0NMkbn6SQlY21pyCKdaXS0gt5C+UYDX3mvEaRKnCP5fru3fFxm23wImOS9kQegtYaxKL21lZW4zgGAHITfI6i4iyBB8ETYqsAmyZZt4eXQqxGj5aj5olU9JzLUA/gFEIACG59qfnQz4OyTR00vCWlmoFpaQysNH0u5yaWsxxOJM6VNMO5kmakWrUQA0qOe3VsXoDV1bwl2g/xPbdoksTqCq+YNAEAkcVQTJlA4qDslUSsQCp6RBG2HKOjrSC146+06WQjpHYqwmwxniAwgCCg2m3AKZJ91Xfuf3vMmU7oly3pDUVACCRbB7hN3O4nBhTsWLLaDSEiCrTDyDBAJwlhu0VCRAYSIGSVpFaV51Rq104+4mlOJCGlim7BGEg3xM62bVDxwr2YtjJ7rqGTRVGeo2HlXPFFBJT4no4kacR6vhF6MeBjb/v+I9/5Mwcp+WTiFEKwh66d/6G/yFsKh8NRPCpRS/EFo8Kzv/pivfZw3uLsn4233Kk4Sf1Kaa4KiKAebgk3WIKlRsOshWJAKiQreYvpuDT2YkPbh51tL/kP+4SN6f2yk8K+f+Pb9yIoILIgAkCkV88ve1m2eofD4RiSm377VHD8xrylyB+nEIIqLWyUXFS9GcWtLXRcChdKXsBXEIf6+fc2Pv2neYtzSTR+5RmqXDXNjaB5CoIrISiXVWRqFmQpomoJ6iTzecvoGExfrWx/Xdn+MhkO757aVf92LiMU7OObKtgZsRACEQgxAiKeP3XaQ2IpfG6nolhmRsWsnW9R1gpOGuO+T7AJunp4VLUVl1lXCMPbXhZ/6OfnrVuN7phtnCvpPjmEeLqVtqS1kbckI6D1H6+h1nJ66iF9/kIlajTjEkM1tHXwVBSUOW3mLaBjAHsxynV/3Za0cO8VjqTkZnmCrm1QqJ2IoovQZvezJftFdmi7dxKlmTlaWbOtFhbfFXDmVpKNag1GYVxDZ+4vXAgwxEfe/uLy0749b0FyZtYVQkFYesXHDNfyFmTPuLWFB4KzHDr2wqHowoZfgj/4N3b1G3nLMhridzwXvvEZ86u3N2JFXkWozqHV8bokMQeFt8DMOu0leTs+D1tJ3897iWGz/XvaNPp1g5d2X2fSyUa45UgCQgYAESAETzFbSG3twgWa9eGMY2IoiCVw5iy0A7CycfU7v9z8x4/kLUjOzLoiYU9/3rvzZS0iVfRJmtl7hieLARN/Bb+rYFQnNmgiuOjXRyoV24jkqqfAfe/OW5aRIY8/CM94lQqD8omrksRa8ZRl9g4FaWTRDbqLxGCNr/2+2P4IbjHFDVT8YDOuzJb3Tp/WUGDbqykLgbOt1WwPderbUgABBLBXHAThdlFCsFaBAqK5Y0cAizGkmTk7kYzojFGKceFGdb6OAwFFhX5Ac0caX/jrvGXJk5l+u3uX3QIAtpGUpuA5dZZDh+PgWW/aBcDW1OWn+dRvlJ707KjRgqYtxUk6dxhaawpKeYvl6E9f54VL92gYVMNQNWMfi2Lbd3R7PV0j4bbqsedH+xDRys8ibZLylZX1lZUkbu1dqnyZNcvMrJ3vpFGU65+XnIGkksDZ//sXF27/3wCOjru5iWWmFcL09D8d/5EP6VLQAD9vWRzFwLmSOnpJKhre82KpPZa3IKOn/vrrTTMthaY0X4e4hiXT1BfyFspxSexDb8ReF9ORyrLrl52pzEGNimitQQSEtdZi2TaaWTZCh8PhGIoYvYjwlt/6l/UH789bljyZaQtS8OxXx0duiKEcUjR5cyUjAqn/NrUnPGE4V9JdKYorKXJJEXscl+OyqJWmKguISJj4gfbm+FO/n7eA4+HTvzH/bT9U/8Jl9reeoO+OmdLQxgYDAl9zaiVVGnVSs3oJIc1b1plm8CQ6AiBkuf16lSsBQALIlhFyFmYGN813WWCPzu99nTyz90i3fNuxMyuNmUwAAEDtwm0xepxMcfsCRMAsaChiN+Ucclty6TkSETQYkwISkbKpsWR16Nn1jUNXX5tYQ562loXF155lywopr9fdjL1n2568O7dhKYpr6KjOd8aYNOOkkEb0LbO3uFj//MdgVl9ns2sh9K55VvyJdxtQ6JebXM9bHIfDMbmkYhKKWmGy5kviLZWoVIZmmc8uLJ82D/x63tKNkZVfujv5wLV09xo/gkFcjuhypYm5ZQKv5FdsEiRzT/DkfN5iOi7G7va9cfg47KNO2RyQ9LNb9iq07QWECAq1AlDGmGazGbeavtJimYiUUpM27nQ4HBOIB2sximBw5g9/bvG2u/MWJzdmVyFMH3lg6WX/j9a61Dq7JJW8xXEUG+dKOt2gb1iUiMTExmiJ48hIYkvrH3mtOnFr3tKNGVH88cPe5ZEBS9HDFNc9vyRWtVpNUAZsDSHMW0THruytI9pUn3aqUaPtyrYFON3ZVe5c/d5OWdENSSo93yASAYOJovULywqEmYkQEa0wANAkmpYcjtFTlLWCk0ZqK4vQVCBP/9V/WvvcR/MWJzdmVyH07/6pSIExJlVBPNOes44cGFX6pYljSvMZElqKdJiUAlAhoI8RlI5R+QaonbIrX89NrAMkfutNYlbJK1NpIW2aUrxaLQNoRo6IXR7XnBlu7mn3hBM9o8ctD+6+01T01nAxtqeqF9p+VNunXAEqELLCDAKKUCkAXDl3Fq0hyNJSiIgQ0QEMiGcupuSM5Q8U7r85dqcoCmrJm1trmcDXCaTXvuZ9eYuTGzOqEKqn/2By37vShWsDSoCwybMXPc9FJT0QnOVwOiAWjb7HnkCswChMwLaaJx9QT305JMXJYnpp8Dueo8JqmjAEWkLFkSEO0Uqk3f2cP/07liwH/cX8RTcP3DFU2z7IH1bz3BvtbISIPV6jnVT1Qu1gB9tTGmbnRcKISAgKSMera2mr6aFCFmbuKIRjz59ZlIGvY3/MnMI/Y6xYowPFG7W4epP/xOfc+J6VvCXKhxlVCPHQ5f6PfmR+5XzDO2ZAroTChKt2TDfOcrg7eVkOxZAEbLRNMInYsCDVz/ID97KZrcCG8RtuZCRCE8lSQy2BGAYAmr0JtUll34kidikwkv5nULTSzf3U1vqEsLO/d0nh1slKywAAhECEikSEmUEEklZtdVV3s1cgigiOTjGbOcVgQL89tQpwQV7AU3v9c+KQbaqgtB5ezvXHgCsBzGhUkRlVCCmYA7WWllPgOki8xht5SzQxOMuhw7EDZrZomUEpIk9ZvxKGR/xbXixf+1Deoh04b7mRIQC2ADFg7IchNJO8ZXIMAXZthvsbQQ7p4LAXh4h2mY6baI/FcoCEqLKRetcuioiACgCXz5+1qRERISQiZh6hR4YbiE85Iv03x64U/bkIU7FxNCervqrP49nmVz+Zt0T5MIsKobrum5O/+E9hBGTny7KhlGrSVXkL5ZgtnCtpsdAeMYNqeWXWykYbCTfp6uQT74R4JueS7rkBIPXRzgMldZwLTd4COTbZRzcy9CFD2htH1LNtDldIKRABZgFBVKiIiLTWKNy4sJKkETMTUdtC6PrV/VL0gb7DsRfOl4+gknLSiPTlDNWvvfN7F+54Qd5C5cAsKoT2G39f+eGPEql1iMopWKlX+VTeQk08znKYKwXxZBmegriSGsCQ4qQqtcQm+pCv4/h3bscTt4+sgcJx781lhCZrHUZ18H3xBJslAZWI1iSYBGYOPBe9+UDpjtS3qEAiICJA3de97AgCxO28gztr7DyPhIBb7XVtm17vAkXqPQgIgTBTydo6RJahcDPBobRztiGKWADuVsWCbTuh6tbJiIJEoAgRmRmIgAgALFgBsoRGRAQBpLG8rBEsQyqEgv7wHcG2I6bfNXTcjD14DA/YRlM8L5xCfjAsRSfFKEVAMUVe7dbffmj9H/4yb6FyYBYVQgBIg7SBuAC8pg8xXl2HpbwlcjgckwuVwK5ByN6iFwTN1cM1CwBy5sG85cqTtXueykqsQWip2KxDcEUKqQnnU68RmGNWn5X0Qt4yOgCgXziWvvuHracP+x5R0JZjsRtOpkPP5+3zRdKzZFApEDl//jwBEwoRkFZ2+HCQyG4gXixowOZwXJzz/kJUqi6HFY9XiIM0CvKWKB9mzsLjH3+qbZxdvPVFsX898HpMWplGxTN2GqwteeDekSNlWFfSqb1rR3Rio7o+2NDNQxhKI0qkMSeRaI/ZnvvSiKovKvzxX4P/5dWADLgYJPVUM6gaWFtNbLO04HHCs/eKyZf+fUXXmtcnwyBs7kTs/z3s8iD1SVnYu3Nn2NMtIg0+tmM94k2psOclLd2qBQAQBAVBWCEK27QVHbn8SvICBgQEAL6UnmBq+9geBuu6E9YRj4oJG7YUZa6hKHIOC1m9JFENvaqON/DysLkcXHEjoyRWDbu6AAAgAElEQVSnH8pbtANl1mZQysnZz1/xQx9ppSZtnSZdrWKtoqQVz2iQWUfRca6kuzMqV1I9l1bqao1LGiSUG81/fXFKs9Z5DuAdTwYsE0VxaBcQIC6DOhxBFerNypSOHgrGoOmkka3r2/kg7P3R2CFDJ5pon2dddlSbOawiCKEgACoRAVRgef3CBY+IbWqtRdJ7lmdTrNlyE52xvIIORy8VSsnAYrq+HNMirwU+hHc8v/7ZDwOEeYt2oMzamMYCHH38cIvVQqlyJDUbKlaRjXzvurwFKyxubeGB4ILQ5Au3mEux9hYMymL9q8HdP8b/35/mLdTE8LZr2U/11z+11hDPRl5TK5VCRdb0Qt6SzTy7B3fZb675HT3PngcSQr0entmP7WpXezcKbo0+CtBeCZl1fW11ZUvmeskk0XT+9GkNopGYeZcJILdGa8ph6b85HD2c9ymxEQocKpdaGLJWGkOAJYCxpzCdKGZLIfSv+2aA8/O1AEm1ktMKpAYl8ecNurDpjqnCWQ53Z1jLYc0vVRKC1grh2eXFM/F9v35JZzF9vPkW8/XPwH+5LT18LvUeakhDkYLU5XctFBfLX9/52W8J4k7z3W6V9LP1bdKrMe7NAplFoMlWDTIjYLRyIW7UA60VAO8IorPZ7IzlFRTuvw1NYSyBs/YXHg2zNlFSBm7opRQXbZT6vJyYmvHKAKvzt78ob9EOlNlSCPGGOw79yEc3ILL+UZRDClIvtFbqsczWNMBB4CyHjimihIkRrpYOG7jCvOcn8Ybb8pZo8vjUe+F5PwD/83F4+/8KflBaQaXcwGtSGcfYbo86YRsC2KoH9tUJu79i32Jd1bQ9KYSkgbQYC2JXzp0FNkqpfQxkJ1fBcfSlIJbAWVO0ioJNqnM++Erm0SxzuVm5qiK1m3/zkfnbvy1v0Q6U2VIIJVxY9+I5SyX7dZG4pk6ASeZjf57dTLajkDhX0oOhlFJdwUryeOJV8bt+Rb72ubwlmkj++o/g/h+GZy3TZx+pVxmMG+hMNPl0FAPDyfQUQMhsgz22/4uNVRARURBAKRBRfrC8vJzGCbnOcCZwlkDH/ilBzeJGlK6s0Vy1VJpvrFMjZRY1dzhv0Q6UGVII8fYfTD74WmUo0brFCz5ZnzcYVENLhEMvOnfsj6l1ZSwIU3v9x+xKuqIM6NZhMweXlyStj+MMpoQY4W+PcuNv4Z7nWxX6NhGtkGxgUlGheF5gIrGTl/BrKuhV8PpODAkQoAJUmVbWMU10YvQLDhxICwIDAALCFpvGZjZCyLIOdspLO/9hb21b0hhuuwek/S0yAAPKZmI4yiLHSFY7AiOKEAJ1Q5ISCICQAAELaAKtoRlHy+etJJGJPaGuPNu3ARS9Y5w919DJoiiWwKLIOW4Mok091BWUWMf1ROtW6APAI2//vmPf8dN5S3dwzJBCCIvXqFd+JG8hHA5H8ZgHrxJfsREKvOHZUD+ZtzgTz8f/EJ78LfCWbzGwoaXMcagqKSRNSEN/rhoqt2a7gOxtheFuO/dSZji/053LGgkEQClSShjOnT0beN4MDnAdDsew7OyebnnvSf/4k3IQJSdmSCHE0oJ174W8QVR9t7zlmjacK+loMcZobqZJiM96Ffzd7+QtzuTzGPzz3+CTnmrf+q3ALfCiVCqBWLDrGxGkajFv8Rw97L1b2F8HsvOoIevBdnSZgdnjBNsjGSQCEQSFWgHi+cdPKUHmqY0RMHMWnoKsFZw0Zu4+GZ6+XVIa+zR/AuD4QUuTE7OiENJtL+MP/lwwWO/gITeHY5pwrqS70wojEQF7Wh74jXGIOY2ckq98mO7+SXvyk6B82wBLEviGCOzUjs+LxjbPT9iDqjYO7bHrd9qGoGv0E4LtOQlp+4HtzwAARARAwjYVUEpBrRE36jjFLo4zlz/QrRV0jJ6dNxAJkIAtxSff8e/mbntGDjLlwYw8SMfV019It720ROsRlEZS46xo0rkzvZO7E8WgycJJHBKMhCFPDFMF2mv97vPh6jvh5GfGJNR08otfxlQEUJUYmlDhpBWkhst5izUTDHyugSVbRLcldYRsznYOsrpgP4NMp5VsoaH01tM5aLskyFvqyda39ZRBARG7ubCQBQBQOFuW2G5CBEQQoX0uwCAAbMAmwIZIcWove/KNx667xvJ0vrH3syywL5PW0Q80+k3WkLUoRraiyDkhUHeizKYxJl/9iZtzFefgmM5ecgd1+9kPKS9JRqQNOhwzgrMctovPx6rF3r/5j04bHJo33ySAqIETjxVuYIA4n7dMjg4i0C/c6C7u5ePxPO9r59nMNrG90Y4TKSBK9m22xxoiIu2B0sxMQGtnz0/DaNhZAp0l0HEgUO/ToChUh0+89J7cpDlYZkIhVJc9GeBslBBJmrcsjiFx+Qwdk0DE9Sd8TuILectRTH75JhAlj9wvaKCiEhPkLdCssJe1xPtQ8EaiE26ppP0ZYWd8VNwSaQZ7HUBxyw8AACIUgkw/FNKArVqt0ahdurT54taA5UtRrn9R5Jw0hDHbkFFkcwMgy/GZ9/3Cwp0vzFvGg2AmFEJ7+sH5H/0Lr6xTCPOWxeGYRFwQmt0h48GbftFEX8lbkKIib7kRTn4K3vLU8kZdwfm8xZl19vJo716mz7ej6S76BybtGMMuMmJBrZmZrQUQRFSCkJr12sYoBHM4HLOFEh0bdevvfn39Mx/KW5aDYCYsLf6zf9JbuiGxoSk1lR2NDiwDNjeCPhgEpK9Hibv+B8QAj56iX3+Eo4w2xDjh1KcAsdJKNxbJQ9uw8RP4s3+Yt4BF5uQ/eM98pSFly0+CwHi0YUMFURComEtLAiuKy+Iido2UQcaBdu+JtOWJRQQBQALIPDA5W2SI2JOfUHDTnIe4I5Vfp9ruZ8BOa+18851DqFMSt784EVG6ZkABQEBGyZpj6a4qzNIQIm5qi4jAFhQQKhASsVax9smurR6/7olxEoNWCIgMHiprLWm1SyrCEcFDjRRkUPFhwf7vx4ljVOc7Yzij3/4Q3nS3JkHsbgOej9hnihiVqt74jNUH3p+DxAfL9CuEdO2zzD99ILnjB7W3EDbOsRqvt9IEdrlTyqBgCY48Kfr1FzpPFKdcCvwgtVqrZkmZDZLWH38Pn31+3tIVHn7sQfm2X1E+hXiIOKU1pAomHEsjBZoDC0BOITwo2mrd1o50S5gZ6fpwbj+0t3x/ZOfnTbVts/WdNW5rTwAAJFNVAUTaX2YKo+w4WhiABLO88wximVnYVo+f8IKQMuVWBBBFGOgAuqsh18KNapxflI7Y6TWOg2SPngYdgsQj3/oWk/qKnjvefOiT4xNtEph+l1F++AH/374fAu0lZ8F3oe2mBJfP8GCYNVdSLRXNvgExNkotmxRKrapVHkRHgb4vb+mmgnfe6KuqTVZbG8YuHjbCIKW5+Uoga17ont+DZW8P8qY5YufwfbRdQTs2zOav27uabavHN1XXTknsap0IRAAKmG1qV86d9TBTX7N/QkTCbvbBsQW3Bm+6oc7WZfeYSjEFG2haOglPPPX8h985fgFzZvpfwPruVwcL16akgXxQVmS8OvAgV1LnYnpAuL47XwruSsqCyiL5ZZPEgadEGRTjR1Wjnymn3wMQ5y3gNGDu+xV72ytwTlh9g+A6iTcAljG5LIEG4vTPUR4kF5272fX7nr4Ut2qDvU/0Ni1u57HbLIQ7G8ZttW+WxE0joHQMmgKSSSAdH1dsfy9dyyEiSI/9T1rGHjtxghEQKatSKeKuvfHgkSEth4MoiGvoIFfYyZN0snC66P6ggY/FjjsOAQEY+4/PE4qD0ryKmwqFFi6rf+GvDv5cDpJpf/ve8YPmvndHh64rS6oEotQFlZl2XFTSA2FaLYesUqY04BIAB6BjW17zzcb7n4urDYD1vKWbIn7t6eKfgy89kd98aKm0KLAYBwyh07dHz/4fzN4Dd6YexO2Fh6p5jwUF27klegKNUtvVUwhkyxrIzTMVASAQQiRCDaSlXo8b9UxbzMoIArgFqwfFiNRfh2NP9EYK3Ro1tF/hwTfinIJwZc16Sy0qn/njX7jyBT87LokngylXCL2Fy+DHPuyvn2uoYwaw6kd5S+RwzCJFyWeoyCMMrHwDMOS0Kdgs+QuQaPPoct6iTR1vegF84MrwObXGI8R+BbABdZcndlzsohMOHU20w0ie3836ByXDyKbzEDOTH2b5BjedRalXGOyYK7vOfgwCjMBpbXWVgAkRCAExX9vL1LomFqSjn9rrP2OQ9N/2CHe2QUQc1eYX5lqi7Poz33VOHb9+FFJPLlOuEGJQXYzWFsQS1y2kEBc+H5FjnzjLoWMPiFXAaSSHRDPKibkwnVtb8Z/8WrBvyFu0qSSMPn7UXp9KGitLh/Tlecszo2zXyvY3Mh7SDjlE6ou2tyhtkXPH0YLA0DECIiKqdixTABBcPn+WjeXOukFmngKPholDpP/m2BWnoO6PoSyBGbxVD2zPVyD33co8TyZdO/GoMmqFN7zvfDEk5mBOLRemWSHE234g+dB/igGWwzmlaz5hhFfnLZTDMc0U3ZUUsaHSMpcUgzF61dTVufe/NPnne/OWa5qxb3gCWtbkr+hv5C3LNLMPS+DQT+7FlywOMANeEj3DmGwMTQhEQIhEgIhEKDZeXTM2YW4nrsjiyoyi9d0Q7r85HI6Dp/fJ24vpWnEzRt87fYWpYHV+8aHvWDrx6fo4BcyZaVYIAUG94kMeHrGSeiaNFIJt5i3TdnjA5jgYCuLhMrVM2vUvMTfD1IuDIFn3jY4Wjqqn3AP0A7kJNBvYX74lVjW0Gi0DNEVpzSyKhTH0l3SylreAxaZratipgGU+Vr1leiBGkr6LvboPKiHgVotiN9rnZlvUexAQAiEibhpBEDvB/tpbNtEPKCK2933IQG0fUZH2skYSxE6qDBaQzTiCmJkKCEWRIGik+mOnUJhJoeiAvNQWZ7I/uz47t5Ex5EikIAMXZ3mbDnYmp9zdNXTg7dlj/UPY3AbVUyvxoZYJvLXEcJrap/3qWXPf347onCaR6VUIyyCf/SPQuKHqodUmlZKkWPLyFsvhcEwuq95lqXgVWS8Fx5ulqLJ22n72bcB/mbdcM8Cb70BLoFh5c2ASBuuxgbDcqp1JS1fkLdyMMWrD4B5GGr0hiann180o8T0Rbgh6P282skUMbquFCADgeSZJ1tbWNAGIBWBrrdZ6D+c2I9CAzeHIn22zUntfJXiJRFEYab0WBMdtqWZaG9V0+bXfRa+f2tAyU/vAq0M3wxEI8TAEdZuaMDgGaTlN8hbLMWG4fIYHQ1FcSec5mpOzNdTSiuI0aPzB99O0ryOfHPitTyXPZ8tKkdUhgu83TkNpHtHmLdqsIu0leaOoa9fBxvY89dtapD5Wyq5KiJuxZHbktsBMe0TyQKS+vp62IjSMiBZGmXPCWaLypSjXvyhyThrI2LvtZa3gSDgmQEGtkvL5ClTZ8xLw5Fz1VHE8C4Zk4gZkI2TuZe+3XhRBZc6bT0yc6NUSLJrJ82oYiqnV4CcNdmPQg2DYd+EonaT6QdACXCJVruPjQbwY//7LAeoAjfG26uhB/cIXGEkIMRaCVDyrUm3Gv9xripGehHt9nzgE3rJ/SxkGAOABDx7KpvfmzsNlZy/KPcf1OpoyiLRb6Qa2kS2eYigsIiCCAgJpr1Rt+bMK20v0GAVQLDODCEgClsGaY0+88cQ1N6DWlllgZHFlRrYscNwd3KiYsHFUUXSqosg5aSD3f06Hvg1xuCNSNj42FZeTwMdUe2kyp80nf+KJAGWAiVuAdulM61v2bgBoLpSDIAiCUiteRlWGZJHAWX4ce8NFJT0QJs1y6GEZZLWemDLqQ/FaeMu/BpjLS5jZxN7zFCHEhIkNBRW21I0M6Tgg+uea38txOyx7l9Lu1l+7lsD2B+gxEmb+jVuMhAQA3DUeGkCtQOHKmTNeZpMhHKjlOrqw9N8cjjEgjH23oSsaEDV02GoquOjrhRZ4pZSM4nSOTwoBHIWXvHBokYrAtCqE94FaX4hLG7VSBGY+vN5CLcA0ljRvwS6VgqzldjjGwtiD0CQrHBwpe2mUBKf/+Pu0tADOjq52x954401krSCmtXX0y9Yv5y3QbLO7ctj5tn9GQRnhGIO2ft5Sczs/4dbWEVSnc0CxFgDMxoaNWoaNBd7HGsKRRQ0de5CYUeFSyu8H5xq6PyZtJeuK12o0GiUi68FCgxvGzFWOonxh/tYX5CfUGJnOB9u7/ddLd1zLMUIJ61z30xC054FNhBCm0/13WjX7SWPQK1v6OEc59k9erqSRPoZ4oRKvsz4U/fP/4E/82mjqdeyDf/8gaA1pqkJgDPOWpsAM4TIq0hOvJSvJgAh2gNKTPXicxQrFzfq7/2d1bM7N7+oy2ita+9stWexQQMSCSBYYUERA7OZR2a+ZPCiZ16iABREVWwsJSAqGr7rxpup114jSoVA65Gzq1LqGDjT6TdYQsSg6VVHknDQGuYZ22evzN7wxsC+JiioQGoLYmnJcUsSW5mzr/PrNc6eeP4WhzqZQj0B4PZZKsZF6JZAEKyIclhPbSrymJ87lz+FwDKRqHiVDZVFNVXPaYM6883ZIUwy1DefzFmW2yMFnW6gnY0TvtkUSQcj2y2ZA0c0xzC5iI2YZMlCRWj53XiklCMZM5+zwvnCWQMekM2wWwUunZEtea45jBGOZ2KrU1h+1i8f4Y1+ib3392Js/cKbzgSdg75Uf7fvVrFlyplDjn0xcEJoDYdyWQ+VxIz0UcCP+/RfC9c+Er39yuOMdI+f1/wKRQMuH0hkI53QkRnxQLRBYsuGacs/dfhj4HPW+H7eEmensH2hJku1Gvx6TY48FslMP4qZJsGuWFAHkzZ1Ze9si3LRtWR1LIDBKVrhrM5TuUe04NACQxKAAOIU0AaVuufOZamGhwRIMCFY0tZbAQUzYspOiWNiKImde9F6dXmUjryAxw1ffX86vLl9jXj+F2tMUWszom37B/74G2P7LAxD7x7E4YCEPjKk9sUnDvRgmkmHvf8X1I7ahKILLbjef+f2xyOQYir97N9z+MxCsg49gPaYggNS3AQdLLYhxoILi2B+DrufFrjMOeNYQAaDnz9Qvj8WWQDLSZ2dvM11Fsf1f106w7UDpbVeRFpuCMBKBoCi9cPgIeB4OVIz77x6aoryA3WPkGBv9sgj2fzCGvg1HNOEySLEf1Ksdmm+mpRPxlz42ktYnhykzIN1AT3k2f+kek06houuYaFxU0gNh3FFJ6+qKFQwS7wRGa6Oq03GpvOs6CIz60uHyPTdDUo/L8zY1bFZBx3lLNtWMe550Z/17anGbjyhBv3Fk1i0IdgpnLqaoiAgALpw/J8Yi88wF/3BRQ/fFzN0nI6KrCpJsbvuqaDRRQweSuazv3AYQtc6t/7efg2e9ZGQCTAZDR9mabFb4C+C/6e3Vr5bqwaCAov3/xoPeREV3MR30xEzZTIDD0ZdBywwGTixKA4LF2m8+z3/6y8cmlGN43nRHAJLedZq+9CjfHiflI3PcqEfHQa3kLdk00vXhxI5Frvvh0tm7nokIkv3PPftQhDLnUsFeXZAAGBGzYbp0bRCEwMLMoDzg1FoBRE5Ns1HzqAo4oiFQUVxDC2OydEwD2Jlr2PF4TNZ9OOx4OKxU4b8JvGSyzuLSmTK9IAH4WvLI9RcqbnbfMRk4y+GBMCrLYYk0NB/zvv0NyWedv+hk0QRM77+c6/8d3vgsSGMxVfS/nrdQ00afR6Y3mcRQD9TWwtjVMPfY3Na9ffZ15u8FCTFTyEg2hzQIXRMigjATUabWEiAIrJw7603bcK6HglgCneVtusH+kaIG6x0TZgkchFe77EmPf/HIz/7xyASbDKZLITx6PQAEZf9EdCJvUSYdl8/QMcsMzGeYNiyUpHkhbwEdA/j734a7flw99g9xuS7xkbylmV5kM5NEL/mtt8e+v/WTp6Mo9u4h4mwxI2kAgNRcOL+s92GmcPkDHY4d9HqEbvMO7ftw5DX+RJG+27D1qPC8KiVVO3fFdMUanS5LRfMc/B8fLGFzJUw1j+bUXBAaxzhAIMQ+m1vdny8lsY3/+hJYvFrOfilvWRwDePQz6nt+yRqCwKCdrjnNg2KwRb0n6d+WCJzt/YMTO+z27tgeVGZz/86isqWmLVnmqUdAAQSQzKkUEKRjJGxXsu1gRATbjkRKQGIMiJ1bWlRhebDU/c+kGEzYa6QoRr+iyDlxyIAJiK2zEAwgu9+bY55bwRGlqqijMfbQUX76P//ec0dS4YQwVW9TfddPLSxpbUNI5vKWxeFwFI81teg/+9X8lY/kLYhjN8wbbhXNYKbq/TUJ7GWuc+j50HHMn3bq7Azw9nYnIIIIIoJSgLSyvDx6wRwORz+myQFtySQ+eitXXrj8e9+etyyjZHpeqHTzc83970qsrnnhIo3Q42tIH+iC41xJD4aBLouOkTLIEhJ7c4oTLdZLU7Y69g4ZoliXq41Hk3/6MwhcJvSJ5w23IqOAEWgQLpQTj4gEAHUF7QZ0lidlZcUysFBh7DtjZ9DaLZZs0Z0CxM0LiFnfRAAkSNLN8ter6QkKIFBn29YYkHRq6H2HCgJQx+MmSyEoJJkAQNs6RMFOK9CxCyJnYgh28g0iAwkAAvYYGhFFGIgQPSDPAKACYrN28hskhohiCxZJKSVsAUCQCuMa6l7Y+8KtXdwfwtjdsGcbVH7gLTnmtYK4VbyLyjksEZYCMbpVO/Wnr7nhudPjNTo9ig1/8W/8N3485NQytdThcTc3qiAWDofj4PE5ClBQQd0/GoZc3nikZNePpWc2/t//oI8/OW/pHHtC7n0KQIw4z6rVCK3lJoRl3Vr3gqtgRxcNzh9sj+zlLbaPN91FD9lHnb3RIHq00M6LuI/raUf5zA6k2voGISoUAmBm9wZ3OPbC9GgO+8KoNFEtgea/fgPT5dfkLc7ImJ4/q/+8VwffeLg5d5mnMElN3uI4HPvCRSU9EEQksSA6AOAkbarSPJSPX7Bzlee9xjz2Odh4LG8BHXvj3meAUsIG2GpVqcQbiT8Xx3XYpv6RUwiHYW960cWv5yXqV4MCnOJ2IySiAthUADcti9ttjNg1SIqgFVk9fw6ZFZKIdBVCZ0neN87yNt3sdJDL13Dea7Hs3cbdbsuWKpIILjy+8HWamx5/omlRCK/95uSv3836Smw+SmmjggeQsLi/K+m0Wg6dZ4pjmiAAKJVbCXr2jKJSTXR9Iz4coG3WoeVCjBYJedONwFaD0omKkgCgpkIjIpCN8bnjTLjTlXGGuegraXuBkbzCRvse3Kn+AWyLIC8I2HU9bae9UIBKiARBAGsXljmJFWXpDQUxi1IzcW824f6bY3ecgro/dokauo3s2cprfJjXgq7DMH/B80DXKTVfee+Lj3/PK8ff5kEwLQrhw38Pr/hoQhcIfdCBkhFlm3U4JgRnORwpysRx2tSgvBJp0ZU5WAjUud96mVp/PG/RHMNz7y3aagPAXgCgKWVExCzvnDMMDmD/M5VDHbi3kjsrvFgTBABA2KMBtv/c7cRiO5X/jtjtE0cFANyoN2trKltmiNKjOU4WLomE4yAZkJ2h/x23W+yDcecVzIkLuhbWmdIjan7u1j96UNjLW6LRMC0KIUDFN6k5Cph6plbzlvITxAWhmbz5VYdjK8Yraz8MbaNpNLFpXDgb+fPh3T/a+OwH8xbNsR+it95olQZtVLmSkiJAhaSUcqsHd2cXvWt3lWwsbi+IsPMvNSiXfdtNFAFRcDMHfZvNtPXdSgiAuB0zRgEgoAKbrC0vs7UoWQ3ZuytHH7hiRBtzlrfpYO+WwL4cnCXw0uQcOUtSg0oQmvQ0R7Z59Nyfvyc3UUbKVCgq1/8rAGgqdTRREkBEFc+s5i3TdqbVldSRL4iq75a3XJNOwmyilAIMbJgoWDh0VbXxxei+PwKYkqm+GUTuvZ4CDaYV+qk1hpk7o3zHPunRvjqBQPdVy6W2vstXCCC0pQncUi7b054XANkc8xACIiGunj9nk7hXmclTsWmHWt2xOXbFKaj7YyhLYMa2ef/2fMWYLYH7kHOsGPYCOSOMZZgPxAOAhae9KC9hRsg0KIR0w/PgVZ8OY5OEG1HMoSfiRnUOh2MwZR2VQG34FT+SpoKoZpd//5X+/8/ee8dJll11nuece58Ll6Z8lbqrrYRMq9VSqyXRklhpQAYG2GEGmGFZzKJhAbldWDHD7AoYCWSQBiG3GDFiAGEHNAw7wGhhESAHqOUdQqZ9mayqNJER8dy99+wfLyIzIjMiKyMyIt97kff7eZ+srBfP/CLyxb333HPuOedvy1uX5UDoV9/iYJJ0GJLEKGVHhPthAk9gAc3sYYPD3vBmqFpEQHRI6M1NpRSDyZYR2gAXi2UU/d+NQrquDwmCoCXORkCOCJvhyh1ve6jxlG/JW9QUmAeDEFzHRR3K5U1SAmsQaSxijLINJbU97fQpSYRR4fBTkwqXYzTeShBB2nDlvS9PHvwQwOW8pVkORPTTd5lIg7tEwRO18ZCbjmSJPjvITJCGiLEk1zPo0CZzzCl4dERbpi2DebeBl8VkwXB3GRkkHrqIbasBIgTs8yhupQkdyBdK/SdlWX+QejuhW2uw7y5dxwAgM+tuf5LdgQkNda+f7UGDyIgIiMjATN3ihNmbpa6YGFh43pX7v0SoyXXROMIIEBP0y2P2eCXpIK3nbT7gXWHQe4dcjnw8+7x/CNvbtHTOun7gtIjRLEYtMo9GmmRwxhjfqZ4AeEzeug5K2Q2Sm+D2F5s/+XFuf8ozscd1R6IxJi3e/KXFYikOq95ixFzjqCJvjH2ntrqiPvT2vEVZpsTbnk7+efMPIbzjVq39FE6amCDsCEf4Xt1FJ4UwEiJJjwlapGol0naAuz/G7Vivf/w4I5CBq21Pp25bs/0pRvt+Zxw41/SfxaS1brfbJi+b2XYAACAASURBVFVJHGcHGzPBAPdoTfhaysWO2ZscV9/NB6GLbePUqrcGUeA0Vxx98avvfIX35Hvz1nVQym443QQA8L/9aoPB27y6hnWpSTiJchqgDqHyxFQY3vfM6ySc7SFzxui8FRQCgiokD0XB8olO53KlBr/yzeLkU/TKJ/PWZZkeFYanX8IbU3HjporNsuOsiSYndQABmIKDnoJYp+BJJ2F1JBumrNDC1u+7D0Aw2/t3HmAAAMyIfgqzxW8779dz6w271PZ5fa+iAebuXRABBtfUMQMYBGRmNMzMgGr7vmi6V8uOZwZgZGDWyBoMM2jQCSgDAm956l1uY1kKD8FomL1LomDOwLKMN8qis2iM62Qb+XjOOPiugM7AoXDkkJciJU1TuUGsr8rT19b5yqtO5K3roJS9G1wXX/cvgitX0hhW/fOKjKhjNaakNNYg2HqGhYyUscw5KV7UzsmATl5xHV9XAU7plS/lLcoyVToIf31G3LjJxriBWUXttE6CkwQOgpEQh1XRIYch0T6meWstA9PpfYb6zfY/DtlVHbGXQKuXaLRPJw+5LG9VIyQEIAIJiJAmG1eueoKYNdtilZYjQ271AwuWNXRc2E8bzvp6yjXXvZxUkujKef+hk//y9XnrOiglNwif+s/1X79ZnzzrpFLEV8EV7SgIqwFjNW9lFkshsfUMAQDAFQ3BG+00bRAei9f9O18MUMtblGX6qJ99opBGGQBKkiUVRAmpi8JPgKprShDUAKodm4NsnwysABzrvB1n7XvgkRUVHLgvAg6kFe2agtvFJ/pq1mf255ahyN01hCbTgNk5AFKsrlyWxmijeLq5Cw0P3yyWGcAGh25jX+iIZQ0dn5Mrsawsuqlq18mta3fTv3nld3/i5At+Im9hB6LcBqFsPAZe8hGzudb02to9fSxJF3AFwwhkiR6sURytNQnWc2g5TETYZveMJzodxY++59tw7R9tOpl5JXntnQYNaA9Wdbj4pDYHbhL7ghil0jGi0ubITYhMh72Nw96rO2tXZAxz341m74Np8PeBg7v1CXcdz5mfEAhQgJS8uRk1mwBgEGia/awtKT8JNpnNZBRt1Fh2T+AohJMsKRG0G5VOe0U64UI1Xrn8pDdvemdvylvagSi3gYGVRi3ewMCViXLji21yOUHl4cnkQt7SZsW8hpJaLIdJ0zub6CbEawEtA0D40IfzVmSZJT9zF3QE+sJpfhyCM2HqutE1kgzC+DKRsV1Yez1mMRaflU0I/RXqt/Kobt8WAVEAIgOgICAgIgBcuXDBEQSTpdwoiSfQGlpHnEOecC+/J3A4GD+Uur5UTUH+aQB/bdM78RjwH63d9cK8pR2IMhuEtzwn/dMfM3UWHZC4JBw/Eibxg468tYVB3uIsFktxWVBXHePViDaDNfm078pbjmX2vPVx0lxmqvmbF+DY+ZZUrglAVVNkPqplJ8alSDOPA0oYIfOF9A019z22McaYlEhcuXQZEY0xrCd4Hqwn0FJ0bBXBaaHc+irV2p5oNpwVHaJAR61FwAL4GW9cy1vd5JTXIKzDVz8AP/hnWiELYuykbDwl2AgvfUDPc2H6ogUFzBYbSnpIHLG1hYlE1LVNrpt3/nNNKm85lsMgfdO9Mo2NF1TWP2Hcs4p1RVxTQFpWBKSsHEQBmDICCM0GCOb2+c/oN/AGIk16LiPOIip7y/AGXUnUrTeYlRzcQTbeRMoq/nF/QcLsJ3ZTp+0+b+f+7im7W/3tIS1y7z1wdz0hQjeBKoJB3Lr7lv7u1RQBCAeMMISgk2hlxdEq8krfn5bFE1gWnbmRrZ7dtY2q1zdqvLR71IQMyDNfKzivkMI6t0kZN+Y6QiKlZuNgUI0W2147b3WTU96GLwU4O+fdtcVimQ2MEdNXPbdZe8HP8kd/P285lkMi+vl7pLqWimNuCgpEBxdEWwELTT4Em4aBDVISeOCQENoJ89ZbDGbhGJz4mgO24sijRng/du8lQCQpERGUWb1yVQgxB2ucLHMC8/DNUkiuNK5sfPlv81YxOWU1COnm5wJcqLgLeQspCnZtoWUmzKnnMDU3SFpcWl2kaD1vLZZDpfOm/wG5ojiGdL2iExC1hUokwmu1+HRgpOuyEXEEbTbkpF7eYg+bHZUbhvcgh9+tXO+OW+Zfr6rEdiKZActwq+giUve4zOXCXU/mtdWrkGrUo9eUlmStYNGwnsDJmFpSlllnDZ1WdtOSk6rFh9/xL+ov/JG8hUxISQ3CU3zsvPcD/2/cuZi3kuJg6xnaUFLLftGiyVh76A9ehFdtG3LkSN54qzFtlwRTrIPOxnqoKmda3kqorqnEAzaSl0ikKdtY4kF2RH7mxY56g919CADAtNM3uLWnd1b3yCyWFREYDRtEAa7DUdzcWEOzR5Ihu1bQcniUxZA+WguZRnOeN86+5bPB2cfmLWRCSvona/F9fxxXatJfyluJxXIkKbnnsOYGneThygt/ZuPz78lbiyUP3vx0ITgRABhC9WyV19xkAZxFp4K+XBAm4gQBjrRBuGOF4e6XJ77uqLvs/6zdJti2HchbvkHashK36tdnZ3ZdiLi1g5lQSgkM1y5f8rA0nsCyGAyWSRnT1Jr1msCsLujuzQIAAJeCxUU3qN71T/MWMiGl/EPima8BuLwQtVRkZ/evy9Gau7GeQ8t+UKtXzpllDq/lLcSSG+Hrn6ZJSePX1KNtfSxJ2p4yaefRyLRi2TJYqZGdcNxlsDEP2ZkLuyX0BY4OU9gzFPv3MIMQQJINGmPAcPPaGqfaegIth8m4oaF5jXOGF5GwExA95Oa1kP344mer3/RDeWuZhFIaBnzxY85L/nTTccg5mbeWsjKvoaQWy37wa94j7/lmZ/1S3kIsufKaZ/g6jOg01M5BI3KWlEkXUHQQzoFst0yct74iklc3MST16NYLO63W7QWEAy/Rtk+w7yIEggCYDQIipElztXDzRGXxBJZFZ9GY13p9Rw2/EmCQqhtvbv/JL+WtZRJKE+LVj3zOy/j07aDJAzTW/TMhR6uNti3rIVGSvr/DNVlZCj/6W0c8LNCSfPBXzQt+Dj63Ae+6He5Y084JQWktiY1OTJ0xLeWc6VToN6UIt0tHDFpf1/u+D6tJ0XeDrdMHrjPkFBwcHWPfScMsVNx6DfrXPXL2v77jDSACGNBaICEiAzBg4+SpPd6TxTJdcEzbb+S3Dmfb/46r86iRptpL8XjSSJcanc/+Vd5yxqZ8vZ24+fnqA++oYmK81JhOtw7S7s1yHWwoqZ1LmAEFW1uYOouG2grZ0+usvMiravA1VB1sph/8TYAgL2GWAvFqF957XNxz1VysVfCKNkFScVLlQiyZ/boJK3GTscbGrbBmBYzVvBXPkP5okS33juFs0Z0AxG2fD2aVALP9NNzyY2To65f7k+YzZ5FxgGLHud1qhFnMXDfVPm0XRWQEBuCsShvt9Phlynu+wZ5UA2h6p+B2We7sFCNAuBqB0QhWrcuPgkqYGUlqA66QaAwz8/z2j+NiPYGT0Z+Bs79+4KjjR45bZrxWcFSdw2ldvyyMO26ssYjd2pq7cuV3f2rpKS86PKFTonwNnL7/Lys/8JFEpb5aUo6ftxyLxVJcZHu1lmIFsSlv8CumEl5xaKOmH43f8xK67e681VkKQ4L6gyfc86sKhA8bUUT1WgzsobrW9I63/QWgCDyIdTsIDIgkb7l5MNMSFDxsOpJp8ltsJbqgXl4Zpl2RpTsS1SAwGQBGaq6vOkRpmgohtNYAQFS+wZKlsNiHqRSM6zbpOB0nZlDLd7/tH9Y++d8PT+iUKFvIqAzkvS/HxSrVbwpV0088I4ZHfOGIVXKHrLd04IgPLm9ds2Ju31jRQBq+zXhS2a0E3EmMhISrYK6Rruig2gLfPXaz+vR7Qa3O9O6WcpF+8JecZ78kYYchSbAu07apnaqqFc3MJoWUTf00hdeMSoCcvMXmQRZ1OZLRL12/neXecdsX2ZGNdKeM/iSo2xUUt5sUBEbEwWt2f98OrMO+mNUsXw4zsIkRTp0+E8fKcV2lUwJAIZgBZ7zUwjrZ5hti3JGbCDnLezv8+FmHho563vYI9LbsAalq7HXQUc5mKpZPbX7ur/JWNB5lm6e4+1+p+34j8RapdbkCUVIZOVPLOHyzXA9bz9CGks4Pm3GL6w0jAtesSZIJLaRrSSXq6CQEm2LUsovoDU81YJCExJZyFqF5sa0qrOh4tY5IsLHGcompkbfM3Bje5vciSPfVI2RBmyM58JgEd5ek778mwY5kM109AlBki6QMUHRtNe1ErqSs1AQRHU1TzYaGTsb+s4ZmT2le45CpFb4/Yoz6XhgKKZIuYbPuPvr7P7X84pfnrXQ8SmYQok7he95dVdwKFjQuktrIW5HFYjkAM15z6AVuO2xFrQhdlOwETrzsQecPfxi++oFp3cIyb7zxTkHKsCt4HapnF6iDQe1q0/iYBq5hZkCZt8TCsMu0m7Cu4MijJrr+Vpjo7nuNroKIiECIWdhUEm+uX3UdqbVGRCY0xsw4YYdlfhgra+hejopZ1xU8YrkkZg15jqJOGC7VU7zt7f/on35C3orGo2R/eP7ob3oAm41jFQO6vUIwftkJm4RmQo5Ww2E9h/OBaXHDD05IijWChla00qwvQ+eqvvTxvKVZiov62acgpwDSSx7ZMGQ6a9AIQsCItWIVwJH2Le9hkk0pZmRXt4K4I7Z8RwmKXRUpKPP7bXsCB3R1nYS9nwRAQMhACIIpS12j169eRcOGFRIBgDHTbP6t520+OKCHzXoC54xEyRrhIl644jR8c2zxqd+Ut6LxKNOAXpy9CwBiWvQ3L7gpLwULkYzyFnXUmddQUst84Dp+FEWxBF9jisJpHHOan4UTJwB03tIshUa//k5pWin4IJZAkrP5KAT1itAgK9oc9ZHUdFr4SQNH92WRdv/tizUYWLklunu2s54SZB5CREAgpPXVtU6nkwWLMvN8J5WxBupkTFA/cMf8cncp04w9gbbO4WSM+73wdMImTmnZEy1yWgxw+6/cf5iCD0iZ2jh94RONH/6wp1bcSnUd5BqBhDBvURaLpcCoNRbpeqXhJGksPYhN+z/9r2L5dqjOc+UAy1SI3/gMQ3WH24uIKZ4TrVbbHK/Ga4kYPzJl7hhilU1gJW6fsnsoMp0IlN6gd9j1sWcu9pVYZARAIgSIOmG7NWAQTjNUz3IU6X+AbFaL4oM8fBtFJL0OVBg8qTkKU+XpRJcp/Vh5DELRcJ/7Y8K0YjjeiiggTekm8vGpXd+Gkk6IDSW1oaQzYEprCwWaGtch1UmFK2q9qgP5ta/QX/wwXLkyC9WWeeP1t1RBhUZ6fFF7y47caLNBkTIr33iIdaZVJhdSkqhYlL6/uK5fqBtrZpANAtNWOpmsuJ/JKlfv7je3sroRdv1yW3RDOnnQnjQAhtF0r0aIPQcddzfOUosCALAxmWjEbfG9BYRoCJgATC+PqUHkbrNtNBjRE2+ytw8oAIWSDgFuPHS/SwZdaRL0hZeascMKrOdtPuBdCT/3DrncT/1AhO1tWjpt/cDpMm5ySqGhgrITPyIdD4NaO6nwF/7mEPUelNIM3L0bn5X83e81oysNp+PjBnoxSS8x1kNosVhG0nROXnP9xfhigDVUjTXVVh9+W96iLGVi/Q13AXcM+X7ycBod950GJyk4Xiyajn4EknMBC+m6qXDdtJ232Cmwn3DQg4aMXv/0KYxMdi0sBIC+TDOwlXtmmKtTGURstVpJFOkocRwnSRIhylamyzIldtSKsKvvLEPpyJCFf7x6/MpaM4jWbwkvPvS271p46jfnrWu/lGnm4MR3v2/zRODGG+lmLXU7S07Y1stapDO96SjvsJ3kux7DJ73m9XMrzczKvDJi8r6O2NJtXwUpogYv/I0XwqknweXPHrI6S9nxX/WRhCrGC0E3QDFyhdU1r1qN0xRVm92Kw3XJnbIvamfmfjtqVHON3HsJza5SogYAYNQyS2Rg3ultYe6eNfRSO+7YRQP0vDbc57/Jjsn8hcDMjIaZGVBt3xdN92q8JSbzHxoCY4wBZlChZFI6veGOO2onzwRuJY5jcoXRw9uZsvRrZdFZNMZ1so10+c046tg6AydjWt8LVMrX3JSU1vwb4stNOocMn/7h01O5+CFQknGs61af/cqQr+rO6ibWdBWw1lhVXiJnnhnC1jOcFBtKakNJ8ydJklQsm+qJ0DOqvg4A1hq0TED0pmcZLwTTAFoET7K3AW4Q82bNVDhYosRFrULl5i3zoOxw/U2jruA+Gdo77L+/GBTQJ6kv0egwJyFiN/Q0SycDhIiAiMLVBEB09dKlgEhrzf3xqBYLANj6gZYdeB54Rup2VbsPhjcmaQfV5TP/6rV5y9ov5Riguzd/bftT764vPgaZ2HQkVLGjsNJGtpkhLBbLyDWHG9UTbnJ1QzUrUqWyk7dKS5l5zTMBFxGM5BOoHTCeYB3HUNOh8dcTNwJnHkJG98lOW3Eim3CXwbnvAQnTrjKDCDBgmnZNwWHFJzizP7dNxO4vfUN5ZDZAHK5vpFHIrBl3OzAt80a2OHb3NvaFbNbQI0nT+FHKauF8Z7N53DMGnU3wL/7Oq5df/Kq8pe2LchiEyRf/avl/+t2LcWjgBHlnHX1pQW86ad3Tm7lpskloJgJRDN3y1jUrrOcwX05tfimsPiZwDDar8Nbvh3OPy1uRpcy89qyACn4urbzuNvA2vNZx8NMW1kErDEPp2QnKfdAzw/pKRPT1m7y/MUn3lP0PYHZ6IDN/YO8/3WMQEVFg5gwUDhgDWjevXBOCgFBAafopm8xmMooW12Q9gdNl1t+LgIyrRaVzpVLpPCLcANk3zu1vX3HP3DKtW8yUchiEznNeuslxzWGBK0FyfwKwiUnk+5Esh37LdbH1DC2zoBOcF2lMcScOagAAj34xb0WWcqNeu+y+dzF57orz1eXOMiFpiELJZx3nvFpfyVvdzNmrTZ5Wc71Pm7AL7fPWiAgo+pyEvdP7gku3rokoQBAgSuBrK5cBIJvHs4bWEeeQJ3atJ7Bc+OaCEujICoV8Q7ou4zARxLSxcOeL85a2L0pgUHl3f0/6gXcCB5odLaoidhOxCEGDw4WAbQyYxWIZSSgihsSVSVxv4tO/J285lnmgDV76NzekjzUyjjHV5CiiVmKuOLU5rE/YbwFef4XhYU7h7eNeWyNn3g7e2R7zDDVuzdZ+Y4CIlW5tNOM41sAqmW0GO0vBsVUELXuj+fgV/2xThyKobLLX8iS5ohIRSvP4dz+ct7rrUwKDkJkXfvj/IyIDWhgdO46EkBV7cC0BP291u7ChpBNStGCN2WJDSQ8HwymK0025BG/5JhYqbzmWOeKnbhVJymQ8Zs0EJNMkYhACUiaHyQHpk2l7pBgreWs9EFuG05Y3bGdytSxdZxdCpm6vt7vfy05DyvrEbd/aVt6XbmKXnWfyiP17rsvqW2RosKu2F3iS2Xy9NOIDLj7DzBJAM7DDrguctC4+7BtIZOFqTFuP5XXI0gvt2kbV6xvVL+/unbsFyme8VtAyGbP+Xox6Qhj0sl6RIBItpYiJiRKVeISB0/zIn0zr7rOjBAPu5GO/mSR2JGexWMamFidO+gU/bItvfB387W/nLccyV8RvvlMgpyg1C9chIAeIGQJHtyBNpF4hbESw4OFa3krLw8Q+xuEnDo5wdh5Co14AACAiKZkZlFpfXSMGsbNchqXwbBcXGdwslgMwtvuiRY++64cOTd7EFN0gdG59DgDEi+WeYQW7Rm5S7OdmOQgd9yblN9qqBu31vLVY5pDwjU9VIIk5aceeJJlqnV5htw5O1eHjqROTWjW6NMlISsa+OoLeIIe7ywUZCXb4BLeXEfZWJGYlKARlXoXm+noaR5hfDIf1BE7G1JKyzDpr6LSymx4xyvK9SI0AgMpTi76SsOAG4QleevzCj7yvdm0jbyUHxdYznBQbSmpDSSeHo0tCH4PffJFeu5C3Fsuc8oYnmFSLCx814Qb42vXPq5T99GrHZz/xHaCUrEF4KGBWeWJYNtE9utpetGp3npEQABAFIBhjAIhcF1SytnqVzMzrHlumS1kMhqM1yjl6NPjaTb/4Jef0nQA35a1lLwr+yLG677809bL0vbyVWCyW8kFLtUp40XneK+HT78lbi2V++fkn84N/m/6He9S6Uuaii2mi4lpoItOK0SFnIW99M2N36YgpxXzuNwxk+GHDdmLmJMxOEpA5CbcrHiH0WY/MDIhsABCFEIB07fIl14aMlo8xTa1ZrwnM6mfu3ixzwagJiLAa6KS68ae/C1DoSKVCP4ji1mcCMOLFNTO/azBsEpqJsPUMredwP1TXNldvbaTvf2veQixzjvnIu+CeH4QrnzF4vkaRgaCFkeef8kGZpJm3uhlTxBj+EZK6UaP9u7qjIO7fwwzkACII0loDmHhjg9NkRlotB2Tc0NC8+tPhRSSK57EsGmXx9GaphnZvYr1VlxrgAe+WO/PWuBcFbMe38b/hNXTbs4zxjYxQH7HRryncs14Shj8nBWw7pkKhZ3QKQBXUtXd9KzzxufC5v8lbi+UI8O8uudxMNPlOpLRnzCqhh0yKyv1NHd1+mt0pOtAwZ04V5pFONWTkXZft/Rd7Rf92tOdDTkGzc2cvawgCAjKYbOCoAXo2H+vepXT3eDRZh4vQG2WaBFGySgjYJN3qVjc87vH1czeOeD/TYV77qVmDYy63GzmanHGC0HF1WjKK9r0YpQdHyRQBKtGKNx/+8Vtnp+rgFLqXMoHvagOcaF2sp8FisZSCTlxxnv8K+Nzf5S3EcjR43elEk8RQJ6HSTV9UFHhGyrxllYpZ+Buz4JHh4aVD9woAAANASERIDFJeW7kyfWEWi6VsjPIEjkLqtoZ2ZRHOveL3DlHm2BTXIPRufnbyxz++LkzKgS+OmHsQbCjpxByt5dk2lDQj8lAie9SsdChlg2ktMSkIL3x8M/3L/wRgFyFbDoufuw1NpISGaqujl0CElHhMoipioTqM0hOAiETEXBpDcXSS514D27cUiilLmEaAAnBEQhdGhr5+rb8YAHMW8QcodpzbrUaYxQJ2Swj0jgTajgRFBETG3l2QgA0AAgOgyfR33YNoADRwL7NoN9sbAxoGDQ4ZQCM9Rg81R2tXOQqJwTAaRiklK0VEZvzscGUJgSsa/Rk4++sHjjp+ZP8447WCo+ocTuv6ZWHc8cm8fi8cxpCqqBoi8I+9+KV5yxlJcQfK8f0fPPGS/1ZFgSLCMMxbjsViKS5+JJIwBl1fXSZHBi5ElaqmZgI/8TK445l5q7McLdI3PZ39GPQC1C+TI8hpg9atSCh3wXVltJm4uqM1+/5crHke6mGblpePh03nca84xIQXBIBuNlFg6joDB44ZfmUDsL52DYGJiJmNMbYGUl4Ud+Rq6eNoTc+PZk2axXQjSdb9x9x+7c/embeckRT6T7PhYhqlpIU7Hx3nNLB1+SbDfm7zDSGD76OqgupIhS3RapkkWUD3G14Jn/kMwLxn9bAUjZ/+OnA1rLbNp/8hjjxw6uA3Au6YsAlLJyNn0edO1OnkrXJKHLwhvc4V9jdQ6RWQGNyXFZMQu3b2uy5p4ODs1WzLPIeZvxHg2uVLaLRAAgBjDBFtn2WZPbstir1D9WbNvHq0LBnT+vs6oKRbEQ4Z9k59x2tmIXUqFNQgFLc+GwB8rteEMTJZTxfzVlQUbD3DSTlac1VHLZTU0Bp7cUxtSmIPhOMs0PpJ//LDHK8DXMxbneVI8uqnwQMXof0k+PXHep2HK/FKiIFKQTQfAuFHUA280oSMXpfhRlE2ctrn1Fu3HPwoDtxW9+oT8i47cOt3g4NvBLHroiTKbMik2UzjhMAgIgMYBGbewyCxBsNk7D9raPbXzKu/m1rh+yNGWb4X464VHIU0i61OGHDsxenl3//JU9/wozMQOwWKOSCu8/L54KV/Gsebq7KyxIFx56fjtFgsU8dTN6bNJWPchrcYmaYTr9bctPXeV/NXPpC3NMsR5r98J9z3BPGUh3jlmHGrECeyUpXVY9i+BMShKmb/Ow12mXYHqyu4+6iJrr8dJnq9e/WVVcxgICAEraL2hjG6twqUQRvrIZw6I6ozDP+c95oQn3VdwSM20TyvzNpAVeCgS7E4Vg/SO3/uUSrqnEExH9zYfPSPQ9NyKzfXsL2qo8CEtqDndbBJaCbC1jOcD89hmy82FsiF5nq4AZUg1dXmkgG4rNbuy1ua5Wizivovz9ONKtUgHKHiJI6TauCBcHyYq7Xxe9hFUzKZdnX3iDuKXuzw7+109/VCQHnLEzjQRRJsWxfbI/tud4AITIhmc22NjcGem4DZjkIm54AeNusJtEyFaXkCRxFhVBMKw/UveCdcP734vrdM7dJTpZhNmQHYrIIHq/cZUdMmqNNG3pIsRwu75rBcUOA1N9Y8r+r79XY7hEDW1N/BTQBunLc0iwWi192R5br0HK5h2BKLELaB07x1TZnptJCTBo7uyyLt/ts35YfdO3YXFm4f072jAUAQWV1DYlhfXcO+KsGZn7AsIXBFYyxPYMaOeczukpkZewIn0GmB8oSGzppFaHagqlzvMdFDnbRz28t+J29FwymkQXjTMwAgYT8+fnsnQlGBVjq3HhuLxXJwZAS+G4Tg6WYSuDVXR623/nu58ASwq48txUC/4YmSWJgEiSFR4HmRnMOnc4hVNoGVuH3K7iHKdELy+jyB3Tv2Rqk7r49ZRpnseDaq00JkZjbGdF/NKlhYZk+/hWezJxSfWXveyoKToGI3RmR1yvGO+bff88S3fSVvUUMopEF487Ph+/4rqZSSdiCNjDcN+iNngIaHj85BENyUsKGkE3K01gaUPZQ0EpyIJrP2UEj0ktiVj/s/1ac+Dw/krcxi6RG//skCdcpeNb0CDGCQuCI5JdRsXNcodgxTUkDPw3Xn9bujZamJpwAAIABJREFU8+3uuJtOJivuZwCzEoLDT2MEQkAYiP/sJvzkQXvSQLcKYLdrQ+qlisk23Pb4ZVXrGBkoqzpoAAz07oCGuhfk7L4asmOQs3qFvSQ3BruqBJBj3AC0CddXgQ2DlOAZpTVZg/A6ZH+dfvYOudxPfzQLA8PWD5wueSVBHBnhZXj4NmMiN5CwUWWjpVZmgxFgeHnWnCniABdveQ5KCUQGQQMjIop96BwIDyji+7JYLDPC1eTrpRgjVYk7+kr8ey9SX/zZvEVZLDvZfMMzhI5TtxbUaoCI0EyBNVPgYxyxk6RAC1X085Y5hMMImL/+Lfbds++81PZ03vYb6Z9E7vuduyZl9zDTdxYzA2IURV0LmdmuI9gPODj+tavvLDOloKGq3UaGACh3LUMpouGEQgghiIgZjQEDzHtlAxsMFh+Ve8YmoRnErpGbDPu5FRMflxOzLpRBlloscIJA3563KItlCO03P0NU6qqz4XYeVE4dnMB3EhO1YOFE6iz76Waokrw1HpgZNon778R3a6Ah+7DnyaQhLflAgrGu01K2m5uIyKCzIaZt/6/LDofb5GvwZp411DIJBTXACgMzM2eB5pjNI1kP4X5BJEbK4jYYwGTTciMNvL62wNp7+8bWM5wUG0paxFBSBW2lG1VPe/Gil4b4hFeD+c95i7JYhhP+Xzdi57K68KBcv7CgkyipJCBF6yHQceR6nlc4g3CHzbMvE+g6dQX3ydDWdVKbEBF6Bt52otGhDsMe3D1EdINagYCo3W7L7WPnuf2fNbZ+oGUm5BQaOhrq+wkAexdLyY0iNmTct2KhF6eBBmHoZrFYLCnEbnW1BbKtV+P3vJg//9q8FVkse5H8wtfDA59S7/jOjcgAA0sJ1QUfIwhboZmjJGoT2YS7DM59D1SYBjKIQlaPfsA07ZqC/cUntkzCzLrbMhS5m33U9GRlMaJxHEPP28jMxnpCerDBodvYF7JZQy3zCQFkzVQRH7YiGoRbZLVfrzcZ2fcW9tNe2FDSvbFJaCbC1jPM13OI4FTiM6ly5aIPsY0XtZQA8/d/AM/8LrzwOYkxGKUT46AE56RURzJJSa+j7ysR0dfvjNdH730wDf6+M6fortMJABgIEQEJEcEoYwyiXUC4k6LFz1hP4HQpWmhoebKYmt7PAsZXbVNEQwizhVq9DoCY9nrgdlh0oyaWbKy5JQ/smsPDwRilYM2hutcG9+5ftvGiljJwAf72zeKmJxki6YKAVpsWobUhZN66psu0mrtZ2YQAKLIFhLhVfKJvLm/bowgEWVJTZq3TbFjCzIhFHEcVk0OeQLSewPmmaAbqnvQ972h2pd0tBIVsyLC39JuZjdnvX9eWnbBYjioonQiry9Gl9d96Pl/r5C3HYtkv6o1PIQdRx54vTdJxF2Rchgmj8Wa18nhHgwoHBHC2GhCozzTY11gIsxoEiEZpNt1hhl26sk9sFUHLUcUADMQwFvPhL6RBCFlmUeguIqS9AjMGlhQC9bbRU6y2nuFk2FDSCSlaEM1sySuUVLMSrDcdD1I/feADs7+hxTI11GvucASrNeV/5R8S0KBqngkZYkE+KYMYo0g8lTAVy3W4u1/ujvK3+gXmvtKChEzdXmN3v5GdiZSduz0LvLWcD2FoFlDesX/rjmgGL7KzniFmsWVM/b0YZ+n/kHsDuK1XtqodZvnuKE1TEsKABkLSRZzsnw6IQ7dR9fpGtf+jqgjaSK5iUjTP27aAoiSJGQ9GIgZkQgAG0FhI/+AcD0wnx9YztFjKhkDQSCk4AAD83rzlWCzj0XnN0+nilWTjPPzMDQEmkTwpZUOpdagEDrqcLkXVU47ZzFtmfkzZx7gjZHT0qztn8gUAQEFj0mZAZmDv3iwWywEopoewWDOOU2TUFNNIC2/HpFT/okTLaEY5b4saxl0U7Oc2XdxkPcVK9Gv/I555Gl/8WN5yLJaxif7gWwDW5b2t+EHCMw+QbEhnUUFHt12odCCNkCvFTJhQIBD3ba4QgAYAYAI0wMxIwJq75iEB6K2rMfYO61YmVFm4aS9JKRd0fHdgRuVfGfspnPE4alQi0/n8q0yPco03bOM3a+bYAzYiVM/WM5wqtp7hpNhQ0mmGkmKwHPnHAY7zxS9M76oWyyGzqD70GD5zUcgFdpZV2vGa8cJSB9ghilDb2cl9MLT+IW7nee9L6zWsTv32KQKgLx6VEICA0CD0V7aY70Fq0UIHR3G0etOjR1Fzh84bR+4rY+sZWizzR9RquqaJd38rQCVvLRbLgeC3fB06S8qk4CwZX5uOBEwwXYidNG9p+2Z36YiJYz4HT9xvMpvhhw3b2fX+ZScJgG7ygu0DuGcTIgAQgoC+glgFtI6mypim1qzXBNqyYXNNWSYg5hX7RdpiRD3DUQ2QbZj2xiahmQhbz3Ayz6Gsn0x++Rtx9YsAV6ev0mI5XNLXnWfykOMUb9lEJbGidQiibJMdRUuXigh9JSIGbMvMuhu2mHBgJzMQoiAUhIjZUHUOygiNW68vr+Rhw4tIWIPhepTF0Np/XUEbiTYLrAHTY1Q9Q4ulANh6hnvDSRsAzFc/mLcQi2VKvO4GhgaYNTAeiHUnCDAsj4ewAIxsHocOJHtd/8Ds23by0l6yUwZEFMIhmquxk63XZzlMDmig2gdzRhSxUUPOtduzZScslrIhbG1oy/zx+pNglCtUJZFpFFe9o90fjT//df0ps8z8Gx5eOurcbFmh2Lq4nZizWCxjQazyljCEIo6iGFzBTZcbQnmp1izAw5l/diPrGY6Kibf1DCfCJqGZlKO1bH5USJJUOnJuJFQREhtk8tmkrjGtd71Y3vycvFVbLNPmTU/0GUMGpKjFHhhmN+EkFkp6bo3DqgcVFht5qRsdsDCYxQ0AAJi6ZQoBBeCIhC6MDLuWGGRXZs4iGQHFjnO71Qj7Yxy5G/a4u51k7N6FM5cfZD9M7y1slZDWAGY7RQ0jMINR7CB7niMlGmPQpKBK1L2zwa2tv37gqONHhobOeK3gqDqH07p+WRg3NHf+QkP3Pr1EMHqaEw2She+ZljBFXAdUyAGlpATPJ/oh9DuBK9EE7fRY3prGx9YztFimjUdRLbyEKvLMel1HTrTuVp0m+843vUHdb+vRW+aQ5hufrFAzEKg2y8W6OgYLFeWoqLUS1FqRu4Z0Nm+NwxjqN5tSahngYdNhw9bw79d9t2W14tZ/d43YGFEIw8bx3K1hdkndg3ZEUgqO1jTw/FKJOfJICkpEKtMO6ZOqkDX/ivhoUeqJWptwyRgXTchwxfi5JYoYe/H0jqkym2xmELsWznIQ2uCnohOTH7hLq96x2D/WbgnfTXQU5y3NYpkV/Ma7wCgEzwkvx+3L0ErB7biNahgJwS53ilqwfuYN+zgd67BspTwk1LzfdUn9BwMiCgkagiAwPYuwXJ3XbosiX09LWTxalsmwf9+MSIIba4lQZZaCrzokCpmgpIiGirx/qfoIGlcZY5LUGOUJXspPjq1neCjYrKQTcdSykkb+csUIlt66Un5KItxYqIfRL30fbTyStzSLZZa86WlSRZK4UiUActs1nSA4ijroisW8xY1kuL205Vwby5oafjANHjJ+l4GDvsGd1yQAML0a9MwMzJVKBQCZOZvNLOAAd/9ZQ7N3nVfW0HGzm1oyymJoHTA0dG5IBKAyrA0paCfmHD60/qn35S1qCEW0WPgf/0r94XNjrYSuoqyTI520cDOgtp6hxZID0XoiI9ekHrgRReh5a5cj+ZzvVPf9Vt7KLJbZkr7lbs/DyIhAxomDmpM6LaVOmkA7b2n7ZpfBNrZNOAuPXDbzuI8JXDYGhPC9IJNdWINwrKyhe63hn3VdQRsUaTkC1BUlgTTAoScpOPZ3L38hXPpC3qKGUMQvnn54pZMiQIDiClJC6JNy8xa1f2w9w2lik9BMxrx6DqsuuxFFIGITHuNECnRPVNUH3gHQyVuaxTJz1l93N6LRwg0qDGmyieugK0HQzFvXXuxh8k0Yb7nzrJFOwn6zbeCInRUIB52EuCM4pa8aIYPwPOE6RLTlk8nRo3VAD5v1BFqmg+HhmwUAABJiMmyMQQWd1Jx9+bsf/bP35C1qCEU0PFLz7+lb30LSYUMQB5D6qSzPg2XrGU4Vu+bQ0k8n8TakL6RbdzDmtth8OPmP/ws97vl567JYDonw9U8TnkiursJDjwD4y2zCTi1vUddh9i324GK/SS6AgDgwFYtdyxO3LEYEQKxUKkIIpq5jMAscPZD2AzBB/cAdEaHdCdYZewJtncPJKEtoqGVvQglOrCVCndklBhMCXMlb1BCKaBACACJLFkYYBwxAJ/Wv5a1ofGzZCYtl2kjCho7ARJtp0nRv3Fy8zf0nrzIPfzpvXRbL4RG++gn64gqsfw28/vwma/B03oquzxCr6UB21LBkMFMZz3R9g1tTulsrngiAQJDjulvrCUuXV6Z/IGJjbYpPWdbgWcN1b4KEIw8cgbFQlLYvvPM78lY0nIIahPqPfpRNU/ghaYocroelKTsxfj1DNXxCztYz3BMbSjoZZQ8lTVFuOsJQ1QfHNU0naetoEzq5ZSG2WPLh978N/uI2euY19bkHQQcIiqVwEAQb9n2QbhDHTDPvL6477Os2y9vdWTedDCACowHMSggOP40RCAEBgAcKD3KviOA2BsAwGgPMfQdn4jgL+MQtE5QNMiNn+WK6W/YmENEQAABrQARgJAY0wBqQERi0Xjp+DAUprUkIbQwRGTP7zxlgx6e8d8jlfpLEzMLAsPUDp0vhxjkjQkNtJNd1YAXUiEIjQbiuPP6iV+YtaDgFNQjx7F3pL36XCV1VJ9AUU26Fd2fP9f4Etp6hxdLDl806G+6kwCg5jt71TXjtq3mLsljywLjmw2e49dfw+meQaldiN9GBELHbCjmS4tiJhSQ5BBWHMey7/i36Qz33PHjI+sNd4aZMW4exQexlsmEEEQREA8cfjhsks2e3RVvXi8VSImRkVOQ1nMg4n335Tcnlh/MWNJyCGhh84fMAG0mlQeuRYEh8J29FB2VfaZ15MCGNrWc4GjsjdTTRemkjWWu4a5F/MpRV8ZxXqo//dt6iLJb8+OCv4mOfrt58bwxpAJExLjgI6ebmRrjhH89b3C5m2ETv2yaE3a/S7n1dOzCz9wiBGRAbjYaUknur3/Cw1hDucLhNvgZv5llDLZNgQy7nm4jO1UTETd3RBHCq+Yki1pwAgMKGimm4+7tF9TavihGp5fhYgmUvPI1DN+T+//Yfrrf3DBiKto3Yk6wX373Zj21PEGnotitSKWdS06l5x1LvuNP6KkOg/+hleSuyWPIlhGtfwa99GaJJls4YwVphPQAtFFMFzWz7zR220CjTqC/vJ+8qHcFbP/Y8c/cLuOu07T24sz8deWSmG5Bw4FyDiMgAzIiECGAMCDpx+pRfCbIQSKJuBCzuXblhGuCIG5heNOmObY8LTUUP8fABzR5/MEuJwJF/X8skBPFax5wOqroRrcfI4Vf+AQpZK6i4Hie8cr/+jW8NubHIi6swt2uEbD1Di2X/VIjamKYbK8I/p371BXjzc/NWZLHkD3/4HfqmpwEisI8etY0jk1SaIiay6zKRV22XwbnvAQzTzulvJIAB05Sx6xXMJmn7XX9sEAy6nlepVbdCRqF3wBT7azY4dBv7QjZrqOUAWI/ldKHGoiceCDvmvlfd4XEb4HLeioZT9C+w89L3o0kTUo4ufdToWNCOeNKJg0VtNAgAjF7pYR2uk8GcV2JDmaapUzVJa9O59OX0fT+VkwyLpXj8uy8CKUAtI1RR3VnaUMlhBwENbWmzZpaZBxOnZUcaABhZsqx3JvScft3rb/3kHX2c2XnHQXEDCzWyjDN9xyAb5myPBsOCUCtFRIYZgJdPnTz1mNNZJXpmzkoRAsAUa9OPm39lZO8+pX5/1GJFa/tNRtFsqlHjn6LpLDubiak5VcD42hc+fvUXvy1vOSMprocQAPDe70hPfUlIbBTRuTotaHi+bFvPcKrYNYfzAQrFvudHFETKtAvsALFYDp/XPQ5Qiy9/2jWMDZPGlbwF7cm0mt/Rs6XDWvi9xzzb1Sa6/+2ZfNJ1FxcXobdoMDMCD78H2SsHwQywnsD5xnoCD4fzFQdV5x875+L2et5a9qLQBiG7IfzkD6aJjqv1vLXkhy07YbH0cNIUtMNOGv7e98KDf5e3HIulYLz2yfTAZzr/4Rvdzv1ArcO//3g20iGkY9l1i8E9A68yQjY/i9txoZSdIlynWq8ZZtMbLh/+uNlWEbRYyshKEhrP5X/rbF64P28te1HYpDIAAPDAP+Jd32uOfa2kEBOVVGsGrwTKTWUURNWwDqjnoEkcvg58oOzMdrkgQjQjipVqwL7SQtv9XN+S4O34AFP8aOHDoZsTYNdmP529mXUSmkR6nulEWHFNWCXd4jpJgWzcWIOnO6kHn3gPNy9M5V4WyzxhHnmQbn+S+pOfhHteDk5C2kckhhgcH1whWigIzSxj5YfVoN8qA9gX8Nk9DJERaJRxuN0iY78Nlh2c/SREoG6pQYRuwpgdzfj2iWa7icr0DCS5yUI2GVLteoHqtEFKEmR0fOOtN5Mj+uNK9mX6jkhyhgaRh2yjLmOG5c/B7O3MsnL5HpIse1A0J9uWHtxv9iHLJFT1+oZzQ0XGaUtVacPR9TW34tJV11S444Hg8M/fmLfGvSi0hxAA2Aj49XuR6lT3GteuSritQydJx8Yx9TjxUvtEb2HrGVrmBx+UMQZQgPBilkTa1R2ThHFdxATwH18INz8nb40WSzF5xHzpv8NjXwA//6SqFthZNTIKcJHgEjQ7skapp/JWOD2m7GPs+gMBUSmFvgcAmk1tedn3/UkCRLMVibs3i8Uyd1zz61XdjDvhwqnKinOy4zm36EsmPK2g/sV/ewZ00adXiu0hBIDLn6Cnf3d6wxkR+dppV+JO5GrH8TByUy81nALKvCUeKtxdCL9zGwx82VHPsG/KkGmXt/BIM3Jtof14JmQ6H5xgbRjR8ZExSlIXdUAp+LUQSIYxE8EX/mQqN7JY5pNrX3Hu/aGUtH7cY4KwFqaJF7nCuzGGNUhjxLyStA0We8j+hX1k99ozamOgrEXfXfr24+ABw/Rs34fBGEYENiQEp8n5W28WUgKNPZ6bVnkGnrEnkA0ORiV1t6IPYPOmaJ7AvbGDvlnjOk5LmyUhNsK2cUUabrTN2ZrTpPgyk3f1z38hb4HXoQSeIoMxvOPbY6b02ONiRwsdkg463qrUJpGNvNUdPjR8YxpRvL4/qVoJ/txFgXD4ZtkTRDF0G/c6DKiYIA2BteP6jsTNJG3HxklR/do/g9UHZyHeYpkn0g/9kr7zaaLjhZSQoyOvEtNDQMKnhVnfuoj5unbWP+zu7Rlo/S8RCAHGAIAxprK06AU+Exoz9hr+cZN2mBHbrBkxqrDMCVOdPbCMZDOEpTgUQiipG3HtRG0hkRvtCn7m39w965KwU6HwHkIAePTzeNdLvNNfr9Iv+0rGtUXsVGrG12ZddOtnWobO7gEj4MBywb7PyjYPk2E/tgkZ74MzKKTjOqBYKyIwBpSsBZUKrdfUZ98F6w/PSKXFMlf8+a/ws18KrVW+9AXneN2wEhxw6jEls77z8DTO230Rbh/HE3kI+y6OWyboKA9h/6HD6mLs+E1KYdKUPIeBb77tFgAWjpzAHYRbITn7K/E9a08gjNBjR1HzwcjyWoes46hSJbdNqasFEGowmLZ8uVBLPqFEZeV9v5q3uutTjjkgAjd+9xMlHq/JxaX1L6ey3cQV1z/jsc26eV0Gw0e3YBpvswDAaMPbsjfjeg5TBkQWCMYYoZPUEDpecPXT4e/cI274J4ep3GIpNz/zJLh6v7x6B7327kD5Wq/QIZYvGu4qLKIBMmC+aq1BCKP18vHjnuehFGmaCjGyvSIevo0iL0/g8CISpYp7tOzB8ISDw/68dtwyC0IRVrDeTOK2X6mYdULDOrnvld8idSdvafuiNE8E3vo8/sr76z/wp5vLgdxsVfzTafhQKI87euYznSVhy2Yb6Fa2+6Qdg4BxbTxbAnFvRhVWtuzJqAL3LImjkEgk4C07uoVB0mnDH7zCPXkuuf+DhyzSYik7HjDee9ncuEo3NpX0tD68NYSDXguzO6UKGuasf8kKzQ8FGXloofnsxd6Nuv3U6PL0aAauM1CVHhi66VfZKCD0fPfmm282aPzADcPQdd1RUaNFKyg/+vKlGfIViqKtFRzpCdyfzC1T0AaKTZeIxBLHHaxhsn4tqB0Pky/86DMbT3lu85PvzVvaviiN54e/8n5x9/ds1hvYIc/Uks0NqRig2IV3C4WtZ2gpD4I1gpF+FUQQRpFK9aKP8vHPS1YezVuaxVI+YsDoQ6fpxqbCQOlDres78/WE418f+wJWhx4gpAStT548KVzHcZw0TT3P03r47JXFYrEAgFSJSCEyWoI4wVzTdP5/fl3zk3+Tt679UhqDEAC0lPALzxZCKEi1jxzUFpQRQkDSRtbGqYBwPFQEJqUjaCgOjzox2LcB9TYJaK6zDTAqfNQall1sKOlkjAoljWQ99RoctV1Y00JgYNZ/+Z9KjqBd6LquFkuRid74TAVVYMXsMilAWTUJioQZnOA4q0MoZD+YBQ0AAJhwez8S0LDFh4wMu5J7ZYcxdxvb7aRfvStnC+n7r8bdcM7sdkSYJY8BFGwYDCAJRtBpeOrGM9VGVZuYQSNCmiZEzAa3NuzbRr3bkaGh++p2JwcH5V1X57wybmjuuEmA8mL/oaF7n26ZEG6gAJlEqEXH8YE4YB2iAccPwVly2FCUqsbVBz928slfD3A1b7n7pUwGIfztu/G256m3Pdtzk9ScTEPTFI9G4DuNE64UTtJE1VEGJGEA5QjYLTQDnZMZsb9Uz4+lPATrFz3QwltMYuGLs/rt3463PT/62G/nrctiKTlvuA2AgFJCh1m3wWEF4ARJ8wLUzxyGgP2tKtyvX3HkYdfpm7LrG2PIcYAZdIqOEFIao4C5urxYqVSIBi7CfTN8tucrBTZ7qmUWoGx2VCyqFVeaIG1hnBrteGLRNS0D4YO6Ls3xL71iaeMr9330VbfkLXYMypBltJ/VB8S93xfdeZcfxwGfiHwXOptElKRKCHJdzzCz0cSKSQ6vL2cBgH3WM+xOImXZ22w9w72w9Qyni1+RssObuOEFZ0P/fmfhdv3RPwQoQeJmi6XofOjt9HUv7a6GQ5fcwFMbyqlC2EI6lNHyVsO4u/tAhD1CK7ZeGNmu8u7fh16tu1NrFIKNAQDpOFqloLVfDU6ePhZUfCI0xhBRVkwekYhxR5LQbqLzEYpHypxSvzk6q6Qd6swDNmtoMZFx5LkeMoadjlMJ0HGVUWHacRxtGjfX9WUQX/RPPfnyf/7pvJWOR/nmSrTrwk9+ZyOOm+klodWypwLukHAirLa0BAAgTMQRDBkdl33PnXVDWWw9w0mwoaST0YzMRsVHt2b0JZE21OO/BqCZtyiLZU4wP/tEYAAU4LCJdWw8h8KKOLyGaZrZR/fhJBw5F4xojAFEEEKpFJRyAu/48eWqH0gk0Ia4G35JTGLYBHrWmOdWP3DM7KaWjCMSGmqZEUbWBFMSxVxZ7GCtFcWuTE9U0Ri3efHRWqqITzTuvjNvmWNTwpH9+//Au+WulV9+Yc11G0m6Co0oSWtSAWhOtBBCIKnRns+RnhwLAOTXsc0r9nmbjJoMCAWqmr7wRdQp/8K/zFuRxTJfvOGJIBFjJdOmkE6qRYxu3pomZXjRebhuhCAKkfn+AAC0zqzBxaUGABhjMgthy1TgEWvw9prgm/FaQRsUabEcPi1PRpyC77AXcNhe4lQoWNuQrq6c8Z12Kn0dfO6lL8xb5tiUdWAqb/k69dW/Fi//gHZPYfOBBWqxrITgIAPqxAACybEuWMDJocJgYHcPM7GT0JavAIADp42eexQ6TrQR/fq34dO+nz/2a3nLsVjmE/m/32eENCaFyhIkiBTO4i67m7tudQfQ/Qf1fjMEONxjs9U+jirzYwzwzl4GGbJebOuCiNi7ncniRcFocsXJY8vLxxaJICsvgYgAtK2ECQe9b9fvzKbU341y+rGNNpmIwo33bNmqUmFAe4zsOZthssRpxRcXEpFWzqfqkaWUqpo//qM35a1xEkrcmuBtz+Mvv3/xe38bl85uRtqHSCBsKHLcwOcoZmsQTsbwJKK2nuEhYTsGAABQvsuf+CNqXlaf+r28tVgsc82PfhSECyr1Axmb8frNfTLKIAQ0Q0oCIhPDgQxCGOhokAFxICZwyyBko7JbC0cuLS8cX1qUDiiliCT0JZ7JfmFmxJ0dWGaR4YzDaI5ggtCpUJpxne33S0XAWiupHTBqs+5WLqcsfFroXLv40P3mcfes/MjNeQuckBKHFvCX3++cf+76r78SNi4o/2wLqsiaUKLfaKd5iysvA0vchgWf2LITltmj3/Z8TjasNWixzJyffzqoVEiI0+Twb75HScADhdbvc6YSEYmAqFarHT9+3PMdpRQR4pYFydw7imCww7OrwYtPWdbglWVNoyVjw6UNclMppCM2daUtzxxPm5/4sXvgC39RXmsQSu0hBACAE85NT0kf+CS8/HcaUSfyTzsJpLyJEkClsTxd5Y1UpkkkPc/1VUfhZgrj1eS138m9oevahAMdM42oYGFGz02Mun6J5zL2YF5DScmpRcnakpahwJDcqtGR2NDyWC3cJKLIIy+RbDaUOEtyI/nMn3P7iv7Ye/JWbbEcFfBVf89SgmO85KQ0F9q8tAS1NUxd5ESsknGYmYh0qmVQMcaYNJEIGsdrh3e2b9uOkd01383gATvkMvRSf26n8mTuntUXfZr9Iwi0UgCAKJkZALvLDtNIus7iUuP4csPzHKWU1toRbspjznVOKfLFegKnS+HGb9YTWCoqam3DPcWInCrXAzRuy0BgWh4+AAAUqUlEQVTDhKkLQjkKQgC/SmnbLIRfej986S8e/bNfzlvygSj7qPpK+sAn4banwNu/ngOkzqW2uOI64EK6jKGjLrYdvZDoim+MMZGj2nQub8FHj4PWM7SL5ueBMLm2TLrlhNpd8LV2vaSil0VnUzhu0z2VxOima8o7ppONzju/G8NNaw1aLIcJv+kecAx9/lT8C2fbnIDbbIlVcFYSGXumatBhp6E1geurKIS4BY6nxEGT0Bw0vdbo3KG937o9hY5Sx/Gl9FipbsUlw2DY9b1jx5eWlxeFEHGcas1E0vr9LBYLAFyt3IgmFWyOC5WurYNRp+WmMM3KWqTMmuMe00nH63QC0wxuf17ZrUEov4ewi7ztXvXlD5172R+u0rmQCfUmpo4JgJJkiTaisKr9jjE+ywDN7pnISSjczFNuDJ8ZHWKxZa7CUUsQ7drCvSn5zCJLcJOO8KsbiUtG1dSaYND1s2HUYk6Vf1Ymj7JzQv/fz8Kbns8PfBJgNW/JFsvRw1dwz8NQ+zg+9Ul+qsNK4sU6jheWnCtrXHNApU4ddBqYdugsQtRGOV4p4x39JnJvDxrY2aXuw0PYvej21bf6Ixy4l3GEm3Y6QECOY7RGIiml0smZ0ydqtYrrukolYIwQAhGVUjCqHuOM+ynrIZyM0ozHSt6PHzU8I5SIsaPoOJs1EQcawyoEXk2IlVS4onMDr20mJBX//avuyFvsFJif1ie47Vnhlz8C3//RJfdyG6QvtIagjRVQLbdWgWZc8c1GmjjoTOV2pWmAcmJ0KGlfdGh/NKk1CPek7KGkmGo/OLGu2zLuLFfMNQ0IC5isoNMQUjfSKKx4zbd+I976fP7KX+Yt1mI52jz3ZfA374Cf+HQjFM3FENIAsAYxu7KZJIyu50MYUt01UTpm+7OXQdg7ovfiZAZh91zccS9thJRaa2CNAlgpv1o5d+6c76FSyhgjhBBCAIDWrLUWo0oy2qyhhaRo47FR/XLRdFr2JlFR1V+KVQdDx2+Y1XS57qyoKEwdWkphBf26MCcp/OuXPjlvpdNhvOm9IqNWH4Gn/Gu58pHOf/s33rNeGhuIdGNRPZT6S368EeLxSFODNhRMp9SSrS+3N9yNy9m5YfajS9/HVRbLJidGPm9l+dgoUKqDzA03vqp9pnpNXwlrt0jTjjqt9ru/j0wqbrhDfeaP8xZqsRx5Hvx7+JoXwB/9H/HXf78X1jxVTfWqdKGKsSLPuIHSDGniczs9WOlC3Ioa3Wr/t/tQ3vox/Mz+/+3seRGB+3cKIbRSJBCI2eilpeVz5057nguotDaImFmDaaoBwHVdBjXbbCSM2bvftVnmAmv4zQXHOLmqF1ueU5Nq1cSndXPFOdPQAI732ZffVjt1S3rqaz7zisfnLXNqzGEDJG57vv7yX579of+nKYVWhKzcWGx45FWOVza+2vKWZnp3OwM0monqGVrP4Z6UxnOIwnjh8Za+aAwunHOvbmI99NrG+Mnmu74Dzj8HHvwkwGbeKi0WS4/n/mtafqx47IsNJ1rr/7+9e4uxJSsLOP59a6267Np7d/e5zOUMGc4MlxCQZAhMIvAgYtBElMTEB6Mg4CWYkOgMGjVGQ3jwxQR98DaGGCUGMfBkoiMjEDL4IDEMM3IxA6MCI2fg3E9f9q2q1sWH3d2nT5+uw/TQM92z+//Lycnu6t3Vq6pr11pfrcvX7+XjtZGtqmBKEXXGm+hb+YHSO21mI0zphvv8VoZAkVv2EG69U0Wv73k7scSObIQpJUlBRVNoiqp315k7+v1e27YpBTVJxW6tKaopBWOMMSYmv6/j6kJP4ME6au0regIXm/Wjpr+STQrnrg7C0qXZOZudHvRmj73/h4av/6mNxx8+7AIesMXpIdyWrn5reP/P17P1dOplk/6Sm6bxym3D2DSTc/Xw5Rpmh13AY8LseOq5mRlKRHX7yej8Vnr9yWvXEB1urLfyYuk5dHbS+kFrplrceXJ6vtHa9u/Z+MhbNaq96zXh658SOYQl7wF0evrx9PXP6Jt/Nal15aBt6nTyHpfq3I+82kxjY09reo716bz77vpNf+d9frNn79n2EOpedcdmdkBNW78rOKcnT5+6447b8szGGK2mGIKxRtWklGIUVbWZVZN8aM1BDfahJ3CxEfgttLE7fXp0bkP8enm3pGspP/2NB8+GYJZfdf+Vf/v4YZfu4C30jem3/93NZsk0EoqsHkmxPAvjXA5mDmEXngxtSlZkVzgXZdcT051pJ9I+EyLTc3hrR2zyei12KGlqXH+2vlacKc2V2UNvt6/88fDfnznsogG4lewPngpfeyT+4wez33y41b4rC5/cSnt+NbtTY72vXW2n9Zu/3q4f0s1pJ1IQ+cF6COV6NdGrzKkTJweDQUw+hWitWtWUQhSzlfDNqKakovMHlAdUvbBIzME6cu2rI1bP4mBFY01bZ06naWk5XLjyza9s/M8TVz71x4ddrufLgt+t7AOPSLSubYrZeH340iysa1Yur19c7d3l08zpujNnmuZqWeisHQxk1NaTODwdkrh6ZIt85LW0mWnHwZZZanyUlPfUz1px2T7zFB25G9kRo9I1ROfGJBPXVyXt6lDabz7D40U7rsO247RZl8tkbEzeukKlzbWpY+ZlWZKt3BUzbSWPM6nUnJBwsRSdGiltMW2jmJBp9K3zpnenPT+Kw5H3rtBhM7z21z9i7n+PEe8f+/vn8VABHJgV86ZfSKdepq9+W9JMikGarklW9IKbmlHP9KZ2Kv5EFabqNsZtL9PQ9pZkUg9kNrEphqqf9aftpWiHEp8pbVHrUpJagteg2otxVlzvbJn3zqUkKRkbNgO2KCJi5jnjVb1vduecUFXVFI3E+QDUJKEVTUvD/tLS0mDQVS8823p5O4jd3rLz4eaNcZ9ufzfFvR9A6zEb+eI7jtd1VMupI5BOz/cqrx3b/Y2Xz/bRmKMWEHbMwVHTzj9HO5e6SCmJWcwQwJmsaRpjREK01qaUxBW1D84tZe2qxLaxpTq1zVrQ5IuVYeOjsdey9tRGVffNhl99hXHPtCHXYprrba3/jwdefvd7/+z2+97ypQ8syPoxe1rMq2GXpfd+ss6XkzWSZ81kVK2cCpfXzUk3G5dZnPZMteayPI4apxJj2daxlcaVeZb30mytnmQn74xXz0U3LIsqjq6k4tSS1mtdAd4B3bCOWwC5n/pxfsu7xSqmt/ip4047KrB5xXbzqkjTpl5Ztj7KaGYzV1V+FJuJVNUorVutrLgoRmzw3qdQacxyl9qw6pzLYuHCdDxYSc1EG/XOn/Tm6t/8ZPaGX7TJzR7/2+f9UAEcNP2d/xKbp+hFpJJx7fKoJ1J9vjCmLlQmVnLJrcQ6T24ajGRxYH2cZWNxUk4rLyk4TTMnIbhB8CmTqVrXhHkP4eaKo3r9dazFGDFGVU2SGGOKUWKULJfNWiOmeD1lhRpNbSvRm16+1B9UVVn1yjzPY5ju6zB3z3XcbkPfuALO9fdr1N1tcWOSJGn33P9x6zjMOw64K1Dsav8c1nlzfnd55gXxL5Jmxfzi3O6fn0+ala3refGE2azsD2JSEUnRi8RZ0xa9YWxHyZUppTJFEQnZoKl9Jt6n3NvLy6G/UfWyda/FdCOYYTbUds2oXf/yv8TvPvXMI3962If1vFvQy2Ev+QOP+ic/Gz/9h/LuL9nlSVE3zta1zEq9YyOcz4qltjHGGKONapab5bae+XhtuTwR6lEwphX1rgjWunZd2qlkwwMp1XEL/Dp1Pdna3XNobnqxS1dP4z6HpC6orust79gedMWnqya20QyDtkM/UtX1cukOn13daMqTPrSZn8ycnfYHt0/8pbzVkTuVTS9LWWbJT1Kp1jXRyEfe4l7/zizJ9Al6BYEXud99MpMmqg+6IXK7hiLldeFX6/xe086ysFan5MT43EjSXPPGBWlHLrqsiZI30/ykhMKEddVesH1Nl8TvdWtKSa3djAC3Y0VjVFNqRUySJPMYQVWsqDGmTdMyy6t+r9/vV2VhnYYQQmj3uwD4ze/f2UN4y8eX5oaew7T3SJakC7h8wy240FG/dFTjKe2dLzo+zw92uwKkbCsg3PWnD+5oNaG7zpvVfOfnazsgXFQDnW60JuaDGKONdW5iUuPFmDSL+UrTeNeOJGnMh5JMHiZJJeYxC0VoLhTVmWkYzvJnnn7fa17ySw8t3fe2Jx985WEf0AvkaF3NL4T73qenz5reUvjnX68e+FSanW7s1b6UdjqeuqCZK5Jr2jSxUUyqVCSZyXgip+7JZ9fcbFXKYUx2lt2e+/N77r5rKEjXx69zlchjlsHCdC03qh0BXtecQ+YWisj+Vx9tdwTSOxs0IWuqaa65Ua3DKE2rk2XPnbj8vQulcW6ljk0KWpW2bTYk9URiFdeb6t56dE17mdW6+cu3m5/+E5mtx2vfli999AAPEMAh+71HRfp2nHr/d2l0tieDl1TTps1jq4WNxmZ1TN7PcrGZZI0kb1IR06rYMzLd6KfVuqq8j9J4cUM1Yc+AcHMm4XZtmJJsTtYwoknifPnQ6Iy1Tq2a5ZP9sszLstQkIbZpM/mRqO4vkPi+9XXX8qG7b7AdeY/1mAWEoWNorukIFLvq8XRII326rgdzxJrQe8zFFRERjZvbd418XtR25kVZPp172ThfVdWqN9EWNs56UsdYicQsy0Ly1qgPs+jbLHdRMqtLazpdafx/PviKuz/wyWbjyuzC19b+6S8O+1BeUIt5NTwb2Q+/M8XMf/GjMhz2fu7j0/J0kZyRug3XyjyfTbS/NFyfXuhJL2aVa9an0VVlLtPVkC3bMPVadOyYIaPPzUEFcswhvJWuOYRhqwLeldA5ysAZ0ek0zzSVadLUPhZihyKzQRH9xqyosknr25D3KtUmTkJPsiQPvVVEzP3vUk3hi3QJAgtr8DMPN8su9vraW87qk+2JRsKkNb3eeCJxmpZ66jM/s0VlUr0xzion45iZKLmMWmPzfFjOxmubAcDNQ0Ylymb22vl3dL4ltrVaza3Li6xX5GVRFEVWuCxoa4yJMXrvU0q5tcYYEfGdaST2F2DcHAd2NaHm7/Q3jXHcGrZ3zALCjtPUPQfvcKZ+dE2p6Cq/PXLNtI7zpkFuDP92Lu+0eAqbTSYT55xa471PKv1+fzIalzbfaNU5Y9s1zfLUP3V1NKmcDMLsKw++6uxvfKIdXYrffer8MRgduqfFvBr2Ic/t2TfLK37M3POWdOEp/y8fXH73R9ayu04Uk/XL54rleydtkna2VJlZM41GY/Q2c1Zi8AeT4L7L8QsIv+9Qz113uq4Ko2to6MHklVpUTtRs5wTbcV9IKTVFa5pgtF/HVIR4oiivWKmmOqq/N1y5e3WyNugvnZpdevpj77dvfFd49MPyhvfI6rflfz9/aAcD4AVXvf+ZUIZk2pBFSddC+ZT03yrfupydSW30clVkWIkR22ioW5v7nkxHMZe8X9WTiS1E9gwIvaQkMYkmY4xzLssya7Vf5fMvnVGrRjWpqkpsfZwvPCMiapKqxhhDCGafccTNDeXNOVc7VkbdZjaHMu6RaNfa3VX58avZRboDJ3/E8iN1lXOvWaMi3T2fR00IdvNDceNg0UUNCG0zdmWvaWNRFG1b1z6Zcmncpsz5leay5IO17M7h6Dtf/a23nXngod69r519+eHwvW9ceOTPD7vgh2wxr4bnqDxT3PeOeOJl2cvf5KN3Epug8dI342c/ZH72w3HprLatU5P78diezsx4z32kjtVH91sNLOoHdf925KS6Lu7/SSE9hLe0uaZDku2n4PNlZqTO5cQoGzsdle2JZul2vfiZ+mMfyN7+R/mdr2vF27yXhVq+85he/fba458QPzrEgwBwJHzoY5LdI1OnuixhJhpTNPL0E/LxXzYPfiGeea2cf6xYOltLJZOnxeQ2ppuryJRSL8+ttS4zzjkznz2YksQUk1dVY4yqSExbqSNErdkeFBdjlO0lNOL+HgjOf3ZnSTZfbPX47ap+wvzOKbKrovFhcvNO5Pil19Wwd/3b1fN2WGxHk9ik3dML53/AoxYQdrUbb7v9pds5ihd+vKiIjE1RpUZjU6fMR3O3XPjC77/jjl/7q/49rymMV82TmNUnHg3nnrz46b8Teeawy3tULOwFcWCGd+mrfyKduldf+kZ1PRtaESeSorFGdw/X3p6xsNf2fVvgj+sPZvtkPvvzs/ffBZuSSJIUNzNB63xkaRKRYMQlTclE0WhsT/3Ef/Pz6eKXw1f+9ZDLDODFRt/4K+klr5NX/qjJCglB1MbYqp+KGL2pJ80a46zNnHXOWmc3w7+UUoqSoqhsLqGf5hvTfItsBYQ7BsUl6aia97T9s9tfbr3YnJAoN2aXT1sVv0rSHb8lJp9SmK/zcUMbYN4Pup/z9uKWkuzVszo/aUdnoUvd/HdTgdLWpu2prJv/7+eqeqHc3G4siqooq7Lsdy2VtGD8fGpnSppCiJqnZvzVz8nFp8597h9keu6wSwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeA7+Hxatq0ZC8IqIAAAAAElFTkSuQmCC\"\n      ></image>\n    </g>\n  </svg>\n);\nexport default SvgAzure;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Azure/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgAzure from \"./Azure\";\n\nexport const AzureIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgAzure ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Bing/Bing.jsx",
    "content": "const SvgBing = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"-29.622 0.1 574.392 799.81\"\n    {...props}\n  >\n    <linearGradient\n      id=\"bing_svg__a\"\n      x1={286.383}\n      x2={542.057}\n      y1={284.169}\n      y2={569.112}\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop offset={0} stopColor=\"#37bdff\" />\n      <stop offset={0.25} stopColor=\"#26c6f4\" />\n      <stop offset={0.5} stopColor=\"#15d0e9\" />\n      <stop offset={0.75} stopColor=\"#3bd6df\" />\n      <stop offset={1} stopColor=\"#62dcd4\" />\n    </linearGradient>\n    <linearGradient\n      id=\"bing_svg__b\"\n      x1={108.979}\n      x2={100.756}\n      y1={675.98}\n      y2={43.669}\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop offset={0} stopColor=\"#1b48ef\" />\n      <stop offset={0.5} stopColor=\"#2080f1\" />\n      <stop offset={1} stopColor=\"#26b8f4\" />\n    </linearGradient>\n    <linearGradient\n      id=\"bing_svg__c\"\n      x1={256.823}\n      x2={875.632}\n      y1={649.719}\n      y2={649.719}\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop offset={0} stopColor=\"#39d2ff\" />\n      <stop offset={0.5} stopColor=\"#248ffa\" />\n      <stop offset={1} stopColor=\"#104cf5\" />\n    </linearGradient>\n    <linearGradient\n      id=\"bing_svg__d\"\n      x1={256.823}\n      x2={875.632}\n      y1={649.719}\n      y2={649.719}\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop offset={0} stopColor=\"#fff\" />\n      <stop offset={1} />\n    </linearGradient>\n    <path\n      fill=\"#7f7f7f\"\n      d=\"M249.97 277.48c-.12.96-.12 2.05-.12 3.12 0 4.16.83 8.16 2.33 11.84l1.34 2.76 5.3 13.56 27.53 70.23 24.01 61.33c6.85 12.38 17.82 22.1 31.05 27.28l4.11 1.51c.16.05.43.05.65.11l65.81 22.63v.05l25.16 8.64 1.72.58c.06 0 .16.06.22.06 4.96 1.25 9.82 2.93 14.46 4.98 10.73 4.63 20.46 11.23 28.77 19.28 3.35 3.2 6.43 6.65 9.28 10.33a88.64 88.64 0 0 1 6.64 9.72c8.78 14.58 13.82 31.72 13.82 49.97 0 3.26-.16 6.41-.49 9.61-.11 1.41-.28 2.77-.49 4.12v.11c-.22 1.43-.49 2.91-.76 4.36-.28 1.41-.54 2.81-.86 4.21-.05.16-.11.33-.17.49-.3 1.42-.68 2.82-1.07 4.23-.35 1.33-.79 2.7-1.28 3.99a42.96 42.96 0 0 1-1.51 4.16c-.49 1.4-1.07 2.82-1.72 4.16-1.78 4.11-3.9 8.06-6.28 11.83a97.889 97.889 0 0 1-10.47 13.95c30.88-33.2 51.41-76.07 56.52-123.51.86-7.78 1.3-15.67 1.3-23.61 0-5.07-.22-10.09-.55-15.13-3.89-56.89-29.79-107.77-69.32-144.08-10.9-10.09-22.81-19.07-35.62-26.69l-24.2-12.37-122.63-62.93a30.15 30.15 0 0 0-11.93-2.44c-15.88 0-28.99 12.11-30.55 27.56z\"\n    />\n    <path\n      fill=\"url(#bing_svg__a)\"\n      d=\"M249.97 277.48c-.12.96-.12 2.05-.12 3.12 0 4.16.83 8.16 2.33 11.84l1.34 2.76 5.3 13.56 27.53 70.23 24.01 61.33c6.85 12.38 17.82 22.1 31.05 27.28l4.11 1.51c.16.05.43.05.65.11l65.81 22.63v.05l25.16 8.64 1.72.58c.06 0 .16.06.22.06 4.96 1.25 9.82 2.93 14.46 4.98 10.73 4.63 20.46 11.23 28.77 19.28 3.35 3.2 6.43 6.65 9.28 10.33a88.64 88.64 0 0 1 6.64 9.72c8.78 14.58 13.82 31.72 13.82 49.97 0 3.26-.16 6.41-.49 9.61-.11 1.41-.28 2.77-.49 4.12v.11c-.22 1.43-.49 2.91-.76 4.36-.28 1.41-.54 2.81-.86 4.21-.05.16-.11.33-.17.49-.3 1.42-.68 2.82-1.07 4.23-.35 1.33-.79 2.7-1.28 3.99a42.96 42.96 0 0 1-1.51 4.16c-.49 1.4-1.07 2.82-1.72 4.16-1.78 4.11-3.9 8.06-6.28 11.83a97.889 97.889 0 0 1-10.47 13.95c30.88-33.2 51.41-76.07 56.52-123.51.86-7.78 1.3-15.67 1.3-23.61 0-5.07-.22-10.09-.55-15.13-3.89-56.89-29.79-107.77-69.32-144.08-10.9-10.09-22.81-19.07-35.62-26.69l-24.2-12.37-122.63-62.93a30.15 30.15 0 0 0-11.93-2.44c-15.88 0-28.99 12.11-30.55 27.56z\"\n    />\n    <path\n      fill=\"#7f7f7f\"\n      d=\"M31.62.1C14.17.41.16 14.69.16 32.15v559.06c.07 3.9.29 7.75.57 11.66.25 2.06.52 4.2.9 6.28 7.97 44.87 47.01 78.92 94.15 78.92 16.53 0 32.03-4.21 45.59-11.53.08-.06.22-.14.29-.14l4.88-2.95 19.78-11.64 25.16-14.93.06-496.73c0-33.01-16.52-62.11-41.81-79.4-.6-.36-1.18-.74-1.71-1.17L50.12 5.56C45.16 2.28 39.18.22 32.77.1z\"\n    />\n    <path\n      fill=\"url(#bing_svg__b)\"\n      d=\"M31.62.1C14.17.41.16 14.69.16 32.15v559.06c.07 3.9.29 7.75.57 11.66.25 2.06.52 4.2.9 6.28 7.97 44.87 47.01 78.92 94.15 78.92 16.53 0 32.03-4.21 45.59-11.53.08-.06.22-.14.29-.14l4.88-2.95 19.78-11.64 25.16-14.93.06-496.73c0-33.01-16.52-62.11-41.81-79.4-.6-.36-1.18-.74-1.71-1.17L50.12 5.56C45.16 2.28 39.18.22 32.77.1z\"\n    />\n    <path\n      fill=\"#7f7f7f\"\n      d=\"M419.81 510.84 194.72 644.26l-3.24 1.95v.71l-25.16 14.9-19.77 11.67-4.85 2.93-.33.16c-13.53 7.35-29.04 11.51-45.56 11.51-47.13 0-86.22-34.03-94.16-78.92 3.77 32.84 14.96 63.41 31.84 90.04 34.76 54.87 93.54 93.04 161.54 99.67h41.58c36.78-3.84 67.49-18.57 99.77-38.46l49.64-30.36c22.36-14.33 83.05-49.58 100.93-69.36 3.89-4.33 7.4-8.97 10.47-13.94 2.38-3.78 4.5-7.73 6.28-11.84.6-1.4 1.17-2.76 1.72-4.15.52-1.38 1.01-2.77 1.51-4.18.93-2.7 1.67-5.41 2.38-8.2.36-1.59.69-3.16 1.02-4.72 1.08-5.89 1.67-11.94 1.67-18.21 0-18.25-5.04-35.39-13.77-49.95-2-3.4-4.2-6.65-6.64-9.72-2.85-3.7-5.93-7.13-9.28-10.33-8.31-8.05-18.01-14.65-28.77-19.29-4.64-2.05-9.48-3.74-14.46-4.97-.06 0-.16-.06-.22-.06l-1.72-.58z\"\n    />\n    <path\n      fill=\"url(#bing_svg__c)\"\n      d=\"M419.81 510.84 194.72 644.26l-3.24 1.95v.71l-25.16 14.9-19.77 11.67-4.85 2.93-.33.16c-13.53 7.35-29.04 11.51-45.56 11.51-47.13 0-86.22-34.03-94.16-78.92 3.77 32.84 14.96 63.41 31.84 90.04 34.76 54.87 93.54 93.04 161.54 99.67h41.58c36.78-3.84 67.49-18.57 99.77-38.46l49.64-30.36c22.36-14.33 83.05-49.58 100.93-69.36 3.89-4.33 7.4-8.97 10.47-13.94 2.38-3.78 4.5-7.73 6.28-11.84.6-1.4 1.17-2.76 1.72-4.15.52-1.38 1.01-2.77 1.51-4.18.93-2.7 1.67-5.41 2.38-8.2.36-1.59.69-3.16 1.02-4.72 1.08-5.89 1.67-11.94 1.67-18.21 0-18.25-5.04-35.39-13.77-49.95-2-3.4-4.2-6.65-6.64-9.72-2.85-3.7-5.93-7.13-9.28-10.33-8.31-8.05-18.01-14.65-28.77-19.29-4.64-2.05-9.48-3.74-14.46-4.97-.06 0-.16-.06-.22-.06l-1.72-.58z\"\n    />\n    <path\n      fill=\"#7f7f7f\"\n      d=\"M512 595.46c0 6.27-.59 12.33-1.68 18.22-.32 1.56-.65 3.12-1.02 4.7-.7 2.8-1.44 5.51-2.37 8.22-.49 1.4-.99 2.8-1.51 4.16-.54 1.4-1.12 2.76-1.73 4.16a87.873 87.873 0 0 1-6.26 11.83 96.567 96.567 0 0 1-10.48 13.94c-17.88 19.79-78.57 55.04-100.93 69.37l-49.64 30.36c-36.39 22.42-70.77 38.29-114.13 39.38-2.05.06-4.06.11-6.05.11-2.8 0-5.56-.05-8.33-.16-73.42-2.8-137.45-42.25-174.38-100.54a213.368 213.368 0 0 1-31.84-90.04c7.94 44.89 47.03 78.92 94.16 78.92 16.52 0 32.03-4.17 45.56-11.51l.33-.17 4.85-2.92 19.77-11.67 25.16-14.9v-.71l3.24-1.95 225.09-133.43 17.33-10.27 1.72.58c.05 0 .16.06.22.06 4.98 1.23 9.83 2.92 14.46 4.97 10.76 4.64 20.45 11.24 28.77 19.29a92.13 92.13 0 0 1 9.28 10.33c2.44 3.07 4.64 6.32 6.64 9.72 8.73 14.56 13.77 31.7 13.77 49.95z\"\n      opacity={0.15}\n    />\n    <path\n      fill=\"url(#bing_svg__d)\"\n      d=\"M512 595.46c0 6.27-.59 12.33-1.68 18.22-.32 1.56-.65 3.12-1.02 4.7-.7 2.8-1.44 5.51-2.37 8.22-.49 1.4-.99 2.8-1.51 4.16-.54 1.4-1.12 2.76-1.73 4.16a87.873 87.873 0 0 1-6.26 11.83 96.567 96.567 0 0 1-10.48 13.94c-17.88 19.79-78.57 55.04-100.93 69.37l-49.64 30.36c-36.39 22.42-70.77 38.29-114.13 39.38-2.05.06-4.06.11-6.05.11-2.8 0-5.56-.05-8.33-.16-73.42-2.8-137.45-42.25-174.38-100.54a213.368 213.368 0 0 1-31.84-90.04c7.94 44.89 47.03 78.92 94.16 78.92 16.52 0 32.03-4.17 45.56-11.51l.33-.17 4.85-2.92 19.77-11.67 25.16-14.9v-.71l3.24-1.95 225.09-133.43 17.33-10.27 1.72.58c.05 0 .16.06.22.06 4.98 1.23 9.83 2.92 14.46 4.97 10.76 4.64 20.45 11.24 28.77 19.29a92.13 92.13 0 0 1 9.28 10.33c2.44 3.07 4.64 6.32 6.64 9.72 8.73 14.56 13.77 31.7 13.77 49.95z\"\n      opacity={0.15}\n    />\n  </svg>\n);\nexport default SvgBing;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Bing/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgBing from \"./Bing\";\n\nexport const BingIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgBing ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/BotMessageSquare/BotMessageSquare.jsx",
    "content": "const SvgBotMessageSquare = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"24\"\n    height=\"24\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    strokeWidth=\"2\"\n    strokeLinecap=\"round\"\n    strokeLinejoin=\"round\"\n    className=\"lucide lucide-bot-message-square\"\n    {...props}\n  >\n    <path d=\"M12 6V2H8\" />\n    <path d=\"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z\" />\n    <path d=\"M2 12h2\" />\n    <path d=\"M9 11v2\" />\n    <path d=\"M15 11v2\" />\n    <path d=\"M20 12h2\" />\n  </svg>\n);\nexport default SvgBotMessageSquare;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/BotMessageSquare/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgChroma from \"./BotMessageSquare\";\n\nexport const BotMessageSquareIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgChroma ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Cassandra/Cassandra.jsx",
    "content": "const CassandraSVG = (props) => (\n  <svg\n    width=\"24\"\n    height=\"24\"\n    viewBox=\"0 -43.5 256 256\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <g fill=\"#373535\">\n      <path d=\"M30.9 142.2c2.2 0 4.2.5 5.3 1.5.2 1.6-1.3 4.2-2.2 4.2-1.1-.4-2.1-.6-3.4-.6-5.2 0-7.8 5.4-7.8 10.7 0 3.3 1.1 5.3 3.8 5.3 2.8 0 5.6-1.9 7.2-3.3.4.3.9 1.2.9 2.2 0 1.1-.3 2.2-1.4 3.3-1.8 1.8-4.9 3.4-9.4 3.4-5.1 0-8.7-2.9-8.7-9.7.2-9 6-17 15.7-17ZM47.7 163c2.8 0 7.9-4.9 9.3-14.3.1-.6.1-.7.2-1.3-.6-.2-1.5-.4-2.3-.4-2.1 0-4.3.6-6.2 3.3-2 2.8-2.9 6.3-2.9 9.1 0 2.3.7 3.6 1.9 3.6Zm-9.2-2.6c0-3.4 1.1-9.2 5.4-13.5 3.7-3.8 8.1-4.7 12.2-4.7 2.7 0 6.3.9 8.6 1.3-.6 2.5-1.9 12-2.6 17.5-.3 2.3-.4 5.6-.3 6.8-1.9.8-5.4 1-6.4 1-.5 0-.6-2.3-.5-4.6.1-.7.2-1.8.2-2.3-2.2 3.7-6.6 6.8-11.2 6.8-3.3.1-5.4-2.7-5.4-8.3ZM78.9 142.2c2.3 0 4.6.9 5.6 1.9-.1 1.6-1.3 4.3-3.3 3.5-.9-.3-1.7-.5-2.9-.5-1.5 0-2.9.7-2.9 2.1 0 1.1.8 1.9 4.6 4.6 2.7 2 3.8 3.8 3.8 6.3 0 4.2-3.9 8.7-10.8 8.7-2.8 0-5.3-1.1-6-2.2-1-1.7-.2-5.1.9-4.5 1.5.7 3.9 1.5 5.9 1.5 1.9 0 3.1-.9 3.1-2 0-1-.9-1.8-4.3-4.3-2.9-2.2-3.8-4.2-3.8-6.4 0-4.8 4.1-8.7 10.1-8.7ZM98.6 142.2c2.3 0 4.6.9 5.6 1.9-.1 1.6-1.3 4.3-3.3 3.5-.9-.3-1.7-.5-2.9-.5-1.5 0-2.9.7-2.9 2.1 0 1.1.8 1.9 4.6 4.6 2.7 2 3.8 3.8 3.8 6.3 0 4.2-3.9 8.7-10.8 8.7-2.8 0-5.2-1.1-6-2.2-1-1.7-.2-5.1.9-4.5 1.5.7 3.9 1.5 5.9 1.5 1.9 0 3.1-.9 3.1-2 0-1-.9-1.8-4.3-4.3-2.9-2.2-3.8-4.2-3.8-6.4 0-4.8 4.1-8.7 10.1-8.7ZM116.5 163c2.8 0 7.9-4.9 9.3-14.3.1-.6.1-.7.2-1.3-.6-.2-1.5-.4-2.3-.4-2.1 0-4.3.6-6.2 3.3-2 2.8-2.9 6.3-2.9 9.1.1 2.3.7 3.6 1.9 3.6Zm-9.2-2.6c0-3.4 1.1-9.2 5.4-13.5 3.7-3.8 8.1-4.7 12.2-4.7 2.7 0 6.3.9 8.6 1.3-.6 2.5-1.9 12-2.6 17.5-.3 2.3-.4 5.6-.3 6.8-1.9.8-5.4 1-6.4 1-.5 0-.6-2.3-.5-4.6.1-.7.2-1.8.2-2.3-2.2 3.7-6.6 6.8-11.2 6.8-3.2.1-5.4-2.7-5.4-8.3ZM146.4 149.6c2.6-4.2 6-7.4 10.8-7.4 4.1 0 5.4 3.8 4.6 9.1-.4 2.5-1.1 6.1-1.5 9.4-.4 2.8-.7 5.3-.6 7-1.5.7-5.8 1-6.8 1-.4 0-.5-3.1.1-6.4.5-2.7 1.4-7.7 1.9-10.6.3-1.7.2-3.7-1.4-3.7-2.1 0-7.1 3.4-9.6 17.2-.2 1.1-.6 1.8-1.3 2.2-.9.5-2.7 1-6.4 1 .7-3.5 1.8-10.6 2.6-15.9.7-4.8 1-7.9.9-9.1 1-.3 6.1-1.4 6.6-1.4.6 0 .7 1.8.2 6-.1.4-.1 1-.2 1.4h.1v.2ZM175.4 162.9c2.5 0 7.6-4.7 9-13 .1-.5.2-1.3.3-1.8-.7-.7-1.7-1.1-3.3-1.1-5.8 0-8.3 6.9-8.3 11.9.1 2.6 1 4 2.3 4Zm-3.7 5.9c-3.7 0-5.9-3.3-5.9-8.8 0-9.2 5.8-17.7 15.5-17.7 1.7 0 3.3.5 4.2 1 .5-2.6 1.7-10.7 1.8-13.1 1.6-.3 5-.8 6.6-.8.6 0 .8.6.6 2.1-1.4 8.6-3.8 25-4.3 28.6-.3 3.1-.4 6.1-.3 7.8-1.8.8-5.5 1-6.5 1-.4 0-.6-2.6-.5-5 .1-.7.2-1.8.2-2-3.1 4.6-7 6.9-11.4 6.9ZM205.1 150.4c3-6.7 6.6-8.2 9-8.2.7 0 1.9.5 2.4 1 .2 1.9-1.3 5.6-2.6 7.1-.7-.3-1.5-.7-2.5-.7-1.9 0-5.8 3-8.2 16-.2 1.1-.5 1.5-1.1 1.8-1 .6-4.8 1-6.6 1.1.9-4.7 2.3-14.2 2.9-19.8.2-1.4.2-4.1.1-5.1 1.1-.5 5.4-1.5 6.3-1.5.5 0 .9 3.1.1 8.2h.2v.1ZM225.2 163c2.8 0 7.9-4.9 9.3-14.3.1-.6.1-.7.2-1.3-.6-.2-1.5-.4-2.3-.4-2.1 0-4.3.6-6.2 3.3-2 2.8-2.9 6.3-2.9 9.1.1 2.3.7 3.6 1.9 3.6Zm-9.2-2.6c0-3.4 1.1-9.2 5.4-13.5 3.7-3.8 8.1-4.7 12.2-4.7 2.7 0 6.3.9 8.6 1.3-.6 2.5-1.9 12-2.6 17.5-.3 2.3-.4 5.6-.3 6.8-1.9.8-5.4 1-6.4 1-.5 0-.6-2.3-.5-4.6.1-.7.2-1.8.2-2.3-2.2 3.7-6.6 6.8-11.2 6.8-3.2.1-5.4-2.7-5.4-8.3Z\" />\n    </g>\n    <path\n      fill=\"#BBE6FB\"\n      d=\"M205.5 45.5c1.9 21.9-32.6 42.8-77.1 46.6-44.5 3.8-82-10.9-83.9-32.8-1.9-21.9 32.6-42.8 77.1-46.6 44.4-3.8 82 10.8 83.9 32.8\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"M122.8 15.2c-17-.3-36.8 6.5-51.6 12.8-1.5 4.4-2.4 9.1-2.4 14 0 26 23.5 47.1 52.5 47.1s52.6-21 52.6-47.1c0-8.2-2.4-16-6.5-22.7-11.8-1.8-28.1-3.8-44.6-4.1\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"M121.4 15.2c-9.4-.6-25.6 4.3-39.1 9.2-2.1 4.8-3.2 10.1-3.2 15.7 0 22.8 20.7 41.3 42.5 41.3 21.7 0 40.9-18.5 42.5-41.3.5-7.4-2-14.4-5.6-20.4-13.9-2.4-28.7-3.9-37.1-4.5\"\n    />\n    <path\n      fill=\"#373535\"\n      d=\"M97.3 37.2c1.2-2.6 2.9-3.8 4.6-5.9-.2-.5-.6-2.2-.6-2.7 0-2.6 2.1-4.6 4.6-4.6.6 0 1.2.1 1.7.3 7.7-5.9 17.8-8.4 28-6.1.9.2 1.8.5 2.7.7-10-1.4-21.4 2.2-29.1 8.4.2.6.9 2.1.9 2.8 0 2.6-1.7 3.2-4.2 3.2-.6 0-1.1-.1-1.7-.3-1.7 2.3-3.9 6.8-4.9 9.6 4.3 3.8 8.1 5.2 13.1 7.1 0-.2.2-.5.2-.7 0-7.7 6.8-14 14.5-14 6.9 0 12.7 5 13.8 11.6 3.5-2.2 6.8-3.9 9.3-7.1-.6-.7-1.2-2.8-1.2-3.8 0-2.3 1.9-4.2 4.2-4.2.3 0 .6 0 1 .1 1.3-2.7 2.3-5.5 2.9-8.4-12.1-9-35.5-7.7-35.5-7.7s-18.6-1-31.2 5.2c.9 5.8 3.3 11.6 6.9 16.5\"\n    />\n    <path\n      fill=\"#373535\"\n      d=\"M155.1 33.7c.9.8 1.3 1.4 1.7 2.1 1.1 2-1.1 3.9-3.5 3.9-.2 0-.5 0-.7-.1-2.6 4.1-7.2 9.3-11.3 12 6.3 1 12.2 3.5 16.8 7.4 3.4-6.1 6-15 6-22.5 0-5.7-2.5-9.9-6.3-13-.1 3.1-1.8 7.4-2.7 10.2M104.3 72.5c2.1-5.8 7.2-10.2 12.1-14.1-.7-1-1.8-3.4-2.2-4.5-5.9-1.8-11.1-5.2-15.2-9.6 0 .1-.1.3-.1.4-.8 3.4-.9 6.9-.5 10.2 2.8.5 5 3 5 6 0 1.8-1.6 4.3-2.8 5.5 1.2 2.6 2.1 4 3.7 6.1\"\n    />\n    <path\n      fill=\"#373535\"\n      d=\"M103.9 77.3c-2.5-2.5-4.2-7.4-5.8-10.5-.3 0-.6.1-.9.1-3.4 0-6.9-2.8-6.1-6.1.4-1.8 1.7-3 3.7-4-.5-3.8-.6-9.1.3-13 .2-1.1.8-1.6 1.1-2.7-3.7-5.4-6.1-12.6-6.1-19.7v-.8c-6.3 3.2-11 8.1-11 15.9 0 17.3 10 34.3 24.8 40.9v-.1M140.4 53.4c-1.9 5.4-7.1 9.4-13.2 9.4-3.3 0-6.3-1.1-8.6-3-4.9 3.8-9.4 10.5-11.6 16.4 1 1.1 1.7 2 2.9 3 3.4.9 8.2 0 11.9 0 14.9 0 28.2-6.6 35.8-18.3-5.2-3.6-11.2-7-17.2-7.5\"\n    />\n    <path\n      fill=\"#1287B1\"\n      d=\"M96.9 39.2c1.2-2.6 2.6-4.9 4.3-7.1-.2-.5-.3-1.1-.3-1.6 0-2.6 2.1-4.6 4.6-4.6.6 0 1.2.1 1.7.3 7.7-5.9 17.8-8.4 28-6.1.9.2 1.8.5 2.7.7-10-1.4-20.4 1.7-28.1 7.9.2.6.4 1.2.4 1.8 0 2.6-2.1 4.6-4.6 4.6-.6 0-1.1-.1-1.7-.3-1.7 2.3-3.2 4.9-4.2 7.7 3.7 3.9 8.2 7.1 13.2 8.9v-.7c0-7.7 6.3-14 14-14 6.9 0 12.7 5 13.8 11.6 3.5-2.2 6.5-5 9.1-8.3-.6-.7-1-1.6-1-2.6 0-2.3 1.9-4.2 4.2-4.2.3 0 .6 0 1 .1 1.3-2.7 2.3-5.5 2.9-8.4-12.1-9-35.5-7.7-35.5-7.7s-18.6-1-31.2 5.2c.7 6.1 3.1 11.9 6.7 16.8\"\n    />\n    <path\n      fill=\"#1287B1\"\n      d=\"M155.7 34.4c.9.8 1.4 1.9 1.4 3.1 0 2.3-1.9 4.2-4.2 4.2-.2 0-.5 0-.7-.1-2.6 4.1-6.1 7.6-10.2 10.2 6 .9 11.7 3.5 16.4 7.4 3.4-6.1 5.4-13.2 5.4-20.7 0-5.7-2.5-9.9-6.3-13-.2 3.1-.8 6.1-1.8 8.9M104.9 73.8c2.1-5.8 5.7-10.9 10.6-14.8-.7-1-1.3-2-1.7-3.2-5.9-1.8-11.1-5.2-15.2-9.6 0 .1-.1.3-.1.4-.8 3.4-.9 6.9-.5 10.2 2.8.5 5 3 5 6 0 1.8-.8 3.4-2 4.5 1 2.3 2.4 4.5 3.9 6.5\"\n    />\n    <path\n      fill=\"#1287B1\"\n      d=\"M103.9 77.2c-2.5-2.5-4.6-5.3-6.2-8.4-.3 0-.6.1-.9.1-3.4 0-6.1-2.7-6.1-6.1 0-2.4 1.4-4.5 3.4-5.5-.5-3.8-.3-7.6.6-11.5.2-1.1.6-2.2.9-3.3-3.7-5.4-5.9-12-5.9-19.1v-.8c-6.3 3.2-11 8.1-11 15.9 0 17.3 10.3 32.2 25.1 38.8.1 0 .1 0 .1-.1M140 55.4c-1.9 5.4-7.1 9.4-13.2 9.4-3.3 0-6.3-1.1-8.6-3-4.9 3.8-8.6 9-10.9 14.9 1 1.1 2.1 2.1 3.2 3.1 3.4.9 7 1.4 10.7 1.4 14.9 0 28.1-7.7 35.7-19.4-5-3.6-10.9-5.9-16.9-6.4\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"m140.5 51.8 12.9-3.1-13-.7 10.6-8-12 4.3 8.1-11.3-11.3 7.5 3.9-13.2-7.7 10.9-.2-13.8-5.1 12.3-4.2-12.4.2 14.6-7.3-13.1 4 13.9-11.9-8.6 9.3 11.7-14.8-5.4 11.6 8.6-14.9.5 15.3 3.9-15.3 3.3 15.1 1.1-12.7 8.1 13.1-4.7-9.1 11.5 11.5-9.3-4.1 15.4 8.9-12.6-1.2 14.8 5-13.5 4.3 14.1 1-14.2 6.4 12.1-3.8-13.8 11.6 9-7.5-11.5 12.8 5-9.8-9.6 13.1 1-12.8-4.8Z\"\n    />\n    <path\n      fill=\"#373535\"\n      fill-opacity=\".35\"\n      d=\"M2.8 76.5C42.9 36.4 74.9 24 104 18.4c3.8-.7 4.6-9.2 4.6-9.2s.5 6.2 3.2 7c2.7.8 6.2-9.7 6.2-9.7s-3.2 9.4 0 10c3.2.5 9.2-9.2 9.2-9.2s-2.4 8.3-.8 8.9c1.6.5 9.7-12.1 9.7-12.1s-4.8 8.3-.3 9.2c4.6.8 11.3-5.7 11.3-5.7s-5.2 5.9-2.9 6.8c10 3.5 18-9.4 18-9.4s-1.9 5.7-6.7 11.9c10.5 2.7 18.3-13.1 18.3-13.1L166 19.6c4 2 20.1-16.6 20.1-16.6s-8.3 14.5-13.2 17.5c2.7 2.2 12.4-6.5 12.4-6.5s-7.8 9.7-4.8 10.2c4.3 3.5 20.2-18 20.2-18s-6.2 12.7-15.3 22.6C193 32.7 212 8.2 212 8.2s-.5 7.8-14.3 20.2c10.2-1.3 23.4-20.7 23.4-20.7s-4.8 14.5-16.4 24.8c10-1 26.1-25.8 26.1-25.8s-6.2 17.2-18.8 27.2c14 3.1 34.2-17.8 34.2-17.8s-7.9 14.8-18.3 20.9c11.6 4.4 27.5-13.9 27.5-13.9s-15.9 24.5-41.2 23.4c-8.3-.4-33.4-25.2-87.2-23.2C55.8 25.9 40.8 56.1 2.8 76.5\"\n    />\n    <path\n      fill=\"#373535\"\n      d=\"M4.4 73.5C44.5 33.4 76.5 21 105.6 15.4c3.8-.7 4.6-9.2 4.6-9.2s.5 6.2 3.2 7c2.7.8 6.2-9.7 6.2-9.7s-3.2 9.4 0 10c3.2.5 9.2-9.2 9.2-9.2s-2.4 8.3-.8 8.9c1.6.5 9.7-12.1 9.7-12.1s-4.8 8.3-.3 9.2c4.6.8 11.3-5.7 11.3-5.7s-5.2 5.9-2.9 6.8c10 3.5 18-9.4 18-9.4s-1.9 5.7-6.7 11.9C167.6 16.6 175.4.8 175.4.8l-7.8 15.8c4 2.2 20.2-16.4 20.2-16.4s-8.3 14.5-13.2 17.5C177.3 19.6 187 11 187 11s-7.8 9.7-4.8 10.2c4.3 3.5 20.2-18 20.2-18s-6.3 12.7-15.4 22.6c7.6 3.8 26.7-20.7 26.7-20.7s-.5 7.8-14.3 20.2c10.2-1.3 23.4-20.7 23.4-20.7s-4.8 14.5-16.4 24.8c10-1 26.1-25.8 26.1-25.8s-6.2 17.2-18.8 27.2c14 3.1 34.2-17.8 34.2-17.8s-7.9 14.8-18.3 20.9c11.6 4.4 27.5-13.9 27.5-13.9s-15.9 24.5-41.2 23.4c-8.3-.4-33.4-25.2-87.2-23.2C57.5 22.9 42.4 53 4.4 73.5\"\n    />\n    <path\n      fill=\"#373535\"\n      fill-opacity=\".35\"\n      d=\"M1.8 80.9c21.2 10.6 40.6-1.6 65 5.3 18.6 5.2 41.2 11.7 71.9 7.2 30.7-4.4 56.9-17.8 69.5-41.6 3.9-10.6 19.8 2.4 19.8 2.4s-11.6-4.8-11.3-2.6c.3 2.3 17.4 10.2 17.4 10.2s-15.5-4.8-14.5-1.2c.9 3.6 19.4 18.2 19.4 18.2S217.9 63 216.2 65.2c-1.8 2.2 8.9 10.9 8.9 10.9s-17.6-10.9-23.8-7.7c-4.5 2.3 18.3 17.2 18.3 17.2s-14.8-11.3-18.3-8.3 16.7 27.2 16.7 27.2-23-24.8-25.3-23.6C190.4 82.1 199 94 199 94s-11.2-12.4-14.3-10.3c-3.1 2.2 16.2 34.3 16.2 34.3S180 85.1 171.3 90.6c13.5 29.7 8.5 33.9 8.5 33.9s-1.7-30.3-18.6-29.5c-8.5.4 4 22.6 4 22.6S153.7 97.3 146 97.7c14.1 26.8 9.1 37.6 9.1 37.6s2.3-22.9-16.8-35.6c7.3 6.5-4.6 35.6-4.6 35.6s10.4-42.9-7.7-34.7c-2.9 1.3-.2 21.4-.2 21.4s-3.6-23-9.1-21.8c-3.2.7-20.2 31.9-20.2 31.9s13.9-33.7 9.7-32.3c-3.1 1-8.9 14.9-8.9 14.9s2.8-13.7 0-14.5c-2.8-.8-18.6 14.5-18.6 14.5s11.7-13.7 9.7-16.6c-3.1-4.3-6.6-4.5-10.9-2.8C71.3 97.7 63 109 63 109s8.3-11.5 6.9-15.7c-2.3-6.9-26.2 13.3-26.2 13.3s14.1-13.3 10.9-16.2c-3.2-2.8-20.8-2-26.2-2-16.1.2-21.7-3.6-26.6-7.5\"\n    />\n    <path\n      fill=\"#373535\"\n      d=\"M.9 78.5c21.2 10.6 40.6-1.6 65 5.3 18.6 5.2 41.2 11.7 71.9 7.2 30.7-4.4 56.9-17.8 69.5-41.6 3.9-10.6 19.8 2.4 19.8 2.4s-11.6-4.8-11.3-2.6c.3 2.3 17.4 10.2 17.4 10.2s-15.5-4.8-14.5-1.2c.9 3.6 19.4 18.2 19.4 18.2s-20.9-15.9-22.6-13.7c-1.7 2.2 8.9 10.9 8.9 10.9s-17.6-10.9-23.8-7.7c-4.5 2.3 18.3 17.2 18.3 17.2s-14.8-11.3-18.3-8.3 16.7 27.2 16.7 27.2-22.9-24.8-25.2-23.6c-2.3 1.2 6.3 13.1 6.3 13.1S187 79.2 183.9 81.3c-3.1 2.2 16.1 34.3 16.1 34.3s-20.9-33-29.5-27.5c13.6 29.8 8.5 34 8.5 34s-1.7-30.3-18.6-29.5c-8.5.4 4 22.6 4 22.6S153 95 145.3 95.4c14.1 26.8 9.1 37.6 9.1 37.6s2.3-22.9-16.8-35.6c7.3 6.5-4.6 35.6-4.6 35.6s10.4-42.9-7.7-34.7c-2.9 1.3-.2 21.4-.2 21.4s-3.6-23-9.1-21.8c-3.2.7-20.2 31.9-20.2 31.9s13.9-33.7 9.7-32.3c-3.1 1-8.9 14.9-8.9 14.9s2.8-13.7 0-14.5c-2.8-.8-18.6 14.5-18.6 14.5s11.7-13.7 9.7-16.6c-3.1-4.3-6.6-4.5-10.9-2.8-6.2 2.4-14.5 13.7-14.5 13.7s8.3-11.5 6.9-15.7C66.9 84.1 43 104.3 43 104.3S57.1 91 53.9 88.1c-3.2-2.8-20.8-2-26.2-2-16.3.1-21.9-3.7-26.8-7.6\"\n    />\n  </svg>\n);\nexport default CassandraSVG;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Cassandra/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport CassandraSVG from \"./Cassandra\";\n\nexport const CassandraIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <CassandraSVG ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ChromaIcon/Chroma.jsx",
    "content": "const SvgChroma = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    fill=\"none\"\n    viewBox=\"0 0 209 135\"\n    {...props}\n  >\n    <ellipse cx={136.019} cy={67.23} fill=\"#FFDE2D\" rx={66.667} ry={64} />\n    <ellipse cx={69.352} cy={67.23} fill=\"#327EFF\" rx={66.667} ry={64} />\n    <path\n      fill=\"#327EFF\"\n      d=\"M2.685 67.23c0-35.346 29.848-64 66.667-64v64H2.685Z\"\n    />\n    <path\n      fill=\"#FF6446\"\n      d=\"M136.019 67.23c0 35.347-29.848 64-66.667 64v-64h66.667ZM69.352 67.23c0-35.346 29.848-64 66.667-64v64H69.352Z\"\n    />\n  </svg>\n);\nexport default SvgChroma;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ChromaIcon/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgChroma from \"./Chroma\";\n\nexport const ChromaIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgChroma ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Cohere/Cohere.jsx",
    "content": "const SvgCohere = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"165.883 110.821 117.8 117.78\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <g transform=\"translate(97.843 -127.708)\">\n      <clipPath id=\"cohere_svg__a\">\n        <path\n          d=\"M68.05 238.52h117.78V356.3H68.05z\"\n          style={{\n            overflow: \"visible\",\n          }}\n        />\n      </clipPath>\n      <g\n        style={{\n          clipPath: \"url(#cohere_svg__a)\",\n        }}\n      >\n        <path\n          d=\"M106.21 308.65c3.17 0 9.48-.17 18.19-3.76 10.16-4.18 30.37-11.77 44.94-19.57 10.2-5.45 14.66-12.67 14.66-22.38 0-13.48-10.93-24.41-24.41-24.41H103.1c-19.37 0-35.06 15.7-35.06 35.06s14.71 35.06 38.17 35.06z\"\n          className=\"cohere_svg__st2\"\n          style={{\n            clipRule: \"evenodd\",\n            fill: \"#3a594d\",\n            fillRule: \"evenodd\",\n          }}\n        />\n        <path\n          d=\"M115.77 332.79c0-9.49 5.71-18.05 14.48-21.69l17.79-7.38c17.99-7.47 37.8 5.76 37.8 25.24 0 15.09-12.24 27.33-27.33 27.32h-19.26c-12.97-.01-23.48-10.52-23.48-23.49z\"\n          className=\"cohere_svg__st3\"\n          style={{\n            clipRule: \"evenodd\",\n            fill: \"#bd8fc0\",\n            fillRule: \"evenodd\",\n          }}\n        />\n        <path\n          d=\"M88.27 313.27c-11.16 0-20.21 9.05-20.21 20.21v2.62c0 11.16 9.05 20.21 20.21 20.21s20.21-9.05 20.21-20.21v-2.62c0-11.16-9.05-20.21-20.21-20.21z\"\n          className=\"cohere_svg__st4\"\n          style={{\n            fill: \"#ee765c\",\n          }}\n        />\n      </g>\n    </g>\n  </svg>\n);\nexport default SvgCohere;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Cohere/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgCohere from \"./Cohere\";\n\nexport const CohereIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgCohere ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Confluence/Confluence.jsx",
    "content": "const ConfluenceIcon = (props) => (\n  <svg\n    width=\"32\"\n    height=\"32\"\n    viewBox=\"0 0 32 32\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path\n      d=\"M26.2078 9.73763C26.435 9.38575 26.6922 8.97739 26.9048 8.65157C26.9964 8.50234 27.0232 8.32499 26.9796 8.15722C26.936 7.98946 26.8253 7.84451 26.6713 7.75319L22.1423 5.09887C22.0635 5.05261 21.9759 5.02173 21.8845 5.00805C21.7931 4.99437 21.6998 4.99815 21.6099 5.01918C21.5201 5.04021 21.4355 5.07806 21.3612 5.13052C21.2869 5.18299 21.2242 5.24902 21.177 5.32477C20.9578 5.68183 20.7345 6.03663 20.5073 6.3891C18.7136 9.20937 16.908 8.86531 13.6572 7.3848L9.15197 5.35084C9.06778 5.31274 8.97643 5.29112 8.88331 5.28724C8.79019 5.28336 8.6972 5.2973 8.60983 5.32825C8.52247 5.35919 8.44251 5.40651 8.37469 5.4674C8.30687 5.52828 8.25256 5.60151 8.21497 5.68273L6.05814 10.3276C5.98511 10.487 5.98071 10.6674 6.04589 10.8298C6.11107 10.9923 6.24062 11.124 6.40666 11.1964C7.35461 11.6221 9.23956 12.471 10.9366 13.2478C17.0476 16.068 22.2426 15.8795 26.2078 9.73763Z\"\n      fill=\"#2584FF\"\n      stroke=\"#2584FF\"\n      strokeWidth=\"2\"\n    />\n    <path\n      d=\"M5.09768 22.3445C5.31006 22.0231 5.56711 21.5948 5.79316 21.2629C9.76184 15.1191 14.9456 14.9323 21.0681 17.7532C22.5734 18.4435 24.0819 19.1272 25.5937 19.8043C25.7596 19.8767 25.889 20.0083 25.9542 20.1708C26.0193 20.3333 26.0149 20.5136 25.9419 20.673L23.7871 25.3173C23.7496 25.3987 23.6953 25.472 23.6275 25.5329C23.5596 25.5939 23.4797 25.6413 23.3923 25.6722C23.3049 25.7032 23.2119 25.7171 23.1187 25.7131C23.0256 25.7092 22.9343 25.6874 22.8501 25.6492L18.3318 23.6189C15.0841 22.136 13.2812 21.7937 11.4882 24.6145C11.2339 25.0124 11.0015 25.3868 10.8201 25.6753C10.7729 25.751 10.7103 25.817 10.6361 25.8695C10.5618 25.922 10.4773 25.9598 10.3876 25.9808C10.2978 26.0018 10.2046 26.0056 10.1132 25.9919C10.0219 25.9783 9.93439 25.9474 9.85573 25.9011L5.33012 23.248C5.17486 23.1565 5.06351 23.0105 5.02004 22.8415C4.97656 22.6726 5.00445 22.4941 5.09768 22.3445Z\"\n      fill=\"#2584FF\"\n      stroke=\"#2584FF\"\n      strokeWidth=\"2\"\n    />\n  </svg>\n);\n\nexport default ConfluenceIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Confluence/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgConfluence from \"./Confluence\";\n\nexport const ConfluenceIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgConfluence ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Couchbase/Couchbase.jsx",
    "content": "const SvgCouchbaseIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    preserveAspectRatio=\"xMidYMid\"\n    viewBox=\"0 0 256 256\"\n    {...props}\n  >\n    <path\n      fill=\"#ED2226\"\n      d=\"M128 0C57.426 0 0 57.233 0 128c0 70.574 57.233 128 128 128 70.574 0 128-57.233 128-128S198.574 0 128 0zm86.429 150.429c0 7.734-4.447 14.502-13.148 16.048-15.082 2.707-46.792 4.254-73.281 4.254-26.49 0-58.2-1.547-73.281-4.254-8.7-1.546-13.148-8.314-13.148-16.048v-49.885c0-7.734 5.994-14.888 13.148-16.049 4.447-.773 14.888-1.546 23.01-1.546 3.093 0 5.606 2.32 5.606 5.994v34.997l44.858-.967 44.858.967V88.943c0-3.674 2.514-5.994 5.608-5.994 8.12 0 18.562.773 23.009 1.546 7.347 1.16 13.148 8.315 13.148 16.049-.387 16.435-.387 33.257-.387 49.885z\"\n    />\n  </svg>\n);\n\nexport default SvgCouchbaseIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Couchbase/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgCouchbaseIcon from \"./Couchbase\";\n\nexport const CouchbaseIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgCouchbaseIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/CrewAI/CrewAiIcon.jsx",
    "content": "const SvgCrewAiIcon = (props) => (\n  <svg\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n    width=\"1856\"\n    height=\"640\"\n    viewBox=\"0 0 1856 640\"\n    style={{ width: \"20%\", height: \"25%\" }}\n  >\n    <path\n      d=\"M0 0 C1.29195282 0.00182281 2.58390564 0.00364563 3.91500854 0.00552368 C28.44466527 0.06336198 52.75720004 1.17052794 77.1875 3.3125 C78.14779114 3.395 79.10808228 3.4775 80.09747314 3.5625 C162.75674065 10.67724112 244.77476948 24.60656275 326.1875 40.3125 C327.42462234 40.5508683 327.42462234 40.5508683 328.68673706 40.79405212 C392.75627044 53.14070168 456.64332972 66.34761292 520.50215197 79.73350489 C522.8103573 80.21725859 525.11861427 80.70076509 527.42689133 81.18417645 C528.17686606 81.34124563 528.9268408 81.49831482 529.69954205 81.66014367 C531.19345428 81.97301537 532.68736918 82.28587435 534.18128681 82.59872025 C537.73611766 83.34334518 541.29074231 84.08892686 544.84488297 84.83683968 C546.18533291 85.1188657 547.5257857 85.40087819 548.86624146 85.68287659 C549.8440098 85.88861387 549.8440098 85.88861387 550.84153104 86.09850746 C555.22339309 87.01904766 559.6084231 87.92327295 563.99478149 88.82211304 C568.87722425 89.82296796 573.74432595 90.87725216 578.60848999 91.96328735 C580.95572685 92.46586605 583.30310238 92.96779766 585.65063477 93.46899414 C587.24624379 93.84245295 587.24624379 93.84245295 588.87408733 94.22345638 C595.26923801 95.57579208 595.26923801 95.57579208 601.28048706 93.53863525 C604.58771139 90.89919861 606.91616231 88.16705294 609.4375 84.8125 C610.3743232 83.7114717 611.32101423 82.61876777 612.27709961 81.53442383 C614.13232578 79.42320585 615.95132445 77.28898838 617.74755859 75.12744141 C620.78842848 71.61921349 624.02248383 68.74670314 627.75 66 C628.29438721 65.59281738 628.83877441 65.18563477 629.3996582 64.76611328 C630.98427502 63.59936187 632.58581947 62.45571424 634.1875 61.3125 C635.33195404 60.46388898 636.47515401 59.61358447 637.6171875 58.76171875 C645.81164262 52.70907418 654.34457522 47.36126903 663.1875 42.3125 C664.321875 41.65636719 665.45625 41.00023437 666.625 40.32421875 C691.14862939 26.48815866 718.45873383 17.78722058 746.1875 13.3125 C747.0734082 13.16296875 747.95931641 13.0134375 748.87207031 12.859375 C810.48495664 2.85994189 882.91456827 11.15742334 935.171875 47.13671875 C950.37650242 58.10689682 964.94427179 70.19158907 976.1875 85.3125 C976.63029297 85.90691895 977.07308594 86.50133789 977.52929688 87.11376953 C978.9468329 89.02666537 980.35176233 90.94795904 981.75 92.875 C982.19255127 93.4834375 982.63510254 94.091875 983.09106445 94.71875 C986.1875 99.07189788 986.1875 99.07189788 986.1875 101.3125 C986.76193848 101.135979 987.33637695 100.95945801 987.92822266 100.77758789 C990.55512803 99.97279046 993.18378101 99.17385271 995.8125 98.375 C996.71613281 98.09720703 997.61976562 97.81941406 998.55078125 97.53320312 C999.87529297 97.13198242 999.87529297 97.13198242 1001.2265625 96.72265625 C1002.03303223 96.47652588 1002.83950195 96.23039551 1003.67041016 95.97680664 C1021.37884927 91.3032215 1042.77294738 92.9872214 1060.1875 98.3125 C1060.89148926 98.52680664 1061.59547852 98.74111328 1062.32080078 98.96191406 C1084.12317859 105.85955788 1103.54743981 120.15462132 1114.51171875 140.4609375 C1127.03464323 165.15382917 1128.03927933 191.38439299 1120.125 217.625 C1110.37135065 245.23131111 1090.37246577 271.79168406 1067.734375 290.3203125 C1065.87682899 292.23956863 1065.87682899 292.23956863 1066.453125 294.921875 C1066.77796875 295.95828125 1067.1028125 296.9946875 1067.4375 298.0625 C1076.1432187 333.17800398 1060.45054416 370.09988153 1049.1875 402.8125 C1036.87725477 438.56988551 1026.13155656 474.70398462 1021.1875 512.3125 C1021.0836499 513.07159668 1020.9797998 513.83069336 1020.87280273 514.61279297 C1019.9632795 522.21986127 1020.00070622 529.86119779 1020.00109863 537.51104736 C1020.00035921 539.14415257 1019.99514984 540.77726121 1019.98571777 542.41033936 C1019.93334271 551.7132893 1020.20911393 560.69226333 1021.5168457 569.92163086 C1023.12001362 581.41549813 1023.12001362 581.41549813 1021.23339844 585.25341797 C1018.66086337 588.63047243 1015.57880139 590.87760459 1011.97241211 593.11669922 C1009.17787449 594.988898 1006.75659085 597.25448742 1004.25 599.48999023 C976.81874908 623.72937093 942.87375621 641.96694084 905.51660156 640.46484375 C885.65974929 639.16603077 869.02901672 630.04970776 855.421875 615.88671875 C851.98764891 611.93015407 849.0172876 607.71647409 846.1875 603.3125 C841.31885449 604.35578118 836.50532487 605.49297047 831.69555664 606.78320312 C800.08982724 615.1140507 765.61025247 612.99238468 736.93359375 596.43359375 C732.71309028 593.70980077 728.7322819 590.81743677 724.921875 587.546875 C724.38079102 587.0825708 723.83970703 586.6182666 723.28222656 586.13989258 C721.76595065 584.81837409 720.27287586 583.47037359 718.78125 582.12109375 C716.44001566 580.04925807 716.44001566 580.04925807 714.23999023 580.5949707 C710.92030637 581.75549775 707.86289569 583.44332192 704.75 585.0625 C674.88599085 600.16288532 641.99822363 602.88140675 610 592.625 C582.65713561 583.25275103 562.82538309 563.81625338 550.04931641 538.14453125 C548.09463663 533.98931396 546.56978327 529.68669903 545.1875 525.3125 C541.6202081 527.9988259 538.86867276 530.73450407 536.125 534.25 C524.60723048 548.59468476 511.67609218 561.97360177 497.1875 573.3125 C496.14557539 574.1455108 495.10391637 574.97885389 494.0625 575.8125 C486.77950225 581.58886066 479.2589614 586.67351407 471.1875 591.3125 C470.60242676 591.65023437 470.01735352 591.98796875 469.41455078 592.3359375 C435.2616975 611.86758807 396.93045915 615.78205387 359.0625 605.5625 C338.21706381 599.67929967 318.55331675 592.25659937 301.82421875 578.18359375 C299.18267512 575.92668594 299.18267512 575.92668594 295.1875 576.3125 C293.49738471 577.51668809 293.49738471 577.51668809 292.0078125 579.2421875 C291.41589111 579.86810791 290.82396973 580.49402832 290.21411133 581.13891602 C289.58657959 581.81494873 288.95904785 582.49098145 288.3125 583.1875 C273.08065705 598.974176 254.55721784 610.83173939 232.0625 611.5625 C195.56826202 611.15296366 157.14066176 597.97177566 130.1875 573.3125 C128.25 570.9375 128.25 570.9375 127.1875 569.3125 C122.75582986 570.2263397 119.55850446 572.61391125 115.875 575.125 C65.51596954 608.35010575 3.21046538 618.78071709 -55.82836914 607.1809082 C-78.74530259 602.25648421 -101.57993229 593.33723249 -119.8125 578.3125 C-120.34891113 577.88388672 -120.88532227 577.45527344 -121.43798828 577.01367188 C-139.14643932 562.83113075 -160.48067666 539.7721876 -163.8125 516.3125 C-164.68390625 516.57804688 -165.5553125 516.84359375 -166.453125 517.1171875 C-167.64421875 517.47039063 -168.8353125 517.82359375 -170.0625 518.1875 C-171.22265625 518.53554688 -172.3828125 518.88359375 -173.578125 519.2421875 C-183.91296946 521.99031946 -194.09467143 522.65922945 -204.73754883 522.62817383 C-206.97983175 522.62502829 -209.22077089 522.64851427 -211.46289062 522.67382812 C-239.33359732 522.79648892 -265.84530267 514.3312582 -286 494.5 C-291.25792444 489.20652616 -295.65896953 483.51836317 -299.8125 477.3125 C-320.91143244 509.99317834 -320.91143244 509.99317834 -337.8125 544.9375 C-343.0208897 557.72726372 -349.84737112 568.76998764 -358.8125 579.3125 C-359.575625 580.323125 -360.33875 581.33375 -361.125 582.375 C-377.61982832 600.40423096 -401.6040005 610.92329319 -425.83032227 612.4387207 C-441.96467034 613.04906292 -457.36866948 611.05284397 -472.515625 605.3984375 C-480.21899536 602.86107143 -484.2353236 603.43060621 -491.3125 606.8125 C-537.35999578 627.41544707 -591.34643269 630.78040647 -638.9375 613.5625 C-674.48780291 599.98802136 -702.20291477 573.15009849 -718 538.6875 C-722.30966604 528.86451028 -725.3554911 518.74233342 -727.8125 508.3125 C-727.99184082 507.55936523 -728.17118164 506.80623047 -728.35595703 506.03027344 C-741.93334361 445.43764654 -718.17438422 380.58304029 -686.25537109 329.83691406 C-668.12087723 301.60241186 -645.81524962 273.58237406 -618.8125 253.3125 C-618.19922852 252.83925293 -617.58595703 252.36600586 -616.95410156 251.87841797 C-582.62449764 225.46154946 -542.58988916 210.11181418 -498.89746094 214.61279297 C-493.72897602 215.39574562 -488.76997841 216.66631442 -483.8125 218.3125 C-482.86262207 218.62598389 -482.86262207 218.62598389 -481.89355469 218.94580078 C-467.15447643 223.9988746 -452.99532152 231.62631217 -440.8125 241.3125 C-439.92433594 241.99828125 -439.03617187 242.6840625 -438.12109375 243.390625 C-430.80404485 249.17765087 -424.2944334 255.62694566 -417.8125 262.3125 C-413.94686284 260.71916946 -411.47406903 258.20841231 -408.5 255.3125 C-386.01348077 234.13819144 -359.0270948 226.41888485 -328.71289062 227.17626953 C-307.28252699 228.18284722 -288.27881619 238.93620586 -273.8125 254.3125 C-273.8125 254.9725 -273.8125 255.6325 -273.8125 256.3125 C-272.81992187 255.80460938 -271.82734375 255.29671875 -270.8046875 254.7734375 C-234.4897253 236.30728598 -200.1400663 229.59553252 -159.8125 238.3125 C-160.2971875 237.54550781 -160.781875 236.77851563 -161.28125 235.98828125 C-183.7275879 198.82232561 -188.12680522 151.66513969 -177.90039062 109.92236328 C-172.73019143 89.97437965 -163.20568691 70.99028374 -149.8125 55.3125 C-148.99910156 54.34828125 -148.18570313 53.3840625 -147.34765625 52.390625 C-141.71109995 45.94375808 -135.64310068 40.46557188 -128.8125 35.3125 C-127.40291016 34.23742188 -127.40291016 34.23742188 -125.96484375 33.140625 C-105.71381022 18.40309866 -82.87219845 9.65969104 -58.5 4.4375 C-57.60756592 4.24623535 -56.71513184 4.0549707 -55.7956543 3.85791016 C-37.30992786 0.2062039 -18.78289093 -0.05510038 0 0 Z \"\n      fill=\"#461816\"\n      transform=\"translate(730.8125,-0.3125)\"\n    />\n    <path\n      d=\"M0 0 C1.34292618 -0.00009064 1.34292618 -0.00009064 2.71298218 -0.00018311 C19.23182773 0.01555593 35.63811177 0.72997246 52.10986328 1.92285156 C55.50859744 2.16174586 58.90674121 2.36655193 62.30859375 2.5546875 C142.04437069 7.20335166 221.42285318 21.87144393 299.875 36.1875 C300.64676575 36.32822937 301.41853149 36.46895874 302.21368408 36.61395264 C307.20659491 37.52555299 312.19764624 38.44682177 317.1875 39.375 C318.34088867 39.58866211 319.49427734 39.80232422 320.68261719 40.02246094 C329.24398588 41.63335325 337.76752007 43.40672577 346.29348755 45.19410706 C356.90260162 47.41335163 367.53185916 49.52724565 378.16311646 51.63735962 C400.68470039 56.1102973 423.17733496 60.71114334 445.65454102 65.40161133 C457.2594636 67.82214011 468.86939363 70.20611708 480.5 72.5 C489.17611533 74.21226532 497.81346423 76.04265529 506.4375 78 C519.66915767 81.00202234 532.9682502 83.63741691 546.27639771 86.27490234 C557.99571164 88.59802298 569.70028398 90.96147811 581.375 93.5 C589.51057799 95.26042464 597.64773164 97.00443013 605.8125 98.625 C606.66585937 98.80135986 607.51921875 98.97771973 608.3984375 99.15942383 C614.21521559 100.40509977 614.21521559 100.40509977 619.875 99.1875 C621.77382974 97.11416722 623.371026 95.14191681 625 92.875 C625.97143821 91.58435381 626.94678495 90.29664132 627.92578125 89.01171875 C628.41771973 88.36509277 628.9096582 87.7184668 629.41650391 87.05224609 C633.25031776 82.15056042 637.56960228 77.67269581 641.875 73.1875 C642.41527832 72.61999023 642.95555664 72.05248047 643.51220703 71.46777344 C681.24919873 32.01791229 734.05401973 11.32351986 788.25 9.984375 C831.92854347 9.46568204 880.89907775 15.47269963 915.875 44.1875 C916.37902344 44.58904297 916.88304687 44.99058594 917.40234375 45.40429688 C937.19855324 61.18904425 955.1126207 82.54854529 958.5625 108.5625 C958.68881844 110.10250989 958.79166646 111.64456697 958.875 113.1875 C958.92785156 114.06792969 958.98070312 114.94835937 959.03515625 115.85546875 C959.6040908 134.18505579 954.02947946 151.02417076 941.98046875 164.9609375 C913.34811925 195.2400455 865.59328179 204.97750822 825.47390747 206.26452637 C797.96305511 206.94457641 770.99873118 206.12019333 743.72229004 202.55517578 C738.1588915 201.83676393 732.59070716 201.15639149 727.0234375 200.46875 C719.75631692 199.56942468 712.48981061 198.66626556 705.22631836 197.73803711 C689.45916046 195.72584502 673.6781761 193.8940171 657.875 192.1875 C657.57415497 192.95843994 657.27330994 193.72937988 656.96334839 194.52368164 C655.79234234 197.38981113 654.37891544 199.95019437 652.8203125 202.625 C651.9077771 204.19761597 651.9077771 204.19761597 650.97680664 205.80200195 C650.32446045 206.91921631 649.67211426 208.03643066 649 209.1875 C648.31654152 210.36457535 647.6335229 211.54190621 646.95092773 212.71948242 C645.57277421 215.0967043 644.19345198 217.47324001 642.81298828 219.84912109 C629.65916215 242.50790398 617.03049802 265.4502458 604.59790039 288.51098633 C600.41423432 296.24737114 596.09874889 303.90378326 591.74707031 311.54663086 C587.88060253 318.35591022 584.13908127 325.22494325 580.4375 332.125 C573.87799717 344.32180798 566.93657853 356.27585688 559.875 368.1875 C559.10373779 369.49412598 559.10373779 369.49412598 558.31689453 370.82714844 C546.30608225 391.15915152 533.68184685 411.02317011 519.875 430.1875 C519.24368164 431.06390137 519.24368164 431.06390137 518.59960938 431.95800781 C508.58458569 445.76918613 497.68457043 458.88138141 485.875 471.1875 C485.02164063 472.08210938 484.16828125 472.97671875 483.2890625 473.8984375 C462.58491352 495.12508866 434.0474046 514.02240894 403.44458008 514.56787109 C375.82138182 514.51013139 346.18865006 505.42233223 326.30078125 485.625 C315.19531469 472.95458653 309.23582592 455.85761753 307.875 439.1875 C303.68144972 442.98951487 300.6004911 447.55523447 297.3125 452.125 C292.24668707 459.08644581 287.01678424 465.7889715 281.375 472.2890625 C279.03703709 474.99963825 276.79436138 477.76446791 274.5625 480.5625 C248.56668026 512.30427633 248.56668026 512.30427633 233.96484375 514.65625 C212.52025913 514.86883572 183.80144553 507.22497652 167.8359375 492.26953125 C154.08063324 477.66479585 147.68228752 460.03918715 141.875 441.1875 C139.60909922 440.95244676 139.60909922 440.95244676 137.73828125 443.3125 C136.89652344 444.26125 136.05476563 445.21 135.1875 446.1875 C134.7347168 446.69297363 134.28193359 447.19844727 133.81542969 447.71923828 C131.89651325 449.86796098 130.0032237 452.03456198 128.15234375 454.2421875 C99.68861738 488.16570793 55.80055875 510.30330413 11.875 514.1875 C5.62985209 514.54007923 -0.62194752 514.52897012 -6.875 514.5 C-7.71327332 514.49784485 -8.55154663 514.4956897 -9.41522217 514.49346924 C-21.53860377 514.44344312 -33.31338376 514.17174545 -45.125 511.1875 C-46.30787598 510.90543701 -46.30787598 510.90543701 -47.51464844 510.61767578 C-73.32953477 504.30212262 -95.16939784 491.14116624 -109.33789062 468.19238281 C-127.81169175 436.93304136 -126.00300197 397.77132437 -117.4375 363.75 C-107.77446012 327.59415087 -89.46961362 296.51000543 -64.125 269.1875 C-63.26068359 268.22457031 -63.26068359 268.22457031 -62.37890625 267.2421875 C-43.13830965 246.75887976 -12.86667617 229.3663136 15.58862305 228.06323242 C29.30765679 227.70966601 42.52437862 227.84984466 55.875 231.1875 C56.54144531 231.35378906 57.20789063 231.52007812 57.89453125 231.69140625 C78.53751265 237.01990049 95.62499819 247.6388393 106.875 266.1875 C113.7450024 278.84770943 116.45062677 290.89718769 116.375 305.25 C116.36927979 306.5191626 116.36355957 307.7883252 116.35766602 309.09594727 C115.95961775 330.22735113 109.02062825 347.66307573 95.875 364.1875 C95.35679687 364.87070312 94.83859375 365.55390625 94.3046875 366.2578125 C75.99995839 388.97775265 44.01150385 400.77580358 15.875 404.1875 C12.87735794 404.36646665 9.88098465 404.44080247 6.87890625 404.50390625 C6.04536118 404.52468735 5.2118161 404.54546844 4.35301208 404.56687927 C1.71458439 404.63177856 -0.92393491 404.69097978 -3.5625 404.75 C-5.36133724 404.79324206 -7.16016554 404.83685808 -8.95898438 404.88085938 C-13.3475646 404.98739799 -17.7362361 405.08882975 -22.125 405.1875 C-17.85114648 417.7885286 -12.26812741 427.78882182 -0.125 434.1875 C2.52875838 435.40626826 5.21412885 436.50916254 7.9375 437.5625 C8.58589844 437.81362549 9.23429688 438.06475098 9.90234375 438.32348633 C29.1342045 445.24338401 51.62635126 441.67622194 69.80078125 433.64453125 C86.50982382 425.72525186 101.41373826 415.93115772 114.875 403.1875 C116.22396373 402.0148213 117.57795411 400.84789366 118.9375 399.6875 C123.46307736 395.73907117 127.75595956 391.55797199 131.875 387.1875 C132.75671875 386.42308594 133.6384375 385.65867187 134.546875 384.87109375 C138.3648474 380.20060008 137.96090359 373.77380865 138.30459595 368.00436401 C138.53081042 364.27361726 138.8391469 360.54951314 139.140625 356.82421875 C139.19930252 356.0808577 139.25798004 355.33749664 139.31843567 354.5716095 C142.66159353 313.42188332 154.59798014 266.28749376 186.875 238.1875 C199.48037789 228.98357328 213.02910886 226.58266056 228.27734375 228.6484375 C237.67897384 230.7054222 245.1857197 234.95397623 250.65625 243.0078125 C259.17135328 258.23674721 253.87366225 275.50169665 250.0625 291.3125 C249.56453768 293.42878855 249.06764794 295.54532973 248.57177734 297.66210938 C244.96519836 312.97426691 241.14589544 328.23351426 237.29327393 343.48529053 C234.02246972 356.43705659 230.83145522 369.37726946 228.37792969 382.51416016 C228.02826084 384.37283681 227.66599851 386.22917044 227.29394531 388.08349609 C224.99876738 399.55002533 223.51205705 410.72678066 223.4375 422.4375 C223.4223938 423.93591431 223.4223938 423.93591431 223.40698242 425.46459961 C223.52071818 435.1321389 225.04749997 445.24090904 230.875 453.1875 C232.73759537 454.50801497 232.73759537 454.50801497 234.875 454.1875 C245.81093786 448.58396159 252.00321965 435.50095598 257.875 425.1875 C258.55457185 424.0103499 259.23425731 422.83326537 259.9140625 421.65625 C262.28195194 417.5260795 264.58298164 413.36014881 266.875 409.1875 C267.3714502 408.28628418 267.86790039 407.38506836 268.37939453 406.45654297 C276.9981661 390.75001696 285.15942056 374.82744471 293.1875 358.8125 C293.64522797 357.90222046 294.10295593 356.99194092 294.57455444 356.05407715 C300.12013561 345.01245005 305.45888356 333.90272808 310.50630188 322.62368774 C312.85984209 317.3687325 315.31383807 312.18799493 317.9375 307.0625 C320.51769923 302.01491238 322.88229444 296.92324474 325.12670898 291.71679688 C331.28446115 277.50886448 338.87733467 265.20527075 349.875 254.1875 C350.50792969 253.54296875 351.14085937 252.8984375 351.79296875 252.234375 C362.05270459 242.50349153 374.29706106 238.63752999 388.14453125 238.875 C397.83034296 239.6863769 407.6250789 242.45862046 414.875 249.1875 C421.92468784 257.53140699 423.83245305 266.13068236 423.11767578 276.92919922 C420.03300412 305.63464478 408.69068531 334.40915882 399.34277344 361.5925293 C396.80212079 369.00795119 394.62592591 376.48286593 392.625 384.0625 C392.3784668 384.98998047 392.13193359 385.91746094 391.87792969 386.87304688 C386.94289159 406.0534854 383.56425456 430.44664998 391.875 449.1875 C394.01905325 452.1969967 394.01905325 452.1969967 396.875 454.1875 C406.61523722 455.11054935 415.08803344 449.35231668 422.27734375 443.46484375 C426.06141174 440.16784409 429.10881199 436.49817003 432.125 432.5 C432.68582275 431.7579834 433.24664551 431.0159668 433.82446289 430.25146484 C439.94405227 421.97950397 444.9955036 413.23150652 449.875 404.1875 C450.39642578 403.23214355 450.91785156 402.27678711 451.45507812 401.29248047 C460.78022866 384.12022125 468.78479918 366.49623672 476.60868835 348.60740662 C480.94201324 338.71917229 485.41250155 328.89292658 489.875 319.0625 C491.41727721 315.66433908 492.95907209 312.26596051 494.5 308.8671875 C494.86777557 308.05613556 495.23555115 307.24508362 495.61447144 306.40945435 C498.120992 300.87384209 500.59711527 295.3253008 503.05859375 289.76953125 C516.10976833 260.32500451 529.66414381 230.90068946 545.41796875 202.79443359 C547.50561741 199.05919358 549.56192282 195.30694692 551.62011719 191.55541992 C553.70048242 187.76357966 555.78781501 183.97558886 557.875 180.1875 C557.15042603 180.15043442 556.42585205 180.11336884 555.67932129 180.07518005 C543.4592987 179.33197019 531.35754052 177.70888323 519.21875 176.16015625 C516.78387838 175.85226745 514.34896631 175.54469837 511.91401672 175.23742676 C506.08231663 174.50063698 500.25106837 173.76035111 494.42001671 173.01844847 C487.65767498 172.15827581 480.89472291 171.30294669 474.13176358 170.44764602 C450.10140811 167.4080441 426.07323333 164.35151277 402.05078125 161.25 C401.20878866 161.14131151 400.36679607 161.03262302 399.49928856 160.92064095 C396.23146217 160.49878344 392.96364937 160.0768208 389.69583797 159.65484715 C387.35972988 159.35319608 385.02361587 159.05159082 382.6875 158.75 C381.92026485 158.65092724 381.15302971 158.55185448 380.36254501 158.44977951 C347.65649946 154.22812871 314.91520092 150.33485729 282.15423584 146.56518555 C278.44519033 146.13799673 274.7364737 145.70801813 271.02780151 145.27760315 C264.22344494 144.48824114 257.41772235 143.71236467 250.61032104 142.94960022 C246.46680898 142.48395967 242.32458926 142.00826832 238.18310547 141.52490234 C192.57414577 136.20318366 146.90732418 132.03742616 101.0625 129.375 C99.99450165 129.31156403 98.9265033 129.24812805 97.82614136 129.18276978 C79.11283196 128.08809097 60.20296164 127.24109782 41.5 128.9375 C40.50871094 129.02620361 39.51742187 129.11490723 38.49609375 129.20629883 C13.1240664 131.70698619 -8.90447908 140.70426778 -25.48486328 160.83886719 C-27.3746797 163.20726058 -29.23279245 165.59906427 -31.08544922 167.99658203 C-39.36845892 178.71318397 -48.07046357 189.62436266 -62.125 192.1875 C-76.86679155 193.46017265 -90.09895317 190.3342233 -101.7890625 181.078125 C-104.32336546 178.85773872 -106.7386841 176.5656155 -109.125 174.1875 C-109.75148438 173.58421875 -110.37796875 172.9809375 -111.0234375 172.359375 C-122.08091383 160.85159421 -126.6102371 145.34868697 -130.125 130.1875 C-130.32077637 129.34324463 -130.51655273 128.49898926 -130.71826172 127.62915039 C-132.33888254 119.81012476 -132.51073405 112.09161877 -132.5 104.125 C-132.49945618 103.44252197 -132.49891235 102.76004395 -132.49835205 102.05688477 C-132.45802182 91.02898561 -131.62286498 80.70521814 -128.125 70.1875 C-127.91601074 69.53974609 -127.70702148 68.89199219 -127.49169922 68.22460938 C-119.36642891 43.80619405 -102.15122815 26.44685595 -79.60107422 14.7199707 C-54.81105738 2.38811537 -27.27734332 -0.02836302 0 0 Z \"\n      fill=\"#FEFEFE\"\n      transform=\"translate(729.125,47.8125)\"\n    />\n    <path\n      d=\"M0 0 C4.52912795 3.4436127 8.7765219 7.19203929 13 11 C13.66773438 11.58394531 14.33546875 12.16789062 15.0234375 12.76953125 C23.40240396 20.53876072 30.73429753 31.03216905 34 42 C34.19078125 42.59683594 34.3815625 43.19367188 34.578125 43.80859375 C39.29111742 68.28997107 27.69667778 92.05645791 17.20629883 113.32983398 C13.75564333 120.33037135 10.42676731 127.34930022 7.4375 134.5625 C7.12522461 135.3155542 6.81294922 136.0686084 6.49121094 136.84448242 C5.15527897 140.09889189 3.85851052 143.36466763 2.5859375 146.64453125 C-1.86342244 157.93171122 -1.86342244 157.93171122 -8 161 C-18.58290755 162.36481472 -26.19029967 157.39417176 -34.359375 151.1875 C-44.93464866 142.42691827 -51.75248041 130.46158625 -53.25 116.703125 C-54.4346566 92.26958266 -40.74258933 66.90351979 -30.35327148 45.63818359 C-27.12857949 39.13405073 -27.12857949 39.13405073 -27 32 C-27.66 31.01 -28.32 30.02 -29 29 C-44.79548673 30.41804868 -57.83380899 46.60888034 -67.65039062 57.89794922 C-70.46076166 61.26542198 -73.12251736 64.73183614 -75.72167969 68.26416016 C-77.04153014 70.05639406 -78.38250617 71.83133345 -79.7265625 73.60546875 C-90.32039857 87.69512142 -99.620201 102.50129083 -108 118 C-108.44907715 118.82048828 -108.8981543 119.64097656 -109.36083984 120.48632812 C-124.71192169 148.60293627 -135.80379399 180.74726768 -127.375 213.1875 C-126.30899728 216.23743319 -126.30899728 216.23743319 -125 219 C-124.36384766 220.40185547 -124.36384766 220.40185547 -123.71484375 221.83203125 C-119.53340318 229.78725105 -113.5599242 234.0372038 -105.125 236.875 C-84.28731061 241.75067106 -61.61517297 236.07219423 -42 229 C-41.27570801 228.74234863 -40.55141602 228.48469727 -39.80517578 228.21923828 C-22.40274711 221.90872864 -7.75051011 212.27795186 6 200 C7.23206177 199.16202881 7.23206177 199.16202881 8.48901367 198.30712891 C11.59098576 195.45699413 12.63398936 192.58229693 13.875 188.67578125 C14.12097427 187.95000885 14.36694855 187.22423645 14.62037659 186.47647095 C15.14993289 184.91086494 15.67258198 183.34290892 16.18899536 181.7729187 C17.57686405 177.56241494 19.02299324 173.37194974 20.46484375 169.1796875 C20.75801987 168.32388596 21.05119598 167.46808441 21.35325623 166.58634949 C24.21213131 158.2858653 27.32344358 150.09625532 30.5625 141.9375 C30.83018188 141.26285706 31.09786377 140.58821411 31.37365723 139.89312744 C36.97823679 125.81334028 42.9030878 111.87354123 49 98 C49.41765625 97.04754395 49.8353125 96.09508789 50.265625 95.11376953 C54.86196342 84.66568046 59.65039978 74.33988936 64.87402344 64.18994141 C65.68323671 62.61608125 66.48805619 61.03995912 67.29003906 59.46240234 C80.27470223 33.94066389 95.07115936 9.18996883 123.46875 -0.875 C133.79472414 -3.56873238 145.78427472 -2.96356741 155.21875 2.21875 C163.75099382 8.12568803 170.01836469 16.77893364 172 27 C173.63020034 41.0702186 171.15437359 53.39849649 166.72753906 66.70947266 C165.64946374 70.10360108 164.82125814 73.53556638 164 77 C164.59941406 76.25621094 165.19882812 75.51242187 165.81640625 74.74609375 C179.53307737 58.0878948 195.22477576 41.35301562 213 29 C213.55381348 28.61247559 214.10762695 28.22495117 214.67822266 27.82568359 C228.45039506 18.28507483 242.84414729 11.41820855 259 7 C259.66257812 6.80664062 260.32515625 6.61328125 261.0078125 6.4140625 C279.72663849 2.52348298 300.61815653 5.50800565 316.9375 15.375 C327.44329332 22.5380409 335.26932394 32.35054474 338 45 C340.97829886 63.81292116 335.15820133 80.88113743 327.4375 97.8125 C319.19056855 114.38976132 319.19056855 114.38976132 318.8125 132.375 C322.87546387 137.25055664 328.87873824 139.89468195 335.125 140.8125 C336.07375 140.874375 337.0225 140.93625 338 141 C339.94809123 145.96643011 337.34354163 150.03732658 335.44921875 154.6875 C328.06812782 171.55856498 316.13033134 184.33048774 298.9921875 191.4921875 C279.29508573 199.16450298 255.71941148 200.29519159 236 192.0625 C224.92657138 186.64882379 217.22168571 178.5749505 213 167 C205.60705033 138.73283951 223.04660123 110.76916304 236.63061523 87.52929688 C239.04157687 83.07617466 240.29129066 79.52067147 240.3125 74.4375 C240.32925781 73.50808594 240.34601563 72.57867187 240.36328125 71.62109375 C239.93387852 68.52292994 239.20192888 67.20192888 237 65 C233.05030526 63.27200855 229.31814594 63.52416275 225.31640625 64.96875 C218.23408863 68.58525261 212.72503392 73.56121778 207 79 C205.60963624 80.19389931 204.21415402 81.38187604 202.8125 82.5625 C199.61914485 85.35668576 196.81982369 88.30849298 194.08203125 91.546875 C192.47769323 93.43716445 190.85231138 95.29372908 189.19921875 97.140625 C180.86845835 106.50296173 173.31004082 116.33724948 165.890625 126.43164062 C164.00923203 128.98745855 162.11566812 131.5338147 160.21875 134.078125 C154.34154183 141.97659524 148.54024809 149.88969952 143.1953125 158.16210938 C141.73750611 160.4036058 140.25895879 162.63094948 138.78125 164.859375 C121.34286254 191.24798257 103.52605519 218.35866186 91.60107422 247.74414062 C87.38537488 258.09975483 81.84231511 266.00527241 74 274 C73.43539063 274.58910156 72.87078125 275.17820312 72.2890625 275.78515625 C62.03345504 285.56550385 48.71221063 286.46286625 35.3671875 286.27734375 C24.26199336 285.88669901 15.40166529 282.33600719 7.4765625 274.4921875 C4.52550966 271.2340887 3.27720824 268.14229699 2 264 C1.030625 264.6290625 0.06125 265.258125 -0.9375 265.90625 C-10.34150756 271.93865193 -19.87426533 277.28075437 -30 282 C-31.13824219 282.53367187 -32.27648437 283.06734375 -33.44921875 283.6171875 C-68.9931825 299.55211201 -110.51750897 304.29067147 -147.578125 290.78515625 C-169.0911833 282.41844317 -186.95518038 266.90408408 -197 246 C-197.65935547 244.67548828 -197.65935547 244.67548828 -198.33203125 243.32421875 C-206.10431745 227.09869075 -208.40616649 210.77390948 -208.3125 192.9375 C-208.31067719 192.21488983 -208.30885437 191.49227966 -208.30697632 190.74777222 C-208.25708518 178.96387447 -207.60346841 167.52342267 -205 156 C-204.83371094 155.25862793 -204.66742188 154.51725586 -204.49609375 153.75341797 C-200.42876624 136.34299658 -193.36352086 119.85963905 -185.07714844 104.06884766 C-183.92831757 101.86232163 -182.81098981 99.64142724 -181.6953125 97.41796875 C-173.67369643 81.59526215 -164.00605698 66.91150209 -153 53 C-152.24203125 52.03707031 -151.4840625 51.07414062 -150.703125 50.08203125 C-138.59022083 35.24184276 -124.86108842 20.83739758 -109 10 C-108.45746582 9.62375488 -107.91493164 9.24750977 -107.35595703 8.85986328 C-73.80001077 -14.26117887 -35.93543631 -24.29053543 0 0 Z \"\n      fill=\"#FEFEFE\"\n      transform=\"translate(257,277)\"\n    />\n    <path\n      d=\"M0 0 C1.13904785 0.00491455 2.2780957 0.0098291 3.45166016 0.01489258 C20.74095178 0.25396589 38.2794393 3.20081891 50.95703125 15.96875 C54.63348167 20.06403654 57.5320124 24.57582865 60.3125 29.3125 C61.01375 28.78140625 61.715 28.2503125 62.4375 27.703125 C67.82577183 23.69120521 73.05840068 19.84421956 79.3125 17.3125 C80.18777344 16.95671875 81.06304688 16.6009375 81.96484375 16.234375 C91.29680442 13.66454686 103.71332098 13.77415039 112.4375 18.12109375 C117.99661528 21.65344825 121.00305438 26.26718645 123.3125 32.3125 C123.82147868 35.19380277 123.83940112 37.95584499 123.75 40.875 C123.72691772 42.05715088 123.72691772 42.05715088 123.70336914 43.26318359 C122.86630519 69.11568203 111.49401828 95.12701555 103.07104492 119.25170898 C94.52752407 143.77415328 86.24449468 168.733311 85.9375 194.9375 C85.92348145 195.74276123 85.90946289 196.54802246 85.89501953 197.37768555 C85.9417683 203.14396582 87.21153537 207.95719381 89.3125 213.3125 C95.4803165 213.73786666 98.32418724 213.30315021 103.3125 209.3125 C104.11171875 208.70277344 104.9109375 208.09304688 105.734375 207.46484375 C120.7771055 194.90644298 131.4587579 174.35669814 141.63647461 157.94360352 C142.7486424 156.19767019 143.90342904 154.47812853 145.09985352 152.78881836 C150.11558216 145.54538996 152.56344992 138.26761445 154.9692688 129.89602661 C156.09564666 125.99498594 157.28762725 122.11431391 158.484375 118.234375 C158.72160782 117.46468887 158.95884064 116.69500275 159.20326233 115.9019928 C162.48562727 105.3890229 166.70049898 95.30577941 171.3125 85.3125 C171.71823242 84.43078125 172.12396484 83.5490625 172.54199219 82.640625 C180.16486609 66.29466859 189.21995805 50.78401604 201.3125 37.3125 C202.06789063 36.46300781 202.82328125 35.61351562 203.6015625 34.73828125 C214.28561421 23.37560085 227.86507112 14.47135838 243.875 13.875 C253.77557615 14.32175089 262.73946216 16.72025899 270.3125 23.3125 C276.50847421 30.77944328 276.99100535 38.98852321 276.3125 48.3125 C273.57780456 69.09618533 265.72376488 89.21992069 258.9375 108.9375 C242.51036512 156.69803154 224.90662595 208.94820905 226.51953125 260.05078125 C226.54073532 260.88177841 226.56193939 261.71277557 226.58378601 262.56895447 C226.69112851 266.66773709 226.85500505 270.74832017 227.12573242 274.83959961 C227.62272223 285.61796297 227.62272223 285.61796297 224.06103516 290.22436523 C221.25797827 292.55340031 218.445371 294.45763804 215.3125 296.3125 C214.12709381 297.16002672 212.94615644 298.01390933 211.7734375 298.87890625 C205.50871257 302.93115237 199.17623057 306.53738377 192.4375 309.75 C191.74833496 310.08008057 191.05916992 310.41016113 190.34912109 310.75024414 C179.97060534 315.52486095 167.92993787 317.44768119 156.6796875 314.66015625 C154.64129307 313.72888977 153.05796954 312.71391064 151.3125 311.3125 C150.714375 310.86132812 150.11625 310.41015625 149.5 309.9453125 C138.3585356 300.29257826 135.94585142 284.36660272 134.9140625 270.41015625 C134.27282125 260.05172038 134.18208905 249.68741551 134.3125 239.3125 C133.81363281 239.95574219 133.31476563 240.59898437 132.80078125 241.26171875 C115.7477381 262.7234481 93.85682725 281.79800067 65.82958984 286.03125 C45.97519734 288.24970394 27.32650771 286.749899 10.87890625 274.5 C-1.74864356 263.93800218 -10.07094853 247.49635536 -12.6875 231.3125 C-12.86731013 228.90958275 -12.85176377 226.72170195 -12.6875 224.3125 C-13.3475 224.3125 -14.0075 224.3125 -14.6875 224.3125 C-14.93266357 224.88145996 -15.17782715 225.45041992 -15.43041992 226.03662109 C-18.00264456 230.69350168 -22.25336149 234.21469723 -26 237.9375 C-26.9077417 238.83960205 -27.8154834 239.7417041 -28.75073242 240.67114258 C-46.63250289 258.23214956 -68.43224985 273.92698879 -94.375 274.625 C-111.05670979 274.33519831 -127.15404388 269.63117499 -139.6875 258.3125 C-156.76978137 239.10222113 -157.96690049 215.45128363 -156.55419922 191.00585938 C-152.36664687 136.12334047 -113.89320389 65.34210036 -73.04296875 28.95703125 C-70.30565673 26.67147142 -67.52408083 24.47331907 -64.6875 22.3125 C-63.50220703 21.40371094 -63.50220703 21.40371094 -62.29296875 20.4765625 C-43.75547706 6.88855035 -23.00411775 -0.11787347 0 0 Z \"\n      fill=\"#CC3F54\"\n      transform=\"translate(1475.6875,275.6875)\"\n    />\n    <path\n      d=\"M0 0 C1.29195282 0.00182281 2.58390564 0.00364563 3.91500854 0.00552368 C28.44466527 0.06336198 52.75720004 1.17052794 77.1875 3.3125 C78.14779114 3.395 79.10808228 3.4775 80.09747314 3.5625 C162.75674065 10.67724112 244.77476948 24.60656275 326.1875 40.3125 C327.42462234 40.5508683 327.42462234 40.5508683 328.68673706 40.79405212 C392.75627044 53.14070168 456.64332972 66.34761292 520.50215197 79.73350489 C522.8103573 80.21725859 525.11861427 80.70076509 527.42689133 81.18417645 C528.17686606 81.34124563 528.9268408 81.49831482 529.69954205 81.66014367 C531.19345428 81.97301537 532.68736918 82.28587435 534.18128681 82.59872025 C537.73611766 83.34334518 541.29074231 84.08892686 544.84488297 84.83683968 C546.18533291 85.1188657 547.5257857 85.40087819 548.86624146 85.68287659 C549.8440098 85.88861387 549.8440098 85.88861387 550.84153104 86.09850746 C555.22339309 87.01904766 559.6084231 87.92327295 563.99478149 88.82211304 C568.87722425 89.82296796 573.74432595 90.87725216 578.60848999 91.96328735 C580.95572685 92.46586605 583.30310238 92.96779766 585.65063477 93.46899414 C587.24624379 93.84245295 587.24624379 93.84245295 588.87408733 94.22345638 C595.26923801 95.57579208 595.26923801 95.57579208 601.28048706 93.53863525 C604.58771139 90.89919861 606.91616231 88.16705294 609.4375 84.8125 C610.3743232 83.7114717 611.32101423 82.61876777 612.27709961 81.53442383 C614.13232578 79.42320585 615.95132445 77.28898838 617.74755859 75.12744141 C620.78842848 71.61921349 624.02248383 68.74670314 627.75 66 C628.29438721 65.59281738 628.83877441 65.18563477 629.3996582 64.76611328 C630.98427502 63.59936187 632.58581947 62.45571424 634.1875 61.3125 C635.33195404 60.46388898 636.47515401 59.61358447 637.6171875 58.76171875 C645.81164262 52.70907418 654.34457522 47.36126903 663.1875 42.3125 C664.321875 41.65636719 665.45625 41.00023437 666.625 40.32421875 C691.14862939 26.48815866 718.45873383 17.78722058 746.1875 13.3125 C747.0734082 13.16296875 747.95931641 13.0134375 748.87207031 12.859375 C810.48495664 2.85994189 882.91456827 11.15742334 935.171875 47.13671875 C950.37650242 58.10689682 964.94427179 70.19158907 976.1875 85.3125 C976.63029297 85.90691895 977.07308594 86.50133789 977.52929688 87.11376953 C978.9468329 89.02666537 980.35176233 90.94795904 981.75 92.875 C982.19255127 93.4834375 982.63510254 94.091875 983.09106445 94.71875 C986.1875 99.07189788 986.1875 99.07189788 986.1875 101.3125 C986.76193848 101.135979 987.33637695 100.95945801 987.92822266 100.77758789 C990.55512803 99.97279046 993.18378101 99.17385271 995.8125 98.375 C996.71613281 98.09720703 997.61976562 97.81941406 998.55078125 97.53320312 C999.87529297 97.13198242 999.87529297 97.13198242 1001.2265625 96.72265625 C1002.03303223 96.47652588 1002.83950195 96.23039551 1003.67041016 95.97680664 C1021.37884927 91.3032215 1042.77294738 92.9872214 1060.1875 98.3125 C1060.89148926 98.52680664 1061.59547852 98.74111328 1062.32080078 98.96191406 C1084.12317859 105.85955788 1103.54743981 120.15462132 1114.51171875 140.4609375 C1127.03464323 165.15382917 1128.03927933 191.38439299 1120.125 217.625 C1110.37135065 245.23131111 1090.37246577 271.79168406 1067.734375 290.3203125 C1065.87682899 292.23956863 1065.87682899 292.23956863 1066.453125 294.921875 C1066.77796875 295.95828125 1067.1028125 296.9946875 1067.4375 298.0625 C1076.1432187 333.17800398 1060.45054416 370.09988153 1049.1875 402.8125 C1036.87725477 438.56988551 1026.13155656 474.70398462 1021.1875 512.3125 C1021.0836499 513.07159668 1020.9797998 513.83069336 1020.87280273 514.61279297 C1019.9632795 522.21986127 1020.00070622 529.86119779 1020.00109863 537.51104736 C1020.00035921 539.14415257 1019.99514984 540.77726121 1019.98571777 542.41033936 C1019.93334271 551.7132893 1020.20911393 560.69226333 1021.5168457 569.92163086 C1023.12001362 581.41549813 1023.12001362 581.41549813 1021.23339844 585.25341797 C1018.66086337 588.63047243 1015.57880139 590.87760459 1011.97241211 593.11669922 C1009.17787449 594.988898 1006.75659085 597.25448742 1004.25 599.48999023 C976.81874908 623.72937093 942.87375621 641.96694084 905.51660156 640.46484375 C885.65974929 639.16603077 869.02901672 630.04970776 855.421875 615.88671875 C851.98764891 611.93015407 849.0172876 607.71647409 846.1875 603.3125 C841.31885449 604.35578118 836.50532487 605.49297047 831.69555664 606.78320312 C800.08982724 615.1140507 765.61025247 612.99238468 736.93359375 596.43359375 C732.71309028 593.70980077 728.7322819 590.81743677 724.921875 587.546875 C724.38079102 587.0825708 723.83970703 586.6182666 723.28222656 586.13989258 C721.76595065 584.81837409 720.27287586 583.47037359 718.78125 582.12109375 C716.44001566 580.04925807 716.44001566 580.04925807 714.23999023 580.5949707 C710.92030637 581.75549775 707.86289569 583.44332192 704.75 585.0625 C674.88599085 600.16288532 641.99822363 602.88140675 610 592.625 C582.65713561 583.25275103 562.82538309 563.81625338 550.04931641 538.14453125 C548.09463663 533.98931396 546.56978327 529.68669903 545.1875 525.3125 C541.6202081 527.9988259 538.86867276 530.73450407 536.125 534.25 C524.60723048 548.59468476 511.67609218 561.97360177 497.1875 573.3125 C496.14557539 574.1455108 495.10391637 574.97885389 494.0625 575.8125 C486.77950225 581.58886066 479.2589614 586.67351407 471.1875 591.3125 C470.60242676 591.65023437 470.01735352 591.98796875 469.41455078 592.3359375 C435.2616975 611.86758807 396.93045915 615.78205387 359.0625 605.5625 C338.21706381 599.67929967 318.55331675 592.25659937 301.82421875 578.18359375 C299.18267512 575.92668594 299.18267512 575.92668594 295.1875 576.3125 C293.49738471 577.51668809 293.49738471 577.51668809 292.0078125 579.2421875 C291.41589111 579.86810791 290.82396973 580.49402832 290.21411133 581.13891602 C289.58657959 581.81494873 288.95904785 582.49098145 288.3125 583.1875 C273.08065705 598.974176 254.55721784 610.83173939 232.0625 611.5625 C195.56826202 611.15296366 157.14066176 597.97177566 130.1875 573.3125 C128.25 570.9375 128.25 570.9375 127.1875 569.3125 C122.75582986 570.2263397 119.55850446 572.61391125 115.875 575.125 C65.51596954 608.35010575 3.21046538 618.78071709 -55.82836914 607.1809082 C-78.74530259 602.25648421 -101.57993229 593.33723249 -119.8125 578.3125 C-120.34891113 577.88388672 -120.88532227 577.45527344 -121.43798828 577.01367188 C-139.14643932 562.83113075 -160.48067666 539.7721876 -163.8125 516.3125 C-164.68390625 516.57804688 -165.5553125 516.84359375 -166.453125 517.1171875 C-167.64421875 517.47039063 -168.8353125 517.82359375 -170.0625 518.1875 C-171.22265625 518.53554688 -172.3828125 518.88359375 -173.578125 519.2421875 C-183.91296946 521.99031946 -194.09467143 522.65922945 -204.73754883 522.62817383 C-206.97983175 522.62502829 -209.22077089 522.64851427 -211.46289062 522.67382812 C-239.33359732 522.79648892 -265.84530267 514.3312582 -286 494.5 C-291.25792444 489.20652616 -295.65896953 483.51836317 -299.8125 477.3125 C-320.91143244 509.99317834 -320.91143244 509.99317834 -337.8125 544.9375 C-343.0208897 557.72726372 -349.84737112 568.76998764 -358.8125 579.3125 C-359.575625 580.323125 -360.33875 581.33375 -361.125 582.375 C-377.61982832 600.40423096 -401.6040005 610.92329319 -425.83032227 612.4387207 C-441.96467034 613.04906292 -457.36866948 611.05284397 -472.515625 605.3984375 C-480.21899536 602.86107143 -484.2353236 603.43060621 -491.3125 606.8125 C-537.35999578 627.41544707 -591.34643269 630.78040647 -638.9375 613.5625 C-674.48780291 599.98802136 -702.20291477 573.15009849 -718 538.6875 C-722.30966604 528.86451028 -725.3554911 518.74233342 -727.8125 508.3125 C-727.99184082 507.55936523 -728.17118164 506.80623047 -728.35595703 506.03027344 C-741.93334361 445.43764654 -718.17438422 380.58304029 -686.25537109 329.83691406 C-668.12087723 301.60241186 -645.81524962 273.58237406 -618.8125 253.3125 C-618.19922852 252.83925293 -617.58595703 252.36600586 -616.95410156 251.87841797 C-582.62449764 225.46154946 -542.58988916 210.11181418 -498.89746094 214.61279297 C-493.72897602 215.39574562 -488.76997841 216.66631442 -483.8125 218.3125 C-482.86262207 218.62598389 -482.86262207 218.62598389 -481.89355469 218.94580078 C-467.15447643 223.9988746 -452.99532152 231.62631217 -440.8125 241.3125 C-439.92433594 241.99828125 -439.03617187 242.6840625 -438.12109375 243.390625 C-430.80404485 249.17765087 -424.2944334 255.62694566 -417.8125 262.3125 C-413.94686284 260.71916946 -411.47406903 258.20841231 -408.5 255.3125 C-386.01348077 234.13819144 -359.0270948 226.41888485 -328.71289062 227.17626953 C-307.28252699 228.18284722 -288.27881619 238.93620586 -273.8125 254.3125 C-273.8125 254.9725 -273.8125 255.6325 -273.8125 256.3125 C-272.81992187 255.80460938 -271.82734375 255.29671875 -270.8046875 254.7734375 C-234.4897253 236.30728598 -200.1400663 229.59553252 -159.8125 238.3125 C-160.2971875 237.54550781 -160.781875 236.77851563 -161.28125 235.98828125 C-183.7275879 198.82232561 -188.12680522 151.66513969 -177.90039062 109.92236328 C-172.73019143 89.97437965 -163.20568691 70.99028374 -149.8125 55.3125 C-148.99910156 54.34828125 -148.18570313 53.3840625 -147.34765625 52.390625 C-141.71109995 45.94375808 -135.64310068 40.46557188 -128.8125 35.3125 C-127.40291016 34.23742188 -127.40291016 34.23742188 -125.96484375 33.140625 C-105.71381022 18.40309866 -82.87219845 9.65969104 -58.5 4.4375 C-57.60756592 4.24623535 -56.71513184 4.0549707 -55.7956543 3.85791016 C-37.30992786 0.2062039 -18.78289093 -0.05510038 0 0 Z M-122.8125 50.3125 C-123.68003906 51.02921875 -124.54757812 51.7459375 -125.44140625 52.484375 C-151.49339147 74.82629659 -165.14647388 107.54913843 -167.8125 141.3125 C-169.91671306 178.45915227 -160.31842703 215.91893284 -136.20703125 244.671875 C-131.42724279 249.94289784 -126.29408739 254.87079035 -120.1875 258.5625 C-114.83498034 262.12658827 -111.90664821 268.82340072 -108.8125 274.3125 C-120.02075053 273.13998335 -131.50479935 270.65423622 -140.6796875 263.8515625 C-161.23407108 249.01927838 -191.76639323 246.49535961 -216.02246094 250.390625 C-238.46381414 254.56732713 -259.01029343 264.55235082 -277.8125 277.3125 C-278.07675781 276.57773437 -278.34101563 275.84296875 -278.61328125 275.0859375 C-284.92937963 260.47867414 -299.5506475 251.26045234 -313.59765625 245.35546875 C-330.19372402 239.97132526 -348.39650335 240.80414232 -364.8125 246.3125 C-365.84246094 246.65152344 -366.87242187 246.99054688 -367.93359375 247.33984375 C-387.14490178 254.50900385 -406.24964045 270.860819 -416.8125 288.3125 C-417.6478125 287.26255859 -417.6478125 287.26255859 -418.5 286.19140625 C-437.23080711 262.872817 -458.5816433 242.50416823 -487.8125 233.3125 C-488.7408667 233.02052734 -488.7408667 233.02052734 -489.68798828 232.72265625 C-520.76902994 223.3036924 -553.45712799 232.09942302 -581.34765625 246.8359375 C-587.10242757 249.97622229 -592.51553263 253.44075982 -597.8125 257.3125 C-598.78058594 258.00859375 -599.74867188 258.7046875 -600.74609375 259.421875 C-612.54733699 268.07714313 -623.19196982 277.51001197 -633.5625 287.8125 C-634.43769287 288.67842773 -635.31288574 289.54435547 -636.21459961 290.43652344 C-652.66183944 306.9630683 -666.11132108 326.21477105 -677.8125 346.3125 C-678.38145996 347.2710791 -678.38145996 347.2710791 -678.96191406 348.24902344 C-693.32354947 372.45502214 -704.33135195 397.92701867 -710.8125 425.3125 C-711.11027344 426.570625 -711.40804687 427.82875 -711.71484375 429.125 C-712.47461239 432.51182937 -713.16081407 435.903368 -713.8125 439.3125 C-714.121875 440.79169922 -714.121875 440.79169922 -714.4375 442.30078125 C-721.11671651 479.54668997 -713.62739445 521.05643988 -692.6328125 552.5859375 C-670.64517127 583.02434475 -639.68533525 601.09016401 -602.8125 607.3125 C-594.58373706 608.55168615 -586.28554494 608.49868782 -577.98339844 608.49780273 C-575.71269589 608.49997589 -573.44249126 608.51815475 -571.171875 608.53710938 C-541.92946499 608.65036595 -511.78436023 601.67737958 -486.06225586 587.52441406 C-482.86005304 585.84741014 -481.22989261 585.22789339 -477.6328125 585.95703125 C-475.18303531 587.13441724 -472.80135784 588.3476961 -470.4375 589.6875 C-465.96349612 591.97873229 -461.54043297 593.36025262 -456.6875 594.5625 C-456.03088379 594.72540527 -455.37426758 594.88831055 -454.69775391 595.05615234 C-433.26654541 600.09154989 -409.98216883 597.69930775 -390.8046875 586.56640625 C-369.87098739 573.26199582 -358.62863144 555.08001895 -349.0234375 532.90039062 C-337.709543 506.84623927 -322.07135928 483.19145492 -306.5625 459.5 C-306.03860687 458.69809235 -305.51471375 457.89618469 -304.97494507 457.06997681 C-303.48204232 454.78751455 -301.98412218 452.50843788 -300.484375 450.23046875 C-300.02768936 449.5315451 -299.57100372 448.83262146 -299.10047913 448.11251831 C-298.03102506 446.49465296 -296.9257041 444.90057963 -295.8125 443.3125 C-295.4825 443.3125 -295.1525 443.3125 -294.8125 443.3125 C-294.60496094 444.30507813 -294.39742188 445.29765625 -294.18359375 446.3203125 C-289.7052536 466.54176001 -279.8132177 482.90052726 -262.14892578 494.39501953 C-238.53195407 509.03210365 -206.58109457 511.14706997 -179.76171875 505.44140625 C-171.31853763 503.1740335 -162.64273632 500.22761816 -154.8125 496.3125 C-154.6580542 496.8386792 -154.5036084 497.3648584 -154.34448242 497.90698242 C-148.9148583 516.05340935 -141.81520653 534.18481081 -128.8125 548.3125 C-127.80509766 549.51132813 -127.80509766 549.51132813 -126.77734375 550.734375 C-110.11338793 570.21094043 -87.81912849 582.42372328 -63.4375 589.625 C-62.67356934 589.85533936 -61.90963867 590.08567871 -61.12255859 590.32299805 C-44.34004293 594.98290789 -27.31698465 595.83008103 -10 595.6875 C-8.9905835 595.68284729 -7.98116699 595.67819458 -6.94116211 595.67340088 C39.98564549 595.41983785 82.65058202 582.1065544 119.96166992 553.24682617 C120.5879126 552.76318604 121.21415527 552.2795459 121.859375 551.78125 C122.4069043 551.35263672 122.95443359 550.92402344 123.51855469 550.48242188 C125.33035639 549.21235842 127.18887637 548.25571965 129.1875 547.3125 C129.58839844 547.84617187 129.98929688 548.37984375 130.40234375 548.9296875 C150.91958254 575.82076238 180.15720786 590.22527821 213.57373047 595.03125 C218.7718273 595.59058192 223.96242695 595.74779798 229.1875 595.8125 C230.72748657 595.84053711 230.72748657 595.84053711 232.29858398 595.86914062 C249.15097751 595.72716825 262.3551933 586.53698272 274.1875 575.3125 C275.43330486 574.26581968 276.68315436 573.22392966 277.9375 572.1875 C282.82002783 567.96803151 287.09780349 563.13995064 291.44042969 558.37841797 C292.02469727 557.74049316 292.60896484 557.10256836 293.2109375 556.4453125 C293.73606934 555.86668457 294.26120117 555.28805664 294.80224609 554.69189453 C296.1875 553.3125 296.1875 553.3125 298.1875 552.3125 C298.45820312 552.90675781 298.72890625 553.50101563 299.0078125 554.11328125 C309.05235916 572.83871095 337.61633607 583.17122447 356.60644531 589.06298828 C370.52857649 593.2498187 383.56716661 595.70725478 398.1875 595.6875 C398.86903137 595.68695618 399.55056274 595.68641235 400.25274658 595.68585205 C411.63015416 595.64423267 422.26671075 594.63301025 433.1875 591.3125 C434.25581055 590.99901611 434.25581055 590.99901611 435.34570312 590.67919922 C453.49647567 585.22661566 469.18711592 575.73407338 484.1875 564.3125 C484.7326123 563.89871094 485.27772461 563.48492188 485.83935547 563.05859375 C493.95455446 556.78787575 501.17153565 549.52681452 508.4375 542.3125 C509.36071045 541.39871582 510.2839209 540.48493164 511.23510742 539.54345703 C517.31117903 533.43845954 522.83293638 527.05425626 528.1875 520.3125 C529.18886223 519.09295875 530.19241849 517.87521198 531.19921875 516.66015625 C539.42569003 506.60240877 546.84640163 496.02781865 554.1875 485.3125 C554.29964844 487.22095703 554.29964844 487.22095703 554.4140625 489.16796875 C556.01618988 512.03888581 561.77142206 534.69412522 577.1875 552.3125 C577.70570312 552.9725 578.22390625 553.6325 578.7578125 554.3125 C592.96033476 571.87697198 616.2207641 580.96311648 638.1875 583.3125 C669.05214396 585.01473732 694.09796634 575.87984573 719.1875 558.3125 C719.58775391 559.18648437 719.58775391 559.18648437 719.99609375 560.078125 C728.63541604 576.28039499 748.23635598 587.08664864 765.1875 592.3125 C775.19162861 595.26392989 784.84535012 595.87603787 795.1875 595.8125 C795.95518707 595.81073761 796.72287415 595.80897522 797.51382446 595.80715942 C815.38399323 595.71590809 830.87173548 592.51806844 847.03515625 584.765625 C849.48319483 583.63716112 851.56061404 582.81036367 854.1875 582.3125 C854.538125 583.570625 854.88875 584.82875 855.25 586.125 C859.80715203 599.5444477 870.13939879 611.21869821 882.5078125 618.03515625 C902.61441248 627.61949764 920.79535349 626.81327192 941.546875 620.25 C961.66251582 613.04439732 979.74473445 600.94101064 995.1875 586.3125 C997.27935932 584.46864462 999.38641947 582.6437053 1001.49609375 580.8203125 C1002.33333984 580.07394531 1002.33333984 580.07394531 1003.1875 579.3125 C1003.72036621 578.90338379 1004.25323242 578.49426758 1004.80224609 578.07275391 C1006.81437532 575.5159242 1006.35470548 573.83624202 1006.04296875 570.640625 C1005.94306641 569.49980469 1005.84316406 568.35898437 1005.74023438 567.18359375 C1005.61970703 565.98863281 1005.49917969 564.79367187 1005.375 563.5625 C1000.17258243 508.70623903 1015.27927709 454.87153056 1032.76925659 403.44589233 C1044.52064924 369.813781 1044.52064924 369.813781 1053.1875 335.3125 C1053.48333984 333.87003906 1053.48333984 333.87003906 1053.78515625 332.3984375 C1055.60894229 318.4101756 1054.82295852 304.40144535 1048.89453125 291.5390625 C1048.05214703 288.8862503 1048.02415925 287.83730502 1049.1875 285.3125 C1051.09375 283.55078125 1051.09375 283.55078125 1053.6875 281.625 C1080.71363538 260.23665036 1105.42189958 228.31962088 1110.1875 193.3125 C1111.38012554 170.92783595 1105.65607837 151.50735125 1091.0625 134.1875 C1076.20020151 118.31758805 1054.4680818 109.96452154 1032.9921875 108.8984375 C1014.20636519 108.43077109 997.5413832 111.67210077 981.1875 121.3125 C980.58164063 120.23613281 979.97578125 119.15976563 979.3515625 118.05078125 C956.76197812 78.45181835 919.9911522 47.96253228 875.63061523 35.82836914 C870.83355626 34.58005939 866.01492415 33.43654104 861.1875 32.3125 C860.38376953 32.11672363 859.58003906 31.92094727 858.75195312 31.71923828 C823.10028944 23.04864463 783.3455556 22.0381047 747.1875 28.3125 C746.22473145 28.47878906 745.26196289 28.64507812 744.27001953 28.81640625 C707.00810111 35.54036145 670.84234786 51.69132248 641.1875 75.3125 C640.32511719 75.9828125 639.46273438 76.653125 638.57421875 77.34375 C632.79034257 81.93657612 627.34187488 86.8449272 621.9375 91.875 C621.27588867 92.48811035 620.61427734 93.1012207 619.93261719 93.73291016 C612.12248694 100.97755338 612.12248694 100.97755338 605.92480469 109.54907227 C604.1875 111.3125 604.1875 111.3125 601.05200195 111.66577148 C596.72986974 111.27066596 592.59665249 110.560251 588.35546875 109.66015625 C587.07703094 109.39728569 587.07703094 109.39728569 585.77276611 109.12910461 C582.97205115 108.55121159 580.17355765 107.96324375 577.375 107.375 C575.4031735 106.96583928 573.43124801 106.55715531 571.45922852 106.14892578 C557.29210063 103.20761788 543.14423998 100.17587236 529.00128174 97.12072754 C516.21088859 94.35799546 503.40079454 91.72448904 490.56259155 89.19381714 C481.15771779 87.33812495 471.78657106 85.37202042 462.4375 83.25 C451.64673844 80.80138959 440.81655277 78.62901245 429.94433594 76.57983398 C419.05805375 74.52028714 408.21913745 72.25116142 397.3755188 69.97927856 C364.85647156 63.17787462 332.29236052 56.72112865 299.59521484 50.8339386 C293.51621337 49.73841322 287.44187747 48.62061859 281.37109375 47.48046875 C239.15604842 39.55980069 196.80593454 32.90542418 154.24365234 27.13623047 C149.34377834 26.47190653 144.44690862 25.78899499 139.55078125 25.09765625 C114.53285263 21.63091474 89.34603859 19.47129588 64.1875 17.3125 C62.94290009 17.20424896 62.94290009 17.20424896 61.67315674 17.09381104 C41.48248141 15.34927177 21.31935256 15.09593842 1.0625 15 C-0.74559143 14.98542252 -0.74559143 14.98542252 -2.59020996 14.97055054 C-45.19992563 14.67861851 -89.37943563 21.87834375 -122.8125 50.3125 Z \"\n      fill=\"#FDFDFD\"\n      transform=\"translate(730.8125,-0.3125)\"\n    />\n    <path\n      d=\"M0 0 C7.24455112 5.55309205 12.13776066 13.90325263 14.0859375 22.734375 C15.32381784 34.52858782 14.54958794 45.07054964 9.0859375 55.734375 C8.32410156 57.32958984 8.32410156 57.32958984 7.546875 58.95703125 C1.3318918 71.3133604 -7.44535619 81.72878328 -16.9140625 91.734375 C-17.70554687 92.57871094 -18.49703125 93.42304688 -19.3125 94.29296875 C-28.7543914 104.07738933 -41.45029906 115.54562923 -55.6640625 116.546875 C-60.61781375 116.19151264 -63.5564698 114.75804378 -67.01171875 111.2109375 C-83.24712677 90.07490324 -87.73448775 59.67001687 -85.9140625 33.734375 C-85.37185622 29.78078753 -84.46814455 26.40177317 -82.9140625 22.734375 C-82.511875 21.75597656 -82.1096875 20.77757812 -81.6953125 19.76953125 C-75.38800284 5.8759297 -65.3559713 -3.05037601 -51.2734375 -8.50390625 C-34.51179817 -13.91536266 -14.40112692 -9.5223778 0 0 Z \"\n      fill=\"#CC3F54\"\n      transform=\"translate(1792.9140625,152.265625)\"\n    />\n    <path\n      d=\"M0 0 C5.73334246 5.05944145 9.67072032 10.11282058 13 17 C13.33 17.66 13.66 18.32 14 19 C14.76112933 25.71291115 14.29973301 31.59328966 10 37 C0.0734134 46.06614252 -13.58608096 48.13793339 -26.515625 48.203125 C-27.43581924 48.21009399 -28.35601349 48.21706299 -29.30409241 48.22424316 C-32.28610794 48.24166582 -35.26793556 48.24797161 -38.25 48.25 C-39.26653656 48.25100708 -40.28307312 48.25201416 -41.33041382 48.25305176 C-56.11583755 48.24312914 -70.54770292 47.77473519 -85.17724609 45.44873047 C-88.03720594 44.99408541 -90.90132426 44.59037283 -93.76953125 44.19140625 C-105.59582202 42.46395942 -117.16320893 39.88942194 -128.75 37 C-129.42395813 36.8325528 -130.09791626 36.66510559 -130.79229736 36.49258423 C-139.32430454 34.35808175 -147.69994241 31.91801931 -156 29 C-155.51479668 17.84032365 -147.4665983 9.60058294 -140 2 C-139.26136719 1.236875 -138.52273438 0.47375 -137.76171875 -0.3125 C-102.30900852 -34.63310688 -36.21481133 -31.36402009 0 0 Z \"\n      fill=\"#461816\"\n      transform=\"translate(1596,138)\"\n    />\n    <path\n      d=\"M0 0 C3.8452266 2.5634844 5.03118614 5.55960315 6 10 C9.52569412 46.49402687 -16.8492668 87.48074499 -38.859375 114.54296875 C-58.01457315 137.72876042 -58.01457315 137.72876042 -71 142 C-74.125 142.0625 -74.125 142.0625 -77 141 C-81.10726093 135.30283162 -80.3929403 128.88405987 -79.39550781 122.16357422 C-72.51527788 84.52616824 -50.8806638 27.94825886 -18.625 4.8125 C-12.62588154 0.84987159 -7.20484882 -1.0793781 0 0 Z \"\n      fill=\"#461816\"\n      transform=\"translate(1491,330)\"\n    />\n    <path\n      d=\"M0 0 C4.44496055 2.49696987 7.0635749 5.44072469 8.6875 10.3125 C10.30682302 23.82052365 5.65349093 36.49212893 -2.55078125 47.15234375 C-3.42283203 48.22162109 -3.42283203 48.22162109 -4.3125 49.3125 C-5.07626953 50.33537109 -5.07626953 50.33537109 -5.85546875 51.37890625 C-16.72332967 65.09119497 -34.3853234 72.6198274 -51.3125 75.3125 C-55.3524089 75.58182726 -59.27545225 75.53298392 -63.3125 75.3125 C-62.88455336 68.43549709 -61.71068264 62.35237304 -59.375 55.875 C-59.06925049 55.020271 -58.76350098 54.16554199 -58.44848633 53.28491211 C-52.98601975 38.57203859 -45.56932649 25.20623937 -35.3125 13.3125 C-34.70792969 12.60738281 -34.10335937 11.90226562 -33.48046875 11.17578125 C-25.16672651 2.20005485 -12.12767048 -5.58868397 0 0 Z \"\n      fill=\"#471917\"\n      transform=\"translate(769.3125,340.6875)\"\n    />\n  </svg>\n);\nexport default SvgCrewAiIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/CrewAI/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgCrewAiIcon from \"./CrewAiIcon\";\n\nexport const CrewAiIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgCrewAiIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ElasticsearchStore/ElasticsearchLogo.jsx",
    "content": "const SvgElasticsearchLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"24\"\n    height=\"24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    strokeLinecap=\"round\"\n    strokeLinejoin=\"round\"\n    strokeWidth=\"2\"\n    className=\"icon icon-tabler icon-tabler-brand-elastic\"\n    viewBox=\"0 0 24 24\"\n  >\n    <path stroke=\"none\" d=\"M0 0h24v24H0z\"></path>\n    <path d=\"M14 2a5 5 0 015 5c0 .712-.232 1.387-.5 2 1.894.042 3.5 1.595 3.5 3.5 0 1.869-1.656 3.4-3.5 3.5.333.625.5 1.125.5 1.5a2.5 2.5 0 01-2.5 2.5c-.787 0-1.542-.432-2-1-.786 1.73-2.476 3-4.5 3a5 5 0 01-4.583-7 3.5 3.5 0 01-.11-6.992h.195a2.5 2.5 0 012-4c.787 0 1.542.432 2 1 .786-1.73 2.476-3 4.5-3zM8.5 9l-3-1\"></path>\n    <path d=\"M9.5 5l-1 4 1 2 5 2 4-4M18.499 16l-3-.5-1-2.5M14.5 19l1-3.5M5.417 15L9.5 11\"></path>\n  </svg>\n);\nexport default SvgElasticsearchLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ElasticsearchStore/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgElasticsearchLogo from \"./ElasticsearchLogo\";\n\nexport const ElasticsearchIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgElasticsearchLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Evernote/EvernoteIcon.jsx",
    "content": "const SvgEvernoteIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    fill=\"#7fce2c\"\n    viewBox=\"0 0 32 32\"\n    {...props}\n  >\n    <path d=\"M29.343 16.818c.1 1.695-.08 3.368-.305 5.045-.225 1.712-.508 3.416-.964 5.084-.3 1.067-.673 2.1-1.202 3.074-.65 1.192-1.635 1.87-2.992 1.924l-3.832.036c-.636-.017-1.278-.146-1.9-.297-1.192-.3-1.862-1.1-2.06-2.3a8.976 8.976 0 0 1 .04-3.264c.252-1.23 1-1.96 2.234-2.103.817-.1 1.65-.077 2.476-.1.205-.007.275.098.203.287a2.695 2.695 0 0 0-.098 1.623c.053.207-.023.307-.26.305a7.77 7.77 0 0 0-1.123.053c-.636.086-.96.47-.96 1.112 0 .205.026.416.066.622.103.507.45.78.944.837 1.123.127 2.247.138 3.37-.05.675-.114 1.08-.54 1.16-1.208.152-1.3.155-2.587-.228-3.845-.33-1.092-1.006-1.565-2.134-1.7l-3.36-.54c-1.06-.193-1.7-.887-1.92-1.9-.13-.572-.14-1.17-.214-1.757-.013-.106-.074-.208-.1-.3-.04.1-.106.212-.117.326-.066.68-.053 1.373-.185 2.04-.16.8-.404 1.566-.67 2.33-.185.535-.616.837-1.205.8a37.76 37.76 0 0 1-7.123-1.353l-.64-.207c-.927-.26-1.487-.903-1.74-1.787l-1-3.853-.74-4.3c-.115-.755-.2-1.523-.083-2.293.154-1.112.914-1.903 2.04-1.964l3.558-.062c.127 0 .254.003.373-.026a1.23 1.23 0 0 0 1.01-1.255l-.05-3.036c-.048-1.576.8-2.38 2.156-2.622a10.58 10.58 0 0 1 4.91.26c.933.275 1.467.923 1.715 1.83.058.22.146.3.37.287l2.582.01 3.333.37c.686.095 1.364.25 2.032.42 1.165.298 1.793 1.112 1.962 2.256l.357 3.355.3 5.577.01 2.277zm-4.534-1.155c-.02-.666-.07-1.267-.444-1.784a1.66 1.66 0 0 0-2.469-.15c-.364.4-.494.88-.564 1.4-.008.034.106.126.16.126l.8-.053c.768.007 1.523.113 2.25.393.066.026.136.04.265.077zM8.787 1.154a3.82 3.82 0 0 0-.278 1.592l.05 2.934c.005.357-.075.45-.433.45L5.1 6.156c-.583 0-1.143.1-1.554.278l5.2-5.332c.02.013.04.033.06.053z\" />\n  </svg>\n);\nexport default SvgEvernoteIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Evernote/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgEvernoteIcon from \"./EvernoteIcon\";\n\nexport const EvernoteIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgEvernoteIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/FacebookMessenger/FacebookMessengerLogo2020.jsx",
    "content": "const SvgFacebookMessengerLogo2020 = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 800 800\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <radialGradient\n      id=\"Facebook_Messenger_logo_2020_svg__a\"\n      cx={101.9}\n      cy={809}\n      r={1.1}\n      gradientTransform=\"matrix(800 0 0 -800 -81386 648000)\"\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop\n        offset={0}\n        style={{\n          stopColor: \"#09f\",\n        }}\n      />\n      <stop\n        offset={0.6}\n        style={{\n          stopColor: \"#a033ff\",\n        }}\n      />\n      <stop\n        offset={0.9}\n        style={{\n          stopColor: \"#ff5280\",\n        }}\n      />\n      <stop\n        offset={1}\n        style={{\n          stopColor: \"#ff7061\",\n        }}\n      />\n    </radialGradient>\n    <path\n      fill=\"url(#Facebook_Messenger_logo_2020_svg__a)\"\n      d=\"M400 0C174.7 0 0 165.1 0 388c0 116.6 47.8 217.4 125.6 287 6.5 5.8 10.5 14 10.7 22.8l2.2 71.2a32 32 0 0 0 44.9 28.3l79.4-35c6.7-3 14.3-3.5 21.4-1.6 36.5 10 75.3 15.4 115.8 15.4 225.3 0 400-165.1 400-388S625.3 0 400 0z\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"m159.8 501.5 117.5-186.4a60 60 0 0 1 86.8-16l93.5 70.1a24 24 0 0 0 28.9-.1l126.2-95.8c16.8-12.8 38.8 7.4 27.6 25.3L522.7 484.9a60 60 0 0 1-86.8 16l-93.5-70.1a24 24 0 0 0-28.9.1l-126.2 95.8c-16.8 12.8-38.8-7.3-27.5-25.2z\"\n    />\n  </svg>\n);\nexport default SvgFacebookMessengerLogo2020;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/FacebookMessenger/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgFacebookMessengerLogo2020 from \"./FacebookMessengerLogo2020\";\n\nexport const FBIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgFacebookMessengerLogo2020 ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Firecrawl/FirecrawlLogo.jsx",
    "content": "const SvgFirecrawlLogo = (props) => (\n  <svg\n    viewBox=\"-33 0 255 255\"\n    width=\"24\"\n    height=\"24\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    preserveAspectRatio=\"xMidYMid\"\n  >\n    <defs>\n      <style>\n        {`\n          .cls-3 {\n            fill: url(#linear-gradient-1);\n          }\n\n          .cls-4 {\n            fill: #fc9502;\n          }\n\n          .cls-5 {\n            fill: #fce202;\n          }\n        `}\n      </style>\n\n      <linearGradient\n        id=\"linear-gradient-1\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1=\"94.141\"\n        y1=\"255\"\n        x2=\"94.141\"\n        y2=\"0.188\"\n      >\n        <stop offset=\"0\" stopColor=\"#ff4c0d\" />\n        <stop offset=\"1\" stopColor=\"#fc9502\" />\n      </linearGradient>\n    </defs>\n    <g id=\"fire\">\n      <path\n        d=\"M187.899,164.809 C185.803,214.868 144.574,254.812 94.000,254.812 C42.085,254.812 -0.000,211.312 -0.000,160.812 C-0.000,154.062 -0.121,140.572 10.000,117.812 C16.057,104.191 19.856,95.634 22.000,87.812 C23.178,83.513 25.469,76.683 32.000,87.812 C35.851,94.374 36.000,103.812 36.000,103.812 C36.000,103.812 50.328,92.817 60.000,71.812 C74.179,41.019 62.866,22.612 59.000,9.812 C57.662,5.384 56.822,-2.574 66.000,0.812 C75.352,4.263 100.076,21.570 113.000,39.812 C131.445,65.847 138.000,90.812 138.000,90.812 C138.000,90.812 143.906,83.482 146.000,75.812 C148.365,67.151 148.400,58.573 155.999,67.813 C163.226,76.600 173.959,93.113 180.000,108.812 C190.969,137.321 187.899,164.809 187.899,164.809 Z\"\n        id=\"path-1\"\n        className=\"cls-3\"\n        fillRule=\"evenodd\"\n      />\n      <path\n        d=\"M94.000,254.812 C58.101,254.812 29.000,225.711 29.000,189.812 C29.000,168.151 37.729,155.000 55.896,137.166 C67.528,125.747 78.415,111.722 83.042,102.172 C83.953,100.292 86.026,90.495 94.019,101.966 C98.212,107.982 104.785,118.681 109.000,127.812 C116.266,143.555 118.000,158.812 118.000,158.812 C118.000,158.812 125.121,154.616 130.000,143.812 C131.573,140.330 134.753,127.148 143.643,140.328 C150.166,150.000 159.127,167.390 159.000,189.812 C159.000,225.711 129.898,254.812 94.000,254.812 Z\"\n        id=\"path-2\"\n        className=\"cls-4\"\n        fillRule=\"evenodd\"\n      />\n      <path\n        d=\"M95.000,183.812 C104.250,183.812 104.250,200.941 116.000,223.812 C123.824,239.041 112.121,254.812 95.000,254.812 C77.879,254.812 69.000,240.933 69.000,223.812 C69.000,206.692 85.750,183.812 95.000,183.812 Z\"\n        id=\"path-3\"\n        className=\"cls-5\"\n        fillRule=\"evenodd\"\n      />\n    </g>\n  </svg>\n);\nexport default SvgFirecrawlLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Firecrawl/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgFirecrawlLogo from \"./FirecrawlLogo\";\n\nexport const FirecrawlIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgFirecrawlLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/GitBook/GitbookSvgrepoCom.jsx",
    "content": "const SvgGitbookSvgrepoCom = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 24 24\"\n    {...props}\n  >\n    <path d=\"M10.802 17.77a.703.703 0 1 1-.002 1.406.703.703 0 0 1 .002-1.406m11.024-4.347a.703.703 0 1 1 .001-1.406.703.703 0 0 1-.001 1.406m0-2.876a2.176 2.176 0 0 0-2.174 2.174c0 .233.039.465.115.691l-7.181 3.823a2.165 2.165 0 0 0-1.784-.937c-.829 0-1.584.475-1.95 1.216l-6.451-3.402c-.682-.358-1.192-1.48-1.138-2.502.028-.533.212-.947.493-1.107.178-.1.392-.092.62.027l.042.023c1.71.9 7.304 3.847 7.54 3.956.363.169.565.237 1.185-.057l11.564-6.014c.17-.064.368-.227.368-.474 0-.342-.354-.477-.355-.477-.658-.315-1.669-.788-2.655-1.25-2.108-.987-4.497-2.105-5.546-2.655-.906-.474-1.635-.074-1.765.006l-.252.125C7.78 6.048 1.46 9.178 1.1 9.397.457 9.789.058 10.57.006 11.539c-.08 1.537.703 3.14 1.824 3.727l6.822 3.518a2.175 2.175 0 0 0 2.15 1.862 2.177 2.177 0 0 0 2.173-2.14l7.514-4.073c.38.298.853.461 1.337.461A2.176 2.176 0 0 0 24 12.72a2.176 2.176 0 0 0-2.174-2.174\" />\n  </svg>\n);\nexport default SvgGitbookSvgrepoCom;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/GitBook/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgGitbookSvgrepoCom from \"./GitbookSvgrepoCom\";\n\nexport const GitBookIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgGitbookSvgrepoCom ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Google/Google.jsx",
    "content": "const SvgGoogle = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    preserveAspectRatio=\"xMidYMid\"\n    viewBox=\"0 0 256 262\"\n    {...props}\n  >\n    <path\n      fill=\"#4285F4\"\n      d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n    />\n    <path\n      fill=\"#34A853\"\n      d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n    />\n    <path\n      fill=\"#FBBC05\"\n      d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\"\n    />\n    <path\n      fill=\"#EB4335\"\n      d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n    />\n  </svg>\n);\nexport default SvgGoogle;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Google/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgGoogle from \"./Google\";\n\nexport const GoogleIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgGoogle ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/GoogleGenerativeAI/GoogleGemini.jsx",
    "content": "const SvgGoogleGenerativeAI = (props) => (\n  <svg\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 16 16\"\n    {...props}\n  >\n    <path\n      d=\"M16 8.016A8.522 8.522 0 008.016 16h-.032A8.521 8.521 0 000 8.016v-.032A8.521 8.521 0 007.984 0h.032A8.522 8.522 0 0016 7.984v.032z\"\n      fill=\"url(#prefix__paint0_radial_980_20147)\"\n    />\n    <defs>\n      <radialGradient\n        id=\"prefix__paint0_radial_980_20147\"\n        cx=\"0\"\n        cy=\"0\"\n        r=\"1\"\n        gradientUnits=\"userSpaceOnUse\"\n        gradientTransform=\"matrix(16.1326 5.4553 -43.70045 129.2322 1.588 6.503)\"\n      >\n        <stop offset=\".067\" stop-color=\"#9168C0\" />\n        <stop offset=\".343\" stop-color=\"#5684D1\" />\n        <stop offset=\".672\" stop-color=\"#1BA1E3\" />\n      </radialGradient>\n    </defs>\n  </svg>\n);\nexport default SvgGoogleGenerativeAI;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/GoogleGenerativeAI/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgGoogleGenerativeAI from \"./GoogleGemini\";\n\nexport const GoogleGenerativeAIIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgGoogleGenerativeAI ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/GradientSparkles/index.tsx",
    "content": "import { Code } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport ForwardedIconComponent from \"../../components/genericIconComponent\";\n\nexport const GradientInfinity = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return (\n    <>\n      <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n        <defs>\n          <linearGradient id=\"grad1\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n            <stop className=\"gradient-start\" offset=\"0%\" />\n            <stop className=\"gradient-end\" offset=\"100%\" />\n          </linearGradient>\n        </defs>\n      </svg>\n      <Code stroke=\"url(#grad1)\" ref={ref} {...props} />\n    </>\n  );\n});\n\nexport const GradientSave = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return (\n    <>\n      <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n        <defs>\n          <linearGradient id=\"grad2\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n            <stop className=\"gradient-start\" offset=\"0%\" />\n            <stop className=\"gradient-end\" offset=\"100%\" />\n          </linearGradient>\n        </defs>\n      </svg>\n      <ForwardedIconComponent\n        name=\"Save\"\n        stroke=\"url(#grad2)\"\n        ref={ref}\n        {...props}\n      />\n    </>\n  );\n});\n\nexport const GradientGroup = (props) => {\n  return (\n    <>\n      <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n        <defs>\n          <linearGradient id=\"grad3\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n            <stop className=\"gradient-start\" offset=\"0%\" />\n            <stop className=\"gradient-end\" offset=\"100%\" />\n          </linearGradient>\n        </defs>\n      </svg>\n      <ForwardedIconComponent\n        name=\"Combine\"\n        stroke={`${props.disabled ? \"#64748B\" : \"url(#grad3)\"}`}\n        {...props}\n      />\n    </>\n  );\n};\n\nexport const GradientUngroup = (props) => {\n  return (\n    <>\n      <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n        <defs>\n          <linearGradient id=\"grad4\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n            <stop className=\"gradient-start\" offset=\"0%\" />\n            <stop className=\"gradient-end\" offset=\"100%\" />\n          </linearGradient>\n        </defs>\n      </svg>\n      <ForwardedIconComponent name=\"Ungroup\" stroke=\"url(#grad4)\" {...props} />\n    </>\n  );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Groq/GroqLogo.jsx",
    "content": "const SvgGroqLogo = ({ color, ...props }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    aria-label=\"groq logo\"\n    role=\"img\"\n    width=\"48\"\n    height=\"48\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    class=\"fill-foreground\"\n  >\n    <path\n      fill=\"#F55036\"\n      d=\"M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12Z\"\n    ></path>\n    <path\n      fill=\"#fff\"\n      d=\"M12.002 6a4.118 4.118 0 0 0-4.118 4.108 4.118 4.118 0 0 0 4.118 4.109h1.354v-1.541h-1.354a2.574 2.574 0 0 1-2.574-2.568 2.574 2.574 0 0 1 2.574-2.568c1.42 0 2.58 1.152 2.58 2.568v3.784a2.58 2.58 0 0 1-2.555 2.567 2.558 2.558 0 0 1-1.791-.752l-1.092 1.09a4.095 4.095 0 0 0 2.855 1.202l.028.001h.029a4.118 4.118 0 0 0 4.061-4.09l.002-3.903A4.119 4.119 0 0 0 12.002 6Z\"\n    ></path>\n  </svg>\n);\nexport default SvgGroqLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Groq/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgGroqLogo from \"./GroqLogo\";\n\nexport const GroqIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgGroqLogo ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/HuggingFace/HfLogo.jsx",
    "content": "const SvgHfLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    fill=\"none\"\n    viewBox=\"0 0 256 256\"\n    {...props}\n  >\n    <path\n      fill=\"#fff\"\n      d=\"M230.721 172.7a18.97 18.97 0 0 0-2.575-5.692c.25-.917.441-1.849.568-2.791.829-5.976-1.243-11.447-5.147-15.68-2.115-2.312-4.382-3.839-6.783-4.776a90.602 90.602 0 0 0 2.377-20.568c0-3.163-.179-6.261-.479-9.313a105.88 105.88 0 0 0-.567-4.56 90.985 90.985 0 0 0-3.051-13.21 91.22 91.22 0 0 0-3.054-8.374 91.93 91.93 0 0 0-6.041-11.754 81.369 81.369 0 0 0-4.907-7.262 68.979 68.979 0 0 0-2.704-3.446 90.535 90.535 0 0 0-9.033-9.486 69.938 69.938 0 0 0-3.315-2.862 81.76 81.76 0 0 0-3.424-2.704 96.056 96.056 0 0 0-7.262-4.907c-13.781-8.37-29.942-13.17-47.215-13.17-50.292 0-91.052 40.762-91.052 91.051-.002 7.012.81 14 2.42 20.824-2.16.938-4.23 2.4-6.15 4.515-3.903 4.231-5.976 9.682-5.147 15.658.126.949.315 1.889.567 2.813a19.006 19.006 0 0 0-2.573 5.694c-1.2 4.561-.805 8.674.72 12.278-1.658 4.71-1.244 9.726.915 14.087 1.57 3.185 3.817 5.649 6.587 7.851 3.293 2.618 7.415 4.842 12.387 6.976 5.932 2.53 13.173 4.907 16.466 5.779 8.506 2.202 16.662 3.598 24.928 3.666 11.777.109 21.919-2.66 29.18-9.747a88.02 88.02 0 0 0 10.752.654 93.752 93.752 0 0 0 11.358-.715c7.244 7.132 17.425 9.926 29.245 9.814 8.265-.066 16.421-1.462 24.905-3.667 3.315-.872 10.553-3.249 16.488-5.779 4.972-2.137 9.094-4.361 12.409-6.975 2.749-2.203 4.994-4.666 6.565-7.851 2.181-4.362 2.573-9.378.938-14.088 1.51-3.604 1.903-7.726.704-12.283Zm-8.44 11.973c1.671 3.171 1.778 6.754.304 10.091-2.236 5.057-7.79 9.041-18.577 13.318-6.708 2.66-12.85 4.361-12.904 4.376-8.872 2.301-16.896 3.47-23.842 3.47-11.502 0-20.061-3.174-25.489-9.442a85.461 85.461 0 0 1-27.747.158c-5.435 6.164-13.945 9.284-25.35 9.284-6.947 0-14.97-1.169-23.843-3.47-.054-.015-6.194-1.716-12.904-4.376-10.786-4.277-16.342-8.258-18.577-13.318-1.474-3.337-1.367-6.92.304-10.091.154-.295.32-.582.497-.86a12.803 12.803 0 0 1-1.728-10.341c.664-2.523 2.035-4.621 3.897-6.128a12.75 12.75 0 0 1-1.73-4.822c-.536-3.714.697-7.422 3.47-10.446 2.16-2.353 5.213-3.648 8.593-3.648h.09a84.45 84.45 0 0 1-3.832-25.235c0-46.671 37.836-84.51 84.514-84.51 46.677 0 84.513 37.835 84.513 84.51a84.398 84.398 0 0 1-3.859 25.299c.408-.04.808-.06 1.201-.061 3.38 0 6.434 1.295 8.592 3.648 2.773 3.021 4.007 6.732 3.47 10.446a12.757 12.757 0 0 1-1.729 4.822c1.862 1.507 3.234 3.605 3.897 6.128a12.803 12.803 0 0 1-1.728 10.341c.177.275.345.562.497.857Z\"\n    />\n    <path\n      fill=\"#FF9D00\"\n      d=\"M221.784 183.816a12.798 12.798 0 0 0 1.728-10.341c-.664-2.523-2.036-4.621-3.897-6.128a12.74 12.74 0 0 0 1.729-4.822c.537-3.714-.696-7.422-3.47-10.446-2.158-2.353-5.212-3.648-8.592-3.648-.393 0-.793.021-1.201.061a84.415 84.415 0 0 0 3.852-25.297c0-46.672-37.836-84.51-84.509-84.51-46.674 0-84.514 37.834-84.514 84.51a84.46 84.46 0 0 0 3.832 25.235h-.09c-3.38 0-6.433 1.294-8.592 3.647-2.773 3.021-4.007 6.733-3.47 10.446a12.762 12.762 0 0 0 1.73 4.823c-1.862 1.506-3.234 3.604-3.898 6.127a12.808 12.808 0 0 0 1.73 10.343c-.178.278-.342.565-.497.86-1.67 3.171-1.778 6.754-.303 10.091 2.236 5.057 7.79 9.041 18.577 13.318 6.707 2.66 12.85 4.361 12.904 4.376 8.872 2.301 16.896 3.47 23.842 3.47 11.406 0 19.916-3.12 25.351-9.284a85.49 85.49 0 0 0 27.747-.158c5.428 6.268 13.987 9.442 25.489 9.442 6.946 0 14.97-1.169 23.841-3.47.055-.015 6.195-1.716 12.905-4.376 10.787-4.277 16.342-8.261 18.577-13.318 1.474-3.337 1.367-6.92-.304-10.091-.152-.297-.32-.585-.497-.86Zm-111.647 13.181a34.659 34.659 0 0 1-1.502 2.394c-1.405 2.057-3.253 3.629-5.398 4.797-4.1 2.236-9.29 3.017-14.562 3.017-8.329 0-16.867-1.949-21.652-3.19-.236-.061-29.334-8.28-25.65-15.276.62-1.177 1.64-1.647 2.925-1.647 5.187 0 14.632 7.724 18.69 7.724.908 0 1.548-.386 1.809-1.328 1.73-6.204-26.293-8.812-23.933-17.796.416-1.59 1.546-2.236 3.134-2.236 6.858-.001 22.25 12.06 25.469 12.06.247 0 .424-.073.52-.225.014-.023.028-.045.041-.069 1.511-2.495.644-4.309-9.707-10.649l-.994-.605c-11.391-6.894-19.386-11.043-14.84-15.993.524-.571 1.266-.824 2.167-.824 1.068 0 2.36.357 3.785.957 6.016 2.537 14.354 9.456 17.837 12.473a146 146 0 0 1 1.633 1.441s4.41 4.586 7.076 4.586c.614 0 1.135-.242 1.488-.84 1.891-3.188-17.563-17.93-18.66-24.013-.744-4.121.522-6.209 2.862-6.209 1.113 0 2.47.474 3.97 1.425 4.65 2.951 13.628 18.379 16.915 24.381 1.102 2.011 2.983 2.861 4.678 2.861 3.363 0 5.992-3.343.308-7.591-8.543-6.392-5.545-16.84-1.468-17.483.174-.028.35-.042.525-.042 3.708 0 5.343 6.389 5.343 6.389s4.794 12.038 13.029 20.267c7.472 7.469 8.516 13.598 4.162 21.244Zm26.629 1.41-.427.051-.728.083c-.383.04-.767.078-1.152.113l-.375.034-.343.029-.486.039-.537.039-.536.035-.119.008c-.14.008-.28.017-.422.024l-.179.01c-.166.009-.332.017-.5.024l-.581.025-.527.018-.352.01h-.179c-.11 0-.219.006-.329.007h-.174c-.11 0-.219 0-.329.005l-.448.006h-.625c-.491 0-.981-.005-1.469-.015l-.396-.009c-.113 0-.226-.005-.337-.009l-.42-.012-.521-.02-.47-.021-.121-.005-.447-.023c-.125-.007-.248-.013-.372-.022l-.289-.017a79.64 79.64 0 0 1-1.089-.076l-.38-.031c-.16-.012-.32-.027-.479-.041-.187-.016-.374-.034-.561-.052a59.687 59.687 0 0 1-.939-.095h-.015c4.57-10.195 2.259-19.717-6.976-28.944-6.057-6.049-10.086-14.981-10.922-16.942-1.692-5.805-6.17-12.258-13.607-12.258-.629 0-1.257.05-1.878.148-3.258.513-6.106 2.388-8.138 5.21-2.196-2.731-4.33-4.902-6.26-6.128-2.91-1.845-5.814-2.781-8.643-2.781-3.531 0-6.687 1.45-8.887 4.08l-.056.067c-.042-.173-.082-.346-.123-.52l-.005-.023a73.685 73.685 0 0 1-1.054-5.412c0-.012 0-.024-.006-.036-.022-.137-.042-.275-.063-.412-.062-.406-.12-.813-.173-1.22-.024-.185-.05-.37-.073-.555l-.068-.555c-.022-.185-.04-.353-.06-.529l-.006-.044c-.08-.72-.15-1.44-.21-2.162l-.022-.277-.035-.472c-.01-.129-.02-.259-.027-.389 0-.031-.005-.061-.006-.09a52.476 52.476 0 0 1-.065-1.088c-.01-.189-.02-.377-.028-.567l-.02-.496-.005-.15-.016-.457-.01-.389c0-.155-.008-.31-.01-.465-.003-.155-.007-.325-.008-.489-.002-.164 0-.326-.005-.489-.004-.164 0-.327 0-.49 0-41.853 33.93-75.784 75.788-75.784 41.856 0 75.786 33.93 75.786 75.784v.979c0 .163-.005.327-.008.489 0 .135-.006.268-.01.405 0 .12-.005.241-.009.357 0 .153-.009.306-.014.459v.012l-.021.531c-.007.155-.013.311-.021.466l-.005.11-.027.496a80.723 80.723 0 0 1-.241 3.184v.013c-.017.174-.034.348-.053.522l-.045.411-.089.804-.051.407-.063.479c-.023.174-.046.349-.072.522-.026.195-.055.389-.084.583l-.069.459-.082.52c-.028.173-.058.345-.09.517-.033.173-.059.345-.089.517-.06.344-.123.688-.189 1.031-.101.513-.204 1.025-.31 1.537l-.11.507c-.036.169-.075.339-.113.508-2.133-2.073-4.958-3.202-8.073-3.202-2.827 0-5.734.935-8.643 2.78-1.93 1.226-4.063 3.398-6.26 6.128-2.035-2.822-4.883-4.697-8.139-5.21a12.05 12.05 0 0 0-1.878-.148c-7.439 0-11.914 6.453-13.607 12.258-.84 1.961-4.87 10.893-10.932 16.951-9.229 9.198-11.557 18.677-7.059 28.83Zm78.241-20.409-.03.089a5.416 5.416 0 0 1-.263.587c-.075.14-.156.276-.244.408-.167.249-.35.487-.549.711-.046.052-.09.104-.142.155a7.853 7.853 0 0 1-.22.227c-1.346 1.334-3.398 2.504-5.718 3.577-.263.119-.53.238-.799.358l-.268.119c-.179.079-.358.157-.546.234-.179.078-.365.156-.551.232l-.558.23c-1.305.537-2.642 1.049-3.946 1.554l-.558.217-.551.216c-.367.143-.729.286-1.085.429l-.531.214-.522.213-.256.108c-.171.071-.338.142-.505.213-3.837 1.647-6.598 3.322-6.018 5.4.016.059.034.115.054.17.052.154.123.299.212.436.052.081.112.158.179.228.682.709 1.923.597 3.488.034.22-.081.439-.165.656-.253l.136-.056c.358-.152.737-.322 1.124-.506.097-.046.195-.09.293-.141 1.914-.936 4.083-2.196 6.235-3.343a55.812 55.812 0 0 1 2.618-1.325c2.038-.959 3.954-1.639 5.494-1.639.723 0 1.361.148 1.893.488l.089.059c.334.235.614.537.823.887.041.067.081.138.12.211.761 1.445.124 2.941-1.367 4.408-1.431 1.409-3.657 2.79-6.187 4.068-.188.095-.376.19-.567.283-7.53 3.698-17.391 6.483-17.528 6.518-2.628.681-6.386 1.575-10.62 2.244l-.626.098-.103.015c-.474.072-.949.139-1.425.201-.483.065-.971.124-1.462.179l-.09.01a68.56 68.56 0 0 1-5.358.406h-.026c-.648.023-1.295.035-1.943.035h-.747a46.38 46.38 0 0 1-2.959-.134c-.023 0-.048 0-.071-.006a39.666 39.666 0 0 1-2.149-.231 24.641 24.641 0 0 1-.715-.107 57.653 57.653 0 0 1-.725-.121l-.329-.062-.025-.005a26.107 26.107 0 0 1-1.036-.219c-.2-.045-.399-.089-.596-.143l-.119-.03c-.098-.024-.193-.05-.29-.076l-.053-.014-.308-.09c-.112-.031-.224-.065-.336-.098l-.039-.011-.291-.089c-.11-.034-.22-.07-.329-.106l-.268-.089-.197-.069c-.19-.067-.379-.136-.566-.208l-.178-.07-.147-.058a23.243 23.243 0 0 1-.845-.358l-.185-.09-.031-.014c-.066-.031-.131-.062-.197-.089a17.142 17.142 0 0 1-.384-.191l-.039-.019-.184-.097a15.943 15.943 0 0 1-.961-.546l-.172-.106a8.547 8.547 0 0 1-.256-.164l-.224-.148-.241-.166-.144-.103c-.152-.108-.301-.22-.447-.335l-.233-.179a15.173 15.173 0 0 1-.276-.228c-.077-.063-.152-.129-.227-.195l-.006-.005c-.081-.071-.16-.142-.239-.215a11.85 11.85 0 0 1-.232-.216l-.009-.009a8.569 8.569 0 0 1-.235-.232c-.077-.078-.156-.156-.231-.236-.075-.079-.152-.16-.226-.243-.074-.082-.142-.157-.212-.238l-.023-.027a9.34 9.34 0 0 1-.201-.238 12.442 12.442 0 0 1-.416-.525c-.135-.18-.267-.364-.396-.551l-.123-.184c-.164-.24-.324-.482-.479-.728a18.6 18.6 0 0 1-.339-.536c-.071-.113-.139-.227-.207-.339l-.028-.046c-.065-.11-.129-.218-.191-.327a3.17 3.17 0 0 1-.102-.179c-.033-.062-.071-.125-.106-.188l-.057-.099-.035-.064c-.067-.12-.133-.241-.197-.363-.03-.054-.059-.108-.09-.16l-.089-.173-.09-.171c-.225-.45-.438-.906-.638-1.368l-.071-.169c-.046-.113-.089-.225-.135-.336-.022-.054-.044-.107-.063-.161a16.731 16.731 0 0 1-.776-2.639c-.011-.055-.022-.11-.031-.163a11.54 11.54 0 0 1-.127-.806c-.008-.053-.014-.106-.02-.159l-.017-.162a11.337 11.337 0 0 1-.049-.638c0-.054-.005-.108-.007-.16a8.436 8.436 0 0 1-.008-.318c-.056-4.273 2.106-8.381 6.729-13.002 8.235-8.227 13.029-20.266 13.029-20.266s.129-.505.397-1.232c.037-.101.076-.205.12-.314.156-.407.332-.807.527-1.197l.039-.075c.166-.332.348-.656.544-.971.046-.073.09-.145.141-.218.147-.217.302-.429.465-.634.089-.111.186-.221.283-.328.039-.042.077-.084.118-.124.477-.493 1.022-.895 1.639-1.109l.078-.026c.052-.017.104-.033.157-.048.061-.016.122-.03.185-.043l.029-.006c.13-.026.262-.043.395-.052h.011c.069 0 .139-.007.21-.007.089 0 .172 0 .259.009.09.008.179.018.269.032.742.118 1.448.56 2.056 1.242.231.26.439.54.621.836.12.192.233.395.34.609.043.089.084.171.124.259a7.8 7.8 0 0 1 .28.691c.195.55.342 1.116.439 1.692.084.505.134 1.015.15 1.526.008.273.008.55 0 .829a11.936 11.936 0 0 1-.787 3.792c-.042.111-.089.223-.134.335a9.264 9.264 0 0 1-.302.665c-.081.165-.166.331-.258.496-.06.11-.123.22-.186.33-.161.274-.335.546-.522.817l-.113.162a13.628 13.628 0 0 1-1.472 1.728 15.425 15.425 0 0 1-1.699 1.47c-.602.446-1.167.94-1.689 1.477-1.503 1.577-1.853 2.969-1.515 4.024.054.166.125.327.211.479.101.174.221.334.357.48l.053.055.054.054c.054.052.111.103.172.153l.06.048c.145.112.299.212.46.3.047.025.089.05.142.074.174.085.353.158.537.217.051.017.102.032.154.048l.065.017.09.024.077.019.084.018.083.017.079.013c.058.01.118.02.178.027l.057.009.104.01.064.007.105.007h.062l.11.006h.346l.099-.006.114-.007.139-.013.13-.015c.03 0 .06-.008.09-.014.4-.058.792-.164 1.167-.316l.159-.067a4.819 4.819 0 0 0 .772-.421c.229-.15.445-.318.647-.503.048-.043.095-.089.141-.133.023-.022.045-.043.067-.067.044-.045.089-.089.133-.138.32-.352.597-.74.825-1.157a228.925 228.925 0 0 1 6.151-10.514l.294-.471.297-.471c.148-.239.298-.474.447-.708l.15-.234c.498-.78 1.004-1.555 1.519-2.324l.305-.456c.612-.907 1.222-1.789 1.827-2.627l.301-.415a56.224 56.224 0 0 1 2.054-2.661l.282-.338c.047-.056.09-.112.141-.166.093-.11.186-.217.277-.321.046-.053.089-.105.138-.157l.268-.302.134-.147c.135-.145.267-.284.397-.417.09-.09.173-.179.259-.263a10.5 10.5 0 0 1 1.669-1.386l.14-.09c.134-.09.273-.174.415-.25 2.364-1.342 4.321-1.441 5.448-.314.682.682 1.06 1.813 1.039 3.387 0 .069 0 .139-.005.211v.077c0 .072-.006.144-.012.217 0 .09-.01.179-.019.269-.009.089-.014.157-.023.237 0 .022-.004.045-.008.069-.006.069-.015.14-.025.211 0 .021 0 .043-.008.065a5.354 5.354 0 0 1-.041.283c-.011.09-.026.174-.042.262l-.026.149a4.007 4.007 0 0 1-.1.42 6.16 6.16 0 0 1-.283.758 10.99 10.99 0 0 1-.514.987c-.104.178-.211.353-.322.526-.114.179-.234.36-.358.543-.316.452-.644.895-.985 1.328l-.156.197a50.56 50.56 0 0 1-1.722 2.035l-.187.21c-.252.281-.508.564-.77.848l-.197.214c-.131.143-.268.286-.4.43-.131.143-.268.288-.406.433l-.411.433-.417.436-.42.436c-.282.292-.565.584-.85.876-4.055 4.159-8.327 8.304-9.773 10.888a5.365 5.365 0 0 0-.262.519c-.206.47-.292.872-.233 1.197a.914.914 0 0 0 .111.303c.081.141.18.271.295.387.053.052.109.1.168.144.298.212.657.321 1.023.311h.114l.117-.009.117-.013.097-.014c.013-.002.027-.004.04-.008l.089-.017.023-.005.099-.021.035-.009.104-.028c.035-.01.083-.023.125-.037.176-.053.348-.116.517-.188.089-.036.176-.075.262-.117.045-.02.09-.041.132-.063l.134-.066c.32-.166.632-.347.936-.541l.133-.09c.045-.028.09-.057.133-.089l.133-.089.071-.049.192-.135c.179-.123.346-.25.515-.379l.015-.012.269-.208c.367-.29.715-.582 1.031-.857l.21-.184.019-.018.11-.097c.258-.232.488-.448.679-.626l.079-.077c.069-.065.132-.126.189-.178l.112-.111.04-.039.011-.011.117-.117.074-.077.009-.007.035-.032.044-.04.014-.013.037-.034.204-.179.114-.102c.061-.053.12-.107.179-.162l.136-.121c.025-.02.049-.042.074-.064l.143-.125.21-.185.112-.097c.435-.378.964-.835 1.572-1.35l.249-.211.411-.345.421-.351c.55-.457 1.142-.942 1.768-1.445l.411-.33c.35-.279.709-.563 1.073-.849.147-.115.296-.23.448-.344a100.786 100.786 0 0 1 3.762-2.788l.384-.268c.269-.185.537-.371.805-.552l.243-.164c.479-.325.965-.642 1.455-.951l.243-.153.241-.15c.242-.15.482-.297.721-.44l.239-.143.478-.278.469-.269.095-.052.371-.204c.155-.084.309-.165.463-.244l.229-.118.223-.112c.078-.037.155-.076.231-.113a21.446 21.446 0 0 1 1.954-.845l.41-.144c.123-.041.243-.08.358-.115l.04-.012c.062-.02.124-.038.185-.054l.018-.005c.128-.037.255-.069.38-.099h.009a8.156 8.156 0 0 1 1.077-.183c.167-.017.334-.026.502-.025h.084c.112 0 .22.007.327.018.049 0 .098.01.146.016h.02c.048.006.096.013.144.024.047.009.095.017.141.028h.015c.047.01.089.022.138.036.254.071.496.181.718.325.109.071.211.151.305.24l.027.026a.805.805 0 0 1 .051.05l.049.053c.402.421.734.904.984 1.43l.038.09a3.309 3.309 0 0 1 .042 2.553 4.676 4.676 0 0 1-.339.715 8.141 8.141 0 0 1-1.099 1.452l-.089.095c-.133.14-.271.28-.416.42-.064.063-.131.125-.198.188l-.205.189-.107.095a22.682 22.682 0 0 1-1.285 1.057c-.586.448-1.183.88-1.791 1.297a59.56 59.56 0 0 1-1.11.743 99.67 99.67 0 0 1-2.786 1.763c-1.968 1.21-4.149 2.504-6.474 3.911l-.602.365c-.659.402-1.281.786-1.867 1.152l-.295.185-.558.358c-.37.237-.739.476-1.108.715l-.297.196c-.145.094-.289.19-.433.286l-.141.09-.432.291-.229.157-.268.186-.249.173c-.417.295-.805.576-1.162.843l-.134.102c-.21.159-.418.321-.623.486-.309.249-.591.487-.844.716l-.124.113c-.071.065-.141.13-.208.194-.046.045-.089.09-.137.133l-.064.064c-.143.144-.283.291-.418.442l-.066.076c-.147.17-.275.333-.387.492l-.05.071c-.088.128-.169.26-.242.396-.019.034-.036.068-.053.102l-.049.102-.033.074-.021.05-.017.045-.023.061a2.55 2.55 0 0 0-.13.523l-.008.062-.006.058v.315c0 .026 0 .052.007.08l.005.048c0 .026.006.051.01.079.004.026.011.073.019.11v.005c.007.035.014.069.023.104.009.035.018.075.029.111.019.071.043.141.068.211.016.042.031.083.048.124 0 .008.006.017.01.025l.036.081.05.111c.054.115.113.227.177.336l.066.114.068.114a.426.426 0 0 0 .041.054l.022.023.025.023.026.02a.487.487 0 0 0 .122.063c.023.008.047.014.071.02.577.13 1.763-.347 3.339-1.179.089-.048.187-.098.282-.15l.48-.262.234-.13c.167-.089.337-.19.511-.289l.317-.179c2.083-1.199 4.571-2.739 7.143-4.243.241-.141.483-.282.725-.421l.486-.311c.564-.323 1.131-.642 1.7-.957a80.121 80.121 0 0 1 2.168-1.15l.476-.241c.316-.156.629-.308.938-.456a40.899 40.899 0 0 1 1.815-.809l.335-.136.04-.016c1.775-.703 3.384-1.137 4.686-1.137.281-.003.563.021.84.069h.009c.089.016.17.034.253.054h.015c.213.054.42.131.616.23.275.142.522.331.731.559.096.106.181.221.256.343.14.215.25.448.329.692.032.095.06.188.089.287a3.93 3.93 0 0 1-.06 2.305Z\"\n    />\n    <path\n      fill=\"#FFD21E\"\n      fillRule=\"evenodd\"\n      d=\"M203.21 123.685v-.491c0-41.854-33.918-75.783-75.775-75.783-41.856 0-75.787 33.931-75.787 75.783v.164a7.13 7.13 0 0 0 0 .327c.005.163.007.326.005.489l.005.36.003.129c0 .06.002.119.004.179.003.095.005.191.005.286l.011.389.016.457.005.15.02.473v.023c.008.185.018.369.027.553l.001.014c.01.188.02.377.032.566.01.174.02.348.033.522l.002.031c.009.149.019.299.03.448l.003.04.033.432.003.028c.006.084.012.168.02.249.06.721.13 1.442.21 2.161l.004.045.061.529.068.555.05.377.023.177c.053.408.111.815.173 1.221l.004.027.059.384c.285 1.829.64 3.647 1.06 5.45l.005.022.032.135.091.385.056-.067c2.2-2.63 5.356-4.08 8.887-4.08 2.83 0 5.733.936 8.643 2.781 1.93 1.226 4.064 3.397 6.26 6.128 2.032-2.822 4.88-4.698 8.138-5.21.621-.098 1.25-.147 1.878-.148 7.436 0 11.915 6.453 13.607 12.258.836 1.961 4.865 10.893 10.941 16.935 9.236 9.227 11.547 18.748 6.976 28.943h.016c.311.035.624.067.939.096.187.018.373.036.561.052l.066.006.413.035.38.03c.362.028.725.054 1.089.077l.289.017.229.014.142.008.447.023.122.005.469.021.522.02.419.012.07.002c.089.004.178.007.267.007l.096.003c.59.014 1.179.021 1.769.02h.626l.447-.005c.11-.005.219-.005.33-.005h.174l.151-.004c.059-.002.118-.004.178-.004h.179l.351-.009.528-.018.581-.026c.168-.006.334-.015.5-.023l.179-.011.266-.014.156-.009.118-.008.537-.035.536-.039.487-.039.342-.029.376-.034a62.347 62.347 0 0 0 1.88-.197l.427-.051c-4.499-10.152-2.17-19.632 7.027-28.822 6.063-6.058 10.092-14.99 10.932-16.952 1.693-5.804 6.169-12.257 13.607-12.257.629 0 1.258.05 1.879.148 3.255.512 6.103 2.388 8.138 5.21 2.197-2.73 4.33-4.903 6.261-6.129 2.909-1.844 5.815-2.78 8.642-2.78 3.116 0 5.94 1.13 8.073 3.203.039-.169.077-.338.114-.508l.109-.506c.039-.185.078-.37.115-.555.066-.327.132-.654.195-.984.066-.342.129-.686.189-1.03l.031-.186c.019-.11.037-.22.058-.331.034-.172.062-.344.09-.518l.011-.066.071-.453.07-.459v-.004c.051-.339.099-.678.144-1.017l.011-.084.063-.478.051-.408.09-.804.035-.323.009-.088c.019-.174.037-.348.053-.522v-.014c.013-.138.027-.277.039-.416.071-.788.131-1.58.179-2.375.009-.13.016-.261.024-.392v-.006l.026-.491.006-.11c.016-.332.03-.664.041-.996v-.012l.005-.13c.005-.109.009-.219.009-.329l.002-.044c.004-.103.008-.209.008-.314l.003-.09c.003-.105.006-.209.006-.314l.002-.089c.003-.133.006-.267.006-.4v-.489Zm-94.572 75.706c6.002-8.801 5.576-15.407-2.658-23.637-8.236-8.231-13.029-20.267-13.029-20.267s-1.789-6.991-5.869-6.349c-4.08.642-7.073 11.089 1.47 17.484 8.542 6.395-1.7 10.731-4.988 4.73-3.288-6.002-12.265-21.429-16.919-24.38-4.654-2.951-7.927-1.297-6.83 4.785.545 3.019 5.613 8.172 10.348 12.986 4.804 4.884 9.265 9.42 8.311 11.025-1.893 3.187-8.56-3.745-8.56-3.745s-20.876-18.998-25.42-14.047c-4.19 4.563 2.271 8.442 12.227 14.421.846.508 1.718 1.032 2.611 1.572 11.391 6.896 12.277 8.715 10.66 11.324-.597.964-4.41-1.325-9.1-4.14-7.995-4.801-18.537-11.13-20.026-5.465-1.288 4.903 6.468 7.907 13.502 10.632 5.86 2.27 11.22 4.346 10.431 7.164-.817 2.922-5.246.485-10.087-2.179-5.435-2.991-11.39-6.267-13.339-2.57-3.683 6.99 25.41 15.219 25.65 15.28 9.4 2.438 33.272 7.604 41.615-4.624Zm38.665 0c-6.002-8.801-5.576-15.407 2.659-23.637 8.235-8.231 13.028-20.267 13.028-20.267s1.789-6.991 5.869-6.349c4.08.642 7.073 11.089-1.469 17.484-8.543 6.395 1.699 10.731 4.987 4.73 3.289-6.002 12.26-21.429 16.914-24.38 4.654-2.951 7.929-1.297 6.831 4.785-.544 3.019-5.613 8.172-10.348 12.987-4.804 4.884-9.265 9.419-8.312 11.024 1.893 3.187 8.565-3.749 8.565-3.749s20.875-18.997 25.421-14.046c4.189 4.562-2.272 8.442-12.229 14.421-.871.523-1.741 1.047-2.61 1.572-11.391 6.896-12.277 8.715-10.661 11.323.598.965 4.411-1.325 9.1-4.14 7.996-4.8 18.538-11.13 20.027-5.464 1.289 4.903-6.468 7.907-13.502 10.632-5.86 2.27-11.22 4.346-10.432 7.164.816 2.921 5.244.484 10.084-2.18 5.435-2.991 11.391-6.269 13.339-2.569 3.684 6.994-25.414 15.215-25.649 15.275-9.4 2.446-33.272 7.612-41.612-4.616Z\"\n      clipRule=\"evenodd\"\n    />\n    <path\n      fill=\"#32343D\"\n      fillRule=\"evenodd\"\n      d=\"M152.047 102.567c1.182.418 2.061 1.69 2.897 2.901 1.13 1.636 2.182 3.159 3.796 2.301a10.909 10.909 0 0 0 4.247-15.214 10.912 10.912 0 0 0-7.742-5.198 10.904 10.904 0 0 0-11.689 6.589 10.909 10.909 0 0 0 .436 9.314c.748 1.407 2.408.743 4.16.042 1.373-.549 2.804-1.121 3.895-.735Zm-51.375 0c-1.182.418-2.061 1.691-2.897 2.901-1.13 1.637-2.183 3.159-3.796 2.301a10.903 10.903 0 0 1 8.263-20.068 10.909 10.909 0 0 1 7.707 9.348 10.906 10.906 0 0 1-1.221 6.211c-.749 1.407-2.409.743-4.161.043-1.374-.55-2.803-1.122-3.895-.736Zm43.427 46.751c8.143-6.415 11.134-16.889 11.134-23.341 0-5.1-3.431-3.495-8.924-.775l-.31.153c-5.042 2.497-11.754 5.822-19.122 5.822-7.369 0-14.081-3.325-19.122-5.823-5.671-2.809-9.228-4.571-9.228.624 0 6.656 3.182 17.585 11.916 23.934a18.968 18.968 0 0 1 11.575-9.786c.872-.26 1.77 1.241 2.689 2.778.887 1.482 1.794 2.998 2.716 2.998.983 0 1.948-1.494 2.891-2.952.985-1.525 1.946-3.01 2.875-2.713a18.967 18.967 0 0 1 10.91 9.081Z\"\n      clipRule=\"evenodd\"\n    />\n    <path\n      fill=\"#FF323D\"\n      d=\"M144.097 149.317c-4.241 3.342-9.878 5.583-17.219 5.583-6.897 0-12.291-1.978-16.435-4.989a18.966 18.966 0 0 1 11.575-9.786c1.712-.511 3.527 5.776 5.405 5.776 2.01 0 3.947-6.246 5.766-5.665a18.974 18.974 0 0 1 10.908 9.081Z\"\n    />\n    <path\n      fill=\"#FFAD03\"\n      fillRule=\"evenodd\"\n      d=\"M81.2 111.64a7.078 7.078 0 0 1-6.65.655 7.062 7.062 0 0 1-3.837-3.837 7.082 7.082 0 0 1 .657-6.65 7.087 7.087 0 1 1 9.83 9.832Zm101.413 0a7.08 7.08 0 0 1-6.651.655 7.064 7.064 0 0 1-3.837-3.837 7.102 7.102 0 0 1-.504-3.407 7.103 7.103 0 0 1 3.411-5.385 7.083 7.083 0 0 1 8.656 1.07 7.079 7.079 0 0 1 1.536 7.724 7.089 7.089 0 0 1-2.611 3.18Z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\nexport default SvgHfLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/HuggingFace/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgHfLogo from \"./HfLogo\";\n\nexport const HuggingFaceIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgHfLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/IFixIt/IfixitSeeklogoCom.jsx",
    "content": "const SvgIfixitSeeklogocom = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"8.4 8.4 51.2 51.2\"\n    {...props}\n  >\n    <path\n      fill=\"#0071BA\"\n      d=\"M34 8.4C19.813 8.4 8.4 19.813 8.4 34S19.813 59.6 34 59.6 59.6 48.187 59.6 34 48.187 8.4 34 8.4zm9.493 13.226c.64.32 1.28.747 1.707 1.173 1.173 1.173 1.6 2.24 1.28 3.2l-5.44 7.467c-.106.32-.106 1.066 0 1.387l5.333 7.253c.107.32.213.96.107 1.28-.854 1.6-2.348 2.773-3.84 3.307-.32 0-.534 0-.747-.106l-7.253-5.333c-.32-.214-.854-.214-1.281-.107l-7.573 5.547c-.64.213-1.173.106-1.813-.32-1.387-.96-2.347-2.133-2.667-3.413 0-.427 0-.533.213-.747l5.333-7.359a1.705 1.705 0 0 0-.213-1.6l-5.12-6.934c-.106-.106-.106-.32-.213-.533.107-2.027 1.6-3.093 3.307-4.267.32-.107.854-.107 1.173 0l7.36 5.546c.427.107 1.174.107 1.494-.106L42 21.626c.533-.213.96-.106 1.387 0h.106z\"\n    />\n  </svg>\n);\nexport default SvgIfixitSeeklogocom;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/IFixIt/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgIfixitSeeklogocom from \"./IfixitSeeklogoCom\";\n\nexport const IFixIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgIfixitSeeklogocom ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/LangChain/LangChainIcon.jsx",
    "content": "const SvgLangChainIcon = (props) => (\n  <svg\n    viewBox=\"0 0 81 41\"\n    fill=\"none\"\n    height=\"200\"\n    width=\"400\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path\n      d=\"M61.514 11.157a3.94 3.94 0 0 0-2.806 1.158l-3.018 3.01a3.95 3.95 0 0 0-1.147 3.095l.019.191a3.9 3.9 0 0 0 1.128 2.314 3.6 3.6 0 0 0 1.496.9q.046.263.047.53c0 .797-.31 1.546-.874 2.107l-.186.186c-1.008-.344-1.848-.847-2.607-1.604a6.9 6.9 0 0 1-1.927-3.67l-.034-.193-.153.124a4 4 0 0 0-.294.265l-3.018 3.01a3.957 3.957 0 0 0 2.807 6.757 3.96 3.96 0 0 0 2.806-1.158l3.019-3.01a3.96 3.96 0 0 0 0-5.599 3.9 3.9 0 0 0-1.462-.92 3.25 3.25 0 0 1 .924-2.855 6.9 6.9 0 0 1 2.664 1.656 6.9 6.9 0 0 1 1.926 3.67l.035.193.153-.124q.155-.125.296-.267l3.018-3.01a3.956 3.956 0 0 0-2.808-6.756z\"\n      fill=\"CurrentColor\"\n    />\n    <path\n      d=\"M59.897.149h-39.49C9.153.149 0 9.279 0 20.5c0 11.222 9.154 20.351 20.406 20.351h39.49c11.253 0 20.407-9.13 20.407-20.35C80.303 9.277 71.149.148 59.897.148M40.419 32.056c-.651.134-1.384.158-1.882-.36-.183.42-.612.199-.943.144-.03.085-.057.16-.085.246-1.1.073-1.925-1.046-2.449-1.89-1.04-.562-2.222-.904-3.285-1.492-.062.968.15 2.17-.774 2.794-.047 1.862 2.824.22 3.088 1.608-.204.022-.43-.033-.594.124-.749.726-1.608-.55-2.471-.023-1.16.582-1.276 1.059-2.71 1.179-.08-.12-.047-.2.02-.273.404-.468.433-1.02 1.122-1.22-.71-.111-1.303.28-1.901.59-.778.317-.772-.717-1.968.054-.132-.108-.069-.206.007-.289.304-.37.704-.425 1.155-.405-2.219-1.233-3.263 1.508-4.288.145-.308.081-.424.358-.618.553-.167-.183-.04-.405-.033-.62-.2-.094-.453-.139-.394-.459-.391-.132-.665.1-.957.32-.263-.203.178-.5.26-.712.234-.407.769-.084 1.04-.377.772-.437 1.847.273 2.729.153.68.085 1.52-.61 1.179-1.305-.726-.926-.598-2.137-.614-3.244-.09-.645-1.643-1.467-2.092-2.163-.555-.627-.987-1.353-1.42-2.068-1.561-3.014-1.07-6.886-3.037-9.685-.89.49-2.048.259-2.816-.399-.414.377-.432.87-.465 1.392-.994-.99-.87-2.863-.075-3.966a5.3 5.3 0 0 1 1.144-1.11c.098-.07.131-.14.129-.25.786-3.524 6.144-2.845 7.838-.348 1.229 1.537 1.6 3.57 2.994 4.997 1.875 2.047 4.012 3.85 5.742 6.03 1.637 1.992 2.806 4.328 3.826 6.683.416.782.42 1.74 1.037 2.408.304.403 1.79 1.5 1.467 1.888.186.403 1.573.959 1.092 1.35zm26.026-12.024-3.018 3.01a6.96 6.96 0 0 1-2.875 1.728l-.056.016-.02.053a6.9 6.9 0 0 1-1.585 2.446l-3.019 3.01a6.94 6.94 0 0 1-4.932 2.035 6.94 6.94 0 0 1-4.932-2.035 6.95 6.95 0 0 1 0-9.838l3.018-3.01a6.9 6.9 0 0 1 2.871-1.721l.055-.017.02-.053a6.9 6.9 0 0 1 1.59-2.454l3.019-3.01a6.94 6.94 0 0 1 4.932-2.035c1.865 0 3.616.723 4.932 2.035a6.9 6.9 0 0 1 2.04 4.92c0 1.86-.724 3.607-2.04 4.918z\"\n      fill=\"CurrentColor\"\n    />\n    <path\n      d=\"M28.142 28.413c-.265 1.03-.35 2.782-1.694 2.832-.11.595.413.819.89.627.472-.215.696.171.855.556.729.106 1.806-.242 1.847-1.103-1.088-.625-1.424-1.813-1.896-2.914z\"\n      fill=\"CurrentColor\"\n    />\n  </svg>\n);\nexport default SvgLangChainIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/LangChain/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgLangChainIcon from \"./LangChainIcon\";\n\nexport const LangChainIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgLangChainIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Maritalk/MaritalkIcon.jsx",
    "content": "const SvgMaritalkIcon = (props) => (\n  <svg\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 118 118\"\n    width=\"118\"\n    height=\"118\"\n    {...props}\n  >\n    <path\n      d=\"M0 0 C3.43739487 3.53029744 4.54420068 6.10015733 5 11 C5.66 11 6.32 11 7 11 C12.90150827 20.84310604 14.16501426 30.1571562 11.80859375 41.38671875 C10.70894187 44.94066614 9.07476326 47.97130203 7.12109375 51.125 C5.84466871 53.10693813 5.84466871 53.10693813 5 56 C5.75446855 57.93537584 6.51189439 59.86976625 7.296875 61.79296875 C8.40505709 65.27142921 8.19424994 68.37400115 8 72 C5.83125748 71.49396008 4.00032373 71.00016187 2 70 C1.7328418 70.59240479 1.46568359 71.18480957 1.19042969 71.79516602 C-0.01802166 74.0333785 -1.24858328 75.49278973 -3.046875 77.27734375 C-3.645 77.87353516 -4.243125 78.46972656 -4.859375 79.08398438 C-5.79523438 80.00147461 -5.79523438 80.00147461 -6.75 80.9375 C-7.3584375 81.54529297 -7.966875 82.15308594 -8.59375 82.77929688 C-10.37463485 84.54305783 -12.18295869 86.27360819 -14 88 C-14.52142578 88.52480957 -15.04285156 89.04961914 -15.58007812 89.59033203 C-17.99943473 91.87326468 -19.51367431 92.96289613 -22.8671875 93.21875 C-27.35298192 91.47365292 -30.52675552 88.64429156 -34.125 85.5 C-35.51818635 84.29598024 -36.91645186 83.09780658 -38.3203125 81.90625 C-38.93148926 81.37322266 -39.54266602 80.84019531 -40.17236328 80.29101562 C-43.12664512 78.20415451 -45.20212388 77.87306516 -48.75 78.4375 C-49.4925 78.623125 -50.235 78.80875 -51 79 C-52.25664978 76.09399739 -53 74.20395416 -53 71 C-53.763125 71.495 -54.52625 71.99 -55.3125 72.5 C-58 74 -58 74 -61 74 C-61.02698189 72.37509046 -61.04638757 70.75005367 -61.0625 69.125 C-61.07410156 68.22007813 -61.08570312 67.31515625 -61.09765625 66.3828125 C-61 64 -61 64 -60 62 C-60.99 61.67 -61.98 61.34 -63 61 C-62.69288414 56.42503267 -62.26984635 52.62604354 -60.4375 48.375 C-58.82717113 44.49487424 -58.93115181 41.17687245 -59.0625 37 C-59.30680053 24.77275823 -56.74335323 12.72222708 -48.546875 3.3359375 C-37.01797106 -8.02506978 -12.72743656 -10.12409726 0 0 Z \"\n      fill=\"#D6CF4C\"\n      transform=\"translate(82,17)\"\n    />\n    <path\n      d=\"M0 0 C0.81498562 1.6029053 1.62689927 3.20737278 2.4375 4.8125 C3.11619141 6.15248047 3.11619141 6.15248047 3.80859375 7.51953125 C6.21743422 12.53465814 6.21674323 16.73754683 6.25 22.1875 C6.270625 23.01314453 6.29125 23.83878906 6.3125 24.68945312 C6.34922614 30.51513648 5.20948343 34.62573923 3 40 C3.19822852 43.3038087 3.91828363 45.77888512 5.0625 48.875 C6.23249378 52.77497927 6.13998031 55.94057089 6 60 C3.83125748 59.49396008 2.00032373 59.00016187 0 58 C-0.2671582 58.59240479 -0.53431641 59.18480957 -0.80957031 59.79516602 C-2.01802166 62.0333785 -3.24858328 63.49278973 -5.046875 65.27734375 C-5.645 65.87353516 -6.243125 66.46972656 -6.859375 67.08398438 C-7.79523438 68.00147461 -7.79523438 68.00147461 -8.75 68.9375 C-9.3584375 69.54529297 -9.966875 70.15308594 -10.59375 70.77929688 C-12.37463485 72.54305783 -14.18295869 74.27360819 -16 76 C-16.52142578 76.52480957 -17.04285156 77.04961914 -17.58007812 77.59033203 C-20.0012327 79.87496127 -21.50990184 80.96394373 -24.8671875 81.2109375 C-29.33219884 79.4850603 -32.52219412 76.7264878 -36.125 73.625 C-37.52308219 72.4500979 -38.92150889 71.27560561 -40.3203125 70.1015625 C-41.23707764 69.31773193 -41.23707764 69.31773193 -42.17236328 68.51806641 C-44.06825104 66.94330951 -46.01716825 65.46319309 -48 64 C-47.34 64 -46.68 64 -46 64 C-45.7525 63.278125 -45.505 62.55625 -45.25 61.8125 C-44 59 -44 59 -42 56.5625 C-39.8317046 53.78437151 -38.94096937 51.37180689 -38 48 C-37.34 48 -36.68 48 -36 48 C-36 48.66 -36 49.32 -36 50 C-32.97592912 47.23889181 -32.09977117 45.22505907 -31.76171875 41.07421875 C-31.53352767 32.23109543 -31.53352767 32.23109543 -36 25 C-36.33 24.34 -36.66 23.68 -37 23 C-36.39671875 22.96003906 -35.7934375 22.92007813 -35.171875 22.87890625 C-32.53622323 22.5345711 -30.42786961 22.0978193 -28 21 C-26.55980288 18.8683321 -25.80563519 16.79357622 -24.9296875 14.37890625 C-22.51865071 8.20948859 -18.41263483 4.92345635 -12.5625 2.0625 C-8.10840177 0.2005409 -4.78183446 -0.53131494 0 0 Z \"\n      fill=\"#B81877\"\n      transform=\"translate(84,29)\"\n    />\n    <path\n      d=\"M0 0 C0.81498562 1.6029053 1.62689927 3.20737278 2.4375 4.8125 C3.11619141 6.15248047 3.11619141 6.15248047 3.80859375 7.51953125 C6.21743422 12.53465814 6.21674323 16.73754683 6.25 22.1875 C6.270625 23.01314453 6.29125 23.83878906 6.3125 24.68945312 C6.34922614 30.51513648 5.20948343 34.62573923 3 40 C3.19822852 43.3038087 3.91828363 45.77888512 5.0625 48.875 C6.23249378 52.77497927 6.13998031 55.94057089 6 60 C2.125 59.125 2.125 59.125 1 58 C0.60430892 55.98688551 0.25747809 53.96402792 -0.0625 51.9375 C-0.23910156 50.83277344 -0.41570312 49.72804687 -0.59765625 48.58984375 C-0.73042969 47.73519531 -0.86320312 46.88054687 -1 46 C-1.66 46 -2.32 46 -3 46 C-2.979375 45.05125 -2.95875 44.1025 -2.9375 43.125 C-2.77448174 40.09333717 -2.77448174 40.09333717 -4 38 C-4.52722656 38.15984375 -5.05445312 38.3196875 -5.59765625 38.484375 C-8.57890664 39.12425313 -11.38880912 39.20770602 -14.4375 39.25 C-16.10619141 39.28867188 -16.10619141 39.28867188 -17.80859375 39.328125 C-21.36004724 38.96298168 -23.16360065 38.12729951 -26 36 C-28.49520882 32.30020761 -29.66736937 28.85373066 -29.4765625 24.34375 C-27.97502038 16.9591166 -23.99212045 9.71183601 -17.91796875 5.1796875 C-11.97832005 1.52638015 -7.02323198 -0.59772187 0 0 Z \"\n      fill=\"#192342\"\n      transform=\"translate(84,29)\"\n    />\n    <path\n      d=\"M0 0 C4.8325314 2.37067578 7.76408623 5.09818904 10 10 C10.7762251 16.84647984 10.98839331 23.18359309 7 29 C6.34 29 5.68 29 5 29 C5 28.34 5 27.68 5 27 C4.34 27 3.68 27 3 27 C2.85884766 28.31871094 2.85884766 28.31871094 2.71484375 29.6640625 C1.9322283 33.31626793 0.73647182 35.36488517 -1.4375 38.375 C-2.05496094 39.24898437 -2.67242187 40.12296875 -3.30859375 41.0234375 C-3.86675781 41.67570312 -4.42492187 42.32796875 -5 43 C-5.66 43 -6.32 43 -7 43 C-7 43.66 -7 44.32 -7 45 C-9.475 45.495 -9.475 45.495 -12 46 C-13.25664978 43.09399739 -14 41.20395416 -14 38 C-14.763125 38.495 -15.52625 38.99 -16.3125 39.5 C-19 41 -19 41 -22 41 C-22.02698189 39.37509046 -22.04638757 37.75005367 -22.0625 36.125 C-22.07410156 35.22007813 -22.08570312 34.31515625 -22.09765625 33.3828125 C-22 31 -22 31 -21 29 C-21.99 28.67 -22.98 28.34 -24 28 C-23.38029501 18.19156581 -23.38029501 18.19156581 -20 14 C-19.34 14 -18.68 14 -18 14 C-18 12.989375 -18 11.97875 -18 10.9375 C-17.33343341 6.40114402 -14.81042181 4.10520123 -11.3203125 1.328125 C-7.49529833 -0.86127705 -4.24744824 -0.98502974 0 0 Z \"\n      fill=\"#1EA6CF\"\n      transform=\"translate(43,50)\"\n    />\n    <path\n      d=\"M0 0 C4 4.31578947 4 4.31578947 4 8 C3.195625 7.67 2.39125 7.34 1.5625 7 C-5.98576918 4.8811876 -11.01209358 5.77299686 -17.9609375 9.17578125 C-20.93510569 10.37798334 -22.90532882 9.72815793 -26 9 C-31.65481291 8.55418487 -36.40219219 8.21511196 -41.5625 10.75 C-42.7690625 11.86375 -42.7690625 11.86375 -44 13 C-44.639375 13.5775 -45.27875 14.155 -45.9375 14.75 C-47.57497023 18.21758402 -46.96157446 21.4172448 -46 25 C-44.53888984 27.79897943 -44.53888984 27.79897943 -43 30 C-43 30.66 -43 31.32 -43 32 C-42.34 32.33 -41.68 32.66 -41 33 C-41.59167969 33.08636719 -42.18335937 33.17273437 -42.79296875 33.26171875 C-48.2975583 34.240512 -51.55344351 35.30015024 -55 40 C-55.92345923 42.34267025 -56.46568619 44.52272687 -57 47 C-57.66 47 -58.32 47 -59 47 C-59.64722183 31.46667611 -59.27679357 15.6234249 -48.546875 3.3359375 C-37.01797106 -8.02506978 -12.72743656 -10.12409726 0 0 Z \"\n      fill=\"#63BA50\"\n      transform=\"translate(82,17)\"\n    />\n    <path\n      d=\"M0 0 C0.99 0.33 1.98 0.66 3 1 C4.125 6.75 4.125 6.75 3 9 C3.66 9 4.32 9 5 9 C7.02512352 13.17681725 7.70408743 16.38431573 7 21 C4.97381193 23.98805825 2.54369132 26.450976 0 29 C-0.825 29.99 -1.65 30.98 -2.5 32 C-5.78938167 34.63150533 -7.89283747 34.15353879 -12 34 C-12.02505615 33.38592285 -12.0501123 32.7718457 -12.07592773 32.13916016 C-12.19345264 29.30097366 -12.31545526 26.4629956 -12.4375 23.625 C-12.47681641 22.65949219 -12.51613281 21.69398437 -12.55664062 20.69921875 C-12.82980822 14.43737688 -13.30323128 8.22902691 -14 2 C-13.15695313 1.93941406 -12.31390625 1.87882812 -11.4453125 1.81640625 C-10.34960938 1.73261719 -9.25390625 1.64882812 -8.125 1.5625 C-7.03445312 1.48128906 -5.94390625 1.40007812 -4.8203125 1.31640625 C-2.05271029 1.16998297 -2.05271029 1.16998297 0 0 Z \"\n      fill=\"#EACD35\"\n      transform=\"translate(78,66)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 1.65 1 3.3 1 5 C4.3 3.35 7.6 1.7 11 0 C11.33 1.98 11.66 3.96 12 6 C14.38564077 5.42415568 16.66682784 4.77772405 19 4 C20.31626692 7.61973402 21 10.09567131 21 14 C21.66 14.33 22.32 14.66 23 15 C21.7260411 17.03833424 20.38938077 19.03852126 19 21 C18.34 21 17.68 21 17 21 C17 21.66 17 22.32 17 23 C15.35 23.33 13.7 23.66 12 24 C10.74335022 21.09399739 10 19.20395416 10 16 C9.236875 16.495 8.47375 16.99 7.6875 17.5 C5 19 5 19 2 19 C1.97301811 17.37509046 1.95361243 15.75005367 1.9375 14.125 C1.92589844 13.22007813 1.91429688 12.31515625 1.90234375 11.3828125 C2 9 2 9 3 7 C2.01 6.67 1.02 6.34 0 6 C0 4.02 0 2.04 0 0 Z \"\n      fill=\"#1F4A8C\"\n      transform=\"translate(19,72)\"\n    />\n    <path\n      d=\"M0 0 C0.96744141 -0.01611328 1.93488281 -0.03222656 2.93164062 -0.04882812 C8.33082764 -0.05252367 12.31240995 0.19113381 16.9375 3.3125 C17.4325 4.3025 17.4325 4.3025 17.9375 5.3125 C17.17566406 5.26609375 16.41382813 5.2196875 15.62890625 5.171875 C9.06785136 4.94252477 4.70499033 5.524537 -1.12890625 8.48828125 C-4.03103114 9.72534863 -6.02811833 9.02647216 -9.0625 8.3125 C-17.19553015 7.48591259 -17.19553015 7.48591259 -24.625 10.1875 C-25.429375 10.88875 -26.23375 11.59 -27.0625 12.3125 C-28.0525 12.9725 -29.0425 13.6325 -30.0625 14.3125 C-27.79030304 8.73528927 -23.36231107 4.96240554 -18.0625 2.3125 C-12.00860544 0.14869012 -6.39489827 -0.02138762 0 0 Z \"\n      fill=\"#4D619A\"\n      transform=\"translate(65.0625,17.6875)\"\n    />\n    <path\n      d=\"M0 0 C0.66 0.33 1.32 0.66 2 1 C2.54591121 4.74339115 2.75830191 6.86468923 0.6171875 10.0703125 C-1.18733496 12.12481209 -3.06881924 14.06477065 -5 16 C-5.825 16.99 -6.65 17.98 -7.5 19 C-10.7807952 21.62463616 -12.9090117 21.40107728 -17 21 C-17 16.71 -17 12.42 -17 8 C-15.63875 7.896875 -14.2775 7.79375 -12.875 7.6875 C-8.70279004 7.21443052 -5.56128172 6.34523431 -2 4 C-0.59533047 1.94906855 -0.59533047 1.94906855 0 0 Z \"\n      fill=\"#E6622C\"\n      transform=\"translate(83,79)\"\n    />\n    <path\n      d=\"M0 0 C5.89469527 9.83174266 7.18180743 19.160854 4.8046875 30.37890625 C3.50999034 34.59609942 1.59215521 38.4274784 -1 42 C-1.99 42.495 -1.99 42.495 -3 43 C-2.7834375 42.49855469 -2.566875 41.99710938 -2.34375 41.48046875 C1.20607508 31.83349041 2.41912837 18.13436232 -1.9375 8.5625 C-2.29714844 7.94503906 -2.65679687 7.32757813 -3.02734375 6.69140625 C-4.10211735 4.82242244 -4.56122607 3.10149618 -5 1 C-12.68636026 2.35225523 -12.68636026 2.35225523 -20 5 C-20 4.34 -20 3.68 -20 3 C-13.45841601 -0.65111665 -7.36120371 -0.29887594 0 0 Z \"\n      fill=\"#A7A6A4\"\n      transform=\"translate(89,28)\"\n    />\n    <path\n      d=\"M0 0 C0.8971875 0.495 0.8971875 0.495 1.8125 1 C4.05386471 2.20787988 4.05386471 2.20787988 7 2 C7.66 1.67 8.32 1.34 9 1 C10.5 2.25 10.5 2.25 12 4 C12 5.32 12 6.64 12 8 C13.98 7.67 15.96 7.34 18 7 C17.34 8.32 16.68 9.64 16 11 C15.34 11 14.68 11 14 11 C14 10.34 14 9.68 14 9 C13.34 9 12.68 9 12 9 C11.87625 9.928125 11.7525 10.85625 11.625 11.8125 C11 15 11 15 9 18 C8.01 18 7.02 18 6 18 C5.01 15.03 4.02 12.06 3 9 C2.01 9.66 1.02 10.32 0 11 C-2.1875 10.625 -2.1875 10.625 -4 10 C-4.25 6.6875 -4.25 6.6875 -4 3 C-2 1.0625 -2 1.0625 0 0 Z \"\n      fill=\"#2774BA\"\n      transform=\"translate(34,68)\"\n    />\n    <path\n      d=\"M0 0 C0 0.99 0 1.98 0 3 C-0.70125 3.03738281 -1.4025 3.07476563 -2.125 3.11328125 C-6.89147838 3.44356712 -10.95037927 3.77966704 -15.3125 5.8125 C-16.529375 6.204375 -17.74625 6.59625 -19 7 C-22.5 5.1875 -22.5 5.1875 -25 3 C-24.67 2.01 -24.34 1.02 -24 0 C-15.51939583 -4.08886272 -8.386863 -4.28265345 0 0 Z \"\n      fill=\"#EA5934\"\n      transform=\"translate(87,25)\"\n    />\n    <path\n      d=\"M0 0 C1.0725 -0.01417969 2.145 -0.02835938 3.25 -0.04296875 C6 0.1875 6 0.1875 8 2.1875 C5.69 2.5175 3.38 2.8475 1 3.1875 C1.66 4.8375 2.32 6.4875 3 8.1875 C2.030625 8.001875 1.06125 7.81625 0.0625 7.625 C-0.948125 7.480625 -1.95875 7.33625 -3 7.1875 C-4.29633621 8.25395115 -4.29633621 8.25395115 -4.0625 10.75 C-4.041875 11.554375 -4.02125 12.35875 -4 13.1875 C-0.41672247 14.18967064 -0.41672247 14.18967064 3 13.1875 C2.67 14.1775 2.34 15.1675 2 16.1875 C-3.37313433 17.50093284 -3.37313433 17.50093284 -5.875 16.25 C-7.67836628 12.94382849 -7.18323695 9.91331793 -7 6.1875 C-9.64 7.8375 -12.28 9.4875 -15 11.1875 C-14.84817368 8.53053932 -14.52675976 6.74515476 -12.66796875 4.77734375 C-8.15385945 1.01009439 -5.79544929 0.03482842 0 0 Z \"\n      fill=\"#EEDF4B\"\n      transform=\"translate(50,24.8125)\"\n    />\n    <path\n      d=\"M0 0 C0.70253906 0.14308594 1.40507813 0.28617188 2.12890625 0.43359375 C4.04732904 0.81205811 5.97237089 1.15835381 7.90234375 1.47265625 C13.55141693 2.57048128 17.2289345 3.43112036 20.75 8.1875 C21.53390986 9.43770106 22.29727619 10.70242665 23 12 C20 13 20 13 16.6015625 11.5234375 C15.27036372 10.81790215 13.94500705 10.10125871 12.625 9.375 C11.965 9.03082031 11.305 8.68664063 10.625 8.33203125 C6.37639529 6.03846177 3.24765018 3.57366911 0 0 Z \"\n      fill=\"#0C1222\"\n      transform=\"translate(59,52)\"\n    />\n    <path\n      d=\"M0 0 C0.99 0.33 1.98 0.66 3 1 C5.66161816 6.61897168 6.3306901 10.82711812 6 17 C2.125 16.125 2.125 16.125 1 15 C0.60430892 12.98688551 0.25747809 10.96402792 -0.0625 8.9375 C-0.23910156 7.83277344 -0.41570312 6.72804688 -0.59765625 5.58984375 C-0.73042969 4.73519531 -0.86320312 3.88054687 -1 3 C-1.66 3 -2.32 3 -3 3 C-2 1 -2 1 0 0 Z \"\n      fill=\"#339A40\"\n      transform=\"translate(84,72)\"\n    />\n    <path\n      d=\"M0 0 C0.8971875 0.495 0.8971875 0.495 1.8125 1 C4.05386471 2.20787988 4.05386471 2.20787988 7 2 C7.66 1.67 8.32 1.34 9 1 C7.95125002 3.62187494 7.35068687 4.79371361 4.875 6.25 C4.25625 6.4975 3.6375 6.745 3 7 C3 7.66 3 8.32 3 9 C0 11 0 11 -2.1875 10.625 C-2.785625 10.41875 -3.38375 10.2125 -4 10 C-4.25 6.6875 -4.25 6.6875 -4 3 C-2 1.0625 -2 1.0625 0 0 Z \"\n      fill=\"#2381C4\"\n      transform=\"translate(34,68)\"\n    />\n    <path\n      d=\"M0 0 C0.66 0.33 1.32 0.66 2 1 C2.56963205 4.90604833 2.73522899 6.91600854 0.4765625 10.24609375 C-1.28122373 12.25857962 -3.03661153 14.18727923 -5 16 C-5.33 16 -5.66 16 -6 16 C-6 12.7 -6 9.4 -6 6 C-4.68 5.34 -3.36 4.68 -2 4 C-0.73195434 1.9664052 -0.73195434 1.9664052 0 0 Z \"\n      fill=\"#DB8E22\"\n      transform=\"translate(83,79)\"\n    />\n    <path\n      d=\"M0 0 C0.336611 1.77021322 0.66917293 3.54119674 1 5.3125 C1.185625 6.29863281 1.37125 7.28476562 1.5625 8.30078125 C2 11 2 11 2 14 C1.34 13.67 0.68 13.34 0 13 C0 15.64 0 18.28 0 21 C-0.33 21 -0.66 21 -1 21 C-1.01417969 20.3709375 -1.02835938 19.741875 -1.04296875 19.09375 C-1.41572683 12.40425361 -3.10211236 8.37276404 -7 3 C-7.33 2.34 -7.66 1.68 -8 1 C-1.125 0 -1.125 0 0 0 Z \"\n      fill=\"#DB216C\"\n      transform=\"translate(55,51)\"\n    />\n    <path\n      d=\"M0 0 C4.55555556 0.55555556 4.55555556 0.55555556 6 2 C6.1875 4.4375 6.1875 4.4375 6 7 C5.34 7.66 4.68 8.32 4 9 C-0.55555556 8.44444444 -0.55555556 8.44444444 -2 7 C-2.1875 4.5625 -2.1875 4.5625 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z \"\n      fill=\"#0D0C1F\"\n      transform=\"translate(47,31)\"\n    />\n    <path\n      d=\"M0 0 C2.109375 4.7109375 2.109375 4.7109375 1.125 7.3125 C0.568125 8.1478125 0.568125 8.1478125 0 9 C-0.66 9 -1.32 9 -2 9 C-5 3.25 -5 3.25 -5 1 C-12.68636026 2.35225523 -12.68636026 2.35225523 -20 5 C-20 4.34 -20 3.68 -20 3 C-13.45841601 -0.65111665 -7.36120371 -0.29887594 0 0 Z \"\n      fill=\"#CCBFBC\"\n      transform=\"translate(89,28)\"\n    />\n    <path\n      d=\"M0 0 C0.66 1.32 1.32 2.64 2 4 C1.030625 3.814375 0.06125 3.62875 -0.9375 3.4375 C-1.948125 3.293125 -2.95875 3.14875 -4 3 C-5.29633621 4.06645115 -5.29633621 4.06645115 -5.0625 6.5625 C-5.041875 7.366875 -5.02125 8.17125 -5 9 C-1.41672247 10.00217064 -1.41672247 10.00217064 2 9 C1.67 9.99 1.34 10.98 1 12 C-4.4 13.32 -4.4 13.32 -6.875 12 C-8.61178961 8.91237402 -8.37142345 6.4666189 -8 3 C-5.91685466 -0.39881608 -3.78885018 -0.30720407 0 0 Z \"\n      fill=\"#FAF9ED\"\n      transform=\"translate(51,29)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 7.26 1 14.52 1 22 C2.98 22 4.96 22 7 22 C3.375 26.875 3.375 26.875 0 28 C0 18.76 0 9.52 0 0 Z \"\n      fill=\"#BF2563\"\n      transform=\"translate(65,78)\"\n    />\n    <path\n      d=\"M0 0 C0.99 0.33 1.98 0.66 3 1 C4.36884358 5.51718381 3.47075246 8.58774263 2 13 C1.67 13 1.34 13 1 13 C0.34 9.7 -0.32 6.4 -1 3 C-1.66 3 -2.32 3 -3 3 C-2 1 -2 1 0 0 Z \"\n      fill=\"#38A549\"\n      transform=\"translate(84,72)\"\n    />\n    <path\n      d=\"M0 0 C0.99 0.33 1.98 0.66 3 1 C2.01 1.495 2.01 1.495 1 2 C1.66 2.66 2.32 3.32 3 4 C1.783125 4.4125 0.56625 4.825 -0.6875 5.25 C-4.36735474 6.6160562 -7.06918364 8.34394768 -10 11 C-7.99155908 6.07019047 -4.35894926 2.90596617 0 0 Z \"\n      fill=\"#475E88\"\n      transform=\"translate(45,21)\"\n    />\n    <path\n      d=\"M0 0 C3.35435922 1.38801071 5.11290303 2.88629 7 6 C7 6.99 7 7.98 7 9 C3.58841744 7.86280581 2.88145399 6.95657056 1 4 C1 3.34 1 2.68 1 2 C0.34 1.67 -0.32 1.34 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z \"\n      fill=\"#6AA83B\"\n      transform=\"translate(79,16)\"\n    />\n    <path\n      d=\"M0 0 C0 1.65 0 3.3 0 5 C-1.98 5.99 -1.98 5.99 -4 7 C-5.32 5.02 -6.64 3.04 -8 1 C-1.125 0 -1.125 0 0 0 Z \"\n      fill=\"#C01F60\"\n      transform=\"translate(55,51)\"\n    />\n    <path\n      d=\"M0 0 C2.125 0.375 2.125 0.375 4 1 C3.01 1.33 2.02 1.66 1 2 C1 3.32 1 4.64 1 6 C2.32 6.66 3.64 7.32 5 8 C3.1875 8.625 3.1875 8.625 1 9 C0.01 8.34 -0.98 7.68 -2 7 C-2.3125 4.5 -2.3125 4.5 -2 2 C-1.34 1.34 -0.68 0.68 0 0 Z \"\n      fill=\"#793CA7\"\n      transform=\"translate(47,31)\"\n    />\n    <path\n      d=\"M0 0 C1.98 0 3.96 0 6 0 C4.71937515 1.7074998 3.38232443 3.37373596 2 5 C1.34 5 0.68 5 0 5 C0 3.35 0 1.7 0 0 Z \"\n      fill=\"#C6342C\"\n      transform=\"translate(66,100)\"\n    />\n    <path\n      d=\"M0 0 C0.99 0 1.98 0 3 0 C3 0.99 3 1.98 3 3 C0.5 4.6875 0.5 4.6875 -2 6 C-1.125 1.125 -1.125 1.125 0 0 Z \"\n      fill=\"#F4E23F\"\n      transform=\"translate(37,30)\"\n    />\n    <path\n      d=\"M0 0 C0.33 1.32 0.66 2.64 1 4 C-1 5 -3 6 -5 7 C-5 5.68 -5 4.36 -5 3 C-2.5 1.25 -2.5 1.25 0 0 Z \"\n      fill=\"#1D5A9D\"\n      transform=\"translate(29,72)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 4.29 1 8.58 1 13 C0.67 13 0.34 13 0 13 C0 8.71 0 4.42 0 0 Z \"\n      fill=\"#80E180\"\n      transform=\"translate(21,47)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 1.98 1 3.96 1 6 C0.67 6 0.34 6 0 6 C0 4.02 0 2.04 0 0 Z \"\n      fill=\"#E9E9E9\"\n      transform=\"translate(95,39)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 1.65 1 3.3 1 5 C0.67 5 0.34 5 0 5 C0 3.35 0 1.7 0 0 Z \"\n      fill=\"#80CC80\"\n      transform=\"translate(91,83)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 1.65 1 3.3 1 5 C0.67 5 0.34 5 0 5 C0 3.35 0 1.7 0 0 Z \"\n      fill=\"#197F99\"\n      transform=\"translate(19,82)\"\n    />\n    <path\n      d=\"M0 0 C0.33 0 0.66 0 1 0 C1 1.65 1 3.3 1 5 C0.67 5 0.34 5 0 5 C0 3.35 0 1.7 0 0 Z \"\n      fill=\"#1980B2\"\n      transform=\"translate(17,73)\"\n    />\n    <path\n      d=\"M0 0 C4 1 4 1 4 1 Z \"\n      fill=\"#9FBF60\"\n      transform=\"translate(69,10)\"\n    />\n    <path\n      d=\"M0 0 C4 1 4 1 4 1 Z \"\n      fill=\"#80FF80\"\n      transform=\"translate(52,10)\"\n    />\n    <path d=\"\" fill=\"#2A6AAA\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80AA80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#1C637F\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#AAAAAA\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80D480\" transform=\"translate(0,0)\" />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#400040\"\n      transform=\"translate(60,111)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#7F407F\"\n      transform=\"translate(44,101)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#008080\"\n      transform=\"translate(32,97)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#004080\"\n      transform=\"translate(34,96)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#004040\"\n      transform=\"translate(36,95)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#004080\"\n      transform=\"translate(22,92)\"\n    />\n    <path d=\"\" fill=\"#406080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#40BF40\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#609F60\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#40BFFF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#407FFF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFBFBF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#009595\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFBF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFFFFF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFBFBF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFBFBF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80BF40\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFFF80\" transform=\"translate(0,0)\" />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#80BF40\"\n      transform=\"translate(42,13)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#BFFF40\"\n      transform=\"translate(45,12)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#80BF80\"\n      transform=\"translate(74,11)\"\n    />\n    <path\n      d=\"M0 0 C2 1 2 1 2 1 Z \"\n      fill=\"#80FF80\"\n      transform=\"translate(48,11)\"\n    />\n    <path d=\"\" fill=\"#800080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF00FF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#804080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF0000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF4080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF4040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#800080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FF8080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#008080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFFF55\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFAA55\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#000080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFAA00\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#008080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#55AA55\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#AAAA00\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#008080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#499224\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#804080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BFBFBF\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#BF8040\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80BF40\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80BF40\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFFF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808080\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80BF40\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#FFFF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#808000\" transform=\"translate(0,0)\" />\n    <path d=\"\" fill=\"#80FF80\" transform=\"translate(0,0)\" />\n  </svg>\n);\nexport default SvgMaritalkIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Maritalk/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgMaritalkIcon from \"./MaritalkIcon\";\n\nexport const MaritalkIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgMaritalkIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Meta/MetaIcon.jsx",
    "content": "const SvgMetaIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    data-name=\"Layer 1\"\n    viewBox=\"0 0 287.56 191\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <defs>\n      <linearGradient\n        id=\"meta-icon_svg__a\"\n        x1={62.34}\n        x2={260.34}\n        y1={101.45}\n        y2={91.45}\n        gradientTransform=\"matrix(1 0 0 -1 0 192)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#0064e1\" />\n        <stop offset={0.4} stopColor=\"#0064e1\" />\n        <stop offset={0.83} stopColor=\"#0073ee\" />\n        <stop offset={1} stopColor=\"#0082fb\" />\n      </linearGradient>\n      <linearGradient\n        id=\"meta-icon_svg__b\"\n        x1={41.42}\n        x2={41.42}\n        y1={53}\n        y2={126}\n        gradientTransform=\"matrix(1 0 0 -1 0 192)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#0082fb\" />\n        <stop offset={1} stopColor=\"#0064e0\" />\n      </linearGradient>\n    </defs>\n    <path\n      d=\"M31.06 126c0 11 2.41 19.41 5.56 24.51A19 19 0 0 0 53.19 160c8.1 0 15.51-2 29.79-21.76 11.44-15.83 24.92-38 34-52l15.36-23.6c10.67-16.39 23-34.61 37.18-47C181.07 5.6 193.54 0 206.09 0c21.07 0 41.14 12.21 56.5 35.11 16.81 25.08 25 56.67 25 89.27 0 19.38-3.82 33.62-10.32 44.87C271 180.13 258.72 191 238.13 191v-31c17.63 0 22-16.2 22-34.74 0-26.42-6.16-55.74-19.73-76.69-9.63-14.86-22.11-23.94-35.84-23.94-14.85 0-26.8 11.2-40.23 31.17-7.14 10.61-14.47 23.54-22.7 38.13l-9.06 16c-18.2 32.27-22.81 39.62-31.91 51.75C84.74 183 71.12 191 53.19 191c-21.27 0-34.72-9.21-43-23.09C3.34 156.6 0 141.76 0 124.85Z\"\n      style={{\n        fill: \"#0081fb\",\n      }}\n    />\n    <path\n      d=\"M24.49 37.3C38.73 15.35 59.28 0 82.85 0c13.65 0 27.22 4 41.39 15.61 15.5 12.65 32 33.48 52.63 67.81l7.39 12.32c17.84 29.72 28 45 33.93 52.22 7.64 9.26 13 12 19.94 12 17.63 0 22-16.2 22-34.74l27.4-.86c0 19.38-3.82 33.62-10.32 44.87C271 180.13 258.72 191 238.13 191c-12.8 0-24.14-2.78-36.68-14.61-9.64-9.08-20.91-25.21-29.58-39.71L146.08 93.6c-12.94-21.62-24.81-37.74-31.68-45-7.4-7.89-16.89-17.37-32.05-17.37-12.27 0-22.69 8.61-31.41 21.78Z\"\n      style={{\n        fill: \"url(#meta-icon_svg__a)\",\n      }}\n    />\n    <path\n      d=\"M82.35 31.23c-12.27 0-22.69 8.61-31.41 21.78C38.61 71.62 31.06 99.34 31.06 126c0 11 2.41 19.41 5.56 24.51l-26.48 17.4C3.34 156.6 0 141.76 0 124.85 0 94.1 8.44 62.05 24.49 37.3 38.73 15.35 59.28 0 82.85 0Z\"\n      style={{\n        fill: \"url(#meta-icon_svg__b)\",\n      }}\n    />\n  </svg>\n);\nexport default SvgMetaIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Meta/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgMetaIcon from \"./MetaIcon\";\n\nexport const MetaIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgMetaIcon ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Midjorney/MidjourneyEmblem.jsx",
    "content": "const SvgMidjourneyEmblem = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 1024 1024\"\n    {...props}\n  >\n    <path d=\"M261 222.8c-4.5 4.6-4 7.5 3.3 21.1 32.2 59 53.7 120.8 60.2 173.1 1.8 14.4 2 47.9.5 65.8-5.9 68.9-29.7 131.7-64.2 169.9-5.5 6-6.5 9.1-4.8 13.4 3.2 7.7 9.1 7.8 21 .5 32.9-20.4 79.4-37.4 122-44.7 12.2-2.1 16.6-2.3 46-2.4 33.9 0 39.1.5 68 5.6 24.8 4.4 54.3 12.6 76.1 21 7.4 2.8 14.6 5.3 16 5.6 3.7.7 8.4-2 9.9-5.7 1.7-4.1-.4-17.8-6.2-40.4-18.4-72.5-60.4-151.6-115.2-217-54.1-64.5-126.6-121.3-203.4-159.3-20.7-10.2-24.6-11.1-29.2-6.5zm43.4 35.8c31.5 17.3 66.9 41.4 96.6 65.8 84 69 149.2 162.5 181.7 260.4 4.9 14.9 11.3 40.6 10.1 41.1-.5.1-4.8-1.1-9.6-2.7-28.1-9.8-61.9-17.5-94.2-21.4-25.3-3.1-64.1-3.1-86.1 0-31.3 4.4-60.5 12.5-89.4 24.7-6 2.6-11.6 4.9-12.4 5.3-1 .4-.8-.5.7-2.9 3.3-5.5 13.6-26.6 17.5-36 20-48.5 30.4-117.1 25.6-168.9-4.4-47.7-23.4-110-49.5-162.2-2.4-4.8-4.4-9-4.4-9.3 0-1 1.5-.3 13.4 6.1z\" />\n    <path d=\"M448.8 292.6c-3.4 1.8-4.8 4.3-4.8 8.6 0 4.5 1.1 5.8 10.2 12 25.8 17.7 61.5 50.8 80.1 74.3 41.9 52.7 86.1 142.6 111.8 227.5 2.8 9 5.8 17.3 6.7 18.3 3 3.4 5.9 3.8 14.4 2.2 4.4-.8 12.4-1.8 17.7-2.1 11.8-.7 21.3 1.6 42.5 10 17.9 7.2 22.2 7.2 25.1.2 1.7-4.1 1.3-5.9-6.6-26.1-23.9-61.6-55.5-120.6-87.3-163-5.1-6.9-18-23-19.6-24.5-.3-.3-3-3.2-5.9-6.5-57.4-63.2-114.1-109.3-155.1-126-6.8-2.7-21.1-6.5-24.5-6.5-1.1.1-3.2.7-4.7 1.6zM554 372.4c14.9 12.9 57.7 55.8 70.4 70.6 31.5 36.7 62.5 87.4 87.3 143 7 15.7 14.3 33.5 14.3 34.9 0 .5-4.8-.7-10.7-2.7-10.4-3.5-11.4-3.6-25.3-3.6-8-.1-16.5.1-18.9.4l-4.4.4-5.2-16.4c-21.4-67.7-54.3-138.3-90.2-193.5-4.7-7.2-10.4-15.5-12.6-18.5-6.1-8-22.1-27.2-24.6-29.4-1.1-1.1-2.1-2.3-2.1-2.8 0-1.1 5.5 3.3 22 17.6zM808 660.8c-4.7.2-69.9 4.4-135.5 8.7-20.9 1.4-45.6 2.9-55 3.5-9.3.6-26.4 1.7-38 2.5-11.5.8-29.1 1.9-39 2.5-9.9.6-34.9 2.2-55.5 3.5-20.6 1.4-58.6 3.8-84.5 5.5-25.8 1.7-60.7 3.9-77.5 5-16.8 1.1-45.1 2.9-63 4-48.3 2.9-47.8 2.8-50 9.6-1.3 3.9-.5 6 12.3 30l6.5 12.1-16.6 11.4c-26.9 18.5-36.6 23.9-42.9 23.9-1.4 0-3.7 1.3-5.4 2.9-4.1 4.1-4 9.1.2 13.3 2.9 2.9 3.3 3 9.5 2.5 8.7-.7 19.7-6 37.8-18.4 30.5-21 38.1-25.3 44.6-25.3 4.8 0 10 3.2 25.9 15.9 21.5 17.1 29.6 22 42.6 26 10.8 3.4 21.3 3.8 31.5 1.2 11.9-2.9 20.2-7.5 37.7-20.5 20.1-15.1 24.3-17.1 35.3-17.1 10.8 0 15.5 2.2 29.5 13.5 15.9 12.9 20.2 16 27.9 19.9 9.1 4.6 16.8 6.4 27.1 6.4 15.4-.1 28.4-6.3 47.5-22.4 17.8-15 25.7-18.5 39.3-17.6 10.1.7 16 3.5 29 14.1 26.5 21.5 36.8 26.6 54.5 26.6 16.1 0 28.1-5.4 49-22.2 8.1-6.4 17.6-13.2 21.2-15 6-3 7.2-3.3 16.5-3.3s10.5.2 16.6 3.2c3.8 1.9 11.4 7.4 17.6 12.7 6.1 5.2 13.3 11.1 15.9 13.2 11.2 8.6 29.4 14.3 36.3 11.4 3.6-1.5 6.1-5.5 6.1-9.8 0-4.4-5.8-9.2-11-9.2-8.4 0-14.5-3.4-31-17.5-21-18-30.1-22.7-46.6-24.1-16.2-1.5-30.4 4.5-52.4 22.1-21.1 16.9-30.7 20.9-44.2 18.5-5.5-1-17.5-5.7-16.6-6.5.2-.2 5.9-3.1 12.8-6.6 25-12.5 63.7-34.4 80-45.3 21.3-14.2 64-46.3 66.5-50 2-2.8 1.8-8.6-.3-11.3-2-2.7-6.1-3.9-12.2-3.5zm-28 21.9c0 .9-27.4 20.5-39.6 28.5-23 15-74.5 42.9-91.6 49.7l-5.6 2.3-6.9-5.3c-18.4-14.2-38.5-18.1-57.4-11.3-9.2 3.3-17.1 8.4-32.4 20.9-6.6 5.4-14.9 11.2-18.5 12.9-5.8 2.7-7.5 3.1-15.5 3.1-13.3 0-18.5-2.7-42.4-22.2-21-17.1-38.3-21.6-57.6-15.1-8.1 2.8-15.4 7.3-32 19.8-7.7 5.8-16.9 11.9-20.5 13.5-6 2.8-7.4 3-17.5 3-10.6 0-11.3-.1-18.7-3.7-9.8-4.6-14.3-7.7-29.3-19.9-21.7-17.4-30.7-21.8-42.4-20.4l-5.7.7-5.6-10.4c-3-5.7-5.2-10.6-4.9-10.9.6-.7 24.1-2.4 79.1-5.9 17.3-1.1 56-3.6 86-5.5s71.8-4.6 93-6c21.2-1.3 49.3-3.2 62.5-4 13.2-.9 44.9-2.9 70.5-4.5 60.9-4 120.5-7.9 135.5-8.9 17.2-1.2 17.5-1.2 17.5-.4z\" />\n  </svg>\n);\nexport default SvgMidjourneyEmblem;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Midjorney/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgMidjourneyEmblem from \"./MidjourneyEmblem\";\n\nexport const MidjourneyIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgMidjourneyEmblem ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/MongoDB/MongodbIcon.jsx",
    "content": "const SvgMongodbIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 32 32\"\n    {...props}\n  >\n    <path\n      fill=\"#599636\"\n      d=\"m15.9.087.854 1.604c.192.296.4.558.645.802a22.406 22.406 0 0 1 2.004 2.266c1.447 1.9 2.423 4.01 3.12 6.292.418 1.394.645 2.824.662 4.27.07 4.323-1.412 8.035-4.4 11.12a12.7 12.7 0 0 1-1.57 1.342c-.296 0-.436-.227-.558-.436a3.589 3.589 0 0 1-.436-1.255c-.105-.523-.174-1.046-.14-1.586v-.244C16.057 24.21 15.796.21 15.9.087z\"\n    />\n    <path\n      fill=\"#6cac48\"\n      d=\"M15.9.034c-.035-.07-.07-.017-.105.017.017.35-.105.662-.296.96-.21.296-.488.523-.767.767-1.55 1.342-2.77 2.963-3.747 4.776-1.3 2.44-1.97 5.055-2.16 7.808-.087.993.314 4.497.627 5.508.854 2.684 2.388 4.933 4.375 6.885.488.47 1.01.906 1.55 1.325.157 0 .174-.14.21-.244a4.78 4.78 0 0 0 .157-.68l.35-2.614L15.9.034z\"\n    />\n    <path\n      fill=\"#c2bfbf\"\n      d=\"M16.754 28.845c.035-.4.227-.732.436-1.063-.21-.087-.366-.26-.488-.453a3.235 3.235 0 0 1-.26-.575c-.244-.732-.296-1.5-.366-2.248v-.453c-.087.07-.105.662-.105.75a17.37 17.37 0 0 1-.314 2.353c-.052.314-.087.627-.28.906 0 .035 0 .07.017.122.314.924.4 1.865.453 2.824v.35c0 .418-.017.33.33.47.14.052.296.07.436.174.105 0 .122-.087.122-.157l-.052-.575v-1.604c-.017-.28.035-.558.07-.82z\"\n    />\n  </svg>\n);\nexport default SvgMongodbIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/MongoDB/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgMongodbIcon from \"./MongodbIcon\";\n\nexport const MongoDBIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgMongodbIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Notion/NotionLogo.jsx",
    "content": "const SvgNotionLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    fill=\"none\"\n    viewBox=\"0 0 100 100\"\n    {...props}\n  >\n    <path\n      fill=\"#fff\"\n      d=\"M6.017 4.313 61.35.226c6.797-.583 8.543-.19 12.817 2.917L91.83 15.586c2.913 2.14 3.883 2.723 3.883 5.053v68.243c0 4.277-1.553 6.807-6.99 7.193l-64.256 3.892c-4.08.193-6.023-.39-8.16-3.113L3.3 79.94C.967 76.827 0 74.497 0 71.773v-60.66c0-3.497 1.553-6.413 6.017-6.8z\"\n    />\n    <path\n      fill=\"#000\"\n      fillRule=\"evenodd\"\n      d=\"M61.35.227 6.017 4.314C1.553 4.7 0 7.617 0 11.113v60.66c0 2.723.967 5.053 3.3 8.167l13.007 16.913c2.137 2.723 4.08 3.307 8.16 3.113l64.257-3.89c5.433-.387 6.99-2.917 6.99-7.193V20.64c0-2.21-.873-2.847-3.443-4.733L74.167 3.143C69.894.036 68.147-.357 61.35.226zM25.92 19.523c-5.247.353-6.437.433-9.417-1.99l-7.576-6.026c-.77-.78-.383-1.753 1.557-1.947l53.193-3.887c4.467-.39 6.793 1.167 8.54 2.527l9.123 6.61c.39.197 1.36 1.36.193 1.36L26.6 19.477l-.68.047zM19.803 88.3V30.367c0-2.53.777-3.697 3.103-3.893L86 22.78c2.14-.193 3.107 1.167 3.107 3.693V84.02c0 2.53-.39 4.67-3.883 4.863l-60.377 3.5c-3.493.193-5.043-.97-5.043-4.083zm59.6-54.827c.387 1.75 0 3.5-1.75 3.7l-2.91.577v42.773c-2.527 1.36-4.853 2.137-6.797 2.137-3.107 0-3.883-.973-6.21-3.887l-19.03-29.94V77.8l6.02 1.363s0 3.5-4.857 3.5l-13.39.777c-.39-.78 0-2.723 1.357-3.11l3.497-.97v-38.3l-4.853-.393c-.39-1.75.58-4.277 3.3-4.473l14.367-.967 19.8 30.327v-26.83l-5.047-.58c-.39-2.143 1.163-3.7 3.103-3.89l13.4-.78z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\nexport default SvgNotionLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Notion/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgNotionLogo from \"./NotionLogo\";\n\nexport const NotionIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgNotionLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Nvidia/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport NvidiaSVG from \"./nvidia\";\n\nexport const NvidiaIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <NvidiaSVG ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Nvidia/nvidia.jsx",
    "content": "const NvidiaSVG = (props) => (\n  <svg\n    version=\"1.1\"\n    id=\"svg2\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    x=\"0px\"\n    y=\"0px\"\n    width=\"351.46px\"\n    height=\"258.785px\"\n    viewBox=\"35.188 31.512 351.46 258.785\"\n    enable-background=\"new 35.188 31.512 351.46 258.785\"\n    {...props}\n  >\n    <title id=\"title4\">\n      generated by pstoedit version:3.44 from NVBadge_2D.eps\n    </title>\n    <path\n      id=\"path17\"\n      d=\"M384.195,282.109c0,3.771-2.769,6.302-6.047,6.302v-0.023c-3.371,0.023-6.089-2.508-6.089-6.278\n\tc0-3.769,2.718-6.293,6.089-6.293C381.427,275.816,384.195,278.34,384.195,282.109z M386.648,282.109c0-5.175-4.02-8.179-8.5-8.179\n\tc-4.511,0-8.531,3.004-8.531,8.179c0,5.172,4.021,8.188,8.531,8.188C382.629,290.297,386.648,287.281,386.648,282.109\n\t M376.738,282.801h0.91l2.109,3.703h2.316l-2.336-3.859c1.207-0.086,2.2-0.661,2.2-2.286c0-2.019-1.392-2.668-3.75-2.668h-3.411\n\tv8.813h1.961V282.801 M376.738,281.309v-2.122h1.364c0.742,0,1.753,0.06,1.753,0.965c0,0.985-0.523,1.157-1.398,1.157H376.738\"\n    />\n    <path\n      id=\"path19\"\n      d=\"M329.406,237.027l10.598,28.993H318.48L329.406,237.027z M318.056,225.738l-24.423,61.88h17.246l3.863-10.934\n\th28.903l3.656,10.934h18.722l-24.605-61.888L318.056,225.738z M269.023,287.641h17.497v-61.922l-17.5-0.004L269.023,287.641z\n\t M147.556,225.715l-14.598,49.078l-13.984-49.074l-18.879-0.004l19.972,61.926h25.207l20.133-61.926H147.556z M218.281,239.199h7.52\n\tc10.91,0,17.966,4.898,17.966,17.609c0,12.714-7.056,17.613-17.966,17.613h-7.52V239.199z M200.931,225.715v61.926h28.366\n\tc15.113,0,20.048-2.512,25.384-8.148c3.769-3.957,6.207-12.641,6.207-22.134c0-8.707-2.063-16.468-5.66-21.304\n\tc-6.481-8.649-15.817-10.34-29.75-10.34H200.931z M35.188,225.629v62.012h17.645v-47.086l13.672,0.004\n\tc4.527,0,7.754,1.128,9.934,3.457c2.765,2.945,3.894,7.699,3.894,16.395v27.23h17.098v-34.262c0-24.453-15.586-27.75-30.836-27.75\n\tH35.188z M172.771,225.715l0.007,61.926h17.489v-61.926H172.771z\"\n    />\n    <path\n      id=\"path21\"\n      fill=\"#77B900\"\n      d=\"M82.211,102.414c0,0,22.504-33.203,67.437-36.638V53.73\n\tc-49.769,3.997-92.867,46.149-92.867,46.149s24.41,70.565,92.867,77.026v-12.804C99.411,157.781,82.211,102.414,82.211,102.414z\n\t M149.648,138.637v11.726c-37.968-6.769-48.507-46.237-48.507-46.237s18.23-20.195,48.507-23.47v12.867\n\tc-0.023,0-0.039-0.007-0.058-0.007c-15.891-1.907-28.305,12.938-28.305,12.938S128.243,131.445,149.648,138.637 M149.648,31.512\n\tV53.73c1.461-0.112,2.922-0.207,4.391-0.257c56.582-1.907,93.449,46.406,93.449,46.406s-42.343,51.488-86.457,51.488\n\tc-4.043,0-7.828-0.375-11.383-1.005v13.739c3.04,0.386,6.192,0.613,9.481,0.613c41.051,0,70.738-20.965,99.484-45.778\n\tc4.766,3.817,24.278,13.103,28.289,17.168c-27.332,22.883-91.031,41.329-127.144,41.329c-3.481,0-6.824-0.211-10.11-0.528v19.306\n\th156.032V31.512H149.648z M149.648,80.656V65.777c1.446-0.101,2.903-0.179,4.391-0.226c40.688-1.278,67.382,34.965,67.382,34.965\n\ts-28.832,40.043-59.746,40.043c-4.449,0-8.438-0.715-12.028-1.922V93.523c15.84,1.914,19.028,8.911,28.551,24.786l21.18-17.859\n\tc0,0-15.461-20.277-41.524-20.277C155.021,80.172,152.31,80.371,149.648,80.656\"\n    />\n  </svg>\n);\nexport default NvidiaSVG;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Ollama/Ollama.jsx",
    "content": "export const SvgOllama = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"40\"\n    height=\"40\"\n    version=\"1\"\n    viewBox=\"0 0 550 850\"\n  >\n    <defs>\n      <filter id=\"a808475d7c\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\"\n        ></feColorMatrix>\n      </filter>\n      <filter id=\"7c1498cd34\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.2126 0.7152 0.0722 0 0\"\n        ></feColorMatrix>\n      </filter>\n      <image\n        width=\"460\"\n        height=\"460\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcwAAAHMCAAAAAB9sMdaAAAAAmJLR0QA/4ePzL8AACAASURBVHic7Z15gBTFvcere2YvlgUXBDmWGwwgiCCIEQTviPo8MVFRg5rDZ6ISjfGMhGgwiTd5Rp+3iD4TowbxBEEUUTnkDKccuyDLAgILe8/OdL0/FnanZ77Vx3RX1XRTn792a6qrftW/7uo6fvX7EaJQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhSJ4aLIFUPiKpuuyRUhDI1koVDPZ+QZE+w0dUVyUqK/bs+u7srX1ssUhhBBS+INhXTu3N7T9lduXbtxPZYsTECJ9p+42aAsH/thatkhaZPDbcVrTItNn/90qIluoINDq8WRNUkppovIuEpUq06j58RSZaNnFUiUKBpdtTL1tlNL47h9LFKnkzTRVUkoTz7eXKFMQKH4T3DZKKaVvHC1LpjFVDJG2niVLpCCg9S9l6ZLSOTkyRNLJWbuZItVOliFSMNDG1zDvG6XGf06XIFObaTErmT7rIUGmAKCTs63uG6WU3id8ItV7u41IKwpEixQMfmT1Xja9CJMEi9Rrk51I9KMsXkSQR889tjeO0kuEipS30q6voJS+nCtUpkBQYP8SUEoPDhAp02QnIhk3iRQpGPzTyY2j9B8CRepf7kgkY4RAmQLB9c50SeltwkQqWeNQpL0lwmQKBG12OlUmvVyQSJHVjkV6RZBIAeFPjm8cregkRqQpzkUyuosRKRgMaXB+5+hrQkQaWOtCpHezcydRBjp5x8WNo4nTRAg1x41IsVNFiBQMbnJz4yjdKqCjvdOdSJulb7lmC51sl35SeIG7SL2qXYr0HHeRAsLfXN44GuvIW6Rb3IpULW2HLoksWFlscw3jh29Xsy65jJMoh9F+yvhh97xq/EPhr7kJEyhYb8FTbckdaIufUvoFZ5EGMEbXG3qSkYxloapizjIFgrx1+O48EiUk8iT+raEfX5n+jqtNnEwI6bUD/ziRr0jB4FR8b97PJYSQ/Fn41xlcJ3ZD8Ryz/lJCCCH9v4e/flfIU6SA8L/w1tR0a/o1/yuszeM5SqS/jeu8+tDvjM7/FI4iBYXN8M48dvjn4dic6hmOEnXBL+abh3/vsBf+/ihHkQJCD7j/W1HUnAFPXA5y7NTwgkGiy+HftXtghgX8JAoK98Ibc2NLhjbwPTCu5CcStvu5uyVDUSXKUK3MgeCm4f68pBy/SbVwp5RS+j63IdBwqMt9+UlZ7odZ/ouXREFhZCO6LTckZ9G3wVvXi5NEkZdgdQ8n52kLH8HZnCQKCBp5Dt2VzeZ1qQcTKNNjjDK90v4gqs3oa8p0JcqT6MBJpIAQgWZcd5kzHQv72XJOIuF57xJzpjxoSijzQEwW0AfpqT51HX0DunONnCxv7oaPTqqe4Oz4DT4SOUbyQvu5aBizZHdKApxURsf6Lw4hhAxFIn0/KyXhWXTpKMl3U3L154G0RNp25UsxdO2xvktDCCGR41DqjLqUhOWbQK7OQq16s41WaHmnoVVavudRpzaXy+SkB+plG9PPB92HRBJnB5qFjINKSs/XH01gqrmcpv4dEml6er5jkNJ5b83ZILebRbbgxn/S0zauABkLB/ktDiGEwC/xW+lJu1A/O1juuRO5ykR3Tv8mPc0AbyvjvnsF7X3UzAOJG0Bam57+CuMSqcrUB6PU5SAN2sqe7aswTQw8CiQurAKJa+LpaYbcbTCpyuyDlky+3wgSV6PEU/JBokcuRInQ9G4xuHX6GH+lcYlUZY5EiSsaUCr4apHiH/gqDSGEEORzIvYRyrkS3brR/krjEqnKPBElou8TIXNQov8fzRw0y1wGLfIq9oPEvhw6C+dIVWZPlLgEJZKvkH+zYT7K0kT7Y0DiZzBrzXqU2tNHYVwjVZlowYQug1nrF4LEE3yVhhBCTkELEbBXIARMoQjt76c0bpHpxkzrDBK3oJEjIeRr8DnqF0nY15LbqiBH02hNfQ0lmmYQQjS2F0PUy1I0vCaEIBNtnbMNqDUylVncBiSuaMSZP/ptelrB0KWssnP6dO1T0qlrSfvWOblRSjWi0YaqA7u3l1dsW799L1MkNIDZsg/nhcs9PK0GbZGpzJ4ocRUj8zdG+hfBGA2UqRvRwWNPP6MwqcPUNEKIlp/foWmHOb7l85mL9qGXGk58WYck1tUBox8OA+xgcB6yIGCeckemx8ja4JxXK9Dyagqxr+7sm/59bI/WgKexJEIb66m7d0cM49FdZvZTy0Hm1AlgzrDHtzrQ5CF9zp2QumhxEsp3B0uiT0DmuMy5iczRLHLxGd/Oyr0ZpA0x/VcwccmSST0dV59zxoyyV4abbgBcXkSLsIQQQraANL0IJIpCpjLRnM44wMpdCtKKWrY+9fZ3LH9piMvmFFy74K3Tkv6Hbg0rWFd/D9I0mUeoZQ6A0Ju51mDlLgNphT3WNf3R9qqfHJ/Rmbr8iy/e8u/3FxwaQkNLAbg4QAhjrNZpayZi+IPMNxNZgKOnvQnY/zbNC/OvWfX3sRmfj+x924dfHq8RQkgUKbOK6e9/F5qvol0XUchUZluQtoOZGyqzFyGEXLlsujdHPLnDv3mug0ZIHB2v3wENkAghZDtSJpo7i0KmMlG72W/mXnTrOhMy5qvXvdtRRW8o/31bUoAcE2xjXgRllXlKU6Yy0Vihkpm7EilTI3/87GRfhIlOWXMyPPlTyrykGr2zMpUpcwCE2s1YOiOEHGwA9/riM+FsIiO6LvgALbOXMi+IV4FJ5ZE6z0RvJrubNdAUoad/uiQkCs0MmBNf/OTJPNcnU5noIa5hZ+d1uMQGdl9B0AbPkbpokG7sjO+P/U88Ya4ZYIlk3tBsq5uxAUYIIQx3SryxqBYJK9NyNtuUaRGRj70LyROKTH0OgUaz2XZDZdZt8WayZy1csejdgeUskRm8L9uUaYGcbpZCy082MqcmUm2AQJrFg+3yrjZDNWJQTcvwzFiMbTAES3RglcQNuXEp07G45ahTs4RWrVmwdndVdUzTSCQRLezUe/BI14c6LR4hip68TB85P8i2N9MCd5GBY8s/nPOfg6mp+R1PP+MMV+fnYxa2fNnmmV2mMhvBaonFpoPzN5Nqq197Cn5i67e98oo27FcXO98vy7V4hlAQSJnBqGUqsw5oziJIptP4meWfzP0M7WQfhn5z/c1Dzr5ogLOhipVy0OLykfrNREt3Fqthzjq16ptfs5jeHK75yy+nlPzlsjzbjNbKRMLKDF0vc2qC2m2xUe9kaLFzUreX7XVJCCHkuwknv+0gW9ziGUJvZqonC5HIVCZaQEHWB4eotS3QuP+4J10sLawYP/RL20z1Fq8m+sDLHM3KVCZ6iL0MgDYMecBi7Q1AV4z6jd17zDQaIVjYI/XNRONNC/dz1gtlierfD0bnsmx4YiTzuEoTOrvaNi738LiTbW8mMr88hNV+RKLqof4POvxYmll+0tnzrUaguexqYSgTmcqUCXLVhI5hNtHOIoyx8amXQBTaGVYRkh9hXnduPcgu0+mszDczbX2GENKe0atFyI3smD7xTy5197FMYd4FFl/GW/qyfmmHpjaSttAJIXKViQaenRhdXiLnN8xy6IPneNoeo2TRIHSSpYmcX7F+gfHl5Oy6ymcS6tXS526aRnSiPc3sBw+e64Ms+R9Az6SUUhpjWVg/Co4kGkdqyOKJ6NYNTe0tIoQQov2Qea/LfPJuORU6GKeU0pmEwPUnFPXTkGnRLnM5D5pK9VlODEJITvuSYzu3adfl6EhhQtcSxkDWQsynV1lYXLnh/kV/64Z/uXBNjZ7QaaKx5vs9B7aVb91ZRXSDEIKcURw4UkezA9Fr8GdCcnpd/wZ0/gwotZjLuGUUI4xcKvs/e2BsESH56FXGvlKOADqiO7XwzEdwXBHIli721TgH+pDF1M2bdDXq+d/1U54gkQ/fBObHEbCvj68C6YyggC7gFdPBmfwS667fiVJdbN/XX8qeUWSCccfHXovwVyCXSPXQxYxc64zdV873RYwWYle877EEhgOoI4Cp3rq0MzmIlPsZjIjjlAap8W2lvplrPF39D+yg0BuxqzwtDG7zdLVXpBpBAwfezqEPuLa9dMKO570Uy3RmIQSpb+ZmLwYzr3h7r5n82YtJlqfH0zMylWk0lmZ+ceVd9nkyK/iPmV8b5/SAOURu9ISVmV969S7/xDDzxLqML42ikB3ikKnMKNnOdOFkx7v8glXW3mifh4FR7ti6N2xErkNb9Y5ovICnYAsynpos6CK7s5NEBG6BOcPjcoMNE9wsKZrZcmQ6nNWv8DA9H8dVNM3pnk06xvLeXEXLUh7LXJWUt7PBCzJ/Nel64JQ45Axe7OF+NaJQMn6iPZO5cLRuSrYdeuWLdlHGQx9KaT2PRVkzuR97kK9x4RGlzREO9/QhX/i7icng9rq0ip33JZ/K8aAno3/Xclc4jOWyZ9XKXfU1sWjRUYUlx/fLi0dJfO7kJRlPTl3R4bobexl6IrJ/3dqtuyvrI63adOw7pLczB1yJp27lLB1EhjLz5ziIf0ZXzZ+/dGfSOmmksLhz0a4ypttv39GNXl2jjZuqa5POgR3dY+S4MQ4M8GonvslPsGyi1Yd2vZRhbH6sX5YtpbRY2kfOmdVg2+XWn3VEjGn7LrK5D1Xv/iLbZ96tT/vLGptZcuL2I0Cbx5Ra3oNGY6Z3v85CuHCX9SjOmBz6db3cadYP9Cw/HcjyRCc5v9lp/W6eLltG3oxqsGr/6pGBepojD1VbtWaZTD96AijZZtX6/5XpRjkj+q22aE7j/bLF40rfVRZtn39Olg1gnVA02SKMnHFboDoad+RYDH6qLwvoGljHj9kDIePnsqXjhjadrcsyqSFhvfEH9iwlEeBmWXMVW5dV/oePFoc2hdmu+NcB7W9siLQuZz6/5SNlS+eNR9iP6W2yZePDrUxdboOhDgNE3p3sQ/QoSnrgab+b0VzjrXayZfPO5XtZ2pwhWzQO5L7Jam04lr26b2W17yTZovmOfiGrrf+ULZpPdGNNOO2dLQaNvCWMptb65CxEPswxwQ2yJfMb6POHUho7R7ZkvhGZy2jjGplxqP0n0oo1+rlPtmg+wlx4ZjsXCyQPM5o5VbZgvtJ3I25lVUC2aJ0xmDEN+7tswXymxy7czrmyBfMRDTkmo9RYEcBtEmsm4qc2Ply2YP7RHTexMShWBS74F341Q7RycCNu4RtSQ9rx4ZgDsKl1Qhb1hKy+XApT6bNSI7rwYde/YHLeWMFycKMPtpR5Loy2iFqXStRWY244GqsR6PfX2IpCToeAG+CT29glFCvQJK8KNu8y2XJxIoonm3fLlssfroWN8+BoJMu5Erb323D0s/NgL3uRbLH4Ac0vjWGyxfKDPsh4zZgpWyyOjI0hbb4kWyw/eBQ+p71ki8WRyMuwyTJd8fsF3Er4QLZUXDkRrnhNlC2WdwajdtHQzKEREbIUtfk92XJ5517UrvLQrbCbuQ6ZRe8OvgntfKTM12VLxZn2B1GrT+FdLe91iW5w88ezX/ssZ+8XKHV80Kea0D9eg4+RZbKTX6Nm8/Yrxv3NPBUlrg59KLsFKFJ1d0Z4Kt/grUxoARz2XpaQb1EMSP1EzrVyVmbhQJSK9/zCRC2MCcbbtp2zMruj8vev5VtpNjALJfI+68ZZmYNQ4uwGvpVmA7NQQI2hKHy8j3BWJvRZeCREsivbBBLbduRbKe9uFqQZX/GtMytIfA0S4z35VspZmSi8ZVUp3zqzg1UgLZdzpDDOykTbPqvRHCx0rEaOVLvyrVOCMrfwrTJLWIvW7px5q80YzspE63aiQ0zKMYsr3w0SOS9jct6WOQqkiQqxVNRnYO++3bq3bZtLSCJWdXB/VU3Fhk0r9sS4RPdLY8Mx6WnBViZyhsd9vZkQMui8MweWkETz8YdIQUHTtCARqdyw9NP5AhaHt4E0zqdu+SozAg6TGGjZEqIbpEvfjo0HV+zXaNTp6xRJFJ/1k9FNbwWoPUKOGjnyVw0r5sxbGHMqByFEI707d6jbtvOg8wMVB2j6V5PzogFfioAxTFWu06u737aaJhIx2rD05g7Ovnw60Ye/7izKhlH+p55O9xe10S/sMyiltPqNCx1/ge8HlX7o9OJspANoUIWzW6hf9nFty0V1052sa3b8xesVLmLfJJY/dpED+5VWdy5PumjrQw59jv8c1Dg7yGcUuoIGOZmZaCT695TLjOvsrun1V3hmx5LGsnF2IUhyZqZcU/8jR20fD6r73NGVWUoJaNAaJ29mTrpvwfoh7OwaifR7pRZU5oBVV1satGpvp12xy5HR70WgLmhNEhTQkellDsZc0TvAndhRwr6g6KnMQ/4Zyy+0kOTP4IrNTlZyzgcXBtq/U0+gzNUOjkuPhZ7cP8WZdaIf903GqqSUUvoC63hhzimNKP98B70Lckn2ZZBNunqABtlPM7X8b/E9vx7nj0z1EPGvieWn4v5Cw5IYt9u3HXnXXRBkZXYCDfre9iqd4eWBbkP7gUffg89/uuSjM8HsR4PnhCmltXDX3cSvwGVzgzyabQsaVG97Yvps5h1/JS1vZEQV7AhdYxgz05erjq1hZZ9r++VH7qE/4Ptm8n1U6sFuV57dmpb2S+ZPV6Qm5J7wQWt/FrE07cJ/pc1Sxuexsp/WyU4vaO+S86owX2U2oCUzO7fPeeyA0lUpg6ecyxccbScDpYQkKCH2gRrPeyt1IbyBOVjTr7LblUVGFjV8t3I5L7THwKPdbYn1NT3Z/bCesjR6n3UYmPKVizdVVFdW18UjuQVF7dt3GvjDAcx3jRDyoxWjzMvj0Tjz/pz5V8uq8TNba3ONRzgr8yDYjrULTAtNbZvQteRHW3vjx+ysS5bNWVyetiyu5w8ac94JxQQsghNCSNdFFy1O/r+OfXtG5dos1KM3U1zwTx4sA6MAuyNgTCe8lO5K7vZ6rGYsFBirn7m6i8VTmjfi7jl74FF1SmunJK/WohHp4Uo6WbeiFxIu2C5HZoEW2U00H2DfwdKkbDpeKGiITe3qYCCQe/GHWJ2NyVPIm9IDTzfns/FteD24xrjaXrAs5n9Qk2yCJUAnCE1XLkrK9gbW5Wtggx8zbjlca4gldfNjmKJQahOSPnWjgFJKEw7CM3uB8yz2O5Cm2exmsb9F9P3mPyNTkVOo+tf6T9jlTDJCPhx2yVKQnDOrZeiybA/78oOWhetDQSItcyZZloI6G/oX62vgwXlKKaXxlrHTj9FSwUq7sVUqeTfuAcUsbplvvsh+M61nWAVoi7yRs3UeZ4aj22Bj0XU58/7Nah6DDgcfs8SLGdyrE1HgwBbvsMOZq75V1iYgaM+EoiMLAaIzeoEarKNfdGOtobX4UwbusxOvZnT6UY/+vCy9oiebx8LPsZT5iHW5KCSP8X+ZSJg9aJvQjfiz9UV/Y9y/h5pzpG8Y77QZj1jQJr20RLMzuGLsDJhW9bYsszX0ympnLJHtvIUaZWM50gabf2xutgQbkNb5WW1c26I9mFqcMbv5xwm4o33Cusix8CrrByD7uRk1qqGn9UUTUOccH3X45+iSVHd8Hsf8+qupBRrNXqei/0At2GS1KkgIuQtd5Hicna0ci1pF7aL3vg6uaQmBcmXqSLHhAo9Stl+U+visah5r5W5IX8upsgsVMAe1+m2PUspnOWrWXBvTkdzJaXYjTzdvKXVL/Yzt8O74ITI99d18uPm3QVtStfn1QJsl7R/AMNTBd5d8O2pWAq1Cm+i5w3QHv0sa36QGSdmGDoG65p6UUo2WWX/ODLM2p9vuTvwLfTLr0FmNYHEcUiYwGUil+/tG8y2Mv5S00Xh8yo2qt7fgcMTTKZ3BO0m/XdniD9jYdottUSVwchVoc/ZDwMlJvYO1mt63z9xOY7Sh8mlTSPUUm2TDYhvMHQvNBceTZ8OtzvpkP21opGsevaCA2Np+PAYf4Kv8ElQiOKbby84uLu7RswMx3b125s+R4Z9dcdeUGdHT5p8LSwb1cOaMsx887VIdgmDMZBC0ga2xsE+35L6Ugs62yBvpM3pYh6bZqUZIjxE/7Ge5r/CMueRKW4sUTPSf8PENhycrtKdJ6dq2GRXWJmUh7wV21o7PlFFK6fqpfQgh3aftTVCa2PBLi3F0V/Onzrg1IwnJDXDBIM7bo5MYRmKDgPcyCgR2svlO7WLbC+WvPZyp5qa2TxzeiTamW1SbYuNQmomAZDA2451tf2UQ0OFUk9KfZlLYHaZPZtxiZDm5JZuRbFQwhn1J7n6TgIbtBAqQg7e8G72ua2QL0OcspQczOeE/3VTEXvbBXZ0Rl5RaBeH4vakTMdg2n2zG47XcfUG2ZU8mH+0AU5p4yP7SNMwWYo+xM/Zj7USWWtzW7uZjgXe4ly9nDa71WfdFuUfEA1O/AFd9k/vgJjmm/X0rQ7+2LHvjQgtr6G0LTf/2Y2SzYAq+JvFv90VlKacyXpKdJ7gtybyeZBVPrNV2RqVvWpU/wZQV+b+zJPevjEoXhSZchE7+zWhj7WkuizLZFBlTrLKiI3WU0gbLCW6RaVPZ/sCaGQ1ullBKGy0MuwPHINa55v0OvT0cxnS0yjjNKmsERi1P3GNdwVfJmePuDm3lsMy/4uGKfPY8o5m0zN0i11STYqyHw5HZoL5HbSqYZnpaHHu5IYQQcivLaU1DuCKfdWaY0tCEu2DFTyRfi4xyk4mmrz1NtxvwmfrxhCtzv45M8/eH7S8OEhEY6INSSg1X1jumaSYeJCeT6rbiRVt/Z6axWsJVtwF3biml9Dt3L3gAeJWlTMtRTCqvJV/6mn3+cclDkpl2xh6EkH6ZP2gsJxmVvIMmSADGe6WUznFTiGmI4cQMtaBl7WCjkwp6JVcQd+PstzNrleInLgrxhrBVpuil9fgHV+NZU9wFJ8uBdS1/OlKm6diR0ejkkkOcxPCR+NU/XBTiDWHKjH/7Dv4h6mYEZFq9cTJGbN9SuqPtSZNpa6SOlQ3QiWEZ9JSLMjwibv0372W8wKZlrMwedm7viOkw+gh7ew8SNc3uNTdvJmNr7TtxL6ZAZTbcgO9lrb3niBZMR+xyHOz3JgeWO9nePUTcZLiQcKPMHbgdXS9xUYZHxCnzhPE4HcWMYLLe9N8E+wvOaflTdzCqLB6R/F+Fc1fBhDCMkbRfZ7QJnxHilPkkoyob3yNmvjX958BXaPLwaoB99nNMvYer8wR7Gcv+Y2DUSS4IU+YljB3++CduSllhcovUxXbiqCVvmVm6Im3iGtN/jsa/zcxjpGeybZsZwpTJch24ajHjB4j5vKp2o23+5PkQCk5hpuR007/uQgM8z0gf4WCtwh9EKXPMKJxef4O7clab/rvC1g9f8iqR/df5BnN57kJDrmcYU0budVVMAFiEV0cqznJXjHaT+foZdrONTkub835puzA73LztkXAZVK81doDi1A94YECedCml1S63MwnpYy6g0fY+Fb93KOvLtrPSwpXmwr9xK5yWds6zCeTUJMB8jZV5ueuCtC3mEspsRzV5Z937wMNPPuTgOO4lKaurv3AtXe5Simg5uhsGBuAn1sG2Rxop4UJqJvklo57qGy6GYl/Z0A+exaCvi5tr8gfbOVV2zqCobilbwBUZnghJJzWqzOOZFHInbGmDb0LKR8eGs09n5FIzZWM0Ps+nmEzjUow+DLceogghhORUwKZmYIGbpUROgT4HGzIzWeuYcruMlSPsL7Kl4K5UrwZP21+E+C1U5obQmFoy/FT+LcPSrk0ZpzRWnudZwrx3U6XbmKGtRzH8ahrDPIuYLSxA7avtlmFpetqQMfYzjwK2m58mHmNbwJ6XUGMbMzwemH3kQSdNmTtSGZZmBld3s6eVrKKZaY6HPsi4sD7wm/KSF/myiZGodfSUjMvT00/WJ+7OzTTKRA4ZuSKtvIMeLF0/R61dl3l52cXjqHXLPUy98rekl7f0dPvrABGty4v16aZYL2cunP5j+Ox2yLzErGIDatxELyWeDyzh6pfd7tgJdDOR0f+sBkcn1nkJDh2F/lUYoa+CxlBkg4giMrsg1U1FE5WT3C2N554/G9pHfufFrSIhk1CZYfACRBi+EP/HY6EvQG3Shpk/dfztLLl3LS4k7vqkoZm+6JzCjkDHm27mQ3TDGNubjsmBpVJK6yofPfcoW4UWlFz7zn5GCdWZfX2TSB9QUWq43iDKRnS0wLXHgZWkNbkfM3RB443GshnXn9gtn2gaIfohxR6au2iFXYZecvebW9hBGhvO9Soa9jLvfg/GNfwDOg5A+/WvXuu53LwXLf2XxSI6qa8xojGaMAxKCCVaNCcvL0qiOiPcUBON13g3dO1RChLfDr5TS0J+iR5TP/beI9iRmzd2oBAWrlkHSt4a5ECoh0GOgGMoHqF7JvkTOjOJJZnsyqUzDRTdYBNvKhCgk27bfSp7NApk4YFnfDpJ+RNUuEtzp6wEeR9zdYzPio7pkQ8yp9o3L1rdkGWFvZ9ar3A3teyOHvbNfpW++9IHfIsWu++M9/wqqqISJPrk5FgmF6N34Ca/StcJGf08y1+CG2KLb7G1wXXBYlDFch/Ll8TvQbMMKyex7mn3uGd1zjnDV4nIy6COquBbG0BfBtbxo9zT4Q2DvQpgT9U19lW4I9U4jFJKDTeH6jOC+zcTRdnxPVzLniuGzajK9OIFE4tf9VMYQlLOkR5Cy8AVX5aBXNjt41FR8X+vbGA5AmOzfxoX6xw4UhCwoMeZWtCq/3Cq64Tnt2Brawb1s271snFpwQjU60/mU1cLnKPBk3YoMst6kOYHK36WUzTkxBE9OnXOZa6/Uo0YOq0s31K6bElpDSdBSBmqPhPHw0p78wAACGdJREFU0q7grUzosMzjzrQFjfs+/ZREEnq3H3QvLGrdqiCHHPbrn2fEYvUNsURVffX3Gzbv5yZBE1VxcGNtgsF5h7cyYYwEd4dYXZMgRpnk6M51+4DNQ75m7yHDE7xHs3Df0v4Ic+BBTeRua8BbmdAGDy12hYy9IK2A84vJXZmoG49zmZpkF6iJ3L+ZvJWJGqC7dZcdQNAIi7unUt7KRN8J/SDnSrMA1MQc3rYGvJUJ5XfjXzCgHECJQVcmxI1LuoDixiGgb/BWJhrA0SNAmeglpEEfzUp5QrMAKaZ4MuaZWvB3aW2BL2Eov5ncJ1zykeIrhrcyYygxHGdoLEGbRQbvbw5vZTagxNDF+UgHWYe5cUWcEVIGQGE5RWwB8u4Feyk/kfJmHgHKRMZbsaAPgKAy/TnQkdWgs9e1AZ9narUo1aUf1yCCmsh9FZP3mwkNIMOvzHxkLhP0byY9gLoW7pZN0oFeLLlvFvF+M2tQP+u3QXv2Ac9iVvCulfvUBG1Ed+dtRiYdqExk5u4r3JfzkEeD9g4ijAQbGA/HVdCPTOCuzB0gTUMHUMKEjmbSlLv5J3dlrkaJ4QqonY6Ozgjt5276xF2Z8Iipeyd3wSKOXIJzNv0mApS5ASU6CLEWbNACEH8vpdyVuQd5FhnOu1bJDEDr7Iu4V8tdmRSFVOzr2dtadnMxWFKnn3Ovlr+lwRqQ1q4v92qlgiIMxdyFicsE/sqED6TP/iCyjFYoVtUa33zcMOGvzHVoQe9C7tXKZCT6inwtXAweIH9r8VB4X2UQmY7O3AuIuyjAOu8jkBa5jn+90miFnJEe5L6YJwL9JPScloUpbl0KE5B3ioUCKub/ZtLV1SC1+4ncK5bG9cjWhxVePGi8j17Nl6SYX4ugO3oxEz8UULOIW/oxSrzcNgJ0ULkWvZhxXr6PRNMBhYagz8oWixO9YOQz3zzsykb/EjWvJpzGIxpyaEnpPbLl8o2nYfsyiTid/XSHQfqoiE+mGMbD9hmhXKD9HWxrVXhGCO1gAzMObZvNFMGobh7CcWYf8KNJa3rKlst/puDn9nzZcvnIJfhDsjRsHa2Ow4fTxaE6XrwIN7LUW2zDLCNK/oCbSS+SLZqvXMVo5YYesiXzExjQjVIK7aCCC2NcQOm3ITp3ggJFUEopvU22ZD5zO6uhq8NyVEEbzWpieai+mISQNuWspoZmbWQJq4V3yZbMd37Eiqi3NyQW0XewdPlV6Nweaawo0ZS+Lls2X+jBal4oQi2mUsSK8bQ/FJ5kfoen0pT+W5wM4raIq15k/NCWU2wRsRzH6kwfEyeDwP3+aQwHDdTP8HjSYI1Y530hTgaBytx6M3adoiPXZIGD8WKuuSasfj3/Cj8qRiiOEb0L2/Y998h8yQh8MzWGA0QtFC7bsWO89vWhm5cconAPfHq/CYUJLYwZThN3ypaLFzfhsfulsuXyhxWwcetDMSAArMXNDcnK5fmwdcblsuXiw+k4knBY1ma1ubB568L5aj4LG1tTLFsuv4DRbCk9R5wEAkezp6JE4y+8Q1kKYzYcldMwnivW+sJetio8joS1yfDNXClbLh48CJs6RbZYPnLUPtTCuhA6ZNVLUUtrw/NiEpYN0G9li+U/42BDb5Etlq8UQ3OK8E01I7NRO0tDFuFkInxix8kWy2/awL3b22WL5TP5e1ErX5Utlt/8DLWyBnklCzSPoGbuC8XicxLvoVa+Ilsq3+kB+9lTZIvlL0chAyDjdNli+c/nSJmPy5bKXy5HbdwUumEe0c5FSyPrpETT5MYHSJnPyZaKA9EK1AUJ6mfFrM22OhmlhsU1TjJx5PlaO0tM5WKUORRtjSSWhKv3aWIuShwjpqVilHkaSqzcxDvQmQyWocQTQ7IBTwghGjxrO022WFwoOIg+mmcLqVvIm9nmBJTKsnAPNnXIjbmGvAn7jxBl9kanSXauEFG1eN5FiWLMDYQosz/6OC4MqSdE6CnwOCEreiLuqNYdDea+DKnd/sbdILE1jMHoNyKUSWG0qE8F1CwDYylKFRL9TEhfNwiklaMQGaHgHZCWEBJjSUw3CxK/aBRQsww01OVEe4qoWoQyo+ggOOyMwgDdcgCkorB9viNCmV3RSahVAiqWA0UfECGGayKUiWKYULjsFQ5QyFAhfuVEKBN9/HdzD8AsDxRb8RgRN1pEHceBNP5RzuSBAkW1EdHPyupmQ2m0fwgUKEEX4ZFehDK7gLSNAuqVRQ1aAxIxnBWhTGRQWS6gXlnopSBRxIkTAcqMtAOJO/jXKw1jJ0gUYSIsQJmt0DL7Lv71ymMvSBNhiShAmW1AWqyCf73yQN8QdBf8RoAyUUiPmrCuzBJCCEFzaBEh0wUoExkzVfKvViKodSJcdwrZz0xPqhJQrTyQx0cRxpYClElBO0LdyxIUMl2EWakIZfKvIsuoB2khUSZyERi+I0PJoFFCSLpZVEUD/2olgvZvQ6zMcIM8NYSkm42DtNCdfzeBlInugt8IUGYdMJANhY99JnDNS0C9ApRZBXqYwpD5jDGDbETQdMVvJCkzEqJ4bumgsKAifJcLUGYMffuFWHhLQkde9qtFVCygDrTx3l9AvbIw+oBEtMfpNyKUiXaEUHvDQmc0Vi8TULEIZW4DaSME1CuL41BIUGR/6TcilLkJpPUvElCxJJCvqioRRk8ilLkYpLUdK6BiSZwP0raLWMAUoUxkFEwuEVCxHDoOAYkiPplClLkL+dQ/NUTeVMychxK3i6hZhDIN1JJ+6ARuGNBgWBoRMxMxZiNbUWq4PHq30OVMlLpetBjcgI7o64+XLRYfZqDGYrcOgeQ02L7PZIvFhT6wrWVCNnWFVLIcHQwnJ4RyFehkYKsfr5svxE/O/wM1heYPatGUpgAAAABJRU5ErkJggg==\"\n      ></image>\n      <mask id=\"5b9db65fc8\">\n        <g filter=\"url(#a808475d7c)\">\n          <g\n            filter=\"url(#7c1498cd34)\"\n            transform=\"matrix(1.63044 0 0 1.63044 0 0)\"\n          >\n            <image\n              width=\"460\"\n              height=\"460\"\n              xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcwAAAHMCAAAAAB9sMdaAAAAAmJLR0QA/4ePzL8AACAASURBVHic7Z15gBTFvcere2YvlgUXBDmWGwwgiCCIEQTviPo8MVFRg5rDZ6ISjfGMhGgwiTd5Rp+3iD4TowbxBEEUUTnkDKccuyDLAgILe8/OdL0/FnanZ77Vx3RX1XRTn792a6qrftW/7uo6fvX7EaJQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhSJ4aLIFUPiKpuuyRUhDI1koVDPZ+QZE+w0dUVyUqK/bs+u7srX1ssUhhBBS+INhXTu3N7T9lduXbtxPZYsTECJ9p+42aAsH/thatkhaZPDbcVrTItNn/90qIluoINDq8WRNUkppovIuEpUq06j58RSZaNnFUiUKBpdtTL1tlNL47h9LFKnkzTRVUkoTz7eXKFMQKH4T3DZKKaVvHC1LpjFVDJG2niVLpCCg9S9l6ZLSOTkyRNLJWbuZItVOliFSMNDG1zDvG6XGf06XIFObaTErmT7rIUGmAKCTs63uG6WU3id8ItV7u41IKwpEixQMfmT1Xja9CJMEi9Rrk51I9KMsXkSQR889tjeO0kuEipS30q6voJS+nCtUpkBQYP8SUEoPDhAp02QnIhk3iRQpGPzTyY2j9B8CRepf7kgkY4RAmQLB9c50SeltwkQqWeNQpL0lwmQKBG12OlUmvVyQSJHVjkV6RZBIAeFPjm8cregkRqQpzkUyuosRKRgMaXB+5+hrQkQaWOtCpHezcydRBjp5x8WNo4nTRAg1x41IsVNFiBQMbnJz4yjdKqCjvdOdSJulb7lmC51sl35SeIG7SL2qXYr0HHeRAsLfXN44GuvIW6Rb3IpULW2HLoksWFlscw3jh29Xsy65jJMoh9F+yvhh97xq/EPhr7kJEyhYb8FTbckdaIufUvoFZ5EGMEbXG3qSkYxloapizjIFgrx1+O48EiUk8iT+raEfX5n+jqtNnEwI6bUD/ziRr0jB4FR8b97PJYSQ/Fn41xlcJ3ZD8Ryz/lJCCCH9v4e/flfIU6SA8L/w1tR0a/o1/yuszeM5SqS/jeu8+tDvjM7/FI4iBYXN8M48dvjn4dic6hmOEnXBL+abh3/vsBf+/ihHkQJCD7j/W1HUnAFPXA5y7NTwgkGiy+HftXtghgX8JAoK98Ibc2NLhjbwPTCu5CcStvu5uyVDUSXKUK3MgeCm4f68pBy/SbVwp5RS+j63IdBwqMt9+UlZ7odZ/ouXREFhZCO6LTckZ9G3wVvXi5NEkZdgdQ8n52kLH8HZnCQKCBp5Dt2VzeZ1qQcTKNNjjDK90v4gqs3oa8p0JcqT6MBJpIAQgWZcd5kzHQv72XJOIuF57xJzpjxoSijzQEwW0AfpqT51HX0DunONnCxv7oaPTqqe4Oz4DT4SOUbyQvu5aBizZHdKApxURsf6Lw4hhAxFIn0/KyXhWXTpKMl3U3L154G0RNp25UsxdO2xvktDCCGR41DqjLqUhOWbQK7OQq16s41WaHmnoVVavudRpzaXy+SkB+plG9PPB92HRBJnB5qFjINKSs/XH01gqrmcpv4dEml6er5jkNJ5b83ZILebRbbgxn/S0zauABkLB/ktDiGEwC/xW+lJu1A/O1juuRO5ykR3Tv8mPc0AbyvjvnsF7X3UzAOJG0Bam57+CuMSqcrUB6PU5SAN2sqe7aswTQw8CiQurAKJa+LpaYbcbTCpyuyDlky+3wgSV6PEU/JBokcuRInQ9G4xuHX6GH+lcYlUZY5EiSsaUCr4apHiH/gqDSGEEORzIvYRyrkS3brR/krjEqnKPBElou8TIXNQov8fzRw0y1wGLfIq9oPEvhw6C+dIVWZPlLgEJZKvkH+zYT7K0kT7Y0DiZzBrzXqU2tNHYVwjVZlowYQug1nrF4LEE3yVhhBCTkELEbBXIARMoQjt76c0bpHpxkzrDBK3oJEjIeRr8DnqF0nY15LbqiBH02hNfQ0lmmYQQjS2F0PUy1I0vCaEIBNtnbMNqDUylVncBiSuaMSZP/ptelrB0KWssnP6dO1T0qlrSfvWOblRSjWi0YaqA7u3l1dsW799L1MkNIDZsg/nhcs9PK0GbZGpzJ4ocRUj8zdG+hfBGA2UqRvRwWNPP6MwqcPUNEKIlp/foWmHOb7l85mL9qGXGk58WYck1tUBox8OA+xgcB6yIGCeckemx8ja4JxXK9Dyagqxr+7sm/59bI/WgKexJEIb66m7d0cM49FdZvZTy0Hm1AlgzrDHtzrQ5CF9zp2QumhxEsp3B0uiT0DmuMy5iczRLHLxGd/Oyr0ZpA0x/VcwccmSST0dV59zxoyyV4abbgBcXkSLsIQQQraANL0IJIpCpjLRnM44wMpdCtKKWrY+9fZ3LH9piMvmFFy74K3Tkv6Hbg0rWFd/D9I0mUeoZQ6A0Ju51mDlLgNphT3WNf3R9qqfHJ/Rmbr8iy/e8u/3FxwaQkNLAbg4QAhjrNZpayZi+IPMNxNZgKOnvQnY/zbNC/OvWfX3sRmfj+x924dfHq8RQkgUKbOK6e9/F5qvol0XUchUZluQtoOZGyqzFyGEXLlsujdHPLnDv3mug0ZIHB2v3wENkAghZDtSJpo7i0KmMlG72W/mXnTrOhMy5qvXvdtRRW8o/31bUoAcE2xjXgRllXlKU6Yy0Vihkpm7EilTI3/87GRfhIlOWXMyPPlTyrykGr2zMpUpcwCE2s1YOiOEHGwA9/riM+FsIiO6LvgALbOXMi+IV4FJ5ZE6z0RvJrubNdAUoad/uiQkCs0MmBNf/OTJPNcnU5noIa5hZ+d1uMQGdl9B0AbPkbpokG7sjO+P/U88Ya4ZYIlk3tBsq5uxAUYIIQx3SryxqBYJK9NyNtuUaRGRj70LyROKTH0OgUaz2XZDZdZt8WayZy1csejdgeUskRm8L9uUaYGcbpZCy082MqcmUm2AQJrFg+3yrjZDNWJQTcvwzFiMbTAES3RglcQNuXEp07G45ahTs4RWrVmwdndVdUzTSCQRLezUe/BI14c6LR4hip68TB85P8i2N9MCd5GBY8s/nPOfg6mp+R1PP+MMV+fnYxa2fNnmmV2mMhvBaonFpoPzN5Nqq197Cn5i67e98oo27FcXO98vy7V4hlAQSJnBqGUqsw5oziJIptP4meWfzP0M7WQfhn5z/c1Dzr5ogLOhipVy0OLykfrNREt3Fqthzjq16ptfs5jeHK75yy+nlPzlsjzbjNbKRMLKDF0vc2qC2m2xUe9kaLFzUreX7XVJCCHkuwknv+0gW9ziGUJvZqonC5HIVCZaQEHWB4eotS3QuP+4J10sLawYP/RL20z1Fq8m+sDLHM3KVCZ6iL0MgDYMecBi7Q1AV4z6jd17zDQaIVjYI/XNRONNC/dz1gtlierfD0bnsmx4YiTzuEoTOrvaNi738LiTbW8mMr88hNV+RKLqof4POvxYmll+0tnzrUaguexqYSgTmcqUCXLVhI5hNtHOIoyx8amXQBTaGVYRkh9hXnduPcgu0+mszDczbX2GENKe0atFyI3smD7xTy5197FMYd4FFl/GW/qyfmmHpjaSttAJIXKViQaenRhdXiLnN8xy6IPneNoeo2TRIHSSpYmcX7F+gfHl5Oy6ymcS6tXS526aRnSiPc3sBw+e64Ms+R9Az6SUUhpjWVg/Co4kGkdqyOKJ6NYNTe0tIoQQov2Qea/LfPJuORU6GKeU0pmEwPUnFPXTkGnRLnM5D5pK9VlODEJITvuSYzu3adfl6EhhQtcSxkDWQsynV1lYXLnh/kV/64Z/uXBNjZ7QaaKx5vs9B7aVb91ZRXSDEIKcURw4UkezA9Fr8GdCcnpd/wZ0/gwotZjLuGUUI4xcKvs/e2BsESH56FXGvlKOADqiO7XwzEdwXBHIli721TgH+pDF1M2bdDXq+d/1U54gkQ/fBObHEbCvj68C6YyggC7gFdPBmfwS667fiVJdbN/XX8qeUWSCccfHXovwVyCXSPXQxYxc64zdV873RYwWYle877EEhgOoI4Cp3rq0MzmIlPsZjIjjlAap8W2lvplrPF39D+yg0BuxqzwtDG7zdLVXpBpBAwfezqEPuLa9dMKO570Uy3RmIQSpb+ZmLwYzr3h7r5n82YtJlqfH0zMylWk0lmZ+ceVd9nkyK/iPmV8b5/SAOURu9ISVmV969S7/xDDzxLqML42ikB3ikKnMKNnOdOFkx7v8glXW3mifh4FR7ti6N2xErkNb9Y5ovICnYAsynpos6CK7s5NEBG6BOcPjcoMNE9wsKZrZcmQ6nNWv8DA9H8dVNM3pnk06xvLeXEXLUh7LXJWUt7PBCzJ/Nel64JQ45Axe7OF+NaJQMn6iPZO5cLRuSrYdeuWLdlHGQx9KaT2PRVkzuR97kK9x4RGlzREO9/QhX/i7icng9rq0ip33JZ/K8aAno3/Xclc4jOWyZ9XKXfU1sWjRUYUlx/fLi0dJfO7kJRlPTl3R4bobexl6IrJ/3dqtuyvrI63adOw7pLczB1yJp27lLB1EhjLz5ziIf0ZXzZ+/dGfSOmmksLhz0a4ypttv39GNXl2jjZuqa5POgR3dY+S4MQ4M8GonvslPsGyi1Yd2vZRhbH6sX5YtpbRY2kfOmdVg2+XWn3VEjGn7LrK5D1Xv/iLbZ96tT/vLGptZcuL2I0Cbx5Ra3oNGY6Z3v85CuHCX9SjOmBz6db3cadYP9Cw/HcjyRCc5v9lp/W6eLltG3oxqsGr/6pGBepojD1VbtWaZTD96AijZZtX6/5XpRjkj+q22aE7j/bLF40rfVRZtn39Olg1gnVA02SKMnHFboDoad+RYDH6qLwvoGljHj9kDIePnsqXjhjadrcsyqSFhvfEH9iwlEeBmWXMVW5dV/oePFoc2hdmu+NcB7W9siLQuZz6/5SNlS+eNR9iP6W2yZePDrUxdboOhDgNE3p3sQ/QoSnrgab+b0VzjrXayZfPO5XtZ2pwhWzQO5L7Jam04lr26b2W17yTZovmOfiGrrf+ULZpPdGNNOO2dLQaNvCWMptb65CxEPswxwQ2yJfMb6POHUho7R7ZkvhGZy2jjGplxqP0n0oo1+rlPtmg+wlx4ZjsXCyQPM5o5VbZgvtJ3I25lVUC2aJ0xmDEN+7tswXymxy7czrmyBfMRDTkmo9RYEcBtEmsm4qc2Ply2YP7RHTexMShWBS74F341Q7RycCNu4RtSQ9rx4ZgDsKl1Qhb1hKy+XApT6bNSI7rwYde/YHLeWMFycKMPtpR5Loy2iFqXStRWY244GqsR6PfX2IpCToeAG+CT29glFCvQJK8KNu8y2XJxIoonm3fLlssfroWN8+BoJMu5Erb323D0s/NgL3uRbLH4Ac0vjWGyxfKDPsh4zZgpWyyOjI0hbb4kWyw/eBQ+p71ki8WRyMuwyTJd8fsF3Er4QLZUXDkRrnhNlC2WdwajdtHQzKEREbIUtfk92XJ5517UrvLQrbCbuQ6ZRe8OvgntfKTM12VLxZn2B1GrT+FdLe91iW5w88ezX/ssZ+8XKHV80Kea0D9eg4+RZbKTX6Nm8/Yrxv3NPBUlrg59KLsFKFJ1d0Z4Kt/grUxoARz2XpaQb1EMSP1EzrVyVmbhQJSK9/zCRC2MCcbbtp2zMruj8vev5VtpNjALJfI+68ZZmYNQ4uwGvpVmA7NQQI2hKHy8j3BWJvRZeCREsivbBBLbduRbKe9uFqQZX/GtMytIfA0S4z35VspZmSi8ZVUp3zqzg1UgLZdzpDDOykTbPqvRHCx0rEaOVLvyrVOCMrfwrTJLWIvW7px5q80YzspE63aiQ0zKMYsr3w0SOS9jct6WOQqkiQqxVNRnYO++3bq3bZtLSCJWdXB/VU3Fhk0r9sS4RPdLY8Mx6WnBViZyhsd9vZkQMui8MweWkETz8YdIQUHTtCARqdyw9NP5AhaHt4E0zqdu+SozAg6TGGjZEqIbpEvfjo0HV+zXaNTp6xRJFJ/1k9FNbwWoPUKOGjnyVw0r5sxbGHMqByFEI707d6jbtvOg8wMVB2j6V5PzogFfioAxTFWu06u737aaJhIx2rD05g7Ovnw60Ye/7izKhlH+p55O9xe10S/sMyiltPqNCx1/ge8HlX7o9OJspANoUIWzW6hf9nFty0V1052sa3b8xesVLmLfJJY/dpED+5VWdy5PumjrQw59jv8c1Dg7yGcUuoIGOZmZaCT695TLjOvsrun1V3hmx5LGsnF2IUhyZqZcU/8jR20fD6r73NGVWUoJaNAaJ29mTrpvwfoh7OwaifR7pRZU5oBVV1satGpvp12xy5HR70WgLmhNEhTQkellDsZc0TvAndhRwr6g6KnMQ/4Zyy+0kOTP4IrNTlZyzgcXBtq/U0+gzNUOjkuPhZ7cP8WZdaIf903GqqSUUvoC63hhzimNKP98B70Lckn2ZZBNunqABtlPM7X8b/E9vx7nj0z1EPGvieWn4v5Cw5IYt9u3HXnXXRBkZXYCDfre9iqd4eWBbkP7gUffg89/uuSjM8HsR4PnhCmltXDX3cSvwGVzgzyabQsaVG97Yvps5h1/JS1vZEQV7AhdYxgz05erjq1hZZ9r++VH7qE/4Ptm8n1U6sFuV57dmpb2S+ZPV6Qm5J7wQWt/FrE07cJ/pc1Sxuexsp/WyU4vaO+S86owX2U2oCUzO7fPeeyA0lUpg6ecyxccbScDpYQkKCH2gRrPeyt1IbyBOVjTr7LblUVGFjV8t3I5L7THwKPdbYn1NT3Z/bCesjR6n3UYmPKVizdVVFdW18UjuQVF7dt3GvjDAcx3jRDyoxWjzMvj0Tjz/pz5V8uq8TNba3ONRzgr8yDYjrULTAtNbZvQteRHW3vjx+ysS5bNWVyetiyu5w8ac94JxQQsghNCSNdFFy1O/r+OfXtG5dos1KM3U1zwTx4sA6MAuyNgTCe8lO5K7vZ6rGYsFBirn7m6i8VTmjfi7jl74FF1SmunJK/WohHp4Uo6WbeiFxIu2C5HZoEW2U00H2DfwdKkbDpeKGiITe3qYCCQe/GHWJ2NyVPIm9IDTzfns/FteD24xrjaXrAs5n9Qk2yCJUAnCE1XLkrK9gbW5Wtggx8zbjlca4gldfNjmKJQahOSPnWjgFJKEw7CM3uB8yz2O5Cm2exmsb9F9P3mPyNTkVOo+tf6T9jlTDJCPhx2yVKQnDOrZeiybA/78oOWhetDQSItcyZZloI6G/oX62vgwXlKKaXxlrHTj9FSwUq7sVUqeTfuAcUsbplvvsh+M61nWAVoi7yRs3UeZ4aj22Bj0XU58/7Nah6DDgcfs8SLGdyrE1HgwBbvsMOZq75V1iYgaM+EoiMLAaIzeoEarKNfdGOtobX4UwbusxOvZnT6UY/+vCy9oiebx8LPsZT5iHW5KCSP8X+ZSJg9aJvQjfiz9UV/Y9y/h5pzpG8Y77QZj1jQJr20RLMzuGLsDJhW9bYsszX0ympnLJHtvIUaZWM50gabf2xutgQbkNb5WW1c26I9mFqcMbv5xwm4o33Cusix8CrrByD7uRk1qqGn9UUTUOccH3X45+iSVHd8Hsf8+qupBRrNXqei/0At2GS1KkgIuQtd5Hicna0ci1pF7aL3vg6uaQmBcmXqSLHhAo9Stl+U+visah5r5W5IX8upsgsVMAe1+m2PUspnOWrWXBvTkdzJaXYjTzdvKXVL/Yzt8O74ITI99d18uPm3QVtStfn1QJsl7R/AMNTBd5d8O2pWAq1Cm+i5w3QHv0sa36QGSdmGDoG65p6UUo2WWX/ODLM2p9vuTvwLfTLr0FmNYHEcUiYwGUil+/tG8y2Mv5S00Xh8yo2qt7fgcMTTKZ3BO0m/XdniD9jYdottUSVwchVoc/ZDwMlJvYO1mt63z9xOY7Sh8mlTSPUUm2TDYhvMHQvNBceTZ8OtzvpkP21opGsevaCA2Np+PAYf4Kv8ElQiOKbby84uLu7RswMx3b125s+R4Z9dcdeUGdHT5p8LSwb1cOaMsx887VIdgmDMZBC0ga2xsE+35L6Ugs62yBvpM3pYh6bZqUZIjxE/7Ge5r/CMueRKW4sUTPSf8PENhycrtKdJ6dq2GRXWJmUh7wV21o7PlFFK6fqpfQgh3aftTVCa2PBLi3F0V/Onzrg1IwnJDXDBIM7bo5MYRmKDgPcyCgR2svlO7WLbC+WvPZyp5qa2TxzeiTamW1SbYuNQmomAZDA2451tf2UQ0OFUk9KfZlLYHaZPZtxiZDm5JZuRbFQwhn1J7n6TgIbtBAqQg7e8G72ua2QL0OcspQczOeE/3VTEXvbBXZ0Rl5RaBeH4vakTMdg2n2zG47XcfUG2ZU8mH+0AU5p4yP7SNMwWYo+xM/Zj7USWWtzW7uZjgXe4ly9nDa71WfdFuUfEA1O/AFd9k/vgJjmm/X0rQ7+2LHvjQgtr6G0LTf/2Y2SzYAq+JvFv90VlKacyXpKdJ7gtybyeZBVPrNV2RqVvWpU/wZQV+b+zJPevjEoXhSZchE7+zWhj7WkuizLZFBlTrLKiI3WU0gbLCW6RaVPZ/sCaGQ1ullBKGy0MuwPHINa55v0OvT0cxnS0yjjNKmsERi1P3GNdwVfJmePuDm3lsMy/4uGKfPY8o5m0zN0i11STYqyHw5HZoL5HbSqYZnpaHHu5IYQQcivLaU1DuCKfdWaY0tCEu2DFTyRfi4xyk4mmrz1NtxvwmfrxhCtzv45M8/eH7S8OEhEY6INSSg1X1jumaSYeJCeT6rbiRVt/Z6axWsJVtwF3biml9Dt3L3gAeJWlTMtRTCqvJV/6mn3+cclDkpl2xh6EkH6ZP2gsJxmVvIMmSADGe6WUznFTiGmI4cQMtaBl7WCjkwp6JVcQd+PstzNrleInLgrxhrBVpuil9fgHV+NZU9wFJ8uBdS1/OlKm6diR0ejkkkOcxPCR+NU/XBTiDWHKjH/7Dv4h6mYEZFq9cTJGbN9SuqPtSZNpa6SOlQ3QiWEZ9JSLMjwibv0372W8wKZlrMwedm7viOkw+gh7ew8SNc3uNTdvJmNr7TtxL6ZAZTbcgO9lrb3niBZMR+xyHOz3JgeWO9nePUTcZLiQcKPMHbgdXS9xUYZHxCnzhPE4HcWMYLLe9N8E+wvOaflTdzCqLB6R/F+Fc1fBhDCMkbRfZ7QJnxHilPkkoyob3yNmvjX958BXaPLwaoB99nNMvYer8wR7Gcv+Y2DUSS4IU+YljB3++CduSllhcovUxXbiqCVvmVm6Im3iGtN/jsa/zcxjpGeybZsZwpTJch24ajHjB4j5vKp2o23+5PkQCk5hpuR007/uQgM8z0gf4WCtwh9EKXPMKJxef4O7clab/rvC1g9f8iqR/df5BnN57kJDrmcYU0budVVMAFiEV0cqznJXjHaT+foZdrONTkub835puzA73LztkXAZVK81doDi1A94YECedCml1S63MwnpYy6g0fY+Fb93KOvLtrPSwpXmwr9xK5yWds6zCeTUJMB8jZV5ueuCtC3mEspsRzV5Z937wMNPPuTgOO4lKaurv3AtXe5Simg5uhsGBuAn1sG2Rxop4UJqJvklo57qGy6GYl/Z0A+exaCvi5tr8gfbOVV2zqCobilbwBUZnghJJzWqzOOZFHInbGmDb0LKR8eGs09n5FIzZWM0Ps+nmEzjUow+DLceogghhORUwKZmYIGbpUROgT4HGzIzWeuYcruMlSPsL7Kl4K5UrwZP21+E+C1U5obQmFoy/FT+LcPSrk0ZpzRWnudZwrx3U6XbmKGtRzH8ahrDPIuYLSxA7avtlmFpetqQMfYzjwK2m58mHmNbwJ6XUGMbMzwemH3kQSdNmTtSGZZmBld3s6eVrKKZaY6HPsi4sD7wm/KSF/myiZGodfSUjMvT00/WJ+7OzTTKRA4ZuSKtvIMeLF0/R61dl3l52cXjqHXLPUy98rekl7f0dPvrABGty4v16aZYL2cunP5j+Ox2yLzErGIDatxELyWeDyzh6pfd7tgJdDOR0f+sBkcn1nkJDh2F/lUYoa+CxlBkg4giMrsg1U1FE5WT3C2N554/G9pHfufFrSIhk1CZYfACRBi+EP/HY6EvQG3Shpk/dfztLLl3LS4k7vqkoZm+6JzCjkDHm27mQ3TDGNubjsmBpVJK6yofPfcoW4UWlFz7zn5GCdWZfX2TSB9QUWq43iDKRnS0wLXHgZWkNbkfM3RB443GshnXn9gtn2gaIfohxR6au2iFXYZecvebW9hBGhvO9Soa9jLvfg/GNfwDOg5A+/WvXuu53LwXLf2XxSI6qa8xojGaMAxKCCVaNCcvL0qiOiPcUBON13g3dO1RChLfDr5TS0J+iR5TP/beI9iRmzd2oBAWrlkHSt4a5ECoh0GOgGMoHqF7JvkTOjOJJZnsyqUzDRTdYBNvKhCgk27bfSp7NApk4YFnfDpJ+RNUuEtzp6wEeR9zdYzPio7pkQ8yp9o3L1rdkGWFvZ9ar3A3teyOHvbNfpW++9IHfIsWu++M9/wqqqISJPrk5FgmF6N34Ca/StcJGf08y1+CG2KLb7G1wXXBYlDFch/Ll8TvQbMMKyex7mn3uGd1zjnDV4nIy6COquBbG0BfBtbxo9zT4Q2DvQpgT9U19lW4I9U4jFJKDTeH6jOC+zcTRdnxPVzLniuGzajK9OIFE4tf9VMYQlLOkR5Cy8AVX5aBXNjt41FR8X+vbGA5AmOzfxoX6xw4UhCwoMeZWtCq/3Cq64Tnt2Brawb1s271snFpwQjU60/mU1cLnKPBk3YoMst6kOYHK36WUzTkxBE9OnXOZa6/Uo0YOq0s31K6bElpDSdBSBmqPhPHw0p78wAACGdJREFU0q7grUzosMzjzrQFjfs+/ZREEnq3H3QvLGrdqiCHHPbrn2fEYvUNsURVffX3Gzbv5yZBE1VxcGNtgsF5h7cyYYwEd4dYXZMgRpnk6M51+4DNQ75m7yHDE7xHs3Df0v4Ic+BBTeRua8BbmdAGDy12hYy9IK2A84vJXZmoG49zmZpkF6iJ3L+ZvJWJGqC7dZcdQNAIi7unUt7KRN8J/SDnSrMA1MQc3rYGvJUJ5XfjXzCgHECJQVcmxI1LuoDixiGgb/BWJhrA0SNAmeglpEEfzUp5QrMAKaZ4MuaZWvB3aW2BL2Eov5ncJ1zykeIrhrcyYygxHGdoLEGbRQbvbw5vZTagxNDF+UgHWYe5cUWcEVIGQGE5RWwB8u4Feyk/kfJmHgHKRMZbsaAPgKAy/TnQkdWgs9e1AZ9narUo1aUf1yCCmsh9FZP3mwkNIMOvzHxkLhP0byY9gLoW7pZN0oFeLLlvFvF+M2tQP+u3QXv2Ac9iVvCulfvUBG1Ed+dtRiYdqExk5u4r3JfzkEeD9g4ijAQbGA/HVdCPTOCuzB0gTUMHUMKEjmbSlLv5J3dlrkaJ4QqonY6Ozgjt5276xF2Z8Iipeyd3wSKOXIJzNv0mApS5ASU6CLEWbNACEH8vpdyVuQd5FhnOu1bJDEDr7Iu4V8tdmRSFVOzr2dtadnMxWFKnn3Ovlr+lwRqQ1q4v92qlgiIMxdyFicsE/sqED6TP/iCyjFYoVtUa33zcMOGvzHVoQe9C7tXKZCT6inwtXAweIH9r8VB4X2UQmY7O3AuIuyjAOu8jkBa5jn+90miFnJEe5L6YJwL9JPScloUpbl0KE5B3ioUCKub/ZtLV1SC1+4ncK5bG9cjWhxVePGi8j17Nl6SYX4ugO3oxEz8UULOIW/oxSrzcNgJ0ULkWvZhxXr6PRNMBhYagz8oWixO9YOQz3zzsykb/EjWvJpzGIxpyaEnpPbLl8o2nYfsyiTid/XSHQfqoiE+mGMbD9hmhXKD9HWxrVXhGCO1gAzMObZvNFMGobh7CcWYf8KNJa3rKlst/puDn9nzZcvnIJfhDsjRsHa2Ow4fTxaE6XrwIN7LUW2zDLCNK/oCbSS+SLZqvXMVo5YYesiXzExjQjVIK7aCCC2NcQOm3ITp3ggJFUEopvU22ZD5zO6uhq8NyVEEbzWpieai+mISQNuWspoZmbWQJq4V3yZbMd37Eiqi3NyQW0XewdPlV6Nweaawo0ZS+Lls2X+jBal4oQi2mUsSK8bQ/FJ5kfoen0pT+W5wM4raIq15k/NCWU2wRsRzH6kwfEyeDwP3+aQwHDdTP8HjSYI1Y530hTgaBytx6M3adoiPXZIGD8WKuuSasfj3/Cj8qRiiOEb0L2/Y998h8yQh8MzWGA0QtFC7bsWO89vWhm5cconAPfHq/CYUJLYwZThN3ypaLFzfhsfulsuXyhxWwcetDMSAArMXNDcnK5fmwdcblsuXiw+k4knBY1ma1ubB568L5aj4LG1tTLFsuv4DRbCk9R5wEAkezp6JE4y+8Q1kKYzYcldMwnivW+sJetio8joS1yfDNXClbLh48CJs6RbZYPnLUPtTCuhA6ZNVLUUtrw/NiEpYN0G9li+U/42BDb5Etlq8UQ3OK8E01I7NRO0tDFuFkInxix8kWy2/awL3b22WL5TP5e1ErX5Utlt/8DLWyBnklCzSPoGbuC8XicxLvoVa+Ilsq3+kB+9lTZIvlL0chAyDjdNli+c/nSJmPy5bKXy5HbdwUumEe0c5FSyPrpETT5MYHSJnPyZaKA9EK1AUJ6mfFrM22OhmlhsU1TjJx5PlaO0tM5WKUORRtjSSWhKv3aWIuShwjpqVilHkaSqzcxDvQmQyWocQTQ7IBTwghGjxrO022WFwoOIg+mmcLqVvIm9nmBJTKsnAPNnXIjbmGvAn7jxBl9kanSXauEFG1eN5FiWLMDYQosz/6OC4MqSdE6CnwOCEreiLuqNYdDea+DKnd/sbdILE1jMHoNyKUSWG0qE8F1CwDYylKFRL9TEhfNwiklaMQGaHgHZCWEBJjSUw3CxK/aBRQsww01OVEe4qoWoQyo+ggOOyMwgDdcgCkorB9viNCmV3RSahVAiqWA0UfECGGayKUiWKYULjsFQ5QyFAhfuVEKBN9/HdzD8AsDxRb8RgRN1pEHceBNP5RzuSBAkW1EdHPyupmQ2m0fwgUKEEX4ZFehDK7gLSNAuqVRQ1aAxIxnBWhTGRQWS6gXlnopSBRxIkTAcqMtAOJO/jXKw1jJ0gUYSIsQJmt0DL7Lv71ymMvSBNhiShAmW1AWqyCf73yQN8QdBf8RoAyUUiPmrCuzBJCCEFzaBEh0wUoExkzVfKvViKodSJcdwrZz0xPqhJQrTyQx0cRxpYClElBO0LdyxIUMl2EWakIZfKvIsuoB2khUSZyERi+I0PJoFFCSLpZVEUD/2olgvZvQ6zMcIM8NYSkm42DtNCdfzeBlInugt8IUGYdMJANhY99JnDNS0C9ApRZBXqYwpD5jDGDbETQdMVvJCkzEqJ4bumgsKAifJcLUGYMffuFWHhLQkde9qtFVCygDrTx3l9AvbIw+oBEtMfpNyKUiXaEUHvDQmc0Vi8TULEIZW4DaSME1CuL41BIUGR/6TcilLkJpPUvElCxJJCvqioRRk8ilLkYpLUdK6BiSZwP0raLWMAUoUxkFEwuEVCxHDoOAYkiPplClLkL+dQ/NUTeVMychxK3i6hZhDIN1JJ+6ARuGNBgWBoRMxMxZiNbUWq4PHq30OVMlLpetBjcgI7o64+XLRYfZqDGYrcOgeQ02L7PZIvFhT6wrWVCNnWFVLIcHQwnJ4RyFehkYKsfr5svxE/O/wM1heYPatGUpgAAAABJRU5ErkJggg==\"\n            ></image>\n          </g>\n        </g>\n      </mask>\n      <image\n        width=\"460\"\n        height=\"460\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcwAAAHMCAIAAADXuQ/RAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOydd1gUV/f4Z7bCSpcmggiSKAqixJK8GmuMJjExJua1JMYk5rUk5o1+1VhiNFaiESt2NFHUYMNYUYwoqChWiiIdpHdYUIRld+/vj/PjPvMusCy7ywJyPn/sszs7c+dMO3PuueeewzAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgmgF29ICILpCCIEvLItXE0FaHfhYtnmoklUBdW4bou5FxMv3yoAXsg1DCCkoKHj+/HlycnJmZmZRUdGiRYvgry1bthQVFdnb23fu3NnNza1jx44ODg743LYeCCFZWVm5ublPnjxJT083NzefN2/e3r17Z8yYwTCMv7+/Uql0d3d3c3OzsrISi8V47doueOXaHoSQkpKShISE2NjYGTNmPH78ODo6+v79+2VlZRUVFXw+XywWGxsb29ra2tjYODo6Ojs7v/HGGwcOHLCzsxswYICtrW1LH0E7BcxVqVQaERERGxv7008/3blzJyYmJjs7Oy8vr7S0FDSphYWFubm5k5OTt7e3p6enmZnZ+fPne/To4ebmxqCFiyDNDSHk0aNHhJDk5OTFixdbW1vzeDyGYfh8PqzA4/FgCXyHL6ampsuXLy8oKFixYkV4eDghpCEnA9J8pKenw5mPiYkZP348XB0TExP4VywWc1em1+7tt9/28/ODDZ88eWJgmRGkfXHs2LE9e/YQQubOnUsXUvXKsiw1c/h8Pn1KAR6PZ2Zmtm7dugULFhBCHj9+bDCxkaysLH9//927d4eHhw8ZMoReMgrXPuXz+XXNVScnp5MnT+7du/fEiRPl5eXNLjGCtDfKysoOHTr0888/Hzt2zM3NjWu3Mo11IYVCIf3O4/Gsra2PHTvm5+d34MCBnJycZhUbYRjm6tWrmzZtysrKmjBhQl312hB1rymfz//222/Ly8t379596dIlfYuJIO0VQkhRUdHly5fLysomTJigr2YnTpyYk5Nz6dIl9Bs0E9DBT0pKWr169dWrVyUSiUgkUuleaA7Vuc7OzpcuXfr+++9XrlypP2ERpL1CCMnIyCCEJCQkdOnSRXM7SBNGjhxJCDl48OA///yjx2YRoLKykhCyf//+S5cu2djYcP8SCARaNEi3MjIyWrly5cyZM319fVNTU/UgK4K0Q8AOys3NJYQcP37c2NhY77tgWbZnz57//PPP5s2br1+/jiatHklMTLx06VJxcfGcOXPAXSMUCuEdKRKJtGsTNodPHo/39ttvp6amBgUF4YVDEG0AJXvmzJnLly8LBAKWZfVrxnJdfqtWrSKERERE6LH99kx6evqBAwcSExM7d+6s8hecdi0uJfd60fvBy8uLEBIWFoZ6FkGaTGlp6fHjx4ODg42NjXk8HjxjWnv06kUgEFCzyNfXd9OmTadOndJj++0TQkhQUFB6erqrq6tIJII+PlivPB6vbtSH5qhsCAby6NGjCSF3795FPYsgTQBcBGlpadbW1kyt4aPfKHRufAK0fOrUqTVr1sTGxupxL+0QcLx4enoaGRlxl9PLJxAItNCzKr4C+GJsbMyy7FdffQV6Vg/SI0g74fjx44QQV1dX5n8fTv3uhYZ2wS5MTExiY2N37Nih3720KxISEvz9/WHcnypTPp+v92snEom48dE7duzYtWsX6tnWCU7Ra3X4+/unp6cnJiYeP35cIBAolUqlUtl8u+PxeEqlks/nKxSKSZMm2draOjs7z58/v/n2+KqSlZUVGho6cODAoUOH5ufnQ/8dTiysAC8zXfr1LMsSQgQCgVwuZxiGx+PRyXt37969d+/euHHjHB0d9XAwCPKqUlxcvGHDBn9//5YSwNfXd+bMmYGBgS0lQBuFEHL69OmsrCx3d3foIujXgd4Q1JVkaWmZlZV18OBBA+wUQdow58+fLy4utrOza0EZAgMDfX19CwoKWlCGNse1a9cIIR4eHnSJSi6CZgUU+rRp03777beUlBSD7RdB2hgPHz7ctGnTzz//3IIy8Hg8W1vbgoKCQ4cOtaAYbYvHjx/v3LlzxYoVDMOIRCKWZVWy9jQfEM5Ff6akpOAsPgSpB/CsXbhw4eHDh0KhsGXT2bEsO2XKlF9//fXKlSstKEYbYuPGjY8fPzYyMqKdd5Zl9T7Y1RBwt4CP4sMPPySEpKWlGWbXCNJmACW7YcOGTz75xDC+vIagAblXrlzZtWsXOg0axcfHZ9asWe+88w7TQAItg8Hj8YRC4fXr18+ePYsXDkH+h+fPnx88eBDCpwxmATUEmGNdu3YtKCg4cuRIywrTyomPj1+8eLGPjw9MwaIaFhyyhnxfgoZlGMbFxaWgoOCvv/4y2K4RpA1w4sSJgoICY2NjblrCFgS0w9dff+3r65uXl9fS4rRezp8/Hx8fL5FI4Ce8ILkTBwwMzFP49ttvN2/ejHksEeT/U1xc7Ofn98MPP3BTbresSCCJQCDIy8sLDQ1tWWFaLYSQo0ePbtmyhalTkMKQTgN6t9B4BolEkpOTc+7cOYPJgCCtmtDQ0OLiYjMzsybpVroyNX7hy2uvvcYNJKLzjsDIarQDy81gIhQK/fz8tm3bprlU7QqYcdC3b18d24FzbmNjM3z4cGoUM5xXnRZt/vrrr7t37y4rK9NRNgRp8xBCAgMDqTXENKYHuRpTKBSqPIGzZs0qKSn56aeffHx8uCqbrtZo8CYNP4LPQYMGfffdd3FxcU0/slef0NDQ2NhYoVCone+Va+26ubmlpaXNmDHjxo0b9vb2Kq9bLfSsRCIpKyvDzGoIwqSlpRFCunfvzjQxEQx98Gh+0vnz5xNCbt++HR0dTQj5/vvvGYbh8Xg0tIjRzF0IFjFNfhoXF3flyhUMvVTh3r17a9asmT17NqPVABf3KrMse/PmzV27dkVHR2/dujU+Pt7e3h7+0mXobP/+/QEBAehSR9o7wcHB169fZ/63DKIaGsoXM2bMGEJIVFQURIM9ePCAEPL+++/TFTQ3ZlX29cUXXxBCcBSFCyHk/Pnz9+7dk0gkOjrQRSLRiRMnli5devPmTYZh4uPjd+7cGRMTY2VlRdfRTtU6ODjk5eVhxUykvfPDDz/MnDmTJq9r9IkFxUfjz2nKu+zs7MuXL1N7kxACpb8HDhxIt6XqVY025+puqvcfPHiAJWq4lJWVEUI++eQTRoeQO+gxHDx4cO7cuSdOnKDLY2Ji/Pz8fHx8oGXtxtBgq7CwMBz+Qto1qampU6ZMcXFxoVMANKk+y+fzVbIU/vjjj9u2bcvOzuauBklpIyMjYSyF6gLNLS86Sj5r1qwtW7agx4Dy4MGDjIwMIyMjXaIIWJadMGHCwoUL62Z1efToUW5urqWlJaNxF6de/u///m/p0qVaS4ggbZ4zZ86kpqZS9adJkCx39B+8sba2toWFhfUWNYiMjPz999/nzJnD1D6rGipxlZ8mJiaEkJiYGA2P65Vn5cqVKkOLTQVmLmRkZOzbt6/uvxUVFYSQNWvWaN0+XOK33377v//9L74dkfbLmjVr1q5dy/xvmg/1hfaoXUP9dDt37jxy5EhhYWG96588ebK4uBhsIg0tZYCb4oTP5x89ehSHv4DIyMgpU6Z07txZR2/s2rVr9+zZk5GRUfcvQsijR48KCwvNzMx0GfuSSCSEkKdPn+ogJoK0WW7fvj1t2rRevXqBAUsDWjV5qKieNTc3V196pLi4+NChQxs3bqTOXO36nh988AEhpCFV3n4ghFy6dCkyMpLRwRvLsqyFhQX4zRtap7CwcM+ePb/++it3K4bTz9Cw6u3ff/+NU2yRdgcEAFy6dOn27ds0wTP1FWhoucBq+/btg1o1ata8desWIcTR0ZE7JUkLsePj49UohXZCVVUVIeSbb77RfBOVtxo4ChYsWLBr1y71Fy44OLikpMTd3V2lEXqrNGpK83i80aNHL168ODc3V3OBEaTNA0o2MDDw22+/hSVcraehBmRZ1sXFBaK1Gt3dvn37li5dyp1ZrwXz5s1buHChdtu+MmRnZ5eXl5uYmMDPJvUMuB6Y5OTkRstPlJSUBAUFBQQE0CUaWq8U8MLn5ubirASkfUEIgZENV1dXbvbYpnbk161bFxAQoImfNDAwUEfHHJ/Pt7e3/+KLL7KysnRpp61z9epViGtmalWe+qtWrwXar1+/H374ITk5udHdwbwSKFqs0lqjCpe+rY8ePYplaVqQlkxd2m5hWTY5OTk5OTk1NbWmpga0JA2VZTQzZkUi0TfffGNtba2Javby8tqwYYObmxujrSWrUCgKCwt/++23dp4Q+v79+7dv34Y+ARS4VP+So+UUGYapqamBK/t///d/ffr0gcuhnt69e2/duvWTTz6BoVFCCL03oJZiQ7AsC+KxLHv27Nns7GwctGwpUMm2DDdv3rx8+TJ8By2pVCppWVP1zwOs379///Xr12uYncTd3d3d3X3WrFkMw9C9NAmhUKhQKK5du5afn6/F5q8GhJCqqqpHjx4pFAoejyeXyzWcpEcvKJ/Pt7a2njx5cv/+/TXZI8uy7u7u33zzjVwuh7BlpVIJelZ9DWPutJQbN24sWbIE59e2FKhkWwBCSG5ubnBwMEzZog8q2ClQ51l9CwKB4JtvvvHw8KCT3BvljTfemD59ulAo1C5lbU1NDcMwiYmJRUVF7dYmKi0tXb58eWxsLNeiVA84bZVKJb3Kn3/++Z49ezw9PTXcac+ePQcOHNitWzeFQgEWMewd0oSr2ZBKmJeXFx0dXW+sGIK8miQmJhJCVJLacR8YNfYRnVBLCHn48KHmOy0tLd2wYQMMtWk99jVy5EgYtdNu87bO/fv3U1NTG0of0RDc4Dk+n5+amnr06FHNd0oICQgIWLVqFV3SpERCsKavr+9vv/2m+U4RPYKWbAuQmZkZHBxcWVlJlxBCuL14NVoM/oKZPE3KZGppaent7f3f//6Xz+dr5zFgGOb27dsMw5SUlGi3eVvn5s2bx48fpz8VCgU3lURDcHvuU6ZM2b9//5tvvqn5TlmWtbKymjlzJv0JJq0mrzoQjBBy+vTp4uLidvt2bFlauJxU+yQsLEyXQl5CodDT01OLaQUeHh52dnZ9+/a9f/9+U3fK4/GUSmVlZeW9e/e01tFtHSjfC711pVJJRyzVu0cB8MyOHz++urra1dW1SfuFaAQ3N7fk5GR4R2qyRz6fD6vxeLzo6OgbN24UFRU1ab+IXkBL1tAQQl6+fHn9+nWts37U1NT07du3T58+Td3Qzs7ujz/+GDFihBbuAvpU37x589atW03d/BUAcgZCQkItrp1SqZRIJG+//fZrr73W1G3t7OxevnwJsxIgqEATm5S+C5VKZUVFRXx8POarbBFQyRqawsLCDRs2xMTE6JLAydvbWwsly7KsSCT64osvtDZFWZYNDQ0tKSlphx3PxMTE9evXS6VSptZRoMkoP5fBgwdv2rTJ2dlZi717enq6u7vTyFwNh90IIXCbiUSiiIiIe/fuabFrREfQXWBo8vLyioqKioqKtFay1tbWnp6e2oVS9e7dGwJmNYmE50I7yDdv3jx37lw7nKaZnJycmJhIPdo0ZqDR9w3Vxd9+++3z589tbGy02LuXlxf1S2i4a1iBECIUCmUyGcyu1mLXiI6gJWtooqKiwKDQ7o5nWdbb23vJkiV2dnZabN67d287O7t///vfTd2Q2mtlZWWPHj3KzMzUYu9tF0JISUlJSEgI/KRhdhq+KUHTDRs2jFvjskm8/vrrffr0kcvloOWpiap+pxDPAOF3kHcC9azhQUvW0Dx+/Fgmk8F3TeygugwfPlzDMPh6ee+99xiGWbdunRbbgjEVHh6uy8BdW+TFixc+Pj729vYqE0ZgaoB6jwH86+3t/csvv6xevVo7AaysrMRisYWFBS1Aq7mbgmEYsVicnJyclJTUnueStBTt61FpDTx9+pROB9BCwxJCNJws1BAuLi5NHd1mat8H0EuFSmK6yNDmyMvLMzMzAw1FtapAIFA/t5XL0KFDWZa1tbXVTgCxWPzLL7907949MjKSZVnwAKjfBC6ZQqEQiUTV1dUMw8TGxuqYAxfRAnQXGBRI9vHkyZNG11RjqPbv379Hjx5ay+Dq6vrDDz8MHjyYG+PZ6EAKXRnySYtEIsPoWQjGKC0tzcrKSq3l2bNnWVlZpaWlz58/J/8L3Uq/kybi4uLCwsLgOzUhQcNqaFG+8847Q4YM0VoAmNrXp08f8FTIZDLNuzKwskAgSElJSUhI0FoGRDvQkjUo1dXVBw4cMDMzYxrzFaj8RVd2dXU1MzPTvOJsXViWXbJkyVtvvXX79m0NsyUwDKNUKiEAnhCSmJgYFRWlUlJMawgh+fn5Uqk0JSUlKysrKysrJycnJycnNze3sLDwww8/PHfuXFVVlVwuBycjROMLhcKamhoLC4uPP/7Y1NQU8gHu2LFjw4YNTk5OCQkJ3bt3B/NNL9y9e1e7c06n1Q4cOFDHBGZ9+/atqamhOr3RS0b9tnDV5HJ5YmJiu41xbkFQyRoUqVRqZGRUUVHRpK24VmTfvn2XL1/OnWSpBYMGDRKJRL///jtT+6xqOH0IHtGXL1/evXu3ST5BCt1RTk5ORkbGrVu3li5dum7duoKCAoFAQEfPYV/g/5VIJDKZDKKm6MsGPsVisampqYWFxaBBg7p06dKpUyc7OzulUlleXl5RUeHr6ztr1qzhw4f369fP1tbWxMREO0c2IWTJkiVqyk+o3xZyWs6aNWv37t1atEB54403aIdDQ28+TdwFJzY2NlaXYjaIdqCSNSi5ubkwZtWkzix3TS8vLzqbU2u6du3auXNnlQe10ecWesfgEIyIiDA2NtZi1ykpKd26dQsICJg6dWpOTg7Lsk+ePOnQocPLly81jIViOHOuqqur5XJ5aWlpcnJyREQEzHGi2QVdXFyGDRtmbGwskUhMTEz++uuve/fuubq6WllZNekElpeX+/j4dOrUSYvjBfr06SOVSs3NzbVugWEYR0dHBwcHIyOj6urqRs8VvcdoLhuhUJiYmKjjnYNoASpZg5KXl1dTUyMQCCCqRgtef/113V2NnTt3njp1qqWlpVQqpf1HTYwj0GIymSwjI0PzMR9CSE5OTkJCwoULF3bv3v3uu++GhIQsXLiQjnTTkg3gcIQQJVhC7daG0jvQqFW6Ao1LhaS9/v7+QqHwjTfeGDdu3IABA6ysrM6dO3fr1i1XV1cN9SbYxdrVN4OIKwcHB921m4ODwxdffOHg4AApfdVfLx6Px53xBZ+pqalDhgzRJPwL0SPYdzAoJSUlL1++1FrDMgzz2muvaTEvUwVLS8ucnJwuXbpwU/Bp8uDR5/bp06fx8fGNrk8Iefjw4blz5xwcHMzMzBQKxYkTJ959993Dhw+DhhWLxXw+H/S1QqGoqakB3yvdnVKppMYpBaY8gVKmO6JOFboJnRlVU1Nz586dJUuW9OjRY+TIkVKp1NXV9cCBA8HBwVlZWY2+WlJTUzMyMrTzZkIyFycnJ+0menFhWTYvL0/DyBDqeKGfCoWipKTk1KlTz58/11ESpEmgJWtQysrKtDYiQGV069ZNL+M5Xbt25fP5UVFRTNPDdQUCQVRU1IgRIxqyiQgh1dXVSUlJx44dmzhx4qNHj/r06RMbG6vixuXxePRYaLIVriOloRDUep0tdZ3L3NUg3Eoul4eFhYWGhhoZGX322WfvvPNO586dT58+feXKlVGjRjV0vKmpqZAzWzs3tFKp7NGjh16uWpcuXWiJBPWXTMURRDfJy8vDKC4Dg5asQSkqKiosLITM3ExTqsaChoUa4BCcoCMuLi5dunQBGWhpBg0lkcvl5eXlR44cKSgoUPm3pKQkLCzs77//FovFzs7Oz5496969+3/+85/o6GhuC/Cl7h6pBUp/NvROauq7ijo3wLSsqqoKCAgYMmTIp59+ampqunv37rlz54aEhKSmptZVXomJiZmZmdq9HeG1YWNjo0Vscl26du2q+axc+u7kdgWkUinm4jIwqGQNSllZWXFxMaPZTCFuHhAYbe/Zs+e0adOMjIx0l8TJyalLly7gY1UqlWKxWJNxJyrPy5cvHz9+zHVTEkKioqKuXr3q6emZnZ09dOhQZ2fnRYsWpaSk0MOkEUXqd6RijTa6TlOhHf/q6urTp0+PGjXq4cOH4H9wcXEJDw/Pz8/nhtwKhcK4uDjt9gXtdO/e3cHBQWuBKU5OTr169dLwdUitXe6xFBcX0zljiGFAd4FBKS8v17xvrhJdzzCMnZ1dfn6+XkYtHB0dGY4rs7q6utGBFDrNCQR7+vQptx7qvn37/vOf/8TExHh5eWVmZtL16QgMW1var1UBR52WlrZ582Y/P7/evXv/8ccftra2sbGxFRUVUPp75cqVvXr1gqlTjc6zqouJiYmVldXLly91lxY6HzCYpt2cbMgihhgStGQNSkVFBRQDZzSrlshwHGp8Pt/BwUHreZkq2NnZqehZ9b4Lbgy8QCAQCARpaWnp6elXr15dunTp9evXTUxMevbs+eWXX1INy81O0mqhbw6GYWQy2YMHD7y9vf/zn//Y2NiYmJhERUXJZLL58+eDY0QLDcswjKOj47Rp07SLeFOhU6dONCJCO1teKpWWl5frLgmiOahkDUp5eTntrDXVnlUqlR07dtQuUV5d7OzsVMI2Gx09FwgEYJZCDEBeXl5JScnJkydHjhwZHR09ZcqU+Ph46t6FApHUhqXfWyFCoZCGNIjFYoVC4e/v7+jouHr1amdn54iICF9fX/BjajFkRAjp2rWrvvoftra2Dg4OurhKXrx4gdEFBgaVrEGpqKjQ8BZXGR2GJZaWllZWVnqRxMrKilvpVhP1IZfLlUqlSCQCuw/Cs2xsbEaOHBkZGcnUdr3BZKMlUsCzTIMH9CK8fqmpqYGUPSKRqKqqCsTm8/krVqzw8PAQCoXU9NPuPdGlSxfd47cAExMTCwsL7eoNAy9evOAWl0MMAPpkDUqTjAiqW6n3zdLSUl9h5B06dDAyMuKqlUYH4uhMBMg2cvbsWVNTU0iZCLYqfHn58iUoU1qNqtXasJSamhoejyeTyeAYBQIBeAZycnKGDRv2/vvvMxrX8qqLs7Oz7vNHACMjo/Hjx5uammodEFZVVaUXSRDNQSVrUF68eEFqkz1r/uBRxWptba0vhWVkZDR58mR7e/v09HQNN4Fdw8CXXC5PS0uj/lw6oQCgU4zgJ0SJaVj+r6UAJzIcI9i2NTU19HXCNDF/KxdHR0fNZ8eph2VZNzc3KysrrcOwqqurW/877xWjNXbfXmEqKyvBlNA8oz73Z4cOHUxNTfUiCcuyaWlpMPYFsVkaKhG5XK5QKGh0LYzIcZUIVbvwE1qGB7t1hsHTBORggEO0P9i2LMtWVVXpmKFcxTOjIxYWFroESpeXl+sxORmiCWjJGpTq6mqwmDTRaDQNCi3oZGxsrK+OJ8MwNE9Ko9OH6sKVX8UygqZUJs7XuyYXatpzpyfV/Zf+pDvi/lV3NW7t7obgzlPg/lTJG6s1nTp10mOIRYcOHXR5VymVSvQYGBhUsgalqY+rSpyskZGRHpWsubl56+m/c4+UfqdVC0ltvhiGYWj6GJUNmVqzmiaLIbUpY5pUwkDvdOjQQY8JWXQMBWtStm9EL6CSNSig1DRXlNyIWh6PBxWh9YWZmVnrHO6nylQl5J5rCIPkdW1w7jqQxEupVLaghmUYxsLCQo/nWSgU6qIlG7XrEb2DStagaG451jsyJhKJ9Gh7WlhYwJfW9tTVzb4IahdUKltbbazebbnKl7ajdWCAXrC3t9djD52be0wLuEnOEMPQGg2ZVxhwsMJ39fYI10HJXVOPfb0OHTroJdeMXoBuPvcnRNcKhUJwGkBwArizCSexIUw/oxuqWGpw9lpQw4Kcekk3wTAMIcTT01OXFmQyWevxEbUTUMkaFGqLMZqpS+46hJPNWi8YGRlBWLuKHm8RaL5tOmcMjhSqWtXVv3TsC0wzlYV0Ze4JbxFEItG7776rxwZ1rDyk8jJDDAC6CwwKqS0FqPmTzx061y4nSEM0pJhaChpUYGpq6uHhMXjwYHd3d3t7e2NjY5jmBJV7mNp0hUqlsqKiIjc3Nz09PSYm5t69e4mJidAUqF3qVdDveWsSYrFYlwladVm2bJkuga769TghmoCWrEGhE0y1APSLHoOBwKjRRSQ9IhQK+/Xr98svv4SFhaWnp/ft27e6ulomk0G8KgTnUi0MPlZIwg25FLp3756QkJCSknLgwIGpU6d27twZ3Au0FE1LHZdIJLpw4YK+WmNZNjo6Wsfr1TpHO19h0JI1KDBdChRlk+wRyMxSUlKiX7MI3J2gs3QfHdLQKKaBWbBHDw+Pzz//fPr06cuXL4cozoKCgtWrV3fs2FHzXRNCSktLKysrCSE9evQ4dOhQZGTkrl27zpw5QzPy1HuAVBjuUejxrSOTyaCquR4b1CVOFn0FhgeVrEGBAVUpKmsAACAASURBVBDNMxhwlQJM+tQu215D0NK5jD7MPRXdRLOvgiKD/jskP7S3tx81atTIkSOHDBmybt06Ho/38OHDVatWaZ3IUcV5nZWVVVpa2qNHj/Xr1yckJFy9evX8+fNPnjyRyWQ0PoFORQNznmVZiPTSr13PsuyNGzf0qNoqKyt1aY2beR0xDHi6DYpEIunQoYMmDlmVJwG6yS9evHjx4oUe5QFdo3d3ARwdjXtXKBRCoRD670KhcP/+/bm5uT169FAqlc+ePVu6dOmiRYvGjBmjr1S5LMs6OTm99957X3/9dVFRUWVlpUKh6NevX0pKyuTJk0UiEeh6Op4GI4q04Ll+bT2WZd9++209nuGKigpI/a6dnEZGRmKxWF/CIJqAlqxBMTIy0rBPXW/JlpKSEj2aIaBuCCfLly7Ue1zg5RCLxdXV1fb29j/99NPXX3998eLFR48eLV26tLm7rtyMAVlZWVeuXHF3d79586aPj8/p06fp8CN3Fi+d96EvN65AINCjr4BhmIqKCl2uV4cOHXDgy8CgJWtQILug5iFcDMdFyOPxnj9/rsfyIWKxWCKRqClWqKF43O9U1cLkNLBha2pqVq5cGR8f37Fjx0ePHr3//vve3t4Gdg46Ojp+/fXXo0ePzs/PDwoKevTo0ZtvvsnU6lMejwfBthCWq0c1BGVx9dUaU2vJwnctzqFYLNZX0C6iIahkDYqxsbFEImmSkqUPPJ/P5xZW0B0+nw+apUnyqIE7yRW8sTwez8XF5dGjRxYWFnfu3Bk3btyIESMsLS113JHWDBgwYOzYsXl5eampqR4eHr6+vvTYaZJDGAnU1x5FIpEec48VFxd7enqWl5dzL1xT5dFLIRxEc1DJGpQOHTqYmJhwe6aao1Ao8vPzS0pK9CWMUqnkBoTp7jGgLQiFQoFAIJFIfv3114SEhLi4uGHDho0ZM4ZO5G1BWJbt1KnTp59+2qNHj9zc3Nu3b/fr108ul0MPAxJE6NGSVSqVgYGB+mqtsrLyxIkT1dXV2t1CDMOYmJigkjUwqGQNipmZmUQiaZIblPbBlUplaWlpXl6eXiSRSqVSqRSULAx/adcOnf5LlwgEArFYvGjRooSEhE6dOoWFhU2aNMnLy0svYuuR+fPnT5w4MS0t7d69e5cuXXrrrbdgDFAmk+nRkgWLPjo6Wi+tSaVSKClPozWa2gK85vUiDKIhqGQNirm5OVRCbPTxgOccHnva33z27FmnTp10NDmhU//s2bPp06cvW7aMqS0KwGgWps7j8UAeGvnEcBwFfD7/rbfeysrK6ty58/3798eMGTNs2LBWG5vZv3//zz77LDk52crK6tq1axcvXuzYsSM38IDR2ZeSk5OzYMGCmzdvJicn6y5wbm5uUlISOFXVx1mriE2vrKmpKSpZA4PRBQbF0tJSQxXJ7bHSTYqKirZs2aIXSTIzM8+fPw/OB0i32uiQOkxshXVgOIsKBi0IBILhw4efOHHi6dOnU6ZMaQ3OgUbhBkUoFIrTp0+PGDECgiJgBdrt0G5Mn8fjbd26NT4+HmpN6khubi6Px6uqqoLzr2ZNFVHple3QoYOOhR6QpoKWrEExMzODYoia2Ef0qaYPTG5u7g8//NDUks7kf2EYJjEx8f3339+0aRMErnKnJDQEj8eDmlcw5QyecJZlwaqFINOlS5eOGjXK3Ny8T58+bULDqtCrV6/bt29HR0c7OTlBOUWqW8ViMbdL0STkcvn27dtzcnJSUlJ0lDA/Pz8/P5+prfzY6PrciGxY387OrgUHHtsnqGQNirm5uampaV3t2RAqq0ml0mXLluXk5HA1piYtcJFKpa+//vp3331XXFzMsiyozrquVRVounEw8cRiMYTZwk8TE5MLFy7k5eX169eP0V9mP4MBrz1nZ+exY8dGR0enpKSMHj2aHrJIJKqurhaLxVpkZoHX2I4dOz755JPg4GBYqPnlUyE7Ozs7OxvC4xr1YKisAD+trKxQyRoY7DgYFEtLS83TFVLFx/2SmZmp0qmHmWDl5eXPnj179uxZbm5uSUlJcXFxQUGBVCqdM2eOn5/fnj17ioqKYIBr6dKlERERu3btYv7XUdCoJQszYmE1KMYHGzo5OYWEhJw5cwYitLQ9N62Cnj17EkIOHz48atSovn37bty4EaqgM9qm5oHXGMMwP/74I4/H69u3r0AgmDVr1u7du2fPnv3mm2+KRCITExMrK6uOHTva2tra2dk5OTk5ODjAGKm1tTVth2GY1NRUWq6cJp1Qs2s62YSp9eEaGxu3znKWrzCoZA2KnZ0dVWfqe+j0+VExM9PS0qqrqwcMGPDixYuCggJ/f38fH58lS5ZUVlbSbFUwPx0GymNiYry9vWEwR6lU8vn8c+fOPXnyxMjIqKqqij5+jZpFhBDootJBbRBv6NChJ06cuHDhwrhx49zd3fV2ploOOBVXrlx55513BgwY8OOPP2ZmZtIRyKYas3CuBALB+fPne/XqBROuoqKiBgwYwNbWeYQzCZcPlkAA3MqVK/v27fvNN99kZmYWFhZaW1tPmzYtMjISNmy0xDrXjwyf5ubmVlZWL1++1PrkIEhrJyoq6vHjx5qsST1uKlOqfvrpp5UrV27bto0Qkp6e7u/vP2nSpO7du3PX4X7n/oRgALpQJBLBXsC0UW/gwL9UKvDMdunSpby8/Ny5cwUFBZocVBuCEBIXFxcQEBAeHq6XpCo8Ho8GqNJTzY3QgO90fXNz8yFDhvz888+hoaGFhYVz587dt28f1y+sXiRuuAhds0+fPt98843eU1UgSCsiPz8fAl2bGhhEn5PBgweHhITMnz/fyckJltTN91FvszCmTB9RGoalZpN6ZaCaumvXrhkZGUePHqWzPF89wsPDt27dCsUItEsySS80/aK+HTrBl+FcLLFYPGLECF9f34MHDzZp79zXp1Ao/PDDD8eNG9f0g0CQtkNFRYUukf+tBJZlLSwskpKS/vjjj4yMjJYWp3m5fv06IeSHH36An3V7Bi0kl0Zw3+Usy86bN2/u3LktLRSCNCeEkMmTJ3fu3Bl+tiFty61GLhaLr1y5snHjxqSkpBYUyTAQQh4+fEgIGT16NDUzRSIRtTf1m0Zdv8BrgNb18vPzgwFPxJC0mYf81YBlWalUSueYtqGkczRZuI2NzZEjR65du+bl5fXaa6+1rFQGgGXZvn37Xr16NTAwcMyYMTDwBZVvoBuuYchqC0LHWj09PXv27NnS4rQ7WvXN8Uri6enZp08fptZJ2oYAgY8cOVJeXu7t7T1q1KiWlshAsCz7xhtvPHz48MKFC4MHDxaLxRCnAQkE2BYtOa4GtrZ8OmhYoVDo5eVlZ2fX0nIhSHNCCLly5UpAQEBLC6IlEydOJIToZRp+m4MQcuHChczMTCsrK1gCfXA+n9+aI0+p17hbt26TJ0/WY6pMBGmNgFkRExMDP1v5sAkXEDUqKio4OLjdxgBlZmbu3Lnzp59+ggoXrdxLANAXwNixYzG0oEVoA3fJq4enpyfEXbUhbUUImTZt2sWLFzt16tSG3g36xcnJydHRccmSJdTLCbMzWvMJobL169fP09OzZYVBkGYHLNlff/21e/furfnJrIu5uXl+fv7hw4dbWpAWprS09MCBA2vWrGFqIy5a53WkUtFQ2cDAwOPHj7eoUAjS/ICSXbZs2aRJk1rzwwljXNAdhu9nzpw5fvw4pIBq54SFhRFC6BziVhvCRafzgZ6Ni4tLS0vTLjENgrQZ4Bbftm3bggULBAJB6xwwqetq/Oijjwgh8fHxLSJPa4MQcvDgwatXrzJ1Js61HuAi0uhmSGJw9+5dlaSXCPJKQQiBLIUHDhwwMjJqtRYQwzDgZ6RW7dmzZ48fP46PJeXq1aszZ84cPHgwwzB8Pr81j4DRF8DgwYMzMjIuXrxYXl6OShZ5BSGEPHv2jBCyf/9+urDV6ll4Mo2MjAQCgYeHx4wZM86ePdvSQrUu/vjjj4CAgNbZF2EYRiAQsCzLdfswDNO1a9f4+PhLly5B3ssWFRBB9M2lS5cIIUeOHKHTHFut+QNPJrwAWJa9ePHivHnzWlqoVkd0dDQhxM3NrU1MKqHDX15eXomJiRcvXiwuLkY9i7wixMTErF69esWKFW1CVYHKoH1MZ2fn6dOnX7x4sUWFao3A3ISzZ8+2QocsQAe+oNo5Xf76668nJycTQh4/fox6FmnbQE7SgwcPxsTE9OvXD2xD6iJotTVaaDeTz+dfunTp+++/b2mJWinx8fGEkBkzZrRaPUuLsAkEAoFAQDtPYrF4xYoVhJCrV6+inkXaMFlZWYSQoKAg7iBvy4rUKDTZs0gkCgkJWbZs2aVLl1paqFYKIeT+/fuEkHfffbelZakHbglFlXKK8B596623CCHXrl1DPYu0PWD0NjIy8u7du1r7XlU0MneUTE0mU831uEoNBW6C50GDBiUlJa1fvz4kJKSpYrcrCCGHDh1asGDBxo0bafZ0rs3Y6HwwleoVaqA3ALeeRVOBfdGmhg4dSgihFR6R5qC1G1ZtFGoa9OjRIykpSZcsTRDhCJ/UDIGEe2rq6FlbW/fu3bt379729vZGRkYdOnQQi8Vyuby8vLysrOzFixfZ2dkxMTGJiYkymQzKKTIMw+fz33nnnV9//fXNN988e/Zsz54920MyQ93ZuHFjeXn57NmzDx48uGfPnrS0NDil8GlhYdGzZ093d3cXFxcbGxtLS0sjIyO5XP7ixYvnz58XFBQkJyfHxMSkpKRAsXd4g9JiYnCVabUu+CkSiWjyyaYCLdAsYnPmzOnUqVPXrl0nTZqkrxOCcGkDA6NtDkgB07t378GDByckJOjyPDAMAyXzCCFQ+hAWwiNHnz349PLyGjp06JAhQ958883OnTv/3//938uXL2UymbGxsVKphBSosLJMJnNzczty5EhJSYlUKs3JyXnx4oW1tbWLi8vWrVvz8vKysrI++uij1u/caCUsWLAgNzc3Ly9v0aJFVVVVkyZNys3NlcvlYrG4e/fuhBA7O7v169dXVVUplUqFQmFhYaFUKjt06FBWVlZTUyOXy/v06RMcHJyRkfHgwYPg4OCwsLCKigo4/9x6mrSSo9Z3FIS1EEKgeqZCodi3b9+BAwekUmlSUpKbmxtedL2DJ1TPJCcnP378eNy4cWPGjLl8+bJQKNSulDQAm4vFYijBza3gzdQ+eC4uLh999NHMmTPd3d23b99ub2/fp08fOzs7MzMzNQ8MIeTly5dVVVVFRUWlpaUymczMzMzExMTS0pKm8kOaBFiaRUVF6enpNTU1VVVVZmZm5ubmNjY2fD7fxMSEXg7a0aFLcnJypFJpQUHB/fv3S0pK1qxZExwcvHPnzsuXL9fU1NDylwqFgnsPqC8JrgYo8UA1tUgkOnv27OjRoxMSEtpcVg2kfZGfn3/w4MHk5OT+/fuDl1PrYHWuXw/g1q+VSCRjx47duXNndHT0pEmTFi1aFBYWVlBQgCMYbQL1E1sJIYmJiSdOnFi2bFlBQcGVK1cWLlzYs2dPzf28aqAeJ4ZhBAIBDMnCzbZx40aM60JaNYSQiIiI/Pz8Ll26qJRi1g7u9HP4FIvFLMuOHTs2Njb2xx9/3Lp167lz56Kjo/UhPtLqKCgoiImJOXfuHCSxPXPmjI2NDZ0kUvc1rAl0Exo8y315L1++nBCSkpKiv4NAEP2Rnp5OCJkzZw785FYe1AJaxpm7cOzYsTExMcuWLdu8eXNsbKwu7SNtCDB7z5w5QwjZuHEjlJDRy4xeCNamJi3Lsv/8809ISAgas0irIysr6++//w4PDxcKhZDIGZbrYsxyDQ0PD48bN24QQs6fP08LKyDtBOpeuHXrVmBgICFk0aJFEolEu9ZUorgosKRPnz6EkOvXr+smMoLoleTk5MOHD2dlZTk6OurSDrfjxtWwM2bMgOJgkGJGd4GRtgvcCTt27IiLi/Pw8GD+N9KWZoShS1SiodW0TEuWrVq1yt/fPyIiAm82pFVACAkMDExOToY7vqmo+MX4fD7kmQVbeMiQIRcvXqQzi/QoNtKmiYuLO3z4cGFh4fLly21tbRlOxkUVE5XH41Gdq0bJwjr0PvT19YW7rhmPAUE0AaZ1EUK6dOnCaOUmo3c2TeYET4JEIjl27Bgh5J9//klMTEQNi6hQWFh4/vz5PXv25OXljRo1Sn3aTM3nldF5a3v37vX394+Li9ODrAiiNZDv7ssvv2Q4WlI7aCwkwzBOTk5xcXGHDh3CeBpEPXl5eTt37ly/fv3y5cu51qgWuTS5GYsgSiwuLi4oKAjvQKRlIIQ8f/48JCSEW1tQi+hFGChjaq1ggUAgkUju3r3r5+eHRgSiIaGhoYSQX375BX7SCEKuntXEmIVJCkyt22rAgAEQmNhsgiNIw8Bob0FBgb29PcOJOtQFY2Nje3v7Gzdu+Pj43L17Vx9iIu0CQkhoaOjOnTvnz5+v8peGjoK664C29fX1PXDgQGFhob5ERRBNqaqqOnfu3NatW3Vvio4IOzo6pqambt++/caNG7o3i7Q3Ll++TAjx8fFhWVYlZ5uGLVCHA+1dCQSCwsLCgICAZpEYQRqCEBIeHl5eXm5tbU0X6hISy+Pxxo8fL5VKAwICUlNT9SEj0u4ghNy4ceP3338PDAy0tLSkepZOw9XkFq2befaLL75YvXo1Og0Qw0EIyc7OJoR89tlnsETF+dUodWdzwXTG69evS6VS/UqLtDcCAwN9fHxSUlKcnZ0Z3RIdUCIiIpYvX64P6RBEA+gcR/hJx2TV38qgWKku5pYRnTBhwm+//QZjF80nNtJ+SElJ+fPPP7OzsyGEtqlGgAoCgWDgwIEzZszYt2+f/mREkIZJSEgghPTr14/hTCXQxFigNgXYsLCVkZHR06dPd+zY0cxSI+2L7OzsQ4cObdq0ial9wetoz+7bt2/z5s0FBQX6kQ9B6gVs2MuXL2/evJmptWFVVKcauHc5WLICgeDixYs+Pj5Pnz5tRrmRdgnMix0+fDitjKmLPevu7g55F/UnIILUgebpsLa25k6EZTg1shqCa01Qvbxq1arZs2djwW2kOSCEXLx4kZtSQ8cstBs3bvTz88P0b0gzkpeX99dffy1YsIDhpD1mOCHcjcKdd7B48eJPP/101apVzSgx0r7Jysry9/d/8uSJm5ub1rk36TitRCKJjY3dsGGDXmV89cE6E5oCRT0dHR179+5NS91BRwxqZ9FyhPXC5/OhJBfUC5k1a5a5uTnLsr/99psBDwJpdzx58uTOnTvDhw8fOHCgFnMKaAFHYPjw4QMGDPjkk08GDhyoVzERhGFKSkoIIZ988glTX01mzRMXCAQCLy8vQsi5c+eaQ04EUSE1NXXt2rX79+/XS3bjyMjIbdu26U+6Vx+d6qO0KzIzM1NTU4OCgugSWrSZYRg1NiwFblNCSEBAwPXr18eOHdscciKICq6urvb29gkJCePHj6d6lpu8WP3m3OEEQsj27dulUml6enozSoy0T7Zv3757925Gt7IfLMtOnDjRz89PTR09BGkODhw4kJ+fb2pqytRqTE3GwbjGL9z5YrE4PT09PDy82SR91UBLViOSkpJSUlLAjNW6z8Xn8wkh33zzjZeXl16lQ5DG+fe//33lypUJEyYIBAJCCI/Hg9e8ek8Xt+Q4IYTP51dXV9+6dau0tBStBEQ/gMkZFhaWlJQkkUh0iehmWXb69OmEkOTkZD1KiCCaAHdyRkaGmZkZw8mx2SgqE8aMjIyGDx9OCHnx4gXqWUQPwK0ZGBg4e/ZsXdoRiUTOzs6EkHv37uGtiRgeQkhZWdmFCxfo7FihUKhhXBdNdkx/ZmRkoMsL0Q+EkLS0NEKIRCKBOV1a+2SPHTu2a9cuvC+RFuTBgweEEDc3N0hjyDCMUCjU5JamNZjhc+3atefPn8ebGdEPf/75559//kkna2nXiKen59dff33s2DG9ioYgTYMQsnv37qNHjzKcm7lJTjCYTd6tWzdIR9ccQr5i4MBXIyQlJT169OjQoUMMw/B4PIVCoZ2eXblypYmJycSJE/UtIII0AZZlzczMQkNDPTw8YFCLjoCpAbwK4MatqqpiWTYlJeXBgwePHz82hNDIq81ff/2VlJQEjn+41ZqkZFmWFYlEY8eO/emnn7gxtgjSggQEBISGhupY+vOrr75at25dcXGxvqRC2ilLliyBZAUATRevfitayQ5+pqen79y5s9lkRJCmkZqaSgj56quvGG1DEsHUKC4uvnXrln5lQ9oXMTExkyZNcnR0pIMDmpixtBozj8cTiUSjR49esmQJzpBBWg+EkMjIyDt37ujYzv79+/39/fUiEtJOOXHiRExMDMOxTDWs/clw4l1CQ0NPnjzZfEIiSFOB6Ks1a9Z4e3sz2qZA5PP5Y8eOXbFiBcYYINrj4+Ozdu1aqlg1zzBPu2D29vaEEKyNiLQqQMn+/fffBw4c0G4gF7aytrYmhGAvTT0YXdAgycnJmZmZUGYZggQhI4wm72164w4fPnzNmjUuLi7NKyuCNAWwG+zt7SdMmGBsbKxFCwqFQigUFhUVhYeHFxUVoTGLaMM///yTnJwskUi02xyM2QMHDmDNeqR1Ul5evnDhwtGjR+vSyLx583Dql3rQkm2QjIyMsLCwyspKgUDALZHUqLsAJoYplUqhUDhhwoTXXnvNANIiSFMxMzOzt7f/4IMPdGkkKCjol19+KSkp0ZdUSDvi22+/nT59ui4teHt7z549u7y8XF8iIYh+CQ8Pf/jwIXznTgBrUi7E5ORkDORSA1qy9ZOXlyeTySIjI7XbHCzf9957z9raGpIeIUgrxN7e3t7e3sLCgltmpu6XeqFKOTY2Njc3t1nlbNOgkq2fFy9ebNiw4cmTJ9ptDoUSPv7443feeUevciGIPjExMfn999+9vb2pkqXWa6NmLIwDK5XKe/fuPXjwoLlFbbugkq2fkpKSwsJCLdz59Na0sLDo16+fm5ubvkVDEL3h4ODg5OQ0duxYpVLJVbIajmXBKEVkZKRMJsOxL6RpnDhxIjAwUOsU3VBmZtWqVXjnIa2cBw8eJCYmcmPA69YBqxc6DmxhYUEIwbGvhtApQ8QrTEpKCqNZSGy9EEI+/PBDmUymSyUFBDEAzs7OHTt2dHNzS0hIgCU8Ho9bdaYhYB1CiFQqxek2akAlWz+ZmZma3Gd1EQqFNTU1LMsOHjy4srJS74IhiH7p2LHjunXr3nrrrYSEBLAqqN+g0UdAIBDI5XKBQJCeng6Ri0hd0CdbP/n5+Xl5eVrYoTU1NQzDmJqaOjs7d+rUqRlEQxB9wrKssbFx7969qXMAdKsmiRBhgLempkYqlebl5TWrnG0XVLL1U1JSIpVKtXYXeHp6fvfddxYWFvqVCkGag169evXu3Zup9cmKxWKm1lxoFFDNubm56JNtCHQX1E9paanWpb8ZhnF1da2urkaHrF6grzo8n82Era1tx44dqZegqqpKk624obXl5eXaudfaA6hk60fHsvLe3t54zzWVwsLC8vLy4uLilJSU5OTk9PT09PT03Nzc8ePHnz59esSIEQzDsCzL5/ONjIw6dOhgZmZmbm5ubm5uYWHRqVMnZ2fnHj16vP766507d+7QoQODSlljOnbsOGfOHBsbm4KCAlqNhqtD1QDrYH0ENaCSrR+pVKqLlvTw8IBQbUQ90dHRSUlJqampN2/enDVr1u7du8vLyxUKBYy68Hi8mpqaiIgIsVgsk8mY2vhNOq4NvQ2FQlFTU8Pn82tqaoRCIWhYPz+/U6dOubq6duvWDSfdqadLly6DBg1yd3cvLCxUKpU04Zx6uD0MHXt+rzaoZOuBEPLuu++GhYVp3UK3bt2qq6v1KJKG0Ps+MzOztLS0oqKirKxMqVTa29ubmJi4uLhAqVHA8IYeiFdVVfXkyZP4+Pjg4ODly5evWrUqOTm5qqrq4cOHNjY2DMOIRCJQqTD2AqMrfD6f2lZyubywsDA/P59hGB6PR0OOeDyeXC43Nzfv3r17//79O3Xq1K1btyVLlixdunTkyJFdu3Z1dXVtWfMW5H/+/HlRUVFWVtbz58+FQqGdnR1cICMjo5YSz8nJSSAQQKlQ+CSEaGLMEkL4fP6LFy+w39AQ+PKph8rKypCQEK1NUQjPtrOz069UmlBaWsowzNGjR9esWWNpaalQKCCMrLy83MHBwc/Pj2EYGtJosIkSpBYYG/nrr7/c3NwEAoFMJrt9+7aXl9fPP/985cqVrKwsWJ8OucjlcnoVFAoF/FQoFDKZjPYzlEqlXC5XKpXwhWEYqVR69+7dHTt2TJgwwdra+v79+3w+nxDi6uq6f//+O3fu6OgL0vokpKWlQTYMExMTELWyshJ890Kh0MjIKDw8PD4+vkUmsNja2lpaWoI1KpfL4YvmklRXV2voyUUQhmGYsrKywsJCrd/MEomEEGJIS5YQ8uTJkyNHjmzdujUlJcXX19fDw4OptfIggFEoFHp7e2/dujU3N/fUqVOEkMzMTAPIlpeX9+TJE0LIvn37oLTU559/DnV/BQJB3ZMMNX5UFoIrls/n1+2T8ng8yEVZ7/XiJpSyt7f/+eef09LSCCF+fn4XL140jEYjhNy4cQPO+bVr16ZPn25lZUUPBKZaSSSSSZMmnTlzhhDi7+8fGBgYHx/f3IJxWb169apVq7SrX8uy7Pvvv7948WKc34hoSm5uri5ZhWxtbQ2TxphaiA8ePCCEnDx58t133wWHAJRyoGvCd6FQyLKskZHRl19+efv27d27d+/bt6/5ZCstLY2IiNi2bVteXt7u3bs///xzOzs7qlyoTmw+Xx7dBfdU8Hi8Pn36zJs37+zZs4SQ8+fPJyYmNt/FIoTcvHmTEOLj49O3b9+68oAbhArctWvXJUuWxMfH+/j4BAcHN5NUddm1a9fevXtBMFC1mihceu1Gck+APgAAIABJREFUjx6NqbuRJvDs2TNdrDx4TgymZME0mz17tkr+JPXKi2XZffv2LV26lKYT1Zc8hJCCgoL79+9D9acFCxaYm5szmj20zYrK+REKhU5OThcvXiSEBAUF3b59W+9D5ISQW7duEUI++ugjWouz0fPA4/HEYnFwcPDmzZsNVj7r6NGjx48fZ5qSTBY0MvQ8hg4dOnfuXFSyiKakpqYmJSVpvXnPnj0NZsk+e/aMELJixQp4dMViseaGoUgkevjw4e7du6kzVHd5CCGPHz8mhMTFxU2dOhXMapFIpF21Pv1SN+8JRN17eHgcPHiwuLh4z549Z86c0dfuCCExMTGEkE8++QSW0JOg5mxQzWVnZ5eenn7w4EHDeHVOnToVFBTEcJRso1BdzLLs22+//fbbbzeviMirRGJiYkpKitY+WW9vb8Mo2dTUVELI+vXr4Sd38nijlXLgYba3t8/Kytq2bZsuYlADViqVRkZGFhYWfvfdd7BrarUJhcIWn9vOdYNSNQfeYR6P5+XldebMmTVr1oBjVMd9gTlPCFm8eDHDMDC0xefzBQJBo+eBXjUXF5fMzMwLFy4Y4F76+++/tX7B8Hi8QYMGzZkzBy1ZRFOSkpKePn2qtZL19PRsbiUL7UdERISGhoKagGeY4ajaekeQuIAdN2zYsLlz5/r7++soTEpKCoy/gecRpGpVcE8I9yXEtf2nT59OCLly5Qo4YbTeF5yTsLAwrpdTczmZWgf6kCFDwOegtSQacvLkSa6SbdLND0oWfbJIE0hOTtYldVvXrl0nTpxoACVLCOnWrRt3Ocuy8DzDcLyGrfn7+2/YsEG7BB85OTkPHjz4+++/CSFLly5l6viCYQiuxYMo6+0Fc5fw+Xwoju3l5XX9+nVCyPHjx5OTk7XQHYQQyGjVrVs37n65kR7qW4CLCJbvxo0b9+zZEx0d3SQZmkpAQMDhw4e5HgDNtwV3ASpZpAlkZmampaVpvbmVldWHH37YrDdcbm4uIeSzzz6Dn/A0cp+NRh9jrip0dHTMy8traulyQkhWVlZQUFBOTs6aNWtUaqerhDcwzRlFoAncvXM1iIq9zx0uDwkJ2bt3rxa6A2pqzJ49u95dNIrKysbGxtHR0fAaa5IYTWLbtm1+fn7csawmbT5y5EhUskgTKCkp0SWlkEgkIoRUVFToUSQuhJAbN25cvnyZqRNqqtL/BYeAesDmnTZt2n//+98myVBUVEQIuXv3rkQiAZ1Od8cdx+f6DVrcnmVqY4dZllXxHqicRlA3Y8eOJYRER0c3SX1ERkY+ffoU7GKGc1rgumjiOhCLxdxRsuHDhxNCKisrm0+LrVixYsWKFZrEpagAK7///vuoZJEmoPvdnJeXl52drS95VIC7mZqxVDtQRwGjdvyawl1HKBROnTpVw6OG2CxCyJ07d6ytrbl/UW1FtT93iSaNNyvc6Qx1NT63BAv98t577xFCrl69qnlp94CAgHXr1qm0pvnLhv7LfWllZWU1qxabPXv2nDlzNBGPAmcSDhO6bqhk6wWn1daDsbHxqFGjtB66YVk2IyNDX3FRdZFKpQzDnD9/HuxHemfDTE34qcmcYKVSST0Mpqamhw4d0lCA69evOzs7Hz58eNiwYUVFRSptktr0AnQJNwWBGrjmpIorkxt9Va/52WgPl/5L5+PWXR9OGldT8Pn84ODgMWPG9O/f/8yZM1CUqFGys7NFIpFKa5CNAVCvjOi/dNIgIeTw4cOnTp3SZO/akZ2dTe9YQogmehYy+MD5NDExWbVqVfOJ16ZpeeOiFcKyrJmZGU1T0tRtafhqc8jGMEx2dnZGRsbLly/pELkW++JuxefzlUrl3Llzt2zZon4rGA6Kjo6+fv36ypUr1axJHz+WZWtqagQCAeQc4S4HAcAUUigUdHmnTp28vLz69+/frVs3Ozs7ExMTMzMzKysrhmEkEgmfz6+uri4pKXnx4kVpaWlJSUlOTk58fPydO3fi4uK4l4x7jIQQqJUCe6S7U38ICoWCz+eHhIS4u7uHh4dfvHgxIiLiX//6l/oNIR+YdvdPQ4SGhhYXF3/66af6alCFjIwM+AKvK3hDNHpr0UtmZGSUkZHRGtxBrRC0ZOvH3Nxcu/x4cFPqOJ1BPUlJScnJyUytKaqdNuduRQhRKpWNatjU1NSgoKB///vfN2/eXL16tfqxNXj8hEIhtazhC5g/XAEg50v//v1nzJhx7NixpKSk7OxsLy8vmUwml8tBLbIsK5PJQDnCQlDWhBDIc+ji4vLo0aPq6uqIiIgNGzaMGDECSqgyHK+IXC5nWVYsFoPqbHRsUKFQCAQCOMl5eXn/+te/3njjjfv374eGhqo/5xCoIJPJ9DjWd/PmzQ0bNrx48UJfDXKJj4+3tbV99uwZU9sXYWsLg2uyOY/Hs7CwwDogDYGWbP1A/gEYxNdi85iYGA2rd2hBVlYWZFzVvSko+6hUKhsdIiOE/P3333379vX09IyLi4McWmoSj0LL3JNAV6aSe3h4/Otf/xo0aNDw4cOdnJy2bt0qk8lkMllJSYmPj0+TDpDUpo4mhMjl8n79+l29ejUiIuL69evXrl2LioqSSqU1NTWEEBAJNLuaBkGJw7sBGi8pKRkxYsTChQuHDx8eERGhZlsIcWU4rgndqaysLCwsbNTloh0ZGRnbtm3r2bMnHDWklKWen0ZhWdbW1hbN2IZAJVs/nTt3ZhhGi3n9YFreunVr0KBBUqkUpu3rl6KiIkj6SWrTV2sNaByBQGBsbDxlypSjR482tObJkycnTJjg7e0NKbVkMhntfatpmWEYiUQCA4nwEIpEIqVSuXjx4u+//97R0dHX15fH4z1//lwqlf74449aP6gqGxJCoN4wIeSNN964cuXKqVOn/P39r169Com9oaKwGiVC84IzDCMQCMBHoVAofHx8zM3NTUxMHj9+DKnO6mJubl5RUWFkZKTH7H8CgSAtLa2ZpniAAwp0K327aL45IcTBwQGVbEOgkq0fJycn7TaERzc9PT06Opr6ufRLVVUVZFbV8bbmukft7OyKi4vrbRDG1h8/fjxp0qRHjx4xtcfYqFUlFourq6srKyvBOymXy4VC4YQJEzZv3nzs2LHs7GwzM7P58+c3x8PJbZMQAr5aV1fX77777pdffomJiYHBtEYPAV4k1GsBVt7ixYujoqJu376dmprq6upadytHR0dCiH7zq8rlcqlUqhKMrBcIIVu2bElMTISDBZ9skzpwhJAuXbpgaEFDoE+2fhwcHLTTs9S0vHXrFji59I6KP1EX6w+2VSgUH3zwwdChQ+td7cmTJyNHjiwoKIDRbXgCNdlpdXU1WF4ymUwsFk+ZMiU2NrZ3796XLl2aOHHim2++aW5ubgDzh2XZXr16TZkyZcyYMSUlJVFRUadOnfL29pbL5WqiykAwqoWFQiHXwfrhhx+OHDkS8r/U3dbGxsbT01MluE13LCwsNAl81oK5c+c+evSIujg0vL5cnJycOnXq1ByyIa8shw8f9vf311oF8Hi8hQsXzp8/X79SARs3bly7di0NbNJ9dIXH4yUlJd25c6fuX5GRkQcOHDh27JhK4C2dv9sQEO3PMAyfz/f09ExKSlq7du2ePXsMnItaBbBqL126RAjZvn17o3qwbppwekv069ePEFJvWFVBQcGGDRu+/vprfYkNpKamNkffKDs7mxBC06jXzVXWKHw+v7Cw0DDZwpBXh7CwMKgUQqGRmI3G+cPd2adPn6+++urp06d6l+3UqVOBgYEqL4C6P7kPCSjEhh4bmNdUN5tqamqqn59fZGRkUw0oeq54PN60adMKCwuPHj3afOEWTYUQEhkZefr06Tt37nTp0gUW0nQBDEd+lbOqkoThiy++2Lx5c3BwcF17dseOHXD/0LuFdj40zClBV4MOB5Tb0GUiYkOopIbRAldX1ylTphQWFupLJKRdkJGRkZ6eDg8VTXCleaITPp8vEomePn2qZihJa8LDw5OTk2HWJhggtONfN2MAUyePAbVAYWUejxcZGVlvfr9du3alpqZCcUP1cOcLgEbm8Xiff/75nTt31q5de+TIkVb4BGZmZkLkwK5du8A1VHdYqd50EPACg3wRP/74I1jHKhtGRkb6+Ph8++23cIa5qdGaJCRV9/Pnz9+xY4fe/Z4FBQXLly+nswe1QCQSTZ48eerUqXqU6hUDfbL1Y2pq6uzs7OzsDEE/NLST1Jakb2hDWFOpVMpksj/++CM2Nlbvsjk4OJw7d2769OkQ588VrN5gA1iHWqPgZ4QIUIVCsXDhwtu3b9vb26scVGxsbH5+/vz581XmdKnAdeTBLqqrq+3s7C5cuODo6BgZGTly5MjPP/9cE01tYBwdHRmGSUlJsbS0jIqKGj9+PMwd4JbqgRMLqcchIEEgEJBa5HL5tm3bTp8+HRUVpdL4wIEDu3XrtnHjRolEolQq4RLQt3WjwBuUZVk4sRKJZObMmZaWlnp3YRcUFMyZM+fChQtatyCXy0eNGjVkyBA9SoW0CwghK1eu/PTTT+msqnpnfKpBIBB07dr1yy+/1CWhV0OcPHmyuLiYO12ibsormpaU4RhQXKebQCBwcXEhhFy5ckWlfULIyZMn6RtCvfuV29EWCoWQCHzLli2GLFGlC8XFxdeuXSP1pWqkbybuGRCJRNz836NGjZozZ05oaKhKs2VlZX/99VdAQACoZk3KItQFLt/cuXP9/PwSExObfGyNERISEhoaqoXu5m6SmJj4zz//6FUupH2wffv2rVu30kQn9LPRHh9dQSgUpqWlNcf9V1xcvGHDhoCAAG7fv6H5/mxtTiluh5dhGD6fHx4e/ueff9bthMK4eb9+/bgKpV64fmqQ4dq1a9u3b2++1A3NAaktFfPFF1/AWQLrleEkNlNJ+MJVu6GhoQEBAXVPI6TvmjBhAvyEsBD1Spa2T8+8q6srIaSZ3lirV6/+7bffdGnBxsbm448/bo4XAPLqc/78eTpsRTUsfeQa2or7hmdZdu/evUFBQc0RQhgQELBixYrJkydz91g3y1RdVduhQwf4uXjx4t9//z08PFyl5ezs7CNHjhw9elST0HeugS8UCoOCgpYuXXrt2jVdD8/gEEJu3rxZXl7ev39/7jghy8nWyO0EMJy0Zx4eHoQQSD6p0mZERAQhxM3Njate1ViOKn9JJJKYmJh//vmnOW6h+Pj42bNnv/POO7o0Mn78+ClTpuhLJKR98fTp02+//dbLy4vhWGrwV6OF8JjaJxCSGTfHoDDDMCdPniSELF++nFtBS0XLM7XvBpUXw+zZs8vKys6fP1+32X379mVnZ5uamsLPRi132LW9vf2dO3eWL18O9fjaIuXl5RAqMHXqVLiONLAJVuC+t+jcWVhzwYIFmzdvvnfvnkqbhJCjR49GR0d37doVNqQ2ckNQq3nAgAFQlVK7ohWNsnPnzvj4+HoHSzUBDv/YsWOBgYH6Fg1pN6xevXrjxo1MnVz66rfiGo88Hi8lJeXq1avNIR4hJDQ0dPfu3Wlpafb29jTSoN5nhgbVOjg4hISErFmz5uTJk2VlZSqrPXjwYOXKlVBgVXNL1tHRMSMjY+fOnfUG27YhCCFBQUGLFy9es2YNXVi3+0L7NNy3171793x9feu2GR0dfeTIEULIlClTNM/bDel9w8PD8/Pzm8OMzcrKWrdu3WeffaZ1IWEejycWiwkhjx8/1q9sSDsiKCgIBo65+bA1geu/mzp16rp165ovSjQtLc3f3z8lJeWDDz6gVgmPx1N5kmHJV199VV5evmvXrpCQkHpb27Rp04MHD5j/rbmg4ojk+g2hNx0dHb13795mmkZseNasWTNu3LjZs2fDwJeG1/3jjz/+5Zdf6o2MhoHEFStWBAQE1JvxgOtbd3R03LJlC0TaNt9c1ePHj2dlZdHyDQ1R77HTV8uYMWOWLVuGE2oR7YmKipo8ebLK/PRGB4K48eegg5KSkvbv3998cqakpPj5+a1cuTIxMXH9+vUfffQRxCdBR14kEpmZmc2cOTMuLu7QoUPHjh1rKMm/VCpdvXr1uHHj6BJucIJKsDA1nI8ePbpixYrmrvRnYGbPnj19+vS33nqL0fgVy+Pxnj59+ueffza0QkBAwNatW3Nyci5dujRixAhIHiQUCqF9d3f3uXPnggf/+PHjNCyvOYiLi9u4ceO8efMYDco0UHdT3TUPHz78xx9/NJOQrwyYOKcRFi1apFAoNm3apFQqIdEJq0H6DBotC0lYvvrqKzc3t/fff9/b27v5RE1MTHz69GlaWlpYWJhQKNy7d29JSQnLskZGRvPmzfvXv/71ww8/FBYW2traNtRCSEjIwIEDLS0thUIhpOWHhFXwL81VSL+IRKL+/fv36tVr2LBh+hr9ABd2WVlZaWmpQCCwtbU1NTU1MTGhTzg9+WlpaRUVFZArx9ra2sTExMbGRo+RpJs2bfrss8969epVXl7OapZfdfbs2W5ubpMnT3ZwcKh3hZycnPz8/Ojo6OTk5Dlz5sjl8uLiYlNTUxcXl5kzZ4rF4tGjR7u6urq7u8P6eg+MZRiGEBISEuLk5NSnTx+lUglpdtUcGijZukpfIpHk5uYmJCQMGDBA70Ii7YhDhw5FR0dTg06TEC7a9aP1n42NjR8+fHjw4MFmGgGrS1lZWW5ublZW1rNnzzIzMyExrnrjqLi4eP/+/eCLVLHdVILYYCFYspcvX4bwUt3Jy8v766+/oEBsUlLStWvX7t+/D5IfOHDg+PHj4HIpKSkhhOzcuXPixImpqam3bt26detWXFwcuFPv3bunLwMwMzNz06ZNM2bM0HCalpGRkZmZWU5OTkOuGC55eXk5/6+9M42L4soaflVvLAIisikoKgoyKrgzJjFPdEZNjFGTmJkYiXGbGGc0+hgnmzGM0dHRIS5xQeMeN9RoRERFcdeAoMRdZFOhhYaWXdl6uc+H83LfSiPVRXUXtHD+H/x1t1XF6e7bp849a27ugwcP0tPT1Wo1vCmLRRbEtWvXCCF/+ctf4KlZz7uJoqcm7bvvvrt48WIYhoQg4rlx48ZXX3311ltv0VCyWeOC6wylBwcFBRUVFZ0+fdpmHVipqamFhYUeHh51q+zrFmLAg8mTJy9ZsqRu6pIICCGHDx/WaDQff/wxFLnSPxoQEPD111+np6dv3Lhx9+7du3fvzszMnDlzZps2bbgxxq5du0ZGRkJfAmt9yLt27crJyXFwcOBv/sBlxYoVS5Ysscpfl4KbN29u2bJl06ZNNJonxF1An9L8a7lcfvHixf/+979SC4y0CH755ZeLFy+y5vpOAXVz1+lZMDZZRCPwxuHMmTOXLl1ifm+wm/wC4b2AFvbw8ADNaJW/fu7cOUIIbJNpIgS3MY2Dg8O6deuKioo+/fRTehswscLkcjkE5bOysqwiVU5OztatW1esWMEI8MXDvx07dpwyZYrAkYuNDHh7b968CX1pWU6nNLPnmmjbYcOGzZ49++LFi9JJi7QgYCpiSEgIZDgKd5PRFsv0/r9169Y9e/YIHy7dmKxYsWLZsmU8k6+4aaFyuXzVqlVRUVFWsRkJIbt37164cCG3Yg0ecG9sUDFVV9lBrxaqKU6fPm3FXF2oJoAglcBuZJmZmSYt3GwEyLoNCQlpUEoiPYyepVQqjxw5snfvXkmkRFoghJAjR45AesBz7bu60B88mFq0qtXJyamsrOy5JQBNzocffjhx4kSG8x5NMkMZzi+tTZs2hJCEhASr/OmCggJCCLeJDPevc50VQjTCmDFjli9fbi2PASFk06ZNCxcuNGvu0fvBsWPHbPArJoQcPXp0//79TB33Og9128uqVCoYUtm0rYGR5kZKSgohhPZ4FhHzpZrriy++WLdu3cOHD60roYUQQqZPn967d+/6DjDJvZ89e/YPP/xgLUX24MED2i2wbnIujzzM79PL4DGMQrGi7/uXX37JzMw0W6lFpVq2bBnUsNgUUJsbFBTEjeIygi1Z7h1u6tSpy5Yts9nogq2BrQ4F0adPn+XLl7/66quQ0i9ieVEltX79+jfffDM2NjYpKUkCSUWi0Wg2bNjAMy+HECKXy0nt6MYPPvjA0dHRiglG5eXl0HiBthYU8iHLaseUcTs9VlRUTJkyxVqCMQwTHBy8bt26l19+2aw+AjEyMjLu3LljRQEsBPoq3L9/f/78+enp6dC6Ez5qRoDFAEoZvnpwy4wdO7Z79+5SpJchLReI8Jw7dw6eiqtEpB49Ly+vpKSkxYsX1+0x2FSkpKTUbYpaH7169QoLC7Oi21GtVhNCYEIw3XQLCTMCUHhGb2Pjxo2bPn26tWQDNm3atHPnToEHDxw4EKoYbAFCCAQV582bR1/kLuAGTWqQy+UDBgwghNy/f9/qoiItGth+rlmzZuzYsZZch3YVsbe3P3Xq1H//+18bcWzt3Llz8+bNQo5kWXbBggVffPGFFf86IeSXX37ZtWsXPKW9xIR0O6NBRdq3JSUlZfXq1VYUj2GYhIQErVYrcFism5vbO++8Ywu7aUJIUlISIeRPf/oTvMKtlmaEOb5YlrWzs6Nhz5SUlAMHDtjCu0OaFaBkY2Njb9y4IZPJhLjn6sItUVUoFK1bt05NTf3pp59sIZ176dKl4eHh/EYNNS1PnTpl9cAOtF6Fil4h2XImHXJpu6zFixfPnTvX6nlyWq32448/Dg0Nre8Ak+icpEWxwoHUCHCemHyk3PpvflVLb3UODg6jRo0KDw+32TRE2wR9soKA3aivr+/x48enTJlSVVUl4iLc+kW9Xl9WVjZs2LAxY8bcuXOnyX+QpaWlOp0OimXrA/6XZdmgoCDY2luR4ODgy5cvHz58eNiwYUw9c3TqCkOByTEzZ86srq52c3Ozevmyh4eHQqEYMGBAfQfQb5C6raEuuQnRaDT3799fuXLl7t27GYbR6/Xc3BhCCP0M+ZcfFJTL5XK9Xr927VovLy9Jq8ORls6lS5e0Wi3ttSoOe3t7MMHkcvm0adMIIU1uzM6aNWvOnDk8B1Bzpn379qNHj5Zi8AEh5Pz584SQUaNGMebKPU2mucjl8gkTJkg3QYBhmA0bNgj3qGi12uLiYokkEcjJkyc1Gg2dawkvckdm1H1aF26J47x589avX29riTFIc+PZs2eEkB9++EHc6SbrGx6o1eomzzSYOnXqxIkT+TfpoM5eeeWVl156SSIxoCph5syZn3zyidlQPncMxEcffVRQUAA6WiLZTp06RSOfz4Xb2zsnJycnJ0ciSQQSEREBmWR1C0wEZhzTgxmGad++/XOnPyBmQXdBw3B0dLxy5Up+fn5YWBjz+/7cQk7n7oLp440bN9adAdPIgK9AiLugY8eO0o2eZVl2woQJer2+qqrq6NGjNFxTnzxGo3HMmDE3b94MDAw8efJkUFCQdHlF7u7uPA3MmFp3EHiEqqqq+D9MqXn48GF6ejo4CmgfNQr1aZgF/MsuLi4///zz9u3bhw8fbn1ZmztCs2QQAH7DBw8eNBqNPXv2vHPnDgQQ9Ho9bQDYUBISEniKWRsHhUIhMP+XECI8uUocGzZsOHbsWFlZWXx8PI/SZFnW39+fYZgzZ86MGjUqODhYUqmEWH/wAUJotGn97Hl5eV999RXMvCGEQOkBTINvEEajkWXZjRs3njhx4vXXX8fcWBGgkhXDO++8884773z44Yd9+vSprq6GtWswGIS0mq1LamrqkCFDCCFNuIKf2xPguRQWFta1jKzOyJEjS0tLJ0+ezHMMISQgIECj0fB7k61FSUmJwLuLTCZTKpVNq2Sh1yXc+OntX8T6VCqVffv2jYuLGzFihHRuouYNugtEUlZWdv369bfffpthGJVKBT8/cZVger3+p59+sr6IDYHbYKU+4B6QlZXl7u4u0Wg/Lnl5edxBW8+lsLAwKCioEfKlwAPAH/OhdynQa2Ynu0hKXl5efn4+3PjpiyI+JZ1ON3PmzMGDB48fP96qArYgUMmKgWVZFxeX8ePHQ0cVQggYsyJMURtJqLS3tzfpZVcXkPPhw4dr1qxpHCXL/1dYlk1KSmo0T8uIESP4K0fg84HiY3d3d3HJ1FaEFhxbssB8fHzCwsICAgKsJ1eLA90FItFoNAcOHPj111+pK1Ocr4BhGEdHxylTpmzdutXaMjYADw+Pmpoas/LLZDK9Xn/jxo1G6NZ47do1fg8GOFg++uijhIQEqctYq6qqVq5cyR9bp/0TYE8gsC+iRLRr166ystIkTiBiiT5+/Hjfvn3QdA0dsuJAS1Yk27ZtGzx48L59+/R6vdkpSTywLBsSElJSUtK0K9jPzy8wMFDgwVFRUY3QdSEhIYFnlDooMkLI1atXU1JSpP70bt++/fe//z05OdnskYQQb2/vcePGSSqPWdzc3AYOHAgtXSDwBSa2iEtFRkYOHz7cWn3QWyCoZMVw8OBBjUYze/Zs2GLThkYiIIT079+fp16zcfjDH/5gMpTXBNBiYKbFxcUVFhbevHlTOnmgF9dzx2sDNJJz//79RhhDcPfuXSFlDvApeXl5qdXqpr1r+vj4fPvttyEhIXq9HhK2TPyzwjl//nx8fLxttiF/IUAlK4aEhIT/+Z//uXDhgtFohBUsvC8X9SHSRqhDhw6FqVZNiLu7e//+/bnp/SYpwLT9KCEkNzc3PDz86tWrkoq0a9cubuvFun2mYfdQVlb27NkzSSVRq9X37t2DnFMe6CcWGBjYqVMnSUUyi6+vb/v27SHRmH6Dok2BBQsWJCcnS3pbbcagkm0wp0+ffvbsGcx9or95g8FgtjwRHuh0OpoJJJPJgoODDxw40LlzZylFNk/79u1hbjlES7g9ruCXCXYQJAWzLLthwwYofpNOpA8//BDcmtzMDfAMUnUvl8s9PDzc3NykE4NhmJSUlJkzZ54+fZrnVgqdbUG8Ll262EKkKCAg4KOPPmI4uxBx15GFTrE/AAAgAElEQVTL5UlJSZMnT8aJXuJAJdtgTp8+PW7cuMuXL3PTvJnatO36zqLxB8jZgiOVSuXGjRudnJxsIQOxW7dudPqTifak74sQotPpWJbdu3fvzJkzrTgX1gSWZb28vKCsju5zoVEkhMtB3xkMhuDgYJ6BDpZz5cqV9PT0LVu2VFZW8hSbgApTqVSEkO7du4eEhEgnkkB69+595MiRcePGUfUqzl0AlXVLlixRq9XStYZAkP9HdHT0jBkzQkNDqW4V6Cig1qtcLodTPD09T5w4sWjRoiZvXMDUJvqsW7eOqRWVm9HF9SHQNxIWFkYISU9Pl0ikqKiogoICbsMnKg91uYSGhhYUFMCQXSnQaDTbtm27cuUKty94fVCHhkajuXz5skQiNYht27YVFBT89a9/tfA6MplMpVIdP36c2/kbQSRh3rx50dHRzO9HtzLCai5ZlgXtwLKso6NjampqRETEiRMnJBZZEKAuQWPSN8K9f3CHlTIMY29vr1Aojh8/fvjw4cLCQilEKigoOHToUElJyciRI03UPTydNGkSNPktKCiQQgCGYZKSkjQaTa9evRhhd1OZTNanT5+ZM2c2Qh6xEAoKCmAsQlhYGH9Xs/rgful9+/adMWPGmTNnrCdgiwAT3xrArVu3Nm/enJiYeO3aNejOCRsxyEbkz+KCY0BHGI3GqKio9PT09957r3v37o33BngpLCx0c3Pr3Lnzw4cP4a3BO+LmWsIrKpUK+rd26NDh+vXr169f5+/kIpqSkpJr164NHTo0Li4uOTm5qqqqurq6urra0dHx9ddfT0xM7N69+9ixY6WI48NXeeTIEb1e/+6778KLQtpTrF+/Xq/Xf/rpp1YXSRyEkCtXroSGhvbr1++3336z0L1z5syZp0+fvvXWW5gzKxz0yTaAGzduTJs2LTk5Wa/Xc8vYn+vHNMFgMDg4ONAphLdu3erWrZvtaFiGYdzc3LZt2zZp0iSGUyxkcueAV6iT9MmTJ9u3b3/48GFubq4UIrm6ug4dOjQjI0OlUrVu3RpeVCqV7u7uGRkZf/zjH99++21Jf+2JiYmLFi1iap0nPBqWDrwYP368pD7ihsKybGho6KFDh3bt2iWusw/t2CuTyTZt2vTWW2+Vl5dbW0wEYRhCSGRk5Oeff8783jkIj4XU/kODZBcXF61We/78eakFFsGhQ4cyMjK4bZ5p9g8cQP2S1Dnr6emZm5t7/PhxWygOtiJpaWkrV6787rvvuC+aVeizZ89euXJlk7frrsvdu3c3bNiwdOlSC6+jVCpzc3N/++03q0iFIP8fQkhBQQHUpAvvdsyF/j6nT59OCJE6tVMcGRkZy5YtmzBhQl07vT5kMtlrr70GzbZtJNpjIYSQCxcurFy58tixYyqVik5prO9z4K4H2sLVBrl48SIhxNPTU6FQPPcOygM36Lds2bJdu3Y1s3sq0vRA8P38+fMWtlJVKpW3b98+c+aMza7RHTt2aDQaT09PSIkVeEfp1avX5cuXv/vuu5iYGKkllBRCCCijJUuW0K1JXT0L/8WyLFj9sKGZMWPGqlWrpEu3sBBCyM6dO5cvXw5PaWsFgV8xvGWVStW1a1dCyOPHjyWSE2mhEEK2bt26YMECC68zc+bM5cuX37592ypSSYFGo9m7d+/27dvpb48/Kg35EgqFwsXFJSYmZs6cORs3bmwMQSWgtLT05MmTdMiYyQ0VnoKuqauYQPVYfYivdTl9+nRJSQm3d7BZBwi1YbnpNFevXk1MTJRYWKSFQQj53//938GDB1tyEXt7+8ePH0dFRVlLKomAGHTfvn1pwpnAExUKxcaNGyMiIhITE23WVK8PrVZ74sSJ0tLSV199lanVJgqFgvshcD8KMPPlcjm0NNy/f//GjRtt/F2XlJRERERMmjSJvhEhHgOT9ESFQrFixYo1a9ZIKirS4nj06BFMOmLEls2wLPv222+Hh4fb/j6LEHL27NmrV6/CjhL8BvynKJVKKLe1s7NbvXo1IQQ+MRtXOkytI+jRo0fbtm3TarWjRo2iwUw6yZU6B+AUWgpBXxkxYsS8efP279/fBG+ggWzZsiU9PR2mDXHfHT8mqdOTJk2CYjwEsRqnTp2yvHD7/Pnzhw8ftoo8UvP48WNCyLx586jbUTgsyy5duhSUVyP0xxINSFhZWUkI2bRp08WLF7m1sCZJFIBCoeDeYkEdOzk5QSPzxhReNIWFhREREa+88gpT6wAxG2bgegxA2wYGBk6YMCEvL096eZEWw9y5c2GQlLjUAoZhQkJCCCEvysx6Qsj169cJIdBNSojxDoOtaHSob9++8fHx4eHhERERJ0+ezM/Pl1rmBkEIyc/PBz2bnZ09efJklUoFJircVLj2HRh93A8BlC+8MnHixJUrV75A3ywhZM+ePUwdC/25cBc8HA9jdfLy8mwzDRF5IUlOTn7//fe7du3KWKBkt2zZYvs+Oy6EkB9//DE6OtpszT7ze2uIqieVStW7d++IiIj8/PxNmzadPHnSFopNCSGpqamnT58Gr8i4ceMcHR25nSUYTo5wXc8A8/ta6sDAwLKyMtv3s1OoJ4e2DxbYfIN7GMuymzdvfnEjnIjNcejQoeTkZIGuWG4GIlPr1/P19X3jjTe2bNkioZQSEB0d/fHHH0NCvvCGuQCt0WAYxsXF5fvvv9doNP/85z937tyZkpLSJDcbtVodExOzc+dOQkh0dPSwYcMEnkidsyYtFNq3b69Wq/ft29cIw3isCCFk+/bt33//vSUXef3117/99tsXyGhAbJqIiIjVq1fTp8KNWbod+8c//jFr1ixJhJOY77777ssvv4TR3DTgDntn4eYt2INKpXLUqFFbt24lhERERERHRz969AhcotLJTwgpLS29e/fu5s2bv/zyS7VavWjRoqCgIK5g/G+BGwTjfvUymSwpKWnDhg1qtVo6+SUiOjr6zp07dnZ2wmNfJnh7exNCtFqtBNIhLQxCyDfffDNy5EiGk5TOf0rdDoEXLlzgn8Fnyxw+fJgQMmLEiLpalf/HCV5a7pFyudzOzs7FxWXOnDmxsbHFxcWEkGXLlq1bt+7cuXOPHj0qLCwk9cC9cn0vlpeXFxYWZmRkJCYm7t+/f9GiRWBtqdXq7du3jx07ljZAENI1DRKETbKdmNomaidOnFi4cKEttKkUwZ07d6ZOnUoDfeISZlJTU7G+FrECEB6BCijaaFX46QqFwt3d/QUKedUFSt0IIcOGDYM8LbBkzWpYhhOj5waO4Fw4vXfv3mFhYdDbLCMjgxACZceEkNGjR48ZMwYev/vuux06dOjYsaOfn1+nTp3ef/99Qsj777/v5+fn4+Pj6enp6uo6YsQIQohGo8nOzk5OTj548ODSpUvfe+897iQYuVxO8175zViTOyUN68EVYmNjFyxYYCNtKsXx73//G3rfiDBjgQ0bNqxfv96qQjVPsF+ZGa5du6ZSqWhHUbOd7gDaBVEmk02YMKFnz56ff/75i9sdDsr5X3311QkTJkBgWiAKhQI6lun1enhFpVLpdDowQqFlInxWSqUSOvAzDGNvb+/k5MSyrF6vh27ZkPlvoqlBML1er9PpoAUi/BUYHcjtHwbKEV7nisfTnRL8ITC9Db50kFOhUGzfvv369etDhgx58803G/Ip2haHDx8ODg7mn57JA8uy77zzTkhIyIIFC17chY3YBJGRkZGRkfBYoDeWOu/A8j1+/PjPP/8snYSNAyEE6rggeZZbmvlcINEH4AbBAFqqa1Kzy73mc3f0bC0mL/ILL7xTGhcwt6nNLpfLvb29k5OT58+fv2vXLuHXsU2ysrLCwsJgDry4nBk/Pz9CyNOnT60tWnMD+8maISkp6dKlS/AzExiioWYsIUShUAwaNAiW8gsNtCU9efKkk5NTREQE/0AzhmEqKyvBfmRqPzdqzLIsW1NTA/8Fzb+Z2vYrYIHCK4SQurP/qDeWq2q534uJCqYGL1iy1CY1W05KDVj6t/r06ZOYmJicnDx27NhmUO/UpUsXJycnSLEQN2MxNzdXq9U+efLE2qI1N1DJmuHGjRupqamkzqhUHkCbyOVyo9Ho5eX1t7/9rcknflsFlmVHjBjh7OycnZ0dHx/v4+PDYxjCXttgMIAxyNSZMW4wGLg+bhj1KrwSt74jTV6nj6l6pWNlGV7lAseDkAaD4W9/+1tycvKNGzdGjhw5YMAAIRLaPoMHD3755ZdFb/Z1Ol1KSorNdh2zHVDJ8pGZmenh4XHv3j06ZoaaUWbPJYTIZLIePXoUFRW5urpKL2wj8dlnn40dOzY1NTUpKWn06NHwooka5TpPqUaj+o6qNrgbNU6uJVXo9K/ztIilwADB6OjoTp06xcTEjB49mhtGe9Hp06fPgAEDLPGopqam2nJLORsBlSwf+fn569ev1+l08JSqA369APYd2HFdunSxqRkzVmHIkCFhYWF37twZNGjQN998A/cerv4yGo0QI4Kn4Hht2sR1UOjcuCXX5oVMA27SKPzbunXr+Pj4lJSUnj17jh49uplFeLy8vPz9/S2xAO7du3fr1i0ritQsQSXLR35+/s2bN7lKVoi7gOvp69WrVzNwyNbFyclp6NCh/fr1Kyoqio+PnzJlipOTE/wXtWqpT5M6XpsWblaZSZksfMWkdoKZUqns27fvqlWrioqK7t69O3z4cGqzNyfc3Nz+/ve/i04wYBgGhqVj3Rc/qGT5uHPnDuyGnhtjqQ/4xUJwvGvXrt26dZNUyCZk6NCh77333o0bN7p166ZWq2fPnu3s7AwfEUSxaBcruVxu4VAJy6FBMIbzPULqGDxQKBSEkD/96U9Hjx7t0aOHSqVKTEycOnXqSy+91IRiSwfLsuXl5T179hR9hbS0tMjIyBerqrjxaeJ1b+OkpaVxYyOgOIToWZpl2bFjR4GptS8WJuZ8aWnp2bNnAwIC0tLS5syZs3//fm4eK1PrmeUmzDY+EMWC3Nuamhr4jug2RafTOTo6/vjjjwkJCZcvXx4/fvyIESOaStRGo1OnTpbc/CoqKtRqdRN+py8EqGT5yMrKggcm2UVmoYrYy8urJSQSQrlqXl7eiRMnevToceXKldWrV0dHRz99+tTe3r6qqgqiTE34awTFSjU+14PMMMwrr7wyZcqUyZMnr1ixYtCgQdCroSXQvn17cflblNTU1GbmqrY66C7gQ61Wc8thBfqeqBHn6uoaFhZGnZXNnnbt2k2ePPn1119PTEzs1auXWq1eu3ZtQEAAhJWa1qIHvzBYr3q9nsa1Zs6cefXq1V69ehFCfvvtt7lz57YcDcswjJeXl4+PjyVXyMzMfHFLxhsHtGTrpbS0dNy4cdyBCFxvI8+J9LD27ds/fvzYzc1NalFtioEDBzIMU1JScvPmTb1eP3DgwM2bN2/YsOHMmTPZ2dkW2k2WQL84lUo1fPjwoUOHTps2bfPmzdevX586dWr//v2bSrAmxNfXV6/X0/IZEeTn5zdLh5gVQSVbLxUVFT///DNshGkFFyPYniWE9OjRQ6fT3bhxQ1I5bROaGJSUlHT16tXevXtv2bKlrKwsOTk5JSXl6tWr2dnZeXl5ubm5Op1OJpNxnd1UG/L8+E1OodBKLfrA1dW1ffv2/v7+fn5+ffr06devn7e39/Lly1u1apWSkjJt2jQY3dYy8fHxUSgU4jQsfE3Z2dkNHVDU0kAlWy+VlZWVlZXizgWPga+vL7qrwLAlhFRXV5eXl8MvMyQkZN++fV999dXSpUsfPHiQmpqak5Pz7Nmzp0+fPn36tKKiorKyEkJSpaWlz70sdJZRqVQqlcrOzs7e3l6lUslkMmdnZ3t7+1atWnl4eAQEBAQGBn7wwQc5OTlGoxHSdSsrK58+ffr55597e3s35udgm7Ru3drJyUl45yMucIerrq7u3LlzgyIWLQ1UsvVSVlZmyT6IENKpUycMvAImv0D4fS5durS4uBhKb1UqFTdCCM7TmpoapVJJEwAoRqPRpF4LGh0olUoIatGWhk+ePNmzZ4+rq+utW7diY2MlfIcvJk5OTm+//babm5vo9tvV1dXz58+3rlTNDFSy9fLs2TPR54IS8fT0bEIXpC2DVo+NwLJsjx49vLy8RCtZ0bu9lgNmF9RLTU2NhaVKrq6ubdu2tZY8CCIF7u7u7u7uok+vrKz87LPPrChP8wMt2XqxcKevUCjatm2Llixi47i5uVmysaiurk5KSsKtCQ9oydYLzV0Xh9FodHFxoUOlEMQ2cXV1bdOmjbhzwW/es2dPbF/AA1qy9UJ7PIvDaDQ6OTmZnYeKIE2Lq6uraBVJCNHpdHR0CPJcUMnWi8FgsHAT5OPjg2EBxMZxcHAwGQKEWBd0F0gLd9QVgtgguNmSGlSy9WK2fJb/XIZhXnvtNWsKhCAS8NxZasLBkJdZUMnyIW6KJ4IgCAWVCB+WBAQYhjl37pwlFQ0IgjQDUMnWi+X7IK1WW7ckFEFsCqz8lhpUsvWiUCgsnJii1+sxuwCxcWpqaioqKkSfLpPJPvnkEyvK0/zAFK56USgUFvpk9Xq9jcwQRJD6ePr0qeh1Dr14bty4geEvHtCSrRelUgmLj9vwqe6sUx6ePHmCM+YQG6e4uLi+fpJmIYSoVKoBAwZgxRcPaMnWC/gKuPqUJnUJXFJFRUXYNB6xcTQajSV2qEql+uGHH6woT/MDLdnnQwjx8PCws7ODLEITrSpwUebm5hYUFEgjIIJYh8ePH2dnZ4s+3dHR8euvv7aiPM0PVLL1EhQU1KpVK+4rdHiXwCsUFBRoNBrrS4YgVoIQEhgYaIkp4ODgkJGRgT5ZHtBdwIe9vT08kMvltDDGZJo0D/n5+djqELFlysrKjh49aqG7AGt2+EElWy9lZWV0GiAMNWEamDyrVqsxCRGxZcrLy8vLy0WcSGdcOjs7W5jp2OzBW9DzYVlWoVC4u7s7OjoyDEMHozYoinr//n03NzcMvCI2S25u7uPHjy2xZNu1a4fjP/jBW1C9ODo6fvjhh+7u7nl5edzCLRjMKUR1ZmdnX7t2rbq6WkoxEUQ82dnZKpVKhB0AZqxMJvPw8MBWc/ygJVsvLMtqNJrg4GDQsCazUYVcAfJkS0pKpBIRQSwA9mf37t0TfQWj0dinT5/OnTtbUarmBypZPgICAry9veVyOdNARwGtX0hNTc3JyZFKPgSxjHHjxomeU8swDMuyHTt29PT0tKJIzQ9UsnwEBgbC/CLqHxDiKKAxAZZlHzx48PDhw0YQFUHEkZWVJfpcV1fXadOm4SA7ftAny0fPnj3lcnlDUwvgMEKIQqEoKCjA9gWIzTJt2rS0tDTRp3fu3Fmr1bZv396KIjU/UMny0a1bNxh/BNarTCYTUiZLjzEYDGlpadjtELFNbt++/ejRI7VaLfoKf/jDHxQKRXJyshWlan6gu4CPNm3aeHl5+fr6mrzOY9JSm1cmkxFCYP1h3Rdig6Slpa1cuVJ0dxiWZQcOHNivXz/rStX8QEuWDycnp/nz54eGhsLdnnpjedyyXNetTCZLS0uLjo4Wl++NIJKSlZWVlpYmOo9bJpO9/PLL2ALJLGjJ8sGyrL29fVBQEFNbTSs8bRvCZcXFxbm5ubm5uVKKiSANhhCi1WovXLgg+gpyubxv375193mICWjJmqF3797ULatQKKBM1myOAbc87Ny5c+iWRWyNrKysZcuWQQsknvVc33/JZLIePXrMmDEjMjJSWkFffNCSNYOPj0+PHj2gpsVoNEIvDB4NS1MLaB+ZmJiYR48epaamNpbICGIGQkh+fv7p06crKioUCoVZ9xeF7uSMRuOgQYPs7e2x/xZiKTk5OR9//HGfPn2Y2nCWwBPpVAWFQpGamrp3714JpUSQhvDs2TNCyMSJE5na5vRCYGuBp8ePHz98+LBUIjYj0JI1g6+v78CBA0eOHAlFXALdspBaAI/1ev3WrVvLy8uxUwxiI6jV6idPnhw4cEAmkwlvFEdqYRjG2dl50KBB/v7+UoqJtAxgVf36669MrXEKVbY8gBamNq9KperQoQMhxJL+8whiRTZt2rRz505YqOIaFQ4aNGjmzJnYl0MIGPgSxKBBgxwdHWFyMn/OCq2ppQ/0en1OTk5CQgJ0/kYfFtK0ZGZmrl279ubNm/BUXMvjP//5zyzL0obLCCIesGTXrFnz5ptvMhz7tD6oDgX3AvXMTpo0iRBiyYB7BLEKhw8fzszMlMlkcrlcxC0fxoBfvnw5Li5OCvGaH+iTNQN4+uVy+bBhw5jatAGe48FjBR0PuMUL+/fvLyoqun79eiPIjCD18fDhw5ycHAjDGgwGQohZ9xcXsBtkMllAQICfn59kYiItj5s3b+bl5dGRX+KYPn36999/b0n7TgSxBELI2bNnHz586OLiwo0c8OtZalXAA6VS+ec///nTTz+1pEcigpgCuQEvvfQSwzB2dnbiLuLg4HDv3r2NGzdaVTQEEUpRUREhZNKkSQyn5bEQS5ZlWVj2cPDixYsXL14srazNCHQXCMLJyWnt2rUhISEMw4gu36qsrFy8eHFBQUFGRoZVpUMQQWRlZWVlZe3Zs4f7Ir+SpdU3MEUJ9PKQIUNCQ0OllLRZgUpWECzLtmvXbsiQITRnoKHAYt2zZ8/48eMTExOtLSCCmEGr1V6/fv3AgQM1NTXcZQxP6zvLaDTK5XKqiA0Gg6OjY7du3bBlAWJ9rl27JropHJdZs2ZFREQ8ePDA8kshiHBiY2O1Wq2/vz/VmLR8y2yOgUwmgw4ecrn8jTfemD9/fkFBgdQCIy2O0tLSf/7zn7BLEl5cS6ERBgcHhwcPHuzevRudBkjjQAi5dOlSZGRkeHg4fRFUrVn1ytXIsIajo6OjoqIkExZp2cydO/fgwYNwSxeBUqmEB/3798/IyNi2bZslTekRxCyQ5X379m1CyPLly+VyOa3votrTrMXATaft378/IQS7HSFScfDgwalTp4aGhoq2ZJlaVduxY0e1Wv3TTz9ZMsYOQfgBJfvjjz/+61//oi82KDGWAgv40KFD27dvxy4ciIRERkbu2rWLqZNgKELtdu3aNSsra9u2bZmZmdYVEkGA8+fPL1y48N///rfoK3AXdteuXf/6178eOnTIGqIhSD0kJCRotdouXbrIZDLIHIRWs7AWeTxcJloYdm3+/v6ZmZkHDx5E0wCxLoSQBw8erFq1atGiRQzDyOVy0W4uQCaTff/996tWrbKSgAhSD1qtdseOHREREczvK2EEWrIKhQLcBfb29qBne/bsSQixZAoIgtQFHAVnz55lau/o4joTQZUjy7Le3t60HR2CSEt8fHxhYaG3tzet46Y1YDzrWKFQ1P1feGXJkiXbt2/Pz8+XTmakpXHp0qXw8PD+/fsztUpWhEeLy5IlS/bu3YtbLqQxqKioOHTo0PHjx7mNOFUqlfBFrFQquce7ubnl5+f/9NNP1pcVaZFkZWV98cUXy5YtMymcFRHygurb0NBQ3G8hjQeN2E6ePJmbEyNEydIsLhMPw4QJE9auXYtmAmIVYmJiIGsFtKpCoRCXUQAolcqCgoLY2Fhcn0gjAUr24sWLWq3W2dmZYRgaUuBZyib5idxZSTKZrHXr1oSQ4uJiaUVHWgaRkZH/+c9/aNM4SzQswzBjx44NDw/HEi/RYO+CBgP6sXv37rt37546dSrDMDU1NZCwzTM0Qa/Xg56FYnDQ1LD6jUZjaWnpo0ePoAcHgljI7du37927V1VVBUvOYDBYMo9j1qxZISEhnp6e1hOwZYFKViQeHh7u7u6ffPIJ2AtC1jHM+SCEUF1sMBjAgcCyrE6ns0pvBAQpKirS6XRyuVyv14NTFXb6/EuUJhJAIBeCukOGDBk6dGjv3r0bR/JmCSpZ8fTv33/Pnj1r1qyBtSuuOxc0ToTJNFVVVVYWEWmR6HS66upquJfTWR7cCcrPhS6/6upqGO3RvXv3HTt2HD9+vHPnzo0gdnMFlax4AgMDx4wZo1arP/vsM3hFRJYMddFWVVVhYAGxCgaDAbZNjo6OhBA62ZPnFPq/9IGHh0dcXJxarX7ppZdw+qcloJK1iL59+7Zt25aaACKMWYPBACaGi4tL69atrS0g0hLx9fWVy+V2dnYwuBNUJLgO6jsFQgUymcxgMCgUCoPBoNVqW7duPWjQIFyWSJMB/Y00Go27uzs4sMTd8FmW7dOnDyEEhyYhVuGbb77Zu3cvDABlOMZpg8q+lUrl0qVL4+LicIOFNCURERHr1q2zpJYGfgYHDhw4duwYrmbEKuzdu3fKlCkhISG0jRFVuPxA+SJdzwEBAYSQW7duSSsugtRHfHz8xIkTg4KCBPY/rg9Yynfu3LGqdEiLZtu2bdHR0fCYlnTz61mlUkkHJdAHUVFRMTExePtHmobVq1fHx8cL7w5TH4sXL96zZw+uY8SKpKamEkKGDh0KTxu0RLnTEAIDAwkhOMUDaRo+/fTT6dOnC5ySxPx+octkMljKDg4OJSUlJ0+elE5OpAVCCDl16tTPP/9MXxFd93Xy5Elcn5aA2QViIIQUFhY6OzufO3eOEFJ3pEddlEolDeCyLGs0Gg0Gg0ql+uKLL6KiogYOHNhYsiMtAihKfPfdd52dnWFZ8pQj8qBQKOLj41HJIo0NFMXSPZRwjwENRMhkMqVS6ejomJeXFxMTI6GsSEsFVum3335rYZZrcHDwtGnTNBqNtQRDEPMQQqKjo7/55huG0/mF2/nwuchkMghBUKW8YMGCdevW5eXlSS0w0gIhhKSkpBQXF7u6usIr4jwGdnZ2Go0mLi7OqtIhCC9paWmEED8/P9CYdRtr1QW0KtfgdXBwyMvLO3LkSCMIjLRMiouLN2/eDBNoxIVnYUkvX7589+7dGJtFGglCyJkzZ44dO8bULlzaJZYf8MbSaUurVq3atm0bmrGIpMTFxZWUlHh7ezMCNlt1gRUOWYZpaWnWlyTBoGQAAAsbSURBVA9B6lJRUUEIGTFiBFOrXgX6ZMHghX87duxICElISJBYWKSlU1JSsm/fvi1btljomT127Njhw4etJRWC8HHv3r3CwkKFQsFVrALLaegpERERmBuLNA4pKSmEkDZt2og4l6rmsLCw//znP7hikcZg06ZNGzduFH06y7IODg7FxcWnT5+2olQIUh+EkA0bNkCvOLAGuGOQBF7E1dWVEPLw4UNpZGzOYJ5swyguLs7MzLQk6YoQMm7cuHXr1vXt29eKgiFIfbAs6+rq+o9//INhGDBFac6sQMtUqVSWlJRcuHAB3bKI5CQnJxcXF8NorwbBnegVHx+PSQVIY1JUVLRy5cpXXnmFEdaU67nMmTNn3bp16DFApGXHjh1RUVGWXMHf358QkpmZaS2REMQsUJgQGxtrMsFTyLm0ggb6GKDHoKGgu6ABEEIePHiwa9cu0VdgWXbIkCERERFdunSxomAIYpa8vLyRI0d6eHjQgTSAWXsWysENBsP9+/cvXLiASrahNDhvriXz6NGj8PBwcVFaABojtW3b1opSIYhZYJbi119/3bdv3xMnTsBTIRt/OJIq4vPnz/v5+ZmoaYQftGQbQHZ29sWLF0tKSkScC4tSoVAMHDhw+PDh1hYNQczAsqyjoyNtfkjhV7Xwv3q9XqlUymSyixcvTpw4UUIpmyOoZIUCjtSLFy8yoioUYbG6uLhs2bKlqKjI+vIhiDkGDx4M4xKETAg3QafTGY3GpKQkhmGwWUyDQHeBUCorKydNmvTHP/6RETv9WyaTffDBBxUVFeguQJoEX19ff39/R0fHp0+fMg1cxjKZzGg0lpeXnzx5UkR5bksGPyyhlJWVVVVVpaSkgJeqoafDGp06dWpKSooU4iGIWfz9/b/88svQ0NALFy7odDoRVzAajb/++qu4c1ss6C4QSnZ2dmZmpk6nE9cvzmg0ent779y5c+TIkVaXDUGEwLKsh4fH6NGjqQ3bII8BpH/FxcVB+w5pZERaKoSQ06dP79mzh86kE8F7770nMKSLIBKRnJx88+ZNeMzfnJMLncPIsqyTkxMhBBwOiBDQkhXK0KFDHz16pNfrxWlJuVw+aNCggwcPWl0wBBFOhw4devXq5eHhwTAMjYCZBZQsmAhPnz4tKCgQl2PTMkElK5SIiIhHjx6JPt1gMAwZMqRDhw6YYIg0IV5eXuHh4dyZckIWJFcXsyybkZHx4MEDSeRrjmDgSyiPHz++e/cuU5ue3dDTvb29e/fujbkvSJPTp08fHx+f2NhY8Mw2aD2zLKtQKO7duyd69i2CPB/YKHXs2JERO8bjL3/5y4IFC9AhizQtsJLT09PpK0IsWZNjvvnmm/nz51tfuGYKugsE8ezZM4ZhYFSM0Wjk17M0SsB92q9fP0dHR/QVIE3O06dPu3bt6uLiAk+FrEm64OFBZmZmdna2dBI2M9BdIAiNRiOXy2l6IH8WN5ir1GiF7VhwcLDUQiKIWWA1zpo1Kzg4+PLlywLTXUwWvFarpR1pEbOgJSuI9PT01NRUeGzWXQCmgdFo5D7o3bs3DLNDkKaFZVmdTtezZ08Ta4AHk44wOTk5HTp0QN+XQFDJCuLevXupqamwzsxur+oe4OHhMWPGDFSyiI0QHBwcFBREFyp/FIu77EGxajSaHTt2gA8NMQu6CwSRmpoKrliDwWB2o8R1FDAMI5PJevbsWVZW1q5dO8kFRRAB9OjRw87Ojj4VvveHtV1eXl5QUFBdXS2JcM0OVLKCSE9PNxqNJm5WnuO5/TrBIWswGM6cOdMYsiKIOby8vNq0aQPrExpy8xxsstRZljUajffu3cMorkBQyQri8ePH3Fovs0qW6+0ihAQGBtbU1DSCnAgiBF9f3wULFnh4eGi1WiHmAlNH1WZkZNCRtwg/6JM1DyEkICCgpKSEuv+FZBdwE7m8vLwgxxZBbAEnJ6eVK1fCDCT+xVyfufrkyRPIaETMgpaseSoqKmJiYliWhXaFwk9kWdZgMLAs6+PjgykviE0xf/58IUECuuCpJQsPioqKsOhLIGjJmqempubJkyeWXKFt27Y+Pj7WkgdBLIRlWa1WC83jxblWq6ury8vLrS1X8wQtWfOUlJRAK3jqLuB3Y5kYvAqFwt/fH0fOIDaFp6enuAJxoLS0FANfAkFL1jwVFRWgIgWWx9BAATxo1arV6NGj3dzcpJYTQYTj7u7u4eEhrtsRwzAVFRUVFRVWl6pZgpaseaqrq8GGFT5CmWvMurq63rx5E2/7iE3h6uoKTbuFr20uNTU1uKQFgkpWKAIXYt2kQhcXF4x6IbZGq1atIOOVEdW9E2d8CAeVrHlkMpnwHvIAlIfBClapVOKm2yKIdDg4OFBTVMT6RDNWOOiTNQ9oWOFKVqVSMbV9ZIT34ECQxkQmk8FCFX26FYVp3uAnZR7wsTK1g+fMakzqHIC7fWVlJSpZxNYwGo2WNB/AzZlw0F0gCNCbAnUlHKbX6+GpnZ0d+mQRWwMiV0JSEp8L2g3CQSUriAZtjuquP1SyiK0BzTRE60rh48QRVLLmkcvlDUpzoQfDvyUlJbi3QmyNiooKKLERB3aHEQ76ZM2jUqkUCkVD79tUz2q1WtqFHkFshJKSkpKSEtGnq1QqbkdahAe0ZM3j4uKi1+sFKlluJ1l4+uzZs5iYGAu7HyCIdcnNzQVLVlzRFzcDDOEHLVnzODg4CG/vYrJeCSFGozE1NRV7FyC2AyHE2dk5IyODEeuWdXZ2dnJysrZczRO0ZM3j4uLyxhtviHMXgMcgKysL3bKITREeHj5o0CDRpzs7O2OrQ4GgkjUPNIT19PTMz883mycAhV4mGjktLQ33VojtUFJSsnDhQrBkGwpYD56enqhkBYLuAkH4+PgIbLxNxyKADQu5X5mZmXfv3pVcSgQRRmZm5pw5c0pLS+Gp8HgDzdzy8/PDYR8CQSUrCD8/v06dOgk5kjt7hr5y7do1SDOQSDwEaRCPHz9OTU3V6XTw1Gx/ZIbj/gLHV7du3fz9/RtB1GYAugsEAZMQzc71NIGmGdy9e/fIkSM5OTmSCYggDeDy5ctKpZK6toRPBQWcnJwCAwMxYUYgaMkKIiQkZMCAAUKCV8+dtFhaWpqQkCDOBYYg1kWj0RQVFR09elRg9yK6OZPJZOAu6NChw0cffeTu7t4Y4r74oCUriODgYAcHB66/tb4j6cKlh4H9+8svv0BJAkbAkKYlLS1t8eLF3t7ewndmJoPBO3bsmJ+fjytZIGjJCsLX17dDhw6urq5MA/MKaQTs4sWLc+fOVavVksmIIOYhhJSWlsbGxsJTs005uJPt6cr38/Pz9fWVUsxmBVqygnB0dGQYpkOHDkIqEcFAMJn0lZGRceXKleLiYqlFRRAeysrKRo0aNWrUKKVSCYEvITszgLZI9vb2xt4FwkFLVij/+te/IJxqtv/Qc7dgLMtGRkYmJCRcu3ZNKhERxBwpKSlqtfrUqVM6nQ4UpRBjFpa00WiEYENgYGBAQEAjSNs8QCUrCJZllUplv379GLG13oSQqKioMWPGnDhxQgIBEcQ86enpiYmJX331FfQ51Ol0CoXCYDDwlxXQ3Ri1ZPv169ejR4/GkRlpQcTFxZ06dYqxYPCGSqUaPHjw119/fevWLauKhiCCOHv2bHp6Osyso91hhBRuwZqHszp06EAIwaRv4aBPVig+Pj7t27eH2Jc4ampqrl+/vn79eitKhSANIjExsWPHjhUVFRUVFU5OTlVVVUxtMsxzj4eRoHK5HMxehmFee+21b7/99rvvvmtUuV9k/g80FdQXCkDBcAAAAABJRU5ErkJggg==\"\n      ></image>\n    </defs>\n    <g mask=\"url(#5b9db65fc8)\">\n      <image\n        width=\"460\"\n        height=\"460\"\n        transform=\"matrix(1.63044 0 0 1.63044 0 0)\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcwAAAHMCAIAAADXuQ/RAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOydd1gUV/f4Z7bCSpcmggiSKAqixJK8GmuMJjExJua1JMYk5rUk5o1+1VhiNFaiESt2NFHUYMNYUYwoqChWiiIdpHdYUIRld+/vj/PjPvMusCy7ywJyPn/sszs7c+dMO3PuueeewzAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgmgF29ICILpCCIEvLItXE0FaHfhYtnmoklUBdW4bou5FxMv3yoAXsg1DCCkoKHj+/HlycnJmZmZRUdGiRYvgry1bthQVFdnb23fu3NnNza1jx44ODg743LYeCCFZWVm5ublPnjxJT083NzefN2/e3r17Z8yYwTCMv7+/Uql0d3d3c3OzsrISi8V47doueOXaHoSQkpKShISE2NjYGTNmPH78ODo6+v79+2VlZRUVFXw+XywWGxsb29ra2tjYODo6Ojs7v/HGGwcOHLCzsxswYICtrW1LH0E7BcxVqVQaERERGxv7008/3blzJyYmJjs7Oy8vr7S0FDSphYWFubm5k5OTt7e3p6enmZnZ+fPne/To4ebmxqCFiyDNDSHk0aNHhJDk5OTFixdbW1vzeDyGYfh8PqzA4/FgCXyHL6ampsuXLy8oKFixYkV4eDghpCEnA9J8pKenw5mPiYkZP348XB0TExP4VywWc1em1+7tt9/28/ODDZ88eWJgmRGkfXHs2LE9e/YQQubOnUsXUvXKsiw1c/h8Pn1KAR6PZ2Zmtm7dugULFhBCHj9+bDCxkaysLH9//927d4eHhw8ZMoReMgrXPuXz+XXNVScnp5MnT+7du/fEiRPl5eXNLjGCtDfKysoOHTr0888/Hzt2zM3NjWu3Mo11IYVCIf3O4/Gsra2PHTvm5+d34MCBnJycZhUbYRjm6tWrmzZtysrKmjBhQl312hB1rymfz//222/Ly8t379596dIlfYuJIO0VQkhRUdHly5fLysomTJigr2YnTpyYk5Nz6dIl9Bs0E9DBT0pKWr169dWrVyUSiUgkUuleaA7Vuc7OzpcuXfr+++9XrlypP2ERpL1CCMnIyCCEJCQkdOnSRXM7SBNGjhxJCDl48OA///yjx2YRoLKykhCyf//+S5cu2djYcP8SCARaNEi3MjIyWrly5cyZM319fVNTU/UgK4K0Q8AOys3NJYQcP37c2NhY77tgWbZnz57//PPP5s2br1+/jiatHklMTLx06VJxcfGcOXPAXSMUCuEdKRKJtGsTNodPHo/39ttvp6amBgUF4YVDEG0AJXvmzJnLly8LBAKWZfVrxnJdfqtWrSKERERE6LH99kx6evqBAwcSExM7d+6s8hecdi0uJfd60fvBy8uLEBIWFoZ6FkGaTGlp6fHjx4ODg42NjXk8HjxjWnv06kUgEFCzyNfXd9OmTadOndJj++0TQkhQUFB6erqrq6tIJII+PlivPB6vbtSH5qhsCAby6NGjCSF3795FPYsgTQBcBGlpadbW1kyt4aPfKHRufAK0fOrUqTVr1sTGxupxL+0QcLx4enoaGRlxl9PLJxAItNCzKr4C+GJsbMyy7FdffQV6Vg/SI0g74fjx44QQV1dX5n8fTv3uhYZ2wS5MTExiY2N37Nih3720KxISEvz9/WHcnypTPp+v92snEom48dE7duzYtWsX6tnWCU7Ra3X4+/unp6cnJiYeP35cIBAolUqlUtl8u+PxeEqlks/nKxSKSZMm2draOjs7z58/v/n2+KqSlZUVGho6cODAoUOH5ufnQ/8dTiysAC8zXfr1LMsSQgQCgVwuZxiGx+PRyXt37969d+/euHHjHB0d9XAwCPKqUlxcvGHDBn9//5YSwNfXd+bMmYGBgS0lQBuFEHL69OmsrCx3d3foIujXgd4Q1JVkaWmZlZV18OBBA+wUQdow58+fLy4utrOza0EZAgMDfX19CwoKWlCGNse1a9cIIR4eHnSJSi6CZgUU+rRp03777beUlBSD7RdB2hgPHz7ctGnTzz//3IIy8Hg8W1vbgoKCQ4cOtaAYbYvHjx/v3LlzxYoVDMOIRCKWZVWy9jQfEM5Ff6akpOAsPgSpB/CsXbhw4eHDh0KhsGXT2bEsO2XKlF9//fXKlSstKEYbYuPGjY8fPzYyMqKdd5Zl9T7Y1RBwt4CP4sMPPySEpKWlGWbXCNJmACW7YcOGTz75xDC+vIagAblXrlzZtWsXOg0axcfHZ9asWe+88w7TQAItg8Hj8YRC4fXr18+ePYsXDkH+h+fPnx88eBDCpwxmATUEmGNdu3YtKCg4cuRIywrTyomPj1+8eLGPjw9MwaIaFhyyhnxfgoZlGMbFxaWgoOCvv/4y2K4RpA1w4sSJgoICY2NjblrCFgS0w9dff+3r65uXl9fS4rRezp8/Hx8fL5FI4Ce8ILkTBwwMzFP49ttvN2/ejHksEeT/U1xc7Ofn98MPP3BTbresSCCJQCDIy8sLDQ1tWWFaLYSQo0ePbtmyhalTkMKQTgN6t9B4BolEkpOTc+7cOYPJgCCtmtDQ0OLiYjMzsybpVroyNX7hy2uvvcYNJKLzjsDIarQDy81gIhQK/fz8tm3bprlU7QqYcdC3b18d24FzbmNjM3z4cGoUM5xXnRZt/vrrr7t37y4rK9NRNgRp8xBCAgMDqTXENKYHuRpTKBSqPIGzZs0qKSn56aeffHx8uCqbrtZo8CYNP4LPQYMGfffdd3FxcU0/slef0NDQ2NhYoVCone+Va+26ubmlpaXNmDHjxo0b9vb2Kq9bLfSsRCIpKyvDzGoIwqSlpRFCunfvzjQxEQx98Gh+0vnz5xNCbt++HR0dTQj5/vvvGYbh8Xg0tIjRzF0IFjFNfhoXF3flyhUMvVTh3r17a9asmT17NqPVABf3KrMse/PmzV27dkVHR2/dujU+Pt7e3h7+0mXobP/+/QEBAehSR9o7wcHB169fZ/63DKIaGsoXM2bMGEJIVFQURIM9ePCAEPL+++/TFTQ3ZlX29cUXXxBCcBSFCyHk/Pnz9+7dk0gkOjrQRSLRiRMnli5devPmTYZh4uPjd+7cGRMTY2VlRdfRTtU6ODjk5eVhxUykvfPDDz/MnDmTJq9r9IkFxUfjz2nKu+zs7MuXL1N7kxACpb8HDhxIt6XqVY025+puqvcfPHiAJWq4lJWVEUI++eQTRoeQO+gxHDx4cO7cuSdOnKDLY2Ji/Pz8fHx8oGXtxtBgq7CwMBz+Qto1qampU6ZMcXFxoVMANKk+y+fzVbIU/vjjj9u2bcvOzuauBklpIyMjYSyF6gLNLS86Sj5r1qwtW7agx4Dy4MGDjIwMIyMjXaIIWJadMGHCwoUL62Z1efToUW5urqWlJaNxF6de/u///m/p0qVaS4ggbZ4zZ86kpqZS9adJkCx39B+8sba2toWFhfUWNYiMjPz999/nzJnD1D6rGipxlZ8mJiaEkJiYGA2P65Vn5cqVKkOLTQVmLmRkZOzbt6/uvxUVFYSQNWvWaN0+XOK33377v//9L74dkfbLmjVr1q5dy/xvmg/1hfaoXUP9dDt37jxy5EhhYWG96588ebK4uBhsIg0tZYCb4oTP5x89ehSHv4DIyMgpU6Z07txZR2/s2rVr9+zZk5GRUfcvQsijR48KCwvNzMx0GfuSSCSEkKdPn+ogJoK0WW7fvj1t2rRevXqBAUsDWjV5qKieNTc3V196pLi4+NChQxs3bqTOXO36nh988AEhpCFV3n4ghFy6dCkyMpLRwRvLsqyFhQX4zRtap7CwcM+ePb/++it3K4bTz9Cw6u3ff/+NU2yRdgcEAFy6dOn27ds0wTP1FWhoucBq+/btg1o1ata8desWIcTR0ZE7JUkLsePj49UohXZCVVUVIeSbb77RfBOVtxo4ChYsWLBr1y71Fy44OLikpMTd3V2lEXqrNGpK83i80aNHL168ODc3V3OBEaTNA0o2MDDw22+/hSVcraehBmRZ1sXFBaK1Gt3dvn37li5dyp1ZrwXz5s1buHChdtu+MmRnZ5eXl5uYmMDPJvUMuB6Y5OTkRstPlJSUBAUFBQQE0CUaWq8U8MLn5ubirASkfUEIgZENV1dXbvbYpnbk161bFxAQoImfNDAwUEfHHJ/Pt7e3/+KLL7KysnRpp61z9epViGtmalWe+qtWrwXar1+/H374ITk5udHdwbwSKFqs0lqjCpe+rY8ePYplaVqQlkxd2m5hWTY5OTk5OTk1NbWmpga0JA2VZTQzZkUi0TfffGNtba2Javby8tqwYYObmxujrSWrUCgKCwt/++23dp4Q+v79+7dv34Y+ARS4VP+So+UUGYapqamBK/t///d/ffr0gcuhnt69e2/duvWTTz6BoVFCCL03oJZiQ7AsC+KxLHv27Nns7GwctGwpUMm2DDdv3rx8+TJ8By2pVCppWVP1zwOs379///Xr12uYncTd3d3d3X3WrFkMw9C9NAmhUKhQKK5du5afn6/F5q8GhJCqqqpHjx4pFAoejyeXyzWcpEcvKJ/Pt7a2njx5cv/+/TXZI8uy7u7u33zzjVwuh7BlpVIJelZ9DWPutJQbN24sWbIE59e2FKhkWwBCSG5ubnBwMEzZog8q2ClQ51l9CwKB4JtvvvHw8KCT3BvljTfemD59ulAo1C5lbU1NDcMwiYmJRUVF7dYmKi0tXb58eWxsLNeiVA84bZVKJb3Kn3/++Z49ezw9PTXcac+ePQcOHNitWzeFQgEWMewd0oSr2ZBKmJeXFx0dXW+sGIK8miQmJhJCVJLacR8YNfYRnVBLCHn48KHmOy0tLd2wYQMMtWk99jVy5EgYtdNu87bO/fv3U1NTG0of0RDc4Dk+n5+amnr06FHNd0oICQgIWLVqFV3SpERCsKavr+9vv/2m+U4RPYKWbAuQmZkZHBxcWVlJlxBCuL14NVoM/oKZPE3KZGppaent7f3f//6Xz+dr5zFgGOb27dsMw5SUlGi3eVvn5s2bx48fpz8VCgU3lURDcHvuU6ZM2b9//5tvvqn5TlmWtbKymjlzJv0JJq0mrzoQjBBy+vTp4uLidvt2bFlauJxU+yQsLEyXQl5CodDT01OLaQUeHh52dnZ9+/a9f/9+U3fK4/GUSmVlZeW9e/e01tFtHSjfC711pVJJRyzVu0cB8MyOHz++urra1dW1SfuFaAQ3N7fk5GR4R2qyRz6fD6vxeLzo6OgbN24UFRU1ab+IXkBL1tAQQl6+fHn9+nWts37U1NT07du3T58+Td3Qzs7ujz/+GDFihBbuAvpU37x589atW03d/BUAcgZCQkItrp1SqZRIJG+//fZrr73W1G3t7OxevnwJsxIgqEATm5S+C5VKZUVFRXx8POarbBFQyRqawsLCDRs2xMTE6JLAydvbWwsly7KsSCT64osvtDZFWZYNDQ0tKSlphx3PxMTE9evXS6VSptZRoMkoP5fBgwdv2rTJ2dlZi717enq6u7vTyFwNh90IIXCbiUSiiIiIe/fuabFrREfQXWBo8vLyioqKioqKtFay1tbWnp6e2oVS9e7dGwJmNYmE50I7yDdv3jx37lw7nKaZnJycmJhIPdo0ZqDR9w3Vxd9+++3z589tbGy02LuXlxf1S2i4a1iBECIUCmUyGcyu1mLXiI6gJWtooqKiwKDQ7o5nWdbb23vJkiV2dnZabN67d287O7t///vfTd2Q2mtlZWWPHj3KzMzUYu9tF0JISUlJSEgI/KRhdhq+KUHTDRs2jFvjskm8/vrrffr0kcvloOWpiap+pxDPAOF3kHcC9azhQUvW0Dx+/Fgmk8F3TeygugwfPlzDMPh6ee+99xiGWbdunRbbgjEVHh6uy8BdW+TFixc+Pj729vYqE0ZgaoB6jwH86+3t/csvv6xevVo7AaysrMRisYWFBS1Aq7mbgmEYsVicnJyclJTUnueStBTt61FpDTx9+pROB9BCwxJCNJws1BAuLi5NHd1mat8H0EuFSmK6yNDmyMvLMzMzAw1FtapAIFA/t5XL0KFDWZa1tbXVTgCxWPzLL7907949MjKSZVnwAKjfBC6ZQqEQiUTV1dUMw8TGxuqYAxfRAnQXGBRI9vHkyZNG11RjqPbv379Hjx5ay+Dq6vrDDz8MHjyYG+PZ6EAKXRnySYtEIsPoWQjGKC0tzcrKSq3l2bNnWVlZpaWlz58/J/8L3Uq/kybi4uLCwsLgOzUhQcNqaFG+8847Q4YM0VoAmNrXp08f8FTIZDLNuzKwskAgSElJSUhI0FoGRDvQkjUo1dXVBw4cMDMzYxrzFaj8RVd2dXU1MzPTvOJsXViWXbJkyVtvvXX79m0NsyUwDKNUKiEAnhCSmJgYFRWlUlJMawgh+fn5Uqk0JSUlKysrKysrJycnJycnNze3sLDwww8/PHfuXFVVlVwuBycjROMLhcKamhoLC4uPP/7Y1NQU8gHu2LFjw4YNTk5OCQkJ3bt3B/NNL9y9e1e7c06n1Q4cOFDHBGZ9+/atqamhOr3RS0b9tnDV5HJ5YmJiu41xbkFQyRoUqVRqZGRUUVHRpK24VmTfvn2XL1/OnWSpBYMGDRKJRL///jtT+6xqOH0IHtGXL1/evXu3ST5BCt1RTk5ORkbGrVu3li5dum7duoKCAoFAQEfPYV/g/5VIJDKZDKKm6MsGPsVisampqYWFxaBBg7p06dKpUyc7OzulUlleXl5RUeHr6ztr1qzhw4f369fP1tbWxMREO0c2IWTJkiVqyk+o3xZyWs6aNWv37t1atEB54403aIdDQ28+TdwFJzY2NlaXYjaIdqCSNSi5ubkwZtWkzix3TS8vLzqbU2u6du3auXNnlQe10ecWesfgEIyIiDA2NtZi1ykpKd26dQsICJg6dWpOTg7Lsk+ePOnQocPLly81jIViOHOuqqur5XJ5aWlpcnJyREQEzHGi2QVdXFyGDRtmbGwskUhMTEz++uuve/fuubq6WllZNekElpeX+/j4dOrUSYvjBfr06SOVSs3NzbVugWEYR0dHBwcHIyOj6urqRs8VvcdoLhuhUJiYmKjjnYNoASpZg5KXl1dTUyMQCCCqRgtef/113V2NnTt3njp1qqWlpVQqpf1HTYwj0GIymSwjI0PzMR9CSE5OTkJCwoULF3bv3v3uu++GhIQsXLiQjnTTkg3gcIQQJVhC7daG0jvQqFW6Ao1LhaS9/v7+QqHwjTfeGDdu3IABA6ysrM6dO3fr1i1XV1cN9SbYxdrVN4OIKwcHB921m4ODwxdffOHg4AApfdVfLx6Px53xBZ+pqalDhgzRJPwL0SPYdzAoJSUlL1++1FrDMgzz2muvaTEvUwVLS8ucnJwuXbpwU/Bp8uDR5/bp06fx8fGNrk8Iefjw4blz5xwcHMzMzBQKxYkTJ959993Dhw+DhhWLxXw+H/S1QqGoqakB3yvdnVKppMYpBaY8gVKmO6JOFboJnRlVU1Nz586dJUuW9OjRY+TIkVKp1NXV9cCBA8HBwVlZWY2+WlJTUzMyMrTzZkIyFycnJ+0menFhWTYvL0/DyBDqeKGfCoWipKTk1KlTz58/11ESpEmgJWtQysrKtDYiQGV069ZNL+M5Xbt25fP5UVFRTNPDdQUCQVRU1IgRIxqyiQgh1dXVSUlJx44dmzhx4qNHj/r06RMbG6vixuXxePRYaLIVriOloRDUep0tdZ3L3NUg3Eoul4eFhYWGhhoZGX322WfvvPNO586dT58+feXKlVGjRjV0vKmpqZAzWzs3tFKp7NGjh16uWpcuXWiJBPWXTMURRDfJy8vDKC4Dg5asQSkqKiosLITM3ExTqsaChoUa4BCcoCMuLi5dunQBGWhpBg0lkcvl5eXlR44cKSgoUPm3pKQkLCzs77//FovFzs7Oz5496969+3/+85/o6GhuC/Cl7h6pBUp/NvROauq7ijo3wLSsqqoKCAgYMmTIp59+ampqunv37rlz54aEhKSmptZVXomJiZmZmdq9HeG1YWNjo0Vscl26du2q+axc+u7kdgWkUinm4jIwqGQNSllZWXFxMaPZTCFuHhAYbe/Zs+e0adOMjIx0l8TJyalLly7gY1UqlWKxWJNxJyrPy5cvHz9+zHVTEkKioqKuXr3q6emZnZ09dOhQZ2fnRYsWpaSk0MOkEUXqd6RijTa6TlOhHf/q6urTp0+PGjXq4cOH4H9wcXEJDw/Pz8/nhtwKhcK4uDjt9gXtdO/e3cHBQWuBKU5OTr169dLwdUitXe6xFBcX0zljiGFAd4FBKS8v17xvrhJdzzCMnZ1dfn6+XkYtHB0dGY4rs7q6utGBFDrNCQR7+vQptx7qvn37/vOf/8TExHh5eWVmZtL16QgMW1var1UBR52WlrZ582Y/P7/evXv/8ccftra2sbGxFRUVUPp75cqVvXr1gqlTjc6zqouJiYmVldXLly91lxY6HzCYpt2cbMgihhgStGQNSkVFBRQDZzSrlshwHGp8Pt/BwUHreZkq2NnZqehZ9b4Lbgy8QCAQCARpaWnp6elXr15dunTp9evXTUxMevbs+eWXX1INy81O0mqhbw6GYWQy2YMHD7y9vf/zn//Y2NiYmJhERUXJZLL58+eDY0QLDcswjKOj47Rp07SLeFOhU6dONCJCO1teKpWWl5frLgmiOahkDUp5eTntrDXVnlUqlR07dtQuUV5d7OzsVMI2Gx09FwgEYJZCDEBeXl5JScnJkydHjhwZHR09ZcqU+Ph46t6FApHUhqXfWyFCoZCGNIjFYoVC4e/v7+jouHr1amdn54iICF9fX/BjajFkRAjp2rWrvvoftra2Dg4OurhKXrx4gdEFBgaVrEGpqKjQ8BZXGR2GJZaWllZWVnqRxMrKilvpVhP1IZfLlUqlSCQCuw/Cs2xsbEaOHBkZGcnUdr3BZKMlUsCzTIMH9CK8fqmpqYGUPSKRqKqqCsTm8/krVqzw8PAQCoXU9NPuPdGlSxfd47cAExMTCwsL7eoNAy9evOAWl0MMAPpkDUqTjAiqW6n3zdLSUl9h5B06dDAyMuKqlUYH4uhMBMg2cvbsWVNTU0iZCLYqfHn58iUoU1qNqtXasJSamhoejyeTyeAYBQIBeAZycnKGDRv2/vvvMxrX8qqLs7Oz7vNHACMjo/Hjx5uammodEFZVVaUXSRDNQSVrUF68eEFqkz1r/uBRxWptba0vhWVkZDR58mR7e/v09HQNN4Fdw8CXXC5PS0uj/lw6oQCgU4zgJ0SJaVj+r6UAJzIcI9i2NTU19HXCNDF/KxdHR0fNZ8eph2VZNzc3KysrrcOwqqurW/877xWjNXbfXmEqKyvBlNA8oz73Z4cOHUxNTfUiCcuyaWlpMPYFsVkaKhG5XK5QKGh0LYzIcZUIVbvwE1qGB7t1hsHTBORggEO0P9i2LMtWVVXpmKFcxTOjIxYWFroESpeXl+sxORmiCWjJGpTq6mqwmDTRaDQNCi3oZGxsrK+OJ8MwNE9Ko9OH6sKVX8UygqZUJs7XuyYXatpzpyfV/Zf+pDvi/lV3NW7t7obgzlPg/lTJG6s1nTp10mOIRYcOHXR5VymVSvQYGBhUsgalqY+rSpyskZGRHpWsubl56+m/c4+UfqdVC0ltvhiGYWj6GJUNmVqzmiaLIbUpY5pUwkDvdOjQQY8JWXQMBWtStm9EL6CSNSig1DRXlNyIWh6PBxWh9YWZmVnrHO6nylQl5J5rCIPkdW1w7jqQxEupVLaghmUYxsLCQo/nWSgU6qIlG7XrEb2DStagaG451jsyJhKJ9Gh7WlhYwJfW9tTVzb4IahdUKltbbazebbnKl7ajdWCAXrC3t9djD52be0wLuEnOEMPQGg2ZVxhwsMJ39fYI10HJXVOPfb0OHTroJdeMXoBuPvcnRNcKhUJwGkBwArizCSexIUw/oxuqWGpw9lpQw4Kcekk3wTAMIcTT01OXFmQyWevxEbUTUMkaFGqLMZqpS+46hJPNWi8YGRlBWLuKHm8RaL5tOmcMjhSqWtXVv3TsC0wzlYV0Ze4JbxFEItG7776rxwZ1rDyk8jJDDAC6CwwKqS0FqPmTzx061y4nSEM0pJhaChpUYGpq6uHhMXjwYHd3d3t7e2NjY5jmBJV7mNp0hUqlsqKiIjc3Nz09PSYm5t69e4mJidAUqF3qVdDveWsSYrFYlwladVm2bJkuga769TghmoCWrEGhE0y1APSLHoOBwKjRRSQ9IhQK+/Xr98svv4SFhaWnp/ft27e6ulomk0G8KgTnUi0MPlZIwg25FLp3756QkJCSknLgwIGpU6d27twZ3Au0FE1LHZdIJLpw4YK+WmNZNjo6Wsfr1TpHO19h0JI1KDBdChRlk+wRyMxSUlKiX7MI3J2gs3QfHdLQKKaBWbBHDw+Pzz//fPr06cuXL4cozoKCgtWrV3fs2FHzXRNCSktLKysrCSE9evQ4dOhQZGTkrl27zpw5QzPy1HuAVBjuUejxrSOTyaCquR4b1CVOFn0FhgeVrEGBAVUpKmsAACAASURBVBDNMxhwlQJM+tQu215D0NK5jD7MPRXdRLOvgiKD/jskP7S3tx81atTIkSOHDBmybt06Ho/38OHDVatWaZ3IUcV5nZWVVVpa2qNHj/Xr1yckJFy9evX8+fNPnjyRyWQ0PoFORQNznmVZiPTSr13PsuyNGzf0qNoqKyt1aY2beR0xDHi6DYpEIunQoYMmDlmVJwG6yS9evHjx4oUe5QFdo3d3ARwdjXtXKBRCoRD670KhcP/+/bm5uT169FAqlc+ePVu6dOmiRYvGjBmjr1S5LMs6OTm99957X3/9dVFRUWVlpUKh6NevX0pKyuTJk0UiEeh6Op4GI4q04Ll+bT2WZd9++209nuGKigpI/a6dnEZGRmKxWF/CIJqAlqxBMTIy0rBPXW/JlpKSEj2aIaBuCCfLly7Ue1zg5RCLxdXV1fb29j/99NPXX3998eLFR48eLV26tLm7rtyMAVlZWVeuXHF3d79586aPj8/p06fp8CN3Fi+d96EvN65AINCjr4BhmIqKCl2uV4cOHXDgy8CgJWtQILug5iFcDMdFyOPxnj9/rsfyIWKxWCKRqClWqKF43O9U1cLkNLBha2pqVq5cGR8f37Fjx0ePHr3//vve3t4Gdg46Ojp+/fXXo0ePzs/PDwoKevTo0ZtvvsnU6lMejwfBthCWq0c1BGVx9dUaU2vJwnctzqFYLNZX0C6iIahkDYqxsbFEImmSkqUPPJ/P5xZW0B0+nw+apUnyqIE7yRW8sTwez8XF5dGjRxYWFnfu3Bk3btyIESMsLS113JHWDBgwYOzYsXl5eampqR4eHr6+vvTYaZJDGAnU1x5FIpEec48VFxd7enqWl5dzL1xT5dFLIRxEc1DJGpQOHTqYmJhwe6aao1Ao8vPzS0pK9CWMUqnkBoTp7jGgLQiFQoFAIJFIfv3114SEhLi4uGHDho0ZM4ZO5G1BWJbt1KnTp59+2qNHj9zc3Nu3b/fr108ul0MPAxJE6NGSVSqVgYGB+mqtsrLyxIkT1dXV2t1CDMOYmJigkjUwqGQNipmZmUQiaZIblPbBlUplaWlpXl6eXiSRSqVSqRSULAx/adcOnf5LlwgEArFYvGjRooSEhE6dOoWFhU2aNMnLy0svYuuR+fPnT5w4MS0t7d69e5cuXXrrrbdgDFAmk+nRkgWLPjo6Wi+tSaVSKClPozWa2gK85vUiDKIhqGQNirm5OVRCbPTxgOccHnva33z27FmnTp10NDmhU//s2bPp06cvW7aMqS0KwGgWps7j8UAeGvnEcBwFfD7/rbfeysrK6ty58/3798eMGTNs2LBWG5vZv3//zz77LDk52crK6tq1axcvXuzYsSM38IDR2ZeSk5OzYMGCmzdvJicn6y5wbm5uUlISOFXVx1mriE2vrKmpKSpZA4PRBQbF0tJSQxXJ7bHSTYqKirZs2aIXSTIzM8+fPw/OB0i32uiQOkxshXVgOIsKBi0IBILhw4efOHHi6dOnU6ZMaQ3OgUbhBkUoFIrTp0+PGDECgiJgBdrt0G5Mn8fjbd26NT4+HmpN6khubi6Px6uqqoLzr2ZNFVHple3QoYOOhR6QpoKWrEExMzODYoia2Ef0qaYPTG5u7g8//NDUks7kf2EYJjEx8f3339+0aRMErnKnJDQEj8eDmlcw5QyecJZlwaqFINOlS5eOGjXK3Ny8T58+bULDqtCrV6/bt29HR0c7OTlBOUWqW8ViMbdL0STkcvn27dtzcnJSUlJ0lDA/Pz8/P5+prfzY6PrciGxY387OrgUHHtsnqGQNirm5uampaV3t2RAqq0ml0mXLluXk5HA1piYtcJFKpa+//vp3331XXFzMsiyozrquVRVounEw8cRiMYTZwk8TE5MLFy7k5eX169eP0V9mP4MBrz1nZ+exY8dGR0enpKSMHj2aHrJIJKqurhaLxVpkZoHX2I4dOz755JPg4GBYqPnlUyE7Ozs7OxvC4xr1YKisAD+trKxQyRoY7DgYFEtLS83TFVLFx/2SmZmp0qmHmWDl5eXPnj179uxZbm5uSUlJcXFxQUGBVCqdM2eOn5/fnj17ioqKYIBr6dKlERERu3btYv7XUdCoJQszYmE1KMYHGzo5OYWEhJw5cwYitLQ9N62Cnj17EkIOHz48atSovn37bty4EaqgM9qm5oHXGMMwP/74I4/H69u3r0AgmDVr1u7du2fPnv3mm2+KRCITExMrK6uOHTva2tra2dk5OTk5ODjAGKm1tTVth2GY1NRUWq6cJp1Qs2s62YSp9eEaGxu3znKWrzCoZA2KnZ0dVWfqe+j0+VExM9PS0qqrqwcMGPDixYuCggJ/f38fH58lS5ZUVlbSbFUwPx0GymNiYry9vWEwR6lU8vn8c+fOPXnyxMjIqKqqij5+jZpFhBDootJBbRBv6NChJ06cuHDhwrhx49zd3fV2ploOOBVXrlx55513BgwY8OOPP2ZmZtIRyKYas3CuBALB+fPne/XqBROuoqKiBgwYwNbWeYQzCZcPlkAA3MqVK/v27fvNN99kZmYWFhZaW1tPmzYtMjISNmy0xDrXjwyf5ubmVlZWL1++1PrkIEhrJyoq6vHjx5qsST1uKlOqfvrpp5UrV27bto0Qkp6e7u/vP2nSpO7du3PX4X7n/oRgALpQJBLBXsC0UW/gwL9UKvDMdunSpby8/Ny5cwUFBZocVBuCEBIXFxcQEBAeHq6XpCo8Ho8GqNJTzY3QgO90fXNz8yFDhvz888+hoaGFhYVz587dt28f1y+sXiRuuAhds0+fPt98843eU1UgSCsiPz8fAl2bGhhEn5PBgweHhITMnz/fyckJltTN91FvszCmTB9RGoalZpN6ZaCaumvXrhkZGUePHqWzPF89wsPDt27dCsUItEsySS80/aK+HTrBl+FcLLFYPGLECF9f34MHDzZp79zXp1Ao/PDDD8eNG9f0g0CQtkNFRYUukf+tBJZlLSwskpKS/vjjj4yMjJYWp3m5fv06IeSHH36An3V7Bi0kl0Zw3+Usy86bN2/u3LktLRSCNCeEkMmTJ3fu3Bl+tiFty61GLhaLr1y5snHjxqSkpBYUyTAQQh4+fEgIGT16NDUzRSIRtTf1m0Zdv8BrgNb18vPzgwFPxJC0mYf81YBlWalUSueYtqGkczRZuI2NzZEjR65du+bl5fXaa6+1rFQGgGXZvn37Xr16NTAwcMyYMTDwBZVvoBuuYchqC0LHWj09PXv27NnS4rQ7WvXN8Uri6enZp08fptZJ2oYAgY8cOVJeXu7t7T1q1KiWlshAsCz7xhtvPHz48MKFC4MHDxaLxRCnAQkE2BYtOa4GtrZ8OmhYoVDo5eVlZ2fX0nIhSHNCCLly5UpAQEBLC6IlEydOJIToZRp+m4MQcuHChczMTCsrK1gCfXA+n9+aI0+p17hbt26TJ0/WY6pMBGmNgFkRExMDP1v5sAkXEDUqKio4OLjdxgBlZmbu3Lnzp59+ggoXrdxLANAXwNixYzG0oEVoA3fJq4enpyfEXbUhbUUImTZt2sWLFzt16tSG3g36xcnJydHRccmSJdTLCbMzWvMJobL169fP09OzZYVBkGYHLNlff/21e/furfnJrIu5uXl+fv7hw4dbWpAWprS09MCBA2vWrGFqIy5a53WkUtFQ2cDAwOPHj7eoUAjS/ICSXbZs2aRJk1rzwwljXNAdhu9nzpw5fvw4pIBq54SFhRFC6BziVhvCRafzgZ6Ni4tLS0vTLjENgrQZ4Bbftm3bggULBAJB6xwwqetq/Oijjwgh8fHxLSJPa4MQcvDgwatXrzJ1Js61HuAi0uhmSGJw9+5dlaSXCPJKQQiBLIUHDhwwMjJqtRYQwzDgZ6RW7dmzZ48fP46PJeXq1aszZ84cPHgwwzB8Pr81j4DRF8DgwYMzMjIuXrxYXl6OShZ5BSGEPHv2jBCyf/9+urDV6ll4Mo2MjAQCgYeHx4wZM86ePdvSQrUu/vjjj4CAgNbZF2EYRiAQsCzLdfswDNO1a9f4+PhLly5B3ssWFRBB9M2lS5cIIUeOHKHTHFut+QNPJrwAWJa9ePHivHnzWlqoVkd0dDQhxM3NrU1MKqHDX15eXomJiRcvXiwuLkY9i7wixMTErF69esWKFW1CVYHKoH1MZ2fn6dOnX7x4sUWFao3A3ISzZ8+2QocsQAe+oNo5Xf76668nJycTQh4/fox6FmnbQE7SgwcPxsTE9OvXD2xD6iJotTVaaDeTz+dfunTp+++/b2mJWinx8fGEkBkzZrRaPUuLsAkEAoFAQDtPYrF4xYoVhJCrV6+inkXaMFlZWYSQoKAg7iBvy4rUKDTZs0gkCgkJWbZs2aVLl1paqFYKIeT+/fuEkHfffbelZakHbglFlXKK8B596623CCHXrl1DPYu0PWD0NjIy8u7du1r7XlU0MneUTE0mU831uEoNBW6C50GDBiUlJa1fvz4kJKSpYrcrCCGHDh1asGDBxo0bafZ0rs3Y6HwwleoVaqA3ALeeRVOBfdGmhg4dSgihFR6R5qC1G1ZtFGoa9OjRIykpSZcsTRDhCJ/UDIGEe2rq6FlbW/fu3bt379729vZGRkYdOnQQi8Vyuby8vLysrOzFixfZ2dkxMTGJiYkymQzKKTIMw+fz33nnnV9//fXNN988e/Zsz54920MyQ93ZuHFjeXn57NmzDx48uGfPnrS0NDil8GlhYdGzZ093d3cXFxcbGxtLS0sjIyO5XP7ixYvnz58XFBQkJyfHxMSkpKRAsXd4g9JiYnCVabUu+CkSiWjyyaYCLdAsYnPmzOnUqVPXrl0nTZqkrxOCcGkDA6NtDkgB07t378GDByckJOjyPDAMAyXzCCFQ+hAWwiNHnz349PLyGjp06JAhQ958883OnTv/3//938uXL2UymbGxsVKphBSosLJMJnNzczty5EhJSYlUKs3JyXnx4oW1tbWLi8vWrVvz8vKysrI++uij1u/caCUsWLAgNzc3Ly9v0aJFVVVVkyZNys3NlcvlYrG4e/fuhBA7O7v169dXVVUplUqFQmFhYaFUKjt06FBWVlZTUyOXy/v06RMcHJyRkfHgwYPg4OCwsLCKigo4/9x6mrSSo9Z3FIS1EEKgeqZCodi3b9+BAwekUmlSUpKbmxtedL2DJ1TPJCcnP378eNy4cWPGjLl8+bJQKNSulDQAm4vFYijBza3gzdQ+eC4uLh999NHMmTPd3d23b99ub2/fp08fOzs7MzMzNQ8MIeTly5dVVVVFRUWlpaUymczMzMzExMTS0pKm8kOaBFiaRUVF6enpNTU1VVVVZmZm5ubmNjY2fD7fxMSEXg7a0aFLcnJypFJpQUHB/fv3S0pK1qxZExwcvHPnzsuXL9fU1NDylwqFgnsPqC8JrgYo8UA1tUgkOnv27OjRoxMSEtpcVg2kfZGfn3/w4MHk5OT+/fuDl1PrYHWuXw/g1q+VSCRjx47duXNndHT0pEmTFi1aFBYWVlBQgCMYbQL1E1sJIYmJiSdOnFi2bFlBQcGVK1cWLlzYs2dPzf28aqAeJ4ZhBAIBDMnCzbZx40aM60JaNYSQiIiI/Pz8Ll26qJRi1g7u9HP4FIvFLMuOHTs2Njb2xx9/3Lp167lz56Kjo/UhPtLqKCgoiImJOXfuHCSxPXPmjI2NDZ0kUvc1rAl0Exo8y315L1++nBCSkpKiv4NAEP2Rnp5OCJkzZw785FYe1AJaxpm7cOzYsTExMcuWLdu8eXNsbKwu7SNtCDB7z5w5QwjZuHEjlJDRy4xeCNamJi3Lsv/8809ISAgas0irIysr6++//w4PDxcKhZDIGZbrYsxyDQ0PD48bN24QQs6fP08LKyDtBOpeuHXrVmBgICFk0aJFEolEu9ZUorgosKRPnz6EkOvXr+smMoLoleTk5MOHD2dlZTk6OurSDrfjxtWwM2bMgOJgkGJGd4GRtgvcCTt27IiLi/Pw8GD+N9KWZoShS1SiodW0TEuWrVq1yt/fPyIiAm82pFVACAkMDExOToY7vqmo+MX4fD7kmQVbeMiQIRcvXqQzi/QoNtKmiYuLO3z4cGFh4fLly21tbRlOxkUVE5XH41Gdq0bJwjr0PvT19YW7rhmPAUE0AaZ1EUK6dOnCaOUmo3c2TeYET4JEIjl27Bgh5J9//klMTEQNi6hQWFh4/vz5PXv25OXljRo1Sn3aTM3nldF5a3v37vX394+Li9ODrAiiNZDv7ssvv2Q4WlI7aCwkwzBOTk5xcXGHDh3CeBpEPXl5eTt37ly/fv3y5cu51qgWuTS5GYsgSiwuLi4oKAjvQKRlIIQ8f/48JCSEW1tQi+hFGChjaq1ggUAgkUju3r3r5+eHRgSiIaGhoYSQX375BX7SCEKuntXEmIVJCkyt22rAgAEQmNhsgiNIw8Bob0FBgb29PcOJOtQFY2Nje3v7Gzdu+Pj43L17Vx9iIu0CQkhoaOjOnTvnz5+v8peGjoK664C29fX1PXDgQGFhob5ERRBNqaqqOnfu3NatW3Vvio4IOzo6pqambt++/caNG7o3i7Q3Ll++TAjx8fFhWVYlZ5uGLVCHA+1dCQSCwsLCgICAZpEYQRqCEBIeHl5eXm5tbU0X6hISy+Pxxo8fL5VKAwICUlNT9SEj0u4ghNy4ceP3338PDAy0tLSkepZOw9XkFq2befaLL75YvXo1Og0Qw0EIyc7OJoR89tlnsETF+dUodWdzwXTG69evS6VS/UqLtDcCAwN9fHxSUlKcnZ0Z3RIdUCIiIpYvX64P6RBEA+gcR/hJx2TV38qgWKku5pYRnTBhwm+//QZjF80nNtJ+SElJ+fPPP7OzsyGEtqlGgAoCgWDgwIEzZszYt2+f/mREkIZJSEgghPTr14/hTCXQxFigNgXYsLCVkZHR06dPd+zY0cxSI+2L7OzsQ4cObdq0ial9wetoz+7bt2/z5s0FBQX6kQ9B6gVs2MuXL2/evJmptWFVVKcauHc5WLICgeDixYs+Pj5Pnz5tRrmRdgnMix0+fDitjKmLPevu7g55F/UnIILUgebpsLa25k6EZTg1shqCa01Qvbxq1arZs2djwW2kOSCEXLx4kZtSQ8cstBs3bvTz88P0b0gzkpeX99dffy1YsIDhpD1mOCHcjcKdd7B48eJPP/101apVzSgx0r7Jysry9/d/8uSJm5ub1rk36TitRCKJjY3dsGGDXmV89cE6E5oCRT0dHR179+5NS91BRwxqZ9FyhPXC5/OhJBfUC5k1a5a5uTnLsr/99psBDwJpdzx58uTOnTvDhw8fOHCgFnMKaAFHYPjw4QMGDPjkk08GDhyoVzERhGFKSkoIIZ988glTX01mzRMXCAQCLy8vQsi5c+eaQ04EUSE1NXXt2rX79+/XS3bjyMjIbdu26U+6Vx+d6qO0KzIzM1NTU4OCgugSWrSZYRg1NiwFblNCSEBAwPXr18eOHdscciKICq6urvb29gkJCePHj6d6lpu8WP3m3OEEQsj27dulUml6enozSoy0T7Zv3757925Gt7IfLMtOnDjRz89PTR09BGkODhw4kJ+fb2pqytRqTE3GwbjGL9z5YrE4PT09PDy82SR91UBLViOSkpJSUlLAjNW6z8Xn8wkh33zzjZeXl16lQ5DG+fe//33lypUJEyYIBAJCCI/Hg9e8ek8Xt+Q4IYTP51dXV9+6dau0tBStBEQ/gMkZFhaWlJQkkUh0iehmWXb69OmEkOTkZD1KiCCaAHdyRkaGmZkZw8mx2SgqE8aMjIyGDx9OCHnx4gXqWUQPwK0ZGBg4e/ZsXdoRiUTOzs6EkHv37uGtiRgeQkhZWdmFCxfo7FihUKhhXBdNdkx/ZmRkoMsL0Q+EkLS0NEKIRCKBOV1a+2SPHTu2a9cuvC+RFuTBgweEEDc3N0hjyDCMUCjU5JamNZjhc+3atefPn8ebGdEPf/75559//kkna2nXiKen59dff33s2DG9ioYgTYMQsnv37qNHjzKcm7lJTjCYTd6tWzdIR9ccQr5i4MBXIyQlJT169OjQoUMMw/B4PIVCoZ2eXblypYmJycSJE/UtIII0AZZlzczMQkNDPTw8YFCLjoCpAbwK4MatqqpiWTYlJeXBgwePHz82hNDIq81ff/2VlJQEjn+41ZqkZFmWFYlEY8eO/emnn7gxtgjSggQEBISGhupY+vOrr75at25dcXGxvqRC2ilLliyBZAUATRevfitayQ5+pqen79y5s9lkRJCmkZqaSgj56quvGG1DEsHUKC4uvnXrln5lQ9oXMTExkyZNcnR0pIMDmpixtBozj8cTiUSjR49esmQJzpBBWg+EkMjIyDt37ujYzv79+/39/fUiEtJOOXHiRExMDMOxTDWs/clw4l1CQ0NPnjzZfEIiSFOB6Ks1a9Z4e3sz2qZA5PP5Y8eOXbFiBcYYINrj4+Ozdu1aqlg1zzBPu2D29vaEEKyNiLQqQMn+/fffBw4c0G4gF7aytrYmhGAvTT0YXdAgycnJmZmZUGYZggQhI4wm72164w4fPnzNmjUuLi7NKyuCNAWwG+zt7SdMmGBsbKxFCwqFQigUFhUVhYeHFxUVoTGLaMM///yTnJwskUi02xyM2QMHDmDNeqR1Ul5evnDhwtGjR+vSyLx583Dql3rQkm2QjIyMsLCwyspKgUDALZHUqLsAJoYplUqhUDhhwoTXXnvNANIiSFMxMzOzt7f/4IMPdGkkKCjol19+KSkp0ZdUSDvi22+/nT59ui4teHt7z549u7y8XF8iIYh+CQ8Pf/jwIXznTgBrUi7E5ORkDORSA1qy9ZOXlyeTySIjI7XbHCzf9957z9raGpIeIUgrxN7e3t7e3sLCgltmpu6XeqFKOTY2Njc3t1nlbNOgkq2fFy9ebNiw4cmTJ9ptDoUSPv7443feeUevciGIPjExMfn999+9vb2pkqXWa6NmLIwDK5XKe/fuPXjwoLlFbbugkq2fkpKSwsJCLdz59Na0sLDo16+fm5ubvkVDEL3h4ODg5OQ0duxYpVLJVbIajmXBKEVkZKRMJsOxL6RpnDhxIjAwUOsU3VBmZtWqVXjnIa2cBw8eJCYmcmPA69YBqxc6DmxhYUEIwbGvhtApQ8QrTEpKCqNZSGy9EEI+/PBDmUymSyUFBDEAzs7OHTt2dHNzS0hIgCU8Ho9bdaYhYB1CiFQqxek2akAlWz+ZmZma3Gd1EQqFNTU1LMsOHjy4srJS74IhiH7p2LHjunXr3nrrrYSEBLAqqN+g0UdAIBDI5XKBQJCeng6Ri0hd0CdbP/n5+Xl5eVrYoTU1NQzDmJqaOjs7d+rUqRlEQxB9wrKssbFx7969qXMAdKsmiRBhgLempkYqlebl5TWrnG0XVLL1U1JSIpVKtXYXeHp6fvfddxYWFvqVCkGag169evXu3Zup9cmKxWKm1lxoFFDNubm56JNtCHQX1E9paanWpb8ZhnF1da2urkaHrF6grzo8n82Era1tx44dqZegqqpKk624obXl5eXaudfaA6hk60fHsvLe3t54zzWVwsLC8vLy4uLilJSU5OTk9PT09PT03Nzc8ePHnz59esSIEQzDsCzL5/ONjIw6dOhgZmZmbm5ubm5uYWHRqVMnZ2fnHj16vP766507d+7QoQODSlljOnbsOGfOHBsbm4KCAlqNhqtD1QDrYH0ENaCSrR+pVKqLlvTw8IBQbUQ90dHRSUlJqampN2/enDVr1u7du8vLyxUKBYy68Hi8mpqaiIgIsVgsk8mY2vhNOq4NvQ2FQlFTU8Pn82tqaoRCIWhYPz+/U6dOubq6duvWDSfdqadLly6DBg1yd3cvLCxUKpU04Zx6uD0MHXt+rzaoZOuBEPLuu++GhYVp3UK3bt2qq6v1KJKG0Ps+MzOztLS0oqKirKxMqVTa29ubmJi4uLhAqVHA8IYeiFdVVfXkyZP4+Pjg4ODly5evWrUqOTm5qqrq4cOHNjY2DMOIRCJQqTD2AqMrfD6f2lZyubywsDA/P59hGB6PR0OOeDyeXC43Nzfv3r17//79O3Xq1K1btyVLlixdunTkyJFdu3Z1dXVtWfMW5H/+/HlRUVFWVtbz58+FQqGdnR1cICMjo5YSz8nJSSAQQKlQ+CSEaGLMEkL4fP6LFy+w39AQ+PKph8rKypCQEK1NUQjPtrOz069UmlBaWsowzNGjR9esWWNpaalQKCCMrLy83MHBwc/Pj2EYGtJosIkSpBYYG/nrr7/c3NwEAoFMJrt9+7aXl9fPP/985cqVrKwsWJ8OucjlcnoVFAoF/FQoFDKZjPYzlEqlXC5XKpXwhWEYqVR69+7dHTt2TJgwwdra+v79+3w+nxDi6uq6f//+O3fu6OgL0vokpKWlQTYMExMTELWyshJ890Kh0MjIKDw8PD4+vkUmsNja2lpaWoI1KpfL4YvmklRXV2voyUUQhmGYsrKywsJCrd/MEomEEGJIS5YQ8uTJkyNHjmzdujUlJcXX19fDw4OptfIggFEoFHp7e2/dujU3N/fUqVOEkMzMTAPIlpeX9+TJE0LIvn37oLTU559/DnV/BQJB3ZMMNX5UFoIrls/n1+2T8ng8yEVZ7/XiJpSyt7f/+eef09LSCCF+fn4XL140jEYjhNy4cQPO+bVr16ZPn25lZUUPBKZaSSSSSZMmnTlzhhDi7+8fGBgYHx/f3IJxWb169apVq7SrX8uy7Pvvv7948WKc34hoSm5uri5ZhWxtbQ2TxphaiA8ePCCEnDx58t133wWHAJRyoGvCd6FQyLKskZHRl19+efv27d27d+/bt6/5ZCstLY2IiNi2bVteXt7u3bs///xzOzs7qlyoTmw+Xx7dBfdU8Hi8Pn36zJs37+zZs4SQ8+fPJyYmNt/FIoTcvHmTEOLj49O3b9+68oAbhArctWvXJUuWxMfH+/j4BAcHN5NUddm1a9fevXtBMFC1mihceu1Gck+APgAAIABJREFUjx6NqbuRJvDs2TNdrDx4TgymZME0mz17tkr+JPXKi2XZffv2LV26lKYT1Zc8hJCCgoL79+9D9acFCxaYm5szmj20zYrK+REKhU5OThcvXiSEBAUF3b59W+9D5ISQW7duEUI++ugjWouz0fPA4/HEYnFwcPDmzZsNVj7r6NGjx48fZ5qSTBY0MvQ8hg4dOnfuXFSyiKakpqYmJSVpvXnPnj0NZsk+e/aMELJixQp4dMViseaGoUgkevjw4e7du6kzVHd5CCGPHz8mhMTFxU2dOhXMapFIpF21Pv1SN+8JRN17eHgcPHiwuLh4z549Z86c0dfuCCExMTGEkE8++QSW0JOg5mxQzWVnZ5eenn7w4EHDeHVOnToVFBTEcJRso1BdzLLs22+//fbbbzeviMirRGJiYkpKitY+WW9vb8Mo2dTUVELI+vXr4Sd38nijlXLgYba3t8/Kytq2bZsuYlADViqVRkZGFhYWfvfdd7BrarUJhcIWn9vOdYNSNQfeYR6P5+XldebMmTVr1oBjVMd9gTlPCFm8eDHDMDC0xefzBQJBo+eBXjUXF5fMzMwLFy4Y4F76+++/tX7B8Hi8QYMGzZkzBy1ZRFOSkpKePn2qtZL19PRsbiUL7UdERISGhoKagGeY4ajaekeQuIAdN2zYsLlz5/r7++soTEpKCoy/gecRpGpVcE8I9yXEtf2nT59OCLly5Qo4YbTeF5yTsLAwrpdTczmZWgf6kCFDwOegtSQacvLkSa6SbdLND0oWfbJIE0hOTtYldVvXrl0nTpxoACVLCOnWrRt3Ocuy8DzDcLyGrfn7+2/YsEG7BB85OTkPHjz4+++/CSFLly5l6viCYQiuxYMo6+0Fc5fw+Xwoju3l5XX9+nVCyPHjx5OTk7XQHYQQyGjVrVs37n65kR7qW4CLCJbvxo0b9+zZEx0d3SQZmkpAQMDhw4e5HgDNtwV3ASpZpAlkZmampaVpvbmVldWHH37YrDdcbm4uIeSzzz6Dn/A0cp+NRh9jrip0dHTMy8traulyQkhWVlZQUFBOTs6aNWtUaqerhDcwzRlFoAncvXM1iIq9zx0uDwkJ2bt3rxa6A2pqzJ49u95dNIrKysbGxtHR0fAaa5IYTWLbtm1+fn7csawmbT5y5EhUskgTKCkp0SWlkEgkIoRUVFToUSQuhJAbN25cvnyZqRNqqtL/BYeAesDmnTZt2n//+98myVBUVEQIuXv3rkQiAZ1Od8cdx+f6DVrcnmVqY4dZllXxHqicRlA3Y8eOJYRER0c3SX1ERkY+ffoU7GKGc1rgumjiOhCLxdxRsuHDhxNCKisrm0+LrVixYsWKFZrEpagAK7///vuoZJEmoPvdnJeXl52drS95VIC7mZqxVDtQRwGjdvyawl1HKBROnTpVw6OG2CxCyJ07d6ytrbl/UW1FtT93iSaNNyvc6Qx1NT63BAv98t577xFCrl69qnlp94CAgHXr1qm0pvnLhv7LfWllZWU1qxabPXv2nDlzNBGPAmcSDhO6bqhk6wWn1daDsbHxqFGjtB66YVk2IyNDX3FRdZFKpQzDnD9/HuxHemfDTE34qcmcYKVSST0Mpqamhw4d0lCA69evOzs7Hz58eNiwYUVFRSptktr0AnQJNwWBGrjmpIorkxt9Va/52WgPl/5L5+PWXR9OGldT8Pn84ODgMWPG9O/f/8yZM1CUqFGys7NFIpFKa5CNAVCvjOi/dNIgIeTw4cOnTp3SZO/akZ2dTe9YQogmehYy+MD5NDExWbVqVfOJ16ZpeeOiFcKyrJmZGU1T0tRtafhqc8jGMEx2dnZGRsbLly/pELkW++JuxefzlUrl3Llzt2zZon4rGA6Kjo6+fv36ypUr1axJHz+WZWtqagQCAeQc4S4HAcAUUigUdHmnTp28vLz69+/frVs3Ozs7ExMTMzMzKysrhmEkEgmfz6+uri4pKXnx4kVpaWlJSUlOTk58fPydO3fi4uK4l4x7jIQQqJUCe6S7U38ICoWCz+eHhIS4u7uHh4dfvHgxIiLiX//6l/oNIR+YdvdPQ4SGhhYXF3/66af6alCFjIwM+AKvK3hDNHpr0UtmZGSUkZHRGtxBrRC0ZOvH3Nxcu/x4cFPqOJ1BPUlJScnJyUytKaqdNuduRQhRKpWNatjU1NSgoKB///vfN2/eXL16tfqxNXj8hEIhtazhC5g/XAEg50v//v1nzJhx7NixpKSk7OxsLy8vmUwml8tBLbIsK5PJQDnCQlDWhBDIc+ji4vLo0aPq6uqIiIgNGzaMGDECSqgyHK+IXC5nWVYsFoPqbHRsUKFQCAQCOMl5eXn/+te/3njjjfv374eGhqo/5xCoIJPJ9DjWd/PmzQ0bNrx48UJfDXKJj4+3tbV99uwZU9sXYWsLg2uyOY/Hs7CwwDogDYGWbP1A/gEYxNdi85iYGA2rd2hBVlYWZFzVvSko+6hUKhsdIiOE/P3333379vX09IyLi4McWmoSj0LL3JNAV6aSe3h4/Otf/xo0aNDw4cOdnJy2bt0qk8lkMllJSYmPj0+TDpDUpo4mhMjl8n79+l29ejUiIuL69evXrl2LioqSSqU1NTWEEBAJNLuaBkGJw7sBGi8pKRkxYsTChQuHDx8eERGhZlsIcWU4rgndqaysLCwsbNTloh0ZGRnbtm3r2bMnHDWklKWen0ZhWdbW1hbN2IZAJVs/nTt3ZhhGi3n9YFreunVr0KBBUqkUpu3rl6KiIkj6SWrTV2sNaByBQGBsbDxlypSjR482tObJkycnTJjg7e0NKbVkMhntfatpmWEYiUQCA4nwEIpEIqVSuXjx4u+//97R0dHX15fH4z1//lwqlf74449aP6gqGxJCoN4wIeSNN964cuXKqVOn/P39r169Com9oaKwGiVC84IzDCMQCMBHoVAofHx8zM3NTUxMHj9+DKnO6mJubl5RUWFkZKTH7H8CgSAtLa2ZpniAAwp0K327aL45IcTBwQGVbEOgkq0fJycn7TaERzc9PT06Opr6ufRLVVUVZFbV8bbmukft7OyKi4vrbRDG1h8/fjxp0qRHjx4xtcfYqFUlFourq6srKyvBOymXy4VC4YQJEzZv3nzs2LHs7GwzM7P58+c3x8PJbZMQAr5aV1fX77777pdffomJiYHBtEYPAV4k1GsBVt7ixYujoqJu376dmprq6upadytHR0dCiH7zq8rlcqlUqhKMrBcIIVu2bElMTISDBZ9skzpwhJAuXbpgaEFDoE+2fhwcHLTTs9S0vHXrFji59I6KP1EX6w+2VSgUH3zwwdChQ+td7cmTJyNHjiwoKIDRbXgCNdlpdXU1WF4ymUwsFk+ZMiU2NrZ3796XLl2aOHHim2++aW5ubgDzh2XZXr16TZkyZcyYMSUlJVFRUadOnfL29pbL5WqiykAwqoWFQiHXwfrhhx+OHDkS8r/U3dbGxsbT01MluE13LCwsNAl81oK5c+c+evSIujg0vL5cnJycOnXq1ByyIa8shw8f9vf311oF8Hi8hQsXzp8/X79SARs3bly7di0NbNJ9dIXH4yUlJd25c6fuX5GRkQcOHDh27JhK4C2dv9sQEO3PMAyfz/f09ExKSlq7du2ePXsMnItaBbBqL126RAjZvn17o3qwbppwekv069ePEFJvWFVBQcGGDRu+/vprfYkNpKamNkffKDs7mxBC06jXzVXWKHw+v7Cw0DDZwpBXh7CwMKgUQqGRmI3G+cPd2adPn6+++urp06d6l+3UqVOBgYEqL4C6P7kPCSjEhh4bmNdUN5tqamqqn59fZGRkUw0oeq54PN60adMKCwuPHj3afOEWTYUQEhkZefr06Tt37nTp0gUW0nQBDEd+lbOqkoThiy++2Lx5c3BwcF17dseOHXD/0LuFdj40zClBV4MOB5Tb0GUiYkOopIbRAldX1ylTphQWFupLJKRdkJGRkZ6eDg8VTXCleaITPp8vEomePn2qZihJa8LDw5OTk2HWJhggtONfN2MAUyePAbVAYWUejxcZGVlvfr9du3alpqZCcUP1cOcLgEbm8Xiff/75nTt31q5de+TIkVb4BGZmZkLkwK5du8A1VHdYqd50EPACg3wRP/74I1jHKhtGRkb6+Ph8++23cIa5qdGaJCRV9/Pnz9+xY4fe/Z4FBQXLly+nswe1QCQSTZ48eerUqXqU6hUDfbL1Y2pq6uzs7OzsDEE/NLST1Jakb2hDWFOpVMpksj/++CM2Nlbvsjk4OJw7d2769OkQ588VrN5gA1iHWqPgZ4QIUIVCsXDhwtu3b9vb26scVGxsbH5+/vz581XmdKnAdeTBLqqrq+3s7C5cuODo6BgZGTly5MjPP/9cE01tYBwdHRmGSUlJsbS0jIqKGj9+PMwd4JbqgRMLqcchIEEgEJBa5HL5tm3bTp8+HRUVpdL4wIEDu3XrtnHjRolEolQq4RLQt3WjwBuUZVk4sRKJZObMmZaWlnp3YRcUFMyZM+fChQtatyCXy0eNGjVkyBA9SoW0CwghK1eu/PTTT+msqnpnfKpBIBB07dr1yy+/1CWhV0OcPHmyuLiYO12ibsormpaU4RhQXKebQCBwcXEhhFy5ckWlfULIyZMn6RtCvfuV29EWCoWQCHzLli2GLFGlC8XFxdeuXSP1pWqkbybuGRCJRNz836NGjZozZ05oaKhKs2VlZX/99VdAQACoZk3KItQFLt/cuXP9/PwSExObfGyNERISEhoaqoXu5m6SmJj4zz//6FUupH2wffv2rVu30kQn9LPRHh9dQSgUpqWlNcf9V1xcvGHDhoCAAG7fv6H5/mxtTiluh5dhGD6fHx4e/ueff9bthMK4eb9+/bgKpV64fmqQ4dq1a9u3b2++1A3NAaktFfPFF1/AWQLrleEkNlNJ+MJVu6GhoQEBAXVPI6TvmjBhAvyEsBD1Spa2T8+8q6srIaSZ3lirV6/+7bffdGnBxsbm448/bo4XAPLqc/78eTpsRTUsfeQa2or7hmdZdu/evUFBQc0RQhgQELBixYrJkydz91g3y1RdVduhQwf4uXjx4t9//z08PFyl5ezs7CNHjhw9elST0HeugS8UCoOCgpYuXXrt2jVdD8/gEEJu3rxZXl7ev39/7jghy8nWyO0EMJy0Zx4eHoQQSD6p0mZERAQhxM3Njate1ViOKn9JJJKYmJh//vmnOW6h+Pj42bNnv/POO7o0Mn78+ClTpuhLJKR98fTp02+//dbLy4vhWGrwV6OF8JjaJxCSGTfHoDDDMCdPniSELF++nFtBS0XLM7XvBpUXw+zZs8vKys6fP1+32X379mVnZ5uamsLPRi132LW9vf2dO3eWL18O9fjaIuXl5RAqMHXqVLiONLAJVuC+t+jcWVhzwYIFmzdvvnfvnkqbhJCjR49GR0d37doVNqQ2ckNQq3nAgAFQlVK7ohWNsnPnzvj4+HoHSzUBDv/YsWOBgYH6Fg1pN6xevXrjxo1MnVz66rfiGo88Hi8lJeXq1avNIR4hJDQ0dPfu3Wlpafb29jTSoN5nhgbVOjg4hISErFmz5uTJk2VlZSqrPXjwYOXKlVBgVXNL1tHRMSMjY+fOnfUG27YhCCFBQUGLFy9es2YNXVi3+0L7NNy3171793x9feu2GR0dfeTIEULIlClTNM/bDel9w8PD8/Pzm8OMzcrKWrdu3WeffaZ1IWEejycWiwkhjx8/1q9sSDsiKCgIBo65+bA1geu/mzp16rp165ovSjQtLc3f3z8lJeWDDz6gVgmPx1N5kmHJV199VV5evmvXrpCQkHpb27Rp04MHD5j/rbmg4ojk+g2hNx0dHb13795mmkZseNasWTNu3LjZs2fDwJeG1/3jjz/+5Zdf6o2MhoHEFStWBAQE1JvxgOtbd3R03LJlC0TaNt9c1ePHj2dlZdHyDQ1R77HTV8uYMWOWLVuGE2oR7YmKipo8ebLK/PRGB4K48eegg5KSkvbv3998cqakpPj5+a1cuTIxMXH9+vUfffQRxCdBR14kEpmZmc2cOTMuLu7QoUPHjh1rKMm/VCpdvXr1uHHj6BJucIJKsDA1nI8ePbpixYrmrvRnYGbPnj19+vS33nqL0fgVy+Pxnj59+ueffza0QkBAwNatW3Nyci5dujRixAhIHiQUCqF9d3f3uXPnggf/+PHjNCyvOYiLi9u4ceO8efMYDco0UHdT3TUPHz78xx9/NJOQrwyYOKcRFi1apFAoNm3apFQqIdEJq0H6DBotC0lYvvrqKzc3t/fff9/b27v5RE1MTHz69GlaWlpYWJhQKNy7d29JSQnLskZGRvPmzfvXv/71ww8/FBYW2traNtRCSEjIwIEDLS0thUIhpOWHhFXwL81VSL+IRKL+/fv36tVr2LBh+hr9ABd2WVlZaWmpQCCwtbU1NTU1MTGhTzg9+WlpaRUVFZArx9ra2sTExMbGRo+RpJs2bfrss8969epVXl7OapZfdfbs2W5ubpMnT3ZwcKh3hZycnPz8/Ojo6OTk5Dlz5sjl8uLiYlNTUxcXl5kzZ4rF4tGjR7u6urq7u8P6eg+MZRiGEBISEuLk5NSnTx+lUglpdtUcGijZukpfIpHk5uYmJCQMGDBA70Ii7YhDhw5FR0dTg06TEC7a9aP1n42NjR8+fHjw4MFmGgGrS1lZWW5ublZW1rNnzzIzMyExrnrjqLi4eP/+/eCLVLHdVILYYCFYspcvX4bwUt3Jy8v766+/oEBsUlLStWvX7t+/D5IfOHDg+PHj4HIpKSkhhOzcuXPixImpqam3bt26detWXFwcuFPv3bunLwMwMzNz06ZNM2bM0HCalpGRkZmZWU5OTkOuGC55eXk5/6+9M42L4soaflVvLAIisikoKgoyKrgzJjFPdEZNjFGTmJkYiXGbGGc0+hgnmzGM0dHRIS5xQeMeN9RoRERFcdeAoMRdZFOhhYaWXdl6uc+H83LfSiPVRXUXtHD+H/x1t1XF6e7bp849a27ugwcP0tPT1Wo1vCmLRRbEtWvXCCF/+ctf4KlZz7uJoqcm7bvvvrt48WIYhoQg4rlx48ZXX3311ltv0VCyWeOC6wylBwcFBRUVFZ0+fdpmHVipqamFhYUeHh51q+zrFmLAg8mTJy9ZsqRu6pIICCGHDx/WaDQff/wxFLnSPxoQEPD111+np6dv3Lhx9+7du3fvzszMnDlzZps2bbgxxq5du0ZGRkJfAmt9yLt27crJyXFwcOBv/sBlxYoVS5Ysscpfl4KbN29u2bJl06ZNNJonxF1An9L8a7lcfvHixf/+979SC4y0CH755ZeLFy+y5vpOAXVz1+lZMDZZRCPwxuHMmTOXLl1ifm+wm/wC4b2AFvbw8ADNaJW/fu7cOUIIbJNpIgS3MY2Dg8O6deuKioo+/fRTehswscLkcjkE5bOysqwiVU5OztatW1esWMEI8MXDvx07dpwyZYrAkYuNDHh7b968CX1pWU6nNLPnmmjbYcOGzZ49++LFi9JJi7QgYCpiSEgIZDgKd5PRFsv0/r9169Y9e/YIHy7dmKxYsWLZsmU8k6+4aaFyuXzVqlVRUVFWsRkJIbt37164cCG3Yg0ecG9sUDFVV9lBrxaqKU6fPm3FXF2oJoAglcBuZJmZmSYt3GwEyLoNCQlpUEoiPYyepVQqjxw5snfvXkmkRFoghJAjR45AesBz7bu60B88mFq0qtXJyamsrOy5JQBNzocffjhx4kSG8x5NMkMZzi+tTZs2hJCEhASr/OmCggJCCLeJDPevc50VQjTCmDFjli9fbi2PASFk06ZNCxcuNGvu0fvBsWPHbPArJoQcPXp0//79TB33Og9128uqVCoYUtm0rYGR5kZKSgohhPZ4FhHzpZrriy++WLdu3cOHD60roYUQQqZPn967d+/6DjDJvZ89e/YPP/xgLUX24MED2i2wbnIujzzM79PL4DGMQrGi7/uXX37JzMw0W6lFpVq2bBnUsNgUUJsbFBTEjeIygi1Z7h1u6tSpy5Yts9nogq2BrQ4F0adPn+XLl7/66quQ0i9ieVEltX79+jfffDM2NjYpKUkCSUWi0Wg2bNjAMy+HECKXy0nt6MYPPvjA0dHRiglG5eXl0HiBthYU8iHLaseUcTs9VlRUTJkyxVqCMQwTHBy8bt26l19+2aw+AjEyMjLu3LljRQEsBPoq3L9/f/78+enp6dC6Ez5qRoDFAEoZvnpwy4wdO7Z79+5SpJchLReI8Jw7dw6eiqtEpB49Ly+vpKSkxYsX1+0x2FSkpKTUbYpaH7169QoLC7Oi21GtVhNCYEIw3XQLCTMCUHhGb2Pjxo2bPn26tWQDNm3atHPnToEHDxw4EKoYbAFCCAQV582bR1/kLuAGTWqQy+UDBgwghNy/f9/qoiItGth+rlmzZuzYsZZch3YVsbe3P3Xq1H//+18bcWzt3Llz8+bNQo5kWXbBggVffPGFFf86IeSXX37ZtWsXPKW9xIR0O6NBRdq3JSUlZfXq1VYUj2GYhIQErVYrcFism5vbO++8Ywu7aUJIUlISIeRPf/oTvMKtlmaEOb5YlrWzs6Nhz5SUlAMHDtjCu0OaFaBkY2Njb9y4IZPJhLjn6sItUVUoFK1bt05NTf3pp59sIZ176dKl4eHh/EYNNS1PnTpl9cAOtF6Fil4h2XImHXJpu6zFixfPnTvX6nlyWq32448/Dg0Nre8Ak+icpEWxwoHUCHCemHyk3PpvflVLb3UODg6jRo0KDw+32TRE2wR9soKA3aivr+/x48enTJlSVVUl4iLc+kW9Xl9WVjZs2LAxY8bcuXOnyX+QpaWlOp0OimXrA/6XZdmgoCDY2luR4ODgy5cvHz58eNiwYUw9c3TqCkOByTEzZ86srq52c3Ozevmyh4eHQqEYMGBAfQfQb5C6raEuuQnRaDT3799fuXLl7t27GYbR6/Xc3BhCCP0M+ZcfFJTL5XK9Xr927VovLy9Jq8ORls6lS5e0Wi3ttSoOe3t7MMHkcvm0adMIIU1uzM6aNWvOnDk8B1Bzpn379qNHj5Zi8AEh5Pz584SQUaNGMebKPU2mucjl8gkTJkg3QYBhmA0bNgj3qGi12uLiYokkEcjJkyc1Gg2dawkvckdm1H1aF26J47x589avX29riTFIc+PZs2eEkB9++EHc6SbrGx6o1eomzzSYOnXqxIkT+TfpoM5eeeWVl156SSIxoCph5syZn3zyidlQPncMxEcffVRQUAA6WiLZTp06RSOfz4Xb2zsnJycnJ0ciSQQSEREBmWR1C0wEZhzTgxmGad++/XOnPyBmQXdBw3B0dLxy5Up+fn5YWBjz+/7cQk7n7oLp440bN9adAdPIgK9AiLugY8eO0o2eZVl2woQJer2+qqrq6NGjNFxTnzxGo3HMmDE3b94MDAw8efJkUFCQdHlF7u7uPA3MmFp3EHiEqqqq+D9MqXn48GF6ejo4CmgfNQr1aZgF/MsuLi4///zz9u3bhw8fbn1ZmztCs2QQAH7DBw8eNBqNPXv2vHPnDgQQ9Ho9bQDYUBISEniKWRsHhUIhMP+XECI8uUocGzZsOHbsWFlZWXx8PI/SZFnW39+fYZgzZ86MGjUqODhYUqmEWH/wAUJotGn97Hl5eV999RXMvCGEQOkBTINvEEajkWXZjRs3njhx4vXXX8fcWBGgkhXDO++8884773z44Yd9+vSprq6GtWswGIS0mq1LamrqkCFDCCFNuIKf2xPguRQWFta1jKzOyJEjS0tLJ0+ezHMMISQgIECj0fB7k61FSUmJwLuLTCZTKpVNq2Sh1yXc+OntX8T6VCqVffv2jYuLGzFihHRuouYNugtEUlZWdv369bfffpthGJVKBT8/cZVger3+p59+sr6IDYHbYKU+4B6QlZXl7u4u0Wg/Lnl5edxBW8+lsLAwKCioEfKlwAPAH/OhdynQa2Ynu0hKXl5efn4+3PjpiyI+JZ1ON3PmzMGDB48fP96qArYgUMmKgWVZFxeX8ePHQ0cVQggYsyJMURtJqLS3tzfpZVcXkPPhw4dr1qxpHCXL/1dYlk1KSmo0T8uIESP4K0fg84HiY3d3d3HJ1FaEFhxbssB8fHzCwsICAgKsJ1eLA90FItFoNAcOHPj111+pK1Ocr4BhGEdHxylTpmzdutXaMjYADw+Pmpoas/LLZDK9Xn/jxo1G6NZ47do1fg8GOFg++uijhIQEqctYq6qqVq5cyR9bp/0TYE8gsC+iRLRr166ystIkTiBiiT5+/Hjfvn3QdA0dsuJAS1Yk27ZtGzx48L59+/R6vdkpSTywLBsSElJSUtK0K9jPzy8wMFDgwVFRUY3QdSEhIYFnlDooMkLI1atXU1JSpP70bt++/fe//z05OdnskYQQb2/vcePGSSqPWdzc3AYOHAgtXSDwBSa2iEtFRkYOHz7cWn3QWyCoZMVw8OBBjUYze/Zs2GLThkYiIIT079+fp16zcfjDH/5gMpTXBNBiYKbFxcUVFhbevHlTOnmgF9dzx2sDNJJz//79RhhDcPfuXSFlDvApeXl5qdXqpr1r+vj4fPvttyEhIXq9HhK2TPyzwjl//nx8fLxttiF/IUAlK4aEhIT/+Z//uXDhgtFohBUsvC8X9SHSRqhDhw6FqVZNiLu7e//+/bnp/SYpwLT9KCEkNzc3PDz86tWrkoq0a9cubuvFun2mYfdQVlb27NkzSSVRq9X37t2DnFMe6CcWGBjYqVMnSUUyi6+vb/v27SHRmH6Dok2BBQsWJCcnS3pbbcagkm0wp0+ffvbsGcx9or95g8FgtjwRHuh0OpoJJJPJgoODDxw40LlzZylFNk/79u1hbjlES7g9ruCXCXYQJAWzLLthwwYofpNOpA8//BDcmtzMDfAMUnUvl8s9PDzc3NykE4NhmJSUlJkzZ54+fZrnVgqdbUG8Ll262EKkKCAg4KOPPmI4uxBx15GFTrE/AAAgAElEQVTL5UlJSZMnT8aJXuJAJdtgTp8+PW7cuMuXL3PTvJnatO36zqLxB8jZgiOVSuXGjRudnJxsIQOxW7dudPqTifak74sQotPpWJbdu3fvzJkzrTgX1gSWZb28vKCsju5zoVEkhMtB3xkMhuDgYJ6BDpZz5cqV9PT0LVu2VFZW8hSbgApTqVSEkO7du4eEhEgnkkB69+595MiRcePGUfUqzl0AlXVLlixRq9XStYZAkP9HdHT0jBkzQkNDqW4V6Cig1qtcLodTPD09T5w4sWjRoiZvXMDUJvqsW7eOqRWVm9HF9SHQNxIWFkYISU9Pl0ikqKiogoICbsMnKg91uYSGhhYUFMCQXSnQaDTbtm27cuUKty94fVCHhkajuXz5skQiNYht27YVFBT89a9/tfA6MplMpVIdP36c2/kbQSRh3rx50dHRzO9HtzLCai5ZlgXtwLKso6NjampqRETEiRMnJBZZEKAuQWPSN8K9f3CHlTIMY29vr1Aojh8/fvjw4cLCQilEKigoOHToUElJyciRI03UPTydNGkSNPktKCiQQgCGYZKSkjQaTa9evRhhd1OZTNanT5+ZM2c2Qh6xEAoKCmAsQlhYGH9Xs/rgful9+/adMWPGmTNnrCdgiwAT3xrArVu3Nm/enJiYeO3aNejOCRsxyEbkz+KCY0BHGI3GqKio9PT09957r3v37o33BngpLCx0c3Pr3Lnzw4cP4a3BO+LmWsIrKpUK+rd26NDh+vXr169f5+/kIpqSkpJr164NHTo0Li4uOTm5qqqqurq6urra0dHx9ddfT0xM7N69+9ixY6WI48NXeeTIEb1e/+6778KLQtpTrF+/Xq/Xf/rpp1YXSRyEkCtXroSGhvbr1++3336z0L1z5syZp0+fvvXWW5gzKxz0yTaAGzduTJs2LTk5Wa/Xc8vYn+vHNMFgMDg4ONAphLdu3erWrZvtaFiGYdzc3LZt2zZp0iSGUyxkcueAV6iT9MmTJ9u3b3/48GFubq4UIrm6ug4dOjQjI0OlUrVu3RpeVCqV7u7uGRkZf/zjH99++21Jf+2JiYmLFi1iap0nPBqWDrwYP368pD7ihsKybGho6KFDh3bt2iWusw/t2CuTyTZt2vTWW2+Vl5dbW0wEYRhCSGRk5Oeff8783jkIj4XU/kODZBcXF61We/78eakFFsGhQ4cyMjK4bZ5p9g8cQP2S1Dnr6emZm5t7/PhxWygOtiJpaWkrV6787rvvuC+aVeizZ89euXJlk7frrsvdu3c3bNiwdOlSC6+jVCpzc3N/++03q0iFIP8fQkhBQQHUpAvvdsyF/j6nT59OCJE6tVMcGRkZy5YtmzBhQl07vT5kMtlrr70GzbZtJNpjIYSQCxcurFy58tixYyqVik5prO9z4K4H2sLVBrl48SIhxNPTU6FQPPcOygM36Lds2bJdu3Y1s3sq0vRA8P38+fMWtlJVKpW3b98+c+aMza7RHTt2aDQaT09PSIkVeEfp1avX5cuXv/vuu5iYGKkllBRCCCijJUuW0K1JXT0L/8WyLFj9sKGZMWPGqlWrpEu3sBBCyM6dO5cvXw5PaWsFgV8xvGWVStW1a1dCyOPHjyWSE2mhEEK2bt26YMECC68zc+bM5cuX37592ypSSYFGo9m7d+/27dvpb48/Kg35EgqFwsXFJSYmZs6cORs3bmwMQSWgtLT05MmTdMiYyQ0VnoKuqauYQPVYfYivdTl9+nRJSQm3d7BZBwi1YbnpNFevXk1MTJRYWKSFQQj53//938GDB1tyEXt7+8ePH0dFRVlLKomAGHTfvn1pwpnAExUKxcaNGyMiIhITE23WVK8PrVZ74sSJ0tLSV199lanVJgqFgvshcD8KMPPlcjm0NNy/f//GjRtt/F2XlJRERERMmjSJvhEhHgOT9ESFQrFixYo1a9ZIKirS4nj06BFMOmLEls2wLPv222+Hh4fb/j6LEHL27NmrV6/CjhL8BvynKJVKKLe1s7NbvXo1IQQ+MRtXOkytI+jRo0fbtm3TarWjRo2iwUw6yZU6B+AUWgpBXxkxYsS8efP279/fBG+ggWzZsiU9PR2mDXHfHT8mqdOTJk2CYjwEsRqnTp2yvHD7/Pnzhw8ftoo8UvP48WNCyLx586jbUTgsyy5duhSUVyP0xxINSFhZWUkI2bRp08WLF7m1sCZJFIBCoeDeYkEdOzk5QSPzxhReNIWFhREREa+88gpT6wAxG2bgegxA2wYGBk6YMCEvL096eZEWw9y5c2GQlLjUAoZhQkJCCCEvysx6Qsj169cJIdBNSojxDoOtaHSob9++8fHx4eHhERERJ0+ezM/Pl1rmBkEIyc/PBz2bnZ09efJklUoFJircVLj2HRh93A8BlC+8MnHixJUrV75A3ywhZM+ePUwdC/25cBc8HA9jdfLy8mwzDRF5IUlOTn7//fe7du3KWKBkt2zZYvs+Oy6EkB9//DE6OtpszT7ze2uIqieVStW7d++IiIj8/PxNmzadPHnSFopNCSGpqamnT58Gr8i4ceMcHR25nSUYTo5wXc8A8/ta6sDAwLKyMtv3s1OoJ4e2DxbYfIN7GMuymzdvfnEjnIjNcejQoeTkZIGuWG4GIlPr1/P19X3jjTe2bNkioZQSEB0d/fHHH0NCvvCGuQCt0WAYxsXF5fvvv9doNP/85z937tyZkpLSJDcbtVodExOzc+dOQkh0dPSwYcMEnkidsyYtFNq3b69Wq/ft29cIw3isCCFk+/bt33//vSUXef3117/99tsXyGhAbJqIiIjVq1fTp8KNWbod+8c//jFr1ixJhJOY77777ssvv4TR3DTgDntn4eYt2INKpXLUqFFbt24lhERERERHRz969AhcotLJTwgpLS29e/fu5s2bv/zyS7VavWjRoqCgIK5g/G+BGwTjfvUymSwpKWnDhg1qtVo6+SUiOjr6zp07dnZ2wmNfJnh7exNCtFqtBNIhLQxCyDfffDNy5EiGk5TOf0rdDoEXLlzgn8Fnyxw+fJgQMmLEiLpalf/HCV5a7pFyudzOzs7FxWXOnDmxsbHFxcWEkGXLlq1bt+7cuXOPHj0qLCwk9cC9cn0vlpeXFxYWZmRkJCYm7t+/f9GiRWBtqdXq7du3jx07ljZAENI1DRKETbKdmNomaidOnFi4cKEttKkUwZ07d6ZOnUoDfeISZlJTU7G+FrECEB6BCijaaFX46QqFwt3d/QUKedUFSt0IIcOGDYM8LbBkzWpYhhOj5waO4Fw4vXfv3mFhYdDbLCMjgxACZceEkNGjR48ZMwYev/vuux06dOjYsaOfn1+nTp3ef/99Qsj777/v5+fn4+Pj6enp6uo6YsQIQohGo8nOzk5OTj548ODSpUvfe+897iQYuVxO8175zViTOyUN68EVYmNjFyxYYCNtKsXx73//G3rfiDBjgQ0bNqxfv96qQjVPsF+ZGa5du6ZSqWhHUbOd7gDaBVEmk02YMKFnz56ff/75i9sdDsr5X3311QkTJkBgWiAKhQI6lun1enhFpVLpdDowQqFlInxWSqUSOvAzDGNvb+/k5MSyrF6vh27ZkPlvoqlBML1er9PpoAUi/BUYHcjtHwbKEV7nisfTnRL8ITC9Db50kFOhUGzfvv369etDhgx58803G/Ip2haHDx8ODg7mn57JA8uy77zzTkhIyIIFC17chY3YBJGRkZGRkfBYoDeWOu/A8j1+/PjPP/8snYSNAyEE6rggeZZbmvlcINEH4AbBAFqqa1Kzy73mc3f0bC0mL/ILL7xTGhcwt6nNLpfLvb29k5OT58+fv2vXLuHXsU2ysrLCwsJgDry4nBk/Pz9CyNOnT60tWnMD+8maISkp6dKlS/AzExiioWYsIUShUAwaNAiW8gsNtCU9efKkk5NTREQE/0AzhmEqKyvBfmRqPzdqzLIsW1NTA/8Fzb+Z2vYrYIHCK4SQurP/qDeWq2q534uJCqYGL1iy1CY1W05KDVj6t/r06ZOYmJicnDx27NhmUO/UpUsXJycnSLEQN2MxNzdXq9U+efLE2qI1N1DJmuHGjRupqamkzqhUHkCbyOVyo9Ho5eX1t7/9rcknflsFlmVHjBjh7OycnZ0dHx/v4+PDYxjCXttgMIAxyNSZMW4wGLg+bhj1KrwSt74jTV6nj6l6pWNlGV7lAseDkAaD4W9/+1tycvKNGzdGjhw5YMAAIRLaPoMHD3755ZdFb/Z1Ol1KSorNdh2zHVDJ8pGZmenh4XHv3j06ZoaaUWbPJYTIZLIePXoUFRW5urpKL2wj8dlnn40dOzY1NTUpKWn06NHwooka5TpPqUaj+o6qNrgbNU6uJVXo9K/ztIilwADB6OjoTp06xcTEjB49mhtGe9Hp06fPgAEDLPGopqam2nJLORsBlSwf+fn569ev1+l08JSqA369APYd2HFdunSxqRkzVmHIkCFhYWF37twZNGjQN998A/cerv4yGo0QI4Kn4Hht2sR1UOjcuCXX5oVMA27SKPzbunXr+Pj4lJSUnj17jh49uplFeLy8vPz9/S2xAO7du3fr1i0ritQsQSXLR35+/s2bN7lKVoi7gOvp69WrVzNwyNbFyclp6NCh/fr1Kyoqio+PnzJlipOTE/wXtWqpT5M6XpsWblaZSZksfMWkdoKZUqns27fvqlWrioqK7t69O3z4cGqzNyfc3Nz+/ve/i04wYBgGhqVj3Rc/qGT5uHPnDuyGnhtjqQ/4xUJwvGvXrt26dZNUyCZk6NCh77333o0bN7p166ZWq2fPnu3s7AwfEUSxaBcruVxu4VAJy6FBMIbzPULqGDxQKBSEkD/96U9Hjx7t0aOHSqVKTEycOnXqSy+91IRiSwfLsuXl5T179hR9hbS0tMjIyBerqrjxaeJ1b+OkpaVxYyOgOIToWZpl2bFjR4GptS8WJuZ8aWnp2bNnAwIC0tLS5syZs3//fm4eK1PrmeUmzDY+EMWC3Nuamhr4jug2RafTOTo6/vjjjwkJCZcvXx4/fvyIESOaStRGo1OnTpbc/CoqKtRqdRN+py8EqGT5yMrKggcm2UVmoYrYy8urJSQSQrlqXl7eiRMnevToceXKldWrV0dHRz99+tTe3r6qqgqiTE34awTFSjU+14PMMMwrr7wyZcqUyZMnr1ixYtCgQdCroSXQvn17cflblNTU1GbmqrY66C7gQ61Wc8thBfqeqBHn6uoaFhZGnZXNnnbt2k2ePPn1119PTEzs1auXWq1eu3ZtQEAAhJWa1qIHvzBYr3q9nsa1Zs6cefXq1V69ehFCfvvtt7lz57YcDcswjJeXl4+PjyVXyMzMfHFLxhsHtGTrpbS0dNy4cdyBCFxvI8+J9LD27ds/fvzYzc1NalFtioEDBzIMU1JScvPmTb1eP3DgwM2bN2/YsOHMmTPZ2dkW2k2WQL84lUo1fPjwoUOHTps2bfPmzdevX586dWr//v2bSrAmxNfXV6/X0/IZEeTn5zdLh5gVQSVbLxUVFT///DNshGkFFyPYniWE9OjRQ6fT3bhxQ1I5bROaGJSUlHT16tXevXtv2bKlrKwsOTk5JSXl6tWr2dnZeXl5ubm5Op1OJpNxnd1UG/L8+E1OodBKLfrA1dW1ffv2/v7+fn5+ffr06devn7e39/Lly1u1apWSkjJt2jQY3dYy8fHxUSgU4jQsfE3Z2dkNHVDU0kAlWy+VlZWVlZXizgWPga+vL7qrwLAlhFRXV5eXl8MvMyQkZN++fV999dXSpUsfPHiQmpqak5Pz7Nmzp0+fPn36tKKiorKyEkJSpaWlz70sdJZRqVQqlcrOzs7e3l6lUslkMmdnZ3t7+1atWnl4eAQEBAQGBn7wwQc5OTlGoxHSdSsrK58+ffr55597e3s35udgm7Ru3drJyUl45yMucIerrq7u3LlzgyIWLQ1UsvVSVlZmyT6IENKpUycMvAImv0D4fS5durS4uBhKb1UqFTdCCM7TmpoapVJJEwAoRqPRpF4LGh0olUoIatGWhk+ePNmzZ4+rq+utW7diY2MlfIcvJk5OTm+//babm5vo9tvV1dXz58+3rlTNDFSy9fLs2TPR54IS8fT0bEIXpC2DVo+NwLJsjx49vLy8RCtZ0bu9lgNmF9RLTU2NhaVKrq6ubdu2tZY8CCIF7u7u7u7uok+vrKz87LPPrChP8wMt2XqxcKevUCjatm2Llixi47i5uVmysaiurk5KSsKtCQ9oydYLzV0Xh9FodHFxoUOlEMQ2cXV1bdOmjbhzwW/es2dPbF/AA1qy9UJ7PIvDaDQ6OTmZnYeKIE2Lq6uraBVJCNHpdHR0CPJcUMnWi8FgsHAT5OPjg2EBxMZxcHAwGQKEWBd0F0gLd9QVgtgguNmSGlSy9WK2fJb/XIZhXnvtNWsKhCAS8NxZasLBkJdZUMnyIW6KJ4IgCAWVCB+WBAQYhjl37pwlFQ0IgjQDUMnWi+X7IK1WW7ckFEFsCqz8lhpUsvWiUCgsnJii1+sxuwCxcWpqaioqKkSfLpPJPvnkEyvK0/zAFK56USgUFvpk9Xq9jcwQRJD6ePr0qeh1Dr14bty4geEvHtCSrRelUgmLj9vwqe6sUx6ePHmCM+YQG6e4uLi+fpJmIYSoVKoBAwZgxRcPaMnWC/gKuPqUJnUJXFJFRUXYNB6xcTQajSV2qEql+uGHH6woT/MDLdnnQwjx8PCws7ODLEITrSpwUebm5hYUFEgjIIJYh8ePH2dnZ4s+3dHR8euvv7aiPM0PVLL1EhQU1KpVK+4rdHiXwCsUFBRoNBrrS4YgVoIQEhgYaIkp4ODgkJGRgT5ZHtBdwIe9vT08kMvltDDGZJo0D/n5+djqELFlysrKjh49aqG7AGt2+EElWy9lZWV0GiAMNWEamDyrVqsxCRGxZcrLy8vLy0WcSGdcOjs7W5jp2OzBW9DzYVlWoVC4u7s7OjoyDEMHozYoinr//n03NzcMvCI2S25u7uPHjy2xZNu1a4fjP/jBW1C9ODo6fvjhh+7u7nl5edzCLRjMKUR1ZmdnX7t2rbq6WkoxEUQ82dnZKpVKhB0AZqxMJvPw8MBWc/ygJVsvLMtqNJrg4GDQsCazUYVcAfJkS0pKpBIRQSwA9mf37t0TfQWj0dinT5/OnTtbUarmBypZPgICAry9veVyOdNARwGtX0hNTc3JyZFKPgSxjHHjxomeU8swDMuyHTt29PT0tKJIzQ9UsnwEBgbC/CLqHxDiKKAxAZZlHzx48PDhw0YQFUHEkZWVJfpcV1fXadOm4SA7ftAny0fPnj3lcnlDUwvgMEKIQqEoKCjA9gWIzTJt2rS0tDTRp3fu3Fmr1bZv396KIjU/UMny0a1bNxh/BNarTCYTUiZLjzEYDGlpadjtELFNbt++/ejRI7VaLfoKf/jDHxQKRXJyshWlan6gu4CPNm3aeHl5+fr6mrzOY9JSm1cmkxFCYP1h3Rdig6Slpa1cuVJ0dxiWZQcOHNivXz/rStX8QEuWDycnp/nz54eGhsLdnnpjedyyXNetTCZLS0uLjo4Wl++NIJKSlZWVlpYmOo9bJpO9/PLL2ALJLGjJ8sGyrL29fVBQEFNbTSs8bRvCZcXFxbm5ubm5uVKKiSANhhCi1WovXLgg+gpyubxv375193mICWjJmqF3797ULatQKKBM1myOAbc87Ny5c+iWRWyNrKysZcuWQQsknvVc33/JZLIePXrMmDEjMjJSWkFffNCSNYOPj0+PHj2gpsVoNEIvDB4NS1MLaB+ZmJiYR48epaamNpbICGIGQkh+fv7p06crKioUCoVZ9xeF7uSMRuOgQYPs7e2x/xZiKTk5OR9//HGfPn2Y2nCWwBPpVAWFQpGamrp3714JpUSQhvDs2TNCyMSJE5na5vRCYGuBp8ePHz98+LBUIjYj0JI1g6+v78CBA0eOHAlFXALdspBaAI/1ev3WrVvLy8uxUwxiI6jV6idPnhw4cEAmkwlvFEdqYRjG2dl50KBB/v7+UoqJtAxgVf36669MrXEKVbY8gBamNq9KperQoQMhxJL+8whiRTZt2rRz505YqOIaFQ4aNGjmzJnYl0MIGPgSxKBBgxwdHWFyMn/OCq2ppQ/0en1OTk5CQgJ0/kYfFtK0ZGZmrl279ubNm/BUXMvjP//5zyzL0obLCCIesGTXrFnz5ptvMhz7tD6oDgX3AvXMTpo0iRBiyYB7BLEKhw8fzszMlMlkcrlcxC0fxoBfvnw5Li5OCvGaH+iTNQN4+uVy+bBhw5jatAGe48FjBR0PuMUL+/fvLyoqun79eiPIjCD18fDhw5ycHAjDGgwGQohZ9xcXsBtkMllAQICfn59kYiItj5s3b+bl5dGRX+KYPn36999/b0n7TgSxBELI2bNnHz586OLiwo0c8OtZalXAA6VS+ec///nTTz+1pEcigpgCuQEvvfQSwzB2dnbiLuLg4HDv3r2NGzdaVTQEEUpRUREhZNKkSQyn5bEQS5ZlWVj2cPDixYsXL14srazNCHQXCMLJyWnt2rUhISEMw4gu36qsrFy8eHFBQUFGRoZVpUMQQWRlZWVlZe3Zs4f7Ir+SpdU3MEUJ9PKQIUNCQ0OllLRZgUpWECzLtmvXbsiQITRnoKHAYt2zZ8/48eMTExOtLSCCmEGr1V6/fv3AgQM1NTXcZQxP6zvLaDTK5XKqiA0Gg6OjY7du3bBlAWJ9rl27JropHJdZs2ZFREQ8ePDA8kshiHBiY2O1Wq2/vz/VmLR8y2yOgUwmgw4ecrn8jTfemD9/fkFBgdQCIy2O0tLSf/7zn7BLEl5cS6ERBgcHhwcPHuzevRudBkjjQAi5dOlSZGRkeHg4fRFUrVn1ytXIsIajo6OjoqIkExZp2cydO/fgwYNwSxeBUqmEB/3798/IyNi2bZslTekRxCyQ5X379m1CyPLly+VyOa3votrTrMXATaft378/IQS7HSFScfDgwalTp4aGhoq2ZJlaVduxY0e1Wv3TTz9ZMsYOQfgBJfvjjz/+61//oi82KDGWAgv40KFD27dvxy4ciIRERkbu2rWLqZNgKELtdu3aNSsra9u2bZmZmdYVEkGA8+fPL1y48N///rfoK3AXdteuXf/6178eOnTIGqIhSD0kJCRotdouXbrIZDLIHIRWs7AWeTxcJloYdm3+/v6ZmZkHDx5E0wCxLoSQBw8erFq1atGiRQzDyOVy0W4uQCaTff/996tWrbKSgAhSD1qtdseOHREREczvK2EEWrIKhQLcBfb29qBne/bsSQixZAoIgtQFHAVnz55lau/o4joTQZUjy7Le3t60HR2CSEt8fHxhYaG3tzet46Y1YDzrWKFQ1P1feGXJkiXbt2/Pz8+XTmakpXHp0qXw8PD+/fsztUpWhEeLy5IlS/bu3YtbLqQxqKioOHTo0PHjx7mNOFUqlfBFrFQquce7ubnl5+f/9NNP1pcVaZFkZWV98cUXy5YtMymcFRHygurb0NBQ3G8hjQeN2E6ePJmbEyNEydIsLhMPw4QJE9auXYtmAmIVYmJiIGsFtKpCoRCXUQAolcqCgoLY2Fhcn0gjAUr24sWLWq3W2dmZYRgaUuBZyib5idxZSTKZrHXr1oSQ4uJiaUVHWgaRkZH/+c9/aNM4SzQswzBjx44NDw/HEi/RYO+CBgP6sXv37rt37546dSrDMDU1NZCwzTM0Qa/Xg56FYnDQ1LD6jUZjaWnpo0ePoAcHgljI7du37927V1VVBUvOYDBYMo9j1qxZISEhnp6e1hOwZYFKViQeHh7u7u6ffPIJ2AtC1jHM+SCEUF1sMBjAgcCyrE6ns0pvBAQpKirS6XRyuVyv14NTFXb6/EuUJhJAIBeCukOGDBk6dGjv3r0bR/JmCSpZ8fTv33/Pnj1r1qyBtSuuOxc0ToTJNFVVVVYWEWmR6HS66upquJfTWR7cCcrPhS6/6upqGO3RvXv3HTt2HD9+vHPnzo0gdnMFlax4AgMDx4wZo1arP/vsM3hFRJYMddFWVVVhYAGxCgaDAbZNjo6OhBA62ZPnFPq/9IGHh0dcXJxarX7ppZdw+qcloJK1iL59+7Zt25aaACKMWYPBACaGi4tL69atrS0g0hLx9fWVy+V2dnYwuBNUJLgO6jsFQgUymcxgMCgUCoPBoNVqW7duPWjQIFyWSJMB/Y00Go27uzs4sMTd8FmW7dOnDyEEhyYhVuGbb77Zu3cvDABlOMZpg8q+lUrl0qVL4+LicIOFNCURERHr1q2zpJYGfgYHDhw4duwYrmbEKuzdu3fKlCkhISG0jRFVuPxA+SJdzwEBAYSQW7duSSsugtRHfHz8xIkTg4KCBPY/rg9Yynfu3LGqdEiLZtu2bdHR0fCYlnTz61mlUkkHJdAHUVFRMTExePtHmobVq1fHx8cL7w5TH4sXL96zZw+uY8SKpKamEkKGDh0KTxu0RLnTEAIDAwkhOMUDaRo+/fTT6dOnC5ySxPx+octkMljKDg4OJSUlJ0+elE5OpAVCCDl16tTPP/9MXxFd93Xy5Elcn5aA2QViIIQUFhY6OzufO3eOEFJ3pEddlEolDeCyLGs0Gg0Gg0ql+uKLL6KiogYOHNhYsiMtAihKfPfdd52dnWFZ8pQj8qBQKOLj41HJIo0NFMXSPZRwjwENRMhkMqVS6ejomJeXFxMTI6GsSEsFVum3335rYZZrcHDwtGnTNBqNtQRDEPMQQqKjo7/55huG0/mF2/nwuchkMghBUKW8YMGCdevW5eXlSS0w0gIhhKSkpBQXF7u6usIr4jwGdnZ2Go0mLi7OqtIhCC9paWmEED8/P9CYdRtr1QW0KtfgdXBwyMvLO3LkSCMIjLRMiouLN2/eDBNoxIVnYUkvX7589+7dGJtFGglCyJkzZ44dO8bULlzaJZYf8MbSaUurVq3atm0bmrGIpMTFxZWUlHh7ezMCNlt1gRUOWYZpaWnWlyTBoGQAAAsbSURBVA9B6lJRUUEIGTFiBFOrXgX6ZMHghX87duxICElISJBYWKSlU1JSsm/fvi1btljomT127Njhw4etJRWC8HHv3r3CwkKFQsFVrALLaegpERERmBuLNA4pKSmEkDZt2og4l6rmsLCw//znP7hikcZg06ZNGzduFH06y7IODg7FxcWnT5+2olQIUh+EkA0bNkCvOLAGuGOQBF7E1dWVEPLw4UNpZGzOYJ5swyguLs7MzLQk6YoQMm7cuHXr1vXt29eKgiFIfbAs6+rq+o9//INhGDBFac6sQMtUqVSWlJRcuHAB3bKI5CQnJxcXF8NorwbBnegVHx+PSQVIY1JUVLRy5cpXXnmFEdaU67nMmTNn3bp16DFApGXHjh1RUVGWXMHf358QkpmZaS2REMQsUJgQGxtrMsFTyLm0ggb6GKDHoKGgu6ABEEIePHiwa9cu0VdgWXbIkCERERFdunSxomAIYpa8vLyRI0d6eHjQgTSAWXsWysENBsP9+/cvXLiASrahNDhvriXz6NGj8PBwcVFaABojtW3b1opSIYhZYJbi119/3bdv3xMnTsBTIRt/OJIq4vPnz/v5+ZmoaYQftGQbQHZ29sWLF0tKSkScC4tSoVAMHDhw+PDh1hYNQczAsqyjoyNtfkjhV7Xwv3q9XqlUymSyixcvTpw4UUIpmyOoZIUCjtSLFy8yoioUYbG6uLhs2bKlqKjI+vIhiDkGDx4M4xKETAg3QafTGY3GpKQkhmGwWUyDQHeBUCorKydNmvTHP/6RETv9WyaTffDBBxUVFeguQJoEX19ff39/R0fHp0+fMg1cxjKZzGg0lpeXnzx5UkR5bksGPyyhlJWVVVVVpaSkgJeqoafDGp06dWpKSooU4iGIWfz9/b/88svQ0NALFy7odDoRVzAajb/++qu4c1ss6C4QSnZ2dmZmpk6nE9cvzmg0ent779y5c+TIkVaXDUGEwLKsh4fH6NGjqQ3bII8BpH/FxcVB+w5pZERaKoSQ06dP79mzh86kE8F7770nMKSLIBKRnJx88+ZNeMzfnJMLncPIsqyTkxMhBBwOiBDQkhXK0KFDHz16pNfrxWlJuVw+aNCggwcPWl0wBBFOhw4devXq5eHhwTAMjYCZBZQsmAhPnz4tKCgQl2PTMkElK5SIiIhHjx6JPt1gMAwZMqRDhw6YYIg0IV5eXuHh4dyZckIWJFcXsyybkZHx4MEDSeRrjmDgSyiPHz++e/cuU5ue3dDTvb29e/fujbkvSJPTp08fHx+f2NhY8Mw2aD2zLKtQKO7duyd69i2CPB/YKHXs2JERO8bjL3/5y4IFC9AhizQtsJLT09PpK0IsWZNjvvnmm/nz51tfuGYKugsE8ezZM4ZhYFSM0Wjk17M0SsB92q9fP0dHR/QVIE3O06dPu3bt6uLiAk+FrEm64OFBZmZmdna2dBI2M9BdIAiNRiOXy2l6IH8WN5ir1GiF7VhwcLDUQiKIWWA1zpo1Kzg4+PLlywLTXUwWvFarpR1pEbOgJSuI9PT01NRUeGzWXQCmgdFo5D7o3bs3DLNDkKaFZVmdTtezZ08Ta4AHk44wOTk5HTp0QN+XQFDJCuLevXupqamwzsxur+oe4OHhMWPGDFSyiI0QHBwcFBREFyp/FIu77EGxajSaHTt2gA8NMQu6CwSRmpoKrliDwWB2o8R1FDAMI5PJevbsWVZW1q5dO8kFRRAB9OjRw87Ojj4VvveHtV1eXl5QUFBdXS2JcM0OVLKCSE9PNxqNJm5WnuO5/TrBIWswGM6cOdMYsiKIOby8vNq0aQPrExpy8xxsstRZljUajffu3cMorkBQyQri8ePH3Fovs0qW6+0ihAQGBtbU1DSCnAgiBF9f3wULFnh4eGi1WiHmAlNH1WZkZNCRtwg/6JM1DyEkICCgpKSEuv+FZBdwE7m8vLwgxxZBbAEnJ6eVK1fCDCT+xVyfufrkyRPIaETMgpaseSoqKmJiYliWhXaFwk9kWdZgMLAs6+PjgykviE0xf/58IUECuuCpJQsPioqKsOhLIGjJmqempubJkyeWXKFt27Y+Pj7WkgdBLIRlWa1WC83jxblWq6ury8vLrS1X8wQtWfOUlJRAK3jqLuB3Y5kYvAqFwt/fH0fOIDaFp6enuAJxoLS0FANfAkFL1jwVFRWgIgWWx9BAATxo1arV6NGj3dzcpJYTQYTj7u7u4eEhrtsRwzAVFRUVFRVWl6pZgpaseaqrq8GGFT5CmWvMurq63rx5E2/7iE3h6uoKTbuFr20uNTU1uKQFgkpWKAIXYt2kQhcXF4x6IbZGq1atIOOVEdW9E2d8CAeVrHlkMpnwHvIAlIfBClapVOKm2yKIdDg4OFBTVMT6RDNWOOiTNQ9oWOFKVqVSMbV9ZIT34ECQxkQmk8FCFX26FYVp3uAnZR7wsTK1g+fMakzqHIC7fWVlJSpZxNYwGo2WNB/AzZlw0F0gCNCbAnUlHKbX6+GpnZ0d+mQRWwMiV0JSEp8L2g3CQSUriAZtjuquP1SyiK0BzTRE60rh48QRVLLmkcvlDUpzoQfDvyUlJbi3QmyNiooKKLERB3aHEQ76ZM2jUqkUCkVD79tUz2q1WtqFHkFshJKSkpKSEtGnq1QqbkdahAe0ZM3j4uKi1+sFKlluJ1l4+uzZs5iYGAu7HyCIdcnNzQVLVlzRFzcDDOEHLVnzODg4CG/vYrJeCSFGozE1NRV7FyC2AyHE2dk5IyODEeuWdXZ2dnJysrZczRO0ZM3j4uLyxhtviHMXgMcgKysL3bKITREeHj5o0CDRpzs7O2OrQ4GgkjUPNIT19PTMz883mycAhV4mGjktLQ33VojtUFJSsnDhQrBkGwpYD56enqhkBYLuAkH4+PgIbLxNxyKADQu5X5mZmXfv3pVcSgQRRmZm5pw5c0pLS+Gp8HgDzdzy8/PDYR8CQSUrCD8/v06dOgk5kjt7hr5y7do1SDOQSDwEaRCPHz9OTU3V6XTw1Gx/ZIbj/gLHV7du3fz9/RtB1GYAugsEAZMQzc71NIGmGdy9e/fIkSM5OTmSCYggDeDy5ctKpZK6toRPBQWcnJwCAwMxYUYgaMkKIiQkZMCAAUKCV8+dtFhaWpqQkCDOBYYg1kWj0RQVFR09elRg9yK6OZPJZOAu6NChw0cffeTu7t4Y4r74oCUriODgYAcHB66/tb4j6cKlh4H9+8svv0BJAkbAkKYlLS1t8eLF3t7ewndmJoPBO3bsmJ+fjytZIGjJCsLX17dDhw6urq5MA/MKaQTs4sWLc+fOVavVksmIIOYhhJSWlsbGxsJTs005uJPt6cr38/Pz9fWVUsxmBVqygnB0dGQYpkOHDkIqEcFAMJn0lZGRceXKleLiYqlFRRAeysrKRo0aNWrUKKVSCYEvITszgLZI9vb2xt4FwkFLVij/+te/IJxqtv/Qc7dgLMtGRkYmJCRcu3ZNKhERxBwpKSlqtfrUqVM6nQ4UpRBjFpa00WiEYENgYGBAQEAjSNs8QCUrCJZllUplv379GLG13oSQqKioMWPGnDhxQgIBEcQ86enpiYmJX331FfQ51Ol0CoXCYDDwlxXQ3Ri1ZPv169ejR4/GkRlpQcTFxZ06dYqxYPCGSqUaPHjw119/fevWLauKhiCCOHv2bHp6Osyso91hhBRuwZqHszp06EAIwaRv4aBPVig+Pj7t27eH2Jc4ampqrl+/vn79eitKhSANIjExsWPHjhUVFRUVFU5OTlVVVUxtMsxzj4eRoHK5HMxehmFee+21b7/99rvvvmtUuV9k/g80FdQXCkDBcAAAAABJRU5ErkJggg==\"\n      ></image>\n    </g>\n  </svg>\n);\nexport default SvgOllama;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Ollama/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgOllama from \"./Ollama\";\n\nexport const OllamaIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgOllama ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/OpenAi/OpenAi.jsx",
    "content": "const SvgOpenAi = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    fillRule=\"evenodd\"\n    clipRule=\"evenodd\"\n    imageRendering=\"optimizeQuality\"\n    shapeRendering=\"geometricPrecision\"\n    textRendering=\"geometricPrecision\"\n    viewBox=\"0 0 512 512\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <rect width={512} height={512} fill=\"#10A37F\" rx={104.187} ry={105.042} />\n    <path\n      fill=\"#fff\"\n      fillRule=\"nonzero\"\n      d=\"M378.68 230.011a71.432 71.432 0 0 0 3.654-22.541 71.383 71.383 0 0 0-9.783-36.064c-12.871-22.404-36.747-36.236-62.587-36.236a72.31 72.31 0 0 0-15.145 1.604 71.362 71.362 0 0 0-53.37-23.991h-.453l-.17.001c-31.297 0-59.052 20.195-68.673 49.967a71.372 71.372 0 0 0-47.709 34.618 72.224 72.224 0 0 0-9.755 36.226 72.204 72.204 0 0 0 18.628 48.395 71.395 71.395 0 0 0-3.655 22.541 71.388 71.388 0 0 0 9.783 36.064 72.187 72.187 0 0 0 77.728 34.631 71.375 71.375 0 0 0 53.374 23.992H271l.184-.001c31.314 0 59.06-20.196 68.681-49.995a71.384 71.384 0 0 0 47.71-34.619 72.107 72.107 0 0 0 9.736-36.194 72.201 72.201 0 0 0-18.628-48.394l-.003-.004zM271.018 380.492h-.074a53.576 53.576 0 0 1-34.287-12.423 44.928 44.928 0 0 0 1.694-.96l57.032-32.943a9.278 9.278 0 0 0 4.688-8.06v-80.459l24.106 13.919a.859.859 0 0 1 .469.661v66.586c-.033 29.604-24.022 53.619-53.628 53.679zm-115.329-49.257a53.563 53.563 0 0 1-7.196-26.798c0-3.069.268-6.146.79-9.17.424.254 1.164.706 1.695 1.011l57.032 32.943a9.289 9.289 0 0 0 9.37-.002l69.63-40.205v27.839l.001.048a.864.864 0 0 1-.345.691l-57.654 33.288a53.791 53.791 0 0 1-26.817 7.17 53.746 53.746 0 0 1-46.506-26.818v.003zm-15.004-124.506a53.5 53.5 0 0 1 27.941-23.534c0 .491-.028 1.361-.028 1.965v65.887l-.001.054a9.27 9.27 0 0 0 4.681 8.053l69.63 40.199-24.105 13.919a.864.864 0 0 1-.813.074l-57.66-33.316a53.746 53.746 0 0 1-26.805-46.5 53.787 53.787 0 0 1 7.163-26.798l-.003-.003zm198.055 46.089-69.63-40.204 24.106-13.914a.863.863 0 0 1 .813-.074l57.659 33.288a53.71 53.71 0 0 1 26.835 46.491c0 22.489-14.033 42.612-35.133 50.379v-67.857c.003-.025.003-.051.003-.076a9.265 9.265 0 0 0-4.653-8.033zm23.993-36.111a81.919 81.919 0 0 0-1.694-1.01l-57.032-32.944a9.31 9.31 0 0 0-4.684-1.266 9.31 9.31 0 0 0-4.684 1.266l-69.631 40.205v-27.839l-.001-.048c0-.272.129-.528.346-.691l57.654-33.26a53.696 53.696 0 0 1 26.816-7.177c29.644 0 53.684 24.04 53.684 53.684a53.91 53.91 0 0 1-.774 9.077v.003zm-150.831 49.618-24.111-13.919a.859.859 0 0 1-.469-.661v-66.587c.013-29.628 24.053-53.648 53.684-53.648a53.719 53.719 0 0 1 34.349 12.426c-.434.237-1.191.655-1.694.96l-57.032 32.943a9.272 9.272 0 0 0-4.687 8.057v.053l-.04 80.376zm13.095-28.233 31.012-17.912 31.012 17.9v35.812l-31.012 17.901-31.012-17.901v-35.8z\"\n    />\n  </svg>\n);\nexport default SvgOpenAi;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/OpenAi/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgOpenAi from \"./OpenAi\";\n\nexport const OpenAiIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgOpenAi ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Pinecone/PineconeLogo.jsx",
    "content": "const SvgPineconeLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    fill=\"none\"\n    viewBox=\"0 0 32 35\"\n    {...props}\n  >\n    <path\n      fill=\"#000\"\n      d=\"M13.855 34.296c1.077 0 1.95-.85 1.95-1.9 0-1.05-.873-1.901-1.95-1.901-1.076 0-1.95.85-1.95 1.9 0 1.05.874 1.901 1.95 1.901Z\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.118}\n      d=\"m18.414 7.197.837-4.537\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.118}\n      d=\"m22.266 5.585-2.92-3.474-3.971 2.262\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.118}\n      d=\"m14.92 26.553.814-4.536\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.118}\n      d=\"m18.773 24.93-2.943-3.463-3.96 2.274\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.118}\n      d=\"m16.608 17.2.813-4.537\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.118}\n      d=\"m20.459 15.58-2.931-3.452-3.96 2.262\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.01}\n      d=\"m8.329 26.155-3.577 2.426\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.01}\n      d=\"M8.544 30.087 4.32 28.873l.31-4.28\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.01}\n      d=\"m21.321 28.43 2.489 3.498\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.01}\n      d=\"m19.718 32.045 4.39.291 1.245-4.092\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.058}\n      d=\"m25.4 21.33 4.378.77\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.058}\n      d=\"m26.907 25.072 3.398-2.88-2.142-3.836\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.058}\n      d=\"m24.12 12.861 3.9-2.098\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.058}\n      d=\"m24.336 8.84 4.15 1.679-.777 4.303\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.058}\n      d=\"m6.916 18.157-4.39-.747\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.058}\n      d=\"M4.177 21.165 2 17.328l3.362-2.892\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeWidth={2.058}\n      d=\"M11.08 10.613 8.149 7.348\"\n    />\n    <path\n      stroke=\"#000\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n      strokeWidth={2.058}\n      d=\"m12.29 6.775-4.487.187-.79 4.303\"\n    />\n  </svg>\n);\nexport default SvgPineconeLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Pinecone/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgPineconeLogo from \"./PineconeLogo\";\n\nexport const PineconeIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgPineconeLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Postgres/Postgres.jsx",
    "content": "export const SvgPostgres = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"30\"\n    height=\"30\"\n    version=\"1\"\n    viewBox=\"0 0 369 380.25\"\n  >\n    <defs>\n      <filter id=\"a5834174ca\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\"\n        ></feColorMatrix>\n      </filter>\n      <filter id=\"73421d60a2\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.2126 0.7152 0.0722 0 0\"\n        ></feColorMatrix>\n      </filter>\n      <clipPath id=\"5d6f8b8a11\">\n        <path d=\"M.363 0H366v379.5H.363zm0 0\"></path>\n      </clipPath>\n      <image\n        width=\"494\"\n        height=\"512\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAAIACAAAAABh2tDlAAAAAmJLR0QA/4ePzL8AACAASURBVHic7Z15fBvlmccfjSz5vu3YcRLnBOdgKSmBQGkKbSAp3eWG0pQP7RYoFLq70AWWHmnpdpduF0ihULaUUkrZhKTlvgMkkG1CEkJCLifY8X3JlmRJ1q2RNNL+IR86ZqSZ0Vya9/n+k9HMO+/7jH95Z97jeZ/XAIgcFP24ylk6p6muzGykjMYiiqIMAPE4Ew0FfB5/KBx09nWOWoOMwmYZFC5P58yatbiutrGqpmlWrdlgLDUZWf++sVgsZvCE/TYm5HI7rC7LqSGF7EO5paFlxRcqG4pr68rLK6MlxVDM9z6G8cf9Iav3pMN78rBLTgsBAOWWgJLLV1U3z6o1VZhMJt4yp+MN+UMD9SMDuz9wSmlbOih3PpjPv6x+RYW5urTEKEV2cTrqioZ69z3pkCI3NsiVu3ZOqDpcWlZiigcnaNrvDAnNYNHn1s9pqy8poSQ2jA6O07te2xWROFsAkF3ussb6lqa68iIqFo8bjRSEfTbvoNUj6wsrG7Wz182rrCgtKTFXGcsMRUyk3ADAMOGwnzY4aCrk9jvtPUNdOfNpXnpR6+ebqsrksnPCPxbZ/l6H5B9zWeRuXLKisrjYVNlSV1lSUWw2UgYAAxjAEI8zTIDxeLyxiN1hG7fZfQE7LYcFLDZdek5DfU1FWZXZSFEUa42MQyweiYfd4XG6u3vglGPCzZpTXe2aM1bNq60wyWov0M7ghO/5dwYlzVRiuYsvXTl77jxzmdlMFVFUEfd7Lh6NRKPRaCgYoMZ9juH2dqtHWkuSWH7t2c01FSWlpiL+94TpoNNm6z960p7aR2r40vmfn1dfLrpJJoyo2z225Q0Je2nSyd0050vntsVnm03mUmE3RqMROuh1M33OjoPHwpLZk2DxBVecVkuVV4hqSsWCgVCo07D3/ywWGqCi8cyLmua31lRIbGJ2mOFA342Sffykkbv8tHUXLqgrFSp0KnQw5rJ5jw4etwxK9IIvue/vq2eZ8/7A+gNuhzNQVW9sqSiWul3GBydtf//RYUmyyl/umtq1lzVX1dUJeFNmIRIM+r0B5tiBV9k/nPwpvu3a+sZ6NeSRgQmf54Vn+/PPJ0+5a9d+u6SttEYaqWeIhwLBaN/ubQMBkRnU/uulpjlVMjemlMUVsH/7WL6Z5CX3ot/ObSirztcELsL0UMT42e8/jAm+s3bL4oZa/Y0ohLyDdxzILwvxfxTz/eua6mXreE4RGXW5t7/UFed/R8n6+1pqZPs/qC5Rp//el/LJQKzcC/4wt6FOoQ+j1e0yd//53SiftOb/XrZ0Vl4tRo0z6v7pi+LvFiX37AfWlNeWiC9UBGHXqPP11+z+7KlKNq9oqlXGINVg/P6HHhF7swi5Vz3U1Fyjwpcx4hsf87z5PPdwTOmzC5dWKmiQangGH/xfcXcKlq1x65xW2b/YnESdvomHXmKdPWjYMrtVp5/sTIaZXzwj5j6Bcq/4xbxlyo4qZRBz2P3jm99K65a3/eSsxer9L1QBR98tR4XfJUzu229dqIkKFJlwO1/7S8/MiX+9pUUThilI1PX+DYJvEiJ3xVuLWrQzSuXxOt79Q2Kqcs0TzY0qW6MGnvCjDwi8hb/cp/963uJygbnLjM958LtOoJ5cN087/wsVxeu+9mNBN/CW++5/nFsj2BzZ8doDgfqaerXNUI+JV24Skpyv3E9fMltXI9C6weO/SkAF5zcPPPuD82dL4nyHSE1x5XV17/NOzat233PTfKI6OQWG7ePL+SblI/djFy/LwxhEdpye63nOlOV+Ra9667wF+VmDyExp9T/M284rZc7a/cCGVvxqa5+xj6/kkyxXh/U3Gxai2gVA8/rBa3gky6HlH6+ZI4k1iNwUVV9YtzNnquxyP3NFg1TmIHJTsXjeu7nSZJX7mUtnSWcNIjeVS5e+liNJtm/3Q19ultIaRG5qrnk5R4oscv9swwIpbUHkp/JLx9uyJuB+md/6L/OktgaRm7Lqvz82kOU6p9xf+OVi/Xlq65+i6kv6O7gvc8r9zhKpl4YgSkCVXeg+zHmVS+7fn0OET6cOMZad5zjCeZH99E++iY3yQoUqO8d6nOMau9xfvXuxfOYgMmMoO8fL8T5nlXvB08sIdf7SB1TV6sBB1iuscm9bUiWrOYjMGMrP8R5iu8Am91XfwB53gWMoO7uPrT/GIvei//gcvsoLHUP56iMs4y0sQylvnIfTYDogMrL+VMbJzHr8hUWoth4wtbAs/M+Qu2njEiWMQWTHPP9PGecyvt2bvkza2jrdUjy/9e20U+lym36OlVs3lM5h0laYpMv95Oewy60fKpelTY+lfbsXr5iroDWI3Mz/5Rkpv9M6YjtxIkxf+E6cl/wztXa3LUC19UXF3LXJP1Nr99/wy607ulYmRSdLqd1fmY1q647WF5KGzVJa5lva0GFJdxTVlc+s/06u3ZX1ykZCRBShfv3M3grJcj+q9/iShDL/henDJLmpNhKjVRFAVct0gzzp2/3AKoIjGOkaU2gquMNM7S5agT4sOqVh/dTRjNyNjXoOA040hra/mzyakfsfW9WxBZGf2bdNHszIfXaTOqYg8lM+tWxgWu7Vc3CIRb80z078O90yf/wcHGPRL+X2/QCQVLtrNRjgFpGKyosT/07JvXa2aqYgCtCaCHw5JfftOKKma0oTQTym5G6pU88URH4alwPAtNw/nq+iKYj8lC0CgGm5r8LJMH1jml0HMC23CQdQdU6jEWBK7nNwiEXvNJQCTMmNkVh0T3UbwJTca3CMRe9U3QIwKXdJOcYs1ztFM7X71uLsSREdUL0BJuU+H4fU9E/pEpiUe6XKm/YiCmCuhoTcVFRtUxD5MZZAQu5LNLaTKyIHRjMk5P48DqkRgAEgIffpuOMjCUQhIbfWtuVG5MBgBAAKoKgCgyQSQNFky3wtRtYigaKFAEABnI0tNRIwlJQCUADzcQiVCIoWAlAADSa1DUGUoAwAKIAl2DAnAqoKgIJKMzbMiSBiBKDgG1i5yaAoBkDBSrXNQJSB8QJQUBlR2w5EEQIBAApoHDEngygNQEFDXG07EEUIxQAoMOO6bjLw0wAUzMUxVCKIhRkAqjWItZsIomE3AGXAEXMyYAYAgJqPlZsMaCMAUPOwH0YGxWYAoBbhdhRkEDcCANWMDXMyiBsAgKrEpd1kEI8DAGXC6U8yYMIAQLHs6IzokagLACjAIXMyCI8AAIVqE0JoFLB2k4PHASzbtSP6JBocBgDKiG01IghO9AAAhdWbDKhOAKzdxMB8DIC1mxh8wwBYu4nBMA6AtZsY/G4AAArjJZJBIBGbBd/lZDDiB0C5SSEeBAAcVSMF2usBQLlJgbbHAHBGjBRoGwAAUDGV7UAUITgEAAAUg9WbBLwdAABARbF6E0DYMgoAAFQE5SaAUI8dAAAomlHZEkQBIn2JWk2FMHY9AUT7Ev9SfgzNQgARS+JfyhNW1xBECTz9iX8pW0BVOxBF6J2s1FSPU11DEAXwdY4nDqh2i7qWIArgm2ypAeW147Ca7vFMy+1zB1W1BFGAieHJAypi96pqCSI/tMM+eUTFLX5VTUHkJ9g/OnlEgRE73non9PHUEQW4BFT3hHZOHVEQwTkSvTMxPZRGwXBITUsQBbBOH1EwgB0xnRMYnh45pcDpwFFzfRMYnD6kIGilVTQFkR96ePqQArrXpaIpiPyM7J0+pAB60VtN1zC+zuljCuA4frt1TdA9M7JCAXhQbl3D9MwcUwAMvsx1TeCjmWMKIDiBzqh6xr5j5pgC8NpxoEXH0L1JkyIUAITRXU3HBIaSZrgpADiJL3Md47El/aAA4ASOs+gYz66kHxQAjGAIB/0SsZxM+kUBgBXXDekXz0fJLTMKAFwunCTRLc7nkn9RABBzoTOqbhlIaZhRAADbsSemV/zWFGclCgCgC51R9Yq7PUVbCgDAja7memVid8pPCgDAht6JOiVq3ZfymwIAcFlxXE2fBO2p050UAAAT8KhiDCI3/h2pvxMDagfdKpiCyM/Y26m/E3Lvxp6YLokMpgmbkLsPa7cuGU9fM5KQ2zuAPW894nwz7cTkZBiN7ok6hBlNa6lNyd2DcusQ/4l0r9NJuYd8ituCyI57S/qZSblPTihtCiI/lo70M5NyHx9EFwfdEezNGCyd8lvCcTX9YR3O8Cifkrsbe966w/9yxqkpufdh7dYb9NDxjHNTcmNbTXf4+jLdGKbk9ozjwkCd4Xoh89yU3BEPerToi5jlw8yTU3LTA7iURF942QZKpxeQvI9zoPpifDfLyWm5e60sV5HCxfVLlpPTclvR+1hXhFir78xqQDd2xfSE6xDb2Rm5dzkUMwWRn8Cv2c7OyP2Zne06UpgwcdZR8Rm5PbjlkI5wnWI9PSN3qBtdHPTDxA9YT8/IHbHisl/dEInkqt1wFOdAdYPrb+znk+Q+Na6MKYj8TDzAfj5JbmsnOjDphCA9xH4hOehSEGdJdMI4y2QYAKTKfQSb5jph9EccF5Ll3oNNc33gtXCtEkmWexTl1gfO57muJMsdHsMgDrrA+SrXlWS5QxacJdED3gnOLlZKONRn0aNFD0y8wXkpRe4eG1cypHCIOlhcUCdJkdszyJUMKRzch4c5r6XGtg7hWpLCx/af3NdS5T6IDkwFD1Pay30xVe7dGMSh4HH0ZbmYKncHBjYveML3Z7mYKnfcIK8piOwwTrblBFOkbUMyhFuKFTgjn2S7mib3IMpd4BRxODYkSJP7BK4DLWx81mwttXS5X0bv48LGdWfWy2lyj0bQxaGQCbuzNdQy5IaD6MBUyHi2Z7+eLvfTOK5WyAQey349XW5LD7qjFi4TQxweqFOky+0axznvwsX64xwJMnZ73Ylv84IlQHMsHpkmQ+4PxmSyBZGdwHO5UmTITQ/jNEmh4uN2Y5kkQ273CPonFijezpzeSJk7tW/DKA4FytBdOZNkyn0Mh80Lk5A3I1p9BplyMw6MuFWQTPwqd5pMuaEDu2IFSYxz7cgMLHL/Hy7rL0Ss3O7GM7DI/Q6GyyxI7uORhkXuWAy9zQuPsHsXj1QscsMpdD8uPFwP8UnFJvdWXOddcMSYp/kkY5N7Lw60FByW/+GVjE1uJoRv80KDzuqAOg2b3LAd57wLjJEcTktTsMq9BXvehcYj/JKxyh3ol9AQRH58wz38ErLKPeHHt3lBMfYvPBOyyg2PYNu8kAi6DvBMyS73p+jBVEjY2YOXs8Aud7xYMlMQ2fGPfcQ3KbvcMIYrQQuH/lt4J+WQ+wQ6rBUMfmfmxs1ccMi9CZeKFQzOb/FPyyG3i0EPpgIhON7PPzGH3HACNyYpEGy3C0jMJffPUO4CIfqxgMRccvfScSlsQeTGu0tIai654RiOtBQEzgeFpOaU+3XseRcCASv7/nAccMr9ftYIPohGcN8qKDmn3A4XzoppH9/xo4LSGzmvdK9tytcYRG6s1wurlJy1G9pH87UFkZuAu1vYDdxyR7wYYk3reO8VeAO33HAU3c01Dj3A0yNxmixyv4ttNY3j+K7QO7LI3TWMIdY0TchyTOgtWeR29eOkt6YZu03wLVnkhkfQ3VzLuLs/FXxPNrnHhhnxxiBy4/ue8Huyye0ewOqtXXwjPJcSJJNNbvivHAFVERXxCBstT5BV7qFu3OFZq9gPCRstT5BV7pgTPRQ1Stxxt5jbssoNm/HjrVFO/UeXmNuyy70vy3aSiIqEfc+Lui+73FCC4+aaxCHAtzyZHHK/gR9vLRIePSnuxhxyP43TJFpk/Ccib8wht98fEpkxIh/hMaETn1PkkBv2Y/XWHs7sWwFmIdcOziV7zhabNSITru5zxd6aq3aHfBjuWmuMXCH61lxyw+9wpEVjWDvFO43mlPuFftF5I7JgFTHxOUVOuWMO7HpritEn83jfci8rmMJzUb347BGpCXYLd1maIWfthh348dYSYxvyuTu33DEnLi/QDuGgCB+WGXK/zIE6ryafEhApGfx+XpOUuWs3vICzoJrBeXBHXvfzkJuO4L6BGiF2SoyDWhI8XubQfDq2zbWB5TZBsRoy4VG74SmcFdMGwd49eebAR27PGLbNNcHQVfnmwEdueAz3DdQC3tG8F+3xknsv+ptrgfbL8s6Cl9zOA7a8C0LyxdmRv59oLveGyVQHVuVdEpIfsaNX9+edCa/aDXFjLO+SkPwYerw//0z4yQ0n0d9cZbwdf5IgFz7DLAAw8FUcaVGX3gulWGzPs3YfojFOi6oM/0yS/QR4yg0vok+Lmvj7XpQkH75y/wnD2auJ7evS5MNX7qFBnBZTD69NoujyfOWG7+flRYHkxcTNEmXEW+7OMIZhUgvboyckyolnRwwAFixAHyZ18I+IXM2dCe/aDc/gXjQq4bpLsqz4y90zgY01VejZtlOyvPi/zGH0i7WSFYvwxjN+tXSZ8a/d8HoAN4pUHsaepzdiCgJqN1StLJewZIQXIxvfkTA3fvPdCVrePUPCkhE+RE6eJf7muQaIxhgmafy7SMDdlu7WKvFlI2KIecTcVdK0tqrk9DmtVYHSmCs+0buld3JXOCG1G2r2rBBTOJIHlvu2ChrfMqz/dk1VdXm10VBUZEqcYmi/p//VrQ4QKDe8fn6DoPRSE7UWR5oEtC51AO0c+fQJXptQVDSuam05e251RcRcnHEx4v90g02o3KbjbYLSS4y/495d3/ipeZ5ZTSMUJxz2ufed+PQD7hSNjcUw5/pl1bWGolITZza96wcFyg2Hz1SxbgVPXDkCAOc80NRYT5bicZc5FHL2DzpGRsa7XABQ0dZQXjerscbEhEvq6usrjAZjuDGHNJ6Rr/ULlPuRb9WJtjlfmM51I4kj41W3zG2pJuulDkDHYzQVj7gZa7CltNZoAIqiDBA3FPFtbgd7/k6g3At3LBJspkQww2uT5mBNv17eUlxXJdB8fRCLCxktScI5JvTv9cGZKvkoxoe/tSv1TO3CG8+YU1Fqxs4hXyJBoXK3va1S9bbcsIvl7OJli2cvaa4sbcDhfD5EBL8N97epMu09+MBTXJdKzGbTRd9ubqysVNKggiQmWO6zNy+Vw5AcDNz/5xwpGq5Ztaq5WRFjChjhbZ231ihfi4Z/8zCPVEUDLbJbUuAI7818V/mdQa2/4qM2/JBziAFJEBMut8Wt9IISy9NP8El25o3qjvAWAIyIHpxT4Thro3/ayCfZ6pfmCpneIxK7mHGK40tKJDeEG1vXF/kkO+vVOah2DlwfihmfGbqoWnJLOAk4ruW1P8bLs7AfloOY5YtiBp7fDNKSm8IFM3RNN590N7bMktuUgmf8GUG+ajP3XaDUwCVjuXM3n3QXPjKPtBkTwURHrxfREQOAbWNBqW3hwHbPm3ySLXtwHn64c+H8jph+NwDAbcMSm8JB18a/8km26KWzsMudi+4H94qV+9OoIi7n9k3P8Er3l/lkeTuIwfneJhDmZ56E43wFGufj//04r3Q/vBQXK+bC130lgNjaDdtc8jfORzdt4pXuO7c0ymxJ4ROyJBaRiqzd0L5G7hFL7/47+CRr+Z/vzZXZksIn1HNdYktg0d4/cs97B0bWDvFItnLrXFzJlAtv7w2T8QBE91a/3iWVMazERr7GQ+15j7w4H9XOha3961PRH0R3Vwc75ss4jhUbvDn3YNrcK743G6P75aTjyMZpn07xrpwLX/y8JNawMnzd/lxJKrecVtpKpCeqMLof/r0k+VzdE5eLwctzlG248ZOxoGzF64mu76T83fLQe+tXZHqd919/INtl48arKhvLcYycB96Rn/8l+Xc+cpsOnpmnNewMXHuQ61KDeeXqSxoqazLXvCEs9HffntoEymdmIXJ0nhzu3baN7GqXX778SwvKDUXlYscKiKP/wd+lncmrrVO+c3U+t7Pj/+iKjI2sGmNf2XCmsTbYiErzZ2J048vp5/KaN/RvXtCUz/1sxPpvSFW7bsH1F88qpxuKABR0oil44v3t932WcTbPnswnZ0o9F3Xy8uTgqyV1v15VVm3C6U2h2Mdu/oTldJ5yL98qcWut6/KO6ePasze21pQq6QapF8KWJ9g98/N0Ajl5okXSqZK+q2fUfuDaxkr0URFBfGT0Sgv7pXz/nj9pLS/NM4skOq9rnzwqfe6s5grpMiYJ+8i/vc91Le9RyIV/lW6LsaGrDiUO6i68fwlOfYjCOfZwli2J8u7ZTAx9UaqZUOuzmxMH657/+hJ0RxLDRN/rd2fb0F2COYZX1kgzLRU4+LVETOUf37IApz7E4Bvdc3f2LYIk+LtWPCWJr1jo2JqEv+OdP5gvQXbEwdjH2u/JtRWzFNXItHNN/pn4j3w5sbJ03R/RGUk4HufAkx/m3ndbip5O5Knm0/LNI3h0Uu2WX83J2yDSCAxbT/w7r72IJOnY7vhmY76v8/YLJg+ebcPvtiACHvvJfxvj6fcvzd+26d3P5ZdBx/rBxIGpQ7XAbQVI1OaPnHx7a8aUEifSDFtZb3tmeT73u/ZOqg03YZQ0noR8Yc/wb98QttO2VG/OtY8vE39z6NOpVzk8dyUu086Jz+8N20cP7v5M8DbbUg1K77z/h6I9FSPHZlr2FUROfsUYAz8hwtFAgPa/8n5vkJoQU5BkcxAvNNeI/OoyB9bOvJGI3IrQf+rDtqaKoliFgTIYi0vSNQkFIQR0NBSjgjar79TzeWy2LN2U05Z5N4gLa9a9Nmm9WZTEzemGNr4NAGC8cHm8uKFqSWtFmZGKxuMQizNMaCJyqN0RGLdFIlFG1E4VyUgnt/Nh5oZ5Iu47clHy6kJaWNNDF0S9Cec85oNEiPpZl50XooPRGBMOeKwnnPzb3bmRcELZ9pv4hgWC7+pfn7IzuCVM3kxY1G1L+W374x/lKkpKXz/f0YnWeoHu34OXpC4Foy8hbxlQoGubUkVJ6pw//uebDgvbKHTosrSVhfsF9y0KH4NSkW4klhsCB6/bJ6A5Ee/7WvoeOtE+UR0MftgtPvkyF49XuSizUi+9GfjGflvuVAnovq+0Z5y8cURSe5IId/7lRx1a3MbUnHsmSyok99MPvnp2Ob/1W55Ta0Yzz0b9q+QZR2Us33z66NI2DbYEPbv3KlWU9AvrfDf/7BCPgYBg15vXsUa//HOvLK/zaN9jBwD2yJF1voTcudNomeKnBnOtQ7W9wzlaWvvemPTrXm37zwUAuGNc+qzz5qhym3XJsmyWvu33RwLZEng6H7ycMyq664qPObykRRPuv/O8AwAArVpcZBbjFeNX05S9etDB8Z85aj+UIxx961O9IQlrT8x2fGo4/3GXhPlKRPAl2dVQgocPD0UyH849uvefc997xr4hyf6c/mN3Tuf7W6dk2UqG91cyipCGjKty7oG7rymtqU1atkl7HHbPlq087m2/5P6LF0jiv86M9V0609s2aXAGRtwW3eKQdRHWpk2w/J9Om1NVbDQA0MFR146tvBzoAMB3L/WHdbPz/tKGHaNXDyT91uKnO6pgw1zuNXcn72hqXN5YU2Iu9r58WNCdsXvf/+7iprzWf4aHrTf05ZOBIkRYRh/kQv4lllZr5tAZL5zbXv7C3W01dWJrpM9nvcSedk6L06s03zeeBGh6RW1416Hqu1oXLRbxEQ+OG/52e+ZHEeXWNF7vPVD/05Wn1woKtRQN+I5cEWW7okW5XSh3Mo674KvfXElVmcp5LPj2u8Ne09Crbw3kTqoRwuasI1LSUgByA8D27WBYctoFq2fVlhRRxSa2ocBQME4znr6ubdb+LBkZtbdEJahkY7Iw5AaAeFfX22BYv7KuYlasItZQbDYXGQ0Qj8cYholGAxZrsGe0ZyLXHikm7ckdHVewsIKRGwAA4tu3A0CR0UxRZrOp2BRnwlGGYaLRWDTEawClCOUuOKJR0TtjaFHu9M6inBAWSFaD3+6wcr4sxMmtwcf19+ROIxkafH45obRXu72c4Z1lgDC5tTchRkeUXBZHmNzaq9zhzDi1MkKY3Nqr3bHB3GmkA+VWmahsfvVsECY367yJqoR7lSyNMLkjmqveSk5/Eic3rT25FV0DSZjcAc3JHcPaLR8erckdU9ZZkjC5vVqTO6rsEmTC5PZrTW5GQVcWIE5uzbXMGeUiNwAQJ7fmwrYxMgarYIEwuTXniRrhHetCEgiTm3OVsVqElXWZJUxuzYVmof9X0eIIk5vRWvVmFB1lIU1ul8aeN6Jw4AaNPb7cjGrseWMKRw3U2OPLzWca+3jHlO12kya3QdlBrJww+DKXE4NfWz1vhVtqpMmt8ARUTkIKRm4AIE5urY2iBt9UtjzS5I5ra46kpFvZ8kiTW1tTYtFcC5SlhjS5w9qSO49Ng0RBmtza2skoqrQjNGlya6sf5lF69wTS5NZWU41ROpI5aXJrq3YXdypcIGlya+vbTb+icIGkya2tjhitZOQGAJRbVcJdudNIC2lya6rfHZV6E46ckCa3pr7dIUUX+wKQJ7emajcoPGJOntyaWvEb6lC6RNLk9mip4x0UGdhfPKTJ7dRS7aYU/79Hmtx2DdXuqLILhgDIk9uiJbmVX+NAmtx9GpKbUX43cdLk1tJ+7WElQ1snIE1ui4Z8E0OKd7uJkxuC2nmbR3+neJHEyc1oR24HvsxlJ6aZjjetbJwOACBQbu3MkajQ7SZP7rBmXuZx5d/l5Mkd1Ez8hiC+zOXHp5nabVB0n4IExMmtnTCZwe3Kl0mc3D7NyG1wKF8meXKrbcAUtAotNfLk1szLPKpw4AYAIFDuYa0E44koHIUHAAiU+x2tyB33q1AocXL3aSU6i1/RHaUmIU5ucKrxEmXB+KQKhZInt1cjM94TysY6TkCe3PaQ2hYAAEBUhSFUEuW2mdS2AAAAmH41SiVP7i5tNM1p5T2XgES527WxDyjzkRqlkif3sDZmQEOfqlEqeXJbtVG7VfA6BhLlpjTx7Q6rMchCotxjZrUtAACIKrxNwSTkyQ1e7z/xsgAAA3VJREFUNQar01FhfRgAkXIHi9S2AAAiT6tSLIFyu2m1LQAA5jVViiVQbpcG5sT8iofYSkCg3EMa6IlFFN6lYAoC5f6rBmZAg8+qUy6Bch/UwLCa0jsMTUGg3HBY9Z6Yv0+lgkmU+xXVnY/DSoe+nYJEuXer/vEOPKJSwSTKrXpstajjmEolkyh3sdruS96/qlUyiXKPDavcVnM+pFbJJMoNv1V6x5c0ilSbgyVS7h3qyu0fUq1oIuUutaq6pt//c9WKJlJuxyfjKpZOj+1UsXQSqfgorh5jF6v34ETWbqAm1Ot6R/07VCubULk9/eo11ty7VCuaWEq7VHuXH1mo4nOTWbsh6FRrpMW5T63ZMJJZOqxS5e6sUfOxCa3d0OFRp7HmGVFloe8UGnDTU4fTWqrVKNZ6owqBb2cgtXbDJlX+o9s2K751WAoGVUtXkyPLlF89xPQvUbzMFIit3fD9QeXLtPxC+TJTIFfuj5wBpYv0dT6ndJFpkCs3/LNH6RItdyhdYjoEy31gXGEXxdEnVFoqhAAAnG9VdIDF9ozaD0xwvxsAhlfPLVautLBVxYnPKQh+mQNcN6Jga21sg3JlcUK03PAPym0YMPrwIcXK4oZsuXv3KOXFNPLC4wqVlBVyR9UStM+vUKKY/g9vUqKYnJBduwGutShRyuhObahNdMscAGD8vJJ62QsZ2vZPspeB8GPvqMz97VDnj9R+RmSatmMhWdV2Hl+n9iPOQPrLHMDRvapavkhr4c49dxyQLXdEBKs/CcpVtf2HVqv9dEg6F7TLpHf3e2VqPxuSybnttAxix3rvUfvBEFYu7JC+vWY9fK7aj4VwsPRvEr/P6cO3qv1MCDfz9zglFDvS/e5ytZ8IycbiZ09KJTb92d6z1H4cJBe3nwxIoHVsoHfzCrUfBeHBoo+H822xhU8ex552wXDRPkceWrv7+t66VO1HQATQsK1fZBPdOXJwc6Pa5ueCdPeGTFY/WXS64OVEE3bv4Zc/UjlcGyKKxR+M+AVUa8YxcOTeAnETwdrNxpf/fW5lNY+dgMPeuMVk++yxz+Q3SRpQbg6uvPn0khbgnhkN0ibabtu19z1VI/IJBeXmpumuM42zGquLilPf1Ewo6nF27vdbjttUD4wuFJQ7Bz+4otpUVm42UUYDxGNMJOi2ugK+Rwvm9Z3K/wNtD5IrySuOMgAAAABJRU5ErkJggg==\"\n      ></image>\n      <mask id=\"594310ce6c\">\n        <g filter=\"url(#a5834174ca)\">\n          <g\n            filter=\"url(#73421d60a2)\"\n            transform=\"matrix(.74095 0 0 .74121 .363 0)\"\n          >\n            <image\n              width=\"494\"\n              height=\"512\"\n              xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAAIACAAAAABh2tDlAAAAAmJLR0QA/4ePzL8AACAASURBVHic7Z15fBvlmccfjSz5vu3YcRLnBOdgKSmBQGkKbSAp3eWG0pQP7RYoFLq70AWWHmnpdpduF0ihULaUUkrZhKTlvgMkkG1CEkJCLifY8X3JlmRJ1q2RNNL+IR86ZqSZ0Vya9/n+k9HMO+/7jH95Z97jeZ/XAIgcFP24ylk6p6muzGykjMYiiqIMAPE4Ew0FfB5/KBx09nWOWoOMwmYZFC5P58yatbiutrGqpmlWrdlgLDUZWf++sVgsZvCE/TYm5HI7rC7LqSGF7EO5paFlxRcqG4pr68rLK6MlxVDM9z6G8cf9Iav3pMN78rBLTgsBAOWWgJLLV1U3z6o1VZhMJt4yp+MN+UMD9SMDuz9wSmlbOih3PpjPv6x+RYW5urTEKEV2cTrqioZ69z3pkCI3NsiVu3ZOqDpcWlZiigcnaNrvDAnNYNHn1s9pqy8poSQ2jA6O07te2xWROFsAkF3ussb6lqa68iIqFo8bjRSEfTbvoNUj6wsrG7Wz182rrCgtKTFXGcsMRUyk3ADAMOGwnzY4aCrk9jvtPUNdOfNpXnpR6+ebqsrksnPCPxbZ/l6H5B9zWeRuXLKisrjYVNlSV1lSUWw2UgYAAxjAEI8zTIDxeLyxiN1hG7fZfQE7LYcFLDZdek5DfU1FWZXZSFEUa42MQyweiYfd4XG6u3vglGPCzZpTXe2aM1bNq60wyWov0M7ghO/5dwYlzVRiuYsvXTl77jxzmdlMFVFUEfd7Lh6NRKPRaCgYoMZ9juH2dqtHWkuSWH7t2c01FSWlpiL+94TpoNNm6z960p7aR2r40vmfn1dfLrpJJoyo2z225Q0Je2nSyd0050vntsVnm03mUmE3RqMROuh1M33OjoPHwpLZk2DxBVecVkuVV4hqSsWCgVCo07D3/ywWGqCi8cyLmua31lRIbGJ2mOFA342Sffykkbv8tHUXLqgrFSp0KnQw5rJ5jw4etwxK9IIvue/vq2eZ8/7A+gNuhzNQVW9sqSiWul3GBydtf//RYUmyyl/umtq1lzVX1dUJeFNmIRIM+r0B5tiBV9k/nPwpvu3a+sZ6NeSRgQmf54Vn+/PPJ0+5a9d+u6SttEYaqWeIhwLBaN/ubQMBkRnU/uulpjlVMjemlMUVsH/7WL6Z5CX3ot/ObSirztcELsL0UMT42e8/jAm+s3bL4oZa/Y0ohLyDdxzILwvxfxTz/eua6mXreE4RGXW5t7/UFed/R8n6+1pqZPs/qC5Rp//el/LJQKzcC/4wt6FOoQ+j1e0yd//53SiftOb/XrZ0Vl4tRo0z6v7pi+LvFiX37AfWlNeWiC9UBGHXqPP11+z+7KlKNq9oqlXGINVg/P6HHhF7swi5Vz3U1Fyjwpcx4hsf87z5PPdwTOmzC5dWKmiQangGH/xfcXcKlq1x65xW2b/YnESdvomHXmKdPWjYMrtVp5/sTIaZXzwj5j6Bcq/4xbxlyo4qZRBz2P3jm99K65a3/eSsxer9L1QBR98tR4XfJUzu229dqIkKFJlwO1/7S8/MiX+9pUUThilI1PX+DYJvEiJ3xVuLWrQzSuXxOt79Q2Kqcs0TzY0qW6MGnvCjDwi8hb/cp/963uJygbnLjM958LtOoJ5cN087/wsVxeu+9mNBN/CW++5/nFsj2BzZ8doDgfqaerXNUI+JV24Skpyv3E9fMltXI9C6weO/SkAF5zcPPPuD82dL4nyHSE1x5XV17/NOzat233PTfKI6OQWG7ePL+SblI/djFy/LwxhEdpye63nOlOV+Ra9667wF+VmDyExp9T/M284rZc7a/cCGVvxqa5+xj6/kkyxXh/U3Gxai2gVA8/rBa3gky6HlH6+ZI4k1iNwUVV9YtzNnquxyP3NFg1TmIHJTsXjeu7nSZJX7mUtnSWcNIjeVS5e+liNJtm/3Q19ultIaRG5qrnk5R4oscv9swwIpbUHkp/JLx9uyJuB+md/6L/OktgaRm7Lqvz82kOU6p9xf+OVi/Xlq65+i6kv6O7gvc8r9zhKpl4YgSkCVXeg+zHmVS+7fn0OET6cOMZad5zjCeZH99E++iY3yQoUqO8d6nOMau9xfvXuxfOYgMmMoO8fL8T5nlXvB08sIdf7SB1TV6sBB1iuscm9bUiWrOYjMGMrP8R5iu8Am91XfwB53gWMoO7uPrT/GIvei//gcvsoLHUP56iMs4y0sQylvnIfTYDogMrL+VMbJzHr8hUWoth4wtbAs/M+Qu2njEiWMQWTHPP9PGecyvt2bvkza2jrdUjy/9e20U+lym36OlVs3lM5h0laYpMv95Oewy60fKpelTY+lfbsXr5iroDWI3Mz/5Rkpv9M6YjtxIkxf+E6cl/wztXa3LUC19UXF3LXJP1Nr99/wy607ulYmRSdLqd1fmY1q647WF5KGzVJa5lva0GFJdxTVlc+s/06u3ZX1ykZCRBShfv3M3grJcj+q9/iShDL/henDJLmpNhKjVRFAVct0gzzp2/3AKoIjGOkaU2gquMNM7S5agT4sOqVh/dTRjNyNjXoOA040hra/mzyakfsfW9WxBZGf2bdNHszIfXaTOqYg8lM+tWxgWu7Vc3CIRb80z078O90yf/wcHGPRL+X2/QCQVLtrNRjgFpGKyosT/07JvXa2aqYgCtCaCHw5JfftOKKma0oTQTym5G6pU88URH4alwPAtNw/nq+iKYj8lC0CgGm5r8LJMH1jml0HMC23CQdQdU6jEWBK7nNwiEXvNJQCTMmNkVh0T3UbwJTca3CMRe9U3QIwKXdJOcYs1ztFM7X71uLsSREdUL0BJuU+H4fU9E/pEpiUe6XKm/YiCmCuhoTcVFRtUxD5MZZAQu5LNLaTKyIHRjMk5P48DqkRgAEgIffpuOMjCUQhIbfWtuVG5MBgBAAKoKgCgyQSQNFky3wtRtYigaKFAEABnI0tNRIwlJQCUADzcQiVCIoWAlAADSa1DUGUoAwAKIAl2DAnAqoKgIJKMzbMiSBiBKDgG1i5yaAoBkDBSrXNQJSB8QJQUBlR2w5EEQIBAApoHDEngygNQEFDXG07EEUIxQAoMOO6bjLw0wAUzMUxVCKIhRkAqjWItZsIomE3AGXAEXMyYAYAgJqPlZsMaCMAUPOwH0YGxWYAoBbhdhRkEDcCANWMDXMyiBsAgKrEpd1kEI8DAGXC6U8yYMIAQLHs6IzokagLACjAIXMyCI8AAIVqE0JoFLB2k4PHASzbtSP6JBocBgDKiG01IghO9AAAhdWbDKhOAKzdxMB8DIC1mxh8wwBYu4nBMA6AtZsY/G4AAArjJZJBIBGbBd/lZDDiB0C5SSEeBAAcVSMF2usBQLlJgbbHAHBGjBRoGwAAUDGV7UAUITgEAAAUg9WbBLwdAABARbF6E0DYMgoAAFQE5SaAUI8dAAAomlHZEkQBIn2JWk2FMHY9AUT7Ev9SfgzNQgARS+JfyhNW1xBECTz9iX8pW0BVOxBF6J2s1FSPU11DEAXwdY4nDqh2i7qWIArgm2ypAeW147Ca7vFMy+1zB1W1BFGAieHJAypi96pqCSI/tMM+eUTFLX5VTUHkJ9g/OnlEgRE73non9PHUEQW4BFT3hHZOHVEQwTkSvTMxPZRGwXBITUsQBbBOH1EwgB0xnRMYnh45pcDpwFFzfRMYnD6kIGilVTQFkR96ePqQArrXpaIpiPyM7J0+pAB60VtN1zC+zuljCuA4frt1TdA9M7JCAXhQbl3D9MwcUwAMvsx1TeCjmWMKIDiBzqh6xr5j5pgC8NpxoEXH0L1JkyIUAITRXU3HBIaSZrgpADiJL3Md47El/aAA4ASOs+gYz66kHxQAjGAIB/0SsZxM+kUBgBXXDekXz0fJLTMKAFwunCTRLc7nkn9RABBzoTOqbhlIaZhRAADbsSemV/zWFGclCgCgC51R9Yq7PUVbCgDAja7memVid8pPCgDAht6JOiVq3ZfymwIAcFlxXE2fBO2p050UAAAT8KhiDCI3/h2pvxMDagfdKpiCyM/Y26m/E3Lvxp6YLokMpgmbkLsPa7cuGU9fM5KQ2zuAPW894nwz7cTkZBiN7ok6hBlNa6lNyd2DcusQ/4l0r9NJuYd8ituCyI57S/qZSblPTihtCiI/lo70M5NyHx9EFwfdEezNGCyd8lvCcTX9YR3O8Cifkrsbe966w/9yxqkpufdh7dYb9NDxjHNTcmNbTXf4+jLdGKbk9ozjwkCd4Xoh89yU3BEPerToi5jlw8yTU3LTA7iURF942QZKpxeQvI9zoPpifDfLyWm5e60sV5HCxfVLlpPTclvR+1hXhFir78xqQDd2xfSE6xDb2Rm5dzkUMwWRn8Cv2c7OyP2Zne06UpgwcdZR8Rm5PbjlkI5wnWI9PSN3qBtdHPTDxA9YT8/IHbHisl/dEInkqt1wFOdAdYPrb+znk+Q+Na6MKYj8TDzAfj5JbmsnOjDphCA9xH4hOehSEGdJdMI4y2QYAKTKfQSb5jph9EccF5Ll3oNNc33gtXCtEkmWexTl1gfO57muJMsdHsMgDrrA+SrXlWS5QxacJdED3gnOLlZKONRn0aNFD0y8wXkpRe4eG1cypHCIOlhcUCdJkdszyJUMKRzch4c5r6XGtg7hWpLCx/af3NdS5T6IDkwFD1Pay30xVe7dGMSh4HH0ZbmYKncHBjYveML3Z7mYKnfcIK8piOwwTrblBFOkbUMyhFuKFTgjn2S7mib3IMpd4BRxODYkSJP7BK4DLWx81mwttXS5X0bv48LGdWfWy2lyj0bQxaGQCbuzNdQy5IaD6MBUyHi2Z7+eLvfTOK5WyAQey349XW5LD7qjFi4TQxweqFOky+0axznvwsX64xwJMnZ73Ylv84IlQHMsHpkmQ+4PxmSyBZGdwHO5UmTITQ/jNEmh4uN2Y5kkQ273CPonFijezpzeSJk7tW/DKA4FytBdOZNkyn0Mh80Lk5A3I1p9BplyMw6MuFWQTPwqd5pMuaEDu2IFSYxz7cgMLHL/Hy7rL0Ss3O7GM7DI/Q6GyyxI7uORhkXuWAy9zQuPsHsXj1QscsMpdD8uPFwP8UnFJvdWXOddcMSYp/kkY5N7Lw60FByW/+GVjE1uJoRv80KDzuqAOg2b3LAd57wLjJEcTktTsMq9BXvehcYj/JKxyh3ol9AQRH58wz38ErLKPeHHt3lBMfYvPBOyyg2PYNu8kAi6DvBMyS73p+jBVEjY2YOXs8Aud7xYMlMQ2fGPfcQ3KbvcMIYrQQuH/lt4J+WQ+wQ6rBUMfmfmxs1ccMi9CZeKFQzOb/FPyyG3i0EPpgIhON7PPzGH3HACNyYpEGy3C0jMJffPUO4CIfqxgMRccvfScSlsQeTGu0tIai654RiOtBQEzgeFpOaU+3XseRcCASv7/nAccMr9ftYIPohGcN8qKDmn3A4XzoppH9/xo4LSGzmvdK9tytcYRG6s1wurlJy1G9pH87UFkZuAu1vYDdxyR7wYYk3reO8VeAO33HAU3c01Dj3A0yNxmixyv4ttNY3j+K7QO7LI3TWMIdY0TchyTOgtWeR29eOkt6YZu03wLVnkhkfQ3VzLuLs/FXxPNrnHhhnxxiBy4/ue8Huyye0ewOqtXXwjPJcSJJNNbvivHAFVERXxCBstT5BV7qFu3OFZq9gPCRstT5BV7pgTPRQ1Stxxt5jbssoNm/HjrVFO/UeXmNuyy70vy3aSiIqEfc+Lui+73FCC4+aaxCHAtzyZHHK/gR9vLRIePSnuxhxyP43TJFpk/Ccib8wht98fEpkxIh/hMaETn1PkkBv2Y/XWHs7sWwFmIdcOziV7zhabNSITru5zxd6aq3aHfBjuWmuMXCH61lxyw+9wpEVjWDvFO43mlPuFftF5I7JgFTHxOUVOuWMO7HpritEn83jfci8rmMJzUb347BGpCXYLd1maIWfthh348dYSYxvyuTu33DEnLi/QDuGgCB+WGXK/zIE6ryafEhApGfx+XpOUuWs3vICzoJrBeXBHXvfzkJuO4L6BGiF2SoyDWhI8XubQfDq2zbWB5TZBsRoy4VG74SmcFdMGwd49eebAR27PGLbNNcHQVfnmwEdueAz3DdQC3tG8F+3xknsv+ptrgfbL8s6Cl9zOA7a8C0LyxdmRv59oLveGyVQHVuVdEpIfsaNX9+edCa/aDXFjLO+SkPwYerw//0z4yQ0n0d9cZbwdf5IgFz7DLAAw8FUcaVGX3gulWGzPs3YfojFOi6oM/0yS/QR4yg0vok+Lmvj7XpQkH75y/wnD2auJ7evS5MNX7qFBnBZTD69NoujyfOWG7+flRYHkxcTNEmXEW+7OMIZhUgvboyckyolnRwwAFixAHyZ18I+IXM2dCe/aDc/gXjQq4bpLsqz4y90zgY01VejZtlOyvPi/zGH0i7WSFYvwxjN+tXSZ8a/d8HoAN4pUHsaepzdiCgJqN1StLJewZIQXIxvfkTA3fvPdCVrePUPCkhE+RE6eJf7muQaIxhgmafy7SMDdlu7WKvFlI2KIecTcVdK0tqrk9DmtVYHSmCs+0buld3JXOCG1G2r2rBBTOJIHlvu2ChrfMqz/dk1VdXm10VBUZEqcYmi/p//VrQ4QKDe8fn6DoPRSE7UWR5oEtC51AO0c+fQJXptQVDSuam05e251RcRcnHEx4v90g02o3KbjbYLSS4y/495d3/ipeZ5ZTSMUJxz2ufed+PQD7hSNjcUw5/pl1bWGolITZza96wcFyg2Hz1SxbgVPXDkCAOc80NRYT5bicZc5FHL2DzpGRsa7XABQ0dZQXjerscbEhEvq6usrjAZjuDGHNJ6Rr/ULlPuRb9WJtjlfmM51I4kj41W3zG2pJuulDkDHYzQVj7gZa7CltNZoAIqiDBA3FPFtbgd7/k6g3At3LBJspkQww2uT5mBNv17eUlxXJdB8fRCLCxktScI5JvTv9cGZKvkoxoe/tSv1TO3CG8+YU1Fqxs4hXyJBoXK3va1S9bbcsIvl7OJli2cvaa4sbcDhfD5EBL8N97epMu09+MBTXJdKzGbTRd9ubqysVNKggiQmWO6zNy+Vw5AcDNz/5xwpGq5Ztaq5WRFjChjhbZ231ihfi4Z/8zCPVEUDLbJbUuAI7818V/mdQa2/4qM2/JBziAFJEBMut8Wt9IISy9NP8El25o3qjvAWAIyIHpxT4Thro3/ayCfZ6pfmCpneIxK7mHGK40tKJDeEG1vXF/kkO+vVOah2DlwfihmfGbqoWnJLOAk4ruW1P8bLs7AfloOY5YtiBp7fDNKSm8IFM3RNN590N7bMktuUgmf8GUG+ajP3XaDUwCVjuXM3n3QXPjKPtBkTwURHrxfREQOAbWNBqW3hwHbPm3ySLXtwHn64c+H8jph+NwDAbcMSm8JB18a/8km26KWzsMudi+4H94qV+9OoIi7n9k3P8Er3l/lkeTuIwfneJhDmZ56E43wFGufj//04r3Q/vBQXK+bC130lgNjaDdtc8jfORzdt4pXuO7c0ymxJ4ROyJBaRiqzd0L5G7hFL7/47+CRr+Z/vzZXZksIn1HNdYktg0d4/cs97B0bWDvFItnLrXFzJlAtv7w2T8QBE91a/3iWVMazERr7GQ+15j7w4H9XOha3961PRH0R3Vwc75ss4jhUbvDn3YNrcK743G6P75aTjyMZpn07xrpwLX/y8JNawMnzd/lxJKrecVtpKpCeqMLof/r0k+VzdE5eLwctzlG248ZOxoGzF64mu76T83fLQe+tXZHqd919/INtl48arKhvLcYycB96Rn/8l+Xc+cpsOnpmnNewMXHuQ61KDeeXqSxoqazLXvCEs9HffntoEymdmIXJ0nhzu3baN7GqXX778SwvKDUXlYscKiKP/wd+lncmrrVO+c3U+t7Pj/+iKjI2sGmNf2XCmsTbYiErzZ2J048vp5/KaN/RvXtCUz/1sxPpvSFW7bsH1F88qpxuKABR0oil44v3t932WcTbPnswnZ0o9F3Xy8uTgqyV1v15VVm3C6U2h2Mdu/oTldJ5yL98qcWut6/KO6ePasze21pQq6QapF8KWJ9g98/N0Ajl5okXSqZK+q2fUfuDaxkr0URFBfGT0Sgv7pXz/nj9pLS/NM4skOq9rnzwqfe6s5grpMiYJ+8i/vc91Le9RyIV/lW6LsaGrDiUO6i68fwlOfYjCOfZwli2J8u7ZTAx9UaqZUOuzmxMH657/+hJ0RxLDRN/rd2fb0F2COYZX1kgzLRU4+LVETOUf37IApz7E4Bvdc3f2LYIk+LtWPCWJr1jo2JqEv+OdP5gvQXbEwdjH2u/JtRWzFNXItHNN/pn4j3w5sbJ03R/RGUk4HufAkx/m3ndbip5O5Knm0/LNI3h0Uu2WX83J2yDSCAxbT/w7r72IJOnY7vhmY76v8/YLJg+ebcPvtiACHvvJfxvj6fcvzd+26d3P5ZdBx/rBxIGpQ7XAbQVI1OaPnHx7a8aUEifSDFtZb3tmeT73u/ZOqg03YZQ0noR8Yc/wb98QttO2VG/OtY8vE39z6NOpVzk8dyUu086Jz+8N20cP7v5M8DbbUg1K77z/h6I9FSPHZlr2FUROfsUYAz8hwtFAgPa/8n5vkJoQU5BkcxAvNNeI/OoyB9bOvJGI3IrQf+rDtqaKoliFgTIYi0vSNQkFIQR0NBSjgjar79TzeWy2LN2U05Z5N4gLa9a9Nmm9WZTEzemGNr4NAGC8cHm8uKFqSWtFmZGKxuMQizNMaCJyqN0RGLdFIlFG1E4VyUgnt/Nh5oZ5Iu47clHy6kJaWNNDF0S9Cec85oNEiPpZl50XooPRGBMOeKwnnPzb3bmRcELZ9pv4hgWC7+pfn7IzuCVM3kxY1G1L+W374x/lKkpKXz/f0YnWeoHu34OXpC4Foy8hbxlQoGubUkVJ6pw//uebDgvbKHTosrSVhfsF9y0KH4NSkW4klhsCB6/bJ6A5Ee/7WvoeOtE+UR0MftgtPvkyF49XuSizUi+9GfjGflvuVAnovq+0Z5y8cURSe5IId/7lRx1a3MbUnHsmSyok99MPvnp2Ob/1W55Ta0Yzz0b9q+QZR2Us33z66NI2DbYEPbv3KlWU9AvrfDf/7BCPgYBg15vXsUa//HOvLK/zaN9jBwD2yJF1voTcudNomeKnBnOtQ7W9wzlaWvvemPTrXm37zwUAuGNc+qzz5qhym3XJsmyWvu33RwLZEng6H7ycMyq664qPObykRRPuv/O8AwAArVpcZBbjFeNX05S9etDB8Z85aj+UIxx961O9IQlrT8x2fGo4/3GXhPlKRPAl2dVQgocPD0UyH849uvefc997xr4hyf6c/mN3Tuf7W6dk2UqG91cyipCGjKty7oG7rymtqU1atkl7HHbPlq087m2/5P6LF0jiv86M9V0609s2aXAGRtwW3eKQdRHWpk2w/J9Om1NVbDQA0MFR146tvBzoAMB3L/WHdbPz/tKGHaNXDyT91uKnO6pgw1zuNXcn72hqXN5YU2Iu9r58WNCdsXvf/+7iprzWf4aHrTf05ZOBIkRYRh/kQv4lllZr5tAZL5zbXv7C3W01dWJrpM9nvcSedk6L06s03zeeBGh6RW1416Hqu1oXLRbxEQ+OG/52e+ZHEeXWNF7vPVD/05Wn1woKtRQN+I5cEWW7okW5XSh3Mo674KvfXElVmcp5LPj2u8Ne09Crbw3kTqoRwuasI1LSUgByA8D27WBYctoFq2fVlhRRxSa2ocBQME4znr6ubdb+LBkZtbdEJahkY7Iw5AaAeFfX22BYv7KuYlasItZQbDYXGQ0Qj8cYholGAxZrsGe0ZyLXHikm7ckdHVewsIKRGwAA4tu3A0CR0UxRZrOp2BRnwlGGYaLRWDTEawClCOUuOKJR0TtjaFHu9M6inBAWSFaD3+6wcr4sxMmtwcf19+ROIxkafH45obRXu72c4Z1lgDC5tTchRkeUXBZHmNzaq9zhzDi1MkKY3Nqr3bHB3GmkA+VWmahsfvVsECY367yJqoR7lSyNMLkjmqveSk5/Eic3rT25FV0DSZjcAc3JHcPaLR8erckdU9ZZkjC5vVqTO6rsEmTC5PZrTW5GQVcWIE5uzbXMGeUiNwAQJ7fmwrYxMgarYIEwuTXniRrhHetCEgiTm3OVsVqElXWZJUxuzYVmof9X0eIIk5vRWvVmFB1lIU1ul8aeN6Jw4AaNPb7cjGrseWMKRw3U2OPLzWca+3jHlO12kya3QdlBrJww+DKXE4NfWz1vhVtqpMmt8ARUTkIKRm4AIE5urY2iBt9UtjzS5I5ra46kpFvZ8kiTW1tTYtFcC5SlhjS5w9qSO49Ng0RBmtza2skoqrQjNGlya6sf5lF69wTS5NZWU41ROpI5aXJrq3YXdypcIGlya+vbTb+icIGkya2tjhitZOQGAJRbVcJdudNIC2lya6rfHZV6E46ckCa3pr7dIUUX+wKQJ7emajcoPGJOntyaWvEb6lC6RNLk9mip4x0UGdhfPKTJ7dRS7aYU/79Hmtx2DdXuqLILhgDIk9uiJbmVX+NAmtx9GpKbUX43cdLk1tJ+7WElQ1snIE1ui4Z8E0OKd7uJkxuC2nmbR3+neJHEyc1oR24HvsxlJ6aZjjetbJwOACBQbu3MkajQ7SZP7rBmXuZx5d/l5Mkd1Ez8hiC+zOXHp5nabVB0n4IExMmtnTCZwe3Kl0mc3D7NyG1wKF8meXKrbcAUtAotNfLk1szLPKpw4AYAIFDuYa0E44koHIUHAAiU+x2tyB33q1AocXL3aSU6i1/RHaUmIU5ucKrxEmXB+KQKhZInt1cjM94TysY6TkCe3PaQ2hYAAEBUhSFUEuW2mdS2AAAAmH41SiVP7i5tNM1p5T2XgES527WxDyjzkRqlkif3sDZmQEOfqlEqeXJbtVG7VfA6BhLlpjTx7Q6rMchCotxjZrUtAACIKrxNwSTkyQ1e7z/xsgAAA3VJREFUNQar01FhfRgAkXIHi9S2AAAiT6tSLIFyu2m1LQAA5jVViiVQbpcG5sT8iofYSkCg3EMa6IlFFN6lYAoC5f6rBmZAg8+qUy6Bch/UwLCa0jsMTUGg3HBY9Z6Yv0+lgkmU+xXVnY/DSoe+nYJEuXer/vEOPKJSwSTKrXpstajjmEolkyh3sdruS96/qlUyiXKPDavcVnM+pFbJJMoNv1V6x5c0ilSbgyVS7h3qyu0fUq1oIuUutaq6pt//c9WKJlJuxyfjKpZOj+1UsXQSqfgorh5jF6v34ETWbqAm1Ot6R/07VCubULk9/eo11ty7VCuaWEq7VHuXH1mo4nOTWbsh6FRrpMW5T63ZMJJZOqxS5e6sUfOxCa3d0OFRp7HmGVFloe8UGnDTU4fTWqrVKNZ6owqBb2cgtXbDJlX+o9s2K751WAoGVUtXkyPLlF89xPQvUbzMFIit3fD9QeXLtPxC+TJTIFfuj5wBpYv0dT6ndJFpkCs3/LNH6RItdyhdYjoEy31gXGEXxdEnVFoqhAAAnG9VdIDF9ozaD0xwvxsAhlfPLVautLBVxYnPKQh+mQNcN6Jga21sg3JlcUK03PAPym0YMPrwIcXK4oZsuXv3KOXFNPLC4wqVlBVyR9UStM+vUKKY/g9vUqKYnJBduwGutShRyuhObahNdMscAGD8vJJ62QsZ2vZPspeB8GPvqMz97VDnj9R+RmSatmMhWdV2Hl+n9iPOQPrLHMDRvapavkhr4c49dxyQLXdEBKs/CcpVtf2HVqv9dEg6F7TLpHf3e2VqPxuSybnttAxix3rvUfvBEFYu7JC+vWY9fK7aj4VwsPRvEr/P6cO3qv1MCDfz9zglFDvS/e5ytZ8IycbiZ09KJTb92d6z1H4cJBe3nwxIoHVsoHfzCrUfBeHBoo+H822xhU8ex552wXDRPkceWrv7+t66VO1HQATQsK1fZBPdOXJwc6Pa5ueCdPeGTFY/WXS64OVEE3bv4Zc/UjlcGyKKxR+M+AVUa8YxcOTeAnETwdrNxpf/fW5lNY+dgMPeuMVk++yxz+Q3SRpQbg6uvPn0khbgnhkN0ibabtu19z1VI/IJBeXmpumuM42zGquLilPf1Ewo6nF27vdbjttUD4wuFJQ7Bz+4otpUVm42UUYDxGNMJOi2ugK+Rwvm9Z3K/wNtD5IrySuOMgAAAABJRU5ErkJggg==\"\n            ></image>\n          </g>\n        </g>\n      </mask>\n      <image\n        width=\"494\"\n        height=\"512\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAAIACAIAAADL0xhuAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9abhcV3Um/K619z6nhjvoaraswfOEwTY2hthgEhIGYwhThm4yPoGnkydJp5M06dDJl490p+nwJOlOJ2SAfIFAGghhsMHYxpjJEAzYGAzGxhNGtmVbsmRJd6qqc87ee63vx646Kl3pXluy7tXAfX/oKdWtOrXPsN+99lrvWouwjGUs40THjh07Go0GM2dZxszGGABEpKoAmFlERISZ0+eJ6Ij8bjo+ABGx1gIoyzLP8/SnhPRbqlpVlYiUZblq1aoj8us/VDgyN2wZy1jGMYKbbrppy5YtIyMja9asSdRMRN77ycnJiYmJEEKe50SU6JuZY4xENMzdw69rLn6GIKL6h0QkrSUikqg8DUNVp6enW61WIn0AIYQQQoxxxYoVR2QYJzCWqXwZyzi+Mcy2qrp3795vfvObV1xxRZ7nyQROjGmMSVYwM3vvjTHM3Ov1ms3m0gwyxmitTetHCMFam3jce++cq9cVZq6qyhhjrS2KoizLRqPhnAMQY0xm+/j4+BKM+fjCMpUvYxnHGVQ1hJDcI7WrZPiv6b+JFus3E1Gmz2NgERtjQgjMXH9yUZEGUI8wDaP+ae89EdUmefpTURSNRiNRP4Dp6elms5kWgxhjjHFsbGwJRn7sY5nKl/FDgTvvvLPdbrfb7ZGRkTzPE7WJyBwSVFUR6fV6IYROp3PqqacexTHPQVEUzExExhgiShxXs7P3PvmjjTEiAqCmyMSJNWmmc0wkXvPmgUjG/pFymtfHJKIQQlmW7XY7DSANrPah1zuGenjee2ttctGks0u2fDLY02fSOI/saI8v/PCe+cJ4/PHH01OS53maP3gaD0p6yNJECiGISIxxeTO4BPi3f/u3k08+ud1ur1q16qBu306ns3Xr1rVr165bt67b7bZarWQD1p/RIcQYd+7cuW7duizLaj9yTW2JR5Zmp59oF0D6N/ko5hi2AJKPAgOuTOSYGHD4IiQ7Pf03rQTpyHVMcvGQpkZNxwDmLCTDm4n0gTnniKGdRP3fA5eo7du3T09Pb9269VWvetWintGxhh9eKt++fXue51mW5Xme5kZ6P+1bq6rau3fvxMREMhDw9Bb8ej/ovY8xVlXVbDaHJ176lfRfIup2u1VV7dmz58wzz1zMcz3RsH379pGREWNMsuMATE1N3X333ZdeemmWZYn1sP8tq1/XZBdjTPQ3H2oaTdyRona1qZsCdLV/o/7Rp/+0LPC7wy+SGWutraoqy7Lhs8AQ8WF/psYQvw+7pzGkIak9MEtszFZVVZN4zcJp3hVF0Ww2h1m+fj1M3Mm/VMdOh31HvV7vC1/4wvOf//xk9c/Ozm7YsGEpz+5o4YeFyutpWc8B7/3evXvHx8ebzWb9lGDwbNVbv8PYuM0xFtIMrKd6bfqlafb973//5JNPTvZR/afZ2dmqqqanp5cpPuFb3/rW+vXrG41GUjKkhXb9+vW1mZZ4FkNehfkQY8SAnYcdtQdFTTG1QyZ9fo4VnD48/GZ6p/7T03l+DqoVecoRzhnqnC/O4cH6r8MLwIHfXSSkHx3+6eHfnTOkYcwZ3vB/h1/XTv96B7B9+/aVK1fOzs4WRfH4449feumli3VuxwBOWCp/4oknhj0kddjnoNR8LLjYEl9gENTatm3bhg0b0jJTLwPOuWNhqEuDG2644Ywzzmi32+vXr5+dnX3wwQcvuuiiYQfC0R7gfphDxOl5S6+T7iI5eTudTlmWaZHeuXNnq9UCkGzk5AFf+pEneICG6KC+uATZ/w0sLE4cfP5AMABJXyYlLNGpphXiG9/4xtlnn50CpCfqDDqhzmrHjh3tdttam2WZ935qamrYQ5Ks4zlT7li7r8PDqx2L3nvvfavVSrSenLlPPPHEzMzMtm3bXvnKVx7FAR9xpCsgIrt377799tuvvPLK2m9Qb6sXsOCOFubTXxNREvwlA7koikcfffSkk07K8zzGOD09vWbNmuS7xwHu4yWFBgBIZ8FDVnN6laZJ+mv/9TyUTfMsscqJbPYTTg4teIuH5M9JP5TcnidkItKxRWSHgWuuueaMM84YGxs7+eSTY4x79+5dt24dBsSdPlP7HI+Wc/AwkPg60VZS4Kb3U7Au+dlvueWWSy65ZOXKlRh4DI7985oPaS8CoPaBhhCSGyo5LtK/tcfjeDnTYU9dPeb0cKY/1cru2oV9dCAe0D7RmrScsGJBG/tgiIMXqgDt4xcTBYDSUktN6lU/XfM0faanp0dHR5988sm027vyyiuXZjCLiuNjPhyIhx9+eGRkJMuymZmZW2+99RWveEVyN2MoVq6qSa5UVVUd4DrWKGBhydcct/tBPZ7DFJCOVhTF8RLwmZycTKnkSZhRlmV6Medjw3KLOfroYxxzMipDCGmbOHwic4QZRwXDe4ph+jax2ucL6b9QAAp38Gc2Wff9z+NgnL/UnrE5aVC1HSAiN91004UXXjg2NlaWZTKJjl8cW7z2dFAUhTGmqqonn3xy/fr1WZZ1Op12u11LVtMWtbbK0zt1SOpYxhzvCg4W9aoXqkQKIYQ555W+kgI+6Qocm5LbdLJJvj06Opp2IVmWpZWp3pGkN7F/WOw4ssoThgVzRJQezprH673/UWTzIsIwmMD7SGGulzyhH9SZx5EiMdAQ6vfn6H+wOLr1+VCrhOsIOQ3qzwCYmppKYiRVrbfyxx2Om/mQJCi17Le2Q+v8sbqwAw5QZc2ZSEdl/IeBNNphmS0OoPj0ov4kgLTOHUh/wziKF2Hr1q2jo6NZlrXb7Tmr1Jy7U6/KqTqHiCx8Usc4FlZuHAOB3IEtnpzgEpNnXM3A57NPNAJVGAoHHAEAlPq+/sHcU5CoqrDl4feXCnM0PAeadPX2KL1IFH/UIhbPAMeWDOCgqCV6NWfVqthhBXFabzHIFqupbXjaHEc8njBssiVTYlgxOcf1X3uZU3S3tkEOetgkrJ4vWLcYSENau3btzMxMkhUBSP5xEfHeD3843cT0p/qk0p/qbMbjCMl/ks6xTk3C0MN5tHkc0KgiMWpUG8kGk1e2UdkGkRJpGisAAZQABsgqjMKIcnoBspjD4xBQBJQIHghAfCoBzBHHHFJOxV7S6xT/rN1cyfGVZkSMMT2ZxxGOXWp76KGHxsbGnHPtdrvOrzlQOfuU/60L98wXLl/Kjd58OFCJjCE77kCJ+vCJHFT2MCc8OGfXgqHdDICiKGKMnU5n/fr1i3R2tV9IREIItXthzvgP1Dtj//ohx6NJPryFqt0Oww/k0RSuDBCB2W65e2pmz3R3slNNznSnOkWv8Hs7vSpIURRFWZU+lD6GEKKilH3b3OQ5SfbTmIWxlLus1cxH243Rdmuk1XLOnLmSWs18xejYxOhoq5nVG+bFtiaHr/Pw7hwH82GmB7VOMUkOgDoId4zjWKTyxx9/fGRkREQmJyc3btx4ZKeuIgCsIkQDGa8CJBEMgBTUD7sLABUhnmeOzWNdJBHAfhkNQDry4Lf2PwgNRGCcvCh9xe0S3JhhonziiSdS9k2qQHKkdFppMgB4yoof8x8igBiqIKPpjhARac0Cfb1cvfFCMqY4CTAwcByYfcG8fRa9AlRTybDSDtD0PAx/ZZ/8jgd/GFAAQH2/hKB+YAiqiy6fThciKpRgkjZchEkgBDYKaLKjVUiFGXtm/K69048+sfvR3bM7p8rtk53tT07vmZ7ZPdlZ3IFSvYFGq5GtXjG+bu2qifGxc8d17ZrVWzaddNLqsbaDSaekAsbg8rEmrw4BGLjyFSCBCqAgA6ACJ128BQBBfwuBeqPw9FH7J8uyTOZOCssfkcuweDi2qHz79u0pgNnpdE466aS0Qg7LCp85gpSGXT2BVZUg+5ZuIqjGGBU8SNk4YC+ftmB08AXGzPP5+lEeqLQGrlKxAIiVl/Ze1NqsOkExme179uwZGRlJ+5hnkrQyPT2dpClJR5gCSocTq4iVEoOGRyJpkscYCeB6pR/cF+4zvhJRf7aLgIZ0frRvJY77G4V91lDN+gvBXJuxdlcNwoN9lq+UDJv0X4GYvkkghMWngJh4TKAKGLCLAmZE4OGdM3d9/9FtT3Z2TfV+8OjOh7Y9GjTlJhBAygQyAIsqz6cTP0IYrlxGGgnqmAzDw0iMFKuMsXJsdNOGdaedsmnd2rUv2OzWr1/fym2UaJKEUQUiQdkYQxBRZbZpJfMRjbgXNgNlIOcVACwdzoyaUxY4ldtN5kgIod1uH8FrcmRxrFD5jTfeePrpp7daLWZet25dEmYMB76OlG0uEpgt9tt57YvU13ZcehEUjTl5DQNERAwJZweKXFgcfJxehYhoYJ0PvrWPKpKFiZQvR7RkYYzacK7rR2NA9CkaMT093e12d+7ceckllzydA37nO99ZvXp1s9m01o6OjiYHcS0JP/QB7tuD9w18BoCSTLpGpv8QB0AhGjhLv7FfkC39Jd33uad/cMOZtOxb30q1qC55rdKjQzT0TYXC1oZgf7+u+ydQLg4CIALHAPDY7tmHdk7f88iu7219/MEdT+55cnen08ltbm3mfVChLMv2wBqGJYYGkkgSGcJMURf7eesHdfrRHY0SokiIjTEApEIqBCEVy8zQKcmaRjevHbnglPXPOW3NxWdu2LRuBdQHbtLQOqoiAGjgNlGRwdJ++KdTu2TTgFOGUVEUMzMze/bsefDBB1/96lc/04uxCDgmqFxVt2/ffuedd77sZS/z3s8RKiyG7GR/13kyrCJEIKIEYrtvo02J9yH1tFUB4PY/HNDfm+uQSKuOKTLV23PuKwBoYJjvO+ySqmvS5R2uVV2719MtGFblf/e73z3zzDNT4G5mZmbz5s0LHHZ6evqRRx4599xzU2HS2vmYDn7Y8T3tEygNonBp+8wKjkAYeK4aoQu2IAaxKqkSKDkf+mHVQakq7juyasfIvrvFICqHIng89EXXt7tJQH33BaBAA2F4WYghMDMxY7Gt8nIa+cgPdnWv/vxtn/36nTunK5M3iW2EkqhhGEryDKiSghz10HcA9m2XpC3UeXaZRwqq/VI2AJJQZOCq7ueFERFDaqGagIdTq7z3IyMjW7ZsefWZOOusM04/9bRmRiqwDAZE4Blcr98qacEFxJhDkyDXIZn06A77Vbz3n/nMZy644II1a9YsTb+OQ8JRpvJhBUVtg8/MzCSh8SJR23DQo47ICfezlZMnTjWQAkTgA8cgAOI8U9TUJ0TS96Wk7/TDRCAeeGETpfMgUE6ckpslib0W3ygfjgL1er1U97UuDA0gPdO1QktVH3vssVWrVvV6vbIsd+7cedFFF9VH897XNF1rjYbfPLx9lQIS47A+bLAMI3gPwDrXp3VN/m3X/xpi32Haf4psImMFYoT3oSiqqqp0MKjUtibLMueMMYMIB5L31g8YG6qUbMDkIB+sAQTjEgexcRhs9HTRiRwlkAHke7B294z/l89+46NfvmtXaSdQhBCUmIytREEGbJS4hSKKxnSxyAAcFQLNdHEFGzx081VIkGidGYPI/MAGIiKCYYplWTrnjDGpUHsjszHGKbE5y6oGnbVh4ooLTv+RZ59xytpxUIQK2IBsHMRIzOGy2zDz1IHQNLBk3ySty7Ak+ljAUaPyq6+++pxzzlm1atXatWvrN1NthGazqfvn+ywe6tsWB35S1v0IPBGHiCiYmdMtFoKFx8DKqA9CRB5ZOkJyuRKQBO5pogxMPNlXdShFc5RVVYmZ95HIYqNOoZyDAwtJD1vTSaR11113nX766SMjI8lo+qM/+qMXv/jFL37xi9MXF8MzVg+mv/uR0F+HRETEpFxzCYW6PVOz23dPPv7k7I6p4onJ7s7p3myn3LF3piiKVM1Kldia4SUKQ1ZFOqPxLDbybKTVGG83RluN8dH22Ei71ci2rF81PtpeOzG6erw1ksFAoBEaIM10a2MVAJjcAhDvOVvsxDTxPlrnBOhWyDJMz/pP33jT+27Z0e2VXmJyo2cMQvBlrzQravaERiJiaK3ZWDyEWDGzHcw1DALLRgWAEFRoYGMZItLQSz7rGGPmclWtgiciMVmM0TBbJl/2mHDqpg1nnXHmKy7ZeNbmk9a1iEIHVYFGA5T7yM4ejk1UP/MHytvSI11V1dTU1OTk5AMPPHDVVVc98+vzzHF0qLzb7e7ateub3/zma1/72rrGyBwbfLHyM7UfgRSR5DwVhfeau6CqIAMyApQRU1PdmU5321RVlmW3U8x0O91u0S16vW7hvd/j+ywwTAEARig4ZxpZnud5q9loNBqNRpZbtyKvRkdHV69cMTE+NtLInOlvBqv03YH7r+8EFD3YbuBIIl3eYb1jenbruzAcba7lt+kzcxwyN99880te8pIUIFpYNXgYOy3vvXMGgIoomJj7YS7qgfOu8MM7p7dun9q6Y/L7D+146PHtj01X3vtYlaziDFnDiEFFKmNTAZA0flUNIXiJjYHgZNgQA+DhDIhICYBEkFhiY8x0qQw1iM3MrBxtrF+9YsPaNSvGR5+9Md+4YcPGk1ZmyR7UkqEgBRZ3J55oMQgAWAYpVKIxtAf88eu+fsMXv/b4ZFmxI85SWIhhAGFANUKFJAJgoooWd8mpXeRIpi6Y2YJJqy72d7n055RplGUJ7ueLEEzfvIilklGwMAv2aZRZqpUNfcE5J//ki5978dmnWKYQhQ0/k2lUP8PDGcgY6mp0ww03XHjhhevWrTsW9C1HgcpTMM17n/xNc1Ix5+xunol39eDQiH16Ugtgarq3a+fub+/q7tk7tW37E9t2PLlzsjfb9UWQIOyMiGhQgTIZy2QBCGBpH5UPfLiEVCyUKNnWKgGAITCzIgdEJVIMGetIu7F6YsX42NipK8LE+Oi61Ss3rp1Yv2p85dhI7hgIhyGiOgwMy70TwdUXvL4R8yUiDieaznenho2aw7XQ+9aixMjGKbB7qvPY9idufrhz/wMP3v/9h2Y7hZpMlKMaNg5hhsgQM0BRKc12gjHi03gG2sX+LirMoyq1A8mRKilBBiUCmyYCiKKqGvu33YCJiKKvWhYbVo+dcfLqs7dsPOf0zRtPXn3yYkseZKhGigLEICMKDnvUjT3aMZ+4+Y5PffG2J/b0srwpMVp4gYoI2JKxBBNVRMTS4lrlgFVV1v5+VMFCDECdERGS/nPCIFVVRMh+j5NqVFVDZKFRVQTgtNAqq0CVWYJtdjULUdeONi4/9+TXXnb+pedtOFSCq5/qOcqLGvU7Okix3r179549e+67777Xvva1z/QiPQMsKZXv2rWr1WpZa+uak4cC6XtAktSUEIEI2EGsQ5Kol2EASFSqpSA6PFuV3LYn9t778I77tu2+75Entj6+Z+90p5JadrDUiKQQJSJDTBozZ1evXrF29crT17TWrVp56sb1W9avWjNmWgyCRwzRDKw8SRLGQRgPTBgobQEQKawADElh1/oiKCKRAlYlkEr/xMnGJfHtQj1AIBYZdJCRQMxQDxjA9h9JTaJ+BnmFm6qwdWfntru2fu2Ou7Y+urOsQphP73+MYfP6kc0nrb7orM0XnbX59JNXtkgIERpBmSLSwOWm4L7+XUvARLVJUTJw1veXdh085OlPC6T7i4JJIBHkJgt9/yc+/6kv3d6RPCqLBOOssAua+SAkRe7EszUCA4oqAWodWxEqquiOj5okdc2y5CwSkTzPW63WG190yksue/6mVQ2rEUgru/MKJxUMi4pSlsqDEYEhKphjysx5PQfJGLr22msvuOCC8fHxo1iTa0klE1VVzc7Orl69+jC+Xg6i1elxTnxEzNA48EwoNAImsvOAGzgrFOhEbH2ic+tdW79739bv/eDhooxFkEhWwSLKTJaNSnWkz/hpgQyLSN8GkRBjYFLnnFcCQNEbDaOtfOPalads2XzSujWXrDMnb9ywdtUKDOuaIRE2CkTBDDMoihRDZRBgMoVR0MCyBA9J/Kje0hLTYUlxDwkBQFRr+jpoBZJHqwfkgNVIgJJJw5PoP/2dR++8695vfve+HXtng2nCNAQkSiT+qX7qmAAHT8aki72i7c7atPYFzz7rWWedduGWHOCawTklN2nsSp4bGAikgirYKdl4wBI7p2rugYhAKMs8dxJjKUYdPzaND330+htufYCb7cle0SCYqtPKs8B2NsIiWlDGRolKjT6KIW6wreQghR+OQaSdZaJyVU3heufcTBVbKC46ff1Pv/QFL7zgjIYRJCcPuaIsmrmFaghibQ6StN+uj/l0/IH1XnPv3r2tVivP86XUoQ1jiX41uVnrNdN7f6jB32F7RAXMAkisSpM1+ykSZJKqxGiAFMIjj+yauf3eR7/y3Qe+94Mdu2c7UHbGlMjSLpuZGcoaKFZQkSVxaBwIGiqrYplVY4xRVWAbQxqbAIBBRKScGYSVLT7zpJXPOeOkC87YeMbJqyfG20AAGMmNKFDt02XKYuUkV++nsIKIhlOcBhl0UVXnzW49QoiDX8TQw6cDLb+FADH48J2tuz556/c/++0HuShClAAizoQQYyRRZix2SsuRQiDHhkgikzIoxihQZs7z/NJzNr30olOff8aaVRMtEAfJxFA28CbTPnM7PfSxryYaukE6/wSOACXDvP9JjoAXfHfb1N994JpvPbwLbiRT9Z2pdiPvhcq43Ci0ClEDZzmsFWGJMHx8XGcMvHnJ7V6X3hvJeKbyLh8VCWtG3etfcumrL79gTQuGMOBuBhiiQAALkM855lNS83Cdy6qqQgi9Xu/wDNZngkWn8uuvv/6MM85YuXLlypUrk07zMGJfAKCl+ghicg0FQhCQOGOL2iYve1nGIHf3tskv3XH/Ld9+YM/eqb1Ts54M2VyJFQbMeTkJNgpWJk0uU1WRoHx0dEVz9nG17IlDoUpCYGZiA3BI0XwDFbB1bK2P4oO4vDEyNn7JmevO2bT6eWeedPb60dymcnRGyXqFBUgLpggG1IIcwNAoSqIkRLav2BGoLLqPPgawDaLKlOT2GkrrLKIHm+1Pdj75tbuv/ep9j015Y4yUM5bzqP2ljhkEIRGVIHR8bPzJGWhAVZBGMi6S9bDCtiWVsOtVsZln552y7vJzT77i2VvO2bwaGsGmzlYXUabhRLb0uEpf8jh/dDxINGygGqO3lqGARjADpiv8hdvv+fsP37irbFTqIL7ppKwkd9aoRAlEFIAoDOWB9upYBw3FrurovaqaUKixQjYqjDEI5cqxkYsvvOBNP3725g0rMoiGksiAMyUUQXPurwf1kRfmq+HMjMTmu3fvTr3Mlriq9uJS+Z49e6anp+++++5XvOIV9X5wTiX4pwupUonkoigbzSaAGNUY4xWOBMAjT/auv/Xem2773rYndhuQRxZCIELuMsOIviRExyZp/qIipMgJWyGoqolHacMuQsakB1FEUlROVY3N+j47xKTyTnua4IWZmVKKptRPrZWqBAmyZjM/df2q55298bJnbT5r0+qJXMEUyAZAARY49UwEin1zvJ8DtVQ1xfo5kZJkhGTyFPP4zl0/uO4r3/3iXY/trdiQZFq6Wm7MBLBIEBFAmdkwqnhwH/GxBi4Lm+fKjUhGAcTAWmVMU6VvtlsAfFkBwpBGnq1YseJVLzjr+Rc+69yNbReVY0HOgWzlFRDDMKa+QX1f47w3TL2CiQZ5DhoJAoKqIwSQFsG+56Nf+NiX7twVMs3aJvSQki0JhvqRfLb2OCoQWE8iDDVKDeQkeMdKGg1xCKH0oTUygqr7wovOfNNrXnTuySvgC5hGZPZA42Bz4Smtz+Hf1UH6NBEtpbJlEafu1NRUKhA8Pj4+XJT18PiiE8BAw4IgKgFgYhsFBsXnbn/wX79y3x1bn+xWoemM0eDLqsGiJg/kvLJqdAguFhrLyk30I4CiIOkn+5HwUXKwJNQaGGYGWERCv4aAggSiRGqIiFTJJTFZ0sOoqoEyczCWRKH9PWOEiTBRcf4pa887df1l5206/9Q1a8eaAIKyEDIIBpl1adu+NHr2CiDvnU07ANcj+/lvPvz+j37qe5NtrjpN43PnCjGiMPDsC2/zlChIhomZyKQCpLk9JhKVnxLMVqDBS7+SKoM0EinbjDTGsgQkz5uRTC9oJJOhMLE8de2Kl73wkh9/wbM3TuRWFRQDWUqlsgZLWIzKQ9Q+FxpAHIL4IFkjY0BUiIhFfYzWOQJiwLZdvf/zL5/66t0PiW2RYTVWRFBVzhAgha+cPYayYBZAPYNqfXBfUeZ9u932UYqiaOaZM1QWvcxwl5oG3sbZS847/Zdf98rnnDJqy8K4CG7XB8TTM26Gg891mmjKj6uqqtPpLE0zr8WaD7Ozs4nHm83mnPobh+dgqQYFN1TEK6vB43v1i1+59SO33NeZ2ltWPbaNQC4KWEMG6VLeMOTUR9+JArhmsI1KTRMeEonIkBKUJPlpUS1B2aODga2L0WuUJH5LqW5I3jtVqKTyoQAQQ4wx2hHvPUiyLEtZVKpqLYcgDGUIVFglZcwx28p7JSugVmZOW7fy0nNPvuKC0559+oaC2fQlI0iBoFR6cLEJMgI+KFvqRnz2375zzee++uD2KWqMkS8r2EAOAEswCGBLbBWx3izH0A9yGGM0lIs80iODWUEr5wyRpAIQYQM75Ux6JTMbxOFbRkTdKFneFqWq7IxndMFpJ73qiudecenZMaJpQYB47yyDqJYAHRzS7w27v3wJFL0aVyVtjIAVnnHjzV979zVf293plZyzy8VTxmQyE7Q6TqLL+6Xp7cfmJgtlN6eYOyqrEMghH+1FGomz3GzPVD5EHWW54tmb3/yTV5y3eYX3sS4wd6Awd2HM6W4RY9y5c2eq1L0EeaGLMnPLssRgPUzvHIGsP/FQARPIbn1i9l9v+upnbr1nxrseHIvPDDKKCD6AhJuRjKUgIom1mVmpnwXjCKoqBCYroCgACGytHh1qiAoiNcYwQ2KIUYjIsIviE62LSFQBmI1hZvii3/EuiECNMSAjIhjBMRkAACAASURBVEa8gJVdimeSikGERHKGQQgRopZYDAnA1vzY2Sufdeapz7/g7NNOWmH7YhJeCg9LmI527NPfeOB91375Bztm4JoaA6tEqDNqpdIoxDYY66OJiowiab/txqCSlRKR8OLWDDlScBqV2CsHJcOOWBE9aTSsXlUpF7aq/bQjhNK4PMaYHLv9wgnQLLe/8oKTXnj5j5y+eZ3pR7Ah/dJdB2fzvmpXASCE0ia/rWogYyAEDxFwHsGVD5njh6b5PR/+1Gdvu0PsmLPtqiyBoEaNHh/XuZYP1LZ5ehGrnmu0O5WIMY4NQpVzZK1KyQExNuUFmF5ndnwkv/iSC9/2+ouSpxv7F5p/muLpYTZPmUSpdsU+g2zxrsARP2JyFaWWjAtfguGGOPV3aagWNWlA2UXWrNhlUnhuPLhbPnDdzZ/96h1inGH2RUHm+Ah/HWvoJwTFauPaiSsuPvfy808/a8PYRDtDBCgIK5MADGUfHdl59yxe4Qj95rzEqgSNRCjV5gyVipgVtgJINEP3ugfoY9dc/+17H3CtFaIk0ecGEsPRUhAdL5jh9oj2Lj/35J/+iUsuOXtT04qqApx6VjJHwKTyIyzCnET6NThGVTCZ+YtmxU7B7Rtu3fo3H/xkNzDYFmVka1U1txyqgkiZbRAJoryvSs2JBpPlP/Wjz37zqy6ZyBVwPgVqEFk1BrCzA6kVJHpmWkAmMFyxrn/wxWTzI0zlqdnVofYq3E/br2SZhKJWs8aOlwyvGEHvkU7zn//1k1++/a5Jb5CPipIveiOtvPTHjVjqmEL0JduMDJNCQmmkPHnVii2bN7z8eededOE5Y42+5jnr30OPhRK7ZTirfiBtDEUkZw0DFAtIuatsve1Dt3zvW9/oeU+uJcZ5H5nZMkmoFrsy3/GOcVP2AkpkPoYta8d/9uWXvery88ZNII0wruthLWck8BVcFgcJbyIQEWMpVcNfYHMcAQOUEbtLvP1dH7vlOw+2x1fEsggwDHGGO2XFeZsYXHWtes/HR2+dQ0WOqlIeG8t/42deedXFp+bahTGRchM8rCuCNiwlw0XJVnOkiwcg8eFwicfF2/ceyeOWZVm7llIkd4FVaNj9tF/uPqiSbsYGyCtCBgTg766/9Zobb+0VFfKGD/BB8txJ9NBI89QHX8bCsNZWwUeBMY6MlX7tL9hi52irdc4pG658wXN/7KKzRpsAe9HANI/oKFYwNonnZFCSjEStlsqcqkmRlu+74Zv/9Pl7qqLwVcdlDRGtYjDskrsfi2ywnAgoJlvjq6c9hLJWw/Z2P7ZxonHVSy5/w489f7xFDSNAhDDIKCGKV3Ip4atfNT1pzOcXm8ZQGcMAJFKw5jNff/DP/vHDPWorZ+J71iBvNGcLX1ZhJOeG0Z6cmLsoEbF5I4rX7tSPnLvlLW/+2U0rMms8lES5LwsNlYGqzQ9M3aqRnBPW2tpOBbBr166U4v+a17zmiI/8iFH55ORk6r073PHnKR0sc5apGKPE0plWj5FRMN585e6t//uaLzy8bdLbdoy+1WioikRv2YiE5BQ7UqfwQwUv5Cw7w5DgfUXEROSjBnJ5I5POnte/8Nlv/cWrLHkwRbLzr8kB1G/mIkEMxUHt/6hwRXf64Un943/+/PcffswUszEbZWtEQvClJXbOBYEq5Y1WWcwu2bkfjwimQdEbRNIQY2Sbq8srwSquXv2i83/+yhesG3MSlVJ5bo1EFKMqDAxUYftNTwQ0z3zUICnluCrhnJD73s7wV//0kW//4Im82Z6dnXWGDJNzroroBsnpxJx3Qi6Xbqg6rfE1Hc8cy1+86rKfe/klbaoYZJ3TlGuXNNDq9+tOdQDqmnR1W6Jrr732/PPPHxsbW7NmzZEd+ZGh8jvuuOOkk05qNBpjY2N1G3g8VR/xYV+51n0mFZVhB+zeW/yvj9zwua/fn9nRMouEHKKEIKEihc1cjFouUvXEHwIou+B7RlP5UwHA1jDZyq4pp7b91Esv/I03vnyMh8uvz3ckicJgMECxAgnIIIrYDErv+/xdf/PRLzYtJGoJZ2MRbQMak9gm6eijUhRk7vgQFx4tCNm07AIwloIXAWV5Lj4ofMuE1/3o8/79yy9fO2JJRa0x4ge9qFj7bVEWcrBUgBVh8gBCdGI5RCDIu6+5+erP39ZxE5VqQwspZrkx4qnp5PhQEB0qmoa7VemarV5RZTYPRW9kJFs1MfqWn3/1886ayMsuMhM194wGAOmBD75bHe64QkNVAkVkz549rVaLiFqt1hEc+ZGZP9u3b9+xY8f5559/SJL44dOrvTFRhT0+c/fWt733OqNjBuVMNWvEpAolIM2MJSIfBWzY2qTGX8ahglgN+g9ZEESFKCkT9eS1l5/yh//hyozKCiMl0AJMDDAHv7OqmtSC/bIhRKC8UOyeLP7wPZ++43s/aHOs1JCxIVS2PUHiy7JkqDGGk1+Frfd+XzbjMg4GVYrRM3OeanUmvalqpEYAokoouhsnGv/upZe97iUXTzRiv2udaJKlRgHI8PwNZL3CDmr6VF4ajkkFGkXxxbt3/Ml7r98TnCPJpfRVaV3m44lplVde1VkYS1WvaTQ3XEQtYK2EN1zxrN/7uZdmfhpZMybV7IIEWqtZUkXc4ardvV6PiMqyTL3RjwiOAJXHGDudzujoKPYvmjqnndIcDCvwa0733ndL/NnHvnjjbfexcNRQldp0DtZrkDzPkwdKRKTfa/FIl8D9oYGEip1NufvW9subMPNLz173R//p9aOxC0QxIwHkANIFwp7SrwkVKkMK43YVfNdDT/4/7/pEVuwuhUs3YUPJ0tOsNV1UIxYCNsYwW++9994yjDHLRL4whCyr5I5i8L4oXSMn52Y7vTwbiaHnMlbKArJqZs9pK+mNr3zRK378+U0Dl5ZYFRB7HzmVfj8otFTKk948g6DsIGsKLMNHcg/sqv707z901yNPkmuSSqx67E7MsGcwrdxoVUw552LgENUazZx6bml36sx1rT/49V84b+OYBaJAeaFslLQH6mtnRZg5qVkSQ05NTSWx+ZHqLfdMqbw2imuv99OUkB9YDrssy927d7/p7740+cQ2JSnVWds2zFUoASRVTOW9tZm1LP36XHqCuuwWHUQkUBEYYxhaFZ2xZrZp44a//93XGNdwBhmAqgQTLBew805c8QID4hRVmyzoY1+4/R+v/hzlY1OF5HmTYykiLs+K3kwzyyRG67IqiA9wzllDGj2pxPl8uMsAALAGhfHCaoy1VmNArBqZlcoLUxmqzFijCGDk7RkfLl3Ze+MbXnPFJac3FRxLGJP6oC6Yfp6KO1CqxWgASPBsXdUlq93Q+Mt/vfmar36vUpcxEI9OJdHFBvkSRshwVEumKSAJpWFxofT5RImsKVO//prLf/4nnuv6F+lpPbdzEo7S66IoksF+RPL7nxGVp557qdzBfCKbCLAqISJGGAMQVECoyGUK+AoZKxjCH//KPX/6ia9RZzn8tRQQsmXw7dyKGhMqQzox3vjnt/3SqvbBSTsCkLqeHEcVQ4AK1EbAcADw2JR5+3s+dfuD20Q9jpMaKScquqbRiJ3Lzj35V9/wsvM2rTAaAFGFp8wQWJVIAX5qw2vfUg0FrvvSt/7qI5/bFUaaHAJl3vt2RqWPvagNZ60Ux0uZs0NFqdSwJFWZ581ud/ZFF5791je/ZkNLKRKsByTCGWWIgLRks7BIsb7syccQY3zmtvnhU/k111xz8cUXr127NvW3ne9j2n9oIIJUERuAijAQtBTTpFIc0//86OeuufX+fLZTzG//LeMIQmM0BsG14+xem4+tbOC9//Vn16xfufDVD5W3mSujWMMMqIgyGy1BuOPh7p+997ptOyer6IUJx0mW4IkKa6KIaJRcw+tf8eKf/8nLVmUw6kFmUKfBeQUT+o145tX1S2rCSQpICMZ+48HpP3/3B+7ZSytNwQiT3gpn68cb03ue9KZhF7mR4dGCyfLu7OSKkZHZXpU3Wyhm1jb9H/7HX3n+GWNdn7nM2ChgTcXpjZSYp9JqHRfsd4cX8d6n/x600e7Tx+Ff93vuuefee+9NzTlr4eRBECsYKwJlTjXHDUOjWpqKvEKjdkL8f9997S13Pyq+4LwJWfaYLAUaLD3lGEq1rQbz3/zOTz3v1DFYN++GUUUksnHdXukaORM0qjFEogK97YHH/tu7r9ldNape0bDqIct6/6OLBnqe8hK5yxt+dmrzOP/OL7/u+c/e1Cr2oLkigFXhKGhVUdbw4PkiIUlmWlaxlREkSgiSNbdPye//zb/cv/Ux2MyAVNVHDSG0Wq0TVYZAhtWXTCRkKzXM3EDZoPKXXnXZG696Ua6pdQiQlOZ1a4WD4UDCTBk5z5DND5PKQwi7d+9eu3btUzdT1gCyZQQzeGh+KwJV4fGu/a2/+sAjT85yL8LmhVEbjpP6Pcc5Sh/y3LFWlbg//IUrf/ryMyqljHuYLxVIPNgUZczzVFSvYmOIDMRf953tf/KPnyiryNGPjk1MzRbWWujyfTyaKMvS5Y1Gsz09Pd3KMxNLh+o55539X3/pFasnGqEM7ZwRPQxLBJl5paAxRjZGajepKsBRuUv0x+/+5M3feZggLcO9SDZvFZ3ZBWo1HtfwMYw2G1VZEDu1jU5ZGdbcAJq/7DkTv/crr2wbctyEQiUsUE+y7lMBINXYSS/KshSRbrd72D0rDue633///WvWrBkdHV3IGK+hQckKEH3MHEGjVBVbpyZ7aLL3u3/2Tz/YJc0sK6tpmzerzvHSSvC4R49b49ybruK/f+FZf/iLrwxIWjSZP4wjPgqnFvZl1zgLtgH8ya/c9afvvTaOboid6XEXitJTPuoF5jhpWXCiwrZGpCrLzmy72RARH0WNNTZrm/JNP/mjb/yJ5xj1ChuJWIRRYd5EfKmq4LIUBS9zl8UYjbVK6EZ88Mavv+uTXy25ycVswzFs+2g1VlxskHWxKlO9UiXj8oaqel8CrSAzl5w+8Re//XOrrIFJTVlTovpCOLDy4u7du5m50+ls2rTpcEZ4GN958skn9+zZs3nz5iSmeYoKkBqjGqTuyeoRK3AW2T346J7f+ftPPjZZ2KoH05RYZgiajcVQHMaQlnGoYJP3Yrj01LF3/u7PtBhqcwKKiMY8fhHVmJpwsiqJB5uSzNU3fv0d137LFLMNl6lr+hgodJtZc6aAscvywqOJqug2m00RsM2qqrKZS+0RGJqzP2fjqrf9x1/eOAopO7bRLgX5fP7RUBlrRRCi1lLGfttYoxHu41+5768//qUCrWLvjtVNmtXjo775oaKK4qyV4EdaDQlxZnY6y3NmA4oBTe/D5hX27b/982esbY3kjKiYP5hclmXSVQNI6vJEpDHG7du3V1V17733XnXVVYc6wkN2aKYCMevXr69rZj1VgRgRJWKCCJFCqTLZ/ds7//mdH57dtTdQs2co1+mcGgVakL0Llm1axhGDjb12M/+HP/jF8SaBMxIvMG6BLZaKgoPAMoFNF/yeT371fdff0qGRUUsmlD0fkDWKsuesJYWemPvs4wbtZu59iIogYm3GTL4snGMOZUHNx2flpi99dayVn3fGZgCR5tVHMxtAoamVI6oqOstQMGtRkWU+Z+PKLetXfeW2bzVHV5S9js7rdT++YYyqqsvyoqi8L1vNZsq9gsDE0matJyvzxa9/89lnbtkwMcrz52J571Mqf0oaSpqROh1nfHz8a1/72plnnvnOd77zUEd4aBPuc5/73Lnnnrt27dq6nd1TI5YwuSbVCkkg+8ik/ME73vnAVK5S5qiMbc1GW5VTEyONmY4uJ3AvDRj469961XOedVoGcCyZc6gHA5hnKopXdpKaORv68A1f+9urvzyTrR0NT1QYJbIZlUFCxc7AmKqry56yo4oIkuhzl0FCCks2Wu1eUXDWoFDkjKKsGnl2xUVn/qef+fENY6HunjMH+4oYC8AWlBqVqIdN2aEEAOF7W3f8/t9ec3dnbKVMLeFZLh1IQxAimxMRSUz9LaLCiQlcGiusCCW3nfu1n77ijT/xrPkLbQH7ixExqCVXxx137949MTFxqAXmDk38u2XLlnvuuScZ42kQqY7KAjWtAlnAlxKYgdCb7Mhb/vcH75m0JBWDPPIiRKtlK2uU1XIhjiMP0uh9bFmuqqoyrYbjtvFdzX7tRzc+91mn5UAoCja5QsEuROvTndQADSoBQFX2oKGM6gGoGIpX33znX3zyjl5z3Xi1K1CLKRJKr1CyTpU1LPP4UYeBOmNTXrSSsdaGqnRMWZiV6MU2xDQiZ1+8/d5ff8c/f/ahJhAAUamgJSC9AAXgu/0ZSRbG9g0/MlHIwUO170RTnH3qxne85c0XjeztIXccm9KNKqXYCGOZw/EvS1OyxhjWQOKROnwBhmBzrcpA1PTiTJ51Y/muq7/wF5/+AWKvAqIGaA+AT1VDY997XNN0ajAy582JiYnDKBR4CNSpqnv27BkdHXXO1atK7eiZ/2uhImsArmZ9NvKbf/qhOx7cwZajLqeQLAU0+lZrZKrTzbMm1He73dzSxeed/he/+bp2g03/CZAQxFrbbwinMVViUiAoLCGGYKwlLUH5x7/+4Dv+4WOcNZi56+H4uJ+lP1SwrIX3LmuFGC0hMwhFZ7zdfOmLn/dbb7gslx447wk3+kXWuCaUui9P/0AaBFaTJs33vJJkjR/sLN/2tx94cNtebY82fdnTyMgLX4xZrU5QxylpVDI2c2XpDcGQVt3ZsdH2VS+++D//zIsMQhFtgwOUAhszP+EmRk3pQnVHukOqb34IVJ4cOth/U1Bb6PNuB0Q9k9MqUvbWd3/2C9/6fkbeQ7BM5UsCETEkMRspe8WKhpbqxhr8zt/5mXM2rQxVyDM7qGPFqqogRhBRNi4JikMEgMyAQgnEL3330be+97Mz0myHKQRf5itsXA5TH08gwyLCICIqq54lbuRZp9NptUeee9aGt77p9Se1YLifFqT7F6nev3OxRHBUOAKphwSYPIIf2h1+/53vf3RHOUOhXVRxpGmKAIonapcoy4hKUYXIiIhlyiz3uh3O26+4+JQ/evNVOUSVCRKCDy5fQDdeh0OJKDFqasf2NPuCPl0+TdIZEQkhpD5BAFLbuoW/GJmclgDec+O3P3PHVpVI4qM5MhVklvGUUGIiphjZUACjmn3jlS941qYViDHxuMQkFk5LNaDKxlU+CgBBbpAbVGUJ6+54rHz7+67vFaFpYoVMXNuF3tE+v2UcGqLAGOO9h4RW3iAyQW1jdKLsFV++e/tv/sWHv/3IXoRIKS1g/8I4db1WABIjA0wICpABW60KE6tNq+y73vKmLet4FeUzjWbWKYtYRDphU7gTJYqIc46ZSx+iksmasSxu/Pbjb3/fZ4pARBBla5/C+Z3neeq6jkGr0hhjWZaPPPLI0xnJIVB5quxlra21kHVj6QU89Awgyte+9/g/Xvtlo6FJoYi63C9iyWCs7XlpcMgNqoCLz1z/yy+9MIXOAUkkDqK0TgMAsQLGGVIYeKj3vdk8z+97ovpv/3D17tB2FLmz21nuVX7+hhTLOEbhvafkOk82mXO9ouoVnpujDuGRx3a85S8/cM1tD4IMhSKkMhv1swFgYJUzE/qkgwhWcmobMFkWytUj4e9/582bN7cmImab2WhjNMiJmQIKIEKTBqSqKiJyzhWV9zGMNPJMy0985Z7//v6booBJPKyTznzHSVc4qVkApJQda+3k5OTY2NjTGcnTLeuV/k2dl5PZP2cQ84EEj83QH7/nutlutcKVYPK2ncvyrnypoGpsVvW6TYumiW/9D2+00rMurf8kSmxc8q4451QEZFK3VCaAABHTGNlb6Nvfd91DO6ZCVdqsaV1uQy9nLWXZS3acwVkOVZmKDJelF0HmTDPPq6rKLCNWs93qLz9w/Ts+dHPXNlLwOtFK2pfvOxCxSkDU1HMuAgFcRoAFpR9bYf/qV//dOaeOND261jX0xMwbAmDYMTODQqhUozFEpM1msyh6VdllZz992/1//uGbI7ELxXx9KgCkyubY579CVVXMvGnTpizL0p8WxtOaisNVyFMpxFSHN8ZY2+bzoWK87V0f3d7TkdFWr/KFQMWLLqcCLhGMBmut5iNVZ/rXXvdjmyYshKGaqmumDVZV9WcaEQHiGN1eBUBDVJN3CH/2no/d+cD2ViNz8D6gGzhGzRyHE7T/wAmMhjUhhKqqwJZtBoA0hrKTOy0iXJazynRJH73l+2/962t3dzV1XsUQxSD1GxFm46xRA4iPBDhGbiABMW9axcoJ81e//UunrbOuM035CetQTaUNmbmR5QzyZRV98GWlxNwYy1GR+o/fcv//+sAX4Rpxfr4dJtLEt4nBa9fNU3oynprKvfd1w4d0xFTcK20rdOBmne/rH7z+trse3sUgEenQaAhhdRMdWd6ZLxEoRgnRc+P0LZve+BMXWEWwOSEq4IOIQgGXZelWEhGCJ2CkmYkIuUYFfOj6b9x850N5xlVVWWtFA4zztlmpWZavHHcoet2RVsO5XJQUKQSqGSOq0bJDhMKNxGxUyt4377rn197+vsnJybI8SO83YSigvoKGzJGBUKwglc+aBgAJCY008Xdv/dXztkx044kZ80RqzcQcY4ziJVSZ5dF2U6P32RikKqpgra16M9fccu/ffuIbRuftolc3bzDGpNJaIQTnXKpmzszdbvfxxx9fYCRPTeV1Y7pkwaUX6YfrN5kZ6gMACLTU9AJyx8N7//barwdNmb+SwzvnZku0eJnKjzBIFWyqCCFrrWUNlgQSgmM2jbFy8r/8wost9VRgAKVAgLPMBBrImPpmFyH5zggC6dx5z7b/7/pvBWrFGME2CBhqEFgDqTx9pdQyjhGwa5Q+igSmCPVEGokrMEm0eSsIOfG59Iyhkppbn5z5qf/xkTse3gstoSESFSm2ggiFKsg1Bo8Pe7WRsxw+hBDBUYU0rGjR23/vV85b0evySJOFfFmpc4SW0Rij4Pg3BVJRFiKCIeOiUukjGdfQblWGRnOk8rHdbofQ/Zcbv/zXX9iO6HuAR4AEKLwK4OvLMNwVOVUOT1MshDA1NdVuHzyNq/+VhceZRlkvFAsa+UxAJayUEwQqM4H/z/uvefrXZBnPBEokInlmDaPX6ShI2YGzKCrF5Ct/9HnnnralLCtKxfHnL9igJmepABDJtmn7P99/QyPM+OV6Kj+s6Ba9P3rnhz916yMga1VcWulVLYEJg005AFjLoQpQmH3dC5RCsaaJ//FffuP8FeVMIOSjLeOjcdO9kkOh8xT1PgFQe6QBrqrKZXlR+o9+7Orrbt/aABwgZAFxxAEO84eF0xW21q5bty7LsgUY+KmpPNngqfHjQlYYGQMBYbqQ1JLgX266/TsPTz71SS/jiIANRCHRaGAG26wKMYLIug1j/Cuvv8ICLh8BYACdLzsfiICGSFoFyt7+fz/38CxFX9hlqcoPK0pkO2LzT977qY988U4QU1UaAOy06iE16CZDzCEEAvLMqpIAksxJBRm1Ve/0lfbtv/H6dWMuEnnvfVllzXHbGCE9YW2E5CoB4JwrfeiVvjEy1vPyjg9++tsPbAeYCCCJPhgAZl6CJqJaobhwNfOFqLz2gz+dbsiigERDGGswoPds737gxtuyxgm76h5rECVmIFYSQ7PZVuKkIJai96afvXJtU0mCwkAVhAU0R1YjZ01AP/T5O//t7kfgSzO2NvSml/BUlnEMIZLLGIGzP/+/n37Pp77OWR56swFg51K2SRQAMNaqKiBEmvrQK3MUBSxBKZRnbFz3p7/5hpWuUG7kBj7GkpummlecdwIgVT0E0G63waaogsma01V86zuvfmSPQMoINsaSL8P8BVtijMMKBcxfJeUpCLr2jKfA5gLhTSZA1aiQ74ia91z31e0d2GrmKU94GUcEKert2KhqEKl8dJZZw3NOXffyy84hP8PEkgoWkiy4Lgs03PfozD9c8+UmUybl7plOu3XCKhCWsTAaWkhnD0mU5sS7rvnSX37wJjRHDBBCFEmZ5ck8ADSqCEAa+u4CMVlUpqwFmxcx/v/svXmUJNd13vnde9+LyMxaem8sjW7sG8EFBLiBpEiKJAgSEqld4mJStDyyPNIcHZ+xJfmMbEu2PD4+mpnj0YzlY20UtdrDTdzBVeAmEiDBBSAAYie2RmPr7upaMiPivXfv/PEys6ubXVndZKO6qxi/k6e7Kisi14gb993lu1edv/Vf/5M3TrtG2TvnEOuy2LDp0ATLlX7jevM6xCaGkvB40/mt//w3+yuT3Ggt5YS1iYhUVQXgmMnn5ax4Tt94441zc3MAckmjiMQYV/HNxQEJ7L98597Pfu3OXqfr1n9WY73AzBobImNxTQIRSQo+Lf3yT10rZvAlFB4gssl9ACAP0P/+l5+q1JVpMZFMO6s37Dq4ZRU6NiB2RGRNv5Hee2++7z+++xNLdSJfJhMb+nBqZsQuDwhlR5SSGoiQWCJQxVSIAPSqK87552+5lhmhWtzs64Y27KqdIDHG0hciNBgspRSKwvV6vRhV0Hznqerf/pf/z+AGTawZxcQ5LTmuMm7fX+n8XdE079q161vf+haW1ZNOmMUMwIDQNEjal+KPP/RFL9zVpQVs2K/qdEOIAQQ1BRuxcw5x6eVXXv4jl5/lyBIEzDAokjHTypfYGnj3x2++67GDsJTIJS5FpN/vr907aTmdWGrA3hsSQ4uimOvrp2655z/9+YcWG5jjGDXFhknzKHYQhWgAREhSEgxnQHacsKU6KJje9PJn//JPvnKa6qoOzcZVtc+98SEEx1I4TwaNaWlhsfBTFJdiqr/+wNwfvudG6jhgVP13LMaGO8dVcpn/MWMsK5ryqampF73oRblTf9wmMAEFfFHAle+98Tu3PjzntSnCYu03r7pjy0khafDeZw1lI4algvHzP/XjCAOCJXKmWUbmbgAAIABJREFUgBmBJleAPfLEoT+54RsINWtYSN47XgiYmW4DLD+kxKkzY4yFqbKvQ5z2GIT00Vsf/y9/9K4mgR1nW5NizPprzvuUDKYsZql2UEKENURUejbySPpL117x6muuip2tjjbscq+JodvtElGINVkSssJx4ViDkqMpGdSB/uqzd3765ttLLJFbMZ+ZLwkY5T/HxYTH2HKlh9ixY0dRFFkTYLk/vtJEbYE2TdMY/vYzt9QoHFLtpqZow2ovnG5EY4SBuY5PVcHqSV/24hdcvbNG0WVIAZAAQgTnIcPicasN2gAwheU1nv72X35BiZoEsOtQjE09U5YxbFjvqWUyZVhwUgTyDCsoqSpBnMb/fhd+708/XMfoHQEQZtIAgBBFzEBqzFICbHBGDoDBARAhU/2Xv3TdC86dTikkEYBZCXDqOw0LWSrDKnHh0x/HMgxNs09G+aZgk0YgMTopfG32f//NZ+/ZX6qpAREwAGowxAQbqd+MzW/Of6aUjllJeGxTnsvJsx0fx8fzpWCsnDVu+xyLJhZF8dcf/8r8wYMd0eR6FKsqbFjthdONLsfKz3QQau4WiKGpf/mnXzNB8wEAlAhBgEQMU1Z84PO3PfLII/1+P7fyjmtjW/mzlqPoxfkv3vrAv/uzj/ephBkgxp4tmaomI5JsN1RVLU+noQREA5ExaY/wW//zWy7e5skSM4tzlmqrFwrEkCj66VP9/p4pUtLcox+bUJZlFeJ/e/ffNsxqUQBNCUQgZKNLZGMfPJ+GucbxmKfkil65c24wGCx35pdLuuQHGp/tRARLA+MPfPH2uq47VlUmZOrbrs61ItWDaK5O5ooypfSTr7z6om1+gjPNQB0NpgKNAJIuLlV/+rGblxYHTC4fLqOvfnLFS8sPI66pDgz0M3c8/u/++KM1+5CUACMQO1p2uDCzEBOGLSlMaOoaSE6b3dP4nV99y/aZTtWfTyl1Op1SiFMou52ljbuYJ3YAqaowUkp1pJtvu//jNz/A5KCNkIKQM8YYGesskZSlNZh5MBgcU4l2Ra8cQLfbzTvnoMp4SvQxx1uwyEe/eNu+Qw1cwRphSaV0vHG/k9MMLsou6vlUIAycc7/yxheHqj/BApNaUZaAhKYqAfPuLz/+5YcOVGVZ5jGyWQT1+xhM1fLDAHemZjudOuinbn3kP737M+wFqVIIwESCLLk1CsaamWkUgAFfdJAMRM7Ss3Zv/bVfeMOW0iDoN4GlSClpDDQhL7/O8b6MUc1MhELdKHua2fEXH7pxkKCqWQQhEWAgGMzyRQ6jIT8Aut1jL7WPcbKP7XWuiMSyhOlYemW88djVr5N7/43fNCODU+IOQkUda0cTrBUmpdeq7HZSSm948eXbZ5zv9CatiSwBqKkQEWi4Y+/gLz7zzV5ZZGc8X8LHsbnWmrccRW1OY+U1xKSf+eod/+09n63QEWgW88Myadz8M5lSLqMmguskZZCEpnnD1bvf9sZXaT1v4mp1RXfWUujJ6pqu6xW1lAWlzcQRi68SPfzk4mdvvp1dB9CYzJDHpmqe/QnAzMa1Kzk6oqpHVZof22/L7tjYO8tx96MU6HOIfNzN/+U7Hrpn735YICIDwaxRkxMZONfygxBjbIx7aanb7b7zuqvBAtKJkjmomxoAS5kSvfuDn53HFKd6fG3OUfJ8AJ3o8O+WDU8z6PvudGz6PVSJ5N2f+MZff+oWBWdF1uyPZzMy9M2zGB+QkiUgkSxWwRdFkZq3/tg117702dwshZRAhYjwxtU3D6HudDpVk5e8BkspGvviA39/SwNgNHSTMCw4y+djtsZ5oZy1cHM1y/JHXtErH8fanXNmVtf18stsZuyexxjf94Vv53sEycz6iTqs1pqAtcI7ROmlavHVzz33nJ1bAEZME6+kVBalAxq1f7hr3+e//p1eIWbmXMHs8hedT0KWPFmopeUwvtsbDAbTvVLI5hcr62398w9+7iNfvTdE2KhyLm9JBhhADuAYaicEhTCmOj6GAOYpxj9/x5uetWu6Y81Sv6oTEm3Y5AyZiUgTEwmbRtOmU4qmcOejh77z4H6wy+daVqdJo3xkDpdnU5wd86Iojg5xH/VMdV3nOUHjKDsAIirLcqWFdl3Xc3NzN93xUEnJ4EgDESXX7UqqYmsC1giLKQBS9n7p+hdVuQFP3KS+TpImqaBmpnd98HNUTvmwkGiY7cwXcuahkzWeTdHSkumrlByt6Vfmi5mt2tR1pP/jLz957733hjAeZjD0zZFl2gDnPaDCEMBS8I5gjhA3u+a3/tnbZ0tyzrmyF457UOW6gxlVUxdlmUxFmM1iMxDCQLr/8NVvgJBSGq5fRgPUU0rLNRHHjvlRvfdHf2R5zHN23Y+y+iJCRCAKIcBqhQFaAWWBP/7svaQpoGSLSi4ZlQhNgpcN+5WcKtSiOFq+tjIjMzLWaZIrL9ixe9fWTgLASs2ENZEaSgnQ4kOfv+fOJw8lU1YJJFlofrxZSkkThCcNimr5IaRHVYKPPM0gDotMEc7XQX/5Dz95/xP7IxAMRGR51HOKMrROPLY5LB7kwApzpdpzzp7+Jz/7WsfBzMrYBDiQZ3Y5/WZwMcZi/S/yjYRBbErJTNloWHRfWnXDrU/3k/cSnMKo6JMvdCiagmPlKbOI+fjXo01tDspMSHPR8NIqliLAHhiE4ss3f/Okvt+WFfHeqx6RXMoNYEEZ9cIv/MS1DMrtnAKeECtn0maprpk+/PkvoVEyJMde29xGyw+EhsGv/8HfPXlwsRQNxoQQjLGy5kfTRAXgypTST7/q2de/8AIXlyo3W1ASNE1/oVMwIbJAxPfrDTtIclA3c3Nzj+7bj2QgEK2+MOn3+2NhFhxlyo+c8bgCFhUAOecoARKrr9y977G5xe/zHbScIKaU4nAeSK4UVI0pBS66F529+ZpLd7IlDF2gyYdDXXRnP3bT3d966Ek2z5oSJd64k9Fb1oYKvScX47/+r++fXxx4ihHe0aRJvlIUVUgJEKGiWfzf3nn9RTu7DXkNVeHdps2z84fmoJFhydSVvbV7J2uLiAyq5tv3PRRJckV5Dm2vtH1KaXZ2dnmM5choC3Oe4TnxSU2R275zaZF+8Avf8L3ZH+BdtJwAuW03e+I5BzIUIo7xJ177kiLlEV9ZkZwnpT011Yy//cjnqZhNRMywVZUvW1pWo0ZnmuO3Hp7/vT/9MOCCAkQOK5oUA7qFxKTJQF4KXfrNf/qWGe4XZefQ4qCOVna6RIBGx6S6Yb3yoiiU+Jt3PYjRZCVZ+UPDKOoynuyMo0x5Dqivfj4bDEAyAP0aX//OQ9XGXficbozriGKMuWsgm/WtHXr1S69gC9Dc8wsYTyxg6Xzkpjv3HhggUo3ITrySrjzNpKXleCh0sQrKzdKXHlj6f9//pS4jAUjVhF0IoRQ1YqMuIFfs3vTrP/XyEJqi0x1ESGfGyBGMLOVmiA1JdtFuu//RBshrakHCyiMpMsvd7sNW+3hGBQEASR7Knrf+wu0PVwnaLszXiuyGZ3881/vXdd00zRteeNlMAUiBZAwdrcxWvLAPyH3gM1+OxqJRhIKxoAjrX8ao5dSyuSNVVZW9qbqJ7/70tz55y73OImTFwMhI0QmqloCAwgFv/tHnv/TKSxGWyk6xMKiNWM3M1G1cIRCNQUSePFQ9Nd+Msl1xsgbwciUVHLOufHKAxcAOiQFwAbO/+9IdwtwrN+w0kNMNMwKGdaK53Egt9qY6P/uqqzUFI6cKQgCQhpWpx+bG2/Y9+OiBJqbCW4/RhFQLs7ZeecsPxP7FpS2z3aXkKA7U+D+86+P3752b5CBoNHiQK9gcsmouhNO/eMeP75mluHiw9A5EZijLTkgbdvUvTI64RvHgI49h6IKtEk4a9wrlXw+b8qHu8KiifKX9I0COYKlRhFDf/vD+phpomLSAajmJjNVvcvm/qvZ6vT179px75owXCQCLIAvWMmArNkC/99Oft+iKjm9SJXUNUCXoubbosOUHwpWdQRKXBpBuQalO9Bt/fEN/ccW+BCKEfLyGBlpbVGPA5NwZ/Mpbf7KkIKRmBuGqiSwb9vhkaEpBWR7Zu0/T0Pyu6ljlNfroEZYRQjhmRfmRT4mQPJF6CzfedWAwqLk7K5Ny1C0nE0dNk9TM4LsSqymnyeTt1+yBiAMXyOG1KQKEAOphmKMOmkINwCJSfctDi9++58kgzkIi7vTZedaepqoVWmj5wSBTgRmJMMBc14MnDhz6X9/1OUOVAFRAzMLcAWmABJAr8jHrO+DS5RgKkxque8Gel1/z/FIjwwU1iPMbdlIFohWJ1cf69ieUHQk0Rb/qhWt5f8kRU5xzzfLk1j4yOMcwAvtbb7sjaR4QvGFjWKcbwah01MTEMBNXK09JeOU1z115j1xoJCzigFjXJuVHPvP5tXq9LT9cZF9AVUOombnsTtV1c8899/zpJ77BBniYg8a60ZRkkpg+ox6g/J1/9PrpmZK13/FTqRrUGzftSURZcHb//gP5Hpk4gDNzjLRnroXI/2YVrRWfEkZQEA8MX7/tO0QENZM2Vr5GBHirl8qyFIaSUypf8dyLupPS1ckAAwMQqCuKxw+Fz3/tzrV6vS0/ZBhjJK491PAj9PuDd33sG1+56yFIjCkWzgt3EoAJCogUPFBY/Lf/0xsiki4dmu5uwsbVAhoPR933+OMGZMucTqSc5LBXHmOcHCUfP6VpVONHn+rvOzgvImapzZatGa7TgzbOuaa/FCKM8LOvu0Ym5CoMbEhZ1FYj2H/481+fC+0qquUZYTyxbNyWLOw7vemqwr//8xv2DsxzrZEIKGxi4TRKpw06/mUX77juxc/msrfYX2Js2ON2pNBOc/MLY+WqiY0hR3PEsLfjQ81MCbfccV9Dhao6IKTWlq8Rsa7EZWUFLYpiz47Zy8/ZDDfpK8/l5VETiBYibvjCLVRs2K65llNLbjM0MxFxzuW1fgihY+nRef7Pf/OpEB1TwnCQwYrLSYNXgocad3/7za9xvQ4K9htXZgv5KmjURCz1Q7anJ9Syd0Rd+fjfybuwSARuvu3uxF3T6MQmNfq3nFS0qRIXGkNZdk2b615yhViccEqABJZoeFj4m25/5JG5Gm0fQMszQxZxzb55ds+ZnSpEhGP1qa/d//4vPwBACkQCrxz7TgGRCkJSxXS3+Jdv+1HqdK1eWsO3sqYMpcVhxHLw0IICdgLuNZBNwPIJEsx81HCKYz0lLwXc89BjSTwRsaZ2NMGasalX1ChIQxOjI33tCy4lGs4yPyYGhqkAzBIMH//iLVZMi7atQC3PCKbkRZZLgBCRc8V8U810OEb9w/d95t4DGjQ5ZBHzYyMeBVAHE60i4yevOufqc7dKt1xp+/UOI4+YEGM6tDAPZAGWE7DmjNFAitw6GGMcz/A8Jvnr2X9wcHB+ySAMS6HZyMue0wxrBpVy6YTEnXvOrgvOmAION3d+L/lkypP7Di7UX7v1rkC+bL+wlmeGPHxKY2RBURQAx6gxJemVdQyzXucr/Vd/9N6aCGkurryaTDAklOLMOacDwP/Hd1675DasKc8QkSb0BzWAEy0LHE6WyJ54nhmEyXXl4oH+t+7aO3DTBSoHik7S5A7TlpPHIs/s4IMLjSjCdc8919FgslBDGilGCzf//cZvL5U7p6rHK97gp0TLqSLlLmNmWB4Lp8zKlKRJ3aITIjn2Dz964F2fvKOWzS4uAVBDAhIQYzRLljshEiBIZgSnKBOhNzv7b667EOJQJ5aOiXVliZWqOBR6Wd+4EuiTIZE9XbOk43pLeSzMI488gnGMNXvizDxuA10JVQD+/gcfAmkazZqZFKttOamwNgGFOO1AXnz1ZbBuTHHC5VsIgCKGBuVXb73b6v4oa9rSsnaI9/Pz85zHLoA+8OGP3fXQnFEXmpgQm8iAOJfnXTIgMmxpBpSZoeh4XHftay/cXkqvE1IMVVUlL2VBaT6uf519M4NxllcaTkNdbfscIHn66aeHQ4XyH8Zd+261unRhRJTfufe7jniosQprTcOaIZQSTSWE87ZvvuCsaQMSASt32zKgKUHojr1L33l4X4cCyB/PsdLSchKJamV3KlcoAmjM/8Gfv+cgM8hg0YvRUHGVyUDQlIZNiwAAhSVS9Ar8+i+8frA057rFTG86ojvfn988U4DWfUO/pmEsxMxCs/rpmRVSs27HEaY8T6XJ8kyrPIZhMeGxp+YYBDCI8pqoZW1w0JpEg776hZcWUCWIuAnin6TGzCD+6Jdvq7lbcmpGU71bWtaMXM3SNA2ZMjN8+e0Hn/irj90GciBmEU2BbDjiGctivKFpYCZCTIaUXvasXa972bOaemGpUi9ehAah2QAycFlNJXvlR0kerkTuBJqens6zhPipp57Kqc7jPb1VH9h3aClQSgEAkTBa07B2sCFq6Ip/zUsuociWW6XjyloLZCCqtbzx5tvFl5Y0KrxrA2Ita0oO3kYd2uh+k6i75T03fP5b9zwSwSM7RmbDsjxmZLfSj5rPiUxEkOKv/OxrZjmBnLMwPdVbaFKx/rtAD09hhqwa5cayvOZ4FDN77xcWFvKfx/dOgvnuB/dSOTUUWyBADa0M01oh4k3D7h1bd+3ogkFQNqDorLgDAeBvPvjU/oVFbzGQEMmJdIS1tJwEhJBFQczMUux2u0uDqlb+i4987kCEEhExhr3rlEuyRkcpg0QVKVmMEc5dtLX35te9VCg2TRXqMDW1yda/KR9FVyiXAA3vtRVdrtw9lK92w4ufc67X62Ekm7D6c5re++A+5cIRE4kmA2my1jSsEUrwxC9+3kXeCFAGk5lhQqyQDfypm+5wznmronSNoOm4VnAtLScNjSEEI1aQmQ0W5manp4joi3c88tHP3Z4XlRpqIhhgRAC89zm5N56WJSIBINO3vf6luzZRZEbkToxLcd3bn3GgfBjhOA5LXFXVciFbLoqiLEtVzVNpjseaP/bEU1UdABvOsiFuAyxrRhOCI7nquRcyleCaDOA4Ib+Rv85/+OadKTQUB8kcTrAhuKXlJGCac55mxtBOWVgKsal1att7PvTxJw8MQGDvCUgJRIcnKhAzMcdkSUeiU4k2e/z89a+SzrRj75oK5cqr0nVCVkbEiZybnU4Hy3RuOf8SQhhnG1bJfDLufHgOokTsSZ2Eijc5a7sH1wjlouv0FRduBZYCumpq8M4iEGHJLC+4cm0TYEqp+fI9+w8eqkRKdT2yiojcyl12LS3PBMbezMjUMRlJNI4KEfH9Q/ux9f/864+n3HkeouOYgHGDCwEEOCFhEOCB5ATWf/MrrrjsjO4SYuW4O3F26PqAFDFEIih5xxDIxLj1sNFfdex8MxH1+/2cA81K5SKTYqkLi1UzGstkRuOh7yfvPbVMgsU/5+JzvGNQiVy6BcDIVEGUO8RG30YyU3DxtVu/bRgu35izwlE7KqTltMCK6dCfv/WuBz/9zYcMTMJqDisHbMmSAUqFUHrbj72yoNiY3wD2R0ejlYmPy5yOdVbG1nxYmZhjUkVRDFdAKzv5jz55IKVEpmamANQYtv4r9NcNIYQfec75ZJooyyEOJ0sQSU6SZF06IsqlpxXhK1+7DZxDZzysE0jrPrbYsjGoEnULmavxh+/5bENACiAwTZCHUzVEdkR4zXN3v+iSPYkkhHV/PA+n9RIAFMc3/iE73ONeIXbONU2TC87zYM/J5Q2PPL2gRoRoRkZMnBuE2tjrGiFIL75sd24KYkOuIQIBEBCyhtHyq/p3n04PPz0HKQAQWUhxPB20peWU4xhJlYvuoweW/scN34ArGZMMkEF87mknV9rSW173op6obQhtllxUDk2+kOyiTchbjocwxxgHgwEAXlhYGI8NEpEsNDwhXL734AKxGy6BSARE0LZxf804Z/v0BWduAY8DKYzcokUAwMy59cvMoloyfPlb95r0oinZsAXMlNq0Z8tpQolQRZCmwsu7P/z3+w5WE2aLA0hgQiOmFQDmH3n2OS+65KwNUAw99q7MrHscWdxhNIbo6aefzilivu+++1JKh/PFRLntc6WH2PvUAgAmmJmCACVTbeW01ornX3AGMwziAJiBfNbFyeusfECoqhGEBcRfuOVb5rspJYYygdAWlbecRlBKICk9qsX5RSvf9aG/B68m3BmjUF6MltDB269/Gcd1r2OeXXKCkqXp6dUnw4xN/5lnntnv9wHwFVdcMVa4zWrxk122vU/PRQPbqHrfjCwZt6Z8jbjmORclhRqJVgAiMFwgDdWNFVBVJZACS0vNAw8/EQ0CgqnF5JxrmwBaTh+SOIKqaq83Zew/dtM9t3x3jlZ2zJ0hUQmwA0ICDFddcsaPPGfPWr7mZ4LxID0impmeXlWpPAdOQgidTufCCy9EjpXXdT2OqGR/fEJ1+cGFfkoJpERiBNu4M7BPT5578Z5EMAYsgigCQMyFSeNvLX+JVZUeePChJmmM6pxj0xibHEM7dS+/peUI+km6DiHEQbTYhLrY9Efv//SkeInV5oqkLBbJMaRkjW9702vW7hU/Y4wyn5wLxkE64UwVkRhj7qLK9zARFUWRT/5xXGXUcZSACKjaKACv6aEnFnuOGysAlThIrmck0nYPnnSY1EKCMDuOlbFXKc+Z4V3bpwuCAyDTBHQA8JQj1GBBGs4SAZHFqSJ+8M6FBPFsFuskZZJSU+3Z0oQKgZaWNaTHgwiw64h4ccTVgfsfePjvbhtAlxJQAzAghCxiblqDSwcIA5RFXJnZveD8bddcsr2QCCa26BjJdZtExfrpdyFNkUpLMaawfYqMHEZTeVfCObe8xmFCo+YohDLCDHUdch/tUZ5dWxFx0lHVXKACgJmZWZAuvfj8lbYnACIANCUmgBjKd91991q93paW74ecZksxqkaGichi1XzkE59WTCUFqakGOA/AkhGvmMN7y8/8WKr6qkreV1Ullhxz0nXjsowtqnNcfF9qd5P2GVlrJlj+daFfZ1P+fTxTywmRy0OZchMWaUzaDK6+4pKVthcAlgUsmAEz2jdfP/jwI2v4kltaThhlR+yE4AhqMamR79x69wMfu+k7zCi4YVMQsoj5BHt11XmbnnvxHiFOJmV3CqmBpbCuyjFyx0e3KEsv38frnmTKiSTLAhAZAUY4uLB0TDvehl9POuNSfYUZk1p0FJ998e6VtufhP4mdEGCgb393X1g/XknLDyfELqf7hExAKZnvzMB3/+qGrywpYArHuaFNmCYMRugAv/Djr9HQj1laKwaG+s70Gr2NHxzOGr86PdUdO+UnZFVXOdVtnIAwGLB/vk/LQGvEnzFUFWZQA8DiiOiMrbPn7Vyx4JQAM4WaASlEI3zl9u/KqGOgpeX0hIiy8R0KcDNXdTDIfY/Pf+oLt4L88vDtpC5Qq1/8nF2X7NrqHaKa8wJoXE/xAyYymG3eNH24i/uE9l/5T2rDVkLAFKQK7F/of29YvLXmzwQjdTNDlr40PX/XGd3J8jokEFZAhAy44/7HU2y/mpbTGtPomJxzMaoqiCSGmszIdd7/qS8dUhchNBQyn/hAih7w5utfmfpzRVEYiEGhXjdpzwybbtuyCdAJKjQr7rviX4YFbtlSD93DxaXqew132wj+TMDshnopSnnJeMmF55GuOC0oi66MfrEDBwaPHeyvJ6ek5YcS1tG4G3YhGYDCcSEG1Xv3zX36a/cGIxqOrp1U0GHsxOKrX3jJ2ZunmxAaJXbS7aybVWnWTWLmbVu2Hn9ghflw3coRpvwIM33Uw1kyoA5x+cYZtBUszwD5g5XRZdI5t+ecXcCEKn6NloMsAPDw3scGjYms+/G1LRsbglkKVdWweBafJaVSPWAy7m7667+7QWnoj+uooOuYKAmQphjXvfoVMWrZ6cUYdcKgxNMMMyMDC3q9zglFVw7XlS+/9wiLzJI0FECyBuaTFKXqvsW4fOM2Yv7MQRoakxBqFvWC2uilezx4RdkgNfakoCYLln/hgUVQArcNXC2nNQkCds4xLJg2ZikY1BVkIcbmoUO9j3/1ATQEDOJEd5EBkGcd/PSPXtlzGgfzHdKBrhtdflPyQodSeflWKFxWOZ1s0VU15rAUgBOVwWrW/+Cl9YKqeu+JKMZoZmdum900MztheyKkZACnZGC59777UkptL27LOsWYLLF31Qc/9g9WMqybQpww6zIlAxTspjv8iqsvY8JAqVOsG1MOADCDbtk0Mxy3YSu/WwBA1rI9bMpXjo0cGXuBAVSvtzTC+sWQAKRRHOuiXTucc7ZynSyNlllCFsH3f/cRIuI28NWyPlETTyDDHQ88etPde0HoeoBWdCVFCDGBZMrjjS97nrMmcAfrpws9xzcc0s4d245n+zwmaPkIz8l15TT+N1clVvW6iT2tdxxxFsbJorVX7NkOqE3I4lPWXSDH9N0n+otVA1qxNa6l5TTHlFlSrLmzZeavPnxzRXn8/KSogKoaWICrLti5Z+cW8h2sXCZwukHEpKl0vH3zTNarzm1/KzEeEzQUbDmeAMvQoAMgaiYNBG45mTCzmgl7IopmV15whqY0qXlN82ggFtM7H3pSyY2T0i0t6w4iqJGlaJCv3/3w/fsOYbXWTWNSgCz1Cr325S/kWMk60hpi0hS2TnenitEFa7UV9VExkuPwypfdUzXtTMg1IgvlEFHTNMx88VmbmHmSYSbKXgks3fPIE8kYoIk7tLScvpBWSl24UPctFfyBT349MgErxr4JKq7DGFa6XPuyq2axpOtrJIWls3ZuF2BZ+eCKq5CUUrfbXR4eX9GUG0DDD+KwPRhPqGhZG7JnvWnTpu1TbpU+XlMRVoBAd3/3sUTcjgpqWb+YhkgFCZes4vzff+2OfXPVpBPAbDihnimpnD2Ll1y2O64fU65gwHbvOoOOrxLxKC1bHE+AJS/S84cYtXXz1oj8JeXZ2du37cxlhZPCWykR5Q30oceeJJI8EGpNXmxLy0nGEwKSS5aRAAAgAElEQVQaoMs4VPWl0uZLN90+aQfK1VoKIhVixWtedpXwuumrMDMBbduyGWZZPMwmhliyWV4+uXNFU04KIBkBVMBACCCk9VOnud4JENYBkR8Y/cjZBaQHW1niE4DzilAkvfdgdaBPYg3CUlYHbWk56SzvDcxtisORZmwgNUK+KXG+QSNU822cwjHCuDFlecth/tMUJ01VQtdxXVv5vs/dnMe+5SkKwbJOUUyxATTBOQ0wDREeyhRfcOWlZ5SVwXkhaEimkR2YyJLQaeeSFtZf6GzfPWWAJjVYUmBSxRpRns48ZmWv/FgP0qbR1owcKGdmBzvzjB35zuMoSeG9+54UZjMqiiKFNiDW8oywXK5j+QyD1ASLiTWKJWfJW5A0kDQAFyYu38BixEps4GRQEFjyzYiTIRkauBBhYBYH8v0qPD0/+Pqd+xBrgYqZJzBD1YgdwJwLpnNc0RhAt8CVz7rIkIxExDGzUFJVBZ+ei1XWuPvsMwBiZiyrHjwmTdN0u91ckjjc/TifJsfNW1O+ZpjqsGBFmwv27Doc5JqwCwyE+x59AhaNoNQKKrSsBUcIePieuW7iTiIfyScIpCOu1NhQasSiQ3JIYhHaQBuxuPyW/+qQvPelI4+U6pot9EoXon3qi7dABJpIQ04JJkUuByCASAAGD/trCuA1L3q2pdjEFBWs0amaGTt/GlpyM/MI5+7aCbNlp+2Kr7Qoirm5ubuXzZaZPHriSFGW1o6vJZryitVZ2n3mdgA2eT6U5TYuPLDvAGkykqaOy7MiLS0nl8PNKZynpBARcVbzVNPhkBpKhkbJd6bZTyn7YNwoBWNix+Kzn64s4xuch/NV4mhsJCaefdf5zpL6G79x76GBRnOQAmYpWe66IACWQBKHLwzIBeaXnLN1upNSMmICCCkLiJ6GlS3GvK3nNndHuuKmBkzQR1TVP/iDP3j88cfH9xyvV26wVgFxTSElFiKa7fptMwSAJqsy5MJRwn17nxZEgyTT9vtqeYYYx7hzGDD/rKqFDQqrPTUlaykomIRAplXdb0JlKTLMiTkxB3VQ1rT8RilaaLSpC3EIFaXovYelpu475xrpffqm26JQAkBiGFXbasi2z4YTWwwkMGzuybMvOts7sHgicjCAFQQ77bpAmfm8M7c6ADzMR05eOjDzO97xjptvvnl8z+ppTFp2BWu9vDWDDUYMtTO2zTJgOUc0YQczIk6EBx+fKyBG8L6MqWFqM9UtzxSHs5Qjai5AGKZAVbNFIqJOp4QmVTUkAXnnytJ773Nx9PhikEbMDwLAKaWgUKSCjYUr43/46jde/+oXeEB1VH2rynQ4/EjI+UIxBSO98PLzbrn9gb6BzUDILdCrFfaeAgx88e6diI26QgDkV7vyy1TV884773d/93fH96xyno+9urx4b035mkGEJpk3233WGfkeMxCtPN7QDMCTT/UXArZZSihEWNOkVv+Wlu+b5RUsOecpIiISU8MG0VQ4bJrqnr1zy7m7du3YvvWSTWFmamrLlk2bZzf1pjqeR00rhuVLRzOomqqSF2epPwgHBrq0tKT9g/vnDu07VB9crEghWoMAlBiOTtTh6E8DkIDstoPVXvSsc/+Ek6lpMiUyYjPzFBucXsVdqnre2TsFmvJaB6uEs5n5qIj38bpsZgZC23WyZjCzqRHRGdu35WuzESbVmjID+uije31nipbmwZxS41lOwwxPywYgh1aWh1lEpCzLay/ffe6us5918fnnn7N1WxcFAAuABiqz7RhlJS3XgNPYomOoKSUCGY4p1l7XS092bOuV2KaKipmBQhWsAFJszBVGEHKwcbGWAhINjgDmC87a3HE0nxwSAQwWVYWddtFyM9uxdRPYbHiBHH4CE3Y5Kny6siknAAIFOALCVMLQdaddjGmjouxcnWKPLt3pjUEK4TpSudIXZgQXlu5bYN8sDni2I4EVA7PCsSVVVRZ4lpyLEpEKzmIQmBcyMwUbsSkZApGMBl+AoaxRHKlOxRgVRo5I2MzUzMzOP6ucmZrevnnTlpmZTd3uVFlMlUXpi0C1maVoIaRBVc8tLj11cO7QwuId++qmaWKMTJYlMsiMGSE0wuy9T2pVNIKII41JnWNNQohq4goAoVrqdXxo1YBOKoVJE9V1elFD1fQLT07EognqynxAIeR6jq1ekpL7zcDJjBrUbFO386w921/5nHNf/pw955wxOw71HoY8cLQPTERH1NYe07CSR3a8AYCZ0Rv9CHQBCC/bl5wgL1lLAEOJKXIJeMmluz9zV38RtdImMZ3SNMfFisL/zzQai6JomqhZZ0nVuaKJgRCfe+EuaAVGUghRCSQq82c07NMcrYSOmQNbPcCy3InP+eKWNUBVRajRuG3LZmCY9FwlvMXyxP4DZsZEyZRBzByb4Jxzzqlqlps3o9BEI+12u01T1SF1u11OoakGRemDGROMxcBK3MSoJi4R0HR7snv7pkt37bjwrNnzd85efM4ZZ5+xvVJ1xCI0nC1rOgrwjWJBlgOUDEIyFdL9Bxa/+/jBux556pv3PXb7A48/fqgfgvR6mxpN/RBFQ48NiE1g5cJbMg3EVIo0qY5Re1PTdTVoF4gnl+gRTUOz4L1M9QpNSUNkSKQtUzJwrh9SXGq8+WmvXPqOaf8lzzrv+hdfes1lZ2/Z1ANJID4YsOU0+1oIuOj83Z+47VZmFuKoKZnKKRUNTSkp4JzDaEHjxW3d1PMFg4SAowz1ZAs+xtkRZYxH8L1ptk7RmvI1IiXrOh+1OevM7aN44kQ1LQBSPrR3n5k5RpUU5Bkm3o/KwgyAc05EYoydsJTqRChUiqVInnzRgYPGZKBIMLLkYNune5dcdMGlF1/0kvPcWWfu3D47QwCpFUwwIIUOexyO/LARDKYAmfAwcUNmYM75LwbStq3TWzbPPvey83/+OkTgvgefuvfe+//6C3c99eSBRs3KLYcSA5iWutMcqrQsCk9A0zRM3Ot0YozReN0MbVwn9EPdLb2maBpgbEmZnXflQrXIhLofjHynnLEYpsv4hle96Bd/9PKpqalOWQBIpmzRw7Y4zf7y6YMAz770fG1uplI8IWhUYx4ejqcAZjeWP8k5BrNkphfs2lFwFvI9LH1FKwdUv9durx4rH5YhAjArW1O+hrBp6bBt08yonnwVV8Igjz5xwIzIjHJ1r0ZxTlXB5F2pqilpSjGlQG7GUuiI9jhWoYnGles0ZiXbTEfO3bn5Jc8+/xVXXnz5OVsd10gNXF6zRoATISkxQ52XpFBTgCSPMRn1a2B4FBLl2OjwSqTsCEQMDxjMG569Z9uzztn0M9e+5I698x/84m2f++odNn/IF0UkP1/s6FA9CCGEsHl6qhr0NTYAF0WBtG6kqNcFYgI1S+oYRGxEwVANqrKkIB0Um6kebOXw9p9++Rtfd2WHzaclCOUeehALFWKJYnWaZRPBls49a4twisNUoioLnboWGRKhlDBqkR0nGy7ds2PorRHILK/CeXgGHU5IYFT0uXxAc2ZlUz66IBzWAUixLE+zL2rjQsywtHW62xWGri5eDENNvH++AsCaWJxBEE1DZHYkw2IvAEJwvgBIuZgP0XvnPftqfmeHrrjkgh+7evfFF164Y/tsfkIGDKVJqQZVmMELeDiwKjEAMQwjKQnGyyKgBgM0gUZdp0PhCzFTgEFEoEQgIuKiBi7a7n/7F174mz9zzXs/983/8emvP/DUohTdaHF2646Dc4cGkTqdblNXLM40nW7FZOudnuvGOHAgRz4pG8h5cR3EiiiFkp5465te+Y7rr5lOUaAIFt20AAJwUgDGrCTJT51uqyWCzHZ0ZrpX1w1rYjGQs1jRKQrQZQGsHCVnZhHJRZyX7TlDAFDOeyogCgjU7HBcZZxqznsd9ciTvXIGoJTPVgXpVPeUZQt+2CASS2HH1s2CiNzcsFq/z9zCoB9hBGgg8jo8xYSdi5pCaETEMVkKZhpRlt0OsXUkvfDy89/wsitfcOmurV0EAxMY0JSyCgwAInACKJt2Gzb0kQCIo6tMPjNy6QEZLNf3jmoReLRZMLhh5E5h6shgClUxRlkCjLj41tde+XPXvuB9n73tb2/4/NOHqrmnHutt2nHw4MFyutvxxaCpyZ1mEdn1jzVRnHPONTElJWEO1RK4duj+yBXn/MY//qWzZwWIcC4kOA83WmYNjxAAptkYndL3cQyE4tRM76nGkBI50+z2niLMbOxQ5+r7EIJjvvic7UAEOcKyFhLT5Wvx5W749+qNu++tT/ze5x7liGl66vQKhG1gEozIztixBdBV9C4zpE/sn2uMiIht2G2Rv9xx1UrhJNQDC/X0VLdvetmuqTe99CWvfv6Fm6c8gESogA7lpV8U53K0JBqI4AQhJOZcKGYUA0PJORkdamYGMyhTdsNNBUfWDKsB6glQICW4AsRmlF+bASkMnPO+Ox0BA37qlc+5/qo9f/aJr33gU1+sq3Jmeqqq+p7NiYf4tH7GNq4LEpuiSeAmpV7ZEzMb9M88c+qf/sx1r7z68k0SERPEGWCCBBViU2UNIAIbIIDTVcQlTg1EyXsxCMyYLKk64lNVpEsko2pMAxBjJEuzs7O7ts9m6SQAgJqxLUuPLTfRZra4uFgUR69/JgRYjjgPDQaibrc15WtE1i+emZoe1xAlU5kkYIyDh+Z1eGKpmaWE0okZ1Cyl5BypkmnadfaZL7j6+b/yirO3bdsmh3VzVWItIgZhZrCDJiARkc/5TCTnCeBkgDHccH0mOYfDh2th88slDCe6WFZeVjCBSDSHAdljdIixyDDy4rsAYMlpgjhz7Lds/tW3XHvllVf+/p+974n5QafTQQxRLUU9DU3G+sabmhmrCqWUtOlffsE5v/Yrb3vJTg9BAwfvKEXPXIz0Tog5cTn6usEAT2hhO0Ukg1DOLQ4d4WhaMOsp6vc0AsxU09A9NxNf7ty5s8NAUuOjnbZxfHz8c4yxLMujpsFhuSlPKY3HHTAzmEwjMRfGILBJYLlgWj2hDlF8CShpEJEqQFwJa9NQJxNJaaH0l2/iAcouAKuEijjh2quLD82ZNX3vu31Riv2tPT9fk7M+FT3yHdV0yZ4db3nNVa993p5CKsjskfsPrTONfz0ymEijU1ToiKNNiYiOvCMnl3L+i0aBIUYC1FAs2/TYESMSiORXIgAZXnXJzJW/94u/81/fd9Ndh0w6Thqk2orpqj+/eWa6GjSDupnuTVkKYim0w6knIy6G4HPuJAX2zsySqgU216GmLriIll5/1Tm/9fbXT28a5saK0b75f5Ks3/e9nzU3AAwyjMpme5mICJZGeXDOq73sF4sdW4fZyGF8oOUAL/JjsVgNIFFpgLMIoCG3UoxeGBEzjz5xoGNUeZHkHCxZPFVDzFNKReFQLwWZtWgALyZ52XkOYEhneI6Ro3ymk8fIIB8xZYJ5dvao8zdvTxRC8N4fIY4zXAuYmeVTjoCZqZ4ZgR2YLBlApjlw2mahTjLMnMymprvDI261EGQSOTS3NE1lrAfRq0z5A/PBZAt3O1h6+rrnX/iP3viqy849QwAlDFCcrOXV8peV/XMQNBtjS6aJYDnkkt/G8TcYjx5fA3d6Xfz+v3jHH7/3C395wy1zKrNTpYZqyvu5/funp2dmp6fMqElmbbH5apiqCI28PGnqSES+LDQmT7poXKb+z19zxa/94+s9YNUSOlPH9bAjt7FAjWyniUFMJAaJQAMWQs6UEpQsiUaYmjv24x8xHCKvCw1miIZcFX44QmKrL9HG0+IO/3qKVnU5Pi7sPEtus3PQ83bvmbBLDpOKSAhBRLz3x5wO5gCoau79SSk557JZz08LkFmiUXnZtk2zyZRZ1MhAjkhhbbPGMwERkcYduT9oyKTPOWLqyaceB80Ts5Tblvr1tp4TLL38uRf83I//4uVnla7uiw1ALjbmvyfQ9gOgAGA8SmUCWfwLyEPpAB1J+ACqxzM+4yiY4KBk8Vd/5hWbt+z4w/d+sk5wMUhZbt60aTAYEEcFi/cpZe+/ZUVSaDqdToxRFUVRikcyTUklNoGcg/70y5/zG2+9lg0NwXVWPE6Wp+COiOSiHF7NoRYCUSTxDuxQDw+SXI61bO11bCyM/kZ5RyImggNMQcyqGCa/aRXFuPzqci7nlCt1k2lKRmBhWIKqdpxdfOG5E3bJ6S4Rcc7lBNiKpny8dW5Ayu650tAPVMs/GIM2zfREKOaTFwwmS4GYFKkNXZ58TLdumWVoLlEiGkoGHXNbbwgpVWbKIuZ6af51z7vg5970ikt3zmZtfpS93C5feEYYwJ8kv3zobSsAAvPoVEk5Rw/OfdbDzeSEnaFI7FIDGMR74K2vvtyL/v7f3EBSNBHOOUjBZJaSGYNduz6cTA6i5hrlGGNeiIcYAPO+fPUVZ//mO17PptBQEAJ5f3xf2OGCuYSkiRksDF8YWAEzNCiJQAbm4RFsBlUtOQ5/GT1Q/j8sy6ZgtL0ZnDbknKkWzDGqOE4xijvtYvQrQURqlojFghkD2NrF2TunJ+8lIlVVdTod51y/3z9m170bRsaBXKtIRDloPv5gxk43AZ3ST091Dhzq5/V+7kPBUMqr5WSiqsy2ZaYnQ8U3polHK1G8/+HHlTbPFunyPf5/eds7Lz9jRljMIswoRRA55wBWg3l3siKFSZlywJwMFseJTzd0v1kVyUbS6XzCHSQMgziAq2gdF7nu//yPXrG0tPAnH7kpwS01WpY9DQPnyExNYK1TPpHCcVPXYFcURdM0KaWy9D1XqvXO3eL+/T/7CW4GVnSJAGvo+MYcL/fQVUA55WaRNDFLLll1LneIGVhAYoASWLhfZz9y6C8zk4gQkfMggIfTy3K1koIUrjtMtFvyjmJUWTFO/j0vMqd17LDhWnuEhnl/zvKPQhedNT2hxHvcGeScyxXox8x5Invl2XbHGLNXzszjn4Ej1BCJ6MztWw4dWtC8agaPPpTjaWJpOSG4U7jpTgHUgAMLJsb3Grim6l9x7o53Xv+yVz3/PKcRaAwFZXkjRzCLUVlYCbpq5+gJvMxxRjTPCU95IStUgwTETMy0PPZ5Yt4TWxOoTIZSoKGRzrQBv3z9C/fOxY9+9kud3pY6JgcSVRaOqZ1lugpBkwKFcyklIprqljE2ITRbNm/9f/7VL3UQY9FNdSgLb9xxK68CV8LFAGawGDkVF4G6xsGDh7796NNz8wuPPXVw71NzTx5cOLAwmB/EQdOwlKP+9cP9L0Q0RVWnU872uptmupume1tmpjfP9rrd7u5tUzt27Dh768z2HqApKRGAUcnG8UBHCUutLbkXPxH7VIFLgJ930Z6JLhqNU5j58zGzqaljJBgOR5my656V4JdLvRz5Qzr7jK333fcAmSQTVSVAVYlP5aezISGiTlEWngyKw9pUK55azvBTr3nR9a9/6Za05BRQB6Tk1JnFmEhKMMgN046aAuTkNO7mniElGKBEoOx9DSPWnCOblnNTh3uOjh9VY4EjUErki0ohFj2lX3/zy59+7IFb7n3S1Pdmp6vFQxYM7E6dv7U+ICIRBtOgP/DCqlYNFmemuv/mndfv7FGKUZxzhYQEOHik4zflQ9VyqpHc3FK4a+/cTXc++M27H374yYNzSwOQN0s5siND/1iJCLHmcbQ9/6MEojkqKOLJxSV7Yt6SMpSZmFm0huk5M/Q3/9dvOdKicEtVmO6spmmRo+TL9AVPFWpJFeYcDaVF7XmXXcAaj6EoOSKnMMcveyXJLJdzowDMrNfr5dYSEYEBarl7LwfdAQC8bdMsk4IQdXnz0KpS6S0nBjN3Cjduspk8QQiAxPm3X/9SAoScEQLBoQQQAOcdQZHiqL6Q+OSNECFoE+PcwuDpucWnDy0dXOgvDprm/2fvXaMtu67ywG/Oudbe+5z7qHvrXaV6qUoqPS1ZsiXb8hNwW9hNgoHASCBkjAw66dAkIXToX6FpGBA66TR0J6ZJCCMQiHk6YMA2NmAbI4wlW5Zly7JlyXqWHqV6132cx957rTn7xzrn1K1SnX1vVd26hUr3+1F16tR+rLP3XnPPNec3v1lbDTAsF57I3eYNE9s2z27dODU91brQnka1FLlWUDUpasCzCtjUbZTw4//4B374p/5D1bGy1zcjJ1kkWSfFNsOAKtQZi3Muz3ysetOT7Xe+/W3vvHljT1G4gqoFuEl2Q0WGlS22k1VS1d95+PTnH/zyV772eLdv4nMjBAucgm9ExKwgtSTq4MBEqFPYI/mbANTM1BxXMCiYAGNRSAST0SJNtDKmaekrJpljtFbhYaGB4nVOfQ2uNIMFAIGdSA02i3t3bW92b5IdH9X6j92MiEIIaVHT7/ezLBtYbQINA+ajxQsRHZyV0mXQFrtKVTNFoGCxYFoPUq4mStUDs3kNeG0Zp3ZW1sTk89ND0m9OGNC3GQOpKxBDMixZYEVAg3rHae6AZHD/UtkOUhjGztAHYxfkwb4T8MKJ/pOHXn7y0IsvHzv1pUNznU6n1+ul1V9iv4pI+rBUmTPxqG6/fudN+7a9/XUHbty1MWdN4lw1IAZHAVaTtUCIpAwlczkBnCWTkg1+E4gBlX0bqn/+/e/9qV/9RIylEJn3ddXx67zyRlBNWS6x0uCYLIplkxP0k999B8QN8uDZFFL8jQAIYtekXQIMZFDEWslXzEWEiUbUhuDQ+ubhxQ/95Vc+dv8jVVUFo2A5cufBFPo+xpyt51oxRtLIgyABgRQRdZY5DQ5W1gHknZCV85PeujiTCWQMV3qGDbFfU1G4tjAAdgyYBnLj6y16x3veKBPqC3yXpGWoqanY7rIiqkX2U+XJTmur1eX1O9qbp2S8Oi2wpOKnGQ5D5VxVLYpi2R22bt5IUMNI1suIrqCkwVULZvZeOL3CL+046UMiMKVpZGZCKi4VEAy0DAVQU4GaqrFXOIx6vmj46+f5iSe/+aVHHn3q0OGFfqWcR0gdNXNS1/Vo3TYSl1i6JExnjDGa2QNf/eaDX3/qg3/8F9umWt/25tu+4+2v379tSrQHjTVNkmsJwWLJnIMaXUKKtco77r7xrQ989XOPHQ7KdXchb09ove6VNyESXG01h7afrPod1uofvf/v+Gy8iyCFxpiLqALMxhmlxg6M0OtL0X7qiP3GH37iLx96IvosakDlpjIm7dXdHrzTfKJPk6cCJrRPbOQ4PYCa9CRA1u/7PA91nQnXGthP9ONUFHHjOykTUZ55Ac5EBRp+MKEKEeDkiRORnY/Jt2YwpsxRVGENSnRw706Am9WV0sxKBr1Bk9yNGqQOnLXl3gC7d2wVmIJqVecyEJFA6/UekqsMlrNkEtJb89IPe4Y0Ro6Asiy9YxbCkLtawXkCWwnDiVPd+584/KmvPPelJ1+se30zC6amZJRDOWk5VFUFIK3qRmexIZZ65QPCq1aR8spNH6r9r3/qqx/+1APvueum73//vXs3ZV4Zhgq1iGeDKYwDjVuImJn4HPjRv/feh3/yl+eoPdku5rrdwq+3pW4CO+KazWvV64pkN1276bvesj+OX+4FsBMg9EVcCDCwd6i7C76VxVb7P33ooQ/96efM532IqkYVyXQ+lIDz7Y2p84lod9b7moyIYFqHaCARL94ROC9a/X6fxTumjGJn4TQVUxVlY005E5u2i5wBVRMmqLI0RCi4qioiCiE6N2DDNvnAlxkR5BAq9hJ6IHf3zdfFSMJxXIAoBVVGrtKIMv5KnOGVj2x681C2bGy3Mun1LZVkN7wl1nEpILV20WIkyvbFc2ZHZXjnMJGs6iIrXJ4HAAbRKBxQdbJs4qVT9V8+8sLH7n/sa88cBnPhNVadUFPS5ByIdVk0MyKL7EdPzlLH/5yzj/LnDHMwiz2N0cQfryd+6/PPfeSrv/mD977+f7r3Th87AqmdB0GaH0UiBij0925pf9+3v/U/f+TzPXWZW18eLgMyVEQ5cYCy6d977ztIaxqfA6fR3xqdCIhDNNeefvTIyZ/7wK89ccxqbrV9qMvTbC7Lp0uDbxcUQqj70Zg5g8sDRHTY+MmisRBEA4UQjDs1vLiWxsihmp3Ig1W9qoexDiWr6tRE6yxWVNMP5k63D+Kz1oh8xbLjRgKtIxc+dNnx7Qd2qjXFBJea5X6/39DHbcBUYeayLJl52ZZvBWN2eqIsz4imm1mqEFnHKsIstldDh3IUURmtugCIiGZtxChcCxRKlWRH+q37v/T8h/7qky88//LcfKc1sWGiKPpVr9frC0s+0Q4hpJZyzEJMlhZzGpMFTwG30ZM3+rD07AB6fqPVpSBmEizWzAxxZah/42MPPvH1R3/yn3zPbCsXQ6kqAkQay5ok50IJJ7Hs//3/8c0f+8uHDy3qBs+9dTpiM0Ismaei5W23ear97jv2op6X1ArqfBCrgzpyOZsRAqAV82cfevpf/9af1Yu9CZ/P9U8vRsdTG30kKQPFmrxUyiC/eaZ1w66Zm/Zs2r15atemre2iVRSFiNRRFxa7R46fOHHy5P2Pv/j1Z1/oQE71y9mpqU53wUPbQuWYG29EpmF2akKAoaIINZTOAbLQ6WK0cTqI2bI8gssEEbG6hzxj7W+dKnZuarlh86AGMHMqEVqqxHIOzqQ98zzHiFE0PsZChl3btx09+iILzEgJZtbQuGgdFwmzdpGUAleiVb5SLG0+wswwjUqPPHn4w/c9/FePHTnahWMVc+32JMeyXFgQduKcEsrOIjNLkt8xRAURGTNpxNB2J+87aeouZbKeNQAN5JzjXC2Eqsydipa9bqey4uNfn3/h5//7//fPf2DrJHKHAOcackGACGIIkhdThu/6trs/8Ad/WUKvlEzSqwUCkjzTfq/szH33+7/FRcDnsPGm0KKIrwEQIZg5/tQXnv73H/xwp5xkzcuy055odUOEUhVINC/Jbtk1+y13HHjXbfuvv2aGmcwAdsnXS5xlAwFTtxzcFoDv/Q4cPlV/4q8f/thSUE8AACAASURBVG8f+dRiKX5itup3OFTjE/xMqDfNTsFqImdLInjjtj81t2DgpZFku6L2ShVsWrPcun+rH3LKGrZPVT7JPjdY5sEFK8syz/MQQlpEN44k7Nm140tffR6D6yJJHW9dUWu1oXnul8/qLIdzigNoqJMpjLnafeLBZz7051945shpZoe6O01GKqpKZMYClwWwwZuiyJKOeU1Gqe5HVWMVxedLjzwy4qO6BhsKX6Qvs9AxcCSJxJCs1OiY8qnZFlOnR08cCf/4p3/xP/3U/zJbUJY3+VpkAIk4qevoPX/3u9/woT/55AlMI6zrmDfCi1OtnN/qsr91z61QM8lhFdGYmkl2GmsvvoqAyx74+pEPfPAPj/VkSupOrLOp2U6/nzPnWmvo3PmG23/s79y5ZXZmMs/JbECEIcQIkbRcWqrWAjZDlN0z9EPve+Pb7nrdv/g/f/m503NTU1PifAjnT18bgYg2zWxIXKthsdvYJ8WAufmFFHE2M6NIxFeSOR2V2VmsK/VvumU/gFQC2zDHky5W4hE0vLcchgK4iYi+/FDMtmzaTAaDRbKMRmmEdVO+miCic4NdF0WGHd3+UT/Asizn5+d/8c+/8fkHv3Ts9CIXkwQxDcTOGKq+QjQWMClUzMSUYujDExE5gkVVJVMiIvHJdmOJsHKy4MknSBmbGONos4ryLMuoLikGn0uMKOtg3OqWvQ0QDfSMZT/687/+wZ/6R1RWmo+tyWYgwgnUe0RgJse333P7r3z2UAvrprwJ0Swu9nR2+o6brp31asIwNNRtRTjhGlZn4p8+Ef71B371ZMhda+p0KLOWan3cSctoYmrS/at/8nfvPjDBYTIVuwykPCyCVIRgQ9uSPGIdEJQqh6zuM4frNhc/+P73/OLv/rmGKpYd+DHV7MbMPDnRWqGHo0Cv1wumGZOppU7FV9CUEyDOa4yRihuvvQYATJW4wX02s6SGaGYNJtoBEJHFxcXJyQGRs5mIbuzfssP9P+J8XReZRwx1yd7X44Oa67gYmNmEGAAj1lCJyyKJaMSYm26ARiMEZgJM62BZqx9AxDnAFkWoDHTfl5/+vU89+PAzL8EEIMqmTJNKFwAEBVBLqtFcEpQzYQZBa2IzMy+5mdV16TNRuLrqFnnmKd79uhvfevO+g5uLG3Zu9DPTUCNKHjqfXui98PKxo8dPPPriwle++fTjz8/3yCuIzDKKHOaLbLpePN5ut+uQPfty7//69T/78X/4HtEaLP1A3hGpMpmBQWQGIwhKxGjSFgNQ/e33vfP3/uIDlRSCqKoqOcjBAmtNBm2aLK8hkJau3er3w/e8fiOSanlj2lO0iuxYeZHwv//SR05a4Q1V2c0d2FxQL4q7rmv9/P/6AwX3I1pyjqkhGfjNI8M7FFZL8AB8RBQn7vabd/nY6WJL7VsZzp9+c1QvBL5xaw5CBWShLF2ej5fDFKufOKVT1l0wX5DLUJsRr6gv12UBmfaqqijyTU4P7tgAVZAL44U0Rq5YCoM3HHnAKJ+cnEwL4eRPNVhzAjZv3uwQ2fu6rsU0z3ON5XqsfHVBRDLsYLkSGWEFhCOgMVp0RXS+ZXGCehDAimMn40c/98gf/PVDz5/uiJs0bTFdGP9amGMccKE0qqrmeW6IMGyeyL7znXd+73vfvrENUwjADAKICVBTBdHMdGtqes/11+95K6nHO7o9PPD15z76hS9/+emXF7o51IdyPtuwvdPvtT33u+VH/urLt96w9zvv2Q9DxlZXMc+S6uHA24sKYYawGUzBYhsmWrdev/eLTx7OMm8hMEwtEBHAtp6WHyKFwtqMW2+9NcbIZ7NIz7uDgCPjDz7+xacOPeFkKlCP2VVVj4gcy67Nrf/jX/59T0riL4JsZQaiCUgNi2UPxjlRNWGox/jN0Wgi9+2iGNniZQwPydz84qDZ8Ujt9sqBiJzPg9mdB3ZAPBCMxtfsL+FNZln20ksvNRzZpY2WhjtH9INxmJ6e3L6hODpXGiJMmXNdr/RcbVjUQV/tpYmd8bNOtAR7g2MHBjKGGUMmn3ph7rc/8dFPP/rkXCi0FMGEF6u4e2bBu8LxmDFz1DiIg6t5kW63u7lNP/u//cidu1vSnycVUBbNRwDRnBCQFu+W3DMiSCTj2Grpu9+w+1vfsPfwKXz4vgc//JnP9jthrtJoLq86RdHqWPGrf/jpt992zUzm2YtnMiT5gtTcyvFAHYSiIWVHpzK8++5bPv/4C4oiWhREUgW7AOO/iS0nrwwMrLG+af+u9sQU0o1pnOxKjlVf7nR/+xNfrLQWU5/5fhXaRWuxV7U8vuNdb9jg4GBIkm8X6NMZQRXMULIHHnqsF6DUyeHHrT5VdetU3mq1BpNhoMU99qQGPnrshC6p1zcAV1AzSgP5oluXb7/tWhBgKA0F1RijGZq86hDCpz/96QMHDjQceKBVm/6RyvaW8oLPv4/h4K7NVR0z51Ot9nml0NdxKVALuc+SYBkwvCMN04Q5GmpDanZfA5965Pkf/vnf+a6f/W+//9BLpzuFVhCn5EpUi8Ur2nUvixhrIhKRUGv6UNelE/qZH/6e1+9qOSjlLVAGNWGV0JdBafTITCjMSNERUhKnQnVfwuKu2fBPv/OuP/zZf/Yd99zajouFI2NJ6ffnT3R+99NfpSwHwGJ1HSMAA2IAkFSCDMyMVHTsoW+97bqp3IeY5G5VLBIRSNa7oywFQd9++3V1XQOolnPCIgikf/SnnztaGvvJzFMZjcigqiBY3Lt1OrcKpDC6iKiFAQyFYT66P7nvwbw1YUY2XrfWiHfMtITFBopCNJSoOD9qw8nTC0P1IQOlnM2VfB4iTBh3HUyBclYAY7riYbgiJ6I777zzqaeeajjsmZ+UegmlPO+yVT/Xbps2FhERMtOw7vSsOpi53S5GpevLVjQYPMM8oW/0+5/9xj/4yV/5if/43x/85lHxWSvzGYUs9gsxgLuWxWLzRQxpVHiWHi+N4dq9u+++aZ+3YBF1lEC+bx7A0I4PWrcMfgIZs7ahAoUZXAZXAEzQ6YJ/7B+8959977dM6FxtBqZCOz5v/fqnvnK8j16vDzPvU7dIJSdDHb0zRXLRDIjXbCwO7N5CUE15VwaJgzgeE3h9DUKJ2OyNB69JHpsT6HiqMgAC5rrVn372a9Ex00SIPTUnQrGuRKRf1i8dPUqp4wcR9MJdBAVoEfC/+dGHj1fa7y5OtTYu6HhTS7JnUxvQkWYjNzIu5rvarWKqwiEbFjpc6ChXD8xMatfMTu3bMgUAxM1yMCNVjNnZ2XvvvbfpyEvPkYqwm+24GZixZ2NbnA8hqEYiOk+/1nVcGjzL9OTkyq8roT5d4lc/8eB3/4tf+H9/+0+/ebSzULsgE8X8ydibCx7BSdUProZjWQzdixjPkC4OZo5ai8i+ffsiUa1GAu+YAOcogmuVM5KZJKlCL63eKARTrUQqcjAHZRhHQYv0B/+HO/7n73pX4biOhroTy34HE3/06Yd8ezK9DwgAFGpKiW4vBBpkvFJ6zfQtt+4X1MPlOUeFKWw9ArgEBD24Y8NIJKdZJlOAB75x6FjXxboLoLLasYeGqGGiVfjWxB/86efmlBU+kTMudDCOAXKPPHvqNz9yX2B2wouLnYYcNRFdu33WVMNwCdDslb905LhBiJrUS9YSCjYNd163w3uBGggZgPEt7ZJ7HUJYWFhoPvLgEoQQ0m7LhkpSe/Xr926PoBCC0Iq8+HVcOCypm6kqoMvWCD3x3PF/+tO/+Et/9IUXyslORZnGmYm836/q6alaJatcIa3au57XTOKmi2rRcM6KTWDdxYUIsHOAIgZSTa3UnZwRhBhWe4qIZ3aVy8AuU2SGilCygYKEUEeOnVPff++b9m6dkixXaU20CunNffgzD3YNYBrEhMxgZzoFMZQowFTJKRhmb3n9AYcaQFQzICiZEa+b8iXYsmXLdAEAzKzLZgKjfvqhpzskU1lW9+fyfIPGvqqK5153vqz0WFX82u9/LrWPihfu7pLqN465n/vgxy3PuQwhamuy8KE3bnsF7dm+cZTDBBHQZLMOvXQEzquRmf1NIDFFA0Hfdtu+1HgtAqRVbGyuZWZPPPHEeTsHLcWZt9nCwsKKLLIhxnhg9846KJE5z6kdyYp+xzpWjBhjiu/FGFdCg/38Mf/4yz2NUWLpsjwY9xbmN/rIQdhnfYn9up+FmEeposzxBbdpTm54+pzqgWOMzzzzjGjpEE0V4kDMBKFAVgKppCi9/AlECgsaMwOiggMQMgu5UYQrXRYdXLvtrHrXXbeRZD3kIYRpdF6e6z32xMsAOZcW0hHMYZhdizq4ODZcZR/cs9mR2qDyVNIrJFtfNQ6hRtft34fYx4DoBjQuxIn1i19/QT1bt8zzUJaSOUs1vU5APj9V+T/81Of+7NMPxFgvV39+HnQ6J376F3/v4ecXqtArQN61ytBpj2/rZ2abZ6aJyFZWynL8xElmN6LnJe2VKxhiIUgmcsu+nZEESVLWlnGsYox79uw5ceJE85HPKKBOTU1hBbw3I4hKnsm+rdGZ71RTk67qr5fYrTYyL4dPLgLwjow9CIKmJZMef9KmZhxMnHFQ9hBXVBpNK9IoRsysTErKFD0u3CtnjjFCSYhjrBUInL18qvfIo4dKuNoyWM3WN8CIkyYPM4tQyoURwCDHEggQHvY0IJAKNNfSAWYCZPu3zWblMaJYSatvmQX73c8/C9QGc4BxAfY5AQQBHHuIB3M2LJFoxfr6G2+ZQDfAOija1rHQ6azncoaoVW7bXAeaMoBQc0REUyrhkcOd2OuiDDF3QlMOvdLUXLvmNsG1tD8p4UTp/t3vP/Af/+gLAQhnDKwCqrAAVACgA/2Q1NPGAODZZ599/8/8ybMnFiasx5DKSURE5ODHuhpe+wcOXIMY/YCX6qClGKIpoLAa0OQtKAxWP3ICed0hrnOiXqwjWjWCv/zPw0j7CEuUn5lZfNg2NXnN1lkXewEcAVArb6xrc8612+1bbrml+YwDw53n+dI3VcNby2Bpp13bt4IGRJmkD7COVUQd9NSpUwCgOrgbzSRRtRgj1JbENJaVp1gF/MYnHwxAxjXAgYshiWGsEBiZDsfkgnI/WFQG51VVE0UjPHeyG6WVWR3785a1XZY98uhXQT4xLtIvbXI3mK7bvU3Bwixkys6T2qukHfsaIHOyYcNUyltjQLZuclEPHzleq4FJVRGViISJzNjUYh1iLSKtiYm5Pj523xd/4hd+8/SJUzGEFHCD1mzRQamuA1iEEHuo5wE7bfjVz3zzB/7dH3W73XRnzxFJHjeezTPTLqmpjL4iAcDEAA9CboM4MIHk6NHjtUYzUwwmhWOx8SVFq4VEBUxI8zFpE8WAN9yyjwCwo4GCcxODM12KF198cdkzDh7xkWxeCpo3mQCNIBD4ht07iQzQENfCZLzWEIGTp+csSU4QMMxnjEOesigJxmcM5mXGfU+8/GefezTxAes6aWs1eXkCBdSMIgAh5wQMNbQzArQEPvmFrwXKWpl5stokxnj85NwTzx/PfIbE5GGjJkYK33HD3hgjqRJirSIW1dafzwGYbPPGTUsLFaix2+DTz78ch22hzlQOWvSOnbCqlmUZjdQXLy3Gv378pR/66V/55Y89+PQc9yUzzqEKrT0HBy3rEKTVzaY/+sXnf+Snf+3f/8YfL1K7LMuRFtvIjW0w5Xt2bhIQSAyDKuXEgUwtr0CiQ+I4AAO/eOS4GumQdU2m4ghxjRhNr/TNY7Rvvet6MUTyAMRgqBu6gxHRhz70ofn5+WXPddYhRk0+G0wzM1sEgQ/u2mIUVSsveVmXsl7uuapg8d1+NWSAAMvFviYn2mmRBCEYKYHXJB5Yq/znP/jMHbfevCfvtXwWjCNBGpT2Qg2fG6iq1TM5SXocgNX9mH3msZefOnRY8omFxV6et8hCjNHnxYOPv3D97u0AUk+jRiU5vmXPZk8alBxZz5BrBOdY5yMCADTUszPTjW2Bz8JLx04ZeRGxAEoNty2yUV1T4cR7hBhjKFk8+XZgeqay//InX/zQJx86uGfzm193w80Hds9M5Kx1GeafOzL3+a8/99A3nj96uktk7ZxRnqi5PdIIOseTPe94rt0+S1AkkeVRvachUZlkoPcJEILh9NziYqdLzhGSq26mJqlG+TJj9CtSVHTUm2Xau9dduwkRdeq9awBrg1seQnjHO95x3333LXvGM/czhOC9X0EfOQUzDDfv3m6ogcz5Vt96TW0n13HhUKN+VUdNOhkws2bS2GR7gk0FZzKTIAXpslLIlwhRPtVzP/Hzv/ZLP/FD06gp9tkVSoExJtzpfPKrC89kARahSeRTjgX5wAf/2MxQ98y11bXQnXM+r+r46KETUaNbWfZy2xRvmZl86fiiiIgZWLiZe/xaAmucnmxhGLJbdvsT891IDDUiMqJoZEh6DK6OJkRMANWmpqqhttyxwTpl+PKTLz/y9NEYo4KzLIv9OZ+3oqKqambnvAecCjGd27ekuURx79YNpjUoT/YfxBHsBvJqOCOUaGzAS8dORyPPPoRAwmQpAAmiy+7nLPXHl2r337x/x4aWg57xLKixaMQ5t2XLlu/7vu9b9oxnzfOFhYWRY944TAC4dtN0UWQGjdbchHEdF4MA7nR7KUwyuhs6/rZMtHKLaoije7c2US/nvFbl0y+e+tF/+xuHSy9OSHthnGIqAOKqtjpisAI2gH1kf7zOfvzn/suRhSCmhZNAvoxWCDmGEh5+8gVhMaS+jNxMenPATXu2hKR8arEGNwZkXlsQ0nbRWuoVNNewn17saTQNNUOJRI2MQAbvvRHX0dQgZh6hECscad0XRCJScG0cKKtMurXFYravTpUy5x1Tr6wX+tqnlg6RsoJLLeB5sW/bTKoSGDw/g/w3aNCiEMBwwhCefflEKmpT1VSgSultdPkZTaNfkfRBR7Hyt912LeBBwad1ImG8lNYAK6xVPqvaM5FY0GwFzBSAQShcs2unWdS1Csu+1jC/2OUzMc2UBB+7cbvImXDONFgD0pVprYgl+688P/ev/sPvfePlKnKryecx855cenpDBPs+8VMn9Ed+5pdfmKtCUFX0+1UrL1BHNTKNzrnnj3cWFhfMkg+4jFS/abjt+j0GFw25hRoZxpPbXmtgInGElO0cXcbx92uxXxoBUE4PF4FJjMBWQ43Ekc8iUVQNUYOa+YkoeYCEEFjrgsMklS1bpHIRWkWzGj5Q5rOiyDKOJYZP6bL+eMLe7VuEYWn8A1OUEM+I11oEoMBzLxxJvMl08IEqCUHXJMCCs8MsRJTn+Vtu3RPAoOjT4EkvVA1pHM5MiaUslKYLSlBTAAj13r27iYzJ2brXs9pQ4k6nc9Y3jQXWRVGM+viMvlwDU+64W4uP+YQaPfz4cz/2b//rx/7qa66paGNQt1kHhSsC+NOff+LHf+YXHj8R+xXYgisKE99fnPcCZcemVa/vWhPffPyJ5J3UZSOT0lRVD+zeRs6bkucQJaN1jaAz0FHjp/TvZq+8riMRydBfJmKIUwVrIItqFCAGB/YkeYRDrDTWZpGdKPt+pJ5xzYVKbnBE4igillr3SPsOMUmxLmV6NMv5bZ6ZZJbUgXDwe9IfS28xEQwBOHzs5BJGOakqCQNslz8N/spp6L1vt9vXbt8QAbMArSwN3tCQyFl51c5ZrXtXskNpzlu3YphvvWUjeaHa1abrgfJVRit2T9gUG1TBpGpgbmLDbp4UrWPtMqlqiDqSvolr9F5XBQETLfHcX2QLPm8dmS//ze/8xd/9vz/6yDcPLdaD9l/pSa0NAQBZ6C8kK/3Q08f/5S/83s/8148f6k85DaQ1M9fRFMgzBoIRBXG58yEsPnyYKigUmmcyrh07EJiF+OCOjcSRyl7PTWbVceXJy30dXi0geGOAlMkBzrA0bHseBHNA34AaRSR1VnKtcL4mAbMgSqzJ1MxUA1NkZgYJMYPIVAiOhQxsygNRfQMziRiJkYx6kpzjmxt7jb0CqIU1SoZuUH9w50zuAOQCOBZQPix858A5KRxg1ossMEwqvni4i2GAIsbovdcQaTCSy3ydq8WYTdXKCmrZohectuLdN28S8TmSrm/hAAGDQRiMcLR7cuR7vV63u1KNjfOY4ObMpyOCgoEYsX/fHq3ui94557BeG72qMLN+v4+lJW2N71rvvQjrMN+yZn1SLKrSoGc3M4O52+0+//zz//DfPPa6g/vectvBu27ae9OujS2nHjVUe2g9dbz72Ue/+qnPf/XZw6eqKrQzmbBOOSZtTkoK83BPPPus4E6okTTV+aVrtGF6YnaiXWs51++3nFsvYBsh0atH/1zWfxMZLPTUjBML3WzVWs2OR+LR2bAY1UDMvHlmatz2Z8gskVgARq8X+v0LE+VfTZBoqDJHqiHCK0Tq3lvfeFvDHiKS2niOikJOnDjRaq20V/t55s9yDBYMFdyxd8+OVk5zQZ3IOkFgdWGGTueMEsWyc6fw4r0v46Cvpqk6xxQvQnb0wkBkSRMl+REiYua73T5c6+vPHXn82Zd+/cMhy1y73fZ5oeBTR18KEZG9cuZ8kYkGtTho7DLmFAJWfO3ZQ2yIDI+my2FAWmtev2frI195RkQUNSyuJ+YTVE1TMFmaa1MGyL2XQeGmOie0TDxmFQdqA76kRWanYCbbs2PLuM0ZgAUyZzRo7n345GKv11s2qXiZoOzEoqNYG3rqXN6aCp03HNzTvFfq92ZmqZnn5s2bjx8/vsIznrsAX5aizwBcTgAz2h67t8ww83IqAuu4YBhTp9vFSFt/OTAh8wP5t9FadW1yGKNYZCpiyrLM53khJmYA13DzJR3v0gunwxMvzc/7rVW+wTtux0XfO879uai1SpPrwQwL8VinP7dgEKKRSOKY4STS8S17ttYaM+d1vdRzCRRcVdXKkyi5dwQVgimlKPMaCZiQgtiUSCMzK8jM9m2badhDYSDYsAvzoRNzFq5YjkRZhDXUlWNEzpjdbXu3Tvix40n8lrqu02zKsoyZ8zzfvXv3Cs941lO+NNk6bgcCBiIaDAEO7NoqIo3aZOu4GDC5qqoG13Vl3PBWlicHeZg1aiJ1rSLSA+OcS5mlpGdbIZvvay9AfC4iWi5KtTAtleudcKEfIvqUl1xQVuRkWRhbzKbgGGoiquGefvHIgKEw3jNMpWpEuH77BudcjJHZrUuwnAHJYrd/doOBpvbfU+2c1M6p3FkD8jGZAogwgiUGIUx3bZoev/2QNIJBidCzx+aWDzBcNqiRaUgq7i7Lq37n299yW4Oee0r/psqei+MTX4TDoiESDTmR1+3evjZaH685MMWovWpcj8NXQlvtfDDZWBS8NnbciwAYaJEvKdsTRuaFyVUR/VorcyoFfLudOTMrVTSfqfx0T10/GDfoXDNRDMgyo+zxQ4fT1GyUJdBUiH7Dno1pMFWo17sIjWAsp0/Pr/yCzG6YJigNV3vNpeCrCB4UATM0kqmxc4QdG9tN+xANOo2DAH3u6CleYUnrZYAwYoziC1MlU6f9u1+3H42XPTHWkktU13VsZKy9EucJsCx7m3XUfhd603X7zGwNMsKvNZhZhPX7/aVfNe6g7aK1NLqCoYt6maGOYWbJmyAiZud9XnXmPEIuwWm/hXKD1BNx3nePLAQh1868SOhRf8EBxq4bx3pPppSRBBirf+y551K5dsMjmn6wqu7ZPJNlmYjEoOtV+2dgdOr0PNLTtILu1ZtnN/IwHZIgK2B/XzqITMHEPDidsXNu6+zYtCeQBHpMDUmR8fljc7ZWWivnHQuTi+LNImL/lv3X7JjJG1pMAJiYmDiHxHKpXnnqJTQOGuNAqsYMpvt2bV1v7Hk5kKivVVmbrajAGkCKr41ux9o4UFVVMXPu/ci8JhW6vGhFSD9S4FblpxaofRqT/XyLZyKtrO6z1o5CxrXXMsfYRy5o9Cy9utSIZw4fhi5f3xECmNk527RpExFlRW5hnV41gIKS97fCWTs1PTFgZA+mPKfaxcs7SgyK2VNQR1WNyTvXKsa3aEhcjJTmM5jZqYWFeBG9MFYLGpxzVa2ehTW86c7XMcVmJlWiDqZMhvd+IIy6YpxrypfVYCHxHAyo+yIwt6XA/h3tel3af7WRW8Xij5YQqsFEhkiC8TrjkdyWvFKFuZbVlYjAYn35g8TssqBILZSHbw6FxmhEREJgq53VzmqPwFYPmcUugCBZrWTiGgqpmdEl2YwoVH39eAYGw5pEay3CA4Y6xDuvmeiL9/3S3HqAZQBC+fQpQew5CSUYFsQojn9M3rBNTugUEeUudlRyCVaX8fJnkkuHIhS9OAc/wWAK3et2TMSGpBHVFVwEcgACCe6pIx3nr1yLCUK3timpY4wLgb/z9TtA3muTMWfmGGOWZap6//33n7UiXwHOvTR5nqdITeMolwgHmO3Zue0KpheuVkRQilqsfJcUZbvK8hYEqGqSslPVw8dPLuNODn+/c37Lpg0EXUk5+GsKJ0/N25mS/cRgGIuNG2c8x3T9HbOuVbhcVYlNyFlUMxORyYmWLPcGGQn2LnRqRL2C991Uvfd1iNEXN+/aNLthGgAaXV4iEpGyLEXkxhtvfOGFFy7ojOe5Nsm9H3u+4Y6DDxG3Xb+HG98267g4GKGsV1rjwECWZQOJnqHxugpMGJEl4RBmhsYnDx1Zzo4wQ2FGoP27rmENxO4quA6rBTN78chx4wxn5nLTxdmxZfOUJ1NSg5AGg9JaKLWRmlHSQ1OFivjZ8fVBaY/UqcoIZnTk9NyVDfyqqhAqpX6Ub3v93laRouRj30Ujpy3P87qu8zy/5557LuiM5zn0iCA8bpAADEzDxf4t+6/R6sLWAutYHkYwLvu1gVdoiIrMDbUTr57sxYBkZgSwmD3+wrFlTTlB0xtg364tiP2rbJlyiWDg2Mm5vtIZZ7zRVWwXvHVqwIxipKLLtZAMPosShAAAIABJREFUZlAkA0jIjIkUm6cnmnYw4uHLiYwPn1oQM71yr3BmNg3ETlXf/fr9qflsHC9tKiLp3WNmJ0+ebO4zc/4znvfbVHQ0BkoMhbhER3W0b+t0a12CZbVhBGMqy3LllijLMjMbKeESEV2hUrdVRHq+FRZjhNVPvjTXPDtt+IfBdsy2Mwp21QWdLg063wunFisAbEBS7h5v8gTYv3MGTGZGWit7Sm2fLjOEXEQFc0JMghhtZqrV5KOQEABwgAJ0+PSCENuVI6GyiGpg5j2bJ2/YswVmgFJj7mrE5Z2Zmen1eg1bnv+Mr/zqyJEjy+5mYBr2x5st6Jptmy/0xOtYAbi/4gALzLIsM0RQU4XXqw7EiR3LZuYYz51YbN5eh3+Y0WSOTRumojVJ+7/WwKBK+dDhEzirO3ND/2+7df8eIgEgprRWTG0GIqKl2k1SM9s01W4WK176e47OdfmK3vaQnCqL73zdXoiACanr6LjtQxjkIEW899u3b7/QM57HlC8uLn784x8fv4vBoKmdnsEUDv2bbjhwoSdeRzNSuXlz/nkpiCzPvAw7gV41sXIBwVhTORzhyKnOCjSS1AxMTMCu7VvW+3ouBRHVSk888xyG+S5dpqpQb75uj5kZCVlIBfSXvwlPauIKAVvUCCPI7PRkk2ADJYvEigjD8fkOG65ggEWNQFo4+vY37Ddyy7IXlgZCLq6i7Tz7PPnkk3fffXfzboMuHZSopvHaa/ddxLnXsSxiHN8k8xVoDIu9iqE6yGCx4dR8v9crGzZOc7dORbIxbNm8EVfFK221QEQKOnz0mFlTvf6SHeyabZsH9fpEZqSqa1C4rwpjI4iqRgsiMtkumnYY6iknLPZ6dkXTniLeEU+0W7fv314P434rvGoXt6o+j5l43/vet2HDhtE/l1LizEyVwJoDMWYGY0dlld97/SRISyMvRDFEzhiQ0NXG6qZ1NENi3Y+JfWFGYA1NDUcMXlwq1k0a0GtTynG5URs8VeayzHp9BTt57KVTDU86QVVbmSNFNO9u3dxWTILW5d6G0Oiy4oFvzhGqSMOCz/GPiYF2TbmdO6c9W4nCayfwNNtKRbQvfpgSC20ZdYNvu1qUdGNu1mBPCKYUCTkJOByZMxO4K9c9qh0Xu1y84w3Xk6cslACMPMbr7OOSHY7ze3yq2ul0RtJaie2IoXAShpWE6XOe+9nZ2cnC5U6S0U8HTZValzK4dZzT4K0Zo5f51RQrP9PiFgyAiE7NLzZfk7Q8TR0VNs0mCZG1GOqrAsbU7/dPnD7V7Q7iVM0XhyAQvG7fjlpJhMiIKYLGV12u4lCHd5kZZHFpm7Pm7aFU17WqXsHYWqDcaf9b3vR6WGpNDlNtEGdOlvNCdVeW4vymvK5r730IIXl2McY8z5MaNZEkocvRHAPgvezbsckJBcWggzbRMKe8jovHUkGVZQ300ij5VVMXM2hqAVNiMmOyF46eavhpg/7lBDOQYcf2zTy+RPa1CYb2euVTL55IF3GZx8pg0HfeuLc0MwIiYP3K1siUm9kojd9qDrAs2QtAt19GW6mk6OVAn7JdM607rp2G2SAr0bhESCX7uAQ/7Pw/dXJyUkRGB02cx6XnGH1OiqZmdvt1e0JdkjgiYpCCjMXW2+NeGi7oLT1qWD765ipwz5NnRdAIAZRMnz96ihrktFL/OUMiXWzdOM0ULkoB9OqEKXLviPmhxw8BGFiZ5ogV9I37t+c+TWcnXDUV0K/iUM9+YRd+xTIUhF6vt2YijudFAL/jzusLC0gNYCxd6LHXTVWXXXY0o+nQzrlEkUnueVLVWRpaASAiqWr/joO7Y9mjYeMPA4PWgn96tWJEMl361Up2Gd2gq8MrH7TZhSm59PnF4018xEHhNoHhYJhsuSKTq+CVtloYVPqIPPjES2eerUbTbLBNG9v7tm0AABZh2OXvGbt0JcqA8JkVZ/MuCf1+n4ia2H+XGRnFe+95A8puek8yAG4q8khBjktRQBl7S5i51+slUkTKpMUYk0FPG4z6qyZct2tTkTkFISZNUdJUQr2OS8AFFR8vvTtXDZQYgCONg9r9cGxu2eqJYeMgQy66YbqgK7fQ/psGEo6hCtGeOnK6Don30bjyI7ASyN504y4yjgSK0tAme5VHO/ROvPeUVgjLb0wgqkJsrmK93Ni9wV13zYwUuUIGqeXL/BA2Hb3Vaqlqv99PHS5euYENEM3i9un2ti2bo2k6qCVhzKvNsKw1LsizXuqVX+i+f5ORHjIFC7FpPNWruuX48PdSUprCsW7eNHPVXIpLx3C5xic69swzzw2/Hbu9Gpg4krzrtv3MHBiqxONFiVcLZzrpGMxilmVp9ON3GPxv+nWqysxXkFf+7juvazMMPhgxakAjoVlRI8Z4Ka7YWFOeXH1mLooiOeDpm1Ez92Tf01qemZ3Ytq1bhgsFBTgaeN2WXxpGD/RKnsmrzyXHaIltasRpddgvY+JTNcDO6HHr7Iap9Vj5CDGaYwJRJ9iTTz6JZV/5ZDCuwLfvv8b7XIVgLuPLvto+J5Cb+tA37zDaEUOunV05Cst73nonk4YlvfOaZ3BZlpeFjJigw9qMpSt3ole+GhlgA79nf6bsa/IKl2nHe99b5w5cLNKjnF7UZra8lTZLrSxTjvqcmfDqBSlEJJIUsVOFqNlUYf1nj4znNbMqPAEOwTzUJm7c6NeT7yOYOCErWFn8Zx47RtCKnelYL5tBkdEKgTN7260HXL1Azjr1ZY9djGLlyQSludC4w+Dt4pxTrZnTDLrs44wquXQD5T1DZr0J1661vH7npuuvmQXYAxkA9iD2AOAwLOEevXLShzR5L2Uk45kAS/o0YmWr9RtvOpghpIE68YnReCmDW0da46zQIr8yZX9VBBYMQEw8Fho8/XOdzjI7DEGEoijk1f9KWy2k3o39WsXC408/O19SBjQqq6hFgzOBv/v2PQJXmhWXxrVYIZYWVYQQlmnUueQWM7HIBUycS4EhRC1gPccirj3Xn885f/c9tzXskqxiCGFEC0ws+KJYEdtyHJZZeKZuBisJ4ihwYN++6SyCZRBBv7SXzDpwQWoMg+TEihjoryKcQ4E1s2A4fnphhTsSMD05sQaaIa8WWKyVEDnLyI4uVN944QQ1lyCCGQQoKd5yy7YJn9XiNaxF2nOQiSMQSV3Xy0+FoZ8LohQNJrvsgSBhDZob+t6sVqlIJ3z+bW9s0qRKzrH3PlXtJIrgpaurN12eFJpMlUFYgYvnBfu3TCR2ZHLJLa5HWC4eKT+xcs/66nx3WjRQYr8RjGEGOjG3jD7iUszObJDLP6VfNTCFMfkCoXSTs3/xpSegTbx7HVTPCmA7JrIb9211LrdlulSuAs55hdcDVZ1G0uQZCTnNvF+GmbNKYHIBKuQYoTbKs4kbdm/avWGZbkHJcCeSN4DUBO5SR9J8yvTSSDGTZcNVpvGuG3aZEgkrbCCfvY6LwkjxcuW7pCKAM6n/q4JavuTnCGkEAJefWhzf6sTOThEbNs5Mw9ZdigFERGFmFuoKnN3/lccjsmX2odrUAX0ov+eem6nfZ78W2kpnwuVAiLqco3IWEzdVp68BGVqVQbUgJ0QwuLb3vPWgNNbrJHYNlszuqqra7fYljmSZRUsyBym4M3LPx8Ex3XXT3n5VAiASVV3nDVwizvLKl7PL6UV7FZjvpUhrZAPboPRHid3JhZUL88eZ6Sle98qHMJAqvNU+y8qyfPnE/FMnquUc2EgERQT4La8/sIG6kMtuys9J/JhZr6qWebKXRBfb7QJYi96eaixsYhxgxjQj4e13XNdAaWfmNKlTEVOM8fDhwxfRM+g8R27+bxpGnbCyCOzBXZsSeXHowq9PoYvHSOhmhbg6TfmALAwzSxUiCjo535T2PLMvALUNU9JcWvKaQlAQkbOSXc5kZvZnX/rmMvuYAMGsFRnbJ4q333pNGS5/OnFUHqGD2ECvu6Kuk2mv6YlJBq1F4zoGGZH1jTON9rbbd2+ZyML4athRICUFokVkdnZ2cfECAoZjR9L8393ugPW1EkED0zA11dq0aROME9n84jTU14EVS2gtxZXtS3uZIJQYLGfmpKp2mmb12XUhZI6xBvrarxqwiAjqfq+snJCZffZL31jG5JEH9QGpAVJ8+zvuUKypeLUqjAZqU82IwxnQarWYV6zZcgkgIaudUd+QmdG973o9QlM4LyUgRyIoSalw586dlz6SZUxtXdfPPvssVhIoB4gymN52/dYJ7WuIpRnHV31vySuFGI19Me1VhAwgIJCgQeSPuKwrJRAZwXggMvyqN2FGEo08gmOqKLcYCrEji+GVy+dB1gvOs8JgZFBU7F3E9IbGDr+vJRCZWG2uYHIVimh89JnHv3GSYSGEkC6oDTTyI7QCEMsurAChsAiqb771pn2tRdKSXF4akUUvFIyriGz1pjtJlJKDZ2+LnoqA8NJC3cBIMQQoe64JpHC7ZkIMTi+/K9k3OB+itbIwt33T1D03XQvrN581PaipWOeCeA3NWOannj59OnWZWzZQLskbIr5537YAZoYQtFFBZh2NGLSPGIXIUxfahh3qEAfsrbT9VRFoWSrzm6CqdV2fk+YaYfSdDT1NZhTZeguUAaIpQARzQmRqxDXJAw8/qgbnnKmmzBwGYibMADmfpKvTxS0Eb77jViIqQ+1dBgCmaQm+KjHfIVgpxdNgZlDrlU1eOY3+NjAwWeRrExJwMQQ4VS1N3nPX9REAu+YTD4iSRGY2SoFeOpY5yrXXXpuI68veJ0qhWpI3HdwZyAmBLIb1gulLwCjhvKKNgdEKNHX6ssut37MmWCJdMLDpqlpV1SvXiOPKoxi4xOKLqwo2aDMgFMmUiCIVn7z/y5EcoIyIpY3LyMGMRQDWocCfB+596x1sI4qUIQaCenGrKIRqRmCQmhklm356obtMnIxgMCOAMDM1CbY1KCdwVlVq7HJx2fvffNAAsG92YGOMyZaGEA4fPrxaS+cLmOzLtY5UZhjcgS3tDRs2mAZYsHVTfrEQIqgVWQ5dKT22LMuUpUj/vGryn+e01AAQYyyrsPzPG86RVr4c3+41g5EPaBrZlIgCZ0++ePL544t11FT+LiwEMHMcVNhyGPZ0hpoAt127dfeOjYWjEAJAILUYQLpMQeaFgIyUlJWJBAwmOjnfW0aMlzCQwDRsmZ4cBoouL4SNNKrLbti99cD2aTEL5JrT7KkVhJl98pOfXJWEZ8KKTG1aCGCZIpTBQ5JxdePe7QaQ6Vq8Fq9aKEhbrXxZmfIR+lUAn5HIuTpM+TmiyqMEQL8+a404DJQDS0IrGLoS6wGWEYQ5KIZ1hgYgqFUmf37/IyQOZkP+tiJ1GzBNuUROeXVxsFhwuPdtb0S/I46V4CSDhiSRumoDNVZWBkCO2ARyfG6h0Su3CBDEACBsmZ5KLv2qjWcMiF0h1u+Vf+uttwJKVkYsoxucgtWq+sY3vvHpp59erZEsb8qXVpo0hssJaRbF+OZbdkcSM6P1LkIXixTpbrVaK2SxaPLKrzqco9w7+rKsagVsWN23ZA8d+u+CoeRtviYlLa8OqJmZkgOxkEFjjNFJ9ueffzQAUCV2CkAjzs4xEpSgBjYwtH7Pm1/Xop5P7QnEGQnRajakYGNjJQOMjZQMx08vNhlmQ7I16Z2+eXrSSNdAp76OcLCZwt5z900Ggemg/mEMUnA8hBBCmJmZed/73rdaI1nRT03MwrquG95yAQ6mZBrJvfnGa5Q9EfG6Kb9YEINhrTzHeazV+dGvkk7mQGUYV50YS/Iq0kM4lJdbWq49QPocR7454RJbbV1NIItEEg0mWR2NobkwxfDM8c5jz5yEeEq+OtGZyB5DAFgkWEz1QkS7p+meO262GNSkiiBxGOqdrRaMVAxKHBHN7PRCYyzCBq9tJQC6acMGkbVgcEVQpfbeu67f2BYiArUyA2is65CG5Jxzzq0ue3ilphyA977h0qSaPCIDFwe2T4nLmFlo3ZRfEtwyyfAzUCAETR20cVG09L+xGMVVzjLlF7KY926dSTUAGZg5RANJCIEJReZjqCpk9/31/QBFHQRWBgvDUUxVAwgxhV1ISPv3fus7GMreBbWUjl5VS85Ko+Y2hqjdftVsTZIJSh8n22vUVIucD0p/+513lmUNaMkE6zVchhGj/NKlEM/Bqi1APADr9eEkVtDq7Tdtg+VVXE83XSRK8yDdPs0GIlCILNbUU9EjHFrUgsGuhlKkCHKqa9S46/LBljRFWhorr2MggEk5FQOmRE0cZO3MBkUsBMOltUy8yhAJZtGzWSi998G4W9Vw0nL8Ww88X9eVMKAI5EGZQw2XS4oXSAvkcyAjgDy4eOd1G3bu3MFVV0QGWomrZ8sDI4+OyEiChAnNcOjwqYbUmzG1IsCIBBAY2DO7OfKqPf+spooIIZfHGBGrduZZzUC378xvvnZ7kfuonKvBZCn/falUL4YBlsXFxVUv6FupKT9nQK8EAWb/P3tv2iVZdWUJ7nPOve+ZmY8xEBNEBDPBGEAwi0kCIQQBmqVMZWVlZmVXd6+s/tRr9Vq9+hf0t/rWq4dVq3p1d1VmllI5CYnURJJSaUokpUaQQAwCFAQQARHh7mb23r33nP5wzSycwZ+HO+4RuIfvL3g45mbPrt137Nxz9tlbBm6kzFddfAEAvwgtZwMLQohFeJRZnEJ6wXVdK05K3a5vnNyOb62hn3zAvAnGs2FB3iNSSpqqf/zZi0iVCJzlnnHDuqm58sGbLlZCjDWKlkOKK1ebnn8Cyw3MpDjROLtPA/YKclibmihX8HMnyc+eYImIWFyvqkFi1cz999wlANSYASKww8LuRcxc13Wr1TqV4dUl4VQLLKcQIDRSUQBqBOLrLz/fUrC1nxWeKTBZyxd+mE6ewhgBz3b7o90/LLOsWzLouycWC2zRjVC+KFJKSOmL330ag6CgarDGAf0AfOoD+7ZMtIldUnLQoCu2zgwyM4URUf45JD1yrKFcPtzqlmmJ2Ll5YgVdhBRMZAxjDQwl8VVSOL+1TXfefBVZGrZdAYK9Nb2Yv/3qui6K4tVXX52cnFypa8s45VKs6iIECdPIDItmBPCFu6Ym27LBYFk2GLHTLgdk3lMoCydFv1/D2MzY1smoZzNGq/LOSP22X2yE8kXBMCV64tcvv/xGn1INMKPZYIKTYvOY3XPg8mDkEIOtZJtxEBkHab6aJTV5/djCRoAASEH5y4dAOO+ciRXkIiZTIioEMFWwgpxzavGOay7Z0gZMiTlGHVzzwstQFMWXvvSluUYbrOXhVEP54cOHF3kEZRKv5b7IhMe+vTuwUV9ZLkzT1MTYW7YENRXXulUdkxoTDT/T9R3NmZfgAb4uhcZWFl7EyM92e3/3g18NjtbWNLxpQIsBs8988FrvpI1Qm/On3KVfHGqDzicNhI6V3eE3F3SPIjAsGeAJgDezXVvGTsprvWcYwBi0K0W8qjomiv0H7r7Jay5EMTk2VSz2qrfccsvTTz+9Uhc2wqkufbfbffzxx5tGhIw8ckmJCLCYrr/8PD1zjtdrHaRp09QkLJnZKMlsmCKbme2BxYaZ0fwJyXUJETmVvUUYTIeu9vWsdUSFaZxoF49899f96IHFzzIEBbcuOXf6pkvOjXWXfElpxeq/pEZEoKw2pUKUyL1y5ETDn5jpiMSisF1bJ2zl4k8egFRVNUCcmTmtz98+eeWFO4UUQExG+TDRuGwxxi1btjz88MMrdWEnr/AUH/fCCy/ccMMNTUwAggAGJkowKOyGy/ZuhPJlg6DTU5MYNp4WjcnHZ+YgA6vAd0pQrT+cokkhAGzYzJ4CopGz4Bm/PXriGz99kSyCvCycXhIATZE9gM/ffQUVY0RGK2gURzq/88nMSXH4yJtNf8Gcx1MBGNHOrZO0cmUBQxq4qkmZDETkUD14980tB0CRFEyWI74pL7Azs0DeKp0RTzWU33///dPT040XwYOhAgJInXOX7tnB5amqQW3gbSBou922Iatp0ZDV6/UIMqDuzSPtrVcsQU9uKDuxgQaQb5UWq96cuNZfP/5jpCoShBsU9BQsCTDwHdfsnt62y0JYQdLncAPziIGqimMNnq6GwWBcUhgIND2xkuKIlpQIxELsQlIyLck+fOc1DCBGiAchRAy7rgs8idmhQ4dOXSNvSVjCW51vXDT6Yf6XT635bC/QGlB4/uD5E2rCUGhIoMiOxFlKfv0yK1YKPZ64aHzGqEwgoBZCwmDq+l0f/9yx2I6ziVkjwQNKStFWroN/pmBGzGyIICUSMyESME21WFMkkryHs2oEzAycTYQDPAiMGqyzaWO/LQJn1WzRHiepq7mf/e6NZw4lZ90KLouxjB6WKwwGYFhLSTFCq//hvsscaZ9aZMkLoDGlJEU7KBGRNLZ53h3MKUTjVEqppFWNiTL88tWeAbAIaD0Y76xgdQ5GFQqnCF5hSQB2ra3TKxY0LUGYK5WQ4njqecKdd3zg3CIQAN8CsQPaDiCHXGmel0iFEHIy8aUvfWlmZsFy/3vEErb4zMzM17/+9awe4JwLIaSUaOgeDcAz2UDmWAAIcMUle5kZ7Nh7YTgMZbk2vBYXgzAmxsahIDqpkPXOMtzoBDrXrVRPMp8Gv1/GLfT+g5mNCM6D0XBLRVG8S41lfp9g+CsYh7BRYFkMRBKpYpoofKzDX3ztMVjLYaiNMFIMZiaCKsBiYEtgMrD/wI37t487YShLVMqfTgxVNipKy2o/jhS9B0oMKfV6vSraQLl/sCN4lAQrFACD8/8TYPPKEf5EpKqDEyrLsjL4VH/41usbefcD1HWd5+RDCLfeeutqNDwzlhDKn3vuuRtvvNE5l48t3nsRSSkNqj+ajSWhWTDYTIBb9l8B0qhmYNYkFqEG53VD/HYxMGzL5mmz3Lgjs7xT3zKLPD+KHT0+mylERFmxxQxYB8KU82cahu9XBWiXrbdzvmhwZ+XJz5y0EQiwXn8dCo2tLEKsWuSjk8ISG77582feOKFIASQgmV+2ptzwJFGgZGNmNT9e4rP33iQWTYqgFvMdHitPambv5XSYCyw5yFRVdXy2B/BJ6cF5W4BNR3YjZiBgxzlTy37dt4GhCjat+/2+K8euuHDXdRdONPPuM3u7KAoAOevdtGnTxz/+8ZW6pHdc4Snj4MGDW7Zs6fV6eVlzjWXUlDjpn8gDNRkHXHLe5ukxH2NUI5hKnr1eOVHjdQxL4Zwtm5kGrJWF6t6jNPzo8RklZlhW0CASIgLWfiwfze4bAwNdvsLLO8ugw9mot/4SAHiud0oOv2czWKEsSNAYmPl4bH3lBz/LLKFRF111YDDEzAaOCYQAmDKL6sfuPjDuAhuIJKoBECaYGhK5JRc65gs25FfMn/irb55QY6gNDpxGeLfc2ACB7ty8YqHczMh5izGfMx6+97bSYvNZL4u4VVWVUnLOrXb7amnZ8UsvvdRut3Mmnl3pnHODurmRWXKEYfdWAPWEq87f5ZiQhRLJjJAM0BU0jlqfYI1Tk535H/072/Hzd8bREz0WNxQWJpAQyanMFq0J5LdBRCAl2OR4Z/D7d3+DBkAGf8RmNNfbyMoXQen9bOp7E2VKKVgq/vo7P6qTy+E7r/PIMwGAwZwgn78BMOlUCwfvujHWs8JK7IxERJDifJXsU8d8FtboApj5lSPHlQAiHuQ4jGHjjSlrgioGJcm0faqzMqsztOAg58ZK2dLGnQfOR9VdZPxdFUBZliISYzx8+PAqNTwzlhbK5+bmvvCFL+RLHH1CA7VGYtXBGdfy8cbYLN5w+W5HcfRh5DI6r4sa7qpirO07ZTGfikiNhbkjx+cSMUGzgJQNTV9W/UJXGcPsjPMMd55lnZ6cWOzPTi5XUnQ3QvliMKWkwbNPJLDgFM+9OvPNJ57OSRvmxdZhmYUYAIkaSBFjAvDZj9y2uTSEKnMH1WAs2WZhqdcz0sLML51S9q21146eGP7v/EBGnoajgXTaybq+6Y6ti+2TpVxPrih0jx/52F3XtxkoCm68v7IOc+5zPvrooydONJHi3zuWFsqffPLJO++803uf/RVzpSWTJdOg26CAciZ4EtTowL69HlFBpsjlFTNz2GhDLYIt09OOT6ajDWmNqqaUjh6fnf9p5r7yOqiVY950BjNDDdCpyQmowd7KnSeyUSVqeIslWNTUXY+mHCuLSmOHqGJLyh0mlkTc+ctv/LBfBQOIaMTNJyigBGhKVWIWLxRYfAS2t/We2w44q2ApmEUFEfHbPqZTw6g6Pz+gA3jtjeOD6xjNop588pNbwgyA7tyy6T0tytsvySJksu0/eff1nGDcooXjmKrmKvnExERd1zfeeONvfvObFbyYd2Jpofyzn/3s9u3b88/5QjGqUQ4OOJqVG8xgAItcdO502zsRAef+iagqbKPAsggmJiZyAMv/1AXK3nm7q+rsXDcNGCw2+v3pu9xVw/ya6SAzAjqdzvwHvOuf5axcTVNKddiQdVsEJjwh3FU1QwH06zln/hcvHXnxxRfrOmK+KejIU4xl0M6s54i5m+BEH7rvg+MtD4DZgQVAjHF5NeJRKBeRLBFKRMdmZjIdSe2kuStTDuOGzGDJ943ppqnxZS/IOy6GiCgCB/ZftX3SESMADcZv+YJzyltV1eTk5GpMeL7lFZf5Z8wAQgijdoQbNB8cXAmAaVBsKSxet/9yF4/XzAA68XggX7kVVgVbuxjwpoe71ojBoqB924togBg0Ag4MB8BqQwAARUIP0EgkZr8+MmMkbBGalIqo8IikIfKa14v3pCEpk8GVGvtF4WbVX7TFDXbYvBBDI3IFJHpysQuAyR85doLX/jqsNrzZjEnb1LPOmBSuNJsD8L9+9TfiElIVmc2AepbZDzxTCYNlLacJmBSA29ec073xwDU+mqBHKfYETi0uYhrxLhjl4zZvwsvMfnN4rhDAHDE7RAMiGGogeBRwEDgCnAA8tnO6+hONAAAgAElEQVSq8E5DcmDy6AkkoFBGufQspySaiXETun/84ZuMAqBFQk2LeEfk8FiW5WmYN15OKM8ETwCnWMW/Zt+FRmQpQDiatMVso+05BDPm9x4sRUvKoHM2TTo6eXgcanPzWyrmQ3noEzO903rRpxFDXormM76qesdTY4u0swgAOwCacGy2tz4OKGcET/3yyedfr1SDz7q3brx5WEHN/9HBuwPNOfPcKlqBq7JVyIoFsrm5ufxcA62hzDJfOOsf77Qlk1Pn1Wp06cyuKsXxcmzfBTsv3HsOwcMY6DdTLDMfJHu/rbik7Tux5FCeI0673QZwaurpdvOVFxMRw9S4gi8sbAxSjzCascq5OYDcb9hxzpbhVAyPSlhvpV2dnHI8dOTY6bzm0wkjJqIsrmRGqhDCjq0NNVAe8HYo38A4fPT4RihfNup+98//4YfRj1MCoQIAa77ri33bWnfffGkVQ11FUY5grJwx5Im5uSqkU1UmArZumsy6a8kIgAzLj0t93chMvd6n7r+97WoojAFp6kVlAmL+eQX1AxqwnNfIk0Fmlsvli8Rlw54tftv0eOFdVJhvWd11p6Rqd1ZgWFqRrPM+sA0i3bVlIvMGMI90qEYAGxQ0j1FLOPTaak0Dn3EMrNwFZkaZShGr3Ts2N/8VI49Qq2McOjpzeu6ldYmJsclHv/eLF44lILE4xSKsKAbqMPNvHri7HEtllJqlFeIKsvp7VepW9akzs7ZMtMnUMiljmCotY0SRxZ+3ubhz//kWa7P8+kVD2zMTEAHMzc2dHjWk5WxxM8v8pHyti9wnRAXshisvplSrEZNj2PpWeloS5g+zAXDMZIlUd2yZGtaAGRhQyg0M46zKTzRiTssrb6zbUA5ANTLMYnCuMAJS3LZpQZLZkDGHWgFAGC8fnd2YSls2ur26x8UXvvJ9E4M5YoBbwMIFUoO48tIdkx+69iL2LhnaYrpy66/sZmb7b+XlNsX1zRNt0zrzWQFAlQzLcBfiqJ+877rCQDJGEjXCjEFNhWLn3AsvvBBOV8t9OaF8FHdyRB5Ja707iFOo775+H0KVTCnV7Fspbhx4BzDSofCb5iFn1VQUxdbpiYE2GdjMMEjaB3UWIwCZ1RqN6HfrNyvXwVuF6kAyedPU2GSxYCowPDrHaIO1OnTkxEbqsGwYeYN+83s/e3GmSgoaBPGG+zcJFYb4J/feIUV0dV1ZKGjlZK1I3jh23HByEKgZWyc7ZAlgIzGzgeL/0vfDljYeuP1q0QAwkBY1Lc59znPOOefYsdNU/FxOKB+1lXNuvkhWbszOX3X+1qmJNhGL9fuQDRnzt2E0zGZmTLRpetK5k55MI4phLqekt6QhltReWb+1cgzaCVFEUjQiOn/37gYLjpPKY8ODzKGjxzZ6M8uGa7VTb+7N/tyXHv95bYC5ZO8yeDyCMkONIZft2XrXdXvFpR58sXLrb8RH3zg2nw1gsIbEfMumCQaUBq3OIStmyQHo3luu2NoqWDBbJ5iHKQjAgl9RzNztdouiuOCCC5b6WsvD8muIOfoMBjcaHgYD8Za2337OVu99wegHXdUB1rWFEQF8OFanIjI1NQXTec0Zhel8EmtW188/R9M3Zxo9D9c0RmzXPFQM7Nq5Hc3232ajtNEsHjvRjRtKnMvFTHduamzcJP3NP3yv1gqGaDqiTr0TEQROnKRP+O8O3kNjbDyGuGLuQkkxMzd7MhQvdryfGDFY5umGpqUzWB667458IPGlQBkpAmoLx08iKoritFVXsOxQTkTOuSzGguaOMFGq+wocvGp7P1o3SceThRX7aNc6GAJRMSiSWmVa9CCXTDmQG2jv5wIDuZxnGpKHp1xwkSCQ59+IBa1buShKM5VyhY5oKDh03eQ1myrjcsHHm1YkMAgUUZ8/wce6OuY2yK/LhPjCIabQOhLLL37zZ2CQpUTAW8fQRsochdURThmtMLdnW/vhA/vKeLz2Y2JwMEt11EDO91VJmJc+9d1G/PWJgixxDucEZ2IL8yPPHZPKl1SrERxr1MrUCy0YYUuyOiFBHCwZrBhzWj9w/XmXbS3gGPAlAAF8QSOd3eGMPoYckKw2yMxjY2NLfYPLxvJHhEYFlhBCYy1Si6KA4pprrnEaxFEd00btcoST2qGDNTERGR9fcErtrSK3BLOZmZl1bHjmpBiNUAGA9vfu3dv4F5w0K3IQ2L38u0NEtNGbWTbY4ol+HB8rS2d/+ei3ZhIKIUsnixX5YSe3ZR7NJUAKAJ85+OE2ajKNIAWVZcuJpFgX4panY66qdR0Hm+EUOIVjrTYwVNwyXjTy9GMsfUGa+nXlfBljzan67MGPLPT43CkclRlG322rZ/y2EJaflWPe22jIyvPKCWPv7l07pgsAoOXI66xvmOWwbGbmGFMTDQPHmU5OuYZuwNE3j6f123wwM6iZJTNTQwfxogv3Nt/DWRsyB/NnfnuoeX9uoBmlGKSou7OUwuEu/cVXn4Cqk7ezs0+GSCPWCCCyr+v6gi3yiXtuJg0gVydSOIJoTI5ANrB2XxJMqdtfwkDcxORYtuUcCd83a1pUCQSF1p3OeFRzwIErLrr03AWT6xF5PFvxZA4iM6+e8dtCWH6t/NixY/ltjJwBFoDGEAD1gqv2bmMYiVsGGWi9QvImM8utJFVVjWPtBQsIwCAZ4axyRHJ8ZpZl3fYeUkoGJYMwGcmuad8u0DQtTGhJVlIEgOd+9xoz68YpcLkwgyN1IrWCO1N//Y3vHU8FQj1qlY3C4iAIEGDJgKAoCiex+tyDd427SAQiClHNzBNYk6ouY98a09zc3GhkblhlWRATYx1oGs4MZxp002ZotcdUI8GiakxB0tznHrq3OAUFxGzFU9e1c+5v//ZvZ2cXtiFdHSw/lNd1/ZOf/CR/BTU/0vkSADNuuWIPaQB4Y0JoBCKC0ajGwgxL2mo1hvK3fnPOznTB6zaUGzMzOwYRgeXKPdt4sQ1ESAAnJADP/e71lNJGTr5s9KMVVMO52sRC9UZX//IbP4RrvU2Edt5fMIuoDg9OrNsn+JMfvo1S10kenRcRUUtCtAxjSCLqzvWJTpUF1y4LIiI9WYHkoavgu8LMNNZF2apjKjldsXvLDZdtbZDNAuC9r+vazGKMRVGY2Y033virX/3qVN/SCmH5ofzw4cMXXXTRiFfQ8BK5xsnAbddciBQBQNdtbXepGN4GjBGJhaxVnmpoNmCuX63jWDVMFMxiMvB1l+1OC6lE5scBSFWulVcJvztyPKW0cQpcNojZzPpVKJxvIcK1/vNXvn102DVcIJo7AUpBihHGSPb5j966c8JLqogtKYyYDUPJ4qVej5vtdYkINiqBN8EJvJOhAIvk/zY8PsUagLI476We+4MH7yyxCE8m69nmfDyl9Oqrr05OTn7iE59Y2ht7z1h+KL/uuusmJiYAMHNT280GR92UbMfmznnnbgeaxCHPNoxEXAc/A2Ta8otMx5kZDVgECDHp+q2VIxNeiVIKIrL/0gs4684s9GAgexAw+LcvvTZbKzPP4xpsYGkoHGaCOF92JNZVP0StVP7Toz9a+JbnmExTEIviXJJShM7x9QMfurmkylJUIBkZE6C8rG/Yfr//lo+/Mc4SoSgGd5MxLVYNRtuzFL4X1Iwu2DF99/UXkcXYeOodzGk7B4CZJyYm5ubmTu2trCRWQJsiF/sX/N8EAzQlEYLV+6+5OqVUuI0saYBs3DHUitI8e9WwxedV/U528NczIyg7BzGYWXyxZ8cWnvfG3wnVgaUugGeefZ7YMfMGg2XZkFTV0iEi673ZandU1VS//O0f13X9rmPeqkpC3nsgxRjDYHqn/uTBmyfHCpCCmYQBxBiWIY1jRiG89XWb976hGPpqjhTrGtqeMdSaIK5U1Yfvv8dbBJp4NiMVk0xZmZ2ddc7t3LlzKe9pZfBeQ/miI0KIEIBFawA09tFLtpSe5zZGNt4K4mSoYC2WwNQmLDxZQIQ8wY+BLRaR0CmcNNcoTEMBzNUdl8L+i7eVLoj2Ei2oP+4JMbaYtUB47OVAIYiQ27A6WS4CygmqkGLtpuqojjQaH53p/fuvPOWcwY5VQCIiJECByDzMQ6h0rmhl+SAZ36bxDz77cc+hHetQcWIHCykuWZslWq0mBjNES3nbp4Y4ZqoiQmyqGmPNTpI1HWI9h0QJle6ats/ecklNHFEWYcG5jbdxY8qyPDW92JXHewoB84mlC0Jy+WnwQpdedN50x9nCA69nIUbTnjQ0TowL9xLeudyZqLeK13dGwcYiBERudQ5cumdgL9G46bJPvKo888yzRVH0+33Iuv2qO1N4/J/+6yvHFBgjzfJuDsaGBUOzKj1w6yV7t4wrS7stYKsgnpc8DDm6R05R7fKUYtQ81OqFirKtn/rgB8xLkesxrukrJ09KZjIiEZ0GafJ3xXvd4nk+qKHzWRMoRSibwZCmxnDV3nOI2u/xddcT5o8IqSrAMTTrBhvAOjzZMAjrl6dP5Oq6Jqkr4ruuugjmQK6RVa6kCeCX35x7/ciRqOacaxiw3sDyMNON//sXH6/JF5QcD7xkmwoRTibR+5NP3iNOu90TKSUpO1i6/O0olOMk/bExUtNJzP/dQg9XacO47Y5//I5rjQAlTbU1nnpzgcV7P//aTj9WoMBy/PjxhgcEQLyHCVIm3nU/eOPly5CzWa+wt84sqBExV81ik4O/HFhPlK2CG9hVax3GUUNZUGe8c/E5rYF9Y8PAtzHIFPj5869CXBWS9z6uY4rPGQJ5/9hPn/vNkRqxhikxmvMJNcDSPdddetX5O4xgKgVJWHocGPHZh/9czp83hPIYSK3+9H23bh5LKSgAzxQWjpOjK+n3+0RUlo004tXEew3lVVV1Op2Gw45D/tpkN2w133T5+QU2NFgGIJKs2TZv5Fd6/cZs5a0bcaLTXsQOYG2Di6Jgq2+68pKhwipLA2uBBp32J556KUX13odQree28BlCv66OJ/ovj/6jeQ8YCJCmaOIJQMtZ/IODd7TLVrvsUL8Lv2SJkkwTGNwsp/yxnnqy3CmLibZ9/r67gKqVCLKIfdwo9BVFsYjc9yrjvYby6enp5vnU3J8yyuUmBrW2jrlLz516j6+7bnCSiTgMx0aY6S48mjzcVjqUNJqanqD1S+6MFkV8NTNz3w37wKNS+cJtLgBAAr735PNGYHbQ2MSw2sCyUJZFCPXXv/PjXx2eM5ZBaG2wpICG4KD8gSt23n7txf2ZY2SwZfH9cynj1B8/fyQVi4V16x/79D23bCJLcOTJhqYBDU8+MnTMNplnCqteQyQNZggMIGgyg/MId91w6Wq/7lrB6MRHw2FkU5qZWYSXqoohr9ymJ6fWM22aU0y2bXrzgb2bEjlQNKBBZFUBmL18+I0XX5vx3qeUnPCSz+EbWAwp6YSX2eT+zy88VgEE1MGwMDOtqnuuQFI4hP/mY7dNl4DvSDYLXQpyEWNUlV48pJuNQvmpfAFMtNMfPnAroJaKaJGg4KamJzOffuWsd7+SFXmWpi86A0gigNgXpgSA+NrLm8XtziLM32QDkTLTbm9xwaC8K4mo02mt6hWeYQgAXL3vik0dDoBC1ZpOvMkAkp/94hdUjKWUAEWKKZ0+2eizBeZCd9aVk9/96bNPP3ekqlS8NNT5XFFqMngG4r7trfvuujlIYXHJozRE5L1nOtXoaUOc4vPf/+E7p2BgIiN1DqYVLdIGSCkdPnz4jBfxViCU09BUaESoHC2cmUE8EXUAuAkQHADxBy7YvnkichLvfb/2kMK5bqqN3NlHUnRKxhGG5ECRjNrUfe64Q6oBpEGDT/OIs5klApAYqilGMNX9S3d2gkpKxuxGbCIiAikW1nF+vyGmmuUtDDMzMqNSS61nPnznpdFiy8BaiMaa8wNsXvtr6OABwPyjv3i5o/0Czlj6qV12zr59tcow1/Ilt+verJ/693/3nbJkQc+4AJBSUoMBdZjXbk4GIShgnpL+24/duk2OpnKbEAkZUk1sShyUmJ0t/NVrZps6LdIgpH0CpWrYCV8Awt25446lr0JcuNQvWYOxpKrL48a+CDNCZlywponS/9l91ySLAItDAYDcQEAKAJBD3CjNV9WU0le/+tWZmTPvyLgyWXmv1zOzoigwnERf9ERz27VXiXdVqFseljQYOcfxNJpuvF+gRkRCjNwNZ4pRj755HOIAQEEDX09guJ4GA3jArpLCez890RqJbeYTn807V64JFEWRBftHX0Uiwsy1yTnj/soLdosUqoACzDRMy+frZeefHfTVGf3Ny6+qxiyp74X6zW3kDSwdc/25lrTnYiigv3rqN4///DlER4QQgogwgQAms6EVA+cKYmZdMU+03Wce/qjNvl5FuKLlfBFjdELecYy19008EC8DJkU+yTZfZ68eiKLLQCtmcPxNzvs4Y2bUme53e0QEpoN3Xl8URUPzL/c28whIt9vNmcfFF1/87LPPLm35VgErE8pjjIcPH44xppSyOAMRxRgbQsndN1zRC0FNSlSGFK1gOStltszIRpaDxsxJ9eibb5gxACYjGNlQlCwbFsNA4BzOWArGeVunzFJKIS9+DuIEYVo7TvPG+cMXkeE5L6YUana3X3Xhjg4p2GBggNzo9p2fKwy9KarvPfXi0Tk4mGYHWk6ysBflBpaHVtuHKvFYSzSa8X/88rdq9rDghAA1jao6Si+ImRgWFQPfbSoYB++66vJd40aoY+rHVPiWxkSmRFQvTAVh5smWA/GwKDl0Ll8AM90qn9gGzSiCwogsqhsXDXW/p65st4StoPSHD9zs5hXG54evkeZMbqHHGDudDoBvfOMbRPTggw8udyFXDCsTymdnZzdv3uycE5G8FiEE51xDVn7V7m0tD1cWSD3HZFYms8KddaMcIy18ZihgJBDpVeGNmb4BRImGzuKqceANawTDyKqYoOdvn57/bHnb5dzhDL2tJSNPyjnnRp5Bw5HoePCO6yXNRYUIZaKh4GRrAfMqLWYG0q8/8aSUm80MwrCkGmX96rmfKYhppRajetLI8rMXjn75e78BeWJGjt3QYRP6ZEg0AMQwI+i0x7964PZCBmNxJKyxJkuOuaE0zczbpzt5ME4AkGs+es72aiPPUDKYmYJNCYBpNLN2y9UxBSm17v2rg3dtGzJQ3lleH0VwIsp7Nd9o+/bte+6555a7iiuJlQmd5513XlmWIYTRGXlRB42tY8X+y3YhqTGJKZnTvNRnGQSSI9Fo2pOIAHr+0Bu1JSDmlotBwVlCC0Y5lOUbAwLdt+ccAMycQ2F+5rznztT7WipGakd5/2S9XxHZNeX3X7oXgBscQzTGt2ySkxQgIiLq9umnTz+fIqeUwMYgMGl99hXuVhlWVaFVlEnqWCux4/H/+OWvH6sQE4WQkKOh6sl8wliEMSiNCEwlpY/cvv/qC3cVWrXLoterRLxjyZqxC72uqp67eWJwIB1QvpqC2LFunbVwGdknMLdZUttzZUIpFZS4aG0Z49/78A15+vTt06T5/Zrl9BTD6p+Z/fSnP3XO3X///e9lJVcKK5YFm5n3PhdqR823JmUZ03tvvqzqztRSQoNThfPvB07PaYYNQ1iGqsKYIC8cOgYSgGCDGDbUdtUsQUIYjcrZ5efvHAXBHBNzQF9b6zk6oOQMqKqquq4fvOli7xjkNOYiOryb3xp9u8nkD37zWjdU6Pe4aKcUoVGds6V7SG6gGYUTIzgRYypbPtbhpaOzX/zGjyAE5we9HOaB6jABeVvjJF9RGB74/EN3lDaXQt+UXNFSVeYmRlxKadeWyTSoeEQFqFGM5c0TXc1VGEv5qKc0EBZNEDUUbNY78Yl7bpl2NXyBeWlBfob5Z0QMBQTznXXeeee9+uqrK7Ke7x0rFspFJPdz83vO+WDDtysUt+zbNTXe7lLBpl7VaC0VBFYKyZSER4k5DYX8n335tUG90LIvzigY6UBRRBMGWUm6YNfWzlgLpCGEeW1nZl4ztfI8ZpG7BVnC35DGJzqfuG1fMIBLiyHnYlhY5jCl9LfffbJgayPkvrGlWEPKs5AZtcqIMEnpRK/fbnfC3ByhLqTzn7/2g8NHZ4kQAWIHIMUYQoBZZpUSMJxMJpBUob798m23XXspQt+XhYGjGhHF2DQNvnPrNGHgUT6kyi344NffOBGSERGDkhlYiAiwflSkuuiMJeLtbf29j9wM5pjeHn9GucL80n+O5i+++KL3/sCBA8tav5XHioVyGio9ElFd17nA0pQVMu/e1Nq9c0eF0guxWR3TKaqdrSfkbZG7MbmqwMxm9OKh18Joiw4FWub/Y/B/DNA43fFbt27N+g+j3GFRlf33FUaN33zlZjY2NrZnz56929pGMHBRegw0I9+9ahRjrOv6Oz9/TlPdJvSq6Dx7kSpGXjvrsFYQTcukMt7uz/UlaTFWuGSv9vSRLz9aGwBk3RtxbmSTbUlhYM4Bkg1wvmhBP//Jh8bH2ilpSClngQ3lWRHZPD1ug32uCYvolR+bmY0xMhHxyQo4ESX4yTbPdet+tM999M4pj2hEMkikbChrPk9OY1D9y0felNL09HSz/NRpxkqGzsOHD89PxkMIDaFZLcLwwVsum0onZnmC4pttV/TjWXcQFmKNiUFCPApkRPbEy2+MIZKV8D0ABk9WgiPIOwAEuI5kwquMg3DPpeNztflysqhOEGvPleyE1w65U61K/SidsooooNLi2Et/eveFcBNFvluJHeBYQCXlcJ5qIiINCagVzuJf/fPLiKoYm+HUdloHCsQTsGody42dITB5ZfKhJpHki1hpBW2R/l/fOfLK4WMuBSc1lAFOAHMCgYRBABgk+fgpgBpftXPsgVsub0vNcS6C+tSSVBGJxtoLHFsKgY29CLGNT/qtk2NOu5UIUJapTojQeJJ6a8mAOChGhqeP1pOsFYxUIErGIdXCRceqfrCasGMcn/vQddAKLIa31OtyrXJ+E8s5l+P7K6+8AuCCCy44c5/A27GSoXx2dvZrX/taXtCqqpo7n8wMcjdctoeIJPZSe0rr2jXqAp9VSLF+9qWjmpKmQbO+WUXuwP59LUY/RLiCiEQjGVKzWdb7CUVRwkvsVaXjuZBMeduUu+HqfQs9XgBIMeyEakEw33rs2987bRe8gQXQ/z+++FgUsSDG0QzQqsGfQAmI1R987N62QyRfOOmIdlXYkOtsquaKljGFlFJKu7ZOA2+TRWGwOxlzjQY5vxlYXnvtSNAEIJnm2qMQG5JzbiZgvOA/+fi9JZmqSwq3sOLmaFYjnxtardbs7OyKrdlKYCVD+bPPPnvjjTfmUL6o2GNmCF913tTu7ZuchZ6bNI20nhX+lgYm/fHTh9gZUIIiGw1L4++Oqy/cPdWCCffg2eAtAdooBPT+Ql1pFauCZbzNUQoN9MAdV483JAMWAwBSBXlhID51uPvUC6+ctgvewLvCkz36o2f+8cnf5tOjJghrg9KKAhDeOU6fO3iPkqv7faq77Dt5vCuaRlNmNrARE7tLz9uR/1AwEAXRISFAVQElIoIxgYgMfOi1owZWDAI9mYojJK0VUrbPaePjt1/OUHPChAYNmYxcWnnyySdDCLt3716RFVsprGQoP3jwYKYk5n82M+EUMNUC8YP7LzKzmJScR2O746yCgH7061cMsDzeaYt8y42L7tuzrV36ShlAQWYp0drxUGV2cBDlqjdjTBNePn7PAWlyZE+5DaomQATwpW//JPrx03S5G1gAKZkfn/wPX/xuD6Ag4ipYu+EbmUxBAgufvOuaHdPt9thESsnM1CIAZgFJTJZbSkx2xfk7kUJmIoIxYHnlHDDrg+byiEUze/14b3auS0Nvz8yQYoOZVsqFxT8+eHuHKjgfAjypLTxSlwkd+Qtm27Ztr7/++gov3HvGCrcZ67r+3e9+lxPzZmVRBshg4PsOXKzEziq4QhaxXD2LEGN86vlXa7gRL4vRTKFN9956jdWzJI6MBJTWlL8HM3vvo2lKViDecf2+HWOu6RgCOEIKysJQ9II8/sNfhjVTT1q3UHVi+szLx//m8X8BEwx1gCxMOvKo+2BAzinjH3701hSqoj0uoc/MUQfValUlgEwtxivP32VsANGICGODXZLT6qEoT0wpPfPy6woW9oNvAtCQWchGdOV5E5+48xpAa0PLARoaLCZEpK5rZv7FL37BzPv371/JVVsJrHAon5mZ2bFjx6j/2/BIAoxYwZecO33OlimPOqWEDdLYEEbu6MzsM4dnRAwgYzAMTcZUctu1+zroChsABRE7a7B7fp8hpaBV4ML71kQZZj/3kZs0xqZvdhJRQBwRIO6xHz/92vGexTUzErVewd7FuRqF/cUjP6wApFIWJiQDGPBpycHCp+7et3vzWLcOhScnxclZeYbAEMNEpzh/+wQxgRhZBQDITq55XA5A1GHv0rlfvfT6yRq3DVqXyQjsJM798cE7nHVBPguSYjHjiNz8m5ycfO21197LEq0SVjiUX3TRRe12OxNXFmHCqSZ2DHXe33ndPjLjVKW1U9tdbbCUCem7P3mWqIZJALip2gDAbWnTLVdfKFabmZo38bx25LTEsyRTQj/xdRfuuHL3mEir4asrwaGeBYOAWvFXj/0zcdFudP3cwGmAmflWWfVmX5vp/z//8N0kEKjawnQG8g5IgEVrW/zTT93LFk9Sxoc1DdPoSC+7+MLOwEEqS/SrKmgkYmGW+Ss5MU/Ar184hGFtBPOIv0a49bJz77j2QpD0AjygIcGPLZpIPvLII/1+/+qrr36vy7QKWHke93xec9PjLNQAWYyQOw/si4o2aWz4yM8yRNWo8WdP/haoLA8IWVMsV4At3XPXLYJERMmycveaaSOHENq+6KcQTD730EfFZmCoFp7STIAUZECo6sOvHn3yt0dCCNTg+bmB04IY6wqhU05G7v7nr/zotZk+VMPCYSbBuayKUnRg1QcP7Ln4/HP7CenUWt0AACAASURBVHWKg/J2UiGzFAonl192yYDFPIzlGWopGkD5PDq4jgQ8++IhAHl+OFfKSRhgVfzb3z+IGAzeewcN7MuaQI3TZ0R0ySWXPP300yuyUCuOVRnJOSmZvTBqKTtxJlHBdf+Gi8/ZvmlsNlA7LVmKfr2C0U9u7ImnfnWiW/YdtUwhTLTgVjNSgt61b/eWTdOcJPqui2ZrxyhORE5QbCW6Ylu484odFcYjo+QFC0SFaZ/HHKIv3X/42k8COo6aHQI2cDpAZduppv5s20+fCPq//c0PuuxKnVMEVZhBrQIqKDQhQSOgGsRiTBHUahn+9P4bOxRTCqVLc2h1JIUQrBibNX9w3xiYfHaZFABOGCAwlS1EUGngtkCgXT9WH5957rVuNPGoQqoTF56Q+tET7r9u73V7pgrnCewAsAcN1Mkxb7BxPnGDmR955BEieuihh077op4SViUrHxEwG8rlHoC0AHBRWrLr9+1ttVpYrK529sBSYHbM/Pi/PNMGQIwYGj6vUPcAT4KHb7qiFuVUgiqmNbOeLB4RUec+fe+Hgmo50CRt2J9cAgp5dUZ/+KOfUtYz2JjqPNOwGDyLc26u11PQD370k+cPddUKBpgQA5gEYFVjBgMMsIhqcuJABI233njJrk2d1thkr9dLdS9IUcCMaPuW6Qt371jwhSkrXEAAVXjgl8+/QkTOQuAWXGlh1ntPRaeg9PsPfbDhLcwXpMNwijiEcO21175vU3KsUlaeI3iv12tIzMnUKBdzWSg9eOuVKfb76awb3F8IRCSwkOjvv/skWUwKOLGFP69WUfaiCvBH993E1GPrwKcY1kxoq6qqXXa2TBb33XSlOkYCWwQvXL0kkFUK+pt/+vHRuT4hGdEiQ9wbOC0YqAARs/jXj83++d//Qy1eQwDgXTZOydZBIOig9D1qklkqgU/de3NVVb493mGr1TNZHXHg8gsabaBd9kmAhcTsgW///AVm5lShnOr36zFBL2hK6SO37b/q3ImG64/D/icz9/t951xRFES0bdu2921KjlUK5dkSu91ux6amcKgBIgspEuHGy3ZNtz1tOKMPQRBnoeLyqRdePXqiz6YG1xioXOHhgE5bH75jfwqxSqlYTGr4fQRS0/rBO26YboMA01posfKQhpmIv//Wv5Rjm1lTpq9t4MzCCcUYDSQiRtya3PzN7//0Ry/MsW+pBpASxExASCkCYCSAiYekW+bUqx6667qpMqnveNTQlNgJ7OFbLsPCoyrD479CQ+a2/PMzh4hIjVJKnYLqGLgc29yhf/3gBygsWMhNKeXp/Dwf02q1AGQa4qJjj2cWq5UF54VoGsQffHQKNZgVHG+79hK/EcqHSCQuVlROhDo+8p1fkiBgOATxblCDoEJApfUf3/eByU4opG22ZsiIY2Xbo/f7995uFDgA3kGb2rwGQMp/euKp12fDTK9eQ9Z36xtmpjSYiowx1gnmJ/7vv/pKBFcxpVQDCFEBOMdIgMGMVMGEFCOI220/7vQz99w4260crCXai3TulrHr907DNTmSEwAwNBHw0pHjLx6ZNbOaSqf9llhkD42/f99Nu6c4i9m+K0QkhJAVyXPRPEtovf+l/1crlMcYF1HyHdh6sfeD0duDH7gudY+t0vWsORC7ECuLAWRf+d6vInio27/A4wlmCoa5zrmbxu+79TLqdcPa0emOde/26y7ZPk4KcoIEhkkTrRzowf/dY983cEzG4jVUZ6Gy5vsN2XZGVaHmcmT3xY+feu4ff/gcly1xDsaFk5SZg2BkDUUGoCKSTABG6H7mQzdOSYQrYTHG+MHrL2aOsTFeCWBggxfgB0+9WIekMLjCI6YQ1Pjcafd7H74Wqd+gCZN1GQcjRcyjFOF9npJj9UL53Nzc9PR0w1eZkfODZnEydkZu/wVbd2zurNL1rDlkHU5fH4/GL7x+7IdPv7EIT1MjYQyibATG5z98w7aWUbFm1rMs3Ofu/UCs5gQODMm2M41qBf/080O/fun1UM11Oh2Io7Sh+nDmkRVQUkpeyImVhev2Ki7H/uKRx+dy7I5ZTCipZU8IpIGMeQRMGb2g8H57Bw/dcmlfXZ1422Tx8duvAvmGMztBgaBAkJaoPfbjp71jIiq9xBDUtz3Znzz4gTGJcMWJasHTas4GmHlubg6LzTm+r7BaoXzHjh1FUTTM7icAWjMzTENCBFou3rD/ilW6njWHFGtpTYxzDSmTyd9/65+htS08i0+UTFEjFYY+4cJt4/feem21dnj655133v4Lz3Eth4S+RjL0QQ0FJag9+k9PmO+UYiGEEKMXXluuSesVQ09601iHqt9ut83oN7878rNfvdwLFURMQSAQEwHEzlFSgMhiNIB9JrbEP/3EvTU59a0950xesnOqr7xIUztFAyIh1t2f/volB1NFqvvifM/c+bu3P3z75dBQR26XC2blo7GYsbExAFVVnYq95fsBq3ggzYsySszfbnsKVSOAgbIgdUA32Odu3ZO4047dUKa+oqWkJo7KYCdW7zrfnxAhit0etczUXPGtH/7yxdmCYg3AgJSPpZZgMQs0qxoEAq8WWhpN/b/+zL2XFceStVpU+ZQCjXVFg851nFg4YwmsIdXg7MkSTYowM07VMZ78d/deVEcYSiVtQUDaJgV5QGGpzsXx1DOgDyD1fvK6/uwXT8bEXR1jgUOlzNk5aANnEAxiZgXn+XhkxwlNx2ns//vqtzrSjgwSjSAzBmYBdkDBAHnyrQIoAZDvu/bOSf6DW/d2dPYzH9pvDJKmXhGsqqTt6uMd4NGfvn5c20NJ29iVsfHY/V8+datoL0k7shS6SA9pVBzPQrsruUCrhtWtLaaURCR/s42c4DHPZgkACFkup134PXv2bB9nlO1UoVMIHEy1SqFobHesS8So+UxDZKqqRn/zyNfNl4D2ul3Oq0cC4lwmZynMoAYQgYw4jZf4/Kc/UhZ1t+JEXEp/DFyKOz43Q8XkmXpfZuaQTb/UiyQulPm8cbvyin3eQTXPYhOMAR7Z5QqQYgS7GJIHwOUjX3+8W2e3RtMY3lbZ3MD7Dc7br596+alX3uC6B3DLGATYggVoUgDp9z52/44Jf89tV5OGFKxBXi0mcQCKCRC+/v1/aVkfgBBqRZG6t117yZX7zkciSyhlxLl4d+RdpKrdbhdAp7M2qpSrm5Vnc7iyLPOdlmPTwDduMB8AANm+GkCnLD58w0VzRgjMKQSNzAw2sTVwwFlZEBfMAjM2JdNE8o3v/uhQF0h1p12YRhksHgNv8UQldkACRQ+9786rr7t0q/NtlSLVc9SrhctiotOtzliioUYFm4iEFE3riop+tIM3XjTVKbMZV2Y9GSzLIpmZgQUKNSPvHVFMr5xI//j9fzHXMXApA9biGvLZOAuRtO7N0f/72BPsPSzBQAhYuP1YMqBh5yT+5z/7I5cSSNueGkKwSiHQCP7dkdkfP33IpT6RhBB80Zqi/r/7/EE2wBdOQDqQyH335xmaS+SiSlg7Plyrm5WbWTaHq6qB+nxuDeefR+Ogg1JMjKb68O1XVyl2inHEKpgywxx0Ec2ydQhyUkclIoYSUVQ+0rcv/dcnIQUImhIANYSYfbDUVPOIjCLPHzM0jAP//afvGS9rZTYUnc54XVmotXMGu/EkrDF/7o6RuPAsn77rGtNEMMnmigNL9KwgwwBgyRWS7yoWeeQ7P3mjIvjSzJhMmEjT/K21gfcbNKb29PQ/fPepw8fCwHAC2jTMCwWYFPsvmBZWqyoF4sKMLCFAowLfeOLpvgJSqCr7Vr974vceuOPCTaIh5NcjxAZLllxaIaJXXnklpZQr5msCq7v1R9zMsizz3cvM2RUew1Ceqy6ZyMnMF+2c3LNjsyM453K2rik1tPvWLZLmwQRmhqWkSNL+2699++hsnKvUeQ8oESBMRFDLGoKmWXPLQb2gpIT9uzb90SduF61ZOnOhcq2OoxbHN8/U28oHtVwrd64QS1dduuf8beOOJRtwZkHpHJPJQGT9EAcjgUCvX9WEv/vmD1wxXgeDJY01hiyINWRLfbahQKtn3aou/uKbTwAUGUi+4WyoCnDhGRwVqtQaTwbnF8xBBDHVNQN//72fU4qhGI+qRnzRjumP3XMLhb4rJAGmkWiR41suHkxNTb3fLN+asbqhPAfrnJKP7KvzLGgO8YNQlR8MgoHJPnLDlb3qWD+RZ8cGSsTNc47rEUJMRKZ5gEJ9IUb+8NHjX/j6d6gsDAyopjRYGFWATSNDHQGGgXC3ASl9/IMHbtq3S+u+CaqqQrCyOGOjWMysLI7BzL0quDD74B3XwzSLaWLgjZsv3jJloRCXJ/g5mW+3v/r9Zw4f70dT1eiFzUwNIGZy2SRuA+9DEEldd8e8f/T7v37leAIAY1s4qDJzSAzAWQ2WBF6EnGRJWuM//tVLz796gjX2IznntPvmf/vp+ya9QSRPIeXnbniqGGPul7ZarV27di35fZ45rPqB1Mwyu56Z67rGkNNCdrLMgkGgj7AE0EcOXNYZR1fZEjNzIUVcWBFwvcLBSu+TIaqS5caDFa3OXz/2xG/f0NwB4pGRvHgDA+yYCAoCCQwwARJPkf1Pf3Jw71YTQ9uLOO3pGauwEBH5UpjMrE66Z+vYB648H1yklN5GJVSNgMJUGDH3ga2OwH969DtFe5xSXQgzFMwmRSIHYNFR/w2cKRhCwW2k2ddm6j//5k9YFRKbrMdTTY6rKpATEEcgBcXCIrQgXwP/5Rv/TAbxBceeY77r6r33Hbig7VkNxEwGIgahYYw4d/iwmAna+xCrHsqdc6qaw3dZlpnTAoB4QFfIq0ogymQMuEt2TO4+f6drj1m0lFJBLi5GHlp/iGFwlGF2IhKqvqpqrI9V+OKXvwYCzIigabArNU83mFqs1GpmDRRAas4j8XmT9j/+2eecGqVoqAOa5IRWFabRwLmbVLY7V12yd0uHEiDih42mlJIBEOZsAVvX9SBCU/z/2XvzeMmq6mz4WWvvfU5V3alnaJqhGRq6EQQZRHFGARXECTXGqHGIJmqMQ4zJLyRfHBLNG2Py5stLpldjjFFjgoF8DhHUxFniCAooM9iEqed7q845e1jr+2PfW1QPVQ1ID7f7Pj9+/M6tPlW1z6l91l57rWc966d3bLr1ni21DyzJmdkcDLEVJVXl3TGPF7CvoCxcs7NBYC776ve110StRpEZmAAURWajKgGtghGHNnyO4Dvv3fqN6+5EqiPMeKExxtf9wnNsqgAR49KseCIG3PNdIMeE52Okbo+b8h1uygN/EpjB/YePAGIQg2BNfNGpxyAG5lqNne5tLMxBR0aENUmVjFFNqrPrH9iC3L9+9ac33nqPsgNgpIbGRJh1IciSbTMVBC7IEZgYQYIFPeGIpW988dMasDcTHdrWYorKjXEJpiR14gGueI/f5xi9hWsoltIg8UVPORkJPNC4zjmTk58gA1iQcUoMD2uh7lPfvF6jFQSwDQlsCyLS2OSGG4J55kkdPBC44HwiVxpfzVQfvPKGwBPQrswWfwIAVJA8VFRnuwsxAVSCTJH1yd1YTpkqEOcYSyl6qAD4p89/vXbjyTeFBKL2c5/xpJMOFZh2pq7bWf4uM7MZYBwOHohIVgBcMOVDkUVq8vFo8m/+x7NOf8wk116NMaYsy7QQA51DN5qlzr//U1+LEQoLWypZMzKPY50TNWzMC59xysVPXGuazd50ajHWkI1Vq0AdJZIDpEx7PM9TFkWI3hjXCK9aZE8+4WgQ4vAqjKQg5xhkVHup+PbV31OaH9V3C9gOqtY6SahqX7Q6V37pKz/b4JULtlRVFXLJGzGMzf7cCGRLwgyoQmFMIUnv2thc9a0fc7WZlxzGEjpO3/SCx8AO3X3mNB4z5zx8v14/5+Qf4WvfK9gbprzP78nH/ZznLiEKgJdPlWefcGiynW5VGVculH70MT45sbkbrr/tnn/66k8IEme7Xw6NITY+CiBsBVTG5rdf8fQnn3R41dRJ2TIZiU2vB1N6NZbhUr2nxx8bb61VYnHtp59ypAVA4OEtR5gYJARV3/vqDfdsma6JKO67atUFPDwYY2KMylSW7ar23SAf/vi/9eBUYrvtAJChBCRwSKMSY5nx3TSBM01CEwhkzUc/89XEBRWdZuumxo299UVPntLQDLdvff3tPmE6pXT77bd77+epo7A3TDkRhRCstYOa7kMHlFloohed/ShVhUiM0Q2n9B9sqKe36vjyIvX+7t+/fscWsYCEUVO/KCxSIEBAYKJq6/ve+tKz1q60aFJoyJWuPSFAqyhDCEWrvafHT0RkIEEU8rynPHquoHPofFAFCAzmovjUl79nbFuZzPD2zQvYP5ErcnM+zJVl4uLqH938jevvJ7YAS3qg/aeq0nAZNWZWoCydpAAIiBJwx30zX/z29TGhG+1k25xy3GEXPGHd6Ma2WZQ8k1X6ryxbtmzLlvkqzrqXHglV3bRpk7V2t9VTOZ9XsJ669sjlE3Z8rB3SvMxC7CEwszTTalu+u/WPPvk1SDAsSYYudQQYIwaxjpq4QNkpUvjD17/wUaumWkbFFFu6Fakm3zXGbdnjTjkM2Rh9q3DHrFx05KFTBKSROe38y6dE926ufnzz+hSJ7ahd3QL2T8x2uwcyCaIJmoqJj1z2uW7kENmwoRgMAEFhXI597xJZ8gGzcVqtG98An/j/vjxdx+jGO5zI8Nufd3oiwLhy+G41G/EcXQGQUlLV8fHxo48+eg9c/d7AXjLlVVVNTEyoqnNuZGuhfgZExicmnnbK0amatq4MC4/uHIwxHVawFdXv/PDay75+I5DScGVvTQIwoJbyBtYx02Fj8v53/vKalRNO6onxMcNoWaNkis4e12YRpaQRITzvKacAAgWbUbOQgKSRjfn0f30/qVo2SSXNHx32BWQYY1QoRmGiFEKr1ZrxctP6+//1yquTBYjBBjHNylEMz51ICtZyE9WYAiDXal13R+8/rr6u6IxRaiQ1L3zSySccvZyBGgwZ6pvk6nwARVHEGHM14rx2GfeSKV+6dOnGjRvzncpbmxEnE5GoRNjnP+kkx8ps5CCs9hwCSU2jJjSVFGNthD+97Ou3bQijdJyZFS5GbZlYKEICyIqvD23h/b/1K6ccMTWu3ehrmFJEfHfrnh6/cyURtRjPOOUIpQIAgfqUyp2hSZg4Af/xvVs59EjVp7j/9wFYwA4QgXE2xigxLJ4YD3VFZNS2/vk/vnHd+l5AFtASAKBRzAhmA8BZUijUROCj//Lv29BumqbFsmrp+Ouf+3hQqb4BABoV9e6rHmbJv/mu+rD3Rj8zM/OFL3xh91wfFVVl4lqx7qhlR61a2YRgzLxMROwJOOaoLEXHxaqmVgjhNy79nInViLdUCbAFJMBPtywiQMU4YrOskA/8zqvPOPEYy6ZOZECLW3t8yWwab6096cS1K6dszl0miWb4roKYBbj2x7f/bIsvKJHCGIrDTf8C9k+ISAih1WoZopnpra3SJZUouK9O//ivVyTkUCAUECgNb9gGUlXErG9O+NZ3f/Ljm++IZsyRNGre8ovnj7VKpEaKsqXSyFC7kSO9xpher7dx48YY47x2ybE3Tfktt9xy+umn73bpS8yEpIJxeKg86ymPMUilVAJVVTYwlkBCqqzM86e1wiOFRM4wCqYA6wxzjJvuu+e3P3ktpOsBQYI0EFUIFCIRhI6BBcBtlBOgWYJtbUtmmZD6vW947ovPe6xFFSB1IoOkbAI7JS5VXNNtO9t76P2P+zoNO6BNMyruuU8+SZoc4Fejsd6eoto/ltlifvuZa37KEpQ6QdXQOHSBwTLPYC0zSJMoETnbpGiZrEigsW/efP+nv3g1RAFXCRgRw8nHuXzHkhBEQV/79ncjtwK1Y2qec/pRTz75KIQIdpyQlMuddI8H5UP6jZi995kQOa+x90z5M5/5zKVLl+624alEATExS0ggPvsxJy3tUCNs2VhrJSETP8kYZtaDr1CbVDRJRkoJTFtnut/69n9/7Mu3capYTC0WnBA5kGcautS1IN1GErcc8IbnPe73Xv6M5S1t0BKRAt74GWI7TeNVuWLj1pnlnUfGYVHVaNpLWnrS8Udy2Z6tvYPhgY3aYMiSmZlks8f3fvxT31REaq1lSfN9L7yAPgx73/Uf+fTXrr+vAsUOQeFgRzDcsm4cZ4me177qlyadtNPWlZPm4ueeDwVZnhWuyFogO6E/u7I1v/LKK7vd7vLly/fM9e097NVHItPyR4sbOMsJs3R9gI9cjNOOOUSL8RBmNTqYLDOLSJBAfNBttEUEEEMorBERa4ux8YmZXvPXV3zlB7dOC6uzBrCwIBSj+FihapVFI2DVMRue+djj/vclbzjhkLbndoAtnLFSW+lB/MSiJRu6D9kL7mtZ7ABvOo89/pBDOwAYAhgDstsR0XZ4lzbf+ek9t9w9XVqrTEqQ5Gm4SOkC5hckprF26940/u5/+I8aFhpFoCOrdr2PYOQg22SJ977z15bR1pdd+JRjljtHAlJVldyHi3Z0yfvH/U5vj370o2+55ZY9dHV7E3v1kXjXu951ySWX7M6lEp/IsoJIia2KdcUXr72DVQFSFWY2bLNbanaXQT3w4AwRSGdZWTGmZF3B1obQ+9o1Pzv7seuWtyhFUQOrpBRpyE+sBCZ1hJSETKFslnTMsx9/4v0133b7nR6corY5tY0ESVK0jTwCGyAiatT85ovOPnJJEbmwBIIoWaZMQt3OjudaapL055d9485tscMiCUnZqNcszb6A+Q9CIamrRev+TVHr5qxHrWIKgBuRTGM2SjBEROqYJjr2qEOWPuvJp5qQrFEVBbukYAKR7rDqD7LIc3hgcnJyzZo1e/IS9xL29kZVVXu93kg+ouSyUNX8sIbHnXL8oRPWOcOMrG+eOap9MfSDCkkJzCEEESmKItNsQxIDt6HaeskHPnHPdG0cjDB0WoZ3aQlcSFL4HiWfgARYkonCv+elj333659zzKGL1LZm0KnFhqYae+Ri00s75sx1x+RmIgRAINmgb2/H85/MvLUr37/+VmvHmiYkjWwZnNvFLeBAgIEGZQ4zqZ6+7KvXfOOGu5CERrlnrBCSuX41oRk3eOrpa0tFYUmDEBfA3HZ0+1zaDhu+3K9qvmc7+9jbj0QIoSiKfBOHwTKyhmvW+yssnvO4E+veTJLgnGPmELLSlDnYXHLM9fzM187MRVGQYWaOphxXf8u9G9/+F5dvagzQgEeVbgogxqHomMJZDTYFEagZp7Dt/FMP/5t3vPTlT1u7uBAqW7Y9WY8uBXhwyCGXs9cdZo3ClbNaSHkx1jQYK++XbwD40o/uaBovwYuCmRQppIVazwMHSnVRTJVixly1Jcb3/+1n7p8p0nDrGkIwxIaRUkpJrXMq0RmobwAmU0ChCs6tQ4d96ZzdOJCSLnv7SsbGxjZs2DD6HNYkADEjhSg2KF5w9tp2u0UiimStnVNx4b0//n0ONk5AmZsfmsZ7n0IUEdFaUjs5vuF/qkv+/OMbaolijQ5lApQAAT4owIiRSYm5FqidALCsHX/jBWd/6JJXnX3MlPHTo5feB4Nsl4noOY8/sQkRVEoSKIwxPCBQh+0DmiGEf/vmTwpGkWpTdkASo49kRnptC5hPUFXf1JENuYIl3d2jP/ibT41gk1jnUkqAGEPGmJhys3JQ4YL3yoiiTGASALqriZJjs9t1ij8gsA9MYbfbvfLKK0edEcNcq3WFIRCWL7LHn3BcWZZNr1JVa20OgcnB15mXDNd1nZI654wha60xxMxFaLrtjtdFiNu+c+vd7/vwF6s0qnExxa7R6JyJZKJrCxUSfZtiBAUqI3esc8ct5Q++9UX/+52vOuXIRQ91nDqHB76RCMDpaw4zrohgzvUgTCrC22+w8pkxxl6v9+M7NyJFK17BKURAXNk6CHdjBypE24ULlWodOi2YyPLft937kU/+16i3xAQVza0ODAlRTKRQWxYJMIaACI1ApAem4QOOQmZezPfazp2xD5gAF1xwwWmnndZut3PtbN5KD9xZJmM5B1LJMjInujiiHf75azeU7U6KyThXSM/DJBFzYP0eu4cmk/U9VRWzfa6h6l1ZBHSMBvHRlOvvnb7t1vWnn7GuZOQ7SwBiACkQQQJugZjmtjZEYDYgNgQzu8ITjCXg8KWdi554ypq1J/S2bbj7nrsjGTElwExKEmCsItfpqaokVQEnJqsJoYYpnWGEplIL485+1BEXnX1i/kbDs1qmRAQwIalKQ2xBqiBERvj7r63/4XU/FeOEGJrAlolJgh5sP/qBCyJVGEvEJAJlVSj98PZ7V6xYtubwJYyYUmLyIBNARoSIjDUgpoHZy0z9PwkAGGSQE59zkbr8/5xdq6qqLMt3vetd+/TSH2HsA6/8/PPPX7Rokfe+aRpjTI6W9CURhmHdSScef9gia4ukqHvdJgGAG84/PdhQxp6RGZLKGtMq2gn41vW3/d7/+6luZAApNJAE67zaSEUcng4dhqcdV/75r7/wo+9720vPO2txkSTU7FpiO+IbiaqwxIXhsgBaUnXiTCTLRQtMQWFc0SpcG+HsdUeN+ArKfUhEOOe9xXznB9c+3PuxgPmNv/zY5Tff20NMzOypDcBp1Icb2u6bF2PMbbfdVlXVAeaSY1/FmlNKzDwYgRWR0XzzgvGcx58YfaPgdmFQjKeUdEG3eg6WLAwiJUmsTTCcukJX/3TTW/7o0ju3eGMLkISQMplbRjQ3HIJI7eDr46f0HS8483MfeOOfv+XiJ65b2dLatqfYlCyJQkPJJy4rt2SmWBmNVWOTSIjaJDSNL6V+yqOHm3JigElBLEBU8F3b4g033/7z3JMFzF9sauiS//PJe70joqhIYPx8XSGzeYkxrlixYv4q2Y7APluaNm3aNDU1lYXkAcQYR+fWIrBp87YXXvKhmWDaFHtm3EjtIHGBlwYAVWhB1wAAIABJREFUSLDCjbWFCVabri0CinbURcFvWbtEP/TuXx9zScWI4Vj3yoJG81t2RjehZWAADbWqclEqWICv/vDO6265479/fPOt92ytkiHrRCRFT846qUEl2ZKIenVz4oryn9/7KyNmXFJhYtIAwMP9+9dueP8/fh580GkzLAAAq6/M1NNOWvWnr3+mM8mrcwzSiOEFzKPhvc9cciKap80lRmOfVc299a1vveOOO1auXNlnEGdXfdj5CkyUdPM9M3fevUGBSmyZm8sslIoAAJRt0kRERo0lZSNJ0PNK6n/hgnPOOGElfM2u9FFbhYWm0aJxO6PgwCpJQLYg46CIobGQ1YcteeyJR73gqY958TMec85jVh+3cmLZeLF0qhV8Q35GRIL3JHFsbPLMU9c96eQjRjZSJiZAEogimUv/5St3b+n9fHdlAfMVjrSbcOd9W0qk049dbgwnYkbCQyz0HSxD6fV6RHSgymruM5fn/vvvP+qoowDEGHNPJmNMSmlYmIUBqPzCs5749f++puJO27Kva2vtgiHPaKERDRo1iqpxqhJC6LTwmmc94aXnn2I1oSiSCluOoBhs6yHOZ4UjguEETSACsXGtRDDaBVyCbbXKNasPO2H1YYzEKkpGU+pFu2XbTDW9pRK3csUSm7bADiPDiBIDEhNZpmmPH99xn6aw4JUfnKhhlrjYk/KvLv/GKcce+tgTj9AksA/Zm872JLvkRVHkRhMHJPZZdOLkk09ut9tZJjj31sPcfd81NKlpPWrV+NqjDvUJhTaFscYOF8M8yBCSVzXOOGZEhve0rNN6ztkn/MoFZ3ViAhRETCxRCXDlQ34kSEWBSKYh48FJwOqNdCsa81SA2AIFxGgimEQuKqtxXNKK5RNrVh9+wnGHdiaLZIa3tsjCAKpkHWB/9JM7ZgIRDjq5tAVkJGGNyYmPbvz3/+9nb7yncpbjQ1ePyCzyHFoxxoyPj++J0e4P2JeB5pSStTY74/nPEScTaQCMhAvPP4eLVqi6ZVlU9QG7xj5UeDfute2TjRAiHSuLx55w+Dtedg5rYEsgGxJIQ8tGEyqzK8W40YjEBFiNpTZFqgxL4qLCWFtjIclI5rAzwZDCiDoEA7GKQgWyuZTKCobLks/OxCRQhii+94MfCbsRShwLOLBRWuqKs0xtjv9Tl+//yGd6QS095Hmb+8I3TbNbIb/5jn25e221WuvXr1+5cmW+xbspohXLDJB79mmH/c1lvLnHPZ1rH3UwIcu5icZZtSkiawoRmWy2bHGLQVwKwsy2x51x/Lvf9HwnNbiV3+jM3G/tHOZETnIYsf/hWeLGWrvD6+hPFLKAzRkWA7QZgN0uW5GPiQAHoCAADLsEQAmMch2UDAmMSUBPwal6w9OOXLLirJXLJsfaHSLTnak3bO3duWHTj2+5/cbb18/EiRC6BUuKvnBt2LIOUS0XGkRNjHG8sBpmRE3NnejGW3GPN0hawAgwwMze16ZwxhjfRGabBG32W6tQji8KCYxUMCsSM0cyRhpCc9yKySeeduI5j32Us/Qw7FV+TAZ7xO/n2LhxY7vdNsb0YxV9jCZQ7mO354YbbrjxxhsvvPDC3YshxKDWASGo+8hnv/Phz36r9tG1Sw0H1x48Z2+cc865XO8gIj4G68ox8puSLdScfeKS973hF8sWCsFu1sfcPHcOeU3NW9HMKcrHO1v2Rxx1XbdaLRFRMBh1hLVQwKVgTO4uI2CrhADUEdf84Ppv/HT9f3z/lpnoQrdnpGl3Wj3vHZErSh+l8sm5whCxNhoadQ+NsbOARxak6pzzyc9ONaGybItIYOekMbEXYSK3lNjEnou9JYsnnn726Rc+9bHHLi8tBDGoKR5eoX3uEPTzi0884rjtttsWLVpkrR0bG8t9ogGo6szMzJIlS3Y4uX8CM+etxg4n7GNTfsUVV5x55pnLly/Py+bI2y0SiaxPKLdt6l3wBx8hb7rScweZdLUiqVBRFCGEKCm3yjTG9JpYcE1eV60+5K/f9JLlk8mYtieMSCaEEAZZWbNy8Mw71zTvhSrnTHSPIThnoAqi4L0rCoChWekuQRQiAIEomiIJqoT//M71V337J9fedFdQSbHxKFoGKinAcntKord+2zjqmRFh+gXsefBcQTAbqJCqMtsYY4BVPzNZknVlUIp175TjVl58/pPPPeNoAkghKTIpM2FWKOuhpcfqui6KIjsi+7wsSFX7Yq7MXNf1Pffcs3r16uwwVVU16Iz3H89cSmmtrevaWpv1l3q9Xkppenr68MMPz+fv+2Bkt9v13k9NTe32RotvtDAMSxJ/+8P/ddXVN4KbYXrcBywkurIdQvAxlWWpqjk7by16DR+1wnzoLa9YsqJTJIERUTuS/DdrowenSJZBz2tq0zRlWe5g8ffUZSlSEmcZEKgAgCQwR3I6ME1NPlbkxt0p1ZZNSu66n2259LIvfu/W+6joSDNtNTFztw7GFaRioQtyivsWzBxCIKKiKEQkxpjNq2MlW9Y+WMQjFrV+/RXPP/PEQ1sEE2sYp2TypjubddJID5fRFEKIMYrIXst83nfffZ1Op09/7C8nO/isIYQsEZj/7P9rjDEXw+/8yfmcu+66a2pqanx8fFaZYC9c0mhs3rx5bGwshwt2t4tvEkqTekBxy/3y/EsuXVRyb35EwB4xKJKzZe0bY5wxxntvmdggVNWiZYv/9q2vOHalcnLe2iJ6zGnYjMDg1OlHVABUVdVut/sEgD1/ZZKlbfMMzhK+3vvCWhBAs9JppKDZorAgqmQcAVm+vCZ87fu3/Mk/fm7TdEW2DYCRVDXCJi6cNHv+EhYwFIOJmX4NvbW2W9XQsKRtX/ysJ7/ywjNsQkGRiD0xA0aVNAJQdgEQoPVwB9A0TYyx1Wox8/T0dNM0mzZtWrt27SN1gdPT09n97z8s3vutW7cuX748P0qYC13m+9CXn5oVXk8ppVQUharGGPvOU662yefsoOaYY5L5eNctu/Y++kGiUeNRgBpoCe1GHrMRb/7w57/5rWtQdPbeQPcHkEBZiWeXd6bScdWbmVw0dembX3TC6iVGOLB3nnzhCg0jSoEGbbf3/qqrrrrwwgt7vV673fbe51nVn2d7PPuvEaCY1FgrQBLknLZJDZgBQs6gziVOFSBI8JUr2lmbg6InE7bR2B//9WVfue6uTZVMjY/Fasa40sfEB5+I5v6GPJdCSNaytbbxFYlqZ+kJy/gPfuV5a1dOAVFhiAgpCucNZZazFyBLO+BhkO76zkp/PovITTfdtGrVqk6n09dNzA9Ur9cLIdR1nate7rvvvrzkOOfyh2TD2hcBzJ+WNV6aptnB5c8RlX5nhf637+Cz9l/ZwQYOPncj4s8ppRDC/rLrzLdjxAlKABwogtsGgDSvOvdMbh90uSwmm8NtIYTS2dJxPTM9Nda65FUXrVu9xEjqAU6sFsYBI0rjQgj9HV8I4fbbb9+4ceMHP/jBK664IsZYFEX2YvJ37QVR2ZQEZGYfuaQ2CzSqJlMmckpW1CbhCOT/SKURlmIsJLHasHSJ4XlsEv53XvfCN7743GVF6E5vdu1OXdcPg3y5gD2BHCi2Njf60U6nc/bRYx94xyuPP6QDrZDibDtOYzn1IEHBEZzIgiw0QUYomQ9FjhyqaggBQI7trFmzJnvoxpj8LGSjaYyp63r58uV5Pzo5OZnzjc65QXPc/38mC2Q/egc7nkW7sp+UNyW5tXp+7nbugJYDUBjIcA76T3ag+WX23PO1oB+ieRi3Zk9g/fr1hxxyyIiNfAKMANz1OlYowBEeL770i7fecOPeHOf+ABFxZauqqk7b1TPbxlvuda9+9SvO7DTUhmqpXrnMjTmCaDE8WJ6D4DHGrVu3isjmzZtPOOEEzE2UPAv7M28vbOBUFUQxDkbM1ZMjhZttCZMzZ4k4B44kSTDsRBmAEmKKpVEoRbJf+v5tf/L3n97kLbE10J2fnAXsTQiUFMw2h85CU7Vaxdq1J3zotY/nzpiCfUJhQNmrY04AAQZQiQrOrwhGpfFHoO/t5oN++qfv9g56yjsoiOxW6a//rr5iV9+OPRjq1w5b3mGOeZ9shl159zHG/cUr37Zt2+c///l83K8Y6u9fADCikAfahWrSpLA1m987/xiYkmMtxI4TqQYaMyrgeZ8L3aFvQx/etgwpQtUpTK9qqOi88vnnveKMDqhdAiURuKS59ODOdjz7BYOv3H333VkDJ9txAFlvKAf1BqXkB3+Once28yv93cPgnyOuN8f75oSLGWRBrgAsQYEAROJIJnHhZ3s2suGsnA4mGKA0NsHVNaw05590yPve9NKpwggcpcjMhpQ1kkaBSg5UYcG+7yWUhqYRKjItIk11NGNnrDn6795wNncmACagNLOJO2YmgFKafYbZ5tCKAaxiblcm0ARFfkj0geknknJQfbsJ2TeO+aAfie7b0EGDm5ONfTzI0GL/tEF/9MFQeHf4/B18ph1G2I+t91/ps2L2F1N+8803n3766XkTlKnTO99llSwrT6qqgtLSmjVrVi8py8kpSY0XqKpJVa0W8cDMcalqGboBJoTGp1h0Jl72jNNec+7JUYcGmvoTOmvd5I2k9z5rUm7ZsmVycrLb7S5btmyHN+ZJbIzpz5j8OjPvYJTzLq//Yn+pSCllCjzmdrUP6UrzN6boSRNBHImVYJO3GgsMDZgY0VbbJrWJilNOOOztr3zeJLpqbEjio1hXAMQgZrZs9CBjsu5DVN5PcFFI1VMvEY85YvK3f/VCtmPDzu+7orkvSe6dkhmJIhzBnkwkKIjEU9gGosbHJMzGAX1C7YG/VGfjzvtPl9KLLrpofHz87rvvds6llDqdDgYE41NKNNcwBLNhowSgtPSa5zxpenq61WoJCmNMm6LYdjmqQnx+YHD5HQQTWhzFdlrtiXPWLf+NFz+ZSRhDpZzzdrL/gaqambbGmJmZmZzbPPLII3c7ksE0+uDA+vyW/u6y/xA65/LvmCtId3u9/eNBf8rYQsGa1wkiMEMFI7Q4KDZNE9ios4XiWacd/voXnhPqLhtnXTskUjJEJDF47xeCLnsN1rU7MEZrtTRWure/7NxV7WaErGm/yiH/mTN7qhrJErPVUKTaNjMMiVxUbpKAsrDMEIXOTidB/Lkkzvdn7LDn2I9MOYCZmZnFixf3/xwM/BtjAM6J4P7rKhJDOO+sY49cOuZjYoamCGbEJuqB+YwSUQR8YmPMY46c/KPXP98pvNjclHaXyCY129/8/1xUGULIDN/Be77bb5+dNNub9cFZZa313udNX4wxhNAP9o3W2NnldwGIQCIStgmsZJWscqFmhK4jlQXbLMSlwaB78TNOec5Tz0i+Uok+JFUyRCbvOdx+VwF4wEJNr6pAhiEvOO9xpxyzHBJGzAjtU5Uk5qbMzhkioug1BcCACxQdEKymNgQaxFcS/UBMkR+GkuI8wg4x2P3IlK9atcpa2+v18hY+L8sxxqqqMJf7zongfgGrc8Zo+tUXnxdCYEqG4KloaR3kgN04q203pjx5RfGBN77QGihQsEQeatryap1z9IP58WwrJyYmHt4wdjbrGTlHFEKoqqpPic0/5YOnMw5+oIVYSGaz6FwX0TCcUBPJgmARJUSwAbjQ9MZfePrJq1dqM91pl6KUVInUMsdwYC75+yGaKraWTvlkV02Ovfz5Z0IDtOOGz4jsZA5uAVUppQRbqHFKHKKCGMp93VpmNoYBSTFmIxfTvN+dP0io7mcteHJmuc+TA2CtzYUq/f3DAxVQolBOKT3j9GNPXL0i+Qq2SKpjBcMcgOK32Xr6xGsnw5+98zXt0oYQCAKwH+nvZpJ4Ps6mNn/Uzno9P8/A+jkia20uNVbV7373u/32rdhd5nPXiB4SoYGQGNFADKQYvgsBEEOEatsxwKBCRFaUeO3F568YN5R8lMS51VFKGPk5C3gEMTbWnmm6iP5XXnDhIgjYgBkYpWyai2gwy9aAgmAMgNCElMDObOjh8m/+5F0f/dIl//BfW4PztoxkYxRrGYD3keZ/oHUY+k9c/8/9a4M5NjbWD7Zm3zxn55gZCtHtwmeqSqrGFozwkqed+scfu7+n1vqutEwULQ6sH7HPYz2qEz/4m6+caqFO2rJAStFyZ7h30y8hyxGVzGfapRzPI4jJyUkATdPksrp+EOYhBfTy9ivaFvBAnkRSYlKifsHIjrDArHKWRhCiGGOMNL3Hr1ty3uNP/cSXvkc8pmAyjjQVhTuAexHsV6hjZVjWHD711NNWGRGAQRhdityfoiEk61wCgqCE3H7P5quvv/PKb1930/9sIteK0SvSdT+69rUvf8mTT1nZthYAkVhDNKj5cKBjv7vQweKr7digEAWIjAIqwrM5bQiEWQLsxe/51M13d5eGjY0pGyE7zx2ufhSsb8TzwUffduGRa1a3AZIGXEbASCQoeDdVnYMs1L1AEt+wYUOn08kEmL66y4OvGs3RdhH51Ddvvueun8W6u+aYox5z0gmrlo0ZAHO1oLt6ZxOp9AkdFkSfXAuAkQTI+p57ze/+xebUqnzTNiTRC/avdNEBDM/aienNL3v6S556imkUVmFCQjlsNoiCMJuJEREYs3Fr9YNrrv37r99xy213gCy4CClaa1W8JRJTorfx3DPXvvI5Tz3+8KWEBOI5gutBgf3xOvvB3AfzmAlq1hYUV3zjB3/4ia9qapuwrSmM0fkdLk+2nXpby3ZLg3eWamrZMPPHb3zhOaceM+wtO3BLsgXXAV3yfoh8Tw/+s5/97KMe9ajx8fGlS5cOjmoH3Yntxqw9UMuLGjYmAoQrvn/zez7xnzIzDXIgA9GWTSceteyCpzzu6Y87ZjwmNhHEHs4AJnkwexraVkoBEvmn//zOn3zie2x7JU1UUiEZaxYK+vcG1FDpw5WXvmGcgucJGBQCcBzqmEuAajIFQRn0qW/ceOmnv9md3qpDZq9obLVa3W63xXLu40998XmPP/nwSdJG1M2aEVEQ9Q1eZrPOMtkfsINZJ4Af+LcHLmBX30rST8/S4GmaQHNvIIYyaFan2WBT5CVNQseA0EQBuGTJzKxIKjBFLobqV4fs+npFctwiX533fn805bnUsG96RrtyikDikLTr6NW//3d33h+bpnHjLjXzW8dckw+w46WpfQpcTuq23/zF889/6qnDFGcGVVP6wfH8S+cMxMaNG5cuXbp3nJQbb7zxpptuevazn/3A5ewksJPj5v1dFysH4wmFeqWC3vNXV1z5ndvMmMRoQgLYEEyKtU3V4rZdPNV5x2tecvIxy43Whh1mY6KiAA3J5Cugvtniype87dKZhJltVdFyDJNZrQvY00iWzll3zP9607OMSGKrSFYNMFwjSFMigxRmkn3fhy//5vdu8ImlvVxid5enM1ICyJTGGF/PsO+etu64ZzzlCS84/RBXtHSOYW6QFV0S+r+7EkBKTLP1Ew/U5T8wFtX+BB70QgBkoQERQT+EmIP7yv2FY9ZGMwHokitDZRkwZRWpbRUq3W29r98x09v4P6evPerIlUuRmXh5Xz58t90XeBGRu+++e3805djJMR+htOU1FHAAGsW3r7/znR/8ZF0sZp3heS5+y7G2rc50r8vFRGHplU89/k0XP01plGZtNtn9mkxV7cdVvvCFLxx77LFr1qzZCyNX1bxs9NU7dynLNUgcVlVS8gnGSQD/7l984ls3ba0bKVItlkRUwMYVUBaNkGQsjWv9q7/0vOc+4fhSAxIauMKCtAGN4ClKBH/oc9/+q09/x5U21RUNERFdwCOOKqUPvv555595hKglAqQhKkEyjEQXgRgVRG//Xx/66m29gmncyOaGimG7KImwLiZKREXRUk3RB8vkLB7/qNXPOnPNWWsOXTRZACxwnuC278rSj8aaweqzB7Nh63vfcy6+QEVAcwXnu7g8ifds7V5726Y77utee91Pbr1704bAnZmfvf3XXnXeGavLXMiKvoDSg4hMiFRVtZ/O41xA+GD61ySAJRLbFD2b4s1/dtlXbt5MzWZnH2JL+f0MIcmYjdPBtNvtZ556+CWvvdCKsNYwQ5Ugd1ZpABBjvPfee733N9544zOf+cw9PuwQMkNxsJFFFgDIwp7DFF1ye4nI+L2/+eRV39/QRJkcd6Gxgi4AA5NURZCyA2VYfd0y6a2/9KyXPHEda1RTCEChx27X90dVQUqJ7657L3j7R3oUOpESi+xPfNwDGIr0mT/+1ZWLbAXXwuyiOyIrGQFW/P6l//y5a+9h10lJU0ptNMN059m6lFJKwbIpLGcluLIsg28COIhpl8Wxhy098/hDzjr+kONXLlmxfBEAEKtIEgCcy2zC7GihAA+Y8l2u+AKUkPwJCoZhotlVodAIpZAw06QNW2fu/J/7br1j/b33b/jhz6qfzdTTIRUSx0whia2Jzlbvf/MrH33cCicwlEDG55BLbqu4K2RfLSt5NU1j98MmSRm5qdAgi24kRKDGMLT5xec9/eo/+VhRtGqZ3zFQ2x7r1TPjpT3tyMnff+2FKUEM8/AEQN8l7++5vPetVst7PzExMT09vRfs+IYNG3K3ir4QKOYEAPIWNbvkg9vVvnQ1gJrqv//Xq7/87Xujo05pqukQeMZyyVAltVC2DDZBkSRx2a5AH/zHzxy1bPLs4w4hhgqG2fE8DK+xAA4Zs2euO/obP/kJ2UJi3E3HvAU8Qjj2sGWHLmpDIxF0VnQ+jVDuZImXf/Xar9+0sRdoyviYlEypqRrmpdZ13S6Lgm1qqiRaWheRqumtxfiiEjAxxtDcctd9t9x1z8evSqJxxZIlK5ZMrDn8kBOOWH7MIZOrFrWWTThTOscl9Sv+B+ol8qAGv1GVVDUye+VelbZ1Z7Zsm9m4ecv9GzfPzMxcd6/fvG363o2bt3S9V1IuhV1SLKc6hWa8NMYVm6alU7aOXzn1/7zpBccsdhpqcoXCzNSxbFkCNAQM6foySNfetm0b9m2b5tHI1d75sR/lmEeQZUBjE2xhTz1m0blnHPeFr3wf7b3UK2QPIdUzpjV5zKL4vje90ObNVlLhctiN6Eud5INc1ZlbTAHod43ac/jMZz4zPT2NuZYCqprDKX2DvstuRA8ULsF/6svXf+yL1wjbMUtB4ToF6optAU2aYkwRc0weQ0hJIlxtxv7obz759+99+3IHw4jDvRgAjhykBujCp5x69Y9/6NmlBRGWvYXTjl0pgIG1gEIAA3gMj4L6oH97xdc29MxkyarUtpDYFdOB7Jo8OlbalEIQgW0RUU+JjDWTtpreXBamIIhKCiHBiCnJTW7Y2t00Xf30znv/XURiyjtaY8zRS51zrtVqdTqddllkiQvDlFJSRUrJh9A0oaqqqqlDCPdOw3vfhJiUiC2zEaiqGta5bJA1holUtVHVLYksEKq6YVrWxvPOWvWml51fWoEkGKtKQmi3LAmMNobDyBkNAN/61rcOP/zwpUuX7r+mvCzLvqb7CFNuDBSsSLZsx4gWh1df9MTvfu/GjfM8m0UprGrH9775FZMthiLFVDhKIzUrmDk3Y8p2k4jy5mZsbKho0SOINWvWXHfddRdccEF/MNnsZpturd0h7TFIp4kxfuXmu/7Px77kW1OmaBqvXmpXoDRTta+YLbFl45BENIKUmQvrpPHExb2++KvLvvi2l503bkGSholiikRmq65g8GPXHdISmTbsXCmyIGW+N3DK0SsaoANY9ZEcQKA0gvd92bdvWr9hZmLJodXMVmtbLE0KjS/csHqRFGJSAVvmIqlGEVIhCUV7QpCq4ElROFMSUupJNaOqykaJlAhsiZ0wgcxP7/NE3nBFtIVUVFU0qiqJMjPYEhF4dpepQiVqVXWEggmGcjsgEUlmHAaGAE2aBJqI1ICSbal2CsKkk9961YXnnnoEUpNQgtkAkoIxThSqCcwIOiLl1zSNc27NmjU33XQT9qvC/Z2RWXSDmuu7gKKOnnIi2oFifczy8Sc/6Ql7cZh7BIsXL/6D1z3v6GVtsENqCiMAm+HaMv3oc7ahRVHkV7Kg1Z6Gqi5dujTb8byLGpRnyb/gDgqLfQGGpmk2b978nr+6EgVIU4V2KNN4m2wovDpnSDWllJJArIMpE9mgXFXVmBFOdS32yquvv2tjCN5bHn5/mGOUBFZFh6vTTjopkoYwzxf8+YPVK+ZayGtDoAiMzir+36uuXT7VbmY2o5y0LJICtSZHOJ5qLNiCDUgMpM1xnJqOzJCfYUnERTRjPbS64ho1wja68WTaiZzCMtQgudSQnzHGMFsVSilzL5TJFqZwrjTGqWpKGmOUBBUCU822Ma4xrmZbK2pFYJOsM2HGxi6HipIHRIkS2UCGtGelfsKaQ//xXa97xqlHVNBkShNnRUqYgVQxEhtTi4vFKF2N7LctWbLk7LPPxv5vyjHHZpmVPE0JgM41BAEARtu2CI5ypZ8Zl5R+6+JHL1pki+gsFVJSFOeEOfrwMJXr9yCiQQoNoVVpTJasFqSRWu4Dr33C2tVLlSAiMCXIqUQQ+uo02F5AfOdEorX2kSrN380lxJhSyhTyHSTOByPm+YApAiIILJrJWt1QvvwDn5qpm4SSNbSl56LxsUyWibq5iocZhIjUQANDGRpaFjApmkkbe9H+9ee+zqWFDN2NEhAZFgDVhR077og2o215wSV/hJHYC5IliwQiUpKYvDO0+vClRYwggCdY1RKA8cy2jkhQACECiAmorrlz2/T9900Hy7awqRdFxLVVE9PQpXd2k6eiKaqmpNSo8VSKLQRgSgWFQr1BYmYlwxpZY55Ls59AhoybfZ2SITDPmSDV/B8RMcMQmBJTYo1WxIIZBmoJBcGRslGyrlUnCq6AddpUY4aNSgQdbePvvur897z1+SsWMTzaYgygVkwWOicH087k2pbZMfw96AYB2Lx5c7/5EfZzU4650fdVmfp5s5zi29lbzyaDmV/13KeD627wlFIR0ecOAAAgAElEQVThQlBELizV++AaRsLBk1sSMT0Otgk19cZc503PPWvtmuNLa0UfMNwZ2bBlibG+0RzUCu93cdsLNLsrrrji2muv3bBhA7ZvZzXiq5WKCGFxcKyhqhq888P/NrNl12ThEUg+ACjLsq69c+6aa390/7be6LfYTJ6BgeK0U05iCWYUt3MBDw/b7b2IiJk6rXZRFIMki13ss2dp1EZhrr/51r0z1p8fme+rKTpWx2LVW4mWpNektuM2Gg2NG18yHdBx+pyz1l76/t8673EntiCERG5WK2ZE4HTQhc3I7eU+//nPb9q0abDgZn835ZmYnOVSmbnX6wFg5uwJ7tJk5JXqhWefcPzqRePjY7GJKU5zaZQKeli9AfcoonfGznBS0URELTbPfuLRrzjntLa1DJDmtRqgLPvJeY+SG3jnH3WQfc/MW7Zs2W2j1EcE3W731FNPve2228bHx3OqE3M3f4SebS0wsL1UkQZy7b+84pvfve7unjzk3YNhZrLe18ZaVd24pfe9G24dVbysTAAUCkBl3XGHUayR5re6w34IIoKqIhFR7hJjiRdPjQ/tlaOzHbhnbTshwn3n2nnT5bH2kQFnCMknXzHBOqOqLUcAZprkuRTg+FWL3v1rL3rvq59xaBtFaijMkCgABYy1ZvjEzRV/NNASuiiKa6+9dvXq1TfffPPgmfu7KcdcUDUHhvqR36zs8UCYZSeUwb/tNRcXqUcoXdlSTSkIeL8LsKgZF7+5cC7aiRDSUx+16m0vPYcEKUYaqKCZDUDPbVD68lgAmqbJURciuuqqq7Zs2bIzUeSRxeWXX37ddddt27Zt2bJlF1100djYWF5W+31CRlTntgmaUDgHmH/75o2XffU7VFXamnqoYyita2IQiVwUKaVWZ+LrP7hxVPCVAI0AIhTEHcLi8dbB0GVmL4NkNtetTKoEISZdPDWbeN95Jz1r0hUyF+gQ0K3r79urg/45UJbtHP8typZ1RRO1iojcSrANOVuUK8fwjhc96Z/e9fKnnLhSq81AZGZ2JdiAQATDiCO7nmU9wXxXmfmaa66Zmpry3g9WU2NemPJsmLL+NbavEtzBZg3OEjLFiYdOXPiEk0rjBO1U96Y6RUj7nSkvuBGdasgbmFOOOvT33/QCKwyCNTbP7dzDYZb1MRdI6YeeVTXzuAGsX79+zZo1t966Bzenn/vc52688cZ169bddNNNy5Yt63Q6Wb1yoEPI7nTJk1cjVvm/7+r++b9+Mc1E2wH7hxz40hR9SO1OGVI0oBBx3Z33j5YU4tnqfgLEqD/uqMOMOZBbE+wTEBkAQgKICqkSi05NdAaN+HZbRoVm/dq5SuZexMbuvMlhhBBUKShXQQIclW2yZQRUdZEJv3bRE/7lfW988ZOOtqkCibQXgzkmDclE2KDZlRA3vL6nz+LLYYlsx7du3XrqqafucOY8MOWYS6z1eREjOv8OzhgOM6+/+GmrJl1q1DrXq7YVbmgPzH0Fmypxrcqb1VPhz377JVYUbDCwJuX9x+wxiIjqusYcLaT/p/d+amrKOXf++efviXFmTuGZZ5558803H3/88c997nP7Jrt/8KAEY401Wt1V8bv/9t+nZyJYXTFOafphDKgoipSiiLCklOS+bX4k0QkESEogByVDesjyJc1DaWy0gAcFyeG+rGUCVpDKeMvRAPKJ/UdV8gpMZABJ2Lx1pp4/fdyMMWVZGnaSICmgninC9BLb/PLTTvi3P33Lq849ZdJFmFagtpLlFCKYbMHGIvsWue5fh/ogWUMphyUuv/xya+0u7TjmiynvdDohhPXr1+epkIMtfePeP21wtRcCu3LShTf8wjljJJGcGy/Q7HdpzwBum3jcosXvectLFtmqgAnJg0g1qs76JrM71oTMws2Wvb9c51KgTCo/4ogjHtnhZQueU6nMvHjx4nPPPbdpmj5HJW8Icg4j63nt5nqJBGN/+A+fvvuebRxSKlq+iv6hBzqIiF3RNJUxhiBl2a4SGKNNc3+dV0AgGue5UM9+iUFhBmK2AMqdGu/tIC+hlIPlwsCWzVtlSHHAfojoaxExjNJKB9VRE3jZuad+5L1vfvOLz1lSBms1sWuArMrNnDkz0ITko0rKL4c41JRnfVNr7f3337927dqbbrppl3Yc+3O15w7Ytm3bkiVL+qX82YjvksGSD4TAMBq2Pu30o790xqOv+P6Pg/hFhGo/e3prWy7z/nfe+MxjD11MaKCVQ9sTCpqNkgvUEFOW/FNgzpRn5Bxjbr30CFLI843tx+hz1UOf+bSD3oP3vt+Oebdy5BbpfZdf/YPv32oE3JmKTWxcQzz+UDOQIuKTb5euUWkzK8gnGkFVVgVUjCkCAGZIaprGFS0dGaZcwEOFqjKRaq7nBBGxirOzxLNBl7x/nNOeEgNbAnNVVcxWdX545oV1gPS6vcOWTz3//HMveMK6VR2QNp7K3NXOqjeSoATTqqjdRgTYMttZxX0RZR7eGS+LcBDR8uXLV6xYMWIk88aUr169OqvGYPtCwWFoIoxlMi0Ttr7jl5/ywxt/es+MaYxnthK9MUbAdYidifFYdxE97eEecqRJvZRjk1tCVRS2iCGEQGOdzsymt73hl05bu7LQCHJ5e1poBOVmKJjNbs96OcCc3EpfaCxrV/2cdvzjH//4SSedNDU1deSRR2LgDvfr70e8t89e3/60ADgZUBUnwGn45I+aKz7zFXKtxKQIkcOYLaP3w3SohyGqlE64asF0pV36nixpcyI7bKBEIHIKaiG3sBnf3CQbemGhdP8RhUgE2EiZOBpVoV7XLWthVnShf1q/frshlBoBeNPhJM7Eac+VaMEeosxWVZFm+16lpIM/sAL9atFB327Q5a8TG2NmFctFsmtimDV2CYaIhEiFlJiImGxQTSEwU+GMJkkpGFJjDEWvxgoVkpMBIbCEwpKj3lknrXv2k04/Y+1RE4UAAaoYtCZU9L3HNpASGcMgpKRZmyinCPqs4u26pM3xjHW4NGwf88aUAyjLcvBH2qWmRx9jFgpEMdaOjQO/8YqL3vOXH6upReqNIWMoNnW7aKeqik3TLos9nWcRKu1EmultnCjGYx2TA6zhKr3u4vPOWHtEi2b1jpVyVHfoz5avOm+78iu5QP9hDOmee+7JjX5ardb999//5S9/+aUvfWn/M7Mnnj98t/qUO6MRVzLYmiaZ0kihjdfih+u7//DRTzReOi2nPsEgS7up6q6l54aDLKcqFJ1xm8omGlvq8cvG0ghRj+2hQN00qrpfNl+Zx9h5mmgMKiNKewACUjLGGWbxjTPUKTjqeEISIhCUlIj+f/bePUqy6yrz/PY+59wbERn5zsqqyqpSSbJK75eNhfzCtiS/9LYNBgy2AeOhoW26eU1PMw10NzPuRfdyA73oNUzPYsEws5hpDAND+9HTuO2xYYzxCxtbtiXraVVJKpVLVZWVmfG495y9548TeRWqqox8VGaWKvL8luyVlRkReeLmje/uu8/e3ybDYkTwfFzf3/ssoQRAxEQUN1CjVjQzDaEQL0TkmIlJpAxFQDbqQ6kicWA3QzRICB0mNBuNEEK72zHG2CwXkVKVXENESL0hT0V31NF1V172shuvf8utVzZrPOLiicelhxpWYCVf1hjuRNc59M2dr6ZgxsgpfuKOHDkyOTlZq9XW8gG/mKQ8Ug38XKXkLtow2MwDmYY33rDnW3d8z+//5y/UR+o+hG63yIwzFDSE3NVEXuhouQV4Ce1OUc+ck26W1060y/FG9pprrvyB218+XmNoFyHAmuiRb1YOFeO7ttYWRbG4uDg1NbX2EvKPf/zjV1xxRbPZ3LNnj6oWRTE/Pz8zMwNg9+7dUcfPLhBqt9uxjH1dGEY3iDVsDKABME+eKH7ld/7o6PH55sRk4TUaWYiIquTOlGHdx79ua6e7i45rYnNbzt/7va9d9SVimoWIRbTVaoU1OVIn1gER6XJi0MYhyzqoqMkSoKQCIRgGO7d7Zoq68xY1FmFrmFFq8D5oCZAa7omkIlT3jgakahBjIO2F6zH52u3NEWUikt6PDFlbBACOjCogREEFBjBwlhfaHWOMy2tltxONQ3zwpR1h7U7V7UsP7Xvdy65+6RUH9k7UnRWoAIIgAlIybLkac7ESlY7HdHEVJPXnMJm50+mMjY2dPHlyjRtgF5mUx3Yh51zslOn1dJ8TZaMBMKXCQo1f+PG33vbAE8e+8OB3arVGYEPOFp22ZZNlrtXuDhzqsBkrdyEPdVbtyGLZbY3mY1fONn/pfW8czzw0wHuYTMGqMARgRUt+AHGe/d/8zd8cOHBgenp68O/98Ic/fPXVV4+Oju7fv//UqVNf/OIX77zzTgDRzXlmZsYYE88tfaGxuDEm3gHU6/X+m4A1YtWrsQpY7ULoqY775d/+g2dOtvOR0cJru1vU63VVJVIm9t4P8Ds9Jw6mq8EZVpCA947iza+9aa1PJgBot7sDKgcSG0ZViZY3P4msoWa9ttKDCQCBXGYACcEYHm1ko9Rpcz1AGQLieOY556y1i50i6h2TgfTcebyKdR59ezxUjfChWn+qMK6KQPXyFDOzdQouRb1ACUSmbC3WnFMtWUJWM1L6sWbt0ksv/b7L8+uvvurQpbtzfn5Om8T5Fcow1cdVoAIdNGs35lViX0gsNc6yrPrEVTfBtVptXSHURSblWD4Qq26vKTOpNypKDDAUExl+5h1vfPLf/empVrtWa3aKgtgpSdt3KDPYYn9zB2ugItTixkgj24XOr//s+3blpQqpgkwOtlJN81NZaaJ8LCR/5plnLrvssscff3ylX/f4449PTEw455aWlj7zmc+89a1vFZGZmZmo4zEciGdPCCGaUFYRQafTqdVqWHaNjxvo637Dqo58KNrIslMh+9Xf/qNHjrVdveHL58/d+HdkUFGWA25EzolRXiA/TcZntizbP37PHSNNkjVPWCeiTlmQ2eJ7sZ2Hai8dgt64DxDRSGNFKWfAl8FaywQyBhp2jdd//Pvv/MPPPn765KmFVsuIZtZlJhNfLrWX6o2aqkooY9BtmdlaZi77Zlv236eqlhIkiDAjM2Z5FkqgkZnSe+89SAyRcwYkAEI+lTtzcHb86n1TV++fvPGKuZfMTXOc+a4KdFF4gGFrQiTEcQqnAKpghSHt1UetQAzzAVQDv6pPYqw4/NjHPnbzzTfv2bNnvR+6izIqifFjTLOs9JgQ56zHOapkoi2VMv/JXz/xP/3hH5/WuidTz1lDV1WVzcqeepu05tLmdqlVihudG9HF3/ylt73s4DhKqKtXv7k3W5AUKnHb8xyvo1oUhff+9OnTc3NzZ/z0a1/72szMTK1Wy/P82LFjl156afz+2QOG+sd6nB10Vy4u1WdyvU4AKiBqg3B4Mf/1f//hBx9/tstmvgzjeaaq1tpWa9E5B1ERsY5XzqaeGxIqapovtJTkvje8+r//0ddxnPK60k0aQBAFQzyxVeD2n/8PS61uavfcXBgSCA5ZR4tMM2BRefTX3vP6e191zeAnLm99SUDPpfs7R4997dtH/u7BJ//+0WNHTna7PMK2XiufDVAoExEZG2cfqypxeKGC98hcAxpUFRJUlZdFtlBLkNzoWN3OTY0fnJs9MDczOTH+PQeau3fvziyomuqsANACLME9PwCuum/2II752fjSpFCFWek87PPx70+LAzh9+nS73Z6fn3/44Yfvueee9R75iy8qR1+aZcCNvwGUDWBISxH1ZC2DQ/G277v08Udv+NjffmspMBOpwpisM8jQZnNg9pLV6jlh6elffN8P3nRwD6QNW49dAkrxDJBeumgFHUffJufZOt7tdpeWlo4cOXLNNdcYYw4ePBi/r32zO2jZHzzGAvGb/ccwnl7V41utVqPR2ICjiyoC148slv/dh37/0SMtX0hWp7GRrFzqqKp444zNrCuKYrAf/UoIW+s7pu6u2TP5/vtfZ+AHWTtXa+p7H8FLWP8lKrEq1WYyEalisCOQLl9ZmRkQVQqhtMxgs392dv/u2Xte+zIBTp4uDx858swzR7/03KHTpxeOP3fyxMn5hVa7KL2HqJKBU9GqiIWX9z+z7ndH6o3x8dHx0ZGx5sj42Ojk+GizMXLV7trE+Oiu6YmJhnUA1MfCdkCALhQAwwvIwDCUG9QbJBQ03uQzAAWcAhpEgoKJjVIc+7ziwSGiSserTGbc+Y8J9D179mzssF+UUg7AGBNnAa/4CO0GygtFgwxDlBAUFshl6Wd+7K7Hjs1/9fFjoQQLKWDIAltbw2KzznzZtMH/0jvfcPetBzgAXA8KIwURM1mQIBpRkB1ciVF5V/XeaJ/15cjIyA033BD/WRUR0rKBYhVix6dXSSpdng6BvjrW2FW74RpHJnz220d//ff+9MRCSSY3tTpb1dZzmW0CUA1EaLUXjTH1er3wJa/zWipsbLfId43+4k+/d6omQKlSX8tLxMoHYsRpL0nKNx1VVSgRGTaqJgTQIJ99BiCC6AIrSpk1QICQqeqaVHeP0ey1B/Ta/fcKerdY5OJ9VqvjO0XpfRHv1AEwc5ZlMbee5QYAxw+UasyFLNcxEsCAKDgOj471YwCgIAJbUO+WFFXOxPDy1+JBVFLOABswJBr8LJ/IK95Vx1OuShS3Wi3nHBHFrOaGuTi6Pc+GiE6dOvWXf/mXVWh5prUW5RZoEAAGWRP3yk0mOjKB8MGf/cHdo+KtdgFGWUO8tsfyVUOciZpalml33U6KhiRISYbBpgxirdVQGtLFbF+te+JHX7H3R9/wPcxWGCHehZlseV+HQTbG4+Ysb+I4t7p67/GLD3/4ww888MCxYz3voXgGP7+Svu2EfsE6W7z6yxlFo2OXQktnFCgBDwjUxxvV5VxgL4QpJXZYlkAZfQcDUAb/wf/09V/7nQ+fPNFhtV66xhXd7hLZkej7LOCgZE1GMN77ATqufqlEVtKolDKSKSh4751KAa7n/K9+7P5rd8cO6DpTXMbK9AzTbUxuFkVBqah8s/ECZzL1SyS2hO9KZqicnVp5jhUxoj4SiK0xBmDAgRnGxNwFKH58LcOBHTgDu3jKMKFZtzPj9T3T43O7Jg/smTmwZ2bf7NSuiebESN7MTQZkgAWotw1rQBbkQA6wAMezxzCYYAAb/6Pn9zaXPy+2enzva66BcqsaHykCwAah5Ue+gH7/mfhZjmYkMbswuK56jVysUg7g0Ucfve6668qyjBto8VgM8EqMiAGIJq186Bd+ai5nzhonPXVCJ7fGsrJ6hu92WmzQKQpeeed9JYoQRI0PpME3c6O+rcYWpob5I9977WUfeN87fLcLCEGfv7yfC1o2GozJh7ivjT4hLsvy1ltv/eY3vzk7O3u2F82GYQJEY8CqZAAnagshkFUyQhQAr9AQxb105DkI4BQG2iXF337z6Hs++L/9l7/8r6fmF1yWiwgQ2zS4/4K0Rrwby0KriQVy2XOtkiH13HXt6ER47h++876br9pHEkAiClGsNA3ubDbvgCVegNLzCT1VJRVAJ0YHTcO5qIka3el04luO8dPZn8f4nVivcoala5ZlmzKy8eK+u4zeIzHNVF3ZBlfOCTqKmhEF6G++fvif/O6fdhtTvliwRUlQ730tr5PhVqewWV56b9d5hJRgXb3dbtcch2LJEnubl8hunvH/5tc+ME5StwLiEFTFW0MDfHfjfkg8CcqyzPO8v+85XsCstTHptmmJguBhXrCNEzG9f/UyhgqOd6q29OoQwCT80JHTf/ifP/3JLz3gTLP0hXUZ2HZLT0TMCKXPXRx9tQ5aAVNOfKtV5iPB5rlV3ymCmPffdc273n5HXQUaFAS2sWZ8pbR7te1JokJUBnzf+387qKHlbazEphBUDHEG30bOpKRiUH78t35uujG0N0CV4PQH11Uipfqi2uR8+OGH9+zZ02g0NnfI10UclQOItcmR2MseD+uAKJXhAZRMgLzq+rlf/8l78taxTnDCDq6eNydaReh0OrXMFkVnA9kr76VoL9YcG5eVVKd6s4awNy/++fvfNc6oO473jGyMdbmubDwSPS0BMPN3v/vdaD8ffxS3Cqth9vH8WO86V4QZgCgCEATihUQMxAcGAA2QEmWLQgGgBApnofbL3zj8i//zn7zvQ3/4yS8+yRjtciCbC7hTlMaYWD97Ts+cVZnIeaEEGmMUPIu0PFuSd91x44+/9Y46ELotEAgxFFpr4psI3idPxC2BmUPfBdWQZpbHhlfH0VcS1p8YiFtN/ae9iDz55JOnTp2ampo6evTopg9rvFi3PStqtdri4uLx48fHx8eroxNj2HM/QRuGEIDAbNB93Y37fvk99/7WH3/mtDftIpShnB6f6CzNQ5RJi253vdc650zO8L67sOg1b3aL7r68/Df/7Xsv3ztOvdsxirlaCIxb8VLRnzuLDsW95S8XYgK9rndr7apV9uuAWESiOlqOt20BKpaNKpWaK4Nil4QPsjT/53/14Ef+7oFvH1u0Wg+twjtkIyO6RJ3Qca5npB5nxeV5Xvour1ycc058WRiblcZxzaiXvFx6++tv+kc//Fobb+SzGshqz6UmVkqsSc1jqodokANXYgNQb94NqSoBRDraqF/cAeNAqkg8bmNiuWA8lkpHHY8iPjEx0Ww2FxcXq9KyzeWil3IArVar2WxWjomx52WlBxfEriwypwVMKaaWm7tedTWLfvB//0/gvNmcOHV6seFsWXasYWXGOgueSdFuL9VcVq9ZhZ+oyz//wHuv3TcqoRQwG1OWwTgTN7oHdLTEMyBqdNX39eSTTy4uLjabzSrqqVzL17XIAShA3BvSICGwxt1C0zWWFRkLVI+eWPzSt5/5xBcf/OI3Huu6OtqFkClrwY5kI6UUS2XH8ljeWD6Pg/fesmHL0PUWqsAjR9kSKTrqxp2+47U3/qMfvcPAd7xxlkC25y8XSmPMGeWGAxgwsi5x/vR3MOyamhrimLwKuaKUE1Hs2IgJcefcRz7ykZe+9KXj4+OnTp26/PLLt24lwyDls7Ozqnr8+PHJyclVG0ENQM4CIQN7ZgV819/56muauyb+h9/6vdMdcsttV2BTCmMVC+yzXp80mNpSkKxcOjhd+7Wf/YnrLxkL3Y7JM1VShXMmCuU5nIf6iPWn+kIPyGazefLkyZg0jw9Y19rWgg/eEMcdGjZ5IAqAADUN3z7y3Oe+deRz3zr8wOPPnF5oG0LubKfI2YUad0yn0ym5ndWz3IwVXVETg3FrbS3LRSS6nK97QcyNxmjRWcr86fe86Y733fMKo96TyS2pQhVgkIZo89L1IV/ZL7SfJOVbRM/Pr9crH0jD7tkZaFivMcPFRRV4xY4NAEtLS3meHzly5KqrrvrKV75y//33b/UahkHKARDRgw8++IUvfOGuu+4aXNljcDpgzINdN1gr3VKzmgW6r7pq77/9l7/0z37zf31m3luyvvTELLzuzYSyLFEbNeD9o/iNn/uRQ7M1+DLkNUBUlTiWqJYgQDyMHbxd0a/jqtput5vNZv+7W4tF+LpwsU1NYYxVoqMnO1/55qPffPiJ//qtY4uLi91uFyAYzp0lokJ0At8NWmtLHRnVMjVl0W23O8Zm4nNniKgsC7UGyiLi8mzA9sA5ydTPtzk39E/f+/YfeOU1UChZASw8EcfmKkCNsSKwbq35x41cVBJrQESInt9MVtXx8dH12l5eRFT3xFWl2Te+8Y0DBw7UarVut7vpo2AGMCRSDuDRRx+94YYblpaWzqjsOcugdczEfoG8+j8AufGnbpgd/fe/+jO/9Yd//jcPPO6NU0XGHIRj1y+xEpGCPUiJ87LLzAopvWdmMllQEGzIR3jp2Guu3v2rH3j3TM5A3Ik1fRbN6FntnKXAVetX3BA/I20SQjjbXmd1L5rl2woCjPbldLQEUdVz3GtQJulCDx878cAjT//9w09964lnDx87vVSA2BoE4Hkf5pg8YaBLdQBOA0LcgTDExsXfq4CCjKsmZmgQ0kDGCcgrAyAVghhCV9jBGxJVVlvrdsp6Dg4t7xoH7NKv/YMfuvXag957Y62UPrOo/NyBXm3yGvzQhIQDK3vqEktgtZIKWDYXwxCURWHZliI1yehKd7oYOB/9jGKP/oTh2ZFKf+pmXd7L8WUrt5OqJ65/AeekCg3PiBHjb6/ap5966qndu3cXRbFr167Dhw9ff/31a1zYZjE8Un733XcvLi7GevvoMdZfoVj9CVf6mwU7AWAmlw++/23/8aN/9X/95d8u6OixhU7u2Flmy+KDlAWgGbMxVJhR4eB9t9bMDVOn1bEwhjQvjr/7nXe/4003NgFWQRBbq5cqbg1xSaxF0RWmPcQ98fW2EpDAEgAPBAQBsydbglgdK5igwKkuHj783Fce/M4jh59+4BvPdH1ZBPGgABXAGrVW/SYNdSHjyjII1FrrDIuoBg+RJpuF0pOr1TMrrYUJZzoBhWteP5v/i1/4wCWj0FBa67qF5JmFL8/zzE1R+RYR9zyZOfSGoGFiYmLw46uP5Bk6jr5Ipb91GcsF2jGVUV0Azvn6lXxXLxj/Gat443f6Lwz9l4f+hhURiduY8XfF1p74MBHpdDqjo6PPPvvsZZddtpGjthkMj5QDaDabRVFE59v4Z67+DIN1HEBX4YCG8dDw3nte87pbv/c3/+DPvv7Y0YIAaOE1CBvXcJY1+LIsrTnWaSPLJ8tuvlQUEIw29bJLZ375B9952SVTdaC9cLLZHIdxCvAKNofoK0qNX8TTqD9k6GcjLWGhhLGBLWDZgiAWJWn58NP+0SPPfPmbj3/9sWeOnlhsx+pvog7XREmMsdYaqAlBQ+G7BXhzTpVSyGbOEMQXRbtwbJy1quRVRut5q9spNHO10cXWwkQdb7n9pT91/ytHGFaKeNkxGSsAs95y/zOJ5gSaylc2G1WNaUFQbAqWvbtnB0TO/fnD6p/RdTlOlI0DY8+IbLd7wpgAACAASURBVKKOV+O0Kjk+myr6oeV5Nf0vFb9ut9tZlvXfEEe5r/p9YvNKfKmyLOfn50dHRyvR34otqw0wVFKO5UnBUbWjr3elj4PLPGoq3DNDcyI4uKv2b//Jj3zzkWd/5y8+/8SRp5ZOLrraiHOuaLfgu41avmDHbK3WbYU6/FRNXrJn7P433fK6V9zQEBAJEJqjo1AWhffBrbwX199cUFlZnfPk2GCZioOiZLBX++hTp774rcN//fXHHzry7MLCAhGYiEhFCeyEXSAeoVMCiLIGpyCAYSzDiWyOR40GKUWIlaDGGLKuBBchQFjhgV7T0xUHdv38u+689apZA0A9oPABzhEQglpzXkpO1Nv2VNUBA5sSG4BgREPl/q+hnJmZGnyI+4u1osFyrECrVJWZ+22ZKxPmfiVdKSqvgrn4eCKKXcexaiC+eMxbxoa76kd44WiIv/7rv77xxhvHxsa893meLyws7Nq1a1OO2GYxbFKO5du048ePx/k41e3V4C5QJgGxqBMAjKLdbdTyl1069Qe/cNfhoyf+v68+8um/e+jbz5xCVvP5yCkfxjtlCCcO7mnccOW+O155861XX17TnrWuhMCGQlCFGqLMGV15Bz+ex865av7DIBu59dcderi/f+zpv/rqI5/9ysNHnlnkrOFB3aJEPk4aKJSkniBEglCAwGWDiJgghoJIQFAUQrTeevCVaNRdKEvVwMYKoVNCDZu8RqEUwxmU2yf+m3tvf899r6gxSt8GZUwIAdbVFSCFMRR8YewGOywUCkIIYYOXxsRAiEiCKCkTQcVYGhsdGRCVV40R8dzOsuwrX/lKtISLn9aov1XtNoCo49Xn5Yx0xxlU01TiB62y4K9WG68B8T64MhPHsrF4DL2jX/TXvva12267bdOO1GYzhFIOgIgefvjhL3/5y2984xsrR+DBVu66LFUMZaitOyhgnBLm9s5+/97Zt9/5qnaB73735MLCaRVp5M3de2byBtnluM4TyMCA40CDQOqYNICik+fKd2HxBM3zvL+H8xwr7LsDXTv/4EP/z2NPPtHqdAAQKWtHg2cjrj0v7MTkYurMzBpYuyply9aJiJlAAmJW5RjGblIqYmlh3jkn4FLVWutyE0LQshtsjZaOv/5ll/3jd/34JRM1lCUcOZuLMgiGbVEGVc0zC4jZ0CzTflIx4hZBZIDnnfGbI/VaFlvizq3n1eD1Kn0xOzs7Pz8/MTFROXR2Op0sy2h5ZnFMksTPS/w4xHvxlZZUdcwbY2KgHX9XNHAG8Mgjj+zduzdeM/orUi6ui/1wSjmARx99dHp6+i/+4i/uvPPOWq02+NINQAANsAaAFt12ltdFBWCCkqqDECN3mNjXhDYB8ZRHi0wE9DwwpQPWUkaizjiOJwQAsFnx91Y9BejbgdlE/vVPven3/uSjn/jyQ8+VGWWjhUqQhVpuxIxbFZZCipYIPBm1jeAaxCdJ2auycpxDrjAgA92cBEuj0TAu7xSl994QSDpUtHJDVx6cfe/b3/aKK6aMluo9uWh9VzJxEISgmTPLdtIcZEVr/zWymVYHiT4ESoahrKqGdGZyOg67X0nKq9RHPPk/85nPHDx4cP/+/fGn8WPbb8URw7JOp/Pss89ecsklscChf4BD9cTo6lUUxbFjx2ZnZ2u1Wgy9vffxWVmWee87nc7U1NQzzzxz6NChLT0yW83FdNlZL3/2Z3926NAhIjp06FDUykHVSxJARqlXumeBnpMruOckDkQbqQAEIItzoCRUxX1go2ACvC+sjWaYXBZqM8JqB7q/sGkl+o0S18PikuSPnpAP/5e//cRnvuIDWWuDlEoEsEYDExKjAvWsQqamqvGdK5ESq2oQOd99xmVEhIwNAkPM2q2jePmNV933lje8/vIcbAK4KKVuo6+/CpHRIAFsDeLRZgrKSuvehFWA4CHWc7BiHvjOUz/5G/93iUH+uokNICAlceICtXIeuf66S/6XD9ytUtAK5Yj9BYiqevLkyS996UtvfvObB/+WRx55JBp1VGnu+Nmpihp7ixFpt9tlWS4tLV3A2pLtYcjP4wceeICIHnvssbvuuqt/Zkd/v/vmNr4PoNpMrxx2+nV51TXE+824+P5RUqutX3zZNcaAs6dPdj7xhW984vPffOjJZx0BZARUaACQZRkRiqLIjAshRP9CMhZkegEOBY3TyftemoigHC8JABRMxEEVQA1dUQh6BikMNSoMXTLWKhlf7B2rvf7l195z+y0v2TNi4Dd2g9j/3lc9DgBDUHA3Q/7VR5/+mQ99tBMWzSbtASQiZRlqmQ3EXLTLrPm+2w79wx+8Y9VPV0yVxJN5AyOlEhjiBEvk+uuv/8hHPrJnz56Pf/zj99xzT5S/Mxpwtk3KK4/5qoezKIpYYLOWBVQ+iNUl4Ywy2HPiwdbVoR6+s2/cvPvN3/O2277n+Hzrz7/81Ff+/msPPfoYs7UuLwovIsZkS56McdYSQTR4ki4AJgTkceRufFlVVQEUGbUBaG/INQO9sYuFWgJUg4EKWNkUMEGxx/hbb77qTa+6/qYr9oxlCpAIOsHW1llmWd3HnBGRrZGN2TQmVmW5AUdz5wrVibGmrJYNq87nwaPjEoMZcikHcO+9937kIx+58sor4wC5Kk0Rw9vBZS2bSCx7OsPOOC5ggPnXGcQyLOdcLJ+v6iwHXI1EoAwiVol9lTLuMD5Bv/SWObzl0hMd/dYTz33hm4e//tjRJ4+eem5+qU5tWk4zxX4lIlKQUktVRZelk5gtE9GSrxFRrzpQlyN3AUKXXU7GlUWnxv6KPdO33nTldYcue/W1+ySAqbQmAAplJl8zG/kTVJexKt/aP3t6JXqjd5OObw3GkA9BiQFhhJmpycFduFUPTnW7uU0LHTqGX8oB3Hvvvegr+wshVBsgUcfX1QG8MWKZSuUw1e12nXNxI36Nr0BE8/Pzx48f379/fxSs+GqDN0szgoiAGFnj+SZ+B4UyMJ7rKw7NvvqqvYAgyOkTx//qqD323ece/c7hJ5469t35062udAMKRc13mFmZmIxAReCDqJLhOJhcIIE0ENQS2PCBS+b2TI1ce+memy6fu3zf7ORozoAAJpyGqytcAIKCAENC1AXWehwi8e8V/4JE9NGPfvQtb3nLYB3vt01MUfkWYYi8qrE2+A6zmZ2eGBxmV7enWZbFAGV71jl87Agpj8Sb8f7OsaqkdBv6tWIwW0XlMdmy3huC06dPT05OxgVHQ+Q1PEnip6PsjUxDtPR21UhaZhBUSQzXp2fumekCl4AuB1wgnO7osROnTs0vHFukdreztLS0sNQqul4IxhhjHPnF3JlGrT7WrE1OjM9MTc5MjTXrGJEu2AVw/CUEJSmN+q4Zs4ABrA8gguEC7JFvYBp0vEcpy/LUqVOvfvWr46V6jVpQ9ZGt/9cmBhFCycxB1QGQcvf0xIDyFSx/LiqH6nR93TA7SMqxrOZFUbRarYmJiRihM3NsN9jqXx3zAI899tiePXuazeYGEjsHDhzw3scQJl5+qrFwKz1FgjIzCI4klrgDCg1BatHTAgQflAwpSA0DjJ7MBQOarGFybhxz43EaM8EsF/HFIpPeNFvVoCIkgaDgNpQ95wYwKJerGJ1yFpBlva12D1sCgJqMbLZ+H3MAzjnvPTNPTEzELtk1PlE1JVi2ChExea1bqjGGVafGM0ihJlvpzxs9UuLtMi3Ps01sgB13O0NErVarVqtVc68BbLWOA73ZtZ1OZ3Jy8ujRoxuOB621nU7nqaeeihO7V72fIGvAFCcBQQUSoIrYmawKDVBvORgtWbwJpYKVDLHtuQ5KgHiIZ3EsjoRN7z+YoDZotDEhMmwMuQwuh3EgQ0AAPFyguqAOEElhpUPBw3vvxaMWUAdZhABZt1lXCKEoipjNH9whck5SVL5FGCYREYIiTE40bc9yc+BTjIlWKktLS6nef8PsrKg8Mjk5ieVJx3meRznY6iRdvCFoNBrnP117YWFhamoq5vpjQc4ATQ8xcCYDQAExNsTxygATEQggFSFy3Gt56lXQ9yY1Lx+Wcx0dAoSWUygaTWup91ijseJ++dXIBDIhViWCrFYfcA6GdUMnYswyVZfhdd1apah8izDGdIrC1Zu+46emppZPh0FU9rN5nne73e1Y5TCy46LyCuob0xOTdPHmrigKDNwWO+P7Z8cRMdI/+0dVDeJ5cvDgwWazeerUqYceeih+p7+Q4wwsQMvtRSpigAxwIqaX6GCAiW0vg778nd6CAbP8H537P66+ZgLT8z8CGRCDLMhGP/H4q3vRft9LmLN0XJfH2uJcHfbdbjdeuvI8j43X6CuEWBEVIYDFIiP4gEwYLCkq32RaZTluUQQPHr9k2piAQPladj7j53F8fHx71jl87FwpBxBFvNoOBRDbeWPDQr/nQ3xA/Gd8fCUxsa7Re9/vyxN/Wpn10DKbuPKnnnpqZmam1WrFf8ascafTwQsvNnEMW+UeF8eBvwiJa47X0XigKjvpyjIJy37F0b6u/+mp8uFFgjGuDN4aCiHsmpha1UW4OlejN/WWr2942YkJljOoRCHWQkWxqPxmY7hXNaRU1W9VQuOMyvT43HgZ2FJHnjimpPokxDVE07j+XxpzDro8NsUYsw17vBumv5qw/7ADOHnyZLPZrNfrLxJ76MQ5YWb1sVhKd++aBK2yo101eaXylfMkXQafJ87Jrlooq421ytsay4N+4ndinBjt1qocX+UmsRXeWGdzxq+IQbcsAyCWB8Ri9hizvzh1PB60uG8Rv1OWZbzj6XQ6nU6n0WgsLi6mjcoXOarExsB7Y3VmfBwcZ2kPovqbpj/u+ZCk/ExixB2lnIiOHz/+sY99jJmjSlY5majjZVlWhsjxO9HjbXs6SKsFx8/A0tLSs88+Wy2yusOI1ZYAojkcXpSbfpULR7SKjEWinU6n2pFuNpuzs7MXepmJVRAlIRgVobBrYgwQWu1063e/2o4lDilJylckz/Msyz7/+c9fddVVR44cqZw2qzOv2p3LsizLslgYe6FWS0QnT54cGxvrdDrxShNFMMa5ccwplvM/L0Ipj94ycZGxDzauPxY2nD2fOvHiJKYWa9YAsmdqHKSI6ZYVqEpCvfcv2o2ci4KUK1+F+++//0IvYa0cOHAAy/4EJ0+e/NznPnfffffFkDY6FlVJyRfhnWzckyjL8sSJE6Ojo9bauCdxodeVWB9ELNBMxTXy8REGSqhZebTt80mVpaWlbVrikJKi8mEjJog+97nPXXXVVU8//TSWh4XHInQs99dd6GWeSYzmQghZli0sLLw4rzeJtUBE4sPISN0ZAAINq/4lvfetVitF5edDisqHk/6biRinV7exMf6NEXq/ueAZpWBbZE0Tf1E166ssy0984hO33nrr9PR0NTB3SyBmBZQDlwbOoGCB2uUepsQmYaRTCGk+sn9qxsqS5xFrVq/et9ZOTk6ePHlyO5Y4pKSofPiJcXqctlEl0Imo2+1WyfR+He8vRcdyVcx6EZG4D9y/tVBN86q2GY4dO3b55Zd//vOf39y6+8FUv+dFuGdwsRMDBR/KXZNjiGNH1raZWavV5ubmtnZxQ02KyncQ/W7plT302X0Z/dWK0X1wA7+rKqGJr99ut7Msq2ziy7K8sDuZKXuzRaiqYaYy7N81Do429unGZztIUflOJNrtxq3Fc2alT5069elPfxrLPUcboyqxj91JsQPLOeecu4A6vuz/tX03ATsKJSMiBJmbbACGFGBO9z7bQJLyxPO+AhVf/epXL7300mPHjp3ny8bY3FqbZVnll/JigF44zzexWRCRBEDD/ukmyNKqnfvLpL/FeZISLIlzcNttt13oJWw5KSrfCpSYIEbC/tkxD1iiVbs9cS7TtMR6SVF5YkhYlzQnHd86VHWkVt812hAFINBVkuWVUV3ifEhSntgpJPXeBmKFa2OkZg1A0DVodOx72Ia1DTdJyhPDwKqRnYKB6CPPEGSWiAbNnExsDBNKtTK7aw/QzQAiG9iZ1YpYolnQ9qxwWEmncmKHkvbZtghmnpporl1bKp/bLV3V0JOkPLETSfKxRcSjesnsJJS0N/k1sR0kKU/sLAiEOCEhReVbAovIwV2joF6/gmKV6pR0Td0UkpQndgr9IWLKzG4RShCRfRO5oneEabVL5vYMaRl6kpQndiJJyrcOY8ye8ZrQspSvQaaTlJ8/ScoTw8BasiX9j9nOMU87jVpe3z1W1+WpQARKOrMNpEOcGAai6ePaHx9NvlIwuBVkWVarO+kb8Ja2JbaBJOWJIWHVjkEmqwwTSBm5CnHQ1C6+2SiZS3fVwZwpCmtBJSmD1jqpObFhkpQnhoEzLNcHEFVjjQ9OrBdmTI6ORGFhAGuQ6BSzbwrphE4MCeuyZErbnlvH3K4JEKBKAHQVb8Sk45tFkvLEMLD2qDySpHyL0BAu2T0JZQhZAMSqg0LzlFrZLJKUJ4aEdUXlsYIl6cimIyIHpsdBUIKB157CJOPDLSdJeWIYWO99urUpKt8SmDE3PSoafSiDrGZIGUfLbtPihpok5YlhYB1yQKQKY1JIviXkLts10VCNG55escrOZzXOO3GeJClPDAPrDe6SjG8RzrmGc71Ul1R/khX/NN1uN82d2BSSlCeGAREpimJVUVAFEJigAdZaTYXlGyX6kfX6OZdh5pccmCxLzmipSwjcdOJB3UJ6kyXOuNyqap7naRrcppCkPDEMLC4uYj3bmESwnNLlG0dEonZXA69FJISwa3IsTgRSgBVQAtitLDPGmGazuV2rHmaSlCeGgbIsDx8+vKqU9//cOpPO/g0T4+tKx+M/VXXfzCQpQAxI/Fn/s9L+xNaRTubEMPAbv/EbJ0+eXEvWtadBgHMuFcltmJhRicF4LOqPzE2PQAElE7c7ic7YmOh3y0nKvokkKU8MA7/7u7/72te+dl1dQjWXrWYNkliRqOPV1/ELVT0wM64KAVNPylnB0BdkyfsVPFUibhZJyhPDwypR+QvrKZwzmqLyjVIF1zFdXm2B7p8dIwKiWbkCqgKAzn2cvfepfGWzSFKeGBI+9alPrT0qJ4JzjlNEeN5UOs7MtVptplkHoTdCSFXBAEPPkUuJ26RJyjeLJOWJIeH1r3/92nWBVE0yRzwP+jc8Y7rcOTcyMuIsQeIVMtYpQgHIOZqAqp3SbVz1MJPO5sSQMHjaLylK8iQoORbI0bjrdkx9O1c4TGgIwshtveM7jqyzvqPZtbsdyMKQASwYhsCwAEzWL9xR+o0xydRsE0lSnhgS1lsOYQzxYAPWxMoYY8SHEEJUZBERH2anJld6fP9fJ6bXi6JQ1Vqtti3rHX6SlCd2Fj351liMmDgvVAMRiRKRgRRzu6fX/tyUJd9ckpQndgq0bOxECqjW8/zCrueixosYQ4ZZVXuxObB/ZmLVJ1YKnud5muW0iaRDmdhJVAkVkjx3lIoRN4oqEREgRCQgVbUIc9Ojg59VVaN772Pf/7YsdkeQDmViZ9GLzRW1LE/dhhuGmaGqPjCzcVnhfWZp99TYmp64vP+Z7G03EXuhF5BIXBiy3JKmqHyDKIFAIFElsAHQrNcmm4P2MPtLjJxzCwsLSco3kRSVJ3YeBEBSJdz50MuPE3svImJtNjJSZx50aewvRVfVZ599ttPpbNd6h58k5YmdAXlCBgMWKBDgpnOSwRNuEitDzFwsnaKGZVeXU0HM1ZdMDtaTqhsoGuTu3bt3aWlpWxa7I0hSnhgS1jtFyBmbcuXngyoxg4i8hMyaydFBtuNxn1NERMQY472v1+uHDh3attUOPUnKE8PDWtQ8yjcBeZ4nk9vzQUQsA0AQtoz9s4OKyq3tbcvFcn5mTnXlm0uS8sTORGv1fNktJLFuiEgJkMAgYevL4vL9s4OfUhRFVPBIuiXaXJKUJ3YYywpSz2uKNFVygxARwZCUqgqTa9m5ZPfk4LuiWIZYjZFLUfnmkqQ8sUOoHG0FqqSo11O358bpVRZKAESYR3I303RYeRu5KIqYY+l2uwBCCKk/aHNJRzOxo5CedzZrrVazlM7/DaJKymQZRCQws7umDQ9KV2VZzxyxVqupapZl27bUHUI6lRNDwnqdr3PnUrZ2wwgBABOIqAw6MzkBXSVb1f8HinUsW7rCnUaS8sSQEH2dVvwp2KKEckGAIgCzdSo1afkGMVDS0FUnghyda/bUC3KMQd2bVUYl/pnStufmkqQ8MSTEyuVVH1b5I1prTUqwbJQqxGYGKaanp9dyKKOIp3h8K0incmJIWFpaarfbK/20pzyqUcoZyJ1xJgWG54EyETHA8Jfs2wv0DcI+i7IssSziRJRC8k0nSXliSOh2u08//fTgx6hSPOcVyow8S9MnNo4QBCTijYZ9u2cIzxd6nk3sDOp0OnEW6PatcseQpDwxJCwsLBw4cGCln0aRoehQrlANUIzUUj3iBmEiZlZV8aFRs9NjOQNYOWEV5TuWrzBz8kTcdJKUJ4aEq6++utFoDHqEAgSFgsBEIIw2Bz4+MQgBWIlBumtyvO5WcSar9jyZeXFxcb3lRolVSVKe2Cmoak/K4+Zn8GOjIxd6URcxUYwt8d7ZXQwAAh2kJzES73a7eZ4XRbENK9xRJClPDA+DY734U+2Fj4o07v28UVVjaGpyvDqmAx9psDzSc3R0ldFxifWSpDwxVPSreRxxEL8mCHNeKmz8jkrXuZlaqqPYIEGYONQ1nAbdvH8S8BDIytue/VUrqXxlK0hSnthBPK8hqgQ0kg3LRmFmEaiqhe6anlzLU2JSJVYlJjadJOWJYeP5SLwvEhQoAFOFhEIAxkdSgmWDMKkXAeAY+/fMAgCt4o+VZVkIwTk3oCk3sWGSlCd2EFR1ezIxMDFSv9AruqhhAI2cZyfXWp5vjOl0OskTcStIxzQxPAzY9iQYKJ4fG0QMhPGR5M+3QTR4EBPR9NhIvqwig1PgMbUSS8u3fH07jyTliaFiJZmQ+D8VQJQAMEMmU135RlEEsCGig3t2QaFx82HggD3nXNyIrobDJTaRJOWJ4WH1cI+ej8wZmBxPdeUbxBILWFUPXjIHFVolIu9VE/UGq6YKli0gSXlieIhDIwc/hgGRXi6gUU/bnhuEiKI6756equ551vKUbVjbziRJeWJ4aLfbIYRKL/qV3QCwAByBHQNgwO2dyBkiZMHGoLSMQo2yywb6bicABKgl7jDfMhPU2K5YA9GB19EqKk9sBUnKE8NDWZZHjx5V1dgjLiKxWGJA9VujXuNefPn8vX8KHlcl6rIjnZmZAWAZKjKgHLHS8XRst4gk5YnhYXFxcXZ21hhjrQ0hxO21EMKAWQfT401Ans/kkgIIKzegJyLxcO0ez8cnpqrvDNATZg4hFEUxwFM+cT4kKU8MD5deemm9Xsfy6Mi1DB6bGR9hCQqOBq2sq0hSIhKP6qG5KVFED3g2ZsCc5nhBfe6551K35xaRTtnEUBGT4/3yHW21V3r8zHgDKkSkZAAlCCADRigkIkTkvT+0b9r3LG0Eg4YIwRhTFMXk5GSKyreIJOWJoSImyrvdLpblAwMD812T46yixHFis2rcNU1SvgpEpOJfsmecGYAwKTBITlQ1yzLn3Nzc3HatcWeRpDwxbBBRrVaLpSxZlg22xp6ZGDWM3ranKoOYSJKSr0Y0rb3ywGzv30SQQc4qRJSsV7aUJOWJoYKZ4yZnlVfJskHd+aPNOpFiubKiF78PHKGQACAi1toDe3d7BVSgAqIBpYhxYzlN9dw60imbGCqq0G+NpW+XzBhfjpDpMnkvIyqdnKUIKSxfhUC166Zzk9katSVYiAWFAWoSo/KlpaXtW+IOI0l5Yqjw3ld6sZaelInxccMUBT+G57H6ZYuXedGTO3vpwb0AAMsmbi6YwZfNw4cPpzlwW0eS8sRQcfr06SoSN8asOtl919RElgnFMjpWgqkaixKDKDtXHdoPAGJBABRqB18A5+bmTp8+vR1r25GkUzYxVBRF8Z3vfMd7XxTFWuLrGmG0bpitKlRFmQFQ6khcDS4717zkgFGIkMKD9QUewmcRQqjVaocOHdrGNe4skpQnhor5+fmDBw9aa621zLyqhZMBdu8aMWRJVFEyZVguTk8MYKqZXbJ3igBe87ZCatnfUpKUJ4aK66+/vtlsYrnAHKt1e5Lovn2TpCAySgIwgRWpbG4VrrhkpsGACggKAwgINLBxPyXKt5Qk5YlhI8bUlRPLag+nA3tnYiU5MURfMBE0sRI3XXc5KxBKIPRa96kcYF1z7NixVFe+pSQpTwwh3vtK0FdREJWp6XERIYrJmDQbYU1cfeVlDEABrpJRXlfOS01OTqZKxC0lSXli2AghMHNlb7uKLjNeOjPRsVkZgkNNilOU11MqoIL8gpic2YYQgs2dQVYujDQnXnX5HoYiywFnAICBOpleQrzyzKrs4621e/bsuXDvY/hJUp4YNsqyjFIS3fiYedA2JmHfvr11o9baoigajUa32x3cILqjsFlDfCkizhCLbwfJGs3rDs6s9Ph4a+OcE5HY3E9ERVGsWhWaOE+SlCeGDe/9wsJC1JH4nUGBuZAl7J9pxH6iGEVystNaJsCpFEGFCRy6nmudQLfffNmAHYVomhjLh6KCl2WZEuVbTZLyxLBRFMXo6CgRVX6qg6ScSUK4dt80lscjGGNSMWJF6eEsEymrOARjayGE77t+3+BnWWurvAqAPM/TId1qkpQnho1du3Y557z3cQzF4Ft7BYj0xst3xRAyc3kqf+6nd3PDpEzMrN3ulZfO7Z6qD3hKv2W8qsZ4PFaIJraOJOWJ4aQ/MBwwuSYAzHzzob1FURhjVFUCePXx8TuFjMkHFfFKCGK4u3jXq16GlUtViqKIG86VoJdlmcZNbANJyhNDSIwEVTXWojjnBj5cLp+dGJ+cyCwXRcGrNYjuKCy0VBaCkO2IOTBZf+1Nl8vKewlZlsXMeGVQh13gCAAAEvVJREFUfvz48TQEbhtIUp4YQp555pn5+XlmzrJs9SytqDF6xRVXVJt1yRmxghFAbIwhY5XsFZfsmZs0SoMqfKy18QDGXYfp6elWq7Vd6925JClPDCHz8/Of/exnsVxjPuCRBlAQOLvv2omWcGHzGi0VA+YN7zC6ahyxFhJKsei+9fZbjKxSVhiz5PH/vfdZlh04cGA71rqzSVKeGEIOHz58yy23AIjh4YBKOBUhtoC+/OZrJqyoD7D1lGCpKH2XydvMhVDOTWSvuPkANAw+OnGfOYQQQkgV+ttGkvLEEHL33XdPTU3FYc1YFvRzwhQCAOa5ifw1N74kMzjdLg0Pzq3vIGxuJRQL7Q4o/PBbXpkjHs0Vc1ZxUByWJ/P1V/cntpQk5Ynh5NixY3meY2BIDgCEIAowFe233X5LjgJkmZP69CDOSMNYc3Q8N2/43usgJWBpZSmP6ayyLGOCpdPpJEOb7SFJeWI4abfbn/zkJ9cQFZIhBZidvfkls5fMjNSyLITUZd4jeM1drWydvuf1r5xtZlDEscwD8N4751T1qaeeSrUr20aS8sRw8vjjj7/sZS+LIeGgXDmsIRERkHEsb73jVaF1KvmVVxBxWfgJU7777luhoh4AiO1Kj48JlmgWPzU1tbCwsH1r3dkkKU8MJ294wxtiObn3fkBgHgCIZ9JuYKi86dU37Z8dMyklsAwhKOE9b3/T7lwgJXInggGD36J5GRE557Is279//zYudkeTpDwxtBRF8cgjjwxOsAQAIiAiA6iO5XjtK1+eKlgqgnR3z+25+/aXo5yHMQEwjAFSjr7+rLThuZ0kKU8MLSdOnJibm6t0OX5RuYLERtAc8LYRwE58HGj2A2+8ZYrmuzQ1Qq2MlzpscltHN5QeMEObQ89RFD4oZxS8IyisVwZJju7PvuOOEQbcOGBJAIkTmZ+f1RmPZ9WKFR1un3766bThuZ0kKU8MLYcOHarX6/GWX1WjiFfNnFmWhRBUfAwde40twGQTd7/htZnpdLwR76jb7UrB9dxlRouh9WaZ10bDEdonTd5olXAo61YE2T2vvumWa2ebBmVrESTMcTAzAyCiWO5ZRd/e+2iW8LGPfSxlybeZJOWJYYaIRISZVTVWOhdFEcPJ6GdLKgQoADIAqfgGcP/tr6jLieAaZEfHahmICkhZtCwPbcNLV4iNbY7Uy7JUIjBxKHaP5e+9/3WTBGjX1XOAvaL0AHrTPGK5Z7y/YWZrLRFlWXbzzTc//PDDF/Yd7TSSlCeGmTjUpiiKOMtGRCpXltjAgp6NX1RzJhULXDJde8dtLy/K0DWm022r+IyNBdTmF/j9bBnjzi8VerKjkGKkXu8iK4v2r7zvvrnJBoUOVAETBEywFipS2R/GoUuVc5mIPPHEE6Ojo/fdd9+Ffk87iyTliSEnRt8Asiw7w4+l8tS2BACqBGaEwkj5Y3fdNjNm1apHYC+29Ll1LR3aIkVTLGSOYDLOm61OO9POz777ra+6clcICpOBa2XgqBYEEGm8HMZIPL5CFHQiGh0dPXXq1AV8LzuTJOWJISfP8263q6qdTidGkVHZe90rxKrKBIr7eMRghspEg37oTd8r7edqzaa1VrulF1Ua2sqWrDEq7XnHoSRn1d97y0veefsNvixhTMeTB9gyAPECDWBi5k6ng+VEecybE9GDDz4oIpdddtkFfj87jyTlieHHe3/06NFarcbMVTd/L0WgTES96jpiBYMsjAPJO29/6Y1z4512GYipZtRk+fBG5a3Cc63pjKWl795+w9wv/+S9VkrrnAEMNG50qvcMDzLeC4BolVVNxM7z3Hs/Nzd3/PjxC/xmdiRJyhPDz+Li4vj4ePw69OyzemZPSr00i4SSCKVAFAB7Lcdc8TM//P2GbAHpkgaQK4e2GJGZFkLWhbntpss++IEfMipgFyTAd50FifiytJaNtQqQtXEbGcvTO6M1uaqOjIxce+21F/rd7ESSlCeGn3379jHzyZMnz7Avj41BAABm4wjIGByLoTmH6quunH7Ha660oICc1QsgZNk6AYmaAEOc+aLTdC+6xEu1DdDf7qSqQrYIpMQKT+q1lMxkiqKNiQlu33nt6L/6uR/MGBCGgrWEzQFmZucc0CtFNMulQej7ot1ui8hqA5sSW0WS8sSOoNPpxH25GJWv2r1iIaIukPnpd715f8NbLZUd2GjR1rJj1FujBCFWttlC50UXrZ/RsFqNg8jKYrQeOsVSqSMunzFOu6EFjEzj5J23XvPP3v8jFAQAGD4ImxWLL2W5iCWG5yGEVqs1eCJ2YktJUp7YEUxNTanq/Py8tTaq+Sq6Iz4YVyjGFP/jP37XGHdExINqubWGmWBJtOz4omuzHGbQBPoLRVRzIuof69M13OlSBmq6otU6UQSnYg06H3j7a/7pT9zZgOQsEoIqjOUyrGJmG1uuvPef+tSn5ufnm83mdr25xJkkKU/sFLrdbtyji1FkNPBb8dHEDLDAkL/uwNQHfuSuPCySzYuArqAr8IC1liGqqi++DvVKx7GcZun5Fjinahq1xlJnCVlWy+pX7x79/X/53ne88ZYcQmUXqmACoyi8Mys6IMZXi+Urqnrdddc9/vjj2/TeEufiRXcKJhJbx0MPPfTtb3/7nnvuif8simKliWUKQDwRq/dkuYT9d//nJ//jZ76hbMAuqKiEnAOLeGUfyJoXXbq8n+qiRQElF6bW8KGeFa23vvbKn//RN41oF9aVReFcBrASSlFHINIB0Z73vrrFib1X2/RmEuciWZcldhBvfvObb7rppizLnHMhhAF7dAJo0WFSsrkEtSw333jFE0eOfeepp0oRzhrBC2kgFSKwc6uMY7ig9Gda6rkTY33RvW42+9c/fd8P3X5DJqW3uYKssSAqfIBhIjCEQFjhhiM2eQJot9vW2rTbecFJUXliZ9Fqtay1sYRuwOaniDBx/+cjAKda4df/wx9/4RuPdewoKDcojXhRqMkgL96S89iESUTMLJ0TM6OT777/9nfcfo2TBZQ5snyBkAWfGUtAWQZ2JmiZkYHyYIV48MEHZ2Zmdu3atV1vJbEiScoTO46yLKuWlqrv/Ey0DOQEcKJgWizRsGBdOs0jv/Kbf/SFbz/bVWegBiEIiclYX9TFG1HHmfkn3nTLfXfctGcEgOsCCtTgETpqauLFmAyAkgiEYaErBeUAcPr0ae/9sWPHrrnmmm17I4mVSFKe2HF0Oh1rbWwRimXRVZnH6hQnF3jyQ//Hp/7i//1iluW5y5a6BUxeR6dbSjDO5s1Op8MIzXrWXjoNW3OGAWgovYDIgEmUzAoz56Ilr6ivSv2gzMxUttlZgINogDJZsFFVCoWaTMEBakAqPs58yHXRq+3CCGWOaO+YufcV17/jza+eHln34YpHqf/rWNMpIp1Op+q9SlxYkpQndiKqGiujq/roynVrMAXggBDwZ5/+u9/500+fDDX3/7d3Zr1RZFcc/597b1V1t3cDM4hVQxIMsTKCJMokClIWKULKSKM85HNFylPe8gmyPCCZCAmRREhRFMFoGGUhoBBpzLBkbBpsTFXde8/Jw+kuN8Y2bmMYA/enVqtd7tq61f86dVZCB+UiRkcykvJRxr5dZCt1LMVmrRGOHizMwRLBGGMMjBUmyPrzi7WIyRij15heGY410bQkBgCWQGBwNGBjTBWRG4EwC+AKIqJYOQnL+aQwF1K/f2j85z849cNvznTaLUa/AGrIz4qI9PMJIehlT1Nikot895CkPPGWEkJQ3XTOqadFNWszrwtQRhRGIJGN+9v1e7/49W8/f1Qv12jnEgIb66LYGCNZQyQGpLazwaoxC4DIbjRTjYxA+rMyCNZmKuuhrnRunXHWWitMIYTAcRyPOR+pxMYQnFQZIZDzyJ3xH5059bPvnzxxcDrPHcRAIoRhhxbfNdc8PbZmgkdil5CkPPGWUlWV2r9VVbXb7caNMJiRvQ7ihbIIIIoz8Ym3v/rdH3/z5089TPQhdybGaIyDy8rKMygz2k5xVbgbq3b97XOAcUTEoGaCnd5DZFlmyXComYOzxpEhokV0Cn7SMbUlU0UeaRcfvD/zo++c+snsNBkHQJgNBMweGTlseI16Hs3B6J9Jx3cbScoTby8xxoWFhX379qnfwFrrvddROButUjNyA0jwZZm1R8sIsrg13/3lub9+/MnfnwS0O+NlWRrh3LJBiKbdeJb1DsAAMXreIF87xNrZnKwR6Um5JRiLAhIEHIVBkUxkAMSAoxAZE2Pt75488tMPTnzrqwdH2i4wsriMrBNhAiMj3Vmv++Own5L3Xsd1NkuSju9CkpQn3mpu3Lhx8+bNs2fPbjHsWUa0LMA1yERyUWBDsDYGU3zyn7u/v/jxxav/XuGs1WqhWnIUykps5pzLo4i6JvB0IHEN1lEMEqVfcM+RJBC4lgyAM5RZ4hgsZHpqYt++fT/+xoHTX//aycOTBESBJVjx4Kq2ozkA8QBFchHIAAoVhhyE1Bzq4uJip9PJ8zzp+O4kSXnireb8+fMzMzNFUezfv199wVVVaU/zjWABEUJgEu+cBRlmGOMhFuRuf7H8pyv/+MNfrl2/s7QSzKgNQSAgshmDYowGlGVWnebPoqFFIaNzRyXWVthZWXEThsN0x8wc2vvtE0dOfeXAsUPvjLUdwmOQAzkQAQLmmp1kthDPYtkYB4BrMEfXqoDOkJ+PRg7m5uZmZ2fHxsb27Nkz5AYSr4gk5Ym3ndu3b09MTOR5rj6WrZjnwVcuszoP1MPqGhaQ6I2xIBOAz/735Oqn/7z4r4XP5j+/e38hknF5oUkp1lpNR3mWnqfeqpu7nhhpv3f4wHuHD3/vQDhy5Mihg+9mBOpX0wuzN8YCFuDVDBwGOMBZARGvlvlIQKiQDZeN6L3vdrvdbvfGjRsffvjhUOsmXiVJyhMJ1HXdDKNAP+Y5mMrS5G9sgyrifnfl1p0v/nuve+fByv3u8oNHj5eelDHGEAI4ZNZ12u3RdifP82NTcbzTfmfP1JF39xzYOzk1PmIMQxi07YDlWvRcBpMvm/z65hyb/zJzjDH1V9n9JClPJIB+oogqmr5QvcMLRvnYo5cYA4GhXj4fyAiAvsHMgHbwQkm9zG8HGIAAZmYOzu2MmA6qtsYzMeAQH7x6NQu3WjyV+FJJX1Ii0UNz/phZ5Wwwk1prZDbJN98Iln5VDnsQAIYwwKCn3fHCEIEIVLJ7OX8WpAr/cn+og/ci2gfYWqv57C9zt4mdJH1VicQqKmTqVWi32957FTWV9U0yTzaCBTywRpNMrj1xm+Ry6rcgJK5BBPWHEwDDAhHYHZosoDcfjSNFDXM9L32teZPoT2FOvC6k0ROJxCqaQO29r6pKu+A2Zf14ZsraVjDwTryT4MAOcD2RBkEMwZreQ3VcIEKZwAmsgDS13BDsS7C4dIiS3mfoec3Nzc3Pz1tr8zxPOv7akaQ8kXiKoii89w8fPrxw4cLKykpd1yEElfhtRD4FjsUKLEQAJvZOgpWgYx2ah0IgptUHek2+eKMq/23Q3FXoixhjjPHatWu3bt2amZm5cuVKcqq8pqSvLZFYh7m5uaNHj05PT09NTWmaeRMkHIq6by4RQKIv1MURgb6HRVYnPES2RKsjH3pLVz3uO4B6jTT4ef369ampKRG5f//+6dOnd2oXiVdPkvJEYkPKshSRqqpGR0ettdsxzDWDhQxEQL2pcYM29prNUa/vuQgMyGKnf6I6A897b4xZWlqqqmphYWF2dnZHd5L4EkhSnkhsRrfb1eqhEIJOlF+3He6acOKzrE7XHMaDMdiysdnOmi1sFIzV6GXT91x7eDWplmka5xtG8pUnEpsxOTnZ6XRCCNbapaWlXq2mCPqO5l5LcSJjTF3X6MdI10B9Nt+dbrksS/1zMCzZZL43b250udnp4HMIoUmNbzqM6zE455KOv2EkKU8kns/Y2JgGP2OM3nsiKsvSWqupipoNAkCd6WqzNwuHQpMCW60WgKqqdKFa1qrCg2KtCe8q6LrT5rkxui9durS4uKir6wFvIzs+sftJUp5IbInx8fF2uw1A6yRVcwFoX9wYY1mWaiCrBDcGdcMWd9SU6mi4VS8JegcAwFqrHp6mZElreWKM6j95/Pgx+mb4vXv3jh07dvXq1SEm3iVeT9K3m0gMjap2COHBgwcHDx7UaUSqlRpX1Letm/Sy+WiLwWJ6fW76pQwGXRtLvK5r55y+p9vtdjod9a2rf//lnH1iN5K+7ERim8zPz4+NjTnniqJQo7jxbIQQth1XHJxn1BRhagGqqrzGQldWVvI8d86ps76ua70z2Lt3786eZuK1IEl5IvGiVFXVzAVdXl4eHx9vtVpropTPpp2su6kmPqkXhsFsGXWweO/PnTt35swZlezULCWhJF95IvGiFEXRarWKolheXi6KQi1oACKi5rkMjBB6LqrmjS9lYWHBe99kEN69e/f48eOXL1/W8votNlhPvPH8H6HaC4EoCRzAAAAAAElFTkSuQmCC\"\n      ></image>\n    </defs>\n    <g clipPath=\"url(#5d6f8b8a11)\" mask=\"url(#594310ce6c)\">\n      <image\n        width=\"494\"\n        height=\"512\"\n        transform=\"matrix(.74095 0 0 .74121 .363 0)\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAAIACAIAAADL0xhuAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9abhcV3Um/K619z6nhjvoaraswfOEwTY2hthgEhIGYwhThm4yPoGnkydJp5M06dDJl490p+nwJOlOJ2SAfIFAGghhsMHYxpjJEAzYGAzGxhNGtmVbsmRJd6qqc87ee63vx646Kl3pXluy7tXAfX/oKdWtOrXPsN+99lrvWouwjGUs40THjh07Go0GM2dZxszGGABEpKoAmFlERISZ0+eJ6Ij8bjo+ABGx1gIoyzLP8/SnhPRbqlpVlYiUZblq1aoj8us/VDgyN2wZy1jGMYKbbrppy5YtIyMja9asSdRMRN77ycnJiYmJEEKe50SU6JuZY4xENMzdw69rLn6GIKL6h0QkrSUikqg8DUNVp6enW61WIn0AIYQQQoxxxYoVR2QYJzCWqXwZyzi+Mcy2qrp3795vfvObV1xxRZ7nyQROjGmMSVYwM3vvjTHM3Ov1ms3m0gwyxmitTetHCMFam3jce++cq9cVZq6qyhhjrS2KoizLRqPhnAMQY0xm+/j4+BKM+fjCMpUvYxnHGVQ1hJDcI7WrZPiv6b+JFus3E1Gmz2NgERtjQgjMXH9yUZEGUI8wDaP+ae89EdUmefpTURSNRiNRP4Dp6elms5kWgxhjjHFsbGwJRn7sY5nKl/FDgTvvvLPdbrfb7ZGRkTzPE7WJyBwSVFUR6fV6IYROp3PqqacexTHPQVEUzExExhgiShxXs7P3PvmjjTEiAqCmyMSJNWmmc0wkXvPmgUjG/pFymtfHJKIQQlmW7XY7DSANrPah1zuGenjee2ttctGks0u2fDLY02fSOI/saI8v/PCe+cJ4/PHH01OS53maP3gaD0p6yNJECiGISIxxeTO4BPi3f/u3k08+ud1ur1q16qBu306ns3Xr1rVr165bt67b7bZarWQD1p/RIcQYd+7cuW7duizLaj9yTW2JR5Zmp59oF0D6N/ko5hi2AJKPAgOuTOSYGHD4IiQ7Pf03rQTpyHVMcvGQpkZNxwDmLCTDm4n0gTnniKGdRP3fA5eo7du3T09Pb9269VWvetWintGxhh9eKt++fXue51mW5Xme5kZ6P+1bq6rau3fvxMREMhDw9Bb8ej/ovY8xVlXVbDaHJ176lfRfIup2u1VV7dmz58wzz1zMcz3RsH379pGREWNMsuMATE1N3X333ZdeemmWZYn1sP8tq1/XZBdjTPQ3H2oaTdyRona1qZsCdLV/o/7Rp/+0LPC7wy+SGWutraoqy7Lhs8AQ8WF/psYQvw+7pzGkIak9MEtszFZVVZN4zcJp3hVF0Ww2h1m+fj1M3Mm/VMdOh31HvV7vC1/4wvOf//xk9c/Ozm7YsGEpz+5o4YeFyutpWc8B7/3evXvHx8ebzWb9lGDwbNVbv8PYuM0xFtIMrKd6bfqlafb973//5JNPTvZR/afZ2dmqqqanp5cpPuFb3/rW+vXrG41GUjKkhXb9+vW1mZZ4FkNehfkQY8SAnYcdtQdFTTG1QyZ9fo4VnD48/GZ6p/7T03l+DqoVecoRzhnqnC/O4cH6r8MLwIHfXSSkHx3+6eHfnTOkYcwZ3vB/h1/XTv96B7B9+/aVK1fOzs4WRfH4449feumli3VuxwBOWCp/4oknhj0kddjnoNR8LLjYEl9gENTatm3bhg0b0jJTLwPOuWNhqEuDG2644Ywzzmi32+vXr5+dnX3wwQcvuuiiYQfC0R7gfphDxOl5S6+T7iI5eTudTlmWaZHeuXNnq9UCkGzk5AFf+pEneICG6KC+uATZ/w0sLE4cfP5AMABJXyYlLNGpphXiG9/4xtlnn50CpCfqDDqhzmrHjh3tdttam2WZ935qamrYQ5Ks4zlT7li7r8PDqx2L3nvvfavVSrSenLlPPPHEzMzMtm3bXvnKVx7FAR9xpCsgIrt377799tuvvPLK2m9Qb6sXsOCOFubTXxNREvwlA7koikcfffSkk07K8zzGOD09vWbNmuS7xwHu4yWFBgBIZ8FDVnN6laZJ+mv/9TyUTfMsscqJbPYTTg4teIuH5M9JP5TcnidkItKxRWSHgWuuueaMM84YGxs7+eSTY4x79+5dt24dBsSdPlP7HI+Wc/AwkPg60VZS4Kb3U7Au+dlvueWWSy65ZOXKlRh4DI7985oPaS8CoPaBhhCSGyo5LtK/tcfjeDnTYU9dPeb0cKY/1cru2oV9dCAe0D7RmrScsGJBG/tgiIMXqgDt4xcTBYDSUktN6lU/XfM0faanp0dHR5988sm027vyyiuXZjCLiuNjPhyIhx9+eGRkJMuymZmZW2+99RWveEVyN2MoVq6qSa5UVVUd4DrWKGBhydcct/tBPZ7DFJCOVhTF8RLwmZycTKnkSZhRlmV6Medjw3KLOfroYxxzMipDCGmbOHwic4QZRwXDe4ph+jax2ucL6b9QAAp38Gc2Wff9z+NgnL/UnrE5aVC1HSAiN91004UXXjg2NlaWZTKJjl8cW7z2dFAUhTGmqqonn3xy/fr1WZZ1Op12u11LVtMWtbbK0zt1SOpYxhzvCg4W9aoXqkQKIYQ555W+kgI+6Qocm5LbdLJJvj06Opp2IVmWpZWp3pGkN7F/WOw4ssoThgVzRJQezprH673/UWTzIsIwmMD7SGGulzyhH9SZx5EiMdAQ6vfn6H+wOLr1+VCrhOsIOQ3qzwCYmppKYiRVrbfyxx2Om/mQJCi17Le2Q+v8sbqwAw5QZc2ZSEdl/IeBNNphmS0OoPj0ov4kgLTOHUh/wziKF2Hr1q2jo6NZlrXb7Tmr1Jy7U6/KqTqHiCx8Usc4FlZuHAOB3IEtnpzgEpNnXM3A57NPNAJVGAoHHAEAlPq+/sHcU5CoqrDl4feXCnM0PAeadPX2KL1IFH/UIhbPAMeWDOCgqCV6NWfVqthhBXFabzHIFqupbXjaHEc8njBssiVTYlgxOcf1X3uZU3S3tkEOetgkrJ4vWLcYSENau3btzMxMkhUBSP5xEfHeD3843cT0p/qk0p/qbMbjCMl/ks6xTk3C0MN5tHkc0KgiMWpUG8kGk1e2UdkGkRJpGisAAZQABsgqjMKIcnoBspjD4xBQBJQIHghAfCoBzBHHHFJOxV7S6xT/rN1cyfGVZkSMMT2ZxxGOXWp76KGHxsbGnHPtdrvOrzlQOfuU/60L98wXLl/Kjd58OFCJjCE77kCJ+vCJHFT2MCc8OGfXgqHdDICiKGKMnU5n/fr1i3R2tV9IREIItXthzvgP1Dtj//ohx6NJPryFqt0Oww/k0RSuDBCB2W65e2pmz3R3slNNznSnOkWv8Hs7vSpIURRFWZU+lD6GEKKilH3b3OQ5SfbTmIWxlLus1cxH243Rdmuk1XLOnLmSWs18xejYxOhoq5nVG+bFtiaHr/Pw7hwH82GmB7VOMUkOgDoId4zjWKTyxx9/fGRkREQmJyc3btx4ZKeuIgCsIkQDGa8CJBEMgBTUD7sLABUhnmeOzWNdJBHAfhkNQDry4Lf2PwgNRGCcvCh9xe0S3JhhonziiSdS9k2qQHKkdFppMgB4yoof8x8igBiqIKPpjhARac0Cfb1cvfFCMqY4CTAwcByYfcG8fRa9AlRTybDSDtD0PAx/ZZ/8jgd/GFAAQH2/hKB+YAiqiy6fThciKpRgkjZchEkgBDYKaLKjVUiFGXtm/K69048+sfvR3bM7p8rtk53tT07vmZ7ZPdlZ3IFSvYFGq5GtXjG+bu2qifGxc8d17ZrVWzaddNLqsbaDSaekAsbg8rEmrw4BGLjyFSCBCqAgA6ACJ128BQBBfwuBeqPw9FH7J8uyTOZOCssfkcuweDi2qHz79u0pgNnpdE466aS0Qg7LCp85gpSGXT2BVZUg+5ZuIqjGGBU8SNk4YC+ftmB08AXGzPP5+lEeqLQGrlKxAIiVl/Ze1NqsOkExme179uwZGRlJ+5hnkrQyPT2dpClJR5gCSocTq4iVEoOGRyJpkscYCeB6pR/cF+4zvhJRf7aLgIZ0frRvJY77G4V91lDN+gvBXJuxdlcNwoN9lq+UDJv0X4GYvkkghMWngJh4TKAKGLCLAmZE4OGdM3d9/9FtT3Z2TfV+8OjOh7Y9GjTlJhBAygQyAIsqz6cTP0IYrlxGGgnqmAzDw0iMFKuMsXJsdNOGdaedsmnd2rUv2OzWr1/fym2UaJKEUQUiQdkYQxBRZbZpJfMRjbgXNgNlIOcVACwdzoyaUxY4ldtN5kgIod1uH8FrcmRxrFD5jTfeePrpp7daLWZet25dEmYMB76OlG0uEpgt9tt57YvU13ZcehEUjTl5DQNERAwJZweKXFgcfJxehYhoYJ0PvrWPKpKFiZQvR7RkYYzacK7rR2NA9CkaMT093e12d+7ceckllzydA37nO99ZvXp1s9m01o6OjiYHcS0JP/QB7tuD9w18BoCSTLpGpv8QB0AhGjhLv7FfkC39Jd33uad/cMOZtOxb30q1qC55rdKjQzT0TYXC1oZgf7+u+ydQLg4CIALHAPDY7tmHdk7f88iu7219/MEdT+55cnen08ltbm3mfVChLMv2wBqGJYYGkkgSGcJMURf7eesHdfrRHY0SokiIjTEApEIqBCEVy8zQKcmaRjevHbnglPXPOW3NxWdu2LRuBdQHbtLQOqoiAGjgNlGRwdJ++KdTu2TTgFOGUVEUMzMze/bsefDBB1/96lc/04uxCDgmqFxVt2/ffuedd77sZS/z3s8RKiyG7GR/13kyrCJEIKIEYrtvo02J9yH1tFUB4PY/HNDfm+uQSKuOKTLV23PuKwBoYJjvO+ySqmvS5R2uVV2719MtGFblf/e73z3zzDNT4G5mZmbz5s0LHHZ6evqRRx4599xzU2HS2vmYDn7Y8T3tEygNonBp+8wKjkAYeK4aoQu2IAaxKqkSKDkf+mHVQakq7juyasfIvrvFICqHIng89EXXt7tJQH33BaBAA2F4WYghMDMxY7Gt8nIa+cgPdnWv/vxtn/36nTunK5M3iW2EkqhhGEryDKiSghz10HcA9m2XpC3UeXaZRwqq/VI2AJJQZOCq7ueFERFDaqGagIdTq7z3IyMjW7ZsefWZOOusM04/9bRmRiqwDAZE4Blcr98qacEFxJhDkyDXIZn06A77Vbz3n/nMZy644II1a9YsTb+OQ8JRpvJhBUVtg8/MzCSh8SJR23DQo47ICfezlZMnTjWQAkTgA8cgAOI8U9TUJ0TS96Wk7/TDRCAeeGETpfMgUE6ckpslib0W3ygfjgL1er1U97UuDA0gPdO1QktVH3vssVWrVvV6vbIsd+7cedFFF9VH897XNF1rjYbfPLx9lQIS47A+bLAMI3gPwDrXp3VN/m3X/xpi32Haf4psImMFYoT3oSiqqqp0MKjUtibLMueMMYMIB5L31g8YG6qUbMDkIB+sAQTjEgexcRhs9HTRiRwlkAHke7B294z/l89+46NfvmtXaSdQhBCUmIytREEGbJS4hSKKxnSxyAAcFQLNdHEFGzx081VIkGidGYPI/MAGIiKCYYplWTrnjDGpUHsjszHGKbE5y6oGnbVh4ooLTv+RZ59xytpxUIQK2IBsHMRIzOGy2zDz1IHQNLBk3ySty7Ak+ljAUaPyq6+++pxzzlm1atXatWvrN1NthGazqfvn+ywe6tsWB35S1v0IPBGHiCiYmdMtFoKFx8DKqA9CRB5ZOkJyuRKQBO5pogxMPNlXdShFc5RVVYmZ95HIYqNOoZyDAwtJD1vTSaR11113nX766SMjI8lo+qM/+qMXv/jFL37xi9MXF8MzVg+mv/uR0F+HRETEpFxzCYW6PVOz23dPPv7k7I6p4onJ7s7p3myn3LF3piiKVM1Kldia4SUKQ1ZFOqPxLDbybKTVGG83RluN8dH22Ei71ci2rF81PtpeOzG6erw1ksFAoBEaIM10a2MVAJjcAhDvOVvsxDTxPlrnBOhWyDJMz/pP33jT+27Z0e2VXmJyo2cMQvBlrzQravaERiJiaK3ZWDyEWDGzHcw1DALLRgWAEFRoYGMZItLQSz7rGGPmclWtgiciMVmM0TBbJl/2mHDqpg1nnXHmKy7ZeNbmk9a1iEIHVYFGA5T7yM4ejk1UP/MHytvSI11V1dTU1OTk5AMPPHDVVVc98+vzzHF0qLzb7e7ateub3/zma1/72rrGyBwbfLHyM7UfgRSR5DwVhfeau6CqIAMyApQRU1PdmU5321RVlmW3U8x0O91u0S16vW7hvd/j+ywwTAEARig4ZxpZnud5q9loNBqNRpZbtyKvRkdHV69cMTE+NtLInOlvBqv03YH7r+8EFD3YbuBIIl3eYb1jenbruzAcba7lt+kzcxwyN99880te8pIUIFpYNXgYOy3vvXMGgIoomJj7YS7qgfOu8MM7p7dun9q6Y/L7D+146PHtj01X3vtYlaziDFnDiEFFKmNTAZA0flUNIXiJjYHgZNgQA+DhDIhICYBEkFhiY8x0qQw1iM3MrBxtrF+9YsPaNSvGR5+9Md+4YcPGk1ZmyR7UkqEgBRZ3J55oMQgAWAYpVKIxtAf88eu+fsMXv/b4ZFmxI85SWIhhAGFANUKFJAJgoooWd8mpXeRIpi6Y2YJJqy72d7n055RplGUJ7ueLEEzfvIilklGwMAv2aZRZqpUNfcE5J//ki5978dmnWKYQhQ0/k2lUP8PDGcgY6mp0ww03XHjhhevWrTsW9C1HgcpTMM17n/xNc1Ix5+xunol39eDQiH16Ugtgarq3a+fub+/q7tk7tW37E9t2PLlzsjfb9UWQIOyMiGhQgTIZy2QBCGBpH5UPfLiEVCyUKNnWKgGAITCzIgdEJVIMGetIu7F6YsX42NipK8LE+Oi61Ss3rp1Yv2p85dhI7hgIhyGiOgwMy70TwdUXvL4R8yUiDieaznenho2aw7XQ+9aixMjGKbB7qvPY9idufrhz/wMP3v/9h2Y7hZpMlKMaNg5hhsgQM0BRKc12gjHi03gG2sX+LirMoyq1A8mRKilBBiUCmyYCiKKqGvu33YCJiKKvWhYbVo+dcfLqs7dsPOf0zRtPXn3yYkseZKhGigLEICMKDnvUjT3aMZ+4+Y5PffG2J/b0srwpMVp4gYoI2JKxBBNVRMTS4lrlgFVV1v5+VMFCDECdERGS/nPCIFVVRMh+j5NqVFVDZKFRVQTgtNAqq0CVWYJtdjULUdeONi4/9+TXXnb+pedtOFSCq5/qOcqLGvU7Okix3r179549e+67777Xvva1z/QiPQMsKZXv2rWr1WpZa+uak4cC6XtAktSUEIEI2EGsQ5Kol2EASFSqpSA6PFuV3LYn9t778I77tu2+75Entj6+Z+90p5JadrDUiKQQJSJDTBozZ1evXrF29crT17TWrVp56sb1W9avWjNmWgyCRwzRDKw8SRLGQRgPTBgobQEQKawADElh1/oiKCKRAlYlkEr/xMnGJfHtQj1AIBYZdJCRQMxQDxjA9h9JTaJ+BnmFm6qwdWfntru2fu2Ou7Y+urOsQphP73+MYfP6kc0nrb7orM0XnbX59JNXtkgIERpBmSLSwOWm4L7+XUvARLVJUTJw1veXdh085OlPC6T7i4JJIBHkJgt9/yc+/6kv3d6RPCqLBOOssAua+SAkRe7EszUCA4oqAWodWxEqquiOj5okdc2y5CwSkTzPW63WG190yksue/6mVQ2rEUgru/MKJxUMi4pSlsqDEYEhKphjysx5PQfJGLr22msvuOCC8fHxo1iTa0klE1VVzc7Orl69+jC+Xg6i1elxTnxEzNA48EwoNAImsvOAGzgrFOhEbH2ic+tdW79739bv/eDhooxFkEhWwSLKTJaNSnWkz/hpgQyLSN8GkRBjYFLnnFcCQNEbDaOtfOPalads2XzSujWXrDMnb9ywdtUKDOuaIRE2CkTBDDMoihRDZRBgMoVR0MCyBA9J/Kje0hLTYUlxDwkBQFRr+jpoBZJHqwfkgNVIgJJJw5PoP/2dR++8695vfve+HXtng2nCNAQkSiT+qX7qmAAHT8aki72i7c7atPYFzz7rWWedduGWHOCawTklN2nsSp4bGAikgirYKdl4wBI7p2rugYhAKMs8dxJjKUYdPzaND330+htufYCb7cle0SCYqtPKs8B2NsIiWlDGRolKjT6KIW6wreQghR+OQaSdZaJyVU3heufcTBVbKC46ff1Pv/QFL7zgjIYRJCcPuaIsmrmFaghibQ6StN+uj/l0/IH1XnPv3r2tVivP86XUoQ1jiX41uVnrNdN7f6jB32F7RAXMAkisSpM1+ykSZJKqxGiAFMIjj+yauf3eR7/y3Qe+94Mdu2c7UHbGlMjSLpuZGcoaKFZQkSVxaBwIGiqrYplVY4xRVWAbQxqbAIBBRKScGYSVLT7zpJXPOeOkC87YeMbJqyfG20AAGMmNKFDt02XKYuUkV++nsIKIhlOcBhl0UVXnzW49QoiDX8TQw6cDLb+FADH48J2tuz556/c/++0HuShClAAizoQQYyRRZix2SsuRQiDHhkgikzIoxihQZs7z/NJzNr30olOff8aaVRMtEAfJxFA28CbTPnM7PfSxryYaukE6/wSOACXDvP9JjoAXfHfb1N994JpvPbwLbiRT9Z2pdiPvhcq43Ci0ClEDZzmsFWGJMHx8XGcMvHnJ7V6X3hvJeKbyLh8VCWtG3etfcumrL79gTQuGMOBuBhiiQAALkM855lNS83Cdy6qqQgi9Xu/wDNZngkWn8uuvv/6MM85YuXLlypUrk07zMGJfAKCl+ghicg0FQhCQOGOL2iYve1nGIHf3tskv3XH/Ld9+YM/eqb1Ts54M2VyJFQbMeTkJNgpWJk0uU1WRoHx0dEVz9nG17IlDoUpCYGZiA3BI0XwDFbB1bK2P4oO4vDEyNn7JmevO2bT6eWeedPb60dymcnRGyXqFBUgLpggG1IIcwNAoSqIkRLav2BGoLLqPPgawDaLKlOT2GkrrLKIHm+1Pdj75tbuv/ep9j015Y4yUM5bzqP2ljhkEIRGVIHR8bPzJGWhAVZBGMi6S9bDCtiWVsOtVsZln552y7vJzT77i2VvO2bwaGsGmzlYXUabhRLb0uEpf8jh/dDxINGygGqO3lqGARjADpiv8hdvv+fsP37irbFTqIL7ppKwkd9aoRAlEFIAoDOWB9upYBw3FrurovaqaUKixQjYqjDEI5cqxkYsvvOBNP3725g0rMoiGksiAMyUUQXPurwf1kRfmq+HMjMTmu3fvTr3Mlriq9uJS+Z49e6anp+++++5XvOIV9X5wTiX4pwupUonkoigbzSaAGNUY4xWOBMAjT/auv/Xem2773rYndhuQRxZCIELuMsOIviRExyZp/qIipMgJWyGoqolHacMuQsakB1FEUlROVY3N+j47xKTyTnua4IWZmVKKptRPrZWqBAmyZjM/df2q55298bJnbT5r0+qJXMEUyAZAARY49UwEin1zvJ8DtVQ1xfo5kZJkhGTyFPP4zl0/uO4r3/3iXY/trdiQZFq6Wm7MBLBIEBFAmdkwqnhwH/GxBi4Lm+fKjUhGAcTAWmVMU6VvtlsAfFkBwpBGnq1YseJVLzjr+Rc+69yNbReVY0HOgWzlFRDDMKa+QX1f47w3TL2CiQZ5DhoJAoKqIwSQFsG+56Nf+NiX7twVMs3aJvSQki0JhvqRfLb2OCoQWE8iDDVKDeQkeMdKGg1xCKH0oTUygqr7wovOfNNrXnTuySvgC5hGZPZA42Bz4Smtz+Hf1UH6NBEtpbJlEafu1NRUKhA8Pj4+XJT18PiiE8BAw4IgKgFgYhsFBsXnbn/wX79y3x1bn+xWoemM0eDLqsGiJg/kvLJqdAguFhrLyk30I4CiIOkn+5HwUXKwJNQaGGYGWERCv4aAggSiRGqIiFTJJTFZ0sOoqoEyczCWRKH9PWOEiTBRcf4pa887df1l5206/9Q1a8eaAIKyEDIIBpl1adu+NHr2CiDvnU07ANcj+/lvPvz+j37qe5NtrjpN43PnCjGiMPDsC2/zlChIhomZyKQCpLk9JhKVnxLMVqDBS7+SKoM0EinbjDTGsgQkz5uRTC9oJJOhMLE8de2Kl73wkh9/wbM3TuRWFRQDWUqlsgZLWIzKQ9Q+FxpAHIL4IFkjY0BUiIhFfYzWOQJiwLZdvf/zL5/66t0PiW2RYTVWRFBVzhAgha+cPYayYBZAPYNqfXBfUeZ9u932UYqiaOaZM1QWvcxwl5oG3sbZS847/Zdf98rnnDJqy8K4CG7XB8TTM26Gg891mmjKj6uqqtPpLE0zr8WaD7Ozs4nHm83mnPobh+dgqQYFN1TEK6vB43v1i1+59SO33NeZ2ltWPbaNQC4KWEMG6VLeMOTUR9+JArhmsI1KTRMeEonIkBKUJPlpUS1B2aODga2L0WuUJH5LqW5I3jtVqKTyoQAQQ4wx2hHvPUiyLEtZVKpqLYcgDGUIVFglZcwx28p7JSugVmZOW7fy0nNPvuKC0559+oaC2fQlI0iBoFR6cLEJMgI+KFvqRnz2375zzee++uD2KWqMkS8r2EAOAEswCGBLbBWx3izH0A9yGGM0lIs80iODWUEr5wyRpAIQYQM75Ux6JTMbxOFbRkTdKFneFqWq7IxndMFpJ73qiudecenZMaJpQYB47yyDqJYAHRzS7w27v3wJFL0aVyVtjIAVnnHjzV979zVf293plZyzy8VTxmQyE7Q6TqLL+6Xp7cfmJgtlN6eYOyqrEMghH+1FGomz3GzPVD5EHWW54tmb3/yTV5y3eYX3sS4wd6Awd2HM6W4RY9y5c2eq1L0EeaGLMnPLssRgPUzvHIGsP/FQARPIbn1i9l9v+upnbr1nxrseHIvPDDKKCD6AhJuRjKUgIom1mVmpnwXjCKoqBCYroCgACGytHh1qiAoiNcYwQ2KIUYjIsIviE62LSFQBmI1hZvii3/EuiECNMSAjIhjBMRkAACAASURBVEa8gJVdimeSikGERHKGQQgRopZYDAnA1vzY2Sufdeapz7/g7NNOWmH7YhJeCg9LmI527NPfeOB91375Bztm4JoaA6tEqDNqpdIoxDYY66OJiowiab/txqCSlRKR8OLWDDlScBqV2CsHJcOOWBE9aTSsXlUpF7aq/bQjhNK4PMaYHLv9wgnQLLe/8oKTXnj5j5y+eZ3pR7Ah/dJdB2fzvmpXASCE0ia/rWogYyAEDxFwHsGVD5njh6b5PR/+1Gdvu0PsmLPtqiyBoEaNHh/XuZYP1LZ5ehGrnmu0O5WIMY4NQpVzZK1KyQExNuUFmF5ndnwkv/iSC9/2+ouSpxv7F5p/muLpYTZPmUSpdsU+g2zxrsARP2JyFaWWjAtfguGGOPV3aagWNWlA2UXWrNhlUnhuPLhbPnDdzZ/96h1inGH2RUHm+Ah/HWvoJwTFauPaiSsuPvfy808/a8PYRDtDBCgIK5MADGUfHdl59yxe4Qj95rzEqgSNRCjV5gyVipgVtgJINEP3ugfoY9dc/+17H3CtFaIk0ecGEsPRUhAdL5jh9oj2Lj/35J/+iUsuOXtT04qqApx6VjJHwKTyIyzCnET6NThGVTCZ+YtmxU7B7Rtu3fo3H/xkNzDYFmVka1U1txyqgkiZbRAJoryvSs2JBpPlP/Wjz37zqy6ZyBVwPgVqEFk1BrCzA6kVJHpmWkAmMFyxrn/wxWTzI0zlqdnVofYq3E/br2SZhKJWs8aOlwyvGEHvkU7zn//1k1++/a5Jb5CPipIveiOtvPTHjVjqmEL0JduMDJNCQmmkPHnVii2bN7z8eededOE5Y42+5jnr30OPhRK7ZTirfiBtDEUkZw0DFAtIuatsve1Dt3zvW9/oeU+uJcZ5H5nZMkmoFrsy3/GOcVP2AkpkPoYta8d/9uWXvery88ZNII0wruthLWck8BVcFgcJbyIQEWMpVcNfYHMcAQOUEbtLvP1dH7vlOw+2x1fEsggwDHGGO2XFeZsYXHWtes/HR2+dQ0WOqlIeG8t/42deedXFp+bahTGRchM8rCuCNiwlw0XJVnOkiwcg8eFwicfF2/ceyeOWZVm7llIkd4FVaNj9tF/uPqiSbsYGyCtCBgTg766/9Zobb+0VFfKGD/BB8txJ9NBI89QHX8bCsNZWwUeBMY6MlX7tL9hi52irdc4pG658wXN/7KKzRpsAe9HANI/oKFYwNonnZFCSjEStlsqcqkmRlu+74Zv/9Pl7qqLwVcdlDRGtYjDskrsfi2ywnAgoJlvjq6c9hLJWw/Z2P7ZxonHVSy5/w489f7xFDSNAhDDIKCGKV3Ip4atfNT1pzOcXm8ZQGcMAJFKw5jNff/DP/vHDPWorZ+J71iBvNGcLX1ZhJOeG0Z6cmLsoEbF5I4rX7tSPnLvlLW/+2U0rMms8lES5LwsNlYGqzQ9M3aqRnBPW2tpOBbBr166U4v+a17zmiI/8iFH55ORk6r073PHnKR0sc5apGKPE0plWj5FRMN585e6t//uaLzy8bdLbdoy+1WioikRv2YiE5BQ7UqfwQwUv5Cw7w5DgfUXEROSjBnJ5I5POnte/8Nlv/cWrLHkwRbLzr8kB1G/mIkEMxUHt/6hwRXf64Un943/+/PcffswUszEbZWtEQvClJXbOBYEq5Y1WWcwu2bkfjwimQdEbRNIQY2Sbq8srwSquXv2i83/+yhesG3MSlVJ5bo1EFKMqDAxUYftNTwQ0z3zUICnluCrhnJD73s7wV//0kW//4Im82Z6dnXWGDJNzroroBsnpxJx3Qi6Xbqg6rfE1Hc8cy1+86rKfe/klbaoYZJ3TlGuXNNDq9+tOdQDqmnR1W6Jrr732/PPPHxsbW7NmzZEd+ZGh8jvuuOOkk05qNBpjY2N1G3g8VR/xYV+51n0mFZVhB+zeW/yvj9zwua/fn9nRMouEHKKEIKEihc1cjFouUvXEHwIou+B7RlP5UwHA1jDZyq4pp7b91Esv/I03vnyMh8uvz3ckicJgMECxAgnIIIrYDErv+/xdf/PRLzYtJGoJZ2MRbQMak9gm6eijUhRk7vgQFx4tCNm07AIwloIXAWV5Lj4ofMuE1/3o8/79yy9fO2JJRa0x4ge9qFj7bVEWcrBUgBVh8gBCdGI5RCDIu6+5+erP39ZxE5VqQwspZrkx4qnp5PhQEB0qmoa7VemarV5RZTYPRW9kJFs1MfqWn3/1886ayMsuMhM194wGAOmBD75bHe64QkNVAkVkz549rVaLiFqt1hEc+ZGZP9u3b9+xY8f5559/SJL44dOrvTFRhT0+c/fWt733OqNjBuVMNWvEpAolIM2MJSIfBWzY2qTGX8ahglgN+g9ZEESFKCkT9eS1l5/yh//hyozKCiMl0AJMDDAHv7OqmtSC/bIhRKC8UOyeLP7wPZ++43s/aHOs1JCxIVS2PUHiy7JkqDGGk1+Frfd+XzbjMg4GVYrRM3OeanUmvalqpEYAokoouhsnGv/upZe97iUXTzRiv2udaJKlRgHI8PwNZL3CDmr6VF4ajkkFGkXxxbt3/Ml7r98TnCPJpfRVaV3m44lplVde1VkYS1WvaTQ3XEQtYK2EN1zxrN/7uZdmfhpZMybV7IIEWqtZUkXc4ardvV6PiMqyTL3RjwiOAJXHGDudzujoKPYvmjqnndIcDCvwa0733ndL/NnHvnjjbfexcNRQldp0DtZrkDzPkwdKRKTfa/FIl8D9oYGEip1NufvW9subMPNLz173R//p9aOxC0QxIwHkANIFwp7SrwkVKkMK43YVfNdDT/4/7/pEVuwuhUs3YUPJ0tOsNV1UIxYCNsYwW++9994yjDHLRL4whCyr5I5i8L4oXSMn52Y7vTwbiaHnMlbKArJqZs9pK+mNr3zRK378+U0Dl5ZYFRB7HzmVfj8otFTKk948g6DsIGsKLMNHcg/sqv707z901yNPkmuSSqx67E7MsGcwrdxoVUw552LgENUazZx6bml36sx1rT/49V84b+OYBaJAeaFslLQH6mtnRZg5qVkSQ05NTSWx+ZHqLfdMqbw2imuv99OUkB9YDrssy927d7/p7740+cQ2JSnVWds2zFUoASRVTOW9tZm1LP36XHqCuuwWHUQkUBEYYxhaFZ2xZrZp44a//93XGNdwBhmAqgQTLBew805c8QID4hRVmyzoY1+4/R+v/hzlY1OF5HmTYykiLs+K3kwzyyRG67IqiA9wzllDGj2pxPl8uMsAALAGhfHCaoy1VmNArBqZlcoLUxmqzFijCGDk7RkfLl3Ze+MbXnPFJac3FRxLGJP6oC6Yfp6KO1CqxWgASPBsXdUlq93Q+Mt/vfmar36vUpcxEI9OJdHFBvkSRshwVEumKSAJpWFxofT5RImsKVO//prLf/4nnuv6F+lpPbdzEo7S66IoksF+RPL7nxGVp557qdzBfCKbCLAqISJGGAMQVECoyGUK+AoZKxjCH//KPX/6ia9RZzn8tRQQsmXw7dyKGhMqQzox3vjnt/3SqvbBSTsCkLqeHEcVQ4AK1EbAcADw2JR5+3s+dfuD20Q9jpMaKScquqbRiJ3Lzj35V9/wsvM2rTAaAFGFp8wQWJVIAX5qw2vfUg0FrvvSt/7qI5/bFUaaHAJl3vt2RqWPvagNZ60Ux0uZs0NFqdSwJFWZ581ud/ZFF5791je/ZkNLKRKsByTCGWWIgLRks7BIsb7syccQY3zmtvnhU/k111xz8cUXr127NvW3ne9j2n9oIIJUERuAijAQtBTTpFIc0//86OeuufX+fLZTzG//LeMIQmM0BsG14+xem4+tbOC9//Vn16xfufDVD5W3mSujWMMMqIgyGy1BuOPh7p+997ptOyer6IUJx0mW4IkKa6KIaJRcw+tf8eKf/8nLVmUw6kFmUKfBeQUT+o145tX1S2rCSQpICMZ+48HpP3/3B+7ZSytNwQiT3gpn68cb03ue9KZhF7mR4dGCyfLu7OSKkZHZXpU3Wyhm1jb9H/7HX3n+GWNdn7nM2ChgTcXpjZSYp9JqHRfsd4cX8d6n/x600e7Tx+Ff93vuuefee+9NzTlr4eRBECsYKwJlTjXHDUOjWpqKvEKjdkL8f9997S13Pyq+4LwJWfaYLAUaLD3lGEq1rQbz3/zOTz3v1DFYN++GUUUksnHdXukaORM0qjFEogK97YHH/tu7r9ldNape0bDqIct6/6OLBnqe8hK5yxt+dmrzOP/OL7/u+c/e1Cr2oLkigFXhKGhVUdbw4PkiIUlmWlaxlREkSgiSNbdPye//zb/cv/Ux2MyAVNVHDSG0Wq0TVYZAhtWXTCRkKzXM3EDZoPKXXnXZG696Ua6pdQiQlOZ1a4WD4UDCTBk5z5DND5PKQwi7d+9eu3btUzdT1gCyZQQzeGh+KwJV4fGu/a2/+sAjT85yL8LmhVEbjpP6Pcc5Sh/y3LFWlbg//IUrf/ryMyqljHuYLxVIPNgUZczzVFSvYmOIDMRf953tf/KPnyiryNGPjk1MzRbWWujyfTyaKMvS5Y1Gsz09Pd3KMxNLh+o55539X3/pFasnGqEM7ZwRPQxLBJl5paAxRjZGajepKsBRuUv0x+/+5M3feZggLcO9SDZvFZ3ZBWo1HtfwMYw2G1VZEDu1jU5ZGdbcAJq/7DkTv/crr2wbctyEQiUsUE+y7lMBINXYSS/KshSRbrd72D0rDue633///WvWrBkdHV3IGK+hQckKEH3MHEGjVBVbpyZ7aLL3u3/2Tz/YJc0sK6tpmzerzvHSSvC4R49b49ybruK/f+FZf/iLrwxIWjSZP4wjPgqnFvZl1zgLtgH8ya/c9afvvTaOboid6XEXitJTPuoF5jhpWXCiwrZGpCrLzmy72RARH0WNNTZrm/JNP/mjb/yJ5xj1ChuJWIRRYd5EfKmq4LIUBS9zl8UYjbVK6EZ88Mavv+uTXy25ycVswzFs+2g1VlxskHWxKlO9UiXj8oaqel8CrSAzl5w+8Re//XOrrIFJTVlTovpCOLDy4u7du5m50+ls2rTpcEZ4GN958skn9+zZs3nz5iSmeYoKkBqjGqTuyeoRK3AW2T346J7f+ftPPjZZ2KoH05RYZgiajcVQHMaQlnGoYJP3Yrj01LF3/u7PtBhqcwKKiMY8fhHVmJpwsiqJB5uSzNU3fv0d137LFLMNl6lr+hgodJtZc6aAscvywqOJqug2m00RsM2qqrKZS+0RGJqzP2fjqrf9x1/eOAopO7bRLgX5fP7RUBlrRRCi1lLGfttYoxHu41+5768//qUCrWLvjtVNmtXjo775oaKK4qyV4EdaDQlxZnY6y3NmA4oBTe/D5hX27b/982esbY3kjKiYP5hclmXSVQNI6vJEpDHG7du3V1V17733XnXVVYc6wkN2aKYCMevXr69rZj1VgRgRJWKCCJFCqTLZ/ds7//mdH57dtTdQs2co1+mcGgVakL0Llm1axhGDjb12M/+HP/jF8SaBMxIvMG6BLZaKgoPAMoFNF/yeT371fdff0qGRUUsmlD0fkDWKsuesJYWemPvs4wbtZu59iIogYm3GTL4snGMOZUHNx2flpi99dayVn3fGZgCR5tVHMxtAoamVI6oqOstQMGtRkWU+Z+PKLetXfeW2bzVHV5S9js7rdT++YYyqqsvyoqi8L1vNZsq9gsDE0matJyvzxa9/89lnbtkwMcrz52J571Mqf0oaSpqROh1nfHz8a1/72plnnvnOd77zUEd4aBPuc5/73Lnnnrt27dq6nd1TI5YwuSbVCkkg+8ik/ME73vnAVK5S5qiMbc1GW5VTEyONmY4uJ3AvDRj469961XOedVoGcCyZc6gHA5hnKopXdpKaORv68A1f+9urvzyTrR0NT1QYJbIZlUFCxc7AmKqry56yo4oIkuhzl0FCCks2Wu1eUXDWoFDkjKKsGnl2xUVn/qef+fENY6HunjMH+4oYC8AWlBqVqIdN2aEEAOF7W3f8/t9ec3dnbKVMLeFZLh1IQxAimxMRSUz9LaLCiQlcGiusCCW3nfu1n77ijT/xrPkLbQH7ixExqCVXxx137949MTFxqAXmDk38u2XLlnvuuScZ42kQqY7KAjWtAlnAlxKYgdCb7Mhb/vcH75m0JBWDPPIiRKtlK2uU1XIhjiMP0uh9bFmuqqoyrYbjtvFdzX7tRzc+91mn5UAoCja5QsEuROvTndQADSoBQFX2oKGM6gGoGIpX33znX3zyjl5z3Xi1K1CLKRJKr1CyTpU1LPP4UYeBOmNTXrSSsdaGqnRMWZiV6MU2xDQiZ1+8/d5ff8c/f/ahJhAAUamgJSC9AAXgu/0ZSRbG9g0/MlHIwUO170RTnH3qxne85c0XjeztIXccm9KNKqXYCGOZw/EvS1OyxhjWQOKROnwBhmBzrcpA1PTiTJ51Y/muq7/wF5/+AWKvAqIGaA+AT1VDY997XNN0ajAy582JiYnDKBR4CNSpqnv27BkdHXXO1atK7eiZ/2uhImsArmZ9NvKbf/qhOx7cwZajLqeQLAU0+lZrZKrTzbMm1He73dzSxeed/he/+bp2g03/CZAQxFrbbwinMVViUiAoLCGGYKwlLUH5x7/+4Dv+4WOcNZi56+H4uJ+lP1SwrIX3LmuFGC0hMwhFZ7zdfOmLn/dbb7gslx447wk3+kXWuCaUui9P/0AaBFaTJs33vJJkjR/sLN/2tx94cNtebY82fdnTyMgLX4xZrU5QxylpVDI2c2XpDcGQVt3ZsdH2VS+++D//zIsMQhFtgwOUAhszP+EmRk3pQnVHukOqb34IVJ4cOth/U1Bb6PNuB0Q9k9MqUvbWd3/2C9/6fkbeQ7BM5UsCETEkMRspe8WKhpbqxhr8zt/5mXM2rQxVyDM7qGPFqqogRhBRNi4JikMEgMyAQgnEL3330be+97Mz0myHKQRf5itsXA5TH08gwyLCICIqq54lbuRZp9NptUeee9aGt77p9Se1YLifFqT7F6nev3OxRHBUOAKphwSYPIIf2h1+/53vf3RHOUOhXVRxpGmKAIonapcoy4hKUYXIiIhlyiz3uh3O26+4+JQ/evNVOUSVCRKCDy5fQDdeh0OJKDFqasf2NPuCPl0+TdIZEQkhpD5BAFLbuoW/GJmclgDec+O3P3PHVpVI4qM5MhVklvGUUGIiphjZUACjmn3jlS941qYViDHxuMQkFk5LNaDKxlU+CgBBbpAbVGUJ6+54rHz7+67vFaFpYoVMXNuF3tE+v2UcGqLAGOO9h4RW3iAyQW1jdKLsFV++e/tv/sWHv/3IXoRIKS1g/8I4db1WABIjA0wICpABW60KE6tNq+y73vKmLet4FeUzjWbWKYtYRDphU7gTJYqIc46ZSx+iksmasSxu/Pbjb3/fZ4pARBBla5/C+Z3neeq6jkGr0hhjWZaPPPLI0xnJIVB5quxlra21kHVj6QU89Awgyte+9/g/Xvtlo6FJoYi63C9iyWCs7XlpcMgNqoCLz1z/yy+9MIXOAUkkDqK0TgMAsQLGGVIYeKj3vdk8z+97ovpv/3D17tB2FLmz21nuVX7+hhTLOEbhvafkOk82mXO9ouoVnpujDuGRx3a85S8/cM1tD4IMhSKkMhv1swFgYJUzE/qkgwhWcmobMFkWytUj4e9/582bN7cmImab2WhjNMiJmQIKIEKTBqSqKiJyzhWV9zGMNPJMy0985Z7//v6booBJPKyTznzHSVc4qVkApJQda+3k5OTY2NjTGcnTLeuV/k2dl5PZP2cQ84EEj83QH7/nutlutcKVYPK2ncvyrnypoGpsVvW6TYumiW/9D2+00rMurf8kSmxc8q4451QEZFK3VCaAABHTGNlb6Nvfd91DO6ZCVdqsaV1uQy9nLWXZS3acwVkOVZmKDJelF0HmTDPPq6rKLCNWs93qLz9w/Ts+dHPXNlLwOtFK2pfvOxCxSkDU1HMuAgFcRoAFpR9bYf/qV//dOaeOND261jX0xMwbAmDYMTODQqhUozFEpM1msyh6VdllZz992/1//uGbI7ELxXx9KgCkyubY579CVVXMvGnTpizL0p8WxtOaisNVyFMpxFSHN8ZY2+bzoWK87V0f3d7TkdFWr/KFQMWLLqcCLhGMBmut5iNVZ/rXXvdjmyYshKGaqmumDVZV9WcaEQHiGN1eBUBDVJN3CH/2no/d+cD2ViNz8D6gGzhGzRyHE7T/wAmMhjUhhKqqwJZtBoA0hrKTOy0iXJazynRJH73l+2/962t3dzV1XsUQxSD1GxFm46xRA4iPBDhGbiABMW9axcoJ81e//UunrbOuM035CetQTaUNmbmR5QzyZRV98GWlxNwYy1GR+o/fcv//+sAX4Rpxfr4dJtLEt4nBa9fNU3oynprKvfd1w4d0xFTcK20rdOBmne/rH7z+trse3sUgEenQaAhhdRMdWd6ZLxEoRgnRc+P0LZve+BMXWEWwOSEq4IOIQgGXZelWEhGCJ2CkmYkIuUYFfOj6b9x850N5xlVVWWtFA4zztlmpWZavHHcoet2RVsO5XJQUKQSqGSOq0bJDhMKNxGxUyt4377rn197+vsnJybI8SO83YSigvoKGzJGBUKwglc+aBgAJCY008Xdv/dXztkx044kZ80RqzcQcY4ziJVSZ5dF2U6P32RikKqpgra16M9fccu/ffuIbRuftolc3bzDGpNJaIQTnXKpmzszdbvfxxx9fYCRPTeV1Y7pkwaUX6YfrN5kZ6gMACLTU9AJyx8N7//barwdNmb+SwzvnZku0eJnKjzBIFWyqCCFrrWUNlgQSgmM2jbFy8r/8wost9VRgAKVAgLPMBBrImPpmFyH5zggC6dx5z7b/7/pvBWrFGME2CBhqEFgDqTx9pdQyjhGwa5Q+igSmCPVEGokrMEm0eSsIOfG59Iyhkppbn5z5qf/xkTse3gstoSESFSm2ggiFKsg1Bo8Pe7WRsxw+hBDBUYU0rGjR23/vV85b0evySJOFfFmpc4SW0Rij4Pg3BVJRFiKCIeOiUukjGdfQblWGRnOk8rHdbofQ/Zcbv/zXX9iO6HuAR4AEKLwK4OvLMNwVOVUOT1MshDA1NdVuHzyNq/+VhceZRlkvFAsa+UxAJayUEwQqM4H/z/uvefrXZBnPBEokInlmDaPX6ShI2YGzKCrF5Ct/9HnnnralLCtKxfHnL9igJmepABDJtmn7P99/QyPM+OV6Kj+s6Ba9P3rnhz916yMga1VcWulVLYEJg005AFjLoQpQmH3dC5RCsaaJ//FffuP8FeVMIOSjLeOjcdO9kkOh8xT1PgFQe6QBrqrKZXlR+o9+7Orrbt/aABwgZAFxxAEO84eF0xW21q5bty7LsgUY+KmpPNngqfHjQlYYGQMBYbqQ1JLgX266/TsPTz71SS/jiIANRCHRaGAG26wKMYLIug1j/Cuvv8ICLh8BYACdLzsfiICGSFoFyt7+fz/38CxFX9hlqcoPK0pkO2LzT977qY988U4QU1UaAOy06iE16CZDzCEEAvLMqpIAksxJBRm1Ve/0lfbtv/H6dWMuEnnvfVllzXHbGCE9YW2E5CoB4JwrfeiVvjEy1vPyjg9++tsPbAeYCCCJPhgAZl6CJqJaobhwNfOFqLz2gz+dbsiigERDGGswoPds737gxtuyxgm76h5rECVmIFYSQ7PZVuKkIJai96afvXJtU0mCwkAVhAU0R1YjZ01AP/T5O//t7kfgSzO2NvSml/BUlnEMIZLLGIGzP/+/n37Pp77OWR56swFg51K2SRQAMNaqKiBEmvrQK3MUBSxBKZRnbFz3p7/5hpWuUG7kBj7GkpummlecdwIgVT0E0G63waaogsma01V86zuvfmSPQMoINsaSL8P8BVtijMMKBcxfJeUpCLr2jKfA5gLhTSZA1aiQ74ia91z31e0d2GrmKU94GUcEKert2KhqEKl8dJZZw3NOXffyy84hP8PEkgoWkiy4Lgs03PfozD9c8+UmUybl7plOu3XCKhCWsTAaWkhnD0mU5sS7rvnSX37wJjRHDBBCFEmZ5ck8ADSqCEAa+u4CMVlUpqwFmxcx/v/svXmUJNd13vnde9+LyMxaem8sjW7sG8EFBLiBpEiKJAgSEqld4mJStDyyPNIcHZ+xJfmMbEu2PD4+mpnj0YzlY20UtdrDTdzBVeAmEiDBBSAAYie2RmPr7upaMiPivXfv/PEys6ubXVndZKO6qxi/k6e7Kisi14gb993lu1edv/Vf/5M3TrtG2TvnEOuy2LDp0ATLlX7jevM6xCaGkvB40/mt//w3+yuT3Ggt5YS1iYhUVQXgmMnn5ax4Tt94441zc3MAckmjiMQYV/HNxQEJ7L98597Pfu3OXqfr1n9WY73AzBobImNxTQIRSQo+Lf3yT10rZvAlFB4gssl9ACAP0P/+l5+q1JVpMZFMO6s37Dq4ZRU6NiB2RGRNv5Hee2++7z+++xNLdSJfJhMb+nBqZsQuDwhlR5SSGoiQWCJQxVSIAPSqK87552+5lhmhWtzs64Y27KqdIDHG0hciNBgspRSKwvV6vRhV0Hznqerf/pf/z+AGTawZxcQ5LTmuMm7fX+n8XdE079q161vf+haW1ZNOmMUMwIDQNEjal+KPP/RFL9zVpQVs2K/qdEOIAQQ1BRuxcw5x6eVXXv4jl5/lyBIEzDAokjHTypfYGnj3x2++67GDsJTIJS5FpN/vr907aTmdWGrA3hsSQ4uimOvrp2655z/9+YcWG5jjGDXFhknzKHYQhWgAREhSEgxnQHacsKU6KJje9PJn//JPvnKa6qoOzcZVtc+98SEEx1I4TwaNaWlhsfBTFJdiqr/+wNwfvudG6jhgVP13LMaGO8dVcpn/MWMsK5ryqampF73oRblTf9wmMAEFfFHAle+98Tu3PjzntSnCYu03r7pjy0khafDeZw1lI4algvHzP/XjCAOCJXKmWUbmbgAAIABJREFUgBmBJleAPfLEoT+54RsINWtYSN47XgiYmW4DLD+kxKkzY4yFqbKvQ5z2GIT00Vsf/y9/9K4mgR1nW5NizPprzvuUDKYsZql2UEKENURUejbySPpL117x6muuip2tjjbscq+JodvtElGINVkSssJx4ViDkqMpGdSB/uqzd3765ttLLJFbMZ+ZLwkY5T/HxYTH2HKlh9ixY0dRFFkTYLk/vtJEbYE2TdMY/vYzt9QoHFLtpqZow2ovnG5EY4SBuY5PVcHqSV/24hdcvbNG0WVIAZAAQgTnIcPicasN2gAwheU1nv72X35BiZoEsOtQjE09U5YxbFjvqWUyZVhwUgTyDCsoqSpBnMb/fhd+708/XMfoHQEQZtIAgBBFzEBqzFICbHBGDoDBARAhU/2Xv3TdC86dTikkEYBZCXDqOw0LWSrDKnHh0x/HMgxNs09G+aZgk0YgMTopfG32f//NZ+/ZX6qpAREwAGowxAQbqd+MzW/Of6aUjllJeGxTnsvJsx0fx8fzpWCsnDVu+xyLJhZF8dcf/8r8wYMd0eR6FKsqbFjthdONLsfKz3QQau4WiKGpf/mnXzNB8wEAlAhBgEQMU1Z84PO3PfLII/1+P7fyjmtjW/mzlqPoxfkv3vrAv/uzj/ephBkgxp4tmaomI5JsN1RVLU+noQREA5ExaY/wW//zWy7e5skSM4tzlmqrFwrEkCj66VP9/p4pUtLcox+bUJZlFeJ/e/ffNsxqUQBNCUQgZKNLZGMfPJ+GucbxmKfkil65c24wGCx35pdLuuQHGp/tRARLA+MPfPH2uq47VlUmZOrbrs61ItWDaK5O5ooypfSTr7z6om1+gjPNQB0NpgKNAJIuLlV/+rGblxYHTC4fLqOvfnLFS8sPI66pDgz0M3c8/u/++KM1+5CUACMQO1p2uDCzEBOGLSlMaOoaSE6b3dP4nV99y/aZTtWfTyl1Op1SiFMou52ljbuYJ3YAqaowUkp1pJtvu//jNz/A5KCNkIKQM8YYGesskZSlNZh5MBgcU4l2Ra8cQLfbzTvnoMp4SvQxx1uwyEe/eNu+Qw1cwRphSaV0vHG/k9MMLsou6vlUIAycc7/yxheHqj/BApNaUZaAhKYqAfPuLz/+5YcOVGVZ5jGyWQT1+xhM1fLDAHemZjudOuinbn3kP737M+wFqVIIwESCLLk1CsaamWkUgAFfdJAMRM7Ss3Zv/bVfeMOW0iDoN4GlSClpDDQhL7/O8b6MUc1MhELdKHua2fEXH7pxkKCqWQQhEWAgGMzyRQ6jIT8Aut1jL7WPcbKP7XWuiMSyhOlYemW88djVr5N7/43fNCODU+IOQkUda0cTrBUmpdeq7HZSSm948eXbZ5zv9CatiSwBqKkQEWi4Y+/gLz7zzV5ZZGc8X8LHsbnWmrccRW1OY+U1xKSf+eod/+09n63QEWgW88Myadz8M5lSLqMmguskZZCEpnnD1bvf9sZXaT1v4mp1RXfWUujJ6pqu6xW1lAWlzcQRi68SPfzk4mdvvp1dB9CYzJDHpmqe/QnAzMa1Kzk6oqpHVZof22/L7tjYO8tx96MU6HOIfNzN/+U7Hrpn735YICIDwaxRkxMZONfygxBjbIx7aanb7b7zuqvBAtKJkjmomxoAS5kSvfuDn53HFKd6fG3OUfJ8AJ3o8O+WDU8z6PvudGz6PVSJ5N2f+MZff+oWBWdF1uyPZzMy9M2zGB+QkiUgkSxWwRdFkZq3/tg117702dwshZRAhYjwxtU3D6HudDpVk5e8BkspGvviA39/SwNgNHSTMCw4y+djtsZ5oZy1cHM1y/JHXtErH8fanXNmVtf18stsZuyexxjf94Vv53sEycz6iTqs1pqAtcI7ROmlavHVzz33nJ1bAEZME6+kVBalAxq1f7hr3+e//p1eIWbmXMHs8hedT0KWPFmopeUwvtsbDAbTvVLI5hcr62398w9+7iNfvTdE2KhyLm9JBhhADuAYaicEhTCmOj6GAOYpxj9/x5uetWu6Y81Sv6oTEm3Y5AyZiUgTEwmbRtOmU4qmcOejh77z4H6wy+daVqdJo3xkDpdnU5wd86Iojg5xH/VMdV3nOUHjKDsAIirLcqWFdl3Xc3NzN93xUEnJ4EgDESXX7UqqYmsC1giLKQBS9n7p+hdVuQFP3KS+TpImqaBmpnd98HNUTvmwkGiY7cwXcuahkzWeTdHSkumrlByt6Vfmi5mt2tR1pP/jLz957733hjAeZjD0zZFl2gDnPaDCEMBS8I5gjhA3u+a3/tnbZ0tyzrmyF457UOW6gxlVUxdlmUxFmM1iMxDCQLr/8NVvgJBSGq5fRgPUU0rLNRHHjvlRvfdHf2R5zHN23Y+y+iJCRCAKIcBqhQFaAWWBP/7svaQpoGSLSi4ZlQhNgpcN+5WcKtSiOFq+tjIjMzLWaZIrL9ixe9fWTgLASs2ENZEaSgnQ4kOfv+fOJw8lU1YJJFlofrxZSkkThCcNimr5IaRHVYKPPM0gDotMEc7XQX/5Dz95/xP7IxAMRGR51HOKMrROPLY5LB7kwApzpdpzzp7+Jz/7WsfBzMrYBDiQZ3Y5/WZwMcZi/S/yjYRBbErJTNloWHRfWnXDrU/3k/cSnMKo6JMvdCiagmPlKbOI+fjXo01tDspMSHPR8NIqliLAHhiE4ss3f/Okvt+WFfHeqx6RXMoNYEEZ9cIv/MS1DMrtnAKeECtn0maprpk+/PkvoVEyJMde29xGyw+EhsGv/8HfPXlwsRQNxoQQjLGy5kfTRAXgypTST7/q2de/8AIXlyo3W1ASNE1/oVMwIbJAxPfrDTtIclA3c3Nzj+7bj2QgEK2+MOn3+2NhFhxlyo+c8bgCFhUAOecoARKrr9y977G5xe/zHbScIKaU4nAeSK4UVI0pBS66F529+ZpLd7IlDF2gyYdDXXRnP3bT3d966Ek2z5oSJd64k9Fb1oYKvScX47/+r++fXxx4ihHe0aRJvlIUVUgJEKGiWfzf3nn9RTu7DXkNVeHdps2z84fmoJFhydSVvbV7J2uLiAyq5tv3PRRJckV5Dm2vtH1KaXZ2dnmM5choC3Oe4TnxSU2R275zaZF+8Avf8L3ZH+BdtJwAuW03e+I5BzIUIo7xJ177kiLlEV9ZkZwnpT011Yy//cjnqZhNRMywVZUvW1pWo0ZnmuO3Hp7/vT/9MOCCAkQOK5oUA7qFxKTJQF4KXfrNf/qWGe4XZefQ4qCOVna6RIBGx6S6Yb3yoiiU+Jt3PYjRZCVZ+UPDKOoynuyMo0x5Dqivfj4bDEAyAP0aX//OQ9XGXficbozriGKMuWsgm/WtHXr1S69gC9Dc8wsYTyxg6Xzkpjv3HhggUo3ITrySrjzNpKXleCh0sQrKzdKXHlj6f9//pS4jAUjVhF0IoRQ1YqMuIFfs3vTrP/XyEJqi0x1ESGfGyBGMLOVmiA1JdtFuu//RBshrakHCyiMpMsvd7sNW+3hGBQEASR7Knrf+wu0PVwnaLszXiuyGZ3881/vXdd00zRteeNlMAUiBZAwdrcxWvLAPyH3gM1+OxqJRhIKxoAjrX8ao5dSyuSNVVZW9qbqJ7/70tz55y73OImTFwMhI0QmqloCAwgFv/tHnv/TKSxGWyk6xMKiNWM3M1G1cIRCNQUSePFQ9Nd+Msl1xsgbwciUVHLOufHKAxcAOiQFwAbO/+9IdwtwrN+w0kNMNMwKGdaK53Egt9qY6P/uqqzUFI6cKQgCQhpWpx+bG2/Y9+OiBJqbCW4/RhFQLs7ZeecsPxP7FpS2z3aXkKA7U+D+86+P3752b5CBoNHiQK9gcsmouhNO/eMeP75mluHiw9A5EZijLTkgbdvUvTI64RvHgI49h6IKtEk4a9wrlXw+b8qHu8KiifKX9I0COYKlRhFDf/vD+phpomLSAajmJjNVvcvm/qvZ6vT179px75owXCQCLIAvWMmArNkC/99Oft+iKjm9SJXUNUCXoubbosOUHwpWdQRKXBpBuQalO9Bt/fEN/ccW+BCKEfLyGBlpbVGPA5NwZ/Mpbf7KkIKRmBuGqiSwb9vhkaEpBWR7Zu0/T0Pyu6ljlNfroEZYRQjhmRfmRT4mQPJF6CzfedWAwqLk7K5Ny1C0nE0dNk9TM4LsSqymnyeTt1+yBiAMXyOG1KQKEAOphmKMOmkINwCJSfctDi9++58kgzkIi7vTZedaepqoVWmj5wSBTgRmJMMBc14MnDhz6X9/1OUOVAFRAzMLcAWmABJAr8jHrO+DS5RgKkxque8Gel1/z/FIjwwU1iPMbdlIFohWJ1cf69ieUHQk0Rb/qhWt5f8kRU5xzzfLk1j4yOMcwAvtbb7sjaR4QvGFjWKcbwah01MTEMBNXK09JeOU1z115j1xoJCzigFjXJuVHPvP5tXq9LT9cZF9AVUOombnsTtV1c8899/zpJ77BBniYg8a60ZRkkpg+ox6g/J1/9PrpmZK13/FTqRrUGzftSURZcHb//gP5Hpk4gDNzjLRnroXI/2YVrRWfEkZQEA8MX7/tO0QENZM2Vr5GBHirl8qyFIaSUypf8dyLupPS1ckAAwMQqCuKxw+Fz3/tzrV6vS0/ZBhjJK491PAj9PuDd33sG1+56yFIjCkWzgt3EoAJCogUPFBY/Lf/0xsiki4dmu5uwsbVAhoPR933+OMGZMucTqSc5LBXHmOcHCUfP6VpVONHn+rvOzgvImapzZatGa7TgzbOuaa/FCKM8LOvu0Ym5CoMbEhZ1FYj2H/481+fC+0qquUZYTyxbNyWLOw7vemqwr//8xv2DsxzrZEIKGxi4TRKpw06/mUX77juxc/msrfYX2Js2ON2pNBOc/MLY+WqiY0hR3PEsLfjQ81MCbfccV9Dhao6IKTWlq8Rsa7EZWUFLYpiz47Zy8/ZDDfpK8/l5VETiBYibvjCLVRs2K65llNLbjM0MxFxzuW1fgihY+nRef7Pf/OpEB1TwnCQwYrLSYNXgocad3/7za9xvQ4K9htXZgv5KmjURCz1Q7anJ9Syd0Rd+fjfybuwSARuvu3uxF3T6MQmNfq3nFS0qRIXGkNZdk2b615yhViccEqABJZoeFj4m25/5JG5Gm0fQMszQxZxzb55ds+ZnSpEhGP1qa/d//4vPwBACkQCrxz7TgGRCkJSxXS3+Jdv+1HqdK1eWsO3sqYMpcVhxHLw0IICdgLuNZBNwPIJEsx81HCKYz0lLwXc89BjSTwRsaZ2NMGasalX1ChIQxOjI33tCy4lGs4yPyYGhqkAzBIMH//iLVZMi7atQC3PCKbkRZZLgBCRc8V8U810OEb9w/d95t4DGjQ5ZBHzYyMeBVAHE60i4yevOufqc7dKt1xp+/UOI4+YEGM6tDAPZAGWE7DmjNFAitw6GGMcz/A8Jvnr2X9wcHB+ySAMS6HZyMue0wxrBpVy6YTEnXvOrgvOmAION3d+L/lkypP7Di7UX7v1rkC+bL+wlmeGPHxKY2RBURQAx6gxJemVdQyzXucr/Vd/9N6aCGkurryaTDAklOLMOacDwP/Hd1675DasKc8QkSb0BzWAEy0LHE6WyJ54nhmEyXXl4oH+t+7aO3DTBSoHik7S5A7TlpPHIs/s4IMLjSjCdc8919FgslBDGilGCzf//cZvL5U7p6rHK97gp0TLqSLlLmNmWB4Lp8zKlKRJ3aITIjn2Dz964F2fvKOWzS4uAVBDAhIQYzRLljshEiBIZgSnKBOhNzv7b667EOJQJ5aOiXVliZWqOBR6Wd+4EuiTIZE9XbOk43pLeSzMI488gnGMNXvizDxuA10JVQD+/gcfAmkazZqZFKttOamwNgGFOO1AXnz1ZbBuTHHC5VsIgCKGBuVXb73b6v4oa9rSsnaI9/Pz85zHLoA+8OGP3fXQnFEXmpgQm8iAOJfnXTIgMmxpBpSZoeh4XHftay/cXkqvE1IMVVUlL2VBaT6uf519M4NxllcaTkNdbfscIHn66aeHQ4XyH8Zd+261unRhRJTfufe7jniosQprTcOaIZQSTSWE87ZvvuCsaQMSASt32zKgKUHojr1L33l4X4cCyB/PsdLSchKJamV3KlcoAmjM/8Gfv+cgM8hg0YvRUHGVyUDQlIZNiwAAhSVS9Ar8+i+8frA057rFTG86ojvfn988U4DWfUO/pmEsxMxCs/rpmRVSs27HEaY8T6XJ8kyrPIZhMeGxp+YYBDCI8pqoZW1w0JpEg776hZcWUCWIuAnin6TGzCD+6Jdvq7lbcmpGU71bWtaMXM3SNA2ZMjN8+e0Hn/irj90GciBmEU2BbDjiGctivKFpYCZCTIaUXvasXa972bOaemGpUi9ehAah2QAycFlNJXvlR0kerkTuBJqens6zhPipp57Kqc7jPb1VH9h3aClQSgEAkTBa07B2sCFq6Ip/zUsuociWW6XjyloLZCCqtbzx5tvFl5Y0KrxrA2Ita0oO3kYd2uh+k6i75T03fP5b9zwSwSM7RmbDsjxmZLfSj5rPiUxEkOKv/OxrZjmBnLMwPdVbaFKx/rtAD09hhqwa5cayvOZ4FDN77xcWFvKfx/dOgvnuB/dSOTUUWyBADa0M01oh4k3D7h1bd+3ogkFQNqDorLgDAeBvPvjU/oVFbzGQEMmJdIS1tJwEhJBFQczMUux2u0uDqlb+i4987kCEEhExhr3rlEuyRkcpg0QVKVmMEc5dtLX35te9VCg2TRXqMDW1yda/KR9FVyiXAA3vtRVdrtw9lK92w4ufc67X62Ekm7D6c5re++A+5cIRE4kmA2my1jSsEUrwxC9+3kXeCFAGk5lhQqyQDfypm+5wznmronSNoOm4VnAtLScNjSEEI1aQmQ0W5manp4joi3c88tHP3Z4XlRpqIhhgRAC89zm5N56WJSIBINO3vf6luzZRZEbkToxLcd3bn3GgfBjhOA5LXFXVciFbLoqiLEtVzVNpjseaP/bEU1UdABvOsiFuAyxrRhOCI7nquRcyleCaDOA4Ib+Rv85/+OadKTQUB8kcTrAhuKXlJGCac55mxtBOWVgKsal1att7PvTxJw8MQGDvCUgJRIcnKhAzMcdkSUeiU4k2e/z89a+SzrRj75oK5cqr0nVCVkbEiZybnU4Hy3RuOf8SQhhnG1bJfDLufHgOokTsSZ2Eijc5a7sH1wjlouv0FRduBZYCumpq8M4iEGHJLC+4cm0TYEqp+fI9+w8eqkRKdT2yiojcyl12LS3PBMbezMjUMRlJNI4KEfH9Q/ux9f/864+n3HkeouOYgHGDCwEEOCFhEOCB5ATWf/MrrrjsjO4SYuW4O3F26PqAFDFEIih5xxDIxLj1sNFfdex8MxH1+/2cA81K5SKTYqkLi1UzGstkRuOh7yfvPbVMgsU/5+JzvGNQiVy6BcDIVEGUO8RG30YyU3DxtVu/bRgu35izwlE7KqTltMCK6dCfv/WuBz/9zYcMTMJqDisHbMmSAUqFUHrbj72yoNiY3wD2R0ejlYmPy5yOdVbG1nxYmZhjUkVRDFdAKzv5jz55IKVEpmamANQYtv4r9NcNIYQfec75ZJooyyEOJ0sQSU6SZF06IsqlpxXhK1+7DZxDZzysE0jrPrbYsjGoEnULmavxh+/5bENACiAwTZCHUzVEdkR4zXN3v+iSPYkkhHV/PA+n9RIAFMc3/iE73ONeIXbONU2TC87zYM/J5Q2PPL2gRoRoRkZMnBuE2tjrGiFIL75sd24KYkOuIQIBEBCyhtHyq/p3n04PPz0HKQAQWUhxPB20peWU4xhJlYvuoweW/scN34ArGZMMkEF87mknV9rSW173op6obQhtllxUDk2+kOyiTchbjocwxxgHgwEAXlhYGI8NEpEsNDwhXL734AKxGy6BSARE0LZxf804Z/v0BWduAY8DKYzcokUAwMy59cvMoloyfPlb95r0oinZsAXMlNq0Z8tpQolQRZCmwsu7P/z3+w5WE2aLA0hgQiOmFQDmH3n2OS+65KwNUAw99q7MrHscWdxhNIbo6aefzilivu+++1JKh/PFRLntc6WH2PvUAgAmmJmCACVTbeW01ornX3AGMwziAJiBfNbFyeusfECoqhGEBcRfuOVb5rspJYYygdAWlbecRlBKICk9qsX5RSvf9aG/B68m3BmjUF6MltDB269/Gcd1r2OeXXKCkqXp6dUnw4xN/5lnntnv9wHwFVdcMVa4zWrxk122vU/PRQPbqHrfjCwZt6Z8jbjmORclhRqJVgAiMFwgDdWNFVBVJZACS0vNAw8/EQ0CgqnF5JxrmwBaTh+SOIKqaq83Zew/dtM9t3x3jlZ2zJ0hUQmwA0ICDFddcsaPPGfPWr7mZ4LxID0impmeXlWpPAdOQgidTufCCy9EjpXXdT2OqGR/fEJ1+cGFfkoJpERiBNu4M7BPT5578Z5EMAYsgigCQMyFSeNvLX+JVZUeePChJmmM6pxj0xibHEM7dS+/peUI+km6DiHEQbTYhLrY9Efv//SkeInV5oqkLBbJMaRkjW9702vW7hU/Y4wyn5wLxkE64UwVkRhj7qLK9zARFUWRT/5xXGXUcZSACKjaKACv6aEnFnuOGysAlThIrmck0nYPnnSY1EKCMDuOlbFXKc+Z4V3bpwuCAyDTBHQA8JQj1GBBGs4SAZHFqSJ+8M6FBPFsFuskZZJSU+3Z0oQKgZaWNaTHgwiw64h4ccTVgfsfePjvbhtAlxJQAzAghCxiblqDSwcIA5RFXJnZveD8bddcsr2QCCa26BjJdZtExfrpdyFNkUpLMaawfYqMHEZTeVfCObe8xmFCo+YohDLCDHUdch/tUZ5dWxFx0lHVXKACgJmZWZAuvfj8lbYnACIANCUmgBjKd91991q93paW74ecZksxqkaGichi1XzkE59WTCUFqakGOA/AkhGvmMN7y8/8WKr6qkreV1Ullhxz0nXjsowtqnNcfF9qd5P2GVlrJlj+daFfZ1P+fTxTywmRy0OZchMWaUzaDK6+4pKVthcAlgUsmAEz2jdfP/jwI2v4kltaThhlR+yE4AhqMamR79x69wMfu+k7zCi4YVMQsoj5BHt11XmbnnvxHiFOJmV3CqmBpbCuyjFyx0e3KEsv38frnmTKiSTLAhAZAUY4uLB0TDvehl9POuNSfYUZk1p0FJ998e6VtufhP4mdEGCgb393X1g/XknLDyfELqf7hExAKZnvzMB3/+qGrywpYArHuaFNmCYMRugAv/Djr9HQj1laKwaG+s70Gr2NHxzOGr86PdUdO+UnZFVXOdVtnIAwGLB/vk/LQGvEnzFUFWZQA8DiiOiMrbPn7Vyx4JQAM4WaASlEI3zl9u/KqGOgpeX0hIiy8R0KcDNXdTDIfY/Pf+oLt4L88vDtpC5Qq1/8nF2X7NrqHaKa8wJoXE/xAyYymG3eNH24i/uE9l/5T2rDVkLAFKQK7F/of29YvLXmzwQjdTNDlr40PX/XGd3J8jokEFZAhAy44/7HU2y/mpbTGtPomJxzMaoqiCSGmszIdd7/qS8dUhchNBQyn/hAih7w5utfmfpzRVEYiEGhXjdpzwybbtuyCdAJKjQr7rviX4YFbtlSD93DxaXqew132wj+TMDshnopSnnJeMmF55GuOC0oi66MfrEDBwaPHeyvJ6ek5YcS1tG4G3YhGYDCcSEG1Xv3zX36a/cGIxqOrp1U0GHsxOKrX3jJ2ZunmxAaJXbS7aybVWnWTWLmbVu2Hn9ghflw3coRpvwIM33Uw1kyoA5x+cYZtBUszwD5g5XRZdI5t+ecXcCEKn6NloMsAPDw3scGjYms+/G1LRsbglkKVdWweBafJaVSPWAy7m7667+7QWnoj+uooOuYKAmQphjXvfoVMWrZ6cUYdcKgxNMMMyMDC3q9zglFVw7XlS+/9wiLzJI0FECyBuaTFKXqvsW4fOM2Yv7MQRoakxBqFvWC2uilezx4RdkgNfakoCYLln/hgUVQArcNXC2nNQkCds4xLJg2ZikY1BVkIcbmoUO9j3/1ATQEDOJEd5EBkGcd/PSPXtlzGgfzHdKBrhtdflPyQodSeflWKFxWOZ1s0VU15rAUgBOVwWrW/+Cl9YKqeu+JKMZoZmdum900MztheyKkZACnZGC59777UkptL27LOsWYLLF31Qc/9g9WMqybQpww6zIlAxTspjv8iqsvY8JAqVOsG1MOADCDbtk0Mxy3YSu/WwBA1rI9bMpXjo0cGXuBAVSvtzTC+sWQAKRRHOuiXTucc7ZynSyNlllCFsH3f/cRIuI28NWyPlETTyDDHQ88etPde0HoeoBWdCVFCDGBZMrjjS97nrMmcAfrpws9xzcc0s4d245n+zwmaPkIz8l15TT+N1clVvW6iT2tdxxxFsbJorVX7NkOqE3I4lPWXSDH9N0n+otVA1qxNa6l5TTHlFlSrLmzZeavPnxzRXn8/KSogKoaWICrLti5Z+cW8h2sXCZwukHEpKl0vH3zTNarzm1/KzEeEzQUbDmeAMvQoAMgaiYNBG45mTCzmgl7IopmV15whqY0qXlN82ggFtM7H3pSyY2T0i0t6w4iqJGlaJCv3/3w/fsOYbXWTWNSgCz1Cr325S/kWMk60hpi0hS2TnenitEFa7UV9VExkuPwypfdUzXtTMg1IgvlEFHTNMx88VmbmHmSYSbKXgks3fPIE8kYoIk7tLScvpBWSl24UPctFfyBT349MgErxr4JKq7DGFa6XPuyq2axpOtrJIWls3ZuF2BZ+eCKq5CUUrfbXR4eX9GUG0DDD+KwPRhPqGhZG7JnvWnTpu1TbpU+XlMRVoBAd3/3sUTcjgpqWb+YhkgFCZes4vzff+2OfXPVpBPAbDihnimpnD2Ll1y2O64fU65gwHbvOoOOrxLxKC1bHE+AJS/S84cYtXXz1oj8JeXZ2du37cxlhZPCWykR5Q30oceeJJI8EGpNXmxLy0nGEwKSS5aRAAAgAElEQVQaoMs4VPWl0uZLN90+aQfK1VoKIhVixWtedpXwuumrMDMBbduyGWZZPMwmhliyWV4+uXNFU04KIBkBVMBACCCk9VOnud4JENYBkR8Y/cjZBaQHW1niE4DzilAkvfdgdaBPYg3CUlYHbWk56SzvDcxtisORZmwgNUK+KXG+QSNU822cwjHCuDFlecth/tMUJ01VQtdxXVv5vs/dnMe+5SkKwbJOUUyxATTBOQ0wDREeyhRfcOWlZ5SVwXkhaEimkR2YyJLQaeeSFtZf6GzfPWWAJjVYUmBSxRpRns48ZmWv/FgP0qbR1owcKGdmBzvzjB35zuMoSeG9+54UZjMqiiKFNiDW8oywXK5j+QyD1ASLiTWKJWfJW5A0kDQAFyYu38BixEps4GRQEFjyzYiTIRkauBBhYBYH8v0qPD0/+Pqd+xBrgYqZJzBD1YgdwJwLpnNc0RhAt8CVz7rIkIxExDGzUFJVBZ+ei1XWuPvsMwBiZiyrHjwmTdN0u91ckjjc/TifJsfNW1O+ZpjqsGBFmwv27Doc5JqwCwyE+x59AhaNoNQKKrSsBUcIePieuW7iTiIfyScIpCOu1NhQasSiQ3JIYhHaQBuxuPyW/+qQvPelI4+U6pot9EoXon3qi7dABJpIQ04JJkUuByCASAAGD/trCuA1L3q2pdjEFBWs0amaGTt/GlpyM/MI5+7aCbNlp+2Kr7Qoirm5ubuXzZaZPHriSFGW1o6vJZryitVZ2n3mdgA2eT6U5TYuPLDvAGkykqaOy7MiLS0nl8PNKZynpBARcVbzVNPhkBpKhkbJd6bZTyn7YNwoBWNix+Kzn64s4xuch/NV4mhsJCaefdf5zpL6G79x76GBRnOQAmYpWe66IACWQBKHLwzIBeaXnLN1upNSMmICCCkLiJ6GlS3GvK3nNndHuuKmBkzQR1TVP/iDP3j88cfH9xyvV26wVgFxTSElFiKa7fptMwSAJqsy5MJRwn17nxZEgyTT9vtqeYYYx7hzGDD/rKqFDQqrPTUlaykomIRAplXdb0JlKTLMiTkxB3VQ1rT8RilaaLSpC3EIFaXovYelpu475xrpffqm26JQAkBiGFXbasi2z4YTWwwkMGzuybMvOts7sHgicjCAFQQ77bpAmfm8M7c6ADzMR05eOjDzO97xjptvvnl8z+ppTFp2BWu9vDWDDUYMtTO2zTJgOUc0YQczIk6EBx+fKyBG8L6MqWFqM9UtzxSHs5Qjai5AGKZAVbNFIqJOp4QmVTUkAXnnytJ773Nx9PhikEbMDwLAKaWgUKSCjYUr43/46jde/+oXeEB1VH2rynQ4/EjI+UIxBSO98PLzbrn9gb6BzUDILdCrFfaeAgx88e6diI26QgDkV7vyy1TV884773d/93fH96xyno+9urx4b035mkGEJpk3233WGfkeMxCtPN7QDMCTT/UXArZZSihEWNOkVv+Wlu+b5RUsOecpIiISU8MG0VQ4bJrqnr1zy7m7du3YvvWSTWFmamrLlk2bZzf1pjqeR00rhuVLRzOomqqSF2epPwgHBrq0tKT9g/vnDu07VB9crEghWoMAlBiOTtTh6E8DkIDstoPVXvSsc/+Ek6lpMiUyYjPzFBucXsVdqnre2TsFmvJaB6uEs5n5qIj38bpsZgZC23WyZjCzqRHRGdu35WuzESbVmjID+uije31nipbmwZxS41lOwwxPywYgh1aWh1lEpCzLay/ffe6us5918fnnn7N1WxcFAAuABiqz7RhlJS3XgNPYomOoKSUCGY4p1l7XS092bOuV2KaKipmBQhWsAFJszBVGEHKwcbGWAhINjgDmC87a3HE0nxwSAQwWVYWddtFyM9uxdRPYbHiBHH4CE3Y5Kny6siknAAIFOALCVMLQdaddjGmjouxcnWKPLt3pjUEK4TpSudIXZgQXlu5bYN8sDni2I4EVA7PCsSVVVRZ4lpyLEpEKzmIQmBcyMwUbsSkZApGMBl+AoaxRHKlOxRgVRo5I2MzUzMzOP6ucmZrevnnTlpmZTd3uVFlMlUXpi0C1maVoIaRBVc8tLj11cO7QwuId++qmaWKMTJYlMsiMGSE0wuy9T2pVNIKII41JnWNNQohq4goAoVrqdXxo1YBOKoVJE9V1elFD1fQLT07EognqynxAIeR6jq1ekpL7zcDJjBrUbFO386w921/5nHNf/pw955wxOw71HoY8cLQPTERH1NYe07CSR3a8AYCZ0Rv9CHQBCC/bl5wgL1lLAEOJKXIJeMmluz9zV38RtdImMZ3SNMfFisL/zzQai6JomqhZZ0nVuaKJgRCfe+EuaAVGUghRCSQq82c07NMcrYSOmQNbPcCy3InP+eKWNUBVRajRuG3LZmCY9FwlvMXyxP4DZsZEyZRBzByb4Jxzzqlqlps3o9BEI+12u01T1SF1u11OoakGRemDGROMxcBK3MSoJi4R0HR7snv7pkt37bjwrNnzd85efM4ZZ5+xvVJ1xCI0nC1rOgrwjWJBlgOUDEIyFdL9Bxa/+/jBux556pv3PXb7A48/fqgfgvR6mxpN/RBFQ48NiE1g5cJbMg3EVIo0qY5Re1PTdTVoF4gnl+gRTUOz4L1M9QpNSUNkSKQtUzJwrh9SXGq8+WmvXPqOaf8lzzrv+hdfes1lZ2/Z1ANJID4YsOU0+1oIuOj83Z+47VZmFuKoKZnKKRUNTSkp4JzDaEHjxW3d1PMFg4SAowz1ZAs+xtkRZYxH8L1ptk7RmvI1IiXrOh+1OevM7aN44kQ1LQBSPrR3n5k5RpUU5Bkm3o/KwgyAc05EYoydsJTqRChUiqVInnzRgYPGZKBIMLLkYNune5dcdMGlF1/0kvPcWWfu3D47QwCpFUwwIIUOexyO/LARDKYAmfAwcUNmYM75LwbStq3TWzbPPvey83/+OkTgvgefuvfe+//6C3c99eSBRs3KLYcSA5iWutMcqrQsCk9A0zRM3Ot0YozReN0MbVwn9EPdLb2maBpgbEmZnXflQrXIhLofjHynnLEYpsv4hle96Bd/9PKpqalOWQBIpmzRw7Y4zf7y6YMAz770fG1uplI8IWhUYx4ejqcAZjeWP8k5BrNkphfs2lFwFvI9LH1FKwdUv9durx4rH5YhAjArW1O+hrBp6bBt08yonnwVV8Igjz5xwIzIjHJ1r0ZxTlXB5F2pqilpSjGlQG7GUuiI9jhWoYnGles0ZiXbTEfO3bn5Jc8+/xVXXnz5OVsd10gNXF6zRoATISkxQ52XpFBTgCSPMRn1a2B4FBLl2OjwSqTsCEQMDxjMG569Z9uzztn0M9e+5I698x/84m2f++odNn/IF0UkP1/s6FA9CCGEsHl6qhr0NTYAF0WBtG6kqNcFYgI1S+oYRGxEwVANqrKkIB0Um6kebOXw9p9++Rtfd2WHzaclCOUeehALFWKJYnWaZRPBls49a4twisNUoioLnboWGRKhlDBqkR0nGy7ds2PorRHILK/CeXgGHU5IYFT0uXxAc2ZlUz66IBzWAUixLE+zL2rjQsywtHW62xWGri5eDENNvH++AsCaWJxBEE1DZHYkw2IvAEJwvgBIuZgP0XvnPftqfmeHrrjkgh+7evfFF164Y/tsfkIGDKVJqQZVmMELeDiwKjEAMQwjKQnGyyKgBgM0gUZdp0PhCzFTgEFEoEQgIuKiBi7a7n/7F174mz9zzXs/983/8emvP/DUohTdaHF2646Dc4cGkTqdblNXLM40nW7FZOudnuvGOHAgRz4pG8h5cR3EiiiFkp5465te+Y7rr5lOUaAIFt20AAJwUgDGrCTJT51uqyWCzHZ0ZrpX1w1rYjGQs1jRKQrQZQGsHCVnZhHJRZyX7TlDAFDOeyogCgjU7HBcZZxqznsd9ciTvXIGoJTPVgXpVPeUZQt+2CASS2HH1s2CiNzcsFq/z9zCoB9hBGgg8jo8xYSdi5pCaETEMVkKZhpRlt0OsXUkvfDy89/wsitfcOmurV0EAxMY0JSyCgwAInACKJt2Gzb0kQCIo6tMPjNy6QEZLNf3jmoReLRZMLhh5E5h6shgClUxRlkCjLj41tde+XPXvuB9n73tb2/4/NOHqrmnHutt2nHw4MFyutvxxaCpyZ1mEdn1jzVRnHPONTElJWEO1RK4duj+yBXn/MY//qWzZwWIcC4kOA83WmYNjxAAptkYndL3cQyE4tRM76nGkBI50+z2niLMbOxQ5+r7EIJjvvic7UAEOcKyFhLT5Wvx5W749+qNu++tT/ze5x7liGl66vQKhG1gEozIztixBdBV9C4zpE/sn2uMiIht2G2Rv9xx1UrhJNQDC/X0VLdvetmuqTe99CWvfv6Fm6c8gESogA7lpV8U53K0JBqI4AQhJOZcKGYUA0PJORkdamYGMyhTdsNNBUfWDKsB6glQICW4AsRmlF+bASkMnPO+Ox0BA37qlc+5/qo9f/aJr33gU1+sq3Jmeqqq+p7NiYf4tH7GNq4LEpuiSeAmpV7ZEzMb9M88c+qf/sx1r7z68k0SERPEGWCCBBViU2UNIAIbIIDTVcQlTg1EyXsxCMyYLKk64lNVpEsko2pMAxBjJEuzs7O7ts9m6SQAgJqxLUuPLTfRZra4uFgUR69/JgRYjjgPDQaibrc15WtE1i+emZoe1xAlU5kkYIyDh+Z1eGKpmaWE0okZ1Cyl5BypkmnadfaZL7j6+b/yirO3bdsmh3VzVWItIgZhZrCDJiARkc/5TCTnCeBkgDHccH0mOYfDh2th88slDCe6WFZeVjCBSDSHAdljdIixyDDy4rsAYMlpgjhz7Lds/tW3XHvllVf+/p+974n5QafTQQxRLUU9DU3G+sabmhmrCqWUtOlffsE5v/Yrb3vJTg9BAwfvKEXPXIz0Tog5cTn6usEAT2hhO0Ukg1DOLQ4d4WhaMOsp6vc0AsxU09A9NxNf7ty5s8NAUuOjnbZxfHz8c4yxLMujpsFhuSlPKY3HHTAzmEwjMRfGILBJYLlgWj2hDlF8CShpEJEqQFwJa9NQJxNJaaH0l2/iAcouAKuEijjh2quLD82ZNX3vu31Riv2tPT9fk7M+FT3yHdV0yZ4db3nNVa993p5CKsjskfsPrTONfz0ymEijU1ToiKNNiYiOvCMnl3L+i0aBIUYC1FAs2/TYESMSiORXIgAZXnXJzJW/94u/81/fd9Ndh0w6Thqk2orpqj+/eWa6GjSDupnuTVkKYim0w6knIy6G4HPuJAX2zsySqgU216GmLriIll5/1Tm/9fbXT28a5saK0b75f5Ks3/e9nzU3AAwyjMpme5mICJZGeXDOq73sF4sdW4fZyGF8oOUAL/JjsVgNIFFpgLMIoCG3UoxeGBEzjz5xoGNUeZHkHCxZPFVDzFNKReFQLwWZtWgALyZ52XkOYEhneI6Ro3ymk8fIIB8xZYJ5dvao8zdvTxRC8N4fIY4zXAuYmeVTjoCZqZ4ZgR2YLBlApjlw2mahTjLMnMymprvDI261EGQSOTS3NE1lrAfRq0z5A/PBZAt3O1h6+rrnX/iP3viqy849QwAlDFCcrOXV8peV/XMQNBtjS6aJYDnkkt/G8TcYjx5fA3d6Xfz+v3jHH7/3C395wy1zKrNTpYZqyvu5/funp2dmp6fMqElmbbH5apiqCI28PGnqSES+LDQmT7poXKb+z19zxa/94+s9YNUSOlPH9bAjt7FAjWyniUFMJAaJQAMWQs6UEpQsiUaYmjv24x8xHCKvCw1miIZcFX44QmKrL9HG0+IO/3qKVnU5Pi7sPEtus3PQ83bvmbBLDpOKSAhBRLz3x5wO5gCoau79SSk557JZz08LkFmiUXnZtk2zyZRZ1MhAjkhhbbPGMwERkcYduT9oyKTPOWLqyaceB80Ts5Tblvr1tp4TLL38uRf83I//4uVnla7uiw1ALjbmvyfQ9gOgAGA8SmUCWfwLyEPpAB1J+ACqxzM+4yiY4KBk8Vd/5hWbt+z4w/d+sk5wMUhZbt60aTAYEEcFi/cpZe+/ZUVSaDqdToxRFUVRikcyTUklNoGcg/70y5/zG2+9lg0NwXVWPE6Wp+COiOSiHF7NoRYCUSTxDuxQDw+SXI61bO11bCyM/kZ5RyImggNMQcyqGCa/aRXFuPzqci7nlCt1k2lKRmBhWIKqdpxdfOG5E3bJ6S4Rcc7lBNiKpny8dW5Ayu650tAPVMs/GIM2zfREKOaTFwwmS4GYFKkNXZ58TLdumWVoLlEiGkoGHXNbbwgpVWbKIuZ6af51z7vg5970ikt3zmZtfpS93C5feEYYwJ8kv3zobSsAAvPoVEk5Rw/OfdbDzeSEnaFI7FIDGMR74K2vvtyL/v7f3EBSNBHOOUjBZJaSGYNduz6cTA6i5hrlGGNeiIcYAPO+fPUVZ//mO17PptBQEAJ5f3xf2OGCuYSkiRksDF8YWAEzNCiJQAbm4RFsBlUtOQ5/GT1Q/j8sy6ZgtL0ZnDbknKkWzDGqOE4xijvtYvQrQURqlojFghkD2NrF2TunJ+8lIlVVdTod51y/3z9m170bRsaBXKtIRDloPv5gxk43AZ3ST091Dhzq5/V+7kPBUMqr5WSiqsy2ZaYnQ8U3polHK1G8/+HHlTbPFunyPf5/eds7Lz9jRljMIswoRRA55wBWg3l3siKFSZlywJwMFseJTzd0v1kVyUbS6XzCHSQMgziAq2gdF7nu//yPXrG0tPAnH7kpwS01WpY9DQPnyExNYK1TPpHCcVPXYFcURdM0KaWy9D1XqvXO3eL+/T/7CW4GVnSJAGvo+MYcL/fQVUA55WaRNDFLLll1LneIGVhAYoASWLhfZz9y6C8zk4gQkfMggIfTy3K1koIUrjtMtFvyjmJUWTFO/j0vMqd17LDhWnuEhnl/zvKPQhedNT2hxHvcGeScyxXox8x5Invl2XbHGLNXzszjn4Ej1BCJ6MztWw4dWtC8agaPPpTjaWJpOSG4U7jpTgHUgAMLJsb3Grim6l9x7o53Xv+yVz3/PKcRaAwFZXkjRzCLUVlYCbpq5+gJvMxxRjTPCU95IStUgwTETMy0PPZ5Yt4TWxOoTIZSoKGRzrQBv3z9C/fOxY9+9kud3pY6JgcSVRaOqZ1lugpBkwKFcyklIprqljE2ITRbNm/9f/7VL3UQY9FNdSgLb9xxK68CV8LFAGawGDkVF4G6xsGDh7796NNz8wuPPXVw71NzTx5cOLAwmB/EQdOwlKP+9cP9L0Q0RVWnU872uptmupume1tmpjfP9rrd7u5tUzt27Dh768z2HqApKRGAUcnG8UBHCUutLbkXPxH7VIFLgJ930Z6JLhqNU5j58zGzqaljJBgOR5my656V4JdLvRz5Qzr7jK333fcAmSQTVSVAVYlP5aezISGiTlEWngyKw9pUK55azvBTr3nR9a9/6Za05BRQB6Tk1JnFmEhKMMgN046aAuTkNO7mniElGKBEoOx9DSPWnCOblnNTh3uOjh9VY4EjUErki0ohFj2lX3/zy59+7IFb7n3S1Pdmp6vFQxYM7E6dv7U+ICIRBtOgP/DCqlYNFmemuv/mndfv7FGKUZxzhYQEOHik4zflQ9VyqpHc3FK4a+/cTXc++M27H374yYNzSwOQN0s5siND/1iJCLHmcbQ9/6MEojkqKOLJxSV7Yt6SMpSZmFm0huk5M/Q3/9dvOdKicEtVmO6spmmRo+TL9AVPFWpJFeYcDaVF7XmXXcAaj6EoOSKnMMcveyXJLJdzowDMrNfr5dYSEYEBarl7LwfdAQC8bdMsk4IQdXnz0KpS6S0nBjN3Cjduspk8QQiAxPm3X/9SAoScEQLBoQQQAOcdQZHiqL6Q+OSNECFoE+PcwuDpucWnDy0dXOgvDprm/2fvXaMtu67ywG/Oudbe+5z7qHvrXaV6qUoqPS1ZsiXb8hNwW9hNgoHASCBkjAw66dAkIXToX6FpGBA66TR0J6ZJCCMQiHk6YMA2NmAbI4wlW5Zly7JlyXqWHqV6132cx957rTn7xzrn1K1SnX1vVd26hUr3+1F16tR+rLP3XnPPNec3v1lbDTAsF57I3eYNE9s2z27dODU91brQnka1FLlWUDUpasCzCtjUbZTw4//4B374p/5D1bGy1zcjJ1kkWSfFNsOAKtQZi3Muz3ysetOT7Xe+/W3vvHljT1G4gqoFuEl2Q0WGlS22k1VS1d95+PTnH/zyV772eLdv4nMjBAucgm9ExKwgtSTq4MBEqFPYI/mbANTM1BxXMCiYAGNRSAST0SJNtDKmaekrJpljtFbhYaGB4nVOfQ2uNIMFAIGdSA02i3t3bW92b5IdH9X6j92MiEIIaVHT7/ezLBtYbQINA+ajxQsRHZyV0mXQFrtKVTNFoGCxYFoPUq4mStUDs3kNeG0Zp3ZW1sTk89ND0m9OGNC3GQOpKxBDMixZYEVAg3rHae6AZHD/UtkOUhjGztAHYxfkwb4T8MKJ/pOHXn7y0IsvHzv1pUNznU6n1+ul1V9iv4pI+rBUmTPxqG6/fudN+7a9/XUHbty1MWdN4lw1IAZHAVaTtUCIpAwlczkBnCWTkg1+E4gBlX0bqn/+/e/9qV/9RIylEJn3ddXx67zyRlBNWS6x0uCYLIplkxP0k999B8QN8uDZFFL8jQAIYtekXQIMZFDEWslXzEWEiUbUhuDQ+ubhxQ/95Vc+dv8jVVUFo2A5cufBFPo+xpyt51oxRtLIgyABgRQRdZY5DQ5W1gHknZCV85PeujiTCWQMV3qGDbFfU1G4tjAAdgyYBnLj6y16x3veKBPqC3yXpGWoqanY7rIiqkX2U+XJTmur1eX1O9qbp2S8Oi2wpOKnGQ5D5VxVLYpi2R22bt5IUMNI1suIrqCkwVULZvZeOL3CL+046UMiMKVpZGZCKi4VEAy0DAVQU4GaqrFXOIx6vmj46+f5iSe/+aVHHn3q0OGFfqWcR0gdNXNS1/Vo3TYSl1i6JExnjDGa2QNf/eaDX3/qg3/8F9umWt/25tu+4+2v379tSrQHjTVNkmsJwWLJnIMaXUKKtco77r7xrQ989XOPHQ7KdXchb09ove6VNyESXG01h7afrPod1uofvf/v+Gy8iyCFxpiLqALMxhmlxg6M0OtL0X7qiP3GH37iLx96IvosakDlpjIm7dXdHrzTfKJPk6cCJrRPbOQ4PYCa9CRA1u/7PA91nQnXGthP9ONUFHHjOykTUZ55Ac5EBRp+MKEKEeDkiRORnY/Jt2YwpsxRVGENSnRw706Am9WV0sxKBr1Bk9yNGqQOnLXl3gC7d2wVmIJqVecyEJFA6/UekqsMlrNkEtJb89IPe4Y0Ro6Asiy9YxbCkLtawXkCWwnDiVPd+584/KmvPPelJ1+se30zC6amZJRDOWk5VFUFIK3qRmexIZZ65QPCq1aR8spNH6r9r3/qqx/+1APvueum73//vXs3ZV4Zhgq1iGeDKYwDjVuImJn4HPjRv/feh3/yl+eoPdku5rrdwq+3pW4CO+KazWvV64pkN1276bvesj+OX+4FsBMg9EVcCDCwd6i7C76VxVb7P33ooQ/96efM532IqkYVyXQ+lIDz7Y2p84lod9b7moyIYFqHaCARL94ROC9a/X6fxTumjGJn4TQVUxVlY005E5u2i5wBVRMmqLI0RCi4qioiCiE6N2DDNvnAlxkR5BAq9hJ6IHf3zdfFSMJxXIAoBVVGrtKIMv5KnOGVj2x681C2bGy3Mun1LZVkN7wl1nEpILV20WIkyvbFc2ZHZXjnMJGs6iIrXJ4HAAbRKBxQdbJs4qVT9V8+8sLH7n/sa88cBnPhNVadUFPS5ByIdVk0MyKL7EdPzlLH/5yzj/LnDHMwiz2N0cQfryd+6/PPfeSrv/mD977+f7r3Th87AqmdB0GaH0UiBij0925pf9+3v/U/f+TzPXWZW18eLgMyVEQ5cYCy6d977ztIaxqfA6fR3xqdCIhDNNeefvTIyZ/7wK89ccxqbrV9qMvTbC7Lp0uDbxcUQqj70Zg5g8sDRHTY+MmisRBEA4UQjDs1vLiWxsihmp3Ig1W9qoexDiWr6tRE6yxWVNMP5k63D+Kz1oh8xbLjRgKtIxc+dNnx7Qd2qjXFBJea5X6/39DHbcBUYeayLJl52ZZvBWN2eqIsz4imm1mqEFnHKsIstldDh3IUURmtugCIiGZtxChcCxRKlWRH+q37v/T8h/7qky88//LcfKc1sWGiKPpVr9frC0s+0Q4hpJZyzEJMlhZzGpMFTwG30ZM3+rD07AB6fqPVpSBmEizWzAxxZah/42MPPvH1R3/yn3zPbCsXQ6kqAkQay5ok50IJJ7Hs//3/8c0f+8uHDy3qBs+9dTpiM0Ismaei5W23ear97jv2op6X1ArqfBCrgzpyOZsRAqAV82cfevpf/9af1Yu9CZ/P9U8vRsdTG30kKQPFmrxUyiC/eaZ1w66Zm/Zs2r15atemre2iVRSFiNRRFxa7R46fOHHy5P2Pv/j1Z1/oQE71y9mpqU53wUPbQuWYG29EpmF2akKAoaIINZTOAbLQ6WK0cTqI2bI8gssEEbG6hzxj7W+dKnZuarlh86AGMHMqEVqqxHIOzqQ98zzHiFE0PsZChl3btx09+iILzEgJZtbQuGgdFwmzdpGUAleiVb5SLG0+wswwjUqPPHn4w/c9/FePHTnahWMVc+32JMeyXFgQduKcEsrOIjNLkt8xRAURGTNpxNB2J+87aeouZbKeNQAN5JzjXC2Eqsydipa9bqey4uNfn3/h5//7//fPf2DrJHKHAOcackGACGIIkhdThu/6trs/8Ad/WUKvlEzSqwUCkjzTfq/szH33+7/FRcDnsPGm0KKIrwEQIZg5/tQXnv73H/xwp5xkzcuy055odUOEUhVINC/Jbtk1+y13HHjXbfuvv2aGmcwAdsnXS5xlAwFTtxzcFoDv/Q4cPlV/4q8f/thSUE8AACAASURBVG8f+dRiKX5itup3OFTjE/xMqDfNTsFqImdLInjjtj81t2DgpZFku6L2ShVsWrPcun+rH3LKGrZPVT7JPjdY5sEFK8syz/MQQlpEN44k7Nm140tffR6D6yJJHW9dUWu1oXnul8/qLIdzigNoqJMpjLnafeLBZz7051945shpZoe6O01GKqpKZMYClwWwwZuiyJKOeU1Gqe5HVWMVxedLjzwy4qO6BhsKX6Qvs9AxcCSJxJCs1OiY8qnZFlOnR08cCf/4p3/xP/3U/zJbUJY3+VpkAIk4qevoPX/3u9/woT/55AlMI6zrmDfCi1OtnN/qsr91z61QM8lhFdGYmkl2GmsvvoqAyx74+pEPfPAPj/VkSupOrLOp2U6/nzPnWmvo3PmG23/s79y5ZXZmMs/JbECEIcQIkbRcWqrWAjZDlN0z9EPve+Pb7nrdv/g/f/m503NTU1PifAjnT18bgYg2zWxIXKthsdvYJ8WAufmFFHE2M6NIxFeSOR2V2VmsK/VvumU/gFQC2zDHky5W4hE0vLcchgK4iYi+/FDMtmzaTAaDRbKMRmmEdVO+miCic4NdF0WGHd3+UT/Asizn5+d/8c+/8fkHv3Ts9CIXkwQxDcTOGKq+QjQWMClUzMSUYujDExE5gkVVJVMiIvHJdmOJsHKy4MknSBmbGONos4ryLMuoLikGn0uMKOtg3OqWvQ0QDfSMZT/687/+wZ/6R1RWmo+tyWYgwgnUe0RgJse333P7r3z2UAvrprwJ0Swu9nR2+o6brp31asIwNNRtRTjhGlZn4p8+Ef71B371ZMhda+p0KLOWan3cSctoYmrS/at/8nfvPjDBYTIVuwykPCyCVIRgQ9uSPGIdEJQqh6zuM4frNhc/+P73/OLv/rmGKpYd+DHV7MbMPDnRWqGHo0Cv1wumGZOppU7FV9CUEyDOa4yRihuvvQYATJW4wX02s6SGaGYNJtoBEJHFxcXJyQGRs5mIbuzfssP9P+J8XReZRwx1yd7X44Oa67gYmNmEGAAj1lCJyyKJaMSYm26ARiMEZgJM62BZqx9AxDnAFkWoDHTfl5/+vU89+PAzL8EEIMqmTJNKFwAEBVBLqtFcEpQzYQZBa2IzMy+5mdV16TNRuLrqFnnmKd79uhvfevO+g5uLG3Zu9DPTUCNKHjqfXui98PKxo8dPPPriwle++fTjz8/3yCuIzDKKHOaLbLpePN5ut+uQPfty7//69T/78X/4HtEaLP1A3hGpMpmBQWQGIwhKxGjSFgNQ/e33vfP3/uIDlRSCqKoqOcjBAmtNBm2aLK8hkJau3er3w/e8fiOSanlj2lO0iuxYeZHwv//SR05a4Q1V2c0d2FxQL4q7rmv9/P/6AwX3I1pyjqkhGfjNI8M7FFZL8AB8RBQn7vabd/nY6WJL7VsZzp9+c1QvBL5xaw5CBWShLF2ej5fDFKufOKVT1l0wX5DLUJsRr6gv12UBmfaqqijyTU4P7tgAVZAL44U0Rq5YCoM3HHnAKJ+cnEwL4eRPNVhzAjZv3uwQ2fu6rsU0z3ON5XqsfHVBRDLsYLkSGWEFhCOgMVp0RXS+ZXGCehDAimMn40c/98gf/PVDz5/uiJs0bTFdGP9amGMccKE0qqrmeW6IMGyeyL7znXd+73vfvrENUwjADAKICVBTBdHMdGtqes/11+95K6nHO7o9PPD15z76hS9/+emXF7o51IdyPtuwvdPvtT33u+VH/urLt96w9zvv2Q9DxlZXMc+S6uHA24sKYYawGUzBYhsmWrdev/eLTx7OMm8hMEwtEBHAtp6WHyKFwtqMW2+9NcbIZ7NIz7uDgCPjDz7+xacOPeFkKlCP2VVVj4gcy67Nrf/jX/59T0riL4JsZQaiCUgNi2UPxjlRNWGox/jN0Wgi9+2iGNniZQwPydz84qDZ8Ujt9sqBiJzPg9mdB3ZAPBCMxtfsL+FNZln20ksvNRzZpY2WhjtH9INxmJ6e3L6hODpXGiJMmXNdr/RcbVjUQV/tpYmd8bNOtAR7g2MHBjKGGUMmn3ph7rc/8dFPP/rkXCi0FMGEF6u4e2bBu8LxmDFz1DiIg6t5kW63u7lNP/u//cidu1vSnycVUBbNRwDRnBCQFu+W3DMiSCTj2Grpu9+w+1vfsPfwKXz4vgc//JnP9jthrtJoLq86RdHqWPGrf/jpt992zUzm2YtnMiT5gtTcyvFAHYSiIWVHpzK8++5bPv/4C4oiWhREUgW7AOO/iS0nrwwMrLG+af+u9sQU0o1pnOxKjlVf7nR/+xNfrLQWU5/5fhXaRWuxV7U8vuNdb9jg4GBIkm8X6NMZQRXMULIHHnqsF6DUyeHHrT5VdetU3mq1BpNhoMU99qQGPnrshC6p1zcAV1AzSgP5oluXb7/tWhBgKA0F1RijGZq86hDCpz/96QMHDjQceKBVm/6RyvaW8oLPv4/h4K7NVR0z51Ot9nml0NdxKVALuc+SYBkwvCMN04Q5GmpDanZfA5965Pkf/vnf+a6f/W+//9BLpzuFVhCn5EpUi8Ur2nUvixhrIhKRUGv6UNelE/qZH/6e1+9qOSjlLVAGNWGV0JdBafTITCjMSNERUhKnQnVfwuKu2fBPv/OuP/zZf/Yd99zajouFI2NJ6ffnT3R+99NfpSwHwGJ1HSMAA2IAkFSCDMyMVHTsoW+97bqp3IeY5G5VLBIRSNa7oywFQd9++3V1XQOolnPCIgikf/SnnztaGvvJzFMZjcigqiBY3Lt1OrcKpDC6iKiFAQyFYT66P7nvwbw1YUY2XrfWiHfMtITFBopCNJSoOD9qw8nTC0P1IQOlnM2VfB4iTBh3HUyBclYAY7riYbgiJ6I777zzqaeeajjsmZ+UegmlPO+yVT/Xbps2FhERMtOw7vSsOpi53S5GpevLVjQYPMM8oW/0+5/9xj/4yV/5if/43x/85lHxWSvzGYUs9gsxgLuWxWLzRQxpVHiWHi+N4dq9u+++aZ+3YBF1lEC+bx7A0I4PWrcMfgIZs7ahAoUZXAZXAEzQ6YJ/7B+8959977dM6FxtBqZCOz5v/fqnvnK8j16vDzPvU7dIJSdDHb0zRXLRDIjXbCwO7N5CUE15VwaJgzgeE3h9DUKJ2OyNB69JHpsT6HiqMgAC5rrVn372a9Ex00SIPTUnQrGuRKRf1i8dPUqp4wcR9MJdBAVoEfC/+dGHj1fa7y5OtTYu6HhTS7JnUxvQkWYjNzIu5rvarWKqwiEbFjpc6ChXD8xMatfMTu3bMgUAxM1yMCNVjNnZ2XvvvbfpyEvPkYqwm+24GZixZ2NbnA8hqEYiOk+/1nVcGjzL9OTkyq8roT5d4lc/8eB3/4tf+H9/+0+/ebSzULsgE8X8ydibCx7BSdUProZjWQzdixjPkC4OZo5ai8i+ffsiUa1GAu+YAOcogmuVM5KZJKlCL63eKARTrUQqcjAHZRhHQYv0B/+HO/7n73pX4biOhroTy34HE3/06Yd8ezK9DwgAFGpKiW4vBBpkvFJ6zfQtt+4X1MPlOUeFKWw9ArgEBD24Y8NIJKdZJlOAB75x6FjXxboLoLLasYeGqGGiVfjWxB/86efmlBU+kTMudDCOAXKPPHvqNz9yX2B2wouLnYYcNRFdu33WVMNwCdDslb905LhBiJrUS9YSCjYNd163w3uBGggZgPEt7ZJ7HUJYWFhoPvLgEoQQ0m7LhkpSe/Xr926PoBCC0Iq8+HVcOCypm6kqoMvWCD3x3PF/+tO/+Et/9IUXyslORZnGmYm836/q6alaJatcIa3au57XTOKmi2rRcM6KTWDdxYUIsHOAIgZSTa3UnZwRhBhWe4qIZ3aVy8AuU2SGilCygYKEUEeOnVPff++b9m6dkixXaU20CunNffgzD3YNYBrEhMxgZzoFMZQowFTJKRhmb3n9AYcaQFQzICiZEa+b8iXYsmXLdAEAzKzLZgKjfvqhpzskU1lW9+fyfIPGvqqK5153vqz0WFX82u9/LrWPihfu7pLqN465n/vgxy3PuQwhamuy8KE3bnsF7dm+cZTDBBHQZLMOvXQEzquRmf1NIDFFA0Hfdtu+1HgtAqRVbGyuZWZPPPHEeTsHLcWZt9nCwsKKLLIhxnhg9846KJE5z6kdyYp+xzpWjBhjiu/FGFdCg/38Mf/4yz2NUWLpsjwY9xbmN/rIQdhnfYn9up+FmEeposzxBbdpTm54+pzqgWOMzzzzjGjpEE0V4kDMBKFAVgKppCi9/AlECgsaMwOiggMQMgu5UYQrXRYdXLvtrHrXXbeRZD3kIYRpdF6e6z32xMsAOZcW0hHMYZhdizq4ODZcZR/cs9mR2qDyVNIrJFtfNQ6hRtft34fYx4DoBjQuxIn1i19/QT1bt8zzUJaSOUs1vU5APj9V+T/81Of+7NMPxFgvV39+HnQ6J376F3/v4ecXqtArQN61ytBpj2/rZ2abZ6aJyFZWynL8xElmN6LnJe2VKxhiIUgmcsu+nZEESVLWlnGsYox79uw5ceJE85HPKKBOTU1hBbw3I4hKnsm+rdGZ71RTk67qr5fYrTYyL4dPLgLwjow9CIKmJZMef9KmZhxMnHFQ9hBXVBpNK9IoRsysTErKFD0u3CtnjjFCSYhjrBUInL18qvfIo4dKuNoyWM3WN8CIkyYPM4tQyoURwCDHEggQHvY0IJAKNNfSAWYCZPu3zWblMaJYSatvmQX73c8/C9QGc4BxAfY5AQQBHHuIB3M2LJFoxfr6G2+ZQDfAOija1rHQ6azncoaoVW7bXAeaMoBQc0REUyrhkcOd2OuiDDF3QlMOvdLUXLvmNsG1tD8p4UTp/t3vP/Af/+gLAQhnDKwCqrAAVACgA/2Q1NPGAODZZ599/8/8ybMnFiasx5DKSURE5ODHuhpe+wcOXIMY/YCX6qClGKIpoLAa0OQtKAxWP3ICed0hrnOiXqwjWjWCv/zPw0j7CEuUn5lZfNg2NXnN1lkXewEcAVArb6xrc8612+1bbrml+YwDw53n+dI3VcNby2Bpp13bt4IGRJmkD7COVUQd9NSpUwCgOrgbzSRRtRgj1JbENJaVp1gF/MYnHwxAxjXAgYshiWGsEBiZDsfkgnI/WFQG51VVE0UjPHeyG6WVWR3785a1XZY98uhXQT4xLtIvbXI3mK7bvU3Bwixkys6T2qukHfsaIHOyYcNUyltjQLZuclEPHzleq4FJVRGViISJzNjUYh1iLSKtiYm5Pj523xd/4hd+8/SJUzGEFHCD1mzRQamuA1iEEHuo5wE7bfjVz3zzB/7dH3W73XRnzxFJHjeezTPTLqmpjL4iAcDEAA9CboM4MIHk6NHjtUYzUwwmhWOx8SVFq4VEBUxI8zFpE8WAN9yyjwCwo4GCcxODM12KF198cdkzDh7xkWxeCpo3mQCNIBD4ht07iQzQENfCZLzWEIGTp+csSU4QMMxnjEOesigJxmcM5mXGfU+8/GefezTxAes6aWs1eXkCBdSMIgAh5wQMNbQzArQEPvmFrwXKWpl5stokxnj85NwTzx/PfIbE5GGjJkYK33HD3hgjqRJirSIW1dafzwGYbPPGTUsLFaix2+DTz78ch22hzlQOWvSOnbCqlmUZjdQXLy3Gv378pR/66V/55Y89+PQc9yUzzqEKrT0HBy3rEKTVzaY/+sXnf+Snf+3f/8YfL1K7LMuRFtvIjW0w5Xt2bhIQSAyDKuXEgUwtr0CiQ+I4AAO/eOS4GumQdU2m4ghxjRhNr/TNY7Rvvet6MUTyAMRgqBu6gxHRhz70ofn5+WXPddYhRk0+G0wzM1sEgQ/u2mIUVSsveVmXsl7uuapg8d1+NWSAAMvFviYn2mmRBCEYKYHXJB5Yq/znP/jMHbfevCfvtXwWjCNBGpT2Qg2fG6iq1TM5SXocgNX9mH3msZefOnRY8omFxV6et8hCjNHnxYOPv3D97u0AUk+jRiU5vmXPZk8alBxZz5BrBOdY5yMCADTUszPTjW2Bz8JLx04ZeRGxAEoNty2yUV1T4cR7hBhjKFk8+XZgeqay//InX/zQJx86uGfzm193w80Hds9M5Kx1GeafOzL3+a8/99A3nj96uktk7ZxRnqi5PdIIOseTPe94rt0+S1AkkeVRvachUZlkoPcJEILh9NziYqdLzhGSq26mJqlG+TJj9CtSVHTUm2Xau9dduwkRdeq9awBrg1seQnjHO95x3333LXvGM/czhOC9X0EfOQUzDDfv3m6ogcz5Vt96TW0n13HhUKN+VUdNOhkws2bS2GR7gk0FZzKTIAXpslLIlwhRPtVzP/Hzv/ZLP/FD06gp9tkVSoExJtzpfPKrC89kARahSeRTjgX5wAf/2MxQ98y11bXQnXM+r+r46KETUaNbWfZy2xRvmZl86fiiiIgZWLiZe/xaAmucnmxhGLJbdvsT891IDDUiMqJoZEh6DK6OJkRMANWmpqqhttyxwTpl+PKTLz/y9NEYo4KzLIv9OZ+3oqKqambnvAecCjGd27ekuURx79YNpjUoT/YfxBHsBvJqOCOUaGzAS8dORyPPPoRAwmQpAAmiy+7nLPXHl2r337x/x4aWg57xLKixaMQ5t2XLlu/7vu9b9oxnzfOFhYWRY944TAC4dtN0UWQGjdbchHEdF4MA7nR7KUwyuhs6/rZMtHKLaoije7c2US/nvFbl0y+e+tF/+xuHSy9OSHthnGIqAOKqtjpisAI2gH1kf7zOfvzn/suRhSCmhZNAvoxWCDmGEh5+8gVhMaS+jNxMenPATXu2hKR8arEGNwZkXlsQ0nbRWuoVNNewn17saTQNNUOJRI2MQAbvvRHX0dQgZh6hECscad0XRCJScG0cKKtMurXFYravTpUy5x1Tr6wX+tqnlg6RsoJLLeB5sW/bTKoSGDw/g/w3aNCiEMBwwhCefflEKmpT1VSgSultdPkZTaNfkfRBR7Hyt912LeBBwad1ImG8lNYAK6xVPqvaM5FY0GwFzBSAQShcs2unWdS1Csu+1jC/2OUzMc2UBB+7cbvImXDONFgD0pVprYgl+688P/ev/sPvfePlKnKryecx855cenpDBPs+8VMn9Ed+5pdfmKtCUFX0+1UrL1BHNTKNzrnnj3cWFhfMkg+4jFS/abjt+j0GFw25hRoZxpPbXmtgInGElO0cXcbx92uxXxoBUE4PF4FJjMBWQ43Ekc8iUVQNUYOa+YkoeYCEEFjrgsMklS1bpHIRWkWzGj5Q5rOiyDKOJYZP6bL+eMLe7VuEYWn8A1OUEM+I11oEoMBzLxxJvMl08IEqCUHXJMCCs8MsRJTn+Vtu3RPAoOjT4EkvVA1pHM5MiaUslKYLSlBTAAj13r27iYzJ2brXs9pQ4k6nc9Y3jQXWRVGM+viMvlwDU+64W4uP+YQaPfz4cz/2b//rx/7qa66paGNQt1kHhSsC+NOff+LHf+YXHj8R+xXYgisKE99fnPcCZcemVa/vWhPffPyJ5J3UZSOT0lRVD+zeRs6bkucQJaN1jaAz0FHjp/TvZq+8riMRydBfJmKIUwVrIItqFCAGB/YkeYRDrDTWZpGdKPt+pJ5xzYVKbnBE4igillr3SPsOMUmxLmV6NMv5bZ6ZZJbUgXDwe9IfS28xEQwBOHzs5BJGOakqCQNslz8N/spp6L1vt9vXbt8QAbMArSwN3tCQyFl51c5ZrXtXskNpzlu3YphvvWUjeaHa1abrgfJVRit2T9gUG1TBpGpgbmLDbp4UrWPtMqlqiDqSvolr9F5XBQETLfHcX2QLPm8dmS//ze/8xd/9vz/6yDcPLdaD9l/pSa0NAQBZ6C8kK/3Q08f/5S/83s/8148f6k85DaQ1M9fRFMgzBoIRBXG58yEsPnyYKigUmmcyrh07EJiF+OCOjcSRyl7PTWbVceXJy30dXi0geGOAlMkBzrA0bHseBHNA34AaRSR1VnKtcL4mAbMgSqzJ1MxUA1NkZgYJMYPIVAiOhQxsygNRfQMziRiJkYx6kpzjmxt7jb0CqIU1SoZuUH9w50zuAOQCOBZQPix858A5KRxg1ossMEwqvni4i2GAIsbovdcQaTCSy3ydq8WYTdXKCmrZohectuLdN28S8TmSrm/hAAGDQRiMcLR7cuR7vV63u1KNjfOY4ObMpyOCgoEYsX/fHq3ui94557BeG72qMLN+v4+lJW2N71rvvQjrMN+yZn1SLKrSoGc3M4O52+0+//zz//DfPPa6g/vectvBu27ae9OujS2nHjVUe2g9dbz72Ue/+qnPf/XZw6eqKrQzmbBOOSZtTkoK83BPPPus4E6okTTV+aVrtGF6YnaiXWs51++3nFsvYBsh0atH/1zWfxMZLPTUjBML3WzVWs2OR+LR2bAY1UDMvHlmatz2Z8gskVgARq8X+v0LE+VfTZBoqDJHqiHCK0Tq3lvfeFvDHiKS2niOikJOnDjRaq20V/t55s9yDBYMFdyxd8+OVk5zQZ3IOkFgdWGGTueMEsWyc6fw4r0v46Cvpqk6xxQvQnb0wkBkSRMl+REiYua73T5c6+vPHXn82Zd+/cMhy1y73fZ5oeBTR18KEZG9cuZ8kYkGtTho7DLmFAJWfO3ZQ2yIDI+my2FAWmtev2frI195RkQUNSyuJ+YTVE1TMFmaa1MGyL2XQeGmOie0TDxmFQdqA76kRWanYCbbs2PLuM0ZgAUyZzRo7n345GKv11s2qXiZoOzEoqNYG3rqXN6aCp03HNzTvFfq92ZmqZnn5s2bjx8/vsIznrsAX5aizwBcTgAz2h67t8ww83IqAuu4YBhTp9vFSFt/OTAh8wP5t9FadW1yGKNYZCpiyrLM53khJmYA13DzJR3v0gunwxMvzc/7rVW+wTtux0XfO879uai1SpPrwQwL8VinP7dgEKKRSOKY4STS8S17ttYaM+d1vdRzCRRcVdXKkyi5dwQVgimlKPMaCZiQgtiUSCMzK8jM9m2badhDYSDYsAvzoRNzFq5YjkRZhDXUlWNEzpjdbXu3Tvix40n8lrqu02zKsoyZ8zzfvXv3Cs941lO+NNk6bgcCBiIaDAEO7NoqIo3aZOu4GDC5qqoG13Vl3PBWlicHeZg1aiJ1rSLSA+OcS5mlpGdbIZvvay9AfC4iWi5KtTAtleudcKEfIvqUl1xQVuRkWRhbzKbgGGoiquGefvHIgKEw3jNMpWpEuH77BudcjJHZrUuwnAHJYrd/doOBpvbfU+2c1M6p3FkD8jGZAogwgiUGIUx3bZoev/2QNIJBidCzx+aWDzBcNqiRaUgq7i7Lq37n299yW4Oee0r/psqei+MTX4TDoiESDTmR1+3evjZaH685MMWovWpcj8NXQlvtfDDZWBS8NnbciwAYaJEvKdsTRuaFyVUR/VorcyoFfLudOTMrVTSfqfx0T10/GDfoXDNRDMgyo+zxQ4fT1GyUJdBUiH7Dno1pMFWo17sIjWAsp0/Pr/yCzG6YJigNV3vNpeCrCB4UATM0kqmxc4QdG9tN+xANOo2DAH3u6CleYUnrZYAwYoziC1MlU6f9u1+3H42XPTHWkktU13VsZKy9EucJsCx7m3XUfhd603X7zGwNMsKvNZhZhPX7/aVfNe6g7aK1NLqCoYt6maGOYWbJmyAiZud9XnXmPEIuwWm/hXKD1BNx3nePLAQh1868SOhRf8EBxq4bx3pPppSRBBirf+y551K5dsMjmn6wqu7ZPJNlmYjEoOtV+2dgdOr0PNLTtILu1ZtnN/IwHZIgK2B/XzqITMHEPDidsXNu6+zYtCeQBHpMDUmR8fljc7ZWWivnHQuTi+LNImL/lv3X7JjJG1pMAJiYmDiHxHKpXnnqJTQOGuNAqsYMpvt2bV1v7Hk5kKivVVmbrajAGkCKr41ux9o4UFVVMXPu/ci8JhW6vGhFSD9S4FblpxaofRqT/XyLZyKtrO6z1o5CxrXXMsfYRy5o9Cy9utSIZw4fhi5f3xECmNk527RpExFlRW5hnV41gIKS97fCWTs1PTFgZA+mPKfaxcs7SgyK2VNQR1WNyTvXKsa3aEhcjJTmM5jZqYWFeBG9MFYLGpxzVa2ehTW86c7XMcVmJlWiDqZMhvd+IIy6YpxrypfVYCHxHAyo+yIwt6XA/h3tel3af7WRW8Xij5YQqsFEhkiC8TrjkdyWvFKFuZbVlYjAYn35g8TssqBILZSHbw6FxmhEREJgq53VzmqPwFYPmcUugCBZrWTiGgqpmdEl2YwoVH39eAYGw5pEay3CA4Y6xDuvmeiL9/3S3HqAZQBC+fQpQew5CSUYFsQojn9M3rBNTugUEeUudlRyCVaX8fJnkkuHIhS9OAc/wWAK3et2TMSGpBHVFVwEcgACCe6pIx3nr1yLCUK3timpY4wLgb/z9TtA3muTMWfmGGOWZap6//33n7UiXwHOvTR5nqdITeMolwgHmO3Zue0KpheuVkRQilqsfJcUZbvK8hYEqGqSslPVw8dPLuNODn+/c37Lpg0EXUk5+GsKJ0/N25mS/cRgGIuNG2c8x3T9HbOuVbhcVYlNyFlUMxORyYmWLPcGGQn2LnRqRL2C991Uvfd1iNEXN+/aNLthGgAaXV4iEpGyLEXkxhtvfOGFFy7ojOe5Nsm9H3u+4Y6DDxG3Xb+HG98267g4GKGsV1rjwECWZQOJnqHxugpMGJEl4RBmhsYnDx1Zzo4wQ2FGoP27rmENxO4quA6rBTN78chx4wxn5nLTxdmxZfOUJ1NSg5AGg9JaKLWRmlHSQ1OFivjZ8fVBaY/UqcoIZnTk9NyVDfyqqhAqpX6Ub3v93laRouRj30Ujpy3P87qu8zy/5557LuiM5zn0iCA8bpAADEzDxf4t+6/R6sLWAutYHkYwLvu1gVdoiIrMDbUTr57sxYBkZgSwmD3+wrFlTTlB0xtg364tiP2rbJlyiWDg2Mm5vtIZZ7zRVWwXvHVqwIxipKLLtZAMPosShAAAIABJREFUZlAkA0jIjIkUm6cnmnYw4uHLiYwPn1oQM71yr3BmNg3ETlXf/fr9qflsHC9tKiLp3WNmJ0+ebO4zc/4znvfbVHQ0BkoMhbhER3W0b+t0a12CZbVhBGMqy3LllijLMjMbKeESEV2hUrdVRHq+FRZjhNVPvjTXPDtt+IfBdsy2Mwp21QWdLg063wunFisAbEBS7h5v8gTYv3MGTGZGWit7Sm2fLjOEXEQFc0JMghhtZqrV5KOQEABwgAJ0+PSCENuVI6GyiGpg5j2bJ2/YswVmgFJj7mrE5Z2Zmen1eg1bnv+Mr/zqyJEjy+5mYBr2x5st6Jptmy/0xOtYAbi/4gALzLIsM0RQU4XXqw7EiR3LZuYYz51YbN5eh3+Y0WSOTRumojVJ+7/WwKBK+dDhEzirO3ND/2+7df8eIgEgprRWTG0GIqKl2k1SM9s01W4WK176e47OdfmK3vaQnCqL73zdXoiACanr6LjtQxjkIEW899u3b7/QM57HlC8uLn784x8fv4vBoKmdnsEUDv2bbjhwoSdeRzNSuXlz/nkpiCzPvAw7gV41sXIBwVhTORzhyKnOCjSS1AxMTMCu7VvW+3ouBRHVSk888xyG+S5dpqpQb75uj5kZCVlIBfSXvwlPauIKAVvUCCPI7PRkk2ADJYvEigjD8fkOG65ggEWNQFo4+vY37Ddyy7IXlgZCLq6i7Tz7PPnkk3fffXfzboMuHZSopvHaa/ddxLnXsSxiHN8k8xVoDIu9iqE6yGCx4dR8v9crGzZOc7dORbIxbNm8EVfFK221QEQKOnz0mFlTvf6SHeyabZsH9fpEZqSqa1C4rwpjI4iqRgsiMtkumnYY6iknLPZ6dkXTniLeEU+0W7fv314P434rvGoXt6o+j5l43/vet2HDhtE/l1LizEyVwJoDMWYGY0dlld97/SRISyMvRDFEzhiQ0NXG6qZ1NENi3Y+JfWFGYA1NDUcMXlwq1k0a0GtTynG5URs8VeayzHp9BTt57KVTDU86QVVbmSNFNO9u3dxWTILW5d6G0Oiy4oFvzhGqSMOCz/GPiYF2TbmdO6c9W4nCayfwNNtKRbQvfpgSC20ZdYNvu1qUdGNu1mBPCKYUCTkJOByZMxO4K9c9qh0Xu1y84w3Xk6cslACMPMbr7OOSHY7ze3yq2ul0RtJaie2IoXAShpWE6XOe+9nZ2cnC5U6S0U8HTZValzK4dZzT4K0Zo5f51RQrP9PiFgyAiE7NLzZfk7Q8TR0VNs0mCZG1GOqrAsbU7/dPnD7V7Q7iVM0XhyAQvG7fjlpJhMiIKYLGV12u4lCHd5kZZHFpm7Pm7aFU17WqXsHYWqDcaf9b3vR6WGpNDlNtEGdOlvNCdVeW4vymvK5r730IIXl2McY8z5MaNZEkocvRHAPgvezbsckJBcWggzbRMKe8jovHUkGVZQ300ij5VVMXM2hqAVNiMmOyF46eavhpg/7lBDOQYcf2zTy+RPa1CYb2euVTL55IF3GZx8pg0HfeuLc0MwIiYP3K1siUm9kojd9qDrAs2QtAt19GW6mk6OVAn7JdM607rp2G2SAr0bhESCX7uAQ/7Pw/dXJyUkRGB02cx6XnGH1OiqZmdvt1e0JdkjgiYpCCjMXW2+NeGi7oLT1qWD765ipwz5NnRdAIAZRMnz96ihrktFL/OUMiXWzdOM0ULkoB9OqEKXLviPmhxw8BGFiZ5ogV9I37t+c+TWcnXDUV0K/iUM9+YRd+xTIUhF6vt2YijudFAL/jzusLC0gNYCxd6LHXTVWXXXY0o+nQzrlEkUnueVLVWRpaASAiqWr/joO7Y9mjYeMPA4PWgn96tWJEMl361Up2Gd2gq8MrH7TZhSm59PnF4018xEHhNoHhYJhsuSKTq+CVtloYVPqIPPjES2eerUbTbLBNG9v7tm0AABZh2OXvGbt0JcqA8JkVZ/MuCf1+n4ia2H+XGRnFe+95A8puek8yAG4q8khBjktRQBl7S5i51+slUkTKpMUYk0FPG4z6qyZct2tTkTkFISZNUdJUQr2OS8AFFR8vvTtXDZQYgCONg9r9cGxu2eqJYeMgQy66YbqgK7fQ/psGEo6hCtGeOnK6Don30bjyI7ASyN504y4yjgSK0tAme5VHO/ROvPeUVgjLb0wgqkJsrmK93Ni9wV13zYwUuUIGqeXL/BA2Hb3Vaqlqv99PHS5euYENEM3i9un2ti2bo2k6qCVhzKvNsKw1LsizXuqVX+i+f5ORHjIFC7FpPNWruuX48PdSUprCsW7eNHPVXIpLx3C5xic69swzzw2/Hbu9Gpg4krzrtv3MHBiqxONFiVcLZzrpGMxilmVp9ON3GPxv+nWqysxXkFf+7juvazMMPhgxakAjoVlRI8Z4Ka7YWFOeXH1mLooiOeDpm1Ez92Tf01qemZ3Ytq1bhgsFBTgaeN2WXxpGD/RKnsmrzyXHaIltasRpddgvY+JTNcDO6HHr7Iap9Vj5CDGaYwJRJ9iTTz6JZV/5ZDCuwLfvv8b7XIVgLuPLvto+J5Cb+tA37zDaEUOunV05Cst73nonk4YlvfOaZ3BZlpeFjJigw9qMpSt3ole+GhlgA79nf6bsa/IKl2nHe99b5w5cLNKjnF7UZra8lTZLrSxTjvqcmfDqBSlEJJIUsVOFqNlUYf1nj4znNbMqPAEOwTzUJm7c6NeT7yOYOCErWFn8Zx47RtCKnelYL5tBkdEKgTN7260HXL1Azjr1ZY9djGLlyQSludC4w+Dt4pxTrZnTDLrs44wquXQD5T1DZr0J1661vH7npuuvmQXYAxkA9iD2AOAwLOEevXLShzR5L2Uk45kAS/o0YmWr9RtvOpghpIE68YnReCmDW0da46zQIr8yZX9VBBYMQEw8Fho8/XOdzjI7DEGEoijk1f9KWy2k3o39WsXC408/O19SBjQqq6hFgzOBv/v2PQJXmhWXxrVYIZYWVYQQlmnUueQWM7HIBUycS4EhRC1gPccirj3Xn885f/c9tzXskqxiCGFEC0ws+KJYEdtyHJZZeKZuBisJ4ihwYN++6SyCZRBBv7SXzDpwQWoMg+TEihjoryKcQ4E1s2A4fnphhTsSMD05sQaaIa8WWKyVEDnLyI4uVN944QQ1lyCCGQQoKd5yy7YJn9XiNaxF2nOQiSMQSV3Xy0+FoZ8LohQNJrvsgSBhDZob+t6sVqlIJ3z+bW9s0qRKzrH3PlXtJIrgpaurN12eFJpMlUFYgYvnBfu3TCR2ZHLJLa5HWC4eKT+xcs/66nx3WjRQYr8RjGEGOjG3jD7iUszObJDLP6VfNTCFMfkCoXSTs3/xpSegTbx7HVTPCmA7JrIb9211LrdlulSuAs55hdcDVZ1G0uQZCTnNvF+GmbNKYHIBKuQYoTbKs4kbdm/avWGZbkHJcCeSN4DUBO5SR9J8yvTSSDGTZcNVpvGuG3aZEgkrbCCfvY6LwkjxcuW7pCKAM6n/q4JavuTnCGkEAJefWhzf6sTOThEbNs5Mw9ZdigFERGFmFuoKnN3/lccjsmX2odrUAX0ov+eem6nfZ78W2kpnwuVAiLqco3IWEzdVp68BGVqVQbUgJ0QwuLb3vPWgNNbrJHYNlszuqqra7fYljmSZRUsyBym4M3LPx8Ex3XXT3n5VAiASVV3nDVwizvLKl7PL6UV7FZjvpUhrZAPboPRHid3JhZUL88eZ6Sle98qHMJAqvNU+y8qyfPnE/FMnquUc2EgERQT4La8/sIG6kMtuys9J/JhZr6qWebKXRBfb7QJYi96eaixsYhxgxjQj4e13XNdAaWfmNKlTEVOM8fDhwxfRM+g8R27+bxpGnbCyCOzBXZsSeXHowq9PoYvHSOhmhbg6TfmALAwzSxUiCjo535T2PLMvALUNU9JcWvKaQlAQkbOSXc5kZvZnX/rmMvuYAMGsFRnbJ4q333pNGS5/OnFUHqGD2ECvu6Kuk2mv6YlJBq1F4zoGGZH1jTON9rbbd2+ZyML4athRICUFokVkdnZ2cfECAoZjR9L8393ugPW1EkED0zA11dq0aROME9n84jTU14EVS2gtxZXtS3uZIJQYLGfmpKp2mmb12XUhZI6xBvrarxqwiAjqfq+snJCZffZL31jG5JEH9QGpAVJ8+zvuUKypeLUqjAZqU82IwxnQarWYV6zZcgkgIaudUd+QmdG973o9QlM4LyUgRyIoSalw586dlz6SZUxtXdfPPvssVhIoB4gymN52/dYJ7WuIpRnHV31vySuFGI19Me1VhAwgIJCgQeSPuKwrJRAZwXggMvyqN2FGEo08gmOqKLcYCrEji+GVy+dB1gvOs8JgZFBU7F3E9IbGDr+vJRCZWG2uYHIVimh89JnHv3GSYSGEkC6oDTTyI7QCEMsurAChsAiqb771pn2tRdKSXF4akUUvFIyriGz1pjtJlJKDZ2+LnoqA8NJC3cBIMQQoe64JpHC7ZkIMTi+/K9k3OB+itbIwt33T1D03XQvrN581PaipWOeCeA3NWOannj59OnWZWzZQLskbIr5537YAZoYQtFFBZh2NGLSPGIXIUxfahh3qEAfsrbT9VRFoWSrzm6CqdV2fk+YaYfSdDT1NZhTZeguUAaIpQARzQmRqxDXJAw8/qgbnnKmmzBwGYibMADmfpKvTxS0Eb77jViIqQ+1dBgCmaQm+KjHfIVgpxdNgZlDrlU1eOY3+NjAwWeRrExJwMQQ4VS1N3nPX9REAu+YTD4iSRGY2SoFeOpY5yrXXXpuI68veJ0qhWpI3HdwZyAmBLIb1gulLwCjhvKKNgdEKNHX6ssut37MmWCJdMLDpqlpV1SvXiOPKoxi4xOKLqwo2aDMgFMmUiCIVn7z/y5EcoIyIpY3LyMGMRQDWocCfB+596x1sI4qUIQaCenGrKIRqRmCQmhklm356obtMnIxgMCOAMDM1CbY1KCdwVlVq7HJx2fvffNAAsG92YGOMyZaGEA4fPrxaS+cLmOzLtY5UZhjcgS3tDRs2mAZYsHVTfrEQIqgVWQ5dKT22LMuUpUj/vGryn+e01AAQYyyrsPzPG86RVr4c3+41g5EPaBrZlIgCZ0++ePL544t11FT+LiwEMHMcVNhyGPZ0hpoAt127dfeOjYWjEAJAILUYQLpMQeaFgIyUlJWJBAwmOjnfW0aMlzCQwDRsmZ4cBoouL4SNNKrLbti99cD2aTEL5JrT7KkVhJl98pOfXJWEZ8KKTG1aCGCZIpTBQ5JxdePe7QaQ6Vq8Fq9aKEhbrXxZmfIR+lUAn5HIuTpM+TmiyqMEQL8+a404DJQDS0IrGLoS6wGWEYQ5KIZ1hgYgqFUmf37/IyQOZkP+tiJ1GzBNuUROeXVxsFhwuPdtb0S/I46V4CSDhiSRumoDNVZWBkCO2ARyfG6h0Su3CBDEACBsmZ5KLv2qjWcMiF0h1u+Vf+uttwJKVkYsoxucgtWq+sY3vvHpp59erZEsb8qXVpo0hssJaRbF+OZbdkcSM6P1LkIXixTpbrVaK2SxaPLKrzqco9w7+rKsagVsWN23ZA8d+u+CoeRtviYlLa8OqJmZkgOxkEFjjNFJ9ueffzQAUCV2CkAjzs4xEpSgBjYwtH7Pm1/Xop5P7QnEGQnRajakYGNjJQOMjZQMx08vNhlmQ7I16Z2+eXrSSNdAp76OcLCZwt5z900Ggemg/mEMUnA8hBBCmJmZed/73rdaI1nRT03MwrquG95yAQ6mZBrJvfnGa5Q9EfG6Kb9YEINhrTzHeazV+dGvkk7mQGUYV50YS/Iq0kM4lJdbWq49QPocR7454RJbbV1NIItEEg0mWR2NobkwxfDM8c5jz5yEeEq+OtGZyB5DAFgkWEz1QkS7p+meO262GNSkiiBxGOqdrRaMVAxKHBHN7PRCYyzCBq9tJQC6acMGkbVgcEVQpfbeu67f2BYiArUyA2is65CG5Jxzzq0ue3ilphyA977h0qSaPCIDFwe2T4nLmFlo3ZRfEtwyyfAzUCAETR20cVG09L+xGMVVzjLlF7KY926dSTUAGZg5RANJCIEJReZjqCpk9/31/QBFHQRWBgvDUUxVAwgxhV1ISPv3fus7GMreBbWUjl5VS85Ko+Y2hqjdftVsTZIJSh8n22vUVIucD0p/+513lmUNaMkE6zVchhGj/NKlEM/Bqi1APADr9eEkVtDq7Tdtg+VVXE83XSRK8yDdPs0GIlCILNbUU9EjHFrUgsGuhlKkCHKqa9S46/LBljRFWhorr2MggEk5FQOmRE0cZO3MBkUsBMOltUy8yhAJZtGzWSi998G4W9Vw0nL8Ww88X9eVMKAI5EGZQw2XS4oXSAvkcyAjgDy4eOd1G3bu3MFVV0QGWomrZ8sDI4+OyEiChAnNcOjwqYbUmzG1IsCIBBAY2DO7OfKqPf+spooIIZfHGBGrduZZzUC378xvvnZ7kfuonKvBZCn/falUL4YBlsXFxVUv6FupKT9nQK8EAWb/P3tv2iVZdWUJ7nPOve+ZmY8xEBNEBDPBGEAwi0kCIQQBmqVMZWVlZmVXd6+s/tRr9Vq9+hf0t/rWq4dVq3p1d1VmllI5CYnURJJSaUokpUaQQAwCFAQQARHh7mb23r33nP5wzSycwZ+HO+4RuIfvL3g45mbPrt137Nxz9tlbBm6kzFddfAEAvwgtZwMLQohFeJRZnEJ6wXVdK05K3a5vnNyOb62hn3zAvAnGs2FB3iNSSpqqf/zZi0iVCJzlnnHDuqm58sGbLlZCjDWKlkOKK1ebnn8Cyw3MpDjROLtPA/YKclibmihX8HMnyc+eYImIWFyvqkFi1cz999wlANSYASKww8LuRcxc13Wr1TqV4dUl4VQLLKcQIDRSUQBqBOLrLz/fUrC1nxWeKTBZyxd+mE6ewhgBz3b7o90/LLOsWzLouycWC2zRjVC+KFJKSOmL330ag6CgarDGAf0AfOoD+7ZMtIldUnLQoCu2zgwyM4URUf45JD1yrKFcPtzqlmmJ2Ll5YgVdhBRMZAxjDQwl8VVSOL+1TXfefBVZGrZdAYK9Nb2Yv/3qui6K4tVXX52cnFypa8s45VKs6iIECdPIDItmBPCFu6Ym27LBYFk2GLHTLgdk3lMoCydFv1/D2MzY1smoZzNGq/LOSP22X2yE8kXBMCV64tcvv/xGn1INMKPZYIKTYvOY3XPg8mDkEIOtZJtxEBkHab6aJTV5/djCRoAASEH5y4dAOO+ciRXkIiZTIioEMFWwgpxzavGOay7Z0gZMiTlGHVzzwstQFMWXvvSluUYbrOXhVEP54cOHF3kEZRKv5b7IhMe+vTuwUV9ZLkzT1MTYW7YENRXXulUdkxoTDT/T9R3NmZfgAb4uhcZWFl7EyM92e3/3g18NjtbWNLxpQIsBs8988FrvpI1Qm/On3KVfHGqDzicNhI6V3eE3F3SPIjAsGeAJgDezXVvGTsprvWcYwBi0K0W8qjomiv0H7r7Jay5EMTk2VSz2qrfccsvTTz+9Uhc2wqkufbfbffzxx5tGhIw8ckmJCLCYrr/8PD1zjtdrHaRp09QkLJnZKMlsmCKbme2BxYaZ0fwJyXUJETmVvUUYTIeu9vWsdUSFaZxoF49899f96IHFzzIEBbcuOXf6pkvOjXWXfElpxeq/pEZEoKw2pUKUyL1y5ETDn5jpiMSisF1bJ2zl4k8egFRVNUCcmTmtz98+eeWFO4UUQExG+TDRuGwxxi1btjz88MMrdWEnr/AUH/fCCy/ccMMNTUwAggAGJkowKOyGy/ZuhPJlg6DTU5MYNp4WjcnHZ+YgA6vAd0pQrT+cokkhAGzYzJ4CopGz4Bm/PXriGz99kSyCvCycXhIATZE9gM/ffQUVY0RGK2gURzq/88nMSXH4yJtNf8Gcx1MBGNHOrZO0cmUBQxq4qkmZDETkUD14980tB0CRFEyWI74pL7Azs0DeKp0RTzWU33///dPT040XwYOhAgJInXOX7tnB5amqQW3gbSBou922Iatp0ZDV6/UIMqDuzSPtrVcsQU9uKDuxgQaQb5UWq96cuNZfP/5jpCoShBsU9BQsCTDwHdfsnt62y0JYQdLncAPziIGqimMNnq6GwWBcUhgIND2xkuKIlpQIxELsQlIyLck+fOc1DCBGiAchRAy7rgs8idmhQ4dOXSNvSVjCW51vXDT6Yf6XT635bC/QGlB4/uD5E2rCUGhIoMiOxFlKfv0yK1YKPZ64aHzGqEwgoBZCwmDq+l0f/9yx2I6ziVkjwQNKStFWroN/pmBGzGyIICUSMyESME21WFMkkryHs2oEzAycTYQDPAiMGqyzaWO/LQJn1WzRHiepq7mf/e6NZw4lZ90KLouxjB6WKwwGYFhLSTFCq//hvsscaZ9aZMkLoDGlJEU7KBGRNLZ53h3MKUTjVEqppFWNiTL88tWeAbAIaD0Y76xgdQ5GFQqnCF5hSQB2ra3TKxY0LUGYK5WQ4njqecKdd3zg3CIQAN8CsQPaDiCHXGmel0iFEHIy8aUvfWlmZsFy/3vEErb4zMzM17/+9awe4JwLIaSUaOgeDcAz2UDmWAAIcMUle5kZ7Nh7YTgMZbk2vBYXgzAmxsahIDqpkPXOMtzoBDrXrVRPMp8Gv1/GLfT+g5mNCM6D0XBLRVG8S41lfp9g+CsYh7BRYFkMRBKpYpoofKzDX3ztMVjLYaiNMFIMZiaCKsBiYEtgMrD/wI37t487YShLVMqfTgxVNipKy2o/jhS9B0oMKfV6vSraQLl/sCN4lAQrFACD8/8TYPPKEf5EpKqDEyrLsjL4VH/41usbefcD1HWd5+RDCLfeeutqNDwzlhDKn3vuuRtvvNE5l48t3nsRSSkNqj+ajSWhWTDYTIBb9l8B0qhmYNYkFqEG53VD/HYxMGzL5mmz3Lgjs7xT3zKLPD+KHT0+mylERFmxxQxYB8KU82cahu9XBWiXrbdzvmhwZ+XJz5y0EQiwXn8dCo2tLEKsWuSjk8ISG77582feOKFIASQgmV+2ptzwJFGgZGNmNT9e4rP33iQWTYqgFvMdHitPambv5XSYCyw5yFRVdXy2B/BJ6cF5W4BNR3YjZiBgxzlTy37dt4GhCjat+/2+K8euuHDXdRdONPPuM3u7KAoAOevdtGnTxz/+8ZW6pHdc4Snj4MGDW7Zs6fV6eVlzjWXUlDjpn8gDNRkHXHLe5ukxH2NUI5hKnr1eOVHjdQxL4Zwtm5kGrJWF6t6jNPzo8RklZlhW0CASIgLWfiwfze4bAwNdvsLLO8ugw9mot/4SAHiud0oOv2czWKEsSNAYmPl4bH3lBz/LLKFRF111YDDEzAaOCYQAmDKL6sfuPjDuAhuIJKoBECaYGhK5JRc65gs25FfMn/irb55QY6gNDpxGeLfc2ACB7ty8YqHczMh5izGfMx6+97bSYvNZL4u4VVWVUnLOrXb7amnZ8UsvvdRut3Mmnl3pnHODurmRWXKEYfdWAPWEq87f5ZiQhRLJjJAM0BU0jlqfYI1Tk535H/072/Hzd8bREz0WNxQWJpAQyanMFq0J5LdBRCAl2OR4Z/D7d3+DBkAGf8RmNNfbyMoXQen9bOp7E2VKKVgq/vo7P6qTy+E7r/PIMwGAwZwgn78BMOlUCwfvujHWs8JK7IxERJDifJXsU8d8FtboApj5lSPHlQAiHuQ4jGHjjSlrgioGJcm0faqzMqsztOAg58ZK2dLGnQfOR9VdZPxdFUBZliISYzx8+PAqNTwzlhbK5+bmvvCFL+RLHH1CA7VGYtXBGdfy8cbYLN5w+W5HcfRh5DI6r4sa7qpirO07ZTGfikiNhbkjx+cSMUGzgJQNTV9W/UJXGcPsjPMMd55lnZ6cWOzPTi5XUnQ3QvliMKWkwbNPJLDgFM+9OvPNJ57OSRvmxdZhmYUYAIkaSBFjAvDZj9y2uTSEKnMH1WAs2WZhqdcz0sLML51S9q21146eGP7v/EBGnoajgXTaybq+6Y6ti+2TpVxPrih0jx/52F3XtxkoCm68v7IOc+5zPvrooydONJHi3zuWFsqffPLJO++803uf/RVzpSWTJdOg26CAciZ4EtTowL69HlFBpsjlFTNz2GhDLYIt09OOT6ajDWmNqqaUjh6fnf9p5r7yOqiVY950BjNDDdCpyQmowd7KnSeyUSVqeIslWNTUXY+mHCuLSmOHqGJLyh0mlkTc+ctv/LBfBQOIaMTNJyigBGhKVWIWLxRYfAS2t/We2w44q2ApmEUFEfHbPqZTw6g6Pz+gA3jtjeOD6xjNop588pNbwgyA7tyy6T0tytsvySJksu0/eff1nGDcooXjmKrmKvnExERd1zfeeONvfvObFbyYd2Jpofyzn/3s9u3b88/5QjGqUQ4OOJqVG8xgAItcdO502zsRAef+iagqbKPAsggmJiZyAMv/1AXK3nm7q+rsXDcNGCw2+v3pu9xVw/ya6SAzAjqdzvwHvOuf5axcTVNKddiQdVsEJjwh3FU1QwH06zln/hcvHXnxxRfrOmK+KejIU4xl0M6s54i5m+BEH7rvg+MtD4DZgQVAjHF5NeJRKBeRLBFKRMdmZjIdSe2kuStTDuOGzGDJ943ppqnxZS/IOy6GiCgCB/ZftX3SESMADcZv+YJzyltV1eTk5GpMeL7lFZf5Z8wAQgijdoQbNB8cXAmAaVBsKSxet/9yF4/XzAA68XggX7kVVgVbuxjwpoe71ojBoqB924togBg0Ag4MB8BqQwAARUIP0EgkZr8+MmMkbBGalIqo8IikIfKa14v3pCEpk8GVGvtF4WbVX7TFDXbYvBBDI3IFJHpysQuAyR85doLX/jqsNrzZjEnb1LPOmBSuNJsD8L9+9TfiElIVmc2AepbZDzxTCYNlLacJmBSA29ec073xwDU+mqBHKfYETi0uYhrxLhjl4zZvwsvMfnN4rhDAHDE7RAMiGGogeBRwEDgCnAA8tnO6+hONAAAgAElEQVSq8E5DcmDy6AkkoFBGufQspySaiXETun/84ZuMAqBFQk2LeEfk8FiW5WmYN15OKM8ETwCnWMW/Zt+FRmQpQDiatMVso+05BDPm9x4sRUvKoHM2TTo6eXgcanPzWyrmQ3noEzO903rRpxFDXormM76qesdTY4u0swgAOwCacGy2tz4OKGcET/3yyedfr1SDz7q3brx5WEHN/9HBuwPNOfPcKlqBq7JVyIoFsrm5ufxcA62hzDJfOOsf77Qlk1Pn1Wp06cyuKsXxcmzfBTsv3HsOwcMY6DdTLDMfJHu/rbik7Tux5FCeI0673QZwaurpdvOVFxMRw9S4gi8sbAxSjzCascq5OYDcb9hxzpbhVAyPSlhvpV2dnHI8dOTY6bzm0wkjJqIsrmRGqhDCjq0NNVAe8HYo38A4fPT4RihfNup+98//4YfRj1MCoQIAa77ri33bWnfffGkVQ11FUY5grJwx5Im5uSqkU1UmArZumsy6a8kIgAzLj0t93chMvd6n7r+97WoojAFp6kVlAmL+eQX1AxqwnNfIk0Fmlsvli8Rlw54tftv0eOFdVJhvWd11p6Rqd1ZgWFqRrPM+sA0i3bVlIvMGMI90qEYAGxQ0j1FLOPTaak0Dn3EMrNwFZkaZShGr3Ts2N/8VI49Qq2McOjpzeu6ldYmJsclHv/eLF44lILE4xSKsKAbqMPNvHri7HEtllJqlFeIKsvp7VepW9akzs7ZMtMnUMiljmCotY0SRxZ+3ubhz//kWa7P8+kVD2zMTEAHMzc2dHjWk5WxxM8v8pHyti9wnRAXshisvplSrEZNj2PpWeloS5g+zAXDMZIlUd2yZGtaAGRhQyg0M46zKTzRiTssrb6zbUA5ANTLMYnCuMAJS3LZpQZLZkDGHWgFAGC8fnd2YSls2ur26x8UXvvJ9E4M5YoBbwMIFUoO48tIdkx+69iL2LhnaYrpy66/sZmb7b+XlNsX1zRNt0zrzWQFAlQzLcBfiqJ+877rCQDJGEjXCjEFNhWLn3AsvvBBOV8t9OaF8FHdyRB5Ja707iFOo775+H0KVTCnV7Fspbhx4BzDSofCb5iFn1VQUxdbpiYE2GdjMMEjaB3UWIwCZ1RqN6HfrNyvXwVuF6kAyedPU2GSxYCowPDrHaIO1OnTkxEbqsGwYeYN+83s/e3GmSgoaBPGG+zcJFYb4J/feIUV0dV1ZKGjlZK1I3jh23HByEKgZWyc7ZAlgIzGzgeL/0vfDljYeuP1q0QAwkBY1Lc59znPOOefYsdNU/FxOKB+1lXNuvkhWbszOX3X+1qmJNhGL9fuQDRnzt2E0zGZmTLRpetK5k55MI4phLqekt6QhltReWb+1cgzaCVFEUjQiOn/37gYLjpPKY8ODzKGjxzZ6M8uGa7VTb+7N/tyXHv95bYC5ZO8yeDyCMkONIZft2XrXdXvFpR58sXLrb8RH3zg2nw1gsIbEfMumCQaUBq3OIStmyQHo3luu2NoqWDBbJ5iHKQjAgl9RzNztdouiuOCCC5b6WsvD8muIOfoMBjcaHgYD8Za2337OVu99wegHXdUB1rWFEQF8OFanIjI1NQXTec0Zhel8EmtW188/R9M3Zxo9D9c0RmzXPFQM7Nq5Hc3232ajtNEsHjvRjRtKnMvFTHduamzcJP3NP3yv1gqGaDqiTr0TEQROnKRP+O8O3kNjbDyGuGLuQkkxMzd7MhQvdryfGDFY5umGpqUzWB667458IPGlQBkpAmoLx08iKoritFVXsOxQTkTOuSzGguaOMFGq+wocvGp7P1o3SceThRX7aNc6GAJRMSiSWmVa9CCXTDmQG2jv5wIDuZxnGpKHp1xwkSCQ59+IBa1buShKM5VyhY5oKDh03eQ1myrjcsHHm1YkMAgUUZ8/wce6OuY2yK/LhPjCIabQOhLLL37zZ2CQpUTAW8fQRsochdURThmtMLdnW/vhA/vKeLz2Y2JwMEt11EDO91VJmJc+9d1G/PWJgixxDucEZ2IL8yPPHZPKl1SrERxr1MrUCy0YYUuyOiFBHCwZrBhzWj9w/XmXbS3gGPAlAAF8QSOd3eGMPoYckKw2yMxjY2NLfYPLxvJHhEYFlhBCYy1Si6KA4pprrnEaxFEd00btcoST2qGDNTERGR9fcErtrSK3BLOZmZl1bHjmpBiNUAGA9vfu3dv4F5w0K3IQ2L38u0NEtNGbWTbY4ol+HB8rS2d/+ei3ZhIKIUsnixX5YSe3ZR7NJUAKAJ85+OE2ajKNIAWVZcuJpFgX4panY66qdR0Hm+EUOIVjrTYwVNwyXjTy9GMsfUGa+nXlfBljzan67MGPLPT43CkclRlG322rZ/y2EJaflWPe22jIyvPKCWPv7l07pgsAoOXI66xvmOWwbGbmGFMTDQPHmU5OuYZuwNE3j6f123wwM6iZJTNTQwfxogv3Nt/DWRsyB/NnfnuoeX9uoBmlGKSou7OUwuEu/cVXn4Cqk7ezs0+GSCPWCCCyr+v6gi3yiXtuJg0gVydSOIJoTI5ANrB2XxJMqdtfwkDcxORYtuUcCd83a1pUCQSF1p3OeFRzwIErLrr03AWT6xF5PFvxZA4iM6+e8dtCWH6t/NixY/ltjJwBFoDGEAD1gqv2bmMYiVsGGWi9QvImM8utJFVVjWPtBQsIwCAZ4axyRHJ8ZpZl3fYeUkoGJYMwGcmuad8u0DQtTGhJVlIEgOd+9xoz68YpcLkwgyN1IrWCO1N//Y3vHU8FQj1qlY3C4iAIEGDJgKAoCiex+tyDd427SAQiClHNzBNYk6ouY98a09zc3GhkblhlWRATYx1oGs4MZxp002ZotcdUI8GiakxB0tznHrq3OAUFxGzFU9e1c+5v//ZvZ2cXtiFdHSw/lNd1/ZOf/CR/BTU/0vkSADNuuWIPaQB4Y0JoBCKC0ajGwgxL2mo1hvK3fnPOznTB6zaUGzMzOwYRgeXKPdt4sQ1ESAAnJADP/e71lNJGTr5s9KMVVMO52sRC9UZX//IbP4RrvU2Edt5fMIuoDg9OrNsn+JMfvo1S10kenRcRUUtCtAxjSCLqzvWJTpUF1y4LIiI9WYHkoavgu8LMNNZF2apjKjldsXvLDZdtbZDNAuC9r+vazGKMRVGY2Y033virX/3qVN/SCmH5ofzw4cMXXXTRiFfQ8BK5xsnAbddciBQBQNdtbXepGN4GjBGJhaxVnmpoNmCuX63jWDVMFMxiMvB1l+1OC6lE5scBSFWulVcJvztyPKW0cQpcNojZzPpVKJxvIcK1/vNXvn102DVcIJo7AUpBihHGSPb5j966c8JLqogtKYyYDUPJ4qVej5vtdYkINiqBN8EJvJOhAIvk/zY8PsUagLI476We+4MH7yyxCE8m69nmfDyl9Oqrr05OTn7iE59Y2ht7z1h+KL/uuusmJiYAMHNT280GR92UbMfmznnnbgeaxCHPNoxEXAc/A2Ta8otMx5kZDVgECDHp+q2VIxNeiVIKIrL/0gs4684s9GAgexAw+LcvvTZbKzPP4xpsYGkoHGaCOF92JNZVP0StVP7Toz9a+JbnmExTEIviXJJShM7x9QMfurmkylJUIBkZE6C8rG/Yfr//lo+/Mc4SoSgGd5MxLVYNRtuzFL4X1Iwu2DF99/UXkcXYeOodzGk7B4CZJyYm5ubmTu2trCRWQJsiF/sX/N8EAzQlEYLV+6+5OqVUuI0saYBs3DHUitI8e9WwxedV/U528NczIyg7BzGYWXyxZ8cWnvfG3wnVgaUugGeefZ7YMfMGg2XZkFTV0iEi673ZandU1VS//O0f13X9rmPeqkpC3nsgxRjDYHqn/uTBmyfHCpCCmYQBxBiWIY1jRiG89XWb976hGPpqjhTrGtqeMdSaIK5U1Yfvv8dbBJp4NiMVk0xZmZ2ddc7t3LlzKe9pZfBeQ/miI0KIEIBFawA09tFLtpSe5zZGNt4K4mSoYC2WwNQmLDxZQIQ8wY+BLRaR0CmcNNcoTEMBzNUdl8L+i7eVLoj2Ei2oP+4JMbaYtUB47OVAIYiQ27A6WS4CygmqkGLtpuqojjQaH53p/fuvPOWcwY5VQCIiJECByDzMQ6h0rmhl+SAZ36bxDz77cc+hHetQcWIHCykuWZslWq0mBjNES3nbp4Y4ZqoiQmyqGmPNTpI1HWI9h0QJle6ats/ecklNHFEWYcG5jbdxY8qyPDW92JXHewoB84mlC0Jy+WnwQpdedN50x9nCA69nIUbTnjQ0TowL9xLeudyZqLeK13dGwcYiBERudQ5cumdgL9G46bJPvKo888yzRVH0+33Iuv2qO1N4/J/+6yvHFBgjzfJuDsaGBUOzKj1w6yV7t4wrS7stYKsgnpc8DDm6R05R7fKUYtQ81OqFirKtn/rgB8xLkesxrukrJ09KZjIiEZ0GafJ3xXvd4nk+qKHzWRMoRSibwZCmxnDV3nOI2u/xddcT5o8IqSrAMTTrBhvAOjzZMAjrl6dP5Oq6Jqkr4ruuugjmQK6RVa6kCeCX35x7/ciRqOacaxiw3sDyMNON//sXH6/JF5QcD7xkmwoRTibR+5NP3iNOu90TKSUpO1i6/O0olOMk/bExUtNJzP/dQg9XacO47Y5//I5rjQAlTbU1nnpzgcV7P//aTj9WoMBy/PjxhgcEQLyHCVIm3nU/eOPly5CzWa+wt84sqBExV81ik4O/HFhPlK2CG9hVax3GUUNZUGe8c/E5rYF9Y8PAtzHIFPj5869CXBWS9z6uY4rPGQJ5/9hPn/vNkRqxhikxmvMJNcDSPdddetX5O4xgKgVJWHocGPHZh/9czp83hPIYSK3+9H23bh5LKSgAzxQWjpOjK+n3+0RUlo004tXEew3lVVV1Op2Gw45D/tpkN2w133T5+QU2NFgGIJKs2TZv5Fd6/cZs5a0bcaLTXsQOYG2Di6Jgq2+68pKhwipLA2uBBp32J556KUX13odQree28BlCv66OJ/ovj/6jeQ8YCJCmaOIJQMtZ/IODd7TLVrvsUL8Lv2SJkkwTGNwsp/yxnnqy3CmLibZ9/r67gKqVCLKIfdwo9BVFsYjc9yrjvYby6enp5vnU3J8yyuUmBrW2jrlLz516j6+7bnCSiTgMx0aY6S48mjzcVjqUNJqanqD1S+6MFkV8NTNz3w37wKNS+cJtLgBAAr735PNGYHbQ2MSw2sCyUJZFCPXXv/PjXx2eM5ZBaG2wpICG4KD8gSt23n7txf2ZY2SwZfH9cynj1B8/fyQVi4V16x/79D23bCJLcOTJhqYBDU8+MnTMNplnCqteQyQNZggMIGgyg/MId91w6Wq/7lrB6MRHw2FkU5qZWYSXqoohr9ymJ6fWM22aU0y2bXrzgb2bEjlQNKBBZFUBmL18+I0XX5vx3qeUnPCSz+EbWAwp6YSX2eT+zy88VgEE1MGwMDOtqnuuQFI4hP/mY7dNl4DvSDYLXQpyEWNUlV48pJuNQvmpfAFMtNMfPnAroJaKaJGg4KamJzOffuWsd7+SFXmWpi86A0gigNgXpgSA+NrLm8XtziLM32QDkTLTbm9xwaC8K4mo02mt6hWeYQgAXL3vik0dDoBC1ZpOvMkAkp/94hdUjKWUAEWKKZ0+2eizBeZCd9aVk9/96bNPP3ekqlS8NNT5XFFqMngG4r7trfvuujlIYXHJozRE5L1nOtXoaUOc4vPf/+E7p2BgIiN1DqYVLdIGSCkdPnz4jBfxViCU09BUaESoHC2cmUE8EXUAuAkQHADxBy7YvnkichLvfb/2kMK5bqqN3NlHUnRKxhGG5ECRjNrUfe64Q6oBpEGDT/OIs5klApAYqilGMNX9S3d2gkpKxuxGbCIiAikW1nF+vyGmmuUtDDMzMqNSS61nPnznpdFiy8BaiMaa8wNsXvtr6OABwPyjv3i5o/0Czlj6qV12zr59tcow1/Ilt+verJ/693/3nbJkQc+4AJBSUoMBdZjXbk4GIShgnpL+24/duk2OpnKbEAkZUk1sShyUmJ0t/NVrZps6LdIgpH0CpWrYCV8Awt25446lr0JcuNQvWYOxpKrL48a+CDNCZlywponS/9l91ySLAItDAYDcQEAKAJBD3CjNV9WU0le/+tWZmTPvyLgyWXmv1zOzoigwnERf9ERz27VXiXdVqFseljQYOcfxNJpuvF+gRkRCjNwNZ4pRj755HOIAQEEDX09guJ4GA3jArpLCez890RqJbeYTn807V64JFEWRBftHX0Uiwsy1yTnj/soLdosUqoACzDRMy+frZeefHfTVGf3Ny6+qxiyp74X6zW3kDSwdc/25lrTnYiigv3rqN4///DlER4QQgogwgQAms6EVA+cKYmZdMU+03Wce/qjNvl5FuKLlfBFjdELecYy19008EC8DJkU+yTZfZ68eiKLLQCtmcPxNzvs4Y2bUme53e0QEpoN3Xl8URUPzL/c28whIt9vNmcfFF1/87LPPLm35VgErE8pjjIcPH44xppSyOAMRxRgbQsndN1zRC0FNSlSGFK1gOStltszIRpaDxsxJ9eibb5gxACYjGNlQlCwbFsNA4BzOWArGeVunzFJKIS9+DuIEYVo7TvPG+cMXkeE5L6YUana3X3Xhjg4p2GBggNzo9p2fKwy9KarvPfXi0Tk4mGYHWk6ysBflBpaHVtuHKvFYSzSa8X/88rdq9rDghAA1jao6Si+ImRgWFQPfbSoYB++66vJd40aoY+rHVPiWxkSmRFQvTAVh5smWA/GwKDl0Ll8AM90qn9gGzSiCwogsqhsXDXW/p65st4StoPSHD9zs5hXG54evkeZMbqHHGDudDoBvfOMbRPTggw8udyFXDCsTymdnZzdv3uycE5G8FiEE51xDVn7V7m0tD1cWSD3HZFYms8KddaMcIy18ZihgJBDpVeGNmb4BRImGzuKqceANawTDyKqYoOdvn57/bHnb5dzhDL2tJSNPyjnnRp5Bw5HoePCO6yXNRYUIZaKh4GRrAfMqLWYG0q8/8aSUm80MwrCkGmX96rmfKYhppRajetLI8rMXjn75e78BeWJGjt3QYRP6ZEg0AMQwI+i0x7964PZCBmNxJKyxJkuOuaE0zczbpzt5ME4AkGs+es72aiPPUDKYmYJNCYBpNLN2y9UxBSm17v2rg3dtGzJQ3lleH0VwIsp7Nd9o+/bte+6555a7iiuJlQmd5513XlmWIYTRGXlRB42tY8X+y3YhqTGJKZnTvNRnGQSSI9Fo2pOIAHr+0Bu1JSDmlotBwVlCC0Y5lOUbAwLdt+ccAMycQ2F+5rznztT7WipGakd5/2S9XxHZNeX3X7oXgBscQzTGt2ySkxQgIiLq9umnTz+fIqeUwMYgMGl99hXuVhlWVaFVlEnqWCux4/H/+OWvH6sQE4WQkKOh6sl8wliEMSiNCEwlpY/cvv/qC3cVWrXLoterRLxjyZqxC72uqp67eWJwIB1QvpqC2LFunbVwGdknMLdZUttzZUIpFZS4aG0Z49/78A15+vTt06T5/Zrl9BTD6p+Z/fSnP3XO3X///e9lJVcKK5YFm5n3PhdqR823JmUZ03tvvqzqztRSQoNThfPvB07PaYYNQ1iGqsKYIC8cOgYSgGCDGDbUdtUsQUIYjcrZ5efvHAXBHBNzQF9b6zk6oOQMqKqquq4fvOli7xjkNOYiOryb3xp9u8nkD37zWjdU6Pe4aKcUoVGds6V7SG6gGYUTIzgRYypbPtbhpaOzX/zGjyAE5we9HOaB6jABeVvjJF9RGB74/EN3lDaXQt+UXNFSVeYmRlxKadeWyTSoeEQFqFGM5c0TXc1VGEv5qKc0EBZNEDUUbNY78Yl7bpl2NXyBeWlBfob5Z0QMBQTznXXeeee9+uqrK7Ke7x0rFspFJPdz83vO+WDDtysUt+zbNTXe7lLBpl7VaC0VBFYKyZSER4k5DYX8n335tUG90LIvzigY6UBRRBMGWUm6YNfWzlgLpCGEeW1nZl4ztfI8ZpG7BVnC35DGJzqfuG1fMIBLiyHnYlhY5jCl9LfffbJgayPkvrGlWEPKs5AZtcqIMEnpRK/fbnfC3ByhLqTzn7/2g8NHZ4kQAWIHIMUYQoBZZpUSMJxMJpBUob798m23XXspQt+XhYGjGhHF2DQNvnPrNGHgUT6kyi344NffOBGSERGDkhlYiAiwflSkuuiMJeLtbf29j9wM5pjeHn9GucL80n+O5i+++KL3/sCBA8tav5XHioVyGio9ElFd17nA0pQVMu/e1Nq9c0eF0guxWR3TKaqdrSfkbZG7MbmqwMxm9OKh18Joiw4FWub/Y/B/DNA43fFbt27N+g+j3GFRlf33FUaN33zlZjY2NrZnz56929pGMHBRegw0I9+9ahRjrOv6Oz9/TlPdJvSq6Dx7kSpGXjvrsFYQTcukMt7uz/UlaTFWuGSv9vSRLz9aGwBk3RtxbmSTbUlhYM4Bkg1wvmhBP//Jh8bH2ilpSClngQ3lWRHZPD1ug32uCYvolR+bmY0xMhHxyQo4ESX4yTbPdet+tM999M4pj2hEMkikbChrPk9OY1D9y0felNL09HSz/NRpxkqGzsOHD89PxkMIDaFZLcLwwVsum0onZnmC4pttV/TjWXcQFmKNiUFCPApkRPbEy2+MIZKV8D0ABk9WgiPIOwAEuI5kwquMg3DPpeNztflysqhOEGvPleyE1w65U61K/SidsooooNLi2Et/eveFcBNFvluJHeBYQCXlcJ5qIiINCagVzuJf/fPLiKoYm+HUdloHCsQTsGody42dITB5ZfKhJpHki1hpBW2R/l/fOfLK4WMuBSc1lAFOAHMCgYRBABgk+fgpgBpftXPsgVsub0vNcS6C+tSSVBGJxtoLHFsKgY29CLGNT/qtk2NOu5UIUJapTojQeJJ6a8mAOChGhqeP1pOsFYxUIErGIdXCRceqfrCasGMcn/vQddAKLIa31OtyrXJ+E8s5l+P7K6+8AuCCCy44c5/A27GSoXx2dvZrX/taXtCqqpo7n8wMcjdctoeIJPZSe0rr2jXqAp9VSLF+9qWjmpKmQbO+WUXuwP59LUY/RLiCiEQjGVKzWdb7CUVRwkvsVaXjuZBMeduUu+HqfQs9XgBIMeyEakEw33rs2987bRe8gQXQ/z+++FgUsSDG0QzQqsGfQAmI1R987N62QyRfOOmIdlXYkOtsquaKljGFlFJKu7ZOA2+TRWGwOxlzjQY5vxlYXnvtSNAEIJnm2qMQG5JzbiZgvOA/+fi9JZmqSwq3sOLmaFYjnxtardbs7OyKrdlKYCVD+bPPPnvjjTfmUL6o2GNmCF913tTu7ZuchZ6bNI20nhX+lgYm/fHTh9gZUIIiGw1L4++Oqy/cPdWCCffg2eAtAdooBPT+Ql1pFauCZbzNUQoN9MAdV483JAMWAwBSBXlhID51uPvUC6+ctgvewLvCkz36o2f+8cnf5tOjJghrg9KKAhDeOU6fO3iPkqv7faq77Dt5vCuaRlNmNrARE7tLz9uR/1AwEAXRISFAVQElIoIxgYgMfOi1owZWDAI9mYojJK0VUrbPaePjt1/OUHPChAYNmYxcWnnyySdDCLt3716RFVsprGQoP3jwYKYk5n82M+EUMNUC8YP7LzKzmJScR2O746yCgH7061cMsDzeaYt8y42L7tuzrV36ShlAQWYp0drxUGV2cBDlqjdjTBNePn7PAWlyZE+5DaomQATwpW//JPrx03S5G1gAKZkfn/wPX/xuD6Ag4ipYu+EbmUxBAgufvOuaHdPt9thESsnM1CIAZgFJTJZbSkx2xfk7kUJmIoIxYHnlHDDrg+byiEUze/14b3auS0Nvz8yQYoOZVsqFxT8+eHuHKjgfAjypLTxSlwkd+Qtm27Ztr7/++gov3HvGCrcZ67r+3e9+lxPzZmVRBshg4PsOXKzEziq4QhaxXD2LEGN86vlXa7gRL4vRTKFN9956jdWzJI6MBJTWlL8HM3vvo2lKViDecf2+HWOu6RgCOEIKysJQ9II8/sNfhjVTT1q3UHVi+szLx//m8X8BEwx1gCxMOvKo+2BAzinjH3701hSqoj0uoc/MUQfValUlgEwtxivP32VsANGICGODXZLT6qEoT0wpPfPy6woW9oNvAtCQWchGdOV5E5+48xpAa0PLARoaLCZEpK5rZv7FL37BzPv371/JVVsJrHAon5mZ2bFjx6j/2/BIAoxYwZecO33OlimPOqWEDdLYEEbu6MzsM4dnRAwgYzAMTcZUctu1+zroChsABRE7a7B7fp8hpaBV4ML71kQZZj/3kZs0xqZvdhJRQBwRIO6xHz/92vGexTUzErVewd7FuRqF/cUjP6wApFIWJiQDGPBpycHCp+7et3vzWLcOhScnxclZeYbAEMNEpzh/+wQxgRhZBQDITq55XA5A1GHv0rlfvfT6yRq3DVqXyQjsJM798cE7nHVBPguSYjHjiNz8m5ycfO21197LEq0SVjiUX3TRRe12OxNXFmHCqSZ2DHXe33ndPjLjVKW1U9tdbbCUCem7P3mWqIZJALip2gDAbWnTLVdfKFabmZo38bx25LTEsyRTQj/xdRfuuHL3mEir4asrwaGeBYOAWvFXj/0zcdFudP3cwGmAmflWWfVmX5vp/z//8N0kEKjawnQG8g5IgEVrW/zTT93LFk9Sxoc1DdPoSC+7+MLOwEEqS/SrKmgkYmGW+Ss5MU/Ar184hGFtBPOIv0a49bJz77j2QpD0AjygIcGPLZpIPvLII/1+/+qrr36vy7QKWHke93xec9PjLNQAWYyQOw/si4o2aWz4yM8yRNWo8WdP/haoLA8IWVMsV4At3XPXLYJERMmycveaaSOHENq+6KcQTD730EfFZmCoFp7STIAUZECo6sOvHn3yt0dCCNTg+bmB04IY6wqhU05G7v7nr/zotZk+VMPCYSbBuayKUnRg1QcP7Ln4/HP7CenUWt0AACAASURBVHWKg/J2UiGzFAonl192yYDFPIzlGWopGkD5PDq4jgQ8++IhAHl+OFfKSRhgVfzb3z+IGAzeewcN7MuaQI3TZ0R0ySWXPP300yuyUCuOVRnJOSmZvTBqKTtxJlHBdf+Gi8/ZvmlsNlA7LVmKfr2C0U9u7ImnfnWiW/YdtUwhTLTgVjNSgt61b/eWTdOcJPqui2ZrxyhORE5QbCW6Ylu484odFcYjo+QFC0SFaZ/HHKIv3X/42k8COo6aHQI2cDpAZduppv5s20+fCPq//c0PuuxKnVMEVZhBrQIqKDQhQSOgGsRiTBHUahn+9P4bOxRTCqVLc2h1JIUQrBibNX9w3xiYfHaZFABOGCAwlS1EUGngtkCgXT9WH5957rVuNPGoQqoTF56Q+tET7r9u73V7pgrnCewAsAcN1Mkxb7BxPnGDmR955BEieuihh077op4SViUrHxEwG8rlHoC0AHBRWrLr9+1ttVpYrK529sBSYHbM/Pi/PNMGQIwYGj6vUPcAT4KHb7qiFuVUgiqmNbOeLB4RUec+fe+Hgmo50CRt2J9cAgp5dUZ/+KOfUtYz2JjqPNOwGDyLc26u11PQD370k+cPddUKBpgQA5gEYFVjBgMMsIhqcuJABI233njJrk2d1thkr9dLdS9IUcCMaPuW6Qt371jwhSkrXEAAVXjgl8+/QkTOQuAWXGlh1ntPRaeg9PsPfbDhLcwXpMNwijiEcO21175vU3KsUlaeI3iv12tIzMnUKBdzWSg9eOuVKfb76awb3F8IRCSwkOjvv/skWUwKOLGFP69WUfaiCvBH993E1GPrwKcY1kxoq6qqXXa2TBb33XSlOkYCWwQvXL0kkFUK+pt/+vHRuT4hGdEiQ9wbOC0YqAARs/jXj83++d//Qy1eQwDgXTZOydZBIOig9D1qklkqgU/de3NVVb493mGr1TNZHXHg8gsabaBd9kmAhcTsgW///AVm5lShnOr36zFBL2hK6SO37b/q3ImG64/D/icz9/t951xRFES0bdu2921KjlUK5dkSu91ux6amcKgBIgspEuHGy3ZNtz1tOKMPQRBnoeLyqRdePXqiz6YG1xioXOHhgE5bH75jfwqxSqlYTGr4fQRS0/rBO26YboMA01posfKQhpmIv//Wv5Rjm1lTpq9t4MzCCcUYDSQiRtya3PzN7//0Ry/MsW+pBpASxExASCkCYCSAiYekW+bUqx6667qpMqnveNTQlNgJ7OFbLsPCoyrD479CQ+a2/PMzh4hIjVJKnYLqGLgc29yhf/3gBygsWMhNKeXp/Dwf02q1AGQa4qJjj2cWq5UF54VoGsQffHQKNZgVHG+79hK/EcqHSCQuVlROhDo+8p1fkiBgOATxblCDoEJApfUf3/eByU4opG22ZsiIY2Xbo/f7995uFDgA3kGb2rwGQMp/euKp12fDTK9eQ9Z36xtmpjSYiowx1gnmJ/7vv/pKBFcxpVQDCFEBOMdIgMGMVMGEFCOI220/7vQz99w4260crCXai3TulrHr907DNTmSEwAwNBHw0pHjLx6ZNbOaSqf9llhkD42/f99Nu6c4i9m+K0QkhJAVyXPRPEtovf+l/1crlMcYF1HyHdh6sfeD0duDH7gudY+t0vWsORC7ECuLAWRf+d6vInio27/A4wlmCoa5zrmbxu+79TLqdcPa0emOde/26y7ZPk4KcoIEhkkTrRzowf/dY983cEzG4jVUZ6Gy5vsN2XZGVaHmcmT3xY+feu4ff/gcly1xDsaFk5SZg2BkDUUGoCKSTABG6H7mQzdOSYQrYTHG+MHrL2aOsTFeCWBggxfgB0+9WIekMLjCI6YQ1Pjcafd7H74Wqd+gCZN1GQcjRcyjFOF9npJj9UL53Nzc9PR0w1eZkfODZnEydkZu/wVbd2zurNL1rDlkHU5fH4/GL7x+7IdPv7EIT1MjYQyibATG5z98w7aWUbFm1rMs3Ofu/UCs5gQODMm2M41qBf/080O/fun1UM11Oh2Io7Sh+nDmkRVQUkpeyImVhev2Ki7H/uKRx+dy7I5ZTCipZU8IpIGMeQRMGb2g8H57Bw/dcmlfXZ1422Tx8duvAvmGMztBgaBAkJaoPfbjp71jIiq9xBDUtz3Znzz4gTGJcMWJasHTas4GmHlubg6LzTm+r7BaoXzHjh1FUTTM7icAWjMzTENCBFou3rD/ilW6njWHFGtpTYxzDSmTyd9/65+htS08i0+UTFEjFYY+4cJt4/feem21dnj655133v4Lz3Eth4S+RjL0QQ0FJag9+k9PmO+UYiGEEKMXXluuSesVQ09601iHqt9ut83oN7878rNfvdwLFURMQSAQEwHEzlFSgMhiNIB9JrbEP/3EvTU59a0950xesnOqr7xIUztFAyIh1t2f/volB1NFqvvifM/c+bu3P3z75dBQR26XC2blo7GYsbExAFVVnYq95fsBq3ggzYsySszfbnsKVSOAgbIgdUA32Odu3ZO4047dUKa+oqWkJo7KYCdW7zrfnxAhit0etczUXPGtH/7yxdmCYg3AgJSPpZZgMQs0qxoEAq8WWhpN/b/+zL2XFceStVpU+ZQCjXVFg851nFg4YwmsIdXg7MkSTYowM07VMZ78d/deVEcYSiVtQUDaJgV5QGGpzsXx1DOgDyD1fvK6/uwXT8bEXR1jgUOlzNk5aANnEAxiZgXn+XhkxwlNx2ns//vqtzrSjgwSjSAzBmYBdkDBAHnyrQIoAZDvu/bOSf6DW/d2dPYzH9pvDJKmXhGsqqTt6uMd4NGfvn5c20NJ29iVsfHY/V8+datoL0k7shS6SA9pVBzPQrsruUCrhtWtLaaURCR/s42c4DHPZgkACFkup134PXv2bB9nlO1UoVMIHEy1SqFobHesS8So+UxDZKqqRn/zyNfNl4D2ul3Oq0cC4lwmZynMoAYQgYw4jZf4/Kc/UhZ1t+JEXEp/DFyKOz43Q8XkmXpfZuaQTb/UiyQulPm8cbvyin3eQTXPYhOMAR7Z5QqQYgS7GJIHwOUjX3+8W2e3RtMY3lbZ3MD7Dc7br596+alX3uC6B3DLGATYggVoUgDp9z52/44Jf89tV5OGFKxBXi0mcQCKCRC+/v1/aVkfgBBqRZG6t117yZX7zkciSyhlxLl4d+RdpKrdbhdAp7M2qpSrm5Vnc7iyLPOdlmPTwDduMB8AANm+GkCnLD58w0VzRgjMKQSNzAw2sTVwwFlZEBfMAjM2JdNE8o3v/uhQF0h1p12YRhksHgNv8UQldkACRQ+9786rr7t0q/NtlSLVc9SrhctiotOtzliioUYFm4iEFE3riop+tIM3XjTVKbMZV2Y9GSzLIpmZgQUKNSPvHVFMr5xI//j9fzHXMXApA9biGvLZOAuRtO7N0f/72BPsPSzBQAhYuP1YMqBh5yT+5z/7I5cSSNueGkKwSiHQCP7dkdkfP33IpT6RhBB80Zqi/r/7/EE2wBdOQDqQyH335xmaS+SiSlg7Plyrm5WbWTaHq6qB+nxuDeefR+Ogg1JMjKb68O1XVyl2inHEKpgywxx0Ec2ydQhyUkclIoYSUVQ+0rcv/dcnIQUImhIANYSYfbDUVPOIjCLPHzM0jAP//afvGS9rZTYUnc54XVmotXMGu/EkrDF/7o6RuPAsn77rGtNEMMnmigNL9KwgwwBgyRWS7yoWeeQ7P3mjIvjSzJhMmEjT/K21gfcbNKb29PQ/fPepw8fCwHAC2jTMCwWYFPsvmBZWqyoF4sKMLCFAowLfeOLpvgJSqCr7Vr974vceuOPCTaIh5NcjxAZLllxaIaJXXnklpZQr5msCq7v1R9zMsizz3cvM2RUew1Ceqy6ZyMnMF+2c3LNjsyM453K2rik1tPvWLZLmwQRmhqWkSNL+2699++hsnKvUeQ8oESBMRFDLGoKmWXPLQb2gpIT9uzb90SduF61ZOnOhcq2OoxbHN8/U28oHtVwrd64QS1dduuf8beOOJRtwZkHpHJPJQGT9EAcjgUCvX9WEv/vmD1wxXgeDJY01hiyINWRLfbahQKtn3aou/uKbTwAUGUi+4WyoCnDhGRwVqtQaTwbnF8xBBDHVNQN//72fU4qhGI+qRnzRjumP3XMLhb4rJAGmkWiR41suHkxNTb3fLN+asbqhPAfrnJKP7KvzLGgO8YNQlR8MgoHJPnLDlb3qWD+RZ8cGSsTNc47rEUJMRKZ5gEJ9IUb+8NHjX/j6d6gsDAyopjRYGFWATSNDHQGGgXC3ASl9/IMHbtq3S+u+CaqqQrCyOGOjWMysLI7BzL0quDD74B3XwzSLaWLgjZsv3jJloRCXJ/g5mW+3v/r9Zw4f70dT1eiFzUwNIGZy2SRuA+9DEEldd8e8f/T7v37leAIAY1s4qDJzSAzAWQ2WBF6EnGRJWuM//tVLz796gjX2IznntPvmf/vp+ya9QSRPIeXnbniqGGPul7ZarV27di35fZ45rPqB1Mwyu56Z67rGkNNCdrLMgkGgj7AE0EcOXNYZR1fZEjNzIUVcWBFwvcLBSu+TIaqS5caDFa3OXz/2xG/f0NwB4pGRvHgDA+yYCAoCCQwwARJPkf1Pf3Jw71YTQ9uLOO3pGauwEBH5UpjMrE66Z+vYB648H1yklN5GJVSNgMJUGDH3ga2OwH969DtFe5xSXQgzFMwmRSIHYNFR/w2cKRhCwW2k2ddm6j//5k9YFRKbrMdTTY6rKpATEEcgBcXCIrQgXwP/5Rv/TAbxBceeY77r6r33Hbig7VkNxEwGIgahYYw4d/iwmAna+xCrHsqdc6qaw3dZlpnTAoB4QFfIq0ogymQMuEt2TO4+f6drj1m0lFJBLi5GHlp/iGFwlGF2IhKqvqpqrI9V+OKXvwYCzIigabArNU83mFqs1GpmDRRAas4j8XmT9j/+2eecGqVoqAOa5IRWFabRwLmbVLY7V12yd0uHEiDih42mlJIBEOZsAVvX9SBCU/z/2XvzeMmq6mz4WWvvfU5V3alnaJqhGRq6EQQZRHFGARXECTXGqHGIJmqMQ4zJLyRfHBLNG2Py5stLpldjjFFjgoF8DhHUxFniCAooM9iEqed7q845e1jr+2PfW1QPVQ1ID7f7Pj9+/M6tPlW1z6l91l57rWc966d3bLr1ni21DyzJmdkcDLEVJVXl3TGPF7CvoCxcs7NBYC776ve110StRpEZmAAURWajKgGtghGHNnyO4Dvv3fqN6+5EqiPMeKExxtf9wnNsqgAR49KseCIG3PNdIMeE52Okbo+b8h1uygN/EpjB/YePAGIQg2BNfNGpxyAG5lqNne5tLMxBR0aENUmVjFFNqrPrH9iC3L9+9ac33nqPsgNgpIbGRJh1IciSbTMVBC7IEZgYQYIFPeGIpW988dMasDcTHdrWYorKjXEJpiR14gGueI/f5xi9hWsoltIg8UVPORkJPNC4zjmTk58gA1iQcUoMD2uh7lPfvF6jFQSwDQlsCyLS2OSGG4J55kkdPBC44HwiVxpfzVQfvPKGwBPQrswWfwIAVJA8VFRnuwsxAVSCTJH1yd1YTpkqEOcYSyl6qAD4p89/vXbjyTeFBKL2c5/xpJMOFZh2pq7bWf4uM7MZYBwOHohIVgBcMOVDkUVq8vFo8m/+x7NOf8wk116NMaYsy7QQA51DN5qlzr//U1+LEQoLWypZMzKPY50TNWzMC59xysVPXGuazd50ajHWkI1Vq0AdJZIDpEx7PM9TFkWI3hjXCK9aZE8+4WgQ4vAqjKQg5xhkVHup+PbV31OaH9V3C9gOqtY6SahqX7Q6V37pKz/b4JULtlRVFXLJGzGMzf7cCGRLwgyoQmFMIUnv2thc9a0fc7WZlxzGEjpO3/SCx8AO3X3mNB4z5zx8v14/5+Qf4WvfK9gbprzP78nH/ZznLiEKgJdPlWefcGiynW5VGVculH70MT45sbkbrr/tnn/66k8IEme7Xw6NITY+CiBsBVTG5rdf8fQnn3R41dRJ2TIZiU2vB1N6NZbhUr2nxx8bb61VYnHtp59ypAVA4OEtR5gYJARV3/vqDfdsma6JKO67atUFPDwYY2KMylSW7ar23SAf/vi/9eBUYrvtAJChBCRwSKMSY5nx3TSBM01CEwhkzUc/89XEBRWdZuumxo299UVPntLQDLdvff3tPmE6pXT77bd77+epo7A3TDkRhRCstYOa7kMHlFloohed/ShVhUiM0Q2n9B9sqKe36vjyIvX+7t+/fscWsYCEUVO/KCxSIEBAYKJq6/ve+tKz1q60aFJoyJWuPSFAqyhDCEWrvafHT0RkIEEU8rynPHquoHPofFAFCAzmovjUl79nbFuZzPD2zQvYP5ErcnM+zJVl4uLqH938jevvJ7YAS3qg/aeq0nAZNWZWoCydpAAIiBJwx30zX/z29TGhG+1k25xy3GEXPGHd6Ma2WZQ8k1X6ryxbtmzLlvkqzrqXHglV3bRpk7V2t9VTOZ9XsJ669sjlE3Z8rB3SvMxC7CEwszTTalu+u/WPPvk1SDAsSYYudQQYIwaxjpq4QNkpUvjD17/wUaumWkbFFFu6Fakm3zXGbdnjTjkM2Rh9q3DHrFx05KFTBKSROe38y6dE926ufnzz+hSJ7ahd3QL2T8x2uwcyCaIJmoqJj1z2uW7kENmwoRgMAEFhXI597xJZ8gGzcVqtG98An/j/vjxdx+jGO5zI8Nufd3oiwLhy+G41G/EcXQGQUlLV8fHxo48+eg9c/d7AXjLlVVVNTEyoqnNuZGuhfgZExicmnnbK0amatq4MC4/uHIwxHVawFdXv/PDay75+I5DScGVvTQIwoJbyBtYx02Fj8v53/vKalRNO6onxMcNoWaNkis4e12YRpaQRITzvKacAAgWbUbOQgKSRjfn0f30/qVo2SSXNHx32BWQYY1QoRmGiFEKr1ZrxctP6+//1yquTBYjBBjHNylEMz51ICtZyE9WYAiDXal13R+8/rr6u6IxRaiQ1L3zSySccvZyBGgwZ6pvk6nwARVHEGHM14rx2GfeSKV+6dOnGjRvzncpbmxEnE5GoRNjnP+kkx8ps5CCs9hwCSU2jJjSVFGNthD+97Ou3bQijdJyZFS5GbZlYKEICyIqvD23h/b/1K6ccMTWu3ehrmFJEfHfrnh6/cyURtRjPOOUIpQIAgfqUyp2hSZg4Af/xvVs59EjVp7j/9wFYwA4QgXE2xigxLJ4YD3VFZNS2/vk/vnHd+l5AFtASAKBRzAhmA8BZUijUROCj//Lv29BumqbFsmrp+Ouf+3hQqb4BABoV9e6rHmbJv/mu+rD3Rj8zM/OFL3xh91wfFVVl4lqx7qhlR61a2YRgzLxMROwJOOaoLEXHxaqmVgjhNy79nInViLdUCbAFJMBPtywiQMU4YrOskA/8zqvPOPEYy6ZOZECLW3t8yWwab6096cS1K6dszl0miWb4roKYBbj2x7f/bIsvKJHCGIrDTf8C9k+ISAih1WoZopnpra3SJZUouK9O//ivVyTkUCAUECgNb9gGUlXErG9O+NZ3f/Ljm++IZsyRNGre8ovnj7VKpEaKsqXSyFC7kSO9xpher7dx48YY47x2ybE3Tfktt9xy+umn73bpS8yEpIJxeKg86ymPMUilVAJVVTYwlkBCqqzM86e1wiOFRM4wCqYA6wxzjJvuu+e3P3ktpOsBQYI0EFUIFCIRhI6BBcBtlBOgWYJtbUtmmZD6vW947ovPe6xFFSB1IoOkbAI7JS5VXNNtO9t76P2P+zoNO6BNMyruuU8+SZoc4Fejsd6eoto/ltlifvuZa37KEpQ6QdXQOHSBwTLPYC0zSJMoETnbpGiZrEigsW/efP+nv3g1RAFXCRgRw8nHuXzHkhBEQV/79ncjtwK1Y2qec/pRTz75KIQIdpyQlMuddI8H5UP6jZi995kQOa+x90z5M5/5zKVLl+624alEATExS0ggPvsxJy3tUCNs2VhrJSETP8kYZtaDr1CbVDRJRkoJTFtnut/69n9/7Mu3capYTC0WnBA5kGcautS1IN1GErcc8IbnPe73Xv6M5S1t0BKRAt74GWI7TeNVuWLj1pnlnUfGYVHVaNpLWnrS8Udy2Z6tvYPhgY3aYMiSmZlks8f3fvxT31REaq1lSfN9L7yAPgx73/Uf+fTXrr+vAsUOQeFgRzDcsm4cZ4me177qlyadtNPWlZPm4ueeDwVZnhWuyFogO6E/u7I1v/LKK7vd7vLly/fM9e097NVHItPyR4sbOMsJs3R9gI9cjNOOOUSL8RBmNTqYLDOLSJBAfNBttEUEEEMorBERa4ux8YmZXvPXV3zlB7dOC6uzBrCwIBSj+FihapVFI2DVMRue+djj/vclbzjhkLbndoAtnLFSW+lB/MSiJRu6D9kL7mtZ7ABvOo89/pBDOwAYAhgDstsR0XZ4lzbf+ek9t9w9XVqrTEqQ5Gm4SOkC5hckprF26940/u5/+I8aFhpFoCOrdr2PYOQg22SJ977z15bR1pdd+JRjljtHAlJVldyHi3Z0yfvH/U5vj370o2+55ZY9dHV7E3v1kXjXu951ySWX7M6lEp/IsoJIia2KdcUXr72DVQFSFWY2bLNbanaXQT3w4AwRSGdZWTGmZF3B1obQ+9o1Pzv7seuWtyhFUQOrpBRpyE+sBCZ1hJSETKFslnTMsx9/4v0133b7nR6corY5tY0ESVK0jTwCGyAiatT85ovOPnJJEbmwBIIoWaZMQt3OjudaapL055d9485tscMiCUnZqNcszb6A+Q9CIamrRev+TVHr5qxHrWIKgBuRTGM2SjBEROqYJjr2qEOWPuvJp5qQrFEVBbukYAKR7rDqD7LIc3hgcnJyzZo1e/IS9xL29kZVVXu93kg+ouSyUNX8sIbHnXL8oRPWOcOMrG+eOap9MfSDCkkJzCEEESmKItNsQxIDt6HaeskHPnHPdG0cjDB0WoZ3aQlcSFL4HiWfgARYkonCv+elj333659zzKGL1LZm0KnFhqYae+Ri00s75sx1x+RmIgRAINmgb2/H85/MvLUr37/+VmvHmiYkjWwZnNvFLeBAgIEGZQ4zqZ6+7KvXfOOGu5CERrlnrBCSuX41oRk3eOrpa0tFYUmDEBfA3HZ0+1zaDhu+3K9qvmc7+9jbj0QIoSiKfBOHwTKyhmvW+yssnvO4E+veTJLgnGPmELLSlDnYXHLM9fzM187MRVGQYWaOphxXf8u9G9/+F5dvagzQgEeVbgogxqHomMJZDTYFEagZp7Dt/FMP/5t3vPTlT1u7uBAqW7Y9WY8uBXhwyCGXs9cdZo3ClbNaSHkx1jQYK++XbwD40o/uaBovwYuCmRQppIVazwMHSnVRTJVixly1Jcb3/+1n7p8p0nDrGkIwxIaRUkpJrXMq0RmobwAmU0ChCs6tQ4d96ZzdOJCSLnv7SsbGxjZs2DD6HNYkADEjhSg2KF5w9tp2u0UiimStnVNx4b0//n0ONk5AmZsfmsZ7n0IUEdFaUjs5vuF/qkv+/OMbaolijQ5lApQAAT4owIiRSYm5FqidALCsHX/jBWd/6JJXnX3MlPHTo5feB4Nsl4noOY8/sQkRVEoSKIwxPCBQh+0DmiGEf/vmTwpGkWpTdkASo49kRnptC5hPUFXf1JENuYIl3d2jP/ibT41gk1jnUkqAGEPGmJhys3JQ4YL3yoiiTGASALqriZJjs9t1ij8gsA9MYbfbvfLKK0edEcNcq3WFIRCWL7LHn3BcWZZNr1JVa20OgcnB15mXDNd1nZI654wha60xxMxFaLrtjtdFiNu+c+vd7/vwF6s0qnExxa7R6JyJZKJrCxUSfZtiBAUqI3esc8ct5Q++9UX/+52vOuXIRQ91nDqHB76RCMDpaw4zrohgzvUgTCrC22+w8pkxxl6v9+M7NyJFK17BKURAXNk6CHdjBypE24ULlWodOi2YyPLft937kU/+16i3xAQVza0ODAlRTKRQWxYJMIaACI1ApAem4QOOQmZezPfazp2xD5gAF1xwwWmnndZut3PtbN5KD9xZJmM5B1LJMjInujiiHf75azeU7U6KyThXSM/DJBFzYP0eu4cmk/U9VRWzfa6h6l1ZBHSMBvHRlOvvnb7t1vWnn7GuZOQ7SwBiACkQQQJugZjmtjZEYDYgNgQzu8ITjCXg8KWdi554ypq1J/S2bbj7nrsjGTElwExKEmCsItfpqaokVQEnJqsJoYYpnWGEplIL485+1BEXnX1i/kbDs1qmRAQwIalKQ2xBqiBERvj7r63/4XU/FeOEGJrAlolJgh5sP/qBCyJVGEvEJAJlVSj98PZ7V6xYtubwJYyYUmLyIBNARoSIjDUgpoHZy0z9PwkAGGSQE59zkbr8/5xdq6qqLMt3vetd+/TSH2HsA6/8/PPPX7Rokfe+aRpjTI6W9CURhmHdSScef9gia4ukqHvdJgGAG84/PdhQxp6RGZLKGtMq2gn41vW3/d7/+6luZAApNJAE67zaSEUcng4dhqcdV/75r7/wo+9720vPO2txkSTU7FpiO+IbiaqwxIXhsgBaUnXiTCTLRQtMQWFc0SpcG+HsdUeN+ArKfUhEOOe9xXznB9c+3PuxgPmNv/zY5Tff20NMzOypDcBp1Icb2u6bF2PMbbfdVlXVAeaSY1/FmlNKzDwYgRWR0XzzgvGcx58YfaPgdmFQjKeUdEG3eg6WLAwiJUmsTTCcukJX/3TTW/7o0ju3eGMLkISQMplbRjQ3HIJI7eDr46f0HS8483MfeOOfv+XiJ65b2dLatqfYlCyJQkPJJy4rt2SmWBmNVWOTSIjaJDSNL6V+yqOHm3JigElBLEBU8F3b4g033/7z3JMFzF9sauiS//PJe70joqhIYPx8XSGzeYkxrlixYv4q2Y7APluaNm3aNDU1lYXkAcQYR+fWIrBp87YXXvKhmWDaFHtm3EjtIHGBlwYAVWhB1wAAIABJREFUSLDCjbWFCVabri0CinbURcFvWbtEP/TuXx9zScWI4Vj3yoJG81t2RjehZWAADbWqclEqWICv/vDO6265479/fPOt92ytkiHrRCRFT846qUEl2ZKIenVz4oryn9/7KyNmXFJhYtIAwMP9+9dueP8/fh580GkzLAAAq6/M1NNOWvWnr3+mM8mrcwzSiOEFzKPhvc9cciKap80lRmOfVc299a1vveOOO1auXNlnEGdXfdj5CkyUdPM9M3fevUGBSmyZm8sslIoAAJRt0kRERo0lZSNJ0PNK6n/hgnPOOGElfM2u9FFbhYWm0aJxO6PgwCpJQLYg46CIobGQ1YcteeyJR73gqY958TMec85jVh+3cmLZeLF0qhV8Q35GRIL3JHFsbPLMU9c96eQjRjZSJiZAEogimUv/5St3b+n9fHdlAfMVjrSbcOd9W0qk049dbgwnYkbCQyz0HSxD6fV6RHSgymruM5fn/vvvP+qoowDEGHNPJmNMSmlYmIUBqPzCs5749f++puJO27Kva2vtgiHPaKERDRo1iqpxqhJC6LTwmmc94aXnn2I1oSiSCluOoBhs6yHOZ4UjguEETSACsXGtRDDaBVyCbbXKNasPO2H1YYzEKkpGU+pFu2XbTDW9pRK3csUSm7bADiPDiBIDEhNZpmmPH99xn6aw4JUfnKhhlrjYk/KvLv/GKcce+tgTj9AksA/Zm872JLvkRVHkRhMHJPZZdOLkk09ut9tZJjj31sPcfd81NKlpPWrV+NqjDvUJhTaFscYOF8M8yBCSVzXOOGZEhve0rNN6ztkn/MoFZ3ViAhRETCxRCXDlQ34kSEWBSKYh48FJwOqNdCsa81SA2AIFxGgimEQuKqtxXNKK5RNrVh9+wnGHdiaLZIa3tsjCAKpkHWB/9JM7ZgIRDjq5tAVkJGGNyYmPbvz3/+9nb7yncpbjQ1ePyCzyHFoxxoyPj++J0e4P2JeB5pSStTY74/nPEScTaQCMhAvPP4eLVqi6ZVlU9QG7xj5UeDfute2TjRAiHSuLx55w+Dtedg5rYEsgGxJIQ8tGEyqzK8W40YjEBFiNpTZFqgxL4qLCWFtjIclI5rAzwZDCiDoEA7GKQgWyuZTKCobLks/OxCRQhii+94MfCbsRShwLOLBRWuqKs0xtjv9Tl+//yGd6QS095Hmb+8I3TbNbIb/5jn25e221WuvXr1+5cmW+xbspohXLDJB79mmH/c1lvLnHPZ1rH3UwIcu5icZZtSkiawoRmWy2bHGLQVwKwsy2x51x/Lvf9HwnNbiV3+jM3G/tHOZETnIYsf/hWeLGWrvD6+hPFLKAzRkWA7QZgN0uW5GPiQAHoCAADLsEQAmMch2UDAmMSUBPwal6w9OOXLLirJXLJsfaHSLTnak3bO3duWHTj2+5/cbb18/EiRC6BUuKvnBt2LIOUS0XGkRNjHG8sBpmRE3NnejGW3GPN0hawAgwwMze16ZwxhjfRGabBG32W6tQji8KCYxUMCsSM0cyRhpCc9yKySeeduI5j32Us/Qw7FV+TAZ7xO/n2LhxY7vdNsb0YxV9jCZQ7mO354YbbrjxxhsvvPDC3YshxKDWASGo+8hnv/Phz36r9tG1Sw0H1x48Z2+cc865XO8gIj4G68ox8puSLdScfeKS973hF8sWCsFu1sfcPHcOeU3NW9HMKcrHO1v2Rxx1XbdaLRFRMBh1hLVQwKVgTO4uI2CrhADUEdf84Ppv/HT9f3z/lpnoQrdnpGl3Wj3vHZErSh+l8sm5whCxNhoadQ+NsbOARxak6pzzyc9ONaGybItIYOekMbEXYSK3lNjEnou9JYsnnn726Rc+9bHHLi8tBDGoKR5eoX3uEPTzi0884rjtttsWLVpkrR0bG8t9ogGo6szMzJIlS3Y4uX8CM+etxg4n7GNTfsUVV5x55pnLly/Py+bI2y0SiaxPKLdt6l3wBx8hb7rScweZdLUiqVBRFCGEKCm3yjTG9JpYcE1eV60+5K/f9JLlk8mYtieMSCaEEAZZWbNy8Mw71zTvhSrnTHSPIThnoAqi4L0rCoChWekuQRQiAIEomiIJqoT//M71V337J9fedFdQSbHxKFoGKinAcntKord+2zjqmRFh+gXsefBcQTAbqJCqMtsYY4BVPzNZknVlUIp175TjVl58/pPPPeNoAkghKTIpM2FWKOuhpcfqui6KIjsi+7wsSFX7Yq7MXNf1Pffcs3r16uwwVVU16Iz3H89cSmmtrevaWpv1l3q9Xkppenr68MMPz+fv+2Bkt9v13k9NTe32RotvtDAMSxJ/+8P/ddXVN4KbYXrcBywkurIdQvAxlWWpqjk7by16DR+1wnzoLa9YsqJTJIERUTuS/DdrowenSJZBz2tq0zRlWe5g8ffUZSlSEmcZEKgAgCQwR3I6ME1NPlbkxt0p1ZZNSu66n2259LIvfu/W+6joSDNtNTFztw7GFaRioQtyivsWzBxCIKKiKEQkxpjNq2MlW9Y+WMQjFrV+/RXPP/PEQ1sEE2sYp2TypjubddJID5fRFEKIMYrIXst83nfffZ1Op09/7C8nO/isIYQsEZj/7P9rjDEXw+/8yfmcu+66a2pqanx8fFaZYC9c0mhs3rx5bGwshwt2t4tvEkqTekBxy/3y/EsuXVRyb35EwB4xKJKzZe0bY5wxxntvmdggVNWiZYv/9q2vOHalcnLe2iJ6zGnYjMDg1OlHVABUVdVut/sEgD1/ZZKlbfMMzhK+3vvCWhBAs9JppKDZorAgqmQcAVm+vCZ87fu3/Mk/fm7TdEW2DYCRVDXCJi6cNHv+EhYwFIOJmX4NvbW2W9XQsKRtX/ysJ7/ywjNsQkGRiD0xA0aVNAJQdgEQoPVwB9A0TYyx1Wox8/T0dNM0mzZtWrt27SN1gdPT09n97z8s3vutW7cuX748P0qYC13m+9CXn5oVXk8ppVQUharGGPvOU662yefsoOaYY5L5eNctu/Y++kGiUeNRgBpoCe1GHrMRb/7w57/5rWtQdPbeQPcHkEBZiWeXd6bScdWbmVw0dembX3TC6iVGOLB3nnzhCg0jSoEGbbf3/qqrrrrwwgt7vV673fbe51nVn2d7PPuvEaCY1FgrQBLknLZJDZgBQs6gziVOFSBI8JUr2lmbg6InE7bR2B//9WVfue6uTZVMjY/Fasa40sfEB5+I5v6GPJdCSNaytbbxFYlqZ+kJy/gPfuV5a1dOAVFhiAgpCucNZZazFyBLO+BhkO76zkp/PovITTfdtGrVqk6n09dNzA9Ur9cLIdR1nate7rvvvrzkOOfyh2TD2hcBzJ+WNV6aptnB5c8RlX5nhf637+Cz9l/ZwQYOPncj4s8ppRDC/rLrzLdjxAlKABwogtsGgDSvOvdMbh90uSwmm8NtIYTS2dJxPTM9Nda65FUXrVu9xEjqAU6sFsYBI0rjQgj9HV8I4fbbb9+4ceMHP/jBK664IsZYFEX2YvJ37QVR2ZQEZGYfuaQ2CzSqJlMmckpW1CbhCOT/SKURlmIsJLHasHSJ4XlsEv53XvfCN7743GVF6E5vdu1OXdcPg3y5gD2BHCi2Njf60U6nc/bRYx94xyuPP6QDrZDibDtOYzn1IEHBEZzIgiw0QUYomQ9FjhyqaggBQI7trFmzJnvoxpj8LGSjaYyp63r58uV5Pzo5OZnzjc65QXPc/38mC2Q/egc7nkW7sp+UNyW5tXp+7nbugJYDUBjIcA76T3ag+WX23PO1oB+ieRi3Zk9g/fr1hxxyyIiNfAKMANz1OlYowBEeL770i7fecOPeHOf+ABFxZauqqk7b1TPbxlvuda9+9SvO7DTUhmqpXrnMjTmCaDE8WJ6D4DHGrVu3isjmzZtPOOEEzE2UPAv7M28vbOBUFUQxDkbM1ZMjhZttCZMzZ4k4B44kSTDsRBmAEmKKpVEoRbJf+v5tf/L3n97kLbE10J2fnAXsTQiUFMw2h85CU7Vaxdq1J3zotY/nzpiCfUJhQNmrY04AAQZQiQrOrwhGpfFHoO/t5oN++qfv9g56yjsoiOxW6a//rr5iV9+OPRjq1w5b3mGOeZ9shl159zHG/cUr37Zt2+c///l83K8Y6u9fADCikAfahWrSpLA1m987/xiYkmMtxI4TqQYaMyrgeZ8L3aFvQx/etgwpQtUpTK9qqOi88vnnveKMDqhdAiURuKS59ODOdjz7BYOv3H333VkDJ9txAFlvKAf1BqXkB3+Once28yv93cPgnyOuN8f75oSLGWRBrgAsQYEAROJIJnHhZ3s2suGsnA4mGKA0NsHVNaw05590yPve9NKpwggcpcjMhpQ1kkaBSg5UYcG+7yWUhqYRKjItIk11NGNnrDn6795wNncmACagNLOJO2YmgFKafYbZ5tCKAaxiblcm0ARFfkj0geknknJQfbsJ2TeO+aAfie7b0EGDm5ONfTzI0GL/tEF/9MFQeHf4/B18ph1G2I+t91/ps2L2F1N+8803n3766XkTlKnTO99llSwrT6qqgtLSmjVrVi8py8kpSY0XqKpJVa0W8cDMcalqGboBJoTGp1h0Jl72jNNec+7JUYcGmvoTOmvd5I2k9z5rUm7ZsmVycrLb7S5btmyHN+ZJbIzpz5j8OjPvYJTzLq//Yn+pSCllCjzmdrUP6UrzN6boSRNBHImVYJO3GgsMDZgY0VbbJrWJilNOOOztr3zeJLpqbEjio1hXAMQgZrZs9CBjsu5DVN5PcFFI1VMvEY85YvK3f/VCtmPDzu+7orkvSe6dkhmJIhzBnkwkKIjEU9gGosbHJMzGAX1C7YG/VGfjzvtPl9KLLrpofHz87rvvds6llDqdDgYE41NKNNcwBLNhowSgtPSa5zxpenq61WoJCmNMm6LYdjmqQnx+YHD5HQQTWhzFdlrtiXPWLf+NFz+ZSRhDpZzzdrL/gaqambbGmJmZmZzbPPLII3c7ksE0+uDA+vyW/u6y/xA65/LvmCtId3u9/eNBf8rYQsGa1wkiMEMFI7Q4KDZNE9ios4XiWacd/voXnhPqLhtnXTskUjJEJDF47xeCLnsN1rU7MEZrtTRWure/7NxV7WaErGm/yiH/mTN7qhrJErPVUKTaNjMMiVxUbpKAsrDMEIXOTidB/Lkkzvdn7LDn2I9MOYCZmZnFixf3/xwM/BtjAM6J4P7rKhJDOO+sY49cOuZjYoamCGbEJuqB+YwSUQR8YmPMY46c/KPXP98pvNjclHaXyCY129/8/1xUGULIDN/Be77bb5+dNNub9cFZZa313udNX4wxhNAP9o3W2NnldwGIQCIStgmsZJWscqFmhK4jlQXbLMSlwaB78TNOec5Tz0i+Uok+JFUyRCbvOdx+VwF4wEJNr6pAhiEvOO9xpxyzHBJGzAjtU5Uk5qbMzhkioug1BcCACxQdEKymNgQaxFcS/UBMkR+GkuI8wg4x2P3IlK9atcpa2+v18hY+L8sxxqqqMJf7zongfgGrc8Zo+tUXnxdCYEqG4KloaR3kgN04q203pjx5RfGBN77QGihQsEQeatryap1z9IP58WwrJyYmHt4wdjbrGTlHFEKoqqpPic0/5YOnMw5+oIVYSGaz6FwX0TCcUBPJgmARJUSwAbjQ9MZfePrJq1dqM91pl6KUVInUMsdwYC75+yGaKraWTvlkV02Ovfz5Z0IDtOOGz4jsZA5uAVUppQRbqHFKHKKCGMp93VpmNoYBSTFmIxfTvN+dP0io7mcteHJmuc+TA2CtzYUq/f3DAxVQolBOKT3j9GNPXL0i+Qq2SKpjBcMcgOK32Xr6xGsnw5+98zXt0oYQCAKwH+nvZpJ4Ps6mNn/Uzno9P8/A+jkia20uNVbV7373u/32rdhd5nPXiB4SoYGQGNFADKQYvgsBEEOEatsxwKBCRFaUeO3F568YN5R8lMS51VFKGPk5C3gEMTbWnmm6iP5XXnDhIgjYgBkYpWyai2gwy9aAgmAMgNCElMDObOjh8m/+5F0f/dIl//BfW4PztoxkYxRrGYD3keZ/oHUY+k9c/8/9a4M5NjbWD7Zm3zxn55gZCtHtwmeqSqrGFozwkqed+scfu7+n1vqutEwULQ6sH7HPYz2qEz/4m6+caqFO2rJAStFyZ7h30y8hyxGVzGfapRzPI4jJyUkATdPksrp+EOYhBfTy9ivaFvBAnkRSYlKifsHIjrDArHKWRhCiGGOMNL3Hr1ty3uNP/cSXvkc8pmAyjjQVhTuAexHsV6hjZVjWHD711NNWGRGAQRhdityfoiEk61wCgqCE3H7P5quvv/PKb1930/9sIteK0SvSdT+69rUvf8mTT1nZthYAkVhDNKj5cKBjv7vQweKr7digEAWIjAIqwrM5bQiEWQLsxe/51M13d5eGjY0pGyE7zx2ufhSsb8TzwUffduGRa1a3AZIGXEbASCQoeDdVnYMs1L1AEt+wYUOn08kEmL66y4OvGs3RdhH51Ddvvueun8W6u+aYox5z0gmrlo0ZAHO1oLt6ZxOp9AkdFkSfXAuAkQTI+p57ze/+xebUqnzTNiTRC/avdNEBDM/aienNL3v6S556imkUVmFCQjlsNoiCMJuJEREYs3Fr9YNrrv37r99xy213gCy4CClaa1W8JRJTorfx3DPXvvI5Tz3+8KWEBOI5gutBgf3xOvvB3AfzmAlq1hYUV3zjB3/4ia9qapuwrSmM0fkdLk+2nXpby3ZLg3eWamrZMPPHb3zhOaceM+wtO3BLsgXXAV3yfoh8Tw/+s5/97KMe9ajx8fGlS5cOjmoH3Yntxqw9UMuLGjYmAoQrvn/zez7xnzIzDXIgA9GWTSceteyCpzzu6Y87ZjwmNhHEHs4AJnkwexraVkoBEvmn//zOn3zie2x7JU1UUiEZaxYK+vcG1FDpw5WXvmGcgucJGBQCcBzqmEuAajIFQRn0qW/ceOmnv9md3qpDZq9obLVa3W63xXLu40998XmPP/nwSdJG1M2aEVEQ9Q1eZrPOMtkfsINZJ4Af+LcHLmBX30rST8/S4GmaQHNvIIYyaFan2WBT5CVNQseA0EQBuGTJzKxIKjBFLobqV4fs+npFctwiX533fn805bnUsG96RrtyikDikLTr6NW//3d33h+bpnHjLjXzW8dckw+w46WpfQpcTuq23/zF889/6qnDFGcGVVP6wfH8S+cMxMaNG5cuXbp3nJQbb7zxpptuevazn/3A5ewksJPj5v1dFysH4wmFeqWC3vNXV1z5ndvMmMRoQgLYEEyKtU3V4rZdPNV5x2tecvIxy43Whh1mY6KiAA3J5Cugvtniype87dKZhJltVdFyDJNZrQvY00iWzll3zP9607OMSGKrSFYNMFwjSFMigxRmkn3fhy//5vdu8ImlvVxid5enM1ICyJTGGF/PsO+etu64ZzzlCS84/RBXtHSOYW6QFV0S+r+7EkBKTLP1Ew/U5T8wFtX+BB70QgBkoQERQT+EmIP7yv2FY9ZGMwHokitDZRkwZRWpbRUq3W29r98x09v4P6evPerIlUuRmXh5Xz58t90XeBGRu+++e3805djJMR+htOU1FHAAGsW3r7/znR/8ZF0sZp3heS5+y7G2rc50r8vFRGHplU89/k0XP01plGZtNtn9mkxV7cdVvvCFLxx77LFr1qzZCyNX1bxs9NU7dynLNUgcVlVS8gnGSQD/7l984ls3ba0bKVItlkRUwMYVUBaNkGQsjWv9q7/0vOc+4fhSAxIauMKCtAGN4ClKBH/oc9/+q09/x5U21RUNERFdwCOOKqUPvv555595hKglAqQhKkEyjEQXgRgVRG//Xx/66m29gmncyOaGimG7KImwLiZKREXRUk3RB8vkLB7/qNXPOnPNWWsOXTRZACxwnuC278rSj8aaweqzB7Nh63vfcy6+QEVAcwXnu7g8ifds7V5726Y77utee91Pbr1704bAnZmfvf3XXnXeGavLXMiKvoDSg4hMiFRVtZ/O41xA+GD61ySAJRLbFD2b4s1/dtlXbt5MzWZnH2JL+f0MIcmYjdPBtNvtZ556+CWvvdCKsNYwQ5Ugd1ZpABBjvPfee733N9544zOf+cw9PuwQMkNxsJFFFgDIwp7DFF1ye4nI+L2/+eRV39/QRJkcd6Gxgi4AA5NURZCyA2VYfd0y6a2/9KyXPHEda1RTCEChx27X90dVQUqJ7657L3j7R3oUOpESi+xPfNwDGIr0mT/+1ZWLbAXXwuyiOyIrGQFW/P6l//y5a+9h10lJU0ptNMN059m6lFJKwbIpLGcluLIsg28COIhpl8Wxhy098/hDzjr+kONXLlmxfBEAEKtIEgCcy2zC7GihAA+Y8l2u+AKUkPwJCoZhotlVodAIpZAw06QNW2fu/J/7br1j/b33b/jhz6qfzdTTIRUSx0whia2Jzlbvf/MrH33cCicwlEDG55BLbqu4K2RfLSt5NU1j98MmSRm5qdAgi24kRKDGMLT5xec9/eo/+VhRtGqZ3zFQ2x7r1TPjpT3tyMnff+2FKUEM8/AEQN8l7++5vPetVst7PzExMT09vRfs+IYNG3K3ir4QKOYEAPIWNbvkg9vVvnQ1gJrqv//Xq7/87Xujo05pqukQeMZyyVAltVC2DDZBkSRx2a5AH/zHzxy1bPLs4w4hhgqG2fE8DK+xAA4Zs2euO/obP/kJ2UJi3E3HvAU8Qjj2sGWHLmpDIxF0VnQ+jVDuZImXf/Xar9+0sRdoyviYlEypqRrmpdZ13S6Lgm1qqiRaWheRqumtxfiiEjAxxtDcctd9t9x1z8evSqJxxZIlK5ZMrDn8kBOOWH7MIZOrFrWWTThTOscl9Sv+B+ol8qAGv1GVVDUye+VelbZ1Z7Zsm9m4ecv9GzfPzMxcd6/fvG363o2bt3S9V1IuhV1SLKc6hWa8NMYVm6alU7aOXzn1/7zpBccsdhpqcoXCzNSxbFkCNAQM6foySNfetm0b9m2b5tHI1d75sR/lmEeQZUBjE2xhTz1m0blnHPeFr3wf7b3UK2QPIdUzpjV5zKL4vje90ObNVlLhctiN6Eud5INc1ZlbTAHod43ac/jMZz4zPT2NuZYCqprDKX2DvstuRA8ULsF/6svXf+yL1wjbMUtB4ToF6optAU2aYkwRc0weQ0hJIlxtxv7obz759+99+3IHw4jDvRgAjhykBujCp5x69Y9/6NmlBRGWvYXTjl0pgIG1gEIAA3gMj4L6oH97xdc29MxkyarUtpDYFdOB7Jo8OlbalEIQgW0RUU+JjDWTtpreXBamIIhKCiHBiCnJTW7Y2t00Xf30znv/XURiyjtaY8zRS51zrtVqdTqddllkiQvDlFJSRUrJh9A0oaqqqqlDCPdOw3vfhJiUiC2zEaiqGta5bJA1holUtVHVLYksEKq6YVrWxvPOWvWml51fWoEkGKtKQmi3LAmMNobDyBkNAN/61rcOP/zwpUuX7r+mvCzLvqb7CFNuDBSsSLZsx4gWh1df9MTvfu/GjfM8m0UprGrH9775FZMthiLFVDhKIzUrmDk3Y8p2k4jy5mZsbKho0SOINWvWXHfddRdccEF/MNnsZpturd0h7TFIp4kxfuXmu/7Px77kW1OmaBqvXmpXoDRTta+YLbFl45BENIKUmQvrpPHExb2++KvLvvi2l503bkGSholiikRmq65g8GPXHdISmTbsXCmyIGW+N3DK0SsaoANY9ZEcQKA0gvd92bdvWr9hZmLJodXMVmtbLE0KjS/csHqRFGJSAVvmIqlGEVIhCUV7QpCq4ElROFMSUupJNaOqykaJlAhsiZ0wgcxP7/NE3nBFtIVUVFU0qiqJMjPYEhF4dpepQiVqVXWEggmGcjsgEUlmHAaGAE2aBJqI1ICSbal2CsKkk9961YXnnnoEUpNQgtkAkoIxThSqCcwIOiLl1zSNc27NmjU33XQT9qvC/Z2RWXSDmuu7gKKOnnIi2oFifczy8Sc/6Ql7cZh7BIsXL/6D1z3v6GVtsENqCiMAm+HaMv3oc7ahRVHkV7Kg1Z6Gqi5dujTb8byLGpRnyb/gDgqLfQGGpmk2b978nr+6EgVIU4V2KNN4m2wovDpnSDWllJJArIMpE9mgXFXVmBFOdS32yquvv2tjCN5bHn5/mGOUBFZFh6vTTjopkoYwzxf8+YPVK+ZayGtDoAiMzir+36uuXT7VbmY2o5y0LJICtSZHOJ5qLNiCDUgMpM1xnJqOzJCfYUnERTRjPbS64ho1wja68WTaiZzCMtQgudSQnzHGMFsVSilzL5TJFqZwrjTGqWpKGmOUBBUCU822Ma4xrmZbK2pFYJOsM2HGxi6HipIHRIkS2UCGtGelfsKaQ//xXa97xqlHVNBkShNnRUqYgVQxEhtTi4vFKF2N7LctWbLk7LPPxv5vyjHHZpmVPE0JgM41BAEARtu2CI5ypZ8Zl5R+6+JHL1pki+gsFVJSFOeEOfrwMJXr9yCiQQoNoVVpTJasFqSRWu4Dr33C2tVLlSAiMCXIqUQQ+uo02F5AfOdEorX2kSrN380lxJhSyhTyHSTOByPm+YApAiIILJrJWt1QvvwDn5qpm4SSNbSl56LxsUyWibq5iocZhIjUQANDGRpaFjApmkkbe9H+9ee+zqWFDN2NEhAZFgDVhR077og2o215wSV/hJHYC5IliwQiUpKYvDO0+vClRYwggCdY1RKA8cy2jkhQACECiAmorrlz2/T9900Hy7awqRdFxLVVE9PQpXd2k6eiKaqmpNSo8VSKLQRgSgWFQr1BYmYlwxpZY55Ls59AhoybfZ2SITDPmSDV/B8RMcMQmBJTYo1WxIIZBmoJBcGRslGyrlUnCq6AddpUY4aNSgQdbePvvur897z1+SsWMTzaYgygVkwWOicH087k2pbZMfw96AYB2Lx5c7/5EfZzU4650fdVmfp5s5zi29lbzyaDmV/13KeD627wlFIR0ecOAAAgAElEQVThQlBELizV++AaRsLBk1sSMT0Otgk19cZc503PPWvtmuNLa0UfMNwZ2bBlibG+0RzUCu93cdsLNLsrrrji2muv3bBhA7ZvZzXiq5WKCGFxcKyhqhq888P/NrNl12ThEUg+ACjLsq69c+6aa390/7be6LfYTJ6BgeK0U05iCWYUt3MBDw/b7b2IiJk6rXZRFIMki13ss2dp1EZhrr/51r0z1p8fme+rKTpWx2LVW4mWpNektuM2Gg2NG18yHdBx+pyz1l76/t8673EntiCERG5WK2ZE4HTQhc3I7eU+//nPb9q0abDgZn835ZmYnOVSmbnX6wFg5uwJ7tJk5JXqhWefcPzqRePjY7GJKU5zaZQKeli9AfcoonfGznBS0URELTbPfuLRrzjntLa1DJDmtRqgLPvJeY+SG3jnH3WQfc/MW7Zs2W2j1EcE3W731FNPve2228bHx3OqE3M3f4SebS0wsL1UkQZy7b+84pvfve7unjzk3YNhZrLe18ZaVd24pfe9G24dVbysTAAUCkBl3XGHUayR5re6w34IIoKqIhFR7hJjiRdPjQ/tlaOzHbhnbTshwn3n2nnT5bH2kQFnCMknXzHBOqOqLUcAZprkuRTg+FWL3v1rL3rvq59xaBtFaijMkCgABYy1ZvjEzRV/NNASuiiKa6+9dvXq1TfffPPgmfu7KcdcUDUHhvqR36zs8UCYZSeUwb/tNRcXqUcoXdlSTSkIeL8LsKgZF7+5cC7aiRDSUx+16m0vPYcEKUYaqKCZDUDPbVD68lgAmqbJURciuuqqq7Zs2bIzUeSRxeWXX37ddddt27Zt2bJlF1100djYWF5W+31CRlTntgmaUDgHmH/75o2XffU7VFXamnqoYyita2IQiVwUKaVWZ+LrP7hxVPCVAI0AIhTEHcLi8dbB0GVmL4NkNtetTKoEISZdPDWbeN95Jz1r0hUyF+gQ0K3r79urg/45UJbtHP8typZ1RRO1iojcSrANOVuUK8fwjhc96Z/e9fKnnLhSq81AZGZ2JdiAQATDiCO7nmU9wXxXmfmaa66Zmpry3g9WU2NemPJsmLL+NbavEtzBZg3OEjLFiYdOXPiEk0rjBO1U96Y6RUj7nSkvuBGdasgbmFOOOvT33/QCKwyCNTbP7dzDYZb1MRdI6YeeVTXzuAGsX79+zZo1t966Bzenn/vc52688cZ169bddNNNy5Yt63Q6Wb1yoEPI7nTJk1cjVvm/7+r++b9+Mc1E2wH7hxz40hR9SO1OGVI0oBBx3Z33j5YU4tnqfgLEqD/uqMOMOZBbE+wTEBkAQgKICqkSi05NdAaN+HZbRoVm/dq5SuZexMbuvMlhhBBUKShXQQIclW2yZQRUdZEJv3bRE/7lfW988ZOOtqkCibQXgzkmDclE2KDZlRA3vL6nz+LLYYlsx7du3XrqqafucOY8MOWYS6z1eREjOv8OzhgOM6+/+GmrJl1q1DrXq7YVbmgPzH0Fmypxrcqb1VPhz377JVYUbDCwJuX9x+wxiIjqusYcLaT/p/d+amrKOXf++efviXFmTuGZZ5558803H3/88c997nP7Jrt/8KAEY401Wt1V8bv/9t+nZyJYXTFOafphDKgoipSiiLCklOS+bX4k0QkESEogByVDesjyJc1DaWy0gAcFyeG+rGUCVpDKeMvRAPKJ/UdV8gpMZABJ2Lx1pp4/fdyMMWVZGnaSICmgninC9BLb/PLTTvi3P33Lq849ZdJFmFagtpLlFCKYbMHGIvsWue5fh/ogWUMphyUuv/xya+0u7TjmiynvdDohhPXr1+epkIMtfePeP21wtRcCu3LShTf8wjljJJGcGy/Q7HdpzwBum3jcosXvectLFtmqgAnJg0g1qs76JrM71oTMws2Wvb9c51KgTCo/4ogjHtnhZQueU6nMvHjx4nPPPbdpmj5HJW8Icg4j63nt5nqJBGN/+A+fvvuebRxSKlq+iv6hBzqIiF3RNJUxhiBl2a4SGKNNc3+dV0AgGue5UM9+iUFhBmK2AMqdGu/tIC+hlIPlwsCWzVtlSHHAfojoaxExjNJKB9VRE3jZuad+5L1vfvOLz1lSBms1sWuArMrNnDkz0ITko0rKL4c41JRnfVNr7f3337927dqbbrppl3Yc+3O15w7Ytm3bkiVL+qX82YjvksGSD4TAMBq2Pu30o790xqOv+P6Pg/hFhGo/e3prWy7z/nfe+MxjD11MaKCVQ9sTCpqNkgvUEFOW/FNgzpRn5Bxjbr30CFLI843tx+hz1UOf+bSD3oP3vt+Oebdy5BbpfZdf/YPv32oE3JmKTWxcQzz+UDOQIuKTb5euUWkzK8gnGkFVVgVUjCkCAGZIaprGFS0dGaZcwEOFqjKRaq7nBBGxirOzxLNBl7x/nNOeEgNbAnNVVcxWdX545oV1gPS6vcOWTz3//HMveMK6VR2QNp7K3NXOqjeSoATTqqjdRgTYMttZxX0RZR7eGS+LcBDR8uXLV6xYMWIk88aUr169OqvGYPtCwWFoIoxlMi0Ttr7jl5/ywxt/es+MaYxnthK9MUbAdYidifFYdxE97eEecqRJvZRjk1tCVRS2iCGEQGOdzsymt73hl05bu7LQCHJ5e1poBOVmKJjNbs96OcCc3EpfaCxrV/2cdvzjH//4SSedNDU1deSRR2LgDvfr70e8t89e3/60ADgZUBUnwGn45I+aKz7zFXKtxKQIkcOYLaP3w3SohyGqlE64asF0pV36nixpcyI7bKBEIHIKaiG3sBnf3CQbemGhdP8RhUgE2EiZOBpVoV7XLWthVnShf1q/frshlBoBeNPhJM7Eac+VaMEeosxWVZFm+16lpIM/sAL9atFB327Q5a8TG2NmFctFsmtimDV2CYaIhEiFlJiImGxQTSEwU+GMJkkpGFJjDEWvxgoVkpMBIbCEwpKj3lknrXv2k04/Y+1RE4UAAaoYtCZU9L3HNpASGcMgpKRZmyinCPqs4u26pM3xjHW4NGwf88aUAyjLcvBH2qWmRx9jFgpEMdaOjQO/8YqL3vOXH6upReqNIWMoNnW7aKeqik3TLos9nWcRKu1EmultnCjGYx2TA6zhKr3u4vPOWHtEi2b1jpVyVHfoz5avOm+78iu5QP9hDOmee+7JjX5ardb999//5S9/+aUvfWn/M7Mnnj98t/qUO6MRVzLYmiaZ0kihjdfih+u7//DRTzReOi2nPsEgS7up6q6l54aDLKcqFJ1xm8omGlvq8cvG0ghRj+2hQN00qrpfNl+Zx9h5mmgMKiNKewACUjLGGWbxjTPUKTjqeEISIhCUlIj+f/bePUqy6yrz/PY+59wbERn5zsqqyqpSSbJK75eNhfzCtiS/9LYNBgy2AeOhoW26eU1PMw10NzPuRfdyA73oNUzPYsEws5hpDAND+9HTuO2xYYzxCxtbtiXraVVJKpVLVZWVmfG495y9548TeRWqqox8VGaWKvL8luyVlRkReeLmje/uu8/e3ybDYkTwfFzf3/ssoQRAxEQUN1CjVjQzDaEQL0TkmIlJpAxFQDbqQ6kicWA3QzRICB0mNBuNEEK72zHG2CwXkVKVXENESL0hT0V31NF1V172shuvf8utVzZrPOLiicelhxpWYCVf1hjuRNc59M2dr6ZgxsgpfuKOHDkyOTlZq9XW8gG/mKQ8Ug38XKXkLtow2MwDmYY33rDnW3d8z+//5y/UR+o+hG63yIwzFDSE3NVEXuhouQV4Ce1OUc+ck26W1060y/FG9pprrvyB218+XmNoFyHAmuiRb1YOFeO7ttYWRbG4uDg1NbX2EvKPf/zjV1xxRbPZ3LNnj6oWRTE/Pz8zMwNg9+7dUcfPLhBqt9uxjH1dGEY3iDVsDKABME+eKH7ld/7o6PH55sRk4TUaWYiIquTOlGHdx79ua6e7i45rYnNbzt/7va9d9SVimoWIRbTVaoU1OVIn1gER6XJi0MYhyzqoqMkSoKQCIRgGO7d7Zoq68xY1FmFrmFFq8D5oCZAa7omkIlT3jgakahBjIO2F6zH52u3NEWUikt6PDFlbBACOjCogREEFBjBwlhfaHWOMy2tltxONQ3zwpR1h7U7V7UsP7Xvdy65+6RUH9k7UnRWoAIIgAlIybLkac7ESlY7HdHEVJPXnMJm50+mMjY2dPHlyjRtgF5mUx3Yh51zslOn1dJ8TZaMBMKXCQo1f+PG33vbAE8e+8OB3arVGYEPOFp22ZZNlrtXuDhzqsBkrdyEPdVbtyGLZbY3mY1fONn/pfW8czzw0wHuYTMGqMARgRUt+AHGe/d/8zd8cOHBgenp68O/98Ic/fPXVV4+Oju7fv//UqVNf/OIX77zzTgDRzXlmZsYYE88tfaGxuDEm3gHU6/X+m4A1YtWrsQpY7ULoqY775d/+g2dOtvOR0cJru1vU63VVJVIm9t4P8Ds9Jw6mq8EZVpCA947iza+9aa1PJgBot7sDKgcSG0ZViZY3P4msoWa9ttKDCQCBXGYACcEYHm1ko9Rpcz1AGQLieOY556y1i50i6h2TgfTcebyKdR59ezxUjfChWn+qMK6KQPXyFDOzdQouRb1ACUSmbC3WnFMtWUJWM1L6sWbt0ksv/b7L8+uvvurQpbtzfn5Om8T5Fcow1cdVoAIdNGs35lViX0gsNc6yrPrEVTfBtVptXSHURSblWD4Qq26vKTOpNypKDDAUExl+5h1vfPLf/empVrtWa3aKgtgpSdt3KDPYYn9zB2ugItTixkgj24XOr//s+3blpQqpgkwOtlJN81NZaaJ8LCR/5plnLrvssscff3ylX/f4449PTEw455aWlj7zmc+89a1vFZGZmZmo4zEciGdPCCGaUFYRQafTqdVqWHaNjxvo637Dqo58KNrIslMh+9Xf/qNHjrVdveHL58/d+HdkUFGWA25EzolRXiA/TcZntizbP37PHSNNkjVPWCeiTlmQ2eJ7sZ2Hai8dgt64DxDRSGNFKWfAl8FaywQyBhp2jdd//Pvv/MPPPn765KmFVsuIZtZlJhNfLrWX6o2aqkooY9BtmdlaZi77Zlv236eqlhIkiDAjM2Z5FkqgkZnSe+89SAyRcwYkAEI+lTtzcHb86n1TV++fvPGKuZfMTXOc+a4KdFF4gGFrQiTEcQqnAKpghSHt1UetQAzzAVQDv6pPYqw4/NjHPnbzzTfv2bNnvR+6izIqifFjTLOs9JgQ56zHOapkoi2VMv/JXz/xP/3hH5/WuidTz1lDV1WVzcqeepu05tLmdqlVihudG9HF3/ylt73s4DhKqKtXv7k3W5AUKnHb8xyvo1oUhff+9OnTc3NzZ/z0a1/72szMTK1Wy/P82LFjl156afz+2QOG+sd6nB10Vy4u1WdyvU4AKiBqg3B4Mf/1f//hBx9/tstmvgzjeaaq1tpWa9E5B1ERsY5XzqaeGxIqapovtJTkvje8+r//0ddxnPK60k0aQBAFQzyxVeD2n/8PS61uavfcXBgSCA5ZR4tMM2BRefTX3vP6e191zeAnLm99SUDPpfs7R4997dtH/u7BJ//+0WNHTna7PMK2XiufDVAoExEZG2cfqypxeKGC98hcAxpUFRJUlZdFtlBLkNzoWN3OTY0fnJs9MDczOTH+PQeau3fvziyomuqsANACLME9PwCuum/2II752fjSpFCFWek87PPx70+LAzh9+nS73Z6fn3/44Yfvueee9R75iy8qR1+aZcCNvwGUDWBISxH1ZC2DQ/G277v08Udv+NjffmspMBOpwpisM8jQZnNg9pLV6jlh6elffN8P3nRwD6QNW49dAkrxDJBeumgFHUffJufZOt7tdpeWlo4cOXLNNdcYYw4ePBi/r32zO2jZHzzGAvGb/ccwnl7V41utVqPR2ICjiyoC148slv/dh37/0SMtX0hWp7GRrFzqqKp444zNrCuKYrAf/UoIW+s7pu6u2TP5/vtfZ+AHWTtXa+p7H8FLWP8lKrEq1WYyEalisCOQLl9ZmRkQVQqhtMxgs392dv/u2Xte+zIBTp4uDx858swzR7/03KHTpxeOP3fyxMn5hVa7KL2HqJKBU9GqiIWX9z+z7ndH6o3x8dHx0ZGx5sj42Ojk+GizMXLV7trE+Oiu6YmJhnUA1MfCdkCALhQAwwvIwDCUG9QbJBQ03uQzAAWcAhpEgoKJjVIc+7ziwSGiSserTGbc+Y8J9D179mzssF+UUg7AGBNnAa/4CO0GygtFgwxDlBAUFshl6Wd+7K7Hjs1/9fFjoQQLKWDIAltbw2KzznzZtMH/0jvfcPetBzgAXA8KIwURM1mQIBpRkB1ciVF5V/XeaJ/15cjIyA033BD/WRUR0rKBYhVix6dXSSpdng6BvjrW2FW74RpHJnz220d//ff+9MRCSSY3tTpb1dZzmW0CUA1EaLUXjTH1er3wJa/zWipsbLfId43+4k+/d6omQKlSX8tLxMoHYsRpL0nKNx1VVSgRGTaqJgTQIJ99BiCC6AIrSpk1QICQqeqaVHeP0ey1B/Ta/fcKerdY5OJ9VqvjO0XpfRHv1AEwc5ZlMbee5QYAxw+UasyFLNcxEsCAKDgOj471YwCgIAJbUO+WFFXOxPDy1+JBVFLOABswJBr8LJ/IK95Vx1OuShS3Wi3nHBHFrOaGuTi6Pc+GiE6dOvWXf/mXVWh5prUW5RZoEAAGWRP3yk0mOjKB8MGf/cHdo+KtdgFGWUO8tsfyVUOciZpalml33U6KhiRISYbBpgxirdVQGtLFbF+te+JHX7H3R9/wPcxWGCHehZlseV+HQTbG4+Ysb+I4t7p67/GLD3/4ww888MCxYz3voXgGP7+Svu2EfsE6W7z6yxlFo2OXQktnFCgBDwjUxxvV5VxgL4QpJXZYlkAZfQcDUAb/wf/09V/7nQ+fPNFhtV66xhXd7hLZkej7LOCgZE1GMN77ATqufqlEVtKolDKSKSh4751KAa7n/K9+7P5rd8cO6DpTXMbK9AzTbUxuFkVBqah8s/ECZzL1SyS2hO9KZqicnVp5jhUxoj4SiK0xBmDAgRnGxNwFKH58LcOBHTgDu3jKMKFZtzPj9T3T43O7Jg/smTmwZ2bf7NSuiebESN7MTQZkgAWotw1rQBbkQA6wAMezxzCYYAAb/6Pn9zaXPy+2enzva66BcqsaHykCwAah5Ue+gH7/mfhZjmYkMbswuK56jVysUg7g0Ucfve6668qyjBto8VgM8EqMiAGIJq186Bd+ai5nzhonPXVCJ7fGsrJ6hu92WmzQKQpeeed9JYoQRI0PpME3c6O+rcYWpob5I9977WUfeN87fLcLCEGfv7yfC1o2GozJh7ivjT4hLsvy1ltv/eY3vzk7O3u2F82GYQJEY8CqZAAnagshkFUyQhQAr9AQxb105DkI4BQG2iXF337z6Hs++L/9l7/8r6fmF1yWiwgQ2zS4/4K0Rrwby0KriQVy2XOtkiH13HXt6ER47h++876br9pHEkAiClGsNA3ubDbvgCVegNLzCT1VJRVAJ0YHTcO5qIka3el04luO8dPZn8f4nVivcoala5ZlmzKy8eK+u4zeIzHNVF3ZBlfOCTqKmhEF6G++fvif/O6fdhtTvliwRUlQ730tr5PhVqewWV56b9d5hJRgXb3dbtcch2LJEnubl8hunvH/5tc+ME5StwLiEFTFW0MDfHfjfkg8CcqyzPO8v+85XsCstTHptmmJguBhXrCNEzG9f/UyhgqOd6q29OoQwCT80JHTf/ifP/3JLz3gTLP0hXUZ2HZLT0TMCKXPXRx9tQ5aAVNOfKtV5iPB5rlV3ymCmPffdc273n5HXQUaFAS2sWZ8pbR7te1JokJUBnzf+387qKHlbazEphBUDHEG30bOpKRiUH78t35uujG0N0CV4PQH11Uipfqi2uR8+OGH9+zZ02g0NnfI10UclQOItcmR2MseD+uAKJXhAZRMgLzq+rlf/8l78taxTnDCDq6eNydaReh0OrXMFkVnA9kr76VoL9YcG5eVVKd6s4awNy/++fvfNc6oO473jGyMdbmubDwSPS0BMPN3v/vdaD8ffxS3Cqth9vH8WO86V4QZgCgCEATihUQMxAcGAA2QEmWLQgGgBApnofbL3zj8i//zn7zvQ3/4yS8+yRjtciCbC7hTlMaYWD97Ts+cVZnIeaEEGmMUPIu0PFuSd91x44+/9Y46ELotEAgxFFpr4psI3idPxC2BmUPfBdWQZpbHhlfH0VcS1p8YiFtN/ae9iDz55JOnTp2ampo6evTopg9rvFi3PStqtdri4uLx48fHx8eroxNj2HM/QRuGEIDAbNB93Y37fvk99/7WH3/mtDftIpShnB6f6CzNQ5RJi253vdc650zO8L67sOg1b3aL7r68/Df/7Xsv3ztOvdsxirlaCIxb8VLRnzuLDsW95S8XYgK9rndr7apV9uuAWESiOlqOt20BKpaNKpWaK4Nil4QPsjT/53/14Ef+7oFvH1u0Wg+twjtkIyO6RJ3Qca5npB5nxeV5Xvour1ycc058WRiblcZxzaiXvFx6++tv+kc//Fobb+SzGshqz6UmVkqsSc1jqodokANXYgNQb94NqSoBRDraqF/cAeNAqkg8bmNiuWA8lkpHHY8iPjEx0Ww2FxcXq9KyzeWil3IArVar2WxWjomx52WlBxfEriwypwVMKaaWm7tedTWLfvB//0/gvNmcOHV6seFsWXasYWXGOgueSdFuL9VcVq9ZhZ+oyz//wHuv3TcqoRQwG1OWwTgTN7oHdLTEMyBqdNX39eSTTy4uLjabzSrqqVzL17XIAShA3BvSICGwxt1C0zWWFRkLVI+eWPzSt5/5xBcf/OI3Huu6OtqFkClrwY5kI6UUS2XH8ljeWD6Pg/fesmHL0PUWqsAjR9kSKTrqxp2+47U3/qMfvcPAd7xxlkC25y8XSmPMGeWGAxgwsi5x/vR3MOyamhrimLwKuaKUE1Hs2IgJcefcRz7ykZe+9KXj4+OnTp26/PLLt24lwyDls7Ozqnr8+PHJyclVG0ENQM4CIQN7ZgV819/56muauyb+h9/6vdMdcsttV2BTCmMVC+yzXp80mNpSkKxcOjhd+7Wf/YnrLxkL3Y7JM1VShXMmCuU5nIf6iPWn+kIPyGazefLkyZg0jw9Y19rWgg/eEMcdGjZ5IAqAADUN3z7y3Oe+deRz3zr8wOPPnF5oG0LubKfI2YUad0yn0ym5ndWz3IwVXVETg3FrbS3LRSS6nK97QcyNxmjRWcr86fe86Y733fMKo96TyS2pQhVgkIZo89L1IV/ZL7SfJOVbRM/Pr9crH0jD7tkZaFivMcPFRRV4xY4NAEtLS3meHzly5KqrrvrKV75y//33b/UahkHKARDRgw8++IUvfOGuu+4aXNljcDpgzINdN1gr3VKzmgW6r7pq77/9l7/0z37zf31m3luyvvTELLzuzYSyLFEbNeD9o/iNn/uRQ7M1+DLkNUBUlTiWqJYgQDyMHbxd0a/jqtput5vNZv+7W4tF+LpwsU1NYYxVoqMnO1/55qPffPiJ//qtY4uLi91uFyAYzp0lokJ0At8NWmtLHRnVMjVl0W23O8Zm4nNniKgsC7UGyiLi8mzA9sA5ydTPtzk39E/f+/YfeOU1UChZASw8EcfmKkCNsSKwbq35x41cVBJrQESInt9MVtXx8dH12l5eRFT3xFWl2Te+8Y0DBw7UarVut7vpo2AGMCRSDuDRRx+94YYblpaWzqjsOcugdczEfoG8+j8AufGnbpgd/fe/+jO/9Yd//jcPPO6NU0XGHIRj1y+xEpGCPUiJ87LLzAopvWdmMllQEGzIR3jp2Guu3v2rH3j3TM5A3Ik1fRbN6FntnKXAVetX3BA/I20SQjjbXmd1L5rl2woCjPbldLQEUdVz3GtQJulCDx878cAjT//9w09964lnDx87vVSA2BoE4Hkf5pg8YaBLdQBOA0LcgTDExsXfq4CCjKsmZmgQ0kDGCcgrAyAVghhCV9jBGxJVVlvrdsp6Dg4t7xoH7NKv/YMfuvXag957Y62UPrOo/NyBXm3yGvzQhIQDK3vqEktgtZIKWDYXwxCURWHZliI1yehKd7oYOB/9jGKP/oTh2ZFKf+pmXd7L8WUrt5OqJ65/AeekCg3PiBHjb6/ap5966qndu3cXRbFr167Dhw9ff/31a1zYZjE8Un733XcvLi7GevvoMdZfoVj9CVf6mwU7AWAmlw++/23/8aN/9X/95d8u6OixhU7u2Flmy+KDlAWgGbMxVJhR4eB9t9bMDVOn1bEwhjQvjr/7nXe/4003NgFWQRBbq5cqbg1xSaxF0RWmPcQ98fW2EpDAEgAPBAQBsydbglgdK5igwKkuHj783Fce/M4jh59+4BvPdH1ZBPGgABXAGrVW/SYNdSHjyjII1FrrDIuoBg+RJpuF0pOr1TMrrYUJZzoBhWteP5v/i1/4wCWj0FBa67qF5JmFL8/zzE1R+RYR9zyZOfSGoGFiYmLw46uP5Bk6jr5Ipb91GcsF2jGVUV0Azvn6lXxXLxj/Gat443f6Lwz9l4f+hhURiduY8XfF1p74MBHpdDqjo6PPPvvsZZddtpGjthkMj5QDaDabRVFE59v4Z67+DIN1HEBX4YCG8dDw3nte87pbv/c3/+DPvv7Y0YIAaOE1CBvXcJY1+LIsrTnWaSPLJ8tuvlQUEIw29bJLZ375B9952SVTdaC9cLLZHIdxCvAKNofoK0qNX8TTqD9k6GcjLWGhhLGBLWDZgiAWJWn58NP+0SPPfPmbj3/9sWeOnlhsx+pvog7XREmMsdYaqAlBQ+G7BXhzTpVSyGbOEMQXRbtwbJy1quRVRut5q9spNHO10cXWwkQdb7n9pT91/ytHGFaKeNkxGSsAs95y/zOJ5gSaylc2G1WNaUFQbAqWvbtnB0TO/fnD6p/RdTlOlI0DY8+IbLd7wpgAACAASURBVKKOV+O0Kjk+myr6oeV5Nf0vFb9ut9tZlvXfEEe5r/p9YvNKfKmyLOfn50dHRyvR34otqw0wVFKO5UnBUbWjr3elj4PLPGoq3DNDcyI4uKv2b//Jj3zzkWd/5y8+/8SRp5ZOLrraiHOuaLfgu41avmDHbK3WbYU6/FRNXrJn7P433fK6V9zQEBAJEJqjo1AWhffBrbwX199cUFlZnfPk2GCZioOiZLBX++hTp774rcN//fXHHzry7MLCAhGYiEhFCeyEXSAeoVMCiLIGpyCAYSzDiWyOR40GKUWIlaDGGLKuBBchQFjhgV7T0xUHdv38u+689apZA0A9oPABzhEQglpzXkpO1Nv2VNUBA5sSG4BgREPl/q+hnJmZGnyI+4u1osFyrECrVJWZ+22ZKxPmfiVdKSqvgrn4eCKKXcexaiC+eMxbxoa76kd44WiIv/7rv77xxhvHxsa893meLyws7Nq1a1OO2GYxbFKO5du048ePx/k41e3V4C5QJgGxqBMAjKLdbdTyl1069Qe/cNfhoyf+v68+8um/e+jbz5xCVvP5yCkfxjtlCCcO7mnccOW+O155861XX17TnrWuhMCGQlCFGqLMGV15Bz+ex865av7DIBu59dcderi/f+zpv/rqI5/9ysNHnlnkrOFB3aJEPk4aKJSkniBEglCAwGWDiJgghoJIQFAUQrTeevCVaNRdKEvVwMYKoVNCDZu8RqEUwxmU2yf+m3tvf899r6gxSt8GZUwIAdbVFSCFMRR8YewGOywUCkIIYYOXxsRAiEiCKCkTQcVYGhsdGRCVV40R8dzOsuwrX/lKtISLn9aov1XtNoCo49Xn5Yx0xxlU01TiB62y4K9WG68B8T64MhPHsrF4DL2jX/TXvva12267bdOO1GYzhFIOgIgefvjhL3/5y2984xsrR+DBVu66LFUMZaitOyhgnBLm9s5+/97Zt9/5qnaB73735MLCaRVp5M3de2byBtnluM4TyMCA40CDQOqYNICik+fKd2HxBM3zvL+H8xwr7LsDXTv/4EP/z2NPPtHqdAAQKWtHg2cjrj0v7MTkYurMzBpYuyply9aJiJlAAmJW5RjGblIqYmlh3jkn4FLVWutyE0LQshtsjZaOv/5ll/3jd/34JRM1lCUcOZuLMgiGbVEGVc0zC4jZ0CzTflIx4hZBZIDnnfGbI/VaFlvizq3n1eD1Kn0xOzs7Pz8/MTFROXR2Op0sy2h5ZnFMksTPS/w4xHvxlZZUdcwbY2KgHX9XNHAG8Mgjj+zduzdeM/orUi6ui/1wSjmARx99dHp6+i/+4i/uvPPOWq02+NINQAANsAaAFt12ltdFBWCCkqqDECN3mNjXhDYB8ZRHi0wE9DwwpQPWUkaizjiOJwQAsFnx91Y9BejbgdlE/vVPven3/uSjn/jyQ8+VGWWjhUqQhVpuxIxbFZZCipYIPBm1jeAaxCdJ2auycpxDrjAgA92cBEuj0TAu7xSl994QSDpUtHJDVx6cfe/b3/aKK6aMluo9uWh9VzJxEISgmTPLdtIcZEVr/zWymVYHiT4ESoahrKqGdGZyOg67X0nKq9RHPPk/85nPHDx4cP/+/fGn8WPbb8URw7JOp/Pss89ecsklscChf4BD9cTo6lUUxbFjx2ZnZ2u1Wgy9vffxWVmWee87nc7U1NQzzzxz6NChLT0yW83FdNlZL3/2Z3926NAhIjp06FDUykHVSxJARqlXumeBnpMruOckDkQbqQAEIItzoCRUxX1go2ACvC+sjWaYXBZqM8JqB7q/sGkl+o0S18PikuSPnpAP/5e//cRnvuIDWWuDlEoEsEYDExKjAvWsQqamqvGdK5ESq2oQOd99xmVEhIwNAkPM2q2jePmNV933lje8/vIcbAK4KKVuo6+/CpHRIAFsDeLRZgrKSuvehFWA4CHWc7BiHvjOUz/5G/93iUH+uokNICAlceICtXIeuf66S/6XD9ytUtAK5Yj9BYiqevLkyS996UtvfvObB/+WRx55JBp1VGnu+Nmpihp7ixFpt9tlWS4tLV3A2pLtYcjP4wceeICIHnvssbvuuqt/Zkd/v/vmNr4PoNpMrxx2+nV51TXE+824+P5RUqutX3zZNcaAs6dPdj7xhW984vPffOjJZx0BZARUaACQZRkRiqLIjAshRP9CMhZkegEOBY3TyftemoigHC8JABRMxEEVQA1dUQh6BikMNSoMXTLWKhlf7B2rvf7l195z+y0v2TNi4Dd2g9j/3lc9DgBDUHA3Q/7VR5/+mQ99tBMWzSbtASQiZRlqmQ3EXLTLrPm+2w79wx+8Y9VPV0yVxJN5AyOlEhjiBEvk+uuv/8hHPrJnz56Pf/zj99xzT5S/Mxpwtk3KK4/5qoezKIpYYLOWBVQ+iNUl4Ywy2HPiwdbVoR6+s2/cvPvN3/O2277n+Hzrz7/81Ff+/msPPfoYs7UuLwovIsZkS56McdYSQTR4ki4AJgTkceRufFlVVQEUGbUBaG/INQO9sYuFWgJUg4EKWNkUMEGxx/hbb77qTa+6/qYr9oxlCpAIOsHW1llmWd3HnBGRrZGN2TQmVmW5AUdz5wrVibGmrJYNq87nwaPjEoMZcikHcO+9937kIx+58sor4wC5Kk0Rw9vBZS2bSCx7OsPOOC5ggPnXGcQyLOdcLJ+v6iwHXI1EoAwiVol9lTLuMD5Bv/SWObzl0hMd/dYTz33hm4e//tjRJ4+eem5+qU5tWk4zxX4lIlKQUktVRZelk5gtE9GSrxFRrzpQlyN3AUKXXU7GlUWnxv6KPdO33nTldYcue/W1+ySAqbQmAAplJl8zG/kTVJexKt/aP3t6JXqjd5OObw3GkA9BiQFhhJmpycFduFUPTnW7uU0LHTqGX8oB3Hvvvegr+wshVBsgUcfX1QG8MWKZSuUw1e12nXNxI36Nr0BE8/Pzx48f379/fxSs+GqDN0szgoiAGFnj+SZ+B4UyMJ7rKw7NvvqqvYAgyOkTx//qqD323ece/c7hJ5469t35062udAMKRc13mFmZmIxAReCDqJLhOJhcIIE0ENQS2PCBS+b2TI1ce+memy6fu3zf7ORozoAAJpyGqytcAIKCAENC1AXWehwi8e8V/4JE9NGPfvQtb3nLYB3vt01MUfkWYYi8qrE2+A6zmZ2eGBxmV7enWZbFAGV71jl87Agpj8Sb8f7OsaqkdBv6tWIwW0XlMdmy3huC06dPT05OxgVHQ+Q1PEnip6PsjUxDtPR21UhaZhBUSQzXp2fumekCl4AuB1wgnO7osROnTs0vHFukdreztLS0sNQqul4IxhhjHPnF3JlGrT7WrE1OjM9MTc5MjTXrGJEu2AVw/CUEJSmN+q4Zs4ABrA8gguEC7JFvYBp0vEcpy/LUqVOvfvWr46V6jVpQ9ZGt/9cmBhFCycxB1QGQcvf0xIDyFSx/LiqH6nR93TA7SMqxrOZFUbRarYmJiRihM3NsN9jqXx3zAI899tiePXuazeYGEjsHDhzw3scQJl5+qrFwKz1FgjIzCI4klrgDCg1BatHTAgQflAwpSA0DjJ7MBQOarGFybhxz43EaM8EsF/HFIpPeNFvVoCIkgaDgNpQ95wYwKJerGJ1yFpBlva12D1sCgJqMbLZ+H3MAzjnvPTNPTEzELtk1PlE1JVi2ChExea1bqjGGVafGM0ihJlvpzxs9UuLtMi3Ps01sgB13O0NErVarVqtVc68BbLWOA73ZtZ1OZ3Jy8ujRoxuOB621nU7nqaeeihO7V72fIGvAFCcBQQUSoIrYmawKDVBvORgtWbwJpYKVDLHtuQ5KgHiIZ3EsjoRN7z+YoDZotDEhMmwMuQwuh3EgQ0AAPFyguqAOEElhpUPBw3vvxaMWUAdZhABZt1lXCKEoipjNH9whck5SVL5FGCYREYIiTE40bc9yc+BTjIlWKktLS6nef8PsrKg8Mjk5ieVJx3meRznY6iRdvCFoNBrnP117YWFhamoq5vpjQc4ATQ8xcCYDQAExNsTxygATEQggFSFy3Gt56lXQ9yY1Lx+Wcx0dAoSWUygaTWup91ijseJ++dXIBDIhViWCrFYfcA6GdUMnYswyVZfhdd1apah8izDGdIrC1Zu+46emppZPh0FU9rN5nne73e1Y5TCy46LyCuob0xOTdPHmrigKDNwWO+P7Z8cRMdI/+0dVDeJ5cvDgwWazeerUqYceeih+p7+Q4wwsQMvtRSpigAxwIqaX6GCAiW0vg778nd6CAbP8H537P66+ZgLT8z8CGRCDLMhGP/H4q3vRft9LmLN0XJfH2uJcHfbdbjdeuvI8j43X6CuEWBEVIYDFIiP4gEwYLCkq32RaZTluUQQPHr9k2piAQPladj7j53F8fHx71jl87FwpBxBFvNoOBRDbeWPDQr/nQ3xA/Gd8fCUxsa7Re9/vyxN/Wpn10DKbuPKnnnpqZmam1WrFf8ascafTwQsvNnEMW+UeF8eBvwiJa47X0XigKjvpyjIJy37F0b6u/+mp8uFFgjGuDN4aCiHsmpha1UW4OlejN/WWr2942YkJljOoRCHWQkWxqPxmY7hXNaRU1W9VQuOMyvT43HgZ2FJHnjimpPokxDVE07j+XxpzDro8NsUYsw17vBumv5qw/7ADOHnyZLPZrNfrLxJ76MQ5YWb1sVhKd++aBK2yo101eaXylfMkXQafJ87Jrlooq421ytsay4N+4ndinBjt1qocX+UmsRXeWGdzxq+IQbcsAyCWB8Ri9hizvzh1PB60uG8Rv1OWZbzj6XQ6nU6n0WgsLi6mjcoXOarExsB7Y3VmfBwcZ2kPovqbpj/u+ZCk/ExixB2lnIiOHz/+sY99jJmjSlY5majjZVlWhsjxO9HjbXs6SKsFx8/A0tLSs88+Wy2yusOI1ZYAojkcXpSbfpULR7SKjEWinU6n2pFuNpuzs7MXepmJVRAlIRgVobBrYgwQWu1063e/2o4lDilJylckz/Msyz7/+c9fddVVR44cqZw2qzOv2p3LsizLslgYe6FWS0QnT54cGxvrdDrxShNFMMa5ccwplvM/L0Ipj94ycZGxDzauPxY2nD2fOvHiJKYWa9YAsmdqHKSI6ZYVqEpCvfcv2o2ci4KUK1+F+++//0IvYa0cOHAAy/4EJ0+e/NznPnfffffFkDY6FlVJyRfhnWzckyjL8sSJE6Ojo9bauCdxodeVWB9ELNBMxTXy8REGSqhZebTt80mVpaWlbVrikJKi8mEjJog+97nPXXXVVU8//TSWh4XHInQs99dd6GWeSYzmQghZli0sLLw4rzeJtUBE4sPISN0ZAAINq/4lvfetVitF5edDisqHk/6biRinV7exMf6NEXq/ueAZpWBbZE0Tf1E166ssy0984hO33nrr9PR0NTB3SyBmBZQDlwbOoGCB2uUepsQmYaRTCGk+sn9qxsqS5xFrVq/et9ZOTk6ePHlyO5Y4pKSofPiJcXqctlEl0Imo2+1WyfR+He8vRcdyVcx6EZG4D9y/tVBN86q2GY4dO3b55Zd//vOf39y6+8FUv+dFuGdwsRMDBR/KXZNjiGNH1raZWavV5ubmtnZxQ02KyncQ/W7plT302X0Z/dWK0X1wA7+rKqGJr99ut7Msq2ziy7K8sDuZKXuzRaiqYaYy7N81Do429unGZztIUflOJNrtxq3Fc2alT5069elPfxrLPUcboyqxj91JsQPLOeecu4A6vuz/tX03ATsKJSMiBJmbbACGFGBO9z7bQJLyxPO+AhVf/epXL7300mPHjp3ny8bY3FqbZVnll/JigF44zzexWRCRBEDD/ukmyNKqnfvLpL/FeZISLIlzcNttt13oJWw5KSrfCpSYIEbC/tkxD1iiVbs9cS7TtMR6SVF5YkhYlzQnHd86VHWkVt812hAFINBVkuWVUV3ifEhSntgpJPXeBmKFa2OkZg1A0DVodOx72Ia1DTdJyhPDwKqRnYKB6CPPEGSWiAbNnExsDBNKtTK7aw/QzQAiG9iZ1YpYolnQ9qxwWEmncmKHkvbZtghmnpporl1bKp/bLV3V0JOkPLETSfKxRcSjesnsJJS0N/k1sR0kKU/sLAiEOCEhReVbAovIwV2joF6/gmKV6pR0Td0UkpQndgr9IWLKzG4RShCRfRO5oneEabVL5vYMaRl6kpQndiJJyrcOY8ye8ZrQspSvQaaTlJ8/ScoTw8BasiX9j9nOMU87jVpe3z1W1+WpQARKOrMNpEOcGAai6ePaHx9NvlIwuBVkWVarO+kb8Ja2JbaBJOWJIWHVjkEmqwwTSBm5CnHQ1C6+2SiZS3fVwZwpCmtBJSmD1jqpObFhkpQnhoEzLNcHEFVjjQ9OrBdmTI6ORGFhAGuQ6BSzbwrphE4MCeuyZErbnlvH3K4JEKBKAHQVb8Sk45tFkvLEMLD2qDySpHyL0BAu2T0JZQhZAMSqg0LzlFrZLJKUJ4aEdUXlsYIl6cimIyIHpsdBUIKB157CJOPDLSdJeWIYWO99urUpKt8SmDE3PSoafSiDrGZIGUfLbtPihpok5YlhYB1yQKQKY1JIviXkLts10VCNG55escrOZzXOO3GeJClPDAPrDe6SjG8RzrmGc71Ul1R/khX/NN1uN82d2BSSlCeGAREpimJVUVAFEJigAdZaTYXlGyX6kfX6OZdh5pccmCxLzmipSwjcdOJB3UJ6kyXOuNyqap7naRrcppCkPDEMLC4uYj3bmESwnNLlG0dEonZXA69FJISwa3IsTgRSgBVQAtitLDPGmGazuV2rHmaSlCeGgbIsDx8+vKqU9//cOpPO/g0T4+tKx+M/VXXfzCQpQAxI/Fn/s9L+xNaRTubEMPAbv/EbJ0+eXEvWtadBgHMuFcltmJhRicF4LOqPzE2PQAElE7c7ic7YmOh3y0nKvokkKU8MA7/7u7/72te+dl1dQjWXrWYNkliRqOPV1/ELVT0wM64KAVNPylnB0BdkyfsVPFUibhZJyhPDwypR+QvrKZwzmqLyjVIF1zFdXm2B7p8dIwKiWbkCqgKAzn2cvfepfGWzSFKeGBI+9alPrT0qJ4JzjlNEeN5UOs7MtVptplkHoTdCSFXBAEPPkUuJ26RJyjeLJOWJIeH1r3/92nWBVE0yRzwP+jc8Y7rcOTcyMuIsQeIVMtYpQgHIOZqAqp3SbVz1MJPO5sSQMHjaLylK8iQoORbI0bjrdkx9O1c4TGgIwshtveM7jqyzvqPZtbsdyMKQASwYhsCwAEzWL9xR+o0xydRsE0lSnhgS1lsOYQzxYAPWxMoYY8SHEEJUZBERH2anJld6fP9fJ6bXi6JQ1Vqtti3rHX6SlCd2Fj351liMmDgvVAMRiRKRgRRzu6fX/tyUJd9ckpQndgq0bOxECqjW8/zCrueixosYQ4ZZVXuxObB/ZmLVJ1YKnud5muW0iaRDmdhJVAkVkjx3lIoRN4oqEREgRCQgVbUIc9Ojg59VVaN772Pf/7YsdkeQDmViZ9GLzRW1LE/dhhuGmaGqPjCzcVnhfWZp99TYmp64vP+Z7G03EXuhF5BIXBiy3JKmqHyDKIFAIFElsAHQrNcmm4P2MPtLjJxzCwsLSco3kRSVJ3YeBEBSJdz50MuPE3svImJtNjJSZx50aewvRVfVZ599ttPpbNd6h58k5YmdAXlCBgMWKBDgpnOSwRNuEitDzFwsnaKGZVeXU0HM1ZdMDtaTqhsoGuTu3bt3aWlpWxa7I0hSnhgS1jtFyBmbcuXngyoxg4i8hMyaydFBtuNxn1NERMQY472v1+uHDh3attUOPUnKE8PDWtQ8yjcBeZ4nk9vzQUQsA0AQtoz9s4OKyq3tbcvFcn5mTnXlm0uS8sTORGv1fNktJLFuiEgJkMAgYevL4vL9s4OfUhRFVPBIuiXaXJKUJ3YYywpSz2uKNFVygxARwZCUqgqTa9m5ZPfk4LuiWIZYjZFLUfnmkqQ8sUOoHG0FqqSo11O358bpVRZKAESYR3I303RYeRu5KIqYY+l2uwBCCKk/aHNJRzOxo5CedzZrrVazlM7/DaJKymQZRCQws7umDQ9KV2VZzxyxVqupapZl27bUHUI6lRNDwnqdr3PnUrZ2wwgBABOIqAw6MzkBXSVb1f8HinUsW7rCnUaS8sSQEH2dVvwp2KKEckGAIgCzdSo1afkGMVDS0FUnghyda/bUC3KMQd2bVUYl/pnStufmkqQ8MSTEyuVVH1b5I1prTUqwbJQqxGYGKaanp9dyKKOIp3h8K0incmJIWFpaarfbK/20pzyqUcoZyJ1xJgWG54EyETHA8Jfs2wv0DcI+i7IssSziRJRC8k0nSXliSOh2u08//fTgx6hSPOcVyow8S9MnNo4QBCTijYZ9u2cIzxd6nk3sDOp0OnEW6PatcseQpDwxJCwsLBw4cGCln0aRoehQrlANUIzUUj3iBmEiZlZV8aFRs9NjOQNYOWEV5TuWrzBz8kTcdJKUJ4aEq6++utFoDHqEAgSFgsBEIIw2Bz4+MQgBWIlBumtyvO5WcSar9jyZeXFxcb3lRolVSVKe2Cmoak/K4+Zn8GOjIxd6URcxUYwt8d7ZXQwAAh2kJzES73a7eZ4XRbENK9xRJClPDA+DY734U+2Fj4o07v28UVVjaGpyvDqmAx9psDzSc3R0ldFxifWSpDwxVPSreRxxEL8mCHNeKmz8jkrXuZlaqqPYIEGYONQ1nAbdvH8S8BDIytue/VUrqXxlK0hSnthBPK8hqgQ0kg3LRmFmEaiqhe6anlzLU2JSJVYlJjadJOWJYeP5SLwvEhQoAFOFhEIAxkdSgmWDMKkXAeAY+/fMAgCt4o+VZVkIwTk3oCk3sWGSlCd2EFR1ezIxMDFSv9AruqhhAI2cZyfXWp5vjOl0OskTcStIxzQxPAzY9iQYKJ4fG0QMhPGR5M+3QTR4EBPR9NhIvqwig1PgMbUSS8u3fH07jyTliaFiJZmQ+D8VQJQAMEMmU135RlEEsCGig3t2QaFx82HggD3nXNyIrobDJTaRJOWJ4WH1cI+ej8wZmBxPdeUbxBILWFUPXjIHFVolIu9VE/UGq6YKli0gSXlieIhDIwc/hgGRXi6gUU/bnhuEiKI6756equ551vKUbVjbziRJeWJ4aLfbIYRKL/qV3QCwAByBHQNgwO2dyBkiZMHGoLSMQo2yywb6bicABKgl7jDfMhPU2K5YA9GB19EqKk9sBUnKE8NDWZZHjx5V1dgjLiKxWGJA9VujXuNefPn8vX8KHlcl6rIjnZmZAWAZKjKgHLHS8XRst4gk5YnhYXFxcXZ21hhjrQ0hxO21EMKAWQfT401Ans/kkgIIKzegJyLxcO0ez8cnpqrvDNATZg4hFEUxwFM+cT4kKU8MD5deemm9Xsfy6Mi1DB6bGR9hCQqOBq2sq0hSIhKP6qG5KVFED3g2ZsCc5nhBfe6551K35xaRTtnEUBGT4/3yHW21V3r8zHgDKkSkZAAlCCADRigkIkTkvT+0b9r3LG0Eg4YIwRhTFMXk5GSKyreIJOWJoSImyrvdLpblAwMD812T46yixHFis2rcNU1SvgpEpOJfsmecGYAwKTBITlQ1yzLn3Nzc3HatcWeRpDwxbBBRrVaLpSxZlg22xp6ZGDWM3ranKoOYSJKSr0Y0rb3ywGzv30SQQc4qRJSsV7aUJOWJoYKZ4yZnlVfJskHd+aPNOpFiubKiF78PHKGQACAi1toDe3d7BVSgAqIBpYhxYzlN9dw60imbGCqq0G+NpW+XzBhfjpDpMnkvIyqdnKUIKSxfhUC166Zzk9katSVYiAWFAWoSo/KlpaXtW+IOI0l5Yqjw3ld6sZaelInxccMUBT+G57H6ZYuXedGTO3vpwb0AAMsmbi6YwZfNw4cPpzlwW0eS8sRQcfr06SoSN8asOtl919RElgnFMjpWgqkaixKDKDtXHdoPAGJBABRqB18A5+bmTp8+vR1r25GkUzYxVBRF8Z3vfMd7XxTFWuLrGmG0bpitKlRFmQFQ6khcDS4717zkgFGIkMKD9QUewmcRQqjVaocOHdrGNe4skpQnhor5+fmDBw9aa621zLyqhZMBdu8aMWRJVFEyZVguTk8MYKqZXbJ3igBe87ZCatnfUpKUJ4aK66+/vtlsYrnAHKt1e5Lovn2TpCAySgIwgRWpbG4VrrhkpsGACggKAwgINLBxPyXKt5Qk5YlhI8bUlRPLag+nA3tnYiU5MURfMBE0sRI3XXc5KxBKIPRa96kcYF1z7NixVFe+pSQpTwwh3vtK0FdREJWp6XERIYrJmDQbYU1cfeVlDEABrpJRXlfOS01OTqZKxC0lSXli2AghMHNlb7uKLjNeOjPRsVkZgkNNilOU11MqoIL8gpic2YYQgs2dQVYujDQnXnX5HoYiywFnAICBOpleQrzyzKrs4621e/bsuXDvY/hJUp4YNsqyjFIS3fiYedA2JmHfvr11o9baoigajUa32x3cILqjsFlDfCkizhCLbwfJGs3rDs6s9Ph4a+OcE5HY3E9ERVGsWhWaOE+SlCeGDe/9wsJC1JH4nUGBuZAl7J9pxH6iGEVystNaJsCpFEGFCRy6nmudQLfffNmAHYVomhjLh6KCl2WZEuVbTZLyxLBRFMXo6CgRVX6qg6ScSUK4dt80lscjGGNSMWJF6eEsEymrOARjayGE77t+3+BnWWurvAqAPM/TId1qkpQnho1du3Y557z3cQzF4Ft7BYj0xst3xRAyc3kqf+6nd3PDpEzMrN3ulZfO7Z6qD3hKv2W8qsZ4PFaIJraOJOWJ4aQ/MBwwuSYAzHzzob1FURhjVFUCePXx8TuFjMkHFfFKCGK4u3jXq16GlUtViqKIG86VoJdlmcZNbANJyhNDSIwEVTXWojjnBj5cLp+dGJ+cyCwXRcGrNYjuKCy0VBaCkO2IOTBZf+1Nl8vKewlZlsXMeGVQh13gCAAAEvVJREFUfvz48TQEbhtIUp4YQp555pn5+XlmzrJs9SytqDF6xRVXVJt1yRmxghFAbIwhY5XsFZfsmZs0SoMqfKy18QDGXYfp6elWq7Vd6925JClPDCHz8/Of/exnsVxjPuCRBlAQOLvv2omWcGHzGi0VA+YN7zC6ahyxFhJKsei+9fZbjKxSVhiz5PH/vfdZlh04cGA71rqzSVKeGEIOHz58yy23AIjh4YBKOBUhtoC+/OZrJqyoD7D1lGCpKH2XydvMhVDOTWSvuPkANAw+OnGfOYQQQkgV+ttGkvLEEHL33XdPTU3FYc1YFvRzwhQCAOa5ifw1N74kMzjdLg0Pzq3vIGxuJRQL7Q4o/PBbXpkjHs0Vc1ZxUByWJ/P1V/cntpQk5Ynh5NixY3meY2BIDgCEIAowFe233X5LjgJkmZP69CDOSMNYc3Q8N2/43usgJWBpZSmP6ayyLGOCpdPpJEOb7SFJeWI4abfbn/zkJ9cQFZIhBZidvfkls5fMjNSyLITUZd4jeM1drWydvuf1r5xtZlDEscwD8N4751T1qaeeSrUr20aS8sRw8vjjj7/sZS+LIeGgXDmsIRERkHEsb73jVaF1KvmVVxBxWfgJU7777luhoh4AiO1Kj48JlmgWPzU1tbCwsH1r3dkkKU8MJ294wxtiObn3fkBgHgCIZ9JuYKi86dU37Z8dMyklsAwhKOE9b3/T7lwgJXInggGD36J5GRE557Is279//zYudkeTpDwxtBRF8cgjjwxOsAQAIiAiA6iO5XjtK1+eKlgqgnR3z+25+/aXo5yHMQEwjAFSjr7+rLThuZ0kKU8MLSdOnJibm6t0OX5RuYLERtAc8LYRwE58HGj2A2+8ZYrmuzQ1Qq2MlzpscltHN5QeMEObQ89RFD4oZxS8IyisVwZJju7PvuOOEQbcOGBJAIkTmZ+f1RmPZ9WKFR1un3766bThuZ0kKU8MLYcOHarX6/GWX1WjiFfNnFmWhRBUfAwde40twGQTd7/htZnpdLwR76jb7UrB9dxlRouh9WaZ10bDEdonTd5olXAo61YE2T2vvumWa2ebBmVrESTMcTAzAyCiWO5ZRd/e+2iW8LGPfSxlybeZJOWJYYaIRISZVTVWOhdFEcPJ6GdLKgQoADIAqfgGcP/tr6jLieAaZEfHahmICkhZtCwPbcNLV4iNbY7Uy7JUIjBxKHaP5e+9/3WTBGjX1XOAvaL0AHrTPGK5Z7y/YWZrLRFlWXbzzTc//PDDF/Yd7TSSlCeGmTjUpiiKOMtGRCpXltjAgp6NX1RzJhULXDJde8dtLy/K0DWm022r+IyNBdTmF/j9bBnjzi8VerKjkGKkXu8iK4v2r7zvvrnJBoUOVAETBEywFipS2R/GoUuVc5mIPPHEE6Ojo/fdd9+Ffk87iyTliSEnRt8Asiw7w4+l8tS2BACqBGaEwkj5Y3fdNjNm1apHYC+29Ll1LR3aIkVTLGSOYDLOm61OO9POz777ra+6clcICpOBa2XgqBYEEGm8HMZIPL5CFHQiGh0dPXXq1AV8LzuTJOWJISfP8263q6qdTidGkVHZe90rxKrKBIr7eMRghspEg37oTd8r7edqzaa1VrulF1Ua2sqWrDEq7XnHoSRn1d97y0veefsNvixhTMeTB9gyAPECDWBi5k6ng+VEecybE9GDDz4oIpdddtkFfj87jyTlieHHe3/06NFarcbMVTd/L0WgTES96jpiBYMsjAPJO29/6Y1z4512GYipZtRk+fBG5a3Cc63pjKWl795+w9wv/+S9VkrrnAEMNG50qvcMDzLeC4BolVVNxM7z3Hs/Nzd3/PjxC/xmdiRJyhPDz+Li4vj4ePw69OyzemZPSr00i4SSCKVAFAB7Lcdc8TM//P2GbAHpkgaQK4e2GJGZFkLWhbntpss++IEfMipgFyTAd50FifiytJaNtQqQtXEbGcvTO6M1uaqOjIxce+21F/rd7ESSlCeGn3379jHzyZMnz7Avj41BAABm4wjIGByLoTmH6quunH7Ha660oICc1QsgZNk6AYmaAEOc+aLTdC+6xEu1DdDf7qSqQrYIpMQKT+q1lMxkiqKNiQlu33nt6L/6uR/MGBCGgrWEzQFmZucc0CtFNMulQej7ot1ui8hqA5sSW0WS8sSOoNPpxH25GJWv2r1iIaIukPnpd715f8NbLZUd2GjR1rJj1FujBCFWttlC50UXrZ/RsFqNg8jKYrQeOsVSqSMunzFOu6EFjEzj5J23XvPP3v8jFAQAGD4ImxWLL2W5iCWG5yGEVqs1eCJ2YktJUp7YEUxNTanq/Py8tTaq+Sq6Iz4YVyjGFP/jP37XGHdExINqubWGmWBJtOz4omuzHGbQBPoLRVRzIuof69M13OlSBmq6otU6UQSnYg06H3j7a/7pT9zZgOQsEoIqjOUyrGJmG1uuvPef+tSn5ufnm83mdr25xJkkKU/sFLrdbtyji1FkNPBb8dHEDLDAkL/uwNQHfuSuPCySzYuArqAr8IC1liGqqi++DvVKx7GcZun5Fjinahq1xlJnCVlWy+pX7x79/X/53ne88ZYcQmUXqmACoyi8Mys6IMZXi+Urqnrdddc9/vjj2/TeEufiRXcKJhJbx0MPPfTtb3/7nnvuif8simKliWUKQDwRq/dkuYT9d//nJ//jZ76hbMAuqKiEnAOLeGUfyJoXXbq8n+qiRQElF6bW8KGeFa23vvbKn//RN41oF9aVReFcBrASSlFHINIB0Z73vrrFib1X2/RmEuciWZcldhBvfvObb7rppizLnHMhhAF7dAJo0WFSsrkEtSw333jFE0eOfeepp0oRzhrBC2kgFSKwc6uMY7ig9Gda6rkTY33RvW42+9c/fd8P3X5DJqW3uYKssSAqfIBhIjCEQFjhhiM2eQJot9vW2rTbecFJUXliZ9Fqtay1sYRuwOaniDBx/+cjAKda4df/wx9/4RuPdewoKDcojXhRqMkgL96S89iESUTMLJ0TM6OT777/9nfcfo2TBZQ5snyBkAWfGUtAWQZ2JmiZkYHyYIV48MEHZ2Zmdu3atV1vJbEiScoTO46yLKuWlqrv/Ey0DOQEcKJgWizRsGBdOs0jv/Kbf/SFbz/bVWegBiEIiclYX9TFG1HHmfkn3nTLfXfctGcEgOsCCtTgETpqauLFmAyAkgiEYaErBeUAcPr0ae/9sWPHrrnmmm17I4mVSFKe2HF0Oh1rbWwRimXRVZnH6hQnF3jyQ//Hp/7i//1iluW5y5a6BUxeR6dbSjDO5s1Op8MIzXrWXjoNW3OGAWgovYDIgEmUzAoz56Ilr6ivSv2gzMxUttlZgINogDJZsFFVCoWaTMEBakAqPs58yHXRq+3CCGWOaO+YufcV17/jza+eHln34YpHqf/rWNMpIp1Op+q9SlxYkpQndiKqGiujq/roynVrMAXggBDwZ5/+u9/500+fDDX3/7d3Zr1RZFcc/597b1V1t3cDM4hVQxIMsTKCJMokClIWKULKSKM85HNFylPe8gmyPCCZCAmRREhRFMFoGGUhoBBpzLBkbBpsTFXde8/Jw+kuN8Y2bmMYA/enVqtd7tq61f86dVZCB+UiRkcykvJRxr5dZCt1LMVmrRGOHizMwRLBGGMMjBUmyPrzi7WIyRij15heGY410bQkBgCWQGBwNGBjTBWRG4EwC+AKIqJYOQnL+aQwF1K/f2j85z849cNvznTaLUa/AGrIz4qI9PMJIehlT1Nikot895CkPPGWEkJQ3XTOqadFNWszrwtQRhRGIJGN+9v1e7/49W8/f1Qv12jnEgIb66LYGCNZQyQGpLazwaoxC4DIbjRTjYxA+rMyCNZmKuuhrnRunXHWWitMIYTAcRyPOR+pxMYQnFQZIZDzyJ3xH5059bPvnzxxcDrPHcRAIoRhhxbfNdc8PbZmgkdil5CkPPGWUlWV2r9VVbXb7caNMJiRvQ7ihbIIIIoz8Ym3v/rdH3/z5089TPQhdybGaIyDy8rKMygz2k5xVbgbq3b97XOAcUTEoGaCnd5DZFlmyXComYOzxpEhokV0Cn7SMbUlU0UeaRcfvD/zo++c+snsNBkHQJgNBMweGTlseI16Hs3B6J9Jx3cbScoTby8xxoWFhX379qnfwFrrvddROButUjNyA0jwZZm1R8sIsrg13/3lub9+/MnfnwS0O+NlWRrh3LJBiKbdeJb1DsAAMXreIF87xNrZnKwR6Um5JRiLAhIEHIVBkUxkAMSAoxAZE2Pt75488tMPTnzrqwdH2i4wsriMrBNhAiMj3Vmv++Own5L3Xsd1NkuSju9CkpQn3mpu3Lhx8+bNs2fPbjHsWUa0LMA1yERyUWBDsDYGU3zyn7u/v/jxxav/XuGs1WqhWnIUykps5pzLo4i6JvB0IHEN1lEMEqVfcM+RJBC4lgyAM5RZ4hgsZHpqYt++fT/+xoHTX//aycOTBESBJVjx4Kq2ozkA8QBFchHIAAoVhhyE1Bzq4uJip9PJ8zzp+O4kSXnireb8+fMzMzNFUezfv199wVVVaU/zjWABEUJgEu+cBRlmGOMhFuRuf7H8pyv/+MNfrl2/s7QSzKgNQSAgshmDYowGlGVWnebPoqFFIaNzRyXWVthZWXEThsN0x8wc2vvtE0dOfeXAsUPvjLUdwmOQAzkQAQLmmp1kthDPYtkYB4BrMEfXqoDOkJ+PRg7m5uZmZ2fHxsb27Nkz5AYSr4gk5Ym3ndu3b09MTOR5rj6WrZjnwVcuszoP1MPqGhaQ6I2xIBOAz/735Oqn/7z4r4XP5j+/e38hknF5oUkp1lpNR3mWnqfeqpu7nhhpv3f4wHuHD3/vQDhy5Mihg+9mBOpX0wuzN8YCFuDVDBwGOMBZARGvlvlIQKiQDZeN6L3vdrvdbvfGjRsffvjhUOsmXiVJyhMJ1HXdDKNAP+Y5mMrS5G9sgyrifnfl1p0v/nuve+fByv3u8oNHj5eelDHGEAI4ZNZ12u3RdifP82NTcbzTfmfP1JF39xzYOzk1PmIMQxi07YDlWvRcBpMvm/z65hyb/zJzjDH1V9n9JClPJIB+oogqmr5QvcMLRvnYo5cYA4GhXj4fyAiAvsHMgHbwQkm9zG8HGIAAZmYOzu2MmA6qtsYzMeAQH7x6NQu3WjyV+FJJX1Ii0UNz/phZ5Wwwk1prZDbJN98Iln5VDnsQAIYwwKCn3fHCEIEIVLJ7OX8WpAr/cn+og/ci2gfYWqv57C9zt4mdJH1VicQqKmTqVWi32957FTWV9U0yTzaCBTywRpNMrj1xm+Ry6rcgJK5BBPWHEwDDAhHYHZosoDcfjSNFDXM9L32teZPoT2FOvC6k0ROJxCqaQO29r6pKu+A2Zf14ZsraVjDwTryT4MAOcD2RBkEMwZreQ3VcIEKZwAmsgDS13BDsS7C4dIiS3mfoec3Nzc3Pz1tr8zxPOv7akaQ8kXiKoii89w8fPrxw4cLKykpd1yEElfhtRD4FjsUKLEQAJvZOgpWgYx2ah0IgptUHek2+eKMq/23Q3FXoixhjjPHatWu3bt2amZm5cuVKcqq8pqSvLZFYh7m5uaNHj05PT09NTWmaeRMkHIq6by4RQKIv1MURgb6HRVYnPES2RKsjH3pLVz3uO4B6jTT4ef369ampKRG5f//+6dOnd2oXiVdPkvJEYkPKshSRqqpGR0ettdsxzDWDhQxEQL2pcYM29prNUa/vuQgMyGKnf6I6A897b4xZWlqqqmphYWF2dnZHd5L4EkhSnkhsRrfb1eqhEIJOlF+3He6acOKzrE7XHMaDMdiysdnOmi1sFIzV6GXT91x7eDWplmka5xtG8pUnEpsxOTnZ6XRCCNbapaWlXq2mCPqO5l5LcSJjTF3X6MdI10B9Nt+dbrksS/1zMCzZZL43b250udnp4HMIoUmNbzqM6zE455KOv2EkKU8kns/Y2JgGP2OM3nsiKsvSWqupipoNAkCd6WqzNwuHQpMCW60WgKqqdKFa1qrCg2KtCe8q6LrT5rkxui9durS4uKir6wFvIzs+sftJUp5IbInx8fF2uw1A6yRVcwFoX9wYY1mWaiCrBDcGdcMWd9SU6mi4VS8JegcAwFqrHp6mZElreWKM6j95/Pgx+mb4vXv3jh07dvXq1SEm3iVeT9K3m0gMjap2COHBgwcHDx7UaUSqlRpX1Letm/Sy+WiLwWJ6fW76pQwGXRtLvK5r55y+p9vtdjod9a2rf//lnH1iN5K+7ERim8zPz4+NjTnniqJQo7jxbIQQth1XHJxn1BRhagGqqrzGQldWVvI8d86ps76ua70z2Lt3786eZuK1IEl5IvGiVFXVzAVdXl4eHx9vtVpropTPpp2su6kmPqkXhsFsGXWweO/PnTt35swZlezULCWhJF95IvGiFEXRarWKolheXi6KQi1oACKi5rkMjBB6LqrmjS9lYWHBe99kEN69e/f48eOXL1/W8votNlhPvPH8H6HaC4EoCRzAAAAAAElFTkSuQmCC\"\n      ></image>\n    </g>\n  </svg>\n);\nexport default SvgPostgres;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Postgres/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgPostgres from \"./Postgres\";\n\nexport const PostgresIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgPostgres ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/PowerPoint/PowerPoint.jsx",
    "content": "const SvgPowerPoint = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    viewBox=\"0 0 1919.95 1786\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <path\n      fill=\"#ED6C47\"\n      d=\"M1160.9 982.3 1026.95 0h-10.002C529.872 1.422 135.372 395.922 133.95 882.998V893l1026.95 89.3z\"\n    />\n    <path\n      fill=\"#FF8F6B\"\n      d=\"M1036.952 0h-10.002v893l446.5 178.6 446.5-178.6v-10.002C1918.528 395.922 1524.028 1.422 1036.952 0z\"\n    />\n    <path\n      fill=\"#D35230\"\n      d=\"M1919.95 893v9.823c-1.398 487.185-395.992 881.779-883.177 883.177h-19.646c-487.185-1.398-881.779-395.992-883.177-883.177V893h1786z\"\n    />\n    <path\n      d=\"M1071.6 438.909v952.831c-.222 33.109-20.286 62.852-50.901 75.458a79.127 79.127 0 0 1-30.809 6.251H344.698c-12.502-14.288-24.557-29.469-35.72-44.65A875.768 875.768 0 0 1 133.95 902.822v-19.646a873.128 873.128 0 0 1 143.773-481.327c9.823-15.181 20.092-30.362 31.255-44.65H989.89c44.986.341 81.37 36.725 81.71 81.71z\"\n      opacity={0.1}\n    />\n    <path\n      d=\"M1026.95 483.56v952.831a79.122 79.122 0 0 1-6.251 30.808c-12.606 30.615-42.35 50.679-75.459 50.901H385.329a763.717 763.717 0 0 1-40.632-44.65c-12.502-14.288-24.557-29.469-35.72-44.65a875.77 875.77 0 0 1-175.028-525.977v-19.646A873.128 873.128 0 0 1 277.722 401.85H945.24c44.986.34 81.37 36.724 81.71 81.71z\"\n      opacity={0.2}\n    />\n    <path\n      d=\"M1026.95 483.56v863.531c-.34 44.985-36.724 81.369-81.709 81.71H308.978A875.77 875.77 0 0 1 133.95 902.824v-19.646a873.128 873.128 0 0 1 143.773-481.327H945.24c44.986.339 81.37 36.723 81.71 81.709z\"\n      opacity={0.2}\n    />\n    <path\n      d=\"M982.3 483.56v863.531c-.34 44.985-36.724 81.369-81.709 81.71H308.978A875.77 875.77 0 0 1 133.95 902.824v-19.646a873.128 873.128 0 0 1 143.773-481.327H900.59c44.986.339 81.37 36.723 81.71 81.709z\"\n      opacity={0.2}\n    />\n    <linearGradient\n      id=\"PowerPoint_svg__a\"\n      x1={170.645}\n      x2={811.655}\n      y1={1450.101}\n      y2={339.899}\n      gradientTransform=\"matrix(1 0 0 -1 0 1788)\"\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop\n        offset={0}\n        style={{\n          stopColor: \"#ca4c28\",\n        }}\n      />\n      <stop\n        offset={0.5}\n        style={{\n          stopColor: \"#c5401e\",\n        }}\n      />\n      <stop\n        offset={1}\n        style={{\n          stopColor: \"#b62f14\",\n        }}\n      />\n    </linearGradient>\n    <path\n      fill=\"url(#PowerPoint_svg__a)\"\n      d=\"M81.843 401.85h818.613c45.201 0 81.843 36.643 81.843 81.843v818.613c0 45.201-36.643 81.844-81.843 81.844H81.843c-45.2 0-81.843-36.643-81.843-81.843V483.693c0-45.2 36.643-81.843 81.843-81.843z\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"M500.08 620.144a224.99 224.99 0 0 1 149.042 43.668 156.272 156.272 0 0 1 51.883 126.493 176.015 176.015 0 0 1-25.584 94.524 170.963 170.963 0 0 1-72.646 64.207 246.66 246.66 0 0 1-109.259 22.95H389.973v192.441H283.929V620.144H500.08zM389.884 888.848h91.265a118.501 118.501 0 0 0 80.683-24.066 89.3 89.3 0 0 0 27.281-70.413c0-59.98-34.857-89.97-104.57-89.97h-94.658v184.449z\"\n    />\n  </svg>\n);\nexport default SvgPowerPoint;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/PowerPoint/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgPowerPoint from \"./PowerPoint\";\n\nexport const PowerPointIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgPowerPoint ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Python/Python.jsx",
    "content": "export const SvgPython = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={1000}\n    height={1000}\n    viewBox=\"0 0 750 750\"\n    {...props}\n  >\n    <defs>\n      <clipPath id=\"a\">\n        <path d=\"M45 42h493v494H45Zm0 0\" />\n      </clipPath>\n      <clipPath id=\"b\">\n        <path d=\"M375.207 42.145c-168.414 0-157.902 73.035-157.902 73.035l.207 75.664h160.703v22.699H153.64S45.906 201.313 45.906 371.262c0 169.906 94.055 163.894 94.055 163.894h56.137v-78.86s-3.028-94.054 92.562-94.054h159.375s89.555 1.453 89.555-86.547V130.188s13.601-88.043-162.383-88.043Zm-88.621 50.87c15.984 0 28.918 12.938 28.918 28.922 0 15.981-12.934 28.918-28.918 28.918-.95 0-1.895-.042-2.836-.136a28.448 28.448 0 0 1-5.563-1.098c-.906-.277-1.8-.594-2.675-.957-.875-.36-1.73-.766-2.567-1.21a29.522 29.522 0 0 1-2.437-1.458 29.114 29.114 0 0 1-6.29-5.703 28.46 28.46 0 0 1-1.69-2.281 27.818 27.818 0 0 1-1.458-2.434 29.596 29.596 0 0 1-1.215-2.566 28.942 28.942 0 0 1-2.055-8.238c-.09-.946-.136-1.891-.132-2.837 0-15.984 12.934-28.921 28.918-28.921Zm0 0\" />\n      </clipPath>\n      <clipPath id=\"d\">\n        <path d=\"M217 209h493v494H217Zm0 0\" />\n      </clipPath>\n      <clipPath id=\"e\">\n        <path d=\"M379.977 702.059c168.414 0 157.902-73.036 157.902-73.036l-.207-75.664h-160.7V530.66h224.551s107.758 12.23 107.758-157.7c0-169.925-94.054-163.894-94.054-163.894H559.09v78.84s3.023 94.051-92.563 94.051H307.152s-89.558-1.45-89.558 86.55v145.509s-13.598 88.043 162.383 88.043Zm88.62-50.875a28.573 28.573 0 0 1-5.644-.547 29.24 29.24 0 0 1-2.754-.688 28.56 28.56 0 0 1-5.242-2.168 29.024 29.024 0 0 1-4.715-3.148 29.42 29.42 0 0 1-2.105-1.906 29.448 29.448 0 0 1-1.907-2.102 29.882 29.882 0 0 1-1.687-2.281 28.516 28.516 0 0 1-2.672-5.004 27.907 27.907 0 0 1-.953-2.676 27.808 27.808 0 0 1-.688-2.754 28.29 28.29 0 0 1-.414-2.808 28.598 28.598 0 0 1-.136-2.836c0-15.961 12.937-28.899 28.918-28.899 15.984 0 28.922 12.914 28.922 28.899 0 16.004-12.938 28.918-28.922 28.918Zm0 0\" />\n      </clipPath>\n      <linearGradient\n        id=\"c\"\n        x1={16.152}\n        x2={40.334}\n        y1={15.849}\n        y2={40.112}\n        gradientTransform=\"matrix(20.73047 0 0 20.73046 -285.782 -289.543)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#387EB8\" />\n        <stop offset={0.125} stopColor=\"#387EB8\" />\n        <stop offset={0.141} stopColor=\"#387EB7\" />\n        <stop offset={0.156} stopColor=\"#387DB7\" />\n        <stop offset={0.172} stopColor=\"#387DB6\" />\n        <stop offset={0.188} stopColor=\"#387CB5\" />\n        <stop offset={0.203} stopColor=\"#387CB4\" />\n        <stop offset={0.219} stopColor=\"#387BB3\" />\n        <stop offset={0.234} stopColor=\"#387BB2\" />\n        <stop offset={0.25} stopColor=\"#387AB1\" />\n        <stop offset={0.266} stopColor=\"#387AB1\" />\n        <stop offset={0.281} stopColor=\"#3879B0\" />\n        <stop offset={0.297} stopColor=\"#3879AF\" />\n        <stop offset={0.313} stopColor=\"#3878AE\" />\n        <stop offset={0.328} stopColor=\"#3778AD\" />\n        <stop offset={0.344} stopColor=\"#3777AC\" />\n        <stop offset={0.359} stopColor=\"#3777AB\" />\n        <stop offset={0.375} stopColor=\"#3776AA\" />\n        <stop offset={0.391} stopColor=\"#3776AA\" />\n        <stop offset={0.406} stopColor=\"#3775A9\" />\n        <stop offset={0.422} stopColor=\"#3775A8\" />\n        <stop offset={0.438} stopColor=\"#3774A7\" />\n        <stop offset={0.453} stopColor=\"#3774A6\" />\n        <stop offset={0.469} stopColor=\"#3773A5\" />\n        <stop offset={0.484} stopColor=\"#3773A4\" />\n        <stop offset={0.498} stopColor=\"#3772A4\" />\n        <stop offset={0.5} stopColor=\"#3772A3\" />\n        <stop offset={0.502} stopColor=\"#3772A3\" />\n        <stop offset={0.516} stopColor=\"#3771A2\" />\n        <stop offset={0.531} stopColor=\"#3771A2\" />\n        <stop offset={0.547} stopColor=\"#3771A1\" />\n        <stop offset={0.563} stopColor=\"#3770A0\" />\n        <stop offset={0.578} stopColor=\"#37709F\" />\n        <stop offset={0.594} stopColor=\"#376F9E\" />\n        <stop offset={0.609} stopColor=\"#376F9E\" />\n        <stop offset={0.625} stopColor=\"#376E9D\" />\n        <stop offset={0.641} stopColor=\"#376E9C\" />\n        <stop offset={0.656} stopColor=\"#366D9B\" />\n        <stop offset={0.672} stopColor=\"#366D9A\" />\n        <stop offset={0.688} stopColor=\"#366C99\" />\n        <stop offset={0.703} stopColor=\"#366C98\" />\n        <stop offset={0.719} stopColor=\"#366B97\" />\n        <stop offset={0.734} stopColor=\"#366B97\" />\n        <stop offset={0.75} stopColor=\"#366A96\" />\n        <stop offset={0.766} stopColor=\"#366A95\" />\n        <stop offset={0.781} stopColor=\"#366994\" />\n        <stop offset={0.813} stopColor=\"#366994\" />\n        <stop offset={0.875} stopColor=\"#366994\" />\n        <stop offset={1} stopColor=\"#366994\" />\n      </linearGradient>\n      <linearGradient\n        id=\"f\"\n        x1={23.548}\n        x2={48.282}\n        y1={23.842}\n        y2={47.538}\n        gradientTransform=\"matrix(20.73047 0 0 20.73046 -285.782 -289.543)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#FFE052\" />\n        <stop offset={0.125} stopColor=\"#FFE052\" />\n        <stop offset={0.188} stopColor=\"#FFE052\" />\n        <stop offset={0.219} stopColor=\"#FFE052\" />\n        <stop offset={0.234} stopColor=\"#FFDF51\" />\n        <stop offset={0.25} stopColor=\"#FFDF51\" />\n        <stop offset={0.266} stopColor=\"#FFDE50\" />\n        <stop offset={0.281} stopColor=\"#FFDD4F\" />\n        <stop offset={0.297} stopColor=\"#FFDD4E\" />\n        <stop offset={0.313} stopColor=\"#FFDC4E\" />\n        <stop offset={0.328} stopColor=\"#FFDB4D\" />\n        <stop offset={0.344} stopColor=\"#FFDB4C\" />\n        <stop offset={0.359} stopColor=\"#FFDA4B\" />\n        <stop offset={0.375} stopColor=\"#FFD94B\" />\n        <stop offset={0.391} stopColor=\"#FFD94A\" />\n        <stop offset={0.406} stopColor=\"#FFD849\" />\n        <stop offset={0.422} stopColor=\"#FFD748\" />\n        <stop offset={0.438} stopColor=\"#FFD748\" />\n        <stop offset={0.453} stopColor=\"#FFD647\" />\n        <stop offset={0.469} stopColor=\"#FFD546\" />\n        <stop offset={0.484} stopColor=\"#FFD545\" />\n        <stop offset={0.486} stopColor=\"#FFD445\" />\n        <stop offset={0.5} stopColor=\"#FFD444\" />\n        <stop offset={0.514} stopColor=\"#FFD444\" />\n        <stop offset={0.516} stopColor=\"#FFD343\" />\n        <stop offset={0.531} stopColor=\"#FFD343\" />\n        <stop offset={0.547} stopColor=\"#FFD242\" />\n        <stop offset={0.563} stopColor=\"#FFD242\" />\n        <stop offset={0.578} stopColor=\"#FFD141\" />\n        <stop offset={0.594} stopColor=\"#FFD040\" />\n        <stop offset={0.609} stopColor=\"#FFD03F\" />\n        <stop offset={0.625} stopColor=\"#FFCF3F\" />\n        <stop offset={0.641} stopColor=\"#FFCE3E\" />\n        <stop offset={0.656} stopColor=\"#FFCE3D\" />\n        <stop offset={0.672} stopColor=\"#FFCD3C\" />\n        <stop offset={0.688} stopColor=\"#FFCC3C\" />\n        <stop offset={0.703} stopColor=\"#FFCC3B\" />\n        <stop offset={0.719} stopColor=\"#FFCB3A\" />\n        <stop offset={0.734} stopColor=\"#FFCA39\" />\n        <stop offset={0.75} stopColor=\"#FFCA39\" />\n        <stop offset={0.766} stopColor=\"#FFC938\" />\n        <stop offset={0.781} stopColor=\"#FFC837\" />\n        <stop offset={0.797} stopColor=\"#FFC836\" />\n        <stop offset={0.813} stopColor=\"#FFC736\" />\n        <stop offset={0.828} stopColor=\"#FFC635\" />\n        <stop offset={0.844} stopColor=\"#FFC634\" />\n        <stop offset={0.859} stopColor=\"#FFC533\" />\n        <stop offset={0.875} stopColor=\"#FFC433\" />\n        <stop offset={0.891} stopColor=\"#FFC432\" />\n        <stop offset={0.906} stopColor=\"#FFC331\" />\n        <stop offset={0.938} stopColor=\"#FFC331\" />\n        <stop offset={1} stopColor=\"#FFC331\" />\n      </linearGradient>\n    </defs>\n    <path fill=\"#fff\" d=\"M-75-75h900v900H-75z\" />\n    <path fill=\"#fff\" d=\"M-75-75h900v900H-75z\" />\n    <g clipPath=\"url(#a)\">\n      <g clipPath=\"url(#b)\">\n        <path fill=\"url(#c)\" d=\"M45.906 42.145v499.023h505.285V42.145Zm0 0\" />\n      </g>\n    </g>\n    <g clipPath=\"url(#d)\">\n      <g clipPath=\"url(#e)\">\n        <path fill=\"url(#f)\" d=\"M203.996 203.035V702.06h505.285V203.035Zm0 0\" />\n      </g>\n    </g>\n  </svg>\n);\nexport default SvgPython;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Python/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgPython from \"./Python\";\n\nexport const PythonIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgPython ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/QDrant/QDrant.jsx",
    "content": "const SvgQDrant = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"168.419 120.023 131.984 152.407\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <defs>\n      <linearGradient\n        id=\"QDrant_svg__a\"\n        x1={62.128}\n        x2={41.202}\n        y1={105.54}\n        y2={105.54}\n        gradientTransform=\"translate(168.42 120.023)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#FF3364\" />\n        <stop offset={1} stopColor=\"#C91540\" stopOpacity={0} />\n      </linearGradient>\n    </defs>\n    <g fillRule=\"evenodd\" clipRule=\"evenodd\">\n      <path\n        fill=\"#24386c\"\n        d=\"m272.21 260.113-3.038-83.784-5.504-22.089 36.735 3.889v101.35l-22.44 12.95z\"\n      />\n      <path\n        fill=\"#7589be\"\n        d=\"m300.4 158.123-22.44 12.96-46.308-10.158-54.203 22.069-9.03-24.871 32.99-19.05 33-19.05 32.99 19.05z\"\n      />\n      <path\n        fill=\"#b2bfe8\"\n        d=\"m168.42 158.123 22.44 12.96 13.008 38.686 43.921 35.142-13.378 27.512-33-19.051-32.99-19.05v-76.2\"\n      />\n      <path\n        fill=\"#24386c\"\n        d=\"m249.288 224.583-14.877 21.932v25.91l21.11-12.18 10.877-16.242\"\n      />\n      <path\n        fill=\"#7589be\"\n        d=\"m234.42 220.613-21.119-36.565 4.55-12.119 17.292-8.384 20.378 20.504z\"\n      />\n      <path\n        fill=\"#b2bfe8\"\n        d=\"m213.301 184.045 21.11 12.18v24.38l-19.524.84-11.81-15.08 10.224-22.32\"\n      />\n      <path\n        fill=\"#24386c\"\n        d=\"m234.411 196.223 21.11-12.179 14.367 23.922-17.386 14.365-18.09-1.727z\"\n      />\n      <path\n        fill=\"#dc244c\"\n        d=\"m255.521 260.243 22.44 12.181v-101.34l-21.78-12.57-21.77-12.57-21.78 12.57-21.77 12.57v50.289l21.77 12.57 21.78 12.571 21.11-12.191zm0-51.83-21.11 12.19-21.11-12.19v-24.37l21.11-12.19 21.11 12.19v24.37\"\n      />\n    </g>\n    <path\n      fill=\"url(#QDrant_svg__a)\"\n      d=\"M234.421 246.523v-25.914l-21-12.086v25.871l21 12.129Z\"\n    />\n  </svg>\n);\nexport default SvgQDrant;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/QDrant/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgQDrant from \"./QDrant\";\n\nexport const QDrantIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgQDrant ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/QianFanChat/QianFanChat.jsx",
    "content": "export const SvgQianFanChat = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={1000}\n    height={1000}\n    viewBox=\"0 0 750 750\"\n    {...props}\n  >\n    <path\n      fill=\"#00d263\"\n      d=\"M602.984 155.953c.024-.02.059-.043.086-.07L379.008 26.43l-37.793 21.71a86.37 86.37 0 0 0-5.809 3.028L95.051 189.543l106.808 61.68a26.254 26.254 0 0 0 26.223.015l53.691-30.91 69.95-40.273a53.06 53.06 0 0 1 52.933 0l55.02 31.675 67.738 38.997a26.257 26.257 0 0 0 26.184.011l107.093-61.566Zm0 0\"\n    />\n    <path\n      fill=\"#ff502e\"\n      d=\"M586.313 303.273a26.254 26.254 0 0 0-13.145 22.747V467.78c0 18.887-10.11 36.336-26.5 45.778l-125.336 72.16a26.24 26.24 0 0 0-13.156 22.75v123.054l242.152-139.41c.34-.191.649-.406.98-.605l41.848-24.098V241.754Zm0 0\"\n    />\n    <path\n      fill=\"#0062ff\"\n      d=\"m331.3 585.71-121.59-70c-16.398-9.44-26.5-26.89-26.5-45.776V328.09a26.253 26.253 0 0 0-13.151-22.746L63.266 243.848l-.047-.203v.175l.004 276.547v48.934l37.5 21.629a84.188 84.188 0 0 0 5.25 3.304l238.476 137.297v-123.07a26.25 26.25 0 0 0-13.148-22.75\"\n    />\n  </svg>\n);\nexport default SvgQianFanChat;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/QianFanChat/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgQianFanChat from \"./QianFanChat\";\n\nexport const QianFanChatIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgQianFanChat ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ReadTheDocs/ReadthedocsioIcon.jsx",
    "content": "const SvgReadthedocsioIcon = (props) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" {...props}>\n    <path\n      fill=\"#32322a\"\n      d=\"M28.81 30.85a1.534 1.534 0 0 0-.208 3.014s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353a1.534 1.534 0 1 0-.385-3.013s-5.666.705-10.276.32c-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.6a1.535 1.535 0 0 0-.208 2.981s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353.544-.07 1-.423 1.223-.928s.14-1.086-.193-1.523-.87-.663-1.416-.594c0 0-5.666.705-10.276.32-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.604a1.534 1.534 0 0 0-.208 3.014s3.736 1.218 10.097 1.763c5.108.417 10.9-.353 10.9-.353.544-.07 1-.423 1.223-.928s.14-1.086-.193-1.523-.87-.663-1.416-.594c0 0-5.666.705-10.276.32-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.604a1.534 1.534 0 0 0-.208 3.014s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353a1.534 1.534 0 1 0-.385-3.013s-5.666.705-10.276.32c-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zM18.16.024c-8 0-10.966 2.5-10.966 2.5v59.667s2.907-2.5 12.265-2.116 11.288 3.664 22.79 3.895c11.5.32 14.392-1.763 14.392-1.763l.167-60.828S51.63 2.855 41.558 2.92C31.486 2.92 29.065.354 19.82.034a42.3 42.3 0 0 0-1.657-.029zm6.685 3.895s4.84 1.603 13.784 2.052c7.558.385 15.137-.737 15.137-.737v54.06s-3.836 2.02-13.425 1.314c-7.43-.545-15.607-3.344-15.607-3.344zm-4.668 1.4a1.554 1.554 0 1 1 0 3.11s-2.504.013-4.033.32c-2.567.32-4.31 1.186-4.31 1.186a1.542 1.542 0 0 1-2.36-1.405 1.546 1.546 0 0 1 .926-1.318s2.273-1.186 5.442-1.507c1.83-.32 4.337-.32 4.337-.32zm-1.492 7.623a26.95 26.95 0 0 1 1.492 0 1.546 1.546 0 0 1 0 3.08s-2.504.013-4.033.32c-2.567.32-4.31 1.186-4.31 1.186a1.544 1.544 0 0 1-1.436-2.726s2.273-1.218 5.442-1.507c.916 0 2 0 2.845-.32zm1.492 7.597a1.554 1.554 0 1 1 0 3.11s-2.504-.016-4.033 0c-2.567.32-4.31 1.186-4.31 1.186a1.544 1.544 0 0 1-1.436-2.726s2.273-1.186 5.442-1.507c1.83-.32 4.337-.32 4.337-.32z\"\n    />\n  </svg>\n);\nexport default SvgReadthedocsioIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/ReadTheDocs/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgReadthedocsioIcon from \"./ReadthedocsioIcon\";\n\nexport const ReadTheDocsIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgReadthedocsioIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Redis/Redis.jsx",
    "content": "export const SvgRedis = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"35\"\n    height=\"35\"\n    version=\"1\"\n    viewBox=\"0 0 750 750\"\n  >\n    <defs>\n      <filter id=\"959fca5e72\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\"\n        ></feColorMatrix>\n      </filter>\n      <filter id=\"3490f79f60\" width=\"100%\" height=\"100%\" x=\"0%\" y=\"0%\">\n        <feColorMatrix\n          colorInterpolationFilters=\"sRGB\"\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.2126 0.7152 0.0722 0 0\"\n        ></feColorMatrix>\n      </filter>\n      <clipPath id=\"091fd1df4e\">\n        <path d=\"M0 70.945h750v608.25H0zm0 0\"></path>\n      </clipPath>\n      <image\n        width=\"920\"\n        height=\"512\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA5gAAAIACAAAAADC4Zz7AAAAAmJLR0QA/4ePzL8AABe/SURBVHic7d1ngFXVucbxBSJVERBFQKlSFOkMVekabCHRm8SYojfRaDTqNUZjjBr1BkRM1HAjCrGTBIhRYOCKBZgZDSjSi9RBHKRLkSJN4OQDakSHOVPW3s8+7/r/PvLp2YfzzNpn7bXWdg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIUDl1APhT7/SbWzUs75xz5Vz1jVtnP7Vx52Z1JiBk3d7dtT9VmH0vdFdnA4LUPXt3oZ38wrbJPdUZgaB0z91adCk/t2vCueqsQBDK9ZxbvFJ+bgrdBKJ14gXzS9bKI/5FN4GoHNdnQWlaecQrHdXxAYv6Li99K1OpVCo1u4/6EgBjOuYV/likhFZ3VV8IYEbHCXt8tPKI17qoLwcw4OyXtvtrZSqVSqUW9lZfE5DZyr+40XMrj8hjXRBQWl1L+MCyJA6Pbau+PCADtZkSXSuPmNtffY1AhrngvahrmUqlUqk8ZoKA4uq17HAstUylUqkVl6qvFsgEVUen2TTi3YK+6msGkq3S+UtjbmUqlUqlNo2uqb5yILG6Tle08oi1/dRXDyRRrfG6Vh4xgy0owNEuXqmuZSqVSm0ZWEH9QQCJMWDOIXUlv7D8YvWnASRBrW++ry7j0T66tKL6MwHEvrNM3cPCTBuo/lwAnY456gYe0ycDjld/OoDERQXq9hVt3nnqTwiIW4dsde+KYc+zldSfU2h4RYJS5TF9qqszFM/u9dflqjMAsei5RD0SlswrnBME87LyDqqLVnILL1J/bECUei9Sd6y0xvVWf3ZANLImxLfLMgILOZUW9pTrs1rdrLJ7jSO8YMq5b6k75ckyXuwXLR6XxKf2qJ5V1Rn8+XTq0Bx1BsMoZkwq9h3RQJ3Bt/3jfrZLncEqihmLemOMLmsruCpPHcGm8uoAASh/8dp1RnvpGuampnEqbQQYMaPWfXAvdYSobbjpdW5pPaOYkarS788N1RliseyXk9URbKGYEer6VCt1hPjsuXKCOoIl/MaMygn/PPB2QL10Vcen3jxfHcIORsxo9B7RLMSPduWdL6sjGMGIGYEOkw7nNA+xl67ZS6m8C9QhTAjy6xOtvk81VkfQ2vTDnEPqDBmPEdOvblMOTQ28l67OGwcnsQOljBgxPTp+bPc66gxJcWDiT3aqM2QyRkxvsqYf+Da9/FzFy3cs4Sz30mPE9OOkcWdTyq85NPXBXHWGDEUxfeg3vLk6QlItu/kNdYSMRDHLrOMQVnEX5ZO3vsevzRKjmGVzQv9hZ6gzJF/+DQybJUQxy6LDk1nqCJli1h256ggZhWKWWr2nutZUZ8gkH944UR0hg/C4pJT6LCm4kF6WxBnZqdze6hAZgxGzNBqM6M+r0Etl29yBe9QZMgIjZsn1yi8YQC9Lp1b/T/IGqENkAkbMEjpt8PcrqzNkuv2TfrRXnSHpKGaJdP9bI3UEG1Zcz6G0ReJWtvjaZu+b3kgdwojm07Zn11aHSDJGzOLqMqyzOoI1G65i3cGxUMxiaf1o12rqDCZlX7tZHSGZKGYx/PU8c283SI6Fv2LYLATFTKfLkN7qCMbtmX3XdHWGxKGYRSr34rlss4zB4js4L/poFPPYKnT9c1t1hmAcmvObaeoMSUIxj6XdUI4vjte+cT/brc6QGBSzcJc+UV8dIUTLb35dHSEhKGYhug3qUVGdIVQHJ17NeQeOYn5d9WcvYjGs1AfXTFVH0GNJ3tG6ztx0Gb3UajTlwIwe6hBqjJhfUmP4ZZXUGXDEqmty1RGkGDG/0Gn+9u/Ty6RomnNgYhd1CCFGzCNq/a1pM3UGfNX+f14b6sZNiumcc51GtVRHQKH2F/wizKW0FNO1fuxcHo4k2YSrdqgjxC/4YvZ7glvYxFtyY646QtzCnvzpNik1hV4m39k5n+QEtk094BGzyvBv1lJnQPF9NPvKj9UZ4hPsiHnehD1X08tMcsqF26f3VYeITZgjZoWnvnWSOgNKY+/bg8LYHRZiMbuNOCfEy7Zi+a0hbKoO7hta/Zlu9dQZUEbz7zLfzcCK2X/YWeoI8GJmr/3qCJEKafKnfU7qDXppRJd9sy5UZ4hSOCPmgGE8sTRm2xV2l+sFUsysey9RR0AElmftUkeISBDF7D2SwdKqaf3UCaJh/zdmk+zdOfTSrL5be6kjRML6iNl5RDt1BETs5cvVCSJgu5ij+tVVR0D0LDbTcjEnZvF6gzCMvlKdwDu7xXz2O7w4LxS7qqsTeGd18ufcjVfTy2CcOE6dwLsK6gDRmNVJnQBxaq0O4J3JEbP1WnoZlk/VAbyzWMyRC3khUGDs7a41eCs79rvqBIibvZ0m9kbMNvQyPOvUAbyzV8y56gCIn70bP3PFfOE4dQLE7zR1AO/MLTDYYe9ZM9LaZK6Z5kbMKuoAELD3EmpzxUSI7L18xlwxre5oR1HsTSyYK+ZGdQAImJsqsVdMhOiQOoB35opp76YG6bFWNvFS6gAQOKwO4J25Yh6vDgABc19je1dEMUNk73/dXDEPqgMAHpgrJr8xQ8TkT+LZe6KF9HhcAiQQI2bicSsbInszC+aKya1siNgonXjmLgjFUFUdwDtz32N7fzuRHit/Es/e/BzSs/e/bq6Y/MYMEbOyiUcxQ8SsbOKZuyAUA0eLAAlUWR3AO3PFtDcNgPT2qAN4Z66YCBHPMROPyZ8Q8RwTQAwoJpBAFBNIIIoJJBDFBBKIYgIJRDGBBKKYMMDegTIUEwbsUwfwzlwx7f3tRHosYgcSqIo6gHfmismIGaID6gDemSsm78cM0TZ1AO/MFRMhYvIn8biVDRGv4QMSqKY6gHfmismIGSImfxKPYoaIc2WBBDpVHcA7c8VkxAzRx+oA3lFMGPCuOoB35oqJAB38nTqBd+aKyYgZoPfWqBN4Z66YCNDl6gD+mStmNXUAxG7sKnUC/8wVc5c6AOL2+hXqBBEwV0x7h+WjaFO/oU4QhQrqAL7ZW5yFoix96zp1hEiYK6a9nXkowtyLNqkjRMPcy7HazVMnQHwmflOdICrmNvxvbNdSHQEx2fHSd9QRImNuxHRuTgd1AsTilWvXqyNEx2AxG0xppo6A6C28zODTy/8w97jEuTW9ZqkjIHJj2prupcViug2dx6ojIFJbJjX5vjpDxAzeyjrn3P/9N0vz7Jp12Vp1hMgZLaY7Y1xHdQREYtua761QZ4iB1WI6N/r8k9UR4N3WOTeFUEvLxXSNR/ZXR4BnezotVUeIieFiOvd0Vmt1BHj2uskl619nupjODR3YXB0Bfu2efUMIo6bxYjo3og/LDaw5kHeL+W6aL6ZzT1x8hjoCfNv6hvEHmQEU07ln++xroc4Az/aMvv6gOkOEgiimcy1y6qojwLs3r7d7R2txSV4hPq6qTgD/ei5519xG/88FUcw2+atPUmdAFLL25agjRMT+rezpw7vVVmdAdHaeb+/9CM5+MZuOZc2sdb3eVCeIgO1iPt6jrToCovfaAHUC/ywXc2LvE9QREIus2eoE3tkt5nNXqRMgLqvOVCfwztwpeZ/puLibOgJiU6tBtjqCb0afA73dVZ0AcequDuCdyeeY7XbQy7DYu/GzWMzx86qrIyBe9k54MljM5weqEyBu+9UBvLNXzDY/VidA7N5XB/DOXjGnqgMgfvbOXTNXzOEsjA2QvckfcwsM9lVSJ0D8lp2lTuCbuRHT3F8aFEMVdQDvzBUTIUqpA3hnrpgV1QEgYO83prliLlMHgADPMRPveHUACNibWTBXTKOr8lEkipl4h9QBAA8oJgxgxEw8cxeEIJn7Htv724n0eI6ZeJbfZ4FjoZiJx1LZENm7TzJXTISIBQaJZ++mBunZm4unmDCAERNIoAPqAN6ZKyYjZojsTfmZKyZCZO8lNRQTBhxWB/COYsIAe9vjKSYM2KQO4B3FhAGcKwskELeyiWdv1STSq6oO4B3FhAEF6gDemSsmQsRr+BLP3hMtpGfvhajmismtbIj2qAN4Z66YCJG9P8cUE0ggigkkEMUEEohiAglkrphslA4Rkz9AAlFMIIE4jCvxuJUNEWf+AAlkbyEmxYQBbPtKPG5lQ8S5skACsYg98cxdEILE9xgG7FYH8M5cMfmNGSIO4wISiMclQALZu0+imMh82y5QJ/COYiLz5W9XJ/COYiLjHfqxOoF/FBMZb/RydQL/zBXT3vwc0sj+kTpBBMwV096qSRTthYHqBFGooA4AlMWWl69TR4iEuRHzfXUAxGlKS5u9tHdYSv216gSIz+SL1Amicpw6gG+7WrVSR0BMCv7+A3WEyJgbMZ17u6s6AWIx7rsH1RGiY7CYjce3UUdA9Oa+/Qt1hCgZLKZrN7qlOgIitnucwdU+X2axmK7WdJpp21tXrVZHiJjJYjr39KWnqCMgMrv7z1RHiJzRYrrT32ysjoBoHD5nqTpCDMwtMPjM2iZj1REQjfLV1QniYLWYzl1x5gp1BETincPbe6gzRM7qraxzzrl/dGmgjoCIvHKxOkG0TBfTucF9u6gjICLv3DRbHSFCxovp3KPtO5yozoBoFFw5Qx0hMuaL6dxtjUwvEQnanGvnqSNEJIBiupPeZI2eVQdfu0QdIRp2Z2U/V23ETHppVoWLC2zuJrI+YraYVk8dARFru1CdIAK2R8zsXcvopXkLnlQniIDlEXPUgNrqCIjFWcvUCbyzW8y/XhrE0i045z6wtzDa3NEin2k6t2cldQbEpUbNV9URfDN6fGV+U3UCxMneaTImJ3/abaCXYamrDuCdxRFz8gB1AsTM3s8WgyPmaHoZnC3qAN7ZK+aoK9QJEDuKmXzfVgdA/I5XB/DOXDFHVlMnQPzs7ewzV8ze6gCAB+aKae+mBukdUgfwzlwxa6gDQKCqOoB35opp+D0zOKaUOoB35oq5Rh0AAofVAbwzV0x+Y4bI3NfY3hVVVAeAgL3/dXPFtLqPDUWxt63YXDErqwMAHpgrpr2/nUiPyZ/E43FJiOz9OTZXTHtrQBAic8W0uPMb4TFXTISIlT+Jx60sLDBXTHt/O5Gevf91c8U0d0EIkrnvsb2/nQiRuWIiRPZmFswV09wFoRjs7SniewwDDqgDeGeumPzGDNF+dQDvKCYMMPc1NnhFCJC9hZjmismIGaLd6gDemSsmQlRTHcA7igkDmJUFEohZWSCB7M0sUEwYwKwskEDV1QG8M1dMe8cyIT0elyQexQwRxQQSqK46gHfmimnv6F+kt1MdwDtzxUSI7H2NzV0RvzFDxNu+gARigQGQQPZmFigmDLD3VlSKCQPsveONYsIAigkk0AnqAN5RTBiwVx3AO4oJA1grm3j2nmghvWrqAN6ZKyZCNFsdwDtzxWTEDNC2O9QJvKOYyHwbNqkTeGeumPaeaCGdPd9SJ/DPXDErqQMgdmPy1Qn8M1dMeyeMIo3RP1UniIC5Yn6qDoCY/e1KdYIomCtmFXUAxGrt4B+qI0TC3Em5089UJ0CMpl69Vh0hGuZO4jh5izoBYnPgX/3UEaJibofp3vod1REQk/devVwdITLmRkznZnRTJ0AcFs24Xh0hQgaLWetfZ6kjIHKH3vyu6R8t5mZlndvWI1cdAVHLvb2v6V5aHDGdc3k91QkQpcWjhqojRM1mMd2YfrXVERCVWTN+ae+4yq8yWkxXL5vJWZu2PH2nOkIcrBbTuee/UUcdAd7Nm3GXvRcIFcZuMV3tF3urI8Cvxdl3h7Lf1twCg//Y83yFqvXUIeDP0tH/9YY6Q2wMj5jOOTeoc391BPjx9txbDqkzxMh4MZ0b2YFZoMy3b9bU+9UZ4mW+mM49eMk56ggom5nT7lJHiFsAxXRuSDcWHGSuzbM2XqPOEL8giuncDd9uf7I6A0pj/axrbK+9O4ZAiulcnXsubKLOgJJaNeXezeoMGsEU07kTfnITpxtklOX/eORjdQaVgIrpXLVBndmrmSn25Y0boc4gFFQxnXMP96CamWD/y7faO129JEIrpnOthmados6AouVPGBroT8svhFdM5xoM7tFInQHHtuIfg+29iLakQiymc+7RPm3VEVCoj6Z9EMS2rnQCLaZz5ww/Tx0BX7Mu95at6gzJEGwxnWt6Z1+ebCbKstfv267OkBQBF9M5N6RTH4OnkWWoxa/ft0udITnCLqZzrYc1Z89mAuyaOeZpdYZECb2YztV9KKulOkPolk6/6yN1hoShmM65kX2b8DnozHrnvm3qDInDF9I551yLQVkN1BnCtHHxlIfUGZKIYn6m9gOdstQZwlMw75Y16gzJRDH/4+/12U8dq7zZj6xXZ0gqivllTe/uwguJYrJudc696gwJRjG/YnD3TtXUGQKwaebPGSyLQjG/5szHO3IMSbSW5z2wTp0h4ShmIeoP7thKncGwVf9/P49H0qGYhRvdrD2L9aKwedbS29UZMgHFPJbGg5p2VmcwZ/2iW5arM2QGinlsVf/Yizlan1Ys+PVqdYZMQTGL1OqF009VZzDi0/x5P1BnyCAUM40z/9CUNyyU3fy9V69QZ8goFDOtcqPq9aioDpHZ8sferY6QaShmcTT+33M4I6i09q5492fqDJmHYhbTn3o2qqHOkIl259zChE8pUMxia/9kIyaCSmjRjN+FfW5zqVHMEqg3uH0bdYYMsmpF7lB1hoxFMUtmZHcW6xXPhzN+tVadIYNRzJJqc+/ACuoMyTd95iDWw5YFxSy55r/u3KSqOkSS5c9cxHEhZUQxS6XZH7swEXQMq2f8nPNhy4xillKdh3rwGtxCzBn/52BfNusTxSy9x9t15tfmUVavf+s36gxGUMyyaPFgi7PVGZIjf/FNzMP6QjHL6OE27fi16Zxz7y24NfSXzfpEMcus1XOtK6kzqH20avID6gy2UEwPTv996w7qDEqbZ91YoM5gDcX0Y2TzYE+9nP/qsA3qDPZQTF9Ov2NAM3WG+G16P+e36gwmUUx/jn+oS3d1hni9P/N2zoeNBsX0qu3jzU9RZ4jNW7MGb1VnMItietb4t30aHqcOEYONy6cxDxshiulfq0da11VniNjGtVeuVGewjWJGocE9PZurM0Ro/cQhH6gzWEcxI/L3ej1sLqTd8vGkhzaqQ9hHMSOTdfNFtdQZvFu94uecrRUHihmhuve1b11ZHcKn/FF/YS1BPChmtLoMb3qSOoMvKybfu1OdIRgUM2qNHmzfQp3Bgx2TlgxWZwgJxYzBC10bZPj+k+VzbmPCJ1YUMxZNH+jRUJ2h9Ca/86cd6gyhoZgxqX7ngLYZ+Y7qzfNfHqHOECCKGZ8mD/Sur85QUjPfuX+7OkOQKGac6t7drb06Q0m8uHDIQXWGQFHMmN35vYY11RmKp2Dh+GfUGYDY1H96Syr5Vj4Xzv61JGLEFDj1gZZZyX7Hwor8a9erMwDxa523TT0mHtuix2qrP5/gMWKqnHpnv0S+bHPD+pzb1RlAMYWqPXp2u6Qdrbd25bWr1BngKKZYnd90PFed4UtmLLiHU3wA55y7a/5e9W/Kzyz/g/qzwBcYMfUaDummX0i7efE7HBALHOWUhxdpB8uNMyxsTQO8e2zxQVktt0xoor58IKlaTlovqeV7f2CND1CEGk/k7Yy7liseUV81kHwtXtodYyt35nBcCFAsDZ5YEFMtN7x0hvpigQwybFUMtfxwwmnq6wQyzDmTP462lhufyZBdoUCiNBizI7parnmihvr6gAxVd8KHhyOpZf7zZs6gBhQ6zvFfyy3Pnay+LCDTNRm3zmstlz90ovqSAAuavORvQVD+oGSfaAJkktxlXmpZ8CS1BHxqPn1rWWv58i9tvkgXUDpt+JIytHJv9k/VFwDYVHnYmlLWcu3DF6rDA3aV/312KWo550Z1bsC622aWbEHQjvH/o44MhKDq/ZM3FLOVn864p7I6LhCMmn+Zuy99LWf/6TZ1UJQap+RlplNu7dK+iP0hK3N2rnssvjTwjmJmrGo3dK7R9qSKX/3n7UuXbcl5VREIHlHMzFbnugptypevUq6ccx822H/g8Mp9g/aqMwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzl34W1ma6adlR1AAAAAElFTkSuQmCC\"\n      ></image>\n      <mask id=\"9d4d970ba1\">\n        <g filter=\"url(#959fca5e72)\">\n          <g\n            filter=\"url(#3490f79f60)\"\n            transform=\"matrix(1.34674 0 0 1.34766 -234.085 26.23)\"\n          >\n            <image\n              width=\"920\"\n              height=\"512\"\n              xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA5gAAAIACAAAAADC4Zz7AAAAAmJLR0QA/4ePzL8AABe/SURBVHic7d1ngFXVucbxBSJVERBFQKlSFOkMVekabCHRm8SYojfRaDTqNUZjjBr1BkRM1HAjCrGTBIhRYOCKBZgZDSjSi9RBHKRLkSJN4OQDakSHOVPW3s8+7/r/PvLp2YfzzNpn7bXWdg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIUDl1APhT7/SbWzUs75xz5Vz1jVtnP7Vx52Z1JiBk3d7dtT9VmH0vdFdnA4LUPXt3oZ38wrbJPdUZgaB0z91adCk/t2vCueqsQBDK9ZxbvFJ+bgrdBKJ14gXzS9bKI/5FN4GoHNdnQWlaecQrHdXxAYv6Li99K1OpVCo1u4/6EgBjOuYV/likhFZ3VV8IYEbHCXt8tPKI17qoLwcw4OyXtvtrZSqVSqUW9lZfE5DZyr+40XMrj8hjXRBQWl1L+MCyJA6Pbau+PCADtZkSXSuPmNtffY1AhrngvahrmUqlUqk8ZoKA4uq17HAstUylUqkVl6qvFsgEVUen2TTi3YK+6msGkq3S+UtjbmUqlUqlNo2uqb5yILG6Tle08oi1/dRXDyRRrfG6Vh4xgy0owNEuXqmuZSqVSm0ZWEH9QQCJMWDOIXUlv7D8YvWnASRBrW++ry7j0T66tKL6MwHEvrNM3cPCTBuo/lwAnY456gYe0ycDjld/OoDERQXq9hVt3nnqTwiIW4dsde+KYc+zldSfU2h4RYJS5TF9qqszFM/u9dflqjMAsei5RD0SlswrnBME87LyDqqLVnILL1J/bECUei9Sd6y0xvVWf3ZANLImxLfLMgILOZUW9pTrs1rdrLJ7jSO8YMq5b6k75ckyXuwXLR6XxKf2qJ5V1Rn8+XTq0Bx1BsMoZkwq9h3RQJ3Bt/3jfrZLncEqihmLemOMLmsruCpPHcGm8uoAASh/8dp1RnvpGuampnEqbQQYMaPWfXAvdYSobbjpdW5pPaOYkarS788N1RliseyXk9URbKGYEer6VCt1hPjsuXKCOoIl/MaMygn/PPB2QL10Vcen3jxfHcIORsxo9B7RLMSPduWdL6sjGMGIGYEOkw7nNA+xl67ZS6m8C9QhTAjy6xOtvk81VkfQ2vTDnEPqDBmPEdOvblMOTQ28l67OGwcnsQOljBgxPTp+bPc66gxJcWDiT3aqM2QyRkxvsqYf+Da9/FzFy3cs4Sz30mPE9OOkcWdTyq85NPXBXHWGDEUxfeg3vLk6QlItu/kNdYSMRDHLrOMQVnEX5ZO3vsevzRKjmGVzQv9hZ6gzJF/+DQybJUQxy6LDk1nqCJli1h256ggZhWKWWr2nutZUZ8gkH944UR0hg/C4pJT6LCm4kF6WxBnZqdze6hAZgxGzNBqM6M+r0Etl29yBe9QZMgIjZsn1yi8YQC9Lp1b/T/IGqENkAkbMEjpt8PcrqzNkuv2TfrRXnSHpKGaJdP9bI3UEG1Zcz6G0ReJWtvjaZu+b3kgdwojm07Zn11aHSDJGzOLqMqyzOoI1G65i3cGxUMxiaf1o12rqDCZlX7tZHSGZKGYx/PU8c283SI6Fv2LYLATFTKfLkN7qCMbtmX3XdHWGxKGYRSr34rlss4zB4js4L/poFPPYKnT9c1t1hmAcmvObaeoMSUIxj6XdUI4vjte+cT/brc6QGBSzcJc+UV8dIUTLb35dHSEhKGYhug3qUVGdIVQHJ17NeQeOYn5d9WcvYjGs1AfXTFVH0GNJ3tG6ztx0Gb3UajTlwIwe6hBqjJhfUmP4ZZXUGXDEqmty1RGkGDG/0Gn+9u/Ty6RomnNgYhd1CCFGzCNq/a1pM3UGfNX+f14b6sZNiumcc51GtVRHQKH2F/wizKW0FNO1fuxcHo4k2YSrdqgjxC/4YvZ7glvYxFtyY646QtzCnvzpNik1hV4m39k5n+QEtk094BGzyvBv1lJnQPF9NPvKj9UZ4hPsiHnehD1X08tMcsqF26f3VYeITZgjZoWnvnWSOgNKY+/bg8LYHRZiMbuNOCfEy7Zi+a0hbKoO7hta/Zlu9dQZUEbz7zLfzcCK2X/YWeoI8GJmr/3qCJEKafKnfU7qDXppRJd9sy5UZ4hSOCPmgGE8sTRm2xV2l+sFUsysey9RR0AElmftUkeISBDF7D2SwdKqaf3UCaJh/zdmk+zdOfTSrL5be6kjRML6iNl5RDt1BETs5cvVCSJgu5ij+tVVR0D0LDbTcjEnZvF6gzCMvlKdwDu7xXz2O7w4LxS7qqsTeGd18ufcjVfTy2CcOE6dwLsK6gDRmNVJnQBxaq0O4J3JEbP1WnoZlk/VAbyzWMyRC3khUGDs7a41eCs79rvqBIibvZ0m9kbMNvQyPOvUAbyzV8y56gCIn70bP3PFfOE4dQLE7zR1AO/MLTDYYe9ZM9LaZK6Z5kbMKuoAELD3EmpzxUSI7L18xlwxre5oR1HsTSyYK+ZGdQAImJsqsVdMhOiQOoB35opp76YG6bFWNvFS6gAQOKwO4J25Yh6vDgABc19je1dEMUNk73/dXDEPqgMAHpgrJr8xQ8TkT+LZe6KF9HhcAiQQI2bicSsbInszC+aKya1siNgonXjmLgjFUFUdwDtz32N7fzuRHit/Es/e/BzSs/e/bq6Y/MYMEbOyiUcxQ8SsbOKZuyAUA0eLAAlUWR3AO3PFtDcNgPT2qAN4Z66YCBHPMROPyZ8Q8RwTQAwoJpBAFBNIIIoJJBDFBBKIYgIJRDGBBKKYMMDegTIUEwbsUwfwzlwx7f3tRHosYgcSqIo6gHfmismIGaID6gDemSsm78cM0TZ1AO/MFRMhYvIn8biVDRGv4QMSqKY6gHfmismIGSImfxKPYoaIc2WBBDpVHcA7c8VkxAzRx+oA3lFMGPCuOoB35oqJAB38nTqBd+aKyYgZoPfWqBN4Z66YCNDl6gD+mStmNXUAxG7sKnUC/8wVc5c6AOL2+hXqBBEwV0x7h+WjaFO/oU4QhQrqAL7ZW5yFoix96zp1hEiYK6a9nXkowtyLNqkjRMPcy7HazVMnQHwmflOdICrmNvxvbNdSHQEx2fHSd9QRImNuxHRuTgd1AsTilWvXqyNEx2AxG0xppo6A6C28zODTy/8w97jEuTW9ZqkjIHJj2prupcViug2dx6ojIFJbJjX5vjpDxAzeyjrn3P/9N0vz7Jp12Vp1hMgZLaY7Y1xHdQREYtua761QZ4iB1WI6N/r8k9UR4N3WOTeFUEvLxXSNR/ZXR4BnezotVUeIieFiOvd0Vmt1BHj2uskl619nupjODR3YXB0Bfu2efUMIo6bxYjo3og/LDaw5kHeL+W6aL6ZzT1x8hjoCfNv6hvEHmQEU07ln++xroc4Az/aMvv6gOkOEgiimcy1y6qojwLs3r7d7R2txSV4hPq6qTgD/ei5519xG/88FUcw2+atPUmdAFLL25agjRMT+rezpw7vVVmdAdHaeb+/9CM5+MZuOZc2sdb3eVCeIgO1iPt6jrToCovfaAHUC/ywXc2LvE9QREIus2eoE3tkt5nNXqRMgLqvOVCfwztwpeZ/puLibOgJiU6tBtjqCb0afA73dVZ0AcequDuCdyeeY7XbQy7DYu/GzWMzx86qrIyBe9k54MljM5weqEyBu+9UBvLNXzDY/VidA7N5XB/DOXjGnqgMgfvbOXTNXzOEsjA2QvckfcwsM9lVSJ0D8lp2lTuCbuRHT3F8aFEMVdQDvzBUTIUqpA3hnrpgV1QEgYO83prliLlMHgADPMRPveHUACNibWTBXTKOr8lEkipl4h9QBAA8oJgxgxEw8cxeEIJn7Htv724n0eI6ZeJbfZ4FjoZiJx1LZENm7TzJXTISIBQaJZ++mBunZm4unmDCAERNIoAPqAN6ZKyYjZojsTfmZKyZCZO8lNRQTBhxWB/COYsIAe9vjKSYM2KQO4B3FhAGcKwskELeyiWdv1STSq6oO4B3FhAEF6gDemSsmQsRr+BLP3hMtpGfvhajmismtbIj2qAN4Z66YCJG9P8cUE0ggigkkEMUEEohiAglkrphslA4Rkz9AAlFMIIE4jCvxuJUNEWf+AAlkbyEmxYQBbPtKPG5lQ8S5skACsYg98cxdEILE9xgG7FYH8M5cMfmNGSIO4wISiMclQALZu0+imMh82y5QJ/COYiLz5W9XJ/COYiLjHfqxOoF/FBMZb/RydQL/zBXT3vwc0sj+kTpBBMwV096qSRTthYHqBFGooA4AlMWWl69TR4iEuRHzfXUAxGlKS5u9tHdYSv216gSIz+SL1Amicpw6gG+7WrVSR0BMCv7+A3WEyJgbMZ17u6s6AWIx7rsH1RGiY7CYjce3UUdA9Oa+/Qt1hCgZLKZrN7qlOgIitnucwdU+X2axmK7WdJpp21tXrVZHiJjJYjr39KWnqCMgMrv7z1RHiJzRYrrT32ysjoBoHD5nqTpCDMwtMPjM2iZj1REQjfLV1QniYLWYzl1x5gp1BETincPbe6gzRM7qraxzzrl/dGmgjoCIvHKxOkG0TBfTucF9u6gjICLv3DRbHSFCxovp3KPtO5yozoBoFFw5Qx0hMuaL6dxtjUwvEQnanGvnqSNEJIBiupPeZI2eVQdfu0QdIRp2Z2U/V23ETHppVoWLC2zuJrI+YraYVk8dARFru1CdIAK2R8zsXcvopXkLnlQniIDlEXPUgNrqCIjFWcvUCbyzW8y/XhrE0i045z6wtzDa3NEin2k6t2cldQbEpUbNV9URfDN6fGV+U3UCxMneaTImJ3/abaCXYamrDuCdxRFz8gB1AsTM3s8WgyPmaHoZnC3qAN7ZK+aoK9QJEDuKmXzfVgdA/I5XB/DOXDFHVlMnQPzs7ewzV8ze6gCAB+aKae+mBukdUgfwzlwxa6gDQKCqOoB35opp+D0zOKaUOoB35oq5Rh0AAofVAbwzV0x+Y4bI3NfY3hVVVAeAgL3/dXPFtLqPDUWxt63YXDErqwMAHpgrpr2/nUiPyZ/E43FJiOz9OTZXTHtrQBAic8W0uPMb4TFXTISIlT+Jx60sLDBXTHt/O5Gevf91c8U0d0EIkrnvsb2/nQiRuWIiRPZmFswV09wFoRjs7SniewwDDqgDeGeumPzGDNF+dQDvKCYMMPc1NnhFCJC9hZjmismIGaLd6gDemSsmQlRTHcA7igkDmJUFEohZWSCB7M0sUEwYwKwskEDV1QG8M1dMe8cyIT0elyQexQwRxQQSqK46gHfmimnv6F+kt1MdwDtzxUSI7H2NzV0RvzFDxNu+gARigQGQQPZmFigmDLD3VlSKCQPsveONYsIAigkk0AnqAN5RTBiwVx3AO4oJA1grm3j2nmghvWrqAN6ZKyZCNFsdwDtzxWTEDNC2O9QJvKOYyHwbNqkTeGeumPaeaCGdPd9SJ/DPXDErqQMgdmPy1Qn8M1dMeyeMIo3RP1UniIC5Yn6qDoCY/e1KdYIomCtmFXUAxGrt4B+qI0TC3Em5089UJ0CMpl69Vh0hGuZO4jh5izoBYnPgX/3UEaJibofp3vod1REQk/devVwdITLmRkznZnRTJ0AcFs24Xh0hQgaLWetfZ6kjIHKH3vyu6R8t5mZlndvWI1cdAVHLvb2v6V5aHDGdc3k91QkQpcWjhqojRM1mMd2YfrXVERCVWTN+ae+4yq8yWkxXL5vJWZu2PH2nOkIcrBbTuee/UUcdAd7Nm3GXvRcIFcZuMV3tF3urI8Cvxdl3h7Lf1twCg//Y83yFqvXUIeDP0tH/9YY6Q2wMj5jOOTeoc391BPjx9txbDqkzxMh4MZ0b2YFZoMy3b9bU+9UZ4mW+mM49eMk56ggom5nT7lJHiFsAxXRuSDcWHGSuzbM2XqPOEL8giuncDd9uf7I6A0pj/axrbK+9O4ZAiulcnXsubKLOgJJaNeXezeoMGsEU07kTfnITpxtklOX/eORjdQaVgIrpXLVBndmrmSn25Y0boc4gFFQxnXMP96CamWD/y7faO129JEIrpnOthmados6AouVPGBroT8svhFdM5xoM7tFInQHHtuIfg+29iLakQiymc+7RPm3VEVCoj6Z9EMS2rnQCLaZz5ww/Tx0BX7Mu95at6gzJEGwxnWt6Z1+ebCbKstfv267OkBQBF9M5N6RTH4OnkWWoxa/ft0udITnCLqZzrYc1Z89mAuyaOeZpdYZECb2YztV9KKulOkPolk6/6yN1hoShmM65kX2b8DnozHrnvm3qDInDF9I551yLQVkN1BnCtHHxlIfUGZKIYn6m9gOdstQZwlMw75Y16gzJRDH/4+/12U8dq7zZj6xXZ0gqivllTe/uwguJYrJudc696gwJRjG/YnD3TtXUGQKwaebPGSyLQjG/5szHO3IMSbSW5z2wTp0h4ShmIeoP7thKncGwVf9/P49H0qGYhRvdrD2L9aKwedbS29UZMgHFPJbGg5p2VmcwZ/2iW5arM2QGinlsVf/Yizlan1Ys+PVqdYZMQTGL1OqF009VZzDi0/x5P1BnyCAUM40z/9CUNyyU3fy9V69QZ8goFDOtcqPq9aioDpHZ8sferY6QaShmcTT+33M4I6i09q5492fqDJmHYhbTn3o2qqHOkIl259zChE8pUMxia/9kIyaCSmjRjN+FfW5zqVHMEqg3uH0bdYYMsmpF7lB1hoxFMUtmZHcW6xXPhzN+tVadIYNRzJJqc+/ACuoMyTd95iDWw5YFxSy55r/u3KSqOkSS5c9cxHEhZUQxS6XZH7swEXQMq2f8nPNhy4xillKdh3rwGtxCzBn/52BfNusTxSy9x9t15tfmUVavf+s36gxGUMyyaPFgi7PVGZIjf/FNzMP6QjHL6OE27fi16Zxz7y24NfSXzfpEMcus1XOtK6kzqH20avID6gy2UEwPTv996w7qDEqbZ91YoM5gDcX0Y2TzYE+9nP/qsA3qDPZQTF9Ov2NAM3WG+G16P+e36gwmUUx/jn+oS3d1hni9P/N2zoeNBsX0qu3jzU9RZ4jNW7MGb1VnMItietb4t30aHqcOEYONy6cxDxshiulfq0da11VniNjGtVeuVGewjWJGocE9PZurM0Ro/cQhH6gzWEcxI/L3ej1sLqTd8vGkhzaqQ9hHMSOTdfNFtdQZvFu94uecrRUHihmhuve1b11ZHcKn/FF/YS1BPChmtLoMb3qSOoMvKybfu1OdIRgUM2qNHmzfQp3Bgx2TlgxWZwgJxYzBC10bZPj+k+VzbmPCJ1YUMxZNH+jRUJ2h9Ca/86cd6gyhoZgxqX7ngLYZ+Y7qzfNfHqHOECCKGZ8mD/Sur85QUjPfuX+7OkOQKGac6t7drb06Q0m8uHDIQXWGQFHMmN35vYY11RmKp2Dh+GfUGYDY1H96Syr5Vj4Xzv61JGLEFDj1gZZZyX7Hwor8a9erMwDxa523TT0mHtuix2qrP5/gMWKqnHpnv0S+bHPD+pzb1RlAMYWqPXp2u6Qdrbd25bWr1BngKKZYnd90PFed4UtmLLiHU3wA55y7a/5e9W/Kzyz/g/qzwBcYMfUaDummX0i7efE7HBALHOWUhxdpB8uNMyxsTQO8e2zxQVktt0xoor58IKlaTlovqeV7f2CND1CEGk/k7Yy7liseUV81kHwtXtodYyt35nBcCFAsDZ5YEFMtN7x0hvpigQwybFUMtfxwwmnq6wQyzDmTP462lhufyZBdoUCiNBizI7parnmihvr6gAxVd8KHhyOpZf7zZs6gBhQ6zvFfyy3Pnay+LCDTNRm3zmstlz90ovqSAAuavORvQVD+oGSfaAJkktxlXmpZ8CS1BHxqPn1rWWv58i9tvkgXUDpt+JIytHJv9k/VFwDYVHnYmlLWcu3DF6rDA3aV/312KWo550Z1bsC622aWbEHQjvH/o44MhKDq/ZM3FLOVn864p7I6LhCMmn+Zuy99LWf/6TZ1UJQap+RlplNu7dK+iP0hK3N2rnssvjTwjmJmrGo3dK7R9qSKX/3n7UuXbcl5VREIHlHMzFbnugptypevUq6ccx822H/g8Mp9g/aqMwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzl34W1ma6adlR1AAAAAElFTkSuQmCC\"\n            ></image>\n          </g>\n        </g>\n      </mask>\n      <image\n        width=\"920\"\n        height=\"512\"\n        x=\"0\"\n        y=\"0\"\n        preserveAspectRatio=\"xMidYMid meet\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA5gAAAIACAIAAABo6FRwAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdZ5idV3Uv8LV2e8tpUyWNuqtsYxscnFATAoEk9ybhApdmWhwIJaYaG9MhYGMwYBvbVId6aTE1kHvT7k2hmGoDBhvcZavMaDT1zDnnLbut+2GMIHlsIgXJI43W79NoHumctY9m9vmf9117bwDGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhj793ClC2CMsVXr5quuyoWr77xL3bW9uvFnoixcMfgPf8eE6ESUWWo7nfTEbXD8CXHj1ihSV+EDX/UXK1I2Y4wdKTjIMsbYQTN9+SfKH/yz37vb3vZj6Fvacqx8znPHVLHzg58ZV7h49/Z7/Vdjtb29BRPjW+qsnTz5v9HQmsGCkJ/+oJiblqc8QG7eok59wNaXn3c/j4Uxxg5/HGQZY+zXsvvSK+of/oj27K5u+QmuXTv6zHMXPvy6sNhDneJ0zw01RO1hfQcRlczu9RECClHVSkuy1i90gSgKFLWPrpSn/0b6tKcufOpjcWo233a6Wb9ZP/DUzee/4n4eI2OMHZ44yDLG2AG764p3uB/daKen489uVqNj7bPO7n3s42LPXT1ZOaLRieMkqq4th7LWwFdZFNIIFaCM1b0+WglhKGuUtpaA0XlAFEp66xIwri4GbmlQDUytOltOy5799OJTn6hmZ/RJJ8PERPOBp285//z7eeyMMXb44CDLGGP7hYi63/tW75vfXvrKV6k3aJ79lPLj1/Rmd7etDS6aTZsGMbQlqVhFrXp1PSSyroJGCWVDicKSUZLufcqVKLqhzkFowkJHFWMKYBO5ZMxQ1yU+2oxctGKuT/3gUKOAYv2mtc95VvnFv4Z2M26YSB78wONe/Jr7+QVhjLEVx0GWMcZ+lZtnZvQNN9Tf/V4+PbXliit3vu/Sqbdc2grBB8zX5JA1qYrSYJnYhkRaCj7JgojoYy1CDqKQ3vgQDKKPivS9PoUP1YhqdIOrUYzLRreubaZUr/bNInNGkXYSIUbtfJBYZFoPrDJYT09nTvY2bmy94Nnus59X2bCe2JCd/jtrzn/e/fwSMcbYSuEgyxhj94KIlr79jf43v9274za46O35Jz+55x3vatJgQcCakYlEKhI+SiqwJvDSodSNqvZGCw0hQhKcz5LU2xoASGAACgQa1b0+V0wE9StKjAfMSTqINcSWVMHXSBJIOEGEXmBExCgkAbaFWVjq2VS2QMD0fGVLs2V85Jmvn//CB6ndDBPr04eccfw53HXAGFvlOMgyxti/s+ddby++/l2zeeOG9161+7KL9779qsx3SRq1cUIChFiKZhIKW0jZrpWVwgtok8JBOWhKn6h8vnIaTJYOqlJnqS1rLVWOxlvnjb3XZ0Qk6QCMikLCoJZaeAOy8kHqSAgAESMIAhDSi8SrKENJtdIiFQIi9a1P0ka0sT93czu0u2MbOy99bv0v1wYh80f85vEvf/X9+/oxxtj9h4MsY4wBANx9xRuXrv1BmJ4Og3LD0541+7arlC4XsW5vWq+8XOnq9ouPqHNd9xZhsj9odEYv+Iv6k5/FRkeNjuNjH3PCOeesdIGMMXaQcZBljB3VJt/97uJHP/LTk7FYaDz1j3e968O6WOgnceumbaFbd/JsSg+y+sgIstFHgQDKZyEOJmdqoz2a1iDi2y/0n/pI0mzL9VsaZ5459pKXrHSljDF2cHCQZYwdje6+8uLBD35I09PQK4af8PTZT3wCpu8SAtKR4Wokk/0693JgZKhCm9La+JWud7/YPOb9GFFErbGsRHQhgagg7tojHMT129a86EUL//r/AsnOwx458apzV7pexhj7dXGQZYwdRYho8eqrixt+MrjhuuRpj9/74Y+lc7OEkHfGUGV1rDLKA0mdin69GExISOVkSnIrXfh+WYSlEZ8qmXUJU2VyKyLGHtigwmjIgut3Z3dWurPpla9Z/NKnQqst122EBz/05Je/eKULZ4yx/yIOsoyxo8KeS6/sfu2b6ea1m6+68u4zz+zetl03dLK+E5yVUZBObIwZYa08BmsolSKvvKPEW9dLsLXS5e+XBAwABBGWqNJpIkqXkghSeiCAElB6my3tnWti5clmazbA818Rr/mszNthYkI96JRt5/EpuIyxIwwHWcbYanbz+99G3/+RnNyLi0Xrqc/eceElDb1QrFvXxEQoqTylLiyZaHVoFXVfq7zRcAs9nxorRbsGV5X5cG7rlR7G/iGrg4oGA9QDyFVw3mDipdZVrPImOaf8UpbnfhGyLO9ldW/XXe26OdhwTHL2k8O3voaozEPOOO5Vb1zpcTDG2P7iIMsYW50mL/vL/te+H0WExz0yfuATzd2zM9F2tmyKQHmm3GKhTdaPIQqpJJZlmTczY8MiiXWx6XxR6KKpoE6yPb3BqDYrPZr9ogM6LRSAC740qKMyQfSRlK9SDbaqm9lQWRUxC1GG0Hc5KqnAYSgnuyJd23jpc+2XvlwOj4VNG6qHPPq3n/uclR4QY4z9JzjIMsZWle1XXha+9p16dpLK3sjTn7jnwg9k1PcnrU1KLRz6htLFwEaMuRK1N1IUisDGUZFXdS202pvWw548oFVJMsBIvpHomsJKD2u/OBW8DXmQSupSQ14FQ2ExJx1UrHyS5X1XCimF0DIKQbFSkQibNSml5t1ALQ6grMLWkcWXvaX1d3+jPYmHPvjk17xhpYfFGGP3iYMsY2w1mJycHHzqM/GWm+hnNyZPP8u+9T0LakaadqPRSJIkUIwxCiEQMYQghFjpeg9r9a7tYNapl78Avvo3WT5kxteb3zhjjHc5YIwdfjjIMsaOYLfddhve+bPwvevi9K7O6y6a+cM/1tO3KevLY9aMOOx5obUWQvgYiEhKiYgxxpWu+nDXFLj7ztvNcFM7kTc3NP/8uTN/cw2dfHyy7Xj11Cdt2XL6ShfIGGP34CDLGDsi3XblJfH714dWS5/7GvnPXyr+8rKensutaW891nWXBlnSphZRAQARKMaIiMsXYolopWs/3PWA1qDpU9X1/fW6ubh7biDF6KaNyRc+6S+8DPfMmEc/fON5r1/pMhljjIMsY+yIsrO7s//hT8Vbb4Ibf2qe9jT//qsHc7sSH8fHNi80kirasRrrdoqDmrQIFJdj63JTAREt/xGRp75fBQMopVDLQV0mUgjnoqSSrJkJtGSbbz1v8ctf1K1OMrHZPPi31r+Yt6FljK0Yns0ZY0eGO658XfzadbBuXXrx26Yf9od68Y5GMOnajbUATWlwWCTUjr4QhfBRCNUXLg0aAPZdi+Wmgv2kEOaoNkSjTqJOuwQgjSId/UKZ6Hp+VhaLQ+uPbzz/JcX//bvmCQ/Lz3hIa+Kx+Gh+Q2GM3d943mGMHdb2XvY+d/0P6+ldtpjRT/8Df+GHAlYuJmZiQ2qtlTGIpMpkWs1ASrpryrzdROjX/WHZqOQvjpZdvhwrABExAncX/Co2Bo3SqKQCcMGmwaVIlXCdcrhv+hXZRDQx0YOb71RJs/P6s9ef8Y6pT70Syrl4xmkbX/WqlS6fMXYU4SDLGDsc7dx5E95ya/md6+GHN3Ue8dji6o915+9QMkBrVOnMqzqXNABsUzpwZVOVi77VTscg9lx/PnTaVYzgigzzfR0FyykWABCReOb7lQyIEFxF1hkwOgUQ5EgFELHvs4YZBEBbpipApmpSk7MDM9gwss392TMG137dn36a/q3fsFtPOvXUU1d6HIyx1Y+nc8bY4WXqqlfNfv1H+fA688bXiL/937vefHkz1rR1iDAmZeYzjD60oho4lypRYC2lVDYPxqm66guZt9qh22uhKhTEGPYt8ELE5SAbQkDJ22/9KiVSHgUiIgFa7yV6JfMgZtLYrHyKKsZoKUCCiEQBnHAyMXTL3hLTNRe+tPeoJ4j3Xab9Un7ipg2vunylR8MYW804yDLGDgt3v//9/rvfg6m7fTHfftrv3/K2j5+yBDOpo81jhtCA6EFM4OAE0OXFXkT37GYg8Z4OWgU4n1Rrq+FZmFFG5nHMhr2Qgq4zAAFSliFKraKthSQpEf3KBOIAhJH2VR4oAgAJlLHWKlt0YQhVoXzDukIRAEhKDmk9jSDnhIVUDtUIO+YXygoeesrYHz2s+PaN/qRT4YzfHBxz4plnnnlIa2CMHZ04yDLGVtjOS99Zfv2bQqH+vT+or3qfmP3ZbL4+kWJ47ejUYK6hTMdLQaIvgjxIU9byBdrlrgMAQLqng3YpVWNLVUxzqe0iVhO90dkU0Q2MbhBE50opKFVSogi1jz64TB2Ueg64foEYf9HmS0QkEBE1QuGtipAl+R4KwsOoSmL0kdwhrSdG0lIG8lVwqI1WhopQLvQzmm2e++rpx/xx9oH3qW4v+52Hb37ZKw9pJYyxow0HWcbYyph57zv71/+EJifdUj9/8v9cuOgdeVKVmydM3cy7Az+WLcTKRGqbtHTW+ZjpJAT/nz/uflg+5UsIsZxf8eeZMKNq4HMlQAiIEQauHsqbgL1uFKiippj7SBGXAK0yuW4IWx6Uen5Nyyk2EgVvRa6VDVkU1kcjNBIsgZNSHtICvBTCeQlEWgaJ4CitqWHFVDHtAJsRakiHX3/+4JovN447UZ98yronPx5POOGQlsQYO0pwkGWM3a+2b98ePvN5f9uNcNtPR8966p6/+my2c3tpMB/f2PVgmtrYQkvlBflB2QHpkLqpAKV04eRB6m1dviILPz8cYXkrAwBIYrlnbgCRWms2FB2bVbEs8o6ZqynJg0AJc7FK0zQtSZFaomDUykyh+47bJaKIcM8XMQrUOsrS1S0palkpoCWMRjeVO9T7jiEAIUQVQETyQNHokCrsLzqhDKaioLJcMF1bnPigB/31X915ydvs7Ix61ENPOPeNh7gwxtgqx0GWMXY/mXz3O+w3v+XWjKjXvtn+8dPqmRscCrtpYghaZuAGaWgZLRYGvpn5onIK0zyRLrrKkZZSm1BblAdzytp3OIIADCGEEOgvzjnlxefd8YE3Vh/9hL69T9hvnnBsv9C5NBV5RyABlRJFLFD4hhbereSisX2tEfDzft+EGlHGKoV0sSo62XAJ3oC11cF93e6lkkgKBVFwMZCWqJX3vqqq8WztYlxYG0VtVb8hsS5yKaem5poekze+Inz2y7o9QuvXp2eeufFlLzukFTLGVisOsoyxQ2vqPW91P7ip3LM79vudJz29/45LC7OQxsSuWT9aN7tYqCZiqGKwIgiSpkY1nObdoi+kpBhznXjnQghJktiD1FrwyxARIjnnrLXZPGy44cZ0UwegnN9d0ec/Pn3hq32nKXplOjGmdJZ67ZynZuptbSpnU33Q69nPmvdF2OW9BQSiEKLnllQOuQ+DuxftscfLXlRUimZAd2gXe0WBFKMEBAkRKIRgUKbazNRFmg2r7sC1XXT1qE2XBKKJAhvFHXcOgexNbBx60QsH//rPMWLzIQ/f9LoLDmmdjLHVh4MsY+xQ2Xn52wdf/44g1/rdhxYf/tzs7K0pAIxvaofmkvQNRVFLFWK1tNhotGwdjNalrykR1sdEKgPCl7VIjZeRQjQgwiGYspaDbAjBe98tFseG1x73vR9EnWtRg0v6Ghbe/d7qMx8Ik3sd1W4sbw611byNoOpOw1T1Qa9nfwghQgjLXyBB8F4EklJWc7sGDlPRFOtGhwCrHKC7lKS6oEMbuCPGKCQASB9VBAHoBdQUEl1WVZrrdtcuJR1jSFWDUosgXKV1Z0BBK6p27XayvfZl53X/9vPQaqt1GxunnbqJT1VgjO0fDrKMsYPslve82/3kJzi5W/SWmv/ziXsvukKFLpywpeUSqKqiSalzQQldU4EuhzRoU/mQEJahzpoNtVQpKUqDHigBEUKwMiohTR3CwV60tG/7reWFXyoulHti58br141ttOiNVbWJCZRL0KhuuxH+/p9uu/SK8e6ClbF93NbF0mWH+Jb9fRFCeO+Xj96NzleDwpe1QJTr1k884/ljLzunmwwmz3hMUu/CRqfrWw3qHdJ6MgIbQ0ABWhJg9AGJlJAUQAlXYcxi4kMgrJreLDaamYDu0nyz06y8Q+s7aOZnphx52njKmrOeNrj2W7WUncc8bOuLzzukZTPGVgEOsoyxg4OIFr/77aVrv1Z882viUY8tPvuZ/I7ba6lo06bMVStd3X4RmCzsvqWx5pSTbvx28CXKIQkeogIEInDSG6ju/uBHZj/wkc7MzkFYTNcdI8EsmDixFMqmBh+890qBxBTJuBAjOCGsVOSiCCpJPUSgOnitdQhBKUXOKyG1hUEDssIqaZbIaxSkUFOIzlcGKaIJQkSSUiJiALKJMQsDu7QQjAvW5etOGHrOn42+5PmLST4CEgCmJncsnv5bauOwisFGEurQ7lpwsKBwuL07KbLNF55b/PVfY9aWazeaB/3G1vNevtKlMcYOUxxkGWO/rhs/dFG87obm8LpjLrny7isv23XxGzaWZaFbcv1WCaFl+900W+ka9wtGZ72k+cWRc8/vvPqVuVWlAQVBeOtVkpCApQgtUQifL3YnP/qV4uILKSyWuW+sWSe88RQpM76OQdZJpMSowjolEx11tC5CAA0gkIik0d57hcJ7LwCtqWNNElWEECU1TB4HEMjI3IZBJY12ijQKql3wtje/iMGPCDPYsE7+6XNOecnrgSBGsNqnpMB6iPLWq9/l3/6e9nhrT+4nqrTAsNIv7X7pexrT6dyeXUJ6EQnHtjbP/nN77TcFYf6Ix6w//0UrXSBj7LDDQZYx9l80OXlL9b++4G79qb31Znz2E/2HPmnunBwIueHEbd3eYmoQ0A5cpVs5Do6MK4JC+ghGBel37z5uel7AAKhRSicANJEAQwgWIFrKNHoPUfudMzfTQ5+9VN6qUODohobKrV00Xth20g92mLSybhCdznL0FCEKIShERAwhSCkDRUT0IESgJNXeOwqRlIgxKgQq1YhJF0VZghWTcxBgkOuRdWv0c87e8vznVdlI6gAIrIk1hFbULrhKYwbw041bYLyJVAWpx50pxKHefuvgQFlBJAokSCiZBxf6C10MYeyCi7pf+Jhot+W69eqBp289j1sOGGP34CDLGDswN954o77rDrruOti7o/2G13Uf9/Rq781S60577eJIBT3VkSN1UVAe0YCvoo4pSLvSVe+XioKJtqLE7r7zxL+8In/5ixFAeagVJAQxuiCJXG2EAgkDENopgxIAal9MXv1e/9a3C6gLkWcbOxIw1EGaxBPIxMTgonWktECEEJfPEkMpIkIkygLVEGJAJVOlkjJYEmHMx/lM9O68OzMCLaUbjlPPfcamc84R2LQEUoOPQNGlKkbnUKcVqAwiODF11XsW3/4G3LQ+k+gLMZA+E0fGB4lc6Nl6MW03qQJRyyxLKHTnp7Z7J1LdNBPHJs95ZvGlzyUnb4OTT2o/50nj4yetdMmMsRXGQZYxtr92zPwgfvRLVVH7p/xp42v/VF70jm7cuwGGB+s2dPpUDMlQQ66p393bWjO64EKIKiWdBrSiWOna94uIspJBJpWBjQu33vDA+Z4i76NSCCQAABAiAAQQtXWZ0rWA1ANIDwgDUMLBXO+m8IgnFf2peecnNh0/6LskyyzW6KsGhQINIgpEQSCECECRKISgQqoNDDKnekUrpoTQ2zvTVzaNYEY2t170vPUve3GETHoABeAdBF2pMsqYgUGvAQEQwBcEWJjstvaa+th8o5U2M6pOi8wJd/C3LTskopBeKqkHOAhZcHXdoEbmcpcuAUC1fXfdUZ2+7G08ccP/++TCmy+JM4vJbz/umJeds9J1M8ZWDAdZxth/gogWvvOt+uvf6t15U3rRy/wjn724sF1YmW/ZYBPRXCr6DbQyaSzERsMNfNDZUK9fNXSiMYZQRrRRNFZ6EPvFBNWnOoqiGcfc5GTy6leMvfr1EnxqFWiwCMHZTBpY7jgVUEjQoRIgpdBQA6UevaoV6BJmPvKhPVdeuKZYWvJajW9ywieZDbWMMZJAIhJiuX9AAIAxwfVgIdONqWmw867VSBrHtZ/3nIlzXwFBkITah1TIQlQAmMdoRaKCEA5AgSMnNATnjMhB+ukddy0+4rfcmolRgj2+bsUcqY76yJjqK3JNmTrnSxFajSYtFZowCtGHJsqyjXXZ62atzvzUfPRWGmy/9pLqsx+XzRG9cYs544EbONEydvQ5MmY3xtiKuOuKS+sffD8dH9v8rqvufM+745su62UDDSI/dpwWXMgyQoh12VGmFFF6LLQA9EjOkEIrnQ+UAeYoCrXSQ9kvjmI7khXJkp8xiy0FCyfuvhsqBSaNAEIAQAwQC/ASMANChwOdJAAqgJeg+hGawoHVkSAmtYLZXXfhNdd0L3nPsK/vTOr1Y5sCRdQqAiFiXVaJVErIXXfsHJ3IYGFOjx0vX3be1nNeCA7A1BCTAGARMgCoCRSSAgCwwSdSAUTvPSqzbyWXivHmMx5W7L5hZMtxYanGLIM0hLIWcmUObjhQPuhU1VLYwtsQU4GJyvQglJuDud0N1poOeDsQJSokwnYBCzN3gc+TY05rPvc51b/8k3nw6clDHoxnbOOWA8aOHhxkGWP/0c6dO+mnN1Xf+0748Q3ZIx+59JH34667hOmodRsq6Rq+DC6NDakGFUgFWneDa4OgEFSMYJIqRqFRgKcQEYx3Qqsj49Z2KauRyuzNcdxDv+5R2hE+3fbjH1pwCUjwAFKEAHL5YFoEArAYEm+DAgtGg1QxehFVVD0oEkEGsgoEUtjzgavsBz9YTu8FJbNOC40iot78ovBRAebrT8q++p6JDWeCg76ApoRFcENRBwEC7lmnFQEkCQDwCIq8ReGia0ACAE4EhKgoBkxum0j0mmPq1DbLTlc67ee0akY6MnpkhahLK4RINSpNDjBYCoDSxbqlkjlr06ypatSepIjdLGTOkHZl6OGOeSmHR1/1CvFnj1+6+EqY7cnfetjWl/IFWsZWPw6yjLFfuOGSi/Q3r5Pr1uRvemP84udmLn6bThOdp9JokAIjAYAAjEArXekhIdEFL0uFo07MtynvYm/Sjt1xzZqRM40FiACpA6eDjhJcpEQc6Azq4g1/daV56+WV2DM+EGH9KXjtpzc3ToIDPkHWQ1RWgIYKKS0gKuzLuj31gfN3XnrNaenQTGKrBBLC6AkDHCmtBQdMimAdIhqlbV0XvT4iNvOmfvErq3/7eyQ0j3z4Ma98zUpXyRg7hFbp7MYYOxB7997Y/9QX409vLn52Cz3+SfklH/TKRQvJRAulICkIIQDtC7K0SmcOK72qhcwyVw5KbZsmb86p2Xb7lGu/BlksIWlFKEXhIW85IF3jASZQH0oF2hLtmp0/du1aj1AC5AAHfL00WABjBRjnQakgwIZehukPjj1RN5JUo6/rpJVV0aOHXCXWHxm7RhyoiAAhCiEkihhj8B4RjTELk7dp6jRfc37xxWtEu4FrJlqnnLnh1a9e6XoZYwffKn07Yoztn52XX158/d9g3fDwW86f/sNnqu23VJ3EjY2tr7LZJHYiEEAE8hSJCAAk4Cq+IiuQKhebMnXCq1BbV6adEf+jqS07f1iMjSA2lltjwQrSALiE0D6wJ4gQIZIA6V1QEkDISpAGPNAkG/0AVYIUAU0gV4HOcPfll8TXXFKesaFHdtyLmsIAvCFlQBKuzv+vZYhIRIgoAAGAiNCjS9N42/bYcdW6tRNPfuHge9/2SMkjzjzu3DeudL2MsYOJgyxjR6O7Lv9Q+cPrac+u2J/vPOVpsxe9xWpAa8eP2ZKU4Cn2miIJ3jsAABIIAIgIAIIACVbrFVnhbZkkrQqtJi0gtXY2ib1uf0hvOvkn3wflISSFAI2hBJnXSyo5wCDroKuhXddoZIVkqiCSNESS8sBeUKKAJHvCa1CpB5BABD8+/aS1Ws/ESkAc0fnioGeyVJCgCAGPjAMR/guWU2yMERGXdzQLISTYAOj3dUgrbZR2c/NFUO0LXug+9yVqdOTaY9QDzzz2ghevdO2MsYNglb4dMcbuw+2XX+iuvRZJpI/8HwsfvVrvvatA1xkfDSoHEGnRt03fItwbpHZNZX5xSxoRBQERQSQ44ObQI4NXwZNoVtKlcgn9SEDwoR+smJ5LLnrH+ued3fAJJBKC80YqEgc6g9bBo1SGADyQAkAIMThBGRzgrg4UACSAg0L6hlAV7KqnFred4I7ZmA+8FtLHIAKZLB04l0nt4pFxRO2BWr5LsPwRKyLs+9qpykBHlKE2AyNQLqnF+V4b4kBOm/HTkue8KFz7D42HP6L527/detjDl/8JY+wIxb/AjB0Vdl38rvqmH/upyVD2zFP/pHznOzH20/GNkjpzBoykViDjQp3oBRcTDw0VBdZOpEQUgMRqvjX9CySCJBE9SZV4FIOiN5K3cilLX1d3T584OzsQgFDmlAENrGiYA30CD+AqyGSASEAIUkRCMCAO8HFiHAhseAIhQIAHf/flV1QXv15u2NQAVcjogZpBFBQrQXlAIQ70CY4My5djYV+WjZEECiFqCklZCZ2DaKiyEkm5lEb0qfJIqtC7pro2W/vmN6w/9/wd57+imp1rn37axHncQcvYEYmDLGOr2XV0Xfref4w33pr84LbGE5+49PlPue07tE5gYg1qmZc9otDLjaE6KbEnxQjmXVH4fSQAACAASURBVAiNIHxTld2uSe+JavviwnJiWP7j6hOdT/MkVNa50Gq0BnVljYh1XUmpZnd1Xv3WY885z2owJKAY+EbjgHfHdS5oLT1QBNQAAUgB0gHPxDVQ4qFWGMDntaSkuKVzSr5JCJHV0ZcYTZaCDzFGqRRFj3F1TvX7Lqbu+4Fc/kJbErIRjazsPORC6cQtFtLIvJfIvDVd9bJG9NO7ROmLY7dtfOYz5r7wOXnayXDSiWv+9KzR0RNWbDyMsQO3Omc3xtgt73t39fXvirWt+opzhk9+5dKem5LE4sRQEkyFAkGYOtimGfhinYulahIFrXAei7VgJqXLa5liQhT3hdcItCwiyFU6dTip6livCThQNBCh5RVANAIF6YHHsHfHtsldXnQScgGlwANusAgABbkctQzRSqEBcPkkhQN8nAoodQQkBmbQoMaOK6+efst5reM3e+sToRIbLdJAhWGZUr+wqYQDvuR7ZFg+IG35x1IASilp+chfrBclGUpbTgVnax1UlmNNvcxiWXSSFGoCr6wWQlC1a5cSeu/EhlP/5Svd177DTc+pR55x3KvevNKDY4ztl9X5bsTYUWv+jjuKz3yqvu3W8o5b9DOevnjRlWv7g+qE4SWBa6rUytW5DdN9iRgRkRCsj5lJQm1ToShECcLGYBWlWlFpQwiq2bBVncWk0j6IgBhqXw/JTNU4PTefoSsoHUuPiz/+6DGd44kUEvrolVqZE8sCgLQA2paoU3B3Dm3wx2dITY9kAhRkO16Ah6KdxMJhmoIrBaIEXA58y6/J8gKpFan/cCNkrADMHfNeN5NXP3fw5b9Tea43rVOnH3fMuRetdHWMsV+FZzHGVok7Lr3Efe27anxs5HWvnvuT/9ab2SsN5KMtkFJ4QJVXgCoeGSdsHSwkCHxQWtsQwYUclVPYA6e9jAZzIiLqJ5iSUDUMDAgfwIVcJcuX+vqTU8HZzrET6VNfNHLB2WnIC5nkQQBCZSuRmgNvbj04Sig0IEImI+yd2zl70qlhw0TTgUOdxrjUiE2KtR2QljkqX1Q2a4lfWqtHeE+XyGptETlQFdQJgHQe0mRmYcnM+Ma2E5NnPa78zvUklX70Q098/utXukbG2L3jIMvYke32K94dfnC9nNxNvYF4ylPLt15JxsO2VMzXCZiQZd6GhiedqEXltNMrXe/9SikVBpXW2hlhYxCRMFLayG05H4VwoA0lSd9S8NhOy1hmRqtBOdOfxaUAcnTtha8ZevE5ImoMwWrZsAAIXoMisAgqOCFX6PUM0cpoYgGh/ZMzT48zd6Zj65UZNrBH1WKP0S2XEGFBVjVUo7C1EgA/bwiJFIE4yP4y5ZTIdeVLJBcFmURVi72wVERK8re+wn38i+qkB5htp/jnPfkE7qBl7DDDQZaxI9LevXvrH3/ff+d6e/335e8+yn3k6nzHzso05DGbdK9bUJpleQgBbTCJrmNRub5WACJf6cLvVxRIGR29D7VNW5lDqisnfAyp6oDu+VoobEVZmuAxxO175oiGw+jYBS/FP3/m2uEN4MCnoKwfGNFwABqcc1olhDAAah7wwV4HTwQfoNTzdqq+68zfyH03bhwSVbKUmE6QPpEaRF5TRbbEmAWM4p61elJKWF7dT8R9BfukTvZUrIySpVsTTWXIJSgKq3yYnd0hUK4ZfUB17WfdGy6EmUX1yEec+Are4oCxwwVPZIwdYX56+dvS634MQyPNN79l6dPvDxd/2IcltXWDClSqsvQ2EW0dCYP3AmojEDG1qEmQVBDdSpd/v6JAZSokUavvcqlnotXthvYgSNt+TzT0ACwtDuR8WQHlJ2we/tv/s25ioyNBCOBISUThAQg9Fei8xDZIIFFjTCgBWrk1VM57rZSHJdXrT1WD339sMTXdgR5NrHNaYRS1C0NBFg2s7WBCmkWSRL/oKAC4Z+EeZ9lltRm0Kwlp3guxYTF4Crmk2tW5WluYKoXenbcA1mBGktdcQJ++RrVbYd06PPNBJ5z72pWunbGjHc9ijB0ZdszcHD/5hfrWm/2Pb8GnPGHoQ5+e272rqWS9eUJ7Qqy9SbzXIGnUDwYq1c6jCJUMjiCNJmLaB8rg6FrspVF1fZkalYKsIPSQRlWe7hksNlRTxvnZ3SJQWLNh6AXP2/riV0BIQMIAQiJQ2hqVBiEIBHkSEYMB6QEEULBBK+WhL10TV+aSrAUrwKgAgSoZU4DBwFRT7/9E88Of3LF7R1MIPd4AoyBApbRDGHK4nFwD3XMCFgBQiKv1YIsDlcpoB/WCiGm7nZYBBJUi5kKqStUmdsPSWmuqoaa9c9r2e2uzpBhbiy88m/7tXwERzzzzhDe8baVHwNjRi2cxxg53u654S/Gv3/frRpsXvjb8/tNnZm9vLmbx2DVKL1oaj35gtGiFvKgqQptL6ho0dSNAjGSVElqKYB36mJm0wKNrsRcSSAKQUERXC+o0hpb2LvjSGZy3dXPD6y5Y+9JzZMyBoJaQ+FAomQsYRJcIVIFAQgGYAxCpPoIGEADGQdQUAdWB7/96sASIvhaYlCZmhXBZ1IjgAiCBEr3t772y+6ZLkxFMB25x7cioGSrKntYaEAPF5XVsiMhBdp8+iFEwSDFKpEFhpCpFCBIxugrciMnnJQiHnuIoiUK5QUKNn+6A9rB44QvDV/9Rt8fEug3pg8+cOPcvVnoojB11eBZj7DA1OXlj9b++4m/9mbvl1s5T/2juTe9fysq1Q2tyqXzulqxLYFi6rkqTOpRFtEY30phYFwSSMyEjpUgWMYQQMqVAxT7VWUhXelj3qwCESA5J+JhOdtNa3NYRD7jgT+2TX75+3fogAACkBytdhdCEIEhBRJCyBpAAigAAAoIMLpCXUvsAoJQEcADGAazU2jkaAKSAuABiOPRBIsRGFLYE0agFaAEBburdgo96oZq8OeJ80RzN89wkSaAYYxRCCMAQAsrVub/sgco9FiJaTcH5LEnq4A1qE0WItgqE2rRLX8mYabUYAwiVUjRRTO2ezBOVeIjjmzoveGHvmk/Lk7akxx+Pz/2T9evPXOkxMXa04CDL2GFn+8UXu299GzcON950Qfdxz7V7b7RZq9FoJL8URBAxhLBajx69T5iBtahiiYVRQlZRm6GlgGlcghD7merIxBalk7Kp8hkIzVD5qVnpvE/z9vhx5h/fO7bugUlUq/R8AIgQBEkAIKCIKKMDF6/95GfHL7/YzMzO+4E7eeuaSmiAuldL0/LSluATqZIyzho/QfKOdr2+j0CKCEnIoKSnCCFIDKBR2ZXZN/dwg4jRB4GoUHjryv7AO4eI443N4htX99/5/tjtNU47fdMr37jSlTK2+nGQZexwsXfv9urTf+t++pPwkxv14/+kvPSy2K6T5rjA4dotaK2FED4GIpJSImKMcaVLvr+hrCwIFKkIFOoqS423TgtdK2iAqpx1ZUzbQ9J5f9d2lcdCiGTtsfDnz5o4++w0GwMEcOSME0EufxjY98j7zuBducEdBIHuOSaMAAJCcFUiJNTO5nkfqPe+D8bXvHZWdWXSFNuOaXbnB5iNQFrYMijXSBvJPC0JTIUapDIJJDFUMogYUw8iUIUUzSr9BHCgpAghSECJAoi894JASjm5uNhx3m0cH3/GM/tf/iKc9IDkhFP1Wc/atGnTSlfM2Kp1ZM/ajK0O05de1PvaN8TEePPCC7t/9ILy9m/nGt36DeS1TKx0C4AjABCBlk9jumexztG3CahzC5Q1yOs2JN7VLhGevHJA0cgkCXWZNkRv7265WMVjj2+f/YTNL7/IW+eNSoEIoIguEVo5Ai33PebqiLDLiAKChBg9QVSCAMiWqdYQFLiezTJBqti1d+H3/mRm9oep1DqI1saJQsoaBboQREyBYiJcRAzBRK9iJBRBaCsSDyKP9UoP8bAQBRIR/vzHBiMJIYQQ6EKPZMeJwdKuvugNrdmWfeUfqov+EudnOw99zPh5L1/pwhlbhVbD3M3YEWrhyg/2fnidndrhe3PDT3ri5FsvTlKXlNg/bkNOyWIK41ZipB4EHWk5b92zTIdoNcWv/SeFISGpcgkRiDgfKpk2pTQ59Hvb75QKos87r3tl8bxnndg6DjyQ8lZAEglChEh1kgoAHQB+nmP3fRhYHa/kvtYCICiDl1oBRCTQWAA1ASBiBRARcgtx6ooPFR+5LOzYTVrnW7c6ijJWhJCVclH5jjYRqEdOomgGBS7WUqA46m4C3KsAv9i5bPlHaPlX0ijIayzStEc04rX29czUztiCTa+4aP6az4oTT9bHn2TOesL6bdtWtHzGVpXVMHczdsTZefG7qu9/R0AYefQfTn7sQ37XLcLozvBEP0UzqG0umqjLpQKEjEoIrSBEANh3LfYobCpYFgUKG1GYSkcP5Zo0nb/tThnIUzN588ubzzx7vLVZGOgjZADGEchIQmKESoDxIATUwQ60GIoC4Bebqi5bBfuqBoiCEAEBwNbOpPcsRqsCCOlFVce0YQDA1xAloAIFPfSzV15WvvlNZOokdgZbNqGvOrJjrUMhQEtr6+ALbUAbjNwjuyz+/Gg0BABY/mzpYkhjmDMw4fS0cmuj6VcD08oLH6odO4xsZCMnNb768cVLLxJ7581jf+fYl/CpCowdBEf2rM3YkeWOq97hfvC9ODUNi0Xr8c9YfP97YrlnKRdrxrZIbzwJh6gEJYLq6HQURUPlnpKerbJ/dyuciAQgIkY4uroLlE9qLMA4Y904tW+crLac96r8z87qTAwvYWgAqSDACwhgczDgIzmBqhfqlkwBAIgAEAKAWp2BbPmnwVlrtLnnWzEG76U0XkEASMhbDAYEEC4htAtV5ZASBAsz/amZxz0xu/tG0ukCdsdH1qI0VQSTZKkQti7raIU6uk6Guy9IsO+AX0Rc3sWMiEQifbcMCDDcyAdWeXKIkQQKO2dEa2FpOiyMzKeNt7/eXvMls22bOOmE9FlnrVt3/EoPiLEjGAdZxu4Pt576m25pVmxca856Qvnh94apHgkaGhtymArIBMkBFdSgRtBLULSq4EAL3Sqdz6tCddAFua+jYDnFwvJ1oKPsN1iIwoFyMokAYTAYb+Yzk5Pt0WHnq8SsEc9+Si7Hl4JqP+sPwMuh9RtMBHBQCEo0ytL3s5gBSQghJP+h1fhIvxZ7Dx9ASQKgGJEAf76pBaHFqGuBBmAAsVlhmVIGwUOtygYkCMIBRbAJJXDnu9+Hn/3A4p13Zw2D69uDohyipNkanXJVIxyltwL+g+VfxuWG9V/+/qJyYz1Dw52FpZm0CSFYJbPcpRLqKTlYV6c+aCeFW5zPbAgb1gz9w1d7b73YzS2s/e1HjL7k/JUaDmNHtFUxdzN2uNr5nov73/6+mNrjb9+uRzaVu2/Reao6Y5p8MKIWBNHLCEpi9EGhEGB6ZDMllcCi7KdZo4oRIgqCfakLEZeD7FG4D6iogRpZVVUNoNTIxVB7lAK0TlS7W8525wqyaylZQt9PaW2P9qrYQRkFirVjrarRfeXTmnYICyWf8d/zPG82m1rfc/N9lcTZAECBlIwQl39cAkUpJAIEiNILQGElGAc9DS0HoAAg1ggEwgysyMlhRNAqKJLlLe99b/GWK7fWbuGE9nRwG22jNkfXgRr3JSLsW3b5yz3rxjsjVS94NEpHqRzVEK0RMqq8ii4nWRdlQ2WDWIPoL3QbdTGdtU577atmPvM5aHbUmnX6wadtOfeClR4fY0eSI3zWZuywRETzH/hg+eObez+6rvn0P9pz+QdG52d7mrITj1sqBy0QuGI76R9d7mu/zxgtAIjlu8OIMjVJmqosaTzzJT2Ast086TGPXjJ6dPOmCkgAJp5AYoWgvJdKYIQaAyAmQQEQCAKgSLh8BTQGQIJK2jyaJWnboMAJq50CIUD+ZyX/Ox76KuY+iqjARAgCJMUAIDAgSIJ71l754I0UABFJWQQJIAE8AIYgSS4/Z4wgBNQICGAIKAIKsFgbkBClE0gAxgNEIAM4gIEGb2KnXtjz/o/OXPP5pDujcghhZY7kvS8BAQGiC6lJXG0RUUhExHCEtNxY4dSuuUGwKm2Zzvr8Bc8YfOPbQQrzO6dve+mbV7o6xo4MHGQZO2iIqHv99cU3vmHvvn3L5e+9/YEPKrcv2oZVw9BK89SnZEWpYshRWLfSxR4d7mO/T6KAiEiwfIM4SkQpUAiY3dkr64AqzVtlWScoVQRwYW5IbMURm7VaLz1rrhvWmnVd0NkzHleinlgzhhA1RIRg3XJzqgCPVild1Kh11CgcggJAv3wJ9AAQAEEtIKEagi9UIwEQEUBEZ71RBjwBLD84BAQZay+EAnTWB5MKAPTgFOQAHqJyUOkIEFMvrAIJ5EEnizQYovnpO8Rn/t5nZQGL+up/rOPecrYrStJggpJ5ZyhppnVdoz687gAIgkgkpQSBniIgeu8RUR0hb22pw4VGbIQAAHWSxJvmbN5uvv5Z9On/nbZGk4kN+JsPWvfSl650mYwd1o6M33bGDnO3Xv7O8MPr8/Hxze++asfVV/fe9IbKzjRVBzYPBQg6ScteyEU7FD7PFFBZ8Rn394v72u/TxSABkQAAiChQjAiRKCEZKCqdVM4KISK53OgQnAOFSobgi+m5BgoclFKio1ilNg3SOFHVYvSkU+4UcMYznryTbPOs3xta95AUQFYQUpDR90k1hQM8wCvxvnYq0QGCdAReBe2lVzAoi1GTQUQgAAGRwOvlyZwkIEAEwHjPNwBqiBrMwl27+k0r/ubfWpNTohNnP/aVhV07YmPQrDHW5JXUOpGVB6PkeGshpQ6kLSejj5UkpxCAFBCEg/wf9OsKPgKBks5HKaWUMnivpIZ4uBV67xLTnBrMDuWZKAYAsaGzhd0zLpKUenxsK55z9tznPwEPOD456QHts564Zs2pK10vY4cjfjdl7Ney+x1vKb73TR+FfNTvuY/+lZra3ic5sv7EaEwRu80AMUaP5EgInaIUAJV1gwxaK134UeG+9vvc1wwrf75sLiIAgPSglIox3rNrryQfXYy+iUkScVFajFQb0XbYl9EbacpUJqZyFYpIzjdRz++aSlE5ObRl7/VN6BQArRBLcFImJjoQBxZkKyjTkPWhamKIqCImnkCg1yAieYHLURYiCcRkamq66Xt3f/H/Rre0BuP8p76c2cF0d9fxBe5Whciy2C3BGJIKhNTrx1VAF3CYdJRYAchAJKnUkSiMOTGIrh+9VCrTBrwnCtLo6A6zxV4ShJLOOSJCAoOanJconTwyWgu89UmWEhHaoJXqSnIxrA1mAaoAUU1O9pI62XLGhq98YuEv34l7FvF3f/OEl/Gxt4z9OxxkGfuv2PWui/2PbnSTe6A3yJ/832f/P3tvHq57VtV3rmHv/Rve6Ux3qlvzRFHM8zwJauxEOwoxxrbtNqZtnEEsRWjROMREFNIqGjRBQ8QnEuFBbdrOQyIEmUEoCqiJulV1685nfofftIe1+o9zb1EarqGUyzmn6v08949zz/Oe96z9e8/ee+211/qu3/iXcYaLj7mhgejqwMY2EI10NgzESqTEBBiSUQQAYY26t65oH7FcRO/TGIOiO94PPET/oaFoyPq2y42FpM7ZEIIxpmpVDPSMqymOFMfSOMFIMhTsgidnhThGITK5zdrG+1PrB37yVYdveT0kERM9ulykJcofpvkpRCYzYRhGAAIIcPbcSXr3e2ewdjDBp9/57subWB1/IHemJaw1WgjB0YFyodqeja6+rKrbIss31Q+px0EaCaG0BjSrY6kcCQxUEwNdklwNM9eomHSF8hlMGY1lJwJd8KDERBIiuL0lWxZ9zPOs6eqiKEIIhqyKSFIw+2NrIxXHro0CyBgSJeVBNk5dT0LXgwMzcwpwIcSzk9NL7Yh+9ge6d7yLn/CU7DFPHv3T71peXt5t8+fM2RPsj9k+Z84eYWPjY5O3/2m6/Yv+88eG3/by7vf+4/TkyRJLd9XRLVhdYK5ryMgA1Kmw5Yw3B5nxXaFKktSZOqlyJmJyaHZ7KI8KLqb3qRcaTDz4yp1IrcEOEQFIgBTBiwIhGUOGuQmxi9ovMEKuBEF9zsl3iOgyU9d1UeSgqWvaPM8lt2fvPPO8rXshOcA8AFjqYGag//CKvSDBA9PbN697acin/a3OL/ayKGvaHE4LLaTRlYem0oKxRjkHh500peCkoTKrfTcQQ0W20VVLeW/WNqaXjQJNfJU09mw2dSl1IeXDhSqyMd5o1gZmbDKt61lmjkBITACQutSZwrjM+LajPXYAM8kiqpcuy2zjOyUEY0XByf6IyAoh1b6ziLntCwYNjbRLaKusV21Xw7Jw0bPkq84tSEr33r6ZJ3fg6Vf8xZ+NX3dLOLuev/BFV73mNbs9iDlzdpm5IztnzlfEh37ndwYf+7BZzA7/1PecfNn3ueP3VpbC5UcORNOpJ6mHbinWte9j0iKE3HNa1EpERBGdiV1rmFOQzPaBTJDZbg/oUcHF9D53HNyHCvHuOLs+JiIyxqgiImpMTAQAnZ/1TBEztnXYxDAi5w2ij6nMJKYUg0FC0ui7wbDXNFXyGppuIbv+6jv+K8YCDID6SA8/numbzz79+fmZ2+HISlEsd9PtSQ9K2+Mqqapl7tp6YdBv6hkDSgqtgTzPQwiMBgQRGRGTD4yWBVihGtiEUs5iMKiGAmoK0SARkVyoikspIUMHAplxyNB4DEpESqh7LLc75INqvLUyGmroUvSiKsTC6PZHiiwQYABxWTYLddS4wDa0XZdBLxmDNEukpiRNtmti4fImg5wDb+Kx+1ocjV7/hvTO/0Tl0B2+XJ/5hKOvfvVuj2bOnN1hb61Kc+bsNe67777uP/0J3nlHfez26rv+18v+719eHY9HNfrLB6MY+0CnnI4kDwnUSSX1QmuT48Bx6GULwZEltAg2gCQKxEKSICR82JfMc/42XEzv0+h5FzadD8XqzmtMQkWIEoEhxphlFkQkJqSsBcmSkmEMqckhi2AENImq5nnZdd5a60NKoGQ4S900k3jv9sFjty0tXC40NdBDoYcr++shfm7pqsuupk3sic8GTsg31ObVoGZgCchsOh+FEQyqoaXWboAvlXPD57QqgEdgtjBkAAm0MrpUISJul1gGANGeYs1CgAzcoKiCVVYmVgEVjQkAyBolDCoJ1O2xDhwfGW9OV9ee87jHm6YZWUtJU1Iy7GGP5fJehIQQY+wpu4SNIbGWBG1ET12DcUVoxp1JRMBTI2w078QFXhva7vj9y9aFmpYXb0g/9J3Vhz5ISbIXPf+KV9+y22OaM+drzd5alebM2Tsce9MvyF98Ag6umNf+9PQf/x/5sdtmdqN/aG81k0ygDHi+JF/hQUcti5gIwJkmeOOsSkJRQk1BbJ5JiEGScyZ4b0qXOs96vs3VTp3Tg+8ZEJl5J09URIwxIQRmlhB3vgMARLTjCKpqYgRC10HDmpL0lGNuNMRkCKOwAjKllIiQASGJZyCFB1s8xJ1icybaHzfDFyXZ2K/7s3N3jil72uqYAVKMaIAvIr8VQUwgb4GhY7GQFGxTxf74t245/sY/uK5Y2DQ+NwatqTX2Wuns/l66lZIq4vkEACJAQEGF2qRMTR60JYyF1VkHzixGO0utOrBaeGr6fli78OHtjRyJA3+u3aaAEP2NR1ae0l9wqY0SrDEheWVyxkJAiQCEbIyXLldKoDUJEbkEquotZvukz4OXxMwIAEkYiYh811VVVUzj8A2vHb/7D+xg2R28onjy0w6/6od229g5c75G7O/VcM6crzonTnwhvf0PZ/fek+64q/+Kb42/9BZxNQxyKkZZsJ731o5HRA+W2MNDkj59ZlAlheiMxRRTCozIjFEIfEyWHBARJUasPRfZtEs7V+07kUtU3Xlbm877qar60C+CpfNfhEBEzBxjNMaYtp3mOJALDXUJZyxlFYnEZk67kDKnMcWMQ9MZ43aKy+mCDNb5ITDBPm+F6mLa5DgkJ6dn7vU/cNUPvh5AQBXMl8+RbcHn4iAAZHEV8KAwQAQyH7/6aOmy0eKwCR2oppSMMaq63x19EdnRQYMd+TM4fwCzgSAjDlJjNI6zkGorGqLLijroiPg/r60qpwU8NJW2lDK52e3r631xFkmNTpvtpTL/hqsfl4eKwSWVOtWUgbFEiWMVYs9mgllQBkyWPAhGyZXafaJyIHhhPsZEgMysIjHGabWp7cRmWbZ0/dL//n2zd/57fsw1dNPN9J3fcMUVz91tq+fMubTMHdk5c87zwJt+of3AR/nQAfeGW8LXv/y+enWx0/7BYcNKeT6aYrCcdG8l3z00B3THBSQFVW2hc2gxggVWxSjEztWhc1Qngcw5JjseT3pFX4GiD+XQhBBSSvCg5CoiM0d/Pha784sQUUSY2cfgnOu6bscdiTFaa2OMg2w0aaYDr+OSiGGhTtsmZM4l34ukWZI2A1O3XQ6FghAIWrqg8PqgO/4IIIRYDK2fqjhDp09dduYkQq+PAvDlcwtaiAHMQAC6ADmHDjXHU9u32pUX+addtR2aQUBxCEomqTdk9rmjz+REJEkAACJUOp/1UQCvm7ji2RFPxAcCZLJePjOpW6KUxVFXmkyq4MQEafEl5cLb1+7sxFCg1koJiEmTSqD4+EMrTxwt9avWgGtShz0FG7nJGhQVKYTYmiml6EOZcK+pMVyMh54nVZWRzp8/ZSxpkCQPp4/HflVUyV39bP7TX5n8/G+k1U3z/Ofc/OPzPmFzHrHMHdk5j3ZOvPXXq098FM6cjuPJ8OXfNv7nb+5lTG0zvebg0BRV45dcuZZ5szHNFvIY9lbVNojuVOILfqk8//xFf0zOmZg8M4eUbOba4B0OuhgMaJbZzrcWSFgNYAyy461aaxExxrgTM+s0IaIxxntv7XktKkRkSSKSZZn3noistXVdW2ubOBsVvSmDa0QVK0sjMa2knHwH0FMeQ1pKZgrSU9uRDCUZ6AAAIABJREFUepCdGDAAoJx3lHd85V1+sH83CG3QGl1pJhPJKOejV3zqQx6Du1hDhK5NWa4gDAQ7LcAC3PWcZ5jVE1tHelmEQ+ImGME5qDos3E5Sx/5FhQAFEQjwwcOYiCTbkstDHT3xjbq8KfKRZtUjYsiM1Q7YyFSDe9pg+Olue6Cwlvv7z20i5B1Q32SmS1upHXCutqoDMPIRxBdeftkBUAWeCRKH5BgINQRUTaoZ0IDdNO2tm5aLoUngvO96/qEBACKiWI8R+3Y0Cw1rQ1KcmExZMIbstT9G7/qT/LE382Nv7n3vty8tXbfbg5gz56vM3JGd8+jl7K++rvngX0bm/Bu/ae033lyurU24gKMHR1XNLp8mPyQXojjBDqUoirPQLoW9FTVEBdiRxb/ATsppLyurpkbHogqqkBQiFCYPPKPchaqpQtcbDjBCh4IhFVQ8uCmmlHYU5plZpu1wOFxfXz9y5MjJkyePHDmyvr4+HA43/KwoCt92WZbthGyLokgxImYNJIiBAa21KhJizIHr5KEwVqCGdMCUU/HaBckMx/MpDeeHc6Ee66+JDOw7rLgt2eoZg9ZwjWc3T938yU8Wl9+cXewHUohsAYKJdsP45eQ6jsfKgb/uADAt2p7pUh2jLfIQgiLs9+cTQZmIQUFVYgIAZktsch+mDBDxozidTv1AXJmczzO03ePt6I7JGKixYVAVHYVcUnzW8oE/OnYrQxGsOQPVckcjm3eGfQAHHXHcCo3pL3CbntAfPW5hJNoUbBXEgzCjAfQSPGkhbrcfyVcEXlh+kL+U0Q4AEbuBLSsvrUBBGZIKJJVARmlzA8atHr7pwIf/aOMNb+xObmcvet4Nr563vZ3zyGF/r4Zz5vwtOPnGN84+f5ucOUnT8cIr/t7mL/52I3Vx3dUjjzM/sc7lvlhf2MJIts0KKjvVKKFgTG0r5d7a8B7qyAIAAxIgE3WVN5kREIGUQHt50TWekTXEdGqDrj5Aa9O2nrU9u1KlaY4R9UspqojGmKIoiqKYSGTmh1767zi4WUgxRlWtqkpFiKhtW2utEW/QaIizwgCTm0Yss97CkIpeE0JizJD9rC7YgjNdioUxsrMb4/k3B/hSaHn/oi3YAXhfC5ZGu3S2iQqPXT3BcJGIrEYBs+OdYhJI/twv/8bWW36+uPKojTQV36j00aJoIIiomezvpRsNppTOZ0KzAaQolARIiw83pw8m2zjsJ+pQbdIxpcLrjGmFcV3gSb3B57oa1Bdio4Q7t9Z7WKYY0XJrZZK6gy2BwYhZQhu6rl9QiI2wU5MvyvaT7OKN+SKUpnKSUjCihjHtk62QAAXOn/R2DjPnZ4pAjMFZVstekhNARBZpyeDWxB9ydPdJXlyox8Xwp3/Cv/P3aLGHRw64pz/z2u//yV0e0pw5f2f2x+ydM+fvzokTH+ne+f+m27/IX7g3f/m3n/3D38+P3+Niv75sgQpk6TIvkCwMXGq2fDdaKEqSrrI+SQcAeUJGbPGiMbVdARUEFACU0CCBKCbRJNPCjvK8Xl/32xulMW1bO+d8igMpTi+4ZXfw6P/ybWuLK2PPl33nP8w8L15++KFvm1Rwx6W98J2dTIMHY6U7buaOTAIBiggTg+qUsLr7jCzC7A/fO1o/t7BiT7/tj7w0fPxY03V+eZDV0joziMZccSAKuBhTSomAjdkRNIALMghfy8f4VUcJQ2pHLWz0C4shiU0n7z94yxsuu+W1X/b1NYRSLTTalSlTanB6x1VPk4MynGnGZooKvTzzmtpWDHFmaI/dDDxcJCZFACYwJqKZhbhdh1nbtGXPSxoFPSfV83pHbpPNpmtf1LvsM9MZuGysm5LM4RLaWp+UDz6lkxfgkd8/d3uHJouQUKyqZ4qI2iUyQJYoEYsRgUQ+YjQJA0mR8bX9xSeVy4eAvcSpiQb3R2rBDg/eWiDiToxWrXdVqkprY+pVPvTy1hW+lp5NrKYjlsYDJ9oYt11t8kIOF73/84e6t7+bHneDfcwN+M++5ZrFp+z2sObM+Vsyd2TnPPJ54JdfXd99Aoqy9xOvnLzih+Wuu5YVz950ZNRwhylyLCOaQFNGy8bGtFXAopjW+4x5i/1yZ6IhBJ5S6u+xjkEPRmiUkAGTD75qQtv1u6mYvDEZX33Dtd/8LfcMRtf+w29xV1ymkArlGqUEAoUOIYuSDD1YtK1wIS77EB5617/zdVIhJNz5L5yPpgIiiAIgEAQQRWKQGDxb1wANFDbXjq///rtWZLr+jndtrN63EENHA1Hl3BX9Hju748gy837PASXwY6AFdcToK5XFul8tTs6eunlt9cv/gEIjwbEl6VDtid94a/va19BjrkoOYxsMsjGma9peWcQYNQYx+6M46WKYhGA5Ak69X23qsdfWODW26CYd03N7Rz8Z19GnLskKZmtGWHxwknX2pdnK+/y0TG0u/Qdy36Nw59pqP+U1anJYBghRHDkwPkUAJTUUxSOIA8qAApQRUoKAJJ4CG7mxXHzq8HC2Tzrt7RR77aSS75whAUBEOjRDZ7a76Up0s0G+RvGamQTTasy2XRiKKqETXsuoV6cCqRPjz56OjMPF6+hjv9P91L+O5ybmqU+66ad/dreHOGfOw2buyM55xKL6/q23vr/53B3TT99bfusLN977Efj47ctFgVctbzmBNi2Lq3hvqRAUnsXqFCpCHATnAXxhIEkZsMWElFJSMLYQZpR10/b8aGo6XT2nGq4c08lBIVdeffV3fDN89ysHg0GWZfAQN3QP5p6untva+t3fDe9+R+/uL9Tqq4U+dnx45UBwMA5tz2YCyAG6wqY6lK6IWrPNuuAdgPUIkXhgpn6NcEiIDLizu++07PrvG3p9zbiY3md/cPgxt30SiAGoAgCAHgAE8BY6gAEESAxIdz3tJooRsVAKu2L/w4Wipzz3AqqIURiQDHgNDIzWzJp6kTI1NIndYlbWXRtxcOdkPHWTJAtFaiNXGA8+Z+D+ot6wNBg0s1W2LpcX2cUP1PUwNI9dWfjExpiMJQ6axGI5Fj9CfNxw4T0PHANvWhdtSgAORIEjwMMrFrzpgLlysHwQc2haQRBDgIqijrKqq4qi0BgBwIOgtTGpBQ8ioMRogFAVBICIQPbWenIxMt9ulTYVtr9d4YmNevFQ/r3fHd/7PhyUfNkiPP7mm2752d22cc6cr5S9tavNmfNV4eSb31z9tw+5K/Krf+2f3ffUn6ke+Ih3h8ulAZYcotfgC7aEJqREe6zlZgOdcpZTT0QCtmUMJkhTulZrh8UoFSIyM8FEX993pu/yftxaLUYrP/6qGR+++ge/x6VsnPk+oEY0F4J2e9mRFagUiDtIxjHwbW9925WTM2fe9a5w7JjNC6hDfvkBI9qVEGcT07NMZdfO+tTvJJu5kJF3M7F0oHJjQtyRHgPRnXKoXcy1vZjeJ6xt4h0fvnHxasACWkhZzWBrsmVQsJqAeDZdbdePPempC0dWbDL7JcWCiDRJCslaCwZ98sigqqbTxuFB6k2S74Iepv7xOLtPZ7MIvdAH6ioORvtZShGnkfp1mB6kwSb7nPLgZyXhhs1KkZGXbWdKNHXocuAnF8PPy+a6T4ukt25sL0p/YjuLQGKTD2LTxRpPXIxCaCqNdfiYxeXH9RYWUkrQBQeNcg+JBTpNaogjWiVVjeZ8CxJEBFEF2WnukHhvza+LYlgapYQmB+DY1l2YqDY2v7aE73i5fvQTydr82c+8/tWv321D58z5H7NPZt2cOV8BGxtfDL/7/7R33eG/cEf5j75t9ef+lZpxCTw6fCU10lhpMwSLNqrGJEhiDce9FUGxippiTB6tUZt1KRm1VtCybktnnTtz371LZEss26uvXfrH/+DQj/yktSxti7lBgATEicALFOdlwr5UwrUn0QioCgYhggCQAQkNWJ8gbfz6f5j81u91Z75oh7zddlcdvt5H9jJxbmEGTU7tIOA2ZHVuTGotGgDgnQVNVEB315G9mN7n9plVjM1TzlUtx1wAkoL10PXARhAaGxqAv/sJz5PTJ4urcklWcI/JvV0EZRs0Sop94p5AF0PrsLaw0PI0Z0oUvN7aborNCk9TgxlWaWaftdD7fBAI/gmF/XhHDFsvLa/8wOY05vEFrveJJngbn97Lbl9NkSbXHShvnzbkR5FnA8btwEvUe2aZve3+2xNkVKBpfQdMRIhBH2ZEFmJuDUUIVZrmBd2wvPzYYrjikcV3fTtuqhKwxKzVmBAycuhJURKBQBIA5J3aK8F9UoRnYkJbCNiYgmqFHKPDADSoo57c2F4YLbzqh9p3vJNtnw8fHTzrOUde++rdNnnOnIuyP2bdnDl/M8d+7Zf8f/soH1pe/vnXNS985cbG51Db4vLLVcxMayu1LZewi6YLBlAII4MCAeCFsqW9QguajOSipXIQRTLW2kmo4XgVs2lPgz18bf4933voR39kJqav2DEQgG2CFoAC6xqXqRAAviDItdM8ae+iABAbTDkQikmAnFStbgEtzdKkz5n47bNf3PiWH0nHbyOYcraES2VUsEXhpTGT2VKxsApsNcCFJg5wQZZoF933i+l9kgqeud/9+L+44pZbNE0qyxB6hZUEAmoEIY/xjkOZXPNMs31n3yzX+f7IhfUIuTES26gxAho0BWQmgAfYZr1jtlYk5wVCL6dZEjYOeJZVPV9qws5WDguInLiLURbMbEOWnEbM627GK5yt54LiShL1EpQC1i/orXysOi22jNodn7RLvlyViSFwkEuIUgDHh/fR+xgtUkYmqnQpsLXOGPHhuqF50sEryqiSYR1bK5oxdRpMssiYEAIIgCAyKkASs0+21I6mApmis8I5KEmIKgmwc7b0Zv3kydHAxY3NOLrsyI+8unrPO+Ax1+l118I/+ac33HDDbts+Z85fZ3/Mujlzviz3/+qvdp/+NJ89k6qx+c5XzH7+TQpdUuwdOeglFQrksqCasrydbuR5bozREDEkS6zEIqJ7LLUATWHq2i4U46rOIqrjs6eOX9lqdcVV+Q98zzXf94NqSkSfIAIUokQ7EvoIECGhMmonVWYMQPHX3nkP5hUAgAJUGvpiW1VjkAJ4CxYiN50WFoUACQLUVgzSybXT6WXfNH3gXukZu3JkpKOCYUzjLs0K6at+KaMAHlLZvSvjupjep9fASDIe3/DFs45bpZ4GIBsVDCQBpjve9Ob4S6/hw4/LRpo6pbC3bgwuBqcUjHYSC3R9UwThc8E/UE2ToVrTMHELCZUet3DkgfW1yujN/fLWesOa7GaX3zaddkzPGQ7u3m6DNY8d0K1bWET/9IXBh9vZOrZLyTx9aD93Tqdm9nWj5S+MZWaVU7XBw28uirfe93mBzJacdaFFg4giLdJFZM4ugit40taIPOSSW4lRakO1xZK9j2Ex6jdcccNl5CqpukwjREhxp6cdKRhAEoMJMEFwe+tgfDFcDIgYmSOBB9EEhdgeFhOZSEbMbDqCyAFSu7k2ghSXLPzxX8Q3/2o5q93NT5kHaOfsKfbcxjZnzlfC6i//cvXRjySN5gUvmf7bf7uwenZLo152dBn1vqG/cUPioGiiYqegxEo8oDZ4r4mZCVAEVBWJaI+pEASYOBk0ZNhIuv+4lssrr/rR9L/9kyPLR40AdJAKGAMMAUwKwBU0GRTWA0RQB1ZCcoYB/srM3svZBR7A7jSywgikoABkIYI34ARqEgupARgKBhViRwAIzcnf+tcnf/Gf95uOjl4bNB9aVo07nuuOcNhOHHonLLor47qY3icZW4Vu0HZNsXz01k+PAgCk1nKuINCJmtsWL7vyqiOrduK32Q7B6f7ocOZTLNha4Ihmzben6mZGGIm89yPOQLQzQkmdc7NmumiKTrFn+ltx2wmXWX8cZ9qCy91Uz/Wzy2tuijDj7SIM6NnLw88+UNeDoB0V+bDm7bZey8rl0MiBTLY03b1dLXflBswcoaMi+hBdsvLwnptvu9xlxphWYivRGlMqcxerougrhtDVxluNNy8sP2npcB4jUxAR2fmrA0jAgIRkFPaHjJdCkSgl6EhChkjkfII6xjzPOXgO0WOEwgFibLucTLT9tfvvPnrNjb1XfE/7sQ+RmvwFLzn046/c7XHMmQMwd2Tn7C/W3/KWjU9+Ws48kLa3Dr7821ff/KvSbNA1VwZwS2SwmcRknaNtk6QW21/UEEv0U6ooFRmQUUwqnkGZAAAkmj3mKIziwoni9Ojc2TDNB6//6ct/7JYmgVjoKUSMBhIIKjkMAAoRgW1EMJ1AlgAYQCAaBVDWv6KWtTe9WAAA6CByMgZjIoMNxAIwATBY7QK68+PAkIAtIHjsXJvtJECu/vavnf3F/2vUer3qxrarrLWAmFQelCjaRUd2hy+j94lCtTFF05w7u/TZe1aWc4LlzkQOxmA4M7tz8/rn55dfZ9PqdHCkP554u2c/uL/CiEcnu+mxelIhEhlKaABjSt8wuupPq/ss8TP6l31wfNwgvXB45ftmx1nci/vpw9uun4VrcnP3jDNuQjLPGK18dO0BRKD+EFM34TDyPUldD8yRAd4zE0fF00z8RGpNXKp19WmLh9554h6KLnKwXUgmY2YFr/rwMmoM5xpSCh2CoGVljahCyjVpZojINJElgdFkwPv2H93wBEjRoGQMABoleVS07PaJvq907AwQa8SUEJCJBSiKdHXWHzW1z5yLKLNY5XlpIpo6dnm3em5zaKxr7MLrfm52z21y8PDCD3//gQMHdns0cx7t7I9Vcs6cz/3Sz8MnPpMDLr7s6774m/+ut3ZnEhyurEivSComUYxJrbXsWl+R5V7UKoQ2o57NaNpylkVJCYEMIyiERJIMsd9jqQXh7ANbsHLZLbdc82PfD2ggdmostgAZJQQCEIAE0WkCoBoxAxOTZAQJIgNFRKN8sWmdUtpJId1DiHgioyAIDIACrWjGCBgCsEvUMuQ7AVqFgAkBUJWVAGmKkIcweetb7vmZn7GDsixLl2VJZad3AwGmlHZu9r/2XEzvU5SsabcydHdOugKfcXK9Nk0Zi2gAAO59/BPS2rnpFYPlgCxUi1i7P3JkPzgeO1ugICUGUQBhB0HCzMaRZ0paW1xMDiJsZlIKAYgYAi+RWjQ9ipx0JjDIcNxx9tLewT/bPreY0lMOHPzQ2S0zwtgE11uw2xvrmazwyhjXX9Jf/tiG5jz+xObmIg5rbI0KgNMkyUZ+mBHZlBJemBqWWWJKKbE1qhEEkbkVzYq8rRtM0suLOtRDw1cOBtcuDFecwRA1eERMe21+XQRxCWJCQVarQkklUSKjopmiiPelcRKFDEdJjOQZckhIicey1sdydaNu+lfd/dmNN/yE/8QHn/iXx3Z7QHMe1eytXXzOnL/G8Te9qfvMp+KZk6Ga0Le8HN7ytnI6qa5bztP++NPd6Sn/oCwUEO5E6UzCkKlJ7SxbWIxFJefwxKnWLLW/9MbnfMcroHBt0txYSAJECSLj/nBodovTv/LGjX/xK8mG8uABJ8kM3LSalZopJbSubT0y5GUxm0zJFQbsrl0BM3E3c+ngJNs2Z47T6/7VtT/4Y8QBFCLZYwsFPe5wmCxnZtoRD0LXPsxcz4eLQQDCJkQAMMYYRRLVJGCcp9SlmAM5wJRSzDASAIgmsBGTksmGt66vVpZcDKpCMvC98AIz+Mhkwxn7vGLlz/y5XsieW8r7Ot/riice4Tu3p94PnzGiT29vC2bK2ROW/X0PaFX4J4wWbp3MUDA5m3UmM5tT04ux5sTPHZUfnXTigvr+k1fCnbXBWTtrq+HgYJuaO8cbhDbzoEaAAEQ9iIFLe4BRQWaOyWPwy5afdeONvdD1VFtty7wIdQsAYC2SDU3oUTbJakrIwASkCJoEEQh1v7TGvZgusjvQZ7uoBw9nz37uDa973W6bOedRyv6YRXMehZz4tZ+tP/hJVS6e9+LJ294az97L/dGgd5DINNDuNf3Xi6GEqoqi5yUnCQEggRYNNrZtM5O3DXUHuq37e9deOfiT96z0D0CRCZMAGwDxgaxVFLzEG/N+Zwazvoc7n/9ic89tctlVMbOVhAHqhLCMtCR2kkFsmgW20xxts2tFfh4qhyvb/bY3gWU0q6e3Hrt6F4cMwdz1279S/dwvLhxY5GJx1k0yAxIV6dIeYKoYSpsZIhRR1SBJCNVQ1zUjzgSJABujfeEQgo0ajY3W99X958l6IX3oginKCZHBFp2hys9Scy2XJyhUCpcnHpvE1pZtAkers9lK3oOu2+rZoQ6fNqo/skqtKRxOy9zWTduX8LjFlQ/MVpe6cgr0jN7CPVRVk7bnVsysuf4q/ORG43w0gONec9Rc/kC9tQz0ha0NRWODKKugsoAQ4SWWXTNEXQhgmJlDU/UtmxgOLS4+feUQdZFYwFLXNRYpG/TGoc0CWiAESCKJAHY0npPwPtEJvpguMp2dzEwavOrHw5//F1g7c/Nn79htS+c8Gtkf9yBzHlWcePITfiDrx/tOF9/8ounvv6f5yAcXe9lgYRnZRZbOVKav4PfHny7B+eRIuuDF7hTXJ4fEjnS28IBp46nB63/qqn/zjmw4IGeaENRkAIACdF5MKhLtj/HuFjY6NDT87u+tllz9/703retyNlQnB6TwRG3XGbaGbeq8IWJJu6XPmjEbMO2sLphDsrPZ2a13vufAK39AEU7+z//T4pErZsjcbpdcCvsOM3OJ5eEytoCYRIKIEOzIPlg2uSEk6CSaJlLQ3BRbknyRfX5tck9Hkw7GcWotIeWttF9X9s9tqeqZZ/YOT9JwVacvGK2olybZb8yPfqE7VzuWBl582TVnxtsxKwbMa7Fe66AXaNHVzyry22q5TMtZSJuJy+Cfc3BhrcIK42YrilMw6M3kZG16nWbcPm/h+uPbW43y1+ej0021Wk+RjAECQyKJBBH5UsvqKaQgws4lwES2A6yEKmM+t3X2ns31w0uHlyHPmX2GU1/bNkBesCqGoJISgxJxAu4ettztrrGTHqMKAAqKO1J3xmQD8AvD9L4PEkWS8Mojh37z3Ppu2zrnUcf+CGvNeZRwx003SBOQwmC0tH3vGqvSjTGGnqMD6JNQhUWCgKa2sdgfkQzUC+VWTACQUlJVQYCIfjAxd5kpn1t4/c9e8erX9WbQ9gWTELMCahKrSDt6sKTziOzfTAQwAoDBq11bPXbiqU+9rJHm6FFQj0zoshSSJeu7Ls9MlxqmbFfsrKI/QHnHGDlkqSdpOts8e9lnbp30YHr5YwZXP86DZDoLPKzipG9HGrpLao8QqggLIIAxpAg+BGAqWpk6Na6ABJm4DYr3bm6EjKFdCjTx2B6Q0XYOTy2Lz06OW3EdAJkiaxDyUGUhTl0y5WIaT1FXzOLjTO/j4TTaoWvbKbchZS8bLn54PC6gmxjMWlOa4WMPtB/fZJY2gFiUSGXWjJ9x4Mo7p6fW1T5/tPKZ1vvxA+1gwdZlvlilaQpslpQ/s34usrHCyWhKyUQltoKXVrZMWEDQsO3qzrncshGREEJF3TDLQXwMzU1LK48vl5at9ajSdNGCZGgIKAQIKmTFGkz7Q17tYrrIeaItG4fUx2atckOq2j4dufLuj+y2vXMeXcwd2Tl7go896WazPc5ROe+lrbqD04OjT+50aiXPUDX5SOARFTijHHwCvrQb/FcNUXxoLPaCEpYyTe4/fcRaue0vLz94OU6DDjKEAGABQBUkChsCgCQJGHnuyP7NBNi0lYXeQAASgI33POGJ3cbx9obLi43ZKCvXUbKQ9THbxLpQhV16nrFwsh0KN3Xc3wjxoIEzp2YLiytGi0LHmytZnE1LazA6QO1SJHNpQ3ZWYgQUQ0GFEa0idTE3boYGETXB+5uzuWcz6PXGccrQDNq8dQ75Kbb/X9u1RVjmNmqve0qx8IlxHUqtq7PfuvjEv5hsiHpk6UiFoKiTL1xex2cMj/755Phy0Z+hb2L10v51n+yaGNe71I9uY7FbfPKo96nZVqKCYFJI5iWNbWY1kaRWu29auvKDq5XJ25vK8rbNZoR1f2HlE2dO1knQq1hQVSfIxkUNl/S5KVMKMTc2dNESxhiZGQkM5hNf2dyCJMgYUPrbzd+/6anOV8QilFpKwQgjFYGygO0+SX2/mC4yR2Ot3fCz4cBuH7/74OjZs+b0zSfu3z1L5zwa2S8XG3MesRz7l7/wI7mDruusoXNrwzS1w6PdwcJ44RQ8GQsxhgoyx1zYwBnECFPcJ8VPCoD0paWfkQiJkShRaLaPfuBTK0evqQglUwsKGjSeD3oQE+zc4hGJCO2TVqW7Ryg0z0QjC1FST8s//IOn/8PvLX1uQ48MU9sYBDLOeawhlS7bCSl97SlqrBdQPVCSvO+mFWTLK74/TdhuLK9wtc1RKB8E7LxAASSX+GNHVAExbFJSIoPGNlG8ksfsU9Xayaa2Nl/RYpUleVnkAgCfYLLVOL4/pSt0YUYzgXbK9kzdWo7PLMrtaI9H3o4nnrQyOlf3LMCTTLaKgMFuuO01DQUvjWHLNZmxdCrIVjz3osXh/R5W2h6A/2JKAECC1x4q7pi2fbWQ6LmL+Zl2uiCLn8Nxh63D9qzn0sNW3lpxp2bjpMQKyIQIJCDwEM/rEj23CCBAjEqgjgJFcaQONELJrms7cVai2sA10sfrtVvbM8GYZTMYBWcDGOQI0Egw+yRliBAVQS8kbOzI+SHiNHMkZyG3brI0WpSz54713eB1B676lc1zu2rvnEcX+2MWzXmk8smlq3Rr1b3speaP/7irqsHhy3VUSPKGsyzywBlFFCZvOWmwbWW7xhP4sm/2yZUc7MRfL+iJEhKoxs4362ev+Mu7R1demQw4iQYtgtTAjgwgAiIAhBiAkBBpp3fXnIvjiVmTN8CCbWTNQoLto9/3Uw+85W2OjPYIolrhJknf2E473KUHqin2MOTdqDZxSu3BtDRL44VOu5LtRjcc5BXarpUhxQgfX418AAAgAElEQVQCkANeWod7yyQRzdWxBwBbk723rY7F9kzs8mREwBoXY3ysW0SD9+CkizrQ4enYBSfPzJfvhkZZv75cOpZ7M5MmwHqYZBjyYrTZBkh1y7OpL0HrZ/YG23UejL64KM7VxByf1hvd5dtDIT/hS87CdSWespghcaU1m66L3NdnmnITqmNNS3bUJv/swaieeK+EAk8/XN4ZS62nZ5sa2VhANqSgoBpB6JILJyvvZGJIUkIkRqS29Zk1M9+WZc8idZpibgzCoieXzOm6+9R0/e56ktAsmF7fZAZR9liL7IvxoJV6oToNFRAg2aq3XY5YOxfadjSKTS8/OG22fn063i1T5zwKmW+Pc3aHE2/9ufr9H4PjW5O7TufFdrlyRFTHWVqItpPaKqPSGHgJfUjIlKsgOwLStq4tgtpLK0v01UJE0PBOVplBMkih7ZqqHr3mNVf86I8pUIQuB1YxqAAISpIkoQIyKSABQYhIZn7k/Js5f6wJkY0BlAhkGoAM7t/8WLj+u+LVZsu217e99Zxyn2bYFLA7ObLeddgUmbFRsBQ/s5WJPbUIMS5JXDOUd8MuV4pnSSmYQ0arS2pPX7gGGTPeP92eRrCu8G1y7ABilmTG8rTR0c+OTw7QnqF2BJbZXEbZRqjXMQ28jUjRAbRBrKVYJ5OFnvvGVLyvWy9hEHXrJeWR9zTjoQlJ2n675LM0xs1CVogopElpj8RwTEIfclskTCFWuS7G8OTR4ifO1jFPGfYDtKq9CF2JwXpYH/E3WvP+KWdpjJAnxh35LdtKxKCojCSGMF1qB1ERMe4kDgFhFEcWRKe2MwIWeCenKARf9PPaNxkOIKggRgMe2x6lxwyGNy4s9XR/HMgvqotMlCUVY7dplkMBmMLxc3k2fOzpk7tt8pxHEfPtcc4ucNuznqonTpd/7wXjd7/36PBIWmIFAoQskaoyGEAGpAxBkJFYUYFENIkIMcM+UR0HAMSqCH1WbE3WZlvLqb999ly2fN31b38bARKAAbMjaQAEgICAhEzECESAuJOUNk8r+B9BO/94Z4dFgp3Wt1CWl0/e/gdy6u7hcrZJma2LXraBvrdbDd04GSZVSIgxkpJaQEVVRGyJCUg4kAbEDMgRPOxETwIERGVqogdnBImMC4JGtcm038bKiQkkZeHq1Fpuovu0H2/EKrX9lGeobRZLTw0yP6e3cgLw/nCmJ2ZC+OLiyD3aFF4eUASMTxnaSTWa0PgF/aWTMRql5wyL46ka1dl9rQenz+rZk97cm6ZICaO+yF1xQsdBwov71x5P2wxYNPTEQ7baGkxZXnLQ3DlrjOYvLkdflOxzaXVBM+PchPGleX6P1Ib4iRmf4Dyv25MhAGqWL8xS9cThgQeqsalDZ8AiqUFFAmTUS506ggBAiAiAoEggKEJigAgJEIBQEchwEiU0IpCMqEkIkX0isBsevjCe3rHRtIArRZFraLVGokwzEie0t1rdPrTNMiICws5SReLbXFScTVwSlb5tPKbQ/Zu62W2T5zyKmEdk53ytue/JN1ehlv6Su/uedOAGGp1DKqh9ZDprMdWh6JWNdpYz6drEsvbAgXs+e6R/426b9ighAsxuPXy5O3rQdX1yvg1iOCHsj4j+w8XHRKCM5CxjFIgJBB2biWkc97cFFsmSb6LlP984tdQ/PG5rYG/jiKvJTVcM7l6va5N93XLxoXPbHXsU5myZ6g1bLNt4ZkN7zxqWn92eZjTwST3X5DSRYORgZoN4hFOMqVVMa9ZfZ44201OdGyJiwSxtG1BTybYJ/UZuPDi6tapbrG00FvsSjHP5ujndCzmRL9DFuHBdv72rjnXXLve4ioBMSth5yLARWHlske6bpkjNJ6fro5QlZhdT0ASAiZkvcY7sw4UENCYiUsceVVWtAEft8uA7MFl208KBZxS9wsQZNuSj4Xy3Tf7KSDGzuAp8NNlTpj0cdeuBbbHmyWvzHNk5Xzv2TWRrziODO3/zjXL6dFH76Zk7B1dfjzw9oAunYbuQ3bnqvdT0kp26zoBxqCa5Ueu8zq750Tc+Qv2oPYdAxLZM7/iTcP9pOTBCrVIqgTuC/VEs+HBxJrfMqmIsd+qDxcaILwi7Xj+JurTh2893/j6PBebrWvVloU8Y64S9/BwVHaQ+bB7bMt0o6yXsmYPPodm90iHANGZHTHFfSDmaVlc7Ry9bXJ5uqbLJW/v8waGNaRzT5JlLB9YxDav+KYjPW8onbZj56hmDI/ea1qnTDhO5Sb+YJN4QXpTyucv9z/BqFzPL8bnD0anUxUiicpY7IWgUsEc354c22tmEUorF84buVOzXeT2JM6R8SemMb0CxAlGD6IxhBrnkxV4Pl2REmNSyKpoIGMQoIEH0ZlAWto0bdXVHbGZ1e5ixP9IU9scCwUKg0XG2laplm481xAa3Sf797NKmxMyZ81AemWGwOXuW9F8+qN/89+szxwfLV/iJFkJn2+0js5XdtutSMSuNdKmIklUhshxvNvs/8UPTYrfNetSg4KY5jj/w9ipP/a7i2KM8ON0n4a6HT5u6LkVJKdSeIxdUZJCHRvIs+8B086OT+ngrs+RBWxv1YN176oKvQkiD9omX2Wp7HRM+Y/FKMmi3xk9cHM6q0x9LA7QLHO3zjo6mXZOzhwQvHF6ZJL5/s6rIPdUUPu8+vnFqzW0sZUc+trkdQ/eScrRiJ385oZrL5ezgR8fr0EkA//xspGVnuq3rTL2Ek3Mw+9AEBt3Bnu0GdfOprWny+IL+SgtyOQ8fY4dRvZX8M+MHWOGl5VVK3WeaOurWIJWVr5LKSam2MVprR+T6rfKs0/bSCm/97UiqO3JmsQmYgJmT48ZhiTEKzECvL4vvWFp6/oGBHQ4m1XC37f1KCYgGKUTvCKmVAZWf7cdTbnckQeY8aplHZOd87fjiU2+OdZf+4x/3rr6Rg5FCKmsStytpueF2t627NNTtUj6oMXWZY+ho0vIT/8Gh5z1jfoT82kAesujjdlH/uzfLwQFULpNJJ5Yeoc9fSQjJGauImOVVhK3/n707j7X1ug7Dvoa99zec4Y5vIB+fpJAaKGqiLIuSKCkiFQ91VDuujdZJWiQBCgRp0/4RpAHqpq0dA2lqJ4XrAm2KFCjQuHCTwqnrpkWaOoYqCXZcW/IgipJJieL4+KY7neEb9rDW6h+XlpPAL7GIx0fex/MDLnDxgHfu+c759v7W3nvttbPc7OIT4xJGDNQAUoTy6b37f7Pc9M5d7dbFTRjt+vVxu51DkeeXNNYwI3elz9a0Q7nysZ3tr3fleUim+J66eoHScsU9jds0FTp4EmNj7azsfniv/Z344t7oops9nVY7mruUP9JOviE3sYIA0Kr7er+Y8BSzPyA1rh7bnT/RrX3Jn9ipvzHCst0m6l/UxIrR+ptJtojXOrI5j/Wv24s7OE3G38tbT6Xh+/3lr+LJo/PLN9br0sUVCgTWio1J3ngzNPWoAEjeG3Noa9FUTAwLQ/iet1769MXZPVNAJCjBm8tjd1pD+o3PyAslA2zBh+KuWf6NtBhFfml5Rup8b9wVNoHsxp3zF1v23nU3j8PedJFzVY8qveR5X91gC6/3u3tNNG2bxnH05tVz0PW1g7f8j39X5+o2uQV3BkL0vF1VRz/zU6WdegCeVxb19IiKuw8BqBRjGk06syvd8jCnpYmGeVuR+fxA2LIRn0sDSHLWU9jaSvrQJLxk4hy9Y0tv0GonlZPgP7bdvnAUYdr2hzW5dSmrxlcnpQU8Tli3Ova2+sj2vd1Js+Jl5xbXpRIBgkqn9ngz+e1uqCazF8nma1iwOYB3TfaGUI7j0Ue3969365X4a+P183ABSrgqJ5HdJ7bKM2WYlV2z8dG2fTlNelg/Ntl/kXxR/eOzrWd7XNDiRRldTc+Krrkfu/Fry4PaXOWriRKIgAF5D69TneBbGWvvARqFmIdEI+TxA1v733fxHe+fF/YUF0NVqJ/IkjtWamki+Mba7HUrntwxdBM/kaxg9a+Nh8vjLop+bjgb73/j7rAJZDfunP9gVpfDq9UDb2vUVdQrWbUOdR1IB4C7M5BdZxEdQjVpIxxbmaSY/sM/t9/sbvZZ3hkjgkF0zj37V390d+8t2eXlMEzQv9YHDbxe0DlCYsAKqTbcQncxNJeb2fX1VSXuMh2UsS1phPX3zN/+bMydjVFmC7UYeksyxKBGD83OXV2tVguVxqykj8zdzaEOFgHrTvKj09mV9RJxe47hd2OsAL9jC5cLQ6o+OtlajmvJ9rSlQM1Hm8kT3cvbvnr43OWrJ0ea7aqkuTUvgtY6kHOPhvlX5QYhRHVz3nthdbKft97e6MtKN7Cc8ACYrqx4xEWk/GIeQ45Tt9VwHMp0DTe3y/T++e61PJriQCBkGU3UchH3BhuozNUfl37F/bnGfea+tz++ffG+uum1X1W2pcgtxeAmfZiVurCIdWfmwBeFwNYX08JfzoMJXFsuCflz8Y2Y4LFxt9oEsht3zl9w6MzL9jZKFMy5THw1qfv1wk/8GSkM/u2qsClhqMUXzVrN4OSgac7PPv7xN9Zj9u7lCigNx1ePy8/+ncrtrFs9pzAo4Bss0LltkjJSkQKoWXNonaEIpHfQ3vakulzVhzpEcgrVl23ViCBXj867a4Ka/Qcu7lw/XjG3T+lqov542qNNQonPAILFw1n5LruwKMOTMbmKu8AfqvmG13F9dILT3oFhfLFgcSWXsbXa4fhiKjM3TdmuxS4UulnDtpGQSUkPT/eu6PicOK8VcPbB3h58l+OJ2pKHCL6k1W6pPzY5fyiaMX+XP38VR9Tw4HZ1dQWPhwvX4ISlPY6Lb4xLj1wMOAsBBHKOncEba0a2l/TwhXu/5977H3RhVsGyrIornmB/9GsxNeeKFRRwRsbgK9Cz0R9iFnQ2zdWv5OPRXFA+ARXVz8f0er+1jTeRu3ReYuMNqXAYDLdiFg9rc7XjouNxzZPX+GD015HENaH3RU5CNR17BsjNGgVUskBeiUYAAAXQCCCwWY97lYoBCAjEAgUyQAFQWKtEp1Wexp//RenLenqyPZh5Ge7ivA6HgopMBsTsJRkqOmMNuc2p1vhIO313E/Y5bcchU6lG+61usihWiJ46GNesQzVOc354m7fizHT1ge39JteD4X7yn+v7Q+I5tZ8Mk+ly+aXC2ydlbGYP77SV6QqpBfh4mISwXVz6YHvZw6hj/7HdWcbuxLXf37QrMifBQ3lifagmIP0jO1OEKqf6mXQzGvuwVpy63D0yv5CDfmE47nDliH5lPBaokpQXjke19EvpCsZ2cPLQzv6WOcqEpMAK6IqY2m1M0DREEDMFUCAr4NX74kbSYsKGToAUJCbnMENkCJw9liAQBlTi/O7t5k+87dKfvf/Sd0y5KkuuKBcNXJM5M1wFZY+MCgREpIYKBuV1OyUhWVRUIiBANEREIxRSM0BDh8SMY+49GYMJaesnxyX8+nqN4EM2cD5Jhrs1A33jjeounZbYeEP67D37E+fbrbYBpDocl7SlvjY69LGWu3NxoNJqwEVfuWlsEuXw4tU17z90/Xcqm8qg3OY8Jq8zqCHSUOXmLg6xXlsCQDBaQXIGkE1mouAwAXBxz773g7SzHMbZ3jA8M1ndj+fX5S7dXHgLkQTUHKBzwRSSYkYkdl9a3kCjuqAAdgT7Fu6b7T67vGHSDtXhltZLJIfFq+tT/Nj+7LdXh2vzdQCVaRqLq217rA/o2GP78a32S4vumAPIkpq4O+yuNLna4uBlVvbX0GXASZvlZAf23rNdff7w5nbwZWVDmz+ye/43b54Ql2TThyu5muTI2hEWWwioVUfSKLx3d/a5buFkuU33vXsXfuf6ClXI5d8+PNnR6dJHj0DqJWX1wrervJoaERlClEKeAQARY4xtqOKY2qolwLUkqL3Ppc2gKB3aSGWH/LunO++abs8Ci8YCZ+QELxIAQv39U7UBVBEqCiklDARF6lCdaM6ie+pvFj2EdDBIDuajJxeePLwCAP/FYv16X8rGm8jdGT1svDF977w5YrjHT+c+LNJ6UjfUZ3UoDKx355hKlKOLHq3p0E1bZMhHnZvV4SOPeivAxq7uvShC1TuocDO0fHWM8qpk50LVgyOoUEdGAnPgCY6e/skfw0lV5Rma1U27GA883Z11i2/FGMEAUVEUTVi1Ua1V31I3k0BLG0fLc3BaZA2SsxZcPz4/9+Qqznj+4Ya+Xo72ZP9rro/Qzlf1I7P7XhqP3FQe87OnZHmOp0D23HqstGtq+tfc5SeizEhzq4/Xuy9146SG9wd3EgPU48f2LzzZL64WCLnLrXJyzax+uqwxVo/utC+61SrZEaaxWn9HvXdUxiNaPb516ZnSHa1j4vk94+qq4cFyXev2sh7/WHPPV44PEpAL7GPJCsTMqLdtsVFJRB0TITKTSELCUDFlbsiP41gYyKDNEEWWNWTfv3dv73t37/tIs3PeEweNkGJJjs7Go5YAwVDADIGREJEQGIlNBsjBV1k0qe3ahMB/cTjsxBZWRmV06IQR8GBcI8AXNqkFG3fQ2WhdG3eHR5twPcUHts+zZHNAY/YhrDVXzr3BUtpumwiste2MAgUBfReM7tte/tw/3v/Rf0+YECoboXLJmQMj4M0ayauUwQKHkAAAYii9DBOpURkEfvd976Mu8mTP57W51oaR5kzlzdX1hQzB6JWDRgGI0AjUJMq4R+GCay5Ru+uq69ofcGbC2NjLQ19R6bm/3hnQzCCFQo/M6uf1sIzl0DmQ8ELXOecWOH5gUl1LLVdhleIVPbgHppcqN8Twa3F1b9aFm10vMVhz6MerR9YaFo6fqi88m2uw/KHQ9Cdr5fE5wzKmddfMMAQo2vOB0sT5l9IomIMbPo7hGU+M8vjexaficw1PvlpuHqpuW3NSOmHzFKyIVEi3aWBsntTUM0tSp4DZvBILBAirNLjGkwnVpEG3+vFPPvCBD4ett/jKUel8GuoibJXiRLmclcV2BQMwBCICRDRAMALMmioX1mAOaD6GE7DfGo4GIDGMYIyVY3QFDeAo9YD4+XFTfmvjzjkrzWvjbrAqpsJPrI96F6pI2lQrLdtVG+Nd2+tVQD5BdiQTP1hxCn6x8iE+/8jj1UpYgb31xj1AV+kZ2eDxRhQGd5pt3NWlyjZzzehRDb78t3+alwd6cW8kxzsedUiOef2m+6BZEYHIHJIHdsbOmIywCc1xSQoaPE5r98n5+cfaPbD1pDQlbY3An64uOKiCg49tzRKmLx/lpp48a9c/3lYtJgptbXVbmmfWbVdff/c2Y2kdVodSfkeHVT7aqvz779viYTVCGsPx9/rtqgnk1pU0vzocGC2uT09+K+WFnw8hf8rvnLNZs3Xz07vba3ErPXp8f7Kmgcu67vJYtn8D3Vqzqn7p6jrYhb6kz9Rv4S4d56Gt6pmymZF3lG5brrlBIUYlLKbCPrQz9HVWPrB1Pa2YCsDwrrb64b1Lf/rBd9fQoaYMJXuoPM8LTHoBgaE6M6MmREJEBjQzPSWghs7VndhcQqX1F8vxl2WN6rEwGJFSMHIKfNqqmHCTI7txZ52ZBrZxF/hU3QLwpKrS2DVtg8C+CjGOgcjw7pyKJDPLhTxHNee5JlfGYefifvfc00M7mz76qFmpjDxwUMwcb1tu35sNAZmpV1+yeOJBnINrLz9nf/bf1/MXWmfTzjRr4TXWM1C4S2+3WyqOhEDARMFU0QDFQIHJOyDnXW9lrTFL2gZ6O03OGX5oduEJOXmxdBhktP4rw2rudkcpCxzuDxeeTt0ITfYe8rUP7E+uLw4bbJ8fxIewtuX3NRe/CX0F03O9//+6ox2afnR63/MqX8dkQwninC1S2np0steJapb3n2vW2Z7pkhAKhC+m1dS3RNUTeb2nkwIMs8l7pnDj8HjSWk7thy/4q6lHxaft6IbIjjZL6ZXAc5Bcige22xNLEVguAt6Bd8ksahpLqqZVwBzG4bve+s7Hd++9rwrS6ko7jUOZNg7AxaKpJKYSAgLRqGfmSfutdmGGAOgY2RlTMZqXcGT6G93B4JwqG1CjDAiqUmEwKKaoREd5BLDP92+uHPSN19dZaV4bd4PH6taQLvg2oRykcb+dYxIBqQnkLl1TJ4SCSOhKSh4ss8XgaZHS7jz+w/9nMaf5Ix91YGMpzjlG2zTJV0khQgxEhFUxZqfPdU+uH/qBcrloqeqUuwbQcXZIVvlhtDNyctLtUkgMxMwY0RMzvfJjsRTTNYkTuY/apOWIpK4rAlvBtQc9XwjT60PX5NmuzIey+O7J5ZfK9X6In9655+WTGy1OKJar0CBFLU1r+o4diGn6u+sVk348bP0m3dytt4P0X+6vTwgo60e3tp7BKBRC5W6ma+uUtpK/mgaLnPz4yKQ+7HDK8KFpeNYGN8CjW3tP2yIBHq9i77c/NplfMfrG6nBu527S6pPTe546ORYlZPBJBIidY9DblaPjiE8XShyhxW7ONtN036T53ouX3z3dbrEkV/rcc5bpdNYz+GwMiMyGBEhIbIRKZ2bpU8AYAcHMlMmhcxmgL9qW+kv94YuWWD2DE7EApAiAImAeQ4aIxsZ8MK7A4PPDXbvItvEGtHlqbtw5j9W1M2jamsES2irF81CdY3/Mke3uvBVZi4FPzNsupNwp4yS7sa4Lu/MNjb/4S71vmkc/UaMDGpJVfHfG86+5nqAlEADqkAMevvzSybs+k/2z02YfJpnihDGbG3A9AbLiI73JZr4DZVJjMyYipKKSTBIUrkJRmfugYMeWAvo5h5MSu4lUAwar1zN3WelC46fz+kDGK6VboWE4/0J/jA1BHN53cff68iRR852z8FKxkyGNot4vS7PzwnjSYp0GeWhnvy+h436q02vDCZiLpo9uzW4c6WriPnBh9+V+NATvqheyFrfIjg6OLTBtF3nRiiWbFSIproVvrFezmLeq5jAvtqv50XD0fN9NqclYiBHRmaiw0m2akRUB57xJgXE85/iT73jnQ1tbb6+bUrq2cZoiqHgfODSyTNvSDD6aGQASMiFhUVZzYHZGBuqKiogEiAaIJGCrmI5X66+VXhVBCbznaFPyUXLxBKAFJXBIkBFJiY/WSwT4/LjZ7LVx59yd0cPGG9NjTSWo+3XDhIpISsdSEtM9MBltdIhoYqQAoIhgUIE3NARERTMAA0BUBMUzM8OhSIjGptkU2JORopEJIEQqTcNHv/xPnVrziUfIKjbrEMMA4CNAhBhGBw7KEqwyjZacApCKFQIb8ZV9GK/3Jb42sgKhISiomSAYIKiJGRFCD+qzJlYCEgBVqWSIVHMkbPGln/7J/k/9u+WPVLvNhUiIhZXFEEE9utOn8ZsrigUAMwZgQDZABUNERnRAoMZIooaAHhgQiqlHrAoBc2HwWZEI0bzlS8HvNHVZrwU6qThm9b5ZDMjZqw4vetCYp65OEr9j9pbV4ihySeQnhF8fj0olfzTce8UWSygeocZwLfVLjD5M4qIcT/Jjfv8pWczEPzRtXhqSTJRHe8c9+1eWkbh8YDZ/gaReKwf94PzC13I3wwlredfW7rOrpWbITkkVgMGAbl21oJQCdFoWFR0zqKkIMYOVgFyyZAPw3gCsqEOXIc3I3r41f+TSxYfP789y5pzADFwQBWAHxABoquAwk7DR6fSrgQEYIMDpvfs6SRaRiAnREAyR0AgVFbP6EJIkQ2MjEGMOxQgwm2UUa30dk6ZQf3PV3SB24AwZkVDNCDIqEpKZAXggzKRBPVaU9TiuEfFzm0B24w7aBLIbd85jTUWEO6HxjAXMDDOYoqJoE1wCcy6A2gBCCC36MY8ZzRCAEQgJEcDADA3wrCc5is8Ft9rJ8dGL9Gv/9OX/5X+/8Bd+GEsbNEo1llwVrkaS1ghGqhwIsqJLWMQsYAAhB2gFz0hVn28foYEVFQJkZARCQDqttD5q9oNnNWAuRBkIKbIXxOjyc//VT538jZ/afmC6kqTY0t1aDuP1YrpL4YHJ7r6rU04nMqw5D14/sbN/JZ14wPsmOx3Bs5TikGEym6T0Xt5eQqqQvzEcdaCXeT5meec83Oxzq/7RZvupcihSHw65Ilk1Q9fVlXPv97xOdqWPO0m6YFcM29Q9tLv7copPQzkX7Ri7PutSVi92/RTqyMJMBE6LKN9yMb+upqyERUgEwIBNHRQWMZ+ZAvvGmKSAU3JqZfg373/w7dPZPXU1ZwTVCBIZS+X4jNxWxIhIoKhmagoAYGIAgWoAMFEC8o4QrZAJaSWu5TYKnBA/3S2v5BizTrCWW7QjAwAzMhYnZIyGJ2VEgP93U7Vg4w66Wx+DG29EjzcVGu7ULSMVAASIYBGkqFxJqxm1dQgS8x43YtI5pdNKhoyAZgZiBmoEyEB2xuNYkMX5ZvvGmGRvMt2p8ovPjX/j565vl+lHPxlioEADQEACFGAVIhfRKXhiJs4IxYojIDO4S49aVTREZKJXKuuamQgigmXwwOhPwDlgF2FVg1Im5JNrv3l4+cPVF79g9+2nVE+oCm4U3XRxt1PtWa0gQw2wR2E/VEAy0Pjy0QrIVYVvUDqI6znCp5oLz5TDztkxpN6KqH6meeB5TAc51eSvAxaCUuFzZVTUmssn2q1nx6Mw1IV05NVh9CtCsvjB7e2XEk2GDqvquTjiyDPN79/dOczJZruP++1vq45s362IwHmXyAYQdK4F34yQXHBJBW1NA1B+aLb1iXP3Pry7N+HsUZxl0KImoMhIbA7PyADpVnVhMUPSLIzqEAnBTFMKiGDNIdjXVsfXTcdCzgKTGyTzLfoZJAJTh75wsQxkeJx7IvrsZrPXxh206eU37pxP1RUAbFcNE5qaR6eIBdFUB7VjKDth1gr3UErJM18tdJyYQzO10+KGRkCESEiGZ7uCEtd4kFZYh5YmuaNJMy37Ir/wv5383D/I/9Z3z91ulcExGBSg5KIrVVrbWGFAADGoGCJmo0+Hs7oAACAASURBVJHh7izsX0AYCF7JJwEgRCZABNJjtFZ9UxAZiEuFIlC+/r6PrX/qv51emnBwR42/GMMCTdTorM/cv8H0lE2NzFSUK24Cbyldhuo9W2/9+nA4VDBLuhVNGY9it2SdRfyj9b0vubLUcqVfNIYf8/vP0hrS+tHJ1gvpyKt/1F26bv3vxiXQjlYwG+2D8/u+kXMzXSNsPbdaxDoa1oPKo9v3LvQQElxPflTxw42vwurbqiNbT/1ahow6dfW0OI4wIC1qb9Q71Ifm25/Zf+uj8/O7gZildXhS+oxaHAojEjE6p0jZzkxK/y3qwqaKlIC9gyJYAAwzENbNl4aTRZExGkKlCshMYAHxlmV5EcGUwRUuUNCTW2lEol/u+jt6mRtvbmelOW7cDR6rK8PTQNZAIQADsBEEA2zqMNjL3eLFuN7d3iHnC+h+dEUNDAjgNH4lYgNTOPPVuk5ymAC0GquSkX3Vbh2W0V+cwtPH6b//m0e/8A/kR767whZDlSA4RraM7FjUGDVnLq4456A6K7nC3y4CQEMwM0MlyAAKKqqsrkqi3oho6FKo4Orf+lvP/9CPuPG63jdFY+a2GlGZGoMEuglkby9fMJBjdtEkgRoAq01duEbX3oHhnVTPmsmBxxztJNQTm+Vg3xwXVnQGvq3CwpeX41EFoOCHWMNAQxiO8gkbo+qHdiYv57Ii6bpV5acPOFyspfL83eH883I0VJNryzi48oHd/W/Y0QzqZV19prr4mzeuDmp1E9piBYiYoSTEP/jRlrLWGCYQRKTXVDwEjyHFR+aTT1y49PbJdNQ+UZ55zyLHcTXlSSBPyGqoAEqkBEJ6VnLTEej0xwDMDNRAAZAGGE3UAbGyD5Pk6m92q6eOjxeoqtD42qGzIkBWJDsPeoslMDUzFYdenJByYL/SDGb/ZL0JZDfunLPRGjfuDj++vYWIb93acWQi1povRIXVFYkmHZS9uiUpo+ZJLu/c2q/ryqmqFdMMoABgCIAsdjpZd4ZNpC1BoYyHMGxbFZkpk9QOSOr1cHz0XACd3fOh+v/+hzt793gX+1xVHlwn0JiRgaKhowR36YQsACgUA2ZAiAAC0gCiqSIqsIvwzZOv7/z8L17/6//1Op1c2L/QuWbiTDitc66a2TBmx1qnJK5+vS/krtIoR7LEYEVqYIfUSyqMobLSDX4ytwKx0Fzqz568uEPTTBmcX5Ox2He63V/OLz2AzT2zrd8dD48kTdU/ODv/QncyFFTDyoe+dMTsQtbe1yPYOV7Hm6K7u2Vy2Jz41XLenq8WdjJVYpWxlLo8fdLtxfYQ1oEwUFNSLkH8LVJKUBrvqEBel2VV4zv39x+sZ/sJhbMGLqWwCDjfawa189W8dCKohlBQDIEIERFA7azlNpkZAAATAhlCO2apw4nBlcXJ8ZCVvTpHoZpnWZUowatqZVSFsIpddtZo+INfFgFUvFaxipSdB/dsf2Rmf/Xm4R29vI03t82M7Mad8+mqRsDtpkUyNXWGClAQGKS01RS9JE1ZWwoJ8GoejvrB1yGDIuBp2QIDAEBgQjvbgWzStaieIJ0rzbrGGsxnqRSkLMtsOvoJ77y1GWzxX/6nq7//P3Vrd+6TH6I+w4QhGrIfSAMoOLlbm7CBgSEiAkLRUiOhCKz6ws3Nwydefuy780/+9YMvfGE22xsu7rjgK7UOXB4gzav2+Binxsl2ynRwZyOX8aw4oYJmU3QeMKKMqGwwJS/RhdCWXCAXB2J12d1qzrf8VmuezYeNEiF9Q9b3+q2reX3TclyGP7H9tifLcU6+B3u4bY9pXaJ8cr57KK4b5EP7kx7o+tDNrHqs3X++P4aK/9j2u35ncahT/MR8/5lxMZX5B+c731Yd2UrLuizJ5ffu7T++d+lB8I1EqWSF6NTYsDApYWO+MldMxZ2uBwEzMyCboRoq2BnJTb9VXdiGJkelfGO9vCal1K2rWw+sfVRiB1wZAOhI2mNx6Cbm9RYTB0iIYKhUuLA5LXqzX5rZZrPXxp10Nlrjxt3hJ+ZbbHB5bw+8ZSmteUHKrK4IZkMmJCdIAwgzsqmp1qnbrutzTTt37EFFRAAVgc/4retFc+UlJvSuyhIdZLRa0QCqbAW9Rzuoht2hLt4tbzxTZd+/88EHfv7vzO55mBVGgqaHrk0T+INnSs46BUFBJAKEAuZMum8+/8Tnf3X2n/xFU7YE+LYLWwn7llJK28WtG2q6Ps+oGnjBvlFvFHvqW21e70u5q7TEfY7qSMHQgIhUFQjRCFUckrCZ2Zrhvo46h7HGLpftMvnCeDSxlgp0qedJHaAcFT1vLkpvnhXrkXAaszIOfDjNeylIEfepra1fWZwYD5wdU7O0cVqh72XB1TRjbPJEyq8fHe3gvMfRmQIEExVf+BYzsg+ec2+d75+DCoZREcyzgZIBgTMpgZjMBisQHBLHIXEQVUUjIoeIpq/km6LIHf7kX52CwkhsYKJIrhAuYl50/RUzH+okGtA7QymFHIpqAUeei4ye0BuWJByqVJRuUaZBwQiMi091ClZDtqcX1wHgx0+Wd/ZCN97UznY0sHG2/MR8yxAu7+y2BKMWdN4VBNDMyvoHZ3sKqaRcsWuZ7p3NZgQtqKWhd84hqWQzdEhMgdGVJIojMyOAqgIo8OnJnOLlbJcO7fxwvrP+6uFL0723/kd/eeuHf2hy3+UAkKBUQCA0MtQGEYFBGRSLGhkQoxIAAcFpmQiGUoDUBNCjgbff6wNGgABrBgRoAbAAMGRQh99GFq4ZUAFjSAQM4ARABDxG1KAOCBDgdA5Zfm9XOYoKKwCxnp5nAIVBAKoCPYJjuHr9afx7/+fqx3+mpdX1Zr23f/9r8fGeOQKGeloOlgBATAHACJsIQgDBDTm54E0F1QitEtdBUc+BnU8qJWeG5LGW1/YRIGBkwGDMnIGWRQ7G4WQcs5uwwej0Q9X5J8brnEoO8J2ze7+yvnokuqWtt0pMrzf5Usy9lw9Pz/324khL8+g0fCGe9N4u5b0r+eDj+xf+0TefPAYYXZhlnx3WRUEKuApFzUy9FiwTKA9MZ+/eu1BZeU2v97XGBKoKikSEiFlzQVHUmdUiYmRKoMQAgEZWFKscxzwJU8sUyT91fLT0VIiq2/QxKBiaBqsHP9TYpi4+P54AwH9+dHJ7/sDGxh/CJpDduHP+2tYWwLcXyBKRGTJYiWPDVKPuzdtJFdo+OwDvfQnQg6QirlhjrgTUXE7/IxGJiJkZ4VmfwVXxrtWcF91LN3aksQi2xbbj5c/9xIN/6c+AEnAAQCPAAaCCkcADsIEgCABK8kwGmiGEAsAACsYwALQxgYMFUw1UAYASkGZQ+kNmLZiZGSICIgCsIdevlARjATAgMKtOX6lkccYAgsYGuSTvAljVF9EADqxWAjNFI4Ov/A//zR85XH31p/92i2O28dLFew+c56rBuCnrAwBghKi/v9p7epMjYvaMppJLcB6liGRGZMY4WmjqXEox9cSkxoAOKb3GZaSUkNRMCwECciEeAQrQF/Ny3usEXa+SA/kERBRzEqg+feH+zx5/Lcv4idnl5/vVc6hNJK5XaUxYT2c2v176faH3zbafyQcnsXz96CD4Vp2nrgwtuiKOcMxjdFBV/sHJ9sPN3j7ygOPC5elrHLi/1jKX0yNhGF4pToiIADZIIc+aiwerjRBxUIXg1IAE12hfXxwKVSwUfHscR3+7xvWEpzmya1pX0GCBF4YTJPrRGzdv0x/Y2PhXO9uteuNseRWBLGRDJnJBVQlUJXqHjPaBvXNjv3aqLBoI0bs1Jm28G4CI4PTRrsCIaAQAhmdjKfBWKpoOZSU4sgsOa1VSkKwjvPySD3NdEv7MX750Mue/9Gfa5Mfgas1WCqID54uCMmAGDwCmEohBC6jmFNCNDhGgUg8IhmAGZL83ZYpwq5M+S1HmP6AkwGlVNEOIMVeVFwEjMASEYkDBKCG4aLlCB1AACsDEAAR6B0c3nrO///PpZ//u+MJXSOmwdvfee38uDoo5BA0KyyVUk9f0cz6jTqNYNcsWA3os4IHNsChxCH2OkylDzHHdcx209qOWAOSyvtZ1iBWQwBD09MZAZEBH6GjMoGbA/3i82nJdufoB2r02LA9DXGOqB5nV7bEXOO6+59w7f2XxksK8qdcPhfGzC7082zlcyMyP1wjP2fQrxy+XooxuL+PQwKDD6LX1+O5m98Fqe4u5cBmteIWJ8cBnO7feSADIDFUMgPh0+KhmHkmNAF3tD9YrX4XGyBdaqXthOFmgZjDyzUnfz6jehbCg2zMgFFM0rbHtuKugqbl6fjhJKf7H1zeB7MadswlkN+6cVxHIOkBRUAQDQsdmolasSKbxoqvfOdt3JWcoGFCHoSWfyQDA4HQ3BpEBASGyWL6jl3q7kQWjAiDouB+KI89gDAZcbkLeCa09dW2J5eJk60QiXt7x/85fueeHHnP3XZqAg76UtgEAtyxxDgGgSPEUACgX8ciQLDalQg8KYGAMGcAAFKT+V3URBna6Ifp0Z1ZJ5B28sjOEFUDBFMwUKkLoLE+QR1SXM3h/8+r18X/97+x//kfy1SfXO2boqadSTXhntw1lQPAJd7jtSumCesatQQZ/tgOR20VVTxeXzUwRXvlFlYisSAiuSGLmLOKrMOY0Zp2Ra4yYeVViQWrbtl+uQ/Cv6fs0A8TTdRUBM1BDRTSMUzfEeFHbdevzKn5pPEqipQk4unsK9jh+587FXx2u7uWqz5acf7iBX4t9nWpsd0mufmi692v9NZ/3ispzywMgW1uamAnm90733rN/EVIiT4AZpQREI0wACaC+1cjsjAjZzNHpMd162uYAQJVFKfhV1zW+YfID01MnN46dzGRWYlJHicFXtQyRkQwI4fbkFigYqDQ06V2PiQP6Z9YHiLipWrBxJ20C2Y0751UEsoymAGaoYKqvJAwwAop2Gl3tNOd9dpcn86Zo65xxGcdRtbjgyXHJaobMbGe8yoFko4pi7j07pxDqqi9jCdBYpX0k50lMkTLBoHnbeH3tmVI3OADFUN55//6f/L64vT3pkH7w37547wVwEMeRm0oBgxogAuQCUpAcEClIHH1dA4DdIkfWfm8XM/6LfQhl0NMTZr29khIbkzw/XN/qxvX/8U8uLRYv/tzPx8OX+OTABeqq/cn5nYnnsRtT5Vtgn5POfVySn7pi67I63prN1pKLMFPQM3Ki0p1xGr+e/n4ayM6aaTf0GFjNwAzEoEDj6lSJmUlJnhhEIVvlPBr2/NquVLCRgiqY4itfnAMkwBJTmdROwRezJGmrJiXu01fGcci5b3yVlDKMDWsRqelS4hdqObfw5Mal+MqTS/K+iztfXK6fvPm8L7JX14/dcz+zzI2kJAMCj0IiVkCNFB354Kshn+3UFC6AiEKnXy3QKysgor7igqAUnf/awY0+uKwEQIZak/NAfRyZ2SEBUyepvk3VTgxBS25oEqtoI7LS15c3HPN/tsmR3biDNoHsxp3zKgJZkczMiEhEpSgDmhkRjQhUtPZhhBwt14y7xvfVM9Bh0lSBqORYSiIiY6eqfMbLVCUuU65tKA45AghgSmXSTIbxZM5VIYgVjeM4B+8dRxOISK2P4zgnNxwcr7qlOSDH6sZC5I/Tpbe9a4Bw6Kp7/9Rn1tMmxnMP/cB33ZjzYezeffntICAyWhWc/EtnsE77D4U4jl3XjeO4/ns/G+aNpNWFIX3zF/6vndV6cXQtUdkv7brv+oaD97C/XYG3pkax1vqhG8u0MV9RJ4aaefQ51n6auux3d8aY+xybWev6zkAcbOrCAvzzISwiogEhElHskqucgiqIgE3qJg6JkatOrOYFpkLaTFobRYY4badR0mv6Pr8VyAoCIiIZAIBa6+qu75PHOblEhv2IiC3wsbNGms+WrupDxZXhqCF+R7P1+eP1DlSHiI/t4ueGRcgyydtrOELEiffvbnZdyTtVeFnXrXOQCnBQE1V1CM4FESlFDNHz2Z6RzUymSmZsiqCgxoBEBOaPHT7dHS8BUP2EGu1yG+pMaa0ZEVtAAFhLIqI5+uE2DewNQXJqaJKbjImd8TdXB7mUHztZ3JbX39j4w9gEsht3zqvd7GWlFGa2It57VUVE8JyzoIGH013bJZGAg90C57a2tkPAOECKIQRynKTQ2Z6QBUQTwBKTJ64Y2LSIcKjA6MDGQG6aoVihtso5q2qgoKrIlE1RtHEhSdHAvYUdZaF89NJL870ZTer4/HUz69k8UjDnyceSJeXgvAPMtzgK+LTu0uk2r99PSjZzIUvWXITbdpXSzvnzoWpADbImlKqqjuJqHhrzzEPOOY+zepq0TTYYSFM1hS0NsUUR88RHEre59uiOY7/v295OD/nagNONjKe/oIGUQmLMvKh4q677g4N0ctg6N459CCFJye09k6ramjWr1EcS17YSEyat+LUd4P1+2gmi4ivTxmYWkFksB0K1gUqTwSonCCq+VjOTBZWman/14MokVgXdWLkLBiuJseTp9EKf1x9tp65eTlfzRSWINkCeGPYBJ+hyP2JwToELApJ6iqBm6pBQzvaMfiQDFQfsnDOFpJaRyfGTR0cqQubI+UEEmdkAUinOamAgHB2YSSNIapEBb1eKBaFJ8VqNYaTsnPHTi+tE9GPHm0B2487ZBLIbd86rCGRRmZlVC3mXcybHIkJEOQ+tC6CohgnVEIMjyJIZKKZdovvms63Ka05FBdxphsJZJoU4GLuMEjU7AjamrJnsNO1vkNzUtaSMiMwsIoIAZs7QECKYBwrFKubjtK7qOrMyMCUzFyCbC1lEVAHJiQEyOedSHJn/ZV3Et8KUb/1LST44YiQDUS1EaGYqefA083XqhqlzMQsQjmBcBzeiWuIaBAQygrEgkWPSwgQDlt2IqmVVo08AnvXMHHL/2iKiUsrpKEJzGbu+DJEQ23Gprh5cxW97x/3f/wPfmG3d/4M/EC7fG//mX3niF39p76jf99Uyj1Y5AqRi+TXe/CQICECGaGBmaAAEiDiiMiAoVMiScgghAQwgATMA1NmISIxjVeNKfotWkKgvqa5hKM3HG5girCkG2e/DIATTqFXlpRu71leKVCzTaOzU2MQ8EisAipHJGV+ZCaAiokjAfpnt+jCeSMnkFBwDsgGKEYOCRBJ1UCdWRjNjMQAQRkVAtdt1xK6YMoKTMIbRSQjov3b0spn9tcXqtrz+xsYfxiaQ3bhzXk3Vgm8TGRhhAVQrXnXu3H5db9d10IVTgGzAJMzJgJlBAc08c04jEIpqVVWSsjPOZ/t5t3H7IaKAqX2r1BWSgS/V2svU3KCxQgxRugadQhEJdTUMQ9VWkjIxaMmEmLFSlUawENQFR88O3AhSoRQrqCK1q40WuVTkldjBABm9q7UYMGXIcv166EdhXFfUFj8a3XPp/mPk83/6jx/NwuwH/vzupb1aB6GGNSfyBPnk+pXnHvnoZDKpqkpMv7VR7HRM+Hp/rm9yigAiEnydcyYiU/Xec9TEoIEyieQShCpwbBBRpPILhZeWq0VMzleMZCKGr0+HdXpErZOQ6sTFs9LmQISNO+9sV4nf2PgXmBZDx0REAUh6Lde71UG3vH97joRcE5uSajDRkolIBBJT8S4Q11EgagKMFYVyxmdwN24vNQElIuc9AGgupkZIxisATWI0qVZDmk8qYZUxcz07Wa9ns1nf9czMiojeDCYAA2vGMk7YovQ4tKNWvhqzq9upLtdYyIZx0vopWif9cH1Zq1zzaVbQ9aA7F1Z799//oz9yxOc/+H2fdG+7ZyAicPeOCJU7ZwBULBfgBnQErYOMQv7mWz86uX/ivYd/fq1/E8W+7lTRewfIBU0I0JGIpZJkQj5rGK1RU2KoKyEeUlojHRyeLGOGumnaec5Zkjh+jbfsbWy8sW0C2Y27CjKhgaoAkqAVhAhmpsddtyv81mbaksuYlUlLmjKPBEEkZEGPY0UCYBlbYdnsjt/4ZxARAShYHiMAMBIhqqogN66GGLVHp17AUbEGq9Qvz0/b1eJwZzLPOZtzp2V6j1OZo8/O79yIcRrOR7+uWMXaMF579oUtbNGoKI7cHUneu3yh2X5b8+f/jXmze/4H//Vz97wFB1g1cVbKlpv0ALWaB0QRCDygMWJQyn5NMHepBobk6ufe8/DibXQuBAAQeyWtGX4vot14fRFRKZJFTpNa1cyYfPCUB0SWQKjk1UWla2l8qTsOPBmKJfTO2AmReaBXvs/X+1I2Nl43m0B24+5CpHp6Pi0gIbID9IDaLMs62JNl3XfLc6F6x7l7KojjMM4ci8OILKBUwBugIaJtngsb/ywFOy2U69wrfaaZmVpkcyX7ymWT0DSScq3I46jeZ8XQTpKJOCygY8ku+Db8/+zdedCn2VUf9u855977PM9ved+3316nl5mekUYSGiEkhGUUYxtM4qSCWWwL29iBimV2SSAWC8dgAWYNGINxEaocVzll4jhOXCkwSRxXHAwOxAZigYBC0mi0zNI9S3e/2295lnvPOfnj1zMCRxpbuOl3et7n01VdvUzV3Pv0s5znPueeE2OMtljtrfZxqC2F4sZBYtFTpx88984vPywp/YUvfNXkSjdp6sH7RJXaJRksD4a2NNVkqJZSzRwha4jisIHNLNdgUjLpga2Q4ck094uDZXvj/ds725sQFpvNYUSbnXn43fnNo7tv815RxUBE7gQ3FNW+DxxrSZBwY1g/0d46cpdQRZrt9UNTz2rm0pfcDyEyRy46LsiOTrQxkB29rGQYE0SEnclhxZVBgG7V3XIxLZNmtv1s7p99+slzFh45d6W1AwIRPGSrQxTmwXM3rENIxz2V0UuICw/D4O4xRgGpKhHFKsHJ26GqEpfcl64Ts7r2pvLMxdVKmdfx1rXryWxeVcO664TXy5I+7eHIV899+Z/upqe3/+R/vHXpfnMvlGjwKlEa0CXUqhCtQHCD1x5rBZDXkmgGVZ0GFmRQl6tZpRIJcHZFTECJrXVNis2Nh3em56+knZ1uvfid6QQvrMuOjpd7EQkE5DwwcwoxSco5J5pe6xbXh/2luZtEjqZx6drEGmZWNAAQN8/F4KTsv7+NLUajl7IxkB293BARHARzOIzEAOYW2es4CGRdTlElcXqg/c8dPrPly/snpy5Wcxq6knVNgySpm1TGKk+j38HNUkpkrrkYURBx927d1lWkiCW6yDhdNar67PsfT/MJ8jq6SE5tnKbLb3jgrV/02Jn5I1/4nzbnr2z2za+BAK6hSUkRhEoyK4mniiGhVvQiAgKYBR1hsoYQumbyfNe0AocHplg5oXebOBNRBqJCTKjG//uGN9aSd+T8zcUzdbz9YubPYxAR2fjp4VjFwEPORIQQjfioL2DEWP3K4pYPGinWIXbunXltvmWSUdzM3Z2dmeEAmYPGf8bRSTYGsqOXleCb/D9VdzgTg4iYiQoqFS6WiVZcQJaCbBsxzR9fD0+tb03U79/angUplA+GbkbjCsfo42zoY0yB2IgAkNkwDEPXlmfXgYJN6tX+qgu133/e3vT6i//Z5yy/8t3DavXQ/VfgBgUkfBagCiWIw4AJkEs/DwIBvKAEZIQa2QGDC4K6MB+SbblNiMsECgQwuuJNKAhk6AU1MHRINcORCRMFuoN+Wu3/yE/6jQ/p1Vet9Hq9nnjQFzIKNlHs7eyZcVn2WBEJ4BYqC6Ezf2a1anVNEnKgTNzCklllNAEX0rUYF5MQwGRmxZQ5MAK7j7lQo5NsDGRHLyukALsDLgzA4WbqStGCBHb3CDDU1IVsMDMNHOIQse/rve5wu5Sr9eRCnCzHwvuj32ES496tm/26rVMlzH3fp6ra2d6efPN7Htfu6n/xBVtnLzOSIFKHUmHHDKd3ATMoBVZkQBA4ABkelYogUlUIwZAZFotGn7hZ8EqlByqRHtge2BNDEQSkKhj6xivkyioABHbyqnIFYNmZV7KeTHZqaxff/e5LDz687Hsw6aRFCS/UKGDmTRlRVaV7vNPVvS4PxqHqjJ565saSqOfozaQtwzxbghAHNeuQISBy10Kxzm7mYGGi6AVQZ4hyOe6pfNxYDWN0l42B7OhlxZhurzI9X3WAISBArPyOnggMcgeRSHCgSMYUCQULhN/sDN1qrnpxa3srcIDmfjmt0uC5cw00MRgRmVklQYiHYQCZBWYIO2AgAtiLW7GcqDqOw3DPUDiZE5HQpkObAXCmpocykEKbh5Cim5I5k2eETW8LUg0pQk3h5FAGtEzU25mUvuSYJoOIi1BL67KcV4mCZxsYdXZEosG1Tt7lJoYlDQGIrjnBDHGwfn/ZdV1oJqrKbZlSoPNnysWHrn7Zn935gi84On2u2T09AWQAEs7+W1OqEQDcDhCZKeB332cjCILNnwYAjIjn/xNCBUCwOWkqAAkEbLIRRASQzV8VKxoCwzh3CJMOmHKV9CjxtvnRBz7jc4aZKq0RpGrRTerEt0/+TWrsJqNgjGLvPIMKAX670YQw1DmbRWIQM6tb5xpZIlwG/Vg1OVqtF12nkkiCm9EwzJiNN3erAoKAn7+byWY1nR1Q31QqcIbimKPYFxKvVTWlqoyJWaO7awxkR6NPoI30/vXenOiV051JNVuTmvmpMDsaVpE4EBcnMyvsypRCbdrDi4HdnUBkRExRwljF68Ux8ya/74VkzU2zgcVcyE3zkOoILWZZiEgoZBWRYRgkBHL0OaeUQFhnrqrpskI66ptUF7fCnZEeaL2zO5vkztdHQ/QUqhpS4KsaW7V1ulLAbuxnhMUAU9qy/sa0Prd96cJf/nN7C9r9ui/bPXV1IUhYnVE0MiVHDcCRdc2JCM2xHLcQWBR97rSuHZgC4OzYuoUWf/vvdc/eOn3+ogUvvfWhnjmGYxnlyePCEwNAK87FrBpERIZpjDmvLXuhxuQUVRnxKV8/qev6sHSlqDrC7eK+8HupBIG7/87klBjjsOyPNBOkZQAAIABJREFUbTSjk2oMZEejT2BPsIWq7Yf3HdyYsVydn6q5uT4M91FUggbKJbszG8GcgUjscAdt+j8BLrbp/TR6MWS/+wgJM5G5+7COFKNSVHcPZElSWvd98EOVUNVpz4Y51/0kBuNCzs1ROrTIUwIdskxXluaTIa9nYVizpYxmchaww6euHeRVSMRMt26t4nzSPPTK5YXTl//8lz34pX9qNdnePnvqVWbEjKKTIAwbkOuSI6YAYGgHTbUAMA/A8a1oDobEg9T1wBlA6tt+VcLuGV++969+/9brLujBytD1cTqj6bp9OqTZsQ31JGHVBSxE3vIEwQG6zmzSe58wtyZa2NPhA93hLXeBpJzWlAFGYBJ2V2yqvNnvDg9f2ojI7XYpN2YehkFk7Is4uqvGQHY0+gSmHVlki0kKrx2Pdmt2cC719tTgbBQQpizkWHnbqdW4/S1xs8HMzNwddpyhzj3hhXap7m4EAszMzCIny5pSGLQXEVXlVIgGw7RSDESXStrn7jyHZ/Rokqqdw8kqoaTIfXEyzNOiXYenjxAoDENrw0Gk+UrOPPII/szn83TL/8zbL52ZZoLDLsEMISvOEnotxAlFobEWhgMZoOhxZU7gyDUKWEAhJjMc18d5T6Fg2LKwSpgOgFITdgaxX/qMP356gm59OJ9OFm5zC8/R8mw9zeOXgbuijVZDxHHQtSnELa45yioPO119LS8f926hFjxMMDHQAkMtiTdfJZ6v7AsYCPfKjYOI4I7n+2uYmYiMObKju2wMZEejT2CK0A4FUTg16n4wrMlRh/j/rI/uk/qhMKuJMpUBGcLzmPrBzNzJNouyAtr8GHcTv7jf+cxjB9zhTuazqlmVtYKcUzEno7KweZjRhA8Xq6bIIcsE85V7Pfik2bq5f63x/JwsgubTfTiYbNPuxfPv+YrnSn3pK75ofuZKoWYN3uoBQR8QuhWRpeJQIIq4CVzZK4TevWLpAyrTFZdpJQUWfCqmcBIYSocUAALjuG6hBhAUHCaKIXaRagy49hM/+MAT1w+vbKepLw730+xCLDTR9RoSx6qxd0VDyfsMDhKTh3jYZTdXkV9b7LMTc6rd12ZZciNxm+rWeneD3w4EhRgk5LhXOnW5u5ttEq+ZuQxlOp2aGbA47qGNTpAxkB2NPoF1slqjmR+0qxDCFtUx8tLzmTK7ObTX5cZuiA/Vs12qB20Pc0khkgtgpLZJMQDgdG88jY7Rv9VlihzMzCGujlahClaMoAqfNk3fDoVyt1w0k+nyo9e0Dn40tI1vc7y198T0zKu2vvLPWTp94a1v3d09A8e6yhXaGbbEUEovUbe0IEgnwhlSVwOQROBQBhkxisPhpTIU4apwF2RqsmakzbJsEAMAFglkxuZgOa6FMylYBw8OEzCEHCW1/p6/0d4/k1j1edlUVT3wflmcatujnR3ouCR7N2z12DPXJOzV2u3D7aKAJhyWktg8EgfQjNXMzfNaO5JNgooR0aaUhPumKsE98+Lh7pvttcyssKqqch43e43uqjGQHY0+ASnliAYJcctDJWnpufecel2w15TmXK9s+DftYQW6aPFqtbOIbR0kcSArapmIQVR8UzFh9Elt6j9gs+vLoaW4OkTW07Bd1/3Nm8PBrUkI+906pbTWEqpz+4aHf+C7PtLp9pe/9TXbD6yIH1SoIAw4FRAYQ9aSZNLHIcQoIANC5Y5MUEaNAnY1iwwjpUgOGLuBClwoYlPxgpAcUEwIMDg7OWGzU5zgzAPDgeOqSeGEChNoEebCcYn9vTf/6ZtpmXinqvnUUX2A7OVoW4KfOR37/l75VH2vuyUaOK2MHj14rhdhlRCra8N6O8TBLbMpSOBCFIiY4cSb5XUid98kGJBverrcIz5enxhORH3fb67o0eiuGQPZ0egTEUwKC6GHmxfkLImHqYSMwcoAZqUtr939KSvXZHFpvd6eTrarGIBNzyQl+Ka0/ehFvdAuVUvpVuvS9kw06Y76UA+hkofecOkLv+ix+falL/midOVirQMkoPfPSMIFhXxqamKOoilEd9aAKKn4qipTSIGH4D1QmUcWAmMImsAOKjAxI4Ri4OiEkGERLFDAXAtJEuu9JAmAAgRiOMOd3BMMruDjCWV7yXUbtWEvJVjIP/b3n7z+rx48e9mwfXB4sw/zmhtKy76UriWmPtHxVFc4adaRrx/sLRWDU1VNj8p64nw6bBt1lRmZOPlgpsTE7Mzi7m4AhBxGBmcOwlHt3tj7v+l6DIW7mxsTrVarEMe4YnRXjctFo7vnu7e3AVw5tTthdFYoxFAIsCwmdm+vGCmbDrmSMBG+OJ/PGROYD21f1WwWiNuhr0IkhYj0RYUKCWtxDpJzH0IobiJEdrIC3wI2y6eqdLBa2Xz3vi9967O2df5tb23OnJtkLKIFUKOyFjTuRgNQCQrM10wThAIENadMxxRQHpcCdCizjD7ixrWnnv2szz63W2k8ldEd99DuSUoggJ3I4e7kt99He8nMzEqkBnORCABqfShwDcqT2Kx67Zvmg3v7h4TK7+372KdKGcVtd9Cbk8lsIcNs9ZGbB1uh+tYbN457aKMTZHxzGo3ugIgQYhT4quueygc12emtybRuqsWQg3sKdQxG3lqOiE0KrRqBjD0wh5BExEvx4nSynoMoYXXe07PLW5P5WVrQsmpe+/V/aV8qAUMxd/aAXjxhoOwiNUg7DlBMDCgaKgKxcnXSbmQZedbG0rSEhr7gy7YG66qtThf12Fr594Tt+Ya9TE5k7mbm5pyRgBAoM6uglKxCuaZpn6oQl2V41ulj3bLNbVGbSzMcd2+Cu8z6LFXskzVdjluzfRy+bue+p45uHfe4RifLCXtsjka/P6xXqDlFStNBqgPnJ1b9o/tHj9q64xg8uLMPtkNJUG7YAs+XXTQzVStFCSGG+rjncbfN2vmNHlWz3eqRbx31/82PPXb68o03fcbNww+VMBTCmnPAOqwJUh8JUCQCHK2EsqqhxLerFZ0wCYKqhHXzkZ/8vv2n3utntxCReIxif48ChEHunt3MHewcSITOTOY58ZF4p4YQu8AE2V4TvHpW8b7l0W+vVwsLXFKSeqUnru9EFSouhVhyoHa532T74PUnyE7gFTk6TmMgOxrdASEygKKDuhURjdUafJRxy/g310e/ebTfDxQRe5FM4WyYUTEqFpyEOIoQwaGlnKzlHAC9MG9tWaxjrtAFayp5xbm2rPYfeMuTr/vM63/nR6pC0k/RpIWUrUERjoayZmX3MFVxZIS1YHnc87jbFAz1J/sb/u3ft3v/FZomXe/TGMj+ByMYXF1N1KPTB/MNwHap8r5Ipqk3HeKvtoe/mvc/0q36IhiimygxgAmfrLwgAMWN3NVJCbOKd8NUQ22Ujntco5PlxF14o2P0eXUNYLtpIqG4EQsbAW7sfA+1svlEiNzZATiZqRIgLCmErvgUdavlSe9vWp7FplZZ93lSVwR3K6aFhDYb4RXGJ2x5MdCqbrte+2KImVmaPaFdmVenq8W1a90v/tz1H/9xmM7/0OfEDlQv1rRdKQXkViy1zCJQccmEk/XsFAdYnrz/4cNJonlVt5nSlnk+WWfPnWNwEESEAQbYQEqkdKqq25JNeIJmgPz6wd7Hcq+xOSydGZpYBwpeFOxFc4iwe/w+9qkSCQRbJ9lu0Q3LVaJzW1d3H3zof37iQ8c9tNEJMq7IjkZ3wFCKuxN5FBZCcKdSoHaOpwPQc0rUFOXfWhz8+tH+091wlH3tbDGpiJqVUgCL4cRdj5lTG+OWp/PNtK2Hrby4b1i0w9OrfuD7z08vPlAfts/9xHf+1qX60bd8/lNPlwYQNgA1SGvrBIOz4sT1XzXVW3/zR52PmmYqqaEqFq+tP3Er03eKbwo/WyFzcjAHihVXk7YgcnNo/Mvd3i+3e4PLFhq0ftmnKXsHXXnLwZsYnOzIT1z9VNVsVpApzKZ1FT92/cZnv+1t5y5eOe5xjU6WE/fgHI1+P8RYEUkppurQ221XATxTDoPZjkQfSjEWDV0Mj3H/6MHhE6v+wHmQhKp2Fiis1+Oex90WNK6cbhEve5g3izDdq7Z26XypvFLLrLNXXDq987BsP0zPPHrz9Rd/83Tz2N/90TZUYR1VpLZV4v5kLYIBAK61H3riv/7r9dVPm9T99gL7gbG4dbbaOu5x3bMYADadpR08EB/Bbnp538Hy3xwdfeDoaGiRBkaQTJ4IrVOialooubdc9rylELf8xOW4k3ld13HwG6XjIFpNfu2X/vfLb3zjcY9rdLKcwEfA6Nh879ZciV+W5bfIRETMCseQc+YgqsrMxDmrBwo+lBDS4FlE3FW58qGfus7ELs63JiKVsPW5yD1TCP2OMCtViGzaldxNw+mWblTa9DTLYR1KJrcQyDEpReDLhMrm7eOPJzDd90r5l//dQ7uvhUJDL8fWmuB4vO/MxfnpXZ2sayV32QvVLC76LqWxzf3vicLZIXARyeCjoje79qDrsuwIyASFVDXDVUAUxHPgKEW7yBSdyqCSqqEYy8nqBcDFSKzErTx0N/ee+FPf932//vO/+KX/yz857nGNTpYxkB3dPd+zM6tUz567MFkVnlf76LjYRCYy0CAna58TkZiZE5jZtYiXeV1vTSf392tu0tpKKTYNiR15KAgczDO5Md1Oa7cSDMGQ+WQVnhLomo0F0+Uw3FwtL9+//dV/8erXva3DfDIApEMUAdThhEoBMQU7QAYhKKFAA0xwj+yLMocTuLQUGjeAQd1HX/cf3Vpcn06nVVWpm9ntLwCbd6fjHvFLgrO6E22KaoEZBDJyFKfEgRjZtLgFYrAYSzJd9b03s5boqb39ZR6kqrNpGBuaAAAyBmaOhRKCmg2RVly2B2KZHOm6riQWX0m1deXsG//kFz38De8+7vGOTpYxkB3dPd+1M/PAr27OYavZb4/mQzk9me8dHnRbTX2y4tjnW7OyMLOVjJKDUB3CQtYP1acueoqqg1hP6u6TFBdUaguibqpmFog9hiwUysnKRhgMrB5ZYmIn69Z93iu2xvQHv/GVX/s1C57ODdAOkeBmumY/jQg4jPISNkekQkO4Z7ZVDyjkwQiC/TCcKglPXXvvzTd//nR7N8bIzMXU3UXkhWa/IwCb4H4T1ru7wt0dQCOytqzukThJ6kpxRch2UIX9o6PWYBI7M+Kw+bRy3PN4qfDAumzruhbiW95zFU/3PLgW62I16RZ9naZFtBf5ysc+eNyDHZ04YyA7unu+/fTclB46cyFmLaXsbM/7xUK9WBOlnKxTkR1GcMImlda1sDlggSuNyD7sOj1Yz3dDaDGspTQWNk9icmJmJTa4mQWcrNili9Qg0UB97jRqHT2ue9tf5qyDD37hyu7XvvPyO9/hxmTYD9hB6Q2SESODFQA0AvdMvZYBJeVQIoCVe4l5+7GHLq1Oxxk1ADbnwKYgMYDNGTICIJzMTC0DYCZncnd3X1K35WHCcTkMqZqY8pHr9fVRT6ntBnOiIAATkYBczU5Yqs8nQyaeGH0+Qn8uTo+GtgmpJ5tZfu+t62/ZfuXa1SV+2RNjFDs6BvfI7Xz0svBF8+2ey2WrYiCpUx6G4t5UdWdZTti+QyJzOIiw6YwgQixOvCpWc5UgC8vXrH1W26RygaYwZHcjBBZ37zw7rBY5abFL6ldEngNcIAZW9hB0Vtvpra3mbKjo5s/+w72/8WMWWD77jVuImbgyJs4mkbMUkcImdgi+N/blDBiEgtiKh6nE+oNveATPrHbOpN7Z3Nx9s+64idKA2+9FI1N3KDMJMROTA+ZQ26knrRk4SeHB5LeXe0/qsDZ0hTxGrhJLICJTdTVm9/F4AgA8O5mtKj9HMQfMixxFqpV/ZVj/lw+87un2sEF865OPHvcwRyfUeJWO7p6f/qN/RD96/ca2766LZV0xz71ug6mXeNLqL+J2+xt1w/PxhzvVFDJ7ZwVaGuaKxF2NwMivmOzspmadV6R5O0hhu0Ht3E5W5akE5NwrqaQKnEw9aEgsh6HXoZuisbDVc6Znngxt9geu7v7sT2/fdwEcIwq7GqE1qu6hlraGJS9nw+wwYf9v/Uj3Az+YduqD2XSWb4etm7XYMang31LgwixwuFtRACKRJSy7HDm2kT94tNcxc29VmByWrokJt6sWaAgBpmYWmPWE3Zc+GYFEdnG75qtdVIy4kvD0zf2/8F3f/sF/9s/uf3bvkff+8nGPcXRyjVfp6O751bf+2Qfe/KYf+97v/vTdU6oZs3lZO4AYTtyTmMydaRO/Gm5vSXF3hrIzMxNgToU8Owp8C3ZEw04In5a2TkU59JYtn0e8dcJWjFqeBM+1D0I6mLdOKuzCW2uzpmIadLk/rXaWfayTHNz8SG0t++X6v/q2nXd99VYJKFjUCIbmnvkA0KI0OWCN5VO7F9qHLs06qWsU/fhK/GY5lkFE9Py5dNJRIFWFGgBIAHExVsMzy9W+5pyEMnNVLYeu4WrLwwoDYGpZ3SUQEbkREfkYyAIALPCwXs1nDYbimT+8XF6cnK+vnJ7cd/b1n/tHHnrXu457gKMTbbxKR3fPcz/0Q7/4s/+se+KwTwdeWTwc2kl9pqMl9UQnK8tl84Akcto8Lm8/LxlaaLMVjCk7wBSJybGG7kBy7g98vdM0j8x255C9brEV75mI7I5gTDL1hQZxqzxVLgoz5CX5JDX9fjeZba99keqsfSmlthDWfvPcs3te5ulb3hX/4l/aOn2pdrpXihb00AqlQ/WR17x6tjpod3a5ir5/i+bzzXnzQhQLgIjGuGvDijoBwgihUFjmcrDOy659LvqUUuXcF40sgdigR6WfcmRmYgdgZuq+KS07pmpslDrw0QpNGoCDm4sLsyvLvKwkve36bx/30EajMZAd3V3/wwOfhQvNhz74wU+v0nqnKq3yJMbVuoR7ZR/5nSFcqWWzIiBi19txrXCQUgoAhrNtwlwydxgVATOSkbv3VIgoEr9pdrKOW7CilJ1gVMErUzANxEPQlHNPs5RNwyBVmPR5qCOCyhFTAt948qOzefTW7PKV83/+T1341u887qn8eynQMMjTP/m9e9/zt+TCtOJUWEwK8sc3eBHRJpBVVZKT9WLzyQQlRCmgxTA8164PB+9C8hDF8madVQxmxcSdPQprCe66OYxmFigQibsbnbByKp/ELMt+7VxKRPrDX/eV7/3Z/3PxsZtf/tSvH/e4RiNgDGRHd9//9Ce++LWf85af/ZEfuFTNvK6antrgzpFFJweL3NStRAdNdKCg2e6RpbNjsubuFNIrtk/Ni4lmCWhLlyYVrzmjSBWzFSLKOceQDM5FRYRuZ1UahJWh0Kj3TNbop2Sw2/OFmhAz89D3q9WqXvn8Pe+6+A1vD9hSANYxC8zJEgRKyLAaBniHWBeAMAg2eZSFEZwxAALcscPWOpoWUM/zEvuoHVbbugUC6OBfX3z9/WeDe2Ogw7COSHzCMgg6KoGFFEEpAGBS8Q45DYGiFNdAYDcvKhIV/lRojlbrRdcpBZJgZuRgZveTVa7uk2HnwZUiM3lQz/3QTGbr3NcaJdGqPZpNp0PhhepUInnOgfaeXrz1O//ax37llwh44A985v3f9m3HPYnR6LYxkB3dbb/1gz/43GOPPvTIp/+D7/6+B3dnoehqUk0Xvcy3bsRuekCTpIcIqutZG8tkPEVfjICgJQXWvp028b6d3SrnqL6uLJlXCjE4wVnYweA+uOUCYLPbXVXd3ZnkZXorsE3LCXcvyiARcbNSysGN9VTWuax3T78m/erP3Dd9MCtCtAWwVdgJJLgdqjJAPYAMimCorFkDBYGtgfkdqrYxwCSzsPYiVVcQenBlFjws3/cH//Pho7996eLZw9iWVk5Vp1QP9YQVnJmqDOQtqyeBOWWNYGYuDGG2bmD1EFOO6ZYNTx3uMdVdKUUdIXKIZgbTzZlw3FN5aWAJxZN78bIiTbPZ0HYNpaVn6szmdZUH0bzajmf3dRnoaJievXh6+9z5137uH73/3d9w3KMfjX6Xl+fTa/QS97Ef/dHf+Pl/OTx3o79xtNa9qhQPpl2qqopCs1xfm8a5sRjP2RbHPdiXtKChKx1PYmFTzRPFKQpXtk5v2bJUssidECqTSUh9n41JGS98knaDEJEzAKeX50rVpkDVC7mkQrzJ1ghYhFVabG2XJ6/tDQf3yfnT3/HuU9/4DmRYUkYBKjiUrEU3Qw1jBdhABBWwGmmPBKC5I+PUFtK08AYZ+6mtEBMcQ3z6b33n8AM/6VfnuuqGM83WMB8WmSa928kKZIWTeclWxG+vrBfHYAZSpsAsQerDtnvqaLkQGuqU1i3AxkQSsEnA8NvFm0cActY0rTorxIyi7ODBm6peWDcTZBTxtFrYE+3qoTOnPvebv+I3fubnn/jt6++4/v7jHvho9AmMl/Xo2PyDV75eUWKYfODab7zuygOrdTfRep26c2H23HAIa0wpxpdngHWnKAV3r6Jk1WJZmKWUSqLr0dWd02dQRfceQ8+edahiCsUAOOBMAG+WaYlE/eXZxMjVcDt2JXffFMcgosK1UJbVMpze0s5cvX36xjLq/NTuzi/99Pb80+fAPnenvC6EAFMwA2RAARgIprAMq3FncpR7oCpDG0JjDF23sWmUrh89eutVf6i5/zxjQbBBtxJFH5ZdnaKerCofQ6+UKNaRPFN2KiCXIClAni3dY+3+AQEhJU+1iveakzGzEz5eYdeNATth9ao/mejUWYmTer1YNlyllFroYekusK+dC4eU9dnu8Eu+/69+6J//64nI1bd8xtV3/rXjHvVo9ImNgezoOP3D13xWdeHUH/zCL/mx7/z2118+lVZxL11v8uXaD1CfLnbk9vLM3bxTPAqGIpsEgSAeZdBi7gFEgdh0Vuyhre2tIIYyUGkodF1nVkKKHKRkcyd5+TZWoOentdkFZWabmTLpquaJyvzQnk52imMiPeD1ts4f33/swe0Hhrd91QPf9G4o+oBqDUx6yz1HAWBGTBEekYHqDg3UMiiCVoNNE0EJUvDBz3qkv3krzOcN+jKPtGiOarsE3XeTE5ZaUFXVer0kdgYxSCGdm9TTX3/uRgzJ3QPEFIOrx9iTR3Uix/PdzoQYADt0LE8GACDhYChtH6qaqrhYLHabWcq+jP5bTz8ZQ/2XvvN73v/LP9fx8JrP/8MPf9WYDjt6SRsD2dExu/YjP/Gv/8X/lW88k5+68bHVwZULsrU6l6fLZ4/603PYcLJ25X+qhFxzEeKQ4mDeDX1gmTWTflUoSBZdDKu6kW3HQ2F6gavnfD1tqsRccl/KwMwuwexlGxgxyOCbrf3Pd51wAEo0zX4gGrPJfFL3fsClLi4M96Yta336qTpO5Zu+9uxf+eZt3XZjImhAh1IjOLwo1YQ7tsDnpqTSx74qhJDWePYn/sbTP/RXw6XXzKuCjtpssfYOVBd2WjrdmZSGe4XCybyOSfuiIqsUP7K49Vy3mFcX+jwMJTexCnAbcggckrR5UznLAGxqEbj7pnjzcU/lJaH1kkIktaaql+sVgkjktm0/uli88zv+5r/5F/8HET7zc//Y5W95x3GPdDT6dxuv6tFLwk9denj24ANv+eIv/onv+a5Xnz4NK+2cmmX2E1Zf9lPlmutUmaHXAiZJkdVz21UcLAQTcncxI1Njc8bMcHZ7eycl6lsMfUqJgwxaXt674Dffl5/PMAAAa7VJjbsPc+qHRWYNnWxXu6Xr1YdqPh/WRa319SKvCy5dOvW//ZNLuxeRQgGCAozsJaoi3aEl2QKEVddNvc6NY3/v+q3XvNGunKfW+i3nNbZkuuRF7GidwlxK1pN1XUj2Pso6psf39hbdUE+mqursvaKqJ1YURaNTCKykh91ymrY2UeymSPPm33/z2+OeyksGU8WhO1rOptM1lxtx+LPv+NoP/+NfKKge/hNffPlbvvq4xzca/fsaA9nRS8UzP/y3f+UXfr6+devh5fqnnvjQIzuThU9FXp65m3fKwB6dqBhzMEKBb7JBS+pFiQdUUuWsHmIhdwKTcj/sMl/emm9X0fJQTBGE/OWZc7nZ7EVEm6SCFwqFerAcLBSXImkIw7QCDLn3lHt3coaEauA0mEY/vHGtyXRrfurqO77+0jvfUaqtQ5QGPFGF3JnycAUG50ArtynBfuP0mZK0uvxg5YuqTz26nCDa1EmWZRFLhXCybt3LKE/c3Fs6D1SFUEVwv24nTZ3zEUvMDubADjNDpAIXpU2lLSF3I4UzB+Go1h/3VF4SmoIS+aj0aFI0m7flDdvn9dqtyflLi+5pvXxJz52bfPabXzXW2BrdC07W3XD00vfRT3/z+w5vtczPVtura49f3d1m5hY5muVJMzsYujnlYgQLYfNNnHLWlNLtfTwv04DsTsliTETFRHU7Vmenk60QuajIMhiQHcIqMjhEBAZyjyJ56MCkZlVV6ZCDSz5ZC4IwyevgzUduqdc4/8D5f/7fnrnw6ea8YjRAMABQskwUQAFQZCkRjEyICgg2m8agDFcPYrBN8Qh1ExbKAPQwxu1Veebv/PBzP/5D88mlvhbRezvwUgIB7ER+u3QAGESkQp5LEu66rpnMulKoqtZlkNTqepjJpPYqD6ZVc0j20b0bPd+pZOSXJzJhZrPCMeScJQZVJSLxYiyDeURIIa5Wq6qO7p4xzFiarpvDL2zN66YatCiBbMATh/vN9PS73rH+x/99aObhwuX6TW+5+m3fdNxTHI0+qTGQHb0U/dirP2s4OpgHTBM/fvDEw9v3Lc1jIh049IipQIK7q2oIYdCyWXILIbxcNy3dKdEJTGamqkReCRPc8/CaM6eISIjFjc3ganBm1gKkUFwTS+gVwBrmVUjlZL0wlKFUqmkaP9rkVx1W1/fX9c598jV/4lXf8K3oKgh3EYDWpSDnoY5FqyYY5VbjNAMRPczFa7giiANuRg7i2zm2SmDkPXSyPzxCY09kAAAgAElEQVT26lel++YTNKRq4d7eZX+7YsCmQR1hUzjC3RsPRUBRTLO7D0NJJA1EmOHkMT5bho8sD1pCSg16K+Oj6kVtasyVUpgZevsln5kzLDrBudMco0Ti7KXlcs747Gw6F0mak5CZ9a4SQ3QKg+wdHBU75PVSzl7Z+apv6n7mf8zPPRG25p/23kePe6Kj0Scw3h1GL11//xWvOugOpxJnsXr/sx9+xbnLghDd1lxTu+YgRBRCMCiYSynuTmNO7YtKys5kBGUYQOzurpo50K7KA81swlQom5iVYZbSypEUlJViyIEU8OwTDi/Xcl2fjMSJaLahW+niYrP1XL/063vc1AuSC+/5lrNf83bHdq0oQ0YTCRBftZZYYoUCtSJJHFQ6jzWAPAwpPr+L0UxLGWJpeALH+3fT1tXXkqb95joPTfB7+3wWZ4MZXAlERJtcbPOg4oRCRsxwTeCoLMxDH5+19hkMB15K9kQR4Kwljq13X5RqFhEiYuZSTECbpHBnKaXUQQBb0uBCO8UemZ0ZtJ3VFcO9ZMDULTskhjbYtG956KTZgk3sIGu/XNmivnRf6XT2n3xm88irz3/V5xN93nHPeDT6uDGQHb3U/aNXvOLGcm8aJ6fCmfc99/5zV66mftmEmZlt0gncdbMhffPz6MUwqX/8WJE7OYgorntNgobWq6OzqXr47H1h6LXvJkE0UG+ucHaIg5xCCMVOVg/6zKh7y+Tp1Hx5tNiRyl0PopWP3pxYJ4589eHJV/zFq9/4jQvCJKMPZTIQgiADhKEqBmSECYydCARg6HOqP55iuwKefsMbVo9+ePpprxjsVupd6t1iw/FN+g54IZA1ur2EH0AM6qCVs0B6VxcJLgPRwoaPdKq5lFKIRGJiZs4Ihm7MlX9RmyR3dzK4GTZ54YEpZw2BeyqFyhnwa5tToZQS0RCMMAxdMY0xErM7AQQv5BY5GmJhdjKzJXvnZbu99Tjf/8bX//L3P/7un+pvKb3pza96+9uPe96jETAGsqN7xU9f/YxnVjcu//E//No/8Jn/6Nu/9+KF88MwEFGMMTBvfp1CVB0feC9Gg2/6zm++9VIxJmJmpNAtF9NmUiJWuUfO5yw8cu6K2gExuxmy1iEK8eC5LzmEk1UWraV2So1kgmIRhIgkRWlzw+vidUl16Q/T4c2DTBff9ZfP/ZV3Sx/WFSpfMlWGKC0gA5IbAm8WWR2tFokBMHJEWh48trr+eW+c7dJ+fW5HzYdVqzHEe/sW7Q663SVY4Q5zMiKnpsIN7SU1VZbW+QOHtwairVA/bbkiqYzI4UyDezGLMZKerBenT1UAqcEIDqYg7mpevGglyIljzq9tds5ACrTnzDFYn0UETJvCuuxEzgxS8UFDoOBlZVhQYPHpBDtL26sbzx+4vkw8vXKFvuodzYc/dOrqw9N3fv24fDA6duMpOLo3PPvDP7z4hV/yBy/Id7y9/7y/8GurWyEEYumGzBQggTjknPll2mr1TmFTAGBnZgO7uxMTUc/qRasQpSuRgoRwpH0v2PLl/ZNTF6s5tV2BDqSSJAqVE/a+EANyMctGVZSqoqN1EZtQ6Jh6G8AsRHHADqVnrj0hkenS5fk//fvnz3+mDoMklxxXkacdvFKCwKw4LLADPrR1jED4Vxfo8vk3Z1scNX1oSwwTNY58b5/PBmI4wTZlr4gEFJjC0lZTlVWQ3zi6lWOqW8TQXM/L+2LVk/dQmDcQmA+wEiidsJa8n7LsJMwhmRnD3IYgEPIB5XXTMzuZLNoKA+B1iIMO7kQst7tVq7EzAeRg5l7XxCqUgjTGknNLGKpAfT+tbSnU6mTnxocfvf/0p5199Dc/9nVf3//TX3zN47953PMfnWhjIDt6SXvfj/94fO+v4elrYbG//Sf/zPW//kN1lWdXHtzzFiF2RZ+5td8ZVCJVVTfkMBY8f1FhUxyezN0Nm7IEXgwcKCnYkckHdggncGXEpMVNgIn6/VvbsyCF8qp0M7ozZafuFSn7okLss9XRhr6u686HZvBClVtmNmULserbIUlNTqz9M8vrzbrZ/WvvufiOb4qOI/Ytd4UJAgAHlKC5q1jQ5w99zue1jz+pD4aGT1fDzUbPr7TvZus03NvH2ZjY3K0wCCSFpQMKuPbw6OLWUckNElf1s7mtOJzn5qYtKkh0KrDOFUwNZOKywMnaXPipEhEzBELpu5qpYd+dN9Mqneqp5ZLdIlGM0mmGc3TycHtTwaZenxA2+2XbQDOlZKWQrqHZOVGKCDkvvJpEjoWGyeFqOHVKP3LroO52w2W7fNpOnY9/7A+9+pu/4bgPw+iEGp/6o5eoZ3/8hw7/5f+dOZTP+bzJ3/17+dmPdFSmDzxoGSWvdim2uaCueo5LwlN7h60pQvR7ewHr912BEDm5w5SIIkciMoOqhsC3u15BDS4EMzMNHMQiurxuAm+XcrWenIvNkk7WkiwNtprHnd5XXnYQB/cj5GmqNR8OlpLMYja11idS1KMHJZ5qMO8WT3wsTXfwLV9dfeXb7m8esEo3qQUONyKxjGy/9FP/8NR3vEMuXGHRrMtT3elb9RBDJes9T7Pjnvp/kNup1XARyeCjoje79qDr2jStTGCuxO4e4QbtWRtE2xQ6AAAQ88Del9zQ2Kr6xSib5ZJYJsKXtrZm5FNyH9peApnGumpXixSqCB7MVVjUNmUNmFm9EJGzu3vIRqHqHMZSK01K8chHPFQeSIfnJvH8kWiDgSysS6ilr9D/1rr5nr9sH/gVf9UrX/ut33XcR2J0Eo2B7Ogl52Nv+gPrgz0+f/7Un/uSJ7/3B2Jdx0ktKUKYzAEwaKAixOJwNeJQmA77fLhaP5km1OeGIxNly8pw90TCFnpkFQd7dBJjqEWOHY25d78Xk5LvP3N6izRattJltzSZrrueQhNA4lrKEEIAUHKuOPQBDGEHDEQAe3ErlhO9bOuDkoOJfCjL5XJou6qqZttb4au/5v63fwt0f1GdCkCD4vDHTj+EK9PjHu+/F2d1p81lCDCDQEYONRFiEpjArLA5AAdLGbiarJyWTtcXi7XaYCopso6PnhdTyCNYu1I1dXFzMs0lCmWGgBSuBiJJFFmRTZMd7tT12WayFSTCVFVBRpDf50e8iQolffoD9s3vqf7XfzV5cnXfh3/x9/X/OBr9/413k9FLyP/H3r30SpZd+WH/r8fe55yI+8ibWU++WWQ/RLFpvboNQW23BUOArG/giUe2BoLggSDPDNmGhjJgaGB9AwMeyB7Y8EOw3e62obb1QLu7zRa7i80usshiVeXj5r03Huecvfday4NI0hTFSpLNzLwVVedXVaMCIk7EjTix9tprr/UvfvENmrcIHu59+uG3vsGWz147IeEQDnoybx0AgxqFEhDh7sIpkhaPqdmqpG9NN9/lWpl6pDVya97CC5sSZzBVIw9PtBefKU5syfT8SczqQ23r2j537+5p383jpKrkIeSlFGZA2IVadTjO1yfbecuHUyXfGxUbHIDTR7T2MZjIgwLC7O6ttcPBxP2333lwkv7c3/y7/d/+9/OckMa3/sK//v57X733ys/f9iX/RL6fxgMQhwNcEQDWnG7abOwZzMy1WiZZIz3MsZvL5Wacgkfz1A8GIgqzZevkaXIz79PejYi4WEfisEiiTSoF4CnC3WdUJepZP3d+pvAuQt0IHgSQhDDZ8y3JSLU9jOoP9/c8re98YfPGIP/Or33hb/3Hz/VJF4sfsgSyiw+F3/7FX+r2lwq31cA3703b6e5n/8yGtivRABzRwg8/mQJikOPJ4IMnExCECXzoTJlKKHUPvX5z3l1V48bnSNajWlS4kgoxh1evhqYf3YzgcyWgYBrblFJSs762z5++9Oqwvpnf7yV1Kc+1zGHaD61ZKW2VKCICDOBwUFpARBHx0bwFOVNEICKxHF7nIeZTI+Np/7U9v/xYP/OZ7t/969Pf/fv6qQs+knZmwtndzSsAZgqmiIiIkcupyyBpU4rkjoxb0stW3t1sLai2YOkczMzeSpjjyLsxPG8VZWClGg1UlCQpVVP3YtILO2yk6Tynz/QnFyKtlV4GjxZeAQdwCGQtwHi+A2IElOS0zdf7vu4fXd77D/+j+bd+60v/8H98rk+6WPyQ5W6yuGXf+vv/uf/mr0/vPhgfT+cPvzEwb1754uZ0HPZtSFpmBxD8/7c+5QAFAAoKAIdxQYfsFzPnHJtpJs4ZST3tgbfK7h0f2UMlUyhXULWApUEoc52WQyR/EqWUk2EVIc3dwomtI2rj7s+99nKdR1V1QoRnUXVQtVA4InA4Hg13f/J3/IgezjPE4eN6GGR1SEIDOK3T9jQNrvstJXTy6Jpe6q6GumrHcagrnEFOdBg0S4dJXe6+7vJ1mzodePaJ5Q82j/bKymmcjFSEE8DRDGECEkZ7zgHWsStRRUSJ2Yg8wLSP5soCMqv3WL+Yhjs5T1osWheIQkERHODD5Alx90Pvs+fqyu18TrnfTNTfvPNOzn33xuex23zp//n6833ixeIHfDT39RbH4v/8xKfKg++e/NW/Rv/tf12t3bnzC++8rNbGVwi0FyVpAjB935OSr4jDf05PWn8ziDmYsLMmTieShGlENfFz5c916+ubfacpHEHMKppSMHbb8VDHufhp9YNGCxvnsACzKxf1WeKteTM67ubTO9HnydysqE09aSP3CDyZICyHqaXgj+pSmh1CTEQUIECYlUVZavTN+n1csp6Hmd2bH3u6m7rDaI8PPyNnYSEA4a1FuIimlFuDWNoQ/d549XbUWpDRbae66nsCh3u4ETkTEQdRxEf1D/+MrNKqtlYjWrioMoir9yQnPP/C6vTzqzWTtSh9cCO/j/GEUzAawQFHwMEgAR9W+8/PXeQ57zusulbLq692Nxtkjc3mH1xun+vzLhY/aLmbLG7H/f/iv7z5P/7R9O23H3/3odvDV179bNVKE52c+K7lZGPvZw9ovCP5sC3L//IN+bAr/f1NagAEJyLRXEqBsLmHe2YSh4JU774/bf54czklaaK11kH7w67orbz8Y1d9ypSEkxNbeIumhMxEoa21iOrWzof8yfOz84Ds57rKFAg4zPExmMEmoMPp+/jeWgse7l5XWS4b1pGtNfGt4OVYX9frRMNtX/JPhJTM7PBHhCiIm7M5KvE7u5ubMDfK/bAtZUXdWegGo7sTkSFU+ZCfbq193AZq/NRqIGJY96OPDa7VX0b3+fOXB7/ZsJlSIoF5CetI7kp/afvD5kY4RQR7MIjBzs/3/hb1Zl7dJatDHZlemer9eHzpef1L377/XJ93sfhBS0Z2cQv+6Od/pd7/9ulf+WuP//v/6k4rn3v1jX2miNbpiVSipkzz2Mv5BGMAoO/Vwn4/NetkeJLcefK/AmEIBOrhhERAQYnYGDPH5HPSuNelz925c0FS97vGVBPxcSTCPnTGLAxODi1NIpKoeUzuqGER3GXPeRf+6GY7Ttadns9WWVhF2COiMYEIho9uSpYoAKMAURDC3dzC3euQTjfRCpdcVdY8b8aH9+wzRebbvuKfiBeLAESQcpN8Y3F/X9/dbt/l6g5yruYIGoIRftn2WQQAM3uzIDJzEVVNywLy6c66fl/2xm1w++LZ+RdWJycSkLpJtRPpHGZNI05J2XA17YKZQExMRHqo+gCC4nmvGHuz1p9jdzVwqrk/Cbt5XNXaPxin5/q8i8UP+oj+iiw+xL7+Z/583d5kvijXX7NPvUaBoZA0lFVEY6Gps/NN7CINySeCfL++0HFIoYYTLIpyUmI4RQAMJzgsGdw9pdQCxQ0ih0YHNaZ135X9qMQqfaPuBvT2g8tdWkoL/iSSp+aVBE0jCOGUGvWsW541hINba5TVmWqdc0qvlfF8vTrvknqENxI2goVrfDTX0k7w7/dniAh3JRYRr1NI5JK33bqvZjzuujifsx1JGzg1QpIG2pRyf9xfl5g0h6Zcdk4MVhFx9xJGFFnUnd1dRLxZSslrY1YziyOfWPa8bbjeJfn587urcVoltqhTlNQnGikOFSthjjCCSzBzqgIAjienYJkO90V5zusF41Ub30nnr6/H7a7Sbt2ffvPdXcOfvXr0fJ94sfgBSyC7eKG+/ff+3vZ//l/00aOb9766/tQXAtRttvuTVW63kxrtIY+svrXbbTXtZz/pTzDXRDJKARBAEFPgMPWKnCapzD+wM+5BERTsH9FDS8+KsVupnehK+BOnp6eMFTzKOGum2jrR4CjwBiLHoD3mWVQbRYWZGeCdKAVsuWU9U8nchYLJo3kLIWVRC5cWlBhECGtuDjtUos9yej3PD6fpprXKzKSK4HjSiWLBRsbucjiW6hSH+bxQi3CSnGCwVkTIYcHELTUBM7JTRMzUiCgR//mT4yi9SBzTaCpr7cf3bfMpPvv2H11ZT796//3bvrTFx8hHMx2y+ND6G8PZ6t/+tff/u//h9U++FlFpBg8nVCYw38r17FBPUvcS9/dyb61UtNFm1+g9mXkKXjkLxc5LyaSrnJ0YjCfTXR1EIALTsiZ8OiURzkI8z2Wc5+2498To+1UhUakSLQKITKTguU6TUgt3sxTcp6SajGh0U7qdz8lH1ZTFzVNDIjHVJhQAmu/X7s3I3cGaOrga5VG7ty4f3pR5jAhNzEmIwh3Wbuv7+2HjhzEYAAckiEEUJEGmEQCBGsJFwAKj7LpNOCWJWh/7tuv5K+d3f65fr9A6OY77ybZMq9PTfvRtV+5itR3tjzMel/rf7Pe3fWmLj5Hj+LYsPhr+8S//8iknevPtiy+/Pr/7MK9xTXmIFeja4nbaD6mQR5RShjzU4rPot8brB14Iq95Iia/b1HWdtgjC43l/ntfwAEAcRGSEIDeE+PJD/lQ1SJg1uzvD3eakJBRE9snh7J7LijGjjah9ytzc+87MzCwi6Hu9ZhnPvZ3Qx41Q2keBcGKWYmRuwlXoFG1jTdKAihny1mYzhkvwDjOzBAmRcDCFcwDkjuXzDwDGT/oDyvf2aA6Z6klnOAlEnFWzRezrLDkNXm+o3FH9U/nsIsl1jOz1VaRHR/JB36R4abI96ynapsl+WP9Pb715R/u/eX8pLVi8OEtGdvHi/K1hddNnuf/OlqeLO3ce1vEMq90qxbhjvp1a1QkBBMOFybklldOQT/H63jBs236PSm5d121aUcmvynrPNZgPJ4KDKCgCHodhDIsPpsIRsDAHQsWZC2JusQ/fhD+eJs55xX1uQUl3sGgVrWXhBOIAA05BKrQcEnqmhJnND90EGiOEE/HgNFsM1E8kv3dz+e02W+OUhmsz7RNxImI6VAGHg4l4+bM8EQT+XhQbQBCcEYS1ZwLPiAoXYbLq3vpVl2z88urOzw3n5nOt0wWxMn2X910cSWmBpDqPHXRKbN7/8+1129vW2q9Px3F4cfHRsASyixfnr58Or7/3EF94fThN282V9veomNlWh5PnPUrxg4QjiRJRkyitIrCCnmtHMb2u+aLvr2we4Vo9Sb70Sgkgcg6LcPcIZ2Kl5Yf8x6BDt3YgyN2MAGHJqk5dx10pduX2zbL97rzt0/ASr3trMHOmGWYCUeZm2WFHkqk6FqVOyjyIKtibgSmES9io69+/efz2uI/gdX9yUyYmfk1Xo1cKUiMFMzMxBblRLAu5A4IfKgoCaILGcPKgqA1ZdNBk3CaeKcqroC8Pp59JHcFrlE6EWW7IC/Epr46lq0OUtk7dHFS69Du7m/WY3y4bcfzvZQlkFy/OEsguXpy/0fGVjN36TsWcSU5xNrLdnaZr4tuaWHkaqbnPYRTcU06sM/kllRPCDnNK+pquX9J+X+fidUU0t4nCAwATEzOBA4AvDd6frlk7NJ9QYUQoAHcCujHAPDJaEtXMnK5rffP64SvDqjBLlyOAgAKtFRBAyy3rWcqdNGBuhhYDDZy6B7X+wc3luw1k3FEew4l5CCHEe/PNwB1bIHCY7xUEEALLjsQThGAQgYLQGMauiBxOotuYphjvsnxlOPtyf7oWjFJFiSgO+VtmZk5E3Dye92jZZ4Uiwsn7O//X43fWtZ+HfP34KkC/UcttX9riY2T5VVi8OP/ByWBdkmE42WOf1WqTVnG6Zru1w+h7tAxauabgmTGyOTzDt4JMkozcayf0iWH9+mp90kudSgoABBawMHOEw2w57PJ0qgmg1gwgmB8GqhHR2FkiOjGmqY61jIimzLn71rzbeax0lQs6F026I9931NnyPj9LNzYnTn0abgzf2G//eNxdmwt6MnZhEGejcBvZWydD36cAMeLQCA8WCMRhIskSyAKH1q1BBDKGkytiaLZucZmn10W/0p1/TrNyTGIQOk3dRqqSSCDcrDVxJyZXYj+OQNZhjfM/ubkZKk2ESNhvRkT8+hLILl6gJZBdvDj/3p3zi0mHHtytZyh15sT7xkIz3dJHUcWNaVIqCA1KZilCCENNHAxCEvVo1cbwcUV+trqbRJv73FqDB0gITM+7XePxMxZWBklKHoCIRYAZ3EqdKoKTdqnrSKRECiTq9rU98vlb0/UVSpe7daW7TetznlT0cXOPh6tp+vp+81abrwguHUUqDZ7IwiuFdeLM2SiVyA0TWpCDAQaYEKAIcoql5AMA4BwSBFAQgiKHr1usq//K6cWFMPc0SbNoSuSB2dq6sYcbIxIhsbNxWNfMj6Q7xzrwv44Psp120EkMbJvtLph/vSyB7OLFWe4+ixfnH776Mg/DJ0+G15NeYUvBPbpgsuZH0m0GQeytKYum7nqu39lcPzb3fnBYmHfacXOrToJK5sowqKq7C6hWyzm7OwCKZaTY0xCJux/mu4Y1iXba92fr1WfmPQ957601X2vmQC0NylzdEweDAxFhBIDE4mN3mN5hQkA8WVoJw4Krz8pCUA6j2kBu3Ln2nn9zf3PLF/zhps7m7hJIEhHuzgERKR7MDA82knDicBiJTI37lFodQe2U4vPnd86DyWo9kpTRoa/wHAGV1myVOjTzZoTUkkFNW+EK6k8eOr71+GrkDDe1XPoiLYnzm9fvs8ffudnc9ktZfIwcyddr8ZHwK+v8renmL568foOxI1mHNvPGT+omb/vqfiJOoYkRNk+TJLpzfr7OvU8jAT6XiGhJaqdQTZVOZuYk7IHmyhLhCHczWeoQfhwiRDgxM3O4h1lzq7V+PbZC3YV1a2MLn6IZRZdk7lQtotmEBsbaNQU1ITqSWsNnJZgHpxQ0cyth0iDMZdCVRZDNrQ489DUZ0pvT5p+W6x630/buWBA7lIgQZhyhzAJ4a4MIlZaFXWiUqBIiilqFo8V0h+lPn1x8Mg9OdYrSZfUjKRUwRQMxUQ7WauzeBNZJaEitXTGCcL++nvy97XTlziyI4BBTYxcOejTvgug3lq4FixdoCWQXL84vJ3bHXuxL/b2tzyehzijUcvixpM6cjIAII3gS6Zl7xAnTJ4Yz9zbCK0xaJCMEPKc6jSAwkYgwQ1SAiHA6kq3D28KBw5mZw2w1EBCobtlXV+5v1d11KyfSX0gHih21rmIfLdjvcDdw2lKd3FJ87BrPsvse5gmnSAPrHnUO7w0TtVPuU5Ud5He2V1+P+arGGQ8fszj/p+ZsAQdCwIgId4KIqEU1oTmaT9NL/ZCLudeSsNL2xvrk012fyNjq3dQxxwMfhyNZMLQkXlsGK4KTVBgI4dbBjBHQ1niv+c3d9rLamtdG9q8GsgCWQHbxIi2B7OLF+bW+B8lF17/bNm/I+RaemVkoagMfx0dRSNycQClruJVxD/ezrttHuZD0ufWdlzRXrzc2zWSUJKUuiB2wCHN3D4CWKPbHIvJAHMJQImIRYgniXfOeuwzZeH3Hx/dtzCav0bqwnWnXQ3e1jK1mEVaexDU+Xm/1pN6JaNB2mh205rxOXXFbo/+O1d+drr5ppTQ+k3UyisP6YPHBPBqCCQwnIoVoMDuRiVhtp6uVs+9jEq9/+s5Lf4pPLjKtVVmIvLnbTB6glVMcyVeeQdI8ExV4SVTgPUlf6KaVVVqPqf/d68t3zajpaV7tS4HEj8jIAr+5BLKLF+g4oofFR8O/NayU5ZW8buR/ZJtfzBdjWCICOY4kI6tIRARiCwSBWYjJwjuCoRB7T/RKGl7qV8Z+VbdEea7FEayqmpoZiJKmWGpkn4rBICaQH87HA4EI0InmxrEPc48emiJfW/tWnc6HfqpWHZRURKiBAyoJR7Kl+6wkSSjGkBCmlPeljRFF+Le3VzfVJXpCMkjxxvCevC3HJJ6KIcIKSDMEc0rZKeZSOqNgFJ97s6/ce+VzuV+HQeo6tLTawjmlSDqbsaPn3I5kwZAsiJmTlNbCiRzMqXionv6/N4/+eB6Nci/99bgL8Y7J6IcD2YfzDksgu3ixlkB28eL82tAR8HLqWfmG7YHNX8L5Y0ypT7DjuNHDKUABjwCBWSWILTCmJsE9sVubvVDCXUmf0/X9abtK0iexWsghmlRzbUZ0JK/3tngEgYiY6HuxFgNwVPboiDsWQGbCCN6DopZ3pv21t0H7VRoKjMzPGs0fsy4H55X3bpYzU7cHvr69er+Usdq1swcThJ2SEMEbtxGmuJ2JesdCIGERYM3Jo83TTqydDXlH7Y7jl1Z3fq5braxNMbWetjZacE+aWbatgmjNSViuvaYjKXGh5lVQlTX4FClx/9D9zXn7KHg71dBcAuJx7qSdvo9dj/QjSwuWQHbxIi2B7OLF+TeGrsFf6lbKYszw+G7ZfnG4cxljdyQZWQsPOIOUmYi8WQREdHCtHrOiEZRozZIcHHG+7l5ar9Yqdb93axFBytUaH8kP220JMEBAEB1KZIkOMyj8Sed9IxREMGXmjvhhnTvuLei78+6qTGvJK9XN4bjXx8mOQzmN4N+/evjdOltj1v5+mS90zUSzzyZhbipCwcqCZZDBU1FE9QYhTaRuuU33En/y9OQLuX9lNSC1gkKJGASLnPsE3ZE701BjINlHbYrueLA7GAcAACAASURBVN7kw0Bdc2fwFHQT9O5c3p8muBQlUTmFdEETbGbvOFHQDwWyl0sgu3jhlkB28eL8m0MXTBf9KhGpsYL2Yu/4zZfotPFxbLUbOwsJONwRkUQYMGuZemqRICxi8AleI1j43J2meZXk/OR0dbrez3OxIkmOZKfx1qh0AXc3DhDCAxEBEKfUIpyIEOqhAY4I91M5mdyKUEq5Wn043uyidEPfH8fH6pnZJn5r8/i7434O5OF0W5tQOuVhG6NwwGxI4q0lSVZdIwV9zN6gn1JE06QBL/N+lfiz9y4+uV4PpQjX8DlQoVzciUVddMYkLhYKqoJIJOYZZBx0JLFs1RhYstEu4s391bdbmRpOaV1RT7XjUierNYFFqSK7OP+IGllE/Oa89JFdvDjH8e1afDT8nTtnEvTpi7srxuSNNGkjwKv4S2YXJ6s7vSY3tKqcyNgsKJeoodoX90ohWa2OnbDbcW+J/uPLbc59BLExPIICHc9R1QoHMcQsWBKpeC3MPFMTEAWCcGiWLg428mUUw1NNYncMP39x0U/7sz6PdSrkRnAZFKxuYRYwInKWSqEIhnAAfkgCRwtvXjN1t3L9OazAI4kFiYgVU5A6amI3g4WqMnOrXt1U9Z/djLdynceicKQgas6swdQQREQRLc9UI5ko1B2N2IUcobSX1u6IvjacnKdMbjAnonYk37vgEAuATQgAWzjCmVZVmkRlbzAWsBsbCfEoJ9fz/HCablqrzEyqCA7YB6y8HcEIaan0JUcfxd+8fp+I/tOrpT/x4sU57mhgcVzkg9MS34lqxU611+ZEad9aSkkYJdg6ibBMsjbI5DPn2dpxNLP5YH/l1U++P26+ub3ZMTwnNtLmXfPEXYF7SsbuEWzVyMCRGhMRARE4zLgPwhLF/lhnkXc2/e71o5X753M+RV5LnurUNRtRSjgnFlEjZsPQonJDNAfHoUbXiZiSKG4pcblPOVnw1AAHPKs2xiZZX0whqslBV/vyYNrdEIoSjqTN021JtXUph+psDUGakzjKflpVdVUTVIBhKaqHB+Mrd1+xWtS9Ew72Bq/kYOr8OHJA5DwJ2H2oiIhJ4UKrkLKKKE0dWXWqFmkApWr2jcsHLTATQ5OSMBDW3BrkA0OF+F4L8IggIhE+kp7gi4+OJZBdfChcpDuX47Qr153ZGy/d7aAp8W7cNpITqLQGwSQ+l3KaVmdNRrbbvuSfydX0/knuvvLSOUKu9/P70/ZaZOx5drHiK+eepFkxDqdDQ1VG4BDLUsDYg2AMWXaGn2rfWtI+3G7gXxv3aapfPLu4451oW0MKW6VoFohGwUSciA/tEYjIEECIE9GtHRmL6q6KxJmp1hoEMl+FsHulmAU3Hu/ZfNXCkjJyxnF/L543ESmlCHGftHhMu72ynJycTNsq0OZl9FnUX9L0GfSfTKsyF/NmCKC5wRlEh43M4whkp7ATT8x6gwKKdYgY7bwUm/o82NhOTDMN1xP+cHf1WBFhzBJEhGD3COfAYYviR2LmMGdmAK01DSFiPo73ZvHRsdTILl6cv9z3AM6HIRFaOLGwExDOMbp1kFVajx4P2nx/vxWSOzrciw5uU7SCokkSmJh3VuXIb5YhQQiro4afr1YX6/XAgt3UOvG5KMPYJ7cgHpBWkQo5vveSn4xyZwQvzQ9+jA4MkEPCIJFaaxu278QeQi7KJB7B7h2YOGY2jcM7SsGHPeegAPzWBitkldmrhUkQM1d3OHcul0m/c3Pz9nbzsLWJJOVVTx3GRssd/ak8KQLksObCrF02iskq2JGDvLwM/vL6/I1h3WmMWsJaCIgRAAEC6pzUIo5kON8ZdLQysYtw0jSVAtgpNFNKTcD5ps+//fjB215mcGoSvRInIiYneEQ4mIjpA5OsRAgXaJOGRon1xgoz/W+7/Qt9nYuPtyUju/hQGIQq+eO2zyS5EEW8s53elulf61YG61cdV0+GBi9WQvnYD0ul1knHI/EYbZ5uEvLLmu7duQiSr0/jfZ5m5qy6QjbDphl1EQiAJaAGAjgQ4ceSGbo1ilJK4kSOpBxdt2nziDJYerNerph/bnV+0XfbmMLrPeguyD2C/JCUFdDhn7ilD9w1bu567jk/2O+79WmmvOH2e5tHo3TulNM6Q6bd2FAlDzlLRbuV6zwW3gicUieltRKN3dSsk4TYfKa/eGV1KmZN7Mb2Fi1zYiaIEhHc4eAgAtjdjmTBUGLmhJ6ojpN0OaUUwtdzOfHTK2lfu7q/F1JN67za7PaRmRsAiBODguFEDquAfEBXGXcPdxCIiJhFRJNYW7YFFi/UEsguPhRKlOyUTF2wzTBOUltX8E/l+o7RF7tOi0YnAeKwTrgdS9/ZDxApldak4UR6Feyt7qnUDlTj86vVV/Lqkds3xu0DuwHyKnUcpRA1BpzlyejWgMcSyD7dTdRE0WWdUXYxEnFqcaEn3ynzS7z2aP98fHze9BfzyTmvHvjUp0QhgJP5k3pkIG4v7/05W79j49wN67wulP/Z5r1RZBW5o9Ucc2sOJe07AYGs1afVMi4AdA1TmwqnJm5WV4YL1s+cXZx5Kom2sXOva3RnJM2olQAANyeyCICdiTggTEcy0ORhKveiP+V8hRaQML52f3vebWPONToMdzVfbm82vhchrjNTf5ghEuyHBs6HyvwPevxD/BoeEUGAmdXaYimSXbxYR7KuXHwkPKW0YF3ZQXPCBBMhMXSiQmxEN60+bG1T6zqvUrCq7FuVIxn5+EFyRERYOFQOP5PMRPAz6SpZIe8iPq39q2loVC55f28GEZwpAAJxICicg5ZA9qnWkZvQFs3JO8fgIuAGvpdXj2Lekl/wQBXfHDePze7l88kbC6sIe0Q0JhDBAL6l9/n9FifprEj6JzcPvjFutPBZWl/D+9lACEWFVXhzQ0QSPY7w6vYQh1IMhDSO95J8/u69u8rZ6k0OuA9GgwsFDCTEiZTzYSIHMYgZHu5wo5Aj+d6tNF3XeSaWyJXSH25u3iuzNxEnT3lLvg90qesh1J50wCBG4DBPzwKBgIA+aMFMTIQg5yZNQr35g/1NRPzG0kd28QItgezixXlajawqAWtSmkonVFphkeK1j165r5Dr1i5RH+1vzvJwHtyOfGJT85E7NREDrJkCGSTNRoBASqhos7oqvRT8C7za7SYHjMmJOYgCoDAOPpL+lLelGvWUpNRexJhGuOeuBqa2W0HWSDWoBSekBvlOm3TcM3Nm4gBFELMTHM63NLDjq/v6zWn//jRp07UOhVEDuca+KxBKQAp0pAg0cBWWJRn2VDue1qJv3Ln4bL9+hXUV5jbrIKtJYQFVU64IQzhx5ZhRmjVEKIsQCZxhiQ4DO44AGTKnieVfXD36bilTQ5/O5saiQa1l52QU4ErhSWYPdwtyMMAAEw7fAqf4gBpxjyCAXTx5osxBl9OOPH5j6SO7eIGWX8HFi/OfnZ8D+JF9ZMV/uh+GX71zXsueGCHmTABb9cQa0ZLk1sIjIEwUWWDT5Jqfz2t6Qbw5pTwFfefycgPMnNAN+zpfBLXmuevMjARTnVydVKTlCDvkEd1dSYkkIpyWGsqnMXYlbtN4kvKn791dAdhvVjnPGCWQRM3CiEnYzChYHCRCRHbIYQH8pA/Rj358CXZGZQBBYU+aTpA7kDjV6pyGjcV3bm6u4CNhHUuu4WkoLJwkJxisFRFyWDAlaPEgIoGQG4Cm0cT/0jDc9iX/TCZqykIGNVIATCYxoWZPDGJmC5/CEktCSLFvdqub3X4zTUZKou5OAWaOeEZlrBxlHlf5DrTsx5r7k2+/+04ehr/94P6zefzF4iew3CUXL85TMrI/bWbxq5v3J5F1v+5dtIJAEI4kRi3CEJZTAsJaQ0A0+ZGfDkuJaymien52erZa+ThRmdZEY5LW8bYWN9MaK+1VUkVoCyUWBhMIYTCHB5w+ZiNbf1pWWpf7JLm5b3fj5eZmMtP1SU+9O3toCxBxIknNV0ZN4jCBzOGAC4JwONGeCPyv/msoTgE3tuhMEieCmhGoe1zKN3ebt+f9A2/75j3lM3R1aaf1VK5xKLZpCBcBC4yy6xZNiQU0Uy1qfaYvpP7Pylnl417InVtip0phvVRBc+OgTAnkY9TZTY3OoiPq3vH6+21X921filmAhUUAIPxZ3gMIzOSNSFw0e9D69KxM0z/a757dcywWP8ZyMmBxlM5W9x7Xev3oscDOh+71bnXHoxvrVRcCShG9WwM1RBEiFm3HXT0YYURBbeLQE+JPrzJJSin93++9e3JyWpho6HelzoiuYlXYega8tWYRosRM4UH0wW10FgCAVRq8erFGxMYg8Oh2/fh66/Ul6T7bn93VNbzNUXaMGHhV4d6ISZiJIszcnIjsAzLfBk+UEzRAzmlkelCnB9M+gkA8kUZwGAdodmrky57Z09mhcUe4OKsmi9hHq5kvottJ29h0B/xz/dlrmtzrnnY4kpKADzIl8Wjw0KkIMTO3wGgNHZ36kFwvrfzBdP0oQiC55j1VgKFMcsjCBhHRoSDgWTg8WE5prhMxWeDB5aOUj3v7a3F0lkB2cZxqJKjmVbH5/m6+2l/e69OrZ2d35xChGdNjn12Cu5RJoh53GgZAbZ5SIqDWysznfSKSWue//MqnH9j0B+N9p7Y2oWbc93uFIgB2JIQRK9wiXIiW/N7TeTRziIgktYgW7s6z+dr7jcVXaTvPs9W6Cn9FuldX5yQCE+dg54C7kRAya/mAd7pHd9Xqd+fto3lsoC4NiVOEPiAfRDsXsRCnAi/iRbmrL/gNODKnNhT4CCuwgYysSbQ+d7uyeWN18Qm60FIK+aXtQL7OuZbjXsmN40iZUp8oKmpEMw3ppeeJ3qnbb8W0MdfQFVYO2qD0kpmZ6XB66/DaD6ujZxPQj+O4XvV1qt3QgVJpaK3WuhTILl6oJZBdHKWghuLUaMXZulzI3m3j/eubuzNevXN2rzs9Yy9lKtMcKfDk8MIRI1J3IoKmLiKqm1lx91Hinqa/dPoytLuO+tbN1USTWXXPrCJJBQnuZk7OEcf+Njx3DnMKIXGHtQZwViXRkqnNRQkJneauRbzX/GouQV69RgQQHCD40PVD0vuPpx/5+CRTC4+gxCd9IGqMqI3iQjpv0dxKeEqiLKm1KO22BjEci515r3ouaRfjnvaZ7DWWL0rn2bJS86lyHTSnyFsrm2r9kX8BTs9W+/3Wp8YgAjWWKUw6/urDSw5izn3E3r1KHSSdUz/6HOGHNgQAhBgkFHhKR62fymq1qnUe+vOxXJc6r07ulFJOT08xLgMRFi/OUiO7eHGeYY1salVEIssOde/GLL1r1/ThgM00b7Yjgbo8JFECezM6kkk8H+QwZao0C1ALB4uLSNf1Fk5euMHrS5rPJZ/0ubSp0+RzidoQHg5mVhY44rjfhudOk7q7eT0clUtMHOTNq5coNRmJBTkBUgNGjAa4gARQuISTO4dxcyaSH/Fv4wgBiUoWYg4SpiyqU2UPYjo8GCGiNQ0cywSp2yLC25imGO+yfGU4+3J/uhaMUk8EQmFeS5gLAJagPpLTcZcYFWsE6lOPSs5pn7tvjJuvXd83Pa1gJxFoJtKAh5c2EzMRHyoKDi0L49B/+hktkJo1YbIKzaSaPejuvbvTNC81sosXacnILo7SqKrEHUUK44CGHNoenoxOKpcpLttMV7sTi8+vz15f3dvUq9u+5J9JRKgKMwVTNGeiMKu1WXNVVeHK9jgmynQBudvfecDxuM6jh5NM3oiUkywnh36sUpqICgkD7u7uCBBRclHVJOru1Y3gisgelZyISPiw0vDmzVqpFflHZ7w0DdlBHlwLwwvFpGgS607Ig5lTK97CmJ2Qhs7mo6+Kea52sn1d8hvp4pTQyLds6ORC0sYmcUvBPTMCDoeQH3cQCwC5Yk76kPVb481mKv1qbSanes5GJbyyG0gQQqREzAjiJxOWKeJJe1gKInpGGVlmNqudam1zAM3j+vFWZFl9LV6oJZBdHCXR3srcrCZGEjQqFVBNwZ5JusrhZJK2yb5ap9958PhX75zf9iX/TJgjvFlrOfXhoObi0aeMpFObzazLiaoJ61QLpfQyaLXqYzgZib5z+XhbR5G+kenSzumplDIc7q3CVJWYLJxIGFTNirUajQRZSGvjVjWxIay5BzGzqEiIu8cH3FrD9lWpJoogdXRIK4+YvHVcvSXAmZMomNo8l+JLYcHT/dV8d0aLLrbRyDyFtMC2zj11DnMlcFhtEcasJsFHHster/Tth5fb4EKdrtYBrvO4GnqnqXMnl6Ao7kZMzMEsEREOQCjg5AhmFU7mz2ZgQUT0fV/HBkFKyWvsdlvO6Zk8+GLxE1ruk4sX5xn2kf1p7Xm6QP7C+cVpc7EqirFNedXxniuadKl6I6Jaa9LsCG4mIgS4O+AQNobBkh3H2s8QHBCEiFTwTbOH03g1TVN3khoJ8dRMValVVhpRVz7MqCYBjhQkzjBPnKal7+ziOWgQoqAIuBFR4kRE7pjEyCKJiHPMc3BEx9UtZu5Xw2wja4i3k2ZvnN67CBnlOCZIlZiVkxLD6VCq7gSH5UoNwUruDoBZawRUqu5sX05k1UdXi1s3XJO/dflg5u62X8q/JAhwU8ulL9KSOL95/T6Z/yeb7W1f2uJj5Dh+lReLn9GpD83aW1dXNo/rIb0+3O2ANsa+b9mDW+kcQVBJ7MHgOVOrDQAzMyczgwXz0aQziZk8zC1aEMlaRNYn99Zn2fjr28ut20o6zvweLIFfofVjHpV4BaHZyMOT75Nf03RyJIH74rj0cASCPBiOKFHDozmG5k7M5mDdDkwUvZOAYnBuu4vqn1idnw5dmUdV31g7lk9nEj3MvYjwiEOZtYOQhtU07r2ZJtagaJXMel6d7VeIdVB638ofT9fjfJ3zAD6OtlaxlBYsXqxjuQ8sFj8TMplarZnberi2evXw0QXpp8/uXZRt63Tjkyg6l5XwPNfKbgZWAeARZi7EDEYgjqWBlQMAM1MA8ByUSZl0TNNfOD27Cv/q9vG+TC97J5zf9f1d1WqxR9OkQszhak4w0HKLWDx77g0AOJgZYIoIFlUCGtfYs4nEK6YtYsOFgaHNnzl/6R609/DtLkuQpjEanvNOzrPCwRFkCBAOh64IJERX+21KKWv2Mkug74bS6lhGsvP3fXyvjFfRWkhGajNViyTLJupi8cOWX6nFx8KsgHSJBWbwaMKXre02V2E3n7tz7yWcJo8Z5dpb5dqlrM1hHgD4cGgiiIJI7FmNdnzOKAIEYo0wRIQ3cvMoJ9Iu0VK//tXu9Z3ha1cP97Z5jfMjn1QzR0KF12awNEjOqU5HXlS4+FCqmd2dggggD2rOFMzcQDakoZpZfTfNZ7N/qfSvn9+90n3PxHU24sZeraaC/miWlQhDUIDAzAGQBwAKnBJXb+5UmWePsRaAuVv/1nZjtbXWiCSnjpm5oodMWBoLLxY/bAlkFx8LrIHSYqwSkVSCpUiUMOWTP9yXr/t40vyNs/MzElctaF3K0zS5N82JlVr1Fi5yNN3UFezhZvak3xBDGQTsRU9NeY5NueKcf+nk1FPaRq33r3ig2d1ZqEtKOch21/uu+3DV5C0+GsQZIQAIBAZSRMCJxIO3ZavlrO/+Yj4/7dG8aOxPWd29hhcBsnJoeKAZ9DgylEQMCgH80DjAgwJg2q+CptbPtPIUqbui+Pp4db9NjNyx9NpRICJKay085XQ0kfti8QItgeziY0FbM2tEnLpUPKZxVJbz4f9j716Dbbuy+6D/xxhzzrXWfpzHfUjqltS6krrb/XS623Yn7SQQQ6BcMXygkg/EIZShgDIkhhDimABOyMOkHOMH8IGioFKBypeEAAFjzMt2g9OmKMrY7Vc/1K1utd73ce45++y911pzzjEGH/ZRx6F0Fctu6dytu36f9EWn5tp377XGGnPMMWbjppJLEX3BNrfHs8MBT4X5I9ze9O286zrmWsYyZmZGCNWq7FvrZQcTEbEroOY0oBC4oShtDIxcU8HC/dGHnnh1OH/2/GSIUiUMpXTUtm3r00zbyVsgFXImIyjBAMiuhiczcDxvvpmWD0kYg406gOpJR7Yp87brYjfknMciKXoQB2RPvp9OF+skcwIQhMBGmK+0tN1p5JdW56erOxIa5nCFF+I2wnuuMO9ckjlgxS3t2/1nMnkbTIHs5IFQa22bxgx9qWBq5zNW36zXDQcjCNFhmkuxavr5uv0cbxeG66k9kkheoRwkMUv2+g1qv/iWq1AARBSJjOAGM3P3eUiF3Ylcyzh6KdpKnFE407tdog8cLdrZ/Hwoz53c2XIZo8i0kzl5Czg7GDBDViFvhAnupXzk6jU2r0Hvek1DZcKYglSkRTNu+uKIMUqMuWjx0jQN6n501VB4IMDd3YSjS8jmQ1Vu5i/dvXvHcokxzpdunocszOtgjcvcpcK2XiHUQQ5NzjGV+kwm/39TIDt5IJQYYEbVAgcDSlYiopQ2aRStnNFIU4p5SBXujlPW1e27V5gfO1gezpZWchkLBcGePEiMiQBygoHc2SHMxDSwkZqYu1qIjTRQkVtWRYd509h20D4fSPvB6w+tQF+7dbKJ0y1i8o23DcpE5Cakh7G5Pp8dhMhVg28qWeMEljGRUOggWgw2RiZmNqg6hyihIORa9+OsF5zMiAXEIACquh7L2Wb7knQmQVITivNozLBAFjGr0dwrQOAOTODMfrPmbi8OX/J+1HtM3jH24VcxmfyOpV1reWGDYfe9dweQcgIAQYYhElADAEdhQxfvVDtdnV08aFPLVRO21Y1TKI5qSBS4cFDKqUSRkgcwqVnTNJpLcCmXtBP4WjWvOwGvjfFxOBtAZCAKrG4EhGoLANTaiCAzANUBHw+Aj1ydtZA7Wr6y2axD3I62aBcYSyQZ0ROJugWOAjIzZqhqJWcGfX0Apjm5k7NNz7Z3NAMZEEV8HEMIo2sIzOZ9MK5IykLBFAishOrGDh6GK8KPHRweNtFKrjkjiHlgwBzQix9pRYUAYPBuMB2xA2rgy2xxbFTdnUgChYsWsCCHmooQk8AEZpXNATi4KcpNswGthV46P9+qZVNJSXYDdGsFwQkKEAkqKvwfaPLuxor7MIo1swAwM5hIuFalFKxOlbyTt9V998OYTO4HsypgMid1nJUynJ8T3Ev+2PG1SuoOUo2mxJ7ZxkbCiCxcY0gs7agYLYPGhlPdjwzuvZxhPEjthz32ws/pam3brZcaYlKpgRWSS4mKTsRgo+icGnc3NXcH2a7XAxj7UpIx+e0ht05BzOvEKh5Hl+oDNG0YKWR2WO2iWB2IamKeG12/dvUoBRr7fjukJsQoWfdmkpkgggCQmdddCwJ2ZupYVnVUt1SZmUe1RDJHuN3KZhxPzvvBuVeLbUdCBNc9nxpNu3dWh6qSKhNpqTS9tU7eXlMgO5m8DjJyEEiQRIGe3d0V/rP9ycPS3KjdVW5D9N7zaEOiJidJqqkoRRoaVsALzVR0T0oR7mUu0bwq8qF0H+xmo4Tn6OyWDZvUcl8OpGGKNXjPNWtNXau9wxwgZhAFJThZhYtPz7Z3sjnxirObds4CXrEx8wJNpLTNQ5qFjfVFxsNIH5gdHVc/1TIXT66VvIqZVSW4G/bkMJOrg8ndiKiJUWGqama3ebNk6SSd50wSG4k1hq/W/PLpWp2KM0tDwgb2mk13u0B7zP0ic0xEDEopMZFOGdnJ22sKZCeT15GjqwO79kAAFOwk1DTZTlBu093DGG+E5TFiqI1IXJppoJFEYVwRHeRE5PueidyahYtJPRVRW+Eb2j1pC0ndM+Otm7TN7vPYLajdjFvOruxgFgOBHdi1G5omYb/j3fU6l4aJxpyz1UVojOnMikCRLGi+UvSD1x5qtcJtjHolpWHoe6shxdikWsyrBwn70iVDCYHI3V0VROIKNwDXaXbmAyDJm6HI58/vbAMHjn0BBZYUDexVtRYBhch7c3r0HpgZu1llDjOrXsecg+zH28jkHWMKZCeT16FsZkYOgMgI1YiImdnpIHRGtqnjZ89Pg/lVik+2R4HPCUTwUKwNUZizlyFvQ9iPqZL3wooQggtl9pxrcJpznIXmzDbvPZzdSM1zZ3dv5U0fnJ27ntcLJUdlh+5Ss8bMkfY8Lz35h2kkabUi8FnrtZRcpNBBDJuwPq7yTYcPtVW9lk3eLufzMNZRMgmzJCVSJaYgRATRPWn4T8FBLgQzK3kQUBARkVyp0e6c6Avj2SiBlBs05yXPu1YdpupeiZyJLoYi7PlOhbtXswQws4iQIskUVEzebtN3bjJ5HTHv5gg4ExmTR3ZiI/JIvRV3Eg/HnuB+UsZbZycdzt4zO353s6Q81KJbypKk7VLdj+fyPR0i9lVHmDjPuGPmkfQuNgfiFQhenmxm70uHRcJzvH7VMsbMLE5CLExMDnbADNiT4+WT35YjTbd92NRxKU2Ac7BjSo818wNpy9x69Keary2WC57VqhrEYcwMAHaxPe1O7rZHyftaq4AoiEAoxOpYDblKfHFYrVxNpZF2HXKg+EjqzrUns0Ck8CC864U31rrvL7q/mYhY1SYmtem9dfK2mgLZyeR1MAfsmuaYG8xAbloNFB3ugaOCVlRZKCgvC2paPrfNL2zvzNTfc3C4CFKpnOZhQfGyL+V35JRy53xo0R1b8UyVYK0boeFSuOYUg4tXHR6fhRvSfenkpBpGchVyZgKbVlKDTIHsO9lN3x7EONcw1KGDv3d5vGCqnrMQcj0igsRh2BYQx6C5phCtVgDMzCKqal6daF/2pFm9FEMMRDKYqfFgftLnuzFHQEyKahnrwsVRX9btIsbdlo6WokSqFkJI6aLjwf5iZiKQUikleMi5AGjTNA5w8raaAtnJ5HUMYCInZ5gSUeJITEaAjgYEYnOrpVCgkmxk8BA5xBxx17cnw9lhrTfa2SNxtt6TrdJ7SeIFPpBDafDOTgAAIABJREFUPTp1xYgcjOJETVJTshpqnpt74Or56SvXz8bx9jCsaqmsTCEQsUTd81rAyRvTFquyvQL64OLKnN1JB+1jEstCUTZQIhJHo0ZjYeZcShAhwMzcjIWV3dzE9uOFRzw4k4R2XcqLJ6dbYu+6jXqqWonBoW2jmfVeiXyeohqbmTBDQgiRvTKCVt33jYpaaxQmInePMQaOhwibbX/Z65o8WPZnI2ey//7i4SGAx4+vzBiDVQoxVAKsyN48wN6sTx2KgxW+m0zJYCEiR4UbjIjMrJEgxDlnkFlghrADBiKAvbpVK4n2I8nhxFZrYAmxORvLC+dnd9Ws7Uw5ELM5qbPAoCOrinclmJC7izoAFTICmfN0a7pUzlWMyaHEBmdTCCxwU1HNnSIK2hCKjZp0oPpEpsP57LCJwdytkrAS1C34fuRYWSxX49RortEpCGrNEhk5UGQQwbWaGnR3PH+U5WsvbLUwM4UAZ8cD98KWwpg3JaZZjsE08/DCuaUQfuDVFy57ZZMHyJSRnUzeQp8+G0KpV2J6dLk8EkYZ3TIzHByJA3F1MrPKrkwptKYjvBrY3QlERsQUJezLaSmDhUZQtd+epxSffPj61bHeWq3OYVYVHjimXpVEgnPY1hy0rQKmIZG7dgpWH2XvD8HsOzHuyYhl7izEQwxeS7O1bZJIHFk2YchhnAEfahbv5valbmiDCBOsGpzdefc+sifGis5D7B0ctuJrVk6BTctcw1ijEUhCbLVYBfeBn7tzqzpGYoQYSBi7QLfiQTvqdGdj18L1jZfIiXzkQFZzvx9zgyfvGA/Yr24yeXt1OKIWZ5ZPT8+Wid61nB/KnFWX1ZWggUot7sxGMGcgEjvcQUSkcMDFiIj3Jc/jUDMGlMUCeXBN4vNZsyC5G+iZ7emZF+Y058a3ddYsMo1rK0Q0UwJ4bZmZDxD7By2zdZ+pIktrSq2nnono0Brh1Kc6RzzzfoPxONA3zY6ugYnsTFeL2JK7qcINJA6C70lLWADAocUS6ES3jaQElkoew8r9WsG5q8YOBduCr5xvejdx3kCZxYkIzmbuxo7dVsqD5Xhx9XwgsmL9iutS5ujHG5/4MH7hlcte2eQBMgWyk8lbqOiKijORcBiUnz0bqpm6fevhwuBsFBDmLOTYeD+ota8Nl3UmBu1ON2N/Dv1HBK1KxLEJVrVfnzGH46bdoB4qf2tzPIb4uds3t8lrkhG9ubYSIng7DiIy4wbCdzW3+xQFvQPNMveePfBBnFWzs9KjehfTua8fDc2T7eEMbuKnumHiwExVzcwJzkREtOvB7OS0H6HdGUrLsYsBwbe5J+d5kUcxX5Xtgmfnxr92frtniRpSmp3lMbUdOZM7FG7mMDAz877snHyjlFLWgaKAIi0G/uVbL/6JH/sPP/u/fPqy1zV5sExPi8nb5zvaFsBh10VCdSMWNgLc2PkdupXsrVMkEjgAF/NAnJjTs/Vcja+gmyFW8h4VhGVKVWHmjou+8AIiIsLelIwGRCICsTqcwCzEpG6hksSwGbYdybu75fVuvhlWWxkOfOZDUbgGlratpcJJMHWevWTV3VMgAdUsprMUOpFk+i3Lw4NAJFoxRKbk7Cwj0BDAIGJiJiJzJ8dua+GyL+W3RAVuld0imAipmW3GPBr61P366u7X+q07z9vFKg9M/EiY9VbIKSgFMDMTk5MpvWPvY/eSSNbJg1s09AQZW831d33nd/zET/3UZS9t8gCZAtnJ2+cBDGRtW0USQhxNC0oMFF0pDweY3y3jV3R913MnaYlkqlsYh0AsYCJzcuwmme9LFAsARg5ymDsIzEGcWB0IAeZNSKENJ8M5BX+06d5L88PQjj5mNocRyyoPEeHY40hTmd1lWjXWAaGWqsMy8JPd4l1tN4t8xGA2Dqhu6lTNI2RGSWk3lZQu/u0BJiLGvnx32yCmBhBT0EyF05c3p1+27c1spNxQ6t2IuXMh+CvjquOG1eEAGRGcAIID79T72L2wq5i0ldc63O7rv/Cn/vzt557/xH/0w5e9rsmDZQpkJ2+fBzCQTd2iZuVc5xQiaCxl5GqLlEdtKC6k2bo9X/sXy2CFrtHBmgoLBxE2d69MIIJib1Ky6uYwBoVdZq6qO0RC0eqRi1av5ZBC51RUNREHuxbTQZNWwxqOJWQe25M6TG1nL9fMrWqZB/7A4vjx2YyoEuo1iXe1d/fEQUyiRHMDw6xWMjgAcncGMZGzOxntyXmv3koTWiuyIfnSZv18zadFhVOqYsIgTkpu2rPVRrq2jQ5iONzdHepwOAS0L4H7N0pT8jbFGVKZtRsPp3de+dQf+M4f+bkpHTt5Wz1Yv7rJ5foLRwfs9EC132KYGxnt9tnDa5OuyKRUcwizenRx98EqdenRvN3rNkaVVIjF2M2wG/bjXk1bZlV1dmMYCwBy9mrUlHEo87TwwiPHL9w9WUWuzM2UkL1Uh6oPLw+Om4g6wsYkrGwbKwuaVzUlqGpKyVyZUa0QyV63jWucz8i/cPfu0Hbb0brYRQOpj8F2tb8cBOahGJkH4p4r82sbJgDMyZ2cjR+sR2oJ46Eub1k5gJyz3632b3/t2cte1OSB82D96iaX6y8fHY5i720P54tuXUZBbCBD7mOA0nTuEACUTXNpJMyE371cLhkzmOe+hI5chbjWEkIYLUsMCo0ZJKzVOUgpYwihuokQ2X4EvvfymZN1Sq07sTJ2FZcNj16CZnZiiKqzRApiJTPzA9e/8x6EG7ViVgVE7OoEgEjEWL0yw7zGKKruRKPZYW6oiT3l3oeYOORxqXj62iNJh8u+lN+S7GPgGIhh5A4wjGDQUJ2IRKSYK8GZNZcQQrHcgruQVpttO59npbXZS6d3V6G97Eu5L6iqiJCwu18k1x1wL0EH+FJ9QNdZttSsy9khNVVGxXysB4K+g333V5+57CuYPIj2+2k32S9/aHHQKV29cnQ6biRr27bbPEoUNwO9MzOyb1YgEU5CPI65H8d1v7XIaFsu5yJkbNXUiBLFpIEGr5GcyOBRAhGLBBjcflOuaD994OB6B92Mm5FLTQC5mEuxBlFBHpMyOxyuClV54GoT72U38pSZiJmYiHZNBNikEu82A2g0A3FAmEk6Sf0ag9n4kMQPz47e2yyXTCJ7UhCA3XwRhpG5mxsAuDoAcAWMyM0ScQsARozj0K4tG4twGhE+t7rzSilVok85HQCAiOzO6u3AAXcHDtdhmBlqWNSzrRxk376reXgzrIrPg3dEtaL9nq/+xmUvf/KAmgLZydvnez/5ST3vvYtHo/cLoW0lltBGc6PpQQIA8GwEkCRwNJbebK16dxhvtMuqntWkacBsbhUaU1A3Zt41PFLdHbEKISR3vexL+R3ZlLMu8SPz2ePt/FBhQz+S9w0Virla4phIoGrkRg6mKZDdYXe8tuVtgAMONvfRBmKwcyMNFRIK2euAyml8ROIHm4NHQ9MKKVeQdSmo7UeGm0FwUrgT5CJyhxCLBHKASd13/ZhZvXV+2WqkVJy+cHbn+WFQFW5mJ/B2Py73LbcbNutwAMxMIBAJMSU+83BgTF20fJri8Z1V/2op3/N9f/bs5Pb27tm/+NVfvey1Tx5cUyA7eft876d+9+/543/4y5/+vxuic8sHbUdjHVyre5gysgCAIOwOdTXAgxhzho/Vn6n11X4cRxyGdmYUoFpHl4LK7BBiYWYiEBxu5rQn/TvvxcUJrqUPboez2fF83rFgM9RGbMyBoWyDqRN3iDOPdWrXBQAQ4l3HK3UDdhGtA7QAuUl2FIcESoTAGrh+Ms6vhbhoE8Rqye5eSEf2YHvyYmBw7ArQGUTkIDiDtjqS6oxC4lAdmSUTVUlfWq1freWO2lCdpc0sIGlGm24/X+fufNFHjX3XBpCoJ52PYz3wdrUcD0xht85WN554+nR1+rv/0T/4yf/mv7zsVU8eaHtyt5q8Izz/n/7Yr/zdn3n1Cy88u/7ah5bHol5M60Ebz0cL05MEAITcAHcyuF00WWchaA2UeNSBkOfkNw6Ojp26ajWyaTWr7s5BHDBiNQt7/tMmZWm4t2xeWT0iRYmm7CTPnN28KT4KJwsztKoYqoa43xnobxSGGeC7xld0MZvAzIiE1UMI53lDLTVanp4fvQshsG+taOBiyuatRLibme/JoaWvz1wwgrvvmtYxc9Ng1Q/EqaEkGrbAV8v2Bd3OvNvmkYMkDk2Mw7AVQ0syPHgzud7ALqPv7ma2+xLFUM81R15u/c5Lr9SPHL5nhc2dzfrPnd2+7MVOJnv+tJvsnb9+43fp9flXv/rsx8O8P5JR6+K81HlynTJqAKBadmVqzFyrya6fEfNoNUpg890HFZqUXUet37ZcMnkKMK3sZmYcAzN73fMHMzdmFbV0EgJjqyUHKgIq3mQs0+yO6Zf79S3N8DSjxlEue8X3BXbsWmRcxCJa2Rwwarqz3KfEy7F+8/H1eanSyklZg0NQn0lT3QYoBUmKpBhkz36PF7lDYQI7Qdll0CTdbSvP9udn1YKFpUkfQ0fBYKd1ANmcEIUHMtZpc/LCRXWBX1QXgAlA15f1Inzl5gvvvnbtX/5j/8pP//TPrJ4/+Wdf+vXLXuxkAkylBZO32X9/+uo/98nf80/+0T/+k3/vp2+gy4yx5cXgdUrIAgBCiADVqgBBLYSA3aOlRdEKOEkIIZVi7pJie7pZbQ3cJGIJMZgZO3k12pOM2r0kd3dXNwQxInVnJoIdSFNIM1nj/nhoH45dpXzC22jxspd8f2Byd5Awi6uiVmF0Md727WMSPt4d3YgpNbTSjTMaDx2H6jaKO/kMkpwHq6tgaU9yHAoXAsHdTThQCAXYVmuG9Oz6/Nd186JmMz6SWaQwusY6DqIafEkxEXr2DEvqoOlRCADuTkTsIIcwcxBzG2spdPWZu8//81e/Sa4cnvTn/8jv+70f/cn/+rIXO5lc2I+71eSd5PM/8p+88rlf+dan3/dDP/qX33d0/YrybSnN3pyTfmuRiYiYVY6hlMJBVJWZJcPglLhoDYFrzUJM7iW0nse560Ls3cuDmUgjbGOpst8ZWbdBmjYbuYOqRSAyqZZRAgGBUExdOFCgUZPLz/f70S7qrUYkF31PmV2reF227cF89tRIPY01unlug1gGOFZzCeZqzLz7v8hZ1Gex2dp+ZLgv+hY7XI04VKazsZxtti+2C93089AI81AGE2JmMdSmcDVUcgnkLMZOZkLYk8NtbzV3FxEyNzNmdqbt0J+tz9917Rpljlo+Nrvyvi/98mUvczL5B0yB7OQSrH/or332S196z0c/+Td/4Psff+Io1n70QzXzuR+sh23EiupDtVml0FWz17qvu3vRGmNU1T0/y/QNc6/A5T3jlru0tVqrzUNiR8kVgYN5ITemi80Yq8EQDIX3u48vO4xoI/LMnTuFo1Zqm+U2lxiLq5IznI1F2cCkqsJgB8MNtDvXFJzYWXF/1dreqy+sEge4u1YxF2bzmBGc1sRtjLX0oLokf/Lw6NCZtJQ9STgaVXcnkkDhopUYyKFcWgoE8bH0EFYtoe2K1ugaOZZiHLtz9RdWq1NYT5jvyQCRy9J7bkJMJrvBJbu7KQFumdrFOQKKzwOXvG5Ivv3f+p5f/m//583XXvpjX/7K5S57MnldUyA7uRzP/9h/8Sv/2//a33l1e3v1zMnX3n9w1Byon2wtLs3ZmznnrZVXLR0z865NN4Baq+w20KevLgCAiMwMLMxstaCWINSGcC7bp9rjd3uKqllsJHX3WYrnVFsLom6qZhaIPYYiFOr9FcC9WRxxNg5N6FKRIuGLq9M1GRm5u6c0WCVIC47uWqpELrsRawAAhe8KARl0UWp53/CLyNV357b8ossY85hzF5wQs0VDZYwCl5BqUdQjkqfnhy184KyuBzHVuh81r6/1PyZ3r2YAiMGMWLinWgRtip1zyCilKFEJ8awML2/XPZOFVEdrOUWEDfLlXsh9bgnekvZQmLckASHDMiwGpnGoqc6cX3zu5nf/xI8/85nPAPb4t3/sxvf94GWvejJ5fVM0MLlM/9VTH0+Pvetbvuuf+bv/wfc+cvz0mYwH6vOwzOMqmZ12B7H2IYRaK4DdBigzG3zKyO7c63BP4EYjiucrTk+2yysh9MhbqZ2FXaxGTsysxAY3s7Dn7atOZXvV2yW3p9stNakan5F9rT89N2kqGg+xSSfrFbVJQGxKiAAY4u5OtotlnYn1/vpikbkzvdYXdrc2dncKmqp7oRIEQUKtZlYbmtH4eLs8psAwrrpsmg3yLRuOvbvcC/mtsosy391cLoWpKmC1YxlqVyWANmPmthnVZvPlL57cAfGgxcHO4tUFQYiMphnHbySzhuoJDKYeCpKGJCnE7Q7rvE/f/gP/5vOf/fnh9ulHv/M7H/mTf+qy1zuZvJEpkJ1csmd++D///M//j9tXbm5evhnmpDWTbVTmVbtFGuvoIQQzM7NdUnbnfsucXZZ7tVvqiy1Ty6S99Sa2YHqCZo+lefE6QJ09sbh7j0pEHQfV/c7IBqtVwBTKMMYmVWII65jntjgL+rnTm1uhyKmN3flmyymyOQCG7M61mFclmND9dlhfXqt8+E19YeFOLekIuFODWElHG65JfKpdiGQJgYioFqtKQYiITG1PRkCrIzCbGcxCCHDdXbgYeiinhiqJsaXmi2e3XrVxlFknsSku6gLKsCywwE3Z7+/zW80Dl1ICcSIhcyeM7KOrWzjG+qNrLz/0venv/J9p28drD/sf/P1PfN+fvewlTyb3NAWyk/vCX3/06asffuqpf+qf+N9/8C89sXx8fUTY3qlZQkgX6SizXVOq3X9c9nrvF/cOdEJhH6xCa8fckLirERjl6dnRldRty4a0HAapbLeoX9rici/kd2jmstZcIzOziOR+SIQ5QmWQcwZtU/zcrZtDCGQilSxaJXewuCQnmDvZfTgE4F4vKtW0C2kkG+t4TeJ7m24RaQx6mOXcchWKMRoh55ycZhyH+6z2915MXIjJ3Eo1MwGJiIg4pT6XMYXnzk9PzSwIRusoqYjBVdXMYpTAUuuuyvb++7e8n7QaK5tFNjMt2d1jFA7y8SNK56lv2+H5r3beH4yt/dU/t/5bf8tefpkPlh/+pS9c9sInk9cx/don94tf/Y//2rM/+3/oS6f1xdWv3f3yB64/1sbSk9Rcdl2odiHslIv9ze619cxQdmZmAsypkhdHhR/AVpSPQvhgOjiOcuY9W3kY8c6eP/gHtwVFZl5ZBvncRUAbK4XHNnW+LQu0QFiBvrg+vRtwRLKxMjiYQ+MhGAxq/PUi1PvFvUpHYjdbj5uF89PLo+tdM5Rt1fEgyKaihYDpzIqEMIMAONfc7cnoKhN3NcHFV5pCNMd2yE7t17ZnZwGbXOexC5WKqQotRjUmFcrsIiQgy0WcVKbDXm8kV01B3L2ghkhHFB5B+4i0W1+180Va5zPOPpNKxV+4Q+bh0Xf7uOHHb4RHHpcPfdvTP/CnL/sKJpO/7/66a08mf/vRj97sT9q2axfHv/Tq5z9+/aHtdjtruxBCzpmZMdUV/Cb3OgwErbQ7CsZUHGCKxOTYQo8gpYynvj3qug8vriwhJ8P5QdyPQOfeKDPYrFNy9yHAhGYuGtxzZQcHGaoiBPFoqqta75RyR3Mhjia7ZmXG991r0r0O823L5v3HD72rafK4Hb20MbnZMJau6bZeA3EcawhhjYoocZ+mY1gpyjEQy2Cmkgbzk9X5bTYUjwhCwQnFlIRDYKtK5sysNRsczAZv27aMU43sGxGv1IZx7GegpxZHD4dEpYAcgc43qxTjOoWZdBiNivMs5uFse/K17vGn0h/5V+3/+rRB5Ts+9d5/49+77OuYTIApkJ3cn/7m+7/t5fXtefAZ2+r8fLlYNjGN4ygizEzm9+Eu8KW4V3smDnJxQg7OtgtzydxhVAXMSEbuPlIlokj8LYt02ZfyO+Lsog6wCgFgdYMbU5dZAwpbhbKATcWYQREHL5fNC+O4cSdncZi7Cd1vhwjv1V7tRtYStNjIpo0EpVBJjCNpJrXAXGAhMHIVkUJOe/KDEedqKk27LuXFk5MtsXfdZqwNCcWwzSWKcLEUpaIOtYSmLaVEFjOLEsA0jmMIifw+K3a+zyQdnrxy/Qgs4xATDzRubOQ2xLFR1FkgLaaVlpJOZIjQRIftBqcpd7fuDIOlv/Sn/dOfqckPfu+HHv3Xf+yyr2byoNuPu9vkwfQ3brxnHMcgTScHX1w9+76HH6m9LkO3KkNEIQ7FIRLZYWaIVOGi5K4AhNyNFM4chKPaeNlXc1/b8nCM9PTh8bKaaJGAvg5p1vCWC6o0sVglolJKDMngXFVECDAzwCCsDIVG3Y9DRU5stQaWEJuzsbxwfnZXzdouVOcY1DHkLERReDdijIRVVUEiEigEF1Qj95Ffv/Z0VwzAIPr6WwRBVQtRUCQDwy2islVyd28LXKi4UYgAoBBiVifhsY6hoZL7wxhuLI8W2ebEG9mPmteoZkLOZF6tulBgCeom1SkyiOBaTQ26+7hGWZ6N4+1hWNVamJlCgLNDcZ+9YdxnWMXEiTwKbYZNDA2AQtS5je6QkCT1ZQjBljm/7/ha428uY50JB5X6aKtg7xoivnDzpYfnj37/H1n91C/G59fv/Y1ffGsuazL5LZkC2cl97bM/8iP9z/29nOgjP/qjP/kHvivQ+fmMD8am95yaztVQNTqJkLGdDet5OgB2x57cfTc0/GLz/bIv5b4mIGhNgXXs511819GVppSovm0smTcKMTjBWdjB4DG4lYueaLtGv+7uTLIntxQlBCFULVmRojfdaqy3Vqs7ZJ4tUghtZ0ylFDZPQE9ILOLmuVY3FbIIY0r3iCeNXutTa747e0REu8QqEcFcHdWNHQkcXDbBGRQYVlVVd6XPIpJpPJZ4Y340yzUB0vKp9iXhIO9HDWgOzKW2SiI0CCmBnajoMLMwenQCSQhRi1XiMfBzd+5Ux0isEp2EAddKWl324wXpshTWpnKFIwXkKjGo00zpbhyXGksdR9hVDh9eHAnVTWtdfnP3Qw6xnK9nbTOSjUDbdv35uDo9f+ToXeWRuV8/mP/+f+yJPzkVzk4ux348dSYPoBd/4ofHn/+Z0UP+1Hdc+dt/58XnPv/EtSfutvNfuPvckWJol2PJuZYuNgGuY45RQpK+7I7FXMwEwm56uLnz9FV/I0HDUAeexcqmWmaKYwqPH1w9sHVt5LwMQmhMZiGNYzEmZXy9XtkNQkTOAJz2I1O4G20Kq64WQgqxKWr9mMd2/srZyaoqk7hC1TUGjTLr3Zg0uIoDJnA2Y3NY87p/3+C7rx/tPiL3XdOBnrcCZhBBlNmNxFgcYHK1GFi1MEMa6etY4d/eLRWe2lhrcffEVPIQWJzj2/uB/TYJxa1nCEdmyUpqKlyElqjnWiV2KBghXzk/793EeYORWZyESNiZ3NgBMsO+13C/tZxrZqSBOmlGYXJ4ybnBotBKypzoY4vjY5JTPc9ejmPTv8nKizninbqNSToKG81DCodVrpzoq1e79StffOjf+Svjr//q+NEPffRf+/635vomkzcyPd0n952bn/jk+s5NfuSh+Ef/8Plf/XcHXnZXHqNS0RYJlbfIs8X/c+ckSAQQIKYYrSKlkTyq75Kvu1M7Qgxg2pr8h1IK7t5EKarVijBLrY1E19WNo6vX0ET3EXlkL5qbmEK9mGzpTADv0rREol4u+1J+S4hIVYk8RLaqNRfmMGvac1VW4pjOav3a5vzcNYRIFTXFmgupJRJmNq/qzsx2j4DyYrwq8y7cN7NdXrYhs6pqMCFjAtOuQjcqhjKglarjUWweXyznox2QCOVRiybJMDAnFuQawXlPXswCh1rLrl7ZCAJK4GAYrSaO58K/dnq7Z4klpNSe5TG1RM5whwLmgO0+QptKXt9Qw84qp1BjOVIyq73kwxit6gcPri9MNzwq6hIsEm+X7Zxf/wXsXnSs4XA25D4W6zjmWijEWWxW6zNcZfn8q8Nf+Yv4H3529mL/9K9++q25xMnknvbjbjh5QPzGhz6m4yqaXTl+6NVnfm0uiR5/FGWzPbQ0mjeL1bocz47Pcv+Ix1fr8OXh9C6cYhMtdhZsqCUZMzu9lgYDyI2BKaPzxjwKcpVdgUAQj5K1mnsAUSA2XVR76uDwIIihZqodhWEYzGpIkYPUYu4kIvfbqf97CYgGNbiRA0bmuyYPy4oN6hgFHN1IQntaxxdPT9a5xNgkie5UDUasxM5Etn3dv797d3L3i1qC10Jbo5mYRwKxO5lqIbMA2iQ7oHRjeTzLtTVt2rguGwQxMzKPIZDDDA5UchYh3Y/IrtacJDQc1DHU4oFZxFQHnn359PbGjZ3a2eJkvZ6F9iq3t30LsBgY5AQjM6gRxKbf7xvxbNylzrhYOWvKbByf9OaRg6XCKZDmvmGukc+tdtJ1KsXf3AjfLekiNOgHZnYmhUN4td1cWTR3i6RnX+pn6epD31yvd+kP/eNP/pk/8xZd5mTyuqZAdnJf+OLHPlE3t1yN2utl9aKfn/GNGxzOpD5cI456ddTbjc0zOok0lLNGd9uVQdrTbf/Can0ulNuUtj3AxkQSsKsr8ItmnJM3IORaqhCHFLP5kMfAsuhm46ZSkCJ6njdtJ4eOp8L8EW5u+nbeNYm5lrHWzMwuwcwE+1G7ySZOMKgBRMRC7m5myjUpZhQUvlV1llbaWD0H0Rjv5v6Fu6ebWmM7I8jY55hef/SrMDtgZrutAGZmh7uLmZKZeKUCzQdKj4b2oWYBgbKFJvV1UMshBC05CklaqOquBJle63HLwL60/Q0RRd2KBaWG29rIK6X/6vmdEg5S8UB8brlpGilm8NPcH6Y5zAEQOxEpYTdAeApk35gKWS5Z6rWQvrk5mLtvpRTNCWwNZ3ZX66Sh4oSQi3J8cy9CgTjDzGwe41jLSsfFbD6D8LBf5ff0AAAgAElEQVQ57bvZ/DDZV+88tz34wR8cP/OzH/jv/qe36DInk9e1J7fDyTvXZ/6zvxF/7qfiSy/PV9vh5m9Aa3z0I6GeMuablMRWS223tUr14zaeUl+3W5k1xjNhtiGzeoippua2ji+cnTC1Q61VHSFyiGYGU2bel0zhZXEtbWrMMGoFk6TI6qUfGg4WggntgjAyNTZnLAzXDw+PUqKxRx5TShwka+U9+ZjtYkQt7fL3qupEIgKzCgMQ4FFB7gaujL7mLjUMruoWozbpbu5vnd3t6+sHslpqjBFM1W2XlxWQmW3C+XVu3xPn16QVt95zZkUKqZqZGRkRRRZhtqpQ2wiLg80jSYhihOo21NLSfrwwrH2cSdtwczqUl7ablStE2FiNTUhAVFTZBnakEIlT8d0bhbuDzHdjEYjut0EV95s+5KssHwjLpXtufLQ84whwsQJhF+7HPKMQqoO4BHqz7cnarOO82XqNxRI4kwOIhkpxE7fvHuI6HGp4Mb9wEp/8eFjT+3/tF96aC51MXsd0d5hcps9enflHPrH57n9p/hf+BHzWLh4+Spu7iYZWHz6bj8GKaAm+HPxsEWmrBkYb29HIFIGrayCwG9SYg8JfCN1qsz0fBqVAEsyMHMy868k1uZfMHp2oGnMwQoXvBizUNIoSZzTSlKIeYiV3ApPymK8wP3awPGyilVxNEWRf+nfuDnuJsZsBEBFzr6ZMnRDcarWCyC6sbu6+AKub2sUcYALEQI7xHofp16dn8/k8NU11M7NdRlZVmcOuxoCCGBOqBkPjvE2VnElNiM1J3RCCMbWDSgiVvEBVFbBGAjl0T27dS4qvDNvny3gHKOBAKZpoUUp00R83CMxDMTIPxD1XZvz9AbPm5E7Otic1wZfl982Wgw8+k2pjckdlTm3ONUaxIS+kLaXQLA6kRXNDRPZmX4SsmEaOkcX04rWCqlUUSq1t+7LInbfrr5zPHn1v7k8+8uXPvwVXOZm8vunuMLkcL/z4j28//XP15svli78+B9tjj35D/qxUcBNHtd7spfPVWnlDQqnpaq3VUtOoKgmGMlgwCiL1YhAAOYiIHRdNu+7RH3SyU8SYiKqJ6mFsrs9nByFyVZF1MKA4hFUkO0QEBnKPIiUPYFKzpmk0l+BS9iOxOLlgu1nIas7EQdwIxoFYpSBXCeE8567raCghxF7LL62nCVtvpEKInNxhSkSRIxGZgZCraZO6nDMRKdQDlBxbaWfdqD0HF6uLqk8trx679HI5fbILCfO626R+Puscw/bFfi0pLD783LOXsp7Jg2kKZCeX4AsffT89/Njsu/7p2//+n5f3vTdQL2+yr+G9WFUwKVyaZjQaHLdXfV/ypknKyGON6p1xE1MNvqXS1IseUrtyRiLanTS36Zj0G4pOYDKz3dn/RpjgXvIHrh0TkRCLG5vB1bCbIAqkUF0TSxgVwBbmTUh1+pz3iTg7AQy4upoTlFgJh0a3Nc9m81kOG7fPnrw8RDkIs/U+Tce9BGHXIpDM3Q27Nz6vBooOd6HgYHcPLDLWDnTe1EbRFnv30eGya/LYxwCoXVaXXS/wphftKhgw5rW/XA3+oVdvXtKKJg+iKZCdvN1++RPvl815Ssvh+VvpfU9Ev6mrQ+q+MQENBTIzK5WZjZhYipI5/b93bs4Xy1yNmmabS4A0FZJV24v+Bs7EDACqamYi+9Gn87IkZWcygjIMIHZ3Vy0c6IrKE91ixlSpmJjVvEhp40gKKkoxlEAKePEZh31p1zXZiRYUyoEL6m42bBMiivYSZho2bp9dn2yZ2pIkNS/bcG16xLwhNgUAdmY2sLs7XbS5qPBStJOYFFHC6bDxNi7s/D2H164itOZWSxWnWexLjpd0GK7VsJaVyawz6aGRR35uOzI+cmsKZCdvn2ljb/K2euFD79ehL4u5vvLFaw/dGDHE/4+9e+uxJUvuw/7/R6y1Mvelqs6te2Z6pskhZ0SZkCkLFmCYsAGZAgx/CMOv/gJ+8Isf5E/ir2HLF1gUJAiSIdmkKYomh3Nhz/R0n1vd9s7MtVZE+GGfoWRLfYY96K5T1Z2/p/NUtSvP3jsjY8WlPor9NfyLCRz7mzNPEZJmdBtExqS/sX1SBC+Orx0xGnIzHfIxMwmd4oAHAoGgCJNIrDfgt7KERhjf9M/TIc7ENBz6Qj7X9mfXL2brT8+flpA2tz2EiU3YGPRIFimgKv5AampXJwcuEbGRlKHuwVQouizWZPij4+UPllsij8PZ6+ge8m3fVX6+MU9fNz2zMxy0U/9Vd/GQgDZsJGeioR1l6ahPVP79R8+eDnImqr2B0eHNm5A5+K6+r4TapEdoBsMjubya6oH4Hw6Hd/J6Vl9P6916daf+8LtPH2+fvnr1s2ff+PD5zp9eX1z5y03yzvKF/PxwAZ1805Duv9CK7JCxONJwFe2H15dzScfexJRJVTIg0Q1hCqqgrwsU3spSnBrpSNLJ7kKKCEqab292m23POLQFrb3v6W+8/6H5JUXCHc3GlJVSoy29pfTF/L+v7kYucVgqIo0opac+pJ95+/PDy4Y0hCh5NMuixZXkZE11vcW8ldDe7NAmAEa8Kda3mKOG2F7kexePLjy81VSSkO7eeo8kSCoB8WAzT+8mIzv3PuySzrDoEmWA/KPLT73bf/nzV+/k9ay+ntaM7Oru/Ph3fmvp9vHVjx89+fCGQ54PSy7n0KvCzznW8DPlVMIRCHOn0BhQCWIDOr1Kh7dnqVxo2Y+l9nlQFXe60yGSRJQI6471BvxWqXtyKCOTpFAYqlCZ2UPIpDL1XZR93l4x/qzevl4us5THeZ9bdLfJG5IMJa2lyA+LW+w47mR8YfYH89Uf19tbx86LhwDiPKVGvHujWFLEuojkrUqXBAoIIgAqgtG9Tqk+y/l3to++p+PTotXmrpUZx7mWUoZSzLz1DlWoGt/ZVW7KhCgzMBJpM8/xDw8vZo//+fhums9WX0/vqkZ89XXUrm7PL84Os+xkN6Z2K1nq0TiW44Ly+VYmfuav6DOAnLOZiUi3fkp1zEtLKSWVJvY6ZhY+hj4ZH92OvJnmq2O9bXOjMGWkpIlm69SCtxFJAILuHg53MNy6QxIHU+neyIN00EvSC6fw7MfH+tHx5dbi184v9kk722Wd91xrkR+Sbd995Mcf2+21e4KceXKL194eRZrZG6lJKdnde2+pxXqHebuQgADuqKb/ummy/a39s4bOYsfel+YkEamFjPtxOUwtkHPWnGuzFm0YBvR3Mx1ioynq4pAk+hdRb1ufJ7c1P7a6W+vXzOruzF7bTz55+v1vX/d5qvhWip+Xo9ymOCe+qFI6dXeYtd57zoNYKF0jdLOf+2JmQ8lsppLmVpnzfp73ZXyy2b+u/dNpuqnNojGprFU3bzVDyGDIaWxQkcxT71c3TRIRGRCYWyi9urslSblmvI7jq/nqovfvjttv5u0t1mavh+Tv99fZQhp2kZiyMeB9p3qtPQdLB1qPYFbtMiwF2dfxW29zTCYkw5X/nzF2CUciwhk5zdW3achz5CatzFkoIg6zkJQ1NaTa+ztKybKZBj1rX6Yf1MliN6KsI19Wd2y9W6/uzv/57OyY+6+998HCXHtsyjBFrVEfMS3vaHOPISSgCFVtkOtuL+bpcp7nYZ87lTJ3SymxN0mc0La+WdBMAxI5qC4wz5JnrjfsX8WZ2QfnF+dJEqwtt7uh1GhzWOLW4STdfdCklFor6J5EoBKAgwQkenj3VvjFZPS/qowgIEHGm73NEJA0QUT0XrOokBEhmi2QWK97e4ZdCyLST5+/+tEeU5HNsmbb3ibiFGWGu4eEqkZEN5McWDyHZk21mW5ztW7RlUmW+YnKd84u7vNikdA2INcWKDlaH5kW2OT93MzHzYtFfmg3800Mefyz6+dm/veurt71S159jazfSqu781+fbbddj2cb5DR4zGGeuGfptYW8o5SCiAAeFh4MJNWxlEfb/Xd0uGq3R1+2onnIL6J24Bm3N5xVOEJLjdQCgin5jfYSay3gr8ITPmmH6zqd5XHMZSG641HaL33OQAEZDKAzDEh5cO90j4CHBwAQAhVyvf5v9YsuIlAYShdYeA/PLlCFSFYdQ8QjGDP8bEnLMLyU+MPblx/32iBaxnQw1/U6vw0Jsx7uQioo3TUwaNoeA0nbkGsWSKDWmJZdzvuw7zx5/K2Ls+S1z5NmpqwWft8yTDvLL71CZQedo9/4ssvDOfMylMtWn9/M1zRhzlo+PrwO4vfndVrF6u6sgezq7vxXZ/skQ2yKCFXQxcW8uLjwXa1SjyABIQgSkcCBumNyXX49j4+G4eN2c23LE087Dp/EdJ6SOxZYaIqcSMJd3YRrlc6v4jLFKNma/Xy+uVyWfd5mKS97e0oRiiep0Q0gEB5ZVXDq8RaSTgQgQQHXw6W3S1AAgTiN46AEhUKUTgmEu4ncik/hheks8guUHx0Oz+fllsIyHqdaKUMZbV31/FbuPSUtSVUokNOQgd6756xUWu/LIjmS+3uaf/vRezvpj4puCHoPdCCMjHC5Z01yi+NcMpJc9uNjHQbwyFjMPo14cZxvarQCiRIRP19uCP7DNZBd3aE1kF3dnf/ibHyZ8b3x6Ui8wrEkjh2Lu5YS7+ooLUBCRIMBINxhht430V5jzmP5/ubRN4f9y+VwtPkJ0yUqkgozO7GY9Z6L5rH4usHoV5IaQHUVCekhr8Oe13o9LbuxTECHaHAnqUC610bLkFMiNoQk35yS+5txtqvPImAgAgAdCESkQAKXaLIdWzjmfuHDfnP+HP7PLn/+2vWyt4Akl40MDHrWiZ5ifZ+/DSkRMA/z8KAD1JTKUMWONoH2WPg7589+Y9juNUzs0ZD6PLdlEmUq2R3hSHLvnoqz6JXP26Qblx6+k0319E+m5/PCY+3BITLZSfPLNhP4/XmdWrC6O2sgu7o7v7vNH9vym/v3ziUtbVaBaoJoM5d3FIckCBAebnAHnBAhlUuSDVLpvJ1uKf6tMn5wdrYZ9Xg9DymHIyiSNOUcgsPtlNK9u/c8CNtI3TpFNA+u6aYus3mk/MN+NJcn2GyRO2NCB3FWSje4x5uYDFCQPE0Nfsd/yD3nCBCqKoAAchrBb5wvki0td2625889/uDTT342HdP2vFUbUmFKvTcPlySFYcsist4y3oaazCNATdnJZr27Q9h580zz37x49u08FrYeS0oosGZGIVVdxEMEqlRhCtyvGlmPPlDm6OEcLf9U+AfHq9zHRg1QkVwtdWTqq+WAwD9YA9nVHVq/lVZ35z8dSjfWwj31fZYmmCSUSo93lVD7y0yVn+ahKkPoCC6wQBSVlIai4rax2Ft89/ybQ8TtdONqpjH3OUlao9hfWc0YmSRwVSdHnKHsc1ngj23zui0/tNvXUTdazlDc7AiXlCgKIf3N6HhgLSv45eJ0pcJOO6BEErVIGnTq1+4/aMc/nW5fLZU6ahqnakPWaK3TN5JVMLcl9Ugl+5qQfSt35lSUjFYFts06KtCX3z17di5MGW4VvRWlJ16jKRJVIYKQCAiJkIgA79eFLklmt23azMj/9Pj6JZkWUU9dXMgkuXHRLir66fEGwD9Y1tKC1d1ZA9nV3fm9PBakVhjAXrMm6eYpoHxnX9sOD4CkUkAi4BbusdESSSB0a733ufUgM/Umppzi6ZC/++jRY2o7HrqwZcr9SqA8GOJ2YLPEXcg+lYm9opelT4iBea/DMfwv+vTTNnvjM57fsolKUhWPiC4ECcOakv0lQshAuBEAtYkeELeIf3l1c9WiLkCkEG2Aa0j4AstBCHOPCHhJCpkZul7nt2rhSUK8o80Xwg/Odx/stu8NaeO2ES2EMyZ6S+ItzjBCJLrBT1tE1N093Bnv6oTqsxyBwdIV9Y/mm0NHRq69paTdGhlZU5UqRhF5Pt0E4veXdaze6u6sgezq7vzdPIT7Nx4/OUi7mg9POVykUununXw3zQ0uBEmQAXiIQ8kkWjVOXVwwL2mQlC3na3rEPI7qbWZfNipPdxf7cTNfHdrazf0roUYxDpQWYYJoTRP7IAls8CYhhq0VNX3V7S/U0vFWRIpQAoygiBOOe9ccc994BANKppRM9Nbs+XT8+OZqwa7nYVaFKj3ULcEQHZpLcJYIiAlrltJp7+pT+nBIprV5q/rh00ffOT/fWh2W5YKciJ5x6BVE0bKJ7FMfh21rc1JVEu5wp0qkcIa+q+7Xz5Cs/N83r34a1qY455jBLj7lNoY4jODMpTAnyR9P1yR/f83Iru7QGsiu7s5/NhRHPNvsR5fr2m9UUykXFG1zHUsPj2rbNNTaRCQldq/kl/sWlb88lz41vgve7IoMkAySooEgQtxLIDOFUSSDyQGEDdHf3+b3NuPxcFmlW5FqVmTYxJAW6bIolSIRERFZVKh0dBglKL/4vREMl+A7q7F4V0KC4qdd8wERRYgYT4MJJEDSGSFQFfG4VvlkWj5d7FW3NO5U0khJrbkowlLSFpZygYUiuYfAROgWotJ7FWEPo8ZDH9dlBE6jNoII0EFCSIkEB0AFLVxEutKIobVUxonpdegPbg4fz+2ymw+jIBiWwiX8NL/DIaBKwAkNkiCQLR78JfuVCByOACCkKCEKEdckPcLBhMZRcniPbLPW71T7zm774W44c2ebRWhJJrpC6EhUgSDCwpmlR6MwcBokwVPDIoN3EMVuKN2aSYQgwin08BCMVZ3OLG41p9TAS+cPb27/vFljglOERu9wgsnFSQbEEjLoCYbL5Yi1tGB1t9ZAdnV3/s5moMp+GBVwJYKxVEbk7ShL3UJjSAf0Meep1RApSPerUuwtwp9I+d7uybM01lYvbbrVNmXPyObhzUrS8KgSc9RWsEMWCBxwMPzNbUzWMVK/RKKqFKUsS52W5XY6ehaM40WXGt4iROhuR69B7FJeEEE6ImsiRTXBEf6L4toH67PmwjaNBtvkXOmjc+51C1XwtpRXtX58dfNqWo7NchlFi1JinULwVtSxdxfzkULvc5urNN+yGQWSJc2sS6pF/d8b9n87P7JRtyVnFbp7GEmeTg7u2ef6kl0gex2Sn7r+KIYtc2f3InMzmuQYauhH0/wz7+WzxgsSiJBQSyauEnyxHEiuzV6ru7QGsqu783e2Q4icD2MRcUr3qHNzCd+Up66X7GSUYKVL830abyQeyrifMatHp2IEnkp5VgaITTJnbpxsCivigkwMzjOkZggLBEUg1KBAYAy5Z0eK901UJ0AtkOyik/ut2et58U0pqQxQR9D9ImXQX2HOSCKnSV2wUz85UkolHvg81M+aC6sFyfy6T2dpcw3bp80NnEj/6vr6svnR6TpAB1Cjd28GXd9vb9OXOW8yxjzRmvhmGLfMabYiw23USZYLjd/ZPvrtvD1TXvthyFnjlHJ1UEAB7l0UC+DcUpCzoroNoSO0uU2MgJMqeZjT8MfPX/5sWSrzIGPgMz4v/1Yg+3I5AOvUgtWdWrutV3cnIgKdp+0H7qRGlmuPw83xB/Ptf/SNX9M6L8txIGM/XFrdV+kP5FHrJhYyxJo7dSiPJG3mzfd9+MfLTWE6g/hNI+minvTKPAkgog6+GYzqEXH/7nf3Tspijm41IJ40ZGjRo1k/TrUvO4vf2j3eS5oQLfozbqbeKVAREaHCERHWe3xlij0JRyAM6RQ33baJ+Mbm8ac0VP4f1z9PSE3l1oRJtGSHRDfrTcGU5RQHrz6Lb1Fjlgo1SqTWUEnK0OL222n4jfFii3CNSzsIJYmwm7sHcZpzzDdDj0/76e6RhSaUMTiFHyWypGRyjjwxXnj/4dWL2XQ/7kem6/nYC8q7fsGr1Vs8kDBh9ZXwe2OR4NPNbghxD6SUmRw4tprz/k9vXt0cjx88fiaDyrEO1eaRDyVDmTuLJNW0hFV4AOqxT+W7efveMJwNw2RzS3KMrnkkNZKDdAmLcPcIF0oiH0gC+p0hIyQABN3NCKhoSekwtRFljviIy3NbztJmZ9k8ylCICO9unUoQIWLwe5gk+1w+ay4shq1K/sQsx/Cn8wGRngsjbwZRQsI93EgXkhLk+vD0S4iJdmpokpSSagrQAv13zy7OE6nWMWdhCQnRBRgICEihCMlTjx0i7tvCjiVbN2O4Bodcsmrrvlj/F316eXkcsCkcD73dxpK3mVb5Wc2U/1ZG9tWakV3duTWQXd2dvzuMQnk0bAvDCaqEOQAmNueo+bXYx9PNs7xLojZo6u9uwOzntInUiUWAwAZpgCzRD+KMhWHnw3CRhkfD6PPSrNW+wBvDT00kQpE3iVlfA4u369ZPKxCSCiISAHcCT3Q/ETVxZO49Pl2ON245j92jg5LVAYSbGZVJ5Z7Nm//cPmsu7Cfuf359dXU9/fBwNWK8Js502y2SG8wUACInOZ2OtN7XBQdvJ9hJKj2i92mj/Tv78Td2w4dFN4CIS0IPt2D3yNAti/F0BE8GPN40iVFw32rft5rDXDUr1Ruvu/3Qjn8SB9xKDOOc0sHq+WaU1rxXZH5mp9+/q7SAwP++BrKrO7SWFqzu0ptmJkc4w2FApGASXdRa5zex79H/2e3rAfHb+0c7z6IPo5bxudbRuY/ixASbaIk4Z+opqttNvQ1NKfjdi12WXHL+w+efdMfCMGWIEOLWaY51jNdb5TxERO9dlTCXnN0dwMfteid5D51ai/BMOSr+uN5sjrYtw7PzzahlVMSywODN+NCvswAOdxcQ1EaZ4T36D29uhanu0iO9uG7z1nSpUw5FAkkRsdaMNPOUUinpdPVWn2WR69zsaS4fXDx5nBRt8XlS5VVEAjdShiiiWr0Z3X3p4qcDg4hfFBdIBJxxvx4Ypu5eUYZyi/jBdPncm6kS43YzeusZJkVe9oMUniHr1Je1tmB1j62B7OruBODhEDrdojtQVCVgve4lXNLzPo86bA55yPyz29vZlt89v3jXr/qv5H2Woy9Hqc5gIFNc4sgGZ84DlzqILsu03W7n+bDM/r0n710ty4t5vu6tiwlTIkWzrTWLbxWdqolCSalFMxGLEJHtmBZrTUICOY+1VnTXarfD7qYuty8u9+ofnJ1vtQwqvrSHXhsa7hFQiqo2yKHbi3m6nGfP++qmIZf9qI6FPqQUESbi7ioCTSlliS5I1m0dv/t2f+d8CIghPOrUIRTNYwTOBN186WFmRRUqEDR2UgGVABwkINEjuvfyJY8R/LxM8p9Pr6+Xm16G6raV3cZLLHY9zIOKtV4EycChzOYYx+T9r/7D5WF/tlYPz/0671h9tf29i3OCHz5+shXM3ply6gS8qav/u++os9ojw289fjzOx/OxTG2udCNCNgnUsN7raUNsb22QtCTI//9G4t1b4XC3f+svERTvPYmmPFwt7aObq9fmPm4cFuZDGqS7Naei0TyJdA/RFMyh7m5KE0/BdXzS20kghB306Nn9PKVn4/hoHDf1GiotLDS5gcExSjKZxuqtC6giEjCYEw2ev+xn/mgiEhHuEJE4BZgq3qxIoqC59fBEgaiLFrfDssRmP5EfvXp926oOY3NL9yzz966IByQcwC92ZLl7BFPo6TqLiCG6NyUCNnC/WMeQDtPtbtQz67+5PXtCmeRhnAiZdIGahUrqvaeUaK7CBSzCiD7P86PteV3iuuQ/uXzZvqD3s3vXRPHRZa5OMP/85QtH/HdXV1/Iz1+t/irWb73V3fm9cQRwsdlkoodTVJxAuHzm2Kkt87G3T9v0utU0bHLINm2jxyC0ujBcVF3ZukfIdruvvdI9An6qQAUhUPnsGq93xBkpC8KWedbMRxcXuzL6PBHwpUZEz9qGhJRy436RPsrQA4ElRZdIzbK737/au3vHe1BERCRRaG5zXS6nw7PhzESdIqBYz8IqfRkMcxdVUe2IGg5V0UTIl9107kJIhihVqRpAN3P3bU4T2hJdiCGV6m49dG6vRD69PXx6OF7NbfZQHTRl2PpU8wuCN/sFPOiUoFKzpok1QxSYe1/oyFlEkknVvvgxiz8lfnt38UEaNlluveoDGW+hpw0ZEVlEgaRYvM3RH5se0VnKqMO1yL+4ffmzZRmq9i9o7JoIPSxMJEVQhOkwHRD4X5e1RnZ1d9ZAdnV3foVAdjHPqSA4QV5H//QwDXnceKp+HFPaljHMzayMG5CHeRlViNNaKDoRgLyZRn6/Aj6nEYgwwrPqKDIi9sIPNufufYI3mPbIRgS85D4dWknIOrQYqDZKJMhcQ9fqoLcRAYOBAOCMjqjwCf4nPh1rv+C475pJT1hsAt1LEYqHm7sJQGbDsPgXdeP/LHOSCKAZuyUHQagg66UdNsEzybU11SyRDsSP6uFVx1XzOaSJBDVIOmi4Z89r74xJkCRUTylZJwIB+IC511BumfbUwTG1uhQh52+k/Fub/QcpbwurLaLIIg/lwKOgkOxuLlGjUpipW5brHDvTavwnl5/+sM6jD6NsX9C+qJLXYES4slC9O0i9vL5Wkf9lmb+g37Ba/XLrXXB1r20oHuhINENNi/UfLAdj/1u785tlmthcGCE0y4ECRrwpfgyhgO4eEXDct1rAjGTdSMlD8m7T7ZVIejyMlzZ9uBm/n7c31n4y3T5vx04OSjnf5+bapboJQhYP5TLmvPbqvJ2IO04tTRRSE5hBf+rlk8Nl24z98uq3v/GNzVL3+aJ7T3PM2psik5sO6b1nmfaJ9cu90KW7iFCFgRCJ6GiWTN4fzm7aMjPl4FL5rw4vr1XC4eZSBlUVEO7WenjomqH/N0QEgYAQCAkTAK6VYtiVcpT6qi2FfJ/pr22fert1ek6ANCCE1oMtMNy3L47PcM06iIwhICLQOiKoFDf+48OLg+YR43vYXfnc7PisbGf7YjKmp8JrpTabYdRBx1Lu26yx1VfempFd3Z1fISOriUtviUJDSUmT3Hq99vqT5TA5npSzRzGW2dysJptHpn6qLHiTSVGchjXdu7GhCZkkKBYIQiEkr7wAACAASURBVEQptPCBMFSKj+T7efNs3Jr4Zbs999zn2QkbMse8LJWQkoZYu87fqtOJUNFETadltQA9bKrnZdunakP+5z/54e1YXlzeXmyfQNsGaawoPaTkNugxarVavuRn/rMWBJpE0+gaAIZIOx1ezz3HcBT9w+PVj722hpHbY7cxZwHDzK2JUOhBV+U6vu0kkQi6uwdM4AkQhsZuYnfvya3N3yrlbzx+71lWjfY4jQzrbjUakiiTUMNCHkhMlhEdvnhPLEOMHflH0/RH081ls2aa8242CHgequjXnNIX9H6mINwYydEAyVoMERH/4/Hwhfz81eqvYs3Iru6162iZMZS0oB5iIiX3eJz2Day1/8Hy0q1fbMq39+cXgfFmadvCUMBp/pdzyO/bWh2cWk9+MWuSVCZGhLkfUyshBehWl1i05O8N419Lm0+eX14Nsmy0L0sIbEgjynjox/vVw3YfkUSA8EDAqQ6IcJ8O1iUNqP17F9/RpnPK/3y62dj1dy+evVc2Nk29desxULcyTvHlPjAcM0ioi0LcsZgfyWvFJ9Py2m5bUfZUhuFWZgLf0P3BK+DwZhHhTpLk+kzzr7lLCESC4vRwY1iEXw3yTd38+mafejPpEktIE8jHcRhVN8w5tHZvbgN5znzE5+jWf4ci4gKDBV5a/Ol8eQmg8wy7qpTuafKt07Vf0kJ9SAnti/m9ItK6ByPl5KHzPC/zzAcS/a++MtZAdnWvXfg4pf7KF1UfDKUzkBdn790ROo5BvPR29enLp1K+/fiJ9XlMWiTRu3kjBWQP6D3LVHV0BATMIkFYsyBV01nXydtNDiRk5waMgMHf/+b+g5Aj0x/Pz2vzfeNQ9Cb1+/Z33TcpCCDCLOJNuQkpwts+S0A6W8RURNxKcHe0SYY/vrn5F/7qMdNf3148k6H25Ro9f8mX+ZBVLBSEaQ2+rPPLZZoZt4JdLoPLEpZrv2Dx6D/vh51kEUkpJcDdzQPg/Vsg9c6EeahAFKRGpMAQVMj3Hz0xM8qsWbLDlhqEZBmsN/EGzyEbVw1ZGNeyPJQpEOc4+6gd/5/l9gjQ9CJtKusRbWyp06vVIWWoNBqgsfgX1cPm7qrKYESQdLfeeynr1NnVnXoYn9LVV8OvUFrQjCOz1jaqmnCCexlaILIlVXGJaqo58nDl9sK6Hg8iUoQSYARFnHC43LNaNxMXpULCHRFZVQCzXjiyR4aKqsFneIsQFU1L9bpP5Zu6fW9zdlPna/WWIq3dPW8ljjd7f1UgCIGFdfeNM4ESTEAhET1KHLRnbFPXbGLKT1j/7OblbZ0ebc4TvtwxTBuUw9I+ur390Xz42OqNISIV2SRCSAMTxL036V1sU9SRDB5BD5hHYlZmQmJNywIAhAKhAeZNzfaa3t/uPji/yH67Cc9tkQhndBVqcUdCGwzZhOQiUTOdPTPwQALZvz+9vDTTnrexiU6jM/oodOuySZO2loLdx8oRpUP5BR1SmfeSEyPN9SCah2EjOc3z/D9Nxy/k569WfxXr8/vq7vz3FxcAPtcc2c/LxK22QdNW5YOzszPBFh51OqaUKG4tgomiUpSpV4NMVLEekrS1JaXUw1VJfxg3sH/06raUMYJigtNm90GWaMmqBE+jJUUzk3qrImJghAFQRjgNIZJUsvk6Ludtjro8cfmt3ZMzKhAuvizTdjPUqO5OUgLuflrm5O4aPaihDNJBeEgIgOTdwDJsbueqw9iDkPTRzz5+Ma41Im9jAaWICBndrXkjKUm9LkMa6ezhDoZEFjVrEbEtGcd5F/GdZ0/3Wfs8qdDv2R1PBe4Op4iQbN46zemZW4Sf3lqqSke0yEh1c1jmtiv7aLJI/pPXr66zdJHhHVVAdG8lK22Y2tV2d7G0+OnPPx7H8b959eLdvKDV19JaWrD6SslIKWdFHOb5o3Y50p+eb3fjZntsCZ7z2AccYXNfUp83TIsIQZdIIikVVY3eo8cDGR+J//wb3/5kuvnR7fVB4CWLMXUfumcZKtxzNnGPEGtGg0SKfFr9DgZIiYiIbnU9kn67DYdba380X89WDbbN6bzjm5p2TCTltJkiImkWEYMV4dJbbwZNJCOCUFXVwuN0nEJ+ejxc395MBIdyu/GLe1fFfb/krL02qyYiSVlScSA8drI/9DYJmFQRqRu6JcbG+ze2Z9vzM+09w6d5olsZt97u14KDmZ0kCI1QMEnJJBBq4aCT9KB1E9QiB6kbG0fZXFn86c0Lk0EpF9y+nud3dScXEXeH2TAMAFprKanb/brIq6+8NZBdfaX4YlSJVFi0wmdbDodFj/N/8PS9m+NtaovOvhFuc7qVethImt7soHd3M48AkVJS8/qu/5S/ksv5k30Z/uazC4ReHZdP5tsr1WmUxdWqb11GardqEk6QMHeSgCNOM+MJBD1ijWTfKlwZIV6E7OiTS629Yp6tnnJp3i0ixnFUVavtbL89LMdpaVQBac0iIqle+3I4HJ4+flotiuasGY2PWTweRlPRu5JbF2EfkxMNEAs2Q7dXW9JjL+rNuy8p6XnS9/dnA5ciQK8MF0EpuVoc25Rxv8o3UxCUEJqFRShABDyatBRMKdXUD2ZU2YruKm+s/GS6vKI3KZLHl+141uozGa/wbua2nr5AAIiImQHYbra+jlJZ3a01kF19paQs5uhWA+JJQ4YWPZr9b5/+xTfT+Ftnz9jbEZ2ZmGJvsURQoCIiQoUjIqw/nIysJI2wtkxFyjfOdo/3m5dz/eTq5mrry9zgbMoZJpANhmJyQAccQEQYQimn5ifDmhJ8O8mQsWP01KhNsQiP0C75NDEgyECEUwCDtKnXih5CqIp6yoxo5K5sYSVxhHalhEV0B8D1m/itFg+oMAj3iHCKDEUGulqPXhSbaf41Hd7fXnTtvuF+Ee/d3Xt4j5CcVDPCcc9CrGGRSOKEKx180+/vYYnH2lPEFuWRDy7p07r85OYl5KLX8KSmENEzLUpcor+rx1B3z0mo2vsCMufcw1t7GFmA1VfG+vW5+koJOvS0zKlb6yKSJGlJG8vP2/L6+Mpbe6bpQz3fyFZTGsTdunvvFpKUQIiYW3og5eO5DzrIRJmiL/N1Rnkv5aePHgf1T+fpU5kXkZLSFsUMN91SDqEEERER4Qi+2eX7QCL3dyR7b7Qr8S4RhFLEIxsS0psaWeZARA3SNRDLkoQJOTpoEBFEhIe2XmRgCzqcbuFlMzgQ673/reYhqUUxDC5QMeGkUWGpXn0rbb93/qhszaOiGOZ5c6xTBMmcUkLuvUeIhkYI7lkkayQdLnGqXH/TgxUmUc51k6Rc1vaj2+trAdLgPGto4yZnSFvm8LlQoDzYMr67vm13T6R1y2UA5LhOkF3duTWQXX2l1N5VlUQW6eEaEb1DZCJS5LGXmfKxtdeHqyeh3xnPhCGUkotbD3d3l5xykugPI0MZOdfetWOvY1IcrR1Z2wC2+I3t9m+W7Uu3H0y3z+0aKNs8wKYwcSF/UbsJCGJt+/xlwqgwBVSE1B6JoPU6au8mIqrqHm9WiJGkigiA3ntEnP7t7p2eNYX3lCQFiyHVpdaKYW32epu9JYtwtTk5vaLH1vBI9D9+8uuv55veDj18I6LWTFEHZRcz84hEaM4k3eCt65c9R+1zmgcJd4nQ06hjCwVF0q4OP7Ppx354ab0HN7HZ9GzNxkFurVVymxOAW1sE8ph5eke7dFXVelUJVVXVuvTjcVrHb63u2BrIrr5Sch4ioveuSphLzqfYYkzaAtX6AB2gZv252PPl8myObRmenW9GLaMilgUGb0Z9GBnK4q1FNEQVGOmUBMBtn4Yj6g2XLfi3x/1N4M/b7c/i+j0Z5969e0Ak5QiPsBDBQ1kq/46EJomIajmMgVOk2jLYXR2MYDjdFSAZHu522lKgAEA6RAQim6RmZqeO9JQk69w7xnz/VnbcL9nc0ZwmGpmxT/hm2T0ZN0u93ZGqGlkX+G2rGjrM0jVUFYCFo795usiD3rfyTQ9DGKGSSzgqo1El6R++fkWHuOxltHR6CmpKP/a+hUI4JUTYLrJ4HNX4rk9UVNXMImKz2Zyu/Gp1Z9ZAdvWVEp2qiUJJqUUzEYsQkTYft6mc+poqPUSGlNDsdsg3dbl9cblX/+DsfKtlUPGl9QdSM7r4UYcRnmoEu2UgO5PFQTshiqjsS7LE9Ncx/E5sfzTm68PxZp4Nb6oLCAEEX/Kc1Ieud6cCQjAzEBFN2dzGNzOh6O4RoaoQupnm4u7Em1ysmfXeSaKbm43D0M2sG0Tmue73e2trs9fbvB5qbv2xlG9tto9Kold3Mz/WIkpEazLVjDTI4ElrM7FOwsLJSDmdnhx69Ps2T/rMwyycDoubFp9M86X1JsmYhRRGMiQ3o8202Mq4pK6MiFIDYFN6Iv0zpnB/+dw9pcSgR7Tect48ffr05eXrd/RyVl9T9+ucZfXVdgdzZD8vCYSwgx49u5+n9GwcH43jph6rOoQaHs7KIHUMvY15lJQ74TAJU1LRvBXP7+T1f17enbnMwY9evboBFskYNse2PA727mUYzIyKuc2enEm1vzklPKUhJRDBiAhZA9/Vry6kqwsDRnGEuEHhSbQzKD2c3Xd5Y2a3dU77zQfL4WK3vRhy8gjvVDHCwu/f5i0nYGYlj601EQn3nLMuXhVepIlZ68VkQNLAQrMhXzk+ur65WmrKg1LCLHjf/q5/N0cooT3PZc4+qMsffPLjR/uz//b5Okd2dXfWjOzqay28B5OKiBSIHb1/crh5cbiuYr+5f/JEh1s/0u2ZlB7+cb95Ws4sfKJhVIiw2li583JMDyODWwadlzmX8de/+d7s8fOXl9N0s9N0yMkGvV3mbLFpcpa3XeIYLUUAiAh374jTqDJRift1Qrt6YNRlolN0F6KUOafobTj6RBlVRtXbtFzqMTO+A/1eOrsedUyqQnh3hEQI6PdvrZ07c06gdoYJmMQsaq+2k9y8zLHxcFGMg4lOtd5SXry8vF4axs1me95as2pJ9QE9Jsa/UZWkqtvN5ljX7SqrO7UGsquvNaow4G6gGKMTCyLCtzj/5zfXF6K/XXYXZfOcExEflvMXvRbRjSRv3cKN0lSRM+xhfHdHGBnss0TaUz7cFmrOOf+Tn3+8359VITfjobYFMTRsq9j4pgIBKlkAwMxaa6oPIwO9up+66pkPrffLqCQvfFApU+n7rrdRa/THmn5zOHsMrTYt5XYviRFuhnBQA0TcxwXrItK7NTNVDcAjQiWXLG0i1YrQJXtaXH5e548Or4vuph6VOYUmE4kMOc3gehgPxiT/srze3Q0WwKmcZrW6M2sgu/p6E3HHm2ZzITWBGfRXtT/mLlr9Z/31o16+v7vYkj9th/c59lpDHBmShcx96XWuQ34YH6XWPedM4HTueTFmUltbfu/9D5/b/K+mT519Z8puMo7HhIHhgVMBqHsIKCJJxB7GfXZ1T22rTFEjyXnedverNqHHJpeX+fBB2vxmerQjTfqCJeDnKS/V3D2IOG0BDgBgMO5Zl1xEkBzyaSQIEY5utixJ8qgFmp7X40+ml9cRmobM/aulbsb9KNKX3paaskiW/gA3Y/1lLbiZcd2usrpbD+Puu1p9SRpcCFWVEAa8hwkIPBI9ojFjwHbq/f96/TKLXEjZPc19WgaqhPliLVoEd/t9Xx7GHFAynXZ7pTxERHMzq+4+aTxN+T85ew9puIr2w+vLmbNZm02ZVDUTEt08TCEUPJSM0ep+mmFREiWizSnwqGQGxOw/PHvU3VzqHLGlDsiH6Nd12TBBEZAQArBwCSAC9yxmiuiqiUBrVURKykVLa61w99P55mf19a1HuGbJbvk2bJNHuHu3BEDDo3VH0CQezInH6SkXgKqeKunf9Stafe2sgezq644kTkMcEXCqAyKzLJmiLgxaaKNMxBX6jz758/fH/ffPnmyqqVkpee7Lsiz6QPomT7NjazdVdbiqehZVHVt39pZNrX8rbXa7i+uMnxwuQ9nMvEcgQRKg8N6b4Z7N41w9LNejXzi09WbLRS4fDrshpYPVJ0AFTKK63Zgl1ZA8qka8mSNCj9MWOpKUuG9T43KS2trpSdEp10uHIOfhn968jGqZeUx5jpg9Ro9z14Ye7hEREiKnic5+Kpx4EEiCPNXQu7tCfjGderW6O2sgu/paS0EAEWYRCKHgtLKVIM3NPCCS00bVxCfvGzm7XeJf9utlms/G8t3t011w7K3p/8venQfbl131Yf+uYe9zzr33vfebun+/ntQtqYUkQGAhBkPEHChSrnL5D6BiSIoh2JQhoTDFUFZiAq5MtqkEmwBxUuCyy2SCKgOVhDiJgAACAgKBkFC31JK6fz33b3rDHc45e6+18sf9dduk6A4krX739e98/ui6XdVVvc999+yzzt5rr3U25u6IUBVmCqaozkRhVkq16qqqwoXtVvSU6TzkQntu2dLJpj9aj8vSF2LSBFVRsjO4+znZHedrFB/mKm9fXNpLMviIqPdqPrEe7tk0QQgOIjD8pSVYRMSLyQUcAacdq1pAJEC4Nq7aezy3Wm1sTaJFqRBv4Nm9cZqBK9lanKuLKpjcvboxK0M5Is5KJAsw80v9Pjho2+jutAc1ubNMgezkjkYGcAQQst0vD3cLoxZiCE8cRB5hYy/hB0Dk+WYzQGc8607q8JHnr+2T3X/XpUUpp30pfybMEV6t1pza8G09/2hTRtK+DmbW5ETFhLUvI6W06PtFbi90i1tjfWGzORmLRSEVPiMr0JPdtKi4vHfhfJNQByvrmbCx3/TjhuclSghHBDtpkJkFCpQB4cA2uAVHjahe846VqSqjsza901PPXVsSDZyim23quFc8Q4jV3HsUCIgirFJqS7gHWJgoRQUsGGJ8NuoK11qV6XYxE2YOZmb4NDlMXlNTIDu5oznT7WrKL9aTYggIZbt9GX77WAlzgAcANkqmahsChBCSj4CjG6ts/Rsv3HUOLEOfMvc0rHzgVtvSujv57T5DxS3IRUSNt/9T3y69MDlFAJ/qhd0ICoAlVTcSDgDCxQ0wIQhJ1AhidxMRuA+ibDVZuUfk0qI9rul6vzns132zSJWEuK+mqlQLK21QZt4NKCYBjhQkzjBPnHo6Gw/myStjD2xrr/HtYMXdI1588ROJ7dayVXbLgKGF8kjhMMHYDcO9pA/s7fcpgAIrIEB0BODcQhGeWeDbu44sHEwEFQe2x+O3u+4OBmf6lPf1zWEjPJJYkIjYaApSx4ZICMphVCrIjRvX1vMnmrjdcEQyiYY7jeOC2W8XrKsgyHaRGQAkIhjEAVhs886DYThDN4uHt6HFLKSYionn8DM0/snrwRTITiavAmP9eH8yDJsZ6E167rIuZt5gEysqooLtSWSnhjUFYYwTKszMysC2y0Dcbs+zY7tyxEwe5hY1iGQuIvPFxfl+Nv7Y8ubSbSYNZ34OlsB30/wWb5R4BqHByMOTr5MfUb+waap5PQgBQIgg820FASFl4R5FLag4wKSScltQj8JyHcY6SuBy093fHSxmZBhPyNKOddh6OeuUkwX3FXDAs2plnCTbH6XA+lLnqesKrYgf6Y+u2s17+66v1SygICIiQryek3CyU2RZxzCHepI+Ofox9Gz8cSevG9PTZTJ5FWyM8gCO9gT1w/3yadIraK9I69wnkAbByBAmNjAV9oYJjICHk0XwtrIV2HesnNB26YiZKQB4DsqkTLpJ/efu7R+Gf2h5az32d3kjnJ/19QXVYrFG1aRCzOFqTjDQNNW8HlQKARFEgEBsdywsIjhCWFngZOZrHwpFkEcqV1K6V9tzmkHVEMzoSOoZqd8WxV0ViTNTKSUIZD4LWVM54K4ZdUn8x8tbR4lLiQOZr8sAMJRJOMKAICLyOLUesp9i297WZmaJCanEUPIu1vedvL5NT5fJ5FWwT20N98TkasN4M+pJ2nwc4xfm/RJlyUENEVHUmhwtc0S43T6JTQARE4hAu1bWiiJAINYIQ0R4JTePcSH1Jmpq5+9u7lkZPnJ4fW0nVzjf8F41cyQUeKkGS53knEo/tQJ7nYgIAgJMQHAYA/Amcg+v5FmY3JLXGfEB5QfSjAQ5S6DWfgDglAqoOSM51q3yxseIEFMRGd3IObk0nJ4s4yeGo74oOR/EvEQxR0hmZqYX24gAgIOAM7IC/edVhNhjFjIIcvFULDeZxulmn7ympkB2MnkVbBorpWjlTJJYgzBQDLW8d3k9WZwXudzNzqkqOKKaG5sSQRlgAhGxuHuNnTsloWAPNzOn7doslEHAWnTPlIc4GQ8553cs9jylZZTywiF3NLg7CzVJKQfZ6mjdNJ/ydMbJayCBPWButg1lBSAKwtHo55GojkuszjfNw/OLc6LDsjpPqbex1GpcIZQkM6uN5YzEsTjC8QXPLedr63Uz38uUT7h+8ORGZeZQjXnjNHKc1CEjWsQaEuGI241bhRgkFNi1F9RXiyeWEpqSRYzwhrVb1zSbAzdOe2iTO8i0CTB57Xx52wI46LpEqOHEwk5AOAef8b23gqoeOQgUG6qVKJMsXJybIDmxcqvfLL1CU5OaJImlATMQhKBtAVti37UMWYBBgQjAiYiYhILJETTAApGFVZss7NZZLCwe2r/SRCw3Jy5mEn3tlVV1emF+naBwCgITmIMjwuAlrBzI7DhWrdJf6A7e1MwHGirKPdo8SwMxNcQpxIkNSE6dUeWzEdjdG/m6jbVt20hVm989fv6qjWK6AXswQdgpCRG8ct3ABErE24wC2TYOiYDvXOOGV4tTRCVI5OIDyUbjUnf3+Yfv/x+f+ORpD21yB5keMJPJq+Cip7XYGgaPlkRDxvBjcqlQoZZnDBstnlz1H7eToZbPunS3whti9aDbh7SDhLFjuYMVBoCIEpETwm838plrLhxBFFaGIUqxVtKM9MhudZnedm7RzuYnfXni5o01lyGJnI3qZJP/F2EewmABkURooAkS8BhHn7N34UJqlrY+tvGuyBX+5Hi8yG0FTqI2LgtKbL7ysmJrcTY6V32yxkG60IP/r/Wz/Sq6Uc7PZjd4PE+5hvc2QJg8kqh6Ug4KBvzFxiPbBAOKbc+V16NUo1dX94GoNX5h6N/9/V/3/G9/+LTHNbmzTCuyk9fOl7YdvU5XZI9iIJE2kgYTyBEEJJAwqleLMOESPBpAuUnzWyfXqntWbVQTEyIc8Ihdq8/q28wHEAXgwQ4hUpZRAu7iBvOsDWuylI7JI/q2FS891aETvjg/WLRdf7Qq8vrMEbzTMDGYDDAvYrYQvXs2v3f/4A0iImZUMlxAJ2QD0750UTdtUDIGMApWqMF1ntV3LonmT/ehdXm8Xz/f91p1rt3IKIFcYkNFOGDWJfFakyQrrpGcIsIjghFweASzqOR4ndYuaNw3TdrvcWvOF4fmyaPrmeQNX/yun/xff/m0hza5g5yN2WTy+vCD+wcm+hmX7j6xk/3gXGidFAYhGN9h5wO8sqqF1zIcNPn+/b0LTNyPmXSMOsLR6VjLTFopIWNYAzOLCNo20YEBYOazchy6hdyw8snVaqlpPfiiXWAoiWQjI4AAgpgC2cABcuqlMP8rfds9KIKCnc/G9Z4V5EJE7tXJmZmIHEEkoMFBAqmbklJTKVS51mqcYhwW8DnbffsHM5HMFGOtO9bZzggEcBBta9sFwCCiQQozsxGZw0MkAYA5mmqjZTQCHZEOmZ7oT54bN3uYcrsBIIIaj1UyIdZIaeOS04Zr9dJwXps1iUbVr/qmb/69X/u1v/JLv3Ta453cWaYV2clr50uahmu5O7UqZLAhaWHKgcrb584dhMFjrcTctjM3Ozw82gyjzDpDaNcQk/bWFCf3nnwz5zqMEIawI4JJNDGx72BS7ctYoSxSc4nbi7m1OhbUjQ2u0Xoy8xQ8cxaKlY9jJp3l7MTbuvEOCgcRiPBS94rJq8S8spAoKVO4hRsHCdB75EoJiUWDiawWio3Y+bGcz/mec4uL81mbyMoQ4ea2fb/aHRRBASIQUwg5w8JrOBfkQpk4mFzYrRaOPqNWceOa2uuIxzYnT65O6ugXdT7GHfaC/TIGs3PaHEvtRgoVg5v6QGXuYYkwrigfLFdlfXz0ri//sv/ive897fFO7ixTIDt57Xx5oyx00DRJGA7TZI4uYhST2K0H4acaEzGEoCApHoPHgFiBnlzfSqmdIXGtOmtHdgvTgOS8Lc0VQDisWmy7FZyR3LtWJMKrDYukF1gvNZ3FuIrBSNqgTHxsPSftgnPQ4fIkcwoLBDGDSYIYDKMzn4Kya1ISs2peHB4gYWYSd5zn2SC8QhFmdnO1zvxKyEMH++eyzDnEK1tFOClLEuxYvKcQAIEXK9xxEBMTLjWLJdmGw8wl5x6ukEUP08XV5epjm+WzNrqkzI0bra3ytAMAANhLzbO2OojMJEf9Mu91XvoinpwySngHDxa5ce3mV/3znz3twU7uOFMgO3ntfGVOodjfXxiiqazBUaMDihjfYYFsACwMQh0rEbezziUtx6GV5mYdn+qX1/rVLM8XnBuIm1sZKEKZlEWYhbdLlGdGjwCC4cLkXJPKXsj9PL/Ydcu6XqOQW9M0J3VUyZdlvuYSzNsmEUEUFAEPwhTIvsrcPEI1ESfzcDCpksrNcbXQzF4GDK3EZxxcfLCZNbCDNmkYWSV3EWHmIK7mu5bb/VK1DZBvWzdoQEGP++GM9By3m02fpcnIa/CHljefGeuq1qytkI7VBvcgmrWt++szt/XPq0bNFdZkAe1JPqLNgUliGUvZWNvmBuEMfNuTj532SCd3oimQnbx2/vLBOVoN+/v7PXvjnJyMglUsKt1hP0XDGBEEF0CIPAIIZR1JoyJT3jieHzfX+pVqPuAZseeUhajUMdxEmJnMCtHZeAEIRxIloiox1oLADHqgDUV/j+bzbXtowwauxZPkm14oAUTOYRHuHuFMrERxNhagzwwBIziIWYREg6m611qbXPIWLAAAIABJREFUhja23oN/zuLiG5uWUAdszs+7ftMTEbGIpggEAAeH0I51pHMECCLCAAPsICMyOt+0m1pceIZuhPzB4c3Hy2CpGyPcQ4nFoaCsCsRYeqY7a156OcZ2XmdL9569HUsqVnIjJ/jYyeHFux+wWhLzNzz+0dMe5uQONd2lk9fOX/v8z92jWVqV2nARh3lNgsQ2VuY766dIHESgICYELMwZEKKZa6k2CmvKCQKnQ7dPltXd88V6rH01USWRWkq4Jz0zh732IlX3IYyCW8qJdSC/SeOCsMKQkl7R+SVt12UYvcyIhtpTeABgYmImcADw2LGVv7NOSYmpmrmZUHA18doKDjgenu0/NNsTseJ9SwGKG7ZpJIPJEQCqGRERRFV37VR+bM8JhlGAAGYlyaxNb1UoH4M/tL71RO2jyozbMvgCEUyWuXpFqQ2IIpyJXqcduf681OxW1HPU3Yr1vc18mbjZ5PfH+C0/9LevPf1k7e0bP/rB0x7j5M51Z0UPk9P1N979RQ9/7Vc+++t/mDh6tSYIgBMjgs/SPvmrQEOIFCAPBwmrEGBmA5cs0jpJYID3RIM7STpcb66vN+tAaruUGwpChIr4bi2Evaw1agbNXFPwwNiwOTzDl4JMkozcSyN0bze/ZzZftFL6MW3b97KAhZkjHGbYsUNFZ91Yx5RTYmZYds82nld64Py5y6MnZUoIM6foCSy6iFQjtiVSVYSIRMS9mlfasfs3mCgQbgSApLCsEEvEI4fHT4/DtXG0PlJIqDiRelgmFFNDRAzC1qgEdZXq9HMDAARH4gRAKfr1atU2T7+wevObHrp2fPSur/7Kr/inP3XaA5zc0XZr9pm8vn3kv/xPPvELv3b9E08vNqvD2Xgp8tDbJguY+Q7LRVNTi+pCSBQR7s4BERnLqpl1Q185OFNSlqHvNcstQqsplVHGzYWULu/tLZLEMEDPxi1MbA42YlikIEQlCnBwzU4AQ5irl+oF8CTa8/7RMFzv++NaCzOTKoIDdkYOt50VLiGgslnv5eYNly7OgFgddylVTahFCMUti0Y1Ya1wDgOT1ZCkpQyqWsOZQb5bayKG4IAgRKSAj6td7zeHfV/knIBcUMnMCsIERCriKFYlNxzwGgAqgpJovbPmpZczSsmWFj0dz/2xk+e+de9zf2e48fFbx+9ZPn3aQ5tMpkB28tr6J29+R764/+FHP/Sm/TbtzRfH3CcfolApfn4vD1GG0RIy2IrPuetpPO0h77R3nzso45oYIeZMAFvxxIpgg7EyyL0aeUCUiBzGEA5gW7qLo4ZXL5l2q15mEHutyqKpORrKUydHt8y97RwW5o02XN2Kk6CQuTIMquruAirFcs7uDoDusPJJAgFgQZUiCEJIDg5f5coV2VhI3QBlI9Twthyda9u7utm+SoKbmYGcIDv2aFACmDalAlBVDWKPMKem3ZQeDKbI4AgqbiHSEK+GIbrFhuipm7eWZZSmLW4auxVwn5Ygd/cmZdS4facQqWqMWNOwTOW+mtaNjKNnT3PPVU7c4g/q+rP1IeKT5PbO5t43PvYbp30dkwkwpRZMXmM/f+uFr3vXO7/ym7/5Q//Hb7UpL7Ek7RA27/aaw3IUnmftOVfvh7ZrrtHQ3GHVDP68PnTyfC8yb+etixYQCMKRpKIIg93ZgomIhIPY2WHkHgHfZqCCwBAm2rHv2Sk0McKGvpdE5w4O5rn1fkOAD2NE1CSlUaimQouBOQl7oLqyRDjC3UzuvDyEIUYCMqABjvCoTmEU2oMlFaIalpXCRkSvZG+5cGk/546IzcItCERMIrt2qu6kFmHNmhIxB4pbYZTM1vdJRBgeYaBgypyS8bWIF5arF1bro770HiKNaNq1/s+nKDya3Gw2PZgkKauUsL6MRW3GeXYSvTZhIII35r455vTYjePvfM+//8z1Z+ymfd2Tf/wPbl497YuYTG6bAtnJa+2Hv/3bn/3Qxz7rL3/dr/3K/3xxdimGm5r2D1fLaHU/db4aa/jIUSXEq0w/0VfUtPNV8edX66f79bFA22YW1A1Vw4XZ4IMZqygUHgKmbf0qYiJyQgAcxNi5RgNORkCEETyJtMwtYsF0b7fvXjfwApMayQgBz6n0GxCYSESYISpARPhZqerwaklKggAQRC4IJmIW0FxmdazaaE/joEOX4m375z5N80xyRkgYUWxbEdO20cZpX8j/QyMJROZe3J0RBCJKooog5aGWDF1EMpMbYR/dHB1VOireBxfmIAkicpBhx97XTk2rqYyjE/KsW4+DhYtq07bt2sqsIWafpf2jQl26JfWTRzfu6x68/OC9L1x74Qu++iu/8Of+yWkPfzL5E3ZtvprcET74n/7Eh37zvcPTTy8ffezylQdO7Hk/t2hvrCVpBQWJM2joM5ORnvZgdxwDUMmjDaUMmeximy7v789XfZ611R21dikDWNpoQjOHIwIcTAC2ubkUwI4VficiMyMKTezV6liYdda0h1a1UpNmJ1aubpbXylBBTe5SiLtvN0kjbHv2aNdOIL0GXAwlOJiZXcQiPCqAAAOuZPNib790d2sV7IUt9QiK4ABvo1hx94idq1HsTOEuDgJUOQhjKRAegQXl6I1Se8uGq6uTtfK6Fo6GVUSEQXC3UslDGFOL4y2BFLfU6FCLmc3bbuwHLzU1c49xzf2seNLZU7dO9hdXRlmb2V3t3d/42PtPe+CTyZ9iuqsnp+bH5pf25wc56A9x7QvSwdUDv8uI+9hI3tPucFiey2lj02GLVxLkGD1TI6ymGMlG24iQwt+0OH8Pso7jKN5jDNi8yTbC3YOwTTjgbXpBUOxYHVBFcpgjnAJw8iCAiIQwWFHJEorQJeKJcfnssGp4fxxHIkopKfP2c9ZkVk77Ul5Ta3Z1tKGJxdzHKCSsyptYnq/y1nN3t9UCth7Xe/O5DSMp+YvtrwBw3G5CYbRbucXJawW5cgkXohTEQ201F52/UDcfPb5eJTXIMbp03cpNtyVu3SNMVeHm7spsZ6Rc3aeaO1TVYbXWrmltLFGtaZqhrE1RmZ44OZZV+sHv/fd+6V/8ypNPXv/2pz582kOeTF7WdFdPTtN/d9fD+un3fsHX/qV/9n1/7543XmrWywZctCkjJGvdLKlJpz3GnaZ1BGuktDErgUZTrqGOlGgldV37c+C3zPavaKpRNjFCMwUCDrt9wuO0r+BPxy5Bt0dJRCy3azuMqeRCM9JafYiInMiJjX7/5EhViaUfC5NClFhLKUx31otQCjGEKRc2L2NjfneeXekW56IU9Q15GcZLiz0bqm1rU5FtF+PDKSLYYxvIOu/Wi43ALFw099VEVET69SCQ3zm62c3mFmQiJRDF51Dqi7UMuHmxCFEionAiorNSd/lTjYTd3Uqdt50V7/t+sb83juO62eyt08eGolTe/OBDd5+79KVf9AX0Qz902uOdTF7JdFdPTtnVH/u7H/zf3rd67sbyE4fP6PPnz8/OH8L3F3tjHKeR6m6tDO2aAlfiRngoxQKqmSrYsaK+hQjzwFbZz6k+KO191D3Hm1YlM1Gp5oWZQVRj506p+7YZAoiZg2BmQSQiGrGxEongkRydpDCYx4kCmvpqz9241TtMEjVNPxa9w7aSu4oSPopTZiXfM78izT3tfK0VY22JAPTkBcRJbayEYGZmBsCBiIhtY9cde8M51JJL7FPng7nmddZPLm8deiVkY5TRtPosJGuyhBXGXIiZtzsO7m4R2yScXbuu0xLkDIriKaVNP+a9veXYQ+X6tZOv/zvv+cN//gsf+fBH/vYLz5z2MCeTP5Pprp7shJ+6+Bnzt19551/5N37xh3/47rsvp5GWqXbhmDrrvCLX7OOQ4cwAoxJqgXLKHNXCCQIhN0e4YmB7w2gH89lBk9QjvJKwESx818oSVTIhFudwByAiHlHdOp6VMpCSKaoXB8gps8zcN6WibQZOS8JTN482btC0Yw2nPuU2OfJglyBXusVeq4EhUCGggUjZYUQk4WRBTsxs28Nwjm2zLjA5RQCyWwuyWLis4UdCj58cnlSk3I29ZckCMwtRJSKLWrxUrpITlxRhjNuJ4EpKJBHhVE/7UnaCRW012WDbYwkrimcPb/6H12/+yvd87/HjVz/jy7/4Ld/1Xac9xsnkz2oKZCe74tEf+ZFHf/VX9ebyoZX+/Ef/4O13NTezz/qZHURzPS3boUE1y543TU3uLk0+6ZfdfGb9mHPrhtFcZPpJvxKXQC0zkgcuHOyBGi/oh3lONyiU2K1EkBILZyGto4E3JGw1WOWlAvgitGsF8G8HvoEwJ9bKdDSUo9X6iRyNS+MNjCtQqSq7ENY8aog4gXMp1kkqtVJW990KdBzkQBKJYVDVIUyV2SOcalRJOlRj11aTWeGES6tbs7bZn826pARE3D7YR7vWAs5hQkDcjpiFYcHFPdF2Gd7C+7DEkhAy2uPN7Hi1Pul7IyVRd6cAM+9aa9zTYs6kJGTsxtUAOHNl5jEqNTOOawfDlRsxcjTBK2rWWjuiRvj3X/jkZTn31d/1Xc/euK733/9l3/8D06L15MyZfrKT3fLHn/2vP3LjuUrlROXq0a377mrouMza0bqEk9x18xubZZdmppUiiEgQbFGHMThy21iZUhFeyWA+yynKyFZmhCsXz3ciYWU+ugIppZqxho3VtEYXOogTkbs3msxMRGqtEcE7VqLVENvAzd2FUyQdPfpq96F72jaP9icbIlReaDfaOML3XAbFWL0LjoiYp37c5NEp5dO+lD8hIrKBsi5RRSgNJsQ9jKTzOiYBM/ewauNF0jfmOWlRkUQkeClRgHewwUEQtw4AKy7VvXERkTFLKmXjNYI6lxnlIumpWD85nrQl97VWC2hiTe4ON2aOHat3e1q2aSHuXjWCJZjYSAJJtK/XBRdoaIbm8AFuP6Z1wbRYN59YXb+P97/xx//uL/33P1M245u/4As+c8qFnZxNuzW7TSZbP/XGTz/qN4sU91K8//DGlcv35JOmaVZjubnXvOkWnm+8JQ8KpkAQmk6PhqUkVpvKdb2SapRzRhisBqzNya2WUj7/ypV+vVR3Mc9MlHRJo3dJN9t1rxBQrcbMBBER8x3tuHY7shEmcBBQhj3pxtGOknxkeXOpar0fcFeZpbgjbCZmJQ0lvHqnXHfr9zMDHfsYTG2wiBz7yKwL6DKoi3DbFPaG6G7Wu2dd7lhcwhxu8Ni26AqCE3bs7BbIY4Br4kUogEPrLWhGOuSYe0quN8fx8WF5I0IguVClArAzkSiAiKAAB3x6gm15JSImJRILcncGhPiIb3Z0sRvoRJezvcX6Rq9d8+i1q2+5cJ8P5f53fMaVe+77rL/0VfT1X3/aFzCZ/H83TQOT3fU/PfjgM/2aU9ty8/Gjx990+dMW/eZIhoXJIGhS68brfkhNU6MATuFEu7XlvWtItJQCIOdc3Wut7p5z7u3oiraftndJaymolMk3mxmnIW4fBmJmd/dtoBhMvFsr3y9VEHNCRJDHdusZ5IWilLLfLDDEIPrx9cmzNuRoXdnCU4RXc0Qn0rIufbe2qoewOScmGsbRCY0mF1p5mRWMWmaIt87P73M+Ho6lpVliG2gb5NGLHLGDgWwv1kIksOnHrKllZZVVGefePF2WT0R/Yq6hLWYOWpaxVWyP/f3L42jhDPiUQw8AYIYFIkicM5goBrYBJUXbergvo+uOPN+69sLDB/fdtOVJXV/s9r/l8cdOe+CTyatgCmQnu+6fveHhm/3hLHcH2vzRjSfvu+vyuUjr1JehMrSdL1aboUuZh9oA/a49sXfMNk8A2zUtEgAiwsyoZeWDtuqlXBJ9YL7fVZ+pGrtbda8RwSoBOLG5665NHR63lx6ZAZAHwRm0AhrmxsPJR681BBAh/eDNF7jtSpgXsCZPCcH90aqZ7Vi5Nxaq7kKRxGuR0QQkSSsv3zY/fynYhUZAHY3QybASUiJ6KfEjIranuHYt8ZFUYijCOsJZ09iXEDahR49OOIiZh4i1O4l2kpLLxgeiwIsr7kK3yywYpvsdAKqbsjBrCa+owSHkTNEMuc/C1jx+88l/89JbPjAcHw3DhXb/665+6LSHPJm8anZrdptMXs7PPvTw8+ujc/PFOy7d9wsfef8Dd92z0GT9KFk2UWugo0wliu7WitrucSJKImZGEDcD4O4lKVdvU+5Rhiit0IWQ+9s9JmeKrHCrHO7unJSZo+5WAEEUEbQNa7b5oAQnIvVcoxp5jcpKFEik4rxqxZbD9aPjm+SDaOkj7e0vlWb9bqVMnIvuuvcrjHtNw27s9Tzl+5vFrK0jOdnYhpagtftMZS9kSSMREWS7cOnwXQthtw5MbvqItuXQNfzjh9craMb6Ail7JGINQphHOMHMSJSIAAewrUWwXXePO6y82svSRGMlN1dYYkTsDZiPeLZtPnHz6X/rB3/osZ/7xf7q1c+cXXzrY7932mOdTF5l0ywwOUv+8PPe/ci1Z/buf8O7vvYbf+QH3/PZly/Xk8OuS0NYEDepLWU47THuNGYupWzzBFJKXqqqEpELlWIUSGAAFnVkg2Kvj1luLu13LaEV2DAICB4ku7WlG2wv1o6KiNgGPU5Q522yQRLdtuYdrJbwC5SXFNV8pu0G/MjRzUHEi4N3K0d29NjXFFZ6KjPEw3vnF0w1aq4B9qKxsZKp2eOm1nriQ3P778Ivze1EIKJdOxRVAQ1ZsXz08MYgwgWamlvj+kBnY5gzMUjCBbTdQwiWbRS7fWPZ/pG3/3ral7ITSHQceyEscuvFD5ebTTDP5l/znm975L2/tRnGz/rSL3vr937vaQ9zMvmUmALZydnz/I/+N7/5K+/NjT74pV/4vh//8ZtXP37f5btzatfLIaUpR/aVMQBWGcdRsrg7M5dayepM87YX7EgeRFkZxUZNMQ7zsIX4vXv7M5FG2IdSd6zQ6BiDclJibOugMpzgMMCFtBTLqen7vm1bH4sKb2KcS47RPSBdtx5tEHni5vWl7FbVgk0OKeWC08N75+ccQdbbJmUpmEe/3hNheM80CpcyzFMyM4AjCEFyey02tgcid8px4mcOby0No1MzPzherWfSNiFOfZgTSRBGtyAmkYiQwLbSllCEkyGYVTiZTy+uAJBrrFtYQ3E8jC8s2wce/Jzv+Nanf/O3NfHDX/w5D/+N7zvtAU4mn0I7Nr1NJn9mH/rxH7/6O79D6/LOz/+aX/qRH/4orr2ruzgWO5pzNpxfx6rlXuL8EGuJA5JnU5kPURvRldW9hoc6671vdywncsdwIJgqyKMm933VS217rm27cT2Kg0nCw2mkIJI2ZBl9y5oqwWEcJkSC4iX72fiel5SfunXtKAJdaxVUOVOCo0/m7imImcmDKIzhtbA2Yc7M4bQt71BKSSkB2H7YLije/qew+UY1u7sTPAJObTBXL01CmAZt261xlt5KdfuS/flpfyV/ghEI4CCK26UDwCAiE4pSs3Df991s0ddKTbOuYxsjwtR4lrrVYEPXPXrz1hGhid1a0d81YsEqQ5gFNcLsMYTVhmYb3yTMIh3GuDC+ZM1VrBepqehbnn/o+o0HL3+ab144/6aH5vffd8/nvfOdf/NvnvalTCafclMgOznbnvv7//Rjv/mrz15/qj7xiXcu7v3Z59//lu6uCFkftLYZ5k41ea6lh3LWrnexANMhj5JFa0ydw14ZWQ1RsAQRhanXJlwQI9ubFhcupGZpazK7xLnCn62ri3nPwkc3JAETjdY6Zae17tYK7stxo0RJUr5R+0+eHB3BRBNKJGgKGoXFIiIqIwW5IlAAEFGtlZmZtNYqIiA3M1V1d3dX1e3mPnuG+bZuFKmE3g4Hb1eE4Agb90SvtN15pAPOK1qd9lfyJ7zUwJaItjkb7h4RXWgVUBK3EhHjWDNJBylMjablOK6TPn58uBGpg3fSjditxhO7JqyANZJYgIY6h7LKmsxts/C0Bs20HdTXNHTmudqjt+yv/52/9X/+Dz9/9fFnzi0uftvHfuu0r2Ayee1MgezkdeIjn/4lH14+s7jv/rd/3Tf8Vz/8nvvvWtzTm0i6WUrbzMd1dA2PtJGGxjoGaSBvAnsxPVBfCcMR7IQgdvIIo7AIn/HecawPWN6e5+dyPqQNIS5Rul7HzKJE7tXCjVhYE6dqZ2MLODGNVmuADcpJuu66j4/fesGLlkakxEZINGuNNVkHCR+ZmYjGoTKzqla3bdEAd1eWlwqcbWO+MbcYx06Se3WYC41jr6pifiE193SLA+IWQRob31SYRnPaX8mfIMEOd4QRiIi2RUI81CQIlZyYEZbByViY16aH7I8dXS9NY2NkSgB6K2nHcqx3TSIsoxBRx02lWLrNqlwwrfN81Q/vWo1pL/vJ8IH10Wecf8sXfcc3Pf5bvz0a3vXlX3z5u7/7tMc+mbzWpkB28rryxH/+X7//V9/bKt75+V/46z/54x+4+fjn3fWmw3E4p/nWnE6G1V1Ii5Xd6ji7BNPU4vKVMcMd7g4wmCAAUZBvRjpPiWxcUX8u54fnB3Oiw7K6m9pax2D3hEgUlOpQrViTdusQ1cs55L4N3uc2OUopRkwq7n6zTdHb1eG4rKvmtldqlmPNYpEIQkTb+JWZt/3PAGw/3F6R5W0ZgWDxsQ46z4MVsrrPelBx7+L8foFpWKZNjB4lMWmpDclIu5WS8VIg63S7kLCCGNTDmmCBDGEhoiEj0YmPnxx6Cd2sRk5ddVNVCefwMh3SekWb8DYnKiXGoU3ZRFZRa9L9m8PyQr4Q8vtPf/LTr7z9S7/z3/mj33hfp+0Dn/cXHv6+KRF2coeaAtnJ69Az/9mPPvG7v/PM809df/xxy/MXjp96c6e528OST/bni41vuCxqv2kqWXfag91pxs4BhnAwBRxhDMATdAMjigyGV/eamA84v/Hift0sG2Ims/ASHkGz2aIOu1XW6uWkJHUYI4KEjeAICmhIYz60CeuySiptG8v+udWxbsoL+wszw7Z4LYmZlVJSkwGUYUwpicjtigHmImKxnBu/cf/CAkJhxr4eN918VsPYo2F1M/KA8GjVCUq7tXIZAaJtszdDBDzIiYK6BtdskNw1RTbBjxzdGIn2tb3qqw5pTg2FjuOIRGalzVxsevS8EnENBaNyrQaPRgHyTa2dPHG0eqNfHtLJ+YcfunLvGx76/M954Hu+57THO5mcpmk2mbye/cSb3r4aju978L53/9vf+BPf/x982cH9T9DxXtdyhdWwnMjORoB1WoxdQBQsgYiIbUtQppGLEoszBVv4SFEZQe718O528fDehW40MZOc+joEk5yRqWY2RJ+pVzhCDQpyJlOarzcNpWMOMWJNvUQ7uGeB01gKMzOrE0op4zjmnAFsP6SUeJsC6541EW9Pg4kjjIIpYiid5lWyqAZwGASskrcdKzx2KyXDQYwg+HZFlUhAyqRLX81NViofPL5RUm43SNo9U5YPaHtSB8vJ3ZvgJueTYVU0Ot+t6hC7Jnnqh7V0ySVs3e83+6PII9ef++v/0Y++72d++tmPP34+Ft907cOnPczJZCecjafLZPL/x9Wf/Ae/+7//8oKbe7/k3b/30z/9+McfeWt38eZd5y5fx2a2Pu3R7bSX2ilRBIK3p3yYuUdRizAEmJOKiLFvvDa1REQWHTb9XpsfunhxXqyppexYua6XU4VyEMwNURMTkYyWRh9TmHLjUhkRIRaDegpipeK27UEApu2KrOYEoI5luyIL36YVRBKhijDfNiFzZcDDnMxnpDUcohWx/ZJrNQbJjs3QzsQe4ZVBIKksPVDBbehHT24c19Ihc9M+XzYN62Xu1nVkD6YYqPYcLpRd2uASu9XieNf0jXbrMXXtkcTJU7eu7N/77u/89kff/5ubsHd9xdfc/+9+02kPcDLZITs2TU4mnzJ/9A//4TMf+MCNp66uH/nEQTr328ePvPPchbBpZeiVsAc4HMCLLZTcPYJaiCGMObbV9q1KeAYizzaboelmBe51UB/3ye6/69KilFO9jj+zMBABYIiCaq2VwTlFBKoDkKCIICGmqOFitO2L6+7ETMTbTFAgaq23U2Pdt/8BB9ZNNCQ8BgcioiJUEzwKBdxFOMyJgyjcnVXcdiu1wBAcEISIFPBxtev95rDvN3neuMDDiCMiIRw2sLE3nKRan5hSUB1NcjNWZ5kC2Vei7puEa88+f/HSve/+jm+/+r4PdDJ7w+d/7oN/6ztOe2iTyc6ZAtnJHedn3/TOp4brF9/80MPf8q3/y/f8tYcuPXBx0BWVPfBNH+Z5fxNsuHHX2L0wo3ZZFtRcnwmtqyRS2LZn5vYcerGaUjKz6ezKK+vFzhk+7fz5tl/vt3lT+pHcCE1VUiEis+KIEHaJiGgsAYDDEcCLTbuAM7Kwe2Y41W0Og5K6324AGzA3EWISuMC9sgeAAEsduZmtgpZBz5ycrM1HN8mJp5zXV7SmtDAebVy39bxwGkotUbp5iZJLUFYfhyBqRMdaKOmTzy4PHniI1tcuvuH+8/fc+4bP+9y3/cAPnPZFTCY7app9Jneo3/zH//hj/+IX9z2/87O/4jf+0d/7/c0TX9Q++EyDWaL2+JalC122a/36UnfPuF4t49aFvbmtUBn/6sn0WqskdXeebqVXlFk2peeEmfsbD87vmXea+9KvW0811OFMClKDWQxhodsaAIxtU4aIlyqYnvalvK68+H1SRFR3AMRgRod0XAdjz2BmLsUyyRzpeo7VMN482fTBG/PUdgYiCrOp+scrIY+mjtqlfnC12fMN6Zwv3Vq2Mr/arC8aOvALMRTurt1Y/9Xv/1u/+/M/9+zVZ9qDc9/56PtPe+yTya6bngqTO9rj//E/uvr+9z19/erJxx9bYPHU8hN33333bOien5eDTSNhy3TSDnVfL96yQqmIq6rWWoHbG8rMvD3bPnkF1SOJRliB58ypLw/vnz9nlHhcipuSgmE+hrU8396TAAAgAElEQVSs5yjf8s02mSGcIoI9GMRg5+mLflU5wBQRRCQiBjczwDdc91w6SSfjKLkh45r0Zh2fPVlaUKnB0jiYmb2OYY40PUpeCdGRlHaUOWuWumb2EcxrlKaoZloNj/TH71g8+EXf890f/PVfHsbyjn/ti9/ynu867VFPJmfDNPtMJgDw3977tuPx1rk3P/j2v/oNT/z9n/yDw+c+6+KFOscLdX05mhI4cU6xR3H8Urum7aLs1u0SS5OXkYKcuILMLIl62bSzZFRTGd+4uHAhNcOwCa+L3Gy4Pl9P7qWFIypuf6scvA1kjabcyleTBZTZ3eGuqgizcACd5qPaN9rx4D3LIyc31srKadMbqQgngKMawgQkjJf+UpM/lUSuKJtseVNbbYx8nPFiU24Qrt1aXdp7gIaju9/y1nsuP/DAF/7FB77n2057vJPJWTIFspPJv/SHP/qjh+/73aEMn/nuv/gzP/Fj61X/wPyubqiHaXkv6bXoM9rtbqy7b8/vbz+c9sB3XRLqx5o4eY2cc1BdxbDBuNDFMGwusr6t2zuX8xJrh81YrI+gCA7wtoWUuPu2iOnkVeQSQkweXqq7C0hERKS6uOFE6dHVzUGU1tZIc1LGeddabA/8BVEwiCgY/3d79x1k13Xcib+7zzk3vPcmARgMciAJZlLMEMUkidbu/hyq7PXSipYVV5Fck2uJCpbFtbXKYgBlaiVb0sr6rWXLa+9vvT85SmJOYpbACCIDM5gBJr9w7z3ndO8fD7RLLhNKpN4A058/UFOFKlSfi1f3fue+c7ohiv7HHMmcSZcDzcbpJTapIvgSHm9NIcCVH/iDW//XX4zt2V9LB96967Fel6nUUUnvPkr9S6Of/ez3H7h/auJg2DV6STb01ZmHX5JunANsWFNhFSpvrYXnsqy+i/1xdCi4IH1pvayqEhmJjPcNm855SQkZYmmqfmfXZY1BIuaQUsYShD0AA4AgAJooQPrm7wXFRiSyAez+MobWsUC7qILJ9rfm5iRyxCTLm1VVw7Rf7Dx0uh/7CGItdRNtCMFa7f5xJA2OTTKQZKZZfj9Mnt234cK3X/Xgnf8/Qtx88StXfUDnyir109Mgq9Tz2nnK5keKsfqa9cddccWD13/+sUP7Tl+xst1u17LcWltVVfc0kmbZHykB26FQoRjhNEIiVkSYjDCLMwCM3jNztGIRLcNxQ4MWOBWxHBG4G2TFEEbdWvDCYu8jOYtkCuZokoJlam5+2oELIBGKEK1NnKAANGPVcE5EiMh7j9bEGK21iNjteKCeTybJRGx1ZlsjA+s60hzadOKq4bVrz9287tq39ro0pY56GmSV+hG2bdkyeu/3xkb3zWx/NrM0Nz/f1+hLXVKWpTGGiJAPT7xSz4ejSY0JvmMT41EqFmszDkzGI0sQBjSIxoqhCIxgw/Rglg3ntX5rHHCMMQIywtEyIexoYYQCR5NmTe/3T021kSTPW2VIJDISkDXGMHMlEVESY5mpuzucQ3TOsQ9ENsYopF0LjmTnoUPv+vjHb/v6nx3aub+RDfzmXt1FoNQLRp8KSv24/vuGdWVZLlu//oLfeM1/+9jvmVid3hjxNUeBKwPIxgMBgGUJUDhnksK3ErusSA7V5okbgnNJ2U+mEk7Z6IP/iDiQtVE4+HIgTdb09y0hpKJK0FYSKmDIbRV8zWTGi6kkphBjFBEkAgCGCABEJIts76aQmCgAFA0CAEVhECaseROMeOIAkQwQR4pokDqmMVuWh4piLgRPRGgtCAlE3cIBAABirERfr3jWBZO6erBTwAZt7jshkapIanXTadlE5p1Lm7ZVD/U2VLmzVIpU8EicO7e28qKrXvf03Q9VUc6//PLhK6/s9ZqUOtYsrru8Uj+7vddf/+Adt4LAeZf94p03f+7x+bGTk5EEQtmHaafwiA3q2ydhMBpBIWHjMoGm+IyyIlIfdGY5rUM4SiZd9QgJVDGQNUmSoC+h6AwmbniwP2PJsoRjoDJgDGKoIIyZpXZljOluWe52kkKWGHnxHQ7DioCY84giUlhggzUx0YpUgQTImiJEdM6I4xifnp0OAiVSNE7QEIDE7oW1vV7IwhCiGHIIIbPSKpIicn/deW6DVMBkQhKBMCSuj6OtKjK2FaJkZJ+eHD1ueP2lV77j8Xvu7jN23eYz1l7zu71ejFLHpkV3m1fqBbH3+i/svv+eAxP7q+07z+5f+vX9T51SX56iKWwHsLSeXH35TInsWoknx76iNPB8PzQ6YVbyzC2w0aMLjQFkBkFD1oRYhapMSGp51qnmNg4OD6MzZWHzpODKx2CMQeMg8uG5CQzdfZxEhLK49m4Wwg10RDTHFaDUxRjAFvsKiyzJoRMakCG6WYFtrdlpC+JLIiNoEA0JoTAJADKDfj4BAIwwEJaRo8Gl7KIPM0noj4bIFkx9ruJQm4CDiVlmqlmT9xVV3OVnf2nwlB3zo9nGNctXrl6/+by111zT63UodSzTIKvUz+TJ0897bO5QfeXaTb/8G39x88ej8aeYQXFmzrbqRctCHzIKYZY2xqE5HJKmqdgg6QvZH6W7MSB4RkNJagNzWXUahoIR4ZB5v2lw+aAxyLFkH9gTkTEG0QDAc4PAABbZV+Q1Mc1YBUfdq1F1igShDtajoJBHaifuyYMThbXIxkbymaAQiEAEYAHg7jw1PbvV5cm7CrJGX7MoTbuyS+rNhJNmEVuA/TVfzdag36E0bXLo0K5Vjb7L33v1g3/9N7Nj4ydmwy994s5el6/UoqBBVqkXwFN/cPPj999pVi294LqP3P2yX3lkeuuGJUuGbA4iTStQcc2Yg6XPEIdMre07YM2P/kcXsQgVgiFAZEQ0Qtjd7BoAMYaUqAwlEtdA1tcHRkzuoW2tBeDSVwBgrQVE7z3R4vqK3HIIBgitL0qXJgEJDMWyakjfjAlPzky0DVp0eVKbb7UpccQCQIaBAAWBkRkiIxjWN7IAAMHFvIAAyNYaY5rsY6gGxaSZO0A82MkrNz92aGrd4OAvv/UDjzzwbevwuAsuXH3ttb0uXKlFRIOsUi+Y0dHRPV/+09Gnt1Y7tl34pt/6+nuuaQ7as7PBpjUzSWsTL21CC1vkE0CdaXtEQgEAkIm6r1cZu1sFEnbNUMbEOEM2RooBLHqI5wwO+bISiakzhMC+IkRrKS6yQDZj2ksl66Nspt3GNAlMs8h7OjNNsYmXVKxLk6nmHKTOABJHwgxYAABJEDEiCHIE0SDbFTAuxXS66HBq2Rkq4gjWS5I5E8tqfGKm9cbV597XGs3XrB9ZvurEcy4e/Iie5VLq502DrFIvvN1f+tJj3/r7gHLmpZc//KlbtsrcSTWuF3nTzFJtmSdPlXYtOBIDKIQiwhwQD/c4izGykQSsYRLCAmIAEYnO2lqM4n2euJGBvkbisCwx+sSZEBfXLwzkYLYsUpsn3nhjn5mbaSIjIwCwcwUHBJMBOZHog3EEaESkO9cAkKU7FgFxsXV7eF5kuN1xuRPEpsRBzqXFd9L0cGf6bR//9OPf+PNq94GX9K9a98R9vS5UqcVL71ZKvVievf4Px+56IK4ZueymT+4446Kvjz2xejjJ4iC0W5DoJKQjsdFGCWwQXDfOMgkYYyrfSmt5WQQSStBZMmVR2MRMI2TWOV+ZqrPEuZG+voYzUpZgF9ctjgQYsWXMtslJTy4GzNK+duWd8xIjCoEQk4nEQBhjNMJE8M8zlllQBIWYFtd1ez7RJlKVeWp9u8W1bGrPZG3turm5qYET16xYtuScy1+15r3/udc1KrXY6d1KqReXiEzf8uVtjz82vvWx9Vf85lc/8uGRiGuXphnZ0PFMpqo7Cb7O3IKyP7q5jDOhioGCc2KmkpBKTGRx7fX8SSEaZhYEIpIYjIS+LOuv144rsYNlcMJSpYbEI5ALLAGrjKwLCAyRJBpEA559wq7XS/khz9cXFgUJgENwltBQxVGAOMaDrjbXas8XRUSLxjIzSvfYnH4DAAAQBRo2nfWFdZRWwVUcGy54n1U4m0ZLhgURTeZtBRwNVmQy3zFJfObQ/revueSe5vh4p+MGBt6xbWuvl6KUOkyDrFI/J4/d/EePfPc7xfhEa8cz/fV8x8HRE1auyarCEbc6hc2GUs47Rjqx2c8siUSG1Et0VI8wp2/IjujwlFQyRMTBQ/DWYGbtGBRrKTk+6etDiE7aoXBknBgxFIUrjuAMEGIVM8aEsW0X2laEf70vbOUL5xwTxiqmYqzJDoLfF9uhI0UIIQpYR9YxM3AkIp2i3MVF5bK0FSuXpcCSCzXZ+4SSEFPJfRCMIWaBDacBwNq0jE+0mu+89ve3/q9vtPfuO7d//erHtReBUguLPh2V+nn7o+M3TbfmR45bf95rfvWvPvjx1StWBO+xhq7sZLK8baqMw+EtoQhFEm3lnc17XfWCRgKMIHj4W3KJgVgAGJKsGSvEuAzMiXnfEjJseJY7ICYhYxGZQxSOSIasIxdi2eul/JDn6wvbMDQXPdkkiSZSMkUwOjPXaZeYAAAxIRoLACKCcvjiKACoAU5m2Ndm8SE08oqjDVyHZMqaREoXOoTGSuoj7ZkZX7Fk4BevuebxO+9qBz7v4leseJ8e5FJqIdLbm1K98fiWTzz57TsbSX7uZS+//TM3P1LsOzEftk4EMZRRXGpNDj5GrJwRDvpG7Ui6nU8FCQCwS4CZEY1hIKJW6EgiNeANWd8qdAQQQiXE7EAcCrpQhuhj6hbWFo7n6ws7TZKKjS59avbQVFX1p31SiEdkE4lIEOS5VrooTAA64KDLe98gN2mrQZNhs2gNJEtmeK5hbHue8zqBe6w1flo61LYN7DRHTtgwvHLFpgsvHPnt3+514Uqp56VBVqleOnjzzbvuvn//xP7Jp3cNybJH5548fulStBxRnEml7SmirzkTdY/jkRjoHs2HKAzw3HtZwRrEIkIwJkapJY5CQMNBqnOXjYROM0UijFHYC4tgrdYIZdXbhfwLz9cX1tkl358ZnYJgItRMBoltdoqGTSuRbme3boo1SABAAnGRDYZ4PoapzEzmo3BgDjM1XMHptC8HsHZ3e/cFsOyyD11725//WTF60FPyru2P97pepdSPpkFWqQXhr1adf6A8uHzj2s2vfu29X7hl76FtjeH+FdDIvNufRBd11NKRIIsQdvMrHw5tJCIeCgLMTC5BDNoqeLEQIFY8szxrnNC3JK+iidEkrgilEJoFdkt83r6whU2AXJ61Q0UsdaRO9K1Ucp8gIgADAEE3zUv34vR6KQsCAzJJUnHTxVUha1sqW8Xu2NzUt+SMK9+94547hjDZcMnFa666qteVKqV+XHp3U2oB2fuZW/Y+8EAZmpsueul3tnx5+9T+jSMrTPA6QOHIun1PEaW7q+C5NqgkGICRiKrgwRBEzkxqkTrcEpHE2LJT9GXJhqVL6z6mwXuzsK7z8/WFDYmLPlimHEwgaEFFKA10XqibYrsXQUT+6cr0eikLQh/jpA0l4RDlPxgbDSZ7x/LzH2o9C5tWLVu+YmTz+addc02va1RK/WQ0yCq14Oz73Od23P/w+NhY5YuzX/ur//P3P7axf2mvi1rQDKWRPXMwgEgSD6c3Y5iiBCJgCc6ZGEUQS+aGzTudMs1rHphDabnqx7hmeFnD+14v5Yc8X1/YjFuQpR2EwJAEyYTQmk4siWy305ZBEcYIQmQNucgL6xBbr7hYNY0MuL4f7N135XVb7vzmn/rxyfPqq49/+lu9Lk0p9VPSIKvUwvXETZ9+4vY7asacfNEFD934tR9M71m9ZMUSD1WKmdgpBmeRWhVaS8iCXLpgkEwVSXJBtkYIJQTPiNHaCOKiHvo5kkQ6xy0ZXgqO2y1JUBLw7JGjE4dEhQ8uSUDEAUkVCTGYCM81/xIRYwwRhRAA2FrLzDHG7mSyw0evwERhFCBEA8jI3kA06AoAwgAiBAYwhsoCZsbcMbuwgvVCgxSxEm8oBVcw+7pJOlVqqCJKi9hxADH0RajqriVcq2jvocnBkdX/9r3/cfsd9xVF3Pzy/2f42rf2ehFKqZ+JBlmlFrodN/7X0fseHR8bLXceOKtv9dem7jkrWVtKNEnsQJpIrBE2i0JqdVsJFJ4bqRETIHDwGBktWpeaKNIqJNeJYkdiIRaGq1AOm/TEfGAIbcFVmQIxQ2RjjESOwpSaInhMrPGWmRHxn6MqYnfcKyIKH5742o25RIRQCSIQiggFJhYQQkQwnsCgWAbTBjpQFhNV0UGoycIa0LDQlCJ9bIpEylAudbVYBmFkg4F9DqbpKNq0v7CzUuyf3PHG48/43twsbtgwtGrVCRecu/Hqq3tdvlLqBaBBVqmjxhOnXfpoZ2//mtWnvuY/PPBftjzZnjljKGlbWzJZcX1sDEh00AkVAXoDBm0OruI4L94iDIptUej1Iha0UiQjckgRuRIvRTls0g2Dw1lom8QFCIIYopfg+xqNqiiNJDHGbm8sZmb+p54J3M21RERkY4zMbIxB7oixHiUCWsEELaIRkcrGmao4UHSmQvSYAjvLNqPEY6vXl2RBY0vcKrI0JSIuqohQpZAz+dA2/YPlVDHZnJ8G/+r/+pE93/j/4p7dL1kysvEHj/S6aqXUC0mDrFJHmR233Lj/tvsnDhyYfXqbS+r7mtPL+4eyzMRqLnCgNE9LilKELMFo0kIMYJVbT9GWXk+vH1kD88Cx44vCCKYGESlwykjYSQMcPzySebbM5KgUX0SfO/ynN7LMjCKH38g+92pWDv8VdN/IiqBhpIiGCYztGBgPxWTZmrLOBLZVTMQ6az1KKTEadNp17ci45CzLOWm1OpLYWuJKblvCKsiBmcmT0+EzrnnPo3fcXhKffvllL7nq2l6Xq5R64elTTamj1dfXnjRXdZYct/bMN//KX1z94VOXrrMuPwitJSylcCsxFUCdqc7Ox8pDcMY+d5xfPY+KOXPeAAXOI1oQT1AZCBwNAQpbAAviYhxeMlTMt1bnaXf8QowRWJxzRBRjBJTuO1pfBSA0xnQnFFhTnw7Fgao95UsByl1KEWPpCfMI4iFGYmMFhY2IRQpsen1FFjQXZKYmrlkNUTpbtz4weXh2cmLD8k2mnBzeuG54+cqRCy844X3v63WlSqkXiz7VlDq6Pf6lTz7+d99pmNqmSy6/7fpP7ShnTsXlg2Qrknmo2EHqEipDCIESx9qO9og6CTrPaQCLFAkiMwJYhtk8gaocSGuh6DAHTF2Hy0LiUkmICBE5RhHJssyR8d4DiHPOcyyKApHIGBFh5socflOLAYwQEkWiCjgLwRjT/S1D0Dx3SgyJ9HDekaTSL6GNNfFFu3R2fKL9zo9+8m+/+Sd7du8arC995w7dRaDUsU+DrFLHgm1btuy6966JiTF5dvfm2vBXxvac2re0H2EmNoODOjlgrAhRNMkeCbIwsyEyxkTmIExEZE1aCFjT8RWkVkQAOLEOIhdBCLB7nAtFnHMGKcYIwMaYKOy9l+e6FjAIGT48QTcwspAAGAuIHVMQIAZAEYMWhAAIDQVZWJPGFppgMhvh0anRc1ee+LLffN32B+7jgOe9/BeGfudtvS5NKfVzokFWqWPKtlPOfWR+Nlu3Zv1r/v3DN98yMbpvycolfZTFjg9JQqzB6EisGA+BzeExrxYJBSREsSBkmNmRCSFYcqGsUpd4J8zcnQcmkaE7LJcZkAltdzAsGgKACEJEaQkexRsGQyhAHLtbDhxkQsIgIgIGSICZAZhAtxYcyc6ZPRsHNzYjDG04bvWKNWtfcsaGD2svAqUWFw2ySh2DHtuyZez+B8rhdPUN7/z+hnc/O7v97P6hmARTJdPoE4cpo2dPLAZtiVwryjCQlz6mJcTMepSsiogY9Ktt9SIQid19w8gIAMxMiM65prRNITVXr4javkwNJSQ+lihY9CeNuYhgOj6MhSJ04pt+/3fv/eY3DuzeMZQN/ebOZ3u9JqVUb2iQVeqY9aA8OH7jtw49vq32/b2XvvrXb/7QdVBrnTK4AqNUHOp5reNDQZiiIytUeI8IiYXAgSOiYAzOaN9Z9cIzgDFGMNTddIGGmLndbvfZPjGBpRSunEsDuiraxNbr87OzdbYgD7cPXlQ7/rS3veuZe79LwGe94tK1OlRWqcVNg6xSx77xz225/zu3gfUXvOrSv7rhj6ZHR1euXuk4kIBY4MrPJclAhfVIlcWIYnxAEiQqSXpduzoGWaQQghBaawNHz5GMSdM0Nn20ABxcZOdchyAGqYHpJLB9/OCGgXUe5gaOO371srXLzzn/lA+9t9frUEr1ngZZpRaLAzd/5sl7Hzq0f8yX/qI3vO6W9384t/60NauryRlqNASxkjjHoQF2AJOmYWE2ejZMvQhilCzLvC+990mSIGIVPCKCdTaSQfQQyhhcakMI4+Njb/zoZ+78y78Y3blnMBt4254f9Lp8pdQCokFWqUVn9+c//8A/fgeZz7roFbd/4Y/3TR84bShvSTDGVAb7PUbBA84vi2nUO4R6EUQkAgCOBpDw8IcMEacRlng2Js6Lnzw0s2T5xldceeXTd3w7lMVLXv5v1r7/P/W0aqXUQqSPKaUWqe2fvHHXAw8fGh+D3bvPqi//y9lty1y6tFaf7jSHIoV60gw+Yb1FqBcepa7TbKUuyZO0aJcAYBPnvbdUzjjct//AplWn/uLV7/z+rXeQzTdu3rzx6nf1umSl1AKlTymlFrunT774iWIyX7XiJf/+P/z1zX+4u3Xg1IFh8UUiUllt/6ReDIyIJMTMEZDJCCEjjE8cev1HPnTX//xmVmusXL1h04XnLX/Pe3pdqlJqQdMgq5QCABj77B8+ff/32lyeevHmB2/644eae07rX6ojbdWLAWOw1pZVMFkSkXaPja3YuO71r3n9fQ882ArxzMsu2aBDZZVSPx59Siml/tmuG24Yve/h0Yn9ncpveOOb/+b9bz117UnpZOFTTKtQZEYq4iRnM93XAuPcDDMkCSS23WwtodRjtNYWRTtNUwAQJO+jMUYnih3bnGBRs3a67RtJGkAgVih1hhiDEHkidDWZK7CReamS4EuX1CpfJP7A+PjJwyed8dvv2nXH7Q1nzzz9zPqHP9zr1SiljiYaZJVS/4o7v/iVbf/4v4coOevsl93zxVsebu28rH/TTigH62k6OyXYN0shJ8o9tGNBRBmYKMEbh9g9yANVVSVJxsxABjj2ekHqRRTLourLG6X4EBpJrQKehzAIrrBUFRU5S0U7q6HEUDA4SdHHrbZ8Q//ZW+e3JRvXDq9aN/LS8zdddVWv16GUOvpokFVKPa+dn7hh74MP7D+4t7ljdxqyA+1dy5YtS9tJkqVzUkLwffW8whjblQWqEuvEhFA55wC4LMs0zZkZEUW0H+2xjCxWVVV3eSmxFWPduDmHzIwhX+aLubzVYBbvbOG2VpM54duu/fBD//tvZyYmz0xXnrb173tdvlLqKKZBVin1o/3JihObfmbppo3nvPktz3zspm/Pbz9nZF2Nodmay21SWddhyE1CyFVViEiSJAAgIhCZiCJokD2mEVoGHytrbSFxSNJWqPI8L+OUk1qEzLX9PXzw/IHjzn/bux+/+28TDOdcfOny97+/13UrpY56GmSVUj+ubV/84uQd98379jkXX/SX1/+3+YPjA8N9Q2nW6XQkc1xGA0LOlmVJ1mRJWpalAQRkBup17epFZJkic0jAOeN9iSIuAjIaH6ZrOD45c8qyU2fLmcYJx69avnb1Oecf/4F39LpkpdQxQoOsUuonM7llyxP3Pjg1OlaUnZe+8XV/9KHfW798SebLTLgTOM2zwOBjsDaJvnJkRETb0R7bAlG/R2NwJzWXmrow95U01ef2H5h408f+4L7/939M7tw3XBu+YvuDva5UKXWs0ceLUuqntPuWWx76zq0148698LK/u/HmbbNj5ywfmp6brfX1lz4yoDEGWEiAUbsWHMtaCfSX0Bdof4ZLWvRM6KyiwTe/69dv27p1DuCsV75y/bvf3esalVLHJg2ySqmfycEbvvjsffePHRht792+dmn/I1t/MLxipaAJLEmSVEVprRXRrgXHslrlx/qoL9jRielVQ+uqqli1Yc3KJUvPPv9UvO66XlenlDqWaZBVSr0wbj//3LGJ8f41a8/49Sv+8aZb9rf3n9xYXrEguDZKkqY80zI111+GyTQkkRzYMou+CkugFgBnOeRgLAgjBNI3uD1lAhTeWOctQhl9I60X0Emwr2qWJcR8oPKwhM1kUpg69E01n2kVBbvf+thnH/7TPzm4Y1dfPvBbux/r9RqUUouCBlml1Atp7/XXb7/vgQL8Ca+4/N7fv+lpP3nC0HAS530oXZaKJ48pGeerjo2+TKmvBDC24wARASBISMPhn1WvkEAHYp1csAidKkvydqeTWdesD9SL1mycbmSpq7BV4Y7WdB7wDb/3sYfuvj2QPeuV/2bTVW/pdflKqUVEnxZKqRfes1/4wt7b75sYH+NOccFvXPG1j70vK2jN8GowDFgGYaIaYT7UKWYcd4zUwGAIJUlCaDwH0i4HvYSF4GB9rt3qC+QQxFJp2TC02lWe5mSJytb2zqEzB084+V1XPnHr3zuRMy975bprr+x14UqpRUeDrFLqRbT9+psfveMfKNIZl/672/7whonZfacMrMKS5xMfsSpcPhDAx5AwWoa2FbI2RiENsj3lxHQkYOqExDA0WnEGS9fIU2/bUEwdnFzSv46lObTpxOUj65adv/mk39F2Wkqp3tAgq5R60T37mS/s+t69nWXZuo++Z+DS933p0O0nDa8eapkZaHPdMmF/RwoHlTWDbZzCmOrWgp5KkFsS8gAlogXMwR2sw56x0VqAV3/804/8j29M7tiTpwNv2vdErytVSi12+rRQSv2cPHbgsfSr/7D76a2wbddZV/za/9myZXy+vSGtxwSkU2B/Wgk0DpV2eKhTtXpd7HIY17QAAAxoSURBVKJWJOXSkEzHwPW6DfTsoUMnN0Ze8b53PvDtvweB0y9/1aarrup1jUopBaBBVin18zd+441P33//ofGJg8/uzbLh3c8+sfqk1bX5js8od8n8/Lxzptc1Lmp5DO00QUpGt40Nr95YQGt408YVIys3XnTemve+t9fVKaXUP9Mgq5Tqma+deNHM1MEVx6++5Ipf+vIffLyFnXMbI7M5pqHXlS1yZL4/M35WbW3b+6Lj6/1Db9n7SK9rUkqpf4UGWaVUj41+9rMP336nJzr98l/5x89dP39o/7KRpYxsicFXhDYDI+2yqCEn2UDhGeMsxJjkCScxCjE48r1exIIWCcDHBJ34YGtZ4QuDEonzgO3UQDSmEnS2MtFDNXZw7Beu/+KzX/3a5LPbV7iB1+/VjbBKqYVLg6xSakHYtuUr2++5d2Z03/SzTzYs7R8fP35kDYYYnS+A2SY51WKYmUeXQJZzFGgbrkhsdJkXHaBwJDaEiFD0WyoDdWKS1YRN26GryM/P1JcmeadsCu6dDW/54HX3P3zrLPrj/u2vXPzWt/a6cKWU+hE0yCqlFpavrzturtlcvun4M9/yuq+876MJ4aahpT7OpRRcGII6SSwxmqITQ1+Kcb5Wtbxb0uuqFzTxVb+rHcLKAA5EU4kHHxNj53M7FNyt03tOHdrwy1e/88lb7ypLOPuSl6/44Lt7XbJSSv1YNMgqpRaip7948yP/cKthOe/SS++5/uZny6n12VJD89EmVIEYGsjzCd+yJdapVmHV63oXNIdwqKqGIDPOTScx5SL1lcnxkT3jm5adVMVycNPG1SvWnHjheSu1HYFS6qiiQVYptXDtvOGGvffePzFxgIvqote84Uuf+uhI/+BwyS3sZFUVsjyzfZOCNd/udaULWszIMiwvaBSrwmHOdvfkwV/ccObjM3sOtFpLa8vetvupXteolFI/DQ2ySqmjwP4bb3norlsNmZPPeemdX/vqU5M7LslW7ccqrbv+6WYzS3td4ILmgYl9HqQzkO4fn3v11R9+4lt/3Rob2zQ4ct6jd/a6OqWU+ulpkFVKHTW2f/LG3Y8+Mj6xv719dx0aBw5s71u/zHUArfS6tAXNMG1vTpVlvOpTn3j0ttva7er0Cy894Xf/c6/rUkqpn5UGWaXU0efP1p/dbE4NnrD2rNdd8WfXfWT94NJeV7SgPT03+/bfed9j996LZDa/6heWv+c9va5IKaVeGBpklVJHq2dvumnrbd/N0Gy64IK7bvnj/ZPjK1avqomZrpoDqZOi1XQyBPk8m0RMaSUpCs7R+Yi2jiyh8kREBiqObFAAnCysW2KM0RiDhkRERAiQBEAkBHIJSSjJQCkhMY6DVNZAiXmezfnWYLRlLdk+tveEZasvuvK1T935cMfzuS+7aP0HP9jrNSml1AtpYd21lVLqJ7X9k5/c88DDVQwnXXbJXZ/67FhzfHDNWtehxGYYCLCsqJ0wVwDOZp0YLVMRy9S6WpaHEKqqcs4RkY8BF9gOBUQEAAb5oSALEJKYBiwjAxBYF2PsA+stBlcZLxRxe/PgKrf81/7TOx++/x6XunWbz9h49XW9XYtSSr0YNMgqpY4Fu264Yc9d90we2O+93/wbb/7GdR9cUbO2MeC9h8x54eUVRsC5qmpkeZWJ954ZmDlzCbD4oqzlecWx1+v4IYgoIgzS/bmbsw3gvLSWcd5BQiHK0qZUtaICC2kZnpwZXbNs7ave//6nvvudnM0pLz1vyQc+0ONlKKXUi0aDrFLqmLL7s7f84LZvJw5PetXl93764ztac8sHVjigvPRTSdlnG1XHGyidcxEhxohoCBAiW2MW4IQwEcHnMDMAIGLbupGWdDJqcRl8uSKpxfn2gzi5YWDdr73tA4/d97cuc8dfdNGa97631+UrpdSLS4OsUuoYtPuWW/befWdZVqede9G3b7npqdb+U/vXMiZzthqKwYr1MQqSda7wlYjkeV51CjDU68L/Fd0NBiLCzN1Em3jbscEkmEaeNnLg4MwJI5te8Zq3/+CxW/MkP+Wci4ev1emySqlFQYOsUuqYdeAT1+944L6xif28Z/SS+vqvTty+vL6MkiFqF3meV1XFEJ1zQbj7Db7BBRdku7sLRAQAiAgIAUC4SgPM5Ti258AFK08/443veOLhu/Ik33j6uauue0evS1ZKqZ8fDbJKqWPfgVNe/khrl1u76uTXvu7Lv3v1qpHjxIfcJbHTsUhZlrTLAg0AL6xboogQEbIc/sGawLEMPiX7pG+uw6UnvfU15fe2jqRDIy85TyOsUmoRWlh3baWUevHs+/znH/7u32UmOev8l974iY+5ik9cs843m4kzLEKOYlxYbQtExBiDLMxMRELYLjqz8/Mr+9fPYtttWDs4NLzsnNNfcd11va5UKaV6Q4OsUmpxmfj0p++78w4O8SWbN9/9la89M7Pn9OUbCmZEI8FQlByxkqpMGQ1wUSXovK0nISQAngsmDM76iE5IuCQia62E2A2d3fNY3Re7EqK1FhFjjEIoIqnEEtEbS9FRNA4BTOWlw7GRWeOrliFqNuLQdCxrWAAP+EawAUMRagY7vGO2fVzf8UWYDNH3pYOv37e1x5dSKaV6TYOsUmox2nnddXseeVRCedn5m7/xtW8+Mzd6UrYsJL6CCij2u1o1VVGtURkg743pCNgOo8nqIQRinyObUPmk0c2pKPBP21i72wCYudtwgJmttd0/fTuYDIA9VpUjxzbxiIKUlLMzDZOVWRWLmh20sRMhEcsztjPADiF7YGz/ukZeg7qPNJQuecO+B3t9/ZRSakHQIKuUWrzkuut+8Ojj+w+N79u116Vu9OD2tSvWzzMK+CUslfiK3bJQm7TNrJZGHxwDVMGZJHCMZCIBEYUQum9eQwiWTIyxeySLiAAghJCmaVmW1tpZpj4BByVkAgDVfFWJof4BK818nkIWMjM8D1N+OjYGiT08MTt5Vr5uijqz0Y82529sNnt8vZRSaoHRIKuUUvDfjz9xvjW1Yu2mi37pTX/zlRv2To+duvaE0JyL9RCquSFeNScdQo/BI1GS1NolF5mr+eJwn1dDBNh9C2sAI4gxJsZonK2qKnWJ9x4AMkkCgEepgMlIBpgxkueCsZVVieSeJ3NYPjq/b4763/zetz/w1/9nfM/+FW7girGne32FlFJqIdIgq5RSh41e98Vtj9w7MbGfufPSX/2lP//M5+bL9skjGyTMFmlSxxxKKU10HA36WSoHpOFDsNZWMXR3FEiIiXMiQsYURWESF2O0SETEMeYokyjG1QYChqJVZmiSlOYqn9ec513tZyqov3b4pPvnp3DNSH3p8NkXnLtRD3IppdTz0yCrlFL/0u5PfGLr3fdMTkwQ0+VvfPutn7/+6bHdeRE3rl475youi7V9A4eKOfJOAMjZKAwAxhgO0QB2JxdEELIGEaMPjgwz10nagUNuxQCV7USSeUl2zncADr1p+IJ75naylH2mdkZ92UlPPdTra6CUUkcBDbJKKfW8xrZ8Zef37j2wf8/s9KFzXv+ah7/0tX0H96Vk41Rr+KQTk3LepUmz6JA1RCSRsyRtt9tZkrSLotHf1y461troA4dYy7IZbM2Nt5olQGrSwGtXrC18c7pqDZts0Jiz6qs3PXlnr1eslFJHEw2ySin1oz32mc+MPfTo1IGxA08+VTRb6086+Rfe+NpvbdniUrd7734gAWMkxOGly+ZmZpYvG544dHBg6ZLx8QkySEjIMjK8vMa87sorv/fVP5ncsbuR11JjBxoDb97+/V4vTimljlYaZJVS6ic2fuONz9x/f2tmeufWrZ2yaBeFAKRJQoC1LPOVd2nSLjosUlUVIuZJWk/S4dNOy4eGBjZvftk11/R6BUoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSiml1I/wfwFJnsKWqGKM7AAAAABJRU5ErkJggg==\"\n      ></image>\n    </defs>\n    <g clipPath=\"url(#091fd1df4e)\" mask=\"url(#9d4d970ba1)\">\n      <image\n        width=\"920\"\n        height=\"512\"\n        transform=\"matrix(1.34674 0 0 1.34766 -234.085 26.23)\"\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA5gAAAIACAIAAABo6FRwAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdZ5idV3Uv8LV2e8tpUyWNuqtsYxscnFATAoEk9ybhApdmWhwIJaYaG9MhYGMwYBvbVId6aTE1kHvT7k2hmGoDBhvcZavMaDT1zDnnLbut+2GMIHlsIgXJI43W79NoHumctY9m9vmf9117bwDGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhj793ClC2CMsVXr5quuyoWr77xL3bW9uvFnoixcMfgPf8eE6ESUWWo7nfTEbXD8CXHj1ihSV+EDX/UXK1I2Y4wdKTjIMsbYQTN9+SfKH/yz37vb3vZj6Fvacqx8znPHVLHzg58ZV7h49/Z7/Vdjtb29BRPjW+qsnTz5v9HQmsGCkJ/+oJiblqc8QG7eok59wNaXn3c/j4Uxxg5/HGQZY+zXsvvSK+of/oj27K5u+QmuXTv6zHMXPvy6sNhDneJ0zw01RO1hfQcRlczu9RECClHVSkuy1i90gSgKFLWPrpSn/0b6tKcufOpjcWo233a6Wb9ZP/DUzee/4n4eI2OMHZ44yDLG2AG764p3uB/daKen489uVqNj7bPO7n3s42LPXT1ZOaLRieMkqq4th7LWwFdZFNIIFaCM1b0+WglhKGuUtpaA0XlAFEp66xIwri4GbmlQDUytOltOy5799OJTn6hmZ/RJJ8PERPOBp285//z7eeyMMXb44CDLGGP7hYi63/tW75vfXvrKV6k3aJ79lPLj1/Rmd7etDS6aTZsGMbQlqVhFrXp1PSSyroJGCWVDicKSUZLufcqVKLqhzkFowkJHFWMKYBO5ZMxQ1yU+2oxctGKuT/3gUKOAYv2mtc95VvnFv4Z2M26YSB78wONe/Jr7+QVhjLEVx0GWMcZ+lZtnZvQNN9Tf/V4+PbXliit3vu/Sqbdc2grBB8zX5JA1qYrSYJnYhkRaCj7JgojoYy1CDqKQ3vgQDKKPivS9PoUP1YhqdIOrUYzLRreubaZUr/bNInNGkXYSIUbtfJBYZFoPrDJYT09nTvY2bmy94Nnus59X2bCe2JCd/jtrzn/e/fwSMcbYSuEgyxhj94KIlr79jf43v9274za46O35Jz+55x3vatJgQcCakYlEKhI+SiqwJvDSodSNqvZGCw0hQhKcz5LU2xoASGAACgQa1b0+V0wE9StKjAfMSTqINcSWVMHXSBJIOEGEXmBExCgkAbaFWVjq2VS2QMD0fGVLs2V85Jmvn//CB6ndDBPr04eccfw53HXAGFvlOMgyxti/s+ddby++/l2zeeOG9161+7KL9779qsx3SRq1cUIChFiKZhIKW0jZrpWVwgtok8JBOWhKn6h8vnIaTJYOqlJnqS1rLVWOxlvnjb3XZ0Qk6QCMikLCoJZaeAOy8kHqSAgAESMIAhDSi8SrKENJtdIiFQIi9a1P0ka0sT93czu0u2MbOy99bv0v1wYh80f85vEvf/X9+/oxxtj9h4MsY4wBANx9xRuXrv1BmJ4Og3LD0541+7arlC4XsW5vWq+8XOnq9ouPqHNd9xZhsj9odEYv+Iv6k5/FRkeNjuNjH3PCOeesdIGMMXaQcZBljB3VJt/97uJHP/LTk7FYaDz1j3e968O6WOgnceumbaFbd/JsSg+y+sgIstFHgQDKZyEOJmdqoz2a1iDi2y/0n/pI0mzL9VsaZ5459pKXrHSljDF2cHCQZYwdje6+8uLBD35I09PQK4af8PTZT3wCpu8SAtKR4Wokk/0693JgZKhCm9La+JWud7/YPOb9GFFErbGsRHQhgagg7tojHMT129a86EUL//r/AsnOwx458apzV7pexhj7dXGQZYwdRYho8eqrixt+MrjhuuRpj9/74Y+lc7OEkHfGUGV1rDLKA0mdin69GExISOVkSnIrXfh+WYSlEZ8qmXUJU2VyKyLGHtigwmjIgut3Z3dWurPpla9Z/NKnQqst122EBz/05Je/eKULZ4yx/yIOsoyxo8KeS6/sfu2b6ea1m6+68u4zz+zetl03dLK+E5yVUZBObIwZYa08BmsolSKvvKPEW9dLsLXS5e+XBAwABBGWqNJpIkqXkghSeiCAElB6my3tnWti5clmazbA818Rr/mszNthYkI96JRt5/EpuIyxIwwHWcbYanbz+99G3/+RnNyLi0Xrqc/eceElDb1QrFvXxEQoqTylLiyZaHVoFXVfq7zRcAs9nxorRbsGV5X5cG7rlR7G/iGrg4oGA9QDyFVw3mDipdZVrPImOaf8UpbnfhGyLO9ldW/XXe26OdhwTHL2k8O3voaozEPOOO5Vb1zpcTDG2P7iIMsYW50mL/vL/te+H0WExz0yfuATzd2zM9F2tmyKQHmm3GKhTdaPIQqpJJZlmTczY8MiiXWx6XxR6KKpoE6yPb3BqDYrPZr9ogM6LRSAC740qKMyQfSRlK9SDbaqm9lQWRUxC1GG0Hc5KqnAYSgnuyJd23jpc+2XvlwOj4VNG6qHPPq3n/uclR4QY4z9JzjIMsZWle1XXha+9p16dpLK3sjTn7jnwg9k1PcnrU1KLRz6htLFwEaMuRK1N1IUisDGUZFXdS202pvWw548oFVJMsBIvpHomsJKD2u/OBW8DXmQSupSQ14FQ2ExJx1UrHyS5X1XCimF0DIKQbFSkQibNSml5t1ALQ6grMLWkcWXvaX1d3+jPYmHPvjk17xhpYfFGGP3iYMsY2w1mJycHHzqM/GWm+hnNyZPP8u+9T0LakaadqPRSJIkUIwxCiEQMYQghFjpeg9r9a7tYNapl78Avvo3WT5kxteb3zhjjHc5YIwdfjjIMsaOYLfddhve+bPwvevi9K7O6y6a+cM/1tO3KevLY9aMOOx5obUWQvgYiEhKiYgxxpWu+nDXFLj7ztvNcFM7kTc3NP/8uTN/cw2dfHyy7Xj11Cdt2XL6ShfIGGP34CDLGDsi3XblJfH714dWS5/7GvnPXyr+8rKensutaW891nWXBlnSphZRAQARKMaIiMsXYolopWs/3PWA1qDpU9X1/fW6ubh7biDF6KaNyRc+6S+8DPfMmEc/fON5r1/pMhljjIMsY+yIsrO7s//hT8Vbb4Ibf2qe9jT//qsHc7sSH8fHNi80kirasRrrdoqDmrQIFJdj63JTAREt/xGRp75fBQMopVDLQV0mUgjnoqSSrJkJtGSbbz1v8ctf1K1OMrHZPPi31r+Yt6FljK0Yns0ZY0eGO658XfzadbBuXXrx26Yf9od68Y5GMOnajbUATWlwWCTUjr4QhfBRCNUXLg0aAPZdi+Wmgv2kEOaoNkSjTqJOuwQgjSId/UKZ6Hp+VhaLQ+uPbzz/JcX//bvmCQ/Lz3hIa+Kx+Gh+Q2GM3d943mGMHdb2XvY+d/0P6+ldtpjRT/8Df+GHAlYuJmZiQ2qtlTGIpMpkWs1ASrpryrzdROjX/WHZqOQvjpZdvhwrABExAncX/Co2Bo3SqKQCcMGmwaVIlXCdcrhv+hXZRDQx0YOb71RJs/P6s9ef8Y6pT70Syrl4xmkbX/WqlS6fMXYU4SDLGDsc7dx5E95ya/md6+GHN3Ue8dji6o915+9QMkBrVOnMqzqXNABsUzpwZVOVi77VTscg9lx/PnTaVYzgigzzfR0FyykWABCReOb7lQyIEFxF1hkwOgUQ5EgFELHvs4YZBEBbpipApmpSk7MDM9gwss392TMG137dn36a/q3fsFtPOvXUU1d6HIyx1Y+nc8bY4WXqqlfNfv1H+fA688bXiL/937vefHkz1rR1iDAmZeYzjD60oho4lypRYC2lVDYPxqm66guZt9qh22uhKhTEGPYt8ELE5SAbQkDJ22/9KiVSHgUiIgFa7yV6JfMgZtLYrHyKKsZoKUCCiEQBnHAyMXTL3hLTNRe+tPeoJ4j3Xab9Un7ipg2vunylR8MYW804yDLGDgt3v//9/rvfg6m7fTHfftrv3/K2j5+yBDOpo81jhtCA6EFM4OAE0OXFXkT37GYg8Z4OWgU4n1Rrq+FZmFFG5nHMhr2Qgq4zAAFSliFKraKthSQpEf3KBOIAhJH2VR4oAgAJlLHWKlt0YQhVoXzDukIRAEhKDmk9jSDnhIVUDtUIO+YXygoeesrYHz2s+PaN/qRT4YzfHBxz4plnnnlIa2CMHZ04yDLGVtjOS99Zfv2bQqH+vT+or3qfmP3ZbL4+kWJ47ejUYK6hTMdLQaIvgjxIU9byBdrlrgMAQLqng3YpVWNLVUxzqe0iVhO90dkU0Q2MbhBE50opKFVSogi1jz64TB2Ueg64foEYf9HmS0QkEBE1QuGtipAl+R4KwsOoSmL0kdwhrSdG0lIG8lVwqI1WhopQLvQzmm2e++rpx/xx9oH3qW4v+52Hb37ZKw9pJYyxow0HWcbYyph57zv71/+EJifdUj9/8v9cuOgdeVKVmydM3cy7Az+WLcTKRGqbtHTW+ZjpJAT/nz/uflg+5UsIsZxf8eeZMKNq4HMlQAiIEQauHsqbgL1uFKiippj7SBGXAK0yuW4IWx6Uen5Nyyk2EgVvRa6VDVkU1kcjNBIsgZNSHtICvBTCeQlEWgaJ4CitqWHFVDHtAJsRakiHX3/+4JovN447UZ98yronPx5POOGQlsQYO0pwkGWM3a+2b98ePvN5f9uNcNtPR8966p6/+my2c3tpMB/f2PVgmtrYQkvlBflB2QHpkLqpAKV04eRB6m1dviILPz8cYXkrAwBIYrlnbgCRWms2FB2bVbEs8o6ZqynJg0AJc7FK0zQtSZFaomDUykyh+47bJaKIcM8XMQrUOsrS1S0palkpoCWMRjeVO9T7jiEAIUQVQETyQNHokCrsLzqhDKaioLJcMF1bnPigB/31X915ydvs7Ix61ENPOPeNh7gwxtgqx0GWMXY/mXz3O+w3v+XWjKjXvtn+8dPqmRscCrtpYghaZuAGaWgZLRYGvpn5onIK0zyRLrrKkZZSm1BblAdzytp3OIIADCGEEOgvzjnlxefd8YE3Vh/9hL69T9hvnnBsv9C5NBV5RyABlRJFLFD4hhbereSisX2tEfDzft+EGlHGKoV0sSo62XAJ3oC11cF93e6lkkgKBVFwMZCWqJX3vqqq8WztYlxYG0VtVb8hsS5yKaem5poekze+Inz2y7o9QuvXp2eeufFlLzukFTLGVisOsoyxQ2vqPW91P7ip3LM79vudJz29/45LC7OQxsSuWT9aN7tYqCZiqGKwIgiSpkY1nObdoi+kpBhznXjnQghJktiD1FrwyxARIjnnrLXZPGy44cZ0UwegnN9d0ec/Pn3hq32nKXplOjGmdJZ67ZynZuptbSpnU33Q69nPmvdF2OW9BQSiEKLnllQOuQ+DuxftscfLXlRUimZAd2gXe0WBFKMEBAkRKIRgUKbazNRFmg2r7sC1XXT1qE2XBKKJAhvFHXcOgexNbBx60QsH//rPMWLzIQ/f9LoLDmmdjLHVh4MsY+xQ2Xn52wdf/44g1/rdhxYf/tzs7K0pAIxvaofmkvQNRVFLFWK1tNhotGwdjNalrykR1sdEKgPCl7VIjZeRQjQgwiGYspaDbAjBe98tFseG1x73vR9EnWtRg0v6Ghbe/d7qMx8Ik3sd1W4sbw611byNoOpOw1T1Qa9nfwghQgjLXyBB8F4EklJWc7sGDlPRFOtGhwCrHKC7lKS6oEMbuCPGKCQASB9VBAHoBdQUEl1WVZrrdtcuJR1jSFWDUosgXKV1Z0BBK6p27XayvfZl53X/9vPQaqt1GxunnbqJT1VgjO0fDrKMsYPslve82/3kJzi5W/SWmv/ziXsvukKFLpywpeUSqKqiSalzQQldU4EuhzRoU/mQEJahzpoNtVQpKUqDHigBEUKwMiohTR3CwV60tG/7reWFXyoulHti58br141ttOiNVbWJCZRL0KhuuxH+/p9uu/SK8e6ClbF93NbF0mWH+Jb9fRFCeO+Xj96NzleDwpe1QJTr1k884/ljLzunmwwmz3hMUu/CRqfrWw3qHdJ6MgIbQ0ABWhJg9AGJlJAUQAlXYcxi4kMgrJreLDaamYDu0nyz06y8Q+s7aOZnphx52njKmrOeNrj2W7WUncc8bOuLzzukZTPGVgEOsoyxg4OIFr/77aVrv1Z882viUY8tPvuZ/I7ba6lo06bMVStd3X4RmCzsvqWx5pSTbvx28CXKIQkeogIEInDSG6ju/uBHZj/wkc7MzkFYTNcdI8EsmDixFMqmBh+890qBxBTJuBAjOCGsVOSiCCpJPUSgOnitdQhBKUXOKyG1hUEDssIqaZbIaxSkUFOIzlcGKaIJQkSSUiJiALKJMQsDu7QQjAvW5etOGHrOn42+5PmLST4CEgCmJncsnv5bauOwisFGEurQ7lpwsKBwuL07KbLNF55b/PVfY9aWazeaB/3G1vNevtKlMcYOUxxkGWO/rhs/dFG87obm8LpjLrny7isv23XxGzaWZaFbcv1WCaFl+900W+ka9wtGZ72k+cWRc8/vvPqVuVWlAQVBeOtVkpCApQgtUQifL3YnP/qV4uILKSyWuW+sWSe88RQpM76OQdZJpMSowjolEx11tC5CAA0gkIik0d57hcJ7LwCtqWNNElWEECU1TB4HEMjI3IZBJY12ijQKql3wtje/iMGPCDPYsE7+6XNOecnrgSBGsNqnpMB6iPLWq9/l3/6e9nhrT+4nqrTAsNIv7X7pexrT6dyeXUJ6EQnHtjbP/nN77TcFYf6Ix6w//0UrXSBj7LDDQZYx9l80OXlL9b++4G79qb31Znz2E/2HPmnunBwIueHEbd3eYmoQ0A5cpVs5Do6MK4JC+ghGBel37z5uel7AAKhRSicANJEAQwgWIFrKNHoPUfudMzfTQ5+9VN6qUODohobKrV00Xth20g92mLSybhCdznL0FCEKIShERAwhSCkDRUT0IESgJNXeOwqRlIgxKgQq1YhJF0VZghWTcxBgkOuRdWv0c87e8vznVdlI6gAIrIk1hFbULrhKYwbw041bYLyJVAWpx50pxKHefuvgQFlBJAokSCiZBxf6C10MYeyCi7pf+Jhot+W69eqBp289j1sOGGP34CDLGDswN954o77rDrruOti7o/2G13Uf9/Rq781S60577eJIBT3VkSN1UVAe0YCvoo4pSLvSVe+XioKJtqLE7r7zxL+8In/5ixFAeagVJAQxuiCJXG2EAgkDENopgxIAal9MXv1e/9a3C6gLkWcbOxIw1EGaxBPIxMTgonWktECEEJfPEkMpIkIkygLVEGJAJVOlkjJYEmHMx/lM9O68OzMCLaUbjlPPfcamc84R2LQEUoOPQNGlKkbnUKcVqAwiODF11XsW3/4G3LQ+k+gLMZA+E0fGB4lc6Nl6MW03qQJRyyxLKHTnp7Z7J1LdNBPHJs95ZvGlzyUnb4OTT2o/50nj4yetdMmMsRXGQZYxtr92zPwgfvRLVVH7p/xp42v/VF70jm7cuwGGB+s2dPpUDMlQQ66p393bWjO64EKIKiWdBrSiWOna94uIspJBJpWBjQu33vDA+Z4i76NSCCQAABAiAAQQtXWZ0rWA1ANIDwgDUMLBXO+m8IgnFf2peecnNh0/6LskyyzW6KsGhQINIgpEQSCECECRKISgQqoNDDKnekUrpoTQ2zvTVzaNYEY2t170vPUve3GETHoABeAdBF2pMsqYgUGvAQEQwBcEWJjstvaa+th8o5U2M6pOi8wJd/C3LTskopBeKqkHOAhZcHXdoEbmcpcuAUC1fXfdUZ2+7G08ccP/++TCmy+JM4vJbz/umJeds9J1M8ZWDAdZxth/gogWvvOt+uvf6t15U3rRy/wjn724sF1YmW/ZYBPRXCr6DbQyaSzERsMNfNDZUK9fNXSiMYZQRrRRNFZ6EPvFBNWnOoqiGcfc5GTy6leMvfr1EnxqFWiwCMHZTBpY7jgVUEjQoRIgpdBQA6UevaoV6BJmPvKhPVdeuKZYWvJajW9ywieZDbWMMZJAIhJiuX9AAIAxwfVgIdONqWmw867VSBrHtZ/3nIlzXwFBkITah1TIQlQAmMdoRaKCEA5AgSMnNATnjMhB+ukddy0+4rfcmolRgj2+bsUcqY76yJjqK3JNmTrnSxFajSYtFZowCtGHJsqyjXXZ62atzvzUfPRWGmy/9pLqsx+XzRG9cYs544EbONEydvQ5MmY3xtiKuOuKS+sffD8dH9v8rqvufM+745su62UDDSI/dpwWXMgyQoh12VGmFFF6LLQA9EjOkEIrnQ+UAeYoCrXSQ9kvjmI7khXJkp8xiy0FCyfuvhsqBSaNAEIAQAwQC/ASMANChwOdJAAqgJeg+hGawoHVkSAmtYLZXXfhNdd0L3nPsK/vTOr1Y5sCRdQqAiFiXVaJVErIXXfsHJ3IYGFOjx0vX3be1nNeCA7A1BCTAGARMgCoCRSSAgCwwSdSAUTvPSqzbyWXivHmMx5W7L5hZMtxYanGLIM0hLIWcmUObjhQPuhU1VLYwtsQU4GJyvQglJuDud0N1poOeDsQJSokwnYBCzN3gc+TY05rPvc51b/8k3nw6clDHoxnbOOWA8aOHhxkGWP/0c6dO+mnN1Xf+0748Q3ZIx+59JH34667hOmodRsq6Rq+DC6NDakGFUgFWneDa4OgEFSMYJIqRqFRgKcQEYx3Qqsj49Z2KauRyuzNcdxDv+5R2hE+3fbjH1pwCUjwAFKEAHL5YFoEArAYEm+DAgtGg1QxehFVVD0oEkEGsgoEUtjzgavsBz9YTu8FJbNOC40iot78ovBRAebrT8q++p6JDWeCg76ApoRFcENRBwEC7lmnFQEkCQDwCIq8ReGia0ACAE4EhKgoBkxum0j0mmPq1DbLTlc67ee0akY6MnpkhahLK4RINSpNDjBYCoDSxbqlkjlr06ypatSepIjdLGTOkHZl6OGOeSmHR1/1CvFnj1+6+EqY7cnfetjWl/IFWsZWPw6yjLFfuOGSi/Q3r5Pr1uRvemP84udmLn6bThOdp9JokAIjAYAAjEArXekhIdEFL0uFo07MtynvYm/Sjt1xzZqRM40FiACpA6eDjhJcpEQc6Azq4g1/daV56+WV2DM+EGH9KXjtpzc3ToIDPkHWQ1RWgIYKKS0gKuzLuj31gfN3XnrNaenQTGKrBBLC6AkDHCmtBQdMimAdIhqlbV0XvT4iNvOmfvErq3/7eyQ0j3z4Ma98zUpXyRg7hFbp7MYYOxB7997Y/9QX409vLn52Cz3+SfklH/TKRQvJRAulICkIIQDtC7K0SmcOK72qhcwyVw5KbZsmb86p2Xb7lGu/BlksIWlFKEXhIW85IF3jASZQH0oF2hLtmp0/du1aj1AC5AAHfL00WABjBRjnQakgwIZehukPjj1RN5JUo6/rpJVV0aOHXCXWHxm7RhyoiAAhCiEkihhj8B4RjTELk7dp6jRfc37xxWtEu4FrJlqnnLnh1a9e6XoZYwffKn07Yoztn52XX158/d9g3fDwW86f/sNnqu23VJ3EjY2tr7LZJHYiEEAE8hSJCAAk4Cq+IiuQKhebMnXCq1BbV6adEf+jqS07f1iMjSA2lltjwQrSALiE0D6wJ4gQIZIA6V1QEkDISpAGPNAkG/0AVYIUAU0gV4HOcPfll8TXXFKesaFHdtyLmsIAvCFlQBKuzv+vZYhIRIgoAAGAiNCjS9N42/bYcdW6tRNPfuHge9/2SMkjzjzu3DeudL2MsYOJgyxjR6O7Lv9Q+cPrac+u2J/vPOVpsxe9xWpAa8eP2ZKU4Cn2miIJ3jsAABIIAIgIAIIACVbrFVnhbZkkrQqtJi0gtXY2ib1uf0hvOvkn3wflISSFAI2hBJnXSyo5wCDroKuhXddoZIVkqiCSNESS8sBeUKKAJHvCa1CpB5BABD8+/aS1Ws/ESkAc0fnioGeyVJCgCAGPjAMR/guWU2yMERGXdzQLISTYAOj3dUgrbZR2c/NFUO0LXug+9yVqdOTaY9QDzzz2ghevdO2MsYNglb4dMcbuw+2XX+iuvRZJpI/8HwsfvVrvvatA1xkfDSoHEGnRt03fItwbpHZNZX5xSxoRBQERQSQ44ObQI4NXwZNoVtKlcgn9SEDwoR+smJ5LLnrH+ued3fAJJBKC80YqEgc6g9bBo1SGADyQAkAIMThBGRzgrg4UACSAg0L6hlAV7KqnFred4I7ZmA+8FtLHIAKZLB04l0nt4pFxRO2BWr5LsPwRKyLs+9qpykBHlKE2AyNQLqnF+V4b4kBOm/HTkue8KFz7D42HP6L527/detjDl/8JY+wIxb/AjB0Vdl38rvqmH/upyVD2zFP/pHznOzH20/GNkjpzBoykViDjQp3oBRcTDw0VBdZOpEQUgMRqvjX9CySCJBE9SZV4FIOiN5K3cilLX1d3T584OzsQgFDmlAENrGiYA30CD+AqyGSASEAIUkRCMCAO8HFiHAhseAIhQIAHf/flV1QXv15u2NQAVcjogZpBFBQrQXlAIQ70CY4My5djYV+WjZEECiFqCklZCZ2DaKiyEkm5lEb0qfJIqtC7pro2W/vmN6w/9/wd57+imp1rn37axHncQcvYEYmDLGOr2XV0Xfref4w33pr84LbGE5+49PlPue07tE5gYg1qmZc9otDLjaE6KbEnxQjmXVH4fSQAACAASURBVAiNIHxTld2uSe+JavviwnJiWP7j6hOdT/MkVNa50Gq0BnVljYh1XUmpZnd1Xv3WY885z2owJKAY+EbjgHfHdS5oLT1QBNQAAUgB0gHPxDVQ4qFWGMDntaSkuKVzSr5JCJHV0ZcYTZaCDzFGqRRFj3F1TvX7Lqbu+4Fc/kJbErIRjazsPORC6cQtFtLIvJfIvDVd9bJG9NO7ROmLY7dtfOYz5r7wOXnayXDSiWv+9KzR0RNWbDyMsQO3Omc3xtgt73t39fXvirWt+opzhk9+5dKem5LE4sRQEkyFAkGYOtimGfhinYulahIFrXAei7VgJqXLa5liQhT3hdcItCwiyFU6dTip6livCThQNBCh5RVANAIF6YHHsHfHtsldXnQScgGlwANusAgABbkctQzRSqEBcPkkhQN8nAoodQQkBmbQoMaOK6+efst5reM3e+sToRIbLdJAhWGZUr+wqYQDvuR7ZFg+IG35x1IASilp+chfrBclGUpbTgVnax1UlmNNvcxiWXSSFGoCr6wWQlC1a5cSeu/EhlP/5Svd177DTc+pR55x3KvevNKDY4ztl9X5bsTYUWv+jjuKz3yqvu3W8o5b9DOevnjRlWv7g+qE4SWBa6rUytW5DdN9iRgRkRCsj5lJQm1ToShECcLGYBWlWlFpQwiq2bBVncWk0j6IgBhqXw/JTNU4PTefoSsoHUuPiz/+6DGd44kUEvrolVqZE8sCgLQA2paoU3B3Dm3wx2dITY9kAhRkO16Ah6KdxMJhmoIrBaIEXA58y6/J8gKpFan/cCNkrADMHfNeN5NXP3fw5b9Tea43rVOnH3fMuRetdHWMsV+FZzHGVok7Lr3Efe27anxs5HWvnvuT/9ab2SsN5KMtkFJ4QJVXgCoeGSdsHSwkCHxQWtsQwYUclVPYA6e9jAZzIiLqJ5iSUDUMDAgfwIVcJcuX+vqTU8HZzrET6VNfNHLB2WnIC5nkQQBCZSuRmgNvbj04Sig0IEImI+yd2zl70qlhw0TTgUOdxrjUiE2KtR2QljkqX1Q2a4lfWqtHeE+XyGptETlQFdQJgHQe0mRmYcnM+Ma2E5NnPa78zvUklX70Q098/utXukbG2L3jIMvYke32K94dfnC9nNxNvYF4ylPLt15JxsO2VMzXCZiQZd6GhiedqEXltNMrXe/9SikVBpXW2hlhYxCRMFLayG05H4VwoA0lSd9S8NhOy1hmRqtBOdOfxaUAcnTtha8ZevE5ImoMwWrZsAAIXoMisAgqOCFX6PUM0cpoYgGh/ZMzT48zd6Zj65UZNrBH1WKP0S2XEGFBVjVUo7C1EgA/bwiJFIE4yP4y5ZTIdeVLJBcFmURVi72wVERK8re+wn38i+qkB5htp/jnPfkE7qBl7DDDQZaxI9LevXvrH3/ff+d6e/335e8+yn3k6nzHzso05DGbdK9bUJpleQgBbTCJrmNRub5WACJf6cLvVxRIGR29D7VNW5lDqisnfAyp6oDu+VoobEVZmuAxxO175oiGw+jYBS/FP3/m2uEN4MCnoKwfGNFwABqcc1olhDAAah7wwV4HTwQfoNTzdqq+68zfyH03bhwSVbKUmE6QPpEaRF5TRbbEmAWM4p61elJKWF7dT8R9BfukTvZUrIySpVsTTWXIJSgKq3yYnd0hUK4ZfUB17WfdGy6EmUX1yEec+Are4oCxwwVPZIwdYX56+dvS634MQyPNN79l6dPvDxd/2IcltXWDClSqsvQ2EW0dCYP3AmojEDG1qEmQVBDdSpd/v6JAZSokUavvcqlnotXthvYgSNt+TzT0ACwtDuR8WQHlJ2we/tv/s25ioyNBCOBISUThAQg9Fei8xDZIIFFjTCgBWrk1VM57rZSHJdXrT1WD339sMTXdgR5NrHNaYRS1C0NBFg2s7WBCmkWSRL/oKAC4Z+EeZ9lltRm0Kwlp3guxYTF4Crmk2tW5WluYKoXenbcA1mBGktdcQJ++RrVbYd06PPNBJ5z72pWunbGjHc9ijB0ZdszcHD/5hfrWm/2Pb8GnPGHoQ5+e272rqWS9eUJ7Qqy9SbzXIGnUDwYq1c6jCJUMjiCNJmLaB8rg6FrspVF1fZkalYKsIPSQRlWe7hksNlRTxvnZ3SJQWLNh6AXP2/riV0BIQMIAQiJQ2hqVBiEIBHkSEYMB6QEEULBBK+WhL10TV+aSrAUrwKgAgSoZU4DBwFRT7/9E88Of3LF7R1MIPd4AoyBApbRDGHK4nFwD3XMCFgBQiKv1YIsDlcpoB/WCiGm7nZYBBJUi5kKqStUmdsPSWmuqoaa9c9r2e2uzpBhbiy88m/7tXwERzzzzhDe8baVHwNjRi2cxxg53u654S/Gv3/frRpsXvjb8/tNnZm9vLmbx2DVKL1oaj35gtGiFvKgqQptL6ho0dSNAjGSVElqKYB36mJm0wKNrsRcSSAKQUERXC+o0hpb2LvjSGZy3dXPD6y5Y+9JzZMyBoJaQ+FAomQsYRJcIVIFAQgGYAxCpPoIGEADGQdQUAdWB7/96sASIvhaYlCZmhXBZ1IjgAiCBEr3t772y+6ZLkxFMB25x7cioGSrKntYaEAPF5XVsiMhBdp8+iFEwSDFKpEFhpCpFCBIxugrciMnnJQiHnuIoiUK5QUKNn+6A9rB44QvDV/9Rt8fEug3pg8+cOPcvVnoojB11eBZj7DA1OXlj9b++4m/9mbvl1s5T/2juTe9fysq1Q2tyqXzulqxLYFi6rkqTOpRFtEY30phYFwSSMyEjpUgWMYQQMqVAxT7VWUhXelj3qwCESA5J+JhOdtNa3NYRD7jgT+2TX75+3fogAACkBytdhdCEIEhBRJCyBpAAigAAAoIMLpCXUvsAoJQEcADGAazU2jkaAKSAuABiOPRBIsRGFLYE0agFaAEBburdgo96oZq8OeJ80RzN89wkSaAYYxRCCMAQAsrVub/sgco9FiJaTcH5LEnq4A1qE0WItgqE2rRLX8mYabUYAwiVUjRRTO2ezBOVeIjjmzoveGHvmk/Lk7akxx+Pz/2T9evPXOkxMXa04CDL2GFn+8UXu299GzcON950Qfdxz7V7b7RZq9FoJL8URBAxhLBajx69T5iBtahiiYVRQlZRm6GlgGlcghD7merIxBalk7Kp8hkIzVD5qVnpvE/z9vhx5h/fO7bugUlUq/R8AIgQBEkAIKCIKKMDF6/95GfHL7/YzMzO+4E7eeuaSmiAuldL0/LSluATqZIyzho/QfKOdr2+j0CKCEnIoKSnCCFIDKBR2ZXZN/dwg4jRB4GoUHjryv7AO4eI443N4htX99/5/tjtNU47fdMr37jSlTK2+nGQZexwsXfv9urTf+t++pPwkxv14/+kvPSy2K6T5rjA4dotaK2FED4GIpJSImKMcaVLvr+hrCwIFKkIFOoqS423TgtdK2iAqpx1ZUzbQ9J5f9d2lcdCiGTtsfDnz5o4++w0GwMEcOSME0EufxjY98j7zuBducEdBIHuOSaMAAJCcFUiJNTO5nkfqPe+D8bXvHZWdWXSFNuOaXbnB5iNQFrYMijXSBvJPC0JTIUapDIJJDFUMogYUw8iUIUUzSr9BHCgpAghSECJAoi894JASjm5uNhx3m0cH3/GM/tf/iKc9IDkhFP1Wc/atGnTSlfM2Kp1ZM/ajK0O05de1PvaN8TEePPCC7t/9ILy9m/nGt36DeS1TKx0C4AjABCBlk9jumexztG3CahzC5Q1yOs2JN7VLhGevHJA0cgkCXWZNkRv7265WMVjj2+f/YTNL7/IW+eNSoEIoIguEVo5Ai33PebqiLDLiAKChBg9QVSCAMiWqdYQFLiezTJBqti1d+H3/mRm9oep1DqI1saJQsoaBboQREyBYiJcRAzBRK9iJBRBaCsSDyKP9UoP8bAQBRIR/vzHBiMJIYQQ6EKPZMeJwdKuvugNrdmWfeUfqov+EudnOw99zPh5L1/pwhlbhVbD3M3YEWrhyg/2fnidndrhe3PDT3ri5FsvTlKXlNg/bkNOyWIK41ZipB4EHWk5b92zTIdoNcWv/SeFISGpcgkRiDgfKpk2pTQ59Hvb75QKos87r3tl8bxnndg6DjyQ8lZAEglChEh1kgoAHQB+nmP3fRhYHa/kvtYCICiDl1oBRCTQWAA1ASBiBRARcgtx6ooPFR+5LOzYTVrnW7c6ijJWhJCVclH5jjYRqEdOomgGBS7WUqA46m4C3KsAv9i5bPlHaPlX0ijIayzStEc04rX29czUztiCTa+4aP6az4oTT9bHn2TOesL6bdtWtHzGVpXVMHczdsTZefG7qu9/R0AYefQfTn7sQ37XLcLozvBEP0UzqG0umqjLpQKEjEoIrSBEANh3LfYobCpYFgUKG1GYSkcP5Zo0nb/tThnIUzN588ubzzx7vLVZGOgjZADGEchIQmKESoDxIATUwQ60GIoC4Bebqi5bBfuqBoiCEAEBwNbOpPcsRqsCCOlFVce0YQDA1xAloAIFPfSzV15WvvlNZOokdgZbNqGvOrJjrUMhQEtr6+ALbUAbjNwjuyz+/Gg0BABY/mzpYkhjmDMw4fS0cmuj6VcD08oLH6odO4xsZCMnNb768cVLLxJ7581jf+fYl/CpCowdBEf2rM3YkeWOq97hfvC9ODUNi0Xr8c9YfP97YrlnKRdrxrZIbzwJh6gEJYLq6HQURUPlnpKerbJ/dyuciAQgIkY4uroLlE9qLMA4Y904tW+crLac96r8z87qTAwvYWgAqSDACwhgczDgIzmBqhfqlkwBAIgAEAKAWp2BbPmnwVlrtLnnWzEG76U0XkEASMhbDAYEEC4htAtV5ZASBAsz/amZxz0xu/tG0ukCdsdH1qI0VQSTZKkQti7raIU6uk6Guy9IsO+AX0Rc3sWMiEQifbcMCDDcyAdWeXKIkQQKO2dEa2FpOiyMzKeNt7/eXvMls22bOOmE9FlnrVt3/EoPiLEjGAdZxu4Pt576m25pVmxca856Qvnh94apHgkaGhtymArIBMkBFdSgRtBLULSq4EAL3Sqdz6tCddAFua+jYDnFwvJ1oKPsN1iIwoFyMokAYTAYb+Yzk5Pt0WHnq8SsEc9+Si7Hl4JqP+sPwMuh9RtMBHBQCEo0ytL3s5gBSQghJP+h1fhIvxZ7Dx9ASQKgGJEAf76pBaHFqGuBBmAAsVlhmVIGwUOtygYkCMIBRbAJJXDnu9+Hn/3A4p13Zw2D69uDohyipNkanXJVIxyltwL+g+VfxuWG9V/+/qJyYz1Dw52FpZm0CSFYJbPcpRLqKTlYV6c+aCeFW5zPbAgb1gz9w1d7b73YzS2s/e1HjL7k/JUaDmNHtFUxdzN2uNr5nov73/6+mNrjb9+uRzaVu2/Reao6Y5p8MKIWBNHLCEpi9EGhEGB6ZDMllcCi7KdZo4oRIgqCfakLEZeD7FG4D6iogRpZVVUNoNTIxVB7lAK0TlS7W8525wqyaylZQt9PaW2P9qrYQRkFirVjrarRfeXTmnYICyWf8d/zPG82m1rfc/N9lcTZAECBlIwQl39cAkUpJAIEiNILQGElGAc9DS0HoAAg1ggEwgysyMlhRNAqKJLlLe99b/GWK7fWbuGE9nRwG22jNkfXgRr3JSLsW3b5yz3rxjsjVS94NEpHqRzVEK0RMqq8ii4nWRdlQ2WDWIPoL3QbdTGdtU577atmPvM5aHbUmnX6wadtOfeClR4fY0eSI3zWZuywRETzH/hg+eObez+6rvn0P9pz+QdG52d7mrITj1sqBy0QuGI76R9d7mu/zxgtAIjlu8OIMjVJmqosaTzzJT2Ast086TGPXjJ6dPOmCkgAJp5AYoWgvJdKYIQaAyAmQQEQCAKgSLh8BTQGQIJK2jyaJWnboMAJq50CIUD+ZyX/Ox76KuY+iqjARAgCJMUAIDAgSIJ71l754I0UABFJWQQJIAE8AIYgSS4/Z4wgBNQICGAIKAIKsFgbkBClE0gAxgNEIAM4gIEGb2KnXtjz/o/OXPP5pDujcghhZY7kvS8BAQGiC6lJXG0RUUhExHCEtNxY4dSuuUGwKm2Zzvr8Bc8YfOPbQQrzO6dve+mbV7o6xo4MHGQZO2iIqHv99cU3vmHvvn3L5e+9/YEPKrcv2oZVw9BK89SnZEWpYshRWLfSxR4d7mO/T6KAiEiwfIM4SkQpUAiY3dkr64AqzVtlWScoVQRwYW5IbMURm7VaLz1rrhvWmnVd0NkzHleinlgzhhA1RIRg3XJzqgCPVild1Kh11CgcggJAv3wJ9AAQAEEtIKEagi9UIwEQEUBEZ71RBjwBLD84BAQZay+EAnTWB5MKAPTgFOQAHqJyUOkIEFMvrAIJ5EEnizQYovnpO8Rn/t5nZQGL+up/rOPecrYrStJggpJ5ZyhppnVdoz687gAIgkgkpQSBniIgeu8RUR0hb22pw4VGbIQAAHWSxJvmbN5uvv5Z9On/nbZGk4kN+JsPWvfSl650mYwd1o6M33bGDnO3Xv7O8MPr8/Hxze++asfVV/fe9IbKzjRVBzYPBQg6ScteyEU7FD7PFFBZ8Rn394v72u/TxSABkQAAiChQjAiRKCEZKCqdVM4KISK53OgQnAOFSobgi+m5BgoclFKio1ilNg3SOFHVYvSkU+4UcMYznryTbPOs3xta95AUQFYQUpDR90k1hQM8wCvxvnYq0QGCdAReBe2lVzAoi1GTQUQgAAGRwOvlyZwkIEAEwHjPNwBqiBrMwl27+k0r/ubfWpNTohNnP/aVhV07YmPQrDHW5JXUOpGVB6PkeGshpQ6kLSejj5UkpxCAFBCEg/wf9OsKPgKBks5HKaWUMnivpIZ4uBV67xLTnBrMDuWZKAYAsaGzhd0zLpKUenxsK55z9tznPwEPOD456QHts564Zs2pK10vY4cjfjdl7Ney+x1vKb73TR+FfNTvuY/+lZra3ic5sv7EaEwRu80AMUaP5EgInaIUAJV1gwxaK134UeG+9vvc1wwrf75sLiIAgPSglIox3rNrryQfXYy+iUkScVFajFQb0XbYl9EbacpUJqZyFYpIzjdRz++aSlE5ObRl7/VN6BQArRBLcFImJjoQBxZkKyjTkPWhamKIqCImnkCg1yAieYHLURYiCcRkamq66Xt3f/H/Rre0BuP8p76c2cF0d9fxBe5Whciy2C3BGJIKhNTrx1VAF3CYdJRYAchAJKnUkSiMOTGIrh+9VCrTBrwnCtLo6A6zxV4ShJLOOSJCAoOanJconTwyWgu89UmWEhHaoJXqSnIxrA1mAaoAUU1O9pI62XLGhq98YuEv34l7FvF3f/OEl/Gxt4z9OxxkGfuv2PWui/2PbnSTe6A3yJ/832f/P3tvHq57VtV3rmHv/Rve6Ux3qlvzRFHM8zwJauxEOwoxxrbtNqZtnEEsRWjROMREFNIqGjRBQ8QnEuFBbdrOQyIEmUEoCqiJulV1685nfofftIe1+o9zb1EarqGUyzmn6v08949zz/Oe96z9e8/ee+211/qu3/iXcYaLj7mhgejqwMY2EI10NgzESqTEBBiSUQQAYY26t65oH7FcRO/TGIOiO94PPET/oaFoyPq2y42FpM7ZEIIxpmpVDPSMqymOFMfSOMFIMhTsgidnhThGITK5zdrG+1PrB37yVYdveT0kERM9ulykJcofpvkpRCYzYRhGAAIIcPbcSXr3e2ewdjDBp9/57subWB1/IHemJaw1WgjB0YFyodqeja6+rKrbIss31Q+px0EaCaG0BjSrY6kcCQxUEwNdklwNM9eomHSF8hlMGY1lJwJd8KDERBIiuL0lWxZ9zPOs6eqiKEIIhqyKSFIw+2NrIxXHro0CyBgSJeVBNk5dT0LXgwMzcwpwIcSzk9NL7Yh+9ge6d7yLn/CU7DFPHv3T71peXt5t8+fM2RPsj9k+Z84eYWPjY5O3/2m6/Yv+88eG3/by7vf+4/TkyRJLd9XRLVhdYK5ryMgA1Kmw5Yw3B5nxXaFKktSZOqlyJmJyaHZ7KI8KLqb3qRcaTDz4yp1IrcEOEQFIgBTBiwIhGUOGuQmxi9ovMEKuBEF9zsl3iOgyU9d1UeSgqWvaPM8lt2fvPPO8rXshOcA8AFjqYGag//CKvSDBA9PbN697acin/a3OL/ayKGvaHE4LLaTRlYem0oKxRjkHh500peCkoTKrfTcQQ0W20VVLeW/WNqaXjQJNfJU09mw2dSl1IeXDhSqyMd5o1gZmbDKt61lmjkBITACQutSZwrjM+LajPXYAM8kiqpcuy2zjOyUEY0XByf6IyAoh1b6ziLntCwYNjbRLaKusV21Xw7Jw0bPkq84tSEr33r6ZJ3fg6Vf8xZ+NX3dLOLuev/BFV73mNbs9iDlzdpm5IztnzlfEh37ndwYf+7BZzA7/1PecfNn3ueP3VpbC5UcORNOpJ6mHbinWte9j0iKE3HNa1EpERBGdiV1rmFOQzPaBTJDZbg/oUcHF9D53HNyHCvHuOLs+JiIyxqgiImpMTAQAnZ/1TBEztnXYxDAi5w2ij6nMJKYUg0FC0ui7wbDXNFXyGppuIbv+6jv+K8YCDID6SA8/numbzz79+fmZ2+HISlEsd9PtSQ9K2+Mqqapl7tp6YdBv6hkDSgqtgTzPQwiMBgQRGRGTD4yWBVihGtiEUs5iMKiGAmoK0SARkVyoikspIUMHAplxyNB4DEpESqh7LLc75INqvLUyGmroUvSiKsTC6PZHiiwQYABxWTYLddS4wDa0XZdBLxmDNEukpiRNtmti4fImg5wDb+Kx+1ocjV7/hvTO/0Tl0B2+XJ/5hKOvfvVuj2bOnN1hb61Kc+bsNe67777uP/0J3nlHfez26rv+18v+719eHY9HNfrLB6MY+0CnnI4kDwnUSSX1QmuT48Bx6GULwZEltAg2gCQKxEKSICR82JfMc/42XEzv0+h5FzadD8XqzmtMQkWIEoEhxphlFkQkJqSsBcmSkmEMqckhi2AENImq5nnZdd5a60NKoGQ4S900k3jv9sFjty0tXC40NdBDoYcr++shfm7pqsuupk3sic8GTsg31ObVoGZgCchsOh+FEQyqoaXWboAvlXPD57QqgEdgtjBkAAm0MrpUISJul1gGANGeYs1CgAzcoKiCVVYmVgEVjQkAyBolDCoJ1O2xDhwfGW9OV9ee87jHm6YZWUtJU1Iy7GGP5fJehIQQY+wpu4SNIbGWBG1ET12DcUVoxp1JRMBTI2w078QFXhva7vj9y9aFmpYXb0g/9J3Vhz5ISbIXPf+KV9+y22OaM+drzd5alebM2Tsce9MvyF98Ag6umNf+9PQf/x/5sdtmdqN/aG81k0ygDHi+JF/hQUcti5gIwJkmeOOsSkJRQk1BbJ5JiEGScyZ4b0qXOs96vs3VTp3Tg+8ZEJl5J09URIwxIQRmlhB3vgMARLTjCKpqYgRC10HDmpL0lGNuNMRkCKOwAjKllIiQASGJZyCFB1s8xJ1icybaHzfDFyXZ2K/7s3N3jil72uqYAVKMaIAvIr8VQUwgb4GhY7GQFGxTxf74t245/sY/uK5Y2DQ+NwatqTX2Wuns/l66lZIq4vkEACJAQEGF2qRMTR60JYyF1VkHzixGO0utOrBaeGr6fli78OHtjRyJA3+u3aaAEP2NR1ae0l9wqY0SrDEheWVyxkJAiQCEbIyXLldKoDUJEbkEquotZvukz4OXxMwIAEkYiYh811VVVUzj8A2vHb/7D+xg2R28onjy0w6/6od229g5c75G7O/VcM6crzonTnwhvf0PZ/fek+64q/+Kb42/9BZxNQxyKkZZsJ731o5HRA+W2MNDkj59ZlAlheiMxRRTCozIjFEIfEyWHBARJUasPRfZtEs7V+07kUtU3Xlbm877qar60C+CpfNfhEBEzBxjNMaYtp3mOJALDXUJZyxlFYnEZk67kDKnMcWMQ9MZ43aKy+mCDNb5ITDBPm+F6mLa5DgkJ6dn7vU/cNUPvh5AQBXMl8+RbcHn4iAAZHEV8KAwQAQyH7/6aOmy0eKwCR2oppSMMaq63x19EdnRQYMd+TM4fwCzgSAjDlJjNI6zkGorGqLLijroiPg/r60qpwU8NJW2lDK52e3r631xFkmNTpvtpTL/hqsfl4eKwSWVOtWUgbFEiWMVYs9mgllQBkyWPAhGyZXafaJyIHhhPsZEgMysIjHGabWp7cRmWbZ0/dL//n2zd/57fsw1dNPN9J3fcMUVz91tq+fMubTMHdk5c87zwJt+of3AR/nQAfeGW8LXv/y+enWx0/7BYcNKeT6aYrCcdG8l3z00B3THBSQFVW2hc2gxggVWxSjEztWhc1Qngcw5JjseT3pFX4GiD+XQhBBSSvCg5CoiM0d/Pha784sQUUSY2cfgnOu6bscdiTFaa2OMg2w0aaYDr+OSiGGhTtsmZM4l34ukWZI2A1O3XQ6FghAIWrqg8PqgO/4IIIRYDK2fqjhDp09dduYkQq+PAvDlcwtaiAHMQAC6ADmHDjXHU9u32pUX+addtR2aQUBxCEomqTdk9rmjz+REJEkAACJUOp/1UQCvm7ji2RFPxAcCZLJePjOpW6KUxVFXmkyq4MQEafEl5cLb1+7sxFCg1koJiEmTSqD4+EMrTxwt9avWgGtShz0FG7nJGhQVKYTYmiml6EOZcK+pMVyMh54nVZWRzp8/ZSxpkCQPp4/HflVUyV39bP7TX5n8/G+k1U3z/Ofc/OPzPmFzHrHMHdk5j3ZOvPXXq098FM6cjuPJ8OXfNv7nb+5lTG0zvebg0BRV45dcuZZ5szHNFvIY9lbVNojuVOILfqk8//xFf0zOmZg8M4eUbOba4B0OuhgMaJbZzrcWSFgNYAyy461aaxExxrgTM+s0IaIxxntv7XktKkRkSSKSZZn3noistXVdW2ubOBsVvSmDa0QVK0sjMa2knHwH0FMeQ1pKZgrSU9uRDCUZ6AAAIABJREFUepCdGDAAoJx3lHd85V1+sH83CG3QGl1pJhPJKOejV3zqQx6Du1hDhK5NWa4gDAQ7LcAC3PWcZ5jVE1tHelmEQ+ImGME5qDos3E5Sx/5FhQAFEQjwwcOYiCTbkstDHT3xjbq8KfKRZtUjYsiM1Q7YyFSDe9pg+Olue6Cwlvv7z20i5B1Q32SmS1upHXCutqoDMPIRxBdeftkBUAWeCRKH5BgINQRUTaoZ0IDdNO2tm5aLoUngvO96/qEBACKiWI8R+3Y0Cw1rQ1KcmExZMIbstT9G7/qT/LE382Nv7n3vty8tXbfbg5gz56vM3JGd8+jl7K++rvngX0bm/Bu/ae033lyurU24gKMHR1XNLp8mPyQXojjBDqUoirPQLoW9FTVEBdiRxb/ATsppLyurpkbHogqqkBQiFCYPPKPchaqpQtcbDjBCh4IhFVQ8uCmmlHYU5plZpu1wOFxfXz9y5MjJkyePHDmyvr4+HA43/KwoCt92WZbthGyLokgxImYNJIiBAa21KhJizIHr5KEwVqCGdMCUU/HaBckMx/MpDeeHc6Ee66+JDOw7rLgt2eoZg9ZwjWc3T938yU8Wl9+cXewHUohsAYKJdsP45eQ6jsfKgb/uADAt2p7pUh2jLfIQgiLs9+cTQZmIQUFVYgIAZktsch+mDBDxozidTv1AXJmczzO03ePt6I7JGKixYVAVHYVcUnzW8oE/OnYrQxGsOQPVckcjm3eGfQAHHXHcCo3pL3CbntAfPW5hJNoUbBXEgzCjAfQSPGkhbrcfyVcEXlh+kL+U0Q4AEbuBLSsvrUBBGZIKJJVARmlzA8atHr7pwIf/aOMNb+xObmcvet4Nr563vZ3zyGF/r4Zz5vwtOPnGN84+f5ucOUnT8cIr/t7mL/52I3Vx3dUjjzM/sc7lvlhf2MJIts0KKjvVKKFgTG0r5d7a8B7qyAIAAxIgE3WVN5kREIGUQHt50TWekTXEdGqDrj5Aa9O2nrU9u1KlaY4R9UspqojGmKIoiqKYSGTmh1767zi4WUgxRlWtqkpFiKhtW2utEW/QaIizwgCTm0Yss97CkIpeE0JizJD9rC7YgjNdioUxsrMb4/k3B/hSaHn/oi3YAXhfC5ZGu3S2iQqPXT3BcJGIrEYBs+OdYhJI/twv/8bWW36+uPKojTQV36j00aJoIIiomezvpRsNppTOZ0KzAaQolARIiw83pw8m2zjsJ+pQbdIxpcLrjGmFcV3gSb3B57oa1Bdio4Q7t9Z7WKYY0XJrZZK6gy2BwYhZQhu6rl9QiI2wU5MvyvaT7OKN+SKUpnKSUjCihjHtk62QAAXOn/R2DjPnZ4pAjMFZVstekhNARBZpyeDWxB9ydPdJXlyox8Xwp3/Cv/P3aLGHRw64pz/z2u//yV0e0pw5f2f2x+ydM+fvzokTH+ne+f+m27/IX7g3f/m3n/3D38+P3+Niv75sgQpk6TIvkCwMXGq2fDdaKEqSrrI+SQcAeUJGbPGiMbVdARUEFACU0CCBKCbRJNPCjvK8Xl/32xulMW1bO+d8igMpTi+4ZXfw6P/ybWuLK2PPl33nP8w8L15++KFvm1Rwx6W98J2dTIMHY6U7buaOTAIBiggTg+qUsLr7jCzC7A/fO1o/t7BiT7/tj7w0fPxY03V+eZDV0joziMZccSAKuBhTSomAjdkRNIALMghfy8f4VUcJQ2pHLWz0C4shiU0n7z94yxsuu+W1X/b1NYRSLTTalSlTanB6x1VPk4MynGnGZooKvTzzmtpWDHFmaI/dDDxcJCZFACYwJqKZhbhdh1nbtGXPSxoFPSfV83pHbpPNpmtf1LvsM9MZuGysm5LM4RLaWp+UDz6lkxfgkd8/d3uHJouQUKyqZ4qI2iUyQJYoEYsRgUQ+YjQJA0mR8bX9xSeVy4eAvcSpiQb3R2rBDg/eWiDiToxWrXdVqkprY+pVPvTy1hW+lp5NrKYjlsYDJ9oYt11t8kIOF73/84e6t7+bHneDfcwN+M++5ZrFp+z2sObM+Vsyd2TnPPJ54JdfXd99Aoqy9xOvnLzih+Wuu5YVz950ZNRwhylyLCOaQFNGy8bGtFXAopjW+4x5i/1yZ6IhBJ5S6u+xjkEPRmiUkAGTD75qQtv1u6mYvDEZX33Dtd/8LfcMRtf+w29xV1ymkArlGqUEAoUOIYuSDD1YtK1wIS77EB5617/zdVIhJNz5L5yPpgIiiAIgEAQQRWKQGDxb1wANFDbXjq///rtWZLr+jndtrN63EENHA1Hl3BX9Hju748gy837PASXwY6AFdcToK5XFul8tTs6eunlt9cv/gEIjwbEl6VDtid94a/va19BjrkoOYxsMsjGma9peWcQYNQYx+6M46WKYhGA5Ak69X23qsdfWODW26CYd03N7Rz8Z19GnLskKZmtGWHxwknX2pdnK+/y0TG0u/Qdy36Nw59pqP+U1anJYBghRHDkwPkUAJTUUxSOIA8qAApQRUoKAJJ4CG7mxXHzq8HC2Tzrt7RR77aSS75whAUBEOjRDZ7a76Up0s0G+RvGamQTTasy2XRiKKqETXsuoV6cCqRPjz56OjMPF6+hjv9P91L+O5ybmqU+66ad/dreHOGfOw2buyM55xKL6/q23vr/53B3TT99bfusLN977Efj47ctFgVctbzmBNi2Lq3hvqRAUnsXqFCpCHATnAXxhIEkZsMWElFJSMLYQZpR10/b8aGo6XT2nGq4c08lBIVdeffV3fDN89ysHg0GWZfAQN3QP5p6untva+t3fDe9+R+/uL9Tqq4U+dnx45UBwMA5tz2YCyAG6wqY6lK6IWrPNuuAdgPUIkXhgpn6NcEiIDLizu++07PrvG3p9zbiY3md/cPgxt30SiAGoAgCAHgAE8BY6gAEESAxIdz3tJooRsVAKu2L/w4Wipzz3AqqIURiQDHgNDIzWzJp6kTI1NIndYlbWXRtxcOdkPHWTJAtFaiNXGA8+Z+D+ot6wNBg0s1W2LpcX2cUP1PUwNI9dWfjExpiMJQ6axGI5Fj9CfNxw4T0PHANvWhdtSgAORIEjwMMrFrzpgLlysHwQc2haQRBDgIqijrKqq4qi0BgBwIOgtTGpBQ8ioMRogFAVBICIQPbWenIxMt9ulTYVtr9d4YmNevFQ/r3fHd/7PhyUfNkiPP7mm2752d22cc6cr5S9tavNmfNV4eSb31z9tw+5K/Krf+2f3ffUn6ke+Ih3h8ulAZYcotfgC7aEJqREe6zlZgOdcpZTT0QCtmUMJkhTulZrh8UoFSIyM8FEX993pu/yftxaLUYrP/6qGR+++ge/x6VsnPk+oEY0F4J2e9mRFagUiDtIxjHwbW9925WTM2fe9a5w7JjNC6hDfvkBI9qVEGcT07NMZdfO+tTvJJu5kJF3M7F0oHJjQtyRHgPRnXKoXcy1vZjeJ6xt4h0fvnHxasACWkhZzWBrsmVQsJqAeDZdbdePPempC0dWbDL7JcWCiDRJCslaCwZ98sigqqbTxuFB6k2S74Iepv7xOLtPZ7MIvdAH6ioORvtZShGnkfp1mB6kwSb7nPLgZyXhhs1KkZGXbWdKNHXocuAnF8PPy+a6T4ukt25sL0p/YjuLQGKTD2LTxRpPXIxCaCqNdfiYxeXH9RYWUkrQBQeNcg+JBTpNaogjWiVVjeZ8CxJEBFEF2WnukHhvza+LYlgapYQmB+DY1l2YqDY2v7aE73i5fvQTydr82c+8/tWv321D58z5H7NPZt2cOV8BGxtfDL/7/7R33eG/cEf5j75t9ef+lZpxCTw6fCU10lhpMwSLNqrGJEhiDce9FUGxippiTB6tUZt1KRm1VtCybktnnTtz371LZEss26uvXfrH/+DQj/yktSxti7lBgATEicALFOdlwr5UwrUn0QioCgYhggCQAQkNWJ8gbfz6f5j81u91Z75oh7zddlcdvt5H9jJxbmEGTU7tIOA2ZHVuTGotGgDgnQVNVEB315G9mN7n9plVjM1TzlUtx1wAkoL10PXARhAaGxqAv/sJz5PTJ4urcklWcI/JvV0EZRs0Sop94p5AF0PrsLaw0PI0Z0oUvN7aborNCk9TgxlWaWaftdD7fBAI/gmF/XhHDFsvLa/8wOY05vEFrveJJngbn97Lbl9NkSbXHShvnzbkR5FnA8btwEvUe2aZve3+2xNkVKBpfQdMRIhBH2ZEFmJuDUUIVZrmBd2wvPzYYrjikcV3fTtuqhKwxKzVmBAycuhJURKBQBIA5J3aK8F9UoRnYkJbCNiYgmqFHKPDADSoo57c2F4YLbzqh9p3vJNtnw8fHTzrOUde++rdNnnOnIuyP2bdnDl/M8d+7Zf8f/soH1pe/vnXNS985cbG51Db4vLLVcxMayu1LZewi6YLBlAII4MCAeCFsqW9QguajOSipXIQRTLW2kmo4XgVs2lPgz18bf4933voR39kJqav2DEQgG2CFoAC6xqXqRAAviDItdM8ae+iABAbTDkQikmAnFStbgEtzdKkz5n47bNf3PiWH0nHbyOYcraES2VUsEXhpTGT2VKxsApsNcCFJg5wQZZoF933i+l9kgqeud/9+L+44pZbNE0qyxB6hZUEAmoEIY/xjkOZXPNMs31n3yzX+f7IhfUIuTES26gxAho0BWQmgAfYZr1jtlYk5wVCL6dZEjYOeJZVPV9qws5WDguInLiLURbMbEOWnEbM627GK5yt54LiShL1EpQC1i/orXysOi22jNodn7RLvlyViSFwkEuIUgDHh/fR+xgtUkYmqnQpsLXOGPHhuqF50sEryqiSYR1bK5oxdRpMssiYEAIIgCAyKkASs0+21I6mApmis8I5KEmIKgmwc7b0Zv3kydHAxY3NOLrsyI+8unrPO+Ax1+l118I/+ac33HDDbts+Z85fZ3/Mujlzviz3/+qvdp/+NJ89k6qx+c5XzH7+TQpdUuwdOeglFQrksqCasrydbuR5bozREDEkS6zEIqJ7LLUATWHq2i4U46rOIqrjs6eOX9lqdcVV+Q98zzXf94NqSkSfIAIUokQ7EvoIECGhMmonVWYMQPHX3nkP5hUAgAJUGvpiW1VjkAJ4CxYiN50WFoUACQLUVgzSybXT6WXfNH3gXukZu3JkpKOCYUzjLs0K6at+KaMAHlLZvSvjupjep9fASDIe3/DFs45bpZ4GIBsVDCQBpjve9Ob4S6/hw4/LRpo6pbC3bgwuBqcUjHYSC3R9UwThc8E/UE2ToVrTMHELCZUet3DkgfW1yujN/fLWesOa7GaX3zaddkzPGQ7u3m6DNY8d0K1bWET/9IXBh9vZOrZLyTx9aD93Tqdm9nWj5S+MZWaVU7XBw28uirfe93mBzJacdaFFg4giLdJFZM4ugit40taIPOSSW4lRakO1xZK9j2Ex6jdcccNl5CqpukwjREhxp6cdKRhAEoMJMEFwe+tgfDFcDIgYmSOBB9EEhdgeFhOZSEbMbDqCyAFSu7k2ghSXLPzxX8Q3/2o5q93NT5kHaOfsKfbcxjZnzlfC6i//cvXRjySN5gUvmf7bf7uwenZLo152dBn1vqG/cUPioGiiYqegxEo8oDZ4r4mZCVAEVBWJaI+pEASYOBk0ZNhIuv+4lssrr/rR9L/9kyPLR40AdJAKGAMMAUwKwBU0GRTWA0RQB1ZCcoYB/srM3svZBR7A7jSywgikoABkIYI34ARqEgupARgKBhViRwAIzcnf+tcnf/Gf95uOjl4bNB9aVo07nuuOcNhOHHonLLor47qY3icZW4Vu0HZNsXz01k+PAgCk1nKuINCJmtsWL7vyqiOrduK32Q7B6f7ocOZTLNha4Ihmzben6mZGGIm89yPOQLQzQkmdc7NmumiKTrFn+ltx2wmXWX8cZ9qCy91Uz/Wzy2tuijDj7SIM6NnLw88+UNeDoB0V+bDm7bZey8rl0MiBTLY03b1dLXflBswcoaMi+hBdsvLwnptvu9xlxphWYivRGlMqcxerougrhtDVxluNNy8sP2npcB4jUxAR2fmrA0jAgIRkFPaHjJdCkSgl6EhChkjkfII6xjzPOXgO0WOEwgFibLucTLT9tfvvPnrNjb1XfE/7sQ+RmvwFLzn046/c7XHMmQMwd2Tn7C/W3/KWjU9+Ws48kLa3Dr7821ff/KvSbNA1VwZwS2SwmcRknaNtk6QW21/UEEv0U6ooFRmQUUwqnkGZAAAkmj3mKIziwoni9Ojc2TDNB6//6ct/7JYmgVjoKUSMBhIIKjkMAAoRgW1EMJ1AlgAYQCAaBVDWv6KWtTe9WAAA6CByMgZjIoMNxAIwATBY7QK68+PAkIAtIHjsXJvtJECu/vavnf3F/2vUer3qxrarrLWAmFQelCjaRUd2hy+j94lCtTFF05w7u/TZe1aWc4LlzkQOxmA4M7tz8/rn55dfZ9PqdHCkP554u2c/uL/CiEcnu+mxelIhEhlKaABjSt8wuupPq/ss8TP6l31wfNwgvXB45ftmx1nci/vpw9uun4VrcnP3jDNuQjLPGK18dO0BRKD+EFM34TDyPUldD8yRAd4zE0fF00z8RGpNXKp19WmLh9554h6KLnKwXUgmY2YFr/rwMmoM5xpSCh2CoGVljahCyjVpZojINJElgdFkwPv2H93wBEjRoGQMABoleVS07PaJvq907AwQa8SUEJCJBSiKdHXWHzW1z5yLKLNY5XlpIpo6dnm3em5zaKxr7MLrfm52z21y8PDCD3//gQMHdns0cx7t7I9Vcs6cz/3Sz8MnPpMDLr7s6774m/+ut3ZnEhyurEivSComUYxJrbXsWl+R5V7UKoQ2o57NaNpylkVJCYEMIyiERJIMsd9jqQXh7ANbsHLZLbdc82PfD2ggdmostgAZJQQCEIAE0WkCoBoxAxOTZAQJIgNFRKN8sWmdUtpJId1DiHgioyAIDIACrWjGCBgCsEvUMuQ7AVqFgAkBUJWVAGmKkIcweetb7vmZn7GDsixLl2VJZad3AwGmlHZu9r/2XEzvU5SsabcydHdOugKfcXK9Nk0Zi2gAAO59/BPS2rnpFYPlgCxUi1i7P3JkPzgeO1ugICUGUQBhB0HCzMaRZ0paW1xMDiJsZlIKAYgYAi+RWjQ9ipx0JjDIcNxx9tLewT/bPreY0lMOHPzQ2S0zwtgE11uw2xvrmazwyhjXX9Jf/tiG5jz+xObmIg5rbI0KgNMkyUZ+mBHZlBJemBqWWWJKKbE1qhEEkbkVzYq8rRtM0suLOtRDw1cOBtcuDFecwRA1eERMe21+XQRxCWJCQVarQkklUSKjopmiiPelcRKFDEdJjOQZckhIicey1sdydaNu+lfd/dmNN/yE/8QHn/iXx3Z7QHMe1eytXXzOnL/G8Te9qfvMp+KZk6Ga0Le8HN7ytnI6qa5bztP++NPd6Sn/oCwUEO5E6UzCkKlJ7SxbWIxFJefwxKnWLLW/9MbnfMcroHBt0txYSAJECSLj/nBodovTv/LGjX/xK8mG8uABJ8kM3LSalZopJbSubT0y5GUxm0zJFQbsrl0BM3E3c+ngJNs2Z47T6/7VtT/4Y8QBFCLZYwsFPe5wmCxnZtoRD0LXPsxcz4eLQQDCJkQAMMYYRRLVJGCcp9SlmAM5wJRSzDASAIgmsBGTksmGt66vVpZcDKpCMvC98AIz+Mhkwxn7vGLlz/y5XsieW8r7Ot/riice4Tu3p94PnzGiT29vC2bK2ROW/X0PaFX4J4wWbp3MUDA5m3UmM5tT04ux5sTPHZUfnXTigvr+k1fCnbXBWTtrq+HgYJuaO8cbhDbzoEaAAEQ9iIFLe4BRQWaOyWPwy5afdeONvdD1VFtty7wIdQsAYC2SDU3oUTbJakrIwASkCJoEEQh1v7TGvZgusjvQZ7uoBw9nz37uDa973W6bOedRyv6YRXMehZz4tZ+tP/hJVS6e9+LJ294az97L/dGgd5DINNDuNf3Xi6GEqoqi5yUnCQEggRYNNrZtM5O3DXUHuq37e9deOfiT96z0D0CRCZMAGwDxgaxVFLzEG/N+Zwazvoc7n/9ic89tctlVMbOVhAHqhLCMtCR2kkFsmgW20xxts2tFfh4qhyvb/bY3gWU0q6e3Hrt6F4cMwdz1279S/dwvLhxY5GJx1k0yAxIV6dIeYKoYSpsZIhRR1SBJCNVQ1zUjzgSJABujfeEQgo0ajY3W99X958l6IX3oginKCZHBFp2hys9Scy2XJyhUCpcnHpvE1pZtAkers9lK3oOu2+rZoQ6fNqo/skqtKRxOy9zWTduX8LjFlQ/MVpe6cgr0jN7CPVRVk7bnVsysuf4q/ORG43w0gONec9Rc/kC9tQz0ha0NRWODKKugsoAQ4SWWXTNEXQhgmJlDU/UtmxgOLS4+feUQdZFYwFLXNRYpG/TGoc0CWiAESCKJAHY0npPwPtEJvpguMp2dzEwavOrHw5//F1g7c/Nn79htS+c8Gtkf9yBzHlWcePITfiDrx/tOF9/8ounvv6f5yAcXe9lgYRnZRZbOVKav4PfHny7B+eRIuuDF7hTXJ4fEjnS28IBp46nB63/qqn/zjmw4IGeaENRkAIACdF5MKhLtj/HuFjY6NDT87u+tllz9/703retyNlQnB6TwRG3XGbaGbeq8IWJJu6XPmjEbMO2sLphDsrPZ2a13vufAK39AEU7+z//T4pErZsjcbpdcCvsOM3OJ5eEytoCYRIKIEOzIPlg2uSEk6CSaJlLQ3BRbknyRfX5tck9Hkw7GcWotIeWttF9X9s9tqeqZZ/YOT9JwVacvGK2olybZb8yPfqE7VzuWBl582TVnxtsxKwbMa7Fe66AXaNHVzyry22q5TMtZSJuJy+Cfc3BhrcIK42YrilMw6M3kZG16nWbcPm/h+uPbW43y1+ej0021Wk+RjAECQyKJBBH5UsvqKaQgws4lwES2A6yEKmM+t3X2ns31w0uHlyHPmX2GU1/bNkBesCqGoJISgxJxAu4ettztrrGTHqMKAAqKO1J3xmQD8AvD9L4PEkWS8Mojh37z3Ppu2zrnUcf+CGvNeZRwx003SBOQwmC0tH3vGqvSjTGGnqMD6JNQhUWCgKa2sdgfkQzUC+VWTACQUlJVQYCIfjAxd5kpn1t4/c9e8erX9WbQ9gWTELMCahKrSDt6sKTziOzfTAQwAoDBq11bPXbiqU+9rJHm6FFQj0zoshSSJeu7Ls9MlxqmbFfsrKI/QHnHGDlkqSdpOts8e9lnbp30YHr5YwZXP86DZDoLPKzipG9HGrpLao8QqggLIIAxpAg+BGAqWpk6Na6ABJm4DYr3bm6EjKFdCjTx2B6Q0XYOTy2Lz06OW3EdAJkiaxDyUGUhTl0y5WIaT1FXzOLjTO/j4TTaoWvbKbchZS8bLn54PC6gmxjMWlOa4WMPtB/fZJY2gFiUSGXWjJ9x4Mo7p6fW1T5/tPKZ1vvxA+1gwdZlvlilaQpslpQ/s34usrHCyWhKyUQltoKXVrZMWEDQsO3qzrncshGREEJF3TDLQXwMzU1LK48vl5at9ajSdNGCZGgIKAQIKmTFGkz7Q17tYrrIeaItG4fUx2atckOq2j4dufLuj+y2vXMeXcwd2Tl7go896WazPc5ROe+lrbqD04OjT+50aiXPUDX5SOARFTijHHwCvrQb/FcNUXxoLPaCEpYyTe4/fcRaue0vLz94OU6DDjKEAGABQBUkChsCgCQJGHnuyP7NBNi0lYXeQAASgI33POGJ3cbx9obLi43ZKCvXUbKQ9THbxLpQhV16nrFwsh0KN3Xc3wjxoIEzp2YLiytGi0LHmytZnE1LazA6QO1SJHNpQ3ZWYgQUQ0GFEa0idTE3boYGETXB+5uzuWcz6PXGccrQDNq8dQ75Kbb/X9u1RVjmNmqve0qx8IlxHUqtq7PfuvjEv5hsiHpk6UiFoKiTL1xex2cMj/755Phy0Z+hb2L10v51n+yaGNe71I9uY7FbfPKo96nZVqKCYFJI5iWNbWY1kaRWu29auvKDq5XJ25vK8rbNZoR1f2HlE2dO1knQq1hQVSfIxkUNl/S5KVMKMTc2dNESxhiZGQkM5hNf2dyCJMgYUPrbzd+/6anOV8QilFpKwQgjFYGygO0+SX2/mC4yR2Ot3fCz4cBuH7/74OjZs+b0zSfu3z1L5zwa2S8XG3MesRz7l7/wI7mDruusoXNrwzS1w6PdwcJ44RQ8GQsxhgoyx1zYwBnECFPcJ8VPCoD0paWfkQiJkShRaLaPfuBTK0evqQglUwsKGjSeD3oQE+zc4hGJCO2TVqW7Ryg0z0QjC1FST8s//IOn/8PvLX1uQ48MU9sYBDLOeawhlS7bCSl97SlqrBdQPVCSvO+mFWTLK74/TdhuLK9wtc1RKB8E7LxAASSX+GNHVAExbFJSIoPGNlG8ksfsU9Xayaa2Nl/RYpUleVnkAgCfYLLVOL4/pSt0YUYzgXbK9kzdWo7PLMrtaI9H3o4nnrQyOlf3LMCTTLaKgMFuuO01DQUvjWHLNZmxdCrIVjz3osXh/R5W2h6A/2JKAECC1x4q7pi2fbWQ6LmL+Zl2uiCLn8Nxh63D9qzn0sNW3lpxp2bjpMQKyIQIJCDwEM/rEj23CCBAjEqgjgJFcaQONELJrms7cVai2sA10sfrtVvbM8GYZTMYBWcDGOQI0Egw+yRliBAVQS8kbOzI+SHiNHMkZyG3brI0WpSz54713eB1B676lc1zu2rvnEcX+2MWzXmk8smlq3Rr1b3speaP/7irqsHhy3VUSPKGsyzywBlFFCZvOWmwbWW7xhP4sm/2yZUc7MRfL+iJEhKoxs4362ev+Mu7R1demQw4iQYtgtTAjgwgAiIAhBiAkBBpp3fXnIvjiVmTN8CCbWTNQoLto9/3Uw+85W2OjPYIolrhJknf2E473KUHqin2MOTdqDZxSu3BtDRL44VOu5LtRjcc5BXarpUhxQgfX418AAAgAElEQVQCkANeWod7yyQRzdWxBwBbk723rY7F9kzs8mREwBoXY3ysW0SD9+CkizrQ4enYBSfPzJfvhkZZv75cOpZ7M5MmwHqYZBjyYrTZBkh1y7OpL0HrZ/YG23UejL64KM7VxByf1hvd5dtDIT/hS87CdSWespghcaU1m66L3NdnmnITqmNNS3bUJv/swaieeK+EAk8/XN4ZS62nZ5sa2VhANqSgoBpB6JILJyvvZGJIUkIkRqS29Zk1M9+WZc8idZpibgzCoieXzOm6+9R0/e56ktAsmF7fZAZR9liL7IvxoJV6oToNFRAg2aq3XY5YOxfadjSKTS8/OG22fn063i1T5zwKmW+Pc3aHE2/9ufr9H4PjW5O7TufFdrlyRFTHWVqItpPaKqPSGHgJfUjIlKsgOwLStq4tgtpLK0v01UJE0PBOVplBMkih7ZqqHr3mNVf86I8pUIQuB1YxqAAISpIkoQIyKSABQYhIZn7k/Js5f6wJkY0BlAhkGoAM7t/8WLj+u+LVZsu217e99Zxyn2bYFLA7ObLeddgUmbFRsBQ/s5WJPbUIMS5JXDOUd8MuV4pnSSmYQ0arS2pPX7gGGTPeP92eRrCu8G1y7ABilmTG8rTR0c+OTw7QnqF2BJbZXEbZRqjXMQ28jUjRAbRBrKVYJ5OFnvvGVLyvWy9hEHXrJeWR9zTjoQlJ2n675LM0xs1CVogopElpj8RwTEIfclskTCFWuS7G8OTR4ifO1jFPGfYDtKq9CF2JwXpYH/E3WvP+KWdpjJAnxh35LdtKxKCojCSGMF1qB1ERMe4kDgFhFEcWRKe2MwIWeCenKARf9PPaNxkOIKggRgMe2x6lxwyGNy4s9XR/HMgvqotMlCUVY7dplkMBmMLxc3k2fOzpk7tt8pxHEfPtcc4ucNuznqonTpd/7wXjd7/36PBIWmIFAoQskaoyGEAGpAxBkJFYUYFENIkIMcM+UR0HAMSqCH1WbE3WZlvLqb999ly2fN31b38bARKAAbMjaQAEgICAhEzECESAuJOUNk8r+B9BO/94Z4dFgp3Wt1CWl0/e/gdy6u7hcrZJma2LXraBvrdbDd04GSZVSIgxkpJaQEVVRGyJCUg4kAbEDMgRPOxETwIERGVqogdnBImMC4JGtcm038bKiQkkZeHq1Fpuovu0H2/EKrX9lGeobRZLTw0yP6e3cgLw/nCmJ2ZC+OLiyD3aFF4eUASMTxnaSTWa0PgF/aWTMRql5wyL46ka1dl9rQenz+rZk97cm6ZICaO+yF1xQsdBwov71x5P2wxYNPTEQ7baGkxZXnLQ3DlrjOYvLkdflOxzaXVBM+PchPGleX6P1Ib4iRmf4Dyv25MhAGqWL8xS9cThgQeqsalDZ8AiqUFFAmTUS506ggBAiAiAoEggKEJigAgJEIBQEchwEiU0IpCMqEkIkX0isBsevjCe3rHRtIArRZFraLVGokwzEie0t1rdPrTNMiICws5SReLbXFScTVwSlb5tPKbQ/Zu62W2T5zyKmEdk53ytue/JN1ehlv6Su/uedOAGGp1DKqh9ZDprMdWh6JWNdpYz6drEsvbAgXs+e6R/426b9ighAsxuPXy5O3rQdX1yvg1iOCHsj4j+w8XHRKCM5CxjFIgJBB2biWkc97cFFsmSb6LlP984tdQ/PG5rYG/jiKvJTVcM7l6va5N93XLxoXPbHXsU5myZ6g1bLNt4ZkN7zxqWn92eZjTwST3X5DSRYORgZoN4hFOMqVVMa9ZfZ44201OdGyJiwSxtG1BTybYJ/UZuPDi6tapbrG00FvsSjHP5ujndCzmRL9DFuHBdv72rjnXXLve4ioBMSth5yLARWHlske6bpkjNJ6fro5QlZhdT0ASAiZkvcY7sw4UENCYiUsceVVWtAEft8uA7MFl208KBZxS9wsQZNuSj4Xy3Tf7KSDGzuAp8NNlTpj0cdeuBbbHmyWvzHNk5Xzv2TWRrziODO3/zjXL6dFH76Zk7B1dfjzw9oAunYbuQ3bnqvdT0kp26zoBxqCa5Ueu8zq750Tc+Qv2oPYdAxLZM7/iTcP9pOTBCrVIqgTuC/VEs+HBxJrfMqmIsd+qDxcaILwi7Xj+JurTh2893/j6PBebrWvVloU8Y64S9/BwVHaQ+bB7bMt0o6yXsmYPPodm90iHANGZHTHFfSDmaVlc7Ry9bXJ5uqbLJW/v8waGNaRzT5JlLB9YxDav+KYjPW8onbZj56hmDI/ea1qnTDhO5Sb+YJN4QXpTyucv9z/BqFzPL8bnD0anUxUiicpY7IWgUsEc354c22tmEUorF84buVOzXeT2JM6R8SemMb0CxAlGD6IxhBrnkxV4Pl2REmNSyKpoIGMQoIEH0ZlAWto0bdXVHbGZ1e5ixP9IU9scCwUKg0XG2laplm481xAa3Sf797NKmxMyZ81AemWGwOXuW9F8+qN/89+szxwfLV/iJFkJn2+0js5XdtutSMSuNdKmIklUhshxvNvs/8UPTYrfNetSg4KY5jj/w9ipP/a7i2KM8ON0n4a6HT5u6LkVJKdSeIxdUZJCHRvIs+8B086OT+ngrs+RBWxv1YN176oKvQkiD9omX2Wp7HRM+Y/FKMmi3xk9cHM6q0x9LA7QLHO3zjo6mXZOzhwQvHF6ZJL5/s6rIPdUUPu8+vnFqzW0sZUc+trkdQ/eScrRiJ385oZrL5ezgR8fr0EkA//xspGVnuq3rTL2Ek3Mw+9AEBt3Bnu0GdfOprWny+IL+SgtyOQ8fY4dRvZX8M+MHWOGl5VVK3WeaOurWIJWVr5LKSam2MVprR+T6rfKs0/bSCm/97UiqO3JmsQmYgJmT48ZhiTEKzECvL4vvWFp6/oGBHQ4m1XC37f1KCYgGKUTvCKmVAZWf7cdTbnckQeY8aplHZOd87fjiU2+OdZf+4x/3rr6Rg5FCKmsStytpueF2t627NNTtUj6oMXWZY+ho0vIT/8Gh5z1jfoT82kAesujjdlH/uzfLwQFULpNJJ5Yeoc9fSQjJGauImOVVhK3/n707j7X1ug7Dvoa99zec4Y5vIB+fpJAaKGqiLIuSKCkiFQ91VDuujdZJWiQBCgRp0/4RpAHqpq0dA2lqJ4XrAm2KFCjQuHCTwqnrpkWaOoYqCXZcW/IgipJJieL4+KY7neEb9rDW6h+XlpPAL7GIx0fex/MDLnDxgHfu+c759v7W3nvttbPc7OIT4xJGDNQAUoTy6b37f7Pc9M5d7dbFTRjt+vVxu51DkeeXNNYwI3elz9a0Q7nysZ3tr3fleUim+J66eoHScsU9jds0FTp4EmNj7azsfniv/Z344t7oops9nVY7mruUP9JOviE3sYIA0Kr7er+Y8BSzPyA1rh7bnT/RrX3Jn9ipvzHCst0m6l/UxIrR+ptJtojXOrI5j/Wv24s7OE3G38tbT6Xh+/3lr+LJo/PLN9br0sUVCgTWio1J3ngzNPWoAEjeG3Noa9FUTAwLQ/iet1769MXZPVNAJCjBm8tjd1pD+o3PyAslA2zBh+KuWf6NtBhFfml5Rup8b9wVNoHsxp3zF1v23nU3j8PedJFzVY8qveR5X91gC6/3u3tNNG2bxnH05tVz0PW1g7f8j39X5+o2uQV3BkL0vF1VRz/zU6WdegCeVxb19IiKuw8BqBRjGk06syvd8jCnpYmGeVuR+fxA2LIRn0sDSHLWU9jaSvrQJLxk4hy9Y0tv0GonlZPgP7bdvnAUYdr2hzW5dSmrxlcnpQU8Tli3Ova2+sj2vd1Js+Jl5xbXpRIBgkqn9ngz+e1uqCazF8nma1iwOYB3TfaGUI7j0Ue3969365X4a+P183ABSrgqJ5HdJ7bKM2WYlV2z8dG2fTlNelg/Ntl/kXxR/eOzrWd7XNDiRRldTc+Krrkfu/Fry4PaXOWriRKIgAF5D69TneBbGWvvARqFmIdEI+TxA1v733fxHe+fF/YUF0NVqJ/IkjtWamki+Mba7HUrntwxdBM/kaxg9a+Nh8vjLop+bjgb73/j7rAJZDfunP9gVpfDq9UDb2vUVdQrWbUOdR1IB4C7M5BdZxEdQjVpIxxbmaSY/sM/t9/sbvZZ3hkjgkF0zj37V390d+8t2eXlMEzQv9YHDbxe0DlCYsAKqTbcQncxNJeb2fX1VSXuMh2UsS1phPX3zN/+bMydjVFmC7UYeksyxKBGD83OXV2tVguVxqykj8zdzaEOFgHrTvKj09mV9RJxe47hd2OsAL9jC5cLQ6o+OtlajmvJ9rSlQM1Hm8kT3cvbvnr43OWrJ0ea7aqkuTUvgtY6kHOPhvlX5QYhRHVz3nthdbKft97e6MtKN7Cc8ACYrqx4xEWk/GIeQ45Tt9VwHMp0DTe3y/T++e61PJriQCBkGU3UchH3BhuozNUfl37F/bnGfea+tz++ffG+uum1X1W2pcgtxeAmfZiVurCIdWfmwBeFwNYX08JfzoMJXFsuCflz8Y2Y4LFxt9oEsht3zl9w6MzL9jZKFMy5THw1qfv1wk/8GSkM/u2qsClhqMUXzVrN4OSgac7PPv7xN9Zj9u7lCigNx1ePy8/+ncrtrFs9pzAo4Bss0LltkjJSkQKoWXNonaEIpHfQ3vakulzVhzpEcgrVl23ViCBXj867a4Ka/Qcu7lw/XjG3T+lqov542qNNQonPAILFw1n5LruwKMOTMbmKu8AfqvmG13F9dILT3oFhfLFgcSWXsbXa4fhiKjM3TdmuxS4UulnDtpGQSUkPT/eu6PicOK8VcPbB3h58l+OJ2pKHCL6k1W6pPzY5fyiaMX+XP38VR9Tw4HZ1dQWPhwvX4ISlPY6Lb4xLj1wMOAsBBHKOncEba0a2l/TwhXu/5977H3RhVsGyrIornmB/9GsxNeeKFRRwRsbgK9Cz0R9iFnQ2zdWv5OPRXFA+ARXVz8f0er+1jTeRu3ReYuMNqXAYDLdiFg9rc7XjouNxzZPX+GD015HENaH3RU5CNR17BsjNGgVUskBeiUYAAAXQCCCwWY97lYoBCAjEAgUyQAFQWKtEp1Wexp//RenLenqyPZh5Ge7ivA6HgopMBsTsJRkqOmMNuc2p1vhIO313E/Y5bcchU6lG+61usihWiJ46GNesQzVOc354m7fizHT1ge39JteD4X7yn+v7Q+I5tZ8Mk+ly+aXC2ydlbGYP77SV6QqpBfh4mISwXVz6YHvZw6hj/7HdWcbuxLXf37QrMifBQ3lifagmIP0jO1OEKqf6mXQzGvuwVpy63D0yv5CDfmE47nDliH5lPBaokpQXjke19EvpCsZ2cPLQzv6WOcqEpMAK6IqY2m1M0DREEDMFUCAr4NX74kbSYsKGToAUJCbnMENkCJw9liAQBlTi/O7t5k+87dKfvf/Sd0y5KkuuKBcNXJM5M1wFZY+MCgREpIYKBuV1OyUhWVRUIiBANEREIxRSM0BDh8SMY+49GYMJaesnxyX8+nqN4EM2cD5Jhrs1A33jjeounZbYeEP67D37E+fbrbYBpDocl7SlvjY69LGWu3NxoNJqwEVfuWlsEuXw4tU17z90/Xcqm8qg3OY8Jq8zqCHSUOXmLg6xXlsCQDBaQXIGkE1mouAwAXBxz773g7SzHMbZ3jA8M1ndj+fX5S7dXHgLkQTUHKBzwRSSYkYkdl9a3kCjuqAAdgT7Fu6b7T67vGHSDtXhltZLJIfFq+tT/Nj+7LdXh2vzdQCVaRqLq217rA/o2GP78a32S4vumAPIkpq4O+yuNLna4uBlVvbX0GXASZvlZAf23rNdff7w5nbwZWVDmz+ye/43b54Ql2TThyu5muTI2hEWWwioVUfSKLx3d/a5buFkuU33vXsXfuf6ClXI5d8+PNnR6dJHj0DqJWX1wrervJoaERlClEKeAQARY4xtqOKY2qolwLUkqL3Ppc2gKB3aSGWH/LunO++abs8Ci8YCZ+QELxIAQv39U7UBVBEqCiklDARF6lCdaM6ie+pvFj2EdDBIDuajJxeePLwCAP/FYv16X8rGm8jdGT1svDF977w5YrjHT+c+LNJ6UjfUZ3UoDKx355hKlKOLHq3p0E1bZMhHnZvV4SOPeivAxq7uvShC1TuocDO0fHWM8qpk50LVgyOoUEdGAnPgCY6e/skfw0lV5Rma1U27GA883Z11i2/FGMEAUVEUTVi1Ua1V31I3k0BLG0fLc3BaZA2SsxZcPz4/9+Qqznj+4Ya+Xo72ZP9rro/Qzlf1I7P7XhqP3FQe87OnZHmOp0D23HqstGtq+tfc5SeizEhzq4/Xuy9146SG9wd3EgPU48f2LzzZL64WCLnLrXJyzax+uqwxVo/utC+61SrZEaaxWn9HvXdUxiNaPb516ZnSHa1j4vk94+qq4cFyXev2sh7/WHPPV44PEpAL7GPJCsTMqLdtsVFJRB0TITKTSELCUDFlbsiP41gYyKDNEEWWNWTfv3dv73t37/tIs3PeEweNkGJJjs7Go5YAwVDADIGREJEQGIlNBsjBV1k0qe3ahMB/cTjsxBZWRmV06IQR8GBcI8AXNqkFG3fQ2WhdG3eHR5twPcUHts+zZHNAY/YhrDVXzr3BUtpumwiste2MAgUBfReM7tte/tw/3v/Rf0+YECoboXLJmQMj4M0ayauUwQKHkAAAYii9DBOpURkEfvd976Mu8mTP57W51oaR5kzlzdX1hQzB6JWDRgGI0AjUJMq4R+GCay5Ru+uq69ofcGbC2NjLQ19R6bm/3hnQzCCFQo/M6uf1sIzl0DmQ8ELXOecWOH5gUl1LLVdhleIVPbgHppcqN8Twa3F1b9aFm10vMVhz6MerR9YaFo6fqi88m2uw/KHQ9Cdr5fE5wzKmddfMMAQo2vOB0sT5l9IomIMbPo7hGU+M8vjexaficw1PvlpuHqpuW3NSOmHzFKyIVEi3aWBsntTUM0tSp4DZvBILBAirNLjGkwnVpEG3+vFPPvCBD4ett/jKUel8GuoibJXiRLmclcV2BQMwBCICRDRAMALMmioX1mAOaD6GE7DfGo4GIDGMYIyVY3QFDeAo9YD4+XFTfmvjzjkrzWvjbrAqpsJPrI96F6pI2lQrLdtVG+Nd2+tVQD5BdiQTP1hxCn6x8iE+/8jj1UpYgb31xj1AV+kZ2eDxRhQGd5pt3NWlyjZzzehRDb78t3+alwd6cW8kxzsedUiOef2m+6BZEYHIHJIHdsbOmIywCc1xSQoaPE5r98n5+cfaPbD1pDQlbY3An64uOKiCg49tzRKmLx/lpp48a9c/3lYtJgptbXVbmmfWbVdff/c2Y2kdVodSfkeHVT7aqvz779viYTVCGsPx9/rtqgnk1pU0vzocGC2uT09+K+WFnw8hf8rvnLNZs3Xz07vba3ErPXp8f7Kmgcu67vJYtn8D3Vqzqn7p6jrYhb6kz9Rv4S4d56Gt6pmymZF3lG5brrlBIUYlLKbCPrQz9HVWPrB1Pa2YCsDwrrb64b1Lf/rBd9fQoaYMJXuoPM8LTHoBgaE6M6MmREJEBjQzPSWghs7VndhcQqX1F8vxl2WN6rEwGJFSMHIKfNqqmHCTI7txZ52ZBrZxF/hU3QLwpKrS2DVtg8C+CjGOgcjw7pyKJDPLhTxHNee5JlfGYefifvfc00M7mz76qFmpjDxwUMwcb1tu35sNAZmpV1+yeOJBnINrLz9nf/bf1/MXWmfTzjRr4TXWM1C4S2+3WyqOhEDARMFU0QDFQIHJOyDnXW9lrTFL2gZ6O03OGX5oduEJOXmxdBhktP4rw2rudkcpCxzuDxeeTt0ITfYe8rUP7E+uLw4bbJ8fxIewtuX3NRe/CX0F03O9//+6ox2afnR63/MqX8dkQwninC1S2np0steJapb3n2vW2Z7pkhAKhC+m1dS3RNUTeb2nkwIMs8l7pnDj8HjSWk7thy/4q6lHxaft6IbIjjZL6ZXAc5Bcige22xNLEVguAt6Bd8ksahpLqqZVwBzG4bve+s7Hd++9rwrS6ko7jUOZNg7AxaKpJKYSAgLRqGfmSfutdmGGAOgY2RlTMZqXcGT6G93B4JwqG1CjDAiqUmEwKKaoREd5BLDP92+uHPSN19dZaV4bd4PH6taQLvg2oRykcb+dYxIBqQnkLl1TJ4SCSOhKSh4ss8XgaZHS7jz+w/9nMaf5Ix91YGMpzjlG2zTJV0khQgxEhFUxZqfPdU+uH/qBcrloqeqUuwbQcXZIVvlhtDNyctLtUkgMxMwY0RMzvfJjsRTTNYkTuY/apOWIpK4rAlvBtQc9XwjT60PX5NmuzIey+O7J5ZfK9X6In9655+WTGy1OKJar0CBFLU1r+o4diGn6u+sVk348bP0m3dytt4P0X+6vTwgo60e3tp7BKBRC5W6ma+uUtpK/mgaLnPz4yKQ+7HDK8KFpeNYGN8CjW3tP2yIBHq9i77c/NplfMfrG6nBu527S6pPTe546ORYlZPBJBIidY9DblaPjiE8XShyhxW7ONtN036T53ouX3z3dbrEkV/rcc5bpdNYz+GwMiMyGBEhIbIRKZ2bpU8AYAcHMlMmhcxmgL9qW+kv94YuWWD2DE7EApAiAImAeQ4aIxsZ8MK7A4PPDXbvItvEGtHlqbtw5j9W1M2jamsES2irF81CdY3/Mke3uvBVZi4FPzNsupNwp4yS7sa4Lu/MNjb/4S71vmkc/UaMDGpJVfHfG86+5nqAlEADqkAMevvzSybs+k/2z02YfJpnihDGbG3A9AbLiI73JZr4DZVJjMyYipKKSTBIUrkJRmfugYMeWAvo5h5MSu4lUAwar1zN3WelC46fz+kDGK6VboWE4/0J/jA1BHN53cff68iRR852z8FKxkyGNot4vS7PzwnjSYp0GeWhnvy+h436q02vDCZiLpo9uzW4c6WriPnBh9+V+NATvqheyFrfIjg6OLTBtF3nRiiWbFSIproVvrFezmLeq5jAvtqv50XD0fN9NqclYiBHRmaiw0m2akRUB57xJgXE85/iT73jnQ1tbb6+bUrq2cZoiqHgfODSyTNvSDD6aGQASMiFhUVZzYHZGBuqKiogEiAaIJGCrmI5X66+VXhVBCbznaFPyUXLxBKAFJXBIkBFJiY/WSwT4/LjZ7LVx59yd0cPGG9NjTSWo+3XDhIpISsdSEtM9MBltdIhoYqQAoIhgUIE3NARERTMAA0BUBMUzM8OhSIjGptkU2JORopEJIEQqTcNHv/xPnVrziUfIKjbrEMMA4CNAhBhGBw7KEqwyjZacApCKFQIb8ZV9GK/3Jb42sgKhISiomSAYIKiJGRFCD+qzJlYCEgBVqWSIVHMkbPGln/7J/k/9u+WPVLvNhUiIhZXFEEE9utOn8ZsrigUAMwZgQDZABUNERnRAoMZIooaAHhgQiqlHrAoBc2HwWZEI0bzlS8HvNHVZrwU6qThm9b5ZDMjZqw4vetCYp65OEr9j9pbV4ihySeQnhF8fj0olfzTce8UWSygeocZwLfVLjD5M4qIcT/Jjfv8pWczEPzRtXhqSTJRHe8c9+1eWkbh8YDZ/gaReKwf94PzC13I3wwlredfW7rOrpWbITkkVgMGAbl21oJQCdFoWFR0zqKkIMYOVgFyyZAPw3gCsqEOXIc3I3r41f+TSxYfP789y5pzADFwQBWAHxABoquAwk7DR6fSrgQEYIMDpvfs6SRaRiAnREAyR0AgVFbP6EJIkQ2MjEGMOxQgwm2UUa30dk6ZQf3PV3SB24AwZkVDNCDIqEpKZAXggzKRBPVaU9TiuEfFzm0B24w7aBLIbd85jTUWEO6HxjAXMDDOYoqJoE1wCcy6A2gBCCC36MY8ZzRCAEQgJEcDADA3wrCc5is8Ft9rJ8dGL9Gv/9OX/5X+/8Bd+GEsbNEo1llwVrkaS1ghGqhwIsqJLWMQsYAAhB2gFz0hVn28foYEVFQJkZARCQDqttD5q9oNnNWAuRBkIKbIXxOjyc//VT538jZ/afmC6kqTY0t1aDuP1YrpL4YHJ7r6rU04nMqw5D14/sbN/JZ14wPsmOx3Bs5TikGEym6T0Xt5eQqqQvzEcdaCXeT5meec83Oxzq/7RZvupcihSHw65Ilk1Q9fVlXPv97xOdqWPO0m6YFcM29Q9tLv7copPQzkX7Ri7PutSVi92/RTqyMJMBE6LKN9yMb+upqyERUgEwIBNHRQWMZ+ZAvvGmKSAU3JqZfg373/w7dPZPXU1ZwTVCBIZS+X4jNxWxIhIoKhmagoAYGIAgWoAMFEC8o4QrZAJaSWu5TYKnBA/3S2v5BizTrCWW7QjAwAzMhYnZIyGJ2VEgP93U7Vg4w66Wx+DG29EjzcVGu7ULSMVAASIYBGkqFxJqxm1dQgS8x43YtI5pdNKhoyAZgZiBmoEyEB2xuNYkMX5ZvvGmGRvMt2p8ovPjX/j565vl+lHPxlioEADQEACFGAVIhfRKXhiJs4IxYojIDO4S49aVTREZKJXKuuamQgigmXwwOhPwDlgF2FVg1Im5JNrv3l4+cPVF79g9+2nVE+oCm4U3XRxt1PtWa0gQw2wR2E/VEAy0Pjy0QrIVYVvUDqI6znCp5oLz5TDztkxpN6KqH6meeB5TAc51eSvAxaCUuFzZVTUmssn2q1nx6Mw1IV05NVh9CtCsvjB7e2XEk2GDqvquTjiyDPN79/dOczJZruP++1vq45s362IwHmXyAYQdK4F34yQXHBJBW1NA1B+aLb1iXP3Pry7N+HsUZxl0KImoMhIbA7PyADpVnVhMUPSLIzqEAnBTFMKiGDNIdjXVsfXTcdCzgKTGyTzLfoZJAJTh75wsQxkeJx7IvrsZrPXxh206eU37pxP1RUAbFcNE5qaR6eIBdFUB7VjKDth1gr3UErJM18tdJyYQzO10+KGRkCESEiGZ7uCEtd4kFZYh5YmuaNJMy37Ir/wv5383D/I/9Z3z91ulcExGBSg5KIrVVrbWGFAADGoGCJmo0+Hs7oAACAASURBVJHh7izsX0AYCF7JJwEgRCZABNJjtFZ9UxAZiEuFIlC+/r6PrX/qv51emnBwR42/GMMCTdTorM/cv8H0lE2NzFSUK24Cbyldhuo9W2/9+nA4VDBLuhVNGY9it2SdRfyj9b0vubLUcqVfNIYf8/vP0hrS+tHJ1gvpyKt/1F26bv3vxiXQjlYwG+2D8/u+kXMzXSNsPbdaxDoa1oPKo9v3LvQQElxPflTxw42vwurbqiNbT/1ahow6dfW0OI4wIC1qb9Q71Ifm25/Zf+uj8/O7gZildXhS+oxaHAojEjE6p0jZzkxK/y3qwqaKlIC9gyJYAAwzENbNl4aTRZExGkKlCshMYAHxlmV5EcGUwRUuUNCTW2lEol/u+jt6mRtvbmelOW7cDR6rK8PTQNZAIQADsBEEA2zqMNjL3eLFuN7d3iHnC+h+dEUNDAjgNH4lYgNTOPPVuk5ymAC0GquSkX3Vbh2W0V+cwtPH6b//m0e/8A/kR767whZDlSA4RraM7FjUGDVnLq4456A6K7nC3y4CQEMwM0MlyAAKKqqsrkqi3oho6FKo4Orf+lvP/9CPuPG63jdFY+a2GlGZGoMEuglkby9fMJBjdtEkgRoAq01duEbX3oHhnVTPmsmBxxztJNQTm+Vg3xwXVnQGvq3CwpeX41EFoOCHWMNAQxiO8gkbo+qHdiYv57Ii6bpV5acPOFyspfL83eH883I0VJNryzi48oHd/W/Y0QzqZV19prr4mzeuDmp1E9piBYiYoSTEP/jRlrLWGCYQRKTXVDwEjyHFR+aTT1y49PbJdNQ+UZ55zyLHcTXlSSBPyGqoAEqkBEJ6VnLTEej0xwDMDNRAAZAGGE3UAbGyD5Pk6m92q6eOjxeoqtD42qGzIkBWJDsPeoslMDUzFYdenJByYL/SDGb/ZL0JZDfunLPRGjfuDj++vYWIb93acWQi1povRIXVFYkmHZS9uiUpo+ZJLu/c2q/ryqmqFdMMoABgCIAsdjpZd4ZNpC1BoYyHMGxbFZkpk9QOSOr1cHz0XACd3fOh+v/+hzt793gX+1xVHlwn0JiRgaKhowR36YQsACgUA2ZAiAAC0gCiqSIqsIvwzZOv7/z8L17/6//1Op1c2L/QuWbiTDitc66a2TBmx1qnJK5+vS/krtIoR7LEYEVqYIfUSyqMobLSDX4ytwKx0Fzqz568uEPTTBmcX5Ox2He63V/OLz2AzT2zrd8dD48kTdU/ODv/QncyFFTDyoe+dMTsQtbe1yPYOV7Hm6K7u2Vy2Jz41XLenq8WdjJVYpWxlLo8fdLtxfYQ1oEwUFNSLkH8LVJKUBrvqEBel2VV4zv39x+sZ/sJhbMGLqWwCDjfawa189W8dCKohlBQDIEIERFA7azlNpkZAAATAhlCO2apw4nBlcXJ8ZCVvTpHoZpnWZUowatqZVSFsIpddtZo+INfFgFUvFaxipSdB/dsf2Rmf/Xm4R29vI03t82M7Mad8+mqRsDtpkUyNXWGClAQGKS01RS9JE1ZWwoJ8GoejvrB1yGDIuBp2QIDAEBgQjvbgWzStaieIJ0rzbrGGsxnqRSkLMtsOvoJ77y1GWzxX/6nq7//P3Vrd+6TH6I+w4QhGrIfSAMoOLlbm7CBgSEiAkLRUiOhCKz6ws3Nwydefuy780/+9YMvfGE22xsu7rjgK7UOXB4gzav2+Binxsl2ynRwZyOX8aw4oYJmU3QeMKKMqGwwJS/RhdCWXCAXB2J12d1qzrf8VmuezYeNEiF9Q9b3+q2reX3TclyGP7H9tifLcU6+B3u4bY9pXaJ8cr57KK4b5EP7kx7o+tDNrHqs3X++P4aK/9j2u35ncahT/MR8/5lxMZX5B+c731Yd2UrLuizJ5ffu7T++d+lB8I1EqWSF6NTYsDApYWO+MldMxZ2uBwEzMyCboRoq2BnJTb9VXdiGJkelfGO9vCal1K2rWw+sfVRiB1wZAOhI2mNx6Cbm9RYTB0iIYKhUuLA5LXqzX5rZZrPXxp10Nlrjxt3hJ+ZbbHB5bw+8ZSmteUHKrK4IZkMmJCdIAwgzsqmp1qnbrutzTTt37EFFRAAVgc/4retFc+UlJvSuyhIdZLRa0QCqbAW9Rzuoht2hLt4tbzxTZd+/88EHfv7vzO55mBVGgqaHrk0T+INnSs46BUFBJAKEAuZMum8+/8Tnf3X2n/xFU7YE+LYLWwn7llJK28WtG2q6Ps+oGnjBvlFvFHvqW21e70u5q7TEfY7qSMHQgIhUFQjRCFUckrCZ2Zrhvo46h7HGLpftMvnCeDSxlgp0qedJHaAcFT1vLkpvnhXrkXAaszIOfDjNeylIEfepra1fWZwYD5wdU7O0cVqh72XB1TRjbPJEyq8fHe3gvMfRmQIEExVf+BYzsg+ec2+d75+DCoZREcyzgZIBgTMpgZjMBisQHBLHIXEQVUUjIoeIpq/km6LIHf7kX52CwkhsYKJIrhAuYl50/RUzH+okGtA7QymFHIpqAUeei4ye0BuWJByqVJRuUaZBwQiMi091ClZDtqcX1wHgx0+Wd/ZCN97UznY0sHG2/MR8yxAu7+y2BKMWdN4VBNDMyvoHZ3sKqaRcsWuZ7p3NZgQtqKWhd84hqWQzdEhMgdGVJIojMyOAqgIo8OnJnOLlbJcO7fxwvrP+6uFL0723/kd/eeuHf2hy3+UAkKBUQCA0MtQGEYFBGRSLGhkQoxIAAcFpmQiGUoDUBNCjgbff6wNGgABrBgRoAbAAMGRQh99GFq4ZUAFjSAQM4ARABDxG1KAOCBDgdA5Zfm9XOYoKKwCxnp5nAIVBAKoCPYJjuHr9afx7/+fqx3+mpdX1Zr23f/9r8fGeOQKGeloOlgBATAHACJsIQgDBDTm54E0F1QitEtdBUc+BnU8qJWeG5LGW1/YRIGBkwGDMnIGWRQ7G4WQcs5uwwej0Q9X5J8brnEoO8J2ze7+yvnokuqWtt0pMrzf5Usy9lw9Pz/324khL8+g0fCGe9N4u5b0r+eDj+xf+0TefPAYYXZhlnx3WRUEKuApFzUy9FiwTKA9MZ+/eu1BZeU2v97XGBKoKikSEiFlzQVHUmdUiYmRKoMQAgEZWFKscxzwJU8sUyT91fLT0VIiq2/QxKBiaBqsHP9TYpi4+P54AwH9+dHJ7/sDGxh/CJpDduHP+2tYWwLcXyBKRGTJYiWPDVKPuzdtJFdo+OwDvfQnQg6QirlhjrgTUXE7/IxGJiJkZ4VmfwVXxrtWcF91LN3aksQi2xbbj5c/9xIN/6c+AEnAAQCPAAaCCkcADsIEgCABK8kwGmiGEAsAACsYwALQxgYMFUw1UAYASkGZQ+kNmLZiZGSICIgCsIdevlARjATAgMKtOX6lkccYAgsYGuSTvAljVF9EADqxWAjNFI4Ov/A//zR85XH31p/92i2O28dLFew+c56rBuCnrAwBghKi/v9p7epMjYvaMppJLcB6liGRGZMY4WmjqXEox9cSkxoAOKb3GZaSUkNRMCwECciEeAQrQF/Ny3usEXa+SA/kERBRzEqg+feH+zx5/Lcv4idnl5/vVc6hNJK5XaUxYT2c2v176faH3zbafyQcnsXz96CD4Vp2nrgwtuiKOcMxjdFBV/sHJ9sPN3j7ygOPC5elrHLi/1jKX0yNhGF4pToiIADZIIc+aiwerjRBxUIXg1IAE12hfXxwKVSwUfHscR3+7xvWEpzmya1pX0GCBF4YTJPrRGzdv0x/Y2PhXO9uteuNseRWBLGRDJnJBVQlUJXqHjPaBvXNjv3aqLBoI0bs1Jm28G4CI4PTRrsCIaAQAhmdjKfBWKpoOZSU4sgsOa1VSkKwjvPySD3NdEv7MX750Mue/9Gfa5Mfgas1WCqID54uCMmAGDwCmEohBC6jmFNCNDhGgUg8IhmAGZL83ZYpwq5M+S1HmP6AkwGlVNEOIMVeVFwEjMASEYkDBKCG4aLlCB1AACsDEAAR6B0c3nrO///PpZ//u+MJXSOmwdvfee38uDoo5BA0KyyVUk9f0cz6jTqNYNcsWA3os4IHNsChxCH2OkylDzHHdcx209qOWAOSyvtZ1iBWQwBD09MZAZEBH6GjMoGbA/3i82nJdufoB2r02LA9DXGOqB5nV7bEXOO6+59w7f2XxksK8qdcPhfGzC7082zlcyMyP1wjP2fQrxy+XooxuL+PQwKDD6LX1+O5m98Fqe4u5cBmteIWJ8cBnO7feSADIDFUMgPh0+KhmHkmNAF3tD9YrX4XGyBdaqXthOFmgZjDyzUnfz6jehbCg2zMgFFM0rbHtuKugqbl6fjhJKf7H1zeB7MadswlkN+6cVxHIOkBRUAQDQsdmolasSKbxoqvfOdt3JWcoGFCHoSWfyQDA4HQ3BpEBASGyWL6jl3q7kQWjAiDouB+KI89gDAZcbkLeCa09dW2J5eJk60QiXt7x/85fueeHHnP3XZqAg76UtgEAtyxxDgGgSPEUACgX8ciQLDalQg8KYGAMGcAAFKT+V3URBna6Ifp0Z1ZJ5B28sjOEFUDBFMwUKkLoLE+QR1SXM3h/8+r18X/97+x//kfy1SfXO2boqadSTXhntw1lQPAJd7jtSumCesatQQZ/tgOR20VVTxeXzUwRXvlFlYisSAiuSGLmLOKrMOY0Zp2Ra4yYeVViQWrbtl+uQ/Cv6fs0A8TTdRUBM1BDRTSMUzfEeFHbdevzKn5pPEqipQk4unsK9jh+587FXx2u7uWqz5acf7iBX4t9nWpsd0mufmi692v9NZ/3ispzywMgW1uamAnm90733rN/EVIiT4AZpQREI0wACaC+1cjsjAjZzNHpMd162uYAQJVFKfhV1zW+YfID01MnN46dzGRWYlJHicFXtQyRkQwI4fbkFigYqDQ06V2PiQP6Z9YHiLipWrBxJ20C2Y0751UEsoymAGaoYKqvJAwwAop2Gl3tNOd9dpcn86Zo65xxGcdRtbjgyXHJaobMbGe8yoFko4pi7j07pxDqqi9jCdBYpX0k50lMkTLBoHnbeH3tmVI3OADFUN55//6f/L64vT3pkH7w37547wVwEMeRm0oBgxogAuQCUpAcEClIHH1dA4DdIkfWfm8XM/6LfQhl0NMTZr29khIbkzw/XN/qxvX/8U8uLRYv/tzPx8OX+OTABeqq/cn5nYnnsRtT5Vtgn5POfVySn7pi67I63prN1pKLMFPQM3Ki0p1xGr+e/n4ayM6aaTf0GFjNwAzEoEDj6lSJmUlJnhhEIVvlPBr2/NquVLCRgiqY4itfnAMkwBJTmdROwRezJGmrJiXu01fGcci5b3yVlDKMDWsRqelS4hdqObfw5Mal+MqTS/K+iztfXK6fvPm8L7JX14/dcz+zzI2kJAMCj0IiVkCNFB354Kshn+3UFC6AiEKnXy3QKysgor7igqAUnf/awY0+uKwEQIZak/NAfRyZ2SEBUyepvk3VTgxBS25oEqtoI7LS15c3HPN/tsmR3biDNoHsxp3zKgJZkczMiEhEpSgDmhkRjQhUtPZhhBwt14y7xvfVM9Bh0lSBqORYSiIiY6eqfMbLVCUuU65tKA45AghgSmXSTIbxZM5VIYgVjeM4B+8dRxOISK2P4zgnNxwcr7qlOSDH6sZC5I/Tpbe9a4Bw6Kp7/9Rn1tMmxnMP/cB33ZjzYezeffntICAyWhWc/EtnsE77D4U4jl3XjeO4/ns/G+aNpNWFIX3zF/6vndV6cXQtUdkv7brv+oaD97C/XYG3pkax1vqhG8u0MV9RJ4aaefQ51n6auux3d8aY+xybWev6zkAcbOrCAvzzISwiogEhElHskqucgiqIgE3qJg6JkatOrOYFpkLaTFobRYY4badR0mv6Pr8VyAoCIiIZAIBa6+qu75PHOblEhv2IiC3wsbNGms+WrupDxZXhqCF+R7P1+eP1DlSHiI/t4ueGRcgyydtrOELEiffvbnZdyTtVeFnXrXOQCnBQE1V1CM4FESlFDNHz2Z6RzUymSmZsiqCgxoBEBOaPHT7dHS8BUP2EGu1yG+pMaa0ZEVtAAFhLIqI5+uE2DewNQXJqaJKbjImd8TdXB7mUHztZ3JbX39j4w9gEsht3zqvd7GWlFGa2It57VUVE8JyzoIGH013bJZGAg90C57a2tkPAOECKIQRynKTQ2Z6QBUQTwBKTJ64Y2LSIcKjA6MDGQG6aoVihtso5q2qgoKrIlE1RtHEhSdHAvYUdZaF89NJL870ZTer4/HUz69k8UjDnyceSJeXgvAPMtzgK+LTu0uk2r99PSjZzIUvWXITbdpXSzvnzoWpADbImlKqqjuJqHhrzzEPOOY+zepq0TTYYSFM1hS0NsUUR88RHEre59uiOY7/v295OD/nagNONjKe/oIGUQmLMvKh4q677g4N0ctg6N459CCFJye09k6ramjWr1EcS17YSEyat+LUd4P1+2gmi4ivTxmYWkFksB0K1gUqTwSonCCq+VjOTBZWman/14MokVgXdWLkLBiuJseTp9EKf1x9tp65eTlfzRSWINkCeGPYBJ+hyP2JwToELApJ6iqBm6pBQzvaMfiQDFQfsnDOFpJaRyfGTR0cqQubI+UEEmdkAUinOamAgHB2YSSNIapEBb1eKBaFJ8VqNYaTsnPHTi+tE9GPHm0B2487ZBLIbd86rCGRRmZlVC3mXcybHIkJEOQ+tC6CohgnVEIMjyJIZKKZdovvms63Ka05FBdxphsJZJoU4GLuMEjU7AjamrJnsNO1vkNzUtaSMiMwsIoIAZs7QECKYBwrFKubjtK7qOrMyMCUzFyCbC1lEVAHJiQEyOedSHJn/ZV3Et8KUb/1LST44YiQDUS1EaGYqefA083XqhqlzMQsQjmBcBzeiWuIaBAQygrEgkWPSwgQDlt2IqmVVo08AnvXMHHL/2iKiUsrpKEJzGbu+DJEQ23Gprh5cxW97x/3f/wPfmG3d/4M/EC7fG//mX3niF39p76jf99Uyj1Y5AqRi+TXe/CQICECGaGBmaAAEiDiiMiAoVMiScgghAQwgATMA1NmISIxjVeNKfotWkKgvqa5hKM3HG5girCkG2e/DIATTqFXlpRu71leKVCzTaOzU2MQ8EisAipHJGV+ZCaAiokjAfpnt+jCeSMnkFBwDsgGKEYOCRBJ1UCdWRjNjMQAQRkVAtdt1xK6YMoKTMIbRSQjov3b0spn9tcXqtrz+xsYfxiaQ3bhzXk3Vgm8TGRhhAVQrXnXu3H5db9d10IVTgGzAJMzJgJlBAc08c04jEIpqVVWSsjPOZ/t5t3H7IaKAqX2r1BWSgS/V2svU3KCxQgxRugadQhEJdTUMQ9VWkjIxaMmEmLFSlUawENQFR88O3AhSoRQrqCK1q40WuVTkldjBABm9q7UYMGXIcv166EdhXFfUFj8a3XPp/mPk83/6jx/NwuwH/vzupb1aB6GGNSfyBPnk+pXnHvnoZDKpqkpMv7VR7HRM+Hp/rm9yigAiEnydcyYiU/Xec9TEoIEyieQShCpwbBBRpPILhZeWq0VMzleMZCKGr0+HdXpErZOQ6sTFs9LmQISNO+9sV4nf2PgXmBZDx0REAUh6Lde71UG3vH97joRcE5uSajDRkolIBBJT8S4Q11EgagKMFYVyxmdwN24vNQElIuc9AGgupkZIxisATWI0qVZDmk8qYZUxcz07Wa9ns1nf9czMiojeDCYAA2vGMk7YovQ4tKNWvhqzq9upLtdYyIZx0vopWif9cH1Zq1zzaVbQ9aA7F1Z799//oz9yxOc/+H2fdG+7ZyAicPeOCJU7ZwBULBfgBnQErYOMQv7mWz86uX/ivYd/fq1/E8W+7lTRewfIBU0I0JGIpZJkQj5rGK1RU2KoKyEeUlojHRyeLGOGumnaec5Zkjh+jbfsbWy8sW0C2Y27CjKhgaoAkqAVhAhmpsddtyv81mbaksuYlUlLmjKPBEEkZEGPY0UCYBlbYdnsjt/4ZxARAShYHiMAMBIhqqogN66GGLVHp17AUbEGq9Qvz0/b1eJwZzLPOZtzp2V6j1OZo8/O79yIcRrOR7+uWMXaMF579oUtbNGoKI7cHUneu3yh2X5b8+f/jXmze/4H//Vz97wFB1g1cVbKlpv0ALWaB0QRCDygMWJQyn5NMHepBobk6ufe8/DibXQuBAAQeyWtGX4vot14fRFRKZJFTpNa1cyYfPCUB0SWQKjk1UWla2l8qTsOPBmKJfTO2AmReaBXvs/X+1I2Nl43m0B24+5CpHp6Pi0gIbID9IDaLMs62JNl3XfLc6F6x7l7KojjMM4ci8OILKBUwBugIaJtngsb/ywFOy2U69wrfaaZmVpkcyX7ymWT0DSScq3I46jeZ8XQTpKJOCygY8ku+Db8/+zdedCn2VUf9u855977PM9ved+3316nl5mekUYSGiEkhGUUYxtM4qSCWWwL29iBimV2SSAWC8dgAWYNGINxEaocVzll4jhOXCkwSRxXHAwOxAZigYBC0mi0zNI9S3e/2295lnvPOfnj1zMCRxpbuOl3et7n01VdvUzV3Pv0s5znPueeE2OMtljtrfZxqC2F4sZBYtFTpx88984vPywp/YUvfNXkSjdp6sH7RJXaJRksD4a2NNVkqJZSzRwha4jisIHNLNdgUjLpga2Q4ck094uDZXvj/ds725sQFpvNYUSbnXn43fnNo7tv815RxUBE7gQ3FNW+DxxrSZBwY1g/0d46cpdQRZrt9UNTz2rm0pfcDyEyRy46LsiOTrQxkB29rGQYE0SEnclhxZVBgG7V3XIxLZNmtv1s7p99+slzFh45d6W1AwIRPGSrQxTmwXM3rENIxz2V0UuICw/D4O4xRgGpKhHFKsHJ26GqEpfcl64Ts7r2pvLMxdVKmdfx1rXryWxeVcO664TXy5I+7eHIV899+Z/upqe3/+R/vHXpfnMvlGjwKlEa0CXUqhCtQHCD1x5rBZDXkmgGVZ0GFmRQl6tZpRIJcHZFTECJrXVNis2Nh3em56+knZ1uvfid6QQvrMuOjpd7EQkE5DwwcwoxSco5J5pe6xbXh/2luZtEjqZx6drEGmZWNAAQN8/F4KTsv7+NLUajl7IxkB293BARHARzOIzEAOYW2es4CGRdTlElcXqg/c8dPrPly/snpy5Wcxq6knVNgySpm1TGKk+j38HNUkpkrrkYURBx927d1lWkiCW6yDhdNar67PsfT/MJ8jq6SE5tnKbLb3jgrV/02Jn5I1/4nzbnr2z2za+BAK6hSUkRhEoyK4mniiGhVvQiAgKYBR1hsoYQumbyfNe0AocHplg5oXebOBNRBqJCTKjG//uGN9aSd+T8zcUzdbz9YubPYxAR2fjp4VjFwEPORIQQjfioL2DEWP3K4pYPGinWIXbunXltvmWSUdzM3Z2dmeEAmYPGf8bRSTYGsqOXleCb/D9VdzgTg4iYiQoqFS6WiVZcQJaCbBsxzR9fD0+tb03U79/angUplA+GbkbjCsfo42zoY0yB2IgAkNkwDEPXlmfXgYJN6tX+qgu133/e3vT6i//Z5yy/8t3DavXQ/VfgBgUkfBagCiWIw4AJkEs/DwIBvKAEZIQa2QGDC4K6MB+SbblNiMsECgQwuuJNKAhk6AU1MHRINcORCRMFuoN+Wu3/yE/6jQ/p1Vet9Hq9nnjQFzIKNlHs7eyZcVn2WBEJ4BYqC6Ezf2a1anVNEnKgTNzCklllNAEX0rUYF5MQwGRmxZQ5MAK7j7lQo5NsDGRHLyukALsDLgzA4WbqStGCBHb3CDDU1IVsMDMNHOIQse/rve5wu5Sr9eRCnCzHwvuj32ES496tm/26rVMlzH3fp6ra2d6efPN7Htfu6n/xBVtnLzOSIFKHUmHHDKd3ATMoBVZkQBA4ABkelYogUlUIwZAZFotGn7hZ8EqlByqRHtge2BNDEQSkKhj6xivkyioABHbyqnIFYNmZV7KeTHZqaxff/e5LDz687Hsw6aRFCS/UKGDmTRlRVaV7vNPVvS4PxqHqjJ565saSqOfozaQtwzxbghAHNeuQISBy10Kxzm7mYGGi6AVQZ4hyOe6pfNxYDWN0l42B7OhlxZhurzI9X3WAISBArPyOnggMcgeRSHCgSMYUCQULhN/sDN1qrnpxa3srcIDmfjmt0uC5cw00MRgRmVklQYiHYQCZBWYIO2AgAtiLW7GcqDqOw3DPUDiZE5HQpkObAXCmpocykEKbh5Cim5I5k2eETW8LUg0pQk3h5FAGtEzU25mUvuSYJoOIi1BL67KcV4mCZxsYdXZEosG1Tt7lJoYlDQGIrjnBDHGwfn/ZdV1oJqrKbZlSoPNnysWHrn7Zn935gi84On2u2T09AWQAEs7+W1OqEQDcDhCZKeB332cjCILNnwYAjIjn/xNCBUCwOWkqAAkEbLIRRASQzV8VKxoCwzh3CJMOmHKV9CjxtvnRBz7jc4aZKq0RpGrRTerEt0/+TWrsJqNgjGLvPIMKAX670YQw1DmbRWIQM6tb5xpZIlwG/Vg1OVqtF12nkkiCm9EwzJiNN3erAoKAn7+byWY1nR1Q31QqcIbimKPYFxKvVTWlqoyJWaO7awxkR6NPoI30/vXenOiV051JNVuTmvmpMDsaVpE4EBcnMyvsypRCbdrDi4HdnUBkRExRwljF68Ux8ya/74VkzU2zgcVcyE3zkOoILWZZiEgoZBWRYRgkBHL0OaeUQFhnrqrpskI66ptUF7fCnZEeaL2zO5vkztdHQ/QUqhpS4KsaW7V1ulLAbuxnhMUAU9qy/sa0Prd96cJf/nN7C9r9ui/bPXV1IUhYnVE0MiVHDcCRdc2JCM2xHLcQWBR97rSuHZgC4OzYuoUWf/vvdc/eOn3+ogUvvfWhnjmGYxnlyePCEwNAK87FrBpERIZpjDmvLXuhxuQUVRnxKV8/qev6sHSlqDrC7eK+8HupBIG7/87klBjjsOyPNBOkZQAAIABJREFUbTSjk2oMZEejT2BPsIWq7Yf3HdyYsVydn6q5uT4M91FUggbKJbszG8GcgUjscAdt+j8BLrbp/TR6MWS/+wgJM5G5+7COFKNSVHcPZElSWvd98EOVUNVpz4Y51/0kBuNCzs1ROrTIUwIdskxXluaTIa9nYVizpYxmchaww6euHeRVSMRMt26t4nzSPPTK5YXTl//8lz34pX9qNdnePnvqVWbEjKKTIAwbkOuSI6YAYGgHTbUAMA/A8a1oDobEg9T1wBlA6tt+VcLuGV++969+/9brLujBytD1cTqj6bp9OqTZsQ31JGHVBSxE3vIEwQG6zmzSe58wtyZa2NPhA93hLXeBpJzWlAFGYBJ2V2yqvNnvDg9f2ojI7XYpN2YehkFk7Is4uqvGQHY0+gSmHVlki0kKrx2Pdmt2cC719tTgbBQQpizkWHnbqdW4/S1xs8HMzNwddpyhzj3hhXap7m4EAszMzCIny5pSGLQXEVXlVIgGw7RSDESXStrn7jyHZ/Rokqqdw8kqoaTIfXEyzNOiXYenjxAoDENrw0Gk+UrOPPII/szn83TL/8zbL52ZZoLDLsEMISvOEnotxAlFobEWhgMZoOhxZU7gyDUKWEAhJjMc18d5T6Fg2LKwSpgOgFITdgaxX/qMP356gm59OJ9OFm5zC8/R8mw9zeOXgbuijVZDxHHQtSnELa45yioPO119LS8f926hFjxMMDHQAkMtiTdfJZ6v7AsYCPfKjYOI4I7n+2uYmYiMObKju2wMZEejT2CK0A4FUTg16n4wrMlRh/j/rI/uk/qhMKuJMpUBGcLzmPrBzNzJNouyAtr8GHcTv7jf+cxjB9zhTuazqlmVtYKcUzEno7KweZjRhA8Xq6bIIcsE85V7Pfik2bq5f63x/JwsgubTfTiYbNPuxfPv+YrnSn3pK75ofuZKoWYN3uoBQR8QuhWRpeJQIIq4CVzZK4TevWLpAyrTFZdpJQUWfCqmcBIYSocUAALjuG6hBhAUHCaKIXaRagy49hM/+MAT1w+vbKepLw730+xCLDTR9RoSx6qxd0VDyfsMDhKTh3jYZTdXkV9b7LMTc6rd12ZZciNxm+rWeneD3w4EhRgk5LhXOnW5u5ttEq+ZuQxlOp2aGbA47qGNTpAxkB2NPoF1slqjmR+0qxDCFtUx8tLzmTK7ObTX5cZuiA/Vs12qB20Pc0khkgtgpLZJMQDgdG88jY7Rv9VlihzMzCGujlahClaMoAqfNk3fDoVyt1w0k+nyo9e0Dn40tI1vc7y198T0zKu2vvLPWTp94a1v3d09A8e6yhXaGbbEUEovUbe0IEgnwhlSVwOQROBQBhkxisPhpTIU4apwF2RqsmakzbJsEAMAFglkxuZgOa6FMylYBw8OEzCEHCW1/p6/0d4/k1j1edlUVT3wflmcatujnR3ouCR7N2z12DPXJOzV2u3D7aKAJhyWktg8EgfQjNXMzfNaO5JNgooR0aaUhPumKsE98+Lh7pvttcyssKqqch43e43uqjGQHY0+ASnliAYJcctDJWnpufecel2w15TmXK9s+DftYQW6aPFqtbOIbR0kcSArapmIQVR8UzFh9Elt6j9gs+vLoaW4OkTW07Bd1/3Nm8PBrUkI+906pbTWEqpz+4aHf+C7PtLp9pe/9TXbD6yIH1SoIAw4FRAYQ9aSZNLHIcQoIANC5Y5MUEaNAnY1iwwjpUgOGLuBClwoYlPxgpAcUEwIMDg7OWGzU5zgzAPDgeOqSeGEChNoEebCcYn9vTf/6ZtpmXinqvnUUX2A7OVoW4KfOR37/l75VH2vuyUaOK2MHj14rhdhlRCra8N6O8TBLbMpSOBCFIiY4cSb5XUid98kGJBverrcIz5enxhORH3fb67o0eiuGQPZ0egTEUwKC6GHmxfkLImHqYSMwcoAZqUtr939KSvXZHFpvd6eTrarGIBNzyQl+Ka0/ehFvdAuVUvpVuvS9kw06Y76UA+hkofecOkLv+ix+falL/midOVirQMkoPfPSMIFhXxqamKOoilEd9aAKKn4qipTSIGH4D1QmUcWAmMImsAOKjAxI4Ri4OiEkGERLFDAXAtJEuu9JAmAAgRiOMOd3BMMruDjCWV7yXUbtWEvJVjIP/b3n7z+rx48e9mwfXB4sw/zmhtKy76UriWmPtHxVFc4adaRrx/sLRWDU1VNj8p64nw6bBt1lRmZOPlgpsTE7Mzi7m4AhBxGBmcOwlHt3tj7v+l6DIW7mxsTrVarEMe4YnRXjctFo7vnu7e3AVw5tTthdFYoxFAIsCwmdm+vGCmbDrmSMBG+OJ/PGROYD21f1WwWiNuhr0IkhYj0RYUKCWtxDpJzH0IobiJEdrIC3wI2y6eqdLBa2Xz3vi9967O2df5tb23OnJtkLKIFUKOyFjTuRgNQCQrM10wThAIENadMxxRQHpcCdCizjD7ixrWnnv2szz63W2k8ldEd99DuSUoggJ3I4e7kt99He8nMzEqkBnORCABqfShwDcqT2Kx67Zvmg3v7h4TK7+372KdKGcVtd9Cbk8lsIcNs9ZGbB1uh+tYbN457aKMTZHxzGo3ugIgQYhT4quueygc12emtybRuqsWQg3sKdQxG3lqOiE0KrRqBjD0wh5BExEvx4nSynoMoYXXe07PLW5P5WVrQsmpe+/V/aV8qAUMxd/aAXjxhoOwiNUg7DlBMDCgaKgKxcnXSbmQZedbG0rSEhr7gy7YG66qtThf12Fr594Tt+Ya9TE5k7mbm5pyRgBAoM6uglKxCuaZpn6oQl2V41ulj3bLNbVGbSzMcd2+Cu8z6LFXskzVdjluzfRy+bue+p45uHfe4RifLCXtsjka/P6xXqDlFStNBqgPnJ1b9o/tHj9q64xg8uLMPtkNJUG7YAs+XXTQzVStFCSGG+rjncbfN2vmNHlWz3eqRbx31/82PPXb68o03fcbNww+VMBTCmnPAOqwJUh8JUCQCHK2EsqqhxLerFZ0wCYKqhHXzkZ/8vv2n3utntxCReIxif48ChEHunt3MHewcSITOTOY58ZF4p4YQu8AE2V4TvHpW8b7l0W+vVwsLXFKSeqUnru9EFSouhVhyoHa532T74PUnyE7gFTk6TmMgOxrdASEygKKDuhURjdUafJRxy/g310e/ebTfDxQRe5FM4WyYUTEqFpyEOIoQwaGlnKzlHAC9MG9tWaxjrtAFayp5xbm2rPYfeMuTr/vM63/nR6pC0k/RpIWUrUERjoayZmX3MFVxZIS1YHnc87jbFAz1J/sb/u3ft3v/FZomXe/TGMj+ByMYXF1N1KPTB/MNwHap8r5Ipqk3HeKvtoe/mvc/0q36IhiimygxgAmfrLwgAMWN3NVJCbOKd8NUQ22Ujntco5PlxF14o2P0eXUNYLtpIqG4EQsbAW7sfA+1svlEiNzZATiZqRIgLCmErvgUdavlSe9vWp7FplZZ93lSVwR3K6aFhDYb4RXGJ2x5MdCqbrte+2KImVmaPaFdmVenq8W1a90v/tz1H/9xmM7/0OfEDlQv1rRdKQXkViy1zCJQccmEk/XsFAdYnrz/4cNJonlVt5nSlnk+WWfPnWNwEESEAQbYQEqkdKqq25JNeIJmgPz6wd7Hcq+xOSydGZpYBwpeFOxFc4iwe/w+9qkSCQRbJ9lu0Q3LVaJzW1d3H3zof37iQ8c9tNEJMq7IjkZ3wFCKuxN5FBZCcKdSoHaOpwPQc0rUFOXfWhz8+tH+091wlH3tbDGpiJqVUgCL4cRdj5lTG+OWp/PNtK2Hrby4b1i0w9OrfuD7z08vPlAfts/9xHf+1qX60bd8/lNPlwYQNgA1SGvrBIOz4sT1XzXVW3/zR52PmmYqqaEqFq+tP3Er03eKbwo/WyFzcjAHihVXk7YgcnNo/Mvd3i+3e4PLFhq0ftmnKXsHXXnLwZsYnOzIT1z9VNVsVpApzKZ1FT92/cZnv+1t5y5eOe5xjU6WE/fgHI1+P8RYEUkppurQ221XATxTDoPZjkQfSjEWDV0Mj3H/6MHhE6v+wHmQhKp2Fiis1+Oex90WNK6cbhEve5g3izDdq7Z26XypvFLLrLNXXDq987BsP0zPPHrz9Rd/83Tz2N/90TZUYR1VpLZV4v5kLYIBAK61H3riv/7r9dVPm9T99gL7gbG4dbbaOu5x3bMYADadpR08EB/Bbnp538Hy3xwdfeDoaGiRBkaQTJ4IrVOialooubdc9rylELf8xOW4k3ld13HwG6XjIFpNfu2X/vfLb3zjcY9rdLKcwEfA6Nh879ZciV+W5bfIRETMCseQc+YgqsrMxDmrBwo+lBDS4FlE3FW58qGfus7ELs63JiKVsPW5yD1TCP2OMCtViGzaldxNw+mWblTa9DTLYR1KJrcQyDEpReDLhMrm7eOPJzDd90r5l//dQ7uvhUJDL8fWmuB4vO/MxfnpXZ2sayV32QvVLC76LqWxzf3vicLZIXARyeCjoje79qDrsuwIyASFVDXDVUAUxHPgKEW7yBSdyqCSqqEYy8nqBcDFSKzErTx0N/ee+FPf932//vO/+KX/yz857nGNTpYxkB3dPd+zM6tUz567MFkVnlf76LjYRCYy0CAna58TkZiZE5jZtYiXeV1vTSf392tu0tpKKTYNiR15KAgczDO5Md1Oa7cSDMGQ+WQVnhLomo0F0+Uw3FwtL9+//dV/8erXva3DfDIApEMUAdThhEoBMQU7QAYhKKFAA0xwj+yLMocTuLQUGjeAQd1HX/cf3Vpcn06nVVWpm9ntLwCbd6fjHvFLgrO6E22KaoEZBDJyFKfEgRjZtLgFYrAYSzJd9b03s5boqb39ZR6kqrNpGBuaAAAyBmaOhRKCmg2RVly2B2KZHOm6riQWX0m1deXsG//kFz38De8+7vGOTpYxkB3dPd+1M/PAr27OYavZb4/mQzk9me8dHnRbTX2y4tjnW7OyMLOVjJKDUB3CQtYP1acueoqqg1hP6u6TFBdUaguibqpmFog9hiwUysnKRhgMrB5ZYmIn69Z93iu2xvQHv/GVX/s1C57ODdAOkeBmumY/jQg4jPISNkekQkO4Z7ZVDyjkwQiC/TCcKglPXXvvzTd//nR7N8bIzMXU3UXkhWa/IwCb4H4T1ru7wt0dQCOytqzukThJ6kpxRch2UIX9o6PWYBI7M+Kw+bRy3PN4qfDAumzruhbiW95zFU/3PLgW62I16RZ9naZFtBf5ysc+eNyDHZ04YyA7unu+/fTclB46cyFmLaXsbM/7xUK9WBOlnKxTkR1GcMImlda1sDlggSuNyD7sOj1Yz3dDaDGspTQWNk9icmJmJTa4mQWcrNili9Qg0UB97jRqHT2ue9tf5qyDD37hyu7XvvPyO9/hxmTYD9hB6Q2SESODFQA0AvdMvZYBJeVQIoCVe4l5+7GHLq1Oxxk1ADbnwKYgMYDNGTICIJzMTC0DYCZncnd3X1K35WHCcTkMqZqY8pHr9fVRT6ntBnOiIAATkYBczU5Yqs8nQyaeGH0+Qn8uTo+GtgmpJ5tZfu+t62/ZfuXa1SV+2RNjFDs6BvfI7Xz0svBF8+2ey2WrYiCpUx6G4t5UdWdZTti+QyJzOIiw6YwgQixOvCpWc5UgC8vXrH1W26RygaYwZHcjBBZ37zw7rBY5abFL6ldEngNcIAZW9hB0Vtvpra3mbKjo5s/+w72/8WMWWD77jVuImbgyJs4mkbMUkcImdgi+N/blDBiEgtiKh6nE+oNveATPrHbOpN7Z3Nx9s+64idKA2+9FI1N3KDMJMROTA+ZQ26knrRk4SeHB5LeXe0/qsDZ0hTxGrhJLICJTdTVm9/F4AgA8O5mtKj9HMQfMixxFqpV/ZVj/lw+87un2sEF865OPHvcwRyfUeJWO7p6f/qN/RD96/ca2766LZV0xz71ug6mXeNLqL+J2+xt1w/PxhzvVFDJ7ZwVaGuaKxF2NwMivmOzspmadV6R5O0hhu0Ht3E5W5akE5NwrqaQKnEw9aEgsh6HXoZuisbDVc6Znngxt9geu7v7sT2/fdwEcIwq7GqE1qu6hlraGJS9nw+wwYf9v/Uj3Az+YduqD2XSWb4etm7XYMang31LgwixwuFtRACKRJSy7HDm2kT94tNcxc29VmByWrokJt6sWaAgBpmYWmPWE3Zc+GYFEdnG75qtdVIy4kvD0zf2/8F3f/sF/9s/uf3bvkff+8nGPcXRyjVfp6O751bf+2Qfe/KYf+97v/vTdU6oZs3lZO4AYTtyTmMydaRO/Gm5vSXF3hrIzMxNgToU8Owp8C3ZEw04In5a2TkU59JYtn0e8dcJWjFqeBM+1D0I6mLdOKuzCW2uzpmIadLk/rXaWfayTHNz8SG0t++X6v/q2nXd99VYJKFjUCIbmnvkA0KI0OWCN5VO7F9qHLs06qWsU/fhK/GY5lkFE9Py5dNJRIFWFGgBIAHExVsMzy9W+5pyEMnNVLYeu4WrLwwoDYGpZ3SUQEbkREfkYyAIALPCwXs1nDYbimT+8XF6cnK+vnJ7cd/b1n/tHHnrXu457gKMTbbxKR3fPcz/0Q7/4s/+se+KwTwdeWTwc2kl9pqMl9UQnK8tl84Akcto8Lm8/LxlaaLMVjCk7wBSJybGG7kBy7g98vdM0j8x255C9brEV75mI7I5gTDL1hQZxqzxVLgoz5CX5JDX9fjeZba99keqsfSmlthDWfvPcs3te5ulb3hX/4l/aOn2pdrpXihb00AqlQ/WR17x6tjpod3a5ir5/i+bzzXnzQhQLgIjGuGvDijoBwgihUFjmcrDOy659LvqUUuXcF40sgdigR6WfcmRmYgdgZuq+KS07pmpslDrw0QpNGoCDm4sLsyvLvKwkve36bx/30EajMZAd3V3/wwOfhQvNhz74wU+v0nqnKq3yJMbVuoR7ZR/5nSFcqWWzIiBi19txrXCQUgoAhrNtwlwydxgVATOSkbv3VIgoEr9pdrKOW7CilJ1gVMErUzANxEPQlHNPs5RNwyBVmPR5qCOCyhFTAt948qOzefTW7PKV83/+T1341u887qn8eynQMMjTP/m9e9/zt+TCtOJUWEwK8sc3eBHRJpBVVZKT9WLzyQQlRCmgxTA8164PB+9C8hDF8madVQxmxcSdPQprCe66OYxmFigQibsbnbByKp/ELMt+7VxKRPrDX/eV7/3Z/3PxsZtf/tSvH/e4RiNgDGRHd9//9Ce++LWf85af/ZEfuFTNvK6antrgzpFFJweL3NStRAdNdKCg2e6RpbNjsubuFNIrtk/Ni4lmCWhLlyYVrzmjSBWzFSLKOceQDM5FRYRuZ1UahJWh0Kj3TNbop2Sw2/OFmhAz89D3q9WqXvn8Pe+6+A1vD9hSANYxC8zJEgRKyLAaBniHWBeAMAg2eZSFEZwxAALcscPWOpoWUM/zEvuoHVbbugUC6OBfX3z9/WeDe2Ogw7COSHzCMgg6KoGFFEEpAGBS8Q45DYGiFNdAYDcvKhIV/lRojlbrRdcpBZJgZuRgZveTVa7uk2HnwZUiM3lQz/3QTGbr3NcaJdGqPZpNp0PhhepUInnOgfaeXrz1O//ax37llwh44A985v3f9m3HPYnR6LYxkB3dbb/1gz/43GOPPvTIp/+D7/6+B3dnoehqUk0Xvcy3bsRuekCTpIcIqutZG8tkPEVfjICgJQXWvp028b6d3SrnqL6uLJlXCjE4wVnYweA+uOUCYLPbXVXd3ZnkZXorsE3LCXcvyiARcbNSysGN9VTWuax3T78m/erP3Dd9MCtCtAWwVdgJJLgdqjJAPYAMimCorFkDBYGtgfkdqrYxwCSzsPYiVVcQenBlFjws3/cH//Pho7996eLZw9iWVk5Vp1QP9YQVnJmqDOQtqyeBOWWNYGYuDGG2bmD1EFOO6ZYNTx3uMdVdKUUdIXKIZgbTzZlw3FN5aWAJxZN78bIiTbPZ0HYNpaVn6szmdZUH0bzajmf3dRnoaJievXh6+9z5137uH73/3d9w3KMfjX6Xl+fTa/QS97Ef/dHf+Pl/OTx3o79xtNa9qhQPpl2qqopCs1xfm8a5sRjP2RbHPdiXtKChKx1PYmFTzRPFKQpXtk5v2bJUssidECqTSUh9n41JGS98knaDEJEzAKeX50rVpkDVC7mkQrzJ1ghYhFVabG2XJ6/tDQf3yfnT3/HuU9/4DmRYUkYBKjiUrEU3Qw1jBdhABBWwGmmPBKC5I+PUFtK08AYZ+6mtEBMcQ3z6b33n8AM/6VfnuuqGM83WMB8WmSa928kKZIWTeclWxG+vrBfHYAZSpsAsQerDtnvqaLkQGuqU1i3AxkQSsEnA8NvFm0cActY0rTorxIyi7ODBm6peWDcTZBTxtFrYE+3qoTOnPvebv+I3fubnn/jt6++4/v7jHvho9AmMl/Xo2PyDV75eUWKYfODab7zuygOrdTfRep26c2H23HAIa0wpxpdngHWnKAV3r6Jk1WJZmKWUSqLr0dWd02dQRfceQ8+edahiCsUAOOBMAG+WaYlE/eXZxMjVcDt2JXffFMcgosK1UJbVMpze0s5cvX36xjLq/NTuzi/99Pb80+fAPnenvC6EAFMwA2RAARgIprAMq3FncpR7oCpDG0JjDF23sWmUrh89eutVf6i5/zxjQbBBtxJFH5ZdnaKerCofQ6+UKNaRPFN2KiCXIClAni3dY+3+AQEhJU+1iveakzGzEz5eYdeNATth9ao/mejUWYmTer1YNlyllFroYekusK+dC4eU9dnu8Eu+/69+6J//64nI1bd8xtV3/rXjHvVo9ImNgezoOP3D13xWdeHUH/zCL/mx7/z2118+lVZxL11v8uXaD1CfLnbk9vLM3bxTPAqGIpsEgSAeZdBi7gFEgdh0Vuyhre2tIIYyUGkodF1nVkKKHKRkcyd5+TZWoOentdkFZWabmTLpquaJyvzQnk52imMiPeD1ts4f33/swe0Hhrd91QPf9G4o+oBqDUx6yz1HAWBGTBEekYHqDg3UMiiCVoNNE0EJUvDBz3qkv3krzOcN+jKPtGiOarsE3XeTE5ZaUFXVer0kdgYxSCGdm9TTX3/uRgzJ3QPEFIOrx9iTR3Uix/PdzoQYADt0LE8GACDhYChtH6qaqrhYLHabWcq+jP5bTz8ZQ/2XvvN73v/LP9fx8JrP/8MPf9WYDjt6SRsD2dExu/YjP/Gv/8X/lW88k5+68bHVwZULsrU6l6fLZ4/603PYcLJ25X+qhFxzEeKQ4mDeDX1gmTWTflUoSBZdDKu6kW3HQ2F6gavnfD1tqsRccl/KwMwuwexlGxgxyOCbrf3Pd51wAEo0zX4gGrPJfFL3fsClLi4M96Yta336qTpO5Zu+9uxf+eZt3XZjImhAh1IjOLwo1YQ7tsDnpqTSx74qhJDWePYn/sbTP/RXw6XXzKuCjtpssfYOVBd2WjrdmZSGe4XCybyOSfuiIqsUP7K49Vy3mFcX+jwMJTexCnAbcggckrR5UznLAGxqEbj7pnjzcU/lJaH1kkIktaaql+sVgkjktm0/uli88zv+5r/5F/8HET7zc//Y5W95x3GPdDT6dxuv6tFLwk9denj24ANv+eIv/onv+a5Xnz4NK+2cmmX2E1Zf9lPlmutUmaHXAiZJkdVz21UcLAQTcncxI1Njc8bMcHZ7eycl6lsMfUqJgwxaXt674Dffl5/PMAAAa7VJjbsPc+qHRWYNnWxXu6Xr1YdqPh/WRa319SKvCy5dOvW//ZNLuxeRQgGCAozsJaoi3aEl2QKEVddNvc6NY3/v+q3XvNGunKfW+i3nNbZkuuRF7GidwlxK1pN1XUj2Pso6psf39hbdUE+mqursvaKqJ1YURaNTCKykh91ymrY2UeymSPPm33/z2+OeyksGU8WhO1rOptM1lxtx+LPv+NoP/+NfKKge/hNffPlbvvq4xzca/fsaA9nRS8UzP/y3f+UXfr6+devh5fqnnvjQIzuThU9FXp65m3fKwB6dqBhzMEKBb7JBS+pFiQdUUuWsHmIhdwKTcj/sMl/emm9X0fJQTBGE/OWZc7nZ7EVEm6SCFwqFerAcLBSXImkIw7QCDLn3lHt3coaEauA0mEY/vHGtyXRrfurqO77+0jvfUaqtQ5QGPFGF3JnycAUG50ArtynBfuP0mZK0uvxg5YuqTz26nCDa1EmWZRFLhXCybt3LKE/c3Fs6D1SFUEVwv24nTZ3zEUvMDubADjNDpAIXpU2lLSF3I4UzB+Go1h/3VF4SmoIS+aj0aFI0m7flDdvn9dqtyflLi+5pvXxJz52bfPabXzXW2BrdC07W3XD00vfRT3/z+w5vtczPVtura49f3d1m5hY5muVJMzsYujnlYgQLYfNNnHLWlNLtfTwv04DsTsliTETFRHU7Vmenk60QuajIMhiQHcIqMjhEBAZyjyJ56MCkZlVV6ZCDSz5ZC4IwyevgzUduqdc4/8D5f/7fnrnw6ea8YjRAMABQskwUQAFQZCkRjEyICgg2m8agDFcPYrBN8Qh1ExbKAPQwxu1Veebv/PBzP/5D88mlvhbRezvwUgIB7ER+u3QAGESkQp5LEu66rpnMulKoqtZlkNTqepjJpPYqD6ZVc0j20b0bPd+pZOSXJzJhZrPCMeScJQZVJSLxYiyDeURIIa5Wq6qO7p4xzFiarpvDL2zN66YatCiBbMATh/vN9PS73rH+x/99aObhwuX6TW+5+m3fdNxTHI0+qTGQHb0U/dirP2s4OpgHTBM/fvDEw9v3Lc1jIh049IipQIK7q2oIYdCyWXILIbxcNy3dKdEJTGamqkReCRPc8/CaM6eISIjFjc3ganBm1gKkUFwTS+gVwBrmVUjlZL0wlKFUqmkaP9rkVx1W1/fX9c598jV/4lXf8K3oKgh3EYDWpSDnoY5FqyYY5VbjNAMRPczFa7giiANuRg7i2zm2SmDkPXSyPzxCY09kAAAgAElEQVT26lel++YTNKRq4d7eZX+7YsCmQR1hUzjC3RsPRUBRTLO7D0NJJA1EmOHkMT5bho8sD1pCSg16K+Oj6kVtasyVUpgZevsln5kzLDrBudMco0Ti7KXlcs747Gw6F0mak5CZ9a4SQ3QKg+wdHBU75PVSzl7Z+apv6n7mf8zPPRG25p/23kePe6Kj0Scw3h1GL11//xWvOugOpxJnsXr/sx9+xbnLghDd1lxTu+YgRBRCMCiYSynuTmNO7YtKys5kBGUYQOzurpo50K7KA81swlQom5iVYZbSypEUlJViyIEU8OwTDi/Xcl2fjMSJaLahW+niYrP1XL/063vc1AuSC+/5lrNf83bHdq0oQ0YTCRBftZZYYoUCtSJJHFQ6jzWAPAwpPr+L0UxLGWJpeALH+3fT1tXXkqb95joPTfB7+3wWZ4MZXAlERJtcbPOg4oRCRsxwTeCoLMxDH5+19hkMB15K9kQR4Kwljq13X5RqFhEiYuZSTECbpHBnKaXUQQBb0uBCO8UemZ0ZtJ3VFcO9ZMDULTskhjbYtG956KTZgk3sIGu/XNmivnRf6XT2n3xm88irz3/V5xN93nHPeDT6uDGQHb3U/aNXvOLGcm8aJ6fCmfc99/5zV66mftmEmZlt0gncdbMhffPz6MUwqX/8WJE7OYgorntNgobWq6OzqXr47H1h6LXvJkE0UG+ucHaIg5xCCMVOVg/6zKh7y+Tp1Hx5tNiRyl0PopWP3pxYJ4589eHJV/zFq9/4jQvCJKMPZTIQgiADhKEqBmSECYydCARg6HOqP55iuwKefsMbVo9+ePpprxjsVupd6t1iw/FN+g54IZA1ur2EH0AM6qCVs0B6VxcJLgPRwoaPdKq5lFKIRGJiZs4Ihm7MlX9RmyR3dzK4GTZ54YEpZw2BeyqFyhnwa5tToZQS0RCMMAxdMY0xErM7AQQv5BY5GmJhdjKzJXvnZbu99Tjf/8bX//L3P/7un+pvKb3pza96+9uPe96jETAGsqN7xU9f/YxnVjcu//E//No/8Jn/6Nu/9+KF88MwEFGMMTBvfp1CVB0feC9Gg2/6zm++9VIxJmJmpNAtF9NmUiJWuUfO5yw8cu6K2gExuxmy1iEK8eC5LzmEk1UWraV2So1kgmIRhIgkRWlzw+vidUl16Q/T4c2DTBff9ZfP/ZV3Sx/WFSpfMlWGKC0gA5IbAm8WWR2tFokBMHJEWh48trr+eW+c7dJ+fW5HzYdVqzHEe/sW7Q663SVY4Q5zMiKnpsIN7SU1VZbW+QOHtwairVA/bbkiqYzI4UyDezGLMZKerBenT1UAqcEIDqYg7mpevGglyIljzq9tds5ACrTnzDFYn0UETJvCuuxEzgxS8UFDoOBlZVhQYPHpBDtL26sbzx+4vkw8vXKFvuodzYc/dOrqw9N3fv24fDA6duMpOLo3PPvDP7z4hV/yBy/Id7y9/7y/8GurWyEEYumGzBQggTjknPll2mr1TmFTAGBnZgO7uxMTUc/qRasQpSuRgoRwpH0v2PLl/ZNTF6s5tV2BDqSSJAqVE/a+EANyMctGVZSqoqN1EZtQ6Jh6G8AsRHHADqVnrj0hkenS5fk//fvnz3+mDoMklxxXkacdvFKCwKw4LLADPrR1jED4Vxfo8vk3Z1scNX1oSwwTNY58b5/PBmI4wTZlr4gEFJjC0lZTlVWQ3zi6lWOqW8TQXM/L+2LVk/dQmDcQmA+wEiidsJa8n7LsJMwhmRnD3IYgEPIB5XXTMzuZLNoKA+B1iIMO7kQst7tVq7EzAeRg5l7XxCqUgjTGknNLGKpAfT+tbSnU6mTnxocfvf/0p5199Dc/9nVf3//TX3zN47953PMfnWhjIDt6SXvfj/94fO+v4elrYbG//Sf/zPW//kN1lWdXHtzzFiF2RZ+5td8ZVCJVVTfkMBY8f1FhUxyezN0Nm7IEXgwcKCnYkckHdggncGXEpMVNgIn6/VvbsyCF8qp0M7ozZafuFSn7okLss9XRhr6u686HZvBClVtmNmULserbIUlNTqz9M8vrzbrZ/WvvufiOb4qOI/Ytd4UJAgAHlKC5q1jQ5w99zue1jz+pD4aGT1fDzUbPr7TvZus03NvH2ZjY3K0wCCSFpQMKuPbw6OLWUckNElf1s7mtOJzn5qYtKkh0KrDOFUwNZOKywMnaXPipEhEzBELpu5qpYd+dN9Mqneqp5ZLdIlGM0mmGc3TycHtTwaZenxA2+2XbQDOlZKWQrqHZOVGKCDkvvJpEjoWGyeFqOHVKP3LroO52w2W7fNpOnY9/7A+9+pu/4bgPw+iEGp/6o5eoZ3/8hw7/5f+dOZTP+bzJ3/17+dmPdFSmDzxoGSWvdim2uaCueo5LwlN7h60pQvR7ewHr912BEDm5w5SIIkciMoOqhsC3u15BDS4EMzMNHMQiurxuAm+XcrWenIvNkk7WkiwNtprHnd5XXnYQB/cj5GmqNR8OlpLMYja11idS1KMHJZ5qMO8WT3wsTXfwLV9dfeXb7m8esEo3qQUONyKxjGy/9FP/8NR3vEMuXGHRrMtT3elb9RBDJes9T7Pjnvp/kNup1XARyeCjoje79qDr2jStTGCuxO4e4QbtWRtE2xQ6AAAQ88Del9zQ2Kr6xSib5ZJYJsKXtrZm5FNyH9peApnGumpXixSqCB7MVVjUNmUNmFm9EJGzu3vIRqHqHMZSK01K8chHPFQeSIfnJvH8kWiDgSysS6ilr9D/1rr5nr9sH/gVf9UrX/ut33XcR2J0Eo2B7Ogl52Nv+gPrgz0+f/7Un/uSJ7/3B2Jdx0ktKUKYzAEwaKAixOJwNeJQmA77fLhaP5km1OeGIxNly8pw90TCFnpkFQd7dBJjqEWOHY25d78Xk5LvP3N6izRattJltzSZrrueQhNA4lrKEEIAUHKuOPQBDGEHDEQAe3ErlhO9bOuDkoOJfCjL5XJou6qqZttb4au/5v63fwt0f1GdCkCD4vDHTj+EK9PjHu+/F2d1p81lCDCDQEYONRFiEpjArLA5AAdLGbiarJyWTtcXi7XaYCopso6PnhdTyCNYu1I1dXFzMs0lCmWGgBSuBiJJFFmRTZMd7tT12WayFSTCVFVBRpDf50e8iQolffoD9s3vqf7XfzV5cnXfh3/x9/X/OBr9/413k9FLyP/H3r30SpZd+WH/r8fe55yI+8ibWU++WWQ/RLFpvboNQW23BUOArG/giUe2BoLggSDPDNmGhjJgaGB9AwMeyB7Y8EOw3e62obb1QLu7zRa7i80usshiVeXj5r03Huecvfday4NI0hTFSpLNzLwVVedXVaMCIk7EjTix9tprr/UvfvENmrcIHu59+uG3vsGWz147IeEQDnoybx0AgxqFEhDh7sIpkhaPqdmqpG9NN9/lWpl6pDVya97CC5sSZzBVIw9PtBefKU5syfT8SczqQ23r2j537+5p383jpKrkIeSlFGZA2IVadTjO1yfbecuHUyXfGxUbHIDTR7T2MZjIgwLC7O6ttcPBxP2333lwkv7c3/y7/d/+9/OckMa3/sK//v57X733ys/f9iX/RL6fxgMQhwNcEQDWnG7abOwZzMy1WiZZIz3MsZvL5Wacgkfz1A8GIgqzZevkaXIz79PejYi4WEfisEiiTSoF4CnC3WdUJepZP3d+pvAuQt0IHgSQhDDZ8y3JSLU9jOoP9/c8re98YfPGIP/Or33hb/3Hz/VJF4sfsgSyiw+F3/7FX+r2lwq31cA3703b6e5n/8yGtivRABzRwg8/mQJikOPJ4IMnExCECXzoTJlKKHUPvX5z3l1V48bnSNajWlS4kgoxh1evhqYf3YzgcyWgYBrblFJSs762z5++9Oqwvpnf7yV1Kc+1zGHaD61ZKW2VKCICDOBwUFpARBHx0bwFOVNEICKxHF7nIeZTI+Np/7U9v/xYP/OZ7t/969Pf/fv6qQs+knZmwtndzSsAZgqmiIiIkcupyyBpU4rkjoxb0stW3t1sLai2YOkczMzeSpjjyLsxPG8VZWClGg1UlCQpVVP3YtILO2yk6Tynz/QnFyKtlV4GjxZeAQdwCGQtwHi+A2IElOS0zdf7vu4fXd77D/+j+bd+60v/8H98rk+6WPyQ5W6yuGXf+vv/uf/mr0/vPhgfT+cPvzEwb1754uZ0HPZtSFpmBxD8/7c+5QAFAAoKAIdxQYfsFzPnHJtpJs4ZST3tgbfK7h0f2UMlUyhXULWApUEoc52WQyR/EqWUk2EVIc3dwomtI2rj7s+99nKdR1V1QoRnUXVQtVA4InA4Hg13f/J3/IgezjPE4eN6GGR1SEIDOK3T9jQNrvstJXTy6Jpe6q6GumrHcagrnEFOdBg0S4dJXe6+7vJ1mzodePaJ5Q82j/bKymmcjFSEE8DRDGECEkZ7zgHWsStRRUSJ2Yg8wLSP5soCMqv3WL+Yhjs5T1osWheIQkERHODD5Alx90Pvs+fqyu18TrnfTNTfvPNOzn33xuex23zp//n6833ixeIHfDT39RbH4v/8xKfKg++e/NW/Rv/tf12t3bnzC++8rNbGVwi0FyVpAjB935OSr4jDf05PWn8ziDmYsLMmTieShGlENfFz5c916+ubfacpHEHMKppSMHbb8VDHufhp9YNGCxvnsACzKxf1WeKteTM67ubTO9HnydysqE09aSP3CDyZICyHqaXgj+pSmh1CTEQUIECYlUVZavTN+n1csp6Hmd2bH3u6m7rDaI8PPyNnYSEA4a1FuIimlFuDWNoQ/d549XbUWpDRbae66nsCh3u4ETkTEQdRxEf1D/+MrNKqtlYjWrioMoir9yQnPP/C6vTzqzWTtSh9cCO/j/GEUzAawQFHwMEgAR9W+8/PXeQ57zusulbLq692Nxtkjc3mH1xun+vzLhY/aLmbLG7H/f/iv7z5P/7R9O23H3/3odvDV179bNVKE52c+K7lZGPvZw9ovCP5sC3L//IN+bAr/f1NagAEJyLRXEqBsLmHe2YSh4JU774/bf54czklaaK11kH7w67orbz8Y1d9ypSEkxNbeIumhMxEoa21iOrWzof8yfOz84Ds57rKFAg4zPExmMEmoMPp+/jeWgse7l5XWS4b1pGtNfGt4OVYX9frRMNtX/JPhJTM7PBHhCiIm7M5KvE7u5ubMDfK/bAtZUXdWegGo7sTkSFU+ZCfbq193AZq/NRqIGJY96OPDa7VX0b3+fOXB7/ZsJlSIoF5CetI7kp/afvD5kY4RQR7MIjBzs/3/hb1Zl7dJatDHZlemer9eHzpef1L377/XJ93sfhBS0Z2cQv+6Od/pd7/9ulf+WuP//v/6k4rn3v1jX2miNbpiVSipkzz2Mv5BGMAoO/Vwn4/NetkeJLcefK/AmEIBOrhhERAQYnYGDPH5HPSuNelz925c0FS97vGVBPxcSTCPnTGLAxODi1NIpKoeUzuqGER3GXPeRf+6GY7Ttadns9WWVhF2COiMYEIho9uSpYoAKMAURDC3dzC3euQTjfRCpdcVdY8b8aH9+wzRebbvuKfiBeLAESQcpN8Y3F/X9/dbt/l6g5yruYIGoIRftn2WQQAM3uzIDJzEVVNywLy6c66fl/2xm1w++LZ+RdWJycSkLpJtRPpHGZNI05J2XA17YKZQExMRHqo+gCC4nmvGHuz1p9jdzVwqrk/Cbt5XNXaPxin5/q8i8UP+oj+iiw+xL7+Z/583d5kvijXX7NPvUaBoZA0lFVEY6Gps/NN7CINySeCfL++0HFIoYYTLIpyUmI4RQAMJzgsGdw9pdQCxQ0ih0YHNaZ135X9qMQqfaPuBvT2g8tdWkoL/iSSp+aVBE0jCOGUGvWsW541hINba5TVmWqdc0qvlfF8vTrvknqENxI2goVrfDTX0k7w7/dniAh3JRYRr1NI5JK33bqvZjzuujifsx1JGzg1QpIG2pRyf9xfl5g0h6Zcdk4MVhFx9xJGFFnUnd1dRLxZSslrY1YziyOfWPa8bbjeJfn587urcVoltqhTlNQnGikOFSthjjCCSzBzqgIAjienYJkO90V5zusF41Ub30nnr6/H7a7Sbt2ffvPdXcOfvXr0fJ94sfgBSyC7eKG+/ff+3vZ//l/00aOb9766/tQXAtRttvuTVW63kxrtIY+svrXbbTXtZz/pTzDXRDJKARBAEFPgMPWKnCapzD+wM+5BERTsH9FDS8+KsVupnehK+BOnp6eMFTzKOGum2jrR4CjwBiLHoD3mWVQbRYWZGeCdKAVsuWU9U8nchYLJo3kLIWVRC5cWlBhECGtuDjtUos9yej3PD6fpprXKzKSK4HjSiWLBRsbucjiW6hSH+bxQi3CSnGCwVkTIYcHELTUBM7JTRMzUiCgR//mT4yi9SBzTaCpr7cf3bfMpPvv2H11ZT796//3bvrTFx8hHMx2y+ND6G8PZ6t/+tff/u//h9U++FlFpBg8nVCYw38r17FBPUvcS9/dyb61UtNFm1+g9mXkKXjkLxc5LyaSrnJ0YjCfTXR1EIALTsiZ8OiURzkI8z2Wc5+2498To+1UhUakSLQKITKTguU6TUgt3sxTcp6SajGh0U7qdz8lH1ZTFzVNDIjHVJhQAmu/X7s3I3cGaOrga5VG7ty4f3pR5jAhNzEmIwh3Wbuv7+2HjhzEYAAckiEEUJEGmEQCBGsJFwAKj7LpNOCWJWh/7tuv5K+d3f65fr9A6OY77ybZMq9PTfvRtV+5itR3tjzMel/rf7Pe3fWmLj5Hj+LYsPhr+8S//8iknevPtiy+/Pr/7MK9xTXmIFeja4nbaD6mQR5RShjzU4rPot8brB14Iq95Iia/b1HWdtgjC43l/ntfwAEAcRGSEIDeE+PJD/lQ1SJg1uzvD3eakJBRE9snh7J7LijGjjah9ytzc+87MzCwi6Hu9ZhnPvZ3Qx41Q2keBcGKWYmRuwlXoFG1jTdKAihny1mYzhkvwDjOzBAmRcDCFcwDkjuXzDwDGT/oDyvf2aA6Z6klnOAlEnFWzRezrLDkNXm+o3FH9U/nsIsl1jOz1VaRHR/JB36R4abI96ynapsl+WP9Pb715R/u/eX8pLVi8OEtGdvHi/K1hddNnuf/OlqeLO3ce1vEMq90qxbhjvp1a1QkBBMOFybklldOQT/H63jBs236PSm5d121aUcmvynrPNZgPJ4KDKCgCHodhDIsPpsIRsDAHQsWZC2JusQ/fhD+eJs55xX1uQUl3sGgVrWXhBOIAA05BKrQcEnqmhJnND90EGiOEE/HgNFsM1E8kv3dz+e02W+OUhmsz7RNxImI6VAGHg4l4+bM8EQT+XhQbQBCcEYS1ZwLPiAoXYbLq3vpVl2z88urOzw3n5nOt0wWxMn2X910cSWmBpDqPHXRKbN7/8+1129vW2q9Px3F4cfHRsASyixfnr58Or7/3EF94fThN282V9veomNlWh5PnPUrxg4QjiRJRkyitIrCCnmtHMb2u+aLvr2we4Vo9Sb70Sgkgcg6LcPcIZ2Kl5Yf8x6BDt3YgyN2MAGHJqk5dx10pduX2zbL97rzt0/ASr3trMHOmGWYCUeZm2WFHkqk6FqVOyjyIKtibgSmES9io69+/efz2uI/gdX9yUyYmfk1Xo1cKUiMFMzMxBblRLAu5A4IfKgoCaILGcPKgqA1ZdNBk3CaeKcqroC8Pp59JHcFrlE6EWW7IC/Epr46lq0OUtk7dHFS69Du7m/WY3y4bcfzvZQlkFy/OEsguXpy/0fGVjN36TsWcSU5xNrLdnaZr4tuaWHkaqbnPYRTcU06sM/kllRPCDnNK+pquX9J+X+fidUU0t4nCAwATEzOBA4AvDd6frlk7NJ9QYUQoAHcCujHAPDJaEtXMnK5rffP64SvDqjBLlyOAgAKtFRBAyy3rWcqdNGBuhhYDDZy6B7X+wc3luw1k3FEew4l5CCHEe/PNwB1bIHCY7xUEEALLjsQThGAQgYLQGMauiBxOotuYphjvsnxlOPtyf7oWjFJFiSgO+VtmZk5E3Dye92jZZ4Uiwsn7O//X43fWtZ+HfP34KkC/UcttX9riY2T5VVi8OP/ByWBdkmE42WOf1WqTVnG6Zru1w+h7tAxauabgmTGyOTzDt4JMkozcayf0iWH9+mp90kudSgoABBawMHOEw2w57PJ0qgmg1gwgmB8GqhHR2FkiOjGmqY61jIimzLn71rzbeax0lQs6F026I9931NnyPj9LNzYnTn0abgzf2G//eNxdmwt6MnZhEGejcBvZWydD36cAMeLQCA8WCMRhIskSyAKH1q1BBDKGkytiaLZucZmn10W/0p1/TrNyTGIQOk3dRqqSSCDcrDVxJyZXYj+OQNZhjfM/ubkZKk2ESNhvRkT8+hLILl6gJZBdvDj/3p3zi0mHHtytZyh15sT7xkIz3dJHUcWNaVIqCA1KZilCCENNHAxCEvVo1cbwcUV+trqbRJv73FqDB0gITM+7XePxMxZWBklKHoCIRYAZ3EqdKoKTdqnrSKRECiTq9rU98vlb0/UVSpe7daW7TetznlT0cXOPh6tp+vp+81abrwguHUUqDZ7IwiuFdeLM2SiVyA0TWpCDAQaYEKAIcoql5AMA4BwSBFAQgiKHr1usq//K6cWFMPc0SbNoSuSB2dq6sYcbIxIhsbNxWNfMj6Q7xzrwv44Psp120EkMbJvtLph/vSyB7OLFWe4+ixfnH776Mg/DJ0+G15NeYUvBPbpgsuZH0m0GQeytKYum7nqu39lcPzb3fnBYmHfacXOrToJK5sowqKq7C6hWyzm7OwCKZaTY0xCJux/mu4Y1iXba92fr1WfmPQ957601X2vmQC0NylzdEweDAxFhBIDE4mN3mN5hQkA8WVoJw4Krz8pCUA6j2kBu3Ln2nn9zf3PLF/zhps7m7hJIEhHuzgERKR7MDA82knDicBiJTI37lFodQe2U4vPnd86DyWo9kpTRoa/wHAGV1myVOjTzZoTUkkFNW+EK6k8eOr71+GrkDDe1XPoiLYnzm9fvs8ffudnc9ktZfIwcyddr8ZHwK+v8renmL568foOxI1mHNvPGT+omb/vqfiJOoYkRNk+TJLpzfr7OvU8jAT6XiGhJaqdQTZVOZuYk7IHmyhLhCHczWeoQfhwiRDgxM3O4h1lzq7V+PbZC3YV1a2MLn6IZRZdk7lQtotmEBsbaNQU1ITqSWsNnJZgHpxQ0cyth0iDMZdCVRZDNrQ489DUZ0pvT5p+W6x630/buWBA7lIgQZhyhzAJ4a4MIlZaFXWiUqBIiilqFo8V0h+lPn1x8Mg9OdYrSZfUjKRUwRQMxUQ7WauzeBNZJaEitXTGCcL++nvy97XTlziyI4BBTYxcOejTvgug3lq4FixdoCWQXL84vJ3bHXuxL/b2tzyehzijUcvixpM6cjIAII3gS6Zl7xAnTJ4Yz9zbCK0xaJCMEPKc6jSAwkYgwQ1SAiHA6kq3D28KBw5mZw2w1EBCobtlXV+5v1d11KyfSX0gHih21rmIfLdjvcDdw2lKd3FJ87BrPsvse5gmnSAPrHnUO7w0TtVPuU5Ud5He2V1+P+arGGQ8fszj/p+ZsAQdCwIgId4KIqEU1oTmaT9NL/ZCLudeSsNL2xvrk012fyNjq3dQxxwMfhyNZMLQkXlsGK4KTVBgI4dbBjBHQ1niv+c3d9rLamtdG9q8GsgCWQHbxIi2B7OLF+bW+B8lF17/bNm/I+RaemVkoagMfx0dRSNycQClruJVxD/ezrttHuZD0ufWdlzRXrzc2zWSUJKUuiB2wCHN3D4CWKPbHIvJAHMJQImIRYgniXfOeuwzZeH3Hx/dtzCav0bqwnWnXQ3e1jK1mEVaexDU+Xm/1pN6JaNB2mh205rxOXXFbo/+O1d+drr5ppTQ+k3UyisP6YPHBPBqCCQwnIoVoMDuRiVhtp6uVs+9jEq9/+s5Lf4pPLjKtVVmIvLnbTB6glVMcyVeeQdI8ExV4SVTgPUlf6KaVVVqPqf/d68t3zajpaV7tS4HEj8jIAr+5BLKLF+g4oofFR8O/NayU5ZW8buR/ZJtfzBdjWCICOY4kI6tIRARiCwSBWYjJwjuCoRB7T/RKGl7qV8Z+VbdEea7FEayqmpoZiJKmWGpkn4rBICaQH87HA4EI0InmxrEPc48emiJfW/tWnc6HfqpWHZRURKiBAyoJR7Kl+6wkSSjGkBCmlPeljRFF+Le3VzfVJXpCMkjxxvCevC3HJJ6KIcIKSDMEc0rZKeZSOqNgFJ97s6/ce+VzuV+HQeo6tLTawjmlSDqbsaPn3I5kwZAsiJmTlNbCiRzMqXionv6/N4/+eB6Nci/99bgL8Y7J6IcD2YfzDksgu3ixlkB28eL82tAR8HLqWfmG7YHNX8L5Y0ypT7DjuNHDKUABjwCBWSWILTCmJsE9sVubvVDCXUmf0/X9abtK0iexWsghmlRzbUZ0JK/3tngEgYiY6HuxFgNwVPboiDsWQGbCCN6DopZ3pv21t0H7VRoKjMzPGs0fsy4H55X3bpYzU7cHvr69er+Usdq1swcThJ2SEMEbtxGmuJ2JesdCIGERYM3Jo83TTqydDXlH7Y7jl1Z3fq5braxNMbWetjZacE+aWbatgmjNSViuvaYjKXGh5lVQlTX4FClx/9D9zXn7KHg71dBcAuJx7qSdvo9dj/QjSwuWQHbxIi2B7OLF+TeGrsFf6lbKYszw+G7ZfnG4cxljdyQZWQsPOIOUmYi8WQREdHCtHrOiEZRozZIcHHG+7l5ar9Yqdb93axFBytUaH8kP220JMEBAEB1KZIkOMyj8Sed9IxREMGXmjvhhnTvuLei78+6qTGvJK9XN4bjXx8mOQzmN4N+/evjdOltj1v5+mS90zUSzzyZhbipCwcqCZZDBU1FE9QYhTaRuuU33En/y9OQLuX9lNSC1gkKJGASLnPsE3ZE701BjINlHbYrueLA7GAcAACAASURBVN7kw0Bdc2fwFHQT9O5c3p8muBQlUTmFdEETbGbvOFHQDwWyl0sgu3jhlkB28eL8m0MXTBf9KhGpsYL2Yu/4zZfotPFxbLUbOwsJONwRkUQYMGuZemqRICxi8AleI1j43J2meZXk/OR0dbrez3OxIkmOZKfx1qh0AXc3DhDCAxEBEKfUIpyIEOqhAY4I91M5mdyKUEq5Wn043uyidEPfH8fH6pnZJn5r8/i7434O5OF0W5tQOuVhG6NwwGxI4q0lSVZdIwV9zN6gn1JE06QBL/N+lfiz9y4+uV4PpQjX8DlQoVzciUVddMYkLhYKqoJIJOYZZBx0JLFs1RhYstEu4s391bdbmRpOaV1RT7XjUierNYFFqSK7OP+IGllE/Oa89JFdvDjH8e1afDT8nTtnEvTpi7srxuSNNGkjwKv4S2YXJ6s7vSY3tKqcyNgsKJeoodoX90ohWa2OnbDbcW+J/uPLbc59BLExPIICHc9R1QoHMcQsWBKpeC3MPFMTEAWCcGiWLg428mUUw1NNYncMP39x0U/7sz6PdSrkRnAZFKxuYRYwInKWSqEIhnAAfkgCRwtvXjN1t3L9OazAI4kFiYgVU5A6amI3g4WqMnOrXt1U9Z/djLdynceicKQgas6swdQQREQRLc9UI5ko1B2N2IUcobSX1u6IvjacnKdMbjAnonYk37vgEAuATQgAWzjCmVZVmkRlbzAWsBsbCfEoJ9fz/HCablqrzEyqCA7YB6y8HcEIaan0JUcfxd+8fp+I/tOrpT/x4sU57mhgcVzkg9MS34lqxU611+ZEad9aSkkYJdg6ibBMsjbI5DPn2dpxNLP5YH/l1U++P26+ub3ZMTwnNtLmXfPEXYF7SsbuEWzVyMCRGhMRARE4zLgPwhLF/lhnkXc2/e71o5X753M+RV5LnurUNRtRSjgnFlEjZsPQonJDNAfHoUbXiZiSKG4pcblPOVnw1AAHPKs2xiZZX0whqslBV/vyYNrdEIoSjqTN021JtXUph+psDUGakzjKflpVdVUTVIBhKaqHB+Mrd1+xWtS9Ew72Bq/kYOr8OHJA5DwJ2H2oiIhJ4UKrkLKKKE0dWXWqFmkApWr2jcsHLTATQ5OSMBDW3BrkA0OF+F4L8IggIhE+kp7gi4+OJZBdfChcpDuX47Qr153ZGy/d7aAp8W7cNpITqLQGwSQ+l3KaVmdNRrbbvuSfydX0/knuvvLSOUKu9/P70/ZaZOx5drHiK+eepFkxDqdDQ1VG4BDLUsDYg2AMWXaGn2rfWtI+3G7gXxv3aapfPLu4451oW0MKW6VoFohGwUSciA/tEYjIEECIE9GtHRmL6q6KxJmp1hoEMl+FsHulmAU3Hu/ZfNXCkjJyxnF/L543ESmlCHGftHhMu72ynJycTNsq0OZl9FnUX9L0GfSfTKsyF/NmCKC5wRlEh43M4whkp7ATT8x6gwKKdYgY7bwUm/o82NhOTDMN1xP+cHf1WBFhzBJEhGD3COfAYYviR2LmMGdmAK01DSFiPo73ZvHRsdTILl6cv9z3AM6HIRFaOLGwExDOMbp1kFVajx4P2nx/vxWSOzrciw5uU7SCokkSmJh3VuXIb5YhQQiro4afr1YX6/XAgt3UOvG5KMPYJ7cgHpBWkQo5vveSn4xyZwQvzQ9+jA4MkEPCIJFaaxu278QeQi7KJB7B7h2YOGY2jcM7SsGHPeegAPzWBitkldmrhUkQM1d3OHcul0m/c3Pz9nbzsLWJJOVVTx3GRssd/ak8KQLksObCrF02iskq2JGDvLwM/vL6/I1h3WmMWsJaCIgRAAEC6pzUIo5kON8ZdLQysYtw0jSVAtgpNFNKTcD5ps+//fjB215mcGoSvRInIiYneEQ4mIjpA5OsRAgXaJOGRon1xgoz/W+7/Qt9nYuPtyUju/hQGIQq+eO2zyS5EEW8s53elulf61YG61cdV0+GBi9WQvnYD0ul1knHI/EYbZ5uEvLLmu7duQiSr0/jfZ5m5qy6QjbDphl1EQiAJaAGAjgQ4ceSGbo1ilJK4kSOpBxdt2nziDJYerNerph/bnV+0XfbmMLrPeguyD2C/JCUFdDhn7ilD9w1bu567jk/2O+79WmmvOH2e5tHo3TulNM6Q6bd2FAlDzlLRbuV6zwW3gicUieltRKN3dSsk4TYfKa/eGV1KmZN7Mb2Fi1zYiaIEhHc4eAgAtjdjmTBUGLmhJ6ojpN0OaUUwtdzOfHTK2lfu7q/F1JN67za7PaRmRsAiBODguFEDquAfEBXGXcPdxCIiJhFRJNYW7YFFi/UEsguPhRKlOyUTF2wzTBOUltX8E/l+o7RF7tOi0YnAeKwTrgdS9/ZDxApldak4UR6Feyt7qnUDlTj86vVV/Lqkds3xu0DuwHyKnUcpRA1BpzlyejWgMcSyD7dTdRE0WWdUXYxEnFqcaEn3ynzS7z2aP98fHze9BfzyTmvHvjUp0QhgJP5k3pkIG4v7/05W79j49wN67wulP/Z5r1RZBW5o9Ucc2sOJe07AYGs1afVMi4AdA1TmwqnJm5WV4YL1s+cXZx5Kom2sXOva3RnJM2olQAANyeyCICdiTggTEcy0ORhKveiP+V8hRaQML52f3vebWPONToMdzVfbm82vhchrjNTf5ghEuyHBs6HyvwPevxD/BoeEUGAmdXaYimSXbxYR7KuXHwkPKW0YF3ZQXPCBBMhMXSiQmxEN60+bG1T6zqvUrCq7FuVIxn5+EFyRERYOFQOP5PMRPAz6SpZIe8iPq39q2loVC55f28GEZwpAAJxICicg5ZA9qnWkZvQFs3JO8fgIuAGvpdXj2Lekl/wQBXfHDePze7l88kbC6sIe0Q0JhDBAL6l9/n9FifprEj6JzcPvjFutPBZWl/D+9lACEWFVXhzQ0QSPY7w6vYQh1IMhDSO95J8/u69u8rZ6k0OuA9GgwsFDCTEiZTzYSIHMYgZHu5wo5Aj+d6tNF3XeSaWyJXSH25u3iuzNxEnT3lLvg90qesh1J50wCBG4DBPzwKBgIA+aMFMTIQg5yZNQr35g/1NRPzG0kd28QItgezixXlajawqAWtSmkonVFphkeK1j165r5Dr1i5RH+1vzvJwHtyOfGJT85E7NREDrJkCGSTNRoBASqhos7oqvRT8C7za7SYHjMmJOYgCoDAOPpL+lLelGvWUpNRexJhGuOeuBqa2W0HWSDWoBSekBvlOm3TcM3Nm4gBFELMTHM63NLDjq/v6zWn//jRp07UOhVEDuca+KxBKQAp0pAg0cBWWJRn2VDue1qJv3Ln4bL9+hXUV5jbrIKtJYQFVU64IQzhx5ZhRmjVEKIsQCZxhiQ4DO44AGTKnieVfXD36bilTQ5/O5saiQa1l52QU4ErhSWYPdwtyMMAAEw7fAqf4gBpxjyCAXTx5osxBl9OOPH5j6SO7eIGWX8HFi/OfnZ8D+JF9ZMV/uh+GX71zXsueGCHmTABb9cQa0ZLk1sIjIEwUWWDT5Jqfz2t6Qbw5pTwFfefycgPMnNAN+zpfBLXmuevMjARTnVydVKTlCDvkEd1dSYkkIpyWGsqnMXYlbtN4kvKn791dAdhvVjnPGCWQRM3CiEnYzChYHCRCRHbIYQH8pA/Rj358CXZGZQBBYU+aTpA7kDjV6pyGjcV3bm6u4CNhHUuu4WkoLJwkJxisFRFyWDAlaPEgIoGQG4Cm0cT/0jDc9iX/TCZqykIGNVIATCYxoWZPDGJmC5/CEktCSLFvdqub3X4zTUZKou5OAWaOeEZlrBxlHlf5DrTsx5r7k2+/+04ehr/94P6zefzF4iew3CUXL85TMrI/bWbxq5v3J5F1v+5dtIJAEI4kRi3CEJZTAsJaQ0A0+ZGfDkuJaymien52erZa+ThRmdZEY5LW8bYWN9MaK+1VUkVoCyUWBhMIYTCHB5w+ZiNbf1pWWpf7JLm5b3fj5eZmMtP1SU+9O3toCxBxIknNV0ZN4jCBzOGAC4JwONGeCPyv/msoTgE3tuhMEieCmhGoe1zKN3ebt+f9A2/75j3lM3R1aaf1VK5xKLZpCBcBC4yy6xZNiQU0Uy1qfaYvpP7Pylnl417InVtip0phvVRBc+OgTAnkY9TZTY3OoiPq3vH6+21X921filmAhUUAIPxZ3gMIzOSNSFw0e9D69KxM0z/a757dcywWP8ZyMmBxlM5W9x7Xev3oscDOh+71bnXHoxvrVRcCShG9WwM1RBEiFm3HXT0YYURBbeLQE+JPrzJJSin93++9e3JyWpho6HelzoiuYlXYega8tWYRosRM4UH0wW10FgCAVRq8erFGxMYg8Oh2/fh66/Ul6T7bn93VNbzNUXaMGHhV4d6ISZiJIszcnIjsAzLfBk+UEzRAzmlkelCnB9M+gkA8kUZwGAdodmrky57Z09mhcUe4OKsmi9hHq5kvottJ29h0B/xz/dlrmtzrnnY4kpKADzIl8Wjw0KkIMTO3wGgNHZ36kFwvrfzBdP0oQiC55j1VgKFMcsjCBhHRoSDgWTg8WE5prhMxWeDB5aOUj3v7a3F0lkB2cZxqJKjmVbH5/m6+2l/e69OrZ2d35xChGdNjn12Cu5RJoh53GgZAbZ5SIqDWysznfSKSWue//MqnH9j0B+N9p7Y2oWbc93uFIgB2JIQRK9wiXIiW/N7TeTRziIgktYgW7s6z+dr7jcVXaTvPs9W6Cn9FuldX5yQCE+dg54C7kRAya/mAd7pHd9Xqd+fto3lsoC4NiVOEPiAfRDsXsRCnAi/iRbmrL/gNODKnNhT4CCuwgYysSbQ+d7uyeWN18Qm60FIK+aXtQL7OuZbjXsmN40iZUp8oKmpEMw3ppeeJ3qnbb8W0MdfQFVYO2qD0kpmZ6XB66/DaD6ujZxPQj+O4XvV1qt3QgVJpaK3WuhTILl6oJZBdHKWghuLUaMXZulzI3m3j/eubuzNevXN2rzs9Yy9lKtMcKfDk8MIRI1J3IoKmLiKqm1lx91Hinqa/dPoytLuO+tbN1USTWXXPrCJJBQnuZk7OEcf+Njx3DnMKIXGHtQZwViXRkqnNRQkJneauRbzX/GouQV69RgQQHCD40PVD0vuPpx/5+CRTC4+gxCd9IGqMqI3iQjpv0dxKeEqiLKm1KO22BjEci515r3ouaRfjnvaZ7DWWL0rn2bJS86lyHTSnyFsrm2r9kX8BTs9W+/3Wp8YgAjWWKUw6/urDSw5izn3E3r1KHSSdUz/6HOGHNgQAhBgkFHhKR62fymq1qnUe+vOxXJc6r07ulFJOT08xLgMRFi/OUiO7eHGeYY1salVEIssOde/GLL1r1/ThgM00b7Yjgbo8JFECezM6kkk8H+QwZao0C1ALB4uLSNf1Fk5euMHrS5rPJZ/0ubSp0+RzidoQHg5mVhY44rjfhudOk7q7eT0clUtMHOTNq5coNRmJBTkBUgNGjAa4gARQuISTO4dxcyaSH/Fv4wgBiUoWYg4SpiyqU2UPYjo8GCGiNQ0cywSp2yLC25imGO+yfGU4+3J/uhaMUk8EQmFeS5gLAJagPpLTcZcYFWsE6lOPSs5pn7tvjJuvXd83Pa1gJxFoJtKAh5c2EzMRHyoKDi0L49B/+hktkJo1YbIKzaSaPejuvbvTNC81sosXacnILo7SqKrEHUUK44CGHNoenoxOKpcpLttMV7sTi8+vz15f3dvUq9u+5J9JRKgKMwVTNGeiMKu1WXNVVeHK9jgmynQBudvfecDxuM6jh5NM3oiUkywnh36sUpqICgkD7u7uCBBRclHVJOru1Y3gisgelZyISPiw0vDmzVqpFflHZ7w0DdlBHlwLwwvFpGgS607Ig5lTK97CmJ2Qhs7mo6+Kea52sn1d8hvp4pTQyLds6ORC0sYmcUvBPTMCDoeQH3cQCwC5Yk76kPVb481mKv1qbSanes5GJbyyG0gQQqREzAjiJxOWKeJJe1gKInpGGVlmNqudam1zAM3j+vFWZFl9LV6oJZBdHCXR3srcrCZGEjQqFVBNwZ5JusrhZJK2yb5ap9958PhX75zf9iX/TJgjvFlrOfXhoObi0aeMpFObzazLiaoJ61QLpfQyaLXqYzgZib5z+XhbR5G+kenSzumplDIc7q3CVJWYLJxIGFTNirUajQRZSGvjVjWxIay5BzGzqEiIu8cH3FrD9lWpJoogdXRIK4+YvHVcvSXAmZMomNo8l+JLYcHT/dV8d0aLLrbRyDyFtMC2zj11DnMlcFhtEcasJsFHHster/Tth5fb4EKdrtYBrvO4GnqnqXMnl6Ao7kZMzMEsEREOQCjg5AhmFU7mz2ZgQUT0fV/HBkFKyWvsdlvO6Zk8+GLxE1ruk4sX5xn2kf1p7Xm6QP7C+cVpc7EqirFNedXxniuadKl6I6Jaa9LsCG4mIgS4O+AQNobBkh3H2s8QHBCEiFTwTbOH03g1TVN3khoJ8dRMValVVhpRVz7MqCYBjhQkzjBPnKal7+ziOWgQoqAIuBFR4kRE7pjEyCKJiHPMc3BEx9UtZu5Xw2wja4i3k2ZvnN67CBnlOCZIlZiVkxLD6VCq7gSH5UoNwUruDoBZawRUqu5sX05k1UdXi1s3XJO/dflg5u62X8q/JAhwU8ulL9KSOL95/T6Z/yeb7W1f2uJj5Dh+lReLn9GpD83aW1dXNo/rIb0+3O2ANsa+b9mDW+kcQVBJ7MHgOVOrDQAzMyczgwXz0aQziZk8zC1aEMlaRNYn99Zn2fjr28ut20o6zvweLIFfofVjHpV4BaHZyMOT75Nf03RyJIH74rj0cASCPBiOKFHDozmG5k7M5mDdDkwUvZOAYnBuu4vqn1idnw5dmUdV31g7lk9nEj3MvYjwiEOZtYOQhtU07r2ZJtagaJXMel6d7VeIdVB638ofT9fjfJ3zAD6OtlaxlBYsXqxjuQ8sFj8TMplarZnberi2evXw0QXpp8/uXZRt63Tjkyg6l5XwPNfKbgZWAeARZi7EDEYgjqWBlQMAM1MA8ByUSZl0TNNfOD27Cv/q9vG+TC97J5zf9f1d1WqxR9OkQszhak4w0HKLWDx77g0AOJgZYIoIFlUCGtfYs4nEK6YtYsOFgaHNnzl/6R609/DtLkuQpjEanvNOzrPCwRFkCBAOh64IJERX+21KKWv2Mkug74bS6lhGsvP3fXyvjFfRWkhGajNViyTLJupi8cOWX6nFx8KsgHSJBWbwaMKXre02V2E3n7tz7yWcJo8Z5dpb5dqlrM1hHgD4cGgiiIJI7FmNdnzOKAIEYo0wRIQ3cvMoJ9Iu0VK//tXu9Z3ha1cP97Z5jfMjn1QzR0KF12awNEjOqU5HXlS4+FCqmd2dggggD2rOFMzcQDakoZpZfTfNZ7N/qfSvn9+90n3PxHU24sZeraaC/miWlQhDUIDAzAGQBwAKnBJXb+5UmWePsRaAuVv/1nZjtbXWiCSnjpm5oodMWBoLLxY/bAlkFx8LrIHSYqwSkVSCpUiUMOWTP9yXr/t40vyNs/MzElctaF3K0zS5N82JlVr1Fi5yNN3UFezhZvak3xBDGQTsRU9NeY5NueKcf+nk1FPaRq33r3ig2d1ZqEtKOch21/uu+3DV5C0+GsQZIQAIBAZSRMCJxIO3ZavlrO/+Yj4/7dG8aOxPWd29hhcBsnJoeKAZ9DgylEQMCgH80DjAgwJg2q+CptbPtPIUqbui+Pp4db9NjNyx9NpRICJKay085XQ0kfti8QItgeziY0FbM2tEnLpUPKZxVJbz4f9j716Dbbuy+6D/xxhzzrXWfpzHfUjqltS6krrb/XS623Yn7SQQQ6BcMXygkg/EIZShgDIkhhDimABOyMOkHOMH8IGioFKBypeEAAFjzMt2g9OmKMrY7Vc/1K1utd73ce45++y911pzzjEGH/ZRx6F0Fctu6dytu36f9EWn5tp377XGGnPMMWbjppJLEX3BNrfHs8MBT4X5I9ze9O286zrmWsYyZmZGCNWq7FvrZQcTEbEroOY0oBC4oShtDIxcU8HC/dGHnnh1OH/2/GSIUiUMpXTUtm3r00zbyVsgFXImIyjBAMiuhiczcDxvvpmWD0kYg406gOpJR7Yp87brYjfknMciKXoQB2RPvp9OF+skcwIQhMBGmK+0tN1p5JdW56erOxIa5nCFF+I2wnuuMO9ckjlgxS3t2/1nMnkbTIHs5IFQa22bxgx9qWBq5zNW36zXDQcjCNFhmkuxavr5uv0cbxeG66k9kkheoRwkMUv2+g1qv/iWq1AARBSJjOAGM3P3eUiF3Ylcyzh6KdpKnFE407tdog8cLdrZ/Hwoz53c2XIZo8i0kzl5Czg7GDBDViFvhAnupXzk6jU2r0Hvek1DZcKYglSkRTNu+uKIMUqMuWjx0jQN6n501VB4IMDd3YSjS8jmQ1Vu5i/dvXvHcokxzpdunocszOtgjcvcpcK2XiHUQQ5NzjGV+kwm/39TIDt5IJQYYEbVAgcDSlYiopQ2aRStnNFIU4p5SBXujlPW1e27V5gfO1gezpZWchkLBcGePEiMiQBygoHc2SHMxDSwkZqYu1qIjTRQkVtWRYd509h20D4fSPvB6w+tQF+7dbKJ0y1i8o23DcpE5Cakh7G5Pp8dhMhVg28qWeMEljGRUOggWgw2RiZmNqg6hyihIORa9+OsF5zMiAXEIACquh7L2Wb7knQmQVITivNozLBAFjGr0dwrQOAOTODMfrPmbi8OX/J+1HtM3jH24VcxmfyOpV1reWGDYfe9dweQcgIAQYYhElADAEdhQxfvVDtdnV08aFPLVRO21Y1TKI5qSBS4cFDKqUSRkgcwqVnTNJpLcCmXtBP4WjWvOwGvjfFxOBtAZCAKrG4EhGoLANTaiCAzANUBHw+Aj1ydtZA7Wr6y2axD3I62aBcYSyQZ0ROJugWOAjIzZqhqJWcGfX0Apjm5k7NNz7Z3NAMZEEV8HEMIo2sIzOZ9MK5IykLBFAishOrGDh6GK8KPHRweNtFKrjkjiHlgwBzQix9pRYUAYPBuMB2xA2rgy2xxbFTdnUgChYsWsCCHmooQk8AEZpXNATi4KcpNswGthV46P9+qZVNJSXYDdGsFwQkKEAkqKvwfaPLuxor7MIo1swAwM5hIuFalFKxOlbyTt9V998OYTO4HsypgMid1nJUynJ8T3Ev+2PG1SuoOUo2mxJ7ZxkbCiCxcY0gs7agYLYPGhlPdjwzuvZxhPEjthz32ws/pam3brZcaYlKpgRWSS4mKTsRgo+icGnc3NXcH2a7XAxj7UpIx+e0ht05BzOvEKh5Hl+oDNG0YKWR2WO2iWB2IamKeG12/dvUoBRr7fjukJsQoWfdmkpkgggCQmdddCwJ2ZupYVnVUt1SZmUe1RDJHuN3KZhxPzvvBuVeLbUdCBNc9nxpNu3dWh6qSKhNpqTS9tU7eXlMgO5m8DjJyEEiQRIGe3d0V/rP9ycPS3KjdVW5D9N7zaEOiJidJqqkoRRoaVsALzVR0T0oR7mUu0bwq8qF0H+xmo4Tn6OyWDZvUcl8OpGGKNXjPNWtNXau9wxwgZhAFJThZhYtPz7Z3sjnxirObds4CXrEx8wJNpLTNQ5qFjfVFxsNIH5gdHVc/1TIXT66VvIqZVSW4G/bkMJOrg8ndiKiJUWGqama3ebNk6SSd50wSG4k1hq/W/PLpWp2KM0tDwgb2mk13u0B7zP0ic0xEDEopMZFOGdnJ22sKZCeT15GjqwO79kAAFOwk1DTZTlBu093DGG+E5TFiqI1IXJppoJFEYVwRHeRE5PueidyahYtJPRVRW+Eb2j1pC0ndM+Otm7TN7vPYLajdjFvOruxgFgOBHdi1G5omYb/j3fU6l4aJxpyz1UVojOnMikCRLGi+UvSD1x5qtcJtjHolpWHoe6shxdikWsyrBwn70iVDCYHI3V0VROIKNwDXaXbmAyDJm6HI58/vbAMHjn0BBZYUDexVtRYBhch7c3r0HpgZu1llDjOrXsecg+zH28jkHWMKZCeT16FsZkYOgMgI1YiImdnpIHRGtqnjZ89Pg/lVik+2R4HPCUTwUKwNUZizlyFvQ9iPqZL3wooQggtl9pxrcJpznIXmzDbvPZzdSM1zZ3dv5U0fnJ27ntcLJUdlh+5Ss8bMkfY8Lz35h2kkabUi8FnrtZRcpNBBDJuwPq7yTYcPtVW9lk3eLufzMNZRMgmzJCVSJaYgRATRPWn4T8FBLgQzK3kQUBARkVyp0e6c6Avj2SiBlBs05yXPu1YdpupeiZyJLoYi7PlOhbtXswQws4iQIskUVEzebtN3bjJ5HTHv5gg4ExmTR3ZiI/JIvRV3Eg/HnuB+UsZbZycdzt4zO353s6Q81KJbypKk7VLdj+fyPR0i9lVHmDjPuGPmkfQuNgfiFQhenmxm70uHRcJzvH7VMsbMLE5CLExMDnbADNiT4+WT35YjTbd92NRxKU2Ac7BjSo818wNpy9x69Keary2WC57VqhrEYcwMAHaxPe1O7rZHyftaq4AoiEAoxOpYDblKfHFYrVxNpZF2HXKg+EjqzrUns0Ck8CC864U31rrvL7q/mYhY1SYmtem9dfK2mgLZyeR1MAfsmuaYG8xAbloNFB3ugaOCVlRZKCgvC2paPrfNL2zvzNTfc3C4CFKpnOZhQfGyL+V35JRy53xo0R1b8UyVYK0boeFSuOYUg4tXHR6fhRvSfenkpBpGchVyZgKbVlKDTIHsO9lN3x7EONcw1KGDv3d5vGCqnrMQcj0igsRh2BYQx6C5phCtVgDMzCKqal6daF/2pFm9FEMMRDKYqfFgftLnuzFHQEyKahnrwsVRX9btIsbdlo6WokSqFkJI6aLjwf5iZiKQUikleMi5AGjTNA5w8raaAtnJ5HUMYCInZ5gSUeJITEaAjgYEYnOrpVCgkmxk8BA5xBxx17cnw9lhrTfa2SNxtt6TrdJ7SeIFPpBDafDOTgAAIABJREFUPTp1xYgcjOJETVJTshpqnpt74Or56SvXz8bx9jCsaqmsTCEQsUTd81rAyRvTFquyvQL64OLKnN1JB+1jEstCUTZQIhJHo0ZjYeZcShAhwMzcjIWV3dzE9uOFRzw4k4R2XcqLJ6dbYu+6jXqqWonBoW2jmfVeiXyeohqbmTBDQgiRvTKCVt33jYpaaxQmInePMQaOhwibbX/Z65o8WPZnI2ey//7i4SGAx4+vzBiDVQoxVAKsyN48wN6sTx2KgxW+m0zJYCEiR4UbjIjMrJEgxDlnkFlghrADBiKAvbpVK4n2I8nhxFZrYAmxORvLC+dnd9Ws7Uw5ELM5qbPAoCOrinclmJC7izoAFTICmfN0a7pUzlWMyaHEBmdTCCxwU1HNnSIK2hCKjZp0oPpEpsP57LCJwdytkrAS1C34fuRYWSxX49RortEpCGrNEhk5UGQQwbWaGnR3PH+U5WsvbLUwM4UAZ8cD98KWwpg3JaZZjsE08/DCuaUQfuDVFy57ZZMHyJSRnUzeQp8+G0KpV2J6dLk8EkYZ3TIzHByJA3F1MrPKrkwptKYjvBrY3QlERsQUJezLaSmDhUZQtd+epxSffPj61bHeWq3OYVYVHjimXpVEgnPY1hy0rQKmIZG7dgpWH2XvD8HsOzHuyYhl7izEQwxeS7O1bZJIHFk2YchhnAEfahbv5valbmiDCBOsGpzdefc+sifGis5D7B0ctuJrVk6BTctcw1ijEUhCbLVYBfeBn7tzqzpGYoQYSBi7QLfiQTvqdGdj18L1jZfIiXzkQFZzvx9zgyfvGA/Yr24yeXt1OKIWZ5ZPT8+Wid61nB/KnFWX1ZWggUot7sxGMGcgEjvcQUSkcMDFiIj3Jc/jUDMGlMUCeXBN4vNZsyC5G+iZ7emZF+Y058a3ddYsMo1rK0Q0UwJ4bZmZDxD7By2zdZ+pIktrSq2nnono0Brh1Kc6RzzzfoPxONA3zY6ugYnsTFeL2JK7qcINJA6C70lLWADAocUS6ES3jaQElkoew8r9WsG5q8YOBduCr5xvejdx3kCZxYkIzmbuxo7dVsqD5Xhx9XwgsmL9iutS5ujHG5/4MH7hlcte2eQBMgWyk8lbqOiKijORcBiUnz0bqpm6fevhwuBsFBDmLOTYeD+ota8Nl3UmBu1ON2N/Dv1HBK1KxLEJVrVfnzGH46bdoB4qf2tzPIb4uds3t8lrkhG9ubYSIng7DiIy4wbCdzW3+xQFvQPNMveePfBBnFWzs9KjehfTua8fDc2T7eEMbuKnumHiwExVzcwJzkREtOvB7OS0H6HdGUrLsYsBwbe5J+d5kUcxX5Xtgmfnxr92frtniRpSmp3lMbUdOZM7FG7mMDAz877snHyjlFLWgaKAIi0G/uVbL/6JH/sPP/u/fPqy1zV5sExPi8nb5zvaFsBh10VCdSMWNgLc2PkdupXsrVMkEjgAF/NAnJjTs/Vcja+gmyFW8h4VhGVKVWHmjou+8AIiIsLelIwGRCICsTqcwCzEpG6hksSwGbYdybu75fVuvhlWWxkOfOZDUbgGlratpcJJMHWevWTV3VMgAdUsprMUOpFk+i3Lw4NAJFoxRKbk7Cwj0BDAIGJiJiJzJ8dua+GyL+W3RAVuld0imAipmW3GPBr61P366u7X+q07z9vFKg9M/EiY9VbIKSgFMDMTk5MpvWPvY/eSSNbJg1s09AQZW831d33nd/zET/3UZS9t8gCZAtnJ2+cBDGRtW0USQhxNC0oMFF0pDweY3y3jV3R913MnaYlkqlsYh0AsYCJzcuwmme9LFAsARg5ymDsIzEGcWB0IAeZNSKENJ8M5BX+06d5L88PQjj5mNocRyyoPEeHY40hTmd1lWjXWAaGWqsMy8JPd4l1tN4t8xGA2Dqhu6lTNI2RGSWk3lZQu/u0BJiLGvnx32yCmBhBT0EyF05c3p1+27c1spNxQ6t2IuXMh+CvjquOG1eEAGRGcAIID79T72L2wq5i0ldc63O7rv/Cn/vzt557/xH/0w5e9rsmDZQpkJ2+fBzCQTd2iZuVc5xQiaCxl5GqLlEdtKC6k2bo9X/sXy2CFrtHBmgoLBxE2d69MIIJib1Ky6uYwBoVdZq6qO0RC0eqRi1av5ZBC51RUNREHuxbTQZNWwxqOJWQe25M6TG1nL9fMrWqZB/7A4vjx2YyoEuo1iXe1d/fEQUyiRHMDw6xWMjgAcncGMZGzOxntyXmv3koTWiuyIfnSZv18zadFhVOqYsIgTkpu2rPVRrq2jQ5iONzdHepwOAS0L4H7N0pT8jbFGVKZtRsPp3de+dQf+M4f+bkpHTt5Wz1Yv7rJ5foLRwfs9EC132KYGxnt9tnDa5OuyKRUcwizenRx98EqdenRvN3rNkaVVIjF2M2wG/bjXk1bZlV1dmMYCwBy9mrUlHEo87TwwiPHL9w9WUWuzM2UkL1Uh6oPLw+Om4g6wsYkrGwbKwuaVzUlqGpKyVyZUa0QyV63jWucz8i/cPfu0Hbb0brYRQOpj8F2tb8cBOahGJkH4p4r82sbJgDMyZ2cjR+sR2oJ46Eub1k5gJyz3632b3/t2cte1OSB82D96iaX6y8fHY5i720P54tuXUZBbCBD7mOA0nTuEACUTXNpJMyE371cLhkzmOe+hI5chbjWEkIYLUsMCo0ZJKzVOUgpYwihuokQ2X4EvvfymZN1Sq07sTJ2FZcNj16CZnZiiKqzRApiJTPzA9e/8x6EG7ViVgVE7OoEgEjEWL0yw7zGKKruRKPZYW6oiT3l3oeYOORxqXj62iNJh8u+lN+S7GPgGIhh5A4wjGDQUJ2IRKSYK8GZNZcQQrHcgruQVpttO59npbXZS6d3V6G97Eu5L6iqiJCwu18k1x1wL0EH+FJ9QNdZttSsy9khNVVGxXysB4K+g333V5+57CuYPIj2+2k32S9/aHHQKV29cnQ6biRr27bbPEoUNwO9MzOyb1YgEU5CPI65H8d1v7XIaFsu5yJkbNXUiBLFpIEGr5GcyOBRAhGLBBjcflOuaD994OB6B92Mm5FLTQC5mEuxBlFBHpMyOxyuClV54GoT72U38pSZiJmYiHZNBNikEu82A2g0A3FAmEk6Sf0ag9n4kMQPz47e2yyXTCJ7UhCA3XwRhpG5mxsAuDoAcAWMyM0ScQsARozj0K4tG4twGhE+t7rzSilVok85HQCAiOzO6u3AAXcHDtdhmBlqWNSzrRxk376reXgzrIrPg3dEtaL9nq/+xmUvf/KAmgLZydvnez/5ST3vvYtHo/cLoW0lltBGc6PpQQIA8GwEkCRwNJbebK16dxhvtMuqntWkacBsbhUaU1A3Zt41PFLdHbEKISR3vexL+R3ZlLMu8SPz2ePt/FBhQz+S9w0Virla4phIoGrkRg6mKZDdYXe8tuVtgAMONvfRBmKwcyMNFRIK2euAyml8ROIHm4NHQ9MKKVeQdSmo7UeGm0FwUrgT5CJyhxCLBHKASd13/ZhZvXV+2WqkVJy+cHbn+WFQFW5mJ/B2Py73LbcbNutwAMxMIBAJMSU+83BgTF20fJri8Z1V/2op3/N9f/bs5Pb27tm/+NVfvey1Tx5cUyA7eft876d+9+/543/4y5/+vxuic8sHbUdjHVyre5gysgCAIOwOdTXAgxhzho/Vn6n11X4cRxyGdmYUoFpHl4LK7BBiYWYiEBxu5rQn/TvvxcUJrqUPboez2fF83rFgM9RGbMyBoWyDqRN3iDOPdWrXBQAQ4l3HK3UDdhGtA7QAuUl2FIcESoTAGrh+Ms6vhbhoE8Rqye5eSEf2YHvyYmBw7ArQGUTkIDiDtjqS6oxC4lAdmSUTVUlfWq1freWO2lCdpc0sIGlGm24/X+fufNFHjX3XBpCoJ52PYz3wdrUcD0xht85WN554+nR1+rv/0T/4yf/mv7zsVU8eaHtyt5q8Izz/n/7Yr/zdn3n1Cy88u/7ah5bHol5M60Ebz0cL05MEAITcAHcyuF00WWchaA2UeNSBkOfkNw6Ojp26ajWyaTWr7s5BHDBiNQt7/tMmZWm4t2xeWT0iRYmm7CTPnN28KT4KJwsztKoYqoa43xnobxSGGeC7xld0MZvAzIiE1UMI53lDLTVanp4fvQshsG+taOBiyuatRLibme/JoaWvz1wwgrvvmtYxc9Ng1Q/EqaEkGrbAV8v2Bd3OvNvmkYMkDk2Mw7AVQ0syPHgzud7ALqPv7ma2+xLFUM81R15u/c5Lr9SPHL5nhc2dzfrPnd2+7MVOJnv+tJvsnb9+43fp9flXv/rsx8O8P5JR6+K81HlynTJqAKBadmVqzFyrya6fEfNoNUpg890HFZqUXUet37ZcMnkKMK3sZmYcAzN73fMHMzdmFbV0EgJjqyUHKgIq3mQs0+yO6Zf79S3N8DSjxlEue8X3BXbsWmRcxCJa2Rwwarqz3KfEy7F+8/H1eanSyklZg0NQn0lT3QYoBUmKpBhkz36PF7lDYQI7Qdll0CTdbSvP9udn1YKFpUkfQ0fBYKd1ANmcEIUHMtZpc/LCRXWBX1QXgAlA15f1Inzl5gvvvnbtX/5j/8pP//TPrJ4/+Wdf+vXLXuxkAkylBZO32X9/+uo/98nf80/+0T/+k3/vp2+gy4yx5cXgdUrIAgBCiADVqgBBLYSA3aOlRdEKOEkIIZVi7pJie7pZbQ3cJGIJMZgZO3k12pOM2r0kd3dXNwQxInVnJoIdSFNIM1nj/nhoH45dpXzC22jxspd8f2Byd5Awi6uiVmF0Md727WMSPt4d3YgpNbTSjTMaDx2H6jaKO/kMkpwHq6tgaU9yHAoXAsHdTThQCAXYVmuG9Oz6/Nd186JmMz6SWaQwusY6DqIafEkxEXr2DEvqoOlRCADuTkTsIIcwcxBzG2spdPWZu8//81e/Sa4cnvTn/8jv+70f/cn/+rIXO5lc2I+71eSd5PM/8p+88rlf+dan3/dDP/qX33d0/YrybSnN3pyTfmuRiYiYVY6hlMJBVJWZJcPglLhoDYFrzUJM7iW0nse560Ls3cuDmUgjbGOpst8ZWbdBmjYbuYOqRSAyqZZRAgGBUExdOFCgUZPLz/f70S7qrUYkF31PmV2reF227cF89tRIPY01unlug1gGOFZzCeZqzLz7v8hZ1Gex2dp+ZLgv+hY7XI04VKazsZxtti+2C93089AI81AGE2JmMdSmcDVUcgnkLMZOZkLYk8NtbzV3FxEyNzNmdqbt0J+tz9917Rpljlo+Nrvyvi/98mUvczL5B0yB7OQSrH/or332S196z0c/+Td/4Psff+Io1n70QzXzuR+sh23EiupDtVml0FWz17qvu3vRGmNU1T0/y/QNc6/A5T3jlru0tVqrzUNiR8kVgYN5ITemi80Yq8EQDIX3u48vO4xoI/LMnTuFo1Zqm+U2lxiLq5IznI1F2cCkqsJgB8MNtDvXFJzYWXF/1dreqy+sEge4u1YxF2bzmBGc1sRtjLX0oLokf/Lw6NCZtJQ9STgaVXcnkkDhopUYyKFcWgoE8bH0EFYtoe2K1ugaOZZiHLtz9RdWq1NYT5jvyQCRy9J7bkJMJrvBJbu7KQFumdrFOQKKzwOXvG5Ivv3f+p5f/m//583XXvpjX/7K5S57MnldUyA7uRzP/9h/8Sv/2//a33l1e3v1zMnX3n9w1Byon2wtLs3ZmznnrZVXLR0z865NN4Baq+w20KevLgCAiMwMLMxstaCWINSGcC7bp9rjd3uKqllsJHX3WYrnVFsLom6qZhaIPYYiFOr9FcC9WRxxNg5N6FKRIuGLq9M1GRm5u6c0WCVIC47uWqpELrsRawAAhe8KARl0UWp53/CLyNV357b8ossY85hzF5wQs0VDZYwCl5BqUdQjkqfnhy184KyuBzHVuh81r6/1PyZ3r2YAiMGMWLinWgRtip1zyCilKFEJ8awML2/XPZOFVEdrOUWEDfLlXsh9bgnekvZQmLckASHDMiwGpnGoqc6cX3zu5nf/xI8/85nPAPb4t3/sxvf94GWvejJ5fVM0MLlM/9VTH0+Pvetbvuuf+bv/wfc+cvz0mYwH6vOwzOMqmZ12B7H2IYRaK4DdBigzG3zKyO7c63BP4EYjiucrTk+2yysh9MhbqZ2FXaxGTsysxAY3s7Dn7atOZXvV2yW3p9stNakan5F9rT89N2kqGg+xSSfrFbVJQGxKiAAY4u5OtotlnYn1/vpikbkzvdYXdrc2dncKmqp7oRIEQUKtZlYbmtH4eLs8psAwrrpsmg3yLRuOvbvcC/mtsosy391cLoWpKmC1YxlqVyWANmPmthnVZvPlL57cAfGgxcHO4tUFQYiMphnHbySzhuoJDKYeCpKGJCnE7Q7rvE/f/gP/5vOf/fnh9ulHv/M7H/mTf+qy1zuZvJEpkJ1csmd++D///M//j9tXbm5evhnmpDWTbVTmVbtFGuvoIQQzM7NdUnbnfsucXZZ7tVvqiy1Ty6S99Sa2YHqCZo+lefE6QJ09sbh7j0pEHQfV/c7IBqtVwBTKMMYmVWII65jntjgL+rnTm1uhyKmN3flmyymyOQCG7M61mFclmND9dlhfXqt8+E19YeFOLekIuFODWElHG65JfKpdiGQJgYioFqtKQYiITG1PRkCrIzCbGcxCCHDdXbgYeiinhiqJsaXmi2e3XrVxlFknsSku6gLKsCywwE3Z7+/zW80Dl1ICcSIhcyeM7KOrWzjG+qNrLz/0venv/J9p28drD/sf/P1PfN+fvewlTyb3NAWyk/vCX3/06asffuqpf+qf+N9/8C89sXx8fUTY3qlZQkgX6SizXVOq3X9c9nrvF/cOdEJhH6xCa8fckLirERjl6dnRldRty4a0HAapbLeoX9rici/kd2jmstZcIzOziOR+SIQ5QmWQcwZtU/zcrZtDCGQilSxaJXewuCQnmDvZfTgE4F4vKtW0C2kkG+t4TeJ7m24RaQx6mOXcchWKMRoh55ycZhyH+6z2915MXIjJ3Eo1MwGJiIg4pT6XMYXnzk9PzSwIRusoqYjBVdXMYpTAUuuuyvb++7e8n7QaK5tFNjMt2d1jFA7y8SNK56lv2+H5r3beH4yt/dU/t/5bf8tefpkPlh/+pS9c9sInk9cx/don94tf/Y//2rM/+3/oS6f1xdWv3f3yB64/1sbSk9Rcdl2odiHslIv9ze619cxQdmZmAsypkhdHhR/AVpSPQvhgOjiOcuY9W3kY8c6eP/gHtwVFZl5ZBvncRUAbK4XHNnW+LQu0QFiBvrg+vRtwRLKxMjiYQ+MhGAxq/PUi1PvFvUpHYjdbj5uF89PLo+tdM5Rt1fEgyKaihYDpzIqEMIMAONfc7cnoKhN3NcHFV5pCNMd2yE7t17ZnZwGbXOexC5WKqQotRjUmFcrsIiQgy0WcVKbDXm8kV01B3L2ghkhHFB5B+4i0W1+180Va5zPOPpNKxV+4Q+bh0Xf7uOHHb4RHHpcPfdvTP/CnL/sKJpO/7/66a08mf/vRj97sT9q2axfHv/Tq5z9+/aHtdjtruxBCzpmZMdUV/Cb3OgwErbQ7CsZUHGCKxOTYQo8gpYynvj3qug8vriwhJ8P5QdyPQOfeKDPYrFNy9yHAhGYuGtxzZQcHGaoiBPFoqqta75RyR3Mhjia7ZmXG991r0r0O823L5v3HD72rafK4Hb20MbnZMJau6bZeA3EcawhhjYoocZ+mY1gpyjEQy2Cmkgbzk9X5bTYUjwhCwQnFlIRDYKtK5sysNRsczAZv27aMU43sGxGv1IZx7GegpxZHD4dEpYAcgc43qxTjOoWZdBiNivMs5uFse/K17vGn0h/5V+3/+rRB5Ts+9d5/49+77OuYTIApkJ3cn/7m+7/t5fXtefAZ2+r8fLlYNjGN4ygizEzm9+Eu8KW4V3smDnJxQg7OtgtzydxhVAXMSEbuPlIlokj8LYt02ZfyO+Lsog6wCgFgdYMbU5dZAwpbhbKATcWYQREHL5fNC+O4cSdncZi7Cd1vhwjv1V7tRtYStNjIpo0EpVBJjCNpJrXAXGAhMHIVkUJOe/KDEedqKk27LuXFk5MtsXfdZqwNCcWwzSWKcLEUpaIOtYSmLaVEFjOLEsA0jmMIifw+K3a+zyQdnrxy/Qgs4xATDzRubOQ2xLFR1FkgLaaVlpJOZIjQRIftBqcpd7fuDIOlv/Sn/dOfqckPfu+HHv3Xf+yyr2byoNuPu9vkwfQ3brxnHMcgTScHX1w9+76HH6m9LkO3KkNEIQ7FIRLZYWaIVOGi5K4AhNyNFM4chKPaeNlXc1/b8nCM9PTh8bKaaJGAvg5p1vCWC6o0sVglolJKDMngXFVECDAzwCCsDIVG3Y9DRU5stQaWEJuzsbxwfnZXzdouVOcY1DHkLERReDdijIRVVUEiEigEF1Qj95Ffv/Z0VwzAIPr6WwRBVQtRUCQDwy2islVyd28LXKi4UYgAoBBiVifhsY6hoZL7wxhuLI8W2ebEG9mPmteoZkLOZF6tulBgCeom1SkyiOBaTQ26+7hGWZ6N4+1hWNVamJlCgLNDcZ+9YdxnWMXEiTwKbYZNDA2AQtS5je6QkCT1ZQjBljm/7/ha428uY50JB5X6aKtg7xoivnDzpYfnj37/H1n91C/G59fv/Y1ffGsuazL5LZkC2cl97bM/8iP9z/29nOgjP/qjP/kHvivQ+fmMD8am95yaztVQNTqJkLGdDet5OgB2x57cfTc0/GLz/bIv5b4mIGhNgXXs511819GVppSovm0smTcKMTjBWdjB4DG4lYueaLtGv+7uTLIntxQlBCFULVmRojfdaqy3Vqs7ZJ4tUghtZ0ylFDZPQE9ILOLmuVY3FbIIY0r3iCeNXutTa747e0REu8QqEcFcHdWNHQkcXDbBGRQYVlVVd6XPIpJpPJZ4Y340yzUB0vKp9iXhIO9HDWgOzKW2SiI0CCmBnajoMLMwenQCSQhRi1XiMfBzd+5Ux0isEp2EAddKWl324wXpshTWpnKFIwXkKjGo00zpbhyXGksdR9hVDh9eHAnVTWtdfnP3Qw6xnK9nbTOSjUDbdv35uDo9f+ToXeWRuV8/mP/+f+yJPzkVzk4ux348dSYPoBd/4ofHn/+Z0UP+1Hdc+dt/58XnPv/EtSfutvNfuPvckWJol2PJuZYuNgGuY45RQpK+7I7FXMwEwm56uLnz9FV/I0HDUAeexcqmWmaKYwqPH1w9sHVt5LwMQmhMZiGNYzEmZXy9XtkNQkTOAJz2I1O4G20Kq64WQgqxKWr9mMd2/srZyaoqk7hC1TUGjTLr3Zg0uIoDJnA2Y3NY87p/3+C7rx/tPiL3XdOBnrcCZhBBlNmNxFgcYHK1GFi1MEMa6etY4d/eLRWe2lhrcffEVPIQWJzj2/uB/TYJxa1nCEdmyUpqKlyElqjnWiV2KBghXzk/793EeYORWZyESNiZ3NgBMsO+13C/tZxrZqSBOmlGYXJ4ybnBotBKypzoY4vjY5JTPc9ejmPTv8nKizninbqNSToKG81DCodVrpzoq1e79StffOjf+Svjr//q+NEPffRf+/635vomkzcyPd0n952bn/jk+s5NfuSh+Ef/8Plf/XcHXnZXHqNS0RYJlbfIs8X/c+ckSAQQIKYYrSKlkTyq75Kvu1M7Qgxg2pr8h1IK7t5EKarVijBLrY1E19WNo6vX0ET3EXlkL5qbmEK9mGzpTADv0rREol4u+1J+S4hIVYk8RLaqNRfmMGvac1VW4pjOav3a5vzcNYRIFTXFmgupJRJmNq/qzsx2j4DyYrwq8y7cN7NdXrYhs6pqMCFjAtOuQjcqhjKglarjUWweXyznox2QCOVRiybJMDAnFuQawXlPXswCh1rLrl7ZCAJK4GAYrSaO58K/dnq7Z4klpNSe5TG1RM5whwLmgO0+QptKXt9Qw84qp1BjOVIyq73kwxit6gcPri9MNzwq6hIsEm+X7Zxf/wXsXnSs4XA25D4W6zjmWijEWWxW6zNcZfn8q8Nf+Yv4H3529mL/9K9++q25xMnknvbjbjh5QPzGhz6m4yqaXTl+6NVnfm0uiR5/FGWzPbQ0mjeL1bocz47Pcv+Ix1fr8OXh9C6cYhMtdhZsqCUZMzu9lgYDyI2BKaPzxjwKcpVdgUAQj5K1mnsAUSA2XVR76uDwIIihZqodhWEYzGpIkYPUYu4kIvfbqf97CYgGNbiRA0bmuyYPy4oN6hgFHN1IQntaxxdPT9a5xNgkie5UDUasxM5Etn3dv797d3L3i1qC10Jbo5mYRwKxO5lqIbMA2iQ7oHRjeTzLtTVt2rguGwQxMzKPIZDDDA5UchYh3Y/IrtacJDQc1DHU4oFZxFQHnn359PbGjZ3a2eJkvZ6F9iq3t30LsBgY5AQjM6gRxKbf7xvxbNylzrhYOWvKbByf9OaRg6XCKZDmvmGukc+tdtJ1KsXf3AjfLekiNOgHZnYmhUN4td1cWTR3i6RnX+pn6epD31yvd+kP/eNP/pk/8xZd5mTyuqZAdnJf+OLHPlE3t1yN2utl9aKfn/GNGxzOpD5cI456ddTbjc0zOok0lLNGd9uVQdrTbf/Can0ulNuUtj3AxkQSsKsr8ItmnJM3IORaqhCHFLP5kMfAsuhm46ZSkCJ6njdtJ4eOp8L8EW5u+nbeNYm5lrHWzMwuwcwE+1G7ySZOMKgBRMRC7m5myjUpZhQUvlV1llbaWD0H0Rjv5v6Fu6ebWmM7I8jY55hef/SrMDtgZrutAGZmh7uLmZKZeKUCzQdKj4b2oWYBgbKFJvV1UMshBC05CklaqOquBJle63HLwL60/Q0RRd2KBaWG29rIK6X/6vmdEg5S8UB8brlpGilm8NPcH6Y5zAEQOxEpYTdAeApk35gKWS5Z6rWQvrk5mLtvpRTNCWwNZ3ZX66Sh4oSQi3J8cy9CgTjDzGwe41jLSsfFbD6D8LBf5ff0AAAgAElEQVQ57bvZ/DDZV+88tz34wR8cP/OzH/jv/qe36DInk9e1J7fDyTvXZ/6zvxF/7qfiSy/PV9vh5m9Aa3z0I6GeMuablMRWS223tUr14zaeUl+3W5k1xjNhtiGzeoippua2ji+cnTC1Q61VHSFyiGYGU2bel0zhZXEtbWrMMGoFk6TI6qUfGg4WggntgjAyNTZnLAzXDw+PUqKxRx5TShwka+U9+ZjtYkQt7fL3qupEIgKzCgMQ4FFB7gaujL7mLjUMruoWozbpbu5vnd3t6+sHslpqjBFM1W2XlxWQmW3C+XVu3xPn16QVt95zZkUKqZqZGRkRRRZhtqpQ2wiLg80jSYhihOo21NLSfrwwrH2cSdtwczqUl7ablStE2FiNTUhAVFTZBnakEIlT8d0bhbuDzHdjEYjut0EV95s+5KssHwjLpXtufLQ84whwsQJhF+7HPKMQqoO4BHqz7cnarOO82XqNxRI4kwOIhkpxE7fvHuI6HGp4Mb9wEp/8eFjT+3/tF96aC51MXsd0d5hcps9enflHPrH57n9p/hf+BHzWLh4+Spu7iYZWHz6bj8GKaAm+HPxsEWmrBkYb29HIFIGrayCwG9SYg8JfCN1qsz0fBqVAEsyMHMy868k1uZfMHp2oGnMwQoXvBizUNIoSZzTSlKIeYiV3ApPymK8wP3awPGyilVxNEWRf+nfuDnuJsZsBEBFzr6ZMnRDcarWCyC6sbu6+AKub2sUcYALEQI7xHofp16dn8/k8NU11M7NdRlZVmcOuxoCCGBOqBkPjvE2VnElNiM1J3RCCMbWDSgiVvEBVFbBGAjl0T27dS4qvDNvny3gHKOBAKZpoUUp00R83CMxDMTIPxD1XZvz9AbPm5E7Otic1wZfl982Wgw8+k2pjckdlTm3ONUaxIS+kLaXQLA6kRXNDRPZmX4SsmEaOkcX04rWCqlUUSq1t+7LInbfrr5zPHn1v7k8+8uXPvwVXOZm8vunuMLkcL/z4j28//XP15svli78+B9tjj35D/qxUcBNHtd7spfPVWnlDQqnpaq3VUtOoKgmGMlgwCiL1YhAAOYiIHRdNu+7RH3SyU8SYiKqJ6mFsrs9nByFyVZF1MKA4hFUkO0QEBnKPIiUPYFKzpmk0l+BS9iOxOLlgu1nIas7EQdwIxoFYpSBXCeE8567raCghxF7LL62nCVtvpEKInNxhSkSRIxGZgZCraZO6nDMRKdQDlBxbaWfdqD0HF6uLqk8trx679HI5fbILCfO626R+Puscw/bFfi0pLD783LOXsp7Jg2kKZCeX4AsffT89/Njsu/7p2//+n5f3vTdQL2+yr+G9WFUwKVyaZjQaHLdXfV/ypknKyGON6p1xE1MNvqXS1IseUrtyRiLanTS36Zj0G4pOYDKz3dn/RpjgXvIHrh0TkRCLG5vB1bCbIAqkUF0TSxgVwBbmTUh1+pz3iTg7AQy4upoTlFgJh0a3Nc9m81kOG7fPnrw8RDkIs/U+Tce9BGHXIpDM3Q27Nz6vBooOd6HgYHcPLDLWDnTe1EbRFnv30eGya/LYxwCoXVaXXS/wphftKhgw5rW/XA3+oVdvXtKKJg+iKZCdvN1++RPvl815Ssvh+VvpfU9Ev6mrQ+q+MQENBTIzK5WZjZhYipI5/b93bs4Xy1yNmmabS4A0FZJV24v+Bs7EDACqamYi+9Gn87IkZWcygjIMIHZ3Vy0c6IrKE91ixlSpmJjVvEhp40gKKkoxlEAKePEZh31p1zXZiRYUyoEL6m42bBMiivYSZho2bp9dn2yZ2pIkNS/bcG16xLwhNgUAdmY2sLs7XbS5qPBStJOYFFHC6bDxNi7s/D2H164itOZWSxWnWexLjpd0GK7VsJaVyawz6aGRR35uOzI+cmsKZCdvn2ljb/K2euFD79ehL4u5vvLFaw/dGDHE/4+9e+uxJUvuw/7/R6y1Mvelqs6te2Z6pskhZ0SZkCkLFmCYsAGZAgx/CMOv/gJ+8Isf5E/ir2HLF1gUJAiSIdmkKYomh3Nhz/R0n1vd9s7MtVZE+GGfoWRLfYY96K5T1Z2/p/NUtSvP3jsjY8WlPor9NfyLCRz7mzNPEZJmdBtExqS/sX1SBC+Orx0xGnIzHfIxMwmd4oAHAoGgCJNIrDfgt7KERhjf9M/TIc7ENBz6Qj7X9mfXL2brT8+flpA2tz2EiU3YGPRIFimgKv5AampXJwcuEbGRlKHuwVQouizWZPij4+UPllsij8PZ6+ge8m3fVX6+MU9fNz2zMxy0U/9Vd/GQgDZsJGeioR1l6ahPVP79R8+eDnImqr2B0eHNm5A5+K6+r4TapEdoBsMjubya6oH4Hw6Hd/J6Vl9P6916daf+8LtPH2+fvnr1s2ff+PD5zp9eX1z5y03yzvKF/PxwAZ1805Duv9CK7JCxONJwFe2H15dzScfexJRJVTIg0Q1hCqqgrwsU3spSnBrpSNLJ7kKKCEqab292m23POLQFrb3v6W+8/6H5JUXCHc3GlJVSoy29pfTF/L+v7kYucVgqIo0opac+pJ95+/PDy4Y0hCh5NMuixZXkZE11vcW8ldDe7NAmAEa8Kda3mKOG2F7kexePLjy81VSSkO7eeo8kSCoB8WAzT+8mIzv3PuySzrDoEmWA/KPLT73bf/nzV+/k9ay+ntaM7Oru/Ph3fmvp9vHVjx89+fCGQ54PSy7n0KvCzznW8DPlVMIRCHOn0BhQCWIDOr1Kh7dnqVxo2Y+l9nlQFXe60yGSRJQI6471BvxWqXtyKCOTpFAYqlCZ2UPIpDL1XZR93l4x/qzevl4us5THeZ9bdLfJG5IMJa2lyA+LW+w47mR8YfYH89Uf19tbx86LhwDiPKVGvHujWFLEuojkrUqXBAoIIgAqgtG9Tqk+y/l3to++p+PTotXmrpUZx7mWUoZSzLz1DlWoGt/ZVW7KhCgzMBJpM8/xDw8vZo//+fhums9WX0/vqkZ89XXUrm7PL84Os+xkN6Z2K1nq0TiW44Ly+VYmfuav6DOAnLOZiUi3fkp1zEtLKSWVJvY6ZhY+hj4ZH92OvJnmq2O9bXOjMGWkpIlm69SCtxFJAILuHg53MNy6QxIHU+neyIN00EvSC6fw7MfH+tHx5dbi184v9kk722Wd91xrkR+Sbd995Mcf2+21e4KceXKL194eRZrZG6lJKdnde2+pxXqHebuQgADuqKb/ummy/a39s4bOYsfel+YkEamFjPtxOUwtkHPWnGuzFm0YBvR3Mx1ioynq4pAk+hdRb1ufJ7c1P7a6W+vXzOruzF7bTz55+v1vX/d5qvhWip+Xo9ymOCe+qFI6dXeYtd57zoNYKF0jdLOf+2JmQ8lsppLmVpnzfp73ZXyy2b+u/dNpuqnNojGprFU3bzVDyGDIaWxQkcxT71c3TRIRGRCYWyi9urslSblmvI7jq/nqovfvjttv5u0t1mavh+Tv99fZQhp2kZiyMeB9p3qtPQdLB1qPYFbtMiwF2dfxW29zTCYkw5X/nzF2CUciwhk5zdW3achz5CatzFkoIg6zkJQ1NaTa+ztKybKZBj1rX6Yf1MliN6KsI19Wd2y9W6/uzv/57OyY+6+998HCXHtsyjBFrVEfMS3vaHOPISSgCFVtkOtuL+bpcp7nYZ87lTJ3SymxN0mc0La+WdBMAxI5qC4wz5JnrjfsX8WZ2QfnF+dJEqwtt7uh1GhzWOLW4STdfdCklFor6J5EoBKAgwQkenj3VvjFZPS/qowgIEHGm73NEJA0QUT0XrOokBEhmi2QWK97e4ZdCyLST5+/+tEeU5HNsmbb3ibiFGWGu4eEqkZEN5McWDyHZk21mW5ztW7RlUmW+YnKd84u7vNikdA2INcWKDlaH5kW2OT93MzHzYtFfmg3800Mefyz6+dm/veurt71S159jazfSqu781+fbbddj2cb5DR4zGGeuGfptYW8o5SCiAAeFh4MJNWxlEfb/Xd0uGq3R1+2onnIL6J24Bm3N5xVOEJLjdQCgin5jfYSay3gr8ITPmmH6zqd5XHMZSG641HaL33OQAEZDKAzDEh5cO90j4CHBwAQAhVyvf5v9YsuIlAYShdYeA/PLlCFSFYdQ8QjGDP8bEnLMLyU+MPblx/32iBaxnQw1/U6vw0Jsx7uQioo3TUwaNoeA0nbkGsWSKDWmJZdzvuw7zx5/K2Ls+S1z5NmpqwWft8yTDvLL71CZQedo9/4ssvDOfMylMtWn9/M1zRhzlo+PrwO4vfndVrF6u6sgezq7vxXZ/skQ2yKCFXQxcW8uLjwXa1SjyABIQgSkcCBumNyXX49j4+G4eN2c23LE087Dp/EdJ6SOxZYaIqcSMJd3YRrlc6v4jLFKNma/Xy+uVyWfd5mKS97e0oRiiep0Q0gEB5ZVXDq8RaSTgQgQQHXw6W3S1AAgTiN46AEhUKUTgmEu4ncik/hheks8guUHx0Oz+fllsIyHqdaKUMZbV31/FbuPSUtSVUokNOQgd6756xUWu/LIjmS+3uaf/vRezvpj4puCHoPdCCMjHC5Z01yi+NcMpJc9uNjHQbwyFjMPo14cZxvarQCiRIRP19uCP7DNZBd3aE1kF3dnf/ibHyZ8b3x6Ui8wrEkjh2Lu5YS7+ooLUBCRIMBINxhht430V5jzmP5/ubRN4f9y+VwtPkJ0yUqkgozO7GY9Z6L5rH4usHoV5IaQHUVCekhr8Oe13o9LbuxTECHaHAnqUC610bLkFMiNoQk35yS+5txtqvPImAgAgAdCESkQAKXaLIdWzjmfuHDfnP+HP7PLn/+2vWyt4Akl40MDHrWiZ5ifZ+/DSkRMA/z8KAD1JTKUMWONoH2WPg7589+Y9juNUzs0ZD6PLdlEmUq2R3hSHLvnoqz6JXP26Qblx6+k0319E+m5/PCY+3BITLZSfPLNhP4/XmdWrC6O2sgu7o7v7vNH9vym/v3ziUtbVaBaoJoM5d3FIckCBAebnAHnBAhlUuSDVLpvJ1uKf6tMn5wdrYZ9Xg9DymHIyiSNOUcgsPtlNK9u/c8CNtI3TpFNA+u6aYus3mk/MN+NJcn2GyRO2NCB3FWSje4x5uYDFCQPE0Nfsd/yD3nCBCqKoAAchrBb5wvki0td2625889/uDTT342HdP2vFUbUmFKvTcPlySFYcsist4y3oaazCNATdnJZr27Q9h580zz37x49u08FrYeS0oosGZGIVVdxEMEqlRhCtyvGlmPPlDm6OEcLf9U+AfHq9zHRg1QkVwtdWTqq+WAwD9YA9nVHVq/lVZ35z8dSjfWwj31fZYmmCSUSo93lVD7y0yVn+ahKkPoCC6wQBSVlIai4rax2Ft89/ybQ8TtdONqpjH3OUlao9hfWc0YmSRwVSdHnKHsc1ngj23zui0/tNvXUTdazlDc7AiXlCgKIf3N6HhgLSv45eJ0pcJOO6BEErVIGnTq1+4/aMc/nW5fLZU6ahqnakPWaK3TN5JVMLcl9Ugl+5qQfSt35lSUjFYFts06KtCX3z17di5MGW4VvRWlJ16jKRJVIYKQCAiJkIgA79eFLklmt23azMj/9Pj6JZkWUU9dXMgkuXHRLir66fEGwD9Y1tKC1d1ZA9nV3fm9PBakVhjAXrMm6eYpoHxnX9sOD4CkUkAi4BbusdESSSB0a733ufUgM/Umppzi6ZC/++jRY2o7HrqwZcr9SqA8GOJ2YLPEXcg+lYm9opelT4iBea/DMfwv+vTTNnvjM57fsolKUhWPiC4ECcOakv0lQshAuBEAtYkeELeIf3l1c9WiLkCkEG2Aa0j4AstBCHOPCHhJCpkZul7nt2rhSUK8o80Xwg/Odx/stu8NaeO2ES2EMyZ6S+ItzjBCJLrBT1tE1N093Bnv6oTqsxyBwdIV9Y/mm0NHRq69paTdGhlZU5UqRhF5Pt0E4veXdaze6u6sgezq7vzdPIT7Nx4/OUi7mg9POVykUununXw3zQ0uBEmQAXiIQ8kkWjVOXVwwL2mQlC3na3rEPI7qbWZfNipPdxf7cTNfHdrazf0roUYxDpQWYYJoTRP7IAls8CYhhq0VNX3V7S/U0vFWRIpQAoygiBOOe9ccc994BANKppRM9Nbs+XT8+OZqwa7nYVaFKj3ULcEQHZpLcJYIiAlrltJp7+pT+nBIprV5q/rh00ffOT/fWh2W5YKciJ5x6BVE0bKJ7FMfh21rc1JVEu5wp0qkcIa+q+7Xz5Cs/N83r34a1qY455jBLj7lNoY4jODMpTAnyR9P1yR/f83Iru7QGsiu7s5/NhRHPNvsR5fr2m9UUykXFG1zHUsPj2rbNNTaRCQldq/kl/sWlb88lz41vgve7IoMkAySooEgQtxLIDOFUSSDyQGEDdHf3+b3NuPxcFmlW5FqVmTYxJAW6bIolSIRERFZVKh0dBglKL/4vREMl+A7q7F4V0KC4qdd8wERRYgYT4MJJEDSGSFQFfG4VvlkWj5d7FW3NO5U0khJrbkowlLSFpZygYUiuYfAROgWotJ7FWEPo8ZDH9dlBE6jNoII0EFCSIkEB0AFLVxEutKIobVUxonpdegPbg4fz+2ymw+jIBiWwiX8NL/DIaBKwAkNkiCQLR78JfuVCByOACCkKCEKEdckPcLBhMZRcniPbLPW71T7zm774W44c2ebRWhJJrpC6EhUgSDCwpmlR6MwcBokwVPDIoN3EMVuKN2aSYQgwin08BCMVZ3OLG41p9TAS+cPb27/vFljglOERu9wgsnFSQbEEjLoCYbL5Yi1tGB1t9ZAdnV3/s5moMp+GBVwJYKxVEbk7ShL3UJjSAf0Meep1RApSPerUuwtwp9I+d7uybM01lYvbbrVNmXPyObhzUrS8KgSc9RWsEMWCBxwMPzNbUzWMVK/RKKqFKUsS52W5XY6ehaM40WXGt4iROhuR69B7FJeEEE6ImsiRTXBEf6L4toH67PmwjaNBtvkXOmjc+51C1XwtpRXtX58dfNqWo7NchlFi1JinULwVtSxdxfzkULvc5urNN+yGQWSJc2sS6pF/d8b9n87P7JRtyVnFbp7GEmeTg7u2ef6kl0gex2Sn7r+KIYtc2f3InMzmuQYauhH0/wz7+WzxgsSiJBQSyauEnyxHEiuzV6ru7QGsqu783e2Q4icD2MRcUr3qHNzCd+Up66X7GSUYKVL830abyQeyrifMatHp2IEnkp5VgaITTJnbpxsCivigkwMzjOkZggLBEUg1KBAYAy5Z0eK901UJ0AtkOyik/ut2et58U0pqQxQR9D9ImXQX2HOSCKnSV2wUz85UkolHvg81M+aC6sFyfy6T2dpcw3bp80NnEj/6vr6svnR6TpAB1Cjd28GXd9vb9OXOW8yxjzRmvhmGLfMabYiw23USZYLjd/ZPvrtvD1TXvthyFnjlHJ1UEAB7l0UC+DcUpCzoroNoSO0uU2MgJMqeZjT8MfPX/5sWSrzIGPgMz4v/1Yg+3I5AOvUgtWdWrutV3cnIgKdp+0H7qRGlmuPw83xB/Ptf/SNX9M6L8txIGM/XFrdV+kP5FHrJhYyxJo7dSiPJG3mzfd9+MfLTWE6g/hNI+minvTKPAkgog6+GYzqEXH/7nf3Tspijm41IJ40ZGjRo1k/TrUvO4vf2j3eS5oQLfozbqbeKVAREaHCERHWe3xlij0JRyAM6RQ33baJ+Mbm8ac0VP4f1z9PSE3l1oRJtGSHRDfrTcGU5RQHrz6Lb1Fjlgo1SqTWUEnK0OL222n4jfFii3CNSzsIJYmwm7sHcZpzzDdDj0/76e6RhSaUMTiFHyWypGRyjjwxXnj/4dWL2XQ/7kem6/nYC8q7fsGr1Vs8kDBh9ZXwe2OR4NPNbghxD6SUmRw4tprz/k9vXt0cjx88fiaDyrEO1eaRDyVDmTuLJNW0hFV4AOqxT+W7efveMJwNw2RzS3KMrnkkNZKDdAmLcPcIF0oiH0gC+p0hIyQABN3NCKhoSekwtRFljviIy3NbztJmZ9k8ylCICO9unUoQIWLwe5gk+1w+ay4shq1K/sQsx/Cn8wGRngsjbwZRQsI93EgXkhLk+vD0S4iJdmpokpSSagrQAv13zy7OE6nWMWdhCQnRBRgICEihCMlTjx0i7tvCjiVbN2O4Bodcsmrrvlj/F316eXkcsCkcD73dxpK3mVb5Wc2U/1ZG9tWakV3duTWQXd2dvzuMQnk0bAvDCaqEOQAmNueo+bXYx9PNs7xLojZo6u9uwOzntInUiUWAwAZpgCzRD+KMhWHnw3CRhkfD6PPSrNW+wBvDT00kQpE3iVlfA4u369ZPKxCSCiISAHcCT3Q/ETVxZO49Pl2ON245j92jg5LVAYSbGZVJ5Z7Nm//cPmsu7Cfuf359dXU9/fBwNWK8Js502y2SG8wUACInOZ2OtN7XBQdvJ9hJKj2i92mj/Tv78Td2w4dFN4CIS0IPt2D3yNAti/F0BE8GPN40iVFw32rft5rDXDUr1Ruvu/3Qjn8SB9xKDOOc0sHq+WaU1rxXZH5mp9+/q7SAwP++BrKrO7SWFqzu0ptmJkc4w2FApGASXdRa5zex79H/2e3rAfHb+0c7z6IPo5bxudbRuY/ixASbaIk4Z+opqttNvQ1NKfjdi12WXHL+w+efdMfCMGWIEOLWaY51jNdb5TxERO9dlTCXnN0dwMfteid5D51ai/BMOSr+uN5sjrYtw7PzzahlVMSywODN+NCvswAOdxcQ1EaZ4T36D29uhanu0iO9uG7z1nSpUw5FAkkRsdaMNPOUUinpdPVWn2WR69zsaS4fXDx5nBRt8XlS5VVEAjdShiiiWr0Z3X3p4qcDg4hfFBdIBJxxvx4Ypu5eUYZyi/jBdPncm6kS43YzeusZJkVe9oMUniHr1Je1tmB1j62B7OruBODhEDrdojtQVCVgve4lXNLzPo86bA55yPyz29vZlt89v3jXr/qv5H2Woy9Hqc5gIFNc4sgGZ84DlzqILsu03W7n+bDM/r0n710ty4t5vu6tiwlTIkWzrTWLbxWdqolCSalFMxGLEJHtmBZrTUICOY+1VnTXarfD7qYuty8u9+ofnJ1vtQwqvrSHXhsa7hFQiqo2yKHbi3m6nGfP++qmIZf9qI6FPqQUESbi7ioCTSlliS5I1m0dv/t2f+d8CIghPOrUIRTNYwTOBN186WFmRRUqEDR2UgGVABwkINEjuvfyJY8R/LxM8p9Pr6+Xm16G6raV3cZLLHY9zIOKtV4EycChzOYYx+T9r/7D5WF/tlYPz/0671h9tf29i3OCHz5+shXM3ply6gS8qav/u++os9ojw289fjzOx/OxTG2udCNCNgnUsN7raUNsb22QtCTI//9G4t1b4XC3f+svERTvPYmmPFwt7aObq9fmPm4cFuZDGqS7Naei0TyJdA/RFMyh7m5KE0/BdXzS20kghB306Nn9PKVn4/hoHDf1GiotLDS5gcExSjKZxuqtC6giEjCYEw2ev+xn/mgiEhHuEJE4BZgq3qxIoqC59fBEgaiLFrfDssRmP5EfvXp926oOY3NL9yzz966IByQcwC92ZLl7BFPo6TqLiCG6NyUCNnC/WMeQDtPtbtQz67+5PXtCmeRhnAiZdIGahUrqvaeUaK7CBSzCiD7P86PteV3iuuQ/uXzZvqD3s3vXRPHRZa5OMP/85QtH/HdXV1/Iz1+t/irWb73V3fm9cQRwsdlkoodTVJxAuHzm2Kkt87G3T9v0utU0bHLINm2jxyC0ujBcVF3ZukfIdruvvdI9An6qQAUhUPnsGq93xBkpC8KWedbMRxcXuzL6PBHwpUZEz9qGhJRy436RPsrQA4ElRZdIzbK737/au3vHe1BERCRRaG5zXS6nw7PhzESdIqBYz8IqfRkMcxdVUe2IGg5V0UTIl9107kJIhihVqRpAN3P3bU4T2hJdiCGV6m49dG6vRD69PXx6OF7NbfZQHTRl2PpU8wuCN/sFPOiUoFKzpok1QxSYe1/oyFlEkknVvvgxiz8lfnt38UEaNlluveoDGW+hpw0ZEVlEgaRYvM3RH5se0VnKqMO1yL+4ffmzZRmq9i9o7JoIPSxMJEVQhOkwHRD4X5e1RnZ1d9ZAdnV3foVAdjHPqSA4QV5H//QwDXnceKp+HFPaljHMzayMG5CHeRlViNNaKDoRgLyZRn6/Aj6nEYgwwrPqKDIi9sIPNufufYI3mPbIRgS85D4dWknIOrQYqDZKJMhcQ9fqoLcRAYOBAOCMjqjwCf4nPh1rv+C475pJT1hsAt1LEYqHm7sJQGbDsPgXdeP/LHOSCKAZuyUHQagg66UdNsEzybU11SyRDsSP6uFVx1XzOaSJBDVIOmi4Z89r74xJkCRUTylZJwIB+IC511BumfbUwTG1uhQh52+k/Fub/QcpbwurLaLIIg/lwKOgkOxuLlGjUpipW5brHDvTavwnl5/+sM6jD6NsX9C+qJLXYES4slC9O0i9vL5Wkf9lmb+g37Ba/XLrXXB1r20oHuhINENNi/UfLAdj/1u785tlmthcGCE0y4ECRrwpfgyhgO4eEXDct1rAjGTdSMlD8m7T7ZVIejyMlzZ9uBm/n7c31n4y3T5vx04OSjnf5+bapboJQhYP5TLmvPbqvJ2IO04tTRRSE5hBf+rlk8Nl24z98uq3v/GNzVL3+aJ7T3PM2psik5sO6b1nmfaJ9cu90KW7iFCFgRCJ6GiWTN4fzm7aMjPl4FL5rw4vr1XC4eZSBlUVEO7WenjomqH/N0QEgYAQCAkTAK6VYtiVcpT6qi2FfJ/pr22fert1ek6ANCCE1oMtMNy3L47PcM06iIwhICLQOiKoFDf+48OLg+YR43vYXfnc7PisbGf7YjKmp8JrpTabYdRBx1Lu26yx1VfempFd3Z1fISOriUtviUJDSUmT3Hq99vqT5TA5npSzRzGW2dysJptHpn6qLHiTSVGchjXdu7GhCZkkKBYIQiEkr7wAACAASURBVEQptPCBMFSKj+T7efNs3Jr4Zbs999zn2QkbMse8LJWQkoZYu87fqtOJUNFETadltQA9bKrnZdunakP+5z/54e1YXlzeXmyfQNsGaawoPaTkNugxarVavuRn/rMWBJpE0+gaAIZIOx1ezz3HcBT9w+PVj722hpHbY7cxZwHDzK2JUOhBV+U6vu0kkQi6uwdM4AkQhsZuYnfvya3N3yrlbzx+71lWjfY4jQzrbjUakiiTUMNCHkhMlhEdvnhPLEOMHflH0/RH081ls2aa8242CHgequjXnNIX9H6mINwYydEAyVoMERH/4/Hwhfz81eqvYs3Iru6162iZMZS0oB5iIiX3eJz2Day1/8Hy0q1fbMq39+cXgfFmadvCUMBp/pdzyO/bWh2cWk9+MWuSVCZGhLkfUyshBehWl1i05O8N419Lm0+eX14Nsmy0L0sIbEgjynjox/vVw3YfkUSA8EDAqQ6IcJ8O1iUNqP17F9/RpnPK/3y62dj1dy+evVc2Nk29desxULcyTvHlPjAcM0ioi0LcsZgfyWvFJ9Py2m5bUfZUhuFWZgLf0P3BK+DwZhHhTpLk+kzzr7lLCESC4vRwY1iEXw3yTd38+mafejPpEktIE8jHcRhVN8w5tHZvbgN5znzE5+jWf4ci4gKDBV5a/Ol8eQmg8wy7qpTuafKt07Vf0kJ9SAnti/m9ItK6ByPl5KHzPC/zzAcS/a++MtZAdnWvXfg4pf7KF1UfDKUzkBdn790ROo5BvPR29enLp1K+/fiJ9XlMWiTRu3kjBWQP6D3LVHV0BATMIkFYsyBV01nXydtNDiRk5waMgMHf/+b+g5Aj0x/Pz2vzfeNQ9Cb1+/Z33TcpCCDCLOJNuQkpwts+S0A6W8RURNxKcHe0SYY/vrn5F/7qMdNf3148k6H25Ro9f8mX+ZBVLBSEaQ2+rPPLZZoZt4JdLoPLEpZrv2Dx6D/vh51kEUkpJcDdzQPg/Vsg9c6EeahAFKRGpMAQVMj3Hz0xM8qsWbLDlhqEZBmsN/EGzyEbVw1ZGNeyPJQpEOc4+6gd/5/l9gjQ9CJtKusRbWyp06vVIWWoNBqgsfgX1cPm7qrKYESQdLfeeynr1NnVnXoYn9LVV8OvUFrQjCOz1jaqmnCCexlaILIlVXGJaqo58nDl9sK6Hg8iUoQSYARFnHC43LNaNxMXpULCHRFZVQCzXjiyR4aKqsFneIsQFU1L9bpP5Zu6fW9zdlPna/WWIq3dPW8ljjd7f1UgCIGFdfeNM4ESTEAhET1KHLRnbFPXbGLKT1j/7OblbZ0ebc4TvtwxTBuUw9I+ur390Xz42OqNISIV2SRCSAMTxL036V1sU9SRDB5BD5hHYlZmQmJNywIAhAKhAeZNzfaa3t/uPji/yH67Cc9tkQhndBVqcUdCGwzZhOQiUTOdPTPwQALZvz+9vDTTnrexiU6jM/oodOuySZO2loLdx8oRpUP5BR1SmfeSEyPN9SCah2EjOc3z/D9Nxy/k569WfxXr8/vq7vz3FxcAPtcc2c/LxK22QdNW5YOzszPBFh51OqaUKG4tgomiUpSpV4NMVLEekrS1JaXUw1VJfxg3sH/06raUMYJigtNm90GWaMmqBE+jJUUzk3qrImJghAFQRjgNIZJUsvk6Ludtjro8cfmt3ZMzKhAuvizTdjPUqO5OUgLuflrm5O4aPaihDNJBeEgIgOTdwDJsbueqw9iDkPTRzz5+Ma41Im9jAaWICBndrXkjKUm9LkMa6ezhDoZEFjVrEbEtGcd5F/GdZ0/3Wfs8qdDv2R1PBe4Op4iQbN46zemZW4Sf3lqqSke0yEh1c1jmtiv7aLJI/pPXr66zdJHhHVVAdG8lK22Y2tV2d7G0+OnPPx7H8b959eLdvKDV19JaWrD6SslIKWdFHOb5o3Y50p+eb3fjZntsCZ7z2AccYXNfUp83TIsIQZdIIikVVY3eo8cDGR+J//wb3/5kuvnR7fVB4CWLMXUfumcZKtxzNnGPEGtGg0SKfFr9DgZIiYiIbnU9kn67DYdba380X89WDbbN6bzjm5p2TCTltJkiImkWEYMV4dJbbwZNJCOCUFXVwuN0nEJ+ejxc395MBIdyu/GLe1fFfb/krL02qyYiSVlScSA8drI/9DYJmFQRqRu6JcbG+ze2Z9vzM+09w6d5olsZt97u14KDmZ0kCI1QMEnJJBBq4aCT9KB1E9QiB6kbG0fZXFn86c0Lk0EpF9y+nud3dScXEXeH2TAMAFprKanb/brIq6+8NZBdfaX4YlSJVFi0wmdbDodFj/N/8PS9m+NtaovOvhFuc7qVethImt7soHd3M48AkVJS8/qu/5S/ksv5k30Z/uazC4ReHZdP5tsr1WmUxdWqb11GardqEk6QMHeSgCNOM+MJBD1ijWTfKlwZIV6E7OiTS629Yp6tnnJp3i0ixnFUVavtbL89LMdpaVQBac0iIqle+3I4HJ4+flotiuasGY2PWTweRlPRu5JbF2EfkxMNEAs2Q7dXW9JjL+rNuy8p6XnS9/dnA5ciQK8MF0EpuVoc25Rxv8o3UxCUEJqFRShABDyatBRMKdXUD2ZU2YruKm+s/GS6vKI3KZLHl+141uozGa/wbua2nr5AAIiImQHYbra+jlJZ3a01kF19paQs5uhWA+JJQ4YWPZr9b5/+xTfT+Ftnz9jbEZ2ZmGJvsURQoCIiQoUjIqw/nIysJI2wtkxFyjfOdo/3m5dz/eTq5mrry9zgbMoZJpANhmJyQAccQEQYQimn5ifDmhJ8O8mQsWP01KhNsQiP0C75NDEgyECEUwCDtKnXih5CqIp6yoxo5K5sYSVxhHalhEV0B8D1m/itFg+oMAj3iHCKDEUGulqPXhSbaf41Hd7fXnTtvuF+Ee/d3Xt4j5CcVDPCcc9CrGGRSOKEKx180+/vYYnH2lPEFuWRDy7p07r85OYl5KLX8KSmENEzLUpcor+rx1B3z0mo2vsCMufcw1t7GFmA1VfG+vW5+koJOvS0zKlb6yKSJGlJG8vP2/L6+Mpbe6bpQz3fyFZTGsTdunvvFpKUQIiYW3og5eO5DzrIRJmiL/N1Rnkv5aePHgf1T+fpU5kXkZLSFsUMN91SDqEEERER4Qi+2eX7QCL3dyR7b7Qr8S4RhFLEIxsS0psaWeZARA3SNRDLkoQJOTpoEBFEhIe2XmRgCzqcbuFlMzgQ673/reYhqUUxDC5QMeGkUWGpXn0rbb93/qhszaOiGOZ5c6xTBMmcUkLuvUeIhkYI7lkkayQdLnGqXH/TgxUmUc51k6Rc1vaj2+trAdLgPGto4yZnSFvm8LlQoDzYMr67vm13T6R1y2UA5LhOkF3duTWQXX2l1N5VlUQW6eEaEb1DZCJS5LGXmfKxtdeHqyeh3xnPhCGUkotbD3d3l5xykugPI0MZOdfetWOvY1IcrR1Z2wC2+I3t9m+W7Uu3H0y3z+0aKNs8wKYwcSF/UbsJCGJt+/xlwqgwBVSE1B6JoPU6au8mIqrqHm9WiJGkigiA3ntEnP7t7p2eNYX3lCQFiyHVpdaKYW32epu9JYtwtTk5vaLH1vBI9D9+8uuv55veDj18I6LWTFEHZRcz84hEaM4k3eCt65c9R+1zmgcJd4nQ06hjCwVF0q4OP7Ppx354ab0HN7HZ9GzNxkFurVVymxOAW1sE8ph5eke7dFXVelUJVVXVuvTjcVrHb63u2BrIrr5Sch4ioveuSphLzqfYYkzaAtX6AB2gZv252PPl8myObRmenW9GLaMilgUGb0Z9GBnK4q1FNEQVGOmUBMBtn4Yj6g2XLfi3x/1N4M/b7c/i+j0Z5969e0Ak5QiPsBDBQ1kq/46EJomIajmMgVOk2jLYXR2MYDjdFSAZHu522lKgAEA6RAQim6RmZqeO9JQk69w7xnz/VnbcL9nc0ZwmGpmxT/hm2T0ZN0u93ZGqGlkX+G2rGjrM0jVUFYCFo795usiD3rfyTQ9DGKGSSzgqo1El6R++fkWHuOxltHR6CmpKP/a+hUI4JUTYLrJ4HNX4rk9UVNXMImKz2Zyu/Gp1Z9ZAdvWVEp2qiUJJqUUzEYsQkTYft6mc+poqPUSGlNDsdsg3dbl9cblX/+DsfKtlUPGl9QdSM7r4UYcRnmoEu2UgO5PFQTshiqjsS7LE9Ncx/E5sfzTm68PxZp4Nb6oLCAEEX/Kc1Ieud6cCQjAzEBFN2dzGNzOh6O4RoaoQupnm4u7Em1ysmfXeSaKbm43D0M2sG0Tmue73e2trs9fbvB5qbv2xlG9tto9Kold3Mz/WIkpEazLVjDTI4ElrM7FOwsLJSDmdnhx69Ps2T/rMwyycDoubFp9M86X1JsmYhRRGMiQ3o8202Mq4pK6MiFIDYFN6Iv0zpnB/+dw9pcSgR7Tect48ffr05eXrd/RyVl9T9+ucZfXVdgdzZD8vCYSwgx49u5+n9GwcH43jph6rOoQaHs7KIHUMvY15lJQ74TAJU1LRvBXP7+T1f17enbnMwY9evboBFskYNse2PA727mUYzIyKuc2enEm1vzklPKUhJRDBiAhZA9/Vry6kqwsDRnGEuEHhSbQzKD2c3Xd5Y2a3dU77zQfL4WK3vRhy8gjvVDHCwu/f5i0nYGYlj601EQn3nLMuXhVepIlZ68VkQNLAQrMhXzk+ur65WmrKg1LCLHjf/q5/N0cooT3PZc4+qMsffPLjR/uz//b5Okd2dXfWjOzqay28B5OKiBSIHb1/crh5cbiuYr+5f/JEh1s/0u2ZlB7+cb95Ws4sfKJhVIiw2li583JMDyODWwadlzmX8de/+d7s8fOXl9N0s9N0yMkGvV3mbLFpcpa3XeIYLUUAiAh374jTqDJRift1Qrt6YNRlolN0F6KUOafobTj6RBlVRtXbtFzqMTO+A/1eOrsedUyqQnh3hEQI6PdvrZ07c06gdoYJmMQsaq+2k9y8zLHxcFGMg4lOtd5SXry8vF4axs1me95as2pJ9QE9Jsa/UZWkqtvN5ljX7SqrO7UGsquvNaow4G6gGKMTCyLCtzj/5zfXF6K/XXYXZfOcExEflvMXvRbRjSRv3cKN0lSRM+xhfHdHGBnss0TaUz7cFmrOOf+Tn3+8359VITfjobYFMTRsq9j4pgIBKlkAwMxaa6oPIwO9up+66pkPrffLqCQvfFApU+n7rrdRa/THmn5zOHsMrTYt5XYviRFuhnBQA0TcxwXrItK7NTNVDcAjQiWXLG0i1YrQJXtaXH5e548Or4vuph6VOYUmE4kMOc3gehgPxiT/srze3Q0WwKmcZrW6M2sgu/p6E3HHm2ZzITWBGfRXtT/mLlr9Z/31o16+v7vYkj9th/c59lpDHBmShcx96XWuQ34YH6XWPedM4HTueTFmUltbfu/9D5/b/K+mT519Z8puMo7HhIHhgVMBqHsIKCJJxB7GfXZ1T22rTFEjyXnedverNqHHJpeX+fBB2vxmerQjTfqCJeDnKS/V3D2IOG0BDgBgMO5Zl1xEkBzyaSQIEY5utixJ8qgFmp7X40+ml9cRmobM/aulbsb9KNKX3paaskiW/gA3Y/1lLbiZcd2usrpbD+Puu1p9SRpcCFWVEAa8hwkIPBI9ojFjwHbq/f96/TKLXEjZPc19WgaqhPliLVoEd/t9Xx7GHFAynXZ7pTxERHMzq+4+aTxN+T85ew9puIr2w+vLmbNZm02ZVDUTEt08TCEUPJSM0ep+mmFREiWizSnwqGQGxOw/PHvU3VzqHLGlDsiH6Nd12TBBEZAQArBwCSAC9yxmiuiqiUBrVURKykVLa61w99P55mf19a1HuGbJbvk2bJNHuHu3BEDDo3VH0CQezInH6SkXgKqeKunf9Stafe2sgezq644kTkMcEXCqAyKzLJmiLgxaaKNMxBX6jz758/fH/ffPnmyqqVkpee7Lsiz6QPomT7NjazdVdbiqehZVHVt39pZNrX8rbXa7i+uMnxwuQ9nMvEcgQRKg8N6b4Z7N41w9LNejXzi09WbLRS4fDrshpYPVJ0AFTKK63Zgl1ZA8qka8mSNCj9MWOpKUuG9T43KS2trpSdEp10uHIOfhn968jGqZeUx5jpg9Ro9z14Ye7hEREiKnic5+Kpx4EEiCPNXQu7tCfjGderW6O2sgu/paS0EAEWYRCKHgtLKVIM3NPCCS00bVxCfvGzm7XeJf9utlms/G8t3t011w7K3p/8venQfbl131Yf+uYe9zzr33vfebun+/ntQtqYUkQGAhBkPEHChSrnL5D6BiSIoh2JQhoTDFUFZiAq5MtqkEmwBxUuCyy2SCKgOVhDiJgAACAgKBkFC31JK6fz33b3rDHc45e6+18sf9dduk6A4krX739e98/ui6XdVVvc999+yzzt5rr3U25u6IUBVmCqaozkRhVkq16qqqwoXtVvSU6TzkQntu2dLJpj9aj8vSF2LSBFVRsjO4+znZHedrFB/mKm9fXNpLMviIqPdqPrEe7tk0QQgOIjD8pSVYRMSLyQUcAacdq1pAJEC4Nq7aezy3Wm1sTaJFqRBv4Nm9cZqBK9lanKuLKpjcvboxK0M5Is5KJAsw80v9Pjho2+jutAc1ubNMgezkjkYGcAQQst0vD3cLoxZiCE8cRB5hYy/hB0Dk+WYzQGc8607q8JHnr+2T3X/XpUUpp30pfybMEV6t1pza8G09/2hTRtK+DmbW5ETFhLUvI6W06PtFbi90i1tjfWGzORmLRSEVPiMr0JPdtKi4vHfhfJNQByvrmbCx3/TjhuclSghHBDtpkJkFCpQB4cA2uAVHjahe846VqSqjsza901PPXVsSDZyim23quFc8Q4jV3HsUCIgirFJqS7gHWJgoRQUsGGJ8NuoK11qV6XYxE2YOZmb4NDlMXlNTIDu5oznT7WrKL9aTYggIZbt9GX77WAlzgAcANkqmahsChBCSj4CjG6ts/Rsv3HUOLEOfMvc0rHzgVtvSujv57T5DxS3IRUSNt/9T3y69MDlFAJ/qhd0ICoAlVTcSDgDCxQ0wIQhJ1AhidxMRuA+ibDVZuUfk0qI9rul6vzns132zSJWEuK+mqlQLK21QZt4NKCYBjhQkzjBPnHo6Gw/myStjD2xrr/HtYMXdI1588ROJ7dayVXbLgKGF8kjhMMHYDcO9pA/s7fcpgAIrIEB0BODcQhGeWeDbu44sHEwEFQe2x+O3u+4OBmf6lPf1zWEjPJJYkIjYaApSx4ZICMphVCrIjRvX1vMnmrjdcEQyiYY7jeOC2W8XrKsgyHaRGQAkIhjEAVhs886DYThDN4uHt6HFLKSYionn8DM0/snrwRTITiavAmP9eH8yDJsZ6E167rIuZt5gEysqooLtSWSnhjUFYYwTKszMysC2y0Dcbs+zY7tyxEwe5hY1iGQuIvPFxfl+Nv7Y8ubSbSYNZ34OlsB30/wWb5R4BqHByMOTr5MfUb+waap5PQgBQIgg820FASFl4R5FLag4wKSScltQj8JyHcY6SuBy093fHSxmZBhPyNKOddh6OeuUkwX3FXDAs2plnCTbH6XA+lLnqesKrYgf6Y+u2s17+66v1SygICIiQryek3CyU2RZxzCHepI+Ofox9Gz8cSevG9PTZTJ5FWyM8gCO9gT1w/3yadIraK9I69wnkAbByBAmNjAV9oYJjICHk0XwtrIV2HesnNB26YiZKQB4DsqkTLpJ/efu7R+Gf2h5az32d3kjnJ/19QXVYrFG1aRCzOFqTjDQNNW8HlQKARFEgEBsdywsIjhCWFngZOZrHwpFkEcqV1K6V9tzmkHVEMzoSOoZqd8WxV0ViTNTKSUIZD4LWVM54K4ZdUn8x8tbR4lLiQOZr8sAMJRJOMKAICLyOLUesp9i297WZmaJCanEUPIu1vedvL5NT5fJ5FWwT20N98TkasN4M+pJ2nwc4xfm/RJlyUENEVHUmhwtc0S43T6JTQARE4hAu1bWiiJAINYIQ0R4JTePcSH1Jmpq5+9u7lkZPnJ4fW0nVzjf8F41cyQUeKkGS53knEo/tQJ7nYgIAgJMQHAYA/Amcg+v5FmY3JLXGfEB5QfSjAQ5S6DWfgDglAqoOSM51q3yxseIEFMRGd3IObk0nJ4s4yeGo74oOR/EvEQxR0hmZqYX24gAgIOAM7IC/edVhNhjFjIIcvFULDeZxulmn7ympkB2MnkVbBorpWjlTJJYgzBQDLW8d3k9WZwXudzNzqkqOKKaG5sSQRlgAhGxuHuNnTsloWAPNzOn7doslEHAWnTPlIc4GQ8553cs9jylZZTywiF3NLg7CzVJKQfZ6mjdNJ/ydMbJayCBPWButg1lBSAKwtHo55GojkuszjfNw/OLc6LDsjpPqbex1GpcIZQkM6uN5YzEsTjC8QXPLedr63Uz38uUT7h+8ORGZeZQjXnjNHKc1CEjWsQaEuGI241bhRgkFNi1F9RXiyeWEpqSRYzwhrVb1zSbAzdOe2iTO8i0CTB57Xx52wI46LpEqOHEwk5AOAef8b23gqoeOQgUG6qVKJMsXJybIDmxcqvfLL1CU5OaJImlATMQhKBtAVti37UMWYBBgQjAiYiYhILJETTAApGFVZss7NZZLCwe2r/SRCw3Jy5mEn3tlVV1emF+naBwCgITmIMjwuAlrBzI7DhWrdJf6A7e1MwHGirKPdo8SwMxNcQpxIkNSE6dUeWzEdjdG/m6jbVt20hVm989fv6qjWK6AXswQdgpCRG8ct3ABErE24wC2TYOiYDvXOOGV4tTRCVI5OIDyUbjUnf3+Yfv/x+f+ORpD21yB5keMJPJq+Cip7XYGgaPlkRDxvBjcqlQoZZnDBstnlz1H7eToZbPunS3whti9aDbh7SDhLFjuYMVBoCIEpETwm838plrLhxBFFaGIUqxVtKM9MhudZnedm7RzuYnfXni5o01lyGJnI3qZJP/F2EewmABkURooAkS8BhHn7N34UJqlrY+tvGuyBX+5Hi8yG0FTqI2LgtKbL7ysmJrcTY6V32yxkG60IP/r/Wz/Sq6Uc7PZjd4PE+5hvc2QJg8kqh6Ug4KBvzFxiPbBAOKbc+V16NUo1dX94GoNX5h6N/9/V/3/G9/+LTHNbmzTCuyk9fOl7YdvU5XZI9iIJE2kgYTyBEEJJAwqleLMOESPBpAuUnzWyfXqntWbVQTEyIc8Ihdq8/q28wHEAXgwQ4hUpZRAu7iBvOsDWuylI7JI/q2FS891aETvjg/WLRdf7Qq8vrMEbzTMDGYDDAvYrYQvXs2v3f/4A0iImZUMlxAJ2QD0750UTdtUDIGMApWqMF1ntV3LonmT/ehdXm8Xz/f91p1rt3IKIFcYkNFOGDWJfFakyQrrpGcIsIjghFweASzqOR4ndYuaNw3TdrvcWvOF4fmyaPrmeQNX/yun/xff/m0hza5g5yN2WTy+vCD+wcm+hmX7j6xk/3gXGidFAYhGN9h5wO8sqqF1zIcNPn+/b0LTNyPmXSMOsLR6VjLTFopIWNYAzOLCNo20YEBYOazchy6hdyw8snVaqlpPfiiXWAoiWQjI4AAgpgC2cABcuqlMP8rfds9KIKCnc/G9Z4V5EJE7tXJmZmIHEEkoMFBAqmbklJTKVS51mqcYhwW8DnbffsHM5HMFGOtO9bZzggEcBBta9sFwCCiQQozsxGZw0MkAYA5mmqjZTQCHZEOmZ7oT54bN3uYcrsBIIIaj1UyIdZIaeOS04Zr9dJwXps1iUbVr/qmb/69X/u1v/JLv3Ta453cWaYV2clr50uahmu5O7UqZLAhaWHKgcrb584dhMFjrcTctjM3Ozw82gyjzDpDaNcQk/bWFCf3nnwz5zqMEIawI4JJNDGx72BS7ctYoSxSc4nbi7m1OhbUjQ2u0Xoy8xQ8cxaKlY9jJp3l7MTbuvEOCgcRiPBS94rJq8S8spAoKVO4hRsHCdB75EoJiUWDiawWio3Y+bGcz/mec4uL81mbyMoQ4ea2fb/aHRRBASIQUwg5w8JrOBfkQpk4mFzYrRaOPqNWceOa2uuIxzYnT65O6ugXdT7GHfaC/TIGs3PaHEvtRgoVg5v6QGXuYYkwrigfLFdlfXz0ri//sv/ive897fFO7ixTIDt57Xx5oyx00DRJGA7TZI4uYhST2K0H4acaEzGEoCApHoPHgFiBnlzfSqmdIXGtOmtHdgvTgOS8Lc0VQDisWmy7FZyR3LtWJMKrDYukF1gvNZ3FuIrBSNqgTHxsPSftgnPQ4fIkcwoLBDGDSYIYDKMzn4Kya1ISs2peHB4gYWYSd5zn2SC8QhFmdnO1zvxKyEMH++eyzDnEK1tFOClLEuxYvKcQAIEXK9xxEBMTLjWLJdmGw8wl5x6ukEUP08XV5epjm+WzNrqkzI0bra3ytAMAANhLzbO2OojMJEf9Mu91XvoinpwySngHDxa5ce3mV/3znz3twU7uOFMgO3ntfGVOodjfXxiiqazBUaMDihjfYYFsACwMQh0rEbezziUtx6GV5mYdn+qX1/rVLM8XnBuIm1sZKEKZlEWYhbdLlGdGjwCC4cLkXJPKXsj9PL/Ydcu6XqOQW9M0J3VUyZdlvuYSzNsmEUEUFAEPwhTIvsrcPEI1ESfzcDCpksrNcbXQzF4GDK3EZxxcfLCZNbCDNmkYWSV3EWHmIK7mu5bb/VK1DZBvWzdoQEGP++GM9By3m02fpcnIa/CHljefGeuq1qytkI7VBvcgmrWt++szt/XPq0bNFdZkAe1JPqLNgUliGUvZWNvmBuEMfNuTj532SCd3oimQnbx2/vLBOVoN+/v7PXvjnJyMglUsKt1hP0XDGBEEF0CIPAIIZR1JoyJT3jieHzfX+pVqPuAZseeUhajUMdxEmJnMCtHZeAEIRxIloiox1oLADHqgDUV/j+bzbXtowwauxZPkm14oAUTOYRHuHuFMrERxNhagzwwBIziIWYREg6m611qbXPIWLAAAIABJREFUhja23oN/zuLiG5uWUAdszs+7ftMTEbGIpggEAAeH0I51pHMECCLCAAPsICMyOt+0m1pceIZuhPzB4c3Hy2CpGyPcQ4nFoaCsCsRYeqY7a156OcZ2XmdL9569HUsqVnIjJ/jYyeHFux+wWhLzNzz+0dMe5uQONd2lk9fOX/v8z92jWVqV2nARh3lNgsQ2VuY766dIHESgICYELMwZEKKZa6k2CmvKCQKnQ7dPltXd88V6rH01USWRWkq4Jz0zh732IlX3IYyCW8qJdSC/SeOCsMKQkl7R+SVt12UYvcyIhtpTeABgYmImcADw2LGVv7NOSYmpmrmZUHA18doKDjgenu0/NNsTseJ9SwGKG7ZpJIPJEQCqGRERRFV37VR+bM8JhlGAAGYlyaxNb1UoH4M/tL71RO2jyozbMvgCEUyWuXpFqQ2IIpyJXqcduf681OxW1HPU3Yr1vc18mbjZ5PfH+C0/9LevPf1k7e0bP/rB0x7j5M51Z0UPk9P1N979RQ9/7Vc+++t/mDh6tSYIgBMjgs/SPvmrQEOIFCAPBwmrEGBmA5cs0jpJYID3RIM7STpcb66vN+tAaruUGwpChIr4bi2Evaw1agbNXFPwwNiwOTzDl4JMkozcSyN0bze/ZzZftFL6MW3b97KAhZkjHGbYsUNFZ91Yx5RTYmZYds82nld64Py5y6MnZUoIM6foCSy6iFQjtiVSVYSIRMS9mlfasfs3mCgQbgSApLCsEEvEI4fHT4/DtXG0PlJIqDiRelgmFFNDRAzC1qgEdZXq9HMDAARH4gRAKfr1atU2T7+wevObHrp2fPSur/7Kr/inP3XaA5zc0XZr9pm8vn3kv/xPPvELv3b9E08vNqvD2Xgp8tDbJguY+Q7LRVNTi+pCSBQR7s4BERnLqpl1Q185OFNSlqHvNcstQqsplVHGzYWULu/tLZLEMEDPxi1MbA42YlikIEQlCnBwzU4AQ5irl+oF8CTa8/7RMFzv++NaCzOTKoIDdkYOt50VLiGgslnv5eYNly7OgFgddylVTahFCMUti0Y1Ya1wDgOT1ZCkpQyqWsOZQb5bayKG4IAgRKSAj6td7zeHfV/knIBcUMnMCsIERCriKFYlNxzwGgAqgpJovbPmpZczSsmWFj0dz/2xk+e+de9zf2e48fFbx+9ZPn3aQ5tMpkB28tr6J29+R764/+FHP/Sm/TbtzRfH3CcfolApfn4vD1GG0RIy2IrPuetpPO0h77R3nzso45oYIeZMAFvxxIpgg7EyyL0aeUCUiBzGEA5gW7qLo4ZXL5l2q15mEHutyqKpORrKUydHt8y97RwW5o02XN2Kk6CQuTIMquruAirFcs7uDoDusPJJAgFgQZUiCEJIDg5f5coV2VhI3QBlI9Twthyda9u7utm+SoKbmYGcIDv2aFACmDalAlBVDWKPMKem3ZQeDKbI4AgqbiHSEK+GIbrFhuipm7eWZZSmLW4auxVwn5Ygd/cmZdS4facQqWqMWNOwTOW+mtaNjKNnT3PPVU7c4g/q+rP1IeKT5PbO5t43PvYbp30dkwkwpRZMXmM/f+uFr3vXO7/ym7/5Q//Hb7UpL7Ek7RA27/aaw3IUnmftOVfvh7ZrrtHQ3GHVDP68PnTyfC8yb+etixYQCMKRpKIIg93ZgomIhIPY2WHkHgHfZqCCwBAm2rHv2Sk0McKGvpdE5w4O5rn1fkOAD2NE1CSlUaimQouBOQl7oLqyRDjC3UzuvDyEIUYCMqABjvCoTmEU2oMlFaIalpXCRkSvZG+5cGk/546IzcItCERMIrt2qu6kFmHNmhIxB4pbYZTM1vdJRBgeYaBgypyS8bWIF5arF1bro770HiKNaNq1/s+nKDya3Gw2PZgkKauUsL6MRW3GeXYSvTZhIII35r455vTYjePvfM+//8z1Z+ymfd2Tf/wPbl497YuYTG6bAtnJa+2Hv/3bn/3Qxz7rL3/dr/3K/3xxdimGm5r2D1fLaHU/db4aa/jIUSXEq0w/0VfUtPNV8edX66f79bFA22YW1A1Vw4XZ4IMZqygUHgKmbf0qYiJyQgAcxNi5RgNORkCEETyJtMwtYsF0b7fvXjfwApMayQgBz6n0GxCYSESYISpARPhZqerwaklKggAQRC4IJmIW0FxmdazaaE/joEOX4m375z5N80xyRkgYUWxbEdO20cZpX8j/QyMJROZe3J0RBCJKooog5aGWDF1EMpMbYR/dHB1VOireBxfmIAkicpBhx97XTk2rqYyjE/KsW4+DhYtq07bt2sqsIWafpf2jQl26JfWTRzfu6x68/OC9L1x74Qu++iu/8Of+yWkPfzL5E3ZtvprcET74n/7Eh37zvcPTTy8ffezylQdO7Hk/t2hvrCVpBQWJM2joM5ORnvZgdxwDUMmjDaUMmeximy7v789XfZ611R21dikDWNpoQjOHIwIcTAC2ubkUwI4VficiMyMKTezV6liYdda0h1a1UpNmJ1aubpbXylBBTe5SiLtvN0kjbHv2aNdOIL0GXAwlOJiZXcQiPCqAAAOuZPNib790d2sV7IUt9QiK4ABvo1hx94idq1HsTOEuDgJUOQhjKRAegQXl6I1Se8uGq6uTtfK6Fo6GVUSEQXC3UslDGFOL4y2BFLfU6FCLmc3bbuwHLzU1c49xzf2seNLZU7dO9hdXRlmb2V3t3d/42PtPe+CTyZ9iuqsnp+bH5pf25wc56A9x7QvSwdUDv8uI+9hI3tPucFiey2lj02GLVxLkGD1TI6ymGMlG24iQwt+0OH8Pso7jKN5jDNi8yTbC3YOwTTjgbXpBUOxYHVBFcpgjnAJw8iCAiIQwWFHJEorQJeKJcfnssGp4fxxHIkopKfP2c9ZkVk77Ul5Ta3Z1tKGJxdzHKCSsyptYnq/y1nN3t9UCth7Xe/O5DSMp+YvtrwBw3G5CYbRbucXJawW5cgkXohTEQ201F52/UDcfPb5eJTXIMbp03cpNtyVu3SNMVeHm7spsZ6Rc3aeaO1TVYbXWrmltLFGtaZqhrE1RmZ44OZZV+sHv/fd+6V/8ypNPXv/2pz582kOeTF7WdFdPTtN/d9fD+un3fsHX/qV/9n1/7543XmrWywZctCkjJGvdLKlJpz3GnaZ1BGuktDErgUZTrqGOlGgldV37c+C3zPavaKpRNjFCMwUCDrt9wuO0r+BPxy5Bt0dJRCy3azuMqeRCM9JafYiInMiJjX7/5EhViaUfC5NClFhLKUx31otQCjGEKRc2L2NjfneeXekW56IU9Q15GcZLiz0bqm1rU5FtF+PDKSLYYxvIOu/Wi43ALFw099VEVET69SCQ3zm62c3mFmQiJRDF51Dqi7UMuHmxCFEionAiorNSd/lTjYTd3Uqdt50V7/t+sb83juO62eyt08eGolTe/OBDd5+79KVf9AX0Qz902uOdTF7JdFdPTtnVH/u7H/zf3rd67sbyE4fP6PPnz8/OH8L3F3tjHKeR6m6tDO2aAlfiRngoxQKqmSrYsaK+hQjzwFbZz6k+KO191D3Hm1YlM1Gp5oWZQVRj506p+7YZAoiZg2BmQSQiGrGxEongkRydpDCYx4kCmvpqz9241TtMEjVNPxa9w7aSu4oSPopTZiXfM78izT3tfK0VY22JAPTkBcRJbayEYGZmBsCBiIhtY9cde8M51JJL7FPng7nmddZPLm8deiVkY5TRtPosJGuyhBXGXIiZtzsO7m4R2yScXbuu0xLkDIriKaVNP+a9veXYQ+X6tZOv/zvv+cN//gsf+fBH/vYLz5z2MCeTP5Pprp7shJ+6+Bnzt19551/5N37xh3/47rsvp5GWqXbhmDrrvCLX7OOQ4cwAoxJqgXLKHNXCCQIhN0e4YmB7w2gH89lBk9QjvJKwESx818oSVTIhFudwByAiHlHdOp6VMpCSKaoXB8gps8zcN6WibQZOS8JTN482btC0Yw2nPuU2OfJglyBXusVeq4EhUCGggUjZYUQk4WRBTsxs28Nwjm2zLjA5RQCyWwuyWLis4UdCj58cnlSk3I29ZckCMwtRJSKLWrxUrpITlxRhjNuJ4EpKJBHhVE/7UnaCRW012WDbYwkrimcPb/6H12/+yvd87/HjVz/jy7/4Ld/1Xac9xsnkz2oKZCe74tEf+ZFHf/VX9ebyoZX+/Ef/4O13NTezz/qZHURzPS3boUE1y543TU3uLk0+6ZfdfGb9mHPrhtFcZPpJvxKXQC0zkgcuHOyBGi/oh3lONyiU2K1EkBILZyGto4E3JGw1WOWlAvgitGsF8G8HvoEwJ9bKdDSUo9X6iRyNS+MNjCtQqSq7ENY8aog4gXMp1kkqtVJW990KdBzkQBKJYVDVIUyV2SOcalRJOlRj11aTWeGES6tbs7bZn826pARE3D7YR7vWAs5hQkDcjpiFYcHFPdF2Gd7C+7DEkhAy2uPN7Hi1Pul7IyVRd6cAM+9aa9zTYs6kJGTsxtUAOHNl5jEqNTOOawfDlRsxcjTBK2rWWjuiRvj3X/jkZTn31d/1Xc/euK733/9l3/8D06L15MyZfrKT3fLHn/2vP3LjuUrlROXq0a377mrouMza0bqEk9x18xubZZdmppUiiEgQbFGHMThy21iZUhFeyWA+yynKyFZmhCsXz3ciYWU+ugIppZqxho3VtEYXOogTkbs3msxMRGqtEcE7VqLVENvAzd2FUyQdPfpq96F72jaP9icbIlReaDfaOML3XAbFWL0LjoiYp37c5NEp5dO+lD8hIrKBsi5RRSgNJsQ9jKTzOiYBM/ewauNF0jfmOWlRkUQkeClRgHewwUEQtw4AKy7VvXERkTFLKmXjNYI6lxnlIumpWD85nrQl97VWC2hiTe4ON2aOHat3e1q2aSHuXjWCJZjYSAJJtK/XBRdoaIbm8AFuP6Z1wbRYN59YXb+P97/xx//uL/33P1M245u/4As+c8qFnZxNuzW7TSZbP/XGTz/qN4sU91K8//DGlcv35JOmaVZjubnXvOkWnm+8JQ8KpkAQmk6PhqUkVpvKdb2SapRzRhisBqzNya2WUj7/ypV+vVR3Mc9MlHRJo3dJN9t1rxBQrcbMBBER8x3tuHY7shEmcBBQhj3pxtGOknxkeXOpar0fcFeZpbgjbCZmJQ0lvHqnXHfr9zMDHfsYTG2wiBz7yKwL6DKoi3DbFPaG6G7Wu2dd7lhcwhxu8Ni26AqCE3bs7BbIY4Br4kUogEPrLWhGOuSYe0quN8fx8WF5I0IguVClArAzkSiAiKAAB3x6gm15JSImJRILcncGhPiIb3Z0sRvoRJezvcX6Rq9d8+i1q2+5cJ8P5f53fMaVe+77rL/0VfT1X3/aFzCZ/H83TQOT3fU/PfjgM/2aU9ty8/Gjx990+dMW/eZIhoXJIGhS68brfkhNU6MATuFEu7XlvWtItJQCIOdc3Wut7p5z7u3oiraftndJaymolMk3mxmnIW4fBmJmd/dtoBhMvFsr3y9VEHNCRJDHdusZ5IWilLLfLDDEIPrx9cmzNuRoXdnCU4RXc0Qn0rIufbe2qoewOScmGsbRCY0mF1p5mRWMWmaIt87P73M+Ho6lpVliG2gb5NGLHLGDgWwv1kIksOnHrKllZZVVGefePF2WT0R/Yq6hLWYOWpaxVWyP/f3L42jhDPiUQw8AYIYFIkicM5goBrYBJUXbergvo+uOPN+69sLDB/fdtOVJXV/s9r/l8cdOe+CTyatgCmQnu+6fveHhm/3hLHcH2vzRjSfvu+vyuUjr1JehMrSdL1aboUuZh9oA/a49sXfMNk8A2zUtEgAiwsyoZeWDtuqlXBJ9YL7fVZ+pGrtbda8RwSoBOLG5665NHR63lx6ZAZAHwRm0AhrmxsPJR681BBAh/eDNF7jtSpgXsCZPCcH90aqZ7Vi5Nxaq7kKRxGuR0QQkSSsv3zY/fynYhUZAHY3QybASUiJ6KfEjIranuHYt8ZFUYijCOsJZ09iXEDahR49OOIiZh4i1O4l2kpLLxgeiwIsr7kK3yywYpvsdAKqbsjBrCa+owSHkTNEMuc/C1jx+88l/89JbPjAcHw3DhXb/665+6LSHPJm8anZrdptMXs7PPvTw8+ujc/PFOy7d9wsfef8Dd92z0GT9KFk2UWugo0wliu7WitrucSJKImZGEDcD4O4lKVdvU+5Rhiit0IWQ+9s9JmeKrHCrHO7unJSZo+5WAEEUEbQNa7b5oAQnIvVcoxp5jcpKFEik4rxqxZbD9aPjm+SDaOkj7e0vlWb9bqVMnIvuuvcrjHtNw27s9Tzl+5vFrK0jOdnYhpagtftMZS9kSSMREWS7cOnwXQthtw5MbvqItuXQNfzjh9craMb6Ail7JGINQphHOMHMSJSIAAewrUWwXXePO6y82svSRGMlN1dYYkTsDZiPeLZtPnHz6X/rB3/osZ/7xf7q1c+cXXzrY7932mOdTF5l0ywwOUv+8PPe/ci1Z/buf8O7vvYbf+QH3/PZly/Xk8OuS0NYEDepLWU47THuNGYupWzzBFJKXqqqEpELlWIUSGAAFnVkg2Kvj1luLu13LaEV2DAICB4ku7WlG2wv1o6KiNgGPU5Q522yQRLdtuYdrJbwC5SXFNV8pu0G/MjRzUHEi4N3K0d29NjXFFZ6KjPEw3vnF0w1aq4B9qKxsZKp2eOm1nriQ3P778Ivze1EIKJdOxRVAQ1ZsXz08MYgwgWamlvj+kBnY5gzMUjCBbTdQwiWbRS7fWPZ/pG3/3ral7ITSHQceyEscuvFD5ebTTDP5l/znm975L2/tRnGz/rSL3vr937vaQ9zMvmUmALZydnz/I/+N7/5K+/NjT74pV/4vh//8ZtXP37f5btzatfLIaUpR/aVMQBWGcdRsrg7M5dayepM87YX7EgeRFkZxUZNMQ7zsIX4vXv7M5FG2IdSd6zQ6BiDclJibOugMpzgMMCFtBTLqen7vm1bH4sKb2KcS47RPSBdtx5tEHni5vWl7FbVgk0OKeWC08N75+ccQdbbJmUpmEe/3hNheM80CpcyzFMyM4AjCEFyey02tgcid8px4mcOby0No1MzPzherWfSNiFOfZgTSRBGtyAmkYiQwLbSllCEkyGYVTiZTy+uAJBrrFtYQ3E8jC8s2wce/Jzv+Nanf/O3NfHDX/w5D/+N7zvtAU4mn0I7Nr1NJn9mH/rxH7/6O79D6/LOz/+aX/qRH/4orr2ruzgWO5pzNpxfx6rlXuL8EGuJA5JnU5kPURvRldW9hoc6671vdywncsdwIJgqyKMm933VS217rm27cT2Kg0nCw2mkIJI2ZBl9y5oqwWEcJkSC4iX72fiel5SfunXtKAJdaxVUOVOCo0/m7imImcmDKIzhtbA2Yc7M4bQt71BKSSkB2H7YLije/qew+UY1u7sTPAJObTBXL01CmAZt261xlt5KdfuS/flpfyV/ghEI4CCK26UDwCAiE4pSs3Df991s0ddKTbOuYxsjwtR4lrrVYEPXPXrz1hGhid1a0d81YsEqQ5gFNcLsMYTVhmYb3yTMIh3GuDC+ZM1VrBepqehbnn/o+o0HL3+ab144/6aH5vffd8/nvfOdf/NvnvalTCafclMgOznbnvv7//Rjv/mrz15/qj7xiXcu7v3Z59//lu6uCFkftLYZ5k41ea6lh3LWrnexANMhj5JFa0ydw14ZWQ1RsAQRhanXJlwQI9ubFhcupGZpazK7xLnCn62ri3nPwkc3JAETjdY6Zae17tYK7stxo0RJUr5R+0+eHB3BRBNKJGgKGoXFIiIqIwW5IlAAEFGtlZmZtNYqIiA3M1V1d3dX1e3mPnuG+bZuFKmE3g4Hb1eE4Agb90SvtN15pAPOK1qd9lfyJ7zUwJaItjkb7h4RXWgVUBK3EhHjWDNJBylMjablOK6TPn58uBGpg3fSjditxhO7JqyANZJYgIY6h7LKmsxts/C0Bs20HdTXNHTmudqjt+yv/52/9X/+Dz9/9fFnzi0uftvHfuu0r2Ayee1MgezkdeIjn/4lH14+s7jv/rd/3Tf8Vz/8nvvvWtzTm0i6WUrbzMd1dA2PtJGGxjoGaSBvAnsxPVBfCcMR7IQgdvIIo7AIn/HecawPWN6e5+dyPqQNIS5Rul7HzKJE7tXCjVhYE6dqZ2MLODGNVmuADcpJuu66j4/fesGLlkakxEZINGuNNVkHCR+ZmYjGoTKzqla3bdEAd1eWlwqcbWO+MbcYx06Se3WYC41jr6pifiE193SLA+IWQRob31SYRnPaX8mfIMEOd4QRiIi2RUI81CQIlZyYEZbByViY16aH7I8dXS9NY2NkSgB6K2nHcqx3TSIsoxBRx02lWLrNqlwwrfN81Q/vWo1pL/vJ8IH10Wecf8sXfcc3Pf5bvz0a3vXlX3z5u7/7tMc+mbzWpkB28rryxH/+X7//V9/bKt75+V/46z/54x+4+fjn3fWmw3E4p/nWnE6G1V1Ii5Xd6ji7BNPU4vKVMcMd7g4wmCAAUZBvRjpPiWxcUX8u54fnB3Oiw7K6m9pax2D3hEgUlOpQrViTdusQ1cs55L4N3uc2OUopRkwq7n6zTdHb1eG4rKvmtldqlmPNYpEIQkTb+JWZt/3PAGw/3F6R5W0ZgWDxsQ46z4MVsrrPelBx7+L8foFpWKZNjB4lMWmpDclIu5WS8VIg63S7kLCCGNTDmmCBDGEhoiEj0YmPnxx6Cd2sRk5ddVNVCefwMh3SekWb8DYnKiXGoU3ZRFZRa9L9m8PyQr4Q8vtPf/LTr7z9S7/z3/mj33hfp+0Dn/cXHv6+KRF2coeaAtnJ69Az/9mPPvG7v/PM809df/xxy/MXjp96c6e528OST/bni41vuCxqv2kqWXfag91pxs4BhnAwBRxhDMATdAMjigyGV/eamA84v/Hift0sG2Ims/ASHkGz2aIOu1XW6uWkJHUYI4KEjeAICmhIYz60CeuySiptG8v+udWxbsoL+wszw7Z4LYmZlVJSkwGUYUwpicjtigHmImKxnBu/cf/CAkJhxr4eN918VsPYo2F1M/KA8GjVCUq7tXIZAaJtszdDBDzIiYK6BtdskNw1RTbBjxzdGIn2tb3qqw5pTg2FjuOIRGalzVxsevS8EnENBaNyrQaPRgHyTa2dPHG0eqNfHtLJ+YcfunLvGx76/M954Hu+57THO5mcpmk2mbye/cSb3r4aju978L53/9vf+BPf/x982cH9T9DxXtdyhdWwnMjORoB1WoxdQBQsgYiIbUtQppGLEoszBVv4SFEZQe718O528fDehW40MZOc+joEk5yRqWY2RJ+pVzhCDQpyJlOarzcNpWMOMWJNvUQ7uGeB01gKMzOrE0op4zjmnAFsP6SUeJsC6541EW9Pg4kjjIIpYiid5lWyqAZwGASskrcdKzx2KyXDQYwg+HZFlUhAyqRLX81NViofPL5RUm43SNo9U5YPaHtSB8vJ3ZvgJueTYVU0Ot+t6hC7Jnnqh7V0ySVs3e83+6PII9ef++v/0Y++72d++tmPP34+Ft907cOnPczJZCecjafLZPL/x9Wf/Ae/+7//8oKbe7/k3b/30z/9+McfeWt38eZd5y5fx2a2Pu3R7bSX2ilRBIK3p3yYuUdRizAEmJOKiLFvvDa1REQWHTb9XpsfunhxXqyppexYua6XU4VyEMwNURMTkYyWRh9TmHLjUhkRIRaDegpipeK27UEApu2KrOYEoI5luyIL36YVRBKhijDfNiFzZcDDnMxnpDUcohWx/ZJrNQbJjs3QzsQe4ZVBIKksPVDBbehHT24c19Ihc9M+XzYN62Xu1nVkD6YYqPYcLpRd2uASu9XieNf0jXbrMXXtkcTJU7eu7N/77u/89kff/5ubsHd9xdfc/+9+02kPcDLZITs2TU4mnzJ/9A//4TMf+MCNp66uH/nEQTr328ePvPPchbBpZeiVsAc4HMCLLZTcPYJaiCGMObbV9q1KeAYizzaboelmBe51UB/3ye6/69KilFO9jj+zMBABYIiCaq2VwTlFBKoDkKCIICGmqOFitO2L6+7ETMTbTFAgaq23U2Pdt/8BB9ZNNCQ8BgcioiJUEzwKBdxFOMyJgyjcnVXcdiu1wBAcEISIFPBxtev95rDvN3neuMDDiCMiIRw2sLE3nKRan5hSUB1NcjNWZ5kC2Vei7puEa88+f/HSve/+jm+/+r4PdDJ7w+d/7oN/6ztOe2iTyc6ZAtnJHedn3/TOp4brF9/80MPf8q3/y/f8tYcuPXBx0BWVPfBNH+Z5fxNsuHHX2L0wo3ZZFtRcnwmtqyRS2LZn5vYcerGaUjKz6ezKK+vFzhk+7fz5tl/vt3lT+pHcCE1VUiEis+KIEHaJiGgsAYDDEcCLTbuAM7Kwe2Y41W0Og5K6324AGzA3EWISuMC9sgeAAEsduZmtgpZBz5ycrM1HN8mJp5zXV7SmtDAebVy39bxwGkotUbp5iZJLUFYfhyBqRMdaKOmTzy4PHniI1tcuvuH+8/fc+4bP+9y3/cAPnPZFTCY7app9Jneo3/zH//hj/+IX9z2/87O/4jf+0d/7/c0TX9Q++EyDWaL2+JalC122a/36UnfPuF4t49aFvbmtUBn/6sn0WqskdXeebqVXlFk2peeEmfsbD87vmXea+9KvW0811OFMClKDWQxhodsaAIxtU4aIlyqYnvalvK68+H1SRFR3AMRgRod0XAdjz2BmLsUyyRzpeo7VMN482fTBG/PUdgYiCrOp+scrIY+mjtqlfnC12fMN6Zwv3Vq2Mr/arC8aOvALMRTurt1Y/9Xv/1u/+/M/9+zVZ9qDc9/56PtPe+yTya6bngqTO9rj//E/uvr+9z19/erJxx9bYPHU8hN33333bOien5eDTSNhy3TSDnVfL96yQqmIq6rWWoHbG8rMvD3bPnkF1SOJRliB58ypLw/vnz9nlHhcipuSgmE+hrU8396TAAAgAElEQVSs5yjf8s02mSGcIoI9GMRg5+mLflU5wBQRRCQiBjczwDdc91w6SSfjKLkh45r0Zh2fPVlaUKnB0jiYmb2OYY40PUpeCdGRlHaUOWuWumb2EcxrlKaoZloNj/TH71g8+EXf890f/PVfHsbyjn/ti9/ynu867VFPJmfDNPtMJgDw3977tuPx1rk3P/j2v/oNT/z9n/yDw+c+6+KFOscLdX05mhI4cU6xR3H8Urum7aLs1u0SS5OXkYKcuILMLIl62bSzZFRTGd+4uHAhNcOwCa+L3Gy4Pl9P7qWFIypuf6scvA1kjabcyleTBZTZ3eGuqgizcACd5qPaN9rx4D3LIyc31srKadMbqQgngKMawgQkjJf+UpM/lUSuKJtseVNbbYx8nPFiU24Qrt1aXdp7gIaju9/y1nsuP/DAF/7FB77n2057vJPJWTIFspPJv/SHP/qjh+/73aEMn/nuv/gzP/Fj61X/wPyubqiHaXkv6bXoM9rtbqy7b8/vbz+c9sB3XRLqx5o4eY2cc1BdxbDBuNDFMGwusr6t2zuX8xJrh81YrI+gCA7wtoWUuPu2iOnkVeQSQkweXqq7C0hERKS6uOFE6dHVzUGU1tZIc1LGeddabA/8BVEwiCgY/3d79x1k13Xcib+7zzk3vPcmARgMciAJZlLMEMUkidbu/hyq7PXSipYVV5Fck2uJCpbFtbXKYgBlaiVb0sr6rWXLa+9vvT85SmJOYpbACCIDM5gBJr9w7z3ndO8fD7RLLhNKpN4A058/UFOFKlSfi1f3fue+c7ohiv7HHMmcSZcDzcbpJTapIvgSHm9NIcCVH/iDW//XX4zt2V9LB96967Fel6nUUUnvPkr9S6Of/ez3H7h/auJg2DV6STb01ZmHX5JunANsWFNhFSpvrYXnsqy+i/1xdCi4IH1pvayqEhmJjPcNm855SQkZYmmqfmfXZY1BIuaQUsYShD0AA4AgAJooQPrm7wXFRiSyAez+MobWsUC7qILJ9rfm5iRyxCTLm1VVw7Rf7Dx0uh/7CGItdRNtCMFa7f5xJA2OTTKQZKZZfj9Mnt234cK3X/Xgnf8/Qtx88StXfUDnyir109Mgq9Tz2nnK5keKsfqa9cddccWD13/+sUP7Tl+xst1u17LcWltVVfc0kmbZHykB26FQoRjhNEIiVkSYjDCLMwCM3jNztGIRLcNxQ4MWOBWxHBG4G2TFEEbdWvDCYu8jOYtkCuZokoJlam5+2oELIBGKEK1NnKAANGPVcE5EiMh7j9bEGK21iNjteKCeTybJRGx1ZlsjA+s60hzadOKq4bVrz9287tq39ro0pY56GmSV+hG2bdkyeu/3xkb3zWx/NrM0Nz/f1+hLXVKWpTGGiJAPT7xSz4ejSY0JvmMT41EqFmszDkzGI0sQBjSIxoqhCIxgw/Rglg3ntX5rHHCMMQIywtEyIexoYYQCR5NmTe/3T021kSTPW2VIJDISkDXGMHMlEVESY5mpuzucQ3TOsQ9ENsYopF0LjmTnoUPv+vjHb/v6nx3aub+RDfzmXt1FoNQLRp8KSv24/vuGdWVZLlu//oLfeM1/+9jvmVid3hjxNUeBKwPIxgMBgGUJUDhnksK3ErusSA7V5okbgnNJ2U+mEk7Z6IP/iDiQtVE4+HIgTdb09y0hpKJK0FYSKmDIbRV8zWTGi6kkphBjFBEkAgCGCABEJIts76aQmCgAFA0CAEVhECaseROMeOIAkQwQR4pokDqmMVuWh4piLgRPRGgtCAlE3cIBAABirERfr3jWBZO6erBTwAZt7jshkapIanXTadlE5p1Lm7ZVD/U2VLmzVIpU8EicO7e28qKrXvf03Q9VUc6//PLhK6/s9ZqUOtYsrru8Uj+7vddf/+Adt4LAeZf94p03f+7x+bGTk5EEQtmHaafwiA3q2ydhMBpBIWHjMoGm+IyyIlIfdGY5rUM4SiZd9QgJVDGQNUmSoC+h6AwmbniwP2PJsoRjoDJgDGKoIIyZpXZljOluWe52kkKWGHnxHQ7DioCY84giUlhggzUx0YpUgQTImiJEdM6I4xifnp0OAiVSNE7QEIDE7oW1vV7IwhCiGHIIIbPSKpIicn/deW6DVMBkQhKBMCSuj6OtKjK2FaJkZJ+eHD1ueP2lV77j8Xvu7jN23eYz1l7zu71ejFLHpkV3m1fqBbH3+i/svv+eAxP7q+07z+5f+vX9T51SX56iKWwHsLSeXH35TInsWoknx76iNPB8PzQ6YVbyzC2w0aMLjQFkBkFD1oRYhapMSGp51qnmNg4OD6MzZWHzpODKx2CMQeMg8uG5CQzdfZxEhLK49m4Wwg10RDTHFaDUxRjAFvsKiyzJoRMakCG6WYFtrdlpC+JLIiNoEA0JoTAJADKDfj4BAIwwEJaRo8Gl7KIPM0noj4bIFkx9ruJQm4CDiVlmqlmT9xVV3OVnf2nwlB3zo9nGNctXrl6/+by111zT63UodSzTIKvUz+TJ0897bO5QfeXaTb/8G39x88ej8aeYQXFmzrbqRctCHzIKYZY2xqE5HJKmqdgg6QvZH6W7MSB4RkNJagNzWXUahoIR4ZB5v2lw+aAxyLFkH9gTkTEG0QDAc4PAABbZV+Q1Mc1YBUfdq1F1igShDtajoJBHaifuyYMThbXIxkbymaAQiEAEYAHg7jw1PbvV5cm7CrJGX7MoTbuyS+rNhJNmEVuA/TVfzdag36E0bXLo0K5Vjb7L33v1g3/9N7Nj4ydmwy994s5el6/UoqBBVqkXwFN/cPPj999pVi294LqP3P2yX3lkeuuGJUuGbA4iTStQcc2Yg6XPEIdMre07YM2P/kcXsQgVgiFAZEQ0Qtjd7BoAMYaUqAwlEtdA1tcHRkzuoW2tBeDSVwBgrQVE7z3R4vqK3HIIBgitL0qXJgEJDMWyakjfjAlPzky0DVp0eVKbb7UpccQCQIaBAAWBkRkiIxjWN7IAAMHFvIAAyNYaY5rsY6gGxaSZO0A82MkrNz92aGrd4OAvv/UDjzzwbevwuAsuXH3ttb0uXKlFRIOsUi+Y0dHRPV/+09Gnt1Y7tl34pt/6+nuuaQ7as7PBpjUzSWsTL21CC1vkE0CdaXtEQgEAkIm6r1cZu1sFEnbNUMbEOEM2RooBLHqI5wwO+bISiakzhMC+IkRrKS6yQDZj2ksl66Nspt3GNAlMs8h7OjNNsYmXVKxLk6nmHKTOABJHwgxYAABJEDEiCHIE0SDbFTAuxXS66HBq2Rkq4gjWS5I5E8tqfGKm9cbV597XGs3XrB9ZvurEcy4e/Iie5VLq502DrFIvvN1f+tJj3/r7gHLmpZc//KlbtsrcSTWuF3nTzFJtmSdPlXYtOBIDKIQiwhwQD/c4izGykQSsYRLCAmIAEYnO2lqM4n2euJGBvkbisCwx+sSZEBfXLwzkYLYsUpsn3nhjn5mbaSIjIwCwcwUHBJMBOZHog3EEaESkO9cAkKU7FgFxsXV7eF5kuN1xuRPEpsRBzqXFd9L0cGf6bR//9OPf+PNq94GX9K9a98R9vS5UqcVL71ZKvVievf4Px+56IK4ZueymT+4446Kvjz2xejjJ4iC0W5DoJKQjsdFGCWwQXDfOMgkYYyrfSmt5WQQSStBZMmVR2MRMI2TWOV+ZqrPEuZG+voYzUpZgF9ctjgQYsWXMtslJTy4GzNK+duWd8xIjCoEQk4nEQBhjNMJE8M8zlllQBIWYFtd1ez7RJlKVeWp9u8W1bGrPZG3turm5qYET16xYtuScy1+15r3/udc1KrXY6d1KqReXiEzf8uVtjz82vvWx9Vf85lc/8uGRiGuXphnZ0PFMpqo7Cb7O3IKyP7q5jDOhioGCc2KmkpBKTGRx7fX8SSEaZhYEIpIYjIS+LOuv144rsYNlcMJSpYbEI5ALLAGrjKwLCAyRJBpEA559wq7XS/khz9cXFgUJgENwltBQxVGAOMaDrjbXas8XRUSLxjIzSvfYnH4DAAAQBRo2nfWFdZRWwVUcGy54n1U4m0ZLhgURTeZtBRwNVmQy3zFJfObQ/revueSe5vh4p+MGBt6xbWuvl6KUOkyDrFI/J4/d/EePfPc7xfhEa8cz/fV8x8HRE1auyarCEbc6hc2GUs47Rjqx2c8siUSG1Et0VI8wp2/IjujwlFQyRMTBQ/DWYGbtGBRrKTk+6etDiE7aoXBknBgxFIUrjuAMEGIVM8aEsW0X2laEf70vbOUL5xwTxiqmYqzJDoLfF9uhI0UIIQpYR9YxM3AkIp2i3MVF5bK0FSuXpcCSCzXZ+4SSEFPJfRCMIWaBDacBwNq0jE+0mu+89ve3/q9vtPfuO7d//erHtReBUguLPh2V+nn7o+M3TbfmR45bf95rfvWvPvjx1StWBO+xhq7sZLK8baqMw+EtoQhFEm3lnc17XfWCRgKMIHj4W3KJgVgAGJKsGSvEuAzMiXnfEjJseJY7ICYhYxGZQxSOSIasIxdi2eul/JDn6wvbMDQXPdkkiSZSMkUwOjPXaZeYAAAxIRoLACKCcvjiKACoAU5m2Ndm8SE08oqjDVyHZMqaREoXOoTGSuoj7ZkZX7Fk4BevuebxO+9qBz7v4leseJ8e5FJqIdLbm1K98fiWTzz57TsbSX7uZS+//TM3P1LsOzEftk4EMZRRXGpNDj5GrJwRDvpG7Ui6nU8FCQCwS4CZEY1hIKJW6EgiNeANWd8qdAQQQiXE7EAcCrpQhuhj6hbWFo7n6ws7TZKKjS59avbQVFX1p31SiEdkE4lIEOS5VrooTAA64KDLe98gN2mrQZNhs2gNJEtmeK5hbHue8zqBe6w1flo61LYN7DRHTtgwvHLFpgsvHPnt3+514Uqp56VBVqleOnjzzbvuvn//xP7Jp3cNybJH5548fulStBxRnEml7SmirzkTdY/jkRjoHs2HKAzw3HtZwRrEIkIwJkapJY5CQMNBqnOXjYROM0UijFHYC4tgrdYIZdXbhfwLz9cX1tkl358ZnYJgItRMBoltdoqGTSuRbme3boo1SABAAnGRDYZ4PoapzEzmo3BgDjM1XMHptC8HsHZ3e/cFsOyyD11725//WTF60FPyru2P97pepdSPpkFWqQXhr1adf6A8uHzj2s2vfu29X7hl76FtjeH+FdDIvNufRBd11NKRIIsQdvMrHw5tJCIeCgLMTC5BDNoqeLEQIFY8szxrnNC3JK+iidEkrgilEJoFdkt83r6whU2AXJ61Q0UsdaRO9K1Ucp8gIgADAEE3zUv34vR6KQsCAzJJUnHTxVUha1sqW8Xu2NzUt+SMK9+94547hjDZcMnFa666qteVKqV+XHp3U2oB2fuZW/Y+8EAZmpsueul3tnx5+9T+jSMrTPA6QOHIun1PEaW7q+C5NqgkGICRiKrgwRBEzkxqkTrcEpHE2LJT9GXJhqVL6z6mwXuzsK7z8/WFDYmLPlimHEwgaEFFKA10XqibYrsXQUT+6cr0eikLQh/jpA0l4RDlPxgbDSZ7x/LzH2o9C5tWLVu+YmTz+addc02va1RK/WQ0yCq14Oz73Od23P/w+NhY5YuzX/ur//P3P7axf2mvi1rQDKWRPXMwgEgSD6c3Y5iiBCJgCc6ZGEUQS+aGzTudMs1rHphDabnqx7hmeFnD+14v5Yc8X1/YjFuQpR2EwJAEyYTQmk4siWy305ZBEcYIQmQNucgL6xBbr7hYNY0MuL4f7N135XVb7vzmn/rxyfPqq49/+lu9Lk0p9VPSIKvUwvXETZ9+4vY7asacfNEFD934tR9M71m9ZMUSD1WKmdgpBmeRWhVaS8iCXLpgkEwVSXJBtkYIJQTPiNHaCOKiHvo5kkQ6xy0ZXgqO2y1JUBLw7JGjE4dEhQ8uSUDEAUkVCTGYCM81/xIRYwwRhRAA2FrLzDHG7mSyw0evwERhFCBEA8jI3kA06AoAwgAiBAYwhsoCZsbcMbuwgvVCgxSxEm8oBVcw+7pJOlVqqCJKi9hxADH0RajqriVcq2jvocnBkdX/9r3/cfsd9xVF3Pzy/2f42rf2ehFKqZ+JBlmlFrodN/7X0fseHR8bLXceOKtv9dem7jkrWVtKNEnsQJpIrBE2i0JqdVsJFJ4bqRETIHDwGBktWpeaKNIqJNeJYkdiIRaGq1AOm/TEfGAIbcFVmQIxQ2RjjESOwpSaInhMrPGWmRHxn6MqYnfcKyIKH5742o25RIRQCSIQiggFJhYQQkQwnsCgWAbTBjpQFhNV0UGoycIa0LDQlCJ9bIpEylAudbVYBmFkg4F9DqbpKNq0v7CzUuyf3PHG48/43twsbtgwtGrVCRecu/Hqq3tdvlLqBaBBVqmjxhOnXfpoZ2//mtWnvuY/PPBftjzZnjljKGlbWzJZcX1sDEh00AkVAXoDBm0OruI4L94iDIptUej1Iha0UiQjckgRuRIvRTls0g2Dw1lom8QFCIIYopfg+xqNqiiNJDHGbm8sZmb+p54J3M21RERkY4zMbIxB7oixHiUCWsEELaIRkcrGmao4UHSmQvSYAjvLNqPEY6vXl2RBY0vcKrI0JSIuqohQpZAz+dA2/YPlVDHZnJ8G/+r/+pE93/j/4p7dL1kysvEHj/S6aqXUC0mDrFJHmR233Lj/tvsnDhyYfXqbS+r7mtPL+4eyzMRqLnCgNE9LilKELMFo0kIMYJVbT9GWXk+vH1kD88Cx44vCCKYGESlwykjYSQMcPzySebbM5KgUX0SfO/ynN7LMjCKH38g+92pWDv8VdN/IiqBhpIiGCYztGBgPxWTZmrLOBLZVTMQ6az1KKTEadNp17ci45CzLOWm1OpLYWuJKblvCKsiBmcmT0+EzrnnPo3fcXhKffvllL7nq2l6Xq5R64elTTamj1dfXnjRXdZYct/bMN//KX1z94VOXrrMuPwitJSylcCsxFUCdqc7Ox8pDcMY+d5xfPY+KOXPeAAXOI1oQT1AZCBwNAQpbAAviYhxeMlTMt1bnaXf8QowRWJxzRBRjBJTuO1pfBSA0xnQnFFhTnw7Fgao95UsByl1KEWPpCfMI4iFGYmMFhY2IRQpsen1FFjQXZKYmrlkNUTpbtz4weXh2cmLD8k2mnBzeuG54+cqRCy844X3v63WlSqkXiz7VlDq6Pf6lTz7+d99pmNqmSy6/7fpP7ShnTsXlg2Qrknmo2EHqEipDCIESx9qO9og6CTrPaQCLFAkiMwJYhtk8gaocSGuh6DAHTF2Hy0LiUkmICBE5RhHJssyR8d4DiHPOcyyKApHIGBFh5socflOLAYwQEkWiCjgLwRjT/S1D0Dx3SgyJ9HDekaTSL6GNNfFFu3R2fKL9zo9+8m+/+Sd7du8arC995w7dRaDUsU+DrFLHgm1btuy6966JiTF5dvfm2vBXxvac2re0H2EmNoODOjlgrAhRNMkeCbIwsyEyxkTmIExEZE1aCFjT8RWkVkQAOLEOIhdBCLB7nAtFnHMGKcYIwMaYKOy9l+e6FjAIGT48QTcwspAAGAuIHVMQIAZAEYMWhAAIDQVZWJPGFppgMhvh0anRc1ee+LLffN32B+7jgOe9/BeGfudtvS5NKfVzokFWqWPKtlPOfWR+Nlu3Zv1r/v3DN98yMbpvycolfZTFjg9JQqzB6EisGA+BzeExrxYJBSREsSBkmNmRCSFYcqGsUpd4J8zcnQcmkaE7LJcZkAltdzAsGgKACEJEaQkexRsGQyhAHLtbDhxkQsIgIgIGSICZAZhAtxYcyc6ZPRsHNzYjDG04bvWKNWtfcsaGD2svAqUWFw2ySh2DHtuyZez+B8rhdPUN7/z+hnc/O7v97P6hmARTJdPoE4cpo2dPLAZtiVwryjCQlz6mJcTMepSsiogY9Ktt9SIQid19w8gIAMxMiM65prRNITVXr4javkwNJSQ+lihY9CeNuYhgOj6MhSJ04pt+/3fv/eY3DuzeMZQN/ebOZ3u9JqVUb2iQVeqY9aA8OH7jtw49vq32/b2XvvrXb/7QdVBrnTK4AqNUHOp5reNDQZiiIytUeI8IiYXAgSOiYAzOaN9Z9cIzgDFGMNTddIGGmLndbvfZPjGBpRSunEsDuiraxNbr87OzdbYgD7cPXlQ7/rS3veuZe79LwGe94tK1OlRWqcVNg6xSx77xz225/zu3gfUXvOrSv7rhj6ZHR1euXuk4kIBY4MrPJclAhfVIlcWIYnxAEiQqSXpduzoGWaQQghBaawNHz5GMSdM0Nn20ABxcZOdchyAGqYHpJLB9/OCGgXUe5gaOO371srXLzzn/lA+9t9frUEr1ngZZpRaLAzd/5sl7Hzq0f8yX/qI3vO6W9384t/60NauryRlqNASxkjjHoQF2AJOmYWE2ejZMvQhilCzLvC+990mSIGIVPCKCdTaSQfQQyhhcakMI4+Njb/zoZ+78y78Y3blnMBt4254f9Lp8pdQCokFWqUVn9+c//8A/fgeZz7roFbd/4Y/3TR84bShvSTDGVAb7PUbBA84vi2nUO4R6EUQkAgCOBpDw8IcMEacRlng2Js6Lnzw0s2T5xldceeXTd3w7lMVLXv5v1r7/P/W0aqXUQqSPKaUWqe2fvHHXAw8fGh+D3bvPqi//y9lty1y6tFaf7jSHIoV60gw+Yb1FqBcepa7TbKUuyZO0aJcAYBPnvbdUzjjct//AplWn/uLV7/z+rXeQzTdu3rzx6nf1umSl1AKlTymlFrunT774iWIyX7XiJf/+P/z1zX+4u3Xg1IFh8UUiUllt/6ReDIyIJMTMEZDJCCEjjE8cev1HPnTX//xmVmusXL1h04XnLX/Pe3pdqlJqQdMgq5QCABj77B8+ff/32lyeevHmB2/644eae07rX6ojbdWLAWOw1pZVMFkSkXaPja3YuO71r3n9fQ882ArxzMsu2aBDZZVSPx59Siml/tmuG24Yve/h0Yn9ncpveOOb/+b9bz117UnpZOFTTKtQZEYq4iRnM93XAuPcDDMkCSS23WwtodRjtNYWRTtNUwAQJO+jMUYnih3bnGBRs3a67RtJGkAgVih1hhiDEHkidDWZK7CReamS4EuX1CpfJP7A+PjJwyed8dvv2nXH7Q1nzzz9zPqHP9zr1SiljiYaZJVS/4o7v/iVbf/4v4coOevsl93zxVsebu28rH/TTigH62k6OyXYN0shJ8o9tGNBRBmYKMEbh9g9yANVVSVJxsxABjj2ekHqRRTLourLG6X4EBpJrQKehzAIrrBUFRU5S0U7q6HEUDA4SdHHrbZ8Q//ZW+e3JRvXDq9aN/LS8zdddVWv16GUOvpokFVKPa+dn7hh74MP7D+4t7ljdxqyA+1dy5YtS9tJkqVzUkLwffW8whjblQWqEuvEhFA55wC4LMs0zZkZEUW0H+2xjCxWVVV3eSmxFWPduDmHzIwhX+aLubzVYBbvbOG2VpM54duu/fBD//tvZyYmz0xXnrb173tdvlLqKKZBVin1o/3JihObfmbppo3nvPktz3zspm/Pbz9nZF2Nodmay21SWddhyE1CyFVViEiSJAAgIhCZiCJokD2mEVoGHytrbSFxSNJWqPI8L+OUk1qEzLX9PXzw/IHjzn/bux+/+28TDOdcfOny97+/13UrpY56GmSVUj+ubV/84uQd98379jkXX/SX1/+3+YPjA8N9Q2nW6XQkc1xGA0LOlmVJ1mRJWpalAQRkBup17epFZJkic0jAOeN9iSIuAjIaH6ZrOD45c8qyU2fLmcYJx69avnb1Oecf/4F39LpkpdQxQoOsUuonM7llyxP3Pjg1OlaUnZe+8XV/9KHfW798SebLTLgTOM2zwOBjsDaJvnJkRETb0R7bAlG/R2NwJzWXmrow95U01ef2H5h408f+4L7/939M7tw3XBu+YvuDva5UKXWs0ceLUuqntPuWWx76zq0148698LK/u/HmbbNj5ywfmp6brfX1lz4yoDEGWEiAUbsWHMtaCfSX0Bdof4ZLWvRM6KyiwTe/69dv27p1DuCsV75y/bvf3esalVLHJg2ySqmfycEbvvjsffePHRht792+dmn/I1t/MLxipaAJLEmSVEVprRXRrgXHslrlx/qoL9jRielVQ+uqqli1Yc3KJUvPPv9UvO66XlenlDqWaZBVSr0wbj//3LGJ8f41a8/49Sv+8aZb9rf3n9xYXrEguDZKkqY80zI111+GyTQkkRzYMou+CkugFgBnOeRgLAgjBNI3uD1lAhTeWOctQhl9I60X0Emwr2qWJcR8oPKwhM1kUpg69E01n2kVBbvf+thnH/7TPzm4Y1dfPvBbux/r9RqUUouCBlml1Atp7/XXb7/vgQL8Ca+4/N7fv+lpP3nC0HAS530oXZaKJ48pGeerjo2+TKmvBDC24wARASBISMPhn1WvkEAHYp1csAidKkvydqeTWdesD9SL1mycbmSpq7BV4Y7WdB7wDb/3sYfuvj2QPeuV/2bTVW/pdflKqUVEnxZKqRfes1/4wt7b75sYH+NOccFvXPG1j70vK2jN8GowDFgGYaIaYT7UKWYcd4zUwGAIJUlCaDwH0i4HvYSF4GB9rt3qC+QQxFJp2TC02lWe5mSJytb2zqEzB084+V1XPnHr3zuRMy975bprr+x14UqpRUeDrFLqRbT9+psfveMfKNIZl/672/7whonZfacMrMKS5xMfsSpcPhDAx5AwWoa2FbI2RiENsj3lxHQkYOqExDA0WnEGS9fIU2/bUEwdnFzSv46lObTpxOUj65adv/mk39F2Wkqp3tAgq5R60T37mS/s+t69nWXZuo++Z+DS933p0O0nDa8eapkZaHPdMmF/RwoHlTWDbZzCmOrWgp5KkFsS8gAlogXMwR2sw56x0VqAV3/804/8j29M7tiTpwNv2vdErytVSi12+rRQSv2cPHbgsfSr/7D76a2wbddZV/za/9myZXy+vSGtxwSkU2B/Wgk0DpV2eKhTtXpd7HIY17QAAAxoSURBVKJWJOXSkEzHwPW6DfTsoUMnN0Ze8b53PvDtvweB0y9/1aarrup1jUopBaBBVin18zd+441P33//ofGJg8/uzbLh3c8+sfqk1bX5js8od8n8/Lxzptc1Lmp5DO00QUpGt40Nr95YQGt408YVIys3XnTemve+t9fVKaXUP9Mgq5Tqma+deNHM1MEVx6++5Ipf+vIffLyFnXMbI7M5pqHXlS1yZL4/M35WbW3b+6Lj6/1Db9n7SK9rUkqpf4UGWaVUj41+9rMP336nJzr98l/5x89dP39o/7KRpYxsicFXhDYDI+2yqCEn2UDhGeMsxJjkCScxCjE48r1exIIWCcDHBJ34YGtZ4QuDEonzgO3UQDSmEnS2MtFDNXZw7Beu/+KzX/3a5LPbV7iB1+/VjbBKqYVLg6xSakHYtuUr2++5d2Z03/SzTzYs7R8fP35kDYYYnS+A2SY51WKYmUeXQJZzFGgbrkhsdJkXHaBwJDaEiFD0WyoDdWKS1YRN26GryM/P1JcmeadsCu6dDW/54HX3P3zrLPrj/u2vXPzWt/a6cKWU+hE0yCqlFpavrzturtlcvun4M9/yuq+876MJ4aahpT7OpRRcGII6SSwxmqITQ1+Kcb5Wtbxb0uuqFzTxVb+rHcLKAA5EU4kHHxNj53M7FNyt03tOHdrwy1e/88lb7ypLOPuSl6/44Lt7XbJSSv1YNMgqpRaip7948yP/cKthOe/SS++5/uZny6n12VJD89EmVIEYGsjzCd+yJdapVmHV63oXNIdwqKqGIDPOTScx5SL1lcnxkT3jm5adVMVycNPG1SvWnHjheSu1HYFS6qiiQVYptXDtvOGGvffePzFxgIvqote84Uuf+uhI/+BwyS3sZFUVsjyzfZOCNd/udaULWszIMiwvaBSrwmHOdvfkwV/ccObjM3sOtFpLa8vetvupXteolFI/DQ2ySqmjwP4bb3norlsNmZPPeemdX/vqU5M7LslW7ccqrbv+6WYzS3td4ILmgYl9HqQzkO4fn3v11R9+4lt/3Rob2zQ4ct6jd/a6OqWU+ulpkFVKHTW2f/LG3Y8+Mj6xv719dx0aBw5s71u/zHUArfS6tAXNMG1vTpVlvOpTn3j0ttva7er0Cy894Xf/c6/rUkqpn5UGWaXU0efP1p/dbE4NnrD2rNdd8WfXfWT94NJeV7SgPT03+/bfed9j996LZDa/6heWv+c9va5IKaVeGBpklVJHq2dvumnrbd/N0Gy64IK7bvnj/ZPjK1avqomZrpoDqZOi1XQyBPk8m0RMaSUpCs7R+Yi2jiyh8kREBiqObFAAnCysW2KM0RiDhkRERAiQBEAkBHIJSSjJQCkhMY6DVNZAiXmezfnWYLRlLdk+tveEZasvuvK1T935cMfzuS+7aP0HP9jrNSml1AtpYd21lVLqJ7X9k5/c88DDVQwnXXbJXZ/67FhzfHDNWtehxGYYCLCsqJ0wVwDOZp0YLVMRy9S6WpaHEKqqcs4RkY8BF9gOBUQEAAb5oSALEJKYBiwjAxBYF2PsA+stBlcZLxRxe/PgKrf81/7TOx++/x6XunWbz9h49XW9XYtSSr0YNMgqpY4Fu264Yc9d90we2O+93/wbb/7GdR9cUbO2MeC9h8x54eUVRsC5qmpkeZWJ954ZmDlzCbD4oqzlecWx1+v4IYgoIgzS/bmbsw3gvLSWcd5BQiHK0qZUtaICC2kZnpwZXbNs7ave//6nvvudnM0pLz1vyQc+0ONlKKXUi0aDrFLqmLL7s7f84LZvJw5PetXl93764ztac8sHVjigvPRTSdlnG1XHGyidcxEhxohoCBAiW2MW4IQwEcHnMDMAIGLbupGWdDJqcRl8uSKpxfn2gzi5YWDdr73tA4/d97cuc8dfdNGa97631+UrpdSLS4OsUuoYtPuWW/befWdZVqede9G3b7npqdb+U/vXMiZzthqKwYr1MQqSda7wlYjkeV51CjDU68L/Fd0NBiLCzN1Em3jbscEkmEaeNnLg4MwJI5te8Zq3/+CxW/MkP+Wci4ev1emySqlFQYOsUuqYdeAT1+944L6xif28Z/SS+vqvTty+vL6MkiFqF3meV1XFEJ1zQbj7Db7BBRdku7sLRAQAiAgIAUC4SgPM5Ti258AFK08/443veOLhu/Ik33j6uauue0evS1ZKqZ8fDbJKqWPfgVNe/khrl1u76uTXvu7Lv3v1qpHjxIfcJbHTsUhZlrTLAg0AL6xboogQEbIc/sGawLEMPiX7pG+uw6UnvfU15fe2jqRDIy85TyOsUmoRWlh3baWUevHs+/znH/7u32UmOev8l974iY+5ik9cs843m4kzLEKOYlxYbQtExBiDLMxMRELYLjqz8/Mr+9fPYtttWDs4NLzsnNNfcd11va5UKaV6Q4OsUmpxmfj0p++78w4O8SWbN9/9la89M7Pn9OUbCmZEI8FQlByxkqpMGQ1wUSXovK0nISQAngsmDM76iE5IuCQia62E2A2d3fNY3Re7EqK1FhFjjEIoIqnEEtEbS9FRNA4BTOWlw7GRWeOrliFqNuLQdCxrWAAP+EawAUMRagY7vGO2fVzf8UWYDNH3pYOv37e1x5dSKaV6TYOsUmox2nnddXseeVRCedn5m7/xtW8+Mzd6UrYsJL6CCij2u1o1VVGtURkg743pCNgOo8nqIQRinyObUPmk0c2pKPBP21i72wCYudtwgJmttd0/fTuYDIA9VpUjxzbxiIKUlLMzDZOVWRWLmh20sRMhEcsztjPADiF7YGz/ukZeg7qPNJQuecO+B3t9/ZRSakHQIKuUWrzkuut+8Ojj+w+N79u116Vu9OD2tSvWzzMK+CUslfiK3bJQm7TNrJZGHxwDVMGZJHCMZCIBEYUQum9eQwiWTIyxeySLiAAghJCmaVmW1tpZpj4BByVkAgDVfFWJof4BK818nkIWMjM8D1N+OjYGiT08MTt5Vr5uijqz0Y82529sNnt8vZRSaoHRIKuUUvDfjz9xvjW1Yu2mi37pTX/zlRv2To+duvaE0JyL9RCquSFeNScdQo/BI1GS1NolF5mr+eJwn1dDBNh9C2sAI4gxJsZonK2qKnWJ9x4AMkkCgEepgMlIBpgxkueCsZVVieSeJ3NYPjq/b4763/zetz/w1/9nfM/+FW7girGne32FlFJqIdIgq5RSh41e98Vtj9w7MbGfufPSX/2lP//M5+bL9skjGyTMFmlSxxxKKU10HA36WSoHpOFDsNZWMXR3FEiIiXMiQsYURWESF2O0SETEMeYokyjG1QYChqJVZmiSlOYqn9ec513tZyqov3b4pPvnp3DNSH3p8NkXnLtRD3IppdTz0yCrlFL/0u5PfGLr3fdMTkwQ0+VvfPutn7/+6bHdeRE3rl475youi7V9A4eKOfJOAMjZKAwAxhgO0QB2JxdEELIGEaMPjgwz10nagUNuxQCV7USSeUl2zncADr1p+IJ75naylH2mdkZ92UlPPdTra6CUUkcBDbJKKfW8xrZ8Zef37j2wf8/s9KFzXv+ah7/0tX0H96Vk41Rr+KQTk3LepUmz6JA1RCSRsyRtt9tZkrSLotHf1y461troA4dYy7IZbM2Nt5olQGrSwGtXrC18c7pqDZts0Jiz6qs3PXlnr1eslFJHEw2ySin1oz32mc+MPfTo1IGxA08+VTRb6086+Rfe+NpvbdniUrd7734gAWMkxOGly+ZmZpYvG544dHBg6ZLx8QkySEjIMjK8vMa87sorv/fVP5ncsbuR11JjBxoDb97+/V4vTimljlYaZJVS6ic2fuONz9x/f2tmeufWrZ2yaBeFAKRJQoC1LPOVd2nSLjosUlUVIuZJWk/S4dNOy4eGBjZvftk11/R6BUoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSiml1I/wfwFJnsKWqGKM7AAAAABJRU5ErkJggg==\"\n      ></image>\n    </g>\n  </svg>\n);\nexport default SvgRedis;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Redis/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport { SvgRedis } from \"./Redis\";\n\nexport const RedisIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgRedis ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Searx/SearxLogo.jsx",
    "content": "const SvgSearxLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <defs>\n      <linearGradient id=\"Searx_logo_svg__b\">\n        <stop\n          offset={0}\n          style={{\n            stopColor: \"#fff\",\n            stopOpacity: 1,\n          }}\n        />\n        <stop\n          offset={1}\n          style={{\n            stopColor: \"#fff\",\n            stopOpacity: 0,\n          }}\n        />\n      </linearGradient>\n      <linearGradient id=\"Searx_logo_svg__a\">\n        <stop\n          offset={0}\n          style={{\n            stopColor: \"#a9a9a9\",\n            stopOpacity: 1,\n          }}\n        />\n        <stop\n          offset={1}\n          style={{\n            stopColor: \"#000\",\n            stopOpacity: 1,\n          }}\n        />\n      </linearGradient>\n      <linearGradient\n        xlinkHref=\"#Searx_logo_svg__b\"\n        id=\"Searx_logo_svg__d\"\n        x1={120.689}\n        x2={120.689}\n        y1={239.618}\n        y2={602.175}\n        gradientUnits=\"userSpaceOnUse\"\n      />\n      <radialGradient\n        xlinkHref=\"#Searx_logo_svg__a\"\n        id=\"Searx_logo_svg__c\"\n        cx={294.459}\n        cy={208.38}\n        r={107.581}\n        fx={294.459}\n        fy={208.38}\n        gradientUnits=\"userSpaceOnUse\"\n      />\n      <filter\n        id=\"Searx_logo_svg__e\"\n        width={1.26}\n        height={1.294}\n        x={-0.13}\n        y={-0.147}\n        colorInterpolationFilters=\"sRGB\"\n      >\n        <feGaussianBlur stdDeviation={6.476} />\n      </filter>\n    </defs>\n    <g transform=\"translate(-61.72 -34.87)\">\n      <path\n        d=\"M70.523 34.87c-7.12 15.244-10.178 31.78-8.225 48.815 5.016 43.774 41.675 79.325 91.536 95.163-6.626-22.407-5.341-44.936 2.64-65.844-47.738-14.183-81.646-42.809-85.95-78.133zM303.779 36.214c7.12 15.243 10.178 31.78 8.225 48.815-5.016 43.774-41.675 79.324-91.536 95.163 6.626-22.408 5.341-44.937-2.64-65.845 47.738-14.182 81.646-42.808 85.95-78.133z\"\n        style={{\n          fill: \"#000\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n      />\n      <path\n        d=\"M-5.09 259.06h18.416c6.22 0 11.228 16.683 11.228 37.404v172.837c0 20.722-5.007 37.404-11.228 37.404H-5.09c-6.22 0-11.228-16.682-11.228-37.404V296.464c0-20.721 5.008-37.403 11.228-37.403z\"\n        style={{\n          fill: \"#000\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n        transform=\"rotate(-49.03)\"\n      />\n      <path\n        d=\"M402.04 208.38a107.581 107.581 0 1 1-215.162 0 107.581 107.581 0 1 1 215.163 0z\"\n        style={{\n          fill: \"url(#Searx_logo_svg__c)\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n        transform=\"translate(-107.076 -60.61)\"\n      />\n      <path\n        d=\"M233.345 299.293a101.52 101.52 0 1 1-203.04 0 101.52 101.52 0 1 1 203.04 0z\"\n        style={{\n          fill: \"url(#Searx_logo_svg__d)\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n        transform=\"matrix(.76866 0 0 .76866 85.803 -82.536)\"\n      />\n      <path\n        d=\"M210.617 156.357a27.274 27.274 0 1 1-54.548 0 27.274 27.274 0 1 1 54.548 0z\"\n        style={{\n          fill: \"#1a1a1a\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n        transform=\"translate(5 -7.143)\"\n      />\n      <path\n        d=\"M203.546 203.329a5.556 5.556 0 1 1-11.112 0 5.556 5.556 0 1 1 11.112 0z\"\n        style={{\n          fill: \"#fff\",\n          fillOpacity: 1,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n        }}\n        transform=\"translate(1.485 -63.565)\"\n      />\n      <rect\n        width={2.239}\n        height={159.438}\n        x={19.526}\n        y={337.84}\n        rx={2.867}\n        ry={9.001}\n        style={{\n          fill: \"#fff\",\n          fillOpacity: 0.82211531,\n          fillRule: \"nonzero\",\n          stroke: \"none\",\n          filter: \"url(#Searx_logo_svg__e)\",\n        }}\n        transform=\"matrix(.74467 -.84318 .84318 .74467 -35.543 -26.35)\"\n      />\n    </g>\n  </svg>\n);\nexport default SvgSearxLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Searx/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgSearxLogo from \"./SearxLogo\";\n\nexport const SearxIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgSearxLogo ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Serper/Serper.jsx",
    "content": "const SvgSerper = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 48 48\"\n    {...props}\n  >\n    <image\n      width={48}\n      height={48}\n      href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACGVBMVEUAAACVyvSRzvOPzfSQ zfSRzPSQzfSQzfSQzfSQyPSUyfKRzvOQzfSRzvSQzfOOxvGO0PaQzfSQzfSQzfSTzvWZzP+RzPSQ zfSPzfOA1f+Qy/KPzfSQzfSQzfSPzfSRzfSPzPWPy/iRzfWQzfSRz/GPzfORzvWSzfaPzvaQzPOP zPWQzfWQzfSQzfSQzvSMzPKSzvOPzfSQzfWRzvWQzvWN0PKTzPKQzfOQzfSQzfSAv/+Rz/WQzfWQ zfSPzfOQzfSQzPORzPSPzfSRzPSqqv+QzfWQzfSQzvSQzfSRzfWPzPX///+RzvSQzfSQzPSQzvSL 0f+QzvWSy/WQzfWQzfSQzfSPzfWRzfWRzPWRzPWT0feQzPOQzfOQzPOL0fOPzPORzfSPzfOQzPaQ zfSQzfSPy/KQzfWQzfSQzfSPzPOPz/eQzPSQzvSQzfSQzPSPzvSQzvSQzfWPzvWQzfOQzPSJxOuP zPWQzfSQzvSPz/SV1eqQzPSQzfWPy/OQzfSOzfGQzvSRzfOfv/+PzfSQzfSQzvWQzfWSyO2PzvOQ zfSRzfSRzfSSzvOA//+PzvSOxv+OzfKPzPWQzfSRzPKSzPSQzfSQzfOQzfSOzvWPzfOQzfSSzvSR zfSRzPSW0vCRzPSSzvOQzfOQzvSQzfSIzO6OzfWS2/+RzfSSzPCQzfWQzvWQzfORz/KQzfSRy/WQ zfSQzfSQzfT////309j7AAAAsXRSTlMAGFiQuNnu+Y8XE23KyWwSG/X0jhoFb/KABifQ5aNwSDIi M84lUpY4OZdQZ/z4hxQViWVoxCYox/6KBE/z/WvxbniLdAOVy+jkfxkBXeGmjAuqMa3snntmfash aldVFrC0mTfBqDt64udpIHOl0dRytdxJheMNS9rtMAzPw0DrJL9WCGC8fNsOgkdhpD8CWQk9kuo8 RvvFnzQp+i+7jRFfKsaRdQ9NB/AjTGOYOvZKttg9JvjTAAAAAWJLR0RLaQuFUAAAAAd0SU1FB+cF HgMFK2w+nRoAAANfSURBVEjHhVX5QxJREH6eKGQmiIQheJflgXiRYhalmCRlYWqGZZdHB6WllZra aZaVmZUWppZJduj+h8089mIXcH7Ynfnmm7fvzcybJUQqUdExsXHxCkV8XGxCdCLZRpSqHUyQJO1M jkDfFZPCyEStSQ1D16bpmJCSslsfip++h/UbMoymzKysbJMxw8BCOblyfl5geXX+XjG6ryCwSd1+ Kf9AIeJFxSVSh7lUgZ5CSzBcRtcprwi118oq9FmDIvLo+gerw2RDQ79RIzqvDYDaQ+HzraoFQh1/ cj3NTwQ+IYdprrSsdQQtO4koCcg5ytZXjecV7f+Yqb7BoW4sPy7KgRZPbmuiegyoikre5TzRzJW4 1mXm4YoiAE6ipsTSFPOOUy3irjCc5h12LCt2ogq7hV/JeQZ57tazbe0dWDHHOc5TgjvvBAX7OZ9f 5zxYzZ5As3VdAOMi7+oGqwpQK7wv8ehl2Abfzs4r4EvnrKtYbzOJhlejkA03w1wTLGUPoxZ22wtU D81RhkCBDPSJ0t9/XTg1uQFUDYmFZ5oA3mSYW11hiucF6m1yB54DAjgI5l3LvZABQ+AbJvfh+UAA H47QezGqaRuTTYxM8DwimOxxEZo8IVStY/KxOCAXl5IFEOeTEaHSjR5ZgGRLVNIt9U972JBn0i09 Dz60IC/GpoaxVC8lh5akNUic09CiE5K0YuFeCZzE10FDawo6f4YzXLRw2G0GJ4eZHzGjM6KAN+B9 y33PQVuDNh8/vN6BMS0KmGWY95w+F2g+kgTvAg7Ux8HlEFL5YV60X2zvj0R6gQZgoFg/fab6QgEY i1+40+HNLANFiTepNCgVDNMz2vKVTmJrG+fw4RRYQg3nmmKBj/hmE91p3SQHLy/ibKRqKjJWtHxE f3cRS49f5RtQj0fVRQWM7+j0iXLzY22wtaW13fRTgFaR42UNbQ5aKhJBjMho4Iddbh1OrQgRRhzG 634BqKHjXqMNTdfPonf+lxizYL2ZqoVQ/OUkmt+NYNRCv6GwywZAom+Rrr8hddTUBX6xv/84BdA5 1/2Xwutr8i+P57DZ73V5/2X7/dlDXpeDhRr8JIRUh/uxq0P/2EGafGo53WaPilCg5M4Vq5htXelb ItuIeVKzueVWKNxbmz6P7D9P/gNwmex8k7QhUQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wNS0z MFQwMzowNTo0MyswMDowMLa1rmEAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDUtMzBUMDM6MDU6 NDMrMDA6MDDH6BbdAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIzLTA1LTMwVDAzOjA1OjQzKzAw OjAwkP03AgAAAABJRU5ErkJggg==\"\n    />\n  </svg>\n);\nexport default SvgSerper;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Serper/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgSerper from \"./Serper\";\n\nexport const SerperIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgSerper ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Share/Share.jsx",
    "content": "const SvgShare = (props) => (\n  <svg width=\"1em\" height=\"1em\" {...props} xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M11.995 19.5a7.232 7.232 0 0 0 2.898-.585 7.582 7.582 0 0 0 2.392-1.627 7.748 7.748 0 0 0 1.625-2.398c.393-.904.59-1.868.59-2.89a7.172 7.172 0 0 0-.59-2.89 7.708 7.708 0 0 0-4.026-4.024 7.231 7.231 0 0 0-2.898-.586 7.209 7.209 0 0 0-2.888.586c-.905.39-1.7.932-2.387 1.626A7.788 7.788 0 0 0 5.09 9.11 7.172 7.172 0 0 0 4.5 12c0 1.022.197 1.986.59 2.89a7.748 7.748 0 0 0 1.625 2.398 7.582 7.582 0 0 0 2.392 1.627c.904.39 1.867.585 2.888.585Zm-3.687-4.238a.423.423 0 0 1-.316-.149c-.093-.099-.14-.247-.14-.446 0-.966.14-1.812.419-2.537.279-.725.721-1.29 1.328-1.696.607-.406 1.406-.609 2.396-.609h.093V8.366c0-.142.051-.266.154-.372a.514.514 0 0 1 .385-.158c.105 0 .198.024.279.07.08.047.182.129.306.246l3.167 2.956c.068.068.118.14.149.214.03.074.046.148.046.223a.578.578 0 0 1-.046.223.668.668 0 0 1-.149.213l-3.167 2.984c-.21.198-.409.297-.594.297a.52.52 0 0 1-.53-.511v-1.487h-.093c-.736 0-1.354.115-1.853.344-.498.229-.93.675-1.295 1.338-.075.136-.16.223-.256.26a.78.78 0 0 1-.283.056Z\"\n      fill=\"currentColor\"\n    ></path>\n  </svg>\n);\nexport default SvgShare;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Share/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgShare from \"./Share\";\n\nexport const ShareIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgShare ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Share2/Share2.jsx",
    "content": "const SvgShare2 = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    x=\"0px\"\n    y=\"0px\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 485.213 485.212\"\n    fill=\"currentColor\"\n    {...props}\n  >\n    <g>\n      <path d=\"M394.236,212.282L272.934,333.584V272.93c0,0-121.304-30.324-181.955,60.654c0-100.483,81.469-181.956,181.955-181.956   V90.978L394.236,212.282z M485.212,242.606c0,133.976-108.627,242.606-242.604,242.606c-133.994,0-242.606-108.631-242.606-242.606   C0.001,108.628,108.613,0,242.607,0C376.585,0,485.212,108.628,485.212,242.606z M454.89,242.606   c0-117.038-95.241-212.279-212.282-212.279c-117.055,0-212.28,95.241-212.28,212.279c0,117.039,95.225,212.28,212.28,212.28   C359.648,454.886,454.89,359.645,454.89,242.606z\" />\n    </g>\n  </svg>\n);\nexport default SvgShare2;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Share2/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgShare2 from \"./Share2\";\n\nexport const Share2Icon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgShare2 ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Slack/SlackIcon.jsx",
    "content": "const SvgSlackIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 54 54\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <g fill=\"none\" fillRule=\"evenodd\">\n      <path\n        fill=\"#36C5F0\"\n        d=\"M19.712.133a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386h5.376V5.52A5.381 5.381 0 0 0 19.712.133m0 14.365H5.376A5.381 5.381 0 0 0 0 19.884a5.381 5.381 0 0 0 5.376 5.387h14.336a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386\"\n      />\n      <path\n        fill=\"#2EB67D\"\n        d=\"M53.76 19.884a5.381 5.381 0 0 0-5.376-5.386 5.381 5.381 0 0 0-5.376 5.386v5.387h5.376a5.381 5.381 0 0 0 5.376-5.387m-14.336 0V5.52A5.381 5.381 0 0 0 34.048.133a5.381 5.381 0 0 0-5.376 5.387v14.364a5.381 5.381 0 0 0 5.376 5.387 5.381 5.381 0 0 0 5.376-5.387\"\n      />\n      <path\n        fill=\"#ECB22E\"\n        d=\"M34.048 54a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386h-5.376v5.386A5.381 5.381 0 0 0 34.048 54m0-14.365h14.336a5.381 5.381 0 0 0 5.376-5.386 5.381 5.381 0 0 0-5.376-5.387H34.048a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386\"\n      />\n      <path\n        fill=\"#E01E5A\"\n        d=\"M0 34.249a5.381 5.381 0 0 0 5.376 5.386 5.381 5.381 0 0 0 5.376-5.386v-5.387H5.376A5.381 5.381 0 0 0 0 34.25m14.336-.001v14.364A5.381 5.381 0 0 0 19.712 54a5.381 5.381 0 0 0 5.376-5.387V34.25a5.381 5.381 0 0 0-5.376-5.387 5.381 5.381 0 0 0-5.376 5.387\"\n      />\n    </g>\n  </svg>\n);\nexport default SvgSlackIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Slack/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgSlackIcon from \"./SlackIcon\";\n\nexport const SlackIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgSlackIcon ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Streamlit/SvgStreamlit.jsx",
    "content": "export default function SvgStreamlit(props) {\n  return (\n    <svg\n      width=\"301\"\n      height=\"165\"\n      viewBox=\"0 0 301 165\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path\n        d=\"M150.731 101.547L98.1387 73.7471L6.84674 25.4969C6.7634 25.4136 6.59674 25.4136 6.51341 25.4136C3.18007 23.8303 -0.236608 27.1636 1.0134 30.497L47.5302 149.139L47.5385 149.164C47.5885 149.281 47.6302 149.397 47.6802 149.514C49.5885 153.939 53.7552 156.672 58.2886 157.747C58.6719 157.831 58.9461 157.906 59.4064 157.998C59.8645 158.1 60.5052 158.239 61.0552 158.281C61.1469 158.289 61.2302 158.289 61.3219 158.297H61.3886C61.4552 158.306 61.5219 158.306 61.5886 158.314H61.6802C61.7386 158.322 61.8052 158.322 61.8636 158.322H61.9719C62.0386 158.331 62.1052 158.331 62.1719 158.331V158.331C121.084 164.754 180.519 164.754 239.431 158.331V158.331C240.139 158.331 240.831 158.297 241.497 158.231C241.714 158.206 241.922 158.181 242.131 158.156C242.156 158.147 242.189 158.147 242.214 158.139C242.356 158.122 242.497 158.097 242.639 158.072C242.847 158.047 243.056 158.006 243.264 157.964C243.681 157.872 243.87 157.806 244.436 157.611C245.001 157.417 245.94 157.077 246.527 156.794C247.115 156.511 247.522 156.239 248.014 155.931C248.622 155.547 249.201 155.155 249.788 154.715C250.041 154.521 250.214 154.397 250.397 154.222L250.297 154.164L150.731 101.547Z\"\n        fill=\"#FF4B4B\"\n      />\n      <path\n        d=\"M294.766 25.4981H294.683L203.357 73.7483L254.124 149.357L300.524 30.4981V30.3315C301.691 26.8314 298.108 23.6648 294.766 25.4981\"\n        fill=\"#7D353B\"\n      />\n      <path\n        d=\"M155.598 2.55572C153.264 -0.852624 148.181 -0.852624 145.931 2.55572L98.1389 73.7477L150.731 101.548L250.398 154.222C251.024 153.609 251.526 153.012 252.056 152.381C252.806 151.456 253.506 150.465 254.123 149.356L203.356 73.7477L155.598 2.55572Z\"\n        fill=\"#BD4043\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Streamlit/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgStreamlit from \"./SvgStreamlit\";\n\nexport const Streamlit = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgStreamlit className=\"icon\" ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Upstash/UpstashIcon.jsx",
    "content": "import React from \"react\";\n\nconst UpstashIcon = (props) => (\n  <svg\n    width=\"256px\"\n    height=\"341px\"\n    viewBox=\"0 0 256 341\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    preserveAspectRatio=\"xMidYMid\"\n    {...props}\n  >\n    <title>upstash</title>\n    <g>\n      <path\n        d=\"M0,298.416784 C56.5542815,354.970323 148.246768,354.970323 204.801032,298.416784 C261.354571,241.86252 261.354571,150.170106 204.801032,93.6158424 L179.200462,119.215688 C221.61634,161.631567 221.61634,230.401059 179.200462,272.816213 C136.785307,315.232092 68.0157428,315.232092 25.5998642,272.816213 L0,298.416784 Z\"\n        fill=\"#00C98D\"\n      ></path>\n      <path\n        d=\"M51.200362,247.216367 C79.4772765,275.493137 125.323122,275.493137 153.600615,247.216367 C181.877385,218.939598 181.877385,173.093028 153.600615,144.816259 L128.000769,170.416105 C142.139154,184.55449 142.139154,207.477412 128.000769,221.616521 C113.86166,235.754906 90.9387378,235.754906 76.800353,221.616521 L51.200362,247.216367 Z\"\n        fill=\"#00C98D\"\n      ></path>\n      <path\n        d=\"M256,42.415426 C199.445737,-14.1384753 107.753322,-14.1384753 51.1994207,42.415426 C-5.35485714,98.9696894 -5.35485714,190.662104 51.1994207,247.216367 L76.7989048,221.616521 C34.3841124,179.200643 34.3841124,110.431151 76.7989048,68.0159962 C119.214783,25.6001177 187.984275,25.6001177 230.39943,68.0159962 L256,42.415426 Z\"\n        fill=\"#00C98D\"\n      ></path>\n      <path\n        d=\"M204.800308,93.6158424 C176.523538,65.3390727 130.676245,65.3390727 102.399475,93.6158424 C74.1219813,121.893336 74.1219813,167.739181 102.399475,196.015951 L127.999321,170.416105 C113.860936,156.27772 113.860936,133.354797 127.999321,119.215688 C142.137706,105.077304 165.060629,105.077304 179.199738,119.215688 L204.800308,93.6158424 Z\"\n        fill=\"#00C98D\"\n      ></path>\n      <path\n        d=\"M256,42.415426 C199.445737,-14.1384753 107.753322,-14.1384753 51.1994207,42.415426 C-5.35485714,98.9696894 -5.35485714,190.662104 51.1994207,247.216367 L76.7989048,221.616521 C34.3841124,179.200643 34.3841124,110.431151 76.7989048,68.0159962 C119.214783,25.6001177 187.984275,25.6001177 230.39943,68.0159962 L256,42.415426 Z\"\n        fillOpacity=\"0.4\"\n        fill=\"#FFFFFF\"\n      ></path>\n      <path\n        d=\"M204.800308,93.6158424 C176.523538,65.3390727 130.676245,65.3390727 102.399475,93.6158424 C74.1219813,121.893336 74.1219813,167.739181 102.399475,196.015951 L127.999321,170.416105 C113.860936,156.27772 113.860936,133.354797 127.999321,119.215688 C142.137706,105.077304 165.060629,105.077304 179.199738,119.215688 L204.800308,93.6158424 Z\"\n        fillOpacity=\"0.4\"\n        fill=\"#FFFFFF\"\n      ></path>\n    </g>\n  </svg>\n);\n\nexport default UpstashIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Upstash/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport UpstashIcon from \"./UpstashIcon\";\n\nexport const UpstashSvgIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <UpstashIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/VectaraIcon/Vectara.jsx",
    "content": "export const SvgVectara = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width={1000}\n    zoomAndPan=\"magnify\"\n    viewBox=\"0 0 750 749.999995\"\n    height={1000}\n    preserveAspectRatio=\"xMidYMid meet\"\n    {...props}\n  >\n    <defs>\n      <filter x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\" id=\"143604a479\">\n        <feColorMatrix\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0\"\n          colorInterpolationFilters=\"sRGB\"\n        />\n      </filter>\n      <filter x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\" id=\"92b242bc1b\">\n        <feColorMatrix\n          values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.2126 0.7152 0.0722 0 0\"\n          colorInterpolationFilters=\"sRGB\"\n        />\n      </filter>\n      <clipPath id=\"a4e1f56fbd\">\n        <path\n          d=\"M 0 48.4375 L 750 48.4375 L 750 701.6875 L 0 701.6875 Z M 0 48.4375 \"\n          clipRule=\"nonzero\"\n        />\n      </clipPath>\n      <image\n        x={0}\n        y={0}\n        width={720}\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAJzCAAAAAADtHsAAAAAAmJLR0QA/4ePzL8AACAASURBVHic7d1nYBTV2gfwZ2bTEwIJCSShJSEQupSEJoI0pQmioiIWFBXFC1dUqooNBVGvvl6vXr169doFQRQFkSLSeyehpvdCetvN7rwf0jbJtpmdmXNmzvP7QtrOPEn+nMzMaRwgRALv7eNriOwRHdbTO7g7V/cxISur4mrWpUs5xqoqs7TDcvJViJCLDAGBbbv26h/X1ZvjOB64xhQKAlgEQchJOH70WklpuYRDY6CRygI6BHcfEjcokHMUPkHIOXnkYEpOpdijY6CRiri2UV0HDxvYwbXYlR3668j5fIu4M0gpCyEpAvr0GjyqR6CYl2Ts3HXiSq2IF2CgkTo8YkcMiu/rJ/p1109u/z3B9VYaA43UEDL6piED2kp7bfWR39cnufrFGGikOL7bbbf2jfCUfoDKA99vKpavHoTc4DH09ZMFgnvM+V8PNZD+RhAC3nvMf66WuRlnQRCEmovPhZD+ZhDrDH4TNmfXyBBnQRCEiq9686S/IcQyQ+DYHwtrZYqzIAim8zPFPyRBSB5cwKhviszyxVkQBEvBovb4FAMR4T3sjRRZ0ywIgiBUr4kh/Y0hFnF9n70if5wFQTBu6kX6e0PsiZi3y6RIngWhZmMf0t8dYozPhM9LFYqzIAhVv49zdHIPtb5LxIpeD82MUbATxOdWj8Izyh0eoWb87v6zXLnmWRAEQaj+Ea86kDq4Xp9lKBxnQRBqNsbarQA7yJF8/Gf939gg5U9j6GE8JXoqC0IieUSuy1e+eRYEQRAqF/uT/m6R3vlNOVylUp4FofBOfJyBFBW6NEe1OAuCkDAAO8GRcrzivq1QM8+CeWOEzULwphDJoO30Nbe4MSNFAi666oC4+eAIuSrs5XRVm2dBEAQhdzJedCAlcL2/rlY/z4L5z842isFLDuQmrymvTSfxyIELhd0CgfMiffNamEigeRYEQRCujif9zSPdCXw3x0Iq0Jb1rbsl8ZIDuYGLfmtOELF7My40+2TLj2GgkXRc/DtTfQme39/78PUWH8JAI8m8xrw1hmyAOmcfbPERDDSSymv2O/0Jl+DheSKv+Ucw0Eiido8siyZdA3S+crT5BzDQSJq2C18MI10DgMHvePMmGgONpODCFz0jauVypXQ5c7pZ7woGGknAdX7lCTqG2PPcQVxoF7mJ6/yFUutuiFY+vdlzcGyhkXid1s5Wd7CoA15VB3F+IXJL/G9G0u2ylewh1rXhirtIrPh1t1LTPgNAxzEkOyuR5sXtIjYaybZj1pOxsIVGonBxa8ZRNlOk32CrO0G8KURicENen0i6hpa4mh2mxnewhUYi8ENW30K6hlb4m622E8IWGonQc90k0iW0xvkknW6cAI4tNHJdl+cozDOA1+SmdhkDjVzFdX7pYdI12GQY3K3pbYJ1IG3ptPpBSheU49IaB5FiC41cFPz6fZTmGfyb7lQx0Mg1vkvv8iJdgz187wGNb5KsA2mH7/OP0zFe1Kbgxo2EMNDIFdyC+SoszS9Zm6ENb2GgkQsM9/8txPlXkWPoGVX/FgYaOcdNWxlJugbHwm+sfwMDjZziRjxL+4bEocPr38BAI6f6vHAT6RKc8YgNrnsDA42ciVg5mXQJznWpn7eCgUZOBD1zH+kSXBDet+5fDDRyzHfBfNIluCIwtm7aAQYaOeR5398CSNfgkp49AAADjRzjxy7vSLoG10T1BgAMNHKs5xvdKZtBaE9XbKGRU53/MVAjeQZDFy8ADDRypN2LY7UzYD6mKwAGGjng+chMH9I1uK47Bho5xE1/MpR0DSJ0jgDAQCP7hj4bQ7oEMfyjDICBRnZFLxtBugRxYjoABhrZEzx/GukSROrZETDQyA6fOx6laYlRV0S2Bww0so0ftjiYdA1ihYUCBhrZFrmiD+kSxIvywUAjm9o9P5Z0CRLEtMVAI1u8H5pF7RocDnQPxEAjG7gRy9qQrkGKTv4YaGRD9zUaGTLaQkwIBhq11mblII3GItyAgUYtedw/zZt0DRJ198VAo5bG/k1LQ5KaifHDQKMWYhb2Jl2CZOHeGGjUXJtHxmtljkprUT4YaNTclIf9SJcgHbbQqIUhz4SRLsEN3qEcBhpZCXtsqPMvolhnDww0auJ922zSJbinkycGGjXptySQdAnuicBAoyYR2ppE2BoXYsBAowa+D8zS7hO7Ol2xhUYN+OGLaN2H0GVBeFOIGnRcos0xdtaisYVG9Tznj9HOsl92eWGgUZ1xczXcRdiAi8JAIwAA6PR0F9IlyIBrj4FGAAAeC0bpIgqCpPtaHnjg6p/wWEAQBEHOmhABt96ljY0nnOD6iw007+Fp4Pu07ecV0g0AACquVmdlpOfX1prNmGrt6vp4T9IlyILzFxNoztvXP2rIkN6d/MGD4+v+QglmMFuEvBMJF84XVFVhprXJ65GJpEuQi+uB9m3XYezwuC4czzfrTvIEAGgTJVgqDx/4Kyu/DDOtQePv9iVdgjy4EFf7OkO73TjupnaOv1owJ27dm5hb6X5dSFVd355FugSZWI65FGiP8EFTp7s28Lv08I59F0vcKgqpzGveW/6ka5CJS4E2dBt36+gOrh/00vbdfxVLrwmp7caP+5IuQS6WY86voYNn3DmqrZiDxsbO2PnbzjLJRSF1hT6imzwDCM5aaMOEuWPFj1kRUvb9vL1CWklIXV73vi+qvaKakOYk0JHzZ8RK6kGypO/9+LBZyiuRuqI2DSRdgozMjgdYjVt7T7i0Md9cu96jo64WSXotUpH/89N00eddj3cU6MBFLw+WvkywIWTQCFNKjeTXIzUYRr2iiz7vRg4C3WXV38Pc+s/r0Wli1MUi7GmhWdg/Y7U+7ao5u4Hm+q6e6+4ilJx33/ElmdVuHgUpx/OJe7S60qgd9gJtGLpmhgz/dfnQKSFXsZGm1rA1IjoYNMFOoA2j3h0ty/E5j0GjMrOMshwLyS3gteE6mHbVjO3vxzB6XbxcZ+DCxtamlcp1NCSnBx7T+MIyrdkMNB//TryMtwoBI8LTc+Q7HJJL95e1uxS0PTYD3WutvPNxvPoPyk/GXhbaeDw9U4ubtzlmK9ARa6bIvOII12lY5WV8JE2ZMYs7ky5BfjYC7f/SffI/ygka3P5cuexHRW4IffpWfT2CBgBbgfZY+JQSdwptBkSdxp5wmsxarJNpKs20DvSM5cr8IfLq2ed8Pj6Rpkavpf1Il6CEVjd/PR7rodCpvMZ/NdJToWMjsXxn6GZebDMtA+39yC2Kncuj7ye3+Ch2dCTKgId1eAENYG4Z6GlzFOw64np9ci8mmgrB98aSLkEJQkaL+PZYHqfoCdvE51+qVfQMyBWGcS/r8Y4QhMvNA+33yJMKnzFwYEVylcLnQE6FvXID6RIUIWQ1D/Swl9orfcp2Qw0JONuQMK/7ntDn7XmLQIc8o9wdYSP/AR5ncS0aoriYdyTOrKOdkG19U8gPVmUBnaAnnwlR4zzIHs/HY/SZ5xaBbje3nSpnbffEc0GqnAjZxMXP0t+gpDpCulWgDUMmq3Tadk8s1904XA3xWxJOugTFWD+H9n9ctZS1nf9CG7XOhVqaNkLz27fZJTQFmh8xXr0FGto+/qJe1gfUnI4L9DaPsIn1NbTPfDUvA9rOexL7DMmYrctBSXWEjKZADx6p6nzJ4GfuwUSTMGB2MOkSFFTbGGjDgyo/eQhffa8ue18p53m3jhtoEPIaAx05Vu1HOZ1fvlcHWz1qzeiZev6hCymNgb5b/TuFbisn6fT5Pr3azuxDugQl1TaOh/afQODJcMzycXpa+VILxt5OugJFZZoaAjUmmsT549+8GROtpvCZnUiXoKiCxo6VSWRmtA9ZraPtEDRgzEzSFSirpCHQ3QYQ6jwa/qZSUxhRa9EP6ruDVkhvuOQYFkWoBG7i+9F4Z6gS71snkC5BYTUNXd/xXUiV4DHuZT0/6KdKl4f0Oay/yYXqukDHDCTXSnrd+ari02QQAIDfHcpOGKVApaUu0AN6EizC76FVOFBJDZEL9LYYdCtJ9dfQsURX7fOf/RAmWnn+C3S4NmNzprK6jpUOfck+DQ598X69X9yRx99wj+4b6KyaukB3J73uddhzt+n+h02a15PqTLAjqSHQMcR7N2JemYKJVhQ34Rb9zlNpUB9oz+7kt/bq9+oI0iXoW8AiBqba1wc6goYRsgNf1dOW0/SZNYiBUTMNgSZ+xQEAMOYNIuOjGNH1IQYa6IZAh/ciXQgAAD9xVRjpGvTr7gGkK1BDthl4AG9KWkaPe57B9WcUEj1V/484ALJLAHiAYFr+8/o8+QjOMlTGfbLto0qzwmoAHqBtDOlCGgQ8P0n/j5ZIGHobE12xiUV1gaZnRHLQP24iXYIe8ZOHkC5BFTlVADxACEX3v13fYOJvo8qGT2ej1yqjHIAHXyqecdTj418hOfBPnwLvGEy6BHWk1wDw4BtJug5rhnHPUfQHQx8G6Xumd6Pi6wDAgx/pkUnNed/1iF4XLyak3dTupEtQR3IBAPDgQ9ko2aCF9zDQSauiuAdJV6CS7BIA4MGH2HRCOzov1/tUTlWF3t+RdAkqSS8GAN4QRV1nRp9ndb1clbq4AXeSLkEtKYUAwBtCSdfR2vhF+t0zQW3t5wWQLkEtBQIA8F4U3jEYHrmfmd+CwjxumU66BLVk5QIA8B407k/guXIqTjKURdB86q4olZKRAwDA+/SmceGidq+NxEcdMjBMHsLMzzE7HwCA5+lc7az7C91o/I+mNUGPMtNANwTaM5JwHbbxo5fgVoZu4+YMZKaBhpQKAADem9J+Oa85j2AT7a6oeXT+/VVCbjoAAPBRtMYm8GlVdh7XtbmkFpUlIDcDAAD4YFoDDV0XszGKVzmxkxl6+tkQaIr3RIpfTOMjRe3gH6Rr3Jmy0pMAAIDvSe9dg2HmfDYGpitk1FQmJl7VqUmt+5cnv2iSfX6PMTMOQQEet/cnXYKKrifX/ctT3QZ2eRYXCJPsRqb2zCtMqfuX70LtTSEAwNB5uPiMRD5TbyBdgpoK6i6hgQ+jOtAw9z52urrkNZqRiVf10jPr/qX9r5Lh2QlUXxRRK3gGPatTqKDkQv0btAcaIlZQOXqKenFsNdDFifVv8ALROlwwfFlb0iVoUPvpEaRLUFXR+fo3+HDa2z/u7icpHW5CMcOou0mXoK6c9Po3+M60Bxq8FjD1/EkWHeZSOLNOQdWXTfVv0f0cuk7Eqm6kS9AYj2ETSZegrvJTDW9poe3jh7zE0CAbObR7jOIhOkooPd7wlhYCDV5TH6b+wogmHmPGMPbzKrvU8JYmAg0h88eSLkFLgp9nrIE2nqpteFMbgYa+i2hb34lihntjGWugq480vqmRQMOkJ2keFkiXkIdZGy5QdaixO0UrgfaePYOxVkcy/pEY1n5U+Y2X0JoJNEQuYGl0rzv6PMTaMyHTIUvj25oJNIx+CkeSumRuV9IVqM10yNz4Nl9C/WCOetzs231I16AFg25h7QoaTAesWugUrQQa2izC3cCd83qQqWGjAADCtdymEPNVBCsRqfcSnAXu1NhJzP0dsxw0Nb3Da+mGePJ8xjoMxPOZSdOmZuqwHDI2vaOdm0IA8F00QgNjqYgaezPpCtRnPFrb9A5vsv+F9AleS+3KZXQImx1LugT17S+xeoe/bLH7hfTh+y9haO0UCUbdQroCAo5UWr3DlxGrQwrvu3AFRwc63c7KjldWLMesH2xo6qYQAIKfxRUc7eLHMLOhipWMK9YXGfx1zTyHrtNrBYONkIsiH2JnOegm+4ut3+OTNRZow7i5uJ+QbV5jmBw1ftz6nlBjTzkAAIIeZmy+nMu6PsXif/XSs9XW7/LpGmuhAWIfZWhdehF8pg8iXQIJFzKbvctnay7QMOVh1sZHuiT8UU31ksnldEGzd3lTBaFCpPOedyvpEijk+1QM6RKIONIy0EmECnFDxN/6kS6BOlyPOSxeQcOVq83f5y3aa6EBbn4wiHQJtPFd3J50CUSca34JDXx1gvYuogEWTPAgXQJlRk9msoGGU+nN39dmCw3+r/TXWBenwgIeZbOBLrpsbv4B3pRCpBB3xS7Fwf7W7riJzT9ZFy63+ABvTCVSiLv4mQ+w+SfWtrCHGP3/ndjinhB4S5rm+goBAMDrqZvwoqPRA4NJV0BG9fnyFh/hoSbT5pfSjuvyfGfSNVCj1/R2pEsg49Lplh/hoSqFQCEyMAxfiBcddQxz4kmXQEhyQsuP8FCTTaISGfjNmUO6BEoMm8Lown+mhIKWH+KhquVltWZEzGdyNE4r7e5l9AoaMo61+hAP1ek2vlIb4p5i9NKxueG3ka6AlFRbgTZdI1CJPDxmPUy6BAqE3RVJugRCzImtH2jwACXafBINABA4l8k5Gs2xtoNbk8JTrT/GA1RmqV+KXAY8zvyzu+gnWJxICAAA2Xtbf4wHKNHsXSEA3Mn6YH/viWNIl0CK5dKl1h/UeqA9H72ZyXkajXosYnMQBwCUHrTxQR6gUrvX0ADQdTFzy8da83+AvcUZGxTttPFBHgByS2x8QjPGLWV4sD8/8H5m/0BZrrQcaQdQF+i8K2rXIqu7Z7G7ub3PYnaX3anaXWvjozwAFKaoXIq8/JfFs9pK8XeMZ3d94Yo/bM210kGguW6rQknXQEjQk21Jl0CM5ZLNCwseAMo1fVcIYBi1jLltGAAAwPAEwxPRjD9X2/owDwCQptUBd/X87ruHyYuOuAeY7VMBqN5htvVhHgAgR7vjk+p0/BuL4+685keTLoEcIcn2InY8AEBWmrrFyG/g0k6kS1DfbeMYnuFg3mrziqMu0JnJqtaiAI9JjzO33WT4w91Il0BQtaNAC6ka2q3QtsAHZjB2Gc3NvpF0CSRdsLOweV0KkjLUrEURUYviSJegriGzmJ7dsKXU9sfrAp2szZnfzQxbxNRf4MB7WJ0YCwAA5XsqbX+iLtCXU9QrRSn8zPtYeog19j52+wgB4KS9a4q6QGt1tZlm/BZMZGckZdc5EaRLIGprvp1P1N9JJeaoVopyOi/vT7oEtXhNmkG6BKJKj9q54mgI9HmN9xXWGbwkjHQJKun5OLsjDAEAjtrtCqwP9CUNzytsYpj5MBs7JwfNZ3Uljnq77D6Wqw+0KVHzT6IBAHyWT2LhVomPe4DdQUkAANfP2u5VgcZAw+lClWpRVpvX4xn4VYcvDSRdAlmHbM1VqdMQ6FP6CDQX87r+n0Z7PTCagf+1juyxP6+7IdDXdNC1AgBgGLEkmHQNCuMGLGD7jhCunbP/uYZAW85ocq+V1nzvnafz0f4BK8JJl0DY8TP2P9c4oudYmRqlqCB4wXTSJShr9lh2+o9sMp930GvSFGg7gz20J/KZUaRLUFLckwwv2wAAAFdbrznapDHQ2edtzmjRong9rz0T8FRf0iWQdtbWikkNGgNtOaSLJ9EAAPxtC/Q7DXzWrQxPUwEAgOJDjq6OGwMt/KmTu0IA8Jx3vx/pGhTS637W7wgh7ZCjzzZN87iYp3gpqmmzbIo+b5x8599MugTiEmysCt2kKdCmQzoYQtqg47oRuux7mHk3YxPNWsv/s8bRp5t+PuadRsWLUU/U6j46THTvuWyPggYAyLSxyrmVpkBbTmh6EdKWblzZWXeJbvvQRNIlEGc8dtHh55sCLeSfsihdjYoMdy3W2yRSr9twjyQo2ub481aXZDXbdfMkGgDAa95jOhtKGvt3Rneot5b6l+PPWwXa6PhqW3MCn35YV3dQ7Z8ZQroE8qp2FDv+AutfeZ7D5yHaE77sdtIlyMh71izd3RSIV7HF9voyjaz/KgsdxilajOqCeiQnka5BLvyIt/GCA8x7P3JyGWHdQlcd0tNdIQBwg/+umy11Oq7S/8wF54xbnQ3QaH7fNFxv21jGhJ++TroGWfi+fDvjo/oBACBnqZNL6GYtNFzfo1wpZPB3PRVCugY58Pfey9zqqjZYdjrLc/NAl550csWtQU8+o4fhw4MX4gU0ABi/tbe+TKNmgRYuJypXDCFez92v/SlZnZcxsyaUQwkJTu/yml9Dm7oMV6wYUgxDii7Y2tBOQ9o8cx9ecAAArNvv9DfZvOvh+nGN/+pt6fDKHG3fT3F3z2VpXVX78vc6n4TSoi/tiv6uOQA6vDBZ053gY/7O/KD+OttdWGujxW/a1EuHi6Zxgf2yLpEuQrrY10eSLoEOxjePOX9o0aKFztPViLsGfN9XtdsJ3vHv40mXQIlzzm8JW7XQ0Ga4Lp7btsB16JVqf/UoqgU8tlD7T2nk8emvLsypajke7ayjNQ+0i7th6Q2ka5DE89ZlAaRroET2IVemcbcMdMEZPU3EasKNWaPFRPMD39b7Un0uO+DSA4tWt/9+w/S5pgXXo8uFXNJFiMX1+XdfHDNap/bDna58Wash8MfPy18LHaa+NkBr4Yh4frDWSlbMcdcuhlu10DVRI7TdDWFfbKcL+ZoarBL82my9/i7E2/ClS7+71j0OFTfqdqp8bISmEu23cD4bW8a4IuuLsy59XetZdxeuyV0LPWa82l870wy95ixkfOcJa6ecTI5t0LqFtoQP1evCcAA9u1zQyopnXve91Il0DfQo+9bJ8gUNbAxyKJus37G3XHR0eirpIlwzaXU06RIocu5Ne1vHtmAj0EWD+2p6LI9DfFTfAsdL71Bi3Or++ICjkem3z138ShvRFfzG6vhehI/om62BkUo3vxWHeW6S/YGrrZCte6Q9+phXagff/1X698mOXYKLyli78rurX2nr4qIyepA+V1euw3UYVX2W7lXPerw5WTtPY1RQ8pnjJUet2LxaFqbr9zkHAHBt44oTKV4Mm4t5a5qeWxTxkle4vDKuzUDn3B6u7wu4gDj+otP5w6Rw3THPzVV/v9Hl/jDbzzPa3qTzn2jATbXXyujsNOR6rMM8N1f4cprLX2v7kqN4jq6vOQDAMLzjeTrvfXuvncr6PlctmHf/0/W527Zb6KqhPfR9zQFg6NcxN4PCNrrv6qk4IKm56hcvuv6Lsh1oi2WGfvtW6vG9B+Rdpi7R/V6d6k26BsoIF9aWu/7VdgJdNUmfw/yt8RFDqq9Qtsb7mNUTMc8tWN48IOIhq52G2NxVf0sotcIFx/uepWr/3LHrRuP9YEvXXhMz08hOoGuq72HgzoQLGBxxsZB0FY0Mt6yJJ10Dhb7+VcyfUXuXysIwJtbX9urTJ52WW0OfO9/rpfdbcQkqnr8s5svtBbrad7IMxdDPI3JkfhIVvYaBc1d3wTy3tvlbEbeE9gNt9pjGxnoQfPtx/FVRPzJFcB3nv6zHJX7cZll3WNRfULtP52o663CVO1s431GRlwpJr4AWvfYJHY/ZdcOuTwpEfb3dQFe0mcHKgC9D75uzs4g+v/OIf3caPq6zRfjnDnFtjf3+E35gF3er0QoudJyQ5nT3DuUETnt7uO47sqQ592/Xh3EAgKNAl3YZ7WYxGuI3PKokjdRlR8RjL+h+pIFU32wQuTSd/UDX+ozS2+7vDnj2GcallRE59YAV8zoSObEGpH10TuQrHPylK+vXz61iNKb90Mi8bPUbaZ+pr0/T+9BG6X75VOywdQeBLg8bxdSNim/fkd4Xq1U+accFK25g5eZbvMLP9ot9iaN7EW6YbhcFs4kPHdIvNUfNfkPDoDfuZ+tnLM6+d0RfBToKdNbgODeK0SK/2AkBl6vUijTn9+i6EWx0X0lT8sV20a9x+LTIf1hbycVoEx8cPyI3S5297Tz7vv1YJ3xa58DZt8R1qgA4CXTm6BjJxWiVd7fJXa+UK7/KAR84+/0b/fBpnQPVG78R/yKHga6OjGPqthAAADi/IRON+RUKP+/wHbp2YRjeDTp0bU2G+Bc5/pNXNlH/E1da40ImDygprFbwUtoz5qE1IxgYcO4W09YPJLzKcaBzRvRhshXhoid1NhYrNZmF7zztpXlBCh1cP/LWSNmJz8lNiWkCo3fhPoPGduELlViMhutwy+LnYvDi2Rnzn29LuTl38oMN2DqK2R+9kPnHb/KvW+k9dfpEna9LJY+ShzdLuehz1kIH3sTsKhFc4A0je/HZsvYdBoxZtOimQMyzc5ZD6yRd8jn72XbeEcvyj9+ccXrbJhfXjncu8JaZcZHMNhDiVM35RdKzU2dp9Vr3JOO/gYKLWzddleO5dNCdMwaFYUeKa4STU6RthuMs0PzwbcxvxVSau2fTXqPZncd4vGfU7VN7BzH5yEgS06L/Stuj2+n1RLsvp+KvoaY0cduvyTUSu8Q5b++Rd00M8mf52k2s47NSpL3Q6Q/ZY+ZX7PUWtmYxFh/YdKywwii2neZ9fbvMnNnVF7tRxBBefK9C2iudtxpdtjI1zt8+syXv5NajeaXlrveKGwLbdhs3emCAARtnca7NFDtTpYHzn7TfojUSj61DQuWRoyeTC6+7MHrJo01wSPf4Mb19VChLd158T+pSKS40HXHbcAUUa5ac0+evpuWXFBXba6oN7doGd4iM6X9DCLbMkiTPPiL1pS4sdpmycb7Uo+sSHxExBYqSstNTi3Oq80xFNWAqswAA5+8r+LbzDPYP7dA5IjK6Dek6NWzLFckvdaUJmfGdr+Tj65olryrLWFDF1eSaOBA8Q/wE/xDP0MAO2C67J/XxPyS/1pXliC/snyj5+LrGh0EU6Rr0aMtR6a915Rlz0mbpx0dIrLSdbqxi5UqgLafOSz8BQiIdPODGi13qBTwrfvItQhJlbxU/NbaJS4Gu2CtyxTyEJDv8mzuvdm2cxslj7pwDIddlbXZrUoVrgc74i/wa94gNp3526+UujqTbdcqtsyDkotz1JW693sVAJ5wgvWcDYsOVbe693tWxzltE7a2FkDQlG92c8OZqoA/io2ikPOHiejeP4Gqgq3+XNsULIREqvspx8wguT6/66ZqbZ0LIGUvCJnfv1VwO9PVfyexAghhi/NTtJSNcnwDr7tU6t3PVuQAAFUNJREFUQk4Ip39ze2lu1wOdtEvavHKEXGQSuWusLa4HuvbrUrfPhpADR3e632a6HmjhxHnsXEEKMv031/2DiFhEpuZztfc8Q0zZ/5cMF7UiAl27M0nNLc8QY4zfpMtwFDHLfF3/Fq85kGL+2meS4ShiAl292d1uHITsqdooS9edqIUYc6XPLkfIsb1/ybKXnqhAF32PvYVIGeW/XpTlOKICLSTuk+WkCLV0SKa//uLWfs5yd3AfQjaVbJVpwL24QJtPSF5EDyEH9krYBdkmkavzX9si03kRspIt29A3kYGu2i99XUiE7Dkt22pzYvdPSdgj15kRapD7rXtTva2IDXT+ThwWjWQmnHVvLQ5rone4OnxQtnMjBAAAhZ/J178hOtBpe5XY0R0xrHbvVvkOJn4Pwh2n5Ts7QgBFkncIskF8oM8fwKlYSEa1207IOCxZfKCF33BBAySjko/lnDgiYdvj/bjOHZKP5SdZp/ZJCLT5WzlmFiAEAAAZn8o6hFPKxvT7LuJULCSXzxNkTZOUQJd/XShnCYhlST/JO8ZeSqBhR6qsNSB2Cf9LkveAkgKd/1/coQLJ4thmmSdBSQq0ZWMGXkUjGZi+TZT5iJICDUXfyzHjHDHv4G65gyQt0KYf3Np6CyEAAChanyD3IaUFWshwe2FqhGDfL7IsXWBNWqCh/DMcFo3cVbA1Q/ZjSgw0JMs3JBuxavcP8h9TaqCLf8Q1Z5B70jYUy39QqYEWzv0kax2IOZYjMo7rbyQ10JCzGZ/cIXck/1OJuU+SAw1nfpexDMQc425F1pWTHuikTVUy1oFYk/SBIoeVHmjYu0O+MhBrqr6/oMhx3Qh00i68ikYSCZe/VqZrzo1Aw76jspWBGGP8IE2Z8W3uBPr073gVjSQR9m1R6M+7O4EWfsElOpAkle+5v2esbe4EGs7+USFXHYgp64/IPiqpnluBhi1XZSoDMSX3M6UaaDcDfeIwPuhA4n12XrFDuxdo+DJFlioQU07/JNty0K24GeiDe3ChOySS6euzyh3czUDDf7JkKQMxZM82BVtBdwN9cjs20UiUwg2yTyS04m6gLf/Ok6UOxIzdSgyDbuRuoIVEHBeNxEhZn6nk4d0NNBg/wemyyHXGbdsUPb7bgRaSvsMVDZDLrn2jbO+y24GGii+zZagDsaFsw2FlT2Bw/xBVgaPcPwhiw/ElCq8W4H4LDaUbcEV/5Jrr/8tV+AwyBBqufSXDQRADzPu+VvoUMlxyQE3l+CAZDoN0L/epNKVPIUcLDRe+l+MoSO9qvzur+LricrTQYKwd2V6O4yB9O/uc8n0WsrTQcAyXbkROVb4n/2KjrcgT6MrflRxvgvRh+w4VBrLJE2jY/4c8x0H6lf1xjgpnkSnQxi3KrIOD9OPrI2qMkZAp0PDXZpwAjhw5tl6B1aBbkyvQ5u/l3p8L6Yrp61OqnEeuQMP57dhEI/u2bFFqJY7mZAs0fH1NtkMh3Un9OlmdE8kX6IubcL9kZIf5N7XWXpYv0PBZIu6XjGw7+z+1WjtZur7rlJvHe8l3NKQjxR9tUOtUMrbQll/O42QsZIOw/3PVziVjoKHoX0psa4Q0L/Nfiq3N2Iqcga7d/gdeRaNWqn/cpd7JZLyGBqgpmolX0agFIeHvReqdTdZAC2Xd+8l5PKQHZSsOq/iHW85LDoC8D5SeA4m0xvzHNnX6COvI2kIDVASNkPeASOsynlB8HqE1eVtouL7+krwHRBpX/eFVVZ8UyBxoOKP4PHWkKbu+UvdZrtyBrvodd+NETXI+UmOaihW5Aw2nNuBunKjR5/tV7j2WPdDmLfvkPiTSrH0/KLc9kG0yP+UAgELfoQGyHxRpUsFatUaNNpK9hQb4Ga+iUZ3Nv6k+FkL+FhoqjMPayX9UpD3HXr+i+jkVaKFhyyEcRooASjceUf+kSgTa+D5OL0Qg7PyCwFmVCDQc2VatxGGRplz+mMTAHkUCbXnnqhKHRVpS9g2R5eEUuCkEgHLhZhwYzTbh0BIiPWyKtNBg/uEY3heyLfOtQiLnVSbQUPwOLtLBtJovVe9SqaPMJQcIOV0HcsocGmmA5cBKtfu86ykUaDBmTg1U6NCIfjmLSS1poVSgocQwXqlDI9oJb61XYbF+mxQLtCm3f6RSx0aU275G+d2B7FAs0FAMU5Q7OKJZ1tKTxM6tXOaEwk79FTs4otlbG0zEzq1gI1paeSOOumPRr/9QedqVNYWeQwMAwKEtCh4c0Sr148sEz67kZW510Q2dFDw8opLx4//VEjy9ovdtGW1HeCt5fESh7WuJrp6l5CUHwPq9ih4e0SflU/VnqVhT9slaiXk49hcypezTz9Rcya41hR8Vp8T09VD2DIgm5p0vqbK9pn0KB9qUMq6DsmdANElecY5wBUp35uW1GYb3hcwo/+A70uPglb0pBIDPcKg/M2p//4TkEzsAUL6Fhur0aX5KnwNRQUidn0q6BuUDLeQGxeMgJSaUrfiL7BMOABUuOaDyE7IPJpFKLF9sJjUI2ooKjWdZwSScAs6Ao6vSSZcAqgTakheF40j1L2/JIRp2qVTj8rYiZzyOI9W7mnd/oGK5LFXu1wr5cTgFXOe2vEVwELQVVQJtyo+NUeM8iJgLq0+QLqGOOk/UCitwyWhdK3z3R/JP7ABAjcd2AACwY7M650FEWLZ8Q8ETOwBQq4UGY07fbuqcCRFweDn5LsJ6anXi5XoO81fpVEht6Wt3kS6hkWq90kk9+6p0eYNUVvHf9+kZgKZaoKsLhnZU61xITebdi9Xd/dgh9cYNpfkO81HtZEg1wuVnadpSR8XLgM8OUfJkB8mp6M2jNHR5N1BxZGdNxtgg9c6G1FH7yT9peWIHAKoGGjK9b/RU8XRIDVteJLP1hD1qBtpyZUAMjunQl3MrEmm64FA30FCVNBF7wHWl+IU/KLsxUjXQQoF5IjbROmJ573OKntgBgMqBhtrsXj1UPSFS1KY3s0mX0JLK81fLrk8IUPeMSDmnVp8iXUIrKgdayOFHYw+4ThS+uZF0Ca2pvcKAMb1TX5VPiZRR/dn/kdt5wi7Vl8woLhreXu1zIgWYt72aR7oGG9RfAybTfwR2r+jA6ZXnSZdgi/qBNqd276P6SZHcCl7eSroEmwis0lVSMhQvOrSu8h8f0tVD2IDEsnOpQYNxiV1tq/3xFdp6VOqRCLTlYq+e+OxOy4QDy2lY9ssWIguDViSPDiVxXiSTlKXH6Zl01RyZlW5zPUbg7BXtKlv2K/GFze0hE2ghMboPLhqtVZY1X1B6AQ2kAg3Gs7eG4Lg7bRI2/IPo1pqOkWony3PH4k4V2nR41QXSJThAKtCWVL+huIOhFl1btZt0CY4Qu5I1JvfqSercSLrct9dTe0MIQDDQUJI7CieBa075J+/Te0MIQDLQkGMag6OUNMb40xsFpGtwjGCga1M7DiJ3diSBcOyFy6RrcILk0+DyrAGdCZ4eiZa68DDpEpwh2r2RUx3fluT5kTjZS+gcMmqNaKCFi8FxeBmtGZXrvqRwzlULZDugzUm9cC0lrTB+9XYp6RqcIzyiojgrDleN1gbLtmV0bNzmGOkhQqkQhwt1aMLhJbQ/4AAA8oGGxLAbsAtcA64uOkK6BJcQD7QpoW80Tl+hXsaK7bQO6W+OeKChLOVGHElKu/z3vqsiXYNryAdayKkYhSNJ6Vbxn/eLSdfgIvKBBss1/+F40UEz08Y3KB7S3xwFgYaapG69SdeA7DPveJGmfa4coyHQ+DSabucWnyFdguuoCDTkVIzEjZMpJVxedJB0DSLQEWjzVc+RdFSCWspb9rs2HtjVoSRGxqTO/UjXgGwpWrGBqn0InaEk0FCS2xfHRlOo9MOP6Z5y1RItgYa0sjjc8o061Z++oYERdtaoCTQkeMT7kq4BNVe78aV80jWIRE+g4XynvjhMiS6/PJ9KugSxKAp0TcKASOwxpMm+5QmkSxCNokBDcdJN7XGYEj0OrzxG5yr9jtAUaMjKuhVX2aXGueV7tJdnugItJJVNoKoglqW8tFVLHSoN6MqP+YpvPF5GUyF95U/0T/G2ga5AQ9WVyFi8jKZA/tovNdVB2IiyQEPRtbhw0jUgKPr3ezWka5CGtkBDdhruYkhc0UdrtNXh3YS6QENGdTwOJSWr+qPVFaRrkIq+QNde9BiC+3KSZPzx9ULSNUhGX6DBmBjWj8KymGH8YWUG6RqkozE5FUk9o/DhHSmm71elka7BDTQGGvKTB0TgwztCNq3U3IAka1QGGtLTRuPgaDL+fP4S6RLcQmegITXzxjaka2DSX0tOky7BPZQG2pJkGelFugj2CAcWn9TggCRrlAYaahN53JhTbZbDC09rPM/UBhqqE7r0prY4fbIcXXBW63mmN9BQfrJHT3zUoSLLkQVntThgtDl6Aw3Fl/t0wUSrRjj0Nx3kmeZAQ/alQRGka2DHvqfP6CDPVAcasvNuCCFdAyv2PHdKD3mmO9CWy0VDsINFFX8uO6H5+0EAoDzQIFytGYSbZKngz+XH9ZFnygMNpsTKITg6WnF7lmtwwQLbKA801FwI74+7Jyts7xK9tM/0BxqMJ9r3xkQrSTi4WCfXzwAaCDRUHAnth53gyrEcXXhKP3nWQKCh8lhcVxzvrxTLsQVndJRnLQQaKo706YaJVobxoC76B5toIdBQeDwW1yVVhPGn+Vf11D5rJNBQcKpXNOka9Mi4cUkm6Rpkpo1AQ37SkDDSNeiPacOKdNI1yE0jgYbM5H6YaJkVfvGalud326aVQAtJKf0x0bK6/tGb2aRrkJ9WAg1C0rWBuH+yjIo+fE+76yPZp5lAg5ByZUgo6SL0I23V53rMs4YCDUJq4lDcg0UmGc9/V0a6BkVoKNAgpJ8fgYmWg+Xi0s0aXf/ZGS0FGiwZ5zDRMrBcmP+nNtfnd05TgQZLxvmheB3trtoDTx+tJV2EUrQVaLCkXRzSgXQRGlfzhx6WK7BHY4EGIfUKPr1zS9mGFddI16AgrQUahJQk7GFxQ/6nr+uve9CK5gINQnJK93AceydR+rv/yiVdg6K0F2gQks90xRX+pbm46rsi0jUoS4OBBiHzXA8cHy2B+egLP1eTLkJhWgw0QO6pXjiHRTTz/kUHzaSLUJo2Aw15xzp2x5mz4lR9/0yifh/XNdBooKFgfyiubiBK6TtvaHi3NpdpNdBQfjg0BvfndJmQseo/10kXoQbNBhoq9hsH+pIuQivM55du1Oxux6JoN9BQfbp8IK7k6JKa3Yt363b0RnMaDjQYz+f0aU+6CC0oWr/qLOka1KLlQIPxXFavUBxO6kzOu29penNYUTQdaLBcSezeFRPtkJD4wn9LSRehHm0HGizJl9pH4gNpB4xbX9yi+94UKxoPNED68aDemGi7yv6z9jjpGlSl+UBD0cnKodjFYkfSq5/oerBoa9oPNJSeyRjqhxfSNliOLvm5hHQRKtNBoKE68WpvfNjRmvG7pUdMpItQmx4CDabLp3qH6eI7kZEl+421afpaKtcV+oiBJX1/h2gv0lVQxXTihS/LSRdBgD4CDVB4kOuDIzualP+8fI/+x4raoJdAQ/nB632CSBdBC0vqv15OIV0EGboJNNQeTwqP0M+3447aPes+YWNsXWt6SsDlc/498Yk0QPH/Vv/J5OUGgL4CDdknS2LbMP/87uwbH6ay93Sjga4CDSWnkmI7sp3omg2rf9PnQrmu0VegwXjpVLs+pIsgKeutty8wMpTfNp0FGoSswyU3MPv8rnb3sz9eZ/dyA0B/gQah5HhSrxAmLzuEvPdXXtDrus+u0l2gAUwXjrfvwmC3YfWplz4pZrt5Bl0GGoTMvZZugYw10kLO+sWHmBuK1JoeAw1QfjClcwRTa4VVHF37TgHzzTPoNdBgTjzq28mfnUb62v9e3Mv0w41GOg00QN6O4ogwRhJduuv1/+aRLoISug001J65IET5kK5CDRf/tVa/mwCJpd9AgyX1UG4n/e9eUfLDm+t1uSesNDoONEDluRO8zld0NB97+dMz2Dw30XWgoTbjYEa0jntZhOL3V+9haBUZF+g70ACVCXsDI3XaSAu1vzz3YwazA0Vt02/r1YBrN2NpjB6HSZsSPvg1Fx89t6D3FhoAqi9sDeqku4U7ajM/WbqH5XGidujt92wT5zth6YA2pKuQkyX/r38frCFdBY2YCDQAdHhiVk/dDFgSSk58/gu2zjaxEmgwDJ03JZx0EfIwHt7ydQ7pImjFTKAB2kx76CY/0kW4r/b0H19cxXtBexgKNEDslHuGaH3p3as//3gCR4nax1SgAYbOuDdKy99yyk/bDrG4wJfrtPzblSIg/va5gaSLkCrzh19PFZMugnKsBRq4oGEPTdXibnBC3rcbE4pIV0E95gINYAga/XS8t8a+8drrP3xzGePsnMZ+r/LwDLnlif5a6js0Ff306eUyfLThAg39VuXkETz9sVitzKOtzt/x8YVKjLNLNPI7lZ8heNYDPYNJV+GcUJHx23+uWjDOLmI20ABc6L139KS889BScPX3zedIV6ElDAcaANpPunMExZO0hIyzP+9MJl2FtrAdaICQSRNGRtM5hrYm8dCenUV4rSEO64EGCBw5ZuIN9HWIFx3av/dENekqtAcDDeA5eOgtN1PV12JO+nPfoRSWtuiWDQYaAICPGjBmUizpKhpUHvzlxOUC0lVoFAa6Dt82cvg9w8nPphW407t/TUtnfVFc6TDQjbxD+0+bEuFBcI1Hs6Vg128n80rwRlA6DLQVg3/HMZNu9vcikmmzqeTApqP55bhqjFsw0M15ene647buAb4q/1zMFaVn/9idVINpdhcGuiXO4NNn2vhObQNVa6dNxUVXtu5IrzXjpYb7MNA2BfS5aUKXju2V/+kIlQWZift34/pHcsFA2+PVe+Twbp06KbmjVm1edvqZ40fyFTwFczDQDhgiBgzu3b1biBJd45aClNSrCRcus7ont1Iw0E4Exvbo0bV7j3A5f1C1malJqZevXMHnc/LDQLugXddu3SK79+riL8OxilJTki+mZ2YU41WzIjDQruECQjoGR0dHxkRLTnVtQdKV9Cs51wuvl8hZGWoGAy2Cl3+bwLbte0SF9wwLEcC1H54AAHAtJzkzNaGqtKS8EhtmZWGgxeJ8fL38vAK6Bca2iQoMiAXgOIAWz6wFAUAQhPKkmszc7Py03GpjVU0NLhaqBgy0RB68N+/FG7yE0G5eQkBssxXVucJLHFeYWmMxCqba2lozjgNVz/8DOrsvkiwQe+kAAAAASUVORK5CYII=\"\n        id=\"ea1904511d\"\n        height={627}\n        preserveAspectRatio=\"xMidYMid meet\"\n      />\n      <mask id=\"5c96cb8917\">\n        <g filter=\"url(#143604a479)\">\n          <g\n            filter=\"url(#92b242bc1b)\"\n            transform=\"matrix(1.041667, 0, 0, 1.041866, 0.00000265, 48.437538)\"\n          >\n            <image\n              x={0}\n              y={0}\n              width={720}\n              xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAJzCAAAAAADtHsAAAAAAmJLR0QA/4ePzL8AACAASURBVHic7d1nYBTV2gfwZ2bTEwIJCSShJSEQupSEJoI0pQmioiIWFBXFC1dUqooNBVGvvl6vXr169doFQRQFkSLSeyehpvdCetvN7rwf0jbJtpmdmXNmzvP7QtrOPEn+nMzMaRwgRALv7eNriOwRHdbTO7g7V/cxISur4mrWpUs5xqoqs7TDcvJViJCLDAGBbbv26h/X1ZvjOB64xhQKAlgEQchJOH70WklpuYRDY6CRygI6BHcfEjcokHMUPkHIOXnkYEpOpdijY6CRiri2UV0HDxvYwbXYlR3668j5fIu4M0gpCyEpAvr0GjyqR6CYl2Ts3HXiSq2IF2CgkTo8YkcMiu/rJ/p1109u/z3B9VYaA43UEDL6piED2kp7bfWR39cnufrFGGikOL7bbbf2jfCUfoDKA99vKpavHoTc4DH09ZMFgnvM+V8PNZD+RhAC3nvMf66WuRlnQRCEmovPhZD+ZhDrDH4TNmfXyBBnQRCEiq9686S/IcQyQ+DYHwtrZYqzIAim8zPFPyRBSB5cwKhviszyxVkQBEvBovb4FAMR4T3sjRRZ0ywIgiBUr4kh/Y0hFnF9n70if5wFQTBu6kX6e0PsiZi3y6RIngWhZmMf0t8dYozPhM9LFYqzIAhVv49zdHIPtb5LxIpeD82MUbATxOdWj8Izyh0eoWb87v6zXLnmWRAEQaj+Ea86kDq4Xp9lKBxnQRBqNsbarQA7yJF8/Gf939gg5U9j6GE8JXoqC0IieUSuy1e+eRYEQRAqF/uT/m6R3vlNOVylUp4FofBOfJyBFBW6NEe1OAuCkDAAO8GRcrzivq1QM8+CeWOEzULwphDJoO30Nbe4MSNFAi666oC4+eAIuSrs5XRVm2dBEAQhdzJedCAlcL2/rlY/z4L5z842isFLDuQmrymvTSfxyIELhd0CgfMiffNamEigeRYEQRCujif9zSPdCXw3x0Iq0Jb1rbsl8ZIDuYGLfmtOELF7My40+2TLj2GgkXRc/DtTfQme39/78PUWH8JAI8m8xrw1hmyAOmcfbPERDDSSymv2O/0Jl+DheSKv+Ucw0Eiido8siyZdA3S+crT5BzDQSJq2C18MI10DgMHvePMmGgONpODCFz0jauVypXQ5c7pZ7woGGknAdX7lCTqG2PPcQVxoF7mJ6/yFUutuiFY+vdlzcGyhkXid1s5Wd7CoA15VB3F+IXJL/G9G0u2ylewh1rXhirtIrPh1t1LTPgNAxzEkOyuR5sXtIjYaybZj1pOxsIVGonBxa8ZRNlOk32CrO0G8KURicENen0i6hpa4mh2mxnewhUYi8ENW30K6hlb4m622E8IWGonQc90k0iW0xvkknW6cAI4tNHJdl+cozDOA1+SmdhkDjVzFdX7pYdI12GQY3K3pbYJ1IG3ptPpBSheU49IaB5FiC41cFPz6fZTmGfyb7lQx0Mg1vkvv8iJdgz187wGNb5KsA2mH7/OP0zFe1Kbgxo2EMNDIFdyC+SoszS9Zm6ENb2GgkQsM9/8txPlXkWPoGVX/FgYaOcdNWxlJugbHwm+sfwMDjZziRjxL+4bEocPr38BAI6f6vHAT6RKc8YgNrnsDA42ciVg5mXQJznWpn7eCgUZOBD1zH+kSXBDet+5fDDRyzHfBfNIluCIwtm7aAQYaOeR5398CSNfgkp49AAADjRzjxy7vSLoG10T1BgAMNHKs5xvdKZtBaE9XbKGRU53/MVAjeQZDFy8ADDRypN2LY7UzYD6mKwAGGjng+chMH9I1uK47Bho5xE1/MpR0DSJ0jgDAQCP7hj4bQ7oEMfyjDICBRnZFLxtBugRxYjoABhrZEzx/GukSROrZETDQyA6fOx6laYlRV0S2Bww0so0ftjiYdA1ihYUCBhrZFrmiD+kSxIvywUAjm9o9P5Z0CRLEtMVAI1u8H5pF7RocDnQPxEAjG7gRy9qQrkGKTv4YaGRD9zUaGTLaQkwIBhq11mblII3GItyAgUYtedw/zZt0DRJ198VAo5bG/k1LQ5KaifHDQKMWYhb2Jl2CZOHeGGjUXJtHxmtljkprUT4YaNTclIf9SJcgHbbQqIUhz4SRLsEN3qEcBhpZCXtsqPMvolhnDww0auJ922zSJbinkycGGjXptySQdAnuicBAoyYR2ppE2BoXYsBAowa+D8zS7hO7Ol2xhUYN+OGLaN2H0GVBeFOIGnRcos0xdtaisYVG9Tznj9HOsl92eWGgUZ1xczXcRdiAi8JAIwAA6PR0F9IlyIBrj4FGAAAeC0bpIgqCpPtaHnjg6p/wWEAQBEHOmhABt96ljY0nnOD6iw007+Fp4Pu07ecV0g0AACquVmdlpOfX1prNmGrt6vp4T9IlyILzFxNoztvXP2rIkN6d/MGD4+v+QglmMFuEvBMJF84XVFVhprXJ65GJpEuQi+uB9m3XYezwuC4czzfrTvIEAGgTJVgqDx/4Kyu/DDOtQePv9iVdgjy4EFf7OkO73TjupnaOv1owJ27dm5hb6X5dSFVd355FugSZWI65FGiP8EFTp7s28Lv08I59F0vcKgqpzGveW/6ka5CJS4E2dBt36+gOrh/00vbdfxVLrwmp7caP+5IuQS6WY86voYNn3DmqrZiDxsbO2PnbzjLJRSF1hT6imzwDCM5aaMOEuWPFj1kRUvb9vL1CWklIXV73vi+qvaKakOYk0JHzZ8RK6kGypO/9+LBZyiuRuqI2DSRdgozMjgdYjVt7T7i0Md9cu96jo64WSXotUpH/89N00eddj3cU6MBFLw+WvkywIWTQCFNKjeTXIzUYRr2iiz7vRg4C3WXV38Pc+s/r0Wli1MUi7GmhWdg/Y7U+7ao5u4Hm+q6e6+4ilJx33/ElmdVuHgUpx/OJe7S60qgd9gJtGLpmhgz/dfnQKSFXsZGm1rA1IjoYNMFOoA2j3h0ty/E5j0GjMrOMshwLyS3gteE6mHbVjO3vxzB6XbxcZ+DCxtamlcp1NCSnBx7T+MIyrdkMNB//TryMtwoBI8LTc+Q7HJJL95e1uxS0PTYD3WutvPNxvPoPyk/GXhbaeDw9U4ubtzlmK9ARa6bIvOII12lY5WV8JE2ZMYs7ky5BfjYC7f/SffI/ygka3P5cuexHRW4IffpWfT2CBgBbgfZY+JQSdwptBkSdxp5wmsxarJNpKs20DvSM5cr8IfLq2ed8Pj6Rpkavpf1Il6CEVjd/PR7rodCpvMZ/NdJToWMjsXxn6GZebDMtA+39yC2Kncuj7ye3+Ch2dCTKgId1eAENYG4Z6GlzFOw64np9ci8mmgrB98aSLkEJQkaL+PZYHqfoCdvE51+qVfQMyBWGcS/r8Y4QhMvNA+33yJMKnzFwYEVylcLnQE6FvXID6RIUIWQ1D/Swl9orfcp2Qw0JONuQMK/7ntDn7XmLQIc8o9wdYSP/AR5ncS0aoriYdyTOrKOdkG19U8gPVmUBnaAnnwlR4zzIHs/HY/SZ5xaBbje3nSpnbffEc0GqnAjZxMXP0t+gpDpCulWgDUMmq3Tadk8s1904XA3xWxJOugTFWD+H9n9ctZS1nf9CG7XOhVqaNkLz27fZJTQFmh8xXr0FGto+/qJe1gfUnI4L9DaPsIn1NbTPfDUvA9rOexL7DMmYrctBSXWEjKZADx6p6nzJ4GfuwUSTMGB2MOkSFFTbGGjDgyo/eQhffa8ue18p53m3jhtoEPIaAx05Vu1HOZ1fvlcHWz1qzeiZev6hCymNgb5b/TuFbisn6fT5Pr3azuxDugQl1TaOh/afQODJcMzycXpa+VILxt5OugJFZZoaAjUmmsT549+8GROtpvCZnUiXoKiCxo6VSWRmtA9ZraPtEDRgzEzSFSirpCHQ3QYQ6jwa/qZSUxhRa9EP6ruDVkhvuOQYFkWoBG7i+9F4Z6gS71snkC5BYTUNXd/xXUiV4DHuZT0/6KdKl4f0Oay/yYXqukDHDCTXSnrd+ari02QQAIDfHcpOGKVApaUu0AN6EizC76FVOFBJDZEL9LYYdCtJ9dfQsURX7fOf/RAmWnn+C3S4NmNzprK6jpUOfck+DQ598X69X9yRx99wj+4b6KyaukB3J73uddhzt+n+h02a15PqTLAjqSHQMcR7N2JemYKJVhQ34Rb9zlNpUB9oz+7kt/bq9+oI0iXoW8AiBqba1wc6goYRsgNf1dOW0/SZNYiBUTMNgSZ+xQEAMOYNIuOjGNH1IQYa6IZAh/ciXQgAAD9xVRjpGvTr7gGkK1BDthl4AG9KWkaPe57B9WcUEj1V/484ALJLAHiAYFr+8/o8+QjOMlTGfbLto0qzwmoAHqBtDOlCGgQ8P0n/j5ZIGHobE12xiUV1gaZnRHLQP24iXYIe8ZOHkC5BFTlVADxACEX3v13fYOJvo8qGT2ej1yqjHIAHXyqecdTj418hOfBPnwLvGEy6BHWk1wDw4BtJug5rhnHPUfQHQx8G6Xumd6Pi6wDAgx/pkUnNed/1iF4XLyak3dTupEtQR3IBAPDgQ9ko2aCF9zDQSauiuAdJV6CS7BIA4MGH2HRCOzov1/tUTlWF3t+RdAkqSS8GAN4QRV1nRp9ndb1clbq4AXeSLkEtKYUAwBtCSdfR2vhF+t0zQW3t5wWQLkEtBQIA8F4U3jEYHrmfmd+CwjxumU66BLVk5QIA8B407k/guXIqTjKURdB86q4olZKRAwDA+/SmceGidq+NxEcdMjBMHsLMzzE7HwCA5+lc7az7C91o/I+mNUGPMtNANwTaM5JwHbbxo5fgVoZu4+YMZKaBhpQKAADem9J+Oa85j2AT7a6oeXT+/VVCbjoAAPBRtMYm8GlVdh7XtbmkFpUlIDcDAAD4YFoDDV0XszGKVzmxkxl6+tkQaIr3RIpfTOMjRe3gH6Rr3Jmy0pMAAIDvSe9dg2HmfDYGpitk1FQmJl7VqUmt+5cnv2iSfX6PMTMOQQEet/cnXYKKrifX/ctT3QZ2eRYXCJPsRqb2zCtMqfuX70LtTSEAwNB5uPiMRD5TbyBdgpoK6i6hgQ+jOtAw9z52urrkNZqRiVf10jPr/qX9r5Lh2QlUXxRRK3gGPatTqKDkQv0btAcaIlZQOXqKenFsNdDFifVv8ALROlwwfFlb0iVoUPvpEaRLUFXR+fo3+HDa2z/u7icpHW5CMcOou0mXoK6c9Po3+M60Bxq8FjD1/EkWHeZSOLNOQdWXTfVv0f0cuk7Eqm6kS9AYj2ETSZegrvJTDW9poe3jh7zE0CAbObR7jOIhOkooPd7wlhYCDV5TH6b+wogmHmPGMPbzKrvU8JYmAg0h88eSLkFLgp9nrIE2nqpteFMbgYa+i2hb34lihntjGWugq480vqmRQMOkJ2keFkiXkIdZGy5QdaixO0UrgfaePYOxVkcy/pEY1n5U+Y2X0JoJNEQuYGl0rzv6PMTaMyHTIUvj25oJNIx+CkeSumRuV9IVqM10yNz4Nl9C/WCOetzs231I16AFg25h7QoaTAesWugUrQQa2izC3cCd83qQqWGjAADCtdymEPNVBCsRqfcSnAXu1NhJzP0dsxw0Nb3Da+mGePJ8xjoMxPOZSdOmZuqwHDI2vaOdm0IA8F00QgNjqYgaezPpCtRnPFrb9A5vsv+F9AleS+3KZXQImx1LugT17S+xeoe/bLH7hfTh+y9haO0UCUbdQroCAo5UWr3DlxGrQwrvu3AFRwc63c7KjldWLMesH2xo6qYQAIKfxRUc7eLHMLOhipWMK9YXGfx1zTyHrtNrBYONkIsiH2JnOegm+4ut3+OTNRZow7i5uJ+QbV5jmBw1ftz6nlBjTzkAAIIeZmy+nMu6PsXif/XSs9XW7/LpGmuhAWIfZWhdehF8pg8iXQIJFzKbvctnay7QMOVh1sZHuiT8UU31ksnldEGzd3lTBaFCpPOedyvpEijk+1QM6RKIONIy0EmECnFDxN/6kS6BOlyPOSxeQcOVq83f5y3aa6EBbn4wiHQJtPFd3J50CUSca34JDXx1gvYuogEWTPAgXQJlRk9msoGGU+nN39dmCw3+r/TXWBenwgIeZbOBLrpsbv4B3pRCpBB3xS7Fwf7W7riJzT9ZFy63+ABvTCVSiLv4mQ+w+SfWtrCHGP3/ndjinhB4S5rm+goBAMDrqZvwoqPRA4NJV0BG9fnyFh/hoSbT5pfSjuvyfGfSNVCj1/R2pEsg49Lplh/hoSqFQCEyMAxfiBcddQxz4kmXQEhyQsuP8FCTTaISGfjNmUO6BEoMm8Lown+mhIKWH+KhquVltWZEzGdyNE4r7e5l9AoaMo61+hAP1ek2vlIb4p5i9NKxueG3ka6AlFRbgTZdI1CJPDxmPUy6BAqE3RVJugRCzImtH2jwACXafBINABA4l8k5Gs2xtoNbk8JTrT/GA1RmqV+KXAY8zvyzu+gnWJxICAAA2Xtbf4wHKNHsXSEA3Mn6YH/viWNIl0CK5dKl1h/UeqA9H72ZyXkajXosYnMQBwCUHrTxQR6gUrvX0ADQdTFzy8da83+AvcUZGxTttPFBHgByS2x8QjPGLWV4sD8/8H5m/0BZrrQcaQdQF+i8K2rXIqu7Z7G7ub3PYnaX3anaXWvjozwAFKaoXIq8/JfFs9pK8XeMZ3d94Yo/bM210kGguW6rQknXQEjQk21Jl0CM5ZLNCwseAMo1fVcIYBi1jLltGAAAwPAEwxPRjD9X2/owDwCQptUBd/X87ruHyYuOuAeY7VMBqN5htvVhHgAgR7vjk+p0/BuL4+685keTLoEcIcn2InY8AEBWmrrFyG/g0k6kS1DfbeMYnuFg3mrziqMu0JnJqtaiAI9JjzO33WT4w91Il0BQtaNAC6ka2q3QtsAHZjB2Gc3NvpF0CSRdsLOweV0KkjLUrEURUYviSJegriGzmJ7dsKXU9sfrAp2szZnfzQxbxNRf4MB7WJ0YCwAA5XsqbX+iLtCXU9QrRSn8zPtYeog19j52+wgB4KS9a4q6QGt1tZlm/BZMZGckZdc5EaRLIGprvp1P1N9JJeaoVopyOi/vT7oEtXhNmkG6BKJKj9q54mgI9HmN9xXWGbwkjHQJKun5OLsjDAEAjtrtCqwP9CUNzytsYpj5MBs7JwfNZ3Uljnq77D6Wqw+0KVHzT6IBAHyWT2LhVomPe4DdQUkAANfP2u5VgcZAw+lClWpRVpvX4xn4VYcvDSRdAlmHbM1VqdMQ6FP6CDQX87r+n0Z7PTCagf+1juyxP6+7IdDXdNC1AgBgGLEkmHQNCuMGLGD7jhCunbP/uYZAW85ocq+V1nzvnafz0f4BK8JJl0DY8TP2P9c4oudYmRqlqCB4wXTSJShr9lh2+o9sMp930GvSFGg7gz20J/KZUaRLUFLckwwv2wAAAFdbrznapDHQ2edtzmjRong9rz0T8FRf0iWQdtbWikkNGgNtOaSLJ9EAAPxtC/Q7DXzWrQxPUwEAgOJDjq6OGwMt/KmTu0IA8Jx3vx/pGhTS637W7wgh7ZCjzzZN87iYp3gpqmmzbIo+b5x8599MugTiEmysCt2kKdCmQzoYQtqg47oRuux7mHk3YxPNWsv/s8bRp5t+PuadRsWLUU/U6j46THTvuWyPggYAyLSxyrmVpkBbTmh6EdKWblzZWXeJbvvQRNIlEGc8dtHh55sCLeSfsihdjYoMdy3W2yRSr9twjyQo2ub481aXZDXbdfMkGgDAa95jOhtKGvt3Rneot5b6l+PPWwXa6PhqW3MCn35YV3dQ7Z8ZQroE8qp2FDv+AutfeZ7D5yHaE77sdtIlyMh71izd3RSIV7HF9voyjaz/KgsdxilajOqCeiQnka5BLvyIt/GCA8x7P3JyGWHdQlcd0tNdIQBwg/+umy11Oq7S/8wF54xbnQ3QaH7fNFxv21jGhJ++TroGWfi+fDvjo/oBACBnqZNL6GYtNFzfo1wpZPB3PRVCugY58Pfey9zqqjZYdjrLc/NAl550csWtQU8+o4fhw4MX4gU0ABi/tbe+TKNmgRYuJypXDCFez92v/SlZnZcxsyaUQwkJTu/yml9Dm7oMV6wYUgxDii7Y2tBOQ9o8cx9ecAAArNvv9DfZvOvh+nGN/+pt6fDKHG3fT3F3z2VpXVX78vc6n4TSoi/tiv6uOQA6vDBZ053gY/7O/KD+OttdWGujxW/a1EuHi6Zxgf2yLpEuQrrY10eSLoEOxjePOX9o0aKFztPViLsGfN9XtdsJ3vHv40mXQIlzzm8JW7XQ0Ga4Lp7btsB16JVqf/UoqgU8tlD7T2nk8emvLsypajke7ayjNQ+0i7th6Q2ka5DE89ZlAaRroET2IVemcbcMdMEZPU3EasKNWaPFRPMD39b7Un0uO+DSA4tWt/9+w/S5pgXXo8uFXNJFiMX1+XdfHDNap/bDna58Wash8MfPy18LHaa+NkBr4Yh4frDWSlbMcdcuhlu10DVRI7TdDWFfbKcL+ZoarBL82my9/i7E2/ClS7+71j0OFTfqdqp8bISmEu23cD4bW8a4IuuLsy59XetZdxeuyV0LPWa82l870wy95ixkfOcJa6ecTI5t0LqFtoQP1evCcAA9u1zQyopnXve91Il0DfQo+9bJ8gUNbAxyKJus37G3XHR0eirpIlwzaXU06RIocu5Ne1vHtmAj0EWD+2p6LI9DfFTfAsdL71Bi3Or++ICjkem3z138ShvRFfzG6vhehI/om62BkUo3vxWHeW6S/YGrrZCte6Q9+phXagff/1X698mOXYKLyli78rurX2nr4qIyepA+V1euw3UYVX2W7lXPerw5WTtPY1RQ8pnjJUet2LxaFqbr9zkHAHBt44oTKV4Mm4t5a5qeWxTxkle4vDKuzUDn3B6u7wu4gDj+otP5w6Rw3THPzVV/v9Hl/jDbzzPa3qTzn2jATbXXyujsNOR6rMM8N1f4cprLX2v7kqN4jq6vOQDAMLzjeTrvfXuvncr6PlctmHf/0/W527Zb6KqhPfR9zQFg6NcxN4PCNrrv6qk4IKm56hcvuv6Lsh1oi2WGfvtW6vG9B+Rdpi7R/V6d6k26BsoIF9aWu/7VdgJdNUmfw/yt8RFDqq9Qtsb7mNUTMc8tWN48IOIhq52G2NxVf0sotcIFx/uepWr/3LHrRuP9YEvXXhMz08hOoGuq72HgzoQLGBxxsZB0FY0Mt6yJJ10Dhb7+VcyfUXuXysIwJtbX9urTJ52WW0OfO9/rpfdbcQkqnr8s5svtBbrad7IMxdDPI3JkfhIVvYaBc1d3wTy3tvlbEbeE9gNt9pjGxnoQfPtx/FVRPzJFcB3nv6zHJX7cZll3WNRfULtP52o663CVO1s431GRlwpJr4AWvfYJHY/ZdcOuTwpEfb3dQFe0mcHKgC9D75uzs4g+v/OIf3caPq6zRfjnDnFtjf3+E35gF3er0QoudJyQ5nT3DuUETnt7uO47sqQ592/Xh3EAgKNAl3YZ7WYxGuI3PKokjdRlR8RjL+h+pIFU32wQuTSd/UDX+ozS2+7vDnj2GcallRE59YAV8zoSObEGpH10TuQrHPylK+vXz61iNKb90Mi8bPUbaZ+pr0/T+9BG6X75VOywdQeBLg8bxdSNim/fkd4Xq1U+accFK25g5eZbvMLP9ot9iaN7EW6YbhcFs4kPHdIvNUfNfkPDoDfuZ+tnLM6+d0RfBToKdNbgODeK0SK/2AkBl6vUijTn9+i6EWx0X0lT8sV20a9x+LTIf1hbycVoEx8cPyI3S5297Tz7vv1YJ3xa58DZt8R1qgA4CXTm6BjJxWiVd7fJXa+UK7/KAR84+/0b/fBpnQPVG78R/yKHga6OjGPqthAAADi/IRON+RUKP+/wHbp2YRjeDTp0bU2G+Bc5/pNXNlH/E1da40ImDygprFbwUtoz5qE1IxgYcO4W09YPJLzKcaBzRvRhshXhoid1NhYrNZmF7zztpXlBCh1cP/LWSNmJz8lNiWkCo3fhPoPGduELlViMhutwy+LnYvDi2Rnzn29LuTl38oMN2DqK2R+9kPnHb/KvW+k9dfpEna9LJY+ShzdLuehz1kIH3sTsKhFc4A0je/HZsvYdBoxZtOimQMyzc5ZD6yRd8jn72XbeEcvyj9+ccXrbJhfXjncu8JaZcZHMNhDiVM35RdKzU2dp9Vr3JOO/gYKLWzddleO5dNCdMwaFYUeKa4STU6RthuMs0PzwbcxvxVSau2fTXqPZncd4vGfU7VN7BzH5yEgS06L/Stuj2+n1RLsvp+KvoaY0cduvyTUSu8Q5b++Rd00M8mf52k2s47NSpL3Q6Q/ZY+ZX7PUWtmYxFh/YdKywwii2neZ9fbvMnNnVF7tRxBBefK9C2iudtxpdtjI1zt8+syXv5NajeaXlrveKGwLbdhs3emCAARtnca7NFDtTpYHzn7TfojUSj61DQuWRoyeTC6+7MHrJo01wSPf4Mb19VChLd158T+pSKS40HXHbcAUUa5ac0+evpuWXFBXba6oN7doGd4iM6X9DCLbMkiTPPiL1pS4sdpmycb7Uo+sSHxExBYqSstNTi3Oq80xFNWAqswAA5+8r+LbzDPYP7dA5IjK6Dek6NWzLFckvdaUJmfGdr+Tj65olryrLWFDF1eSaOBA8Q/wE/xDP0MAO2C67J/XxPyS/1pXliC/snyj5+LrGh0EU6Rr0aMtR6a915Rlz0mbpx0dIrLSdbqxi5UqgLafOSz8BQiIdPODGi13qBTwrfvItQhJlbxU/NbaJS4Gu2CtyxTyEJDv8mzuvdm2cxslj7pwDIddlbXZrUoVrgc74i/wa94gNp3526+UujqTbdcqtsyDkotz1JW693sVAJ5wgvWcDYsOVbe693tWxzltE7a2FkDQlG92c8OZqoA/io2ikPOHiejeP4Gqgq3+XNsULIREqvspx8wguT6/66ZqbZ0LIGUvCJnfv1VwO9PVfyexAghhi/NTtJSNcnwDr7tU6t3PVuQAAFUNJREFUQk4Ip39ze2lu1wOdtEvavHKEXGQSuWusLa4HuvbrUrfPhpADR3e632a6HmjhxHnsXEEKMv031/2DiFhEpuZztfc8Q0zZ/5cMF7UiAl27M0nNLc8QY4zfpMtwFDHLfF3/Fq85kGL+2meS4ShiAl292d1uHITsqdooS9edqIUYc6XPLkfIsb1/ybKXnqhAF32PvYVIGeW/XpTlOKICLSTuk+WkCLV0SKa//uLWfs5yd3AfQjaVbJVpwL24QJtPSF5EDyEH9krYBdkmkavzX9si03kRspIt29A3kYGu2i99XUiE7Dkt22pzYvdPSdgj15kRapD7rXtTva2IDXT+ThwWjWQmnHVvLQ5rone4OnxQtnMjBAAAhZ/J178hOtBpe5XY0R0xrHbvVvkOJn4Pwh2n5Ts7QgBFkncIskF8oM8fwKlYSEa1207IOCxZfKCF33BBAySjko/lnDgiYdvj/bjOHZKP5SdZp/ZJCLT5WzlmFiAEAAAZn8o6hFPKxvT7LuJULCSXzxNkTZOUQJd/XShnCYhlST/JO8ZeSqBhR6qsNSB2Cf9LkveAkgKd/1/coQLJ4thmmSdBSQq0ZWMGXkUjGZi+TZT5iJICDUXfyzHjHDHv4G65gyQt0KYf3Np6CyEAAChanyD3IaUFWshwe2FqhGDfL7IsXWBNWqCh/DMcFo3cVbA1Q/ZjSgw0JMs3JBuxavcP8h9TaqCLf8Q1Z5B70jYUy39QqYEWzv0kax2IOZYjMo7rbyQ10JCzGZ/cIXck/1OJuU+SAw1nfpexDMQc425F1pWTHuikTVUy1oFYk/SBIoeVHmjYu0O+MhBrqr6/oMhx3Qh00i68ikYSCZe/VqZrzo1Aw76jspWBGGP8IE2Z8W3uBPr073gVjSQR9m1R6M+7O4EWfsElOpAkle+5v2esbe4EGs7+USFXHYgp64/IPiqpnluBhi1XZSoDMSX3M6UaaDcDfeIwPuhA4n12XrFDuxdo+DJFlioQU07/JNty0K24GeiDe3ChOySS6euzyh3czUDDf7JkKQMxZM82BVtBdwN9cjs20UiUwg2yTyS04m6gLf/Ok6UOxIzdSgyDbuRuoIVEHBeNxEhZn6nk4d0NNBg/wemyyHXGbdsUPb7bgRaSvsMVDZDLrn2jbO+y24GGii+zZagDsaFsw2FlT2Bw/xBVgaPcPwhiw/ElCq8W4H4LDaUbcEV/5Jrr/8tV+AwyBBqufSXDQRADzPu+VvoUMlxyQE3l+CAZDoN0L/epNKVPIUcLDRe+l+MoSO9qvzur+LricrTQYKwd2V6O4yB9O/uc8n0WsrTQcAyXbkROVb4n/2KjrcgT6MrflRxvgvRh+w4VBrLJE2jY/4c8x0H6lf1xjgpnkSnQxi3KrIOD9OPrI2qMkZAp0PDXZpwAjhw5tl6B1aBbkyvQ5u/l3p8L6Yrp61OqnEeuQMP57dhEI/u2bFFqJY7mZAs0fH1NtkMh3Un9OlmdE8kX6IubcL9kZIf5N7XWXpYv0PBZIu6XjGw7+z+1WjtZur7rlJvHe8l3NKQjxR9tUOtUMrbQll/O42QsZIOw/3PVziVjoKHoX0psa4Q0L/Nfiq3N2Iqcga7d/gdeRaNWqn/cpd7JZLyGBqgpmolX0agFIeHvReqdTdZAC2Xd+8l5PKQHZSsOq/iHW85LDoC8D5SeA4m0xvzHNnX6COvI2kIDVASNkPeASOsynlB8HqE1eVtouL7+krwHRBpX/eFVVZ8UyBxoOKP4PHWkKbu+UvdZrtyBrvodd+NETXI+UmOaihW5Aw2nNuBunKjR5/tV7j2WPdDmLfvkPiTSrH0/KLc9kG0yP+UAgELfoQGyHxRpUsFatUaNNpK9hQb4Ga+iUZ3Nv6k+FkL+FhoqjMPayX9UpD3HXr+i+jkVaKFhyyEcRooASjceUf+kSgTa+D5OL0Qg7PyCwFmVCDQc2VatxGGRplz+mMTAHkUCbXnnqhKHRVpS9g2R5eEUuCkEgHLhZhwYzTbh0BIiPWyKtNBg/uEY3heyLfOtQiLnVSbQUPwOLtLBtJovVe9SqaPMJQcIOV0HcsocGmmA5cBKtfu86ykUaDBmTg1U6NCIfjmLSS1poVSgocQwXqlDI9oJb61XYbF+mxQLtCm3f6RSx0aU275G+d2B7FAs0FAMU5Q7OKJZ1tKTxM6tXOaEwk79FTs4otlbG0zEzq1gI1paeSOOumPRr/9QedqVNYWeQwMAwKEtCh4c0Sr148sEz67kZW510Q2dFDw8opLx4//VEjy9ovdtGW1HeCt5fESh7WuJrp6l5CUHwPq9ih4e0SflU/VnqVhT9slaiXk49hcypezTz9Rcya41hR8Vp8T09VD2DIgm5p0vqbK9pn0KB9qUMq6DsmdANElecY5wBUp35uW1GYb3hcwo/+A70uPglb0pBIDPcKg/M2p//4TkEzsAUL6Fhur0aX5KnwNRQUidn0q6BuUDLeQGxeMgJSaUrfiL7BMOABUuOaDyE7IPJpFKLF9sJjUI2ooKjWdZwSScAs6Ao6vSSZcAqgTakheF40j1L2/JIRp2qVTj8rYiZzyOI9W7mnd/oGK5LFXu1wr5cTgFXOe2vEVwELQVVQJtyo+NUeM8iJgLq0+QLqGOOk/UCitwyWhdK3z3R/JP7ABAjcd2AACwY7M650FEWLZ8Q8ETOwBQq4UGY07fbuqcCRFweDn5LsJ6anXi5XoO81fpVEht6Wt3kS6hkWq90kk9+6p0eYNUVvHf9+kZgKZaoKsLhnZU61xITebdi9Xd/dgh9cYNpfkO81HtZEg1wuVnadpSR8XLgM8OUfJkB8mp6M2jNHR5N1BxZGdNxtgg9c6G1FH7yT9peWIHAKoGGjK9b/RU8XRIDVteJLP1hD1qBtpyZUAMjunQl3MrEmm64FA30FCVNBF7wHWl+IU/KLsxUjXQQoF5IjbROmJ573OKntgBgMqBhtrsXj1UPSFS1KY3s0mX0JLK81fLrk8IUPeMSDmnVp8iXUIrKgdayOFHYw+4ThS+uZF0Ca2pvcKAMb1TX5VPiZRR/dn/kdt5wi7Vl8woLhreXu1zIgWYt72aR7oGG9RfAybTfwR2r+jA6ZXnSZdgi/qBNqd276P6SZHcCl7eSroEmwis0lVSMhQvOrSu8h8f0tVD2IDEsnOpQYNxiV1tq/3xFdp6VOqRCLTlYq+e+OxOy4QDy2lY9ssWIguDViSPDiVxXiSTlKXH6Zl01RyZlW5zPUbg7BXtKlv2K/GFze0hE2ghMboPLhqtVZY1X1B6AQ2kAg3Gs7eG4Lg7bRI2/IPo1pqOkWony3PH4k4V2nR41QXSJThAKtCWVL+huIOhFl1btZt0CY4Qu5I1JvfqSercSLrct9dTe0MIQDDQUJI7CieBa075J+/Te0MIQDLQkGMag6OUNMb40xsFpGtwjGCga1M7DiJ3diSBcOyFy6RrcILk0+DyrAGdCZ4eiZa68DDpEpwh2r2RUx3fluT5kTjZS+gcMmqNaKCFi8FxeBmtGZXrvqRwzlULZDugzUm9cC0lrTB+9XYp6RqcIzyiojgrDleN1gbLtmV0bNzmGOkhQqkQhwt1aMLhJbQ/4AAA8oGGxLAbsAtcA64uOkK6BJcQD7QpoW80Tl+hXsaK7bQO6W+OeKChLOVGHElKu/z3vqsiXYNryAdayKkYhSNJ6Vbxn/eLSdfgIvKBBss1/+F40UEz08Y3KB7S3xwFgYaapG69SdeA7DPveJGmfa4coyHQ+DSabucWnyFdguuoCDTkVIzEjZMpJVxedJB0DSLQEWjzVc+RdFSCWspb9rs2HtjVoSRGxqTO/UjXgGwpWrGBqn0InaEk0FCS2xfHRlOo9MOP6Z5y1RItgYa0sjjc8o061Z++oYERdtaoCTQkeMT7kq4BNVe78aV80jWIRE+g4XynvjhMiS6/PJ9KugSxKAp0TcKASOwxpMm+5QmkSxCNokBDcdJN7XGYEj0OrzxG5yr9jtAUaMjKuhVX2aXGueV7tJdnugItJJVNoKoglqW8tFVLHSoN6MqP+YpvPF5GUyF95U/0T/G2ga5AQ9WVyFi8jKZA/tovNdVB2IiyQEPRtbhw0jUgKPr3ezWka5CGtkBDdhruYkhc0UdrtNXh3YS6QENGdTwOJSWr+qPVFaRrkIq+QNde9BiC+3KSZPzx9ULSNUhGX6DBmBjWj8KymGH8YWUG6RqkozE5FUk9o/DhHSmm71elka7BDTQGGvKTB0TgwztCNq3U3IAka1QGGtLTRuPgaDL+fP4S6RLcQmegITXzxjaka2DSX0tOky7BPZQG2pJkGelFugj2CAcWn9TggCRrlAYaahN53JhTbZbDC09rPM/UBhqqE7r0prY4fbIcXXBW63mmN9BQfrJHT3zUoSLLkQVntThgtDl6Aw3Fl/t0wUSrRjj0Nx3kmeZAQ/alQRGka2DHvqfP6CDPVAcasvNuCCFdAyv2PHdKD3mmO9CWy0VDsINFFX8uO6H5+0EAoDzQIFytGYSbZKngz+XH9ZFnygMNpsTKITg6WnF7lmtwwQLbKA801FwI74+7Jyts7xK9tM/0BxqMJ9r3xkQrSTi4WCfXzwAaCDRUHAnth53gyrEcXXhKP3nWQKCh8lhcVxzvrxTLsQVndJRnLQQaKo706YaJVobxoC76B5toIdBQeDwW1yVVhPGn+Vf11D5rJNBQcKpXNOka9Mi4cUkm6Rpkpo1AQ37SkDDSNeiPacOKdNI1yE0jgYbM5H6YaJkVfvGalud326aVQAtJKf0x0bK6/tGb2aRrkJ9WAg1C0rWBuH+yjIo+fE+76yPZp5lAg5ByZUgo6SL0I23V53rMs4YCDUJq4lDcg0UmGc9/V0a6BkVoKNAgpJ8fgYmWg+Xi0s0aXf/ZGS0FGiwZ5zDRMrBcmP+nNtfnd05TgQZLxvmheB3trtoDTx+tJV2EUrQVaLCkXRzSgXQRGlfzhx6WK7BHY4EGIfUKPr1zS9mGFddI16AgrQUahJQk7GFxQ/6nr+uve9CK5gINQnJK93AceydR+rv/yiVdg6K0F2gQks90xRX+pbm46rsi0jUoS4OBBiHzXA8cHy2B+egLP1eTLkJhWgw0QO6pXjiHRTTz/kUHzaSLUJo2Aw15xzp2x5mz4lR9/0yifh/XNdBooKFgfyiubiBK6TtvaHi3NpdpNdBQfjg0BvfndJmQseo/10kXoQbNBhoq9hsH+pIuQivM55du1Oxux6JoN9BQfbp8IK7k6JKa3Yt363b0RnMaDjQYz+f0aU+6CC0oWr/qLOka1KLlQIPxXFavUBxO6kzOu29penNYUTQdaLBcSezeFRPtkJD4wn9LSRehHm0HGizJl9pH4gNpB4xbX9yi+94UKxoPNED68aDemGi7yv6z9jjpGlSl+UBD0cnKodjFYkfSq5/oerBoa9oPNJSeyRjqhxfSNliOLvm5hHQRKtNBoKE68WpvfNjRmvG7pUdMpItQmx4CDabLp3qH6eI7kZEl+421afpaKtcV+oiBJX1/h2gv0lVQxXTihS/LSRdBgD4CDVB4kOuDIzualP+8fI/+x4raoJdAQ/nB632CSBdBC0vqv15OIV0EGboJNNQeTwqP0M+3447aPes+YWNsXWt6SsDlc/498Yk0QPH/Vv/J5OUGgL4CDdknS2LbMP/87uwbH6ay93Sjga4CDSWnkmI7sp3omg2rf9PnQrmu0VegwXjpVLs+pIsgKeutty8wMpTfNp0FGoSswyU3MPv8rnb3sz9eZ/dyA0B/gQah5HhSrxAmLzuEvPdXXtDrus+u0l2gAUwXjrfvwmC3YfWplz4pZrt5Bl0GGoTMvZZugYw10kLO+sWHmBuK1JoeAw1QfjClcwRTa4VVHF37TgHzzTPoNdBgTjzq28mfnUb62v9e3Mv0w41GOg00QN6O4ogwRhJduuv1/+aRLoISug001J65IET5kK5CDRf/tVa/mwCJpd9AgyX1UG4n/e9eUfLDm+t1uSesNDoONEDluRO8zld0NB97+dMz2Dw30XWgoTbjYEa0jntZhOL3V+9haBUZF+g70ACVCXsDI3XaSAu1vzz3YwazA0Vt02/r1YBrN2NpjB6HSZsSPvg1Fx89t6D3FhoAqi9sDeqku4U7ajM/WbqH5XGidujt92wT5zth6YA2pKuQkyX/r38frCFdBY2YCDQAdHhiVk/dDFgSSk58/gu2zjaxEmgwDJ03JZx0EfIwHt7ydQ7pImjFTKAB2kx76CY/0kW4r/b0H19cxXtBexgKNEDslHuGaH3p3as//3gCR4nax1SgAYbOuDdKy99yyk/bDrG4wJfrtPzblSIg/va5gaSLkCrzh19PFZMugnKsBRq4oGEPTdXibnBC3rcbE4pIV0E95gINYAga/XS8t8a+8drrP3xzGePsnMZ+r/LwDLnlif5a6js0Ff306eUyfLThAg39VuXkETz9sVitzKOtzt/x8YVKjLNLNPI7lZ8heNYDPYNJV+GcUJHx23+uWjDOLmI20ABc6L139KS889BScPX3zedIV6ElDAcaANpPunMExZO0hIyzP+9MJl2FtrAdaICQSRNGRtM5hrYm8dCenUV4rSEO64EGCBw5ZuIN9HWIFx3av/dENekqtAcDDeA5eOgtN1PV12JO+nPfoRSWtuiWDQYaAICPGjBmUizpKhpUHvzlxOUC0lVoFAa6Dt82cvg9w8nPphW407t/TUtnfVFc6TDQjbxD+0+bEuFBcI1Hs6Vg128n80rwRlA6DLQVg3/HMZNu9vcikmmzqeTApqP55bhqjFsw0M15ene647buAb4q/1zMFaVn/9idVINpdhcGuiXO4NNn2vhObQNVa6dNxUVXtu5IrzXjpYb7MNA2BfS5aUKXju2V/+kIlQWZift34/pHcsFA2+PVe+Twbp06KbmjVm1edvqZ40fyFTwFczDQDhgiBgzu3b1biBJd45aClNSrCRcus7ont1Iw0E4Exvbo0bV7j3A5f1C1malJqZevXMHnc/LDQLugXddu3SK79+riL8OxilJTki+mZ2YU41WzIjDQruECQjoGR0dHxkRLTnVtQdKV9Cs51wuvl8hZGWoGAy2Cl3+bwLbte0SF9wwLEcC1H54AAHAtJzkzNaGqtKS8EhtmZWGgxeJ8fL38vAK6Bca2iQoMiAXgOIAWz6wFAUAQhPKkmszc7Py03GpjVU0NLhaqBgy0RB68N+/FG7yE0G5eQkBssxXVucJLHFeYWmMxCqba2lozjgNVz/8DOrsvkiwQe+kAAAAASUVORK5CYII=\"\n              height={627}\n              preserveAspectRatio=\"xMidYMid meet\"\n            />\n          </g>\n        </g>\n      </mask>\n      <image\n        x={0}\n        y={0}\n        width={720}\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAJzCAIAAACpvbOLAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9e8xlWVYf9lvn3u+rqq6qrn6/ZpgHYweYIZDOkASwiWYUbCSHSImtJiSRpQmyJhLSREYB7AScfIqiKAZCIpDjDInswZaw3BOFyAYcBNKMzMtKBhNwm8c8emAe3T3dPT1TXa/vce9Z+ePsvfZaa+997v0e1V3VvX6aqe+cfdZ+nHNv3/U7v7X23oRAIBAIBAJnC+bz+MoCh7u4ucKFa3jsrfjCNYw7oBGHjIHADCIAYFLVWses2iXCSKAB60MMOxjWOHgJ77kfn9/BjRFMGF+ib7z9t3cS0GaTQCAQCAQCW+BhfnGNIwYfYnkDj96PZwnM2AXGiVtM7IEyiSBDJqBJhmMb1SlPJwPA4AGLI4yEFWEgrAkYcPAcfcvtus8TIQhHIBAIBAKnAPN5fHXA0S5uEBZLnD/ELYCA9QASYtFkDLqVns6B5KqLPfWPRzBjZ4lXGbu3cN8Rzt3AI0lJeb1xRwwiEAgEAoG7Dg/ziyusjrBzHQ/dhz8W5YIwsFEmPGmYZxuwesYMU3HtqFMegCOML+IbL+OTjK9ex03Q+096o2eDIByBQCAQCBwHzBdwdcDhLvaXOH+AgwHjdMEZ2vhIk214qoEGw2jXde1U3QHgAbwGnsfLl/E44b5X8ejrqHYE4QgEAoFAYCtc5ucI6zV2b+CRB/C5dXLzOZVCoVIsasbA1gFzXQuebWALjaSoKVLCwALj5/FND+JzF3H1c/RNW97v2SIIRyAQCAQCs2A+h68ucLTEPmO5wKH1nj1hI13dhm3UVAOdcAxmIykwOodnKgMAjFPA5Y/pyfpGbyuCcAQCgUAg0AHzObwK8AGuXMGfEIhbOoSgJVrMR0NmhA009YwtJragyTYAEEYAC/BN3NrHrVfxZdD34LVCEI5AIBAIBCyYgVd2sFpg3Mdj9+ILhDUlj+lJxoQpX7RFHaaDxAY2JnBglm30W6hTTX11fTACX8AnH8Rj53DPazZ7NghHIBAIBAIZzJdxbQ2+iXuBT9+H80gJoelys1ItbOTyOa/fqWJKZthGK0BTFvmgTbkjBDrC0QqXD3D5Kh5/DZJJg3AEAoFAIDDNPXmFQfu4/wk8fwNHBDB4RtioPGidN2q8vp6uUq8iOjM5BRXzmNU2xGAudyQXjn+Cf/1BPHsOX7ndUkcQjkAgEAi8ucF8D24w1rdw7wP49IidjTV6koa1aWoMzaU1fDuObfSTTJtsY2bZDxfZ4YlUHYGPcGkfl67hLbdP6hhuU7uBQCAQCNwF4E/t4ks3cfESDu7Hs4wdAmb/x71oiEYlSOhLzYozbMOPeGZZMNX7jLyh00qYgF1gF1ev4S334/l+v6dFKByBQCAQeFOC+QJeAfZv4eaDWI6bKxwDLlfUSgtO2MBs6KQ76xVtpYSbeR51WMdpIQwsQDdx6Ryu/fHtia0E4QgEAoHAmw4P8ef2cf46Hn4AnwZ2GJgVFbZFc2JqRTsaS2vk6jMTUtDRNkxfvaTU1gDqyAtGYMA4YPw0fWv3Jk+KIByBQCAQeBPhHfzZA/AaGLEcsQKI08SObTGbwEHYICpAe31bcyZpQxtsztXorDDm6Y6qWwQYwsgAQJ+hf6sawqkQhCMQCAQCbxY8yJ9dgi+ArmW3euZdEJhB/Zkpbt4KNp629AzfIFpsY2bebC11VDY8gD55ppwjCEcgEAgE3vh4gp9b4XAEMzAtraG8+tm4Qq1A2Ha3mT+SLJtTbckKFarxdqZIq7DO/2hPoiGAME4b3jJwhrGVIByBQCAQeEOD+QK+fA6H9wD7uEFpugkDZL398QIrriZ8dmdZvaO3wMbGGMqUnKHpAm9SNWxT2wZfKpFj0mlAGAeMf0R/du7mt0YQjkAgEAi8YfEo/+4tPPAq3vogPgkMBDCUV81gd348cItSmBI0aMfcMhsoqkY7w3TLuAk8z5Bjw4R6KSYD1owFsPPJs5i3EoQjEAgEAm9E8Mcu4dISy3MY1riHjcOrtY2TwMVQnGvnqrCqiGYMRasOM/GXWpY4jrbBKIkm07Opp8tOy4LtDri1i5u/R9/Vew5bIghHIBAIBN5oeII/cQO4imuP4bEViPIqlzZRlDwROA42SQi1/eZ0DWrJDLB6BhdygB7DcFVcjy1xpR3uITCDz+PGErv3Ah+n9zdvbUssT1M5EAgEAoE7DY/xp0YcXsStXTwxYhxAnOWGvMiVJFic5K271h5gvfjMMqPVlBNtX88c6R70FkpvJohYzmE0mBkVRG7zEJcewOHn8Eiaf3NSBOEIBAKBwBsE7+ZnbmE4wmqF3RELAnKwYBIzkodV8Y7jJm/M+HJ3yipfpEEybGtUs40e1WiyhBmVQgbjDgAMVdynOVeWMD6PxbN494P43Jdnns0mREglEAgEAm8E3M+fuIjdezF8Bcsx+1qXIpo9MNnYyrbozAqZmySieqlTSqUuCwvqTBupAx84JtWAyg5xw9ugpkzGDDrEfQ9g/7dPmkAaCkcgEAgE7no8zM8A6xs4HHEPY01p/VBJekBOk5yOpk3nJ8FgK9qxaQIqWpIDkCaXatTRFtaco7kwRnOuypYZGzOhFqTnM9NUuZcB6wew/zIunziwEoQjEAgEAnczmC/hxTVuLHDzAgbGSCBOnpvyop8SUsFEO1RWB89yDkm0BBq+HJ0sCtT+G4Z5+KBMa39Xv/QnGnShOar2drI6e6MiLu1+9YBH0C1c/xO891H88ZdwEkRIJRAIBAJ3K97Nz7yMyy/ibY/jGWEYANQMFImkkJ2Wost78MtjZFdNTjZAQ/kgeHIgUR7kVJJCNepptM2UDlk3PRMp3VEZXi2Z1NRErb9e0k1qeSM/qdT4gvgFfseL9I4TiByhcAQCgUDgrsS7+ZkjjA/h2hK/NySXWZy6Tp1wvjFbyqQV1LSjUhS0WjBmG9T5E/m0t939lIbpFI5GCud8DilhlMFUesboWu6oIyOZU7aN5AM2I1mPeHF4x6P47AlEjlA4AoFAIHD34U/xP2PsnsPuqzhEWmYjpYLOihw6acOkjlrhoZmPiSa96E9a0aGNivPkdjo7sHSpRtV+M6bj2Ekv76Q+VR2xJz0TBuLrfP9Fuv4v6DuqqnMIhSMQCAQCdxWYr+C563j1Eq5eA+WYwpS3Mf2rpYK0CMdkJnGEvHyWX6Jj6mA2JwNNqlHNBzEtsGlKm7UFEniuUJYBrVQQ9HiGHWFz9XRzikLNKp1DWTLTRboOrP3dbEIoHIFAIBC4e8B8Ea/cwANvwyeAwYoWRuFQ6kWROno6h2Q/KC2iuUPKvCN3SZqmukPORWVt0BRLmjmk8ISgJ7c0eAbaVIOnf9y8lfaQiEemkej3j7P2aCgcgUAgELg78G5+5iv47PN45zvxCQZxTr+gdJC1jqRkJEkjO12S2bCKVSRFJPvXtERYlZDRPN44V8UxA4IqtBU3B2UqekG6sDkwl4CCNs/Ip1zyTurqnkUxjzQMHS7VQygcgUAgELgL8G5+Zo3VAssD3BiLjFEyNpB1CwZtk7fhZsMq/5qYgZrH4Qy2irnUnEN63BTyqI9djIMzueoOrBUQcSGbbFZiKJ5AzAyPiZiZaL39pm6hcAQCgUDgTsc7+GOHuL6LSwe4MZbECCEEUyqG5gdJ5NDlNm+DnJYARR0my9YbfHuNCljasV1KKbKm0mi816BlADNkqBHQaZVwfYud1FQ/qoF5pPEqHt1+HbAgHIFAIBC4o/G1/AngYIVbDAZ4ALEEFVRwBCbCQjkXwZSjkVU6wYQYdIxGGdC8pFEd9xI2CyodwmdrcskeRcU50GMDrdXGnLzBWf9pEKNaGqmHR8AC+BN88xP4zHOdu2vdbCAQCAQCdyCYH8KfnMe1XRwscDC5SBtM2RBJsQEXVGmkzff+3DcInnMYdKhGNzhSdSFu3tEF35fOG23JJI6vNFqw7YC4Zi31UDXBahwQMBC+iOF5/AZor+7OIRSOQCAQCNyRYL4XL72Mt38Dfm0FAIOa9VpWyeS0VLmkjsrK5RNdYFQzYyvJoVYgkmuvsy5mam2jPSRDm87ZSfuoOUdzokrdSCNXozRSLpbx+3VFTS+GYbguRozP47cew1tewGaEwhEIBAKBOw/MV/DiVTzyjfinR8AkbFRKRjmtckgBYw+dLjp1kE8SidElMCGVtA+LlQFkuxZYT2rWF2flm5XjJ2Vs/Ldas3xiJW61ctO+vQtNC2oJJHEsYnDpdOJhZZJObrEwJIlJOdaiglO8JvoSls/jOzdmcoTCEQgEAoE7Do/is1/CO78JHz9KrlF79ZL1qXI1tOwx8Qwm65mdqoHqxT21bry4lkOMjSr0ukWu21zF3LSTC7XYUJYqH2wXlliMtgVz4MM6XPrVbZJpM9VVBsiLqnlWlLtgAEvgeXznY/jURpEjFI5AIBAI3Fl4D//qTdx3L64egRlD1ip89kZO6QDyVXUMnbehMzkqf49NhUYU2ViRFfXYJiWzWtdLH88tPtZsv9ERux4b+SKtgBHc5NtOkAgDj0fDcBWPPkvvrRuxDQYCgUAgcMfgX+N/ssYwYkEYAWIMQi8sz5j+N8AETVyoBZZ8SFaHQ38/kXzGrYp9P50P7WIeSuGg3O/8kh4NntHL86gWLcUUHrG6SKOdDllJJa1dZN2d8kAYsV7i4Lfoe+oHIoiQSiAQCATuFDzJv8jgBUZ5t54SBfLKoSmrICc3gLDO622QvI9LeKW38MbsRI9SaNMnm2SlXRHenet4jo7gtPdSoaqRethzy4DKqdE2unxldkJsLcA0QlEMLHFAWPgnYREKRyAQCATuADA/hk9dwpcv45XRqBqiYUjQZNCBEm3pSrKP05mkaLEE7Yx7JT6+0jObaS0XN3w2WlQAFRsQLkVmgXYnVGDKee017tpvsqjqpkwvNSVaEu9g9TDWH+2LHKFwBAKBQOD1BvN9eO4F/Okn8SkVvJhkifWIhfWvI4qeoRf4Gknt3KYnwU7VnNOFddi2sGFGjZU5tm9QyjcwAHXczuoYylVqCg9g0+C8LtKZEAtXOD1tu2qIaXYEPYz1yziHPoJwBAKBQOB1Be89gF95BX/uSfwjyhvAQsUhqERYSKiGMiF1gExTUoYHtbMoCjr0om2mV+ZAh17MNCKXXL5FIxrSOHaFhTpA7ou35RmWcJRmq1uYCmmArBTmbNLpOPIfDVfuxy30ESGVQCAQCLyeeIL/1+fwwr+JJ9cqdIKSHAo1UQVqiooLqZjjahrLMOvg65KuQX/LN4/epXoJr/lQTpUUogejTrmmGhtmvlC7O9SsokXLHKEhotWIc+dx8eOdPetD4QgEAoHA64Z/g/+vV3HtW/AkpykbNGLI7q3sFJ8DKM43D/U6HGIjm9EDBIz5QNwkbSIZjVQPUoGVjo2pXl+VHNL2pJLOKSrCIYWyeOjm1TgaB10NBpXN7CSd9Nmdx8UljpptIghHIBAIBF4fML8Ff3AdL98LEFYAJk83YJS1RHNAZBxTiURb2CVtZIJCmWKwyuGAct4uEqFJTE0RGvkWmXNIbVS10OIK04GQDO/sq9NmI60oSQmjbN541ha293nR7dcpq/oU7lkxLtCtfXQRhCMQCAQCrwPein/5Bbznrfg/qeQHFHAW6mE4AVSKhpwOYpIpgBZEJuYxobGcBqm/EyHI3VFO2oBe3nuqPBS2wchHOStiulR6yfNKIJ7e5mCWpshWkTPyJSZpozauyJMTKiiHdeTJU5PQ6OiPCd/ke2RVkYBr2L+Oh3sb1kcORyAQCARea3wbP/0qHroXLxPGUaVooDH3VQoHVqf2ks/8QE62mAop0YLa5dWZGeY9fvYVfw79AEQRBuYXwJjtl1EeWa8Rl/DhIyMitzQ7VapJQwjplTDh1/GXADQJRygcgUAgEHhN8W38NGF9L14esOYyA0KSNqalusbKFY6VtpEMtLBBmWQoA73Lmkm/QCkVRjI3YUTs3QAsGtkbmm24TreJy9RDYq5bINs1Nw9kMK0Ejnrqiuz01huSuVliBuFhfP6lqunqLgKBQCAQuJ34Nn56wHrEYgcHayyhpAg930RJF+W4mn5S6xxQIkdZDV08aEvkaHhTVVyTDDlNHKUpP7hWqnmwaK241RuJURQIPC0iSu1m6wF4bQPVrnLWoNiTZxhzfU2DGQhfwlt/n/4sKoTCEQgEAoHXCsxfwa/fj+fPYX8ETQpH2aA0GylnP+jzebhFMqbEUkoHXKxMYzNRkqbXb2Q5VKuBNfx97d2HiivMj6e0w6WkXiR0Nj5SDJoECPYe6/a3yWwdwY/w53+/PYxAIBAIBG4/nuKnP4PH/jm+4334WbtUOalVyU3qBkB5fgpyGgfyshywIgdsYTmY5rkgNWhEji1cYHLDUqsWDGyDTQ/d4AGD2l/e9dUrF7Yx3WZFCOrqJdRiNZJ6nGM+gCIcpby6o/YpwAPzSDTS4p9Wa5yHwhEIBAKB2w/mZ/Fr78IL9+EjykdxzslIG8OSTd1gYEg71E8Y01u0EioYPJT0i2lfN8ormpN2zJxcMin24EfZG/7QuFR4gJ58K21WEQpX0XOF1pDaEY2cCjqfX2KGoVQiWU2kXK0bV5e2kWHU/BqikRYtOhWEIxAIBAK3G8yP4tnfxnfcj7+bndPAKKQA6XjNJYaStoRVy3mxC75wkv2hWtL/ahLAyMkWrI63xHzYRftvsddRDNuIi27MpWvYcna2inBszLSQ8ZDOA23Msy0t+yiMRXviDIABGLAaW8wtQiqBQCAQuL14F3/iM3jvn8f/NvYXJpdoiIROUMIlel3zEnyZGu+FUaRu9Y7uAyvz6C3HmZsqERYXdqlyPtzp/EKfG9hGr4WtSwrzqMx4ljBtUchMNC7o8Jfpr+jLoXAEAoFA4Dbiz/FPfwVf+C7887G8009cgWVhUChJAwBh5JKZMUGkkLS6KEHeoqecTXZhFE5zaGuvTOrfOWyZ4TEdSGylNSukcdoMOtR5GLLAV2t4Yz3CPolpJ23U6R1oUJl2VKhZSGAQLeiQsXBjCMIRCAQCgduFf5f/lzXG+/F5YEllT/mRCi0YUOhCyQQACBhyQobxwfmUVS5niaQopYFgFtDUjZtMjh6aIY9ZY5O34d7+Z3M40HThs2yDNyaZdsBK4XBj20A4VLPNSFDJlWGcQ1quviAIRyAQCARuC57inzzAClgSOCdsalVjcnslAzRzhRQrmTSMHDoh6/ZGFTGZoieabaQsDSlEyRhNTTGGTnaC5KJuIBwtDqQLxMZlek69M/n22TWV1lMv/ZsjKsuuy02JDUs7eVSiHrEyZeFtepATlZHG3Y2weoZ6no7KMOUBAPgVftytcR6EIxAIBAJnjw/yh1/FwTmsbhY+oVM6Kx9dMCrbwkiyVyMqzrWwikwsSDn1FFIZsqcEZBQA1tQYAFl+sBUq6mAuKR9fhA0qc0yaUsEEt8on3NioCBK6HWcjTUFRBILnH375czsFxt2I6Y6aisiI/3f4rj+N3/1U+9YCgUAgEDgL7PHec7gMXHoet0ZQnnti1hK1x/U+KY3THHaR6kAxgyo3BnYRjgL2C44dC6SOGqmXeTUwL3Vo5jGbjgrCCLmrtoHjRj3Gk67a7kiV+7Eda1GyrIh444EWz+Ntv0Pvl6JQOAKBQCBwxvgSdp/AtU+ABmAAcSNXozi8vDBXWVRU1A99Sik5gHJTxQBlPQ/kYpCfpaJf0GXxjy5o5iy3htR1IQZqBS1TpbnW5wzhELbR7LvXZscMFdsQNNQXANOTabXps0P0iqVV+fpxfPZ3/EgCgUAgEDgj/EX+mxcx3sTOCkBWJrKGIapGU8Pw+77a3VVMa3IqjkxpG9Aih/Kj3uWNGE7jBVVmg+soXc0JJUaE2EQ4uLXkRrP3mkg1zRqTWaASL3RTVE7by2/Y8fiFQIygQhh4cZ4ufjQvORoKRyAQCATODP8+7zHWN7AYsaa8uheAvA29IGVjsDoFSGbMahXEpYiOWUiQLA2tlzjnq+MpqJhHZ24qZj24WNj4jJJSCj8qXATWK7fXCU3NtnhIHbOo+U0FrsIubsBiZg56uoUeqs0vaYyERj4/XFzhQMqDcAQCgUDgbPBB/vA1XL2Fm4QLdUYk5SU06mVGtY3IG2RKWLjFkCWQvL7nYGMvkhdJAA/JxlGN4k07mRzz2RWeuEzhHmqpAlSmajhX3VY4ZuMszmyGcLgQSe9qehqKIbEWTlrVe8MuLYvdAV4dFM0IwhEIBAKBswDjD/GbX49vX2E1li1Rilcb0vqhOsFClAwjURCGEciO0Ex2dVUIxFgDYAzCSCb3Px3I2udKSpkgPY72dAOyp9fEJWkYvaU1yLQ/F7boyRuwHn12idKuTYMTKOkl6y5oEg7Vgkn7mLEBmDGscVgNIBAIBAKBU+Ab+f3P4GPfg/9OJ20AgMrVUJvBmowNvRK5y9vQU1qQWi4LmYuBnObdZdvrmuu1TaXWKZY5p9mrxoLtqduINckebSfuoxuz01sam8HO1iJLOGYCJTWDmRFjGAARE3Z2cXlK4wiFIxAIBAKnxX/Mey/gj78X/y0wjjnYMTYmnjjlQ9b48iuNquyHKbwiBEKzGRdDmQIujLRoh17XXGIfjFLHaTBzUC/u2rjoJS7G0Yqt6L+tfUxYm6GWEGYJRzO1whj0b9ITDtWdabZZl7qnDGAXl0fcms6DcAQCgUDgVHiK90bwY3gHY5zIAUDAOPhJsJpkTGkZkrGhExgpm+pd5lnnh+bNVnweiMr84DwSKFKSbOC96ZzIIbGGXL0OykCzjU3kRbtwuZ3S6qZohdQ1renyJtvoj600NczpIr2WtVllM/J6+IowjSAcgUAgEDg5PsB7RxgPMeSkBJeNkSIpalHzsWIhg2RdOMUi79M2iRbFPbOazJKvgnP6KAMEHrLEArWPK9QO91y8aZqjWznUaQwsSRhZUSnKCqUwjUmbaDpmLY9MS49QSjXVVWS1cu/7c/k0TrN9vKZZyrLcgm3Z3KBiT4y8KrlcUvc13b6+QSGCpYU0NrnCPGI1jOvJIAhHIBAIBE6IPd77EtbAgnCokjaQqYB4xVGSJ7L30iQjLV6u3b+QDAmmIM/14FxFljCHMQMpBiB6SU0DFOXh3Lg2IqQVLApVUIqKC6bAcY4auuVMzphAxO1UCTdcYSQTJ6hnoNQV8zjZmmkwmW1ldFSIMzMrCoedzyOSRuYcrMbA6XyxwphZTRCOQCAQCJwQV7F6FMvP4IBM2EKLBSwiB5tLEwXRXjy9nWddBCJ4UGEeiU8wIPzGpXdokWRIkkfSIerxq4hL9fLv18vSbptUEeeBdqmG6848KG6vxoFqNKq8wWz681aaURLX45ifw9i38eVmMoshdJYJEe1g+AD/3Y/QfxqEIxAIBAInwQf4r97C0VWsMiEAVBpnjhdIqKLsCjuBirMq5XZqK0kaB1m1I6si5qrSSETYKMEUKixBSgrIhl1aiRTa3GkJKdCzMffCg5sd9Wq5Tk10o9NFb/cT1wJnoraBnXiWIxSx1WwqofHCcHGFfYTCEQgEAoET4EP8oVvAPg5GnKNCM2QNLkxeX2askErpqA5E3iDLWGBjJeaqpIxYLYShVvgg8GhyNpIpALUhi06ugDRS3bH2te7qhm3YHPIA/JRd9Hx2o0Sfcj2gip24XtrEok84WB+IVc2WqrGBgQNcBXYQhCMQCAQCxwbjD/Hs1+Nrr2F3kYIjJbVCWWHI81bcAhiFUKT1xUmZsWxNUs1SEVVjarm+WrIxspkGqd5luTARRTQJmKEX+qqIJWPf2IPS4MyanqxmCFcjbpe0LP0It1c+1A6xOl3U9s5+hLNLkDEAYj7EMOAIQTgCgUAgcFw8iW/9Ffzi2/GDA5jzdqkqH6KHSQJJTCIrHFJJ/tWcwy3CUZI5KE1CKeuQDspf6nI7gKk/cbhrLrSjzEaphi3w2kYu5crYt1Mlh5qWB6xts5Kw0lRB5gnHxlyQ1gqn5bix2ZsbfD3+zlAZhAEjj72RBAKBQCDQwffxD7+Azz6OtxJGxkKvBDod5/W+pESvNDoZl/VGpVkutaDXFUWyhC5R7UioZYJL1PDLktqrpYrL4ZisqGNcox9S8ZNQnH0dMaks3ZjZjmZzxbr9XpylSmSpN63dgmHYfgngERh2eXgkCEcgEAgEtsUe772CG9dBS+wzAAyjohqdjeYxs3i5KgeMMRTP0ITDmKkVw0wjujpbZqMDKyomApTlPQTN9Ah9OZEVcq21SIbumo6Z9iGVVbKLLp+Ja+SRNgrLJVL0glNYqQ67uKdRP5yOAfN68TbgRoRUAoFAILAtruHGA7h4iJcAGkHAOIC4sYT5dJxCA+o9XnsoydbU0ZiUkJGtSVpwM1enhFDl7FEtuSFZI4PESiqSgaxwjJUX3wwbiSDwuKmi8u5bEI4q8AGX4toMl/TGMJMTSmXxMBCXUNRWfEKdNg2IeI2XBixC4QgEAoHAVvh+/v4ldg6wUrEGvSRGWq9TaxhciR9arkCpa6QLpEag5A1pVi7BChJe4WhFVaSLdOx8cGs1jia8DQHMrQsGZlHOrdrt2CsOlwu6Lczwjzykhh5Dhtc02unSi8qAB4AGOvJjDgQCgUCghR/m79vHcoVlnlVBinBMIkc6hrlk8jkU+WB4S9mYDWRLANioirdRFMRMUcnsZ6gkEGQpxTnWaR4vAMcISBU0hJCsClSXraojARGVo+q70X+51NLuXFYf0V0kW1FB1I1J3TRhuMhH3Eg+hXrmdpDSRXrYrOQpAHktlhySyS0T8YpWA5YRUgkEAoHAZhyBzmN1I7v8KS6QkxgG2SFFeebJH43WBTPSYh2Jc4x56Q5ZzCMvWkp5QaopLiM+31hmZywxFPGzkyudpAfZQ664XmBEmZbCeXA0NHiDZhtoJGCypJfaeqodMiVccQhXo8gD8q+6RnmWjZEZVMAFQhScEJIJlxz04izsOI0bkh58tprWplYAACAASURBVJEe2Zwyg2lY7GJchcIRCAQCgQ34z/mvEHid+MQkGJiZJjpLtDqACq+Yl/hcWOanwKggbXlDR1sAyJu3jpsoLzrVGlC8sWgbDYlhurVjPRybIkqOdjTDENtljLoJKdJKw3FbtuH6nar5IMh2Y/Byj9CLXteFf6jHwmt+YfH2UDgCgUAgMIcf4g+ssF5jkRe6GAnEaakr45utDy+7n2RyoDc6EU2CxqRnkAq1wC7zpfemT8ZIy4WR6k6aNV3UsRDrI41rzmko7avNok5Ioq5YBJWNzp6KffOiVmvqy6pxx7y8UDE/AFjq5htpdpdHbusN+JXFfxIKRyAQCAS6+BB/aIlbS6yOGhNZtZiBfDDYS1JuXtdFouAkmZSW80Etb+hOyyIZ9TIblcIxTagB0nqaWupwMMPYBqTbM8VNkWNCnTtih7uJDeRIli2rqFNu0Ld23JRVvziHq1Ltdttsf3fxcCgcgUAgEOhigYMVLhCukdl9je2B7O+q/ajPKRSKoJoX0aIkbSgZgyt5A1kmkcQOyrulFHnFBm4Y4ME6UxsXcOMBeXrkYC4NaodVE/doEJc6pOLYCs2vzyEPsI5rQN+8uZe6kZJVcwLJIQ1vA5upwjdEwPOhcAQCgUCgjR/m713hPIHHvNUISj5EW+0Yk8jhyqHIhJElODXoJqE4bQNKxtAsQc+P9auH5ZuYeAmr0/koiYyhlMyxj+4aX0CDcwBl1xJfvvWyoT6NYxpxutKpMl3t7PTWr8Tyt6hKvQHPjn9cLs4F4QgEAoFAAz/ATy0wDCDGctoKQwiHSxd13GIiHJI0qilCFSsx9rlQG5tTyxsgtGO0sRjXnfWULqmz5wTnRQ4x6sUmSl11a24ehx5AO8iyMcbRDOjUoRZsF6lp1StNVuPbapH1MkV20UtJCQQCgcCbGHu8dwtfPMRXd7AzKsfvUjfQlzrYrGmxgUyMRuQwfYlxlchpJI2pBZjuxNL5SpYpNrPPYIZzpPKBx2a5g9Y57DxeKel00GmulcOhKzbCHMdz9ltJLUUsad1CJaUsdiKHIxAIBAIea7xyAW9h3NCbwXLKb3AlRntQ5ZI5Qc7FZhTbvBCWJIKQTd1gKuWU0xQ1m6EplyJ7YnkjT9Ec2y8h7U3fiHdos3mRYxpSx8IXMwbkZUXU+iUQ374FISC5K3U/c9XVFnFbaxuzIRe1k4tvWSsftkoqW+BmKByBQCAQMPggf/A+YImbaxy1IiZG3qgNtKtmADnnQwdBlEGJqshppXZAskQrGaOcqsU2jM1g5lE4rzf0XXHpvXUJxNwKjnQrSGylWp1sA/SjnApqAqVg2jwm1ej3bg/Vh+JsumrNsBhC4QgEAoGAwT24+VXc8xAOZ30hZ/2gKBVKyRAVhIA1p/U2nG4BmKkoSQBwM1Oo5KumdSxEaJlaQJZYOLUg79+UF9sWHYLgKcJahW+87+ey65urNekx2p07FUeUAFNNzeBoso0G/2AVVcol+rHrSM10lXNf04Ma8y2ULqo+q+4syP7N8hLDPAHkJ+9bnNpcHxyFwhEIBAKBgh/h7z7EhR2MBIxmGVCjcKjC+qqgnntiZAwkBzX10lQ43M7vJm/DnYrIYYfBzl/CVNFDJWck8kwD3AymmLIqIpN4lR6/760peFQzicVqRlqQeM2cm99W/mi3kUtbqgbXlyJpNBAIBAIZe/y+NS6MWBB2MpmQKSTNwAryv2bqiuRbCCHQIRKbPEFsuELpxeoHm2mH4j3FntI6GQ224U65Ud7N86jmp/R1AdWUS96sc0QarXhvzoobtfmC8ICWwQxJ2DiWjdY+wcSUE+7ckMqeGvWtfHChZXkVAPD7wAHwceC4jykQCAQCExjnFrgFXAGY0+5oY550Kq5XJYaW39sRygvmn++SB6pCJDqfI7VD4ExEWIQNl7ch8RSUUAJlVjENa+INQw6mOK+8gRMoCqUjEEMnL6EOsgCGtbC7XDMXdUdll1c3oHrE3KAaDSWjQ0dyJGqzo2xGmaYRMwC2Q55lP5NMdScpHBPDWOXTwSpZzwFP9Ov+S+A9wB7wvcATwAL4JHA1+EcgEAhsjf+GvxtYM3YAVNGQslTGjNoxqRSKKOh2jIpQLcVhptpOjXQW1QC8wuFiNCV7tJ/UOUc+lKrBekjFVHOqTrOVu25qEqSMbS+NeEzpUc8Tad1Mx7U3idMmmJ5ALpakh9mb35sfxetPOPh9wAPAewAACwDAdeASAOAIWEDksLF+NAwe0/cbPG02DKyBA+BBYA/4y8BN4MvBPAKBQGAWe/wUcMhYUyNckpQDtZxXg3Y431zxA8czoOmCYgny4lyHOTbMUlFmib7Mx1O4KtEtyIWG0MAgM8K6Ba1yFArV6a4Ucg5BOMHDVdDDM8W+o2yyIYDSkjHcDUpOTX8wVdcer1tI5QfAS+CLwM8Be8A+cH6aGQ1cyAeDUn8686FLkI8yX1mCz2E4An4UWAPnMvO4BX45mEcgEAi0cQjsDrill9mwmN76BnWR81QIZuOMijwA35RvOMcapiW0aFr2W97gp4kP4uxsDGLSGcT1aoJCwEBll5N2+EOtB+qoAFuiADaCu2xtLyOEmjJjVjWldImQdl3R7ese0xiopQJ06Ym/tancxWW6kRFtJDa2ugmDqI/WdCEMtbn817ysdNvxX4IJGIED4EJmCa0vN4DZRepzxZlyAqZNAhfAMjOPdwIDsBe0IxAIBAAA/wN/5yF2uVAE6gkSszqHEA2yVQDbTlPnGNMcVNgq3iyfpmM1SNMdNzZAqRfVaCsfdRVNOAgsU3JdFRV9qP1sTSUa3Un9loZREjWab+AV1WiZtEBND+zllcKomo302883Pr+M2tliDzzpFiMwIk2Bmu3eRMm6Fttdyhx8mJjHYY6//M2gHYFA4M2NPX5qgRs7ODzEEp4rOKIACVg0QyroZ2m0mk3QjGEsrr32U1Iix01f1uii7d3bY6ivGsaT56cU+mJr6kGqWlvEU5xwUEsTipA5osOqi/nt5LRi0U4omfW7TRmjoJGMApYn9VqEVJ4CP5wzM44A2qrXzWxjQ2ULSv/wGljn/yoG8I+Ad0LtCAQCb2IssL/GRWA1YAQGWU2cy+wP5/ZYcw5lkkIMXE7dVbGBctg6OMILcJ4Uw3JV5w8woJb2gvPKEosZTM5pA5WzLYSgdv6i6ORL1FIsoIYNKvfu2kflkudKdBZtfZXcpeI5fYPNzeEMWsGXQmKkZDOdMaEuLczcdke7B74KfAF4T87M2ALmm7TBaOtLNjAFAo8YLgAH4BHEwI8F7QgEAm8y/Pf8HSMuDMpJVNNG0FE7yrySZozDVYc6qIIs+pLvt7ZxJbUEotCYYzLr+LrKu07n5GxXDb7dxayzr3WFjdoMdMAoNa4ph6rYFyTm9QzPchLfOqYMoHJx0KFoZ4SnwA8BF4FLOX6xHbhxNG+3xaWe8QgmDGMyoRH4iaAdgUDgzYE9fmqJqwNuEXaRF+CiFufQ8RFKlxhqTbCpQU1K6tQKndepT9kvpOEX70KpAsV4oIYqrRnNn+1WKWT+KsJQyQnSYDmTQ9Wva1uljhZph7peX7XQSQqpLElPOc5jZf0c6lYavU9rlLDRYKp7ETbHSuApcsUmwYIV70xptrcrpCLCxsPp+3RsnDiecqwuJvVvABOGI+AQ/J+BXwE+GrQjEAi80bGD60e4ch5Hk54ub+3qJZ7zBATxpbLlKdjMW4GrXa0TKi+7siqXDsEAeSMV6dRGT0TzYNmxFjYcg0qg4BJYscWGbUgJZNUy8gbTCPQdjQSoZFLtiaHqcmf9CdV+USjqTh0noNxmvl+WMJMbQFsYKUfcuEF7LwQuZKU6mKkuA2DL/26PwrGXv7t8ErZx9vGUjREWKSMMnwYeAd8D+vHgHIFA4I2LH+c/vwYvcDCmpTmB7OZ1RIPtMdQUlQmy0Ws+NQ6+OYWkUi+82Vi2VoFyndtHUgROgGna19VbBizbyovXr8fQGMnm7I2GN+oOKRGiTI+a2aONdrous/vodPSkk0eyEfqx09kTjj2VdrKuuNkmcPdk3nRT+TEpCI8YKC+LG9NYAoHAGw9P81Mv49oNjMB+M+VC53MoFmIs2c4oaZGDjaQBWpVQEQ2qtmHrMZjyE91KlZi2qMWMC58/FXVFSSllAnDL3jEAOKUH3tUdk/2wdv+ptY6XoqqzGRhq4p6kfILzGaMb2z/LkMqPgKf5ruPcI9gwoDOPpWzZnDIjYRv7EWEJBAJvRLyK6w/h8i28MJpABtwckxLPSL/qnHM4pr1ORp06YPed51l3WEc0gBJMQd5aBSiafL3eV1b+89haToSGRGi8zMC+pH2aSU0ZIazAk83cCzMpex+DICMfzCDdTnH+XKIn2oiMvRrF9u60vfltaTc/9BM7aB/xOQ343wbeDrwNWLa+R8dtbWOt7RWOk2ke039OA4ZPAyvwS6BfB87ucQUCgcDrhg/ze0dc3sd6nRZFQi1yaEmjGWcRe2m2NS2lEXTQb3fw+ofrZeipJrbltrYx/Rn9/vKbFQVDPYonNjelZsnOozEk6MFzIlj1k/EVrZfixspm5Vqrkc7g2JX4LWykQd60CMdGnIHC8RT4VeCXgb/RYa1njtvNNgAAxOA1xq8FD1j8PPDvAA+AQ+oIBAJ3O46w2MG1ERcmP1YEjfSvSeoEIPkK0yWZqJLdj9EnyAZBlANLPSgDEVE0XWCllIw6pdTWLetzqJ22dPAiHSu64YSNhhwiN5vOzdIUpaJ5NObRungKA+wSS/VQVCHZ4IoVhtic6uAOHLh7YlvouL2sQ+ShOX3qNEkYW/KzWTwFvgxcA96Dsmy94BTiy1zVLYlFr7wSM5oGrE8Jw2eBR8AXQbFcRyAQuHvxt/h9Iw5WZdFup2FslDREyWhoA6pB4xGdUNEvMYUMsBJgmnU78RpzWokcDZvKEdDAZeO3amywT6DpFMrWcZ4cWOLRaT+XNBiN8IA8hi18rVZXmsO204n1NmXFoD/Orfo/le8UtvH1jdjRycHu7xYtn6awwz/YXSUwsBjBI+gng3MEAoG7Ez/Ff2aBnSPsV9NPJpTM0E1cpO1lbWvaHq3QiS5sl2RvXV9t994cjxvSbC1C0jbc+33zproPYShsw1q2ZYLOkCpyYAgI6+ezudEZx+zoSPNxkXeLx/CDEy06uePcA38V+CLwDbb8lGEUbh7ONn772EZtsMbwBYyfB/8WFqfXhwKBQOC1xE/xe4HlaF6RUWkYPcKhLecSDlqzZPVpzTBgx2Oa1buruAkaFSdoj2dsuORNtVSiaNOmmbCiLd1sWLY+d9Zn11mh1TU2I5nL56g0ku5l7n5qioRB2dgRdkZAOWLBp1n4awTuAy7bwrNjGwDIFWzf+MnYxsYqDB6w/hqMT2PnL4DfBf7p4ByBQOAuwR6/7xC3drEasECeYDIhpVeUOSBFus+XkHeKl/ksrnY5JUMs6vyDEhZR8zVSP2IqwxvKMVcbyjs3QeqSlPBQliaTlru1CIBZ4Kt5DFKLrsJgih2wWRScp8QUaUH4Qc1pAHaF+pTzsyvRDbs6iAXD3qm+3+monb9QrfDBFYXS4/McqDSu65/4HX0PLJu+SnOnRKuFrtLQK+wN45jVfTwlH5dP7xCLATyCgnMEAoG7Aj/G33YT5x7CNbWQRtEVdKanna7ibJJBa/tTUj+eUwtlPfLCapSgAiWlWP9WJsFOa3JkxpOvA5X/6p7qzeWb/EAapfIe3zBz7/TUnwJDjjkx9JPsjpmhH5GyYeExuSnYJ8nTMvNuXxXfthp5Oik+rRaiwCD3NGq1hMtwy8eqlyWVb1FnxdVN+EHwOWDneDukbEanqYbvn7E/i/DKHNtQ5XSIYYERGP7n4ByBQODOxk/xk2ssdzHm7H7t9amVz1Ev9lUKO504p6X3Men6bxdkyXVNlUxKyKkgva4djciEo67nBiyTYNutVfdunoytwNWhX6HVi0SbbgStsanUEPckZ5FNKz/oWusNRbfUNhGpTBceO6SyBz4CDtDI+j0N5onLaWjN2bINXbyL1RrLAasfwv6P4/wpxhgIBAK3FwNGYEXAUOanlFjCrJvSyoS2reu5knHGWM5VkEW/yiNHDdIbM2Pg7iuyc53mlECMNduoirr1gsFEUhqt2anClDVvHStJF6rJwECa7qsZm/gWK+6YAZTTPPvX3IVoHkihjV4eK5DZYh5kU8jRSoiJqlDna2IH1Ii8aBybcDCwcwewjVNGWLY3c2zDEZEFjgaMN7H4PqyuYRGrdAQCgTsQH+Z/dQ0e0oYTg/NvpP46FsLeGbq1N2qnpR0k23d6Q1bIRDe0oyrxHSoNTlVIlfSVgKqEzWIeHTM1E7TfuC9nABhqFyvLVSs2QMI57BtuzZbgS5izrlNGmHyTaoFSeWvldUvVbMjDNmyHYoWa3jOUp2fuhT1FO6aD/NG0nO2pJAeHTU01Vh09Jdvg7im7qzOyhx7YCP4idq5gHDD8THCOQCBwJ+En+dvOYX+JlYRImlGSXujErr2Bjtfouv9qhogJdjQvsTp101I6A9hMPlT2ScNMlhOdyfCoTmW0fkGOIUs7DO3p5cGS4Tb9MSN3gLYg4RI2DMHybK3fU2tNc9NLpoE1K0o99FhgPbBjeMcPge8Bdo5LUmaxkbg0M2hPTEE21eUZtuHquoExcAPLS+B7QXvBOQKBwB2Dn+Ynj3D+HlyXd0U2Dnh72iGnm9QCe1pzjtoVwTh7qgsp6yutkEHvJ1e3MzTL0XWlXapR52HY5Aku0YcyCZZ0I8y9nBLbeJYtyO8lr8lE+xkyU7N9Q1zY1zLtl0YbG7goszYRyRecsrI1fgi8D9y3fYVN2IJtNKy2YRtbahu25BjyhmYbMkjGcB8Whxh3MQTnCAQCdwL+d373EZYDVgByMNzPN4HyiJp2qFM4vSFjK86hu5tQcwvrnKgqAaU1wpka9qa75o/vaDe2LRXaeRvudPPx1D5lx6y0DUs14GasNLueTM29O8s86g49SpNnfT4HGbfWpIB2SIoYbhfWOCOF40fBa2Dn7IIp27RztoTj7NhGXT5VJ4Dvw85NjEcY/qfgHIFA4HXF04ybeMsKV9ZqYahqPmqTdjRZCLZgGI1CHZRxhdq4jrCIx9JrWmSL5DO3mJrR6D130JRqagGjcVPVUEWJYf23MQcnE445qca4K7+GmHVd1LtkmSXrO2mN36LK+bAJpNUYbYNsW+ci1WyBPfC6auI02JpteNuz4BZ1iWcb+bQRTOmxjXw0fTN21jhY4/Bv4d7W6AKBQOC1wM/yQxfw8lfx9VSIBczbdot2dISN+XhK13eKt66nj27JOdyuHrXnc4WuFzlya2a0tI0tRY7GKZff/8IqtLFoG6qK+SDkTlz7Q/FQ1DTQM2N742RMebNzskqVPerkJZPVW4HQ0ooqmWoL/A3wAlidEeHYLpLSODsx29hUd07eqIhIPR7NP6ZjPsLhEsMO+Cf8WqyBQCDwWuBpfvc+rt/CxWWaLTKhdnLlPbjDMJz+IdiodmzgHDOShhQ1F4xymaQtNK5osaGXAlmdto+bj0K7ZOX71U1ZrsAYfDsVY3BKkXpi1WAqIqLb7M+VdSSj04i72ow++MHW5TPrr2dM8sZ4RlNhj8k2YN355tZOZNbNFZ2RPZpsQxXyDlZHoBH808E5AoHAawtm/Bre8gKuXMeaxScBPZ1Di/xNnWPreEqjhP1p5Ynbxi5IUXdEfVdZAghO4aAW29gUNNkgbzTGXyVwcCmEeviDtffN1hud2A8iFzKZ81xF31db3ui65Fp0KZfaCofuuVW+OUiyB56oxpnIG8dnG2g6/pnWjhlMQT3ZRP+tiAjXpy2CMh0zYzWAlhj/x4itBAKB1xDP8MPvwUt/B18nYngWLWQpCMB4rx7hMMIAkr0Tz6VEe1nWTakfVeK8EIhQmbxaQxWYAMFsSlJaR9mxrFwlADbhQ494mqhCZhqoYxv1jeiRtP1oZgZayAGxPEnWJEetzk4A2C8P6gaQCAfzdKfTaiKUb3a6e+P+1eeqmCIDRJzWKae8GQ7UU60YSc5uoTwi0W+ka3ZVysiVkqE6oo0Kxx4Yrwnb6F9trMPRs9+msDptKiie5XSIiJgZe0VieAdHh8AK498+y/k9gUAg0AUz/gUe/EM8egOHlS/xEkIVWxmk0PGPTm/zb//OJ3n/6qSF6i18biv3pujSshc2Q2rRCc8YmsqBO25O3JVx2tUvLJXRblf+Tc6jO18XADHXnaqkjWJPxQ/Zx5vIR/uOCripW0jLtkqmIB3zXjuze6k8BX47cOksCMdJ2YZXIGbsT8M2qktzC3I0JY3qYDomYFzhcMC5Aedjm7dAIPAa4P/ji9+MGz+LdzmP7nxqx9lrqUMq6rd/VA5hzvFww6aOqjh7834/01M992TDj6yJdNRjm78vK07kAz1nNY2H6+o678GQEnjOIXWFAjSekkgm9mZs5KtMTKlzOMSmUVg0lrwrcD8FRJrpPcNmry18P/gl4Bs20YVN4zDf06bBbPWtCMeJ2EYp28Q2arOibTT5hz5mgHBhwPocFj8WnCMQCNxmfJwf/ByWjEs9McO979akpJk0WmEj7dBv+d5GvGxrHa1Gi70RNHWOnj2X12yRPSZLPbC69gwjMZIJpzklqrvpUk1BDOEg1wXnsfYIolE+2NWtumMazWzi5r34QmI+5hfAo9JF+grHHvg6cAlYzze5ob9T2XDr+pbyxsaSTjClKXs0CEetbWh7d8DARVw4wnqBxU8E5wgEArcNP8fvXGMcsdSOu6dzzCSTjmqVMHHPVW+bOUf1U9zwsk3pZdIBZn4u1SV5g2f0HanM5mhlpfRuoUeGJm0DOa0h30hrCdFq0U9RONB8GnKO1pMh1h9E3rvNqxqei+RIWe/WSr9OtpnoCzeyL2b2aGs2TADNbd52CRhnLs81fZZmG6tswS3OtutmAGWuTQJu4NYFXLiJ1QfAHwnOEQgEbg8YvMAAjOIa9SarDMh+WmxXlBI/NjmwAWOVEqiYQCnUJRsNSj955dBG/2SUgwaqS2UruM2ciFgxgMk9a0nFySvsjkmZySTYJEUwOD00c9eZlMjNcvXEMIBGK4dMbVIa3qRqjGrA5aMrgy4lrHSOcs32ahrRllrtke+Kgn4yWyHPbe5/pv81eDimvHEsLz5vzM3DEyoZPYPqMVpNpWempBEpdqkb7UICX8fFBVZrLINzBAKBM8fP8VsZA2NQG5m3NfmOzoESBUinmCaVbHo57goDPGugYjemXIsA8x3rcsdgnLFmJG3VoT28RjkpiqPGa9aM74wi7dxGUiv3NNLQelh56TMfN4HPR3FzbhnQKR0MpvxwjH/1T7RafVVPVqpG10HvQ2/XfAr8NuD8FmtvnJVK0TeoAxwbmtqOcGzJNoBqmsyWhMOGZhK7ZPANXLyAo/PYibXPA4HAGeLD/N7zuLqD/RHDdvTCX9K1nM849apfXZuaczTfu+ephmBmTTCZRjtxBbYOu9Ve+9hu3OoX3jCMjZtjIVnq21lmwlS2rp2ohvffnbhJNZhUhYt99ylOKkrO2zDDm4pyVKXdgvkWtX08MbgdUnkQ+BzwdVrkqrq6HVRjxmbL7raWNzZb1uU1h2jZzI2NgXtw7RwuH+DaB/Hcz+CJvnkgEAgcAzu4vo8rCxxNPzZ5sQTOb5YpB3DS6kVUz5ckTADk5Tqgfuisn6kkD1vC9kK/1jQAtr6w0gT6t9xiPVwVm63nScxo4hwyJHkmsH5Pj3x6epxLKDv/dMrg/J5etyP+mEXeSI+9LNu1ZiUDyESUMkouZ1S/DaP1gM1zrx9OGZK/oKhHfkGvP8FjgIA24Tin2MaW3nQjzpxtbPeo2yUdSydvdFM0NrKQlgoyHTOAfVxb4/qzuNT9+AOBQOA4eJq/9gCrXbxAJdlzchHimAy30HQEAFmZlvIaU0b0bxyTK+klUiibSpIAKM3FhZM3tlQ16nKtxygdwKwVlnQO9SpvuVG7w0xouHh8LqcEYsl9yV5a0Q6fM5PzNUg+CUZeaottv8WXSDtTd6blQnCMk2MCjaW6J3WapeUtV47n7bepsFi1kkZ/ELybmzgTnEycOJblNnLFlmymSUoU862P5yqqqyz/2QNMuPyruPTv4ei94L3gHIFA4HQYsTqH5RGc84OVMQC1XiRadAT5tbv5q1QFLNo/q7mp7lpSjYbT8qPsPa1vto2aIEyqiaUvfstTIlYTZY2ewa6xyb5IQbmwTAORwiFPHSG4B9T1TNNnND12ntYVdZKRyvAVcphNtnvVHjr95xVC+m+/+Qsx92luJikMLBod/HXwCjg/V3NbnEbVkOunUTI6p83vgCGFVcTEix9Vuacj1pKVDeePlx/HlX0cncdOcI5AIHBi/H1++wIjsM4kQ+R6oLw0i+xPyvUWYZ9BImygLUdQbs3543JMxnERN1poKBw5jcP4NSeekC3copyy3MLKfafZoSWwMvVep2TaVhXbAFSqBJXTdGmcqENxD+VTyOelWb1mBucRKf1EZhTJvSTykR8akw2G5OyQHBQrsR41bN2X2UM2fQ3AYCI1/zYlw3InvUY9AX9VP0latkIqBJxXH8nJcBZUo21zarbRPZ3XNtiWbadt1GxDX6MXcPUxXLmGW75eIBAIbI0B6zUWC6yQRYvaRmkSXOkccqkEA7TmgWJAaiNUJwzoFtIpNdxIc2ysnVYvntEsrzsQMqH0DEnWGG3FPOCUz0Ewd8eqTbn3kuAixEDPNB4woORelHK1Y1y5IZV/ysIVAEMbUzdq8kjaH6c0KG6K8rAk0ZTz7Wfyx2AYIpOrl3tX3ckNYmSi5iwThjyB+qPVX631WH1YP+K/McfGNjRiSzMtITRrnZSOcH21k4qBml6ox6ov9SaqGLZhDyazcRc7Rxg/jCvVYAOBQGAD/g9+ZIWFeArY7XkOwAAAIABJREFUF+vqvbZc6k1XUdX9PmdVxR6ocdQx2Ka8WbpNE9O9KHZFqCpOpyM39zTRWaKmvJo8QgCY7SwVOVB+lXWVwhmyelQUB+2sU1MqO0SZaV6kSkpHrOpWN6kyU6UXMyoZRWsJdlfX+1xhbYRhOYxe4Whz461xVsJG0+w0A1Mt1EoDNw2Oo23UbIN71XOPxewI4xcwPIlbv4PzpyN7gUDgzYVf4j+1j5tLrEYMY+Yck5OxgoEs/yVvouX1Ws3bnyyafkBHHbjDOYqi0L/kDNrlNFfSbbQuzPeepQM7MG25SAuCQbtBO4wccYC81otxuqQeXC1dpBKS1rLfKEto6OiG0Qso25XlxmUj2eppsfCq9t6nU4u9pA2W7B9rDxq3cMLlPuUBpNpMq3ONkEovtWQeZy1snMSsRQW6JfO99K7WMkZT27D2WuRwdIQBrLF6FItfxKVvxsHvzo4qEAgENA6xfx73XMer8HzC6PmadsilipGAiu+ce/XpixbNH06JPsyVs1FgWM8OVRXEgtrlrRGSIlit2StyzKwmypLhVTJUymtwySUWzpH3N6mryG3KXJM8KBXHSYoES7/CQgxzSB9rZkRZgIFdWjR9mOURM0Mt/OVUEf8m7dB86jNURltxHvDIh3zdfGx/Hbw4JuE4c8vKjJvlJ+ATmniyKfSShj7ukYn+ql+aiLA19pekHKADLL8EehT893BvNfZAIBDw+Mf8xAo4wpFao3Fme1ho96kv2eNG0KEDcgetH/lt4h7TuMsbsaSJNHWUWvzodaPJBaXJHw1jdUqiXJC9Xq2yVT3JzFLYha7Ydajoh4q/iLiSKYlflyz7kk5T9adsBKl0NO2PU85ZN+5bZvju6hwM17UaqW+ZwbeuLIzC0VzLvPd9ec1IyUZuUZdszTbYGsywDXfMdblNC+W63CkiloWMOzh8FLuEw7+MF/4+HqvuIBAIBAyOsNrBcqWkhaxMGCUDhUb4F+X86g8xs3M6xLgJeRGvnF6p19M8FFdg83NKyiMOYPRlie0Lpy6GTiRIMxiC7F8iGkMWNjBNdy2SRhEwWE+XJZGacp6H9sGZS2lfrryFcvUq66I8YG7U0iiqRv4uKLMBY2ubFd9CD5tpqJ6vW9gdAxiIz+FF08J/BdZrpJ0JTipspOIzZRumwYphwJKMnp5hTt2Bi5u0LFNhNjCpHgwcYTUAIxCcIxAIzODv8aPnwcCKMEAr8A0lA07AgAnSN7SQHupZJ/0E0pnWsi+qfuD16uNQDrMZYZnpxr6tK5GB0KQvbkGwTDi0iZEN7PrlxmZUapNjYjw9QC6ERjIwMgmgwlA46SVwn45nd449CGOpB19u1j2AWsxQXemJu82FVYoo5b5F5nQk3jks1/bAK2DcVkzbjG2oxrxNayrphhY2GTSEh2yzFduwNIVtSVO6MJemg2r2irYcD8E7OL/ElZ85s48iEAi8obDHeByXL+Cee6otveVXfmbPlHlGsv3vTn6ZrmuchG2Yq8avZlWganwLwcNuUpoIB3Xsc0pECnZ4h1276opVKM5hXL7iMbKzSTqYjPNCq5MzKHWJ835vfsi2/WzsGUkSt9ja2MFXdFPu19ypYj+m0ybbgPtiMEBqHY4VsASOfFsnwempRtPgmNzCl/QnvsKyjZla5aJWTfQfrWRUxk0e4+QQ2gUWuLKP/afAHw3OEQgEKlzBfc/jq+/BDmFwWoWX0VvhlWoRDkIJr9SebQNa25d4CFcgjE2G0mnWHOTdVO0ECF/LHbP3geQyUjUncOxN+mH1Hi+REX8gUZUhteMiIASoRUKLNxjLXipc/LbxSe4WLVcrnl7t0mI+65yVwmkcooKkwajvTGonn5hbkGReKSIzSrIcw9ZdAmu78NfBFtvDzuNMqEbT5pRso1nOrUJ9WBk4blEOCyvNhZ2MUS1mtEc3Amu8eAuPLIJzBAKBCsz4BaxexjsWuKYWoYL6CUreUc9PcZRCpWvAMZImNv0MsX379+1Qes8ebWHdiZkg4zhH9ot69mpPq9BVXKGLCxRBgPS5MaCsOei6rCIJhY6k5Im8xGd5vrppdVAelr0ZNaEFXD5a4+7tG7ErlO9AaVDfYuvDrufiik9zzMOjLELK5ba02XKNFefdYj8IPgB2q1aOhY1M4sR0ZJ5tbKzSUymkrMk8aoZhj9ld3Z5t5JbdWh2sjS/iSzfw6C6utW4uEAi8efFHuOe7cf3nsZO27cjgDmmQxcglUZTM1SJy5IIEZybFlRdPjWTlQLMKWd08hRPswCQOMbn7UZJbpU1JYpVbILCsKSIzVx29mG5ZlgdVHYGZicoubrkXccWTvWQzys3KMFSIofC7wg0YYJa5noUy6UXjJ5rIhm1MK5FLkkhWcXgapCz5Ja6c8nMmZmKMVOtWLA9n6jU/1EyfBvncWu/ZlFmE42fyoKAOBtmyLpmMpAxowOHRuFzku/ur4JvAI9txAofbxzMcFehZbiyZTdfwvdTLjCrjjVNeGaaLGbahr2qzcjBgXGFnwMFH8NbqFgOBwJsU/w9feh7nR6wmR2l/7goZ4Hw6k8yhrkqcQr9At9rtohPiYNdsu65zYygyRnm1l1dz5GPFdhpihrXUTZMzH+xdqwVDkzZj+Qxg8ipMU2YlLiZVInNupRBQ01+ng/xxkk7jANtcVHtP7MvrD3d6wyXW9Kn1VTFdWJbpeUdlz/ZUt0AgWhwdHp5LF/4L8Al2a7udVGO6VFP1zdU7akSbYWzcpK3mIvUebNqk4hNQ64oW+/58llJCYMYI8IDx7+Dt1Y0GAoE3Hf4R3z+msL/3sJuYR720uTarN1rrYsbMxzjYS+sz7dEs4UDDo5ZtXgmqOKdL9MdMstYGqXbE0C/fielF35dke1Wu59MWJpHM5KCYMTQRYfmQpG4+bi2aLqN1t2jpTmlIFtKwDMkwGNWsb63oMUzmlnOqq6muWyDC9f3LFy6uU0hlV81P2fI7N08mTkk1mlcr3WJDrWPxoebxTGuKnYgkxXLF8hUvXdSNNPkHAwwsMa7BH8BnP4J3brqhQCDwBgeDB5H/0590mn+602n5uc+n2SublMBMO1rTIjehNiurc1o/1m+Q9I+r9mPKf3qRQ47FZ0liCoy20RhnzrQg1RQrK64O5ISVk9Q//p6qEdIq6Zz41nTMskioj1XIR8VdVzQFeowHMdut5SFVbi8zGKC9EgnZOuXLQ9AxGk9SDMxq6HWDDMb9j5+/dW1FAD4EvoC0+c9Z4ZTiB1dWJ9Y2uHoA81NUMKt/WIrQ0yemQj9LVjUixqWwamS6yiPGJdYr0Aj6udA5AoE3MX6Br4wmRaL1qjp7dT68MgNyf+cxNw9FdIXZfo5DOMQmp27o5to6xxRVqQI9+dU8rUjlh2CX3zBVpqcpk10Tp8mTXbOSoQ/SHWiDvDg6hDW5wEpJ5jDDk3Zcuax7ngeooyqlzbqi/2Ko9cvy18aJHGUgWt6Q42FYLhdX7l8C2AVuAZdwZjil+HFcblGXtISEns3MkhuOl3izulnXJtuvfl/tYP2virlMuVG0wjD9yjyFz38UX1MNJxAIvCkwZnmj+hlJb/ZyDPNrJlfLq3m9qUorzaImBu3fb2pcJPOnaqHDOYrAUCkunnbUHi8nipqggl2svURqFDup17NyK1IlSUKeoewQAnmwSbfIg2ERe9RzLUoGc84bIfMp2n1T7ByWyaAkc5RB63dqaviWSXPxKaAkL+RK1NGPtnydysLzMtelznjIluo7mQ4HYj48+h766BLAAFyuZIDjYsu6ryXbaDyQzcMgJUWYR+I0jNaaXY0eKpJhysVO6IVuUyd/EHiNxRGuvQ8f+zje3x1+IBB4g+If870MrM2vjUkChPVQremyRX7PbkZmr4hu0nl17YKqJby0uzJFvuaGlttahb5lqoypqji413xlVo2E5Q2e1am1zYPhKetlVGzDLcOUJshkqsBkfvTZt8y5oWTGogZpCmLmg0DXrcZY/IzqqNA59paNUwJ42ldWWJXptt7PTUk0SDk8GNaMBQFYTv+/M6lGs3BLtuEMOzY9puILq4hJAxUjca25SE2dPdpjG6neLtYv4UuXcV9/CIFA4I2JPcZXcHg/dp3fUG+T05901b0IZfJRHIl6maX+j2IPJHJ/3YtSdllTgh696NOOExMOY980Q1kBbP5dm6sBSsk0+VVVn7zrNC7J5JSFpeG4xSjzXIrK1GIhpudp1i4LmUHND6C/EynKw/kSVe1qXlK+VKQu2dW9itmkd1TPzlCQ6Xu22Bn4aAWgsT399ritVKNZPlNiPxeuDVpm9XF7TY6M6QPgulN7MDf3xE1acZ0qtlEKpJEn8M593PwP8Zl/iHf5oQUCgTcunsDus9h/L5ZKPyiRArVG1AS94qR+z02xFeVFyUV+Wyg9kicZtTOWF1xYy4Z1p5yrGxGzec6BfrpobSn/ujZTOzLZRBEHTZ5Y/Z1ml+gSxxumVTfsWFjoSaFGOlVEN6P8euIaI9tFOtP9GRqhUlA15yg3wfpG1HBVFfttc2bClpr71ue/I4MOby5wAcDyB8AjsMDxcGIOsb3ZsdiGLey2uoltbCh0Lfents610Moh1dXnJ9COOzhH4OAcgcCbB7/ED1zF/rfgHOfFrBSHgAusZC9QDJyryG6G6uUgLezOsSk44BSL3o9tEe6bF3oV5DaaRGGecAg7IEBnZXQoC+tubBTJjFGlaAjJq5xM47deKx+pCxbqUNkTZGZL3ZR7HgCwwDhWT1erXq4plhJNU1EzFZh97PxT7JjZyS/qGwgAA+H8rQdXy5sAlueAA+ACjoF5MnF6qrGlfYcltF0+7Ievygt33I5tdKMqzfHo62yODVmpuIvrpZgtwGsQYfyP8Ef/AF/XGUsgEHjjYMT6Cs6POKgceVbN1anmAXpZC7Fpag8KSl1o/NptqCWKy6bQRrfX6rQ3XQWKcCRdQTs9NaCKl5QpIjy9nXckFnNgCRaJBqA4jM3hgKMdecf5DqUoFEFzRmEkLCmoqcjPcdVeLZ8yk4gwU6uS1Mny6NRNcZFq5j4sx1Gmpz2S/g6Yq/v3XD9/8xIA+mvgC8DBXNPbYiOH2IZkcOvsBGyjyR5QdCV9SVMQxz4dD4BiJ2xLvI2ebGKJhWMVycw2WLcAVYsJ44hxxPqj+Mbq2QQCgTcOfp7vW2AExgFjliVqlOhJ9pANM9m0jG0tbTH9PtaVW7vI9mSMlkJQpQ+QpjYqxsGpL80SxAXqdc1F5zFcR/gEm+o0+XMpIbCeZwIzSWdaLJxEGWL3rq9W4qI8VZWYmCmPRkSQyRJ5udIpypHskdf14lzFsCOe9omdljxPNmzaTxvJCm9glieUPkZOiRZpwJR7R/lAy7NnJaUwEaWgjw4mpTHnkvKhTfdlvyM5pEOgkf/S4/8MwHIB3Dx+SEVwfA5xbDPun56AbeiSim1sGEBFRISPNjlHU71wnWq24VquyYem0zRifQX37YH35ploIBC4mzFgvcZiiXXR8wHjAQFxG1oMUO/JpdCaMdLPinIUnV9DywBMpxW0c04lnYU5NUuAMnAv2Sb9YQBrkjP47jiX28GrF/e8MGYeFbulMhkpmZTEY4KYprU+eXpoRFl1oDy7pAzY+gxFI9KsV3m/JRZKwUYMyn4g1002blXQiWWocU6nyOQqkaq0jYv9ZFX2hjwNw7ny4M3ugPnhlFFyLskKjzwDJmAAYWQeUuFyBIb+F2cGG2nEmXCRM2cbG7t2n3hf5BA+UbegyYGv7gbM3sYc1Hc3FayBBXbeire8hJc79xEIBO56/BJfWoMXOLK/WFowKPK5uip/5DfE6QulKaLmz1jtERouorV0hzZurl5aExd3SpWZOFG57O9CBmN7rKnPJBcUocBLQ9mYdanJriCVbCFRFeKsSMgbP+lJK9PvfF5QncHM1XIaM7miLa9GKq3EtUAi8bD6F5nTyLY5Ux25L031WNpTfydu5r+K+tEIeSmkZFgOWK+nk+U+cM925EDj9GzjBHSkySQqR960n5t7MtOsp5tzjWiSIWRF987WDMJ02duYg2a2B4FH4A/whxdw4Sk8E4GVQOCNB2b8Dg5fwG7FCNgRCC3+5x+etrbR6qTpQgxaPr4BtUHo/OySBlOpejXsoV7qo9JayuxNfc1RFkVKykHNflhXdDSGZfh2BqzeNUZIRmEbKApCok1pWqwmGZQ0Dygz44eKCKGuCgNRz8E4ocIx0h0V8UYeUvnIWNibsikfoPmqVFOcCJh24y1mw+rwsQtX0/EXz1rb4NeQbbiz47IN7lSxnxQ0y6yYBJtP3DfAdTv51ExCafXlqAnq0xG4gesj6C/i9xEIBN5Y+CR2n8QhYTVWP6staUF8qnjW+hfO/c83Reml3//P1aLO/8QmO3KpboakS6b/Dbm87pfAxGPVV2lqUiymBArKzjOfio1mGwxwXl28XJIq+n8DxtwFIDb531ySu5uyOlmNSlqW7qZ2AGIejKU+GHXJ4Gys/YBRDVL9L40EeWC5RAbJeWC6FoPAA0/JJrZcSspz089KfaCqFsDf/fhv37u4kb5ge+D9s/hvAyeiEZsMuCpxtOBUbEP/ZW/flBxYLnFamK+dAer4BIxQ0bRpGPcSOFQiKjN4BA0YCQidIxB4w+BjjHuw8yLOD1hVF/07efW7OvMW6S/Je3Y6U5bbvIt2bIoAU0dVWpGOREHMep00c2Nec2nFU+RIMx6jakjqRmkuL16WPXU6AJDdN7T7zo2lnWBLJIJ1q+aApf8UmSHk2StJVyhd5Cp24OyOS8uKU5mtW8od87SQh31IyqCUmqc7V2K+AlKSe6EHd1/99of+cDpbolJJToYzYRvWtvFNrulIXb6RbXBVZp8jV8aebaA6VvbltJpJy6rcMRJvvIltQJKgFlgDtMT6g/jEz+BbEAgE7n4cYfcmDgcsqm3oy48GgOknS7th+yZW/4q6ulrWdxX8D3aff9S+qpu9UVXTLh9ZORBzavfL7AqtCzVtZh/IaqJKiX2QbA4ylXNWUZwPKFNITLk87sIO7CVj3LpKYDBNO6TU85Cn3/o8oUaFMDKzyeuOM0ADM+djpFxRQtmlNlcvd6y/J/mhmSEUs3yPtiIZ+mDX8Eizc758cFkYztI9ihPgrKgGu7+w/x20SMBs43N5G1LGvkgXtiehu5muKCVQHKJeWkO+txsZST3D1pwiaRtpOCPA4PtxRHhwLyatBAJ3P55mHIFXuERY1ezB/hde53MUl9SKvOja8rbj/Lp353W3bgwtU0Kbdvj2yRZubrl6F0dbNdFtWlZRzFrlOcWSi8jCsmp7ljFkCinlH2aaZsr6PdLK5A/KU0rI+BYmgBdYc5pYM31umVDIU1ANpszPrIgweMoSVXoNo6SslgfpactEDLpPz2kRlfDhbqTSLghYjzSo7Y2XN046J3ZLmrId1WhYZZrmJYeMRrn+DOfJZYdtGGNHAvRBvqpJgG7ZkSFjlo8bnbOvoiGfJXOxKbf5Ena/Ge/4dXwVwkQDgcDdiSV2b+Dwkv9t9swjn2jOIWaSCup+DRqNNFQB076r2MD8L06dNNrqtOywLoKN/y1j05ppqpAmzSGKPQFpMqsbEmOa1FEs069v2rVkGhqQX9hVimh+iRSGobeYUV4/3Rwrg+mOOY+r9K41CbPZityjts+KTKrG0/63fvasdmZZ7UANvdaIZSGelOQ+rbRGmkemT2NYH/GyFC/tuIrpDM6CarSmYXUrkvXWG8tRTS9q2jQuVR+Qc/91HCT9dSyhHy7hVqGrUhOacpBbKASIMU5fpN/G7/0qvundeC4ySAOBuxfM+E3wK7hMOHQivZio4+mX3fkG+N8wZZxLNfPwThrewZQ3Hu1jaiixpZYxPO0w0gKbS9MAnKO1HSnClP2Jme8pOaTq7tSEWF1ehqqmeDAgi1+lKuZ33/ybvXhpvjzgvIS80kLAKijEJOQhqxeQ3eTToFhmuk7Le5WZrly6o0xuqHASLp3klu3jL4+MhADpNI80eLmbwnnUN4FLS0aU4cWFkY8U4dgB1nCwH1o1tI1ombWZwaZaUt7TM7yGA/NcuFXePWZblh+hmyFSkwwTAenxCcux6smuUqVmKsJyRmVvLBkgjAvwU/jtZ/B4KggEAnchPonlt+PolzHYX/HGf9HaQH6krV1X3iBTaH7gK+bRbKvBUWwtx4Q6qgOgUiKVGWt/1hhVi6bkdrLTojKAdhgle2iWx1ve8uWXNVODcUqYqNQOWTVcOQcZMlfHiW2Q+/QYMiE2cyxhHjBJGIo6mPBNuS0rYAhtU0qMekxpSGYyrruFgtrhdgySgsPjIQ27xWA5dj29aWU7qqF96py/n++sU3gCneMYx002YC/q0zozI5XDHlRmDM9dxLJmKpptGA6kLI3ZIegP8MS/gi9+EoFA4K7EDeAXcX7hfxTrH/oGA5BLM7Xq8lbNRhpHryR7RIcxGxQFZaI2JpxRmlJ0h6Uw+139FmXcO2WJQnchb/zIM3AYIMpkgUA5VzT/pqYEy2lUmZZkdz8pKAOPjIGSOMG5gRxB4azpyH3wFP6mAVPSXeYTOVmjsJ3cWXkaiU0xgwae6IKUM2e2MUxDz7wHuX3J5cwZpMRcIlbiSzANj0cuS4USp0VaSZjg9GcoL8ZySjn+JN/G3DYTgIGJR3zXY79b7uuvKQe2Bfy3qh0LMgYbMEs1qLJxNAytZ6gv+fKevSIEqaA5PaQ6LccoT8OVm1TQpnEleEhF15fvGhjZxFkwYnwZlx7Aq7+Ib2082UAgcAfjn/A5htt6fOP73qzQsP0lbl9wtKbZYqtQlAl2RfJSTrW1LU/vyeLPqgehdAs3ksIn8l4jbKswXF3pmk0zhHLT02xVPWeVGXlNitLhZMpVV0rKITByU+VUOjTGZVLuZEnlIamZsWZtUMPoqIRvzERc88zybJdSqB9D9fj9OumutTTCkUDjd72zEI5lLZHMgrsn86bbGcySjwmZdvlLPUGFOpSo1kVcyEOXGzZgCcQ823CN6x4129Cdck0v1Jofuotir5kNAQ/g1QX4P8Bv/Dz+TOveA4HAnYg9xitYP4CFTYDgrBN4qNcn792zk9a/fq4F94PpJROqbGaJiC+vcjiU/2qxihkKIiJHW2KZ3Cn58uLJWSswMi1WM5PWjbN9AFzuwhSW7FG95DmSS1JJo/ljyoWywDrn/03VOG+yhpyoUUInvrUkwICJW5+VSkAptbJ2or5UMmelJIGKndxL+ZLp2bluN0BRsxgMDIv1OBryvBxnObCDdHkCMjF/tWXvGa2z6V3a5ji3z1Iu36N+RKNJI+RUk5KafOjGNcMonTsOAdtvn22UO5O6C9ACa8b+U3j6o/gef9+BQOCOxFsxfAqrb21vb+V+wIyTrV+rWlNUZsiHpxctzaBuvH01l5N4suLbVfqn6cK+O6rCRFMaN5+bJH2gBAobo0l2Zae3JCC0aIdwi8I5WHO5krTB2v3rG6GSFJrvIK+ZkWgKZ+MUxuDMjJD3hEP5Tc9NsaIChbuQ6tzMyM1TZymFcVSyCZMQikpA08+b8uODJijlQ5CIUuNTYh4xDKMuWhLmKMd2zOBUV3tV5OlXZl60EGqofPk25Y3eHYHoUZxWjMOTjB5ZkW+cXK0iL1z34jiKWOZMUs9FDrG4B19e4V4EAoG7AR9jfBn4Giz1z0X+ga9/og2faL/6A+qng+xV78F1d3UjzV7qU/ZV1OyP0gxahdWUFnaW1f2yu5S6nWiHjnBINb2slnLhcpqcfRmL+sUvFQsdYdY95NQJ5UbKXJL0ZLhcnzriKQk0ZYrAfqzZoAxAJ40iJ4FS9ohKtEj7yjKVJyef8KSqF+olc15J+i0PSXhQ6xLJAym7tgmBmTYF/M63PwOFM1j4a2MLfUoxX95kG4WitS5tLocvh/XiU3khCoofAFW5/hflWLfJnTZTYYttCBHRkRQ9EmlKp/wapkLAPr6GcOu78Ru/EIGVQOCOxxrDgxgP89ob1gGL03Bga+grqlPuXE9XCVCbuG3IGLVXC1Pxeoacmt90xWwsq9Dlrdt3fSb7xmDUdvMkt6P7cv0Kh9CPOP3KauZmjxXdEG+rl7LQbGMYy2phiafwkCe45r5gnn9yW4r9ZNbCQgUAtU2aWswLpW72/iPn2bLTAMYpT7SILtZ7imKR932VSwTRUYQGlRU4qNyM0bMSlqdkGyejGjOX2B/2EqaOq2eUB6HL6+CFfpC94SmeYS4q0gBHUPIBlI2J2ji2AVMorZnEkfpYtzaCCedGrP8CPvZLeH/vjgKBwOuOjzHWwFGWNwC0mEF5ha1/J9F0zKohvWpldVF5sE51e8o9g4Yxy8itjWcVqbRa/gvIbkCNUIbNzrjwBjUPpagLZlS2F/3upp+lsJMO58i/1JRTSScdohxQCqBotiHLaSCLFkhuWjgHl/VN7QhzVkfxKlpZmWrotTrycBl5VbHUiMySZRSKVr4vAMPs+5rnxZiHp8Yvz4UIGGnA6L+QSzYTsjegfLVPQTV6V7ehPtV3gF05hBhuXV6101Q1Srkbp7NRxeXrkA9YXWI/unKkuYhrrVS3KSZ6wNMgOcsn6wUWT+E3P4pvRyAQuCOxxrDAOM2XVP/Vt9UIVD/adQ7HhKZMUrUmBuZSJY30tBPXfjoTx69voxyoX1xzlY2ZKmRgSkMwL9xuLVI3V8QmNLikCqN2yGmZupqayR2UH3LPuKZpqyMAJtsjaETZlU3RDvn5Z+aBjU/XzjutzJGb1BNfk3KTOYS6g7xGiPoesZo8nKfYcP6M/AYrSlQhGy8h+0RI6IV6OmovlRW52VYAlsOspz8BMzhDqtFy7a6cnJX68tQKhC+vcixgr/aG56hAaUpaY1Po0jxdd3XFOVXDkgnNOTTFKb0Ay/NYrHA9EkgDgTsT/zeDwUdYTqfKgbYzMPJ/2vaV3aJJVWiuTWk+Hg5pAAAgAElEQVR2S5EjVem8ryZHBXH8UrfVvdU8uFWYMBTvmvyr5hxNquEUoaxVoEk78m82xLHK+pvq0nSgy1mW1sjqAsBpwglYaAeQ6UWiYlzoiBqBmmyUbouzCEXZgEViUTb5hsoxq8XBqNgVvUvPN5FbSo0UqlF4n5BdVvRClnhNDYxgGlYYl7Dw5+7hb4+NVbanGu67Md/+lnkb3C7v8RUd5nCnNRXQukJppFVoGnFEBJ5GFANYGiE2lvc02MZ0cB3rS/jqs3iX/CcUCAT+f/beLVa37DoT+sba++xzTpWrynW1XTGO3RfSVOiA4ly6IUEOhAa6ubQE5iEPkH5Jq2kBL9A8IZXEA1K/IIQI6oAEoiUQZfVDuiNDEoOtjoJEt43IreRUEtuxnTium+2qOrd99r8GD2vOMb4xxlz//+9zTpUvtYZO7VprrjHHHHOuteb4/jHGnOs7hwTTDvOJ/XANl4D2Iq/hg6FbojZRj3WdZViUscUeXEI2PueNjoR0s5bEhiUtBFnMHLqtbf+FxbfI8XhGHtxukMkCHFIEbGHqBKAQcikUpl0Lmizs3SXQ0MYyQ9NNJhjgfdPFudAwR9illKu0cExIHSUbJ9QElyP3cfBgUOQlPHXahzksslXgBKLQj/3Ab0RROJ1xv/T2QA0rSPB0eLzPn8FVCn9wMNDxUJ/qSzAeRyErXhPltoghoA2MahlzjaFE3DNGG8vfb+Hpz+GHP4wvfWkwShtttNG3jT6lmKGC05g9VmFEgBc0NWlkG9D6jwy+4vbmCA9H0HMg3y0f8ZEDQyJzhhqjTA4GMfGSr/2QnKm4uCiyGrlfpu1w6jfkVBNIk9VZUAjN0d2N0Sv1jTf6jh3J0ndAggVOeXP9KyvakyrIjeGDYacOMhzrWImm+ytNrdAX0xo9jCIMZTpyCbDDjNekossmo4XGHo5KQeTR/LVwTcKRhevPw9ifsV5F4AktDAVWHRJRGVmWkMSASNW2qpRCIdYEN8TwAginOmROtYoQBfRj+MxNXP/RLbCy0UbfMfSC4g7kKhRQ3p/AovalhpmXZLKHPoxMkjnLrBUn6GhUJboZBhIElukYHRv91zfrJmiTGZdodoSYYVNJTRHu6Xile0p08SZ0h8eiky5d8LwDs7MLv++dRYYqNFptifrCVVHzWyyXlPI6fY8vhadxtNgGPBoydf7my4D4iMxIe5n3BbHNAKq7eBosscpNJqCqUwuwLCCrR1vCbmAN3EzAguC07QrPP+ylBY0g8RgCmUUnvZjunqFQSeqgIeV/aZz3kI7Y+FZein9YMnwGhhVpV5hUJUOBGCtxhnSVzHzWQWNIJarUDH+U49kYGncoH4ZajkMboNPZ/gF6hvPvx5ev4ebzeB4bbbTRdwBdBW5ANW8tCmn/VNw1nyjMzR0ZGH/+Z+VSyrtRR2Lu/K4MKRaICsMu3CZ2hDa0og0AoirqSjbJyg6PRbdZMHeGrq1CbGFqP+6bey//dAnETKoyt905p8VmzlSlLS3xnccG5rAfNM6l+oyJ5EyKxTkhimnpl+qkrucEnWZMMybFNGPqKi3wArrsSa4yQ2YsdUWB2dRbOr7or1MfumXErEVRXaqL6qTLxzAaupJ56S/SvZ581zKVGdOs04zFksjcSjADi2KzSjteVNWTWa+/8eg0D3DvqT2890l7JKxdWnuNiNbgwvB4zcmxuov5yE77Adn7Nf2D1YdLturLW2V7c3n2RhSiNRLIaMOebkMbabPzFKApLTa21/HoT+LFr+CDKx3aaKON3jn6tOI2cBVA232RZ5oUUlEujzNStuWJDpZTmGOt0SRHViVrkjyAFKjOD1NAE6f5RYYukzYfSsBqPTez65OxUfypSC1Sp9pca3qpBxZ8VPoxA8LYfdpmg7NHQ4RlQRVNU126E3wSnXXZ7byPRvdwwBUKa3TD3aPu9Cyh3jsrD94s2gnMu+Uhnp5UYsoJ9VoXMHN+7dbZ7esoJP8J7iWLw5+C4zj3l+wtH/u01o915RKXD7wFyXhXfBC9DgmsrLocou0HovAUBxlyjhoagAnSIbfIJROm9+CN1/HUZ7adOTba6NtKn1YA2OFkGJAFcDyK0FK0VnPtkk/mGTQcq8EQrxg+Ilhj/KU8Ag4PkZR2MxDJbBF2ZJyxmtXhGaOG4pQYGdpph0BKS3E9qGEaLa6cdCB9bSow722iowTqOtwlwXoiwifGbxqHvIkVEiA8fDyWZfh5XPel5CrwE//U51HoqByOS0KE1UuXkjPq6uHjkT+jlccXCoYyUYBCrGvl3KKZ8ySEJYfkjwhurCFubj+wGBZWHWY6BqGNRjvsXsdTr+Dx0Ry10UYbvUP0aW1voO77uISZ1WG5X6omeUj70cMxkGVcmKZMFtjm8YHNzOUVbcQW3UHCdlXT1TZh91NZgxrJUySmlfaJcWhjmjUQRxt2VQNbcyBo1yGmd/RawVfhc7KaJ0Ldl2CKmYSup1kB20Csb/AlzB78FT2txTvAm4V2Zdkd0ps0NcLDqa0/y8IdOdmdYEQPbFns/uqXhxr7CtfRhsEUHbEJHAQYwwCdFNjBmENjXfMiAH6gvf4AIlDrLiexiavqShX4UnWYiW05yNEchU648Tv42Efwu18cjfNGG230DtAOOAEucLJ/ujWzs2LredJf2xIDWN/dMQVrMDxZL6z7QAfskpM57EBzSehh+kkeaxXbydWVLgXUEB0wwcOhpbAeWBOUhRd4Zle8y7HNThX2zRQ0MNEgiDJW66EVLELMzIf0Hlnm8paN2pnBsKP1nU2gDZESg4+W4xbWPzxagbXJ9j2+eHMOAGc3H3r0qVcwIg+p3CfIWJNwfOHokowKx89DKV9FEgr0JSrBEhMaWAupABTmSIVcl5IqKuAYh1SGzoyoz1I+l9APCG2ARK1GcwB9HU88ilf/If7q+q3YaKON3hZ6QfEIMAHTetr+HvRQ58/LejVW+M3UBa6x52M4U/txWFQSsUVBIQ0uKBdSdS3+koEpLailSQ6KhVpkxY3TTQXpyIXaSzg7VrsfRdnsdl9AS5kVquLhFZnjONEYaEJlSmINQXFAicdPDVQQAIsMWBJP86MQXUXY4yTKx1brLzz30je+8fgTT3wDhe7xWypcSy6JKo5GG2i4b4XhEArJekX0gG6AQ6Voxfka2/ggUHNdrKONVahEJKWKkqohBhTRBkZog/UP+jyKV08h/xo++b/jL6/qstFGG70NdB14E3gC06WgQyeta2Irrbs09ktmzoHgQSRi4BoZog11u541GSSEDspp9twfKGEnR18QW5l54w1zJMVOtzlbMHvPWrnCTbF2Of6378xpfgMFYKmjSquF8t2EtkoSBCqjmSZHiBOmvPpm6vCgU7px3WlWh8fdaRIK3EtCCrts41s2en/88QHawPH7cERtD5TfA9RYl6Px6vh9WTHkEi00EsLQWBJjFppABr8epSE27XO07igyVx0bXZ+ZMjzSUOQqCZcUpBLKmeEEehVnX8XT6G/ERhtt9A7Q84obwFNlxrvMS2hVyTAcknNQ/ggKlKuDiVhTSTlQJCjAKKRAE+EqSwnzREAg5Ti5OmT2MMBYINo83RfB0oIUVDCh5Kvo7TocQfnbkYF6u8uvUnHDorYNRncyUa/UUY7ZQun2QMIAUMfNdjqgUR9sGjdVFcI21BO/4b23tE6lyzBmHy+R3/nysz/4oT/GiPYBjv344LJVLnVJV081Xhp4F1dkVvAxrLX/UnAwGH9/iirC4HI2+QHraJCfnzVjRovC8IZj45ANw5H6b2GboTdw87fwIx/Ci19e6/NGG230oOmDwOeBnwC6Wb0fuL+85jL0RjAq2N+GrByHUx1cHQt3zogb/KBjlAHa0NRQRRttDwl0Y8jwIsIRPpakp670WulATdkc0YCala5Qo1veLkfrsc3HzVprE+hARx2nGbKhhhQQ9e+m6eJvsaRRTS6Kvm1os1qOb4QO4vB09JPKrMAwRpPYjm+85xw3H15LGnqQSaNH2/5LMK89P/Bx5lMpnIYzki0X5DAES05mnnk4pGLMB/I2CtpIYpUe2GEIhtM+vGWFWjLKWnMEUJihDc5P4u99C0/9KbzwmW370Y02ekfoYeAvAinPDsB9OBoPzKayLnxPk9H+DTjXS0a5orp+iWutZV2Ug17JC3n2T/gjuT2sFa0akg8jwgigf7u1XpJayFebXIHSNqNQ4YOOA/xArRr4lDuisYPhSTI0o0BsgvBN67h9AS8+ixoHNRf2Njh7FE/feOiVG69jhU7VMeIl6Ej+46HGwcLjgIjGU18iS5Z7rcGx/0PJNcIPVDTz1aJn0BChQD3FaLcur1ihiUVeCBjNI/lD3VoVAZ7Ay4qLj+F//Az+WhmTjTba6EHSrzZrMfxK9z0ijzXuWM7CwwrIoRr8uzb5IXRUjTwEZMmWvzQHCzM3Q9iZ1zbsKjs/9O04zcwLRAMiEaoVlU+wI6fsatuhHG1ijbCj+RgYFkhfn2KSuy9kGWaCIOZLUAWWr9IDslipZs89yUM1xjlaTZemAwgohqIcRKhvX74IBmTStm6mOT/aRu+qkPRcdp+GCN0/hUIwzW2oJrg/RUVefPHF5557NKvW6TTekX10PCg5HlIcYs4AovKvnZIZbgUlDBEYihznKagFERA0rJBERZwxl4bYU6JxRavrP/Jb5NYRqmc0s5bDYWw76Anu7Naz5TfaaKMHQi8ozoEz4NBsWq/K6sl+1sGlaFD8Uv8dPg6CDOTnhuLGUp1Hx7X6WpXkclg9LgDC0IYAaLto05IMNhsMMkhIwDFlyCl+0bvlQCQUytgdwqcdPSy+JtVl9/ap77fREjznxeMRpCXYkdbucqfMSjXr3yCFcTavBmeTIEsLmRpwZ4RyzKULUekZKma4VOaPfxy/8ztv5NHsdMDMKP27Z8616rHcLSJZx4y2+Fd+ubqGNgbtJwYzwDGQATpmHpdgVbhk9DdcZcVKo/yopn8+AqN0DR+lVDE2mhpSxXwXVxTyz+F/xkYbbfS20TXgBnBw1h2RmiHfjyf2eDsOXfImrHwPfwp8sH/CpC2fX5csU6EahByNNqQb4FBuEATl4zNpPYsWm03/pM649m/5bItiWQHb/7XjzuBy+KqQ5OXbJaBCUfowirZvsmD5xMkcVGrfPdHAQEqG5mSGzLIMlzWBdjuWj61AtK/TJXsiyvzcnVYrF7a2WsnJBX73pff94A+uPDo1h+MgsKi0VmW9fHBlCFPWrmosS74lu5qgQC/RxBnjDqhxh6JAu3RM3sYa/ohoo2ICb5T+JoRxQAHXfsCGpM8M7LD7KP7O5/DXy63YaKON7pc+rbgDXF9c0JepyNGNXDBmO6p8eGmvS0NRqkgpWyBFDl6QqyNBChDsGBwXZp6YyQmRwi7mNoiXjD8K73aUf6+D3QNrM7LMEgt5qExPL1x8A10N7aOlzQHReNTHjzNMU8lSf+59RXqqwubuS0CGuu/fqG99j/fV+UFuseb9Sp4ml6wC4PY3Xn9C5OtYoYkg1LFoY38VBTQbbLd25ef4qhBmGF6iq0k+uw3c+kYJA2dGaSJndZi11nhz1/QvHo7AUtBGAAdaGOIzvwdtmA5LicNgejWsZO49kgucP4JrH8cLoyHZaKON7osUuArIaO+NNVpxS6zPu3Sp+iGS2COBiGi3xhGOiLsKjKE7AbIc9jl0G49us03GCG1w/wwiUCbHkoYZfnl3tZtGZrA986Nb2YQ2WiuLM2PmbqH7D7oXYXEeBAeDT83WnDl+2M/Rx03RPQQ2SXc/Qf8sS3FjBCdHO+2jPlOL0dURL2lXTyOniiblPT7F3YFLYN9Ye1TefPOfnOd9S1+P3Yfj4Eui6f8AGnLbb9T3Fe6HGmt1yQEQNKGDACDsgCyxMVX/R63O/KzYoIusxjAUsre6QYqZeDLOsEJDGxVnRIwyL7G+M1x9GtdfwvsAPRQm3mijjS5Bn+55XkdMpUe+eyZH2MYvl4qEo0TmX7n241n3sK1gGpssC8KAIQZvZww1csCFftzL7HKWcrXTXHHFA6AsQVz4si2FCs+bo7/CIKaVgE/jceRpbQkcJCnQHA+2CXozOTx0S9ZnWOoye9JFGoA+jN3XswyH9uld+6DosqJW864eqCXhdi8lkzZNdyfy8EMv37j5DNbpdI9tOfxmjHHGschgf6FSB/cDEVaj3zu/w3xJciHofeIXi1to77P6geOPzhqQR7foLijlVZTquStK6CcFYggAhQWxkXNhnmNJjafkVNav4o3fwMc/jH/8pTLCG2200T3TDEzABUcWgDr13hPMz/BixSnCl/a1Wz+0xgwZBIzk2OboMcwRearwlYasB4422l8y8DmkMpTZd/lMwiPaANqGCdL3IPchMX7wdO4ahoOVcokM0U54Uif3NJYsrQtjEWsh3JRim239DhxsxLUw3RSyrbR2SHgrnNhIi4jI6ZUbP/VTn8E6nU49qBTaPY4q2liTQD0dSghluu9UUhXNPO7DYPWIjS2uH0QfBih+UQ+MwSNEGgtHGRUcE2FglKAAYqwklCS3RG85SwAQtyvlfuUqsfr0Mfz81/BnsdFGGz0g+j8VAHYDKGCG+d4dikf5G1bazU2PvrWGCgKiIx0jaxSYGW0ko7tyPHZymA3W4Nvgqa1asoKQCHZ0MMF+Divf5+Fg/tZu/OQKD4PXZaSy5G6qrWS1OdrdG9zHyGM6K/fa2JPJRLgMdmZ0G6i8pJYcGx1PJATid6itqBUI9OTkrUcfvcBemjgOdTwpGUsuXOEcXO3lbBS15kaUWsGCRitrxwwRMlzot4mRgcsZZk7EpAre66KpVPhBMpUHZ90z4YrFKpqgg5Z/cQRmYB4qGSXM1J1Zey1gvoWzJ/DFH8d/P7qZG2200eXoecX4u5kAwFHwS03Ax5Ike7PatAIH0AZR0Fbc8LqQtxFtZP+E83iSRG/O0x261j0IIubA8ByOnp+BeVmhmvIhfBmIiUol+/4B8NUcJkowpwSOPouPhNcWm5J9bQtmkTnpTDentSUyS08NoYSM0GjfhM1zQVRmbQtnwiW1of6hH/r69eu3R8+a05SjPysURy88cDyk64UDM5kqVQlVIJ0mMME2m6+6SU5ugyjKlUyiQAdkp6v3AtxcUjYiktoQErjhKszJnV2eoM4wD3VLeIKYleMppMZyYVLohjk22uj+6UPA5+FZV+iWfgQF6jx6OTrG24EVFHIQbZjhYs503KyUFRa0ARDC6N11rBALA1Zg34ZicQ1UP4fVokk9ZVp4Ca07NeThTo62AiX9mw2XhKWwzDDEKEueqUkwkCYzm/+c+8loIAALzglVhjID9NOWrdasUisBSg4pZNZpxhTrLuM4BF7zXf3Cix943/tujJ+5TqfdhjW7a8/KwQd/yDAq1JXyY+WsARGlMx0c7L/aHtVy4NVoZNDtd1Ak5UywK6KGVIYAYgVbZAdMVzhtRbpc853LdaAVt4WyvdhQ21mBCdO2Snajje6TXlDMwE9cDkfoOlQItB9eHBdbOZa57t81pkNoI+d19lpY93w4nqjAggHKqDlvyNweUWANqZgLhFtRYl4ObENSN5tkNvLBkgDoEsRasfk9hEWUCjWWkFglHlXEdaygm8bqeDsSBhJQDd+q7wt1PbwihjmaFssYqapAplPcef3q2idUjE41Pt/HvBhHQI19IGNPuWSoMdZtP5gAIQPCE95ICnPYAZvtKD95ZbKPBAFtJGnaxSV0kox9LUn4w/wTiPjAVUXY7Lz2a6BbabQh7QvsgBNgV2/TRhttdCQ9BNw0I3cUiljI3uBcR1bwyD2Aj72c6Tv1A+ZBIcUyrMQYxvjDePZezWijgAxzdcBSNGQF5QQc4Itma+potxNLubAmrbNKRivaLaivL2g5DlXIUigIOR/S7TnN1LGDS+eCJl6zFzS4REaxqRHJVkMgVk3lDi+0ARExuNJ9d++5o+dHrHk9TTZ+jY5DD6s4Y726Sn4+ExoIMklOjndEzj1XZ2uabX+4d+4tMJW0aMI2m9eDoFp3di1Q0wxH0uboAQqUoE/FHFXmXPTh3JG5NBFjelDB3R3wQ/hvfhP/Yb5tG2200SH6tOIceBqYyVge57wwanXWwhzDkmg/Kr8UNgDuMOdLA1dBYqCmijUb/5BlmcegDYu2rIGMGlgBRPqnOYNThCUvbobRMTW6QIEOCBrPcqph25Fi9T2G0gotC1WAFnlpp0qjNRMEYWzR/2odCu0YpSsipAndggC30mh3JLEo0nRTr9lEExBR69Ei984kVy8OQ4nTGSdCEcZjwMcK5xht7EUqZinHVXRcbg1VMMFgJQgvV62mmXk2z8alce0oo4qgD4scxVAYygTsQsbeOjUXtBGOI+ZYhJiEBEQaT8QTNhpjtLH8naE7QIHn8N++iL+JjTba6DK0A866kzCY3qMxh/kbcsEqHTN/p9+5OYp+sI1hWCRDkOrtiOYtsa1xjtGGrqONgHu6UedvrDSxtMBk5oBIRB7JFPFfqtXVi4GVgE7MfULYxbEIwMtT1T+oQsq0i8nVkfpOnoeueLyr6dZnmfbZ17AuxcRIfFZ8McvJbp5l+shPfRGH6PR4hEEt5YJ7wBmVucRTVivSaA/xxOpBPGbnQUIbjZPN88iHYa4Lb75Ak/CvCkluj6iq/Z9DJ/60UtaFX00ATgEEQOMNxS5UDfUEegenJ1tgZaONLkn/t+K24lxwMvrpD+wz7OtXKvI4sAnHEbEV5fI1V0plCFfLxB3Qhsa5/TJoo+IJLHABHW0EOMLOBtZhObSVFx7aCKkYHGGB5XaYTHJUcNoH9doPdHTgIRXKG02okncct55pGEyY/U9whMJ29UEx4uEJN26JIkkfGeMX4u5uEmunx67OJj3KTJweibaPxBkrzFY4hhpHHCuihP1gYnR1kNixrmSzxyMzjHRa4Ei198MBYTjCDDVowkLcGZNUWlGvejuOPV3+XsXdHeSH8F//Jv7jQSc22mijQqp4EYBgnuuPRWPqBysOh/0tHMN7BNrYW6iZ4bDzY/+lIcI4clVLhBFm8odgLodR1H736wBtKJovZIA8RHocwYU7Vig4I19190ZAG4uhViAgJAtpEDPEStkSWActTCNcNw5LQrzuAtGAHVpYRv0i8VuJJj/Hot4sdye9giNomoLwAWUTGpo/qrwjMI0la5zhJlIAwq8MgUUpTKkPiIVqwrUY2hW0ESRUnOGPa1e49nrlrzdEJUharWiSQEnetKPgCdfcd1smZfhudB4o7v55/Jfldm200UYDegl4DriJo+CDL028RLBloX3ujYNoozY35MnHFYWUiWNNbMIK7XgkhxdeigVWaOWqKFXpa1CZGXYQxPpKV1r1ug9tQPvXVUzaYDuNfhw/3wq1RbCxUPtuH2pra0kxpb00ZteT16wS8/KvO29mSQwYfEW2bcjRVgXX79zO4+baF2jpG7aNYTdD5x/4qZfK4zOg5eNt+XPJrHAsRjddA1rDEKn4UN1gLHsRQwc2515SrnpJ18HNOT3wQc8SCsnaMkQo0GGcb6F5OevQ9wDN5XPUxNlIvg0v364gLXVEoQg5InPZq8P2DbMe3QXunmH+GJ4f3bqNNtoo0E3glxA331gnDf+7BB2PNmrFPdjiUm6McVap5ktgcEBsYwiSZucyMgltRO4sxIELzZGet5GyMglt8IQaEAYG+3M0W67i22zMIEgh9Ddu5mFt2bHvydGhxk5kFu5vRR5RIMEgQhjWROacW9dc1FwkE8BC3JxDZXrk9oHtN4xObwHXVgAE02KBZB1qDPmP4YyF9e1j6LB2UAsZK7Bh9gNSskYuArCwWntiMbE7mniqB6Xbe2OYCwoBsTXmgxGQYfYoS+jHc1dx+L6CRQEKnDyCO3+EfxrQS/8M22ijdxN9WvGK4vrl/RXtbXsbXq/DGMLMMykzdG8chDUSL42bHsIOO45/kZwWrHDIFeVYyaA7JMp291pJ4EgLWNBNxVI4c15IRwmIGs6wkhA3ceZlqYbYwDZ93SRYAoc3ZMyae01ft58zexiHFC/pWi/z+vBmaRLAQRaFiPy5V7/46kPvHVUd0Ol7gVtJ+LjJ8eVSokO2Q4V7zF5WoVa5B7RBtrbmTKT0CMRTNttrf7HG01ViHTShDeTWwcyks1IJXx30papNQzGEJnNnmwEI9Bu4+nv4t5/Br72MjTbaaJVm4IpgN55KBzTMQjiIEe7HvZFLjkYbmfQInlHrA/iSMkkT2mDhhZPRhnv7U6MDtBHmYxkfx6/b9+NofHhiXv5y0oaniRCbtEUuPmK8SRclcISGfIzJK6O6+AFIVU/zjGoukoWbjTc97PtlcuJ3V7iOADLjq4+8/4Nv/gmOI/lZ6Hua76bqt0oPAmccbPEY30aCEWykE7BARAygwoVzjoghGWDYafSLJLvu+1vs/TsXtIEqYaXiHE8rSkgBkYQ25opvSpdnEghCHnoTf/pxfGvbfnSjjYb06SUkyZsLXTJIsb90TdTx2Rvj05RYeKR7oyCVnFrReTzBk4z9ICmkgomck0EIwBRoxyW3o6o0i8mBy6ElspxLgez/UKsIdC9Iyg+NaKN909XMNW8zSoUg00Vowy0isVGfXKAp4F/fS1+B7Tp3tMIUY18BWxDUiLUc/KjM08mf++k/wHF0+mHgtUMhlZWrup9hpXBQPOK8d7QRRa6hjSSEgQWKJUZEG/4Ypn98LQIFa9TNfxfoLe5Zoapjfqww5FaoCncK5WrePd1OBVDo4/jWq3gWo8d2o402moFpLfB8WVpM4NoiF6J7dm8cjnesuC6GaGPNTrhXo6CBJM3RxhC4aOQMcMSdAe66sKY7DugC2clB0ZCQ2BEcEmKF6Kiic3rHE9owd0LXMIADK/QeRVzio2qxFR+hsAc52a3W9z4YGUqYnhJGyEMk/aq5SNRPg1JtMYviztlDJwg9hkAAACAASURBVLu7OJpOv4Wdtn2sB6TDw/WirsagYMhcSsJIF2AxLPTogJUkUdW3wWa7tBsa2hNkiWbeT8nec0MzlyyFQ+EYtFv5x5iD+aMfZWGbY63ZW/OrtrNI0k0VuIWX/xA/9wz+4RZY2WijRL9s7o0HJ1PN/K8IvWcscglnieby4dy9x0ey2koJoGDNTVLjJvxLny2uyWeLrg5NAtoox2nRCqWICjcU0APiKYOGUqhNk2ayC8IQtxxCuCBs+NFBaA+kcD7s8qvXN+RoEsjjIdCFgUyp9L921B486dZR6Cr6D1CR0/PbF2fXcDTJ38QOmKRs7qTx/wO4MebPvMOKh6AGlzieqFCDK0bYsXqQkES02XbgngyLJiQbbBKMgUtKsGPwl1HLcK/PxEBic1Sl+Cd4cezyv2Fd03mOOqSeNm0XgDJhuolnHsdnP4dfGN3bjTZ6N9ILiocVp4KTOJMdAz4u4ZaQ9Uv3c0r44KiUjsKTLT0jCfipcQ5QBbFlAGFBk4o2FLYgFrGWG+k5mPaAPJaK3bcRtg7j07L3+RhnpOhJ9WowJyMSWBW4hHSsfZw6hiAGb1G5rmGMuq95d20MbHHwepBesUEV6CwK+YG/8oUiY5VOZ/9CfW53qM2Aif+fy/cXDpoY4YZj0MYe2FHDKEO0kfyghjb4KVgLsrjM6JMInFw9+UjW0IYhiT0gZnSJ9UkKhBuR4iwoCicNAZ0xP47PnuPhfDM32uhdTNeBG4In57w5hj7Y6COJu1T0ZP/VfcxHoI0wiatfCjACpTy1rmsG0NGGN50wwV79R8eENoYSItrw6rxcFgj+jFVEUi/ZWpLuzwhooyCJdsx5GRGdLHBoGXk2gQgdrKETxHvh6EQCZ9vxPFQRUbmYTyGX24f6dAdMJaAyCjEktVYZjoAaOirMYmschKEDK3kc2uDmAn/BEC6/eBpMcqhS8US00/68WXUJboNVtGExjrUm+gF3kNsNB+WLbsPsUSUe15k5b+B9Jzh/Dv/5i/gvsNFG73r6tOKO4iEZGK9j0MblQImO5d4P/qhsB/mHwZr9wCUdxyUY7hohBikldpy9GqEWlQivB9G+opXNtnZz7m2FdFHSrVtu3pW8gAkqsSbqipWOPEwN9Ka7to7TKgRJ/D2/RK2bQgOFWBvUaEwXYdaw1EVBIMRulJ7gYqdHfCKW6FSBc+A6PfNraGM/zli7pqOL+6GG6VDjIMYeUUJWe0/1UegEZGj9Ej07riTXSp+DZzwRj/Nf9BtW/SWFc08aqakN0paVGWIO13yINtZOY5hGFWd3gQ/j+S9tu4Ft9K6necbVqW1kfg906UqH0kTu06dyMJgSCsu8n9wY4WCFeWlrMZAC5RBGiMXURAp0c+s84aDZ+0UmtQIDH3MQHtpSEr6Ue2JpCZSsndasDiU1eEwYrqpt0TFGG0rH1YfRg/zBg1OdGaNCA1VBu7ZKtsMQASYoMP+Zf+MS8RQsgOOUFBhBgeEVdH3qI2SFgys6ONbCsAYXArbQUMISUvXaC06hYJMMZAgyBA1BK6rlzxGZ9qRwO01xCm6Reu216PUZwIKiIe+iwS4NV2ZYHSNp6epyvIPexZUTXGCjjd7d9GnFPGN3AUw2PV9Ogl66RqYHFkBZ5zze+TE2CWvVw7QXgxFwcBBLbDaSQTnipWWLLYn2HukjscwP6Sgkp24oWkqwesni7VggTVA4Z3VQK3PZXAR95y50JfMBEjqRgjaW4yyEVmjTbUnffSWZg0LX0Ey+Ck7lYi57lB+kaQJOcKGECBEtZ3oiglEdPVpsy4e1qEtVchUZDDw3bZzJbdBLrJYjAO3qVTtdftArSStdXPdb8AhQWyjG25lBPLNjhTXDD4xUjcxI7fLm5bYOZR21DHuK2Oh8htuC3Q/gb5VHYKON3kU0z5gmhLm3Tot76T7Rxn1KO4Z/YIiWcs08yYM/hCnSK8YoRkp6EKhYVIU23l62Dx9ckkVIv+QfIsGyNbj4ZuG06bjM0k8Fja21IrM3F2rN7arrMEv/jgl9CcW/YyK2fbio1bJdzL0jYQfx4AuJ1lIjCIMzdCGhMN4LBiidOf4T7fdIXUMJDHoxn0xH7t4fbz3+Bs6nLieqH2j0EmkXMjTMa7UYENhRKqm4wS8WtHHggKsrme0YZag2Hh25Do16S7BIlpgMfLLlzNZWhYzcJzP9rW1p70JekDJkq1VKf+eiORA08ava31GrKMAMVcjv42+P7vNGG32P06cUotC1YMrRS2T3sA0uSbbfe/iPOiWDVHfNYrZhhCUzjPYJZYQRF6FILDEPRJITgiaUvTHYCsy3zWiQAlCBLJOZOS1Gu3GEXNESTKENMtO26HbQbWFdpUKn5hexkVMaRTv2G+HHTTiXa6oY61K2iRchssdLGrjG5bMCk/6pv/qlgYy9dApghuwwnzpED5oMEQOZ8DHLOvg4CmrA4UIKYexn3o82MEIboFOkQqrCV5XUkKqSBngRyg18dJ4gM7pb0sgpCdeif+OJA8JqhA/Dll4gyaGVwEvRIL20/5smnD+H/+BF/Dw22ujdRJ9UzIpJIFN4FZn0QTsw9tM71tYAbezJ3ojgA8imvR8QCFgEZHjhOCNwjrbrgMI/pdYNf9x+g0EDwpYbMVFUSBQ5DzgJtGsyW7Qi9S6CjyVxpCAMH1FGD959SuwoDOFuqEVAVII0xx8lqkKJIN2saSpfGhLgBL47+2XoFIBiAk4Vvl/YyrsDrL5WxHFExf1QA330CmjQWlf31coSIryowQ7XZAQycsUKFBgQILY1Ok0H/A+2rTgNHcdBQq2IloZaWdOswzBks+ZfSe4ZezUvTnH+DVwHnseWQLrRu4lkh4sTnM3rE+by4j3QrcCGjazJPz63o3Jm3HBoL6+1UZDEY0a6V2lmkeP6ZtpTCfg0+j8WDdVKwL6EYKFt6hoeG3pIDMu26HHNi/P3LmRRjTk6PJjNBslte9j4gsySSHaKHMrqUIcoxJSNqMEPNcDoMgNnO1aIqp7eK+Do4Uch25ap/OauDOMyHbNpLBmcrqMNZta1g2SnSYiZ56BJAh9FGsgqm1jmHPNrOA0BjqHPIIqtHoW5dKECnVQ9UNqjrICJAdqgAW89SnVv48rX8Mh7ceub2Gijdwv9skJ3mM6BaclKWGfdgwgO0SUSLEZNpdMHgnuSR/5IOBIyLcCzFKdixMWu1oIxWENmv4OodkArY930Bn9GjKT4WllFXMzSazW0wdNh2ckjzL6+yFajnulDKtHyBWeGjxv3IqINNWW4ogsVEfhmHyR26OSQeKJUxjd3UlWRj/xbX8Tl6bSLu8AIbSQDH8vrmUOjFVEw3CBFOJ8WAJHCHKniWi2rmH0A8EIzosDoqhbOoclnPLECCIaGXK1HtbmRdwFFLOLV5IMJJXEwsyaERdKNGytvpwJ8BN+4helD+Btfxn+HjTb6XqfnFa/NePKkLRd0G7lmdfdffXAke0/vV3SZ1lflp2SObsvN9GafhIcnXELOVYT0+cZmO+ME4w/tOMBCIdLTRSECVUrOoMRMBVB3FMXAU2Km2NlSeEWg6setR52z7/oF2j48JGo00BO2P6fZv4dLAv7Agiwc0Fh3RcRuVX8ONTyQFCcSbYDNPwTX5djJyen5nfG3UA7SBOAXIIDOhG+03bX0CNB9CQU0UJnBmJJptxJvjk/hPOgGElTdjbQhib1oI5UDgT+ox1eT+a+Wm/4Z+l0DDWHceBBYeYRerCKP2ATzu4gRXrHjmhCathfzVS0xQXXGKOAimM9w+xR3nsPHsdFG3+v0AeClCXIBOc6ka/hfprcJh+wHH0dGW/aw+aXhXqJsuW0RipXAJiS61BjCIhQ/XTJAe2FckyJtrensl8SEeyZHX1qyrDRZatmxLstVBHNfCDMLLV3xf6JWMuVyW/NCy1uwrGFZ5s5luUpb5AK7aktj2uqYuYOtVt4W3fgqmK6/rZrBTJmtil69NzR3UW0BjmvrnhtFlwMhnZfqrUTwymuPPfTBm3sfn1Wa+lOyWB0z5/5msFHlhyLBixWckfABX0Fqrpwakmi1qDqLDYGDFbQx9Fv4aZSZ0UCdJ3qAw/8hMGli5lGMmnCXUwnLSmoMB3uVIjrhQTP9eS3unMAHDUVoLHlHJuAa3nwdT22ZHBt9b9PziknxUdAnsuzavhfx0vT2O0Qu0dAxyCP8ZgVhCyu34JPaqV0C0C30WrMOMrpN7StLBR3WmOG0YA3LmSMO0HTsVtklzwxZegIpF/YFsW7s7WpfDduRRIcd6rBpgRcGQQxVMCrqQAGESwgWaAAxfW2tuFdmFuMkbOGaDBfH9ktxYHfy0Z/7nDx8jzswWUhFrmB3EffxGL07R71ZI5MZDnXvKQhtWMEa2uBmNVaPaIPjCHYQbHCCHWzXo/uE1c7xkZVIh7+AaPY+KQZdrR76cpC/10oYQmMVUOFc9OfeYdhB0spmDnkLT/4J3vdevLElc2z0PUwfAr4s+P61j0gsb8b+2Moehsg75DomLeNIB8alah1FNAuHuAnAmQ0AOFvCYhy0eTli3mgCLjAEEEpAEmYKhbh3xIL5pgznq8bMDIW4vYdLc7Mj/ctwFH8Z6E+JF/6Tk3AajYmPXkkO1TEz5YoWq7wEUzg6IlFGn7w781IWnzzedXSS6bX/64PP/otfzS0dRw44FNeAc9chk66U0+VyXcuhjk9ziYYSH2ANB4pBuymAoqkJMtvco9wWq8F/qaKycH7sEWopMhQIvLEwEwvh94z7UlELguvFNSepyfGT9OeKg0+9RAa/NEE/gq/ewtmH8bNfwv807NFGG31X0wuKWfETglnDxowZHOTzwwyVxmhjvdZR4Y8j6L5gh4dXinPC5CfDjGjFE4wgjwgvaiWUYCCDEExOueBcjZ7SwDDCmrPTGUDzJSy1PGmjq5r0CXmsqGijl9toqED7wBCwiGMisSJdXQa7jQClgIRxF+iiimTYwbLV2fvgwNRkra6cnZ28+bDI/QEO4HSHuzp+CVRLUdBhn7H0/48M/5Ch2uNwgHW0UZir94JNNciIIh0U+wo6YJSQjXHJlshBGVLey5PlJh3C51pIgeVPXuqSOsKDWZScU5gpqQ1XY4g5eHEsr76Ra7j5Fh7eVslu9D1JV3e4cwK94ERRzscjalfXZQ2n27efjm/zEmGUhbrhD3MPm2Slq2ahNVeUKCr5OcLqWUTh1iK7NJY9xCgphPwo+ZttnAoqhDZCXxYhiL0gfWI+KRhz0GKZjhV8k3VpOZvah5bF5oOuPInq1YI3SIHlk/DSH8hkjRjCqj+0oYrVefrpZ+48+hXcKzXA8fOQn8Pt8vxfGmpo0A1s3ddO1xg0MBjLGG2k2Eov2XeQsiLWYxPWELsK2DcQTk1aLEn2HsX850DJuj46ajENIzQL544jSR41sVyt+5AGBhTNAZ1x8iqefgzf+BY22uh7il5QyA6P3U2TtE/OA6c2zaplgh0WNbofKHJv+aHH8JBPZ51XgRCVaFVEg5uBvBHguMayRiLGU+CGthvd4t7of2lxCuMDb1f9kyjjXUfteO4LYouopuQeqGGSYXq2ZBEfqhh/AXpz6OtQIo+vsEWQL24MGI5Q0U506qWa4UTj56iK2jCTNIFixsc+c/VLH8a9kidtKHACV0pHaIMeAE3dsnOlgsik6WqUwvyOKtD7DionHaDEoK52rjvEBxZ3KKEHjRJM86wzx2WiHOtR+uujF4crVInLUNMAe3dGnpU59ogvaZTjmCPd6F7O6254WIYIKXhBPoQvnuH2B/HvYaONvofo2g63TzDVb1b5lDQy33Gaq1cHhcfRg/WPXEIas461pwxKkA22JETYdCLRz+GxBjKu0c8x+EfLVdRQAi1O6QftqjIi6YpRnqmvQAk8vBgEHm1pS1oon9SY1ZelYAZ2YbXLcpXW0XgTUMFu+Qfs0BM/e1app5faUpSeNGqLXzzZU6CQXV+D0xeqoDN3IZzNClmq7Cz5VKAyn+5e/tQz+PCXLvtoGfnH7L+I6cO4EMccmXR4ODjXtUIdHFd+jTwJMWgRkhiMZxwrKeY/4YkACxJMAaGKaL+HTgjqSeid6qoJD2gpMljXGI642lXyKM5SXRdWHXFw5tI0j0kQXla1qGK6ilvAxQfx8a/iE9hoo+9++j9uYLfD4zv6RZlMtLovuk6S/eqAHnhcZb2plXJp7/8DdKt0XzcvFSEupVOlOktcVv104OeAb4cVP8uyHHR7H5pjVIEeVaE4hU+iXWxchdvNMDlOXBMqsaY55hITSgSiy/4tPhTkHRm4MUBpFX4amotDP06MmChEkuyu5yMtQZ3Wp8YgbaynK/N0fXfkUvAhOVR/HfgfcH2gqN/ucOfruTkYAhMVmgHTIADDq2x619EGnbsOWX9TI9rpKt+azjaeO0g6ZzXY7g59DCnUUky49TH7TqguAwBXJkqoTQQ5xqbuEWGEMZO2vBvHAlPCFh2KHXIfZ2A3QYG7t/DeLZNjo+8BUsX7T3Fy4aZthc8mDhmYbx3NUBiUrNEDhyaycnygvaHCbgjdzPuGm2Rx7Wqu2+wxePRoLhssJwlGyLfHsC00wBtj0E98BAfADP7139fBZhdIxg2+GQb7P5oEX9fq/2BLVZtzgj0T2hvlRbBK63uXvuyCcHNySOhRd1eQDmICldfo8p4iXck2o0fnh2LeyQc//tWz9/onUO6B3MPx/+LKX8E5f/WQQQPXWXnYanF6j/JpaqIcH0QbgWGPh4OMuvGzELbT48AHG9QiAVWxaNp5iPyfqXTIJxEQRoVNGpvYA3eKzDw+pWLeH6zcJr4FQTEFBFdew/c9itfewEYbfXfTH+zwz5zhZW2/0NrvU10xyV6+4u3YV8Wr3TO9Lamo1AmphfF3tiR+zgYFOG2TPnpSYEc3e4OYCzeVvCC8oJRTNwarW8lf0k/9eEb/3ixr2LELqEVyRYScUNiuHsh7m/oAFpePz80yKAfpyVfZraF9GNJIaV5pa8zJ/9QE9GdyKT07uXjtk+978i9/HfdBp3Qsz+I2gDl21Gj00gzcCTIozHaXEkvdcEaZbPWDBA1slSFHJcgWhqaKr0KjTFag4hWWkG2zhnZBxhsrEkBsVpd7nBQI/QI0fe8+vHz9QKN6ddwQ0UZiIM1bdxLIqIrNkA/ipVu4/gH8zNfwv2Cjjb476ZOK13f4QssVXSbiniK6PPsp2R6+dQFd1shRmqHC4fV3hnJ+aD3IlmAlbYXr+Tw0TiO1hbJhKSlJc8PnM1zcxorSVDXDFCF9chppSx/lVFBte3kRW8crUW3u7GgRbHeuwJvLgMPHU9wwWjxI++OlduqQwQatdS4YSfGbRcmni2ChdoR6Yc02VoFq29RcZ1zszqevnd1PPAURcOA6ptvNlROHYkABVbAtL4PpHdLCH1/BbGZHhWY+WWZuIhZ6SQ06ROOKbkHDpWLmkwSMwh+pykyXmiFP+3siAoLqbonm3FRVEjLobAEZ1lk/pWBNFkKd5SW4g3zSoTtkhp7h1ozzp/Bvvoq/j402+i6kaSevnujJbnJb0QyB+IsyxByosKNfj1fVvAL3OqFfLmnj0KVGWg7C1WJ9zOKmRszmhdmLbLBXB2jDiZJCYRMPDysBkUUr5cUgHAfpqKILIbcKLzG1KEytMlrXqqwAeTss1ELM3hBDBIcpQpACHYXY6ZSa9iEON0hKzkd7tNp9UKoYqy2clr2xPOACzDoBV2fcwf1RABxXMD2Bk6/g9grzINRYTftK4Z7wihZuM67MoPGqs3UmfjnYUq41vS/OMvzVHivaQdipE1l4sPeED7hRH4EVzME5niDmVqXwB09JAjqFc82xYV9RQUUbqcoQbfR/ux3O72IGPgZ8Bhtt9F1Fv3oT8w5Xdieq2UutunyOE+2NWQuv4DIwYk3O4YuXo7Gx4VMdlI/Z+VsqZncjA9nI9BOf9ilPPgyYvefJNaKTnGABxjEWRvFoyJzQhoGGrjZ/6Y15/NRL6IvwYKix5tsIXpDgk+CICQLmSJkuunJpRJJaWZwWop4wO7wh7pFrT7UAsjvXSZ/963+8v8WDFADHIzh5eQxhBlADwcZbCVAKU/Whz6OUHEYVe8tBsECiRcfolOWwKCU56NY0KBBtv/0N99nMcAl5hL6PCtG7sHCwXW8KR0SS5KdYj3XcrlrT1rsAGupfBC2H46PxAFdw/VV8/RFcf3Olextt9J1JLyjunOPqTts2Blos6fIrEBZqoUv7wMFemLJe8z7Rxj3AnqJLyjkYtaF2GHwYKSziV8nYO2gAQsQEziD+d5DOSdGZARZpQMr457ZiJIRaZmso+TlQ0IMg1O3ltpeXRXNSkgqcn8ZzBDv4Uio8BDjG98f8R1Zbfe+6uDKlccwQXLkju3v8QixTWFD+POROW3TQWu//AqnbOTuFZkMIih2ABdKxi0wN9Zf7UmiD+UOjyUjXQnWZ+aqZ5Git6+/+ACZKOCMZ6SQwXkdiHcQ7aDCXwkF0tcJBlpr6lapGN4lJm+mDseH7LHEQan/nZ/HkFVx5evuW7EbfVXR1d3LzDPM07TG0fY6QepVnHH6D+/8HVdZaeYdpZMpk8FsYrGoPB+x30TTzmfJAc1KkXW0wZbAPmAU7lqtlUYl/fc3WZSxQgKMki0tjsi+lpWAKCewHgKMN241jbjrIstmG+lfi2vddZ1qE4vtwBE5PUE2XmJ/WntjnZ8nylH9h8BntRYZ+LBpxXh9G2V3DydrXgy5Bp+lccKK4qxhgmWIyV40lo4pamI5L/X1mcjkYoQ0rYgBRFbMq9ec+GKnQXy5Uk79mzoshzy0Cop4lo6XRHIVBEMiqMnP+28Xyl+UHJcNCYNaOqNd8GwrUjdU1qxqiQie4KrjzPvylr+NXhkO30UbfUfRL3wTu6mO7M+CiR0/6e5lMqpL/Ol6tvEju7FLlnacDjWtgKRkDawIGCR42hM0REr7flksWvjI2EamY4bfloIglpnzAEIspJdyw+Knsc6wArSONO4hrORDyXoSvw+fsDbcravkUcYR7r7l8T5Rq8EMzYcIw2vClLAIOBqa13qwagBO5uDvJ9913PAUVcABygvdc4FZSOB1qvTgqVFc9WV+sn6ZjHbTkhenAjGIIFlQTTledgepWK6uxUTbqw7+wq7GDWpXkRpktKsMDYg6hYO+TVtHL4oqNaoUOorebfBjDLq//A/VIFZhwF7h9G1eBj2PbDWyj72x6XvHN2/LeO7Oc7ZoRVHMzjyCC1pg5MLa6qfYYc6iO9m/aI3lUfgxP02op11LSeSvOECBnGABgrdUZWVRrKKRDJlEuJCeKKmDRDUcVzR/Q9Lc1JmWxSas+91wNu12zCLAWTPGDRTeNnLaLl2+uKrJ8+62f8oF/vUX2pG7A/UBMzGYjxnCBE42kDmwv0MWbYVxiZslsdnucRW88tLty98Eg4gw4Jpxd4I7G9TJka3PJ3kLtanP5+JhPk5N/GElRZ0jYYo3NW0m/yEvMRYvCLDkws6I8DuY+ib/1izYrzXW1k2eFRWWrXyFF7BoL4cEJLcbjmdQbtEg9dWl0MPjkm+Lqt3DtKr54v7nOG230NtOH7uL3r+lflFOdIxrQblKXF6VP/uL/W1YTEnsSPSha8XMMOC9HawJCeZmSSKtDV1eJog9cwomWrkBMa9Bod9my0trXAAXQ/irHSmgLDTCG4MUjllU691uQthNN4APIaANRYFrVMoAaVlIAQR+x3vcSZmK27lzJV/m2BNvil/oymZY+ujx90hmUdFtQ77UbV24/fF/7fRnljwL8AkQxE9pwlYcl64XZAHXruxzniMODRhvjujX+Ev0KMM9BNJNslflFGJhhjcYbgbJYkmnl3Bab9qCwCV950ECt88+L5IHTWFHEn7rl8qyh9dyR0GBQrH7GtvG/D2/dwWffgz+DjTb6TqUXFA9BfvIWsAP9oExznJA5Se+J8PuRZoGVoqPpfuoeJU2ggjgVBE6VdCU4PzQyrzbU5cd1KJLTM7smPotQnKLnVUj/PIrMU0q2sOaahWi2ufgtkL73VtCGPQZzFL5bvroytUtzVNUO5prlyl9UkfxvZ0kbFKbpySI9NaRkeOhISLqkfko7pTqDmPAlM2Z3enL35CN/7Uv1QbkHKl8hAh7CyYwpwAl/p9T+R28TF2YbqaE6/c8lazluNj4CFC/vLXLSgNljdMuXLqVGx68S95TxClx+sPdF7Jr7wVtRZneZLB8R37DA0Ap8WJhnBglJUECdwdTxA2qdlcx+FO5vYhidhhU0ipP34189wROP4l+pA7jRRt92UsVHLmS6ohfzKWDGptkb/kEDgGGHrpSvNJPOV9wJK/PXkPeBkw7aqDEUvubOhswspYSGVgUBKHRU0aCMdtaABiwDI2VmoJ9GUNIkwFtxNxTtSs6iLC+kZYbSDuiLtb6YMAt2lCI6F32sdUovzcjAckeMxwqJzT/P1j7whn667LPu25kvm6D7IHBuKaea+uffBgyLZOgMHeCEe6Oaw4ErmD6M0z/ETfgTNcQKqVDzhX4Y39DEZkKcKz3GjEL28lcXiI4O3O5HPdmaWl7nWtjFWky2nJtI3ayWO5t2dZng45GSWluPYm3QkjS+a7VFVMUSiIw60C0ZPAnjyXLGpHj8GuYn8LEvbTtzbPQdRr97Ez/ykH7j5pXZvNttVmj+a6VlhAClbmhMt+NyHA6OqG14Vb/WoqX6eoZH5V29lNvpoEDKJcW+DtjV+rqb5CAhH5hrH8A4pKKA+T+abSafxEzltABVYlSFrnYz3JM/mnPCFKDmqKKfBh/M7LuGk2MGLgTxEpX7Q2MK+3CtjL+SNIRHLt0hC520euk5tBGWECQMLm5RUTzzn76IB0QDwPFenH4Nt+mjKgkBJFPtZ1pK0B9xHbAlk8YHAVtQi4mNdUtBGY2i0C00EPjZ0KYuuBoJRpTTVljQQ2gxAQfrxIZf9AAAIABJREFURYQCQ1OdAU1VI8ZohiVpNLx3Ua86DKE5VrWES5T3BIvjZgdtArgGeQh3z0eLoTba6NtLN1T+/qt69Zp6Tp/N6R1DKNt7L4eqSprQG4rQtNxC3R4UDZr10lCjMOuo6n4aog3h/0eo0YqS8VsuaeQqjXiK6GKth/qYObe6NPPZnp5L5MU/hjKH05hyITQhET5IWEQ9qxT+4bSoTPMUS+BvPgPVWWItQKflPrecTAMlQJBsaSjzkoIs7T5zbocnU/DI0Kn1rkJDvg/8zAhEwyPdnmEViPa9wPo+71gYVXTSvR8rvCwNAMfzkJ/FjWU/Uyp228yFtST8r/AkI6ehChvFVLhaXmwwCA3UCEuSmcw2uLrmY5bMp6q5R6C7nU1vxBYMC3xAqOlh19KoaxoHFh5VTSOgxLomJDSUUBp3Z+VLb+GUK97A1Qm7p/HTr+BTpaGNNvr20K9888rLd+drV6f+Poj0faEAm8EbHHBD6jO7hPLlEufjDeDFEHMAtotpmE3LL9TLgo5x+2tSSiBE89UD9qiGV3j3LcAQmc09cadwNFhgJjbnY5a1KgFzJIZ4YAEOljB3LVVKLTudZAckBnSVlj56LwSg1baIGgJQ2rA8jLO4wCY8MBggW3iFDSQDEbVTabZFAFuHjOVBExVf4GE7mgOK6b6fMKIB4ACww+lV7Hpa6iiQN3J7gPpoZ/ZS6IAz2+liuc3Kprp8UAtNw2BEq8Vd70Lt3cDKauCv9jXZ8iRRa7+iGmKiSpgjGfWsPAsq3dGiS+SNJbF3wOpB6OPaGKZ40PJqP41/+RX8alFpo43eafr0y7iY55Npmm3aAtTwRS/xSY1ncPSZHVZORsDLl/+P5p4x7EBcZ5o9JZcir0rtB7QR9O2rRvnXU2MbaRD6tC/CoouNUz4lZltlCoyTKvivf3oe4QCJoQjh77YrEuZo6oVkEd8/lLFI8K8Iza+cj9KnvbAVuvlvZvERWLY9FUJddTAZykg/N2ntUezcEqdmiaI4HCMEaRQQlXnCND/9tx5YPAVrgONLOHk/zq7jrdHFsVejvkDFfAVDmEw4okEl/suhDbvhmsuHDUEDv1lEYU4dcCb+0kZ2friVpUJjQy3v/FGqY1OeBmDHexxsQ6qQpSjT35XcRV0ZuhY6idgi7cjO/RLg4v34yT/Br11G8Y02evB0cTqdXuzuXOuRvv6cNgMJcnUA0GXCj66L5WUQ9B/uFXOgcez3XnDBwuIQgJob1TpM4W3OaGNQToW5NE83ObwiuXwgVph38SqhGVRbg+rflU15Gx0iZHgB37lrsKlGTu0saZ62gViqmFAOl7Th6O4tBSWjhMwS16GNYfv0sKvNoRMeJ7I9DnHqQ7Mwd42Ck2qZ1nkRql1dnuZ+SadpPr0r8wNLF11oDDhew8mvAf8+pEQQEh0LPsqJlmO2wfsKe51g7ajQrwbV/RILzxVj9cwWL2mUk5wciJfKQMTejcqDB6WXsEBvfeRZSYOTe1SgWBCl1BzdJpbJLdaPxyI1GtoJl+ZTXMyYn8VH/xifw0YbfZvol984m+f5zrWT9oTGOIjad9qWl4Cm7/YtFS3zeONZkEJM+3CeGCDhiol0DQMcuL5WnltyDDP4OEwDTnt+0IQvx664N7Qnh/okQdr3wvapFDS/UnQeSdOmzyLaTSQP/ypQWP75Cg4DJT2TQ+EHC80SgMIMWVbAukyOqvh3br2Kdcd6bWgJ3gpAw2uDw6J4GFilSo59IzBFxyFKYxmvoqMd2Sn0VE8vRg3cO40Bx4vAX8INQBbP4IqfAHsLQ0cSp2YeTeX08tVT14fLU95GMsnIhYku6xrw1oc1I+xAsdC6bt2DkR4xa58Fcz/K4CuNwGoPyCGR6rJIXenFjMjXma1pMP/w+Byn1/DGW7i2fU52o28XvfAVnJ/PZ2eTe/PdUIs/yBwxMVvJi1aE2Jy/CwkltRWUhtaZo08FB7MwWMgKhWY11PWlFgcbsZd74NUIB7Gt7hBKJjmYdhrCxim22DV+D1baTLkU8g7lYW1quBobakLSFl6yczYpVQRoP9I56lEdHnMPXdjSDOt4wBzRpQHhu6D5pqifheckDjyfar9J4eriYVGcnNw9ufuB/+x38UBpDDgAeRpvzXgTeLg8ocemdAzZqJwNEricCjUys8iUuxDMJBnPgclMVnB0injMDMUUl7+1fMQwaIhZGCch0tCnUpwcVjcIZBfIKB6UW0xq9IoumTckHXqDMGglkEBv45E3gKt4eduBdKNvC129cnLr1sWVK1fhTguanZVcGGEqT1afLYRaOMUDnoIQDUFshf4XUkMS8wj0hCtrNTLtdZhI7v7gJa4opJiweCkdVBs//AuQdV8+wBYiKfnv8nlT6X4LdHwwiqSkfNIYmpF5agkliw78TTVWjxGPUF8AhE/DuHyHR/z8GCKRMFABWLDYcN/E/WsSTUq9dxrvUnxElrTn1x6/ef3OlXob75PWAAcucDLjfdcQvig++q18EGp4CXU8sF0ynrKGQlLkwrMQSqNVSb+59HM/3aj4FASDmkSxsQ9ogE5R62pUjKx7pn0G3DvI0jRe1diFdnZI7JoO3Me5j7BvL9ZL+F+oO0GfhryCF8/w5Dleu4wWG210v/RLr56p6qNnJ7p8/0KQV7c2JBExxPK/Xg6US61yohVnaqjbj5a3Z9W5sOqX1aHJd3WiufK5L1ZySBOAFtQ5BWsqkDPDNt2CGeOYULk04XGH5r1oHeGkzrbWI1j68HcMYtBcJn23qzHK4SY826NjDvaLzFFVXjSL3i/AO+4znySYEqd7G6vodVCSGW6coUO6B+KjbbN89lxVCjyiike+cfbm4+dj5vugVcDxh7j2TwCAgaWqaLZPByMvI2Ov5diNZW0lejKGbGbUs8zOn1wdIGMZujCMbpBxnakvbHHXrLaQHB4QtseJ7PqB9IsVgV5cy0e5Jok5MZQWgvxFMf78Cspx0pTlY8b8BP751/HrZ3jqHK+udXCjjR4s/erruJjnnUyzTOI+g7i6VfsvQoUuvy6DVWjeD3UjabVCJEVp54OxNmHeD8IdXkTbMCpcIQ2HhX3grgjAopJYj7wo2L4ELPa5NCidohpyGwcIM7QNN8EyzdjHkjk6QjS7SXhbjgUWtP03O77hz9ZLUh4mB2ibdBN0iE6R4PDw+a8dO0CxR2gtmGWX+GmMEJScHob3xl6NVtLvtO70dD75s//R74+bvg9azUF9A/gEsMMuWS8FFKpHoI1iarQUBkuvXisbP+NhyUO2ZFnpICVUDl74YRYF6endxwDfKHOyWdYgxOXEG94fzi4tRkC06Ky89GNF8xTjsKFGEjU6HhSOAGUdRh6Q3HTiYeECCOQJ/AvnePUqPlTEbrTRg6cXFHeuTKfTxYQpft5zIRm9EOLR8vBQS/uH9BpJEMtGqJBi9Eo5f2l3yDwk7tTgF+/w1/Pom+XLkeQyMSiwnAWTTAgAdsyQgiMdgrT6w64y2oDbDE/OWHa/cGldoC9sQeMZLlEJOrA/g7YJn6eyJbnIjnY37/ug+4dOdoLd1Pcm903QScgUlF/+7QQXcWOx/L2VabD9+c52SR9WkfFW6Er/ZkBVxPYjecC06uF4Efhp3LqGu+c4s8L62/qIIMu4xOqS/VtNy1jjYQWSyR9dMstdQUAIx6SrfFo8DVw3t5I7XPIt+pVxNkaoOpCwhywCrFTRdaOSPJLxFpQexDuePEZ7VeKerpUrcPcx/MQd3AR+fPuE/UZvN11568rN99w9ee0aAG1+BLH3QKV7zsvSVlXx1RGI9npxYBizmom3iaSVBCcKE8nUBA7qruPaFh4MNBmQ+VlD1P4A98GyRKmjaNODMFxAO1AV8gQMvyYv0CWokYBI+sabXfK1sqMvx657WdrdIMiYwh+jj6TEqE0bobTx+SIqODwAHopeJLnd8bNhwSl42tCan4Md6yVvg54GeqhmkXl+/G//1t57fI+0CjgAeR9uvImnzvAGue1c2/TcH4lFQEtt6bEE279DHo5lrPaFWsiwJScB+Dhqkm25Di5ZsWBUFwU0RCSRx4I7GE9dT001cpeDstTNeoByoFSUhLPMcuUw4hnrfMRVmXBxG3/6DC89+PjhRhsRfeqrj9w+v3v29TM9nQG0hIVlXtYO1n0ZoYY5fbGUiyCpxl5cIMxyDLGLGQzNDnEFMPxgSgjThMI1UtIql48AhJIlCrIzXlHKGGjnZmt9oSkXdscGrxwZBVPYqItOe9eSoEsuEnjDDHNvKEoVVrLjm95E21QUUeFeK4VX2kdV2qwvmHtExudjEgXtT1i/F/ZXBVBZvmXSd0KzXVgUfbuOZQrnn5bSdxdrT5r4LUzPjDLPEp1RCKY756dXQ+7mA6Q9gAPneOgKbk6YZuxYyb2W7yCPxhItx15JQyHbv+xUSGzRirNUK+HPsw1e1CFEIG0P5nLWvqg9hrEXAwXWSkb6DHweWvTk5kiMwLVKAvMXZQvkAl9lcaNRSf/2XF0CK195Hb9xDc/exh8P5G200X3TJ38Pd+fza7fO7pzt+kQsLVd0eUItURRlp43G0GWxjyEiDE8+1W4uuokus3//soY3gKX58LtUwy4Z1jIpsxKbj5GUVmuIZyhpIF6VlTeclmaE6jFCAWJws4rsutDRtlqDA7Lxfe1JS7NA85r0b6/TB+UJ2YScjJnRCdq35tW+EW8f+YjJoVnn4r+x7czzCPSpbjmdyVGBLg0QTDCvW79fQY2uFN9iA8gQWQCE5qt0dzuwbo+NikAffezFu//fo/U2PxDat4/YJyBnuGO6qqvWSFdNYzB+6waVMzaU5es+tJGFJLYYN7F0E40y1bqQDipFmx0M5DAUksIuEQqMpOaL+VLsac0FOYbcopeO2NANCkuUh7s2HCh+ug8osye88l786CkeeQI/cmz/NtroaHpe8dpjk965c+fKTuJj64+1WQilZ52McSv3l5Vc8SSQXejqQmIWAgtcavk/uBekUIi27HvnhpeOLBRA0jLMfiLklSe04ZZY4kE3sclFkUrs1BM4LDxhuQ7ehOaEDE/p8M3L56mjB/sSPaU4KEGW/iH43u5yMGGeSraE5WRMvV1K49gtVUiUZ3i0D80HadoOZCfSRC05Fl3zmrGh1B1aQRPyPHZLW02muD6WwBHkyHyC53Hlm2+sP0v3RQc2Lv1DnF7Hm4Qg3M4l8NELc0llYIRRkERAA4itjHhUvd1gC+Pvfo38gZlqDRwnw5jICIKkS6u4xDrOTgt1aBLa0iAkDYiS2qkVGyVU5XlS1Kxkpdy1tav+UITO8qUMXOjOhuFaZp0zPALok/joSKuNNrp3+uDNK3/w9Dw/fA2Aus1bLtacUIEyEOn8CzP4WV5+UfJ74BJIYGPG0OZrfKsMc9j/lMrzO1kKe0OllRW0sfZZ10ER6YKQtRCSH0cbZPW/Piwa2mmYg8Y2hktmwTxJT5ykRFGJ5rYVaqs1kcciZW4imPClIUMeKlnmcmnHmZsGIKwhwL8omzI3R+36wYSdOMjYAbvJ0k5bScM0LLZgkcZQ8cqSMdqBCAkRyPl07dbP/ODbt//iAcDxBvAL+ABFvdCfgWxlEzJgu45yakaXBIJsJMj8N0AwCrvkiEmMViRkw4022KGBrfJkXwUb5gJBqpWNRjUUBjyhfUFVL/ERiCV1lNaoRk+CzNGlpPWgEVk93SdtLduDNBnnQysgwA76KP7ZFeEbbXRpeuEruH4Lf+HVh2Q6obeBfd1Qcks0WjBHgh1mzgOzBdcXUdbyAHPomveiFqqU4vhGaim8DNqQoomYiyW934SU2v/miC1SLkIEGX37rH5s6KHGSrjEWhvmalTPCpne/m16ETPSxEDmn/65yaf0ju7JyK4FW7oSkYoYzw5BmQGI6Z6P3ZSvLihqB8cN7vXpGIK77Lr1yXW21SsF/bRh6etWLvSph67oR57Y65++L9qXwwHgc3jkX8JbE7CDjAx8/L+f6NpprTD0Z0QIMoApjD9KxSGAqDyJTRPzsHejHlRE4K3U1A0Jl0LvRgPLQGQAF2oCRxJC+CYNY9AzXgq6pRBVHYu8oeIq+Ei1mFntH/dlB8yYBdMj+Oib25dWNrpvel5x4/XTh2/e3Z2cQVr8W0U989HT9WN428jeYU/OoIw8ZVscDX6o0g56dogCBRv0l6rnbQCa8z8UQnuHWLn0qeYSvg0dtb9ieFZ/ejQFHSUsw1u2HelXlcfbfA8ZTAAq2FH+BO/NZdEBK28WfQoSZrvavThpWw7KYw04gJRp6nK7SUmbxmZpWYL2CPg8V/I/zLHE4MnuAR1Iv9j3Hg1fMu4cxk0IUoCdAMDU59cFvrbjptLFfPrGt9569LH3jG/7g6ADgAOQ23jrNuZT94VYh/w0HrHBS4Y528WDYIIbWrNjpeLARsboiTcRgYuURsPleDrM5yh6paNBrMHVoAHU2G4axtBHhFqh1wgaDikP1FD//eW9bmioz9Yhz0zWhQ6bEOAUJ3eBCbvH8Oe/hbdlpdZG7x569ltX//CJOz96+5HmV9M2i+syky8zuuoSA5Fk4FVUyM+gCXOgZXh6ubTdwKhEF09CL0lJoAMLr8PEzkZ7szbu82fqGtgg9ZehSia5mUT7GioZcvsLni1i8sdSmexx+JSaWlJLDF2xT2VJXDDkAXWnyMwIA+T86H+XlSzsrtCIgZYnJG2IboOA7qgAd7kp1nk0dLBFoyaI9hGzbvp0aU9d3HS/S7DbpcRk8y8A1TbSO8Fkk32/U51zt3vzypWb8vxnVx6JB0CHPz77DUyfwOOCnRlCtovxKJQki1sjF9EMgyoePE62fGzFSqmsXnGxIRNiCCmGcZPYkdU4QqxivRahZ2ak8VFzh+bDDNFI84pC1u6AUuHw0ttETb5CTzEDu6u4+mF87O1scaPvcfrkV68/cj796Fcem5ff/yGM0iP9zTwIlpDqHMMKS0IAgj1Q2KswCMTkqESb6KW8cOJ2NFF47bIp2hc0kXpx7N4AkhOCpqNSHv4/CHBQL9zPUYIsBhFMW2cILSoQMYGEtlKMYDeFxSmehJECCpNtt5UlU24ER1uky+/poiUKY3V3o3IHPZNvBaYkJydkWAimZLCmoIxBpZnGhMMxfT1wT9qYZEexIUdX+vQzL04nN0ZPyAOjw4DjRVz/Kby1w4SBSeMjBh+6drqUcRXK1D6cRqoBmqQIyNjKsoZ5NqCDChGim8Quz6SSkmKltZzFOTDahmNKuig3XVNJEPl9y9EyYibQW47Jqt7WSi94NAZ9XEMeDw6MCDCd4vQhvOcuLjbMsdG90S9+/qn57pXHzqEyN8+DGS3Ym8be725U58zmoGFABRAoMmdCJ0hvS5asA4Z2ob+3TT2bCsM/iRWHEGT0uq626xwSLwVXRFpL4i4HSz7Ie4RzrCTigDlepWiIfZJNkqHlmIsV2lgtwkd4Qjg9U8smItnSR+UtiZUgxQIRXD2XRruRLkCEIZQCvjm6/et9R28d9Bi7PvSgalF4yRvdLeminXnGXb16643nHn74lcGj8ODoMOAA5Gns5rZFPNgWkqlhq+/WqzgDVDOS8IuGHlDEWvVRRRKRPSVaD0ZhFz8wQ16uKhtv/osVSEEaDiYmjqSN2CzCNp6TIlEMdRCZAmt+CAl4xd4LHU2ZMjyhsQI/J/dEPu0KoJi+hbeu4PSbeAt47h5FbvRuJVU8+9it3Z0znU8Bn5v6o7oPc9D8tQYyAObTapiR7TphjjTldfXEXoEsrr6OnXqaZzdIzM+BGSlHoaS/d8oXh34UBKeOnXb/EPij82QRRclUU3gilBtSYUdFwihzX2TEaCDINMeVQ5PObFiEF4CM0iqr3yJBGZNzkXwbES2ZtNBBuAfIEQnEnB++XGVCWBeTVsBG1whXtFnZqvQOym7qi2anp67MevFeeX74ZD0wOgZwQCETdsvMH3EGzJixP6AzZKgRREYehgXsqyjmM0AEbrqu76Ba2XjvYWDDnOaH2Os8SMWRUzu7j0YMa3Bk9SoH+IaN9PFkWJC6rJFhj3pVIeEJq2ipOpJchHj4WWihv0DfwFvfxM0zPA58/Ah1Ntqo0UvfvPYj778h1+5oNGkDzMHGoJXT+hQFZqFJUMKz7LPV0G0wxhyrEMaaCPwr0uBmm15usXAttEwY6ZOxFU15y/nnRocRZMtVGG1wJ+JvB3QkU6qzhOASECyxrXkQ7Gjfb8u+ATfwwhLYE2BOkYokkguEqqTW/XRX0MbMn1ApOGYm+Q4d+opf0z84VPZswmGQIkElBDmlI9C2+EV3cvP2/NDJMdP8fdHBpFEA+AQe+xm8siyc6WXZUAH5MaOj3I1i1AcSihXMgkomR2XZT4w/qmJyGVEH26j6V/mDIR1IGl9Fh4PJnGv0c3Arac3LcCWtH8s6Fil6Li+raGYTCbfV5fSx8KdLuBi2f7I+qQ+9hmfP8Plt4/ONjqRf/MIjr96aX/rmewFtC1JsP1Hl17AZUrVvui6mdsaytWOz24vTISwMQFu8ED6hIu2N5B8BbU1B2H60nbVfc62ek0KlJwG68PKuILwuQG/a3rAw3/T6VCgDtu5hqROVe3HE/1r54sawEo4jWJaGv/pQhPhL9GFkhwcJWQt2IB4AkPaBFXZvEI/MAgC7KND+qln0xcWi1sdg5hVoHdEm3D/WKm3ZkA+Rinmh1NNF+/ITfj7pFrSc0KlPrjZrTnTracEUAPsMm4AiNNbI4nGYT0Xl2uvyX/0e3mY6CnAAAPQKdue4Eu0i2Fovp+F/8bCCDyoZh1oiHNHKkBQYWcK8dmNggQNDeFNXSEY9PZZirsZATB2K2kpd2NIVY3Ypw5XFaPtrb0+aIHl4Dw4L32tTXKs+hTyverDIj7L8IfqkfuE1/NZ1fOAWvrZXmY02wi9+4WEAr96epmW3zGWlyWK0ludNbLnjUkMgUO2QVzsUaOxk8JeSVrEb2o4b+tUmqz3T/YluFRFfuPgte6PBilU0ZcaOzQaKupWqGCUtmAQDiPSOZlwSDT/8OAWS3DwHoLCACVob0u19mOb6YM7u8/BNPLWokX6188KTuZtb93mkjcjsd3/XOe99vrgoYoviy2KF0IY3qv1haM9THx93pNHpApVskHkQeDD5TthpBoj9Nvv83UWoPS9xA31R1ZOHv//Xz9/4Prz9dCzgOMF8jpO60oRPw/8GJdnS6ApPjXeUY6sxTjjtJWu2luHF6JpXTxtpeOvUko5OB6aXAworGalG1TDHn2J9IqSS3P1Bv4OcYXVDGGkOO0h6iFkLT9q+wArDI+GLBk0r0Sf1hy/krfecfPCVi398tIYbvevohd9+endxfnJ6Mckp/9zvc7Zhjr4C1h5G6Z9ybTWkvawGOxigAE20X0XGKP5jN7pAoFA/HC6v7f+n1yS5QVonUAqNmd67AeZfMBbV7j/CUwk7MLpJllBuf/vgKSul8apGcJCQBHssZhk4Gzh1lEMtDQTAAy4SF8RaeEIN0MRCBgQ5yILmFfBa3YmyVHcXjmCG+C8pcDfDl2Nn9y6NJ29j7nh1cCvtoQ73C+2hDSiELQ8gcoL5za/90CMf+E28/XQs4Pi7eP+/i9cV8wToCGrsBR9Dux7s93KoA4aUTOo3JCZtVPmpFT4Y+Cf2WkspXEr/MHqJDXZkwSsNpaliIA2lU3aVXCZrrVn1YY/NfezlpUv7IUUdov0k/f2zxz+gbvqPoIaFWiY5mx7DDs/gx17GPzquxY3eXfR3Poud3sb5tZOpRyWkfg+2PVeafvcpYMGOADsi5mDO/En6glGAYPiJJFTEIjEiDHKNWEmrTP9j8ewYsfcsQnfQEJQXvoxH8GQIFH3bKfvVjmye2zfZowukX6UPt0YwMfdvi3B6RxS7cPZcCmiUpj3/VJfPzc/dXcGowjI/bBtQWNiFkRCrR0KAlmhCIIY62zu43AWbO5WGC7TEN2FLY6ZptQ81wUefHuEZOf5Ex2fGmO1ZWi6qvjU/cnbr7O1OF13o+JAKBHKCs4v2OTejMdoYQg3NJXtWpuiIwevuMa7HWLy0ADUeWLug02BuY8ylJisMCodarYMPng0R5wQtUCAV8NQS/BmSNUdhW5NWy1M/7N9YSiyvMm16psLeaUm6LeU7FZ100mdOfuzluxvm2CjQ8wp8+eyNV978wKNXlp+k5kcIryahAYX21A24iwJmKZdnsj2nagbZ/SI1noI23e9xh1g2B7/uzklHZEFqeamUT1bfaYzK+YIAYW1IN71tOs8opLVlzgP7C8Ic3foJSfDv1NuXzMKyC8D2BZ+bVda29mTq+4V33Wwv8y5TE2CySxe0zRc63NGesqod1nQ5oZygTxfY+2vDJVTSR6Z1vvGk6Y2QoLEZxljkyypOpp9vEgorc3vkgRM5w61zvY53hC4BOCacXOAuvRf1J/UAOtBRYh/6M8Kxekk4y4JC035nYnWueAwmGVJAHiRN+VLs1yVaJCbht78QPzX+TElY0LtoYn/9oNyLPQ0tly1MzVuY8zu0vy9ZnkFuWhtssAP9e1g82YdXysCXQuVEoPrMlQ1zbOSkik+9cfbrHzr/4dtP+pQg4pkZWOIllL3RnulBdoMhgxZk8V+NGiyEPczND6IupiWqjqBJ46F3kJFHC/TUAErUMV4SNzDEZ3ukSnCoWFg/vF5hCmPvAtvIvoUobAo0naozwy1956TCxfqF1S5dDcYohjC6PnlLUJUIOwTaU0FRM0bRV5H0U0EIu6QQDI+Dr2fpIKAPbdBN4feuD1Tn6ZEU7c+U3c2IOdJnI5ZHMfwU1XRMwKIWhqdbAJ13u+lE3v93fwXvCF0CcPyvePTfwau9B2O0sQI1QgkCvBj7MKgwJ1fuAR/DgMsKfFkjgw6xY+3Anp09UGCf+OE1DYe6R37Kfk2vu7oC/Iw7YiBcEl+C3AdZX+Jb+yGjQl0Z7+Db8CC2NUsLlzoBAAAgAElEQVRKknBnCD+RJsg86zSdz288fPJ9N3Z/tK7wRu8ieum16z/95K1bLz6hp31Nipop7tlzCixLBZQQ9WKCzb1hddNbxY+8FybO6NtgnCHdSvXT5vlfSFQp7B488KCmTYFaTtDBi3l1TngLqSINT2cLtla0fWt0GEZhL0jYj9yGhMwzkk9nsdDckxSCaWMDRyRpLagypGC0IZh76xmO9MDQotUOwHB9ioSG5hAKaY7j5ARiRMJPy9LQDK4ufstSx3vVerMWO5Dzgu0h5ypUOAsJBQQiMinm3Q7vFF0CcABYwJXiopSz4U8Gfg1qWK2EDLTAkSJ6dDo6ziESO6DT3Gi8pLE7uq7SPhM+rKK5bN+4dRpOFQOUszYyVf/y6TUr9LWD45kpMAyJZr6sjMuU8IuMO8gSeA4OhzLj7OSxb55//ur0xJ359RVNNnq30Au/8+jLb+lLrz2pk2Lu3y7pmEORky004FhzeIhDAWHo0G1CAhAwzEEuE6C5KEDPe1q3kvC/AG3ZTLRVRvxyEIVPzjEnFdrPcO5+bDpW6Z4MF7GcOgJIiQv2Nx3wwhB3QixxkL4fF3rMwpI9fV1JM/zLopWlLYu8GNECWgp29L+g1I1ZsJs6gIAwJyJcCA4PwhDz5PiJXD6hyghwCEJIqD0hdr/CvYtAE+3jP34jszNOBz4M7fLFmrdAjwLYqZzp9Yf+t3fIvYHLAg6BzLiYQkbzHqgRDotl2pMiyiVDseF05NioNnSNxmg/tq1VTlFGOxxRu7oGKYokLcxreqcxScprZBhDFvFRypMTDYGwcAPGhjBoHrWKxpCwSBjYPr8VkXllbCwkn7OhDUMf0zw/c/bjL5//PxvmeJfTP/jssxcX51+7cX4V0n4caXuchDEH0CdohcGDDoDbk8ZpRUBCwNpmbhiUcUNuLhPCHNHY90+8WsPR55i/11ZTTc0g7UMepHkyQialTn4+JVB0IPo52lWwxYUlbYi5DWDGmw1zCU+0v1PO5QwMwTPR1qRoj0p42gdtna7+nRcxHWbK2Kh+EeqOztTrJfii1p0YTzH4ZYgnjczc75VJszviqaD2MPj4+1me9QvaCM9teiDgU7Lf60WCPKZP3Za39+MpiS4HOD6BJ/51fPMK7pxgLu9BspoVJfCT7kNIdqumF6TKzGYtDlBCaSUJWTX8WmQmq5yQxAosGAMdHfHsxxkr8ttFTtGgOS9pXm9EvjTapCsoeTSFse2YYq584okaVX54M8gUkF8j/OACICezLpjjujxxSzfM8W6kF377uYuLN0/vnskkOvXNNrpnQnVZqqJwDODpEbp8XqXhZZrOk9OCw4C+SU3J2+D3S0DhjN6E9DeAW7Gq+W2ONiSYJaxfCpkfYvzu0giwJrShGOCMvGQ0HrBTQbujYsdeAQkmvJvnJS1D5uiQCO1GH0NEBqBdPbpjw9whoIoAGGRMweFhGanoolIKKqdxzIJ5WQjjang8BQWLGAA1tNFHuN/BGBkBlde73J7qaH6F/hd3pI93fDloD7iq3MQbD02P4h2ky4ZUcIHTt/DYk/h6LD7Kz1HwRKhlVyNbzvRMp7V6OrbTspGGMVeFJWqS9uQIhVXC3gSIHNNZYQPNN1oVi8f2Kwnx4QrgQ4KcLGuELSp8qU2v6WxvgMY3I0WnGcTzmzFo3RGGpMJ24WTG9135sT+6+482zPEupBd++znRO3dPH5mml5fnrnvhzN/QEQaAQX4/ovetg13HGbygnr0g63kbGO4DRi1K4ic2pPcgbfIcTQzCpSCKz73r6NCKXTuG8KvJJLtoZj5Zff7trrTYpBn1BB16IKN96owY5tR68FUseRtqQRMF2f6RB4XdGDbzJP8E7zoq5OqwXBBfh+KAQ9IQAbFpHrE+XJak0m2A78YBAgT0LA5m2cqcnxCDKZR57yi5KzDJ6d1pni7k732itPE20qUBx208/AheV0z91eEhadaFHvVkywOz+oGXpxEuchIn65DaGgtco5JkysGdKrAa4znijFw9GN3OGXkSgsn+nqiGz4Vcshfr+PS6ghfS/LsUeex6KNcmZpqD0Sd0eNiQN3Me+GNScnyfgyWXx09Q+TvWmhFZMMej0wffmL+6Mg4bfQ+S7G7pyfUr8yuKqT998Id37SDY2yapYwiSYKfhEW34AqCHejlZAI/2U6sRSmxuExIEawldTa/iyKZTfScJl0ha4ZJeqbZcpYMw6aURSfTNPcUzXbTyRC+IhUUiRqG6HRnA/v7/7L3b06bZVR/2W/v9vj73nCUhIYFkCYQFqRgUlwM2scBQBNuJcRIlldtUrpJ/wDepdK6SC+dQVDkVkguqEgoSyWVjqFjg2Na4ONiEKECBFSMNSGI0gkGaGWmme3q6v+99Vi72Xmv91tr7/brn2D3QW6Ov97uftdc+r/V71l57PwKIAQK6DGNj+mGcEL/Ua98dQukCD3bqzDss6aKweVeFDSdb3AUSpgv259h709SaqdEtAF0KQkiFhyzgiOFgjRcoHuE8xDFlHRPbTfnm6RAvno0EbR9vMsSdbpto23bTBHpzg9yZZAr/Hl5Q3JT04bekPj2FEmfF6Xp9BhOLlCkXl6vLOPF35c2RqEA5OMpPiYPe3c+ea+OC1ECyRpU6QNkOs9oOFLTR3+DDTzNBYbXN3HCw3C3zLBXecila4pEYp8inRynd4nTqnGcO3W3ji2rMYHGBLGib3MI3LrSHn779z/Eg/CkIf+8z79J2DJw2gYidSZAuY22qiO2KS1gLxOPxtP/xdHNG8MnGPwWQPBXrzyA2E0P5mUuv6fFanhhioqEgq/SokXEIAm+L1cXUJOBnX+loq4w1Srd8atysJR7fx0fIwj/ULBZ+c0bHDfFJWKcflIYtVGBfVK/EhgPEPU875/KlNwB7qrZd6RGRDolGo3oFovkRd+IksRxt+A4LAK8hjYMipJemFIe+VStriYtf+uFzafqJyssTO7bZ9ip46Oc+jbc2vGoLBwDBbod3n+JZst1w0PQP9ZbWnzlfDofRBj2IX0t7wBgVf+R8psgdqpFL5KeHcknWzdPzKffZnA8U5Mlik/eQN4YTpfcjvvTYZnvzG3q1PDnEMv1OGBtQVAOxj6wZPzydjsXmpoUCCNnLR80ZeQBouICHFfK+c9/39O1fPdQbD8KfjPD3f/2bVFW2E3IwVp9FcSwlvcurvffZ1S/FgOE8NG2+jAVjLhdkQMjm63J0pT9QmvKieeH1epEMK4sgKFGhRFoo9ETTwa5ET0aOxVOGF/F3+gmYGQP1r5M5INj8HnRlr4jy2dVyzdfQ7j2yZ48QM2CMyKqGlbPBl2T5CLeP2PJgA0nnttUW5WOxyOCjbgmJ7zS5dc0JQBl5BEtiAhwy5rjUjDSvbXQ9BZYogg3SoGiiC++6Nzu8FsDRcHXDC/ZrobN1ihY0gAltHNavM9qokTnomt7/jTFZVmly7xgT5IAxZukdsuTvrLh6ZwWtvwo88IakCpu+T9scNHsVNI1nNCHxmjYEJLluekrUIXMIeaYoD5O8TBvXEum+MnrcXsKK7AxLcaANErju9/cAc/zJDv/g19+zuS7nNUfiWFWkGeaIL7cheX3yauC1xb5P6WpzWmFpqdkc78WLrVqhdwEBww/iKYCZZNRmtNCCsOxxcxcHXsYM5p1WMuXyPeIQvEg4A65uKy6pOyCBDOJWUM0nVH3Xo49UaOKwWGAvdP3o+KI6FPmO0XwPx77zb1SK0WxIZ1V6eucJO5qr5miiVNXgwJtEHLHKOz38nnXqYcOWKe88pIvRsVetXkpj3Uivk4w/xtCbHuiTa9Oj3XbpH3x6KuBND68FcHwS8p/g6y+hnaJcGFJdRw9p07J7YpqYmaz1sdbogmzamqkLi2ABRyonSp1fKMS2HmRBHq042ITDPXMoedmfRV6Gkj7EP5HfbZhBQ33/csMDJ1m2mZ4E6XzkD4iVMRSDSn4WAIPMwpIItOOinZ5+cPc95/evfBaffRUtfhDeDuHv/ov37rdt12SD7WRrjD3ghgpNyCAZAQ0b90tHwwiSXUTFlpozxEC1zFn9qAsAPooyYL5bU6hwpcke2CWqZutAVssuoE1VVvVkbU+kpEAtVrOh5g+gDc8WZU7HN/jTJ3GXhm1huOYu0MRbFGaSZFGQfh8o44lRXIMaRtmI/xafYkn05LIaB17SDRyTsYRsLbYX41s83F0Jc8jWIh0Gm2BzL7rRaWzebtllLXQLw2eaPJuTZbbiA+xDTFd0KK5efenWyblpfrwV4bUADgDP4ML34uHfwrMTUJjjmPT9nEWnR8ufJa6FG/1k9ayZPlXPqHWqQ0nRUr7WSNHhd6XUD4ESStSpM8/KQihXsxDSiYYJXg/+SJVyvU94YezRMCTqD+2788WHtL5upr1mMmP4g+RJyuK6yV6PLp1cv9kuvGf76FfwmVfTzAfh/g2q+JdPP/S1l2597aXzum1+Jb5LXFVI/4JK/9lnprr+h0t2hV3tRSpd+b5RIxqSQHyas9u/KwljFbOYzOkFT3g6/NEKFc2yxPEBwEvKGzYaAV4MpQcTnBoN1YHt/Xvx7pogplAltG/o5nR3lvoWBu1KOBpwMAFX6s3PxNKWR7ZMeIhC/eauASB6Xwba2Aq2oIOygWmobvkE78LSUy4B8/obsLCMfVSNHgg+vf48T+OvbeukEcQoJQZseio0nesjmi0kU0W2V25cvHD55jQn3orQ7kyyCrdw/hqg2NScLu8GbWjGEGURFQ4Zl7B3YTzSnJv1dy6ogImaPtfB129O6eq/NMETCziIdD0AGg6FyfV1rlsPLh9rOPz1hZJ3Hfr8zTfyL6i6R51N9hSV6lkhgiYjS6cQoNEjSJQonjHV4Ey0IVhUt4m8fP7RW5scnzv3oSvff0aTH4S3S1DF089d/M73vfjH3zgvyPqDIho3OqBvYcRbb4jysuNu6aFghgoxgkSvXC6K+rE5yDw11iIdiaTLrW1zIfYjMEfAfBZiNKpUE6XU1p4K1zBti+R0cr+A+sHXsXtKPRYduLrMoxEiEWyWPZPJZmRxBGaqj4YdxQ6tONtG4KM4c0yRfUtPnQOnl+z7Qu9fZhHZWjzdqDIH/2tT0fyI516uhlpezY1y2LQZzb5ZV2g72UQuyCfvjUP9a7RwPAn8ZVx/Ge1SvtZpUuEFGSzRhuafsSTnR/zzDLzCyVPRd1b9nmVqzvwWzo8qf02PFm05VO4qsaRx8uxFUWosVOMzwIceMsvQm9fc/vGKN1inqzF807tUTEjEuqec14HRuAbSyCB+DZdM/5RWHV+4cHzUbpx8/dGj971w+vQy64PwtgiqeOZrF9/3xM1P/vP37hTYFALd3CIxIjT73PzAkxc0f22S9r0FVTSavCCjxchGl6Nr5rY0ZtCto3z3mFk4jIlMLw5czfQBAlsJqVkaWdxqAV4nCX9Ipk6Qa35xn1/3VeLEhziScLRR8Fk4THTTiB39YD3qBgnbQPHikAwVkktRf/UwPCRbG14afnzG/TbAF34Yq30GUpgO5Q4trsOwwRYOmGpf95K9swbWlOQv3CO9T2JsPGpTJAQnTQ/3ZlbePbH0On8UEOyhurv4+EP73/993KPwGi0cgNzG0fvxLn53X6IN0o3x88BeiWYmh9AG2z9GFoYIrFY1rapFPeczseTbsaihThwqyWDi4SxDQsnJeQ+4xGrunzOqcaeixmy1F6x1VeVA/QVuqKD/RERShztZZug2CgBm87DUFkYRiafFaTRqnKsu3iiry4iJ7De9KA+9cPr05fbEmV30INzX4Xe+9PA3P3Hz7//yNw83UBPuWlQd+to2jQVPN0XFSot1GOitPd7UkRaC8xk/XXOk0kOdVLXtpUjOu7RnsP0G4DPjKUJZVJRSpBTEoespBdktJNU8nDCA+VKKbSjscU6VDBv0qp0NJ3z0w0wL4e2hAr8jiw0bDkEgNFhm4diXGzX45d4LOmBsqKYIkWqNaOhXpu5b/OfF7WVhBSGkpZPpQio9/6w9kxlyEcgpzRASw74Z/Al2ik9+cnfz3uyn4G7U4aHwUehngL+JZ3Xs0FcFnad39SelH6zgZ7QRKRrpi8QSL2T+NF9ugbwVEoBDzY8oQxAn3qYsJQLzKsUBgm2qTLp4Y0rcDpcVZJmyZjkj14EitnLPR8mSukg4vTScbvs4fCdHcKs+3IRSDGQsbB4MPvwoAtE0iG76+7d++XJ7x43tq3gQ3m7h7/7Tb3n80VeeffHi0bhsA9JMZ0rciiHNXRIssRPHDRz+yOJw0BrXddDNHBpQuh8SKI96XGK6Dg7IIjbANj3K93MsHZJSXHhiaxRX6Dl9qkJ9qlapuFIi7hIdy3HzmzmkuFzIIBO/diLuwDD0YFdxUNzsFh000OaIOWZyBONgrSOM8XMPnDb4baTD7mK59hIWDsM9ViWIf8Jtb4l9MKNdkuOC3jQFxE72qkHP2m/UdaT42Vd3hK1BaVL5wC4d6u2MSh5p2O0oJZ1TFIIreuP05ZtH//evvXbF//rCa9xSAfAZ4C/gxh47OeusypySHh5+j0/EK1dQJ9MpXorxXMuyehAEhljy0Sm7rFJW5d9tCGE1V0MWs09dbpibeSJJVtgDVcptmFvktWI79URkEjMJP6j/yCsJNiLiTeAsKCaRuKJ0tJZl+gKOjJ9S0/sSPpIPyF/+wiv/7PLuiRv7r02NfRDu3/D3Pv2+DXjuhQu7Ztu4thnSp66Oke8HVsZminY92vqdjPn00yLOP8m7b3xtzWj4fCxvo4y6+EIUjXVb1hmtDHWe1I5ok2fJEcsv86P+iVywvPQFAc6cgm98APnNmCPG1tW2Hd+wC9HZqpEtHGResuaz8UbGSSGnHC8OI7ujGQYlw0Qxm1LcWsD855MsjpxiA0UAu/vLGsiNpf0Uayyox+It9XAHlsFSKxQu5DR4+uh7UkwzHkcFxLYCPd0vBzCxK4J3vOPoxo17hTbwegAHII/gxot44hF8xdfNvKsyQ41ZmxaMciief56RRSlNV4/457Lahau/AxTEU6i5gQvxoDlymA//uwQBmB5FnKDJEg+djYTSLCbWwk9pHWz0TtdozXEdyJMjvYG5fBWuff9Hkqx1ebkyeJTa+xtA0NCLn2rb6Qcvff/vvfxL33Tpw1cuPPLU8792Zoc8CPdF+MQ/ev9+r7vdtm8N8PnU4YRLYVsy/UNtzecXbDscdjYVULXdcgWg5ciUc0sOHJIJkBYg4Qygww6JU7IDC6Ge0fUcymsZKZ4hhTc8ddAhDv4xgLKgncyX1NCLSLCg/uXdCtBf18HkY0EaephAshtvidggBqu+N2QoQaZctHGzdq6kfSK7f2xUaWxYjCYoO7d2AdY/0WLZdQsLCrY2OrTaNrj5uY3w7SRHADI4bDIei2Usdip1aar9xi4aQ7WZ1iCKvaD57FKAiRWAnBzd+sbt8w9fxr0LrwvrfAx6Cc+dw8t77KqdB8DCUBGPKJYUMWnr4o0RZAdoGDpwrhqnPSAlDoutk5xLiWze2qgEOdLZblSB7RD9ag9l3n9JlTT65caK/9xyLi0Xk087L4vL1yulrBKXlERMY8T/JZlnWYC8qzK0xUiIdNCjTJOgDjt/6Llb7fR80+N/9dI/wYNwH4f/4xe+FeYfJDuFDBHs2yX1hvL+giCQ5pSBmXlDJGWEzR9ZEtBcsgoE/SoOnopeYYAjo/5G7QBoAJTgQtVj/oS7+W2AQMSiLkibRcRgLNNRi7HDYg6SY3XaLRRxlznvLGi6d1wMmsRloxv9DAcOIN013p8acfeiiNKt0L2bOhr2ce94FE3cLGJ7Im4m4e2SzbaHBFxP2jzqmy+SRBTDi8AGdVvK/w5jiShE+2YKwK9cFCaoyC9aJjNLFvUNRGIyVNyVh2/ffuXo/Kd/firprQuvx8KBJyF/HX94C5ePUZxQqmEjd6YjgNpdnEvPSteavPpdnEMpIlyHXEPmnG4IsjDy0hvQYDK9h/gvWBY+kbGeY+u06Cd/Gj70VBBvrKQ3MKHz2tSolDLVpyREHQbrfLXQXMUoILodkcCyDr5SSSyOpcICFoXDGWjDmJhszXJXIO32RZGdQr/j6l95gDnuz/CJT0AvPIL9LezOo7XYLhmTQ2Xsm/idWrQuO6JutMkCAEiGDRW7rsPWy9h5mQngNBrzzq/NQJhSWLoIL0Gb9UlSWGtExyKxmZo3RCXn8sgkA+hehrCgjB4hJcWPXCLSvsnAKm42AKvzMAbwV1td78a33cNsYOaE2PWI/ZEwRezJ0qBimx3Ef3hmmH3CzsEmrc8bK1z62H9JsCbMJH5MxhBD2GPYRdRtKn0kM5gYI9UnyAQ1Es8+SN28MTrfB4rGBTTXQDRpFvPc7HOJEm1iqGw3Xjq+fPUE9zS8LsABYI9zO9xq0C3wWIIKh6DG9HThPzGHFQrRVUEzJavP6vBB4RDU5LWedPmK+IynsAl2AG+k3YQINK8CtTC8IHYMIxgPuQRr5BLLda6lMUwhiCCAxN1ABTccaH839tWmenHiC6g8d/kX3O2FSyrtAm0YHGG0QfVVbIJ2+XT3b537a++6femTeEu/1PwgnB1+8tPvP3n55eMbf6yPvj/udnT12KPbmOMuw8fRVgD93lDDHGMFKPHowdiq9Jf7yTmjFiFQ6FDChntGusYyM0oY+ymRXg1GHTzRgUPVOJ5iEaGUzLC+INCy1tUjHV2WEEbZHTB1W3EAq9VxB5dvbSCpdjdjODjI5gcCCoEG7FNqdtjVcINVQ8AEW5xbSY6o+1xEiccOkfXMlmoYeIUtHOCeccAx7f706Tf2bqxdPnCONqrotLFnwemvYSUx0Amdku07KRA0nNw6345O5VM/h3saXvOx2BE+hccVJ7exwzCIs1K/A9rgR5xIaE8triXLtHXC/wae0Ihryp9/Tvs1kol7mF+zE9kceW3B5t6kf4F+anSlmPkp49sUp00J/yvM0PVyPvLqrPyQKugpH2qNKg2+lGwZmLOMFZJLHCE4ByOrDRUttWEOMiRl8fSUA6I3difvun3pK1dvfvQ9/86qzx+EexB+6h9+6OhWu33p0nb1g3q6U4hWXQgCkAOF1nR6NR8EIL1bQtHHReQUtc3V0KJsJFeSHlWGAtuE6enhI+msmCcdsgFLn6gG0fuZDgX8EEfSo1btrpiR1TxbCPhFny8AXaENMCZQwM/o5nd94zD4a6h5xyh+AymGw24FCnbnFf/lBoaJhYdPuhVKJRJJr8jw8NhLXB1W7/gi5v2Orz2nELFXchymbcLdu28Rn/MqVonc/6VQUKER6TNq2++O2radvl77wusPb0ANNihwQ3HBU1Y7EQt9Tz8KilurbEYhOV0nGk7XQkaptaAlQjq7Vlb1sreiM15N5CO+YCvp3adkW6YrZQzO/kjWVV+XngO/8QVjy5nySoJf4ZyHqLk4T3g6NWVGWONVzUwzBRkFdOIaZF5yIN0SRQBp8jsPPX/pyqXnb/zR45f+zHMv37NbcR4EAKr47d995NnnXn72G5cuvNyGTwFNZN18LnSTAmRTNPE5plA/H+Ke+rqZX6i9+XXFYw6oySFUHXek8yllycTPMd3dRdSVmfPXmiUS+XyKN8ILTBGa1tuo/lr4CYYBP1XZIIsCtMNiXWFWG/e2An2SPi7qnqADoQ1y72jhVKFpD4XcGiRxq5sgdq5ky9pXMeUK00tBG2penNrBnN+YHgzp5C0X0VvqOyD7FvHNRiH6xPvBMnaQV+COYlyYgaA02WZTIkbSx5pkKhMpPfJ09blnB78VUOywtSvy0D+79xbcNwTynBzhqKFt5EFJ4Y52jqQQYwlwtKq35SI75N4hmPZrcq5DSjdW/xpAnRUOaPkFhyXl2dnp3EdgArjAJajBrhvOt6eMreiMlhKCsbIwZGF+H6jirmMDezYtBd/HYYghqInjzIpZEiVBB6KTWJQEbYZ0JMoDKGRYaWTkbcAr118+d+6R577x6x86/s73nrzjSTyJB+FehN/+7GP/2kee/52fe7ShSdsgogLZ0A9O2s6GzVbfg9j6NZ4mv0XtSJOdDlSBe2PM51rz+hC1NeES3MXA7HxF56ESvAiUYKtnLDkGOiwCSZdE9gT4HVLx60XNjr6qZESSGjPlRxHxBV0ABEbE/EYr2ogbO6rZg9wyZlsIv4Lzq3zoZlLJiGoEAb/ZFyzCriHsiLpnQAPs2diQvTS4JnwSx1M2iZdKUMVAGbmqGzXB27UJN682mSWrI9ca1CBnTe70Pk8gcukDOHlhm0jvQVi04zWEH8MXBacnOM4MFxdypH9y9NA5FIspkelEhmzPOHiSRcffmL/2tJAtuTlZOWMCinuK0yAT88EQPgOSeK5OiCBX+1A8HW+Z+awIauklZaTPp0jyBWjjP3GayqES241CnaHAhZ/9FcRKXZx3tX2ThDDU48XOQTQDc4yDDwN8dM2iT7ywv3F5t52Tz7zwj/EgvIXh05/+2PWXX7x45RvPfrXJ8Ri+cU6kHxhpNkkanQehkykianfV0nEViPhhELsTLPb75vMpTuD8gwBxCiBd3jVAxGDrk5AAMs09TemuXaqj0pSXpnSiSXEdiyYtBVNN1g20zqx8GS6Q2bwxtKZAzYBRb+BwvZ7PrZCyNz50o1d3qmh+QkTY68Ip986/a/om6bbynGsvUE2HU7rzB990Hrdu2AVi6js4FOkd5VBjH02D71L1PqpIKB2LHf1PIjN9WcYHTmlSLUI8opFbhfJCaPNw29r5y+3cN5/KJ/+EWDggOD3FMcbNI0Cofw5rU8dMVnlTih7gz/jgMPJw/gUrLAo6HMZrkf2FY927ydw5SFSyvz2ZvEmh1K2mcHVzfNgSJKZqecfhnzJFUhGWFAYOLaWNJeXTnGsrC6Y+guJ5eT0lvhSi5mI5+HqNlWCvNcrS3K0bzEoE8vxjR8e636P9uUf+7d/8+gpVN/AAACAASURBVC/gQXhLwk/91Iee//rzjz3y2B999SXZ0YfdY4UBWzdcyDiZMvynbTNA7NqGIcL53VB45gp5ZgvYmdTnuBgPoE58/ycMFWZNSauJdnVo/vZlMX4qT9IImhbuZMkwcLAMjnyMQLrNQHQsOS9RnflQsSYyk3nDEEMbNLyz0GGEO2OGMSAsB4FCCHO4bwTduGVOoIpkcvCtFvf6dO+QjZ6GZaKNwemc93bnN3uM9lz7UgqZRuCXf5gthGvoey7wxhrg8G7kuGMOQ29VVTh9gh006qweSNJVLjyj4f7U29Xjh2/dfEU++TMHZsxbGg7Cqlcb/gae3o8FsTwDchBtaE05aLc4HHd6PZTOnCebwSH+M8+zrBdUczce8E/Orvlq83JnRnBAvjKkFEc/5zs2dLZeTNaOOX0rFbafG1kjljVRYNg2uLZEn9OrscRfFkAEiJQw+wamGOLzwMlYN76v0Ab5vgrsf2P/pjuVyh7Y35bT2+3mzc88+K79mxx+5mc+vKnqtsn53XjpN5NGvJKPdB03l0t6FPaGYfAYQprNJIJu4VibN7C8y9zjGJMqJTpULtz41o2Yk5qJPV42523SSv4JoskmEPZ+sopgghSx4+R3RYx8o7Las/hCNEVLnhyKMD/0RH/7tzOfMhK7wvb7y+2bat2ioA447MYL93CkazbqFR37JnH3xnTBRrKF9K+fSFwEEpaPXDG2XsT95SKqjHXioO9wsAU2A5UhxuhS89GTETcBKcmHw28yTOOnaTaUh5E502QE6k9aU9Vzl85dlM/8zwuOb3l4w9xWBbgIfTm6n8NrOK4ysUhxzemMJxbpXBbR8CG5swJ5cVLaVK9lGxfM7lRc5tBK0yXNx/RTapfyLrQTd0qdmPT3u3z43ys95KJyw2sXmCykdKaXsXVCL1lBHP+QAsghi9ohLMme4ZLdIYi0xCruDQk1VFOMuUJ2srXd7qWbevXqd5//4d/42v+1qNOD8EaEn/7p79p032TbHx+5IAag5vaotmHR6Yf7Z6Np22ea9PUtvrnNon0Qb4LW3TrShRVGk+lHoPRw+GBiC4s99bSM7pRO60UJUSHaNxPWnwzUQcvU68YKD/z2TC/f6qqUzrlI9mlwvZ79OVz3L45OhHXEI7xHY7YKdgKNvNkPY8v81c0PwL5lJ1A++1rcMgSA+h6NepaUMS7bcBuMd3X8J6Xf4oULktJ58N04B55QfTRYU5U5U4HHQqsYyY1bl453t+8TtIE3EHAcA69gm69bmFT1GaYOHslADKstkpnVjDbKzzuo+TMeTyM/08744xDlMiyITfera+W7AzQjt0S/uUhOUKMTUDrKWSEX8Q4BilxMTY1lOIEJ63+zKbh0tGaFr1/U3a3VacPbyhE/zi1WQXhEirKZXwrdkGHUZtpImfVIdvrEOxWnxyfyfZd/6NyN0weepG9s+MmffL/sjk+306N2NOyjfa5sEAGar4BOLuNQSp8YW7+7WSUwh89L36krQATSc4Sczzd3DRYGWkYoUAPxDuKbNl6c2oHr8TpDe4ZRBbp0xtfSeJQXltBaoVU3pqgrJkJcQ/ePmpJ/SOwvaVZ7tqR8mXZ4AcIN45iugj7G5nAhYEFXvbTT4Y6ZbCEYLlt8adiIJK1fDRjFnVNz0XsJEKP5HEpGLYmG8U2/9JOaTBsuRE9bKqoaTQBXTKloBahdY9BpagnNIg+OmcMHWcdrUdGuTh9zBf6CLLKdk1u39+dx34QKyF9P+Gv4kt3tByzU/NqHdFJUTqn2QIn47Dj/PDv7ksP654psuUtSUg46jaJuqSx5Kuh7s/x0inuL5rxRlj2a3UgPbbh0wbMosRYnU0r9D52VFwF++3QLL8X9kdAQiC9MdyAlXLN4Wr3wlGhMaKctFXQgwrkEDU2v/PHNkyvnZHf8y9/4P/EgvBHhp3/6u05PT/f7V9q5S822UWxfwzZQmpojJ3uGAtK/E9tdRKfvuyK8O/1u8thV6WwBcEraBFmlC80oj5uc98TIRbDXOJPFwmBE4gbQNDeq8FFFTgdzYgICHBGXko+f+rKTOJASl5HDDBgA4sOw40BHvfxbl1ebZwdSf6oZUjDZlsn2Iv1uDM7Olo89WUr8WvThXwL74jzdZFodRVv1OHHk0TtnFE3+HC66yLYRthD/CTBGcfzneJe3w2hEjfuEP2PwFrniaf+16SZNr/6r/31Bf4/CG3kTiIbXwuKhFtqgq/Sa4q7O0xPOq0jJecNFV2R3CHogfjjx7nmDX4j494oJIbdCm7J73zJ9ice0lXQgL1hZOr8K1aogutRyTYuAKBHRAPGS6sPgntYeidOQ4/kFwWHDqIZL1ipbDdzIlGhWjoj7a0Js9ogK5OY7Lx7fakdoP3Llxx66fvzgTtLXEz7xiY+f3v6a7l8+OroBXPFbnwCMEXcL3Sbaspw1b2lV9/2UMcGUDRvGip8C/eUvPIIUGu/+PIVdwBSzXEz+MC3wipAuq9w9gkBG/GsvoFSEaCHyUDFB7QxQijhWDyQDuOYDt8KwCPtes+L085/0lu8KNawFBB004Qk3WhgWIetIWA4E6sqeD6pQ3B08fZtDTYt7NZB5wlME49NrXGfyS90w7saIRgF+BYjDiy3fw+H9AOpw5Q2UhDzItkED4eNVhrxIUpo1JkinDDx5bR6KoqFt231xGtbDjK9eV/hu/PG7caOwnXdVMKGEmZitFBlwHIxbzB+V7Ew5Z5wflXTMNoalBeJMwwbXrZxEXXzOjblN6TjkwjkZOaq1IxszZmsHzN+i8NyssXTeVaJ6zAfBR1W8P4OYJKL2suK9bHAGLU2ovTL4irOIJjjCuKSTBabxC9HVN1EsrwjxjJ8yTrP43/f+0cWnLp//Y1x+5sa7gWt4EF5NUMVnPvPur331HS++9OFb139XdwqBtA0SVoSFcaK5kSNcR5lgWCyAkegRdxQ1tmN8m4GO5HZKWprTkevmBYHOKzoBEHX2OAwGZQtHOG0OWOtPUiQa5RVjgpKL7PYOvbKdgzL5wXNPdPoOAkBIotMQJrDbSxHmDU1umGTJEGj9apoosDW/dNzvFZUENSSZIhZ+oPYRuDi9Qp92U/Ng3RNPNfyhVC5VbHizqrmYsPdJfMiNJNZoOwiFWG8oyzByzBiTxferOeQjshLZYkOlKNiJiQBNRKGXP/e/4X4Kr/dq8xKu4/gf4v02dVXr0VN0TUnqXzlGpEqxssOSWBUOpJtx93AqV/HsXGkuTE5iBq4P5s1vKIvSC5OZoVjR6Sm9RYkkPrXOSQUnJkItaqUOAqHEbgK3L3hGuox0ooQRSTwdjhOu3/3MSLROMqUQQghfC4YHpf6j2NgqAf/bZBQB4wBmxR6pron6WD3z7lfOXX7xmRvv/uYrv/ruq99eh+5BOBx+4ic++k//8Qc++tE//NIfHN988fObQOllUXWIX1/PauJb08siVEfGSN9c0JP4demf3n2Bnt1ff3t6euc+EHf+6Wm+OhOeIplt0A/FQemmoQt/+y9cI11l0n/lJzdnWzUtfBGYkg+bdJpGX2SljLQDYhYCyZwRitzT9/ZFePXLPGwjg7+INhJbsqAEdpntE+Pq7vHIz8062iAwwcYV5Vzs/KHUhGX3bjm+l4m54aQ9tSK6OjPZmhZTjdchcfPv5eau5qrmBmLTbVMSXPdLeMMrpP8m/uhRvAI0eyFOT2dIofkngMkyEe/B9lMLGf2s8ZkS2S1jVcqYfat02KNyYLU6c6zMFcx56cOxddibTAiLUjw9LBz5kVMeNHJQHZKHR3SLLK/tyin1HCz/B2Cju8I4HfXEmL3q0YvYaBSZg0defy9kAwbifY3eMhOZWInuI6qePXlywCkGscEWgzwC0XZT9DNf+fnveuJ73vfIuz711KfwIBwO167hypV3Xzh35fj8Qxeabl3tiLlouB9GceAgM0b15Ohvly17bxTzhkd8nngpMI9UCe8KuNFi0A8CA57JPkETlff1qkUkT8jk2MHmDXg77Cn9S+l8ijIrk7Dc2aoi9vRizIZFSU/HZfC9Jm6ZUOOpxnMjG4Op/0Rpx0lc38dNXxpHYe1waXYOradem+z96ZTdzRujOHMr8dvAXPf70dxODKVW8PViowi48Wajwy9qGdXpTbvDZCEI56WdLJc9bOQQxGkpDzFtUhjCakU80QtUdwrVq0/91MToHoc3/Gsu8gS+cDROrHg42100R2suzfQ6ZWAocFfhbNJDT/UONHLoCe3Pakp2DWoxOuMj8XjMdKzSE2dJs9WFSo9zcXH+hZkIaf7+dGqSCPa8ZLx6hYwKLa3up3zVNDsLZa+kFEYc3EzM13aNOtRvrQBQs3NErxIf8w8l64rDDv/JFo6wxIheFPzF9/y7D106ufWi/sCVH9brJw/OsCzDJ/67731u/9Vnrz919d0fPa/bZl9/B/q6lfwlFE1zHGP623klXgrdwyOfUumzW3OklxRB1P8fSxBpxopN0hBdAqiOEy79oel0dd3i807N1kYQIS0uL03qqksrAIxMOtQtvGBgxvqKFjrrtkIDjLcbIG0EoJ4FzbAD9j7taIMozVgSr+buyaH9kHNn1YxPOFLEZscoyw0DU3PS2z+Zrzxx9CxzcGKMCvB5Xa8M/+yHVvjRyCg1cbO+Hb3nvc39b0OZIIjkpzT2POn6b/XXnUnQTvQbRE63N163vxHhja/UEXB7yOglFFgjBorNBOXREois2LEqr1RyqKCJRmytxxGlmecZiGd6UEAAiw4XnKXC88yCiytd04hxd1fQgnvEEIYSx4U8S9oBLRaKeFUPVDEdxXMBrfE6Vl7TvBJJ9/Ar3+Y1p56rlkNCIU2sRIYahCcsMrVXEiSJvRzO2AQv3zre7U71+iuPPfLu/7T9Z+99/p3XHjh2WPiJn/go9nJ9f/o43nH8+CNtv20C6SiBTv6BfT9HYPxBP8MXq0NWHZNRVNW5MOYwaRFFYPDcxtlq9Yk85pEldCYJHJW9SFcjrDwUAXEXqxvOwQXkjLAzeiEGNH0rLrGuUlsyitBw46mrQLdqEOdogtBP16bkLFmyuN5Vsn84TDHYYX4hdvVnxwddqKhdETtvXgSeICdW16u++ZIARNkrITg171wQekjfju9VhVZswRBqs+4tKIQHMUG93J/waYyUJU0ZkMA0Dk0P0yuAI2ybyJXP/6+4/8IbDzh+Fh/4UXxBkq+Gh7WpI/6JnwkK6pxhhDMgxRn0kevugcKBcnEQZx7kzM1ZIiGYaIluobinl+mmxI4r4MDCBXZwEIiiyTheBJeUqyY70wRQMKwyGyUqUjWcbVTYIIUzYdQ0BkgYBQDjs50BCMB8oiSMFwVzxUhKQ0yrOMhg/OFYZ/LhQJg2CI/0ftx2x+29D9+8cPrep975S4/82ofaR556/rP40x2uXcPD595zcv368ZUrp1t78fhEBibAEOKMKcmKoKYkdahDxxRE0JkAMd8Dc3ZUzLl8TQjcNsELyB6RReSQhcNDIGk4I8lLsFM1pVxZk9Rpnmc7FpAiEoXqH7WoeGLURylvQBDhV2WnFJjRArZkWXNvhpXKkQ3XxN3hAJbROShngV1fEedW4hRJcV9QVIiwDzyhfhOXMk0+0tKZ+KlaNr1spQmU9wAoEaoPXS7S0RIBlNSxATt8VscA8dQVmtqo8ytS+q5Qm5aCjf2G1hb+DPdFeFPMLgJsk7o9ZOqgmM6Pyo9Zh58JC+YwI55Xl/2OiRMuibQzHq1SZPUUJNWE6Fh/e1cHZDHTBaeAzBsZxBgnKpL5N7p7YzPyss+SQLlJ5y1zTbBj1DKq1mtU4IIJdcFYxMkE4tDBU2M1+3o0YEE4wxZuQhTDfZQzBeQQhNtHpz45uf0r3/ob546vPPXUZ7/7Xf/Gex9+989/7ufxpy+o4v/51fd96Yvb73z+mW85/+e3V1RNTQ0CiKga0BDZVFt42ACOriUhAEceQ4v7YuGJ7NMnCNSnleNVNeC5AQ3CkMJLVK0Tx3QFJeafSojAJ33CRXk524JIOLr2ZrK9RU0aLSLvg2R7oFrBWo3QfEZJjXR8gFCx6fhJfNeNz6eQQ4NvYcSVX6TytVklXbVj7G4k0CBRyUAPdGDE4Ut3a92oFP+pSOYN8/NIXpbeIWzDsAoou2jQU6W9pJweR+jOxhwlrpoEHE+Qqm1KihvkYjJ2aSm7tl340v1o3sCBaf4GhB/C5xp2foT+Tidj06/p8oy7/Vny5nJ1+pmOvyLv1BzwKuWfca+X0See9jX2Q06jieYQWU5fn8I9/BN85FVtiZezuLWI6ubpDZ+PwpZCsxetFA7g9GzSVcQLV1+1yW/UKGmZxo1FpvH9lZMc+iYaHXCBkIWhCo28drJl/C8OusgcJwIRQVMVaefOnZ6cHOnWsG+/+OU/RTd2/PiP/+i3f+APfuSv/8v/6W9/35GcbLvW0I+8kk9o9740d1EB0MbnUbJnKBHHW3mkhJeomMIUB5ujCMD4OEgdaNHmmJ+YhXmqAuV0LhyVBjjlr6vYNJZClh1RbXKOEPuGdZYyVXCbUHWum68YR9qj6UbLS8fq4p1qQlECWzhoMIItAw6DAsPlgrYwJE6o8n1fxYGUHEUBpCvCuiuojG/Juv+phjuqHZG1I7UaDqejSvO1YLka0brykVuzcMi+xbdkESYTusEd1i3osMmRnyE2V34GZFWi/1m2xaD6bw50+rpQwl+DbGgFV472p9e/ePy1J3FfhjcLcHwXnnkCL1zApXnP4k6mjsAEWgk4RQ/Qx0gefooMDhY/zzzGwqiiql57tPxy28FcBUysaIC7AhmLXPZzm74StxGSGNV2ENCNgwyD/AyLynagXEsfl4r6S5bxJxQi6PdUswyjTnbxWcGH+pUFIcrF/sAvH+B7NWyJ+z4Io40BTToLtcTQLq3AC8MWRikDx4j/HBz09tHueL+TbbfhZ7/4s/gTHf7OtY9JO9Hj3f7y5XM3X5AGkT3GuWkHECrNEQPG+RSoNP8emwGIPo4tDq0AkGYjbmSLmzYIUsDv7QBzNgVrFXCe/IiBgnMekyo0di9Oooa24VOuNx3FdYQhBATcfZYRifqqWaIQyiLle2w9n1n16j0cGu3oS0GpEGfCZ1J4H4EtHHQzWACOjjZc/W+2UgNhhJKWfLNnMpP09H2L0yUVE8ThlETA/qdKd2/QydV6pZhqoJB91BaOmRzBcJ+Y7US2ZEchC5MOedO7nbcEx3z0nZculjQIEthUNoDEcEJtE9DIbA6r4uof/i945M/J138T92V4swDH+/HsF/HOH8HvT0/Kpoamf1K0QgRNBHf4abGD3HJKpy/x9U8FQvVOcGEFQTQzKcgAZyKGRFPUP+ctWbA2n2x8HNdoKEs1SyzruRmeULo6AIlhGCSoh8OGYRWzJUQmDUW8c7EoLUwGkhhS3fnkV0mhxB4Rk9AFdgDKkAIhsxlbYP5JcZTLQyBooscnerprKrKhfeqpP4HWjh+/9hdERGQn2/Hu+CakYaeGJ5IdQkSRLRPi325tK6sG62yBBJhwo4UmVjDOI2Ks4Bwib6lJoBxQPL1Z0lxiK1pkyZYYJBtJtcn1H3Q+JZgvsQVJ6sjijXXgsrJzUL0C1VMLKllcyNEXcTmxslkdXK+bQ2i6biuu9so3l7udoOv4ng4yeGzx9TW6KMyU+jjy2uxjsPYzIY8oGvsCOOCOIJJwg5tGvGK217P5de9e89wbGwEO9x3S1NtDyEFjpJAlX5kKefxoDmieAWNQrTzZn28XXvjC+Zd+4c3S6687vFlHZ76Id34vnm7YNrpb7FVurPQgK7L6cw53pL97hoceaYrIqvI9yCItZo16XKKLyoRRev+JFMn+p/bU05zcH8nER6IC40XfUUiqhm9LqjSzJAKLky8NspH7k3I1LBKfwJ0Whgjct8pfyzgu5Jc19L230RiqReh7sNa6UqZtvXL28bZArCWUhLNKyMPRRiiJXrmTc62p7rXtdtuPvec/kFty9Bz+ZNyM/j/+rb+kR9BNt3bamrbjk012w19TVEPJKnV6uIUCNqQIN1J36qQpVOfPGEdBeHvA3yO9qKGJHUwMBhj+GfbSD3tbBBUEmkcGGuI91ZdOrAnLYBOST9O0eUXnt15Ktmm1SJ/D2CH0XsnyyFLoxbhHlFOydiwHZRltkFvGqIsBC79INPwh2CXTXUMsuzuEDkdLTt8w7gdLzptC3GCGEIniuGilood7aYvEzdtiRYDo2cmDj71suQlKDhxbbqbQQKj1JBxzmCqcCcoEEVo0BZsmPUNrAtCGh//ga688/K77Fm3gzQMcgHw7vvwybr2Ii/33pLYPoo0DCl4OPnkT4MjhCtxVNSRNqkpve3qu+8sMAmLfDy6SiXPI1gxB+KmXm8QosWVurlxdoPcfU8XMMjz51EkYgbTFq56XTjVdyM8iZ0VMGKAm+6qlxZh0vHUL1Y0JBnSwv4M4GzzUCFUMoznI4NdQ4uW5R4JYi/sL9PHRHortajv/FZx+4PSvPv5Xn3nxmW/c/sYXv/jFqZX3dbh2DRdf/tBOLp7Td+x3J7tT1QvtqB1D+00LAFy8FqmpMQcU2WlUhCc1HCho7FLAMOgQG5alLxSDEQZBkGDHYkXAkA0CzoqVW86/J1bM7QD/mICRRvglyqQpHEvuMLZYpA8+DoF4ExK0KVRtHiWF79IYT30bJTt1WuXjvAZp37iW1OCIItDDJsFnJDZ3Mk2eoYE/WvLGUFBxjAAYfFh8HxxS6Rshj9LMjdvrKGdyHZ1BCeg2Dh9f69sCL7r0rMTLaYsFBp5+jpmhAhG9dfnihW+8vJoo90t4Ey8HuYzjD+A7fxW/t1LS6/OxhzT5XQCCVwFH7hheTXEJNNjaZwXPmENy/hlDcDM2nmKZRpVoKUsShbkyUsgYCBxqNT2q3StotmXjxQG2/yGFvqIJN8supKgt3NkK4q+8cDSQM1LhGYv4VktKdLSRE/v9DDEeBFskM+TsiSBDELGRkLad/llAsNPdo+959Lee/K3v//BffPSRx1+8+OKTTz459cR9FBR48mPvf/6xK797enTz0m8+9tyPypWbaHK6Q9P+NXlRhWyqItLK1B6TQX0D2/92RbopmujWt0XMBGJTe0jTVqSyGhhRbAIZV4cJgwYgjICdQ18TPiraZU43qvVhN/6k4M3k5pOaJ55F+aiJl97D5u8XxmFaaUUu1MQVZTxlSz5ML3q8QB3afAldCKvVJpFlyz6SrHH5r2EF9qIAu5Ei1ycwwYiLfXc+7nffCK8QsW6xUcKOIHS/OIEGuH0i77Y4QcJAXBCbTwxP9ES48SYf1vW/Qu3VOU59voAmd4IXZyIPUb3y7HO3L1+U+9t6upzVb0y4Bv0tfOEFyLkw0QNJAac0nVJ6RNcphwg6q7OfgtZ99eRA8ldwVjNx+FrOnhywjQmNn/7yxcSVw4F4oTkrixW6rR6hn1XJTqNdNB/kFv9J8jiZT7gYWYhVwxZRbeuK5LQxudH7YvVNaX+P669mFs+vchkNsEuHCsL9wrN0HUHeG2qbJ+G6KOYK2vOyDwcMm9D1504QfqbNivDE1rqHx+k5XHn6sacffflhuSV/8PUvf/2lrz/1/FO4b8K1a9eObz/d9tc/8IXP/0ef+H//q2sfu3Dz6PLuRMlPQuwL8hFh54zkIpocNYq7Rno0mKeDHmIXmefDLPZUspPp5LoxUhqcZiAErgnge3nZXcPqk1LcSkClBMw0VS+jo0ahBFcmp41kGYlyMSUyrtWwf4y1YhWxZTHWoveNa8FYCh00mO60pTndIjq5lNIXWIB9gyEPOsbiBo905cZAJHupHqP2tTa6mJw9PASafTvcUTQicbyFvTrgt5jX0geSCMvK3mBQUCIJrfAsgUOWIaNWUsqGIOYdSzgbTdNUPmY88EpzI1EOjbaX/W7brr74wp9ewAHgY/gN4OvHeC+vmlflyZHpZwQATIhkBRHip8UOAo58WmTJzTX3DDhgkeJVikzgPwtKKFp/dgstNdcMLJCzz5gAdBSWHhHaWDEJwJGfbrPzLL1AdeItAYvMylcqPxX+GdLRN/5Nc5S4zTB+z/TFLQYZHFgE2jBJHJsmJBUGgHAwASAfdTFEwmTFsZQ8PDgLpTdsJxfb9a9e/9RTn/qh7/iBD55+8NzNi48/8/i9urT0Ex//+POXTm4f769fvXj74Y9cvv6rordFj9rRXqCyC908Wt36CZSF+6f/pS++lr+GTphhABorq5kjaklPvp/9FAxAcCFgwfiEigMRghQZ2YDVeZlgzodTECWaySshD8B8WpeIgaWwZIKeogeeikGERJldrkEqTRmCxDoTkKOl2uaF0HUajkUMNwwm7OGRTpTY8ZOutqHgrZbNdX/2J4WZVbaG+LQKbalsY6NEtkA2dLoEkSuhlnySZU+Aw8+wgI+rBI4xAwwdi+3dWG0wgDuN2uBTV48Oh/0UohlDR4OIREcTLM2egjnkxoULu9Pb73jux3F/hzcbcHz6HL4JOO4/Sd16mPdWEs2ENvzp4udMTynzzwWeKAQT/5Sy+n6bZ2SdzUyK+WTLjwqYWGKOmX6JD8AnUKbjLfnDbFIIRtGpJgmUOJ+cmKEDAH9pKs2czqH4O1fqrmzA0Bo3W0hYMpBfSW2V2v9CAGdDhQoMkfBLqls4EvECXohEQQ5BYLYNWGIz+NKIpj/aiahsgiM9OgEuftuvfduz3/GFk6s3Ti7JdoxXHsUnP/nmvrhcu/ax3fXjdiLtVrt40t7z4uXfe+JlnN/v9vt2tDWM2zLGUVK2W/Tmi0ojM8bifMohI4chPOaMeDqmwShlnT6GTNIx15WFwz5kL0NkC325nmeOz4SYDAxHphRPzOdg0RdFBzpdMdwl4GCnjcgyp6j98i2d4sBhBMkmqFF9+PrzM66uRGP5hseGOGXn5kc5ZvOGEsjoPA0cSLoYgw68DOBibI2omAAAIABJREFUH0flz9bz19202DncM4NwDN/Y4RhoI57FvqLkbtKPyajVx9049glkkGyzn8LyPr06oQ4KHIJMaINsGzRaeaTTU9nj9jm5fe78Nz37t3F/hzcXcAD4UXzpCMe3cHOyTPQfOuVwZNCXD2eZrRHpKTF0JulpJpjpZwtEKa4QayY7tLfC6hYHniY+U7pOhXL2s40cmpFBZ1LMGwtrTUIJss38cwV8eaXuPWQ7meQf04OkHQB6O4tElpS8Gnk/JbK3tFFyCG04vnFdYhsxFWREdjZyoMQdjgDSJnq3lxAQGZRAE23Qhtb2eOHP4PJz2/HpBpULX3v46KWLD3/5Dfhiyyc+/vHnj7bbu/1LR6doe72wP33n7fPPXt7tt9PjfdtEjhTYrG7amsouA4VAG+O7r27JoO2VMCfw7V5hVHDbRv1mbNpqGR3O8AWGEsRmhdtREKAEgRcrEAFSQwJwUC5SywER0t7KnIJoQiSaX0sCDTOAKBGZEktKWRb+Z14rGYKw2ovDJgoGHLGA4nAH6ebeT4fNG2zVGEwGFGiLizcGRoFo442VQAx7+37sZtBnmwGH388xsgCx25INKsbTNlmM0uBOOsFrniLeNKSOCkr2mnPJFLKfkZ8NqZYxPYg2XED52Pujm+f3xyfy6Nf/Du778KZ/Ue4Ix7fwiql95Ue6IFdOL3hCZ9IzU+5IcHY4m5ue9ZCDyPR4SrFJF8mLXD5nlRgIzVAJSNQ5eI8xt87EoDgLthJL/e86VEuDBegXRM8tp4UkZi8B0D0ylrQlxVDCika85iYXfX0bJugK3bWARipM40AJIXA7FYtvz6aIUB0CbWAcPxqKzB5nNZFaXXlqb7NoEwX2R3r1Gd3tIBAcby8/cv19/9+3vvDdX/jPH/v3e3Gyk7bbWtvahqNHH92dv3T8Le+8du1a5/mxj3zk8YcufeRb3qOySWtQNNn69seX9JVvvX3hqeOtNd1D2u12/pkLkP3WtrZBRLGpNB7xPhQqQ0iaBO2Vj2kyqHXMQCMX8mIag2FKcrRZxwRTQccNQe+rI/pQYx55NI7XmqTuSGDiJmojHN6pxF5CUZdWnZ2i0RF+rnfQbAwwUu557XEjq1XDLRnjJ3sdJjP+6Ft+pUZGJx4vt1fpQFyOFUb9g9IQCfygSnM4AgcZEelsp8vCwwciu2HGlaBhYDDnDKf0mjgHOi7LVg2vgz8dpXC3mCdHZ+i5NKAGlbj6u0X38nDUacKnVHjaYJpT4ucQTPWJfU1qPB0TYS9yfBsn5/Z4O4SFEHzDww/i8xu2Y+xYh2YwMdIO6O0uM8roHXLdgM2aQ3jFF+jdGDBKcfOjiE+uEl4TTznEf7Zn9HS+rrRsvuCwW6jHy+XrG0opyVE0GHJBwHzZeeHJm8aUNyXSU0lkyS6S9lYkC0UnmKSmgQxPdIls6EH8/S4hALdtpH0WJQBiPhyRxXCGmyt8DyXewokgUsiHtGUmjcgs0gTdHWGgim4gaRCoiMjO0gFp2+7cUZNXABzdvHDxL33nzd99artxXaBPP/e1n/mVX7n28Y/fwvXzR0cn2toOu9M9dipHKhvQRAXStAlENmnmmCnmMGE2g2bGCTNUEIHT04ZL2XmBaIqDfDKYg+1HDIcMR220aeK7MLEP4jyz4QSU7hMANlLg4tzBQgCfJ5JSaDqZxjjLwhHFeUaapf6HI3RnDCLIQXpfEAwgMkrmp7S87JFvkQxAYKvW7AdqCxQgGr8yy5eyyH62CvDGSvayZG8JzYYQHTsp1VF0P4og3GBQaU8OGZvgNLuG7KVXHnyqxY0i+2zzUEMbe0c8fuc6wlWlmII2xE8Hxj4cRWsxKExjjDR4lAE0A2v+3rjWAH34xf8Bb4fwpls4AGzYjsahNCA6MqELrZnSk/mpHvypd2LodOllaMUwCMrTsBAEWSFI8wVgc5s/FJqGlT5TIlvr5srkiqeKwKRLskJIoKIug5RkVOIj5XfmSfVMEF1SokXEf0RGe+B81Jde5q/+UyKv+LzqK94tGoQPen36/R0qAT6ahBpogRhyO0vElYjhCfdIlREfnTnQQ1YQZmuyGopANH0W1zwVsAhq+TerR1NAttt73R2J6OmF0+u//lsQbQ1o8r7HH/9bf/Nv3Nrfhpw73XdTNbaGJqKbuG6xd/I+I6x+Pll4Zzomfl8Uw4omnK4+vGkCp2lva06jVLGJ4dYIN4mo8HPLRxMuM0iLK70g2jpOrZhWISWKzWUgLzJjy7M4CqJJ6hre+cCYZRjhTSGirImmpW+ayN+kRUafQ3xZEETvoxMGwfi0QH2DdyQRVgRUMrt/EwMKUHYqGmE+gXitiSeg8O/C+53oZDnosKAl5mG6sBTfQ1Gp1XajCLl6xJdjjVIdY7GNhNu1SarDllvnZDFSPgSSfhJ2GKQ2K82AoWN5j1mqdEeA6vhwn3b6hj0UkLhd8z4PbwXgeBIf/o/xh8/jxrY447rQcBSWiXcGE3fKMjMoivMuCZIunjS6YkyZrHQtr0RvsNhxy69QHK4QKG9S8KWiUxHlEZeb2uKrQZkktESXBxI1Z7NEkpC1ZMlEpIuThKYn6gVTBYy9ZaWlJsF5RAxMWGqBC85eHOVoaGL427WbK6yMgRXQsYbBi04vxp+OTQq1xI0Z0Tdk3qDGubUm9JVYPxgTEXRPyaGTVAyOpU0hdRiAPI8jaLS9/1QfEbV9HkA3YCfjc6/iOUcFXZtpV4TDfqwyOARkGPwaV8e7I9iN6zcCH4AqTiyHsk/ryIrSmI2MOZiDg14Ygg1mA1VIwF2r3mIBlgogmtuVAisk2i4BaZ+5BZwuJaI2+2IPxSd4r7Y1bDBpUTrCAdMsFnWzQDgdNknIM2PodQ1LgJ9nMWUcd4SPv8WRws0Ge+PMBflOCqGNUWhGAPEhWUW+ZoMWKMQrzBWAWj/sBTocYNMuUgEWDoxA+INff9TGwGUJzY2Ax2USCY+6i1VerIK+9kxInpzbtf328Iv/Pd4m4a0AHAAu4dyH8U2/hKdi/aV1tEYbdwksZrJ55VKYFvHr5m9sixmjENorjxHD1LWrE37bKtrY4s12RpJGP9PIwTVERi1znuYiJD/14tr8FBB20aC6OYYonaAzSPLmkuxcEAi1VeKhS0Te81bXIfYTfjiWoUlgiyiFKi9Bn8u1fs8Xn3tZ3KTYmsEirJnHJKEKOK7hMOaQ2LiQfmVRR6LNtTRcmXddvEk/6DHQRkG5ji3S7BYDGNqt3NrsfX8bLrf2Kh0TY+hbVevnjqKsOAdNm2MOrO0TxjPgUQI2iiaERUrVcz9q6V4dJjPu5TJKBqzOokG17ZLmKbSpPg5BVg9HBYMDGRWSszUoJeCOY4X8Ej/gBaMNV7HEyt01AP9eK3tgQOliDCslW02KKUISetiG7pdNoC3Y0sUbThaVrDYJ+i+7lchch2H2mMwYBYGxb8fyUUgaX2VZWM6zb8TVsshidSdhb3kVKtpOZTt625g38JYBjvfhsd/GHwC4a7Qxp869fkZYDhFzZWk1/73bgjWRiMHRyGHSUZazbBI5PmddzM9VGJSHQYYs+eYqicnjzRJdFi8ae+CpSLy4OlI5Q6n2/hEvdyY0TQ9n5bIza2XrZq8bqfOe3Y659r+hOgSs+9Wpxk9j7yol4QZrB4MAz7iUK3KgP0rzmWEUuZ423uh5FvlOT7Abtgi1DQqRghfzRhWXK1BV4XTWfnmaMEft72EigKp7nhIOqD8tZVM0kVgxgn5YeHyYrW8ZIO3gBFjp3WIE3m8bWTiWsMPeNwmeZTgyunrM4PGTEqwKYbKQ0e+h3QXAPox1NZAcWfRnprEG9hVgqJhhBGIijxRf+l5QJyDdWc0b2T900MDsB92o0DlvLc5rsNYvfqabLThN3mLhH2pk5OnZaIeFbBsF3/T/vPnJ1OHeo4i8va8qz1Vvq6+zgBHRvSu4VvoZPh/HT/XnvClok9Cz5NqM0VSPj03EI5FNH/3628a8gbcMcFyD/BA+u8PJHpckmS4WqlzX6brMMNHJYVWd6TLlSoLq4b8wieglpnSLwJAB6a11hVjUCeVa5nBW0ZNhpVvlmX+ahm7mEcBiKeh0YpAlYWl1sXNsUsjjWUNgHdbprkcjZ9KOSaubpnTcYwKYPTHcgIGCEkj+m/yIupihZeySpGboUHqAe4WJMzTBDKkvK1r5RNG5Veb6ao+mQZCSo+davo2Le0T6o2oLkUgXnnTU2Ih0qbqbpnDeIHAm4sNi/xCBuHB1nwjRgXFgziAKyAbHHKvdIUA74vVKDPMJoRBT/qPp6hEIsMXEGsdLyDMCqbjRCRJ1p67mrg9TXQq+SskUd5AmzePa4cViXxPpOERWlv6T9lMCMZSU+bjsqB6fNwmAIptjiIxaAh/4rRvsJ0E4JtxFs5do7NHET9FmB/OLWwZZMhyy7AsY4iab2IAYEpDo20Jmf9U3YryBLvIx5qb6aIb4n9YUaHSEp3cdcZqB2AS4rXJuLWDv2/AWAQ4ADSenOK/A2QagA2iDn/JPLU9WF3sUbwkGByXF/3YpFYkrQwXDjgQOeKNkVSLyTsoMFFJNaKKB6EPPHQIWEhIx9KjLMcMZrraBXBNDDCnEfIeJn3gidj7WeTQqP5hay1uW6TXi7hFl/fHKFQz5IHQCk1mxFiY/iQQUzKvUQcRQxsV3IJCHRKdFrhDkCaNYPF5hhMdjDoOrK4feESpU6CI3izCkeaEqcRvVKi/5W8D6jxGyZ3JfB+0fT0ELDS/DpJGn7gZt3r08kYVe1yxLH+5YTF2pGzraAIGGh21dhtoP8fq2y2aOpZqh0PB9cq8UMtLRKkCRU5aLB8k7+lCKNZk6PUDAtG4XQZY04tmN+fQKbrN7az6ZEedj49qu2YxhyIMTK0383Wh7RUHqnMBK7GI4q2xd4BA4pmnMGeqCjZCBQvu1pC5ycs2HLyokCLjrUn0sYgturNtJPtlkkqiYgRUrjuhpQqU4AFVl0R/po9FT19hTl0m39jiSh176bxdk93F46wDHP8K//jF8Pqfp6seqo0keZPoZAXiYUQXHZxghBDIS2VQZRjBYgYwhQa2aTs9Fl/qDNencpFwPDY0U89mL9mncvyO/kloCMTSg5LcBmvmIJsBVSF5Gi84ZGikcTSaHg0EWCs09IPiVkFEClnFW+b2Tw6zsqGI4IhDOgMmwUTeHBd66bOdIBFwTAhBuuvCtGW+9V8ka6A9Jo3Nj7b/ZVcV/qeEBn2UGEchtsyeq+2WOKTMSM8o8UBAfIhkFqvUGp2N0G0GH0UIdTiF2jMTb7JQYcl3DDkE7JgiyUDxFigd0cF+NcbBlXCoqUDbnjL7yR9ZSH3kbMrVe9fnpjRKevzqazz+RNKUvSF8PSy+cmHacMdNEqr8L+Pt0iltEaajL0/SWD8IfC4NH+rv1WsyHOGCRySTApg525wyrRj/j2jk0+JlbwAwJxH+DXQ/qBg/2RR3NST4okFSflDjFkyCcthwT1DCZYRtG8+AlxEtij+J5UjvZWhNKByvadnL69rh7g8NbBzh6aPl93cOyb+/yaSaTiJ6hsiOQoAzMAaR6iglsJfq5akk+FJBB0itkmNb4HUOSYqVsF3XoygEwzKFIbeEuSutiKqxvfHQtNWGLUfEtl9/7KnZMpqACUUcZrEwkNc8Vp9DAOiXL+CKpJUUIbSBymeJ0yEJ2DlMvRjOSxOJiXqKcPSi76Bol8lZOR0VWjYUjCHcjYgwpvWORODqbm+p1mJIB+PgU58rRw9qHpUyriEpBHgEOutZXbZ5evDsH5nAd6EXTnOlnWfpMCMbDFRUYmp6mgKOQQBXYBD6IgyHLdbtSLL9aGvzyBo9nYmePA2dY6QMZc30Eks6/IA4slOAWliItaoeXwaO0rk2NeExDXyKsDjH5+fjTup9ikQQXwjJBxK6hM9TYyDpSti2qp4jfaO67HnzZOZgneNsijBAsCzLA6g8YoPRH5R50FeGKQSJvcOBm0k9wTWqH80BTDaczhTLR1CyL0R+hyf62SNNHcL9fZD6HtxRwPIlv+yv4nFkRokeXEo5+L/pey79AFdYLzFFCoZk1OBiLlL9GfSiFOTjHMxxIS8XmtiatmtvmaoPZKQlmZyrKsspWl1+hwHWw+xkarVrnxLeTEbYwWS2WMctgZmG1Cg2zaP8yEfGC6XvpzoH0gP0mjW5ow9ttbhbi1ZZKGXw8SQFCJ/G0y3vfmRn94/Sxxy/urWLvu+K1GqrdGlowB4mkaC8Q1yovJzz1Evi8q7VBeQNhVNDpbeJAoLZvtbFryGCu6JeJ+ViZKldCKlFGpJhBwuqhNt+SzVFIhVt2QcAUmiADU+j43n1M8HHsBXyGljVVXZJq/qrFgKEDLdro2qxXWxwDJ6WJn344zJH6NCI+RJFT0iOlJVu8NwYZYUt/CtPozmG2Qyz+zpE4ukIpoZvT+RQGH+xIUdw44LrcsUtADWs1UlnhEQIDCtnEsuUTs8mYwWijgAnY7LU3A7WfPhSRq4weaacxvUQ0E/o8Wk49yYs0B1XsGvZ1u/vtEd5qCwcg8DeRw1gAZz7Nmj4I2RR7oOgilMvmiKeIK85pz4W5cR1JptsjqVWt1h36yd4YGtK0IgaQRveSGt0oWhWOcdiMc5s6oU/7Mn2TEM9dpKZePbnwjLi/PXF9xz5H6kdxVwygvmqTZg1PPK4u+9/5QhXDAUZs51asQYYQug0k45Ls7lniY8ujsyCEwRd5exFWE58SFeJU5hYzE4iQD2lFFXnM0shX9UZJk/4aJMLTbajRsVFFiGHsSqid6pAYFxOu8MOiYwPCLqTiDlKqsMBv9ugb86HLe2fN93AE5ggTiNUzNpt6tcOkIQD6WZiBma27bfSVfwJqfs+aOq83JX7wpCI280Bw13MHrKlpbAqNqed83tVqkoEIYNYa51YQBggfrG7jSCrfMYTzL8dSEnZJ6XVnJPDHKMKRgdj3TUZHUR3AOynsB5qgxvQzxifDESVp4fij9GGIXhcSvHBDcihNiehtHlMFQQyam4UyTcMqfdtp06aP4b/B2zC81YDjn+DbfhCfV+xJS62Dln/PCrxwSYqx5ku6/xCH+S8mEDPJyqgk710LUetUqxCd9qAUAd+qIIJa9LISq58+zf3NtbadN0Goo4rK3+Aandu3oE/9TOvQ4YL439HPhPZjKScDhuT6RH4ulA0bIQncYlHjZSeFgIjVSbR/0zzJGCgkfEuji/jliNLHKBDs8IxnzMZVSO9EzqwMx9CHAYNG1Wxyhowbc9t2Q5ihDOgQo2bKux9eNT48FuSo4Y6feXYLVVKVut27bhxRyYuPjYNlkYLgCNs8vHtlJrCzsqFJuH60iO2sB23CW8zvOi3LDlGxPKL9Cc3twnA0BdEJNYRmUsqnVhln5quEFa2t6gIpVvBiKGm679y9NQmCwCL8VbPpk2ZuZogUP6q6t4jSPV3ukKElS2NHjeQIQtnJ6XVCHkh2DmVb5LzaBBC3mmQg4pOEFzfmnzYSOvKlAc8kpBCoDgsDsaoo2ibb2+nuDQ5vvYWjT4PzO5ycASXORBlFyb1ayhkxVDxBIKMCBbJ/MKtDVRbUAjR2p0culmUhnimehI+maLWLgNRRqRbL1wOh0fUYIU2Jz+BhTXCFhKGiSt1MF9nrZLz42gW93iGIsyHC501C4QWzAB8J+thLdhfAo672V1xCmydpb48CLSyqIkKQxdrlcTG1qhCINISkD25kTB9qT+j2cgldGKUk1eiGjUGM6OExJHnWifeJk5ifrEENGtCh6X1W2lEQ31KxCZVkn4TsM78IHVPNNbpPCRm4pGmqzyCkhcOA2cCQt0KcH0+SJJ57gk8ln482dfkKEAH843DUTD85G/NdA5RzMaRmxhpwTWIcwsfWBzsgQg0O1nLL6Hn820c9RkCGIceNE9Zpo/4AYFYlNcOVI6ywPagr4Nh8SdYC0/eDj6nbTU1/o34elsHKOChLRos+kskywfBiYXsoH6olGFE6i9acZuQBW0kZ2pXxMIE1hIHNAOnj6XIFEQmxwXNiPYqgmZN+2hIaPwn6hGxNuuboRJu0i/ivp7LeHuGeAI6jHW5PcO61hSpBpvhMeUdWhx4VgnmHZdDMRhGjJMlIOsMMvn6oRJjjLPv7v3lmwg+bUC0DrIQmyK2YpNywc/AtSF4ZZFdQ04VpIVLF07iUkW6ZRRHxA224G8Hiw61mf4++is7PNQycwb1HZblKhhshSBGEoWL8J9FwIVZBpkHBVWacwTWxSpo/aRlta4Jhl6hMQK7AS1YljS7qA9Bs9A3xEObAZDUJyUf8ZZoPaio6WR2MapjxfRBBEn/gHm1meBloIwSsXcfBcjqgg/UZINAtXJCJiY43VLE7PNKioxGMivlhGuqe7vUUGs0nYEHY3jIfzzvJGx39uzDs+VPQKLH2cd2vVCgM66qPjls+Ak8OcwKA/j3icJxkx0+HIGSxgD9qhCr4G7B06kStkm60MFOEbH7NV0cGZqJgi0hvY3LqZMsKlzvZLbTPWYnppDQuMYtp0SNjLI2eDDIZU2VI1cAlwkN3hlYjYOFJsV4FmHxLuyyJVSAil3DhRE8OlPA2CPcAcDyJD/wwPtugJ9hNo+Pi5OywXM1C6nYWVTiwObKMMEHy6jBuknkWgevZCy8GGU7KuYZSXDWhBCXRG4LQJDFM0BZZxmU5HPFaiX8WrBgZyajTEG9w3LxDC43U6twfxVYBfrmsAGKeKCXuqoAwx4TVCFsAjkLQG5W2WtIo95Soj/VwFNoJxOi8e8UTEo3rfmMzBpNt6X0wYfWyn6EkJWwA5NuRxzpSJKpNM5a8MmMyKLRFKyA24oPMyvJBVx47v0tDrLrZ2XPYJNgrLvt8bHadOa2X0TVqozagAFe7V8pXD1llvBTrK3HVJUs9MBgqAj4i86JBjsWbYNti94RSuJw+omeoKZpqYyIMq0aefTrHmSD/pPMmDjsGz7SZkvFHgA/aB5lOqSRXD0YhMGAB/0u4hCPsSZqfyt6/ukLIw9GMU4YjKkMK5+YpknomVj/l9S5Vehr0eXkdDCR7K+zwnzI9SveAtVPclv05PT6zoPs63APAAaBBT9HmFyuscMQBAtbHrLCXDAoxiT+TixNAkUN/TS7C5f7qqq7ZfdUzugZNOGaqugOCqM/q5GqaxQLosENoFrpzVy86UCBA04k2r4NDnRw1nwSslrzcWUyH/N7ozWfzzGTDMFHsdknxQpMwCGLhvIQDRo8PxCY0BEIWhvxBljA/jKoOCZFGStR3VcyJgvpoiF6yKolXrViy/IG6lnJ8meWWK9RRL4MOwc66NOAC8TGjRf9UK11TFEugGzZiTyLsHD4cw+Eje1FYYl1xCFuL+jbRcB+RAiN45VEjx/AEMQC/HJ2aRjOkdBPPDgFGEWo7RJIo57xYIodDMokpjJ9Lh8pHIyK2ItlpNH2GHgYgPJJBSfLfpDd7MmbQ1RqIR3lrg/BBRFzfh93CvEDiU/XpW26d85ZpVGI/Jd200RBuJQ47yEbiFpRtbld011i4MRILacR9H68q8OzrsVxy8JFhWZcI+acueWyXcP5E94JrB/i/DcK9ARy/iO/8fvzOkVu9zgpJven6EdMsE/lZSV8zyWigogoXXWfUeamWCYgMxTDVZy7dmx6bCFZ6ZyLAppQX9I232HUcr3VzhwdOGts6ROVsYbLHS5y6rsRTii1078P6TuE9QkVoJaC607oXKgJincpspxcHljHst+Fqz4S17SMMeqv+8DDgGofiHx3Xu96+Gev3kg33Culxr5vGjolzyww1FZVeygc31lvJHchwHG/sxVjE5pSK9+hwqvBrxcUUnU0nDKSim50+DYagEjKgcbPH5leSFZ1tBH4ZF6eDYETGHGyRigMzNiNGchUAQqUaMa8w7w3wDlEel87AV6d3P0qoc4/7KWYYsTzIit+5PYV5BgqhbuCIe+LM1XRlzHunFZRAumPHZj4WFbLkCHiThVaqSwivKlxsZGsEX4juBCCe3lIlC4ra+Zf43qwvLEntwtSEGJUOs3h+2fgrb5OGRFmjhQg+pdMoj/XmJLSQO8Pd/vxtbOewO4v3fR/uDeAA8CyuXsVXH8ZVTzmkvc8kKDrvbhI9Pmv6+Wn8zZgDswTJvBYcDlQs2EhMQy8R0wTWmdJUlZDCafZhNp2OrXINSwUU9Ka0vNrcXNTokFFWfiSQhY/qOw3pcvqcileC6lk3XDRpR4TCZvnp504HhVARJOrcdBFio5i+xyffxKDDqJChE/b8MJAiI5dn8faqVczaFVqNYAccNIRSE6iQH0t/YzU/DNNHYclC7ro0eEJt5F613YrQx2IWBoBQArt8jlYYRoGDPAntLiAHVWdukX4lBuCuEw403G9YimlEo9OyyuTJTA5IPfvw5PA2Mrkvo8hOUyClDLjJGWm+2DGw+rBOKqSfI640XcpTElp9bNNRWJ84SLAjp8PwJul71qxF0ZptIJ03YRCQruugy8sjHQQOIkLIQKj+bGgpRdhGjJg0CoIJkXhc+eNwtuESXeRNpjFJC0UApO+kLEVIZJRpbBOrElg+zqmLnzYfLwEnaG9r8wbuIeB4CUefw0d/EJ+/C6QBnEVUtXgWtPxrqeaBbKhd5jyQhYVdtYLApjZbSkz+sO8F80lS2YXVvGVDcqy8+QYKcOUjzClEIreP+EszXzvV8BJV4untTR1yoLda6X8JYnsNzRLZGmL6lVKzhaPUoe9ZNAMT4+8QCbTEE9rIhfZiCxmJKBBv7zeIKT4xm0fSJTY3urKUaDSfzHRAoTIgTrxk2QAGDBlnNW1++WYNdSRhkV5p+pJZYBGx0fQTFsHc1NtEQyMYc1bqVKUi6JYtAOTeMbtr2NBs6Ad2yFYx4xirhgB8qWgcilVrhAroKGxvoHLfgq7lyJ0Z21BJyPAC52FahIpMDgTrdoYd6ZcyN6Gf1ijWNk+WAAAgAElEQVSuCx/D6kmbQeXw1egdl0wX4LtE7e/kybFS/Pz9lFD8zfZHOueRJe2VOJ8t4Yb4Ej3s22xB0KC0dWJVStVLl335kBYDhncRxzFjiIwS5r/zz7sJWWbOW3Y0BU/2+gr2F97m5g3cQ8Dxh3jP9+DzR7h5gov+6nQg8II/RDCLgyXOKARL+vKUVewZLqJnV6n8hbVIjCKk2EQD8m0rPPsPl1XMwpkv68n237n5fj7WFa7aVvbcn+srzKdyuRu9aX6yhvXNIp5FMDKZy1b+wpkfchkqiDZNyDJBXWEmCuUiXGebrUK9T60bQcqJDawa/w52VB9Tc+LM1TQxmYtMQA4NQaDRumV0EsnDaoSIDgEoI9JukUKa0iYFjOdgmHYL8uWjgDt5bIjDzo4q4DXkqUE8NOb2uA6Ep7zhCXNozjx9aox7cXtTCJpAkRxXMNqjrNWXzhnWulhbpsglNoNiavCSnbQQFY6ZKLC1C5h1ZhtSU4q+5mebhxB9wIXCITmHDsV8IAVAGDAWd6KHxwZdHO6fb7VaGS4B1C7VCHqTBHz2xA0tm2BryVKitnw97hy8AwM92L9FZqQwIYaw6/BRHSezFbcaba0FzMUdSK+yfwimx9Bu4u3tvdHDPQMcgDyKf3EbNwXvWQxQDmcodud2l5gjr+kz+PDPu8Ufq20XlVX9eY/dfoqtmC4cFvnKVDy73jBpnbuWKzxljbXpt5fmq81NaFEJzaSIBLcDy9m1IkilzK1DrhwlmsK2ttCGiV8PagpS7WPrtmVS0AYZGLwUpYaqjGu6Kw4YPMO0ZHzUNF8SQ6RRqA6xTTM0u4GksFOMEsmlJphbrWCoyFCCq+TBO3xUNT7B2dnzNOAzI0NtK0KLh6VBjEC5UjYQG/VJtCUfSImnxor/bn6beKey6eSj6fMnMEdlaIYYxwyTXS3JgIGrSC/5bEkpUflNA9BKd6AiNV8yLX7RMirPGAml+TWyZM9QqqZaS7hdcW9VUNbLSbesqkPL5pSFecOzky0kYwWzczhMkVFoepQu+6LvsRlDDNRiC4UxgY2xUHyMCjUTwDZ279yCQr3nq98TLbvPcRZgvo5BfPLYnh3O0HaKJGkAiGLb2i3cuojzd+R8/4d7CDiwx03BE0fQ08O3jt4F1JhD0vdTosf5713yTEJuyYoATanGktJbyds6LjZcLhWU4DrGhVKo0gl2dMplP0TpmFLj3Zy0BNWEyf17s9FLue2aDfIIY36YUkLdeWFUmTA/rJ7CCo10AxldFKXrvEhsLBKNuTANcXYZUwhUmMruGgms48YDgP0oxVwWXEaerfl8bmTdkl0WbWoIOYiYt4dV1wBLTCcNz1ZA/e5X0/pec3Dl+x4Nw6JE45AlDaDyUzdWDWDSMQfZMMQwx6Dy2WJORzPmGPQETWgtZL2OZOGgPiLNH91cOtC6OYWs6nLyIk3pIQFZrmBMCQcKXEQYDT2CeC8PDpSd17Gp4WnrpGCO/BeZIJ03QfhzTAdYfK8kvtzGR0sY0Ay3ZbGnqbZUVbe4MBjCwA0uFRgiKKASzuUJgpQVnyGFyqiVTyXMouWMcNdwJMSnPoyvvIKr8ra97IvDvQQcT+IHfhCfP8GR4PZdkM/69G7CXeIJpixAZNavQe+yjQvKiZ6ygDhGWdrFkq7AiFJDmMSNR0ZvpeejWGc03Baig4zG9TzQk0Llei+tSpTEhB47WHF3AaZ0bwxYQxeookfEupOWPulF01eBM9RrZYFMVDKVIq7CDWtkeSZeMRnaGgL+cr26J6ZIZ+IowQfNu8nEnkL7naaGIQKyCHVOzAcrNL4Ky3qS516yadjEpOkmKArW1L9PKpoPaUaPGvaNGwGStYlGh5ofdhodhyDMWmPrzFoo+QZSG+WYFwO4kJ3Di4oeRuqclGI0hDN8dXgviUrrCo+p+N8pslziJfhslYm2z74JZLipI+2wOBTwjJhSTCsLw4LIaK1TwTbmcqSUPZfN7sBgX87sQ0pAwZpFWMFmLuIrssjYAgQLlEZPEY+i5tHSVAq/LMRwWAcruU4FW/upZvmIqV5GuAzqnbHFnYMKILfwvgt4+g3gdh+Eewk4AGw4EtzeQ3ZpeY/4qwQXPImW8VllLrFFPJXYfK6PSK3OHCqwQAjFZUZxpj0lC/LQZKgynjP6U4V5jL7mUKoYjZ4ITTrWzjHlEqNgogKu2SowiV2OoT1ckZtcTF0BCJkuXFsGqtDBJIz7wuCD5LdrX9eRRuYwpcHeiazhg59jDjHVaqBEYX+ExjFbIwq30LuIQyVue/DhViEo5pdykrMCzUbptfdelUQQh1NSuilcHf2XMF+MntVpHHQBhjmExokMFeSxEeOtPCXEEU2UXueJJ+q4JCTNVis4XEf7jwESjF+QjXm2eQ9grFQV8CrqCG/0ograOIpuzGbkkYYinkiloVLMnK6FYPBJIIOBl3Wj2rxTe8owRW0nDpnVYlvEJsuMFbwaA4sQtuDbumIbhe7j2iS6XVPPmOQyQx9DDYYUvRUBaLxcexlRwXzzmC/QBDIYlsk0bIi+BYZDlyczdmGGB0OdEzTbDgYFAHkIf/YWvir4L+5E/vYI9xhwPIkPfBe+/M34xu3p1tEDaEMOPqGnE1EBBIuMktT8QoP630wJQhJwsmljpSQeKsmLAKZTMFZPkOAHEfT8nqvZo8OlzX0QkgaAaD0WK/mgrEtZlrUaZxwsKbPgtrh+1VVGgxpRv4RXuN5eZ1PDQy66GUOIJ4uKrkzFGBlmGGrPbBLjL2eZsNSQlzKlOzKQIBA+0uJsHTyZaYQhwqAU8O6MOr0pSCX9FXhAnY8dAxbKa3sp2ePSi3A7QeXsBgbY4RcQuotOyZsseVZziXmqGxkIrzgT+H7QqF4MlNpEcO3tyyOQBOIhTXml+ouDGsSs4V5ilWFj7vPiDsrHaVYrkn1aY75iKNSYbHaqeIxBWAtgOIO0NTxC33knpUtXjOcUv9V09iTVsGr4BeeGYAht8E2g1gpLAW2j5NtLN0YM5FVKNpLYQwEBgoSKCizwJnMqMUFmVQh0ohzDs5B2etYcmJ9U3SdW6sv48iW89yCnt1u4x4ADwE2c+0V85AfxlNJ5hzMwxZ3CXWKLmazIuyW3+W8p6VB2/n2oxGUFXl3TQIITFlmebamFCuY1Ep9WgX32c32lx1niFWC7hZgsXAhmF/MubmVRBOk5VrfWeM9pOyzuIrAlnEH95XFX7GQvKU+Te0oRY6YJ0qc+HQoYHglNJdFAIZ58TsFaEx+EM9Xb6z7GJNwvADJa8IRxLaddJ4ux154lHGxEiQkiBbDbwOwrJ94uwgEpskQVi6eoJQI8zcT/dfuKAQWpfHjIRiVJEUWFw2dDEbDDSvGOEQcxeYgM9ICSqNY0fAtdxKGsY16dkngOrT9ShB8BZmNABk8+vxSYcQbKzgUp6bFRQgYSNm84B7ZnpIsxEOkdsGXm2IttxDQnC08O5zZaOtaEgLrL6+ODWEqPvNmSwdXgJQhO9y7iNUrSKBVRRu7scJdkPTTFtseLgv/w1eS6r8O9Bxy/h3f8eTx/CvEjxtkrcw5nP2UCppxz3VUpk1nCJV9S6vkviAbT05pIYpsZLqQv/Uo79ySZyoRuxn8r2e+iBzqp10R4ea24GcvxD1/q5aq8jgvpiM1luQu50g9ZwcN4htYJhzutBft3XEGN57+S2JriMSU1bA/8tjsesaWVq5reUsUNJKHA0vDyLsy0exIYzIS32HwRwL07O3/GWDHfREFbOUbA0IQ6p/aPuW2aAca1muoGadbDbLoQHLzyKz2FZUHZXqkz2RsePQDjMhlO+vMgs1XW8woZQmLs2BfL5zudghm9n2hiS2dWJAfW1jyZU4SWhQjv0zCeMBq1Spn6dEgh8VQsZXCw7RhL6QByOvI63QtOeCX0On97do02EnP3KkW2vjj4yB+mF9qvCeunK/s+VRWp/4NMvItqT3MiVdu/vpvMGHMk+AiVhWkOrITlXQeFNGwKeQj/5evhc7+Few84AHkCz13BB7+Kz91ZAVqWOxIaBVN6vGQv6YeYn5V9iUuWVZUst/wvbS74R9dY8SQeul5JIw9JTQ+NPEjcSmE1JAlOi2pc0OgflyQHT82t06i8aUG2heSFznXztqvvAZnWjI51lUkaPCKd0LspGzayhNCgLH+5rxJPQeAAzzIedXkjniXLnuYyUuDK2glM9/ftm5E1jo/6fgqNCwMwgy/RP9ZL44FtV9n5FxoL02lhZ4odGaAfhvULyhyLiMdBfqMjY8+H2U8z44bw4UCGFzY8C8yRgIZpTkn7JmIXiPlMHBWyvTQ/LUyGHu/K/5+9d+vZLUnSg554v127Dl19KqoP7rEFzPQY1B5xgeAOMdPGsgYJM8Nh5sIXFndcwtwYY2EoyUL+D1xy2xJCQgLJwtCALPMD7JY83Xhsa/o0PX2u2ntX1d4ruMiMJ56IzPV+X/VB3qfUp/fLlSsyMvIU8azIXLnCkpiIohpDUzjKgoVfdsukYu9r6l1CUlErjMQjOM+iZa4ULBKrDxCLrrVOMz8jm5O+DrHBeuvAnAgjUj5cIqwO3UVRTyZVT4ye7lU8FkPOJGvQpyghgqEBkhD4BhV8uLCCsEJq6DJYFXa4YAuI54PtXeD6zxA2uRxwXKw8KD4P4WkAHHgTb/0A3wSeIE9SuzP2OAmSeYs52qVqSqavoGFllSmhDkX7T0naeGoujaqUF6zgJUqVt95Fu3VbekAEjAdVX0iognM7SAUK28nQW5hqY8b7c6fWS81nan9RujLLB0MDwFX2Ci+mdvZiVsUokVgsdyoS0S6GnthKQXwwBQZdTzGlwVSiAw7M1qAdNUo7SxsnfCPMpDAdWQSThdjRdLTRNLGlX9S9MYSOXEhIkbBAR6l+FaUeEjo/Na/TxJm9WfB615H8sWzpiJ8g1iIg9eW3TmhRubNERkvpjvRecKTlsMm8I/94Lg/qIzeQoDbxWQji4JdRXwkzuBC0J4hpX7mNyrKIeFJnSj97A9XPAbXfap6XPzQCW0y7ENQTPvrX1LbbSzueWH0P9OjoBg5pHPahAqlN51Bay+YqwCLYzoYKHaNaECLApoiu2dvVqnCV7gb3DhyfwH97QvKshqcCcHwF9u/gG0/w8Vfx8BwctHDt7tVFGdWht7KtOlTSrfhkq16uYyksQCeothYob8QU1lKvjbhxZ7+NtF5uB/l479K1WRxu/Wspa1Po6SmEBVqEiSag7UlHsc5sqMkMlFANba916obqt0BLDwdCrFWkVIaS0crdFYKk0ZLf8ZhZQIGl5G65RFK8CNw/IRqOtVYx5lnjXAqYIplShi3M7SwxxmaPJc9xrUBnWnFjjXRFZtit/LRJWn0DeOSXw24gLhCUCLza9HMyJOcCJmSqGWmOcGAgmvQSzKOkPuzdx+s60QgQSnZgu0SaFJcm5GAG17nW0OfaOvf0w0V7ouXk+ukz0OynKyZFfOSySOgerV/6CQgpxOcRcXPIGgeg/hWBBSVeSkG6Qw550ySRAUFAQkdviIQ0gQYqWJmQRTTR4iNZG1oVfIMdvMv01oD99+cKQ3bHcTOf9J6r8FQADgBP8Oo9vC/LDXcJdpVS716hXO3oXZgrTTeT222htsEcULQBfe6ZSSSbc0dU5GioIqSVvJux7/1qFYYGqfJwg8UjpOh0u22CidBRwbp8o9o/zlMPu5e3NnUMX0IagcJrUQBEMGbHDjd0O5SmXWQ4yxVV5AZFA+ILZCpwQQMdAfCNmFBpBsuXfoNTtHm8CgvoSw15KGpZT/G8B9AooWKO4DDFqeZfd5I2j0iO02U4FTDBlCAzYhRkcWQ4itNDwGT4T5jm0qQmZ5+HiztNVqA3ETAGVY4vdoo0hQ4N5GFoYXjY8OnZsiXb+SSxTdTLFbsPCKNLSTUONfnlrqHnyh4n/uD7O8eyjNJ+1TOBksh3TOSNkjDw/Bh9/tqy/yNQCD0ZARSy4ldaNM2/hQskwUeZqUxHBSusDqJZkBJ2XJUTmk14F7RRaLZa2uAHXnU8/hT+5h0YPmPhaQEc/wB/7jfx9cfAvWuvp94pnGRf42fMW/rWmYFQVFvXBQHBFThyBR74tFiqCHdS3uXubYkXxEuTC2V9QXD6M0a8AZSML0UMPdwWX0YrtZaE4SY2oWlLdslXPNFQxfldAI6x7l7bpLoWiDOu/VpkGzWiUMyLebqXW/VnCFCb8GKaQe7hCItu1uBZtL+HZUXSW6CNsiMkEYkME88XWhBLOKVPg3+gloF8uEBD+52XOcbR3klRMAHJrcgmIm3dxAJzGFsGyn/IKEeel0bOwlJet8ktu04sDDnoZe/fCQUHmdoYTvo11EeJPRC5Tc+lPWteDXFmnLo3eLeuvCiZLUY6vRqBDHiXn2A174sjU8LELiuIUXAw/tkqbQEigFwKE++fja09UBVA+lGstX1r6QI7ujWo4kVkQRvzcgsprgcDgCdPj2n+xYanqFYHcDPH0d37qIOGq9N2RRgNeewH18IzVVsQdcxBo3IGRwJ5QOq7Kj7T67MK1rsplRBbLnFnTaUKOTsKv1Sy073BF0+GXVH8sY8Hr4vseWMje7JKI3EBXFwFKkZYlfF6KTmYiCTEtvwuZCuGUGKTdMUKALjTUzs0dUyIVNuT9pIWi2OkG79AWnxucmk6hS8uzoC0oRMx2EQMyJ2eQPo/BtyJ8/Sn9aJnZYqTfpSQLm6lz4MiyyRKqVBhhNyFIifpYeXccJUn3TJNUkhCPMmLxHMXCD1nKpQtV+yj81pnTijeocOZnyPqd6bYOp+VjhbaaxwCLJrTAgJK2O1qvCWvkTNBBrFF8T0E/sgS2YyrGCIPwtKrGFI5Sw6RS4QRqQq8EM7BSNPZks1B4qG9CJt9bcDKrTlCBsX4aG0r6yOGxdrZB7h/g8dv4W/8DNye/vAUAY7/B7/+F/GHF7zyGI8lWcb0PiTBjq5lv5XbhkxWQ7ScZpjVdaHw4pZbqjeljIyqMlbtiFDYKnAdu/kk3e5cbYJW95FheAX09ZbkTBvf26VcXOQRvNy1Hh8mx6vtT2MWaIM5OpnCCFphbsbMCMmGH2J+qo0pYsGT58w4N4Pw9wJDPGAaQpLp+J9S8civMOehvQwYWzRmTsnL5o3GBtKlzxWTQH6BEiYTq/UFvSCom0k9OrS4tFasILKU80k9HzqbrIpCdFEGmhh2kfNMOZPTYNedGSSenh0Lf8wU0qwKg1nHzWvJwVasXw6iycBDmAIeSsSzPvUmoHeWoXUtIg/QiQzQjPrVl1PUaio9YoAoENn+6nfkAdmvOnwYAkec+0AbkzDz/YVb2v7qIEk5GxMDzyDPL81ayTXdGMi24gwuNDVoxg4DFNYY9CQXSJvvwgIpbiG44MmTp8ku/2LD01WxC24e47EBR7GsxQR+9NCyq9U/u+x568oukUF+bg0oFKsE2/Sdde/j0wpNeQmvqMzKi5rSq+RLRi1ubefunXa4zY9jEmwUedReDYe8gIWyEUSWC8RdsWsdNfa04hWIqJIIl0M4IbagAVNJzO/BGq2IJU3a7HmcyeSupQzzbj605kVdsZbay0TgMO4xwi2HugfG0JHgDruAHyJhD4rbJo8CI3DhcJgt0D6tYqXfy74Kx1h3mLdG9UKlVpwB8azICs7o3mnibEpVht6cNtmAcNbc5+jI9rHmDazehmw0ieecJX+M136cm0KiHmz/+V5QDjoD8tB2Y2KbauukuchLQmXsCU2OktnMJ4QhhkHgkzokAi5Iw4a333i6OQEH8jXmauBZl+rVWNEGTXjDEwBFIiwIJnKWhgdEkM/AKvEyX3VC1MZRysEWRAzisWDnJvMCHUaiHq03+6VI1Roq1EAwz4P3lq6LKqTcay9TE36Ie6/h1z+O/3jl9XyEpwtw/O/4tS/hm2/jJ9Y36J6b7HnXz+6RQC8tvQ68azEjtUQNqeao8sZw886kyUNLWdRZ8Mz4oqA2Q1OvVefJU1fBEGoCmWNx2FilXEPYLcCnWVV731oyoUNIdcxbfhGd7voCexA37ydUDdjyy1xh4E12RJJsdorVDqoKKXXQeJCNPQz8DNtszPWle+tiUGaTpsidHCbPRgo7Im92ZTgkAF1CYk2zUqijS4QZJudCQBAjZGxluIQ2zxdcs+EJCOJrsfWWB9hCbgkZxo+9wCadzRgTh6s7iXXmzai7RTsTIwHLJlwkVgjgBcPip7FAEln7eFtJgQsEZ4ziOFiCrGiLWhUdcjPjYjm1cdu8SQPWR/uspfYMZxiRAWRLI4S4P/SHWS37P4LDyHIIvYCM9WQOE7Jy0nkilRDgaJGodflinPA8ileD78WIj0EbQetb+UMJWie0jDFlN7intiRVrKKuGMjL3rBtOL11wN7GX3+Av3+e95kPTxfgAPAe7n8N//qX8Y+PttUKWHRihqvvwe6DbXKlzRhcZSa6RNDiliZcR5zhZDElpS7Mm8n3peji3kAduYKTtoeK9rqfhAYdVuIh5OkJHKHp6clAOBLYls0oFsQgfKhU9C4XUwp0KBBEHvFN2CryqJBoZAkfgC6myCP2sPk7nCG/tbEnXJhKdHYlDWRu7lS0QZsqGw4sXkgKqDF4i5uBqET5RyMZ6ibQ1mdzDWLyR35rvvV6abo6rOKWxymnLnW7EAF4yBiZRxXm0HAHLmY8OQPmCEdLfGk2HSGTezRv0Ll0oMt4kanUrILHCIjeDvpo5OjeCtxhkElQOj3KWbXXavQ4aXeaLmgEEGREraNIl7sm89v0fH91kinI0Gd3Sr64N4pDwvtvIg8IFEiEkeUKQc5v+mMyl9DYOPvcLas2aSykzVwJSDvyaGJLc0cLyIguEG3jdCkYjtpLfnf6da+Iha0Dj/DBe/gfP4a/dkr47IenDnD8M7z9b+P7wM3JIWtXgIWCgFszNsualzGaerwOywY70kqgkF2RacUTnWdjBYn5MoBTYXTDtwrQQIlJpsXSzJ+CDEIA17s1XKpRN8z3DapQ+aX3tSImyimTqJpj7SMa3xAWqQMRCsCSBq3Nz31qNYsM+TuenCfsmOBDZZj8o2jZhyFQwFKM4QOY/BMhDcazqaf/IDZqmHZsPb9cTKyFMTE5GSwbSs35VHLchEFAwOzsbnPXXR99eOm1RyUqvFgwx+wCdxyY33mPITHwx8mkYFXaBNmRzTaJ5rWwjknKIZoZTW/m9ly2bfB34ea1PaASeb/V56bomKY1RjiiF9k/CGN8FkHun+CtDApWloxZtXUZpX3FbW7jIB+x6GKz+yuy+uVYllIAAeaUqsijIgBKnsgDkI/Lm/JR/cQ6BmVDV5Qk6aWaLhnjlgbOpyXEOFrvRDjgfwb4Kf5ofSp4nsJTBzgA+yy+/wa++D384UkP7bv0Dnev31pD0WKqmARYlLyaKqqQi8D5ALrFEzXjKRlgRGO7+mwWR5bq6Yy6oi/1jkmNLuHnUF2voARhCzV/Hi8mDgyqeD5Au1RhpBxh2gtPQoFWnzWS8WhIcwxDZ4l7fPlFaDjTUiRxapgQD1Py7PORTn+DdGgaMC0i8FNGIC+StEaeSxvRg9nvlKSLbdqA07TnutG45cMyG6Dfu5+OFu5kGIs1YqMQTZE2PjbRBuZAuCiIKgYiORSgSr+X3l4gSG65GORlLGXnz1v68IB6Fw2cyYQQPrzUN2BOgrguso/bJFsHas9u1ZxHrUNCuitoiYOg+S2mMUZJRHVvRGTeK/hApmmmTzHm5iWUb9CLayTXU6yfutFeOWFFRDesaC0hiIASxS5MRCmrgJ6m2zaYUPksulABnCpFA9KZWPpzw38THj/Ev/Jx/NO7ET+r4SkEHHgDb/0I//wqHvyFYA7qs/BZr/oIaLBjxMUcwpfRx4HXBuMCXbWKIyPXn/Vui5RXZqyy29XzVvjSEkyqiTnFi0c9lFLZI7kJy46KiR6koEN2MEiuWcoR+o+foINiAgylud0cahDixCVLxIDjItbGUDMmXlEIcosKmfTGKudI06/SszHzJUznQty431+mQAEu9bE7VZ3B3eY7N9FWbvq0bWH3B7ekSTMfKEFBA8LpghzmIUEwP2IVydtykjppBFWE+FnBGik9Mn44AwY2csB0BaNOK6f4nuAn7eoULSedbP+TwaJKADn2Nv1eQ0xZ29Dclj0sbsKXITKVRCIMpDxHtDp0DSKra9NFgWx/F1a85BFeAWLSayKWu37GRTDNTkKBCz1uPZEcBDREFciqrqdIA3L9ZW8KBIIgBlJiES2CKSLM2o1N2Z+HM6N2gX0K/91DfNXwn13L/+yHpxFwfAX2m/ia4QDu3w06/IyhLecv20jXgpQAkTcmuIw7mos6GFGzMzT1utiYTmPzwK6S3pmuI7siEov5vVKZkGEYsAW3j48ZXivR8n/YBwfsRtZWLlMtmRhgSxMhcvLdf6aYJfJrMz6s6YIPamSYlu35wTRo255iFzc4oibIyudO3LBVgUVOcihrMYpOBK80HJPmaH6GhS9lhLtC1GvkIZKcyKUUMR0DCRqSOYC5wZMvldicP7FYI7fYa7mKxDUdC8dJtKogVCu9TSjOgZHxaGHI4NEOby3fZjEJ2m5goPIZgCm7ywsplFQjxGR2TrONFFsucXkzJSEFEqAUh4EXVvSLkJL7OfRufqakW/3yW5CH6Zdj6XgQOVt2lhv6U95hCWkFbSi2iPdNpEErQZG5tKs2aW3vMi9tQ5BsRbNUlTp1z6osJcTIK0r+A9y8i//5TfzuPs9zFJ5GwAHAcACv7GZ+pZIx6ye3drkY1Li2ccRNG6hirPGpFxvmwJxS6pBYszf4st61HbHqXErptWqs7CEXpFkpNUsCqQZK6hapG34L4VSVz68gFOG5tiKbD9I26w4UseUDFnAPfXEypVKhMZa+bBVWxbM4LYgbTO/Gnspt9gII5P9Mt4WMyysWBNEs0QJsCtYJLis46izJhs9/HFwAACAASURBVBX9baHRUwVa7g6RfQATYQBaHZurQgFTIN0nayW55iIfiaXUbEMLUbX580WSsrfDPF5+mT0ZL8hIO8j6JCY+CW6zJaMfiiPEkK/A1Jk7WywGIC0SR5A1ShAhlXDLvFKwcmXylSwcyMiIDrYVbciG0Jy1Xn9ZuZaOikXQGkmye00cQY8F8wUBuKXL5AhUQfxxCLHsLvNSnapsmudjjoyQW6BMmfpaO5WtQBM2Uc2oWkmH8043ywuH285uiTcXHI/whx+/68h4hsNTCji+it/4fXzn+3jwBB/exTruwIXtkzsNZLCUuCom39OXjNSgFSsUKxRhBQdppm4j3uSlDvN6CcDLJ9YokVfwsTaUScwWHZNGVFLbxovNBK0pB2pNWlwRT9xqe1FLrtF8PDSi76uQujRLfKI/DKhWxdf7NN5hL02RQeQZb8FEu4VZCAudIu3Ax6wXrbIK1GrXvi4roCFVcEVzBWqw3IBX7WNsaBxm75umH7CLZzsPHLBdGJKhUup+cKWOYuv2C3HAaCIW2JH1KOhBS99YfneRiPwpg1R/0xslyHJMpITXZ305pYxhEidiaLYQoaDSGM9V4e7qQIyKpEkHidAglyeCrQv+KIkBLMRUywYRwQ10SISrI0Zy4RzyDORB70U0T4gXESuSE4vodG+UWhe254IXI52tbZIil6k5sNEc2odX7Y8q8cewC/AZ/Fen1M9ReEoBB4CP4f6X8Ln/C99Y3zit4fqtEVRL6q091FjibcfZtTdWuAhfTVMr9DSyaEaGxk2N/TrYM1f1LlwzrtdsbWSxhdgCOlS2Gx06rVdW4BKTuOSVdWNpkOIpSaTC77xDLocOE7+Ch4Iu48SQKznFk5+NRePTf004L7mGdnaj/6BuuRglIlcAxLoNFcsn8pCvjwqfQgMw91iXcKll8J0LH8m91leWZsIUdssKkSrbjos1czXE2JZ834QCh2ImJeD5wXdTgeNgOUO22DIZpSv3s7W0GFtVKhMh5nGMTN61QB4BKPnEOtu8TbXdZMGGoDwLdL2V4zjMHgWPWZBDJd1USKxQUnIOiVEX5nAhcwCXgB1kUn0e5VhPlD+QT3CG5OUvXRTr3SHe1utQ1EkFVcXDEe3Qe0MmKOmbYApBtDEzIxVVKtSc/Bw7HlPD5Ha3TkU8h9/H5YP9K5nPYXh6Ace/jE9/DX98wc2TedK59m0LOlX3BEuEl3eBID2xGQDvxMXtW5RvzXgSWRObgqPaTfG8c9DQjiT3WnHaI9s1b/dblFzzv/n0qJa24kwNG1D4XJRhOOWnWly2mmZNHfF2yTRICTIir+VzcOv4XFagMkiCtP1uedf67zSVywJHtKCotxGC2/RzkCyf7GX/x+TAuzSH5a0Q+lEcw7NiYYXD2qRgQB4/Or7BNrdegsoxt5iE1z83mQqeKBtIw5Ok4CDajzAiz/tCmyDDKE08wYho8xzkAzKp76Ecb8rVjcYf2qQyaD0GnKsJl8W1gjzYAXFFVCcmkEOqDLY2DCJlTFbb0UTJxj1O2XplvqZHgQLK/s05EQZScSPBYGjBSvFEdlOY22rXad2bnY68zAW5lVAGcJhfhLncdXmTRVnxjVmKcbDZ1f2jAq/qvZJpb6eOkdb2egkrGVUFtkXdBlAQmqnl6hL6p/H2Qzz4JP4AL0Z4egHHO7B/E9/8NTz4Hl6Vx6uNvdQQT3Mul4VyscmqrZDDZY8DGhuX4bbdwzFSaO8pjPJc63KGG1b4Qu2hE6LV6JTdyl+ehclE7NwSJP0y56uDmxWrVJMfbeY6C6cN4JFY2YAG07LMcKiUlumetqQYcm3unlgIHDYXR062boSND8yRjcfzqZhu/U0QSZysaPYmqpCqUgx5scWhapV8PA5pRwzE0rIe0TDtZuCuT56MbpTTYZYHjA6HDWJHJ8GBiaPCQCfBtFXGRz34tCXTTpbOzfUUs3Z6h/hbYkJZrBM5F4xmo+TJpOHvMTaHs6k87YTHMBgVdsqfj6XTfM42FXlosFmTtc0hlKjBjD7QDUahXB6sPWVHJoJLSeIJkPjJ0kmjARdE+Fxed4OmVyMxSt0EeshdyKdSjoAj+lX6kSvPGNXT0xeXg4IJzTvaqbglVtdIrcIGfKAXx35wNtTSo2p/Em87tZcoYC+Yg81ehsbNQ3z4Ot7ACxOeXsAB4BHufQV/4bfwh2G3RmgWZIM8quPScHbRcYaawDm5vd/SMVUMf2cx05V+DToesVDeCSosDdF4DiFs11A6e/Ky4vxOUx0VqQKVp5UUgSy1I5Nhefmi0XQA0TCQAAUCgjZWBB94uEAAIDeorshjwRlWzttOIGLxbdshVToztAJ8L2Pa3dyiSKXluZHCYeFCKAa37Isb6dO2Z6fwoLC4K1AgTBl9H0j377QYwwxPWbwc4RVYUvwrmXPmImQcNt5kz+kQdBrgUNBxzOjEcOyXfDU1JA+ebI6wvoFUcoA4xTHdhjJr7wgDUUZ+tI34MGRsIQdm4rk1MiWtfVRuTvoGVkuoAGKOCo+xnUCEbR4QgZKoNSVKgECQFTogJhb7JwkEpnj/NXkVpZTY0YYFAYWsBEROWmjiIXHYgAeYUqrW0myKmKMdi0gjA4DZhsAyQk6r5rO62qaacg2Lkfk0fvUhfmj4z08yPIfhqQYcX8Nnv4RvAh86XsGp7V0M/UcIK5jol+o4Qz/svOVKReX9LoRmCyMUnWgKrtJrhIZ53VFhu7myNkVq5ZrYwEcSV/DhQ/Ox1umwFoY79ECjP+IpXsUNGrkIh7qjwmotyu7RwB/gMcgKcTLX7pfP4pEYT5zkX0p0s7kFbnaTRiJLPJHL4DGuy0zO6QOYwpczQJHMh6eBOynk7jTk4T6ZgDL9EIEnJpwKJ5Png/g63upO0ByionxlpE3+ILDAGBtH+JFYHfc6ANogL5NRRsvmrgwqW2qhBJgtttRAitCahmCu+aWxeXlFYbmwkPk1b8WSS+MJOSkVIMjIXCAe0p2YCOsOoSHagNryLunJcklDG3RCCJhg+2XeWZa8cwvlpvREGwFHZk2lCKvPNZVAwERt4/jNp6ot8uOomCMnplDtDtK6DMP8rY4zVaKDjV/exXffxOfW4p/j8FQDDsA+i3/ouH8DO26BFKpxPnIpNe+VS90FNNO9kI2QT6uVw6q5uj4NJbbiieuwQ1PW11IQwp+BD84qoS7RzCj2oJkZ81jpaNkVl4T6PgoDU9kU4hQ9ESmD7CBBIRZTS51tktGkCoFUal79xTT8VV2h503wEftVzQ2Xub91vguTETAiPC0bB7WjCobLL8WE5VYXAiA7NkLnhcqfsKNvsIiFElPb76M/zfYfQ4l1DbHf0bo6qNjtbCuXbtGDvGZmrqeU6ntOAdOygnMYUhtdEOo+llo8350J3wa/ZUPTZLqJp44+dreM3xNNU2bjikh0VixghhY900K6MNiZnjc4Y8TY13WWaqcxD8xIwCOeDxFj+xqqwJTlK/MCawye33ubHo6joY3h3jjxPSS2iMTm1cCiKtSuKxMliLKqm2oORuYKHFZhhIaanmPa+60gXrS0m+HxB3hg+H28SOEpBxz4Kn7jS/juW3h0g/dvmevAziRfD8qqMb9yWeJ1vOsCup/kWiGC6rXtrRZpOj05bDTlPqxzCLu54st0KTOpIhgYLvEB+gIakJqcG8YKKpKlDQsksVleqZHNK7I1kpKzjyzeuZylcUFYyWKbYuxmILYIH0OBKbwVIKO8onQxzK8Qpo+EH26l8eODqXGHh4f8U5WZh0kkfGHekEd0JGTjxexJ2VrDDRZxVqlPuz4qbDTVkcVkm2qezzHwQnZCnLqB2Mwb+y0IicqRXwBhTY4AHdU0hzYrwOUSgQUWFLpuAukjOSakjcY2GS0+TiuHxM5+CmZZbnM2oISTERsMNckTBDULWvbibCyriBpQgz6PeomAIBsaQSqmbOMNVbHBii1QXR0raCi7NNqiRoUUxUHSPR+9XBdpG1tYzmMrTDrySOFP+s03CKN+LfEEXqyX2B6aaOYfOG7+pRfjVVgNTzvgAPAuXv0aPvub+Hok3Ao77h5WVlucgTKCNvH11goscBva8JgzZ1W7znMoxZp9m6NKfNtdT/1c0pc5NBXxxfPZ7QgLkI1jfXYWkz8wQcx4C1VBJo7YkAG4ucPKYR6F1bKYwmoI/WXqSO7vmkshYhqvtFVtm1gfYYnsEVglLpcKO0JHleUbF+566rmUbVGLaX1d6j9er52fgWVdZB1qun0jRfbDDtRSzLNhOWOUru3xdO7Rt40m4AIjkr6MCiRc4LhA7CmJgZDAiAPdoW2KiWjAb+BJzwFudnHKW2ET0QYTCF77WKDJvz6hlJzgL3reaUo5elfkEQUZaULCyXImErgoklgxAfuqxG14Ks/QhsWRv33fgyIPxN388FtUZ6EM2RIWiHtGQMkcjVZgU23VymrbG3VCtzYB2yG0RUUPHXOQU1k6Kenb4AcO3Nzgyf72cx2eAcDxz/HJL+G7hlccjxfDV7v9roEPRFtWW25nUKOLoWpvoWnYYk0ByjYR5XAGpFdNPbNbbiXhfLJd0Vi4deBijTzJ2uvjhAijxEsofOKG0poYNBNzTBMkn0JNLUVzOOyocLsI/ggDJvQ8jCsRTOgG2n4pIqrqs/mG2imLLPVWq061RqPQSzSIWHHkSSEWDpIwlC4vgoZNDds/rWacV1ZsLfJZublk5DxyDpNszLBzdLxoz08CqvNhLVl0+G6iwcOGGisixrUWDWh6ZThhkEwKyb/OrCkmrdB0q8zW5asrbbIgSpHKtrGpe7HUpHXbsg0bg5dJ1Rza0SdcYAsVbfZgoA3BTx7E21NsRpZxisYkVr+IkT8dPItDQv8UtZwij+V35SDx1fxTyFGX2Fi6bb3aSmehiiFMpgeTUtG3mWqjHUKzDMPgp2uS+qtODjM88g9ucPM23rki7vMangHAAdhn8UfAk3McsMavspu/jVuHDuOylteUXSPWWy2cKMqeEmavZBlitGG+wRzhG0jBRE37UtkwwPVSwITm7U0QYlxqWd5UZZumJ5cXvaU0xetKRNLjdLMmhqiXYSDrVgzk5gxLzTfVhovNtsq5pxTwwUWE3EUBQBAbiYlmkHpKnp/yQoz9KF8B1uCg7p8QghssyurJ8ou5XJJdpwQTuoQYDqlD/7gJ0tCxf3wIHq+rjHyyqhKvsWj7yGpIwQd1bNelzLKhZM0CcQjV+XUETDH+b3OHHe0Z9+UBexl128hpuscUzrFMGgICiAgyxw5LgcRq5vKQpkz3Awst8cmfy57O7H1xRF5dWYACPz9AaY8LHPq9+/7arW4+PWSthOsyXD+cZKU3ek+cBVXSChSQ+6Iwps/aYwodGs8yKk90s2AOP/AK7n04D5d64cIzATjwVfyrX8bXb+BP7ja8PuIYvAY7lvmtNFND31ZyAwqauKbs49XMr2T7cutDuDc4Um8pP6vsaPhbXnoa5AOw4Z8woW8O8zP9q3GpFSXvoOQ0oyAAYg4xJGxPNbR7O8Hss3TdHNoQzFi5CI5SSpMERhWHPHu0oor4jQ2V1IeEQZilN9MnOze5ngKzC2wqSr5ty9/Za7HZYpQSMvg8S3TSW1huNnEacke8ZTzb1sZP7LrgztMpuOwYjV42H8eMkn8eujoBQX81RrpG+7TMX5c6zZ5Cdl2MeKftLe0pF9XQLCfLrYPnLFKiacAS0pV3XLPElsskeyw0YE6UYFURQP7aGp+DKzhs0AbmNtICF1CJx85QEFsI8ZTTNkUIE/F/7HRaVrMgngBVk0P1QLHEDjVqd+Rs6JFtjp0S7VBlT+Y3uHzmhXRv4FkBHAAu8AOgWllR6M8RboUd11JS3W4ot3tIW7ylqNa7AlBSt2+Uk+aV9xdjkaXPA7HreWtZw+w139Zl7RQrPAmf1LNC9cP04JPmzK5t1wBQIAUapZ0TrMTy60CcPDEMfHjnLcwmqhdkWXBxZgKOcJ+EafQJUAKlVLQRQo1GI0CR8znkRVaEtyb5BGd45gCtfuzVcIQZl34k/tATPhQngehk7A4ZzdGXeHS4crNpyj246GJP+FqyT8MFMrnNauVySQKnjCc2StAT/ViGygQxbjaHHutf53J0ZTiEODqs0WF/uQ6w7NbWVgQNEHl0GUWno1M0D5AhZhjqimivy27i5BbbS+uyCPgx2GK8C55IR4WpDPkX33XLdnHlWd/C3eIeWNaRMCthirSuwBcutWUpaAVJY649V7X+LQdvrImR4g47/BW8+XH8F5uCXozwzACOv4c//2V8/QbHgQtypv+c4WcAGTtkC1UcUD1bbTm5NTxRIt6ZbEOaz125XUSJm8hwvS797q7EzJhmI/iLk6N4yKs8lD2c2pKxqmku3xzW65l2sbq+wZc0KrBwkyEkBgm09OtejXEz3rpMguYgScmLHXfzi+yvnAIYzUysP4QHRbZBXKJZont5iy6U6fMQOeLQUjlcXM7YqB6O6UKf3pSQ2wJkgFZftzoOi06Jswcragm4Y6gvrVjrkWh7tm1sPg4fCcHELDtQWZzD5jqwwXZPV1MOqAKJ1tHOlJTQ1JZbEnmBDGc4Y482UJwWBWmxkV3IfEkBBeewEhixHryBUgV1LYRPIpFNARNi1JfETTwBTVp9Pb+8oRmml7nbm9K1C+Qvx1uFL9kgW+KmKi3/q3aclzu9uoMUkENtsP7CPo0vfoBPdVYvUnhmAAeAC/zJLwxqjPAzgIwzgjM8sUUY2A1iqkhUhpqlbHcI/qSZWRxuu9M4aECmuZDsqe14VMROgWJXT4nQCT4U2OErTYVmBtOTysRD3kuUu7pxZNQp9f60zYlyoGoMUzeHAtjzJ+qKHfmdocIaR7wKa2H/FIJYNviRbvDcFXsJJhEc3NPBhRUo9InIyGjpsWBlLcAOOYqZpMpm5cu53rQWi0Kux2PkrgvZCzLcJ9HRVj56woEjY22qZnfYRZ4cHTDw9WqTTlTMIb6ckInuKI6BrHi0ZGYx9rM7LrKPhKXmKPdisInw2G7nqGINlu0crhaduJyU1AYKdHQlpy3HgH4O5MmeCFcBMNFkxGcFZTElcUzFBJbnhKbnoHggDhGP0GSUcugWDWGin4LTl1mGSB2U1La0cKKoVKlgFGFUxcCIctj1kMdeImRn1dDmC3aXlefNk8fA793HPzqheCHCL9R8//LDl/Dtt/HuDS4/K4MGSre3tpfblJIomk8pc67wnZE1Oyf6QqPKZitJUoYA3nNZ5yaFuiS66jBRe0yXeTxVvuYFOQjnXKSNLAh9hmB7TGmniqqLtJbKsirIGp8P8i1XbDbjLrggY0FanDwbepZosV0+i9j+wgrNZG4GWOzcY8qgDF9K7PwoRUyZjQLkb1YqChXObpfkBsPFyIrZgzPzlnKjLCZaE0n4Y5ypNaWiSJmrFs0Gb+2W/DU7CkHNWyqVCCz9OdG8OgzIDYUVlC2HNw27ubCcmdPE0ebL7zalRQpSIRNypRQxeyZJX2exvAX0IYwSSf7pLCnOj8KHwCLBRNtAGniiJcKKAE9iq2nzcNSMgVQE4uxvLRtOvewtTcRzaF6T9SDxu/D8dWQjVEW1v4UGzqjwlnaeJG5m9taHb32IL7yC/6A+c71Y4VnycAB4D/e/hi/+Rfx//jP2WVMR+hKKAIa4u+atNJko2sQrq8y1LLtsCo2Ry/SmtRq+cSztkM+4ZCIlL8DFpKYGOD3hmdJru7aMsrX4tsggO9DWVuT7olbkTBlT6S/8m3OCQk5d4pjLAePpE6Aw4re4yydUTPAWkGscu9/IOJwZ1ReCWc25uDOdHHGOFrQRrDozUhgHUF97mXsswjTlOkgYkmkRx7sqQO5poNdB9qtGSuwhiaUgbcPIkns4wNO9uGzVxi0LSIFHU+ZqEVGC53pNGRhTnjS0QQ8VJozAyMq1Gx2hOlNy6vmofqGmiigp0RERyf0eiT803II2kCJTpJKYdmuUuMqgKRLviDqtZmW7WtCFT7XTwAZtpO1nzYpRx5wWCR04saLeC9ooj1cVbWTeE+L48ypP7xfWPRWVoTjktgvISbnVgieUgAGPPzwe2Adv+LdeZLSBZw5w/DO89Rv4ruFycKLcLZx0Mg18ptQvzbbQMAR2g65hhZZrAxEqt4YAtJpX8qauN1xcpLINTbm0UmibRjTSVmvB/ZsbaFKXRW7gh5rPQVL77tIRxpz4aYk1u1Hw8gBies5YKBue8rnT+FRXfRGkN90AE5hv36QpVcRgc0+G8mnIA9zG0TCh1d0es8ou0GMUNIvdyDAKyqM7mIuDblQyNOnIGVBD11PC+rq8k2Kz9PkA65YQASaHcJjuJIWCmug57iqVZgnHw2QLrsXM7TLr0Bpcx13CHWlzSL9EKQVSyLDhZZWnp8shrbM3cotpwR9Ks4RMb2ojQVvMFd1O0bNEVVwu61JLGHudInW6eNhyTRF5BtrY7NIISCFHlS+gASGAvgGbDSAQ5Cx0AovGKV1U35eZ4yjlpwc2Q539c87V+RJZZq92pXhdgW+Dmftn8evv+fdfqO+0bcMzBjgA+xz+yQE/+17IJLqNSQMZdTZfwRO2JG6KqoO25dpY6JY19P86HW1hqIhBU1R+20bslID2fqnNFM9l/+ZaovozRp5LHKNorVKn8YonKAv/WeFPDjzsnHl1G0d6j1L5zZqyCLXiHXkU61+DIfYGFBo1eIpCYLED1AgFWinZhFwvmH0tGxGc5Spi04+tTOxl8zIwEwtSZDObNtCGSD7bkkyQMqjXBHSNTFU9CbI5dKjYNJJ5n41f4JiZ7Gxg+7KdoxejBaRZMNuCg2E24Cx/nlmSdj1hV/bUrPeydSxcSIQFXPzow0Yjs2DfEniWud2ocWUxRV8ElTXMHBftRVkPMVz4pM3GdbRhvvuQio774RoB0cbEQOL2CNl885sN2XaYAsqtq0+Xv6bRo7nKH9t4r4ZbkjfFlhN9Z0yqqjjuPXn8wL75Mf+VpaQXLjxzgAN/D7/6ZXzDAcROjo8KOCPTGW7Ypq+JqZ52DtVmfE4Nfw3DliOe109Fv41PZ2v70nVq0jp2szkL9Y3JNbFVI2Gjba2UAZieJRoc6JyY0nG1PPSEFQMwGTWZZ2IU7SZ7bPcYov9aoR8m2fOjrwt0GPsWpsdAM5ohj9PO90vNcPF4OC4ukDxXtP2ydmKmtMcoGxuNi2JcGWGb6sZPgwKF6EavzZndXPRsLn9kndPJb5Dvp5g6qBX56XmglpTT9g+wQu6RPxKDxLjRci5cZVYOAw6Z8iybS3scLdL7EW2VrbOiGpbmzTmLLObN5H9b+88Uzdh8HuXYielXyB5Uhh5FbPwf0cBjPupKikKKGaeDREal4oD2Aq1UPWOrmWdg3pIooAchaoMjOjVRZWj4IzxtmbbTiJ5LgTXcFaYMOS+PL/dw/NjwB+d1flHCswc4JNQp/pHDFkwwfZuo6aqurohRzPkOdqx3R+wiizu3hEZwFwxyjXPWSvXWqnPVzM//+ng6p/sw2/MdfLM9/4uADxgcZWV9PHYjUqyZhyFg7HIQnUQNFGaU9jRvpdgJdLhqM9w5Qx414vqL4oEAumEjDpgNc5mWVU/9atqubARZ2EbdBUbmbgY52IIChZ85BG44INZGyodakiAKNUso42W3h8WmnekvifUYymMuEhBVlFnQFlki+8AuyXL6c4yvWCEWYnSGui7DCV6RSRebYBKnwmFlM7rM9KoMZLSXEQXxc+yD9z4txeVKwabcst9zplTcMBLHMV9HdvqkBCGCaQqQHhFZDdntD/WQ/2iJAgWO2KSZPbK4SdpCCZYXZWeuxb0Byrkz7QqAuv8jCtIEZ76dGmzoYYNITvZ51Lxmjg9vcLFP4L/Zkb5w4ZkEHP8nvvhlfMNOhsptYQ8dbk1csIWfZNSCikpdMm7uWsnfRv2ebGVrK4kDaqA2DMLGIsxhwRM0My2dxmJjIEc0njL4SbZCEKIecjlVuNWU1O7iYQcXFIrPW2BKXVVhpN6qBZEvEcFukwfZ5opPLnZkKXJJXNKk0oxia8OcBk0YyVbK6JQ08aNTeAaGxSbKKnait9mJAzIMYBeVTXmKhDPOAWCxiyG3kcqUsel6iQ0cxbGRGzxligXKkT0cbEBDSwxZonSaf66glUvpRoUgcXmox66Z/9KAMmBqiufQ1VuDdk0vM8Wj2Vmil1uRYjNCjwVZJLBg33qYfPQI26Owau6Bs99lNiekoLMESjlFOgLudCa1QbaGnLdcKoLlN2DTXg1ehxEFUiyXVdB+AtguPHHcvzx+cjyTdvaXEZ7VhtgMpiuE+2vVO+t9v3PivDyXxmtZe7SxogAdxhVdnYJylfIurSNknFsSa7dSIVllkHo8NAETk8zmOQNxcFbhfrFyGkeTv3k4VjILPWSS7siNC7NhksDD6tay4jLkz/0VbvLGDXPRfk+bmkYahnapj92gGNniiH2XxU+UJ3qlRU9tVxeWdyE0eDOlaitM0GQ0eDnaxLxhDlDOcG7o6sxs+eBf9n7q4FojyLEUFY+T1owrLJM1E00qmADDhVnzFVbYYWnFS4vlAF4Hc6Xt47kUBo43MU87Ak9uMzEsNxN1ZYe2k6BEyXgr3rmOXOEjUWgCnCRWt4TgiY3/47BatKFnlIPP83sr6zlgtmlsvavz3s//KExJXLRasLc1OqaFdtscv+LbOJ95Y6q8/cHjB5fLJ/E39kQvXnhWAcf/gS/+Nr7zId7zj3Imx05raNpHBRktaQeDT7TqwkoelIXV9NbvBnWquoXhZvJsBPal7pYypPmhydRT9BCzOW2V8qqami4TcDuCuhkqXolczgtbVUU+77KhqPRjbQXuzb+9YotMERdJKE6TLMPGX+KJfBJ0N0a2w7grhXYfST+kPDjM1xUqZzetvVSWuz0sdkFkxzpsWuv4wgsXPuRVFFi+SzyKNapUCilbasaq9bbExgAAIABJREFUtnOvqJXOGqUnhXuglHLueLk0sJTc6kE3idydroMwzDWL7j/1bIQCMCI9+ehwCJ9N+oRMbl/BClIcjfo67XyTVkMU51Iu1UBBHvl8T5AR9DYrehVPJMOCD0KONO0VbRyRS7BFJCoxgNiR6gh00utSMcTCYbuekjx7RvmdkbKvRVqoa9M58GVjsv6WsKhTdXI05mOA+eXdezdvPn4RP0N/Fp5VwAHgT/CxX8Pn/hT/9LaZDIg22AUvVHdIPGHUx55w8ZrQ4jQ8nVVlckVnFat8B/o1f1epKluKKm8DLtlPnwgteXc1IJGLViGNj6CQZEtUkUd22qqEmEgmoR2zwTsK8WyLPUGQ5TaORjZ3jE7DCgu8gk1iOgP0EbnACFkcASHhAnfy62vTwltY2HzWtzyxw7hmwU6RnZtlOYbjc6x6cDertCpUBuTn4OeoUNCgQvJyIZiFWp4jMitCt0tYCErF12HoTxoQOZ7oZRjGYJ4mzjUX+lRN9NDtj44I03xzDAj9butGGXJDkii/oIcoOR0VLrcmvRXpclFDYIdilGCe1j1ymXJQP8eh0wtwfhiFGbdoQ4ZJukYkFwn6NtX2x7em2ERW5NQ6csanAEvvKc7YhtShnicTbbHIwBbLfg43B44PLjeGv7Uv4oUMzzDgeIQ3vwL8FpVLDfUpYwGnSYbllmIC1CFmp4xkNC7812QXVg5x0giTZpupBJ3vf3qpezbCvkF8qGeXo8GvIACLiSs+/dTU/W0HIeA+gDKbV5Eyy0QPB0WixVjoZyQc7nxDBAAf5cXPP1i5atnU1Oyagj+krYWgyGAZmfZVDGfbLTHaJ/cTsM/AZQumiHeBel0NYRhR8VhYGT6TCWGWhSVAbLGUwZJLHkRD0o1hjMWwWQy69ENgWnTUjMCEQbOUcFRAwQHHc0akmgACeLVSpjExIXAcs8lGA7K3xzAIJ4SHmMbLdMwNCBnfqh0GmGMh/UMyDKT1ZhcKOIhhipiyNRQOnk2dC48hVAIaRBvSviqr8O7oasjMktaXvRi2H8Jqyuk01fQx5M4MJ5hYDtgoZj7lMshLK9pgOcWt7EIdrZDIw6Qs6qTdO3wN35RbV70Xc1aV3TAbn8fahe6xZqsAJcaAmcPffv9vLjlf6PAMA46vAb+KH76Ox+/jlTK+N6Ebrx2ZDhlNNE1cM0rKFi1vuY0b27j6CSDxjXiVg0YVM8mMUVuWKxpJLzZSK7VpLnH1h/6Kp+GqjtN1z1zyR0s1/nl66QXcdG5woC+khe0fej82WzjoAjGPhyCHaIj0E0wm25NJWcpguHy6hXWwNCFsZMyip2yTQNZToIZWCAKd8CEe8cG27N7R+G6WbhLBIuodyUUQ6RG6Jeh9mX6DBB8JIs0IUwpBjJM8eHT7nREiFdbUQy1zYJAjzS80PdwzSkAowKGiE2dCBzbgSET6aIDwwdBe5rsqxFW7ibaZ7K7peQJb23ZaWBXTO/HiBGbK0LVCnAQkJnOpRZp/AR/kgDkFjTSQvSx6/nfafv5ZpgyZV7TBA9HlkPJZulK6vPPCeaDQpLRZwSsqUl3RRcq2afWr4RaEcQeCETU/nlzs5iOU/IKEZxhwAHbB9/83fPEv4Y8d19fJrsORdtN3iUxffGd74k1Znv8VXtwFDI3BzIyay69Wy2vdtxNl3FhUqtv4InwXr0P6KXT1YRDNFLiQ1iv/aNEt4sMQHrEVI2wtxF6qOvHkHipNq6xOAi06jfri1aCTRlsjlzNoDMoOCa5utCzisQhbwUu2hhWgIOa20HupoM26OxdtykJPIc5fdY2ErPlBV8Ft6d5IGJGNExtQYmkmtj4I5jimtY22Qpr2gi1m3fJcDToeDHGMKXKviUCWWCQKSvEzxQCI+WJIm6fmvYkxWv4wtuq0+t2gNdhR0FVUCJRxmyUHiQhTFkdcMhF5HNlp/ZbUwIqNr3iCOAOcCt0toahis41DnSi1iLT90zPRyJYVkPzwsyKbHcrRUKRtKjrGXOa6riHvFG5XsglEHLh8+PDVy73Hn/ngv/45y33+wjMNOPANvPVv4IcXvPJkAzhuMf87+qaA2jAnFDhlFpN4z1k8dFjKOuUrz/rXQpt2J9w2E4d+jh39JRHADt7TIsvSRkMeWesC1MaWwlBUYvfJNo8NpWpUzsPWIg38ulxC4UpiyBxfjEtLDCmiYYKFp6hJAQcpBia8CEqHpU3FtKlz9x2hQwAdFl0ergOcuSnIABTZVLThUan0jugpopGIaVATZ+TbKGGrAl6I+yfP2JBmCeATdii8HXp2VuSK8zMqNk2vBkeXzpoovy6IFPe3bF6ZxljyxiUPHbEkY6sEzshg5d9sdOhVEqhQMkrXTJk3R9msOgWwliJYgbcaNzotZjs4kZMlwRG19cglmGquoZwdNpqARuRHgR0A3R61mg4oiJlFF1SR0ESnr0qiCsYV6k2G5cPDqnX0Ua2rNOcbYKlATzWfF3Wu1TRcYK/de+XRY7wMa3i2AQdgn8d3HO8DN2dHc57Y6a2lVyjQaK5hkVrEdWBwR/FgGzFsKderSKtaLLdsoUSq4ysilTkXqxIz3ToXSSzcqgzmgF1EFPVDKD4LZbMytPmanbBdf0dRDSoakFgqn/v6Iv3ud5g6PyuipnCBhoCGunNU7RJP5LFB0gq4yW+dYAKF6q7AMJfpR4lear6ZKYCpZwLEFmnMAhxwgypypUz2j7LT5mN9wChWmQPG4hwwkK0TLqSrg2s9HighT13JLagTYSRMQXQcx0yAWkI6ZBPMARbwogxMzKWvxBnh3Ylq1nlns+Q2YCClj0h0vgpSQsVMwlYxEHMdWU66KASUzEb2wJph1HOMJ1YQAvNq4DHQRvoYju7GCENezkdXnjlFKpjYNkK/5fVyQ0YxtJSKh6RFBcrwmaXoQEQrRqntoclj+J/ijAllHG7+6YdffHjvB5/Cf3lezxc3POuAA38Xn//L+KP7+OB93D8bQZura6kNdmwJr/gbGt4eSRyeGdlxUMtqm9jkv2ZtkGJqvhVMSO7OZ2Vq5YlAcT5Cucfz6DRdBXZodbrbo9JXY40wpaFWXSg0jovo4Hk3nlrngoElQSbO5+MRKZ5fIg+2p8WKeqRHjelIMMKIMLVWXuJQOJKwxoDcP1HLLZgDkIWk5guA0eYl5giLHnRcctiijWiEAkcQvg1dN+nOD3q+DDwAtBxROvV+vLI7migBE9LVIb4rwVIcNjr2ImVuFA1A1o6ED9fObMBYiCHvaYRjF+nEfNM+6ZM+GpuwiFtPRZEOhSQ8UpVxBxYxWhqaSeBCgV1vJfIA5kdMFDYVoFBsc6QfRvHCKRLT4rD9okmy0ki2VeIMjsHq1disnnCMaLiCTuZtsf858s9Qy6o8XbrZSnKGc2Vf95Y6cNjNT1791ife/8J1uV/Y8MwDDgA3ePwhbnTEbM22hpMRpFBDSbacz6bCBknYZlhrRO30FSFTwZ/TTLJQYe3JwpYsdaVj4VnxvBjjcvR4F0Oqc+y4tcvxd6kGaZR1VIY17jDLl2nFaEF++TmVtOULDQBiINm4WrUZu4vL75ZQofRIsJ3Wfarbsp6StjQ2XsiJF/k7fSRCn/Y+1D99TuonkIUbmhejoVzVboiuY6GsgxQCQ5F/bp4AitVXGxDAY5pME4GDb4UsTM6lE9OUg8hEH2MtezmxVgALvmQ7+zFx0CQenTjhUHo7NnUvgKA6+dSZnw0pKzXS9Bw4WWcyS3uZ1trKrRWUGGGTvnjC1ijARXwVBQyF7Z9oY6RJpfZoA5EleEpF+9Fe7ZWTXHnRSxKfGvsC6TPFpS6UIlDIbtyfm4IrWMdqHUVOf2yP7r33yfd//zzzCx3OsdszFf49/BODO27ygfM83ApHIly361fYng3Vjrq3bLd8KuWK3pXSAYTjWOdfRFSZ9XK9X855SpWQv/LU7mSrl6nS5CkppSqKUNNd0w0YX4ag0pI4UnvxydsKz/lG3dR5ItXYtTBuxZo2HcR5ttEoy7IKycRGFoRenL+RZf7OWqx8gptZVNNcWGVBM9fFK1t0GsloUXeE+Z2lMHsT0qQK5oV5ljXu9vrW3xwVAUqaDAGbGM/sRWxcwl2eogaBcF6KQGKyGMTSlZ1JjFjBT8VRl2hD7dsJgZS1eEmiIOt5K6bJDTENeZy6N6IqJTEdGJkddRL4hphzS8/t4ExqMyPzKhn5x/ZSmbiR0uICFHIpJKdjIqeafc+h8Z95izKL5k/VWPw9VY2d3NLs1CiGh++++ebNr376ye/iZTgJz4OHA4DBn+D+DezqR1bvhK7uDEfQDPaeR1zHxocxSPcrMgvUMJwKoQQK3FWpjXjD6h6le3yZVu9arZQhxR4Z9xioCck5vQiDsAeUwYGyr24Q0j0A81g6scpcI5YEdQfD/HWb+CAFECbVUwJAvnSf+ypqdr6fUkyOVTKT1p6q3ELC8S6rVYKeRS7p9sD8Nxsqmq5t40ApCMpzDMZ89wdyIBg2R5izD8fyRx0VpVPilwtPsy95XnvYfvowYscGXR3ho7ZKEKdrcGTR0TTyQ872kP6YAufIrafDsFBuRmHviQ03HRoaGkFcbdGGR0HtVnopwlNFASaBQGvBKIo81L+2RRhpa9W3ocRijE3OHa9MxLVXfCQNxATaYEX4R25brMBGDTDUmvk0eM21Ojk02MJQirNby7oSnlz+LP7gJ0/+wc/B4vkPd7LBz0T4TXz7Me69gYeiBuTfbcHaf+BspN+B4RkQ2fO05dZZ9qaKtpFQw5yCCdeTeGoX0+xNDKvEVQ2k8kul0jwc8ngFNIWUuke5xQKKq86rPolgqNyoNfnANTwNUYQ8N3tozeII0Qd0SZSClE/YfMDN5kc5xZNRhRE/QXDozo8hW+rsjbcD4ThBlNhv0Tkh6h/h7QAFE29KZjHQw6GUIaRKmJTFB5MFQfwoAVLyFoVp8USg4v5JMZpjAyjVZy7x6Hha46xsxNmJHOSJUCdwmTnrIF+wQojHlMntFHBQSMtbus4StjBtP/Q9WLC9NUUTo6ACIGbG4rNTmoi3eZZIpU41BUCZF0B1S3ijtzmtZ4pgFGWirguRTf0ckyw/Anfi3sh+a/VlYgFMTLni4Wit0W69+97xyZu/8Okn/+kdn2xfzPCceDgAPMa91/GBIti7dfve2bAy2JF19LBDLY3e4nfFGaeSLE4IRk4xilyO4qxJKw6D9ZZGXSKcmrkpT7KYIh5qUD5DC0rY1AQ+uRoQx3odkUC2pmBO7AeA2ExAfSaCzWdHHgKGYZNKLsDy8yseDTRzHRjaLSxfeJUu8aYoG9tysSY61IB8xDfG58J9eXGUVgih+wyxyWNQiusFZlBWHtV12srZTcMQm3xOhdmj6Km/h86dinl2XLFmPkVByBa/HikGuM1TPRBVi8YnsDGJI7LL7Ije5tEdpIkOpc9G/B/TuPkUf4KSHD65UTRhxMw0nUayX2SOhBSyDNo2xuZoWf1w5GTMJ/1sSjzJLG950oiDIfiyXkQeaQ6hxrKsTYTsalmLHWWobozZmwVtTAkVVZQUQjV9w7bWrqANbdIraKNokaJUM//aSi1TEi97lZSJsOpcksCe3Hvy8fv48Qf/6C38Xi/rZZDw/ACOv4/P/Pv443u4eYgny/hiQo7LM+suebol3pBsWPl2ZMo9i+gIlyU7R3JikaUsnU88qpwyj8vLTv5uvwG3aeAntpDSHbjAQ2VGFttM8ZTNykw10UysgqEgAGYPazqb6eJ+iHa28tg6JEmQUZupRLyZAaWRh1SXq2BlKZgBGKdZ1S+phgq0JoNJ9aftszDA+tCcB2NMRTx5ptUPeBToRB7iFbggjxwNiz47dBTvuYIzIEK8ZRrYirgn7JhBgIj+QrayEmcIQa6RGXfL1taQIhJgxZhAEo8fH6jP2JQxiYwtELliuM6Nq3MZqLzm47C5BGcGHKM3i+UGHIdBRo4MEkx6SyfdNOC0xzoIdUaOvOwylPQpwBzOg1uCDMv2y/ehEj8Rl3BOowIFCLCo+OPaIguZVASjkY2ro2dHCVd06hklK1LuFt/GKVsOjHnJ90o2ilrKq7fMp7LhLRoHh/nxuR/j3VfxNt45r9vLADxPgAPAPVwOfHDBPV9HzAxnXoQziHAKS+SGn95Zhm3O7HI2d7OjJb4tiI/ftUYKAxi3yj8JWh2tU0K0rU1bm5a1PFNO/W6pXK33gMnhYNTjg5u1xxBGLhUzJYFrY00mFY6katDatiIaw5aYlLkvJFwvjVUFBHnD5VekCiOdhnAigOIUQbyl4rKjggUNFRxP8KlGs8ND5uUjKZ71gYcJTzhSDroQG9gwh7RdgyP0XiRliGUBILKVYgcJxKDqSAtDPi28Jx15jjPkLBplGkiL6WZpL43cRvsPsgFKYn/MHNil12Q4iKXRf+CaXgvTqGd1wx0VIgltIpiBNggZkZabOyvzKUA8K1kc3Ri75QBZ+gNaXJcYyqWAkuRvaGW5Io8FFrA9C5iQNm7oQSHdFaRSWy+vy0C9lUPuDJLiT0wA33wxx+EPXsGb798i3suA5wxw/C/4wl/BNz6Jd3+MT11DAedpS1IfpHfg4ydkSb8rpSqMPeuGP6j8clZQu59LC4BO9z3ZySWP6fJZdP/ofMcNYcwaK9ONvd3wzx8qJy5zHIJ15o1Wa4i22AKLxYfhaYQSRZVGnrY8mOjjuDBBmGSoFwH6pitgacnCBDbMkRKSA91NXJOysjoT0k3d7/VrJhB0AuTKS9hxsBh5Z3XUv3ovQo4FWMQChAKr9MqwEbnOUjBZZg9J6s7Q4FKgT0KQ2lywtAFhnDzZBE6RjNrPOpZ6IiszL9o6CDEiIQV2EZ3WCYZKOskmslRjX29JSnZl8iG6uuK6KIlSy77kQfq2aFLRBplnuxWcodgovXvkL/6YRGDiBFw3gGnz3jVcQRt3cnvoGBeuhs88wINXYC/dG3cIzxXgAPAaHj3CW3wc35r2NZyRqboGcB0hL8ZuDd7IqmJu6dclRJrkPTFnTptCZdXgtiK2khhRjuCDBmDkTMRNjS5TbSQimQv8RBxxi6VcHE4fCeGO1qWiBNMzPKyUxVpwP17NHpJbUpqsTouNTJ78NpsiBjaLWfonKqQQq5lLD3miVXDw+HCaejtKobHFZMEcoUZhiWzy4ynwRB/Fb6EYoiyIGNbfFHtiGhVyzkRBG+GYyRUcAFwZSU9YgITZSvEySy45ufDnKGJfh/3jkJntMNoiEAlHnIzYTCyoZYM2pMlcmWzQRpmEk2t6eviezuzuhAJh77Vn6PPIlGyrBBOJPKqEDl2smTSIAd5HQilIdlHInFDwgfA0xF8FEMHQN83SCTRSxJDmVwTTmdwZk8gCU4xZ32YfYzbJLrhv/tM38PEHdy3qBQ8fGSY+/eGv4Mev4RM/xrev4wPsK29X717hcBcscpaYmPkcaviSsi2aTxk0t4taSkaaUpj0xOaxDTVgxi+SRKK1S4kPSlWlc1soy1Kv7mB16BOWqy84lB8QZ0Vo9hEpjunyZgqokrnT3cg2TLhJFbilPnFALF9b4RzEkLvLLQpjM728wLJymARI8RpPZWuNLErJWtOsAXC7wMIWLfzj19jOdyNw5aaCsdxtjZCVnU1hKafkkuyobQ4BcwJYmD27AGyHGODNcCmCIHNOiBJpqKKT+UkW67eiM5nLOgcFDUGfbEvbyDSKjDpBc/Z3fwZ1Rl8cEbYF0MhEz2mxvQXIwaY65HmreDtMBVZXSnGuqJtEatrj2iwQ4Xv7NG9Kp5HtLA7Y/cdvHK88+PSP3sHLcIfwvHk4ALyGTzzAj4ALzj8ha1eu8prpHUxcRyrLtdc0t0psjXwPPmxJ0by06NQ+jdaDwzVwsyYqPeCGi8uRGKkQT7Ov6anZ6eqQ9ZFsnKiabBOZTo4DhWav5Y2VPltq0f0QUdlQhGallbizEhbnkbeCwv5Zmkl2mXwoZK5EzFs+bWuuwjgPO89C43mreEeKI2TSpK4sLgcKSecHipB5cjkSK+Rv+BX0FNH1VwimdcxPu+kiTrxUMoGE0KO5PdjiJq/hzKrIGzftSZRoAwV2ZIPrKFinjPrMjDSWnHJIyABgFQp3FWo3EbJneW0wk7N5da1EfCGbxNVwVg1U0QYHhZNhhdM9e5XZtbheV6uUBJmJFfKuoI2GrkqflsYX+l0IHJC1DiZ2lmVXiyxZj75tmdw+85MvPXj1ex9776+fs34ZSngOAcdXYH8Z35FNjiUsllhv1f9x4XtjvxmDJ6xbduql5rMj2VbsK2X5IrN6pVdMsGIj5ZDxvhNtqHrIGVk0ClUGXpqb4AP1scdlf/ekRfQ8LmKmy1TS03infuJGP1H9srbipUphhAJk8AXXQACDQ0STPnReEohrX3+nqorH6GoX3WjXQfMMm3tWAhaMVjfFRskpkAdM02c+GHAgWzeMNFdPZAsF+3tfi7Tce4pKQDsWEEFOOp8v8XJwztUVRpZBkqs5MQJzn0fC0IlUSt6oW+KS2Xv8EhtfiI0xkKNDLYxFURVP9Gl1i+mtKRkRHTCmQ+ejtr+hirVc2WfawYTEjRwa8iDa0FdC4kE/94rqGk3DKEGQElawYi2xQZlW8bLQkzijM6mqJ9MrmBNN0xXmTuNKEd7TBvlhNz9+/ZuffPgru5wvwz48h4AD84tu36ppW9AQNzY2OKN7fCtaehdEYTVLkyllmlTWGxu1PHd0Yr1r+b9J4jXvJpRnu1p+PNwb5keilrdIvJTN/2kk6qaYhgn0rhhj8vCgH1ptQplAEiRIPgbklpGptBRn5N4RmkwjZfoyii3MnRPRILTZyTNssHWGGx+DuBPE+TERiQhBGXLf6CyubOaQhsXg6dKmbhrhKSDBNnrZ6YooWz36jtF8LWU2RH7zNr7olvs/Am1M3DB3ewQiUU9GftQthk2O3lHcZB3rKkKg4MGz5tEdMSAtzuQQV9QcOtJ+bStoDBKdaGq5N5ACKD6JditKE+8U4ZAQRLxs3RCCGGNHZF3QBkqc9ZC4LymILG2psy9woEQ8OazIQApqiETFaI1dm4WYRiDIoiqvB+3rbVwIiS9q4sUMOB7df/dTD19+NuUjhOcTcERwNTbbsHV4LBBkRQy3hjN8c1ZcXi06izPyCipawcQWW5yCpIYBrgCRuHVJex/4YycV4Je6WaQIHBiFB10UMrEW2xdbLrSf+WnZTlNsQzgz+KAf3v5B4FTSYfW1O/IRSZdL0utQ0UaxkbYhQMARJQABTYIVhRdOr4gPAaP08u7rrM/YhTkrZVFBWJwCXreXaiIdKrngUpAKYUrFHFU9T2QweXEBhcOSt7Lx290+HlTaGD50byBwj7xnm7hBATnzsmch1+GtMRDN1IHUZ6iCgC4wOmTpZDqg1qO9JodqvzMe09mFDNNsG+s0IUtdNIkqJn3AiLLRQUqcWRSgoHgYBQpUAbJGBUlodTK7ljWIO+Zol7ay2oVbl1SuIg9l5Obufh/2BJ//wd+6QvkyrOG5BRx/F1/4q/jBD/HgKCdejHDF7t6CJa4SrGZVlFpOhcUZu0pWLm/FKJniYSbX+8b7lLbvRsAWnFX1miZzvig7WQpi8N5MYglBcHBexC7il7LXLyt1iHUH0rbOn3mLiy/F8LPKXPiIjHk5HqCioVi1LCVYOYBLmNgEImHy2+98iM+FksGKKynztZS4N30Pl4oGZB9GxUzcKZJoBvQ3sNUbPBJUkcHTkRB2vcAUfbW1v+ZKaBJLPgPWTMfG9EDkggv9FqgQSgFUDKT4Mov4QqbBJnojAXEDsRRXUspYin8xStkCztHsSmdyFUa9hzJiT2hm4rGHKTuLu/VzrGsxgjYIWVYIAkUhOxcIF1O0sokwmmyViWpEF/q6TbXX0ZKs1AVreqnwnJx7YHGypGK1xFvCLOJy2PGh+yu3GIuXYQ3PLeAA8AZu/jx+5f/FtxxWbX8LtkscNxT23hLOnSUluqQ4eul7RFIRwwpuTjMuZCsaQPBkU3TUwqlcrb55UXXWnoyul7ulXCM9UQFNuE/KespcZRDD34GI2vLSc3UbZuyahDpFkiCBgpp8ICQhMquYYP4KXFi2aMRdxKLGRBhhL+NE0e5pQCx6idchXAdMFJiSurbWaIVKgurkzdtgOJrOYC5uGCWOoUnnRCnCwBYWt0p6iWLpZKzFiH3YRjBwcHQBZgUnIonLPrx1DM+xJWS5FiM3JelsW+hJCgRSWM0u9PLsri4NUUVlx4aohEQk4tKwHQSZlVMMIY3RXv0wb+gnmHjxT+guVEEbii0qPPIFfKzOHiZ2TLw0W22i3e1t4DQpKTUCADiOA3Y57O3vvXMLy5dhCc8z4Piz+MQ/xE8Nl2MxbzvzzwTfQQdbLzwnXKNvHFyKK8apcbbCq5ENPhfR1VsRc5L4pjgKDtqzWFNwKT8J9ABLwzBtTJmtqvVPixnKQ7ZgNq3K6lBTWj49lWYsukAqNW2MVZpKYKqixAjF3Xy40yGRPchdFFqL0rCsYewubi4N2bKwuj3C9RKrJ+L5CL9K7opQj0jrWQ7GBB2zIh57JiAQRGBW9OfcPxHOfR0MAQiGnNXD0ddWCEcQ9koWXMTqY+IVQRXQyyPHaPQGu7tBKJg5DpsD9JDOtHFyORvMZ9/mP5MILPrGwFe2pRYydMbDeo4royEHw36G2oJO+J3bCpliDiFAWBTBWaIEYeBzEA+UFQQ5XSpQAHdFoAOFrIubFjHbKddWksNstKXQRCpEJ8F2llt9GBackyz3kZS8+8CW2SjnGlqb9Oyb8OFxuZh/9ifvXGP7MpyE5xlwvAP7S/jpY3z+NXwby8LKmcnvZnEzYOVRotOvHNKSCcM1S4/vtNVGTjXYko8aWfXpZlalWzUUVasUFWz8Nkc0kDsp8iHYXBmqaozF9fo4URDJEt+1SfgM+iaANMCSK81YGHUiD37SJQ18CEMvhVEt88IyAAAgAElEQVS9zUJnQbGvc5YSCEBtea1qqM/StiA6gQIUEAREexaEUZZOJpYI4jB70WeUXEBDNk7sgQgMlLAGrYgFecwebR9h8ehlNklb+lEBdH+oIdZKitUxaTfukx3VR4AnYqZoXTuQLh8HWM1RKYCfwZNhNTecysKQI8qZhGkg6wxt9umKw2Nzq+17iBv8jpAnf7XNdjBxcTwsZtvk1hK3AAFZ6c1ODqq9RAyCNmr2Ai/yUtSVJ+Lpbeg1nrGFUttzsyB45zAGT+qhBaZwSsJe8/cf4dWfsaAXPjzPgAPAY7z5On6KXFpPW6ZhGVzb9NPkHTg4DRt1A+gcasJsWW0Froli87s4O+9I0717UYvLQdLTSizCR728gAPETo4VFuzK1aIHZTzGFiYBEbw2bhithDVusENQDk1gRQNj1UAqu6yeUOD01SMcEG2VJIEF1xHm8RXj1pQhccyknCyI9qJo7XRio1HNeCIuUHM2TfqrPNrFXQWbTgj1UlQfRpj8NOFJXDW1uHYEHJQDQ3NwlIPJQadCX/qpkbUFchDGcoASV9TYijMuYdBwKSgW78UJnrgDtmhjdTIu+GAKL2x1WpAgahOoQueBFJSuCwjCiPgSGVmUJmQQVMRbefzXcguBYygzfzl9Ka23LIsmq8KUIa1kK1D4iMHa/1oWYJ/5wbfee/3jbz38Oz9PKS9yeM4Bx1dhv4Of3sfnf4o/uWq57wJB/JzgWuIuvZh8GqZbuV3nAyCEvMg0VTtdHw3W7Bs5aIlLPlmCSaMuWU7bSmygxdLxbN7FhVOzyIfgTd98mc+l5QE6pGqHfGhZF0D3eQwjOsFIYpRZRHHLx6M2xTOee5IcgDzeKvBFcUWECyGgGGLfiexdiNLzVHLvCGBkT3QCMdCQb53w+X72ULS/7E6Vd1MJlTrmkMM8KubAbO5wGlUzOWsaZXXwMVebZhPlYFL8N5umvm2rtR1mdppAsZlkleTT58H+1ZHcsyDqKPUpo3sTYtiUy0ogaKlxcxS0ITjDSBCJiSoqE3VXKPJIu44KDhIlxK8zu4hP/6aijVj4sMJB3CcoiEHfc9ExqcAlK8VOaOK10FMq8jDAU0WUUJXiBrBIifccD1577WMPf7oU/zLcNTzngAPAfbz5AD8+4Df90Ig9PLBdNK3JJkd7XNuy2qeH9RWlciLDHfHNuv6wICeqItuXOGvjndGGW1sdsEA5PvlYpjdQYpvsrQiTD7IojFDVny1fAER01SiUPgbKkOmBuqL9i59DyOTIzg1nN4EZ2JSC2AgSnAtewZCcsIPAIktHmnlt/zDhaeB1g4URc0zwRIjGISeykoksnqSb2hQKJEyD5y19h5bEedxFxIWAMCKXabSLZ4vFgC1rQzlSCESmQ4UdR4AyY4RH+tUSNkIBycpfWin8LidTYwx7XT5Tbp1eb1IPJD5At4UEcOpoSfFbOWqAG/hoUACYZ5sGJiANGh5Sj0VO9EQPKdJ6yZpusUIDPSVxAT0t753DnoUvRBOMVihrbod9+odfe/jaZwz/w0co9WWo4fkHHOPgUcONnBVxZZ2i31Hbf7JP6U7OiZpu6NoKZ4DmNqjRWQHYInWI2b6ds/fmOIMdjUlMUwe8rnfs6N3Mdgd4TEO7Hs5hmZKAxqs8Yery1rS86v+NprhYgqHc0gE+ak9LRhAAVMwBE/SQqx9HlivwwgC4m11yBSqWGmT1IQdChTWh+NLZIMIsG1PCBs8Wo0ejnzQ6TfJ45WSCgXUZBZR17qUoJ5TPqsa6SdALBoJ6MqIIabG6KIOCTpgl7GFZSitHbqzrLxxWMSQinzzaUy7F4qDJLYsvbetGH5xoaKPY9XJLylJUgRTcerpmLYm636Iij1LEdgFF1kqUVdwiN11N9Z0wwjO8HX3rhmlKU6Wt1uE1kdu20pvEscbPEsvo8GulSMo9vzx8zV9/9L1dAS/DXcOZZXzewm/j+457N3i0telXjfpZE/mW4DZ8sL3UEX9LqSvYvy68AV40RJbSUtqEtlkYZ6en5oAqmKK9Iq+7bEUTBVO0XWi46TwNDVrjy2741Hmd/ij0U72J8pNbcxnZKCRXj8mZWeI3F7cbzySYHEzFgxnJYKryg0z5VLYwlmVNMBXVTeiXWwt/sVTx62ZAZ6IErEUaokRRpRRtfMCCLJgX+U2zV6mglHmLd3PRJKsT9L4STFEFVYTwufwADm9ihJIi2EvFpO0tbGukFhERnTSZaNuMaWK1Tq7iCx7qSyFq7Ivh54hOSXQqsFqBreuknM0ZSF4nnGqLZXklx10yqQrgPC+sCtzcObU3qOrSCVRkqMipvpgTie7AcfPZH77z6LXfev3RV/Ey/Bzh+fdwjOC4dw+PjrKM1yc28sbe3NP2pqZVXjv6k7Avms7su7A6RyTzv9TTBHkohrjCOchtsCpyLdpw3NXnSyo+k0ksnKl/hXFlG3xcnjE9WUSJTQah8ezIVNnzls+zTalGLQuN53hnGyorSlIdDNFQsgETuvci+NBPEqsk0M+wgd4UUE6aaRirHDsh6BcRP4eVw8V1KYF1TOHFIYF16Em3qr8hBAW9AloKVAYHpiNkbk8pK1Oxe3SuxUDHT9S03DKOi5CnLqs5dPkpeHOdpU5b13JyRpjMDmeSy3ATO10AxEfAH3MIccTq3epEKXFCHDWxYnFpmCleznUnvslCjelqj0kvv4lL1FQr5wQTUvvEz8q5AhqUgtYUa+m7lilZZuRMlTYu1cOx82Ib/PHr+NGT3/vUT75yO8OX4Wq4Q5c8L+F38M37ON7Dq1egBk7QxtYJoUa9Ep9xPiNofK6hgTMJG7HEu5AGuGyPiMSmw4YY3Cq5aJGyiSsWga3QhCbzqpwwH6lZ2boDfuOWFceGXhr4bFWdH/kInhzqAxQ6c33WL0JGLtPShWfIYAbgSFtEt4G4KCzriEIwSkk/irBFeghqjeR34wWpngleWhObmC7uMr3+UmApN8bMcMM0ArIF7OIqD1dHQowprV6WCFCkHQ1I8BSR4vtRBBkoo+CAhB5aRLnslAn7EhGsM24FDScRLiHt6BNAJBhSCy00uU6o8IVitJptVkyO0SfI/my+hHq3OEVyAAbB+oYLXRECU4qeUH9ZqoqlOEh6GSBV5aDGtZXIR8uFRpRSVB1ubh77ozfsC996By/DzxdeFA8HgPs4PsAb9ZUshi0EOU3cpd81scGFXZY9jtkSX0ckK9SICA8QS2xRtW2IwcfloNFl8ohflrytaGvNPm1oKlqLM4OyzVNzuLSIZQXHsyxkO8VMTNmgDob68fd2qxyIWW7Fg7V65oHFg7IczwVD+WCszzxTv3r6JxApwrB9Os6lWoJHpwxsDfAc0rDimInDnSMtGC1WNmrMipvuPK2nfQwCB5JydIi+EWPJdghQCADjyaG53WS2poeM8pXauc8j7kVrI1qE9WHnxE5VccNE5aO1I2EOs5BB7MyIupSSvTF7M0dd/pagEKGklzletolErj4TMz1F7gaV6SFnMhGvTIlD9m2oPWZxC3qo1poQoYIGJEqwzHjCZ2XLmgufFExlXlvde0Jqh33wCq2aAE/e/tObB2/YWz9655zDy3DX8AIBjq/gz/0O3vsY3niAP5XkMwBxavWxgIZd9tvBx2KSNcX7vVPKDf9Gf14orChMZ7nBxyLRRFsAyIdIlP9dYUxdYwpKRk5ZhJ6xC3w+/Z8IbAAPzwg8oTK4jfOe8gF32mOXRvNcmBArRZiSa27lu26kHzznpdzKIaFO/nFpFGmsmAQCkBbW911D61lgDl9MOCxfe5loICzkpB2rGLGUMt8o5hFYxsWXhAINcwjyQPwmYhiVivabZAiPdP3CbSAMI3TIMdTOEKsLK2W9Jtp4QrE5dMJdYnpqSMho7YDzGHA5rGi+CKHQ7gaYazAlxpuzs2A1s9L3XRocQcmqZdxkmYKqYggLXYl3SxXFYCukqNsvmieg+ASjLFZL3ZG9uC3aUATTJbmibIPaauSk3FsTbwEflcxw8/jJT9/88OPvvnKHLC/D7eEFAhwA7uONR/jJE+ACN1ywH3pnUGOTfhVV2JLiKxNbolcm1jnnyd/2tzYYZWfUpzUQlezLthJaiHh4Vw7lgS8rqzoeYf+a5IDZZHisDUWGEKxjaLZtVP8iGm7xbchjd+5rUBObNQrbmCUQW9AoQpwf+ZWv2XRhzWMNiIBAtjVEm1boQDsnL77iEtY0ujOAyHTzyHlf6VBhB+ruEPn0vJRLdBI21luzGGyebmmG2EWBdD+U7SMBrWRocWjnhozEKDJEjN8hzvgU6RhiBGb1eMz36uYqHTfjxCYA7HA2crDlvaiv85JGMejBJlUjyk0hrHPMO4FYMW4n5RSpuCvC0+WQBiwYqawvydgkrkXFNFlogoY5vphYZEgcI0sYO6wT8SCgYC34wpNlcX40ekgRd4IIkrGGk8xdxU75cpbDzS7HNx+/8iuG//6uArwMV8OdO/J5Cb+N791M/bQZzXfBHyebPHY59ym2vXvWE3fkrMzvgC3ucjemu7wnEumq9tozkaqKVKvxfXkX/TQvc5NB6q1DtGZkkXjJwk0JqLs9qP/67oeUX/ZkoLC1gwpS9220nR/BDVyjLhsmkoyXwqTsPkkhs1JZR3ThbYmHO9s2uzpSqnzTROjzN/p62pa2q4N9LTT5DJt7MjJd7ubeDimLBLBU8zo2yIdjI4flvJWjCJU+7EfikuhljvYsJe9KdkEZsi5TnWrMWCI10ZeU7sAP0LAw4RRECVm0+BgEstiGYc7mvMwptexdyJZ2xUMJMjjQCr5JlaDzZl9EHVD1Vg7GCj50HlQmhYNIq81SIgLaciBLQW6Xz/7J337vY//um+/933gZfkHhhQMcAP5DfPcG/iHuXYUaZ1N9AcXzv+/S93xOAMFK2eH6ylZjHwVMMGVfzQUBtMSiPyAzeIdOEprIp2X73rNQXbrJtMeTs4KMeivwSscKaWhncYfaqsYnMYegIsE3SHRCJdpwTAE6ZXOoYAXV+lgoV8yRmKbkFcyxWP11n+l+52kqeGWSxJDSxXRs8UqKhJQznu63ZUEwRwowG3xBKmIfZhcHKAnYQXlyfapME25o1YFNhmKpCqoo0gq3FShcj3iJyN3iRdgRZLwsZxRAJfSK1kJF5X6RDdpANu06Uwv/4Yu0SqB4JeBIZwtFJJBmLuhh4w6RKb7NokJGXNvwKuDg2EnOH9w/3njvH3/6R//Ti2gjf2nhxVpSGeEGfuA1w5Opi8rNMwhi2Ex7Jd4Py52Zv4Jy9sJsWV9BQieAZp8iqrARhtMbJg8OpGT6jF8p9Ez/ymV2xfWM83KoKtO7LtsmZBnIYbFSoGsohgvPSjfuI0kaN7/AjjhgSrdrZGsI202N0n6lzaa1gO4bmZpYVltqk2B6+GMHQ9RQz0qHweqqSnRKLKbwU7TZap5tlEbJpRouMZNsXneHyL7UEL7uO/HZLRYbSIMzG2I2p0HedzVgVArlHDAWYTkKZgGla8ztsGn9orjo8ayXdAv7F8jixIJliq9jtYEDMWV1GNNgg0BhvZs8hcCEZyL8vOSFbxIV/gkg2MMFNckVJUjTHYJaULKbihe/ZbJqTN0YPSxoQ4Pyx+ZW13uusTFYZKybELgfl5ubx3jwsX/trR9tBXsZfsbwgqK3/wgP7uH1h/jBOg3qxaJWFqixEJiA5968W2t6le1mPl0X4EoRZ4WeZOnPGu0ZZOfWrFpto6iED9cUkEshobFGXBwV40+9FKnYxFcBrukcLKKvrcwiYDiGjrcU5jB5qjJzT9eFejugYtO3UXwP3RvRXCN18WW38lILCgSz+FFG9p2PBKVE8T1Un0rmaj6PJEjB1N2CJmotUQZGelZCAOWQm0PLI6f6M5YS5ZaWmC0/ME3OXpFqYjUZ6vnGiNV4REpKagTXWxHxloUh8m7eT6nEuapzQsD09MtUuMP0gkJyN49igvTabODCus5S4cUuO2R8lRTkiBj0pg28IJ5b1l+8lpuNoEiuQS7r8SYPmYyjEi83n//u38bL8AsNL6KHA8A9vH4fDx/OqwV0x//FPF/HGRsUv15fZbJne0apJV7nc3b3ru4WBx/9B6Liw30YjHprxtFu8Xc+yErxO2nJgYkWqsK4rY57+EJf5FfIkL+ARNIrw4zz0Xy+KTPLdbtYqXuTNows0kJHs3B3AX0HlnxAjwXl122n/eQuoL6TIpSjcRhPHwmJAyLQ5zHe+FBHiPfvt8n31eaaxKwjGYZPaLAcoiLWL6bPI+qcJ5vBw3OhI2FIwzdWprMk7G7YAZ9dDlr0aInR5TFMoudn5+bG1fTHjEHCcTWjw0pbvBHDQiB2LETh7S28UCPHEL6lZd9GVzW3rqqY5GoGdSPAzspW6Ls155myqY6itZjpOeVd6M68F9W1sxZk2za8Hk6Q2XXKUqRLnzheoo1fRrj8ixbgX0z4CuxjwL+Ft8alzb/4z38Z7Hz3RmapBMY/lL+Sc81Cysh+SmlJVgRT+it5ZQ2i2fsitlXBSrne0tPysj0jO2gmrPLBWPSAAZfZzsM7gEulvMSDdGT0zirNfLK9BHOWknm1hdMyuTSJs7jpIzD6BWBZUPKHRJAFDUkKn8k8XQByF5TBo8Xy6a3KM5/tZ8ct3EAafXqPKqhroO0QbbsvLH0clFAidAONKoelCbHdSMNGns2Sxs82DGfeKHfyyfSsb/qb2InC1sWI0oPG9YLcEhMP7mTihUm43ug1g3CICFrRZm52pPzlD4VJt4VbY08rrma7QpA5uhJhJH9bE0/Qhkm8QBAtXSFFl9bKP6GxxooFUbBW000jMNdSauO8xq/I6vCxY70pzZfhFxReUA8HgC/g9a/jocNuFjy9DLbuP7jupbCFgcmDwAk6uXJpZ2StrDvyPBNjrYVroi+tMDPpM5TFI3tsJthk9xS78gx6pvnUaEQrksWUT8rQKhUQIMls5rWgdOq/zEu/yEz3i409pBSmHx8e3pKSV0tELhhbqDuL7SPpkcF4LhyJZgEm5tO8LgoYEMdvOHuLnhg+zae7Z2yDkGPIQT9H3Q5SfCQjZ62vYhef9bHweHlULH0PYdudlZ/dMRvfo0XCnxLmzvLsc8TBZbONwyGBcuY6O7SOKOXAFlR5KEZ0mSG+Kqjgcea1klzD7unZExHeksXkUsFEyuAqcrXTwY2TqzK0ctmWJCQ7iL1GLkcSEMap2MLHapbgU50lBS70puhNVEs59Xycpd9OWZScAYeZuX/uT/7OnTm+DB8hvNBA7nfx4BW8/gg/1Gd9CVtkcA1qjLTrsGDHc3vZROqg6ApW0JQtIrlSYr3Vn4BQlUc+DC5POrIGmw9usm8DVCH1qbM/iPW76T2oT7g46t4Rn59szV0RuiNEHuTzcTWfYYUgnsrNLR59+AzOFpCHXykiFDOfFpNMnQbRLPWd1SBwQJ5JrQiAUmLfKSK/zMW7u+PG+xsos3aSkdzCtldpUZsFO0qkz4RASiURgyklcvBwKAbzOXDlcXs2WqepnR4RsZBRStwthl/3dnCcbyZUQQa3pTT72oFC40mTH7CsqQRxTTX+C6QgmaINTjhyEK9JmXYrQUkvHhHhfJISVRYck0CxKJvCv/ZDtm3PUsgyrrVLKPbBPdw8wZ/5zku08csKL66HA8AreP0JHt3Dvcd4ImtLW/DRQcNCsEEna65zZLApdOV/laAkXin3Lk4R29yfT8/Ih3GfGiQ1me3IAFjs0KQAJIhSxNsxVZKpPrOJGMbTsCXfUCEW6oRs2ufZ8pLFWa8CBYhTvWe3DjfABTj4SgjCqyFFAMjdFeFmGIpSfCpRhO7DSEXJnX0mS+CloLbDQ88ntQG8AAN9FUjXRXpBouFTeETp4fAIb4pkDEkNc2+ERfNMP402bprD8LuEt4NkuecD4eeIL7rRexF5x4/HRGNHy0srbI1pTdmvgXty68bsFZrkNLwEXWVhbORTR5psLkmyHtHCG46Bzps174pXmOgiSIUULbuuXCTWguL5cUtMrywJdYLCqshQ07PqXUH58ttq6jt6clv47zj4Wuxdg+H1hx8+fP3loaK/xPCz9s3zEv4TPLrg1cf44SHbWZr1OUcJJXpm1O9IcIIk1ErpVDuVShT6KZ64IszCVp84yjaz7fNRoa/PO6HnVHsdghh8ed8E8QWWXHC2uMzHKFmgjtc9WPoRSjetkOwOiJTgXwtqb6OgkYW1KzLU902wUDqf41JU7kEgffGdILgp59XPkSnKYfGCSC10xwfUvRGbRNQ3U/wWiGYcI6Y/GrdGGClpcU2fZIUmjafIk5zTeKYPRnwCyrObytXVUQ0159hClomansbW0kxu0ca4u6Zs6BeE0YmzzKQvMy/zWik0Ozlue+bSJiyzdtyV+MjKzSvSMApZJH31WMibXkEvgyghiIjU5E9uIpW4KLKFuuRF4NLP8QTxmW9///3X/vi1R/8rXoZfWnihPRwALv8/e+/yc1uW5Af94nzfvfmorMysR1YV3W7L2D3ogQXCFpYFHnrigRuwbCOEB5aFPEB4QEvQGCSUkgHLsk23Xd2NaSGLCQMoCfEPIIwwlmWwZyAkl1vt7q7sble5OiuzKjPv4zvBYK+I+EWsWPucm8978+7Q1XfXXitWrFiPveK3Yz0OXngL778KfQHI2FgwvsxSVPq/seg9gNtmszZtxi48E00qeeQWHe+NpHz99FceS3XynNFWPBRK8qdI0tO/aH0yEFLbq7g19Qk40/JW1J7c71Pp1E1J6divIMwWexfI4WG7ImAODJhWALJjwPjtcgvfGwF7xCbZtlDYfJx8BrbdIjV4U9wwyUPnTXL8wIoAxYkSFk7cxeItQwdGwueh1hpifp1NI1PXTFcccnG/jGB4UDB8LJuXIna6eEYdHZ3Co2rUcOftQWxIuxr0E3FbT0KFfCHucQG5zSSGFmIYDqMqODumEQhG0TAE4UdmLFs2YhKmnkdmNfN5TIqh2QJTTF8ymfY1LxQur2GCZ3XLRXh2pv0WQpMHGXJ7NZKZD4GjK0KBbK1dK8xoI/4mTebKIjFnSJEjc/YcW5MuRm55b053wC+/8MEf7JgO+tioN5DPFf0k3vs2Xvpp/OAmzxhs6S9ihV2GC6noumGBBi4IX4WRMcSlLKxS+bKIaUPyZJA/XjTPYRwfX0nFddFkyWFT6Zw2iGRpEsVZkhinFU0f3Ox4qBnNbFPGLZechcWyayEqBUH1VVgpcF8OuTQaX0X1TwBZYOWE+y28OrQDw/n9IEfdbyEQthheLh0vCSHc6cVNwu6NtDODeUKamy/epRFfx+zqiLFXJJMQCqcihGJiiFMuftQQBWLwl6J9g2qkdvzkW5nRSZITOmRTLQUrVGTA4CNNAlowDYEofq1nmUOTNDSMrXcbpFWYOgTidQxtJ69GxlI1MvVA8tOg9hsBJs7CpZ/19PXf/scPX/r+/ff/18MifqL0vHs4AHwbL/0rePcDfPASXqQ5a6OPAjV6JMGpk7QLDBIL+w0QmcLX8DR6Zn0Ewzeg8YqOySklJYfEyGvfbvQ4vvthEsIDgeCSZR0BCP2u7MYftkSntgsDIzbNbHszzhZp/BrVy3bCPqDF6qunbb0mdnhYNb0RxB0q0SzmtBBFvufUmtmsWuRwf4l9l5pnhTeOCND7OQQgl0a0D1mywWds4RUY+yEQ2cdP7kn8aJw36cY2WsmaWm20JtcIhvOAvQLeZdx9UTW6HtUL2saIeXG8K6mvYQZWoilM/GggpVxuxcNgW8e4NXPTFd1DjGnIUS08Qki3SwijRIJLIohrpTACiArlvKQnvT2DOYGGHC5og1IFSSa6qnVogyo+xUzldooRySK+y6WuIacKcL65//brP/b62/10fdDHSAfgACBv4LdexMu2iSM+JRZQIP7vGFokcRG41LyFgUxjC0SSsBY9rEHMUoeABROk2C2FcUaZpO06pqSSC/fI0/g9lGSNhFwjqf2nQj2LGXIpzPCTrpbqGU/DtISBD2nmctiUPUHOhiHgsIACAc5sDyYhmBDo+ICAhsZF5p5x6B/oQWy1BWIWnUw7Gdrtl+hDJVfA910K/QQ8r8WQNAybbfs649KwAU2AkEMHbscaisDW2g3imKxgCKNskMKgwBA5CjLIYkNmrGrxqPN1n1j48MoS9DXRft8XLd4Zn5di/DaQTDPPyANsCyrtvCAHQ4swcjy9aBXoUF4y82DwMX3WSxcZLsXCvIn1GhUUMrlDrLKuf4Y4DE1IsnBMYqDaZk0KzwJtaG7UJW1Md3p7Oj9+/+Uvfentv3FNroM+Ch2QbpDtHn13e9xHEh1DhRRup1ZNvA9H8jTUF80YYkfhTrFreSR9F4zX3WYpngx46op1jdhl6TzpA01ZWkzosTNNx+nW8OFTuXJmfv/o6465anjmedlFEptNhGmnqvBiB+lmaxYqSVTUhZY5nMfkRMD/IotCjsG8dOLF0VpSWXOxFguVPBVRUFaY2rlwlkIx+lQSf7vqkU75RtOBerxKtr7AtBDjiyN5IUY5L+lAylhBkTdLRlTKU/sYNuP8vwHTkQletSY1Yuo7yOCg2NTIW9cRknkmNkEWmBdW+K0tjz34SNnTIoVQrenzQSchMVVUtqSDTm1fcExq2qzkJDCFPbvifN7ibr/x2/8FDvrk6fBwDDrhhcf44IzbE+6y93AfDfSQYoU2ZHq6XvgK0JSk9V6NHdQygq229o72qag8SnG8MqIW4z75MhMISdhSleTQvBneeIlrsK0lNsc+15aWPBTkR3BpuTpRC97XKSRhyIzNm7DUaCihqU7KBkaXjxEtm3sj1ghgyxAm1094etXMrbK1jdR4UOMNIabzJnm4HNxLIYDdpmUYYxOq1vgCO2Sr7nswX8hm5NxTIgYCokbC+0N9IW5rrlmylTdAgntBEE6UwQ+DguHwqDUfDRdnYm2wWU0plzvZxX8AACAASURBVKdGQhfjg4XWhsobmmBHjGc+653eIN2LrEnT5ol40Yr7gYXM4GNCGxVJKP1NwgtPtv0l10QTiOlSC9loCbaaUZtc27vjzaNKna/jo0VP3/hnB9r4lOgAHIO+Bfk38J7gsUIFNxkbD5IpOMMF2PS0gw9Wect01mICMs97RbiofUAzgYaqibhNY8Tgdm6wuWUOtDGMQP3uZFTh8mHrLLNhdn34oyZJy1bBJz9uH9lMrB/AKIYkYxTXEAVnZAxR25CWHiyXbaewSzj8sEnsCMGAI1bH2PHgRt6KK7duRBco3MT7nobQRACIGz8xu+u7G7brRtSY3WybjbedK3CdhbdlGAKwAtUXU2zVQwYIUh8eNIrigIktDwEpEr4Wk46rCMVb++RhUJaBytASuP4+lriXfWzkr/iNMQ+5JMQ7i5G3RcoMEVjuiE+UnB8EiTIgEObUlEOCLaON5JCAv2EhapIcMCKjkwJ9KMlQiOTs2Ankc/dzLlasRRjBNCVpThLB6XS6wxnnhZCDPn5addhzSv8m3gb0FrflxS9QAIuGK2bSIivvAgT0cKSDEY2Qi2ijVGGVJDXSib9KLJwXR2waU5qWaFEDiMlszGQuLV3IkSVjbJXwRRNaf+nOmGzybYkBvPICFpKXQmIBRWl9JMtHt65xjrzCyo9wd1EH0pKHV1a4gqClnLJ8k1qeCuV1mZi5/UgOCYlFDUBPo7tDglnllDHWSqTogFzxUvoQLsmTnkQxW0jIzHm5BzZOEAxbuNjbmmqDc3aACcGydkmlTgGEBRSFnzwTuSxNbGQ7OZ7WRAq/hzmeAIFnL8XNMhNKMCE+rqmUCVjUyIJI6NOAQYODLR74URFfeZFZDrfDlpHwWZ6lXLeqfAVsUDmd7+5ucCO3b3znuFf006PDw1FITzidxwEEN8A9FMgxsyHfW4OgyBaOXMjbwYICF2ZsVDXc2ZUy7e3QMbMOwx9/PUfmnF/x+MSEff1jzCsS8SOLkByFnnwhpFZcTVcPDDm14gLYtsr4YzPf9r8d9AgJ5MixTZ1chKiO60eHMnxUZKuVV6HKgcLWbJTrAksXIM6DbDHu0uCG8pYcPOFjGNjCAlBbXthSIXHQhr3Y4W+QbXY3Ncl7ER4OgbiLInw54ZMYvmurPK9riPea+G+jDJmwFR8HNObwiCUVd7e4I2d4ZdxYUSuN0m2gKgLNbK135hHrAyeGt9lXiolO93azTDHywrXjQKGZIibksYokW0tjebL9zT5Q0iIq6m+kMxR/hgvXnCtKaXFDygsIztarjDNKrlKui9DaME9G29AFDQeonPDBzePbu9Mbbx1o41OlA3Ak+l/wpT+BH9jvlDaUY5cuhDVcYFPa8+zggPKYDSfH92gjW+uKPxZsKZgNuSLhjFZbW183Nl+dqdgi9mE4gEgLK/xFluw0iXdZVkGW4LNjwgRumJ1fbYuDkJJJh20ZYoun311j+CJ5jwV4KYQUM30DC9hS1FilcGQ2bKSG5Xa1/HyKtySXaHlHPrPtSC1T7/uin7bXASnAt4TFusx2AEfh3TXghTqMoOUSypVNOPNwXocvQ8/YIwJfm4/BoKlhA0yAFmio2a2DkieANyNQjaLF2qFoqW5Q2bbzCEx7HdK7XCIvow229LPtT/Ai/D6T74QcT0XaBD5anlrijBhIZ4YOBdBsgVnmRD6+jW8HjmjuK4tVyOl8qzePb+7WeQ/6ROijgcfPKf1J/Eggmtf2rjDMOzCiSeokLzdV2GMYkA4WLIubIMiMNuaiZ570BcTLJRavsPlboONoK7v9QQFapLCMSDyUKx1OQSwupNvQ+1WVtDozfvQ1hKSKWIB+9Y0CzNYxWIl+y5YnTfeM5TWIs3VYqWxZf6Ek2UBVWcJw/SEzT9F2KOkNxXJYAdRGCIatCmmFBdEySNljZQfeQW7ohO2h2WSSk4WX0mPEJgPrtpdgnA1m3rIoOeMksJeQKkJvV92ZYVnIPoZ8ZU4Ke4N5nnkqyJab10eEczBq0fSCxwvBMRWR2AABvb5prUT6vGzmk9OFIBF1kZCEKjk3wLRidt2j5oCeH9/oPZy+9ht/FQd9unR4OBoSiDuRka1y+s+Ya/IUj2nKsJieh7FFt+bSqpGCnagdODKHdyBLmWacv0xgIGeGx8QXCW0ULbXbxI7P+ZjK01S6FeWfyyMfe6ijlZQW4Kk5beVCU16FyAk4t56JWOwINdKtXFbjVNnYzmkZ+c4Mzzx2UAhdDaI2T7NjQ7xGfveGFzoqEhbd+qVWR72hyHkAvzljaDfu28Codqyn8OVd6eQLreYo79N0LctAorAg1lAQazpDgDtOFK6SbTK13oE119lGL3eEm+VzrhFZ0Mn/xLYrOai25hm5zhWLWIJJYAYHAaGvDTzXSvnTvb4g1qGea8IWVtGFeY6uyF4K07ZADTDamBZryJZLGw8QPkxlZXBTNFRqzplK6rTsUirrsSJyxg++8OCFhzc//mt/fS3/oE+KDsDR0Lfw8r+DB7d45X38UJY/6rbFVMPcWVAOljmXedqMDbYoMXly7CWs4MVO9pJldk06ngAQxiOsuMugnxohOx2mjpBB8NHiiwvPKg07SlsI5+UbcCkMGrjEum6i2H5a1lFO2Pu0wcLLqjd92YkY0K6OgA62DiLx1ekFwUHUCNGuCN+1MFT2vSBm7wcwscMXVswwjrYwMaCAo5g43+sWXdzsAQEmwHI23ZCAgq93eI3Ue4j2T1hoWzdxRaO/4uZQHwPWXKO9uR9tIcbHw2hQHyM2hNymOsxVOtucXoTIPCptw9iGzsheIUFYfQ0tAAIrxB0/nxy9tcXDGLy8hk19FFkSo3FN0MGBDksypyEJZrYAAZNHsnKmnSglUIsuSS6whwicbQZe1xFJFlW5lZcf3n/v/sMPJ+ygj0gH4OjpFvcf4oOV9wIN1Nix2VLCE88ORtnDCpxxDrRadTWaS688UzUTnpiKtnk4Zlj6UAbPi57qGckTQGggFyEU9i8pIU2GjY+JUE+0ABGeAxbIjpAog2/SDGWsLNqGaQ1FE/fAJfmCbfNkOGqJnQR8AahEC8QxV7pcnDCH+xiiymlbA60aCDGHr1vKhaHmXYJtT3H7DUYbo0XCD6ibR8qQxcAr0l1a6vdtuLOBbukYCliJPmbEAUogAOFUGkjpyKsrX0yvnb+FC6xDfbTq4M487LZxyfmdome3/Q5jSJP6jue9IykJo8zmZCxjJM+dV3nQlT6ttlDGsiCilSe08mYoYrv4qkAox+80clhzOy3yNpzxeHfSF94/3X/p5se//c21qIM+QfqQqPF5oD+FH5qNPNnAT/Z7Mn5BHdSoVE3UUk4vpEUYEzJoRBW2fZ6F8O3jqOy08E+V2E5huXzB3uctC5SdHCENJsdSYysGbx+h7QvEFt9N9V7RIURE1XL5IViwKNoVIZOqtAljsKV9Kr6HYGyYGLs0XFrJGzqTkHril9Qg4fAK2oaJ6TZSq13KFa0BqmbZFAJJCsCqCVKVRAkMUqRGIJ0D+lCHIio72gHW+5GFJdDIHxavrNK7YQ9RIzmpEZrEaOf4vZj69g2EFG8dvyyJWUsqm15pGYqqUeNAD8n/mPeoIOUrJXr7BQ+oe6NYBh8o8tsl1ryzhHmkVKUUvUhKBZmSQQUrNltAVIGvf+eVH7768Ivv/Fc46DOi02WW55W+hVdew+3NcHHKNh24GWYoUKYPGXHSJgnxFF9CZhZZCAHFcMBUEsm51trKPs+UyrUo6onlFbMa4vIlZYRrSDzWKlpaTyQr0FaTdBNq/ylXMlVCXTA6QtzNm9rfdNZQHqmXh62nct0MbZMmqeqfd0NgakNXYJvuvTElSo9P28Abmw5qFSX4IRsWUik2d2uNwBgwHoNeFN7ynqKagRWjHQQJj42CAlhKIB8z+gHVzHYG3gNSWXA4ZBIMlU1y7J2y2nkjhJABoqhcOMWg9W7i9zSNVSb1N8LBKlLpTQx3jVeE9ElZHGkLVHCOFov90xknW3tSJ+rGT2Ih1E3xVzCjDVIJK7RBahgPnEeTTGo6bssKIqjZc6pqxzhFafynd/d++Mo/fuWd+zP3QZ8aHUsqe/QC5Mfxxf8HH5zS6BcKJ1onNd56ZpC9+BqeArOXYl+BpGpRTBKDLpRRkqlIyyKeUKRt80qsylOueVUlMoXevjbhE16tjmCsfWhUkCXAdgnAGfjr1htEAUHswzDrx6qq2J4MrqjNnZFFbJOmWglpRwhir4PJUscO4jdni7fxljFWQMR2aWwMm13dVgr82OdYVbGtCxGAyYuFGIXv1kwXmyrVTjDdRB67GPh6DMRGDbGWGgs9MR42kUqN7+s4o4tGe23LN7Rv1+rrYtMSiTWKr4ioD7/Sm0Jjg9/EMsbmSJl4qGh+pUc8XIFNUvNylRUQTmo4k/EO8897RzTnsrygNichDvKIDY5aIr4gklDNgU5ImJWsmnSIwZPn9phSRz/opE8odr45feM7f/mHr/wRwf+wFnjQJ04H4Nijr+KFX8XdB3jxJbwv1+IJTpWJszJchBc5zJNjFb4OJxXavJMmCW3kpIwt1G2Jpw67ZWJ9IvDbHgipED7wnFbHMBukg8Y869sgwJggznR0+hPaIEghzu9WmeBItFi6rwwSiqlEU3DnhjGmuvCP3YPCYY9jRrfq2q+fhFlNe0irEQWZT97OQvF+ugR0ubhjjmgfOm+S4w11xW1d9Gux1hFDUb6hS4ea0IAj2yg4ubTcudZsZGKVamPV80vDOL+WV6ZilPnX7a3zEhDhUUQBCQ1DPxvtCDKU0E0gGqmTAa+U0Ea13Dk3BersxIOUa5wEWqew2gPMtaVER9VJYh9tFJoYdhDHnhwngSj++SsvyTf+xNd/63++KOygT5Qu9+ZzTn8c+gU8PuFOwbv/4cHroUY2e6ukOdxNUvmxy16L2FFgAlJXoQ2aZ7cvIP9a2aaliAynLV2QEFmKU9g3H2w85AL2CxiQdgacbWokOXF5xrbX3243j6l6PA6Zcrb7MJL/2pnjIhDaeBEVpCpkhTm7lesKxAUYvh5ALeN5rdAQXvdhlB0YuQG9hWm3x5TK3QHhIlJ2N1beFJDUUyjyIcSQB0AW4gMJxOa5HOG5ZC8oYtz4B/RM2IsLIuMcGztgo2t+s8rrYDzFS0EWm+Ipr86poXLzdmuolLTKCxlc6bQZuvOXgF+4EOJt2dVG59bKNYt+y/EUFmLbw1QZDKWPpVy1KWwxmsKiuHf/8Y/khbdfeun3/79v1uIO+nTpAByX6c/i0X3cvov3fbO+t1tr6TE163UoxB+vZGvDO4pFRJ49SxaReYIb/zdzsZL1NaOVYASDiWyxwlhuDLKdU0x5HSt4Xi8izDkjDGewDzGGCyEnTKywGiZ8u8khW3SGF6h6puwiUJwlxVdmUoDxR91VmsNRen7MsCY25zI8mspiv05qXkTrBSQChFuD4IJCHEZkJMStnTBNGNhIoqpVWOCIwUZqhiOhcIUaQJLQswkzRBYLgAKtt6O8LCnjlJescpGTrObu68+bKjIC4O2iSJAli6p4JZttzfOPomt45Bp3fUJspEn1kKaicyRPm5mtooqUN2EpOd/pi49PeOXRl37153HQZ03Hkspluo/bD/DgFnePcdtCDZCln4mNepfUsF0NL+L/eSpsS50QSckrOzOmhzu1NQukPQS8MiI6l8UMZh7Ct+xrCnm634yp2u6GrRzwtM4/mmqpsGULV7gs7pQaCdQSYqODpjnUTS8XoepnXK0U/kHaxV9fcYKfI436i5c11ig09mqEbZaBAN2vYEtAI3tcOLaVqLGSArqoAyZfR82H/rYlQiw8Fk22v/lmDq+P7fPwxrA+UitXogWshTfxYa/CDyLxU/UkcMvkXcMBSOSXeduH7xHJI18cGuRRB14rCQwRVi5fjl7z5ncnmUaKR6Lm0TB83RFSwUelWIjRKQYZH0yVSN5JRLi4W0pYSlLRyn87Psfm6bTlWRA3o0IUX/utL/7wlQdf/N5xqehTQccplcv0yxDFo4e4PU3zSEs7qbsZG7Qh9VEoLsL7aEMAQeyiJ5kN2pCacSPlUqkINSXG/5lNxM30OMjgPINL7BNdLK9JEEMDcM6xvBBi/ZMV2OaXqoMY4knVdxvnc7eEhE3syUR5Cwv8UInKKX/zmQWVgucsl1XBmf3ICcKXTsqMXGJrNRLZza0T7eY1HTBCxlQ7laWuJPc4+UpIySHNHRw65EOjFmmJBrYStXWTOUFoMYfku48Gic1yma0Plw1bQXIwcbleSvh0aHiEk4ucazESaIwliyvh86qlCMUMznEG5ByPJS//i+WV0aTl3ezzmnzLtcWfEQeRWHhklOC3YUZdb2ywKqhjmtGSwhmjDQnWhKWP0B7a0PxI776gJtW8ewkaokRvXrx596sPXvnhC6vMB33KdDVyfO7pT+LhA9z7Ih5Ob5TkRw8LfXI1DFtECxFyeMmzyBL7NFflin/6krYyzxQ+Ky/LGtbJvjHD5phNiE9gUKTzjEDenCEkUHBWQUz8tFZiZs3OCLKdyY8UBls2F9JnGfznABRsuCTpP6nnP/IyJOQ2Cc60UDIQATcUL1KU7GS3h18hraowmpgLtfpyd/i6vQMEN/jUaKMgy0KN6RJyFSDwozRFW5Ce8FM5tM6F4dQBZ4/AyGUDteBQc8zUeAx9CHzV5ZKtFmmoI3xOlTPYqliS5nVlTpJRX9LR/pxFcyU8V1pH4F0xoYOg4UkIYN7GgTQiItU7wcRXo59BWxLb4Lyct42ceRp9/HEr43xzugFubm6+/Ct/BQc9HXQsqVxLD3DvBTy6g94AGHhi0GTO04zUWf1rNo0KGsk7YebvMQrPn1KTVqiixvPLzZFUa80f+ioJAzGssVnQTkwUyWKzPE39Ej8HP1ZVCPPAlzZmv7c6FCMbsAWV5ScDAxWcoG7XRz3cFuT1lM2LY1t9/JQHJH7jFPzbK74pyH6O1VpjFLCtZkRryLCUsRC0TfoaSwPbGpAtjlh1h70f937CIkfRtCgz2BCrD26o/J71zY8yOBWjdqa/elN7+2usYSlVBLSqojJWx8IMd/1liynmrMoLPSzfl058hcjiR4CO5MRIiGFjm1hiuPK2lsRpw8Kfw7bX97EsqVC+5k33H/XL0V5N7zR4TB37lFcXPNEjGWpoLiuXgkAbBaBk8NTyzFtZi4QmlSaHhpmnjjHezie5L6eHen7jQBtPE9WuP2iH/m18IDjdlE+AzLMLRPAkMOKi82OFZhosMnfznLGToGsGmmGTdPuS3rLH3KYcsLmWv7PyNk/o/H1vzGoT/5bxnM6AmGfC5JxNB89l9Uq7RMEuaRnzvQORM6uXnCXJt+FqnPMWUWqWCIPXG0iaMThn3i5aPSLJ4ZGERHG1JQ0nuQ7eetQOVF9XFcRMH7/TbtNZgo+HKJoGyUJsGWx+aQe2Ta9bWqQycy5oJ37yWLAopxwTJlNbtmLAQz4b7MhRvt8X73I15I1DIu05me26C1TWzualPbRR4IhktFGgQFFs4UeZs09qlkKbx0lDn2PfePWLP3r44JVv/+VO+EGfGR17OJ6A/ke8CJwe4r4P9/yupCX8MmuU7QWc1IX5A3EfTOwIadCGZIFCkVNxbidmhnjLY48G3FaJpaRtGfZVGhs7KMDybatE2nXhRSUeDAvCO0XEFbeZlPsldZxbtG7OE1tAUOYlmVsjYVIDgpOo2MtlLgE2jlsWBwy+FYN80dT4I9K2mAgziJlRURJCtnVrvWlLB2/soHZQUJtT6bGaJJFFMcknwAPCMCQ/occSiVjwGZsSfIFrE34WsR0McP0L/vRm4eUvbvO8LFYLSntBCJPQnon2PbW2EtIq5Qpjyat2NnL8H2/aSBs4vJsUgqQeYWnH1XmeKQIRyhCIJU4QJzH3j5mk8CS0MWl1Udw+KYWiRH18xtvvvf+F+8fWjaeOjiWVJ6M73NzisYFtmkk9NGWJya5Gto+Xd3WsnChZh8aGTkr2+zaQIcXEQF8lrEr6WhGaDMTaimcWaSeaOh/FT7mmJhrzi289tUgynLFHxb5otx+dJ53Vc8bihdVJySrraCg78ZEKAqDn+RYvYxvxdtakfjq71Y+v+aGh5N9si9UWOycihl+EVlVChO02sEUWzhKrHp5Lo6nVR+vgpNrZgoqvgMBXQ8bH+rZYA1ss4nWT0aRijTMQxlZhBQRxgdjooLH2oRLbOwIMRYV5SchXNNIQDfDESy1WTUy5onNUzmkw25DggRfDzAvMUEtsmNE8MHkggjmhwMHdmOoAWMmLwH6ULJ/fYNqBQaKqtClwxUoK/Vj8Cm3sY4w+VXOT1J+k31YSAbm5gd7p+w8ff+lX39wt5qDPgA4Px5PRtyA3Y8n6tH1KyRptiH30SLYxbHUk5/roaGNSYIfhI3xbdKWt0Q9A/hIAQqaXvsc9BpLaifYvxvd9OEI2GQkEEM+w96aLu53NgpoQk2/KGqUTJW4wyKNApUvUxhwY7qeJDZGTByJqB4S2vo4RBo5sqn1DA66/2JKIUHZQltjK6cZSbYiqN3s4WsSVTJYj3A+03kIuk9DQl0qo832ZiIgdLdyGAHAe2bNfZBpgyr3GA818CdmKs+OBHB6SYyBnKUmjoMYVkdwkULG8PUPyXqycGUlbd4GIs6VeBjieWoCOqHBx3D6WPQnPoqQMAybW+aOgjVCmY1pn9HdEoaf3b25v5Mfe+uvrYg76zKi1UwddoH8XjxU3JzxaQ40LsGBu9yuQRI9sPjrzgqGZvy3MBrCIitmLLBWZvkAHaW5jk4KYCNlXHgKzGWFPd8gU8PSZXOTtARM2yOzKl5zdTLSLxTgmY5FmLUOxtMWBq5CuydLcLKBc59j5QQFXm2qRNfcTImlpwTCCIhRIypAOJSbt/xjVzFVA5Sn7MwiMNEJKmIdTjq+BhBNDcxSMOYllQJdH+xxTMjrRa6I1Y95VEQY7vf51J2mlmkpvEqHVnLqYTKK4rKbpwC+3J027LpJjdNakCJFUQZ3rt4icW4J1prAXLZCv/sarP3r1wSvvHFs3nlI6llQ+DCluBHeAtO+KNJPGRavfTBBZSqzcP4nYPYYnFZW1rXCkl6bJ77FAM/w9VSRLskyTMUi6KWjW9EAsRtAqALYVhK4gc/LrmEdjJhWYA2AsGMgIR6SVnyUrwtLbYgc2Gyq+ELMluWQ+oiL5HI0ZjPAC2b1eQ3Ozsrb+MoyygH4eBUOBYU94CWZLi+Wk6aqrYcaB+JE2E2NnXnzpREebb4sjo44YHcNCkmIQ2xZqjUk8zhAdx1/Yrh11vSCYLTU6K+wlL5aFFeexJxxjMkEGNj9qLMEkTpo2mpeCzHnz9rmBz1ZfKjtAECcJaWBBLZdkTgyaHztlGgmTJsvIa3m0LBLd3p7ff+3/+8IPfuoKoQd9NtRCy4Mu05/BoxubPDzymvUO6Zh3szS+ig7lcEBwQYHl7o0squdJVl8SQ0YPvCSgwvFiqZmTJHO8faAnHwD7JPwL3kt3P8G5k+MZ4fHZQ7CZSndhD5nJ3ZJupzg3+rD/wHSjRQ4VWpBg4ZPzA9nLEs4PkXGzuOs/uzq4qdlTQrqFL4SahToiO0K8Fv7pKqXuxWMRYMizNC6NGFfVmeF5edQVGNrEFwzB2nJeXt0ZnA6J4DR7+7iIrFtWO14QrYGJP1G8LxlONS4Hn0wWkiMyNRhxdusggWAqEEmya9Gp7VEwQQiuMGLStzZn4pw3oKjq177z8x+8/odfevvvd7kOeiroABwfnv4c7m5x+gAPAWFYgAUyYNN8aaLxcEUwO1ADNEfsw52rgctGuq4az3Y8kbCRRlk6YaPCQKRYI5ihzcz9qkqWXPKqwwUydUkxXvUoMtPSDEOTvJojSb2MJLzQssDUn2hlQIOFzCjdJHP7UIM3sMZVxSZnggLxKCgtxqglxgYvnUwFQSpA8Z4ypFLbJOTvQ4oIyBTjWSZteRzaqzLjiWSTU6RyZIUmHfLgDa2JxNIz/4XHANURU99jyQxVoPFLUX/GK0Uy1UymmBlSNJClhxGptVqVmTm7bTYno7zx67/+wUvfe/H9/+0waU8zHUsqH55ucXoHd/dwOkHmqQd1GsITQo0U0aKNqyFOYZDua2xfjfl7bgRlmbSroaYadtM9ZxSa+WhJYotQW+oITfhsy6a8UKHDEyv2bMxRiliO+MQ017gtbfiSx8ZPn3LqF3wN8WHblK6oMn3SionCT4uYY8BbQ1wmGXKBrbmAV3xMblZGSFXTasSr1y5K1Biv4i3veoNXeWwhJszRtnTi61Z+ksWZRPzWL1MNvkaz8evImPrUlmy8B4VVAmepdpcXzsb6kT8C7Y+kTFikRPL4Sa85eAQqYiAlaU14iUuIgQJ1G0fDH+2QkEFo20KTCTV5YmnVqhUkVUFbnjlzVaPqs5KggODx3Q/f/vJrr3+/qftBTxUdHfSR6Kdx9w5OvwePYyI1simvgoY5vHhcopNrYMo+gJimyGvE9hiFPNWYPmTUfAw5BtjxcNBiymCwyFZm9Xkkf8AWwysyAHspeMfoDhv7IQDd7oIYBjsv0xQdrFLF6QLJ6yykJ4SXTqimyTsSAsEZDQREpcwnQQ1i1zUkf4PwVd+1yuFTUatj8sRsSKX0MiCWXUG1AKDpUnOKN4URzeX7UbyyY/BtAM4fy7BBHnWhZwYQ7JgpOzpNc2bGxADsRoZ6hgtRcpVSUBBEu5/UCkmGnyULWNmKD8THJunSKDYhAOVT6rWKHJPRRioiFZriY9bSAt0qyEgwSCAnfSwPbj+4/6Mfe+uXqzIHPWV0eDg+Er2D078IvcHtYzz2SH9broYI5VFWbFfgg35lJzMs0Ub/bTSFrwlco0Apd8yMUpgB3krpxiXuURgGL3LZZz3L9C17hMk8i2/SpKTQJCSPv2oucoD9K+M06TRZJr8FxK8Mj29fDVttswAAIABJREFUC9tGy00nl28B8AZP+HqEGA8Jt+/+OLtrZltFrAK+hxTuVxhXsEc7y2gX25ipXEXbiIqwCuH2UFJMI9Iqq+ZmwOjBNCRs56k1crTeaFJG8ry91Ho5+sUGhGYJo42t189Uh6gHmBnWDYWBFclj25Ux9t0DKePxHE+Z2SUTTG1FOdpER4w2OgDUSM78hcEfq5wVc58rYEbGK222YDmf77761lfe/+J7X/7egTaeAToAx0eivwP5A9BXgV8BTlCahp7oCGs2sh8SaizDV0q7AgZpn1Fjcm0VywH7dEuGmXmG8UsfU0pWMFnxMzG4hHJJV8CLSR9P8jWXUkeCJiph6KLKambV2sdNNi3MDIvL3awCOddyNRv7LY0WYrjN/aTGaM+w35JWVahOIoaltieBnyJxpSVgirWp/S4JM5jC4IvOcs8KKU8wN/Bf/K69SxgnVrYmCBiBWPdx3BkOCbH6p/5NKER9ASyUGWIDMNVxYsWBTG6BHV6a5seQ49iOuh7XEDPzwCEEYJzNF0Rvthkb5bxN4X2SZrZ9qNGS6u5scW37QKHQr/0LH3ygP3jpN1+7Ls9BnzEdgOOj0qvAP8P5hFvBIwD8aXId1Eg4QzvOJ4UsazzRg4YdqJElxNw6oYRrsvv/vHx+Af0MtQMH8CcmmfnkvWXDIPaJabkUnT+A3SHk1Y7dAElOtWHDbQCbqRUC0RPN2QlPhF33ypjTAowklLdiuPODssWBWzGvTKoLoS4vxX0e8RtvUbtAQCZhRKm4BRr+HcMKbkozjJDCucmmWoxGcJMPx0wuJHrQEIU3sm8wCchFNfV2jlGXz54Ywzm5BOd3ZDE4o1wqp8nFsjNwSdRgiEW4uA1kSt+S5tcw+PxFWbD1aKNbOul0y2y9p6QlHxhT5BxnEu/fyLvv3P/ij/1IfvPndkQf9PTQYsgd9CT0Z6Ev4fwQpzPucMkM76ANdGwXhdBjnQJ2hHwo+Vu4mHae+dJ0OO/hgO+QQD0ukXBD7FcYWdQi02aOaZvF4gALa6JTEdOmhDETnz0cOzM2BikluhCvYBwbsXMiGtXJZ1Xa0y4pfnFENjeXlwIvnRWOfRWuScJw5TBq3uHRMQB05Dhxgntcwi6dU0eXPRa2y6RsxWA59rZojk9jZslAO21BpYAAFszKLpBBwROVIZdYs7jw8aaEZZ2tNCODHWjSbBeddI7UHDlhBdQKySKeFJPMkNk0xUzOkhZG7MGkqRQ5n/QGuD3hS7/6813Gg55GOgDHx0P/IfQ14FdxZz/YNWhhxfd2WmjNzrNDMfaFLtzYUSJ3dGjlL+ZWnn40M7jVd36e6AtcQATmHYgVE8CEwyxZ2MgJHDDKcSvOMKKAgFDPba1p0oGGulcUJFNJB4QmeRtp5vRIr0sCH94mtRay0hCQs9lyl4CpiZw5P5rkgtUKmiQFaieSjS+gIWrR4pUMDrLwgIwdg782NSlVasQrXHPjAQ0zUHy1itM6HTGE/2DOlYgwREqN7BNomM/BrqTl4vIKyIRUEtpoIULCQLNDgpt8e555JqW0i1wWYQl6cxbVk37j1w608SzRsaTy8dBrwHehJ9yMi64BNLNM/XpoLXpGAwWaCIUL5uekRn7eLteU2ym8Ci9xTzeZSpkgszlhrfqp2eZHd9B7FgHO5N8WO/4gSEVsf5TAnIhxjnKVnfAyZvk49YpYhbHFkbRhQkLJ+NRWX9hR3mCBsTST9sD6IdztQQBfsqGO3hJDM4k9nmPJIHZU6NAGoPtAfUVpyLCFHoDWMqyatm1CbPmCGICogWk/No6o1VG8CSRa0xqH3oe6wSUQLLVYlEdd4P0O7/eoOzjvWL6hkaUUr8zpHC7fx2GNKeE9BjbVkh9nUdrEeVLkUhKxWkZp3/g1COixyGI9ZaL6g2pZxT7HLvXZRUVVT5A3fu1YSXnGaHc0HPQk9OeGW1uAu5J0BRoo/OP/iwjAJnHp4iv/nLqWuaPVFp6+L31aHTPq7C2Ax9CHO+Kj08PlOz7Fkw/AYqZ1Fs6VVl7SmkJN5RUN/w7WiBGEnOxUID+BhzebltdTiqvDBNZVmM7VkRc1Wn9G59uoorgBwd6Fsf22rpuUn1aZDzljc58QZ+1EG3up3bjT+S5XQzYOaxqnCBXNSVlmqJG1ioyBnEoplh3UjBxJRlXbXDO85hZokmb8kV69crZlMtItTGlm9uWmDWqqKYuXIFNM5onIdhNrJm62mj1LrpEq0If35HT++m/+12v5Bz2ldPxa7MdGfxsikMc46zAbAohsJwMAbM850Ib7L5UpTJx7aIMLXbHJFakzc5sLubiOR3aEcGTDs5knlhdzaDkflCZQ8fju+zMyqvOnJh0K+Jc9GdGi58jrh1HVi07Wc2iodtjEjo9sDEkChMqluihLk4FbXCmeqdk+6qQsNeBgJjMgpiTCp5Lc8oKBQIgzOssX02zJKFU8Gj8Ql2yNlro1IzrxFgCJ9SwK4aZLpQs44zkNPVpA83ACnBQpSNXBNNjq+06wNqRxKZwdyEn7aIPlhDKMXSc5gfkJ3zaGPV4WH/8TsqpoQ5Q1nJARS28SNQW1ESIQPd3h9pGeD8v1TFJr3Q768PRncPcAp9dwRmeGV5EUlos8q9SdggCR5lvtsmLr1PytCbM5wRMToX9Yp2/lyMIfr24W0md6mE05k3Dwl33+eo7PevoodyvNTpEzkmMj7f2cNpOmx22KDbeNqMDUG4WeufrF/xFf3skkNr+ZQvaWmmKYR3R5XTfXPNXRGrM0VNJqUyD3S75DDI6MtmpGy7OnhJlTRwvFl5EwjumwnmA14PZtgB432oUzaRIZiQ1JQ7iceNQysLP8iKQsmYEQH9vq/M7rxLxK6jkli6w0+0U8JWXJbKlFg6crRDufyqyO7qZukVXVaKbz+SwCvdFv/NNf6PIe9LTTsYfjY6YHOL0MPeFkfg5g+WKV8GWosRK1wzPPj/t4pY1co43LGs7VzB/g9C0LBaRVNVbH/YDoNjOp0JS8qeanRi1SY7odR2HNsHiJrB4pUK9Rt+0Tmx0VgO8vz6dSVYzbLwWxIvKdIkN98UexR/7B2JESc7GowLZ62KYPZxs2VWP3TDhv4paMsXchNq84CAxDvkVo2rwSDaHjeDBOIuo/MzuKzhqLVRhUax/x4fDg/SiW3e47txhuZFNo9MUWoDEXlRrdkwQi9nbETSGjWaZR4cOAdaNIybhkDEK29FKCqjlyD1Iw8pg4ZeZfM1O8zNbdkuZXvOXkHboNm1JLdJkvIJLEpor7Dx89vH/vQBvPLu3Yr4M+JP156H2cH+AMnK4zw818cREfXJTMs1ux8U9U1i58ybNw+ozS/M1KfgJCLfT172LTJ/L0zTrttMjnUGINABRfPuWj6LPJnD0ZXro7xGsqfazzdz+7KMgfk3Il7wjpQAxxuocOwfqPsU3+lf5C9NQmJGTsTgVvzsg3jhclE3+qhfsquoO1m6GwbqLiNoXVih6wYzrqYuXCbU5kB5hT3M9RB0w8eikuOUYUrLXDtPN4jpGZXo3CYMVVxFB9Ask+G3SRHDeiclLFAYHxMJOhYX5NNW1WKWoFKkX0cxVugLhEotehK2adNKOc4JOv/sZbP3r1i6+887fX0g562unwcHz89MuQn8HdV3H7Fl9TbDRNPRVtrN7O6yHIFH4ytHE9lFmXMk/EkDzPTkIu+GBkmVS96DmL+A0Q9tdm3uEj0LAslrb586Nv2NNgbg8Tbh/rfqZjM5FbrPrELLZGIKkUL8AZBG5M68EZbBsUJGy8Dt7h7AHGteVupVzP8RnvQjYFtvxKIpU8HDJayRuI7KhVYzg5olWHLDH5prz96Nr4K3yfepwDIvtq9TKHB8GCgQnszfGTJrAa01hK/ZJ7bQTEf3kO5ShNeFa82DJKXUmPDPtMSnqm+iaioHQkbmjAI4uRhlODf5YQi0s5JWWcBabvgkl4itzBE9fREqlE+gs4vf/qB19456MWddBnSwfg+EToVZy+Dz3jdIrvYKDaywo1ML27ayvbp7Y8HwJq7BbUfIa0mgiFaOqaZ21nUewq43Za2fZsVsEu/TRzG371YVHydFvAx1QF+372M6i2UiNmI90iEQPVTmELHYZBwoSbjUQoHgx88FVNRTvyKqnpthrHEpK4ufVqDEl26da2KVXi6vdQY1TbNAzcECspYjEYGAKOTmo3+TIFNGqRGMzYT8dxETp4Q1GMN6O1NpsroU5FHHmt47MGAk3ac3hBxNqRHvNCCQhkkBatKQ5AM56VM3njcBy/RlnWwk4T2ljm3cvYOVGqMv2U9uSkeo2E25O++ms/9+DVPyz4+x+puIM+a/rI4PSgBf170DvoLUTyhngANu88GdTgxzagncAr0cYSKzScPM+xU4GNujmrm0UNmIEf8SRTKRW2/97n7jbX+NeeWbWYoUZ2wm8mXElJXqAx5ZvtnFFQOtswWiCv3fhyT16FadZ9CkNaHxk/TjvvNk1bU6OCnbZWL8oOr3JaH7GuZN0oL6htqc3zykuWlnSuSyGeSrnqOJEiCqkKZielxEdFYICGJZS8swkt6yAFJc+wu8Lo4ScjWglsGbL5T4+rWXvCfiWyyzLNG7N2LYKJxEv+ifaIbvfZUvQyxpN87dfeevjyd++/93cOc/Ws03G46JOi/w7yGPI2gPRWieyiDbF/q0isA4WfSRaprSZX4pKVnqVcwE+Fyqw5S7ZItwKQcSRPqAUGKuA9fZstdHNSAsYjPFnbjksuwg2iWC6xL3sZGfOxTBcYWZSrKeJGTk1C1C4Ng8pAcrZllKGtm/4hPxrYEUJ4Exx3jby8dVWoaMJ43mLqxlow7kanDk8gTYyfOk4RBj6ZFt5awyU6sKHSMyAB6ZkGXcDOxui7nlIqODq0tqqfMqUbWLbTnowhB5yTPYbc1PkcrPELPbKNLUKWZhlZJpfoYndofqlNrL8C0UoN2iAN90i7f5FWVYoJQXFSfO2VL33wja/ff++NA218DugAHJ8gfQC8C/Wto7JrcbGYVlZoYJWrteUfLlWmwJVqSMo1zN4ELFaSi4GCzUrC8QgLzciAhGnm38J5m4cAtP8gYUG3T2SoJigAIStuPKa+KTPEsklmuAPDOgRWBHYkdjCot2hweo2qDrm1HTOZ5ZABInIfuXHKec00BuLxtqIGCQbzs8Tj6AuZx0BGGNF3CVFFdSSpRCY/o1JiCIsbCMYyTu4brh3BoIxLSl9n5hgYXiI1YGTML2wA3IAOnN4glWq2JfSRXkgW2MjJ/8TsfUZOScJFqEEDTEtkZsuDe4tUhSpU5X199913X/zyVwXfulDeQc8CLYflQR8L/UHoPwT+PHCT37oSQPMeLhkuRnrMSv6O8IvhDAhqOD5yafKbfvaCPedqM3pJhdnnEMW51G1y5OJlFLBtiSWPRmYsH5jktNBAQkxCpMJsrOYqg7Kc2/MjLlCiIGdINUr+BKl5lzpIarR0ESr3RflVl003aRo8nZqh3hFXldp2Sq1/rYh+SOSh5XoaWwCuErDHwqAWkFQQlR6BKcyllHDLbEUoCidLm7L0wuvjDCP4hI1n2YUCV8z4zT7WXNE9eQv5+8VmNGN091hPipvH8pXvf3M3+0HPDB2bRj9Z+ofAHwUAKNKOP3w0NLA3K00816OWFQPyx8qqdA4oR6rwV94TBJS8CkMqH3YYH3ZpVT4H7K9kIRwPyVtK484J58+nVEpgKJj3RSZpSqZOxYyxhGVKpXMRVZSmW0ZENZZVrH5bU/jJjlqK/WeGVq0Bbdet5TW22N+6iZKoVerjsXMWsIs9tLRn3l7q5W6p0byLcaKUXX18WUDSqEB1RVhZEd/1ZsAUGiQxWKxh60aJwlzH2ETxckzv0aZ+0pINcNmp2sp/ArQxc/rY3GfLyTPi+ZCkKXg6nU435/Odfu1AG58jOgDHJ03ye6En4LQZrjzrr8LXY4VdZmmn74vyW4YZbaw/CtmiXyguHyFhSAE3EojzHsUI1baw67YYNPD8buhhWBdqH40jJW5fC9ZJTUoIw1RFsoLqVrBXNbcAbQlJ4EzoDs3xP8Ej+3yPk7YqWbGxCiAjDD+igmqkDaiULhMpF4uBRFnd4h4tCSNt97MRzlME+JjMqr0YAj5MK2S/ldo/nyuR1Eh2FDaK4wb35s26YbO1gaHK0h4PDNB/lmTVHvowRkm6Ff6OQeYLwbyOiP4sJUzjKwOFXVDgPbnKLiXyiSGGdC9AU9Cgk8pjfXR7c+9rb/2NJy3qoKeZPiZwetAu/fvQ70B/AnL+yE6Oq7NL5+x9MlFTZN4BkWZk92ZTGIpY4AD55B2gJOc8xUTSzJNXTOBnNEZkvj4LAvHbvdhvf2mVZATqaj/y0kNZUEjZaX0kHuk7viyvTKst5fBIPpjTKZx5xsaWVPq8pJLrRbVLqiKrUfhDk7Kasw0DakzuVlYAqVmaYZAHDClMOmSVoIQ+U7lVGklIRSurkcZ8N/5bZn+crLfO0nLeQCzOY03V0ZMvo6S4yF6RksXubAq51ojssxGIEvzo9t37dy/8+K//t9dJPuiZoWPT6KdBvwT5TcgvxAdkIplMO8eUcIncYW6zyzryIkMLg3Z0s0ghq9No7vMvJdW5W1Am7Y15mBie8YWyC7ZP/PFEATOLoOxaTUY+2CJh0D2jGsSC2ffSSgMUpXM3UQUrzlZ2yHTCv9pNJm+xDP5JAUZ3pq14cdZCWcn4XbSINnxSDndAo3XFG0rnoqMUGwBUBa2tJIq4fWvavFnHmMMb7xrwFsiCCblcQn1WiksYigVIi86iMS+poKSbTJrE/tb8SNKK4Y92Dh3srNDCYu8eRYn3S63vvLNYpalcetxHG5jhyUchVcGDuxcevfDw5sHHKPagp4SuBKcHfXTSPwb8FPAQoE+roNlyX2RYcWKaqT+c/CmS3TONt8NtowAKiN83FU4F58wfo1u8gIrY+RQOOfTNzZ4DZks/nm7Sykc8+UjqJei4wjOB8dvubgnZvnmJ7P/Yu0nddWA/SvI3NO6W9W/amUpZQ2rzVJa1cxfZODyoBUpXct0RzaJAcgsB0RdlVFx4pDb0JLjxFM0DyXs/+QxIoMC3nlBFwJwknl4EPoIypEkwKCelqHnm5YJ6hsmyJ4CSU/Zm9n0AIY51Voq0ea6hfTaBykn0fKd6d/7ad3/pOpkHPUt07OH41Eh+CvpoWGItM8Ji9qnhi1gB40tLVwwfC9qYAsoTX5zsTKlpnqW5rIhNMZVffeNAU2JI0PS1vqiF/+5arU7zmDlzRhE9p1TjH6neFxqbM8btmkMZ4V2rlN36cWTcam3WYNtw4Gy+/8Du+d72qYSRUzHU5VeJKHyLBtzkWwUBuhQ8IkltTxKozpsqZOzGoM0cDBStH5H0HzGGJKTa75FTrZU8SYYVtTNP9S3YAI+kQRj6b4NBrW2996LcWQdE70StttaI7KU4rvkCW5Ryc4JOMV3EzNnzrWg6l/sx0BWAZBvWZ8XpRr7yWwfa+HzSsaTy6dHPQc7AfajkH3Wbwx8aK9DtEddK4EJXWmHBs6uY2tw6sootSUz8xqZ1spNOvbLg4gZGuph8JRdmJ7mEnqZ1NzuyfDMqRHTBhhUXTRV1ZB2SBLdSlJ2+Ms3573oaqEtsgnR7h3vv6c6rdF1V/gjWqRTqjoQk3GkS2idObqIsh+Sb10YmI0qcKQtSF8DuDvEBb16Ys2sbiz6pRrHAkQNcHSsiIvMyxJaLLtuIhs3ooS6akHxJA8/UM32iuFC+tNJwMKVVkrxkU6nMDFwobHkl389xBVK4hnT9D1vRKoJ7D39Dga985ziW8rmlj2k8HXQ1/cfQl4HvZcOJK2DBHIlucuS580qZVwjX+ZF4ckVi7QA+o3i42/vp8rfJlWNA057Fb5YzsrvxLOsUHsOlK5UYMSkjzMJP2wGyNF+m8VWbLAT+K6929Xi6PqSR2aid78+QrhZbEVKbJVVteQ+HrUlRfWsPtotNDppEpwWUOBarXKnKsFg1kzijMY8BVhskhJSvGXOu8WjoL49DeuQXgQFuSdUVJ+NFNDKb1I6BsENdB1nhmCUV3fYYnkDqE3EueRR4461feO/VP/SFd/7B1SUe9OzR4eH4tOll4AHw1Tx5tSBAutQJEIjQV1SRWT5PsShoTsVU+lrD4m/wn8sSVAlxGKWt5iD6GjYe+kidGBYahhPClXSDlALBFibNj1mmXtBUDm0plRHruwU4xlEWLMC3RFCqWIw3F1WWNRk6p1yIfR2htjXUCNPQSG1luIiYhfhJ1bRgAUMOQu6c0di5FoK4Eh4k35wcufrRxCkg9TF/0A/XTv0uLz3C2ICyby6K0ne56KQROwDoY529IFlIY2jnVAGLcqgpnbQkMJ61/1f9Fh0tsMCC+2MlgT443fudL/+xlw+08XmnA3B82vQm5AXgXegZpw5A9IE5HOYhItOH1GyGd+RLF97nX6oqlwrSVaotgtAMS3Ch1ZktH6hBNDeCzemVLV0g5gFSUkiI0hJAEhjZtWYRwxAJN7CBr5V1oGC1rvDCrxtNY0BMR4c427mVZMKbJRU/w5K+z11aNIh1TVn8Cp2TXZzGoIOMnDAqSDs764+STLbQbD6NhImNkEQXoIpHIGyzUNjaildSrAiZatThA8uV0Un+J7ysM9l+/i2bKuTDIonEUHmStCsxxzVsvZYP8ej2/PBHL//URVUPetbp6OLPhv6DMTOJZNPYBrpw3YVeVj2ulnOZoZnfE7KpTmbasMlGbNuSR674kbf61RGGLrv0+4UVwE+IxCmYtOrhM7QVXUqMz/m0shMu+nRKhb6jU/bFCoXLGa4AzkgrEecw4y5Woi4iZ6j5ExIbsrFKSxtJPiGFwE+mVZKZLrTgaiJVM/eF0EmfdTNi0ry2UsGLU6CsjllFtuqmY1B9YBU/RJFXZygZ6GF+v9h2ZqdKNqv5Va3bIuJRCbFqx7DK+EQMegUPJ3u9L9sKKcI5U0WzFn2Cnh585/0Xvv5jb/3yxQIOetbpAByfGf0F6AkqEA0bMGiFAADUexGWs+FFOXtlzbPnAm2k1LTGMJKqwchsusc2rFG1cB108G/SPbMdgXKmNOx9Z2UnhAG46fX9E8m4MuyocCdgB5vwqn+poDgDGtghs9ikCVCy67QLZIJlk7ZR0Aw7plZiCbGYlWuUBkNIVu5f9Gw0WqbiMI0TTNmbQDrRk14KEqIuGT6K4tFW4qymnITCGTo2DDtg5XJ8MEy2/0klPDGjcV7KEC19Pskbb33z/S/+qy+/+39dXcpBzzAdgOOzpJ+BnoA7nM8QX9xaoYTuGqJ4dxdYofKv4hewQ6cY5Bm5+bAzQNRO8RlYyGxFhgQdX/YJKzTM5K4YZjUQBu8RmMBEMcM1LygeyB6IsUu0Xq+Z/QTwHaOOJ0Jt+7USN+G27RQ6gaF5U2eLmVo/DVctgwlaQZGiYdcp5sVBrmB+XCKDcsfoXIXm73rwhA8G8B2m9lidHEi1ZiEJmqCN9Mf8dnjqEppkNhYVzFNMEtVlIRgjmMSvCnpCHm05rjIT7a2Gy8IVZ9EX3/ud0/nbX3j3Hxx26DmhYw/HZ0knANA76oUFCJCPBW2IPUpmmMP0VboncxlQlT22ywpLgJak/xRw9mRRrHQpO0JIvnJBpnaSmargDgJjkGwyys6AwDN+UyTPyLStEqAdDAijQnJKjPRsKTJM9dRWxjkgVqpGaXM2t7TzRp1Tkhq8KSTqS96TUa5VwQ7xOnohhElCiv5x4Ia23BqnmlZRXEaD4VGKAG/UAEkzgeRgyq3Vv62x37NLLXmznqQkX2lq+0WoiBVdtNwy83BB/kY4up7Y5xnDYtZqTaQnfeM33zjd/fgrB9p4nugAHJ8l/TXIDeTLMTUH8TzbWuUPgTYwTTeLEutkQ0BEp5hl0kWtVl5f6SsVOCCSDEyUC0ik5k1CBhpIZnIE6HwKIxgxhZWKKzbPrWYSKzGPNxrCd60GXqlibatmqsrMViK5WVwNKAIEkIXODSviJpCa3eob/TwsPd/9EOsqfReQla3oJJlzX2JiKBBiJRq2IIzaSqWpG3ucNWR3VYWqqcUYVVA4wQKUWnR5UYuwtqZaKHfTHvWWu5Y7/VtkF7s7h16Kdgp6UlIITh+c3n31nS/88AsfUsZBzyYdN41+xvQS8A7wHvAK7GpGwA2G0xoZpMhrLX3WYUdgm/pESW2qR+5UwS2xShU7lUvebBX/yZPg1O6WSY3LNCne7/3cksQMYEllZdT6y6/49NqZ/G3Ktl61qglEHXOQ5ptBZds1hoZ4AUOl+DnZLlIAEmiaMOfGzYCGdIifgd0kBSRRajczi3SbuF9gym1L14Zu4tjHI1Z9NR2U+aPL/G/IF3oMxaR2QZBMA3KOyWEBtEtir5E2ZW33va6N+ujQFfIo422FOa4x/Bd5xOUL0iu3xT2B8wJNk1OSCG5P9+7u3z3CI8GbTyL3oGeePixIPejjoz8PvQ8IcA9nMZ/TPnTAZKqvQCd70lpPiYctphhyXSTx9NksmSeUIBROuwoor6SMlOqf1XBPNIC6u6LuWki7DeZ4L6vd6kFaefhcFJj2TOS8dWNK+pVXCf1DVJUA3qG5/fWjOpi03Wx44Z9actoU4rlK4xjo4RaGcK4ifLUpxJrRh1D2KpXRUsROgyR1KLpRdykwcGZBHvy4F6a3pjwW5qCmCN1jqCCAxa8ncskylgztUxdxiXYzKORGBaeb073XfuPnnlT0Qc86HYDjqaC/AH0L+hOQGwBPjjbWbBeSkGfPS9nrXDwFMk/MoGtDknYOdgzTBsOJJ4GMhYkt6CFb5ea4KRtd/9mzypMyzr/6xogkqc2wY9M53RM6mf96uCPbcha7A62sldTEJhjHWI2U3MdqUFK7aNh1orFNPdvntTaM8TM8N4REl7Bj4+/RyYWkGUCE4U8nsOjV0Ci06GBs1eCvXuc51YsBwrLqAAAgAElEQVRbp/Z0ke3JwMW1tmLJp9ATbhRnOelX3jp+LeV5pGMPx1NB34R8B/LzwCl3yUWs4P9AAeTIfQn8gTVn39FkEajTDWnSbzch5Ys7JDhnfTJPkRwXegpLU0rlQHcZVDyO3R697mRykB4RX+/TLZmD37PQLg3aDlLspjIgsyrT+ohwNQmkcY1oh4GhDk3NElsiqqquYe4R3urhbGWTB0JzmdqhUNIWBLfyToIhXxMDA7C2oO6XdCzgmza05iU9+cdT8r5U4ipvgZT/pwfjpywmmf7Zdorr7P5Fto5BoriWdpKuUUkAOd08/HXB6UAbzy1di1oP+uRJ/y3gXwZ+aM9rrNBbbqwj99HGClugTtytS3nl9oB9AXtk900pBWQ0n8X543vmca8A/EPfYtghgRzveekrXzDx0/d3ymUBaUq0ioRTpOSd/CtsMCm19ZFMvpxhjuYGoSwlvlEjOYFC/3ZBB1LaP/wWKy+UcGTjmbDFIAXV3UaLEv80oqbRAk3D0o1kYLUpBkhCXLKFJbExDwx4ZcnN4yTW2RLDPCMXhim949yZ17VNXGT4MPahIC4AwBkQ+cpv/8J7r/yhL/zwuL/8+aXDw/H0kGxo4z3gVL4jU7iZkpKU3UCJnOUvvu1WaKNwaittBwzRYUusfBv2GJ+nPY962A9QiIWdUzdO0i3d292Va39TLtc/XRBO3/dJ4bDmJDhn2QxuTo3vdUktpv44AiWSk6yIET93Cj0KOzO4uJqlOkLosAlCYdIkdUI5s2q2PoZVtJhjFRebMkr7Nw+qRoMUQ44E0qeO/XpehstSlAzcOxzDJ85YB4oJR0vTRGuqonT5b5o9Zi0mOR+CSqEiX/ntrz544adfPtDG800H4HiK6E3Ie8CLk+1HZ9FBc2iLHlYByqhYpLJAqWiDeSrCWJVVsqxsHjFM4EOnmF4++JN3MrFmhoeREBRt89pBzZ5NS7kSY46p7aBFmZFlUiAv+hCQIrZAGOWXYoq5jVqozpY+QZmkatZ02NcEJgDyrdAqQ1dKbQ0kVCSxRyXBhbQ9Jve4UNilURH8Q24TVkhJjT7ldCvmtRiOlyyQV1tqDEKfxVnZKGeBIWYQs4MXira1C8qIknqstxR9XTGFTyHAOy/98He+/P0XHvyBK1U96PNKB+B4uuiXIPcA7WCEdNb9oo1fpe5ign221YKOLtgKUKhzzjQHjZJ3SiktEzzkRRg8/NEcnOJJU923vRH+m2fC0khgMJefjYUZbMYrCbLMACUrU5CNGApx5bMyso0Xq6/jgNJ4IS81kXkRyg4JcTtqmCbaM2EIBybVJKc+on0YDSix4qJBaLGLMYTLKXbdZMbK2AwXhCPm9p/TJmRQfCGt76Eb3hRjdZyAS4wNBoI9jf0cwvtO9lwaeZxb1aaMpKRvFikD+ImQx5brJDjfvf/ig9sfvPrOcQj2oANxPo30s9B/CvwE4cHZG/GkCGMK6IptKqIgBjZlnJR3bzhP7H5sdnKMv+kwgsvUHOMWqTDX/QH+6UrftixEc+lxBqSIMuXrVo8RmA6S0CezAwSWnIRMvxSjjfJ1/4S3FUfC8ULZdFLKonpRe9JGE27Dudyw5yx8/PpJUmbuIy537tPSKaNhlbugjIdWCBByQN0ag41rbYLLm0WpzoEVm2miHh+RcwzDHGjLMz9qn3TdtM3v737OPXl7yGfF5U96enD/fPPgLA/e+N7f3inkoOeEDsDxlNK/Bv17wM8CqDYeJbwGCj3bAkbsS65zdydkwSN1ri82Y99K1YwyxZRwayzRbttE2LB+s6dn7ARGWQXWRBHZVHvpvH6ASWZl2ClXJpkr8FQq3m5ibWFB5oy8XcZUbuZB0X/F1sbYqK4MuWhQFxQ5QGYjCQU3u21u/XM13Al3SjFZuEcu8ESW0yetZ+4nmtMlCrmU8wnkjh47n3FSnO5uv/T2zz+JUgd9bum4afQppb8H/AngJeADnOd3/UmARRs5z4bLL621S6Ph8XAUpEm01IwWMLYlw5CXNiiiVlOgjDmIR8UMkiBpK8D2A6pitUsM0BFFwnSoYLdA2kJAuMIlamNfwCEkSRjFifErHcbdioBfUWqmd4Mx0Q4SXaMubeMX6rK4u3MAIY+UkGDtY8WpyxntOwCDNZLrz+3jf6NEbkAtDKkvp6Yu2eeupzoqxQuqfM6okgftrMVoZWJjTbx9GkMsmbmFC9HJK0hhrJJqZTRV60nxQGCzWWYraz+1lqCP9UbkfAa+cqCNg4wOwPHUkvxL0G9DfxdO7cz4EdDGVfxr/NFk+RDyqaBauyvldKVvRhd2q3cYafgMa8azelzcjiY1XOBCPY0FeTch4iVF6eO68Q3WTC0gDFZME8YlIVpcZ8cWCfcE7HBYMDKRYctAJC/zS1dNM66ONaKIIYHBQWvmBVIZajtosIZ62TpGe079S8K6rl+UxcUVzVevwKx56iPiyu0gzmctuWkSvVMKSIiqb9EpsiXJ/1/MdT3y0JZHRfHCo9ODe/ja9/7mdSoe9FzQE8Digz59+iPQvwv8RWD8XLvFX2nR15z1o2otkK1UdSNzeApQQcL8szPc4mNVhZOmZfvF/ZIetkK3+DNzmgTOWBj8Pg/QWsYQmFdGciAvPbSbKnhzBsn3arraLHPKm8sq2fO2jykj69xesGEZk+bLNRTqBVkJQc+/WoiRnKSYdchDwsfknJSU4dTFhgweQuAwi7UkA5gJuHCW9JrMjxTjlIBANzWTqOtm7stcQsXuc++k5qSTyuvffeODl3/00nt/9WL5Bz1XdJxSearp7wJ/FPg2EFb7ydGG1MAToA3Ou0pqPyVTQFFE9TLr3F2Ls8/3vnacdyu0CInHLKEyKMeM/4cd1FSmGKMVF8mgcyJ0SqK9SBQpdUMUIbMaF7fIUvUPu99tY+Q6bpxCkCY1gOUyzf1C0toypBsdFQkd/LdG132BkIZN/3SMZZKPfFBlQERGhpqYp0ZOubpLOGQOk7Z8aia2pbaDcEGO97qkC9npAM4lL8WsUk+aw1OjXZVKzajQ17/7iw9f+Ecvvnf8EuxBla7DyQd9dvSnoF8B7gGvbq9znrL3oUYXuIw2SHj92iNmnQKYP+ZCDs3TQn9dAk/DOSl9pBbmWZRWnnNXnPsSMP3QCbIHYmZoD32wg2RyLcw/s5J0WKTy9s9eAgsvLcly4Bp2HpqogrfJyjuSJNdGaB/RFTR3QesCaeVUgVNSkzcXETR7PmiQp0AkCSc5JCpGeF7lKTEzw1BomZTf332S5YOXv5t6MWmX58vf/e6DF/7ZCw/+98O0HDTT4eF42ulbkHvAF4B7yN/QHwptlM9iyYESmZP2JhD6Jl5+y0r+t8MzGZJGMRDnLGpHfgR0zUCzetMaI6PM2b2LBADfjdF84tsPvgR/KU48JjsJ8t2pm9+lXgZKV4f5V6l/yhtjUtuq5odFc8VL79OSC9nfvP2jto0UCSC0xu4KFCo81miBLnbGvljVyuPld6dECPuf6FtfpkxSHxH3h3YMQeq9ifU/YpgUlVn/Vohnocu+6j/3AO1QlimqX37t5uFXXnvhwdcOtHFQSwfgeAbom5AXgTP0Hk7NnHLNjAtMn3fLvG71cxKvm1QoMMfXz75u5prNhQtgTQhq5LUbTZx91SZLnwLax5ekBhUlTzvbsHkRSgCNSzM74+SbQ/gn4qabuFxC4aSa+j4QFxLS6FCLOrBgzEQQxEFMsussU5NuLnAOuMWdGnk5AmPFJFW5leBrH6RDgSa5u/MyCmfJSdKEJxWYJ0uYBI6G5Vtp6kvRGunmHbEIr06sDbHkCV6U/N1713Fq+tfSpsiXvve9h99/7/6XXhJ8aynuoOebDsDxbNCbkBPkn/hBzMXELVPAqEEb0uVd8OvMVkDJGsH0uzccQ6DwKIRuMd8BRugQw4S33Jb3evIyvEtIdnStBtShlQupNWZz678K2+7MmBCGb8SUKiF8FRUxuNru82DYYczR9rGTY0ioisHRTI5zOQ304UBGId3Puvpfvn+zuxk2F0dYyntq8Wp40an66EocPO1gK9s75l04K2BUYyYIMudl/lZOn9QijOKHWJS1gzlS0Z1H5KR4/4X7b7/++v3vvyPf/uZVgg56LukAHM8MvQn5Vch/CZymDaSzoUWaVnq0gYazgRGTwNVOUp15puw65WpQCDokQfpk/4pWsU0ds+ffrYsbgNWF68XWzppveVn6pqGDlaY7YuGgWPe4YyxhBTIV9tdMr39PRylkdMkuDq1Cw0lgBjGkmHdpcSQwjEBqz7ah2t4s3+KBQq7jJPs6/a4bMSitXrHno3NFEE+3ezSK05WbxDjzJtaKzER4/XFVtb1/3C+4kiZXTaZdp8iSU/Xh7cv3Hp1/+Morh2/joH06AMezRP8H8CeBE6A0W7XQgQINeljhiYVhKDNQMUjXk1vlig8KrezTkkebRmjqmN0VSX626BNeafQhzKHTr2PYD6mYqyZLVocRnT4VdhCumn4G1lFdt00E1vtsXKdll1FDhlCzKPvb48UhIBlLK6sa2l30NupSTe906Kb6P+gxxJT+LR3E4Vlsw+T/h72fX4TyMy4F/BU77Ti4ofn3VlxUGpZK4V1qMl5EHteQ4uHtF07nx8C9n/iNn7suz0HPLx0Xfz1bJL8fegZugTuIXHZdaEltA/up0yzcWJ02yw62mLILnYAw0mSs9iHFtQFdXlQqi+KEUueiF6p6RWS7KhR29ecIeseFPsLVDwwksMYZV4dZJKIIz8hZ1ESPMSBDy4057gpzyjehhSjemclC6l9JQqz3FVSvkprqwo2QGJpA5RktmTijqbNk10FWg5Orw8pH5IaANCls0SmGq5wK5TilxPp/MvuTqplBe9YWuOxnSanL/ALoGeebuw/ubl78xm//tZ1yDjpoo8PD8YzRm5AToMDNAk9QzB7ayJwcKCdZkpC1pa9bSluLvso+R7g97rSVRkjzHTwDoGFK91AFFWHxvPLSqGv7NroCdysyUvvzC+Kp5NuwgHo8N6lQalG4Hx1014WkJCqIDuSmQ7irtZX8cczozv9y4/CWjuTVmHQeYzMvXqRaFP3RWcy2B1NPoTRI52mYtgyjYAhiyw2SXq6qEW//nHwMC7s/yTNRWckraOXS6N0hApxVISqijw+0cdCVdACOZ4/ehAhwhp7t0MrO52Abuc5S1l808ysmYNGKXU5zC1jQ2CIP6BSzs1O1ARP1AoaFzB0JJWM9gJpqB0j1q29My+2ilMooJ/uukmtDEBiI0ECBHaYSbI2mNG9UUwH1VZ68uyXkFDwl/pcaxB8l3So2b2jYW9wxPQOI9Khi2QtZ1GgEpbHnxlhzGKNE2pObzH+3O4T1dOF1nzIVSvtOcvb+DEhzfKb+k2H1bRWP2xCZGWtUwcwrtoQ8VO5OGxT+6j//W7tCDzoo6AAczyS9CVGIQO/ISmUooFNkE7hoyHP4qttOF/LrFSDZJxCwoM6YqBhlXeKsf72oIYR3MsPULeCIZ2wEWl5yGzgCMDIztmWqpj15LBh8RN4cyVfGX0gVkOUmrR2jEFv1fIjtcAThjEbDTHO8dPF06COhEObMAfFcFTEQNBEKWN4YdAxTuIXzsA9ELbloyX1RehA+ThydzBWnEZIGSWPp+80cK5k1cmZYeFB6trZQhdyJiorKV77/S2vtDjqo0gE4nlX6SxCFnKAFB+w4HtAFPLyftJI8BSpPUQCTsS8KlNUZsSyTkgtltKKZgmBWFU/NtYAjrL+3iUxlAXHatilx8VmPONvS2/KBBta9QPY1LcFUgz25+jPKsdLXZyXmMx2LpRaZOy6X2DdRcT/MV2tQljL4U0UIJPVE8YTPskehhp0WCxZNpHb4Y2X1M4oq519KapYgifMauhJ8lJjzze3j74jKl97+xeuKOeigQQfgeIbpL8UNDXWW20EPbaRbzcbYZ2b/Frts++NwrNbsi3MQU0FhLdh0rRCPhEVfgomQv3/bx86RFkckybpPCGPyhdSrMqqS3mwbj6Tqc6PurkxBEdtLkzny/MSfjah3FolN56F2Gr9UJx5ji0b6mRVo00SFymYaDqyGs8xi64IOm/DJll94Y3Iv17xtFSAlegIuoUlkmcUsHhClp8QrMUcvZFZvyD7dnF5/+5u3j9860MZBH4IOwPHM0z3gi3E5x7xyMQI7kfPhvG4ub07EeN59EJDj9RJPM7e2MKXUN8nvZv8GnWjPMMLpvvDN2qV6S6p3U5fJ35AZtIvkpMavkxve2lIot7h61NKEGErzyihocnhYQBNn85eZ5wvB4m/f18mBIWx6+xFVXSzJ1xJN2n+7N+6QpEwf34abwTXvtDB9EhyYQUmkNn6LWv4y+9pZcg34kO6NKNJOIq997xce3f/JFz/4B5clHnTQRAfgeLbpTchLwEPgFtAyuXaBLnLln0g8+999RnUXhVusCW0oWdOiQCvES0hatJpI5lzgnlBkQhUUUzHBhG/sLMCylD1PSbo8w4tO7bA1WHcdlpiGTStl9aCSbLlWx1hghbD3g6HjLAHB5OMJNSogqDylO6Jq08UeoyId/JpbQMr/ebSUpEnvxrTHoFJEQ/UVGTIpS977aXLYLyIziJngSxktg2fO0qKaNfKoGIuGdPqn59e+94uP7v++ew+/vYOZDjpohw7A8czTz0AUeARVnHqbRDFTakUbRrOLlh/JIi2RSr3XsmPeWZfhBZ08idIujRl27BvjPrC/UTGZhFJKXKfR5sUFNTSnFrzoXNt0zxqWVlymcrmp0zX8N7nidAZYATVOAg18irV805djKf1uX7VFFoqWRvmiWGm63EF57EgJJ1WlqM0rLN3WjYx7XOCoi1Qhjaa5YZGQiqC04dKUD0RSIAgoEPIpx0z7CGZmsyq//vY3Ht774/ce/pMDbRz0oekAHJ8H+ouQ8zi0ctLd3zNDmv1Xflud2SRPYMVGTthFC8MUTlqtAvUWKUIS1wrpjrnmgLBMWExWo8ChlB6YQ2ve4F6rQaml3OlbVXW133Zjn1OrkilGw1gmUx2a9L/VkngCKHR4q+2i6Nty2CQZ7zbnBHTMZSLFlVJEVQiSq0nxzpMaTDoeTC8F0OMwFB6gPTttEurGzyXnVG59pJ4tFJoX+DJznqGK19/+2sN7H9x/9AcPtHHQR6EDcHxO6E07KAvIam0F4Ck/fQct8ERD82bS3sTuIR6bCBXZyYEJ66wL0hDFWVpzviONtkLo6sgrwoveNhFZ5Wpg8qnXmp2gYdzlUDWl562F0nHNiB+l9DejE38ywKz2Dl7ZMXkZbVz+ORVv9skG57/N/owqqYM4VWBJXSCPZRjR7HWDSHWBAFjAiMUtGpdPlEhzOUcDd+Jfu+ZiC2rza16pUUZVzoY2XhS8udT1oIOuoANwfH7ozbHiroKbtfeioo2Jp+CJ/m7EHbsyHXNISKLosJBzcalFHXPkevUxC8dAd+9I/qxsoM/auXKpONsk0UGBCE6gZBJlCzH1Mq5EdsJ2Vq8udSU13BCClkW2srL/oD04Wk6jrHwYZG7LfanJmvZtu2j8rhHE2wHlHOnV4cge7QM02z5yXlZg0q7pdy4UqP6PqelKXWY1uk0YV5+YJQbR0+tvf+NAGwd9XHQAjs8V/ecQQB5bv0o/cVe0sbbudTZf2enpo7ChnVx7Kxa7Be3E1Czrg7h0vdUSuzgbsi035adVmKXDoJ6gySXSzeW9DulpPl5bEcZk8uv6xaTGwIsVV0lbSlZSogpT1fzqsDn7dOGH4Z7oGgAMd/pNJBO2CE/fND5nZOMFyZqHH1PVS1M08KW0GDlFWKwgN0JHU+kLGNF/cdgEsA87FICKnl77wRuP7j040MZBHxcdgOPzRmfgdehPkpMj26HkaUCa/eekKqH3CkyiPLvkQJG5qbPGATvAyJQxu7gWQoFs6dmIplqoN1KbbmRu6pnWWCHgCOwzFKmm3gVqbobsNjCdUxHK3bLSOxnUMOSbXdfURTL95byo8X0bsCHHGmXR1hDhNG+lGRuVmk5yQv4EaOYdo2XDR+uGyf9QY9pdn1JarNz/gZAjxfvC9ZvKlamgoM7bcRl2LJDH6Syv/eAXHt37R/cevXCgjYM+LlrPpwc9s/Q/Qb8D/QHkPs7Z/Chyl89ABDkmRyomhgJE2m2eJZAjNexeTKLqokyg5oKIwS+7yPzGPAvRWNtIk3eVbLsGzlm41kfxjCqpLIMMSQ0vi9ikpk5lTfEyM7DAXlUuuuqZAsvU2pL5cdmSTdFNagQE9nu2G6ZUGjzaDa3o9NWw2f5b7GJese1lzza/eTU4qd5gX2fehdkvnq6OYZbFelyIacsVnPT86jt/69Ht77v3+DiTctDHSYeH43NIfxryA8gJ+hAn/ZBoo/LMZ0zmwCqeAv6tTCXWU6NVT6YscG8yrG4AVnLM0mnqb3TWZCwmfs1sTbtttZmWJ6aqaPEHVKa5GR1lScPf7xulv5L5U6rUSMGkVqnF6j6Mgl8vmq7U8iAs1/LsSmjZ+aHvrFr9JG9qhCpDeq3oJ3zt3+RNafIJcMXGiwneOM2RjaipXFVDG7/3QBsHfex0AI7PJ70JOUPuQW9GF1dIUT7Opnk8ItfTsQdmTwamb77B2X936RTTBXpvh1Y8xJpPFtQkaOWkx/TlSnChGO5szMJsJAYHVYk5W+jBEKsGdT1itpebarkWBXyUyzPMvxAGL4TnRqjdnrVa/kDJPpRZSVszrGzpSr0GJw0BycbXVZJL93DkXCZzXn9p+BcQpLfi3DsTpIuKBH9maEHJCqywqlya4CRiaONXDrRx0MdOB+D43NKbkFvIGXpnv2I/0+KTdEYbs3cknMwLFFJQQlGArWPvX5nQxpLBp9QZIXEVJoO9tIWu9pjLSf50BidDgYQbMhvv34zUyO6fs63hn83zaFiddJhqZKirAKLtt+KUtKLjD3v9NYsvUTKnrn70xyNLRj8DLOTnaHqwwVIZV1XhIM/Ezh2jtaj4sdk0bGrvcMJ8G0eR0zaEIOcqbx6DkjiNIknsCmG0FC4WFeir7/zSo9vfd6CNgz4hOgDH55l+Ni4Eu/FINkKNGc48MJ4ZSZRwFlVBhn+ttihkTLKzNV0ruUAP8+6Btk5Jix3YsVVxUy+vYlQEtq5Ls64x1yiJIpOf8Vw90er8s8OmO+SQcElTskaW+YBr+Y6fj8LG6ZLp6x8VMVx2b8wf9NOJ3B6QzaLmgT2H58dFUgO8Zjk9jpl3hlIbSkI5mdiPMpeYRov9q26SvaoNyCKn137w3zy6d+zbOOgTpANwfM7pP4MA8nuggptpDipu2RFZeDp44a5YnZKWIMMDBVWsbHDHvwr41RRLCZ1WCsQGi7msdnKfN090eCL8BH1FsheBa5EQQ/4+nn8wLHVo3iyCtAJSccakfFPXVFLRvwk0jh9k9Rb/GoDSHT6aBF4eGAKsVkxqjv5IrYIWAZXZMnPWfK5XRSHivRDxnKuhuA+3DC1q3unlLrdxdNBk8N7Jaz9449G9n7736EAbB32CdACOzz/9p5DfDfmPAMUNYqJhf8Mg2f/ypqTVrHQFOOjlC2YnB+yruYIbACvfDHRZIiYh428PUxyUTA2lFWlJyk3F0ZdrmEAPVMtRDEZGDNkYE/e4XtZ0y7sNgjfhjLZtsobB1Hbcmq2cIqkM3pU22BLM6jVDtu5tXTpjL1qYPKzGrHZjSiNTwLiBjkMlgUJ5ujGAybGxDYydTbRTDzYDbAU7dmNaZfSsr7/3lYc3D+49+gMH2jjoE6UDcDwX9K8D/yfwE1Adayt1lgcZY4rsXSBoEIDu55qXSCSHWWbeW5rmwKsATfUucNGbIYm/c5arDGpgIxfeY7X+e5QYy4kSZKd9ZwC27SC+4UMxuVsQO0azJa71CiubJTSmX7zH+prIFJirsIdkuiMhW/vUgZkuAFVst6Cy6NlLwOCAjXcHEfo65tidhRVZsNlgCRhEHqxOkt/PQUNoKnbOOwvsSxl46/Hju9d/9EsPb/7R/bvjvo2DPnE6EO1zRH8FCtwp7m4NaGYLUGe1br9ns6VgduaaPVkiEorRRpR/ci54PLJcwJCySMnI/CDXhaYkic9u8lNrZQs9V7dWFCEuPHHa45mlUXWYudS66JyqU+orrAPXSLCo4E6LtcJLjZap6yZK5W53b7R9xz0+jTSXYEl++7u4EMobNjgnSeEkBKM1qTKEkItsNdWZ5oyUuoqfxK6m9oiXuzu5d/61m7vvvPz4/z4swUGfAh0ejueIfhaiuFOczjn+SrSRHQ+9R1iqDVihjVmBOVAMXmSfN3/ILKT5oN+pmgXqXD27Gzb7NRRcO8YZCYWeVRArSuayqc50eDXprJBpuwZ3RO9vyC4QiQCDkGDDtHNz3kO6Zelu7XS28NAssrOKUirrDSUuhFLqxtJYaWqUZJFF/vJ8bOfJ6F8EL2Wvjk3WXZdYbZ9FvFzgBBQ4Pz4J8Oj0u79woI2DPi06AMfzRf8JXjjj9B5uveN30EZn9hqv7lWGvGEudpdF1ogdNWSHs5tzL4qyGb98dhMDPNX4gTWeyPpMn7ncDttG0eiR9X6UGXaQJRMXWzCHP0qChmiaqftIJmUEU7tN/HVTSA96KCLvXc2ICo5jpqLZomfJGS0GwJMCUxbV3E9axVR4tGLrvRueusIAfXeFzHgFCXZkfj2LPr6BKFS+8v43F7IOOujjp9vPWoGDPm16hNMtzu/g9lU89sj+Qz7F7H2so6KNxFwYSnjWYViR+VTGqkqthE7UZbThyutkP7Pm9ZtYUuT2s70YOzo9Rc0jUq6sDrZxOMWyo/wkrAigJnxZ32poHewEl9pfVkCQUEgVntsBWULbkswJKlTaIVSzs8oqs5kdktUaxHCL+Fe8KdlUR/Njp8z+8JPcgBW1B7dIx2Y6bJVIvWmpxlwTBNAksmb0eCrOIlVwc3p4h1s93375g785ZQt9L9YAACAASURBVD7ooE+QDg/Hc0dvQh4b5gB96WJ8FlV38wQgViCjDVRPCRbhphStSYtcoFq4WwLgGF3E967tBC0E9e8cGNZxiN+DNUHxpU6myf6X+AtvvwEmpg/68rtlUoRFLvFc88EcltDVuAEiqGdwFjXN8RmvoD1AWw5wNhJ4tSIypt9tX6tE+K1PaLqmsHTV5FPKsbLTrC7NOac76BLtrLDspJK7K+IUNwLVm5ubxwfaOOjTpwNwPI+0YY4v4/y7cCtmfdoJesYBM008LTio/g+Q7VnCDi08zZGWTkITmC7QlFK6C+S1hnH/5lzdEnI5GuBjdSkI3MrWBYJkzPoTvEUU7bpoGdqjH2JYa16haOtFcqwTHJTSqdEKhpTVK4/bAQ31Gy/SqZO5cO61RucZBKx+5Lap2lRESzIJrzL2s6dwdluIR+54/WrqbmnMR1dxAHpzA1WInF5995evlHDQQR8jHYDjOaU3Id/A6X2cfwy3NzGHXvBtIKxyBGb/R/c5mwR6eMYfNbB7r8akWx+IxwAB7fxd2EHaLdXYUyAAk86NMFrAPse5PSf91wsoqWpuelNFthOtSxtlGesZ2nzvxeBsffwJFs4AqQEEc+rMUIZBi+EoPNqVz5GWuiy3graPTRENp/Vd0yKrSPGmntukgR3EkkoUlsbAgv8BGMt3gtfee+/m4WMRvPruL06qHXTQp0EH4Hh+6U9DXsLpt3H+HdzOFxK05u0Kyxfz5TWIpEgmNvLha5mDr7qdbFmRimDKSdQIh2Ipi8cXBRrDOQBTs0AwLXxk70vm6Ss6n+DgGynmzqrM9seUXJr/OMMy164qx6eme1yyyF5aNDprtsHcLNGnM9vaMTcPPw5z0RWmNKLiHEqGL9IqnwpskqLoFcmKYZVLcKf66o9Oj25efPnBgwNtHPQZ0gE4nmv605B/jtO9gTnupvmU0QOmr90R6D43V8aJZ0S+iWGV3fiv2Bgxxe9+0/ffkcmEF9xgOvTITKZdDlU9KrRvJSVnezCv1kr8cbKrYfk8sT2r3Clp/1NN9+FcBTT+dw0Ke7G5KbwFVr+6Qk97aw2a468fRA1NVbiAqJIWvtZWhO0oT2NgwdFpmwe2KkTx+vuPH948vnd3T/DfN1kOOujTogNwPO/0JuQRTvdw9zt48YQz4iOv3Ea6Z6It17xcwgH+xC/Zvaz+s9Qn69ZiCGGX9YqPVmWSwGYn6VTQdjSAdnh0RqjRnIVM6wK1RoYSAnZUpLIENv1VHKpx6UWv5BqZpWaUHI/50eFC2qO63tvhJ13T2o3KXFwthIXs4QhBbnPKP3RNnJmL1UiejK4FMMaD5AgKjwE4ZVs6Qii1LVELXKd4+/8k+sX3v/ro5uX7d3eC4wTsQZ8xHYDjoA1z3HwVd1/Hi41hJs6CIZoLFie0MTP8/+19XawkSXbWd7Kqbt2/7nt7ZrtnxvYss6xXw3otBG94JSQj/IbQIhAtJITNj4TFroRA+AEekAdhIX5tELYBCyEBErLa0kqAxAOyNDbCXsteyZYYGdg/dnZ3Zqd7dscz/XP73qrKPDxUZWacOOdEZnX3dN/bfT6NejIjTpw4GZm34osvIiNVwYw9IKUdlBIX8cubbvFpw++H0h0t+3SyDhKDTe/V9Rwyl5U9yEpcOymPuNOJG2r5lvf+BeVnJM+TG8jp7IlNGsyr7jpgl+wY8w55Z+jfjvbUnz1JdlrLSUYanlVURJjtx5V/y15kScIn1b20YLZg1mQPlEXiRejR1v5LLgps/RGsm6hpqnp2Nr03q48JsUo08ORRGNsEni3cAJ+i3sXkHZzpHhri15/VQWpjbgVmsI2klHaY8h4pUfRSgMiy9sxG8nvs21NqpqvOimwOhDfKc9Vpvod3W7Cr2rPMEq29wNWO6Ukj6PR+oE09+2CIdtMXouNEy9iskNziZpB28U0KG7dS3SbIgi2VJKZ+AVBGgsWpI3vopzdlUekjLYr3JvlOtGmWPE2htzBLi9u/2WkWA8SoASLG0dnP27UEAo8doXAENrgO2sXkFPWLmK8fiwdiGwMctjDMzWZDTJsusxvWm2NuPch2DNKffRE4+cfGBfaivT09YSzwzAvmQoXTmGQYZ6Nty9710A3okQ3o5WRHLgAkXCW/NDtwS35YyxKUJ60P2rdnTblFKh95jaS5RGrQXa8dW4Ft2M+2d48gqKASMIyblWb5NSa5RhbAjGmFChXAwTYC5wpBOAI91pzjDPVVzLH5Wc7eO+g4QZeSHXhKRneQOvR+OG3a0QfAaWdgvFqSVpdEki9T7XkJZx56+643SztUiwklvbXiQ+rqZMfJ1HXeJEpl9AJmet5Q4iMjWS+Xh907ZDPdKGgyPMXanI3CklUdas6CN+U4K+318t31CZ6UiwjZcXeZxqwKZaflN2nTjdTSW581VNI21vNuToisX3lVb+cqvmJkEVO1s6xRTyo6Pv1X2nUg8AQRhCMgcB00x+QU9QuYc/LeSscArMFjv6QjoyZA1u3linTWKSZ9SO4HWf/jL4PI4PXWuUF5t8c+eGO8mx84w1NnxYn4wFjasTn0IudVZpAEuxds/9W0qc9Uu3+66kV24cmplBOsMJQ9KbHHvmWJ6NLfEOcxkGcsYzNukHmctpUoK293G4z1VZckBv0UUHqbWreiAV2wfB4ZyzM0Z1NM6oOTn/WLBQJPBkE4AjnWOsddLOeYECooWmBK1eaPtcc2yNiwwdsaa1OjQS+MPkzNWdghOQZ916X7Y90Nmw7b69r0OgYzKAQgmzdZvejvdpol6Y/GtMyD5Fs5hh91Hx1mpghKbpYRgtay3QQ9b0anfYR/5dNGgTG45rkopWNAb5ZTIu9G0DBRaI0JoE7SKNgbel+ee3lxc17drxeT2Eg0cD5R+usNPOP4eZwBTCCgYUk4UuqQHXTHyrhQStukEyXdQV5XtwDBWjeKbjhZWoKamG1OqWwJ9CmdgbMmdH1ArItnKzFlrrlUtlBL7ie5BSoYEVV27e4CW92S0ix968dtimILpDbSgDNXeXHn/vZBKleJjZiby7ylrjpvSIJs0/tze0lpxmgozRW+NCW0OIuaaGECNzhePr+s3p01twi/ZJQKBM4BQuEIuPgs5gRicIOKbZEgH3bRdmyjS3FHvUI2kFldf0DZJ1VVjSoA4Rz9qRjypsg6MGT9ggwpyaVE7RiPXIzoVAoZGKmjDV+S4gPZLc/YfM2kTUk2z0hXobbxq5Tu0vrNNgw+YasOnryBrjj3N0JfiALBvSOCMAwOsBy5pT9Mlqm2CV2b+F47ASOXRvSDwekTaDZP/xi0VpMpZqfVyay5GmwjcJ4RCkdgAD+HM6AGGgJR8q1tS4FYo090SIYuZQ5eM90CUEPYccqE4dORE2TZ9mXXXFApCSSmQpCYGUFaKosIzKpF+fFiS2rxgvQCKMkbWXWO4lI4hS7eTUKlBk48Wa5ThNu7RoD4YnBrw53n9oDTW986XBeSb78kkA8/OelryNweZHo29Iw0fiaqdhbNasqYHp/+c8cyEDgvCIUjMIDPYQ40BBAaOfJKf097qBG2xzZ0is4STqxhcTK0HbH9OXwDo1fjdtyPtgKrrBZULAOWQeadnw4sSSFlkLwfMTRoSGLwWoUKwXdl08vsRCxPD0iqM6LrzYRqoqUQ8a/yKfxv2EOntWTqiJI3Wrah4jEC04niovJ24J7HGBft3eoCr3CyCFgtuF5Mqukq2EbgQiAIR2AYn8MhgRnMWLIlaSQkw+6VYfQ8JoEYRvbLbf3Wu1UXO0irnn5IrwlQWqtbl+FZ9lieWbZJNhlWlPWIqTP9NT4VXtJVi2MTXR1GvF7LyOck36zdIUzUXpiZCzeXpYkRkWzzAbpmvpks73kpxlSHUo+qTunTnXDUg01Eh8s7u7SsF9Wlu//aLhUInDME4QiMwl/DJaCpgB2caLZhwdQt+mOzVNZXqeJpKUoYgSzb8wNPTckEBi+AhD8xLHPVDxlxrk/zHr3/oGg/Qi43iZ1CMjxibFZmrHfNkiN+KnRpiTMr4FRmEPZk3pzERnw61V2HYXzGVkdmn21ewDEi9Hik1DtKdLdwYwBzq4y0rKlhJSmmRGg8af1fDzEqYgZNmtXZZL7Pp8/HF1ICFwdBOAJj8Vkcz7BcoVrhxBxAq7UXcNgGm4NUyWAGRH4S3lwyUVBcrLBTm76vEMPodIyeucn/1XVZ/Sj3Sw26wvK6PM1A0Rp78Wx2ut6+s4uQtDfKCxksQQUgHGbzGiqY9BuwJYbgsq2USJWkBrKynO+SOJLZoFZkqh0lFmPVmjtWnINarsRgQrOi2W79b+Lrr4GLhSAcgS3wV3B1hXqB/bexz4kE3DEAuP1cP5CXuRt+kBzkpQAkvb4he2R1bcaw1tyKGVXb8/ne7FLrBmD5AdhkDiYzVk2UeOOMykhOYHMmUdwNWd8O6liOfBkmMWy78/K3XuUunPISZL87xIEGqVv7r5CF7OstkKT+6qxERSzKnEEZJxMlmodt6tXyEqcF7TjTPxyqF6gZxEfLf1EMLxA4jwjCEdgOn8O1D3BwjBVwqH+hC2wgNUsPCpKDLy673kSW+h0fM+7s1AW/oswvAyA2vj2bFvXjdHL7/rvcEVLqwSclWZlse9Pumynp9IRdq9pbzCBtZD0DdmwZzUoO5DxR/izoS3OkiFRHaddVqLKm56HM0SpGCoNbaEmj1zO6OphxacUTmlBdX17ELqKBC4kgHIGt8RpoD1PCglFxPgOS7pmRvxZL4gBKCXDnrkkZeD/2ebr1VogjnwgbZTkgM2wS8w3XObvMTCNZN4jVd8p61TflTSZR4F5eepETkDQoyQnpKeXp3b/JabJRmSYK4txSqii3KnmwWqOr16SXaT0eK3bqMWQ+5dyRNKjd3UQ0/kaFoinjjLDH1SXEEtHARcUDkfRAAADwC7i9VuenPXM1994wV1R4Cz68UnoPMXObKZZZLR/qfryVjeM/35ciidneSCO5lvSD9b0rfwMM87TvmuQOHPqqG6ugeSF2GFnVnh/fQ9qLFncZ4cHG1Lm93GVtB2L4AbrP+2n71Nv6/wWfwj96pAxFpG9KUZbun4qvzqBL7Csi4tVqUr3dVB+9tIp3XwMXG6FwBB4cfxWXGTxBRZgm/Rbgkgxx0B0nXU5uM06WyIxzzSAZKZq9mu1WR1u4kPw06SjVcNwu4QylKT9KtAHLj/k1GVN4SIukSoM7CPE9tAatntS1c7ahhSw2UF12HZSnyNbrFkO4H1nNSjmX0P8/fWoKceY3gox095TMB62fSyKsppfws5PmW8E2Ak8BgnAEHgo/juMK0xqrM2uLIvkrm5KD/lj2APkQs83K6QvsUqlDJVu74nyJVZinOsuiSiktMOdN+osdpDVGAJJ2tGYletdGBST7l2fdc9dfJjudS9LQHyerOFOhJ023r0OxKOerewX6lVxLYarNXTrasrfOJqVchQCKyR3Uo7e1FwITHza0gzcX+PQcvznKYyBwvhGEI/Cw+MvYX6KZYLXECakeAImuoNmG1MNzqC4r18PLw1XDhgc6A5Nn+O+euMX7q5Mje3mQJztmrStAdczcO+fSf4I06JDNF1KsSNLTrnEyKmGRJ8LQzVKViH/tsirI5Ni4k3m9ZXrshlc+Tp2XWKs1l5LwsJour64sabqD75vj1wcjCwQuBIJwBB4BPotjYHGGgzdxBFSeUKGQ8QxRKulwBgaMFo/Ju2rRP8iOKqmxxH4gmJOwlIxEzPUINuC69SLPU+yJKvEJ+1LXLimC2KS82N0WvprmFiTRvAMlS/JG8rrK+jShRAOyyJA+YbEQQZnshrTcOs+d9SgZnIzlSbM8xM+s8DszPiD8jFFbIHAxEdQ58MjwGvgIZ7tY7aNpxEpGyJ/evJ9WNtlcgyYifa9vLAPMc41S6JeR6mWMomySbi0OFVeRsYF0vWRiSfbSS2clZp+V0Bq9MNNwmETY+J77JtIxZLVYF1sO3mwlpz2NxZuZmXGPPIeZK8PzJtl4ZqxSfUr2JEMea9ViQwkTM02yN6hA4MP65Ay3gLfm+K34dQ48ZYhHOvCI8e9xuwGAqsJK9gRIj61lGebrJ1AdCfK+SpZVNgZr6TtpMklP6RWVxH+5m9d8xWA8XheuPRQ64DWlGOIxdnHLWzmSYUpUumoAbPtPb5DDPErEQt2j7LlKsth75IQZxAOjaxSJlpMW+dJQmQtel5w0VNFqgnqHl4RfQCDw1CGmVAKPGD+Gy0A1xdke7rTbT3ZwfpFllpSn9fsYaZeQdgybA3MeISubqP2prm6+oiJCJRmVxZBEYG0pS1vvV05wt+ln5zadZ0lOWXeBtBEqvIvV6eqwCGWXVVVytGnh9VPQ/WeHZE/cWJEXYitkbsJOF8n6xR9yJLZdcWKgQQNueDrnnwu2EXhaEYQj8Ojxl3A4x8kSswlqsvqM5MBgDAB0j+4Uz37ZTd07h/Bs7RBqdd7iwHSoD7QfjxBszkSvbEZBmSsSuV5cxqnMo+6dWO9i1S1j5cGylIRTf8TODHuIZOSMJznNrwJsvjGb12B9gm7Mwbjj/GFMowMxHeJohhkDh/hpBAJPL4JwBD4UXMfLfx4vMiYACFWyUCBTpEWK4h96jG6u6hClyBVLxEFyun7XQ4sudiTaiVmkwE48OiIO1PuomyjUp9es7jM9N6548BOvTuxprn+VfahuZ8x9iudtOLC2oUg3Uf9q7tBlFHIsgwdVPjY3TqYRJsyH+OkVfmcP+0exPjTwtOMhlcNAYAD/Ee8zGgYqNG1vp+kFW+nesgzAmMIoFVfGA2sb5cIOcZwqE2pdaqkKK4ZyLmBlierIqEKvfhhc8qls3GjdLB5u2/KNKBY0XAF6KYb52PQ2TlYqnqXGIJWiHMLPNWwEkWEAuIR/tsInpvhy/BAHngWEwhH4cPEXcMzABM0cDdsD+vQXH8lvdw85/jV1C1cjsWx0cVljOmJWwUjaZHYwmQxj+Nm2g7Gr4zZrI4dIGUba6ktwsrqiJA0IWfzcyTCZpe17jGyiEnShTsYadFmqguzkh/fneustGMTNJSx28OYZfijYRuDZQRCOwIeOH8NzO2hq7O7iuXWKHDuuIdiA+erKYEVe71Qu63GCTTljFyzWUxUk/p93lk6P0pnl+Un3JXoyvQZC7FHRyRNdzErGL5Ah2N0mSTd9FelldtlseChUZTTMcO/LpftZ/Mq859ujoOUDz0tWY05rJ2gOcbTCfI6XdvGFYBuBZwdBOAKPA9dxbYJL72PxFTxXtzuDQXU71vKO/EDC6zjlWN/WQnRFQjvJmAcxQwz8ZZdbCjLPlcSFtYFXUCb0/jyi0PIDXYnZ0ys2k2YLP6z+db0nXKQsWgynkkE1bIZneUj5XyHMQiBjIzfBQAW+i8Mau0ucTnFI+JfjiwcCTwGCcAQeE66D3sbOMe6foapRV6KPF7yhTCDaUulrLOv3Qjk5AKkdIGQVYr6/PS0PuNtI225PWrsLFGQVhet1qUARZXsWh9lKi35OJL2ufj6FObGxdBdPTJDcojO2qd7QpUl6tgXIPNEsxOElYyiIl6gbhqZYHeCbl/DdO5jv4B8SXvP9BwJPJ0LPCzxu/Ae8c4Ldd3D0Km62lFes0VM9d84PZC9eKltYf9oV9+vNVm4CGasglZLY+As2RSkoYmQ5LETlLS81gjFtKC+S1/sQERbCKzVafjvURmGWn7SWzECH0fmBmZLWLrNEpVkuOekMHOF0gRXhbIY7hF9CIPBMIhSOwOPGj+LFd3D0PO7ex86kTbR6/S4rHxlnPYRMF2UzAxi9gi6bcZRsiJ34T5ZqmqqGDsAR5UlbOinGLEYhd0iDyTQV8qt4tCOTXP+gpEXz6ti9Wis2EWe6gqV1or5d79ycXNMpVeoGRgCDj/D1JRY7mO7g3wXbCDzLCIUj8MRwA7cmWO7h5A4usyAKhryREgV/wC0OfA6RSyD+mNuVKIwU8mQMU9XQTgq1lN+StbNkqQEFophV8G+IJWUxQ6svyPUJoWoUwy61J8Qz4z4G41PW/8t8Kvs0nS7j5Aw1Y7GLD4JqBAKhcASeGK7j2h5OzjCvsEqSbXkDMmXoHVfdA2VsBqpc5iQd7msTa2PNdU8qVjz0dZnDcKmdGHB2fTAtyXFeGlUMSUHGqVaARlSXbVueKxwincW1Km+bUr7I07tNVAqvRi929WYSqNhaWQzM4Mv4R0v8vzkme/i3wTYCAYTCETgP+EW8AzQVasYO2s/MQikWUGqHs7ajIHLYI+CyulCwTLKKO3Sh30zMqk4LEiVXWjIZ0jnK+ofhvxhkWYPxmtqtwhQ2/EuDJXLYO3r5Kkif2Iaap2SheilQF0ugS1ic4i3gW7v49fiFDQQ6hMIRePL4c3ixQr3Awfu4ptXpdDIlTe+gdQJH90bawXgiih5SD0kFmSQjC6dWG/2DtZkskmsV2em4MGwdYiSKY3mygixLCIaNuJykZZwbh2yDDUsyySviko2XqBu/oIiIcwY3qCvUZ5js4nv3gm0EAhJBOALnAtfx8j1c2cWdFXY4Eca1yD9mpiCDmijp0G/hNdyrWOlWRydG+SqANrP7b6i6R4IxEy6FhmU/6wHBCa9IFQSgvekFzrOmKMMTHFtGK8xZpZRLMegI+zPMluBd/FOKD6MEAgpBwQPnCzfw7RXqMywPMKOecLgrQ2FPiOgDQ/OXNp4TrZlnfsqvnnoGiQ0VZjq6gg+28nRgsqaYUppzGTnpI46t760UJ2VSM9Mn0NdrNEvqSrnNAkhToHy6KQAIzRQMTCpMdjGNDTYCAQ+hcATOF67jpTMsZ6hqMKNicLuqo5sHYVI9nF4Z6rGNFHouJs/pzwtrC4QH5yCvWjhJRvmqeGE9qXkwPO63pj9sM2+UXxSZ0ukMW8vxvLlOBuBOtQyVlI/V2OjE1ddoLuNrFe4B9R5+KthGIFBAKByBc4ob+DZQA1yhIsBZTGqObvWBKZCMlS6Sitzh+zbKgalAyHSyLce48s0KGowhUWg/QzoHY8MRTD92myex5U3qBSM9AHbx/AKTy8/K5vEk9pCJWUrFmB7jtQV+ZAdX4j2UQGAQoXAEzimu4yWAX8b+n8H3zLECeM0WxoxGLbbRpW/6j7Yb0T2N69bKcofXEh7/6EpJvUEKAxv6UYrRiMHSIUZqG7p4oe5kBqYYYVKTnsswzcwgR2o2I8sWBKGS8RTLI/zULl4/xQ/v4JeDbQQCYxAKR+Bcg8Ffwgdv4c6XcfMarjU9R3ZXZhSlC2SD2qFBP5S6sK2GAVjSQkGlGP3eqZRexEIQo9IRMQypF2YWG5GPbKVyLTC0K+3fbRNVKq2iT3QkEzuFgQqrI3z1DCvCzZ14DyUQ2AahcATONQj0Ko6/jJufxIt/Ci/vYFoBpNZkjJY9TLZhItchsvTEf+dzCzhizGCJtdhhiRPp0tJxb8MWtBBV3N/obIRuMLptCgLDiEq2rm4QvR8GgOoKPpjj3imuzDGdB9sIBLZE/MkELgYY/CXcuY3lW7jbYFlhZkoXDy1vZH66sbtOL6QgWVjgjd2NWizPD/aCCdAuBPHeIvH9+KFyFpVbSq+i6GzKUo2lfxjGyBlneTGv+Ujo4n0pyKeFQTVOd0A7aHZxGp+VDwQeDNMnHUAgMArdaonP4yuMSwtc28ObDZp28N11EmvjkuowQtjYOteqiDx7f/Cul6nmNkPj+uTCOdM53HiUG978S52ikhUkzkWUpFRS0bgA+lIPPwBiUWkej7QpxcMAgQi8wKTCijBdYHWEf/LQAQYCzy5iSiVwwfCn8f01rk3x/gozYDG+F3UOzDdaPb6SJnDZ4IH6zi0KORSEYDAqzgzsKRJ90CoXch+2dRV5ShlJBKT+FVRJ50oUpl0KZcul8i+zrGeKKjRH+Pt7eKPB9CP4B1fxj63qAoHAWMSUSuCi4j/j/wAToAKIwO2/3qyKPtCqvsjqjp25mLRIYR7HnCnQ0zSpB3M9bHnewfBv6SXdxQ5O0JTmbtT8iKh0m3Yo5SbpopF1ltWGRilzekXnEqgBnsPbp7hNeHuO/xG/koHAI0EoHIGLis/gD3wGn+iEcQI4E9RtZD3NBqSyjIFwTmgeBF4pUtMoD+ZNSw6ODYr6hKkTcPI/9zoSn6VLGbpMP+qxRVgmkswzIiQQg5fAFGf3cWkXl3eDbQQCjw7x1xR4GvBf8bUVVkss9rHLfXcnRuHWQkgUdQLtRA/HkSgWxppE9W5qXmNrY0gFlsGAdGHFMFh1oVI7gIJs0xknZqml956qdujGXDaDdVuT6rTNJrAGNAU34AZg0LXYMzQQeNQIhSPwNOBP4vcvsfh9uPIn8PEZ5utXZxlIultbqF//T60hyJh49gaKzrKhZ3C0fGJVZKxySA1Jpag6qatrjFBQHHaQzBWxdVIHiQOo4CH1Br2iYjtZR0osBTlnzOboTKAJ5hWoASrQVfy9YBuBwIeBUDgCTw8Y/BXcvoXmLRzv4Uvrb791UxXZ0NYc+3qD+BHyRudNrxRxnXTH5p5UUn7Y7rXYMdJFpqCYgZXNCqqMeezRPtlQRks6WQUtJL+KrEYAFdCAp5g1qAkgTI7xdxAIBD40xGuxgacH61cnboCn+O4UO1fx3e9gnzEZKpV1VPnYeUj/WMNkG55xlsW+SWrL/r+DBbeD1RS5NmN6ZqUxpEFyu7wX4Pa4EGp6KrKyJtWCiQosL96AGKvn8ZN38XngS0E1AoHHgFA4Ak8nvogvnmC2Qk34YIGXGTXnY194I/JsTK+0gezAzHJXYBTG/dbQvLTQIZMxHkzn6I6HdI78Asv+LUtXclCvvRTqMuK3/JutvclaYf4CfuIEv0rgPfxw9kGcQCDwISH+0gJPM17H6zUuL3B0Fx8/xFcITYWGk35oqzdaPcJRmJ3ZftZjjM2gw+HiW7oqMZVBt7AIhzP54pIMZ8mneZqWQpvOWkCXugAABtlJREFUQPMRvAr82Xv4n4zqEJ8OqhEIPE7E31vg6ccN8A7euwr+NJ7/7/gqsAIaDCy8SMf9sDrF9DUWW7pIEwtSwSDhMAWA4hoLr9LBV122pRRp4iDhEGYqzkHCAagLLLT8+rQCGKhBFeo5Dub45BzfC3wqqEYg8PgRf3WBZwUM/ireu4uzm7g9AddoqN2ie2iID4codKd2t6fXVMLqZcnpXEd34dum2K4KkyzlgqMVju0srdYeJhltnAQwoalREyYAMehF/G0EAoEnh1g0GnhW0A1qfxn/uwFXoCkmS6zavoqSTgvyoHtblTECQ6tEM3qRIRujD1QhxYau+GDpbM1mtqZSdPlZwfHtUMSYOL2WNAMQt4/Bc+xcxt/8AJ8/xe++iL/74JEGAoFHhFA4As8oXsf/rdE0wArTHSxYKAru8FquaTCzxITLoPbQHT/MKg1PIRizqqOLvLBuY5xbry7TeSFmaFdee6axMbgCM+gEJ/uY7+MHZrg6xw/F7EkgcE4QG38FnlH8Mbz6I/jkCtMJ6gp8BacVKgZ8nUPLCWbW8Oif1DGpSiXsSrWNtC9Hsqn50fXGlP3L5oXmuem/g869xE37XMXHJpjNMDvB2SV8ZjeWhQYC5wnx1xgI4Iv44hmm38Hhb+PjfxRvADWSGYeh11W0vAEICWRYJBhaN2pX0R2PFBjM9ZjjFpYagTmLJ8Ys18jDc0qZl6OroxpcodnFwRSzAxwTriMQCJw/BOEIBDZ4DfxR3AL4G3jhj+N/NWhWoArNOtfvrb0+vjtwictDEg5/RkPXMkietl6jatVlU65xMykeicmrIzCDgKZC/S5OLmNvhgkD34OfQCAQOMcIwhEICLwG/hhuHuD0Cu6cYXcPJ4Qa4G5Z4og1FiV1QXfYZbrwQO+emBUVXpYRub4yISL0SZW2NPQPq7lY1p47WZO/FXiJ6hX8jZv4Tyf4+gmWPxifPgkELgKCcAQCNv4bvjzFssadO3jzo/joGeYN6kq8DaF7UIzpVq0lny5dGOIr46WIUZtwyKzU3qMRaRF3aWdxwsVUMnLPNaoVmlfwwbvYJ3xyio8c44/EEo1A4AIh/lwDgRJu4MYRjirM93EwB93B7gz3mw3t4Haph+6ekRwMrHtweEOaOLCEwo+hoGGI3Ad4zQRb0yD3Gh3hB9gsaz99Afdu4aACT1Ef44xC0ggELiCCcAQCo7BeWHoZ+z+IT/wKfgW4OsF9i1IYQsWYdaMqJU0c6OYfYJ3mkMriKRy2eDOCkZQi1McNmhUuv4I3gZ+8i18EvnaIZfCMQOBCIwhHILAFGPx1fP0eVt/B7xEmADfYneA+bfpUo/svv3bhU5DU2JvmSAsOUJa07Ij3XKBIwJgplS3WhGZvnayzKixfwvvv4tIp9vaw2MP3H+AA8X21QOCpQOw0Gghsgaznex1vEJaMaga+hN3fw70KjfXh9a64CdM4UxpGhOZUmlSdG2jPMoVVIlmJogC1ZunH6HU9DF43JgETLGtUAM+xuoPdq7hD+FuFawkEAhcRMW4IBB4B3sAb97Fo0NzF3e/i1gt4ZYolgczVCSOXXxRnTLbQDx7oPRcxY5LoHwNTKn7uJrECr79fU4N3cbDCKbAkcIXmJfz14YYOBAIXFkE4AoFHiRu4cYDjGSb72K/AFaoaNYEJRGjawX5prmSbJRrCwJ/O0HUVCEdqbHrz2I9NMjo/DKrQ1Ji9gr94C/9lgVsEmmLnRfzoNg0cCAQuKoJwBAIfFn4Dv9GgWfffEzQ7qM8wYVC1mW6oefMWxtaEo7D88yE0D3edh1l1UfZggCtUDG7QzEDfh2/dxEdOsbuPj83w3DH+UCzLCASeNcTffCDwOPDbeH0FYtABjn8Af/DX8Gsz1IxmggpoGvAExGioXfEwTlSAQxq2oyODb6OYlhDspOl+TBj1BE2NpsJkbbOPkzlWl3E7XjMJBJ5lBOEIBB4rGPwNfOMU997DuxV4gsUu3m/w0gKnjGnXf7dLLxuTPeAhCEdxKmRgy5D2gBhNBRAaBhOmhNU9HHwKv/ttvHCKHaABmMEfx48/upYLBAIXG0E4AoEniTdwg3FYo6oxb9BcwpVX8Ye/gC8At6eYE2rabG9KjJpQtdty6KUShvAwbiGIl9vLLQAmaBgNQISmQQ3sAO8R9glTAmpMD3B3gvoa3g0ZIxAImAjCEQicIzD4m/jmfdx+D+9WWFUgQlODTjC9inenmN/FfoXlDDtLNISa0czQfl8OvH4HtWpZQvvluSatofubJzQAOhoBVARm1DuY3Af2sbqP6Q4WBzh6D/c/BbyNxX00QMMgYAkwcP8T8WpJIBAYh/8PK91tZCKTcxkAAAAASUVORK5CYII=\"\n        id=\"c35c8b088c\"\n        height={627}\n        preserveAspectRatio=\"xMidYMid meet\"\n      />\n    </defs>\n    <g clipPath=\"url(#a4e1f56fbd)\">\n      <g mask=\"url(#5c96cb8917)\">\n        <g transform=\"matrix(1.041667, 0, 0, 1.041866, 0.00000265, 48.437538)\">\n          <image\n            x={0}\n            y={0}\n            width={720}\n            xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAJzCAIAAACpvbOLAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9e8xlWVYf9lvn3u+rqq6qrn6/ZpgHYweYIZDOkASwiWYUbCSHSImtJiSRpQmyJhLSREYB7AScfIqiKAZCIpDjDInswZaw3BOFyAYcBNKMzMtKBhNwm8c8emAe3T3dPT1TXa/vce9Z+ePsvfZaa+997v0e1V3VvX6aqe+cfdZ+nHNv3/U7v7X23oRAIBAIBAJnC+bz+MoCh7u4ucKFa3jsrfjCNYw7oBGHjIHADCIAYFLVWses2iXCSKAB60MMOxjWOHgJ77kfn9/BjRFMGF+ib7z9t3cS0GaTQCAQCAQCW+BhfnGNIwYfYnkDj96PZwnM2AXGiVtM7IEyiSBDJqBJhmMb1SlPJwPA4AGLI4yEFWEgrAkYcPAcfcvtus8TIQhHIBAIBAKnAPN5fHXA0S5uEBZLnD/ELYCA9QASYtFkDLqVns6B5KqLPfWPRzBjZ4lXGbu3cN8Rzt3AI0lJeb1xRwwiEAgEAoG7Dg/ziyusjrBzHQ/dhz8W5YIwsFEmPGmYZxuwesYMU3HtqFMegCOML+IbL+OTjK9ex03Q+096o2eDIByBQCAQCBwHzBdwdcDhLvaXOH+AgwHjdMEZ2vhIk214qoEGw2jXde1U3QHgAbwGnsfLl/E44b5X8ejrqHYE4QgEAoFAYCtc5ucI6zV2b+CRB/C5dXLzOZVCoVIsasbA1gFzXQuebWALjaSoKVLCwALj5/FND+JzF3H1c/RNW97v2SIIRyAQCAQCs2A+h68ucLTEPmO5wKH1nj1hI13dhm3UVAOdcAxmIykwOodnKgMAjFPA5Y/pyfpGbyuCcAQCgUAg0AHzObwK8AGuXMGfEIhbOoSgJVrMR0NmhA009YwtJragyTYAEEYAC/BN3NrHrVfxZdD34LVCEI5AIBAIBCyYgVd2sFpg3Mdj9+ILhDUlj+lJxoQpX7RFHaaDxAY2JnBglm30W6hTTX11fTACX8AnH8Rj53DPazZ7NghHIBAIBAIZzJdxbQ2+iXuBT9+H80gJoelys1ItbOTyOa/fqWJKZthGK0BTFvmgTbkjBDrC0QqXD3D5Kh5/DZJJg3AEAoFAIDDNPXmFQfu4/wk8fwNHBDB4RtioPGidN2q8vp6uUq8iOjM5BRXzmNU2xGAudyQXjn+Cf/1BPHsOX7ndUkcQjkAgEAi8ucF8D24w1rdw7wP49IidjTV6koa1aWoMzaU1fDuObfSTTJtsY2bZDxfZ4YlUHYGPcGkfl67hLbdP6hhuU7uBQCAQCNwF4E/t4ks3cfESDu7Hs4wdAmb/x71oiEYlSOhLzYozbMOPeGZZMNX7jLyh00qYgF1gF1ev4S334/l+v6dFKByBQCAQeFOC+QJeAfZv4eaDWI6bKxwDLlfUSgtO2MBs6KQ76xVtpYSbeR51WMdpIQwsQDdx6Ryu/fHtia0E4QgEAoHAmw4P8ef2cf46Hn4AnwZ2GJgVFbZFc2JqRTsaS2vk6jMTUtDRNkxfvaTU1gDqyAtGYMA4YPw0fWv3Jk+KIByBQCAQeBPhHfzZA/AaGLEcsQKI08SObTGbwEHYICpAe31bcyZpQxtsztXorDDm6Y6qWwQYwsgAQJ+hf6sawqkQhCMQCAQCbxY8yJ9dgi+ArmW3euZdEJhB/Zkpbt4KNp629AzfIFpsY2bebC11VDY8gD55ppwjCEcgEAgE3vh4gp9b4XAEMzAtraG8+tm4Qq1A2Ha3mT+SLJtTbckKFarxdqZIq7DO/2hPoiGAME4b3jJwhrGVIByBQCAQeEOD+QK+fA6H9wD7uEFpugkDZL398QIrriZ8dmdZvaO3wMbGGMqUnKHpAm9SNWxT2wZfKpFj0mlAGAeMf0R/du7mt0YQjkAgEAi8YfEo/+4tPPAq3vogPgkMBDCUV81gd348cItSmBI0aMfcMhsoqkY7w3TLuAk8z5Bjw4R6KSYD1owFsPPJs5i3EoQjEAgEAm9E8Mcu4dISy3MY1riHjcOrtY2TwMVQnGvnqrCqiGYMRasOM/GXWpY4jrbBKIkm07Opp8tOy4LtDri1i5u/R9/Vew5bIghHIBAIBN5oeII/cQO4imuP4bEViPIqlzZRlDwROA42SQi1/eZ0DWrJDLB6BhdygB7DcFVcjy1xpR3uITCDz+PGErv3Ah+n9zdvbUssT1M5EAgEAoE7DY/xp0YcXsStXTwxYhxAnOWGvMiVJFic5K271h5gvfjMMqPVlBNtX88c6R70FkpvJohYzmE0mBkVRG7zEJcewOHn8Eiaf3NSBOEIBAKBwBsE7+ZnbmE4wmqF3RELAnKwYBIzkodV8Y7jJm/M+HJ3yipfpEEybGtUs40e1WiyhBmVQgbjDgAMVdynOVeWMD6PxbN494P43Jdnns0mREglEAgEAm8E3M+fuIjdezF8Bcsx+1qXIpo9MNnYyrbozAqZmySieqlTSqUuCwvqTBupAx84JtWAyg5xw9ugpkzGDDrEfQ9g/7dPmkAaCkcgEAgE7no8zM8A6xs4HHEPY01p/VBJekBOk5yOpk3nJ8FgK9qxaQIqWpIDkCaXatTRFtaco7kwRnOuypYZGzOhFqTnM9NUuZcB6wew/zIunziwEoQjEAgEAnczmC/hxTVuLHDzAgbGSCBOnpvyop8SUsFEO1RWB89yDkm0BBq+HJ0sCtT+G4Z5+KBMa39Xv/QnGnShOar2drI6e6MiLu1+9YBH0C1c/xO891H88ZdwEkRIJRAIBAJ3K97Nz7yMyy/ibY/jGWEYANQMFImkkJ2Wost78MtjZFdNTjZAQ/kgeHIgUR7kVJJCNepptM2UDlk3PRMp3VEZXi2Z1NRErb9e0k1qeSM/qdT4gvgFfseL9I4TiByhcAQCgUDgrsS7+ZkjjA/h2hK/NySXWZy6Tp1wvjFbyqQV1LSjUhS0WjBmG9T5E/m0t939lIbpFI5GCud8DilhlMFUesboWu6oIyOZU7aN5AM2I1mPeHF4x6P47AlEjlA4AoFAIHD34U/xP2PsnsPuqzhEWmYjpYLOihw6acOkjlrhoZmPiSa96E9a0aGNivPkdjo7sHSpRtV+M6bj2Ekv76Q+VR2xJz0TBuLrfP9Fuv4v6DuqqnMIhSMQCAQCdxWYr+C563j1Eq5eA+WYwpS3Mf2rpYK0CMdkJnGEvHyWX6Jj6mA2JwNNqlHNBzEtsGlKm7UFEniuUJYBrVQQ9HiGHWFz9XRzikLNKp1DWTLTRboOrP3dbEIoHIFAIBC4e8B8Ea/cwANvwyeAwYoWRuFQ6kWROno6h2Q/KC2iuUPKvCN3SZqmukPORWVt0BRLmjmk8ISgJ7c0eAbaVIOnf9y8lfaQiEemkej3j7P2aCgcgUAgELg78G5+5iv47PN45zvxCQZxTr+gdJC1jqRkJEkjO12S2bCKVSRFJPvXtERYlZDRPN44V8UxA4IqtBU3B2UqekG6sDkwl4CCNs/Ip1zyTurqnkUxjzQMHS7VQygcgUAgELgL8G5+Zo3VAssD3BiLjFEyNpB1CwZtk7fhZsMq/5qYgZrH4Qy2irnUnEN63BTyqI9djIMzueoOrBUQcSGbbFZiKJ5AzAyPiZiZaL39pm6hcAQCgUDgTsc7+GOHuL6LSwe4MZbECCEEUyqG5gdJ5NDlNm+DnJYARR0my9YbfHuNCljasV1KKbKm0mi816BlADNkqBHQaZVwfYud1FQ/qoF5pPEqHt1+HbAgHIFAIBC4o/G1/AngYIVbDAZ4ALEEFVRwBCbCQjkXwZSjkVU6wYQYdIxGGdC8pFEd9xI2CyodwmdrcskeRcU50GMDrdXGnLzBWf9pEKNaGqmHR8AC+BN88xP4zHOdu2vdbCAQCAQCdyCYH8KfnMe1XRwscDC5SBtM2RBJsQEXVGmkzff+3DcInnMYdKhGNzhSdSFu3tEF35fOG23JJI6vNFqw7YC4Zi31UDXBahwQMBC+iOF5/AZor+7OIRSOQCAQCNyRYL4XL72Mt38Dfm0FAIOa9VpWyeS0VLmkjsrK5RNdYFQzYyvJoVYgkmuvsy5mam2jPSRDm87ZSfuoOUdzokrdSCNXozRSLpbx+3VFTS+GYbguRozP47cew1tewGaEwhEIBAKBOw/MV/DiVTzyjfinR8AkbFRKRjmtckgBYw+dLjp1kE8SidElMCGVtA+LlQFkuxZYT2rWF2flm5XjJ2Vs/Ldas3xiJW61ctO+vQtNC2oJJHEsYnDpdOJhZZJObrEwJIlJOdaiglO8JvoSls/jOzdmcoTCEQgEAoE7Do/is1/CO78JHz9KrlF79ZL1qXI1tOwx8Qwm65mdqoHqxT21bry4lkOMjSr0ukWu21zF3LSTC7XYUJYqH2wXlliMtgVz4MM6XPrVbZJpM9VVBsiLqnlWlLtgAEvgeXznY/jURpEjFI5AIBAI3Fl4D//qTdx3L64egRlD1ip89kZO6QDyVXUMnbehMzkqf49NhUYU2ViRFfXYJiWzWtdLH88tPtZsv9ERux4b+SKtgBHc5NtOkAgDj0fDcBWPPkvvrRuxDQYCgUAgcMfgX+N/ssYwYkEYAWIMQi8sz5j+N8AETVyoBZZ8SFaHQ38/kXzGrYp9P50P7WIeSuGg3O/8kh4NntHL86gWLcUUHrG6SKOdDllJJa1dZN2d8kAYsV7i4Lfoe+oHIoiQSiAQCATuFDzJv8jgBUZ5t54SBfLKoSmrICc3gLDO622QvI9LeKW38MbsRI9SaNMnm2SlXRHenet4jo7gtPdSoaqRethzy4DKqdE2unxldkJsLcA0QlEMLHFAWPgnYREKRyAQCATuADA/hk9dwpcv45XRqBqiYUjQZNCBEm3pSrKP05mkaLEE7Yx7JT6+0jObaS0XN3w2WlQAFRsQLkVmgXYnVGDKee017tpvsqjqpkwvNSVaEu9g9TDWH+2LHKFwBAKBQOD1BvN9eO4F/Okn8SkVvJhkifWIhfWvI4qeoRf4Gknt3KYnwU7VnNOFddi2sGFGjZU5tm9QyjcwAHXczuoYylVqCg9g0+C8LtKZEAtXOD1tu2qIaXYEPYz1yziHPoJwBAKBQOB1Be89gF95BX/uSfwjyhvAQsUhqERYSKiGMiF1gExTUoYHtbMoCjr0om2mV+ZAh17MNCKXXL5FIxrSOHaFhTpA7ou35RmWcJRmq1uYCmmArBTmbNLpOPIfDVfuxy30ESGVQCAQCLyeeIL/1+fwwr+JJ9cqdIKSHAo1UQVqiooLqZjjahrLMOvg65KuQX/LN4/epXoJr/lQTpUUogejTrmmGhtmvlC7O9SsokXLHKEhotWIc+dx8eOdPetD4QgEAoHA64Z/g/+vV3HtW/AkpykbNGLI7q3sFJ8DKM43D/U6HGIjm9EDBIz5QNwkbSIZjVQPUoGVjo2pXl+VHNL2pJLOKSrCIYWyeOjm1TgaB10NBpXN7CSd9Nmdx8UljpptIghHIBAIBF4fML8Ff3AdL98LEFYAJk83YJS1RHNAZBxTiURb2CVtZIJCmWKwyuGAct4uEqFJTE0RGvkWmXNIbVS10OIK04GQDO/sq9NmI60oSQmjbN541ha293nR7dcpq/oU7lkxLtCtfXQRhCMQCAQCrwPein/5Bbznrfg/qeQHFHAW6mE4AVSKhpwOYpIpgBZEJuYxobGcBqm/EyHI3VFO2oBe3nuqPBS2wchHOStiulR6yfNKIJ7e5mCWpshWkTPyJSZpozauyJMTKiiHdeTJU5PQ6OiPCd/ke2RVkYBr2L+Oh3sb1kcORyAQCARea3wbP/0qHroXLxPGUaVooDH3VQoHVqf2ks/8QE62mAop0YLa5dWZGeY9fvYVfw79AEQRBuYXwJjtl1EeWa8Rl/DhIyMitzQ7VapJQwjplTDh1/GXADQJRygcgUAgEHhN8W38NGF9L14esOYyA0KSNqalusbKFY6VtpEMtLBBmWQoA73Lmkm/QCkVRjI3YUTs3QAsGtkbmm24TreJy9RDYq5bINs1Nw9kMK0Ejnrqiuz01huSuVliBuFhfP6lqunqLgKBQCAQuJ34Nn56wHrEYgcHayyhpAg930RJF+W4mn5S6xxQIkdZDV08aEvkaHhTVVyTDDlNHKUpP7hWqnmwaK241RuJURQIPC0iSu1m6wF4bQPVrnLWoNiTZxhzfU2DGQhfwlt/n/4sKoTCEQgEAoHXCsxfwa/fj+fPYX8ETQpH2aA0GylnP+jzebhFMqbEUkoHXKxMYzNRkqbXb2Q5VKuBNfx97d2HiivMj6e0w6WkXiR0Nj5SDJoECPYe6/a3yWwdwY/w53+/PYxAIBAIBG4/nuKnP4PH/jm+4334WbtUOalVyU3qBkB5fgpyGgfyshywIgdsYTmY5rkgNWhEji1cYHLDUqsWDGyDTQ/d4AGD2l/e9dUrF7Yx3WZFCOrqJdRiNZJ6nGM+gCIcpby6o/YpwAPzSDTS4p9Wa5yHwhEIBAKB2w/mZ/Fr78IL9+EjykdxzslIG8OSTd1gYEg71E8Y01u0EioYPJT0i2lfN8ormpN2zJxcMin24EfZG/7QuFR4gJ58K21WEQpX0XOF1pDaEY2cCjqfX2KGoVQiWU2kXK0bV5e2kWHU/BqikRYtOhWEIxAIBAK3G8yP4tnfxnfcj7+bndPAKKQA6XjNJYaStoRVy3mxC75wkv2hWtL/ahLAyMkWrI63xHzYRftvsddRDNuIi27MpWvYcna2inBszLSQ8ZDOA23Msy0t+yiMRXviDIABGLAaW8wtQiqBQCAQuL14F3/iM3jvn8f/NvYXJpdoiIROUMIlel3zEnyZGu+FUaRu9Y7uAyvz6C3HmZsqERYXdqlyPtzp/EKfG9hGr4WtSwrzqMx4ljBtUchMNC7o8Jfpr+jLoXAEAoFA4Dbiz/FPfwVf+C7887G8009cgWVhUChJAwBh5JKZMUGkkLS6KEHeoqecTXZhFE5zaGuvTOrfOWyZ4TEdSGylNSukcdoMOtR5GLLAV2t4Yz3CPolpJ23U6R1oUJl2VKhZSGAQLeiQsXBjCMIRCAQCgduFf5f/lzXG+/F5YEllT/mRCi0YUOhCyQQACBhyQobxwfmUVS5niaQopYFgFtDUjZtMjh6aIY9ZY5O34d7+Z3M40HThs2yDNyaZdsBK4XBj20A4VLPNSFDJlWGcQ1quviAIRyAQCARuC57inzzAClgSOCdsalVjcnslAzRzhRQrmTSMHDoh6/ZGFTGZoieabaQsDSlEyRhNTTGGTnaC5KJuIBwtDqQLxMZlek69M/n22TWV1lMv/ZsjKsuuy02JDUs7eVSiHrEyZeFtepATlZHG3Y2weoZ6no7KMOUBAPgVftytcR6EIxAIBAJnjw/yh1/FwTmsbhY+oVM6Kx9dMCrbwkiyVyMqzrWwikwsSDn1FFIZsqcEZBQA1tQYAFl+sBUq6mAuKR9fhA0qc0yaUsEEt8on3NioCBK6HWcjTUFRBILnH375czsFxt2I6Y6aisiI/3f4rj+N3/1U+9YCgUAgEDgL7PHec7gMXHoet0ZQnnti1hK1x/U+KY3THHaR6kAxgyo3BnYRjgL2C44dC6SOGqmXeTUwL3Vo5jGbjgrCCLmrtoHjRj3Gk67a7kiV+7Eda1GyrIh444EWz+Ntv0Pvl6JQOAKBQCBwxvgSdp/AtU+ABmAAcSNXozi8vDBXWVRU1A99Sik5gHJTxQBlPQ/kYpCfpaJf0GXxjy5o5iy3htR1IQZqBS1TpbnW5wzhELbR7LvXZscMFdsQNNQXANOTabXps0P0iqVV+fpxfPZ3/EgCgUAgEDgj/EX+mxcx3sTOCkBWJrKGIapGU8Pw+77a3VVMa3IqjkxpG9Aih/Kj3uWNGE7jBVVmg+soXc0JJUaE2EQ4uLXkRrP3mkg1zRqTWaASL3RTVE7by2/Y8fiFQIygQhh4cZ4ufjQvORoKRyAQCATODP8+7zHWN7AYsaa8uheAvA29IGVjsDoFSGbMahXEpYiOWUiQLA2tlzjnq+MpqJhHZ24qZj24WNj4jJJSCj8qXATWK7fXCU3NtnhIHbOo+U0FrsIubsBiZg56uoUeqs0vaYyERj4/XFzhQMqDcAQCgUDgbPBB/vA1XL2Fm4QLdUYk5SU06mVGtY3IG2RKWLjFkCWQvL7nYGMvkhdJAA/JxlGN4k07mRzz2RWeuEzhHmqpAlSmajhX3VY4ZuMszmyGcLgQSe9qehqKIbEWTlrVe8MuLYvdAV4dFM0IwhEIBAKBswDjD/GbX49vX2E1li1Rilcb0vqhOsFClAwjURCGEciO0Ex2dVUIxFgDYAzCSCb3Px3I2udKSpkgPY72dAOyp9fEJWkYvaU1yLQ/F7boyRuwHn12idKuTYMTKOkl6y5oEg7Vgkn7mLEBmDGscVgNIBAIBAKBU+Ab+f3P4GPfg/9OJ20AgMrVUJvBmowNvRK5y9vQU1qQWi4LmYuBnObdZdvrmuu1TaXWKZY5p9mrxoLtqduINckebSfuoxuz01sam8HO1iJLOGYCJTWDmRFjGAARE3Z2cXlK4wiFIxAIBAKnxX/Mey/gj78X/y0wjjnYMTYmnjjlQ9b48iuNquyHKbwiBEKzGRdDmQIujLRoh17XXGIfjFLHaTBzUC/u2rjoJS7G0Yqt6L+tfUxYm6GWEGYJRzO1whj0b9ITDtWdabZZl7qnDGAXl0fcms6DcAQCgUDgVHiK90bwY3gHY5zIAUDAOPhJsJpkTGkZkrGhExgpm+pd5lnnh+bNVnweiMr84DwSKFKSbOC96ZzIIbGGXL0OykCzjU3kRbtwuZ3S6qZohdQ1renyJtvoj600NczpIr2WtVllM/J6+IowjSAcgUAgEDg5PsB7RxgPMeSkBJeNkSIpalHzsWIhg2RdOMUi79M2iRbFPbOazJKvgnP6KAMEHrLEArWPK9QO91y8aZqjWznUaQwsSRhZUSnKCqUwjUmbaDpmLY9MS49QSjXVVWS1cu/7c/k0TrN9vKZZyrLcgm3Z3KBiT4y8KrlcUvc13b6+QSGCpYU0NrnCPGI1jOvJIAhHIBAIBE6IPd77EtbAgnCokjaQqYB4xVGSJ7L30iQjLV6u3b+QDAmmIM/14FxFljCHMQMpBiB6SU0DFOXh3Lg2IqQVLApVUIqKC6bAcY4auuVMzphAxO1UCTdcYSQTJ6hnoNQV8zjZmmkwmW1ldFSIMzMrCoedzyOSRuYcrMbA6XyxwphZTRCOQCAQCJwQV7F6FMvP4IBM2EKLBSwiB5tLEwXRXjy9nWddBCJ4UGEeiU8wIPzGpXdokWRIkkfSIerxq4hL9fLv18vSbptUEeeBdqmG6848KG6vxoFqNKq8wWz681aaURLX45ifw9i38eVmMoshdJYJEe1g+AD/3Y/QfxqEIxAIBAInwQf4r97C0VWsMiEAVBpnjhdIqKLsCjuBirMq5XZqK0kaB1m1I6si5qrSSETYKMEUKixBSgrIhl1aiRTa3GkJKdCzMffCg5sd9Wq5Tk10o9NFb/cT1wJnoraBnXiWIxSx1WwqofHCcHGFfYTCEQgEAoET4EP8oVvAPg5GnKNCM2QNLkxeX2askErpqA5E3iDLWGBjJeaqpIxYLYShVvgg8GhyNpIpALUhi06ugDRS3bH2te7qhm3YHPIA/JRd9Hx2o0Sfcj2gip24XtrEok84WB+IVc2WqrGBgQNcBXYQhCMQCAQCxwbjD/Hs1+Nrr2F3kYIjJbVCWWHI81bcAhiFUKT1xUmZsWxNUs1SEVVjarm+WrIxspkGqd5luTARRTQJmKEX+qqIJWPf2IPS4MyanqxmCFcjbpe0LP0It1c+1A6xOl3U9s5+hLNLkDEAYj7EMOAIQTgCgUAgcFw8iW/9Ffzi2/GDA5jzdqkqH6KHSQJJTCIrHFJJ/tWcwy3CUZI5KE1CKeuQDspf6nI7gKk/cbhrLrSjzEaphi3w2kYu5crYt1Mlh5qWB6xts5Kw0lRB5gnHxlyQ1gqn5bix2ZsbfD3+zlAZhAEjj72RBAKBQCDQwffxD7+Azz6OtxJGxkKvBDod5/W+pESvNDoZl/VGpVkutaDXFUWyhC5R7UioZYJL1PDLktqrpYrL4ZisqGNcox9S8ZNQnH0dMaks3ZjZjmZzxbr9XpylSmSpN63dgmHYfgngERh2eXgkCEcgEAgEtsUe772CG9dBS+wzAAyjohqdjeYxs3i5KgeMMRTP0ITDmKkVw0wjujpbZqMDKyomApTlPQTN9Ah9OZEVcq21SIbumo6Z9iGVVbKLLp+Ja+SRNgrLJVL0glNYqQ67uKdRP5yOAfN68TbgRoRUAoFAILAtruHGA7h4iJcAGkHAOIC4sYT5dJxCA+o9XnsoydbU0ZiUkJGtSVpwM1enhFDl7FEtuSFZI4PESiqSgaxwjJUX3wwbiSDwuKmi8u5bEI4q8AGX4toMl/TGMJMTSmXxMBCXUNRWfEKdNg2IeI2XBixC4QgEAoHAVvh+/v4ldg6wUrEGvSRGWq9TaxhciR9arkCpa6QLpEag5A1pVi7BChJe4WhFVaSLdOx8cGs1jia8DQHMrQsGZlHOrdrt2CsOlwu6Lczwjzykhh5Dhtc02unSi8qAB4AGOvJjDgQCgUCghR/m79vHcoVlnlVBinBMIkc6hrlk8jkU+WB4S9mYDWRLANioirdRFMRMUcnsZ6gkEGQpxTnWaR4vAMcISBU0hJCsClSXraojARGVo+q70X+51NLuXFYf0V0kW1FB1I1J3TRhuMhH3Eg+hXrmdpDSRXrYrOQpAHktlhySyS0T8YpWA5YRUgkEAoHAZhyBzmN1I7v8KS6QkxgG2SFFeebJH43WBTPSYh2Jc4x56Q5ZzCMvWkp5QaopLiM+31hmZywxFPGzkyudpAfZQ664XmBEmZbCeXA0NHiDZhtoJGCypJfaeqodMiVccQhXo8gD8q+6RnmWjZEZVMAFQhScEJIJlxz04izsOI0bkh58tprWplYAACAASURBVJEe2Zwyg2lY7GJchcIRCAQCgQ34z/mvEHid+MQkGJiZJjpLtDqACq+Yl/hcWOanwKggbXlDR1sAyJu3jpsoLzrVGlC8sWgbDYlhurVjPRybIkqOdjTDENtljLoJKdJKw3FbtuH6nar5IMh2Y/Byj9CLXteFf6jHwmt+YfH2UDgCgUAgMIcf4g+ssF5jkRe6GAnEaakr45utDy+7n2RyoDc6EU2CxqRnkAq1wC7zpfemT8ZIy4WR6k6aNV3UsRDrI41rzmko7avNok5Ioq5YBJWNzp6KffOiVmvqy6pxx7y8UDE/AFjq5htpdpdHbusN+JXFfxIKRyAQCAS6+BB/aIlbS6yOGhNZtZiBfDDYS1JuXtdFouAkmZSW80Etb+hOyyIZ9TIblcIxTagB0nqaWupwMMPYBqTbM8VNkWNCnTtih7uJDeRIli2rqFNu0Ld23JRVvziHq1Ltdttsf3fxcCgcgUAgEOhigYMVLhCukdl9je2B7O+q/ajPKRSKoJoX0aIkbSgZgyt5A1kmkcQOyrulFHnFBm4Y4ME6UxsXcOMBeXrkYC4NaodVE/doEJc6pOLYCs2vzyEPsI5rQN+8uZe6kZJVcwLJIQ1vA5upwjdEwPOhcAQCgUCgjR/m713hPIHHvNUISj5EW+0Yk8jhyqHIhJElODXoJqE4bQNKxtAsQc+P9auH5ZuYeAmr0/koiYyhlMyxj+4aX0CDcwBl1xJfvvWyoT6NYxpxutKpMl3t7PTWr8Tyt6hKvQHPjn9cLs4F4QgEAoFAAz/ATy0wDCDGctoKQwiHSxd13GIiHJI0qilCFSsx9rlQG5tTyxsgtGO0sRjXnfWULqmz5wTnRQ4x6sUmSl11a24ehx5AO8iyMcbRDOjUoRZsF6lp1StNVuPbapH1MkV20UtJCQQCgcCbGHu8dwtfPMRXd7AzKsfvUjfQlzrYrGmxgUyMRuQwfYlxlchpJI2pBZjuxNL5SpYpNrPPYIZzpPKBx2a5g9Y57DxeKel00GmulcOhKzbCHMdz9ltJLUUsad1CJaUsdiKHIxAIBAIea7xyAW9h3NCbwXLKb3AlRntQ5ZI5Qc7FZhTbvBCWJIKQTd1gKuWU0xQ1m6EplyJ7YnkjT9Ec2y8h7U3fiHdos3mRYxpSx8IXMwbkZUXU+iUQ374FISC5K3U/c9XVFnFbaxuzIRe1k4tvWSsftkoqW+BmKByBQCAQMPggf/A+YImbaxy1IiZG3qgNtKtmADnnQwdBlEGJqshppXZAskQrGaOcqsU2jM1g5lE4rzf0XXHpvXUJxNwKjnQrSGylWp1sA/SjnApqAqVg2jwm1ej3bg/Vh+JsumrNsBhC4QgEAoGAwT24+VXc8xAOZ30hZ/2gKBVKyRAVhIA1p/U2nG4BmKkoSQBwM1Oo5KumdSxEaJlaQJZYOLUg79+UF9sWHYLgKcJahW+87+ey65urNekx2p07FUeUAFNNzeBoso0G/2AVVcol+rHrSM10lXNf04Ma8y2ULqo+q+4syP7N8hLDPAHkJ+9bnNpcHxyFwhEIBAKBgh/h7z7EhR2MBIxmGVCjcKjC+qqgnntiZAwkBzX10lQ43M7vJm/DnYrIYYfBzl/CVNFDJWck8kwD3AymmLIqIpN4lR6/760peFQzicVqRlqQeM2cm99W/mi3kUtbqgbXlyJpNBAIBAIZe/y+NS6MWBB2MpmQKSTNwAryv2bqiuRbCCHQIRKbPEFsuELpxeoHm2mH4j3FntI6GQ224U65Ud7N86jmp/R1AdWUS96sc0QarXhvzoobtfmC8ICWwQxJ2DiWjdY+wcSUE+7ckMqeGvWtfHChZXkVAPD7wAHwceC4jykQCAQCExjnFrgFXAGY0+5oY550Kq5XJYaW39sRygvmn++SB6pCJDqfI7VD4ExEWIQNl7ch8RSUUAJlVjENa+INQw6mOK+8gRMoCqUjEEMnL6EOsgCGtbC7XDMXdUdll1c3oHrE3KAaDSWjQ0dyJGqzo2xGmaYRMwC2Q55lP5NMdScpHBPDWOXTwSpZzwFP9Ov+S+A9wB7wvcATwAL4JHA1+EcgEAhsjf+GvxtYM3YAVNGQslTGjNoxqRSKKOh2jIpQLcVhptpOjXQW1QC8wuFiNCV7tJ/UOUc+lKrBekjFVHOqTrOVu25qEqSMbS+NeEzpUc8Tad1Mx7U3idMmmJ5ALpakh9mb35sfxetPOPh9wAPAewAACwDAdeASAOAIWEDksLF+NAwe0/cbPG02DKyBA+BBYA/4y8BN4MvBPAKBQGAWe/wUcMhYUyNckpQDtZxXg3Y431zxA8czoOmCYgny4lyHOTbMUlFmib7Mx1O4KtEtyIWG0MAgM8K6Ba1yFArV6a4Ucg5BOMHDVdDDM8W+o2yyIYDSkjHcDUpOTX8wVdcer1tI5QfAS+CLwM8Be8A+cH6aGQ1cyAeDUn8686FLkI8yX1mCz2E4An4UWAPnMvO4BX45mEcgEAi0cQjsDrill9mwmN76BnWR81QIZuOMijwA35RvOMcapiW0aFr2W97gp4kP4uxsDGLSGcT1aoJCwEBll5N2+EOtB+qoAFuiADaCu2xtLyOEmjJjVjWldImQdl3R7ese0xiopQJ06Ym/tancxWW6kRFtJDa2ugmDqI/WdCEMtbn817ysdNvxX4IJGIED4EJmCa0vN4DZRepzxZlyAqZNAhfAMjOPdwIDsBe0IxAIBAAA/wN/5yF2uVAE6gkSszqHEA2yVQDbTlPnGNMcVNgq3iyfpmM1SNMdNzZAqRfVaCsfdRVNOAgsU3JdFRV9qP1sTSUa3Un9loZREjWab+AV1WiZtEBND+zllcKomo302883Pr+M2tliDzzpFiMwIk2Bmu3eRMm6Fttdyhx8mJjHYY6//M2gHYFA4M2NPX5qgRs7ODzEEp4rOKIACVg0QyroZ2m0mk3QjGEsrr32U1Iix01f1uii7d3bY6ivGsaT56cU+mJr6kGqWlvEU5xwUEsTipA5osOqi/nt5LRi0U4omfW7TRmjoJGMApYn9VqEVJ4CP5wzM44A2qrXzWxjQ2ULSv/wGljn/yoG8I+Ad0LtCAQCb2IssL/GRWA1YAQGWU2cy+wP5/ZYcw5lkkIMXE7dVbGBctg6OMILcJ4Uw3JV5w8woJb2gvPKEosZTM5pA5WzLYSgdv6i6ORL1FIsoIYNKvfu2kflkudKdBZtfZXcpeI5fYPNzeEMWsGXQmKkZDOdMaEuLczcdke7B74KfAF4T87M2ALmm7TBaOtLNjAFAo8YLgAH4BHEwI8F7QgEAm8y/Pf8HSMuDMpJVNNG0FE7yrySZozDVYc6qIIs+pLvt7ZxJbUEotCYYzLr+LrKu07n5GxXDb7dxayzr3WFjdoMdMAoNa4ph6rYFyTm9QzPchLfOqYMoHJx0KFoZ4SnwA8BF4FLOX6xHbhxNG+3xaWe8QgmDGMyoRH4iaAdgUDgzYE9fmqJqwNuEXaRF+CiFufQ8RFKlxhqTbCpQU1K6tQKndepT9kvpOEX70KpAsV4oIYqrRnNn+1WKWT+KsJQyQnSYDmTQ9Wva1uljhZph7peX7XQSQqpLElPOc5jZf0c6lYavU9rlLDRYKp7ETbHSuApcsUmwYIV70xptrcrpCLCxsPp+3RsnDiecqwuJvVvABOGI+AQ/J+BXwE+GrQjEAi80bGD60e4ch5Hk54ub+3qJZ7zBATxpbLlKdjMW4GrXa0TKi+7siqXDsEAeSMV6dRGT0TzYNmxFjYcg0qg4BJYscWGbUgJZNUy8gbTCPQdjQSoZFLtiaHqcmf9CdV+USjqTh0noNxmvl+WMJMbQFsYKUfcuEF7LwQuZKU6mKkuA2DL/26PwrGXv7t8ErZx9vGUjREWKSMMnwYeAd8D+vHgHIFA4I2LH+c/vwYvcDCmpTmB7OZ1RIPtMdQUlQmy0Ws+NQ6+OYWkUi+82Vi2VoFyndtHUgROgGna19VbBizbyovXr8fQGMnm7I2GN+oOKRGiTI+a2aONdrous/vodPSkk0eyEfqx09kTjj2VdrKuuNkmcPdk3nRT+TEpCI8YKC+LG9NYAoHAGw9P81Mv49oNjMB+M+VC53MoFmIs2c4oaZGDjaQBWpVQEQ2qtmHrMZjyE91KlZi2qMWMC58/FXVFSSllAnDL3jEAOKUH3tUdk/2wdv+ptY6XoqqzGRhq4p6kfILzGaMb2z/LkMqPgKf5ruPcI9gwoDOPpWzZnDIjYRv7EWEJBAJvRLyK6w/h8i28MJpABtwckxLPSL/qnHM4pr1ORp06YPed51l3WEc0gBJMQd5aBSiafL3eV1b+89haToSGRGi8zMC+pH2aSU0ZIazAk83cCzMpex+DICMfzCDdTnH+XKIn2oiMvRrF9u60vfltaTc/9BM7aB/xOQ343wbeDrwNWLa+R8dtbWOt7RWOk2ke039OA4ZPAyvwS6BfB87ucQUCgcDrhg/ze0dc3sd6nRZFQi1yaEmjGWcRe2m2NS2lEXTQb3fw+ofrZeipJrbltrYx/Rn9/vKbFQVDPYonNjelZsnOozEk6MFzIlj1k/EVrZfixspm5Vqrkc7g2JX4LWykQd60CMdGnIHC8RT4VeCXgb/RYa1njtvNNgAAxOA1xq8FD1j8PPDvAA+AQ+oIBAJ3O46w2MG1ERcmP1YEjfSvSeoEIPkK0yWZqJLdj9EnyAZBlANLPSgDEVE0XWCllIw6pdTWLetzqJ22dPAiHSu64YSNhhwiN5vOzdIUpaJ5NObRungKA+wSS/VQVCHZ4IoVhtic6uAOHLh7YlvouL2sQ+ShOX3qNEkYW/KzWTwFvgxcA96Dsmy94BTiy1zVLYlFr7wSM5oGrE8Jw2eBR8AXQbFcRyAQuHvxt/h9Iw5WZdFup2FslDREyWhoA6pB4xGdUNEvMYUMsBJgmnU78RpzWokcDZvKEdDAZeO3amywT6DpFMrWcZ4cWOLRaT+XNBiN8IA8hi18rVZXmsO204n1NmXFoD/Orfo/le8UtvH1jdjRycHu7xYtn6awwz/YXSUwsBjBI+gng3MEAoG7Ez/Ff2aBnSPsV9NPJpTM0E1cpO1lbWvaHq3QiS5sl2RvXV9t994cjxvSbC1C0jbc+33zproPYShsw1q2ZYLOkCpyYAgI6+ezudEZx+zoSPNxkXeLx/CDEy06uePcA38V+CLwDbb8lGEUbh7ONn772EZtsMbwBYyfB/8WFqfXhwKBQOC1xE/xe4HlaF6RUWkYPcKhLecSDlqzZPVpzTBgx2Oa1buruAkaFSdoj2dsuORNtVSiaNOmmbCiLd1sWLY+d9Zn11mh1TU2I5nL56g0ku5l7n5qioRB2dgRdkZAOWLBp1n4awTuAy7bwrNjGwDIFWzf+MnYxsYqDB6w/hqMT2PnL4DfBf7p4ByBQOAuwR6/7xC3drEasECeYDIhpVeUOSBFus+XkHeKl/ksrnY5JUMs6vyDEhZR8zVSP2IqwxvKMVcbyjs3QeqSlPBQliaTlru1CIBZ4Kt5DFKLrsJgih2wWRScp8QUaUH4Qc1pAHaF+pTzsyvRDbs6iAXD3qm+3+monb9QrfDBFYXS4/McqDSu65/4HX0PLJu+SnOnRKuFrtLQK+wN45jVfTwlH5dP7xCLATyCgnMEAoG7Aj/G33YT5x7CNbWQRtEVdKanna7ibJJBa/tTUj+eUwtlPfLCapSgAiWlWP9WJsFOa3JkxpOvA5X/6p7qzeWb/EAapfIe3zBz7/TUnwJDjjkx9JPsjpmhH5GyYeExuSnYJ8nTMvNuXxXfthp5Oik+rRaiwCD3NGq1hMtwy8eqlyWVb1FnxdVN+EHwOWDneDukbEanqYbvn7E/i/DKHNtQ5XSIYYERGP7n4ByBQODOxk/xk2ssdzHm7H7t9amVz1Ev9lUKO504p6X3Men6bxdkyXVNlUxKyKkgva4djciEo67nBiyTYNutVfdunoytwNWhX6HVi0SbbgStsanUEPckZ5FNKz/oWusNRbfUNhGpTBceO6SyBz4CDtDI+j0N5onLaWjN2bINXbyL1RrLAasfwv6P4/wpxhgIBAK3FwNGYEXAUOanlFjCrJvSyoS2reu5knHGWM5VkEW/yiNHDdIbM2Pg7iuyc53mlECMNduoirr1gsFEUhqt2anClDVvHStJF6rJwECa7qsZm/gWK+6YAZTTPPvX3IVoHkihjV4eK5DZYh5kU8jRSoiJqlDna2IH1Ii8aBybcDCwcwewjVNGWLY3c2zDEZEFjgaMN7H4PqyuYRGrdAQCgTsQH+Z/dQ0e0oYTg/NvpP46FsLeGbq1N2qnpR0k23d6Q1bIRDe0oyrxHSoNTlVIlfSVgKqEzWIeHTM1E7TfuC9nABhqFyvLVSs2QMI57BtuzZbgS5izrlNGmHyTaoFSeWvldUvVbMjDNmyHYoWa3jOUp2fuhT1FO6aD/NG0nO2pJAeHTU01Vh09Jdvg7im7qzOyhx7YCP4idq5gHDD8THCOQCBwJ+En+dvOYX+JlYRImlGSXujErr2Bjtfouv9qhogJdjQvsTp101I6A9hMPlT2ScNMlhOdyfCoTmW0fkGOIUs7DO3p5cGS4Tb9MSN3gLYg4RI2DMHybK3fU2tNc9NLpoE1K0o99FhgPbBjeMcPge8Bdo5LUmaxkbg0M2hPTEE21eUZtuHquoExcAPLS+B7QXvBOQKBwB2Dn+Ynj3D+HlyXd0U2Dnh72iGnm9QCe1pzjtoVwTh7qgsp6yutkEHvJ1e3MzTL0XWlXapR52HY5Aku0YcyCZZ0I8y9nBLbeJYtyO8lr8lE+xkyU7N9Q1zY1zLtl0YbG7goszYRyRecsrI1fgi8D9y3fYVN2IJtNKy2YRtbahu25BjyhmYbMkjGcB8Whxh3MQTnCAQCdwL+d373EZYDVgByMNzPN4HyiJp2qFM4vSFjK86hu5tQcwvrnKgqAaU1wpka9qa75o/vaDe2LRXaeRvudPPx1D5lx6y0DUs14GasNLueTM29O8s86g49SpNnfT4HGbfWpIB2SIoYbhfWOCOF40fBa2Dn7IIp27RztoTj7NhGXT5VJ4Dvw85NjEcY/qfgHIFA4HXF04ybeMsKV9ZqYahqPmqTdjRZCLZgGI1CHZRxhdq4jrCIx9JrWmSL5DO3mJrR6D130JRqagGjcVPVUEWJYf23MQcnE445qca4K7+GmHVd1LtkmSXrO2mN36LK+bAJpNUYbYNsW+ci1WyBPfC6auI02JpteNuz4BZ1iWcb+bQRTOmxjXw0fTN21jhY4/Bv4d7W6AKBQOC1wM/yQxfw8lfx9VSIBczbdot2dISN+XhK13eKt66nj27JOdyuHrXnc4WuFzlya2a0tI0tRY7GKZff/8IqtLFoG6qK+SDkTlz7Q/FQ1DTQM2N742RMebNzskqVPerkJZPVW4HQ0ooqmWoL/A3wAlidEeHYLpLSODsx29hUd07eqIhIPR7NP6ZjPsLhEsMO+Cf8WqyBQCDwWuBpfvc+rt/CxWWaLTKhdnLlPbjDMJz+IdiodmzgHDOShhQ1F4xymaQtNK5osaGXAlmdto+bj0K7ZOX71U1ZrsAYfDsVY3BKkXpi1WAqIqLb7M+VdSSj04i72ow++MHW5TPrr2dM8sZ4RlNhj8k2YN355tZOZNbNFZ2RPZpsQxXyDlZHoBH808E5AoHAawtm/Bre8gKuXMeaxScBPZ1Di/xNnWPreEqjhP1p5Ynbxi5IUXdEfVdZAghO4aAW29gUNNkgbzTGXyVwcCmEeviDtffN1hud2A8iFzKZ81xF31db3ui65Fp0KZfaCofuuVW+OUiyB56oxpnIG8dnG2g6/pnWjhlMQT3ZRP+tiAjXpy2CMh0zYzWAlhj/x4itBAKB1xDP8MPvwUt/B18nYngWLWQpCMB4rx7hMMIAkr0Tz6VEe1nWTakfVeK8EIhQmbxaQxWYAMFsSlJaR9mxrFwlADbhQ494mqhCZhqoYxv1jeiRtP1oZgZayAGxPEnWJEetzk4A2C8P6gaQCAfzdKfTaiKUb3a6e+P+1eeqmCIDRJzWKae8GQ7UU60YSc5uoTwi0W+ka3ZVysiVkqE6oo0Kxx4Yrwnb6F9trMPRs9+msDptKiie5XSIiJgZe0VieAdHh8AK498+y/k9gUAg0AUz/gUe/EM8egOHlS/xEkIVWxmk0PGPTm/zb//OJ3n/6qSF6i18biv3pujSshc2Q2rRCc8YmsqBO25O3JVx2tUvLJXRblf+Tc6jO18XADHXnaqkjWJPxQ/Zx5vIR/uOCripW0jLtkqmIB3zXjuze6k8BX47cOksCMdJ2YZXIGbsT8M2qktzC3I0JY3qYDomYFzhcMC5Aedjm7dAIPAa4P/ji9+MGz+LdzmP7nxqx9lrqUMq6rd/VA5hzvFww6aOqjh7834/01M992TDj6yJdNRjm78vK07kAz1nNY2H6+o678GQEnjOIXWFAjSekkgm9mZs5KtMTKlzOMSmUVg0lrwrcD8FRJrpPcNmry18P/gl4Bs20YVN4zDf06bBbPWtCMeJ2EYp28Q2arOibTT5hz5mgHBhwPocFj8WnCMQCNxmfJwf/ByWjEs9McO979akpJk0WmEj7dBv+d5GvGxrHa1Gi70RNHWOnj2X12yRPSZLPbC69gwjMZIJpzklqrvpUk1BDOEg1wXnsfYIolE+2NWtumMazWzi5r34QmI+5hfAo9JF+grHHvg6cAlYzze5ob9T2XDr+pbyxsaSTjClKXs0CEetbWh7d8DARVw4wnqBxU8E5wgEArcNP8fvXGMcsdSOu6dzzCSTjmqVMHHPVW+bOUf1U9zwsk3pZdIBZn4u1SV5g2f0HanM5mhlpfRuoUeGJm0DOa0h30hrCdFq0U9RONB8GnKO1pMh1h9E3rvNqxqei+RIWe/WSr9OtpnoCzeyL2b2aGs2TADNbd52CRhnLs81fZZmG6tswS3OtutmAGWuTQJu4NYFXLiJ1QfAHwnOEQgEbg8YvMAAjOIa9SarDMh+WmxXlBI/NjmwAWOVEqiYQCnUJRsNSj955dBG/2SUgwaqS2UruM2ciFgxgMk9a0nFySvsjkmZySTYJEUwOD00c9eZlMjNcvXEMIBGK4dMbVIa3qRqjGrA5aMrgy4lrHSOcs32ahrRllrtke+Kgn4yWyHPbe5/pv81eDimvHEsLz5vzM3DEyoZPYPqMVpNpWempBEpdqkb7UICX8fFBVZrLINzBAKBM8fP8VsZA2NQG5m3NfmOzoESBUinmCaVbHo57goDPGugYjemXIsA8x3rcsdgnLFmJG3VoT28RjkpiqPGa9aM74wi7dxGUiv3NNLQelh56TMfN4HPR3FzbhnQKR0MpvxwjH/1T7RafVVPVqpG10HvQ2/XfAr8NuD8FmtvnJVK0TeoAxwbmtqOcGzJNoBqmsyWhMOGZhK7ZPANXLyAo/PYibXPA4HAGeLD/N7zuLqD/RHDdvTCX9K1nM849apfXZuaczTfu+ephmBmTTCZRjtxBbYOu9Ve+9hu3OoX3jCMjZtjIVnq21lmwlS2rp2ohvffnbhJNZhUhYt99ylOKkrO2zDDm4pyVKXdgvkWtX08MbgdUnkQ+BzwdVrkqrq6HVRjxmbL7raWNzZb1uU1h2jZzI2NgXtw7RwuH+DaB/Hcz+CJvnkgEAgcAzu4vo8rCxxNPzZ5sQTOb5YpB3DS6kVUz5ckTADk5Tqgfuisn6kkD1vC9kK/1jQAtr6w0gT6t9xiPVwVm63nScxo4hwyJHkmsH5Pj3x6epxLKDv/dMrg/J5etyP+mEXeSI+9LNu1ZiUDyESUMkouZ1S/DaP1gM1zrx9OGZK/oKhHfkGvP8FjgIA24Tin2MaW3nQjzpxtbPeo2yUdSydvdFM0NrKQlgoyHTOAfVxb4/qzuNT9+AOBQOA4eJq/9gCrXbxAJdlzchHimAy30HQEAFmZlvIaU0b0bxyTK+klUiibSpIAKM3FhZM3tlQ16nKtxygdwKwVlnQO9SpvuVG7w0xouHh8LqcEYsl9yV5a0Q6fM5PzNUg+CUZeaottv8WXSDtTd6blQnCMk2MCjaW6J3WapeUtV47n7bepsFi1kkZ/ELybmzgTnEycOJblNnLFlmymSUoU862P5yqqqyz/2QNMuPyruPTv4ei94L3gHIFA4HQYsTqH5RGc84OVMQC1XiRadAT5tbv5q1QFLNo/q7mp7lpSjYbT8qPsPa1vto2aIEyqiaUvfstTIlYTZY2ewa6xyb5IQbmwTAORwiFPHSG4B9T1TNNnND12ntYVdZKRyvAVcphNtnvVHjr95xVC+m+/+Qsx92luJikMLBod/HXwCjg/V3NbnEbVkOunUTI6p83vgCGFVcTEix9Vuacj1pKVDeePlx/HlX0cncdOcI5AIHBi/H1++wIjsM4kQ+R6oLw0i+xPyvUWYZ9BImygLUdQbs3543JMxnERN1poKBw5jcP4NSeekC3copyy3MLKfafZoSWwMvVep2TaVhXbAFSqBJXTdGmcqENxD+VTyOelWb1mBucRKf1EZhTJvSTykR8akw2G5OyQHBQrsR41bN2X2UM2fQ3AYCI1/zYlw3InvUY9AX9VP0latkIqBJxXH8nJcBZUo21zarbRPZ3XNtiWbadt1GxDX6MXcPUxXLmGW75eIBAIbI0B6zUWC6yQRYvaRmkSXOkccqkEA7TmgWJAaiNUJwzoFtIpNdxIc2ysnVYvntEsrzsQMqH0DEnWGG3FPOCUz0Ewd8eqTbn3kuAixEDPNB4woORelHK1Y1y5IZV/ysIVAEMbUzdq8kjaH6c0KG6K8rAk0ZTz7Wfyx2AYIpOrl3tX3ckNYmSi5iwThjyB+qPVX631WH1YP+K/McfGNjRiSzMtITRrnZSOcH21k4qBml6ox6ov9SaqGLZhDyazcRc7Rxg/jCvVYAOBQGAD/g9+ZIWFeArY7XkOwAAAIABJREFUF+vqvbZc6k1XUdX9PmdVxR6ocdQx2Ka8WbpNE9O9KHZFqCpOpyM39zTRWaKmvJo8QgCY7SwVOVB+lXWVwhmyelQUB+2sU1MqO0SZaV6kSkpHrOpWN6kyU6UXMyoZRWsJdlfX+1xhbYRhOYxe4Whz461xVsJG0+w0A1Mt1EoDNw2Oo23UbIN71XOPxewI4xcwPIlbv4PzpyN7gUDgzYVf4j+1j5tLrEYMY+Yck5OxgoEs/yVvouX1Ws3bnyyafkBHHbjDOYqi0L/kDNrlNFfSbbQuzPeepQM7MG25SAuCQbtBO4wccYC81otxuqQeXC1dpBKS1rLfKEto6OiG0Qso25XlxmUj2eppsfCq9t6nU4u9pA2W7B9rDxq3cMLlPuUBpNpMq3ONkEovtWQeZy1snMSsRQW6JfO99K7WMkZT27D2WuRwdIQBrLF6FItfxKVvxsHvzo4qEAgENA6xfx73XMer8HzC6PmadsilipGAiu+ce/XpixbNH06JPsyVs1FgWM8OVRXEgtrlrRGSIlit2StyzKwmypLhVTJUymtwySUWzpH3N6mryG3KXJM8KBXHSYoES7/CQgxzSB9rZkRZgIFdWjR9mOURM0Mt/OVUEf8m7dB86jNURltxHvDIh3zdfGx/Hbw4JuE4c8vKjJvlJ+ATmniyKfSShj7ukYn+ql+aiLA19pekHKADLL8EehT893BvNfZAIBDw+Mf8xAo4wpFao3Fme1ho96kv2eNG0KEDcgetH/lt4h7TuMsbsaSJNHWUWvzodaPJBaXJHw1jdUqiXJC9Xq2yVT3JzFLYha7Ydajoh4q/iLiSKYlflyz7kk5T9adsBKl0NO2PU85ZN+5bZvju6hwM17UaqW+ZwbeuLIzC0VzLvPd9ec1IyUZuUZdszTbYGsywDXfMdblNC+W63CkiloWMOzh8FLuEw7+MF/4+HqvuIBAIBAyOsNrBcqWkhaxMGCUDhUb4F+X86g8xs3M6xLgJeRGvnF6p19M8FFdg83NKyiMOYPRlie0Lpy6GTiRIMxiC7F8iGkMWNjBNdy2SRhEwWE+XJZGacp6H9sGZS2lfrryFcvUq66I8YG7U0iiqRv4uKLMBY2ubFd9CD5tpqJ6vW9gdAxiIz+FF08J/BdZrpJ0JTipspOIzZRumwYphwJKMnp5hTt2Bi5u0LFNhNjCpHgwcYTUAIxCcIxAIzODv8aPnwcCKMEAr8A0lA07AgAnSN7SQHupZJ/0E0pnWsi+qfuD16uNQDrMZYZnpxr6tK5GB0KQvbkGwTDi0iZEN7PrlxmZUapNjYjw9QC6ERjIwMgmgwlA46SVwn45nd449CGOpB19u1j2AWsxQXemJu82FVYoo5b5F5nQk3jks1/bAK2DcVkzbjG2oxrxNayrphhY2GTSEh2yzFduwNIVtSVO6MJemg2r2irYcD8E7OL/ElZ85s48iEAi8obDHeByXL+Cee6otveVXfmbPlHlGsv3vTn6ZrmuchG2Yq8avZlWganwLwcNuUpoIB3Xsc0pECnZ4h1276opVKM5hXL7iMbKzSTqYjPNCq5MzKHWJ835vfsi2/WzsGUkSt9ja2MFXdFPu19ypYj+m0ybbgPtiMEBqHY4VsASOfFsnwempRtPgmNzCl/QnvsKyjZla5aJWTfQfrWRUxk0e4+QQ2gUWuLKP/afAHw3OEQgEKlzBfc/jq+/BDmFwWoWX0VvhlWoRDkIJr9SebQNa25d4CFcgjE2G0mnWHOTdVO0ECF/LHbP3geQyUjUncOxN+mH1Hi+REX8gUZUhteMiIASoRUKLNxjLXipc/LbxSe4WLVcrnl7t0mI+65yVwmkcooKkwajvTGonn5hbkGReKSIzSrIcw9ZdAmu78NfBFtvDzuNMqEbT5pRso1nOrUJ9WBk4blEOCyvNhZ2MUS1mtEc3Amu8eAuPLIJzBAKBCsz4BaxexjsWuKYWoYL6CUreUc9PcZRCpWvAMZImNv0MsX379+1Qes8ebWHdiZkg4zhH9ot69mpPq9BVXKGLCxRBgPS5MaCsOei6rCIJhY6k5Im8xGd5vrppdVAelr0ZNaEFXD5a4+7tG7ErlO9AaVDfYuvDrufiik9zzMOjLELK5ba02XKNFefdYj8IPgB2q1aOhY1M4sR0ZJ5tbKzSUymkrMk8aoZhj9ld3Z5t5JbdWh2sjS/iSzfw6C6utW4uEAi8efFHuOe7cf3nsZO27cjgDmmQxcglUZTM1SJy5IIEZybFlRdPjWTlQLMKWd08hRPswCQOMbn7UZJbpU1JYpVbILCsKSIzVx29mG5ZlgdVHYGZicoubrkXccWTvWQzys3KMFSIofC7wg0YYJa5noUy6UXjJ5rIhm1MK5FLkkhWcXgapCz5Ja6c8nMmZmKMVOtWLA9n6jU/1EyfBvncWu/ZlFmE42fyoKAOBtmyLpmMpAxowOHRuFzku/ur4JvAI9txAofbxzMcFehZbiyZTdfwvdTLjCrjjVNeGaaLGbahr2qzcjBgXGFnwMFH8NbqFgOBwJsU/w9feh7nR6wmR2l/7goZ4Hw6k8yhrkqcQr9At9rtohPiYNdsu65zYygyRnm1l1dz5GPFdhpihrXUTZMzH+xdqwVDkzZj+Qxg8ipMU2YlLiZVInNupRBQ01+ng/xxkk7jANtcVHtP7MvrD3d6wyXW9Kn1VTFdWJbpeUdlz/ZUt0AgWhwdHp5LF/4L8Al2a7udVGO6VFP1zdU7akSbYWzcpK3mIvUebNqk4hNQ64oW+/58llJCYMYI8IDx7+Dt1Y0GAoE3Hf4R3z+msL/3sJuYR720uTarN1rrYsbMxzjYS+sz7dEs4UDDo5ZtXgmqOKdL9MdMstYGqXbE0C/fielF35dke1Wu59MWJpHM5KCYMTQRYfmQpG4+bi2aLqN1t2jpTmlIFtKwDMkwGNWsb63oMUzmlnOqq6muWyDC9f3LFy6uU0hlV81P2fI7N08mTkk1mlcr3WJDrWPxoebxTGuKnYgkxXLF8hUvXdSNNPkHAwwsMa7BH8BnP4J3brqhQCDwBgeDB5H/0590mn+602n5uc+n2SublMBMO1rTIjehNiurc1o/1m+Q9I+r9mPKf3qRQ47FZ0liCoy20RhnzrQg1RQrK64O5ISVk9Q//p6qEdIq6Zz41nTMskioj1XIR8VdVzQFeowHMdut5SFVbi8zGKC9EgnZOuXLQ9AxGk9SDMxq6HWDDMb9j5+/dW1FAD4EvoC0+c9Z4ZTiB1dWJ9Y2uHoA81NUMKt/WIrQ0yemQj9LVjUixqWwamS6yiPGJdYr0Aj6udA5AoE3MX6Br4wmRaL1qjp7dT68MgNyf+cxNw9FdIXZfo5DOMQmp27o5to6xxRVqQI9+dU8rUjlh2CX3zBVpqcpk10Tp8mTXbOSoQ/SHWiDvDg6hDW5wEpJ5jDDk3Zcuax7ngeooyqlzbqi/2Ko9cvy18aJHGUgWt6Q42FYLhdX7l8C2AVuAZdwZjil+HFcblGXtISEns3MkhuOl3izulnXJtuvfl/tYP2virlMuVG0wjD9yjyFz38UX1MNJxAIvCkwZnmj+hlJb/ZyDPNrJlfLq3m9qUorzaImBu3fb2pcJPOnaqHDOYrAUCkunnbUHi8nipqggl2svURqFDup17NyK1IlSUKeoewQAnmwSbfIg2ERe9RzLUoGc84bIfMp2n1T7ByWyaAkc5RB63dqaviWSXPxKaAkL+RK1NGPtnydysLzMtelznjIluo7mQ4HYj48+h766BLAAFyuZIDjYsu6ryXbaDyQzcMgJUWYR+I0jNaaXY0eKpJhysVO6IVuUyd/EHiNxRGuvQ8f+zje3x1+IBB4g+If870MrM2vjUkChPVQremyRX7PbkZmr4hu0nl17YKqJby0uzJFvuaGlttahb5lqoypqji413xlVo2E5Q2e1am1zYPhKetlVGzDLcOUJshkqsBkfvTZt8y5oWTGogZpCmLmg0DXrcZY/IzqqNA59paNUwJ42ldWWJXptt7PTUk0SDk8GNaMBQFYTv+/M6lGs3BLtuEMOzY9puILq4hJAxUjca25SE2dPdpjG6neLtYv4UuXcV9/CIFA4I2JPcZXcHg/dp3fUG+T05901b0IZfJRHIl6maX+j2IPJHJ/3YtSdllTgh696NOOExMOY980Q1kBbP5dm6sBSsk0+VVVn7zrNC7J5JSFpeG4xSjzXIrK1GIhpudp1i4LmUHND6C/EynKw/kSVe1qXlK+VKQu2dW9itmkd1TPzlCQ6Xu22Bn4aAWgsT399ritVKNZPlNiPxeuDVpm9XF7TY6M6QPgulN7MDf3xE1acZ0qtlEKpJEn8M593PwP8Zl/iHf5oQUCgTcunsDus9h/L5ZKPyiRArVG1AS94qR+z02xFeVFyUV+Wyg9kicZtTOWF1xYy4Z1p5yrGxGzec6BfrpobSn/ujZTOzLZRBEHTZ5Y/Z1ml+gSxxumVTfsWFjoSaFGOlVEN6P8euIaI9tFOtP9GRqhUlA15yg3wfpG1HBVFfttc2bClpr71ue/I4MOby5wAcDyB8AjsMDxcGIOsb3ZsdiGLey2uoltbCh0Lfents610Moh1dXnJ9COOzhH4OAcgcCbB7/ED1zF/rfgHOfFrBSHgAusZC9QDJyryG6G6uUgLezOsSk44BSL3o9tEe6bF3oV5DaaRGGecAg7IEBnZXQoC+tubBTJjFGlaAjJq5xM47deKx+pCxbqUNkTZGZL3ZR7HgCwwDhWT1erXq4plhJNU1EzFZh97PxT7JjZyS/qGwgAA+H8rQdXy5sAlueAA+ACjoF5MnF6qrGlfYcltF0+7Ievygt33I5tdKMqzfHo62yODVmpuIvrpZgtwGsQYfyP8Ef/AF/XGUsgEHjjYMT6Cs6POKgceVbN1anmAXpZC7Fpag8KSl1o/NptqCWKy6bQRrfX6rQ3XQWKcCRdQTs9NaCKl5QpIjy9nXckFnNgCRaJBqA4jM3hgKMdecf5DqUoFEFzRmEkLCmoqcjPcdVeLZ8yk4gwU6uS1Mny6NRNcZFq5j4sx1Gmpz2S/g6Yq/v3XD9/8xIA+mvgC8DBXNPbYiOH2IZkcOvsBGyjyR5QdCV9SVMQxz4dD4BiJ2xLvI2ebGKJhWMVycw2WLcAVYsJ44hxxPqj+Mbq2QQCgTcOfp7vW2AExgFjliVqlOhJ9pANM9m0jG0tbTH9PtaVW7vI9mSMlkJQpQ+QpjYqxsGpL80SxAXqdc1F5zFcR/gEm+o0+XMpIbCeZwIzSWdaLJxEGWL3rq9W4qI8VZWYmCmPRkSQyRJ5udIpypHskdf14lzFsCOe9omdljxPNmzaTxvJCm9glieUPkZOiRZpwJR7R/lAy7NnJaUwEaWgjw4mpTHnkvKhTfdlvyM5pEOgkf/S4/8MwHIB3Dx+SEVwfA5xbDPun56AbeiSim1sGEBFRISPNjlHU71wnWq24VquyYem0zRifQX37YH35ploIBC4mzFgvcZiiXXR8wHjAQFxG1oMUO/JpdCaMdLPinIUnV9DywBMpxW0c04lnYU5NUuAMnAv2Sb9YQBrkjP47jiX28GrF/e8MGYeFbulMhkpmZTEY4KYprU+eXpoRFl1oDy7pAzY+gxFI9KsV3m/JRZKwUYMyn4g1002blXQiWWocU6nyOQqkaq0jYv9ZFX2hjwNw7ny4M3ugPnhlFFyLskKjzwDJmAAYWQeUuFyBIb+F2cGG2nEmXCRM2cbG7t2n3hf5BA+UbegyYGv7gbM3sYc1Hc3FayBBXbeire8hJc79xEIBO56/BJfWoMXOLK/WFowKPK5uip/5DfE6QulKaLmz1jtERouorV0hzZurl5aExd3SpWZOFG57O9CBmN7rKnPJBcUocBLQ9mYdanJriCVbCFRFeKsSMgbP+lJK9PvfF5QncHM1XIaM7miLa9GKq3EtUAi8bD6F5nTyLY5Ux25L031WNpTfydu5r+K+tEIeSmkZFgOWK+nk+U+cM925EDj9GzjBHSkySQqR960n5t7MtOsp5tzjWiSIWRF987WDMJ02duYg2a2B4FH4A/whxdw4Sk8E4GVQOCNB2b8Dg5fwG7FCNgRCC3+5x+etrbR6qTpQgxaPr4BtUHo/OySBlOpejXsoV7qo9JayuxNfc1RFkVKykHNflhXdDSGZfh2BqzeNUZIRmEbKApCok1pWqwmGZQ0Dygz44eKCKGuCgNRz8E4ocIx0h0V8UYeUvnIWNibsikfoPmqVFOcCJh24y1mw+rwsQtX0/EXz1rb4NeQbbiz47IN7lSxnxQ0y6yYBJtP3DfAdTv51ExCafXlqAnq0xG4gesj6C/i9xEIBN5Y+CR2n8QhYTVWP6staUF8qnjW+hfO/c83Reml3//P1aLO/8QmO3KpboakS6b/Dbm87pfAxGPVV2lqUiymBArKzjOfio1mGwxwXl28XJIq+n8DxtwFIDb531ySu5uyOlmNSlqW7qZ2AGIejKU+GHXJ4Gys/YBRDVL9L40EeWC5RAbJeWC6FoPAA0/JJrZcSspz089KfaCqFsDf/fhv37u4kb5ge+D9s/hvAyeiEZsMuCpxtOBUbEP/ZW/flBxYLnFamK+dAer4BIxQ0bRpGPcSOFQiKjN4BA0YCQidIxB4w+BjjHuw8yLOD1hVF/07efW7OvMW6S/Je3Y6U5bbvIt2bIoAU0dVWpGOREHMep00c2Nec2nFU+RIMx6jakjqRmkuL16WPXU6AJDdN7T7zo2lnWBLJIJ1q+aApf8UmSHk2StJVyhd5Cp24OyOS8uKU5mtW8od87SQh31IyqCUmqc7V2K+AlKSe6EHd1/99of+cDpbolJJToYzYRvWtvFNrulIXb6RbXBVZp8jV8aebaA6VvbltJpJy6rcMRJvvIltQJKgFlgDtMT6g/jEz+BbEAgE7n4cYfcmDgcsqm3oy48GgOknS7th+yZW/4q6ulrWdxX8D3aff9S+qpu9UVXTLh9ZORBzavfL7AqtCzVtZh/IaqJKiX2QbA4ylXNWUZwPKFNITLk87sIO7CVj3LpKYDBNO6TU85Cn3/o8oUaFMDKzyeuOM0ADM+djpFxRQtmlNlcvd6y/J/mhmSEUs3yPtiIZ+mDX8Eizc758cFkYztI9ihPgrKgGu7+w/x20SMBs43N5G1LGvkgXtiehu5muKCVQHKJeWkO+txsZST3D1pwiaRtpOCPA4PtxRHhwLyatBAJ3P55mHIFXuERY1ezB/hde53MUl9SKvOja8rbj/Lp353W3bgwtU0Kbdvj2yRZubrl6F0dbNdFtWlZRzFrlOcWSi8jCsmp7ljFkCinlH2aaZsr6PdLK5A/KU0rI+BYmgBdYc5pYM31umVDIU1ANpszPrIgweMoSVXoNo6SslgfpactEDLpPz2kRlfDhbqTSLghYjzSo7Y2XN046J3ZLmrId1WhYZZrmJYeMRrn+DOfJZYdtGGNHAvRBvqpJgG7ZkSFjlo8bnbOvoiGfJXOxKbf5Ena/Ge/4dXwVwkQDgcDdiSV2b+Dwkv9t9swjn2jOIWaSCup+DRqNNFQB076r2MD8L06dNNrqtOywLoKN/y1j05ppqpAmzSGKPQFpMqsbEmOa1FEs069v2rVkGhqQX9hVimh+iRSGobeYUV4/3Rwrg+mOOY+r9K41CbPZityjts+KTKrG0/63fvasdmZZ7UANvdaIZSGelOQ+rbRGmkemT2NYH/GyFC/tuIrpDM6CarSmYXUrkvXWG8tRTS9q2jQuVR+Qc/91HCT9dSyhHy7hVqGrUhOacpBbKASIMU5fpN/G7/0qvundeC4ySAOBuxfM+E3wK7hMOHQivZio4+mX3fkG+N8wZZxLNfPwThrewZQ3Hu1jaiixpZYxPO0w0gKbS9MAnKO1HSnClP2Jme8pOaTq7tSEWF1ehqqmeDAgi1+lKuZ33/ybvXhpvjzgvIS80kLAKijEJOQhqxeQ3eTToFhmuk7Le5WZrly6o0xuqHASLp3klu3jL4+MhADpNI80eLmbwnnUN4FLS0aU4cWFkY8U4dgB1nCwH1o1tI1ombWZwaZaUt7TM7yGA/NcuFXePWZblh+hmyFSkwwTAenxCcux6smuUqVmKsJyRmVvLBkgjAvwU/jtZ/B4KggEAnchPonlt+PolzHYX/HGf9HaQH6krV1X3iBTaH7gK+bRbKvBUWwtx4Q6qgOgUiKVGWt/1hhVi6bkdrLTojKAdhgle2iWx1ve8uWXNVODcUqYqNQOWTVcOQcZMlfHiW2Q+/QYMiE2cyxhHjBJGIo6mPBNuS0rYAhtU0qMekxpSGYyrruFgtrhdgySgsPjIQ27xWA5dj29aWU7qqF96py/n++sU3gCneMYx002YC/q0zozI5XDHlRmDM9dxLJmKpptGA6kLI3ZIegP8MS/gi9+EoFA4K7EDeAXcX7hfxTrH/oGA5BLM7Xq8lbNRhpHryR7RIcxGxQFZaI2JpxRmlJ0h6Uw+139FmXcO2WJQnchb/zIM3AYIMpkgUA5VzT/pqYEy2lUmZZkdz8pKAOPjIGSOMG5gRxB4azpyH3wFP6mAVPSXeYTOVmjsJ3cWXkaiU0xgwae6IKUM2e2MUxDz7wHuX3J5cwZpMRcIlbiSzANj0cuS4USp0VaSZjg9GcoL8ZySjn+JN/G3DYTgIGJR3zXY79b7uuvKQe2Bfy3qh0LMgYbMEs1qLJxNAytZ6gv+fKevSIEqaA5PaQ6LccoT8OVm1TQpnEleEhF15fvGhjZxFkwYnwZlx7Aq7+Ib2082UAgcAfjn/A5htt6fOP73qzQsP0lbl9wtKbZYqtQlAl2RfJSTrW1LU/vyeLPqgehdAs3ksIn8l4jbKswXF3pmk0zhHLT02xVPWeVGXlNitLhZMpVV0rKITByU+VUOjTGZVLuZEnlIamZsWZtUMPoqIRvzERc88zybJdSqB9D9fj9OumutTTCkUDjd72zEI5lLZHMgrsn86bbGcySjwmZdvlLPUGFOpSo1kVcyEOXGzZgCcQ823CN6x4129Cdck0v1Jofuotir5kNAQ/g1QX4P8Bv/Dz+TOveA4HAnYg9xitYP4CFTYDgrBN4qNcn792zk9a/fq4F94PpJROqbGaJiC+vcjiU/2qxihkKIiJHW2KZ3Cn58uLJWSswMi1WM5PWjbN9AFzuwhSW7FG95DmSS1JJo/ljyoWywDrn/03VOG+yhpyoUUInvrUkwICJW5+VSkAptbJ2or5UMmelJIGKndxL+ZLp2bluN0BRsxgMDIv1OBryvBxnObCDdHkCMjF/tWXvGa2z6V3a5ji3z1Iu36N+RKNJI+RUk5KafOjGNcMonTsOAdtvn22UO5O6C9ACa8b+U3j6o/gef9+BQOCOxFsxfAqrb21vb+V+wIyTrV+rWlNUZsiHpxctzaBuvH01l5N4suLbVfqn6cK+O6rCRFMaN5+bJH2gBAobo0l2Zae3JCC0aIdwi8I5WHO5krTB2v3rG6GSFJrvIK+ZkWgKZ+MUxuDMjJD3hEP5Tc9NsaIChbuQ6tzMyM1TZymFcVSyCZMQikpA08+b8uODJijlQ5CIUuNTYh4xDKMuWhLmKMd2zOBUV3tV5OlXZl60EGqofPk25Y3eHYHoUZxWjMOTjB5ZkW+cXK0iL1z34jiKWOZMUs9FDrG4B19e4V4EAoG7AR9jfBn4Giz1z0X+ga9/og2faL/6A+qng+xV78F1d3UjzV7qU/ZV1OyP0gxahdWUFnaW1f2yu5S6nWiHjnBINb2slnLhcpqcfRmL+sUvFQsdYdY95NQJ5UbKXJL0ZLhcnzriKQk0ZYrAfqzZoAxAJ40iJ4FS9ohKtEj7yjKVJyef8KSqF+olc15J+i0PSXhQ6xLJAym7tgmBmTYF/M63PwOFM1j4a2MLfUoxX95kG4WitS5tLocvh/XiU3khCoofAFW5/hflWLfJnTZTYYttCBHRkRQ9EmlKp/wapkLAPr6GcOu78Ru/EIGVQOCOxxrDgxgP89ob1gGL03Bga+grqlPuXE9XCVCbuG3IGLVXC1Pxeoacmt90xWwsq9Dlrdt3fSb7xmDUdvMkt6P7cv0Kh9CPOP3KauZmjxXdEG+rl7LQbGMYy2phiafwkCe45r5gnn9yW4r9ZNbCQgUAtU2aWswLpW72/iPn2bLTAMYpT7SILtZ7imKR932VSwTRUYQGlRU4qNyM0bMSlqdkGyejGjOX2B/2EqaOq2eUB6HL6+CFfpC94SmeYS4q0gBHUPIBlI2J2ji2AVMorZnEkfpYtzaCCedGrP8CPvZLeH/vjgKBwOuOjzHWwFGWNwC0mEF5ha1/J9F0zKohvWpldVF5sE51e8o9g4Yxy8itjWcVqbRa/gvIbkCNUIbNzrjwBjUPpagLZlS2F/3upp+lsJMO58i/1JRTSScdohxQCqBotiHLaSCLFkhuWjgHl/VN7QhzVkfxKlpZmWrotTrycBl5VbHUiMySZRSKVr4vAMPs+5rnxZiHp8Yvz4UIGGnA6L+QSzYTsjegfLVPQTV6V7ehPtV3gF05hBhuXV6101Q1Srkbp7NRxeXrkA9YXWI/unKkuYhrrVS3KSZ6wNMgOcsn6wUWT+E3P4pvRyAQuCOxxrDAOM2XVP/Vt9UIVD/adQ7HhKZMUrUmBuZSJY30tBPXfjoTx69voxyoX1xzlY2ZKmRgSkMwL9xuLVI3V8QmNLikCqN2yGmZupqayR2UH3LPuKZpqyMAJtsjaETZlU3RDvn5Z+aBjU/XzjutzJGb1BNfk3KTOYS6g7xGiPoesZo8nKfYcP6M/AYrSlQhGy8h+0RI6IV6OmovlRW52VYAlsOspz8BMzhDqtFy7a6cnJX68tQKhC+vcixgr/aG56hAaUpaY1Po0jxdd3XFOVXDkgnNOTTFKb0Ay/NYrHA9EkgDgTsT/zeDwUdYTqfKgbYzMPJ/2vaV3aJJVWiuTWk+Hg5pAAAgAElEQVR2S5EjVem8ryZHBXH8UrfVvdU8uFWYMBTvmvyr5hxNquEUoaxVoEk78m82xLHK+pvq0nSgy1mW1sjqAsBpwglYaAeQ6UWiYlzoiBqBmmyUbouzCEXZgEViUTb5hsoxq8XBqNgVvUvPN5FbSo0UqlF4n5BdVvRClnhNDYxgGlYYl7Dw5+7hb4+NVbanGu67Md/+lnkb3C7v8RUd5nCnNRXQukJppFVoGnFEBJ5GFANYGiE2lvc02MZ0cB3rS/jqs3iX/CcUCAT+f/beLVa37DoT+sba++xzTpWrynW1XTGO3RfSVOiA4ly6IUEOhAa6ubQE5iEPkH5Jq2kBL9A8IZXEA1K/IIQI6oAEoiUQZfVDuiNDEoOtjoJEt43IreRUEtuxnTium+2qOrd99r8GD2vOMb4xxlz//+9zTpUvtYZO7VprrjHHHHOuteb4/jHGnOs7hwTTDvOJ/XANl4D2Iq/hg6FbojZRj3WdZViUscUeXEI2PueNjoR0s5bEhiUtBFnMHLqtbf+FxbfI8XhGHtxukMkCHFIEbGHqBKAQcikUpl0Lmizs3SXQ0MYyQ9NNJhjgfdPFudAwR9illKu0cExIHSUbJ9QElyP3cfBgUOQlPHXahzksslXgBKLQj/3Ab0RROJ1xv/T2QA0rSPB0eLzPn8FVCn9wMNDxUJ/qSzAeRyErXhPltoghoA2MahlzjaFE3DNGG8vfb+Hpz+GHP4wvfWkwShtttNG3jT6lmKGC05g9VmFEgBc0NWlkG9D6jwy+4vbmCA9H0HMg3y0f8ZEDQyJzhhqjTA4GMfGSr/2QnKm4uCiyGrlfpu1w6jfkVBNIk9VZUAjN0d2N0Sv1jTf6jh3J0ndAggVOeXP9KyvakyrIjeGDYacOMhzrWImm+ytNrdAX0xo9jCIMZTpyCbDDjNekossmo4XGHo5KQeTR/LVwTcKRhevPw9ifsV5F4AktDAVWHRJRGVmWkMSASNW2qpRCIdYEN8TwAginOmROtYoQBfRj+MxNXP/RLbCy0UbfMfSC4g7kKhRQ3p/AovalhpmXZLKHPoxMkjnLrBUn6GhUJboZBhIElukYHRv91zfrJmiTGZdodoSYYVNJTRHu6Xile0p08SZ0h8eiky5d8LwDs7MLv++dRYYqNFptifrCVVHzWyyXlPI6fY8vhadxtNgGPBoydf7my4D4iMxIe5n3BbHNAKq7eBosscpNJqCqUwuwLCCrR1vCbmAN3EzAguC07QrPP+ylBY0g8RgCmUUnvZjunqFQSeqgIeV/aZz3kI7Y+FZein9YMnwGhhVpV5hUJUOBGCtxhnSVzHzWQWNIJarUDH+U49kYGncoH4ZajkMboNPZ/gF6hvPvx5ev4ebzeB4bbbTRdwBdBW5ANW8tCmn/VNw1nyjMzR0ZGH/+Z+VSyrtRR2Lu/K4MKRaICsMu3CZ2hDa0og0AoirqSjbJyg6PRbdZMHeGrq1CbGFqP+6bey//dAnETKoyt905p8VmzlSlLS3xnccG5rAfNM6l+oyJ5EyKxTkhimnpl+qkrucEnWZMMybFNGPqKi3wArrsSa4yQ2YsdUWB2dRbOr7or1MfumXErEVRXaqL6qTLxzAaupJ56S/SvZ581zKVGdOs04zFksjcSjADi2KzSjteVNWTWa+/8eg0D3DvqT2890l7JKxdWnuNiNbgwvB4zcmxuov5yE77Adn7Nf2D1YdLturLW2V7c3n2RhSiNRLIaMOebkMbabPzFKApLTa21/HoT+LFr+CDKx3aaKON3jn6tOI2cBVA232RZ5oUUlEujzNStuWJDpZTmGOt0SRHViVrkjyAFKjOD1NAE6f5RYYukzYfSsBqPTez65OxUfypSC1Sp9pca3qpBxZ8VPoxA8LYfdpmg7NHQ4RlQRVNU126E3wSnXXZ7byPRvdwwBUKa3TD3aPu9Cyh3jsrD94s2gnMu+Uhnp5UYsoJ9VoXMHN+7dbZ7esoJP8J7iWLw5+C4zj3l+wtH/u01o915RKXD7wFyXhXfBC9DgmsrLocou0HovAUBxlyjhoagAnSIbfIJROm9+CN1/HUZ7adOTba6NtKn1YA2OFkGJAFcDyK0FK0VnPtkk/mGTQcq8EQrxg+Ilhj/KU8Ag4PkZR2MxDJbBF2ZJyxmtXhGaOG4pQYGdpph0BKS3E9qGEaLa6cdCB9bSow722iowTqOtwlwXoiwifGbxqHvIkVEiA8fDyWZfh5XPel5CrwE//U51HoqByOS0KE1UuXkjPq6uHjkT+jlccXCoYyUYBCrGvl3KKZ8ySEJYfkjwhurCFubj+wGBZWHWY6BqGNRjvsXsdTr+Dx0Ry10UYbvUP0aW1voO77uISZ1WG5X6omeUj70cMxkGVcmKZMFtjm8YHNzOUVbcQW3UHCdlXT1TZh91NZgxrJUySmlfaJcWhjmjUQRxt2VQNbcyBo1yGmd/RawVfhc7KaJ0Ldl2CKmYSup1kB20Csb/AlzB78FT2txTvAm4V2Zdkd0ps0NcLDqa0/y8IdOdmdYEQPbFns/uqXhxr7CtfRhsEUHbEJHAQYwwCdFNjBmENjXfMiAH6gvf4AIlDrLiexiavqShX4UnWYiW05yNEchU648Tv42Efwu18cjfNGG230DtAOOAEucLJ/ujWzs2LredJf2xIDWN/dMQVrMDxZL6z7QAfskpM57EBzSehh+kkeaxXbydWVLgXUEB0wwcOhpbAeWBOUhRd4Zle8y7HNThX2zRQ0MNEgiDJW66EVLELMzIf0Hlnm8paN2pnBsKP1nU2gDZESg4+W4xbWPzxagbXJ9j2+eHMOAGc3H3r0qVcwIg+p3CfIWJNwfOHokowKx89DKV9FEgr0JSrBEhMaWAupABTmSIVcl5IqKuAYh1SGzoyoz1I+l9APCG2ARK1GcwB9HU88ilf/If7q+q3YaKON3hZ6QfEIMAHTetr+HvRQ58/LejVW+M3UBa6x52M4U/txWFQSsUVBIQ0uKBdSdS3+koEpLailSQ6KhVpkxY3TTQXpyIXaSzg7VrsfRdnsdl9AS5kVquLhFZnjONEYaEJlSmINQXFAicdPDVQQAIsMWBJP86MQXUXY4yTKx1brLzz30je+8fgTT3wDhe7xWypcSy6JKo5GG2i4b4XhEArJekX0gG6AQ6Voxfka2/ggUHNdrKONVahEJKWKkqohBhTRBkZog/UP+jyKV08h/xo++b/jL6/qstFGG70NdB14E3gC06WgQyeta2Irrbs09ktmzoHgQSRi4BoZog11u541GSSEDspp9twfKGEnR18QW5l54w1zJMVOtzlbMHvPWrnCTbF2Of6378xpfgMFYKmjSquF8t2EtkoSBCqjmSZHiBOmvPpm6vCgU7px3WlWh8fdaRIK3EtCCrts41s2en/88QHawPH7cERtD5TfA9RYl6Px6vh9WTHkEi00EsLQWBJjFppABr8epSE27XO07igyVx0bXZ+ZMjzSUOQqCZcUpBLKmeEEehVnX8XT6G/ERhtt9A7Q84obwFNlxrvMS2hVyTAcknNQ/ggKlKuDiVhTSTlQJCjAKKRAE+EqSwnzREAg5Ti5OmT2MMBYINo83RfB0oIUVDCh5Kvo7TocQfnbkYF6u8uvUnHDorYNRncyUa/UUY7ZQun2QMIAUMfNdjqgUR9sGjdVFcI21BO/4b23tE6lyzBmHy+R3/nysz/4oT/GiPYBjv344LJVLnVJV081Xhp4F1dkVvAxrLX/UnAwGH9/iirC4HI2+QHraJCfnzVjRovC8IZj45ANw5H6b2GboTdw87fwIx/Ci19e6/NGG230oOmDwOeBnwC6Wb0fuL+85jL0RjAq2N+GrByHUx1cHQt3zogb/KBjlAHa0NRQRRttDwl0Y8jwIsIRPpakp670WulATdkc0YCala5Qo1veLkfrsc3HzVprE+hARx2nGbKhhhQQ9e+m6eJvsaRRTS6Kvm1os1qOb4QO4vB09JPKrMAwRpPYjm+85xw3H15LGnqQSaNH2/5LMK89P/Bx5lMpnIYzki0X5DAES05mnnk4pGLMB/I2CtpIYpUe2GEIhtM+vGWFWjLKWnMEUJihDc5P4u99C0/9KbzwmW370Y02ekfoYeAvAinPDsB9OBoPzKayLnxPk9H+DTjXS0a5orp+iWutZV2Ug17JC3n2T/gjuT2sFa0akg8jwgigf7u1XpJayFebXIHSNqNQ4YOOA/xArRr4lDuisYPhSTI0o0BsgvBN67h9AS8+ixoHNRf2Njh7FE/feOiVG69jhU7VMeIl6Ej+46HGwcLjgIjGU18iS5Z7rcGx/0PJNcIPVDTz1aJn0BChQD3FaLcur1ihiUVeCBjNI/lD3VoVAZ7Ay4qLj+F//Az+WhmTjTba6EHSrzZrMfxK9z0ijzXuWM7CwwrIoRr8uzb5IXRUjTwEZMmWvzQHCzM3Q9iZ1zbsKjs/9O04zcwLRAMiEaoVlU+wI6fsatuhHG1ijbCj+RgYFkhfn2KSuy9kGWaCIOZLUAWWr9IDslipZs89yUM1xjlaTZemAwgohqIcRKhvX74IBmTStm6mOT/aRu+qkPRcdp+GCN0/hUIwzW2oJrg/RUVefPHF5557NKvW6TTekX10PCg5HlIcYs4AovKvnZIZbgUlDBEYihznKagFERA0rJBERZwxl4bYU6JxRavrP/Jb5NYRqmc0s5bDYWw76Anu7Naz5TfaaKMHQi8ozoEz4NBsWq/K6sl+1sGlaFD8Uv8dPg6CDOTnhuLGUp1Hx7X6WpXkclg9LgDC0IYAaLto05IMNhsMMkhIwDFlyCl+0bvlQCQUytgdwqcdPSy+JtVl9/ap77fREjznxeMRpCXYkdbucqfMSjXr3yCFcTavBmeTIEsLmRpwZ4RyzKULUekZKma4VOaPfxy/8ztv5NHsdMDMKP27Z8616rHcLSJZx4y2+Fd+ubqGNgbtJwYzwDGQATpmHpdgVbhk9DdcZcVKo/yopn8+AqN0DR+lVDE2mhpSxXwXVxTyz+F/xkYbbfS20TXgBnBw1h2RmiHfjyf2eDsOXfImrHwPfwp8sH/CpC2fX5csU6EahByNNqQb4FBuEATl4zNpPYsWm03/pM649m/5bItiWQHb/7XjzuBy+KqQ5OXbJaBCUfowirZvsmD5xMkcVGrfPdHAQEqG5mSGzLIMlzWBdjuWj61AtK/TJXsiyvzcnVYrF7a2WsnJBX73pff94A+uPDo1h+MgsKi0VmW9fHBlCFPWrmosS74lu5qgQC/RxBnjDqhxh6JAu3RM3sYa/ohoo2ICb5T+JoRxQAHXfsCGpM8M7LD7KP7O5/DXy63YaKON7pc+rbgDXF9c0JepyNGNXDBmO6p8eGmvS0NRqkgpWyBFDl6QqyNBChDsGBwXZp6YyQmRwi7mNoiXjD8K73aUf6+D3QNrM7LMEgt5qExPL1x8A10N7aOlzQHReNTHjzNMU8lSf+59RXqqwubuS0CGuu/fqG99j/fV+UFuseb9Sp4ml6wC4PY3Xn9C5OtYoYkg1LFoY38VBTQbbLd25ef4qhBmGF6iq0k+uw3c+kYJA2dGaSJndZi11nhz1/QvHo7AUtBGAAdaGOIzvwdtmA5LicNgejWsZO49kgucP4JrH8cLoyHZaKON7osUuArIaO+NNVpxS6zPu3Sp+iGS2COBiGi3xhGOiLsKjKE7AbIc9jl0G49us03GCG1w/wwiUCbHkoYZfnl3tZtGZrA986Nb2YQ2WiuLM2PmbqH7D7oXYXEeBAeDT83WnDl+2M/Rx03RPQQ2SXc/Qf8sS3FjBCdHO+2jPlOL0dURL2lXTyOniiblPT7F3YFLYN9Ye1TefPOfnOd9S1+P3Yfj4Eui6f8AGnLbb9T3Fe6HGmt1yQEQNKGDACDsgCyxMVX/R63O/KzYoIusxjAUsre6QYqZeDLOsEJDGxVnRIwyL7G+M1x9GtdfwvsAPRQm3mijjS5Bn+55XkdMpUe+eyZH2MYvl4qEo0TmX7n241n3sK1gGpssC8KAIQZvZww1csCFftzL7HKWcrXTXHHFA6AsQVz4si2FCs+bo7/CIKaVgE/jceRpbQkcJCnQHA+2CXozOTx0S9ZnWOoye9JFGoA+jN3XswyH9uld+6DosqJW864eqCXhdi8lkzZNdyfy8EMv37j5DNbpdI9tOfxmjHHGschgf6FSB/cDEVaj3zu/w3xJciHofeIXi1to77P6geOPzhqQR7foLijlVZTquStK6CcFYggAhQWxkXNhnmNJjafkVNav4o3fwMc/jH/8pTLCG2200T3TDEzABUcWgDr13hPMz/BixSnCl/a1Wz+0xgwZBIzk2OboMcwRearwlYasB4422l8y8DmkMpTZd/lMwiPaANqGCdL3IPchMX7wdO4ahoOVcokM0U54Uif3NJYsrQtjEWsh3JRim239DhxsxLUw3RSyrbR2SHgrnNhIi4jI6ZUbP/VTn8E6nU49qBTaPY4q2liTQD0dSghluu9UUhXNPO7DYPWIjS2uH0QfBih+UQ+MwSNEGgtHGRUcE2FglKAAYqwklCS3RG85SwAQtyvlfuUqsfr0Mfz81/BnsdFGGz0g+j8VAHYDKGCG+d4dikf5G1bazU2PvrWGCgKiIx0jaxSYGW0ko7tyPHZymA3W4Nvgqa1asoKQCHZ0MMF+Divf5+Fg/tZu/OQKD4PXZaSy5G6qrWS1OdrdG9zHyGM6K/fa2JPJRLgMdmZ0G6i8pJYcGx1PJATid6itqBUI9OTkrUcfvcBemjgOdTwpGUsuXOEcXO3lbBS15kaUWsGCRitrxwwRMlzot4mRgcsZZk7EpAre66KpVPhBMpUHZ90z4YrFKpqgg5Z/cQRmYB4qGSXM1J1Zey1gvoWzJ/DFH8d/P7qZG2200eXoecX4u5kAwFHwS03Ax5Ike7PatAIH0AZR0Fbc8LqQtxFtZP+E83iSRG/O0x261j0IIubA8ByOnp+BeVmhmvIhfBmIiUol+/4B8NUcJkowpwSOPouPhNcWm5J9bQtmkTnpTDentSUyS08NoYSM0GjfhM1zQVRmbQtnwiW1of6hH/r69eu3R8+a05SjPysURy88cDyk64UDM5kqVQlVIJ0mMME2m6+6SU5ugyjKlUyiQAdkp6v3AtxcUjYiktoQErjhKszJnV2eoM4wD3VLeIKYleMppMZyYVLohjk22uj+6UPA5+FZV+iWfgQF6jx6OTrG24EVFHIQbZjhYs503KyUFRa0ARDC6N11rBALA1Zg34ZicQ1UP4fVokk9ZVp4Ca07NeThTo62AiX9mw2XhKWwzDDEKEueqUkwkCYzm/+c+8loIAALzglVhjID9NOWrdasUisBSg4pZNZpxhTrLuM4BF7zXf3Cix943/tujJ+5TqfdhjW7a8/KwQd/yDAq1JXyY+WsARGlMx0c7L/aHtVy4NVoZNDtd1Ak5UywK6KGVIYAYgVbZAdMVzhtRbpc853LdaAVt4WyvdhQ21mBCdO2Snajje6TXlDMwE9cDkfoOlQItB9eHBdbOZa57t81pkNoI+d19lpY93w4nqjAggHKqDlvyNweUWANqZgLhFtRYl4ObENSN5tkNvLBkgDoEsRasfk9hEWUCjWWkFglHlXEdaygm8bqeDsSBhJQDd+q7wt1PbwihjmaFssYqapAplPcef3q2idUjE41Pt/HvBhHQI19IGNPuWSoMdZtP5gAIQPCE95ICnPYAZvtKD95ZbKPBAFtJGnaxSV0kox9LUn4w/wTiPjAVUXY7Lz2a6BbabQh7QvsgBNgV2/TRhttdCQ9BNw0I3cUiljI3uBcR1bwyD2Aj72c6Tv1A+ZBIcUyrMQYxvjDePZezWijgAxzdcBSNGQF5QQc4Itma+potxNLubAmrbNKRivaLaivL2g5DlXIUigIOR/S7TnN1LGDS+eCJl6zFzS4REaxqRHJVkMgVk3lDi+0ARExuNJ9d++5o+dHrHk9TTZ+jY5DD6s4Y726Sn4+ExoIMklOjndEzj1XZ2uabX+4d+4tMJW0aMI2m9eDoFp3di1Q0wxH0uboAQqUoE/FHFXmXPTh3JG5NBFjelDB3R3wQ/hvfhP/Yb5tG2200SH6tOIceBqYyVge57wwanXWwhzDkmg/Kr8UNgDuMOdLA1dBYqCmijUb/5BlmcegDYu2rIGMGlgBRPqnOYNThCUvbobRMTW6QIEOCBrPcqph25Fi9T2G0gotC1WAFnlpp0qjNRMEYWzR/2odCu0YpSsipAndggC30mh3JLEo0nRTr9lEExBR69Ei984kVy8OQ4nTGSdCEcZjwMcK5xht7EUqZinHVXRcbg1VMMFgJQgvV62mmXk2z8alce0oo4qgD4scxVAYygTsQsbeOjUXtBGOI+ZYhJiEBEQaT8QTNhpjtLH8naE7QIHn8N++iL+JjTba6DK0A866kzCY3qMxh/kbcsEqHTN/p9+5OYp+sI1hWCRDkOrtiOYtsa1xjtGGrqONgHu6UedvrDSxtMBk5oBIRB7JFPFfqtXVi4GVgE7MfULYxbEIwMtT1T+oQsq0i8nVkfpOnoeueLyr6dZnmfbZ17AuxcRIfFZ8McvJbp5l+shPfRGH6PR4hEEt5YJ7wBmVucRTVivSaA/xxOpBPGbnQUIbjZPN88iHYa4Lb75Ak/CvCkluj6iq/Z9DJ/60UtaFX00ATgEEQOMNxS5UDfUEegenJ1tgZaONLkn/t+K24lxwMvrpD+wz7OtXKvI4sAnHEbEV5fI1V0plCFfLxB3Qhsa5/TJoo+IJLHABHW0EOMLOBtZhObSVFx7aCKkYHGGB5XaYTHJUcNoH9doPdHTgIRXKG02okncct55pGEyY/U9whMJ29UEx4uEJN26JIkkfGeMX4u5uEmunx67OJj3KTJweibaPxBkrzFY4hhpHHCuihP1gYnR1kNixrmSzxyMzjHRa4Ei198MBYTjCDDVowkLcGZNUWlGvejuOPV3+XsXdHeSH8F//Jv7jQSc22mijQqp4EYBgnuuPRWPqBysOh/0tHMN7BNrYW6iZ4bDzY/+lIcI4clVLhBFm8odgLodR1H736wBtKJovZIA8RHocwYU7Vig4I19190ZAG4uhViAgJAtpEDPEStkSWActTCNcNw5LQrzuAtGAHVpYRv0i8VuJJj/Hot4sdye9giNomoLwAWUTGpo/qrwjMI0la5zhJlIAwq8MgUUpTKkPiIVqwrUY2hW0ESRUnOGPa1e49nrlrzdEJUharWiSQEnetKPgCdfcd1smZfhudB4o7v55/Jfldm200UYDegl4DriJo+CDL028RLBloX3ujYNoozY35MnHFYWUiWNNbMIK7XgkhxdeigVWaOWqKFXpa1CZGXYQxPpKV1r1ug9tQPvXVUzaYDuNfhw/3wq1RbCxUPtuH2pra0kxpb00ZteT16wS8/KvO29mSQwYfEW2bcjRVgXX79zO4+baF2jpG7aNYTdD5x/4qZfK4zOg5eNt+XPJrHAsRjddA1rDEKn4UN1gLHsRQwc2515SrnpJ18HNOT3wQc8SCsnaMkQo0GGcb6F5OevQ9wDN5XPUxNlIvg0v364gLXVEoQg5InPZq8P2DbMe3QXunmH+GJ4f3bqNNtoo0E3glxA331gnDf+7BB2PNmrFPdjiUm6McVap5ktgcEBsYwiSZucyMgltRO4sxIELzZGet5GyMglt8IQaEAYG+3M0W67i22zMIEgh9Ddu5mFt2bHvydGhxk5kFu5vRR5RIMEgQhjWROacW9dc1FwkE8BC3JxDZXrk9oHtN4xObwHXVgAE02KBZB1qDPmP4YyF9e1j6LB2UAsZK7Bh9gNSskYuArCwWntiMbE7mniqB6Xbe2OYCwoBsTXmgxGQYfYoS+jHc1dx+L6CRQEKnDyCO3+EfxrQS/8M22ijdxN9WvGK4vrl/RXtbXsbXq/DGMLMMykzdG8chDUSL42bHsIOO45/kZwWrHDIFeVYyaA7JMp291pJ4EgLWNBNxVI4c15IRwmIGs6wkhA3ceZlqYbYwDZ93SRYAoc3ZMyae01ft58zexiHFC/pWi/z+vBmaRLAQRaFiPy5V7/46kPvHVUd0Ol7gVtJ+LjJ8eVSokO2Q4V7zF5WoVa5B7RBtrbmTKT0CMRTNttrf7HG01ViHTShDeTWwcyks1IJXx30papNQzGEJnNnmwEI9Bu4+nv4t5/Br72MjTbaaJVm4IpgN55KBzTMQjiIEe7HvZFLjkYbmfQInlHrA/iSMkkT2mDhhZPRhnv7U6MDtBHmYxkfx6/b9+NofHhiXv5y0oaniRCbtEUuPmK8SRclcISGfIzJK6O6+AFIVU/zjGoukoWbjTc97PtlcuJ3V7iOADLjq4+8/4Nv/gmOI/lZ6Hua76bqt0oPAmccbPEY30aCEWykE7BARAygwoVzjoghGWDYafSLJLvu+1vs/TsXtIEqYaXiHE8rSkgBkYQ25opvSpdnEghCHnoTf/pxfGvbfnSjjYb06SUkyZsLXTJIsb90TdTx2Rvj05RYeKR7oyCVnFrReTzBk4z9ICmkgomck0EIwBRoxyW3o6o0i8mBy6ElspxLgez/UKsIdC9Iyg+NaKN909XMNW8zSoUg00Vowy0isVGfXKAp4F/fS1+B7Tp3tMIUY18BWxDUiLUc/KjM08mf++k/wHF0+mHgtUMhlZWrup9hpXBQPOK8d7QRRa6hjSSEgQWKJUZEG/4Ypn98LQIFa9TNfxfoLe5Zoapjfqww5FaoCncK5WrePd1OBVDo4/jWq3gWo8d2o402moFpLfB8WVpM4NoiF6J7dm8cjnesuC6GaGPNTrhXo6CBJM3RxhC4aOQMcMSdAe66sKY7DugC2clB0ZCQ2BEcEmKF6Kiic3rHE9owd0LXMIADK/QeRVzio2qxFR+hsAc52a3W9z4YGUqYnhJGyEMk/aq5SNRPg1JtMYviztlDJwg9hkAAACAASURBVLu7OJpOv4Wdtn2sB6TDw/WirsagYMhcSsJIF2AxLPTogJUkUdW3wWa7tBsa2hNkiWbeT8nec0MzlyyFQ+EYtFv5x5iD+aMfZWGbY63ZW/OrtrNI0k0VuIWX/xA/9wz+4RZY2WijRL9s7o0HJ1PN/K8IvWcscglnieby4dy9x0ey2koJoGDNTVLjJvxLny2uyWeLrg5NAtoox2nRCqWICjcU0APiKYOGUqhNk2ayC8IQtxxCuCBs+NFBaA+kcD7s8qvXN+RoEsjjIdCFgUyp9L921B486dZR6Cr6D1CR0/PbF2fXcDTJ38QOmKRs7qTx/wO4MebPvMOKh6AGlzieqFCDK0bYsXqQkES02XbgngyLJiQbbBKMgUtKsGPwl1HLcK/PxEBic1Sl+Cd4cezyv2Fd03mOOqSeNm0XgDJhuolnHsdnP4dfGN3bjTZ6N9ILiocVp4KTOJMdAz4u4ZaQ9Uv3c0r44KiUjsKTLT0jCfipcQ5QBbFlAGFBk4o2FLYgFrGWG+k5mPaAPJaK3bcRtg7j07L3+RhnpOhJ9WowJyMSWBW4hHSsfZw6hiAGb1G5rmGMuq95d20MbHHwepBesUEV6CwK+YG/8oUiY5VOZ/9CfW53qM2Aif+fy/cXDpoY4YZj0MYe2FHDKEO0kfyghjb4KVgLsrjM6JMInFw9+UjW0IYhiT0gZnSJ9UkKhBuR4iwoCicNAZ0xP47PnuPhfDM32uhdTNeBG4In57w5hj7Y6COJu1T0ZP/VfcxHoI0wiatfCjACpTy1rmsG0NGGN50wwV79R8eENoYSItrw6rxcFgj+jFVEUi/ZWpLuzwhooyCJdsx5GRGdLHBoGXk2gQgdrKETxHvh6EQCZ9vxPFQRUbmYTyGX24f6dAdMJaAyCjEktVYZjoAaOirMYmschKEDK3kc2uDmAn/BEC6/eBpMcqhS8US00/68WXUJboNVtGExjrUm+gF3kNsNB+WLbsPsUSUe15k5b+B9Jzh/Dv/5i/gvsNFG73r6tOKO4iEZGK9j0MblQImO5d4P/qhsB/mHwZr9wCUdxyUY7hohBikldpy9GqEWlQivB9G+opXNtnZz7m2FdFHSrVtu3pW8gAkqsSbqipWOPEwN9Ka7to7TKgRJ/D2/RK2bQgOFWBvUaEwXYdaw1EVBIMRulJ7gYqdHfCKW6FSBc+A6PfNraGM/zli7pqOL+6GG6VDjIMYeUUJWe0/1UegEZGj9Ej07riTXSp+DZzwRj/Nf9BtW/SWFc08aqakN0paVGWIO13yINtZOY5hGFWd3gQ/j+S9tu4Ft9K6necbVqW1kfg906UqH0kTu06dyMJgSCsu8n9wY4WCFeWlrMZAC5RBGiMXURAp0c+s84aDZ+0UmtQIDH3MQHtpSEr6Ue2JpCZSsndasDiU1eEwYrqpt0TFGG0rH1YfRg/zBg1OdGaNCA1VBu7ZKtsMQASYoMP+Zf+MS8RQsgOOUFBhBgeEVdH3qI2SFgys6ONbCsAYXArbQUMISUvXaC06hYJMMZAgyBA1BK6rlzxGZ9qRwO01xCm6Reu216PUZwIKiIe+iwS4NV2ZYHSNp6epyvIPexZUTXGCjjd7d9GnFPGN3AUw2PV9Ogl66RqYHFkBZ5zze+TE2CWvVw7QXgxFwcBBLbDaSQTnipWWLLYn2HukjscwP6Sgkp24oWkqwesni7VggTVA4Z3VQK3PZXAR95y50JfMBEjqRgjaW4yyEVmjTbUnffSWZg0LX0Ey+Ck7lYi57lB+kaQJOcKGECBEtZ3oiglEdPVpsy4e1qEtVchUZDDw3bZzJbdBLrJYjAO3qVTtdftArSStdXPdb8AhQWyjG25lBPLNjhTXDD4xUjcxI7fLm5bYOZR21DHuK2Oh8htuC3Q/gb5VHYKON3kU0z5gmhLm3Tot76T7Rxn1KO4Z/YIiWcs08yYM/hCnSK8YoRkp6EKhYVIU23l62Dx9ckkVIv+QfIsGyNbj4ZuG06bjM0k8Fja21IrM3F2rN7arrMEv/jgl9CcW/YyK2fbio1bJdzL0jYQfx4AuJ1lIjCIMzdCGhMN4LBiidOf4T7fdIXUMJDHoxn0xH7t4fbz3+Bs6nLieqH2j0EmkXMjTMa7UYENhRKqm4wS8WtHHggKsrme0YZag2Hh25Do16S7BIlpgMfLLlzNZWhYzcJzP9rW1p70JekDJkq1VKf+eiORA08ava31GrKMAMVcjv42+P7vNGG32P06cUotC1YMrRS2T3sA0uSbbfe/iPOiWDVHfNYrZhhCUzjPYJZYQRF6FILDEPRJITgiaUvTHYCsy3zWiQAlCBLJOZOS1Gu3GEXNESTKENMtO26HbQbWFdpUKn5hexkVMaRTv2G+HHTTiXa6oY61K2iRchssdLGrjG5bMCk/6pv/qlgYy9dApghuwwnzpED5oMEQOZ8DHLOvg4CmrA4UIKYexn3o82MEIboFOkQqrCV5XUkKqSBngRyg18dJ4gM7pb0sgpCdeif+OJA8JqhA/Dll4gyaGVwEvRIL20/5smnD+H/+BF/Dw22ujdRJ9UzIpJIFN4FZn0QTsw9tM71tYAbezJ3ojgA8imvR8QCFgEZHjhOCNwjrbrgMI/pdYNf9x+g0EDwpYbMVFUSBQ5DzgJtGsyW7Qi9S6CjyVxpCAMH1FGD959SuwoDOFuqEVAVII0xx8lqkKJIN2saSpfGhLgBL47+2XoFIBiAk4Vvl/YyrsDrL5WxHFExf1QA330CmjQWlf31coSIryowQ7XZAQycsUKFBgQILY1Ok0H/A+2rTgNHcdBQq2IloZaWdOswzBks+ZfSe4ZezUvTnH+DVwHnseWQLrRu4lkh4sTnM3rE+by4j3QrcCGjazJPz63o3Jm3HBoL6+1UZDEY0a6V2lmkeP6ZtpTCfg0+j8WDdVKwL6EYKFt6hoeG3pIDMu26HHNi/P3LmRRjTk6PJjNBslte9j4gsySSHaKHMrqUIcoxJSNqMEPNcDoMgNnO1aIqp7eK+Do4Uch25ap/OauDOMyHbNpLBmcrqMNZta1g2SnSYiZ56BJAh9FGsgqm1jmHPNrOA0BjqHPIIqtHoW5dKECnVQ9UNqjrICJAdqgAW89SnVv48rX8Mh7ceub2Gijdwv9skJ3mM6BaclKWGfdgwgO0SUSLEZNpdMHgnuSR/5IOBIyLcCzFKdixMWu1oIxWENmv4OodkArY930Bn9GjKT4WllFXMzSazW0wdNh2ckjzL6+yFajnulDKtHyBWeGjxv3IqINNWW4ogsVEfhmHyR26OSQeKJUxjd3UlWRj/xbX8Tl6bSLu8AIbSQDH8vrmUOjFVEw3CBFOJ8WAJHCHKniWi2rmH0A8EIzosDoqhbOoclnPLECCIaGXK1HtbmRdwFFLOLV5IMJJXEwsyaERdKNGytvpwJ8BN+4helD+Btfxn+HjTb6XqfnFa/NePKkLRd0G7lmdfdffXAke0/vV3SZ1lflp2SObsvN9GafhIcnXELOVYT0+cZmO+ME4w/tOMBCIdLTRSECVUrOoMRMBVB3FMXAU2Km2NlSeEWg6setR52z7/oF2j48JGo00BO2P6fZv4dLAv7Agiwc0Fh3RcRuVX8ONTyQFCcSbYDNPwTX5djJyen5nfG3UA7SBOAXIIDOhG+03bX0CNB9CQU0UJnBmJJptxJvjk/hPOgGElTdjbQhib1oI5UDgT+ox1eT+a+Wm/4Z+l0DDWHceBBYeYRerCKP2ATzu4gRXrHjmhCathfzVS0xQXXGKOAimM9w+xR3nsPHsdFG3+v0AeClCXIBOc6ka/hfprcJh+wHH0dGW/aw+aXhXqJsuW0RipXAJiS61BjCIhQ/XTJAe2FckyJtrensl8SEeyZHX1qyrDRZatmxLstVBHNfCDMLLV3xf6JWMuVyW/NCy1uwrGFZ5s5luUpb5AK7aktj2uqYuYOtVt4W3fgqmK6/rZrBTJmtil69NzR3UW0BjmvrnhtFlwMhnZfqrUTwymuPPfTBm3sfn1Wa+lOyWB0z5/5msFHlhyLBixWckfABX0Fqrpwakmi1qDqLDYGDFbQx9Fv4aZSZ0UCdJ3qAw/8hMGli5lGMmnCXUwnLSmoMB3uVIjrhQTP9eS3unMAHDUVoLHlHJuAa3nwdT22ZHBt9b9PziknxUdAnsuzavhfx0vT2O0Qu0dAxyCP8ZgVhCyu34JPaqV0C0C30WrMOMrpN7StLBR3WmOG0YA3LmSMO0HTsVtklzwxZegIpF/YFsW7s7WpfDduRRIcd6rBpgRcGQQxVMCrqQAGESwgWaAAxfW2tuFdmFuMkbOGaDBfH9ktxYHfy0Z/7nDx8jzswWUhFrmB3EffxGL07R71ZI5MZDnXvKQhtWMEa2uBmNVaPaIPjCHYQbHCCHWzXo/uE1c7xkZVIh7+AaPY+KQZdrR76cpC/10oYQmMVUOFc9OfeYdhB0spmDnkLT/4J3vdevLElc2z0PUwfAr4s+P61j0gsb8b+2Moehsg75DomLeNIB8alah1FNAuHuAnAmQ0AOFvCYhy0eTli3mgCLjAEEEpAEmYKhbh3xIL5pgznq8bMDIW4vYdLc7Mj/ctwFH8Z6E+JF/6Tk3AajYmPXkkO1TEz5YoWq7wEUzg6IlFGn7w781IWnzzedXSS6bX/64PP/otfzS0dRw44FNeAc9chk66U0+VyXcuhjk9ziYYSH2ANB4pBuymAoqkJMtvco9wWq8F/qaKycH7sEWopMhQIvLEwEwvh94z7UlELguvFNSepyfGT9OeKg0+9RAa/NEE/gq/ewtmH8bNfwv807NFGG31X0wuKWfETglnDxowZHOTzwwyVxmhjvdZR4Y8j6L5gh4dXinPC5CfDjGjFE4wgjwgvaiWUYCCDEExOueBcjZ7SwDDCmrPTGUDzJSy1PGmjq5r0CXmsqGijl9toqED7wBCwiGMisSJdXQa7jQClgIRxF+iiimTYwbLV2fvgwNRkra6cnZ28+bDI/QEO4HSHuzp+CVRLUdBhn7H0/48M/5Ch2uNwgHW0UZir94JNNciIIh0U+wo6YJSQjXHJlshBGVLey5PlJh3C51pIgeVPXuqSOsKDWZScU5gpqQ1XY4g5eHEsr76Ra7j5Fh7eVslu9D1JV3e4cwK94ERRzscjalfXZQ2n27efjm/zEmGUhbrhD3MPm2Slq2ahNVeUKCr5OcLqWUTh1iK7NJY9xCgphPwo+ZttnAoqhDZCXxYhiL0gfWI+KRhz0GKZjhV8k3VpOZvah5bF5oOuPInq1YI3SIHlk/DSH8hkjRjCqj+0oYrVefrpZ+48+hXcKzXA8fOQn8Pt8vxfGmpo0A1s3ddO1xg0MBjLGG2k2Eov2XeQsiLWYxPWELsK2DcQTk1aLEn2HsX850DJuj46ajENIzQL544jSR41sVyt+5AGBhTNAZ1x8iqefgzf+BY22uh7il5QyA6P3U2TtE/OA6c2zaplgh0WNbofKHJv+aHH8JBPZ51XgRCVaFVEg5uBvBHguMayRiLGU+CGthvd4t7of2lxCuMDb1f9kyjjXUfteO4LYouopuQeqGGSYXq2ZBEfqhh/AXpz6OtQIo+vsEWQL24MGI5Q0U506qWa4UTj56iK2jCTNIFixsc+c/VLH8a9kidtKHACV0pHaIMeAE3dsnOlgsik6WqUwvyOKtD7DionHaDEoK52rjvEBxZ3KKEHjRJM86wzx2WiHOtR+uujF4crVInLUNMAe3dGnpU59ogvaZTjmCPd6F7O6254WIYIKXhBPoQvnuH2B/HvYaONvofo2g63TzDVb1b5lDQy33Gaq1cHhcfRg/WPXEIas461pwxKkA22JETYdCLRz+GxBjKu0c8x+EfLVdRQAi1O6QftqjIi6YpRnqmvQAk8vBgEHm1pS1oon9SY1ZelYAZ2YbXLcpXW0XgTUMFu+Qfs0BM/e1app5faUpSeNGqLXzzZU6CQXV+D0xeqoDN3IZzNClmq7Cz5VKAyn+5e/tQz+PCXLvtoGfnH7L+I6cO4EMccmXR4ODjXtUIdHFd+jTwJMWgRkhiMZxwrKeY/4YkACxJMAaGKaL+HTgjqSeid6qoJD2gpMljXGI642lXyKM5SXRdWHXFw5tI0j0kQXla1qGK6ilvAxQfx8a/iE9hoo+9++j9uYLfD4zv6RZlMtLovuk6S/eqAHnhcZb2plXJp7/8DdKt0XzcvFSEupVOlOktcVv104OeAb4cVP8uyHHR7H5pjVIEeVaE4hU+iXWxchdvNMDlOXBMqsaY55hITSgSiy/4tPhTkHRm4MUBpFX4amotDP06MmChEkuyu5yMtQZ3Wp8YgbaynK/N0fXfkUvAhOVR/HfgfcH2gqN/ucOfruTkYAhMVmgHTIADDq2x619EGnbsOWX9TI9rpKt+azjaeO0g6ZzXY7g59DCnUUky49TH7TqguAwBXJkqoTQQ5xqbuEWGEMZO2vBvHAlPCFh2KHXIfZ2A3QYG7t/DeLZNjo+8BUsX7T3Fy4aZthc8mDhmYbx3NUBiUrNEDhyaycnygvaHCbgjdzPuGm2Rx7Wqu2+wxePRoLhssJwlGyLfHsC00wBtj0E98BAfADP7139fBZhdIxg2+GQb7P5oEX9fq/2BLVZtzgj0T2hvlRbBK63uXvuyCcHNySOhRd1eQDmICldfo8p4iXck2o0fnh2LeyQc//tWz9/onUO6B3MPx/+LKX8E5f/WQQQPXWXnYanF6j/JpaqIcH0QbgWGPh4OMuvGzELbT48AHG9QiAVWxaNp5iPyfqXTIJxEQRoVNGpvYA3eKzDw+pWLeH6zcJr4FQTEFBFdew/c9itfewEYbfXfTH+zwz5zhZW2/0NrvU10xyV6+4u3YV8Wr3TO9Lamo1AmphfF3tiR+zgYFOG2TPnpSYEc3e4OYCzeVvCC8oJRTNwarW8lf0k/9eEb/3ixr2LELqEVyRYScUNiuHsh7m/oAFpePz80yKAfpyVfZraF9GNJIaV5pa8zJ/9QE9GdyKT07uXjtk+978i9/HfdBp3Qsz+I2gDl21Gj00gzcCTIozHaXEkvdcEaZbPWDBA1slSFHJcgWhqaKr0KjTFag4hWWkG2zhnZBxhsrEkBsVpd7nBQI/QI0fe8+vHz9QKN6ddwQ0UZiIM1bdxLIqIrNkA/ipVu4/gH8zNfwv2Cjjb476ZOK13f4QssVXSbiniK6PPsp2R6+dQFd1shRmqHC4fV3hnJ+aD3IlmAlbYXr+Tw0TiO1hbJhKSlJc8PnM1zcxorSVDXDFCF9chppSx/lVFBte3kRW8crUW3u7GgRbHeuwJvLgMPHU9wwWjxI++OlduqQwQatdS4YSfGbRcmni2ChdoR6Yc02VoFq29RcZ1zszqevnd1PPAURcOA6ptvNlROHYkABVbAtL4PpHdLCH1/BbGZHhWY+WWZuIhZ6SQ06ROOKbkHDpWLmkwSMwh+pykyXmiFP+3siAoLqbonm3FRVEjLobAEZ1lk/pWBNFkKd5SW4g3zSoTtkhp7h1ozzp/Bvvoq/j402+i6kaSevnujJbnJb0QyB+IsyxByosKNfj1fVvAL3OqFfLmnj0KVGWg7C1WJ9zOKmRszmhdmLbLBXB2jDiZJCYRMPDysBkUUr5cUgHAfpqKILIbcKLzG1KEytMlrXqqwAeTss1ELM3hBDBIcpQpACHYXY6ZSa9iEON0hKzkd7tNp9UKoYqy2clr2xPOACzDoBV2fcwf1RABxXMD2Bk6/g9grzINRYTftK4Z7wihZuM67MoPGqs3UmfjnYUq41vS/OMvzVHivaQdipE1l4sPeED7hRH4EVzME5niDmVqXwB09JAjqFc82xYV9RQUUbqcoQbfR/ux3O72IGPgZ8Bhtt9F1Fv3oT8w5Xdieq2UutunyOE+2NWQuv4DIwYk3O4YuXo7Gx4VMdlI/Z+VsqZncjA9nI9BOf9ilPPgyYvefJNaKTnGABxjEWRvFoyJzQhoGGrjZ/6Y15/NRL6IvwYKix5tsIXpDgk+CICQLmSJkuunJpRJJaWZwWop4wO7wh7pFrT7UAsjvXSZ/963+8v8WDFADHIzh5eQxhBlADwcZbCVAKU/Whz6OUHEYVe8tBsECiRcfolOWwKCU56NY0KBBtv/0N99nMcAl5hL6PCtG7sHCwXW8KR0SS5KdYj3XcrlrT1rsAGupfBC2H46PxAFdw/VV8/RFcf3Olextt9J1JLyjunOPqTts2Blos6fIrEBZqoUv7wMFemLJe8z7Rxj3AnqJLyjkYtaF2GHwYKSziV8nYO2gAQsQEziD+d5DOSdGZARZpQMr457ZiJIRaZmso+TlQ0IMg1O3ltpeXRXNSkgqcn8ZzBDv4Uio8BDjG98f8R1Zbfe+6uDKlccwQXLkju3v8QixTWFD+POROW3TQWu//AqnbOTuFZkMIih2ABdKxi0wN9Zf7UmiD+UOjyUjXQnWZ+aqZ5Git6+/+ACZKOCMZ6SQwXkdiHcQ7aDCXwkF0tcJBlpr6lapGN4lJm+mDseH7LHEQan/nZ/HkFVx5evuW7EbfVXR1d3LzDPM07TG0fY6QepVnHH6D+/8HVdZaeYdpZMpk8FsYrGoPB+x30TTzmfJAc1KkXW0wZbAPmAU7lqtlUYl/fc3WZSxQgKMki0tjsi+lpWAKCewHgKMN241jbjrIstmG+lfi2vddZ1qE4vtwBE5PUE2XmJ/WntjnZ8nylH9h8BntRYZ+LBpxXh9G2V3DydrXgy5Bp+lccKK4qxhgmWIyV40lo4pamI5L/X1mcjkYoQ0rYgBRFbMq9ec+GKnQXy5Uk79mzoshzy0Cop4lo6XRHIVBEMiqMnP+28Xyl+UHJcNCYNaOqNd8GwrUjdU1qxqiQie4KrjzPvylr+NXhkO30UbfUfRL3wTu6mO7M+CiR0/6e5lMqpL/Ol6tvEju7FLlnacDjWtgKRkDawIGCR42hM0REr7flksWvjI2EamY4bfloIglpnzAEIspJdyw+Knsc6wArSONO4hrORDyXoSvw+fsDbcravkUcYR7r7l8T5Rq8EMzYcIw2vClLAIOBqa13qwagBO5uDvJ9913PAUVcABygvdc4FZSOB1qvTgqVFc9WV+sn6ZjHbTkhenAjGIIFlQTTledgepWK6uxUTbqw7+wq7GDWpXkRpktKsMDYg6hYO+TVtHL4oqNaoUOorebfBjDLq//A/VIFZhwF7h9G1eBj2PbDWyj72x6XvHN2/LeO7Oc7ZoRVHMzjyCC1pg5MLa6qfYYc6iO9m/aI3lUfgxP02op11LSeSvOECBnGABgrdUZWVRrKKRDJlEuJCeKKmDRDUcVzR/Q9Lc1JmWxSas+91wNu12zCLAWTPGDRTeNnLaLl2+uKrJ8+62f8oF/vUX2pG7A/UBMzGYjxnCBE42kDmwv0MWbYVxiZslsdnucRW88tLty98Eg4gw4Jpxd4I7G9TJka3PJ3kLtanP5+JhPk5N/GElRZ0jYYo3NW0m/yEvMRYvCLDkws6I8DuY+ib/1izYrzXW1k2eFRWWrXyFF7BoL4cEJLcbjmdQbtEg9dWl0MPjkm+Lqt3DtKr54v7nOG230NtOH7uL3r+lflFOdIxrQblKXF6VP/uL/W1YTEnsSPSha8XMMOC9HawJCeZmSSKtDV1eJog9cwomWrkBMa9Bod9my0trXAAXQ/irHSmgLDTCG4MUjllU691uQthNN4APIaANRYFrVMoAaVlIAQR+x3vcSZmK27lzJV/m2BNvil/oymZY+ujx90hmUdFtQ77UbV24/fF/7fRnljwL8AkQxE9pwlYcl64XZAHXruxzniMODRhvjujX+Ev0KMM9BNJNslflFGJhhjcYbgbJYkmnl3Bab9qCwCV950ECt88+L5IHTWFHEn7rl8qyh9dyR0GBQrH7GtvG/D2/dwWffgz+DjTb6TqUXFA9BfvIWsAP9oExznJA5Se+J8PuRZoGVoqPpfuoeJU2ggjgVBE6VdCU4PzQyrzbU5cd1KJLTM7smPotQnKLnVUj/PIrMU0q2sOaahWi2ufgtkL73VtCGPQZzFL5bvroytUtzVNUO5prlyl9UkfxvZ0kbFKbpySI9NaRkeOhISLqkfko7pTqDmPAlM2Z3enL35CN/7Uv1QbkHKl8hAh7CyYwpwAl/p9T+R28TF2YbqaE6/c8lazluNj4CFC/vLXLSgNljdMuXLqVGx68S95TxClx+sPdF7Jr7wVtRZneZLB8R37DA0Ap8WJhnBglJUECdwdTxA2qdlcx+FO5vYhidhhU0ipP34189wROP4l+pA7jRRt92UsVHLmS6ohfzKWDGptkb/kEDgGGHrpSvNJPOV9wJK/PXkPeBkw7aqDEUvubOhswspYSGVgUBKHRU0aCMdtaABiwDI2VmoJ9GUNIkwFtxNxTtSs6iLC+kZYbSDuiLtb6YMAt2lCI6F32sdUovzcjAckeMxwqJzT/P1j7whn667LPu25kvm6D7IHBuKaea+uffBgyLZOgMHeCEe6Oaw4ErmD6M0z/ETfgTNcQKqVDzhX4Y39DEZkKcKz3GjEL28lcXiI4O3O5HPdmaWl7nWtjFWky2nJtI3ayWO5t2dZng45GSWluPYm3QkjS+a7VFVMUSiIw60C0ZPAnjyXLGpHj8GuYn8LEvbTtzbPQdRr97Ez/ykH7j5pXZvNttVmj+a6VlhAClbmhMt+NyHA6OqG14Vb/WoqX6eoZH5V29lNvpoEDKJcW+DtjV+rqb5CAhH5hrH8A4pKKA+T+abSafxEzltABVYlSFrnYz3JM/mnPCFKDmqKKfBh/M7LuGk2MGLgTxEpX7Q2MK+3CtjL+SNIRHLt0hC520euk5tBGWECQMLm5RUTzzn76IB0QDwPFenH4Nt+mjKgkBJFPtZ1pK0B9xHbAlk8YHAVtQi4mNdUtBGY2i0C00EPjZ0KYuuBoJRpTTVljQQ2gxAQfrxIZf9AAAIABJREFURYQCQ1OdAU1VI8ZohiVpNLx3Ua86DKE5VrWES5T3BIvjZgdtArgGeQh3z0eLoTba6NtLN1T+/qt69Zp6Tp/N6R1DKNt7L4eqSprQG4rQtNxC3R4UDZr10lCjMOuo6n4aog3h/0eo0YqS8VsuaeQqjXiK6GKth/qYObe6NPPZnp5L5MU/hjKH05hyITQhET5IWEQ9qxT+4bSoTPMUS+BvPgPVWWItQKflPrecTAMlQJBsaSjzkoIs7T5zbocnU/DI0Kn1rkJDvg/8zAhEwyPdnmEViPa9wPo+71gYVXTSvR8rvCwNAMfzkJ/FjWU/Uyp228yFtST8r/AkI6ehChvFVLhaXmwwCA3UCEuSmcw2uLrmY5bMp6q5R6C7nU1vxBYMC3xAqOlh19KoaxoHFh5VTSOgxLomJDSUUBp3Z+VLb+GUK97A1Qm7p/HTr+BTpaGNNvr20K9888rLd+drV6f+Poj0faEAm8EbHHBD6jO7hPLlEufjDeDFEHMAtotpmE3LL9TLgo5x+2tSSiBE89UD9qiGV3j3LcAQmc09cadwNFhgJjbnY5a1KgFzJIZ4YAEOljB3LVVKLTudZAckBnSVlj56LwSg1baIGgJQ2rA8jLO4wCY8MBggW3iFDSQDEbVTabZFAFuHjOVBExVf4GE7mgOK6b6fMKIB4ACww+lV7Hpa6iiQN3J7gPpoZ/ZS6IAz2+liuc3Kprp8UAtNw2BEq8Vd70Lt3cDKauCv9jXZ8iRRa7+iGmKiSpgjGfWsPAsq3dGiS+SNJbF3wOpB6OPaGKZ40PJqP41/+RX8alFpo43eafr0y7iY55Npmm3aAtTwRS/xSY1ncPSZHVZORsDLl/+P5p4x7EBcZ5o9JZcir0rtB7QR9O2rRvnXU2MbaRD6tC/CoouNUz4lZltlCoyTKvivf3oe4QCJoQjh77YrEuZo6oVkEd8/lLFI8K8Iza+cj9KnvbAVuvlvZvERWLY9FUJddTAZykg/N2ntUezcEqdmiaI4HCMEaRQQlXnCND/9tx5YPAVrgONLOHk/zq7jrdHFsVejvkDFfAVDmEw4okEl/suhDbvhmsuHDUEDv1lEYU4dcCb+0kZ2friVpUJjQy3v/FGqY1OeBmDHexxsQ6qQpSjT35XcRV0ZuhY6idgi7cjO/RLg4v34yT/Br11G8Y02evB0cTqdXuzuXOuRvv6cNgMJcnUA0GXCj66L5WUQ9B/uFXOgcez3XnDBwuIQgJob1TpM4W3OaGNQToW5NE83ObwiuXwgVph38SqhGVRbg+rflU15Gx0iZHgB37lrsKlGTu0saZ62gViqmFAOl7Th6O4tBSWjhMwS16GNYfv0sKvNoRMeJ7I9DnHqQ7Mwd42Ck2qZ1nkRql1dnuZ+SadpPr0r8wNLF11oDDhew8mvAf8+pEQQEh0LPsqJlmO2wfsKe51g7ajQrwbV/RILzxVj9cwWL2mUk5wciJfKQMTejcqDB6WXsEBvfeRZSYOTe1SgWBCl1BzdJpbJLdaPxyI1GtoJl+ZTXMyYn8VH/xifw0YbfZvol984m+f5zrWT9oTGOIjad9qWl4Cm7/YtFS3zeONZkEJM+3CeGCDhiol0DQMcuL5WnltyDDP4OEwDTnt+0IQvx664N7Qnh/okQdr3wvapFDS/UnQeSdOmzyLaTSQP/ypQWP75Cg4DJT2TQ+EHC80SgMIMWVbAukyOqvh3br2Kdcd6bWgJ3gpAw2uDw6J4GFilSo59IzBFxyFKYxmvoqMd2Sn0VE8vRg3cO40Bx4vAX8INQBbP4IqfAHsLQ0cSp2YeTeX08tVT14fLU95GMsnIhYku6xrw1oc1I+xAsdC6bt2DkR4xa58Fcz/K4CuNwGoPyCGR6rJIXenFjMjXma1pMP/w+Byn1/DGW7i2fU52o28XvfAVnJ/PZ2eTe/PdUIs/yBwxMVvJi1aE2Jy/CwkltRWUhtaZo08FB7MwWMgKhWY11PWlFgcbsZd74NUIB7Gt7hBKJjmYdhrCxim22DV+D1baTLkU8g7lYW1quBobakLSFl6yczYpVQRoP9I56lEdHnMPXdjSDOt4wBzRpQHhu6D5pqifheckDjyfar9J4eriYVGcnNw9ufuB/+x38UBpDDgAeRpvzXgTeLg8ocemdAzZqJwNEricCjUys8iUuxDMJBnPgclMVnB0injMDMUUl7+1fMQwaIhZGCch0tCnUpwcVjcIZBfIKB6UW0xq9IoumTckHXqDMGglkEBv45E3gKt4eduBdKNvC129cnLr1sWVK1fhTguanZVcGGEqT1afLYRaOMUDnoIQDUFshf4XUkMS8wj0hCtrNTLtdZhI7v7gJa4opJiweCkdVBs//AuQdV8+wBYiKfnv8nlT6X4LdHwwiqSkfNIYmpF5agkliw78TTVWjxGPUF8AhE/DuHyHR/z8GCKRMFABWLDYcN/E/WsSTUq9dxrvUnxElrTn1x6/ef3OlXob75PWAAcucDLjfdcQvig++q18EGp4CXU8sF0ynrKGQlLkwrMQSqNVSb+59HM/3aj4FASDmkSxsQ9ogE5R62pUjKx7pn0G3DvI0jRe1diFdnZI7JoO3Me5j7BvL9ZL+F+oO0GfhryCF8/w5Dleu4wWG210v/RLr56p6qNnJ7p8/0KQV7c2JBExxPK/Xg6US61yohVnaqjbj5a3Z9W5sOqX1aHJd3WiufK5L1ZySBOAFtQ5BWsqkDPDNt2CGeOYULk04XGH5r1oHeGkzrbWI1j68HcMYtBcJn23qzHK4SY826NjDvaLzFFVXjSL3i/AO+4znySYEqd7G6vodVCSGW6coUO6B+KjbbN89lxVCjyiike+cfbm4+dj5vugVcDxh7j2TwCAgaWqaLZPByMvI2Ov5diNZW0lejKGbGbUs8zOn1wdIGMZujCMbpBxnakvbHHXrLaQHB4QtseJ7PqB9IsVgV5cy0e5Jok5MZQWgvxFMf78Cspx0pTlY8b8BP751/HrZ3jqHK+udXCjjR4s/erruJjnnUyzTOI+g7i6VfsvQoUuvy6DVWjeD3UjabVCJEVp54OxNmHeD8IdXkTbMCpcIQ2HhX3grgjAopJYj7wo2L4ELPa5NCidohpyGwcIM7QNN8EyzdjHkjk6QjS7SXhbjgUWtP03O77hz9ZLUh4mB2ibdBN0iE6R4PDw+a8dO0CxR2gtmGWX+GmMEJScHob3xl6NVtLvtO70dD75s//R74+bvg9azUF9A/gEsMMuWS8FFKpHoI1iarQUBkuvXisbP+NhyUO2ZFnpICVUDl74YRYF6endxwDfKHOyWdYgxOXEG94fzi4tRkC06Ky89GNF8xTjsKFGEjU6HhSOAGUdRh6Q3HTiYeECCOQJ/AvnePUqPlTEbrTRg6cXFHeuTKfTxYQpft5zIRm9EOLR8vBQS/uH9BpJEMtGqJBi9Eo5f2l3yDwk7tTgF+/w1/Pom+XLkeQyMSiwnAWTTAgAdsyQgiMdgrT6w64y2oDbDE/OWHa/cGldoC9sQeMZLlEJOrA/g7YJn6eyJbnIjnY37/ug+4dOdoLd1Pcm903QScgUlF/+7QQXcWOx/L2VabD9+c52SR9WkfFW6Er/ZkBVxPYjecC06uF4Efhp3LqGu+c4s8L62/qIIMu4xOqS/VtNy1jjYQWSyR9dMstdQUAIx6SrfFo8DVw3t5I7XPIt+pVxNkaoOpCwhywCrFTRdaOSPJLxFpQexDuePEZ7VeKerpUrcPcx/MQd3AR+fPuE/UZvN11568rN99w9ee0aAG1+BLH3QKV7zsvSVlXx1RGI9npxYBizmom3iaSVBCcKE8nUBA7qruPaFh4MNBmQ+VlD1P4A98GyRKmjaNODMFxAO1AV8gQMvyYv0CWokYBI+sabXfK1sqMvx657WdrdIMiYwh+jj6TEqE0bobTx+SIqODwAHopeJLnd8bNhwSl42tCan4Md6yVvg54GeqhmkXl+/G//1t57fI+0CjgAeR9uvImnzvAGue1c2/TcH4lFQEtt6bEE279DHo5lrPaFWsiwJScB+Dhqkm25Di5ZsWBUFwU0RCSRx4I7GE9dT001cpeDstTNeoByoFSUhLPMcuUw4hnrfMRVmXBxG3/6DC89+PjhRhsRfeqrj9w+v3v29TM9nQG0hIVlXtYO1n0ZoYY5fbGUiyCpxl5cIMxyDLGLGQzNDnEFMPxgSgjThMI1UtIql48AhJIlCrIzXlHKGGjnZmt9oSkXdscGrxwZBVPYqItOe9eSoEsuEnjDDHNvKEoVVrLjm95E21QUUeFeK4VX2kdV2qwvmHtExudjEgXtT1i/F/ZXBVBZvmXSd0KzXVgUfbuOZQrnn5bSdxdrT5r4LUzPjDLPEp1RCKY756dXQ+7mA6Q9gAPneOgKbk6YZuxYyb2W7yCPxhItx15JQyHbv+xUSGzRirNUK+HPsw1e1CFEIG0P5nLWvqg9hrEXAwXWSkb6DHweWvTk5kiMwLVKAvMXZQvkAl9lcaNRSf/2XF0CK195Hb9xDc/exh8P5G200X3TJ38Pd+fza7fO7pzt+kQsLVd0eUItURRlp43G0GWxjyEiDE8+1W4uuokus3//soY3gKX58LtUwy4Z1jIpsxKbj5GUVmuIZyhpIF6VlTeclmaE6jFCAWJws4rsutDRtlqDA7Lxfe1JS7NA85r0b6/TB+UJ2YScjJnRCdq35tW+EW8f+YjJoVnn4r+x7czzCPSpbjmdyVGBLg0QTDCvW79fQY2uFN9iA8gQWQCE5qt0dzuwbo+NikAffezFu//fo/U2PxDat4/YJyBnuGO6qqvWSFdNYzB+6waVMzaU5es+tJGFJLYYN7F0E40y1bqQDipFmx0M5DAUksIuEQqMpOaL+VLsac0FOYbcopeO2NANCkuUh7s2HCh+ug8osye88l786CkeeQI/cmz/NtroaHpe8dpjk965c+fKTuJj64+1WQilZ52McSv3l5Vc8SSQXejqQmIWAgtcavk/uBekUIi27HvnhpeOLBRA0jLMfiLklSe04ZZY4kE3sclFkUrs1BM4LDxhuQ7ehOaEDE/p8M3L56mjB/sSPaU4KEGW/iH43u5yMGGeSraE5WRMvV1K49gtVUiUZ3i0D80HadoOZCfSRC05Fl3zmrGh1B1aQRPyPHZLW02muD6WwBHkyHyC53Hlm2+sP0v3RQc2Lv1DnF7Hm4Qg3M4l8NELc0llYIRRkERAA4itjHhUvd1gC+Pvfo38gZlqDRwnw5jICIKkS6u4xDrOTgt1aBLa0iAkDYiS2qkVGyVU5XlS1Kxkpdy1tav+UITO8qUMXOjOhuFaZp0zPALok/joSKuNNrp3+uDNK3/w9Dw/fA2Aus1bLtacUIEyEOn8CzP4WV5+UfJ74BJIYGPG0OZrfKsMc9j/lMrzO1kKe0OllRW0sfZZ10ER6YKQtRCSH0cbZPW/Piwa2mmYg8Y2hktmwTxJT5ykRFGJ5rYVaqs1kcciZW4imPClIUMeKlnmcmnHmZsGIKwhwL8omzI3R+36wYSdOMjYAbvJ0k5bScM0LLZgkcZQ8cqSMdqBCAkRyPl07dbP/ODbt//iAcDxBvAL+ABFvdCfgWxlEzJgu45yakaXBIJsJMj8N0AwCrvkiEmMViRkw4022KGBrfJkXwUb5gJBqpWNRjUUBjyhfUFVL/ERiCV1lNaoRk+CzNGlpPWgEVk93SdtLduDNBnnQysgwA76KP7ZFeEbbXRpeuEruH4Lf+HVh2Q6obeBfd1Qcks0WjBHgh1mzgOzBdcXUdbyAHPomveiFqqU4vhGaim8DNqQoomYiyW934SU2v/miC1SLkIEGX37rH5s6KHGSrjEWhvmalTPCpne/m16ETPSxEDmn/65yaf0ju7JyK4FW7oSkYoYzw5BmQGI6Z6P3ZSvLihqB8cN7vXpGIK77Lr1yXW21SsF/bRh6etWLvSph67oR57Y65++L9qXwwHgc3jkX8JbE7CDjAx8/L+f6NpprTD0Z0QIMoApjD9KxSGAqDyJTRPzsHejHlRE4K3U1A0Jl0LvRgPLQGQAF2oCRxJC+CYNY9AzXgq6pRBVHYu8oeIq+Ei1mFntH/dlB8yYBdMj+Oib25dWNrpvel5x4/XTh2/e3Z2cQVr8W0U989HT9WN428jeYU/OoIw8ZVscDX6o0g56dogCBRv0l6rnbQCa8z8UQnuHWLn0qeYSvg0dtb9ieFZ/ejQFHSUsw1u2HelXlcfbfA8ZTAAq2FH+BO/NZdEBK28WfQoSZrvavThpWw7KYw04gJRp6nK7SUmbxmZpWYL2CPg8V/I/zLHE4MnuAR1Iv9j3Hg1fMu4cxk0IUoCdAMDU59cFvrbjptLFfPrGt9569LH3jG/7g6ADgAOQ23jrNuZT94VYh/w0HrHBS4Y528WDYIIbWrNjpeLARsboiTcRgYuURsPleDrM5yh6paNBrMHVoAHU2G4axtBHhFqh1wgaDikP1FD//eW9bmioz9Yhz0zWhQ6bEOAUJ3eBCbvH8Oe/hbdlpdZG7x569ltX//CJOz96+5HmV9M2i+syky8zuuoSA5Fk4FVUyM+gCXOgZXh6ubTdwKhEF09CL0lJoAMLr8PEzkZ7szbu82fqGtgg9ZehSia5mUT7GioZcvsLni1i8sdSmexx+JSaWlJLDF2xT2VJXDDkAXWnyMwIA+T86H+XlSzsrtCIgZYnJG2IboOA7qgAd7kp1nk0dLBFoyaI9hGzbvp0aU9d3HS/S7DbpcRk8y8A1TbSO8Fkk32/U51zt3vzypWb8vxnVx6JB0CHPz77DUyfwOOCnRlCtovxKJQki1sjF9EMgyoePE62fGzFSqmsXnGxIRNiCCmGcZPYkdU4QqxivRahZ2ak8VFzh+bDDNFI84pC1u6AUuHw0ttETb5CTzEDu6u4+mF87O1scaPvcfrkV68/cj796Fcem5ff/yGM0iP9zTwIlpDqHMMKS0IAgj1Q2KswCMTkqESb6KW8cOJ2NFF47bIp2hc0kXpx7N4AkhOCpqNSHv4/CHBQL9zPUYIsBhFMW2cILSoQMYGEtlKMYDeFxSmehJECCpNtt5UlU24ER1uky+/poiUKY3V3o3IHPZNvBaYkJydkWAimZLCmoIxBpZnGhMMxfT1wT9qYZEexIUdX+vQzL04nN0ZPyAOjw4DjRVz/Kby1w4SBSeMjBh+6drqUcRXK1D6cRqoBmqQIyNjKsoZ5NqCDChGim8Quz6SSkmKltZzFOTDahmNKuig3XVNJEPl9y9EyYibQW47Jqt7WSi94NAZ9XEMeDw6MCDCd4vQhvOcuLjbMsdG90S9+/qn57pXHzqEyN8+DGS3Ym8be725U58zmoGFABRAoMmdCJ0hvS5asA4Z2ob+3TT2bCsM/iRWHEGT0uq626xwSLwVXRFpL4i4HSz7Ie4RzrCTigDlepWiIfZJNkqHlmIsV2lgtwkd4Qjg9U8smItnSR+UtiZUgxQIRXD2XRruRLkCEIZQCvjm6/et9R28d9Bi7PvSgalF4yRvdLeminXnGXb16643nHn74lcGj8ODoMOAA5Gns5rZFPNgWkqlhq+/WqzgDVDOS8IuGHlDEWvVRRRKRPSVaD0ZhFz8wQ16uKhtv/osVSEEaDiYmjqSN2CzCNp6TIlEMdRCZAmt+CAl4xd4LHU2ZMjyhsQI/J/dEPu0KoJi+hbeu4PSbeAt47h5FbvRuJVU8+9it3Z0znU8Bn5v6o7oPc9D8tQYyAObTapiR7TphjjTldfXEXoEsrr6OnXqaZzdIzM+BGSlHoaS/d8oXh34UBKeOnXb/EPij82QRRclUU3gilBtSYUdFwihzX2TEaCDINMeVQ5PObFiEF4CM0iqr3yJBGZNzkXwbES2ZtNBBuAfIEQnEnB++XGVCWBeTVsBG1whXtFnZqvQOym7qi2anp67MevFeeX74ZD0wOgZwQCETdsvMH3EGzJixP6AzZKgRREYehgXsqyjmM0AEbrqu76Ba2XjvYWDDnOaH2Os8SMWRUzu7j0YMa3Bk9SoH+IaN9PFkWJC6rJFhj3pVIeEJq2ipOpJchHj4WWihv0DfwFvfxM0zPA58/Ah1Ntqo0UvfvPYj778h1+5oNGkDzMHGoJXT+hQFZqFJUMKz7LPV0G0wxhyrEMaaCPwr0uBmm15usXAttEwY6ZOxFU15y/nnRocRZMtVGG1wJ+JvB3QkU6qzhOASECyxrXkQ7Gjfb8u+ATfwwhLYE2BOkYokkguEqqTW/XRX0MbMn1ApOGYm+Q4d+opf0z84VPZswmGQIkElBDmlI9C2+EV3cvP2/NDJMdP8fdHBpFEA+AQe+xm8siyc6WXZUAH5MaOj3I1i1AcSihXMgkomR2XZT4w/qmJyGVEH26j6V/mDIR1IGl9Fh4PJnGv0c3Arac3LcCWtH8s6Fil6Li+raGYTCbfV5fSx8KdLuBi2f7I+qQ+9hmfP8Plt4/ONjqRf/MIjr96aX/rmewFtC1JsP1Hl17AZUrVvui6mdsaytWOz24vTISwMQFu8ED6hIu2N5B8BbU1B2H60nbVfc62ek0KlJwG68PKuILwuQG/a3rAw3/T6VCgDtu5hqROVe3HE/1r54sawEo4jWJaGv/pQhPhL9GFkhwcJWQt2IB4AkPaBFXZvEI/MAgC7KND+qln0xcWi1sdg5hVoHdEm3D/WKm3ZkA+Rinmh1NNF+/ITfj7pFrSc0KlPrjZrTnTracEUAPsMm4AiNNbI4nGYT0Xl2uvyX/0e3mY6CnAAAPQKdue4Eu0i2Fovp+F/8bCCDyoZh1oiHNHKkBQYWcK8dmNggQNDeFNXSEY9PZZirsZATB2K2kpd2NIVY3Ypw5XFaPtrb0+aIHl4Dw4L32tTXKs+hTyverDIj7L8IfqkfuE1/NZ1fOAWvrZXmY02wi9+4WEAr96epmW3zGWlyWK0ludNbLnjUkMgUO2QVzsUaOxk8JeSVrEb2o4b+tUmqz3T/YluFRFfuPgte6PBilU0ZcaOzQaKupWqGCUtmAQDiPSOZlwSDT/8OAWS3DwHoLCACVob0u19mOb6YM7u8/BNPLWokX6188KTuZtb93mkjcjsd3/XOe99vrgoYoviy2KF0IY3qv1haM9THx93pNHpApVskHkQeDD5TthpBoj9Nvv83UWoPS9xA31R1ZOHv//Xz9/4Prz9dCzgOMF8jpO60oRPw/8GJdnS6ApPjXeUY6sxTjjtJWu2luHF6JpXTxtpeOvUko5OB6aXAworGalG1TDHn2J9IqSS3P1Bv4OcYXVDGGkOO0h6iFkLT9q+wArDI+GLBk0r0Sf1hy/krfecfPCVi398tIYbvevohd9+endxfnJ6Mckp/9zvc7Zhjr4C1h5G6Z9ybTWkvawGOxigAE20X0XGKP5jN7pAoFA/HC6v7f+n1yS5QVonUAqNmd67AeZfMBbV7j/CUwk7MLpJllBuf/vgKSul8apGcJCQBHssZhk4Gzh1lEMtDQTAAy4SF8RaeEIN0MRCBgQ5yILmFfBa3YmyVHcXjmCG+C8pcDfDl2Nn9y6NJ29j7nh1cCvtoQ73C+2hDSiELQ8gcoL5za/90CMf+E28/XQs4Pi7eP+/i9cV8wToCGrsBR9Dux7s93KoA4aUTOo3JCZtVPmpFT4Y+Cf2WkspXEr/MHqJDXZkwSsNpaliIA2lU3aVXCZrrVn1YY/NfezlpUv7IUUdov0k/f2zxz+gbvqPoIaFWiY5mx7DDs/gx17GPzquxY3eXfR3Poud3sb5tZOpRyWkfg+2PVeafvcpYMGOADsi5mDO/En6glGAYPiJJFTEIjEiDHKNWEmrTP9j8ewYsfcsQnfQEJQXvoxH8GQIFH3bKfvVjmye2zfZowukX6UPt0YwMfdvi3B6RxS7cPZcCmiUpj3/VJfPzc/dXcGowjI/bBtQWNiFkRCrR0KAlmhCIIY62zu43AWbO5WGC7TEN2FLY6ZptQ81wUefHuEZOf5Ex2fGmO1ZWi6qvjU/cnbr7O1OF13o+JAKBHKCs4v2OTejMdoYQg3NJXtWpuiIwevuMa7HWLy0ADUeWLug02BuY8ylJisMCodarYMPng0R5wQtUCAV8NQS/BmSNUdhW5NWy1M/7N9YSiyvMm16psLeaUm6LeU7FZ100mdOfuzluxvm2CjQ8wp8+eyNV978wKNXlp+k5kcIryahAYX21A24iwJmKZdnsj2nagbZ/SI1noI23e9xh1g2B7/uzklHZEFqeamUT1bfaYzK+YIAYW1IN71tOs8opLVlzgP7C8Ic3foJSfDv1NuXzMKyC8D2BZ+bVda29mTq+4V33Wwv8y5TE2CySxe0zRc63NGesqod1nQ5oZygTxfY+2vDJVTSR6Z1vvGk6Y2QoLEZxljkyypOpp9vEgorc3vkgRM5w61zvY53hC4BOCacXOAuvRf1J/UAOtBRYh/6M8Kxekk4y4JC035nYnWueAwmGVJAHiRN+VLs1yVaJCbht78QPzX+TElY0LtoYn/9oNyLPQ0tly1MzVuY8zu0vy9ZnkFuWhtssAP9e1g82YdXysCXQuVEoPrMlQ1zbOSkik+9cfbrHzr/4dtP+pQg4pkZWOIllL3RnulBdoMhgxZk8V+NGiyEPczND6IupiWqjqBJ46F3kJFHC/TUAErUMV4SNzDEZ3ukSnCoWFg/vF5hCmPvAtvIvoUobAo0naozwy1956TCxfqF1S5dDcYohjC6PnlLUJUIOwTaU0FRM0bRV5H0U0EIu6QQDI+Dr2fpIKAPbdBN4feuD1Tn6ZEU7c+U3c2IOdJnI5ZHMfwU1XRMwKIWhqdbAJ13u+lE3v93fwXvCF0CcPyvePTfwau9B2O0sQI1QgkCvBj7MKgwJ1fuAR/DgMsKfFkjgw6xY+3Anp09UGCf+OE1DYe6R37Kfk2vu7oC/Iw7YiBcEl+C3AdZX+Jb+yGjQl0Z7+Db8CC2NUsLlzoBAAAgAElEQVRKknBnCD+RJsg86zSdz288fPJ9N3Z/tK7wRu8ieum16z/95K1bLz6hp31Nipop7tlzCixLBZQQ9WKCzb1hddNbxY+8FybO6NtgnCHdSvXT5vlfSFQp7B488KCmTYFaTtDBi3l1TngLqSINT2cLtla0fWt0GEZhL0jYj9yGhMwzkk9nsdDckxSCaWMDRyRpLagypGC0IZh76xmO9MDQotUOwHB9ioSG5hAKaY7j5ARiRMJPy9LQDK4ufstSx3vVerMWO5Dzgu0h5ypUOAsJBQQiMinm3Q7vFF0CcABYwJXiopSz4U8Gfg1qWK2EDLTAkSJ6dDo6ziESO6DT3Gi8pLE7uq7SPhM+rKK5bN+4dRpOFQOUszYyVf/y6TUr9LWD45kpMAyJZr6sjMuU8IuMO8gSeA4OhzLj7OSxb55//ur0xJ359RVNNnq30Au/8+jLb+lLrz2pk2Lu3y7pmEORky004FhzeIhDAWHo0G1CAhAwzEEuE6C5KEDPe1q3kvC/AG3ZTLRVRvxyEIVPzjEnFdrPcO5+bDpW6Z4MF7GcOgJIiQv2Nx3wwhB3QixxkL4fF3rMwpI9fV1JM/zLopWlLYu8GNECWgp29L+g1I1ZsJs6gIAwJyJcCA4PwhDz5PiJXD6hyghwCEJIqD0hdr/CvYtAE+3jP34jszNOBz4M7fLFmrdAjwLYqZzp9Yf+t3fIvYHLAg6BzLiYQkbzHqgRDotl2pMiyiVDseF05NioNnSNxmg/tq1VTlFGOxxRu7oGKYokLcxreqcxScprZBhDFvFRypMTDYGwcAPGhjBoHrWKxpCwSBjYPr8VkXllbCwkn7OhDUMf0zw/c/bjL5//PxvmeJfTP/jssxcX51+7cX4V0n4caXuchDEH0CdohcGDDoDbk8ZpRUBCwNpmbhiUcUNuLhPCHNHY90+8WsPR55i/11ZTTc0g7UMepHkyQialTn4+JVB0IPo52lWwxYUlbYi5DWDGmw1zCU+0v1PO5QwMwTPR1qRoj0p42gdtna7+nRcxHWbK2Kh+EeqOztTrJfii1p0YTzH4ZYgnjczc75VJszviqaD2MPj4+1me9QvaCM9teiDgU7Lf60WCPKZP3Za39+MpiS4HOD6BJ/51fPMK7pxgLu9BspoVJfCT7kNIdqumF6TKzGYtDlBCaSUJWTX8WmQmq5yQxAosGAMdHfHsxxkr8ttFTtGgOS9pXm9EvjTapCsoeTSFse2YYq584okaVX54M8gUkF8j/OACICezLpjjujxxSzfM8W6kF377uYuLN0/vnskkOvXNNrpnQnVZqqJwDODpEbp8XqXhZZrOk9OCw4C+SU3J2+D3S0DhjN6E9DeAW7Gq+W2ONiSYJaxfCpkfYvzu0giwJrShGOCMvGQ0HrBTQbujYsdeAQkmvJvnJS1D5uiQCO1GH0NEBqBdPbpjw9whoIoAGGRMweFhGanoolIKKqdxzIJ5WQjjang8BQWLGAA1tNFHuN/BGBkBlde73J7qaH6F/hd3pI93fDloD7iq3MQbD02P4h2ky4ZUcIHTt/DYk/h6LD7Kz1HwRKhlVyNbzvRMp7V6OrbTspGGMVeFJWqS9uQIhVXC3gSIHNNZYQPNN1oVi8f2Kwnx4QrgQ4KcLGuELSp8qU2v6WxvgMY3I0WnGcTzmzFo3RGGpMJ24WTG9135sT+6+482zPEupBd++znRO3dPH5mml5fnrnvhzN/QEQaAQX4/ovetg13HGbygnr0g63kbGO4DRi1K4ic2pPcgbfIcTQzCpSCKz73r6NCKXTuG8KvJJLtoZj5Zff7trrTYpBn1BB16IKN96owY5tR68FUseRtqQRMF2f6RB4XdGDbzJP8E7zoq5OqwXBBfh+KAQ9IQAbFpHrE+XJak0m2A78YBAgT0LA5m2cqcnxCDKZR57yi5KzDJ6d1pni7k732itPE20qUBx208/AheV0z91eEhadaFHvVkywOz+oGXpxEuchIn65DaGgtco5JkysGdKrAa4znijFw9GN3OGXkSgsn+nqiGz4Vcshfr+PS6ghfS/LsUeex6KNcmZpqD0Sd0eNiQN3Me+GNScnyfgyWXx09Q+TvWmhFZMMej0wffmL+6Mg4bfQ+S7G7pyfUr8yuKqT998Id37SDY2yapYwiSYKfhEW34AqCHejlZAI/2U6sRSmxuExIEawldTa/iyKZTfScJl0ha4ZJeqbZcpYMw6aURSfTNPcUzXbTyRC+IhUUiRqG6HRnA/v7/7L3b06bZVR/2W/v9vj73nCUhIYFkCYQFqRgUlwM2scBQBNuJcRIlldtUrpJ/wDepdK6SC+dQVDkVkguqEgoSyWVjqFjg2Na4ONiEKECBFSMNSGI0gkGaGWmme3q6v+99Vi72Xmv91tr7/brn2D3QW6Ov97uftdc+r/V71l57PwKIAQK6DGNj+mGcEL/Ua98dQukCD3bqzDss6aKweVeFDSdb3AUSpgv259h709SaqdEtAF0KQkiFhyzgiOFgjRcoHuE8xDFlHRPbTfnm6RAvno0EbR9vMsSdbpto23bTBHpzg9yZZAr/Hl5Q3JT04bekPj2FEmfF6Xp9BhOLlCkXl6vLOPF35c2RqEA5OMpPiYPe3c+ea+OC1ECyRpU6QNkOs9oOFLTR3+DDTzNBYbXN3HCw3C3zLBXecila4pEYp8inRynd4nTqnGcO3W3ji2rMYHGBLGib3MI3LrSHn779z/Eg/CkIf+8z79J2DJw2gYidSZAuY22qiO2KS1gLxOPxtP/xdHNG8MnGPwWQPBXrzyA2E0P5mUuv6fFanhhioqEgq/SokXEIAm+L1cXUJOBnX+loq4w1Srd8atysJR7fx0fIwj/ULBZ+c0bHDfFJWKcflIYtVGBfVK/EhgPEPU875/KlNwB7qrZd6RGRDolGo3oFovkRd+IksRxt+A4LAK8hjYMipJemFIe+VStriYtf+uFzafqJyssTO7bZ9ip46Oc+jbc2vGoLBwDBbod3n+JZst1w0PQP9ZbWnzlfDofRBj2IX0t7wBgVf+R8psgdqpFL5KeHcknWzdPzKffZnA8U5Mlik/eQN4YTpfcjvvTYZnvzG3q1PDnEMv1OGBtQVAOxj6wZPzydjsXmpoUCCNnLR80ZeQBouICHFfK+c9/39O1fPdQbD8KfjPD3f/2bVFW2E3IwVp9FcSwlvcurvffZ1S/FgOE8NG2+jAVjLhdkQMjm63J0pT9QmvKieeH1epEMK4sgKFGhRFoo9ETTwa5ET0aOxVOGF/F3+gmYGQP1r5M5INj8HnRlr4jy2dVyzdfQ7j2yZ48QM2CMyKqGlbPBl2T5CLeP2PJgA0nnttUW5WOxyOCjbgmJ7zS5dc0JQBl5BEtiAhwy5rjUjDSvbXQ9BZYogg3SoGiiC++6Nzu8FsDRcHXDC/ZrobN1ihY0gAltHNavM9qokTnomt7/jTFZVmly7xgT5IAxZukdsuTvrLh6ZwWtvwo88IakCpu+T9scNHsVNI1nNCHxmjYEJLluekrUIXMIeaYoD5O8TBvXEum+MnrcXsKK7AxLcaANErju9/cAc/zJDv/g19+zuS7nNUfiWFWkGeaIL7cheX3yauC1xb5P6WpzWmFpqdkc78WLrVqhdwEBww/iKYCZZNRmtNCCsOxxcxcHXsYM5p1WMuXyPeIQvEg4A65uKy6pOyCBDOJWUM0nVH3Xo49UaOKwWGAvdP3o+KI6FPmO0XwPx77zb1SK0WxIZ1V6eucJO5qr5miiVNXgwJtEHLHKOz38nnXqYcOWKe88pIvRsVetXkpj3Uivk4w/xtCbHuiTa9Oj3XbpH3x6KuBND68FcHwS8p/g6y+hnaJcGFJdRw9p07J7YpqYmaz1sdbogmzamqkLi2ABRyonSp1fKMS2HmRBHq042ITDPXMoedmfRV6Gkj7EP5HfbZhBQ33/csMDJ1m2mZ4E6XzkD4iVMRSDSn4WAIPMwpIItOOinZ5+cPc95/evfBaffRUtfhDeDuHv/ov37rdt12SD7WRrjD3ghgpNyCAZAQ0b90tHwwiSXUTFlpozxEC1zFn9qAsAPooyYL5bU6hwpcke2CWqZutAVssuoE1VVvVkbU+kpEAtVrOh5g+gDc8WZU7HN/jTJ3GXhm1huOYu0MRbFGaSZFGQfh8o44lRXIMaRtmI/xafYkn05LIaB17SDRyTsYRsLbYX41s83F0Jc8jWIh0Gm2BzL7rRaWzebtllLXQLw2eaPJuTZbbiA+xDTFd0KK5efenWyblpfrwV4bUADgDP4ML34uHfwrMTUJjjmPT9nEWnR8ufJa6FG/1k9ayZPlXPqHWqQ0nRUr7WSNHhd6XUD4ESStSpM8/KQihXsxDSiYYJXg/+SJVyvU94YezRMCTqD+2788WHtL5upr1mMmP4g+RJyuK6yV6PLp1cv9kuvGf76FfwmVfTzAfh/g2q+JdPP/S1l2597aXzum1+Jb5LXFVI/4JK/9lnprr+h0t2hV3tRSpd+b5RIxqSQHyas9u/KwljFbOYzOkFT3g6/NEKFc2yxPEBwEvKGzYaAV4MpQcTnBoN1YHt/Xvx7pogplAltG/o5nR3lvoWBu1KOBpwMAFX6s3PxNKWR7ZMeIhC/eauASB6Xwba2Aq2oIOygWmobvkE78LSUy4B8/obsLCMfVSNHgg+vf48T+OvbeukEcQoJQZseio0nesjmi0kU0W2V25cvHD55jQn3orQ7kyyCrdw/hqg2NScLu8GbWjGEGURFQ4Zl7B3YTzSnJv1dy6ogImaPtfB129O6eq/NMETCziIdD0AGg6FyfV1rlsPLh9rOPz1hZJ3Hfr8zTfyL6i6R51N9hSV6lkhgiYjS6cQoNEjSJQonjHV4Ey0IVhUt4m8fP7RW5scnzv3oSvff0aTH4S3S1DF089d/M73vfjH3zgvyPqDIho3OqBvYcRbb4jysuNu6aFghgoxgkSvXC6K+rE5yDw11iIdiaTLrW1zIfYjMEfAfBZiNKpUE6XU1p4K1zBti+R0cr+A+sHXsXtKPRYduLrMoxEiEWyWPZPJZmRxBGaqj4YdxQ6tONtG4KM4c0yRfUtPnQOnl+z7Qu9fZhHZWjzdqDIH/2tT0fyI516uhlpezY1y2LQZzb5ZV2g72UQuyCfvjUP9a7RwPAn8ZVx/Ge1SvtZpUuEFGSzRhuafsSTnR/zzDLzCyVPRd1b9nmVqzvwWzo8qf02PFm05VO4qsaRx8uxFUWosVOMzwIceMsvQm9fc/vGKN1inqzF807tUTEjEuqec14HRuAbSyCB+DZdM/5RWHV+4cHzUbpx8/dGj971w+vQy64PwtgiqeOZrF9/3xM1P/vP37hTYFALd3CIxIjT73PzAkxc0f22S9r0FVTSavCCjxchGl6Nr5rY0ZtCto3z3mFk4jIlMLw5czfQBAlsJqVkaWdxqAV4nCX9Ipk6Qa35xn1/3VeLEhziScLRR8Fk4THTTiB39YD3qBgnbQPHikAwVkktRf/UwPCRbG14afnzG/TbAF34Yq30GUpgO5Q4trsOwwRYOmGpf95K9swbWlOQv3CO9T2JsPGpTJAQnTQ/3ZlbePbH0On8UEOyhurv4+EP73/993KPwGi0cgNzG0fvxLn53X6IN0o3x88BeiWYmh9AG2z9GFoYIrFY1rapFPeczseTbsaihThwqyWDi4SxDQsnJeQ+4xGrunzOqcaeixmy1F6x1VeVA/QVuqKD/RERShztZZug2CgBm87DUFkYRiafFaTRqnKsu3iiry4iJ7De9KA+9cPr05fbEmV30INzX4Xe+9PA3P3Hz7//yNw83UBPuWlQd+to2jQVPN0XFSot1GOitPd7UkRaC8xk/XXOk0kOdVLXtpUjOu7RnsP0G4DPjKUJZVJRSpBTEoespBdktJNU8nDCA+VKKbSjscU6VDBv0qp0NJ3z0w0wL4e2hAr8jiw0bDkEgNFhm4diXGzX45d4LOmBsqKYIkWqNaOhXpu5b/OfF7WVhBSGkpZPpQio9/6w9kxlyEcgpzRASw74Z/Al2ik9+cnfz3uyn4G7U4aHwUehngL+JZ3Xs0FcFnad39SelH6zgZ7QRKRrpi8QSL2T+NF9ugbwVEoBDzY8oQxAn3qYsJQLzKsUBgm2qTLp4Y0rcDpcVZJmyZjkj14EitnLPR8mSukg4vTScbvs4fCdHcKs+3IRSDGQsbB4MPvwoAtE0iG76+7d++XJ7x43tq3gQ3m7h7/7Tb3n80VeeffHi0bhsA9JMZ0rciiHNXRIssRPHDRz+yOJw0BrXddDNHBpQuh8SKI96XGK6Dg7IIjbANj3K93MsHZJSXHhiaxRX6Dl9qkJ9qlapuFIi7hIdy3HzmzmkuFzIIBO/diLuwDD0YFdxUNzsFh000OaIOWZyBONgrSOM8XMPnDb4baTD7mK59hIWDsM9ViWIf8Jtb4l9MKNdkuOC3jQFxE72qkHP2m/UdaT42Vd3hK1BaVL5wC4d6u2MSh5p2O0oJZ1TFIIreuP05ZtH//evvXbF//rCa9xSAfAZ4C/gxh47OeusypySHh5+j0/EK1dQJ9MpXorxXMuyehAEhljy0Sm7rFJW5d9tCGE1V0MWs09dbpibeSJJVtgDVcptmFvktWI79URkEjMJP6j/yCsJNiLiTeAsKCaRuKJ0tJZl+gKOjJ9S0/sSPpIPyF/+wiv/7PLuiRv7r02NfRDu3/D3Pv2+DXjuhQu7Ztu4thnSp66Oke8HVsZminY92vqdjPn00yLOP8m7b3xtzWj4fCxvo4y6+EIUjXVb1hmtDHWe1I5ok2fJEcsv86P+iVywvPQFAc6cgm98APnNmCPG1tW2Hd+wC9HZqpEtHGResuaz8UbGSSGnHC8OI7ujGQYlw0Qxm1LcWsD855MsjpxiA0UAu/vLGsiNpf0Uayyox+It9XAHlsFSKxQu5DR4+uh7UkwzHkcFxLYCPd0vBzCxK4J3vOPoxo17hTbwegAHII/gxot44hF8xdfNvKsyQ41ZmxaMciief56RRSlNV4/457Lahau/AxTEU6i5gQvxoDlymA//uwQBmB5FnKDJEg+djYTSLCbWwk9pHWz0TtdozXEdyJMjvYG5fBWuff9Hkqx1ebkyeJTa+xtA0NCLn2rb6Qcvff/vvfxL33Tpw1cuPPLU8792Zoc8CPdF+MQ/ev9+r7vdtm8N8PnU4YRLYVsy/UNtzecXbDscdjYVULXdcgWg5ciUc0sOHJIJkBYg4Qygww6JU7IDC6Ge0fUcymsZKZ4hhTc8ddAhDv4xgLKgncyX1NCLSLCg/uXdCtBf18HkY0EaephAshtvidggBqu+N2QoQaZctHGzdq6kfSK7f2xUaWxYjCYoO7d2AdY/0WLZdQsLCrY2OrTaNrj5uY3w7SRHADI4bDIei2Usdip1aar9xi4aQ7WZ1iCKvaD57FKAiRWAnBzd+sbt8w9fxr0LrwvrfAx6Cc+dw8t77KqdB8DCUBGPKJYUMWnr4o0RZAdoGDpwrhqnPSAlDoutk5xLiWze2qgEOdLZblSB7RD9ag9l3n9JlTT65caK/9xyLi0Xk087L4vL1yulrBKXlERMY8T/JZlnWYC8qzK0xUiIdNCjTJOgDjt/6Llb7fR80+N/9dI/wYNwH4f/4xe+FeYfJDuFDBHs2yX1hvL+giCQ5pSBmXlDJGWEzR9ZEtBcsgoE/SoOnopeYYAjo/5G7QBoAJTgQtVj/oS7+W2AQMSiLkibRcRgLNNRi7HDYg6SY3XaLRRxlznvLGi6d1wMmsRloxv9DAcOIN013p8acfeiiNKt0L2bOhr2ce94FE3cLGJ7Im4m4e2SzbaHBFxP2jzqmy+SRBTDi8AGdVvK/w5jiShE+2YKwK9cFCaoyC9aJjNLFvUNRGIyVNyVh2/ffuXo/Kd/firprQuvx8KBJyF/HX94C5ePUZxQqmEjd6YjgNpdnEvPSteavPpdnEMpIlyHXEPmnG4IsjDy0hvQYDK9h/gvWBY+kbGeY+u06Cd/Gj70VBBvrKQ3MKHz2tSolDLVpyREHQbrfLXQXMUoILodkcCyDr5SSSyOpcICFoXDGWjDmJhszXJXIO32RZGdQr/j6l95gDnuz/CJT0AvPIL9LezOo7XYLhmTQ2Xsm/idWrQuO6JutMkCAEiGDRW7rsPWy9h5mQngNBrzzq/NQJhSWLoIL0Gb9UlSWGtExyKxmZo3RCXn8sgkA+hehrCgjB4hJcWPXCLSvsnAKm42AKvzMAbwV1td78a33cNsYOaE2PWI/ZEwRezJ0qBimx3Ef3hmmH3CzsEmrc8bK1z62H9JsCbMJH5MxhBD2GPYRdRtKn0kM5gYI9UnyAQ1Es8+SN28MTrfB4rGBTTXQDRpFvPc7HOJEm1iqGw3Xjq+fPUE9zS8LsABYI9zO9xq0C3wWIIKh6DG9HThPzGHFQrRVUEzJavP6vBB4RDU5LWedPmK+IynsAl2AG+k3YQINK8CtTC8IHYMIxgPuQRr5BLLda6lMUwhiCCAxN1ABTccaH839tWmenHiC6g8d/kX3O2FSyrtAm0YHGG0QfVVbIJ2+XT3b537a++6femTeEu/1PwgnB1+8tPvP3n55eMbf6yPvj/udnT12KPbmOMuw8fRVgD93lDDHGMFKPHowdiq9Jf7yTmjFiFQ6FDChntGusYyM0oY+ymRXg1GHTzRgUPVOJ5iEaGUzLC+INCy1tUjHV2WEEbZHTB1W3EAq9VxB5dvbSCpdjdjODjI5gcCCoEG7FNqdtjVcINVQ8AEW5xbSY6o+1xEiccOkfXMlmoYeIUtHOCeccAx7f706Tf2bqxdPnCONqrotLFnwemvYSUx0Amdku07KRA0nNw6345O5VM/h3saXvOx2BE+hccVJ7exwzCIs1K/A9rgR5xIaE8triXLtHXC/wae0Ihryp9/Tvs1kol7mF+zE9kceW3B5t6kf4F+anSlmPkp49sUp00J/yvM0PVyPvLqrPyQKugpH2qNKg2+lGwZmLOMFZJLHCE4ByOrDRUttWEOMiRl8fSUA6I3difvun3pK1dvfvQ9/86qzx+EexB+6h9+6OhWu33p0nb1g3q6U4hWXQgCkAOF1nR6NR8EIL1bQtHHReQUtc3V0KJsJFeSHlWGAtuE6enhI+msmCcdsgFLn6gG0fuZDgX8EEfSo1btrpiR1TxbCPhFny8AXaENMCZQwM/o5nd94zD4a6h5xyh+AymGw24FCnbnFf/lBoaJhYdPuhVKJRJJr8jw8NhLXB1W7/gi5v2Orz2nELFXchymbcLdu28Rn/MqVonc/6VQUKER6TNq2++O2radvl77wusPb0ANNihwQ3HBU1Y7EQt9Tz8KilurbEYhOV0nGk7XQkaptaAlQjq7Vlb1sreiM15N5CO+YCvp3adkW6YrZQzO/kjWVV+XngO/8QVjy5nySoJf4ZyHqLk4T3g6NWVGWONVzUwzBRkFdOIaZF5yIN0SRQBp8jsPPX/pyqXnb/zR45f+zHMv37NbcR4EAKr47d995NnnXn72G5cuvNyGTwFNZN18LnSTAmRTNPE5plA/H+Ke+rqZX6i9+XXFYw6oySFUHXek8yllycTPMd3dRdSVmfPXmiUS+XyKN8ILTBGa1tuo/lr4CYYBP1XZIIsCtMNiXWFWG/e2An2SPi7qnqADoQ1y72jhVKFpD4XcGiRxq5sgdq5ky9pXMeUK00tBG2penNrBnN+YHgzp5C0X0VvqOyD7FvHNRiH6xPvBMnaQV+COYlyYgaA02WZTIkbSx5pkKhMpPfJ09blnB78VUOywtSvy0D+79xbcNwTynBzhqKFt5EFJ4Y52jqQQYwlwtKq35SI75N4hmPZrcq5DSjdW/xpAnRUOaPkFhyXl2dnp3EdgArjAJajBrhvOt6eMreiMlhKCsbIwZGF+H6jirmMDezYtBd/HYYghqInjzIpZEiVBB6KTWJQEbYZ0JMoDKGRYaWTkbcAr118+d+6R577x6x86/s73nrzjSTyJB+FehN/+7GP/2kee/52fe7ShSdsgogLZ0A9O2s6GzVbfg9j6NZ4mv0XtSJOdDlSBe2PM51rz+hC1NeES3MXA7HxF56ESvAiUYKtnLDkGOiwCSZdE9gT4HVLx60XNjr6qZESSGjPlRxHxBV0ABEbE/EYr2ogbO6rZg9wyZlsIv4Lzq3zoZlLJiGoEAb/ZFyzCriHsiLpnQAPs2diQvTS4JnwSx1M2iZdKUMVAGbmqGzXB27UJN682mSWrI9ca1CBnTe70Pk8gcukDOHlhm0jvQVi04zWEH8MXBacnOM4MFxdypH9y9NA5FIspkelEhmzPOHiSRcffmL/2tJAtuTlZOWMCinuK0yAT88EQPgOSeK5OiCBX+1A8HW+Z+awIauklZaTPp0jyBWjjP3GayqES241CnaHAhZ/9FcRKXZx3tX2ThDDU48XOQTQDc4yDDwN8dM2iT7ywv3F5t52Tz7zwj/EgvIXh05/+2PWXX7x45RvPfrXJ8Ri+cU6kHxhpNkkanQehkykianfV0nEViPhhELsTLPb75vMpTuD8gwBxCiBd3jVAxGDrk5AAMs09TemuXaqj0pSXpnSiSXEdiyYtBVNN1g20zqx8GS6Q2bwxtKZAzYBRb+BwvZ7PrZCyNz50o1d3qmh+QkTY68Ip986/a/om6bbynGsvUE2HU7rzB990Hrdu2AVi6js4FOkd5VBjH02D71L1PqpIKB2LHf1PIjN9WcYHTmlSLUI8opFbhfJCaPNw29r5y+3cN5/KJ/+EWDggOD3FMcbNI0Cofw5rU8dMVnlTih7gz/jgMPJw/gUrLAo6HMZrkf2FY927ydw5SFSyvz2ZvEmh1K2mcHVzfNgSJKZqecfhnzJFUhGWFAYOLaWNJeXTnGsrC6Y+guJ5eT0lvhSi5mI5+HqNlWCvNcrS3K0bzEoE8vxjR8e636P9uUf+7d/8+gpVN/AAACAASURBVC/gQXhLwk/91Iee//rzjz3y2B999SXZ0YfdY4UBWzdcyDiZMvynbTNA7NqGIcL53VB45gp5ZgvYmdTnuBgPoE58/ycMFWZNSauJdnVo/vZlMX4qT9IImhbuZMkwcLAMjnyMQLrNQHQsOS9RnflQsSYyk3nDEEMbNLyz0GGEO2OGMSAsB4FCCHO4bwTduGVOoIpkcvCtFvf6dO+QjZ6GZaKNwemc93bnN3uM9lz7UgqZRuCXf5gthGvoey7wxhrg8G7kuGMOQ29VVTh9gh006qweSNJVLjyj4f7U29Xjh2/dfEU++TMHZsxbGg7Cqlcb/gae3o8FsTwDchBtaE05aLc4HHd6PZTOnCebwSH+M8+zrBdUczce8E/Orvlq83JnRnBAvjKkFEc/5zs2dLZeTNaOOX0rFbafG1kjljVRYNg2uLZEn9OrscRfFkAEiJQw+wamGOLzwMlYN76v0Ab5vgrsf2P/pjuVyh7Y35bT2+3mzc88+K79mxx+5mc+vKnqtsn53XjpN5NGvJKPdB03l0t6FPaGYfAYQprNJIJu4VibN7C8y9zjGJMqJTpULtz41o2Yk5qJPV42523SSv4JoskmEPZ+sopgghSx4+R3RYx8o7Las/hCNEVLnhyKMD/0RH/7tzOfMhK7wvb7y+2bat2ioA447MYL93CkazbqFR37JnH3xnTBRrKF9K+fSFwEEpaPXDG2XsT95SKqjHXioO9wsAU2A5UhxuhS89GTETcBKcmHw28yTOOnaTaUh5E502QE6k9aU9Vzl85dlM/8zwuOb3l4w9xWBbgIfTm6n8NrOK4ysUhxzemMJxbpXBbR8CG5swJ5cVLaVK9lGxfM7lRc5tBK0yXNx/RTapfyLrQTd0qdmPT3u3z43ys95KJyw2sXmCykdKaXsXVCL1lBHP+QAsghi9ohLMme4ZLdIYi0xCruDQk1VFOMuUJ2srXd7qWbevXqd5//4d/42v+1qNOD8EaEn/7p79p032TbHx+5IAag5vaotmHR6Yf7Z6Np22ea9PUtvrnNon0Qb4LW3TrShRVGk+lHoPRw+GBiC4s99bSM7pRO60UJUSHaNxPWnwzUQcvU68YKD/z2TC/f6qqUzrlI9mlwvZ79OVz3L45OhHXEI7xHY7YKdgKNvNkPY8v81c0PwL5lJ1A++1rcMgSA+h6NepaUMS7bcBuMd3X8J6Xf4oULktJ58N04B55QfTRYU5U5U4HHQqsYyY1bl453t+8TtIE3EHAcA69gm69bmFT1GaYOHslADKstkpnVjDbKzzuo+TMeTyM/08744xDlMiyITfera+W7AzQjt0S/uUhOUKMTUDrKWSEX8Q4BilxMTY1lOIEJ63+zKbh0tGaFr1/U3a3VacPbyhE/zi1WQXhEirKZXwrdkGHUZtpImfVIdvrEOxWnxyfyfZd/6NyN0weepG9s+MmffL/sjk+306N2NOyjfa5sEAGar4BOLuNQSp8YW7+7WSUwh89L36krQATSc4Sczzd3DRYGWkYoUAPxDuKbNl6c2oHr8TpDe4ZRBbp0xtfSeJQXltBaoVU3pqgrJkJcQ/ePmpJ/SOwvaVZ7tqR8mXZ4AcIN45iugj7G5nAhYEFXvbTT4Y6ZbCEYLlt8adiIJK1fDRjFnVNz0XsJEKP5HEpGLYmG8U2/9JOaTBsuRE9bKqoaTQBXTKloBahdY9BpagnNIg+OmcMHWcdrUdGuTh9zBf6CLLKdk1u39+dx34QKyF9P+Gv4kt3tByzU/NqHdFJUTqn2QIn47Dj/PDv7ksP654psuUtSUg46jaJuqSx5Kuh7s/x0inuL5rxRlj2a3UgPbbh0wbMosRYnU0r9D52VFwF++3QLL8X9kdAQiC9MdyAlXLN4Wr3wlGhMaKctFXQgwrkEDU2v/PHNkyvnZHf8y9/4P/EgvBHhp3/6u05PT/f7V9q5S822UWxfwzZQmpojJ3uGAtK/E9tdRKfvuyK8O/1u8thV6WwBcEraBFmlC80oj5uc98TIRbDXOJPFwmBE4gbQNDeq8FFFTgdzYgICHBGXko+f+rKTOJASl5HDDBgA4sOw40BHvfxbl1ebZwdSf6oZUjDZlsn2Iv1uDM7Olo89WUr8WvThXwL74jzdZFodRVv1OHHk0TtnFE3+HC66yLYRthD/CTBGcfzneJe3w2hEjfuEP2PwFrniaf+16SZNr/6r/31Bf4/CG3kTiIbXwuKhFtqgq/Sa4q7O0xPOq0jJecNFV2R3CHogfjjx7nmDX4j494oJIbdCm7J73zJ9ice0lXQgL1hZOr8K1aogutRyTYuAKBHRAPGS6sPgntYeidOQ4/kFwWHDqIZL1ipbDdzIlGhWjoj7a0Js9ogK5OY7Lx7fakdoP3Llxx66fvzgTtLXEz7xiY+f3v6a7l8+OroBXPFbnwCMEXcL3Sbaspw1b2lV9/2UMcGUDRvGip8C/eUvPIIUGu/+PIVdwBSzXEz+MC3wipAuq9w9gkBG/GsvoFSEaCHyUDFB7QxQijhWDyQDuOYDt8KwCPtes+L085/0lu8KNawFBB004Qk3WhgWIetIWA4E6sqeD6pQ3B08fZtDTYt7NZB5wlME49NrXGfyS90w7saIRgF+BYjDiy3fw+H9AOpw5Q2UhDzItkED4eNVhrxIUpo1JkinDDx5bR6KoqFt231xGtbDjK9eV/hu/PG7caOwnXdVMKGEmZitFBlwHIxbzB+V7Ew5Z5wflXTMNoalBeJMwwbXrZxEXXzOjblN6TjkwjkZOaq1IxszZmsHzN+i8NyssXTeVaJ6zAfBR1W8P4OYJKL2suK9bHAGLU2ovTL4irOIJjjCuKSTBabxC9HVN1EsrwjxjJ8yTrP43/f+0cWnLp//Y1x+5sa7gWt4EF5NUMVnPvPur331HS++9OFb139XdwqBtA0SVoSFcaK5kSNcR5lgWCyAkegRdxQ1tmN8m4GO5HZKWprTkevmBYHOKzoBEHX2OAwGZQtHOG0OWOtPUiQa5RVjgpKL7PYOvbKdgzL5wXNPdPoOAkBIotMQJrDbSxHmDU1umGTJEGj9apoosDW/dNzvFZUENSSZIhZ+oPYRuDi9Qp92U/Ng3RNPNfyhVC5VbHizqrmYsPdJfMiNJNZoOwiFWG8oyzByzBiTxferOeQjshLZYkOlKNiJiQBNRKGXP/e/4X4Kr/dq8xKu4/gf4v02dVXr0VN0TUnqXzlGpEqxssOSWBUOpJtx93AqV/HsXGkuTE5iBq4P5s1vKIvSC5OZoVjR6Sm9RYkkPrXOSQUnJkItaqUOAqHEbgK3L3hGuox0ooQRSTwdjhOu3/3MSLROMqUQQghfC4YHpf6j2NgqAf/bZBQB4wBmxR6pron6WD3z7lfOXX7xmRvv/uYrv/ruq99eh+5BOBx+4ic++k//8Qc++tE//NIfHN988fObQOllUXWIX1/PauJb08siVEfGSN9c0JP4demf3n2Bnt1ff3t6euc+EHf+6Wm+OhOeIplt0A/FQemmoQt/+y9cI11l0n/lJzdnWzUtfBGYkg+bdJpGX2SljLQDYhYCyZwRitzT9/ZFePXLPGwjg7+INhJbsqAEdpntE+Pq7vHIz8062iAwwcYV5Vzs/KHUhGX3bjm+l4m54aQ9tSK6OjPZmhZTjdchcfPv5eau5qrmBmLTbVMSXPdLeMMrpP8m/uhRvAI0eyFOT2dIofkngMkyEe/B9lMLGf2s8ZkS2S1jVcqYfat02KNyYLU6c6zMFcx56cOxddibTAiLUjw9LBz5kVMeNHJQHZKHR3SLLK/tyin1HCz/B2Cju8I4HfXEmL3q0YvYaBSZg0defy9kAwbifY3eMhOZWInuI6qePXlywCkGscEWgzwC0XZT9DNf+fnveuJ73vfIuz711KfwIBwO167hypV3Xzh35fj8Qxeabl3tiLlouB9GceAgM0b15Ohvly17bxTzhkd8nngpMI9UCe8KuNFi0A8CA57JPkETlff1qkUkT8jk2MHmDXg77Cn9S+l8ijIrk7Dc2aoi9vRizIZFSU/HZfC9Jm6ZUOOpxnMjG4Op/0Rpx0lc38dNXxpHYe1waXYOradem+z96ZTdzRujOHMr8dvAXPf70dxODKVW8PViowi48Wajwy9qGdXpTbvDZCEI56WdLJc9bOQQxGkpDzFtUhjCakU80QtUdwrVq0/91MToHoc3/Gsu8gS+cDROrHg42100R2suzfQ6ZWAocFfhbNJDT/UONHLoCe3Pakp2DWoxOuMj8XjMdKzSE2dJs9WFSo9zcXH+hZkIaf7+dGqSCPa8ZLx6hYwKLa3up3zVNDsLZa+kFEYc3EzM13aNOtRvrQBQs3NErxIf8w8l64rDDv/JFo6wxIheFPzF9/y7D106ufWi/sCVH9brJw/OsCzDJ/67731u/9Vnrz919d0fPa/bZl9/B/q6lfwlFE1zHGP623klXgrdwyOfUumzW3OklxRB1P8fSxBpxopN0hBdAqiOEy79oel0dd3i807N1kYQIS0uL03qqksrAIxMOtQtvGBgxvqKFjrrtkIDjLcbIG0EoJ4FzbAD9j7taIMozVgSr+buyaH9kHNn1YxPOFLEZscoyw0DU3PS2z+Zrzxx9CxzcGKMCvB5Xa8M/+yHVvjRyCg1cbO+Hb3nvc39b0OZIIjkpzT2POn6b/XXnUnQTvQbRE63N163vxHhja/UEXB7yOglFFgjBorNBOXREois2LEqr1RyqKCJRmytxxGlmecZiGd6UEAAiw4XnKXC88yCiytd04hxd1fQgnvEEIYSx4U8S9oBLRaKeFUPVDEdxXMBrfE6Vl7TvBJJ9/Ar3+Y1p56rlkNCIU2sRIYahCcsMrVXEiSJvRzO2AQv3zre7U71+iuPPfLu/7T9Z+99/p3XHjh2WPiJn/go9nJ9f/o43nH8+CNtv20C6SiBTv6BfT9HYPxBP8MXq0NWHZNRVNW5MOYwaRFFYPDcxtlq9Yk85pEldCYJHJW9SFcjrDwUAXEXqxvOwQXkjLAzeiEGNH0rLrGuUlsyitBw46mrQLdqEOdogtBP16bkLFmyuN5Vsn84TDHYYX4hdvVnxwddqKhdETtvXgSeICdW16u++ZIARNkrITg171wQekjfju9VhVZswRBqs+4tKIQHMUG93J/waYyUJU0ZkMA0Dk0P0yuAI2ybyJXP/6+4/8IbDzh+Fh/4UXxBkq+Gh7WpI/6JnwkK6pxhhDMgxRn0kevugcKBcnEQZx7kzM1ZIiGYaIluobinl+mmxI4r4MDCBXZwEIiiyTheBJeUqyY70wRQMKwyGyUqUjWcbVTYIIUzYdQ0BkgYBQDjs50BCMB8oiSMFwVzxUhKQ0yrOMhg/OFYZ/LhQJg2CI/0ftx2x+29D9+8cPrep975S4/82ofaR556/rP40x2uXcPD595zcv368ZUrp1t78fhEBibAEOKMKcmKoKYkdahDxxRE0JkAMd8Dc3ZUzLl8TQjcNsELyB6RReSQhcNDIGk4I8lLsFM1pVxZk9Rpnmc7FpAiEoXqH7WoeGLURylvQBDhV2WnFJjRArZkWXNvhpXKkQ3XxN3hAJbROShngV1fEedW4hRJcV9QVIiwDzyhfhOXMk0+0tKZ+KlaNr1spQmU9wAoEaoPXS7S0RIBlNSxATt8VscA8dQVmtqo8ytS+q5Qm5aCjf2G1hb+DPdFeFPMLgJsk7o9ZOqgmM6Pyo9Zh58JC+YwI55Xl/2OiRMuibQzHq1SZPUUJNWE6Fh/e1cHZDHTBaeAzBsZxBgnKpL5N7p7YzPyss+SQLlJ5y1zTbBj1DKq1mtU4IIJdcFYxMkE4tDBU2M1+3o0YEE4wxZuQhTDfZQzBeQQhNtHpz45uf0r3/ob546vPPXUZ7/7Xf/Gex9+989/7ufxpy+o4v/51fd96Yvb73z+mW85/+e3V1RNTQ0CiKga0BDZVFt42ACOriUhAEceQ4v7YuGJ7NMnCNSnleNVNeC5AQ3CkMJLVK0Tx3QFJeafSojAJ33CRXk524JIOLr2ZrK9RU0aLSLvg2R7oFrBWo3QfEZJjXR8gFCx6fhJfNeNz6eQQ4NvYcSVX6TytVklXbVj7G4k0CBRyUAPdGDE4Ut3a92oFP+pSOYN8/NIXpbeIWzDsAoou2jQU6W9pJweR+jOxhwlrpoEHE+Qqm1KihvkYjJ2aSm7tl340v1o3sCBaf4GhB/C5xp2foT+Tidj06/p8oy7/Vny5nJ1+pmOvyLv1BzwKuWfca+X0See9jX2Q06jieYQWU5fn8I9/BN85FVtiZezuLWI6ubpDZ+PwpZCsxetFA7g9GzSVcQLV1+1yW/UKGmZxo1FpvH9lZMc+iYaHXCBkIWhCo28drJl/C8OusgcJwIRQVMVaefOnZ6cHOnWsG+/+OU/RTd2/PiP/+i3f+APfuSv/8v/6W9/35GcbLvW0I+8kk9o9740d1EB0MbnUbJnKBHHW3mkhJeomMIUB5ujCMD4OEgdaNHmmJ+YhXmqAuV0LhyVBjjlr6vYNJZClh1RbXKOEPuGdZYyVXCbUHWum68YR9qj6UbLS8fq4p1qQlECWzhoMIItAw6DAsPlgrYwJE6o8n1fxYGUHEUBpCvCuiuojG/Juv+phjuqHZG1I7UaDqejSvO1YLka0brykVuzcMi+xbdkESYTusEd1i3osMmRnyE2V34GZFWi/1m2xaD6bw50+rpQwl+DbGgFV472p9e/ePy1J3FfhjcLcHwXnnkCL1zApXnP4k6mjsAEWgk4RQ/Qx0gefooMDhY/zzzGwqiiql57tPxy28FcBUysaIC7AhmLXPZzm74StxGSGNV2ENCNgwyD/AyLynagXEsfl4r6S5bxJxQi6PdUswyjTnbxWcGH+pUFIcrF/sAvH+B7NWyJ+z4Io40BTToLtcTQLq3AC8MWRikDx4j/HBz09tHueL+TbbfhZ7/4s/gTHf7OtY9JO9Hj3f7y5XM3X5AGkT3GuWkHECrNEQPG+RSoNP8emwGIPo4tDq0AkGYjbmSLmzYIUsDv7QBzNgVrFXCe/IiBgnMekyo0di9Oooa24VOuNx3FdYQhBATcfZYRifqqWaIQyiLle2w9n1n16j0cGu3oS0GpEGfCZ1J4H4EtHHQzWACOjjZc/W+2UgNhhJKWfLNnMpP09H2L0yUVE8ThlETA/qdKd2/QydV6pZhqoJB91BaOmRzBcJ+Y7US2ZEchC5MOedO7nbcEx3z0nZculjQIEthUNoDEcEJtE9DIbA6r4uof/i945M/J138T92V4swDH+/HsF/HOH8HvT0/Kpoamf1K0QgRNBHf4abGD3HJKpy/x9U8FQvVOcGEFQTQzKcgAZyKGRFPUP+ctWbA2n2x8HNdoKEs1SyzruRmeULo6AIlhGCSoh8OGYRWzJUQmDUW8c7EoLUwGkhhS3fnkV0mhxB4Rk9AFdgDKkAIhsxlbYP5JcZTLQyBooscnerprKrKhfeqpP4HWjh+/9hdERGQn2/Hu+CakYaeGJ5IdQkSRLRPi325tK6sG62yBBJhwo4UmVjDOI2Ks4Bwib6lJoBxQPL1Z0lxiK1pkyZYYJBtJtcn1H3Q+JZgvsQVJ6sjijXXgsrJzUL0C1VMLKllcyNEXcTmxslkdXK+bQ2i6biuu9so3l7udoOv4ng4yeGzx9TW6KMyU+jjy2uxjsPYzIY8oGvsCOOCOIJJwg5tGvGK217P5de9e89wbGwEO9x3S1NtDyEFjpJAlX5kKefxoDmieAWNQrTzZn28XXvjC+Zd+4c3S6687vFlHZ76Id34vnm7YNrpb7FVurPQgK7L6cw53pL97hoceaYrIqvI9yCItZo16XKKLyoRRev+JFMn+p/bU05zcH8nER6IC40XfUUiqhm9LqjSzJAKLky8NspH7k3I1LBKfwJ0Whgjct8pfyzgu5Jc19L230RiqReh7sNa6UqZtvXL28bZArCWUhLNKyMPRRiiJXrmTc62p7rXtdtuPvec/kFty9Bz+ZNyM/j/+rb+kR9BNt3bamrbjk012w19TVEPJKnV6uIUCNqQIN1J36qQpVOfPGEdBeHvA3yO9qKGJHUwMBhj+GfbSD3tbBBUEmkcGGuI91ZdOrAnLYBOST9O0eUXnt15Ktmm1SJ/D2CH0XsnyyFLoxbhHlFOydiwHZRltkFvGqIsBC79INPwh2CXTXUMsuzuEDkdLTt8w7gdLzptC3GCGEIniuGilood7aYvEzdtiRYDo2cmDj71suQlKDhxbbqbQQKj1JBxzmCqcCcoEEVo0BZsmPUNrAtCGh//ga688/K77Fm3gzQMcgHw7vvwybr2Ii/33pLYPoo0DCl4OPnkT4MjhCtxVNSRNqkpve3qu+8sMAmLfDy6SiXPI1gxB+KmXm8QosWVurlxdoPcfU8XMMjz51EkYgbTFq56XTjVdyM8iZ0VMGKAm+6qlxZh0vHUL1Y0JBnSwv4M4GzzUCFUMoznI4NdQ4uW5R4JYi/sL9PHRHortajv/FZx+4PSvPv5Xn3nxmW/c/sYXv/jFqZX3dbh2DRdf/tBOLp7Td+x3J7tT1QvtqB1D+00LAFy8FqmpMQcU2WlUhCc1HCho7FLAMOgQG5alLxSDEQZBkGDHYkXAkA0CzoqVW86/J1bM7QD/mICRRvglyqQpHEvuMLZYpA8+DoF4ExK0KVRtHiWF79IYT30bJTt1WuXjvAZp37iW1OCIItDDJsFnJDZ3Mk2eoYE/WvLGUFBxjAAYfFh8HxxS6Rshj9LMjdvrKGdyHZ1BCeg2Dh9f69sCL7r0rMTLaYsFBp5+jpmhAhG9dfnihW+8vJoo90t4Ey8HuYzjD+A7fxW/t1LS6/OxhzT5XQCCVwFH7hheTXEJNNjaZwXPmENy/hlDcDM2nmKZRpVoKUsShbkyUsgYCBxqNT2q3StotmXjxQG2/yGFvqIJN8supKgt3NkK4q+8cDSQM1LhGYv4VktKdLSRE/v9DDEeBFskM+TsiSBDELGRkLad/llAsNPdo+959Lee/K3v//BffPSRx1+8+OKTTz459cR9FBR48mPvf/6xK797enTz0m8+9tyPypWbaHK6Q9P+NXlRhWyqItLK1B6TQX0D2/92RbopmujWt0XMBGJTe0jTVqSyGhhRbAIZV4cJgwYgjICdQ18TPiraZU43qvVhN/6k4M3k5pOaJ55F+aiJl97D5u8XxmFaaUUu1MQVZTxlSz5ML3q8QB3afAldCKvVJpFlyz6SrHH5r2EF9qIAu5Ei1ycwwYiLfXc+7nffCK8QsW6xUcKOIHS/OIEGuH0i77Y4QcJAXBCbTwxP9ES48SYf1vW/Qu3VOU59voAmd4IXZyIPUb3y7HO3L1+U+9t6upzVb0y4Bv0tfOEFyLkw0QNJAac0nVJ6RNcphwg6q7OfgtZ99eRA8ldwVjNx+FrOnhywjQmNn/7yxcSVw4F4oTkrixW6rR6hn1XJTqNdNB/kFv9J8jiZT7gYWYhVwxZRbeuK5LQxudH7YvVNaX+P669mFs+vchkNsEuHCsL9wrN0HUHeG2qbJ+G6KOYK2vOyDwcMm9D1504QfqbNivDE1rqHx+k5XHn6sacffflhuSV/8PUvf/2lrz/1/FO4b8K1a9eObz/d9tc/8IXP/0ef+H//q2sfu3Dz6PLuRMlPQuwL8hFh54zkIpocNYq7Rno0mKeDHmIXmefDLPZUspPp5LoxUhqcZiAErgnge3nZXcPqk1LcSkClBMw0VS+jo0ahBFcmp41kGYlyMSUyrtWwf4y1YhWxZTHWoveNa8FYCh00mO60pTndIjq5lNIXWIB9gyEPOsbiBo905cZAJHupHqP2tTa6mJw9PASafTvcUTQicbyFvTrgt5jX0geSCMvK3mBQUCIJrfAsgUOWIaNWUsqGIOYdSzgbTdNUPmY88EpzI1EOjbaX/W7brr74wp9ewAHgY/gN4OvHeC+vmlflyZHpZwQATIhkBRHip8UOAo58WmTJzTX3DDhgkeJVikzgPwtKKFp/dgstNdcMLJCzz5gAdBSWHhHaWDEJwJGfbrPzLL1AdeItAYvMylcqPxX+GdLRN/5Nc5S4zTB+z/TFLQYZHFgE2jBJHJsmJBUGgHAwASAfdTFEwmTFsZQ8PDgLpTdsJxfb9a9e/9RTn/qh7/iBD55+8NzNi48/8/i9urT0Ex//+POXTm4f769fvXj74Y9cvv6rordFj9rRXqCyC908Wt36CZSF+6f/pS++lr+GTphhABorq5kjaklPvp/9FAxAcCFgwfiEigMRghQZ2YDVeZlgzodTECWaySshD8B8WpeIgaWwZIKeogeeikGERJldrkEqTRmCxDoTkKOl2uaF0HUajkUMNwwm7OGRTpTY8ZOutqHgrZbNdX/2J4WZVbaG+LQKbalsY6NEtkA2dLoEkSuhlnySZU+Aw8+wgI+rBI4xAwwdi+3dWG0wgDuN2uBTV48Oh/0UohlDR4OIREcTLM2egjnkxoULu9Pb73jux3F/hzcbcHz6HL4JOO4/Sd16mPdWEs2ENvzp4udMTynzzwWeKAQT/5Sy+n6bZ2SdzUyK+WTLjwqYWGKOmX6JD8AnUKbjLfnDbFIIRtGpJgmUOJ+cmKEDAH9pKs2czqH4O1fqrmzA0Bo3W0hYMpBfSW2V2v9CAGdDhQoMkfBLqls4EvECXohEQQ5BYLYNWGIz+NKIpj/aiahsgiM9OgEuftuvfduz3/GFk6s3Ti7JdoxXHsUnP/nmvrhcu/ax3fXjdiLtVrt40t7z4uXfe+JlnN/v9vt2tDWM2zLGUVK2W/Tmi0ojM8bifMohI4chPOaMeDqmwShlnT6GTNIx15WFwz5kL0NkC325nmeOz4SYDAxHphRPzOdg0RdFBzpdMdwl4GCnjcgyp6j98i2d4sBhBMkmqFF9+PrzM66uRGP5hseGOGXn5kc5ZvOGEsjoPA0cSLoYgw68DOBibI2omAAAIABJREFUH0flz9bz19202DncM4NwDN/Y4RhoI57FvqLkbtKPyajVx9049glkkGyzn8LyPr06oQ4KHIJMaINsGzRaeaTTU9nj9jm5fe78Nz37t3F/hzcXcAD4UXzpCMe3cHOyTPQfOuVwZNCXD2eZrRHpKTF0JulpJpjpZwtEKa4QayY7tLfC6hYHniY+U7pOhXL2s40cmpFBZ1LMGwtrTUIJss38cwV8eaXuPWQ7meQf04OkHQB6O4tElpS8Gnk/JbK3tFFyCG04vnFdYhsxFWREdjZyoMQdjgDSJnq3lxAQGZRAE23Qhtb2eOHP4PJz2/HpBpULX3v46KWLD3/5Dfhiyyc+/vHnj7bbu/1LR6doe72wP33n7fPPXt7tt9PjfdtEjhTYrG7amsouA4VAG+O7r27JoO2VMCfw7V5hVHDbRv1mbNpqGR3O8AWGEsRmhdtREKAEgRcrEAFSQwJwUC5SywER0t7KnIJoQiSaX0sCDTOAKBGZEktKWRb+Z14rGYKw2ovDJgoGHLGA4nAH6ebeT4fNG2zVGEwGFGiLizcGRoFo442VQAx7+37sZtBnmwGH388xsgCx25INKsbTNlmM0uBOOsFrniLeNKSOCkr2mnPJFLKfkZ8NqZYxPYg2XED52Pujm+f3xyfy6Nf/Du778KZ/Ue4Ix7fwiql95Ue6IFdOL3hCZ9IzU+5IcHY4m5ue9ZCDyPR4SrFJF8mLXD5nlRgIzVAJSNQ5eI8xt87EoDgLthJL/e86VEuDBegXRM8tp4UkZi8B0D0ylrQlxVDCika85iYXfX0bJugK3bWARipM40AJIXA7FYtvz6aIUB0CbWAcPxqKzB5nNZFaXXlqb7NoEwX2R3r1Gd3tIBAcby8/cv19/9+3vvDdX/jPH/v3e3Gyk7bbWtvahqNHH92dv3T8Le+8du1a5/mxj3zk8YcufeRb3qOySWtQNNn69seX9JVvvX3hqeOtNd1D2u12/pkLkP3WtrZBRLGpNB7xPhQqQ0iaBO2Vj2kyqHXMQCMX8mIag2FKcrRZxwRTQccNQe+rI/pQYx55NI7XmqTuSGDiJmojHN6pxF5CUZdWnZ2i0RF+rnfQbAwwUu557XEjq1XDLRnjJ3sdJjP+6Ft+pUZGJx4vt1fpQFyOFUb9g9IQCfygSnM4AgcZEelsp8vCwwciu2HGlaBhYDDnDKf0mjgHOi7LVg2vgz8dpXC3mCdHZ+i5NKAGlbj6u0X38nDUacKnVHjaYJpT4ucQTPWJfU1qPB0TYS9yfBsn5/Z4O4SFEHzDww/i8xu2Y+xYh2YwMdIO6O0uM8roHXLdgM2aQ3jFF+jdGDBKcfOjiE+uEl4TTznEf7Zn9HS+rrRsvuCwW6jHy+XrG0opyVE0GHJBwHzZeeHJm8aUNyXSU0lkyS6S9lYkC0UnmKSmgQxPdIls6EH8/S4hALdtpH0WJQBiPhyRxXCGmyt8DyXewokgUsiHtGUmjcgs0gTdHWGgim4gaRCoiMjO0gFp2+7cUZNXABzdvHDxL33nzd99artxXaBPP/e1n/mVX7n28Y/fwvXzR0cn2toOu9M9dipHKhvQRAXStAlENmnmmCnmMGE2g2bGCTNUEIHT04ZL2XmBaIqDfDKYg+1HDIcMR220aeK7MLEP4jyz4QSU7hMANlLg4tzBQgCfJ5JSaDqZxjjLwhHFeUaapf6HI3RnDCLIQXpfEAwgMkrmp7S87JFvkQxAYKvW7AdqCxQgGr8yy5eyyH62CvDGSvayZG8JzYYQHTsp1VF0P4og3GBQaU8OGZvgNLuG7KVXHnyqxY0i+2zzUEMbe0c8fuc6wlWlmII2xE8Hxj4cRWsxKExjjDR4lAE0A2v+3rjWAH34xf8Bb4fwpls4AGzYjsahNCA6MqELrZnSk/mpHvypd2LodOllaMUwCMrTsBAEWSFI8wVgc5s/FJqGlT5TIlvr5srkiqeKwKRLskJIoKIug5RkVOIj5XfmSfVMEF1SokXEf0RGe+B81Jde5q/+UyKv+LzqK94tGoQPen36/R0qAT6ahBpogRhyO0vElYjhCfdIlREfnTnQQ1YQZmuyGopANH0W1zwVsAhq+TerR1NAttt73R2J6OmF0+u//lsQbQ1o8r7HH/9bf/Nv3Nrfhpw73XdTNbaGJqKbuG6xd/I+I6x+Pll4Zzomfl8Uw4omnK4+vGkCp2lva06jVLGJ4dYIN4mo8HPLRxMuM0iLK70g2jpOrZhWISWKzWUgLzJjy7M4CqJJ6hre+cCYZRjhTSGirImmpW+ayN+kRUafQ3xZEETvoxMGwfi0QH2DdyQRVgRUMrt/EwMKUHYqGmE+gXitiSeg8O/C+53oZDnosKAl5mG6sBTfQ1Gp1XajCLl6xJdjjVIdY7GNhNu1SarDllvnZDFSPgSSfhJ2GKQ2K82AoWN5j1mqdEeA6vhwn3b6hj0UkLhd8z4PbwXgeBIf/o/xh8/jxrY447rQcBSWiXcGE3fKMjMoivMuCZIunjS6YkyZrHQtr0RvsNhxy69QHK4QKG9S8KWiUxHlEZeb2uKrQZkktESXBxI1Z7NEkpC1ZMlEpIuThKYn6gVTBYy9ZaWlJsF5RAxMWGqBC85eHOVoaGL427WbK6yMgRXQsYbBi04vxp+OTQq1xI0Z0Tdk3qDGubUm9JVYPxgTEXRPyaGTVAyOpU0hdRiAPI8jaLS9/1QfEbV9HkA3YCfjc6/iOUcFXZtpV4TDfqwyOARkGPwaV8e7I9iN6zcCH4AqTiyHsk/ryIrSmI2MOZiDg14Ygg1mA1VIwF2r3mIBlgogmtuVAisk2i4BaZ+5BZwuJaI2+2IPxSd4r7Y1bDBpUTrCAdMsFnWzQDgdNknIM2PodQ1LgJ9nMWUcd4SPv8WRws0Ge+PMBflOCqGNUWhGAPEhWUW+ZoMWKMQrzBWAWj/sBTocYNMuUgEWDoxA+INff9TGwGUJzY2Ax2USCY+6i1VerIK+9kxInpzbtf328Iv/Pd4m4a0AHAAu4dyH8U2/hKdi/aV1tEYbdwksZrJ55VKYFvHr5m9sixmjENorjxHD1LWrE37bKtrY4s12RpJGP9PIwTVERi1znuYiJD/14tr8FBB20aC6OYYonaAzSPLmkuxcEAi1VeKhS0Te81bXIfYTfjiWoUlgiyiFKi9Bn8u1fs8Xn3tZ3KTYmsEirJnHJKEKOK7hMOaQ2LiQfmVRR6LNtTRcmXddvEk/6DHQRkG5ji3S7BYDGNqt3NrsfX8bLrf2Kh0TY+hbVevnjqKsOAdNm2MOrO0TxjPgUQI2iiaERUrVcz9q6V4dJjPu5TJKBqzOokG17ZLmKbSpPg5BVg9HBYMDGRWSszUoJeCOY4X8Ej/gBaMNV7HEyt01AP9eK3tgQOliDCslW02KKUISetiG7pdNoC3Y0sUbThaVrDYJ+i+7lchch2H2mMwYBYGxb8fyUUgaX2VZWM6zb8TVsshidSdhb3kVKtpOZTt625g38JYBjvfhsd/GHwC4a7Qxp869fkZYDhFzZWk1/73bgjWRiMHRyGHSUZazbBI5PmddzM9VGJSHQYYs+eYqicnjzRJdFi8ae+CpSLy4OlI5Q6n2/hEvdyY0TQ9n5bIza2XrZq8bqfOe3Y659r+hOgSs+9Wpxk9j7yol4QZrB4MAz7iUK3KgP0rzmWEUuZ423uh5FvlOT7Abtgi1DQqRghfzRhWXK1BV4XTWfnmaMEft72EigKp7nhIOqD8tZVM0kVgxgn5YeHyYrW8ZIO3gBFjp3WIE3m8bWTiWsMPeNwmeZTgyunrM4PGTEqwKYbKQ0e+h3QXAPox1NZAcWfRnprEG9hVgqJhhBGIijxRf+l5QJyDdWc0b2T900MDsB92o0DlvLc5rsNYvfqabLThN3mLhH2pk5OnZaIeFbBsF3/T/vPnJ1OHeo4i8va8qz1Vvq6+zgBHRvSu4VvoZPh/HT/XnvClok9Cz5NqM0VSPj03EI5FNH/3628a8gbcMcFyD/BA+u8PJHpckmS4WqlzX6brMMNHJYVWd6TLlSoLq4b8wieglpnSLwJAB6a11hVjUCeVa5nBW0ZNhpVvlmX+ahm7mEcBiKeh0YpAlYWl1sXNsUsjjWUNgHdbprkcjZ9KOSaubpnTcYwKYPTHcgIGCEkj+m/yIupihZeySpGboUHqAe4WJMzTBDKkvK1r5RNG5Veb6ao+mQZCSo+davo2Le0T6o2oLkUgXnnTU2Ih0qbqbpnDeIHAm4sNi/xCBuHB1nwjRgXFgziAKyAbHHKvdIUA74vVKDPMJoRBT/qPp6hEIsMXEGsdLyDMCqbjRCRJ1p67mrg9TXQq+SskUd5AmzePa4cViXxPpOERWlv6T9lMCMZSU+bjsqB6fNwmAIptjiIxaAh/4rRvsJ0E4JtxFs5do7NHET9FmB/OLWwZZMhyy7AsY4iab2IAYEpDo20Jmf9U3YryBLvIx5qb6aIb4n9YUaHSEp3cdcZqB2AS4rXJuLWDv2/AWAQ4ADSenOK/A2QagA2iDn/JPLU9WF3sUbwkGByXF/3YpFYkrQwXDjgQOeKNkVSLyTsoMFFJNaKKB6EPPHQIWEhIx9KjLMcMZrraBXBNDDCnEfIeJn3gidj7WeTQqP5hay1uW6TXi7hFl/fHKFQz5IHQCk1mxFiY/iQQUzKvUQcRQxsV3IJCHRKdFrhDkCaNYPF5hhMdjDoOrK4feESpU6CI3izCkeaEqcRvVKi/5W8D6jxGyZ3JfB+0fT0ELDS/DpJGn7gZt3r08kYVe1yxLH+5YTF2pGzraAIGGh21dhtoP8fq2y2aOpZqh0PB9cq8UMtLRKkCRU5aLB8k7+lCKNZk6PUDAtG4XQZY04tmN+fQKbrN7az6ZEedj49qu2YxhyIMTK0383Wh7RUHqnMBK7GI4q2xd4BA4pmnMGeqCjZCBQvu1pC5ycs2HLyokCLjrUn0sYgturNtJPtlkkqiYgRUrjuhpQqU4AFVl0R/po9FT19hTl0m39jiSh176bxdk93F46wDHP8K//jF8Pqfp6seqo0keZPoZAXiYUQXHZxghBDIS2VQZRjBYgYwhQa2aTs9Fl/qDNencpFwPDY0U89mL9mncvyO/kloCMTSg5LcBmvmIJsBVSF5Gi84ZGikcTSaHg0EWCs09IPiVkFEClnFW+b2Tw6zsqGI4IhDOgMmwUTeHBd66bOdIBFwTAhBuuvCtGW+9V8ka6A9Jo3Nj7b/ZVcV/qeEBn2UGEchtsyeq+2WOKTMSM8o8UBAfIhkFqvUGp2N0G0GH0UIdTiF2jMTb7JQYcl3DDkE7JgiyUDxFigd0cF+NcbBlXCoqUDbnjL7yR9ZSH3kbMrVe9fnpjRKevzqazz+RNKUvSF8PSy+cmHacMdNEqr8L+Pt0iltEaajL0/SWD8IfC4NH+rv1WsyHOGCRySTApg525wyrRj/j2jk0+JlbwAwJxH+DXQ/qBg/2RR3NST4okFSflDjFkyCcthwT1DCZYRtG8+AlxEtij+J5UjvZWhNKByvadnL69rh7g8NbBzh6aPl93cOyb+/yaSaTiJ6hsiOQoAzMAaR6iglsJfq5akk+FJBB0itkmNb4HUOSYqVsF3XoygEwzKFIbeEuSutiKqxvfHQtNWGLUfEtl9/7KnZMpqACUUcZrEwkNc8Vp9DAOiXL+CKpJUUIbSBymeJ0yEJ2DlMvRjOSxOJiXqKcPSi76Bol8lZOR0VWjYUjCHcjYgwpvWORODqbm+p1mJIB+PgU58rRw9qHpUyriEpBHgEOutZXbZ5evDsH5nAd6EXTnOlnWfpMCMbDFRUYmp6mgKOQQBXYBD6IgyHLdbtSLL9aGvzyBo9nYmePA2dY6QMZc30Eks6/IA4slOAWliItaoeXwaO0rk2NeExDXyKsDjH5+fjTup9ikQQXwjJBxK6hM9TYyDpSti2qp4jfaO67HnzZOZgneNsijBAsCzLA6g8YoPRH5R50FeGKQSJvcOBm0k9wTWqH80BTDaczhTLR1CyL0R+hyf62SNNHcL9fZD6HtxRwPIlv+yv4nFkRokeXEo5+L/pey79AFdYLzFFCoZk1OBiLlL9GfSiFOTjHMxxIS8XmtiatmtvmaoPZKQlmZyrKsspWl1+hwHWw+xkarVrnxLeTEbYwWS2WMctgZmG1Cg2zaP8yEfGC6XvpzoH0gP0mjW5ow9ttbhbi1ZZKGXw8SQFCJ/G0y3vfmRn94/Sxxy/urWLvu+K1GqrdGlowB4mkaC8Q1yovJzz1Evi8q7VBeQNhVNDpbeJAoLZvtbFryGCu6JeJ+ViZKldCKlFGpJhBwuqhNt+SzVFIhVt2QcAUmiADU+j43n1M8HHsBXyGljVVXZJq/qrFgKEDLdro2qxXWxwDJ6WJn344zJH6NCI+RJFT0iOlJVu8NwYZYUt/CtPozmG2Qyz+zpE4ukIpoZvT+RQGH+xIUdw44LrcsUtADWs1UlnhEQIDCtnEsuUTs8mYwWijgAnY7LU3A7WfPhSRq4weaacxvUQ0E/o8Wk49yYs0B1XsGvZ1u/vtEd5qCwcg8DeRw1gAZz7Nmj4I2RR7oOgilMvmiKeIK85pz4W5cR1JptsjqVWt1h36yd4YGtK0IgaQRveSGt0oWhWOcdiMc5s6oU/7Mn2TEM9dpKZePbnwjLi/PXF9xz5H6kdxVwygvmqTZg1PPK4u+9/5QhXDAUZs51asQYYQug0k45Ls7lniY8ujsyCEwRd5exFWE58SFeJU5hYzE4iQD2lFFXnM0shX9UZJk/4aJMLTbajRsVFFiGHsSqid6pAYFxOu8MOiYwPCLqTiDlKqsMBv9ugb86HLe2fN93AE5ggTiNUzNpt6tcOkIQD6WZiBma27bfSVfwJqfs+aOq83JX7wpCI280Bw13MHrKlpbAqNqed83tVqkoEIYNYa51YQBggfrG7jSCrfMYTzL8dSEnZJ6XVnJPDHKMKRgdj3TUZHUR3AOynsB5qgxvQzxifDESVp4fij9GGIXhcSvHBDcihNiehtHlMFQQyam4UyTcMqfdtp06aP4b/B2zC81YDjn+DbfhCfV+xJS62Dln/PCrxwSYqx5ku6/xCH+S8mEDPJyqgk710LUetUqxCd9qAUAd+qIIJa9LISq58+zf3NtbadN0Goo4rK3+Aandu3oE/9TOvQ4YL439HPhPZjKScDhuT6RH4ulA0bIQncYlHjZSeFgIjVSbR/0zzJGCgkfEuji/jliNLHKBDs8IxnzMZVSO9EzqwMx9CHAYNG1Wxyhowbc9t2Q5ihDOgQo2bKux9eNT48FuSo4Y6feXYLVVKVut27bhxRyYuPjYNlkYLgCNs8vHtlJrCzsqFJuH60iO2sB23CW8zvOi3LDlGxPKL9Cc3twnA0BdEJNYRmUsqnVhln5quEFa2t6gIpVvBiKGm679y9NQmCwCL8VbPpk2ZuZogUP6q6t4jSPV3ukKElS2NHjeQIQtnJ6XVCHkh2DmVb5LzaBBC3mmQg4pOEFzfmnzYSOvKlAc8kpBCoDgsDsaoo2ibb2+nuDQ5vvYWjT4PzO5ycASXORBlFyb1ayhkxVDxBIKMCBbJ/MKtDVRbUAjR2p0culmUhnimehI+maLWLgNRRqRbL1wOh0fUYIU2Jz+BhTXCFhKGiSt1MF9nrZLz42gW93iGIsyHC501C4QWzAB8J+thLdhfAo672V1xCmydpb48CLSyqIkKQxdrlcTG1qhCINISkD25kTB9qT+j2cgldGKUk1eiGjUGM6OExJHnWifeJk5ifrEENGtCh6X1W2lEQ31KxCZVkn4TsM78IHVPNNbpPCRm4pGmqzyCkhcOA2cCQt0KcH0+SJJ57gk8ln482dfkKEAH843DUTD85G/NdA5RzMaRmxhpwTWIcwsfWBzsgQg0O1nLL6Hn820c9RkCGIceNE9Zpo/4AYFYlNcOVI6ywPagr4Nh8SdYC0/eDj6nbTU1/o34elsHKOChLRos+kskywfBiYXsoH6olGFE6i9acZuQBW0kZ2pXxMIE1hIHNAOnj6XIFEQmxwXNiPYqgmZN+2hIaPwn6hGxNuuboRJu0i/ivp7LeHuGeAI6jHW5PcO61hSpBpvhMeUdWhx4VgnmHZdDMRhGjJMlIOsMMvn6oRJjjLPv7v3lmwg+bUC0DrIQmyK2YpNywc/AtSF4ZZFdQ04VpIVLF07iUkW6ZRRHxA224G8Hiw61mf4++is7PNQycwb1HZblKhhshSBGEoWL8J9FwIVZBpkHBVWacwTWxSpo/aRlta4Jhl6hMQK7AS1YljS7qA9Bs9A3xEObAZDUJyUf8ZZoPaio6WR2MapjxfRBBEn/gHm1meBloIwSsXcfBcjqgg/UZINAtXJCJiY43VLE7PNKioxGMivlhGuqe7vUUGs0nYEHY3jIfzzvJGx39uzDs+VPQKLH2cd2vVCgM66qPjls+Ak8OcwKA/j3icJxkx0+HIGSxgD9qhCr4G7B06kStkm60MFOEbH7NV0cGZqJgi0hvY3LqZMsKlzvZLbTPWYnppDQuMYtp0SNjLI2eDDIZU2VI1cAlwkN3hlYjYOFJsV4FmHxLuyyJVSAil3DhRE8OlPA2CPcAcDyJD/wwPtugJ9hNo+Pi5OywXM1C6nYWVTiwObKMMEHy6jBuknkWgevZCy8GGU7KuYZSXDWhBCXRG4LQJDFM0BZZxmU5HPFaiX8WrBgZyajTEG9w3LxDC43U6twfxVYBfrmsAGKeKCXuqoAwx4TVCFsAjkLQG5W2WtIo95Soj/VwFNoJxOi8e8UTEo3rfmMzBpNt6X0wYfWyn6EkJWwA5NuRxzpSJKpNM5a8MmMyKLRFKyA24oPMyvJBVx47v0tDrLrZ2XPYJNgrLvt8bHadOa2X0TVqozagAFe7V8pXD1llvBTrK3HVJUs9MBgqAj4i86JBjsWbYNti94RSuJw+omeoKZpqYyIMq0aefTrHmSD/pPMmDjsGz7SZkvFHgA/aB5lOqSRXD0YhMGAB/0u4hCPsSZqfyt6/ukLIw9GMU4YjKkMK5+YpknomVj/l9S5Vehr0eXkdDCR7K+zwnzI9SveAtVPclv05PT6zoPs63APAAaBBT9HmFyuscMQBAtbHrLCXDAoxiT+TixNAkUN/TS7C5f7qqq7ZfdUzugZNOGaqugOCqM/q5GqaxQLosENoFrpzVy86UCBA04k2r4NDnRw1nwSslrzcWUyH/N7ozWfzzGTDMFHsdknxQpMwCGLhvIQDRo8PxCY0BEIWhvxBljA/jKoOCZFGStR3VcyJgvpoiF6yKolXrViy/IG6lnJ8meWWK9RRL4MOwc66NOAC8TGjRf9UK11TFEugGzZiTyLsHD4cw+Eje1FYYl1xCFuL+jbRcB+RAiN45VEjx/AEMQC/HJ2aRjOkdBPPDgFGEWo7RJIo57xYIodDMokpjJ9Lh8pHIyK2ItlpNH2GHgYgPJJBSfLfpDd7MmbQ1RqIR3lrg/BBRFzfh93CvEDiU/XpW26d85ZpVGI/Jd200RBuJQ47yEbiFpRtbld011i4MRILacR9H68q8OzrsVxy8JFhWZcI+acueWyXcP5E94JrB/i/DcK9ARy/iO/8fvzOkVu9zgpJven6EdMsE/lZSV8zyWigogoXXWfUeamWCYgMxTDVZy7dmx6bCFZ6ZyLAppQX9I232HUcr3VzhwdOGts6ROVsYbLHS5y6rsRTii1078P6TuE9QkVoJaC607oXKgJincpspxcHljHst+Fqz4S17SMMeqv+8DDgGofiHx3Xu96+Gev3kg33Culxr5vGjolzyww1FZVeygc31lvJHchwHG/sxVjE5pSK9+hwqvBrxcUUnU0nDKSim50+DYagEjKgcbPH5leSFZ1tBH4ZF6eDYETGHGyRigMzNiNGchUAQqUaMa8w7w3wDlEel87AV6d3P0qoc4/7KWYYsTzIit+5PYV5BgqhbuCIe+LM1XRlzHunFZRAumPHZj4WFbLkCHiThVaqSwivKlxsZGsEX4juBCCe3lIlC4ra+Zf43qwvLEntwtSEGJUOs3h+2fgrb5OGRFmjhQg+pdMoj/XmJLSQO8Pd/vxtbOewO4v3fR/uDeAA8CyuXsVXH8ZVTzmkvc8kKDrvbhI9Pmv6+Wn8zZgDswTJvBYcDlQs2EhMQy8R0wTWmdJUlZDCafZhNp2OrXINSwUU9Ka0vNrcXNTokFFWfiSQhY/qOw3pcvqcileC6lk3XDRpR4TCZvnp504HhVARJOrcdBFio5i+xyffxKDDqJChE/b8MJAiI5dn8faqVczaFVqNYAccNIRSE6iQH0t/YzU/DNNHYclC7ro0eEJt5F613YrQx2IWBoBQArt8jlYYRoGDPAntLiAHVWdukX4lBuCuEw403G9YimlEo9OyyuTJTA5IPfvw5PA2Mrkvo8hOUyClDLjJGWm+2DGw+rBOKqSfI640XcpTElp9bNNRWJ84SLAjp8PwJul71qxF0ZptIJ03YRCQruugy8sjHQQOIkLIQKj+bGgpRdhGjJg0CoIJkXhc+eNwtuESXeRNpjFJC0UApO+kLEVIZJRpbBOrElg+zqmLnzYfLwEnaG9r8wbuIeB4CUefw0d/EJ+/C6QBnEVUtXgWtPxrqeaBbKhd5jyQhYVdtYLApjZbSkz+sO8F80lS2YXVvGVDcqy8+QYKcOUjzClEIreP+EszXzvV8BJV4untTR1yoLda6X8JYnsNzRLZGmL6lVKzhaPUoe9ZNAMT4+8QCbTEE9rIhfZiCxmJKBBv7zeIKT4xm0fSJTY3urKUaDSfzHRAoTIgTrxk2QAGDBlnNW1++WYNdSRhkV5p+pJZYBGx0fQTFsHc1NtEQyMYc1bqVKUi6JYtAOTeMbtr2NBs6Ad2yFYx4xirhgB8qWgcilVrhAroKGxvoHLfgq7lyJ0Z21BJyPAC52FahIpMDgTrdoYd6ZcyN6Gf1ijWNk+WAAAgAElEQVSuCx/D6kmbQeXw1egdl0wX4LtE7e/kybFS/Pz9lFD8zfZHOueRJe2VOJ8t4Yb4Ej3s22xB0KC0dWJVStVLl335kBYDhncRxzFjiIwS5r/zz7sJWWbOW3Y0BU/2+gr2F97m5g3cQ8Dxh3jP9+DzR7h5gov+6nQg8II/RDCLgyXOKARL+vKUVewZLqJnV6n8hbVIjCKk2EQD8m0rPPsPl1XMwpkv68n237n5fj7WFa7aVvbcn+srzKdyuRu9aX6yhvXNIp5FMDKZy1b+wpkfchkqiDZNyDJBXWEmCuUiXGebrUK9T60bQcqJDawa/w52VB9Tc+LM1TQxmYtMQA4NQaDRumV0EsnDaoSIDgEoI9JukUKa0iYFjOdgmHYL8uWjgDt5bIjDzo4q4DXkqUE8NOb2uA6Ep7zhCXNozjx9aox7cXtTCJpAkRxXMNqjrNWXzhnWulhbpsglNoNiavCSnbQQFY6ZKLC1C5h1ZhtSU4q+5mebhxB9wIXCITmHDsV8IAVAGDAWd6KHxwZdHO6fb7VaGS4B1C7VCHqTBHz2xA0tm2BryVKitnw97hy8AwM92L9FZqQwIYaw6/BRHSezFbcaba0FzMUdSK+yfwimx9Bu4u3tvdHDPQMcgDyKf3EbNwXvWQxQDmcodud2l5gjr+kz+PDPu8Ufq20XlVX9eY/dfoqtmC4cFvnKVDy73jBpnbuWKzxljbXpt5fmq81NaFEJzaSIBLcDy9m1IkilzK1DrhwlmsK2ttCGiV8PagpS7WPrtmVS0AYZGLwUpYaqjGu6Kw4YPMO0ZHzUNF8SQ6RRqA6xTTM0u4GksFOMEsmlJphbrWCoyFCCq+TBO3xUNT7B2dnzNOAzI0NtK0KLh6VBjEC5UjYQG/VJtCUfSImnxor/bn6beKey6eSj6fMnMEdlaIYYxwyTXS3JgIGrSC/5bEkpUflNA9BKd6AiNV8yLX7RMirPGAml+TWyZM9QqqZaS7hdcW9VUNbLSbesqkPL5pSFecOzky0kYwWzczhMkVFoepQu+6LvsRlDDNRiC4UxgY2xUHyMCjUTwDZ279yCQr3nq98TLbvPcRZgvo5BfPLYnh3O0HaKJGkAiGLb2i3cuojzd+R8/4d7CDiwx03BE0fQ08O3jt4F1JhD0vdTosf5713yTEJuyYoATanGktJbyds6LjZcLhWU4DrGhVKo0gl2dMplP0TpmFLj3Zy0BNWEyf17s9FLue2aDfIIY36YUkLdeWFUmTA/rJ7CCo10AxldFKXrvEhsLBKNuTANcXYZUwhUmMruGgms48YDgP0oxVwWXEaerfl8bmTdkl0WbWoIOYiYt4dV1wBLTCcNz1ZA/e5X0/pec3Dl+x4Nw6JE45AlDaDyUzdWDWDSMQfZMMQwx6Dy2WJORzPmGPQETWgtZL2OZOGgPiLNH91cOtC6OYWs6nLyIk3pIQFZrmBMCQcKXEQYDT2CeC8PDpSd17Gp4WnrpGCO/BeZIJ03QfhzTAdYfK8kvtzGR0sY0Ay3ZbGnqbZUVbe4MBjCwA0uFRgiKKASzuUJgpQVnyGFyqiVTyXMouWMcNdwJMSnPoyvvIKr8ra97IvDvQQcT+IHfhCfP8GR4PZdkM/69G7CXeIJpixAZNavQe+yjQvKiZ6ygDhGWdrFkq7AiFJDmMSNR0ZvpeejWGc03Baig4zG9TzQk0Llei+tSpTEhB47WHF3AaZ0bwxYQxeookfEupOWPulF01eBM9RrZYFMVDKVIq7CDWtkeSZeMRnaGgL+cr26J6ZIZ+IowQfNu8nEnkL7naaGIQKyCHVOzAcrNL4Ky3qS516yadjEpOkmKArW1L9PKpoPaUaPGvaNGwGStYlGh5ofdhodhyDMWmPrzFoo+QZSG+WYFwO4kJ3Di4oeRuqclGI0hDN8dXgviUrrCo+p+N8pslziJfhslYm2z74JZLipI+2wOBTwjJhSTCsLw4LIaK1TwTbmcqSUPZfN7sBgX87sQ0pAwZpFWMFmLuIrssjYAgQLlEZPEY+i5tHSVAq/LMRwWAcruU4FW/upZvmIqV5GuAzqnbHFnYMKILfwvgt4+g3gdh+Eewk4AGw4EtzeQ3ZpeY/4qwQXPImW8VllLrFFPJXYfK6PSK3OHCqwQAjFZUZxpj0lC/LQZKgynjP6U4V5jL7mUKoYjZ4ITTrWzjHlEqNgogKu2SowiV2OoT1ckZtcTF0BCJkuXFsGqtDBJIz7wuCD5LdrX9eRRuYwpcHeiazhg59jDjHVaqBEYX+ExjFbIwq30LuIQyVue/DhViEo5pdykrMCzUbptfdelUQQh1NSuilcHf2XMF+MntVpHHQBhjmExokMFeSxEeOtPCXEEU2UXueJJ+q4JCTNVis4XEf7jwESjF+QjXm2eQ9grFQV8CrqCG/0ograOIpuzGbkkYYinkiloVLMnK6FYPBJIIOBl3Wj2rxTe8owRW0nDpnVYlvEJsuMFbwaA4sQtuDbumIbhe7j2iS6XVPPmOQyQx9DDYYUvRUBaLxcexlRwXzzmC/QBDIYlsk0bIi+BYZDlyczdmGGB0OdEzTbDgYFAHkIf/YWvir4L+5E/vYI9xhwPIkPfBe+/M34xu3p1tEDaEMOPqGnE1EBBIuMktT8QoP630wJQhJwsmljpSQeKsmLAKZTMFZPkOAHEfT8nqvZo8OlzX0QkgaAaD0WK/mgrEtZlrUaZxwsKbPgtrh+1VVGgxpRv4RXuN5eZ1PDQy66GUOIJ4uKrkzFGBlmGGrPbBLjL2eZsNSQlzKlOzKQIBA+0uJsHTyZaYQhwqAU8O6MOr0pSCX9FXhAnY8dAxbKa3sp2ePSi3A7QeXsBgbY4RcQuotOyZsseVZziXmqGxkIrzgT+H7QqF4MlNpEcO3tyyOQBOIhTXml+ouDGsSs4V5ilWFj7vPiDsrHaVYrkn1aY75iKNSYbHaqeIxBWAtgOIO0NTxC33knpUtXjOcUv9V09iTVsGr4BeeGYAht8E2g1gpLAW2j5NtLN0YM5FVKNpLYQwEBgoSKCizwJnMqMUFmVQh0ohzDs5B2etYcmJ9U3SdW6sv48iW89yCnt1u4x4ADwE2c+0V85AfxlNJ5hzMwxZ3CXWKLmazIuyW3+W8p6VB2/n2oxGUFXl3TQIITFlmebamFCuY1Ep9WgX32c32lx1niFWC7hZgsXAhmF/MubmVRBOk5VrfWeM9pOyzuIrAlnEH95XFX7GQvKU+Te0oRY6YJ0qc+HQoYHglNJdFAIZ58TsFaEx+EM9Xb6z7GJNwvADJa8IRxLaddJ4ux154lHGxEiQkiBbDbwOwrJ94uwgEpskQVi6eoJQI8zcT/dfuKAQWpfHjIRiVJEUWFw2dDEbDDSvGOEQcxeYgM9ICSqNY0fAtdxKGsY16dkngOrT9ShB8BZmNABk8+vxSYcQbKzgUp6bFRQgYSNm84B7ZnpIsxEOkdsGXm2IttxDQnC08O5zZaOtaEgLrL6+ODWEqPvNmSwdXgJQhO9y7iNUrSKBVRRu7scJdkPTTFtseLgv/w1eS6r8O9Bxy/h3f8eTx/CvEjxtkrcw5nP2UCppxz3VUpk1nCJV9S6vkviAbT05pIYpsZLqQv/Uo79ySZyoRuxn8r2e+iBzqp10R4ea24GcvxD1/q5aq8jgvpiM1luQu50g9ZwcN4htYJhzutBft3XEGN57+S2JriMSU1bA/8tjsesaWVq5reUsUNJKHA0vDyLsy0exIYzIS32HwRwL07O3/GWDHfREFbOUbA0IQ6p/aPuW2aAca1muoGadbDbLoQHLzyKz2FZUHZXqkz2RsePQDjMhlO+vMgs1XW8woZQmLs2BfL5zudghm9n2hiS2dWJAfW1jyZU4SWhQjv0zCeMBq1Spn6dEgh8VQsZXCw7RhL6QByOvI63QtOeCX0On97do02EnP3KkW2vjj4yB+mF9qvCeunK/s+VRWp/4NMvItqT3MiVdu/vpvMGHMk+AiVhWkOrITlXQeFNGwKeQj/5evhc7+Few84AHkCz13BB7+Kz91ZAVqWOxIaBVN6vGQv6YeYn5V9iUuWVZUst/wvbS74R9dY8SQeul5JIw9JTQ+NPEjcSmE1JAlOi2pc0OgflyQHT82t06i8aUG2heSFznXztqvvAZnWjI51lUkaPCKd0LspGzayhNCgLH+5rxJPQeAAzzIedXkjniXLnuYyUuDK2glM9/ftm5E1jo/6fgqNCwMwgy/RP9ZL44FtV9n5FxoL02lhZ4odGaAfhvULyhyLiMdBfqMjY8+H2U8z44bw4UCGFzY8C8yRgIZpTkn7JmIXiPlMHBWyvTQ/LUyGHu/K/5+9d+vZLUnSg554v127Dl19KqoP7rEFzPQY1B5xgeAOMdPGsgYJM8Nh5sIXFndcwtwYY2EoyUL+D1xy2xJCQgLJwtCALPMD7JY83Xhsa/o0PX2u2ntX1d4ruMiMJ56IzPV+X/VB3qfUp/fLlSsyMvIU8azIXLnCkpiIohpDUzjKgoVfdsukYu9r6l1CUlErjMQjOM+iZa4ULBKrDxCLrrVOMz8jm5O+DrHBeuvAnAgjUj5cIqwO3UVRTyZVT4ye7lU8FkPOJGvQpyghgqEBkhD4BhV8uLCCsEJq6DJYFXa4YAuI54PtXeD6zxA2uRxwXKw8KD4P4WkAHHgTb/0A3wSeIE9SuzP2OAmSeYs52qVqSqavoGFllSmhDkX7T0naeGoujaqUF6zgJUqVt95Fu3VbekAEjAdVX0iognM7SAUK28nQW5hqY8b7c6fWS81nan9RujLLB0MDwFX2Ci+mdvZiVsUokVgsdyoS0S6GnthKQXwwBQZdTzGlwVSiAw7M1qAdNUo7SxsnfCPMpDAdWQSThdjRdLTRNLGlX9S9MYSOXEhIkbBAR6l+FaUeEjo/Na/TxJm9WfB615H8sWzpiJ8g1iIg9eW3TmhRubNERkvpjvRecKTlsMm8I/94Lg/qIzeQoDbxWQji4JdRXwkzuBC0J4hpX7mNyrKIeFJnSj97A9XPAbXfap6XPzQCW0y7ENQTPvrX1LbbSzueWH0P9OjoBg5pHPahAqlN51Bay+YqwCLYzoYKHaNaECLApoiu2dvVqnCV7gb3DhyfwH97QvKshqcCcHwF9u/gG0/w8Vfx8BwctHDt7tVFGdWht7KtOlTSrfhkq16uYyksQCeothYob8QU1lKvjbhxZ7+NtF5uB/l479K1WRxu/Wspa1Po6SmEBVqEiSag7UlHsc5sqMkMlFANba916obqt0BLDwdCrFWkVIaS0crdFYKk0ZLf8ZhZQIGl5G65RFK8CNw/IRqOtVYx5lnjXAqYIplShi3M7SwxxmaPJc9xrUBnWnFjjXRFZtit/LRJWn0DeOSXw24gLhCUCLza9HMyJOcCJmSqGWmOcGAgmvQSzKOkPuzdx+s60QgQSnZgu0SaFJcm5GAG17nW0OfaOvf0w0V7ouXk+ukz0OynKyZFfOSySOgerV/6CQgpxOcRcXPIGgeg/hWBBSVeSkG6Qw550ySRAUFAQkdviIQ0gQYqWJmQRTTR4iNZG1oVfIMdvMv01oD99+cKQ3bHcTOf9J6r8FQADgBP8Oo9vC/LDXcJdpVS716hXO3oXZgrTTeT222htsEcULQBfe6ZSSSbc0dU5GioIqSVvJux7/1qFYYGqfJwg8UjpOh0u22CidBRwbp8o9o/zlMPu5e3NnUMX0IagcJrUQBEMGbHDjd0O5SmXWQ4yxVV5AZFA+ILZCpwQQMdAfCNmFBpBsuXfoNTtHm8CgvoSw15KGpZT/G8B9AooWKO4DDFqeZfd5I2j0iO02U4FTDBlCAzYhRkcWQ4itNDwGT4T5jm0qQmZ5+HiztNVqA3ETAGVY4vdoo0hQ4N5GFoYXjY8OnZsiXb+SSxTdTLFbsPCKNLSTUONfnlrqHnyh4n/uD7O8eyjNJ+1TOBksh3TOSNkjDw/Bh9/tqy/yNQCD0ZARSy4ldaNM2/hQskwUeZqUxHBSusDqJZkBJ2XJUTmk14F7RRaLZa2uAHXnU8/hT+5h0YPmPhaQEc/wB/7jfx9cfAvWuvp94pnGRf42fMW/rWmYFQVFvXBQHBFThyBR74tFiqCHdS3uXubYkXxEuTC2V9QXD6M0a8AZSML0UMPdwWX0YrtZaE4SY2oWlLdslXPNFQxfldAI6x7l7bpLoWiDOu/VpkGzWiUMyLebqXW/VnCFCb8GKaQe7hCItu1uBZtL+HZUXSW6CNsiMkEYkME88XWhBLOKVPg3+gloF8uEBD+52XOcbR3klRMAHJrcgmIm3dxAJzGFsGyn/IKEeel0bOwlJet8ktu04sDDnoZe/fCQUHmdoYTvo11EeJPRC5Tc+lPWteDXFmnLo3eLeuvCiZLUY6vRqBDHiXn2A174sjU8LELiuIUXAw/tkqbQEigFwKE++fja09UBVA+lGstX1r6QI7ujWo4kVkQRvzcgsprgcDgCdPj2n+xYanqFYHcDPH0d37qIOGq9N2RRgNeewH18IzVVsQdcxBo3IGRwJ5QOq7Kj7T67MK1rsplRBbLnFnTaUKOTsKv1Sy073BF0+GXVH8sY8Hr4vseWMje7JKI3EBXFwFKkZYlfF6KTmYiCTEtvwuZCuGUGKTdMUKALjTUzs0dUyIVNuT9pIWi2OkG79AWnxucmk6hS8uzoC0oRMx2EQMyJ2eQPo/BtyJ8/Sn9aJnZYqTfpSQLm6lz4MiyyRKqVBhhNyFIifpYeXccJUn3TJNUkhCPMmLxHMXCD1nKpQtV+yj81pnTijeocOZnyPqd6bYOp+VjhbaaxwCLJrTAgJK2O1qvCWvkTNBBrFF8T0E/sgS2YyrGCIPwtKrGFI5Sw6RS4QRqQq8EM7BSNPZks1B4qG9CJt9bcDKrTlCBsX4aG0r6yOGxdrZB7h/g8dv4W/8DNye/vAUAY7/B7/+F/GHF7zyGI8lWcb0PiTBjq5lv5XbhkxWQ7ScZpjVdaHw4pZbqjeljIyqMlbtiFDYKnAdu/kk3e5cbYJW95FheAX09ZbkTBvf26VcXOQRvNy1Hh8mx6vtT2MWaIM5OpnCCFphbsbMCMmGH2J+qo0pYsGT58w4N4Pw9wJDPGAaQpLp+J9S8civMOehvQwYWzRmTsnL5o3GBtKlzxWTQH6BEiYTq/UFvSCom0k9OrS4tFasILKU80k9HzqbrIpCdFEGmhh2kfNMOZPTYNedGSSenh0Lf8wU0qwKg1nHzWvJwVasXw6iycBDmAIeSsSzPvUmoHeWoXUtIg/QiQzQjPrVl1PUaio9YoAoENn+6nfkAdmvOnwYAkec+0AbkzDz/YVb2v7qIEk5GxMDzyDPL81ayTXdGMi24gwuNDVoxg4DFNYY9CQXSJvvwgIpbiG44MmTp8ku/2LD01WxC24e47EBR7GsxQR+9NCyq9U/u+x568oukUF+bg0oFKsE2/Sdde/j0wpNeQmvqMzKi5rSq+RLRi1ubefunXa4zY9jEmwUedReDYe8gIWyEUSWC8RdsWsdNfa04hWIqJIIl0M4IbagAVNJzO/BGq2IJU3a7HmcyeSupQzzbj605kVdsZbay0TgMO4xwi2HugfG0JHgDruAHyJhD4rbJo8CI3DhcJgt0D6tYqXfy74Kx1h3mLdG9UKlVpwB8azICs7o3mnibEpVht6cNtmAcNbc5+jI9rHmDazehmw0ieecJX+M136cm0KiHmz/+V5QDjoD8tB2Y2KbauukuchLQmXsCU2OktnMJ4QhhkHgkzokAi5Iw4a333i6OQEH8jXmauBZl+rVWNEGTXjDEwBFIiwIJnKWhgdEkM/AKvEyX3VC1MZRysEWRAzisWDnJvMCHUaiHq03+6VI1Roq1EAwz4P3lq6LKqTcay9TE36Ie6/h1z+O/3jl9XyEpwtw/O/4tS/hm2/jJ9Y36J6b7HnXz+6RQC8tvQ68azEjtUQNqeao8sZw886kyUNLWdRZ8Mz4oqA2Q1OvVefJU1fBEGoCmWNx2FilXEPYLcCnWVV731oyoUNIdcxbfhGd7voCexA37ydUDdjyy1xh4E12RJJsdorVDqoKKXXQeJCNPQz8DNtszPWle+tiUGaTpsidHCbPRgo7Im92ZTgkAF1CYk2zUqijS4QZJudCQBAjZGxluIQ2zxdcs+EJCOJrsfWWB9hCbgkZxo+9wCadzRgTh6s7iXXmzai7RTsTIwHLJlwkVgjgBcPip7FAEln7eFtJgQsEZ4ziOFiCrGiLWhUdcjPjYjm1cdu8SQPWR/uspfYMZxiRAWRLI4S4P/SHWS37P4LDyHIIvYCM9WQOE7Jy0nkilRDgaJGodflinPA8ileD78WIj0EbQetb+UMJWie0jDFlN7intiRVrKKuGMjL3rBtOL11wN7GX3+Av3+e95kPTxfgAPAe7n8N//qX8Y+PttUKWHRihqvvwe6DbXKlzRhcZSa6RNDiliZcR5zhZDElpS7Mm8n3peji3kAduYKTtoeK9rqfhAYdVuIh5OkJHKHp6clAOBLYls0oFsQgfKhU9C4XUwp0KBBEHvFN2CryqJBoZAkfgC6myCP2sPk7nCG/tbEnXJhKdHYlDWRu7lS0QZsqGw4sXkgKqDF4i5uBqET5RyMZ6ibQ1mdzDWLyR35rvvV6abo6rOKWxymnLnW7EAF4yBiZRxXm0HAHLmY8OQPmCEdLfGk2HSGTezRv0Ll0oMt4kanUrILHCIjeDvpo5OjeCtxhkElQOj3KWbXXavQ4aXeaLmgEEGREraNIl7sm89v0fH91kinI0Gd3Sr64N4pDwvtvIg8IFEiEkeUKQc5v+mMyl9DYOPvcLas2aSykzVwJSDvyaGJLc0cLyIguEG3jdCkYjtpLfnf6da+Iha0Dj/DBe/gfP4a/dkr47IenDnD8M7z9b+P7wM3JIWtXgIWCgFszNsualzGaerwOywY70kqgkF2RacUTnWdjBYn5MoBTYXTDtwrQQIlJpsXSzJ+CDEIA17s1XKpRN8z3DapQ+aX3tSImyimTqJpj7SMa3xAWqQMRCsCSBq3Nz31qNYsM+TuenCfsmOBDZZj8o2jZhyFQwFKM4QOY/BMhDcazqaf/IDZqmHZsPb9cTKyFMTE5GSwbSs35VHLchEFAwOzsbnPXXR99eOm1RyUqvFgwx+wCdxyY33mPITHwx8mkYFXaBNmRzTaJ5rWwjknKIZoZTW/m9ly2bfB34ea1PaASeb/V56bomKY1RjiiF9k/CGN8FkHun+CtDApWloxZtXUZpX3FbW7jIB+x6GKz+yuy+uVYllIAAeaUqsijIgBKnsgDkI/Lm/JR/cQ6BmVDV5Qk6aWaLhnjlgbOpyXEOFrvRDjgfwb4Kf5ofSp4nsJTBzgA+yy+/wa++D384UkP7bv0Dnev31pD0WKqmARYlLyaKqqQi8D5ALrFEzXjKRlgRGO7+mwWR5bq6Yy6oi/1jkmNLuHnUF2voARhCzV/Hi8mDgyqeD5Au1RhpBxh2gtPQoFWnzWS8WhIcwxDZ4l7fPlFaDjTUiRxapgQD1Py7PORTn+DdGgaMC0i8FNGIC+StEaeSxvRg9nvlKSLbdqA07TnutG45cMyG6Dfu5+OFu5kGIs1YqMQTZE2PjbRBuZAuCiIKgYiORSgSr+X3l4gSG65GORlLGXnz1v68IB6Fw2cyYQQPrzUN2BOgrguso/bJFsHas9u1ZxHrUNCuitoiYOg+S2mMUZJRHVvRGTeK/hApmmmTzHm5iWUb9CLayTXU6yfutFeOWFFRDesaC0hiIASxS5MRCmrgJ6m2zaYUPksulABnCpFA9KZWPpzw38THj/Ev/Jx/NO7ET+r4SkEHHgDb/0I//wqHvyFYA7qs/BZr/oIaLBjxMUcwpfRx4HXBuMCXbWKIyPXn/Vui5RXZqyy29XzVvjSEkyqiTnFi0c9lFLZI7kJy46KiR6koEN2MEiuWcoR+o+foINiAgylud0cahDixCVLxIDjItbGUDMmXlEIcosKmfTGKudI06/SszHzJUznQty431+mQAEu9bE7VZ3B3eY7N9FWbvq0bWH3B7ekSTMfKEFBA8LpghzmIUEwP2IVydtykjppBFWE+FnBGik9Mn44AwY2csB0BaNOK6f4nuAn7eoULSedbP+TwaJKADn2Nv1eQ0xZ29Dclj0sbsKXITKVRCIMpDxHtDp0DSKra9NFgWx/F1a85BFeAWLSayKWu37GRTDNTkKBCz1uPZEcBDREFciqrqdIA3L9ZW8KBIIgBlJiES2CKSLM2o1N2Z+HM6N2gX0K/91DfNXwn13L/+yHpxFwfAX2m/ia4QDu3w06/IyhLecv20jXgpQAkTcmuIw7mos6GFGzMzT1utiYTmPzwK6S3pmuI7siEov5vVKZkGEYsAW3j48ZXivR8n/YBwfsRtZWLlMtmRhgSxMhcvLdf6aYJfJrMz6s6YIPamSYlu35wTRo255iFzc4oibIyudO3LBVgUVOcihrMYpOBK80HJPmaH6GhS9lhLtC1GvkIZKcyKUUMR0DCRqSOYC5wZMvldicP7FYI7fYa7mKxDUdC8dJtKogVCu9TSjOgZHxaGHI4NEOby3fZjEJ2m5goPIZgCm7ywsplFQjxGR2TrONFFsucXkzJSEFEqAUh4EXVvSLkJL7OfRufqakW/3yW5CH6Zdj6XgQOVt2lhv6U95hCWkFbSi2iPdNpEErQZG5tKs2aW3vMi9tQ5BsRbNUlTp1z6osJcTIK0r+A9y8i//5TfzuPs9zFJ5GwAHAcACv7GZ+pZIx6ye3drkY1Li2ccRNG6hirPGpFxvmwJxS6pBYszf4st61HbHqXErptWqs7CEXpFkpNUsCqQZK6hapG34L4VSVz68gFOG5tiKbD9I26w4UseUDFnAPfXEypVKhMZa+bBVWxbM4LYgbTO/Gnspt9gII5P9Mt4WMyysWBNEs0QJsCtYJLis46izJhs9/HFwAACAASURBVBX9baHRUwVa7g6RfQATYQBaHZurQgFTIN0nayW55iIfiaXUbEMLUbX580WSsrfDPF5+mT0ZL8hIO8j6JCY+CW6zJaMfiiPEkK/A1Jk7WywGIC0SR5A1ShAhlXDLvFKwcmXylSwcyMiIDrYVbciG0Jy1Xn9ZuZaOikXQGkmye00cQY8F8wUBuKXL5AhUQfxxCLHsLvNSnapsmudjjoyQW6BMmfpaO5WtQBM2Uc2oWkmH8043ywuH285uiTcXHI/whx+/68h4hsNTCji+it/4fXzn+3jwBB/exTruwIXtkzsNZLCUuCom39OXjNSgFSsUKxRhBQdppm4j3uSlDvN6CcDLJ9YokVfwsTaUScwWHZNGVFLbxovNBK0pB2pNWlwRT9xqe1FLrtF8PDSi76uQujRLfKI/DKhWxdf7NN5hL02RQeQZb8FEu4VZCAudIu3Ax6wXrbIK1GrXvi4roCFVcEVzBWqw3IBX7WNsaBxm75umH7CLZzsPHLBdGJKhUup+cKWOYuv2C3HAaCIW2JH1KOhBS99YfneRiPwpg1R/0xslyHJMpITXZ305pYxhEidiaLYQoaDSGM9V4e7qQIyKpEkHidAglyeCrQv+KIkBLMRUywYRwQ10SISrI0Zy4RzyDORB70U0T4gXESuSE4vodG+UWhe254IXI52tbZIil6k5sNEc2odX7Y8q8cewC/AZ/Fen1M9ReEoBB4CP4f6X8Ln/C99Y3zit4fqtEVRL6q091FjibcfZtTdWuAhfTVMr9DSyaEaGxk2N/TrYM1f1LlwzrtdsbWSxhdgCOlS2Gx06rVdW4BKTuOSVdWNpkOIpSaTC77xDLocOE7+Ch4Iu48SQKznFk5+NRePTf004L7mGdnaj/6BuuRglIlcAxLoNFcsn8pCvjwqfQgMw91iXcKll8J0LH8m91leWZsIUdssKkSrbjos1czXE2JZ834QCh2ImJeD5wXdTgeNgOUO22DIZpSv3s7W0GFtVKhMh5nGMTN61QB4BKPnEOtu8TbXdZMGGoDwLdL2V4zjMHgWPWZBDJd1USKxQUnIOiVEX5nAhcwCXgB1kUn0e5VhPlD+QT3CG5OUvXRTr3SHe1utQ1EkFVcXDEe3Qe0MmKOmbYApBtDEzIxVVKtSc/Bw7HlPD5Ha3TkU8h9/H5YP9K5nPYXh6Ace/jE9/DX98wc2TedK59m0LOlX3BEuEl3eBID2xGQDvxMXtW5RvzXgSWRObgqPaTfG8c9DQjiT3WnHaI9s1b/dblFzzv/n0qJa24kwNG1D4XJRhOOWnWly2mmZNHfF2yTRICTIir+VzcOv4XFagMkiCtP1uedf67zSVywJHtKCotxGC2/RzkCyf7GX/x+TAuzSH5a0Q+lEcw7NiYYXD2qRgQB4/Or7BNrdegsoxt5iE1z83mQqeKBtIw5Ok4CDajzAiz/tCmyDDKE08wYho8xzkAzKp76Ecb8rVjcYf2qQyaD0GnKsJl8W1gjzYAXFFVCcmkEOqDLY2DCJlTFbb0UTJxj1O2XplvqZHgQLK/s05EQZScSPBYGjBSvFEdlOY22rXad2bnY68zAW5lVAGcJhfhLncdXmTRVnxjVmKcbDZ1f2jAq/qvZJpb6eOkdb2egkrGVUFtkXdBlAQmqnl6hL6p/H2Qzz4JP4AL0Z4egHHO7B/E9/8NTz4Hl6Vx6uNvdQQT3Mul4VyscmqrZDDZY8DGhuX4bbdwzFSaO8pjPJc63KGG1b4Qu2hE6LV6JTdyl+ehclE7NwSJP0y56uDmxWrVJMfbeY6C6cN4JFY2YAG07LMcKiUlumetqQYcm3unlgIHDYXR062boSND8yRjcfzqZhu/U0QSZysaPYmqpCqUgx5scWhapV8PA5pRwzE0rIe0TDtZuCuT56MbpTTYZYHjA6HDWJHJ8GBiaPCQCfBtFXGRz34tCXTTpbOzfUUs3Z6h/hbYkJZrBM5F4xmo+TJpOHvMTaHs6k87YTHMBgVdsqfj6XTfM42FXlosFmTtc0hlKjBjD7QDUahXB6sPWVHJoJLSeIJkPjJ0kmjARdE+Fxed4OmVyMxSt0EeshdyKdSjoAj+lX6kSvPGNXT0xeXg4IJzTvaqbglVtdIrcIGfKAXx35wNtTSo2p/Em87tZcoYC+Yg81ehsbNQ3z4Ot7ACxOeXsAB4BHufQV/4bfwh2G3RmgWZIM8quPScHbRcYaawDm5vd/SMVUMf2cx05V+DToesVDeCSosDdF4DiFs11A6e/Ky4vxOUx0VqQKVp5UUgSy1I5Nhefmi0XQA0TCQAAUCgjZWBB94uEAAIDeorshjwRlWzttOIGLxbdshVToztAJ8L2Pa3dyiSKXluZHCYeFCKAa37Isb6dO2Z6fwoLC4K1AgTBl9H0j377QYwwxPWbwc4RVYUvwrmXPmImQcNt5kz+kQdBrgUNBxzOjEcOyXfDU1JA+ebI6wvoFUcoA4xTHdhjJr7wgDUUZ+tI34MGRsIQdm4rk1MiWtfVRuTvoGVkuoAGKOCo+xnUCEbR4QgZKoNSVKgECQFTogJhb7JwkEpnj/NXkVpZTY0YYFAYWsBEROWmjiIXHYgAeYUqrW0myKmKMdi0gjA4DZhsAyQk6r5rO62qaacg2Lkfk0fvUhfmj4z08yPIfhqQYcX8Nnv4RvAh86XsGp7V0M/UcIK5jol+o4Qz/svOVKReX9LoRmCyMUnWgKrtJrhIZ53VFhu7myNkVq5ZrYwEcSV/DhQ/Ox1umwFoY79ECjP+IpXsUNGrkIh7qjwmotyu7RwB/gMcgKcTLX7pfP4pEYT5zkX0p0s7kFbnaTRiJLPJHL4DGuy0zO6QOYwpczQJHMh6eBOynk7jTk4T6ZgDL9EIEnJpwKJ5Png/g63upO0ByionxlpE3+ILDAGBtH+JFYHfc6ANogL5NRRsvmrgwqW2qhBJgtttRAitCahmCu+aWxeXlFYbmwkPk1b8WSS+MJOSkVIMjIXCAe0p2YCOsOoSHagNryLunJcklDG3RCCJhg+2XeWZa8cwvlpvREGwFHZk2lCKvPNZVAwERt4/jNp6ot8uOomCMnplDtDtK6DMP8rY4zVaKDjV/exXffxOfW4p/j8FQDDsA+i3/ouH8DO26BFKpxPnIpNe+VS90FNNO9kI2QT6uVw6q5uj4NJbbiieuwQ1PW11IQwp+BD84qoS7RzCj2oJkZ81jpaNkVl4T6PgoDU9kU4hQ9ESmD7CBBIRZTS51tktGkCoFUal79xTT8VV2h503wEftVzQ2Xub91vguTETAiPC0bB7WjCobLL8WE5VYXAiA7NkLnhcqfsKNvsIiFElPb76M/zfYfQ4l1DbHf0bo6qNjtbCuXbtGDvGZmrqeU6ntOAdOygnMYUhtdEOo+llo8350J3wa/ZUPTZLqJp44+dreM3xNNU2bjikh0VixghhY900K6MNiZnjc4Y8TY13WWaqcxD8xIwCOeDxFj+xqqwJTlK/MCawye33ubHo6joY3h3jjxPSS2iMTm1cCiKtSuKxMliLKqm2oORuYKHFZhhIaanmPa+60gXrS0m+HxB3hg+H28SOEpBxz4Kn7jS/juW3h0g/dvmevAziRfD8qqMb9yWeJ1vOsCup/kWiGC6rXtrRZpOj05bDTlPqxzCLu54st0KTOpIhgYLvEB+gIakJqcG8YKKpKlDQsksVleqZHNK7I1kpKzjyzeuZylcUFYyWKbYuxmILYIH0OBKbwVIKO8onQxzK8Qpo+EH26l8eODqXGHh4f8U5WZh0kkfGHekEd0JGTjxexJ2VrDDRZxVqlPuz4qbDTVkcVkm2qezzHwQnZCnLqB2Mwb+y0IicqRXwBhTY4AHdU0hzYrwOUSgQUWFLpuAukjOSakjcY2GS0+TiuHxM5+CmZZbnM2oISTERsMNckTBDULWvbibCyriBpQgz6PeomAIBsaQSqmbOMNVbHBii1QXR0raCi7NNqiRoUUxUHSPR+9XBdpG1tYzmMrTDrySOFP+s03CKN+LfEEXqyX2B6aaOYfOG7+pRfjVVgNTzvgAPAuXv0aPvub+Hok3Ao77h5WVlucgTKCNvH11goscBva8JgzZ1W7znMoxZp9m6NKfNtdT/1c0pc5NBXxxfPZ7QgLkI1jfXYWkz8wQcx4C1VBJo7YkAG4ucPKYR6F1bKYwmoI/WXqSO7vmkshYhqvtFVtm1gfYYnsEVglLpcKO0JHleUbF+566rmUbVGLaX1d6j9er52fgWVdZB1qun0jRfbDDtRSzLNhOWOUru3xdO7Rt40m4AIjkr6MCiRc4LhA7CmJgZDAiAPdoW2KiWjAb+BJzwFudnHKW2ET0QYTCF77WKDJvz6hlJzgL3reaUo5elfkEQUZaULCyXImErgoklgxAfuqxG14Ks/QhsWRv33fgyIPxN388FtUZ6EM2RIWiHtGQMkcjVZgU23VymrbG3VCtzYB2yG0RUUPHXOQU1k6Kenb4AcO3Nzgyf72cx2eAcDxz/HJL+G7hlccjxfDV7v9roEPRFtWW25nUKOLoWpvoWnYYk0ByjYR5XAGpFdNPbNbbiXhfLJd0Vi4deBijTzJ2uvjhAijxEsofOKG0poYNBNzTBMkn0JNLUVzOOyocLsI/ggDJvQ8jCsRTOgG2n4pIqrqs/mG2imLLPVWq061RqPQSzSIWHHkSSEWDpIwlC4vgoZNDds/rWacV1ZsLfJZublk5DxyDpNszLBzdLxoz08CqvNhLVl0+G6iwcOGGisixrUWDWh6ZThhkEwKyb/OrCkmrdB0q8zW5asrbbIgSpHKtrGpe7HUpHXbsg0bg5dJ1Rza0SdcYAsVbfZgoA3BTx7E21NsRpZxisYkVr+IkT8dPItDQv8UtZwij+V35SDx1fxTyFGX2Fi6bb3aSmehiiFMpgeTUtG3mWqjHUKzDMPgp2uS+qtODjM88g9ucPM23rki7vMangHAAdhn8UfAk3McsMavspu/jVuHDuOylteUXSPWWy2cKMqeEmavZBlitGG+wRzhG0jBRE37UtkwwPVSwITm7U0QYlxqWd5UZZumJ5cXvaU0xetKRNLjdLMmhqiXYSDrVgzk5gxLzTfVhovNtsq5pxTwwUWE3EUBQBAbiYlmkHpKnp/yQoz9KF8B1uCg7p8QghssyurJ8ou5XJJdpwQTuoQYDqlD/7gJ0tCxf3wIHq+rjHyyqhKvsWj7yGpIwQd1bNelzLKhZM0CcQjV+XUETDH+b3OHHe0Z9+UBexl128hpuscUzrFMGgICiAgyxw5LgcRq5vKQpkz3Awst8cmfy57O7H1xRF5dWYACPz9AaY8LHPq9+/7arW4+PWSthOsyXD+cZKU3ek+cBVXSChSQ+6Iwps/aYwodGs8yKk90s2AOP/AK7n04D5d64cIzATjwVfyrX8bXb+BP7ja8PuIYvAY7lvmtNFND31ZyAwqauKbs49XMr2T7cutDuDc4Um8pP6vsaPhbXnoa5AOw4Z8woW8O8zP9q3GpFSXvoOQ0oyAAYg4xJGxPNbR7O8Hss3TdHNoQzFi5CI5SSpMERhWHPHu0oor4jQ2V1IeEQZilN9MnOze5ngKzC2wqSr5ty9/Za7HZYpQSMvg8S3TSW1huNnEacke8ZTzb1sZP7LrgztMpuOwYjV42H8eMkn8eujoBQX81RrpG+7TMX5c6zZ5Cdl2MeKftLe0pF9XQLCfLrYPnLFKiacAS0pV3XLPElsskeyw0YE6UYFURQP7aGp+DKzhs0AbmNtICF1CJx85QEFsI8ZTTNkUIE/F/7HRaVrMgngBVk0P1QLHEDjVqd+Rs6JFtjp0S7VBlT+Y3uHzmhXRv4FkBHAAu8AOgWllR6M8RboUd11JS3W4ot3tIW7ylqNa7AlBSt2+Uk+aV9xdjkaXPA7HreWtZw+w139Zl7RQrPAmf1LNC9cP04JPmzK5t1wBQIAUapZ0TrMTy60CcPDEMfHjnLcwmqhdkWXBxZgKOcJ+EafQJUAKlVLQRQo1GI0CR8znkRVaEtyb5BGd45gCtfuzVcIQZl34k/tATPhQngehk7A4ZzdGXeHS4crNpyj246GJP+FqyT8MFMrnNauVySQKnjCc2StAT/ViGygQxbjaHHutf53J0ZTiEODqs0WF/uQ6w7NbWVgQNEHl0GUWno1M0D5AhZhjqimivy27i5BbbS+uyCPgx2GK8C55IR4WpDPkX33XLdnHlWd/C3eIeWNaRMCthirSuwBcutWUpaAVJY649V7X+LQdvrImR4g47/BW8+XH8F5uCXozwzACOv4c//2V8/QbHgQtypv+c4WcAGTtkC1UcUD1bbTm5NTxRIt6ZbEOaz125XUSJm8hwvS797q7EzJhmI/iLk6N4yKs8lD2c2pKxqmku3xzW65l2sbq+wZc0KrBwkyEkBgm09OtejXEz3rpMguYgScmLHXfzi+yvnAIYzUysP4QHRbZBXKJZont5iy6U6fMQOeLQUjlcXM7YqB6O6UKf3pSQ2wJkgFZftzoOi06Jswcragm4Y6gvrVjrkWh7tm1sPg4fCcHELDtQWZzD5jqwwXZPV1MOqAKJ1tHOlJTQ1JZbEnmBDGc4Y482UJwWBWmxkV3IfEkBBeewEhixHryBUgV1LYRPIpFNARNi1JfETTwBTVp9Pb+8oRmml7nbm9K1C+Qvx1uFL9kgW+KmKi3/q3aclzu9uoMUkENtsP7CPo0vfoBPdVYvUnhmAAeAC/zJLwxqjPAzgIwzgjM8sUUY2A1iqkhUhpqlbHcI/qSZWRxuu9M4aECmuZDsqe14VMROgWJXT4nQCT4U2OErTYVmBtOTysRD3kuUu7pxZNQp9f60zYlyoGoMUzeHAtjzJ+qKHfmdocIaR7wKa2H/FIJYNviRbvDcFXsJJhEc3NPBhRUo9InIyGjpsWBlLcAOOYqZpMpm5cu53rQWi0Kux2PkrgvZCzLcJ9HRVj56woEjY22qZnfYRZ4cHTDw9WqTTlTMIb6ckInuKI6BrHi0ZGYx9rM7LrKPhKXmKPdisInw2G7nqGINlu0crhaduJyU1AYKdHQlpy3HgH4O5MmeCFcBMNFkxGcFZTElcUzFBJbnhKbnoHggDhGP0GSUcugWDWGin4LTl1mGSB2U1La0cKKoVKlgFGFUxcCIctj1kMdeImRn1dDmC3aXlefNk8fA793HPzqheCHCL9R8//LDl/Dtt/HuDS4/K4MGSre3tpfblJIomk8pc67wnZE1Oyf6QqPKZitJUoYA3nNZ5yaFuiS66jBRe0yXeTxVvuYFOQjnXKSNLAh9hmB7TGmniqqLtJbKsirIGp8P8i1XbDbjLrggY0FanDwbepZosV0+i9j+wgrNZG4GWOzcY8qgDF9K7PwoRUyZjQLkb1YqChXObpfkBsPFyIrZgzPzlnKjLCZaE0n4Y5ypNaWiSJmrFs0Gb+2W/DU7CkHNWyqVCCz9OdG8OgzIDYUVlC2HNw27ubCcmdPE0ebL7zalRQpSIRNypRQxeyZJX2exvAX0IYwSSf7pLCnOj8KHwCLBRNtAGniiJcKKAE9iq2nzcNSMgVQE4uxvLRtOvewtTcRzaF6T9SDxu/D8dWQjVEW1v4UGzqjwlnaeJG5m9taHb32IL7yC/6A+c71Y4VnycAB4D/e/hi/+Rfx//jP2WVMR+hKKAIa4u+atNJko2sQrq8y1LLtsCo2Ry/SmtRq+cSztkM+4ZCIlL8DFpKYGOD3hmdJru7aMsrX4tsggO9DWVuT7olbkTBlT6S/8m3OCQk5d4pjLAePpE6Aw4re4yydUTPAWkGscu9/IOJwZ1ReCWc25uDOdHHGOFrQRrDozUhgHUF97mXsswjTlOkgYkmkRx7sqQO5poNdB9qtGSuwhiaUgbcPIkns4wNO9uGzVxi0LSIFHU+ZqEVGC53pNGRhTnjS0QQ8VJozAyMq1Gx2hOlNy6vmofqGmiigp0RERyf0eiT803II2kCJTpJKYdmuUuMqgKRLviDqtZmW7WtCFT7XTwAZtpO1nzYpRx5wWCR04saLeC9ooj1cVbWTeE+L48ypP7xfWPRWVoTjktgvISbnVgieUgAGPPzwe2Adv+LdeZLSBZw5w/DO89Rv4ruFycKLcLZx0Mg18ptQvzbbQMAR2g65hhZZrAxEqt4YAtJpX8qauN1xcpLINTbm0UmibRjTSVmvB/ZsbaFKXRW7gh5rPQVL77tIRxpz4aYk1u1Hw8gBies5YKBue8rnT+FRXfRGkN90AE5hv36QpVcRgc0+G8mnIA9zG0TCh1d0es8ou0GMUNIvdyDAKyqM7mIuDblQyNOnIGVBD11PC+rq8k2Kz9PkA65YQASaHcJjuJIWCmug57iqVZgnHw2QLrsXM7TLr0Bpcx13CHWlzSL9EKQVSyLDhZZWnp8shrbM3cotpwR9Ks4RMb2ojQVvMFd1O0bNEVVwu61JLGHudInW6eNhyTRF5BtrY7NIISCFHlS+gASGAvgGbDSAQ5Cx0AovGKV1U35eZ4yjlpwc2Q539c87V+RJZZq92pXhdgW+Dmftn8evv+fdfqO+0bcMzBjgA+xz+yQE/+17IJLqNSQMZdTZfwRO2JG6KqoO25dpY6JY19P86HW1hqIhBU1R+20bslID2fqnNFM9l/+ZaovozRp5LHKNorVKn8YonKAv/WeFPDjzsnHl1G0d6j1L5zZqyCLXiHXkU61+DIfYGFBo1eIpCYLED1AgFWinZhFwvmH0tGxGc5Spi04+tTOxl8zIwEwtSZDObNtCGSD7bkkyQMqjXBHSNTFU9CbI5dKjYNJJ5n41f4JiZ7Gxg+7KdoxejBaRZMNuCg2E24Cx/nlmSdj1hV/bUrPeydSxcSIQFXPzow0Yjs2DfEniWud2ocWUxRV8ElTXMHBftRVkPMVz4pM3GdbRhvvuQio774RoB0cbEQOL2CNl885sN2XaYAsqtq0+Xv6bRo7nKH9t4r4ZbkjfFlhN9Z0yqqjjuPXn8wL75Mf+VpaQXLjxzgAN/D7/6ZXzDAcROjo8KOCPTGW7Ypq+JqZ52DtVmfE4Nfw3DliOe109Fv41PZ2v70nVq0jp2szkL9Y3JNbFVI2Gjba2UAZieJRoc6JyY0nG1PPSEFQMwGTWZZ2IU7SZ7bPcYov9aoR8m2fOjrwt0GPsWpsdAM5ohj9PO90vNcPF4OC4ukDxXtP2ydmKmtMcoGxuNi2JcGWGb6sZPgwKF6EavzZndXPRsLn9kndPJb5Dvp5g6qBX56XmglpTT9g+wQu6RPxKDxLjRci5cZVYOAw6Z8iybS3scLdL7EW2VrbOiGpbmzTmLLObN5H9b+88Uzdh8HuXYielXyB5Uhh5FbPwf0cBjPupKikKKGaeDREal4oD2Aq1UPWOrmWdg3pIooAchaoMjOjVRZWj4IzxtmbbTiJ5LgTXcFaYMOS+PL/dw/NjwB+d1flHCswc4JNQp/pHDFkwwfZuo6aqurohRzPkOdqx3R+wiizu3hEZwFwxyjXPWSvXWqnPVzM//+ng6p/sw2/MdfLM9/4uADxgcZWV9PHYjUqyZhyFg7HIQnUQNFGaU9jRvpdgJdLhqM9w5Qx414vqL4oEAumEjDpgNc5mWVU/9atqubARZ2EbdBUbmbgY52IIChZ85BG44INZGyodakiAKNUso42W3h8WmnekvifUYymMuEhBVlFnQFlki+8AuyXL6c4yvWCEWYnSGui7DCV6RSRebYBKnwmFlM7rM9KoMZLSXEQXxc+yD9z4txeVKwabcst9zplTcMBLHMV9HdvqkBCGCaQqQHhFZDdntD/WQ/2iJAgWO2KSZPbK4SdpCCZYXZWeuxb0Byrkz7QqAuv8jCtIEZ76dGmzoYYNITvZ51Lxmjg9vcLFP4L/Zkb5w4ZkEHP8nvvhlfMNOhsptYQ8dbk1csIWfZNSCikpdMm7uWsnfRv2ebGVrK4kDaqA2DMLGIsxhwRM0My2dxmJjIEc0njL4SbZCEKIecjlVuNWU1O7iYQcXFIrPW2BKXVVhpN6qBZEvEcFukwfZ5opPLnZkKXJJXNKk0oxia8OcBk0YyVbK6JQ08aNTeAaGxSbKKnait9mJAzIMYBeVTXmKhDPOAWCxiyG3kcqUsel6iQ0cxbGRGzxligXKkT0cbEBDSwxZonSaf66glUvpRoUgcXmox66Z/9KAMmBqiufQ1VuDdk0vM8Wj2Vmil1uRYjNCjwVZJLBg33qYfPQI26Owau6Bs99lNiekoLMESjlFOgLudCa1QbaGnLdcKoLlN2DTXg1ehxEFUiyXVdB+AtguPHHcvzx+cjyTdvaXEZ7VhtgMpiuE+2vVO+t9v3PivDyXxmtZe7SxogAdxhVdnYJylfIurSNknFsSa7dSIVllkHo8NAETk8zmOQNxcFbhfrFyGkeTv3k4VjILPWSS7siNC7NhksDD6tay4jLkz/0VbvLGDXPRfk+bmkYahnapj92gGNniiH2XxU+UJ3qlRU9tVxeWdyE0eDOlaitM0GQ0eDnaxLxhDlDOcG7o6sxs+eBf9n7q4FojyLEUFY+T1owrLJM1E00qmADDhVnzFVbYYWnFS4vlAF4Hc6Xt47kUBo43MU87Ak9uMzEsNxN1ZYe2k6BEyXgr3rmOXOEjUWgCnCRWt4TgiY3/47BatKFnlIPP83sr6zlgtmlsvavz3s//KExJXLRasLc1OqaFdtscv+LbOJ95Y6q8/cHjB5fLJ/E39kQvXnhWAcf/gS/+Nr7zId7zj3Imx05raNpHBRktaQeDT7TqwkoelIXV9NbvBnWquoXhZvJsBPal7pYypPmhydRT9BCzOW2V8qqami4TcDuCuhkqXolczgtbVUU+77KhqPRjbQXuzb+9YotMERdJKE6TLMPGX+KJfBJ0N0a2w7grhXYfST+kPDjM1xUqZzetvVSWuz0sdkFkxzpsWuv4wgsXPuRVFFi+SzyKNapUCilbasaq9bbExgAAIABJREFUtnOvqJXOGqUnhXuglHLueLk0sJTc6kE3idydroMwzDWL7j/1bIQCMCI9+ehwCJ9N+oRMbl/BClIcjfo67XyTVkMU51Iu1UBBHvl8T5AR9DYrehVPJMOCD0KONO0VbRyRS7BFJCoxgNiR6gh00utSMcTCYbuekjx7RvmdkbKvRVqoa9M58GVjsv6WsKhTdXI05mOA+eXdezdvPn4RP0N/Fp5VwAHgT/CxX8Pn/hT/9LaZDIg22AUvVHdIPGHUx55w8ZrQ4jQ8nVVlckVnFat8B/o1f1epKluKKm8DLtlPnwgteXc1IJGLViGNj6CQZEtUkUd22qqEmEgmoR2zwTsK8WyLPUGQ5TaORjZ3jE7DCgu8gk1iOgP0EbnACFkcASHhAnfy62vTwltY2HzWtzyxw7hmwU6RnZtlOYbjc6x6cDertCpUBuTn4OeoUNCgQvJyIZiFWp4jMitCt0tYCErF12HoTxoQOZ7oZRjGYJ4mzjUX+lRN9NDtj44I03xzDAj9butGGXJDkii/oIcoOR0VLrcmvRXpclFDYIdilGCe1j1ymXJQP8eh0wtwfhiFGbdoQ4ZJukYkFwn6NtX2x7em2ERW5NQ6csanAEvvKc7YhtShnicTbbHIwBbLfg43B44PLjeGv7Uv4oUMzzDgeIQ3vwL8FpVLDfUpYwGnSYbllmIC1CFmp4xkNC7812QXVg5x0giTZpupBJ3vf3qpezbCvkF8qGeXo8GvIACLiSs+/dTU/W0HIeA+gDKbV5Eyy0QPB0WixVjoZyQc7nxDBAAf5cXPP1i5atnU1Oyagj+krYWgyGAZmfZVDGfbLTHaJ/cTsM/AZQumiHeBel0NYRhR8VhYGT6TCWGWhSVAbLGUwZJLHkRD0o1hjMWwWQy69ENgWnTUjMCEQbOUcFRAwQHHc0akmgACeLVSpjExIXAcs8lGA7K3xzAIJ4SHmMbLdMwNCBnfqh0GmGMh/UMyDKT1ZhcKOIhhipiyNRQOnk2dC48hVAIaRBvSviqr8O7oasjMktaXvRi2H8Jqyuk01fQx5M4MJ5hYDtgoZj7lMshLK9pgOcWt7EIdrZDIw6Qs6qTdO3wN35RbV70Xc1aV3TAbn8fahe6xZqsAJcaAmcPffv9vLjlf6PAMA46vAb+KH76Ox+/jlTK+N6Ebrx2ZDhlNNE1cM0rKFi1vuY0b27j6CSDxjXiVg0YVM8mMUVuWKxpJLzZSK7VpLnH1h/6Kp+GqjtN1z1zyR0s1/nl66QXcdG5woC+khe0fej82WzjoAjGPhyCHaIj0E0wm25NJWcpguHy6hXWwNCFsZMyip2yTQNZToIZWCAKd8CEe8cG27N7R+G6WbhLBIuodyUUQ6RG6Jeh9mX6DBB8JIs0IUwpBjJM8eHT7nREiFdbUQy1zYJAjzS80PdwzSkAowKGiE2dCBzbgSET6aIDwwdBe5rsqxFW7ibaZ7K7peQJb23ZaWBXTO/HiBGbK0LVCnAQkJnOpRZp/AR/kgDkFjTSQvSx6/nfafv5ZpgyZV7TBA9HlkPJZulK6vPPCeaDQpLRZwSsqUl3RRcq2afWr4RaEcQeCETU/nlzs5iOU/IKEZxhwAHbB9/83fPEv4Y8d19fJrsORdtN3iUxffGd74k1Znv8VXtwFDI3BzIyay69Wy2vdtxNl3FhUqtv4InwXr0P6KXT1YRDNFLiQ1iv/aNEt4sMQHrEVI2wtxF6qOvHkHipNq6xOAi06jfri1aCTRlsjlzNoDMoOCa5utCzisQhbwUu2hhWgIOa20HupoM26OxdtykJPIc5fdY2ErPlBV8Ft6d5IGJGNExtQYmkmtj4I5jimtY22Qpr2gi1m3fJcDToeDHGMKXKviUCWWCQKSvEzxQCI+WJIm6fmvYkxWv4wtuq0+t2gNdhR0FVUCJRxmyUHiQhTFkdcMhF5HNlp/ZbUwIqNr3iCOAOcCt0toahis41DnSi1iLT90zPRyJYVkPzwsyKbHcrRUKRtKjrGXOa6riHvFG5XsglEHLh8+PDVy73Hn/ngv/45y33+wjMNOPANvPVv4IcXvPJkAzhuMf87+qaA2jAnFDhlFpN4z1k8dFjKOuUrz/rXQpt2J9w2E4d+jh39JRHADt7TIsvSRkMeWesC1MaWwlBUYvfJNo8NpWpUzsPWIg38ulxC4UpiyBxfjEtLDCmiYYKFp6hJAQcpBia8CEqHpU3FtKlz9x2hQwAdFl0ergOcuSnIABTZVLThUan0jugpopGIaVATZ+TbKGGrAl6I+yfP2JBmCeATdii8HXp2VuSK8zMqNk2vBkeXzpoovy6IFPe3bF6ZxljyxiUPHbEkY6sEzshg5d9sdOhVEqhQMkrXTJk3R9msOgWwliJYgbcaNzotZjs4kZMlwRG19cglmGquoZwdNpqARuRHgR0A3R61mg4oiJlFF1SR0ESnr0qiCsYV6k2G5cPDqnX0Ua2rNOcbYKlATzWfF3Wu1TRcYK/de+XRY7wMa3i2AQdgn8d3HO8DN2dHc57Y6a2lVyjQaK5hkVrEdWBwR/FgGzFsKderSKtaLLdsoUSq4ysilTkXqxIz3ToXSSzcqgzmgF1EFPVDKD4LZbMytPmanbBdf0dRDSoakFgqn/v6Iv3ud5g6PyuipnCBhoCGunNU7RJP5LFB0gq4yW+dYAKF6q7AMJfpR4lear6ZKYCpZwLEFmnMAhxwgypypUz2j7LT5mN9wChWmQPG4hwwkK0TLqSrg2s9HighT13JLagTYSRMQXQcx0yAWkI6ZBPMARbwogxMzKWvxBnh3Ylq1nlns+Q2YCClj0h0vgpSQsVMwlYxEHMdWU66KASUzEb2wJph1HOMJ1YQAvNq4DHQRvoYju7GCENezkdXnjlFKpjYNkK/5fVyQ0YxtJSKh6RFBcrwmaXoQEQrRqntoclj+J/ijAllHG7+6YdffHjvB5/Cf3lezxc3POuAA38Xn//L+KP7+OB93D8bQZura6kNdmwJr/gbGt4eSRyeGdlxUMtqm9jkv2ZtkGJqvhVMSO7OZ2Vq5YlAcT5Cucfz6DRdBXZodbrbo9JXY40wpaFWXSg0jovo4Hk3nlrngoElQSbO5+MRKZ5fIg+2p8WKeqRHjelIMMKIMLVWXuJQOJKwxoDcP1HLLZgDkIWk5guA0eYl5giLHnRcctiijWiEAkcQvg1dN+nOD3q+DDwAtBxROvV+vLI7migBE9LVIb4rwVIcNjr2ImVuFA1A1o6ED9fObMBYiCHvaYRjF+nEfNM+6ZM+GpuwiFtPRZEOhSQ8UpVxBxYxWhqaSeBCgV1vJfIA5kdMFDYVoFBsc6QfRvHCKRLT4rD9okmy0ki2VeIMjsHq1disnnCMaLiCTuZtsf858s9Qy6o8XbrZSnKGc2Vf95Y6cNjNT1791ife/8J1uV/Y8MwDDgA3ePwhbnTEbM22hpMRpFBDSbacz6bCBknYZlhrRO30FSFTwZ/TTLJQYe3JwpYsdaVj4VnxvBjjcvR4F0Oqc+y4tcvxd6kGaZR1VIY17jDLl2nFaEF++TmVtOULDQBiINm4WrUZu4vL75ZQofRIsJ3Wfarbsp6StjQ2XsiJF/k7fSRCn/Y+1D99TuonkIUbmhejoVzVboiuY6GsgxQCQ5F/bp4AitVXGxDAY5pME4GDb4UsTM6lE9OUg8hEH2MtezmxVgALvmQ7+zFx0CQenTjhUHo7NnUvgKA6+dSZnw0pKzXS9Bw4WWcyS3uZ1trKrRWUGGGTvnjC1ijARXwVBQyF7Z9oY6RJpfZoA5EleEpF+9Fe7ZWTXHnRSxKfGvsC6TPFpS6UIlDIbtyfm4IrWMdqHUVOf2yP7r33yfd//zzzCx3OsdszFf49/BODO27ygfM83ApHIly361fYng3Vjrq3bLd8KuWK3pXSAYTjWOdfRFSZ9XK9X855SpWQv/LU7mSrl6nS5CkppSqKUNNd0w0YX4ag0pI4UnvxydsKz/lG3dR5ItXYtTBuxZo2HcR5ttEoy7IKycRGFoRenL+RZf7OWqx8gptZVNNcWGVBM9fFK1t0GsloUXeE+Z2lMHsT0qQK5oV5ljXu9vrW3xwVAUqaDAGbGM/sRWxcwl2eogaBcF6KQGKyGMTSlZ1JjFjBT8VRl2hD7dsJgZS1eEmiIOt5K6bJDTENeZy6N6IqJTEdGJkddRL4hphzS8/t4ExqMyPzKhn5x/ZSmbiR0uICFHIpJKdjIqeafc+h8Z95izKL5k/VWPw9VY2d3NLs1CiGh++++ebNr376ye/iZTgJz4OHA4DBn+D+DezqR1bvhK7uDEfQDPaeR1zHxocxSPcrMgvUMJwKoQQK3FWpjXjD6h6le3yZVu9arZQhxR4Z9xioCck5vQiDsAeUwYGyr24Q0j0A81g6scpcI5YEdQfD/HWb+CAFECbVUwJAvnSf+ypqdr6fUkyOVTKT1p6q3ELC8S6rVYKeRS7p9sD8Nxsqmq5t40ApCMpzDMZ89wdyIBg2R5izD8fyRx0VpVPilwtPsy95XnvYfvowYscGXR3ho7ZKEKdrcGTR0TTyQ872kP6YAufIrafDsFBuRmHviQ03HRoaGkFcbdGGR0HtVnopwlNFASaBQGvBKIo81L+2RRhpa9W3ocRijE3OHa9MxLVXfCQNxATaYEX4R25brMBGDTDUmvk0eM21Ojk02MJQirNby7oSnlz+LP7gJ0/+wc/B4vkPd7LBz0T4TXz7Me69gYeiBuTfbcHaf+BspN+B4RkQ2fO05dZZ9qaKtpFQw5yCCdeTeGoX0+xNDKvEVQ2k8kul0jwc8ngFNIWUuke5xQKKq86rPolgqNyoNfnANTwNUYQ8N3tozeII0Qd0SZSClE/YfMDN5kc5xZNRhRE/QXDozo8hW+rsjbcD4ThBlNhv0Tkh6h/h7QAFE29KZjHQw6GUIaRKmJTFB5MFQfwoAVLyFoVp8USg4v5JMZpjAyjVZy7x6Hha46xsxNmJHOSJUCdwmTnrIF+wQojHlMntFHBQSMtbus4StjBtP/Q9WLC9NUUTo6ACIGbG4rNTmoi3eZZIpU41BUCZF0B1S3ijtzmtZ4pgFGWirguRTf0ckyw/Anfi3sh+a/VlYgFMTLni4Wit0W69+97xyZu/8Okn/+kdn2xfzPCceDgAPMa91/GBIti7dfve2bAy2JF19LBDLY3e4nfFGaeSLE4IRk4xilyO4qxJKw6D9ZZGXSKcmrkpT7KYIh5qUD5DC0rY1AQ+uRoQx3odkUC2pmBO7AeA2ExAfSaCzWdHHgKGYZNKLsDy8yseDTRzHRjaLSxfeJUu8aYoG9tysSY61IB8xDfG58J9eXGUVgih+wyxyWNQiusFZlBWHtV12srZTcMQm3xOhdmj6Km/h86dinl2XLFmPkVByBa/HikGuM1TPRBVi8YnsDGJI7LL7Ije5tEdpIkOpc9G/B/TuPkUf4KSHD65UTRhxMw0nUayX2SOhBSyDNo2xuZoWf1w5GTMJ/1sSjzJLG950oiDIfiyXkQeaQ6hxrKsTYTsalmLHWWobozZmwVtTAkVVZQUQjV9w7bWrqANbdIraKNokaJUM//aSi1TEi97lZSJsOpcksCe3Hvy8fv48Qf/6C38Xi/rZZDw/ACOv4/P/Pv443u4eYgny/hiQo7LM+suebol3pBsWPl2ZMo9i+gIlyU7R3JikaUsnU88qpwyj8vLTv5uvwG3aeAntpDSHbjAQ2VGFttM8ZTNykw10UysgqEgAGYPazqb6eJ+iHa28tg6JEmQUZupRLyZAaWRh1SXq2BlKZgBGKdZ1S+phgq0JoNJ9aftszDA+tCcB2NMRTx5ptUPeBToRB7iFbggjxwNiz47dBTvuYIzIEK8ZRrYirgn7JhBgIj+QrayEmcIQa6RGXfL1taQIhJgxZhAEo8fH6jP2JQxiYwtELliuM6Nq3MZqLzm47C5BGcGHKM3i+UGHIdBRo4MEkx6SyfdNOC0xzoIdUaOvOwylPQpwBzOg1uCDMv2y/ehEj8Rl3BOowIFCLCo+OPaIguZVASjkY2ro2dHCVd06hklK1LuFt/GKVsOjHnJ90o2ilrKq7fMp7LhLRoHh/nxuR/j3VfxNt45r9vLADxPgAPAPVwOfHDBPV9HzAxnXoQziHAKS+SGn95Zhm3O7HI2d7OjJb4tiI/ftUYKAxi3yj8JWh2tU0K0rU1bm5a1PFNO/W6pXK33gMnhYNTjg5u1xxBGLhUzJYFrY00mFY6katDatiIaw5aYlLkvJFwvjVUFBHnD5VekCiOdhnAigOIUQbyl4rKjggUNFRxP8KlGs8ND5uUjKZ71gYcJTzhSDroQG9gwh7RdgyP0XiRliGUBILKVYgcJxKDqSAtDPi28Jx15jjPkLBplGkiL6WZpL43cRvsPsgFKYn/MHNil12Q4iKXRf+CaXgvTqGd1wx0VIgltIpiBNggZkZabOyvzKUA8K1kc3Ri75QBZ+gNaXJcYyqWAkuRvaGW5Io8FFrA9C5iQNm7oQSHdFaRSWy+vy0C9lUPuDJLiT0wA33wxx+EPXsGb798i3suA5wxw/C/4wl/BNz6Jd3+MT11DAedpS1IfpHfg4ydkSb8rpSqMPeuGP6j8clZQu59LC4BO9z3ZySWP6fJZdP/ofMcNYcwaK9ONvd3wzx8qJy5zHIJ15o1Wa4i22AKLxYfhaYQSRZVGnrY8mOjjuDBBmGSoFwH6pitgacnCBDbMkRKSA91NXJOysjoT0k3d7/VrJhB0AuTKS9hxsBh5Z3XUv3ovQo4FWMQChAKr9MqwEbnOUjBZZg9J6s7Q4FKgT0KQ2lywtAFhnDzZBE6RjNrPOpZ6IiszL9o6CDEiIQV2EZ3WCYZKOskmslRjX29JSnZl8iG6uuK6KIlSy77kQfq2aFLRBplnuxWcodgovXvkL/6YRGDiBFw3gGnz3jVcQRt3cnvoGBeuhs88wINXYC/dG3cIzxXgAPAaHj3CW3wc35r2NZyRqboGcB0hL8ZuDd7IqmJu6dclRJrkPTFnTptCZdXgtiK2khhRjuCDBmDkTMRNjS5TbSQimQv8RBxxi6VcHE4fCeGO1qWiBNMzPKyUxVpwP17NHpJbUpqsTouNTJ78NpsiBjaLWfonKqQQq5lLD3miVXDw+HCaejtKobHFZMEcoUZhiWzy4ynwRB/Fb6EYoiyIGNbfFHtiGhVyzkRBG+GYyRUcAFwZSU9YgITZSvEySy45ufDnKGJfh/3jkJntMNoiEAlHnIzYTCyoZYM2pMlcmWzQRpmEk2t6eviezuzuhAJh77Vn6PPIlGyrBBOJPKqEDl2smTSIAd5HQilIdlHInFDwgfA0xF8FEMHQN83SCTRSxJDmVwTTmdwZk8gCU4xZ32YfYzbJLrhv/tM38PEHdy3qBQ8fGSY+/eGv4Mev4RM/xrev4wPsK29X717hcBcscpaYmPkcaviSsi2aTxk0t4taSkaaUpj0xOaxDTVgxi+SRKK1S4kPSlWlc1soy1Kv7mB16BOWqy84lB8QZ0Vo9hEpjunyZgqokrnT3cg2TLhJFbilPnFALF9b4RzEkLvLLQpjM728wLJymARI8RpPZWuNLErJWtOsAXC7wMIWLfzj19jOdyNw5aaCsdxtjZCVnU1hKafkkuyobQ4BcwJYmD27AGyHGODNcCmCIHNOiBJpqKKT+UkW67eiM5nLOgcFDUGfbEvbyDSKjDpBc/Z3fwZ1Rl8cEbYF0MhEz2mxvQXIwaY65HmreDtMBVZXSnGuqJtEatrj2iwQ4Xv7NG9Kp5HtLA7Y/cdvHK88+PSP3sHLcIfwvHk4ALyGTzzAj4ALzj8ha1eu8prpHUxcRyrLtdc0t0psjXwPPmxJ0by06NQ+jdaDwzVwsyYqPeCGi8uRGKkQT7Ov6anZ6eqQ9ZFsnKiabBOZTo4DhWav5Y2VPltq0f0QUdlQhGallbizEhbnkbeCwv5Zmkl2mXwoZK5EzFs+bWuuwjgPO89C43mreEeKI2TSpK4sLgcKSecHipB5cjkSK+Rv+BX0FNH1VwimdcxPu+kiTrxUMoGE0KO5PdjiJq/hzKrIGzftSZRoAwV2ZIPrKFinjPrMjDSWnHJIyABgFQp3FWo3EbJneW0wk7N5da1EfCGbxNVwVg1U0QYHhZNhhdM9e5XZtbheV6uUBJmJFfKuoI2GrkqflsYX+l0IHJC1DiZ2lmVXiyxZj75tmdw+85MvPXj1ex9776+fs34ZSngOAcdXYH8Z35FNjiUsllhv1f9x4XtjvxmDJ6xbduql5rMj2VbsK2X5IrN6pVdMsGIj5ZDxvhNtqHrIGVk0ClUGXpqb4AP1scdlf/ekRfQ8LmKmy1TS03infuJGP1H9srbipUphhAJk8AXXQACDQ0STPnReEohrX3+nqorH6GoX3WjXQfMMm3tWAhaMVjfFRskpkAdM02c+GHAgWzeMNFdPZAsF+3tfi7Tce4pKQDsWEEFOOp8v8XJwztUVRpZBkqs5MQJzn0fC0IlUSt6oW+KS2Xv8EhtfiI0xkKNDLYxFURVP9Gl1i+mtKRkRHTCmQ+ejtr+hirVc2WfawYTEjRwa8iDa0FdC4kE/94rqGk3DKEGQElawYi2xQZlW8bLQkzijM6mqJ9MrmBNN0xXmTuNKEd7TBvlhNz9+/ZuffPgru5wvwz48h4AD84tu36ppW9AQNzY2OKN7fCtaehdEYTVLkyllmlTWGxu1PHd0Yr1r+b9J4jXvJpRnu1p+PNwb5keilrdIvJTN/2kk6qaYhgn0rhhj8vCgH1ptQplAEiRIPgbklpGptBRn5N4RmkwjZfoyii3MnRPRILTZyTNssHWGGx+DuBPE+TERiQhBGXLf6CyubOaQhsXg6dKmbhrhKSDBNnrZ6YooWz36jtF8LWU2RH7zNr7olvs/Am1M3DB3ewQiUU9GftQthk2O3lHcZB3rKkKg4MGz5tEdMSAtzuQQV9QcOtJ+bStoDBKdaGq5N5ACKD6JditKE+8U4ZAQRLxs3RCCGGNHZF3QBkqc9ZC4LymILG2psy9woEQ8OazIQApqiETFaI1dm4WYRiDIoiqvB+3rbVwIiS9q4sUMOB7df/dTD19+NuUjhOcTcERwNTbbsHV4LBBkRQy3hjN8c1ZcXi06izPyCipawcQWW5yCpIYBrgCRuHVJex/4YycV4Je6WaQIHBiFB10UMrEW2xdbLrSf+WnZTlNsQzgz+KAf3v5B4FTSYfW1O/IRSZdL0utQ0UaxkbYhQMARJQABTYIVhRdOr4gPAaP08u7rrM/YhTkrZVFBWJwCXreXaiIdKrngUpAKYUrFHFU9T2QweXEBhcOSt7Lx290+HlTaGD50byBwj7xnm7hBATnzsmch1+GtMRDN1IHUZ6iCgC4wOmTpZDqg1qO9JodqvzMe09mFDNNsG+s0IUtdNIkqJn3AiLLRQUqcWRSgoHgYBQpUAbJGBUlodTK7ljWIO+Zol7ay2oVbl1SuIg9l5Obufh/2BJ//wd+6QvkyrOG5BRx/F1/4q/jBD/HgKCdejHDF7t6CJa4SrGZVlFpOhcUZu0pWLm/FKJniYSbX+8b7lLbvRsAWnFX1miZzvig7WQpi8N5MYglBcHBexC7il7LXLyt1iHUH0rbOn3mLiy/F8LPKXPiIjHk5HqCioVi1LCVYOYBLmNgEImHy2+98iM+FksGKKynztZS4N30Pl4oGZB9GxUzcKZJoBvQ3sNUbPBJUkcHTkRB2vcAUfbW1v+ZKaBJLPgPWTMfG9EDkggv9FqgQSgFUDKT4Mov4QqbBJnojAXEDsRRXUspYin8xStkCztHsSmdyFUa9hzJiT2hm4rGHKTuLu/VzrGsxgjYIWVYIAkUhOxcIF1O0sokwmmyViWpEF/q6TbXX0ZKs1AVreqnwnJx7YHGypGK1xFvCLOJy2PGh+yu3GIuXYQ3PLeAA8AZu/jx+5f/FtxxWbX8LtkscNxT23hLOnSUluqQ4eul7RFIRwwpuTjMuZCsaQPBkU3TUwqlcrb55UXXWnoyul7ulXCM9UQFNuE/KespcZRDD34GI2vLSc3UbZuyahDpFkiCBgpp8ICQhMquYYP4KXFi2aMRdxKLGRBhhL+NE0e5pQCx6idchXAdMFJiSurbWaIVKgurkzdtgOJrOYC5uGCWOoUnnRCnCwBYWt0p6iWLpZKzFiH3YRjBwcHQBZgUnIonLPrx1DM+xJWS5FiM3JelsW+hJCgRSWM0u9PLsri4NUUVlx4aohEQk4tKwHQSZlVMMIY3RXv0wb+gnmHjxT+guVEEbii0qPPIFfKzOHiZ2TLw0W22i3e1t4DQpKTUCADiOA3Y57O3vvXMLy5dhCc8z4Piz+MQ/xE8Nl2MxbzvzzwTfQQdbLzwnXKNvHFyKK8apcbbCq5ENPhfR1VsRc5L4pjgKDtqzWFNwKT8J9ABLwzBtTJmtqvVPixnKQ7ZgNq3K6lBTWj49lWYsukAqNW2MVZpKYKqixAjF3Xy40yGRPchdFFqL0rCsYewubi4N2bKwuj3C9RKrJ+L5CL9K7opQj0jrWQ7GBB2zIh57JiAQRGBW9OfcPxHOfR0MAQiGnNXD0ddWCEcQ9koWXMTqY+IVQRXQyyPHaPQGu7tBKJg5DpsD9JDOtHFyORvMZ9/mP5MILPrGwFe2pRYydMbDeo4royEHw36G2oJO+J3bCpliDiFAWBTBWaIEYeBzEA+UFQQ5XSpQAHdFoAOFrIubFjHbKddWksNstKXQRCpEJ8F2llt9GBackyz3kZS8+8CW2SjnGlqb9Oyb8OFxuZh/9ifvXGP7MpyE5xlwvAP7S/jpY3z+NXwby8LKmcnvZnEzYOVRotOvHNKSCcM1S4/vtNVGTjXYko8aWfXpZlalWzUUVasUFWz8Nkc0kDsp8iHYXBmqaozF9fo4URDJEt+1SfgM+iaANMCSK81YGHUiD37SJQ18CEMvhVEt88IyAAAgAElEQVS9zUJnQbGvc5YSCEBtea1qqM/StiA6gQIUEAREexaEUZZOJpYI4jB70WeUXEBDNk7sgQgMlLAGrYgFecwebR9h8ehlNklb+lEBdH+oIdZKitUxaTfukx3VR4AnYqZoXTuQLh8HWM1RKYCfwZNhNTecysKQI8qZhGkg6wxt9umKw2Nzq+17iBv8jpAnf7XNdjBxcTwsZtvk1hK3AAFZ6c1ODqq9RAyCNmr2Ai/yUtSVJ+Lpbeg1nrGFUttzsyB45zAGT+qhBaZwSsJe8/cf4dWfsaAXPjzPgAPAY7z5On6KXFpPW6ZhGVzb9NPkHTg4DRt1A+gcasJsWW0Froli87s4O+9I0717UYvLQdLTSizCR728gAPETo4VFuzK1aIHZTzGFiYBEbw2bhithDVusENQDk1gRQNj1UAqu6yeUOD01SMcEG2VJIEF1xHm8RXj1pQhccyknCyI9qJo7XRio1HNeCIuUHM2TfqrPNrFXQWbTgj1UlQfRpj8NOFJXDW1uHYEHJQDQ3NwlIPJQadCX/qpkbUFchDGcoASV9TYijMuYdBwKSgW78UJnrgDtmhjdTIu+GAKL2x1WpAgahOoQueBFJSuCwjCiPgSGVmUJmQQVMRbefzXcguBYygzfzl9Ka23LIsmq8KUIa1kK1D4iMHa/1oWYJ/5wbfee/3jbz38Oz9PKS9yeM4Bx1dhv4Of3sfnf4o/uWq57wJB/JzgWuIuvZh8GqZbuV3nAyCEvMg0VTtdHw3W7Bs5aIlLPlmCSaMuWU7bSmygxdLxbN7FhVOzyIfgTd98mc+l5QE6pGqHfGhZF0D3eQwjOsFIYpRZRHHLx6M2xTOee5IcgDzeKvBFcUWECyGgGGLfiexdiNLzVHLvCGBkT3QCMdCQb53w+X72ULS/7E6Vd1MJlTrmkMM8KubAbO5wGlUzOWsaZXXwMVebZhPlYFL8N5umvm2rtR1mdppAsZlkleTT58H+1ZHcsyDqKPUpo3sTYtiUy0ogaKlxcxS0ITjDSBCJiSoqE3VXKPJIu44KDhIlxK8zu4hP/6aijVj4sMJB3CcoiEHfc9ExqcAlK8VOaOK10FMq8jDAU0WUUJXiBrBIifccD1577WMPf7oU/zLcNTzngAPAfbz5AD8+4Df90Ig9PLBdNK3JJkd7XNuy2qeH9RWlciLDHfHNuv6wICeqItuXOGvjndGGW1sdsEA5PvlYpjdQYpvsrQiTD7IojFDVny1fAER01SiUPgbKkOmBuqL9i59DyOTIzg1nN4EZ2JSC2AgSnAtewZCcsIPAIktHmnlt/zDhaeB1g4URc0zwRIjGISeykoksnqSb2hQKJEyD5y19h5bEedxFxIWAMCKXabSLZ4vFgC1rQzlSCESmQ4UdR4AyY4RH+tUSNkIBycpfWin8LidTYwx7XT5Tbp1eb1IPJD5At4UEcOpoSfFbOWqAG/hoUACYZ5sGJiANGh5Sj0VO9EQPKdJ6yZpusUIDPSVxAT0t753DnoUvRBOMVihrbod9+odfe/jaZwz/w0co9WWo4fkHHOPgUcONnBVxZZ2i31Hbf7JP6U7OiZpu6NoKZ4DmNqjRWQHYInWI2b6ds/fmOIMdjUlMUwe8rnfs6N3Mdgd4TEO7Hs5hmZKAxqs8Yery1rS86v+NprhYgqHc0gE+ak9LRhAAVMwBE/SQqx9HlivwwgC4m11yBSqWGmT1IQdChTWh+NLZIMIsG1PCBs8Wo0ejnzQ6TfJ45WSCgXUZBZR17qUoJ5TPqsa6SdALBoJ6MqIIabG6KIOCTpgl7GFZSitHbqzrLxxWMSQinzzaUy7F4qDJLYsvbetGH5xoaKPY9XJLylJUgRTcerpmLYm636Iij1LEdgFF1kqUVdwiN11N9Z0wwjO8HX3rhmlKU6Wt1uE1kdu20pvEscbPEsvo8GulSMo9vzx8zV9/9L1dAS/DXcOZZXzewm/j+457N3i0telXjfpZE/mW4DZ8sL3UEX9LqSvYvy68AV40RJbSUtqEtlkYZ6en5oAqmKK9Iq+7bEUTBVO0XWi46TwNDVrjy2741Hmd/ij0U72J8pNbcxnZKCRXj8mZWeI3F7cbzySYHEzFgxnJYKryg0z5VLYwlmVNMBXVTeiXWwt/sVTx62ZAZ6IErEUaokRRpRRtfMCCLJgX+U2zV6mglHmLd3PRJKsT9L4STFEFVYTwufwADm9ihJIi2EvFpO0tbGukFhERnTSZaNuMaWK1Tq7iCx7qSyFq7Ivh54hOSXQqsFqBreuknM0ZSF4nnGqLZXklx10yqQrgPC+sCtzcObU3qOrSCVRkqMipvpgTie7AcfPZH77z6LXfev3RV/Ey/Bzh+fdwjOC4dw+PjrKM1yc28sbe3NP2pqZVXjv6k7Avms7su7A6RyTzv9TTBHkohrjCOchtsCpyLdpw3NXnSyo+k0ksnKl/hXFlG3xcnjE9WUSJTQah8ezIVNnzls+zTalGLQuN53hnGyorSlIdDNFQsgETuvci+NBPEqsk0M+wgd4UUE6aaRirHDsh6BcRP4eVw8V1KYF1TOHFIYF16Em3qr8hBAW9AloKVAYHpiNkbk8pK1Oxe3SuxUDHT9S03DKOi5CnLqs5dPkpeHOdpU5b13JyRpjMDmeSy3ATO10AxEfAH3MIccTq3epEKXFCHDWxYnFpmCleznUnvslCjelqj0kvv4lL1FQr5wQTUvvEz8q5AhqUgtYUa+m7lilZZuRMlTYu1cOx82Ib/PHr+NGT3/vUT75yO8OX4Wq4Q5c8L+F38M37ON7Dq1egBk7QxtYJoUa9Ep9xPiNofK6hgTMJG7HEu5AGuGyPiMSmw4YY3Cq5aJGyiSsWga3QhCbzqpwwH6lZ2boDfuOWFceGXhr4bFWdH/kInhzqAxQ6c33WL0JGLtPShWfIYAbgSFtEt4G4KCzriEIwSkk/irBFeghqjeR34wWpngleWhObmC7uMr3+UmApN8bMcMM0ArIF7OIqD1dHQowprV6WCFCkHQ1I8BSR4vtRBBkoo+CAhB5aRLnslAn7EhGsM24FDScRLiHt6BNAJBhSCy00uU6o8IVitJptVkyO0SfI/my+hHq3OEVyAAbB+oYLXRECU4qeUH9ZqoqlOEh6GSBV5aDGtZXIR8uFRpRSVB1ubh77ozfsC996By/DzxdeFA8HgPs4PsAb9ZUshi0EOU3cpd81scGFXZY9jtkSX0ckK9SICA8QS2xRtW2IwcfloNFl8ohflrytaGvNPm1oKlqLM4OyzVNzuLSIZQXHsyxkO8VMTNmgDob68fd2qxyIWW7Fg7V65oHFg7IczwVD+WCszzxTv3r6JxApwrB9Os6lWoJHpwxsDfAc0rDimInDnSMtGC1WNmrMipvuPK2nfQwCB5JydIi+EWPJdghQCADjyaG53WS2poeM8pXauc8j7kVrI1qE9WHnxE5VccNE5aO1I2EOs5BB7MyIupSSvTF7M0dd/pagEKGklzletolErj4TMz1F7gaV6SFnMhGvTIlD9m2oPWZxC3qo1poQoYIGJEqwzHjCZ2XLmgufFExlXlvde0Jqh33wCq2aAE/e/tObB2/YWz9655zDy3DX8AIBjq/gz/0O3vsY3niAP5XkMwBxavWxgIZd9tvBx2KSNcX7vVPKDf9Gf14orChMZ7nBxyLRRFsAyIdIlP9dYUxdYwpKRk5ZhJ6xC3w+/Z8IbAAPzwg8oTK4jfOe8gF32mOXRvNcmBArRZiSa27lu26kHzznpdzKIaFO/nFpFGmsmAQCkBbW911D61lgDl9MOCxfe5loICzkpB2rGLGUMt8o5hFYxsWXhAINcwjyQPwmYhiVivabZAiPdP3CbSAMI3TIMdTOEKsLK2W9Jtp4QrE5dMJdYnpqSMho7YDzGHA5rGi+CKHQ7gaYazAlxpuzs2A1s9L3XRocQcmqZdxkmYKqYggLXYl3SxXFYCukqNsvmieg+ASjLFZL3ZG9uC3aUATTJbmibIPaauSk3FsTbwEflcxw8/jJT9/88OPvvnKHLC/D7eEFAhwA7uONR/jJE+ACN1ywH3pnUGOTfhVV2JLiKxNbolcm1jnnyd/2tzYYZWfUpzUQlezLthJaiHh4Vw7lgS8rqzoeYf+a5IDZZHisDUWGEKxjaLZtVP8iGm7xbchjd+5rUBObNQrbmCUQW9AoQpwf+ZWv2XRhzWMNiIBAtjVEm1boQDsnL77iEtY0ujOAyHTzyHlf6VBhB+ruEPn0vJRLdBI21luzGGyebmmG2EWBdD+U7SMBrWRocWjnhozEKDJEjN8hzvgU6RhiBGb1eMz36uYqHTfjxCYA7HA2crDlvaiv85JGMejBJlUjyk0hrHPMO4FYMW4n5RSpuCvC0+WQBiwYqawvydgkrkXFNFlogoY5vphYZEgcI0sYO6wT8SCgYC34wpNlcX40ekgRd4IIkrGGk8xdxU75cpbDzS7HNx+/8iuG//6uArwMV8OdO/J5Cb+N791M/bQZzXfBHyebPHY59ym2vXvWE3fkrMzvgC3ucjemu7wnEumq9tozkaqKVKvxfXkX/TQvc5NB6q1DtGZkkXjJwk0JqLs9qP/67oeUX/ZkoLC1gwpS9220nR/BDVyjLhsmkoyXwqTsPkkhs1JZR3ThbYmHO9s2uzpSqnzTROjzN/p62pa2q4N9LTT5DJt7MjJd7ubeDimLBLBU8zo2yIdjI4flvJWjCJU+7EfikuhljvYsJe9KdkEZsi5TnWrMWCI10ZeU7sAP0LAw4RRECVm0+BgEstiGYc7mvMwptexdyJZ2xUMJMjjQCr5JlaDzZl9EHVD1Vg7GCj50HlQmhYNIq81SIgLaciBLQW6Xz/7J337vY//um+/933gZfkHhhQMcAP5DfPcG/iHuXYUaZ1N9AcXzv+/S93xOAMFK2eH6ylZjHwVMMGVfzQUBtMSiPyAzeIdOEprIp2X73rNQXbrJtMeTs4KMeivwSscKaWhncYfaqsYnMYegIsE3SHRCJdpwTAE6ZXOoYAXV+lgoV8yRmKbkFcyxWP11n+l+52kqeGWSxJDSxXRs8UqKhJQznu63ZUEwRwowG3xBKmIfZhcHKAnYQXlyfapME25o1YFNhmKpCqoo0gq3FShcj3iJyN3iRdgRZLwsZxRAJfSK1kJF5X6RDdpANu06Uwv/4Yu0SqB4JeBIZwtFJJBmLuhh4w6RKb7NokJGXNvwKuDg2EnOH9w/3njvH3/6R//Ti2gjf2nhxVpSGeEGfuA1w5Opi8rNMwhi2Ex7Jd4Py52Zv4Jy9sJsWV9BQieAZp8iqrARhtMbJg8OpGT6jF8p9Ez/ymV2xfWM83KoKtO7LtsmZBnIYbFSoGsohgvPSjfuI0kaN7/AjjhgSrdrZGsI202N0n6lzaa1gO4bmZpYVltqk2B6+GMHQ9RQz0qHweqqSnRKLKbwU7TZap5tlEbJpRouMZNsXneHyL7UEL7uO/HZLRYbSIMzG2I2p0HedzVgVArlHDAWYTkKZgGla8ztsGn9orjo8ayXdAv7F8jixIJliq9jtYEDMWV1GNNgg0BhvZs8hcCEZyL8vOSFbxIV/gkg2MMFNckVJUjTHYJaULKbihe/ZbJqTN0YPSxoQ4Pyx+ZW13uusTFYZKybELgfl5ubx3jwsX/trR9tBXsZfsbwgqK3/wgP7uH1h/jBOg3qxaJWFqixEJiA5968W2t6le1mPl0X4EoRZ4WeZOnPGu0ZZOfWrFpto6iED9cUkEshobFGXBwV40+9FKnYxFcBrukcLKKvrcwiYDiGjrcU5jB5qjJzT9eFejugYtO3UXwP3RvRXCN18WW38lILCgSz+FFG9p2PBKVE8T1Un0rmaj6PJEjB1N2CJmotUQZGelZCAOWQm0PLI6f6M5YS5ZaWmC0/ME3OXpFqYjUZ6vnGiNV4REpKagTXWxHxloUh8m7eT6nEuapzQsD09MtUuMP0gkJyN49igvTabODCus5S4cUuO2R8lRTkiBj0pg28IJ5b1l+8lpuNoEiuQS7r8SYPmYyjEi83n//u38bL8AsNL6KHA8A9vH4fDx/OqwV0x//FPF/HGRsUv15fZbJne0apJV7nc3b3ru4WBx/9B6Liw30YjHprxtFu8Xc+yErxO2nJgYkWqsK4rY57+EJf5FfIkL+ARNIrw4zz0Xy+KTPLdbtYqXuTNows0kJHs3B3AX0HlnxAjwXl122n/eQuoL6TIpSjcRhPHwmJAyLQ5zHe+FBHiPfvt8n31eaaxKwjGYZPaLAcoiLWL6bPI+qcJ5vBw3OhI2FIwzdWprMk7G7YAZ9dDlr0aInR5TFMoudn5+bG1fTHjEHCcTWjw0pbvBHDQiB2LETh7S28UCPHEL6lZd9GVzW3rqqY5GoGdSPAzspW6Ls155myqY6itZjpOeVd6M68F9W1sxZk2za8Hk6Q2XXKUqRLnzheoo1fRrj8ixbgX0z4CuxjwL+Ft8alzb/4z38Z7Hz3RmapBMY/lL+Sc81Cysh+SmlJVgRT+it5ZQ2i2fsitlXBSrne0tPysj0jO2gmrPLBWPSAAZfZzsM7gEulvMSDdGT0zirNfLK9BHOWknm1hdMyuTSJs7jpIzD6BWBZUPKHRJAFDUkKn8k8XQByF5TBo8Xy6a3KM5/tZ8ct3EAafXqPKqhroO0QbbsvLH0clFAidAONKoelCbHdSMNGns2Sxs82DGfeKHfyyfSsb/qb2InC1sWI0oPG9YLcEhMP7mTihUm43ug1g3CICFrRZm52pPzlD4VJt4VbY08rrma7QpA5uhJhJH9bE0/Qhkm8QBAtXSFFl9bKP6GxxooFUbBW000jMNdSauO8xq/I6vCxY70pzZfhFxReUA8HgC/g9a/jocNuFjy9DLbuP7jupbCFgcmDwAk6uXJpZ2StrDvyPBNjrYVroi+tMDPpM5TFI3tsJthk9xS78gx6pvnUaEQrksWUT8rQKhUQIMls5rWgdOq/zEu/yEz3i409pBSmHx8e3pKSV0tELhhbqDuL7SPpkcF4LhyJZgEm5tO8LgoYEMdvOHuLnhg+zae7Z2yDkGPIQT9H3Q5SfCQjZ62vYhef9bHweHlULH0PYdudlZ/dMRvfo0XCnxLmzvLsc8TBZbONwyGBcuY6O7SOKOXAFlR5KEZ0mSG+Kqjgcea1klzD7unZExHeksXkUsFEyuAqcrXTwY2TqzK0ctmWJCQ7iL1GLkcSEMap2MLHapbgU50lBS70puhNVEs59Xycpd9OWZScAYeZuX/uT/7OnTm+DB8hvNBA7nfx4BW8/gg/1Gd9CVtkcA1qjLTrsGDHc3vZROqg6ApW0JQtIrlSYr3Vn4BQlUc+DC5POrIGmw9usm8DVCH1qbM/iPW76T2oT7g46t4Rn59szV0RuiNEHuTzcTWfYYUgnsrNLR59+AzOFpCHXykiFDOfFpNMnQbRLPWd1SBwQJ5JrQiAUmLfKSK/zMW7u+PG+xsos3aSkdzCtldpUZsFO0qkz4RASiURgyklcvBwKAbzOXDlcXs2WqepnR4RsZBRStwthl/3dnCcbyZUQQa3pTT72oFC40mTH7CsqQRxTTX+C6QgmaINTjhyEK9JmXYrQUkvHhHhfJISVRYck0CxKJvCv/ZDtm3PUsgyrrVLKPbBPdw8wZ/5zku08csKL66HA8AreP0JHt3Dvcd4ImtLW/DRQcNCsEEna65zZLApdOV/laAkXin3Lk4R29yfT8/Ih3GfGiQ1me3IAFjs0KQAJIhSxNsxVZKpPrOJGMbTsCXfUCEW6oRs2ufZ8pLFWa8CBYhTvWe3DjfABTj4SgjCqyFFAMjdFeFmGIpSfCpRhO7DSEXJnX0mS+CloLbDQ88ntQG8AAN9FUjXRXpBouFTeETp4fAIb4pkDEkNc2+ERfNMP402bprD8LuEt4NkuecD4eeIL7rRexF5x4/HRGNHy0srbI1pTdmvgXty68bsFZrkNLwEXWVhbORTR5psLkmyHtHCG46Bzps174pXmOgiSIUULbuuXCTWguL5cUtMrywJdYLCqshQ07PqXUH58ttq6jt6clv47zj4Wuxdg+H1hx8+fP3loaK/xPCz9s3zEv4TPLrg1cf44SHbWZr1OUcJJXpm1O9IcIIk1ErpVDuVShT6KZ64IszCVp84yjaz7fNRoa/PO6HnVHsdghh8ed8E8QWWXHC2uMzHKFmgjtc9WPoRSjetkOwOiJTgXwtqb6OgkYW1KzLU902wUDqf41JU7kEgffGdILgp59XPkSnKYfGCSC10xwfUvRGbRNQ3U/wWiGYcI6Y/GrdGGClpcU2fZIUmjafIk5zTeKYPRnwCyrObytXVUQ0159hClomansbW0kxu0ca4u6Zs6BeE0YmzzKQvMy/zWik0Ozlue+bSJiyzdtyV+MjKzSvSMApZJH31WMibXkEvgyghiIjU5E9uIpW4KLKFuuRF4NLP8QTxmW9///3X/vi1R/8rXoZfWnihPRwALv8/e+/yc1uW5Af94nzfvfmorMysR1YV3W7L2D3ogQXCFpYFHnrigRuwbCOEB5aFPEB4QEvQGCSUkgHLsk23Xd2NaSGLCQMoCfEPIIwwlmWwZyAkl1vt7q7sble5OiuzKjPv4zvBYK+I+EWsWPucm8978+7Q1XfXXitWrFiPveK3Yz0OXngL778KfQHI2FgwvsxSVPq/seg9gNtmszZtxi48E00qeeQWHe+NpHz99FceS3XynNFWPBRK8qdI0tO/aH0yEFLbq7g19Qk40/JW1J7c71Pp1E1J6divIMwWexfI4WG7ImAODJhWALJjwPjtcgvfGwF7xCbZtlDYfJx8BrbdIjV4U9wwyUPnTXL8wIoAxYkSFk7cxeItQwdGwueh1hpifp1NI1PXTFcccnG/jGB4UDB8LJuXIna6eEYdHZ3Co2rUcOftQWxIuxr0E3FbT0KFfCHucQG5zSSGFmIYDqMqODumEQhG0TAE4UdmLFs2YhKmnkdmNfN5TIqh2QJTTF8ymfY1LxQur2GCZ3XLRXh2pv0WQpMHGXJ7NZKZD4GjK0KBbK1dK8xoI/4mTebKIjFnSJEjc/YcW5MuRm55b053wC+/8MEf7JgO+tioN5DPFf0k3vs2Xvpp/OAmzxhs6S9ihV2GC6noumGBBi4IX4WRMcSlLKxS+bKIaUPyZJA/XjTPYRwfX0nFddFkyWFT6Zw2iGRpEsVZkhinFU0f3Ox4qBnNbFPGLZechcWyayEqBUH1VVgpcF8OuTQaX0X1TwBZYOWE+y28OrQDw/n9IEfdbyEQthheLh0vCSHc6cVNwu6NtDODeUKamy/epRFfx+zqiLFXJJMQCqcihGJiiFMuftQQBWLwl6J9g2qkdvzkW5nRSZITOmRTLQUrVGTA4CNNAlowDYEofq1nmUOTNDSMrXcbpFWYOgTidQxtJ69GxlI1MvVA8tOg9hsBJs7CpZ/19PXf/scPX/r+/ff/18MifqL0vHs4AHwbL/0rePcDfPASXqQ5a6OPAjV6JMGpk7QLDBIL+w0QmcLX8DR6Zn0Ewzeg8YqOySklJYfEyGvfbvQ4vvthEsIDgeCSZR0BCP2u7MYftkSntgsDIzbNbHszzhZp/BrVy3bCPqDF6qunbb0mdnhYNb0RxB0q0SzmtBBFvufUmtmsWuRwf4l9l5pnhTeOCND7OQQgl0a0D1mywWds4RUY+yEQ2cdP7kn8aJw36cY2WsmaWm20JtcIhvOAvQLeZdx9UTW6HtUL2saIeXG8K6mvYQZWoilM/GggpVxuxcNgW8e4NXPTFd1DjGnIUS08Qki3SwijRIJLIohrpTACiArlvKQnvT2DOYGGHC5og1IFSSa6qnVogyo+xUzldooRySK+y6WuIacKcL65//brP/b62/10fdDHSAfgACBv4LdexMu2iSM+JRZQIP7vGFokcRG41LyFgUxjC0SSsBY9rEHMUoeABROk2C2FcUaZpO06pqSSC/fI0/g9lGSNhFwjqf2nQj2LGXIpzPCTrpbqGU/DtISBD2nmctiUPUHOhiHgsIACAc5sDyYhmBDo+ICAhsZF5p5x6B/oQWy1BWIWnUw7Gdrtl+hDJVfA910K/QQ8r8WQNAybbfs649KwAU2AkEMHbscaisDW2g3imKxgCKNskMKgwBA5CjLIYkNmrGrxqPN1n1j48MoS9DXRft8XLd4Zn5di/DaQTDPPyANsCyrtvCAHQ4swcjy9aBXoUF4y82DwMX3WSxcZLsXCvIn1GhUUMrlDrLKuf4Y4DE1IsnBMYqDaZk0KzwJtaG7UJW1Md3p7Oj9+/+Uvfentv3FNroM+Ch2QbpDtHn13e9xHEh1DhRRup1ZNvA9H8jTUF80YYkfhTrFreSR9F4zX3WYpngx46op1jdhl6TzpA01ZWkzosTNNx+nW8OFTuXJmfv/o6465anjmedlFEptNhGmnqvBiB+lmaxYqSVTUhZY5nMfkRMD/IotCjsG8dOLF0VpSWXOxFguVPBVRUFaY2rlwlkIx+lQSf7vqkU75RtOBerxKtr7AtBDjiyN5IUY5L+lAylhBkTdLRlTKU/sYNuP8vwHTkQletSY1Yuo7yOCg2NTIW9cRknkmNkEWmBdW+K0tjz34SNnTIoVQrenzQSchMVVUtqSDTm1fcExq2qzkJDCFPbvifN7ibr/x2/8FDvrk6fBwDDrhhcf44IzbE+6y93AfDfSQYoU2ZHq6XvgK0JSk9V6NHdQygq229o72qag8SnG8MqIW4z75MhMISdhSleTQvBneeIlrsK0lNsc+15aWPBTkR3BpuTpRC97XKSRhyIzNm7DUaCihqU7KBkaXjxEtm3sj1ghgyxAm1094etXMrbK1jdR4UOMNIabzJnm4HNxLIYDdpmUYYxOq1vgCO2Sr7nswX8hm5NxTIgYCokbC+0N9IW5rrlmylTdAgntBEE6UwQ+DguHwqDUfDRdnYm2wWU0plzvZxX8AACAASURBVKdGQhfjg4XWhsobmmBHjGc+653eIN2LrEnT5ol40Yr7gYXM4GNCGxVJKP1NwgtPtv0l10QTiOlSC9loCbaaUZtc27vjzaNKna/jo0VP3/hnB9r4lOgAHIO+Bfk38J7gsUIFNxkbD5IpOMMF2PS0gw9Wect01mICMs97RbiofUAzgYaqibhNY8Tgdm6wuWUOtDGMQP3uZFTh8mHrLLNhdn34oyZJy1bBJz9uH9lMrB/AKIYkYxTXEAVnZAxR25CWHiyXbaewSzj8sEnsCMGAI1bH2PHgRt6KK7duRBco3MT7nobQRACIGz8xu+u7G7brRtSY3WybjbedK3CdhbdlGAKwAtUXU2zVQwYIUh8eNIrigIktDwEpEr4Wk46rCMVb++RhUJaBytASuP4+lriXfWzkr/iNMQ+5JMQ7i5G3RcoMEVjuiE+UnB8EiTIgEObUlEOCLaON5JCAv2EhapIcMCKjkwJ9KMlQiOTs2Ankc/dzLlasRRjBNCVpThLB6XS6wxnnhZCDPn5addhzSv8m3gb0FrflxS9QAIuGK2bSIivvAgT0cKSDEY2Qi2ijVGGVJDXSib9KLJwXR2waU5qWaFEDiMlszGQuLV3IkSVjbJXwRRNaf+nOmGzybYkBvPICFpKXQmIBRWl9JMtHt65xjrzCyo9wd1EH0pKHV1a4gqClnLJ8k1qeCuV1mZi5/UgOCYlFDUBPo7tDglnllDHWSqTogFzxUvoQLsmTnkQxW0jIzHm5BzZOEAxbuNjbmmqDc3aACcGydkmlTgGEBRSFnzwTuSxNbGQ7OZ7WRAq/hzmeAIFnL8XNMhNKMCE+rqmUCVjUyIJI6NOAQYODLR74URFfeZFZDrfDlpHwWZ6lXLeqfAVsUDmd7+5ucCO3b3znuFf006PDw1FITzidxwEEN8A9FMgxsyHfW4OgyBaOXMjbwYICF2ZsVDXc2ZUy7e3QMbMOwx9/PUfmnF/x+MSEff1jzCsS8SOLkByFnnwhpFZcTVcPDDm14gLYtsr4YzPf9r8d9AgJ5MixTZ1chKiO60eHMnxUZKuVV6HKgcLWbJTrAksXIM6DbDHu0uCG8pYcPOFjGNjCAlBbXthSIXHQhr3Y4W+QbXY3Ncl7ER4OgbiLInw54ZMYvmurPK9riPea+G+jDJmwFR8HNObwiCUVd7e4I2d4ZdxYUSuN0m2gKgLNbK135hHrAyeGt9lXiolO93azTDHywrXjQKGZIibksYokW0tjebL9zT5Q0iIq6m+kMxR/hgvXnCtKaXFDygsIztarjDNKrlKui9DaME9G29AFDQeonPDBzePbu9Mbbx1o41OlA3Ak+l/wpT+BH9jvlDaUY5cuhDVcYFPa8+zggPKYDSfH92gjW+uKPxZsKZgNuSLhjFZbW183Nl+dqdgi9mE4gEgLK/xFluw0iXdZVkGW4LNjwgRumJ1fbYuDkJJJh20ZYoun311j+CJ5jwV4KYQUM30DC9hS1FilcGQ2bKSG5Xa1/HyKtySXaHlHPrPtSC1T7/uin7bXASnAt4TFusx2AEfh3TXghTqMoOUSypVNOPNwXocvQ8/YIwJfm4/BoKlhA0yAFmio2a2DkieANyNQjaLF2qFoqW5Q2bbzCEx7HdK7XCIvow229LPtT/Ai/D6T74QcT0XaBD5anlrijBhIZ4YOBdBsgVnmRD6+jW8HjmjuK4tVyOl8qzePb+7WeQ/6ROijgcfPKf1J/Eggmtf2rjDMOzCiSeokLzdV2GMYkA4WLIubIMiMNuaiZ570BcTLJRavsPlboONoK7v9QQFapLCMSDyUKx1OQSwupNvQ+1WVtDozfvQ1hKSKWIB+9Y0CzNYxWIl+y5YnTfeM5TWIs3VYqWxZf6Ek2UBVWcJw/SEzT9F2KOkNxXJYAdRGCIatCmmFBdEySNljZQfeQW7ohO2h2WSSk4WX0mPEJgPrtpdgnA1m3rIoOeMksJeQKkJvV92ZYVnIPoZ8ZU4Ke4N5nnkqyJab10eEczBq0fSCxwvBMRWR2AABvb5prUT6vGzmk9OFIBF1kZCEKjk3wLRidt2j5oCeH9/oPZy+9ht/FQd9unR4OBoSiDuRka1y+s+Ya/IUj2nKsJieh7FFt+bSqpGCnagdODKHdyBLmWacv0xgIGeGx8QXCW0ULbXbxI7P+ZjK01S6FeWfyyMfe6ijlZQW4Kk5beVCU16FyAk4t56JWOwINdKtXFbjVNnYzmkZ+c4Mzzx2UAhdDaI2T7NjQ7xGfveGFzoqEhbd+qVWR72hyHkAvzljaDfu28Codqyn8OVd6eQLreYo79N0LctAorAg1lAQazpDgDtOFK6SbTK13oE119lGL3eEm+VzrhFZ0Mn/xLYrOai25hm5zhWLWIJJYAYHAaGvDTzXSvnTvb4g1qGea8IWVtGFeY6uyF4K07ZADTDamBZryJZLGw8QPkxlZXBTNFRqzplK6rTsUirrsSJyxg++8OCFhzc//mt/fS3/oE+KDsDR0Lfw8r+DB7d45X38UJY/6rbFVMPcWVAOljmXedqMDbYoMXly7CWs4MVO9pJldk06ngAQxiOsuMugnxohOx2mjpBB8NHiiwvPKg07SlsI5+UbcCkMGrjEum6i2H5a1lFO2Pu0wcLLqjd92YkY0K6OgA62DiLx1ekFwUHUCNGuCN+1MFT2vSBm7wcwscMXVswwjrYwMaCAo5g43+sWXdzsAQEmwHI23ZCAgq93eI3Ue4j2T1hoWzdxRaO/4uZQHwPWXKO9uR9tIcbHw2hQHyM2hNymOsxVOtucXoTIPCptw9iGzsheIUFYfQ0tAAIrxB0/nxy9tcXDGLy8hk19FFkSo3FN0MGBDksypyEJZrYAAZNHsnKmnSglUIsuSS6whwicbQZe1xFJFlW5lZcf3n/v/sMPJ+ygj0gH4OjpFvcf4oOV9wIN1Nix2VLCE88ORtnDCpxxDrRadTWaS688UzUTnpiKtnk4Zlj6UAbPi57qGckTQGggFyEU9i8pIU2GjY+JUE+0ABGeAxbIjpAog2/SDGWsLNqGaQ1FE/fAJfmCbfNkOGqJnQR8AahEC8QxV7pcnDCH+xiiymlbA60aCDGHr1vKhaHmXYJtT3H7DUYbo0XCD6ibR8qQxcAr0l1a6vdtuLOBbukYCliJPmbEAUogAOFUGkjpyKsrX0yvnb+FC6xDfbTq4M487LZxyfmdome3/Q5jSJP6jue9IykJo8zmZCxjJM+dV3nQlT6ttlDGsiCilSe08mYoYrv4qkAox+80clhzOy3yNpzxeHfSF94/3X/p5se//c21qIM+QfqQqPF5oD+FH5qNPNnAT/Z7Mn5BHdSoVE3UUk4vpEUYEzJoRBW2fZ6F8O3jqOy08E+V2E5huXzB3uctC5SdHCENJsdSYysGbx+h7QvEFt9N9V7RIURE1XL5IViwKNoVIZOqtAljsKV9Kr6HYGyYGLs0XFrJGzqTkHril9Qg4fAK2oaJ6TZSq13KFa0BqmbZFAJJCsCqCVKVRAkMUqRGIJ0D+lCHIio72gHW+5GFJdDIHxavrNK7YQ9RIzmpEZrEaOf4vZj69g2EFG8dvyyJWUsqm15pGYqqUeNAD8n/mPeoIOUrJXr7BQ+oe6NYBh8o8tsl1ryzhHmkVKUUvUhKBZmSQQUrNltAVIGvf+eVH7768Ivv/Fc46DOi02WW55W+hVdew+3NcHHKNh24GWYoUKYPGXHSJgnxFF9CZhZZCAHFcMBUEsm51trKPs+UyrUo6onlFbMa4vIlZYRrSDzWKlpaTyQr0FaTdBNq/ylXMlVCXTA6QtzNm9rfdNZQHqmXh62nct0MbZMmqeqfd0NgakNXYJvuvTElSo9P28Abmw5qFSX4IRsWUik2d2uNwBgwHoNeFN7ynqKagRWjHQQJj42CAlhKIB8z+gHVzHYG3gNSWXA4ZBIMlU1y7J2y2nkjhJABoqhcOMWg9W7i9zSNVSb1N8LBKlLpTQx3jVeE9ElZHGkLVHCOFov90xknW3tSJ+rGT2Ih1E3xVzCjDVIJK7RBahgPnEeTTGo6bssKIqjZc6pqxzhFafynd/d++Mo/fuWd+zP3QZ8aHUsqe/QC5Mfxxf8HH5zS6BcKJ1onNd56ZpC9+BqeArOXYl+BpGpRTBKDLpRRkqlIyyKeUKRt80qsylOueVUlMoXevjbhE16tjmCsfWhUkCXAdgnAGfjr1htEAUHswzDrx6qq2J4MrqjNnZFFbJOmWglpRwhir4PJUscO4jdni7fxljFWQMR2aWwMm13dVgr82OdYVbGtCxGAyYuFGIXv1kwXmyrVTjDdRB67GPh6DMRGDbGWGgs9MR42kUqN7+s4o4tGe23LN7Rv1+rrYtMSiTWKr4ioD7/Sm0Jjg9/EMsbmSJl4qGh+pUc8XIFNUvNylRUQTmo4k/EO8897RzTnsrygNichDvKIDY5aIr4gklDNgU5ImJWsmnSIwZPn9phSRz/opE8odr45feM7f/mHr/wRwf+wFnjQJ04H4Nijr+KFX8XdB3jxJbwv1+IJTpWJszJchBc5zJNjFb4OJxXavJMmCW3kpIwt1G2Jpw67ZWJ9IvDbHgipED7wnFbHMBukg8Y869sgwJggznR0+hPaIEghzu9WmeBItFi6rwwSiqlEU3DnhjGmuvCP3YPCYY9jRrfq2q+fhFlNe0irEQWZT97OQvF+ugR0ubhjjmgfOm+S4w11xW1d9Gux1hFDUb6hS4ea0IAj2yg4ubTcudZsZGKVamPV80vDOL+WV6ZilPnX7a3zEhDhUUQBCQ1DPxvtCDKU0E0gGqmTAa+U0Ea13Dk3BersxIOUa5wEWqew2gPMtaVER9VJYh9tFJoYdhDHnhwngSj++SsvyTf+xNd/63++KOygT5Qu9+ZzTn8c+gU8PuFOwbv/4cHroUY2e6ukOdxNUvmxy16L2FFgAlJXoQ2aZ7cvIP9a2aaliAynLV2QEFmKU9g3H2w85AL2CxiQdgacbWokOXF5xrbX3243j6l6PA6Zcrb7MJL/2pnjIhDaeBEVpCpkhTm7lesKxAUYvh5ALeN5rdAQXvdhlB0YuQG9hWm3x5TK3QHhIlJ2N1beFJDUUyjyIcSQB0AW4gMJxOa5HOG5ZC8oYtz4B/RM2IsLIuMcGztgo2t+s8rrYDzFS0EWm+Ipr86poXLzdmuolLTKCxlc6bQZuvOXgF+4EOJt2dVG59bKNYt+y/EUFmLbw1QZDKWPpVy1KWwxmsKiuHf/8Y/khbdfeun3/79v1uIO+nTpAByX6c/i0X3cvov3fbO+t1tr6TE163UoxB+vZGvDO4pFRJ49SxaReYIb/zdzsZL1NaOVYASDiWyxwlhuDLKdU0x5HSt4Xi8izDkjDGewDzGGCyEnTKywGiZ8u8khW3SGF6h6puwiUJwlxVdmUoDxR91VmsNRen7MsCY25zI8mspiv05qXkTrBSQChFuD4IJCHEZkJMStnTBNGNhIoqpVWOCIwUZqhiOhcIUaQJLQswkzRBYLgAKtt6O8LCnjlJescpGTrObu68+bKjIC4O2iSJAli6p4JZttzfOPomt45Bp3fUJspEn1kKaicyRPm5mtooqUN2EpOd/pi49PeOXRl37153HQZ03Hkspluo/bD/DgFnePcdtCDZCln4mNepfUsF0NL+L/eSpsS50QSckrOzOmhzu1NQukPQS8MiI6l8UMZh7Ct+xrCnm634yp2u6GrRzwtM4/mmqpsGULV7gs7pQaCdQSYqODpjnUTS8XoepnXK0U/kHaxV9fcYKfI436i5c11ig09mqEbZaBAN2vYEtAI3tcOLaVqLGSArqoAyZfR82H/rYlQiw8Fk22v/lmDq+P7fPwxrA+UitXogWshTfxYa/CDyLxU/UkcMvkXcMBSOSXeduH7xHJI18cGuRRB14rCQwRVi5fjl7z5ncnmUaKR6Lm0TB83RFSwUelWIjRKQYZH0yVSN5JRLi4W0pYSlLRyn87Psfm6bTlWRA3o0IUX/utL/7wlQdf/N5xqehTQccplcv0yxDFo4e4PU3zSEs7qbsZG7Qh9VEoLsL7aEMAQeyiJ5kN2pCacSPlUqkINSXG/5lNxM30OMjgPINL7BNdLK9JEEMDcM6xvBBi/ZMV2OaXqoMY4knVdxvnc7eEhE3syUR5Cwv8UInKKX/zmQWVgucsl1XBmf3ICcKXTsqMXGJrNRLZza0T7eY1HTBCxlQ7laWuJPc4+UpIySHNHRw65EOjFmmJBrYStXWTOUFoMYfku48Gic1yma0Plw1bQXIwcbleSvh0aHiEk4ucazESaIwliyvh86qlCMUMznEG5ByPJS//i+WV0aTl3ezzmnzLtcWfEQeRWHhklOC3YUZdb2ywKqhjmtGSwhmjDQnWhKWP0B7a0PxI776gJtW8ewkaokRvXrx596sPXvnhC6vMB33KdDVyfO7pT+LhA9z7Ih5Ob5TkRw8LfXI1DFtECxFyeMmzyBL7NFflin/6krYyzxQ+Ky/LGtbJvjHD5phNiE9gUKTzjEDenCEkUHBWQUz8tFZiZs3OCLKdyY8UBls2F9JnGfznABRsuCTpP6nnP/IyJOQ2Cc60UDIQATcUL1KU7GS3h18hraowmpgLtfpyd/i6vQMEN/jUaKMgy0KN6RJyFSDwozRFW5Ce8FM5tM6F4dQBZ4/AyGUDteBQc8zUeAx9CHzV5ZKtFmmoI3xOlTPYqliS5nVlTpJRX9LR/pxFcyU8V1pH4F0xoYOg4UkIYN7GgTQiItU7wcRXo59BWxLb4Lyct42ceRp9/HEr43xzugFubm6+/Ct/BQc9HXQsqVxLD3DvBTy6g94AGHhi0GTO04zUWf1rNo0KGsk7YebvMQrPn1KTVqiixvPLzZFUa80f+ioJAzGssVnQTkwUyWKzPE39Ej8HP1ZVCPPAlzZmv7c6FCMbsAWV5ScDAxWcoG7XRz3cFuT1lM2LY1t9/JQHJH7jFPzbK74pyH6O1VpjFLCtZkRryLCUsRC0TfoaSwPbGpAtjlh1h70f937CIkfRtCgz2BCrD26o/J71zY8yOBWjdqa/elN7+2usYSlVBLSqojJWx8IMd/1liynmrMoLPSzfl058hcjiR4CO5MRIiGFjm1hiuPK2lsRpw8Kfw7bX97EsqVC+5k33H/XL0V5N7zR4TB37lFcXPNEjGWpoLiuXgkAbBaBk8NTyzFtZi4QmlSaHhpmnjjHezie5L6eHen7jQBtPE9WuP2iH/m18IDjdlE+AzLMLRPAkMOKi82OFZhosMnfznLGToGsGmmGTdPuS3rLH3KYcsLmWv7PyNk/o/H1vzGoT/5bxnM6AmGfC5JxNB89l9Uq7RMEuaRnzvQORM6uXnCXJt+FqnPMWUWqWCIPXG0iaMThn3i5aPSLJ4ZGERHG1JQ0nuQ7eetQOVF9XFcRMH7/TbtNZgo+HKJoGyUJsGWx+aQe2Ta9bWqQycy5oJ37yWLAopxwTJlNbtmLAQz4b7MhRvt8X73I15I1DIu05me26C1TWzualPbRR4IhktFGgQFFs4UeZs09qlkKbx0lDn2PfePWLP3r44JVv/+VO+EGfGR17OJ6A/ke8CJwe4r4P9/yupCX8MmuU7QWc1IX5A3EfTOwIadCGZIFCkVNxbidmhnjLY48G3FaJpaRtGfZVGhs7KMDybatE2nXhRSUeDAvCO0XEFbeZlPsldZxbtG7OE1tAUOYlmVsjYVIDgpOo2MtlLgE2jlsWBwy+FYN80dT4I9K2mAgziJlRURJCtnVrvWlLB2/soHZQUJtT6bGaJJFFMcknwAPCMCQ/occSiVjwGZsSfIFrE34WsR0McP0L/vRm4eUvbvO8LFYLSntBCJPQnon2PbW2EtIq5Qpjyat2NnL8H2/aSBs4vJsUgqQeYWnH1XmeKQIRyhCIJU4QJzH3j5mk8CS0MWl1Udw+KYWiRH18xtvvvf+F+8fWjaeOjiWVJ6M73NzisYFtmkk9NGWJya5Gto+Xd3WsnChZh8aGTkr2+zaQIcXEQF8lrEr6WhGaDMTaimcWaSeaOh/FT7mmJhrzi289tUgynLFHxb5otx+dJ53Vc8bihdVJySrraCg78ZEKAqDn+RYvYxvxdtakfjq71Y+v+aGh5N9si9UWOycihl+EVlVChO02sEUWzhKrHp5Lo6nVR+vgpNrZgoqvgMBXQ8bH+rZYA1ss4nWT0aRijTMQxlZhBQRxgdjooLH2oRLbOwIMRYV5SchXNNIQDfDESy1WTUy5onNUzmkw25DggRfDzAvMUEtsmNE8MHkggjmhwMHdmOoAWMmLwH6ULJ/fYNqBQaKqtClwxUoK/Vj8Cm3sY4w+VXOT1J+k31YSAbm5gd7p+w8ff+lX39wt5qDPgA4Px5PRtyA3Y8n6tH1KyRptiH30SLYxbHUk5/roaGNSYIfhI3xbdKWt0Q9A/hIAQqaXvsc9BpLaifYvxvd9OEI2GQkEEM+w96aLu53NgpoQk2/KGqUTJW4wyKNApUvUxhwY7qeJDZGTByJqB4S2vo4RBo5sqn1DA66/2JKIUHZQltjK6cZSbYiqN3s4WsSVTJYj3A+03kIuk9DQl0qo832ZiIgdLdyGAHAe2bNfZBpgyr3GA818CdmKs+OBHB6SYyBnKUmjoMYVkdwkULG8PUPyXqycGUlbd4GIs6VeBjieWoCOqHBx3D6WPQnPoqQMAybW+aOgjVCmY1pn9HdEoaf3b25v5Mfe+uvrYg76zKi1UwddoH8XjxU3JzxaQ40LsGBu9yuQRI9sPjrzgqGZvy3MBrCIitmLLBWZvkAHaW5jk4KYCNlXHgKzGWFPd8gU8PSZXOTtARM2yOzKl5zdTLSLxTgmY5FmLUOxtMWBq5CuydLcLKBc59j5QQFXm2qRNfcTImlpwTCCIhRIypAOJSbt/xjVzFVA5Sn7MwiMNEJKmIdTjq+BhBNDcxSMOYllQJdH+xxTMjrRa6I1Y95VEQY7vf51J2mlmkpvEqHVnLqYTKK4rKbpwC+3J027LpJjdNakCJFUQZ3rt4icW4J1prAXLZCv/sarP3r1wSvvHFs3nlI6llQ+DCluBHeAtO+KNJPGRavfTBBZSqzcP4nYPYYnFZW1rXCkl6bJ77FAM/w9VSRLskyTMUi6KWjW9EAsRtAqALYVhK4gc/LrmEdjJhWYA2AsGMgIR6SVnyUrwtLbYgc2Gyq+ELMluWQ+oiL5HI0ZjPAC2b1eQ3Ozsrb+MoyygH4eBUOBYU94CWZLi+Wk6aqrYcaB+JE2E2NnXnzpREebb4sjo44YHcNCkmIQ2xZqjUk8zhAdx1/Yrh11vSCYLTU6K+wlL5aFFeexJxxjMkEGNj9qLMEkTpo2mpeCzHnz9rmBz1ZfKjtAECcJaWBBLZdkTgyaHztlGgmTJsvIa3m0LBLd3p7ff+3/+8IPfuoKoQd9NtRCy4Mu05/BoxubPDzymvUO6Zh3szS+ig7lcEBwQYHl7o0squdJVl8SQ0YPvCSgwvFiqZmTJHO8faAnHwD7JPwL3kt3P8G5k+MZ4fHZQ7CZSndhD5nJ3ZJupzg3+rD/wHSjRQ4VWpBg4ZPzA9nLEs4PkXGzuOs/uzq4qdlTQrqFL4SahToiO0K8Fv7pKqXuxWMRYMizNC6NGFfVmeF5edQVGNrEFwzB2nJeXt0ZnA6J4DR7+7iIrFtWO14QrYGJP1G8LxlONS4Hn0wWkiMyNRhxdusggWAqEEmya9Gp7VEwQQiuMGLStzZn4pw3oKjq177z8x+8/odfevvvd7kOeiroABwfnv4c7m5x+gAPAWFYgAUyYNN8aaLxcEUwO1ADNEfsw52rgctGuq4az3Y8kbCRRlk6YaPCQKRYI5ihzcz9qkqWXPKqwwUydUkxXvUoMtPSDEOTvJojSb2MJLzQssDUn2hlQIOFzCjdJHP7UIM3sMZVxSZnggLxKCgtxqglxgYvnUwFQSpA8Z4ypFLbJOTvQ4oIyBTjWSZteRzaqzLjiWSTU6RyZIUmHfLgDa2JxNIz/4XHANURU99jyQxVoPFLUX/GK0Uy1UymmBlSNJClhxGptVqVmTm7bTYno7zx67/+wUvfe/H9/+0waU8zHUsqH55ucXoHd/dwOkHmqQd1GsITQo0U0aKNqyFOYZDua2xfjfl7bgRlmbSroaYadtM9ZxSa+WhJYotQW+oITfhsy6a8UKHDEyv2bMxRiliO+MQ017gtbfiSx8ZPn3LqF3wN8WHblK6oMn3SionCT4uYY8BbQ1wmGXKBrbmAV3xMblZGSFXTasSr1y5K1Biv4i3veoNXeWwhJszRtnTi61Z+ksWZRPzWL1MNvkaz8evImPrUlmy8B4VVAmepdpcXzsb6kT8C7Y+kTFikRPL4Sa85eAQqYiAlaU14iUuIgQJ1G0fDH+2QkEFo20KTCTV5YmnVqhUkVUFbnjlzVaPqs5KggODx3Q/f/vJrr3+/qftBTxUdHfSR6Kdx9w5OvwePYyI1simvgoY5vHhcopNrYMo+gJimyGvE9hiFPNWYPmTUfAw5BtjxcNBiymCwyFZm9Xkkf8AWwysyAHspeMfoDhv7IQDd7oIYBjsv0xQdrFLF6QLJ6yykJ4SXTqimyTsSAsEZDQREpcwnQQ1i1zUkf4PwVd+1yuFTUatj8sRsSKX0MiCWXUG1AKDpUnOKN4URzeX7UbyyY/BtAM4fy7BBHnWhZwYQ7JgpOzpNc2bGxADsRoZ6hgtRcpVSUBBEu5/UCkmGnyULWNmKD8THJunSKDYhAOVT6rWKHJPRRioiFZriY9bSAt0qyEgwSCAnfSwPbj+4/6Mfe+uXqzIHPWV0eDg+Er2D078IvcHtYzz2SH9broYI5VFWbFfgg35lJzMs0Ub/bTSFrwlco0Apd8yMUpgB3krpxiXuURgGL3LZZz3L9C17hMk8i2/SpKTQJCSPv2oucoD9K+M06TRZJr8FxK8Mj29fDVttswAAIABJREFUC9tGy00nl28B8AZP+HqEGA8Jt+/+OLtrZltFrAK+hxTuVxhXsEc7y2gX25ipXEXbiIqwCuH2UFJMI9Iqq+ZmwOjBNCRs56k1crTeaFJG8ry91Ho5+sUGhGYJo42t189Uh6gHmBnWDYWBFclj25Ux9t0DKePxHE+Z2SUTTG1FOdpER4w2OgDUSM78hcEfq5wVc58rYEbGK222YDmf77761lfe/+J7X/7egTaeAToAx0eivwP5A9BXgV8BTlCahp7oCGs2sh8SaizDV0q7AgZpn1Fjcm0VywH7dEuGmXmG8UsfU0pWMFnxMzG4hHJJV8CLSR9P8jWXUkeCJiph6KLKambV2sdNNi3MDIvL3awCOddyNRv7LY0WYrjN/aTGaM+w35JWVahOIoaltieBnyJxpSVgirWp/S4JM5jC4IvOcs8KKU8wN/Bf/K69SxgnVrYmCBiBWPdx3BkOCbH6p/5NKER9ASyUGWIDMNVxYsWBTG6BHV6a5seQ49iOuh7XEDPzwCEEYJzNF0Rvthkb5bxN4X2SZrZ9qNGS6u5scW37QKHQr/0LH3ygP3jpN1+7Ls9BnzEdgOOj0qvAP8P5hFvBIwD8aXId1Eg4QzvOJ4UsazzRg4YdqJElxNw6oYRrsvv/vHx+Af0MtQMH8CcmmfnkvWXDIPaJabkUnT+A3SHk1Y7dAElOtWHDbQCbqRUC0RPN2QlPhF33ypjTAowklLdiuPODssWBWzGvTKoLoS4vxX0e8RtvUbtAQCZhRKm4BRr+HcMKbkozjJDCucmmWoxGcJMPx0wuJHrQEIU3sm8wCchFNfV2jlGXz54Ywzm5BOd3ZDE4o1wqp8nFsjNwSdRgiEW4uA1kSt+S5tcw+PxFWbD1aKNbOul0y2y9p6QlHxhT5BxnEu/fyLvv3P/ij/1IfvPndkQf9PTQYsgd9CT0Z6Ev4fwQpzPucMkM76ANdGwXhdBjnQJ2hHwo+Vu4mHae+dJ0OO/hgO+QQD0ukXBD7FcYWdQi02aOaZvF4gALa6JTEdOmhDETnz0cOzM2BikluhCvYBwbsXMiGtXJZ1Xa0y4pfnFENjeXlwIvnRWOfRWuScJw5TBq3uHRMQB05Dhxgntcwi6dU0eXPRa2y6RsxWA59rZojk9jZslAO21BpYAAFszKLpBBwROVIZdYs7jw8aaEZZ2tNCODHWjSbBeddI7UHDlhBdQKySKeFJPMkNk0xUzOkhZG7MGkqRQ5n/QGuD3hS7/6813Gg55GOgDHx0P/IfQ14FdxZz/YNWhhxfd2WmjNzrNDMfaFLtzYUSJ3dGjlL+ZWnn40M7jVd36e6AtcQATmHYgVE8CEwyxZ2MgJHDDKcSvOMKKAgFDPba1p0oGGulcUJFNJB4QmeRtp5vRIr0sCH94mtRay0hCQs9lyl4CpiZw5P5rkgtUKmiQFaieSjS+gIWrR4pUMDrLwgIwdg782NSlVasQrXHPjAQ0zUHy1itM6HTGE/2DOlYgwREqN7BNomM/BrqTl4vIKyIRUEtpoIULCQLNDgpt8e555JqW0i1wWYQl6cxbVk37j1w608SzRsaTy8dBrwHehJ9yMi64BNLNM/XpoLXpGAwWaCIUL5uekRn7eLteU2ym8Ci9xTzeZSpkgszlhrfqp2eZHd9B7FgHO5N8WO/4gSEVsf5TAnIhxjnKVnfAyZvk49YpYhbHFkbRhQkLJ+NRWX9hR3mCBsTST9sD6IdztQQBfsqGO3hJDM4k9nmPJIHZU6NAGoPtAfUVpyLCFHoDWMqyatm1CbPmCGICogWk/No6o1VG8CSRa0xqH3oe6wSUQLLVYlEdd4P0O7/eoOzjvWL6hkaUUr8zpHC7fx2GNKeE9BjbVkh9nUdrEeVLkUhKxWkZp3/g1COixyGI9ZaL6g2pZxT7HLvXZRUVVT5A3fu1YSXnGaHc0HPQk9OeGW1uAu5J0BRoo/OP/iwjAJnHp4iv/nLqWuaPVFp6+L31aHTPq7C2Ax9CHO+Kj08PlOz7Fkw/AYqZ1Fs6VVl7SmkJN5RUN/w7WiBGEnOxUID+BhzebltdTiqvDBNZVmM7VkRc1Wn9G59uoorgBwd6Fsf22rpuUn1aZDzljc58QZ+1EG3up3bjT+S5XQzYOaxqnCBXNSVlmqJG1ioyBnEoplh3UjBxJRlXbXDO85hZokmb8kV69crZlMtItTGlm9uWmDWqqKYuXIFNM5onIdhNrJm62mj1LrpEq0If35HT++m/+12v5Bz2ldPxa7MdGfxsikMc46zAbAohsJwMAbM850Ib7L5UpTJx7aIMLXbHJFakzc5sLubiOR3aEcGTDs5knlhdzaDkflCZQ8fju+zMyqvOnJh0K+Jc9GdGi58jrh1HVi07Wc2iodtjEjo9sDEkChMqluihLk4FbXCmeqdk+6qQsNeBgJjMgpiTCp5Lc8oKBQIgzOssX02zJKFU8Gj8Ql2yNlro1IzrxFgCJ9SwK4aZLpQs44zkNPVpA83ACnBQpSNXBNNjq+06wNqRxKZwdyEn7aIPlhDKMXSc5gfkJ3zaGPV4WH/8TsqpoQ5Q1nJARS28SNQW1ESIQPd3h9pGeD8v1TFJr3Q768PRncPcAp9dwRmeGV5EUlos8q9SdggCR5lvtsmLr1PytCbM5wRMToX9Yp2/lyMIfr24W0md6mE05k3Dwl33+eo7PevoodyvNTpEzkmMj7f2cNpOmx22KDbeNqMDUG4WeufrF/xFf3skkNr+ZQvaWmmKYR3R5XTfXPNXRGrM0VNJqUyD3S75DDI6MtmpGy7OnhJlTRwvFl5EwjumwnmA14PZtgB432oUzaRIZiQ1JQ7iceNQysLP8iKQsmYEQH9vq/M7rxLxK6jkli6w0+0U8JWXJbKlFg6crRDufyqyO7qZukVXVaKbz+SwCvdFv/NNf6PIe9LTTsYfjY6YHOL0MPeFkfg5g+WKV8GWosRK1wzPPj/t4pY1co43LGs7VzB/g9C0LBaRVNVbH/YDoNjOp0JS8qeanRi1SY7odR2HNsHiJrB4pUK9Rt+0Tmx0VgO8vz6dSVYzbLwWxIvKdIkN98UexR/7B2JESc7GowLZ62KYPZxs2VWP3TDhv4paMsXchNq84CAxDvkVo2rwSDaHjeDBOIuo/MzuKzhqLVRhUax/x4fDg/SiW3e47txhuZFNo9MUWoDEXlRrdkwQi9nbETSGjWaZR4cOAdaNIybhkDEK29FKCqjlyD1Iw8pg4ZeZfM1O8zNbdkuZXvOXkHboNm1JLdJkvIJLEpor7Dx89vH/vQBvPLu3Yr4M+JP156H2cH+AMnK4zw818cREfXJTMs1ux8U9U1i58ybNw+ozS/M1KfgJCLfT172LTJ/L0zTrttMjnUGINABRfPuWj6LPJnD0ZXro7xGsqfazzdz+7KMgfk3Il7wjpQAxxuocOwfqPsU3+lf5C9NQmJGTsTgVvzsg3jhclE3+qhfsquoO1m6GwbqLiNoXVih6wYzrqYuXCbU5kB5hT3M9RB0w8eikuOUYUrLXDtPN4jpGZXo3CYMVVxFB9Ask+G3SRHDeiclLFAYHxMJOhYX5NNW1WKWoFKkX0cxVugLhEotehK2adNKOc4JOv/sZbP3r1i6+887fX0g562unwcHz89MuQn8HdV3H7Fl9TbDRNPRVtrN7O6yHIFH4ytHE9lFmXMk/EkDzPTkIu+GBkmVS96DmL+A0Q9tdm3uEj0LAslrb586Nv2NNgbg8Tbh/rfqZjM5FbrPrELLZGIKkUL8AZBG5M68EZbBsUJGy8Dt7h7AHGteVupVzP8RnvQjYFtvxKIpU8HDJayRuI7KhVYzg5olWHLDH5prz96Nr4K3yfepwDIvtq9TKHB8GCgQnszfGTJrAa01hK/ZJ7bQTEf3kO5ShNeFa82DJKXUmPDPtMSnqm+iaioHQkbmjAI4uRhlODf5YQi0s5JWWcBabvgkl4itzBE9fREqlE+gs4vf/qB19456MWddBnSwfg+EToVZy+Dz3jdIrvYKDaywo1ML27ayvbp7Y8HwJq7BbUfIa0mgiFaOqaZ21nUewq43Za2fZsVsEu/TRzG371YVHydFvAx1QF+372M6i2UiNmI90iEQPVTmELHYZBwoSbjUQoHgx88FVNRTvyKqnpthrHEpK4ufVqDEl26da2KVXi6vdQY1TbNAzcECspYjEYGAKOTmo3+TIFNGqRGMzYT8dxETp4Q1GMN6O1NpsroU5FHHmt47MGAk3ac3hBxNqRHvNCCQhkkBatKQ5AM56VM3njcBy/RlnWwk4T2ljm3cvYOVGqMv2U9uSkeo2E25O++ms/9+DVPyz4+x+puIM+a/rI4PSgBf170DvoLUTyhngANu88GdTgxzagncAr0cYSKzScPM+xU4GNujmrm0UNmIEf8SRTKRW2/97n7jbX+NeeWbWYoUZ2wm8mXElJXqAx5ZvtnFFQOtswWiCv3fhyT16FadZ9CkNaHxk/TjvvNk1bU6OCnbZWL8oOr3JaH7GuZN0oL6htqc3zykuWlnSuSyGeSrnqOJEiCqkKZielxEdFYICGJZS8swkt6yAFJc+wu8Lo4ScjWglsGbL5T4+rWXvCfiWyyzLNG7N2LYKJxEv+ifaIbvfZUvQyxpN87dfeevjyd++/93cOc/Ws03G46JOi/w7yGPI2gPRWieyiDbF/q0isA4WfSRaprSZX4pKVnqVcwE+Fyqw5S7ZItwKQcSRPqAUGKuA9fZstdHNSAsYjPFnbjksuwg2iWC6xL3sZGfOxTBcYWZSrKeJGTk1C1C4Ng8pAcrZllKGtm/4hPxrYEUJ4Exx3jby8dVWoaMJ43mLqxlow7kanDk8gTYyfOk4RBj6ZFt5awyU6sKHSMyAB6ZkGXcDOxui7nlIqODq0tqqfMqUbWLbTnowhB5yTPYbc1PkcrPELPbKNLUKWZhlZJpfoYndofqlNrL8C0UoN2iAN90i7f5FWVYoJQXFSfO2VL33wja/ff++NA218DugAHJ8gfQC8C/Wto7JrcbGYVlZoYJWrteUfLlWmwJVqSMo1zN4ELFaSi4GCzUrC8QgLzciAhGnm38J5m4cAtP8gYUG3T2SoJigAIStuPKa+KTPEsklmuAPDOgRWBHYkdjCot2hweo2qDrm1HTOZ5ZABInIfuXHKec00BuLxtqIGCQbzs8Tj6AuZx0BGGNF3CVFFdSSpRCY/o1JiCIsbCMYyTu4brh3BoIxLSl9n5hgYXiI1YGTML2wA3IAOnN4glWq2JfSRXkgW2MjJ/8TsfUZOScJFqEEDTEtkZsuDe4tUhSpU5X199913X/zyVwXfulDeQc8CLYflQR8L/UHoPwT+PHCT37oSQPMeLhkuRnrMSv6O8IvhDAhqOD5yafKbfvaCPedqM3pJhdnnEMW51G1y5OJlFLBtiSWPRmYsH5jktNBAQkxCpMJsrOYqg7Kc2/MjLlCiIGdINUr+BKl5lzpIarR0ESr3RflVl003aRo8nZqh3hFXldp2Sq1/rYh+SOSh5XoaWwCuErDHwqAWkFQQlR6BKcyllHDLbEUoCidLm7L0wuvjDCP4hI1n2YUCV8z4zT7WXNE9eQv5+8VmNGN091hPipvH8pXvf3M3+0HPDB2bRj9Z+ofAHwUAKNKOP3w0NLA3K00816OWFQPyx8qqdA4oR6rwV94TBJS8CkMqH3YYH3ZpVT4H7K9kIRwPyVtK484J58+nVEpgKJj3RSZpSqZOxYyxhGVKpXMRVZSmW0ZENZZVrH5bU/jJjlqK/WeGVq0Bbdet5TW22N+6iZKoVerjsXMWsIs9tLRn3l7q5W6p0byLcaKUXX18WUDSqEB1RVhZEd/1ZsAUGiQxWKxh60aJwlzH2ETxckzv0aZ+0pINcNmp2sp/ArQxc/rY3GfLyTPi+ZCkKXg6nU435/Odfu1AG58jOgDHJ03ye6En4LQZrjzrr8LXY4VdZmmn74vyW4YZbaw/CtmiXyguHyFhSAE3EojzHsUI1baw67YYNPD8buhhWBdqH40jJW5fC9ZJTUoIw1RFsoLqVrBXNbcAbQlJ4EzoDs3xP8Ej+3yPk7YqWbGxCiAjDD+igmqkDaiULhMpF4uBRFnd4h4tCSNt97MRzlME+JjMqr0YAj5MK2S/ldo/nyuR1Eh2FDaK4wb35s26YbO1gaHK0h4PDNB/lmTVHvowRkm6Ff6OQeYLwbyOiP4sJUzjKwOFXVDgPbnKLiXyiSGGdC9AU9Cgk8pjfXR7c+9rb/2NJy3qoKeZPiZwetAu/fvQ70B/AnL+yE6Oq7NL5+x9MlFTZN4BkWZk92ZTGIpY4AD55B2gJOc8xUTSzJNXTOBnNEZkvj4LAvHbvdhvf2mVZATqaj/y0kNZUEjZaX0kHuk7viyvTKst5fBIPpjTKZx5xsaWVPq8pJLrRbVLqiKrUfhDk7Kasw0DakzuVlYAqVmaYZAHDClMOmSVoIQ+U7lVGklIRSurkcZ8N/5bZn+crLfO0nLeQCzOY03V0ZMvo6S4yF6RksXubAq51ojssxGIEvzo9t37dy/8+K//t9dJPuiZoWPT6KdBvwT5TcgvxAdkIplMO8eUcIncYW6zyzryIkMLg3Z0s0ghq9No7vMvJdW5W1Am7Y15mBie8YWyC7ZP/PFEATOLoOxaTUY+2CJh0D2jGsSC2ffSSgMUpXM3UQUrzlZ2yHTCv9pNJm+xDP5JAUZ3pq14cdZCWcn4XbSINnxSDndAo3XFG0rnoqMUGwBUBa2tJIq4fWvavFnHmMMb7xrwFsiCCblcQn1WiksYigVIi86iMS+poKSbTJrE/tb8SNKK4Y92Dh3srNDCYu8eRYn3S63vvLNYpalcetxHG5jhyUchVcGDuxcevfDw5sHHKPagp4SuBKcHfXTSPwb8FPAQoE+roNlyX2RYcWKaqT+c/CmS3TONt8NtowAKiN83FU4F58wfo1u8gIrY+RQOOfTNzZ4DZks/nm7Sykc8+UjqJei4wjOB8dvubgnZvnmJ7P/Yu0nddWA/SvI3NO6W9W/amUpZQ2rzVJa1cxfZODyoBUpXct0RzaJAcgsB0RdlVFx4pDb0JLjxFM0DyXs/+QxIoMC3nlBFwJwknl4EPoIypEkwKCelqHnm5YJ6hsmyJ4CSU/Zm9n0AIY51Voq0ea6hfTaBykn0fKd6d/7ad3/pOpkHPUt07OH41Eh+CvpoWGItM8Ji9qnhi1gB40tLVwwfC9qYAsoTX5zsTKlpnqW5rIhNMZVffeNAU2JI0PS1vqiF/+5arU7zmDlzRhE9p1TjH6neFxqbM8btmkMZ4V2rlN36cWTcam3WYNtw4Gy+/8Du+d72qYSRUzHU5VeJKHyLBtzkWwUBuhQ8IkltTxKozpsqZOzGoM0cDBStH5H0HzGGJKTa75FTrZU8SYYVtTNP9S3YAI+kQRj6b4NBrW2996LcWQdE70StttaI7KU4rvkCW5Ryc4JOMV3EzNnzrWg6l/sx0BWAZBvWZ8XpRr7yWwfa+HzSsaTy6dHPQc7AfajkH3Wbwx8aK9DtEddK4EJXWmHBs6uY2tw6sootSUz8xqZ1spNOvbLg4gZGuph8JRdmJ7mEnqZ1NzuyfDMqRHTBhhUXTRV1ZB2SBLdSlJ2+Ms3573oaqEtsgnR7h3vv6c6rdF1V/gjWqRTqjoQk3GkS2idObqIsh+Sb10YmI0qcKQtSF8DuDvEBb16Ys2sbiz6pRrHAkQNcHSsiIvMyxJaLLtuIhs3ooS6akHxJA8/UM32iuFC+tNJwMKVVkrxkU6nMDFwobHkl389xBVK4hnT9D1vRKoJ7D39Dga985ziW8rmlj2k8HXQ1/cfQl4HvZcOJK2DBHIlucuS580qZVwjX+ZF4ckVi7QA+o3i42/vp8rfJlWNA057Fb5YzsrvxLOsUHsOlK5UYMSkjzMJP2wGyNF+m8VWbLAT+K6929Xi6PqSR2aid78+QrhZbEVKbJVVteQ+HrUlRfWsPtotNDppEpwWUOBarXKnKsFg1kzijMY8BVhskhJSvGXOu8WjoL49DeuQXgQFuSdUVJ+NFNDKb1I6BsENdB1nhmCUV3fYYnkDqE3EueRR4461feO/VP/SFd/7B1SUe9OzR4eH4tOll4AHw1Tx5tSBAutQJEIjQV1SRWT5PsShoTsVU+lrD4m/wn8sSVAlxGKWt5iD6GjYe+kidGBYahhPClXSDlALBFibNj1mmXtBUDm0plRHruwU4xlEWLMC3RFCqWIw3F1WWNRk6p1yIfR2htjXUCNPQSG1luIiYhfhJ1bRgAUMOQu6c0di5FoK4Eh4k35wcufrRxCkg9TF/0A/XTv0uLz3C2ICyby6K0ne56KQROwDoY529IFlIY2jnVAGLcqgpnbQkMJ61/1f9Fh0tsMCC+2MlgT443fudL/+xlw+08XmnA3B82vQm5AXgXegZpw5A9IE5HOYhItOH1GyGd+RLF97nX6oqlwrSVaotgtAMS3Ch1ZktH6hBNDeCzemVLV0g5gFSUkiI0hJAEhjZtWYRwxAJN7CBr5V1oGC1rvDCrxtNY0BMR4c427mVZMKbJRU/w5K+z11aNIh1TVn8Cp2TXZzGoIOMnDAqSDs764+STLbQbD6NhImNkEQXoIpHIGyzUNjaildSrAiZatThA8uV0Un+J7ysM9l+/i2bKuTDIonEUHmStCsxxzVsvZYP8ej2/PBHL//URVUPetbp6OLPhv6DMTOJZNPYBrpw3YVeVj2ulnOZoZnfE7KpTmbasMlGbNuSR674kbf61RGGLrv0+4UVwE+IxCmYtOrhM7QVXUqMz/m0shMu+nRKhb6jU/bFCoXLGa4AzkgrEecw4y5Woi4iZ6j5ExIbsrFKSxtJPiGFwE+mVZKZLrTgaiJVM/eF0EmfdTNi0ry2UsGLU6CsjllFtuqmY1B9YBU/RJFXZygZ6GF+v9h2ZqdKNqv5Va3bIuJRCbFqx7DK+EQMegUPJ3u9L9sKKcI5U0WzFn2Cnh585/0Xvv5jb/3yxQIOetbpAByfGf0F6AkqEA0bMGiFAADUexGWs+FFOXtlzbPnAm2k1LTGMJKqwchsusc2rFG1cB108G/SPbMdgXKmNOx9Z2UnhAG46fX9E8m4MuyocCdgB5vwqn+poDgDGtghs9ikCVCy67QLZIJlk7ZR0Aw7plZiCbGYlWuUBkNIVu5f9Gw0WqbiMI0TTNmbQDrRk14KEqIuGT6K4tFW4qymnITCGTo2DDtg5XJ8MEy2/0klPDGjcV7KEC19Pskbb33z/S/+qy+/+39dXcpBzzAdgOOzpJ+BnoA7nM8QX9xaoYTuGqJ4dxdYofKv4hewQ6cY5Bm5+bAzQNRO8RlYyGxFhgQdX/YJKzTM5K4YZjUQBu8RmMBEMcM1LygeyB6IsUu0Xq+Z/QTwHaOOJ0Jt+7USN+G27RQ6gaF5U2eLmVo/DVctgwlaQZGiYdcp5sVBrmB+XCKDcsfoXIXm73rwhA8G8B2m9lidHEi1ZiEJmqCN9Mf8dnjqEppkNhYVzFNMEtVlIRgjmMSvCnpCHm05rjIT7a2Gy8IVZ9EX3/ud0/nbX3j3Hxx26DmhYw/HZ0knANA76oUFCJCPBW2IPUpmmMP0VboncxlQlT22ywpLgJak/xRw9mRRrHQpO0JIvnJBpnaSmargDgJjkGwyys6AwDN+UyTPyLStEqAdDAijQnJKjPRsKTJM9dRWxjkgVqpGaXM2t7TzRp1Tkhq8KSTqS96TUa5VwQ7xOnohhElCiv5x4Ia23BqnmlZRXEaD4VGKAG/UAEkzgeRgyq3Vv62x37NLLXmznqQkX2lq+0WoiBVdtNwy83BB/kY4up7Y5xnDYtZqTaQnfeM33zjd/fgrB9p4nugAHJ8l/TXIDeTLMTUH8TzbWuUPgTYwTTeLEutkQ0BEp5hl0kWtVl5f6SsVOCCSDEyUC0ik5k1CBhpIZnIE6HwKIxgxhZWKKzbPrWYSKzGPNxrCd60GXqlibatmqsrMViK5WVwNKAIEkIXODSviJpCa3eob/TwsPd/9EOsqfReQla3oJJlzX2JiKBBiJRq2IIzaSqWpG3ucNWR3VYWqqcUYVVA4wQKUWnR5UYuwtqZaKHfTHvWWu5Y7/VtkF7s7h16Kdgp6UlIITh+c3n31nS/88AsfUsZBzyYdN41+xvQS8A7wHvAK7GpGwA2G0xoZpMhrLX3WYUdgm/pESW2qR+5UwS2xShU7lUvebBX/yZPg1O6WSY3LNCne7/3cksQMYEllZdT6y6/49NqZ/G3Ktl61qglEHXOQ5ptBZds1hoZ4AUOl+DnZLlIAEmiaMOfGzYCGdIifgd0kBSRRajczi3SbuF9gym1L14Zu4tjHI1Z9NR2U+aPL/G/IF3oMxaR2QZBMA3KOyWEBtEtir5E2ZW33va6N+ujQFfIo422FOa4x/Bd5xOUL0iu3xT2B8wJNk1OSCG5P9+7u3z3CI8GbTyL3oGeePixIPejjoz8PvQ8IcA9nMZ/TPnTAZKqvQCd70lpPiYctphhyXSTx9NksmSeUIBROuwoor6SMlOqf1XBPNIC6u6LuWki7DeZ4L6vd6kFaefhcFJj2TOS8dWNK+pVXCf1DVJUA3qG5/fWjOpi03Wx44Z9actoU4rlK4xjo4RaGcK4ifLUpxJrRh1D2KpXRUsROgyR1KLpRdykwcGZBHvy4F6a3pjwW5qCmCN1jqCCAxa8ncskylgztUxdxiXYzKORGBaeb073XfuPnnlT0Qc86HYDjqaC/AH0L+hOQGwBPjjbWbBeSkGfPS9nrXDwFMk/MoGtDknYOdgzTBsOJJ4GMhYkt6CFb5ea4KRtd/9mzypMyzr/6xogkqc2wY9M53RM6mf96uCPbcha7A62sldTEJhjHWI2U3MdqUFK7aNh1orFNPdvntTaM8TM8N4REl7Bj4+/RyYWkGUCE4U8nsOjV0Ci06GBs1eCvXuc51YsBwrLqAAAgAElEQVRbp/Z0ke3JwMW1tmLJp9ATbhRnOelX3jp+LeV5pGMPx1NB34R8B/LzwCl3yUWs4P9AAeTIfQn8gTVn39FkEajTDWnSbzch5Ys7JDhnfTJPkRwXegpLU0rlQHcZVDyO3R697mRykB4RX+/TLZmD37PQLg3aDlLspjIgsyrT+ohwNQmkcY1oh4GhDk3NElsiqqquYe4R3urhbGWTB0JzmdqhUNIWBLfyToIhXxMDA7C2oO6XdCzgmza05iU9+cdT8r5U4ipvgZT/pwfjpywmmf7Zdorr7P5Fto5BoriWdpKuUUkAOd08/HXB6UAbzy1di1oP+uRJ/y3gXwZ+aM9rrNBbbqwj99HGClugTtytS3nl9oB9AXtk900pBWQ0n8X543vmca8A/EPfYtghgRzveekrXzDx0/d3ymUBaUq0ioRTpOSd/CtsMCm19ZFMvpxhjuYGoSwlvlEjOYFC/3ZBB1LaP/wWKy+UcGTjmbDFIAXV3UaLEv80oqbRAk3D0o1kYLUpBkhCXLKFJbExDwx4ZcnN4yTW2RLDPCMXhim949yZ17VNXGT4MPahIC4AwBkQ+cpv/8J7r/yhL/zwuL/8+aXDw/H0kGxo4z3gVL4jU7iZkpKU3UCJnOUvvu1WaKNwaittBwzRYUusfBv2GJ+nPY962A9QiIWdUzdO0i3d292Va39TLtc/XRBO3/dJ4bDmJDhn2QxuTo3vdUktpv44AiWSk6yIET93Cj0KOzO4uJqlOkLosAlCYdIkdUI5s2q2PoZVtJhjFRebMkr7Nw+qRoMUQ44E0qeO/XpehstSlAzcOxzDJ85YB4oJR0vTRGuqonT5b5o9Zi0mOR+CSqEiX/ntrz544adfPtDG800H4HiK6E3Ie8CLk+1HZ9FBc2iLHlYByqhYpLJAqWiDeSrCWJVVsqxsHjFM4EOnmF4++JN3MrFmhoeREBRt89pBzZ5NS7kSY46p7aBFmZFlUiAv+hCQIrZAGOWXYoq5jVqozpY+QZmkatZ02NcEJgDyrdAqQ1dKbQ0kVCSxRyXBhbQ9Jve4UNilURH8Q24TVkhJjT7ldCvmtRiOlyyQV1tqDEKfxVnZKGeBIWYQs4MXira1C8qIknqstxR9XTGFTyHAOy/98He+/P0XHvyBK1U96PNKB+B4uuiXIPcA7WCEdNb9oo1fpe5ign221YKOLtgKUKhzzjQHjZJ3SiktEzzkRRg8/NEcnOJJU923vRH+m2fC0khgMJefjYUZbMYrCbLMACUrU5CNGApx5bMyso0Xq6/jgNJ4IS81kXkRyg4JcTtqmCbaM2EIBybVJKc+on0YDSix4qJBaLGLMYTLKXbdZMbK2AwXhCPm9p/TJmRQfCGt76Eb3hRjdZyAS4wNBoI9jf0cwvtO9lwaeZxb1aaMpKRvFikD+ImQx5brJDjfvf/ig9sfvPrOcQj2oANxPo30s9B/CvwE4cHZG/GkCGMK6IptKqIgBjZlnJR3bzhP7H5sdnKMv+kwgsvUHOMWqTDX/QH+6UrftixEc+lxBqSIMuXrVo8RmA6S0CezAwSWnIRMvxSjjfJ1/4S3FUfC8ULZdFLKonpRe9JGE27Dudyw5yx8/PpJUmbuIy537tPSKaNhlbugjIdWCBByQN0ag41rbYLLm0WpzoEVm2miHh+RcwzDHGjLMz9qn3TdtM3v737OPXl7yGfF5U96enD/fPPgLA/e+N7f3inkoOeEDsDxlNK/Bv17wM8CqDYeJbwGCj3bAkbsS65zdydkwSN1ri82Y99K1YwyxZRwayzRbttE2LB+s6dn7ARGWQXWRBHZVHvpvH6ASWZl2ClXJpkr8FQq3m5ibWFB5oy8XcZUbuZB0X/F1sbYqK4MuWhQFxQ5QGYjCQU3u21u/XM13Al3SjFZuEcu8ESW0yetZ+4nmtMlCrmU8wnkjh47n3FSnO5uv/T2zz+JUgd9bum4afQppb8H/AngJeADnOd3/UmARRs5z4bLL621S6Ph8XAUpEm01IwWMLYlw5CXNiiiVlOgjDmIR8UMkiBpK8D2A6pitUsM0BFFwnSoYLdA2kJAuMIlamNfwCEkSRjFifErHcbdioBfUWqmd4Mx0Q4SXaMubeMX6rK4u3MAIY+UkGDtY8WpyxntOwCDNZLrz+3jf6NEbkAtDKkvp6Yu2eeupzoqxQuqfM6okgftrMVoZWJjTbx9GkMsmbmFC9HJK0hhrJJqZTRV60nxQGCzWWYraz+1lqCP9UbkfAa+cqCNg4wOwPHUkvxL0G9DfxdO7cz4EdDGVfxr/NFk+RDyqaBauyvldKVvRhd2q3cYafgMa8azelzcjiY1XOBCPY0FeTch4iVF6eO68Q3WTC0gDFZME8YlIVpcZ8cWCfcE7HBYMDKRYctAJC/zS1dNM66ONaKIIYHBQWvmBVIZajtosIZ62TpGe079S8K6rl+UxcUVzVevwKx56iPiyu0gzmctuWkSvVMKSIiqb9EpsiXJ/1/MdT3y0JZHRfHCo9ODe/ja9/7mdSoe9FzQE8Digz59+iPQvwv8RWD8XLvFX2nR15z1o2otkK1UdSNzeApQQcL8szPc4mNVhZOmZfvF/ZIetkK3+DNzmgTOWBj8Pg/QWsYQmFdGciAvPbSbKnhzBsn3arraLHPKm8sq2fO2jykj69xesGEZk+bLNRTqBVkJQc+/WoiRnKSYdchDwsfknJSU4dTFhgweQuAwi7UkA5gJuHCW9JrMjxTjlIBANzWTqOtm7stcQsXuc++k5qSTyuvffeODl3/00nt/9WL5Bz1XdJxSearp7wJ/FPg2EFb7ydGG1MAToA3Ou0pqPyVTQFFE9TLr3F2Ls8/3vnacdyu0CInHLKEyKMeM/4cd1FSmGKMVF8mgcyJ0SqK9SBQpdUMUIbMaF7fIUvUPu99tY+Q6bpxCkCY1gOUyzf1C0toypBsdFQkd/LdG132BkIZN/3SMZZKPfFBlQERGhpqYp0ZOubpLOGQOk7Z8aia2pbaDcEGO97qkC9npAM4lL8WsUk+aw1OjXZVKzajQ17/7iw9f+Ecvvnf8EuxBla7DyQd9dvSnoF8B7gGvbq9znrL3oUYXuIw2SHj92iNmnQKYP+ZCDs3TQn9dAk/DOSl9pBbmWZRWnnNXnPsSMP3QCbIHYmZoD32wg2RyLcw/s5J0WKTy9s9eAgsvLcly4Bp2HpqogrfJyjuSJNdGaB/RFTR3QesCaeVUgVNSkzcXETR7PmiQp0AkCSc5JCpGeF7lKTEzw1BomZTf332S5YOXv5t6MWmX58vf/e6DF/7ZCw/+98O0HDTT4eF42ulbkHvAF4B7yN/QHwptlM9iyYESmZP2JhD6Jl5+y0r+t8MzGZJGMRDnLGpHfgR0zUCzetMaI6PM2b2LBADfjdF84tsPvgR/KU48JjsJ8t2pm9+lXgZKV4f5V6l/yhtjUtuq5odFc8VL79OSC9nfvP2jto0UCSC0xu4KFCo81miBLnbGvljVyuPld6dECPuf6FtfpkxSHxH3h3YMQeq9ifU/YpgUlVn/Vohnocu+6j/3AO1QlimqX37t5uFXXnvhwdcOtHFQSwfgeAbom5AXgTP0Hk7NnHLNjAtMn3fLvG71cxKvm1QoMMfXz75u5prNhQtgTQhq5LUbTZx91SZLnwLax5ekBhUlTzvbsHkRSgCNSzM74+SbQ/gn4qabuFxC4aSa+j4QFxLS6FCLOrBgzEQQxEFMsussU5NuLnAOuMWdGnk5AmPFJFW5leBrH6RDgSa5u/MyCmfJSdKEJxWYJ0uYBI6G5Vtp6kvRGunmHbEIr06sDbHkCV6U/N1713Fq+tfSpsiXvve9h99/7/6XXhJ8aynuoOebDsDxbNCbkBPkn/hBzMXELVPAqEEb0uVd8OvMVkDJGsH0uzccQ6DwKIRuMd8BRugQw4S33Jb3evIyvEtIdnStBtShlQupNWZz678K2+7MmBCGb8SUKiF8FRUxuNru82DYYczR9rGTY0ioisHRTI5zOQ304UBGId3Puvpfvn+zuxk2F0dYyntq8Wp40an66EocPO1gK9s75l04K2BUYyYIMudl/lZOn9QijOKHWJS1gzlS0Z1H5KR4/4X7b7/++v3vvyPf/uZVgg56LukAHM8MvQn5Vch/CZymDaSzoUWaVnq0gYazgRGTwNVOUp15puw65WpQCDokQfpk/4pWsU0ds+ffrYsbgNWF68XWzppveVn6pqGDlaY7YuGgWPe4YyxhBTIV9tdMr39PRylkdMkuDq1Cw0lgBjGkmHdpcSQwjEBqz7ah2t4s3+KBQq7jJPs6/a4bMSitXrHno3NFEE+3ezSK05WbxDjzJtaKzER4/XFVtb1/3C+4kiZXTaZdp8iSU/Xh7cv3Hp1/+Morh2/joH06AMezRP8H8CeBE6A0W7XQgQINeljhiYVhKDNQMUjXk1vlig8KrezTkkebRmjqmN0VSX626BNeafQhzKHTr2PYD6mYqyZLVocRnT4VdhCumn4G1lFdt00E1vtsXKdll1FDhlCzKPvb48UhIBlLK6sa2l30NupSTe906Kb6P+gxxJT+LR3E4Vlsw+T/h72fX4TyMy4F/BU77Ti4ofn3VlxUGpZK4V1qMl5EHteQ4uHtF07nx8C9n/iNn7suz0HPLx0Xfz1bJL8fegZugTuIXHZdaEltA/up0yzcWJ02yw62mLILnYAw0mSs9iHFtQFdXlQqi+KEUueiF6p6RWS7KhR29ecIeseFPsLVDwwksMYZV4dZJKIIz8hZ1ESPMSBDy4057gpzyjehhSjemclC6l9JQqz3FVSvkprqwo2QGJpA5RktmTijqbNk10FWg5Orw8pH5IaANCls0SmGq5wK5TilxPp/MvuTqplBe9YWuOxnSanL/ALoGeebuw/ubl78xm//tZ1yDjpoo8PD8YzRm5AToMDNAk9QzB7ayJwcKCdZkpC1pa9bSluLvso+R7g97rSVRkjzHTwDoGFK91AFFWHxvPLSqGv7NroCdysyUvvzC+Kp5NuwgHo8N6lQalG4Hx1014WkJCqIDuSmQ7irtZX8cczozv9y4/CWjuTVmHQeYzMvXqRaFP3RWcy2B1NPoTRI52mYtgyjYAhiyw2SXq6qEW//nHwMC7s/yTNRWckraOXS6N0hApxVISqijw+0cdCVdACOZ4/ehAhwhp7t0MrO52Abuc5S1l808ysmYNGKXU5zC1jQ2CIP6BSzs1O1ARP1AoaFzB0JJWM9gJpqB0j1q29My+2ilMooJ/uukmtDEBiI0ECBHaYSbI2mNG9UUwH1VZ68uyXkFDwl/pcaxB8l3So2b2jYW9wxPQOI9Khi2QtZ1GgEpbHnxlhzGKNE2pObzH+3O4T1dOF1nzIVSvtOcvb+DEhzfKb+k2H1bRWP2xCZGWtUwcwrtoQ8VO5OGxT+6j//W7tCDzoo6AAczyS9CVGIQO/ISmUooFNkE7hoyHP4qttOF/LrFSDZJxCwoM6YqBhlXeKsf72oIYR3MsPULeCIZ2wEWl5yGzgCMDIztmWqpj15LBh8RN4cyVfGX0gVkOUmrR2jEFv1fIjtcAThjEbDTHO8dPF06COhEObMAfFcFTEQNBEKWN4YdAxTuIXzsA9ELbloyX1RehA+ThydzBWnEZIGSWPp+80cK5k1cmZYeFB6trZQhdyJiorKV77/S2vtDjqo0gE4nlX6SxCFnKAFB+w4HtAFPLyftJI8BSpPUQCTsS8KlNUZsSyTkgtltKKZgmBWFU/NtYAjrL+3iUxlAXHatilx8VmPONvS2/KBBta9QPY1LcFUgz25+jPKsdLXZyXmMx2LpRaZOy6X2DdRcT/MV2tQljL4U0UIJPVE8YTPskehhp0WCxZNpHb4Y2X1M4oq519KapYgifMauhJ8lJjzze3j74jKl97+xeuKOeigQQfgeIbpL8UNDXWW20EPbaRbzcbYZ2b/Frts++NwrNbsi3MQU0FhLdh0rRCPhEVfgomQv3/bx86RFkckybpPCGPyhdSrMqqS3mwbj6Tqc6PurkxBEdtLkzny/MSfjah3FolN56F2Gr9UJx5ji0b6mRVo00SFymYaDqyGs8xi64IOm/DJll94Y3Iv17xtFSAlegIuoUlkmcUsHhClp8QrMUcvZFZvyD7dnF5/+5u3j9860MZBH4IOwPHM0z3gi3E5x7xyMQI7kfPhvG4ub07EeN59EJDj9RJPM7e2MKXUN8nvZv8GnWjPMMLpvvDN2qV6S6p3U5fJ35AZtIvkpMavkxve2lIot7h61NKEGErzyihocnhYQBNn85eZ5wvB4m/f18mBIWx6+xFVXSzJ1xJN2n+7N+6QpEwf34abwTXvtDB9EhyYQUmkNn6LWv4y+9pZcg34kO6NKNJOIq997xce3f/JFz/4B5clHnTQRAfgeLbpTchLwEPgFtAyuXaBLnLln0g8+999RnUXhVusCW0oWdOiQCvES0hatJpI5lzgnlBkQhUUUzHBhG/sLMCylD1PSbo8w4tO7bA1WHcdlpiGTStl9aCSbLlWx1hghbD3g6HjLAHB5OMJNSogqDylO6Jq08UeoyId/JpbQMr/ebSUpEnvxrTHoFJEQ/UVGTIpS977aXLYLyIziJngSxktg2fO0qKaNfKoGIuGdPqn59e+94uP7v++ew+/vYOZDjpohw7A8czTz0AUeARVnHqbRDFTakUbRrOLlh/JIi2RSr3XsmPeWZfhBZ08idIujRl27BvjPrC/UTGZhFJKXKfR5sUFNTSnFrzoXNt0zxqWVlymcrmp0zX8N7nidAZYATVOAg18irV805djKf1uX7VFFoqWRvmiWGm63EF57EgJJ1WlqM0rLN3WjYx7XOCoi1Qhjaa5YZGQiqC04dKUD0RSIAgoEPIpx0z7CGZmsyq//vY3Ht774/ce/pMDbRz0oekAHJ8H+ouQ8zi0ctLd3zNDmv1Xflud2SRPYMVGTthFC8MUTlqtAvUWKUIS1wrpjrnmgLBMWExWo8ChlB6YQ2ve4F6rQaml3OlbVXW133Zjn1OrkilGw1gmUx2a9L/VkngCKHR4q+2i6Nty2CQZ7zbnBHTMZSLFlVJEVQiSq0nxzpMaTDoeTC8F0OMwFB6gPTttEurGzyXnVG59pJ4tFJoX+DJznqGK19/+2sN7H9x/9AcPtHHQR6EDcHxO6E07KAvIam0F4Ck/fQct8ERD82bS3sTuIR6bCBXZyYEJ66wL0hDFWVpzviONtkLo6sgrwoveNhFZ5Wpg8qnXmp2gYdzlUDWl562F0nHNiB+l9DejE38ywKz2Dl7ZMXkZbVz+ORVv9skG57/N/owqqYM4VWBJXSCPZRjR7HWDSHWBAFjAiMUtGpdPlEhzOUcDd+Jfu+ZiC2rza16pUUZVzoY2XhS8udT1oIOuoANwfH7ozbHiroKbtfeioo2Jp+CJ/m7EHbsyHXNISKLosJBzcalFHXPkevUxC8dAd+9I/qxsoM/auXKpONsk0UGBCE6gZBJlCzH1Mq5EdsJ2Vq8udSU13BCClkW2srL/oD04Wk6jrHwYZG7LfanJmvZtu2j8rhHE2wHlHOnV4cge7QM02z5yXlZg0q7pdy4UqP6PqelKXWY1uk0YV5+YJQbR0+tvf+NAGwd9XHQAjs8V/ecQQB5bv0o/cVe0sbbudTZf2enpo7ChnVx7Kxa7Be3E1Czrg7h0vdUSuzgbsi035adVmKXDoJ6gySXSzeW9DulpPl5bEcZk8uv6xaTGwIsVV0lbSlZSogpT1fzqsDn7dOGH4Z7oGgAMd/pNJBO2CE/fND5nZOMFyZqHH1PVS1M08KW0GDlFWKwgN0JHU+kLGNF/cdgEsA87FICKnl77wRuP7j040MZBHxcdgOPzRmfgdehPkpMj26HkaUCa/eekKqH3CkyiPLvkQJG5qbPGATvAyJQxu7gWQoFs6dmIplqoN1KbbmRu6pnWWCHgCOwzFKmm3gVqbobsNjCdUxHK3bLSOxnUMOSbXdfURTL95byo8X0bsCHHGmXR1hDhNG+lGRuVmk5yQv4EaOYdo2XDR+uGyf9QY9pdn1JarNz/gZAjxfvC9ZvKlamgoM7bcRl2LJDH6Syv/eAXHt37R/cevXCgjYM+LlrPpwc9s/Q/Qb8D/QHkPs7Z/Chyl89ABDkmRyomhgJE2m2eJZAjNexeTKLqokyg5oKIwS+7yPzGPAvRWNtIk3eVbLsGzlm41kfxjCqpLIMMSQ0vi9ikpk5lTfEyM7DAXlUuuuqZAsvU2pL5cdmSTdFNagQE9nu2G6ZUGjzaDa3o9NWw2f5b7GJese1lzza/eTU4qd5gX2fehdkvnq6OYZbFelyIacsVnPT86jt/69Ht77v3+DiTctDHSYeH43NIfxryA8gJ+hAn/ZBoo/LMZ0zmwCqeAv6tTCXWU6NVT6YscG8yrG4AVnLM0mnqb3TWZCwmfs1sTbtttZmWJ6aqaPEHVKa5GR1lScPf7xulv5L5U6rUSMGkVqnF6j6Mgl8vmq7U8iAs1/LsSmjZ+aHvrFr9JG9qhCpDeq3oJ3zt3+RNafIJcMXGiwneOM2RjaipXFVDG7/3QBsHfex0AI7PJ70JOUPuQW9GF1dIUT7Opnk8ItfTsQdmTwamb77B2X936RTTBXpvh1Y8xJpPFtQkaOWkx/TlSnChGO5szMJsJAYHVYk5W+jBEKsGdT1itpebarkWBXyUyzPMvxAGL4TnRqjdnrVa/kDJPpRZSVszrGzpSr0GJw0BycbXVZJL93DkXCZzXn9p+BcQpLfi3DsTpIuKBH9maEHJCqywqlya4CRiaONXDrRx0MdOB+D43NKbkFvIGXpnv2I/0+KTdEYbs3cknMwLFFJQQlGArWPvX5nQxpLBp9QZIXEVJoO9tIWu9pjLSf50BidDgYQbMhvv34zUyO6fs63hn83zaFiddJhqZKirAKLtt+KUtKLjD3v9NYsvUTKnrn70xyNLRj8DLOTnaHqwwVIZV1XhIM/Ezh2jtaj4sdk0bGrvcMJ8G0eR0zaEIOcqbx6DkjiNIknsCmG0FC4WFeir7/zSo9vfd6CNgz4hOgDH55l+Ni4Eu/FINkKNGc48MJ4ZSZRwFlVBhn+ttihkTLKzNV0ruUAP8+6Btk5Jix3YsVVxUy+vYlQEtq5Ls64x1yiJIpOf8Vw90er8s8OmO+SQcElTskaW+YBr+Y6fj8LG6ZLp6x8VMVx2b8wf9NOJ3B6QzaLmgT2H58dFUgO8Zjk9jpl3hlIbSkI5mdiPMpeYRov9q26SvaoNyCKn137w3zy6d+zbOOgTpANwfM7pP4MA8nuggptpDipu2RFZeDp44a5YnZKWIMMDBVWsbHDHvwr41RRLCZ1WCsQGi7msdnKfN090eCL8BH1FsheBa5EQQ/4+nn8wLHVo3iyCtAJSccakfFPXVFLRvwk0jh9k9Rb/GoDSHT6aBF4eGAKsVkxqjv5IrYIWAZXZMnPWfK5XRSHivRDxnKuhuA+3DC1q3unlLrdxdNBk8N7Jaz9449G9n7736EAbB32CdACOzz/9p5DfDfmPAMUNYqJhf8Mg2f/ypqTVrHQFOOjlC2YnB+yruYIbACvfDHRZIiYh428PUxyUTA2lFWlJyk3F0ZdrmEAPVMtRDEZGDNkYE/e4XtZ0y7sNgjfhjLZtsobB1Hbcmq2cIqkM3pU22BLM6jVDtu5tXTpjL1qYPKzGrHZjSiNTwLiBjkMlgUJ5ujGAybGxDYydTbRTDzYDbAU7dmNaZfSsr7/3lYc3D+49+gMH2jjoE6UDcDwX9K8D/yfwE1Adayt1lgcZY4rsXSBoEIDu55qXSCSHWWbeW5rmwKsATfUucNGbIYm/c5arDGpgIxfeY7X+e5QYy4kSZKd9ZwC27SC+4UMxuVsQO0azJa71CiubJTSmX7zH+prIFJirsIdkuiMhW/vUgZkuAFVst6Cy6NlLwOCAjXcHEfo65tidhRVZsNlgCRhEHqxOkt/PQUNoKnbOOwvsSxl46/Hju9d/9EsPb/7R/bvjvo2DPnE6EO1zRH8FCtwp7m4NaGYLUGe1br9ns6VgduaaPVkiEorRRpR/ci54PLJcwJCySMnI/CDXhaYkic9u8lNrZQs9V7dWFCEuPHHa45mlUXWYudS66JyqU+orrAPXSLCo4E6LtcJLjZap6yZK5W53b7R9xz0+jTSXYEl++7u4EMobNjgnSeEkBKM1qTKEkItsNdWZ5oyUuoqfxK6m9oiXuzu5d/61m7vvvPz4/z4swUGfAh0ejueIfhaiuFOczjn+SrSRHQ+9R1iqDVihjVmBOVAMXmSfN3/ILKT5oN+pmgXqXD27Gzb7NRRcO8YZCYWeVRArSuayqc50eDXprJBpuwZ3RO9vyC4QiQCDkGDDtHNz3kO6Zelu7XS28NAssrOKUirrDSUuhFLqxtJYaWqUZJFF/vJ8bOfJ6F8EL2Wvjk3WXZdYbZ9FvFzgBBQ4Pz4J8Oj0u79woI2DPi06AMfzRf8JXjjj9B5uveN30EZn9hqv7lWGvGEudpdF1ogdNWSHs5tzL4qyGb98dhMDPNX4gTWeyPpMn7ncDttG0eiR9X6UGXaQJRMXWzCHP0qChmiaqftIJmUEU7tN/HVTSA96KCLvXc2ICo5jpqLZomfJGS0GwJMCUxbV3E9axVR4tGLrvRueusIAfXeFzHgFCXZkfj2LPr6BKFS+8v43F7IOOujjp9vPWoGDPm16hNMtzu/g9lU89sj+Qz7F7H2so6KNxFwYSnjWYViR+VTGqkqthE7UZbThyutkP7Pm9ZtYUuT2s70YOzo9Rc0jUq6sDrZxOMWyo/wkrAigJnxZ32poHewEl9pfVkCQUEgVntsBWULbkswJKlTaIVSzs8oqs5kdktUaxHCL+Fe8KdlUR/Njp8z+8JPcgBW1B7dIx2Y6bJVIvWmpxlwTBNAksmb0eCrOIlVwc3p4h1s93375g785ZQt9L9YAACAASURBVD7ooE+QDg/Hc0dvQh4b5gB96WJ8FlV38wQgViCjDVRPCRbhphStSYtcoFq4WwLgGF3E967tBC0E9e8cGNZxiN+DNUHxpU6myf6X+AtvvwEmpg/68rtlUoRFLvFc88EcltDVuAEiqGdwFjXN8RmvoD1AWw5wNhJ4tSIypt9tX6tE+K1PaLqmsHTV5FPKsbLTrC7NOac76BLtrLDspJK7K+IUNwLVm5ubxwfaOOjTpwNwPI+0YY4v4/y7cCtmfdoJesYBM008LTio/g+Q7VnCDi08zZGWTkITmC7QlFK6C+S1hnH/5lzdEnI5GuBjdSkI3MrWBYJkzPoTvEUU7bpoGdqjH2JYa16haOtFcqwTHJTSqdEKhpTVK4/bAQ31Gy/SqZO5cO61RucZBKx+5Lap2lRESzIJrzL2s6dwdluIR+54/WrqbmnMR1dxAHpzA1WInF5995evlHDQQR8jHYDjOaU3Id/A6X2cfwy3NzGHXvBtIKxyBGb/R/c5mwR6eMYfNbB7r8akWx+IxwAB7fxd2EHaLdXYUyAAk86NMFrAPse5PSf91wsoqWpuelNFthOtSxtlGesZ2nzvxeBsffwJFs4AqQEEc+rMUIZBi+EoPNqVz5GWuiy3graPTRENp/Vd0yKrSPGmntukgR3EkkoUlsbAgv8BGMt3gtfee+/m4WMRvPruL06qHXTQp0EH4Hh+6U9DXsLpt3H+HdzOFxK05u0Kyxfz5TWIpEgmNvLha5mDr7qdbFmRimDKSdQIh2Ipi8cXBRrDOQBTs0AwLXxk70vm6Ss6n+DgGynmzqrM9seUXJr/OMMy164qx6eme1yyyF5aNDprtsHcLNGnM9vaMTcPPw5z0RWmNKLiHEqGL9IqnwpskqLoFcmKYZVLcKf66o9Oj25efPnBgwNtHPQZ0gE4nmv605B/jtO9gTnupvmU0QOmr90R6D43V8aJZ0S+iWGV3fiv2Bgxxe9+0/ffkcmEF9xgOvTITKZdDlU9KrRvJSVnezCv1kr8cbKrYfk8sT2r3Clp/1NN9+FcBTT+dw0Ke7G5KbwFVr+6Qk97aw2a468fRA1NVbiAqJIWvtZWhO0oT2NgwdFpmwe2KkTx+vuPH948vnd3T/DfN1kOOujTogNwPO/0JuQRTvdw9zt48YQz4iOv3Ea6Z6It17xcwgH+xC/Zvaz+s9Qn69ZiCGGX9YqPVmWSwGYn6VTQdjSAdnh0RqjRnIVM6wK1RoYSAnZUpLIENv1VHKpx6UWv5BqZpWaUHI/50eFC2qO63tvhJ13T2o3KXFwthIXs4QhBbnPKP3RNnJmL1UiejK4FMMaD5AgKjwE4ZVs6Qii1LVELXKd4+/8k+sX3v/ro5uX7d3eC4wTsQZ8xHYDjoA1z3HwVd1/Hi41hJs6CIZoLFie0MTP8/+19XawkSXbWd7Kqbt2/7nt7ZrtnxvYss6xXw3otBG94JSQj/IbQIhAtJITNj4TFroRA+AEekAdhIX5tELYBCyEBErLa0kqAxAOyNDbCXsteyZYYGdg/dnZ3Zqd7dscz/XP73qrKPDxUZWacOOdEZnX3dN/bfT6NejIjTpw4GZm34osvIiNVwYw9IKUdlBIX8cubbvFpw++H0h0t+3SyDhKDTe/V9Rwyl5U9yEpcOymPuNOJG2r5lvf+BeVnJM+TG8jp7IlNGsyr7jpgl+wY8w55Z+jfjvbUnz1JdlrLSUYanlVURJjtx5V/y15kScIn1b20YLZg1mQPlEXiRejR1v5LLgps/RGsm6hpqnp2Nr03q48JsUo08ORRGNsEni3cAJ+i3sXkHZzpHhri15/VQWpjbgVmsI2klHaY8h4pUfRSgMiy9sxG8nvs21NqpqvOimwOhDfKc9Vpvod3W7Cr2rPMEq29wNWO6Ukj6PR+oE09+2CIdtMXouNEy9iskNziZpB28U0KG7dS3SbIgi2VJKZ+AVBGgsWpI3vopzdlUekjLYr3JvlOtGmWPE2htzBLi9u/2WkWA8SoASLG0dnP27UEAo8doXAENrgO2sXkFPWLmK8fiwdiGwMctjDMzWZDTJsusxvWm2NuPch2DNKffRE4+cfGBfaivT09YSzwzAvmQoXTmGQYZ6Nty9710A3okQ3o5WRHLgAkXCW/NDtwS35YyxKUJ60P2rdnTblFKh95jaS5RGrQXa8dW4Ft2M+2d48gqKASMIyblWb5NSa5RhbAjGmFChXAwTYC5wpBOAI91pzjDPVVzLH5Wc7eO+g4QZeSHXhKRneQOvR+OG3a0QfAaWdgvFqSVpdEki9T7XkJZx56+643SztUiwklvbXiQ+rqZMfJ1HXeJEpl9AJmet5Q4iMjWS+Xh907ZDPdKGgyPMXanI3CklUdas6CN+U4K+318t31CZ6UiwjZcXeZxqwKZaflN2nTjdTSW581VNI21vNuToisX3lVb+cqvmJkEVO1s6xRTyo6Pv1X2nUg8AQRhCMgcB00x+QU9QuYc/LeSscArMFjv6QjoyZA1u3linTWKSZ9SO4HWf/jL4PI4PXWuUF5t8c+eGO8mx84w1NnxYn4wFjasTn0IudVZpAEuxds/9W0qc9Uu3+66kV24cmplBOsMJQ9KbHHvmWJ6NLfEOcxkGcsYzNukHmctpUoK293G4z1VZckBv0UUHqbWreiAV2wfB4ZyzM0Z1NM6oOTn/WLBQJPBkE4AjnWOsddLOeYECooWmBK1eaPtcc2yNiwwdsaa1OjQS+MPkzNWdghOQZ916X7Y90Nmw7b69r0OgYzKAQgmzdZvejvdpol6Y/GtMyD5Fs5hh91Hx1mpghKbpYRgtay3QQ9b0anfYR/5dNGgTG45rkopWNAb5ZTIu9G0DBRaI0JoE7SKNgbel+ee3lxc17drxeT2Eg0cD5R+usNPOP4eZwBTCCgYUk4UuqQHXTHyrhQStukEyXdQV5XtwDBWjeKbjhZWoKamG1OqWwJ9CmdgbMmdH1ArItnKzFlrrlUtlBL7ie5BSoYEVV27e4CW92S0ix968dtimILpDbSgDNXeXHn/vZBKleJjZiby7ylrjpvSIJs0/tze0lpxmgozRW+NCW0OIuaaGECNzhePr+s3p01twi/ZJQKBM4BQuEIuPgs5gRicIOKbZEgH3bRdmyjS3FHvUI2kFldf0DZJ1VVjSoA4Rz9qRjypsg6MGT9ggwpyaVE7RiPXIzoVAoZGKmjDV+S4gPZLc/YfM2kTUk2z0hXobbxq5Tu0vrNNgw+YasOnryBrjj3N0JfiALBvSOCMAwOsBy5pT9Mlqm2CV2b+F47ASOXRvSDwekTaDZP/xi0VpMpZqfVyay5GmwjcJ4RCkdgAD+HM6AGGgJR8q1tS4FYo090SIYuZQ5eM90CUEPYccqE4dORE2TZ9mXXXFApCSSmQpCYGUFaKosIzKpF+fFiS2rxgvQCKMkbWXWO4lI4hS7eTUKlBk48Wa5ThNu7RoD4YnBrw53n9oDTW986XBeSb78kkA8/OelryNweZHo29Iw0fiaqdhbNasqYHp/+c8cyEDgvCIUjMIDPYQ40BBAaOfJKf097qBG2xzZ0is4STqxhcTK0HbH9OXwDo1fjdtyPtgKrrBZULAOWQeadnw4sSSFlkLwfMTRoSGLwWoUKwXdl08vsRCxPD0iqM6LrzYRqoqUQ8a/yKfxv2EOntWTqiJI3Wrah4jEC04niovJ24J7HGBft3eoCr3CyCFgtuF5Mqukq2EbgQiAIR2AYn8MhgRnMWLIlaSQkw+6VYfQ8JoEYRvbLbf3Wu1UXO0irnn5IrwlQWqtbl+FZ9lieWbZJNhlWlPWIqTP9NT4VXtJVi2MTXR1GvF7LyOck36zdIUzUXpiZCzeXpYkRkWzzAbpmvpks73kpxlSHUo+qTunTnXDUg01Eh8s7u7SsF9Wlu//aLhUInDME4QiMwl/DJaCpgB2caLZhwdQt+mOzVNZXqeJpKUoYgSzb8wNPTckEBi+AhD8xLHPVDxlxrk/zHr3/oGg/Qi43iZ1CMjxibFZmrHfNkiN+KnRpiTMr4FRmEPZk3pzERnw61V2HYXzGVkdmn21ewDEi9Hik1DtKdLdwYwBzq4y0rKlhJSmmRGg8af1fDzEqYgZNmtXZZL7Pp8/HF1ICFwdBOAJj8Vkcz7BcoVrhxBxAq7UXcNgGm4NUyWAGRH4S3lwyUVBcrLBTm76vEMPodIyeucn/1XVZ/Sj3Sw26wvK6PM1A0Rp78Wx2ut6+s4uQtDfKCxksQQUgHGbzGiqY9BuwJYbgsq2USJWkBrKynO+SOJLZoFZkqh0lFmPVmjtWnINarsRgQrOi2W79b+Lrr4GLhSAcgS3wV3B1hXqB/bexz4kE3DEAuP1cP5CXuRt+kBzkpQAkvb4he2R1bcaw1tyKGVXb8/ne7FLrBmD5AdhkDiYzVk2UeOOMykhOYHMmUdwNWd8O6liOfBkmMWy78/K3XuUunPISZL87xIEGqVv7r5CF7OstkKT+6qxERSzKnEEZJxMlmodt6tXyEqcF7TjTPxyqF6gZxEfLf1EMLxA4jwjCEdgOn8O1D3BwjBVwqH+hC2wgNUsPCpKDLy673kSW+h0fM+7s1AW/oswvAyA2vj2bFvXjdHL7/rvcEVLqwSclWZlse9Pumynp9IRdq9pbzCBtZD0DdmwZzUoO5DxR/izoS3OkiFRHaddVqLKm56HM0SpGCoNbaEmj1zO6OphxacUTmlBdX17ELqKBC4kgHIGt8RpoD1PCglFxPgOS7pmRvxZL4gBKCXDnrkkZeD/2ebr1VogjnwgbZTkgM2wS8w3XObvMTCNZN4jVd8p61TflTSZR4F5eepETkDQoyQnpKeXp3b/JabJRmSYK4txSqii3KnmwWqOr16SXaT0eK3bqMWQ+5dyRNKjd3UQ0/kaFoinjjLDH1SXEEtHARcUDkfRAAADwC7i9VuenPXM1994wV1R4Cz68UnoPMXObKZZZLR/qfryVjeM/35ciidneSCO5lvSD9b0rfwMM87TvmuQOHPqqG6ugeSF2GFnVnh/fQ9qLFncZ4cHG1Lm93GVtB2L4AbrP+2n71Nv6/wWfwj96pAxFpG9KUZbun4qvzqBL7Csi4tVqUr3dVB+9tIp3XwMXG6FwBB4cfxWXGTxBRZgm/Rbgkgxx0B0nXU5uM06WyIxzzSAZKZq9mu1WR1u4kPw06SjVcNwu4QylKT9KtAHLj/k1GVN4SIukSoM7CPE9tAatntS1c7ahhSw2UF12HZSnyNbrFkO4H1nNSjmX0P8/fWoKceY3gox095TMB62fSyKsppfws5PmW8E2Ak8BgnAEHgo/juMK0xqrM2uLIvkrm5KD/lj2APkQs83K6QvsUqlDJVu74nyJVZinOsuiSiktMOdN+osdpDVGAJJ2tGYletdGBST7l2fdc9dfJjudS9LQHyerOFOhJ023r0OxKOerewX6lVxLYarNXTrasrfOJqVchQCKyR3Uo7e1FwITHza0gzcX+PQcvznKYyBwvhGEI/Cw+MvYX6KZYLXECakeAImuoNmG1MNzqC4r18PLw1XDhgc6A5Nn+O+euMX7q5Mje3mQJztmrStAdczcO+fSf4I06JDNF1KsSNLTrnEyKmGRJ8LQzVKViH/tsirI5Ni4k3m9ZXrshlc+Tp2XWKs1l5LwsJour64sabqD75vj1wcjCwQuBIJwBB4BPotjYHGGgzdxBFSeUKGQ8QxRKulwBgaMFo/Ju2rRP8iOKqmxxH4gmJOwlIxEzPUINuC69SLPU+yJKvEJ+1LXLimC2KS82N0WvprmFiTRvAMlS/JG8rrK+jShRAOyyJA+YbEQQZnshrTcOs+d9SgZnIzlSbM8xM+s8DszPiD8jFFbIHAxEdQ58MjwGvgIZ7tY7aNpxEpGyJ/evJ9WNtlcgyYifa9vLAPMc41S6JeR6mWMomySbi0OFVeRsYF0vWRiSfbSS2clZp+V0Bq9MNNwmETY+J77JtIxZLVYF1sO3mwlpz2NxZuZmXGPPIeZK8PzJtl4ZqxSfUr2JEMea9ViQwkTM02yN6hA4MP65Ay3gLfm+K34dQ48ZYhHOvCI8e9xuwGAqsJK9gRIj61lGebrJ1AdCfK+SpZVNgZr6TtpMklP6RWVxH+5m9d8xWA8XheuPRQ64DWlGOIxdnHLWzmSYUpUumoAbPtPb5DDPErEQt2j7LlKsth75IQZxAOjaxSJlpMW+dJQmQtel5w0VNFqgnqHl4RfQCDw1CGmVAKPGD+Gy0A1xdke7rTbT3ZwfpFllpSn9fsYaZeQdgybA3MeISubqP2prm6+oiJCJRmVxZBEYG0pS1vvV05wt+ln5zadZ0lOWXeBtBEqvIvV6eqwCGWXVVVytGnh9VPQ/WeHZE/cWJEXYitkbsJOF8n6xR9yJLZdcWKgQQNueDrnnwu2EXhaEYQj8Ojxl3A4x8kSswlqsvqM5MBgDAB0j+4Uz37ZTd07h/Bs7RBqdd7iwHSoD7QfjxBszkSvbEZBmSsSuV5cxqnMo+6dWO9i1S1j5cGylIRTf8TODHuIZOSMJznNrwJsvjGb12B9gm7Mwbjj/GFMowMxHeJohhkDh/hpBAJPL4JwBD4UXMfLfx4vMiYACFWyUCBTpEWK4h96jG6u6hClyBVLxEFyun7XQ4sudiTaiVmkwE48OiIO1PuomyjUp9es7jM9N6548BOvTuxprn+VfahuZ8x9iudtOLC2oUg3Uf9q7tBlFHIsgwdVPjY3TqYRJsyH+OkVfmcP+0exPjTwtOMhlcNAYAD/Ee8zGgYqNG1vp+kFW+nesgzAmMIoFVfGA2sb5cIOcZwqE2pdaqkKK4ZyLmBlierIqEKvfhhc8qls3GjdLB5u2/KNKBY0XAF6KYb52PQ2TlYqnqXGIJWiHMLPNWwEkWEAuIR/tsInpvhy/BAHngWEwhH4cPEXcMzABM0cDdsD+vQXH8lvdw85/jV1C1cjsWx0cVljOmJWwUjaZHYwmQxj+Nm2g7Gr4zZrI4dIGUba6ktwsrqiJA0IWfzcyTCZpe17jGyiEnShTsYadFmqguzkh/fneustGMTNJSx28OYZfijYRuDZQRCOwIeOH8NzO2hq7O7iuXWKHDuuIdiA+erKYEVe71Qu63GCTTljFyzWUxUk/p93lk6P0pnl+Un3JXoyvQZC7FHRyRNdzErGL5Ah2N0mSTd9FelldtlseChUZTTMcO/LpftZ/Mq859ujoOUDz0tWY05rJ2gOcbTCfI6XdvGFYBuBZwdBOAKPA9dxbYJL72PxFTxXtzuDQXU71vKO/EDC6zjlWN/WQnRFQjvJmAcxQwz8ZZdbCjLPlcSFtYFXUCb0/jyi0PIDXYnZ0ys2k2YLP6z+db0nXKQsWgynkkE1bIZneUj5XyHMQiBjIzfBQAW+i8Mau0ucTnFI+JfjiwcCTwGCcAQeE66D3sbOMe6foapRV6KPF7yhTCDaUulrLOv3Qjk5AKkdIGQVYr6/PS0PuNtI225PWrsLFGQVhet1qUARZXsWh9lKi35OJL2ufj6FObGxdBdPTJDcojO2qd7QpUl6tgXIPNEsxOElYyiIl6gbhqZYHeCbl/DdO5jv4B8SXvP9BwJPJ0LPCzxu/Ae8c4Ldd3D0Km62lFes0VM9d84PZC9eKltYf9oV9+vNVm4CGasglZLY+As2RSkoYmQ5LETlLS81gjFtKC+S1/sQERbCKzVafjvURmGWn7SWzECH0fmBmZLWLrNEpVkuOekMHOF0gRXhbIY7hF9CIPBMIhSOwOPGj+LFd3D0PO7ex86kTbR6/S4rHxlnPYRMF2UzAxi9gi6bcZRsiJ34T5ZqmqqGDsAR5UlbOinGLEYhd0iDyTQV8qt4tCOTXP+gpEXz6ti9Wis2EWe6gqV1or5d79ycXNMpVeoGRgCDj/D1JRY7mO7g3wXbCDzLCIUj8MRwA7cmWO7h5A4usyAKhryREgV/wC0OfA6RSyD+mNuVKIwU8mQMU9XQTgq1lN+StbNkqQEFophV8G+IJWUxQ6svyPUJoWoUwy61J8Qz4z4G41PW/8t8Kvs0nS7j5Aw1Y7GLD4JqBAKhcASeGK7j2h5OzjCvsEqSbXkDMmXoHVfdA2VsBqpc5iQd7msTa2PNdU8qVjz0dZnDcKmdGHB2fTAtyXFeGlUMSUHGqVaARlSXbVueKxwincW1Km+bUr7I07tNVAqvRi929WYSqNhaWQzM4Mv4R0v8vzkme/i3wTYCAYTCETgP+EW8AzQVasYO2s/MQikWUGqHs7ajIHLYI+CyulCwTLKKO3Sh30zMqk4LEiVXWjIZ0jnK+ofhvxhkWYPxmtqtwhQ2/EuDJXLYO3r5Kkif2Iaap2SheilQF0ugS1ic4i3gW7v49fiFDQQ6hMIRePL4c3ixQr3Awfu4ptXpdDIlTe+gdQJH90bawXgiih5SD0kFmSQjC6dWG/2DtZkskmsV2em4MGwdYiSKY3mygixLCIaNuJykZZwbh2yDDUsyySviko2XqBu/oIiIcwY3qCvUZ5js4nv3gm0EAhJBOALnAtfx8j1c2cWdFXY4Eca1yD9mpiCDmijp0G/hNdyrWOlWRydG+SqANrP7b6i6R4IxEy6FhmU/6wHBCa9IFQSgvekFzrOmKMMTHFtGK8xZpZRLMegI+zPMluBd/FOKD6MEAgpBwQPnCzfw7RXqMywPMKOecLgrQ2FPiOgDQ/OXNp4TrZlnfsqvnnoGiQ0VZjq6gg+28nRgsqaYUppzGTnpI46t760UJ2VSM9Mn0NdrNEvqSrnNAkhToHy6KQAIzRQMTCpMdjGNDTYCAQ+hcATOF67jpTMsZ6hqMKNicLuqo5sHYVI9nF4Z6rGNFHouJs/pzwtrC4QH5yCvWjhJRvmqeGE9qXkwPO63pj9sM2+UXxSZ0ukMW8vxvLlOBuBOtQyVlI/V2OjE1ddoLuNrFe4B9R5+KthGIFBAKByBc4ob+DZQA1yhIsBZTGqObvWBKZCMlS6Sitzh+zbKgalAyHSyLce48s0KGowhUWg/QzoHY8MRTD92myex5U3qBSM9AHbx/AKTy8/K5vEk9pCJWUrFmB7jtQV+ZAdX4j2UQGAQoXAEzimu4yWAX8b+n8H3zLECeM0WxoxGLbbRpW/6j7Yb0T2N69bKcofXEh7/6EpJvUEKAxv6UYrRiMHSIUZqG7p4oe5kBqYYYVKTnsswzcwgR2o2I8sWBKGS8RTLI/zULl4/xQ/v4JeDbQQCYxAKR+Bcg8Ffwgdv4c6XcfMarjU9R3ZXZhSlC2SD2qFBP5S6sK2GAVjSQkGlGP3eqZRexEIQo9IRMQypF2YWG5GPbKVyLTC0K+3fbRNVKq2iT3QkEzuFgQqrI3z1DCvCzZ14DyUQ2AahcATONQj0Ko6/jJufxIt/Ci/vYFoBpNZkjJY9TLZhItchsvTEf+dzCzhizGCJtdhhiRPp0tJxb8MWtBBV3N/obIRuMLptCgLDiEq2rm4QvR8GgOoKPpjj3imuzDGdB9sIBLZE/MkELgYY/CXcuY3lW7jbYFlhZkoXDy1vZH66sbtOL6QgWVjgjd2NWizPD/aCCdAuBPHeIvH9+KFyFpVbSq+i6GzKUo2lfxjGyBlneTGv+Ujo4n0pyKeFQTVOd0A7aHZxGp+VDwQeDNMnHUAgMArdaonP4yuMSwtc28ObDZp28N11EmvjkuowQtjYOteqiDx7f/Cul6nmNkPj+uTCOdM53HiUG978S52ikhUkzkWUpFRS0bgA+lIPPwBiUWkej7QpxcMAgQi8wKTCijBdYHWEf/LQAQYCzy5iSiVwwfCn8f01rk3x/gozYDG+F3UOzDdaPb6SJnDZ4IH6zi0KORSEYDAqzgzsKRJ90CoXch+2dRV5ShlJBKT+FVRJ50oUpl0KZcul8i+zrGeKKjRH+Pt7eKPB9CP4B1fxj63qAoHAWMSUSuCi4j/j/wAToAKIwO2/3qyKPtCqvsjqjp25mLRIYR7HnCnQ0zSpB3M9bHnewfBv6SXdxQ5O0JTmbtT8iKh0m3Yo5SbpopF1ltWGRilzekXnEqgBnsPbp7hNeHuO/xG/koHAI0EoHIGLis/gD3wGn+iEcQI4E9RtZD3NBqSyjIFwTmgeBF4pUtMoD+ZNSw6ODYr6hKkTcPI/9zoSn6VLGbpMP+qxRVgmkswzIiQQg5fAFGf3cWkXl3eDbQQCjw7x1xR4GvBf8bUVVkss9rHLfXcnRuHWQkgUdQLtRA/HkSgWxppE9W5qXmNrY0gFlsGAdGHFMFh1oVI7gIJs0xknZqml956qdujGXDaDdVuT6rTNJrAGNAU34AZg0LXYMzQQeNQIhSPwNOBP4vcvsfh9uPIn8PEZ5utXZxlIultbqF//T60hyJh49gaKzrKhZ3C0fGJVZKxySA1Jpag6qatrjFBQHHaQzBWxdVIHiQOo4CH1Br2iYjtZR0osBTlnzOboTKAJ5hWoASrQVfy9YBuBwIeBUDgCTw8Y/BXcvoXmLRzv4Uvrb791UxXZ0NYc+3qD+BHyRudNrxRxnXTH5p5UUn7Y7rXYMdJFpqCYgZXNCqqMeezRPtlQRks6WQUtJL+KrEYAFdCAp5g1qAkgTI7xdxAIBD40xGuxgacH61cnboCn+O4UO1fx3e9gnzEZKpV1VPnYeUj/WMNkG55xlsW+SWrL/r+DBbeD1RS5NmN6ZqUxpEFyu7wX4Pa4EGp6KrKyJtWCiQosL96AGKvn8ZN38XngS0E1AoHHgFA4Ak8nvogvnmC2Qk34YIGXGTXnY194I/JsTK+0gezAzHJXYBTG/dbQvLTQIZMxHkzn6I6HdI78Asv+LUtXclCvvRTqMuK3/JutvclaYf4CfuIEv0rgPfxw9kGcQCDwISH+0gJPM17H6zUuL3B0Fx8/xFcITYWGk35oqzdaPcJRmJ3ZftZjjM2gw+HiW7oqMZVBt7AIhzP54pIMZ8mneZqWQpvOWkCXugAABtlJREFUQPMRvAr82Xv4n4zqEJ8OqhEIPE7E31vg6ccN8A7euwr+NJ7/7/gqsAIaDCy8SMf9sDrF9DUWW7pIEwtSwSDhMAWA4hoLr9LBV122pRRp4iDhEGYqzkHCAagLLLT8+rQCGKhBFeo5Dub45BzfC3wqqEYg8PgRf3WBZwUM/ireu4uzm7g9AddoqN2ie2iID4codKd2t6fXVMLqZcnpXEd34dum2K4KkyzlgqMVju0srdYeJhltnAQwoalREyYAMehF/G0EAoEnh1g0GnhW0A1qfxn/uwFXoCkmS6zavoqSTgvyoHtblTECQ6tEM3qRIRujD1QhxYau+GDpbM1mtqZSdPlZwfHtUMSYOL2WNAMQt4/Bc+xcxt/8AJ8/xe++iL/74JEGAoFHhFA4As8oXsf/rdE0wArTHSxYKAru8FquaTCzxITLoPbQHT/MKg1PIRizqqOLvLBuY5xbry7TeSFmaFdee6axMbgCM+gEJ/uY7+MHZrg6xw/F7EkgcE4QG38FnlH8Mbz6I/jkCtMJ6gp8BacVKgZ8nUPLCWbW8Oif1DGpSiXsSrWNtC9Hsqn50fXGlP3L5oXmuem/g869xE37XMXHJpjNMDvB2SV8ZjeWhQYC5wnx1xgI4Iv44hmm38Hhb+PjfxRvADWSGYeh11W0vAEICWRYJBhaN2pX0R2PFBjM9ZjjFpYagTmLJ8Ys18jDc0qZl6OroxpcodnFwRSzAxwTriMQCJw/BOEIBDZ4DfxR3AL4G3jhj+N/NWhWoArNOtfvrb0+vjtwictDEg5/RkPXMkietl6jatVlU65xMykeicmrIzCDgKZC/S5OLmNvhgkD34OfQCAQOMcIwhEICLwG/hhuHuD0Cu6cYXcPJ4Qa4G5Z4og1FiV1QXfYZbrwQO+emBUVXpYRub4yISL0SZW2NPQPq7lY1p47WZO/FXiJ6hX8jZv4Tyf4+gmWPxifPgkELgKCcAQCNv4bvjzFssadO3jzo/joGeYN6kq8DaF7UIzpVq0lny5dGOIr46WIUZtwyKzU3qMRaRF3aWdxwsVUMnLPNaoVmlfwwbvYJ3xyio8c44/EEo1A4AIh/lwDgRJu4MYRjirM93EwB93B7gz3mw3t4Haph+6ekRwMrHtweEOaOLCEwo+hoGGI3Ad4zQRb0yD3Gh3hB9gsaz99Afdu4aACT1Ef44xC0ggELiCCcAQCo7BeWHoZ+z+IT/wKfgW4OsF9i1IYQsWYdaMqJU0c6OYfYJ3mkMriKRy2eDOCkZQi1McNmhUuv4I3gZ+8i18EvnaIZfCMQOBCIwhHILAFGPx1fP0eVt/B7xEmADfYneA+bfpUo/svv3bhU5DU2JvmSAsOUJa07Ij3XKBIwJgplS3WhGZvnayzKixfwvvv4tIp9vaw2MP3H+AA8X21QOCpQOw0Gghsgaznex1vEJaMaga+hN3fw70KjfXh9a64CdM4UxpGhOZUmlSdG2jPMoVVIlmJogC1ZunH6HU9DF43JgETLGtUAM+xuoPdq7hD+FuFawkEAhcRMW4IBB4B3sAb97Fo0NzF3e/i1gt4ZYolgczVCSOXXxRnTLbQDx7oPRcxY5LoHwNTKn7uJrECr79fU4N3cbDCKbAkcIXmJfz14YYOBAIXFkE4AoFHiRu4cYDjGSb72K/AFaoaNYEJRGjawX5prmSbJRrCwJ/O0HUVCEdqbHrz2I9NMjo/DKrQ1Ji9gr94C/9lgVsEmmLnRfzoNg0cCAQuKoJwBAIfFn4Dv9GgWfffEzQ7qM8wYVC1mW6oefMWxtaEo7D88yE0D3edh1l1UfZggCtUDG7QzEDfh2/dxEdOsbuPj83w3DH+UCzLCASeNcTffCDwOPDbeH0FYtABjn8Af/DX8Gsz1IxmggpoGvAExGioXfEwTlSAQxq2oyODb6OYlhDspOl+TBj1BE2NpsJkbbOPkzlWl3E7XjMJBJ5lBOEIBB4rGPwNfOMU997DuxV4gsUu3m/w0gKnjGnXf7dLLxuTPeAhCEdxKmRgy5D2gBhNBRAaBhOmhNU9HHwKv/ttvHCKHaABmMEfx48/upYLBAIXG0E4AoEniTdwg3FYo6oxb9BcwpVX8Ye/gC8At6eYE2rabG9KjJpQtdty6KUShvAwbiGIl9vLLQAmaBgNQISmQQ3sAO8R9glTAmpMD3B3gvoa3g0ZIxAImAjCEQicIzD4m/jmfdx+D+9WWFUgQlODTjC9inenmN/FfoXlDDtLNISa0czQfl8OvH4HtWpZQvvluSatofubJzQAOhoBVARm1DuY3Af2sbqP6Q4WBzh6D/c/BbyNxX00QMMgYAkwcP8T8WpJIBAYh/8PK91tZCKTcxkAAAAASUVORK5CYII=\"\n            height={627}\n            preserveAspectRatio=\"xMidYMid meet\"\n          />\n        </g>\n      </g>\n    </g>\n  </svg>\n);\nexport default SvgVectara;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/VectaraIcon/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgVectara from \"./Vectara\";\n\nexport const VectaraIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgVectara className=\"icon\" ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/VertexAI/VertexAi.jsx",
    "content": "const SvgVertexAi = (props) => (\n  <svg viewBox=\"0 0 32 32\" width=\"1em\" height=\"1em\" {...props}>\n    <path\n      fill=\"#80868b\"\n      d=\"M26.69 18.53a1 1 0 0 0-1.4-.22L16 25.17v.29a1 1 0 1 1 0 1.91v.05a1 1 0 0 0 .6-.19l9.88-7.3a1 1 0 0 0 .21-1.4z\"\n    />\n    <path\n      fill=\"#9ba0a5\"\n      d=\"M16 27.37a1 1 0 1 1 0-1.91v-.29l-9.29-6.86a1 1 0 0 0-1.4.22 1 1 0 0 0 .21 1.4l9.89 7.3a1 1 0 0 0 .59.19v-.05z\"\n    />\n    <path\n      fill=\"#606368\"\n      d=\"M16 24.46a2 2 0 1 0 2 2 2 2 0 0 0-2-2zm0 2.91a1 1 0 1 1 1-.95 1 1 0 0 1-1 .95z\"\n    />\n    <path\n      fill=\"#9ba0a5\"\n      d=\"M8 8.14a1 1 0 0 1-1-1V4.63a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z\"\n    />\n    <circle cx={7.97} cy={16} r={1.01} fill=\"#9ba0a5\" />\n    <circle cx={7.97} cy={13.05} r={1.01} fill=\"#9ba0a5\" />\n    <circle cx={7.97} cy={10.09} r={1.01} fill=\"#9ba0a5\" />\n    <path\n      fill=\"#606368\"\n      d=\"M24 11.07a1 1 0 0 1-1-1V7.55a1 1 0 0 1 2 0v2.52a1 1 0 0 1-1 1z\"\n    />\n    <circle cx={24.03} cy={16.01} r={1.01} fill=\"#606368\" />\n    <circle cx={24.03} cy={13.02} r={1.01} fill=\"#606368\" />\n    <circle cx={24.03} cy={4.63} r={1.01} fill=\"#606368\" />\n    <path\n      fill=\"#80868b\"\n      d=\"M16 20a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0V19a1 1 0 0 1-1 1z\"\n    />\n    <circle cx={16} cy={21.93} r={1.01} fill=\"#80868b\" />\n    <circle cx={16} cy={13.51} r={1.01} fill=\"#80868b\" />\n    <circle cx={16} cy={10.56} r={1.01} fill=\"#80868b\" />\n    <path\n      fill=\"#606368\"\n      d=\"M20 14.05a1 1 0 0 1-1-1v-2.51a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z\"\n    />\n    <circle cx={20.02} cy={7.58} r={1.01} fill=\"#606368\" />\n    <circle cx={20.02} cy={18.92} r={1.01} fill=\"#606368\" />\n    <circle cx={20.02} cy={15.97} r={1.01} fill=\"#606368\" />\n    <circle cx={11.98} cy={18.92} r={1.01} fill=\"#9ba0a5\" />\n    <circle cx={11.98} cy={10.56} r={1.01} fill=\"#9ba0a5\" />\n    <circle cx={11.98} cy={7.58} r={1.01} fill=\"#9ba0a5\" />\n    <path\n      fill=\"#9ba0a5\"\n      d=\"M12 17a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0V16a1 1 0 0 1-1 1z\"\n    />\n  </svg>\n);\nexport default SvgVertexAi;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/VertexAI/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgVertexAi from \"./VertexAi\";\n\nexport const VertexAIIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgVertexAi ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Weaviate/Weaviate.jsx",
    "content": "const SvgWeaviate = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    width=\"1em\"\n    height=\"1em\"\n    viewBox=\"0 0 413 413\"\n    {...props}\n  >\n    <defs>\n      <clipPath id=\"weaviate_svg__clippath\">\n        <path\n          d=\"M462.54 224.21v-96.19c0-9.38-4.99-18.05-13.1-22.76l-69.73-40.53c-11.7-6.8-26.37 1.64-26.37 15.17v102.48l-49.53-28.53a85.586 85.586 0 0 0-85.59.1l-49.25 28.52V79.91c0-13.53-14.67-21.97-26.37-15.17l-69.73 40.53a26.318 26.318 0 0 0-13.1 22.76v96.28c0 13.49 6.89 26.04 18.26 33.29l63.48 40.47c16.51 10.52 37.82 9.68 53.44-2.12l44.13-33.32c12.13-9.16 31.98-9.16 44.11 0l44.12 33.3a46.889 46.889 0 0 0 53.44 2.11l63.55-40.53a39.484 39.484 0 0 0 18.24-33.28\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-1\">\n        <path\n          d=\"M261.22 197.96c-11.56 0-23.13 3.24-33.27 9.72l-58.98 37.68v34.33c0 10.58 8.69 17.89 17.94 17.89 3.61 0 7.31-1.11 10.61-3.58l40.13-30.31.1-.07 1.33-1.01c6.07-4.58 14.06-6.87 22.06-6.87s15.99 2.29 22.05 6.87l40.2 30.34 3.94 2.97c.85.64 1.72 1.25 2.61 1.83l-5.05-3.81c3.32 2.51 7.05 3.64 10.69 3.64 9.25 0 17.94-7.31 17.94-17.89v-34.25l-58.99-37.74a61.78 61.78 0 0 0-33.3-9.74m-38.97-46.19c-.58.3-1.16.6-1.73.91l-51.55 29.91v.1l53.28-30.92\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-2\">\n        <path\n          d=\"M57.82 126.29h407v157h-407v-157\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-3\">\n        <path\n          d=\"m334.88 171.75 18.64 10.83v-.09l-.17-.1-18.47-10.64\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-4\">\n        <path\n          d=\"m334.84 171.73 18.68 10.85-18.64-10.83-.04-.02\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-5\">\n        <path\n          d=\"M261.11 142.44c-13.33 0-26.66 3.11-38.86 9.33l-53.28 30.92v62.67l58.98-37.68a61.804 61.804 0 0 1 66.57.02l58.99 37.74v-62.86l-18.68-10.86-31.02-17.87a85.547 85.547 0 0 0-42.71-11.42\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-6\">\n        <path d=\"M59.78 127.77v96.84-96.84\" className=\"weaviate_svg__cls-1\" />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-7\">\n        <path\n          d=\"m77.78 257.42.26.17 9.01 5.74s.02.01.02.02c.01 0 .03.02.04.02l-9.33-5.95\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-8\">\n        <path\n          d=\"M151.4 62.33c-2.55 0-5.17.57-7.67 1.8l-72.16 41.94a26.318 26.318 0 0 0-11.78 21.69v96.84-9.75c0 10.45 8.58 17.92 17.92 17.92 2.99 0 6.06-.77 8.96-2.45l82.31-47.84V79.64c-.14-10.11-8.49-17.31-17.58-17.31\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-9\">\n        <path\n          d=\"m197.49 294.02-.91.69.91-.69m-28.52-111.54v63.14-63.14\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-10\">\n        <path\n          d=\"m196.58 294.71-1.79 1.35c.05-.04.11-.08.16-.12l1.63-1.23m-27.61-112.23-82.31 47.84c-2.9 1.68-5.97 2.45-8.96 2.45-9.34 0-17.92-7.47-17.92-17.92v9.75c.1 13.27 6.87 25.59 18 32.81l9.33 5.95c8.42 5.26 18.32 8.3 28.09 8.3 7.89 0 15.69-1.98 22.56-6.37l31.21-19.68v-63.13\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-11\">\n        <path\n          d=\"m123.44 286.53 18.08 11.53-4.76-3.04-13.32-8.49\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-12\">\n        <path\n          d=\"m90.22 265.35 33.22 21.18 13.32 8.49-4.18-2.66-42.36-27.01\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-13\">\n        <path\n          d=\"m87.05 263.33 3.17 2.02 42.36 27-45.47-28.99s-.03-.02-.04-.02c0 0-.02-.01-.02-.02\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-14\">\n        <path\n          d=\"M168.97 245.63v34.12c0 10.58 8.69 17.89 17.94 17.89 3.27 0 6.62-.91 9.67-2.92l.91-.69.1-.08s-.05.04-.07.06c-3.3 2.47-7 3.58-10.61 3.58-9.25 0-17.94-7.31-17.94-17.89v-34.06\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-15\">\n        <path\n          d=\"m168.97 245.62-31.21 19.68c-6.86 4.39-14.67 6.37-22.56 6.37-9.77 0-19.68-3.04-28.09-8.3l54.41 34.69a46.843 46.843 0 0 0 25.19 7.35c9.91 0 19.79-3.13 28.09-9.34l1.79-1.35c-3.06 2.01-6.4 2.92-9.67 2.92-9.25 0-17.94-7.31-17.94-17.89v-34.12\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-16\">\n        <path\n          d=\"M370.93 62.33c-8.4 0-16.17 6.16-17.41 15.08v202.28-97.21l82.31 47.84c2.9 1.68 5.97 2.45 8.96 2.45 8.58 0 16.51-6.29 17.75-15.41v-89.35c0-9.38-4.99-18.05-13.1-22.76l-69.73-40.53c-2.84-1.65-5.85-2.4-8.79-2.4\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-17\">\n        <path\n          d=\"M353.52 182.48v97.21-34.06l31.21 19.67c6.86 4.39 14.67 6.37 22.56 6.37 8.56 0 17.21-2.33 24.88-6.44l12.13-7.73a39.484 39.484 0 0 0 18.24-33.28v-6.85c-1.24 9.11-9.17 15.41-17.75 15.41-2.99 0-6.06-.77-8.96-2.45l-82.31-47.84\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-18\">\n        <path\n          d=\"m324.9 293.94 5.05 3.81h.01l-5.06-3.82\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <clipPath id=\"weaviate_svg__clippath-19\">\n        <path\n          d=\"M353.53 245.62v34.07c0 10.58-8.69 17.89-17.94 17.89-3.64 0-7.37-1.13-10.69-3.64l5.06 3.82c7.75 5.06 16.67 7.61 25.61 7.61s17.49-2.44 25.2-7.35l51.42-32.79c-7.67 4.11-16.33 6.44-24.88 6.44-7.89 0-15.69-1.98-22.56-6.37l-31.21-19.68\"\n          className=\"weaviate_svg__cls-1\"\n        />\n      </clipPath>\n      <linearGradient\n        id=\"weaviate_svg__linear-gradient\"\n        x1={-1873.9}\n        x2={-1872.9}\n        y1={-4499.57}\n        y2={-4499.57}\n        gradientTransform=\"matrix(0 390.3 390.3 0 1756420.2 731358.01)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#fff500\" />\n        <stop offset={0.34} stopColor=\"#fff500\" />\n        <stop offset={0.34} stopColor=\"#fdf400\" />\n        <stop offset={0.42} stopColor=\"#92df1c\" />\n        <stop offset={0.48} stopColor=\"#43d030\" />\n        <stop offset={0.52} stopColor=\"#12c63d\" />\n        <stop offset={0.54} stopColor=\"#00c342\" />\n        <stop offset={0.81} stopColor=\"#135090\" />\n        <stop offset={1} stopColor=\"#135090\" />\n      </linearGradient>\n      <linearGradient\n        id=\"weaviate_svg__linear-gradient-2\"\n        x1={-1882.38}\n        x2={-1881.38}\n        y1={-4499.37}\n        y2={-4499.37}\n        gradientTransform=\"matrix(0 1084.27 1084.27 0 4878650.82 2040504.87)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop offset={0} stopColor=\"#f8ff5d\" />\n        <stop offset={0.49} stopColor=\"#ffcb00\" />\n        <stop offset={1} stopColor=\"#06cd00\" />\n      </linearGradient>\n      <style>{\".weaviate_svg__cls-1{fill:none}\"}</style>\n    </defs>\n    <path\n      d=\"M407.88 246.833v-96.19c0-9.38-4.99-18.05-13.1-22.76l-69.73-40.53c-11.7-6.8-26.37 1.64-26.37 15.17v102.48l-49.53-28.53a85.586 85.586 0 0 0-85.59.1l-49.25 28.52v-102.56c0-13.53-14.67-21.97-26.37-15.17l-69.73 40.53a26.318 26.318 0 0 0-13.1 22.76v96.28c0 13.49 6.89 26.04 18.26 33.29l63.48 40.47c16.51 10.52 37.82 9.68 53.44-2.12l44.13-33.32c12.13-9.16 31.98-9.16 44.11 0l44.12 33.3a46.889 46.889 0 0 0 53.44 2.11l63.55-40.53a39.484 39.484 0 0 0 18.24-33.28v-.02Z\"\n      style={{\n        fill: \"#05b460\",\n      }}\n    />\n    <g\n      style={{\n        clipPath: \"url(#weaviate_svg__clippath)\",\n      }}\n      transform=\"translate(-54.67 22.624)\"\n    >\n      <path\n        d=\"m323.4 292.95 3.92 2.96.01.01-3.94-2.97m-85.65-29.33-.1.07L197.51 294s.05-.04.07-.06l40.16-30.33m-17.23-110.94c-.77.42-1.54.84-2.3 1.28l-49.25 28.52v.11l51.55-29.91\"\n        style={{\n          fill: \"url(#weaviate_svg__linear-gradient)\",\n        }}\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYUAAAE0CAYAAADDtS+YAAAACXBIWXMAABcRAAAXEQHKJvM/AAAgAElEQVR4nO190ZbjOqgs3mt+4H7W+a/z3afvQ5Ke7kxMyZQqhRwzD73XdgAJyUIUSN4iIv7f//zvV9BEiPiaoH5fuEisqc203jp/rto1/oBXKduk90slG4pV2kM159H8yB4RbY4A7a63S6v3K/7Lf3GENoKV4MXCRWJNbd42UnedN1frGv8t122ylVLvppINTKm1h3IMQZ93H93+lZgjQLsRb/nhgN7c1hOdwkNhlXVRxyBrNzPwpOyyWnL8ZYvdqo5hn1/mGOBjo2NQOsOUs6tjYOb8/vPJTiFXhlkXdAwRl2P4R27DHbZyt5my6hYzr2NQ2cM0562Ood4uhWMQOIV9ZWOsxt03JfpyDLNkSx3DslHDnlgPtDL4g4S1qWMAcFKdmYmSAOtkvSKn8FDWMWpY1TH0g0eWdAxq2Qa927Zp8wxVXsja0DGAx7ljQMxGx3DA1n8iIrb/NrKiIaMtylUL2yaq8hloU1XtRvQXC9+3B6W3zvuYa/vD5Bp/oFcpO5LH7Dglbd62baBipiB7aEFS2OOhOJnzsvmRqA1kZ+Y9FY5Daq+/vH9u/+Pr/vuGpaH0GlssK5PrLdIW4jLLunOQlKwq+zs0xsXyPihbYw/cpVXtwbyn89v8111l7VJuhpg+5bL/fP8w7juNlhFDnRUzg5GX6SVIusuty962TDK7m8x+kLbqzqrYfQFbpbLJCCpiV3cuGe2+UbPQzr7qGFw7aG5+bJGsmUxUCN9xZl7m7fqOFH79PpRRQ9eIIdPL2kJgS/sOOmNV2rpZxEHvVEee71DSp7EhVPZph5gxts75DLZD6yVhqwjQZxjKJMJfP/yzy0Lhkxk5I4aoCcDA+YBuhWNgI4YIRZSEMdeMmdkhsbJT5n29xAs49Dxl3efFluqYRwCy2TEURXY5yjKw9hTHWBGd/cnbwy1mErkMkkDrFicnS2KFDssFn0EYs+kYsvCIBNIBRNojdf4yexBtlm6kiA3NwBjv23ruvLznFDTh7VgUSjqHMlW9NvoBSZQ9iHaVd4xQcOnxt6+T9Ukg91t2ylzTOQQlFHUTsAyECwlYJlc8shlCkV0vW44VEVSjs+zhg/f2fPCcQn1lwFEoveoUKdG75Y8nrJSJaEY2wWs7Y4G4VX0i5ZbtBScX1l1nlsiFYwTfJdMYN7Qlmlu8rYHueKo+wtpEEYPsPAIiJRxAkAumko5DPXTW5ShILFI5TmWMeUBvWi2DlO9JvfHuV+IMtEuFuROVODmRtiznigC8SuRGYtv+rT7CVHcMKTcTdtFkCH8Rye0hCH9pvftcQ6FzyiyACpSyx7DXmkqhPfjzKgJ7yOGijA9thmr2mHOu7DX/gUjhuzmpwBHufcewasQQOX+VbDt3Y8QQ2WNlVVPKvN+oGbJbVgABvenJ6tRtAL2kPSxRAcM7YI9dxwCiM0iv20XcfSTKM1hzDHXsW5ZncN0c67yYMB0GJx4vxJHrzMRjJfaN9LpsaRon5qZUZM3J7RqsPppPt8gJeV4TnERV4jBVLTv/X20PRzUNofdvQFHAa2fYUjE/aLiIgUCR7IQSCGRsXy6CizoeghS2C95GAd+1v8//u0ssNYQl7OFMUYOtAkgoOxXr6i8XjaRRg9KWpqub8W6ynz2wVJE9Dt4MeoiaRjLpenrAHn9PNEtv90yaojyoxJCtAgixiuyhPNQj1J3mGZS27HwIrlkFEJ4dKBeQ6KXyPQPjr8jJwDMW9XbBmygG7PECPnI4hhmZ9Iz6VWlgvSLZSG8E12fZYUSQuqTgourCMMCbyhXBdnD+kGNUvOcH+zrRu4Zkoz2pdIwZyGf/ES5Z3X/+ItHsg5K4D4Wk0glWI5RUhhJIsiVNU8GR9RmrJaAE1ThIE98EL1Rdt2XeLKU9VLAdIAYuYqBVuJ7uP7vdffTPcxIOYAiE5fUWKcM9pLfKGwOTVZDYjuDD44aH4PIfKO/xyZpEzo+GcBEPyyDlGRFXWSvHGEHkggOFWPfrPg0cXnM4hiArGhCpYB0ihKWIhQNEshsegst4oTmcEEdGqna1nh8JTJWuwVtE/B9oV01vSgh6azS3Bs4peOAkVNHAtYqEdapyXfcLjbDXHgK5yrmjgwO0EIdI9qpnHerMhOj/Il36XNBbk7l1ixT++/IkNhEBD0dHDdIbWpmdbEEuS3A3oUxOMqRJuKbm2IBeRFSCOdFNREnwmXIHzc6NPVRhQ61C0JthjLct4iuJZMaU7+tFtv76ec3FWOx8uHk/lZUI4IBUq9pi30W5LLGXx6lyFCmBMSRyMhiGiJQ/FRzRMI/A2jIS2ZlaHW6O00zHMfdflPap2p97FFN2DihHkY/xvzGULFSss6KQjRNthDgUclmiqiWg8IONGSRh1QpX1YRYG0Iv9PUmpvnBHKBjrqCQQk3MLUSoT/v0OtEM+6FMbNZ085tvU1I0eUzJZuQyobPdlvOTdWMBZTWCQj8AvNLkZJE3eyyHZZRFBCLYjomw2chu3oV4rAess54uYhh4XGZ2RSPWy/Q0u1wqYoCvS8OIAT5meYvtJq+vyJtlipKZ+cG+a/sX4pUlBrfLma+X2nzTWG8qfEKCMWNWRCM6rJcjZEtmciX49GN6ZLwt6+BTZl0eAXZJ1edcbhoUjFxlrToXwswPZg488f5JfvqDimEVbEydFeltCSe5oJVv3SLZGSltGazs2mJ2e6yyBwvNVhLfBO83iaCVjIi5NXa1Tsc+oYnJ6x2MFNCOsV/E8P20vIGiV9FEbuh20DLHgLDNjFVky4dsxcV00JTgBHTZHgPRmcrWqoiD3UFH8pjoL3UZJxsFsfOj/NEeoPfrfiHeuAjU2H6OgZVd3hFC0UJoxeEY4Fq2qGOI/ccsbz63hAtSyjoPhjjIHD2ht3wc8u4K3xe2lDaRW/zITtEDpo1hmAdkl69mJqCCIeFCOIn6GEwqeP8RnI9NbWm4sVQLQw2Q7GNBAhjqW3aRN3u8oR/Ebp9wngk8ZfokmvNE9VHyqLzoUMxAdF0u9QlIKHxF2UDuUHJSQB3r/sFj+vOiHftsrYgCa1NVOOgT85R6XwTjT1QfGfHrsth6ePt4eamoQYCLQpLCVBE1iIPEzTNyYuoR+7rTiGFgbnXNI+x2aoItFTkKBnoDfcpFA3sMOQbC1gfWnoFbUhGpHAOQXaVv+zJwEqH7lB/tqb6ALG9BLiJyfqS6h/ZRAlsiUs3LAd9vgSKZ/oJCETiGCe8YFWG7A7YkzykMaOsYMUSQUQPTJWEyjmJlepX0id3Vxf5jLLfMzI9T0R7yz4tKolV2F1xdP9j+Zj8AlN63BKqaVLamvxcREfFVzSm8EshgeUi2iKg8g0cvpZnBVCGrC0cmZaesHt40zwBeNSl+nbKy419dP4R5BMi6z4u/IqmyNW+PYvVRRs3gAMS+1WVfUNK7ZYuiRulV1sTcMlREQd6MZsAjsoqoIi94lK0ff5Emhz1QtLrfpgnw0SuNCsfAhnsZa71hXigpavwMpEOzgh+oEqoZSa+yJuYWPFwF2jQBStgl1Th1PEAHzZG3eduI806ycyP7/Z0EH71SmDyywQEauTSUZCsrTAULWYXwCEOycSDm1oY+wJ5y57rZcaryQtYFYUxYstrRHq/nhwA++kGyC+AiukEcdORMwFhSaCUiSu0aCuwMEAcixpZCSBBvGKsJ1wHePZox71rCRcV1C9jj1qym4/TjuShSeDRGuKtrmnDlutwxYoiwRWenixggMyGatWWx3W0P0DG8ZH/SD/6Y5jzq04/n97uPhLvMGcmnlHpFDOOy63rz1EiziCGC2/UrxymjphEDZY8BXsu1Gyp7MdHqlEi3pz1281T3+SFINO+Q6wI4ilUpu86c5whVdr5rZiY6fFhdzEgvvBuyM+PPjMP325s+zvlrttTd/grI+k0IJiGf8TLvi84eaeJ7e6dTuLWmp2OIjL2xY1AsZohcTodZCCnWgS1jOg6AN6OuB+giuPeloxNe5AqKYYJXcuxXtk245uIgnRHioOQiYpKPOX+ZlGOohF6g3qJsORT5fl6YFJVCgiZbBcF/Y96XPekKikME9O59aOi9kcLv1qiECyEOVTRSZ8amFEUNyjFc8SoQKRTpgSHwdQ05twyWieRx2+ispz1enYXRVh9ltOyV0YRsqln7zLi7InuwlSdIdp1ZyJr8AE4Ppl0e3voZiQhoEGirKu/QDxJWFW9PezyP8aRIwRCyT5Et0ItIBL1MOVKfkePMCTs/yDyvBcaIhHfIzvNtOXbgu7qTHeDdI5WdH7KxgH1eFDUWr6BIiYELf0QMEy/EI1hlu6s6qxRTE0ZJ3M4uFayRexOeP6rODzKw67nbhMz5I+Jd056TKJLwTMGAgNKjb91l5qpcxHo7Pf++C/FgixBr04iB2o1qdvV7CSRecPiKBJj5oZwDmdxld8FMcQM7DgVbrxrZDekV2SN5JMgpqHb2ymiEYG4ajUgjBtd9S7KdKqLPyiPwEYMoF7BkHoHlfb8tRdVHcDuRsuKHjqghYVbJJYm7ZRMKF0UNQC4zP5TjlD4eUJxWjxCVNBHFccp5tw21inlfRLwPUtlaViH2XlvqrrlwQg0ZqaAE0l9NYH5NynFQwlQRZLsVjiGROyRbCK1kxMwBev7Ux6F+gA48tELVmT3IjTRzjf4PXu05BfV5hG4Rg1o2IsUOCFDfaCThnQIlVRY7NpIBP0g3m6ZdMDEO8MoNJjqTRXY5W75zH4jsmDEe5NWfU1jy9k6S2ZVnYLBegmT5i5twDy8WXnrUlheyenilt4pKcyNlxbm93jA/tN9TeG6Mo4Y+I3rNMFW8ZMTCEMxmsuPZDjWMaTtTsEMz3rVu5ySSJn3/4IznJFTjkDyOePeJ5iVr6FPFYdtNUKyaNm/3fxLqGjHYzhQg0S57MX3af4iL3oQRRcoq5DV9Re79dx+p8gxUpQWtPNpVJjH49FAiL5NMXL+cCnbh4krZgJd1DA2vbsYL9D5v3ixXHoF4YdC6ZRiH98BHz6QM6dVwQUaSxOa38OMsQ3NVA4HdWFUVQIhEVSsZMbCdEvJzwSNCaAWXw4qqvFzjRI8D+tHvH1wX4i2jVwUnMWE3YhXCI0Bz/bERtqu2i+FF5DzUlfDnkllYtyMvxM9ysQfmx59vhdqt205buob0XfUycMDIw/k7e66skCEdhIHURmTsQohDCo8QMFSEBMbCrUrmwMgCrfryXew/xmMM5jWMRrDep4/sOBbROB+UJO8TI+D9cMBYekORZ7r/bfnRHsZRNoVHMhJBUUzq7EYiWyKi7AEcFjnfn+AjI+xytsokKTxmYqbqzXWysXJGdkfYrik8Alk1vBx6JrQlZBXxUuvp9qr6CMY3mBzVJUiuC0qK0O2ClVVNgkoLHDl3hRPFsJ0KpqhuodntdwphkFBU+t1hBj07nz2qc/5299Fu9ZEy452REkpghBigBEruCBmghIx14+TKYKrOMKfpkNMuzYDtmD6Z7CG7qyl7jOZO4X0C1Ueq0FnKLBSthBKKsgnWvwKOPxr8QZGVg6ly0aZwXynbdMgJi24IrWDm8mPblRzM9dsvaPCcgnMnWyTH5yMRyRNXNdZUr73NRHJbEY3IIwb0I9E4waqVXglmKW8AXrCPSi+IZP0VioIm9HnwnIIrYiBoyTMDatlFZi6TV1bLyqauRUCCZYURxA9cvJD1s3gfn7WUkPJqjDvvgWsumIRInZUi6dUXquTj4wcOWwNmLpNXVsvIxtciRC5blSTMyJUUheYY6G9aoCDk3SP2qo+IMj99rXzVHmSfn84pCGlGeMPoPts3izNSQUlDsklHKZDNFh5ZxpixB2tLZoxdvBkZ7YHnntKWNXud50I8l95loxHEzEQMkfOXVasiBiUzFE7kv0heVVTIzA92bsHcSPLQdolf7PNTthyYty8ee+4+OuWBMhOGKCOQSLDlRrgcQ/1MjzKPYMLN6WqZhvkNyhysLff5sWiVPY6PseeW1Ig3hOUGvUqYKkSyR0h6++sOCcfptoFqVn3EyJ0xP2znAnbIZQ+hLfHtrole5Tg82foWKZxx5+7Su6rsD9NLVYcoI4YFq20ue4zz4k2/v81/fv/PE2H9I3ojdHmGltc1GPUyeH61agWKBje45sw9x3hF3giuyktVISayB8yMqMcBVDXdrrn49auTQTou3SvCVEN60Y8qCbMRYqo0CNkZMTDUgGzfoS/0I2aMm/EiOqMtwbzduRCPnOgVduKiNZpWrEyyRQwBhij5ATXETJXGiOza7moo2lBGSRmvbDEDY+zijYyfiDipMxY5W2RVT0MJ5po9sjMUO9VHoLIAEQUxng+/blm1QukNMEzHKx6OKX+zXKj29q8quqwYsirfYdDf6vyQzi0XLyDXXU07egeqj5ShU0YO/JrUi2S3u0L7QaoxNkA+SnsA2bfHynYl5Koeou75YeaHaG5ZYTtB9dhD9t6jF1DSwOE1JoSts7bW64ADMr10wKCy9dAqWiQVTDUgO+1SAicpHcOSCWbAi9Yl9uI5Bi7a1bveODwihodzaH4hXlO9S/ZJKBxuKvpBPpRsqJaBRwhqUM5Y4q3y0yWr5YdA7pr2eDiHg4fXFoOS6B1jwqyGA/ZIBUM9SHmthuoQnOOadJTI23/04wcqONEEfwSrO/uBC2piE8wJP6gQ4ngTyr5etx2+5sK5c28YNUh37gl1vXLBJVtpDyoBjUQ3tIf1wFj5oZiXGmQTbyY2ZyauuSjwKHfuI7oVG2z1zt2hW9mnVWUXd3WwSWhHiEi62+y460/4W/PukCs6S3iJC/Ea7tylejO5yp3qgG6V3Csa+SG3/gNsSuWcFu1UKdZVd9/CnXujfBB5dTbhIqmdu0svkr15ooauVy445Cplw0g3n1x5s5RzOvkB2aeUd2SRZQ5uLccbIDoDtmZ4M3qamJM+srNgAlrmGMLkGIR6l4Wp0I/eD49gf6UsqhCVB7MQyHWdh54X0Q/Zt7uP6Ij7ihh+y74ihkNyI4ROh/pBkRWs0Awv2a70Sg7KMRDzw8YbXITl4o2Mn4/sJn5kZ9EcgzLP4KAV8XqlbBtuDn5gald6hoJU2wkXH+clfgDXDxEvfMyNseAjO8rwV0QrwiNIb4h0WyEfE7SCZDuqVhAl4zS22fwwOCh5DB8y81bKm1Bia8HnOMntt2mDvWQVz4juleRGDOyAVHOr626TIDBOuTmMu/7yGYtouvv27fpz3tfMZPVRqpGvv60Sg4vKasaFsjNiKhqgXEZAwjqyyErmlnLOAtmIXzT+6eacujJ6YH7IKnGSZ9Q4kLwRxcolhvdOB8Z4UvXRnsIwVuIwAgwh7BTZBb2rwnZKyC+Esm1QE1MRlfC7+uSEqYLVnf3AD1MJI4VHY4jdF6U3mlY1KWUTzEp8OyPnJyAdspn5QTnwnBl3F7RLxpuJBTtoFe+DX+IYmPeU5Y2I+BJHCkONGSHX7rqo257YLJI1smsWMShlyxObiKqOYZ+X3vVHnDC5zY6hJzrTRwoPcu7cw6i76tXLckla8YzFihFDhHDXV1dMRwxBtOt0Zx2AQaQRVp1XUH2UEOV8Nk4ArVvBSspVOfMVq6WWvaup/FA2p+m7mph2feJZBxfvzmPBOQVAUxKbzZK1U/Q2ixqcUFIQupWQj2ruuJK1mdwggyQ0DpncDf0geUzzAur22dMh3uTZC3u9N1L4SS137k69rj5lcoW77xHdDt5UbhC2BszSHWNRbpCmzJihLZlo5IpkfvMe+8Gku4+K5MwztNR75Rmm6bXlAgaYXTd0ZnIjNLtRdN4AYPL1u5qEOZnT5T5+/+D98NF+W4q0IJREsEPZXStxqMoUIRyQygWLSpUYW8rHOPsBs8jWeG+PVIt7NK1aSmS/AabywUc/qS2kg5ibQj4qkoawBPPH2VLZrvLDAd4aBLbd/1WblZIT0snYjTDV+0pSEdGQTtQE0Dt3IeTDhLeUgISV+phHnVUKB6RqAbTCyl4OHgNzi4FI4RAncNLQ7ntP8ABzypv9AIhGjsEwP/7UNEZI3sAp0MqCcBKCP7q1SyqXoM7wmULu0PwwVMwJeXEaoWGVlxWmOs5LRArCt7ttIhgwqy5Ta2kPUm7U2XPZyh20SDZ95ULoxgnt+g1J83StQzt3YSSTErvrj6jxF3jJnIIL2xQyu/BJKNvEzODElGyCuuYClLKZXADDasK+MSuTgxDmLxYoaf0TEbH990VugDpGDKHbuSNelS07QlxvkV2UG9EP8hmSnTxnK6JKu82B54aP49B3NSWPU2LnFrIXzEEI8hcR3236jhS4DRC5Y0Siy7ymDDplDsDcMmJQyybobFdfOHebKrnE3DrllRxsJFNt1t2Yv3IKfKGFCnNleIUYM9QdmlyAM8cQGbsrn4NkgzmgrPJikpNId7fKJfZwVUR5buWqweSC0VnyjPoYEHjHU36yTwm9vDpbeueJg5RQwohuBeQzZRFttoDLYRkBlPBNynHaIRq2cVUQMotZ1TEAoueHgPe7XRlvQsUx3r/mgmqMdnde3ySbogZlxBAi2ULWXO6EMUorU1Q5G1Vkh9Q2jBgiQJ+ZcQBtHsqr7PFy7Vr2So6nx/lHdgxealg0xbyaY4icWSk7I2XEECFMXiptmciN6Jf4ts/LwtpjjEaw7++16x/ifWoXPrzWFM/nHMPJIga1bJaVwuwV7VLaElBXPJ+aO4Ghl4y/yquMRsqO4dbonievx/q09DeaP9MxxL4AVvbHHb6L/R+c1TGg3bdSt4Q3hI4hyg5riy2+FnV27/tGc4TkRXCtNzciF1GFbjpELfJG5MytIS6HYwgdlBSJ7K59kkNgRXsQ7cK+7v0QF6Tt7Z/j1IQklNSNEUAxT2i4QK7SmKr+0qyqNiO1QuFUHbxIr5SX+AHcudfbhc9QVNule9fef0uqKHSmN98tIY4BZsVHV5TGdNo5MnbQ5pSXIPZ9SHe5C/ZJ/SGZMqRTbxdmZd4X8l178fw98NEzqULn8K05NzI4BqEtZfaYAmGcyNYsdBJxvj4xcFDy2NUu+koOZnwjDsGJvu8ptE1Am5ipgdfZUmYPZ2jntHVaHZL9AFDH+aM+4Vw9r/Cmz1oeV0tG/kzU+OOR93OcZ40YbBfxdXQMkTN3js6y3aYFLhyRLUz0VkQPLWbVxR3wZsRGI3Du7DuGRLK+XQO8/s9xshd8ZaJdzLaL+HS2lBrTNVAQRzbpZUiZ6FW1u+snMVEiF0UjNckDdgbtYni37JqLd5Pz4ro9Ypqk/IzjiG4ZTswwx74AVrbljIUJwoKyB+yRwljKyC7R6/gITQQe48VgKhZ68ySa90j5ohQF02u7EtaBerMfmBKbGTOdBC7yRuTMTFie0RRbJrKpT1M6HMNDtRACS3lFciORnT1keB/8aZ9eP/IlmvdI5hi41X3bmI2sKQqCu9zIfkDIHmBWldLaIpmGUQOad8z8cEc6Vd40GQvkRuiikbITZiKZ13L9OYVX1BRz5aBvV56B/oGEVZr7UOUoutoylQvyTFL8miDlB2xc85ZJJBD5Cyj3if0WKfwXLfH8jlUa9Ga0XcTwIEcpZKxXMeWel4ytZbCdcgyruZEJsmW84DeVKHoi1PQ3UnDtZDNquhNZNmJgdioiVttnLRlmOhrJ1BI7RixcI1da9Sa0R9crOczRyO+cQtMKoIhoV/HARQxGOzP4JJJbpRUP343IpirXVInehJl916QH+0T2UF/JUY5kyHeRyEH8W33kgjgQyZJxQTmGiGKzvpmbwUlOiCtCVzHlqEyaMmdVMJZqkQ0ttCLTK2pzx3aBted19ZF6J0vhogIiKwuWjBrSScPZgyK0y3FVS0UIsV6kW+EYhFGQ7ONIiPeMu/73t2u/+qgt1iukT8wzpM87tovEW20YNKFXVgEEDIKc3dlyVHSlFpCt4p3crvzuIyWUoIKDWCLhJNXGDZL0RG+3iOFBK8IURb0R+8wz8m7pbpOBmkxjFJGPE4J8smeO+6WU7+mTrfE5hbb36QjJFjEwvMrIrmPEMPQDCWvLiIGVzez6IW+xYcrI7kN2/eO8f/9z/O6jlvfpCKkj1g95+Tbvw/ld7cHgtTW2Gy+p15ULKIsG4cjIOKmihmp+g33XImrRCLom3ZZXuek9dvcRCiWrNCP8VZATOomo2WMkdAbseZ63oT1WhLiUcCEbMSj7REFCjC0J6A1CTYrFPWwwVeGaCyVMoRNdJuehPlMomaMBTe2xIsTFwCNWWJeAZVTwGbQlAdso7ZGKJWGqInzm/cjOK3Lt+jIid983XlJ3lVcVMUT2gwFSQD5dIxn0UAb5AL2U3ET2UGRXaRTQy8rO5o86GsnaFPHWpHnTC/E6hgxhTDASpEyau3ZBSG7LqMGZJFYlepW7b5FeKNoUjSB6Y9K8p1OIuBzDTPo0x6CWneotPxQ6BlJ4W8dggm26OoZJUOT9ltR7CNEMtWkJJUVMSALNbMwRvXUoKQIloEuitWOshClYvbbvSTgqgJIfzIAiFYnvrM2jslPerucVvp4vxEsa46KOl/RFcO2yOYb7QMsqk0pitWNM2ZpgRqy2Em9y3qJn1QnCjlPVyTKTmnI6QntQHxraXsBHHVEbJ06c0YpQUoQOTmoLJZmY4YKkyqsA3TZbm6AVyIseEjBVR3uALr2uPuoYMUTwUIOiTzNwYFuNPRExVMNbJDgy4aTsbtVSj+cOyMcK27kqsRLdSjhIbY/JEFhyIR5oiItW3Z1nZEuKEhGDsskdr1Xpei6AYbVGDKokMfED5fxYKBp5fXX2T4aWEcOCeD4i2zUSdb3SJisx94h++Q9bLoDLM0G91T6xjgHplZ1wBrKZdqFk/qTcyO3uI1kCSEhM+HvGPtF6GV4lDFGXXX3/IKn6jBYkK+SDiFnMXM6/uO4tC1PF/g9+8OaRwk+GRJ6Nrohhot7gds8RopebiGQCsLJwgWOBXrFSCzo7V5+A3jaoxSEAABqUSURBVDTCyuSCHzDRCH2ZHo5Gjh1e64jJM1gvgPJs5Dx4xS6UCvq03EdE01wAydyxT2yOcjKeP8rK5UZy3uN3H7XdYce5oobvDYGh2orGc3vlAv4GMirc3BEx3P+uVqlF7b5j5AfHZSuhpgiPPUZ4d57XrrnouLuO4L1+R1qxT013slvDSAbLNul2RYzs7pthle36TfZAvDvPxnIKewK77a4jrjzDP7zh6VNT7HvbNlHEMCGvgnayme5uEQNrDyYXgOQyesvJaaM9DkYjxz6yMyCwBZ0NSopYs08uaAWxbiIoKYJcSIMc416w3Te/Yt7a55aidDSRi3gntrkeKfwUmOgbIsXYortFUt46q5TOGjEYch+yiCGC32GXx5iMGDpWail331W9jx90u28JrsUJ8w/eeVdnz3As00mJ5Zlo1RyD6j54gmQ5hggjJt90fijb5cqrnPS+JT5SeNbXdifbtV0FYu0c0Q9OMtl5qDJptSouFsIKQjeSDStimN23AT5Tj5MkGknkxmynENEY4mgMJ1Vko0MskL/OSlE2P4wOK4WTOtrqQdXk9AzdJbkBYKoF4TPlOBmgN3zNRbkxiy1WiOyJrYwWszWyZcd2OdsUkbZLd/9UopeVG+Hbfae8Ir3yPs1LfM+PFL6VdY0YCGpaZmmNgpiEKnMgSEVNI5msXfaLCRXwmmv9YPVGolvap3mJb+03mqWHNkzUNTnJJtUdvANJLwtR3+gVUtIu6XeoXPZwJc1ZYyJnp5A7UTZ3TuGIsjNFDa2hJEZvwzFS2prR23ScZFGDyx7M+sFGdqp3QlkoMqHNOvjoH4Ung5OsNdIiYvqkhFaUCUSkdzWICz+W6dVuDoDuapLYpVd5wplca9/nFCLO5xgifFUaSuo4Tkqsl2FumpOROoYIT0Ie5XtceoPQrXQ6xVyQHj56pq4wBUOuKg0ldRynrlBkR1vFY10wwJwueJWdH1W938/PATXhSEG22+j3ElHUtjKJ0dswYojo2a6m0NvQdR7dqocehBZ/pe49valjEM3LN0NNOFKQLkjNXmyWrgT0C96ZjXmWfbVrSCyKGM4Y2bmid+X4vykaGf8cp+QlIrZIamhFlZxk6IoYnmRf7RoWe99tWk5tdz5z4IqSVFHQhMT3+DkFaTKaEK5qFyV3YwXkoh3U9czJJ14AR1B6CeAZ7dH1jIWqT+y7tm33ay5GP8cp36n22l3NiUYaVibRuyPTOKW7q2Zz51v2Yu06oz26wmdKeIyQffxE86dFDLRsYcRQFU3v3F27PpHgK5L5V+/J7AGvSXfaWiGXkF07pyCNGAjh8l2OhVkn2tUnWZvJ0E4WyZC2ymSPULVdq9pjb2P+yKs4zpxkfR7RqxzDp+f1cwrqRO/pHEOwzPtkcwxRZ5a3uWu7GNmLVfE0hcDgvqLjdyzeCDXN+RynrDLJuLvKZF8RwxxmaZu7tougzlU8Cr1QdtIuyjGQ/Y1cd85f71NZ7pPsObekyvA4EtyU4aI2Zp3oVXMMyjyDgxfKdvWp4XsYQeVG8qmz9bT1G3IQ90hhgiuX5hmiLlzVrinRSLPKJPkYJnoj+u1GV4ROhngX0zskuxYWjAWczWzNrD0DMNXc7ykodwQdIwZatqhh0t23kDruRpkdo9KWK35rwGkPZvPdMWIQyhZ8ozmuyqT3MedigxBtixoWxK8hb5SqZbBccd6tWk0zotthDxAxRCRDrL6vTVVdVBjDefDRL2UDDXIQEwoOydaIpsgZ8lOVGIYXcES2ol1T5o6rXYvZA62xhO9PiYC4KNmFtVj8OU6p9Bq1/ZymkGzhL8GrhAs7touGVoTtculV2QOhMg0hrnfKvkUK/0VTaGWASskWYSjj2l0jcl1X7oLWEOvVrnFW+LosaI8ZEYNi7WkANd3uPoqvxpi7WnYzxyCH3lZzDA8qCEC2dM0d6UIYdWZ5uzK5ImgF6Y1Et2ucaL1FW97t8d8//1MWOonk0rJFDWNtKbOXEUpaEh6pCh5g7doukehc7pZDINL1g9CrhLjK8wMwgza/rj5ikpMZfVrEENFgh52RYPc9wt9tF+yKZJBu+fhnesmduyKZr4RmGb3KOa2aH8kY/9lnEs3Ito5B2LC2juHKM/x6FnXR0nax4+/Avk25gKrYIb2R8CvnNDs/DuYgQPVRU2gFyfYw60QrQ2cnnORgdsEBDKsVilwQWkFiIfRSfKycO8z8OAg1DZ5TaLiDlsttFiV1hJIizH1qmlBVQCeP591s3RVaQYR4VVDTCKXRrBJquv1g8JxC0x00ktsxargihnm8bJtVuz7XjpEUXWZW2tJlDyaikEZ2ykjm9oMD11w0xdylsoV5lSiKprFvJHy1iOFuEPaq471nHfMmK7aL1YsS34ToeqTjGidyHCKXXfzITjNoRS67oTOUwknkAutwdi54JKMpDtyRcEVkqpYBqn1wotOBz4f1ihfiCXfQLR1D0yhJ1izh7nuEt9su2OqwQLs6RmcjEIZjB12WO6I39n8gHackikLv4Y5s4u4jIeauzDN4mHWilXkG5T1RqV4T76p4PiOW4u+Yh3LmmYTjlD6fOw4TbkltuIOWym3Y37YRVtSZV4RHELHtqu4IEUn71BBaYWSP6FWMEw1xxf4Pnnj/JD8dpKbQCpIbVdnCTO8pHYMwpFfxdk30yu51DnFSNPZ/oIZWHI5BNU5o6WHs8ePRpI/sLOgYaNnigWd420VYRscQVX7nYpbxrugYwA9cmPuIbPRsd4E2jdOEHESx+miPGk5WpewtdAPP0NmgN2uiN1Fscwz3v1XYBsnuWC2D9Caipe8pCzVZIplI7TH5c5xNoRWlbOWOgKGWjoGcH044SYUTR6xXiUPximyJdK+4cx/Ri54V7CH68to0L/MWsbRsV5UOIlWzNlY2wTxjES7xCsdY1ifSzlV2xOuypU0vet7LHppvNH+TIdnCyu6Y6I2oC+8aYUXUmZ2wzZJ4fmh2oyO8HSGdSJ6P0ORzAX+f9bDHZPjoSGuairYlNkeEn80xiELnEd6OcKHSMbhgzo6QzsjzVDY5b5X2QIv/Hv1olwg+eta2mGgWHpE62fezSmUveUBu07VbOe862tppS9e8VdpjwvwRw0c/SLkjUFFbOMlUxYNkd4RlkN4I3Rh3jIKctmZ27ipbuuatNJIJql1viBQeyoQ7AiW1jRgaRg1dd99Qt4jX2Z+u7ao+b5voF76Hpna9L1J4kGunwlDbiCHqwpU5mSBkd93JVnm/7dGsT+z4O3buSlu6Ev3uSObF4wnXXBSoa21/Rm0dwwkT0B2Toixvxz6xYxThWaCV10ioikxUyWnIC/S+kC2uPkrocgwTiZxwKrocw9Pzhn2iIzvTAs3qrVbpIEptvYZj+AsfOdbnT4SSguBHsjva0upIHS8g4O0Kj3UsFIC7b0KvK0pm2xyJbIb3R7v+Rgpy7HuvMYtGDBH9ooautrQ5BlMEpYQSGJI6BmGfOu6+Gdkj0BsapyoN2PJ39ZGrOGjFqqQIXdUKQ12rvFy26lrV1LYyiZFtqhBiK4Bk7yJ6nvxADevuPtteVB/ZIob73261/Yi65hk6wklO6K0jbDNj/FWXqbnsXN0hd50fDJxoimRen1NQek9EMr2mXYySF8puGjE4owYHocWsY59cbTrj/GAjhjdHMvk5BWfU0LG2P6MrYjhGLnt1jBhGnkPZhkSvivfBb6nUGdDL2CPVi54XcxBI7xPhE82nixiEwtkdjjLP0JHOtiOEesnnKe8JI2HbHUCA+eQ5iLFzCqeMGETCp+yQJrXll1xhdQhDtojBZA80P7r2acVxUuqVvadAbtauSXnZ8c9xntIxhE54RzhpitwTQW9OaE2VgFb2acVxUrbZBdshveR7fuxEs9MxhEq3eHfF8KocQzCyRfaaAVGUsN47s6piJtUNnjkjhmxBqpK6T6o2p7JJW5errXSRzPG7j1yOQan7jNCKUvYZ7dXxEJTT2XWMVlGfXO+LE+KKmG6P2i2p0p37gG7pC9hssWvrGKKfrSLWhDiGZDO8DR1DELKzPtkcQ3B2jkT2CP/EdnHfUzhjZVLHSh1pfxnehraKWLNaBspmeE1VPErZTU8Du7+a9vrZMcH8LalnTEB3hEeU0dkFJU3k7VoB1BAeY2WzlTiKXFCE1tZMDiJiqF1zPrJzSscQ51vsVHLPCL25oaR2id6oJ3pHZFeJqRDqun4gOCiS50Oyc+Z5n+O8oKT3kapZGym7o73YBafK74QSVHJRn7quATaoSTj+wvf0Dyv/t7I4X8nqGeERpeyO9lIm8iBvQ9iGtgeAbTqiBm849HVYL+SNgSioJjpr11yn8FNYx4lRlttwoYu4HMNRWjHPsOIYd90c2k4pr+UYxk80H1aoEWvTe0bcXCn7jDkZlz1WHOOum0M0Dh2jM7T2TJ7TfyIi/lPil90mBS274S74UyuTOiY2U94PixhY2QyljkHc5mqFECIyOtvt8lOb5sNHrxR2mxS07IaOIaJpZZLQVivOLdYxBKEbyf40xxARX2/afU8jwjFsg+2aV32UUdeqBEp2w0qbiDWrVhhacW6dtTJJJZsh1CxVZZJr7dmA7oF23eCjd7jxrsknVvanRQxByFbZa9W5ReYZJFOP3SFH9ExAwx20KGIIgh/JrkZnoE83+OhdXtw1KZS6Pw1KYmWr7DXhBSyzmuwxCgccF3z/27EySZVHUpasutaeomPQ5xSeqWtVAiX33qluzuHTHEMEtYOm3oMrAf3EK3IM0t23MDfiWnuQY4h/nw84hStJ2EJ2VbC4v+W1XdiuFA5QkmvRUPZX1ScENTGyGUJyScjPsvYchJoGnILy7dWJtumVySYECwMZCsJwVWkoyeYYtNGXrE8doyQUjXRsM5J9IAoahI8ux9BD9m2kvorCpRj0inCAipyOIaJfMn9Fx4Bkr9rmiBRq+vr6Prx2pIXNJlxXveKNmwc4H5DbLWpwQkkRtT5NsWXCrErWjvBWIQ4kuyMsA+RCVllSPXaVb1sp0SwaAadjiIbQyojwbontiL7JOJetOsJJrncN6W68+94/DVxfQLYhR3lY7LjyuRfiCR1DmDZ2HaEVKPtyDONynZMrejqGIGQzJHQMsujcBYEZ1g+iJFXXWtta50pcUbIvx3BM9gfmGc52BUUmVvquAblKxxBAd5VetLmQU/hN1aQnIin0kioW6j0bbo6orWOID3MMIXUMZVaglyotZucPWqAVesXjNCqXvvtok2UuQ5cUdeqVJXq3H9ukRjQjOakgl61c9hB+NY2yJFxkTQ1zjpNK9qDc+91HcyRKooYrYjgouyGcxO6eguBPZS8KJQXDv0luBqUdQ8eS1U+D/O6DOPUjOw/XMJ3MlUnrJaCjp2OI6AcnOaGkCMoe5XUSJjYb2kMJy0BeRi/BG5EWCqiGSXAhnrAyqWMZXUe5ET0jhoieeYYZlUnM4l5lVdmya6WWcvddbdMIbzD8+5EdnXfd4Z0EHz2T0DGERvSQ7ssxzKGOjiGCXjjWu4gP8HaE11jHEFHr08Dak0ploLk3Xy54L0lVDbxI7tnyDHKY6nIMR2RzsEyzRZTl7dinKVDkfOcPnbsssrv/nRQJia/OFr69Z3MMStlXxHBMNGOujrtrlrdrn8iooXIO4s7aM3k9CSK7n1OoyRnWJr0EyECrOoaIfs6BfElsJ1gRc8dFFPFGws/2SZVzUcEykLmut7tjEMNHP5RF9FuQGFrRMXzLbjYODNTbtUKsaxXPCL+iMolZvBGrdYFu6FTIdr33y2tdYYwqdV2QoOye48DBNtFvHLpW8TC87E40uDxv+gOLY5hQYVBhH4jsqvCYqPoooaYLEkUdFyQomxsHZbPa5Rno3feicFLmGCI8mHwqmJDrdP4iCLUKj93PKbx5wnaEMFjquiAh2cw87pgr6grrdaziGeBND9Z2tIdy9z3CX/2OBcqdZKwQ8jsm773w0U+6IoYespnot+sYdh2HBSMG2OSu9ugIJyEnW1T5zZw5hkieP9EdPjK92FfE0EM2E/12LSLoOg7GiEFyLcZddkt7GBPQ+5DO/T8cn0wd7JPgmouD1HW3yVDXBQmJphK9DcexKfRG53OYxb1KMLGZPIOyybmDFsIqSR2p6H2Z4Bjen2h+RV1r6BkSL0hXff4BapnYJA9PBaGbocn49V9ebRWPBK+HzIBX6Rgi0Q3UvuecwihdcNK4WOX62xUOYKhhIQC9F+qYvJ6S6K07h/IVFEBuyzMFA7pTGGvnWY9I4Sd13W0ypNoQdIWpuo6h2F4yqAExd3MMI89T2aYrKFLB97+KqqaBMXxnZZI/p/CKui4qBMm6dFLcXEZtczKxnq2FjmEjHEPbnF66QOdjSAUU2fr+Yv3oBR/9JOXARqiFv6S2kI9K7gdWJvkcQ7R1DJ4IKtaravqGE1//4F3IwO8L8Zq9u1rHIPc6u2qXdAxByO4YNbRN1jO8xoghavj1kOyO9iD7lB8KBMkR8fpxdwpfeoVVEjssyXelAbXNBShld4z8lEVvtoXw/rfbWQinPQyJXMjKQG9sn4Def3PM3fILDxK1a3N1eAudrZVdYmRLTV0XLsupsbai+D3zOlXrsse2yewx5exH5TnTJ2DL19VHHSOGCGG7bhZyRA0tcwFK2WJIsDqGLatWHvwm+ERW8UIJZ3hze0j6C5mBchhRMOHKa9b9ay4+zjHc6HSOIYSyWzoGYgzP6Ei5NaOuWFiZpLLH381zHYqUJaBhMn/eZigvSf1Ax7ARu01Scc8FSSVXmgOkV0INmRZCLmAQ2rKtPUzzBziGcnL6oF58S6o40Vsm9aJyOYZxuVGTLb3dpGPFU0TjhVDFjGSHJwpSwjIMJe2C78vUbzSPjErHqEE+br0mxWllq8ZRWXnCUNeFEOiNCI09XXNnCOJqVsUVAzkbslLr2PcUGjoG7V16xoghRKrFjsGyYEHB0c852Hb997/doga7s0uEG+YO9R0LMhn/+/DaEBOhUEmysTN2uGMuYEC25UQvlN0QTiL8FX1TqrGqaV+u09klvB2ruCKwYygqr31k5+Mcw4NOBCd9pGOIfo4hwmevCVBDlbL1N/0BIpU9mAqfYnN+MVOVScdU1i9IVVZpEKQ9s2PqtErtppMtPdTDULvbH29ksxfFW2eGnA3tsW3brcrHQZla0KSjTf59zcVRahiRRwjx6QcZ75dRyW53tXfjvIqqZNl3RxDHKzsH0bRP9PqiKHed2Gb+ewpN83gfh0+zpKwAivC83DK5wrMsH+YY4ATp2qemOZmIrGQ1htp8rPooa0/HdVK62+zYYY7aXu2tdAxRk71973P7lWi6zkFEsM5B4xgsl9aNCBclr9mS1Vqiebc1TddJ6W6zY4cJ+jTHcJdtuQoCCXZAb+TizkO3ooghin1iE71ItqqqiahMmv7ltbYbaJlj6Iqf1enjIoZg+yxqmBF6s30sKPPQ5Dol6xMZMciqmoqRzjT46JeuT3MMEdZOK31dOzz/0xwDK3pFx+D6ZjFkTngpO9/jTcdp8RemngsfAWUtSAxDuM5vtEx8quQ2hZJu1HAclLg60KuEViz+ewCWWQ56e5ofx080H6GuyMopHUPTihgkN4qyhXOLezmFuyHmPbXt+hneHFqhli1lnxpDb7v+7IfeO3ykXcVawkkndAw3tYs5BlK2bG5NSfT2mvQ+OOj+t8A/lrIjqgRE0VfXCCsVfX8oySm81GeEVnapK25OKxY5h6aOQbY5pxO9ut2QDVOnlKugFWZXUWeddS5gPi8RYW3sieaj1NExREjhEddm8eEaJII/yTHcZbfMf0TR+RurmqTQCnlSWOJoO+eCdoRTh5lL9I6wpEKidgm/GT6ifSmxrGypnUk8X0UbZTBKcZ1VpZd82egchUAw1aUN6N4RzF9zUaFPixjusj1Rg6hTYuit3XcZItpGMtSXAo3Yt+7jOJyxJVVNRugtb9e/gnUlqYgux/BmWiwBzb4EEf1yRfLx75dwTVmbVgBR0KuyXSp7PbXp5hT+My1WypeXIaFj8FViKTulEU0fFhc6rHbVUjfp4XAMXauabIcRAavVXomtIm7t+gsfsS8gQx2jhqbwCK14McfwkN3SMURRtvRd80FJPb+a5nMMXUtWUbv+hY9cC1ZHxxDREx6ZQutVJrVzDHfZLfMfjGOIWp/cX03bPbc1xc71Kq9+Jav5+L68EM8GcXyYY/DepSca5E24/rpeIiS6pcPiJtfGjKNpnNJxoCP/+iCntjTaKuJ1l/YTzZdj+E3K6hFXn8V62x2gaxoxqNvFyC6PYdNdsC2pHrGveEJeZWa0mp5oviKG39T2SummercQ3cfU1DH0jBg42dQYdq1qshUKZJne+98GyX54zYXVMUS0cw6XYzgqWugYIqhErwoS7OoY6rvcE1Y1dXQMA49TyZPsdc8p5JKs9xZ1jBoux3CYWl7Up0qrTIADehY3mKCkKLYb2dJaJJA7BudZhvETzc6de1PHECFyDqd0DE2v9lY5eGclDpBrq90P72K398x2zXXEvgBXu7bK1dmnXLDq1PLqZlZvaHTfutTPMbSFBIVVb3x/iUoc02K3u/6ybYp92SO066+24DLbRdbaR3Yux/Cbuu42Sd2ailVpAqNfxHCX3a1d/OdWuajB5RjSswzByaYcQ+4ZakKL0Vn97qPLMfymrosKqbflXT0ZNVyAH7JP1y5Sb/mbxEpbuiK7oTF+jxPmPrJzOYZf1BaGYNRKHYMKH6mLlR4oPCPERbBuTKeUtjQ5cBwU1Bt2xNT8N5pPiH1T1PjlZfQu6RjCWV2yJ5iQ23hu1eEgEh5RVTW5xmnAMVTzcqOmnvON5hNi3wzxeG0mXCQXqW1o5xHaXDCFSO55I5mGVU0uewC9dNETaNjcbzRfC9ZvarioUGqVC5KQNvDN2pw5dGMY54pkuPnB7aRki7DLHsAcnGPIjTX/G82nhDgIEi8qp7O1EB6xXNcwILvdCegJlTiuWxAkzt/pwAEvXUr7gjSf47wcw2/quqgwarsuSED45RiOyW4XyQwolkWFrnFK9M6wc8cl86KLLrrooosuuuiiiy7qRv8fFwbywNUktLwAAAAASUVORK5CYII=\"\n        width={388}\n        height={307}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-1)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 168.15 298.5)\"\n      />\n      <g\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-2)\",\n        }}\n      >\n        <image\n          xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAYCAYAAACMcW/9AAAACXBIWXMAABcRAAAXEQHKJvM/AAABYklEQVRIic1Wy5LEIAhsUvn/T53bXpc5ZJwRGxDNbNX2KfKyAygKAPzoQ5FCna8qNFnVo57NTAYXKW2QgT12SQKK41uhZh53SAKvjAJKxV0n529+l2DDUXesBP4bksA7o55SkqDSfVfLnGsyvcIQtYfqTtCqdMXzaAsdSseF7J3VdHUPIckeyXH/MzLkIFm5PZtZ3FjvSU82ig5E1Ite2PulHkFE1xBldtVv7kmlj4roo2Y1ozP/PZpMu1t5dpXtaySB96y3F9OMUIVEH6VyHCPfhiCju71XwypJIJ1MFbLZ5Orz3tb8RpvFbFGWe3Tv6tFE18t9koDp0QsyzHjOAhOQlw2/ZcUZy97rd4yalt6a5UfLuwcrdyPHufaSQcKg0nORKq2fUdLApiL5wJn1QpLIhnXjofk12mgcN4LZ9eWW3icT2c1k6/Car/QevXLUZzrKgM2dmEPzyXSUgv237D/CE3xIx5Mih6DEAAAAAElFTkSuQmCC\"\n          width={41}\n          height={24}\n          style={{\n            clipPath: \"url(#weaviate_svg__clippath-3)\",\n          }}\n          transform=\"matrix(.48 0 0 .48 334.27 171.42)\"\n        />\n        <image\n          xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAYCAYAAACMcW/9AAAACXBIWXMAABcRAAAXEQHKJvM/AAACa0lEQVRIic1WORLcMAwDPPv/96VKnU+YSKGLpGitkzRRs2uJBwTxIgD8/PVDEOYyMzwt4fmslFf6hmpBALI7ya71aQICCJCAboHBIJ2DZyffAP4JyErqGn9IwKw29O8g9U8ggcEoBN1NRGTQELRr8z3IE8ATSJKQM/Y5WsnaJ7GSxYP8gcUMElJ7eskaS2ybkgASJgN77Lo/G7CKxb8BSbIECSRGvZKlDPQCVaJ4kKd1AtlsVwxoAR0CWpoNcN8fZJoMELsknRNB6o/yBWT11AFkYKJkdDnPgkALhbgXL3laFcgzi1G6AWXLbLrDxWz7aSA1PMy9Fr6X395j1u7vLAbF/eIfoNXPi3XN0UE5a7QyHF/lFcgHFjegAGBd4HKHZmrdSst48thNj0rRti+2NqwJfIgv6zvIQ0NAilGfCKNLvQi/LUbttnMnkl6x6E8+C2E3Tba6OjJ6uXfqiV2un1GD6a/dmZUs6iTGK4BjXZuA9ulIfNeeMrNrQngsWK93P/OIgN03eI0MHi5WN1qG4mRFCLfZlCKvkFLqdTYjiFZqkKMkrmS60yw4vTil/pHT6rYYFovF0YYPU8wDQA9yAjWzlcHqD9aRXnOYEjJ2+a4FTAn2eJ7dbjqcAwWWosqEtRSCW4xWd9tjNGftAOmispgOq65XMbnt0gPdQ7FNMlUiKX4oFLa6pNWAvoB0mPZ5lOuBBYGK6GPS7C7XvOCedJrseTASNoN0N6RrJkD59NFxBpkNjWXyU+hDOZozrQfX9UNCPvR6FMyMzRHU8vGP+EQjHmUxufzruPycvUMUZGqXJqDUVIg6jP7r9RtQIcqA2OWitgAAAABJRU5ErkJggg==\"\n          width={41}\n          height={24}\n          style={{\n            clipPath: \"url(#weaviate_svg__clippath-4)\",\n          }}\n          transform=\"matrix(.48 0 0 .48 334.27 171.42)\"\n        />\n        <image\n          xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYIAAADYCAYAAADmmOSsAAAACXBIWXMAABcRAAAXEQHKJvM/AAAgAElEQVR4nNS9a5IkLawsCNW1i9n/DmZRdw/3dDI/MiAkl7sQkdnfscGsuzJ4SOIluQgg+v/7f/6f0b4e+neoGDJj/AMx23ck7UAFJf1Oa0CYTL5N/LCZxyXAAIFmd83YMVZSSJtxK6+h3SEPE3UnsqV9S1gLIS9E9IG931rvXqKYzkn+EMFm1CzTQ3y/nnOeOnbE+PHigoZyFfq8iJvbBQon0z+I/W9URyk8HXfPQ4VLbJDfV1G8ONz/bej9Le5tAM75P2uScw5bRfQRdaBVbI5HvTWwpJ7sL8gxLoUYlPlS+n1FqjwtlCHisXiIsHK00X0CKZ+FoMSJbEEJjx9XGJX3zH4r83fEa3SfrxkDAGV+VvxMePP8Wc8VOAJGYBX5KQyg/QhzOUAjqj6g8dUOY/37FSPALIs0WbL8/6I9MoHL/lsrjEP934Up4hjPvYBFo5KJhQLb/8IwpmJsZPys5SKF0KaEwdtw+2Sm7Mf6v5N4rejLHoD58YlScAbFkcmscQ+/wtRDhTV1d6LIOliRMQ2cMxRD9E9UZO/x2xvNTiN4UCNGtd0p7aMuI4DgaVj21Om+968uPSWGYBI375FgIr5AU+rT3trviyeZPF9a5inmuxXHc1X22ABYATZcvonyK4HZ8Qrmq4bevKp3CqX39tooeBbf+41yvdzv2iDNWUnlEdhsMUO3ajDk1jiNhajMFzXjNblcnSH/d4XCUhAod/QUfogof1dad2WnF9cvH80uGXlVP8mNhuNXmbXM3GGeavxJ+JTGoSOxwmuw2NsIRLrRACu9+frELpwNYl80MQKttfY7BKVZkW906KllH3ZB2dCgeSH9EyPQidL6dvikPctIOIS9yhsQs4Z29+Og8rdfZIajZ+XsYd2+mTIM+bMxNKb2FYYD3jCE1OO+2KCxmKzmFo+ZbedNlzc6tI7T6gJ1bL933F4mVu6/DghQ/40cRMfJPub60I5xm6jGNgulccgUecGojFUU0Yhn/sul+M5SUEk5Q2CormJIao2pk/rY1HlnRCr8H4QxNrSfruVuUDdOEo7CI735U3kOrbXlCdj8tI8FTZds85jf6NKjoTsJ2/E37nzrkWjWlZ5MjHfZRKO4pSBTs2U35jO6G1xuuhwVRd8Gy8b170Fzr2YZMS5laENZ2UQCr8b7uhO6ZzrtsACnUIrmhmpf9reKYk7D8freyh/d8m8YJR3epvqpEfhUxnSe7pR1sqsj7cXNoJ59d6MJMsCGNRS3ol27iEi53Vq/Tgc0NoZ30Wc5q/wc8dzI7wzta9zLNRanh6UdS2/cbXMv11x/QZgfoDPMS2PcSdQvYDAuuabXs5aCptHpb8X2A0Ci44Ad6TA6DvvNDCxBDfSY92e+WMf41gPAOJEAJEnjysq2kFor6Xow5Drrvndu337DGoLvYtpvKO9PaexrlPhrrTZBPpWRlt8Zptaez96svq0RJeyf/W6htwH4acZwQL4p5V9DUNG2f+0epCCTctNFk/TeqGe9Dabcy0fTv7H4WPwx32y3+ZvRGy2242wV3EWk/lLa49uzXTBzQS1JXX0M3hzPPNpfxnb0YBj+qyA9qd4eDrqM7idGIC4ZWj/5l64fFUR4nsmHJ221Y6OU2QmVn5bLthPbvvCL6EWH8sv7B+2m6vNWvF6RR3SOSP/Gu69G2two0BcYtskvvCxus1f6JctU+KBhQDmHnZJYv4phtbJNfCAUJtYxeARGCViUvpZ1rsfV15YOegDXXzQawYhcP5YHAc8d8jGMeTJ9Ma8btwVk/47lC8G8r2In3q/IH4Zxj3tHt9AQaKCBbFz/PGjcsB06ORgR2oo1nimP83eG31eqlg5CoaJh8PwDI/Ap1lkI9iMqmULXg/cbXpTkWjRqiOjveK+UB4ybmP8d/g7/zLwOxDXRY/AegFWkPw29lMjHlpn55AQ+HD49FBmtj3f77A55BRRPPAfnHYw7z1zPJis9V/w75e+V8tN8vbPFBls+D8PIEhEnox05VUPM+9F8oQqzxnlrfGCzy4nzHsAaLSwIkjrZ4n9duqfx+6nCe2IAWmuPe/ETlM+sf532Pjwf9GNtC+SpH4bBlxmmgn1ZhAHMoofglfIL0l05q1nHvcyDNOZ20mAABGIb7Ub5L4ifHFkZI40ObDKRh9Fu5Sq5oCcw0Tg8q3QXByyWGVaI//rRBzcAvU/lfSPt2xBVfe47vxqjQa+Z+Cfj+htLWtQz/pjwuy1H6U23CE9ck1kU5x8iHxFmNrl9tBJ6wmRO0DhZMKJiSXbqv1aHJx5IKTxfrXkXHz+PvYSTZSaPGu8tnMOVudTDiGWcPELTYjoqfRcHeRhp93vqLOSF9SLUgvwuiKWLPiI98zbUGtYxXq31DmPxHhhrucnRWKWvbNfC2LBmETH/NN6QOhX/jF8suou3S0ezxDQa83S4sGO0XjZfFnB30m4ust1Mq6UeTrS4lEQs78pLlq1Gpi2HO8mR6UbkFOQ5VCh0Kh6W/dwj2ISg4JzB/NwIVHH4UyOwlXCTYSvdh8YpMyARYXOFe++2GcEAsK2e7zIi/qoT7h6xvBVad0bEwHory86rYxj9sadG3z738LOP0QbpS7fUY2bnjcqn4vfKmm0f7RfBG9mPu2yPnsP7BfndWjcvL9sd14OnYo2C+3k4ZlHPpu/eDpwRNJEYj7FoBLYnhF1UjOuXuXgMADMjUAwKNN08auH37yHjjzwo6MS0AckBmYRcme83Aw4kRC9ZyKz2J21sEWxcCsK/Bi333uJkuRRpj+g95hsXyuzr2bYPG7ASpRNANAxtx3MT1LIF8xr2tOKzlYul+/grHyznoAroxqgEo+Ep3cbIymAm16w/ymJl/RHyh22tVthiWHeGtdwAUAFsUIOkOOti8YwZs1wqP4sfkIOX/Qu5KtT3wOYd5jskTdHLuL1iAkk80qkFK+4ZPcZwIShP4CODJrYv2pDWb9OIz+2Wl8vvELD77v1ShJ3gsWx3GYZZ63d/X/fze/J7hJwp42w3U2u2D73cbXTXkW55FucyZ+FSOP6/px7SeL3eKfcyhqV136OEN23+QFt3X43VllaotSto5gGE73YRGW2xlg5BFnu+4H+Qx/U82z0zIiqcLAVtl8KD9xm1yNFVOAdZz6+6iYZpD0Rq1FQcVodtnrhz8vH++8/WzR8FAgV5jm2Q/feRBfBo7bzsvwoXSg8TZqZ2g8hGulyHEzeg9jH5GYMwIJ+lZ+gwdOP+Evnt8gZtdtEX+3Fd9QJ4r7np7kjpu4Uw2Pdo75JI+H6eJF+X0cBbUIef41FVQsQww9jR6sQAXB7hgOmZ7jc8mCPpUpFrj2gAsiszpMIsyKZuODAZ7p+h40JuF7M7eZ16AZuyvC0J/Iayv//3C+op2/FSDd9Qkn0pxGduwPML9vYO2z5Vj85MrsnZ7tWXivWa6UvZNyiw6HVDw0/7m0d3PAC0RwMS5Jjhfi1nDVdrdsLkHpjjLZTwCLOYL4dsA/E6EGOh4kfDgEt2s55oGNqIZekavxFijqR5AvkvoP1+FZ63ldrwcxW+Tytf/TIIjdbai75krYfd4o5WmBUue22vqIwdDzqmajXnhq0YyNizSdvXqcu9jCnkiomz8PGhjvbBkpORoV00nhiB5xfszSGz79BMzavUqly4Vx95KqXM4+dhrgIthuADzVg/VJxYRqF5JdPiwhDSzaYg2SY8GaQWeWdkjRHLTjHT8sZgWBEpPOm61iz2ZYhUThxVmogZACy/vBKxSJDPuJoRoPUVeZH0o/sp10A4L4wbzZzsZP5Tr0KwHaO137+sRomgu0EdJErCd7yAO7xCjHl+5iSkYesJpTd6bXy8hDYiSeUJBMXp7gfS+Xzaey1CIf+lzOHdgf/dm6tPkPtG5+z7BO8cPdTTUg/Giwjy3uFR9AQEEncsLgW8mwuY/gNLHLFNgW83KN00ntXpt6fgaa8dSeZcQWvdvchf48mJPe6y1995hbKvDzkD0yvoVAcYWoeFjeU6KG+9KiZPtpx6FlCL78UMrMz8OWoiAtxm+P0fzPzpDVSjhhy+HVi//OuPx2Rbb7sxAlFx7UaRlnudyyAKM/sbDWaOyNRklNtJBR0WpKciC6HqyenGEm/FtpNLtroqJPSNfCa44DX4JypXEeDhaA2zFNQaVe4dBGIeRozzFe7mn48fzY7mlb4BXTsIlCfoYFcDjtVYMjDUGG/tRMxnObO5+hkXH9yuIb2vthAmImn7I9i7Sp0aElTIE6E8NdofmY+5o0gy15se1TH9KdNCJpC43+u/8QSEUUGE7u4MMijblrsn+9R6w+RL+oUhbpZvkjRoWLXVTefBXm9A3BgyBMmRs0XJtjXupT00GO+s3hNYhuHlsw53Yq1dt5FeftJoy6OaHoxD7MtbmLzA+7hIh/MFI/bn5GFlYwagibjdtdgqrHdZT8rbdoOkT3XZm+aZRsH2POF7CjHnOPz9H2vrP3DnWvuOJ1AxJDbEu5027yx2qzmfpl5z75SGokwnDwzc+8WtV8q33omGgC6nzLTu87YWX9ze8l0817YVSB9vpWT7CRFhNCIxnwvQWNpgBKy6peXkogPJael3DJtdK6dB6cs2ouafj3MpJmLmxePln1fPmkOBrbX2MzyGD4fFrJcwbu62B/EQmvOAhr/mwr6n8PnBqNAgBkcSVnOYmCHKnyliL0v90BmO+8vYPwHX6bDt7kqYd4yfOXEWMuI+fHTFxC3IO2QKuOoFVG0R/2DPZx+Xyfnrwq4bHhhTBjx3BsBmmsrY7QLq9z723T79EDd8mv10X/QIbLxpI2s4gNFW0c90Uo71Am+rYkfQcZTJFlPYjZ7vJgMluPJ5bylMZKuk2/1ew1VpvN+bdFiMx/V8lLGBsu5TzmENAJTxRe/5DhM/3H/kK0JpPEWfCGI4lcQDpRT9o/osZeTie/5l3KLcXNwXJyJ5/jKaXXyxLvJOpbTSMDvz+yoouF3IGrpGI1o5n5pDwC0PapVPBmCtjdhul0r9S1jJZHoPnrvNwolb1Vxe/1D+KMsLNqjfShw9Ax7yusXBG/H2nh7zas4x0YXeBk/XEIOskUv2GHkfV1PGZ+0cgy/o3SeGvd+BskSOPt9ot8KfzYZlu32A8L6fyAOR6VvYMYLe0SzRYVvynZ+3BnAP47ASMqOxMkT8QmXAfnvBIcdKWEvbiQcygunDnsxDAGpQ8vevHt8VymmoLRXl+Ou4VUNp1qO1xjtxKb/+jVWC5mdnrkHhgaZG3lPbvCBelHtHzUvpLmND7ilyShuUiZJFIZNBMgcFH8VkgjtOJ6VfxJLfE3Pfow6dO2PEEffMFpS1USa9geEGZL28jGp8I/muhx94dmWGfandWzz9MeUea2nrfq9hzi2s5abrEoTQrEr92kaDyhUoLLUZ5hPP98RRWdc6PHNymrY+L8gFHmRrpB2vHDCX1ErV9Y4AxPmCEWhts6smedJx9ZCXxlsiz8o/UlCELrPvmIYosLU3jmLl1dIcLhMwZInh/jIXNwCyDTo8QzmL4s4wTSFfmiHr0c6XknodCoyWbCcG0lIpz3YhOg/jlVxobLQBuHtxxnlEbxT5LOLSjQG4/o1+f7Fu5p/LK9acvi8PjJ4Aeg00XFrv0dJ71Qh8EAiUKJXRsMW2KKGN1tqkxW8bRL9rBtg1FMkF1iIRXdIspIqknSFxFbI64CdDXi4tL4+K/NT4YzvN57Dzx33h3HeMQ/I9Wv3FYylzLKfbN8rB5Q9fUZppRJa7Jr6Q+nIYmxhZEO9eHT0eLtMUZ8xCdqFsItgLO/eigWOmYxzQxH6zKNWAcloGk1y23t9ofXjvpcOL5g4NOmn8XB08+3HF++L3fDK7DiZQUV9SY2CYeYonu4ps3bfXXhOaj4F9q+kwezEc51UQOuSdY/qOxfdIpDBcOpfx/aRVTMj2TL8DyfAl3m/q+a6iLM2ikNM7mqpOFr7gdVtK0RBcD0w5u4EtDAUzLGFgqrI2vSc0r9/ZOyBWJgsBPT0aH5d3BYXxls8QAFV6RXsnyANVYjVk54EGA4AKdib329i01ta9fHOJlF0rglf4sG8p99bbq8ORzUuweDfR1YYBgU8kP9o8yIoGYasevqgLPiYnEAsagbcP7OPY7aCeXC7ZcFlW69KcEbT5FYXexntpaNcYP4/OUwPzi8TRdRRf7PSP7kPCpZUjubjNvzvBQxxnYDaIWb70xe2iJoPdG+9QOxggS9qhV2GMyM9ljEYb4R3DWfD1sczsrprTEF4qCzJ8evnlDisg7lpV3nu4RwjSWR6d7pdzVuy489ndX+7wGSjhsIGkX7HjZxXoRt77biKvoOzuo7UD55JhnmfAqySwutm3gVk48iTLOdGnu+qMeqEs1aAeyKQxza0ad4y+rnelRfr+Guo+vnCXEHH7vBgkHCjbPdru8n3F9oU2ELeKet/EtxGI1RHKej6T+i8DAPlDWRHP3O/JS9Fg/Fpr902Uop9muXtnUws2kRkNTokJ/f7vCVYgK0EyaLl4O6MncCIfW+LaiSpAaSy/FK4wqqYtg4EjGoDxZc/4qUxF4/3bb4/MxjgLWV9hPqbTWNkf6I25Y0/NF+SjuOzGVJaH8diVY2PKxv1qpPbJRQggUEJoawQ2THZIf2eA9h+ivn86I3AEQrtDxHbAro4ErZJdfhVODI/3R2CyE8MsnnkWQa7lsXjTIL2iuY+dYTmUB+qBQYJhrL8QJaPFCR8lOdp0LC3rFzX8VJLIKOw+xLuCXPZuEP9NwC0ngnakyrvHlIX422jt8gRmtj7gBTBoI3JbtPxe8210usswv0YXPjxamXiLNuk9gkozxekA5DXHngLj3m2rgYHcDDR5Ydz1l76fUrQIEfGpyr0XcKQHT8oXK3TvoPl+YKx3d4jLJHIM3z3bD7rYdKLs0L+YJ4Qn1GeKnj43MAABdtpdNB7BhIm5aC9JLiNgDEiAanUFHsKjQqIsg5AnfZuQtik42VEXzTb8ufrRjWl3WZyJ7pPgVQlA/MtUXFvG4H3wux/JWv6V6AWzxmmY30AzPBOS4e9aMroNXTc5cNFjCz7fxIRyj0agGu6ltSeF3zLJsEOrEOwqxt+h8zEvQB1e+2XF0xemSVo1fMsI/IuQGoGtXIchAkWV5Tv8KuUE9MC9y4riy42e8Z0BM2l98p6hYshFfNnzfRKyJhJvnLu7BElw341Z1s/TdrdhHws+t/d2BVkqw4Ed3gZ77sWzeW4AWnsX3b0XRCB3M5+pSUEVvmAEqAG4Eux0+v1rsuw+ZP9PbxVFt1IGneGTQUTLOuWxpz6wDCF17wryXXUvwcw//uplLw8gasWTxY+4rDOaQZLkOukpz/tHWJxYT+8JY0cJwyS6HdWc6I7vg6Wg0UQ7Io8oj+p261ERZyfKYLOgDoeMeIht4K9hDHP3O1ImIraeYlv1MOrKCN1n+pi7WfqdYOVd8tl44y7ABXkuL/Cd/Fa9em9t3O/yeijf7vKkYeUyI/H6ynqi9yYunKIhzBl0nWQBmFPJQTl7CvmdlwMz8Nudbh+kDdc11JWdMP/SU0D3+dscPjMSnyGK1vwyzFSa8/n951LAw18aEBQYGdjWyLB6rovkhJLPvAC97dOX0e8M7j/2au4ka+AiT79XwrHV8AldVUx5GJV5hAYAaHFHwEfeyhgVnyduzafypNeOPgBjuOQzxx/G/6C8Vnmj13tNpZvG8LsSjQzW2HagOUtk1zTvwHgW3nPeazxGioLjfsk9bhnVDEPKTNekql6hEFHann62Kb+v1p+vfSXsT3P8q9L/UjY6/wUysbd4WnvtEfQe5dv46FWovNegFu8r0sE05glQhejfI2qMTrem3hLyAZ61vhqXRIIYAPGmQSiy+MANmVVqCaF30XErNVyCaaSNAJxrGa7ZfR8OQ8aA8on8oRpgEJYCgfj/C+jkh6jH8ALZGLK/Jt77QqQF0SA4EOMbxaLgk1l+n5y+T1SoLcq4itLnNimgaKOiYdDS2RT/KdNqjcgYJLl+/+cDI8AAjU//1E/I6e8CAc+QmpfdpY0mdvcQhdhWXr+KmYFDTI91QQdQSUqQTZ+wJVK0VwgoeRYHI+Ao5Gf8aDybT0WaNUTFi+mlIK+Asz6UYl2WT/cT0EsI4niZqiozRcrwZmMui7/H/23Q7IHN2wvgX4brxqgsirC9tV//BbllW+Z1Wrxpqcn7btVZq0ronS27Wp9My1MNvfFPmT6habXDL0VdX9HfCZGCxDsRcJJYktuyKgfzthK5As8Rke9ajgFP4Ub+sMabyTL8QA0TlSL7V6DZL99V11OfRrzTpywwwY3cTwfpybXZVEFsysrxkSCH2b9pEGjc7Y4fNkOOBP1lc9J0tfdFbzPmGhuwDxX7xyL0pe6Y5ic01o69udOn+xz2YuT3WIt3A8X3JNc8QPlAjnk9x5xn3VQMYc+RGgsuizKbMaxbk9ycjQqKNm+BhVyxIWXpKNmhg8YundsKtpc8fan8gQdyi5DhmodIn3TUUSC3c7ZGTmlCeuTqByRrrusm+oSmjTG9MUGtU0Z3EudFxs16Kbj3aI7DEQHvct8DnhOR8ym1DFhYr7VrKnxsEC5HeV5tXLL3kDPZFHT/BrBh+7AbIghT7rK5QRumf2zO0A+dgzPPHdUryoaXx7C7+3mYy0v+Ag0lTwz8W+kmfKDI3VcBbb7CEOzmEMntZdoxfZtMeulcQnrPvendR7sPWu/ZqxxV51z0yTDfAq6WcQm9MR3ELLn6upja1J99gAcV372DBzp/zDjtCWV1Hxhhfwovqt4jnHYeULEmB9wSOSYi40W9EZgt2tvdvph/qazQx5AT4DmChSArkXH2ZziNvIaTh9ZBDnXZTTNtYvf2zyUbqFtrPb4jgUNwNi58VrYDTYP8h6Ppy60DdguAmVYkeoKOwx5lysZrAVjvCwkmDEhlqzUjRgW+YZza7brj5Yzv7/vTELGTz8O+WXLyBSQvCHzjXYTeOhup06sAiCZ0k89NIII0pSZGDCTyXAuuL6PwPelbmwQlzQwW5aMEaDeMBB7M/NBBDAZGeSjsPMNrc76AKXv61a/FQ1i39kPRLA1sh5az+UljZg02H0HZrXY24ISR6CTSGpH3kgtRIMMADZSn3z/8FdroS3hevcUdVGMZkUXEY3/o/rEqfXu+N6aP/J21Y3VpGIhRuYzQ/lprL2zso5vDTg2snKFsNE8veCeI77fewY/l966hnHUhMHt2R33L03hSMmtYtYR1j00/WKxSz+Z/b3GA3bqlxwIXN6c2gwUhB+ZtxDBbPWGC4yRkxkkFC/asUqc0ngCJ4zK+QApeRCcp4DBMDm+4z+jXEJVTb1GQzcAmuppzwOHl2ZvHaQDI4CbA580TkUX3xc1gMbbC03TPfXkAN2njIqw//bYL1JN+J8abjocruxt7dJxc31ygZ0igNOb4DK5u0EF7y4tGoMK198FOFh+RSAWbfaYaa4fkd9NJocZK6C07F+ERtZVn8sS5ard2zXQsm9++RxDkkoajOx8HjiABdsI22SJcqpEgls2kokhUCSAD8wISupuELdstStT06bkDaZAOafPoUt55d09rzM749fRponCVHcvFEj7eGiI11kZTegBX/OOv6y1JoN5XaqSJcvEQ579d5sq32+sJUdFntViuJUZiBCTvy7D9/j1gnwdUVv/O/u0ony4V2VOzncxOuYsFUeOIg2++mF2Db02MWfhnRoBMU1F0H0nCWg6CWRsm5hbFgACbeNYn98QG5G5ysDMFergTLoMtECWEDsIWzGf02ZHN1mJdD9zY3pq8WcNFC027vNNkQs0XzrcCv9vZ0rt3A10KNSzjgGBmMmwvpuuWZoA1i6j/VPtc1u42Cx1b7qU63BO+HTKurM7GzdHzoLuMmcXRhjhhIA+0zXoNsn10Nw8q10xUP2wuZXsaNjMsf1l9d/TKhqhTKVKETa2RSWXT56u+bqO2Yc1nk5ee/A0yJPJmzMTjUi4Q986ngMVdoP4uStQtU4y6OXh+my91XzbEqqO8H47xjdu72h3pbsCMOofVuzlgapU2ehTdbNNEo8LklQbA0xh9tPu9QLvaq69J8nflf/+wn2GlB+GCcRgry+ag+00KwA/1XxAgHXh12WLOVrbiuKO5DHD99TsWNoq07b/g9ckp5c2Yb6l8BZSlaeOI8KMHT/Def95XEKhGdiSdttcGIDUy5tGhgx1KETQkqs46QbRjjPtxqXiXUo1Z93/dLIyIkVGq6nS8XuEsJNaJCCPAe/R9SIUwL2IQ1zxUK0/vlFsGf3unjbvzoJcxf98AAeZPa9EjgBpNSftFbCwPYSrW9xiaV7Dg6eZm4pQBe4efe8pAn/t5MT2TGFg/uXxkKKh+YxyqKnQ0D7yQrZzfJO7XKZQCYxV2RmBXucwIbJd6HiG4yFlNUErqqvBWqa74ObUeekt7K0l4ZuQ4wewwlyrDhLumcyLQA8RAtWM+NnZc0AuojoEeYjYhETPSzPshozsVnLq4jNNgCv7AIpK2i9eeVYL1b+ecvGUraAIU6aLKYid19ZEZH6v4nnzkCLPtzjmczhA0UCfl5TuCk9Bbay/hKjxDWEh9E0SNQ0lltslI8B/0mPDeDMrxavSjPsITkAYgICQgx6DfrAHysjT7XZZ747kRWHmvtphnEfi4V3exxDbOJoA6JKeV7udjV5JuejK9kRgi6nP6n+RdupprMYL45x8Sf+W9X8DHylhWazyNiPRba+JGTF/Wh5fL4Oz9dAnABZgnpx09P1hupL7qnkvTaexh2PSd3RZ7HK6y6oqJUhBsfz99qbvbvpdXV/PeSQX9TYNWG5lqtKOLS/FWAj8YKcMwu4WCTLNzhdLWgS2FcKuidIXlpnYYrU9Spm0RmfY7g6fHBBQh2kDtBv+LoMbPCzWOEKYqo6NW1Q+B+G35ERlaNLZ6q8M+oaHllX7gHBvDx2F/2Y+3L8+42z1JP8F34PsAACAASURBVEsmHNfRpnit7sZl+Iqbl5zdd8RoqytcHGNC1+fiyOKNC9Fi7cPSE0HWDU8bVjJoz26uoT4NBkjoDGnyP8Z5DP1fn3RE7XSjcxgoTHln33UMme84C3BmNoWykKSj3Vt8ZyF4x1zRNbY8A43eGt+yUpxcpKmYfN8I/4VhaO2BJ1DIit7hyp/RDmKMmCxP2A7oV1BMVqDew3ywAyvoNOUZuLLTaBlPGW/tnJNjKXcAGk7GyPtdhghM/R2f/9V427MDYtzPsPPjinvqCYj3PBi212lY18hETrl+d6cyiWSGMEndQNo94s3s2t7vytu5+wYReeWOGGLJ1eV3XOVWAvFWrHFwH5bpUA64o7XBQK6ldl+jdQZiCtE9X+HphB04ZCzLNjmcKyrwK6n0lKnNBI9IT2TNstI0Ciq9lONSoNFB6HEgt/mWpzv58UM0Nn90L0AJMzmZpzD/e0PiW4kut8LLcF9KB54XAiUX5wvf21xnXnyedRwreZoKdu3F/4x7aw17B0O/jnYnmpiizrWVzPQtVfJ3SD+tc9H9PZtzuQJNJ3fLdVLeOJsFrKsH3ctqD+OvP4KKVJTzjxjwzQz2HJxveSi63WhUHGg3InmjK/r1MNYODQ1mRPh+wg0zYUU9QHaFcls7Q7qPAxuLAiUc6/Qvuh81nvfMsUtx8+770WzPJpa3Yb94hbn6fOO6DJf5oDnmu4hbnIAY5pZPRNJT3FUs/GAegM/C36ndT6HlzGnmeXfTCzLhvVEYEtMgY4KzRks1a8NkoNfkE6l+61e2+sEShllhNHxiBKTtcTcHsvTYWAq12/TunvZhRzMPdqKrNPaiNvGexHsJRDuTwztf9GNG8+iHAERfQttMXWjmpwj4MMhO1f3IUiQZkvDULtSNAC8dq8Rv3OSLIWftgTkWwk/ye32mxjdwJncoMfkqbY751Byd+VT6azN2CmfVBWUvV8gyRJ52ewKnuEltsv59nXyJ+GTG1JI3IXej3JZVlM3F7zwB4svSfOLZ0gjeBw4v1JTd/13wzuYH+d/a2Txj/ZQn8LORvfFRWRxtn7wzOhnRklRmmT6F8bs1z4ooB7GaIr8brOOvndaDhI55aNkLIfdLBtMU9ORu1lHwLYMx5zoiDQQtcFmcU2z9PqXvqsidI5OPt1kfvbXxAuM0hermiVf0+A63gicwOrTxQejmfwz50lCF12byV9DC0xyvF1GzIym5FKyArVR5tnubXFZXlZbGE0l3PCpLNAQp6jJVfAXZEa0oMiQ/zVMJSTU6Szh+MZckKJdFhIjg0NjeCFnpqShG98tujhOUyuwW8QjR/tvqvtv2nlhs77ydd3pE9dBR7/oYMyYQMQo6WIebgYj2JMOCfmeSlT6e2+9o5Gx/FKZRmmVMrqr7CuOQJDGVgdl+5fXL5wbHcP4kuaaUnl2ZnXgXzQ3PY5GU08eVFt/P0EbOap22JFJuRRyYn9d2S0dlOI1vh314COjVR+clMEkh2ieTAYgfGpR38Xf5eGDzjnD6k9TlE3+ojxHe2Z4S5e8uigSCw3r9DxZHIl4BUHy3IK7neL7KQ2GiimiYd30RTlKpM1A+6W/4KMaHY77ysuC5l/DO5e5zFx9w9/UAyuHKiKkWL3MgTfztSeD6/HA/Zjky/EdWLj5PGpk1X3Eb9Gdl2S1I8HaEPAT64X0vadlqONVigx9wo2BzLjWEvEphZZA1YeiyHyzHpiDwZqBAbW/NeRF2c470RGwfzrY0NHFsrOe1AuAvUnRnFsYPFUCteOBa+JuHec9lAPqwlbYBurK/3rm9Ge3XIdJXu3fOxTEUhje1b8kZHy9KRPwkjIbnBwgtOEOi1LCCR+4a6uh2ArMkLeVeCLx6JCirJwtnMtmJBHf0EZr3IFCvh6JmfFwnyrdGc+Uj8ttqZagl2EKkRYzA4nFoBM5QehZ6uz+/R/iWGeizz0hJiiiV0RGMRnZHobfW/oqyzAhEhyNnjKmxfW/lFGq9GQP9+o/yoJ5AIfSp40T/jXBUkOZjeW7D4IGFvgELx5gGLn5EE3q4JZq0W2r4W2u//5Nck7AKVGfkgwF7NNcdLO7v04ljxiOkCP6k5P3eFfDjJytD0tmZi0sGnLvrBsQNWq8g8Kz8UVqV9s6/VTxIfA/9sxIEa7XFdae8EW1vOt9l6yJRFM6yEcQaJRrUGK2YdAM4Zib8mSIXzYgGnH2HF75EaVIv5TdfAGftCPzlO/g1Z3wGd76gowLsPk/gPeW76U9T9WaFnowr5uVdNC/rAplvnYkuM/xgcyV1Oi14ndLbNgLdZYxxoGEif8NYCx2ST4rnPsAugPbECZXKxR17pttexhM43BhSC9lEbTjMr1onHk6G6Ef4URFFMPtax1qDvDcCufXZNGYStyjQD05ktEWoZM/G0dJGtbK0VWRzRMYntasO/5Pp0k8Ih7JsfOo6Whv87u1p1rgBlx4pSY+ezWhse3XItwNVMxsxAtynQETWIxM0lFMQQtDvGjo0AkrIFkU6ouFWxS1KbxN12PROynqidmCMdo+hl13fYPqBoDmXkCGeLBDZXHUTpM0AeU/y6DArDAWEdVEOwp4HEUoSUqZNmbCaS6KMQHbJmgzVrFsjcFY2AYaQkU19uRjCmRTlu6fegKXCid7vHpLd706sE1kaUWad2IEuHCCz/XPeeRSqebv85rlHDwex6QTgZmkmehHXNQ7oRnHtvgVzM3GY3+Sr6hpkCbr0ign+seOzIA3ExrjMGy77XKpRMwDlXgpLIT7zONriYvPIJdFALndBR5KWt6kYzVlZVuSqGsow7qTrGY1o5MGuVnL5d4F5AbSKZ0aAKojWWrgCI4jSzW/PyZGgHElmxm1nNbMxUDKYggbfRuP6GXS1Lz51VdWITUDVLp2RT7tV3rbj3ggToUa799OviDuvv9fHLPn2n/eoofN5HpIz9WDG6YpaIMKwpu8O8cXxru/hfAUPVm8B/elpHuruuDT0vTWBSDmp3d13wggNzGfLWg+hAqc2I1YlowyFMg7Bj1h2fYybW73EotoiMLuyciwwxfUQBFC0RxOzyL0RiGTq4/ajg29b4pxGqSYCHNf4VtqaBzQOL1GWgvbRrptEhVj4yyBj11SsyxNExb8NPSG658wRv42eyrd7nnONFrb/OhGN4h2mIvzD92YLMB32FSNwy8HoPwm9hQNl/8gIiC16N1d1n30MkYa7Jm2rQh5ruA2F7MBfb/cAYPIz2lVA4JhmbucJvRn3oKluo3kX1gibWx+NEoVAJ5ozM6wfBgNKS2xdExsjsFeqd/l3AlF6B6HazTs8NaOmCNkJ6Ii9oO83QvH2fDYBHJZqtgkJuoP+Ud8ZwW7gB1LvyGEP7EGOEPdFIzBp//4t7Gne80hysEnKjiZCWqgsbURCazsGetz/DGVVfAil8Zafe7D5ZnRv9hoBYqrB+ZnDaX7HNVIWbaT6prx8I8IwW3F3N5gBfXk+Q/A/Qs//yAiorbR1Ah/Ige+5IGQktWExpcxEdMv5dkeDmpsuyo/N9Z5uZe2LB130A6xjlWYn+SzP0L7WbtqDCiv9R+a3ctgmuGVAdyPK0G187w2vsbDijgYfoklUZx5gUgPi+N0e7EkQSml97whujJgflfPssK2h0Glqf73Sl/d1zRO13HTidjL7myna1sLd6yaENrWTzwR202q5SUbLoSfdtlgdcXCNYQVGGh4VneKoQYFDX4L2uyqXivKJ9/SYxh4ElUkqRDxInhdRKjY/XfaAR+bCb5QR21Ez416jxe2t2Hmhgt0b8aDUmRAm67DPxqCsrD2UW1nW8+sNfohX94kXcO9nmRWHxgDrou8a2kzA9OZL4fJrZB0T6AtQ8/t+o5/ks3GJ8cCmitfV+hE0xkiXgt4zBhp/4Ejg5W7j4wfGGniW6nrO1Z/N33s3A+3mkXs/D42AkKdM/wFC3gGmnbE8QdCfhPqtvyx8URKKVZJ+Gkn6/LBTtCgtaGHMg5/oI8XcXLPTaRkAP0FGGxcC795A6Ynu6HQAgDbQnTogv1Xu8UNco927uQY1csF4zGhmKIyCW00J61F43fg70/uB3z5a3jZQDWAZrY5zJplpa6ShOkXLHA/AKJpKTp++bl/0XG5Zxt3o6MpmRmAftbvwls5AUzyDEIw9F1rdotnaz2Z0HIydZxryfz3UDMkNYk5VuoA/z8KWjNVqN3c/X6/4QcokzPx3Bt46gJZkkeiBqMzlBQmQDdya/ScubdkbLMZYSwVuMihoJyWEoz3wJxQIxvQ9ColHkCPWT0JHD2WMeHx6WrPgOyqv4uo2QMfuoiy0+Nd/0ZtAFwEG/DU+BnUD5gBAkrvX4IkxGvB8m3pfxAoXE1qsKSh24QUMkjduHUEjUQtq23jumfzH4dSxYUmh6dEcbESw3Q9kS+VFvNPrMm+AypySMgIjRs1s911Bl1KYO49QUQHQXobDgTvhZewa6JJvZe/vyDFgycjxvljgNG1vdR+2p4aNMu9rPpe3seoxoOr046NRJzTRZMPHYRj+P2sI8gl9dOhGBK+3PsK2OW1RcFpIrshnOTXFRoKomWJOZDPlOEXoFefqqbw1JBZKCyPAXYTcCFTDyc6Yc+LfINIeGYFt+dP2Iu20MMqBCJWbKlqBplY/28w8fin0vTfMuUUPua+XiDGEmeKm7SxXcCMMD2sEWhuwLIMCvOTqhGeJNyNQuB7FEvG6Orf0v3+Dm8fI6+D6lTBorZEdQBNaJ7IttT2R9m3m3enAhSwyOTENFXe/lNO4PAXo5NGBhoUcV/MjKlIoKQQ7lOwtqFfsWkwe4q6jalxMz/VSpz9XeLpV5nM8kdM+0LVUlEy+j41AsfKHO61q+SQzkh9RLNK9FWZvzZ0wfifret6eO+gAVJCG+dikr/AzhQH+yulG5P4yv42sls4bmHVyHY2H4Hj5wPv5J5chyHvJEdqz6vLwUixm883i/cBV5a2y9p7A+y35KWq7s2efZxwbg6DKaZvEXor7KT2O66KECGQm6fnyisjBKRXCB0ot9agO6Hw1PPAEKl5kNxlLKDx00qkX8IkReDIQK0YA8qCSXgagwE3e21KT7h1HZmXvtbZWuIkURTth45wOsNs/lV0W9a302M7nr4aM16++UTNhuzVIZL1vjPa+oOnH76u3JtOtGQjUimPS8WAvZRI5Zwct3zlOglCPZsaNbTu8M6U8J0U7z3dJ4+bjSJLBmy0buOylw15eCdr44yFZyV7Sskladf0jU7RMGVRBOMsPXsDyNNVpWYdIcPoXGpEtXJ+E2eFhoBnYM17NbwtaaMWUyVRXPj+2Yq/iPz7vq91IfuWdFtzMn8GM9Y5n/M63B2k/ZAOSr+cyXFI/sL6DMmYovEZrvV1XZtAK3TPVGTRSvdboF8ryAVe7A0No6+R6z/JV10IedaI3L/yI5cUQ5eg0+RGLBEF8Dgu8C5ux2NjgmkgllLihn9E4UXjpO5ZC0knbK3S63RBembYJiU33UqlW2QHROKZfjii5vo0QTfh+Kyy09mBykGIeTDqfB/JUa1XXBpU+69dJNr6NV8XnoX7FhDVkyrsLW2Z6a+NvzEkGawBCgTZ/jo0UiwxMqy6xqXT8ZqC9a2VDUw6JitZ9tjR4lSHug8p6SppFbozMDPHzi1gA91MYBVUV9MhSqYF14NZ8bAQeGABbnD/m5ckmfR8zTLxXjvcSCRCdd+GPvu7F366RMFUBjnfNxIxWfDMbS06mHfuzGz14XbUn23yYIoj2mdEiBgcPg+HBVqcProaJDVQKv2OdI0hcZuFL3c2jOne01n9Iw98dtNdPz7QftZViXBzxsiOzgnYJZbKqsw+Zh7A1aGbgfepRVELVyGyNQCS4vt9atGt+5XO6y1kj9ChXuc3IgG4tMSKMEZtrBav6BBy44Z67XXETdDepCQM0Dio/GZ6jNXPLKKrYTvLPuNGGOR/Fa3aKAkGZXx+x2Tc72dnk4u4np0/J2NcSXkpgtOY/zFQfFOGbxZGVHdyIxK6Gp+mvKAtDvSyud0NTIDRajsS7erA0i2iKcJ7xejIRZzky17ceA6uTrPsuz2HYKcYKj6ufUwIKQJywHPBD3JQ5KVMPpVAfj6G1B8y5suy3vLzk8ONR0dtN76xuE2FuiTKw2PjYVJ6BchicbokEvXQzLvoMN7auqG7DGt0duDtoLU17J2gRWjcg4LvYHqW/02bfTuL5WFjfk1N3K6XhnemDXUPRwt8x1Td3BIOLm0q3dTpw/2+e3tVKSw2V8IWwmUM8WywUy/iYr4j9DSIVI6CYJgB5Sy9Z3tkuUU0xRL7quiyTQPYbkXculHn7Zj2mDTPChrf4kHV1BJLvPxCitUD7uNpBnBAzGyfkqv5DZpMZg4qZzRnbD++chpvTL78KGK21cAuHT3+XfMV0SxoEGGo0ig/PyGcMthoEFHuwIwwF9i79GMbD8KBsDpoYYorI6A5aq7ER0VqqR/fB9oUi1Bl3EGQnQ0ivCD3qsw+HJRtDyZSqOG1ZQ4+NdgK7oEMy/qrXwvMNh8nCWwoAQC5sV3tRoxsnpiIBllu4ngAC1A90AgC/S4aBaiDROTfv0cI6ta3G7Z86GmHn0as1uvTesd7Ai4Qvfpgm+plRvT7UnGqeGpJBSf4z1B7rIA8j/6eB+eEqHDbOt7wAQUjMHSibh+dG6oOOq8K5oscny5cLf1jeo6M8yAn5j0Ky3CGBy/pdAzytvXWnG4/DmrZvLAtU2ne0F5riAl7nwXuLasjur6G2TCUqV6g+CkPzybS+Biaymr8RvT/yKln9aF04IbxotDEZTmUqBRC61JlbtZuyeB60EQgg0IbC3FP6i9JzTt2g0Y/CCYHy+CfJOwVQoa3KV9/ABz4HS0NMhoBoCS+qi5mavyH6dtozUO4QflxW0htjNvYZ5VfPrcUDmzjN8Yea0kW1O1prv1tXfErBlORobfSX8aXqS0J3mnDxZuUhHW/3i3qCHGZDQVjaCaDO6qMwyPCewzewhSt9fOWDXcr4hocg+G920aRNXWyksp0KRkDLodg9Obge6NouawfNL7uYWWs/b9Z8kRW76fhdK1nIMOYmSoHL1kHTwYSxnnloDyA26+SWCUyhSTptE1O2txun4waZbipFxm08SmWNjKkH2+HnWHXe5GlI3NTrD1kawsya6+j1l8JKHEL0+ntEWvIac2Bvct38P+G6g3Of0M7o5oRluwsNpKhZJeZzd87l4aV0TohvrDYEJfRArm/I8QldAdY57EAoOAro/tZU9dbhN/VXopQRuNVjwPlH4f4WuB1KeWvJIUeNjbBsW0FJxXFZIy17mqw98RWG3TV0gqARcs8xBElUZwQz7huWt4X1SIjVJ/eMzNddo93D1R4DxyGSMI+ini6vPLLgVdr7fGHgc43Oy657jvgdiOqlYr8ZnYedETgii0rx9YBGRrfiS4g+Kk/cEdjxF5qz+DCA6swI1MJDL8BSCF/mmTMyGoGUHqJvp7JMYzlHw9eXnYN1bFHVLfQPwjGPLXgCwyf8XEK/bIGSi3ITRe/KjZXh880kuBPj93V9n7P7Fkz493Z/k9YLnN0LdFcPreZNw9/TgnlwBqCLh5W1igvKXiIgv1sS5ccS2dSEbO3dAXJf4m7SpYSvqFebB1tOgu+nitZVyE9M/sGH0Um4792JE66iemNAo1+T4uM8vRGtfRoIcCJo+h2P6VWUymhW5ImPK6g5nIRh53KlOMOULMMEjEq+zGjZvCjHBKGbaR5n2fx2AaYQGeG7yuFk/ZRJ4tPO3Zxxr+j83i9jd6h4FoyegJeG0BAfVXdZwioTQf4oD40nXHBu2B9jol3rJ0wUPLMpMy/YzsHxYr1zqhSUZR5xYG/LCoG3dA5kfmr3Zlm3J7o2U9XQuDMkdA67Y5/d9DMDt1WHQerNLby/siWz7VMrbUO5/QRTp8xEnkKVdVMhYBR0s6nKAGq//hv4uSAhZHgnkBmPSxjnJTQDskD/zOuqUdxbgQkwf+dZl87l/dlbfkhMly590OabA1MF9jWUNYii2nk/+wb29BI+TaHu05CVOzUoT43AfxDW5JKWtU4rNQKbvB+FjbzfsP+lzLxgz5PPRXloQMG3NkwIl0/6h+j+R+Rke72V6b3IULXwV0rU1kD7Lj/IHH3WNFOPx174vQeIQtLGCKh6rf2Ts/U731sf3CBGc2pnUVXZtlgOhgD6d84FnR6AhRdKcTaO9FbWAe7ttz2Bkh9ugnALT8PHSjMh4JI+mLr/a0bAELTjvsrjRBahld8+baJ4QhE7Bz3CRGdiN3wGz9VwEU+P3sRbeNpPNwhv9JZUvAuC8U6n2+smszyPZvq+vxPC+jN8BpN9n+F1DaLL68ArrnEr6nqPZ3Vm0L8A5tU7AqqkZ052ypcxQmCCA2r0FvZQLgU9eQg3ztIFtu94YVltAbcjKRlhjpaRTRkBYvTucQb1ihlE8Pnfk/wnMHpL1yN9m6eIAiUFZtRPA7umezCeVYNBQvDCsj7e0MpCJkdlI92pLcc8EnziGCvyPvIKcZlhEhVe5rZOUCGifriHReRA9LnKWmV7g1VpsZ2iRh6tLU3u8hgd4cq9b14dc44OSKd8NvM5FY7V4TICq1+Mgbqi4oEyZ64STyBFxfF5rcyM4cH5VGW7AbPlhR6B/UuMASOqvnav2p2RGRglBjENvPO769WuWFJS5Z2SXVUvMWB0kkYq/Put7+Yu6+MjXSVqklo6QiZkY0oQENojBLsmxzYbb25qUUlg9Nn4xGJA34EcUAS2MdLqJF5AkAEbVtAO39oQcz9+OxfSlczAw4nFYPsIRW6jlABe9eEf9CJCLRRtfAEQy5NL58AIfCN002ahD6NiQ0lOeS0tg+Hou8afCKFYZDNDw8Qj8JrYuTPWecXrBoZ/gvOoXat5N0tBeqxXZBC0D3T4DMPF96hDdgRcqLoRFaKiY6RACJg+NAK7QA0xk4Px2aG5Sjgpq9DzJqQGUMVlYb4Uzsv8DlwSWrLGZQiG9F3ZCId9dnSLkhD7XEwTKgNAJ/m+QaFZ60LRgiZdGcwESWf5jtNF1ic2x6WrTJ3PLxWxQ5cs466tSPrbkSVbab9myDO0OHibLbSuD2mNMUJ9yuoGPDK67I9ypcSTPq9kmwxk9/Ugcx0CvsEdP7fCx85tIjrPq/jPtmN8dioj0LLjJukH5lXSOzDMWAovD2a+WeveWvsxDUE8tyvqOlksFJ5U/CLI0b5Jq8aTnT+h/U9lpkEZjuYn7cu+fMnoqclxqKV22ZWhLYx9l7faJyovm+cpWi+4/YuuQoUifAIAVaDgUigvObeSgcyUizO+Pd5HE+RJ4rJwAiAQnKZuYieLDCQ/WzLZrhtv8iBwGSwB8mAW1ueYD5+dUkdZC2PWlR1xnmSB8VZOUW/t151A3AkGgzFA/KoCKQ1Yjs6j4if5ZvnsKuuOES5BiDLrCZ6AK/ItWP5Bdorok0lX4YtjVxZl1mHjBVBXfifQd7J9FHr4URMieEUMcaOheOcJDnDw5EnZLFjWeNo39fxaiy6IhMUtjAEF9NxzsR5bI6CUaG98CRzbdPiGRwXdGgWp7zzWNZvAoDf/HqDxtsYdRVaeTvSbq9rw1UQetl2G+0JZ1Qy22GHosgeGT8LpTEalL8p3+jPnSTvtJy1SSKyHr5DpktC2i3ZeGOVlC4vxkpb7/3NQ0KttFCaj8SQ9g+4jyUKMeEXUUCcFzlha44qcghkSJ/M1rxRd+LmW5N6/78zWsClZyVgu3UM/59/MV7sRwF+L3Vtv8+zCm56TxuBUK/P+rjW5awgpYx72nLiqFY+AlWXyB7cusYoh6xDZMs/BPFQOEX4zbHnsUH9q9VL6FKQz8LnSWD/wu4johokvtGeifknmem43zS3AS6XA3+3tRWaeQCaLbCyh2FGmDN2HOSXyUbmEVy11I4BGkZwwvPJtMkoj0G5vfm4hxcG+vq3FGoroncoH4wO6x34DIzS7zOjBPl6Y85Z/XCm23ec8G/PeBKIPLia/G/FNwS46fVGTj4/CzogVRdnS23oBk67tEUXri+GYx9OJVSR5SoeMlW48q28agSMD8BakVGLOqZoR2Cmm3S68D4xANaTA6kHIroR4Qrc8DgpGQBmaAQ8lgFSsTNXZ24Vgf4SxNUB9tK6w2EamN43fF15SFUBlh9lA8iDdnZI+GcuIzsM5AVNTSWscws8rv3t/YozAvzR0RoRYBhGm1UyJe6x4ZYgtZNoQsdnCfm5FG1lsEHIo/umsOyz/lB09gLQhjlflDsxzagQQ2JD5I/ua8WIK4SpX8pwJj12VygfVCrSQDp0nxNsK/dC8TlA6jvU9czVDYQQQFp4wXWieQ5ebCEj7HdlaVTbwk7t7UqVRXu5gSoAVnt/szHq+OoNn44LbZyfxN8IpLXEg64zgE7iSGBjGexmBCp+KwdksI/wnrtmn4XD82KWCdFw/6UsjEqXDUI4dA8Msg5B+QtpHIrJxZJNRNmUU1Zi1CtW+F2hmajwYT1tA96mnzvSz6jNSd8nHg7Xf6AkYohjnQABYF2YEjr4fOHlUXDohh8t4ovxnfrCk7B6QT8O3jIAauBSBb5Szs73dx+3KrAd1zz9T5ox4pixxcH/DLWOKpGpQCzTlrjL7nLgIOJ/S9mNpQs5XS6o556ClAchf6P+V/VtOGl1/Y3GVvlMuyjWOVhQzgld0ACOgKzqUnzsL3Qux0egLstCOpE52y6m/rAi6fPjxtbIO069mEFxNkJwsXlKFHCEwd4mRLC1FQFJmOE7phZAMotQIPBjxTyYIvT99xPiUR1FhntpPx7R6Cv0LFhUn3DMCV3gMX3O67qsrTIEk8sulA8JnFSgaxo8U9Yb+N+1yKVT6brdGVRS6tI2VAFJ8F8XmbaXeygjlhUA2mKdA4td/OAUVTwGdUyMALleqJ3AhSye5hODBMDkqPDvhM3jWYz4m+1FfEtRgvYBAyyIFG5Qxjz2kNAAAIABJREFUA9QvLxwshLB0BrQC+o1iRLl2E+9bLprwflL2ST2CoQZP2l76NeNxPzgaupWEl0NiBuF2ZGMbB+bcq4h9hst9A8AIfpCXvSPCIaYc+SzgGGO6Z9HPjMChAWD3k8l3LjMPtDPqgKwdVpfC+BkQ31ozl7gBHyvDTws71vDSubBe5oIaZEBMlTvYoncUHLlHUHtD+EuKpsuHs5AhuZRHgefOm2MjNhgQm1CsJ/VqZkU/aKsiOOYygFJeMiW8Qt7OM7AqTcPecGIrr0URSkJv7f6iINJAZUXqminb9Uz0BEW/D/UAAwzZ9wtGa3KfvjqIVeHJE0xgxqfoBaSAc0A/MADTtcyrPbQi+dXKvDW/VmieqzeOBaSpBtpB+LJNuel+a5DO+M1gCx6NyL/Ti9Qh6jGPHHyICpU4zItggw+LMENSsmoJ3SRf0JsbsGILqavMKTv0KofQrwUwFBRp4uWGLJs5Fl7eV6Do9RyQKNCYRcIlYp1UYaRNkIId5xm/dP9bEKz6bOtsKiSBZZEBWfZQJ6+zus70Vcbmxb4FWWjdZ6MQRWL67jdaTkatQ7JCTZ8g6c0okBbzRIFXJ8sBKZYgFYeEhYcB67GhsWVhxkBFR9P2wkGGsnUSp4JSVonhkQ5tpX03CHPHaLRGt/AiYpM0MK0fDG2Rt7zcJ8bSAKKPhu5Bn5emwWjpN7q3rLI+aMQgz6ysHUz7rP5ntDIZHgRnqCp6SyBJMOq/sT1Q6bf6swqfonhr6VtrnylPpH3i+ttyooCcwAniz0J5maPpifCEBouvrP0qw519ozUEkfHU7pfyZh5xJW/XSZX5wtbaW+Pbx0t8etsfXrMELV/hESi+2/ANGg8Kb1G/6EdaTqHw5Q75eNpPQKMyjpnNslv2x2jtp+AZE4wRaLbRfu/PMxKiciBniCbLx4TAtOEbqtI5pcCQ3EMjwDKF/Bt4kgEG6nVZmjNvz2khL+xjeceLK3T/pU4itoGqbwFS/iMQ5WmgAsw07L8Q5KLDlIHdWigc8q2c+CLXxgeCc+mBGTPrfWFZVH4VkJV5yrvop/OdIeGN7qI8qVZu8Z1AweqF+9i6j28t8SZgLob2vZ5fs62H1yUooqHx29anKgXvLG37XeHNxJF0SdqqUKa8Gu8/aUwyl6mcIPhvDEBW95URjEm2Nkp5mQke7rlp3KVFI44KNNziWDRGcjIVAp00Ex1VJlAjbcT6/0TRJ96BzGc6PxTvIh5ZzT5lEHToObnog4WpvsC1YwX7QwG/yktZJx+hg8uQZZJqrlTnsYLUzUxN+82W3hqb3HJ+zYeZbg2sAEhrvMMGn9Uvk8acG5u5adjHpaEMgeMgSsvY4lnDVBCBiJz13irVbeRN7ySBKdYyTUhXu1VO9h5LRD5RItKcN6gmgqs1XuR1dLYBaeEEyiYrouZeQFBQnt6WKdqZonY72aiQOV2Vf101ycoJJDvlcV6kRAbksTf/UhIACNsUgH1/cnqWGQ32ZbOJVk9sySfBDQdxH7fTNzvFaQx2J/GOICMxWjS8Uw40uEQvLho2HzGoV9H70rmSQSAEsQybPJZzBYBY5Z4NhC16Kiam8ydBI0P8zgKj4UAjVLzs4TDikHlbvkBX6WyJdIRoO8+JiiGUL7Vjwri9ip1Gx3GPk46RCRNVs/H9TAZ92s7tLc/uxmA1Jwf8VZ3E2mEX8GVzYGpoMcX6GiEbl+VhHiVW2JVkiLmVIMGM2QM2hxV/StMa6nHrX4U3ZntKXRzluZeGpGVqLe5rNtYOKabKlA1SWJqSF5ZZ9iRhu/0zQX00JAaAkc7y7lAxIgaJIIryWEQQUDsbPcjT0oJBJ72j0fxeZSjHDMhui+22b4jiSmniJK/dCb9oB57XTAv9dWBpd4Cnq4yjtfYy84Eopk6KBcYscXoZsw+FNVofWMG5/2phc4D1pIIYREilaJmtUuvuoexGC4/W4q6k2RZKhs0YHrAjL9C5wAU9wwHtNa5+7iZ99n9o2r4ZW76Pf4M1To24sH7pOpgKMHjYWQyFRE48gd5berR55wWchh0i2IWT/HJcy8aYGTTPEmJhJDcf6hmEB2srxjNMoERr0vZPvkK1iQqyOP6ggOhL1wJNiuiaGAuT5+t+7I33eXAUBBgK5cg8pzd/jiif2rEkl4An2iV9VwrDj63WiFLN+iVD9KTAB6pBInfBKoApFKuTNEqDGMR4stish2GD4sxlBsF9p0BJjNHQGhk4CZPsYLTsjAAv9FlnGzKbCJHcRbwNiHzNgMk+ocmAH+VJFEbIayYwS6fIbSeHoAHOy/1gxq6iMV398hkGEbJDX2oPeXagMtTJ/OjsZjiriF+x3R0qZpYd+5RYnoCorzC3KSrgt8rjuGR5oC0sbWr4cCyAxzP11nG37vSI0l1RNB92OtCMS0VjtQMCDVL3xvLZ+Bv1L6/sNYDvaL9t/Ll+M8vUoXOI1MPEVz2BzOoqyzhIetr5s8yJ+78JCsnKjCSalaVoKBndmN/pRdjJ0I3A9lsOCoF1m6+ROtuJaZUTZgQEmfVVuksC89oMf0hey2w0fUfP5HWiQUB7T8VnJ+1Mc0JdHb926P0F3htFbCdza833sS3DBpi1NsLVkDtpBFqlyvqV0GHhkre6pOvaxsjFLocM+gXBCRpNK1YVMEC/UyBCjO8qI8bl1ZT3s62vqQfqaSoixM+lpWbkvuJ+1zqTCkdpOw9guhyI6FSYA4XQVYb3aGILWlm8ag9UjIyONGJssBJaAUGaBPeSC9EiDvakjZA/ToyQjrQQwbVoi4M88kFGxQwT5Uxm6kTWjhcCk+7bwPWh3XVlJhn1kCeomv2Eirk1Ok5s2ZnmjLWiISdI5CFtuDBUgfQllHpJTvtvygHtkF7mhnIJVL3ENugxGN1C39NAmNGlKIFi5CcqidHtM0L1A+k4ZhCXTRok7f2DfI/gIDwps8oWjADjkaHF4G3UWGhkDHEpbVSUUA4nRZjI1++KIQtoANtSDfaNoULaRFeFF4iV/kFgFGhCYeS77VMkSM5MUCExmoGiQepCJmZljTtsS/RkwrNDgyL/QrWi4wbmY3IpeUX8Srff/m16Pkn0OszYEG0ijc9cPtsA2VmYHqgDhjs6cknMPKbfyiCKuDVugIKIJA9rm8zAy/qN9ntfJKcyzcTuH2nYKTGLmBS8Ra2BA6egKKsiKSXG0uxEyvTrDhyEgW9pWmWCiLzFCbcQwx/PHHc+SMTUNujcpmPdO8nTDPpgzK7nlSbkRUXuZCLjJUzQw+VA9ZKXglHWH7ZtrjHqXq5O5IqHNwHBsfZQ38VYbSw0pVpus4W3ii9Bz2O0+xwKZdI8A7GclQI7QnZM4PNDEpEvDCI3LpWewXgTF2Rk7QK01s9JFxRCb6SvJi9bj0yRib4eTY+f1tp9E2uvfrz+UPmqEG4pPOF16H58SeSUdYXHDohkIXVVP3HHGjcCT0J5x5iaaFZpF71Ey+jTOjAjQEkqt5HkYUaAlad8mMIssGaBeTezMFubriDrNmLZUijWKQVno0ZHEe+Z/lHweqeEVbCAwY75RDGH8gW+KdAVvKbna1j8Rl1DZkS17fEDFSwtSKZ8PwwHnSGzitGe5Vf9URHXVVkUQDSFnySU3odhEGhgmQDTYXzbeOgPxV+9G6AKuke6rYEnkHxIhDbdl4xYxQtQRmB1gRj37lQptL0jNelPj4Hk3YER9DrbuHbk2OULM5/tmCh/CAgVMTAPXSz0ALtoT42rpbvFcl/QK2p+T/Q764xZC5O8ZCwhAwO/u6G77luzZYSVHI3PLflhnhG9lkYPlHXzFzp4G4ThSK95pr2bpBVESCcNUWA0v5GZKYtdm+Bkpgqnx6ru7kIJF00xGqxgolzcxBQGACOw7O7ZlUcFMlrpemEly8x06h2Uzq4ofiTdKeMpT0EmtwzQvM2Wp/hR4YROFcDXtrmar1TAmy7dyr2xWMPkywA5jR/t/ZUtllEipTsvU/iZc6C6jOo1W65AjHQTDew+O3nXGJmbbnnR8kFQ+P77Gy1Y+PFZYMffV8CKKa+hELLsMq1YqCJKUIAZq16wi0whz7XmDWKWt5LCJJnGiB2ppzSI3HNc4ZW4sv44E8ZhV5MxU1W4UEyS/DSc3pGDAIXZTEu7NTPeTD+56cUG4rgzsnMou7C2y6InasGkoW+VLdtR1EH+ycOG7S4ilKWZdsj0C8mS4VUMDq0XdCWVj9HdlEvlAzDRcGywtloegUB6XwkoeRFZVchiscwY7/ZJr/yAVjYgx03g0QDJKRmEpVCGxBrmMPk3xie0E/QF3UInUCLlBZN95RtkggdG7f1S+NNzHgJhHpU/mMi7vL2deyaRSUxySrXF8bTSCQ27W8kqCMlERWP5yZtY/Tkf1pyw48d4JWvcpJNMy7ltazI5Vh2SdlahtxY+/SnnGfHOsu877+RBkYORKOpXR+Mt22/DHW1fMQRftSbP2KlDWvQOE6H8pHUmDY4TtUFHzyIne/oDcYV8O59I8tCYQu9mpCmvYsV3jlAQ3arATi//p+FwwFsFtiP5JLBL2uxYXeNHLeUKNDDPLcjmNspY0WKgxKUzgwDjKMw3OAGvgFKYP9d/xvlIDRhb9nSMBU9qf14EmDE9kmprw1IYga2dPpw7bNdy92m/Kb2vGof/MKg6pXt8Pwj2HYjQ00KgQrQaVDZ6h+R2PB9osMfNmHxz9j8LTwb2PzICCp1mgGUX1q4Qdd0I0v00gLLbotNM6TEvNWNpDI68jjkLDECxbLYts75hBjmLEzJsQ9EYZNkM27g0tEKPV8GWuLaE82FQ7SZZCGTv+oggcnYStAzUoaXDXn9EaBCvxsh6/hGom9BWk6pjukVysF2xi8vjFtJHpAeZ0yHwaq390cjS8YNOTIdiQXlkRnHVxb6hsy/b/r7zUuU23B8pzzaIcRK8QGwzQOWr2Ku1/icqx1kkxCcgaaFygvzXXnT4HUjZNjZ1CksfyiAGoXz6aHHuueUx+9uKZOud1Z8BPSLb+qaEIUnrYL0HUoYFnL/ZnLA6hNkr0O3iHMGTgfxFhFGaxLtCefTRIaKV8UCwxL4ehVNv4shrPF2fLzYWjd6NTBv1RSOwGzvBCECbhHuBdoJ929vZVYbFnZxd+EDeSj854/FgvgQGTPlu6DzyFEiolJOAjoTssNcxb1h2yrwoAg7MFRNqolbCl41A5jUFD2zTQmquvsjoQd7K+tPzEuDuUrBbUJzqGPtKY+i7t7XmzoA6urLZewrqPbCRlbR7aHPSoRnSw+w06wn/pPwQXkDLDABj8l8bAFUs2T/eWqNnFFYW8C5W2wNoQmQq+3QSGCSPUYLoTbE7cajALZmvrd2nkD8M7NxDNdDsoCtO6YQys7/G7YGw/KPd4x364ZfMfB82hvwQgubh2BM45Ou8gKoLCnzcjgGidU8RfPVN/46Gc0kVTfbRjda0omfWrB82O9LelQdDV+b1dAz+IXFzKYh5TOnaF8jzLWMByjQNyst7gIrZWjjVBwpATkWsmFmFZdFxxQh2koQRo/n2wL5Tz0mo3ClVOSH/kcpELX91CluGck2J7XFn+E1l3o6/Q+u4qzxbqlPGQS3tSF6zA8lglaAPlHv4jF3Cb7vXH/5KnYGGAD0EG7Vp4OAhzGf7FSXshA0KS9mKzjkZNpW81WsuSpPv8gTWASZbfhzIToBGqS6C1tPlDQUOdnOM4oByxitcRoB+fQvn1m4iDM+KtSV6NN3KmPEAXtmSzcdGgNDpGDEjRbuy3VnOa2PeFqCq0Zr1/H5PAWwUoBBOrN+3vQBX5hOEdmAETkMZ+RIjUApqRH/Bkzs1At8OXzcCBFHbu1lOAwEstDeydjRG4PsbriLEj7I8mT8vbgAeylTzYGYnJZ5uxZjTXUHx0aftbrxVvFhEdbAxQzEITUILbg/+jaUI0g4fTwbmVaQfpeH5gjsz480AyXY7McbObVLwXCwXUZcKiyHCYaKBRab5MtfO0DnqA+Y59KikemthXfWkb13eXcFPjZNxhythm280ukzUW2uvgkw0Sw+7MzpRMtRRdakdys4k0V50CiRKnK2oLNZEKa85KMpN+naO4qlkdCZQrkDb9jdzDbppj+mF4G2vQ+sNNweIPLbO+M6gD+9V46Sw6FvxDZ4/kSU4ZFd9V7zoF9RNrYV2+PWMTEdRoZlliUTvtAN4Fsa0UMpSUUBl8YVTJ2V3L1GRjkRKJC08d/8XXziHccDiieJmf0NbWDmZzL35JaEH0OaoSBjRbU3gcvlvehyCVpWNMgIwX6QRoMEvMZSMAJMDx8QaO8S7HKKIAyCAOO38X9UTsgUwZrzsddGa5Q0K1ym9aRjMh4gUkqcVgs61Bm+RYcoZ0Lq8X2gqZYbQCyEYAfROTBuf7D5qhq6ps9k+2vWoVJBFThRlmWYhkl3RWlcWCNloyPgbEVChBtB0yNeelpUDunFdKxEJydfhdwL2PO3Oy6/2fXjYq6yXGe0Dw7MGLhj5KivK+3kyzxcHUw8aVWOnd7iNQMfxlBnN3ThQQSFIqMPAj0lRhAp0Z56wdE7W0m1xug7efDvQ8x/VOWt1BBnAKwoNkBB4N2dVUH004AGf7e9H/eyNelwaoiMUJuvRTpedcEPQQ+uvWDFUBEYNlXHwAJCG8hAISkf6HRLYZ+x6a/HjMWLAoezdxIW81+gNXgY803SxPu4FaRFFteLE29HdZSN9pb5yVx5+KYTeBIUE/e9O0v0UQzRyf3SFS1KQT81PBnTSjLYOo/V5+PAauyOsEAgkvmyXVWgA1tRWbHtFRmvNb4+dYx2+0y3rMx9hPi1jMP8Mo/LYhCSoLYjP9BIYDnVFRbgTwubLdHHJqvj815Lbb8gT2pMI/9HEZ8L4xyBLE+k2jx10jh6RF40FTkzpmSQ8UU+iJ9NVvvlcMGgoi+qriofgxuDflgZ1pD60dU7meWDtQIzAx/xVQ2GoDEw9VG+kOTNGZBuo1Vg2OWZCqCJny3x4+rMepYsrgR8i8dXUiHZRIcyx74TYi486N8ub2pSZYYKuihjY1lM3wBjIrvUObVPh69nR+CshGgLX7mjh/9lM309iRLeqnOtEzKuQPqQjcQJGIx2kTXj1JF2hd4c6Os8T5Lt+0C3DHSqSGAG15romY4z6blBEv20EVGGpytOye9PBxuFLS3JiBLahQAyB0Yr3L1+Xv3DNmzH6NVozHqBlB4zVlUy0twN1RLuNq1wYlx2KCM9leQKJ1VgAbfh2SsFWMo7wnaEjtjECIah5SuqzRHqPO3/XkGtocnDKQxqkKBhtZFWhw8PqQFCCAWU0MkaUJkfBUNECk/Rq5aoysTR+zAAAg+E8C5g0YVyJiazkdQOdHai6MrtJh4yJd1AJ9L0LaTvZVXhAyY7NDMopeZopX808H+dzguQDaWIErhd//UTunbxUl0V59T0486ZNK6f4C9TjuGl8nNvMzukgXsZMczoIxx2WuxS2aiun9McimZ8eJu2hwoA8S6EjjczoNN8PCD4zIL8iRkxYfN93md0vi5dlQrQlOu7J1Q4HQCFa/ksh7iYuRbHY+BfNhRbIPa0d8yeyYn4r9vwR1vKIcqXoRQR6LYQwFDgYtnfq71DjA4WLE35XnoqILytZX5/I1PxkPSo6lZBG8vxdgC17x1MjsJ3kSZDtLD5u5MoiGp/jSo2ba43+astux3EQB8aBQ8Tj5oFgxqFoiKd5jfwuPQOTxLAAay+EzTpk0hLFKXRhTR1NrI/NPmI+6g0VPsM3Wvv1Ci/5bqwl8GSJqIoYA/+DglIsYcycEbDZH9QPA+swKouItkYEE04+5rJQiJLH5q0aAIzfhR3dXcj66AMjYIuXi0alWjcCsZOlF/CJEaAFd17A5DvneIKkYyH3R8+3JHSkQTPFMaqUbgmJGhSAU41NvS04K8RJcKACQfOsXGiXTPhI89el4ZXEkVtzVvNTfUmQQ7zQjSDf+TCaqXCH+iUI6+enydsmbb5Ai6B+DOnLdOPR7IzNQve4u4h4LYpUiGeDyiYn9RsYUQgBqWV51cy7d9G44JROZuizOEZPRrTglrcfAZdQiXYqSg/1SvrHKalsjjLDCABvp2xbE32Gc/PlWeI6/9oROFqHTMMpntHWeYBuys5nq9jRE8gu0Vt5MH3c4vce41cbORfH08UQ1vrBaFVsI8U2pCCrc/hiHeYxbRE+bjSXhkqW/wso+RNSD0AGp6O8gCrjGS0mLe3gYoUXScUT4+Fu9y3xg6AcgdPylbLBa5mRlXtbmIZFZbcxgCEgumJInpUSlQURoxcw5asYzIoRiF7L4/lLUbDSYqj4GMyu0Cqw2oXd9RbhoBcbO0U0TuVT+TZbnlO8MjbNqbwl422JDSC/sb2iBNx9HWI6bEKm6FqLk86h8kHydXgeV+xNZxnHZQSwLJNRyKLkX9YW0tRH3dkZhR8z8Fw+RGJXBqiGrM9C1dVBbEJahC1R2dOih7xcpPAENgT5ho/TcbpBmYJemCfltqwYgCyvVfaYjpsBlLeUjOlQfo6ziZiNomktegyttbsvr+W0qXCXJ/Cme7NTRtXz6vQTrdccF57A+2iCqe+at+OS8ELzg40/9EgwWXU6CGO3l7v5ggbKFrftjiIJT6G15m4mFs0at49CCEfbg/uEBTSzNG2b37iKT9GNOhmZWmGkQcrbeKS1Olcox6XMVcM8hUSt+SuzFVpI2GV9Fd5TGO+k2sdSYR/cdYTZnnqKKgTPImOelM2ckh1oTliX1/7lIFeoF/uRCTBIfL+XRwIwMopP9f1Y//GATodNGq1dahx4+hgK2Ie9Fmrs+04hdtWBo8EcRz06YtLksx0fpL1I/W4asc+IRzDTmOKazq+o7ATc9tkV3yAmDKwB1htybqAmKrtZzXrA9QkArveCMYQhUJRF6ytyNPrZyYAiFaqfdJWHYMJopr6igx8rTLzIq7XvfId4ygqCVZwYZus+FedEiMeGr5AnrQcs+8j6EyOAAAWZpooD3zlMOh1oGsO+ABx0Fqyt9xm3bMmAs1YTrU+12w01dibmrt/tsECdx7iMAMxbdYdPeJ4CCtC8QCKbu8xAT1ojjgfnGbRGdyul4wxpvgv9ymt3afi5xGMKkAjtpKtF64wKjaWw1RT9CdGaR2olWlT0jBaGH5MuBlgWejtTtt3yQ9meWgHVl+oswkl4tpbdGWDZ7n46CXaJaucOslDhS8p3u6FhBru8MppcOtuBjaWzEiCxiqKCIwovbI3G+vxpVKmxkJEm6ZepaK491jAfS2JRuLXW2kuCJmPIFAkJtkBB3+vTt0tilTrlmwXbnoZmKI9xFnDd+eCbxWDBQLhBFdGVOXgCXXe8bTvlNeA+29ucX8/jAgfeAwgei3X3XGMowdhzj4/B7VUkBU+MngOqY/2Z0SHKby9IC4UEgOHFk7o+mOC+/JOlINUGHPEUiRK5BILlzDcEWTgxAnOXzgZIPPE8ggw9yqBuH8bnMIevuIlgK2OpewWx7NaFvG/M3Jv9/OI77l4dcACaXIr3au1+jxdWLAavs5HrZjDrNfXVZr6tdXvlsY8rz8bILDmyfFYfTqNn5evWEHCBrPslGYWin3oBnvsZLaYgksGndv9kwjLls6UBhq2qhZ8C2UBg8OgN+4+XfHbFPzECntAD5kk2eVVxxu+QLzUCrW2NwMdjYhPwquXJ1+Vh5Sq0K+ApskeFuKiY8XOCa1q7WlSuKLwSAjgugHtlKKbAaBp6ui6k5aBz3cQFI3zrrV/nspDwNvCoXNHqIQlRS3ZFgtKLCkFDxAjECO/sANbovnG6tcJW3h7b3fKiCB+zjlsW21a9kbYjbYwD7ihAuWF4sHSXLwufolPTNwUkK68/CuPlwF0SHnCgi31P7gqKyzVsTLJBrzycGf60dUNs2nfMczkMQYa/Lcjq1qZtnef7gJ+NkUdPXxgadcPphdZ7QLet9auNxloCubyDPn+P65Uy9M3akTTa/kZT8HrkeFRIffZ3sqEjFDP5rL4IQ4zNdZN3yX3ng6WhgxCMEzPjD4NE6ScCPeHL6AhF8Mi7UTwxbuOOfiVkg/yAxr9Gp1c4A+NfGodZ2BqBOYYrOHXXiFMRo8L4sgGQvGcgCguNQGvtfNvvaXh55eZkMsrOGAFfOukTtRREdfVunO2WdayewxUDUeyRJ4ZGdvikjpfOzXjhAFCU5B4FqskGJ3XLu/X9rmxwIjF4F90Lr1rHARvioajMts9WOeIR0LYhnoDMzzwaId4HqyHv9iIToqxIYK92JkD4ulIuVoz6gXmidimRi9LYOgMre9qWDhT82bRDMskrd3YFj1ZpA1SCu7FUObA3NwIwFIT9j5sG1CYC42FI24YRdt7/EUjce6d4cntMD8Kd/m2+e2y6eifqdglhO7N2Gp5naxuwh3W2RUe7zzeM5vipoeR2ZpF5P9Aj6IrWoSLPwjFgKSj01mogkJJS3oftRKvwDyoQ0OkDT+dfGIGgLE/QZKY8PjACspvt0lF2YZqS6x8YgUp5l/jAAMyipSUuNhl2Rr5iBCy9jN8JjRO+ggTadorWsehcRjLE5OHVJISVD2AeZMH6VsDWiD+DLoHnlCTzTnFpCBo3tmXnDZ01ftin63lQAxrG7Tvj7Dz33VTk5WQo9GZXDxau27fr178dmkcSVt7eGt+qu5H7ZJWjlDdRGtv5fmgE+IDiAfV1aCuzlhpoVq4MUWVr8jzSfcoIUE9KCMDmHNIK5ZiCM3HjpeuzW/p4tPQ0UbTpQ4W91mE0QKWrWoisoTzybS18Sa1DZovtVw4ri8tvcqNRcN4EQ/Pmh/zOuyU5Eoxq59YcT2JQhZUPBLej/eLhitJtiHIscJg+yCVHkfBd9v3LKwJMpXI10plULgyY3pt3a5X7oUYh3pkveMiJncHmr2goE9h6LkMtJ1c+nLgxrDQrr5YZQK5ymxZgZGtC8VXqwVDYSXiAVmm5W1YJplaGb8mAZabPrQDiAAAgAElEQVSCxHcoCW27fXW0hldUrDzZB13an8beCKCFmeNtXXDR7xQmmo+cSva0cch43JJAY1QDvWYExBpd/fPrrAr52VqLZ312XsA8yGFPG1oCy7rfCrPjIKUDwzCH8wPUU6D1EfFZb4c7inDnj/kdvj3c/V92TsAGulf7asOQRoQ+Go/EwLldGDP65NvAxFAXd/DUP8wyB9DmA+hLHrI8hAhK1SXQY/1TyPNp2JGk8t+ocVgiT8XLyqW2X3hFLhPMD2s4VlZ7ySIsxdiHtX7/18dbROzKEP3UWmt9eCdEyt+afwcAL7Oxqra4fdcQxELF3+65aKbpO3U0enZhNtM0yIu+Hwtx1xATGuNdfiLsrtAyAoqWFaBiKSmDevxWoVXvcxFfz0rzzJC5dbjEclKPakbmBTRuBCSf/8IITD67tWYyKeA6A5eNlrWhYAD+iz3+LGwM0SBx/5Y/l6OWrowVO3muysP4eNInnQxdgiliesJXGpRkPE6DkNDtm3aO0/q+J/eC03COwMpEjSZMLlcHY6LWhJsZABU3cBOntXL1mUagA2+w7uEsA5nsQS6I92azxd74gXRLhCAYJid6E8EhEKN1YBpRcIhkspApcYp+s28BFIL7XipnfuZVT1oPlqlYv++WQ1YUQbCuLNtFxTRH0n9bD0WEQOouPNb7ABxDoHC3d9+oOMa/GaRLAh3z3tOPu4LUTaBEjjHzK6OCSg51CHqQkJ2RapeytjeWBn2mAo5RqBOea0j6m4aBj7b/3/30SxG3VFI4UL2yG/Ohrxr48r01lCpcALV0MX6QpXkPSZaDCDws1hrpaJKXxTse3RiWl8hjaQp5j0KmRA6Kl8I3EGQu5/l7x2+hWkVHGYFdJPNOlBEAD2U9sqWOg0DKjcY8lEsG1zUo64ERYDJkn0LNgMik3Vvz28NH42OfydWNEUHQmJU1tINxbMbbY+0w29PwJmE5yPabzCy/A7f2xb4BnaEdTdy8moKRXr96a+21WOkP06gOSwdqZjrb3RHMLmyK3jQ26U4chXIJzwy4pjzNCy310W1LsDrRA7KEyCe7N0ptd9DAaTvlshJMkLfNdjknK2t5nAx2W1YhXLV0tjECy3sIcG0fmBiBTME40WPamWewEZDVh+YRpGkcomOS3FtufFgb26bA51DMtMUwhdZOKCHrVaQ58Ybnm8mc1Sn1NqIRiJT8+PiVvUHnS6fzYQTLC8+WLou29CHvVK5RHIHAMT6k9RYkCC+olbdhPITlBfzJ81KSon23wVQ2DNLAREZp5krZJdllMO0MstIvdFGjPQO8V/nEMTi6Ch01BQu7HUs7ZhkCAvRpPdCE5EC5FM1h4sRc9YSTbadZOWW56NAl85e8IF0IfHlSU0mjhrc05zN8pIm+DJik1K60qQvhKopgP68xv971Aao3TshdZVOnWIvml1tbu/cCcQsTR5bl9v5LrpgQPX2KwlaHmQHcprBMYanB8gD5SmG+lF3tovm2HFsaCrVl0ZkR+GaIckoDkLbLBweQdmFrBOZYLfTb466teCjECEgD8CCUZK8YgQpxImVGV861qsHBdOZWkCxz5w9bvnM/RX2CRw+eww6P9O7OP3i7MiKPtRSUGQFW73ecOVBWVybBA0A+Tkic/sIIoBzzulmG0t3ctJbNGp1pVY3FVmv+SrZF2mxjww/c2DpQmlOcQvtmM1letpMM/gB0BIPUrd6zyTMnRoB5RgwJxpn1mU3dlrVGoBieaOHtMpUxRFM5CX4l9nJs7gqKL/tlZU/OX6SeYCB8/SEgKDhXFn33Fg604bsExxe9pElj6hIQHIeLk8UmYltafXdlGx1eA9g8d4JXmXOOvP9GDTGW3n6rW9/oZmkotKI2DhKB2ni1TRLKhw6dgz47hctkQOTWjTwsL8qxSW+t3W/vMwVRVB7q9HWJZAFluexJ+nKxJbOPlO7RttCgYMgurPVTWZCNkdyKY/eq/8OwJu820xW0d4KTmpN6UJ91H/+Pj7MiPeaF/YV1Bb6BqVV8G4GWPPb7yEyG6/cEfmOnCw1ACViF8QB5A6oHaVZRCzJ9fW/cG5eKfG5rBGK4DYGzdCiRYSDniIlc10NAGi2HF0MhuQ3SztA5PiNNfAw7f8zzWuIahJ4KYXTc8bicl9FK57ntN5FeRquCSIbaz6kRgnl0zMeUfQXANDrx7rTk4NzDNijJoXi2Juo6H0fhjCGZyyXZR4vEC2Op5AlUjIBk4H93qJgFNu5aacvWtEk383l5DoSVEh3TYO3f5+/RLuBqxfrJPFIrZ7veO7xW1vWuwHyZzVGxRmD4Nv/SOwI0As8ACCdd0ZQ2/yHjnVFrzUyIU/9/M0sPqyZpZ0agFB6i9kfZnqyhqLKHRoAVbU0bgJnvWIl+EJxcSVuhEaiMY5kPA7kobRdku2+M9pER2ARHdkQ2ga31bsa+bQINYhipHcz6ceZxBejPFbF43O+Ldq3mxO5TpKmre/vty+2Y1gZcF8sfD2Shkp5v7beIWZtaP556+D1Wnvt5Fnz3E1pYYlm3HgBWnB0oE+F0HD+6ywbqJLOTelfko9sKa6KFcyGuIEM5QLcKOGj8nBHKMAzI194HrtoPIX1lcJ9ghY+ttNbc18MCz2HyzKDu7McDaWppdaJAs+iGn7Yckz5pB9c+YYK3NuAjNB3ziSCNUgarbXn2CcVKMPmdcrfegtJHNu+cHEbRDjOeUEessYyf82RyoR4TxtG9LwBZFm0b8Wflt6h/GqjVdaO1buffGK1D2zz/MA1a00XzAWSi+oHT4XpmTgriyj4N022UHlKSVgklBPUknfE6KBoOFx2wkUZtQ+/DpiSzhbRvZDLkdsjh/twsNkaAGtADIxDyMbmgLYMRIBc8pqeGr/hlBCxtIUYWHvUjKsvi+OsN0PbJuDXjZNg4M/7luIQVAqbbpShCRx3XH4SbRpAaZNvvo8Vx4JaGBGq2D045dqDXsRDjdz1331jOgKD1vlQ8RONlc+GksW0oeeqXXB43Izopl6Hw0wkgyyeE5q4HqXA3aFtH3GURdSxemRJrzX08ZpUdt5eYBlL2RBmwiFAcjMC8tXTHZtuvFyrDD7W3RvpJ3aBq409ueW2X/PjxGPTUTVzqIYF8WduoHU+D5NktvYVG3jX6cucgL0P+E1l3bTRWXa76vwbEE7prLo6Y5pA8ggrVqDOe7EpEPT51MPs4lzWOVt9amYmu5x6B6odvfULxFHSeoO/5AuWjcFCfj5DsAQ35URZjmEshMQIuCg1Aawzdxu8GzPIjVwCU5gyFwfFBu4+qC1LhwXbRPH5B9sm4RW9h5yWxNigaIXUAC/Ps+v+p9+D+FvLSOXMYFgKFcxxPAcyk4bJv2osO2w2/4BVg+tuLMLuGWqyccildBRIlhCiXGG+V5/1din4jhiVmBwfCllsmE3gJyxmASIeykym6riZU+z0b9Fsa6qMsiVyBthoIrPxEdhsjED6haPi8drc/PjQAKmtRqZS2WpZ5GFfczplTL+Pomm8WlBFgnsH1g/b7zgggum1ayVZAwMZuueAMLkPhLKCmRU9t+Czz71pdw3YchKfJMyZt4h1ipYL+Mwo4eDrjLVSf19lY/YWejqnfmOMzaa9LvtsjkPtkCYVwAAMVsHQpRHzM0wXv/b50Zm3gGRV9Jm9an2KgxdXIt/HJx8ClXCYude2TtBX0Ukb47J8lbI/lb+uehWK+shGoXBNOGk3SnxMu+4Tmhla4tXbH0wZ74G4zFlz0h+NZ0pkKjC1BgFGacWEZhMBeV+R6mV2uQtLHDujuDOm1ZDOwr4hxDPWugI8UJV8Bz0G0aAQoaUuPGZlhPQJUkkLYZfVImjydvFPId55xKbhoR226pTGt3lXJVWdxba0dn0KssjKlZUkIyHI3QVp0QXc0T43VQ0S9ekZ6GmoXhWDUWcYP6kKKDvpNhaIRSKLfQXhrT/tN2VeXZxAUmIi4lQHo0LFBKuei0BMgFWFLU5VxvPL8/QyT4fx2Y/jH1AHFMC/RcZXEvQ+yCnr+AJDAvAwv3C0H2lO2DOUAIRglJ9O4PAlb97t8fEdA3bLGDZsSsBKPxmlAJsyL8s24V8aIPA74nTX0tybXogedIBnpqwRSuk+DHGjIhiHAGaofisGoQqOrMcnCwEdxTQFTYschOT1/ujxULdeIEfiE35bOgDicW1b5CCMwl8uGeQ7AZyfvXyFfVgaC1TshkuR1dSLpLMLFH7zzUfUSODEYHTqGrbEhxs/Q/L3dUobSgQ5D9i7eCGPzql07ra3dPvMUgPcMbFn8297oA/f4M6X4QwzDEPEyHOzkKC0vMLdkjr4DXmUbwBQxQzAk29bQHMrsxFEDbv6stKWWaisXpSVhcfOT67DOKc9qEIpL8jrwfDiBTZJFZGyJC40uddkKLP+0+M6q+uXA6ZEgfbQMTB/88DEYAr5EnudTrIEwRtEh9dbazwikbp0m0OuUa+qx+U5gyQBeh93hBFXyHoEaM6qNZfzZSO+LkY1jsVauzNru1qiT+BA+NACSF0PXBxO0rMBE5o+MAA7Mg5C2BXhJ2McHw6oklbz0TXlr6M4fhg8dt+NdRR8bgYy2fUg+Z5o5vq0VjQDbtHBoBLbx0O8dZAsvYDP6cChv5euxLHpbjifSJi6NBeHLM0j6XTTV/Y5gralbBSHcN7nPdZ7QJOjdPLOxYS9Kar2Tyzr7TXu8Wut/XNIdft7/2DIGc0lZPYwcZ0HkL6x+vPMomQs0GfF0flgkpyjhwG3EgIg2VbxTPYRKV9z1vhnUZVUnrziHcbvy4xhiSDJBTtu21KL4j7lj35FDa3IZT8UfBjeJd58zZcsmM8LCdFCMS1S2aeEPpxuwEKL83oKidi9TSXDRA5wICw7G1U9/fH4rl7zw7irfe+PvG8bdzvRznt3IOXnacdIBa/p6/J59NLzJtlqHxEKIE4NlW/bjagQ0DN7lMoVK4heMQBDoY/hGaIp4drnXqbzIqlT05K735hTXLfKBESgH9I4IKk94fKXnAhFrlDOlWohDpJcZAXkDpjACR17Ah95Bde6dxj2hyzwQDMsIFEOB5p1lsxqQOnN+vM8PzAyXXg2YN/HWTLiXhtbeXKmmCQFA/iu6xzxKEDgZ3HGSuVNxzazrE569tbgkZCxpECBZRqm0/anGoYiIxREkztiLbJ2RDvpJ7V1PFIn7U/SsTtoorGkm6HXXPhUdncqiHhIjkG7BNvmq85oageSEt+UfEKug/YnV3PbzzggE+P7cuPwTAwDI2yW2e5oO8xEbl3MsMH+j/Fv39NbbIC/Y71tEX1c3dZdjhG8yT2+kQZOi92KEg91Lv9r9NhVbDLBhUGmikpbuA/w2DeSU9oWK7Uthdqx6Va6FzvBug5D/Seg9KtNjcqxA9Z1EvIKYssedSuuWRcGHGpAuk/PQibejGsnuwLnGRCh60F5MkZ8ajyCXyNRF/JZJZacVzrE/gpW5LsPpG5bZ7Eukh5EOPQV02OT8soIxHbExkmHO27JK0U+dRq4CUWFpb/s3yzfbsi0d1OeqRrgidsKoy0w4fWbHaW9j/Lj8Nj2CwN7iS+XW1sV5Ydj5Pvq1D++f3uK5Hx3y0PQeJ2y/hCTlFrqc472jDLMcKPG1W+h6Xp7CTCfrdNNCfhq+YgQC0YO8cXCmRmANisP6E4B5VrjqGhSuPQ7F6wZzG6RohZezpfbEtqi+9FVGx4YRH1OZxFff2M6/SsBiUtFmY+FJHxWNgHss1s2dJ7BAckbav/bd6q3jBuor29St3Z+h/Hkr+24O0nnb3e/ihmUwArZgh5tsf4wMi03wCNq+H3ZjBA1CAATM0qNRMPHLAxlJPhDI8fzR4646zrlmff9h1ydU6EqwVdPOvfOVSF66w+gpomJLcFdkokeXgTRI+sICvuWqgkuqnsQtdjZ1WorKmo2zEGfHaW3NVo4J5ulUZGqt3Z7AaLF/zk09lYeSyTzwilsL2dZ4KhoANpBplW2biDIh0sahcR1R7jGWEXAG4Yp5T1lsL2LsLcsZXnCbbsGpmeE3Hpm2gSD7NB+m756TPMsIqPV9tNRZPb64L9999/QAXrOPWEhmHAlSfRUFJLlwxCCaaU3tNtFGYGbY1IEizRl3eNNmJocLH1zetug9PBeRAt8R6fbe9J1OTIGyOLWHf/6YCvMHEyKIKwVcgqggycJY33k71KjhGN7omAkwM0DWQalj8+OJ3daa9wwmDSQ9+fItOsNmRpvSWhsYgYUz/byAdSjU2hjkrqESOrEN22P8bCiguV4IuyLIt7+Vbb/SusjHDpgxGU/Gd2vJmEblUtbMb6KheMUoarl4nyukgr+T+/AteK0C+WzMqF0vuPvraQhV/nA5p+odV8oF9M7a4nUn94oRQAESYzpaW0aghLSTtJXn1AhkzDNZCN0VxepsXpanDshO3gFjFpJhs8p6IezXXW570K8c8E44quSb0fxozDAVGQOMnG36de20NWQgvDV+9sX16/33+YdppqKm4aGb2Vo7usDL8UPv5bkIMWy1nogWyKNoBAAU6KKTVxpXMAI2d1VZpsCBKL5vGQDGsnLj5VOeH8mK75OMEViTE8/x7LyAGTLPpXg3Tw5PrzwYUfG6HjTadh0fjcA0AEbDlkGS5dva/WUwRQOKdGszRotLQcOTZN+Y3opUuJoaC6kM6J3P7y60eemc2rNO0bZB+iEfovZZwqfztrjy/Pxxj3cybgvtLf1OQVkB74IdeGxyXvFfBEaMw7s480KEkkAEQS/hay0e1pm7HZRU1UvlYACOGQdjxeWl/i5kEYJhfbkZNXIY2SoyILpH9MkarM94aPuV9Q+JY/MwRtVC8cM7rk1Ev1g03luTN9Pu+mkXhu03lGWQcUzqSIHKRp4xM3c+BOzDtVKxPIFubzIAPmubLr7fG/D3jl+r4q/W3ME5pNnG1X+XzHZb6Xjd5cJFd/2u7zVvfo+R91eRNgYxCJmMJwPt8eEw5QlkCE3JUM9GbRhVEMx9rt60SYouCVTI0EniBdh4ejZAxRWNAFu2k24Lk6NgiBypEyPwYXikUItlgpLENsH2+JuPpU+NQCbLE5qLxME7o4oRWGHjcQ06K4z3cc/rYdd6ervQ+s7LVzKz+g76c5b/tQ+tNeFpXoNCIn/0HK4rIix6dz/tM9Kck/jix7wSpJGGIlpHknSJarsmokPRY4jbuhWfQWgWbtq8os7FOzQCjq9RvkF5Vg1DJP+OY8Y6Q/xCtqB4eqs1lJis2VBJHNmcjoIJO3lUVuW1NRj3ZoE7JZ/0U00gKGSU4SnNJ0YA+WCCe8f1NyQ7vfQaV3MtJXkTH2OheD8MTVkLhGw5NgbsWYS/eB7nKjdXULB+P2+F/+s0P1Ow7utc6q8jEL8ZMH/K5Qmk1UXeHz4IjgabyByMAOPFlMOJQsvEip20v/XTylXcgVM2AqgIKrtolLxdtGWVBkHlywAk3514ym/b7gqtEZrMAyoPCwRQyZiiSRSP+vSQhbUd+xjLZryv3VAVw5R5JMxAs7JIYsaTO9RCUGDPJqMRIGNy/ni15u8gspkqL+/d8bG2jEh21qOP1v6OJuvbW+PLbu/n3752+LAJ9YJGMH8pKu/troaNZhO5EYtp8q7oed1soojKiD+ZgavfXnfWQDcf/C8bX1Ti7hi6i8/QFyK5g5ekO88S5Z47uD4Nuz46saP/5Fu4wFvRGtVlionGFGFRShnq4dUCzXXgPazm3a0+yBtaVYHJ+xtGAFkWjYD8SP311zmRG2OJzYieAF6H3Xpbn5R0TFtrr78GJV+ELW3cU4CnktWb5jHeXoRLNvmnt8c+gXlhmniyeOURCoCBYkVDBTXJqfL8xl7zgmzWAHAiNnOIe2IEWosHxPaXAILr/s2dMmx75zeMwJZvMa61tnX1vymv6/LZ7gdG4C5cY4c2mPySRiAQynlum0laiYTv4l0xAsoAkLiyF9DqRkAu+RKaKxs7wIZnQMT4fE0vgngK08EsOHAxfZg6kwyZtZ9d1Vr75Reyjda6vdPk+vEDz701f/3D++/9RbT7eRXo4H0EZ8N6HQIenU522rC20d4uVWnsL9nev2K3Z0ge2IOFz5eCEB3M34mRfNpO8+ATPQSHPCRsP+crecwJZl3fAq3iNxdkHVYZe84iadQtiOCKjn3+c7iDZjt4wCxIp0l3SAwqznsMy4U16WEXVW/x4zGUyT4u88ztGH2h0bDAJmNDvGq6oqOuvrdh5jHa/QXX5rfWwjZqdk/QVPJY/3Hp0fkuYSlcvMDOlGUA5vVaOoicIyhax9bkBNIH3A6UA90pVC+eEL7+3o19RNZ6ek+4z3FtBkLtC2BEgJRRWSJPv7z00URHH/RxiUdr9WUGW65gBEqeW7GXU1LMALzjUcXPb3Zbvo+GPbENzH/dlQuBfjHOFvrbwsdj/pVXafv4ejmb5xfxmVfNNqSlARD/8dIqzEUW+iDLW8n8CFtaY6XMh2l6iy9BeqO1wJfH1hNot2qdCm6BBboDqMNfzGArQOIeafGHRsAUXU15SODdt3aSE8TjaColsmNEaNKxgkiEIBDKmsn9RSPQLZo8pfuJJ2PDgamXtjrzAnzcmh9fNgI+StRpjo+03RIjMJdNOlkeqeCYoy4e7s99snbDh6X/PTBW0Y6LCLtcUyQ2WnNXW7xMHqe2xq1opwHApaHgQZjfr3kh3TSc7zK//k3yH95Y9gWHe7liK/Nj9IB13VilyY6c0Qxcbl5xZciztAyD5d+uYPmjPJDNDfPqAF7XaN+IqbaqEhUGL7xZM9vKOctbl5V8FjC7C8ctpVQvhhMXh4VtoeSlHMqBWx4HynvF9+RSQptv+26q4j1H4mzcLSNwLcsp26uuNb6jlstJ+KvdcAXDqTTrmDL9WVH3lc8ZH1zGESGgVxDUKswlaiftRMqul6e9MB6Gb9IXtjta0WS30qu1cB3EuOJer6gLjX1wfT6f587O+dJ4FpjjwI2J62prqOOv+6Dx+guWSKD2++6g6RF46uMHy2UegRdsNQYNB/CB0OiVF6wrs388Xg6y70Mu1HR2vu0LRmAbRotbFg6NgMv71Aiwl21MDjKxt0bgMgDh0jcmV6WXK0Zgn8W9cjC3UoZCYa0YjADsfnmPCPAwmGI+lhjK0qWiJP/8HV7WkjFNL0m7Aj0yg+OCzJ3WDF3Cd9dGaATCNlFhdGbAZXy7qvKCA3tLNwbX+2Jh9MHL/A6rOgNo9NAd5hxBh7+EMTx3V8Y0qjwvIPZ8Y0j12oHCC2NregHzxY1Scrz8uRGwvN+oiRuBomHTL1+KcRjsqFQvwsRVApT+HxLPkN80PPgRooyffQlnyjDSjAa+rLMsfeF2vEtt0dFfwaJ4Ougp4is4JCio9hh3R11LAbSuT8DDgJ8/Pk62qQeRPpBzCm6rI+iXl41jfLFuKDPRdRV9M79EJuuSuRWjtRcdrO/wMl6VvJrdbppo97zC5a3lCdhnosONUTNXTFwJGVq/FPx7ier+wPzaIdT7FY/lxLMN1A0CwVnIxrKzei94KZsdSPLlT98HLPGtGzyLh3odIEsBDGQkA0YrJGbtwOG62SovBdBHH9HdL7lIQqiqrNuVgk0/ZHqTbis0ZNRwz/RnIpYnniWadsY+sMlle2AVqkC+jI9Mp+axue99BGUwn2ElY4a5Bm6ZzcesvpkOZ97Jrp6uLBIlng4a89VH3ayOzPV9Uz+7vGUukXPLY+7sQmurIUwzxysmCkGtrfP4Q9SxU24PyHaHSjdeAIQnL4UH/NJFidtZDf/KCDwJlaWqaQC2ioCFJ5ZJhIpHVqjOHc6MAKvJE1y+L8TunCJLK9oFgVAwAooXTWeIeXNHTuYFLAOQGIFKQ++MQABjOyOQeAHs2aLFV8vnSDg/sJNnpluj8Q6/y2VetKIbibuAEPGPdTPoxhNYBVA6pZgSL+BoNcXSUUsPkd8ruJQ7Zub3ZalzXbfRElVvJ0ugNJ8e0BNqLKApMvjXMoLNtyfNM2N4urtnDiTnBseJL18+vpp6MboeV7GXf4eGIDAUzMJs87kkAO9Cwn56UybTQ33STADdgDj14Wx53oKBhHYpJrxhmAWDbmcbhBOzRF5q8BrUhwCVv4Y226Zp6xnG9OZFNys0WmvtD2yYg0qsF9P4vst6eqYfF4srjmCXX/oeAvlCPbwXcyuCsY5Wi2t3BTrlnpryOlpsTzFw0P2Wgfru4/4GRTWM8ONMuUt6SQjGZ8Pj0VLDAY4NWaP2CfNJIe5S2z30bnqLSowuQ0A+6lnyYj6x8+tnsMz/1961LDiuq0DI5P//uK27iCVBUSCcnrO6w2KmIyOE9aBAL5ftk0S1BmyW8XkSeS2x2eEv4YHPaeqHlkN0+YFyy7qEOhixf7Ecg9WHmVofuKVbhmGY31Y/OIa2m7joxqP+scciFqNdmWd9bH+aKg+RdXbB6Wj4wzN7DfXrfkpXrfH3HYK59CGiL3FrBAs5MqPOq4SBQNqVu/YozZ9YoKcgcCr5a3kFPQWBJ/K24C5jkm/nr5YRvtPtNyDAEqppCKtA90AW8a6/rc4AAuQzo9+svXwDAo/Pi7AIBcotgpCYkLxvwu2bGkHgglaHvnAAgYBbKgBsvq6OPZYGN2oezLq0bwcKhfnIO69GfabMd9i5QUM65f/fwYDed07r2iu/2VSUG/Z5w6fVNzkhV+73Jx5oSKpQhPbppjUNbElYHba1YeaxpyAcZa4yijPlfuXxE/UmbxX6HgvaeimbRghpxA1yVxcguBRTTRWVbU70se0y56LD9keWPfsgDZQ7pzisGlS3BATG5LG7TvCsROLCLscXdv9kii8jVIb5d7a5wyUbZ3e5Ssq4BCIxyLN22TA9hijaAdu8BATW5ZtGnv9Ak+4ubZJ2GddtB4f4j9RsvfDowVZo/nmq/2lf7bzRbbPt+AgL2xPJjX0f16eexyVyqbwl7PUneiyeeRhBd98TMWsEM+LA+tEAAAmiSURBVMOOEGh0T5B8YGdY/N0RTgDA6XRM7NMT7/S/AgFXLgfQqEtDnOUrQ/QT4elYJuyQRo0tvOdfjbRIHS4P8vK/yzwkrfROMhBAABCJIEAH7EGf26K1TkayqL4LAgceppvdE59lv7AvNEFA5HOc5AaACAI7A81PzzNOALD6SIwEiMPqhJ0+JmPHh6p30q7L/3Zn2ZJdVAsQXiIvkXdpP2x+Y6j9YnU2MKIX8OEkIGCzLd6kA9HkBASI3HLraqss5L9qsHEvVxj7YdMSPYMel2uXMz9X8cjXKcIMjJ3EACpLw0LAy1nb5w56PXmnjqAh3qjZdkr64lkniDDY66P1wQVhEdiXHiPsHKRGDQKhT7G2KIjd188ZoRi9F2cTcnqhozTWtc2pzR0+CviIhKhUleenft5FQGS4/0TJbtjAXwy4y79jHD7QD12XgPWilXfK3qz79lHVjTRLaIwWBvz2havwDjAMxr5MKiduV+loWdKP9MRAtKOIeVr128JJendL5Rik7CYgtLw7FpEkUYoDgRdIY+/zoD5mSG5D7spzZ3SsljAJDnm7J6Xhwakpr9mGFXL8IXL+EBcTd8MV20fXo3lACcZz/LHTTu9EpnxzgnLp9lFUJxidz69BDLh7/nObXOyf+1e60SnU9UfPfS4pscQBBHCsHbzwlXcCsJ15IRGXFeu2ntpoQjb2qCwQ3BGBvduCCEbgli2DZLC8gzFy+1sNLgwb0JE+UZuR8FLFyO4MkbYj9CvPleJt9wXBqxUxDWrlEBDIGmiFoEUbPqn/kNe5dISKvlvOUNCtMKbcVKFehFTxzNsy0zWSTO6hYLqL5o6m3KO/cDlc6CJfLt4PyUGgYTP9benYT39CUzi15xktVsYNAN40mjvKDvW1Xolusc0igf0a/g+jpEKnpjjV6KNGn3en79GI1SW9qD5/DQQw11MQ+A1VIOD4nsj8VpnMED5oceT/LQiIyH8KAj6uJ6T5z0cgAExU527EdXi+bn782yCQzTPb6YoJAN2dT43n1zjrVtEJBDI1VPwZRcVMD0Ag6DSdpAQECh1dAEFB4ACYDgQgelfMC/LRETg5JLf4t+j8SJn1DiGk0LvS54EyCEf47MpEpM37u7MB3lMb8w/K3DNcNVVoQy4u+3YctAfQ3Slor856M/KRhAUALEwZ0B8StbKP+oQ2fVpJVqfs3ZMyLQiEYof4u5VwMGX6wKDMlMjyr/UANqWQFOPkQojvng3pT8ngR1JQlklUfADtEE70Yp6MrJOY6O308HVPv5nk/JshQ/ZmFUWXf3jxnvjiva5dO7zMz2yOLYOAwNqhZeUP95/PYGmIDPYhMYE1YeM8jft3qDBf2LthgR/ddbZn6rzcv3E2YEvNLALrNEgPQKBDX3v38hAEknJPIo76ZW7zCUyldtKxmh+BwIG307wpj7UWpJy2mg8b3i4Kfy0yqfDj3fe1yHM5zOEace68XSV8piBVzqwPToej9HsUFoStxc9s7qIrzJLTqpDIsErNTltXi8bH6ijsVuGTfMpiNv52/m6xb781VDbgDxG6gIwKWPEaKwKvpraqpJRUigOBdBsf8Y5VkrCZKfZwgD/xUl05h95s+TKZnSgg5bECmKd78MCrzVJxFPapYyAylsxTEyFhJ9Q/6x7hBU8jLtOLnfZlfFX5iQXLjE5LLyzXRAEujY21Q7mtflfpZcq9f8+poIrCriDb7sch9xHeOUgec866S5yLrN067dVaRLdppq+461LU24Vr/37vsE59qDRBoEnrTp+xY5SvQCCh/ToZMLE7hMyhiVPYnBxm43fkEytbLqSSrCdSkc88ts1g7uYfmPakjCmX9qI6Kd3yXtVJtg8egKjcdniwnNkId+G3kr+lCQINHRgNyNc5V9IpW0XcTZutBRpTdvi+ATNMGQgAI/aPo5eX7P5yP70QVZVRGMTt4yYffRpzi/ksBLfjRr3WrqDL5ot0zXpSrC8tHJtpX4tLC8PuLnuAsup38yNB9oQz2Df3cbAhbzWXzo31QlCLzHHEJIBqfyovzX54kLAE40q+QjUNHXaebJAFz6r6IIpVQv3PmZo4BjGKYvr8BBun9hOAroMAZXhmZU++LjnPkRXA6m+2/wEE1mCr9PrCANts4QBSQ0wn0mt7tkaQTWudTmZyiWNyjIAMCPjVzELnDkAZ9nmyNtWfHG6yjwht3OR3kolETIs+XQYC9yaHy55DGhsAhnAQAGO0tspYJ1okO0q8n1fXlxunXp3OUBbNSxpgiOzvBsx/7ghIdF9DfU3D6T7gccc0yV75XR/784uDetAiSo3W0Y07E2WdizoG5Y8imdcmwj+IMvnjQI7fIB5C10dSfS7Bj8Rs1nkrIfO+M3ngrrXOPRCBqYFwDPBisx8UALDYXlWlPKMFAD+QkDg4HVmBrFEj4Lh+JlFXDKmiDHr48RDdavrDOEWa87TkisT3hfmPalwiw8X61TCvP8dxbDB3CJlE9WN5+6jDPlltx6eGfgl6KT6EvqX78fwy9X4HzM9syDbyLB47kotAjTKu7Pn4j4zbqXiLvj6VmV2+hneWBNYfx/07EPjCEAQxsxarsDMrinv3Z10fggArQ0Rs3a0mGfA4O1gXdCYdjHkSHQ+8nLeHiAmjAE2mgpYXObs71N1vMGGIAQFCHdkVj7tuAgxghyqjagcy1kf5wZZDOZ3F6opW07GoqnHiO5WbgMCSkURzEOyrQlSqAALDTwXhEp3DnIyWXc3mR01x6zGA4yWyDTMZo9fOy5srizIkDMVbWZMQbcY8/f++ZsdzPFPRaMC9EUMQAN7U+2QGCb0XW2CHinA3KFYkspOAg/CZB34ucafHNRLvI3gCEMByXTudPC/bnjOqS+okxNSoFskXOplNhKkgq2/wtpjPk3i87X5wHYBLjt2jtLHuuolORHYoP5z2JYLUlsuESPS/3Dv8AgTAsanBqUEOnEYwhsGDThrC4nwAAQEQwGneDARONETyK0E8ORBwQ8NEkmtsbEFpFPCkTzMQKJtpmCsmXPjzpszeiH2mMDL1WJiWEgvHHndcW9sJnp5kBrt2ymA+PGPmodkiuR4VeHFPgFah9iMqRalJV2OqXeSB62QM6NmivUroOmmhkD8F7QrYWMgdQTnqfxEwtN465tFCx64zYl3brK6F6HrTcQsnGltkYu3IHCDIt0Agu+aEWEv3hbQKBGz+WLn8/r9pemE60vH88eAo0yP2aSm5iNyWezt+QVvT7wfoBXp/8rP5g2Gi5gMFm/ASmDuLeYZI/bGuf/SP/tE/+kf/F/Q/EvkTRKq0YJIAAAAASUVORK5CYII=\"\n          width={386}\n          height={216}\n          style={{\n            clipPath: \"url(#weaviate_svg__clippath-5)\",\n          }}\n          transform=\"matrix(.48 0 0 .48 168.69 142.13)\"\n        />\n      </g>\n      <path\n        d=\"M168.97 79.64v102.84V79.65m-25.25-15.51c-.38.18-.75.38-1.12.6l-22.68 13.18-47.27 27.48c-.37.22-.74.45-1.1.69l72.16-41.94\"\n        style={{\n          fill: \"url(#weaviate_svg__linear-gradient-2)\",\n        }}\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAADOCAYAAAAZgqOsAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAKklEQVRIie3IoQEAIAwDsML/PxeDYhqXyKwkadtcOw8hhBBCCCGEEN9jOHrBBZZfzgSUAAAAAElFTkSuQmCC\"\n        width={3}\n        height={205}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-6)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 59.19 225.54)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAYAAAA1+Nx+AAAACXBIWXMAABcRAAAXEQHKJvM/AAAARElEQVQ4jWPkLSz9z0Aj8Lm/m5GFgYFm5jMwMDAwsDAw0tR8BibaGs/AwMLASNsgoocPaGzB/9FURADQPBUN/SCiOQAAbmUJK68pfN0AAAAASUVORK5CYII=\"\n        width={23}\n        height={15}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-7)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 76.95 263.94)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAAFoCAYAAACsZeyZAAAACXBIWXMAABcRAAAXEQHKJvM/AAAgAElEQVR4nO1dW5bkqq5U7tXzn8Sdzp1TnY9yumzMQy9A4Iif7ixEIAMCSTb2h4jo//6ffggAgFD4b7YCAADk8Y+I6DNbCwAAHsDOCQBBAeMEgKCAcQJAUCDmBICgwM4JAEEB4wSAoIBxAkBQIOYEgKDAzgkAQQHjBICggHECQFDAOAEgKGCcABAUME4ACAoYJwAEBYwTAIICDyEAQFBg5wSAoIBxAkBQwDgBICgQcwJAUGDnBICggHECQFDAOAEgKGCcABAUSAgBQFBg5wSAoIBxAkBQwDgBICgQcwJAUGDnBICg+I8IOycARMS5c34IRgoAkfAbc36t8ufPQH/m6AMAwIF7zHnZPrGTAsBc/Mv+NbOTHj8BABiEekIo2T6xmwLAOPASQjBSABiOx0MI1YRQUojkEQD0Qz7mJKaRHgIwUgDwR9E4v2gmhHAbBgC64DchxAwguXHppyULAEATZ8z5NdAfxraHuBQA+uPx4Pvn47+TNmUBAHigeCoFRgoAc9FOCHm7u4cA3F0AqIN92Pq6i7YMFRleALCjuXPm0CN5hGd4AeAO02FrxKUA0A8uh61hpADgj1+31sm9xL1SAPDDPSHkZBTI8AKAHc3D1pmfbCDDCwB6DDts3SMuxTO8wM44d85R7iXiUgDgQXbYOhHQGMRX9iOoDCMF3ojmYWsi3wcIHrIwUgDIgvWEUC+juMl6G+khACMFVkWXw9ZN2VpVQZanKZpJHgHAKgh12Poh28HlxTO8wCp4uLURHiAYYaRCWgAYjnJCSPEAgXeGF0YKvBm8hBBzN0WGFwD8IDrPGS4uRYYX2Biiz85HeoAga6SMyniGF1gFN+Nc0b1EhhfYFTe3dmX3EskjYDc8DltnflZhdS+R4QWAPNwOW2uM4ofu9twiHpHhbeoEIwUGoX7YmqjrziWa2IMyvGxeZHiBzmjfShngXk41UmedYKSAF/j3OQe4l6Ks6CAX3Gqk7LoAkOAf0d/7MSUT8CcxCkHVMO5lxN0dAL7Q30oRPC30qHttJ4B7CSMFIiLr1k4x0kbDI9zLiC448F783ec0TkDJKZZSO5F2rmguOPA+/O2cju6ldjddxkiddYKRAjnkn611MgqrkZ7tBHAvo7ngwP6oJ4QmG+mjnQDuZcTdHdgTvIRQVCN10AkZXiAqqg8haNxLZHjb+rB0gpG+Hs3D1t/JcJNxmoCRM7w7PGQBrI3m43vVybBxhncnFxxYE+xna5uTYdMM704uOLAWft1agXvZnAxRdy6jexnZBUdcuifOmPOMLQUjzHJ5k8Ifuht4sw2FkVbj5IxO1+IVXXAY6Z4of5+zk5FqJ47bazkbAiu74DDSvfD8HMPxb3QjJYIL3iQ9hGGka4L/fU5vIz0ELBOn10uu2fUM+lTbQYYXIM33Ob2MNBFYxUiLdZX6NFVAhve1EL3xXbK6X4ua/MaJMyqZxSz+k0OGFzBA9K2UL6JNnFEuuKhuKosMLyDE7T7nDhNnhAsurnuVRYYXYOJ+ZGx3I2VURoaXkDwKgmzMqb3x/4gtvVf3Q1htpA2dmnUZhawY+0qDDC9QQP3I2IAsKKO4KBzRSLWTGRleIIXrl62JxiVYtBNnFSMl2iO8APSY82XrhsBOGV7LRN4pBwDIIbrPSXTEVAETLJRMZFHcd22H2SgrtnSK3cLmAGCkXSH6snVWtnOCRdjEMgkWdt0rTbQcADK8XXF7qfQqRsppZufYbZUcAIzUhudLpZUJllN2gJEKm9k2doueA0CG14ZnQsgwcTSxW1PUcXXf3UiJ2tc2OgeAuFSPckIoeIKFkv+K9IuaYDmERyWPRuQAYKR6tN++hwRL2qSwcE7sFu0YHYxUDv7b95BgabeBBQgZXkfojowhdpuSYBHXvdIssgDBSP9wfnZe0ilnnKfoUW3sNmoiS69tpQTLD8nGDBneuSi/fa8CyQ7YrMssHJVgmXltvY1UkgPI1SuKBri2HfH3EAKReOV6yA6YyMJm1K4TFiBmXWYhjFSOe8zpvSoHj284dbEAMesyC5Hh5SN/nzNJHjzKKxjpOv0kRSx4X1vABejnx3BdwkaR4e0Ht8PWj7rHvz0H3JI8GHX/tlhPKCDaEZXX1t1LKAiM8BJWhOiwNZF+wHuvytqBmrEAjUqwjHpPUbGeUGBEmLISxPc5R9zjbNatFFqNlCjutbHrpbITvYSiKJJHTagOWxPRkHuczboVHssgjVyAWHFzgafZJynNxgvQjkYq3zmPf9+QPBj5jtnREzC6B5QrYjWzkZGeL5VG8qBCMyB2U03AQ/gtRipqZoMM798TQkgetGkGxW4rLUBvWqRH4/l9TiQP2jSDMrxbLEAbLtKjUEwIaZMH2qTPyMQIJRNQVPfapnKEpX209AK08SLdG3NeKh2kc6M/ZCGq1xC29hHRGnHpTkY656XSwToXE5CHlZJHqgRbMCPtfth6aOcewpiAFZ5D+C19JGrGsY88IH4I4YtbzBWlcxNhZC/bDaGP2g3NMlLVzknUKTPXuXPZda80yF62adBHXWD6sjXRezJz6CMGDfrIFS5ftiZ6T2IEfcSgQYLNBY+Y8xZLClv9SbjoSl7h+RZVY98CT7ZNBs8q9zjTJlbqIyJZXuJa9w191MLzCaHj391XLqzuDBr0UZvG0EctFBNCMzuX1Yyje7HSrQFVHx3C6KMKzyE8o49KaH+O4fh3ZOeKmgnQuY/JEK2PEmH0UbuhCEbK/xzD5f9dOrcgsFrn3tpdpI/Yda806KM2jdFIRQ8hZANu5lWzAu4MFyvIL/BI30J3xS3pI0xmXFS4/7BOwIbAzJhrxxelze6j25etm40c/75h5ZqxuotEN5mA2TaZSuzeR88vWzNafcvK9WhzkHGJRIP2NdFayaOIfXRza7FysVUYltDw4BF5H4nwzOTRDCNlNTOoj36N84cZE14USv+rie20MeGjTWFMWGzTIyascKkG0bGv1XVJ19dfnNetNNJHs17jVCjUjpPJSL91L5VVXxmbnRV9DFq0XawhsEX8rVBitRzA7HFqPyEkVGikkSYqIHHDoZnk2nfRYfM8Cf8JIaZCq63ulkETiQYc/C9GxoQ5HZDhzePxfc7ZChGtN2giUe+khLGvieYkbnLtj9Yh+mJa/T7nDIVuNIsNmicPu5nEolfLAXjrMMNIWc0oxinv1k5UqEi10KCpeAoCb8kBeOlgWSiGLKaJcK3eeZ8zikJNmsUGTSTawXNZLQfQXYfgi+m1Lu9WClb3Z71SIYNrpaQE0ZwcQDcdFOM0cjG9/izeSuESXf/brJvhCfdwOoPLMmhVHZg8P616BR7rqf3ZGV7X8RboMGsxVb99L6zr1Nm9zIkVRTfaAb243HIAgzwVkajzeOefrZUgwMR526B59TWR3VBD5ACi5Q8Y481p5nZkzLIDRpg4bxm0VHhW7O7F4+YBLTTenGb+dk6nuMSD54wRtHFJQadeMSBLBwbPrNidyMdIw+QABhspe7wLXKVmXL/PmePRcM3obIt7qebCDvispxK4i7nroDQuaUNpUfnZ2p2SB4JCi3sp0qEivKWRnn9o1yuKWpNHnRcKbyNtv31vt+QBu7DfisjlseQAwhlp9g+CuuzCiuighcJr3rBe8GWNAR/6eMclk2KCKlcmntTGkldaKdxjye8fJDqk1QYaaTGOXyBU4n3ZOq03ewUsFRYEZu+A4rpXmsVzAF483cKUCDoUeGRftk4biWakDQEYqY3L20jPqhEW6Wih0mex73OKRDc3UqL5OQCrkT6qRlikIywUB/p8n7Nz54pEBxopiysRNszr6Ukfyw5Y4gqTuAmwUGS/z+mWqGlwsZIklqCfwaNN1OR4mjoUuLZ9gMDKw+SyjH+ziUFzOVdUP2zdUIgluql7udMOSIQwhcUzWIf6YWthq291L6+VtzTS8w/tekXRnebRIB0eh601ColEB1yYhcvbSDVc4Yw0+wdBXXahD49lkfbWwTKXs0fGtLFbSVTKo4oBKT8JZ8SAlBiFhksbA1Z5hFzZsRhopNZYktlMVdgrnmXpkAhnj4xNid2sPBRjx/Hi0bqXVZ7sHwR12YU+PMN2wIrwTG/u+ZWx2Uaq0SGlCmBcXjwW4/LimW2kwma6uJszFopnttZJISRYyjwartcZaUFgtpGO1OHx4Htp0GbHblqeCLFbykNKnawxoAdPMyfA7CNWbqFzwkWd3xhkpNW3793iHY1LFmDnysZucC/VPBF2Li+eKSGY4Fqqz9a6TeyoRnr+QcmT/UN/HriXvjxTQjDGtciPjFkmdjQjzf5hDs9ZdZBxsXkaAhGMK1fE4oqQJ6kIq46MmSfkhgmWs6qX6+xlpAKu5sSOalzOLri3kbK4MsKsNyFc4ZqUUO7COdHZCZZrVQlP9lpKPzomWNImWEmfjomapg45noRLzJPoZHASXZJHze9zNtoUFDZEI+jQk6cgENUtfJ17WeHJ/BzCw/4+Z6NNQWFDNIIOPXgaAlsY1w7uZYUn81POk+hU4xF/n1MkuqORMrgixW5WHhFXJy8hlHFZeZLKNZ56zNmICXKiVZ6kMotHELtp4yQRD5PLEruxdOjJk3BZYzdPHqtxeX3R4Mul5kl0yvHwsrURYoLgq7snz0qru4ZHxeV0bRFelMblkb/ga/agLWBcXjwj4xuOThGMy9tIifoZl5Vn+vc5TZ0d3LhyRSyuCJ5KhSfzcx7PUdlybREejsnxiO9zPpnuCll9eRVPpVOi8Vi4esY3Gp7Lz3k8CZeFJ5qRnq/GjKKQ6dG8ADrkeDy5duXx5NqF5+8dQkEUSnk0XNGuxZMrKo8n1648Uq6Q3+cscc02Uk+u3Xg8uXblkXKF/j6nFw+Mi8/jybUrjydXjSf79r2SQpJUWJVrIo/1rQhePN+qu7yloQfPt+pb++j+OYZWewKFqqIReJSd+xhfwyDdqnrxGLjQR+N5zqoZnqxb21xgIhiXF0+0iWNY3aNNwEdV9FGb6/Kj/dn5WpsRjCtXyODC6s7nOavCuIo8Z1XHPso+hJCN89isDjxJZTFPQadSf31yPzTxbIlUyPW4NqVOXjzXqq48Bq5oPNeqXjzZw9Zq4/fiSSp787C4LLtwRQdus0vxMLjQR22uVLR62NpspEflKcZV4cn8FNVVi0blYXA1m4x6bQsvQKzvc0bbATM/x/BEnThWHgHXa3fACToVH3zPBcrNOK8jz4mjcoQH7d1i7OCxeopi/DiJ51us6SMxD1Mnj2srPyGU1lNuVV48D97EuKw8Kq4Iu3mFy9NTYRapeFhcDWFvnSLwyG+lGI30rOpspER+hjrdSI/KEWN1ZpFYOJJR9OBhcSU87MPWnsZ1q+pkpET+u6naSIm2j9VzRSzeF+6AYq5DUPUmBC/jyvIouW68s42UqItxee6AXrt7oxmRTivwsLic+ug8bM0JuGs6aGZOMWhWzJysfhF4dkqENbgyRSKeXGIsGs+12MLVKCKiwpethW2ohZv2LGi0KhqBZ6dEWIHLfLwwWoKtU5jCLSp/2VpIJFVIJBqVh8HVOxG2w3nbJ9Hxb1DjGmWk9ZhzUKDMFp1oXEUxrU7ORkoUx7jCGWlSOWIOIFfEe/vegNhCxOvFU+Dy4kmRjVmUI+wVG+c4Ix2S/lXowusYu0fKAeTmsuz7nNFWxM5ui0knjbcxwcPIVTurGjo06yUouW68wXZ3d5sgOueg7lZKR4WO/+q5nGMCr6RErqjIO9lIH1W9eIxcN95gxuWZA/j2kf6N79RHoag7YA8jbRZHNVIF19uM1IPLZJxfeCoUfQf0csEbzQgK+/A0qxpd5+hG6slleql0xLR82B0w0clj4WAW+Rspk6vKGyC+vfEGnMtanvvb9wKtGn9Ex79RdsCk8lQjZTTsGd9WqwWIb2+cAeeylKf7S6XDGulROWJ8yyxiCjBFA+yAyPDe0T4yFuzCkOFdJC4NEN8+eIPN5RYP/8iYooNyol48v2R/Ap+SDIfXyJPq4/1weqG4Xljp32+RladU/Cn9EI75Q7+JczDH2/tN9M3PMTwwISmxQtx0442QObTswkweRrFaeKnsdacEW/ZzDKw2vDrIkytA3HTjjZCU8DKuxuSAkdq4cjz8dwi1BBnCb4qbHryz451BxrWFkTK5qrwORtq8zymKmzIKlXTTxDvN+IbJk6Jn3PTgjRA3dRzv708vnpJoladU+VLU1E85Tl5x8ocK9zl3f4Cg0YxIJ7VoBC+hw3ibVPLiaVReZbzzXxnDoJl4RKIw0jLPUfmt4129lYJBs/GIRCPETdHGO6m85XhXuFj3Od3uTRYGTYJcwK3hSXUKd5A8qSzmqeh0hXs8e61aWExVuIyTB0+YOLnCdd7njLZqsHkdJhIRdg2M0+2nnOeo7DlO/9K/s4gFwk1R5dUsM/hEroPmmWBjFjEFmNVeNk4Wnupn56PGXLlqZ1XnwSfyXaU9V1avBFuuqMgbdJx2PPD/9/HcaIGyJut4reo0+ER9XCnPHbCHkTaLg43Tjovp37O1URMjjStp8iqtoEeipOTaqRMcyZhZea5cheJyodc4WZOO1GecPJOOXK6HWxs24Nas7gbht7rg0Z/hFYkGHacwh617ZcUazYh0UosGc+2I/MYt+jO8ItFg48RdTIcdtu6ZcmYWmYSHDr6S68Y720iJME4c3kr/su9zRj8kXWqCBcEEZMVfRDedOF324GX0N4vXYbX/sfJU8hAe+YyU8yqq5WHzOsW3uf593OdcKSbgGKmI18tLIOqW8WMWGYUrVR2NtEceQrSpBZ/Lz4SQpA0kWBhkX6JNjVTDhWRhsdpZ9eNx2FoovFLgTtQnMWYKWSbsGk0VtP2NZGGV99/tV7TYrcGTK/6UfhhjZfeHwZMJKUajr3vFctU2tLFcIVmoQqVfPPqE1Q8MnhS54vvOGS1223RFXMEFFxSZhMPnDybu7o/vc/aYON4JFkGRSXiokSq5brydJiSzyCT8GiNtVL4W1RNCWN3bol5GauS68cJIn7ydvLmeRspLCGF1b4tGSLCkvAP7ulCsFl7Nm+thpO0nhJhENYxMsNzakJB5JbOuArMSLCmNd18XuKwJl5J62SSfV58IubK4zB2PZNZXH/33OaO5hXDB26IBXfDc7sOitezCFR0s8PZU5J9jKBCFmThwwduiAV1wU8IlwBy80TjNm9tha9O8DtBBiN1ETTIFmNVgpE8a47z5c2sLnSLXiK9QtY3CBORc5zKxW4GnR+wWOU7OtmOZjwUdxP0yOb59xpzBYze44G3iXn3UaxerVrX0kWUXrvCYRAVc5YSQl5tCfdxCuOBt4l591MsFb6qg7SNvI2VU9khCtRNCCyRYpq+IESZgg7hXH43YTd2N9Kgb3Qsrfp+T24rmwiK9QT6t2Fo4evVRrzh5VB95xIRX9Ipvcwau7pOKDh7xre4+50bu5YNqdxdcpURC1ckDYhaZhFfyVP67/UFD9Cn+VPOoRT8tAYFKnyTLpiaiWH1kUiKh6dRHzCKT8EPUqU88x/t5K4VoqYDbIytWbSdqnMyo7JGU4GCH+8CnaKCdNJ8Qsgbc1gkoqLz6BIyelBCp491HRPNcXm8jPbgktPWEkDJwLymkgmDApQF3ClbixmHQboN//CFqUiLF0D4iYu+mTWj7yCFW1yaheAkhS+AedVUe6Do1VQjkSrUqvrqPlDpor0WWrbUM2kJGyig2CFeqRZiAOZ5C5df2kfFazqoNHvOtFHFxVCMlwgQUcDGLjMLPamfVCH1k0IET3z7eIVQCJ7asFde1E7Z7pekUEzzakRAK4ptqG4rBn5kD8OijK0pF2ZhwZg7AMJdr11L9PmeJxHVHhHsp5jGJRvVcdohvvebyIVg8MqbWwXphhbowUhJNQOQAuMKVapPnsunIWLfYcvf45uDqFQOKRKMaKdH08XdZpA1zuRxzCjq7W2zpHANqJo41vuG4l71iwFKTLX1q2CkHkG2z1oaDkUpi9fHf53xBhlckGvXadnAvBfoMy9IKxol9KyWE2+I8kYn6T2a2aFQjJdrDvWTqMywJxRgn8X3OEK+O9BokGrfjsEWjGSnR9B1nVA6gVNz12irjpH9vbYNYRnT8qzXSooBAhc2NlGjiOJmEK1UdF+nZ15Ybp/yHjITo9WaDXFFZibYOHPVGvWHv1ia3cPK1zUjUlIqziToGV7ONyUkoor9xenyfc/n0PlZ3Ew+n2ll1J/cyrRYgvi1+n9O0GMFIn1UdXfCw14YFSK1PrjgfcyaSav28jVSjRITMXFpt4KqMBUivT5cFSOAl1BNCBSOVQDpo3WJL5srFQoaLFfMJdcrBPVZn8Iy6tmybL45vzYetxVVn7xqdVvflw4Acz8E1Kg9RUWGqe6nlYlcr8Mi+Mraba9dJh6XDgEpDM4z0UfVFSajsO4QirBpiWGLLXY3UpESZZ5SXUK26UXxb8hKybu3bsmLculodzEbKqLzzAtSsGsELUwuXq1YPW78lKyYr1Oswyi3cdQFqqLCdkbIOW081UiVXmZhd5DfYCReMlMelrhYhVFIL/0F02Fql0A5uS+cEi4o2qpEeXDON9KwaIVQyCKu/z8luYze3JdqO422kKiXKDc0w0kfVCKGSQrh9n5OpEAuHsPR0xKMNRWdLd43mdTF00AySqD8zPOY3IlwFHPtXfV0VfTjqfUo/lIbK2Sg0NpHjOe9z9o4nbzRKI30SHf/OdO0CxOo3msvM2KJ/Kzy7x7f/KmUiIpU+UY2UycUlHpE8yFJF7d+N4tueRvpwa7cwUqKmTk1R7bVNSh5UaXY10oRrtyRUMeb08JvF89rhwjQrWfVatbFlh1g9TP969y2TqyoaNb419PXjsLUJ3hlIRWVkeOU86qqdMrwm0ah9rahcPGxtwktiglJRsZmoE8dqpEauOrFSdIO5zDpsbcLGMUGN5y2r+2uMNOEaMZfrXxkrDJpVIU1M4DH41pjAPbZk6iDN8HrHXOJ4q8AjxdvjW/6rMXffARlcb8rwlibg9PjWeQc0iXb2gOTvrcWgtUWtRlqoO9tITbRIQokb0b9UGoPWFrUMmiU77KVDhQfxrY2H04jpje9XIgxaRRRGyuJSV4s63kyuEn4TQp8niXUHnJH08UhKWI2rWwKIYaQsLJKE4ugQPgkl5LrpQJXD1tgBbTysRgpc4XUwCfN53h4qlQ9bH0RwWyqFTC5tQ0OM1KKDSZjPM91IjVx14jLYL5WeaaRn1WhGKuTSNhR+oTAJ83ne5s2JXyo9I5a8VtXyWCe2R2xhndg94xs3HRT6zI5vOd3VI7698ti/zxl1B2RwNUVn74Ce+kSNsQs8s3dlk/PhpE/x+5xyJr1C2YC7c9wkEh1opKxmdjTSAtdsIzXROs7l+/c51SzHv4tnxZbYNSx9tFMizCTM55kR36aoP/jOgNW4PHx5q3FVr39QfOsdy3XtE4sOAp6p8W1ipCoo49svzIetI6ScI+yAItHZ8e2LdkB1M536SEKbP2ytUOh1RsrgWiIJFUGHnvoUuCIsHC1a9Uul2dWiGimTS9+QQDRCEiqCDj30aXBFNlL+S6UNsaRrZnYx91IkGsG1i6BDTpAlzORaxEizCSHvQfvkfngF7gzhCMmNkqiFx9pHOybCUkjn8lR9DoHvT/n3OV8UE4TRp8A1RCd4KuP0SQSqbu2QC2twRTVSVjM79dFiiTCRaNBkIeshhAgJlmhGKmpmtz6KahSbJQtF9zk1sZvqGgfHBF1jt5Jwx/h2WB8NjrGH6SPk+sJbp74vlf4xLkbRdkCxsI4nmj7NYuyAbVFFH/V9qXQjVazlMetT4IpmFMsloSbGbjsmodiHrU3wNlJV5QJXNKPwSkKxhJlcs4xUwLVjEor34Psh4P0JOVFsVODq+Vk7j9jN20tYKr5VLhTR4tsUPz30yXCJjozN+I5mk2qAkVp44CXI60aLb6tVO46T6jznrE+bV2miGunBZaLdKb7d1UiNXDli80uloxlFNH1SrlWMlNXMjkaq4OplpH/3OTcziogu+La3mCwXs/jtk2o14zgVXyqtxYxPm7P0ceAKlxjzTkIVKg9JQnklWIRcOViN66Gfkqf8UukovvyEtHyTJpiX4JaEMlfm8bxtB9Tq437Y2pNnVFZMTRPVSA+upY10kA6camfVwfHt7T7n2wLusEZK1CW+jW6kxWYCjPcMb+5fTk5CMnLAPXz5noPvEW//kR1UnZJQFp4rvJNZmjkogdW4PqUfHfIZ+i9bEy2xKotEA3gJD6qorrM1vh2U4a1WDR4qub1UeksjZXLpGxLQRDXSg2vK+HsZqZGrTqyk+Xh82Zqo6Dp5uzw9eKInJR400Yw04ZpqpIq6kY3U/FLpGwouj5WH8j/5PIzKTV13jW8vFx49vr3CezH1yGfUiDV92/2wtQvPwbWl64z4VsWzQob3RqPo26GHrb24YKSahgQ0CxlpszjYXJYcGjnvc66yum9vpEwufUMCmqhGWuDazVM5d87VVvewSSgG1+uTUERDXN5V5nKpfx9ubTWQZ3YuS9egSSjzBLwqgSRUhezJ5e0BeczlGrwzvGn/6m+laFcuk3B/nogHycPFt53DFBWt5dqMGd5et2Hst1KiGqkDV9iYa8P4tuQBrWSkZ1WnPnH7Pmc4I3Xk2tZIhVy2hnQ8Kxnpo6qxT/yPjGljgJpwkPjW+8b/yARLj/j2il6unVcu4cqVg3cY8Cn9EHB1+z7nqB0Q8e2X7Es0h6eXa/fmDC8/IWQ1Uk1dgQ4rGynR2q5ztWrAMMVspJ11+KJ92FpB2qUukwdJqC/R8W80I1VylYn78ESI1bOHrXcyUlYzASdOWCNVcPW+5TB1HnXUofpla1abnTK8njwru7zhjNTAtbKRNos76NB8b+2QiT1odYeRUggvYRkjLXCNMtLne2s1CpmEHeoJuXYwUqJAuykyvMJCHsRHxoYaqbIPUdUAAAGxSURBVKauQIeVjZQooMuLDG+5UKGD+vucn+efxDxRjMLjWlKMTEK5vxVBM04MHknVxw+na5v6yUhhv/Duc3Ya/KV3rghhwCAeNW2A+PZBE8HbYNaVnUrpNLGXnsgNrqWvzctIzZX9eVYwUt2RsU4Te+pE9uTa1UgPLhhpjujyf6dEqPwJIS+FSlw/d1pJvRqiGMXq8a16nCo8JYwcsx5foxNfW1Lvdp9z6RXxRTGgqZmFrk1kLxtmeLPf51zaSBt1t5jIBa4trs26AAVMQmnnY/X7nKbrjDD4UY3UkyvatWEBUvHkLpt92FodXwQOuFNaC88VUSZOj2u7ghM3mTDx2lL8OPEQg+db3O+wdUrjZaRE9rgUq7sLDydu4nLpGxrDc6s6aB71P2yd0lwUmnaPafDqvrSRMriaTUa9Ni8jVXKViX9h/j6nBdNvBCMGdOVqdme0a/MyUiNXidjt+5wmmtlGaq3L5Nk5CSUSDWBcWR4FV08jdf8+p4nGubNVxh41UVPgyiGSe1m91g7GNWuBf1ynw7V1/T7nbB5TfBvsWiRcb3IvH1QRvLAePAAAxMH/AJXPPSmfPZMzAAAAAElFTkSuQmCC\"\n        width={230}\n        height={359}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-8)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 59.19 233.7)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAADuCAYAAACJfwFAAAAACXBIWXMAABcRAAAXEQHKJvM/AAACWElEQVR4nO3cwXECMRAF0cG1aTs65wU+EMQ7/O4IuhpJOysoXnd3v3/3uVGeu7uXtoA8d3e7n//djxbQFEALaAqgBTQF0AKa+QDP3d2nQWiXAmgBTS9DWkBTAC2gKYAW0MwHmL8UbQXc9TI0zXyADkEtoJkP0FNAC2gKoAU08wHm54DvU0BbQOa3wHyA+e8F5g/B+S0wH2D+MdgZoAU0BdACmvkz4Lm7ew8/Bua3QAG0gGb+EGwF3G2/C7QC7joDpimAFtDM3wrPr4D5AA1CWkDTIKQFNAXQApp+J6gFNAXQAprmAC2gmQ/Qy5AW0BRAC2gKoAU0BdACmvkA84NQL0NaQNN3g1pAUwAtoCmAFtA0CN01CE0zvwVaAXedAdMUQAto5gN0H6AFNPMBvpPg8CDQIKQFND0FtIBmPkD3AVpAUwAtoGkQ0gKangJaQNMZoAU0BdACmgJoAc18gAYhLaBpENICmgJoAc18gP5BQgto5gN8vxscHgTmV0ABtICmAFpA0yCkBTTzAb4XIg1Cu8wHmL8V7lJUC2jmt8D8CiiAFtAUQAto5p8CDUJaQFMALaDpDNACmvnH4PwKKIAW0BRAC2gKoAU0BdACmgJoAU0BtIBmPkD/JHXXjdA03QhpAc38GdBPZbWAZj5AP5XVApoCaAHN/CQ4Pwi1Be62t0Ar4G77DGgLaAHNfID+QEELaAqgBTQF0AKaAmgBzXyABiEtoJkPMP/d4PyFSFvg7u49vATmV8B8gA5BLaApgBbQFEALaAqgBTQF0AKarsS0gKYAWkAzH2CefySPM5yTcAaOAAAAAElFTkSuQmCC\"\n        width={63}\n        height={237}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-9)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 168.15 295.62)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASEAAADwCAYAAABPCNIlAAAACXBIWXMAABcRAAAXEQHKJvM/AAAIMElEQVR4nO3dXXKjOBgFUGUq657Nzb6m58EZxzYGJCS42D7nJV2NwLSrudHPB3yVUsrf/5Q/BSDgu5QigYCYv9InAHy271JK+UqfBfCxvkspxmNAjOEYECWEgCghBEQJISBKCAFRQgiIEkJAlBACoi73jilWBEL0hIAoIQRECSEgyg2sQJSeEBAlhIAoIQRECSEgSggBUUIIiPKgeyBKTwiIcgMrEKUnBEQJISDKxDQQpScERAkhIMrqGBClJwRECSEgSggBUUIIiFInBERdVsfSZwF8LMMxIEoIAVHeOwZEmZgGogzHgCghBERZogeizAkBUYZjQJQQAqKEEBBlTgiI+i6llH8tjwEhhmNAlBACooQQEGViGojSEwKi3DsGROkJAVHmhIAoPSEgSggBUUIIiPK2DSBKTwiIEkJAlGJFIEpPCIhSrAhE6QkBUUIIiBJCQNRldczyGBCiJwRECSEgSggBUeqEgCg9ISBKCAFRbmAFovSEgCghBEQJISBKCAFRQgiIEkJAlBACooQQEKVYEYhyAysQZTgGRHkXPRClJwRECSEgSggBUUIIiBJCQJRiRSBKsSIQZTgGRBmOAVF6QkCUOSEgSk8IiBJCQJQQAqKEEBDleUJAlJ4QECWEgKhLxbRCISBEsSIQZTgGRFkdA6L0hIAoIQREeZ4QEKUnBEQJISBKCAFRihWBKD0hIMrqGBClJwREmRMCovSEgCghBEQJISBKCAFRQgiIEkJAlGJFIEpPCIhSrAhE6QkBUUIIiBJCQJQQAqIuS/TW6IEQPSEgSggBUZd30SsUAkL0hIAoIQRECSEgSggBUUIIiFKsCETpCQFRQgiIujzUTLEiEKInBEQJISDK2zaAKA+6B6IMx4AowzEgSk8IiBJCQJQQAqKEEBAlhIAoq2NAlGJFIMpwDIj6qxQ9ISDn2hP6KsIION79G1j/CCLgWPdzQrpDwMG+n/7tTc/olqV8YLTl1bGHnpGOEjBa3RK9MAJ20lYnJIyAwZ7PCa25TZ4/s1NIAKv6K6ZvukN6RkCr68sPW95H/7Sp7hCwwXU49tUQIotNLe8DDabDsYYx1WJTk9hAhfmJ6Z/EMEwD9rS6OvbVEEZVw7TZBsAnql6i/2oIkdWmT9JKLsFn6qsTGjiJraMEn6nvoWYmsYFOYx5qJoyAjS5v2xi1gjV6Ra2mLfDS7t+2MajQcFjhY0db4DVUPdRs88U/ckXtSVthBK/v+ozp3QsNRw3VZjYKJHhNv/eO/fzcu9BwePFjb28NiJq8gXX1Yh5UaLjXDbPCCF7LZXVs5Yo9ZFhkmAYfqapi+pCeyOie0U8DPSM4t9+XH55lWLTTPWrCCM7p+mTFltWrxSrmAWF0bbvzPWpA3mQ41rJ6tahjWDRpu/NTH4Gc2Tmh20d3DAskYQQ8qJuYHt07anx0x6StMIK3cVmir2294aLd62H4rWG0aCYRZRPsb1KsuKRnWLS4ccMk9l3bjRXdJrEh7y6E9hwWVR24N4wadzZUg7ynw7E9Cw0XP2PksGjnMJJNMMZvsWIpkULDmnvUujol7lGDU1t8qNkRhYar8y4bV9Qm53SCeSxg6vnq2MHDoqrjjhoWVabG6nGtqMEQ63VCBwyLmo570NBx6znpGUGb+veODRgWPR5nblPVcUcOi3YIyK7vCD7I7w2spe1CG1k9vWHztOFP47OFUfO+8GHuekJN9Tk73eg6t/nQYZEwgsM8HY5FwmjlgyPDojMOHeHN/IZQ54V213bU1dUbRg/H6b74e4eOg/aDd/IbQgOHRXvcdd9zPqdcURuwH7yDqpcfVm6atj0wjKrO6Ywrak/227IvvKr72zZ+tFQ99xQatmipet5aaNh8PrfH6v2ONjWG11c3Mb3TsKjF3a47rahtPp+V4xz1HcErWixWnFzrJ7jQznbxb/mOqj5GGPEhViumn14Doy+0qsYrp1B5TrUH3jKPNdtbW2tb07CqMbye1RBavFhebFjUdNxRYTSwrd4R76j63rHV//8vNCxqOq4wgl1NVsdaLrbWoVqTg+5RK3WbN39Hi5+xU1GnbOKVXB9q9v9/3K+GEKkaqnVeIC3ns/gZlUPHGlt7R1uGjj3FmPAKrsOxnrmVljDqrlbuPZ+uk3g4TGcYXU/Bihof7LuUUv59smH0RO+ontGIYdHkWO9cjNmyHwTMvwb65s8jJ3ofD9xz2LPfo7b5FNyjxgepew30z8+hYfRwrFcJo5nN1cdp3tU9ary5pjewtvy2rtj09MBbJlW3TKo/7jt3PkubV3UMHSefsUMY9e4LIzy9gXXNK986sbTv+oGfq6oD6uytDZ+jeziwMCKl/kH3T5wtjCa77jR0bNg0bXvAitqmAwsjQrpC6H8vE0YbjzV/4OpN07ajKrFPuGAALRbnhLqrpxc2bs6F3gLBjceZ1VuMuXG/yb47Ba0wYm/Lj/Jo+G29pXq6cnNH44XdTjacGTq5vMO/zYoae6lboh8dRjMNhFHfxX72fxs8c3kXfeMa/ZBh2lkrsUct7z806PlnvlNlODxqqhMq5fL/76vh1/Vq050ukM31RqOW9x+OdXQxZut33fR9jQp+KBtWx3q6/Fvnjd5pRa1ruHXQHF39Cd382SQ2G/0OxwJFdEddIENfVT2jJyD3HDr2zNFVbNp0TnBr+vLDA4voDvltXfqrlas+4+dnz9AxFkYrDY7qifKZpsOxQLXyiN/WNd4+jCp27pmjE0bsYX5OKBhGLecUnegdZeTcyhvN0fEZ1iemTfQ+fuS+RlUrHxhGVR8jjAA4o/8A3b2z+ECpMS0AAAAASUVORK5CYII=\"\n        width={288}\n        height={239}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-10)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 59.19 296.58)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAaCAYAAAAqjnX1AAAACXBIWXMAABcRAAAXEQHKJvM/AAAAaklEQVRYhe2VwQ3AMAgDnYol8qi6/1hVH9kCOkL7QAoncRNYNjbjXk+oMNc8h0WU1ihJOnYL+IOF2skUDHCSMnffreETSNxdnBwQY95xZ4GYoI47C8RbpDhZ38ouThYWgJ2EOAm4SUS7Ebxzaykj9SqF3wAAAABJRU5ErkJggg==\"\n        width={41}\n        height={27}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-11)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 122.55 298.98)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABCCAYAAAChF3N/AAAACXBIWXMAABcRAAAXEQHKJvM/AAAA+klEQVR4nO3cwW3DQAxFQa7BAlxXmgrSVOpKBVauziVXvcNMBQKIT3JXss/z4+saEn6+P8/OUY+SnVGQkp1z9yPwTkJizJCYVY4WLStGQWJsWTESEmPLinnc/QD8JSExEhKjIDE753X3M/BGQmL2MtRTHAxjtKwY55AYBYnRsmIM9RgJiTFDYrSsGK9wY3wGFGOGxJghMWZIjITE7KUgKU7qMbasGAWJ0bJiJCRGQmKsvTFaVoyrkxhXJzESEmPLitkZP0cokZCYnYehXiIhMQoSs5ehnuIcEqNlxbhcjJGQGAmJUZAYLSvG2hvjBVWMgsRoWTH+DQj+8wssTi/PZty2AgAAAABJRU5ErkJggg==\"\n        width={100}\n        height={65}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-12)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 89.43 295.62)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABACAYAAAAK9hkwAAAACXBIWXMAABcRAAAXEQHKJvM/AAAC2UlEQVR4nO1cy3XEIAyU8jinsDSUHrai1JUC4hz2Ez8HG4M0YrA9d7TSCn0YhPX943MSK+wS+DDFGPX9ddMk6iBJxegIQi+qhDkiuf6QWRShMwJ0SqKOP/KMKsb/shkPo4BRkSBSr/RUBZ+akINZ6fM44s1d4hxq8TBqdxhhsikP35qQwxURRaQQI12UJnOGue79AVcTllBrl+FotRecVIqJhDkCD0F1aNTptYnbbcIW5jUAipsdKrZmoH1tmkqFGbVpFSnciOBILacj+CmY0BHmDVK3dn86gmUQxtQkEpmakuhPnWzCjQtFQGqqb1HhjiDzckA319YdQTMIYXpShXZ0delojjOmJkoCj3DTwgEh8KyAO4Iw3KgJvDOdJUTESy9fAg9WJ1jvTdUlItLkbdjZCrbaHYGhspnPEgi9jExqsizeBKsjCPV6RAJIM2gqN+gMdUS98EV3BNIMajSjI6RKeOai/2SOMCwvY5/gzIkZePqC0uEG4Z1p+o2RlxEjQtqFd9SrPHeEoHFZOadOBbtM4FFeygPRgabfxx3RjqmAEJya0u7fcjie9wF/51THog4dEYwF+y64fiB4aEc0AswOtxF45rnSAQGMCNulzrBRwZWa7FT2kAWbi/zzGQge8izBQ3O0j7wsAQ8IkHDLcwknuI7GYwMCJNw6Ee8A9zdr+BIxKrG4Dsg7ZmwHC/y3Or2/hr5Zw0UFqyPaFqdpcirMR0JwRKSwV2uj1YlAR8Q9HDxd57R/cewTWnAr6D5N+AQ4Kvo8oQVBaYcUthfjv22xBcZUXhJuWpzXbNaidnAGcPCPtw/4v3iWjjqd3Rlr6h7hjosXh7VOtDQ4lUMKtovOz+vNpYLDXtSsA+YIJ+Rb1AM+9FBRrCMMote5oysiWoQ3YfsrL6/Zm2M5g438O/UEHgvBu/+wdkBHwEyq7JzqaIshL/S3wWBSw1deRhxx2cbdpGPZdKESv5+P8sJMt1JJAAAAAElFTkSuQmCC\"\n        width={97}\n        height={64}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-13)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 86.55 293.22)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABxCAYAAABlT6XWAAAACXBIWXMAABcRAAAXEQHKJvM/AAABPUlEQVR4nO2ZwQ0DQQwC56KrN+WlvFweq9TAY4YKEALW9l4A7w8PUrzWBNa4Aa41iyFugEcbgL8AaxZD1AGA2gJ6AfQR0AvQK7AmsIZegCZBqAPU0EdA7wC9AEVgTWCNHLAmsEYCrAmsoRegXWBNYA29ACcC3zWNHXIAuEtQ/ztcBKAIqBXQO0DfAXoB9BehU4LiQaASXBNYQy/A6YDWYS/0AuhfgQQA9RxUB+gFqAPA3QE3wFdsAf06XAmC+yKkd4BeAP0coHdAAqwJrKEX4JSgeBLUf48XAVAbIAfoHaC/CBUBcEcgB0AXITX0AuhLUD8H5ABAbYFKENwR0DtAL0ARWBNYQy9AEVgTWEPvgJYh6G9QnQF9CSbAmsAa+oOIfg4oApAD1MgBawJrtAwBagXqgDWBNfQC6O8BwY4fbZ45SQSGsvUAAAAASUVORK5CYII=\"\n        width={63}\n        height={112}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-14)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 168.15 298.5)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAACACAYAAADwBX7CAAAACXBIWXMAABcRAAAXEQHKJvM/AAAB70lEQVR4nO3du5HDMBBEQfBqM1NKCuNSUmqAEqAji8/ojoDO1Cw+JK/3Z50FpPy/1jWSCU1/Tz8AcG8MtdBkrIUozQlR1pwQJZwQNcdYC0lzCSckGWsharbmhCTNCVFzPf0EwK3Z++lHAO4YayHK3VqI0pwQZUMIolzfgyhrToiy5oQoL1tDlHBClLEWooQTouzWQpTmhCjhhCg3hCDKmhOijLUQZayFKM0JUcIJUcZaiNKcEKU5IUpzQpRwQpRwQpRwQpS7tRClOSFKOCFqjl8AQpLmhCgbQhDlL2MQZayFKGMtRPlXCkRpToiy5oQo4YQoX0KAqFkOOiHJhhBEWXNClHBC1CyvjEGS5oQo4YQou7UQJZwQ5WVriLLmhCjhhChrToiy5oSo2aoTkrwyBlE2hCDKlxAgSnNClHBClHNOiNKcECWcECWcECWcEDXHDSFI8gtAiDLWQpRzTojSnBClOSHKlxAgylgLUcZaiNKcEOVLCBClOSFKOCHKhhBEOeeEKM0JUb74DlE2hCDKWAtRmhOihBOijLUQpTkhSjghylgLUZoTojQnRLn4DlH+lQJR/pUCUTaEIEo4IUo4IcrL1hDlnBOijLUQpTkhSnNClOaEKM0JUS6+Q5RzToiy5oQoa06IEk6I8j4nAPziCxZ8Rk2ii7L/AAAAAElFTkSuQmCC\"\n        width={231}\n        height={128}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-15)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 86.55 306.18)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAAHICAYAAAC1ef13AAAACXBIWXMAABcRAAAXEQHKJvM/AAAeJ0lEQVR4nO2dWZKkMLJFFWm1pLeqXlCvqvdU76OSTAKEBneXdCHOMSuzikS6coaLBoR4/fd/6W8CACn+83/p9bU6CADI8+e1OgIAyELNCSAK5gQQBXMCiII5AURhQAhAFGpOAFEwJ4AomBNAFPqcAKJQcwKIgjkBRMGcAKJgTgBRGBACEIWaE0AUzAkgCuYEEAVzAojCgBCAKNScAKJgTgBRMCeAKPQ5AUSh5gQQBXMCiII5AUTBnACiMCAEIAo1J4AomBNAFMwJIAp9TgBRqDkBRMGcAKJgTgBRMCeAKAwIAYhCzQkgCuYEEAVzAohCnxNAFGpOAFEwJ4AomBNAFMwJIAoDQgCiUHMCiII5AUTBnACi0OcEEIWaE0AUzAkgCuYEEAVzAojCgBCAKNScAKJgTgBRMCeAKPQ5AUSh5gQQBXMCiII5AUTBnACiMCAEIAo1J4AomBNAFMwJIAp9TgBRqDkBRMGcAKJgTgBRMCeAKAwIAYhCzQkgCuYEEAVzAohCnxNAFGpOAFEwJ4AomBNAFMwJIAoDQgCiUHMCiII5AUTBnACiYE4AURgQAhCFmhNAFMwJIArmBBCFPieAKNScAKJgTgBRMCeAKJgTQBQGhABEoeYEEAVzAoiCOQFEoc8JIAo1J4AomBNAFMwJIArmBBCFASEAUag5AUTBnACiYE4AUehzAohCzQkgCuYEEAVzAoiCOQFEYUAIQBRqTgBRMCeAKJgTQBT6nACiUHMCiII5AUTBnACiYE4AURgQAhCFmhNAFMwJIArmBBAFcwKIgjkBRMGcAKJgTgBRMCeAKExCABCFmhNAFMwJIArmBBCFPieAKNScAKJgTgBRMCeAKJgTQBQGhABEoeYEEAVzAoiCOQFEoc8JIAo1J4AomBNAFMwJIArmBBCFASEAUag5AUTBnACiYE4AUehzAohCzQkgCuYEEAVzAoiCOQFEYUAIQBRqTgBRMCeAKJgTQBTMCSDKn82df5eGAQBHfmrO1/c/ANDg6+hKDAqgwW+fc2dSalGA9ZwnIWx/+Pv2XwCYzPVo7aGpS00KMJfyo5RMfxSTAszhq8lsmBRgOl8pdZgNkwJM421A6JUaB38OI0XN+QCgmVOfs6s25PELwDC+rhyFSQHW8q/mLDiq26SWfABw4n0SQmHWQfOEhEx/tCkfALyRf84ZUZMysgvgovycs7DR0h/N/ASAC+rPOSP7o7z9AtDMW7N2tkmpRQGuyS6NWRzEiRg0OiRm0AjgTHHi+7Sa1JIP4OE0LfA13KQMGgGcOC1TUgKTAszjt8/Z0fErTnQvbPRMrG8MDeAxfJ1qp8bqiscvAGO5XhpT1KQ0deFTqL8yhkkBlnA5Wps1aQM8fgGI4fL7nNvgS9aghZGZbL4jGZ2mfBmNv4dBI4Cn0F5zNm6c3Ux9vf79A3ga1UkId2mmYlJ4GpfLlBy5ywQETApP4c9r339snIBQTeqdFL9LaJ2A8JOPmQtwU95ftu6cymfZSE0K0Eb+ZevBzzZTeVNRx+ozDAp3o/yy9cMmIFCLwp3IjtZiUoD1XE5CSCkzGPNK/kGjwsauwZ9dLOZBo8NEBgAl+l+27hw04vELgI0mc25gUoB5dJlzg8cvAOP583MRdvS7/qbMRd+oY+2PbptnfqLw9aI/Cuv4nYQwoZkaocHILnwKP5MQfsCkeQlMCpNxL1OyJbVtbCwu0qSWfHsJTAqTWL5MSZQOg0bwNC4nIZzGZiYM+Ow3NdXGAt8RZSIDjKL/ZWuVGrASi6U/2l3+XoaaFIKxvWwt3Ew1aWQSW32GQSGKfzWn1WwPNym1KKzkvc9p7RN2dNhepWQD+pImjUNi+qOwgnyf01oLRYzspvJGazO1q/yLAqlJYSbnb6XsWWnSQX1Jkw6DRrCA60kIezBpNiEmhZFkJyFcYm1uqgwaVWLxjOxiUojmNAkh+8bJHuuAi3WwKar8hoTVfa/oFAe7SjIvBo3gTH363hUDmrp3baby+AVGUPxWShOYNJsRk4KXr+UmEe9LmqA/CgH89jkj+nIXiVf3Jbs0Dom78hUKtOowkeFzOTdrB9Skq5upJo1D4oimrkeHmvTzuH4rZUBzc3UztXFTsUBMCrOor763csBldX+4kDDSpCYZDPp4vm5xgT/cpNSikOPP/sLo/QzCRtOAz1FjlzEj2ZSvcVM+8YB9aC7/QodBI9hT/srYFatrD9EaMCWjxiEjNSmk1PqVsSswaTYjg0YQQXGZEqtJXLUHJsWkkFJqWKbEahLzhblltpbfv+mcUKSZGhULJr0nTcuUeN7WiBgoKYRWzZd2P2+zDxc6f/86bhYp8fbLzWhapuSWTbwn7MNRJqAGpBa9D+VJCE9o4onvAyaFK9q+zylUe0QMGintQ0pGjRRjLkyqy+XnGLJE9H12GrufLp1P7ktGTUBgIoMeti9bC92xzRpCNalSM5WaVIfy0pgFlC4GlwbN1KE6YOfLW3soXQxmjdX94b2E0PHcdGANv5MQvnnCRYVJY3WoRddwWqbEO1ATOUCxbJAjcNBK6Xh6dRg0mst5acwH3rGtOk/Yh5yOSixQ5nppTKGLanUsT9gH1VjgmvqXrR94x7ZqPM0YSrHAmeokhJ8VAl6HP3TyN0hDIZal/WHxWCJ04B/1mjMdBjOMw49v2SI0VsciVOsoxbLpgJ/mGUJZYxgIN1eUDiaVjOWT6Z6+J1sDpuOPPh13LEK1DiZ9BsVvpZSQNenqWIQu6CfeMD6J90kIHR357FKShkGW7AoFnTpKsfxkCxgcURqoUYrlU3hv1nbUFsWknTq2jZqxnLI9rCZViuXpNC1TUiLCGJHmUonllFXogn5aLE+l/MrYTY2hFMtbNqFa54mxPI0/23+amnSFfkLzNzgjNCqxNBXXqFNMZu3XGvuxe40UpOPV2FDq1z6FvpetC4mbdSI0OhJXk63s11pr4JyOgYhYTprUpGH89Dk/2qSrm8wRJo00ukhf8tNNen5lLHUao39Tc4GY1BCLkEmV+rV35PJbKUo1YNQNo1nT2kyNisXRTMWkz+HfJIRth3cdce/3Kvc6XcfzQqeyqTth1OBTdf+agz4k7ciX0/m7/2HQOWV7E7Wh9CbOHbichGC+YR4yRuk0borXmBBLMeniGjAilpNmQA34CbXo9SSE3X+jTGqikHFJkxmTYtJJXL+VMqAGXFqLRuv0bzIXGG6uk2ifjjeWkyYmzVL/HMOhn+CtASM+5TCiXxvVx65sMiUOnZC/zxbZHzXobLxNqhDp1yrQ/rJ10J0p5O5GrW4s5CIbTWZJ+l+2VmqCDOjXSpi0f5OrmYpJNTF9yCglXZNGmWupSSfXoltWr456v/ZumM25IfVwGZN2FlDJ9oAm85vEzWrRPwpvNkS9ZfHDK3YAy62TGcDq0iwcl+IhMxzPpw8+pZRuM2j0W3Nylxyns7o27ihwVL/WEksxm9A1MopzsxaTjtO5iUlv02ROxx82VE1anoRg4OknAJP2aVSzLawMTppiJi1PQljUZ4laTS+rGdBn2XTcfZZD38d8XbySrV+byXeVbK/ZvjGPWr/2pCnSJ/1quiA6+yxPvmO/STyhNp58brekto2N2QJr0pV8pdSxH5NPACa1iKRbmPTTzq2F8GVKmpMtuGMXs6mYKwVdDJjUrfMmscCk/mVKnmTSwOaQ4uyplOLPbVVT5dw6dN4kJpr0z/FNgO4H5PvEGZ1cslaNI9FLZ15qdmpcajp19hqRg0/ec3tk2GoQDp1itsM1b2HGoNG/mnN3R3HdXCzNqJzGRcbuWt1X3CPv2GadiPNCK6mLj12mpCtppEmdLO/XFvKNajJ/qkmr30rBpDady2xCF8PSWrQzcVOzuZPo1k1KsQbNTkLItc29TV31CeRdmg06Vc1OjUtNp85eo7v/VCi7K6zGxMVkxuNwyrbyeB7I1pyqd3qp2nhL7CvuGU3myTXptOO5qmXyTfF9Tkzq0+hK+oQmMze9vKbxeDa9bD2qbY5JfTqX2VafI45nXrPzeLYv8JXGmdQvkk4mNev0byrGYizu1hdVPpjmTcaEzzNpfWnMHZFvE7xpOjWOsaguv3mkSfNV1shp7otvjaVJszOWt/IZzDtrVnS+PvnOVBZ5j4Ums09D6nhuiX3FxRzPQiymZUqa7kyd3KnJjEntGhzPi2wZDfMyJdPuKE6DLZ9AntPp31SMxVjc2hspJs1n2/247nNuGyZNZi9qNuiUoF/r02jKZj2+h3wvg0QtY7Nmxz4UNY07cSy+PlqrcndzBBDSHDtqRtTIN609itkCatK7XGcjatEta0qtj1KULqItsbF4W4EFzRs1mTHpvUzat+K7kklXX0R7iYha9BDLiGObypu6dJqzWY+LynXWkTjapLbPMWDSvOZNTDriwixmC6hFPTKzW2xRJu2ahJAtKN3vjZNctlIsrUQvv7k/vu6m7oTBp6P+PptF45gv6hMbrrdoOvahmLRB5yuq38XgyJjaOKX42jilgAu8r7iOjQXNAS2Tjk3GhPZjcVqmxAMmvcj2QU3mrqQKJu3fdE7YcSx6Nl4uU+LhLnd6THr6r1nDlXSlSSNu4h2Je45Dvs9p7F+8SVj7F8dsO53ovgb92vdYzJIdx6Wp9uidEPGdz7XyQOEa6bruGvehmOx7Y3m0dsDdoJURtQ5N5jbRpcdlS2wpXq3F5vRO+yQEbzxcjM6ElWwcl3/ZlJr9W+a+4n5of865un9xzKZ2l+zfVIzFnA2T/sumZFKjd/onISiZNOJCPOhINOm4eVVjac52U5Om5JmEsGW8GGTJJe3RuWLkm+l7nRHHpUtT4LgcdW49GSLyWEwYQEvJOn3vWNDgu2uhuI6NHZqDap2Rd9sRx+UkE1ELrT4uN2n2p9S5TElrQbPb5h6dy2wDjktKDsmFx+Uk84Sb1w1M+jXyYsSkedG7Hpc3iYhaNBPL9JuX2j7sMp+/bB15MXolMWlVw5VU1KTTj4vSud0yp9KXrW9Q7V8ltW1szMbNKy+BSbOiHsn6l61vaNLhtahDpyR615vXm0SkSXf/nXpcREx6OVqbvRi9YNIm0Tsel5NMhElXH5fFraTqo5TR1X5KDsmFTTpuXo2hYNKsRovkn9wS+9WJBK9CwgZmvnGSS9qjc8Wsh/6nMnp1Fr0pciqjEksTkcclleMZ8emRvUbLPmRftm6+UdA0dGlUyxhQ6zRucia+yKZ0XFIqxtJ0w/IU3bAPxZetp564rgLbRV13V0zqTHyR7QnHZcI+5Pucu4LveuLM+5DT6Suuc2NHKANuXo2bnIkvsmHSX5nMPjS/bH3XExdi0o6Mo0+k1CJXW2Jj8bYCC5orj8sAkxbfSnkbuLF0wnf5ivqZbKcfDD69SziPyzGW3BIf3QbtiGXUgEvIkiWVWIphRp2XVKk5Q2oypWZUOv4wchB9SpN5ZNOwK+kTWhgB+9D0ytjjTEqT+bqMwRd0LqltY6P+jU3a9T4nJq2LPsGkMy7o5mRKLYOUirFE32ja+pylcqxt7Ii+zpZ4cb/2qDNixYA9syYPRPdrR3/rtUToiggXGtVVHTrLLr5sPaUmG9zXmbEPJ5mVzahcYmPxtgLbRGe0MIrZIvbpoNEs2Zjwt1mLSY2JLyRW93VMCSvZVl7QFR1ztgHnKOo6O/c5V9+xVS7o7sQXEpi0SXSpSSNbBi+D5EXi6wGhlReD0gW9JfaGErlP/ZvOCTHpOZuYSS8HhHIP73NazYVeaJzK22dryNdT/ooH7SeZiH2K2J99Ys+bONsflN44MZyjbFN31QDhd+KlL1s3bgq7o/Gg3RcL58gYjlFD4mXrxk3LD9a7SOq6AGwbG/UxqTsWxRtp8ySEp5mUC7ok1J7siTdSleuuexJCZNvc3a819pneJIL7F5/woP0qaY9OK6MnQ+TK2ye91Jlwjr5KUTTfJIx3lLB+rchd8ahjlow8nsFNw6X7tLrFZkpYyVbQyS5TYo5h5QkQarr86HglV9/0CqJmSUyaz5bRKS5TYo4Bk2Y1nlbruCSNGcNbBpVYlrQev/9QXabEFcPKE4BJ89mUTDqhaRgRy/SK6ZvsgJDEBASDTmv5TW+q5DYGD3y5ap1KLKMH8446o9/EOTJ66crZ3xE9ZkvpouZ84p3pk+70qbypS6dZJrg2bklq22iLZfY1k1LPMiXp+MMIJnXrtMYy5XjuJV5zTTq8O5LRcbcOOpi3TElRtHlTPrG1fEt5Rw1MepZ4uElnXS8/fc6WpnFkn0WhXxvaBzSUn+0zKUzyN8TyKRM89jojr5eUdpMQPrr2UGoNBPYBnzQ39UfHKxl5vXqpxPI7CaEtvbmg5mwrTYJJ3bEMP74HjaXX6+Dr5XKZkifvdLWIAXf6jk1DYnnaBPJPuF6ry5Q8cacbN61tag+IZfZAzZbUttEWi1nSmHHY9Zq+B4SGD5Y0vNlwVXwuFjPfOt2DJc7y/1Y0uo5tZyxPH6g56qyYDLHPatXJ8bVpPbkJcpKxajjurm8/JtZe05rvL6dk4Ll9Sh/7rVn7SSY1n8SI5rpDJytsKX9wLJjUprOnbfpeQEElDUxqKN+o8UnnNqUAg6bUfXxtG8/8cRXkfEg9sl9bLfsoYe0nNOQbOrG/QWPJA/vIc9sRy+w+dq78qGPb9SGjbEGid2yzvDWWyPK9ZGovs44324B+rTnZhFiai2hIWPxWSjOYNLb8ARfR7OblkOb7pmMpf3IsEdfZ+yQEL4va5r2xYFKfhisblUFz4q+3v9EEKetYy/dKYlJ3LHc06Z/939Lxx8CH/rniihtv8vZLtvyIsg3lXyZ7pSkDNbPfxFm52kUplu1n77EuDwgF3bFnP3MqZlt5x6ZlMi2W2S2Dmo5Fsm20NtCkfpEUZ9KJsYTfIDp0MKlPY1UsfY9SAgJeMfn6Mttqk0SW35hsikn7N42L5cYmLX6OoVhQSk1t/EsJZ1/SG0u2Fl3Vx44ov9DXqZY/KJbZnygs6YR8WtARy9vYR2Ms/kkIu/8uvzOJxDJ7SmBJY+WxWN1KUorF0mIrfiulv9TFxlCKJTkuhgEXkbvG8ISCSfPZKhrVb6XYSsWkPxIra9GDjsLNauYnCosSi2NpMen5WyleIu/YmBSTPjyW1/HH7g/nAaHtD4FvnLj2/VWOpSnMwz65bhjCb780xRNxXoJiGfkdUdVYet5Quh4Q6rgbFJMOqAHN8k+IpfO82DY+P5Y7XK/10doH7vQjYmnMN/yc3DSWLaltoz+WljDbH6U8aKdlY8GkHxdLqYjiJISW1QtK8VQ33nQy+7BYtsSWWF71yQ/VWCL6XYKxpLT25YuSTnb1vm/6vjLWvLERo8YpG7H8y/ZKPE+8khGKZa9Rkmz+yphtYyORxlCKBZMSS6NGTrJ5mZLVbfPmbEqxpOOPybEIXYzE0qax/3n5rRRTPErGIJbfbJEXo1fiqbEMaCWdv8/5Sk0d36am7qTO/FXxT4+l+02ciPIbNJRiOTJ86cyogcW0qzmV7vQnGWKp6nRJDu4PK8XSlXRyLLVspwEhVZMqNUGUYvnRsUgO3gelWLqSipj0crQWk94rltLAwvCyKzpKseSS2jbGx3Kk+ijl1Gd6YmfeK4FJm3SUYmlOtrBiKn4rZa+b/cOgpSy6ZAJjsXxHNDyWLZ5Vb+I490Fp9lZJZ8nyLY0626Zp30q5lHhCrTMhFrO8NZaAPtPPH7ys7puPiqVwflOKWKZkr+aRwKTdGrcx6cKmYU1DwqQXDFumxCwj1JfMnUiVWBo3ORP782FSu8b7Wykf0pfc09t/cxtUoS+3JTa+/WLpm4dfZxexlGh5y2rp+T1o5PucajXg3ZuGARrZvtyq1s4Nap3upBOaqc3Zvn+ELFNSLFS4mdq4aXosXdkwabfGcJMGndvQZUqKMhEmndBnaS5icf8pa9JFsYT2zTHpT5Yhy5QUZTBpqM5btsWx7PO5Qpm8D8VkC49n/7dSvjOEDPhMfKBr1elu6g4c8GkpPiKWHh2l5TdLOqrLlBzZbzJPQnhcDbglHhhLV7aVNWCHjmrT8CRzw+vVN0Mo3XOnV8fSnG11MzWn079Jah9kniA06DQvU1It5yY7jUnHaQyvRYN0pB7zbToZ/pwSONrVI7+5eaS5L3mRcFZfcq9j6aev6kvu6V0idVX/bemLCg6d3ASElFL6yvZ1aKYO0bnLHburOGssA/bBLCnaSsovU+Io6LrUMTqYdJ6GrEkPGhImDchWXqbEUVBZ1KHTv2lcLJg0LpanmTSgFr3dMiUhtWhULJuOVyLSpBEaHSYNjwWT/lBdCSFbiwp05kuxdB2LiH361rjLmzhHJL+J8+rLN/yNkwXXvO05J535vATN1FiNJ+xDQacmuXyZEqkmyKbjlbhxM1XyAn/CPhR0riTjlil5kkmDTsBdZk/lkto2xsdizSe7DwWdo+S/ie/BfUlX3yuyn7DT6eXqwbApFPqSITq9LwdI70NO53DNf50SBNUYfpG0tJn6Ov6gmTpGo0PnlOwJ+1DYeL1MiTPguw6OFLPd8GLYkto2xsdS1bEUd8PzUjVpqg0IYdJ8tideDDc8R9nz4mX1jWZH22htUFP3jiOYxWyYdJyO1aRP2IdvsisheAYSqkFE6Bg0IvfpdMxe/RreWFoGFlqKi4glSsd7jrK1qOgbJ7XiUrqoOR9/d10cS4TObc7RpuMtzhrL5H0oFt8ZS/Fl62kXQIQGJl0eS5SGrEkdGpbu0G/NudKkCy6ipmbdpFiqOt7iMKk/X4DGKVtF5zzxvdA+Ht5PudCInBSfS+bRiIilWoS13+XQqRYysb9f3SfrxPrG8msavZNuTvtzEUt5xXcLA+5MZsmb1OrNRVADxmsEHM9RTyLGPecccBGZJVUu6IoOJp0XS3jZKciku1jan3Mu3Om9ztJaNFqnf9P0WLo0MOk/maCatO+VMUwaqxNRi06IZZROU/94Uiwh+Y4yTo3+zzGk1NSZHjmRYT8I4G7qCr6Jk9vk1YnU8H7iIpfMoxEVy1U+z7n1TLoZ9rK1bNNlkI7M/OFNJ0Ljg2v1t2zBfclWhr9s/UkmfcIk/x6dbpMOjKVbx5Jtskm/ejNUCy5swqTzY5EyqdA58mjMOrfvkxAm9FmqfQyFh/5Bsags97/X8K4QGNI/FjkuntUuZpzbYS9brx4pe9ydftPxSkTW6hEaK/uS+2yC1+v5WynRBQvudHcRSiYNiuWui49VdbzZFK7Xb74yfytmcBUqstMdm8bFImKMx5k0ohb1xBK1D+nQrB1ei3p0Bp+4LnmhZmqkSf0iSWefHmDS7OcYmmrRVQM3EeUXNLqO5+BYrhh1XKQGsDadSZMhrrK1xlIUMh4H+ySE1c1Noabh7FhkxwkmxzK9tTO5FvXNEHIU3KpRlVe5iDadCI0Ok0boDNWYEMtTTVpcpmRkwb0a0v3hhbFw82raND2WiHy/E98zbXNTU3lln1CkzxT5KYdWnTscl70GkyHq+c7N2p2rXTfMG9yZmnS82T64Vi9KvJLOCPHq43KRr7xMidekojs9Q+OU7SZNw24drwQmvcxXHxDCpC6NISZdfTwHxPLYaYWOfO2jta/3/y436aryMenQWJix9Et2EkKxoJQ0ViFo0PB+ssBbfimbQixZnUnLklZlJl0jM3SsA4S255w3uTMV5W+yD6tjuW0r6aixMJa34jtiGbZMyXQdTDo0lqUmFT4uvVl7dIYvU9KtE6Gx2qQRGio6mDRUo2fs4d8khIg2dYBOmEZFp3hMxffBPDEkOBbXeINSH/ugM6uPnR17OOh8nRIMvhvYRSfriO6DRB9Q8Li4dbySA2IJXaYka1Ivq5ubavuASafEsrz5ngZ9K+Utm/AJmFp2tI5XcvVN76ihoiNk0qHfSsGkA3WELiKp47LpRGgcju/sWPonIRg64dmm7uRvRF5qVGIZ/lkJr85Bw30RPWUgbEAss49t/3NOpbvkhFiKRQjf6Zfq0McO0dBYpkTwYugq4ib70K0TofHEPvakc62xTEmUDib9mFgkTBqhUdDRWqZk04nQGBxLUV5tHzDplFiidYrLlJgLOugodOZHaDQZVGEfNh2FGWDOWN40drGYPTL4GvHoFJcpcRf0wZ350LKjdIwap2w3qHVMOhEagbE0LVMSUZBL8gknQOlixKT6saTOZUrMfFA/YWr5ERqYVDaW9kkIA9rmT+wn5FjxWYkZOqfzN6Av6dJRWAHBoWObhOBF5M40K5ZiETfZB2IJyNapcf9lSjadCI3BsRTl1fbh5sZQiuUtW4fGRyxTohTL8Fo0WidC44mxTDQpAIjx/+RDUE0Cx2pgAAAAAElFTkSuQmCC\"\n        width={230}\n        height={456}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-16)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 352.95 280.26)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAADNCAYAAABDw2dwAAAACXBIWXMAABcRAAAXEQHKJvM/AAAEQElEQVR4nO3dW27aUBSGUYM8so6rjx1Xh1b60EtC7BhjDHxJ1pIiReISHvJr73O8fTj8+DmcBiDl+7fhcHz2hwDmjYdnfwJg1qinhSZtLUQJJ0SN9mqhyYYQRGlrIUo4IcqlFIiy5oQobS1ECSdECSdECSdEjSfbtZCkckKUcEKUcEKUcEKUCSGIMlsLUdpaiBJOiBJOiBJOiBJOiHL6HkSpnBBlCAGiDCFAlLYWooQTooQTooQTooQTohzwBVEqJ0QZQoAolROihBOihBOirDkhyuA7RGlrIUo4IUpbC1E2hCBKWwtRwglRwglRwglRwglRwglRwglRjimBKEMIEKWthSiztRClckKUNSdEaWshSlsLUcIJUcIJUcIJUcIJUcIJUcIJUYYQIErlhCj3c0KUyglRwglR48GOECSpnBAlnBA1/rJbC0mGECBKWwtRwglRwglRwglRwglRwglRwglRDpWGKJUTokwIQZTKCVHCCVHCCVHCCVHCCVHCCVGGECBK5YQoQwgQpXJClDUnRKmcEGXNCVG+AhCitLUQJZwQNQ4WnZCkckKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUcEKUkxAgygFfEKWthSjhhChtLUSpnBAlnBAlnBAlnBAlnBAlnBDlUgpEqZwQJZwQ5a4UiFI5IUo4IcpuLURZc0KUthaitLUQpXJClHBC1HiwIwRJKidECSdEjSfbtZBkCAGitLUQNZ6UTkhSOSFKOCHKbC1EqZwQJZwQNQ76WkgyhABR2lqIGgelE5JUTogSTogSTogSTogSTogSTogy+A5RJoQgSlsLUS8TQq/6W60uPN9L5Tz8/Tn/FXiS6ZrzVSWdKarAg7x/+t5hmKRSSOFxljeE3vS32l14nOOqsAkpPNxN35ViTQr3M9kQ2hI0VRT2N1lzalmhYTwdh/36UoMMsJs/lXOvcmnTCHZzvuZcscNzsSK+eQ8BhW3mbxm7Q0hXvw4YhuHSdc6FB1dXRNdIYZPjMFwIzMKDVwVtJqTA+2Zna+/W6q58H+CdkxAW87Pw4FW5cx8pLFocfH9Yu7vldfDJXTVbu/jUW9td4MzxmnL1kEoKDMPwes15xYJx5j7sVQ8uvm4FFZivZLrmXFnmnlFFVV++ksn3c/6vTntc8thrZ/cf5xrxhVy+ZWyPBeMdBhmsY/ns3r2UMhvSW7n8AquNl56w+10rkze94nUz73HLMStQtu3rGO6w4bP5dYc/P/DZ3PZdKUIKdzNee/HxrkPxM0/c3LVqd/ngxrN/4pUDCBftcenkzUkKW7NmTcpHdZxs+Ox8ltDcQ6v+xE43aWt3+ajO7ud81ADC5O9d+T6bPtats4PwYGcbQp9+AMFFUT6Q2d1aIYXnWxxCmHSUe7SGe83bvvosm3NmkIGwVdc5zwrNnptGt1bSnT6LTSMAVvsN+AZ9o9IlT+8AAAAASUVORK5CYII=\"\n        width={230}\n        height={205}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-17)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 352.95 280.26)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAM0lEQVQokcXQwQ0AMAjDwKNi9U7WwegO8MB/K5ED7lMaJHomTtObywmxsTy/Xc3ce8H2+JPGBWJjbFkkAAAAAElFTkSuQmCC\"\n        width={14}\n        height={11}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-18)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 324.15 298.5)\"\n      />\n      <image\n        xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOQAAACACAYAAAAbMsXBAAAACXBIWXMAABcRAAAXEQHKJvM/AAAB9UlEQVR4nO3dy01DQRREwTZ6URMbsWEWg4SIYM6iKoK3afWdj8evbfv82nvAdR+3PwD482zb6/ZXANt+A/k2sELCCeTtrwC2aUhIEUgIscsKIdaQEPJsk0iIMLJCiIaEEGtICDGyQshpyO/bnwFsGhJSBBJCnm0zsUKDhoQQl8shxIsBEGJkhRAjK4QIJIQYWSFEICHErz0gRENCiEBCiF1WCNGQECKQEGJkhRANCSECCSFGVghxUwdCvFwOIV4MgBAjK4QIJIQ49oAQDQkhGhJCBBJC3NSBEA0JIQIJIUZWCNGQECKQEGJkhRC/9oAQV+cgRCAhRCAhxBoSQjQkhDiHhBCBhBAXAyBEQ0KIQEKIQEKIYw8I0ZAQIpAQIpAQYg0JIRoSQjQkhLg6ByFGVggRSAg5I6snAyDBEx4QYpcVQqwhIURDQoiGhBCBhBAjK4Q82yQSIoysECKQEGINCSFnDenuHCQYWSFEICHEGhJCNCSEeFMHQoysEOLFAAhxDgkhNnUgxBoSQjQkhGhICLGpAyFGVggxskKIhoQQgYQQIyuEaEgIEUgIcQ4JIRoSQgQSQjzhASEaEkJOQ9rUgQQNCSECCSECCSHuskKImzoQoiEhxBoSQoysEKIhIUQgIcSmDoT4OzoIcbkcQs4uq5kVAP77AVPCSoPXmz+eAAAAAElFTkSuQmCC\"\n        width={227}\n        height={128}\n        style={{\n          clipPath: \"url(#weaviate_svg__clippath-19)\",\n        }}\n        transform=\"matrix(.48 0 0 -.48 324.15 306.18)\"\n      />\n    </g>\n  </svg>\n);\nexport default SvgWeaviate;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Weaviate/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgWeaviate from \"./Weaviate\";\n\nexport const WeaviateIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgWeaviate ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Wikipedia/Wikipedia.jsx",
    "content": "const SvgWikipedia = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <path d=\"m15.562 19.478-3.07-7.238q-.258.51-1.652 3.182t-2.068 4.057a1.493 1.493 0 0 1-.292.004h.005l-.062.001c-.075 0-.15-.006-.222-.018l.008.001q-.854-2.01-2.662-6.114T2.843 7.144a4.935 4.935 0 0 0-.699-1.128l.007.008a5.747 5.747 0 0 0-1.063-1.035l-.015-.011a1.867 1.867 0 0 0-1.055-.447L.011 4.53q0-.052-.005-.25t-.005-.282h6.073v.521a2.98 2.98 0 0 0-.846.173l.021-.007a1.631 1.631 0 0 0-.692.447l-.001.001a.566.566 0 0 0-.102.669l-.002-.003q.271.614 2.255 5.2t2.453 5.626q.32-.635 1.458-2.776t1.364-2.578q-.198-.406-1.313-2.926T9.253 5.272q-.396-.72-2.094-.74v-.523l5.343.01v.49h-.04c-.345 0-.667.096-.942.263l.008-.005q-.349.24-.13.72.344.73.906 1.974t.895 1.953q1.146-2.229 1.802-3.781.25-.573-.103-.826a2.526 2.526 0 0 0-1.35-.276h.008c.007-.065.011-.14.011-.216V4.27v.002-.25q.666 0 1.776-.005l2.834-.015v.51a2.738 2.738 0 0 0-1.253.351l.014-.007a2.596 2.596 0 0 0-.931.828l-.006.009-2.219 4.604q.135.344 1.328 3.021t1.266 2.854L20.97 5.579a1.356 1.356 0 0 0-.511-.648l-.005-.003a2.038 2.038 0 0 0-.663-.324l-.015-.004a2.91 2.91 0 0 0-.572-.08h-.006v-.524l4.792.042.01.021-.01.458a2.252 2.252 0 0 0-2.089 1.495l-.005.016q-5.482 12.666-5.824 13.447z\" />\n  </svg>\n);\nexport default SvgWikipedia;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Wikipedia/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgWikipedia from \"./Wikipedia\";\n\nexport const WikipediaIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgWikipedia ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Wolfram/Wolfram.jsx",
    "content": "const SvgWolfram = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <path\n      fill=\"#D71000\"\n      d=\"M15.769 10.7c-.534-1.53.141-4 .141-4S13.613 8.01 11.93 8C10.246 7.99 8.1 6.7 8.1 6.7s.564 2.46.07 4.04c-.484 1.58-2.489 3.34-2.489 3.34s2.6.23 3.88 1.1c1.28.87 2.439 3.46 2.439 3.46s.786-2.35 2.338-3.41c1.552-1.07 3.991-1.15 3.991-1.15s-2.016-1.84-2.56-3.37v-.01zm.645 2.7s-1.572.17-2.661.99c-1.099.81-1.764 2.19-1.764 2.19s-.766-1.43-1.814-2.22c-1.058-.79-2.59-.97-2.59-.97a5.068 5.068 0 0 0 1.533-2.334l.009-.036c.464-1.54.181-2.73.181-2.73s.927.7 2.641.7 2.812-.7 2.812-.7-.383 1.58.07 2.7c.444 1.14 1.583 2.41 1.583 2.41z\"\n    />\n    <path\n      fill=\"#D71000\"\n      d=\"m18.612 7.23.504-4.94-4.596 2L12 0 9.48 4.29l-4.586-2 .494 4.95L.5 8.29 3.826 12 .51 15.7l4.888 1.07-.504 4.94 4.586-2L12 24l2.52-4.29 4.596 2-.504-4.94 4.888-1.06L20.174 12h-.01L23.5 8.3l-4.888-1.07zm1.814 7.5s-4.737.62-5.584 1.22h.01c-.836.61-2.852 4.86-2.852 4.86s-1.512-3.86-3.024-4.86c-1.492-1-5.422-1.22-5.422-1.22s3.014-2.37 3.598-4.47c.595-2.1-.373-5.37-.373-5.37s2.923 2.1 5.12 2.1c2.187 0 5.301-2.1 5.301-2.1s-.827 4.5-.534 5.46c.303.96 3.76 4.38 3.76 4.38z\"\n    />\n    <path\n      fill=\"#D71000\"\n      d=\"M13.744 9.6s-.958.38-1.784.37c-.826 0-1.713-.37-1.713-.37.05.58 0 1.15-.171 1.7-.272.86-.917 1.64-.917 1.64a4.28 4.28 0 0 1 2.831 1.99l.01.02s.454-.85 1.189-1.33a5.975 5.975 0 0 1 1.643-.7s-.746-.78-1.028-1.57c-.282-.78-.06-1.75-.06-1.75z\"\n    />\n  </svg>\n);\nexport default SvgWolfram;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Wolfram/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgWolfram from \"./Wolfram\";\n\nexport const WolframIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgWolfram ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Word/Word.jsx",
    "content": "const SvgWord = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlSpace=\"preserve\"\n    viewBox=\"0 0 1881.25 1750\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <path\n      fill=\"#41A5EE\"\n      d=\"M1801.056 0H517.694C473.404 0 437.5 35.904 437.5 80.194V437.5l743.75 218.75 700-218.75V80.194c0-44.29-35.904-80.194-80.194-80.194z\"\n    />\n    <path\n      fill=\"#2B7CD3\"\n      d=\"M1881.25 437.5H437.5V875l743.75 131.25 700-131.25V437.5z\"\n    />\n    <path fill=\"#185ABD\" d=\"M437.5 875v437.5l700 87.5 743.75-87.5V875H437.5z\" />\n    <path\n      fill=\"#103F91\"\n      d=\"M517.694 1750h1283.363c44.29 0 80.194-35.904 80.194-80.194V1312.5H437.5v357.306c0 44.29 35.904 80.194 80.194 80.194z\"\n    />\n    <path\n      d=\"M969.806 350H437.5v1093.75h532.306c44.23-.144 80.05-35.964 80.194-80.194V430.194c-.144-44.23-35.964-80.05-80.194-80.194z\"\n      opacity={0.1}\n    />\n    <path\n      d=\"M926.056 393.75H437.5V1487.5h488.556c44.23-.144 80.05-35.964 80.194-80.194V473.944c-.144-44.23-35.964-80.05-80.194-80.194z\"\n      opacity={0.2}\n    />\n    <path\n      d=\"M926.056 393.75H437.5V1400h488.556c44.23-.144 80.05-35.964 80.194-80.194V473.944c-.144-44.23-35.964-80.05-80.194-80.194z\"\n      opacity={0.2}\n    />\n    <path\n      d=\"M882.306 393.75H437.5V1400h444.806c44.23-.144 80.05-35.964 80.194-80.194V473.944c-.144-44.23-35.964-80.05-80.194-80.194z\"\n      opacity={0.2}\n    />\n    <linearGradient\n      id=\"word_svg__a\"\n      x1={167.206}\n      x2={795.294}\n      y1={1420.912}\n      y2={333.088}\n      gradientTransform=\"matrix(1 0 0 -1 0 1752)\"\n      gradientUnits=\"userSpaceOnUse\"\n    >\n      <stop\n        offset={0}\n        style={{\n          stopColor: \"#2368c4\",\n        }}\n      />\n      <stop\n        offset={0.5}\n        style={{\n          stopColor: \"#1a5dbe\",\n        }}\n      />\n      <stop\n        offset={1}\n        style={{\n          stopColor: \"#1146ac\",\n        }}\n      />\n    </linearGradient>\n    <path\n      fill=\"url(#word_svg__a)\"\n      d=\"M80.194 393.75h802.112c44.29 0 80.194 35.904 80.194 80.194v802.113c0 44.29-35.904 80.194-80.194 80.194H80.194c-44.29 0-80.194-35.904-80.194-80.194V473.944c0-44.29 35.904-80.194 80.194-80.194z\"\n    />\n    <path\n      fill=\"#FFF\"\n      d=\"M329.088 1008.788c1.575 12.381 2.625 23.144 3.106 32.375h1.837c.7-8.75 2.158-19.294 4.375-31.631 2.217-12.338 4.215-22.765 5.994-31.281l84.35-363.913h109.069l87.5 358.444a530.822 530.822 0 0 1 10.894 67.637h1.444a518.5 518.5 0 0 1 9.1-65.625l69.781-360.631h99.269l-122.588 521.5H577.238L494.113 790.3c-2.406-9.931-5.162-22.925-8.181-38.894-3.019-15.969-4.9-27.65-5.644-35h-1.444c-.962 8.487-2.844 21.088-5.644 37.8-2.8 16.713-5.046 29.079-6.738 37.1l-78.138 344.269h-117.95L147.131 614.337h101.062l75.994 364.656c1.707 7.482 3.326 17.457 4.901 29.795z\"\n    />\n  </svg>\n);\nexport default SvgWord;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/Word/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgWord from \"./Word\";\n\nexport const WordIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(\n  (props, ref) => {\n    return <SvgWord ref={ref} {...props} />;\n  },\n);\n"
  },
  {
    "path": "src/frontend/platform/src/icons/freezeAll/freezeAll.jsx",
    "content": "const FreezeAllSvg = (props) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.2\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4 stroke-[1.5]\"\n    >\n      <title>snowflake-svg</title>\n      <path\n        id=\"Layer copy\"\n        className=\"fill-none stroke-current\"\n        d=\"m6 22.3l-4.4-4.4 4.4-4.3\"\n      />\n      <path id=\"Layer\" className=\"fill-none stroke-current\" d=\"m11 17.9h-9.4\" />\n      <path id=\"Layer\" className=\"fill-none stroke-current\" d=\"m7.8 8.9h14.6\" />\n      <path\n        id=\"Layer\"\n        className=\"fill-none stroke-current\"\n        d=\"m15.1 1.6v14.6\"\n      />\n      <path\n        id=\"Layer\"\n        className=\"fill-none stroke-current\"\n        d=\"m21 11.8l-2.9-2.9 2.9-2.9\"\n      />\n      <path\n        id=\"Layer\"\n        className=\"fill-none stroke-current\"\n        d=\"m9.3 6l2.9 2.9-2.9 2.9\"\n      />\n      <path\n        id=\"Layer\"\n        className=\"fill-none stroke-current\"\n        d=\"m18.1 3.1l-3 2.9-2.9-2.9\"\n      />\n      <path\n        id=\"Layer\"\n        className=\"fill-none stroke-current\"\n        d=\"m12.2 14.8l2.9-3 3 3\"\n      />\n    </svg>\n  );\n};\n\nexport default FreezeAllSvg;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/freezeAll/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgFreezeAll from \"./freezeAll\";\n(\"./freezeAll.jsx\");\n\nexport const freezeAllIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgFreezeAll ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/hackerNews/YCombinatorLogo.jsx",
    "content": "const SvgYCombinatorLogo = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    preserveAspectRatio=\"xMidYMid\"\n    viewBox=\"0 0 256 256\"\n    {...props}\n  >\n    <path fill=\"#FB651E\" d=\"M0 0h256v256H0z\" />\n    <path\n      fill=\"#FFF\"\n      d=\"M119.374 144.746 75.433 62.432h20.081l25.848 52.092c.398.928.862 1.889 1.392 2.883.53.994.994 2.022 1.391 3.082.266.398.464.762.597 1.094.133.33.265.63.398.894a65.643 65.643 0 0 1 1.79 3.877c.53 1.26.993 2.42 1.39 3.48 1.061-2.254 2.221-4.673 3.48-7.257 1.26-2.585 2.552-5.27 3.877-8.053l26.246-52.092h18.69l-44.34 83.308v53.087h-16.9v-54.081Z\"\n    />\n  </svg>\n);\nexport default SvgYCombinatorLogo;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/hackerNews/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgYCombinatorLogo from \"./YCombinatorLogo\";\n\nexport const HackerNewsIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgYCombinatorLogo ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/mistral/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgMistralIcon from \"./mistralIcon\";\n\nexport const MistralIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgMistralIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/icons/mistral/mistralIcon.jsx",
    "content": "const SvgMistralIcon = (props) => (\n  <svg\n    version=\"1.1\"\n    width=\"32px\"\n    height=\"32px\"\n    viewBox=\"0 0 256 233\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    preserveAspectRatio=\"xMidYMid\"\n  >\n    <title>Mistral AI</title>\n    <g>\n      <rect\n        fill=\"#000000\"\n        x=\"186.181818\"\n        y=\"0\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F7D046\"\n        x=\"209.454545\"\n        y=\"0\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"0\"\n        y=\"0\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"0\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"0\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"0\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"0\"\n        y=\"186.181818\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F7D046\"\n        x=\"23.2727273\"\n        y=\"0\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F2A73B\"\n        x=\"209.454545\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F2A73B\"\n        x=\"23.2727273\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"139.636364\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F2A73B\"\n        x=\"162.909091\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#F2A73B\"\n        x=\"69.8181818\"\n        y=\"46.5454545\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EE792F\"\n        x=\"116.363636\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EE792F\"\n        x=\"162.909091\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EE792F\"\n        x=\"69.8181818\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"93.0909091\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EB5829\"\n        x=\"116.363636\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EE792F\"\n        x=\"209.454545\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EE792F\"\n        x=\"23.2727273\"\n        y=\"93.0909091\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"186.181818\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EB5829\"\n        x=\"209.454545\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#000000\"\n        x=\"186.181818\"\n        y=\"186.181818\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EB5829\"\n        x=\"23.2727273\"\n        y=\"139.636364\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EA3326\"\n        x=\"209.454545\"\n        y=\"186.181818\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n      <rect\n        fill=\"#EA3326\"\n        x=\"23.2727273\"\n        y=\"186.181818\"\n        width=\"46.5454545\"\n        height=\"46.5454545\"\n      ></rect>\n    </g>\n  </svg>\n);\nexport default SvgMistralIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/supabase/SupabaseIcon.jsx",
    "content": "const SvgSupabaseIcon = (props) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    style={{\n      fill: \"none\",\n    }}\n    viewBox=\"0 0 64 64\"\n    {...props}\n  >\n    <path\n      d=\"M37.412 62.937c-1.635 2.059-4.95.93-4.99-1.698l-.575-38.453h25.855c4.683 0 7.295 5.41 4.383 9.077z\"\n      style={{\n        fill: \"url(#supabase-icon_svg__a)\",\n        strokeWidth: 0.57177335,\n      }}\n    />\n    <path\n      d=\"M37.412 62.937c-1.635 2.059-4.95.93-4.99-1.698l-.575-38.453h25.855c4.683 0 7.295 5.41 4.383 9.077z\"\n      style={{\n        fill: \"url(#supabase-icon_svg__b)\",\n        fillOpacity: 0.2,\n        strokeWidth: 0.57177335,\n      }}\n    />\n    <path\n      d=\"M26.897 1.063c1.635-2.059 4.95-.93 4.99 1.699l.252 38.452H6.607c-4.683 0-7.295-5.409-4.383-9.077z\"\n      style={{\n        fill: \"#3ecf8e\",\n        strokeWidth: 0.57177335,\n      }}\n    />\n    <defs>\n      <linearGradient\n        id=\"supabase-icon_svg__a\"\n        x1={53.974}\n        x2={94.163}\n        y1={54.974}\n        y2={71.829}\n        gradientTransform=\"matrix(.57177 0 0 .57177 .986 -.12)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#249361\" />\n        <stop offset={1} stopColor=\"#3ECF8E\" />\n      </linearGradient>\n      <linearGradient\n        id=\"supabase-icon_svg__b\"\n        x1={36.156}\n        x2={54.484}\n        y1={30.578}\n        y2={65.081}\n        gradientTransform=\"matrix(.57177 0 0 .57177 .986 -.12)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop />\n        <stop offset={1} stopOpacity={0} />\n      </linearGradient>\n    </defs>\n  </svg>\n);\nexport default SvgSupabaseIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/icons/supabase/index.tsx",
    "content": "import React, { forwardRef } from \"react\";\nimport SvgSupabaseIcon from \"./SupabaseIcon\";\n\nexport const SupabaseIcon = forwardRef<\n  SVGSVGElement,\n  React.PropsWithChildren<{}>\n>((props, ref) => {\n  return <SvgSupabaseIcon ref={ref} {...props} />;\n});\n"
  },
  {
    "path": "src/frontend/platform/src/index.tsx",
    "content": "import ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\nimport ContextWrapper from \"./contexts\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport './i18n';\n// @ts-ignore\nimport \"./style/index.css\";\n// @ts-ignore\nimport \"./style/applies.css\";\n// @ts-ignore\nimport \"./style/classes.css\";\n// @ts-ignore\nimport \"./style/markdown.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\nconst root = ReactDOM.createRoot(\n  document.getElementById(\"root\") as HTMLElement\n);\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false,\n      refetchOnMount: false,\n      retry: 0\n    }\n  }\n})\nroot.render(\n  <QueryClientProvider client={queryClient}>\n    <ContextWrapper>\n      <App />\n    </ContextWrapper>\n  </QueryClientProvider>\n);\nreportWebVitals();\n"
  },
  {
    "path": "src/frontend/platform/src/layout/HeaderMenu.tsx",
    "content": "import { TabIcon } from \"@/components/bs-icons\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { useContext, useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NavLink, useLocation } from \"react-router-dom\";\n\nexport default function HeaderMenu({ }) {\n    const { t } = useTranslation()\n    const location = useLocation();\n\n    const { user } = useContext(userContext);\n    // 系统管理员(超管、组超管)\n    const isAdmin = useMemo(() => {\n        return ['admin', 'group_admin'].includes(user.role)\n    }, [user])\n\n    if (['/build/apps', '/build/tools', '/build/client'].includes(location.pathname.replace(__APP_ENV__.BASE_URL, ''))) {\n        return <div className=\"build-tab flex justify-center h-[65px] items-center relative\">\n            {/* <div className=\"px-4\">\n                <NavLink to={'build/assist'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('build.assistant')}</span>\n                </NavLink>\n            </div> */}\n            <div className=\"px-4\">\n                <NavLink to={'build/apps'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('build.app')}</span>\n                </NavLink>\n            </div>\n            <div className=\"px-4\">\n                <NavLink to={'build/tools'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('build.tools')}</span>\n                </NavLink>\n            </div>\n            {user.role === 'admin' && <div className=\"px-4\">\n                <NavLink to={'build/client'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('build.workbench')}</span>\n                </NavLink>\n            </div>}\n        </div>\n    }\n\n    if (['/model/management', '/model/finetune'].includes(location.pathname.replace(__APP_ENV__.BASE_URL, ''))) {\n        return <div className=\"build-tab flex justify-center h-[65px] items-center relative\">\n            <div className=\"px-4\">\n                <NavLink to={'model/management'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('model.modelManagement')}</span>\n                </NavLink>\n            </div>\n            <div className=\"px-4\">\n                <NavLink to={'model/finetune'} className=\"group flex gap-2 items-center px-8 py-2 rounded-md navlink\">\n                    <TabIcon className=\"text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\"></TabIcon>\n                    <span className=\"text-sm font-bold text-muted-foreground group-hover:text-primary dark:group-hover:text-[#fff]\">{t('model.modelFineTune')}</span>\n                </NavLink>\n            </div>\n        </div>\n    }\n\n    return null;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/layout/MainLayout.tsx",
    "content": "import {\n    ApplicationIcon,\n    BookOpenIcon,\n    EvaluatingIcon,\n    GithubIcon,\n    KnowledgeIcon,\n    LabelIcon,\n    LogIcon,\n    ModelIcon,\n    QuitIcon,\n    SystemIcon,\n    TechnologyIcon\n} from \"@/components/bs-icons\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { DatasetIcon } from \"@/components/bs-icons/menu/dataset\";\nimport { DashboardIcon } from \"@/components/bs-icons/menu/system\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { SelectHover, SelectHoverItem } from \"@/components/bs-ui/select/hover\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport i18next from \"i18next\";\nimport { Check, ChevronDown, GanttChartIcon, Lock, MoonStar, Sun } from \"lucide-react\";\nimport { Suspense, useContext, useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, NavLink, Outlet, useNavigate } from \"react-router-dom\";\nimport { Separator } from \"../components/bs-ui/separator\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../components/bs-ui/tooltip\";\nimport { darkContext } from \"../contexts/darkContext\";\nimport { userContext } from \"../contexts/userContext\";\nimport { logoutApi } from \"../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../controllers/request\";\nimport { User } from \"../types/api/user\";\nimport HeaderMenu from \"./HeaderMenu\";\n\nexport default function MainLayout() {\n    const { dark, setDark } = useContext(darkContext);\n    const { appConfig } = useContext(locationContext)\n    // 角色\n    const { user, setUser } = useContext(userContext);\n    const { language, languageNames, options, changLanguage, t } = useLanguage(user)\n\n    const handleLogout = () => {\n        bsConfirm({\n            title: `${t('prompt')}!`,\n            desc: `${t('menu.logoutContent')}？`,\n            okTxt: t('system.confirm'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(logoutApi()).then(_ => {\n                    setUser(null)\n                    localStorage.removeItem('isLogin')\n                })\n                next()\n            }\n        })\n    }\n\n    // 重置密码\n    const navigator = useNavigate()\n    const JumpResetPage = () => {\n        localStorage.setItem('account', user.user_name)\n        navigator('/reset')\n    }\n\n    // 系统管理员(超管、组超管)\n    const isAdmin = useMemo(() => {\n        return ['admin', 'group_admin'].includes(user.role)\n    }, [user])\n\n    const isMenu = (menu) => {\n        return user.web_menu.includes(menu) || user.role === 'admin'\n    }\n\n    return <div className=\"flex\">\n        <div className=\"bg-background-main w-full h-screen\">\n            <div className=\"flex justify-between h-[64px] bg-background-main relative z-[21]\">\n                <div className=\"flex h-9 my-[14px]\">\n                    <div className=\"inline-block\" >\n                        {/* @ts-ignore */}\n                        <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/login-logo-small.png'} className=\"w-[104px] ml-[38px] rounded dark:w-[104px]\" alt=\"\" />\n                    </div>\n                </div>\n                <div>\n                    <HeaderMenu />\n                </div>\n                <div className=\"flex w-fit relative z-10\">\n                    <div className=\"flex\">\n                        <TooltipProvider>\n                            <Tooltip>\n                                <TooltipTrigger className=\"h-8 w-8 bg-header-icon rounded-lg cursor-pointer my-4\" onClick={() => setDark(!dark)}>\n                                    <div className=\"\">\n                                        {dark ? (\n                                            <Sun className=\"side-bar-button-size dark:text-slate-50 mx-auto w-[13px] h-[13px]\" />\n                                        ) : (\n                                            <MoonStar className=\"side-bar-button-size mx-auto w-[17px] h-[17px]\" />\n                                        )}\n                                    </div>\n                                </TooltipTrigger>\n                                <TooltipContent><p>{t('menu.themeSwitch')}</p></TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                        <Separator className=\"mx-[4px] dark:bg-[#111111]\" orientation=\"vertical\" />\n                        <SelectHover\n                            className={\"-top-4\"}\n                            triagger={\n                                <div className=\"h-8 px-3 bg-header-icon rounded-lg cursor-pointer my-4 flex items-center justify-center\">\n                                    <span className=\"text-sm leading-8\">{languageNames[language]}</span>\n                                    <ChevronDown className=\"ml-1 w-4 h-4\" />\n                                </div>\n                            }>\n                            {Object.entries(options).map(([key, value]) => (\n                                <SelectHoverItem key={key} onClick={() => changLanguage(key)}>\n                                    <span>{value}</span>\n                                    {language === key && <Check className=\"w-4 h-4 absolute top-1/2 right-0 transform -translate-y-1/2\" />}\n                                </SelectHoverItem>\n                            ))}\n                        </SelectHover>\n                        <Separator className=\"mx-[23px] h-6 border-l my-5 border-[#dddddd]\" orientation=\"vertical\" />\n                    </div>\n                    <div className=\"flex items-center h-7 my-4\">\n                        {/* @ts-ignore */}\n                        <img className=\"h-7 w-7 rounded-2xl mr-4\" src={__APP_ENV__.BASE_URL + '/assets/user.png'} alt=\"\" />\n                        <SelectHover\n                            triagger={\n                                <span className=\"leading-8 text-[14px] mr-8 max-w-40 cursor-pointer text-ellipsis overflow-hidden whitespace-nowrap\">\n                                    {user.user_name} <ChevronDown className=\"inline-block mt-[-2px]\" />\n                                </span>\n                            }>\n                            {isMenu('frontend') && <SelectHoverItem onClick={() => window.open('/workspace/')}><GanttChartIcon className=\"w-4 h-4 mr-1\" /><span>{t('menu.workspace')}</span></SelectHoverItem>}\n                            <SelectHoverItem onClick={JumpResetPage}><Lock className=\"w-4 h-4 mr-1\" /><span>{t('menu.changePwd')}</span></SelectHoverItem>\n                            <SelectHoverItem onClick={handleLogout}><QuitIcon className=\"w-4 h-4 mr-1\" /><span>{t('menu.logout')}</span></SelectHoverItem>\n                        </SelectHover>\n                    </div>\n                </div>\n            </div>\n            <div className=\"flex\" style={{ height: \"calc(100vh - 64px)\" }}>\n                <div className=\"relative z-10 bg-background-main h-full w-[184px] min-w-[184px] px-3  shadow-x1 flex justify-between text-center \">\n                    <nav className=\"\">\n                        {/* <NavLink to='/' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                            <ApplicationIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.app')}</span>\n                        </NavLink> */}\n                        {\n                            isMenu('board') && <>\n                                <NavLink to='/dashboard ' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                    <DashboardIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.dashboard')}</span>\n                                </NavLink>\n                            </>\n                        }\n                        {\n                            isMenu('build') &&\n                            <NavLink to='/build' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`} >\n                                <TechnologyIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.skills')}</span>\n                            </NavLink>\n                        }\n                        {\n                            isMenu('knowledge') &&\n                            <NavLink to='/filelib' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                <KnowledgeIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.knowledge')}</span>\n                            </NavLink>\n                        }\n                        {\n                            user.role === 'admin' && <>\n                                <NavLink to='/dataset' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                    <DatasetIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.dataset')}</span>\n                                </NavLink>\n                            </>\n                        }\n                        {\n                            isMenu('model') &&\n                            <NavLink to='/model' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                <ModelIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.models')}</span>\n                            </NavLink>\n                        }\n                        {\n                            isMenu('evaluation') &&\n                            <NavLink to='/evaluation' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                <EvaluatingIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.evaluation')}</span>\n                            </NavLink>\n                        }\n                        {\n                            <NavLink to='/label' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                <LabelIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[48px] text-[14px] leading-[48px]\">{t('menu.annotation')}</span>\n                            </NavLink>\n                        }\n                        {\n                            isAdmin && <>\n                                <NavLink to='/log' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                    <LogIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[56px] text-[14px] leading-[48px]\">{t('menu.log')}</span>\n                                </NavLink>\n                            </>\n                        }\n                        {\n                            isAdmin && <>\n                                <NavLink to='/sys' className={`navlink inline-flex rounded-lg w-full px-6 hover:bg-nav-hover h-12 mb-[3.5px]`}>\n                                    <SystemIcon className=\"h-6 w-6 my-[12px]\" /><span className=\"mx-[14px] max-w-[56px] text-[14px] leading-[48px]\">{t('menu.system')}</span>\n                                </NavLink>\n                            </>\n                        }\n                    </nav>\n                    {!appConfig.noFace && <div className=\"absolute left-0 bottom-0 w-[180px] p-2\">\n                        <div className=\"help flex items-between my-3\">\n                            <TooltipProvider>\n                                <Tooltip>\n                                    <TooltipTrigger className=\"h-[72px] w-[78px] cursor-pointer bg-background-tip rounded-lg hover:bg-[#1b1f23] hover:text-[white] transition-all dark:hover:bg-background-tip-darkhover\">\n                                        <Link to={\"https://github.com/dataelement/bisheng\"} target=\"_blank\">\n                                            <GithubIcon className=\"side-bar-button-size mx-auto w-5 h-5 \" />\n                                            <span className=\"block text-[12px] mt-[8px] font-bold\">{t(\"menu.github\")}</span>\n                                        </Link>\n                                    </TooltipTrigger>\n                                    <TooltipContent><p>{t(\"menu.github\")}</p></TooltipContent>\n                                </Tooltip>\n                            </TooltipProvider>\n                            <Separator className=\"mx-1\" orientation=\"vertical\" />\n                            <TooltipProvider>\n                                <Tooltip>\n                                    <TooltipTrigger className=\"h-[72px] w-[78px] cursor-pointer bg-background-tip rounded-lg p-0 align-top hover:bg-[#0055e3] hover:text-[white]  transition-all\">\n                                        <Link className=\"m-0 p-0\" to={\"https://m7a7tqsztt.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"} target=\"_blank\">\n                                            <BookOpenIcon className=\" mx-auto w-5 h-5\" />\n                                            <span className=\"block text-[12px] mt-[8px] font-bold\">{t(\"menu.bookopen\")}</span>\n                                        </Link>\n                                    </TooltipTrigger>\n                                    <TooltipContent><p>{t('menu.document')}</p></TooltipContent>\n                                </Tooltip>\n                            </TooltipProvider>\n                        </div>\n                    </div>}\n                </div>\n                <div className=\"flex-1 bg-background-main-content rounded-lg w-[calc(100vw-184px)]\">\n                    <Suspense fallback={<div className=\"flex items-center justify-center h-full\"><LoadingIcon /></div>}>\n                        <Outlet />\n                    </Suspense>\n                </div>\n            </div>\n        </div>\n\n        {/* // mobile */}\n        <div className=\"fixed w-full h-full top-0 left-0 bg-[rgba(0,0,0,0.4)] sm:hidden text-sm z-50\">\n            <div className=\"w-10/12 bg-gray-50 mx-auto mt-[30%] rounded-xl px-4 py-10\">\n                <p className=\" text-sm text-center\">{t('menu.forBestExperience')}</p>\n                {\n                    !appConfig.isPro && <div className=\"flex mt-8 justify-center gap-4\">\n                        <a href={\"https://github.com/dataelement/bisheng\"} target=\"_blank\">\n                            <GithubIcon className=\"side-bar-button-size mx-auto\" />Github\n                        </a>\n                        <a href={\"https://m7a7tqsztt.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"} target=\"_blank\">\n                            <BookOpenIcon className=\"side-bar-button-size mx-auto\" /> {t('menu.onlineDocumentation')}\n                        </a>\n                    </div>\n                }\n            </div>\n        </div>\n    </div >\n};\n\nconst useLanguage = (user: User) => {\n    const [language, setLanguage] = useState('zh-Hans')\n    useEffect(() => {\n        const lang = user.user_id ? localStorage.getItem('i18nextLng') : null\n        if (lang) {\n            setLanguage(lang === 'zh' ? 'zh-Hans' : lang)\n        }\n    }, [user])\n\n    const { t } = useTranslation()\n    const changLanguage = (ln: string) => {\n        setLanguage(ln)\n        localStorage.setItem('i18nextLng', ln)\n        // workspace\n        localStorage.removeItem('lang')\n        document.cookie = `lang=${ln}; path=/; expires=${new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toUTCString()}`;\n        i18next.changeLanguage(ln)\n    }\n    return {\n        language,\n        languageNames: { \"zh-Hans\": '中文', \"en-US\": 'English', ja: '日本語' },\n        options: { \"zh-Hans\": '中文', \"en-US\": 'English', ja: '日本語' },\n        changLanguage,\n        t\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/modals/EditNodeModal/index.tsx",
    "content": "import { useContext, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport CodeAreaComponent from \"../../components/codeAreaComponent\";\nimport Dropdown from \"../../components/dropdownComponent\";\nimport FloatComponent from \"../../components/floatComponent\";\nimport InputComponent from \"../../components/inputComponent\";\nimport InputFileComponent from \"../../components/inputFileComponent\";\nimport InputListComponent from \"../../components/inputListComponent\";\nimport IntComponent from \"../../components/intComponent\";\nimport PromptAreaComponent from \"../../components/promptComponent\";\nimport TextAreaComponent from \"../../components/textAreaComponent\";\nimport ToggleShadComponent from \"../../components/toggleShadComponent\";\nimport { Badge } from \"../../components/bs-ui/badge\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"../../components/bs-ui/dialog\";\nimport EditLabel from \"../../components/ui/editLabel\";\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"../../components/bs-ui/table\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { TabsContext } from \"../../contexts/tabsContext\";\nimport { typesContext } from \"../../contexts/typesContext\";\nimport { NodeDataType } from \"../../types/flow\";\nimport { classNames, limitScrollFieldsModal } from \"../../utils\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\n\nexport default function EditNodeModal({ data }: { data: NodeDataType }) {\n  const [open, setOpen] = useState(true);\n  const [nodeLength, setNodeLength] = useState(\n    Object.keys(data.node.template).filter(\n      (t) =>\n        t.charAt(0) !== \"_\" &&\n        data.node.template[t].show &&\n        (data.node.template[t].type === \"str\" ||\n          data.node.template[t].type === \"bool\" ||\n          data.node.template[t].type === \"float\" ||\n          data.node.template[t].type === \"code\" ||\n          data.node.template[t].type === \"prompt\" ||\n          data.node.template[t].type === \"file\" ||\n          data.node.template[t].type === \"int\")\n    ).length\n  );\n  const [nodeValue, setNodeValue] = useState(null);\n  const { closePopUp } = useContext(PopUpContext);\n  const { types } = useContext(typesContext);\n  const ref = useRef();\n  const { isOnlineVersion, version, setTabsState, flow } = useContext(TabsContext);\n  const { reactFlowInstance } = useContext(typesContext);\n\n  let disabled =\n    reactFlowInstance?.getEdges().some((e) => e.targetHandle === data.id) ??\n    false;\n  if (nodeLength == 0) {\n    closePopUp();\n  }\n\n  function setModalOpen(x: boolean) {\n    setOpen(x);\n    if (x === false) {\n      closePopUp();\n    }\n  }\n\n  const { message } = useToast()\n  const handleSave = () => {\n    if (isOnlineVersion()) return message({\n      description: '上线中不可编辑保存',\n      variant: 'warning'\n    })\n    setModalOpen(false)\n  }\n\n  function changeAdvanced(node) {\n    Object.keys(data.node.template).map((n, i) => {\n      if (n === node.name) {\n        data.node.template[n].advanced = !data.node.template[n].advanced;\n      }\n      return n;\n    });\n    setNodeValue(!nodeValue);\n  }\n\n  const handleOnNewValue = (newValue: any, name) => {\n    data.node.template[name].value = newValue;\n    // 手动修改知识库，collection_id 清空\n    if (['index_name', 'collection_name'].includes(name)) delete data.node.template[name].collection_id\n    // Set state to pending\n    setTabsState((prev) => {\n      return {\n        ...prev,\n        [flow.id]: {\n          ...prev[flow.id],\n          isPending: true,\n        },\n      };\n    });\n  };\n\n  const idArr = data.id.split('-')\n  const handleChangeId = (id) => {\n    const oldId = data.id\n    const newId = `${idArr[0]}-${id}`\n    document.dispatchEvent(new CustomEvent('idChange', { detail: [newId, oldId] }))\n    setOpen(!open)\n  }\n\n  const { t } = useTranslation()\n  return (\n    <Dialog open={true} onOpenChange={setModalOpen}>\n      <DialogTrigger asChild></DialogTrigger>\n      <DialogContent className=\"sm:max-w-[740px] lg:max-w-[740px]\">\n        <DialogHeader>\n          <DialogTitle className=\"flex items-center\">\n            <span className=\"pr-2\">{data.type}</span>\n            <Badge variant=\"secondary\">ID:{idArr[0]}-\n              <EditLabel\n                rule={[\n                  {\n                    // 正则字母和数字 5 位数\n                    pattern: /^[a-zA-Z0-9]{5}$/,\n                    message: t('flow.incorrectIdFormatMessage'),\n                  },\n                  {\n                    // required: true,\n                    // 自定义函数校验\n                    validator: (val) => {\n                      const node = window._flow.data.nodes.find((node) =>\n                        node.data.id.split('-')[1] === val &&\n                        node.data.id !== data.id // 排除self\n                      )\n                      return !node\n                    },\n                    message: t('flow.idAlreadyExistsMessage'),\n                  }\n                ]}\n                str={idArr[1]}\n                onChange={handleChangeId}>\n                {(val) => <>{val}</>}\n              </EditLabel>\n            </Badge>\n          </DialogTitle>\n          <DialogDescription asChild>\n            <div>\n              <p className=\"sm:max-w-[700px] lg:max-w-[700px] break-words\">\n                {data.node?.description}\n              </p>\n              \n              <div className=\"flex pt-3\">\n                {/* <Variable className=\"edit-node-modal-variable \"></Variable> */}\n                <span className=\"edit-node-modal-span\">List</span>\n              </div>\n            </div>\n          </DialogDescription>\n        </DialogHeader>\n\n        <div className=\"edit-node-modal-arrangement\">\n          <div\n            className={classNames(\n              \"edit-node-modal-box\",\n              nodeLength > limitScrollFieldsModal\n                ? \"overflow-scroll overflow-x-hidden custom-scroll\"\n                : \"overflow-hidden\"\n            )}\n          >\n            {nodeLength > 0 && (\n              <div className=\"edit-node-modal-table\">\n                <Table className=\"table-fixed bg-muted outline-1\">\n                  <TableHeader className=\"edit-node-modal-table-header\">\n                    <TableRow className=\"\">\n                      <TableHead className=\"h-7 text-center\">parameter</TableHead>\n                      <TableHead className=\"h-7 p-0 text-center\">value</TableHead>\n                      <TableHead className=\"h-7 text-center\">show</TableHead>\n                    </TableRow>\n                  </TableHeader>\n                  <TableBody className=\"p-0\">\n                    {Object.keys(data.node.template)\n                      .filter(\n                        (t) =>\n                          t.charAt(0) !== \"_\" &&\n                          data.node.template[t].show &&\n                          (data.node.template[t].type === \"str\" ||\n                            data.node.template[t].type === \"bool\" ||\n                            data.node.template[t].type === \"float\" ||\n                            data.node.template[t].type === \"code\" ||\n                            data.node.template[t].type === \"prompt\" ||\n                            data.node.template[t].type === \"file\" ||\n                            data.node.template[t].type === \"int\" ||\n                            data.node.template[t].type === \"dict\")\n                      )\n                      .map((n, i) => (\n                        <TableRow key={i} className=\"h-10\">\n                          <TableCell className=\"truncate p-0 text-center text-sm text-foreground sm:px-3\">\n                            {data.node.template[n].name\n                              ? data.node.template[n].name\n                              : data.node.template[n].display_name}\n                          </TableCell>\n                          <TableCell className=\"w-[300px] p-0 text-center text-xs text-foreground \">\n                            {data.node.template[n].type === \"str\" &&\n                              !data.node.template[n].options ? (\n                              <div className=\"mx-auto\">\n                                {data.node.template[n].list ? (\n                                  <InputListComponent\n                                    editNode={true}\n                                    disabled={disabled}\n                                    value={\n                                      !data.node.template[n].value ||\n                                        data.node.template[n].value === \"\"\n                                        ? [\"\"]\n                                        : data.node.template[n].value\n                                    }\n                                    onChange={(t: string[]) => {\n                                      handleOnNewValue(t, n);\n                                    }}\n                                  />\n                                ) : data.node.template[n].multiline ? (\n                                  <TextAreaComponent\n                                    disabled={disabled}\n                                    editNode={true}\n                                    value={data.node.template[n].value ?? \"\"}\n                                    onChange={(t: string) => {\n                                      handleOnNewValue(t, n);\n                                    }}\n                                  />\n                                ) : (\n                                  <InputComponent\n                                    editNode={true}\n                                    disabled={disabled}\n                                    password={\n                                      data.node.template[n].password ?? false\n                                    }\n                                    value={data.node.template[n].value ?? \"\"}\n                                    onChange={(t) => {\n                                      handleOnNewValue(t, n);\n                                    }}\n                                  />\n                                )}\n                              </div>\n                            ) : data.node.template[n].type === \"bool\" ? (\n                              <div className=\"ml-auto\">\n                                {\" \"}\n                                <ToggleShadComponent\n                                  disabled={disabled}\n                                  enabled={data.node.template[n].value}\n                                  setEnabled={(t) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                  size=\"small\"\n                                />\n                              </div>\n                            ) : data.node.template[n].type === \"float\" ? (\n                              <div className=\"mx-auto\">\n                                <FloatComponent\n                                  disabled={disabled}\n                                  editNode={true}\n                                  value={data.node.template[n].value ?? \"\"}\n                                  onChange={(t) => {\n                                    data.node.template[n].value = t;\n                                  }}\n                                />\n                              </div>\n                            ) : data.node.template[n].type === \"str\" &&\n                              data.node.template[n].options ? (\n                              <div className=\"mx-auto\">\n                                <Dropdown\n                                  numberOfOptions={nodeLength}\n                                  editNode={true}\n                                  options={data.node.template[n].options}\n                                  onSelect={(t) => handleOnNewValue(t, n)}\n                                  value={\n                                    data.node.template[n].value ??\n                                    \"Choose an option\"\n                                  }\n                                ></Dropdown>\n                              </div>\n                            ) : data.node.template[n].type === \"int\" ? (\n                              <div className=\"mx-auto\">\n                                <IntComponent\n                                  disabled={disabled}\n                                  editNode={true}\n                                  value={data.node.template[n].value ?? \"\"}\n                                  onChange={(t) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                />\n                              </div>\n                            ) : data.node.template[n].type === \"file\" ? (\n                              <div className=\"mx-auto\">\n                                <InputFileComponent\n                                  editNode={true}\n                                  disabled={disabled}\n                                  value={data.node.template[n].value ?? \"\"}\n                                  onChange={(t: string) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                  fileTypes={data.node.template[n].fileTypes}\n                                  suffixes={data.node.template[n].suffixes}\n                                  onFileChange={(t: string) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                ></InputFileComponent>\n                              </div>\n                            ) : data.node.template[n].type === \"prompt\" ? (\n                              <div className=\"mx-auto\">\n                                <PromptAreaComponent\n                                  field_name={n}\n                                  editNode={true}\n                                  disabled={disabled}\n                                  nodeClass={data.node}\n                                  setNodeClass={(nodeClass) => {\n                                    data.node = nodeClass;\n                                  }}\n                                  value={data.node.template[n].value ?? \"\"}\n                                  onChange={(t: string) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                />\n                              </div>\n                            ) : data.node.template[n].type === \"code\" ? (\n                              <div className=\"mx-auto\">\n                                <CodeAreaComponent\n                                  disabled={disabled}\n                                  editNode={true}\n                                  value={data.node.template[n].value ?? \"\"}\n                                  onChange={(t: string) => {\n                                    handleOnNewValue(t, n);\n                                  }}\n                                />\n                              </div>\n                            ) : data.node.template[n].type === \"Any\" ? (\n                              \"-\"\n                            ) : (\n                              <div className=\"hidden\"></div>\n                            )}\n                          </TableCell>\n                          <TableCell className=\"p-0 text-right\">\n                            <div className=\"items-center text-center\">\n                              <ToggleShadComponent\n                                enabled={!data.node.template[n].advanced}\n                                setEnabled={(e) =>\n                                  changeAdvanced(data.node.template[n])\n                                }\n                                disabled={disabled}\n                                size=\"small\"\n                              />\n                            </div>\n                          </TableCell>\n                        </TableRow>\n                      ))}\n                  </TableBody>\n                </Table>\n              </div>\n            )}\n          </div>\n        </div>\n\n        <DialogFooter>\n          <Button className=\"mt-3 rounded-full\" onClick={handleSave} type=\"submit\" >save</Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/modals/L2ParamsModal/index.tsx",
    "content": "import { PenLine } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"../../components/ui/accordion\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n} from \"../../components/bs-ui/dialog\";\nimport { Label } from \"../../components/bs-ui/label\";\nimport { Switch } from \"../../components/bs-ui/switch\";\nimport { TemplateVariableType } from \"../../types/api\";\nimport { FlowType } from \"../../types/flow\";\nimport { classNames } from \"../../utils\";\n\nconst Item = ({ name, data }: { name: string, data: TemplateVariableType }) => {\n    const { t } = useTranslation()\n\n    const [val, setVal] = useState(data.l2_name || name);\n    const [edit, setEdit] = useState(false);\n\n    const handleChange = (e) => {\n        setVal(e.target.value);\n        data.l2_name = e.target.value;\n    }\n\n    const [_, forceupdate] = useState(1); // refresh\n    const handleSwitch = () => {\n        data.l2 = !data.l2;\n        forceupdate(Math.random);\n    }\n\n    return (\n        <div className={`l2Param flex justify-between rounded-xl px-2 py-1 mb-2 ${data.l2 ? 'bg-gray-400 dark:bg-gray-800' : 'bg-gray-100 dark:bg-gray-500'}`}>\n            <div>\n                <div className=\"flex items-center\">\n                    <Label className=\"pr-2\">{t('flow.parameterLabel')}:</Label>\n                    <span>{name}</span>\n                </div>\n                <div className=\"flex items-center\">\n                    <Label className=\"pr-2\">{t('flow.aliasLabel')}:</Label>\n                    {edit ?\n                        <div className=\"\">\n                            <input\n                                type=\"text\"\n                                value={val}\n                                onChange={handleChange}\n                                onKeyDown={(e) => e.key === 'Enter' && setEdit(false)}\n                                className=\"flex h-6 w-full rounded-xl border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n                            />\n                        </div>\n                        : <div className=\"flex items-center text-gray-900 dark:text-gray-300\">\n                            <span>{val}</span>\n                            <button className=\"l2Param-edit transition-all\" title={t('flow.editAlias')} onClick={() => setEdit(true)}>\n                                <PenLine size={18} className=\"ml-2 cursor-pointer\" />\n                            </button>\n                        </div>\n                    }\n                </div>\n            </div>\n            <Switch id=\"airplane-mode\" checked={data.l2} onCheckedChange={handleSwitch} />\n        </div>\n    );\n};\n\n\nconst ComponentItem = ({ id, data }) => {\n    const { t } = useTranslation()\n\n    const [val, setVal] = useState(data.node.l2_name || data.type);\n    const [edit, setEdit] = useState(false);\n\n    const handleChange = (e) => {\n        setVal(e.target.value);\n        data.node.l2_name = e.target.value;\n    }\n\n    return (\n        <AccordionItem value={id} className=\"px-6\">\n            <AccordionTrigger>\n                <div className=\"l2Param w-full\">\n                    <div className=\"flex items-center\">\n                        <Label className=\"pr-2\">{t('flow.componentLabel')}:</Label>\n                        <span>{`${data.type}(${id})`}</span>\n                    </div>\n                    <div className=\"flex items-center mt-1\" onClick={(e) => e.stopPropagation()}>\n                        <Label className=\"pr-2\">{t('flow.aliasLabel')}:</Label>\n                        {edit ? (\n                            <div className=\"\">\n                                <input\n                                    type=\"text\"\n                                    value={val}\n                                    onChange={handleChange}\n                                    onKeyDown={(e) => {\n                                        e.key === 'Enter' && setEdit(false);\n                                        e.code === 'Space' && e.preventDefault();\n                                    }}\n                                    className=\"flex h-6 w-full rounded-xl border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n                                />\n                            </div>\n                        ) : (\n                            <div className=\"flex items-center text-gray-900 dark:text-gray-300\">\n                                <span>{val}</span>\n                                <button\n                                    className=\"l2Param-edit transition-all\"\n                                    title={t('flow.editAlias')}\n                                    onClick={() => setEdit(true)}\n                                >\n                                    <PenLine size={18} className=\"ml-2 cursor-pointer\" />\n                                </button>\n                            </div>\n                        )}\n                    </div>\n                </div>\n            </AccordionTrigger>\n            <AccordionContent>\n                {Object.keys(data.node.template).map(k => {\n                    const template = data.node.template[k];\n                    const { type } = template;\n                    return template.show && (type === \"str\" ||\n                        type === \"bool\" ||\n                        type === \"float\" ||\n                        type === \"code\" ||\n                        type === \"prompt\" ||\n                        type === \"file\" ||\n                        type === \"int\") && <Item key={k} name={k} data={data.node.template[k]} />;\n                })}\n            </AccordionContent>\n        </AccordionItem>\n    );\n};\n\n\nexport default function L2ParamsModal({ data: flow, open, setOpen, onSave }: { data: FlowType } & any) {\n    const { t } = useTranslation()\n\n    return (\n        <Dialog open={open} onOpenChange={setOpen}>\n            <DialogTrigger asChild></DialogTrigger>\n            <DialogContent className=\"sm:max-w-[600px] lg:max-w-[700px]\">\n                <DialogHeader>\n                    <DialogTitle className=\"flex items-center\">\n                        <span className=\"pr-2\">{t('flow.simplifyConfig')}</span>\n                    </DialogTitle>\n                    <DialogDescription asChild>\n                        <div>\n                            {t('flow.minimumParamSetDescription')}\n                            <div className=\"flex pt-3\">\n                                <span className=\"edit-node-modal-span\">{t('flow.paramList')}</span>\n                            </div>\n                        </div>\n                    </DialogDescription>\n                </DialogHeader>\n\n                <div className=\"edit-node-modal-arrangement\">\n                    <div\n                        className={classNames(\n                            \"edit-node-modal-box\", \"overflow-scroll overflow-x-hidden custom-scroll h-[400px]\"\n                        )}\n                    >\n                        <Accordion type=\"multiple\" defaultChecked>\n                            {flow.data?.nodes.map(node => (\n                                <ComponentItem key={node.id} id={node.id} data={node.data}></ComponentItem>\n                            ))}\n                        </Accordion>\n                    </div>\n                </div>\n                <DialogFooter>\n                    <Button className=\"mt-3 rounded-full\" onClick={() => { setOpen(false); onSave() }} type=\"submit\" >{t('flow.saveConfig')}</Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/modals/UploadModal/upload.ts",
    "content": "import { uploadLibFile } from \"../../controllers/API\";\n\n// Function to upload the file with progress tracking\nexport const uploadFileWithProgress = async (file, callback, type: 'knowledge' | 'icon' = 'knowledge', url): Promise<any> => {\n  try {\n    const formData = new FormData();\n    formData.append('file', file);\n\n    const config = {\n      headers: { 'Content-Type': 'multipart/form-data;charset=utf-8' },\n      onUploadProgress: (progressEvent) => {\n        const { loaded, total } = progressEvent;\n        const progress = Math.round((loaded * 100) / total);\n        console.log(`Upload progress: ${file.name} ${progress}%`);\n        callback(progress)\n        // You can update your UI with the progress information here\n      },\n    };\n\n    // Convert the FormData to binary using the FileReader API\n    const data = await uploadLibFile(formData, config, type, url);\n\n    data && callback(100);\n\n    console.log('Upload complete:', data);\n    return data\n    // Handle the response data as needed\n  } catch (error) {\n    console.error('Error uploading file:', error);\n    return ''\n    // Handle errors\n  }\n};\n"
  },
  {
    "path": "src/frontend/platform/src/modals/baseModal/index.tsx",
    "content": "import { ReactNode, useEffect } from \"react\";\n\nimport React from \"react\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"../../components/bs-ui/dialog\";\nimport { modalHeaderType } from \"../../types/components\";\n\ntype ContentProps = { children: ReactNode };\ntype HeaderProps = { children: ReactNode; description: string };\ntype FooterProps = { children: ReactNode };\ntype TriggerProps = {\n  children: ReactNode;\n  asChild?: boolean;\n  disable?: boolean;\n};\n\nconst Content: React.FC<ContentProps> = ({ children }) => {\n  return <div className=\"h-full w-full\">{children}</div>;\n};\nconst Trigger: React.FC<TriggerProps> = ({ children, asChild, disable }) => {\n  return (\n    <DialogTrigger\n      className={asChild ? \"\" : \"w-full\"}\n      hidden={children ? false : true}\n      asChild={asChild}\n    >\n      {children}\n    </DialogTrigger>\n  );\n};\n\nconst Header: React.FC<{ children: ReactNode; description: string | null }> = ({\n  children,\n  description,\n}: modalHeaderType): JSX.Element => {\n  return (\n    <DialogHeader>\n      <DialogTitle className=\"flex items-center\">{children}</DialogTitle>\n      <DialogDescription>{description}</DialogDescription>\n    </DialogHeader>\n  );\n};\n\nconst Footer: React.FC<{ children: ReactNode }> = ({ children }) => {\n  return <>{children}</>;\n};\ninterface BaseModalProps {\n  children: [\n    React.ReactElement<ContentProps>,\n    React.ReactElement<HeaderProps>,\n    React.ReactElement<TriggerProps>?,\n    React.ReactElement<FooterProps>?\n  ];\n  open?: boolean;\n  setOpen?: (open: boolean) => void;\n  size?:\n    | \"x-small\"\n    | \"smaller\"\n    | \"small\"\n    | \"medium\"\n    | \"large\"\n    | \"large-h-full\"\n    | \"small-h-full\"\n    | \"medium-h-full\";\n\n  disable?: boolean;\n  onChangeOpenModal?: (open?: boolean) => void;\n}\nfunction BaseModal({\n  open,\n  setOpen,\n  children,\n  size = \"large\",\n  onChangeOpenModal,\n}: BaseModalProps) {\n  const headerChild = React.Children.toArray(children).find(\n    (child) => (child as React.ReactElement).type === Header\n  );\n  const triggerChild = React.Children.toArray(children).find(\n    (child) => (child as React.ReactElement).type === Trigger\n  );\n  const ContentChild = React.Children.toArray(children).find(\n    (child) => (child as React.ReactElement).type === Content\n  );\n  const ContentFooter = React.Children.toArray(children).find(\n    (child) => (child as React.ReactElement).type === Footer\n  );\n\n  let minWidth: string;\n  let height: string;\n\n  switch (size) {\n    case \"x-small\":\n      minWidth = \"min-w-[20vw]\";\n      height = \"h-[10vh]\";\n      break;\n    case \"smaller\":\n      minWidth = \"min-w-[40vw]\";\n      height = \"h-[27vh]\";\n      break;\n    case \"small\":\n      minWidth = \"min-w-[40vw]\";\n      height = \"h-[40vh]\";\n      break;\n    case \"small-h-full\":\n      minWidth = \"min-w-[40vw]\";\n      break;\n    case \"medium\":\n      minWidth = \"min-w-[60vw]\";\n      height = \"h-[60vh]\";\n      break;\n    case \"medium-h-full\":\n      minWidth = \"min-w-[60vw]\";\n      break;\n    case \"large\":\n      minWidth = \"min-w-[80vw]\";\n      height = \"h-[80vh]\";\n      break;\n    case \"large-h-full\":\n      minWidth = \"min-w-[80vw]\";\n      break;\n    default:\n      minWidth = \"min-w-[80vw]\";\n      height = \"h-[80vh]\";\n      break;\n  }\n\n  useEffect(() => {\n    if (onChangeOpenModal) {\n      onChangeOpenModal(open);\n    }\n  }, [open]);\n\n  //UPDATE COLORS AND STYLE CLASSSES\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      {triggerChild}\n      <DialogContent className={minWidth}>\n        <div className=\"truncate-doubleline word-break-break-word\">\n          {headerChild}\n        </div>\n        <div className={`mt-2 flex flex-col ${height!} w-full `}>\n          {ContentChild}\n        </div>\n        {ContentFooter && (\n          <div className=\"flex flex-row-reverse\">{ContentFooter}</div>\n        )}\n      </DialogContent>\n    </Dialog>\n  );\n}\n\nBaseModal.Content = Content;\nBaseModal.Header = Header;\nBaseModal.Trigger = Trigger;\nBaseModal.Footer = Footer;\nexport default BaseModal;"
  },
  {
    "path": "src/frontend/platform/src/modals/codeAreaModal/index.tsx",
    "content": "import { DialogTitle } from \"@radix-ui/react-dialog\";\nimport \"ace-builds/src-noconflict/ace\";\nimport \"ace-builds/src-noconflict/ext-language_tools\";\nimport \"ace-builds/src-noconflict/mode-python\";\nimport \"ace-builds/src-noconflict/theme-github\";\nimport \"ace-builds/src-noconflict/theme-twilight\";\nimport { TerminalSquare } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport AceEditor from \"react-ace\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { darkContext } from \"../../contexts/darkContext\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { postValidateCode } from \"../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { APIClassType } from \"../../types/api\";\nimport BaseModal from \"../baseModal\";\n\nexport default function CodeAreaModal({\n  value,\n  setValue\n}: {\n  setValue: (value: string) => void;\n  value: string;\n  nodeClass: APIClassType;\n  setNodeClass: (Class: APIClassType) => void;\n}) {\n  const [code, setCode] = useState(value);\n  const { dark } = useContext(darkContext);\n  const { closePopUp, setCloseEdit } = useContext(PopUpContext);\n  const { setErrorData, setSuccessData } = useContext(alertContext);\n  const { t } = useTranslation()\n\n  function setModalOpen(x: boolean) {\n    if (x === false) {\n      setCloseEdit(\"codearea\");\n      closePopUp();\n    }\n  }\n\n  function handleClick() {\n    captureAndAlertRequestErrorHoc(postValidateCode(code)\n      .then((apiReturn) => {\n        if (apiReturn) {\n          let importsErrors = apiReturn.imports.errors;\n          let funcErrors = apiReturn.function.errors;\n          if (funcErrors.length === 0 && importsErrors.length === 0) {\n            setSuccessData({ title: t('code.codeReadyToRun') });\n            setValue(code);\n            setModalOpen(false);\n          } else {\n            if (funcErrors.length !== 0) {\n              setErrorData({\n                title: t('code.functionError'),\n                list: funcErrors,\n              });\n            }\n            if (importsErrors.length !== 0) {\n              setErrorData({\n                title: t('code.importsError'),\n                list: importsErrors,\n              });\n            }\n          }\n        } else {\n          setErrorData({\n            title: t('code.errorOccurred'),\n          });\n        }\n      }));\n  }\n\n  return (\n    <BaseModal open={true} setOpen={setModalOpen}>\n      <BaseModal.Header description={t('code.editPythonCodeDescription')}>\n        <DialogTitle className=\"flex items-center\">\n          <span className=\"pr-2\">{t('code.editCode')}</span>\n          <TerminalSquare\n            strokeWidth={1.5}\n            className=\"h-6 w-6 pl-1 text-primary\"\n            aria-hidden=\"true\"\n          />\n        </DialogTitle>\n      </BaseModal.Header>\n      <BaseModal.Content>\n        <div className=\"flex h-full w-full flex-col transition-all\">\n          <div className=\"h-full w-full\">\n            <AceEditor\n              value={code}\n              mode=\"python\"\n              highlightActiveLine={true}\n              showPrintMargin={false}\n              fontSize={14}\n              showGutter\n              enableLiveAutocompletion\n              theme={dark ? \"twilight\" : \"github\"}\n              name=\"CodeEditor\"\n              onChange={(value) => {\n                setCode(value);\n              }}\n              className=\"h-full w-full rounded-lg border-[1px] border-border custom-scroll\"\n            />\n          </div>\n          <div className=\"flex h-fit w-full justify-end\">\n            <Button className=\"mt-3\" onClick={handleClick} type=\"submit\">\n              {t('code.checkAndSave')}\n            </Button>\n          </div>\n        </div>\n      </BaseModal.Content>\n    </BaseModal>\n  );\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/modals/dictAreaModal/index.tsx",
    "content": "import AceEditor from \"react-ace\";\n// import \"ace-builds/webpack-resolver\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport BaseModal from \"../baseModal\";\nimport { BookMarked } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { alertContext } from \"../../contexts/alertContext\";\n\nexport default function DictAreaModal({\n    children,\n    onChange,\n    value,\n}): JSX.Element {\n    const [open, setOpen] = useState(false);\n\n    const codeRef = useRef(value);\n    const validataRef = useRef([])\n\n    const { t } = useTranslation()\n\n    const { setErrorData } = useContext(alertContext);\n    const handleCreate = () => {\n        if (validataRef.current.length) return setErrorData({\n            title: `${t('prompt')}:`,\n            list: [t('model.jsonFormatError')]\n        });\n        onChange(codeRef.current)\n        setOpen(false)\n    }\n\n    return (\n        <BaseModal size=\"medium-h-full\" open={open} setOpen={setOpen}>\n            <BaseModal.Trigger>{children}</BaseModal.Trigger>\n            <BaseModal.Header description={''}>\n                <span className=\"pr-2\">{t('code.editDictionary')}</span>\n                <BookMarked\n                    className=\"h-6 w-6 pl-1 text-primary \"\n                    aria-hidden=\"true\"\n                />\n            </BaseModal.Header>\n            <BaseModal.Content>\n                <div className=\"flex h-full w-full flex-col transition-all \">\n                    <AceEditor\n                        value={codeRef.current || '{}'}\n                        mode=\"json\"\n                        theme={\"twilight\"}\n                        highlightActiveLine={true}\n                        showPrintMargin={false}\n                        fontSize={14}\n                        showGutter\n                        enableLiveAutocompletion\n                        name=\"CodeEditor\"\n                        onChange={(value) => codeRef.current = value}\n                        onValidate={(e) => validataRef.current = e}\n                        className=\"h-[500px] w-full rounded-lg border-[1px] border-border custom-scroll\"\n                    />\n                    <div className=\"flex h-fit w-full justify-end\">\n                        <Button\n                            className=\"mt-3 rounded-full\"\n                            type=\"submit\"\n                            onClick={handleCreate}\n                        >\n                            {t('save')}\n                        </Button>\n                    </div>\n                </div>\n            </BaseModal.Content>\n        </BaseModal>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/modals/exportModal/index.tsx",
    "content": "import { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Download } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport EditFlowSettings from \"../../components/EditFlowSettingsComponent\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"../../components/bs-ui/dialog\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { TabsContext } from \"../../contexts/tabsContext\";\nimport { removeApiKeys } from \"../../utils\";\n\nexport default function ExportModal() {\n  const { t } = useTranslation()\n\n  const { closePopUp } = useContext(PopUpContext);\n\n  const { setErrorData } = useContext(alertContext);\n  const { flow, downloadFlow } = useContext(TabsContext);\n\n  function setModalOpen(x: boolean) {\n    if (x === false) {\n      setTimeout(() => {\n        closePopUp();\n      }, 300);\n    }\n  }\n  const [checked, setChecked] = useState(false);\n  const [name, setName] = useState(flow.name);\n  const [description, setDescription] = useState(flow.description);\n\n  const handleClose = () => {\n    if (name === '') return setErrorData({\n      title: t('code.keyInformationMissing'),\n      list: [\n        t('code.skillNameMissing')\n      ],\n    });\n    if (checked)\n      downloadFlow(\n        flow,\n        name,\n        description\n      );\n    else\n      downloadFlow(\n        removeApiKeys(flow),\n        name,\n        description\n      );\n\n    closePopUp();\n  }\n  return (\n    <Dialog open={true} onOpenChange={setModalOpen}>\n      <DialogTrigger asChild></DialogTrigger>\n      <DialogContent className=\"h-[420px] lg:max-w-[600px] \">\n        <DialogHeader>\n          <DialogTitle className=\"flex items-center\">\n            <span className=\"pr-2\">{t('code.export')}</span>\n            <Download\n              strokeWidth={1.5}\n              className=\"h-6 w-6 pl-1 text-foreground\"\n              aria-hidden=\"true\"\n            />\n          </DialogTitle>\n          <DialogDescription>{t('code.exportToJSON')}</DialogDescription>\n        </DialogHeader>\n\n        <EditFlowSettings\n          name={name}\n          description={description}\n          setName={setName}\n          setDescription={setDescription}\n        />\n        <div className=\"flex items-center space-x-2\">\n          <Checkbox\n            id=\"terms\"\n            onCheckedChange={(event: boolean) => {\n              setChecked(event);\n            }}\n          />\n          <label htmlFor=\"terms\" className=\"export-modal-save-api text-sm\">{t('code.useOwnAPIKeys')}</label>\n        </div>\n\n        <DialogFooter>\n          <Button\n            onClick={handleClose}\n            type=\"submit\"\n          >\n            {t('code.exportSkill')}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/modals/formModal/chatInput/index.tsx",
    "content": "import { Lock, LucideSend, Sparkles } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { classNames } from \"../../../utils\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport SpeechToTextComponent from \"@/components/voiceFunction/speechToText\";\n\nexport default function ChatInput({\n  lockChat,\n  chatValue,\n  sendMessage,\n  setChatValue,\n  inputRef,\n  noInput,\n}) {\n  const { data: linsightConfig } = useLinsightConfig();\n  // 新增状态管理输入锁定状态\n  const [inputLock, setInputLock] = useState({ locked: false });\n\n  const handleSpeechRecognition = (text) => {\n    console.log('识别到的文本:', text);\n    \n    // 修复未定义变量问题，完善锁定逻辑\n    if (lockChat || inputLock.locked || !inputRef.current) return;\n    \n    // 将识别结果追加到当前输入框内容后\n    const currentValue = inputRef.current.value;\n    const newValue = currentValue + text;\n    \n    // 更新输入框内容并触发更新\n    inputRef.current.value = newValue;\n    setChatValue(newValue); // 同步更新外部状态\n    \n    // 触发input事件以更新UI（如自动调整高度）\n    const event = new Event('input', { bubbles: true, cancelable: true });\n    inputRef.current.dispatchEvent(event);\n  };\n\n  useEffect(() => {\n    if (!lockChat && inputRef.current) {\n      inputRef.current.focus();\n    }\n  }, [lockChat, inputRef]);\n\n  useEffect(() => {\n    if (inputRef.current) {\n      inputRef.current.style.height = \"inherit\"; // 重置高度\n      // 自动调整高度以适应内容\n      inputRef.current.style.height = `${Math.min(inputRef.current.scrollHeight, 150)}px`;\n    }\n  }, [chatValue, inputRef]);\n\n  return (\n    <div className=\"relative\">\n      <textarea\n        onKeyDown={(event) => {\n          if (event.key === \"Enter\" && !lockChat && !event.shiftKey) {\n            sendMessage();\n            event.preventDefault(); // 阻止默认换行行为\n          }\n        }}\n        rows={1}\n        ref={inputRef}\n        disabled={lockChat || noInput}\n        style={{\n          resize: \"none\",\n          maxHeight: \"150px\",\n          overflow: inputRef.current && inputRef.current.scrollHeight > 150\n            ? \"auto\"\n            : \"hidden\"\n        }}\n        value={lockChat ? \"Thinking...\" : chatValue}\n        onChange={(e) => {\n          setChatValue(e.target.value);\n        }}\n        className={classNames(\n          lockChat\n            ? \"form-modal-lock-true bg-input\"\n            : noInput\n              ? \"form-modal-no-input bg-input\"\n              : \"form-modal-lock-false bg-background\",\n          \"form-modal-lockchat\"\n        )}\n        placeholder={\n          noInput\n            ? \"cannot find a chat input entry. Click to run your skill.\"\n            : \"send message...\"\n        }\n      />\n      <div className=\"form-modal-send-icon-position\">\n        {/* 仅在有ASR模型配置时显示语音输入组件 */}\n        <div   className={classNames(\n            \"form-modal-send-button\",\n          )}>  \n          {linsightConfig?.asr_model?.id && (\n          <SpeechToTextComponent onChange={handleSpeechRecognition} />\n          )}\n        </div>\n        <button\n          className={classNames(\n            \"form-modal-send-button\",\n            noInput\n              ? \"bg-indigo-600 text-background\"\n              : chatValue === \"\"\n                ? \"text-primary\"\n                : \"bg-emerald-600 text-background\"\n          )}\n          disabled={lockChat}\n          onClick={() => sendMessage()}\n        >\n          {lockChat ? (\n            <Lock className=\"form-modal-lock-icon\" aria-hidden=\"true\" />\n          ) : noInput ? (\n            <Sparkles className=\"form-modal-play-icon\" aria-hidden=\"true\" />\n          ) : (\n            <LucideSend className=\"form-modal-send-icon \" aria-hidden=\"true\" />\n          )}\n        </button>\n      </div>\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/modals/formModal/chatMessage/codeBlock/index.tsx",
    "content": "import { Download, Check, Clipboard } from 'lucide-react';\nimport { useState } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/cjs/styles/prism\";\nimport { copyText, programmingLanguages } from \"../../../../utils\";\n\ninterface Props {\n  language: string;\n  value: string;\n}\n\nexport function CodeBlock({ language, value }) {\n  const [isCopied, setIsCopied] = useState<Boolean>(false);\n\n  const copyToClipboard = () => {\n    setIsCopied(true);\n    copyText(value).then(() => {\n      setTimeout(() => {\n        setIsCopied(false);\n      }, 2000);\n    })\n  };\n  const downloadAsFile = () => {\n    const fileExtension = programmingLanguages[language] || \".file\";\n    const suggestedFileName = `${\"generated-code\"}${fileExtension}`;\n    const fileName = window.prompt(\"enter file name\", suggestedFileName);\n\n    if (!fileName) {\n      // user pressed cancel on prompt\n      return;\n    }\n\n    const blob = new Blob([value], { type: \"text/plain\" });\n    const url = URL.createObjectURL(blob);\n    const link = document.createElement(\"a\");\n    link.download = fileName;\n    link.href = url;\n    link.style.display = \"none\";\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n    URL.revokeObjectURL(url);\n  };\n  return (\n    <div className=\"codeblock font-sans text-[16px]\">\n      <div className=\"code-block-modal bg-gray-50\">\n        <span className=\"code-block-modal-span\">{language}</span>\n\n        <div className=\"flex items-center\">\n          <button className=\"code-block-modal-button\" onClick={copyToClipboard}>\n            {isCopied ? <Check size={18} /> : <Clipboard size={18} />}\n            {isCopied ? \"Copied!\" : \"Copy code\"}\n          </button>\n          <button className=\"code-block-modal-button\" onClick={downloadAsFile}>\n            <Download size={18} />\n          </button>\n        </div>\n      </div>\n\n      <SyntaxHighlighter\n        className=\"overflow-auto\"\n        language={language}\n        style={oneDark}\n        customStyle={{ margin: 0 }}\n      >\n        {value}\n      </SyntaxHighlighter>\n    </div>\n  );\n}\nCodeBlock.displayName = \"CodeBlock\";\n"
  },
  {
    "path": "src/frontend/platform/src/modals/formModal/chatMessage/index.tsx",
    "content": "import MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\";\nimport Convert from \"ansi-to-html\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useMemo, useState } from \"react\";\nimport MaleTechnology from \"../../../assets/male-technologist.png\";\nimport Robot from \"../../../assets/robot.png\";\nimport SanitizedHTMLWrapper from \"../../../components/SanitizedHTMLWrapper\";\nimport { THOUGHTS_ICON } from \"../../../constants\";\nimport { ChatMessageType } from \"../../../types/chat\";\nimport { classNames } from \"../../../utils\";\nimport FileCard from \"../fileComponent\";\nimport { AudioPlayComponent } from \"@/components/voiceFunction/audioPlayButton\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nexport default function ChatMessage({\n  chat,\n  lockChat,\n  lastMessage,\n  flowType\n}: {\n  chat: ChatMessageType;\n  lockChat: boolean;\n  lastMessage: boolean;\n}) {\n  const convert = new Convert({ newline: true });\n  const [hidden, setHidden] = useState(true);\n  const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n\n  const template = chat.template;\n  const [promptOpen, setPromptOpen] = useState(false);\n  return (\n    <div\n      className={classNames(\"form-modal-chat-position\", chat.isSend ? \"\" : \" \")}\n    >\n      {/* 头像 */}\n      <div className={classNames(\"form-modal-chatbot-icon \")}>\n        {!chat.isSend ? (\n          <div className=\"form-modal-chat-image\">\n            <div className=\"form-modal-chat-bot-icon \">\n              <img\n                src={Robot}\n                className=\"form-modal-chat-icon-img\"\n                alt=\"robot_image\"\n              />\n            </div>\n          </div>\n        ) : (\n          <div className=\"form-modal-chat-image\">\n            <div className=\"form-modal-chat-user-icon \">\n              <img\n                src={MaleTechnology}\n                className=\"form-modal-chat-icon-img\"\n                alt=\"male_technology\"\n              />\n            </div>\n          </div>\n        )}\n      </div>\n      {!chat.isSend ? (\n        <div className=\"form-modal-chat-text-position group\">\n          <div className=\"form-modal-chat-text\">\n            {hidden && chat.thought && chat.thought !== \"\" && (\n              <div\n                onClick={() => setHidden((prev) => !prev)}\n                className=\"form-modal-chat-icon-div\"\n              >\n                <THOUGHTS_ICON className=\"form-modal-chat-icon\" />\n              </div>\n            )}\n            {chat.thought && chat.thought !== \"\" && !hidden && (\n              <SanitizedHTMLWrapper\n                className=\" form-modal-chat-thought\"\n                content={convert.toHtml(chat.thought)}\n                onClick={() => setHidden((prev) => !prev)}\n              />\n            )}\n            {chat.thought && chat.thought !== \"\" && !hidden && <br></br>}\n            <div className=\"w-full\">\n              <div className=\"w-full dark:text-white\">\n                <div className=\"w-full\">\n                  {useMemo(\n                    () => (\n                      <MessageMarkDown message={chat.message.toString()} flowType={flowType} chat ={chat}/>\n                    ),\n                    [chat.message, chat.message.toString()]\n                  )}\n                </div>\n                {chat.files && (\n                  <div className=\"my-2 w-full\">\n                    {chat.files.map((file, index) => {\n                      return (\n                        <div key={index} className=\"my-2 w-full\">\n                          <FileCard\n                            fileName={\"Generated File\"}\n                            fileType={file.data_type}\n                            content={file.data}\n                          />\n                        </div>\n                      );\n                    })}\n                  </div>\n                )}\n              </div>\n            </div>\n          </div>\n        </div>\n      ) : (\n        <div>\n          {template ? (\n            <>\n              <button\n                className=\"form-modal-initial-prompt-btn\"\n                onClick={() => {\n                  setPromptOpen((old) => !old);\n                }}\n              >\n                Display Prompt\n                <ChevronDown\n                  className={\n                    \"h-3 w-3 transition-all \" + (promptOpen ? \"rotate-180\" : \"\")\n                  }\n                />\n              </button>\n              <span className=\"prose inline-block break-words text-primary dark:prose-invert\">\n                {promptOpen\n                  ? template?.split(\"\\n\")?.map((line, index) => {\n                    const regex = /{([^}]+)}/g;\n                    let match;\n                    let parts = [];\n                    let lastIndex = 0;\n                    while ((match = regex.exec(line)) !== null) {\n                      // Push text up to the match\n                      if (match.index !== lastIndex) {\n                        parts.push(line.substring(lastIndex, match.index));\n                      }\n                      // Push div with matched text\n                      if (chat.message[match[1]]) {\n                        parts.push(\n                          <span className=\"chat-message-highlight\">\n                            {chat.message[match[1]]}\n                          </span>\n                        );\n                      }\n\n                      // Update last index\n                      lastIndex = regex.lastIndex;\n                    }\n                    // Push text after the last match\n                    if (lastIndex !== line.length) {\n                      parts.push(line.substring(lastIndex));\n                    }\n                    return <p>{parts}</p>;\n                  })\n                  : chat.message[chat.chatKey]}\n              </span>\n            </>\n          ) : (\n            <span>{chat.message[chat.chatKey]}</span>\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/modals/formModal/fileComponent/index.tsx",
    "content": "import * as base64js from \"base64-js\";\nimport { DownloadCloud, File } from \"lucide-react\";\nimport { useState } from \"react\";\n\nexport default function FileCard({ fileName, content, fileType }) {\n  const handleDownload = () => {\n    const byteArray = new Uint8Array(base64js.toByteArray(content));\n    const blob = new Blob([byteArray], { type: \"application/octet-stream\" });\n    const url = URL.createObjectURL(blob);\n    const link = document.createElement(\"a\");\n    link.href = url;\n    link.download = fileName + \".png\";\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n    URL.revokeObjectURL(url);\n  };\n  const [isHovered, setIsHovered] = useState(false);\n  function handleMouseEnter() {\n    setIsHovered(true);\n  }\n  function handleMouseLeave() {\n    setIsHovered(false);\n  }\n\n  if (fileType === \"image\") {\n    return (\n      <div\n        className=\"relative h-1/4 w-1/4\"\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n      >\n        <img\n          src={`data:image/png;base64,${content}`}\n          alt=\"generated image\"\n          className=\"h-full  w-full rounded-lg\"\n        />\n        {isHovered && (\n          <div className={`file-card-modal-image-div `}>\n            <button\n              className=\"file-card-modal-image-button \"\n              onClick={handleDownload}\n            >\n              <DownloadCloud className=\"h-5 w-5 text-current hover:scale-110\" />\n            </button>\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <button onClick={handleDownload} className=\"file-card-modal-button\">\n      <div className=\"file-card-modal-div\">\n        {\" \"}\n        {fileType === \"image\" ? (\n          <img\n            src={`data:image/png;base64,${content}`}\n            alt=\"\"\n            className=\"h-8 w-8\"\n          />\n        ) : (\n          <File className=\"h-8 w-8\" />\n        )}\n        <div className=\"file-card-modal-footer\">\n          {\" \"}\n          <div className=\"file-card-modal-name\">{fileName}</div>\n          <div className=\"file-card-modal-type\">{fileType}</div>\n        </div>\n        <DownloadCloud className=\"ml-auto h-6 w-6 text-current\" />\n      </div>\n    </button>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/modals/formModal/index.tsx",
    "content": "import { Eraser, TerminalSquare, Variable } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { typesContext } from \"../../contexts/typesContext\";\nimport { sendAllProps } from \"../../types/api\";\nimport { ChatMessageType } from \"../../types/chat\";\nimport { FlowType } from \"../../types/flow\";\nimport { classNames, validateNodes } from \"../../utils\";\nimport ChatInput from \"./chatInput\";\nimport ChatMessage from \"./chatMessage\";\n\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { useTranslation } from \"react-i18next\";\nimport { Badge } from \"../../components/bs-ui/badge\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"../../components/bs-ui/dialog\";\nimport { Textarea } from \"../../components/bs-ui/input\";\nimport ToggleShadComponent from \"../../components/toggleShadComponent\";\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"../../components/ui/accordion\";\nimport { THOUGHTS_ICON } from \"../../constants\";\nimport { locationContext } from \"../../contexts/locationContext\";\nimport { TabsContext } from \"../../contexts/tabsContext\";\n\nexport default function FormModal({\n  flow,\n  open,\n  setOpen,\n}: {\n  open: boolean;\n  setOpen: Function;\n  flow: FlowType;\n}) {\n\n  const { tabsState, setTabsState } = useContext(TabsContext);\n  const [chatValue, setChatValue] = useState(() => {\n    try {\n      const { formKeysData } = tabsState[flow.id];\n      if (!formKeysData) {\n        throw new Error(\"formKeysData is undefined\");\n      }\n      const inputKeys = formKeysData.input_keys.filter(el => !el.type)[0] || {};\n      const handleKeys = formKeysData.handle_keys;\n\n      const keyToUse = Object.keys(inputKeys).find(\n        (k) => !handleKeys.some((j) => j === k) && inputKeys[k] === \"\"\n      );\n\n      return inputKeys[keyToUse];\n    } catch (error) {\n      console.error(error);\n      // return a sensible default or `undefined` if no default is possible\n      return undefined;\n    }\n  });\n\n  const [chatHistory, setChatHistory] = useState<ChatMessageType[]>([]);\n  const { reactFlowInstance } = useContext(typesContext);\n  const { setErrorData } = useContext(alertContext);\n  const ws = useRef<WebSocket | null>(null);\n  const [lockChat, setLockChat] = useState(false);\n  const isOpen = useRef(open);\n  const messagesRef = useRef(null);\n  const id = useRef(flow.id);\n  const tabsStateFlowId = tabsState[flow.id];\n  const tabsStateFlowIdFormKeysData = tabsStateFlowId.formKeysData;\n  const [chatKey, setChatKey] = useState(''\n    // tabsState[flow.id].formKeysData.input_keys.find()\n    // Object.keys(tabsState[flow.id].formKeysData.input_keys).find(\n    //   (k) =>\n    //     !tabsState[flow.id].formKeysData.handle_keys.some((j) => j === k) &&\n    //     tabsState[flow.id].formKeysData.input_keys[k] === \"\"\n    // )\n  );\n\n  useEffect(() => {\n    if (messagesRef.current) {\n      messagesRef.current.scrollTop = messagesRef.current.scrollHeight;\n    }\n  }, [chatHistory]);\n\n  useEffect(() => {\n    isOpen.current = open;\n  }, [open]);\n  useEffect(() => {\n    id.current = flow.id;\n  }, [flow.id, tabsStateFlowId, tabsStateFlowIdFormKeysData]);\n\n  var isStream = false;\n\n  const addChatHistory = (\n    message: string | Object,\n    isSend: boolean,\n    chatKey: string,\n    template?: string,\n    thought?: string,\n    files?: Array<any>\n  ) => {\n    setChatHistory((old) => {\n      let newChat = cloneDeep(old);\n      if (files) {\n        newChat.push({ message, isSend, files, thought, chatKey });\n      } else if (thought) {\n        newChat.push({ message, isSend, thought, chatKey });\n      } else if (template) {\n        newChat.push({ message, isSend, chatKey, template });\n      } else {\n        newChat.push({ message, isSend, chatKey });\n      }\n      return newChat;\n    });\n  };\n\n  //add proper type signature for function\n\n  function updateLastMessage({\n    str,\n    thought,\n    reasoning_log,\n    end = false,\n    files,\n  }: {\n    str?: string;\n    thought?: string;\n    // end param default is false\n    end?: boolean;\n    files?: Array<any>;\n  }) {\n    setChatHistory((old) => {\n      if (!old.length) return old // 拒绝 chatHistory无数据时接收数据\n      let newChat = [...old];\n      let prevChat = newChat[newChat.length - 2]\n      // let lastChat = newChat[newChat.length - 1]\n      // 上一条log时，当前条与上一条合并(确保log在一条中)\n      if (end && !prevChat?.message && prevChat?.thought) {\n        prevChat.message += str || '';\n        prevChat.thought += thought || '';\n        newChat.pop()\n        return newChat;\n      }\n      // 最后一条与上一条msg相同，合并处理\n      if (end && str && newChat.length > 1 && str === prevChat.message) {\n        newChat.pop()\n        return newChat\n      }\n      // 过滤空消息\n      if (end && !newChat[newChat.length - 1].message && !str) {\n        newChat.pop()\n        return newChat\n      }\n      if (str) {\n        if (end) {\n          newChat[newChat.length - 1].message = str;\n        } else {\n          newChat[newChat.length - 1].message =\n            newChat[newChat.length - 1].message + str;\n        }\n      }\n      if (reasoning_log) {\n        newChat[newChat.length - 1].thought = (newChat[newChat.length - 1].thought || '') + reasoning_log;\n      }\n      if (thought) {\n        newChat[newChat.length - 1].thought = thought;\n      }\n      if (files) {\n        newChat[newChat.length - 1].files = files;\n      }\n      return newChat;\n    });\n  }\n\n  function handleOnClose(event: CloseEvent) {\n    if (isOpen.current) {\n      setErrorData({ title: 'ws is close;' + event.reason });\n      setTimeout(() => {\n        // connectWS();\n        setLockChat(false);\n      }, 1000);\n    }\n  }\n\n  const { appConfig } = useContext(locationContext)\n\n  function getWebSocketUrl(chatId, isDevelopment = false) {\n    const isSecureProtocol = window.location.protocol === \"https:\";\n    const webSocketProtocol = isSecureProtocol ? \"wss\" : \"ws\";\n    const host = appConfig.websocketHost || window.location.host // isDevelopment ? \"localhost:7860\" : window.location.host;\n    const chatEndpoint = `${__APP_ENV__.BASE_URL}/api/v1/chat/${chatId}`;\n\n    const token = localStorage.getItem(\"ws_token\") || '';\n    return `${isDevelopment ? \"ws\" : webSocketProtocol\n      }://${host}${chatEndpoint}?t=${token}`;\n  }\n\n  function handleWsMessage(data: any) {\n    if (Array.isArray(data)) {\n      return []\n    }\n    if (data.type === \"start\") {\n      addChatHistory(\"\", false, chatKey);\n      isStream = true;\n    }\n\n    // deepseek\n    let message = ''\n    let reasoning_log = data.message.reasoning_content || ''\n    if (typeof data.message !== 'string' && data.message && 'reasoning_content' in data.message) {\n      message = (data.message.content || '')\n      reasoning_log = (data.message.reasoning_content || '')\n    } else {\n      message = data.message\n    }\n    if (data.type === \"end\") {\n      if (data.message) {\n        updateLastMessage({ str: message, end: true });\n      }\n      if (data.intermediate_steps) {\n        updateLastMessage({\n          str: message,\n          reasoning_log,\n          thought: data.intermediate_steps,\n          end: true,\n        });\n      }\n      if (data.files) {\n        updateLastMessage({\n          end: true,\n          files: data.files,\n        });\n      }\n\n      setLockChat(false);\n      isStream = false;\n    }\n    if (data.type === \"stream\" && isStream) {\n      updateLastMessage({ str: message, reasoning_log, thought: data.intermediate_steps });\n    }\n  }\n\n  function connectWS() {\n    try {\n      const urlWs = getWebSocketUrl(\n        id.current,\n        process.env.NODE_ENV === \"development\"\n      );\n      const newWs = new WebSocket(urlWs);\n      newWs.onopen = () => {\n        console.log(\"WebSocket connection established!\");\n      };\n      newWs.onmessage = (event) => {\n        const data = JSON.parse(event.data);\n        handleWsMessage(data);\n        //get chat history\n      };\n      newWs.onclose = (event) => {\n        handleOnClose(event);\n      };\n      newWs.onerror = (ev) => {\n        console.log(ev, \"error\");\n        if (flow.id === \"\") {\n          // connectWS();\n        } else {\n          setErrorData({\n            title: \"Network connection error, please try the following methods:\",\n            list: [\n              \"Refresh the page.\",\n              \"Use a new flow tab.\",\n              \"Check if the background is running.\"\n            ],\n          });\n        }\n      };\n      ws.current = newWs;\n    } catch (error) {\n      if (flow.id === \"\") {\n        // connectWS();\n      }\n      console.log(error);\n    }\n  }\n\n  useEffect(() => {\n    connectWS();\n    return () => {\n      if (ws.current) {\n        ws.current.close();\n      }\n    };\n    // do not add connectWS on dependencies array\n  }, []);\n\n  useEffect(() => {\n    if (\n      ws.current &&\n      (ws.current.readyState === ws.current.CLOSED ||\n        ws.current.readyState === ws.current.CLOSING)\n    ) {\n      connectWS();\n      setLockChat(false);\n    }\n    // do not add connectWS on dependencies array\n  }, [lockChat]);\n\n  async function sendAll(data: sendAllProps) {\n    try {\n      if (ws) {\n        ws.current.send(JSON.stringify(data));\n      }\n    } catch (error) {\n      setErrorData({\n        title: \"There was an error sending the message\",\n        list: [error.message],\n      });\n      setChatValue(data.inputs);\n      connectWS();\n    }\n  }\n\n  // 消息滚动\n  useEffect(() => {\n    // if (ref.current) ref.current.scrollIntoView({ behavior: \"smooth\" }); // iframe会影响父级滚动\n  }, [chatHistory]);\n\n  const ref = useRef(null);\n\n  useEffect(() => {\n    if (open && ref.current) {\n      ref.current.focus();\n    }\n  }, [open]);\n\n  function sendMessage() {\n    let nodeValidationErrors = validateNodes(reactFlowInstance);\n    if (nodeValidationErrors.length === 0) {\n      let inputs: any = tabsState[id.current].formKeysData.input_keys;\n      inputs = inputs.find((el: any) => !el.type) || {}\n      // const chatKey = Object.keys(inputs)[0];\n\n      // if (!chatKey) return setErrorData({ title: \"提示\", list: [\"至少选择一个inputkey\"] });\n      // if (!inputs[chatKey]) return setErrorData({ title: \"提示\", list: [\"所选inputkey的值不能为空\"] });\n      setLockChat(true);\n      const message = inputs;\n      addChatHistory(\n        message,\n        true,\n        chatKey,\n        tabsState[flow.id].formKeysData.template\n      );\n      sendAll({\n        ...reactFlowInstance.toObject(),\n        flow_id: flow.id,\n        inputs: inputs,\n        chatHistory,\n        name: flow.name,\n        description: flow.description,\n      });\n      setTabsState((old) => {\n        if (!chatKey) return old;\n        let newTabsState = cloneDeep(old);\n        // newTabsState[id.current].formKeysData.input_keys[chatKey] = \"\";\n        return newTabsState;\n      });\n      setChatValue(\"\");\n    } else {\n      setErrorData({\n        title: \"Oops! Looks like you missed some required information:\",\n        list: nodeValidationErrors,\n      });\n    }\n  }\n  function clearChat() {\n    setChatHistory([]);\n    ws.current.send(JSON.stringify({ clear_history: true }));\n    if (lockChat) setLockChat(false);\n  }\n\n  function setModalOpen(x: boolean) {\n    setOpen(x);\n  }\n\n  function handleOnCheckedChange(checked: boolean, i: string) {\n    if (checked === true) {\n      setChatKey(i);\n      const input = tabsState[flow.id].formKeysData.input_keys.find((el: any) => !el.type) || {}\n      setChatValue(input[i]);\n    } else {\n      setChatKey(null);\n      setChatValue(\"\");\n    }\n  }\n\n  const input_keys = useMemo(() => {\n    return tabsState[flow.id].formKeysData.input_keys.find((el: any) => !el.type) || {}\n  }, [tabsState])\n\n  const { t } = useTranslation()\n\n  return (\n    <Dialog open={open} onOpenChange={setModalOpen}>\n      <DialogTrigger className=\"hidden\"></DialogTrigger>\n      {tabsState[flow.id].formKeysData && (\n        <DialogContent className=\"min-w-[80vw]\">\n          <DialogHeader>\n            <DialogTitle className=\"flex items-center\">\n              <span className=\"pr-2\">Chat</span>\n              <TerminalSquare\n                className=\"h-6 w-6 pl-1 text-gray-800 dark:text-white\"\n                aria-hidden=\"true\"\n              />\n            </DialogTitle>\n            <DialogDescription>{t('chat.chatDialogTip')}</DialogDescription>\n          </DialogHeader>\n\n          <div className=\"form-modal-iv-box \">\n            <div className=\"form-modal-iv-size\">\n              <div className=\"file-component-arrangement\">\n                <Variable className=\" file-component-variable\"></Variable>\n                <span className=\"file-component-variables-span text-md\">\n                  Input Variables\n                </span>\n              </div>\n              <div className=\"file-component-variables-title\">\n                <div className=\"file-component-variables-div\">\n                  <span className=\"text-sm font-medium text-primary\">Name</span>\n                </div>\n                <div className=\"file-component-variables-div\">\n                  <span className=\"text-sm font-medium text-primary\">\n                    Chat Input\n                  </span>\n                </div>\n              </div>\n              <Accordion type=\"multiple\" className=\"w-full\">\n                {Object.keys(input_keys).map(\n                  (i, k) => (\n                    <div className=\"file-component-accordion-div\" key={k}>\n                      <AccordionItem className=\"w-full\" key={k} value={i}>\n                        <AccordionTrigger className=\"flex gap-2\">\n                          <div className=\"file-component-badge-div\">\n                            <Badge variant=\"gray\" size=\"md\">\n                              {i}\n                            </Badge>\n\n                            <div\n                              className=\"-mb-1\"\n                              onClick={(event) => {\n                                event.stopPropagation();\n                              }}\n                            >\n                              <ToggleShadComponent\n                                enabled={chatKey === i}\n                                setEnabled={(value) =>\n                                  handleOnCheckedChange(value, i)\n                                }\n                                size=\"small\"\n                                disabled={tabsState[\n                                  id.current\n                                ].formKeysData.handle_keys.some((t) => t === i)}\n                              />\n                            </div>\n                          </div>\n                        </AccordionTrigger>\n                        <AccordionContent>\n                          <div className=\"file-component-tab-column\">\n                            {tabsState[\n                              id.current\n                            ].formKeysData.handle_keys.some((t) => t === i) && (\n                                <div className=\"font-normal text-muted-foreground \">\n                                  Source: Component\n                                </div>\n                              )}\n                            <Textarea\n                              value={\n                                input_keys[i]\n                              }\n                              onChange={(e) => {\n                                setTabsState((old) => {\n                                  let newTabsState = cloneDeep(old);\n                                  const input = newTabsState[id.current].formKeysData.input_keys.find((el: any) => !el.type) || {}\n                                  input[i] = e.target.value;\n                                  return newTabsState;\n                                });\n                              }}\n                              disabled={chatKey === i}\n                              placeholder=\"Enter text...\"\n                            ></Textarea>\n                          </div>\n                        </AccordionContent>\n                      </AccordionItem>\n                    </div>\n                  )\n                )}\n                {tabsState[id.current].formKeysData.memory_keys.map((i, k) => (\n                  <AccordionItem key={k} value={i}>\n                    <div className=\"tab-accordion-badge-div group\">\n                      <div className=\"group-hover:underline\">\n                        <Badge size=\"md\" variant=\"gray\">\n                          {i}\n                        </Badge>\n                      </div>\n                      Used as memory key\n                    </div>\n                  </AccordionItem>\n                ))}\n              </Accordion>\n            </div>\n            <div className=\"eraser-column-arrangement\">\n              <div className=\"eraser-size\">\n                <div className=\"eraser-position\">\n                  <button disabled={lockChat} onClick={() => clearChat()}>\n                    <Eraser\n                      className={classNames(\n                        \"h-5 w-5\",\n                        lockChat\n                          ? \"animate-pulse text-primary\"\n                          : \"text-primary hover:text-gray-600\"\n                      )}\n                      aria-hidden=\"true\"\n                    />\n                  </button>\n                </div>\n                <div ref={messagesRef} className=\"chat-message-div\">\n                  {chatHistory.length > 0 ? (\n                    chatHistory.map((c, i) => (\n                      <ChatMessage\n                        lockChat={lockChat}\n                        chat={c}\n                        flowType={flow.flow_type}\n                        lastMessage={\n                          chatHistory.length - 1 === i ? true : false\n                        }\n                        key={i}\n                      />\n                    ))\n                  ) : (\n                    <div className=\"chat-alert-box\">\n                      <span>\n                        👋{\" \"}\n                      </span>\n                      <br />\n                      <div className=\"bisheng-chat-desc\">\n                        <span className=\"bisheng-chat-desc-span\">\n                          Start the conversation and click on the agent's analysis process{\" \"}\n                          <span>\n                            <THOUGHTS_ICON className=\"mx-1 inline h-5 w-5 animate-bounce \" />\n                          </span>{\" \"}\n                          to inspect the linking process.。\n                        </span>\n                      </div>\n                    </div>\n                  )}\n                  <div ref={ref}></div>\n                </div>\n                <div className=\"bisheng-chat-input-div\">\n                  <div className=\"bisheng-chat-input\">\n                    <ChatInput\n                      chatValue={chatValue}\n                      noInput={!chatKey}\n                      lockChat={lockChat}\n                      sendMessage={sendMessage}\n                      setChatValue={(value) => {\n                        setChatValue(value);\n                        setTabsState((old) => {\n                          let newTabsState = cloneDeep(old);\n                          const input = newTabsState[id.current].formKeysData.input_keys.find((el: any) => !el.type) || {}\n                          input[chatKey] = value;\n                          return newTabsState;\n                        });\n                      }}\n                      inputRef={ref}\n                    />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </DialogContent>\n      )}\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/modals/genericModal/index.tsx",
    "content": "import { FileText, Variable } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport SanitizedHTMLWrapper from \"../../components/SanitizedHTMLWrapper\";\nimport ShadTooltip from \"../../components/ShadTooltipComponent\";\nimport { Badge } from \"../../components/bs-ui/badge\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport { DialogTitle } from \"../../components/bs-ui/dialog\";\nimport { Textarea } from \"../../components/bs-ui/input\";\nimport {\n  MAX_WORDS_HIGHLIGHT\n} from \"../../constants\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { darkContext } from \"../../contexts/darkContext\";\nimport { PopUpContext } from \"../../contexts/popUpContext\";\nimport { postValidatePrompt } from \"../../controllers/API\";\nimport { APIClassType } from \"../../types/api\";\nimport {\n  INVALID_CHARACTERS,\n  TypeModal,\n  classNames,\n  getRandomKeyByssmm,\n  regexHighlight,\n  varHighlightHTML,\n} from \"../../utils\";\nimport BaseModal from \"../baseModal\";\n\nexport default function GenericModal({\n  field_name = \"\",\n  value,\n  setValue,\n  buttonText,\n  modalTitle,\n  type,\n  nodeClass,\n  setNodeClass,\n}: {\n  field_name?: string;\n  setValue: (value: string) => void;\n  value: string;\n  buttonText: string;\n  modalTitle: string;\n  type: number;\n  nodeClass?: APIClassType;\n  setNodeClass?: (Class: APIClassType, val: any) => void;\n}) {\n  const [myButtonText] = useState(buttonText);\n  const [myModalTitle] = useState(modalTitle);\n  const [myModalType] = useState(type);\n  const [inputValue, setInputValue] = useState(value);\n  const [isEdit, setIsEdit] = useState(true);\n  const [wordsHighlight, setWordsHighlight] = useState([]);\n  const { dark } = useContext(darkContext);\n  const { setErrorData, setSuccessData, setNoticeData } =\n    useContext(alertContext);\n  const { closePopUp, setCloseEdit } = useContext(PopUpContext);\n  const ref = useRef();\n  function setModalOpen(x: boolean) {\n    if (x === false) {\n      setCloseEdit(\"generic\");\n      closePopUp();\n    }\n  }\n  const divRef = useRef(null);\n  const divRefPrompt = useRef(null);\n\n  function checkVariables(valueToCheck) {\n    const regex = /\\{([^{}]+)\\}/g;\n    const matches = [];\n    let match;\n    while ((match = regex.exec(valueToCheck))) {\n      matches.push(`{${match[1]}}`);\n    }\n\n    let invalid_chars = [];\n    let fixed_variables = [];\n    let input_variables = matches;\n    for (let variable of input_variables) {\n      let new_var = variable;\n      for (let char of INVALID_CHARACTERS) {\n        if (variable.includes(char)) {\n          invalid_chars.push(new_var);\n        }\n      }\n      fixed_variables.push(new_var);\n      if (new_var !== variable) {\n        const index = input_variables.indexOf(variable);\n        if (index !== -1) {\n          input_variables.splice(index, 1, new_var);\n        }\n      }\n    }\n\n    const filteredWordsHighlight = matches.filter(\n      (word) => !invalid_chars.includes(word)\n    );\n\n    setWordsHighlight(filteredWordsHighlight);\n  }\n\n  useEffect(() => {\n    if (type === TypeModal.PROMPT && inputValue && inputValue != \"\") {\n      checkVariables(inputValue);\n    }\n  }, [inputValue, type]);\n\n  const coloredContent = (inputValue || \"\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(regexHighlight, varHighlightHTML({ name: \"$1\" }))\n    .replace(/\\n/g, \"<br />\");\n\n  const TextAreaContentView = () => {\n    return (\n      <SanitizedHTMLWrapper\n        className={getClassByNumberLength()}\n        content={coloredContent}\n        onClick={() => {\n          setIsEdit(true);\n        }}\n        suppressWarning={true}\n      />\n    );\n  };\n\n  function getClassByNumberLength() {\n    let sumOfCaracteres: number = 0;\n    wordsHighlight.forEach((element) => {\n      sumOfCaracteres = sumOfCaracteres + element.replace(/[{}]/g, \"\").length;\n    });\n    return sumOfCaracteres > MAX_WORDS_HIGHLIGHT\n      ? \"code-highlight\"\n      : \"code-nohighlight\";\n  }\n\n  function validatePrompt(closeModal: boolean) {\n         setIsEdit(false);\n          setSuccessData({\n            title: \"Prompt ready\",\n          });\n          setModalOpen(closeModal);\n          setValue(inputValue);\n    // postValidatePrompt(field_name, inputValue, nodeClass)\n    //   .then((apiReturn) => {\n    //     if (apiReturn) {\n    //       setNodeClass(apiReturn?.frontend_node, inputValue);\n    //       // let inputVariables = apiReturn.input_variables ?? [];\n    //       // if (inputVariables && inputVariables.length === 0) {\n    //       //   setIsEdit(true);\n    //       //   setNoticeData({\n    //       //     title: \"Your template has no variables.\",\n    //       //   });\n    //       // } else {\n    //       setIsEdit(false);\n    //       setSuccessData({\n    //         title: \"Prompt ready\",\n    //       });\n    //       setModalOpen(closeModal);\n    //       setValue(inputValue);\n    //       // }\n    //     } else {\n    //       setIsEdit(true);\n    //       setErrorData({\n    //         title: \"An error occurred, please try again.\",\n    //       });\n    //     }\n    //   })\n    //   .catch((error) => {\n    //     console.log(error);\n    //     setIsEdit(true);\n    //     return setErrorData({\n    //       title: \"This prompt has an issue, please review.\",\n    //       list: [error?.response?.data?.detail],\n    //     });\n    //   });\n  }\n\n  return (\n    <BaseModal open={true} setOpen={setModalOpen}>\n      <BaseModal.Header\n        description={(() => {\n          switch (myModalTitle) {\n            case \"Edit Text\":\n              return \"edit text\";\n\n            case \"Edit Prompt\":\n              return \"Create prompts. Prompts can help guide the behavior of the language model.\";\n\n            default:\n              return null;\n          }\n        })()}\n      >\n        <DialogTitle className=\"flex items-center\">\n          <span className=\"pr-2\">{myModalTitle}</span>\n          <FileText\n            strokeWidth={1.5}\n            className=\"h-6 w-6 pl-1 text-primary \"\n            aria-hidden=\"true\"\n          />\n        </DialogTitle>\n      </BaseModal.Header>\n      <BaseModal.Content>\n        <div className=\"flex h-full flex-col\">\n          <div\n            className={classNames(\n              !isEdit ? \"rounded-lg border\" : \"\",\n              \"flex h-full w-full\"\n            )}\n          >\n            {type === TypeModal.PROMPT && isEdit ? (\n              <Textarea\n                ref={divRefPrompt}\n                className=\"form-input h-full w-full rounded-lg custom-scroll focus-visible:ring-1\"\n                value={inputValue}\n                onBlur={() => {\n                  setIsEdit(false);\n                }}\n                autoFocus\n                onChange={(e) => {\n                  setInputValue(e.target.value);\n                  checkVariables(e.target.value);\n                }}\n                placeholder=\"Type message here.\"\n              />\n            ) : type === TypeModal.PROMPT && !isEdit ? (\n              <TextAreaContentView />\n            ) : type !== TypeModal.PROMPT ? (\n              <Textarea\n                ref={ref}\n                className=\"form-input h-full w-full rounded-lg focus-visible:ring-1\"\n                value={inputValue}\n                onChange={(e) => {\n                  setInputValue(e.target.value);\n                }}\n                placeholder=\"Type message here.\"\n              />\n            ) : (\n              <></>\n            )}\n          </div>\n\n          <div className=\"mt-6 flex h-fit w-full items-end justify-between\">\n            <div className=\"mb-auto flex-1\">\n              {type === TypeModal.PROMPT && (\n                <div className=\" mr-2\">\n                  <div\n                    ref={divRef}\n                    className=\"max-h-20 overflow-y-auto custom-scroll\"\n                  >\n                    <div className=\"flex flex-wrap items-center\">\n                      <Variable className=\" -ml-px mr-1 flex h-4 w-4 text-primary\"></Variable>\n                      <span className=\"text-md font-semibold text-primary\">\n                        Prompt word variable.:\n                      </span>\n\n                      {wordsHighlight.map((word, index) => (\n                        <ShadTooltip\n                          key={getRandomKeyByssmm() + index}\n                          content={word.replace(/[{}]/g, \"\")}\n                          asChild={false}\n                        >\n                          <Badge\n                            key={index}\n                            variant=\"gray\"\n                            size=\"md\"\n                            className=\"m-1 max-w-[40vw] cursor-default truncate p-2.5 text-sm\"\n                          >\n                            <div className=\"relative bottom-[1px]\">\n                              <span>\n                                {word.replace(/[{}]/g, \"\").length > 59\n                                  ? word.replace(/[{}]/g, \"\").slice(0, 56) +\n                                  \"...\"\n                                  : word.replace(/[{}]/g, \"\")}\n                              </span>\n                            </div>\n                          </Badge>\n                        </ShadTooltip>\n                      ))}\n                    </div>\n                  </div>\n                  <span className=\"mt-1 text-xs text-muted-foreground\">\n                    The name of the prompt word can be freely chosen within curly braces, for example {\"{variable_name}\"}\n                  </span>\n                </div>\n              )}\n            </div>\n            <Button\n              onClick={() => {\n                switch (myModalType) {\n                  case 1:\n                    setValue(inputValue);\n                    setModalOpen(false);\n                    break;\n                  case 2:\n                    !inputValue || inputValue === \"\"\n                      ? setModalOpen(false)\n                      : validatePrompt(false);\n                    break;\n\n                  default:\n                    break;\n                }\n              }}\n              type=\"submit\"\n            > {myButtonText} </Button>\n          </div>\n        </div>\n      </BaseModal.Content>\n    </BaseModal>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/CreateApp.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { Accordion } from \"@/components/bs-ui/accordion\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport Avator from \"@/components/bs-ui/input/avator\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport AssistantSetting from \"@/components/Pro/security/AssistantSetting\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { readTempsDatabase } from \"@/controllers/API\";\nimport { createAssistantsApi } from \"@/controllers/API/assistant\";\nimport { getAssistantModelConfig, getLlmDefaultModel } from \"@/controllers/API/finetune\";\nimport { copyReportTemplate, createWorkflowApi } from \"@/controllers/API/workflow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport { AppType, AppTypeToNum } from \"@/types/app\";\nimport { forwardRef, useContext, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\ntype ModalProps = {};\ntype ModalRef = {\n    open: (type: string, tempId?: number, data?: { id?: string, logo?: string, type?: AppType }) => void;\n    edit: (type: string, appId: string) => void;\n};\n\nconst CreateApp = forwardRef<ModalRef, ModalProps & { loca?: any }>(\n    ({ onSave, loca }, ref) => {\n        const [open, setOpen] = useState(false);\n        const [formData, setFormData] = useState({\n            url: '',\n            name: '',\n            desc: '',\n        });\n        const [appType, setType] = useState<AppType>(AppType.ASSISTANT); // assistant or workflow\n        const [isEditMode, setIsEditMode] = useState(false); // edit mode\n        const [loading, setLoading] = useState(false);\n        const { t } = useTranslation('flow');\n        const { appConfig } = useContext(locationContext);\n        const securityRef = useRef<any>(null);\n\n        const [appId, setAppId] = useState<string>('');\n        const [errors, setErrors] = useState<any>({});\n\n        useImperativeHandle(ref, () => ({\n            open(type: AppType, tempId?: number) {\n                setType(type);\n                setIsEditMode(false);\n                setFormData({\n                    url: '',\n                    name: '',\n                    desc: AppType.ASSISTANT === type ? `${t('build.example', { ns: 'bs' })}：\n${t('build.exampleOne', { ns: 'bs' })}\n${t('build.exampleTwo', { ns: 'bs' })}\n1. XX\n2. XX\n3. …` : '',\n                });\n                if (tempId) {\n                    handleSelectTemplate(type, tempId);\n                }\n                setErrors({});\n                setOpen(true);\n                tempDataRef.current = null;\n                setAppId('');\n            },\n            edit(type: AppType, flow: any) {\n                setType(type);\n                setIsEditMode(true);\n                fetchDetails(type, flow);\n                setErrors({});\n                setOpen(true);\n                tempDataRef.current = null;\n                setAppId(flow.id);\n            },\n        }));\n\n        const tempDataRef = useRef<any>(null);\n        const handleSelectTemplate = async (type: AppType, tempId: number) => {\n            const [flow] = await readTempsDatabase('flow', tempId)\n            tempDataRef.current = flow;\n            setFormData({\n                url: flow.logo || '',\n                name: `${flow.name}-${generateUUID(5)}`,\n                desc: flow.description\n            });\n        }\n\n        const fetchDetails = async (type: AppType, flow: any) => {\n            setFormData({\n                url: flow.logo,\n                name: flow.name,\n                desc: flow.description,\n            });\n        };\n\n        const validateField = (name: string, value: string) => {\n            switch (name) {\n                case 'name':\n                    if (value.length > 50) return AppType.ASSISTANT === appType ? t('maxNameLengthAssistant') : t('maxNameLengthWorkflow');\n                    return '';\n                case 'desc':\n                    if (AppType.ASSISTANT === appType && value.length < 20) return t('minDescLengthAssistant');\n                    return '';\n                default:\n                    return '';\n            }\n        };\n\n        // Handle field change\n        const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n            const { name, value } = e.target;\n            const error = validateField(name, value);\n            setFormData(prev => ({ ...prev, [name]: value }));\n            setErrors(prev => ({ ...prev, [name]: error }));\n        };\n\n        // Validate entire form\n        const validateForm = () => {\n            const formErrors: any = {};\n            let isValid = true;\n\n            Object.keys(formData).forEach(key => {\n                const error = validateField(key, formData[key]);\n                if (error) {\n                    formErrors[key] = error;\n                    isValid = false;\n                }\n            });\n\n            setErrors(formErrors);\n            return isValid;\n        };\n\n        // Handle form submission\n        const navigate = useNavigate()\n        const handleSubmit = async (e: React.FormEvent) => {\n            e.preventDefault();\n            const isValid = validateForm();\n            if (!isValid) return;\n\n            setLoading(true);\n            if (isEditMode) {\n                setLoading(false);\n                setOpen(false);\n                return onSave({\n                    name: formData.name,\n                    description: formData.desc,\n                    logo: formData.url,\n                    viewUrl: formData.viewUrl,\n                })\n            }\n\n            if (tempDataRef.current) {\n                if (AppType.FLOW === appType) {\n                    for (let i = 0; i < tempDataRef.current.data.nodes.length; i++) {\n                        const node = tempDataRef.current.data.nodes[i];\n                        await copyReportTemplate(node.data)\n                    }\n\n                    const [workflow, assistant] = await Promise.all([getLlmDefaultModel(), getAssistantModelConfig()])\n                    const workflowModelId = workflow.model_id;\n                    const assistantModelId = assistant.llm_list.find(item => item.default)?.model_id;\n                    delete tempDataRef.current.data.source;\n\n                    tempDataRef.current.data.nodes.forEach(node => {\n                        if (['rag', 'llm', 'agent', 'qa_retriever'].includes(node.data.type)) {\n                            node.data.group_params.forEach(group =>\n                                group.params.forEach(param => {\n                                    if (param.type === 'bisheng_model') {\n                                        param.value = workflowModelId;\n                                    } else if (param.type === 'agent_model') {\n                                        param.value = assistantModelId;\n                                    } else if (param.type === 'knowledge_select_multi' && param.value.type !== 'tmp') {\n                                        param.value.value = [];\n                                    } else if (param.type === 'qa_select_multi') {\n                                        param.value = [];\n                                    } else if (param.type === 'add_tool') {\n                                        param.value = [];\n                                    }\n                                })\n                            )\n                        }\n                    })\n                    const res = await captureAndAlertRequestErrorHoc(createWorkflowApi(formData.name, formData.desc, formData.url, tempDataRef.current));\n                    if (res) navigate('/flow/' + res.id);\n                }\n            } else {\n                if (appType === AppType.ASSISTANT) {\n                    const res = await captureAndAlertRequestErrorHoc(createAssistantsApi(formData.name, formData.desc, formData.url));\n                    if (res) {\n                        //@ts-ignore\n                        window.assistantCreate = true // Mark the created assistant \n                        navigate('/assistant/' + res.id)\n                    }\n                } else {\n                    if (appId) return navigate('/flow/' + appId);\n                    const workflow = await captureAndAlertRequestErrorHoc(createWorkflowApi(formData.name, formData.desc, formData.url));\n                    if (workflow) {\n                        const navigateToFlow = (id) => navigate(`/flow/${id}`);\n                        if (!appConfig.isPro) return navigateToFlow(workflow.id);\n\n                        setAppId(workflow.id);\n                        const securityCreated = await securityRef.current.create(workflow.id);\n                        if (securityCreated) navigateToFlow(workflow.id);\n                    }\n                }\n            }\n            setLoading(false);\n        };\n\n        const uploadAvator = (file: File) => {\n            uploadFileWithProgress(file, (progress) => { }, 'icon').then(res => {\n                setFormData(prev => ({ ...prev, url: res.relative_path, viewUrl: res.file_path }));\n            });\n        };\n\n        const previewAvatar = useMemo(() =>\n            formData.url ? __APP_ENV__.BASE_URL + (formData.viewUrl || formData.url) : '',\n            [formData.url]);\n\n        return (\n            <Dialog open={open} onOpenChange={setOpen}>\n                <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n                    <DialogHeader>\n                        <DialogTitle>{isEditMode ? t('edit') : t('create')}{appType === AppType.ASSISTANT ? t('assistant') : t('workflow')}</DialogTitle>\n                    </DialogHeader>\n                    <div className=\"flex flex-col mt-2\">\n                        <div className=\"mb-6\">\n                            <label htmlFor=\"name\" className=\"bisheng-label\">\n                                {appType === AppType.ASSISTANT ? t('assistantAvatar') : t('workflowAvatar')}\n                            </label>\n                            <Avator value={previewAvatar} className=\"mt-3\" onChange={uploadAvator}>\n                                <AppAvator id={6} flowType={AppTypeToNum[appType]} className=\"size-8\"></AppAvator>\n                            </Avator>\n                        </div>\n                        <div className=\"mb-6\">\n                            <label htmlFor=\"name\" className=\"bisheng-label\">\n                                {appType === AppType.ASSISTANT ? t('build_assistantName') : t('name')}\n                                <span className=\"bisheng-tip\">*</span>\n                            </label>\n                            <Input\n                                id=\"name\"\n                                name=\"name\"\n                                maxLength={50}\n                                showCount\n                                placeholder={appType === AppType.ASSISTANT ? t('giveAssistantAName') : t('giveWorkflowAName')}\n                                className=\"mt-3\"\n                                value={formData.name}\n                                onChange={handleChange}\n                            />\n                            {errors.name && <p className=\"bisheng-tip mt-1\">{errors.name}</p>}\n                        </div>\n                        <div className=\"mb-6\">\n                            <label htmlFor=\"desc\" className=\"bisheng-label\">\n                                {appType === AppType.ASSISTANT ? t('build_roleAndTasks') : t('description')}\n                            </label>\n                            <Textarea\n                                id=\"desc\"\n                                name=\"desc\"\n                                placeholder={appType === AppType.ASSISTANT ? t('build_forExample') : t('enterWorkflowDescription')}\n                                maxLength={appType === AppType.SKILL ? 200 : 1000}\n                                className=\"mt-3 min-h-32 pt-3\"\n                                value={formData.desc}\n                                onChange={handleChange}\n                            />\n                            {errors.desc && <p className=\"bisheng-tip mt-1\">{errors.desc}</p>}\n                        </div>\n                    </div>\n                    {/* Workflow Security Review */}\n                    <div className={isEditMode ? '' : 'hidden'}>\n                        {appConfig.isPro && <Accordion type=\"multiple\" className=\"w-full\">\n                            <AssistantSetting ref={securityRef} id={appId} type={5} />\n                        </Accordion>}\n                    </div>\n                    <DialogFooter>\n                        <DialogClose>\n                            <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={() => setFormData({ name: '', desc: '', url: '' })}>\n                                {t('cancel')}\n                            </Button>\n                        </DialogClose>\n                        <Button disabled={!formData.name || loading} type=\"submit\" className=\"px-11\" onClick={handleSubmit}>\n                            {loading && <LoadIcon className=\"mr-2\" />}\n                            {t(isEditMode ? 'save' : 'create')}\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        );\n    });\n\nexport default CreateApp;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/appTemps.tsx",
    "content": "import { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { AppType } from \"@/types/app\";\nimport { useEffect, useState } from \"react\";\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../components/bs-ui/table\";\nimport { deleteTempApi, readTempsDatabase, updateTempApi } from \"../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { SelectType } from \"./apps\";\n\nexport default function Templates() {\n    const navigate = useNavigate()\n\n    const onChange = () => { }\n    const { t } = useTranslation('flow')\n\n    const { type } = useParams()\n    const [temps, setTemps] = useState([])\n    useEffect(() => {\n        readTempsDatabase(type).then(setTemps)\n    }, [type])\n\n    const handleDragEnd = ({ source, destination }: any) => {\n        if (!destination || source.index === destination.index) {\n            return;\n        }\n        const updatedList = [...temps];\n        const [removed] = updatedList.splice(source.index, 1);\n        updatedList.splice(destination.index, 0, removed);\n        setTemps(updatedList);\n        // 65535 sort\n        let sort = 0\n        if (destination.index === 0) {\n            sort = updatedList[1].order_num + 65535\n        } else if (destination.index === updatedList.length - 1) {\n            sort = updatedList.at(-2).order_num - 65535\n        } else {\n            const startSort = updatedList[destination.index - 1].order_num\n            const endSort = updatedList[destination.index + 1].order_num\n            sort = startSort + (endSort - startSort) / 2\n        }\n\n        const currentItem = updatedList[destination.index]\n        currentItem.order_num = sort\n        const { name, description, order_num } = currentItem\n\n        captureAndAlertRequestErrorHoc(updateTempApi(currentItem.id, { name, description, order_num }).then(onChange))\n    }\n\n    const handleDelTemp = (index: number, id: number) => {\n        const nameMap = {\n            [AppType.FLOW]: t('workflow'),\n            [AppType.SKILL]: t('skill'),\n            [AppType.ASSISTANT]: t('assistant')\n        };\n        const labelName = nameMap[type]\n        bsConfirm({\n            desc: t('confirmDeleteTemplate', { type: labelName }),\n            okTxt: t('delete'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteTempApi(id).then((res) => {\n                    onChange(res)\n                    setTemps(temps.filter((temp, i) => index !== i));\n                    next()\n                }))\n            }\n        })\n    }\n\n    return <div className=\"px-2 py-4 h-full relative\">\n        <div className=\"h-full w-full overflow-y-auto overflow-x-hidden scrollbar-hide\">\n            <div className=\"flex justify-between\">\n                <SelectType defaultValue={type} onChange={(v) => navigate(`/build/temps/${v}`)} />\n                <Button size=\"sm\" onClick={() => navigate('/build/apps')}>{t('returnToAppList')}</Button>\n            </div>\n            <Table className=\"mb-[50px]\">\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[400px]\">{t('templateName')}</TableHead>\n                        <TableHead>{t('templateDescription')}</TableHead>\n                        <TableHead className=\"text-right pr-10\">{t('operations')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <DragDropContext onDragEnd={handleDragEnd}>\n                    <Droppable droppableId={'list'}>\n                        {(provided) => (\n                            <TableBody  {...provided.droppableProps} ref={provided.innerRef}>\n                                {temps.map((temp, index) =>\n                                    <Draggable key={'drag' + temp.id} draggableId={'drag' + temp.id} index={index}>\n                                        {(provided, snapshot) => (\n                                            <tr\n                                                className='group drag-li hover:bg-muted/50 data-[state=selected]:bg-muted'\n                                                ref={provided.innerRef}\n                                                {...provided.draggableProps}\n                                                {...provided.dragHandleProps}\n                                                style={{\n                                                    ...provided.draggableProps.style,\n                                                    display: snapshot.isDragging ? 'table' : ''\n                                                }}\n                                            >\n                                                <TableCell className=\"font-medium min-w-[400px]\">{temp.name}</TableCell>\n                                                <TableCell className={snapshot.isDragging ? 'break-words' : `max-w-0 break-words`}>{temp.description}</TableCell>\n                                                <TableCell className=\"text-right pr-5\">\n                                                    <Button variant=\"link\" className=\"text-destructive\" onClick={() => handleDelTemp(index, temp.id)}>{t('delete')}</Button>\n                                                </TableCell>\n                                            </tr>\n                                        )}\n                                    </Draggable>\n                                )}\n                            </TableBody>\n                        )}\n                    </Droppable>\n                </DragDropContext>\n            </Table>\n        </div>\n        {/* footer */}\n        <div className=\"flex justify-between items-center absolute bottom-0 right-0 w-full py-4 pl-[16px] h-[60px] bg-background-login\">\n            <p className=\"text-gray-500 text-sm\">{t('templateManagementDescription')}</p>\n            <span></span>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/apps.tsx",
    "content": "import CardComponent from \"@/components/bs-comp/cardComponent\";\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport LabelShow from \"@/components/bs-comp/cardComponent/LabelShow\";\nimport AppTempSheet from \"@/components/bs-comp/sheets/AppTempSheet\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { MoveOneIcon } from \"@/components/bs-icons/moveOne\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport SelectSearch from \"@/components/bs-ui/select/select\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { readTempsDatabase } from \"@/controllers/API\";\nimport { changeAssistantStatusApi, deleteAssistantApi } from \"@/controllers/API/assistant\";\nimport { deleteFlowFromDatabase, getAppsApi, saveFlowToDatabase, updataOnlineState } from \"@/controllers/API/flow\";\nimport { onlineWorkflow } from \"@/controllers/API/workflow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { AppNumType, AppType } from \"@/types/app\";\nimport { FlowType } from \"@/types/flow\";\nimport { useTable } from \"@/util/hook\";\nimport { generateUUID } from \"@/utils\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport CreateApp from \"./CreateApp\";\nimport { useCreateTemp, useErrorPrompt, useQueryLabels } from \"./hook\";\nimport CardSelectVersion from \"./skills/CardSelectVersion\";\nimport CreateTemp from \"./skills/CreateTemp\";\n\nexport const SelectType = ({ all = false, defaultValue = 'all', onChange }) => {\n    const [value, setValue] = useState<string>(defaultValue)\n    const { t } = useTranslation();\n\n    const options: any = [\n        { label: t('build.workflow'), value: AppType.FLOW },\n        { label: t('build.assistant'), value: AppType.ASSISTANT },\n        { label: t('build.skill'), value: AppType.SKILL },\n    ];\n\n    if (all) {\n        options.unshift({ label: t('build.allAppTypes'), value: 'all' });\n    }\n\n\n    return <Select value={value} onValueChange={(v) => { onChange(v); setValue(v) }}>\n        <SelectTrigger className=\"max-w-32\">\n            <SelectValue placeholder={t('build.allAppTypes')} />\n        </SelectTrigger>\n        <SelectContent>\n            <SelectGroup>\n                {options.map(el => (\n                    <SelectItem key={el.value} value={el.value}>{el.label}</SelectItem>\n                ))}\n            </SelectGroup>\n        </SelectContent>\n    </Select>\n}\n\nconst TypeNames = {\n    5: AppType.ASSISTANT,\n    1: AppType.SKILL,\n    10: AppType.FLOW\n}\nexport default function apps() {\n    const { t, i18n } = useTranslation()\n    // useErrorPrompt();\n\n    useEffect(() => {\n        i18n.loadNamespaces('flow');\n    }, [i18n]);\n    const { user } = useContext(userContext);\n    const { message } = useToast()\n    const navigate = useNavigate()\n\n    const { page, pageSize, data: dataSource, total, loading, setPage, search, reload, refreshData, filterData } = useTable<FlowType>({ pageSize: 14, managed: true }, (param) =>\n        getAppsApi(param)\n    )\n\n    const { open: tempOpen, tempType, flowRef, toggleTempModal } = useCreateTemp()\n\n    // on/off line\n    const handleCheckedChange = (checked, data) => {\n        if (data.flow_type === 1) {\n            return captureAndAlertRequestErrorHoc(updataOnlineState(data.id, data, checked).then(res => {\n                if (res) {\n                    refreshData((item) => item.id === data.id, { status: checked ? 2 : 1 })\n                }\n                return res\n            }))\n        } else if (data.flow_type === 5) {\n            return captureAndAlertRequestErrorHoc(changeAssistantStatusApi(data.id, checked ? 2 : 1)).then(res => {\n                if (res === null) {\n                    refreshData((item) => item.id === data.id, { status: checked ? 2 : 1 })\n                }\n                return res\n            })\n        } else if (data.flow_type === 10) {\n            return captureAndAlertRequestErrorHoc(onlineWorkflow(data, checked ? 2 : 1)).then(res => {\n                if (res) {\n                    refreshData((item) => item.id === data.id, { status: checked ? 2 : 1 })\n                }\n                return res\n            })\n        }\n    }\n\n    const typeCnNames = {\n        1: t('build.skill'),\n        5: t('build.assistant'),\n        10: t('build.workflow')\n    }\n\n    const handleDelete = (data) => {\n        const descMap = {\n            1: t('build.confirmDeleteSkill'),\n            10: t('build.confirmDeleteFlow'),\n            5: t('build.confirmDeleteAssistant')\n        }\n        bsConfirm({\n            desc: descMap[data.flow_type],\n            okTxt: t('delete'),\n            onOk(next) {\n                const promise = data.flow_type == 5 ? deleteAssistantApi(data.id) : deleteFlowFromDatabase(data.id)\n                captureAndAlertRequestErrorHoc(promise.then(reload));\n                next()\n            }\n        })\n    }\n\n    const { toast } = useToast()\n    const handleSetting = (data) => {\n        if (!data.write) {\n            return toast({ variant: 'warning', description: '无编辑权限' })\n        }\n        if (data.flow_type === 5) {\n            navigate(`/assistant/${data.id}`, { state: { flow: data } })\n        } else if (data.flow_type === 1) {\n            const vid = data.version_list.find(item => item.is_current === 1)?.id\n            navigate(`/build/skill/${data.id}/${vid}`, { state: { flow: data } })\n        } else {\n            navigate(`/flow/${data.id}`, { state: { flow: data } })\n        }\n    }\n\n    const createAppModalRef = useRef(null)\n    const handleCreateApp = async (type, tempId = 0, item?: any) => {\n        if (type === AppType.SKILL) {\n            if (!tempId) return navigate('/build/skill')\n            // select template\n            const [flow] = await readTempsDatabase(type, tempId)\n\n            flow.name = `${flow.name}-${generateUUID(5)}`\n            // @ts-ignore\n            captureAndAlertRequestErrorHoc(saveFlowToDatabase({ ...flow, id: flow.flow_id }).then((res: any) => {\n                res.user_name = user.user_name\n                res.write = true\n                // setOpen(false)\n                navigate(`/build/skill/${res.id}/${res.version_id}`)\n            }))\n        } else {\n            createAppModalRef.current.open(\n                type,\n                tempId,\n                // {\n                //     id: item?.id,\n                //     logo: item?.logo,\n                //     type: TypeNames[item.flow_type]\n                // }\n            );\n        }\n    }\n\n    const { selectLabel, setSelectLabel, setSearchKey, filteredOptions, allOptions, refetchLabels } = useQueryLabels(t)\n    const handleLabelSearch = (id) => {\n        setSelectLabel(allOptions.find(l => l.value === id))\n        filterData({ tag_id: id })\n    }\n\n    const tempTypeRef = useRef(null)\n    return <div className=\"h-full relative\">\n        <div className=\"px-10 py-10 h-full overflow-y-scroll scrollbar-hide relative bg-background-main border-t\">\n            <div className=\"flex gap-4\">\n                <SearchInput className=\"w-64\" placeholder={t('build.searchApp')} onChange={(e) => search(e.target.value)}></SearchInput>\n                <SelectType all onChange={(v) => {\n                    tempTypeRef.current = v\n                    filterData({ type: v })\n                }} />\n                <SelectSearch\n                    value={!selectLabel.value ? '' : selectLabel.value}\n                    options={allOptions}\n                    selectPlaceholder={t('chat.allLabels')}\n                    inputPlaceholder={t('chat.searchLabels')}\n                    selectClass=\"w-52\"\n                    onOpenChange={() => setSearchKey('')}\n                    onChange={(e) => setSearchKey(e.target.value)}\n                    onValueChange={handleLabelSearch}>\n                </SelectSearch>\n                {user.role === 'admin' && <Button\n                    variant=\"ghost\"\n                    className=\"hover:bg-gray-50 flex gap-2 dark:hover:bg-[#34353A] ml-auto\"\n                    onClick={() => navigate(`/build/temps/${tempTypeRef.current && tempTypeRef.current !== AppType.ALL ? tempTypeRef.current : AppType.FLOW}`)}\n                ><MoveOneIcon className=\"dark:text-slate-50\" />{t('build.manageAppTemplates')}</Button>}\n            </div>\n            {/* list */}\n            {\n                loading\n                    ? <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                        <LoadingIcon />\n                    </div>\n                    : <div className=\"mt-6 flex gap-2 flex-wrap pb-20 min-w-[980px]\">\n                        <AppTempSheet onSelect={handleCreateApp} onCustomCreate={handleCreateApp}>\n                            <CardComponent<FlowType>\n                                data={null}\n                                type='assist'\n                                title={t('log.createBuild')}\n                                description={(<>\n                                    <p><p>{t('build.provideSceneTemplates')}</p></p>\n                                </>)}\n                            ></CardComponent>\n                        </AppTempSheet>\n                        {\n                            dataSource.map((item: any, i) => (\n                                <CardComponent<FlowType>\n                                    key={item.id}\n                                    data={item}\n                                    id={item.id}\n                                    logo={<AppAvator id={item.name} flowType={item.flow_type} url={item.logo} />}\n                                    type={TypeNames[item.flow_type]}\n                                    edit\n                                    // edit={item.write}\n                                    title={item.name}\n                                    isAdmin={user.role === 'admin'}\n                                    description={item.description}\n                                    checked={item.status === 2}\n                                    user={item.user_name}\n                                    currentUser={user}\n                                    onClick={() => handleSetting(item)}\n                                    // onSwitchClick={() => {\n                                    //     !item.write && item.status !== 2 && message({\n                                    //         description: t('build.noPermissionToPublish', { type: typeCnNames[item.flow_type] }),\n                                    //         variant: 'warning'\n                                    //     })\n                                    // }}\n                                    onAddTemp={toggleTempModal}\n                                    onCheckedChange={handleCheckedChange}\n                                    onDelete={handleDelete}\n                                    onSetting={(item) => handleSetting(item)}\n                                    headSelecter={(\n                                        // skills\n                                        item.flow_type !== AppNumType.ASSISTANT ? <CardSelectVersion\n                                            showPop={item.status !== 2}\n                                            data={item}\n                                        ></CardSelectVersion> : null)}\n                                    labelPannel={\n                                        <LabelShow\n                                            data={item}\n                                            user={user}\n                                            type={item.flow_type}\n                                            all={filteredOptions}\n                                            onChange={refetchLabels}>\n                                        </LabelShow>\n                                    }\n                                    footer={\n                                        <Badge className={`absolute py-0 px-1 right-0 bottom-0 rounded-none rounded-br-md  ${item.flow_type === AppNumType.SKILL && 'bg-gray-950'} ${item.flow_type === AppNumType.ASSISTANT && 'bg-[#fdb136]'}`}>\n                                            {typeCnNames[item.flow_type]}\n                                        </Badge>\n                                    }\n                                ></CardComponent>\n                            ))\n                        }\n                    </div>\n            }\n        </div>\n        {/* add template */}\n        <CreateTemp flow={flowRef.current} type={tempType} open={tempOpen} setOpen={() => toggleTempModal()} onCreated={() => { }} ></CreateTemp>\n        {/* footer */}\n        <div className=\"flex justify-between absolute bottom-0 left-0 w-full bg-background-main h-16 items-center px-10\">\n            <p className=\"text-sm text-muted-foreground break-keep\">{t('build.manageYourApplications')}</p>\n            <AutoPagination className=\"m-0 w-auto justify-end\" page={page} pageSize={pageSize} total={total} onChange={setPage}></AutoPagination>\n        </div>\n        {/* create flow&assistant */}\n        <CreateApp ref={createAppModalRef} />\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/CreateAssistant.tsx",
    "content": "import { AssistantIcon } from \"@/components/bs-icons\";\nimport Avator from \"@/components/bs-ui/input/avator\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { LoadIcon } from \"../../../components/bs-icons/loading\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"../../../components/bs-ui/dialog\";\nimport { Input, Textarea } from \"../../../components/bs-ui/input\";\nimport { createAssistantsApi } from \"../../../controllers/API/assistant\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\n\nexport default function CreateAssistant() {\n\n    const { t } = useTranslation()\n\n    // State for form fields\n    const [formData, setFormData] = useState({\n        url: '',\n        name: '',\n        roleAndTasks: `${t('build.example')}：\n${t('build.exampleOne')}\n${t('build.exampleTwo')}\n1. XX\n2. XX\n3. …`\n    });\n\n    const [loading, setLoading] = useState(false);\n    // State for errors\n    const [errors, setErrors] = useState<any>({});\n\n    // Validate form fields\n    const validateField = (name, value) => {\n        switch (name) {\n            case 'name':\n                if (!value) return t('build.nameRequired');\n                if (value.length > 50) return t('build.nameMaxLength');\n                return '';\n            case 'roleAndTasks':\n                if (value.length < 20) return t('build.forBetter');\n                return '';\n            default:\n                return '';\n        }\n    };\n\n    // Handle field change\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        const error = validateField(name, value);\n\n        setFormData(prev => ({ ...prev, [name]: value }));\n        setErrors(prev => ({ ...prev, [name]: error }));\n    };\n\n    // Validate entire form\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n\n        Object.keys(formData).forEach(key => {\n            const error = validateField(key, formData[key]);\n            if (error) {\n                formErrors[key] = error;\n                isValid = false;\n            }\n        });\n\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    // Handle form submission\n    const navigate = useNavigate()\n    const handleSubmit = async (e) => {\n        e.preventDefault();\n        const isValid = validateForm();\n\n        if (isValid) {\n            console.log('Form data:', formData);\n            setLoading(true)\n            const res = await captureAndAlertRequestErrorHoc(createAssistantsApi(formData.name, formData.roleAndTasks, formData.url))\n            if (res) {\n                //@ts-ignore\n                window.assistantCreate = true // Mark as creating new assistant\n                navigate('/assistant/' + res.id)\n            }\n            setLoading(false)\n        }\n    };\n\n    const uploadAvator = (file) => {\n        uploadFileWithProgress(file, (progress) => { }, 'icon').then(res => {\n            setFormData(prev => ({ ...prev, url: res.relative_path }));\n        })\n    }\n\n    return <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n        <DialogHeader>\n            <DialogTitle>{t('build.establishAssistant')}</DialogTitle>\n        </DialogHeader>\n        <div className=\"flex flex-col gap-8 py-6\">\n            <div className=\"\">\n                <label htmlFor=\"name\" className=\"bisheng-label\">{t('build.assistantAvatar')}</label>\n                <Avator value={formData.url} className=\"mt-2\" onChange={uploadAvator}><AssistantIcon className=\"bg-primary w-9 h-9 rounded-sm\" /></Avator>\n                {/* {errors.name && <p className=\"bisheng-tip mt-1\">{errors.name}</p>} */}\n            </div>\n            <div className=\"\">\n                <label htmlFor=\"name\" className=\"bisheng-label\">{t('build.assistantName')}<span className=\"bisheng-tip\">*</span></label>\n                <Input id=\"name\" name=\"name\" maxLength={50} showCount placeholder={t('build.giveAssistantName')} className=\"mt-2\" value={formData.name} onChange={handleChange} />\n                {errors.name && <p className=\"bisheng-tip mt-1\">{errors.name}</p>}\n            </div>\n            <div className=\"\">\n                <label htmlFor=\"roleAndTasks\" className=\"bisheng-label\">{t('build.whatWant')}</label>\n                <Textarea\n                    id=\"roleAndTasks\"\n                    name=\"roleAndTasks\"\n                    placeholder={t('build.forExample')}\n                    maxLength={1000}\n                    className=\"mt-2 min-h-32\"\n                    value={formData.roleAndTasks}\n                    onChange={handleChange}\n                />\n                {errors.roleAndTasks && <p className=\"bisheng-tip mt-1\">{errors.roleAndTasks}</p>}\n            </div>\n        </div>\n        <DialogFooter>\n            <DialogClose>\n                <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={() => setFormData({ name: '', roleAndTasks: '' })}>{t('cancle')}</Button>\n            </DialogClose>\n            <Button disabled={loading} type=\"submit\" className=\"px-11\" onClick={handleSubmit}>\n                {loading && <LoadIcon className=\"mr-2\" />}\n                {t('build.create')}</Button>\n        </DialogFooter>\n    </DialogContent>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/AutoPromptDialog.tsx",
    "content": "import { TitleIconBg } from \"@/components/bs-comp/cardComponent\";\nimport { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogContent, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { getAssistantOptimizeTaskApi } from \"@/controllers/API/assistant\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { AssistantTool } from \"@/types/assistant\";\nimport { FlowType } from \"@/types/flow\";\nimport { t } from \"i18next\";\nimport { RefreshCw } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst enum LoadType {\n    Prompt = 5,\n    GuideWord = 4,\n    GuideQuestion = 3,\n    Tool = 2,\n    Flow = 1\n}\n\nexport default function AutoPromptDialog({ onOpenChange }) {\n    const { toast } = useToast()\n    const { id } = useParams()\n    const { assistantState, dispatchAssistant } = useAssistantStore()\n\n    const init = async () => {\n        const prompt = areaRef.current?.value || assistantState.prompt\n        const res = await getAssistantOptimizeTaskApi(id, prompt)\n        const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/assistant/auto?task_id=${res.task_id}`;\n        const eventSource = new EventSource(apiUrl);\n        if (areaRef.current) areaRef.current.value = ''\n        let queue = LoadType.Prompt\n        setLoading(queue)\n\n        eventSource.onmessage = (event) => {\n            // If the event is parseable, return\n            if (!event.data) {\n                return;\n            }\n            const parsedData = JSON.parse(event.data);\n            // console.log('parsedData :>> ', parsedData);\n            switch (parsedData.type) {\n                case 'prompt':\n                    areaRef.current.value += parsedData.message.replace('```markdown', ''); break\n                case 'guide_word':\n                    guideAreaRef.current.value += parsedData.message; break\n                case 'guide_question':\n                    setQuestion(parsedData.message); break\n                case 'tool_list':\n                    setTools(parsedData.message); break\n                case 'flow_list':\n                    setFlows(parsedData.message); break\n                case 'end':\n                    setLoading(--queue)\n                    if (parsedData.message) {\n                        toast({\n                            title: t('tip'),\n                            variant: 'error',\n                            description: parsedData.message\n                        });\n                    }\n                    break\n            }\n            // Auto scroll\n            areaRef.current.scrollTop = areaRef.current.scrollHeight;\n        };\n\n        eventSource.onerror = (error: any) => {\n            console.error(\"EventSource failed:\", error);\n            eventSource.close();\n            if (error.data) {\n                const parsedData = JSON.parse(error.data);\n                setLoading(0);\n                toast({\n                    title: parsedData.error,\n                    variant: 'error',\n                    description: ''\n                });\n            }\n        };\n    }\n\n\n    useEffect(() => {\n        // api\n        init()\n    }, [])\n\n    const [loading, setLoading] = useState(0)\n    const handleReload = () => {\n        init()\n    }\n\n    /**\n     * Use\n     */\n    const { message } = useToast()\n    // state\n    const areaRef = useRef(null)\n    const guideAreaRef = useRef(null)\n    const [question, setQuestion] = useState<string[]>([])\n    const [tools, setTools] = useState<AssistantTool[]>([])\n    const [flows, setFlows] = useState<FlowType[]>([])\n    // Update prompt\n    const handleUsePropmt = () => {\n        const value = areaRef.current.value\n        dispatchAssistant('setPrompt', { prompt: value })\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.promptReplaced')\n        })\n    }\n\n    const handleUserQuestion = () => {\n        dispatchAssistant('setQuestion', { guide_question: [...question, ''] })\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.guideReplaced')\n        })\n    }\n\n    const handleUseGuide = () => {\n        const value = guideAreaRef.current.value\n        dispatchAssistant('setGuideword', { guide_word: value })\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.openingReplaced')\n        })\n    }\n\n    const handleUseTools = () => {\n        dispatchAssistant('setTools', { tool_list: tools })\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.toolsReplaced')\n        })\n    }\n\n    const handleUseFlows = () => {\n        dispatchAssistant('setFlows', { flow_list: flows })\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.skillsReplaced')\n        })\n    }\n\n    const handleUseAll = () => {\n        dispatchAssistant('setPrompt', { prompt: areaRef.current.value })\n        dispatchAssistant('setGuideword', { guide_word: guideAreaRef.current.value })\n        dispatchAssistant('setTools', { tool_list: tools })\n        dispatchAssistant('setFlows', { flow_list: flows })\n        dispatchAssistant('setQuestion', { guide_question: [...question, ''] })\n        // Collect results\n        message({\n            variant: 'success',\n            title: t('tip'),\n            description: t('build.allReplaced')\n        })\n        onOpenChange(false)\n    }\n\n    return <DialogContent className=\"sm:max-w-[925px] bg-background-login max-h-[90vh] overflow-hidden flex flex-col\" close={false}>\n    <div className=\"flex-1 overflow-y-auto\">\n        <div className=\"flex\">\n            {/* Prompt */}\n            <div className=\"w-[50%] relative pr-6\">\n                <div className=\"flex items-center justify-between\">\n                    <span className=\"text-lg font-semibold leading-none tracking-tight flex\">{t('build.portraitOptimization')}{LoadType.Prompt === loading && <LoadIcon className=\"ml-2 text-gray-600\" />}</span>\n                    <Button variant=\"link\" size=\"sm\" onClick={handleReload} disabled={!!loading} ><RefreshCw size={14} className=\"mr-2\" />{t('build.retry')}</Button>\n                </div>\n                <div className=\"group flex justify-end mt-2 h-[600px] relative\">\n                    <Textarea ref={areaRef} className=\"h-full\"\n                        placeholder={t('prompt')}\n                    ></Textarea>\n                    <Button className=\"group-hover:flex hidden h-6 absolute bottom-4 right-4\" disabled={LoadType.Prompt <= loading} size=\"sm\" onClick={handleUsePropmt}>{t('build.use')}</Button>\n                </div>\n            </div>\n            {/* Automatic configuration */}\n            <div className=\"w-[50%] border-l pl-6\">\n                <div>\n                    <span className=\"text-lg font-semibold leading-none tracking-tight\">{t('build.automaticallyConfigurations')}</span>\n                </div>\n                <div className=\"\">\n                    {/* Opening statement */}\n                    <div className=\"group relative pb-12 bg-gray-100 dark:bg-[#2A2B2E] mt-4 px-4 py-2 rounded-md\">\n                        <div className=\"text-md mb-2 font-medium leading-none flex\">{t('build.openingRemarks')}{LoadType.GuideWord === loading && <LoadIcon className=\"ml-2 text-gray-600\" />}</div>\n                        <Textarea ref={guideAreaRef} className=\"bg-transparent border-none bg-gray-50 dark:bg-[#171717]\"></Textarea>\n                        <Button className=\"group-hover:flex hidden h-6 absolute bottom-4 right-4\" disabled={LoadType.GuideWord <= loading} size=\"sm\" onClick={handleUseGuide}>{t('build.use')}</Button>\n                    </div>\n                    {/* Guide questions */}\n                    <div className=\"group relative pb-12 bg-gray-100 dark:bg-[#2A2B2E] mt-4 px-4 py-2 rounded-md\">\n                        <div className=\"text-md mb-2 font-medium leading-none flex\">{t('build.guidingQuestions')}{LoadType.GuideQuestion === loading && <LoadIcon className=\"ml-2 text-gray-600\" />}</div>\n                        {\n                            question.map(qs => (\n                                <p key={qs} className=\"text-sm text-muted-foreground bg-gray-50 dark:bg-[#171717] px-2 py-1 rounded-xl mb-2\">{qs}</p>\n                            ))\n                        }\n                        <Button className=\"group-hover:flex hidden h-6 absolute bottom-4 right-4\" disabled={LoadType.GuideQuestion <= loading} size=\"sm\" onClick={handleUserQuestion}>{t('build.use')}</Button>\n                    </div>\n                    {/* Tools */}\n                    <div className=\"group relative pb-10 bg-gray-100 dark:bg-[#2A2B2E] mt-4 px-4 py-2 rounded-md\">\n                        <div className=\"text-md mb-2 font-medium leading-none flex\">{t('build.tools')}{LoadType.Tool === loading && <LoadIcon className=\"ml-2 text-gray-600\" />}</div>\n                        <div className=\"pt-1\">\n                            {\n                                tools.map(tool => (\n                                    <div key={tool.id} className=\"flex gap-2 items-center mt-2\">\n                                        <TitleIconBg id={tool.id} className=\" w-7 h-7\" />\n                                        <p className=\"text-sm\">{tool.name}</p>\n                                    </div>\n                                ))\n                            }\n                        </div>\n                        <Button\n                            className=\"group-hover:flex text-slate-50 hidden h-6 absolute bottom-4 right-4\"\n                            disabled={LoadType.Tool <= loading || !tools.length} size=\"sm\"\n                            onClick={handleUseTools}\n                        >{t('build.use')}</Button>\n                    </div>\n                    {/* Skills */}\n                    <div className=\"group relative pb-10 bg-gray-100 dark:bg-[#2A2B2E] mt-4 px-4 py-2 rounded-md\">\n                        <div className=\"text-md mb-2 font-medium leading-none flex\">{t('build.skill')}{LoadType.Flow === loading && <LoadIcon className=\"ml-2 text-gray-600\" />}</div>\n                        <div className=\"pt-1\">\n                            {\n                                flows.map(flow => (\n                                    <div key={flow.id} className=\"flex gap-2 items-center mt-2\">\n                                        <TitleIconBg id={flow.id} className=\" w-7 h-7\" />\n                                        <p className=\"text-sm\">{flow.name}</p>\n                                    </div>\n                                ))\n                            }\n                        </div>\n                        <Button\n                            className=\"group-hover:flex text-slate-50 hidden h-6 absolute bottom-4 right-4\"\n                            disabled={LoadType.Flow <= loading || !flows.length}\n                            size=\"sm\"\n                            onClick={handleUseFlows}\n                        >{t('build.use')}</Button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    {/* Bottom button area - fixed at bottom */}\n    <DialogFooter className=\"border-t mt-2\">\n        <DialogClose>\n            <Button variant=\"outline\" className=\"px-11\" type=\"button\">{t('cancle')}</Button>\n        </DialogClose>\n        <Button type=\"submit\" className=\"px-11\" disabled={!!loading} onClick={handleUseAll}>{t('build.useAll')}</Button>\n    </DialogFooter>\n</DialogContent>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/EditAssistantDialog.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport Avator from \"@/components/bs-ui/input/avator\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function EditAssistantDialog({ logo, viewLogo, name, desc, onSave, loca }) {\n\n    const { t } = useTranslation()\n    // State for form fields\n    const [formData, setFormData] = useState({ logo: '', name: '', desc: '' });\n\n    useEffect(() => {\n        setFormData({ logo, name, desc, viewLogo })\n    }, [logo, name, desc, viewLogo])\n    // console.log(formData, name, desc);\n\n    // State for errors\n    const [errors, setErrors] = useState<any>({});\n\n    // Validate form fields\n    const validateField = (name, value) => {\n        switch (name) {\n            case 'name':\n                if (!value) return t('build.nameRequired');\n                if (value.length > 50) return t('build.nameMaxLength');\n                return '';\n            case 'desc':\n                if (value.length > 1000) return t('build.descMaxLength');\n                return '';\n            default:\n                return '';\n        }\n    };\n\n    // Handle field change\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        const error = validateField(name, value);\n\n        setFormData(prev => ({ ...prev, [name]: value }));\n        setErrors(prev => ({ ...prev, [name]: error }));\n    };\n\n    // Validate entire form\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n\n        Object.keys(formData).forEach(key => {\n            const error = validateField(key, formData[key]);\n            if (error) {\n                formErrors[key] = error;\n                isValid = false;\n            }\n        });\n\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const { message, toast } = useToast()\n    // Handle form submission\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        const isValid = validateForm();\n        // console.log('Form data:', errors);\n        if (!isValid) return toast({\n            title: t('prompt'),\n            variant: 'error',\n            description: Object.keys(errors).map(key => errors[key]),\n        })\n\n        onSave(formData)\n    };\n\n    const uploadAvator = (file) => {\n        uploadFileWithProgress(file, (progress) => { }, 'icon').then(res => {\n            setFormData(prev => ({ ...prev, logo: res.relative_path, viewLogo: res.file_path }));\n        })\n    }\n\n    const previewAvatar = useMemo(() =>\n        formData.logo ? __APP_ENV__.BASE_URL + (formData.viewLogo || formData.logo) : '',\n        [formData.logo])\n\n    return <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n        <DialogHeader>\n            <DialogTitle>{t('build.editAssistant')}</DialogTitle>\n        </DialogHeader>\n        <div className=\"flex flex-col gap-8 py-6\">\n            <div className=\"\">\n                <label htmlFor=\"name\" className=\"bisheng-label\">{t('build.assistantAvatar')}<span className=\"bisheng-tip\">*</span></label>\n                <Avator\n                    value={previewAvatar}\n                    className=\"mt-2\"\n                    onChange={uploadAvator}\n                >\n                    <AppAvator id={6} flowType={5} className=\"size-9\"></AppAvator>\n                </Avator>\n\n                {errors.name && <p className=\"bisheng-tip mt-1\">{errors.name}</p>}\n            </div>\n            <div className=\"\">\n                <label htmlFor=\"name\" className=\"bisheng-label\">{t('build.assistantName')}<span className=\"bisheng-tip\">*</span></label>\n                <Input\n                    id=\"name\"\n                    name=\"name\"\n                    placeholder={t('build.enterName')}\n                    maxLength={50}\n                    showCount\n                    className=\"mt-2\"\n                    value={formData.name}\n                    onChange={handleChange}\n                />\n                {errors.name && <p className=\"bisheng-tip mt-1\">{errors.name}</p>}\n            </div>\n            <div className=\"\">\n                <label htmlFor=\"desc\" className=\"bisheng-label\">{t('build.assistantDesc')}</label>\n                <Textarea\n                    id=\"desc\"\n                    name=\"desc\"\n                    placeholder={t('build.enterDesc')}\n                    maxLength={1000}\n                    className=\"mt-2\"\n                    value={formData.desc}\n                    onChange={handleChange}\n                />\n                {errors.desc && <p className=\"bisheng-tip mt-1\">{errors.desc}</p>}\n            </div>\n        </div>\n        <DialogFooter>\n            <DialogClose>\n                <Button variant=\"outline\" className=\"px-11\" type=\"button\">{t('build.cancel')}</Button>\n            </DialogClose>\n            <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>{t('build.confirm')}</Button>\n        </DialogFooter>\n    </DialogContent>\n};\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/Header.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { OnlineState } from \"@/types/flow\";\nimport { ChevronLeft, SquarePen } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport EditAssistantDialog from \"./EditAssistantDialog\";\n\nexport default function Header({ loca, onSave, onLine, onTabChange }) {\n    const { t } = useTranslation()\n    const navigate = useNavigate()\n\n    const { assistantState, dispatchAssistant } = useAssistantStore()\n    console.log('assistantState :>> ', assistantState);\n    {/* Edit assistant */ }\n    const [editShow, setEditShow] = useState(false);\n\n    const needSaveRef = useRef(false)\n    useEffect(() => {\n        if (needSaveRef.current) {\n            needSaveRef.current = false\n            onSave()\n        }\n    }, [assistantState])\n    const handleEditSave = (form) => {\n        dispatchAssistant('setBaseInfo', form)\n        setEditShow(false)\n        needSaveRef.current = true\n    }\n\n    const [tabType, setTabType] = useState('edit')\n    return <div className=\"flex justify-between bg-background-login items-center border-b px-4\">\n        <div className=\"flex items-center gap-2 py-4\">\n            <Button variant=\"outline\" size=\"icon\" onClick={() => navigate(-1)}><ChevronLeft className=\"h-4 w-4\" /></Button>\n            <AppAvator id={assistantState.name} url={assistantState.viewLogo || assistantState.logo} flowType={5} className=\"ml-4\"></AppAvator>\n            <span id=\"app-title\" className=\"bisheng-title\">{assistantState.name}</span>\n            {/* edit dialog */}\n            <Dialog open={editShow} onOpenChange={setEditShow}>\n                <DialogTrigger asChild>\n                    <Button variant=\"ghost\" size=\"icon\"><SquarePen className=\"w-4 h-4\" /></Button>\n                </DialogTrigger>\n                {\n                    editShow && <EditAssistantDialog\n                        logo={assistantState.logo || ''}\n                        viewLogo={assistantState.viewLogo || ''}\n                        name={assistantState.name}\n                        desc={assistantState.desc}\n                        onSave={handleEditSave}\n                        loca={loca}\n                    ></EditAssistantDialog>\n                }\n            </Dialog>\n        </div>\n        <div className=\"flex gap-4 items-center\">\n            <div\n                className={`${tabType === 'edit' ? 'text-primary' : ''} hover:bg-secondary px-4 py-1 rounded-md cursor-pointer`}\n                onClick={() => { setTabType('edit'); onTabChange('edit') }}\n            >{t('api.assistantOrchestration')}</div>\n            <div\n                className={`${tabType === 'api' ? 'text-primary' : ''} hover:bg-secondary px-4 py-1 rounded-md cursor-pointer`}\n                onClick={() => { setTabType('api'); onTabChange('api') }}\n            >{t('api.externalPublishing')}</div>\n        </div>\n        <div className=\"flex gap-4\">\n            <Button variant=\"outline\" className=\"px-10\" type=\"button\" onClick={onSave}>{t('build.save')}</Button>\n            <Button type=\"submit\" className=\"px-10\" onClick={() => onLine(assistantState.status === OnlineState.OffLine)}>{assistantState.status === OnlineState.OnLine ? t('build.offline') : t('build.online')}</Button>\n        </div>\n    </div>\n};\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/ModelSelect.tsx",
    "content": "import Cascader from \"@/components/bs-ui/select/cascader\";\nimport { useModel } from \"@/pages/ModelPage/manage\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ModelSelect({ type = 'assistant', modelType = 'llm', value, onChange }) {\n    const { t } = useTranslation();\n\n    const { llmOptions, embeddings, isLoading } = useModel(type === 'assistant' ? type : 'llm')\n\n    const defaultValue = useMemo(() => {\n        let _defaultValue = []\n        const options = modelType === 'llm' ? llmOptions : embeddings\n        if (!value || !options || options.length === 0) return _defaultValue\n\n        options.forEach(option => {\n            const model = option.children?.find(el => el.value == value)\n            if (model) {\n                _defaultValue = [\n                    { value: option.value, label: option.label },\n                    { value: model.value, label: model.label }\n                ]\n                return true\n            }\n            return false\n        })\n        return _defaultValue\n    }, [value, llmOptions, embeddings])\n\n\n    if (isLoading) return null\n    return <Cascader\n        selectPlaceholder={t('build.selectModel')}\n        defaultValue={defaultValue}\n        options={modelType === 'llm' ? llmOptions : embeddings}\n        onChange={(val) => onChange(val[1])}\n    />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/Prompt.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { Settings2 } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport AutoPromptDialog from \"./AutoPromptDialog\";\n\nexport default function Prompt() {\n\n    const { t } = useTranslation()\n\n    const [open, setOpen] = useState(false);\n\n    const { assistantState, dispatchAssistant } = useAssistantStore()\n\n    useEffect(() => {\n        // Automatically enable optimization for new assistants\n        if (window.assistantCreate && assistantState.prompt) {\n            setOpen(true)\n            delete window.assistantCreate\n        }\n    }, [assistantState.prompt])\n\n    return <div className=\"w-[50%] h-full bg-background-login shadow-sm p-4 overflow-y-auto scrollbar-hide\">\n        <div className=\"flex-between-center\">\n            <span className=\"text-sm font-medium leading-none\">{t('build.assistantPortrait')}</span>\n            <Dialog open={open} onOpenChange={setOpen}>\n                <DialogTrigger asChild>\n                    <Button variant=\"link\" className=\"p-0\"><Settings2 className=\"mr-1 h-4 w-4\" />{t('build.automaticOptimization')}</Button>\n                </DialogTrigger>\n                {open && <AutoPromptDialog onOpenChange={setOpen}></AutoPromptDialog>}\n            </Dialog>\n        </div>\n        <Textarea\n            boxClassName='h-[90%]'\n            className=\"h-full border-none bg-transparent scrollbar-hide focus-visible:ring-0 resize-none text-sm text-muted-foreground\"\n            value={assistantState.prompt}\n            placeholder={t('prompt')}\n            onInput={(e => dispatchAssistant('setPrompt', { prompt: e.target.value }))}\n        ></Textarea>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/Setting.tsx",
    "content": "import AssistantSetting from \"@/components/Pro/security/AssistantSetting\";\nimport { TitleIconBg } from \"@/components/bs-comp/cardComponent\";\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport SkillSheet from \"@/components/bs-comp/sheets/SkillSheet\";\nimport ToolsSheet from \"@/components/bs-comp/sheets/ToolsSheet\";\nimport { ToolIcon } from \"@/components/bs-icons/tool\";\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/bs-ui/accordion\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Input, InputList, Textarea } from \"@/components/bs-ui/input\";\nimport {\n  QuestionTooltip,\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/bs-ui/tooltip\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { CircleHelp, CircleMinus, CirclePlus, Plus, RefreshCw } from \"lucide-react\";\nimport { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport ModelSelect from \"./ModelSelect\";\nimport Temperature from \"./Temperature\";\n\nexport default function Setting() {\n  const { t } = useTranslation();\n\n  const { appConfig } = useContext(locationContext)\n  let { assistantState, dispatchAssistant } = useAssistantStore();\n\n  return (\n    <div\n      id=\"skill-scroll\"\n      className=\"h-full w-[50%] overflow-y-auto scrollbar-hide\"\n    >\n      <h1 className=\"border bg-background-login indent-4 text-sm leading-8 text-muted-foreground\">\n        {t(\"build.basicConfiguration\")}\n      </h1>\n      <Accordion type=\"multiple\" className=\"w-full\">\n        {/* Basic configuration */}\n        <AccordionItem value=\"item-1\">\n          <AccordionTrigger>\n            <span>{t(\"build.modelConfiguration\")}</span>\n          </AccordionTrigger>\n          <AccordionContent className=\"py-2\">\n            <div className=\"mb-4 px-6\">\n              <label htmlFor=\"model\" className=\"bisheng-label\">\n                {t(\"build.model\")}\n              </label>\n              <ModelSelect\n                value={assistantState.model_name}\n                onChange={(val) =>\n                  dispatchAssistant(\"setting\", { model_name: val })\n                }\n              />\n            </div>\n            <div className=\"mb-4 px-6\">\n              <label htmlFor=\"slider\" className=\"bisheng-label\">\n                {t(\"build.temperature\")}\n              </label>\n              <Temperature\n                value={assistantState.temperature}\n                onChange={(val) =>\n                  dispatchAssistant(\"setting\", { temperature: val })\n                }\n              ></Temperature>\n            </div>\n            <div className=\"mb-4 px-6\">\n              <label htmlFor=\"slider\" className=\"bisheng-label flex gap-1\">\n                {t(\"build.maxToken\")}\n                <QuestionTooltip content={t(\"build.maxTokenTip\")}></QuestionTooltip>\n              </label>\n              <Input value={assistantState.max_token} type=\"number\" className=\"mt-2\" defaultValue={32000} min={0} onChange={e =>\n                dispatchAssistant(\"setting\", { max_token: Number(e.target.value) })\n              }></Input>\n            </div>\n          </AccordionContent>\n        </AccordionItem>\n        {/* Opening guide */}\n        <AccordionItem value=\"item-2\">\n          <AccordionTrigger>\n            <span>{t(\"build.openingIntroduction\")}</span>\n          </AccordionTrigger>\n          <AccordionContent className=\"py-2\">\n            <div className=\"mb-4 px-6\">\n              <label htmlFor=\"open\" className=\"bisheng-label\">\n                {t(\"build.openingStatement\")}\n              </label>\n              <Textarea\n                name=\"open\"\n                className=\"mt-2 min-h-[34px]\"\n                style={{ height: 56 }}\n                placeholder={t(\"build.assistantMessageFormat\")}\n                value={assistantState.guide_word}\n                onChange={(e) =>\n                  dispatchAssistant(\"setting\", { guide_word: e.target.value })\n                }\n              ></Textarea>\n              {assistantState.guide_word.length > 1000 && (\n                <p className=\"bisheng-tip mt-1\">\n                  {t(\"build.maximumPromptLength\")}\n                </p>\n              )}\n            </div>\n            <div className=\"mb-4 px-6\">\n              <label htmlFor=\"open\" className=\"bisheng-label flex gap-1\">\n                {t(\"build.guidingQuestions\")}\n                <TooltipProvider delayDuration={200}>\n                  <Tooltip>\n                    <TooltipTrigger asChild>\n                      <CircleHelp className=\"w-4 h-4\" />\n                    </TooltipTrigger>\n                    <TooltipContent>\n                      <p>{t(\"build.recommendQuestionsForUsers\")}</p>\n                    </TooltipContent>\n                  </Tooltip>\n                </TooltipProvider>\n              </label>\n              <InputList\n                className=\"mt-2\"\n                rules={[{ maxLength: 50, message: t(\"build.maxCharacters50\") }]}\n                value={assistantState.guide_question}\n                onChange={(list) => {\n                  dispatchAssistant(\"setting\", { guide_question: list });\n                }}\n                placeholder={t(\"build.enterGuidingQuestions\")}\n              ></InputList>\n            </div>\n          </AccordionContent>\n        </AccordionItem>\n        {/* Content security review */}\n        {appConfig.isPro && <AssistantSetting id={assistantState.id} type={3} />}\n      </Accordion>\n      <h1 className=\"border-b bg-background-login indent-4 text-sm leading-8 text-muted-foreground\">\n        {t(\"build.knowledge\")}\n      </h1>\n      <Accordion type=\"multiple\" className=\"w-full\">\n        {/* Knowledge base */}\n        <AccordionItem value=\"item-1\">\n          <AccordionTrigger>\n            <div className=\"flex flex-1 items-center justify-between\">\n              <span>{t(\"build.knowledgeBase\")}</span>\n              {/* <Popover>\n              <PopoverTrigger asChild className=\"group\">\n                  <Button variant=\"link\" size=\"sm\"><TriangleRightIcon className=\"group-data-[state=open]:rotate-90\" /> {t('build.autoCall')}</Button>\n              </PopoverTrigger>\n              <PopoverContent className=\"w-[560px]\">\n                  <div className=\"flex justify-between\">\n                      <label htmlFor=\"model\" className=\"bisheng-label\">{t('build.callingMethod')}</label>\n                      <div>\n                          <RadioCard checked={false} title={t('build.autoCall')} description={t('build.autoCallDescription')} calssName=\"mb-4\"></RadioCard>\n                          <RadioCard checked title={t('build.onDemandCall')} description={t('build.onDemandCallDescription')} calssName=\"mt-4\"></RadioCard>\n                      </div>\n                  </div>\n              </PopoverContent>\n          </Popover> */}\n            </div>\n          </AccordionTrigger>\n          <AccordionContent className=\"py-2\">\n            <div className=\"mb-4 px-6\">\n              <div className=\"flex gap-4\">\n                <KnowledgeSelect\n                  type=\"file\"\n                  multiple\n                  value={assistantState.knowledge_list.map(el => ({ label: el.name, value: el.id }))}\n                  onChange={(vals) =>\n                    dispatchAssistant(\"setting\", { knowledge_list: vals.map(el => ({ name: el.label, id: el.value })) })\n                  }\n                >\n                  {(reload) => (\n                    <div className=\"flex justify-between\">\n                      <Link to={\"/filelib\"} target=\"_blank\">\n                        <Button variant=\"link\">\n                          <CirclePlus size={16} className=\"mr-1\" />{\" \"}\n                          {t(\"build.createNewKnowledge\")}\n                        </Button>\n                      </Link>\n                      <Button variant=\"link\" onClick={() => reload(1, '')}>\n                        <RefreshCw size={16} className=\"mr-1\" /> {t(\"build.refresh\")}\n                      </Button>\n                    </div>\n                  )}\n                </KnowledgeSelect>\n              </div>\n            </div>\n          </AccordionContent>\n        </AccordionItem>\n      </Accordion>\n      <h1 className=\"border-b bg-background-login indent-4 text-sm leading-8 text-muted-foreground\">\n        {t(\"build.abilities\")}\n      </h1>\n      <Accordion\n        type=\"multiple\"\n        className=\"w-full\"\n        onValueChange={(e) =>\n          e.includes(\"skill\") &&\n          document.getElementById(\"skill-scroll\").scrollTo({ top: 9999 })\n        }\n      >\n        {/* Tools */}\n        <AccordionItem value=\"item-1\">\n          <AccordionTrigger>\n            <div className=\"flex flex-1 items-center justify-between\">\n              <span>{t(\"build.tools\")}</span>\n              <ToolsSheet\n                select={assistantState.tool_list}\n                onSelect={(tool) =>\n                  dispatchAssistant(\"setting\", {\n                    tool_list: [...assistantState.tool_list, tool],\n                  })\n                }\n              >\n                <Plus\n                  className=\"mr-2 text-primary hover:text-primary/80 dark:text-slate-50\"\n                  onClick={(e) => e.stopPropagation()}\n                ></Plus>\n              </ToolsSheet>\n            </div>\n          </AccordionTrigger>\n          <AccordionContent>\n            <div className=\"px-4\">\n              {assistantState.tool_list.map((tool) => (\n                <div\n                  key={tool.id}\n                  className=\"group mt-2 flex cursor-pointer items-center justify-between\"\n                >\n                  <div className=\"flex items-center gap-2\">\n                    <TitleIconBg id={tool.id} className=\"h-7 w-7\">\n                      <ToolIcon />\n                    </TitleIconBg>\n                    <p className=\"text-sm\">{tool.name}</p>\n                  </div>\n                  <CircleMinus\n                    className=\"w-4 h-4 hidden text-primary group-hover:block\"\n                    onClick={() =>\n                      dispatchAssistant(\"setting\", {\n                        tool_list: assistantState.tool_list.filter(\n                          (t) => t.id !== tool.id\n                        ),\n                      })\n                    }\n                  />\n                </div>\n              ))}\n            </div>\n          </AccordionContent>\n        </AccordionItem>\n        {/* Skills */}\n        <AccordionItem value=\"skill\">\n          <AccordionTrigger>\n            <div className=\"flex flex-1 items-center justify-between\">\n              <span className=\"flex items-center gap-1\">\n                <span>{t(\"build.skill\")}</span>\n                <TooltipProvider delayDuration={0}>\n                  <Tooltip>\n                    <TooltipTrigger asChild>\n                      <CircleHelp className=\"w-4 h-4\" />\n                    </TooltipTrigger>\n                    <TooltipContent>\n                      <p className=\"text-slate-50\">{t(\"build.skillDescription\")}</p>\n                    </TooltipContent>\n                  </Tooltip>\n                </TooltipProvider>\n              </span>\n              <SkillSheet\n                select={assistantState.flow_list}\n                onSelect={(flow) =>\n                  dispatchAssistant(\"setting\", {\n                    flow_list: [...assistantState.flow_list, flow],\n                  })\n                }\n              >\n                <Plus\n                  className=\"mr-2 text-primary hover:text-primary/80 dark:text-slate-50\"\n                  onClick={(e) => e.stopPropagation()}\n                ></Plus>\n              </SkillSheet>\n            </div>\n          </AccordionTrigger>\n          <AccordionContent>\n            <div className=\"px-4\">\n              {assistantState.flow_list.map((flow) => (\n                <div\n                  key={flow.id}\n                  className=\"group mt-2 flex cursor-pointer items-center justify-between\"\n                >\n                  <div className=\"flex items-center gap-2\">\n                    <AppAvator id={flow.name} url={flow.logo} flowType={1} className=\"h-7 w-7\"></AppAvator>\n                    <p className=\"text-sm\">{flow.name}</p>\n                  </div>\n                  <CircleMinus\n                    className=\"w-4 h-4 hidden text-primary group-hover:block\"\n                    onClick={() =>\n                      dispatchAssistant(\"setting\", {\n                        flow_list: assistantState.flow_list.filter(\n                          (t) => t.id !== flow.id\n                        ),\n                      })\n                    }\n                  />\n                </div>\n              ))}\n            </div>\n          </AccordionContent>\n        </AccordionItem>\n        {/* <TaggingSheet>\n          <Plus\n            className=\"mr-2 text-primary hover:text-primary/80\"\n            onClick={(e) => e.stopPropagation()}\n            ></Plus>\n        </TaggingSheet> */}\n      </Accordion>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/Temperature.tsx",
    "content": "import { ButtonNumber } from \"@/components/bs-ui/button\";\nimport { Slider } from \"@/components/bs-ui/slider\";\n\nexport default function Temperature({ value, onChange }) {\n\n    const props = { max: 2, min: 0, step: 0.1 }\n\n    return <div className=\"flex gap-4 mt-2\">\n        <Slider\n            name=\"slider\"\n            value={[value]}\n            onValueChange={(v) => onChange(v[0])}\n            {...props}\n        />\n        <ButtonNumber\n            value={value}\n            onChange={onChange}\n            {...props}\n        />\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/TestChat.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport ChatComponent from \"@/components/bs-comp/chatComponent\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function TestChat({ assisId, guideQuestion, onClear }) {\n    const token = localStorage.getItem(\"ws_token\") || '';\n    const wsUrl = `${location.host}${__APP_ENV__.BASE_URL}/api/v1/assistant/chat/${assisId}?t=${token}`\n\n    const { messages, changeChatId } = useMessageStore()\n    const { assistantState } = useAssistantStore()\n    const { t } = useTranslation()\n\n    // Generate unique ID for edit page\n    // const chatIdRef = useRef(generateUUID(32))\n    useEffect(() => {\n        // Establish websocket\n        changeChatId('')\n    }, [])\n\n    // Get parameters before sending to send via websocket\n    const getWsParamData = (action, msg, data) => {\n        const inputKey = 'input';\n        const msgData = {\n            chatHistory: messages,\n            flow_id: data?.id || assisId,\n            chat_id: '',\n            name: assistantState.name,\n            description: assistantState.desc,\n            inputs: {}\n        } as any\n        if (msg) msgData.inputs = { [inputKey]: msg }\n        if (data) msgData.inputs.data = data\n        if (action === 'continue') msgData.action = action\n        return [msgData, inputKey]\n    }\n\n    return <div className=\"relative h-full px-4 bs-chat-bg bg-background-login\" style={{ backgroundImage: `url(${__APP_ENV__.BASE_URL}/assets/points.png)` }}>\n        <div className=\"absolute flex w-full left-0 top-0 gap-2 px-4 py-2 items-center z-10 bg-background-login shadow-sm\">\n            <AppAvator id={assistantState.name} url={assistantState.viewLogo || assistantState.logo} flowType={5} className=\"\"></AppAvator>\n            <span className=\"text-sm \">{t('build.debugPreview')}</span>\n        </div>\n        <ChatComponent\n            debug\n            clear\n            logo={<AppAvator id={assistantState.name} url={assistantState.viewLogo || assistantState.logo} flowType={5} className=\"\"></AppAvator>}\n            questions={guideQuestion}\n            useName=''\n            guideWord=''\n            wsUrl={wsUrl}\n            onBeforSend={getWsParamData}\n            onClickClear={onClear}\n        ></ChatComponent>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/assistant/editAssistant/index.tsx",
    "content": "import ApiMainPage from \"@/components/bs-comp/apiComponent\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { changeAssistantStatusApi, saveAssistanttApi } from \"@/controllers/API/assistant\";\nimport { checkAppEditPermission } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { OnlineState } from \"@/types/flow\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router\";\nimport { unstable_useBlocker as useBlocker, useNavigate, useParams } from \"react-router-dom\";\nimport Header from \"./Header\";\nimport Prompt from \"./Prompt\";\nimport Setting from \"./Setting\";\nimport TestChat from \"./TestChat\";\n\nexport default function editAssistant() {\n    const { t } = useTranslation()\n    const { id: assisId } = useParams()\n    const navigate = useNavigate()\n    const { state } = useLocation();\n    const loca = state?.flow; // Get the passed flow data\n\n    // assistant data\n    const { assistantState, changed, loadAssistantState, changeStatus, saveAfter, destroy } = useAssistantStore()\n    const { startNewRound, insetSystemMsg, insetBsMsg, destory, setShowGuideQuestion } = useMessageStore()\n    const [checking, setChecking] = useState(true)\n\n    const flowInit = async () => {\n        await checkAppEditPermission(assisId, 5)\n\n        loadAssistantState(assisId, 'v1').then((res) => {\n            setChecking(false)\n            setShowGuideQuestion(true)\n            setGuideQuestion(res.guide_question?.filter((item) => item) || [])\n            res.guide_word && insetBsMsg(res.guide_word)\n        })\n    }\n\n    useEffect(() => {\n        flowInit()\n    }, [])\n\n    // Store displayed guide words independently\n    const [guideQuestion, setGuideQuestion] = useState([])\n    const [openChat, setOpenChat] = useState(true)\n    const handleStartChat = async (save) => {\n        if (!handleCheck()) return\n        destory()\n        setOpenChat(false)\n        save ? await handleSave(true) : await new Promise((resolve) => setTimeout(resolve, 0))\n        saveAfter()\n        startNewRound(t('build.configurationUpdated'))\n        setGuideQuestion(assistantState.guide_question.filter((item) => item))\n        assistantState.guide_word && insetBsMsg(assistantState.guide_word)\n        setOpenChat(true)\n    }\n\n    const { message, toast } = useToast()\n    // Save assistant details\n    const handleSave = async (showMessage = false) => {\n        if (!handleCheck()) return\n        await captureAndAlertRequestErrorHoc(saveAssistanttApi({\n            ...assistantState,\n            flow_list: assistantState.flow_list.map(item => item.id),\n            tool_list: assistantState.tool_list.map(item => item.id),\n            knowledge_list: assistantState.knowledge_list.map(item => item.id),\n            guide_question: assistantState.guide_question.filter((item) => item),\n            logo: assistantState.viewLogo ? assistantState.logo : '',\n        })).then(res => {\n            if (!res) return\n            showMessage && message({\n                title: t('prompt'),\n                variant: 'success',\n                description: t('skills.saveSuccessful')\n            })\n        })\n        saveAfter()\n    }\n\n    // Publish assistant online\n    const handleOnline = async (online) => {\n        if (!handleCheck()) return\n        if (online) {\n            await handleSave()\n            await captureAndAlertRequestErrorHoc(changeAssistantStatusApi(assistantState.id, 2)).then(res => {\n                if (res === false) return\n                message({\n                    title: t('prompt'),\n                    variant: 'success',\n                    description: t('skills.onlineSuccessful')\n                })\n            })\n            setTimeout(() => {\n                navigate('/build')\n            }, 1200);\n        } else {\n            captureAndAlertRequestErrorHoc(changeAssistantStatusApi(assistantState.id, 1)).then(res => {\n                if (res === false) return\n                changeStatus(1)\n            })\n        }\n    }\n\n    // Validate assistant data\n    const handleCheck = () => {\n        const errors = []\n        if (\n            assistantState.max_token === undefined ||\n            !Number.isInteger(assistantState.max_token) ||\n            assistantState.max_token < 0 ||\n            assistantState.max_token > 100 * 10000\n        ) {\n            errors.push(t('skills.chatHistoryMaxToken'));\n        }\n        if (!assistantState.model_name) {\n            errors.push(t('build.modelRequired'))\n        }\n        if (assistantState.guide_question.some(que => que.length > 50)) {\n            errors.push(t('skills.guideQuestions50'))\n        }\n        if (assistantState.guide_word.length > 1000) {\n            errors.push(t('skills.promptWords1000'))\n        }\n\n        if (errors.length) {\n            message({\n                title: t('prompt'),\n                variant: 'error',\n                description: errors\n            })\n            return false\n        }\n        return true\n    }\n\n    // Cleanup\n    useEffect(() => {\n        return destroy\n    }, [])\n\n    const [showApiPage, setShowApiPage] = useState(false)\n    // Save on leave\n    const blocker = useBeforeUnload(changed, checking)\n    const handleSaveAndClose = async () => {\n        await handleSave(true)\n        blocker.proceed?.()\n    }\n\n    if (checking) return null\n\n    return <div className=\"bg-background-main\">\n        <Header loca={loca} onSave={() => handleSave(true)} onLine={handleOnline} onTabChange={(t) => setShowApiPage(t === 'api')}></Header>\n        <div className=\"h-[calc(100vh-70px)]\">\n            <div className={`flex h-full ${showApiPage ? 'hidden' : ''}`}>\n                <div className=\"w-[60%]\">\n                    <div className=\"text-md font-medium leading-none p-4 shadow-sm\">{t('build.assistantConfiguration')}</div>\n                    <div className=\"flex h-[calc(100vh-120px)]\">\n                        <Prompt></Prompt>\n                        <Setting></Setting>\n                    </div>\n                </div>\n                <div className=\"w-[40%] h-full bg-[#fff] dark:bg-background-main relative\">\n                    {openChat && <TestChat guideQuestion={guideQuestion} assisId={assisId} onClear={() => handleStartChat(false)}></TestChat>}\n                    {/* Mask button triggered by changes to save */}\n                    {changed && <div className=\"absolute w-full bottom-0 h-60\" onClick={() => handleStartChat(true)}></div>}\n                </div>\n            </div>\n            <div className={`h-full ${showApiPage ? '' : 'hidden'}`}>\n                <ApiMainPage />\n            </div>\n        </div>\n        <Dialog open={blocker.state === \"blocked\"}>\n            <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                <DialogHeader>\n                    <DialogTitle>{t('prompt')}</DialogTitle>\n                    <DialogDescription>{assistantState.status === OnlineState.OnLine ? t('build.assistantOnlineNoEdit') : t('build.unsavedChangesLeave')}</DialogDescription>\n                </DialogHeader>\n                <DialogFooter>\n                    {\n                        assistantState.status !== OnlineState.OnLine && <Button className=\"leave h-8\" onClick={handleSaveAndClose}>\n                            {t('build.leaveAndSave')}\n                        </Button>\n                    }\n                    <Button className=\"h-8\" variant=\"destructive\" onClick={() => blocker.proceed?.()}>\n                        {t('build.leaveWithoutSave')}\n                    </Button>\n                    <Button className=\"h-8\" variant=\"outline\" onClick={() => {\n                        blocker.reset?.()\n                    }}>\n                        {t('cancel')}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    </div>\n};\n\n\n// Save prompt when leaving page\nconst useBeforeUnload = (changed, checking) => {\n    const { t } = useTranslation()\n\n    // Prompt to save when leaving\n    useEffect(() => {\n        if (checking) return // Don't prompt when checking permissions\n        const fun = (e) => {\n            var confirmationMessage = `${t('flow.unsavedChangesConfirmation')}`;\n            (e || window.event).returnValue = confirmationMessage; // Compatible with different browsers\n            return confirmationMessage;\n        }\n        window.addEventListener('beforeunload', fun);\n        return () => { window.removeEventListener('beforeunload', fun) }\n    }, [checking])\n\n    return useBlocker(changed);\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/DialogueWork.tsx",
    "content": "// DialogueWork.tsx\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport LingSiWork from \"./LingSiWork\";\nimport Index from \"./index\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\n\nexport default function DialogueWork() {\n  const [formData, setFormData] = useState(null); // For sharing data between tabs\n  const [defaultValue] = useState(\"client\");\n  const { t, i18n } = useTranslation();\n  useEffect(() => {\n    i18n.loadNamespaces('tool');\n  }, [i18n]);\n\n  return (\n    <div className=\"w-full h-full px-2 pt-4 relative\">\n      <Tabs defaultValue={defaultValue} className=\"w-full mb-[40px]\">\n        <TabsList className=\"\">\n          <TabsTrigger value=\"client\">{t('bench.daily')}</TabsTrigger>\n          <TabsTrigger value=\"lingsi\" className=\"roundedrounded-xl\">{t('bench.lingsi')}</TabsTrigger>\n        </TabsList>\n        <TabsContent value=\"client\" key=\"client-tab\">\n          <Index formData={formData} setFormData={setFormData} />\n        </TabsContent>\n        <TabsContent value=\"lingsi\">\n          <LingSiWork formData={formData} setFormData={setFormData} />\n        </TabsContent>\n      </Tabs>\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/FormInput.tsx",
    "content": "// src/features/chat-config/components/FormInput.tsx\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport { ReactNode } from \"react\";\n\nexport const FormInput = ({\n    label,\n    value,\n    error,\n    placeholder = '',\n    maxLength,\n    type = 'text',\n    onChange,\n    isTextarea = false,\n}: {\n    label: ReactNode;\n    value: string;\n    error: string;\n    maxLength?: number;\n    onChange: (value: string) => void;\n    type?: string;\n    placeholder?: string;\n    isTextarea?: boolean;\n}) => {\n    const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n        const newValue = e.target.value;\n        if (!maxLength || newValue.length <= maxLength) {\n            onChange(newValue);\n        }\n    };\n\n    return (\n        <div className={`mb-6 ${isTextarea ? '' : 'pr-96'}`}>\n            {typeof label === 'string' ? <p className=\"text-lg font-bold mb-2\">{label}</p> : label}\n            {isTextarea ? (\n                <Textarea\n                    value={value}\n                    placeholder={placeholder}\n                    onChange={handleChange}\n                    className=\"mt-3 min-h-48\"\n                    maxLength={maxLength}\n                />\n            ) : (\n                <Input\n                    value={value}\n                    type={type}\n                    placeholder={placeholder}\n                    onChange={handleChange}\n                    className=\"mt-3\"\n                    maxLength={maxLength}\n                />\n            )}\n            {error && <p className=\"text-red-500 text-xs mt-1\">{error}</p>}\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/IconUploadSection.tsx",
    "content": "// src/features/chat-config/components/IconUploadSection.tsx\nimport Avator from \"@/components/bs-ui/input/avator\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport Compressor from \"compressorjs\";\nimport { Plus } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst MaxFileSize = 999 * 1024 * 1024; // 999MB\nexport const IconUploadSection = ({\n    label,\n    enabled,\n    image,\n    onToggle,\n    onUpload,\n}: {\n    label: string;\n    enabled: boolean;\n    image: string;\n    onToggle: (enabled: boolean) => void;\n    onUpload: (url: string, relative_path?: string) => void;\n}) => {\n\n    const { toast } = useToast();\n    const { t } = useTranslation();\n\n    const handleFileChange = async (file: File | null) => {\n        if (!file) return onUpload('');\n\n        new Compressor(file, {\n            quality: 0.6, // Compression quality (0-1)\n            maxWidth: 300,\n            maxHeight: 300,\n            success(result) {\n                // Compressed file (result is a Blob type)\n                const compressedFile = new File([result], file.name, { type: result.type });\n                uploadFileWithProgress(compressedFile, (progress) => { }, 'icon', '').then(res => {\n                    onUpload(res.file_path, res.relative_path)\n                });\n            },\n            error(err) {\n                console.error(\"Compression failed:\", err);\n                toast({\n                    title: t('chat.uploadFailedCheckFormat'),\n                    description: err.message,\n                    variant: 'error'\n                })\n            },\n        });\n    }\n\n    return <div>\n        <div className=\"flex items-center gap-4\">\n            <Label className=\"bisheng-label\">{label}</Label>\n            {/* <Switch checked={enabled} onCheckedChange={onToggle} /> */}\n        </div>\n        <Avator\n            value={__APP_ENV__.BASE_URL + image}\n            size={MaxFileSize}\n            close\n            className=\"mt-3\"\n            onChange={handleFileChange}\n            accept=\"image/png,image/jpeg\"\n        >\n            <div className=\"size-28 rounded-sm border flex items-center justify-center\">\n                <Plus />\n            </div>\n        </Avator>\n    </div>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/LingSiWork.tsx",
    "content": "// src/features/chat-config/ChatConfig.tsx\nimport DeleteConfirmModal from \"@/components/LinSight/DeleteConfirmModal\";\nimport LocalFileImportDialog from \"@/components/LinSight/LocalFileImportDialog\";\nimport SopActionsBar from \"@/components/LinSight/SopActionsBar\";\nimport SopFormDrawer from \"@/components/LinSight/SopFormDrawer\";\nimport ImportFromRecordsDialog from \"@/components/LinSight/SopFromRecord\";\nimport SopSearchBar from \"@/components/LinSight/SopSearchBar\";\nimport SopTable from \"@/components/LinSight/SopTable\";\nimport ToolSelectorContainer from \"@/components/LinSight/ToolSelectorContainer\";\nimport ValidationDialog from \"@/components/LinSight/ValidationDialog\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Card, CardContent } from \"@/components/bs-ui/card\";\nimport { message, toast, useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { getWorkstationConfigApi, setWorkstationConfigApi } from \"@/controllers/API\";\nimport { sopApi } from \"@/controllers/API/linsight\";\nimport { getToolsApi } from \"@/controllers/API/tools\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { useDebounce } from \"@/util/hook\";\nimport { downloadFile } from \"@/util/utils\";\nimport { t } from \"i18next\";\nimport { cloneDeep } from \"lodash-es\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { FormInput } from \"./FormInput\";\nimport { Model } from \"./ModelManagement\";\nimport Preview from \"./Preview\";\nimport { ToggleSection } from \"./ToggleSection\";\n\nexport interface FormErrors {\n    sidebarSlogan: string;\n    welcomeMessage: string;\n    functionDescription: string;\n    inputPlaceholder: string;\n    modelNames: string[] | string[][];\n    webSearch?: Record<string, string>; // New: dynamic error storage\n    systemPrompt: string;\n    model: string;\n    kownledgeBase: string;\n}\nexport interface AssistantState {\n    task_model: string;\n    summary_model: string;\n}\nexport interface ChatConfigForm {\n    menuShow: boolean;\n    systemPrompt: string;\n    sidebarIcon: {\n        enabled: boolean;\n        image: string;\n        relative_path: string;\n    };\n    assistantIcon: {\n        enabled: boolean;\n        image: string;\n        relative_path: string;\n    };\n    sidebarSlogan: string;\n    welcomeMessage: string;\n    functionDescription: string;\n    inputPlaceholder: string;\n    models: Model[];\n    maxTokens: number;\n    voiceInput: {\n        enabled: boolean;\n        model: string;\n    };\n    webSearch: {\n        enabled: boolean;\n        tool: string;\n        params: {\n            api_key?: string;\n            base_url?: string;\n            engine?: string;\n        },\n        prompt: string;\n    };\n    knowledgeBase: {\n        enabled: boolean;\n        prompt: string;\n    };\n    fileUpload: {\n        enabled: boolean;\n        prompt: string;\n    };\n}\n\nexport default function index({ formData: parentFormData, setFormData: parentSetFormData }) {\n    const { t } = useTranslation()\n    const [keywords, setKeywords] = useState('');\n    const [datalist, setDatalist] = useState([]);\n    const [total, setTotal] = useState(1);\n    const [loading, setLoading] = useState(false);\n    const [page, setPage] = useState(1);\n    const [pageSize] = useState(10);\n    const [batchDeleting, setBatchDeleting] = useState(false);\n    const [selectedTools, setSelectedTools] = useState(() => {\n        return parentFormData?.linsightConfig?.tools || [];\n    });\n    const [showToolSelector, setShowToolSelector] = useState(false);\n    const [toolSearchTerm, setToolSearchTerm] = useState('');\n    const [pageInputValue, setPageInputValue] = useState('1');\n    const [activeToolTab, setActiveToolTab] = useState<'builtin' | 'api' | 'mcp'>('builtin');\n    const [initialized, setInitialized] = useState(false);\n    const [importDialogOpen, setImportDialogOpen] = useState(false);\n    const [localFileDialogOpen, setLocalFileDialogOpen] = useState(false);\n    const [importFiles, setImportFiles] = useState<File[]>([]);\n    const [isImporting, setIsImporting] = useState(false);\n    const [validationDialog, setValidationDialog] = useState({\n        open: false,\n        errorTitle: t('bench.statusMessage'),\n        errorMsgs: []\n    });\n    const [importFilesData, setImportFilesData] = useState<File[]>([]);\n    const [duplicateNames, setDuplicateNames] = useState<string[]>([]);\n    const [duplicateDialogOpen, setDuplicateDialogOpen] = useState(false);\n    const [sopShowcase, setSopShowcase] = useState(false);\n    const [deleteConfirmModal, setDeleteConfirmModal] = useState({\n        open: false,\n        title: t('bench.confirmDelete'),\n        content: '',\n        onConfirm: () => { },\n        isBatch: false\n    });\n    const defaultFormValues = {\n        // menuShow: false,\n        systemPrompt: '',\n        sidebarIcon: {\n            enabled: true,\n            image: '',\n            relative_path: ''\n        },\n        assistantIcon: {\n            enabled: true,\n            image: '',\n            relative_path: ''\n        },\n        sidebarSlogan: '',\n        welcomeMessage: '',\n        functionDescription: '',\n        inputPlaceholder: t('bench.inputPlaceholder'),\n        models: [],\n        maxTokens: 15000,\n        voiceInput: {\n            enabled: false,\n            model: ''\n        },\n        webSearch: {\n            enabled: true,\n            tool: 'bing',\n            params: {},\n            prompt: ''\n        },\n        knowledgeBase: {\n            enabled: true,\n            prompt: ''\n        },\n        fileUpload: {\n            enabled: true,\n            prompt: ''\n        },\n        linsightConfig: {\n            linsight_entry: true,\n            input_placeholder: t('bench.inputPlaceholderDescription'),\n            tools: [],\n        }\n    };\n    const [formData, setFormData] = useState<ChatConfigForm>(parentFormData || defaultFormValues);\n    const [toolsData, setToolsData] = useState({\n        builtin: [],\n        api: [],\n        mcp: []\n    });\n    const [importFormData, setImportFormData] = useState<FormData | null>(null);\n\n    const fetchTools = async (type: 'builtin' | 'api' | 'mcp') => {\n        setLoading(true);\n        try {\n            let res;\n            if (type === 'builtin') {\n                res = await getToolsApi('default');\n            } else if (type === 'api') {\n                res = await getToolsApi('custom');\n            } else {\n                res = await getToolsApi('mcp');\n            }\n            setToolsData(prev => ({ ...prev, [type]: res || [] }));\n        } catch (error) {\n            toast({ variant: 'error', description: t('bench.fetchToolsFailed', { type }) });\n        } finally {\n            setLoading(false);\n        }\n    };\n    // Simple deep comparison (JSON serialization) to avoid circular refresh caused by parent-child mutual setting\n    const isDeepEqual = (a: any, b: any) => {\n        try {\n            return JSON.stringify(a) === JSON.stringify(b);\n        } catch {\n            return a === b;\n        }\n    };\n\n    useEffect(() => {\n        if (parentFormData && !isDeepEqual(formData, parentFormData)) {\n            setFormData(parentFormData);\n        }\n        if (parentFormData?.linsightConfig?.tools) {\n            setSelectedTools(parentFormData.linsightConfig.tools);\n        }\n    }, [parentFormData]);\n\n    useEffect(() => {\n        if (parentSetFormData && !isDeepEqual(formData, parentFormData)) {\n            parentSetFormData(formData);\n        }\n    }, [formData, parentFormData]);\n    useEffect(() => {\n        setFormData(prev => ({\n            ...prev,\n            linsightConfig: {\n                ...prev.linsightConfig,\n                tools: selectedTools\n            }\n        }));\n    }, [selectedTools]);\n    useEffect(() => {\n        setPageInputValue(page.toString());\n    }, [page]);\n    const filteredTools = useMemo(() => {\n        const currentTools = toolsData[activeToolTab] || [];\n        const searchTerm = (toolSearchTerm || '').toString().toLowerCase();\n\n        if (!searchTerm) return currentTools;\n\n        return currentTools\n            .map(tool => {\n                const toolNameMatch = tool.name.toLowerCase().includes(searchTerm);\n                const toolDescMatch = (tool.description || '').toLowerCase().includes(searchTerm);\n                const matchedChildren = tool.children?.filter(child =>\n                    child.name.toLowerCase().includes(searchTerm) ||\n                    (child.desc || '').toLowerCase().includes(searchTerm)\n                );\n                if (toolNameMatch || toolDescMatch || matchedChildren?.length) {\n                    return {\n                        ...tool,\n                        children: tool.children || [],\n                        _forceExpanded: true\n                    };\n                }\n\n                return null;\n            })\n            .filter(Boolean);\n    }, [toolsData, activeToolTab, toolSearchTerm]);\n    const fetchData = async (params: {\n        page: number;\n        pageSize: number;\n        keyword?: string;\n        sort?: 'asc' | 'desc';\n        showcase?: 0 | 1;\n    }) => {\n        setLoading(true);\n        try {\n            const res = await sopApi.getSopList({\n                page_size: params.pageSize,\n                page: params.page,\n                keywords: params.keyword || '',\n                // sort: params.sort,\n                showcase: params.showcase,\n            });\n\n            setDatalist(res.items || []);\n\n            const hasItems = res.items && res.items.length > 0;\n            const calculatedTotal = hasItems ? Math.max(res.total || 0, (params.page || page) * pageSize) : 0;\n            setTotal(calculatedTotal);\n        } catch (error) {\n            console.error('Request failed:', error);\n            toast({ variant: 'error', description: t('bench.requestFailed') });\n        } finally {\n            setLoading(false);\n        }\n    };\n    useEffect(() => {\n        fetchData({ page: 1, pageSize: 10, keyword: '', showcase: showcaseFilter });\n    }, []);\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n    const [isEditing, setIsEditing] = useState(false); // Mark whether currently in edit mode\n    const [currentSopId, setCurrentSopId] = useState(null); // Current editing SOP ID\n    // Toggle tool selection state\n    const toggleTool = (tool, child) => {\n        setSelectedTools(prev => {\n            const parentIndex = prev.findIndex(t => t.id === tool.id);\n\n            // Parent tool exists\n            if (parentIndex > -1) {\n                const parent = prev[parentIndex];\n                const childIndex = parent.children.findIndex(c => c.id === child.id);\n\n                // Create new child tools array\n                const newChildren = childIndex === -1\n                    ? [...parent.children, child]  // Add new child tool\n                    : parent.children.filter((_, i) => i !== childIndex); // Remove existing child tool\n\n                // Update or remove parent tool\n                return newChildren.length > 0\n                    ? [\n                        ...prev.slice(0, parentIndex),\n                        { ...parent, children: newChildren },\n                        ...prev.slice(parentIndex + 1)\n                    ]\n                    : prev.filter(t => t.id !== tool.id);\n            }\n\n            // Parent tool does not exist, add directly\n            return [...prev, { ...tool, children: [child] }];\n        });\n    };\n\n    const isToolSelected = (toolId, childId) => {\n        const parent = selectedTools.find(t => t.id === toolId);\n        if (!parent) return false;\n        return parent.children.some(c => c.id === childId);\n        return selectedTools.some(t => t.id === toolId);\n    };\n    let { assistantState, dispatchAssistant } = useAssistantStore();\n    const { handleSave } = useChatConfig(\n        selectedTools,\n        setFormData\n    );\n\n    // Redirect non-admin users\n    const { user } = useContext(userContext);\n    const navigate = useNavigate()\n\n    const removeTool = (index) => {\n        const newTools = [...selectedTools];\n        newTools.splice(index, 1);\n        setSelectedTools(newTools);\n    };\n    const handleDragEnd = (result) => {\n        if (!result.destination) return;\n\n        // Prevent dragging to invalid positions\n        if (result.destination.index === result.source.index) return;\n\n        const newSelectedTools = [...selectedTools];\n        const [removed] = newSelectedTools.splice(result.source.index, 1);\n        newSelectedTools.splice(result.destination.index, 0, removed);\n\n        setSelectedTools(newSelectedTools);\n    };\n    useEffect(() => {\n        if (!user.user_id) return;\n\n        if (user.role !== 'admin') {\n            navigate('/build/apps');\n            return;\n        }\n        const loadInitialData = async () => {\n            try {\n                let config;\n                if (!parentFormData) {\n                    config = await getWorkstationConfigApi();\n                } else {\n                    config = parentFormData;\n                }\n\n                if (config && 'menuShow' in config) {\n                    setFormData({\n                        ...defaultFormValues,\n                        ...config,\n                        inputPlaceholder: config.inputPlaceholder ||\n                            config.linsightConfig?.input_placeholder ||\n                            defaultFormValues.inputPlaceholder,\n                        linsightConfig: {\n                            ...defaultFormValues.linsightConfig,\n                            ...config.linsightConfig,\n                            input_placeholder: config.linsightConfig?.input_placeholder || '',\n                            linsight_entry: config.linsightConfig?.linsight_entry || true,\n                        }\n                    });\n\n                    const tools = config.linsightConfig?.tools || parentFormData?.linsightConfig?.tools;\n\n                    if (tools?.length > 0) {\n                        setSelectedTools(tools);\n                    }\n                } else {\n                    setFormData((prev) => ({\n                        ...prev,\n                        ...config\n                    }))\n                }\n            } catch (error) {\n                toast({ variant: 'error', description: t('chatConfig.initLoadFailed') });\n            } finally {\n                setInitialized(true);\n            }\n        };\n\n        loadInitialData();\n    }, [user]);\n\n    useEffect(() => {\n        if (initialized && !toolsData[activeToolTab].length) {\n            fetchTools(activeToolTab);\n        }\n    }, [activeToolTab, initialized]);\n\n    const [selectedItems, setSelectedItems] = useState([]);\n    const [sortConfig, setSortConfig] = useState({ key: null, direction: '' });\n    const { appConfig } = useContext(locationContext)\n    const handleSearch = (keyword: string, resetPage: boolean = false) => {\n        const newKeywords = keyword;\n        const newPage = resetPage || newKeywords.trim() === '' ? 1 : page;\n\n        fetchData({\n            keyword: newKeywords,\n            page: newPage,\n            pageSize,\n            showcase: showcaseFilter\n        });\n\n        // Update state\n        setKeywords(newKeywords);\n        setPageInputValue(newPage.toString());\n        if (newPage !== page) {\n            setPage(newPage);\n        }\n    };\n\n    // Refresh data when dialog closes\n    useEffect(() => {\n        if (!importDialogOpen) {\n            fetchData({\n                keyword: keywords,\n                page,\n                pageSize,\n                showcase: showcaseFilter\n            });\n        }\n    }, [importDialogOpen])\n\n\n    const handlePageInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const value = e.target.value;\n        if (value === '' || /^[1-9]\\d*$/.test(value)) {\n            setPageInputValue(value);\n        }\n    };\n\n    const handlePageInputConfirm = () => {\n        if (loading) return;\n\n        if (pageInputValue.trim() === '') return;\n\n        const pageNum = parseInt(pageInputValue);\n\n        if (pageNum !== page) {\n            setPage(pageNum);\n            fetchData({\n                page: pageNum,\n                keyword: keywords,\n                pageSize,\n                showcase: showcaseFilter\n            });\n        }\n\n    };\n\n    // Add Enter key support\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n        if (e.key === 'Enter') {\n            e.preventDefault();\n            handlePageInputConfirm();\n        }\n    };\n    const handleSelectItem = (id) => {\n        setSelectedItems(prev =>\n            prev.includes(id)\n                ? prev.filter(itemId => itemId !== id)\n                : [...prev, id]\n        );\n    };\n    const handleSort = (key: string, direction: 'asc' | 'desc') => {\n        setLoading(true);\n        setSortConfig({ key, direction });\n\n        // Call API for server-side sorting\n        sopApi.getSopList({\n            page_size: pageSize,\n            page: 1,\n            keywords: keywords,\n            sort: direction,\n            showcase: showcaseFilter,\n        })\n            .then(res => {\n                setDatalist(res.items || []);\n                setTotal(res.total || 0);\n                setPage(1);\n                setPageInputValue('1');\n            })\n            .catch(error => {\n                console.error('sort failed:', error);\n                toast({ variant: 'error', description: t('chatConfig.sortFailed') });\n            })\n            .finally(() => {\n                setLoading(false);\n            });\n    };\n    const handlePageChange = (newPage: number) => {\n        if (newPage === page || loading) return;\n\n        const safeTotalPages = Math.max(1, Math.ceil(total / pageSize));\n        newPage = Math.max(1, Math.min(newPage, safeTotalPages));\n\n        setPage(newPage);\n        setPageInputValue(newPage.toString());\n\n        const requestParams: any = {\n            page: newPage,\n            keyword: keywords,\n            pageSize,\n            showcase: showcaseFilter\n        };\n\n\n        if (sortConfig && sortConfig.direction) {\n            requestParams.sort = sortConfig.direction;\n\n        }\n\n        fetchData(requestParams);\n    };\n    const [showcaseFilter, setShowcaseFilter] = useState<0 | 1 | undefined>(undefined);\n    const handleShowcaseFilterChange = (val?: 0 | 1) => {\n        setShowcaseFilter(val);\n        fetchData({ page: 1, pageSize, keyword: keywords, sort: sortConfig.direction as any, showcase: val });\n        setPage(1);\n        setPageInputValue('1');\n    };\n    // Use custom debounce hook (500ms, non-immediate)\n    const debouncedCallback = useCallback((value: string) => {\n        handleSearch(value, true);\n    }, [showcaseFilter]);\n    const debouncedSearch = useDebounce(debouncedCallback, 500, false);\n    // Cancel only on unmount to avoid repeated cancellations due to dependency changes\n    useEffect(() => {\n        return () => {\n            (debouncedSearch as any)?.cancel?.();\n        }\n    }, []);\n\n    const handleBatchDelete = async () => {\n        setBatchDeleting(true);\n        try {\n            await sopApi.batchDeleteSop(selectedItems);\n\n            // Calculate new total\n            const newTotal = total - selectedItems.length;\n            const newTotalPages = Math.ceil(newTotal / pageSize);\n\n            // Determine new current page\n            let newPage = page;\n\n            if (datalist.length === selectedItems.length) {\n                if (page > 1) {\n                    newPage = page - 1;\n                }\n                else if (newTotal > 0) {\n                    newPage = 1;\n                }\n            }\n            if (newPage > newTotalPages && newTotalPages > 0) {\n                newPage = newTotalPages;\n            }\n\n            // Update state\n            setTotal(newTotal);\n            setSelectedItems([]);\n            setPage(newPage);  // Ensure page state is updated\n            setPageInputValue(newPage.toString());\n\n            // Re-fetch data\n            fetchData({\n                page: newPage,\n                pageSize: pageSize,\n                keyword: keywords,\n                showcase: showcaseFilter,\n            });\n\n            toast({\n                variant: 'success',\n                description: t('chatConfig.batchDeleteSuccess', { count: selectedItems.length })\n            });\n        } catch (error) {\n            toast({ variant: 'error', description: t('bench.deleteFailed') });\n        } finally {\n            setBatchDeleting(false);\n        }\n    };\n    const handleSelectAll = useCallback(() => {\n        const currentPageIds = datalist.map(item => item.id);\n        if (currentPageIds.every(id => selectedItems.includes(id))) {\n            setSelectedItems(prev => prev.filter(id => !currentPageIds.includes(id)));\n        } else {\n            setSelectedItems(prev => [...new Set([...prev, ...currentPageIds])]);\n        }\n    }, [datalist, selectedItems]);\n    const [sopForm, setSopForm] = useState({\n        id: '',\n        name: '',\n        description: '',\n        content: '',\n        rating: 0,\n        showcase: false\n    });\n\n    const resetSopForm = () => {\n        setSopForm({\n            id: '',\n            name: '',\n            description: '',\n            content: '',\n            rating: 0,\n            showcase: false\n        });\n        setIsEditing(false);\n        setCurrentSopId(null);\n    };\n    const handleSaveSOP = async () => {\n        try {\n            const requestData = {\n                name: sopForm.name.trim(),\n                description: sopForm.description.trim(),\n                content: sopForm.content.trim(),\n                rating: sopForm.rating\n            };\n\n            if (isEditing && sopForm.id) {\n                // Update operation\n                await sopApi.updateSop({\n                    id: sopForm.id,\n                    ...requestData\n                });\n                toast({ variant: 'success', description: t('chatConfig.sopUpdated') });\n            } else {\n                // Create operation\n                await sopApi.addSop(requestData);\n                toast({ variant: 'success', description: t('chatConfig.sopCreated') });\n            }\n\n            setIsDrawerOpen(false);\n            fetchData({\n                page: page,\n                pageSize: 10,\n                keyword: keywords,\n                showcase: showcaseFilter\n            }); // Refresh list\n            resetSopForm(); // Reset form\n        } catch (error) {\n        }\n    };\n\n    const [linsight, setLinsight] = useState({});\n    const handleEdit = async (id: string) => {\n        const sopToEdit = datalist.find(item => item.id === id);\n        const res = await sopApi.getSopShowcaseDetail({ sop_id: id });\n        // Set sopShowcase state based on whether there are execution results\n        setSopShowcase(res.execute_tasks.length === 0);\n\n        setLinsight({ ...res.version_info, tasks: res.execute_tasks });\n        if (!sopToEdit) {\n            toast({ variant: 'warning', description: t('chatConfig.notFoundSop') });\n            return;\n        }\n\n        setIsEditing(true);\n        setCurrentSopId(id);\n        setSopForm({\n            id: sopToEdit.id,\n            name: sopToEdit.name || '',\n            description: sopToEdit.description || '',\n            content: sopToEdit.content || '',\n            rating: sopToEdit.rating || 0,\n            showcase: sopToEdit.showcase || false  // Add featured status\n        });\n        setIsDrawerOpen(true);\n    };\n\n    const handleDelete = (id: string) => {\n        bsConfirm({\n            title: t('chatConfig.deleteConfirmTitle'),\n            desc: t('chatConfig.deleteConfirmDesc'),\n            showClose: true,\n            okTxt: t('chatConfig.confirmDelete'),\n            canelTxt: t('cancel'),\n            onOk(next) {\n                sopApi.deleteSop(id)\n                    .then(() => {\n                        toast({\n                            variant: 'success',\n                            description: t('chatConfig.deleteSuccess')\n                        });\n\n                        setSelectedItems(prevItems => prevItems.filter(itemId => itemId !== id));\n\n                        // Fix here - ensure correct parameters are passed\n                        if (datalist.length === 1 && page > 1) {\n                            setPage(page - 1);\n                            fetchData({\n                                page: page - 1,\n                                pageSize: pageSize,\n                                keyword: keywords,\n                                showcase: showcaseFilter,\n                            });\n                        } else {\n                            fetchData({\n                                page: page,\n                                pageSize: pageSize,\n                                keyword: keywords,\n                                showcase: showcaseFilter,\n                            });\n                        }\n                        next();\n                    })\n                    .catch(error => {\n                        console.error('delete sop failed:', error);\n                        toast({\n                            variant: 'error',\n                            description: t('chatConfig.deleteFailed'),\n                            details: error.message || t('chatConfig.requestFailed')\n                        });\n                    });\n            },\n            onCancel() {\n            }\n        });\n    };\n\n    const toggleGroup = useCallback((group: any, checked: boolean) => {\n        setSelectedTools(prev => {\n            const tools = prev.filter(t => t.id !== group.id);\n            if (checked) {\n                tools.push(cloneDeep(group));\n            }\n\n            return [...tools];\n        });\n    }, []);\n    const { getRootProps: getLocalFileRootProps, getInputProps: getLocalFileInputProps } = useDropzone({\n        multiple: false,\n        accept: {\n            // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.csv'],\n            // 'application/*': ['.xlsx'] // Combine extension and MIME type for double verification\n            \"\": [\".xlsx\"],\n        },\n        useFsAccessApi: false,\n        onDrop: (acceptedFiles, rejectedFiles) => {\n            // 1. If user uploaded unsupported files (e.g. .pdf, .docx)\n            if (rejectedFiles.length > 0) {\n                message({ variant: 'warning', description: t('chatConfig.uploadXlsxTip') });\n                return;\n            }\n\n            // 2. If user uploaded .xlsx file, but filename may be tampered (e.g. fake.xlsx.pdf)\n            const file = acceptedFiles[0];\n            const ext = file.name.split('.').pop().toLowerCase();\n            if (ext !== 'xlsx') {\n                message({ variant: 'warning', description: t('chatConfig.fileExtMustBeXlsx') });\n                return;\n            }\n            setImportFiles(acceptedFiles);\n        },\n    });\n    const handleLocalFileImport = async () => {\n        setIsImporting(true);\n        try {\n            const formData = new FormData();\n            formData.append('file', importFiles[0]);\n\n            setImportFilesData([importFiles[0]]); // Only save one file\n            const result = await sopApi.UploadSopRecord(formData);\n            console.log('API Response:', result); // For debugging\n            const { error_rows, success_rows, repeat_rows } = result\n            if (error_rows.length) {\n                setValidationDialog({\n                    open: true,\n                    errorTitle: t('bench.manualImportSummary', { row: error_rows.length + success_rows.length, successRow: success_rows.length, errorRow: error_rows.length }),\n                    errorMsgs: error_rows.map(row => `${t('bench.manualImportRow', { row: row.index })}：${t('bench.' + row.error_msg)}`)\n                });\n            } else {\n                if (repeat_rows) {\n                    const formData = new FormData();\n\n                    formData.append('file', importFiles[0]);\n\n                    formData.append('ignore_error', 'false');\n                    formData.append('override', 'false');\n                    formData.append('save_new', 'false');\n                    const res = await sopApi.UploadSopRecord(formData);\n\n                    console.log(res, repeat_rows);\n                    setImportDialogOpen(true)\n                    setDuplicateNames(repeat_rows);\n                    setDuplicateDialogOpen(true);\n                    setImportFormData(formData);\n                } else {\n                    toast({ variant: 'success', description: t('chatConfig.submitSuccess') });\n                    fetchData({\n                        page: page,\n                        pageSize: pageSize,\n                        keyword: keywords,\n                        showcase: showcaseFilter\n                    });\n                }\n            }\n\n        } finally {\n            setIsImporting(false);\n        }\n    };\n    const handleValidationDialogConfirm = async () => {\n        const formData = new FormData();\n        importFilesData.forEach(file => {\n            formData.append('file', file);\n        });\n        formData.append('ignore_error', 'true');\n        formData.append('override', 'false');\n        formData.append('save_new', 'false');\n\n        setValidationDialog(prev => ({ ...prev, open: false }));\n\n\n\n        const res = await captureAndAlertRequestErrorHoc(sopApi.UploadSopRecord(formData));\n        if (res?.repeat_name) {\n            setImportDialogOpen(true)\n            setDuplicateNames(res.repeat_name);\n            setDuplicateDialogOpen(true);\n            setImportFormData(formData);\n            return\n        } else {\n            fetchData({\n                page: page,\n                pageSize: pageSize,\n                keyword: keywords,\n                showcase: showcaseFilter\n            });\n            toast({ variant: 'success', description: t('chatConfig.submitSuccess') });\n        }\n    };\n    return (\n        <div className=\" h-full overflow-y-scroll scrollbar-hide relative bg-background-main\">\n            {loading && (\n                <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                    <LoadingIcon />\n                </div>\n            )}\n            <Card className=\"rounded-none\">\n                <CardContent className=\"pt-4 relative  \">\n                    <div className=\"w-full  max-h-[calc(100vh-180px)] overflow-y-scroll scrollbar-hide\">\n                        <ToggleSection\n                            title={t('chatConfig.workstationEntry')}\n                            enabled={formData.linsightConfig?.linsight_entry}\n                            onToggle={(enabled) => setFormData(prev => ({\n                                ...prev,\n                                linsightConfig: {\n                                    ...prev.linsightConfig,\n                                    linsight_entry: enabled\n                                }\n                            }))}\n                        >{null}</ToggleSection>\n                        <FormInput\n                            label={t('chatConfig.inputPlaceholder')}\n                            value={formData.linsightConfig?.input_placeholder}\n                            placeholder={t('chatConfig.linsightPlaceholder')}\n                            maxLength={100}\n                            onChange={(v) => {\n                                setFormData(prev => ({\n                                    ...prev,\n                                    linsightConfig: {\n                                        ...prev.linsightConfig,\n                                        input_placeholder: v\n                                    }\n\n                                }));\n                            }} error={\"\"} />\n                        <div className=\"mb-6\">\n                            <p className=\"text-lg font-bold mb-2\">{t('chatConfig.linsightTools')}</p>\n                            <ToolSelectorContainer\n                                toolsData={toolsData}\n                                selectedTools={selectedTools}\n                                toggleTool={toggleTool}\n                                removeTool={removeTool}\n                                isToolSelected={isToolSelected}\n                                handleDragEnd={handleDragEnd}\n                                toggleGroup={toggleGroup}\n                                activeToolTab={activeToolTab}\n                                setActiveToolTab={setActiveToolTab}\n                                showToolSelector={showToolSelector}\n                                setShowToolSelector={setShowToolSelector}\n                                toolSearchTerm={toolSearchTerm}\n                                setToolSearchTerm={setToolSearchTerm}\n                            />\n                        </div>\n\n                        <div className=\"mb-6\">\n                            <p className=\"text-lg font-bold mb-2\">{t('chatConfig.linsightManual')}</p>\n                            <div className=\"flex items-center gap-2 mb-2\">\n                                <SopSearchBar\n                                    value={keywords}\n                                    placeholder={t('chatConfig.searchManual')}\n                                    onChangeValue={setKeywords}\n                                    onSearch={(v) => handleSearch(v)}\n                                    debounceMs={500}\n                                    debounceKey={showcaseFilter}\n                                />\n                                <SopActionsBar\n                                    importFromRecord={() => { setImportDialogOpen(true); setImportFilesData(null) }}\n                                    importFromLocal={() => setLocalFileDialogOpen(true)}\n                                    createManual={() => {\n                                        setIsEditing(false);\n                                        setCurrentSopId(null);\n                                        setSopShowcase(true);\n                                        setSopForm({ id: '', name: '', description: '', content: '', rating: 0, showcase: false });\n                                        setIsDrawerOpen(true);\n                                    }}\n                                    batchDelete={() => {\n                                        bsConfirm({\n                                            title: t('chatConfig.batchDeleteConfirm'),\n                                            desc: t('chatConfig.batchDeleteDesc'),\n                                            showClose: true,\n                                            okTxt: t('chatConfig.confirmDelete'),\n                                            canelTxt: t('cancel'),\n                                            onOk(next) {\n                                                handleBatchDelete();\n                                                next();\n                                            },\n                                            onCancel() { }\n                                        });\n                                    }}\n                                    batchDeleting={batchDeleting}\n                                    disableBatchDelete={selectedItems.length === 0}\n                                    importText={t('chatConfig.importFromRecord')}\n                                    importLocalText={t('chatConfig.importFromLocal')}\n                                    createText={t('chatConfig.createManual')}\n                                    batchDeleteText={t('chatConfig.batchDelete')}\n                                />\n                            </div>\n                            <ImportFromRecordsDialog\n                                open={importDialogOpen}\n                                tools={selectedTools}\n                                onOpenChange={setImportDialogOpen}\n                                //  onSuccess={refreshSopList}\n                                setDuplicateNames={setDuplicateNames}\n                                duplicateNames={duplicateNames}\n                                duplicateDialogOpen={duplicateDialogOpen}\n                                setDuplicateDialogOpen={setDuplicateDialogOpen}\n                                importFormData={importFormData}\n                            />\n                            {/* Table area */}\n                            <SopTable datalist={datalist} selectedItems={selectedItems} handleSelectItem={handleSelectItem} handleSelectAll={handleSelectAll} handleSort={handleSort} handleEdit={handleEdit} handleDelete={handleDelete} page={page} pageSize={pageSize} total={total} loading={loading} pageInputValue={pageInputValue} handlePageChange={handlePageChange} handlePageInputChange={handlePageInputChange} handlePageInputConfirm={handlePageInputConfirm} handleKeyDown={handleKeyDown} onShowcaseFilterChange={handleShowcaseFilterChange} />\n                            <DeleteConfirmModal\n                                open={deleteConfirmModal.open}\n                                content={deleteConfirmModal.content}\n                                cancelText={t('cancel')}\n                                okText={t('chatConfig.confirmDelete')}\n                                onClose={() => setDeleteConfirmModal(prev => ({ ...prev, open: false }))}\n                                onConfirm={() => { deleteConfirmModal.onConfirm(); setDeleteConfirmModal(prev => ({ ...prev, open: false })); }}\n                            />\n                            <SopFormDrawer\n                                isDrawerOpen={isDrawerOpen}\n                                setIsDrawerOpen={setIsDrawerOpen}\n                                isEditing={isEditing}\n                                sopForm={sopForm}\n                                linsight={linsight}\n                                setSopForm={setSopForm}\n                                handleSaveSOP={handleSaveSOP}\n                                tools={selectedTools}\n                                sopShowcase={sopShowcase}\n                                onShowcaseToggled={() =>\n                                    fetchData({\n                                        page: page,\n                                        pageSize: pageSize,\n                                        keyword: keywords,\n                                        showcase: showcaseFilter\n                                    })\n                                }\n                            />\n                        </div>\n                    </div>\n                    <div className=\"flex justify-end gap-4 absolute bottom-1 right-4\">\n                        <Preview onBeforView={() => handleSave(formData)} />\n                        <Button onClick={() => handleSave(formData)}>{t('save')}</Button>\n                    </div>\n                </CardContent>\n            </Card>\n            <LocalFileImportDialog\n                open={localFileDialogOpen}\n                onOpenChange={setLocalFileDialogOpen}\n                t={t}\n                getRootProps={getLocalFileRootProps}\n                getInputProps={getLocalFileInputProps}\n                importFiles={importFiles}\n                isImporting={isImporting}\n                onImport={async () => { await handleLocalFileImport(); setImportFiles([]); setLocalFileDialogOpen(false); }}\n                onCancel={() => { setLocalFileDialogOpen(false); setImportFiles([]); }}\n                downloadExample={() => downloadFile(__APP_ENV__.BASE_URL + \"/sopexample.xlsx\", t('chatConfig.exampleFileName'))}\n            />\n            <ValidationDialog\n                open={validationDialog.open}\n                statusMessage={validationDialog}\n                t={t}\n                onConfirm={handleValidationDialogConfirm}\n                onOpenChange={(open) => setValidationDialog(prev => ({ ...prev, open }))}\n            />\n        </div>\n    );\n}\n\n\n\n\nconst useChatConfig = (\n    selectedTools: Array<{ id: string | number; name: string }>,\n    setFormData: React.Dispatch<React.SetStateAction<ChatConfigForm>>,\n) => {\n    const { toast } = useToast();\n\n    const handleSave = async (formData: ChatConfigForm) => {\n        // Keep all necessary fields\n        const processedTools = selectedTools.map(tool => ({\n            id: tool.id,\n            name: tool.name,\n            is_preset: tool.is_preset,\n            tool_key: tool.tool_key,\n            description: tool.description,\n            children: tool.children?.map(child => ({\n                id: child.id,\n                name: child.name,\n                tool_key: child.tool_key,\n                desc: child.desc\n            }))\n        }));\n\n        const dataToSave = {\n            ...formData,\n            // Application center welcome/description: If not provided, use multilingual placeholder default\n            applicationCenterWelcomeMessage: (formData.applicationCenterWelcomeMessage?.trim?.() || t('chatConfig.appCenterWelcomePlaceholder')),\n            applicationCenterDescription: (formData.applicationCenterDescription?.trim?.() || t('chatConfig.appCenterDescriptionPlaceholder')),\n            linsightConfig: {\n                input_placeholder: formData.linsightConfig?.input_placeholder || '',\n                tools: processedTools,\n                linsight_entry: formData.linsightConfig?.linsight_entry || false,\n            }\n        };\n\n        try {\n            const res = await setWorkstationConfigApi(dataToSave);\n            if (res) {\n                setFormData(dataToSave);\n                toast({ variant: 'success', description: t('chatConfig.saveSuccess') });\n                return true;\n            }\n        } catch (error) {\n            toast({ variant: 'error', description: t('chatConfig.saveFailed') });\n            return false;\n        }\n    };\n\n    return { handleSave };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/ModelManagement.tsx",
    "content": "// src/features/chat-config/components/ModelManagement.tsx\nimport { TrashIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { useModel } from \"@/pages/ModelPage/manage\";\nimport { ModelSelect } from \"@/pages/ModelPage/manage/tabs/KnowledgeModel\";\nimport { Check, Plus } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport interface Model {\n    key: string;\n    id: string;\n    name: string;\n    displayName: string;\n    visual?: boolean;\n}\ninterface ModelManagementProps {\n    models: Model[];\n    errors: string[][];\n    error: string;\n    onAdd: () => void;\n    onRemove: (index: number) => void;\n    onModelChange: (index: number, id: string) => void;\n    onNameChange: (index: number, name: string) => void;\n    onVisualToggle?: (index: number, enabled: boolean) => void;\n}\nexport const ModelManagement = forwardRef<HTMLDivElement[], ModelManagementProps>(\n    ({ models, errors, error, onAdd, onRemove, onModelChange, onNameChange, onVisualToggle }, ref) => {\n        const { llmOptions } = useModel();\n        const { t } = useTranslation();\n\n        // Bind ref to each model item\n        const setItemRef = (el: HTMLDivElement | null, index: number) => {\n            const refs = ref as React.MutableRefObject<(HTMLDivElement | null)[]>;\n            if (refs.current) {\n                refs.current[index] = el;\n            }\n        };\n\n        // useEffect(() => {\n        // If the model list is empty, automatically add a model\n        // models.forEach((model, index) => {\n        //     !model.id && llmOptions.length && onModelChange(index, llmOptions[0].children[0].value)\n        // })\n        // }, [models, llmOptions])\n\n        return (\n            <div className=\"mt-2 border p-4 rounded-md bg-muted\">\n                <div className=\"grid mb-4 items-center\" style={{ gridTemplateColumns: \"1fr 1fr 120px 60px\" }}>\n                    <div className=\"\">\n                        <Label className=\"bisheng-label\">{t('bench.model')}</Label>\n                    </div>\n                    <div className=\"\">\n                        <Label className=\"bisheng-label\">{t('bench.displayName')}</Label>\n                    </div>\n                    <div className=\"flex items-center justify-center\">\n                        <Label className=\"bisheng-label whitespace-nowrap mr-0.5\">{t('bench.vision')}</Label>\n                        <QuestionTooltip className=\"text-[#999999]\" content={t('bench.visionText')} />\n                    </div>\n                    <div className=\"text-center\">\n                    </div>\n                </div>\n\n                {models.map((model, index) => (\n                    <div key={model.key} className=\"grid items-center mb-4\" style={{ gridTemplateColumns: \"1fr 1fr 120px 60px\" }}>\n                        <div className=\"pr-2\" id={model.id}>\n                            {llmOptions.length > 0 ? (\n                                <ModelSelect\n                                    key={model.id}\n                                    label={''}\n                                    value={model.id}\n                                    options={llmOptions}\n                                    onChange={(val) => onModelChange(index, val)}\n                                />\n                            ) : (\n                                <ModelSelect\n                                    key={'model.id'}\n                                    label={''}\n                                    value={''}\n                                    options={[]}\n                                    onChange={(val) => { }}\n                                />\n                            )}\n                            {errors[model.key] && <p className=\"text-red-500 text-xs mt-1\">{errors[model.key]?.[0]}</p>}\n                        </div>\n                        <div className=\"pr-2\">\n                            <Input\n                                value={model.displayName}\n                                onChange={(e) => onNameChange(index, e.target.value)}\n                                placeholder={t('bench.displayName')}\n                            />\n                            {errors[model.key] && <p className=\"text-red-500 text-xs mt-1\">{errors[model.key]?.[1]}</p>}\n                        </div>\n\n                        <div className=\"flex items-center justify-center\">\n                            <Checkbox\n                                checked={model.visual || false}\n                                onCheckedChange={(checked) => {\n                                    if (onVisualToggle) {\n                                        onVisualToggle(index, checked);\n                                    }\n                                }}\n                            />\n                        </div>\n\n                        {/* 删除按钮 */}\n                        <div className=\"flex items-center justify-center\">\n                            <TrashIcon\n                                className=\"text-gray-500 cursor-pointer size-4 hover:text-red-500 transition-colors\"\n                                onClick={() => onRemove(index)}\n                            />\n                        </div>\n                    </div>\n                ))}\n\n                <Button\n                    variant=\"outline\"\n                    className=\"border-none size-7 bg-gray-200 hover:bg-gray-300 transition-colors mt-2\"\n                    size=\"icon\"\n                    onClick={onAdd}\n                >\n                    <Plus className=\"size-5\" />\n                </Button>\n\n                {error && <p className=\"text-red-500 text-xs mt-1\">{error}</p>}\n            </div>\n        );\n\n    }\n)\nModelManagement.displayName = \"ModelManagement\""
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/Preview.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent } from \"@/components/bs-ui/dialog\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\n\nexport default function Preview({ onBeforView }) {\n        const { t } = useTranslation()\n    const [open, setOpen] = useState(false)\n    const benchUrl = location.origin + '/workspace/'\n\n    const handleClick = async () => {\n        const res = await onBeforView()\n        if (res) {\n            setOpen(true)\n        }\n    }\n\n    return <Dialog onOpenChange={setOpen} open={open} >\n        <Button variant=\"outline\" className=\"bg-gray-50 dark:bg-gray-700\" onClick={handleClick}>{t('chatConfig.savePreview')}</Button>\n        <DialogContent className=\"max-w-[90vw] h-[90vh]\">\n            <div className=\"grid gap-4 py-4\">\n                {open && <iframe src={benchUrl} className=\"size-full\"></iframe>}\n            </div>\n            {/* <DialogFooter>\n                <Button type=\"submit\">Save changes</Button>\n            </DialogFooter> */}\n        </DialogContent>\n    </Dialog>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/ToggleSection.tsx",
    "content": "// src/features/chat-config/components/ToggleSection.tsx\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { ReactNode } from \"react\";\n\nexport const ToggleSection = ({\n    title,\n    enabled,\n    onToggle,\n    children,\n    extra\n}: {\n    title: string;\n    enabled: boolean;\n    onToggle: (enabled: boolean) => void;\n    children: ReactNode;\n    extra?: ReactNode; // Optional prop\n}) => (\n    <div className=\"mb-6\">\n        <div className=\"flex items-center mb-2\">\n            <p className=\"text-lg font-bold flex items-center\">\n                <span>{title}</span>\n            </p>\n            <div className=\"flex items-center gap-2 ml-2\">\n\n                <Switch checked={enabled} onCheckedChange={onToggle} />\n                {extra} {/* Render extra content here */}\n            </div>\n        </div>\n        {enabled && children}\n    </div>\n);"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/WebSearchConfig.tsx",
    "content": "import { Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const WebSearchConfig = ({\n    config,\n    onChange,\n    errors = {}\n}: {\n    config: {\n        tool: string;\n        params: {\n            api_key?: string;\n            base_url?: string;\n            engine?: string;\n        };\n        prompt: string;\n    };\n    onChange: (field: string, value: any) => void;\n    errors?: Record<string, any>;\n}) => {\n    const { t } = useTranslation();\n\n    // Store parameters for all tools separately\n    const [toolsParams, setToolsParams] = useState<Record<string, any>>({\n        bing: { api_key: '', base_url: '' },\n        bocha: { api_key: '' },\n        jina: { api_key: '' },\n        serp: { api_key: '', engine: '' },\n        tavily: { api_key: '' }\n    });\n\n    // Initialize toolsParams with existing config\n    useEffect(() => {\n        if (config.tool && config.params) {\n            setToolsParams(prev => ({\n                ...prev,\n                [config.tool]: { ...prev[config.tool], ...config.params }\n            }));\n        }\n    }, [config]);\n\n    return (\n        <>\n            <Label className=\"bisheng-label\">{t('bench.webSearchPrompt')}</Label>\n            <div className=\"mt-3\">\n                <Textarea\n                    value={config.prompt || config}\n                    className=\"min-h-48\"\n                    onChange={(e) => onChange('prompt', e.target.value)}\n                />\n            </div>\n        </>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/bench/index.tsx",
    "content": "// src/features/chat-config/ChatConfig.tsx\nimport { Button } from \"@/components/bs-ui/button\";\nimport { CardContent } from \"@/components/bs-ui/card\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { getWorkstationConfigApi, setWorkstationConfigApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { t } from \"i18next\";\nimport { Settings } from \"lucide-react\";\nimport { useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport WebSearchForm from \"../tools/builtInTool/WebSearchFrom\";\nimport { FormInput } from \"./FormInput\";\nimport { IconUploadSection } from \"./IconUploadSection\";\nimport { Model, ModelManagement } from \"./ModelManagement\";\nimport Preview from \"./Preview\";\nimport { ToggleSection } from \"./ToggleSection\";\nimport { WebSearchConfig } from \"./WebSearchConfig\";\n\n\nexport interface FormErrors {\n    sidebarSlogan: string;\n    welcomeMessage: string;\n    functionDescription: string;\n    inputPlaceholder: string;\n    modelNames: string[] | string[][];\n    webSearch?: Record<string, string>;\n    systemPrompt: string;\n    model: string;\n    kownledgeBase: string;\n    applicationCenterWelcomeMessage: string;\n    applicationCenterDescription: string;\n}\n\nexport interface ChatConfigForm {\n    menuShow: boolean;\n    systemPrompt: string;\n    sidebarIcon: {\n        enabled: boolean;\n        image: string;\n        relative_path: string;\n    };\n    assistantIcon: {\n        enabled: boolean;\n        image: string;\n        relative_path: string;\n    };\n    sidebarSlogan: string;\n    welcomeMessage: string;\n    functionDescription: string;\n    inputPlaceholder: string;\n    applicationCenterWelcomeMessage: string;\n    applicationCenterDescription: string;\n    models: Model[];\n    maxTokens: number;\n    voiceInput: {\n        enabled: boolean;\n        model: string;\n    };\n    webSearch: {\n        enabled: boolean;\n        tool: string;\n        bing: {\n            type: string;\n            config: {\n                api_key: string;\n                base_url: string;\n            };\n        };\n        bocha: {\n            type: string;\n            config: {\n                api_key: string;\n            };\n        };\n        jina: {\n            type: string;\n            config: {\n                api_key: string;\n            };\n        };\n        serp: {\n            type: string;\n            config: {\n                api_key: string;\n                engine: string;\n            };\n        };\n        tavily: {\n            type: string;\n            config: {\n                api_key: string;\n            };\n        };\n        prompt: string;\n    };\n    knowledgeBase: {\n        enabled: boolean;\n        prompt: string;\n    };\n    fileUpload: {\n        enabled: boolean;\n        prompt: string;\n    };\n}\nexport default function index({ formData: parentFormData, setFormData: parentSetFormData }) {\n    const sidebarSloganRef = useRef<HTMLDivElement>(null);\n    const welcomeMessageRef = useRef<HTMLDivElement>(null);\n    const functionDescriptionRef = useRef<HTMLDivElement>(null);\n    const inputPlaceholderRef = useRef<HTMLDivElement>(null);\n    const knowledgeBaseRef = useRef<HTMLDivElement>(null);\n    const modelRefs = useRef<(HTMLDivElement | null)[]>([]);\n    const webSearchRef = useRef<HTMLDivElement>(null);\n    const systemPromptRef = useRef<HTMLDivElement>(null);\n    const appCenterWelcomeRef = useRef<HTMLDivElement>(null);\n    const appCenterDescriptionRef = useRef<HTMLDivElement>(null);\n    // New: ref for model management container\n    const modelManagementContainerRef = useRef<HTMLDivElement>(null);\n\n    const { t } = useTranslation()\n    const {\n        formData,\n        errors,\n        setFormData,\n        handleInputChange,\n        toggleFeature,\n        handleSave\n    } = useChatConfig({\n        sidebarSloganRef,\n        welcomeMessageRef,\n        functionDescriptionRef,\n        inputPlaceholderRef,\n        knowledgeBaseRef,\n        modelRefs,\n        webSearchRef,\n        systemPromptRef,\n        appCenterWelcomeRef,\n        appCenterDescriptionRef,\n        modelManagementContainerRef, // Pass in the new ref\n    }, parentFormData, parentSetFormData);\n\n    useEffect(() => {\n        modelRefs.current = modelRefs.current.slice(0, formData.models.length);\n    }, [formData.models]);\n    const [webSearchDialogOpen, setWebSearchDialogOpen] = useState(false);\n    // Redirect non-admin users\n    const { user } = useContext(userContext);\n    const navigate = useNavigate()\n    useEffect(() => {\n        if (user.user_id && user.role !== 'admin') {\n            navigate('/build/apps')\n        }\n    }, [user])\n\n    const uploadAvator = (fileUrl: string, type: 'sidebar' | 'assistant', relativePath?: string) => {\n        setFormData(prev => ({\n            ...prev,\n            [`${type}Icon`]: { ...prev[`${type}Icon`], image: fileUrl, relative_path: relativePath }\n        }));\n    };\n    const handleModelChange = (index: number, id: string) => {\n        const newModels = [...formData.models];\n        newModels[index].id = id;\n        setFormData(prev => ({ ...prev, models: newModels }));\n    };\n\n    const handleModelNameChange = (index: number, name: string) => {\n        const newModels = [...formData.models];\n        newModels[index].displayName = name;\n        setFormData(prev => ({ ...prev, models: newModels }));\n    };\n\n    const addModel = () => {\n        setFormData(prev => ({\n            ...prev,\n            models: [...prev.models, { key: generateUUID(4), id: '', name: '', displayName: '', visual: false }]\n        }));\n    };\n    const handleOpenWebSearchSettings = () => {\n        setWebSearchDialogOpen(true);\n    };\n    // Add this method in the parent component\n    const handleWebSearchChange = useCallback((field: string, value: any) => {\n        console.log('Updating field:', field, 'New value:', value);\n\n        // Update local state\n        setFormData(prev => ({\n            ...prev,\n            webSearch: {\n                ...prev.webSearch,\n                [field]: value\n            }\n        }));\n\n    }, [setFormData]);\n    const handleVisualToggle = (index: number, enabled: boolean) => {\n        const newModels = [...formData.models];\n        newModels[index] = {\n            ...newModels[index],\n            visual: enabled\n        };\n        setFormData(prev => ({ ...prev, models: newModels }));\n    };\n    return (\n        <div className=\" h-full overflow-y-scroll scrollbar-hide relative border-t\">\n            <div className=\"pt-4 relative\">\n                <CardContent className=\"pt-4 relative  \">\n                    <div className=\"w-full  max-h-[calc(100vh-180px)] overflow-y-scroll scrollbar-hide\">\n                        {/* <ToggleSection\n                            title={t('chatConfig.workstationEntry')}\n                            enabled={formData.menuShow}\n                            onToggle={(enabled) => setFormData(prev => ({ ...prev, menuShow: enabled }))}\n                        >{null}</ToggleSection> */}\n                        {/* Icon Uploads */}\n                        <p className=\"text-lg font-bold mb-2\">{t('chatConfig.iconUpload')}</p>\n                        <div className=\"flex gap-8 mb-6\">\n                            <IconUploadSection\n                                label={t('chatConfig.sidebarIcon')}\n                                enabled={formData.sidebarIcon.enabled}\n                                image={formData.sidebarIcon.image}\n                                onToggle={(enabled) => toggleFeature('sidebarIcon', enabled)}\n                                onUpload={(fileUrl, relativePath) => uploadAvator(fileUrl, 'sidebar', relativePath)}\n                            />\n                            <IconUploadSection\n                                label={t('chatConfig.assistantIcon')}\n                                enabled={formData.assistantIcon.enabled}\n                                image={formData.assistantIcon.image}\n                                onToggle={(enabled) => toggleFeature('assistantIcon', enabled)}\n                                onUpload={(fileUrl, relativePath) => uploadAvator(fileUrl, 'assistant', relativePath)}\n                            />\n                        </div>\n                        <div ref={sidebarSloganRef}>\n                            <FormInput\n                                label={<Label className=\"bisheng-label\">{t('chatConfig.sidebarSlogan')}</Label>}\n                                value={formData.sidebarSlogan}\n                                error={errors.sidebarSlogan}\n                                placeholder=\"\"\n                                maxLength={15}\n                                onChange={(v) => handleInputChange('sidebarSlogan', v, 15)}\n                            />\n                        </div>\n\n                        <div ref={welcomeMessageRef}>\n                            <FormInput\n                                label={t('chatConfig.welcomeMessage')}\n                                value={formData.welcomeMessage}\n                                error={errors.welcomeMessage}\n                                placeholder={t('chatConfig.welcomeMessagePlaceholder')}\n                                maxLength={1000}\n                                onChange={(v) => handleInputChange('welcomeMessage', v, 1000)}\n                            />\n                        </div>\n                        <div ref={functionDescriptionRef}>\n                            <FormInput\n                                label={t('chatConfig.functionDescription')}\n                                value={formData.functionDescription}\n                                error={errors.functionDescription}\n                                placeholder={t('chatConfig.functionDescriptionPlaceholder')}\n                                maxLength={1000}\n                                onChange={(v) => handleInputChange('functionDescription', v, 1000)}\n                            />\n                        </div>\n\n                        <div ref={inputPlaceholderRef}>\n                            <FormInput\n                                label={t('chatConfig.inputPlaceholder')}\n                                value={formData.inputPlaceholder}\n                                error={errors.inputPlaceholder}\n                                placeholder={t('chatConfig.inputPlaceholderPlaceholder')}\n                                maxLength={1000}\n                                onChange={(v) => handleInputChange('inputPlaceholder', v, 1000)}\n                            />\n                        </div>\n                        <div ref={appCenterWelcomeRef}>\n                            <FormInput\n                                label={t('chatConfig.appCenterWelcome')}\n                                value={formData.applicationCenterWelcomeMessage}\n                                error={errors.applicationCenterWelcomeMessage}\n                                placeholder={t('chatConfig.appCenterWelcomePlaceholder')}\n                                onChange={(v) => handleInputChange('applicationCenterWelcomeMessage', v, 1000)}\n                            />\n                        </div>\n\n                        {/* New application center description input */}\n                        <div ref={appCenterDescriptionRef}>\n                            <FormInput\n                                label={t('chatConfig.appCenterDescription')}\n                                value={formData.applicationCenterDescription}\n                                error={errors.applicationCenterDescription}\n                                placeholder={t('chatConfig.appCenterDescriptionPlaceholder')}\n                                onChange={(v) => handleInputChange('applicationCenterDescription', v, 1000)}\n                            />\n                        </div>\n\n                        {/* Model Management */}\n                        {/* Bind model management container ref */}\n                        <div className=\"mb-6\" ref={modelManagementContainerRef}>\n                            <p className=\"text-lg font-bold mb-2\">{t('chatConfig.modelManagement')}</p>\n                            <div className=\"mb-6\">\n                                <ModelManagement\n                                    ref={modelRefs}\n                                    models={formData.models}\n                                    errors={errors.modelNames}\n                                    error={errors.model}\n                                    onAdd={addModel}\n                                    onRemove={(index) => {\n                                        const newModels = [...formData.models];\n                                        newModels.splice(index, 1);\n                                        setFormData(prev => ({ ...prev, models: newModels }));\n                                    }}\n                                    onModelChange={handleModelChange}\n                                    onNameChange={handleModelNameChange}\n                                    onVisualToggle={handleVisualToggle}\n                                />\n                            </div>\n                            <FormInput\n                                label={<Label className=\"bisheng-label block pt-2\">{t('chatConfig.maxTokens')}</Label>}\n                                type=\"number\"\n                                value={formData.maxTokens}\n                                error={''}\n                                placeholder={t('chatConfig.maxTokensPlaceholder')}\n                                maxLength={1000}\n                                onChange={(v) => handleInputChange('maxTokens', v, 100)}\n                            />\n                            <div ref={systemPromptRef}>\n                                <FormInput\n                                    label={<Label className=\"bisheng-label\">{t('chatConfig.systemPrompt')}</Label>}\n                                    isTextarea\n                                    value={formData.systemPrompt}\n                                    error={errors.systemPrompt}\n                                    placeholder={`${t('chatConfig.systemPromptPlaceholder')}`}\n                                    maxLength={30000}\n                                    onChange={(val) => handleInputChange('systemPrompt', val, 30000)}\n                                />\n                            </div>\n                        </div>\n\n                        {/* Toggle Sections */}\n                        {/* <ToggleSection\n                            title=\"Voice Input\"\n                            enabled={formData.voiceInput.enabled}\n                            onToggle={(enabled) => toggleFeature('voiceInput', enabled)}\n                        >\n                            <Label className=\"bisheng-label\">Voice Input Model Selection</Label>\n                            <div className=\"mt-3\">\n                                <Select value={\"\"} onValueChange={(val) => { }}>\n                                    <SelectTrigger>\n                                        <SelectValue placeholder=\"\" />\n                                    </SelectTrigger>\n                                    <SelectContent>\n                                        <SelectGroup>\n                                            <SelectItem value=\"1\">{t('model.yes')}</SelectItem>\n                                            <SelectItem value=\"0\">{t('model.no')}</SelectItem>\n                                        </SelectGroup>\n                                    </SelectContent>\n                                </Select>\n                            </div>\n                        </ToggleSection> */}\n                        <ToggleSection\n                            title={t('chatConfig.webSea')}\n                            enabled={formData.webSearch.enabled}\n                            onToggle={(enabled) => toggleFeature('webSearch', enabled)}\n                            extra={\n                                <Button\n                                    variant=\"ghost\"\n                                    size=\"sm\"\n                                    onClick={handleOpenWebSearchSettings}\n                                    className=\"p-1 h-auto\"\n                                >\n                                    <Settings className=\"-ml-2 h-4 w-4\" />\n                                </Button>\n                            }\n                        >\n                            <WebSearchConfig\n                                config={formData.webSearch.prompt}\n                                onChange={handleWebSearchChange}\n                            />\n                        </ToggleSection>\n                        <ToggleSection\n                            title={t('chatConfig.knowledgeBase')}\n                            enabled={formData.knowledgeBase.enabled}\n                            onToggle={(enabled) => toggleFeature('knowledgeBase', enabled)}\n                        >\n                            <FormInput\n                                label={<Label className=\"bisheng-label\">{t('chatConfig.knowledgeBasePrompt')}</Label>}\n                                isTextarea\n                                value={formData.knowledgeBase.prompt}\n                                error={errors.kownledgeBase}\n                                placeholder=\"\"\n                                maxLength={30000}\n                                onChange={(val) => setFormData(prev => ({\n                                    ...prev,\n                                    knowledgeBase: { ...prev.knowledgeBase, prompt: val }\n                                }))}\n                            />\n                        </ToggleSection>\n\n                        <ToggleSection\n                            title={t('chatConfig.fileUpload')}\n                            enabled={formData.fileUpload.enabled}\n                            onToggle={(enabled) => toggleFeature('fileUpload', enabled)}\n                        >\n                            <FormInput\n                                label={<Label className=\"bisheng-label\">{t('chatConfig.fileUploadPrompt')}</Label>}\n                                isTextarea\n                                value={formData.fileUpload.prompt}\n                                error={''}\n                                maxLength={9999}\n                                onChange={(val) => setFormData(prev => ({\n                                    ...prev,\n                                    fileUpload: { ...prev.fileUpload, prompt: val }\n                                }))}\n                            />\n                        </ToggleSection>\n\n                    </div>\n                    {/* Action Buttons */}\n                    <div className=\"flex justify-end gap-4 absolute bottom-4 right-4\">\n                        <Preview onBeforView={handleSave} />\n                        <Button onClick={handleSave}>{t('save')}</Button>\n                    </div>\n                </CardContent>\n            </div>\n            <Dialog open={webSearchDialogOpen} onOpenChange={setWebSearchDialogOpen}>\n                <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n                    <DialogHeader>\n                        <DialogTitle>{t('chatConfig.webSearchConfig')}</DialogTitle>\n                    </DialogHeader>\n                    <WebSearchForm isApi={true} />\n                </DialogContent>\n            </Dialog>\n        </div>\n    );\n}\n\n\ninterface UseChatConfigProps {\n    sidebarSloganRef: React.RefObject<HTMLDivElement>;\n    welcomeMessageRef: React.RefObject<HTMLDivElement>;\n    functionDescriptionRef: React.RefObject<HTMLDivElement>;\n    inputPlaceholderRef: React.RefObject<HTMLDivElement>;\n    knowledgeBaseRef: React.RefObject<HTMLDivElement>;\n    modelRefs: React.MutableRefObject<(HTMLDivElement | null)[]>;\n    webSearchRef: React.RefObject<HTMLDivElement>;\n    systemPromptRef: React.RefObject<HTMLDivElement>;\n    appCenterWelcomeRef: React.RefObject<HTMLDivElement>;\n    appCenterDescriptionRef: React.RefObject<HTMLDivElement>;\n    modelManagementContainerRef: React.RefObject<HTMLDivElement>; // New\n}\n\nconst useChatConfig = (refs: UseChatConfigProps, parentFormData, parentSetFormData) => {\n    const { t } = useTranslation()\n\n    const [formData, setFormData] = useState<ChatConfigForm>(parentFormData || {\n        // menuShow: true,\n        systemPrompt: t('chatConfig.systemPrompt2'),\n        sidebarIcon: { enabled: true, image: '', relative_path: '' },\n        assistantIcon: { enabled: true, image: '', relative_path: '' },\n        sidebarSlogan: '',\n        welcomeMessage: '',\n        functionDescription: '',\n        inputPlaceholder: '',\n        applicationCenterWelcomeMessage: '',\n        applicationCenterDescription: '',\n        models: [{ key: generateUUID(4), id: null, name: '', displayName: '', visual: false }],\n        maxTokens: 15000,\n        voiceInput: { enabled: false, model: '' },\n        webSearch: {\n            enabled: true,\n            tool: 'bing',\n            params: {\n                api_key: '',\n                base_url: 'https://api.bing.microsoft.com/v7.0/search'\n            },\n            prompt: t('chatConfig.webSearchPrompt'),\n        },\n        knowledgeBase: {\n            enabled: true,\n            prompt: t('chatConfig.internationalization')\n        },\n        fileUpload: {\n            enabled: true,\n            prompt: `{file_content}\n{question}`,\n        },\n    });\n\n    // Simple deep comparison to avoid circular refresh caused by parent-child mutual setting\n    const isDeepEqual = (a: any, b: any) => {\n        try {\n            return JSON.stringify(a) === JSON.stringify(b);\n        } catch {\n            return a === b;\n        }\n    };\n\n    useEffect(() => {\n        if (parentFormData && !isDeepEqual(formData, parentFormData)) {\n            setFormData(parentFormData);\n        }\n    }, [parentFormData]);\n\n    useEffect(() => {\n        if (parentSetFormData && !isDeepEqual(formData, parentFormData)) {\n            parentSetFormData(formData);\n        }\n    }, [formData, parentFormData]);\n\n    useEffect(() => {\n        if (!parentFormData) {\n            console.log('parentFormData :>> ', parentFormData);\n\n            getWorkstationConfigApi().then((res) => {\n                if (res) {\n                    // 确保 systemPrompt 有值\n                    const defaultSystemPrompt = t('chatConfig.systemPrompt2')\n                    const systemPrompt = res.systemPrompt || defaultSystemPrompt;\n\n                    setFormData((prev) => {\n                        return 'menuShow' in res ? res : { ...prev, ...res, systemPrompt }\n                    })\n                }\n            });\n        }\n    }, [parentFormData]);\n\n    const [errors, setErrors] = useState<FormErrors>({\n        sidebarSlogan: '',\n        welcomeMessage: '',\n        functionDescription: '',\n        inputPlaceholder: '',\n        kownledgeBase: '',\n        model: '',\n        modelNames: [],\n        webSearch: undefined,\n        systemPrompt: '',\n        applicationCenterWelcomeMessage: '',\n        applicationCenterDescription: '',\n    });\n\n    const handleInputChange = (field: keyof ChatConfigForm, value: string, maxLength: number) => {\n        setFormData(prev => ({ ...prev, [field]: value }));\n\n        if (value.length >= maxLength) {\n            setErrors(prev => ({ ...prev, [field]: t('chatConfig.errors.maxCharacters', { count: maxLength }) }));\n        } else {\n            setErrors(prev => ({ ...prev, [field]: '' }));\n        }\n    };\n\n    const toggleFeature = (feature: keyof ChatConfigForm, enabled: boolean) => {\n        setFormData(prev => ({\n            ...prev,\n            [feature]: { ...prev[feature], enabled }\n        }));\n    };\n\n    const validateForm = (): { isValid: boolean, firstErrorRef: React.RefObject<HTMLDivElement> | null } => {\n        let isValid = true;\n        let firstErrorRef: React.RefObject<HTMLDivElement> | null = null;\n        const newErrors: FormErrors = {\n            sidebarSlogan: '',\n            welcomeMessage: '',\n            functionDescription: '',\n            inputPlaceholder: '',\n            kownledgeBase: '',\n            model: '',\n            modelNames: [],\n            applicationCenterWelcomeMessage: '',\n            applicationCenterDescription: '',\n            systemPrompt: '',\n        };\n\n        if (formData.sidebarSlogan.length > 15) {\n            newErrors.sidebarSlogan = t('chatConfig.errors.maxCharacters', { count: 15 });\n            if (!firstErrorRef) firstErrorRef = refs.sidebarSloganRef;\n            isValid = false;\n        }\n\n        // Validate welcome message\n        if (formData.welcomeMessage.length > 1000) {\n            newErrors.welcomeMessage = t('chatConfig.errors.maxCharacters', { count: 1000 });\n            if (!firstErrorRef) firstErrorRef = refs.welcomeMessageRef;\n            isValid = false;\n        }\n\n        // Validate function description\n        if (formData.functionDescription.length > 1000) {\n            newErrors.functionDescription = t('chatConfig.errors.maxCharacters', { count: 1000 });\n            if (!firstErrorRef) firstErrorRef = refs.functionDescriptionRef;\n            isValid = false;\n        }\n\n        // Validate input placeholder\n        if (formData.inputPlaceholder.length > 1000) {\n            newErrors.inputPlaceholder = t('chatConfig.errors.maxCharacters', { count: 1000 });\n            if (!firstErrorRef) firstErrorRef = refs.inputPlaceholderRef;\n            isValid = false;\n        }\n\n        if (formData.knowledgeBase.prompt.length > 30000) {\n            newErrors.kownledgeBase = t('chatConfig.errors.maxCharacters', { count: 30000 });\n            if (!firstErrorRef) firstErrorRef = refs.knowledgeBaseRef;\n            isValid = false;\n        }\n\n        if (formData.systemPrompt?.length > 30000) {\n            newErrors.systemPrompt = t('chatConfig.errors.maxCharacters', { count: 30000 });\n            if (!firstErrorRef) firstErrorRef = refs.systemPromptRef;\n            isValid = false;\n        }\n        if (formData.applicationCenterWelcomeMessage.length > 1000) {\n            newErrors.applicationCenterWelcomeMessage = t('chatConfig.errors.maxCharacters', { count: 1000 });\n            if (!firstErrorRef) firstErrorRef = refs.appCenterWelcomeRef;\n            isValid = false;\n        }\n\n        // Validate application center description\n        if (formData.applicationCenterDescription.length > 1000) {\n            newErrors.applicationCenterDescription = t('chatConfig.errors.maxCharacters', { count: 1000 });\n            if (!firstErrorRef) firstErrorRef = refs.appCenterDescriptionRef;\n            isValid = false;\n        }\n        // Validate models\n        if (formData.models.length === 0) {\n            newErrors.model = t('chatConfig.errors.atLeastOneModel');\n            if (!firstErrorRef) {\n                // Modified: Use model management container ref as priority scroll target\n                firstErrorRef = refs.modelManagementContainerRef.current\n                    ? { current: refs.modelManagementContainerRef.current }\n                    : refs.sidebarSloganRef; // Keep default fallback\n            }\n            isValid = false;\n        }\n\n        const modelNameErrors: string[][] = [];\n        formData.models.forEach((model, index) => {\n            const displayName = model.displayName.trim();\n            let error = [];\n\n            if (!displayName) {\n                error = ['', t('chatConfig.errors.modelNameRequired')];\n                if (!firstErrorRef && refs.modelRefs.current[index]) {\n                    firstErrorRef = { current: refs.modelRefs.current[index] };\n                }\n            } else if (!model.id) {\n                error = [t('chatConfig.errors.modelRequired'), ''];\n                if (!firstErrorRef && refs.modelRefs.current[index]) {\n                    firstErrorRef = { current: refs.modelRefs.current[index] };\n                }\n            } else if (displayName.length > 30) {\n                error = ['', t('chatConfig.errors.maxCharacters', { count: 30 })];\n                if (!firstErrorRef && refs.modelRefs.current[index]) {\n                    firstErrorRef = { current: refs.modelRefs.current[index] };\n                }\n            } else {\n                formData.models.some((m, i) => {\n                    if (i !== index) {\n                        error = ['', ''];\n                        if (m.id === model.id) {\n                            error[0] = t('chatConfig.errors.modelDuplicate')\n                        }\n                        if (m.displayName.trim().toLowerCase() === displayName.toLowerCase()) {\n                            error[1] = t('chatConfig.errors.modelNameDuplicate')\n                        }\n                        if (error[0] || error[1]) {\n                            if (!firstErrorRef && refs.modelRefs.current[index]) {\n                                firstErrorRef = { current: refs.modelRefs.current[index] };\n                            }\n                            return true;\n                        }\n                    }\n                });\n            }\n\n            if (error[0] || error[1]) {\n                modelNameErrors[model.key] = error;\n                isValid = false;\n            }\n        });\n\n        // Validate web search\n        if (formData.webSearch.enabled) {\n            const webSearchErrors: any = {};\n            let hasWebSearchError = false;\n\n            switch (formData.webSearch.tool) {\n                case 'bing':\n                    if (!formData.webSearch.params.api_key?.trim()) {\n                        webSearchErrors.params = { ...webSearchErrors.params, api_key: t('chatConfig.errors.required') };\n                        hasWebSearchError = true;\n                    }\n                    if (!formData.webSearch.params.base_url?.trim()) {\n                        webSearchErrors.params = { ...webSearchErrors.params, base_url: t('chatConfig.errors.required') };\n                        hasWebSearchError = true;\n                    }\n                    break;\n                case 'bocha':\n                case 'jina':\n                case 'tavily':\n                    if (!formData.webSearch.params.api_key?.trim()) {\n                        webSearchErrors.params = { ...webSearchErrors.params, api_key: t('chatConfig.errors.required') };\n                        hasWebSearchError = true;\n                    }\n                    break;\n                case 'serp':\n                    if (!formData.webSearch.params.api_key?.trim()) {\n                        webSearchErrors.params = { ...webSearchErrors.params, api_key: t('chatConfig.errors.required') };\n                        hasWebSearchError = true;\n                    }\n                    if (!formData.webSearch.params.engine?.trim()) {\n                        webSearchErrors.params = { ...webSearchErrors.params, engine: t('chatConfig.errors.required') };\n                        hasWebSearchError = true;\n                    }\n                    break;\n            }\n\n            if (hasWebSearchError && !firstErrorRef && refs.webSearchRef.current) {\n                firstErrorRef = refs.webSearchRef;\n            }\n            if (Object.keys(webSearchErrors).length) {\n                newErrors.webSearch = webSearchErrors;\n            }\n        }\n\n        newErrors.modelNames = modelNameErrors;\n        setErrors(newErrors);\n\n        return { isValid, firstErrorRef };\n    };\n\n    const { toast } = useToast()\n    const { reloadConfig } = useContext(locationContext)\n    const handleSave = async () => {\n        const { isValid, firstErrorRef } = validateForm();\n        if (!isValid) {\n            if (firstErrorRef?.current) {\n                firstErrorRef.current.scrollIntoView({\n                    behavior: 'smooth',\n                    block: 'end',\n                    inline: 'nearest'\n                });\n\n                setTimeout(() => {\n                    const input = firstErrorRef.current?.querySelector('input, textarea, [role=\"combobox\"]');\n                    if (input) input.focus();\n                }, 300);\n            }\n            return false;\n        }\n        const dataToSave = {\n            ...formData,\n            sidebarSlogan: formData.sidebarSlogan.trim(),\n            welcomeMessage: formData.welcomeMessage.trim(),\n            functionDescription: formData.functionDescription.trim(),\n            inputPlaceholder: formData.inputPlaceholder.trim(),\n            applicationCenterWelcomeMessage: formData.applicationCenterWelcomeMessage.trim() || t('chatConfig.appCenterWelcomePlaceholder'),\n            applicationCenterDescription: formData.applicationCenterDescription.trim() || t('chatConfig.appCenterDescriptionPlaceholder'),\n            maxTokens: formData.maxTokens || 15000,\n        };\n\n        console.log('Saving data:', dataToSave);\n\n        captureAndAlertRequestErrorHoc(setWorkstationConfigApi(dataToSave)).then((res) => {\n            if (res) {\n                toast({\n                    variant: 'success',\n                    description: t('chatConfig.saveSuccess'),\n                })\n                reloadConfig()\n            }\n        })\n\n        return true\n    };\n\n    return {\n        formData,\n        errors,\n        setFormData,\n        setErrors,\n        handleInputChange,\n        toggleFeature,\n        handleSave\n    };\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/Controls.tsx",
    "content": "import { FileIcon, Maximize, ZoomIn, ZoomOut } from \"lucide-react\";\nimport { forwardRef } from \"react\";\n\nimport { Button } from \"@/components/bs-ui/button\";\nimport { cn } from \"@/util/utils\";\nimport {\n    Panel,\n    PanelProps,\n    useReactFlow,\n    useStore,\n    useViewport,\n} from \"@xyflow/react\";\n\nexport const Controls = forwardRef<\n    HTMLDivElement,\n    Omit<PanelProps, \"children\"> & { onCreateNote: () => void }\n>(({ className, ...props }) => {\n    // const { zoom } = useViewport();\n    const { zoomTo, zoomIn, zoomOut, fitView } = useReactFlow();\n\n    const { minZoom, maxZoom } = useStore(\n        (state) => ({\n            minZoom: state.minZoom,\n            maxZoom: state.maxZoom,\n        }),\n        (a, b) => a.minZoom !== b.minZoom || a.maxZoom !== b.maxZoom,\n    );\n\n    return (\n        <Panel\n            className={cn(\n                \"flex gap-1 rounded-md bg-background  p-1 text-foreground left-52 selelct-none\",\n                className,\n            )}\n            {...props}\n        >\n            <Button\n                variant=\"ghost\"\n                size=\"icon\"\n                onClick={() => zoomIn({ duration: 300 })}\n            >\n                <ZoomIn className=\"size-5\" />\n            </Button>\n            {/* <Button\n                className=\"min-w-20 tabular-nums\"\n                variant=\"ghost\"\n                onClick={() => zoomTo(1, { duration: 300 })}\n            >\n                {(100 * zoom).toFixed(0)}%\n            </Button> */}\n            <Button\n                variant=\"ghost\"\n                size=\"icon\"\n                onClick={() => zoomOut({ duration: 300 })}\n            >\n                <ZoomOut className=\"size-5\" />\n            </Button>\n            <Button\n                variant=\"ghost\"\n                size=\"icon\"\n                onClick={() => fitView({ duration: 300 })}\n            >\n                <Maximize className=\"size-5\" />\n            </Button>\n            <Button\n                variant=\"ghost\"\n                size=\"icon\"\n                onClick={props.onCreateNote}\n            >\n                <span>+</span>\n                <FileIcon className=\"size-5 ml-0.5\" />\n            </Button>\n        </Panel>\n    );\n});\n\nControls.displayName = \"Controls\";"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/Chat.tsx",
    "content": "import { useState } from \"react\";\nimport ChatInput from \"./ChatInput\";\nimport ChatMessages from \"./ChatMessages\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\nexport default function Chat({\n    stop = false,\n    debug,\n    autoRun,\n    logo = null,\n    clear = false,\n    form = false,\n    useName,\n    inputForm = null,\n    guideWord,\n    wsUrl,\n    onBeforSend,\n    version,\n    loadMore = () => { }\n}) {\n    const [loading, setLoading] = useState(autoRun)\n\n    return <div className=\"h-full bs-chat-bg\" style={{ backgroundImage: `url(${__APP_ENV__.BASE_URL}/assets/points.png)` }}>\n        <div className=\"relative h-full\">\n            <ChatMessages debug={debug} version={version} logo={logo} useName={useName} guideWord={guideWord} loadMore={loadMore}></ChatMessages>\n            <ChatInput autoRun={autoRun} version={version} clear={clear} form={form} wsUrl={wsUrl} inputForm={inputForm} onBeforSend={onBeforSend} onLoad={() => setLoading(false)} ></ChatInput>\n        </div>\n        {/* {loading && <div className=\"absolute top-0 left-0 w-full h-full flex items-center justify-center bg-primary/5 z-10\">\n            <LoadingIcon className=\"size-24\" />\n        </div>} */}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatFileFile.tsx",
    "content": "import { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { WordIcon } from \"@/components/bs-icons/office\";\nimport { downloadFile } from \"@/util/utils\";\nimport { useTranslation } from \"react-i18next\";\nexport default function ChatFile({ fileName, filePath }) {\n    const { t } = useTranslation()\n\n    // download file\n    const handleDownloadFile = (filePath) => {\n        filePath && downloadFile(checkSassUrl(filePath), fileName)\n    }\n\n    return <div\n        className=\"flex gap-2 w-52 mb-2 ml-2 border border-gray-200 shadow-sm bg-gray-50 dark:bg-gray-600 px-4 py-2 rounded-sm cursor-pointer\"\n        onClick={() => handleDownloadFile(filePath)}\n    >\n        <div className=\"flex items-center\"><WordIcon /></div>\n        <div>\n            <h1 className=\"text-sm font-bold\">{fileName}</h1>\n            <p className=\"text-xs text-gray-400 mt-1\">{t('chat.clickDownload')}</p>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatFiles.tsx",
    "content": "import { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport Loading from \"@/components/ui/loading\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { uploadChatFile } from \"@/controllers/API/flow\";\nimport { getFileExtension } from \"@/util/utils\";\nimport { FileIcon, PaperclipIcon, X } from \"lucide-react\";\nimport { forwardRef, useContext, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst checkFileType = (file, accepts) => {\n    if (!accepts || accepts === '*') return true;\n    const fileName = file.name.toLowerCase();\n    const acceptArr = accepts.split(',').map(a => a.trim().toLowerCase());\n\n    // 检查后缀名 (例如 .pdf) 或 MIME type\n    return acceptArr.some(type => {\n        if (type.startsWith('.')) {\n            return fileName.endsWith(type);\n        }\n        return file.type.match(new RegExp(type.replace('*', '.*')));\n    });\n};\n\n\n// @accepts '.png,.jpg'\nexport default forwardRef(function ChatFiles({ v, accepts, disabled, onChange }, ref) {\n\n    const { t } = useTranslation();\n    const [files, setFiles] = useState([]);\n    const filesRef = useRef([]);\n    const remainingUploadsRef = useRef(0);\n    const { appConfig } = useContext(locationContext);\n    // const fileAccepts = useMemo(() => appConfig.libAccepts.map((ext) => `.${ext}`), [appConfig.libAccepts]);\n    const { toast } = useToast();\n\n    const fileInputRef = useRef(null);\n    const fileSizeLimit = appConfig.uploadFileMaxSize * 1024 * 1024; // File size limit in bytes\n\n\n    const handleFileChange = (selectedFiles) => {\n        const validFiles = [];\n        const invalidTips = []; // 仅存储无效文件的提示文案\n        const invalidTypeFiles = [];\n\n        fileInputRef.current.value = '';\n        const allowedExtensions = accepts\n            ? new Set(accepts.split(',').map(ext => ext.trim().toLowerCase().replace(/^\\./, '')))\n            : new Set();\n\n        selectedFiles.forEach((file) => {\n            // 1. 先校验文件类型\n            if (!checkFileType(file, accepts)) {\n                invalidTypeFiles.push(file);\n            } else if (allowedExtensions.size > 0) {\n                const fileExt = getFileExtension(file.name).toLowerCase();\n                if (!allowedExtensions.has(fileExt)) {\n                    invalidTips.push(t('chat.fileTypeNotAllowed', {\n                        name: file.name,\n                        type: fileExt\n                    }));\n                    return; // 类型不符合，跳过后续校验\n                }\n            }\n\n            if (invalidTypeFiles.length > 0) {\n                return toast({\n                    variant: 'error',\n                    description: t('com_ui_upload_file_type_error')\n                }); // 请确保你有对应多语言key或直接写死中文测试\n            }\n            // 2. 再校验文件大小\n            if (file.size > fileSizeLimit) {\n                invalidTips.push(t('chat.fileExceedRemoved', { name: file.name, size: appConfig.uploadFileMaxSize }));\n                return; // 大小不符合，跳过\n            }\n\n            // 3. 所有校验通过，加入有效文件列表\n            validFiles.push({ id: generateUUID(6), file });\n        });\n\n        // 显示无效文件提示（区分类型/大小错误）\n        if (invalidTips.length > 0) {\n            toast({\n                variant: 'info',\n                description: invalidTips.join('；'),\n            });\n        }\n\n        // 只要有有效文件就继续上传流程\n        if (!validFiles.length) return;\n\n        // 以下逻辑完全保留，无需修改\n        onChange(null);\n        const filesWithProgress = validFiles.map(({ file, id }) => {\n            return {\n                name: file.name,\n                size: file.size,\n                type: file.type,\n                isUploading: true,\n                progress: 0,\n                id,\n                file\n            };\n        });\n\n        setFiles(prevFiles => {\n            const res = [...prevFiles, ...filesWithProgress];\n            filesRef.current = res;\n            return res;\n        });\n\n        remainingUploadsRef.current = validFiles.length;\n\n        const uploadPromises = validFiles.map(({ file, id }) => {\n            return uploadChatFile(v, file, (progress) => {\n                setFiles((prevFiles) => {\n                    const updatedFiles = prevFiles.map(f => {\n                        if (f.id === id) {\n                            return { ...f, progress };\n                        }\n                        return f;\n                    });\n                    filesRef.current = updatedFiles;\n                    return updatedFiles;\n                });\n            }).then(response => {\n                const filePath = response.file_path;\n                filesRef.current = filesRef.current.map(f => {\n                    if (f.id === id) {\n                        return { ...f, isUploading: false, filePath, progress: 100 };\n                    }\n                    return f;\n                });\n                setFiles(filesRef.current);\n\n                remainingUploadsRef.current -= 1;\n                if (remainingUploadsRef.current === 0) {\n                    const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n                    onChange(uploadedFileIds);\n                }\n            }).catch(() => {\n                toast({\n                    variant: 'error',\n                    description: t('chat.fileUploadFailed', { name: file.name }),\n                });\n                handleFileRemove(file.name);\n                remainingUploadsRef.current -= 1;\n                if (remainingUploadsRef.current === 0) {\n                    const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n                    onChange(uploadedFileIds);\n                }\n            });\n        });\n\n        Promise.all(uploadPromises).then(() => {\n            const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n            onChange(uploadedFileIds);\n        });\n    };\n\n    const handleFileRemove = (fileName) => {\n        const res = filesRef.current.filter(file => file.name !== fileName);\n        filesRef.current = res\n        setFiles(res);\n\n        // If we manually remove a file during upload, we decrease the remaining upload counter\n        remainingUploadsRef.current = Math.max(remainingUploadsRef.current - 1, 0);\n\n        if (remainingUploadsRef.current === 0) {\n            // If no files remain, trigger onChange immediately\n            const uploadedFileIds = filesRef.current.filter(f => f.id).map(f => ({ path: f.filePath, name: f.name }));\n            onChange(uploadedFileIds); // Trigger onChange with uploaded file IDs\n        }\n    };\n\n    const formatFileSize = (size) => {\n        let fileSize = typeof size === 'string' ? parseFloat(size) : size;\n        const units = ['B', 'KB', 'MB', 'GB'];\n        let index = 0;\n\n        while (fileSize >= 1024 && index < units.length - 1) {\n            fileSize /= 1024;\n            index++;\n        }\n\n        return `${fileSize.toFixed(2)} ${units[index]}`;\n    };\n\n    useImperativeHandle(ref, () => ({\n        upload: (fileList) => {\n            if (disabled) return;\n            handleFileChange(Array.from(fileList));\n        }\n    }));\n\n    return (\n        <div className=\"relative z-10\">\n            {/* Displaying files */}\n            {!!files.length && <div className=\"absolute bottom-2 left-2 flex flex-wrap gap-2  bg-gray-50 p-2 rounded-xl max-h-96 overflow-y-auto\">\n                {files.map((file, index) => (\n                    <div key={index} className=\"group relative flex items-center space-x-3 bg-gray-100 p-2 rounded-xl cursor-default\">\n                        {/* Remove button */}\n                        <span\n                            onClick={() => handleFileRemove(file.name)}\n                            className=\"hidden group-hover:block absolute -right-1 -top-1 bg-gray-50 border-2 border-gray-300 text-gray-600 rounded-full cursor-pointer\"\n                        >\n                            <X size={14} />\n                        </span>\n\n                        {/* File Icon */}\n                        <div className=\"w-8 h-8 bg-gray-200 rounded-md flex items-center justify-center\">\n                            {file.isUploading ? <Loading className=\"size-4\" /> : <FileIcon className=\"w-6 h-6 text-gray-600\" />}\n                        </div>\n\n                        {/* File details */}\n                        <div className=\"flex-1\">\n                            <div className=\"text-sm font-medium text-gray-700 truncate\" title={file.name}>\n                                {file.name}\n                            </div>\n                            {file.isUploading ? file.progress === 100\n                                ? <div className=\"text-xs text-gray-500\">{t('chat.fileParsingShort')}</div>\n                                : <div className=\"text-xs text-gray-500\">{t('chat.uploadingShort')} {file.progress}%</div>\n                                : <div className=\"text-xs text-gray-500\">{getFileExtension(file.name)} {formatFileSize(file.size)}</div>}\n                        </div>\n                    </div>\n                ))}\n            </div>}\n\n            {/* File Upload Button */}\n            <div\n                className={`absolute right-10 top-5 cursor-pointer ${disabled ? 'text-gray-400 cursor-not-allowed' : ''}`}\n                onClick={() => !disabled && fileInputRef.current.click()}\n            >\n                <PaperclipIcon size={18} />\n            </div>\n\n            {/* File Input */}\n            <input\n                type=\"file\"\n                ref={fileInputRef}\n                multiple\n                accept={accepts}\n                onChange={(e) => handleFileChange(Array.from(e.target.files))}\n                className=\"hidden\"\n            />\n        </div>\n    );\n})\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatInput.tsx",
    "content": "import { FormIcon } from \"@/components/bs-icons/form\";\nimport { SendIcon } from \"@/components/bs-icons/send\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n// import GuideQuestions from \"./GuideQuestions\";\n// import { useMessageStore } from \"./messageStore\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { useAudioStore } from \"@/components/voiceFunction/audioPlayerStore\";\nimport SpeechToTextComponent from \"@/components/voiceFunction/speechToText\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport { RefreshCw } from \"lucide-react\";\nimport useFlowStore from \"../flowStore\";\nimport ChatFiles from \"./ChatFiles\";\nimport GuideQuestions from \"./GuideQuestions\";\nimport { useMessageStore } from \"./messageStore\";\nimport DragDropOverlay from \"./DragDropOverlay\";\nimport { useFileDropAndPaste } from \"./useFileDropAndPaste\";\nconst GuideQuestionsAny = GuideQuestions as any;\n\nexport const FileTypes = {\n    ALL: ['.PNG', '.JPEG', '.JPG', '.BMP', '.PDF', '.TXT', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV', '.DOC', '.DOCX', '.PPT', '.PPTX'],\n    IMAGE: ['.PNG', '.JPEG', '.JPG', '.BMP'],\n    FILE: ['.PDF', '.TXT', '.MD', '.HTML', '.XLS', '.XLSX', '.CSV', '.DOC', '.DOCX', '.PPT', '.PPTX'],\n}\n\nexport default function ChatInput({ autoRun, version, clear, form, wsUrl, onBeforSend, onLoad }) {\n    const { toast } = useToast()\n    const { t } = useTranslation()\n    const { appConfig } = useContext(locationContext)\n\n    const [inputLock, setInputLock] = useState({ locked: true, reason: '' })\n    const questionsRef = useRef(null)\n    const inputNodeIdRef = useRef('') // 当前输入框节点id\n    const messageIdRef = useRef('') // 当前输入框节点messageId\n    const [accepts, setAccepts] = useState('*') // 接受文件类型\n    const [uploadLock, setUploadLock] = useState(false) // 上传锁\n    const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n\n    const { isLoading: audioOpening } = useAudioStore()\n\n    const [showWhenLocked, setShowWhenLocked] = useState(false) // 强制开启表单按钮，不限制于input锁定\n\n    const __store: any = useMessageStore() as any\n    const {\n        messages,\n        hisMessages,\n        chatId,\n        createSendMsg,\n        createWsMsg,\n        overWsMsg,\n        inputForm,\n        setInputForm,\n        streamWsMsg,\n        insetSeparator,\n        destory,\n        insetNodeRun,\n        setShowGuideQuestion\n    } = __store\n\n    const currentChatIdRef = useRef(null)\n    const inputRef = useRef(null)\n    const continueRef = useRef(false)\n    // 停止状态\n    const [stop, setStop] = useState({\n        show: true,\n        disable: false\n    })\n    /**\n     * 记录会话切换状态，等待消息加载完成时，控制表单在新会话自动展开\n     */\n    const changeChatedRef = useRef(false)\n    useEffect(() => {\n        // console.log('message msg', messages, form);\n\n        if (changeChatedRef.current) {\n            changeChatedRef.current = false\n            // 新建的 form 技能,弹出窗口并锁定 input\n            // if (form && messages.length === 0 && hisMessages.length === 0) {\n            //     setInputLock({ locked: true, reason: '' })\n            //     setFormShow(true)\n            //     setShowWhenLocked(true)\n            // }\n        }\n\n    }, [messages, hisMessages])\n    useEffect(() => {\n        if (!chatId) return\n        if (!autoRun) return\n        // continueRef.current = false\n        // setInputLock({ locked: false, reason: '' })\n        // console.log('message chatid', messages, form, chatId);\n        // setShowWhenLocked(false)\n\n        currentChatIdRef.current = chatId\n        // changeChatedRef.current = true\n        // setFormShow(false)\n        createWebSocket().then(() => {\n            // 切换会话默认发送一条空消息(action, input)\n            const wsMsg = onBeforSend((messages.length === 0 && hisMessages.length === 0) || chatId.startsWith('test') ? 'init_data' : 'check_status', {})\n            sendWsMsg(wsMsg)\n        })\n    }, [chatId])\n\n    // 销毁\n    useEffect(() => {\n        return () => {\n            destory()\n            if (wsRef.current) {\n                wsRef.current.close()\n            }\n        }\n    }, [])\n\n    const handleSendClick = async () => {\n        if (fileUploading) return\n        // 解除锁定状态下 form 按钮开放的状态\n        // setShowWhenLocked(false)\n        // 关闭引导词\n        // setShowGuideQuestion(false)\n        // 收起表单\n        // formShow && setFormShow(false)\n        // setFormShow(false)\n        const [filePath, fileNames] = getFileIds().reduce((acc, cur) => {\n            acc[0].push(cur.path)\n            acc[1].push(cur.name)\n            return acc\n        }, [[], []])\n        // 文件拼接入消息\n        const _value = inputRef.current.value\n        if (_value.trim() === '' && filePath.length === 0) return\n        const value = fileNames.length > 0 ? fileNames.join('\\n') + '\\n' + _value : _value;\n\n        const event = new Event('input', { bubbles: true, cancelable: true });\n        inputRef.current.value = ''\n        inputRef.current.dispatchEvent(event); // 触发调节input高度\n        // const contunue = continueRef.current ? 'continue' : ''\n        // continueRef.current = false\n        const wsMsg = onBeforSend('input', {\n            nodeId: inputNodeIdRef.current,\n            msg: value,\n            files: filePath,\n            category: \"question\",\n            extra: '',\n            message_id: messageIdRef.current,\n            source: 0\n        })\n        // msg to store\n        createSendMsg(value)\n        // 锁定 input\n        setInputLock({ locked: true, reason: '' })\n        await createWebSocket()\n        sendWsMsg(wsMsg)\n\n        // 滚动聊天到底\n        const messageDom = document.getElementById('message-panne')\n        if (messageDom) {\n            messageDom.scrollTop = messageDom.scrollHeight;\n        }\n\n        questionsRef.current.clear()\n    }\n\n    const sendWsMsg = async (msg) => {\n        try {\n            wsRef.current.send(JSON.stringify(msg))\n        } catch (error) {\n            toast({\n                title: 'There was an error sending the message',\n                variant: 'error',\n                description: error.message\n            });\n        }\n    }\n\n    const wsRef = useRef(null)\n    const reRunStateRef = useRef(false)\n    const createWebSocket = () => {\n        // 单例\n        if (wsRef.current) return Promise.resolve('ok');\n        const isSecureProtocol = window.location.protocol === \"https:\";\n        const webSocketProtocol = isSecureProtocol ? \"wss\" : \"ws\";\n\n        return new Promise((res, rej) => {\n            try {\n                const ws = new WebSocket(`${webSocketProtocol}://${wsUrl}`)\n                wsRef.current = ws\n                // websocket linsen\n                ws.onopen = () => {\n                    console.log(\"WebSocket connection established!\");\n                    res('ok')\n                };\n                ws.onmessage = (event) => {\n                    const data = JSON.parse(event.data);\n                    // 过滤一些不需要的数据\n                    if ((data.category === 'end_cover' && data.type !== 'end_cover')) {\n                        return\n                    }\n\n                    if (data.type === 'begin') {\n                        setStop({ show: true, disable: false })\n                    } else if (data.type === 'close' && data.category === 'processing') {\n                        if (!reRunStateRef.current) {\n                            // 重试时阻止关闭stop\n                            setStop({ show: false, disable: false })\n                        }\n                        reRunStateRef.current = false\n                    }\n\n                    // const errorMsg = data.category === 'error' ? data.intermediate_steps : ''\n                    // // 异常类型处理，提示\n                    // if (errorMsg) return setInputLock({ locked: true, reason: errorMsg })\n                    // // 拦截会话串台\n                    if (data.chat_id && currentChatIdRef.current && currentChatIdRef.current !== data.chat_id) return\n                    handleWsMessage(data);\n                    ['begin', 'close'].includes(data.type) && onLoad()\n                    // if ('close' === data.type) {\n                    //     setAutogenStop(false)\n                    // }\n                }\n                ws.onclose = (event) => {\n                    console.log('error event :>> ', event);\n                    // wsRef.current = null\n                    // console.error('链接手动断开 event :>> ', event);\n                    // setStop({ show: false, disable: false })\n\n                    // if ([1005, 1008, 1009].includes(event.code)) {\n                    //     setInputLock({ locked: true, reason: event.reason })\n                    // } else {\n                    //     if (event.reason) {\n                    //         toast({\n                    //             title: t('prompt'),\n                    //             variant: 'error',\n                    //             description: event.reason\n                    //         });\n                    //     }\n                    //     setInputLock({ locked: true, reason: '' })\n                    // }\n                    // event.reason && addNotification({\n                    //     type: 'error',\n                    //     title: '运行异常',\n                    //     description: event.reason\n                    // })\n                };\n                ws.onerror = (ev) => {\n                    wsRef.current = null\n                    // setStop({ show: false, disable: false })\n                    console.error('链接异常error', ev);\n                    // toast({\n                    //     title: `${t('chat.networkError')}:`,\n                    //     variant: 'error',\n                    //     description: [\n                    //         t('chat.networkErrorList1'),\n                    //         t('chat.networkErrorList2'),\n                    //         t('chat.networkErrorList3')\n                    //     ]\n                    // });\n                    setInputLock({ locked: true, reason: '' })\n                };\n            } catch (err) {\n                console.error('创建链接异常', err);\n                rej(err)\n            }\n        })\n    }\n\n    const setRunCache = useFlowStore(state => state.setRunCache)\n    const addNotification = useFlowStore((state) => state.addNotification);\n    // 接受 ws 消息\n    const handleWsMessage = (data) => {\n        if (data.category === 'error') {\n            const { status_code, status_message, data: params } = data.message\n            if (status_code === 500) {\n                setInputLock({ locked: true, reason: data.message.message })\n            } else {\n                // 特殊状态吗支持输入框展示reason\n                const reason = [10421, 13002, 13010].includes(status_code) ? t(`errors.${status_code}`, params) : ' '\n                setInputLock({ locked: true, reason })\n            }\n\n            // 记录\n            const errorMsg = status_code == 500 ? status_message || data.message.message : t(`errors.${status_code}`, params)\n            addNotification({\n                type: 'error',\n                title: 'runtime error',\n                description: errorMsg\n            })\n\n            return toast({\n                variant: 'error',\n                description: errorMsg\n            });\n        } else if (data.category === 'node_run') {\n            inputNodeIdRef.current = data.message.node_id\n            // 缓存运行结果,用于[单节点运行]自动填写参数\n            if (data.type === 'end' && data.message.input_data) {\n                setRunCache(data.message.node_id\n                    , data.message.input_data)\n            }\n            insetNodeRun(data)\n            return sendNodeLogEvent(data)\n        } else if (data.category === \"guide_word\") {\n            data.message.msg = data.message.guide_word\n        } else if (data.category === 'input') {\n            const { node_id, input_schema } = data.message\n            inputNodeIdRef.current = node_id\n            messageIdRef.current = data.message_id\n            // 限制文件类型\n            if (input_schema.tab === 'dialog_input') {\n                const schemaItem = input_schema.value?.find(el => el?.key === 'dialog_file_accept')\n                const uploadSwithItem = input_schema.value?.find(el => el?.key === 'user_input_file')\n                setUploadLock(uploadSwithItem ? uploadSwithItem.value : true)\n                const fileAccept = schemaItem?.value\n                if (fileAccept === 'image') {\n                    setAccepts(FileTypes.IMAGE.join(','))\n                } else if (fileAccept === 'file') {\n                    setAccepts(FileTypes.FILE.join(','))\n                } else {\n                    setAccepts(FileTypes.IMAGE.join(',') + ',' + FileTypes.FILE.join(','))\n                }\n            }\n            // 待用户输入\n            input_schema.tab === 'form_input' ? setInputForm(input_schema) : setInputLock({ locked: false, reason: '' })\n            setTimeout(() => {\n                inputRef.current.focus()\n            }, 60);\n            return\n        } else if (data.category === 'guide_question') {\n            return questionsRef.current.updateQuestions(data.message.guide_question.filter(q => q))\n        } else if (data.category === 'stream_msg') {\n            streamWsMsg(data)\n        } else if (data.category === 'end_cover' && data.type === 'end_cover') {\n            setInputLock({ locked: true, reason: '' })\n            sendWsMsg({ \"action\": \"stop\" });\n            return overWsMsg(data)\n            // return handleRestartClick()\n        }\n\n        if (data.type === 'close' && data.category === 'processing') {\n            insetSeparator(t('chat.chatEndMessage'))\n            setInputLock((prev) => (prev.reason ? prev : { locked: true, reason: '' }))\n            // 重启会话按钮,接收close确认后端处理结束后重启会话\n            if (restartCallBackRef.current[data.chat_id]) {\n                restartCallBackRef.current[data.chat_id]()\n                restartCallBackRef.current[data.chat_id] = null\n            }\n        } else if (data.type === 'over') {\n            createWsMsg(data)\n        }\n    }\n\n    // 日志广播->nodes\n    const sendNodeLogEvent = (data) => {\n        const { node_id } = data.message\n        const isError = !!data.message.reason\n        const event = new CustomEvent('nodeLogEvent', {\n            detail: {\n                nodeId: node_id,\n                action: isError ? '' : data.type === 'start' ? 'loading' : 'success',\n                data: isError ? [[{ key: 'error', type: 'params', value: data.message.reason }]] : data.message.log_data // 缓存TODO\n            }\n        })\n        window.dispatchEvent(event)\n    }\n\n    // 触发发送消息事件（重试、表单）\n    useEffect(() => {\n        const handleCustomEvent = (e) => {\n            if (!showWhenLocked && inputLock.locked) return console.error('弹窗已锁定，消息无法发送')\n            const { send, message } = e.detail\n            inputRef.current.value = message\n            if (send) handleSendClick()\n        }\n        const handleOutPutEvent = async (e) => {\n            const { nodeId, data, message } = e.detail\n            const { flow_id, chat_id } = onBeforSend('flowInfo', {})\n            await createWebSocket()\n            sendWsMsg({\n                action: 'input',\n                flow_id,\n                chat_id,\n                data: {\n                    [nodeId]: {\n                        data,\n                        message: JSON.stringify({\n                            ...message.message,\n                            input_msg: Object.values(data)[0],\n                            hisValue: Object.values(data)[0]\n                        }),\n                        message_id: message.message_id\n                    }\n                }\n            })\n        }\n        const handleSendForm = async (e) => {\n            const { data, msg } = e.detail\n            setInputForm(null)\n            createSendMsg(msg)\n            await createWebSocket()\n            const { flow_id, chat_id } = onBeforSend('flowInfo', {})\n            sendWsMsg({\n                action: 'input',\n                flow_id,\n                chat_id,\n                data: {\n                    [inputNodeIdRef.current]: {\n                        data,\n                        message: msg,\n                        message_id: messageIdRef.current,\n                        category: 'question',\n                        extra: '',\n                        source: 0\n                    }\n                }\n            })\n        }\n        document.addEventListener('inputFormEvent', handleSendForm)\n        document.addEventListener('outputMsgEvent', handleOutPutEvent)\n        document.addEventListener('userResendMsgEvent', handleCustomEvent)\n        return () => {\n            document.removeEventListener('inputFormEvent', handleSendForm)\n            document.removeEventListener('outputMsgEvent', handleOutPutEvent)\n            document.removeEventListener('userResendMsgEvent', handleCustomEvent)\n        }\n    }, [inputLock.locked, showWhenLocked])\n\n    // 点击引导词\n    const handleClickGuideWord = (message) => {\n        if (inputLock.locked) return console.error('弹窗已锁定，消息无法发送')\n        inputRef.current.value = message\n        handleSendClick()\n    }\n\n    // auto input height\n    const handleTextAreaHeight = (e) => {\n        const textarea = e.target\n        textarea.style.height = 'auto'\n        textarea.style.height = textarea.scrollHeight + 'px'\n        // setInputEmpty(textarea.value.trim() === '')\n    }\n\n    // stop click\n    // const handleStopClick = () => {\n    //     if (stop.disable) return\n    //     setStop({ show: true, disable: true });\n    //     setInputLock({ locked: true, reason: '' })\n    //     sendWsMsg({ \"action\": \"stop\" });\n    // }\n    // restart\n    const restartCallBackRef = useRef({})\n    const [restarted, setRestarted] = useState(false)\n    const handleRestartClick = () => {\n        sendWsMsg({ \"action\": \"stop\" });\n        setInputForm(null)\n        setRestarted(true)\n        const chatId = currentChatIdRef.current.startsWith('test') ? '' : currentChatIdRef.current\n        restartCallBackRef.current[chatId] = () => {\n            createWebSocket().then(() => {\n                setRestarted(false)\n                const data = onBeforSend('refresh_flow', {})\n                sendWsMsg(data)\n            })\n        }\n        // wsRef.current?.close()\n        // wsRef.current = null\n        // stop.show && insetSeparator(t('chat.chatEndMessage'))\n        // setTimeout(() => {\n        //     createWebSocket().then(() => {\n        //         sendWsMsg(onBeforSend('init_data', {}))\n        //     })\n        // }, 300);\n        if (stop.show) {\n            reRunStateRef.current = true\n        }\n    }\n\n    const placholder = useMemo(() => {\n        // if (inputForm) {\n        //     return '      点击刷新按钮可开启新对话'\n        // }\n        const reason = inputLock.reason || ' '\n        return inputLock.locked ? reason : t('chat.inputPlaceholder')\n    }, [inputForm, inputLock])\n\n    // 文件上传状态\n    const { fileUploading, getFileIds, loadingChange } = useFileLoading(inputLock.locked)\n    const handleSpeechRecognition = (text) => {\n        console.log('text', text);\n\n        if (!showWhenLocked && inputLock.locked) return;\n        if (!inputRef.current) return;\n\n        // 将识别结果追加到当前输入框内容后\n        const currentValue = inputRef.current.value;\n        inputRef.current.value = currentValue + text;\n\n        // 触发input事件以更新UI（如自动调整高度）\n        const event = new Event('input', { bubbles: true, cancelable: true });\n        inputRef.current.dispatchEvent(event);\n    };\n\n    // handle drop and paste\n    const inputFilesRef = useRef(null)\n    const { isDragging, handlePaste } = useFileDropAndPaste({\n        enabled: !inputLock.locked,\n        onFilesReceived: (files) => {\n            inputFilesRef.current?.upload(files);\n        }\n    });\n\n    return <div className=\"absolute bottom-0 w-full pt-1 bg-[#fff] dark:bg-[#1B1B1B] z-10\">\n        {isDragging && <DragDropOverlay />}\n        <div className={`relative pr-4 ${clear && 'pl-9'}`}>\n\n            {/* 引导问题 */}\n            <GuideQuestionsAny\n                ref={questionsRef}\n                locked={inputLock.locked}\n                onClick={handleClickGuideWord}\n            />\n            {/* restart */}\n            <div className=\"flex absolute left-0 top-3 z-10\">\n                <Tip side={`${version === 'v2' ? 'right' : 'top-right'}`} content={\"重新运行\"}>\n                    <Button className=\"rounded-full\" disabled={restarted} variant=\"ghost\" size=\"icon\" onClick={handleRestartClick}><RefreshCw size={18} /></Button>\n                </Tip>\n            </div>\n\n            {/* form switch */}\n            <div className=\"flex absolute left-3 top-4 z-10\">\n                {\n                    form && <div\n                        className={`w-6 h-6 rounded-sm hover:bg-gray-200 cursor-pointer flex justify-center items-center `}\n                    // onClick={() => (showWhenLocked || !inputLock.locked) && setFormShow(!formShow)}\n                    ><FormIcon className={!showWhenLocked && inputLock.locked ? 'text-muted-foreground' : 'text-foreground'}></FormIcon></div>\n                }\n            </div>\n            {/* 语音转文字 */}\n            <div className={` ${!inputLock.locked && uploadLock && 'mr-4'}`}>\n                {linsightConfig?.asr_model?.id && <SpeechToTextComponent disabled={inputLock.locked} onChange={handleSpeechRecognition} />}\n            </div>\n\n            {/* 附件 */}\n            {!inputLock.locked && uploadLock && <ChatFiles\n                ref={inputFilesRef}\n                accepts={accepts}\n                disabled={audioOpening}\n                v={location.href.indexOf('/chat/flow/') === -1 ? 'v1' : 'v2'}\n                onChange={loadingChange} />}\n            {/* send */}\n            <div className=\"flex gap-2 absolute right-7 top-4 z-10\">\n                <div\n                    id=\"bs-send-btn\"\n                    className=\"w-6 h-6 rounded-sm hover:bg-gray-200 dark:hover:bg-gray-950 cursor-pointer flex justify-center items-center\"\n                    onClick={() => { !inputLock.locked && !fileUploading && !audioOpening && handleSendClick() }}>\n                    <SendIcon className={`${inputLock.locked || fileUploading || audioOpening ? 'text-muted-foreground' : 'text-foreground'}`} />\n                </div>\n            </div>\n            {/* stop & 重置 */}\n            <div className=\"absolute w-full flex justify-center left-0 bottom-16\">\n                {!stop.show && <Button\n                    className=\"rounded-full bg-[#fff] dark:bg-[#1B1B1B]\"\n                    variant=\"outline\"\n                    disabled={restarted}\n                    onClick={handleRestartClick}>\n                    <RefreshCw className=\"mr-1\" size={16} />\n                    {t('chat.runNewWorkflow')}\n                </Button>\n                }\n            </div>\n            {/* question */}\n            <Textarea\n                id=\"bs-send-input\"\n                ref={inputRef}\n                rows={1}\n                style={{ height: 56 }}\n                disabled={inputLock.locked}\n                onInput={handleTextAreaHeight}\n                onPaste={handlePaste}\n                placeholder={placholder}\n                className={\"resize-none py-4 pr-10 text-md min-h-6 max-h-[200px] scrollbar-hide dark:bg-[#131415] text-gray-800\" + (form && ' pl-10')}\n                onKeyDown={(event) => {\n                    if (event.key === \"Enter\" && !event.shiftKey) {\n                        event.preventDefault();\n                        !inputLock.locked && handleSendClick()\n                    }\n                }}\n            ></Textarea>\n        </div>\n        <p className=\"text-center text-sm pt-2 pb-4 text-gray-400\">{appConfig.dialogTips}</p>\n    </div>\n};\n\n\n\nconst useFileLoading = (locked) => {\n    const [loading, setLoading] = useState(false);\n    const filesRef = useRef([])\n    useEffect(() => {\n        if (locked) filesRef.current = []\n    }, [locked])\n    return {\n        fileUploading: loading,\n        getFileIds: () => filesRef.current,\n        loadingChange(files: string[] | null) {\n            if (files) {\n                setLoading(false)\n                filesRef.current = files\n            } else {\n                setLoading(true)\n                filesRef.current = []\n            }\n        },\n        clear() {\n            setLoading(false)\n            filesRef.current = []\n        }\n    }\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatMessages.tsx",
    "content": "import ResouceModal from \"@/pages/ChatAppPage/components/ResouceModal\";\nimport ThumbsMessage from \"@/pages/ChatAppPage/components/ThumbsMessage\";\nimport { useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n// import FileBs from \"./FileBs\";\n// import MessageBs from \"./MessageBs\";\n// import MessageSystem from \"./MessageSystem\";\n// import MessageUser from \"./MessageUser\";\n// import RunLog from \"./RunLog\";\n// import Separator from \"./Separator\";\nimport Separator from \"@/components/bs-comp/chatComponent/Separator\";\nimport InputForm from \"./InputForm\";\nimport MessageBs from \"./MessageBs\";\nimport MessageBsChoose from \"./MessageBsChoose\";\nimport MessageNodeRun from \"./MessageNodeRun\";\nimport { useMessageStore } from \"./messageStore\";\nimport MessageUser from \"./MessageUser\";\n\nexport default function ChatMessages({\n    debug,\n    mark = false,\n    logo,\n    useName,\n    guideWord,\n    loadMore,\n    onMarkClick = undefined,\n    version,\n}) {\n    const { t } = useTranslation()\n    const { chatId, messages, inputForm } = useMessageStore()\n\n    // 反馈\n    const thumbRef = useRef(null)\n    // 溯\n    const sourceRef = useRef(null\n    )\n    // 自动滚动\n    const messagesRef = useRef(null)\n    const scrollLockRef = useRef(false)\n    useEffect(() => {\n        scrollLockRef.current = false\n        queryLockRef.current = false\n    }, [chatId])\n    const lastScrollTimeRef = useRef(0); // 记录上次执行的时间戳\n    useEffect(() => {\n        if (scrollLockRef.current) return;\n\n        const now = Date.now();\n        const throttleTime = 1200; // 1秒\n\n        // 如果距离上次执行的时间小于 throttleTime，则直接返回\n        if (now - lastScrollTimeRef.current < throttleTime) {\n            return;\n        }\n\n        // 执行滚动操作\n        messagesRef.current.scrollTop = messagesRef.current.scrollHeight;\n\n        // 更新上次执行的时间戳\n        lastScrollTimeRef.current = now;\n    }, [messages]);\n\n    // 消息滚动加载\n    const queryLockRef = useRef(false)\n    useEffect(() => {\n        function handleScroll() {\n            if (queryLockRef.current) return\n            const { scrollTop, clientHeight, scrollHeight } = messagesRef.current\n            // 距离底部 600px内，开启自动滚动\n            scrollLockRef.current = (scrollHeight - scrollTop - clientHeight) > 400\n\n            if (messagesRef.current.scrollTop <= 90) {\n                queryLockRef.current = true\n                loadMore()\n                // TODO 翻页定位\n                // 临时处理防抖\n                setTimeout(() => {\n                    queryLockRef.current = false\n                }, 1000);\n            }\n        }\n\n        messagesRef.current?.addEventListener('scroll', handleScroll);\n        return () => messagesRef.current?.removeEventListener('scroll', handleScroll)\n    }, [messagesRef.current, messages, chatId]);\n\n    // const messagesList = [...hisMessages, ...messages]\n    const messagesList = [...messages]\n    console.log('ui messages :>> ', messagesList);\n    // 成对的qa msg\n    const findQa = (msgs, index) => {\n        const item = msgs[index]\n        if (['stream_msg', 'answer', 'output_msg'].includes(item.category)) {\n            const a = item.message.msg || item.message\n            let q = ''\n            while (index > -1) {\n                const qItem = msgs[--index]\n                if (['question', 'input'].includes(qItem?.category)) {\n                    q = qItem.message[qItem.chatKey] || qItem.message\n                    break\n                }\n            }\n            return { q, a }\n        } else if (['question', 'input'].includes(item?.category)) {\n            const q = item.message[item.chatKey] || item.message\n            let a = ''\n            while (msgs[++index]) {\n                const aItem = msgs[index]\n                if (['stream_msg', 'answer', 'output_msg'].includes(aItem.category)) {\n                    a = aItem.message.msg || aItem.message\n                    break\n                }\n            }\n            return { q, a }\n        }\n    }\n\n    return <div id=\"message-panne\" ref={messagesRef} className=\"h-full overflow-y-auto scrollbar-hide pt-12 pb-60 px-4\">\n        {\n            messagesList.map((msg, index) => {\n                // output节点特殊msg\n                switch (msg.category) {\n                    case 'input':\n                        return null\n                    case 'question':\n                        return <MessageUser\n                            mark={mark}\n                            key={msg.message_id}\n                            useName={useName}\n                            data={msg}\n                            onMarkClick={() => { onMarkClick?.('question', msg.id, findQa(messagesList, index)) }}\n                        />;\n                    case 'guide_word':\n                    case 'output_msg':\n                    case 'stream_msg':\n                    case \"answer\":\n                        return <MessageBs\n                            debug={debug}\n                            mark={mark}\n                            logo={logo}\n                            version={version}\n                            key={msg.message_id}\n                            data={msg}\n                            onUnlike={(chatId) => { thumbRef.current?.openModal(chatId) }}\n                            onSource={(data) => { sourceRef.current?.openModal(data) }}\n                            onMarkClick={() => onMarkClick?.('answer', msg.message_id, findQa(messagesList, index))}\n                        />;\n                    case 'separator':\n                        return <Separator key={msg.message_id} text={msg.message || t('chat.roundOver')} />;\n                    case 'output_with_choose_msg':\n                        return <MessageBsChoose key={msg.message_id} data={msg} logo={logo} />;\n                    case 'output_with_input_msg':\n                        return <MessageBsChoose type='input' key={msg.message_id} data={msg} logo={logo} />;\n                    case 'node_run':\n                        return <MessageNodeRun key={msg.message_id} data={msg} />;\n                    default:\n                        return <div className=\"text-sm mt-2 border rounded-md p-2\" key={msg.message_id}>Unknown message type</div>;\n                }\n            })\n        }\n        {inputForm && <InputForm data={inputForm} />}\n        <ThumbsMessage ref={thumbRef}></ThumbsMessage>\n        <ResouceModal ref={sourceRef}></ResouceModal>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatPane.tsx",
    "content": "import { getFlowApi } from \"@/controllers/API/flow\";\nimport { useEffect, useMemo } from \"react\";\nimport Chat from \"./Chat\";\nimport { useMessageStore } from \"./messageStore\";\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\n\nexport default function ChatPane({ debug = false, autoRun = false, chatId, flow, wsUrl = '',version }: { debug?: boolean, autoRun?: boolean, chatId: string, flow: any, wsUrl?: string }) {\n    const { changeChatId } = useMessageStore()\n\n    useEffect(() => {\n        changeChatId(chatId)\n    }, [chatId])\n\n    const getMessage = (action, { nodeId, msg, category, extra, files, source, message_id }) => {\n        if (action === 'refresh_flow') {\n            // return getFlowApi(flow.id, 'v1').then(f => {\n            const { data, ...other } = flow\n            const { edges, nodes, viewport } = other\n            return {\n                action: 'init_data',\n                chat_id: chatId.startsWith('test') ? undefined : chatId,\n                flow_id: flow.id,\n                data: {\n                    ...other,\n                    edges,\n                    nodes,\n                    viewport\n                }\n            }\n            // })\n        }\n        if (action === 'flowInfo') {\n            return {\n                flow_id: flow.id,\n                chat_id: chatId.startsWith('test') ? undefined : chatId,\n            }\n        }\n        if (action === 'getInputForm') {\n            const node = flow.nodes.find(node => node.id === nodeId)\n            if (node.data.tab.value === 'input') return null\n            let form = null\n            node.data.group_params.some(group => group.params.some(param => {\n                if (param.tab === 'form') {\n                    form = param\n                    return true\n                }\n                return false\n            }))\n            return form\n        }\n        if (action === 'input') {\n            const node = flow.nodes.find(node => node.id === nodeId)\n            const tab = node.data.tab.value\n            let variable = ''\n            node.data.group_params.some(group =>\n                group.params.some(param => {\n                    if (param.tab === tab) {\n                        variable = param.key\n                        return true\n                    }\n                    return false\n                })\n            )\n            return {\n                action,\n                flow_id: flow.id,\n                chat_id: chatId.startsWith('test') ? undefined : chatId,\n                data: {\n                    [nodeId]: {\n                        data: {\n                            [variable]: msg,\n                            dialog_files_content: files\n                        },\n                        message: msg,\n                        message_id,\n                        category,\n                        extra,\n                        source\n                    }\n                }\n            }\n        }\n\n        return {\n            action,\n            chat_id: chatId.startsWith('test') ? undefined : chatId,\n            flow_id: flow.id,\n            data: flow\n        }\n    }\n\n    const logo = useMemo(() => {\n        return <AppAvator id={flow.name} url={flow.logo} flowType={flow.flow_type} className=\"\"></AppAvator>\n    }, [flow])\n\n    return <Chat\n        debug={debug}\n        autoRun={autoRun}\n        useName=''\n        guideWord=''\n        logo={logo}\n        clear\n        wsUrl={wsUrl}\n        onBeforSend={getMessage}\n        version = {version}\n    ></Chat>\n\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/ChatTest.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { GripVertical, Maximize2, Minus, X } from \"lucide-react\";\nimport { forwardRef, useContext, useImperativeHandle, useState, useRef, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ChatPane from \"./ChatPane\";\nimport { cloneDeep } from \"lodash-es\";\n\n// ref\nexport const ChatTest = forwardRef((props, ref) => {\n    const [open, setOpen] = useState(false);\n    const [chatId, setChatId] = useState(\"\");\n    const [flow, setFlow] = useState<any>(null);\n    const [small, setSmall] = useState(false);\n    const { appConfig } = useContext(locationContext);\n    const { t } = useTranslation('flow');\n    const [width, setWidth] = useState(window.innerWidth / 2.5);\n    const resizableRef = useRef(null);\n\n    // Expose a `run` method through the `ref` to control the sheet's state\n    useImperativeHandle(ref, () => ({\n        run: (flow) => {\n            setOpen(false);\n            setTimeout(() => {\n                setOpen(true);  // 通过 `run` 方法打开 `Sheet`\n                setSmall(false);\n\n                // 克隆flow用于调试\n                setFlow(cloneDeep(flow));\n                setChatId(`test_${generateUUID(16)}`);\n            }, 0);\n        },\n        close() {\n            handleClose();\n        }\n    }));\n\n    const handleClose = () => {\n        setOpen(false);\n\n        const event = new CustomEvent('nodeLogEvent', {\n            detail: {\n                nodeId: '*', action: 'normal', data: []\n            }\n        });\n        window.dispatchEvent(event);\n    };\n\n    const handleMouseDown = (e) => {\n        document.addEventListener('mousemove', handleMouseMove);\n        document.addEventListener('mouseup', handleMouseUp);\n        e.preventDefault();\n    };\n\n    const handleMouseMove = (e) => {\n        const newWidth = window.innerWidth - e.clientX;\n        if (newWidth > 600 && newWidth < window.innerWidth) {\n            setWidth(newWidth);\n        }\n    };\n\n    const handleMouseUp = () => {\n        document.removeEventListener('mousemove', handleMouseMove);\n        document.removeEventListener('mouseup', handleMouseUp);\n    };\n\n    useEffect(() => {\n        return () => {\n            document.removeEventListener('mousemove', handleMouseMove);\n            document.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, []);\n\n    if (!open) return null;\n\n    const host = appConfig.websocketHost || window.location.host;\n    return (\n        <div\n            ref={resizableRef}\n            className={`${small ? 'bottom-2 right-4 w-52' : 'h-full right-0 bottom-0'} transition-all fixed rounded-2xl bg-[#fff] dark:bg-[#1B1B1B] z-10 border shadow-sm overflow-hidden`}\n            style={{ width: small ? '13rem' : `${width}px` }}\n        >\n            <div className=\"flex justify-between items-center bg-background-main px-4 py-1\">\n                <span className=\"text-sm font-bold\">{t('workflowPreview')}</span>\n                <div className=\"flex gap-2\">\n                    <Button\n                        size=\"icon\"\n                        variant=\"outline\"\n                        className=\"rounded-md shadow-md size-4 p-0.5\"\n                        onClick={() => setSmall(!small)}\n                    >{small ? <Maximize2 /> : <Minus />}</Button>\n                    <Button\n                        size=\"icon\"\n                        variant=\"destructive\"\n                        className=\"rounded-md shadow-md size-4 p-0.5\"\n                        onClick={handleClose}\n                    ><X /></Button>\n                </div>\n            </div>\n            <div className={`h-[calc(100vh-28px)] relative overflow-y-auto ${small ? 'hidden' : ''}`} onKeyDown={(e) => e.stopPropagation()}>\n                <ChatPane autoRun chatId={chatId} flow={flow} wsUrl={`${host}${__APP_ENV__.BASE_URL}/api/v1/workflow/chat/${flow?.id}`} />\n            </div>\n            {!small && <div\n                className=\"absolute left-0 top-0 bottom-0 w-2 cursor-ew-resize flex items-center\"\n                onMouseDown={handleMouseDown}\n            ><GripVertical className=\"text-gray-400 min-w-3\" /></div>}\n        </div>\n    );\n});\n\nexport default ChatTest;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/DragDropOverlay.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\n\nexport const DragDropOverlayIcon = () => {\n    return <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 132 108\"\n        fill=\"none\"\n        width=\"132\"\n        height=\"108\"\n    >\n        <g clipPath=\"url(#clip0_3605_64419)\">\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M25.2025 29.3514C10.778 33.2165 8.51524 37.1357 11.8281 49.4995L13.4846 55.6814C16.7975 68.0453 20.7166 70.308 35.1411 66.443L43.3837 64.2344C57.8082 60.3694 60.0709 56.4502 56.758 44.0864L55.1016 37.9044C51.7887 25.5406 47.8695 23.2778 33.445 27.1428L29.3237 28.2471L25.2025 29.3514ZM18.1944 42.7244C18.8572 41.5764 20.325 41.1831 21.4729 41.8459L27.3517 45.24C28.4996 45.9027 28.8929 47.3706 28.2301 48.5185L24.836 54.3972C24.1733 55.5451 22.7054 55.9384 21.5575 55.2757C20.4096 54.613 20.0163 53.1451 20.6791 51.9972L22.8732 48.1969L19.0729 46.0028C17.925 45.3401 17.5317 43.8723 18.1944 42.7244ZM29.4091 56.3843C29.066 55.104 29.8258 53.7879 31.1062 53.4449L40.3791 50.9602C41.6594 50.6172 42.9754 51.377 43.3184 52.6573C43.6615 53.9376 42.9017 55.2536 41.6214 55.5967L32.3485 58.0813C31.0682 58.4244 29.7522 57.6646 29.4091 56.3843Z\"\n                fill=\"#AFC1FF\"\n            />\n        </g>\n        <g clipPath=\"url(#clip1_3605_64419)\">\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M86.8124 13.4036C81.0973 11.8722 78.5673 13.2649 77.0144 19.0603L68.7322 49.97C67.1793 55.7656 68.5935 58.2151 74.4696 59.7895L97.4908 65.958C103.367 67.5326 105.816 66.1184 107.406 60.1848L115.393 30.379C115.536 29.8456 115.217 29.2959 114.681 29.16C113.478 28.8544 112.435 28.6195 111.542 28.4183C106.243 27.2253 106.22 27.2201 109.449 20.7159C109.73 20.1507 109.426 19.4638 108.816 19.3004L86.8124 13.4036ZM87.2582 28.4311C86.234 28.1567 85.1812 28.7645 84.9067 29.7888C84.6323 30.813 85.2401 31.8658 86.2644 32.1403L101.101 36.1158C102.125 36.3902 103.178 35.7824 103.453 34.7581C103.727 33.7339 103.119 32.681 102.095 32.4066L87.2582 28.4311ZM82.9189 37.2074C83.1934 36.1831 84.2462 35.5753 85.2704 35.8497L100.107 39.8252C101.131 40.0996 101.739 41.1524 101.465 42.1767C101.19 43.201 100.137 43.8088 99.1132 43.5343L84.2766 39.5589C83.2523 39.2844 82.6445 38.2316 82.9189 37.2074ZM83.2826 43.2683C82.2584 42.9939 81.2056 43.6017 80.9311 44.626C80.6567 45.6502 81.2645 46.703 82.2888 46.9775L89.7071 48.9652C90.7313 49.2396 91.7841 48.6318 92.0586 47.6076C92.333 46.5833 91.7252 45.5305 90.7009 45.256L83.2826 43.2683Z\"\n                fill=\"#7989FF\"\n            />\n        </g>\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M40.4004 71.8426C40.4004 57.2141 44.0575 53.5569 61.1242 53.5569H66.0004H70.8766C87.9432 53.5569 91.6004 57.2141 91.6004 71.8426V79.1569C91.6004 93.7855 87.9432 97.4426 70.8766 97.4426H61.1242C44.0575 97.4426 40.4004 93.7855 40.4004 79.1569V71.8426ZM78.8002 67.4995C78.8002 70.1504 76.6512 72.2995 74.0002 72.2995C71.3492 72.2995 69.2002 70.1504 69.2002 67.4995C69.2002 64.8485 71.3492 62.6995 74.0002 62.6995C76.6512 62.6995 78.8002 64.8485 78.8002 67.4995ZM60.7204 70.8597C60.2672 70.2553 59.5559 69.8997 58.8004 69.8997C58.045 69.8997 57.3337 70.2553 56.8804 70.8597L47.2804 83.6597C46.4851 84.72 46.7 86.2244 47.7604 87.0197C48.8208 87.8149 50.3251 87.6 51.1204 86.5397L58.8004 76.2997L66.4804 86.5397C66.8979 87.0962 67.5363 87.4443 68.2303 87.4936C68.9243 87.5429 69.6055 87.2887 70.0975 86.7967L74.8004 82.0938L79.5034 86.7967C80.4406 87.734 81.9602 87.734 82.8975 86.7967C83.8347 85.8595 83.8347 84.3399 82.8975 83.4026L76.4975 77.0026C75.5602 76.0653 74.0406 76.0653 73.1034 77.0026L68.6601 81.4459L60.7204 70.8597Z\"\n            fill=\"#3C46FF\"\n        />\n        <defs>\n            <clipPath id=\"clip0_3605_64419\">\n                <rect\n                    width=\"56\"\n                    height=\"56\"\n                    fill=\"white\"\n                    transform=\"translate(0 26.9939) rotate(-15)\"\n                />\n            </clipPath>\n            <clipPath id=\"clip1_3605_64419\">\n                <rect\n                    width=\"64\"\n                    height=\"64\"\n                    fill=\"white\"\n                    transform=\"translate(69.5645 0.5) rotate(15)\"\n                />\n            </clipPath>\n        </defs>\n    </svg>\n};\n\n\nexport default function DragDropOverlay() {\n    const { t } = useTranslation();\n\n    return (\n        <div\n            className=\"bg-surface-primary/85 fixed inset-0 z-[9999] flex flex-col items-center justify-center\n        gap-2 text-text-primary\n        backdrop-blur-[4px] transition-all duration-200\n        ease-in-out animate-in fade-in\n        zoom-in-95 hover:backdrop-blur-sm\"\n        >\n            <DragDropOverlayIcon />\n            <h3>{t('com_addAnything')}</h3>\n            <h4>{t('com_dropAnyFileToAdd')}</h4>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/GuideQuestions.tsx",
    "content": "import { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\n// 引导词推荐\nconst GuideQuestions = forwardRef(({ locked, chatId, onClick }, ref) => {\n\n    const { t } = useTranslation()\n    const [questions, setQuestions] = useState([]) // State to hold questions\n\n    useImperativeHandle(ref, () => ({\n        updateQuestions(newQuestions) { // Expose this method to the parent\n            console.log('newQuestions :>> ', newQuestions);\n            !questions.length && setQuestions(newQuestions)\n        },\n        clear() {\n            setQuestions([])\n        }\n    }))\n\n    useEffect(() => {\n        setQuestions([]) // Clear questions when chatId changes\n    }, [chatId])\n\n    const words = useMemo(() => {\n        if (questions.length < 4) return questions\n        // 随机按序取三个\n        const res = []\n        const randomIndex = Math.floor(Math.random() * questions.length)\n        for (let i = 0; i < 3; i++) {\n            const item = questions[(randomIndex + i) % (questions.length - 1)]\n            res.push(item)\n        }\n        return res\n    }, [questions])\n\n    if (locked || !words.length) return null\n\n    return (\n        <div className=\"relative\">\n            <div className=\"absolute left-0 bottom-0\">\n                <p className=\"text-gray-950 text-sm mb-2 bg-[rgba(255,255,255,0.8)] rounded-md w-fit px-2 py-1\">\n                    {t('chat.recommendationQuestions')}\n                </p>\n                {\n                    words.map((question, index) => (\n                        <div\n                            key={index}\n                            className=\"w-fit bg-[#d4dffa] border-2 border-gray-50 shadow-md text-gray-600 rounded-md mb-1 px-4 py-1 text-sm cursor-pointer\"\n                            onClick={() => {\n                                onClick(question)\n                                setQuestions([])\n                            }}\n                        >\n                            {question}\n                        </div>\n                    ))\n                }\n            </div>\n        </div>\n    )\n})\n\nexport default GuideQuestions\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/InputForm.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport InputComponent from \"@/components/inputComponent\";\nimport InputFileComponent from \"@/components/inputFileComponent\";\nimport { WorkflowNodeParam } from \"@/types/flow\";\nimport { useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FileTypes } from \"./ChatInput\";\n\nconst enum FormItemType {\n    Text = 'text',\n    File = 'file',\n    Select = 'select'\n}\n\nconst InputForm = ({ data }: { data: WorkflowNodeParam }) => {\n    const { t } = useTranslation()\n\n    const formDataRef = useRef(data.value.reduce((map, item) => {\n        map[item.key] = { key: item.key, type: item.type, label: item.value, fileName: '', value: '' }\n        return map\n    }, {}))\n\n    const handleChange = (item, value) => {\n        if (item.type === FormItemType.File) {\n            formDataRef.current[item.key].value = Array.isArray(value) ? value : [value]\n        } else {\n            formDataRef.current[item.key].value = value\n        }\n    }\n\n    const updataFileName = (item, fileName) => {\n        formDataRef.current[item.key].fileName = fileName\n    }\n\n    const { message } = useToast()\n    const submit = () => {\n        const valuesObject = {}\n        let stringObject = \"\"\n        const errors = []\n\n        Object.keys(formDataRef.current).forEach((key: string) => {\n            const fieldData = formDataRef.current[key]\n            const required = data.value.find(item => item.key === key).required\n            if (required && !fieldData.value) {\n                errors.push(t('report.requiredField', { label: fieldData.label }));\n            }\n            valuesObject[key] = fieldData.value\n            stringObject += `${fieldData.label}:${fieldData.type === FormItemType.File ? fieldData.fileName : fieldData.value}\\n`\n        })\n\n        if (errors.length) {\n            return message({\n                description: errors,\n                variant: 'warning'\n            })\n        }\n        const myEvent = new CustomEvent('inputFormEvent', {\n            detail: {\n                data: valuesObject,\n                msg: stringObject\n            }\n        });\n        document.dispatchEvent(myEvent);\n    }\n\n    const [multiVal, setMultiVal] = useState([])\n    return <div className=\"flex w-full\">\n        <div className=\"max-w-[90%] min-w-96\">\n            <div className=\"min-h-8 px-6 py-4 rounded-2xl bg-[#F5F6F8] dark:bg-[#313336]\">\n                {\n                    data.value.map((item, i) => (\n                        <div key={item.id} className=\"w-full text-sm bisheng-label\">\n                            {item.required && <span className=\"text-red-500\">*</span>}\n                            {item.value}\n                            {/* <span className=\"text-status-red\">{item.required ? \" *\" : \"\"}</span> */}\n                            <div className=\"mb-2\">\n                                {(() => {\n                                    switch (item.type) {\n                                        case FormItemType.Text:\n                                            return (\n                                                <InputComponent\n                                                    type=\"textarea\"\n                                                    password={false}\n                                                    maxLength={10000}\n                                                    // value={item.value}\n                                                    onChange={(val) => handleChange(item, val)}\n                                                />\n                                            )\n                                        case FormItemType.Select:\n                                            return (\n                                                item.multiple ?\n                                                    <MultiSelect\n                                                        multiple\n                                                        className={''}\n                                                        value={multiVal[item.key] || []}\n                                                        options={\n                                                            item.options.map(el => ({\n                                                                label: el.text,\n                                                                value: el.text\n                                                            }))\n                                                        }\n                                                        placeholder={'请选择'}\n                                                        onChange={(v) => {\n                                                            setMultiVal(prev => ({ ...prev, [item.key]: v }));\n                                                            handleChange(item, v.join(','))\n                                                        }}\n                                                    >\n                                                        {/* {children?.(reload)} */}\n                                                    </MultiSelect>\n                                                    : <Select onValueChange={(val) => handleChange(item, val)}>\n                                                        <SelectTrigger>\n                                                            <SelectValue placeholder=\"\" />\n                                                        </SelectTrigger>\n                                                        <SelectContent>\n                                                            <SelectGroup>\n                                                                {item.options.map(el => (\n                                                                    <SelectItem key={el.text} value={el.text}>\n                                                                        {el.text}\n                                                                    </SelectItem>\n                                                                ))}\n                                                            </SelectGroup>\n                                                        </SelectContent>\n                                                    </Select>\n                                            )\n                                        case FormItemType.File:\n                                            return (\n                                                <InputFileComponent\n                                                    isSSO\n                                                    disabled={false}\n                                                    placeholder={t('report.fileRequired')}\n                                                    value={''}\n                                                    multiple={item.multiple}\n                                                    onChange={(name) => updataFileName(item, name)}\n                                                    // fileTypes={FileTypes[item.file_type.toUpperCase()]}\n                                                    suffixes={FileTypes[item.file_type.toUpperCase()]}\n                                                    onFileChange={(val) => handleChange(item, val)}\n                                                />\n                                            )\n                                        default:\n                                            return null\n                                    }\n                                })()}\n                            </div>\n                        </div>\n                    ))\n                }\n                <Button size=\"sm\" className=\"w-full\" onClick={submit}>{t('report.start')}</Button>\n            </div>\n        </div>\n    </div>\n};\n\nexport default InputForm\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/MessageBs.tsx",
    "content": "import MessageButtons from \"@/components/bs-comp/chatComponent/MessageButtons\";\nimport SourceEntry from \"@/components/bs-comp/chatComponent/SourceEntry\";\nimport { ToastIcon } from \"@/components/bs-icons\";\nimport { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport { WorkflowMessage } from \"@/types/flow\";\nimport { formatStrTime } from \"@/util/utils\";\nimport { copyText } from \"@/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport ChatFile from \"./ChatFileFile\";\nimport MessageMarkDown from \"./MessageMarkDown\";\nimport { useMessageStore } from \"./messageStore\";\nimport { useTranslation } from \"react-i18next\";\n\n\nconst ReasoningLog = ({ loading, msg = '' }) => {\n    const [open, setOpen] = useState(true)\n    // console.log('msg :>> ', msg);\n    const { t } = useTranslation('flow')\n\n    if (!msg) return null\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm border\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\" onClick={() => setOpen(!open)}>\n                {loading ?\n                    <div className=\"flex items-center font-bold gap-2 text-sm\">\n                        <LoadIcon className=\"text-primary duration-300\" />\n                        <span>{t('thinking')}</span>\n                    </div>\n                    :\n                    <div className=\"flex items-center font-bold gap-2 text-sm\">\n                        <ToastIcon type=\"success\" />\n                        <span>{t('thoughtCompleted')}</span>\n                    </div>\n                }\n                <ChevronDown className={open && 'rotate-180'} />\n            </div>\n            <div className={cname('bg-[#F5F6F8] dark:bg-[#313336] px-4 py-2 overflow-hidden text-sm ', open ? 'h-auto' : 'h-0 p-0')}>\n                {msg.split('\\n').map((line, index) => (\n                    <p className=\"text-md mb-1 text-muted-foreground\" key={index}>{line}</p>\n                ))}\n            </div>\n        </div>\n    </div>\n}\n\n\nexport default function MessageBs({ debug, mark = false, logo, data, onUnlike = () => { }, onSource, version, onMarkClick }:\n    { debug?: boolean, ogo: string, data: WorkflowMessage, onUnlike?: any, onSource?: any }) {\n    const { t } = useTranslation('flow')\n\n    const message = useMemo(() => {\n        return typeof data.message === 'string' ? data.message : data.message.msg\n    }, [data.message])\n\n    const messageRef = useRef<HTMLDivElement>(null)\n    const handleCopyMessage = () => {\n        // api data.id\n        copyText(messageRef.current)\n    }\n    const chatId = useMessageStore(state => state.chatId)\n    return <div className=\"bisheng-message flex w-full\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <ReasoningLog loading={!data.end && data.reasoning_log} msg={data.reasoning_log} />\n            {!(data.reasoning_log && !message && !data.files.length) && <>\n                <div className=\"flex justify-between items-center mb-1\">\n                    {data.sender ? <p className=\"text-gray-600 text-xs\">{data.sender}</p> : <p />}\n                    <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                        <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, t('short'))}</span>\n                    </div>\n                </div>\n                <div className=\"min-h-8 px-6 py-4 rounded-2xl bg-[#F5F6F8] dark:bg-[#313336]\">\n                    <div className=\"flex gap-2\">\n                        {logo}\n                        {message || data.files.length ?\n                            <div ref={messageRef} className=\"text-sm max-w-[calc(100%-24px)] overflow-x-auto\">\n                                {message && <MessageMarkDown message={message} />}\n                                {data.files.length > 0 && data.files.map(file => <ChatFile key={file.path} fileName={file.name} filePath={file.path} />)}\n                                {/* @user */}\n                                {data.receiver && <p className=\"text-blue-500 text-sm\">@ {data.receiver.user_name}</p>}\n                                {/* 光标 */}\n                                {/* {data.message.toString() && !data.end && <div className=\"animate-cursor absolute w-2 h-5 ml-1 bg-gray-600\" style={{ left: cursor.x, top: cursor.y }}></div>} */}\n                            </div>\n                            : <div>{\n                                !data.end && <LoadingIcon className=\"size-6 text-primary\" />\n                            }</div>\n                        }\n                    </div>\n                </div>\n            </>}\n            {/* 附加信息 */}\n            {\n                data.end && <div className=\"flex justify-between mt-2\">\n                    <SourceEntry\n                        extra={data.extra || {}}\n                        end={data.end}\n                        source={data.source}\n                        className=\"pl-4\"\n                        onSource={() => onSource?.({\n                            chatId,\n                            messageId: data.id || data.message_id,\n                            message,\n                        })}\n                    />\n                    {!debug && <MessageButtons\n                        mark={mark}\n                        version={version}\n                        id={data.id || data.message_id}\n                        data={data.liked}\n                        onUnlike={onUnlike}\n                        onCopy={handleCopyMessage}\n                        onMarkClick={onMarkClick}\n                        text={data.message.msg || data.message}\n                    ></MessageButtons>}\n                </div>\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/MessageBsChoose.tsx",
    "content": "import { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { WordIcon } from \"@/components/bs-icons\";\nimport { AvatarIcon } from \"@/components/bs-icons/avatar\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { WorkflowMessage } from \"@/types/flow\";\nimport { downloadFile } from \"@/util/utils\";\nimport { CheckCircle } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport MessageMarkDown from \"./MessageMarkDown\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport { AudioPlayComponent } from \"@/components/voiceFunction/audioPlayButton\";\n\nexport default function MessageBsChoose({ type = 'choose', logo, data }: { type?: string, logo: string, data: WorkflowMessage }) {\n    const { t } = useTranslation()\n    const { data: linsightConfig } = useLinsightConfig();\n\n    const [selected, setSelected] = useState(data.message.hisValue || '')\n    const handleSelect = (obj) => {\n        if (selected) return\n        const myEvent = new CustomEvent('outputMsgEvent', {\n            detail: {\n                nodeId: data.message.node_id,\n                message: data,\n                data: {\n                    [data.message.key]: obj.id\n                }\n            }\n        });\n        document.dispatchEvent(myEvent);\n        setSelected(obj.id)\n    }\n\n    // download file\n    const handleDownloadFile = (file) => {\n        downloadFile(checkSassUrl(file.path), file.name)\n    }\n\n    // input\n    const textRef = useRef(null)\n    const [inputSended, setInputSended] = useState(!!data.message.hisValue || false)\n    const handleSend = () => {\n        const val = textRef.current.value\n        if (!val.trim()) return\n        setInputSended(true)\n        const myEvent = new CustomEvent('outputMsgEvent', {\n            detail: {\n                nodeId: data.message.node_id,\n                message: data,\n                data: {\n                    [data.message.key]: val\n                }\n            }\n        });\n        document.dispatchEvent(myEvent);\n    }\n\n    const files = useMemo(() => {\n        return typeof data.files === 'string' ? [] : data.files\n    }, [data.files])\n\n    // hack\n    if (typeof data.files === 'string') return null\n\n    return <div className=\"flex w-full\">\n        <div className=\"w-fit group max-w-[90%]\">\n            <div className=\"flex justify-between items-center mb-1\">\n                {data.sender ? <p className=\"text-gray-600 text-xs\">{data.sender}</p> : <p />}\n                <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    {/* <span className=\"text-slate-400 text-sm\">{formatStrTime(data.update_time, 'MM 月 dd 日 HH:mm')}</span> */}\n                </div>\n            </div>\n            <div className=\"min-h-8 px-6 py-4 rounded-2xl bg-[#F5F6F8] dark:bg-[#313336]\">\n                <div className=\"flex gap-2\">\n                    {logo}\n                    <div className=\"text-sm max-w-[calc(100%-24px)]\">\n                        {/* message */}\n                        <div>{<MessageMarkDown message={data.message.msg} />}</div>\n                        {/* files */}\n                        <div>\n                            {files.map((file) => <div\n                                className=\"flex gap-2 w-52 border border-gray-200 shadow-sm bg-gray-50 dark:bg-gray-600 px-4 py-2 rounded-sm cursor-pointer\"\n                                onClick={() => handleDownloadFile(file)}\n                            >\n                                <div className=\"flex items-center\"><WordIcon /></div>\n                                <div>\n                                    <h1 className=\"text-sm font-bold\">{file.name}</h1>\n                                    <p className=\"text-xs text-gray-400 mt-1\">{t('chat.clickDownload')}</p>\n                                </div>\n                            </div>)\n                            }\n                        </div>\n                        {/* select or input */}\n                        <div className=\"mt-2\">\n                            {type === 'input' ?\n                                <div>\n                                    <Textarea\n                                        className=\"w-full\"\n                                        ref={textRef}\n                                        disabled={inputSended}\n                                        defaultValue={data.message.input_msg || data.message.hisValue}\n                                    />\n                                    <div className=\"flex justify-end mt-2\">\n                                        <Button\n                                            className=\"h-8\"\n                                            disabled={inputSended}\n                                            onClick={handleSend}\n                                        >{inputSended ? t('chat.confirmed') : t('chat.confirm')}</Button>\n                                    </div>\n                                </div>\n                                : <div>\n                                    {data.message.options.map(opt => <div\n                                        key={opt.id}\n                                        className=\"min-w-56 bg-[#fff] dark:bg-background rounded-xl p-4 mt-2 hover:bg-gray-200 cursor-pointer flex justify-between items-center break-all\"\n                                        onClick={() => handleSelect(opt)}\n                                    >\n                                        {opt.label}\n                                        {selected === opt.id && <CheckCircle size={20} className=\"min-w-5\" />}\n                                    </div>)\n                                    }\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                {linsightConfig?.tts_model?.id && (\n                    <AudioPlayComponent\n                        messageId={String(data.message.node_id)}\n                        msg={data.message.msg}\n                    />\n                )}\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/MessageMarkDown.tsx",
    "content": "import { AudioPlayComponent } from \"@/components/voiceFunction/audioPlayButton\";\nimport { CodeBlock } from \"@/modals/formModal/chatMessage/codeBlock\";\nimport { useLinsightConfig } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport Echarts from \"@/workspace/markdown/Echarts\";\nimport MermaidBlock from \"@/workspace/markdown/Mermaid\";\nimport React, { useMemo } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport rehypeMathjax from \"rehype-mathjax\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\n\nconst MessageMarkDown = React.memo(function MessageMarkDown({ message, version, chat, flowType }) {\n\n    const { data: linsightConfig } = useLinsightConfig();\n    function filterMermaidBlocks(input) {\n        const closedMermaidPattern = /```mermaid[\\s\\S]*?```/g;\n        const openMermaidPattern = /```mermaid[\\s\\S]*$/g;\n\n        // 先删除未闭合的\n        if (!closedMermaidPattern.test(input)) {\n            input = input.replace(openMermaidPattern, \"\");\n        }\n\n        return input;\n    }\n\n    const processedMessage = useMemo(() => {\n        return filterMermaidBlocks(message)\n            // .replaceAll(/(\\n\\s{4,})/g, '\\n   ') // 禁止4空格转代码\n            .replaceAll(/(^\\n\\s{4,})/g, '\\n   ') // ^只处理开头情况，否则影响代码无法缩进\n            .replace(/(?<![\\n\\|])\\n(?!\\n)/g, '\\n\\n') // 单个换行符 处理不换行情况，例如：`Hello|There\\nFriend\n            .replaceAll('(bisheng/', '(/bisheng/') // TODO 临时处理方案,以后需要改为markdown插件方式处理\n            .replace(/\\\\[\\[\\]]/g, '$$$$') // 处理`\\[...\\]`包裹的公式（四个$会被解释为两个$$）\n    }, [message]);\n\n    return (\n        <>\n            <div className=\"bs-mkdown inline-block break-all max-w-full text-sm text-text-answer\">\n                <ReactMarkdown\n                    remarkPlugins={[remarkGfm, remarkMath]}\n                    rehypePlugins={[rehypeMathjax]}\n                    components={{\n                        a: ({ node, href, children }) => {\n                            return <a href={href} target=\"_blank\" rel=\"noreferrer\" className=\"text-primary underline hover:text-primary/80\">{children}</a>\n                        },\n                        code: ({ node, className, children }) => {\n                            const match = /language-(\\w+)/.exec(className ?? '');\n                            const lang = match && match[1];\n\n                            if (lang === 'echarts') return <Echarts option={children} />\n                            if (lang === 'mermaid') return <MermaidBlock>{String(children).trim()}</MermaidBlock>\n\n                            return <CodeBlock\n                                key={Math.random()}\n                                language={lang}\n                                value={String(children).replace(/\\n$/, \"\")}\n                            />\n                        },\n                    }}\n                >\n                    {processedMessage}\n                </ReactMarkdown>\n                {(flowType === 1) && <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    {linsightConfig?.tts_model?.id && (\n                        <AudioPlayComponent\n                            messageId={String()}\n                            msg={processedMessage}\n                        />\n                    )}\n                </div>}\n            </div>\n        </>\n\n    );\n});\n\n\nexport default MessageMarkDown;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/MessageNodeRun.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons\";\n\nexport default function MessageNodeRun({ data }) {\n    // const { t } = useTranslation('flow')\n\n    return <div className=\"py-1\">\n        <div className=\"rounded-sm border\">\n            <div className=\"flex justify-between items-center px-4 py-2 cursor-pointer\">\n                <div className=\"flex items-center font-bold gap-2 text-sm\">\n                    {\n                        <LoadIcon className=\"text-primary duration-300\" />\n                    }\n                    <span>{data.message.name}</span>\n                </div>\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/MessageUser.tsx",
    "content": "import { FlagIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { ChatMessageType } from \"@/types/chat\";\nimport { formatStrTime } from \"@/util/utils\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function MessageUser({ mark = false, useName = '', data, onMarkClick }: { data: ChatMessageType }) {\n    const { t } = useTranslation()\n\n    return <div className=\"flex justify-end w-full\">\n        <div className=\"w-fit group min-h-8 max-w-[90%]\">\n            <div className=\"flex justify-end items-center mb-2 gap-2\">\n                <div className={`text-right group-hover:opacity-100 opacity-0`}>\n                    <span className=\"text-slate-400 text-sm\">{formatStrTime(data.create_time, 'MM 月 dd 日 HH:mm')}</span>\n                </div>\n                {useName && <p className=\"text-gray-600 text-sm\">{useName}</p>}\n            </div>\n            <div className=\"rounded-2xl px-6 py-4 bg-[#EEF2FF] dark:bg-[#333A48]\">\n                <div className=\"flex gap-2 \">\n                    <div className=\"text-[#0D1638] dark:text-[#CFD5E8] text-sm break-all whitespace-break-spaces\">{typeof data.message === 'string' ? data.message : data.message[data.chatKey]}</div>\n                    <div className=\"w-6 h-6 min-w-6\"><img src={__APP_ENV__.BASE_URL + '/assets/user.png'} alt=\"\" /></div>\n                </div>\n            </div>\n            {/* 附加信息 */}\n            {\n                // 数组类型的 data通常是文件上传消息，不展示附加按钮\n                mark ? <div className=\"flex justify-between mt-2\">\n                    <span></span>\n                    <div className=\"flex gap-2 text-gray-400 cursor-pointer self-end\">\n                        {'question' === data.category && <Button className=\"h-6 text-xs group-hover:opacity-100 opacity-0\" onClick={onMarkClick}>\n                            <FlagIcon width={12} height={12} className=\"cursor-pointer\" />\n                            <span>{t('addSimilarQuestion')}</span>\n                        </Button>}\n                    </div>\n                </div> : (!Array.isArray(data.message) && <div className=\"flex justify-between mt-2\">\n                    <span></span>\n                    <div className=\"flex gap-0.5 text-gray-400 cursor-pointer self-end\">\n                        {/* {!running && <SquarePen className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(false)} />}\n                        {!running && <RefreshCw className=\"size-6 p-1 hover:text-gray-500\" onClick={() => handleResend(true)} />}\n                        {appConfig.dialogQuickSearch && <Search className=\"size-6 p-1 hover:text-gray-500\" onClick={handleSearch} />} */}\n                    </div>\n                </div>)\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/messageStore.ts",
    "content": "import { message } from '@/components/bs-ui/toast/use-toast';\nimport { generateUUID } from '@/components/bs-ui/utils';\nimport { getChatHistory } from '@/controllers/API';\nimport { ChatMessageType } from '@/types/chat';\nimport { WorkflowMessage } from '@/types/flow';\nimport { formatDate } from '@/util/utils';\nimport i18next from 'i18next';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport { create } from 'zustand';\n\n/**\n * 会话消息管理\n */\n\ntype State = {\n    running: boolean,\n    /**\n     * 会话 ID\n     * 变更会触发 ws建立，解锁滚动\n     */\n    chatId: string,\n    /** 没有更多历史纪录 */\n    historyEnd: boolean,\n    messages: WorkflowMessage[]\n    /** 历史回话独立存储 */\n    hisMessages: ChatMessageType[]\n    /**\n     * 控制引导问题的显示状态\n     */\n    showGuideQuestion: boolean\n    inputForm: null | any\n}\n\ntype Actions = {\n    loadHistoryMsg: (flowid: string, chatId: string, data: { appendHistory: boolean, lastMsg: string }) => Promise<void>;\n    loadMoreHistoryMsg: (flowid: string, appendHistory: boolean) => Promise<void>;\n    destory: () => void;\n    createSendMsg: (msg: string) => void;\n    createWsMsg: (data: any) => void;\n    streamWsMsg: (data: any) => void;\n    updateCurrentMessage: (data: any) => void;\n    changeChatId: (chatId: string) => void;\n    startNewRound: (str: string) => void;\n    insetSeparator: (text: string) => void;\n    insetSystemMsg: (text: string) => void;\n    insetBsMsg: (text: string) => void;\n    setShowGuideQuestion: (text: boolean) => void;\n    clearMsgs: () => void;\n    setInputForm: (inputForm: any) => void;\n}\n\n\nconst handleHistoryMsg = (data: any[]): ChatMessageType[] => {\n    const correctedJsonString = (str: string) => str\n        // .replace(/\\\\([\\s\\S])|(`)/g, '\\\\\\\\$1$2') // 转义反斜线和反引号\n        .replace(/\\n/g, '\\\\n')                  // 转义换行符\n        .replace(/\\r/g, '\\\\r')                  // 转义回车符\n        .replace(/\\t/g, '\\\\t')                  // 转义制表符\n        .replace(/'/g, '\"');                    // 将单引号替换为双引号\n\n    return data.filter(item =>\n        [\"question\", \"output_with_input_msg\", \"output_with_choose_msg\", \"stream_msg\", \"output_msg\", \"guide_question\", \"guide_word\", \"node_run\", \"answer\"].includes(item.category)\n        && (item.message || item.reasoning_log)).map(item => {\n            let { message, files, is_bot, intermediate_steps, category, ...other } = item\n            try {\n                message = message && message[0] === '{' ? JSON.parse(message) : message || ''\n            } catch (e) {\n                // 未考虑的情况暂不处理\n                console.error('消息 to JSON error :>> ', e);\n            }\n            // hack\n            let chatKey = undefined\n            if (typeof message !== 'string') {\n                // 优先 input\n                if ('input' in message) {\n                    chatKey = 'input'\n                } else {\n                    chatKey = Object.keys(message)[0]\n                }\n            }\n\n            return {\n                ...other,\n                category,\n                chatKey,\n                end: true,\n                files: files ? JSON.parse(files) : [],\n                isSend: !is_bot,\n                message,\n                thought: intermediate_steps,\n                reasoning_log: message.reasoning_content || '',\n                noAccess: true\n            }\n        })\n}\n\nlet currentChatId = ''\n\nexport const useMessageStore = create<State & Actions>((set, get) => ({\n    chatId: '',\n    messages: [],\n    inputForm: null,\n    running: false,\n    hisMessages: [],\n    historyEnd: false,\n    showGuideQuestion: false,\n    changeChatId(chatId) {\n        set((state) => ({ chatId }))\n    },\n    // start\n    createWsMsg(data) {\n        console.log('change createWsMsg');\n        set((state) => {\n            let newChat = cloneDeep(state.messages);\n            const { category, flow_id, chat_id, message_id, files, is_bot, extra, liked, message, receiver, type, source, user_id, reasoning_log } = data\n            // 删除与历史消息中message_id相同的消息,则删除\n            const messageId = message_id || (category === \"guide_word\" ? generateUUID(4) : '') // 后端没给,临时生成一个\n            newChat = newChat.filter((item => !(item.message_id === message_id && item.his)))\n            newChat.push({\n                category, flow_id, chat_id,\n                message_id: messageId,\n                files, is_bot,\n                message, receiver, source, user_id,\n                liked: !!liked,\n                end: type === 'over',\n                sender: '',\n                node_id: message?.node_id || '',\n                create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss'),\n                extra,\n                reasoning_log\n            })\n            return { messages: newChat }\n        })\n    },\n    // stream\n    streamWsMsg(data) {\n        let messages = cloneDeep(get().messages);\n        const { unique_id, output_key, reasoning_content } = data.message;\n        const currentMessageIndex = messages.findIndex(msg => msg.message_id === (unique_id + output_key))\n        const currentMsg = messages[currentMessageIndex]\n        if (!currentMsg) return get().createWsMsg(\n            { ...data, message: data.message.msg, reasoning_log: reasoning_content || '', message_id: unique_id + output_key }\n        )\n\n        // append\n        const newCurrentMessage = {\n            ...currentMsg,\n            message_id: data.type === 'end' ? data.message_id : currentMsg.message_id,\n            message: data.type === 'end' ? data.message.msg : currentMsg.message + data.message.msg,\n            reasoning_log: data.type === 'end' ? currentMsg.reasoning_log : currentMsg.reasoning_log + (reasoning_content || ''),\n            create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss'),\n            source: data.source,\n            end: data.type === 'end'\n        }\n\n        messages[currentMessageIndex] = newCurrentMessage\n        set((state) => ({ messages }))\n    },\n    createSendMsg(msg) {\n        set((state) => ({\n            messages:\n                [...state.messages, {\n                    ...bsMsgItem,\n                    category: 'question',\n                    message_id: generateUUID(8),\n                    message: msg,\n                    create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n                }]\n        }))\n    },\n    insetSeparator(text) {\n        const messages = get().messages\n        // 避免重复提示会话结束\n        if (messages[messages.length - 1]?.category === 'separator') return\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                category: 'separator',\n                message_id: generateUUID(8),\n                message: text,\n                create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n            }]\n        }))\n    },\n    insetNodeRun(data) {\n        if (['output', 'condition'].includes(data.message?.node_id.split('_')[0])) return\n        set((state) => {\n            let newChat = cloneDeep(state.messages);\n            const { category, flow_id, chat_id, files, is_bot, liked, message, receiver, type, source, user_id } = data\n            if (type === 'end') {\n                return { messages: newChat.filter(msg => msg.message_id !== message.unique_id) }\n            }\n            newChat.push({\n                category, flow_id, chat_id, message_id: message.unique_id, files, is_bot,\n                message, receiver, source, user_id,\n                liked: !!liked,\n                end: false,\n                sender: '',\n                node_id: message?.node_id || '',\n                create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n                // extra,\n            })\n            return { messages: newChat }\n        })\n    },\n    async loadHistoryMsg(flowid, chatId, { lastMsg }) {\n        const res = await getChatHistory(flowid, chatId, 30, 0)\n        const msgs = handleHistoryMsg(res)\n        const hisMessages = msgs.map(el => ({ ...el, his: true })).reverse()\n        currentChatId = chatId\n        if (msgs.length && lastMsg) {\n            hisMessages.push({\n                ...bsMsgItem,\n                category: 'separator',\n                message_id: generateUUID(8),\n                message: i18next.t('chat.chatEndMessage', { ns: 'chat' }),\n                create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n            })\n        }\n        set({\n            historyEnd: false,\n            messages: hisMessages,\n            hisMessages\n        })\n        return msgs\n    },\n    async loadMoreHistoryMsg(flowid, appendHistory) {\n        if (get().running) return // 会话进行中禁止加载more历史\n        if (get().historyEnd) return // 没有更多历史纪录\n        const chatId = get().chatId\n        const prevMsgs = get().messages\n        // 最后一条消息id不存在，忽略 loadmore\n        if (!prevMsgs[0]?.id) return\n        const res = await getChatHistory(flowid, chatId, 10, prevMsgs[0]?.id || 0)\n        // 过滤非同一会话消息\n        if (res[0]?.chat_id !== currentChatId) {\n            return console.warn('loadMoreHistoryMsg chatId not match, ignore')\n        }\n        const msgs = handleHistoryMsg(res)\n        if (msgs.length) {\n            set({ [appendHistory ? 'messages' : 'hisMessages']: [...msgs.reverse(), ...prevMsgs] })\n        } else {\n            set({ historyEnd: true })\n        }\n    },\n    overWsMsg(data) {\n        // 删除所有未结束消息\n        if (data.type === 'end_cover' && data.message) {\n            console.log('触发安全审计,删除所有未结束消息 :>> ');\n            data.category = \"stream_msg\"\n            data.type = 'over'\n            data.message_id = generateUUID(8)\n            get().createWsMsg(data)\n            setTimeout(() => {\n                set((state) => ({ messages: state.messages.filter(msg => msg.end) }))\n            }, 0);\n        }\n    },\n    // stream end old\n    updateCurrentMessage(data) {\n        const messages = get().messages\n\n        console.log('change updateCurrentMessage');\n        const currentMessageIndex = messages.findIndex(msg => msg.message_id === data.message_id)\n        const currentMessage = messages[currentMessageIndex]\n\n        const newCurrentMessage = {\n            ...currentMessage,\n            ...data,\n            message: currentMessage.message + data.message,\n            end: ['end', 'over'].includes(data.type),\n            create_time: formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss')\n        }\n\n        messages[currentMessageIndex] = newCurrentMessage\n        set((state) => ({ messages: [...messages] }))\n    },\n    setShowGuideQuestion(bln: boolean) {\n        set({ showGuideQuestion: bln })\n    },\n    clearMsgs() {\n        setTimeout(() => {\n            set({ hisMessages: [], messages: [], historyEnd: true })\n        }, 0);\n    },\n    destory() {\n        set({\n            chatId: '',\n            messages: [],\n            inputForm: null\n        })\n    },\n    setInputForm(form) {\n        set({ inputForm: form })\n    },\n\n    // // stream end\n    // updateCurrentMessage(wsdata, cover = false) {\n    //     // console.log( wsdata.chat_id, get().chatId);\n    //     // if (wsdata.end) {\n    //     //     debugger\n    //     // }\n    //     console.log('change updateCurrentMessage');\n    //     const messages = get().messages\n    //     const isRunLog = runLogsTypes.includes(wsdata.category);\n    //     // run log类型存在嵌套情况，使用 extra 匹配 currentMessage; 否则取最近\n    //     let currentMessageIndex = 0\n    //     for (let i = messages.length - 1; i >= 0; i--) {\n    //         if (isRunLog && messages[i].extra === wsdata.extra) {\n    //             currentMessageIndex = i;\n    //             break;\n    //         } else if (!isRunLog && !runLogsTypes.includes(messages[i].category)) {\n    //             currentMessageIndex = i;\n    //             break;\n    //         }\n    //     }\n    //     const currentMessage = messages[currentMessageIndex]\n\n    //     const newCurrentMessage = {\n    //         ...currentMessage,\n    //         ...wsdata,\n    //         id: isRunLog ? wsdata.extra : wsdata.messageId, // 每条消息必唯一\n    //         message: isRunLog ? JSON.parse(wsdata.message) : currentMessage.message + wsdata.message,\n    //         thought: currentMessage.thought + (wsdata.thought ? `${wsdata.thought}\\n` : ''),\n    //         files: wsdata.files || [],\n    //         category: wsdata.category || '',\n    //         source: wsdata.source\n    //     }\n    //     // 无id补上（如文件解析完成消息，后端无返回messageid）\n    //     if (!newCurrentMessage.id) {\n    //         newCurrentMessage.id = Math.random() * 1000000\n    //         // console.log('msg:', newCurrentMessage);\n    //     }\n\n    //     messages[currentMessageIndex] = newCurrentMessage\n    //     // 会话特殊处理，兼容后端的缺陷\n    //     if (!isRunLog) {\n    //         // start - end 之间没有内容删除load\n    //         if (newCurrentMessage.end && !(newCurrentMessage.files.length || newCurrentMessage.thought || newCurrentMessage.message)) {\n    //             messages.pop()\n    //         }\n    //         // 无 messageid 删除\n    //         // if (newCurrentMessage.end && !newCurrentMessage.id) {\n    //         //     messages.pop()\n    //         // }\n    //         // 删除重复消息\n    //         const prevMessage = messages[currentMessageIndex - 1];\n    //         if ((prevMessage\n    //             && prevMessage.message === newCurrentMessage.message\n    //             && prevMessage.thought === newCurrentMessage.thought)\n    //             || cover) {\n    //             const removedMsg = messages.pop()\n    //             // 使用最后一条的信息作为准确信息\n    //             Object.keys(prevMessage).forEach((key) => {\n    //                 prevMessage[key] = removedMsg[key]\n    //             })\n    //         }\n    //     }\n    //     set((state) => ({ messages: [...messages] }))\n    // },\n    startNewRound(str) {\n        get().insetSeparator(str)\n        set((state) => ({ showGuideQuestion: true }))\n    },\n    insetSystemMsg(text) {\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                id: Math.random() * 1000000,\n                category: 'guide',\n                thought: text,\n            }]\n        }))\n    },\n    insetBsMsg(text) {\n        set((state) => ({\n            messages: [...state.messages, {\n                ...bsMsgItem,\n                id: 0,\n                category: 'guide',\n                thought: '',\n                message: text\n            }]\n        }))\n    }\n}))\n\n\n\nconst bsMsgItem = {\n    flow_id: '',\n    chat_id: '',\n    files: [],\n    is_bot: false,\n    receiver: '',\n    source: 0,\n    user_id: 0,\n    end: true,\n    sender: ''\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowChat/useFileDropAndPaste.ts",
    "content": "import { useState, useRef, useEffect, useCallback } from 'react';\n\nexport const useFileDropAndPaste = ({ enabled, onFilesReceived }) => {\n    const [isDragging, setIsDragging] = useState(false);\n    const dragCounter = useRef(0);\n\n    // 1.  (full drag)\n    useEffect(() => {\n        if (!enabled) return;\n\n        const handleDragEnter = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            if (e.dataTransfer.types.includes(\"application/my-app-internal\")) {// 防止触发拖拽上传\n                return;\n            }\n            dragCounter.current += 1;\n            // vailte file type\n            if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\n                setIsDragging(true);\n            }\n        };\n\n        const handleDragLeave = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            dragCounter.current -= 1;\n            if (dragCounter.current === 0) {\n                setIsDragging(false);\n            }\n        };\n\n        const handleDragOver = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n        };\n\n        const handleDrop = (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            setIsDragging(false);\n            dragCounter.current = 0;\n\n            if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n                onFilesReceived(e.dataTransfer.files);\n                e.dataTransfer.clearData();\n            }\n        };\n\n        window.addEventListener('dragenter', handleDragEnter);\n        window.addEventListener('dragleave', handleDragLeave);\n        window.addEventListener('dragover', handleDragOver);\n        window.addEventListener('drop', handleDrop);\n\n        return () => {\n            window.removeEventListener('dragenter', handleDragEnter);\n            window.removeEventListener('dragleave', handleDragLeave);\n            window.removeEventListener('dragover', handleDragOver);\n            window.removeEventListener('drop', handleDrop);\n        };\n    }, [enabled, onFilesReceived]);\n\n    // 2. pasete\n    const handlePaste = useCallback((e) => {\n        if (!enabled) return;\n\n        const items = e.clipboardData?.items;\n        const files = [];\n        if (items) {\n            for (let i = 0; i < items.length; i++) {\n                if (items[i].kind === 'file') {\n                    const file = items[i].getAsFile();\n                    if (file) files.push(file);\n                }\n            }\n        }\n\n        if (files.length > 0) {\n            e.preventDefault(); // Prevent default paste behavior (to avoid pasting file names into the input box)\n            onFilesReceived(files);\n        }\n    }, [enabled, onFilesReceived]);\n\n    return {\n        isDragging,\n        handlePaste\n    };\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowEdge.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Card, CardContent } from \"@/components/bs-ui/card\";\nimport { BaseEdge, EdgeLabelRenderer, getBezierPath, Position } from \"@xyflow/react\";\nimport { Plus } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport Sidebar from \"./Sidebar\";\n\nfunction getUpperArcBezierPath(sourceX, sourceY, targetX, targetY) {\n    const dx = Math.abs(targetX - sourceX);\n    const dy = Math.abs(targetY - sourceY);\n\n    // 控制点的偏移量\n    const offsetX = dx / 2.8; // 水平控制点偏移\n    const offsetY = Math.max(dy, 180); // 垂直控制点偏移，让曲线更弯曲\n\n    // 控制点的坐标（从上方绕弧线）\n    const controlX1 = sourceX + offsetX;\n    const controlY1 = sourceY - offsetY; // 控制点向上偏移\n    const controlX2 = targetX - offsetX;\n    const controlY2 = targetY - offsetY;\n\n    const path = `M${sourceX},${sourceY} C${controlX1},${controlY1} ${controlX2},${controlY2} ${targetX},${targetY}`;\n    const centerX =\n        0.125 * sourceX +\n        0.375 * controlX1 +\n        0.375 * controlX2 +\n        0.125 * targetX;\n    const centerY =\n        0.125 * sourceY +\n        0.375 * controlY1 +\n        0.375 * controlY2 +\n        0.125 * targetY;\n    return [path, centerX, centerY];\n}\n\nexport default function CustomEdge({\n    id,\n    sourceX,\n    sourceY,\n    targetX,\n    targetY,\n    selected,\n    onOptionSelect,\n    onButtonClick,\n    isDropdownOpen,\n}) {\n\n    const [edgePath, labelX, labelY] = useMemo(() => {\n        return targetX > sourceX ? getBezierPath({\n            sourceX,\n            sourceY,\n            sourcePosition: Position.Right,\n            targetX,\n            targetY,\n            targetPosition: Position.Left,\n            curvature: 0.4,\n        }) : getUpperArcBezierPath(sourceX, sourceY, targetX, targetY)\n\n    }, [sourceX, sourceY, targetX, targetY])\n\n    const handleOptionClick = (flownodedata) => {\n        onOptionSelect({\n            node: flownodedata,\n            edgeId: id,\n            position: { x: labelX, y: labelY }\n        });\n    };\n\n    return (\n        <>\n            {/* arrow */}\n            <svg>\n                <defs>\n                    <marker\n                        id=\"arrow\"\n                        viewBox=\"0 0 10 10\"\n                        refX=\"10\"\n                        refY=\"5\"\n                        markerWidth=\"6\"\n                        markerHeight=\"6\"\n                        orient=\"auto-start-reverse\"\n                    >\n                        <path d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#024de3\" />\n                    </marker>\n                </defs>\n            </svg>\n            {/* 渲染默认的连线 */}\n            <BaseEdge\n                id={id}\n                path={edgePath}\n                style={{ stroke: '#024de3', strokeWidth: selected ? 2 : 1, strokeDasharray: selected && 0 }}\n                markerEnd=\"url(#arrow)\"\n            />\n            {/* 在连线中间添加一个加号按钮 */}\n            {selected && <EdgeLabelRenderer>\n                <div\n                    className=\"absolute\"\n                    style={{\n                        transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,\n                        zIndex: 1000,\n                    }}\n                >\n                    <Button\n                        size=\"icon\"\n                        className=\"rounded-full w-5 h-5 pointer-events-auto\"\n                        onClick={() => onButtonClick(id)}\n                    >\n                        <Plus size={18} className=\"text-[#fff]\" />\n                    </Button>\n                    {isDropdownOpen && (\n                        <Card\n                            className=\"absolute top-8 translate-x-[-50%] bg-transparent hover:shadow-none hover:border-transparent\"\n                            style={{ zIndex: 1001 }}\n                        >\n                            <CardContent className=\"min-w-56 pointer-events-auto px-0\">\n                                <Sidebar\n                                    dropdown\n                                    disabledNodes={['end']}\n                                    onClick={(flownodedata) => handleOptionClick(flownodedata)}\n                                ></Sidebar>\n                            </CardContent>\n                        </Card>\n                    )}\n                </div>\n            </EdgeLabelRenderer>\n            }\n        </>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/EditText.tsx",
    "content": "import { Input, Textarea } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function EditText({ type = 'input', reDefaultValue = false, children, disable = false, defaultValue, maxLength = 0, className = '', onChange }) {\n    const [edit, setEdit] = useState(false)\n    const [value, setValue] = useState(defaultValue)\n    const { t } = useTranslation('flow')\n\n    const { message } = useToast()\n\n    const handleChange = (e) => {\n        const nval = e.target.value\n        setValue(nval)\n    }\n\n    const handleBlur = () => {\n        if (maxLength && value.length > maxLength) {\n            return message({\n                variant: 'warning',\n                description: t('cannotExceedMaxLength', { maxLength })\n            })\n        }\n        setEdit(false)\n        if (reDefaultValue && !value.trim()) {\n            // Restore default if empty\n            setValue(defaultValue)\n            return onChange(defaultValue)\n        }\n        onChange(value)\n    }\n\n    if (disable) return children\n\n    return <div className=\"cursor-text\">\n        {edit ?\n            type === 'input' ? <Input\n                type=\"text\"\n                className={cname(\"h-6\", className)}\n                autoFocus={edit}\n                value={value}\n                onBlur={handleBlur}\n                onChange={handleChange}\n                onKeyDown={(e) => {\n                    if (e.key === 'Enter') {\n                        e.preventDefault();\n                        handleBlur();\n                    }\n                }}\n            /> : <Textarea\n                className={className}\n                autoFocus={edit}\n                value={value}\n                onBlur={handleBlur}\n                onChange={handleChange}\n                onKeyDown={(e) => {\n                    if (e.key === 'Enter') {\n                        e.preventDefault();\n                        handleBlur();\n                    }\n                }}\n            />\n            : <div onClick={() => setEdit(true)}>{children}</div>}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/NodeLogo.tsx",
    "content": "import { cname } from \"@/components/bs-ui/utils\";\nimport { BookOpenCheck, BookOpenTextIcon, Bot, Brain, Code2, FileDown, FileSearch, FlagTriangleRight, Hammer, Home, Keyboard, MessagesSquareIcon, Split } from \"lucide-react\";\nexport const Icons = {\n    'start': Home,\n    'input': Keyboard,\n    'output': MessagesSquareIcon,\n    'code': Code2,\n    'llm': Brain,\n    'rag': BookOpenTextIcon,\n    'qa_retriever': FileSearch,\n    'agent': Bot,\n    'end': FlagTriangleRight,\n    'condition': Split,\n    'report': FileDown,\n    'knowledge_retriever':BookOpenCheck\n}\nexport const Colors = {\n    'start': 'bg-[#FFD89A]',\n    'input': 'bg-primary',\n    'output': 'bg-primary',\n    'code': 'bg-[#FFCABA]',\n    'llm': 'bg-[#D9D7FF]',\n    'rag': 'bg-[#BBDBFF]',\n    'qa_retriever': 'bg-[#B8EEDF]',\n    'agent': 'bg-[#FFD89A]',\n    'end': 'bg-red-400',\n    'condition': 'bg-[#EDC9E9]',\n    'report': 'bg-[#9CE4F4]',\n    'knowledge_retriever':'bg-[#B8EEDF]'\n\n}\n\nexport default function NodeLogo({ type, className = '', colorStr = '' }) {\n\n    // tool special\n    if (type === 'tool') {\n        const keys = Object.keys(Colors)\n        const _colorKey = keys[parseInt(colorStr.charCodeAt(0) + '', 16) % keys.length]\n        return <div className={cname(`${Colors[_colorKey]} p-[5px] rounded-md dark:text-gray-600`, className)}><Hammer size={14} /></div>\n    }\n\n    const IconComp = Icons[type] || Hammer\n    const color = Colors[type] || 'text-gray-950'\n    return <div className={cname(`${color} dark:text-gray-600 ${['input', 'output'].includes(type) && 'text-[#fff] dark:text-[#fff]'} p-[5px] rounded-md`, className)}><IconComp size={14} /></div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/NodeTabs.tsx",
    "content": "import { Tabs, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport React, { useMemo } from 'react';\nimport { useTranslation } from \"react-i18next\";\n\nexport default function NodeTabs({ data, onChange }) {\n    const { t } = useTranslation('flow')\n    const processHelpContent = (help) => {\n        // 检查是否有 !(xxx) 格式的内容\n        const regex = /(.*?)!\\((.*?)\\)(.*)/;\n        const match = help.match(regex);\n\n        const images = {\n            \"input\": \"/assets/tabImages/input-demo.jpeg\",\n            \"form\": \"/assets/tabImages/form-demo.jpeg\"\n        }\n\n        if (match) {\n            const [, before, imgSrc, after] = match;\n            return (\n                <>\n                    {before}\n                    <img className=\"w-60 rounded-sm\" src={__APP_ENV__.BASE_URL + images[imgSrc]} alt=\"tooltip\" />\n                    {after}\n                </>\n            );\n        }\n        return help;\n    };\n\n    const processedOptions = useMemo(() => {\n        return data.tab.options.map(option => ({\n            ...option,\n            processedHelp: option.help ? processHelpContent(option.help) : null,\n        }));\n    }, [data.tab.options]);\n\n    return (\n        <Tabs defaultValue={data.tab.value} className=\"w-full px-3\" onValueChange={onChange}>\n            <TabsList className=\"w-full flex\">\n                {processedOptions.map(option => (\n                    <TabsTrigger className=\"flex-1\" key={option.key} value={option.key}>\n                        {t(`node.${data.type}.tab_${option.key}.label`)}\n                        {option.processedHelp && (\n                            <QuestionTooltip content={t(`node.${data.type}.tab_${option.key}.help`)} />\n                        )}\n                    </TabsTrigger>\n                ))}\n            </TabsList>\n        </Tabs>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/NodeToolbarComponent.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { Copy, Play, Trash2 } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function NodeToolbarComponent({ nodeId, type, onRun }) {\n    const { t } = useTranslation('flow')\n    const handleDelete = () => {\n        const event = new CustomEvent('nodeDelete', {\n            detail: nodeId\n        });\n        window.dispatchEvent(event);\n    }\n\n    const handleCopy = () => {\n        const event = new CustomEvent('nodeCopy', {\n            detail: [nodeId]\n        });\n        window.dispatchEvent(event);\n    }\n\n    if (type === 'start') return null\n\n    return <div className=\"rounded-xl shadow-sm p-1 bg-gradient-to-r from-gray-50 to-[#fff] dark:from-gray-900 dark:to-gray-950 border\">\n        {[\"agent\", \"tool\", \"llm\", \"rag\", \"qa_retriever\", \"code\"].includes(type) && (\n            <Tip content={t('runNode')} side=\"top\">\n                <Button size=\"icon\" variant=\"ghost\" className=\"size-8\" onClick={onRun}>\n                    <Play size={16} />\n                </Button>\n            </Tip>\n        )}\n        <Tip content={t('copy')} side=\"top\">\n            <Button\n                size=\"icon\"\n                variant=\"ghost\"\n                className={`size-8`}\n                onClick={handleCopy}\n            >\n                <Copy size={16} />\n            </Button>\n        </Tip>\n        <Tip content={t('delete')} side=\"top\">\n            <Button\n                size=\"icon\"\n                variant=\"ghost\"\n                className={`size-8 hover:text-red-600`}\n                onClick={handleDelete}\n            >\n                <Trash2 size={16} />\n            </Button>\n        </Tip>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/Parameter.tsx",
    "content": "import { WorkflowNode, WorkflowNodeParam } from \"@/types/flow\";\nimport CodeInputItem from \"./component/CodeInputItem\";\nimport CodeOutputItem from \"./component/CodeOutputItem\";\nimport CodePythonItem from \"./component/CodePythonItem\";\nimport ConditionItem from \"./component/ConditionItem\";\nimport FileTypeSelect from \"./component/FileTypeSelect\";\nimport HistoryNumItem from \"./component/HistoryNumItem\";\nimport ImagePromptItem from \"./component/ImagePromptItem\";\nimport InputFormItemNew from \"./component/InputFormItem\";\nimport InputFormItemOld from \"./component/InputFormItemOld\";\nimport InputItem from \"./component/InputItem\";\nimport InputListItem from \"./component/InputListItem\";\nimport KnowledgeQaSelectItem from \"./component/KnowledgeQaSelectItem\";\nimport KnowledgeSelectItem from \"./component/KnowledgeSelectItem\";\nimport MetadataFilter from \"./component/MetadataFilter\";\nimport ModelItem from \"./component/ModelItem\";\nimport OutputItem from \"./component/OutputItem\";\nimport ReportItem from \"./component/ReportItem\";\nimport RetrievalWeightSlider from \"./component/RetrievalWeightSlider\";\nimport SliderItem, { SwitchSliderItem } from \"./component/SliderItem\";\nimport SqlConfigItem from \"./component/SqlConfigItem\";\nimport SwitchItem from \"./component/SwitchItem\";\nimport TextAreaItem from \"./component/TextAreaItem\";\nimport ToolItem from \"./component/ToolItem\";\nimport VarItem from \"./component/VarItem\";\nimport VarSelectItem, { VarSelectSingleItem } from \"./component/VarSelectItem\";\nimport VarTextareaItem from \"./component/VarTextareaItem\";\nimport VarTextareaUploadItem from \"./component/VarTextareaUploadItem\";\nimport GlobalVarItem from \"./component/GlobalVarItem\";\n\nexport default function Parameter({\n    node,\n    nodeId,\n    item,\n    onOutPutChange,\n    onStatusChange,\n    onVarEvent,\n    onAddSysPrompt,\n    selectedKnowledgeIds\n}: {\n    nodeId: string;\n    node: WorkflowNode;\n    item: WorkflowNodeParam;\n    onOutPutChange: (key: string, value: any) => void;\n    onStatusChange: (key: string, obj: any) => void;\n    onVarEvent: (key: string, obj: any) => void;\n    onAddSysPrompt: (type: 'knowledge' | 'sql') => void;\n    onFouceUpdate: () => void;\n}) {\n\n    const handleOnNewValue = (newValue: any, validate?: any) => {\n        item.value = newValue;\n        if (validate) bindValidate(validate);\n    };\n\n    const bindValidate = (validate: any) => {\n        onStatusChange(item.key, { param: item, validate });\n    };\n\n    const bindVarValidate = (validate: any) => {\n        onVarEvent(item.key, { param: item, validate });\n    };\n\n    const addSysPrompt = (type: 'knowledge' | 'sql') => {\n        if (node.type === 'agent') {\n            onAddSysPrompt(type);\n        }\n    }\n\n    const i18nPrefix = `node.${node.type}.${item.key}.`\n\n    if (item.hidden) return null;\n\n    const InputFormItem = node.v == 3 ? InputFormItemNew : InputFormItemOld;\n\n    switch (item.type) {\n        case 'textarea':\n            return <TextAreaItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix} />;\n        case 'input':\n            return <InputItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix} />;\n        case 'input_list':\n            return <InputListItem node={node} data={item} preset={item.key === \"preset_question\"} onChange={handleOnNewValue} i18nPrefix={i18nPrefix} />;\n        case 'var':\n            return <VarItem node={node} data={item} i18nPrefix={i18nPrefix} />\n        case 'chat_history_num':\n            return <HistoryNumItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix} />\n        case 'global_var': return <GlobalVarItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix} />;\n        case 'form':\n            return <InputFormItem\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />\n        case 'var_textarea':\n            return <VarTextareaItem\n                node={node}\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />\n        case 'var_textarea_file':\n            return <VarTextareaUploadItem\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />\n        case 'output_form':\n            return <OutputItem\n                nodeId={nodeId}\n                node={node}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />\n        case 'bisheng_model':\n            return <ModelItem data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />\n        case 'agent_model':\n            return <ModelItem agent data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />\n        case 'slide':\n            return <SliderItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />\n        case 'slide_switch':\n            return <SwitchSliderItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />\n        case 'switch':\n            return <SwitchItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />;\n        case 'var_select':\n            return <VarSelectSingleItem\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'user_question':\n            return <VarSelectItem\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onOutPutChange={onOutPutChange}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'knowledge_select_multi':\n            return <KnowledgeSelectItem\n                nodeId={nodeId}\n                data={item}\n                onChange={(val) => {\n                    handleOnNewValue(val)\n                    addSysPrompt('knowledge')\n                }}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />;\n        case 'qa_select_multi':\n            return <KnowledgeQaSelectItem\n                nodeId={nodeId}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />;\n        case 'number':\n            return <InputItem type='number' data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />;\n        case 'char_number':\n            return <InputItem char type='number' data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />;\n        case 'code_input':\n            return <CodeInputItem nodeId={nodeId} data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'code':\n            return <CodePythonItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />;\n        case 'code_output':\n            return <CodeOutputItem nodeId={nodeId} data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'add_tool':\n            return <ToolItem data={item} onChange={handleOnNewValue} i18nPrefix={i18nPrefix}\n            />;\n        case 'condition':\n            return <ConditionItem\n                nodeId={nodeId}\n                node={node}\n                data={item}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />;\n        case 'report':\n            return <ReportItem nodeId={nodeId} data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'sql_config':\n            return <SqlConfigItem nodeId={nodeId} data={item} onChange={(val) => {\n                handleOnNewValue(val)\n                val.open && addSysPrompt('sql')\n            }} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'select_fileaccept':\n            return <FileTypeSelect\n                data={item}\n                onChange={(val) => {\n                    // group_params[0] 受input模板影响\n                    const imageFileItem = node.group_params[0].params.find(param => {\n                        if (param.key === 'dialog_image_files') return true\n                    })\n                    imageFileItem.hidden = val === 'file'\n                    handleOnNewValue(val)\n                    // onFouceUpdate()\n                }}\n                i18nPrefix={i18nPrefix}\n            />;\n        case 'image_prompt':\n            return <ImagePromptItem nodeId={nodeId} data={item} onChange={handleOnNewValue} onVarEvent={bindVarValidate} i18nPrefix={i18nPrefix}\n            />;\n        case 'search_switch':\n            return <RetrievalWeightSlider data={item} onChange={handleOnNewValue} onValidate={bindValidate} i18nPrefix={i18nPrefix}\n            />;\n        case \"metadata_filter\": return (\n            <MetadataFilter\n                data={item}\n                node={node}\n                onChange={handleOnNewValue}\n                onValidate={bindValidate}\n                selectedKnowledgeIds={selectedKnowledgeIds}\n                nodeId={nodeId}\n                onVarEvent={bindVarValidate}\n                i18nPrefix={i18nPrefix}\n            />\n        );\n        default:\n            return <div>Unsupported parameter type,{item.type}</div>;\n    }\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/ParameterGroup.tsx",
    "content": "import { WorkflowNode } from \"@/types/flow\";\nimport { useTranslation } from \"react-i18next\";\nimport Parameter from \"./Parameter\";\n\nexport default function ParameterGroup({ nodeId, node, cate, tab,\n    onOutPutChange, onAddSysPrompt, onStatusChange, onVarEvent, onFouceUpdate, selectedKnowledgeIds }\n    : {\n        nodeId: string,\n        node: WorkflowNode,\n        cate: WorkflowNode['group_params'][number],\n        tab: string,\n        onOutPutChange: (key: string, value: any) => void\n        onStatusChange: (key: string, obj: any) => void\n        onVarEvent: (key: string, obj: any) => void\n        onAddSysPrompt: (type: string) => void\n        onFouceUpdate: () => void\n    }) {\n    const { t } = useTranslation('flow')\n    if (!cate.params.filter(el => tab === el.tab || !el.tab).length) return null\n\n    return <div className=\"px-4 py-2 border-t border-[#E8EAF0] dark:border-gray-700\">\n        {cate.name && <p className='mt-2 mb-3 text-sm font-bold'>{t(`node.${node.type}.${cate.name}`)}</p>}\n        {cate.params.map(item => tab === item.tab || !item.tab ? <Parameter\n            nodeId={nodeId}\n            node={node}\n            key={item.key}\n            item={item}\n            onOutPutChange={onOutPutChange}\n            onStatusChange={onStatusChange}\n            onVarEvent={onVarEvent}\n            onFouceUpdate={onFouceUpdate}\n            onAddSysPrompt={onAddSysPrompt}\n            selectedKnowledgeIds={selectedKnowledgeIds}\n        /> : null)}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/ParameterSubGroup.tsx",
    "content": "import { WorkflowNode } from \"@/types/flow\";\nimport GroupInputFile from \"./component/GroupInputFile\";\nimport Parameter from \"./Parameter\";\nimport { useTranslation } from \"react-i18next\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\n\ntype category = WorkflowNode['group_params'][number]\ninterface Props {\n    nodeId: string,\n    node: WorkflowNode,\n    cate: category,\n    tab?: string,\n    onOutPutChange: (key: string, value: any) => void\n    onStatusChange: (key: string, obj: any) => void\n    onVarEvent: (key: string, obj: any) => void\n    onAddSysPrompt: (type: string) => void\n    onFouceUpdate: () => void\n}\n\nexport default function ParameterSubGroup({ tab, cate, ...props }: Props) {\n    const groupTab = cate.params[0].tab\n    if (groupTab && groupTab !== tab) return null\n\n    if (cate.groupKey === 'inputfile') return <GroupInputFile cate={cate} {...props} />\n\n    return <CustomGroup cate={cate} {...props} />\n};\n\n\n\nconst CustomGroup = ({ nodeId, node, cate, tab,\n    onOutPutChange, onAddSysPrompt, onStatusChange, onVarEvent, onFouceUpdate\n}: Props) => {\n    const { t } = useTranslation('flow')\n\n    const titleItem = useMemo(() => cate.params.find(item => item.groupTitle), [cate.params])\n    const [open, setOpen] = useState(titleItem.value)\n    const validatesCallbackRef = useRef({})\n    // Intercept Node Verification\n    useEffect(() => {\n        if (!validatesCallbackRef.current) return\n        Object.keys(validatesCallbackRef.current).forEach(key => {\n            if (validatesCallbackRef.current[key]) {\n                const cacheCallback = validatesCallbackRef.current[key]\n                onStatusChange(key, { param: cacheCallback.param, validate: open ? cacheCallback.validate : () => false })\n            }\n        })\n    }, [open])\n    return <div className=\"px-4 py-2 border-t\">\n        <div className=\"mt-2 mb-3 flex justify-between items-center\">\n            <div className=\"flex gap-1 items-center\">\n                <p className='text-sm font-bold'>{t(`node.${node.type}.${titleItem.key}.label`)}</p>\n                {titleItem.help && <QuestionTooltip content={t(`node.${node.type}.${titleItem.key}.help`)} ></QuestionTooltip>}\n            </div>\n            <Switch\n                className=\"\"\n                checked={open}\n                onCheckedChange={(checked) => {\n                    titleItem.value = checked\n                    setOpen(checked)\n                }}\n            />\n        </div>\n        <div className={!open && 'hidden'}>\n            {\n                cate.params.map(item => <Parameter\n                    nodeId={nodeId}\n                    node={node}\n                    key={item.key}\n                    item={item}\n                    onOutPutChange={onOutPutChange}\n                    onStatusChange={(key, obj) => {\n                        validatesCallbackRef.current[key] = obj\n                    }}\n                    onVarEvent={onVarEvent}\n                    onFouceUpdate={onFouceUpdate}\n                    onAddSysPrompt={onAddSysPrompt}\n                />)\n            }\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/RunLog.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger } from \"@/components/bs-ui/select\";\nimport { downloadFile } from \"@/util/utils\";\nimport { Check, ChevronsRightIcon, X } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../flowStore\";\nimport NodeLogo from \"./NodeLogo\";\nimport { ResultText } from \"./RunTest\";\n\nconst enum Status {\n    normal = 'normal',\n    loading = 'loading',\n    success = 'success',\n    error = 'error'\n}\n\n// 日志组件\nexport default function RunLog({ node, children }) {\n    const [state, setState] = useState<Status>(Status.normal)\n    // const setRunCache = useFlowStore(state => state.setRunCache) // 缓存TODO\n    const [data, setData] = useState<any>([])\n    const { t } = useTranslation('flow')\n    // 订阅日志事件\n    useEffect(() => {\n        const buildData = (data) => {\n            if (data) {\n\n                const keyMap = {}\n                node.group_params.forEach(group => {\n                    group.params.forEach(param => {\n                        if (param.key === 'tool_list') {\n                            // tool\n                            param.value.forEach(el => {\n                                keyMap[el.tool_key] = el.label\n                            })\n                        }\n                    });\n                });\n\n                return data.map(item => {\n                    let label = ''\n                    if (['file', 'variable'].includes(item.type)) {\n                        const key = item.key.split('.')\n                        label = key[key.length - 1]\n                        //  t(`node.${node.type}.${key[key.length - 1]}.label`)\n                    } else if (item.type === 'tool') {\n                        label = keyMap[item.key] || item.key\n                    } else if (item.key === 'output_msg') {\n                        label = item.key\n                    } else if (item.key === 'error') {\n                        label = item.key\n                    } else {\n                        label = t(`node.${node.type}.${item.key}.label`)\n                    }\n                    return {\n                        label,\n                        type: item.type,\n                        value: item.value\n                    }\n                })\n\n                // const newData = data.reduce((res, item) => {\n                //     if (['file', 'variable'].includes(item.type)) {\n                //         const key = item.key.split('.')\n                //         res.set(key[key.length - 1], { type: item.type, label: '', value: item.value });\n                //     } else {\n                //         res.set(item.key, { type: item.type, label: '', value: item.value });\n                //     }\n                //     return res;\n                // }, new Map()); // 使用 Map 保持插入顺序\n\n                // let hasKeys = [];\n                // const isFormInputNode = node.type === 'input' && node.tab.value === 'form_input'\n                // // 根据node params替换newData的key值 替换为name\n                // node.group_params.forEach(group => {\n                //     group.params.forEach(param => {\n                //         // 尝试去value中匹配 (input-form; preset-quesitons)\n                //         if (Array.isArray(param.value) && param.value.some(el => newData.has(el.key))) {\n                //             param.value.forEach(value => {\n                //                 if (!newData.has(value.key)) return;\n                //                 newData.get(value.key)['label'] = value.label || value.key;\n                //                 hasKeys.push(value.key);\n                //             });\n                //         } else if (newData.has(param.key)) {\n                //             if (param.hidden) return newData.delete(param.key);\n                //             newData.get(param.key)['label'] = param.label || param.key;\n                //             hasKeys.push(param.key);\n                //         } else if (param.key === 'tool_list') {\n                //             // tool\n                //             param.value.some(p => {\n                //                 if (newData.has(p.tool_key)) {\n                //                     newData.get(p.tool_key)['label'] = p.label;\n                //                     hasKeys.push(p.tool_key);\n                //                 }\n                //             });\n                //         } else if (isFormInputNode && param.key === 'form_input') {\n                //             param.value.forEach(value => {\n                //                 value.file_type === 'file' && newData.delete(value.image_file);\n                //             })\n                //         }\n                //     });\n                // });\n\n                // return Array.from(newData.entries()).map(([key, value]) => ({\n                //     label: ['file', 'variable'].includes(value.type) && !key.startsWith('output_') ? key : value.label || key,\n                //     type: value.type,\n                //     value: value.value,\n                // }))\n            }\n        }\n\n        const onNodeLogEvent = (e) => {\n            const { nodeId, action, data } = e.detail\n            if (nodeId !== node.id && nodeId !== '*') return\n            data && setData(data.map(d => buildData(d)))\n            setState(action)\n        }\n        window.addEventListener('nodeLogEvent', onNodeLogEvent)\n        return () => {\n            window.removeEventListener('nodeLogEvent', onNodeLogEvent)\n        }\n    }, [])\n\n    const noLog = useMemo(() => {\n        return ['report', 'end'].includes(node.type)\n    }, [node])\n\n    if (state === Status.normal) return children;\n\n    if (state === Status.loading) return (\n        <div className='bisheng-node-top flex items-center'>\n            <LoadIcon className=\"text-primary mr-2\" />\n            <span className='text-sm text-primary'>{t('running')}</span>\n        </div>\n    );\n\n    if (state === Status.success) return (\n        <div className='bisheng-node-top flex justify-between bg-[#E6FBF1] dark:bg-[#303134]'>\n            <div className='flex items-center gap-2 text-sm'>\n                <div className='rounded-full w-4 h-4 bg-[#00C78C] text-gray-50 flex items-center justify-center'><Check size={14} /></div>\n                <span>{t('runSuccess')}</span>\n            </div>\n            {!noLog && <Log type={node.type} name={node.name} data={data} />}\n        </div>\n    );\n\n    return (\n        <div className='bisheng-node-top flex justify-between bg-[#FCEAEA] dark:bg-[#303134]'>\n            <div className='flex items-center gap-2 text-sm'>\n                <div className='rounded-full w-4 h-4 bg-[#F04438] text-gray-50 flex items-center justify-center'><X size={14} /></div>\n                <span>{t('runFailed')}</span>\n            </div>\n            {!noLog && <Log type={node.type} name={node.name} data={data} />}\n        </div>\n    );\n};\n\n\n// 日志模板\nconst Log = ({ type, name, data }) => {\n    const [open, setOpen] = useState(false);\n    const ref = useRef(null);\n    const { t } = useTranslation('flow')\n    const [currentIndex, setCurrentIndex] = useState(0)\n    // key\n    const currentData = useMemo(() =>\n        data[currentIndex] || [], [data, currentIndex]\n    )\n\n    const handleClickOutside = (event) => {\n        if (ref.current && !ref.current.contains(event.target)) {\n            setOpen(false);\n        }\n    };\n\n    useEffect(() => {\n        if (open) {\n            document.addEventListener(\"click\", handleClickOutside);\n        } else {\n            document.removeEventListener(\"click\", handleClickOutside);\n        }\n        return () => {\n            document.removeEventListener(\"click\", handleClickOutside);\n        };\n    }, [open]);\n\n    return (\n        <div className=\"relative\" ref={ref}>\n            <div\n                className=\"flex items-center text-primary text-sm cursor-pointer\"\n                onClick={() => setOpen(!open)}\n            >\n                <span><span>{t('viewLogs')}</span></span>\n                <span>\n                    <ChevronsRightIcon size={18} />\n                </span>\n            </div>\n            {open && (\n                <div className=\"absolute top-0 left-full w-96 rounded-lg shadow-lg p-2 bg-[#F7F8FB] dark:bg-[#303134] z-10\">\n                    <div className=\"flex justify-between items-center mb-2\">\n                        <div className=\"relative z-10 flex gap-2\">\n                            <NodeLogo type={type} colorStr={name} />\n                            <span className=\"truncate block\">{name}</span>\n                        </div>\n                        <X size={18} className=\"cursor-pointer\" onClick={() => setOpen(false)} />\n                    </div>\n                    {data.length > 1 && <div className=\"mb-2\">\n                        <Select value={currentIndex + \"\"} onValueChange={(val => setCurrentIndex(Number(val)))}>\n                            <SelectTrigger className=\"w-[180px]\">\n                                {/* <SelectValue /> */}\n                                <span>{t('roundRunResult', { index: currentIndex + 1 })}</span>\n                            </SelectTrigger>\n                            <SelectContent>\n                                <SelectGroup>\n                                    {\n                                        data.map((_, index) => <SelectItem key={index} value={index + \"\"}>{t('roundRunResult', { index: index + 1 })}</SelectItem>)\n                                    }\n                                </SelectGroup>\n                            </SelectContent>\n                        </Select>\n                    </div>}\n                    <div className=\"\">\n                        {currentData.map((item) => item.type === 'file' ?\n                            <ResultFile title={item.label} name={name} fileUrl={item.value} key={item.label + currentIndex} />\n                            : <ResultText title={item.label} value={item.value} key={item.label + currentIndex} />)}\n                    </div>\n                </div>\n            )}\n        </div>\n    );\n};\n\n// 下载文件\nexport const ResultFile = ({ title, name, fileUrl }: { title: string, name: string, fileUrl: string }) => {\n    const { flow } = useFlowStore();\n    const { t } = useTranslation('flow');\n\n    const handleDownload = (e) => {\n        downloadFile(fileUrl, `${flow.name}_${name}_${t('searchResult')}`)\n    }\n\n    return (\n        <div className=\"mb-2 rounded-md border bg-search-input text-sm shadow-sm\">\n            <div className=\"border-b px-2 flex justify-between items-center\">\n                <p>{title}</p>\n            </div>\n\n            <textarea\n                defaultValue={t('resultTooLongDownloadToView')}\n                disabled\n                className=\"w-full h-12 p-2 block text-muted-foreground dark:bg-black\"\n            />\n\n            <Button onClick={handleDownload} className=\"h-6 mt-2\">\n                {t('downloadFullContent')}\n            </Button>\n        </div>\n    );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/RunTest.tsx",
    "content": "\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Sheet, SheetClose, SheetContent, SheetFooter, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { runWorkflowNodeApi } from \"@/controllers/API/workflow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { WorkflowNode } from \"@/types/flow\";\nimport { copyText } from \"@/utils\";\nimport { Copy, CopyCheck } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../flowStore\";\nimport NodeLogo from \"./NodeLogo\";\nimport { useParams } from \"react-router-dom\";\n\ninterface Input {\n    key: string,\n    required: boolean,\n    label: string,\n    value: string,\n    autoFill: boolean\n}\n\nexport const ResultText = ({ title, value }: { title: string, value: any }) => {\n    const [copyed, setCopied] = useState(false)\n    const [text] = useState(() => {\n        if (typeof value === 'object') {\n            return JSON.stringify(value, null, 2)\n        } else if (Array.isArray(value)) {\n            return value.join('\\n')\n        } else {\n            return value\n        }\n    })\n    const handleCopy = (e) => {\n        e.stopPropagation()\n\n        setCopied(true)\n        copyText(text)\n        setTimeout(() => {\n            setCopied(false)\n        }, 2000)\n    }\n\n    return <div className=\"nowheel nodrag mb-2 rounded-md border bg-search-input text-sm shadow-sm\" onKeyDown={e => e.stopPropagation()}>\n        <div className=\"border-b px-2 flex justify-between items-center\">\n            <p className=\"truncate\">{title}</p>\n            {copyed ? <CopyCheck size={14} /> : <Copy size={14} className=\"cursor-pointer min-w-3\" onClick={handleCopy} />}\n        </div>\n        <textarea defaultValue={text} readOnly className=\"w-full min-h-28 p-2 block text-muted-foreground bg-gray-100 dark:bg-black outline-none\" />\n    </div>\n}\n\n// ref\nexport const RunTest = forwardRef((props, ref) => {\n    const [open, setOpen] = useState(false)\n    const [inputs, setInputs] = useState<Input[]>([])\n    const [loading, setLoading] = useState(false)\n    const [node, setNode] = useState<WorkflowNode>(null)\n    const { message } = useToast()\n    const { t } = useTranslation('flow')\n    const [currentIndex, setCurrentIndex] = useState(0)\n    const { id: workflow_id } = useParams();\n\n    useEffect(() => {\n        if (!open) {\n            setInputs([])\n            setResults([])\n        }\n    }, [open])\n\n    const runCache = useFlowStore(state => state.runCache)\n    const setRunCache = useFlowStore(state => state.setRunCache)\n\n    useImperativeHandle(ref, () => ({\n        run: (node: WorkflowNode) => {\n            setOpen(true)\n            setNode(node)\n\n            // 自动填充\n            const appendAutoFillin = (param) => {\n                // 预置问题自动填充\n                const autoFill = /start_[a-zA-Z0-9]+\\.preset_question/.test(param.key)\n                if (autoFill) {\n                    return { ...param, autoFill, value: param.label.split('/')[1] }\n                } else {\n                    const cache = runCache[node.id]\n                    const value = cache?.[param.key] || ''\n                    return { ...param, autoFill, value }\n                }\n            }\n            /**\n             * 遍历当前节点的项,找出要做节点运行入参的input or var的项\n             */\n            node.group_params.forEach((group) => {\n                group.params.forEach((param) => {\n                    if (param.test === 'input') { // 遍历value[] ,每一项作为一个test输入\n                        if (node.type === \"tool\") {\n                            return setInputs((prev) => {\n                                return [...prev, appendAutoFillin({ key: param.label, required: false, label: param.label, value: '' })]\n                            })\n                        }\n                        // if (param.type === 'code_input') {\n                        // code_input类型特殊处理\n                        return param.value.forEach(val => {\n                            setInputs((prev) => {\n                                return [...prev, appendAutoFillin({ key: val.key, required: false, label: val.key, value: '' })]\n                            })\n                        })\n                    } else if (param.test === 'var') { // 提取value中的变量,每个变量作为一个test输入\n                        let allVarInput = []\n                        if (param.type === 'var_textarea') { // 从textarea提取变量\n                            const regex = /{{#(.*?)#}}/g;\n                            const parts = param.value.split(regex);\n                            allVarInput = parts.reduce((res, part, index) => {\n                                if (index % 2 === 1) {\n                                    res.push(appendAutoFillin({ key: part, required: false, label: param.varZh?.[part] || part, value: '' }))\n                                }\n                                return res\n                            }, [])\n                        } else if (param.type === 'var_select') { // 从变量选择列表提取变量\n                            allVarInput = [appendAutoFillin({ key: param.value, required: false, label: param.varZh?.[param.value] || param.value, value: '' })]\n                        } else if (param.type === 'user_question') { // 从批量问题提取变量\n                            allVarInput = param.value.map(part =>\n                                (appendAutoFillin({ key: part, required: false, label: param.varZh?.[part] || part, value: '' }))\n                            )\n                        }\n\n                        setInputs(prev => [...prev,\n                        // 非本节点\n                        ...allVarInput.filter(input => !input.key.startsWith(node.id))])\n                    }\n                })\n            })\n\n            // 去重\n            setInputs(prev => [...new Map(prev.map(item => [item.key, item])).values()])\n        }\n    }));\n\n    const [results, setResults] = useState<any[]>([])\n    const handleRunClick = async () => {\n        inputs.some(input => {\n            if (input.required && !input.value) {\n                message({\n                    variant: \"warning\",\n                    description: `${input.label} ${t('required')}`\n                })\n                return true\n            }\n        })\n\n        // save cache\n        const cacheData = inputs.reduce((res, input) => {\n            res[input.key] = input.value\n            return res\n        }, {})\n        setRunCache(node.id, cacheData)\n\n        setLoading(true)\n        setResults([])\n        await captureAndAlertRequestErrorHoc(\n            runWorkflowNodeApi({\n                node_input: inputs.reduce((result, input) => {\n                    result[`${input.key}`] = input.value;\n                    return result;\n                }, {}),\n                data: node,\n                workflow_id\n            }).then(res => {\n                const result = res.map(el => TranslationName(el)) // .map(item => ({ title: item.key, text: item.value }))\n                setCurrentIndex(0)\n                setResults(result)\n            })\n        );\n        setLoading(false)\n    }\n\n    // 翻译变量名\n    const TranslationName = (data) => {\n        const toolMap = {}\n        node.group_params.forEach(group => {\n            group.params.forEach(param => {\n                if (param.key === 'tool_list') {\n                    // tool\n                    param.value.forEach(el => {\n                        toolMap[el.tool_key] = el.label\n                    })\n                }\n            });\n        });\n\n        return data.map(item => {\n            let label = ''\n            if (['file', 'variable'].includes(item.type)) {\n                const key = item.key.split('.')\n                label = t(`node.${node.type}.${key[key.length - 1]}.label`)\n            } else if (item.type === 'tool') {\n                label = toolMap[item.key]\n            } else {\n                label = t(`node.${node.type}.${item.key}.label`)\n            }\n            return {\n                title: label,\n                type: item.type,\n                text: item.value\n            }\n        })\n        // const newData = data.reduce((res, item) => {\n        //     if (item.type === 'variable') {\n        //         const key = item.key.split('.')\n        //         res[key[key.length - 1]] = item.value\n        //     } else {\n        //         res[item.key] = item.value\n        //     }\n        //     return res\n        // }, {})\n        // let result = [];\n        // let hasKeys = []\n\n        // return result\n    }\n\n    return (\n        <Sheet open={open} onOpenChange={setOpen}>\n            <SheetContent\n                className=\"sm:max-w-96\"\n                onPointerDownOutside={(event) => {\n                    event.preventDefault();\n                }}\n                onInteractOutside={(event) => {\n                    event.preventDefault();\n                }}\n            >\n                <SheetHeader>\n                    <SheetTitle className=\"flex items-center p-2 text-md gap-2 font-normal\">\n                        {node && <NodeLogo type={node.type} colorStr={node.name} />}\n                        {t('singleNodeRun')}\n                    </SheetTitle>\n                </SheetHeader>\n                <div className=\"px-2 pt-2 pb-10 h-[calc(100vh-40px)] overflow-y-auto bg-[#fff] dark:bg-[#303134]\">\n                    {inputs.map((input) => (\n                        input.autoFill ? null : <div className=\"mb-2\" key={input.key}>\n                            <Label className=\"flex items-center bisheng-label mb-2\">\n                                {input.required && <span className=\"text-red-500\">*</span>}\n                                {input.label}\n                            </Label>\n                            <Textarea\n                                className=\"\"\n                                defaultValue={input.value}\n                                onChange={(e) => {\n                                    setInputs((prev) =>\n                                        prev.map((item) =>\n                                            item.key === input.key ? { ...item, value: e.target.value } : item\n                                        )\n                                    );\n                                }}\n                            />\n                        </div>\n                    ))}\n\n                    <Button className=\"w-full mb-2\" disabled={loading} onClick={handleRunClick}>\n                        {t('run')}\n                    </Button>\n                    {results.length !== 0 && <p className=\"mt-2 mb-3 text-sm font-bold\">{t('runResults')}</p>}\n                    {results.length > 1 && <div className=\"mb-2\">\n                        <Select value={currentIndex + \"\"} onValueChange={(val => setCurrentIndex(Number(val)))}>\n                            <SelectTrigger className=\"w-[180px]\">\n                                {/* <SelectValue /> */}\n                                <span>{t('roundRunResult', { index: currentIndex + 1 })}</span>\n                            </SelectTrigger>\n                            <SelectContent>\n                                <SelectGroup>\n                                    {\n                                        results.map((_, index) => <SelectItem key={index} value={index + \"\"}>{t('roundRunResult', { index: index + 1 })}</SelectItem>)\n                                    }\n                                </SelectGroup>\n                            </SelectContent>\n                        </Select>\n                    </div>}\n                    {results[currentIndex]?.map((res, i) => (\n                        <ResultText key={res.text + i} title={res.title} value={res.text} />\n                    ))}\n                </div>\n                <SheetFooter>\n                    <SheetClose asChild>\n                        {/* <Button type=\"submit\">Save changes</Button> */}\n                    </SheetClose>\n                </SheetFooter>\n            </SheetContent>\n        </Sheet>\n    )\n})\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/CodeInputItem.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { updateVariableNameByCode } from \"@/util/flowUtils\";\nimport { ChevronDown, Trash2 } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport { useUpdateVariableState } from \"../flowNodeStore\";\nimport SelectVar from \"./SelectVar\";\n\nconst Item = ({ nodeId, validate, sameKey, item, index, onUpdateItem, onDeleteItem }) => {\n    const { t } = useTranslation('flow');\n\n    const handleTypeChange = (newType) => {\n        onUpdateItem(index, { ...item, type: newType, label: '', value: '' });\n    };\n\n    const handleKeyChange = (e) => {\n        onUpdateItem(index, { ...item, key: e.target.value });\n    };\n\n    const handleValueChange = (e) => {\n        onUpdateItem(index, { ...item, value: e.target.value });\n    };\n\n    const [error, setError] = useState(false);\n\n    useEffect(() => {\n        if (!validate) return setError(false);\n        if (item.key === '' || !/^[a-zA-Z_][a-zA-Z0-9_]{1,50}$/.test(item.key)) {\n            setError(true);\n        } else {\n            setError(false);\n        }\n    }, [validate])\n\n    return (\n        <div className=\"flex gap-1 items-center mb-1\">\n            {/* key */}\n            <Input value={item.key} placeholder={t('parameterName')} onChange={handleKeyChange} className={`${(error || sameKey === item.key) && 'border-red-500'} h-8`} />\n            {/* type */}\n\n            <Select value={item.type} onValueChange={handleTypeChange}>\n                <SelectTrigger className=\"max-w-32 w-24 h-8\">\n                    <SelectValue placeholder={t('type')} />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"ref\">{t('reference')}</SelectItem>\n                        <SelectItem value=\"input\">{t('input')}</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n            {/* value */}\n            {item.type === 'ref' ? <SelectVar nodeId={nodeId} itemKey={''} onSelect={(E, v) => {\n                onUpdateItem(index, { ...item, label: `${E.name}/${v.label}`, value: `${E.id}.${v.value}` })\n            }}>\n                <Tip content={item.label} side=\"top\">\n                    <div className=\"no-drag nowheel group flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400\">\n                        {item.label ? <span className=\"flex items-center\">\n                            {item.label}\n                        </span> : <span className=\"bisheng-label\">{t('value')}</span>}\n                        <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n                    </div>\n                </Tip>\n            </SelectVar> : <Input value={item.value} placeholder={t('value')} onChange={handleValueChange} className=\"h-8\" />}\n            <Trash2 onClick={() => onDeleteItem(index)} className=\"min-w-5 hover:text-red-600 cursor-pointer\" />\n        </div>\n    );\n};\n\n\nexport default function CodeInputItem({ nodeId, data: paramItem, onValidate, onChange, i18nPrefix }) {\n    const { t } = useTranslation('flow');\n    const [items, setItems] = useState(paramItem.value);\n\n    const handleAddItem = () => {\n        setError(false)\n        const newItems = [...items, { key: '', type: 'ref', label: '', value: '' }];\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const handleUpdateItem = (index, newItem) => {\n        const newItems = items.map((item, i) => (i === index ? newItem : item));\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const handleDeleteItem = (index) => {\n        const newItems = items.filter((_, i) => i !== index);\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const [error, setError] = useState(false)\n    const [sameKey, setSameKey] = useState('')\n    useEffect(() => {\n        paramItem.required && onValidate(() => {\n            setError(false)\n            setTimeout(() => {\n                setError(true)\n            }, 100);\n\n            let msg = ''\n            const map = {}\n            items.some(item => {\n                if (item.key === '') {\n                    msg = t('variableNameCannotBeEmpty')\n                    return true\n                } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(item.key)) {\n                    msg = t('variableNameInvalid')\n                    return true\n                } else if (item.key.length > 50) {\n                    msg = t('variableNameTooLong')\n                    return true\n                } else if (map[item.key]) {\n                    msg = t('variableNameDuplicate')\n                    setSameKey(item.key)\n                    return true\n                } else {\n                    map[item.key] = true\n                    setSameKey('-')\n                }\n            })\n            return msg || false\n        })\n\n        return () => onValidate(() => { })\n    }, [paramItem.value])\n\n    // Update Preset Questions \n    // const [_, forceUpdate] = useState(false)\n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!updateVariable) return\n        const { action, question } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // setValue('')\n            // onChange('')\n        } else if (action === 'u') {\n            const newItems = updateVariableNameByCode(paramItem, updateVariable)\n            if (newItems) {\n                setItems(newItems)\n                onChange(newItems)\n            }\n        }\n    }, [updateVariable])\n\n    return (\n        <div className=\"nowheel max-h-80 overflow-y-auto\">\n            {items.map((item, index) => (\n                <Item\n                    key={index}\n                    sameKey={sameKey}\n                    validate={error}\n                    nodeId={nodeId}\n                    item={item}\n                    index={index}\n                    onUpdateItem={handleUpdateItem}\n                    onDeleteItem={handleDeleteItem}\n                />\n            ))}\n            <Button onClick={handleAddItem} variant=\"outline\" className=\"border-primary text-primary mt-2 h-8\">\n                {t('addNewParameter')}\n            </Button>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/CodeOutputItem.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Trash2 } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from 'react-i18next';\n\nconst Item = ({ item, index, validate, onUpdateItem, onDeleteItem }) => {\n    const { t } = useTranslation('flow');\n\n    const handleTypeChange = (newType) => {\n        onUpdateItem(index, { ...item, type: newType });\n    };\n\n    const handleKeyChange = (e) => {\n        onUpdateItem(index, { ...item, key: e.target.value });\n    };\n\n    const [error, setError] = useState(false);\n    useEffect(() => {\n        if (!validate) return setError(false);\n        if (item.key === '' || !/^[a-zA-Z0-9_]{1,50}$/.test(item.key)) {\n            setError(true);\n        } else {\n            setError(false);\n        }\n    }, [validate])\n\n    return (\n        <div className=\"flex gap-1 items-center mb-1\">\n            {/* key */}\n            <Input value={item.key} placeholder={t('parameterName')} onChange={handleKeyChange} className={`${error && 'border-red-500'} h-8`} />\n            {/* type */}\n            <Select value={item.type} onValueChange={handleTypeChange}>\n                <SelectTrigger className=\"max-w-32 w-24 h-8\">\n                    <SelectValue placeholder={t('dataType')} />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"str\">String</SelectItem>\n                        <SelectItem value=\"list\">List</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n            <Trash2 onClick={() => onDeleteItem(index)} className=\"min-w-5 hover:text-red-600 cursor-pointer\" />\n        </div>\n    );\n};\n\nexport default function CodeOutputItem({ nodeId, data, onValidate, onChange, i18nPrefix }) {\n    const { t } = useTranslation('flow');\n    const [items, setItems] = useState(data.value);\n\n    const handleAddItem = () => {\n        setError(false)\n        const newItems = [...items, { key: '', type: 'str' }];\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const handleUpdateItem = (index, newItem) => {\n        const newItems = items.map((item, i) => (i === index ? newItem : item));\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const handleDeleteItem = (index) => {\n        const newItems = items.filter((_, i) => i !== index);\n        setItems(newItems);\n        onChange(newItems);\n    };\n\n    const [error, setError] = useState(false)\n    const [sameKey, setSameKey] = useState('')\n    useEffect(() => {\n        data.required && onValidate(() => {\n            setError(false)\n            setTimeout(() => {\n                setError(true)\n            }, 100);\n\n            let msg = ''\n            const map = {}\n            items.some(item => {\n                if (item.key === '') {\n                    msg = t('variableNameCannotBeEmpty')\n                    return true\n                } else if (!/^[a-zA-Z_][a-zA-Z0-9_]{1,50}$/.test(item.key)) {\n                    msg = t('variableNameInvalid')\n                    return true\n                } else if (item.key.length > 50) {\n                    msg = t('variableNameTooLong')\n                    return true\n                } else if (map[item.key]) {\n                    msg = t('variableNameDuplicate')\n                    setSameKey(item.key)\n                    return true\n                } else {\n                    map[item.key] = true\n                    setSameKey('-')\n                }\n            })\n            return msg || false\n        })\n\n        return () => onValidate(() => { })\n    }, [data.value])\n\n    return (\n        <div className=\"nowheel max-h-80 overflow-y-auto\">\n            {items.map((item, index) => (\n                <Item\n                    key={index}\n                    sameKey={sameKey}\n                    validate={error}\n                    nodeId={nodeId}\n                    item={item}\n                    index={index}\n                    onUpdateItem={handleUpdateItem}\n                    onDeleteItem={handleDeleteItem}\n                />\n            ))}\n            <Button onClick={handleAddItem} variant=\"outline\" className=\"border-primary text-primary mt-2 h-8\">\n                {t('addNewParameter')}\n            </Button>\n        </div>\n    );\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/CodePythonItem.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { darkContext } from \"@/contexts/darkContext\";\nimport { Expand } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport AceEditor from \"react-ace\";\n\nexport default function CodePythonItem({ data, onChange, i18nPrefix }) {\n    const { dark } = useContext(darkContext);\n    const [code, setCode] = useState(data.value);\n\n    return <div className=\"relative\">\n        <AceEditor\n            value={data.value}\n            mode=\"python\"\n            highlightActiveLine={true}\n            showPrintMargin={false}\n            fontSize={14}\n            showGutter\n            enableLiveAutocompletion\n            theme={dark ? \"twilight\" : \"github\"}\n            name=\"CodeEditor\"\n            onChange={(value) => {\n                setCode(value);\n                onChange(value)\n            }}\n            className=\"h-40 w-full rounded-lg border-[1px] border-border custom-scroll\"\n        />\n        <Dialog >\n            <DialogTrigger asChild>\n                <Button className=\"absolute right-2 top-0 size-5\" size=\"icon\" variant=\"ghost\"><Expand size={14} /></Button>\n            </DialogTrigger>\n            <DialogContent className=\"h-[600px] lg:max-w-[800px] \">\n                <DialogHeader>\n                    <DialogTitle className=\"flex items-center\">\n                        Code\n                    </DialogTitle>\n                </DialogHeader>\n                <AceEditor\n                    value={code}\n                    mode=\"python\"\n                    highlightActiveLine={true}\n                    showPrintMargin={false}\n                    fontSize={14}\n                    showGutter\n                    enableLiveAutocompletion\n                    theme={dark ? \"twilight\" : \"github\"}\n                    name=\"CodeEditor\"\n                    onChange={(value) => {\n                        setCode(value);\n                        onChange(value)\n                    }}\n                    className=\"h-98 w-full rounded-lg border-[1px] border-border custom-scroll\"\n                />\n            </DialogContent>\n        </Dialog>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ConditionItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { isVarInFlow, updateVariableNameByCondition } from \"@/util/flowUtils\";\nimport { ChevronDown, RefreshCcw, Trash2 } from \"lucide-react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport { CustomHandle } from \"..\";\nimport useFlowStore from \"../../flowStore\";\nimport { useUpdateVariableState } from \"../flowNodeStore\";\nimport SelectVar from \"./SelectVar\";\n\ninterface Item {\n    id: string;  // UUID 类型的字符串\n    left_var: string;  // 左侧变量\n    left_label: string;  // 左侧标签\n    comparison_operation: string;  // 比较操作符\n    right_value_type: string;  // 右侧值的类型\n    right_value: string;  // 右侧的具体值\n    right_label: string;  // 右侧标签\n    del: boolean\n}\n\n\nconst Item = ({ nodeId, item, index, del, required, varErrors, onUpdateItem, onDeleteItem }) => {\n    const { t } = useTranslation('flow');\n\n    const handleCompTypeChange = (newType) => {\n        const valuetype = newType === 'regex' ? 'input' : item.right_value_type;\n        onUpdateItem(index, { ...item, comparison_operation: newType, right_value_type: valuetype });\n    };\n\n    const handleTypeChange = (newType) => {\n        onUpdateItem(index, { ...item, right_value_type: newType, right_value: '', right_label: '' });\n    };\n\n    const handleValueChange = (e) => {\n        onUpdateItem(index, { ...item, right_value: e.target.value });\n    };\n\n    const [leftError, rightError] = useMemo(() => {\n        if (!varErrors) return [false, false];\n        return varErrors;\n    }, [varErrors])\n\n    return (\n        <div className=\"flex gap-1 items-center mb-1 hover-reveal\">\n            {/* key */}\n            <SelectVar\n                className=\"max-w-32\"\n                nodeId={nodeId}\n                itemKey={item.id}\n                onSelect={(E, v) => {\n                    onUpdateItem(index, { ...item, left_label: `${E.name}/${v.label}`, left_var: `${E.id}.${v.value}` });\n                }}\n            >\n                <Tip content={item.left_label} side=\"top\">\n                    <div\n                        className={`${(required && !item.left_label || leftError) && 'border-red-500'\n                            } no-drag nowheel group flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400`}\n                    >\n                        {item.left_label ? (\n                            <span className=\"flex items-center\">{item.left_label}</span>\n                        ) : (\n                            <span className=\"text-gray-400 mt-0.5\">{t('selectVariable')}</span>\n                        )}\n                        <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n                    </div>\n                </Tip>\n            </SelectVar>\n            {/* condition */}\n            <Select value={item.comparison_operation} onValueChange={handleCompTypeChange}>\n                <SelectTrigger className={`max-w-32 w-24 h-8 ${required && !item.comparison_operation && 'border-red-500'}`}>\n                    <SelectValue placeholder={t('selectCondition')} />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"equals\">{t('equals')}</SelectItem>\n                        <SelectItem value=\"not_equals\">{t('notEquals')}</SelectItem>\n                        <SelectItem value=\"contains\">{t('contains')}</SelectItem>\n                        <SelectItem value=\"not_contains\">{t('notContains')}</SelectItem>\n                        <SelectItem value=\"is_empty\">{t('isEmpty')}</SelectItem>\n                        <SelectItem value=\"is_not_empty\">{t('isNotEmpty')}</SelectItem>\n                        <SelectItem value=\"starts_with\">{t('startsWith')}</SelectItem>\n                        <SelectItem value=\"ends_with\">{t('endsWith')}</SelectItem>\n                        <SelectItem value=\"greater_than\">&gt;</SelectItem>\n                        <SelectItem value=\"less_than\">&lt;</SelectItem>\n                        <SelectItem value=\"greater_than_or_equal\">&ge;</SelectItem>\n                        <SelectItem value=\"less_than_or_equal\">&le;</SelectItem>\n                        <SelectItem value=\"regex\">{t('regex')}</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n            {/* type */}\n            {!['is_not_empty', 'is_empty'].includes(item.comparison_operation) && (\n                <>\n                    {'regex' !== item.comparison_operation && (\n                        <Select value={item.right_value_type} onValueChange={handleTypeChange}>\n                            <SelectTrigger className=\"max-w-32 w-24 h-8\">\n                                <SelectValue placeholder={t('selectType')} />\n                            </SelectTrigger>\n                            <SelectContent>\n                                <SelectGroup>\n                                    <SelectItem value=\"ref\">{t('reference')}</SelectItem>\n                                    <SelectItem value=\"input\">{t('input')}</SelectItem>\n                                </SelectGroup>\n                            </SelectContent>\n                        </Select>\n                    )}\n                    {/* value */}\n                    {item.right_value_type === 'ref' ? (\n                        <SelectVar\n                            className=\"max-w-40\"\n                            nodeId={nodeId}\n                            itemKey={item.id}\n                            onSelect={(E, v) => {\n                                onUpdateItem(index, { ...item, right_label: `${E.name}/${v.label}`, right_value: `${E.id}.${v.value}` });\n                            }}\n                        >\n                            <Tip content={item.right_label} side=\"top\">\n                                <div\n                                    className={`${(required && !item.right_label || rightError) && 'border-red-500'\n                                        } no-drag nowheel group flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400`}\n                                >\n                                    <span className=\"flex items-center\">{item.right_label}</span>\n                                    <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n                                </div>\n                            </Tip>\n                        </SelectVar>\n                    ) : (\n                        <Input\n                            placeholder={\n                                item.comparison_operation === 'regex'\n                                    ? t('inputRegexPlaceholder')\n                                    : t('inputValuePlaceholder')\n                            }\n                            value={item.right_value}\n                            onChange={handleValueChange}\n                            className={`${required && !item.right_value && 'border-red-500'} h-8`}\n                        />\n                    )}\n                </>\n            )}\n            {del && (\n                <Trash2\n                    size={18}\n                    onClick={() => onDeleteItem(index)}\n                    className=\"min-w-5 hover:text-red-600 cursor-pointer hover-reveal-child\"\n                />\n            )}\n        </div>\n    );\n};\n\nexport default function ConditionItem({ nodeId, node, data: paramItem, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const { t } = useTranslation('flow'); // 获取翻译函数\n    const [value, setValue] = useState([]);\n    const [required, setRequired] = useState(false);\n\n    const handleAddCondition = () => {\n        setRequired(false);\n        setValue((val) => {\n            const newVal = [...val, { id: generateUUID(8), operator: 'and', conditions: [] }];\n            onChange(newVal);\n            return newVal;\n        });\n    };\n\n    useEffect(() => {\n        if (paramItem.value && paramItem.value.length) {\n            setValue(paramItem.value);\n        } else {\n            handleAddCondition();\n        }\n    }, []);\n\n    const deleteCondition = (id) => {\n        setValue((val) => {\n            const newVal = val.filter((item) => item.id !== id);\n            onChange(newVal);\n            return newVal;\n        });\n    };\n\n    const handleAddItem = (id) => {\n        setRequired(false);\n        setValue((val) => {\n            const newVal = val.map((item) => {\n                if (item.id === id) {\n                    item.conditions.push({\n                        id: generateUUID(8),\n                        left_var: '',\n                        left_label: '',\n                        comparison_operation: '',\n                        right_value_type: 'input',\n                        right_value: '',\n                        right_label: '',\n                    });\n                }\n                return item;\n            });\n            onChange(newVal);\n            return newVal;\n        });\n    };\n\n    const handleOperatorChange = (index) => {\n        value[index].operator = value[index].operator === 'and' ? 'or' : 'and';\n        setValue([...value]);\n        onChange(value);\n    };\n\n    useEffect(() => {\n        onValidate(() => {\n            setRequired(false);\n            setTimeout(() => {\n                setRequired(true);\n            }, 100);\n            if (paramItem.value.length === 0) return t('conditionBranchCannotBeEmpty'); // 条件分支不可为空\n            const res = paramItem.value.some((item) => {\n                if (!item.conditions.length) return true;\n                return item.conditions.some((cds) => {\n                    if (!cds.left_label) return true;\n                    if (!cds.comparison_operation) return true;\n                    if (\n                        !(cds.right_value || cds.right_label) &&\n                        !['is_not_empty', 'is_empty'].includes(cds.comparison_operation)\n                    )\n                        return true;\n                });\n            });\n            if (res) return t('conditionBranchCannotBeEmpty'); // 条件分支不可为空\n            return false;\n        });\n\n        return () => onValidate(() => { });\n    }, [paramItem.value]);\n\n    // 校验变量是否可用\n    const { flow } = useFlowStore();\n    const [varErrors, setVarErrors] = useState([]);\n    const validateVarAvailble = () => {\n        const newVarErrors = [] // 存储所有验证结果\n        let errorMsg = '';\n        value.forEach((item, index) => {\n            const conditionErrors = []\n            item.conditions.forEach((cds) => {\n                const leftError = isVarInFlow(nodeId, flow.nodes, cds.left_var, cds.left_label)\n                let rightError = ''\n\n                if (cds.right_value_type === 'ref') {\n                    rightError = isVarInFlow(nodeId, flow.nodes, cds.right_value, cds.right_label)\n                }\n                errorMsg = rightError || leftError || errorMsg;\n                conditionErrors.push([!!leftError, !!rightError])\n            })\n            newVarErrors.push(conditionErrors)\n        })\n        setVarErrors(newVarErrors)\n        return Promise.resolve(errorMsg);\n    };\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [paramItem, value]);\n\n    // Update Preset Questions \n    // const [_, forceUpdate] = useState(false)\n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!updateVariable) return\n        const { action, question } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // setValue('')\n            // onChange('')\n        } else if (action === 'u') {\n            const newItems = updateVariableNameByCondition(paramItem, updateVariable)\n            if (newItems) {\n                setValue(newItems)\n                onChange(newItems)\n            }\n        }\n    }, [updateVariable])\n\n    return (\n        <div>\n            {value.map((val, vindex) => (\n                <div className=\"relative group\" key={val.id}>\n                    <div className=\"flex justify-between items-center\">\n                        <p className=\"mt-2 mb-3 text-sm font-bold\">{t('if')}</p> {/* 如果 */}\n                        {value.length > 1 && (\n                            <Trash2\n                                size={14}\n                                onClick={() => deleteCondition(val.id)}\n                                className=\"hover:text-red-600 cursor-pointer group-hover:opacity-100 opacity-0\"\n                            />\n                        )}\n                    </div>\n                    <div className=\"relative pl-6\">\n                        {val.conditions.map((item, index) => (\n                            <Item\n                                key={item.id}\n                                required={required}\n                                nodeId={nodeId}\n                                item={item}\n                                index={index}\n                                varErrors={varErrors[vindex]?.[index]}\n                                del={val.conditions.length > 1}\n                                onUpdateItem={(index, item) => {\n                                    val.conditions[index] = item;\n                                    setValue([...value]);\n                                    onChange(value);\n                                }}\n                                onDeleteItem={(index) => {\n                                    val.conditions.splice(index, 1);\n                                    setValue([...value]);\n                                    onChange(value);\n                                }}\n                            />\n                        ))}\n                        {val.conditions.length > 1 && (\n                            <div className=\"absolute left-1 top-0 w-4 h-full py-4\">\n                                <div className=\"h-full border border-foreground border-dashed border-r-0 rounded-l-sm\">\n                                    <Badge\n                                        variant=\"outline\"\n                                        className=\"absolute top-1/2 left-0.5 -translate-x-1/2 -translate-y-1/2 px-1 py-0 text-primary bg-[#E6ECF6] cursor-pointer\"\n                                        onClick={() => handleOperatorChange(vindex)}\n                                    >\n                                        {val.operator}\n                                        <RefreshCcw size={12} />\n                                    </Badge>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                    <Button\n                        onClick={() => handleAddItem(val.id)}\n                        variant=\"outline\"\n                        className=\"border-primary text-primary mt-2 h-8\"\n                    >\n                        + {t('addCondition')} {/* 添加条件 */}\n                    </Button>\n                    <CustomHandle id={val.id} node={node} className=\"top-[20px] -right-[30px]\" />\n                </div>\n            ))}\n\n            <div className=\"relative\">\n                <p className=\"mt-2 mb-3 text-sm font-bold\">{t('else')}</p> {/* 否则 */}\n                <CustomHandle node={node} className=\"top-[12px] -right-[30px]\" />\n            </div>\n            <Button\n                onClick={handleAddCondition}\n                variant=\"outline\"\n                className=\"border-primary text-primary mt-2 h-8\"\n            >\n                + {t('addBranch')} {/* 添加分支 */}\n            </Button>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/DragOptions.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { Input } from '@/components/bs-ui/input';\nimport { generateUUID } from '@/components/bs-ui/utils';\nimport { Handle, Position } from '@xyflow/react';\nimport i18next from \"i18next\";\nimport { Edit, GripVertical, Trash2 } from 'lucide-react'; // 图标\nimport { forwardRef, useEffect, useRef, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from 'react-i18next';\n\ninterface Iprops {\n    edges?: boolean,\n    edit?: boolean,\n    options: {\n        id: string;\n        text: string;\n        type: string;\n    }[],\n    scroll?: boolean,\n    onEditClick?: (index: number, option: Iprops[\"options\"][0]) => void\n    onChange?: (options: Iprops[\"options\"]) => void\n};\n\n// TODO 移动到业务组件\nconst itemNames = {\n    'select': i18next.t('dropdown', { ns: 'flow' }),\n    'file': i18next.t('file', { ns: 'flow' }),\n    'text': i18next.t('textInput', { ns: 'flow' })\n}\n\nconst DragOptions = forwardRef(({ edges = false, edit = false, scroll = false, options, onEditClick, onChange }: Iprops, ref) => {\n    const { t } = useTranslation('flow'); // 使用国际化\n    const [items, setItems] = useState([]); // 初始默认选项\n    const [inputValue, setInputValue] = useState(\"\");\n    const [error, setError] = useState(\"\");\n    const [isAdding, setIsAdding] = useState(false); // 控制按钮和输入框切换\n\n    // 当弹窗打开时，计算弹窗的上边和左边的偏移量\n    useEffect(() => {\n        setItems(options)\n    }, [options]);\n\n    // 更新父组件的 options 数组\n    const updateItems = (newItems) => {\n        setItems(newItems);\n        if (onChange) {\n            onChange(newItems); // 将新数组传递给父组件\n        }\n    };\n\n    const handleBeforAddItem = () => {\n        if (items.length >= 30) {\n            setError(t('maxOptionsError')); // 使用国际化文本\n            return;\n        }\n        setIsAdding(true);\n    }\n\n    const handleAddItem = () => {\n        if (!inputValue.trim()) {\n            setError(t('emptyOptionError')); // 使用国际化文本\n            return;\n        }\n\n        // 检查重复内容\n        const isDuplicate = items.some(item => item.text === inputValue.trim());\n        if (isDuplicate) {\n            setError(t('duplicateOptionError')); // 使用国际化文本\n            return;\n        }\n\n        if (inputValue.length > 50) {\n            setError(t('lengthOptionError')); // 使用国际化文本\n            return;\n        }\n\n        const newItem = {\n            id: generateUUID(8),\n            text: inputValue.trim(),\n            type: ''\n        };\n\n        const newItems = [...items, newItem];\n        updateItems(newItems); // 更新 items 并传递给父组件\n        setInputValue(\"\");\n        setError(\"\");\n        setIsAdding(false); // 切换回按钮\n    };\n\n    const handleDelete = (text) => {\n        const newItems = items.filter((item) => item.text !== text);\n        updateItems(newItems); // 更新 items 并传递给父组件\n    };\n\n    const handleDragEnd = (result) => {\n        if (!result.destination) return;\n        const newItems = Array.from(items);\n        const [removed] = newItems.splice(result.source.index, 1);\n        newItems.splice(result.destination.index, 0, removed);\n        updateItems(newItems); // 更新 items 并传递给父组件\n    };\n\n    return (\n        <div ref={ref} className={`${scroll && 'nowheel overflow-y-auto max-h-80'} mt-2`}>\n            <DragDropContext onDragEnd={handleDragEnd} usePortal>\n                <Droppable droppableId=\"options-list\">\n                    {(provided) => (\n                        <div\n                            {...provided.droppableProps}\n                            ref={provided.innerRef}\n                            className=\"space-y-2\"\n                        >\n                            {items.map((item, index) => (\n                                <Draggable key={item.text} draggableId={item.text} index={index}>\n                                    {(provided) => (\n                                        <div\n                                            ref={provided.innerRef}\n                                            {...provided.draggableProps}\n                                            style={{ ...provided.draggableProps.style, position: 'relative', top: 0, left: 0 }}\n                                            className=\"flex items-center gap-2 relative\"\n                                            title={item.text}\n                                        >\n                                            <div className='group w-full flex items-center rounded-md border border-input bg-search-input shadow-sm'>\n                                                <div {...provided.dragHandleProps} className=\"flex flex-col justify-center border-r px-1\">\n                                                    <GripVertical size={20} color=\"#999\" />\n                                                </div>\n                                                <Option\n                                                    item={item}\n                                                    count={items.length}\n                                                    edit={edit}\n                                                    onEditClick={() => onEditClick?.(index, item)}\n                                                    onDelete={handleDelete}\n                                                    onChange={(text) => updateItems(items.map((e, i) => i === index ? { ...e, text } : e))} />\n                                            </div>\n                                            {\n                                                edges && <Handle\n                                                    id={item.id}\n                                                    type=\"source\"\n                                                    position={Position.Right}\n                                                    className='bisheng-flow-handle group'\n                                                    style={{ right: -30, top: 18 }}\n                                                ><span></span></Handle>\n                                            }\n                                        </div>\n                                    )}\n                                </Draggable>\n                            ))}\n                        </div>\n                    )}\n                </Droppable>\n            </DragDropContext>\n\n            {!onEditClick && <div className=\"mt-4\">\n                {!isAdding ? (\n                    <Button onClick={handleBeforAddItem} type='button' variant='outline' className=\"border-primary text-primary mt-2\">\n                        + {t('addOption')} {/* 添加选项 */}\n                    </Button>\n                ) : (\n                    <div className=\"flex items-center space-x-2\">\n                        <Input\n                            value={inputValue}\n                            placeholder={t('inputOptionPlaceholder')} // 请输入选项展示文本\n                            onChange={(e) => setInputValue(e.target.value)}\n                            maxLength={50}\n                            showCount\n                        />\n                        <Button type=\"button\" onClick={handleAddItem} className=\"flex-none\">\n                            {t('confirm')} {/* 确定 */}\n                        </Button>\n                    </div>\n                )}\n                {error && <p className=\"text-red-500 mt-2 text-sm\">{error}</p>}\n            </div>}\n        </div>\n    );\n});\n\nexport default DragOptions;\n\n\nconst Option = ({ item, count, edit, onEditClick, onDelete, onChange }) => {\n\n    const [editing, setEditing] = useState(false);\n    const inputRef = useRef(null);\n    // const prevText = useRef('');\n\n    const handleEdit = () => {\n        if (edit) {\n            setEditing(true);\n        } else {\n            onEditClick();\n        }\n    }\n\n    const handleChange = () => {\n        const val = inputRef.current.value\n        setEditing(false)\n        val && onChange(val)\n    }\n\n    return <>\n        <div className=\"flex-1\">\n            {editing ?\n                <Input\n                    ref={inputRef}\n                    autoFocus\n                    className='border-none outline-none focus-visible:ring-transparent'\n                    value={item.text}\n                    onBlur={handleChange}\n                    onKeyDown={(e) => e.key === 'Enter' && handleChange()}\n                ></Input>\n                : <div\n                    className=\"h-9 leading-9 w-[200px] px-2 text-sm text-[#111] dark:text-gray-50 cursor-not-allowed opacity-50 truncate\"\n                >{item.text}</div>}\n        </div>\n        <div className='flex gap-1 items-center pr-2'>\n            <span className='text-xs text-muted-foreground group-hover:hidden'>{itemNames[item.type] || item.type}</span>\n            {(onEditClick || edit) && <Edit size={14} onClick={handleEdit} className='cursor-pointer text-muted-foreground hover:text-foreground hidden group-hover:block' />}\n            {count > 1 && (\n                <Trash2\n                    size={14}\n                    className=\"cursor-pointer text-gray-500 hover:text-red-500 transition-colors duration-200 hidden group-hover:block\"\n                    onClick={() => onDelete(item.text)}\n                />\n            )}\n        </div>\n    </>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/FileTypeSelect.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport { Select, SelectContent, SelectTrigger } from \"@/components/bs-ui/select\";\nimport { Check } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface FileTypeSelectProps {\n    data: {\n        label: string;\n        value: 'all' | 'file' | 'image';\n    };\n    onChange: (value: 'all' | 'file' | 'image') => void;\n    i18nPrefix: string;\n}\n\nexport default function FileTypeSelect({ data, onChange, i18nPrefix }: FileTypeSelectProps) {\n    const [type, setType] = useState(data.value)\n    const { t } = useTranslation('flow')\n    const [options] = useState([\n        {\n            label: t('document') + '（pdf、txt、md、html、xls、xlsx、doc、docx、ppt、pptx）',\n            value: 'file'\n        },\n        {\n            label: t('image') + '（png、jpg、jpeg、bmp）',\n            value: 'image'\n        }\n    ]);\n\n    const handleSelect = (clickedValue: 'file' | 'image') => {\n        let newValue: 'all' | 'file' | 'image' = type;\n\n        if (type === 'all') {\n            // 全选时点击某个类型：取消该类型，保留另一个\n            newValue = clickedValue === 'file' ? 'image' : 'file';\n        } else if (type !== clickedValue) {\n            // 点击已选中的唯一类型：切换回全选\n            newValue = 'all';\n        } else {\n            return\n        }\n        setType(newValue);\n        onChange(newValue);\n    };\n\n    const getDisplayText = () => {\n        switch (type) {\n            case 'all': return t('allTypes');\n            case 'file': return t('document');\n            case 'image': return t('image');\n            default: return t('allTypes');\n        }\n    };\n\n    const isOptionSelected = (value: 'file' | 'image') => {\n        return type === 'all' || type === value;\n    };\n\n    return (\n        <div className='node-item flex gap-4 items-center mb-4'>\n            <Label className=\"bisheng-label min-w-28\">\n                {i18nPrefix ? t(`${i18nPrefix}label`) : data.label}\n            </Label>\n            <Select >\n                <SelectTrigger>\n                    {getDisplayText()}\n                </SelectTrigger>\n                <SelectContent className=\"\">\n                    {options.map((option) => (\n                        <div\n                            key={option.value}\n                            data-focus={isOptionSelected(option.value)}\n                            className=\"flex justify-between w-full select-none items-center mb-1 last:mb-0 rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n                            onClick={() => handleSelect(option.value as 'file' | 'image')}\n                        >\n                            <span className=\"w-64 overflow-hidden text-ellipsis\">\n                                {option.label}\n                            </span>\n                            {isOptionSelected(option.value) && <Check className=\"h-4 w-4\" />}\n                        </div>\n                    ))}\n                </SelectContent>\n            </Select>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/GlobalVarItem.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input, Textarea } from \"@/components/bs-ui/input\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { QuestionTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { MinusCircle, PencilLine, Plus } from \"lucide-react\"\nimport { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\ninterface Variable {\n    key: string // UUID generated\n    label: string // User input variable name\n    value: string // Variable value\n}\n\ninterface ValidationError {\n    label?: string\n    value?: string\n}\n\nexport default function GlobalVarItem({ data, onChange, i18nPrefix }) {\n    const [variables, setVariables] = useState<Variable[]>(data.value)\n    const [isDialogOpen, setIsDialogOpen] = useState(false)\n    const [editingVariable, setEditingVariable] = useState<Variable | null>(null)\n    const [hoveredRow, setHoveredRow] = useState<string | null>(null)\n    const [formData, setFormData] = useState({ label: \"\", value: \"\" })\n    const [errors, setErrors] = useState<ValidationError>({})\n    const { t } = useTranslation('flow')\n\n    const validateVariableLabel = (label: string, currentKey?: string): string | null => {\n        if (!label) {\n            return t('variableNameEmpty')\n        }\n        if (label.length > 50) {\n            return t('variableNameTooLong')\n        }\n        if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(label)) {\n            if (/^[0-9]/.test(label)) {\n                return t('variableNameStartsWithNumber')\n            }\n            return t('variableNameInvalidChars')\n        }\n        if (variables.some((v) => v.label === label && v.key !== currentKey)) {\n            return t('variableNameDuplicate')\n        }\n        return null\n    }\n\n    const validateVariableValue = (value: string): string | null => {\n        if (!value) {\n            return t('variableValueEmpty')\n        }\n        if (value.length > 1000) {\n            return t('variableValueTooLong')\n        }\n        return null\n    }\n\n    const handleOpenDialog = (variable?: Variable) => {\n        if (variable) {\n            setEditingVariable(variable)\n            setFormData({ label: variable.label, value: variable.value })\n        } else {\n            setEditingVariable(null)\n            setFormData({ label: \"\", value: \"\" })\n        }\n        setErrors({})\n        setIsDialogOpen(true)\n    }\n\n    const handleCloseDialog = () => {\n        setIsDialogOpen(false)\n        setEditingVariable(null)\n        setFormData({ label: \"\", value: \"\" })\n        setErrors({})\n    }\n\n    const handleSave = () => {\n        const labelError = validateVariableLabel(formData.label, editingVariable?.key)\n        const valueError = validateVariableValue(formData.value)\n\n        if (labelError || valueError) {\n            setErrors({\n                label: labelError || undefined,\n                value: valueError || undefined,\n            })\n            return\n        }\n\n        if (editingVariable) {\n            setVariables((prev) =>\n                prev.map((v) => (v.key === editingVariable.key ? { ...v, label: formData.label, value: formData.value } : v)),\n            )\n        } else {\n            setVariables((prev) => [\n                ...prev,\n                {\n                    key: generateUUID(6),\n                    label: formData.label,\n                    value: formData.value,\n                },\n            ])\n        }\n\n        handleCloseDialog()\n    }\n\n    const handleDelete = (key: string) => {\n        setVariables((prev) => prev.filter((v) => v.key !== key))\n    }\n\n    useEffect(() => {\n        onChange(variables)\n    }, [variables])\n\n    return (\n        <div className=\"w-full max-w-3xl\">\n            <div className=\"space-y-4\">\n                {/* Header */}\n                <Label className=\"flex items-center bisheng-label\">\n                    {t(`${i18nPrefix}label`)}\n                    {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n                </Label>\n                {/* Add Variable Button */}\n                <Button onClick={() => handleOpenDialog()} variant='outline' className=\"border-primary text-primary mt-2\">\n                    <Plus className=\"size-4 mr-1\" />\n                    {t('addVariable')}\n                </Button>\n\n                {/* Variables List */}\n                {variables.length > 0 && (\n                    <div className=\"space-y-2\">\n                        {/* Table Header */}\n                        <div className=\"grid grid-cols-6 gap-4 text-xs text-muted-foreground\">\n                            <div className=\"col-span-2\">{t('flow.variableName', { ns: 'bs' })}</div>\n                            <div className=\"col-span-3\">{t('variableValue')}</div>\n                        </div>\n\n                        {/* Variable Rows */}\n                        {variables.map((variable) => (\n                            <div\n                                key={variable.key}\n                                className=\"grid grid-cols-6 gap-4 pb-1 rounded hover:bg-muted/50 transition-colors group relative\"\n                                onMouseEnter={() => setHoveredRow(variable.key)}\n                                onMouseLeave={() => setHoveredRow(null)}\n                            >\n                                <TooltipProvider>\n                                    <Tooltip>\n                                        <TooltipTrigger asChild>\n                                            <div className=\"col-span-2\">\n                                                <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0] truncate max-w-full block\">{variable.label}</Badge>\n                                            </div>\n                                        </TooltipTrigger>\n                                        <TooltipContent align=\"start\" className=\"max-w-xs\">\n                                            <p className=\"break-all\">{variable.label}</p>\n                                        </TooltipContent>\n                                    </Tooltip>\n                                </TooltipProvider>\n\n                                <TooltipProvider>\n                                    <Tooltip>\n                                        <TooltipTrigger asChild>\n                                            <div className={`text-sm text-foreground cursor-default truncate overflow-hidden ${hoveredRow === variable.key ? 'col-span-3' : 'col-span-4'}`}>\n                                                {variable.value}\n                                            </div>\n                                        </TooltipTrigger>\n                                        <TooltipContent align=\"start\" className=\"max-w-xs\">\n                                            <p className=\"break-all whitespace-pre-wrap\">{variable.value}</p>\n                                        </TooltipContent>\n                                    </Tooltip>\n                                </TooltipProvider>\n\n                                {/* Action Buttons */}\n                                {hoveredRow === variable.key && (\n                                    <div className=\"absolute -right-1 -top-1 flex\">\n                                        <Button variant=\"ghost\" size=\"icon\" className=\"size-7\" onClick={() => handleOpenDialog(variable)}>\n                                            <PencilLine className=\"size-3.5\" />\n                                        </Button>\n                                        <Button\n                                            variant=\"ghost\"\n                                            size=\"icon\"\n                                            className=\"size-7 hover:text-destructive\"\n                                            onClick={() => handleDelete(variable.key)}\n                                        >\n                                            <MinusCircle className=\"size-3.5\" />\n                                        </Button>\n                                    </div>\n                                )}\n                            </div>\n                        ))}\n                    </div>\n                )}\n            </div>\n\n            {/* Add/Edit Dialog */}\n            <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>\n                <DialogContent className=\"sm:max-w-md\">\n                    <DialogHeader>\n                        <DialogTitle>{editingVariable ? t('editGlobalVariable') : t('addGlobalVariable')}</DialogTitle>\n                    </DialogHeader>\n\n                    <div className=\"space-y-4 py-2\">\n                        {/* Variable Name */}\n                        <div className=\"space-y-2\">\n                            <div className=\"flex items-center gap-2\">\n                                <Label className=\"flex items-center bisheng-label\">\n                                    {t('flow.variableName', { ns: 'bs' })}\n                                    <QuestionTooltip content={t('variableNameRuleTip')} />\n                                </Label>\n                            </div>\n                            <Input\n                                id=\"variable-label\"\n                                placeholder={t('enterVariableName')}\n                                value={formData.label}\n                                onChange={(e) => {\n                                    setFormData({ ...formData, label: e.target.value })\n                                    if (errors.label) {\n                                        setErrors({ ...errors, label: undefined })\n                                    }\n                                }}\n                                className={errors.label ? \"border-destructive\" : \"\"}\n                            />\n                            {errors.label && <p className=\"text-xs text-destructive\">{errors.label}</p>}\n                        </div>\n\n                        {/* Variable Value */}\n                        <div className=\"space-y-2\">\n                            <div className=\"flex items-center gap-2\">\n                                <Label className=\"flex items-center bisheng-label\">\n                                    {t('variableValue')}\n                                    <QuestionTooltip content={t('variableValueRuleTip')} />\n                                </Label>\n                            </div>\n                            <Textarea\n                                id=\"variable-value\"\n                                placeholder={t('enterVariableValue')}\n                                value={formData.value}\n                                onChange={(e) => {\n                                    setFormData({ ...formData, value: e.target.value })\n                                    if (errors.value) {\n                                        setErrors({ ...errors, value: undefined })\n                                    }\n                                }}\n                                className={`min-h-20 max-h-40 resize-none ${errors.value ? \"border-destructive\" : \"\"}`}\n                            />\n                            {errors.value && <p className=\"text-xs text-destructive\">{errors.value}</p>}\n                        </div>\n                    </div>\n\n                    <DialogFooter className=\"gap-2 sm:gap-0\">\n                        <Button variant=\"outline\" onClick={handleCloseDialog}>\n                            {t('cancel')}\n                        </Button>\n                        <Button onClick={handleSave}>{t('confirm')}</Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/GroupInputFile.tsx",
    "content": "import { Switch } from \"@/components/bs-ui/switch\"\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\"\nimport { WorkflowNode } from \"@/types/flow\"\nimport { useMemo, useState, useEffect } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport FileTypeSelect from \"./FileTypeSelect\"\nimport InputItem from \"./InputItem\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\"\nimport { Check } from \"lucide-react\"\n\ntype category = WorkflowNode['group_params'][number]\nexport enum FileParseMode {\n    // 不解析文件\n    KeepRaw = 'keep_raw',\n    // 解析文件\n    ExtractText = 'extract_text'\n}\ninterface Props {\n    nodeId: string,\n    node: WorkflowNode,\n    cate: category,\n    tab?: string,\n    onOutPutChange: (key: string, value: any) => void\n    onStatusChange: (key: string, obj: any) => void\n    onVarEvent: (key: string, obj: any) => void\n    onAddSysPrompt: (type: string) => void\n    onFouceUpdate: () => void\n}\n\nexport default function GroupInputFile({ nodeId, node, cate, tab,\n    onOutPutChange, onAddSysPrompt, onStatusChange, onVarEvent, onFouceUpdate\n}: Props) {\n    const { t } = useTranslation('flow')\n\n    const titleItem = useMemo(() => cate.params.find(item => item.groupTitle), [cate.params])\n    const fileTypeItem = useMemo(() => cate.params.find(item => item.key === 'dialog_file_accept'), [cate.params])\n    const sizeItem = useMemo(() => cate.params.find(item => item.key === 'dialog_files_content_size'), [cate.params])\n    const filePathItem = useMemo(() => cate.params.find(item => item.key === 'dialog_file_paths'), [cate.params])\n    const imageFileItem = useMemo(() => cate.params.find(item => item.key === 'dialog_image_files'), [cate.params])\n    const parsemodeItem = useMemo(() => cate.params.find(item => item.key === 'file_parse_mode'), [cate.params])\n\n    const [open, setOpen] = useState(titleItem.value ?? false)\n    const [fileStrategy, setFileStrategy] = useState<FileParseMode>(parsemodeItem.value)\n    const [selectedFileType, setSelectedFileType] = useState<any>(null)\n    useEffect(() => {\n        // 初始化文件类型\n        if (fileTypeItem?.value) {\n            setSelectedFileType(fileTypeItem.value)\n        }\n\n        // 初始化文件处理策略\n        if (parsemodeItem?.value) {\n            setFileStrategy(parsemodeItem.value)\n        } else {\n            // 如果没有设置策略，根据现有数据判断\n            if (filePathItem?.value && Object.keys(filePathItem.value).length > 0) {\n                setFileStrategy(FileParseMode.KeepRaw)\n            } else {\n                setFileStrategy(FileParseMode.ExtractText)\n            }\n        }\n    }, [fileTypeItem, parsemodeItem, filePathItem])\n\n    // 处理文件策略变化\n    const handleStrategyChange = (value: FileParseMode.ExtractText | FileParseMode.KeepRaw) => {\n        setFileStrategy(value)\n\n        // 更新文件处理策略参数\n        if (parsemodeItem) {\n            parsemodeItem.value = value;\n        }\n\n        // 重置相关变量值\n        if (value === FileParseMode.ExtractText) {\n            // 解析模式：启用解析结果长度配置\n            if (sizeItem) {\n                sizeItem.value = sizeItem.value || 1000;\n            }\n            // 清空文件路径变量\n            if (filePathItem) {\n                filePathItem.value = filePathItem.value || {};\n            }\n            // 清空图片文件变量\n            if (imageFileItem) {\n                imageFileItem.value = imageFileItem.value || {};\n            }\n        } else {\n            // 原始文件模式：设置文件路径变量\n            if (filePathItem) {\n                filePathItem.value = filePathItem.value || {};\n            }\n            // 设置图片文件变量（如果文件类型不是文档）\n            if (imageFileItem && selectedFileType !== 'file') {\n                imageFileItem.value = imageFileItem.value || {};\n            }\n            // 禁用解析结果长度配置\n            if (sizeItem) {\n                sizeItem.value = sizeItem.value || 0;\n            }\n        }\n        if (onFouceUpdate) {\n            onFouceUpdate();\n        }\n    }\n\n    // 处理文件类型变化\n    const handleFileTypeChange = (val: any) => {\n        setSelectedFileType(val)\n\n        // 更新文件类型参数\n        if (fileTypeItem) {\n            fileTypeItem.value = val;\n        }\n\n        // 更新图片文件变量隐藏状态\n        if (imageFileItem) {\n            imageFileItem.hidden = val === 'file';\n\n            // 如果切换到文档类型且当前是原始文件模式，清空图片文件变量\n            if (val === 'file' && fileStrategy === FileParseMode.KeepRaw) {\n                imageFileItem.value = {};\n            }\n            // 如果切换到非文档类型且当前是原始文件模式，设置图片文件变量\n            if (val !== 'file' && fileStrategy === FileParseMode.KeepRaw && !imageFileItem.value) {\n                imageFileItem.value = {};\n            }\n        }\n\n        if (onFouceUpdate) {\n            onFouceUpdate();\n        }\n    }\n\n    // 处理开关变化\n    const handleSwitchToggle = (checked: boolean) => {\n        if (titleItem) {\n            titleItem.value = checked;\n        }\n        setOpen(checked);\n\n        if (onFouceUpdate) {\n            onFouceUpdate();\n        }\n    }\n\n    return <div className=\"px-4 py-2 border-t\">\n        <div className=\"mt-2 mb-3 flex justify-between items-center\">\n            <div className=\"flex gap-1 items-center\">\n                <p className='text-sm font-bold'>{t(`node.${node.type}.${titleItem.key}.label`)}</p>\n                {titleItem.help && <QuestionTooltip content={t(`node.${node.type}.${titleItem.key}.help`)} ></QuestionTooltip>}\n            </div>\n            <Switch\n                className=\"\"\n                checked={open}\n                onCheckedChange={handleSwitchToggle}\n            />\n        </div>\n\n        {/* 只修改开关展开后的内容 */}\n        <div className={!open && 'hidden'}>\n            {/* 上传文件类型 - 始终显示 */}\n            <div className=\"mb-4\">\n                <FileTypeSelect\n                    data={fileTypeItem}\n                    onChange={handleFileTypeChange}\n                    i18nPrefix={`node.${node.type}.${fileTypeItem?.key}.`}\n                />\n            </div>\n\n            {/* 文件处理策略 - 始终显示 */}\n            <div className=\"mb-4\">\n                <div className=\"node-item flex gap-4 items-center mb-4\">\n                    <Label className=\"bisheng-label min-w-28 flex items-center gap-1\">\n                        {t(\"fileProcessingStrategy\")}\n                        <QuestionTooltip\n                            content={\n                                <div className=\"whitespace-pre-line\">\n                                    {t(\"fileProcessingStrategyTip\")}\n                                </div>\n                            }\n                        />\n                    </Label>\n                    <Select value={fileStrategy} onValueChange={handleStrategyChange}>\n                        <SelectTrigger className=\"w-full\">\n                            {fileStrategy === FileParseMode.ExtractText ? t(\"parseFile\") : t(\"notParse\")}\n                        </SelectTrigger>\n                        <SelectContent className=\"\">\n                            {[\n                                { value: FileParseMode.ExtractText, label: t(\"parseFile\") },\n                                { value: FileParseMode.KeepRaw, label: t(\"notParse\") }\n                            ].map((option) => (\n                                <div\n                                    key={option.value}\n                                    data-focus={fileStrategy === option.value}\n                                    className=\"flex justify-between w-full select-none items-center mb-1 last:mb-0 rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n                                    onClick={() => handleStrategyChange(option.value as FileParseMode.ExtractText | FileParseMode.KeepRaw)}\n                                >\n                                    <span className=\"w-64 overflow-hidden text-ellipsis\">\n                                        {option.label}\n                                    </span>\n                                    {fileStrategy === option.value && <Check className=\"h-4 w-4\" />}\n                                </div>\n                            ))}\n                        </SelectContent>\n                    </Select>\n                </div>\n            </div>\n\n            {/* 动态输出变量 */}\n            <div className=\"space-y-3\">\n                {fileStrategy === FileParseMode.ExtractText ? (\n                    // 情况3：选择解析 - 显示解析相关配置\n                    <>\n                        {sizeItem && (\n                            <InputItem\n                                char\n                                type='number'\n                                data={sizeItem}\n                                onChange={(val) => {\n                                    sizeItem.value = val;\n                                    // onStatusChange(sizeItem.key, { param: sizeItem });\n                                    if (onFouceUpdate) onFouceUpdate();\n                                }}\n                                i18nPrefix={`node.${node.type}.${sizeItem.key}.`}\n                            />\n                        )}\n\n                        <div className=\"flex justify-between items-center\">\n                            <Label className=\"bisheng-label\">\n                                {t(\"fileParseResult\")}\n                            </Label>\n                            <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">\n                                dialog_files_content\n                            </Badge>\n                        </div>\n                    </>\n                ) : (\n                    // 选择不解析 - 根据文件类型显示不同变量\n                    <>\n                        {/* 图片文件 - 仅当文件类型不是文档时显示 */}\n                        {selectedFileType !== 'file' && imageFileItem && (\n                            <div className=\"flex justify-between items-center\">\n                                <div className=\"flex items-center gap-1\">\n                                    <Label className=\"bisheng-label\">\n                                        {t(`node.${node.type}.${imageFileItem.key}.label`)}\n                                    </Label>\n                                    <QuestionTooltip content={t(\"extractImages\")} />\n                                </div>\n                                <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">\n                                    dialog_image_files\n                                </Badge>\n                            </div>\n                        )}\n\n                        {/* 文件路径 - 始终显示 */}\n                        <div className=\"flex justify-between items-center\">\n                            <div className=\"flex items-center gap-1\">\n                                <Label className=\"bisheng-label\">\n                                    {t(\"filePath\")}\n                                </Label>\n                                <QuestionTooltip content={t(\"storeUploadFiles\")} />\n                            </div>\n                            <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">\n                                dialog_file_paths\n                            </Badge>\n                        </div>\n                    </>\n                )}\n            </div>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/HistoryNumItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\"; // 引入国际化\n\nexport default function HistoryNumItem({ data, onChange, i18nPrefix }) {\n    const { t } = useTranslation('flow'); // 使用国际化\n    const [value, setValue] = useState(data.value);\n\n    return (\n        <div className=\"flex items-center mb-4 nodrag -nopan\">\n            <Label className=\"bisheng-label\">{t('recent')}</Label> {/* 最近 */}\n            <Input\n                type=\"number\"\n                min={0}\n                boxClassName=\"w-20 mx-1\"\n                className=\"h-5\"\n                value={value}\n                onKeyDown={(e) => {\n                    ['-', 'e', '+'].includes(e.key) && e.preventDefault();\n                }}\n                onChange={(e) => {\n                    const num = Number(e.target.value);\n                    if (num >= 0) {\n                        onChange(num);\n                        setValue(num);\n                    }\n                }}\n            />\n            <Label className=\"bisheng-label\">{t('chatRecords')}</Label> {/* 条聊天记录 */}\n            <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0] ml-auto\">\n                {data.key}\n            </Badge>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ImagePromptItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { Switch } from \"@/components/bs-ui/switch\"\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\"\nimport { isVarInFlow } from \"@/util/flowUtils\"\nimport { ChevronDown, X } from \"lucide-react\"\nimport React, { useCallback, useEffect, useState } from \"react\"\nimport useFlowStore from \"../../flowStore\"\nimport SelectVar from \"./SelectVar\"\nimport { useTranslation } from \"react-i18next\"\n\nexport default function ImagePromptItem({ nodeId, data, onChange, onVarEvent, i18nPrefix }) {\n    // value ''或[] 则认为open为false\n    const [open, setOpen] = React.useState(data.open || false)\n    const [value, setValue] = React.useState(() => data.value || []);\n    const [error] = React.useState(false);\n    const { t } = useTranslation('flow')\n\n    const updateValue = (newValues) => {\n        setValue(newValues);\n        onChange(newValues);\n    };\n\n    const handleDelete = (val) => updateValue(value.filter(el => el !== val));\n    const handleChange = (item, v) => {\n        const itemVar = `${item.id}.${v.value}`;\n        if (!value.includes(itemVar)) {\n            if (!data.varZh) data.varZh = {}; // 确保 data.varZh 已初始化\n            data.varZh[itemVar] = `${item.name}/${v.label}`;\n            const newValues = [...value, itemVar];\n            updateValue(newValues);\n        }\n    };\n\n    const handleVarChange = useCallback((checked, items) => {\n        const newValues = value.filter(el => !items.some(({ node, variable }) => `${node.id}.${variable.value}` === el));\n        if (!checked) return updateValue(newValues);\n\n        items.map(({ node, variable }) => {\n            const itemVar = `${node.id}.${variable.value}`;\n            if (!data.varZh) data.varZh = {};\n            data.varZh[itemVar] = `${node.name}/${variable.label}`;\n            newValues.push(itemVar);\n        })\n        updateValue(newValues);\n    }, [value]);\n\n    // 校验变量是否可用\n    const { flow } = useFlowStore();\n    const [errorKeys, setErrorKeys] = useState<string[]>([])\n    const validateVarAvailble = () => {\n        let error = ''\n        const _errorKeys = []\n        value.map(key => {\n            const _error = isVarInFlow(nodeId, flow.nodes, key, data.varZh?.[key]);\n            if (_error) {\n                _errorKeys.push(key)\n                error = _error\n            }\n        })\n        setErrorKeys(_errorKeys)\n        return Promise.resolve(error);\n    };\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [data, value]);\n\n\n    return <div className='node-item mb-4' data-key={data.key}>\n        <div className=\" flex justify-between items-center\">\n            <Label className=\"flex items-center bisheng-label\">\n                {t(`${i18nPrefix}label`)}\n                {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            <Switch checked={open} onCheckedChange={(bln) => {\n                setOpen(bln)\n                data.open = bln\n                !bln && updateValue([])\n            }} />\n        </div>\n        {open && <SelectVar\n            findInputFile\n            nodeId={nodeId}\n            itemKey={data.key}\n            multip\n            value={value}\n            onSelect={handleChange}\n            onCheck={handleVarChange}\n        >\n            <div className={`${error && 'border-red-500'} no-drag nowheel mt-2 group flex min-h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400`}>\n                <div className=\"flex flex-wrap size-full max-h-32 overflow-y-auto\">\n                    {value.length ? value.map(item => <Badge\n                        onPointerDown={(e) => e.stopPropagation()}\n                        key={item}\n                        className={`flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] ${errorKeys.includes(item) && 'bg-red-100 border-red-600'}`}>\n                        {data.varZh?.[item]}\n                        <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(item)}></X>\n                    </Badge>\n                    ) : <span className=\"text-gray-400 mt-0.5\">{data.placeholder && t(`${i18nPrefix}placeholder`)}</span>}\n                </div>\n                <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n            </div>\n        </SelectVar>\n        }\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/InputFormItem.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { isVarInFlow } from \"@/util/flowUtils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { ChevronsDown, CloudUpload, Type } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../../flowStore\";\nimport DragOptions from \"./DragOptions\";\nimport FileTypeSelect from \"./FileTypeSelect\";\nimport InputItem from \"./InputItem\";\nimport VarInput from \"./VarInput\";\nimport { t } from \"i18next\";\nimport { generateUUID } from \"@/utils\";\n\nconst enum FormType {\n    Text = \"text\",\n    Select = \"select\",\n    File = \"file\",\n}\n\nconst names = {\n    [FormType.Text]: \"text_input\",\n    [FormType.Select]: \"category\",\n    [FormType.File]: \"file\",\n}\n\n// 文件处理策略枚举\nconst enum FileProcessingStrategy {\n    TempKnowledge = \"ingest_to_temp_kb\",  // 存入临时知识库\n    ParseContent = \"extract_text\",    // 解析文件内容\n    OriginalFile = \"keep_raw\",    // 不解析（原始文件）\n}\n\n\nfunction Form({ nodeId, nodeData, initialData, onSubmit, onCancel, existingOptions }) {\n    const { t } = useTranslation('flow');\n    const namePlaceholders = {\n        [FormType.Text]: t(\"nameExample\"), // 例如\"姓名\"\n        [FormType.Select]: t(\"categoryExample\"), // 例如\"保险类别\"\n        [FormType.File]: t(\"uploadExample\"), // 例如\"请上传去年财报\"\n    };\n    const processingStrategyOptions = useMemo(() => [\n        { value: FileProcessingStrategy.ParseContent, label: t(\"parseFile\") },\n        { value: FileProcessingStrategy.TempKnowledge, label: t(\"temporaryKnowledgeBase\") },\n        { value: FileProcessingStrategy.OriginalFile, label: t(\"notParse\") },\n    ], [t]);\n    const [defaultValue] = useState(initialData?.value || \"\");\n    const [formData, setFormData] = useState({\n        formType: FormType.Text,\n        displayName: \"\",\n        variableName: \"\",\n        filecontent: '',\n        filepath: '',\n        fileType: 'all',\n        fileContentSize: 15000,\n        imageFile: '',\n        isMultiple: true, // default value for multiple file upload\n        isRequired: true,\n        allowMultiple: false,  // Allow multiple file uploads\n        options: [],  // Options for Select input\n        processingStrategy: FileProcessingStrategy.ParseContent, // 文件处理策略\n    });\n    const [errors, setErrors] = useState<any>({});\n    const editRef = useRef(false); // 编辑状态\n    const oldFormTypeRef = useRef('')\n    const displayNameRef = useRef({ // 记忆变量名\n        [FormType.Text]: '',\n        [FormType.Select]: '',\n        [FormType.File]: '',\n    });\n\n    const oldVarNameRef = useRef(\"\");\n    const oldcontentNameRef = useRef(\"\");\n    const oldPathNameRef = useRef(\"\");\n    const oldImageFileRef = useRef(\"\");\n    const oldStrategyRef = useRef(\"\");\n\n    useEffect(() => {\n        // === 每次弹窗打开都先重置 ===\n        editRef.current = false;\n        oldFormTypeRef.current = '';\n        oldVarNameRef.current = '';\n        oldcontentNameRef.current = '';\n        oldPathNameRef.current = '';\n        oldImageFileRef.current = '';\n        oldStrategyRef.current = '';\n\n        if (initialData) {\n            const {\n                type: formType,\n                value: displayName,\n                key: variableName,\n                required: isRequired,\n                multiple: allowMultiple,\n                file_content: filecontent,\n                file_type: fileType,\n                file_path: filepath,\n                file_content_size: fileContentSize = 15000,\n                image_file: imageFile,\n                file_parse_mode: processingStrategy,\n                options = [],\n            } = initialData;\n\n            setFormData({\n                formType,\n                displayName,\n                variableName,\n                isRequired,\n                allowMultiple,\n                options,\n                filecontent,\n                fileType,\n                filepath,\n                fileContentSize: fileContentSize || 15000,\n                imageFile,\n                isMultiple: allowMultiple,\n                processingStrategy: processingStrategy || FileProcessingStrategy.TempKnowledge,\n            });\n\n            editRef.current = true;\n            oldFormTypeRef.current = formType;\n            oldVarNameRef.current = variableName;\n            oldcontentNameRef.current = filecontent;\n            oldPathNameRef.current = filepath;\n            oldImageFileRef.current = imageFile;\n            oldStrategyRef.current = processingStrategy;\n        }\n    }, [initialData]);\n\n\n    // 变量重命名\n    useEffect(() => {\n        if (initialData) return\n        // 初始化变量名\n        let initialVarName = names[formData.formType];\n        let initialFileContent = 'file_content'\n        let initialFilePath = 'file_path'\n        let initialFileImage = 'image_file'\n        let counter = 1;\n        let initialFileContentCounter = 1;\n        let initialFilePathCounter = 1;\n        let initialFileImageCounter = 1;\n        while (existingOptions?.some(opt => opt.file_parse_mode === \"ingest_to_temp_kb\" && opt.type === \"file\" && opt.key === initialVarName)) {\n            counter += 1;\n            initialVarName = `${names[formData.formType]}${counter}`;\n        }\n        while (existingOptions?.some(opt => opt.file_parse_mode !== \"ingest_to_temp_kb\" && opt.file_parse_mode && opt.key === initialVarName)) {\n            counter += 1;\n            initialVarName = `${names[formData.formType]}${counter}`;\n        }\n        const fileOtions = existingOptions?.filter(opt => opt.type === FormType.File);\n        while (fileOtions?.some(opt => opt.file_content === initialFileContent)) {\n            initialFileContentCounter += 1;\n            initialFileContent = `file_content${initialFileContentCounter}`;\n        }\n\n        while (fileOtions?.some(opt => opt.file_path === initialFilePath)) {\n            initialFilePathCounter += 1;\n            initialFilePath = `file_path${initialFilePathCounter}`;\n        }\n\n        while (fileOtions?.some(opt => opt.image_file === initialFileImage)) {\n            initialFileImageCounter += 1;\n            initialFileImage = `image_file${initialFileImageCounter}`;\n        }\n\n        // 变量重命名\n        setFormData((prevData) => ({\n            ...prevData,\n            variableName: initialVarName,\n            filecontent: initialFileContent,\n            filepath: initialFilePath,\n            imageFile: initialFileImage\n        }));\n    }, [initialData, existingOptions, formData.formType])\n\n    const validateForm = () => {\n        const newErrors: any = {};\n\n        if (!formData.displayName.trim()) {\n            newErrors.displayName = t(\"displayNameRequired\");\n        } else if (formData.displayName.length > 50) {\n            newErrors.displayName = t(\"displayNameTooLong\");\n        }\n\n        if (!formData.variableName.trim()) {\n            newErrors.variableName = t(\"variableNameRequired\");\n        } else if (formData.variableName.length > 50) {\n            newErrors.variableName = t(\"variableNameTooLong\");\n        } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.variableName)) {\n            newErrors.variableName = t(\"variableNameInvalid\");\n        } else if (\n            existingOptions?.some(opt => opt.key === formData.variableName) &&\n            formData.variableName !== oldVarNameRef.current\n        ) {\n            // newErrors.variableName = t(\"variableNameExists\");\n        }\n\n        if (formData.formType === FormType.Select && !formData.options.length) {\n            newErrors.options = t(\"optionsRequired\");\n        }\n\n        // Validation for file upload variables (if multiple files are allowed)\n        if (formData.formType === FormType.File) {\n            // 根据文件类型和处理策略验证不同的字段\n            if (formData.fileType === 'all') {\n                // 全部类型文件\n                if (formData.processingStrategy === FileProcessingStrategy.TempKnowledge) {\n                    // 存入临时知识库 - 需要验证 variableName\n                    // 上面已经验证过了\n                } else if (formData.processingStrategy === FileProcessingStrategy.ParseContent) {\n                    // 解析文件内容 - 验证解析结果变量名称和长度\n                    if (!formData.filecontent.trim()) {\n                        newErrors.filecontent = \"variableNameRequired\";\n                    } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.filecontent)) {\n                        newErrors.filecontent = \"variableNameInvalid\";\n                    } else if (formData.filecontent.length > 50) {\n                        newErrors.filecontent = t(\"variableNameTooLong\");\n                    } else if (\n                        existingOptions?.some(opt => opt.type === 'file'\n                            && opt.file_content === formData.filecontent)\n                        && formData.filecontent !== oldcontentNameRef.current\n                    ) {\n                        newErrors.filecontent = t(\"variableNameExists\");\n                    }\n                } else if (formData.processingStrategy === FileProcessingStrategy.OriginalFile) {\n                    // 不解析（原始文件）- 验证图片变量名称和文件路径变量名称\n                    const _error = validateImageFileVariableName(formData.imageFile, existingOptions);\n                    if (_error) {\n                        newErrors.imageFile = _error\n                    }\n\n                    // 验证文件路径变量名称\n                    if (!formData.filepath.trim()) {\n                        newErrors.filepath = t(\"variableNameRequired\");\n                    } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.filepath)) {\n                        newErrors.filepath = t(\"variableNameInvalid\");\n                    } else if (formData.filepath.length > 50) {\n                        newErrors.filepath = t(\"variableNameTooLong\");\n                    } else if (\n                        existingOptions?.some(opt => opt.type === 'file'\n                            && opt.file_path === formData.filepath)\n                        && formData.filepath !== oldPathNameRef.current\n                    ) {\n                        newErrors.filepath = t(\"variableNameExists\");\n                    }\n                }\n            } else {\n                // 文档类型文件\n                if (formData.processingStrategy === FileProcessingStrategy.OriginalFile) {\n                    if (!formData.filepath.trim()) {\n                        newErrors.filepath = t(\"variableNameRequired\");\n                    } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.filepath)) {\n                        newErrors.filepath = t(\"variableNameInvalid\");\n                    } else if (formData.filepath.length > 50) {\n                        newErrors.filepath = t(\"variableNameTooLong\");\n                    } else if (\n                        existingOptions?.some(opt => opt.type === 'file'\n                            && opt.file_path === formData.filepath)\n                        && formData.filepath !== oldPathNameRef.current\n                    ) {\n                        newErrors.filepath = t(\"variableNameExists\");\n                    }\n                }\n            }\n        }\n\n\n        setErrors(newErrors);\n        return Object.keys(newErrors).length === 0;\n    };\n\n    const validateImageFileVariableName = (varName, existingOptions) => {\n        const errors = [];\n\n        // 1. 非空检查\n        if (!varName || !varName.trim()) {\n            return t('variableNameCannotBeEmpty');\n        }\n\n        // 2. 不能以数字开头\n        if (/^\\d/.test(varName)) {\n            return t('variableNameCannotStartWithNumber');\n        }\n\n        // 3. 只能包含英文字符、数字和下划线\n        if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(varName)) {\n            return t('variableNameContainsInvalidCharacters');\n        }\n\n        // 4. 长度不超过50\n        if (varName.length > 50) {\n            return t('variableNameTooLong');\n        }\n\n        // 5. 不能重复\n        if (existingOptions?.some(opt => opt.type === 'file'\n            && opt.image_file === varName)\n            && varName !== oldImageFileRef.current) {\n            return t('variableNameAlreadyExists');\n        }\n\n        return '';\n    };\n\n    const handleFormSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(formData);\n        }\n    };\n\n    const updateOptions = (options) => {\n        setFormData((prevData) => ({\n            ...prevData,\n            options,\n        }));\n    };\n\n    // if the form type hasn't changed, it keeps the variable name as it was. Otherwise, it generates a new unique variable name.\n    const handleChangeFormType = (formType: FormType) => {\n        displayNameRef.current[formData.formType] = formData.displayName;\n        const displayName = displayNameRef.current[formType] || '';\n\n        setFormData(prev => {\n            // 编辑态保持旧变量名，否则生成唯一变量名\n            let variableName = prev.variableName;\n\n            if (editRef.current) {\n                if (oldFormTypeRef.current === formType) {\n                    variableName = oldVarNameRef.current;\n                } else {\n                    // 新变量名生成逻辑\n                    let counter = 1;\n                    let baseName = names[formType];\n                    let name = baseName;\n                    while (existingOptions?.some(opt => opt.key === name)) {\n                        counter += 1;\n                        name = `${baseName}${counter}`;\n                    }\n                    variableName = name;\n                }\n            } else {\n                // 新建模式生成唯一变量名\n                let counter = 1;\n                let baseName = names[formType];\n                let name = baseName;\n                while (existingOptions?.some(opt => opt.key === name)) {\n                    counter += 1;\n                    name = `${baseName}${counter}`;\n                }\n                variableName = name;\n            }\n\n            return { ...prev, formType, displayName, variableName };\n        });\n\n        setErrors({});\n    };\n\n\n    // 处理文件类型变化\n    const handleFileTypeChange = (fileType) => {\n        setFormData({ ...formData, fileType });\n        // 清空相关错误\n        setErrors({});\n    }\n\n    // 处理文件处理策略变化\n    const handleProcessingStrategyChange = (strategy: FileProcessingStrategy) => {\n        setErrors({});\n\n        setFormData(prev => {\n            const updates: any = { processingStrategy: strategy };\n            const fileOptions = existingOptions?.filter(opt => opt.type === FormType.File) || [];\n            const isEdit = editRef.current;\n\n            // 临时知识库策略\n            if (strategy === FileProcessingStrategy.TempKnowledge) {\n                let name = 'file';\n                let counter = 1;\n                while (fileOptions.some(opt => opt.key === name)) {\n                    counter += 1;\n                    name = `file${counter}`;\n                }\n                updates.variableName = name;\n            }\n\n            if (isEdit && prev.processingStrategy === FileProcessingStrategy.TempKnowledge && strategy !== FileProcessingStrategy.TempKnowledge) {\n                const uuid = `file_${generateUUID(6)}`;\n                updates.variableName = uuid;\n            }\n\n            // 解析文件内容策略\n            if (strategy === FileProcessingStrategy.ParseContent && (!prev.filecontent || prev.filecontent.trim() === '')) {\n                let name = 'file_content';\n                let counter = 1;\n                while (fileOptions.some(opt => opt.file_content === name)) {\n                    counter += 1;\n                    name = `file_content${counter}`;\n                }\n                updates.filecontent = name;\n            }\n\n            // 不解析原始文件策略\n            if (strategy === FileProcessingStrategy.OriginalFile) {\n                if (!prev.filepath || prev.filepath.trim() === '') {\n                    let name = 'file_path';\n                    let counter = 1;\n                    while (fileOptions.some(opt => opt.file_path === name)) {\n                        counter += 1;\n                        name = `file_path${counter}`;\n                    }\n                    updates.filepath = name;\n                }\n\n                if ((prev.fileType === 'all' || prev.fileType === 'image') && (!prev.imageFile || prev.imageFile.trim() === '')) {\n                    let name = 'image_file';\n                    let counter = 1;\n                    while (fileOptions.some(opt => opt.image_file === name)) {\n                        counter += 1;\n                        name = `image_file${counter}`;\n                    }\n                    updates.imageFile = name;\n                }\n            }\n\n            return { ...prev, ...updates };\n        });\n    };\n    // 获取可用的文件处理策略选项\n    const getAvailableProcessingStrategies = () => {\n        return processingStrategyOptions;\n\n    };\n\n    // 检查是否需要显示某个字段\n    const shouldShowField = (fieldType) => {\n        if (formData.formType !== FormType.File) return false;\n\n        if (formData.fileType === 'all' || formData.fileType === 'image') {\n            // 全部类型和图片类型\n            switch (fieldType) {\n                case 'tempKnowledge':\n                    return formData.processingStrategy === FileProcessingStrategy.TempKnowledge;\n                case 'parseContent':\n                    return formData.processingStrategy === FileProcessingStrategy.ParseContent;\n                case 'imageFile':\n                    // 全部类型和图片类型的不解析需要显示图片变量\n                    return formData.processingStrategy === FileProcessingStrategy.OriginalFile;\n                case 'filePath':\n                    // 全部类型和图片类型的不解析需要显示文件路径\n                    return formData.processingStrategy === FileProcessingStrategy.OriginalFile;\n                default:\n                    return false;\n            }\n        } else {\n            // 文档类型文件\n            switch (fieldType) {\n                case 'tempKnowledge':\n                    return formData.processingStrategy === FileProcessingStrategy.TempKnowledge;\n                case 'parseContent':\n                    return formData.processingStrategy === FileProcessingStrategy.ParseContent;\n                case 'filePath':\n                    // 文档类型的不解析只显示文件路径\n                    return formData.processingStrategy === FileProcessingStrategy.OriginalFile;\n                case 'imageFile':\n                    // 文档类型不显示图片变量名称\n                    return false;\n                default:\n                    return false;\n            }\n        }\n    }\n\n    // var check\n    const checkVarFuncRef = useRef(null);\n    useEffect(() => {\n        if (initialData && checkVarFuncRef.current && formData.formType === FormType.Text) {\n            checkVarFuncRef.current();\n        }\n    }, [formData.formType, initialData])\n\n    // text form\n    const InputForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            {/* <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            /> */}\n            <VarInput\n                mini\n                key={formData.variableName}\n                label={''}\n                itemKey={''}\n                nodeId={nodeId}\n                paramItem={nodeData}\n                value={defaultValue}\n                placeholder={namePlaceholders[formData.formType]}\n                onChange={(val) => setFormData({ ...formData, displayName: val })}\n                onVarEvent={(func) => checkVarFuncRef.current = func}\n            >\n            </VarInput>\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"variableName\")}\n                <QuestionTooltip content={t(\"variableNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                id=\"variableName\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.variableName}\n                onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n            />\n            {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n    </div>\n    // select from \n    const SelectForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            />\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"variableName\")}\n                <QuestionTooltip content={t(\"variableNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                id=\"variableName\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.variableName}\n                onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n            />\n            {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n        </div>\n        <div>\n            <Label className=\"bisheng-label\">{t(\"options\")}</Label>\n            <DragOptions edit scroll options={formData.options} onChange={updateOptions} />\n            {errors.options && <p className=\"text-red-500 text-sm\">{errors.options}</p>}\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('allowMultipleSelect')}</Label>\n            <Switch\n                checked={formData.allowMultiple}\n                onCheckedChange={(checked) => setFormData({ ...formData, allowMultiple: checked })}\n            />\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n    </div>\n    // file form \n    const FileForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            />\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('allowUploadMultipleFiles')}</Label>\n            <Switch\n                checked={formData.isMultiple}\n                onCheckedChange={(checked) => setFormData({ ...formData, isMultiple: checked })}\n            />\n        </div>\n\n        <FileTypeSelect\n            data={{\n                label: t('uploadFileTypes'),\n                value: formData.fileType,\n            }}\n            onChange={handleFileTypeChange}\n        />\n\n        {/* 文件处理策略选择 - 下拉框 */}\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"fileProcessingStrategy\")}\n                <QuestionTooltip\n                    content={\n                        <div className=\"whitespace-pre-line\">\n                            {t(\"dialogProcessingStrategyTip\")}\n                        </div>\n                    }\n                />\n            </Label>\n            <Select\n                value={formData.processingStrategy}\n                onValueChange={handleProcessingStrategyChange}\n            >\n                <SelectTrigger className=\"mt-2\">\n                    <SelectValue placeholder={t(\"selectFile\")} />\n                </SelectTrigger>\n                <SelectContent>\n                    {getAvailableProcessingStrategies().map((option) => (\n                        <SelectItem key={option.value} value={option.value}>\n                            {option.label}\n                        </SelectItem>\n                    ))}\n                </SelectContent>\n            </Select>\n        </div>\n\n        {/* 存入临时知识库 - 显示临时知识库名称 */}\n        {shouldShowField('tempKnowledge') && (\n            <div>\n                <Label className=\"flex items-center bisheng-label\">\n                    {t('tempKnowledgeBaseName')}\n\n                    <QuestionTooltip content={t('tempKnowledgeBaseNameTip')} />\n                </Label>\n                <Input\n                    className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                    id=\"variableName\"\n                    placeholder={t(\"enterVariableName\")}\n                    value={formData.variableName}\n                    onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n                />\n                {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n            </div>\n        )}\n\n        {/* 解析文件内容 - 显示解析结果长度上限和解析结果变量名称 */}\n        {shouldShowField('parseContent') && (\n            <>\n                <InputItem\n                    type='number'\n                    char\n                    linefeed\n                    label={t('parseLengthLimit')}\n                    data={{\n                        min: 0,\n                        value: formData.fileContentSize,\n                    }}\n                    onChange={(fileContentSize) => setFormData({ ...formData, fileContentSize })}\n                />\n                <div>\n                    <Label className=\"flex items-center bisheng-label\">\n                        {t(\"parseResultName\")}\n                        <QuestionTooltip content={t(\"storeVariableName\")} />\n                    </Label>\n                    <Input\n                        className={`mt-2 ${errors.filecontent ? \"border-red-500\" : \"\"}`}\n                        id=\"filecontent\"\n                        placeholder={t(\"enterVariableName\")}\n                        value={formData.filecontent}\n                        onChange={(e) => setFormData({ ...formData, filecontent: e.target.value })}\n                    />\n                    {errors.filecontent && <p className=\"text-red-500 text-sm\">{errors.filecontent}</p>}\n                </div>\n                {errors.fileContentSize && <p className=\"text-red-500 text-sm\">{errors.fileContentSize}</p>}\n            </>\n        )}\n\n        {/* 不解析（原始文件） - 显示图片变量名称和文件路径变量名称（仅全部类型） */}\n        {shouldShowField('imageFile') && (\n            <div>\n                <Label className=\"flex items-center bisheng-label\">\n                    {t(\"imageVariableName\")}\n                    <QuestionTooltip content={t('extractImages')} />\n                </Label>\n                <Input\n                    className={`mt-2 ${errors.imageFile ? \"border-red-500\" : \"\"}`}\n                    id=\"imageFile\"\n                    placeholder={t(\"enterVariableName\")}\n                    value={formData.imageFile}\n                    onChange={(e) => setFormData({ ...formData, imageFile: e.target.value })}\n                />\n                {errors.imageFile && <p className=\"text-red-500 text-sm\">{errors.imageFile}</p>}\n            </div>\n        )}\n\n        {/* 文件路径变量名称（全部类型的原始文件，或文档类型的原始文件） */}\n        {shouldShowField('filePath') && (\n            <div>\n                <Label className=\"flex items-center bisheng-label\">\n                    {t(\"filePathName\")}\n                    <QuestionTooltip content={t('storeUploadFiles')} />\n                </Label>\n                <Input\n                    className={`mt-2 ${errors.filepath ? \"border-red-500\" : \"\"}`}\n                    id=\"filepath\"\n                    placeholder={t(\"enterVariableName\")}\n                    value={formData.filepath}\n                    onChange={(e) => setFormData({ ...formData, filepath: e.target.value })}\n                />\n                {errors.filepath && <p className=\"text-red-500 text-sm\">{errors.filepath}</p>}\n            </div>\n        )}\n    </div>;\n\n    return (\n        <form onSubmit={handleFormSubmit} className=\"space-y-4\">\n            <div>\n                <Label className=\"bisheng-label\">{t(\"formType\")}</Label>\n                <div className=\"flex gap-4 justify-between mx-6 mt-2\">\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.Text ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.Text)}\n                    >\n                        <Type size={18} />\n                        {t(\"textInput\")}\n                    </Button>\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.Select ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.Select)}\n                    >\n                        <ChevronsDown size={18} />\n                        {t(\"dropdown\")}\n                    </Button>\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.File ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.File)}\n                    >\n                        <CloudUpload size={18} />\n                        {t(\"file\")}\n                    </Button>\n                </div>\n            </div>\n\n            {formData.formType === FormType.Text && (InputForm)}\n            {formData.formType === FormType.Select && (SelectForm)}\n            {formData.formType === FormType.File && (FileForm)}\n\n            <div className=\"flex space-x-4 justify-end\">\n                <Button className=\"px-8\" type=\"button\" variant=\"outline\" onClick={onCancel}>\n                    {t(\"cancel\")}\n                </Button>\n                <Button className=\"px-8\" type=\"submit\">\n                    {t(\"confirm\")}\n                </Button>\n            </div>\n        </form>\n    );\n}\n\n// node input form item\nexport default function InputFormItem({ data, nodeId, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const { t } = useTranslation('flow');\n    const [isOpen, setIsOpen] = useState(false);\n    const [editKey, setEditKey] = useState(\"\"); // 控制编辑模式\n    const [foucsUpdate, setFoucsUpdate] = useState(false);\n    const [error, setError] = useState(false);\n\n    // 打开弹窗并重置状态\n    const handleOpen = () => {\n        setEditKey(\"\"); // 新建时不设置为编辑模式\n        setIsOpen(true);\n    };\n\n    // 关闭弹窗\n    const handleClose = () => {\n        setIsOpen(false);\n    };\n\n    // 提交表单数据，添加或更新表单项\n    const scrollRef = useRef(null);\n    const handleSubmit = (_data) => {\n        const {\n            allowMultiple,\n            isMultiple,\n            displayName: value,\n            formType: type,\n            isRequired: required,\n            options,\n            variableName,\n            filecontent: file_content,\n            filepath: file_path,\n            fileType: file_type,\n            fileContentSize: file_content_size,\n            imageFile: image_file,\n            processingStrategy: file_parse_mode\n        } = _data;\n        let key\n        if (type === FormType.File) {\n            if (file_parse_mode === FileProcessingStrategy.TempKnowledge) {\n                // 临时知识库：key 永远等于 variableName\n                key = variableName;\n            } else {\n                // 非临时策略\n                key = editKey || `file_${generateUUID(6)}`;\n            }\n        } else {\n            key = variableName || `file_${generateUUID(6)}`;\n        }\n        const multiple = type === FormType.File ? isMultiple : allowMultiple;\n\n        // 根据文件类型和处理策略清理字段\n        let cleanedImageFile = image_file;\n        let cleanedFileContent = file_content;\n        let cleanedFilePath = file_path;\n        let cleanedFileContentSize = file_content_size;\n\n        if (type === FormType.File) {\n            if (file_type === 'file') {\n                // 文档类型：清空图片相关字段\n                cleanedImageFile = '';\n            }\n\n            // 根据处理策略清理字段\n            if (file_parse_mode === FileProcessingStrategy.TempKnowledge) {\n                // 临时知识库：只保留key，清空其他文件相关字段\n                cleanedFileContent = '';\n                cleanedFilePath = '';\n                cleanedImageFile = '';\n                // cleanedFileContentSize = 0;\n            } else if (file_parse_mode === FileProcessingStrategy.ParseContent) {\n                // 解析文件内容：清空图片和路径字段\n                cleanedImageFile = '';\n                cleanedFilePath = '';\n                // fileContentSize 应该保留\n            } else if (file_parse_mode === FileProcessingStrategy.OriginalFile) {\n                // 不解析：清空解析内容字段\n                cleanedFileContent = '';\n                // cleanedFileContentSize = 0;\n            }\n        }\n\n        // 创建新的表单项对象\n        const newItem = {\n            key,\n            type,\n            value,\n            required,\n            multiple,\n            options,\n            file_content: cleanedFileContent,\n            file_path: cleanedFilePath,\n            file_type,\n            file_content_size: cleanedFileContentSize,\n            image_file: cleanedImageFile,\n            file_parse_mode\n        };\n\n        let newValue;\n\n        if (editKey) {\n            // 编辑模式：更新表单项\n            newValue = data.value.map((opt) =>\n                opt.key === editKey ? newItem : opt\n            );\n        } else {\n            // 新建模式：添加表单项\n            newValue = [...data.value, newItem];\n            setTimeout(() => {\n                scrollRef.current?.scrollTo(0, scrollRef.current?.scrollHeight); // 滚动到底部\n            }, 0);\n        }\n\n        // 通过 onChange 回调更新数据\n        onChange(newValue);\n        setFoucsUpdate(!foucsUpdate);\n        setIsOpen(false); // 关闭弹窗\n    };\n\n    // 当编辑 DragOptions 中的表单项时打开弹窗\n    const handleEditClick = (index, option) => {\n        const item = data.value[index];\n        setEditKey(item.key); // 设置为编辑模式\n        setIsOpen(true); // 打开弹窗\n    };\n\n    // 更新 DragOptions 的顺序变化\n    const handleOptionsChange = (newOptions) => {\n        const newValue = newOptions\n            .map((el) => data.value.find((op) => op.key === el.key))\n            .filter(Boolean);\n\n        // 通过 onChange 更新数据\n        onChange(newValue);\n    };\n\n    // 校验逻辑\n    useEffect(() => {\n        onValidate(() => {\n            if (!data.value.length) {\n                setError(true);\n                return t(\"atLeastOneFormItem\"); // \"至少添加一个表单项\"\n            }\n            setError(false);\n            return false;\n        });\n\n        return () => onValidate(() => { });\n    }, [data.value]);\n\n    const options = useMemo(() => {\n        const _options = cloneDeep(data.value)\n        return _options.map((el) => {\n            // cn\n            if (el.type === 'text') {\n                el.value = el.value.replace(/{{#(.*?)#}}/g, (a, key) => {\n                    return data.varZh?.[key] || key;\n                })\n            }\n\n            // 构建变量列表\n            let variableList = el.key;\n\n            if (el.type === 'file') {\n                // 文件类型需要显示所有相关变量\n                const variableParts = [];\n\n                // 根据处理策略添加不同的变量\n                if (el.file_parse_mode === FileProcessingStrategy.TempKnowledge) {\n                    variableParts.push(el.key);\n                } else if (el.file_parse_mode === FileProcessingStrategy.ParseContent) {\n                    if (el.file_content) variableParts.push(el.file_content);\n                } else if (el.file_parse_mode === FileProcessingStrategy.OriginalFile) {\n                    if (el.file_path) variableParts.push(el.file_path);\n                    if (el.image_file && (el.file_type === 'all' || el.file_type === 'image')) {\n                        variableParts.push(el.image_file);\n                    }\n                }\n\n                if (variableParts.length > 0) {\n                    variableList = variableParts.join(', ');\n                }\n            }\n\n            let text = `${el.value}（${variableList}）`;\n\n            // 如果需要还可以添加处理策略信息（可选）\n            if (el.type === 'file') {\n                let strategyText = '';\n                if (el.file_parse_mode === FileProcessingStrategy.TempKnowledge) {\n                    strategyText = t('temporaryKnowledgeBase');\n                } else if (el.file_parse_mode === FileProcessingStrategy.ParseContent) {\n                    strategyText = t(\"parseFile\");\n                } else if (el.file_parse_mode === FileProcessingStrategy.OriginalFile) {\n                    strategyText = t(\"notParse\");\n                }\n            }\n\n            return {\n                key: el.key,\n                text,\n                type: el.type,\n            }\n        });\n    }, [data.value])\n\n    const { flow } = useFlowStore();\n    // 校验变量是否可用\n    const validateVarAvailble = () => {\n        const errors = data.value.reduce((acc, value) => {\n            if (value.type === 'text') {\n                value.value.replace(/{{#(.*?)#}}/g, (a, part) => {\n                    const _error = isVarInFlow(nodeId, flow.nodes, part, data.varZh?.[part])\n                    _error && acc.push(_error)\n                })\n            }\n            return acc\n        }, [])\n        return Promise.resolve(errors);\n    };\n\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [data]);\n\n    return (\n        <div className=\"node-item mb-4 nodrag\" data-key={data.key}>\n            {data.value.length > 0 && (\n                <DragOptions\n                    scroll\n                    ref={scrollRef}\n                    options={options}\n                    onEditClick={handleEditClick} // 点击编辑时执行的逻辑\n                    onChange={handleOptionsChange} // 拖拽排序后的更新\n                />\n            )}\n            <Button\n                onClick={handleOpen}\n                variant=\"outline\"\n                className=\"border-primary text-primary mt-2\"\n            >\n                {t(`${i18nPrefix}label`)}\n            </Button>\n            {error && <p className=\"text-red-500 text-sm\">{t(\"atLeastOneFormItem\")}</p>}\n\n            <Dialog open={isOpen} onOpenChange={setIsOpen}>\n                <DialogContent className=\"max-h-screen\">\n                    <DialogHeader>\n                        <DialogTitle>\n                            {editKey ? t(\"editFormItem\") : t(\"addFormItem\")}\n                        </DialogTitle>\n                    </DialogHeader>\n\n                    {isOpen && <Form\n                        key={editKey || 'new'}\n                        nodeId={nodeId}\n                        nodeData={data}\n                        initialData={\n                            editKey\n                                ? data.value.find((el) => el.key === editKey)\n                                : null\n                        } // 如果是编辑模式，传入当前表单数据\n                        onSubmit={handleSubmit} // 表单提交时回传数据给父组件\n                        onCancel={handleClose} // 取消关闭弹窗\n                        existingOptions={data.value} // 传递当前所有 options 以检查重复\n                    />\n                    }\n                </DialogContent>\n            </Dialog>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/InputFormItemOld.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { isVarInFlow } from \"@/util/flowUtils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { ChevronsDown, CloudUpload, Type } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\"; // 引入国际化\nimport useFlowStore from \"../../flowStore\";\nimport DragOptions from \"./DragOptions\";\nimport FileTypeSelect from \"./FileTypeSelect\";\nimport InputItem from \"./InputItem\";\nimport VarInput from \"./VarInput\";\n\nconst enum FormType {\n    Text = \"text\",\n    Select = \"select\",\n    File = \"file\",\n}\n\nconst names = {\n    [FormType.Text]: \"text_input\",\n    [FormType.Select]: \"category\",\n    [FormType.File]: \"file\",\n}\n\nfunction Form({ nodeId, nodeData, initialData, onSubmit, onCancel, existingOptions }) {\n    const { t } = useTranslation('flow');\n    const namePlaceholders = {\n        [FormType.Text]: t(\"nameExample\"), // 例如“姓名”\n        [FormType.Select]: t(\"categoryExample\"), // 例如“保险类别”\n        [FormType.File]: t(\"uploadExample\"), // 例如“请上传去年财报”\n    };\n\n    const [formData, setFormData] = useState({\n        formType: FormType.Text,\n        displayName: \"\",\n        variableName: \"\",\n        filecontent: '',\n        filepath: '',\n        fileType: 'all',\n        fileContentSize: 15000,\n        imageFile: '',\n        isMultiple: true, // default value for multiple file upload\n        isRequired: true,\n        allowMultiple: false,  // Allow multiple file uploads\n        options: [],  // Options for Select input\n    });\n    const [errors, setErrors] = useState<any>({});\n    const editRef = useRef(false); // 编辑状态\n    const oldFormTypeRef = useRef('')\n    const displayNameRef = useRef({ // 记忆变量名\n        [FormType.Text]: '',\n        [FormType.Select]: '',\n        [FormType.File]: '',\n    });\n\n\n    const oldVarNameRef = useRef(\"\");\n    const oldcontentNameRef = useRef(\"\");\n    const oldPathNameRef = useRef(\"\");\n    const oldImageFileRef = useRef(\"\");\n    useEffect(() => {\n        editRef.current = false\n        if (initialData) {\n            const {\n                type: formType,\n                value: displayName,\n                key: variableName,\n                required: isRequired,\n                multiple: allowMultiple,\n                file_content: filecontent,\n                file_type: fileType,\n                file_path: filepath,\n                file_content_size: fileContentSize,\n                image_file: imageFile,\n                options = [] } = initialData;\n            setFormData({\n                formType,\n                displayName,\n                variableName,\n                isRequired,\n                allowMultiple,\n                options,\n                filecontent,\n                fileType,\n                filepath,\n                fileContentSize,\n                imageFile,\n                isMultiple: allowMultiple\n            });\n\n            editRef.current = true\n            oldFormTypeRef.current = formType\n            oldVarNameRef.current = variableName;\n            oldcontentNameRef.current = filecontent;\n            oldPathNameRef.current = filepath;\n            oldImageFileRef.current = imageFile;\n        }\n    }, [initialData]);\n\n    // 变量重命名\n    useEffect(() => {\n        if (initialData) return\n        // 初始化变量名\n        let initialVarName = names[formData.formType];\n        let initialFileContent = 'file_content'\n        let initialFilePath = 'file_path'\n        let initialFileImage = 'image_file'\n        let counter = 1;\n        let initialFileContentCounter = 1;\n        let initialFilePathCounter = 1;\n        let initialFileImageCounter = 1\n        while (existingOptions?.some(opt => opt.key === initialVarName)) {\n            counter += 1;\n            initialVarName = `${names[formData.formType]}${counter}`;\n        }\n        const fileOtions = existingOptions?.filter(opt => opt.type === FormType.File)\n        while (fileOtions?.some(opt => opt.file_content === initialFileContent)) {\n            initialFileContentCounter += 1;\n            initialFileContent = `file_content${initialFileContentCounter}`;\n        }\n        while (fileOtions?.some(opt => opt.file_path === initialFilePath)) {\n            initialFilePathCounter += 1;\n            initialFilePath = `file_path${initialFilePathCounter}`;\n        }\n        while (fileOtions?.some(opt => opt.image_file === initialFileImage)) {\n            initialFileImageCounter += 1;\n            initialFileImage = `image_file${initialFileImageCounter}`;\n        }\n        // 变量重命名\n        // existingOptions.\n        setFormData((prevData) => ({\n            ...prevData,\n            variableName: initialVarName,\n            filecontent: initialFileContent,\n            filepath: initialFilePath,\n            imageFile: initialFileImage\n        }));\n    }, [initialData, formData.formType])\n\n    const validateForm = () => {\n        const newErrors: any = {};\n\n        if (!formData.displayName.trim()) {\n            newErrors.displayName = t(\"displayNameRequired\");\n        } else if (formData.displayName.length > 50) {\n            newErrors.displayName = t(\"displayNameTooLong\");\n        }\n\n        if (!formData.variableName.trim()) {\n            newErrors.variableName = t(\"variableNameRequired\");\n        } else if (formData.variableName.length > 50) {\n            newErrors.variableName = t(\"variableNameTooLong\");\n        } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.variableName)) {\n            newErrors.variableName = t(\"variableNameInvalid\");\n        } else if (\n            existingOptions?.some(opt => opt.key === formData.variableName) &&\n            formData.variableName !== oldVarNameRef.current\n        ) {\n            newErrors.variableName = t(\"variableNameExists\");\n        }\n\n        if (formData.formType === FormType.Select && !formData.options.length) {\n            newErrors.options = t(\"optionsRequired\");\n        }\n\n        // Validation for file upload variables (if multiple files are allowed)\n        if (formData.formType === FormType.File) {\n            // Validate file content variable name\n            if (!formData.filecontent.trim()) {\n                newErrors.filecontent = t(\"variableNameRequired\");\n            } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.filecontent)) {\n                newErrors.filecontent = t(\"variableNameInvalid\");\n            } else if (formData.filecontent.length > 50) {\n                newErrors.filecontent = t(\"variableNameTooLong\");\n            } else if (\n                existingOptions?.some(opt => opt.type === 'file'\n                    && opt.file_content === formData.filecontent)\n                && formData.filecontent !== oldcontentNameRef.current\n            ) {\n                newErrors.filecontent = t(\"variableNameExists\");\n            }\n\n            // Validate file path variable name\n            if (!formData.filepath.trim()) {\n                newErrors.filepath = t(\"variableNameRequired\");\n            } else if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(formData.filepath)) {\n                newErrors.filepath = t(\"variableNameInvalid\");\n            } else if (formData.filepath.length > 50) {\n                newErrors.filepath = t(\"variableNameTooLong\");\n            } else if (\n                existingOptions?.some(opt => opt.type === 'file'\n                    && opt.file_path === formData.filepath)\n                && formData.filepath !== oldPathNameRef.current\n            ) {\n                newErrors.filepath = t(\"variableNameExists\");\n            }\n\n            if (formData.fileType !== 'file') {\n                const _error = validateImageFileVariableName(formData.imageFile, existingOptions);\n                if (_error) {\n                    newErrors.imageFile = _error\n                }\n            }\n        }\n\n\n        setErrors(newErrors);\n        return Object.keys(newErrors).length === 0;\n    };\n\n    const validateImageFileVariableName = (varName, existingOptions) => {\n        const errors = [];\n\n        // 1. 非空检查\n        if (!varName || !varName.trim()) {\n            return t('variableNameCannotBeEmpty');\n        }\n\n        // 2. 不能以数字开头\n        if (/^\\d/.test(varName)) {\n            return t('variableNameCannotStartWithNumber');\n        }\n\n        // 3. 只能包含英文字符、数字和下划线\n        if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(varName)) {\n            return t('variableNameContainsInvalidCharacters');\n        }\n\n        // 4. 长度不超过50\n        if (varName.length > 50) {\n            return t('variableNameTooLong');\n        }\n\n        // 5. 不能重复\n        if (existingOptions?.some(opt => opt.type === 'file'\n            && opt.image_file === formData.imageFile)\n            && formData.imageFile !== oldImageFileRef.current) {\n            return t('variableNameAlreadyExists');\n        }\n\n        return '';\n    };\n\n    const handleFormSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(formData);\n        }\n    };\n\n    const updateOptions = (options) => {\n        setFormData((prevData) => ({\n            ...prevData,\n            options,\n        }));\n    };\n\n    // if the form type hasn't changed, it keeps the variable name as it was. Otherwise, it generates a new unique variable name.\n    const handleChangeFormType = (formType) => {\n        displayNameRef.current[formData.formType] = formData.displayName;\n        const displayName = displayNameRef.current[formType] || '';\n        setFormData({ ...formData, displayName, formType })\n        setErrors({});\n        if (editRef.current) {\n            if (oldFormTypeRef.current === formType) {\n                setFormData({ ...formData, formType, variableName: oldVarNameRef.current, displayName })\n            } else {\n                let counter = 1;\n                let initialVarName = names[formType];\n                while (existingOptions?.some(opt => opt.key === initialVarName)) {\n                    counter += 1;\n                    initialVarName = `${names[formType]}${counter}`;\n                }\n                setFormData({ ...formData, formType, variableName: initialVarName, displayName })\n            }\n        }\n    }\n\n    // var check\n    const checkVarFuncRef = useRef(null);\n    useEffect(() => {\n        if (initialData && checkVarFuncRef.current && formData.formType === FormType.Text) {\n            checkVarFuncRef.current();\n        }\n    }, [formData.formType, initialData])\n\n    // text form\n    const InputForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            {/* <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            /> */}\n            <VarInput\n                mini\n                key={formData.variableName}\n                label={''}\n                itemKey={''}\n                nodeId={nodeId}\n                paramItem={nodeData}\n                value={formData.displayName}\n                placeholder={namePlaceholders[formData.formType]}\n                onChange={(val) => setFormData({ ...formData, displayName: val })}\n                onVarEvent={(func) => checkVarFuncRef.current = func}\n            >\n            </VarInput>\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"variableName\")}\n                <QuestionTooltip content={t(\"variableNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                id=\"variableName\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.variableName}\n                onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n            />\n            {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n    </div>\n    // select from \n    const SelectForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            />\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"variableName\")}\n                <QuestionTooltip content={t(\"variableNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                id=\"variableName\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.variableName}\n                onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n            />\n            {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n        </div>\n        <div>\n            <Label className=\"bisheng-label\">{t(\"options\")}</Label>\n            <DragOptions edit scroll options={formData.options} onChange={updateOptions} />\n            {errors.options && <p className=\"text-red-500 text-sm\">{errors.options}</p>}\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('allowMultipleSelect')}</Label>\n            <Switch\n                checked={formData.allowMultiple}\n                onCheckedChange={(checked) => setFormData({ ...formData, allowMultiple: checked })}\n            />\n        </div>\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n    </div>\n    // file form \n    const FileForm = <div className=\"space-y-4\">\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t(\"displayName\")}\n                <QuestionTooltip content={t(\"displayNameTooltip\")} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.displayName ? \"border-red-500\" : \"\"}`}\n                id=\"displayName\"\n                placeholder={namePlaceholders[formData.formType]}\n                value={formData.displayName}\n                onChange={(e) => setFormData({ ...formData, displayName: e.target.value })}\n            />\n            {errors.displayName && <p className=\"text-red-500 text-sm\">{errors.displayName}</p>}\n        </div>\n\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('isRequired')}</Label>\n            <Switch\n                checked={formData.isRequired}\n                onCheckedChange={(checked) => setFormData({ ...formData, isRequired: checked })}\n            />\n        </div>\n\n        <div className=\"flex items-center space-x-2\">\n            <Label className=\"bisheng-label\">{t('allowUploadMultipleFiles')}</Label>\n            <Switch\n                checked={formData.isMultiple}\n                onCheckedChange={(checked) => setFormData({ ...formData, isMultiple: checked })}\n            />\n        </div>\n        <FileTypeSelect data={{\n            label: t('uploadFileTypes'),\n            value: formData.fileType,\n        }} onChange={(fileType) => setFormData({ ...formData, fileType })} />\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t('tempKnowledgeBaseName')}\n                <QuestionTooltip content={t('tempKnowledgeBaseNameTip')} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.variableName ? \"border-red-500\" : \"\"}`}\n                id=\"variableName\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.variableName}\n                onChange={(e) => setFormData({ ...formData, variableName: e.target.value })}\n            />\n            {errors.variableName && <p className=\"text-red-500 text-sm\">{errors.variableName}</p>}\n        </div>\n\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t('fileContentVarName')}\n                <QuestionTooltip content={t('fileContentVarTip')} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.filecontent ? \"border-red-500\" : \"\"}`}\n                id=\"filecontent\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.filecontent}\n                onChange={(e) => setFormData({ ...formData, filecontent: e.target.value })}\n            />\n            {errors.filecontent && <p className=\"text-red-500 text-sm\">{errors.filecontent}</p>}\n        </div>\n        <InputItem\n            type='number'\n            char\n            linefeed\n            label={t('fileContentMaxLength')}\n            data={\n                {\n                    min: 0,\n                    value: formData.fileContentSize,\n                }\n            }\n            onChange={(fileContentSize) => setFormData({ ...formData, fileContentSize })}\n        />\n        <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t('filePathVarName')}\n                <QuestionTooltip content={t('filePathVarTip')} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.filepath ? \"border-red-500\" : \"\"}`}\n                id=\"filepath\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.filepath}\n                onChange={(e) => setFormData({ ...formData, filepath: e.target.value })}\n            />\n            {errors.filepath && <p className=\"text-red-500 text-sm\">{errors.filepath}</p>}\n        </div>\n        {formData.fileType !== 'file' && <div>\n            <Label className=\"flex items-center bisheng-label\">\n                {t('uploadImageFile')}\n                <QuestionTooltip content={t('uploadImageFileTip')} />\n            </Label>\n            <Input\n                className={`mt-2 ${errors.imageFile ? \"border-red-500\" : \"\"}`}\n                id=\"imageFile\"\n                placeholder={t(\"enterVariableName\")}\n                value={formData.imageFile}\n                onChange={(e) => setFormData({ ...formData, imageFile: e.target.value })}\n            />\n            {errors.imageFile && <p className=\"text-red-500 text-sm\">{errors.imageFile}</p>}\n        </div>}\n    </div>;\n\n    return (\n        <form onSubmit={handleFormSubmit} className=\"space-y-4\">\n            <div>\n                <Label className=\"bisheng-label\">{t(\"formType\")}</Label>\n                <div className=\"flex gap-4 justify-between mx-6 mt-2\">\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.Text ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.Text)}\n                    >\n                        <Type size={18} />\n                        {t(\"textInput\")}\n                    </Button>\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.Select ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.Select)}\n                    >\n                        <ChevronsDown size={18} />\n                        {t(\"dropdown\")}\n                    </Button>\n                    <Button\n                        className={`flex flex-col h-18 w-28 ${formData.formType === FormType.File ? \"border-primary/40 bg-[#DFE9FD] text-primary\" : \"\"}`}\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => handleChangeFormType(FormType.File)}\n                    >\n                        <CloudUpload size={18} />\n                        {t(\"file\")}\n                    </Button>\n                </div>\n            </div>\n\n            {formData.formType === FormType.Text && (InputForm)}\n            {formData.formType === FormType.Select && (SelectForm)}\n            {formData.formType === FormType.File && (FileForm)}\n\n            <div className=\"flex space-x-4 justify-end\">\n                <Button className=\"px-8\" type=\"button\" variant=\"outline\" onClick={onCancel}>\n                    {t(\"cancel\")}\n                </Button>\n                <Button className=\"px-8\" type=\"submit\">\n                    {t(\"confirm\")}\n                </Button>\n            </div>\n        </form>\n    );\n}\n\n// node input form item\nexport default function InputFormItem({ data, nodeId, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const { t } = useTranslation('flow'); // 使用国际化\n    const [isOpen, setIsOpen] = useState(false);\n    const [editKey, setEditKey] = useState(\"\"); // 控制编辑模式\n    const [foucsUpdate, setFoucsUpdate] = useState(false);\n    const [error, setError] = useState(false);\n\n    // 打开弹窗并重置状态\n    const handleOpen = () => {\n        setEditKey(\"\"); // 新建时不设置为编辑模式\n        setIsOpen(true);\n    };\n\n    // 关闭弹窗\n    const handleClose = () => {\n        setIsOpen(false);\n    };\n\n    // 提交表单数据，添加或更新表单项\n    const scrollRef = useRef(null);\n    const handleSubmit = (_data) => {\n        const {\n            allowMultiple,\n            isMultiple,\n            displayName: value,\n            formType: type,\n            isRequired: required,\n            options,\n            variableName: key,\n            filecontent: file_content,\n            filepath: file_path,\n            fileType: file_type,\n            fileContentSize: file_content_size,\n            imageFile: image_file\n        } = _data;\n\n        const multiple = type === FormType.File ? isMultiple : allowMultiple;\n        if (editKey) {\n            // 编辑模式，更新表单项\n            data.value = data.value.map((opt) =>\n                opt.key === editKey\n                    ? {\n                        key,\n                        type,\n                        value,\n                        required,\n                        multiple,\n                        options,\n                        file_content,\n                        file_path,\n                        file_type,\n                        file_content_size,\n                        image_file\n                    }\n                    : opt\n            );\n        } else {\n            // 新建模式，添加表单项\n            data.value = [...data.value, {\n                key,\n                type,\n                value,\n                required,\n                multiple,\n                file_content,\n                file_path,\n                file_type,\n                options,\n                file_content_size,\n                image_file\n            }];\n            setTimeout(() => {\n                scrollRef.current?.scrollTo(0, scrollRef.current?.scrollHeight); // 滚动到底部\n            }, 0);\n        }\n        onChange(data.value);\n        setFoucsUpdate(!foucsUpdate);\n        setIsOpen(false); // 关闭弹窗\n    };\n\n    // 当编辑 DragOptions 中的表单项时打开弹窗\n    const handleEditClick = (index, option) => {\n        const item = data.value[index];\n        setEditKey(item.key); // 设置为编辑模式\n        setIsOpen(true); // 打开弹窗\n    };\n\n    // 更新 DragOptions 的顺序变化\n    const handleOptionsChange = (newOptions) => {\n        data.value = newOptions.map((el) => {\n            return data.value.find((op) => op.key === el.key);\n        });\n        onChange(data.value);\n    };\n\n    // 校验逻辑\n    useEffect(() => {\n        onValidate(() => {\n            if (!data.value.length) {\n                setError(true);\n                return t(\"atLeastOneFormItem\"); // \"至少添加一个表单项\"\n            }\n            setError(false);\n            return false;\n        });\n\n        return () => onValidate(() => { });\n    }, [data.value]);\n\n    const options = useMemo(() => {\n        const _options = cloneDeep(data.value)\n        return _options.map((el) => {\n            // cn\n            if (el.type === 'text') {\n                el.value = el.value.replace(/{{#(.*?)#}}/g, (a, key) => {\n                    return data.varZh?.[key] || key;\n                })\n            }\n\n            return {\n                key: el.key,\n                text: el.type === 'file' ? `${el.value}(${el.key},${el.file_content},${el.file_path})` : `${el.value}(${el.key})`,\n                type: el.type,\n            }\n        });\n    }, [data.value])\n\n    const { flow } = useFlowStore();\n    // 校验变量是否可用\n    const validateVarAvailble = () => {\n        const errors = data.value.reduce((acc, value) => {\n            if (value.type === 'text') {\n                value.value.replace(/{{#(.*?)#}}/g, (a, part) => {\n                    const _error = isVarInFlow(nodeId, flow.nodes, part, data.varZh?.[part])\n                    _error && acc.push(_error)\n                })\n            }\n            return acc\n        }, [])\n        return Promise.resolve(errors);\n    };\n\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [data]);\n\n    return (\n        <div className=\"node-item mb-4 nodrag\" data-key={data.key}>\n            {data.value.length > 0 && (\n                <DragOptions\n                    scroll\n                    ref={scrollRef}\n                    options={options}\n                    onEditClick={handleEditClick} // 点击编辑时执行的逻辑\n                    onChange={handleOptionsChange} // 拖拽排序后的更新\n                />\n            )}\n            <Button\n                onClick={handleOpen}\n                variant=\"outline\"\n                className=\"border-primary text-primary mt-2\"\n            >\n                {t(`${i18nPrefix}label`)}\n            </Button>\n            {error && <p className=\"text-red-500 text-sm\">{t(\"atLeastOneFormItem\")}</p>}\n\n            <Dialog open={isOpen} onOpenChange={setIsOpen}>\n                <DialogContent className=\"max-h-screen overflow-auto\">\n                    <DialogHeader>\n                        <DialogTitle>\n                            {editKey ? t(\"editFormItem\") : t(\"addFormItem\")}\n                        </DialogTitle>\n                    </DialogHeader>\n\n                    {isOpen && <Form\n                        nodeId={nodeId}\n                        nodeData={data}\n                        initialData={\n                            editKey\n                                ? data.value.find((el) => el.key === editKey)\n                                : null\n                        } // 如果是编辑模式，传入当前表单数据\n                        onSubmit={handleSubmit} // 表单提交时回传数据给父组件\n                        onCancel={handleClose} // 取消关闭弹窗\n                        existingOptions={data.value} // 传递当前所有 options 以检查重复\n                    />\n                    }\n                </DialogContent>\n            </Dialog>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/InputItem.tsx",
    "content": "import { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function InputItem({ type = 'text', char = false, linefeed = false, data, onChange, i18nPrefix, label }) {\n    const [value, setValue] = useState(data.value ? String(data.value) : '');\n    const { t } = useTranslation('flow');\n\n    // 初始化时同步外部数据（确保为整数）\n    useEffect(() => {\n        if (data.value !== undefined) {\n            const intValue = parseInt(data.value, 10);\n            setValue(isNaN(intValue) ? '' : String(intValue));\n        }\n    }, [data.value]);\n\n    // 处理输入变化（限制为整数）\n    const handleChange = (inputValue) => {\n        // 1. 过滤掉小数点和非数字字符（保留空值）\n        const filteredValue = inputValue.replace(/[^\\d]/g, '');\n        // 2. 转换为整数（避免空字符串导致NaN）\n        const intValue = filteredValue ? parseInt(filteredValue, 10) : '';\n        // 3. 更新内部状态和父组件\n        setValue(filteredValue);\n        onChange(intValue);\n    };\n\n    if (char) return (\n        <div\n            className={`node-item mb-4 ${!linefeed ? 'flex items-center justify-between' : ''}`}\n            data-key={data.key}\n        >\n            <Label className=\"flex items-center bisheng-label\">\n                {label || data.label && t(`${i18nPrefix}label`)}\n                {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            <div className={`nodrag ${char ? 'w-32 flex items-center gap-3' : ''} ${linefeed ? 'mt-2' : ''}`}>\n                <Input\n                    className=\"min-w-24\"\n                    value={value}\n                    type={type}\n                    min={data.min}\n                    max={data.max}\n                    onChange={(e) => handleChange(e.target.value)}\n                />\n                <Label className=\"bisheng-label\">{t('character')}</Label>\n            </div>\n        </div>\n    );\n\n    return (\n        <div className='node-item mb-4' data-key={data.key}>\n            <Label className=\"flex items-center bisheng-label\">\n                {data.label && t(`${i18nPrefix}label`)}\n                {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            <Input\n                className=\"mt-2 nodrag\"\n                value={value}\n                type={type}\n                min={data.min}\n                max={data.max}\n                onChange={(e) => handleChange(e.target.value)}\n            />\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/InputListItem.tsx",
    "content": "import { InputList } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { debounce } from \"lodash-es\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useUpdateVariableState } from \"../flowNodeStore\";\n\nexport default function InputListItem({ node, data, preset, onChange, i18nPrefix }) {\n    const [_, setUpdateVariable] = useUpdateVariableState()\n    const { t } = useTranslation('flow')\n\n    const value = useMemo(() => {\n        const _value = data.value || [];\n\n        // Check if the last element is empty and return the array as is if true\n        const isLastItemEmpty = preset\n            ? _value.length && _value[_value.length - 1].value === ''\n            : _value.length && _value[_value.length - 1] === '';\n\n        if (isLastItemEmpty) return _value;\n\n        if (preset) {\n            _value.push({ key: generateUUID(6), value: '' });\n        } else {\n            _value.push('');\n        }\n\n        return _value;\n    }, [data]);\n\n    useEffect(() => {\n        return () => {\n            preset && setUpdateVariable(null)\n        }\n    }, [preset])\n\n    const setDebouncePresetQuestion = useCallback(debounce((info) => {\n        if (!info.value.trim()) return\n        preset && info && setUpdateVariable({\n            action: info.action,\n            node: null,\n            question: {\n                id: info.id,\n                name: info.value,\n            }\n        })\n    }, 1000), [preset])\n\n    const handleChange = (val, info) => {\n        const _val = val.slice(0, val.length - 1)\n        onChange(_val)\n\n        info && setDebouncePresetQuestion(info)\n    }\n\n    return <div className='node-item mb-4'>\n        <Label className=\"flex items-center bisheng-label\">\n            {t(`${i18nPrefix}label`)}\n            {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n        </Label>\n        <div className=\"nowheel nodrag overflow-y-auto max-h-52 mt-2\">\n            <InputList\n                dict={preset}\n                rules={[{ maxLength: 50, message: t('max50Characters') }]}\n                value={value}\n                onChange={handleChange}\n                placeholder={t(`${i18nPrefix}placeholder`) || ''}\n            ></InputList>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/KnowledgeQaSelectItem.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { getKnowledgeDetailApi, readFileLibDatabase } from \"@/controllers/API\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../../flowStore\";\n\n\nexport default function KnowledgeQaSelectItem({ nodeId, data, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const { t } = useTranslation('flow')\n    const { flow } = useFlowStore()\n    const [value, setValue] = useState<any>(() => data.value.map(el => {\n        return { label: el.label, value: el.key }\n    }))\n    const [options, setOptions] = useState<any>([]);\n    const originOptionsRef = useRef([])\n\n    const pageRef = useRef(1)\n    const reload = (page, name) => {\n        readFileLibDatabase({ page, pageSize: 60, name, type: 1 }).then(res => {\n            pageRef.current = page\n            originOptionsRef.current = res.data\n            const opts = res.data.map(el => ({ label: el.name, value: el.id }))\n            setOptions(_ops => page > 1 ? [..._ops, ...opts] : opts)\n        })\n    }\n\n\n    useEffect(() => {\n        reload(1, '')\n    }, [])\n\n    // 加载更多\n    const loadMore = (name) => {\n        reload(pageRef.current + 1, name)\n    }\n\n    const handleSelect = (resVals) => {\n        setValue(resVals)\n        onChange(resVals.map(el => ({\n            key: el.value,\n            label: el.label\n        }))\n        )\n    }\n\n    const [error, setError] = useState(false)\n    useEffect(() => {\n        data.required && onValidate(() => {\n            if (!data.value.length) {\n                setError(true)\n                return t(`${i18nPrefix}label`) + ' ' + t('required')\n            }\n            if (data.value.some(item => /input_[a-zA-Z0-9]+\\.file/.test(item.key))) {\n                return 'input_file'\n            }\n            setError(false)\n            return false\n        })\n\n        return () => onValidate(() => { })\n    }, [data.value])\n\n    // 校验变量是否可用\n    const [errorKeys, setErrorKeys] = useState<string[]>([])\n    const validateVarAvailble = async () => {\n        if (!value.length) return ''\n        let error = '';\n        const _errorKeys = [];\n        const effectiveKnowledges = await getKnowledgeDetailApi(value.map(el => el.value));\n        for (const el of value) {\n            // If not found, check against effectiveKnowledges\n            if (!effectiveKnowledges.some(base => base.id === el.value)) {\n                // error = t('nodeErrorMessage', {\n                //     ns: 'flow',\n                //     nodeName: flow.nodes.find(node => node.id === nodeId).data.name,\n                //     varNameCn: ''\n                // });\n                error = `${flow.nodes.find(node => node.id === nodeId).data.name} ${t('nodeError')}: ${el.label} ${t('doesNotExist')}.`\n                error && _errorKeys.push(el.value);\n            }\n            setErrorKeys(_errorKeys);\n        }\n        return error;\n    };\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [data, value]);\n\n    return <div className='node-item mb-4'>\n        <Label className=\"flex items-center bisheng-label mb-2\">\n            {data.required && <span className=\"text-red-500\">*</span>}\n            {t(`${i18nPrefix}label`)}\n        </Label>\n        <MultiSelect\n            id=\"knowledge-qaselect\"\n            error={error}\n            errorKeys={errorKeys}\n            multiple\n            className={''}\n            value={value}\n            options={options}\n            placeholder={t(`${i18nPrefix}placeholder`)}\n            searchPlaceholder={t('build.searchBaseName', { ns: 'bs' })}\n            onChange={handleSelect}\n            onLoad={() => reload(1, '')}\n            onSearch={(val) => reload(1, val)}\n            onScrollLoad={(val) => loadMore(val)}\n        >\n            {/* {children?.(reload)} */}\n        </MultiSelect>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/KnowledgeSelectItem.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { getKnowledgeDetailApi, readFileLibDatabase } from \"@/controllers/API\";\nimport { isVarInFlow } from \"@/util/flowUtils\";\nimport { memo, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../../flowStore\";\n\n\nconst TabsHead = memo(({ tab, onChange }) => {\n    const { t } = useTranslation('flow');\n\n    return (\n        <Tabs defaultValue={tab} className=\"mb-2\" onValueChange={onChange}>\n            <TabsList className=\"grid w-full grid-cols-2 py-1 max-w-80\">\n                <TabsTrigger value=\"knowledge\" className=\"text-xs\">\n                    {t('documentKnowledgeBase')}\n                </TabsTrigger>\n                <TabsTrigger value=\"tmp\" className=\"text-xs\">\n                    {t('temporarySessionFiles')}\n                    <QuestionTooltip content={t('storeFilesSentInCurrentSession')} />\n                </TabsTrigger>\n            </TabsList>\n        </Tabs>\n    );\n});\n\n\nconst enum KnowledgeType {\n    Knowledge = 'knowledge',\n    Temp = 'tmp'\n}\ntype KnowledgeTypeValues = `${KnowledgeType}`;\nconst pageSize = 60\n\nexport default function KnowledgeSelectItem({ data, nodeId, onChange, onVarEvent, onValidate, i18nPrefix }) {\n    const { flow } = useFlowStore()\n    const { t } = useTranslation('flow')\n\n    const currentTabRef = useRef(data.value.type)\n    const [tabType, setTabType] = useState<KnowledgeTypeValues>(data.value.type)\n    const [value, setValue] = useState<any>(() => data.value.value.map(el => {\n        return { label: el.label, value: el.key }\n    }))\n\n    const [options, setOptions] = useState<any>([]);\n    const [fileOptions, setFileOptions] = useState<any>([])\n    const originOptionsRef = useRef([])\n\n    const pageRef = useRef(1)\n    const hasMoreRef = useRef(true)\n    const reload = (page, name) => {\n        if (page > 1 && !hasMoreRef.current) return\n        readFileLibDatabase({ page, pageSize, name, type: 0 }).then(res => {\n            pageRef.current = page\n            originOptionsRef.current = res.data\n            const opts = res.data.map(el => ({ label: el.name, value: el.id }))\n            setOptions(_ops => page > 1 ? [..._ops, ...opts] : opts)\n            hasMoreRef.current = res.data.length === pageSize\n        })\n    }\n    // input文件变量s\n    const loadFiles = () => {\n        const files = []\n        flow.nodes.forEach(node => {\n            if (node.data.type !== 'input') return\n            if (node.data.tab.value === \"dialog_input\") return\n            node.data.group_params.forEach(group => {\n                group.params.forEach(param => {\n                    if (param.key === 'form_input') {\n                        param.value.forEach(val => {\n                            val.file_parse_mode === 'ingest_to_temp_kb' && val.type === 'file'\n                                && files.push({\n                                    label: `${val.key}(${val.value})`,\n                                    value: `${node.id}.${val.key}`\n                                })\n                        })\n                    }\n                })\n            })\n        })\n        setFileOptions(files)\n    }\n\n    useEffect(() => {\n        reload(1, '')\n        loadFiles()\n    }, [])\n\n    // const handleChange = (res) => {\n    //     // id => obj\n    //     onChange(res.map(el => originOptionsRef.current.find(el2 => el2.id === el)))\n    // }\n\n    // 加载更多\n    const loadMore = (name) => {\n        hasMoreRef.current && reload(pageRef.current + 1, name)\n    }\n\n    const handleTabChange = (val) => {\n        KnowledgeType.Knowledge === val ? reload(1, '') : loadFiles()\n\n        setTabType(val)\n        const inputDom = document.getElementById('knowledge-select-item')\n        if (inputDom) {\n            inputDom.value = ''\n        }\n    }\n\n    const handleSelect = (vals) => {\n        const resVals = currentTabRef.current === tabType ? vals : [vals[vals.length - 1]]\n        setValue(resVals)\n        onChange({\n            type: tabType,\n            value: resVals.map(el => ({ // 夸类型先清空value\n                key: el.value,\n                label: el.label\n            }))\n        })\n\n        currentTabRef.current = tabType\n    }\n\n    const [error, setError] = useState(false)\n    useEffect(() => {\n        // data.required && onValidate(() => {\n        onValidate((config) => {\n            if (data.required && !data.value.value.length) {\n                setError(true)\n                return `${t(`${i18nPrefix}label`)} ${t('required')}`;\n            }\n            if (data.value.value.some(item => /input_[a-zA-Z0-9]+\\.file/.test(item.key))) {\n                return 'input_file'\n            }\n            setError(false)\n            return false\n        })\n\n        return () => onValidate(() => { })\n    }, [data.value])\n\n    // 校验变量是否可用\n    const [errorKeys, setErrorKeys] = useState<string[]>([])\n    const validateVarAvailable = async (config) => {\n        if (!value.length) return ''\n        let error = '';\n        // 单节点运行校验临时文件\n        if (config?.tmp && data.value.value.length && data.value.type === 'tmp') {\n            setError(true)\n            return t('tmpKnowledgeBaseNotSupportSingleNodeDebug')\n        }\n        const _errorKeys = [];\n        if (typeof value[0].value === 'number') {\n            const effectiveKnowledges = await getKnowledgeDetailApi(value.map(el => el.value));\n            for (const el of value) {\n                // If not found, check against effectiveKnowledges\n                if (!effectiveKnowledges.some(base => base.id === el.value)) {\n                    // error = t('nodeErrorMessage', {\n                    //     ns: 'flow',\n                    //     nodeName: flow.nodes.find(node => node.id === nodeId).data.name,\n                    //     varNameCn: ''\n                    // });\n                    error = `${flow.nodes.find(node => node.id === nodeId).data.name}${t('nodeError')}: ${el.label} ${t('doesNotExist')}.`\n                    error && _errorKeys.push(el.value);\n                }\n                setErrorKeys(_errorKeys);\n            }\n            return error;\n        }\n        for (const el of value) {\n            // Check if variable exists in flow\n            let _error = isVarInFlow(nodeId, flow.nodes, el.value, '');\n            if (_error) {\n                _errorKeys.push(el.value);\n                error = _error;\n            }\n        }\n        setErrorKeys(_errorKeys);\n        return error;\n    };\n\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailable);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [data, value]);\n\n    return <div className='node-item mb-4'>\n        <Label className=\"flex items-center bisheng-label mb-2\">\n            {data.required && <span className=\"text-red-500\">*</span>}\n            {t(`${i18nPrefix}label`)}\n        </Label>\n        <MultiSelect\n            id=\"knowledge-select-item\"\n            error={error}\n            errorKeys={errorKeys}\n            tabs={<TabsHead tab={tabType} onChange={handleTabChange} />}\n            multiple\n            className={''}\n            hideSearch={tabType === KnowledgeType.Temp}\n            value={value}\n            options={tabType === KnowledgeType.Knowledge ? options : fileOptions}\n            placeholder={data.placeholder && t(`${i18nPrefix}placeholder`) || ''}\n            searchPlaceholder={t('build.searchBaseName', { ns: 'bs' })}\n            onChange={handleSelect}\n            onLoad={() => { reload(1, ''); loadFiles() }}\n            onSearch={(val) => reload(1, val)}\n            onScrollLoad={(val) => loadMore(val)}\n        >\n            {/* {children?.(reload)} */}\n        </MultiSelect>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/MetadataFilter.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { DatePicker } from \"@/components/bs-ui/calendar/datePicker\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { getKnowledgeDetailApi } from \"@/controllers/API\";\nimport { format } from \"date-fns\";\nimport { ChevronDown, CircleQuestionMark, Clock3, Hash, RefreshCcw, Search, Trash2, Type } from \"lucide-react\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport NumberInput from \"./NumberInput\";\nimport SelectVar from \"./SelectVar\";\n\ninterface MetadataCondition {\n  id: string;\n  metadataField: string;\n  operator: string;\n  valueType: \"reference\" | \"input\";\n  value: string;\n  valueLabel: string;\n}\n\ninterface MetadataField {\n  id: string;\n  name: string;\n  type: \"String\" | \"Number\" | \"Time\";\n  knowledgeBase: string;\n  updatedAt: number;\n  icon: React.ReactNode;\n  isDefault: boolean;\n}\n\ninterface MetadataFilterProps {\n  data: any;\n  onChange: (value: any) => void;\n  onValidate: (validate: any) => void;\n  selectedKnowledgeIds?: () => string[];\n  nodeId?: string;\n  node?: any;\n  onVarEvent?: (validateFunc: () => Promise<string>) => void;\n  i18nPrefix: string\n}\n\nconst MetadataFilter = ({\n  data,\n  onChange,\n  onValidate,\n  selectedKnowledgeIds = () => [],\n  nodeId,\n  node,\n  onVarEvent,\n  i18nPrefix\n}: MetadataFilterProps) => {\n\n  const isInitialMount = useRef(true);\n  const isUpdatingFromExternal = useRef(false);\n  const { t } = useTranslation('flow')\n\n  const [isEnabled, setIsEnabled] = useState(data.value?.enabled ?? false);\n  const [conditions, setConditions] = useState<MetadataCondition[]>(() => {\n    if (data.value?.conditions && Array.isArray(data.value.conditions)) {\n      return data.value.conditions.map(cond => ({\n        id: cond.id || generateUUID(8),\n        metadataField: cond.knowledge_id && cond.metadata_field\n          ? `${cond.knowledge_id}-${cond.metadata_field}`\n          : \"\",\n        operator: cond.comparison_operation || \"\",\n        valueType: cond.right_value_type === \"ref\" ? \"reference\" : \"input\",\n        value: cond.right_value || \"\",\n        valueLabel: cond.right_label || \"\",\n      }));\n    }\n    return [];\n  });\n  const [relation, setRelation] = useState<\"and\" | \"or\">(() => {\n    return data.value?.operator === \"or\" ? \"or\" : \"and\";\n  });\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [required, setRequired] = useState(false);\n  const [availableMetadataState, setAvailableMetadataState] = useState<MetadataField[]>([]);\n  const [isLoadingMetadata, setIsLoadingMetadata] = useState(false);\n  const [isSelectOpen, setIsSelectOpen] = useState(false);\n  const [fieldErrors, setFieldErrors] = useState<{ [key: string]: string }>({});\n  const [error, setError] = useState(false)\n\n\n  // 用 ref 存储最新状态，绕开闭包问题\n  const stateRef = useRef({\n    conditions: conditions,\n    availableMetadataState: availableMetadataState,\n    isLoadingMetadata: isLoadingMetadata\n  });\n\n  // 状态变化时同步更新 ref\n  useEffect(() => {\n    stateRef.current = {\n      conditions,\n      availableMetadataState,\n      isLoadingMetadata\n    };\n  }, [conditions, availableMetadataState, isLoadingMetadata]);\n\n  const lastKnowledgeIdsRef = useRef<string>(JSON.stringify(selectedKnowledgeIds()));\n\n  const operatorConfig = {\n    String: [\"equals\", \"not_equals\", \"contains\", \"not_contains\", \"is_empty\", \"is_not_empty\", \"starts_with\", \"ends_with\"],\n    Number: [\"equals\", \"not_equals\", \"greater_than\", \"less_than\", \"greater_than_or_equal\", \"less_than_or_equal\"],\n    Time: [\"equals\", \"not_equals\", \"is_empty\", \"is_not_empty\", \"greater_than\", \"less_than\", \"greater_than_or_equal\", \"less_than_or_equal\"],\n  };\n  const operatorLabels = {\n    equals: t('equals'),\n    not_equals: t('notEquals'),\n    contains: t('contains'),\n    not_contains: t('notContains'),\n    is_empty: t('isEmpty'),\n    is_not_empty: t('isNotEmpty'),\n    starts_with: t('startsWith'),\n    ends_with: t('endsWith'),\n    regex: t('regex'),\n    greater_than: \">\",\n    less_than: \"<\",\n    greater_than_or_equal: \"≥\",\n    less_than_or_equal: \"≤\",\n  };\n\n  const fetchAndPrepareMetadata = useCallback(async () => {\n    setIsLoadingMetadata(true);\n    let availableMetadata: MetadataField[] = [];\n    try {\n      const knowledgeIds = selectedKnowledgeIds();\n      if (knowledgeIds.length > 0) {\n        const knowledgeDetails = await getKnowledgeDetailApi(knowledgeIds);\n        knowledgeDetails.forEach((detail: any) => {\n          const kbLabel = detail.name || detail.label || t('unknownKnowledgeBase');\n          const defaultFields = [\n            { name: \"document_id\", type: \"Number\", icon: <Hash size={14} /> },\n            { name: \"document_name\", type: \"String\", icon: <Type size={14} /> },\n            { name: \"upload_time\", type: \"Time\", icon: <Clock3 size={14} /> },\n            { name: \"update_time\", type: \"Time\", icon: <Clock3 size={14} /> },\n            { name: \"uploader\", type: \"String\", icon: <Type size={14} /> },\n            { name: \"updater\", type: \"String\", icon: <Type size={14} /> }\n          ];\n          const defaultMetadataFields = defaultFields.map(field => ({\n            id: `${detail.id}-${field.name}`,\n            name: field.name,\n            type: field.type as \"String\" | \"Number\" | \"Time\",\n            knowledgeBase: kbLabel,\n            updatedAt: Date.now(),\n            icon: field.icon,\n            isDefault: true\n          }));\n          availableMetadata = [...availableMetadata, ...defaultMetadataFields];\n          if (detail.metadata_fields && Array.isArray(detail.metadata_fields)) {\n            const customFields = detail.metadata_fields.map((field: any) => {\n              let icon: React.ReactNode = <Type size={14} />;\n              let type: \"String\" | \"Number\" | \"Time\" = \"String\";\n              if (field.field_type === \"number\") {\n                icon = <Hash size={14} />;\n                type = \"Number\";\n              } else if (field.field_type === \"time\") {\n                icon = <Clock3 size={14} />;\n                type = \"Time\";\n              }\n              return {\n                id: `${detail.id}-${field.field_name}`,\n                name: field.field_name,\n                type,\n                knowledgeBase: kbLabel,\n                updatedAt: field.updated_at || Date.now(),\n                icon,\n                isDefault: false\n              };\n            });\n            availableMetadata = [...availableMetadata, ...customFields];\n          }\n        });\n      }\n    } catch (error) {\n      console.error(\"Error loading metadata:\", error);\n    } finally {\n      availableMetadata.sort((a, b) => {\n        if (a.isDefault && !b.isDefault) return 1;\n        if (!a.isDefault && b.isDefault) return -1;\n        if (!a.isDefault && !b.isDefault) return a.updatedAt - b.updatedAt;\n        return a.name.localeCompare(b.name);\n      });\n      setAvailableMetadataState(availableMetadata);\n      setIsLoadingMetadata(false);\n    }\n  }, [selectedKnowledgeIds]);\n\n  useEffect(() => {\n    const currentIds = JSON.stringify(selectedKnowledgeIds());\n    if (currentIds !== lastKnowledgeIdsRef.current) {\n      lastKnowledgeIdsRef.current = currentIds;\n      if (isEnabled) {\n        fetchAndPrepareMetadata();\n      }\n    } else if (isEnabled && availableMetadataState.length === 0) {\n      fetchAndPrepareMetadata();\n    }\n  }, [selectedKnowledgeIds(), isEnabled, availableMetadataState.length, fetchAndPrepareMetadata]);\n\n  useEffect(() => {\n    if (isInitialMount.current) {\n      isInitialMount.current = false;\n      if (data.value) {\n        setIsEnabled(data.value.enabled ?? false);\n        setRelation(data.value.operator === \"or\" ? \"or\" : \"and\");\n        if (data.value.conditions && Array.isArray(data.value.conditions)) {\n          const newConditions = data.value.conditions.map(cond => ({\n            id: cond.id || generateUUID(8),\n            metadataField: cond.knowledge_id && cond.metadata_field\n              ? `${cond.knowledge_id}-${cond.metadata_field}`\n              : \"\",\n            operator: cond.comparison_operation || \"\",\n            valueType: cond.right_value_type === \"ref\" ? \"reference\" : \"input\",\n            value: cond.right_value || \"\",\n            valueLabel: cond.right_label || \"\",\n          }));\n          setConditions(newConditions);\n        }\n      }\n      // 初始挂载立即校验\n      checkAllFieldsValidity();\n      validateConditionsUI();\n      onValidate(validateFunc);\n      return;\n    }\n    if (isUpdatingFromExternal.current) {\n      queueMicrotask(() => {\n        isUpdatingFromExternal.current = false;\n      });\n      return;\n    }\n  }, [data.value]);\n\n  // 校验函数直接从 ref 拿最新状态\n  const checkAllFieldsValidity = useCallback(() => {\n    const { conditions, availableMetadataState, isLoadingMetadata } = stateRef.current;\n    if (isLoadingMetadata) return;\n\n    const newFieldErrors = { ...fieldErrors };\n\n    conditions.forEach(cond => {\n      if (!cond.metadataField) {\n        if (newFieldErrors[cond.id]) delete newFieldErrors[cond.id];\n        return;\n      }\n\n      const isFieldValid = availableMetadataState.some(meta => meta.id === cond.metadataField);\n      if (!isFieldValid) {\n        newFieldErrors[cond.id] = t('invalidOrDeletedMetadataField');\n      } else if (newFieldErrors[cond.id] === t('invalidOrDeletedMetadataField')) {\n        delete newFieldErrors[cond.id];\n      }\n    });\n\n    if (JSON.stringify(newFieldErrors) !== JSON.stringify(fieldErrors)) {\n      setFieldErrors(newFieldErrors);\n    }\n  }, [fieldErrors]);\n\n  // validateFunc 从 ref 拿最新 conditions\n  const validateFunc = useCallback(() => {\n    const { conditions, availableMetadataState } = stateRef.current;\n    const errors = [];\n    conditions.forEach((cond, index) => {\n\n      if (!cond.metadataField) errors.push(t('selectMetadataField', { index: index + 1 }));\n      if (!cond.operator) errors.push(t('selectOperator', { index: index + 1 }));\n\n      // Real-time fetch of field type\n      const meta = stateRef.current.availableMetadataState.find(m => m.id === cond.metadataField);\n      if (meta?.type === \"Number\" && !cond.valueLabel && cond.valueType === \"reference\") {\n        errors.push(t('enterValue', { index: index + 1 }));\n      }\n    });\n    return errors.length > 0 ? errors.join('; ') : false;\n  }, []);\n\n  const validateConditionsUI = useCallback(() => {\n    const { conditions } = stateRef.current;\n    const isValid = conditions.every(cond => {\n      if (!cond.metadataField || !cond.operator) return false;\n      if ([`is_empty`, `is_not_empty`].includes(cond.operator)) return true;\n\n      const meta = stateRef.current.availableMetadataState.find(m => m.id === cond.metadataField);\n      if (meta?.type === \"Number\") {\n        return !!cond.value;\n      }\n      return true;\n    });\n\n    setRequired(!isValid);\n    return isValid;\n  }, []);\n\n  useLayoutEffect(() => {\n    if (!isEnabled) {\n      onChange({ enabled: false });\n      onValidate(() => false);\n      return;\n    }\n\n    checkAllFieldsValidity();\n    validateConditionsUI();\n    onValidate(validateFunc);\n\n    const filterData = {\n      enabled: true,\n      operator: relation,\n      conditions: stateRef.current.conditions.map(cond => {\n        const [knowledgeId, ...fieldParts] = cond.metadataField.split(\"-\");\n        const metadata_field = fieldParts.join(\"-\");\n        return {\n          id: cond.id,\n          knowledge_id: knowledgeId ? parseInt(knowledgeId, 10) : 0,\n          metadata_field: metadata_field || \"\",\n          comparison_operation: cond.operator,\n          right_value_type: cond.valueType === \"reference\" ? \"ref\" : \"input\",\n          right_value: cond.value,\n          right_label: cond.valueLabel\n        };\n      }),\n    };\n    onChange(filterData);\n  }, [isEnabled, relation, conditions, checkAllFieldsValidity, validateConditionsUI, validateFunc, onChange, onValidate]);\n  const validateVars = useCallback(async (): Promise<string> => {\n    if (!isEnabled) return \"\";\n\n    try {\n      const knowledgeIds = selectedKnowledgeIds();\n      if (knowledgeIds.length === 0) return \"\";\n\n      const knowledgeDetails = await getKnowledgeDetailApi(knowledgeIds);\n\n      const validFieldIds = new Set<string>();\n      knowledgeDetails.forEach((detail: any) => {\n\n        const defaultFields = [\"document_id\", \"document_name\", \"upload_time\", \"update_time\", \"uploader\", \"updater\"];\n        defaultFields.forEach(field => {\n          validFieldIds.add(`${detail.id}-${field}`);\n        });\n\n        if (detail.metadata_fields) {\n          detail.metadata_fields.forEach((field: any) => {\n            validFieldIds.add(`${detail.id}-${field.field_name}`);\n          });\n        }\n      });\n\n      const { conditions } = stateRef.current;\n      for (const condition of conditions) {\n        if (!condition.metadataField) continue;\n        if (!validFieldIds.has(condition.metadataField)) {\n          setError(true)\n          const fieldName = condition.metadataField.split(\"-\").pop() || \"\";\n          // 获取节点名称，如果没有则使用默认值\n          const nodeName = node?.name || t('defaultNodeName');\n          return `${nodeName} ${t('nodeError2', { fieldName })}`;\n        }\n      }\n      setError(false)\n      return \"\";\n    } catch (error) {\n      console.error(\"Error validating metadata fields:\", error);\n      return t('metadataFieldValidationError');\n    }\n  }, [isEnabled, selectedKnowledgeIds, node]);\n\n  useEffect(() => {\n    if (onVarEvent) {\n      onVarEvent(validateVars);\n    }\n    return () => {\n      if (onVarEvent) {\n        onVarEvent(() => Promise.resolve(\"\"));\n      }\n    };\n  }, [onVarEvent, validateVars]);\n\n  const filteredMetadata = useMemo(() => {\n    const term = searchTerm.toLowerCase().trim();\n    if (!term) return availableMetadataState;\n    return availableMetadataState.filter(meta =>\n      meta.name.toLowerCase().includes(term) ||\n      meta.knowledgeBase.toLowerCase().includes(term)\n    );\n  }, [availableMetadataState, searchTerm]);\n\n  const addCondition = () => {\n    setConditions(prev => [...prev, {\n      id: generateUUID(8),\n      metadataField: \"\",\n      operator: \"\",\n      valueType: \"input\",\n      value: \"\",\n      valueLabel: \"\"\n    }]);\n  };\n\n  const deleteCondition = (id: string) => {\n    setConditions(prev => prev.filter(c => c.id !== id));\n    // 立即清除错误，同时触发副作用校验\n    setFieldErrors(prev => {\n      const newErrors = { ...prev };\n      delete newErrors[id];\n      return newErrors;\n    });\n  };\n\n  const updateCondition = (id: string, field: keyof MetadataCondition, value: string) => {\n    setConditions(prev => {\n      const newConditions = prev.map(condition => {\n        if (condition.id === id) {\n          let updated = { ...condition, [field]: value };\n\n          if (field === \"metadataField\") {\n            const selectedMeta = availableMetadataState.find(m => m.id === value);\n            setFieldErrors(prev => {\n              const newErrors = { ...prev };\n              if (!selectedMeta && value) newErrors[id] = t('invalidOrDeletedMetadataField');\n              else delete newErrors[id];\n              return newErrors;\n            });\n            if (selectedMeta) {\n              updated = {\n                ...updated,\n                operator: \"\",\n                value: \"\",\n                valueType: \"input\",\n                valueLabel: \"\"\n              };\n              if (selectedMeta.type === \"Number\") updated.value = \"0\";\n            }\n          }\n          if (field === \"operator\") {\n            updated = {\n              ...updated,\n              value: \"\",\n              valueLabel: \"\"\n            };\n          }\n          if (field === \"valueType\") {\n            updated = {\n              ...updated,\n              value: \"\",\n              valueLabel: \"\"\n            };\n          }\n\n          return updated;\n        }\n        return condition;\n      });\n\n      // 更新 stateRef\n      stateRef.current.conditions = newConditions;\n      return newConditions;\n    });\n  };\n  const handleRelationChange = () => {\n    setRelation(prev => prev === \"and\" ? \"or\" : \"and\");\n  };\n\n  const renderValueInput = (condition: MetadataCondition) => {\n    const metadataType = stateRef.current.availableMetadataState.find(m => m.id === condition.metadataField)?.type;\n    const isEmptyOperator = [`is_empty`, `is_not_empty`].includes(condition.operator);\n\n    if (isEmptyOperator) return <Input placeholder={t('noInputNeeded')} value=\"\" disabled className=\"bg-gray-100 h-8\" />;\n\n    if (condition.valueType === \"reference\") {\n      const selectedLabel = condition.valueLabel\n        ? condition.valueLabel.split('.').reduce((acc, part, index, array) => index === array.length - 1 ? `${acc}/${part}` : `${acc}.${part}`)\n        : \"\";\n      return (\n        <div className=\"flex items-center gap-1 min-w-0\">\n          <SelectVar\n            className=\"max-w-40 flex-1\"\n            nodeId={nodeId}\n            itemKey={condition.id}\n            onSelect={(E: any, v: any) => {\n              updateCondition(condition.id, \"value\", `${E.id}.${v.value}`);\n              updateCondition(condition.id, \"valueLabel\", `${E.name}/${v.label}`);\n            }}\n          >\n            <div className=\"no-drag nowheel group flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400\">\n              <span className=\"flex items-center flex-1 truncate\">{selectedLabel || t('selectOption')}</span>\n              <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n            </div>\n          </SelectVar>\n        </div>\n      );\n    }\n\n    if (metadataType === \"String\") return <Input placeholder={t('enterValue2')} value={condition.value} onChange={(e) => updateCondition(condition.id, \"value\", e.target.value)} maxLength={255} className=\"h-8\" />;\n    if (metadataType === \"Number\") return (\n      <div className=\"w-full mt-2\">\n        <NumberInput value={condition.value} onChange={(value) => updateCondition(condition.id, \"value\", value)} />\n      </div>\n    );\n    if (metadataType === \"Time\") return <DatePicker value={condition.value ? new Date(condition.value) : undefined} placeholder={t('selectTime')} showTime onChange={(d) => updateCondition(condition.id, \"value\", d ? format(d, \"yyyy-MM-dd'T'HH:mm:ss\") : \"\")} />;\n    return <Input placeholder={t('enterValue2')} value={condition.value} onChange={(e) => updateCondition(condition.id, \"value\", e.target.value)} className=\"h-8\" />;\n  };\n\n  return (\n    <div className=\"space-y-4 rounded-lg min-w-0 mb-4\">\n      <div className=\"flex items-center justify-between min-w-0\">\n        <div className=\"flex items-center gap-2\"><span className=\"text-sm font-medium text-gray-500\">{t(`${i18nPrefix}label`)}</span></div>\n        <Switch checked={isEnabled} onCheckedChange={setIsEnabled} />\n      </div>\n      {isEnabled && (\n        <div className=\"space-y-3 min-w-0\">\n          <div className=\"space-y-2 min-w-0 relative\">\n            {conditions.length > 1 && (\n              <div className=\"absolute left-1 top-0 w-4 h-full py-4\">\n                <div className=\"h-full border border-foreground border-dashed border-r-0 rounded-l-sm\">\n                  <Badge variant=\"outline\" className=\"absolute top-1/2 left-0.5 -translate-x-1/2 -translate-y-1/2 px-1 py-0 text-primary bg-[#E6ECF6] cursor-pointer z-10\" onClick={handleRelationChange}>\n                    {relation} <RefreshCcw size={12} />\n                  </Badge>\n                </div>\n              </div>\n            )}\n            {conditions.map((condition) => {\n              const metadataType = stateRef.current.availableMetadataState.find(m => m.id === condition.metadataField)?.type;\n              const isTimeType = metadataType === \"Time\";\n              const hasError = !!fieldErrors[condition.id];\n\n              const selectedMeta = stateRef.current.availableMetadataState.find(m => m.id === condition.metadataField);\n              const displayName = selectedMeta ? selectedMeta.name : condition.metadataField.split(\"-\").pop() || t('unknownField');\n              const displayIcon = selectedMeta ? selectedMeta.icon : null;\n\n              return (\n                <div key={condition.id} className=\"relative group pl-10\">\n                  <div className=\"flex gap-2 items-center min-w-0\">\n                    <div className={`flex-1 min-w-0 ${isTimeType ? 'max-w-[15%]' : 'max-w-[25%]'}`}>\n                      <Select\n                        value={condition.metadataField}\n                        onValueChange={(value) => updateCondition(condition.id, \"metadataField\", value)}\n                        onOpenChange={setIsSelectOpen}\n                      >\n                        <SelectTrigger className={`h-8 min-w-0 ${error ? 'border-red-500 ring-1 ring-red-500' : ''}`}>\n                          <SelectValue placeholder={t('selectVariable')}>\n                            {condition.metadataField && (\n                              <TooltipProvider>\n                                <Tooltip>\n                                  <TooltipTrigger asChild>\n                                    <div className=\"flex items-center gap-1\" style={{ pointerEvents: 'auto' }}>\n                                      {displayIcon}\n                                      <span style={{ flex: 1, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n                                        {displayName}\n                                      </span>\n                                    </div>\n                                  </TooltipTrigger>\n                                  <TooltipContent className=\"max-w-[200px] whitespace-normal z-50\" style={{ whiteSpace: 'normal', wordBreak: 'break-word', pointerEvents: 'none' }}>\n                                    {hasError ? fieldErrors[condition.id] : displayName}\n                                  </TooltipContent>\n                                </Tooltip>\n                              </TooltipProvider>\n                            )}\n                          </SelectValue>\n                        </SelectTrigger>\n                        <SelectContent>\n                          <div className=\"max-h-60 overflow-y-auto\">\n                            {isLoadingMetadata ? (\n                              <div className=\"p-4 text-center text-sm text-gray-500\">{t('loadingMetadataFields')}</div>\n                            ) : (\n                              <>\n                                <div className=\"p-2 border-b\">\n                                  <div className=\"relative\">\n                                    <Search className=\"absolute left-3 top-2 h-3 w-3 text-muted-foreground\" />\n                                    <input type=\"text\" placeholder={t('searchMetadata')} className=\"w-full pl-8 pr-2 py-1 text-[12px] border rounded\" value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} onClick={(e) => e.stopPropagation()} />\n                                  </div>\n                                </div>\n                                {filteredMetadata.length > 0 ? (\n                                  filteredMetadata.map((meta) => (\n                                    <SelectItem key={meta.id} value={meta.id} showIcon={false} customContent={true} className=\"pr-2 w-full max-w-[200px]\">\n                                      <div className=\"flex items-center justify-between w-full gap-1 min-w-0\">\n                                        <div className=\"flex items-center gap-1 min-w-0 flex-1\">\n                                          <span className=\"flex-shrink-0 text-xs\">{meta.icon}</span>\n                                          <span className=\"text-xs text-muted-foreground flex-shrink-0\">{meta.type}</span>\n                                          <TooltipProvider><Tooltip><TooltipTrigger asChild><span className=\"truncate text-xs min-w-0 flex-1\">{meta.name}</span></TooltipTrigger><TooltipContent className=\"max-w-[200px] break-words\"><p className=\"text-xs\">{meta.name}</p></TooltipContent></Tooltip></TooltipProvider>\n                                        </div>\n                                        <TooltipProvider><Tooltip><TooltipTrigger asChild><span className=\"text-xs text-gray-500 truncate max-w-[60px] text-right flex-shrink-0 ml-1\">{meta.knowledgeBase}</span></TooltipTrigger><TooltipContent className=\"max-w-[200px] break-words\"><p className=\"text-xs\">{meta.knowledgeBase}</p></TooltipContent></Tooltip></TooltipProvider>\n                                      </div>\n                                    </SelectItem>\n                                  ))\n                                ) : (\n                                  <div className=\"p-2 text-center text-xs text-gray-500\">{t('noMetadataFields')}</div>\n                                )}\n                              </>\n                            )}\n                          </div>\n                        </SelectContent>\n                      </Select>\n                    </div>\n                    <div className={`flex-1 min-w-0 ${isTimeType ? 'max-w-[15%]' : 'max-w-[20%]'}`}>\n                      <Select value={condition.operator} onValueChange={(value) => updateCondition(condition.id, \"operator\", value)} disabled={!condition.metadataField}>\n                        <SelectTrigger className=\"h-8 min-w-0\"><SelectValue placeholder={t('selectCondition')} /></SelectTrigger>\n                        <SelectContent>\n                          {metadataType && operatorConfig[metadataType].map((op) => (\n                            <SelectItem key={op} value={op}>{operatorLabels[op]}</SelectItem>\n                          ))}\n                        </SelectContent>\n                      </Select>\n                    </div>\n                    {\n                      ![`is_empty`, `is_not_empty`].includes(condition.operator) && (\n                        <>\n                          <div className={`flex-1 min-w-0 ${isTimeType ? 'max-w-[16%]' : 'max-w-[20%]'}`}>\n                            <Select value={condition.valueType} onValueChange={(value: \"reference\" | \"input\") => updateCondition(condition.id, \"valueType\", value)}>\n                              <SelectTrigger className=\"h-8 min-w-0\">\n                                <div className=\"flex items-center justify-between w-full\">\n                                  <span>{condition.valueType === \"reference\" ? t('reference') : t('input')}</span>\n                                  {condition.valueType === \"reference\" && metadataType === \"Time\" && (\n                                    <div className=\"relative group/info flex-shrink-0\">\n                                      <CircleQuestionMark size={16} className=\"text-gray-400\" />\n                                      <div className=\"absolute bottom-full right-0 mb-2 hidden group-hover/info:block p-2 bg-black text-white text-xs rounded z-10\">{t('referenceFormatTip')}</div>\n                                    </div>\n                                  )}\n                                </div>\n                              </SelectTrigger>\n                              <SelectContent>\n                                <SelectItem value=\"reference\">{t('reference')}</SelectItem>\n                                <SelectItem value=\"input\">{t('input')}</SelectItem>\n                              </SelectContent>\n                            </Select>\n                          </div>\n                          <div className={`flex-1 min-w-0 ${isTimeType ? 'max-w-[45%]' : 'max-w-[25%]'}`}>{renderValueInput(condition)}</div>\n                        </>\n                      )\n                    }\n                    <div className={`flex-shrink-0 ${isTimeType ? 'max-w-[10%]' : 'max-w-[10%]'} flex justify-center`}>\n                      <Trash2 size={18} onClick={() => deleteCondition(condition.id)} className=\"hover:text-red-600 cursor-pointer group-hover:opacity-100 opacity-0\" />\n                    </div>\n                  </div >\n                </div >\n              );\n            })}\n          </div >\n          <Button onClick={addCondition} variant=\"outline\" className=\"border-primary text-primary mt-2 h-8\">{t('+ Add Condition')}</Button>\n        </div >\n      )}\n    </div >\n  );\n};\n\nexport default MetadataFilter;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ModelItem.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport Cascader from \"@/components/bs-ui/select/cascader\";\nimport { getLlmDefaultModel } from \"@/controllers/API/finetune\";\nimport { useModel } from \"@/pages/ModelPage/manage\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ModelItem({ agent = false, data, onChange, onValidate, i18nPrefix }) {\n    const { t } = useTranslation('flow');\n\n    const { llmOptions, isLoading } = useModel(agent ? 'assistant' : 'llm');\n    const [modelId, setModelId] = useState(null); // set initial state as null\n\n    useEffect(() => {\n        if (llmOptions && llmOptions.length > 0 && agent && !data.value) {\n            const id = String(llmOptions[0]?.children[0]?.value);\n            setModelId(id);\n            onChange(Number(id));\n        } else if (!agent) {\n            getLlmDefaultModel().then(res => {\n                if (res && !data.value) {\n                    const id = String(res.model_id);\n                    setModelId(id);\n                    onChange(Number(id));\n                } else {\n                    setModelId(String(data.value));\n                }\n            });\n        } else {\n            setModelId(String(data.value));\n        }\n    }, [llmOptions]);\n\n    const defaultValue = useMemo(() => {\n        if (!modelId || !llmOptions || llmOptions.length === 0) return [];\n\n        let _defaultValue = [];\n        llmOptions.some(option => {\n            const model = option.children.find(el => String(el.value) === modelId);\n            if (model) {\n                _defaultValue = [{ value: option.value, label: option.label }, { value: model.value, label: model.label }];\n                return true;\n            }\n            return false;\n        });\n\n        if (_defaultValue.length === 0) {\n            onChange(null); // handle missing model gracefully\n        }\n\n        return _defaultValue;\n    }, [modelId, llmOptions]);\n\n    const [error, setError] = useState(false);\n\n    useEffect(() => {\n        onValidate(() => {\n            if (!data.value) {\n                setError(true)\n                return t(`${i18nPrefix}label`) + ' ' + t('required')\n            }\n            setError(false)\n            return false\n        })\n\n        return () => onValidate(() => { });\n    }, [data.value])\n\n    return (\n        <div className='node-item mb-4'>\n            <Label className=\"flex items-center bisheng-label mb-2\">\n                {data.required && <span className=\"text-red-500\">*</span>}\n                {t(`${i18nPrefix}label`)}\n            </Label>\n            <Cascader\n                error={error}\n                placeholder={t(`${i18nPrefix}placeholder`)}\n                defaultValue={defaultValue}\n                options={llmOptions}\n                onChange={(val) => onChange(Number(val[1]))}\n            />\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/NumberInput.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction NumberInput({ value, onChange }) {\n  const [inputValue, setInputValue] = useState(value === '' ? '0' : value || '0');\n  const [error, setError] = useState('');\n  const { t } = useTranslation('flow')\n\n  // 同步外部值变化\n  useEffect(() => {\n    // 如果外部值为空，则显示0；否则显示实际值\n    if (value === '' || value === undefined || value === null) {\n      setInputValue('0');\n      onChange('0');\n    } else {\n      setInputValue(String(value));\n    }\n  }, [value]);\n  useEffect(() => {\n    if (value === '' || value === undefined || value === null) {\n      onChange('0');\n    }\n  }, []);\n  // 验证数字范围\n  const validateNumber = (numValue) => {\n    // 空值或0都视为有效\n    if (numValue === '' || numValue === '0') {\n      return { isValid: true, value: '0' };\n    }\n\n    // 允许单独的负号\n    if (numValue === '-') {\n      return { isValid: true, value: '-' };\n    }\n\n    const number = Number(numValue);\n    if (isNaN(number)) {\n      return { isValid: false, error: t('enterValidNumber') };\n    }\n\n    // 检查32位整数范围 (-2^31 到 2^31-1)\n    if (number < -4294967296 || number > 4294967296) {\n      return { isValid: false, error: t('numberExceedsMaxLimit') };\n    }\n\n    return { isValid: true, value: number };\n  };\n\n  // 处理输入变化\n  const handleChange = (e) => {\n    const newValue = e.target.value;\n    setInputValue(newValue);\n\n    // 如果清空输入，暂时不更新父组件，等失去焦点时处理\n    if (newValue === '') {\n      setError('');\n      return;\n    }\n\n    // 允许单独的负号\n    if (newValue === '-') {\n      setError('');\n      onChange('-');\n      return;\n    }\n\n    const validation = validateNumber(newValue);\n    if (validation.isValid) {\n      setError('');\n      onChange(String(validation.value));\n    } else {\n      setError(validation.error);\n    }\n  };\n\n  // 处理失去焦点事件\n  const handleBlur = () => {\n    // 如果输入为空，设置为0\n    if (inputValue === '') {\n      setInputValue('0');\n      setError('');\n      onChange('0');\n      return;\n    }\n\n    // 如果只有负号，设置为0\n    if (inputValue === '-') {\n      setInputValue('0');\n      setError('');\n      onChange('0');\n      return;\n    }\n\n    const validation = validateNumber(inputValue);\n    if (!validation.isValid) {\n      // 如果无效，设置为0\n      setInputValue('0');\n      setError('');\n      onChange('0');\n    } else {\n      // 确保格式正确\n      const finalValue = String(validation.value);\n      setInputValue(finalValue);\n      onChange(finalValue);\n    }\n  };\n\n  return (\n    <div>\n      <input\n        type=\"number\"\n        value={inputValue}\n        onChange={handleChange}\n        onBlur={handleBlur}\n        className={`w-full px-3 py-1 border rounded-md nodrag h-8 bg-gray-50 mb-2 ${error ? 'border-red-500 focus:border-red-500 focus:ring-red-500' : 'border-gray-300 focus:border-blue-500'\n          }`}\n        min=\"-4294967296\"\n        max=\"4294967295\"\n      />\n      {error && <p className=\"fixed text-red-500 text-xs\">{error}</p>}\n    </div>\n  );\n}\nexport default NumberInput;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/OutputItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\"; // 引入国际化\nimport { CustomHandle } from \"..\";\nimport DragOptions from \"./DragOptions\";\nimport VarInput from \"./VarInput\";\n\nconst OutputItem = ({ nodeId, node, data, onChange, onValidate, onVarEvent, i18nPrefix }) => {\n    const { t } = useTranslation('flow'); // 使用国际化\n    const [interactionType, setInteractionType] = useState<string>(data.value.type || \"none\"); // 交互类型状态\n    const options = useMemo(() => {\n        return data.options.map(el => ({\n            id: el.id,\n            text: el.label,\n            type: ''\n        }))\n    }, [data.options]);\n\n    data.label = t('userInputContent')\n    data.required = false\n\n    // 根据交互类型切换不同的展示\n    const renderContent = (error) => {\n        switch (interactionType) {\n            case \"none\":\n                return null;\n            case \"choose\":\n                return (\n                    <DragOptions\n                        edit\n                        edges\n                        options={options}\n                        onChange={(opts) => {\n                            data.options = opts.map(el => ({\n                                id: el.id,\n                                label: el.text,\n                                value: ''\n                            }));\n                        }}\n                    />\n                );\n            case \"input\":\n                return (\n                    <div className=\"node-item mb-2\" data-key={data.key}>\n                        <div className=\"flex justify-between items-center\">\n                            <Label className=\"bisheng-label\">\n                                {t(\"userInputLabel\")} {/* 用户输入框展示内容 */}\n                            </Label>\n                            <Badge\n                                variant=\"outline\"\n                                className=\"bg-[#E6ECF6] text-[#2B53A0]\"\n                            >\n                                {data.key}\n                            </Badge>\n                        </div>\n                        <VarInput\n                            error={error}\n                            placeholder={t(\"userInputPlaceholder\")}\n                            nodeId={nodeId}\n                            itemKey={data.key}\n                            paramItem={data}\n                            value={data.value.value}\n                            onVarEvent={onVarEvent}\n                            onChange={(msg) =>\n                                onChange({ type: interactionType, value: msg })\n                            }\n                        />\n                    </div>\n                );\n            default:\n                return null;\n        }\n    };\n\n    const handleChangeType = (val) => {\n        setInteractionType(val);\n        if (interactionType === \"choose\" || val === \"choose\") {\n            const addNodeEvent = new CustomEvent(\"outputDelEdge\", {\n                detail: { nodeId }\n            });\n            window.dispatchEvent(addNodeEvent);\n        }\n    }\n\n    const [error, setError] = useState(false);\n    useEffect(() => {\n        data.required &&\n            onValidate(() => {\n                if (interactionType === \"choose\" && !data.options.length) {\n                    setError(true);\n                    return t(\"optionsCannotBeEmpty\"); // 选项不可为空\n                }\n                // if (interactionType === \"input\" && !data.value.value?.trim()) {\n                //     setError(true);\n                //     return '展示内容不可为空'; // 输入不可为空\n                // }\n                setError(false);\n                return false;\n            });\n\n        return () => onValidate(() => { });\n    }, [data.value, interactionType]);\n\n    return (\n        <div className=\"node-item mb-4\" data-key={data.key}>\n            <Label className=\"bisheng-label\">{t(`${i18nPrefix}label`)}</Label>\n            {/* 交互类型选择器 */}\n            <RadioGroup\n                value={interactionType}\n                onValueChange={(val) => {\n                    handleChangeType(val)\n                    onChange({ type: val, value: \"\" });\n                    setError(false);\n                }}\n                className=\"mt-2\"\n            >\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"none\" id=\"r1\" />\n                    <Label htmlFor=\"r1\">{t(\"noInteraction\")}</Label> {/* 无交互 */}\n                </div>\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"choose\" id=\"r2\" />\n                    <Label htmlFor=\"r2\" className=\"flex items-center\">\n                        {t(\"chooseInteraction\")} {/* 选择型交互 */}\n                        <QuestionTooltip content={t(\"chooseInteractionTooltip\")} />\n                    </Label>\n                </div>\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"input\" id=\"r3\" />\n                    <Label htmlFor=\"r3\" className=\"flex items-center\">\n                        {t(\"inputInteraction\")} {/* 输入型交互 */}\n                        <QuestionTooltip content={t(\"inputInteractionTooltip\")} />\n                    </Label>\n                </div>\n            </RadioGroup>\n\n            <div className=\"interaction-content mt-4 nodrag\">\n                {renderContent(error)}\n                {error && interactionType === \"choose\" && (\n                    <div className=\"text-red-500 text-sm mt-2\">\n                        {t(\"optionsCannotBeEmpty\")} {/* 选项不可为空 */}\n                    </div>\n                )}\n                {interactionType !== \"choose\" && <CustomHandle node={node} />}\n            </div>\n        </div>\n    );\n};\n\nexport default OutputItem;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ReportItem.tsx",
    "content": "\nimport { Button } from '@/components/bs-ui/button';\nimport { Dialog, DialogContent, DialogTrigger } from '@/components/bs-ui/dialog';\nimport { Input } from '@/components/bs-ui/input';\nimport { Label } from '@/components/bs-ui/label';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReportWordEdit from './ReportWordEdit';\n\nexport default function ReportItem({ nodeId, data, onChange, onValidate, i18nPrefix }) {\n    const { t } = useTranslation('flow');\n    const [value, setValue] = useState({\n        name: data.value.file_name || '',\n        key: data.value.version_key || ''\n    });\n\n    const handleChange = (key) => {\n        setValue({ ...value, key });\n        onChange({\n            file_name: value.name,\n            version_key: key\n        });\n    };\n\n    const [error, setError] = useState(false);\n    useEffect(() => {\n        data.required && onValidate(() => {\n            if (!data.value.file_name) {\n                setError(true);\n                return t('cannotBeEmpty', { label: t(`${i18nPrefix}label`) });\n            }\n            setError(false);\n            return false;\n        });\n\n        return () => onValidate(() => { });\n    }, [data.value]);\n\n    return (\n        <div className='node-item mb-4 nodrag' data-key={data.key}>\n            <Label className='bisheng-label'>\n                {data.required && <span className='text-red-500'>*</span>}\n                {t(`${i18nPrefix}label`)}\n            </Label>\n            <Input\n                value={value.name}\n                className={`mt-2 ${error && 'border-red-500'}`}\n                placeholder={t(`${i18nPrefix}placeholder`)}\n                maxLength={100}\n                showCount\n                onChange={(e) => {\n                    setValue({ ...value, name: e.target.value });\n                    onChange({\n                        file_name: e.target.value,\n                        version_key: value.key\n                    });\n                }}\n            ></Input>\n\n            <Dialog>\n                <DialogTrigger asChild>\n                    <Button id={value.key} variant='outline' className='border-primary text-primary mt-2 h-8'>\n                        {t('editReportTemplate')}\n                    </Button>\n                </DialogTrigger>\n                <DialogContent close={false} className='size-full lg:max-w-full pt-12' onKeyDown={(e) => {\n                    e.stopPropagation();\n                }}>\n                    <ReportWordEdit nodeId={nodeId} versionKey={value.key} onChange={handleChange} />\n                </DialogContent>\n            </Dialog>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ReportWordEdit.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { DialogClose } from \"@/components/bs-ui/dialog\"\nimport { getWorkflowReportTemplate } from \"@/controllers/API/workflow\"\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\"\nimport Word from \"@/pages/Report/components/Word\"\nimport { ChevronDown, ChevronLeft } from \"lucide-react\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useParams } from \"react-router-dom\"\nimport SelectVar from \"./SelectVar\"\n// save(fe) -> office(onlyofc) -> upload(be)\nexport default function ReportWordEdit({ versionKey, nodeId, onChange }) {\n    const { t } = useTranslation()\n    const { id: flowId } = useParams();\n\n    const { docx, loading, pageLoading, createDocx, importDocx } = useReport(versionKey, flowId, onChange)\n\n    // inset var\n    const iframeRef = useRef(null)\n    const handleInset = (value) => {\n        if (!iframeRef.current) return\n        const iframeDom = iframeRef.current.querySelector('iframe')\n        if (!iframeDom) return\n        // console.log('value :>> ', value);\n        iframeDom.contentWindow.postMessage(JSON.stringify({\n            type: \"onExternalPluginMessage\",\n            action: 'insetMarker',\n            data: value\n        }), '*');\n    }\n    const [show, setShow] = useState(true) // 处理var select聚焦问题\n\n    if (pageLoading) return <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-primary/20\">\n        <LoadingIcon />\n    </div>\n\n    // new\n    if (!docx.path) return <div className=\"relative size-full\">\n        <div className=\"absolute -top-10 z-10 flex gap-4\">\n            <DialogClose className=\"\">\n                <Button variant=\"outline\" size=\"icon\" className=\"bg-[#fff] size-8\"><ChevronLeft /></Button>\n            </DialogClose>\n        </div>\n        <div className=\"bg-accent size-full flex justify-center items-center\">\n            <div className=\"border rounded-md p-8 py-10 w-1/2 bg-card\">\n                <p className=\"text-xl\">{t('report.reportTemplate')}</p>\n                <p className=\"text-sm mt-2\">{t('report.reportDescription')}</p>\n                <div className=\"flex gap-2 mt-4\">\n                    <Button size=\"sm\" className=\"w-full\" onClick={createDocx}>{t('report.newButton')}</Button>\n                    <Button variant=\"secondary\" disabled={loading} size=\"sm\" className=\"w-full border-gray-200\" onClick={importDocx}>\n                        {loading && <span className=\"loading loading-spinner loading-sm pointer-events-none h-8 pl-3\"></span>}\n                        {t('report.importButton')}\n                    </Button>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    return <div className=\"relative size-full\">\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-primary/20\">\n            <LoadingIcon />\n        </div>}\n        <div className=\"flex h-full\">\n            <div ref={iframeRef} className=\"relative flex-1 border bg-accent\">\n                <div className=\"absolute -top-10 z-10 flex gap-4\">\n                    <DialogClose className=\"\">\n                        <Button variant=\"outline\" size=\"icon\" className=\"bg-[#fff] size-8\"><ChevronLeft /></Button>\n                    </DialogClose>\n                    {show && <SelectVar\n                        nodeId={nodeId}\n                        itemKey={''}\n                        align=\"normal\"\n                        onSelect={(E, v) => {\n                            handleInset(`${E.id}.${v.value}`)\n                            setShow(false)\n                            setTimeout(() => {\n                                setShow(true)\n                            }, 1);\n                        }}>\n                        <Button className=\"h-8\">{t('inserVar')}<ChevronDown size={14} /></Button>\n                    </SelectVar>}\n                </div>\n                <Word data={docx} workflow></Word>\n                {/* <LabelPanne onInset={handleInset}></LabelPanne> */}\n            </div>\n        </div>\n    </div >\n};\n\n\nconst useReport = (versionKey, flowId, onchange) => {\n    const [loading, setLoading] = useState(false)\n    const [pageLoading, setPageLoading] = useState(true)\n\n    const [docx, setDocx] = useState({\n        key: '',\n        path: ''\n    })\n\n    useEffect(() => {\n        getWorkflowReportTemplate(versionKey, flowId).then(res => {\n            setPageLoading(false)\n            setDocx({\n                key: res.version_key,\n                path: res.url\n            })\n            console.warn('REPORT:读取报告所用KEY是 :>> ', versionKey);\n            console.warn('REPORT:读取报告所后变更KEY是 :>> ', res.version_key);\n            onchange(res.version_key)\n        })\n    }, [])\n\n\n    const handleCreate = async () => {\n        // 本地调试\n        // setDocx(docx => ({ ...docx, path: 'http://192.168.106.120:3002/empty.docx' }))\n        setDocx(doc => ({ ...docx, path: location.origin + __APP_ENV__.BASE_URL + '/empty.docx' }))// 文档服务能访问到的文件地址\n    }\n\n    const handleImport = () => {\n        // 上传\n        // Create a file input element\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \".doc, .docx\";\n        input.style.display = \"none\"; // Hidden from view\n        input.multiple = false; // Allow only one file selection\n\n        input.onchange = (e: Event) => {\n            setLoading(true);\n\n            // Get the selected file\n            const file = (e.target as HTMLInputElement).files?.[0];\n            uploadFileWithProgress(file, (progress) => { }).then(res => {\n                setLoading(false);\n                setDocx(docx => ({ ...docx, path: res.file_path }))\n            })\n        };\n\n        input.click();\n    }\n\n    return {\n        loading,\n        pageLoading,\n        docx,\n        createDocx: handleCreate,\n        importDocx: handleImport\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/RetrievalWeightSlider.tsx",
    "content": "import { Slider } from '@/components/bs-ui/slider';\nimport { Switch } from '@/components/bs-ui/switch';\nimport {\n    Tooltip,\n    TooltipContent,\n    TooltipProvider,\n    TooltipTrigger\n} from '@/components/bs-ui/tooltip';\nimport { useModel } from '@/pages/ModelPage/manage';\nimport { ModelSelect } from '@/pages/ModelPage/manage/tabs/WorkbenchModel';\nimport { WorkflowNodeParam } from '@/types/flow';\nimport { HelpCircle } from 'lucide-react';\nimport React, { useEffect, useState } from 'react';\nimport InputItem from './InputItem';\nimport { useTranslation } from 'react-i18next';\n\ninterface RerankModel {\n    value: string;\n    label: string;\n}\n\n/**\n * 检索配置组件\n * 包含权限校验、开关控制、权重调整和结果设置\n */\ninterface RetrievalConfigProps {\n    data: WorkflowNodeParam;\n    onChange: (value: any) => void;\n    onValidate?: (validate: () => string | false) => void;\n}\n\nconst RetrievalConfig: React.FC<RetrievalConfigProps> = ({ data, onChange, onValidate, i18nPrefix }) => {\n    const { t } = useTranslation('flow'); // 使用国际化\n    const [keywordWeight, setKeywordWeight] = useState(data.value?.keyword_weight ?? 0.5);\n    const [vectorWeight, setVectorWeight] = useState(1 - (data.value?.keyword_weight ?? 0.5));\n    const [searchSwitch, setSearchSwitch] = useState(data.value?.search_switch ?? false);\n    const [rerankEnabled, setRerankEnabled] = useState(data.value?.rerank_flag ?? false);\n    const [selectedRerankModel, setSelectedRerankModel] = useState(data.value?.rerank_model || '');\n    const [resultLength, setResultLength] = useState(data.value?.max_chunk_size || 15000);\n    const [userAuth, setUserAuth] = useState(data.value?.user_auth ?? false);\n    const { rerank } = useModel();\n\n    useEffect(() => {\n        const total = keywordWeight + vectorWeight;\n        if (Math.abs(total - 1.0) > 0.001) {\n            const normalizedKeyword = keywordWeight / total;\n            const normalizedVector = vectorWeight / total;\n            setKeywordWeight(normalizedKeyword);\n            setVectorWeight(normalizedVector);\n        }\n    }, [keywordWeight, vectorWeight]);\n\n    useEffect(() => {\n        if (searchSwitch && rerankEnabled) {\n            onValidate(() => {\n                if (!selectedRerankModel) {\n                    return t('rerankModelCannotBeEmpty');\n                }\n                return false;\n            });\n        } else {\n            onValidate(() => false);\n        }\n        return () => onValidate(() => false);\n    }, [searchSwitch, rerankEnabled, selectedRerankModel, onValidate]);\n\n    useEffect(() => {\n        if (searchSwitch) {\n            onChange({\n                keyword_weight: keywordWeight,\n                vector_weight: vectorWeight,\n                user_auth: userAuth,\n                search_switch: searchSwitch,\n                rerank_flag: rerankEnabled,\n                rerank_model: selectedRerankModel,\n                max_chunk_size: resultLength,\n            });\n        } else {\n            onChange({\n                keyword_weight: 0.5,\n                vector_weight: 0.5,\n                user_auth: false,\n                search_switch: false,\n                rerank_flag: false,\n                rerank_model: '',\n                max_chunk_size: 15000,\n            });\n        }\n    }, [\n        keywordWeight,\n        vectorWeight,\n        searchSwitch,\n        rerankEnabled,\n        selectedRerankModel,\n        resultLength,\n        userAuth\n    ]);\n\n    const handleSliderChange = (value: number[]) => {\n        const newKeywordWeight = value[0];\n        const newVectorWeight = 1.0 - newKeywordWeight;\n\n        setKeywordWeight(newKeywordWeight);\n        setVectorWeight(newVectorWeight);\n    };\n\n    const handleSearchToggle = (checked: boolean) => {\n        setSearchSwitch(checked);\n    };\n\n    return (\n        <div className=\"space-y-2 rounded-lg mb-4\">\n            <div className=\"flex items-center justify-between\">\n                <div className=\"flex items-center gap-2\">\n                    <span className=\"text-sm font-medium text-gray-500\">{t(`${i18nPrefix}label`)}</span>\n                </div>\n                <Switch\n                    checked={searchSwitch}\n                    onCheckedChange={handleSearchToggle}\n                />\n            </div>\n\n            {searchSwitch && (\n                <div className=\"flex items-center justify-between pl-4\">\n                    <div className=\"flex items-center gap-2\">\n                        <span className=\"text-sm font-medium text-gray-500\">{t('userAuthVerification')}</span>\n                        <TooltipProvider>\n                            <Tooltip>\n                                <TooltipTrigger asChild>\n                                    <HelpCircle className=\"h-4 w-4 text-gray-400 cursor-pointer\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"max-w-xs\">{t('enableToVerifyUserAccessToKnowledgeBase')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                    <Switch\n                        checked={userAuth}\n                        onCheckedChange={setUserAuth}\n                    />\n                </div>\n            )}\n\n            {searchSwitch && (\n                <div className=\"space-y-4 pl-4\">\n                    <div className=\"flex items-center gap-2\">\n                        <span className=\"text-sm font-medium text-gray-500\">{t('retrieverWeightSettings')}</span>\n                        <TooltipProvider>\n                            <Tooltip>\n                                <TooltipTrigger asChild>\n                                    <HelpCircle className=\"h-4 w-4 text-gray-400 cursor-pointer\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"max-w-xs\">{t('adjustWeightForVectorOrKeywordSearch')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n\n                    <div className=\"space-y-2\">\n                        <div className=\"flex items-center gap-3\">\n                            <div className=\"flex flex-col items-start w-12\">\n                                <span className=\"text-xs font-medium text-gray-600\">{t('keyword')}</span>\n                                <span className=\"text-xs text-gray-500\">{keywordWeight.toFixed(2)}</span>\n                            </div>\n\n                            <div className=\"flex-1 px-0\">\n                                <Slider\n                                    value={[keywordWeight]}\n                                    onValueChange={handleSliderChange}\n                                    min={0}\n                                    max={1}\n                                    step={0.01}\n                                    className=\"w-full\"\n                                />\n                            </div>\n\n                            <div className=\"flex flex-col items-end w-12\">\n                                <span className=\"text-xs font-medium text-gray-600\">{t('vector')}</span>\n                                <span className=\"text-xs text-gray-500\">{vectorWeight.toFixed(2)}</span>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            )}\n\n            {searchSwitch && (\n                <div className=\"flex items-center justify-between pl-4\">\n                    <div className=\"flex items-center gap-2\">\n                        <span className=\"text-sm font-medium text-gray-500\">{t('retrievalResultReRank')}</span>\n                        <TooltipProvider>\n                            <Tooltip>\n                                <TooltipTrigger asChild>\n                                    <HelpCircle className=\"h-4 w-4 text-gray-400 cursor-pointer\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"max-w-xs\">{t('useRerankModelForReorderingResults')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                    <Switch\n                        checked={rerankEnabled}\n                        onCheckedChange={setRerankEnabled}\n                        disabled={!searchSwitch}\n                    />\n                </div>\n            )}\n\n            {rerankEnabled && searchSwitch && (\n                <div className=\"pl-4\">\n                    <ModelSelect\n                        close\n                        label=\"\"\n                        placeholder={t('selectRerankModel')}\n                        value={selectedRerankModel}\n                        options={rerank}\n                        onChange={(val) => setSelectedRerankModel(val)}\n                    />\n                </div>\n            )}\n\n            {searchSwitch && (\n                <div className=\"space-y-2 pl-4\">\n                    <div className=\"flex items-center gap-2\">\n                        <label className=\"text-sm font-medium text-gray-500\">{t('retrievalResultLength')}</label>\n                        <TooltipProvider>\n                            <Tooltip>\n                                <TooltipTrigger asChild>\n                                    <HelpCircle className=\"h-4 w-4 text-gray-400 cursor-pointer\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"max-w-xs\">{t('controlResultTextLengthForModel')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                    <InputItem\n                        type=\"number\"\n                        linefeed\n                        data={{\n                            min: 0,\n                            value: resultLength,\n                            label: '' // 标签已在上方单独显示，此处留空\n                        }}\n                        onChange={(value) => setResultLength(Number(value))}\n                    />\n                </div>\n            )}\n        </div>\n    );\n};\n\nexport default RetrievalConfig;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/SelectVar.tsx",
    "content": "import { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Select, SelectContent, SelectTrigger } from \"@/components/bs-ui/select\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { cname } from \"@/components/bs-ui/utils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { ChevronRight } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport useFlowStore from \"../../flowStore\";\nimport NodeLogo from \"../NodeLogo\";\n\n// 全选 半选 未选\nconst enum SelectStatus {\n    Uncheck = false,\n    HalfCheck = 'indeterminate',\n    Check = true,\n}\n\nconst isMatch = (obj, expression) => {\n    // 临时关闭 file类型表单变量\n    if (obj.key === 'form_input') {\n        expression = \"value.filter(el => el.type !== 'file').map(el => ({ label: el.key, value: el.key }))\"\n    }\n    const fn = new Function('value', `return ${expression}`);\n    return fn(obj.value);\n};\n\n// 特殊结构提取变量\nconst getSpecialVar = ({ obj, group, onlyImg = false }) => {\n    const type = obj.global\n    \n    switch (type) {\n        case 'item:form_input':\n            return obj.value.reduce((res, item) => {\n                const { file_type, file_parse_mode: mode } = item;\n\n                const add = (propKey) => res.push({ label: item[propKey], value: item[propKey] });\n                // 文本use key\n                if (['select', 'text'].includes(item.type)) {\n                    !onlyImg && add('key')\n                    return res\n                }\n                // 1. 优先处理图片 (这是唯一在 onlyImg=true 时可能被添加的项)\n                // 当模式为 keep_raw 且类型不为 file 时，包含图片变量\n                if (mode === 'keep_raw' && file_type !== 'file') {\n                    add('image_file');\n                }\n\n                // 2. 如果只需要图片，此时直接结束本次循环\n                // 后续所有逻辑默认都处于 !onlyImg 的上下文中，无需重复判断\n                if (onlyImg) return res;\n\n                // 3. 处理文件/文本逻辑 (已隐含 !onlyImg 条件)\n                switch (mode) {\n                    case 'ingest_to_temp_kb':\n                        add('key');\n                        break;\n                    case 'extract_text':\n                        add('file_content');\n                        break;\n                    case 'keep_raw':\n                        // 无论是 'all' 还是 'file'，只要不是 onlyImg (已在上面拦截)，都推入 file_path\n                        // if (file_type === 'all' || file_type === 'file') {\n                            add('file_path');\n                        // }\n                        break;\n                    default:\n                        add('key');\n                        break;\n                }\n\n                return res;\n            }, []);\n        case 'item:input_list':\n            if (!obj.value.length) return []\n            if (!obj.value[0].value) return []\n            const param = cloneDeep(obj)\n            param.value = param.value.map(item => ({ label: item.label || item.value, value: item.key }))\n            return [{ param, label: obj.key, value: obj.key }]\n    }\n    return []\n}\n\n/**\n * 深度定制组件\n * @param  nodeId 节点id, itemKey 当前变量key, children, onSelect\n * @returns \n */\nconst SelectVar = forwardRef(({\n    nodeId,\n    align = \"left\",\n    findInputFile = false, // 只展示input节点file_image变量(视觉表单项使用)\n    itemKey, multip = false, value = [], children, onSelect, onCheck, className = '' }, ref) => {\n    const [open, setOpen] = useState(false)\n    const { flow } = useFlowStore()\n    const [select, setSelect] = useState(['', ''])\n\n    const inputOpenRef = useRef(false)\n    useImperativeHandle(ref, () => ({\n        open(inputOpen) {\n            inputOpenRef.current = !!inputOpen\n            setOpen(true)\n        }\n    }));\n\n    const getNodeDataByTemp = (temp) => {\n        // const hasChild = temp.group_params.some(group =>\n        //     group.params.some(param => param.global)\n        // )\n        const firstMenu = {\n            id: temp.id,\n            type: temp.type,\n            name: temp.name,\n            icon: <NodeLogo type={temp.type} colorStr={temp.name} />,\n            desc: temp.description,\n            tab: temp.tab?.value || '',\n            data: temp.group_params\n        }\n        const children = getGlobalChild(firstMenu)\n        firstMenu.data = children.length ? children : null\n        return firstMenu\n    }\n\n    // vars\n    const [vars, setVars] = useState([])\n    const currentMenuRef = useRef(null)\n    const getGlobalChild = (item) => {\n        // start节点 preset_question#0(中文)\n        // input节点 key\n        // agent xxx#0\n        let _vars = []\n        item.data.forEach(group => {\n            group.params.forEach(param => {\n                // 过滤不相同tab\n                if (item.tab && param.tab && item.tab !== param.tab) return\n                // 过滤当前节点的output变量\n                if (nodeId === item.id && (\n                    param.key.indexOf('output') === 0 ||\n                    (param.key.indexOf('retrieved') === 0 && param.global.split('=')[0] !== 'self')\n                )) return\n                // 不能选自己(相同变量名视为self) param.key\n                if (nodeId === item.id && param.key === itemKey) return\n                if (!param.global) return\n                // 处理code表达式\n                if (param.global.indexOf('code') === 0) {\n                    let result = isMatch(param, param.global.replace('code:', ''));\n                    // 没值 key补\n                    if (!result.length && (param.key.startsWith('output') || param.key.startsWith('retrieved'))) {\n                        result = [{\n                            label: param.key,\n                            value: param.key\n                        }]\n                    }\n                    _vars = [..._vars, ...result]\n                    // 特殊变量(getSpecialVar前端策略)\n                } else if (param.global.startsWith('item')) {\n                    const result = getSpecialVar({ obj: param, onlyImg: findInputFile, group })\n                    _vars = [..._vars, ...result]\n                } else if ((param.global === 'key' && nodeId !== item.id)\n                    || (param.global === 'self' && nodeId === item.id)) {\n                    _vars.push({\n                        label: param.key,\n                        value: param.key\n                    })\n                } else if (param.global && param.global.indexOf('=') !== -1) {\n                    const [key, value] = param.global.split('=')\n                    // 特殊逻辑\n                    // 私有变量\n                    if (key === 'self') {\n                        if (nodeId === item.id && value.indexOf(itemKey) !== -1) {\n                            _vars.push({\n                                label: param.key,\n                                value: param.key\n                            })\n                        }\n                    } else {\n                        // 从自身找是否满足表达式的条件\n                        const result = isMatch(param, param.global.replace(/=(.*)/, \"=== '$1'\"));\n                        result && _vars.push({\n                            label: param.key,\n                            value: param.key\n                        })\n                    }\n                }\n            });\n        });\n\n        return _vars\n    }\n\n    const nodeTemps = useMemo(() => {\n        // 如果节点数据未加载或组件未打开，返回空数组\n        if (!flow?.nodes || !open) return [];\n\n        return flow.nodes.reduce((processedNodes, node) => {\n            let nodeData = node.data;\n\n            // 特殊处理输入节点\n            if (node.data.type === 'input') {\n                // 输入节点，跳过自己\n                if (node.data.id === nodeId) return processedNodes\n                nodeData = processInputNode(node.data, findInputFile);\n            }\n            // 其他节点，跳过\n            else if (findInputFile) {\n                return processedNodes;\n            }\n\n            const newNode = getNodeDataByTemp(nodeData);\n            newNode.data && processedNodes.push(newNode);\n            return processedNodes;\n        }, []);\n    }, [open, flow.nodes]);\n\n    /**\n     * 根据文件类型过滤dialog_image_files文件变量\n     * 限制findInputFileOnly为true时，过滤其他变量,只返回dialog_image_files文件变量\n     * 处理输入节点数据\n     * @param {Object} inputNodeData 原始节点数据\n     * @param {Boolean} findInputFileOnly 是否仅返回文件变量\n     */\n    function processInputNode(inputNodeData, findInputFileOnly) {\n        if (inputNodeData.tab.value === 'form_input') return inputNodeData;\n\n        const processedData = cloneDeep(inputNodeData);\n\n        // 1. Pre-extract 'dialog_file_accept' value for internal logic\n        let acceptType = 'all';\n        for (const group of processedData.group_params) {\n            const acceptParam = group.params.find(p => p.key === 'dialog_file_accept');\n            if (acceptParam) {\n                acceptType = acceptParam.value;\n                break;\n            }\n        }\n\n        processedData.group_params.forEach(group => {\n            // --- Logic for 'inputfile' group switch ---\n            if (group.groupKey === 'inputfile') {\n                const userInputFileParam = group.params.find(p => p.key === 'user_input_file');\n                // If the file upload feature is disabled, clear the entire group\n                if (userInputFileParam && userInputFileParam.value === false) {\n                    group.params = [];\n                    return;\n                }\n            }\n\n            // Get the parse mode if it exists in this group\n            const parseMode = group.params.find(p => p.key === 'file_parse_mode')?.value;\n\n            group.params = group.params.filter(param => {\n                // HIGHEST PRIORITY: If the parameter does NOT have 'global', keep it (no filtering)\n                if (!Object.prototype.hasOwnProperty.call(param, 'global')) {\n                    return true;\n                }\n\n                const { key } = param;\n\n                // --- INTERNAL LOGIC: Specific to 'inputfile' group variables ---\n                if (group.groupKey === 'inputfile') {\n                    // Filter based on file_parse_mode\n                    if (parseMode === 'extract_text' && ['dialog_image_files', 'dialog_file_paths'].includes(key)) {\n                        return false;\n                    }\n                    if (parseMode === 'keep_raw' && key === 'dialog_files_content') {\n                        return false;\n                    }\n\n                    // Filter based on dialog_file_accept type\n                    if (acceptType === 'file' && key === 'dialog_image_files') {\n                        return false;\n                    }\n                }\n\n                // --- GLOBAL FILTER: Only applies if findInputFileOnly is requested ---\n                if (findInputFileOnly) {\n                    // Only return dialog_image_files as the valid file variable\n                    return key === 'dialog_image_files';\n                }\n\n                return true;\n            });\n        });\n\n        // 3. Remove groups that are empty after filtering\n        // processedData.group_params = processedData.group_params.filter(\n        //     group => group.params.length > 0\n        // );\n\n        return processedData;\n    }\n\n    // 三级变量 预置问题\n    const [questions, setQuestions] = useState([])\n    const handleShowQuestions = (param) => {\n        const values = param.value.filter(e => e.label)\n        setQuestions(values.map(({ label, value }) => ({\n            label,\n            value: `${param.key}#${value}`\n        })))\n    }\n\n    // clear\n    useEffect(() => {\n        if (!open) {\n            setVars([])\n            setQuestions([])\n        }\n    }, [open])\n\n    // 级联checkbox\n    const checkKeys = useMemo(() => {\n        if (!onCheck) return {};\n\n        // 工具函数：计算选中状态\n        const getCheckStatus = (checkedCount, totalCount) => {\n            if (totalCount === 0) return SelectStatus.Uncheck;\n            if (checkedCount === totalCount) return SelectStatus.Check;\n            if (checkedCount > 0) return SelectStatus.HalfCheck;\n            return SelectStatus.Uncheck;\n        };\n\n        // 工具函数：处理三级菜单（如 preset_question）\n        const handleNestedItems = (parentKey, items, valueSet) => {\n            const keys = {};\n            let checkedCount = 0;\n\n            items.forEach((item, index) => {\n                const itemKey = `${parentKey}#${item.value}`;\n                const isChecked = valueSet.has(itemKey);\n                keys[itemKey] = isChecked ? SelectStatus.Check : SelectStatus.Uncheck;\n                if (isChecked) checkedCount++;\n            });\n\n            keys[parentKey] = getCheckStatus(checkedCount, items.length);\n            return { keys, checkedCount };\n        };\n\n        const valueSet = new Set(value);\n\n        // 遍历一级菜单\n        return nodeTemps.reduce((acc, itemL1) => {\n            let checkedCountL1 = 0;\n\n            // 遍历二级菜单\n            itemL1.data.forEach((itemL2) => {\n                const keyL2 = `${itemL1.id}.${itemL2.value}`;\n\n                if (['preset_question', 'custom_variables'].includes(itemL2.value)) {\n                    // 处理三级菜单\n                    const { keys: nestedKeys, checkedCount: checkedCountL2 } = handleNestedItems(\n                        keyL2,\n                        itemL2.param.value.filter(e => e.label),\n                        valueSet\n                    );\n                    Object.assign(acc, nestedKeys);\n                    // if (checkedCountL2 === itemL2.param.value.length - 1) checkedCountL1++;\n                    // question半选按选中计算\n                    if (checkedCountL2 > 0) checkedCountL1++;\n                } else {\n                    // 处理普通二级菜单\n                    const isChecked = valueSet.has(keyL2);\n                    acc[keyL2] = isChecked ? SelectStatus.Check : SelectStatus.Uncheck;\n                    if (isChecked) checkedCountL1++;\n                }\n            });\n\n            // 更新一级菜单的选中状态\n            acc[itemL1.id] = getCheckStatus(checkedCountL1, itemL1.data.length);\n            return acc;\n        }, {});\n    }, [nodeTemps, value, onCheck]);\n\n\n    const handleCheckClick = (checked, nodeId, variable = null) => {\n        const currentNode = nodeTemps.find((item) => item.id === nodeId);\n        if (!currentNode) return;\n\n        // 工具函数：处理预设问题（preset_question）\n        const handlePresetQuestion = (data, tasks) => {\n            return data.param.value\n                // .slice(0, -1) // 排除最后一个元素\n                .map((item) => {\n                    item.label && tasks.push({\n                        node: currentNode,\n                        variable: { ...item, value: `${data.label || data.value}#${item.value}` },\n                    })\n                });\n        };\n\n        // 工具函数：处理普通变量\n        const handleNormalVariable = (item) => {\n            return { node: currentNode, variable: item };\n        };\n\n        // 生成任务列表\n        const tasks = [];\n        // 全选\n        if (!variable) {\n            currentNode.data.forEach((item) => {\n                if (item.param) {\n                    handlePresetQuestion(item, tasks);\n                } else {\n                    tasks.push(handleNormalVariable(item));\n                }\n            });\n        } else if (variable.param) {\n            // 全选二级\n            currentNode.data.some((item) => {\n                if (item.param && variable.value === item.value) {\n                    handlePresetQuestion(item, tasks);\n                    return true\n                }\n            });\n        } else {\n            tasks.push(handleNormalVariable(variable));\n        }\n\n        // 回调父组件\n        onCheck(checked, tasks);\n    };\n\n    return <Select open={open} onOpenChange={setOpen} >\n        <SelectTrigger\n            onClick={() => inputOpenRef.current = false}\n            showIcon={false}\n            className={cname('group shrink min-w-0 p-0 h-auto data-[placeholder]:text-inherit border-none bg-transparent shadow-none outline-none focus:shadow-none focus:outline-none focus:ring-0', className)}>\n            {children}\n        </SelectTrigger>\n        <SelectContent position=\"popper\" avoidCollisions={false} className={align === 'left' ? \"overflow-auto -translate-x-28\" : 'overflow-auto'} >\n            <div className=\"flex max-h-[360px] \">\n                {/* 三级级联菜单 */}\n                <div className=\"w-36 min-w-36 border-l first:border-none overflow-y-auto  scrollbar-hide\">\n                    {nodeTemps.map(item =>\n                        <div\n                            className={`${select[0] === item.id && 'bg-[#EBF0FF]'} relative flex justify-between w-full select-none items-center rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50`}\n                            onMouseEnter={() => {\n                                setSelect([item.id, ''])\n                                currentMenuRef.current = item;\n                                setVars(item.data)\n                                setQuestions([])\n                            }}\n                        >\n                            {onCheck && <Checkbox checked={checkKeys[item.id]} onCheckedChange={(bln) => handleCheckClick(bln, item.id)} className=\"mr-1\" />}\n                            {item.icon}\n                            <span className=\"w-28 overflow-hidden text-ellipsis ml-2\">{item.name}</span>\n                            <ChevronRight className=\"size-4\" />\n                        </div>\n                    )}\n                </div>\n                {!!vars.length && <div className=\"w-36 min-w-36 border-l first:border-none overflow-y-auto scrollbar-hide\">\n                    {vars.map(v =>\n                        <div\n                            className={`${select[1] === v.value && 'bg-[#EBF0FF]'} relative flex justify-between w-full select-none items-center rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50`}\n                            onClick={() => {\n                                if (v.param) return\n                                onSelect(currentMenuRef.current, v, inputOpenRef.current)\n                                !multip && setOpen(false)\n                            }}\n                            onMouseEnter={() => {\n                                v.param ? handleShowQuestions(v.param) : setQuestions([])\n                                setSelect((old) => [old[0], v.value])\n                            }}>\n                            {onCheck && <Checkbox\n                                checked={checkKeys[`${currentMenuRef.current.id}.${v.value}`]}\n                                className=\"mr-1\"\n                                onCheckedChange={(bln) => handleCheckClick(bln, currentMenuRef.current.id, v)}\n                                onClick={e => e.stopPropagation()}\n                            />}\n                            <span className=\"w-28 overflow-hidden text-ellipsis\">{v.label}</span>\n                            {v.param && <ChevronRight className=\"size-4\" />}\n                            {/* {value.includes(`${currentMenuRef.current.id}.${v.value}`) && <Check size={14} />} */}\n                        </div>\n                    )}\n                </div>}\n                {\n                    !!questions.length && <div className=\"w-44 min-w-36 border-l first:border-none\">\n                        {questions.map(q =>\n                            <div\n                                className=\"relative flex justify-between w-full select-none items-center rounded-sm p-1.5 text-sm outline-none cursor-pointer hover:bg-[#EBF0FF] data-[focus=true]:bg-[#EBF0FF] dark:hover:bg-gray-700 dark:data-[focus=true]:bg-gray-700 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n                                onClick={() => {\n                                    onSelect(currentMenuRef.current, q, inputOpenRef.current)\n                                    !multip && setOpen(false)\n                                }}>\n                                {onCheck && <Checkbox\n                                    checked={checkKeys[`${currentMenuRef.current.id}.${q.value}`]}\n                                    className=\"mr-1\"\n                                    onCheckedChange={(bln) => handleCheckClick(bln, currentMenuRef.current.id, q)}\n                                    onClick={e => e.stopPropagation()}\n                                />}\n                                <Tip content={q.label.length > 7 && q.label} side={\"top\"} >\n                                    <span className=\"w-full overflow-hidden text-ellipsis truncate\">{q.label}</span>\n                                </Tip>\n                                {/* {value.includes(`${currentMenuRef.current.id}.${q.value}`) && <Check size={14} />} */}\n                            </div>\n                        )}\n                    </div>\n                }\n            </div>\n        </SelectContent>\n    </Select >\n});\n\n\nexport default SelectVar"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/SliderItem.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport { Slider } from \"@/components/bs-ui/slider\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function SliderItem({ data, onChange, i18nPrefix }) {\n    const [value, setValue] = React.useState(data.value)\n    const { t } = useTranslation('flow')\n\n    return <div className='node-item mb-4' data-key={data.key}>\n        <Label className='flex items-center bisheng-label'>\n            {t(`${i18nPrefix}label`)}\n            {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n        </Label>\n        <div className=\"flex gap-4 mt-2\">\n            <Slider\n                name=\"slider\"\n                value={[value]}\n                min={data.scope?.[0] || 0}\n                max={data.scope?.[1] || 10}\n                step={data.step || 1}\n                onValueChange={(v) => {\n                    setValue(v[0])\n                    onChange(v[0])\n                }}\n            />\n            <span className=\"w-10\">{value}</span>\n        </div>\n    </div>\n};\n\nexport const SwitchSliderItem = ({ data, onChange, i18nPrefix }) => {\n    const { t } = useTranslation('flow')\n    const [value, setValue] = React.useState({\n        flag: data.value.flag,\n        value: data.value.value\n    })\n\n    return <div className='node-item mb-4' data-key={data.key}>\n        <div className=\"flex justify-between items-center\">\n            <Label className='flex items-center bisheng-label'>\n                {t(`${i18nPrefix}label`)}\n                {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            {/* <Switch checked={value.flag} onCheckedChange={(v) => {\n                const newValue = { ...value, flag: v }\n                setValue(newValue)\n                onChange(newValue)\n            }} /> */}\n        </div>\n        <div className=\"flex gap-4 mt-2\">\n            <Slider\n                className={value.flag ? '' : 'opacity-50 cursor-no-drop'}\n                disabled={!value.flag}\n                name=\"slider\"\n                value={[value.value]}\n                min={data.scope?.[0] || 0}\n                max={data.scope?.[1] || 10}\n                step={data.step || 1}\n                onValueChange={(v) => {\n                    const newValue = { ...value, value: v[0] }\n                    setValue(newValue)\n                    onChange(newValue)\n                }}\n            />\n            <span className=\"w-10\">{value.value}</span>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/SqlConfigItem.tsx",
    "content": "import { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function SqlConfigItem({ data, onChange, onValidate }) {\n    const { t } = useTranslation('flow');\n    const [values, setValues] = useState(data.value);\n    const [errors, setErrors] = useState({});\n\n    const { database_engine, db_address, db_name, db_username, db_password, open } = values;\n\n    // 定义可用的数据库选项\n    const DATABASE_OPTIONS = ['MySQL', 'Db2', 'PostgreSQL', 'GaussDB', 'Oracle'];\n\n    // 初始化时设置默认数据库类型\n    useEffect(() => {\n        if (!database_engine) {\n            handleChange(\"database_engine\", \"mysql\");\n        }\n    }, []);\n\n    // 校验方法\n    const handleValidate = () => {\n        if (!open) return; // 开关关闭时无需校验\n\n        const newErrors = {};\n        const errorMessages = [];\n\n        const validations = [\n            {\n                key: \"database_engine\",\n                value: database_engine,\n                requiredMsg: t(\"dbTypeRequired\"),\n            },\n            {\n                key: \"db_address\",\n                value: db_address,\n                max: 200,\n                requiredMsg: t(\"dbAddressRequired\"), // 数据库地址不可为空\n                maxMsg: t(\"dbAddressTooLong\"), // 数据库地址最多 200 字\n            },\n            {\n                key: \"db_name\",\n                value: db_name,\n                max: 100,\n                requiredMsg: t(\"dbNameRequired\"), // 数据库名称不可为空\n                maxMsg: t(\"dbNameTooLong\"), // 数据库名称最多 100 字\n            },\n            {\n                key: \"db_username\",\n                value: db_username,\n                max: 100,\n                requiredMsg: t(\"dbUsernameRequired\"), // 数据库用户名不可为空\n                maxMsg: t(\"dbUsernameTooLong\"), // 数据库用户名最多 100 字\n            },\n            {\n                key: \"db_password\",\n                value: db_password,\n                requiredMsg: t(\"dbPasswordRequired\"), // 数据库密码不可为空\n            },\n        ];\n\n        validations.forEach(({ key, value, max, requiredMsg, maxMsg }) => {\n            if (!value) {\n                newErrors[key] = true;\n                errorMessages.push(requiredMsg);\n            } else if (max && value.length > max) {\n                newErrors[key] = true;\n                errorMessages.push(maxMsg);\n            }\n        });\n\n        setErrors(newErrors);\n        return errorMessages.length > 0 ? errorMessages[0] : false;\n    };\n\n    // 提供校验回调\n    useEffect(() => {\n        onValidate(handleValidate);\n        return () => onValidate(() => { });\n    }, [values, data.required]);\n\n    const handleChange = (key, value) => {\n        const newValues = { ...values, [key]: value };\n        setValues(newValues);\n        setErrors((prev) => ({ ...prev, [key]: false })); // 清除错误状态\n        onChange(newValues);\n    };\n\n    return (\n        <div className=\"node-item mb-4 relative\" data-key={data.key}>\n            {/* 开关 */}\n            <Switch\n                className=\"absolute -top-8 right-2\"\n                checked={open}\n                onCheckedChange={(checked) => handleChange(\"open\", checked)}\n            />\n\n            {/* 配置表单 */}\n            {open && (\n                <>\n                    {/* 数据库类型下拉框 */}\n                    <Label className=\"flex items-center bisheng-label\">{t(\"dbType\")}</Label>\n                    <Select\n                        value={database_engine}\n                        onValueChange={(value) => handleChange(\"database_engine\", value)}\n                    >\n                        <SelectTrigger className={`mt-2 mb-4 nodrag ${errors.database_engine ? \"border-red-500\" : \"\"}`}>\n                            <SelectValue placeholder={t(\"selectDbType\")} />\n                        </SelectTrigger>\n                        <SelectContent>\n                            {DATABASE_OPTIONS.map((engine) => (\n                                <SelectItem key={engine} value={engine}>\n                                    {engine}\n                                </SelectItem>\n                            ))}\n                        </SelectContent>\n                    </Select>\n\n                    {/* 数据库地址 */}\n                    <Label className=\"flex items-center bisheng-label\">{t(\"dbAddress\")}</Label> {/* 数据库地址 */}\n                    <Input\n                        className={`mt-2 nodrag ${errors.db_address ? \"border-red-500\" : \"\"}`}\n                        value={db_address}\n                        type=\"text\"\n                        onChange={(e) => handleChange(\"db_address\", e.target.value)}\n                    />\n\n                    {/* 数据库名称 */}\n                    <Label className=\"flex items-center bisheng-label mt-4\">{t(\"dbName\")}</Label> {/* 数据库名称 */}\n                    <Input\n                        className={`mt-2 nodrag ${errors.db_name ? \"border-red-500\" : \"\"}`}\n                        value={db_name}\n                        type=\"text\"\n                        onChange={(e) => handleChange(\"db_name\", e.target.value)}\n                    />\n\n                    {/* 数据库用户名 */}\n                    <Label className=\"flex items-center bisheng-label mt-4\">{t(\"dbUsername\")}</Label> {/* 数据库用户名 */}\n                    <Input\n                        className={`mt-2 nodrag ${errors.db_username ? \"border-red-500\" : \"\"}`}\n                        value={db_username}\n                        type=\"text\"\n                        onChange={(e) => handleChange(\"db_username\", e.target.value)}\n                    />\n\n                    {/* 数据库密码 */}\n                    <Label className=\"flex items-center bisheng-label mt-4\">{t(\"dbPassword\")}</Label> {/* 数据库密码 */}\n                    <Input\n                        className={`mt-2 nodrag ${errors.db_password ? \"border-red-500\" : \"\"}`}\n                        value={db_password}\n                        type=\"password\"\n                        onChange={(e) => handleChange(\"db_password\", e.target.value)}\n                    />\n                </>\n            )}\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/SwitchItem.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\"\nimport { Switch } from \"@/components/bs-ui/switch\"\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\"\nimport { useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\nexport default function SwitchItem({ data, onChange, i18nPrefix }) {\n    const [value, setValue] = useState(data.value)\n    const { t } = useTranslation('flow')\n\n    return <div className='node-item mb-4 flex justify-between' data-key={data.key}>\n        <Label className=\"flex items-center bisheng-label\">\n            {t(`${i18nPrefix}label`)}\n            {data.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n        </Label>\n        <Switch checked={value} onCheckedChange={(bln) => {\n            setValue(bln)\n            onChange(bln)\n        }} />\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/TextAreaItem.tsx",
    "content": "import { Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function TextAreaItem({ data, onChange, i18nPrefix }) {\n    const [value, setValue] = useState(data.value || '')\n    const { t } = useTranslation('flow')\n\n    return <div className='node-item mb-4' data-key={data.key}>\n        <Label className='bisheng-label'>{t(`${i18nPrefix}label`)}</Label>\n        <Textarea value={value}\n            className=\"nodrag mt-2\"\n            placeholder={t(`${i18nPrefix}placeholder`) || ''}\n            onChange={(e) => {\n                setValue(e.target.value);\n                onChange(e.target.value);\n            }}\n        ></Textarea>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/ToolItem.tsx",
    "content": "import { TitleIconBg } from \"@/components/bs-comp/cardComponent\";\nimport ToolsSheet from \"@/components/bs-comp/sheets/ToolsSheet\";\nimport { ToolIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { CircleMinus } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ToolItem({ data, onChange, i18nPrefix }) {\n    // { key: string, label: string }[]\n    const [value, setValue] = useState(() => data.value.map(el => ({ id: el.key, name: el.label })))\n    const { t } = useTranslation('flow')\n\n    return <div>\n        <div>\n            {value.map((tool) => (\n                <div\n                    key={tool.id}\n                    className=\"group mt-2 flex cursor-pointer items-center justify-between\"\n                >\n                    <div className=\"flex items-center gap-2\">\n                        <TitleIconBg id={tool.id} className=\"h-6 w-6\">\n                            <ToolIcon />\n                        </TitleIconBg>\n                        <p className=\"text-sm truncate w-60\">{tool.name}</p>\n                    </div>\n                    <CircleMinus\n                        className=\"w-4 h-4 hidden text-primary group-hover:block\"\n                        onClick={() => {\n                            const newValue = value.filter((t) => t.id !== tool.id)\n                            setValue(newValue)\n                            onChange(newValue.map(el => ({ key: el.id, label: el.name })))\n                        }}\n                    />\n                </div>\n            ))}\n        </div>\n        <ToolsSheet select={value} onSelect={(val) => {\n            val.name = val.is_preset === 1 ? t(`tools.${val.tool_key}.name`, { ns: 'tool' }) : val.name\n            const newValue = [...value, val]\n            setValue(newValue)\n            onChange(newValue.map(el => ({ key: el.id, label: el.name, tool_key: el.tool_key })))\n        }}>\n            <Button onClick={() => { }} variant='outline' className=\"border-primary text-primary mt-2\">\n                {t(`${i18nPrefix}label`)}\n            </Button>\n        </ToolsSheet>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/VarInput.tsx",
    "content": "import { RbDragIcon } from \"@/components/bs-icons/rbDrag\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { isVarInFlow, updateVariableName } from \"@/util/flowUtils\";\nimport { Expand, UploadCloud } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../../flowStore\";\nimport { useUpdateVariableState } from \"../flowNodeStore\";\nimport SelectVar from \"./SelectVar\";\n\nfunction encodeHTMLEntities(text) {\n    const textarea = document.createElement(\"textarea\");\n    textarea.textContent = text;\n    return textarea.innerHTML;\n}\n\nfunction decodeHTMLEntities(text) {\n    const parser = new DOMParser();\n    const doc = parser.parseFromString(text, \"text/html\");\n    return doc.documentElement.textContent;\n}\n// 解析富文本内容为保存格式\nfunction parseToValue(input, paramItem) {\n    const tempDiv = document.createElement('div');\n    tempDiv.innerHTML = input.replace(\n        /<span[^>]*?>(.*?)<\\/span>/g, // 匹配所有 <span> 标签\n        (match, content) => {\n            const _content = decodeHTMLEntities(content);\n            // 在对象中查找匹配的 key\n            const key = Object.keys(paramItem.varZh).find((k) => paramItem.varZh[k] === _content);\n            return key ? `{{#${key}#}}` : content; // 如果找到 key，返回 key，否则保持原内容\n        }\n    );\n\n    // 遍历子节点，将 <br> 转换为 \\n，同时处理文本内容\n    const traverseNodes = (node) => {\n        let result = tempDiv !== node && node.nodeName === 'DIV' ? '\\n' : '';\n        node.childNodes.forEach((child) => {\n            if (child.nodeName === 'BR') {\n                result += '\\n'; // 换行符\n            } else if (child.nodeType === Node.TEXT_NODE) {\n                result += child.textContent; // 文本内容\n            } else if (child.nodeType === Node.ELEMENT_NODE) {\n                result += traverseNodes(child); // 递归解析子元素\n            }\n        });\n        return result;\n    };\n    return traverseNodes(tempDiv);\n}\n\nexport default function VarInput({\n    nodeId,\n    itemKey,\n    placeholder = '',\n    paramItem,\n    label = undefined,\n    full = false,\n    value,\n    mini = false,\n    error = false,\n    children = null,\n    onUpload = undefined,\n    onChange,\n    onVarEvent = undefined,\n}) {\n    const { textareaRef, handleFocus, handleBlur, placeholderInit, removePlaceholder } = usePlaceholder(placeholder);\n    const valueRef = useRef(value || '');\n    const [fullVarInputValue, setFullVarInputValue] = useState(value || '');\n    const selectVarRef = useRef(null);\n    const { t } = useTranslation('flow')\n\n    const { flow } = useFlowStore();\n    // 校验变量是否可用\n    const validateVarAvailble = () => {\n        const value = valueRef.current;\n        if (!value.trim()) return Promise.resolve('');\n\n        const [html, error] = parseToHTML(value || '', true);\n        textareaRef.current.innerHTML = html;\n        return Promise.resolve(error);\n    };\n\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [paramItem]);\n\n    const printPyRef = useRef(false); // 正在输入pyin\n    const handleInput = () => {\n        if (printPyRef.current) return;\n        const value = parseToValue(textareaRef.current.innerHTML, paramItem);\n        // console.log('textarea value :>> ', value);\n        valueRef.current = value;\n        setFullVarInputValue(value)\n        onChange(value);\n        removePlaceholder()\n    };\n\n    function parseToHTML(input, validate = false) {\n        let error = '';\n        const html = encodeHTMLEntities(input)\n            .replace(/{{#(.*?)#}}/g, (a, part) => {\n                const _error = validate ? isVarInFlow(nodeId, flow.nodes, part, paramItem.varZh?.[part]) : ''\n                error = _error || error;\n                const msgZh = paramItem.varZh?.[part] || part;\n                return `<span class=${_error ? 'textarea-error' : 'textarea-badge'} contentEditable=\"false\">${msgZh}</span>`;\n            })\n            .replace(/\\n/g, '<br>');\n        return [html, error];\n    }\n\n    useEffect(() => {\n        console.log('!!!value :>> ', value);\n        if (valueRef.current && valueRef.current !== value) {\n            valueRef.current = value;\n        }\n        if (!full) {\n            textareaRef.current.innerHTML = parseToHTML(value || '')[0];\n        }\n        setFullVarInputValue(value)\n        textareaRef.current !== document.activeElement && placeholderInit();\n    }, [value]);\n\n    // firefox hack\n    useEffect(() => {\n        if (full) {\n            textareaRef.current.innerHTML = parseToHTML(value || '')[0];\n            placeholderInit();\n        }\n    }, [])\n\n    // Update Preset Questions \n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!paramItem.varZh) return // No variables, no processing \n        if (!updateVariable) return\n        const { action } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // valueRef.current = valueRef.current.replaceAll(`{{#${key}#}}`, '')\n            // onChange(valueRef.current)\n        } else if (action === 'u') {\n            updateVariableName(paramItem, updateVariable)\n        }\n        textareaRef.current.innerHTML = parseToHTML(valueRef.current || '')[0];\n    }, [updateVariable])\n\n    // 在光标位置插入内容\n    function handleInsertVariable(item, _var, inputOpen) {\n        handleFocus();\n\n        const selection = window.getSelection();\n        if (!selection.rangeCount) {\n            // 没有选区时创建默认选区（可选）\n            const range = document.createRange();\n            range.selectNodeContents(textareaRef.current); // 或选择特定位置\n            selection.addRange(range);\n        }\n        let range = selection.getRangeAt(0);\n\n        if (!textareaRef.current.contains(range.commonAncestorContainer)) {\n            range = document.createRange();\n            range.selectNodeContents(textareaRef.current); // 设置范围为富文本框内容\n            range.collapse(false); // 将光标定位到内容末尾\n            selection.removeAllRanges();\n            selection.addRange(range);\n        }\n\n        // 文本框内容\n        const key = `${item.id}.${_var.value}`;\n        const label = `${item.name.trim()}/${_var.label}`;\n\n        if (paramItem.varZh) {\n            const existingProp = Object.keys(paramItem.varZh).find(prop => paramItem.varZh[prop] === label);\n            if (existingProp) delete paramItem.varZh[existingProp];\n            paramItem.varZh[key] = label;\n        } else {\n            paramItem.varZh = { [key]: label };\n        }\n\n        const html = `<span class=\"textarea-badge\" contentEditable=\"false\">${label}</span>`;\n        const fragment = range.createContextualFragment(html);\n\n        if (inputOpen) {\n            // 删除光标前一个字符{\n            const r = selection.getRangeAt(0);\n            r.setStart(r.endContainer, r.endOffset - 1);\n            range.deleteContents();\n        }\n\n        const lastChild = fragment.lastChild; // 提前保存引用\n        if (lastChild) {\n            range.deleteContents();\n            range.insertNode(fragment);\n\n            // 现在用保存的引用而不是 fragment.lastChild\n            range.setStartAfter(lastChild);\n            range.setEndAfter(lastChild);\n            selection.removeAllRanges();\n            selection.addRange(range);\n        } else {\n            console.warn('No valid child nodes to insert.');\n        }\n\n        handleInput();\n    }\n\n    const handleCopy = (e) => {\n        e.preventDefault();\n\n        const selection = window.getSelection();\n        if (!selection.rangeCount) return;\n        const range = selection.getRangeAt(0);\n        const selectedText = range.cloneContents();\n\n        // Create a new temporary element to store the selected content\n        const wrapper = document.createElement('div');\n        wrapper.appendChild(selectedText);\n\n        if (paramItem.varZh) {\n            try {\n                const jsonStr = JSON.stringify(paramItem.varZh);\n                wrapper.setAttribute('data-custom-data', encodeURIComponent(jsonStr));\n            } catch (err) {\n                console.error('json.stringify varZh failed', err);\n            }\n        }\n\n        // Set the clipboard data\n        e.clipboardData.setData('text/html', wrapper.outerHTML);\n        e.clipboardData.setData('text/plain', selection.toString());\n    }\n\n    const handlePaste = (e) => {\n        e.preventDefault();\n\n        // 1. Get the HTML content\n        let copiedHtml = e.clipboardData.getData('text/html');\n        const copiedText = e.clipboardData.getData('text/plain');\n\n        // If the clipboard doesn't contain HTML, directly insert the plain text and return\n        if (!copiedHtml) {\n            document.execCommand('insertText', false, copiedText);\n            return;\n        }\n\n        // 2. Parse the HTML\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(copiedHtml, 'text/html');\n\n        const dataEl = doc.querySelector('[data-custom-data]');\n        if (dataEl) {\n            const rawData = dataEl.getAttribute('data-custom-data');\n            if (rawData) {\n                try {\n                    const parsedData = JSON.parse(decodeURIComponent(rawData));\n                    console.log('Cross-window data detected:', parsedData);\n\n                    if (paramItem.varZh) {\n                        paramItem.varZh = { ...paramItem.varZh, ...parsedData };\n                    } else {\n                        paramItem.varZh = parsedData;\n                    }\n                } catch (err) {\n                    console.error('Cross-window data error:', err);\n                }\n            }\n        }\n        // 3. Define a recursive processing function\n        const processNodes = (node) => {\n            let result = '';\n\n            node.childNodes.forEach((child) => {\n                // If it is a text node, directly append the text\n                if (child.nodeType === Node.TEXT_NODE) {\n                    result += child.textContent;\n                }\n                // If it is an element node\n                else if (child.nodeType === Node.ELEMENT_NODE) {\n                    // Core logic: if it is a target badge element, keep its HTML (including styles and classes)\n                    if (child.tagName.toLowerCase() === 'span' && child.classList.contains('textarea-badge')) {\n                        result += child.outerHTML;\n                    }\n                    // Special handling: if it is a line break tag, convert it to a space or newline (optional, to prevent text from sticking together)\n                    else if (child.tagName.toLowerCase() === 'br') {\n                        // Here you can decide whether to convert <br> to '\\n' or simply ignore it\n                        // result += '\\n'; \n                    }\n                    // For all other tags: ignore the tag itself, recursively extract the content of its child nodes\n                    else {\n                        result += processNodes(child);\n                    }\n                }\n            });\n\n            return result;\n        };\n\n        // 4. Execute the processing\n        const cleanHtml = processNodes(doc.body);\n\n        console.log('Cleaned mixed content:', cleanHtml);\n\n        // 5. Insert the content\n        // Note: Since the span tags are retained, you still need to use insertHTML\n        document.execCommand('insertHTML', false, cleanHtml);\n    };\n\n    // resize\n    const heightClass = mini ? 'max-h-64' : full ? 'min-h-64' : 'max-h-64 min-h-[80px]';\n    const { height, handleMouseDown } = useResize(textareaRef, mini ? 40 : 80, 40);\n\n    return (\n        <div\n            className={`nodrag mt-2 flex flex-col w-full relative rounded-md border bg-search-input text-sm shadow-sm ${error ? 'border-red-500' : 'border-input'\n                }`}\n        >\n            {mini ?\n                <div className=\"absolute top-2 right-2 flex gap-1\">\n                    <SelectVar ref={selectVarRef} nodeId={nodeId} itemKey={itemKey} onSelect={handleInsertVariable}>\n                        <span className=\"text-muted-foreground hover:text-gray-800 text-xs\"  >{\"{x}\"}</span>\n                    </SelectVar>\n                </div>\n                : <div className=\"flex justify-between gap-1 border-b dark:border-gray-600 px-2 py-1\" onClick={() => textareaRef.current.focus()}>\n                    <Label className=\"bisheng-label text-xs\" onClick={validateVarAvailble}>\n                        {paramItem.required && <span className=\"text-red-500\">*</span>}\n                        {label ?? paramItem.label}\n                    </Label>\n                    <div className=\"flex gap-2\">\n                        <SelectVar ref={selectVarRef} nodeId={nodeId} itemKey={itemKey} onSelect={handleInsertVariable}>\n                            <Tip content={t('insertVariable')} side={\"top\"}>\n                                <span className=\"text-muted-foreground hover:text-gray-800 text-xs\"  >{\"{x}\"}</span>\n                            </Tip>\n                        </SelectVar>\n                        {onUpload && (\n                            <TooltipProvider>\n                                <Tooltip>\n                                    <TooltipTrigger asChild>\n                                        <Button\n                                            variant=\"ghost\"\n                                            className=\"p-0 h-4 text-muted-foreground\"\n                                            onClick={onUpload}\n                                        >\n                                            <UploadCloud size={16} />\n                                        </Button>\n                                    </TooltipTrigger>\n                                    <TooltipContent>\n                                        <p>{t('uploadFile')}</p>\n                                    </TooltipContent>\n                                </Tooltip>\n                            </TooltipProvider>\n                        )}\n                        {!full && <Dialog >\n                            <DialogTrigger asChild>\n                                <Button className=\"text-muted-foreground absolute right-2 top-6 size-5\" size=\"icon\" variant=\"ghost\"><Expand size={14} /></Button>\n                            </DialogTrigger>\n                            <DialogContent className=\"lg:max-w-[620px] translate-x-[-50%]\">\n                                {/* <DialogHeader>\n                                <DialogTitle className=\"flex items-center\"></DialogTitle>\n                            </DialogHeader> */}\n                                <div>\n                                    <VarInput\n                                        full\n                                        nodeId={nodeId}\n                                        itemKey={itemKey}\n                                        placeholder={placeholder}\n                                        paramItem={paramItem}\n                                        label={label}\n                                        value={fullVarInputValue}\n                                        error={error}\n                                        children={children}\n                                        onUpload={onUpload}\n                                        onChange={(val) => {\n                                            textareaRef.current.innerHTML = parseToHTML(val || '')[0];\n                                            handleBlur();\n                                            handleInput();\n                                        }}\n                                    >\n                                    </VarInput>\n                                </div>\n                            </DialogContent>\n                        </Dialog>}\n                    </div>\n                </div>}\n            <div\n                ref={textareaRef}\n                contentEditable\n                style={{ height }}\n                onInput={handleInput}\n                onPaste={handlePaste}\n                onCopy={handleCopy}\n                onFocus={handleFocus}\n                onBlur={handleBlur}\n                onCompositionStart={() => printPyRef.current = true}\n                onCompositionEnd={() => {\n                    printPyRef.current = false\n                    handleInput()\n                }}\n                onKeyDown={(e) => {\n                    // 唤起插入变量\n                    if (e.key === '{') {\n                        requestAnimationFrame(() => {\n                            selectVarRef.current.open(true);\n                        });\n                        e.stopPropagation()\n                    }\n                    if (e.key === 'Backspace') {\n                        // del hook\n                        const selection = window.getSelection();\n                        const range = selection.getRangeAt(0);\n                        const node = range.startContainer;\n                        if (textareaRef.current === node) {\n                            range.setStart(range.endContainer, range.endOffset - 1);\n                            range.deleteContents();\n                            handleInput()\n                            e.preventDefault();  // 阻止默认行为\n                        }\n                    }\n                    e.stopPropagation()\n                }}\n                className={`${heightClass} nowheel bisheng-richtext px-3 py-2 cursor-text whitespace-pre-line overflow-y-auto overflow-x-hidden border-none outline-none bg-search-input rounded-md dark:text-gray-50 placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`}\n            ></div>\n            {children}\n            {/* drag size */}\n            <div\n                className=\"resize-handle w-4 h-4 text-transparent absolute cursor-ns-resize right-0 bottom-0 rounded-ee-md overflow-hidden select-none\"\n                onMouseDown={handleMouseDown}\n            ><RbDragIcon /></div>\n        </div>\n    );\n}\n\nconst useResize = (textareaRef, initialHeight = 80, minHeight = 40) => {\n    const [height, setHeight] = useState(initialHeight); // 初始高度\n\n    // 处理拖拽调整高度\n    const handleDrag = (e) => {\n        e.preventDefault();\n        const newHeight = e.clientY - textareaRef.current.getBoundingClientRect().top;\n        if (newHeight > minHeight) {\n            setHeight(newHeight); // 更新高度\n        }\n    };\n\n    const handleMouseUp = () => {\n        document.removeEventListener('mousemove', handleDrag); // 停止拖拽\n        document.removeEventListener('mouseup', handleMouseUp);\n    };\n\n    const handleMouseDown = (e) => {\n        document.addEventListener('mousemove', handleDrag); // 开始拖拽\n        document.addEventListener('mouseup', handleMouseUp);\n    };\n\n    useEffect(() => {\n        // 在组件卸载时清理事件监听器\n        return () => {\n            document.removeEventListener('mousemove', handleDrag);\n            document.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, []);\n\n    return {\n        height,\n        textareaRef,\n        handleMouseDown\n    };\n};\n\n\nfunction usePlaceholder(placeholder) {\n    const divRef = useRef(null);\n\n    const handleFocus = () => {\n        if (divRef.current && divRef.current.innerHTML.trim() === placeholder) {\n            divRef.current.innerHTML = \"\";\n            divRef.current.classList.remove(\"placeholder\");\n            divRef.current.focus();\n        }\n    };\n\n    const handleBlur = () => {\n        if (divRef.current && ['<br>', ''].includes(divRef.current.innerHTML.trim())) {\n            divRef.current.innerHTML = placeholder;\n            divRef.current.classList.add(\"placeholder\");\n        }\n    };\n\n    const removePlaceholder = () => {\n        divRef.current.classList.remove(\"placeholder\");\n    }\n\n    const init = () => {\n        if (divRef.current && ['<br>', ''].includes(divRef.current.innerHTML.trim())) {\n            divRef.current.innerHTML = placeholder;\n            divRef.current.classList.add(\"placeholder\");\n        } else {\n            divRef.current.classList.remove(\"placeholder\");\n        }\n    }\n\n    useEffect(() => {\n        if (!placeholder) return\n        if (divRef.current) {\n            // 添加事件监听\n            divRef.current.addEventListener(\"focus\", handleFocus);\n            divRef.current.addEventListener(\"blur\", handleBlur);\n\n            // 清理事件监听\n            return () => {\n                if (divRef.current) {\n                    divRef.current.removeEventListener(\"focus\", handleFocus);\n                    divRef.current.removeEventListener(\"blur\", handleBlur);\n                }\n            };\n        }\n    }, [placeholder]);\n\n    return { textareaRef: divRef, placeholderInit: init, handleFocus, handleBlur, removePlaceholder };\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/VarItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { ChevronUp } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useUpdateVariableState } from \"../flowNodeStore\";\n\nexport default function VarItem({ data: paramItem, i18nPrefix }) {\n    const [open, setOpen] = useState(true)\n    const { t } = useTranslation('flow')\n\n    // Update Preset Questions \n    const [_, forceUpdate] = useState(false)\n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!updateVariable) return\n        const { action, question } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // const newValues = paramItem.value.filter(el => el !== key)\n            // setValue(newValues);\n            // onChange(newValues);\n        } else if (action === 'u' && question && Array.isArray(paramItem.value)) {\n            const regOutput = new RegExp(`preset_question_${question.id}$`)\n            paramItem.value.reduce((change, item) => {\n                if (regOutput.test(item.key)) {\n                    item.label = item.label.replace(/_[^_]+$/, '_' + question.name)\n                    return true\n                }\n                return change\n            }, false)\n            forceUpdate(!_)\n        }\n    }, [updateVariable])\n\n    if (Array.isArray(paramItem.value) && paramItem.value.length > 0) return <div className=\"mb-2\">\n        <div className=\"outputs flex justify-between items-center\">\n            <Label className=\"bisheng-label\">\n                {t(`${i18nPrefix}label`)}\n                {paramItem.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            <ChevronUp className={open ? 'rotate-180' : ''} onClick={() => setOpen(!open)} />\n        </div>\n        <div className={open ? 'block' : 'hidden'}>\n            {\n                paramItem.value.map((item, index) =>\n                    <Badge key={item.key} variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0] ml-1 mt-1 max-w-full truncate inline-block\">{item.label}</Badge>\n                )\n            }\n        </div>\n    </div>\n\n    return <div className=\"mb-4 flex justify-between items-center\">\n        <Label className=\"flex items-center bisheng-label\">\n            {t(`${i18nPrefix}label`)}\n            {paramItem.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n        </Label>\n        <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">{paramItem.key}</Badge>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/VarSelectItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { isVarInFlow, updateVariableName } from \"@/util/flowUtils\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"../../flowStore\";\nimport { useUpdateVariableState } from \"../flowNodeStore\";\nimport SelectVar from \"./SelectVar\";\n\nexport const valueToOutput = (newValues, varZh) => {\n    return newValues.map(el => {\n        const labelName = varZh[el];\n        return {\n            key: el.split('.')[1].replace('#', '_'),\n            label: labelName.split('/')[1]\n        };\n    });\n};\n\nexport default function VarSelectItem({ nodeId, data: paramItem, onChange, onOutPutChange, onValidate, onVarEvent, i18nPrefix }) {\n    const [value, setValue] = React.useState(() => paramItem.value || []);\n    const [error, setError] = React.useState(false);\n    const { t } = useTranslation('flow')\n\n    const updateValue = (newValues) => {\n        const outputVar = valueToOutput(newValues, paramItem.varZh || {});\n        onOutPutChange(paramItem.linkage, outputVar);\n        setValue(newValues);\n        onChange(newValues);\n    };\n\n    const handleDelete = (val) => updateValue(value.filter(el => el !== val));\n    const handleChange = (item, v) => {\n        const itemVar = `${item.id}.${v.value}`;\n        if (!value.includes(itemVar)) {\n            if (!paramItem.varZh) paramItem.varZh = {}; // 确保 paramItem.varZh 已初始化\n            paramItem.varZh[itemVar] = `${item.name}/${v.label}`;\n            const newValues = [...value, itemVar];\n            updateValue(newValues);\n        }\n    };\n\n    const handleVarChange = useCallback((checked, items) => {\n        const newValues = value.filter(el => !items.some(({ node, variable }) => `${node.id}.${variable.value}` === el));\n        if (!checked) return updateValue(newValues);\n\n        items.map(({ node, variable }) => {\n            const itemVar = `${node.id}.${variable.value}`;\n            if (!paramItem.varZh) paramItem.varZh = {};\n            paramItem.varZh[itemVar] = `${node.name}/${variable.label}`;\n            newValues.push(itemVar);\n        })\n        updateValue(newValues);\n    }, [value]);\n\n    useEffect(() => {\n        paramItem.required && onValidate(() => {\n            if (!paramItem.value.length) {\n                setError(true)\n                return t(`${i18nPrefix}label`) + ' ' + t('required')\n            }\n            setError(false)\n            return false\n        })\n        return () => onValidate(() => { })\n    }, [paramItem.value])\n\n\n    // 校验变量是否可用\n    const { flow } = useFlowStore();\n    const [errorKeys, setErrorKeys] = useState<string[]>([])\n    const validateVarAvailble = () => {\n        let error = ''\n        const _errorKeys = []\n        value.map(key => {\n            const _error = isVarInFlow(nodeId, flow.nodes, key, paramItem.varZh?.[key]);\n            if (_error) {\n                _errorKeys.push(key)\n                error = _error\n            }\n        })\n        setErrorKeys(_errorKeys)\n        return Promise.resolve(error);\n    };\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [paramItem, value]);\n\n    // Update Preset Questions \n    const [_, forceUpdate] = useState(false)\n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!paramItem.varZh) return // No variables, no processing \n        if (!updateVariable) return\n        const { action } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // const newValues = paramItem.value.filter(el => el !== key)\n            // setValue(newValues);\n            // onChange(newValues);\n        } else if (action === 'u') {\n            updateVariableName(paramItem, updateVariable)\n            forceUpdate(!_)\n        }\n    }, [updateVariable])\n\n    return <div className='node-item mb-4' data-key={paramItem.key}>\n        <div className=\"flex justify-between items-center\">\n            <Label className=\"flex items-center bisheng-label\">\n                {paramItem.required && <span className=\"text-red-500\">*</span>}\n                {t(`${i18nPrefix}label`)}\n                {paramItem.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">{paramItem.key}</Badge>\n        </div>\n        <SelectVar nodeId={nodeId} itemKey={paramItem.key} multip value={value} onSelect={handleChange} onCheck={handleVarChange}>\n            <div className={`${error && 'border-red-500'} no-drag nowheel mt-2 group flex min-h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400`}>\n                <div className=\"flex flex-wrap size-full max-h-32 overflow-y-auto\">\n                    {value.length ? value.map(item => <Badge\n                        onPointerDown={(e) => e.stopPropagation()}\n                        key={item}\n                        className={`flex whitespace-normal items-center gap-1 select-none bg-primary/20 text-primary hover:bg-primary/15 m-[2px] ${errorKeys.includes(item) && 'bg-red-100 border-red-600'}`}>\n                        {paramItem.varZh?.[item]}\n                        <X className=\"h-3 w-3 min-w-3\" onClick={() => handleDelete(item)}></X>\n                    </Badge>\n                    ) : <span className=\"text-gray-400 mt-0.5\">{t(`${i18nPrefix}placeholder`)}</span>}\n                </div>\n                <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n            </div>\n        </SelectVar>\n    </div>\n};\n\n\n// 单选\nexport function VarSelectSingleItem({ nodeId, data: paramItem, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const [value, setValue] = React.useState(paramItem.value)\n    const { t } = useTranslation('flow')\n\n    const handleChange = (item, v) => {\n        // [nodeId.xxx]\n        const itemKey = `${item.id}.${v.value}`\n        const itemLabel = `${item.name}/${v.label}`\n        if (value.key === itemKey) return\n        // varZh  {nodeId.xxx: '中文'}\n        if (paramItem.varZh) {\n            paramItem.varZh[itemKey] = itemLabel\n        } else {\n            paramItem.varZh = { [itemKey]: itemLabel }\n        }\n        setValue(itemKey)\n        onChange(itemKey)\n    }\n\n    const [error, setError] = React.useState(false)\n    useEffect(() => {\n        paramItem.required && onValidate(() => {\n            if (!paramItem.value) {\n                setError(true)\n                return t(`${i18nPrefix}label`) + t('required')\n            }\n            setError(false)\n            return false\n        })\n        return () => onValidate(() => { })\n    }, [paramItem.value])\n\n    // 校验变量是否可用\n    const { flow } = useFlowStore();\n    const validateVarAvailble = () => {\n        const error = isVarInFlow(nodeId, flow.nodes, value, paramItem.varZh?.[value])\n        error && setError(true)\n        return Promise.resolve(error);\n    };\n    useEffect(() => {\n        onVarEvent && onVarEvent(validateVarAvailble);\n        return () => onVarEvent && onVarEvent(() => { });\n    }, [paramItem, value]);\n\n    // Update Preset Questions \n    const [_, forceUpdate] = useState(false)\n    const [updateVariable] = useUpdateVariableState()\n    useEffect(() => {\n        if (!paramItem.varZh) return // No variables, no processing \n        if (!updateVariable) return\n        const { action } = updateVariable\n        if (action === 'd') {\n            // delete paramItem.varZh[key]\n            // setValue('')\n            // onChange('')\n        } else if (action === 'u') {\n            updateVariableName(paramItem, updateVariable)\n            forceUpdate(!_)\n        }\n    }, [updateVariable])\n\n    return <div className='node-item mb-4' data-key={paramItem.key}>\n        <div className=\"flex justify-between items-center\">\n            <Label className=\"flex items-center bisheng-label\">\n                {paramItem.required && <span className=\"text-red-500\">*</span>}\n                {t(`${i18nPrefix}label`)}\n                {paramItem.help && <QuestionTooltip content={t(`${i18nPrefix}help`)} />}\n            </Label>\n            {/* <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">{data.key}</Badge> */}\n        </div>\n        <SelectVar nodeId={nodeId} itemKey={paramItem.key} onSelect={handleChange}>\n            <div className={`${error && 'border-red-500'} no-drag nowheel mt-2 group flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-search-input px-3 py-1 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 data-[placeholder]:text-gray-400`}>\n                <div className=\"flex flex-wrap truncate\">\n                    {value ? paramItem.varZh?.[value] : <span className=\"text-gray-400\">{t(`${i18nPrefix}placeholder`)}</span>}\n                </div>\n                <ChevronDown className=\"h-5 w-5 min-w-5 opacity-80 group-data-[state=open]:rotate-180\" />\n            </div>\n        </SelectVar>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/VarTextareaItem.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport VarInput from \"./VarInput\";\n\nexport default function VarTextareaItem({ node, nodeId, data, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    const [error, setError] = useState(false)\n    const { t } = useTranslation('flow')\n\n    useEffect(() => {\n        data.required && onValidate(() => {\n            if (!data.value.trim()) {\n                setError(true)\n                return (node.type === 'tool' ? data.label : t(`${i18nPrefix}label`)) + ' ' + t('required')\n            }\n            setError(false)\n            return false\n        })\n        return () => onValidate(() => { })\n    }, [data.value, nodeId])\n    \n\n    return (\n        <div className='node-item mb-4 max-w-2xl nodrag' data-key={data.key}>\n            {/* <Label className='bisheng-label'>\n                {data.required && <span className=\"text-red-500\">*</span>}\n                {data.label}\n            </Label> */}\n            <VarInput\n                itemKey={data.key}\n                nodeId={nodeId}\n                paramItem={data}\n                label={node.type === 'tool' ? data.label : t(`${i18nPrefix}label`)}\n                placeholder={data.placeholder && t(`${i18nPrefix}placeholder`)}\n                error={error}\n                value={data.value}\n                onChange={onChange}\n                onVarEvent={onVarEvent}\n            >\n            </VarInput>\n            <p className=\"bisheng-label text-xs mt-1\">{node.is_preset ? t(`tools.${node.tool_key}.params.${data.label}`, { ns: 'tool' }) : data.desc}</p>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/component/VarTextareaUploadItem.tsx",
    "content": "import { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport { File, X } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport VarInput from \"./VarInput\";\n\nexport default function VarTextareaUploadItem({ nodeId, data, onChange, onValidate, onVarEvent, i18nPrefix }) {\n    // console.log('data.value :>> ', data.value);\n    const handleInputChange = (msg) => {\n        onChange({ msg, files })\n    }\n    // Handle file upload\n    const handleFilesChange = (updatedFiles) => {\n        onChange({ msg: data.value?.msg, files: updatedFiles })\n    };\n    const { files, handleFileUpload, handleFileRemove } = useFileUpload(data.value?.files || [], handleFilesChange);\n\n    const [error, setError] = useState(false)\n    const { t } = useTranslation('flow')\n    useEffect(() => {\n        data.required && onValidate(() => {\n            if (!data.value?.msg?.trim() && data.value?.files.length === 0) {\n                setError(true)\n                return t(`${i18nPrefix}label`) + ' ' + t('required')\n            }\n            setError(false)\n            return false\n        })\n        return () => onValidate(() => { })\n    }, [data.value])\n\n    return (\n        <div className='node-item mb-4 nodrag' data-key={data.key}>\n            <div className=\"flex justify-between items-center\">\n                <Label className=\"flex items-center bisheng-label\">\n                    {t('messageContentVariable')}\n                </Label>\n                <Badge variant=\"outline\" className=\"bg-[#E6ECF6] text-[#2B53A0]\">{data.key}</Badge>\n            </div>\n            <VarInput\n                error={error}\n                placeholder={t(`${i18nPrefix}placeholder`)}\n                label={t(`${i18nPrefix}label`)}\n                itemKey={data.key}\n                nodeId={nodeId}\n                paramItem={data}\n                value={data.value?.msg}\n                onUpload={handleFileUpload}\n                onChange={handleInputChange}\n                onVarEvent={onVarEvent}\n            >\n                {/* Display uploaded images */}\n                <div className=\"flex flex-wrap gap-4 p-2\">\n                    {\n                        files.map((file) => (\n                            <div className=\"max-w-56 relative flex rounded-md border px-2 py-1 items-center gap-2 bg-muted\">\n                                <File className=\"min-w-5\" />\n                                <div className=\"max-w-full flex-1 pr-4\">\n                                    <p className=\"w-full font-bold truncate\">{file.name}</p>\n                                </div>\n                                <Button\n                                    size=\"icon\"\n                                    variant=\"outline\"\n                                    className=\"p-0 size-5 rounded-full absolute right-[-10px] top-[-10px] bg-background\"\n                                    onClick={() => handleFileRemove(file.path)}><X size={14} /></Button>\n                            </div>\n                        ))\n                    }\n                </div>\n            </VarInput>\n        </div>\n    );\n}\n\nexport const useFileUpload = (_files, onFilesChange) => {\n    const [files, setFiles] = useState(_files);\n    const [loading, setLoading] = useState(false);\n    const { id: flowId } = useParams();\n\n    // Handle file upload\n    const handleFileUpload = () => {\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \"image/*,application/pdf,text/plain,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.presentationml.presentation,text/markdown,text/html,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.ms-powerpoint,.png,.jpg,.jpeg\"; // Restrict to images\n        input.style.display = \"none\";\n        input.multiple = false;\n\n        input.onchange = (e: Event) => {\n            setLoading(true);\n\n            const file = (e.target as HTMLInputElement).files?.[0];\n            if (file) {\n                uploadFileWithProgress(file, (progress) => {\n                    console.log(\"Upload Progress:\", progress);\n                }, 'icon', '/api/v1/upload/workflow/' + flowId).then(res => {\n                    setLoading(false);\n                    const newFiles = [...files, { name: file.name, path: res.relative_path }];\n                    setFiles(newFiles);\n                    onFilesChange?.(newFiles);\n                }).catch(err => {\n                    setLoading(false);\n                    console.error(\"Upload error:\", err);\n                });\n            }\n        };\n\n        input.click(); // Trigger file input\n    };\n\n    // Handle file removal\n    const handleFileRemove = (filePath) => {\n        const newFiles = files.filter(file => file.path !== filePath);\n        setFiles(newFiles);\n        onFilesChange?.(newFiles);\n    };\n\n    return {\n        files,\n        loading,\n        handleFileUpload,\n        handleFileRemove,\n    };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/flowNodeStore.ts",
    "content": "// Used for communication between nodes \nimport { create } from 'zustand';\n\ntype Value = {\n    action: 'u' | 'd'\n    node: {\n        id: string;\n        name: string;\n    } | null\n    question: {\n        id: string;\n        name: string;\n    } | null\n}\n\ninterface Store {\n    value: Value | null;\n    setValue: (newValue: Value | null) => void;\n}\n\nconst useStore = create<Store>((set) => ({\n    value: null,\n    setValue: (newValue) => set({ value: newValue })\n}));\n\n// Modify variable name\nexport const useUpdateVariableState = () => {\n    const value = useStore((state) => state.value);\n    const setValue = useStore((state) => state.setValue);\n\n    return [value, setValue] as const;\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/FlowNode/index.tsx",
    "content": "import { LoadingIcon } from '@/components/bs-icons/loading';\nimport { Card, CardContent } from '@/components/bs-ui/card';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { cname } from '@/components/bs-ui/utils';\nimport { WorkflowNode } from '@/types/flow';\nimport { Handle, NodeToolbar, Position } from '@xyflow/react';\nimport { ChevronDown } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Sidebar from '../Sidebar';\nimport EditText from './EditText';\nimport NodeLogo from './NodeLogo';\nimport NodeTabs from './NodeTabs';\nimport NodeToolbarComponent from './NodeToolbarComponent';\nimport ParameterGroup from './ParameterGroup';\nimport RunLog from './RunLog';\nimport { RunTest } from './RunTest';\nimport { useUpdateVariableState } from './flowNodeStore';\nimport { useTranslation } from 'react-i18next';\nimport ParameterSubGroup from './ParameterSubGroup';\n\nexport const CustomHandle = ({ id = '', node, isLeft = false, className = '' }) => {\n    const [openLeft, setOpenLeft] = useState(false);\n    const [openRight, setOpenRight] = useState(false);\n    const posRef = useRef({ x: 0, y: 0 });\n\n    useEffect(() => {\n        const handleAddLine = () => {\n            setOpenLeft(false);\n            setOpenRight(false);\n        };\n\n        window.addEventListener(\"closeHandleMenu\", handleAddLine);\n        return () => {\n            window.removeEventListener(\"closeHandleMenu\", handleAddLine);\n        };\n    }, []);\n\n    const handleOptionClick = (newNode) => {\n        const addNodeEvent = new CustomEvent(\"addNodeByHandle\", {\n            detail: {\n                id,\n                targetNode: node,\n                newNode: newNode,\n                isLeft: isLeft,\n                position: posRef.current\n            }\n        });\n        window.dispatchEvent(addNodeEvent);\n    };\n\n    if (isLeft) {\n        return <div className={cname('absolute top-[58px] -left-[16px]', className)}>\n            <Handle\n                id={id || \"left_handle\"}\n                type=\"target\"\n                position={Position.Left}\n                className='bisheng-flow-handle group'\n                onClick={(e) => {\n                    posRef.current = { x: e.clientX, y: e.clientY }\n                    setOpenLeft(true)\n                }}\n            ><span></span></Handle>\n            {\n                openLeft && <Card\n                    className=\"absolute top-4 translate-x-[-50%] bg-transparent hover:shadow-none hover:border-transparent\"\n                    style={{ zIndex: 1001 }}\n                >\n                    <CardContent className=\"min-w-56 pointer-events-auto px-0\">\n                        <Sidebar\n                            dropdown\n                            disabledNodes={['end']}\n                            onClick={handleOptionClick}\n                        ></Sidebar>\n                    </CardContent>\n                </Card>\n            }\n        </div>\n    }\n\n    return <div className={cname('absolute top-[58px] right-[-16px]', className)}>\n        <Handle\n            id={id || \"right_handle\"}\n            type=\"source\"\n            position={Position.Right}\n            className='bisheng-flow-handle group'\n            onClick={(e) => {\n                posRef.current = { x: e.clientX, y: e.clientY }\n                setOpenRight(true)\n            }}\n        ><span></span></Handle>\n        {\n            openRight && <Card\n                className=\"absolute top-4 translate-x-[-50%] bg-transparent hover:shadow-none hover:border-transparent\"\n                style={{ zIndex: 1001 }}\n            >\n                <CardContent className=\"min-w-56 pointer-events-auto px-0\">\n                    <Sidebar\n                        dropdown\n                        onClick={handleOptionClick}\n                    ></Sidebar>\n                </CardContent>\n            </Card>\n        }\n    </div>\n}\n\nfunction CustomNode({ data: node, selected, isConnectable }: { data: WorkflowNode, selected: boolean, isConnectable: boolean }) {\n    const [focusUpdate, setFocusUpdate] = useState(false)\n    const runRef = useRef(null)\n    const { message } = useToast()\n    const [currentTab, setCurrentTab] = useState<undefined | string>(node.tab && node.tab.value)\n    const { t } = useTranslation('flow')\n\n    // 检查知识库检索设置\n    const hasKnowledgeSearchEnabled = useMemo(() => {\n        const knowledgeGroup = node.group_params.find(group => group.name === '知识库检索设置');\n\n        if (knowledgeGroup && knowledgeGroup.params) {\n            const thirdItem = knowledgeGroup.params[2]; // 第三项（索引为2）\n\n            return thirdItem.value && thirdItem.value?.conditions?.length > 0 && thirdItem.value?.enabled;\n        }\n        return false;\n    }, [\n        node.group_params.find(group => group.name === '知识库检索设置')?.params?.[2]?.value?.conditions?.length,\n        node.group_params.find(group => group.name === '知识库检索设置')?.params?.[2]?.value?.enabled\n    ]);\n\n    // 动态计算节点宽度类名\n    const nodeWidthClass = useMemo(() => {\n        const baseClasses = ['condition'];\n\n        if (hasKnowledgeSearchEnabled) {\n            baseClasses.push('rag');\n            baseClasses.push('knowledge_retriever');\n        }\n        return baseClasses.includes(node.type) ? 'w-auto min-w-80' : '';\n    }, [node.type, hasKnowledgeSearchEnabled]);\n\n    const handleUpdate = () => {\n        // 创建并触发自定义事件，传递需要更新的节点 id 和数据\n        const event = new CustomEvent('nodeUpdate', {\n            detail: {\n                nodeId: node.id,\n                newData: { label: `Updated at ${new Date().toLocaleTimeString()}` }\n            }\n        });\n        window.dispatchEvent(event);\n    };\n\n    // 部分节点动态修改输出项内容\n    const handleChangeOutPut = (key: string, value: any) => {\n        node.group_params.some(group => {\n            return group.params.some(param => {\n                if (param.key === key) {\n                    const prefix = key.split('_')[0]\n                    const values = Array.isArray(value) ? value : [value];\n                    param.value = values.map(item => ({\n                        key: `${prefix}_${item.key}`,\n                        label: `${prefix}_${item.label}`\n                    }))\n                    return true\n                }\n            })\n        })\n        setFocusUpdate(!focusUpdate) // render\n    }\n\n    const [nodeError, setNodeError] = useBorderColor(node)\n    const { paramValidateEntities, varValidateEntities, validateAll } = useEventMaster(node, setNodeError)\n    const handleRun = async () => {\n        // vilidate node\n        const errors = await validateAll({ tmp: true })\n\n        if (errors.length) return message({\n            description: errors,\n            variant: 'warning'\n        })\n\n        runRef.current.run(node)\n    }\n\n    // 直接使用函数获取知识库ID，不依赖useMemo\n    const getSelectedKnowledgeIds = () => {\n        if (!node) {\n            return [];\n        }\n\n        const knowledgeParam = node.group_params\n            .flatMap(group => group.params)\n            .find(param => param.type === \"knowledge_select_multi\");\n\n        if (knowledgeParam && knowledgeParam.value && Array.isArray(knowledgeParam.value.value)) {\n            const ids = knowledgeParam.value.value.map(kb => String(kb.key));\n            return ids;\n        }\n        return [];\n    }\n\n    // update system prompt\n    const hackCountRef = useRef(0)\n    const handleAddSysPrompt = (type: 'knowledge' | 'sql') => {\n        node.group_params.forEach(group => {\n            if (group.params && Array.isArray(group.params)) {\n\n                const targetParam = group.params.find(p => p.key === 'system_prompt');\n\n                if (targetParam) {\n                    let currentValue = targetParam.value || \"\";\n                    const map = {\n                        'knowledge': t('kbQueryToolIntro'),\n                        'sql': t('sqlAgentToolIntro')\n                    }\n                    const searchStr = map[type]\n                    if (!currentValue.includes(searchStr)) {\n                        hackCountRef.current++\n                        const hackSpace = hackCountRef.current % 2 === 0 ? ' ' : '' // Avoid React's refresh mechanism \n                        targetParam.value = currentValue === '\\n' ? searchStr : `${currentValue}\\n${searchStr}${hackSpace}`;\n                    }\n                }\n            }\n        });\n\n        setTimeout(() => {\n            setFocusUpdate(!focusUpdate) // render\n        }, 100);\n    }\n\n    const [expend, setExpend] = useState(node.expand === undefined ? true : node.expand)\n\n    const { isVisible, handleMouseEnter, handleMouseLeave } = useHoverToolbar();\n\n    const [_, setUpdateVariable] = useUpdateVariableState()\n\n    return (\n        <div\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n            className={`${selected ? 'border-primary' : 'border-transparent'} border rounded-[25px]`}>\n            {/* head bars */}\n            <NodeToolbar isVisible align=\"end\" className={`${isVisible ? '' : 'hidden'}`} >\n                <NodeToolbarComponent nodeId={node.id} type={node.type} onRun={handleRun}></NodeToolbarComponent>\n            </NodeToolbar>\n\n            <div\n                className={cname(`bisheng-node hover:border-primary/10 max-w-[35rem] ${nodeWidthClass} ${selected ? 'border-primary/10' : ' border-transparent'}`, nodeError && 'border-red-500')}\n                data-id={node.id}\n            >\n                {/* top */}\n                <RunLog node={node}>\n                    <div className='bisheng-node-top flex items-center'>\n                        {t('bisheng', { ns: 'bs' }) === 'BISHENG' && <LoadingIcon className='size-5 text-[#B3BBCD]' />}\n                        <span className='node-face text-sm text-[#B3BBCD]'>{t('bisheng', { ns: 'bs' })}</span>\n                    </div>\n                </RunLog>\n\n                {/* head */}\n                <div className='bisheng-node-head'>\n                    <div className='relative z-10 flex gap-2'>\n                        <NodeLogo type={node.type} colorStr={node.name} />\n                        <div className='flex-1 max-w-60'>\n                            <EditText\n                                className='nodrag'\n                                reDefaultValue\n                                defaultValue={node.name}\n                                maxLength={50}\n                                disable={['start', 'end'].includes(node.type)}\n                                onChange={(val) => {\n                                    node.name = val;\n                                    setUpdateVariable({\n                                        action: 'u',\n                                        node: {\n                                            id: node.id,\n                                            name: node.name,\n                                        },\n                                        question: null\n                                    })\n                                    setFocusUpdate(!focusUpdate)\n                                }}>\n                                <span className='truncate block min-h-4'>{node.name}</span>\n                            </EditText>\n                        </div>\n                        {!['output', 'condition', 'end'].includes(node.type) && <div\n                            className='absolute -right-1 -top-1 cursor-pointer p-2'\n                            onClick={() => {\n                                setExpend(!expend)\n                                node.expand = !expend\n                            }}>\n                            <ChevronDown\n                                className={`bisheng-label ${expend && 'rotate-180'}`}\n                                size={16}\n                            /></div>}\n                    </div>\n                    <EditText\n                        className='nodrag mt-2 text-xs text-muted-foreground'\n                        type='textarea'\n                        maxLength={200}\n                        disable={['start', 'end'].includes(node.type)}\n                        defaultValue={node.description}\n                        onChange={(val) => {\n                            node.description = val;\n                            setFocusUpdate(!focusUpdate)\n                        }}>\n                        <p className='text-xs text-muted-foreground mt-2 min-h-4'>{node.description}</p>\n                    </EditText>\n                </div>\n                {/* body */}\n                <div className='-nowheel bg-[#F7F8FB] dark:bg-background pb-5 rounded-b-[20px]'>\n                    <div className={expend || ['output', 'condition', 'end'].includes(node.type) ? `` : 'h-0 overflow-hidden'}>\n                        {node.tab && <NodeTabs\n                            data={node}\n                            onChange={(val) => {\n                                setCurrentTab(val)\n                                node.tab.value = val\n                                // 特殊逻辑\n                                handleChangeOutPut('output', [])\n                                node.group_params.some(group => {\n                                    return group.params.some(param => {\n                                        if (param.key === \"batch_variable\") {\n                                            param.value = []\n                                            return true\n                                        }\n                                    })\n                                })\n                            }} />}\n                        {node.group_params.map(group => group.groupKey ?\n                            <ParameterSubGroup\n                                key={group.groupKey}\n                                nodeId={node.id}\n                                node={node}\n                                cate={group}\n                                onStatusChange={((key, obj) => paramValidateEntities.current[key] = obj)}\n                                onVarEvent={((key, obj) => varValidateEntities.current[key] = obj)}\n                                tab={currentTab}\n                            />\n                            : <ParameterGroup\n                                nodeId={node.id}\n                                key={group.name}\n                                tab={currentTab}\n                                node={node}\n                                cate={group}\n                                onOutPutChange={handleChangeOutPut}\n                                onAddSysPrompt={handleAddSysPrompt}\n                                onFouceUpdate={() => setFocusUpdate(!focusUpdate)}\n                                onStatusChange={((key, obj) => paramValidateEntities.current[key] = obj)}\n                                onVarEvent={((key, obj) => varValidateEntities.current[key] = obj)}\n                                selectedKnowledgeIds={getSelectedKnowledgeIds}\n                            />\n                        )}\n                    </div>\n                </div>\n                {/* footer */}\n                {\n                    node.type !== 'start' && <CustomHandle isLeft node={node} />\n                }\n                {\n                    !['condition', 'output', 'end'].includes(node.type) && <CustomHandle node={node} />\n                }\n            </div>\n\n            <RunTest ref={runRef} />\n        </div>\n    );\n}\n\nexport default CustomNode;\n\n\nconst useEventMaster = (node, setNodeError) => {\n    const paramValidateEntities = useRef({})\n    const varValidateEntities = useRef({})\n    const { t } = useTranslation('flow')\n\n    const validateParams = (noTemporaryFile) => {\n        const errors = []\n        Object.keys(paramValidateEntities.current).forEach(key => {\n            const { param, validate } = paramValidateEntities.current[key]\n            if (param.tab && node.tab && node.tab.value !== param.tab) return\n            const msg = validate()\n            if (noTemporaryFile && msg === 'input_file') {\n                errors.push(t('tmpKnowledgeBaseNotSupportSingleNodeDebug'));\n            } else {\n                msg && msg !== 'input_file' && errors.push(msg)\n            }\n        })\n        return errors\n    }\n\n    const validateAll = async (config) => {\n        // item\n        const errors = validateParams(false);\n\n        // var\n        const promises = Object.keys(varValidateEntities.current).map(async (key) => {\n            const { param, validate } = varValidateEntities.current[key];\n\n            // 如果 param.tab 存在且不匹配，则跳过当前项\n            if (param.tab && node.tab && node.tab.value !== param.tab) return;\n\n            const msg = await validate(config); // 获取验证结果\n            if (msg) {\n                Array.isArray(msg) ? errors.push(...msg) : errors.push(msg);\n            }\n        });\n\n        await Promise.all(promises);\n\n        // 如果有错误，设置错误状态\n        if (errors.length > 0) setNodeError(true);\n\n        return errors;\n    }\n\n    // 控制权交出\n    useEffect(() => {\n        const customEvent = new CustomEvent('node_event', {\n            detail: {\n                action: 'update',\n                id: node.id,\n                validate: validateAll,\n                // log: {\n                //     setData: (status, data) => { },\n                //     close: () => { }\n                // }\n            }\n        });\n        window.dispatchEvent(customEvent);\n\n        return () => {\n            const customEvent = new CustomEvent('node_event', {\n                detail: {\n                    action: 'remove',\n                    id: node.id\n                }\n            });\n            // window.dispatchEvent(customEvent);\n        }\n    }, [node])\n\n    return {\n        validateAll,\n        paramValidateEntities,\n        varValidateEntities\n    }\n}\n\nconst useBorderColor = (node) => {\n    const [error, setError] = useState(false)\n    useEffect(() => {\n        const onNodeEvent = (e) => {\n            const { nodeIds } = e.detail\n            setError(nodeIds.includes(node.id))\n        }\n        window.addEventListener('nodeErrorBorderEvent', onNodeEvent)\n        return () => {\n            window.removeEventListener('nodeErrorBorderEvent', onNodeEvent)\n        }\n    }, [])\n\n    return [error, setError]\n}\n\n\nexport const useHoverToolbar = () => {\n    const [isVisible, setIsVisible] = useState(false);\n    const timeoutRef = useRef(null);\n\n    const handleMouseEnter = useCallback(() => {\n        // 清除隐藏的延时\n        if (timeoutRef.current) {\n            clearTimeout(timeoutRef.current);\n            timeoutRef.current = null;\n        }\n        setIsVisible(true);\n    }, []);\n\n    const handleMouseLeave = useCallback(() => {\n        // 延迟隐藏\n        timeoutRef.current = setTimeout(() => {\n            setIsVisible(false);\n        }, 200); // 延迟200ms\n    }, []);\n\n    return { isVisible, handleMouseEnter, handleMouseLeave };\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/Header.tsx",
    "content": "import TipPng from \"@/assets/tip.jpg\";\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { DelIcon, LoadIcon } from \"@/components/bs-icons\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport ActionButton from \"@/components/bs-ui/button/actionButton\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport TextInput from \"@/components/bs-ui/input/textInput\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { darkContext } from \"@/contexts/darkContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { copyReportTemplate, createWorkFlowVersion, deleteVersion, getVersionDetails, getWorkFlowVersions, onlineWorkflow, onlineWorkflowApi, saveWorkflow, updateVersion } from \"@/controllers/API/workflow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { AppType } from \"@/types/app\";\nimport { FlowVersionItem } from \"@/types/flow\";\nimport { flowVersionCompatible } from \"@/util/flowCompatible\";\nimport { findParallelNodes, importFlow } from \"@/util/flowUtils\";\nimport { cloneDeep, isEqual } from \"lodash-es\";\nimport { ChevronLeft, EllipsisVertical, PencilLineIcon, Play, ShieldCheck } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { unstable_useBlocker as useBlocker, useLocation, useNavigate } from \"react-router-dom\";\nimport CreateApp from \"../CreateApp\";\nimport { ChatTest } from \"./FlowChat/ChatTest\";\nimport useFlowStore from \"./flowStore\";\nimport Notification from \"./Notification\";\n\nconst Header = ({ flow, nodes, onTabChange, preFlow, onPreFlowChange, onImportFlow }) => {\n    const { message } = useToast()\n    const { dark } = useContext(darkContext);\n    const testRef = useRef(null)\n    const updateAppModalRef = useRef(null)\n    // const { uploadFlow } = useFlowStore()\n    const { t, i18n } = useTranslation('flow')\n    const [modelVersionId, setModelVersionId] = useState(0)\n    const navigate = useNavigate()\n    const { state } = useLocation();\n    const loca = state?.flow; // 获取传递的 flow 数据\n\n    // console.log('flow :>> ', flow);\n\n    const validateNodes = useNodeEvent(flow)\n    const addNotification = useFlowStore((state) => state.addNotification);\n\n    const handleRunClick = async () => {\n        // 记录错误日志\n        const errors = await validateNodes()\n        if (errors.length) {\n            errors.map(el => addNotification({\n                type: 'warning',\n                title: '',\n                description: el\n            }))\n            return message({\n                description: errors,\n                variant: 'warning'\n            })\n        }\n\n        testRef.current?.run(flow)\n    }\n\n    const handleOnlineClick = async () => {\n        const errors = await validateNodes()\n        if (errors.length) {\n            errors.map(el => addNotification({\n                type: 'warning',\n                title: '',\n                description: el\n            }))\n            return message({\n                description: errors,\n                variant: 'warning'\n            })\n        }\n\n        await captureAndAlertRequestErrorHoc(saveWorkflow(version.id, {\n            ...flow,\n            name: version.name,\n            data: {\n                nodes: flow.nodes,\n                edges: flow.edges,\n                viewport: flow.viewport\n            }\n        }))\n        setFlow({ ...flow })\n        // api请求\n        const res = await captureAndAlertRequestErrorHoc(onlineWorkflowApi({ flow_id: flow.id, version_id: version.id, status: 2 }))\n        if (res === null) {\n            message({\n                variant: 'success',\n                description: `${version?.name} ${t('hasBeenLaunched')}`\n            })\n            window.history.length > 1 ? window.history.back() : navigate('/build/apps')\n        }\n    }\n    const handleOfflineClick = async () => {\n        const res = await captureAndAlertRequestErrorHoc(onlineWorkflowApi({ flow_id: flow.id, version_id: version.id, status: 1 }))\n        if (res === null) {\n            message({\n                variant: 'success',\n                description: `${version?.name} ${t('hasBeenOffline')}`\n            })\n\n            flow.status = 1\n            refrenshVersions()\n        }\n    }\n\n    const handleSaveClick = async () => {\n\n        if (isOnlineVersionFun()) {\n            message({\n                description: t('currentVersionLaunched'),\n                variant: 'warning'\n            })\n            return !hasChanged\n        }\n        // temp\n        // localStorage.setItem('flow_tmp', JSON.stringify(flow))\n        const res = await captureAndAlertRequestErrorHoc(saveWorkflow(version.id, {\n            ...flow,\n            name: version.name,\n            data: {\n                nodes: flow.nodes,\n                edges: flow.edges,\n                viewport: flow.viewport\n            }\n        }))\n        res && message({\n            variant: 'success',\n            description: t('changesSaved')\n        })\n\n        return res\n    }\n\n    const handleExportClick = () => {\n        setOpen(false)\n        const nFlow = cloneDeep(flow)\n        // 删除report节点文档key\n        // nFlow.nodes.forEach(node => {\n        //     if (node.data.type === 'report') {\n        //         node.data.group_params[0].params[0].value.version_key = ''\n        //     }\n        // })\n        const jsonString = `data:text/json;chatset=utf-8,${encodeURIComponent(\n            JSON.stringify({ ...nFlow, source: location.host })\n        )}`;\n        const link = document.createElement(\"a\");\n        link.href = jsonString;\n        link.download = `${flow.name || t('defaultWorkflowData')}.json`\n\n        link.click();\n    }\n\n    const { toast } = useToast()\n    const handleImportClick = () => {\n        setOpen(false)\n        bsConfirm({\n            desc: t('confirmImport'),\n            onOk(next) {\n                _importFlow()\n                next()\n            }\n        })\n\n        const _importFlow = async () => {\n            try {\n                const flow = await importFlow()\n                const newFlow = flowVersionCompatible(flow)\n                const { nodes, edges, viewport } = newFlow\n                onImportFlow(nodes, edges, viewport)\n                setFitView()\n            } catch (error) {\n                console.error(\"Import flow error:\", error);\n                toast({\n                    variant: 'error',\n                    description: t('invalidFileError')\n                })\n            }\n        }\n    }\n\n    const forceUpdateFlow = (_flow) => {\n        setFlow(null)\n        setTimeout(() => {\n            setFlow(_flow)\n        }, 0);\n    }\n    // versions\n    const [loading, setLoading] = useState(false)\n    const { flow: f, setFlow, setFitView } = useFlowStore()\n    const { versions, version, lastVersionIndexRef, isOnlineVersion, isOnlineVersionFun, changeName, deleteVersion, refrenshVersions, setCurrentVersion } = useVersion(flow)\n    // 切换版本\n    const handleChangeVersion = async (versionId) => {\n        setLoading(true)\n        // 切换版本UI\n        window.flow_version = Number(versionId)\n        // 加载选中版本data\n        const res = await getVersionDetails(versionId)\n        // 自动触发 page的 clone flow\n        forceUpdateFlow({ ...f, ...res.data })\n\n        message({\n            variant: \"success\",\n            title: t('switchToVersion', { versionName: res.name }),\n            description: \"\"\n        })\n        setLoading(false)\n        setFitView()\n    }\n    const [saveVersionId, setVersionId] = useState('')\n    useEffect(() => {\n        saveVersionId && handleChangeVersion(saveVersionId)\n    }, [saveVersionId])\n    // new version\n    const handleSaveNewVersion = async () => {\n        // 累加版本 vx ++\n        const maxNo = lastVersionIndexRef.current + 1\n        const { nodes, edges, viewport } = flow\n        // 复制报告节点中报告模板\n        for (let i = 0; i < nodes.length; i++) {\n            const node = nodes[i];\n            await copyReportTemplate(node.data)\n        }\n        const res = await captureAndAlertRequestErrorHoc(\n            createWorkFlowVersion(flow.id, { name: `v${maxNo}`, description: '', data: { nodes, edges, viewport }, original_version_id: version.id })\n        )\n        message({\n            variant: \"success\",\n            title: `${t('skills.version', { ns: 'bs' })} v${maxNo} ${t('skills.saveSuccessful', { ns: 'bs' })}`,\n            description: \"\"\n        })\n        // 更新版本列表\n        await refrenshVersions()\n        // 切换到最新版本\n\n        setVersionId(res.id)\n    }\n\n    const [tabType, setTabType] = useState('edit')\n    const [open, setOpen] = useState(false)\n\n    const {\n        returnPage,\n        blocker,\n        hasChanged\n    } = useBeforeUnload(flow, nodes, preFlow, onPreFlowChange)\n    // 离开并保存\n    const handleSaveAndClose = async () => {\n        if (isOnlineVersion) {\n            handleSaveNewVersion()\n            blocker.reset?.()\n        } else {\n            const res = await handleSaveClick()\n            res ? blocker.proceed?.() : blocker.reset?.()\n        }\n    }\n\n    return (\n        <header className=\"flex justify-between items-center p-4 py-2 bisheng-bg border-b\">\n            {\n                loading && <div className=\" fixed left-0 top-0 w-full h-screen bg-background/60 z-50 flex items-center justify-center\">\n                    <LoadIcon className=\"mr-2 text-gray-600\" />\n                    <span>{t('switchToVersion', { versionName: version.name })}</span>\n                </div>\n            }\n            {/* Left Section with Back Button and Title */}\n            <div className=\"flex items-center\">\n                <Button variant=\"outline\" size=\"icon\" className={`${!dark && 'bg-[#fff]'} size-8`}\n                    onClick={returnPage}\n                ><ChevronLeft /></Button>\n                <div className=\"flex items-center ml-5\">\n                    <AppAvator id={flow.name} url={flow.viewUrl || flow.logo || loca?.logo} flowType={10} className=\"\"></AppAvator>\n                    <div className=\"pl-3\">\n                        <h1 className=\"font-medium text-sm flex gap-2\">\n                            <span id=\"app-title\" className=\"truncate max-w-48 font-bold\">{flow.name}</span>\n                            <Button\n                                size=\"icon\"\n                                variant=\"ghost\"\n                                className=\"size-6\"\n                                onClick={() => updateAppModalRef.current?.edit(AppType.FLOW, flow)}>\n                                <PencilLineIcon className=\"size-4 text-gray-500\"></PencilLineIcon>\n                            </Button>\n                        </h1>\n                        <p className=\"text-xs text-gray-500 mt-0.5\">\n                            <Badge variant=\"gray\" className=\"font-light dark:bg-gray-950 dark:text-gray-400\"><ShieldCheck size={14} />{t('currentVersion', { versionName: version?.name })}</Badge>\n                        </p>\n                    </div>\n                </div>\n            </div>\n            <div>\n                <Button variant=\"secondary\" className={`${tabType === 'edit' ? 'bg-[#fff] dark:bg-gray-950 hover:bg-[#fff]/70 text-primary h-8\"' : ''} h-8`}\n                    onClick={() => { setTabType('edit'); onTabChange('edit') }}\n                >\n                    {t('processOrchestration')}\n                </Button>\n                <Button variant=\"secondary\" className={`${tabType === 'api' ? 'bg-[#fff] dark:bg-gray-950 hover:bg-[#fff]/70 text-primary h-8\"' : ''} h-8`}\n                    onClick={() => {\n                        setTabType('api');\n                        onTabChange('api');\n                        testRef.current.close()\n                    }}>\n                    {t('externalRelease')}\n                </Button>\n            </div>\n            {/* Right Section with Options */}\n            <div className=\"flex items-center gap-3\">\n                <Notification />\n                <Button variant=\"outline\" size=\"sm\" className={`${!dark && 'bg-[#fff]'} h-8`} onClick={handleRunClick}>\n                    <Play className=\"size-3.5 mr-1\" />\n                    {t('run')}\n                </Button>\n                <Button variant=\"outline\" size=\"sm\" className={`${!dark && 'bg-[#fff]'} h-8 px-6`} onClick={async () => {\n                    window.flow_version = Number(version.id)\n                    await handleSaveClick()\n                    forceUpdateFlow({ ...flow }) // 更新flow状态, 用于保存时对比差异\n                }}>\n                    {t('save')}\n                </Button>\n                {\n                    version && <ActionButton\n                        size=\"sm\"\n                        className={`px-6 flex gap-2 ${!dark && 'bg-[#fff]'}`}\n                        iconClassName={`${!dark && 'bg-[#fff]'}`}\n                        align=\"end\"\n                        variant=\"outline\"\n                        onClick={handleSaveNewVersion}\n                        delayDuration={200}\n                        buttonTipContent={(\n                            <div>\n                                <img src={TipPng} alt=\"\" className=\"w-80\" />\n                                <p className=\"mt-4 text-sm\">{t('skills.supportVersions', { ns: 'bs' })}</p>\n                            </div>\n                        )}\n                        dropDown={(\n                            <div className=\" overflow-y-auto max-h-96 max-h\">\n                                <RadioGroup value={version.id + ''} onValueChange={(vid) => {\n                                    if (isOnlineVersionFun() && hasChanged) return setModelVersionId(vid)\n                                    const { edges, nodes, viewport } = flow\n                                    updateVersion(version.id, {\n                                        name: version.name, description: '', data: {\n                                            edges, nodes, viewport\n                                        }\n                                    })\n                                    handleChangeVersion(vid)\n                                }} className=\"gap-0\">\n                                    {versions.map((vers, index) => (\n                                        <div key={vers.id} className=\"group flex items-center gap-4 px-4 py-2 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-700 border-b\">\n                                            <RadioGroupItem value={vers.id + ''} />\n                                            <div className=\"w-[198px]\">\n                                                <TextInput\n                                                    className=\"h-[30px]\"\n                                                    type=\"hover\"\n                                                    value={vers.name}\n                                                    maxLength={30}\n                                                    onSave={val => changeName(vers.id, val || vers.name)}\n                                                ></TextInput>\n                                                <p className=\"text-sm text-muted-foreground mt-2\">{vers.update_time.replace('T', ' ').substring(0, 16)}</p>\n                                            </div>\n                                            {\n                                                // 最后一个 V0 版本和当前选中版本不允许删除\n                                                !(version.id === vers.id)\n                                                && <Button\n                                                    className=\"group-hover:flex hidden\"\n                                                    type=\"button\"\n                                                    size=\"icon\"\n                                                    variant=\"outline\"\n                                                    onClick={() => deleteVersion(vers, index)}\n                                                ><DelIcon /></Button>\n                                            }\n                                        </div>\n                                    ))}\n                                </RadioGroup>\n                            </div>\n                        )}\n                    >{t('skills.saveVersion', { ns: 'bs' })}</ActionButton>\n                }\n                {isOnlineVersion ? <Button size=\"sm\" className={`h-8 px-6`} onClick={handleOfflineClick}>\n                    {t('takeOffline')}\n                </Button> : <Button size=\"sm\" className={`h-8 px-6`} onClick={handleOnlineClick}>\n                    {t('goOnline')}\n                </Button>}\n                <Popover open={open} onOpenChange={setOpen}>\n                    <PopoverTrigger asChild >\n                        <Button size=\"icon\" variant=\"outline\" className={`${!dark && 'bg-[#fff]'} size-8`}>\n                            <EllipsisVertical size={16} />\n                        </Button>\n                    </PopoverTrigger>\n                    <PopoverContent className=\"w-auto p-2 cursor-pointer\">\n                        <div\n                            className=\"rounded-sm py-1.5 pl-2 pr-8 text-sm hover:bg-[#EBF0FF] dark:text-gray-50 dark:hover:bg-gray-700\"\n                            onClick={handleImportClick}>{t('importWorkflow')}</div>\n                        <div\n                            className=\"rounded-sm py-1.5 pl-2 pr-8 text-sm hover:bg-[#EBF0FF] dark:text-gray-50 dark:hover:bg-gray-700\"\n                            onClick={handleExportClick}> {t('exportWorkflow')}</div>\n                    </PopoverContent>\n                </Popover>\n            </div>\n            <ChatTest ref={testRef} />\n            {/* 修改应用弹窗 flow&assistant */}\n            <CreateApp ref={updateAppModalRef} loca={loca} onSave={(base) => {\n                captureAndAlertRequestErrorHoc(onlineWorkflow({\n                    ...f,\n                    ...base,\n                    logo: base.viewUrl ? base.logo : '' // When there is no change, the value is empty \n                }).then(res => {\n                    f.name = base.name\n                    f.description = base.description\n                    f.logo = base.logo\n                    setFlow({ ...f, ...base })\n                }))\n            }} />\n            {/* 上线不可修改提示 */}\n            <Dialog open={!!modelVersionId}>\n                <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                    <DialogHeader>\n                        <DialogTitle>{t('prompt')}</DialogTitle>\n                        <DialogDescription>{t('currentVersionLaunched')}</DialogDescription>\n                    </DialogHeader>\n                    <DialogFooter className=\"mt-4\">\n                        <Button className=\"h-8\" onClick={() => {\n                            handleSaveNewVersion()\n                            setModelVersionId(0)\n                        }}>\n                            {t('saveAsNewVersion')}\n                        </Button>\n                        <Button className=\"leave h-8\" variant=\"destructive\" onClick={() => {\n                            handleChangeVersion(modelVersionId)\n                            setModelVersionId(0)\n                        }}>\n                            {t('dontSaveAndSwitch')}\n                        </Button>\n                        <Button className=\"h-8\" variant=\"outline\" onClick={() => setModelVersionId(0)}>\n                            {t('cancel')}\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n            {/* 离开并保存提示 */}\n            <Dialog open={blocker.state === \"blocked\"}>\n                <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                    <DialogHeader>\n                        <DialogTitle>{t('prompt')}</DialogTitle>\n                        <p className=\"bisheng-label pt-2\">{isOnlineVersion ? t('onlineVersionMessage') : t('unsavedChangesMessage')}</p>\n                    </DialogHeader>\n                    <DialogFooter>\n                        <Button className=\"leave h-8\" onClick={handleSaveAndClose}>\n                            {isOnlineVersion ? t('saveAsNewVersion') : t('leaveAndSave')}\n                        </Button>\n                        <Button className=\"h-8\" variant=\"destructive\" onClick={() => blocker.proceed?.()}>\n                            {t('dontSave')}\n                        </Button>\n                        <Button className=\"h-8\" variant=\"outline\" onClick={() => {\n                            const dom = document.getElementById(\"flow-page\") as HTMLElement;\n                            blocker.reset?.()\n                            if (dom) dom.className = dom.className.replace('report-hidden', '');\n                        }}>\n                            {t('cancel')}\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        </header >\n    );\n};\n\n/** 收集节点事件\n * return validate<func>\n * */\nconst useNodeEvent = (flow) => {\n    const { t } = useTranslation('flow');\n    // 收集节点校验事件(表单 变量)\n    const nodeValidateEntitiesRef = useRef({});\n    useEffect(() => {\n        const setNodeEvent = (e) => {\n            const { action, id } = e.detail;\n            if (action === 'update') {\n                nodeValidateEntitiesRef.current[id] = e.detail.validate;\n            } else {\n                delete nodeValidateEntitiesRef.current[id];\n            }\n        };\n        window.addEventListener('node_event', setNodeEvent);\n        return () => {\n            window.removeEventListener('node_event', setNodeEvent);\n        };\n    }, []);\n\n    return async () => {\n        let errors = [];\n        // 使用 map 来收集所有的 Promise\n        const promises = Object.keys(nodeValidateEntitiesRef.current).map(async (key) => {\n            const result = await nodeValidateEntitiesRef.current[key]();  // 等待验证结果\n\n            // 如果有错误，合并到 errors 数组中\n            if (result && result.length > 0) {\n                errors = [...errors, ...result];\n            }\n        });\n        await Promise.all(promises);\n\n        // event func\n        const sendEvent = (ids) => {\n            const event = new CustomEvent('nodeErrorBorderEvent', {\n                detail: {\n                    nodeIds: ids\n                }\n            });\n            window.dispatchEvent(event);\n        };\n\n        if (errors.length) return errors;\n        if (!flow.edges.length) {\n            sendEvent([flow.nodes.find(node => node.data.type === 'start').id]);\n            return [t('missingEndNode')];\n        }\n\n        /**\n         * branch flows\n         * 梳理每条分支线 验证连线逻辑\n         */\n        const branchLines: { branch: string, nodeIds: { branch: string, nodeId: string }[], end: boolean }[] = [];\n        const nodeMap = {};\n        const treeNodeIdSet = new Set();\n        const startEdge = flow.edges.find(node => node.source.indexOf('start') === 0);\n        if (!startEdge) return [t('pleaseLinkStartNode')];\n        const startNodeId = startEdge.source;\n        const findEdgesByNodeId = (id) => {\n            return flow.edges.filter(node => node.source === id);\n        };\n        const findOutType = (nodeId) => {\n            if (!nodeId.startsWith('output')) return '';\n            return flow.nodes.find(node => node.id === nodeId)?.data.group_params[0].params[1].value.type || '';\n        };\n\n        const traverseTree = (nodeId, branchId, nodeIds) => {\n            const edges = findEdgesByNodeId(nodeId);\n            edges.forEach((edge, index) => {\n                const [source, target] = [edge.source.split('_')[0], edge.target.split('_')[0]];\n                const _branchId = `${branchId}_${index}`;\n                const _nodeIds = [...nodeIds, { branch: _branchId, nodeId: edge.target, type: findOutType(edge.target) }];\n                treeNodeIdSet.add(edge.target);\n\n                if (target === 'end') {\n                    // stop when loop or end \n                    branchLines.push({ branch: _branchId, nodeIds: _nodeIds, end: true });\n                } else if (nodeMap[edge.target]) {\n                    // stop when loop or end \n                    branchLines.push({ branch: branchId, nodeIds, end: true });\n                } else {\n                    nodeMap[edge.target] = true;\n                    traverseTree(edge.target, _branchId, _nodeIds);\n                }\n            });\n\n            if (edges.length === 0) {\n                branchLines.push({ branch: branchId, nodeIds, end: false });\n            }\n        };\n\n        traverseTree(startNodeId, '0', [{ branch: '0', nodeId: startNodeId, type: '' }]);\n\n        // 节点连线完整校验\n        if (treeNodeIdSet.size !== flow.nodes.filter(node => node.type === 'flowNode').length - 1) {\n            const ids = flow.nodes.reduce((res, node) => {\n                if (node.type === 'flowNode' && node.data.type !== 'start' && !treeNodeIdSet.has(node.id))\n                    res.push(node.id)\n                return res\n            }, [])\n            sendEvent(ids);\n            return [t('unconnectedNodes')];\n        }\n\n        // 并行校验\n        // input节点s & 分支节点s\n        const nodeLMap = {};\n        const [inputNodeLs, outputNodeLs, branchNodeLs] = branchLines.reduce(\n            ([inputNodeLs, outputNodeLs, branchNodeLs], line) => {\n                line.nodeIds.forEach(node => {\n                    if (node.nodeId.startsWith('input')) {\n                        const inputNode = flow.nodes.find(_node => _node.id === node.nodeId && _node.data.tab.value === 'dialog_input');\n                        // It is an input & ouput node and is different from the branch path in ids;\n                        if (inputNode && !inputNodeLs.some(el => el.branch === inputNode.branch)) {\n                            !nodeLMap[node.branch] && inputNodeLs.push(node);\n                        }\n                    } else if (node.nodeId.startsWith('output') && node.type === 'input') {\n                        !nodeLMap[node.branch] && inputNodeLs.push(node);\n                    } else if ((node.nodeId.startsWith('output') && node.type === 'choose') || node.nodeId.startsWith('condition')) {\n                        !nodeLMap[node.branch] && branchNodeLs.push(node);\n                    }\n                    nodeLMap[node.branch] = true;\n                });\n                return [inputNodeLs, outputNodeLs, branchNodeLs];\n            },\n            [[], [], []]\n        );\n\n        let result = findParallelNodes(inputNodeLs, branchNodeLs);\n        if (result.length) {\n            sendEvent([...result, []]);\n            return [t('parallelInputOutputNodes')];\n        }\n        // if (!result.length) {\n        //     result = findParallelNodes(outputNodeLs, branchNodeLs);\n        //     if (result.length) {\n        //         sendEvent([...result, []]);\n        //         return [t('parallelOutputNodes')];\n        //     }\n        // }\n        console.log('inputParallelNids, outputParallelNids :>> ', result);\n\n        // 开始到结束流程是否完整\n        const errorLine = branchLines.find(line => !line.end);\n        if (errorLine) {\n            sendEvent([errorLine.nodeIds[errorLine.nodeIds.length - 1].nodeId]);\n            return [t('missingEndNode')];\n        }\n\n        // 找出分支节点\n        const conditionOutputs = flow.nodes.reduce((res, node) => {\n            if (node.data.type === \"condition\") {\n                node.data.group_params[0].params[0].value.forEach(item => {\n                    res.push({ name: node.data.name, nodeId: node.id, output: item.id });\n                });\n                res.push({ name: node.data.name, nodeId: node.id, output: \"right_handle\" });\n            }\n            return res;\n        }, []);\n        // 找出右侧没有链接的condtion节点\n        const incompleteNode = conditionOutputs.find(output => {\n            return !flow.edges.some(edge =>\n                edge.source === output.nodeId && edge.sourceHandle === output.output\n            );\n        });\n        if (incompleteNode) {\n            sendEvent(incompleteNode.nodeId);\n            return [t('unconnectedConditionNode', { nodeName: incompleteNode.name })];\n        }\n\n        sendEvent([]); // reduction\n        return errors;\n    };\n};\n\n\n// 版本管理\nconst useVersion = (flow) => {\n    const { t } = useTranslation()\n    const [versions, setVersions] = useState<FlowVersionItem[]>([])\n    const { version, setVersion } = useContext(TabsContext)\n    // 上线版本的版本 id\n    const [onlineVid, setOnlineVid] = useState(0);\n    const updateOnlineVid = (vid: number) => {\n        setOnlineVid(flow.status === 2 ? vid : 0);\n    }\n    const lastVersionIndexRef = useRef(0)\n\n    const refrenshVersions = () => {\n        return getWorkFlowVersions(flow.id).then(({ data, total }) => {\n            setVersions(data)\n            lastVersionIndexRef.current = total - 1\n            const currentvId = window.flow_version\n            delete window.flow_version\n            const currentV = data.find(el => currentvId ? el.id === currentvId : el.is_current === 1)\n            setVersion(currentV)\n            // 记录上线的版本\n            const onlineVersion = data.find(el => el.is_current === 1)\n            updateOnlineVid(onlineVersion?.id)\n        })\n    }\n\n    useEffect(() => {\n        refrenshVersions()\n    }, [])\n\n    // 修改名字\n    const handleChangName = (id, name) => {\n        captureAndAlertRequestErrorHoc(updateVersion(id, { name, description: '', data: null }))\n        // 乐观更新\n        setVersions(versions.map(version => {\n            if (version.id === id) {\n                version.name = name;\n            }\n            return version;\n        }))\n    }\n\n    const handleDeleteVersion = (version, index) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: `${t('skills.deleteOrNot')} ${version.name} ${t('skills.version')}?`,\n            onOk: (next) => {\n                captureAndAlertRequestErrorHoc(deleteVersion(version.id)).then(res => {\n                    if (res === null) {\n                        // 乐观更新\n                        setVersions(versions.filter((_, i) => i !== index))\n                    }\n                })\n                next()\n            }\n        })\n    }\n\n    return {\n        versions,\n        version,\n        isOnlineVersion: version?.id === onlineVid,\n        isOnlineVersionFun: () => version?.id === onlineVid,\n        lastVersionIndexRef,\n        setCurrentVersion(versionId) {\n            const currentV = versions.find(el => el.id === versionId)\n            setVersion(currentV)\n            return currentV\n        },\n        refrenshVersions,\n        deleteVersion: handleDeleteVersion,\n        changeName: handleChangName,\n    }\n}\n\n\n// 离开页面保存提示\nconst useBeforeUnload = (flow, nodes, preFlow, onPreFlowChange) => {\n    const { t } = useTranslation()\n    const navigate = useNavigate()\n    // 离开提示保存\n    useEffect(() => {\n        const fun = (e) => {\n            // 系统 重新加载 提示\n            var confirmationMessage = `${t('flow.unsavedChangesConfirmation')}`;\n            (e || window.event).returnValue = confirmationMessage; // Compatible with different browsers\n            return confirmationMessage;\n        }\n        window.addEventListener('beforeunload', fun);\n        return () => { window.removeEventListener('beforeunload', fun) }\n    }, [])\n\n    // 检查流程变化（忽略节点位置，只对比数据和边）\n    const hasChanged = useMemo(() => {\n        // 无新数据时视为未修改\n        if (!flow) return false;\n\n        try {\n            const oldFlowData = JSON.parse(preFlow);\n            // 旧数据不存在时视为有修改\n            if (!oldFlowData) return true;\n\n            // 提取新旧节点数据（忽略位置信息）\n            const { edges, nodes } = flow\n            const { edges: oldEdges, nodes: oldNodes } = oldFlowData\n\n            // 比较边和节点数据\n            return !(isEqual(edges, oldEdges) && nodes.every((node, i) =>\n                isEqual(node.data, oldNodes[i].data)));\n        } catch {\n            return true; // 解析失败视为有修改\n        }\n    }, [preFlow, nodes, flow]);\n\n    /**\n     * 处理页面返回逻辑：\n     * 1. 触发父组件更新为原始流程数据(nodes)\n     * 2. 标记本次变更为返回操作(isReturningRef)\n     * 3. 在节点更新后执行历史回退(回退后,根据hasChanged触发blocker)\n     */\n    const isReturningRef = useRef(false);\n    const handleReturn = () => {\n        onPreFlowChange();\n        isReturningRef.current = true;\n    };\n\n    // 当节点更新且为返回操作时，执行导航\n    useEffect(() => {\n        if (!isReturningRef.current) return;\n\n        isReturningRef.current = false;\n        window.history.length > 1\n            ? window.history.back()\n            : navigate('/build/apps');\n    }, [nodes]);\n\n    return {\n        returnPage: handleReturn,\n        blocker: useBlocker(hasChanged),\n        hasChanged\n    }\n}\n\nexport default Header;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/NoteNode.tsx",
    "content": "import { RbDragIcon } from '@/components/bs-icons/rbDrag';\nimport { NodeToolbar, useViewport } from '@xyflow/react';\nimport { useEffect, useRef, useState } from 'react';\nimport NodeToolbarComponent from './FlowNode/NodeToolbarComponent';\nimport { useHoverToolbar } from './FlowNode';\nimport { useTranslation } from 'react-i18next';\n\nfunction NoteNode({ data: node, selected, width, height }: { data: any; selected: boolean, width: number, height: number }) {\n    const textareaRef = useRef<HTMLTextAreaElement>(null);\n    const { zoom } = useViewport();\n        const { t } = useTranslation('flow')\n\n    const [value, setValue] = useState(node.value);\n    const [dimensions, setDimensions] = useState({ width, height });\n\n    const [isDragging, setIsDragging] = useState(false);\n    const [dragStart, setDragStart] = useState({ x: 0, y: 0, w: 0, h: 0 });\n\n    // 自动调整高度\n    const autoHeight = (textarea) => {\n        if (!textarea) return;\n\n        // 重置高度后获取自然高度\n        textarea.style.height = 'auto';\n        // 设置textarea实际高度\n        textarea.style.height = `${textarea.scrollHeight}px`;\n    }\n    useEffect(() => {\n        autoHeight(textareaRef.current);\n    }, [node.value, dimensions.height]);\n\n    // 拖拽处理\n    const handleMouseDown = (e: React.MouseEvent) => {\n        e.preventDefault();\n        const parent = textareaRef.current?.parentElement;\n        if (!parent) return;\n\n        setDragStart({\n            x: e.clientX,\n            y: e.clientY,\n            w: parent.offsetWidth,\n            h: parent.offsetHeight,\n        });\n        setIsDragging(true);\n    };\n\n    useEffect(() => {\n        const handleMouseMove = (e: MouseEvent) => {\n            if (!isDragging) return;\n\n            const deltaX = (e.clientX - dragStart.x) / zoom;\n            const deltaY = (e.clientY - dragStart.y) / zoom;\n\n            setDimensions({\n                width: dragStart.w + deltaX,\n                height: dragStart.h + deltaY\n            });\n        };\n\n        const handleMouseUp = () => {\n            setIsDragging(false)\n        };\n\n        if (isDragging) {\n            document.addEventListener('mousemove', handleMouseMove);\n            document.addEventListener('mouseup', handleMouseUp);\n        }\n\n        return () => {\n            document.removeEventListener('mousemove', handleMouseMove);\n            document.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, [isDragging, dragStart]);\n\n    const { isVisible, handleMouseEnter, handleMouseLeave } = useHoverToolbar();\n    return (\n        <div\n            className={`bisheng-node justify-start min-w-60 min-h-28 relative rounded-md border p-2 pt-4 bg-yellow-50 hover:border-orange-300 ${selected ? 'border-orange-300' : 'border-transparent'\n                }`}\n            data-id={node.id}\n            style={{\n                width: dimensions.width,\n                height: dimensions.height,\n            }}\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n        >\n            <NodeToolbar isVisible align=\"end\" className={`${isVisible ? '' : 'hidden'}`} >\n                <NodeToolbarComponent nodeId={node.id} type={node.type} onRun={() => { }} ></NodeToolbarComponent>\n            </NodeToolbar>\n            <textarea\n                ref={textareaRef}\n                className=\"nodrag nowheel w-full resize-none bg-transparent border-none  outline-none text-sm text-[#111] placeholder-gray-400 nodrag\"\n                placeholder={t('leaveIdea')}\n                value={value}\n                maxLength={5000}\n                onInput={() => {\n                    const _value = textareaRef.current?.value || ''\n                    node.value = _value;\n                    setValue(_value);\n                    autoHeight(textareaRef.current);\n                }}\n            />\n\n            {/* 拖拽手柄 */}\n            <div\n                className=\"nodrag absolute bottom-0 right-0 w-4 h-4 cursor-se-resize text-transparent\"\n                onMouseDown={handleMouseDown}\n            ><RbDragIcon /></div>\n        </div>\n    );\n}\n\nexport default NoteNode;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/Notification.tsx",
    "content": "import { ToastIcon } from \"@/components/bs-icons\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/bs-ui/alert\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport { darkContext } from \"@/contexts/darkContext\";\nimport { Bell, Trash2, X } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useFlowStore from \"./flowStore\";\n\nexport default function Notification() {\n    const { t } = useTranslation();\n    const { dark } = useContext(darkContext);\n    const [open, setOpen] = useState(false);\n\n    const notifications = useFlowStore((state) => state.notifications);\n    const clearNotifications = useFlowStore((state) => state.clearNotifications);\n\n    return (\n        <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger asChild>\n                <Button size=\"icon\" variant=\"outline\" className={`${!dark && 'bg-[#fff]'} size-8 relative`}>\n                    <Bell size={16} />\n                    {notifications.length > 0 && <div className=\"absolute top-1 right-1 rounded-full bg-status-red size-1.5\"></div>}\n                </Button>\n            </PopoverTrigger>\n            <PopoverContent className=\"p-2 cursor-pointer w-[400px] h-[500px] pb-10\">\n                <div className=\"text-md flex flex-row justify-between pl-3 font-medium text-foreground\">\n                    {t(\"flow.notification\")}\n                    <div className=\"flex gap-3 pr-3\">\n                        <button\n                            className=\"text-foreground hover:text-status-red\"\n                            onClick={clearNotifications}\n                        >\n                            <Trash2 className=\"h-[1.1rem] w-[1.1rem]\" />\n                        </button>\n                        <button\n                            className=\"text-foreground hover:text-status-red\"\n                            onClick={() => setOpen(false)}\n                        >\n                            <X className=\"h-5 w-5\" />\n                        </button>\n                    </div>\n                </div>\n                <div className=\"text-high-foreground mt-3 flex h-full w-full flex-col overflow-y-scroll scrollbar-hide\">\n                    {notifications.length > 0 ? (\n                        notifications.map((notification, index) => (\n                            <Alert data-type={notification.type} // set attr\n                                className=\"p-4 rounded-md mb-2\n                                border \n                                data-[type=success]:border-[#10b981] \n                                data-[type=error]:border-[#D8341E] \n                                data-[type=warning]:border-[#f59e0b] \n                                data-[type=info]:border-[#3b82f6] \n                                data-[type=success]:bg-[#d1fae5] \n                                data-[type=error]:bg-[#fee2e2] \n                                data-[type=warning]:bg-[#fef9c3] \n                                data-[type=info]:bg-[#dbeafe]\"\n                                key={index}\n                            >\n                                <ToastIcon type={notification.type} />\n                                <AlertTitle>{notification.title}</AlertTitle>\n                                <AlertDescription className=\"break-words whitespace-pre-wrap overflow-wrap-anywhere\">\n                                    {notification.description}\n                                </AlertDescription>\n                            </Alert>\n                        ))\n                    ) : (\n                        <div className=\"flex h-full w-full items-center justify-center pb-16 text-ring\">\n                            {t(\"flow.noNewNotifications\")}\n                        </div>\n                    )}\n                </div>\n            </PopoverContent>\n        </Popover>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/Panne.tsx",
    "content": "import ApiMainPage from \"@/components/bs-comp/apiComponent\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { copyReportTemplate } from \"@/controllers/API/workflow\";\nimport { WorkFlow, WorkflowNode } from \"@/types/flow\";\nimport { autoNodeName, calculatePosition, filterUselessFlow, initNode, useCopyPasteNode } from \"@/util/flowUtils\";\nimport { useUndoRedo } from \"@/util/hook\";\nimport { Background, BackgroundVariant, Connection, ReactFlow, addEdge, applyEdgeChanges, applyNodeChanges, useReactFlow } from '@xyflow/react';\nimport '@xyflow/react/dist/base.css';\nimport '@xyflow/react/dist/style.css';\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controls } from \"./Controls\";\nimport CustomEdge from \"./FlowEdge\";\nimport FlowNode from \"./FlowNode\";\nimport Header from \"./Header\";\nimport NoteNode from \"./NoteNode\";\nimport Sidebar from \"./Sidebar\";\nimport useFlowStore from \"./flowStore\";\n\n// 自定义组件\nconst nodeTypes = { flowNode: FlowNode, noteNode: NoteNode };\n// 流程编排面板\nexport default function Panne({ flow, preFlow }: { flow: WorkFlow, preFlow: string }) {\n    const [reactFlowInstance, setReactFlowInstance] = useState(null);\n    const { t } = useTranslation('flow')\n    // 导入自适应布局\n    const fitView = useFlowStore(state => state.fitView)\n    const [flowKey, setFlowKey] = useState(1)\n    useEffect(() => {\n        if (reactFlowInstance) {\n            setTimeout(() => {\n                reactFlowInstance.fitView();\n                setFlowKey(Date.now())\n            }, 0);\n        }\n    }, [fitView])\n\n    useEffect(() => {\n        return () => {\n            setReactFlowInstance(null) // 销毁reactflow实例\n        }\n    }, [])\n\n    const { takeSnapshot } = useUndoRedo()\n\n    const {\n        reactFlowWrapper, nodes, edges, keyBoardPanneRef,\n        setNodes, onNodesChange, onSelectionChange, onEdgesChange,\n        onEdgeSelect, onConnect, onDragOver, onDrop, setEdges, setViewport, createNote\n    } = useFlow(reactFlowInstance, flow, takeSnapshot)\n\n    /**\n     * 监听节点变化，更新flow数据\n     * 用户手动修改节点，或者使用reactFlow实例的setNode、setEdge都会触发\n     * 注意 这里是唯一修改flow的入口，禁止在其他位置修改 flow的引用\n     */\n    useEffect(() => {\n        if (reactFlowInstance && flow) {\n            console.log('数据更新 :>> ', reactFlowInstance.toObject());\n            const { nodes, edges, viewport } = reactFlowInstance.toObject()\n            flow.nodes = nodes\n            flow.edges = edges\n            flow.viewport = viewport\n        }\n    }, [nodes, edges]);\n\n    const [dropdownOpenEdgeId, setDropdownOpenEdgeId] = useState(null); // 用于追踪当前打开菜单的连线ID\n    // 处理点击加号按钮时的操作，打开或关闭菜单\n    const handleButtonClick = (edgeId) => {\n        if (dropdownOpenEdgeId === edgeId) {\n            // 如果当前连线已经打开菜单，点击加号按钮会关闭菜单\n            setDropdownOpenEdgeId(null);\n        } else {\n            // 如果当前连线没有打开菜单，点击加号按钮会打开菜单\n            setDropdownOpenEdgeId(edgeId);\n        }\n    };\n\n    const onNodeDragStart = useCallback(() => {\n        // 👇 make dragging a node undoable\n        takeSnapshot();\n        // 👉 you can place your event handlers here\n    }, [takeSnapshot]);\n\n    const onSelectionDragStart = useCallback(() => {\n        // 👇 make dragging a selection undoable\n        takeSnapshot();\n    }, [takeSnapshot]);\n\n    const onEdgesDelete = useCallback(() => {\n        // 👇 make deleting edges undoable\n        takeSnapshot();\n    }, [takeSnapshot]);\n\n    const [showApiPage, setShowApiPage] = useState(false)\n\n    return <div className=\"flex flex-col h-full overflow-hidden\">\n        <Header\n            flow={flow}\n            nodes={nodes}\n            onTabChange={(type) => setShowApiPage('api' === type)}\n            preFlow={preFlow}\n            onImportFlow={(nodes, edges, viewport) => {\n                setNodes(nodes)\n                setEdges(edges)\n                setViewport(viewport)\n            }}\n            onPreFlowChange={() => {\n                // 返回上一步前, 更新flow数据再对比\n                const { nodes } = reactFlowInstance.toObject()\n                setNodes(nodes)\n            }}\n        ></Header>\n        <div className={`flex-1 min-h-0 overflow-hidden ${showApiPage ? 'hidden' : ''} relative`}>\n            <Sidebar onInitStartNode={node => {\n                // start node\n                const nodeId = `${node.type}_${generateUUID(5)}`;\n                node.id = nodeId;\n                node.name = t(`node.${node.type}.name`)\n                node.description = t(`node.${node.type}.description`)\n                if (!flow.nodes || flow.nodes.length === 0) {\n                    setTimeout(() => {\n                        setNodes([{ id: nodeId, type: 'flowNode', position: { x: window.innerWidth * 0.4, y: 20 }, data: node }]);\n                    }, 500); // after init\n                }\n            }} />\n            <main\n                className=\"h-full flex flex-1 bg-gray-50\"\n                tabIndex={-1}\n                ref={keyBoardPanneRef}>\n                <div className=\"size-full\" ref={reactFlowWrapper}>\n                    <div className=\"size-full\">\n                        <ReactFlow\n                            key={flowKey}\n                            nodes={nodes}\n                            edges={edges}\n                            onInit={setReactFlowInstance}\n                            onNodesChange={onNodesChange} // rebuild?\n                            onEdgesChange={onEdgesChange} // rebuild?\n                            onConnect={onConnect}\n                            nodeTypes={nodeTypes}\n                            onPaneClick={() => {\n                                setDropdownOpenEdgeId(null);\n                                window.dispatchEvent(new CustomEvent(\"closeHandleMenu\"));\n                            }}\n                            edgeTypes={{\n                                customEdge: (edgeProps) => (\n                                    <CustomEdge\n                                        {...edgeProps}\n                                        isDropdownOpen={dropdownOpenEdgeId === edgeProps.id}\n                                        onButtonClick={handleButtonClick}\n                                        onOptionSelect={(data) => { onEdgeSelect(data); setDropdownOpenEdgeId(null) }}\n                                    />\n                                ),\n                            }}\n                            minZoom={0.1}\n                            maxZoom={8}\n                            disableKeyboardA11y={true}\n                            // fitView\n                            className={window.ThemeStyle.bg === 'logo' && \"flow-bg-logo\"}\n                            onDragOver={onDragOver}\n                            onDrop={onDrop}\n                            onSelectionChange={onSelectionChange}\n                            onBeforeDelete={(e) =>\n                                // 阻止start节点删除\n                                !e.nodes.some(node => node.data.type === 'start')\n                            }\n                            onEdgesDelete={onEdgesDelete}\n                            onNodeDragStart={onNodeDragStart} // 快照\n                            onSelectionDragStart={onSelectionDragStart} // 快照\n                            onNodesDelete={() => {\n                                console.log('【删除节点】');\n                                takeSnapshot(flow)\n                            }} // 更新setEdges\n                            // 自定义线组件\n                            // connectionLineComponent={ConnectionLineComponent} \n                            // 校验连线合法性\n                            // onReconnect={onEdgeUpdate} \n                            // onReconnectStart={onEdgeUpdateStart}\n                            // onReconnectEnd={onEdgeUpdateEnd}\n                            style={{\n                                backgroundImage: window.ThemeStyle.bg === 'gradient'\n                                    && 'radial-gradient(circle at center bottom, hsl(var(--primary) / 30%) 2%, hsl(var(--primary) / 20%) 25%, hsl(var(--primary) / 5%) 60%, rgba(0, 0, 0, 0) 100%)',\n                                backgroundRepeat: 'no-repeat',\n                                backgroundSize: 'cover',\n                            }}\n                        >\n                            <Background className=\"dark:bg-gray-950\" color='#999' variant={BackgroundVariant.Dots} />\n                            <Controls position=\"bottom-left\" onCreateNote={createNote}></Controls>\n                        </ReactFlow>\n                    </div>\n                </div>\n            </main>\n        </div>\n        <div className={`flex flex-1 min-h-0 overflow-hidden ${showApiPage ? '' : 'hidden'}`}>\n            <ApiMainPage type={'flow'} />\n        </div>\n    </div>\n};\n\n\nconst useFlow = (_reactFlowInstance, data, takeSnapshot) => {\n    const { t } = useTranslation('flow')\n    const reactFlowWrapper = useRef(null);\n\n    const [nodes, setNodes] = useState(data.nodes);\n    const [edges, setEdges] = useState(data.edges);\n    const { setViewport } = useReactFlow();\n    // console.log('nodes edges:>> ', nodes, edges);\n    //update flow when tabs change\n    useEffect(() => {\n        setNodes(data?.nodes ?? []);\n        setEdges(data?.edges ?? []);\n        if (_reactFlowInstance) {\n            setViewport(data?.viewport ?? { x: 140, y: 140, zoom: 0.5 });\n            _reactFlowInstance.fitView();\n        }\n    }, [data, _reactFlowInstance, setEdges, setNodes, setViewport]);\n\n    // 绑定快捷键\n    const { keyBoardPanneRef, setLastSelection } = useKeyBoard(_reactFlowInstance, reactFlowWrapper, setNodes, setEdges)\n\n    const onNodesChange = useCallback(\n        (changes) => setNodes((nds) => applyNodeChanges(changes, nds)),\n        [setNodes]\n    );\n    const onEdgesChange = useCallback(\n        (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)),\n        [setEdges]\n    );\n    const onConnect = useCallback(\n        (params: Connection) => {\n            takeSnapshot()\n            let _nodes = []\n            setNodes((x) => {\n                _nodes = x\n                return x\n                // 触发此方法时，避免克隆节点。因为节点已经在组件内部被闭包捕获，直接更新节点会导致更新的是旧的节点，而不是最新的节点\n                // return cloneDeep(x)\n            });\n            setEdges((eds) => {\n                // 校验\n                const _eds = filterUselessFlow(_nodes, eds)\n                return addEdge(\n                    {\n                        ...params,\n                        type: 'customEdge',\n                        // style: { stroke: \"#024de3\", strokeWidth: 2 },\n                        // className: 'stroke-foreground stroke-connection',\n                        animated: true\n                    },\n                    _eds\n                )\n            });\n        },\n        [setEdges, setNodes, takeSnapshot]\n    );\n\n    // 拖拽结束样式\n    const onDragOver = useCallback((event: React.DragEvent) => {\n        event.preventDefault();\n        if (event.dataTransfer.types.some((t) => t === \"flownodedata\")) {\n            event.dataTransfer.dropEffect = \"move\";\n        } else {\n            event.dataTransfer.dropEffect = \"copy\";\n        }\n    }, []);\n    const onDrop = useCallback(\n        (event: React.DragEvent) => {\n            event.preventDefault();\n            if (event.dataTransfer.types.some((t) => t === \"flownodedata\")) {\n                takeSnapshot();\n                const reactflowBounds = reactFlowWrapper.current.getBoundingClientRect();\n                let flowdata: { type: string; node?: WorkflowNode } = JSON.parse(\n                    event.dataTransfer.getData(\"flownodedata\")\n                );\n\n                const position = _reactFlowInstance.screenToFlowPosition({\n                    x: event.clientX - reactflowBounds.left,\n                    y: event.clientY - reactflowBounds.top,\n                });\n\n                const nodeId = `${flowdata.node.type}_${generateUUID(5)}`\n                flowdata.node.id = nodeId\n                // 增加节点\n                setNodes((nds) => {\n                    const newNode = initNode(flowdata.node, nds, t)\n                    return nds.concat({ id: nodeId, type: 'flowNode', position, data: newNode })\n                });\n            } else if (event.dataTransfer.types.some((t) => t === \"Files\")) {\n                // 拖拽上传\n                // takeSnapshot();\n                // uploadFlow(event.dataTransfer.files.item(0));\n            }\n        },\n        // Specify dependencies for useCallback\n        [setNodes, _reactFlowInstance, takeSnapshot]\n    );\n\n    const onEdgeSelect = (obj) => {\n        takeSnapshot()\n        const { node, edgeId, position } = obj\n        let flowdata: { type: string; node: WorkflowNode } = cloneDeep(node)\n        const nodeId = `${flowdata.node.type}_${generateUUID(5)}`\n        flowdata.node.id = nodeId\n        // 增加节点\n        setNodes((nds) => {\n            const newNode = initNode(flowdata.node, nds, t)\n            return nds.concat({\n                id: nodeId, type: 'flowNode', position: {\n                    x: position.x - 160,\n                    y: position.y - 100,\n                }, data: newNode\n            })\n        });\n        // 增加边\n        setEdges((eds) => {\n            const edge = eds.find(el => el.id === edgeId)\n            const leftEdge = { ...edge, selected: false, target: nodeId, id: `xy-edge__${edge.source}${edge.sourceHandle}-${nodeId}${edge.targetHandle}` }\n            const rightEdge = { ...edge, selected: false, source: nodeId, sourceHandle: \"right_handle\", id: `xy-edge__${nodeId}right_handle-${edge.target}${edge.targetHandle}` }\n\n            return eds\n                .filter(el => el.id !== edgeId)\n                .concat(leftEdge, rightEdge);\n        })\n    }\n\n    // 监听来自自定义节点的Chang value\n    useEffect(() => {\n        // 定义事件监听器\n        const handleNodeUpdate = (event) => {\n            const { nodeId, newData } = event.detail;\n            // 根据 nodeId 和 newData 更新节点状态\n            setNodes((nds) =>\n                nds.map((node) =>\n                    node.id === nodeId ? { ...node, data: { ...node.data, ...newData } } : node\n                )\n            );\n        };\n        // del node\n        const handleNodeDelete = (event) => {\n            takeSnapshot()\n            const nodeId = event.detail;\n            setNodes((nodes) => nodes.filter((n) => n.id !== nodeId));\n            setEdges((edges) => edges.filter((ns) => ns.source !== nodeId && ns.target !== nodeId));\n        }\n\n        // copy\n        const handleCopy = async (event) => {\n            const nodeIds = event.detail;\n            let nodes = _reactFlowInstance.getNodes();\n            // let edges = _reactFlowInstance.getEdges();\n\n            const newNodes = await Promise.all(nodeIds.map(async nodeId => {\n                const node = nodes.find(n => n.id === nodeId);\n                const position = calculatePosition(nodes, {\n                    x: node.position.x + 100,\n                    y: node.position.y + 100,\n                })\n                if (node.type === \"noteNode\") {\n                    const newNodeId = `note_${generateUUID(5)}`\n                    return {\n                        id: newNodeId,\n                        type: \"noteNode\",\n                        data: {\n                            ...node.data,\n                            id: newNodeId\n                        },\n                        position,\n                        selected: false\n                    };\n                }\n                const newNodeId = `${node.data.type}_${generateUUID(5)}`\n                // id替换\n                const data = JSON.parse(JSON.stringify(node.data).replaceAll(nodeId, newNodeId))\n                // 复制报告节点中报告模板\n                await copyReportTemplate(data);\n                return {\n                    id: newNodeId,\n                    type: \"flowNode\",\n                    position,\n                    data: {\n                        ...data,\n                        id: newNodeId,\n                    },\n                    selected: false\n                };\n            }));\n\n            // 增加节点\n            setNodes((nds) => {\n                const _newNodes = newNodes.map(node => {\n                    if (node.type === \"flowNode\") {\n                        node.data.name = autoNodeName(nds, node.data.name)\n                    }\n                    return node\n                });\n                return nds.map((e) => ({ ...e, selected: false })).concat(_newNodes)\n            });\n        }\n\n        // add node by handle\n        const handleAddNode = (event) => {\n            takeSnapshot()\n            const { id, targetNode, isLeft, position } = event.detail;\n            const newNode = cloneDeep(event.detail.newNode)\n            window.dispatchEvent(new CustomEvent(\"closeHandleMenu\"));\n\n            const nodeId = `${newNode.type}_${generateUUID(5)}`\n            newNode.node.id = nodeId\n            const reactflowBounds = reactFlowWrapper.current.getBoundingClientRect();\n            const pos = _reactFlowInstance.screenToFlowPosition({\n                x: position.x - reactflowBounds.left + (isLeft ? -300 : 80),\n                y: position.y - reactflowBounds.top,\n            });\n            // 增加节点\n            setNodes((nds) => {\n                const _newNode = initNode(newNode.node, nds, t)\n                return nds.concat({\n                    id: nodeId, type: 'flowNode', position: pos, data: _newNode\n                })\n            });\n\n            // let data: { type: string; node: WorkflowNode } = node\n            // data.node.id = nodeId\n            // // 增加边\n            const edge = isLeft ? {\n                animated: true,\n                id: `xy-edge__${nodeId}right_handle-${targetNode.id}left_handle`,\n                source: nodeId,\n                sourceHandle: \"right_handle\",\n                target: targetNode.id,\n                targetHandle: \"left_handle\",\n                type: \"customEdge\"\n            } : {\n                animated: true,\n                id: `xy-edge__${targetNode.id}${id || 'right_handle'}-${nodeId}left_handle`,\n                source: targetNode.id,\n                sourceHandle: id || \"right_handle\",\n                target: nodeId,\n                targetHandle: \"left_handle\",\n                type: \"customEdge\"\n            }\n            setEdges((eds) => [\n                edge,\n                ...eds\n            ]);\n        }\n\n\n        // 删除输出节点连线\n        const handleDelOutputEdge = (event) => {\n            const { nodeId } = event.detail;\n            setEdges((eds) => eds.filter((ns) => ns.source !== nodeId));\n        }\n\n        // 监听自定义事件\n        window.addEventListener('nodeUpdate', handleNodeUpdate);\n        window.addEventListener('nodeDelete', handleNodeDelete);\n        window.addEventListener('nodeCopy', handleCopy);\n        window.addEventListener('addNodeByHandle', handleAddNode);\n        window.addEventListener('outputDelEdge', handleDelOutputEdge);\n\n        // 在组件卸载时移除事件监听\n        return () => {\n            window.removeEventListener('nodeUpdate', handleNodeUpdate);\n            window.addEventListener('nodeDelete', handleNodeDelete);\n            window.removeEventListener('nodeCopy', handleCopy);\n            window.removeEventListener('addNodeByHandle', handleAddNode);\n            window.addEventListener('outputDelEdge', handleDelOutputEdge);\n        };\n    }, [_reactFlowInstance]);\n\n    // 添加便签节点\n    const handleAddNote = () => {\n        takeSnapshot()\n        const nodeId = `note_${generateUUID(5)}`\n        const reactflowBounds = reactFlowWrapper.current.getBoundingClientRect();\n        const pos = _reactFlowInstance.screenToFlowPosition({\n            x: reactflowBounds.width * 0.2, y: reactflowBounds.height * 0.9\n        });\n        const position = calculatePosition(nodes, {\n            x: pos.x + 50,\n            y: pos.y + 50,\n        })\n        // 增加节点\n        setNodes((nds) => {\n            return nds.concat({\n                id: nodeId, type: 'noteNode', position, data: {\n                    id: nodeId,\n                    group_params: [],\n                    type: 'note',\n                    value: ''\n                }\n            })\n        });\n    }\n    // 选中节点\n    const onSelectionChange = useCallback((data) => {\n        setLastSelection(data);\n    }, []);\n\n    return {\n        reactFlowWrapper, nodes, edges, keyBoardPanneRef,\n        onNodesChange, onEdgesChange, onConnect, setViewport,\n        onDragOver, onDrop, onSelectionChange, onEdgeSelect, setNodes, setEdges,\n        createNote: handleAddNote\n    }\n}\n\n// 复制粘贴组件，支持跨技能粘贴\nconst useKeyBoard = (_reactFlowInstance, reactFlowWrapper) => {\n    const keyBoardPanneRef = useRef<HTMLDivElement>(null); // 绑定快捷键\n    const [lastSelection, setLastSelection] = useState(null);\n    const { setNodes, setEdges } = useReactFlow();\n\n    useCopyPasteNode(keyBoardPanneRef.current, lastSelection, (newSelectNode, position) => {\n        if (newSelectNode.nodes.some(node => node.data.type === 'start')) return\n        let bounds = reactFlowWrapper.current.getBoundingClientRect();\n        setNodes((nds) => {\n            // TODO 合并到复制节点方法\n            const newNodes = newSelectNode.nodes.map(node => {\n                const nodeId = `${node.data.type}_${generateUUID(5)}`\n                const newNode = JSON.parse(JSON.stringify(node).replaceAll(node.id, nodeId))\n                newNode.id = nodeId\n                newNode.data.id = nodeId\n                const newName = autoNodeName(nds, newNode.data.name)\n                newNode.data.name = newName\n                // 复制报告节点中报告模板\n                copyReportTemplate(newNode.data)\n                // newNode.selected = false\n\n                newNode.position = _reactFlowInstance.screenToFlowPosition({\n                    x: position.x - bounds.left,\n                    y: position.y - bounds.top,\n                });\n                return newNode\n            })\n            return [...newNodes, ...nds]\n        })\n    }, (selectNode) => {\n        // 删除线和node\n        // takeSnapshot()\n        const targetNodes = selectNode.nodes;\n        const targetEdges = selectNode.edges;\n\n        if (targetNodes.some(node => node.data.type === 'start')) return\n        setNodes((nodes) => nodes.filter((n) => !targetNodes.some(el => el.id === n.id)));\n        setEdges((edges) => edges.filter((ns) => !targetEdges.some(el => el.id === ns.id)));\n    }, [_reactFlowInstance, setNodes])\n\n    return { keyBoardPanneRef, setLastSelection }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/Sidebar.tsx",
    "content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"@/components/bs-ui/accordion\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { getToolsApi } from \"@/controllers/API/tools\";\nimport { getWorkflowNodeTemplate } from \"@/controllers/API/workflow\";\nimport { getToolTree } from \"@/util/flowUtils\";\nimport { cloneDeep } from \"lodash-es\";\nimport { ListVideo } from \"lucide-react\";\nimport { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQuery } from \"react-query\";\nimport NodeLogo from \"./FlowNode/NodeLogo\";\n\nconst ToolItem = ({ temp, index, dropdown, onDragStart, onClick }) => {\n    const { t } = useTranslation('tool');\n    const sortData = useMemo(() => {\n        const { children, is_preset } = temp;\n        if (children) {\n            return is_preset === 2 ? children.sort((a, b) => a.id - b.id) : children;\n        }\n        return [];\n    }, [temp.children]);\n\n    return <AccordionItem key={temp.name} value={temp.name + index} className=\"border-none\">\n        <AccordionTrigger className=\"py-2 bisheng-label\">\n            <span className=\"break-all text-left\">{temp.is_preset === 1 ? t(`categories.${temp.name}.name`) : temp.name}</span>\n        </AccordionTrigger>\n        <AccordionContent className=\"pb-2\">\n            {\n                sortData.map(el =>\n                    <Tooltip key={el.name}>\n                        <TooltipTrigger className=\"block w-full\">\n                            <div key={el.name}\n                                className={`flex gap-2 items-center p-2 cursor-pointer border border-transparent rounded-md hover:border-gray-200`}\n                                onMouseEnter={(event) => {\n                                    if (!event.currentTarget.classList.contains('border-gray-200')) {\n                                        event.currentTarget.classList.add('bg-muted');\n                                    }\n                                }}\n                                onMouseLeave={(event) => {\n                                    event.currentTarget.classList.remove('bg-muted');\n                                }}\n                                draggable={!dropdown}\n                                onDragStart={(event) => {\n                                    onDragStart(event, { type: el.type, node: { ...el, is_preset: temp.is_preset === 1 } })\n                                }}\n                                onDragEnd={(event) => {\n                                    document.body.removeChild(\n                                        document.getElementsByClassName(\n                                            \"cursor-dragging\"\n                                        )[0]\n                                    );\n                                }}\n                                onClick={() => {\n                                    if (!dropdown) return\n                                    onClick(el.type, el.tool_key)\n                                }}\n                            >\n                                <NodeLogo type=\"tool\" colorStr={el.name} />\n                                <span className=\"text-sm truncate\">{temp.is_preset === 1 ? t(`tools.${el.tool_key}.name`) : el.name}</span>\n                            </div>\n                        </TooltipTrigger>\n                        {el.description && <TooltipContent side=\"right\">\n                            <div className=\"max-w-96 text-left break-all whitespace-normal\">{temp.is_preset === 1 ? t(`tools.${el.tool_key}.desc`) : el.description}</div>\n                        </TooltipContent>}\n                    </Tooltip>\n                )\n            }\n        </AccordionContent>\n    </AccordionItem>\n}\n\nexport default function Sidebar({ dropdown = false, disabledNodes = [], onInitStartNode = (node: any) => { }, onClick = (k) => { } }) {\n    const { t } = useTranslation('flow')\n    const { data: tempData, refetch } = useQuery({\n        queryKey: \"QueryWorkFlowTempKey\",\n        queryFn: () => getWorkflowNodeTemplate(),\n        cacheTime: 0\n    });\n\n    const getNodeDataByTemp = (temp) => {\n        return {\n            type: temp.type,\n            name: t(`node.${temp.type}.name`),\n            icon: <NodeLogo type={temp.type} />,\n            desc: t(`node.${temp.type}.description`)\n        }\n    }\n\n    // 先刷新mcp服务接口\n    // const [loading, setLoading] = useState(true)\n    // const onecRef = useRef(false)\n    const handleLoadTools = async (val) => {\n        // if (val !== 'tool' || onecRef.current) return\n        // setLoading(true)\n        // onecRef.current = true\n        // try {\n        //     await refreshAssistantMcpApi()\n        // } catch (error) {\n        //     console.error(error)\n        // }\n        // refetch()\n        // setLoading(false)\n    }\n\n    const nodeTemps = useMemo(() => {\n        if (!tempData) return []\n        // TODO 追加MCP工具\n        return tempData.reduce((list, temp) => {\n            if (disabledNodes.includes(temp.type)) return list\n            const newNode = getNodeDataByTemp(temp)\n            temp.type === 'start' ? onInitStartNode(cloneDeep(temp)) : list.push(newNode)\n            return list\n        }, [])\n    }, [tempData, disabledNodes])\n\n\n    // tool\n    const { data: toolTempData } = useQuery({\n        queryKey: \"QueryToolsKey\",\n        queryFn: () => getToolsApi('all'),\n        cacheTime: 0\n    });\n\n    const toolTemps = useMemo(() => {\n        if (!toolTempData) return []\n        return toolTempData.reduce((list, temp) => {\n            // 这几个产品说先不用\n            if (['时间', '计算器', '代码执行器'].includes(temp.name)) return list\n            list.push(getToolTree(temp))\n            return list\n        }, [])\n    }, [toolTempData])\n\n    const [expand, setExpand] = useState(true)\n\n    function onDragStart(\n        event: React.DragEvent<any>,\n        data: { type: string; node?: any }\n    ) {\n        // start drag event\n        var crt = event.currentTarget.cloneNode(true);\n        crt.style.position = \"absolute\";\n        crt.style.width = \"238px\";\n        crt.style.top = \"-500px\"; // 移出可视区\n        crt.style.left = \"-500px\";\n        crt.classList.add(\"cursor-dragging\");\n        document.body.appendChild(crt);\n        event.dataTransfer.setDragImage(crt, 10, 10); // 影子\n        event.dataTransfer.setData(\"flownodedata\", JSON.stringify(data));\n    }\n\n    return <div className={`${dropdown ? 'relative' : 'absolute'} max-w-60 z-40 h-full transition-transform ${expand ? 'p-2' : 'py-2 translate-x-[-200px]'}`}>\n        <div className=\"bg-background rounded-2xl shadow-md h-full p-2\">\n            {/* tab */}\n            <Tabs defaultValue=\"base\" className=\"h-full\" onValueChange={handleLoadTools}>\n                <div className=\"flex gap-1\">\n                    <TabsList className=\"\">\n                        <TabsTrigger className=\"min-w-20\" value=\"base\">{t('basicNodes')}</TabsTrigger>\n                        <TabsTrigger className=\"min-w-20\" value=\"tool\">{t('toolNodes')}</TabsTrigger>\n                    </TabsList>\n                    {!dropdown && <Button size=\"icon\" variant=\"secondary\" className={`${expand ? ' right-[-30px]' : 'right-[-46px]'} absolute bg-[#fff] dark:bg-gray-950 top-2 rounded-full size-8`} onClick={() => setExpand(!expand)}>\n                        <ListVideo className={`size-4 ${expand ? 'rotate-180' : ''}`} />\n                    </Button>}\n                </div>\n                {/* base */}\n                <TabsContent value=\"base\">\n                    <TooltipProvider delayDuration={100}>\n                        {\n                            nodeTemps.map((item, index) =>\n                                <Tooltip key={item.type}>\n                                    <TooltipTrigger className=\"block w-full\">\n                                        <div key={item.type}\n                                            className={`flex gap-2 items-center p-2 cursor-pointer border border-transparent rounded-md hover:border-gray-200 dark:hover:border-gray-800`}\n                                            onMouseEnter={(event) => {\n                                                // 如果正在拖拽，不移除hover样式\n                                                event.stopPropagation()\n                                                if (!event.currentTarget.classList.contains('border-gray-200')) {\n                                                    event.currentTarget.classList.add('bg-muted');\n                                                }\n                                            }}\n                                            onMouseLeave={(event) => {\n                                                event.stopPropagation()\n                                                event.currentTarget.classList.remove('bg-muted');\n                                            }}\n                                            draggable={!dropdown}\n                                            onDragStart={(event) => {\n                                                event.stopPropagation()\n                                                event.dataTransfer.setData(\"application/my-app-internal\", \"true\"); // 防止触发拖拽上传\n                                                onDragStart(event, { type: item.type, node: tempData.find(tmp => tmp.type === item.type) })\n                                            }}\n                                            onDragEnd={(event) => {\n                                                document.body.removeChild(\n                                                    document.getElementsByClassName(\n                                                        \"cursor-dragging\"\n                                                    )[0]\n                                                );\n                                            }}\n                                            onClick={() => dropdown && onClick({ type: item.type, node: tempData.find(tmp => tmp.type === item.type) })}\n                                        >\n                                            {item.icon}\n                                            <span className=\"text-sm text-left\">{item.name}</span>\n                                        </div>\n                                    </TooltipTrigger>\n                                    <TooltipContent side=\"right\">\n                                        <div className=\"max-w-96 text-left break-all whitespace-normal\">{item.desc}</div>\n                                    </TooltipContent>\n                                </Tooltip>\n                            )\n                        }\n                    </TooltipProvider>\n                </TabsContent>\n                {/* tool */}\n                <TabsContent value=\"tool\" className=\"nowheel overflow-y-auto h-[calc(100vh-10rem)] max-w-44 relative\">\n                    <Accordion type=\"multiple\" className=\"w-full\">\n                        <TooltipProvider delayDuration={100}>\n                            {toolTemps.map((temp, index) =>\n                                <ToolItem\n                                    key={temp.id}\n                                    temp={temp}\n                                    index={index}\n                                    dropdown={dropdown}\n                                    onDragStart={onDragStart}\n                                    onClick={(type, tool_key) => {\n                                        let node = null\n                                        toolTemps.some((temp) => {\n                                            node = temp.children.find(node => node.tool_key === tool_key)\n                                            return node\n                                        })\n                                        onClick({ type, node })\n                                    }}\n                                />\n                            )}\n                        </TooltipProvider>\n                    </Accordion>\n                </TabsContent>\n            </Tabs>\n            {/* 搜索 */}\n            {/* <div className=\"side-bar-search-div-placement\">\n            <input type=\"text\" name=\"search\" id=\"search\" placeholder={t('flow.searchComponent')} className=\"input-search rounded-full\"\n                onChange={(e) => {\n                    handleSearchInput(e.target.value);\n                    setSearch(e.target.value);\n                }}\n            />\n            <div className=\"search-icon\">\n                <Search size={20} strokeWidth={1.5} className=\"\" />\n            </div>\n        </div> */}\n        </div>\n    </div >\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/flowStore.ts",
    "content": "import { WorkFlow } from '@/types/flow';\nimport { create } from 'zustand';\n\ntype State = {\n    flow: WorkFlow\n    fitView: boolean,\n    runCache: {\n        [nodeId: string]: {\n            [key: string]: string\n        }\n    }\n}\n\ntype Actions = {\n    setFlow: (flowid: WorkFlow) => void;\n    uploadFlow: (file?: File) => void;\n    setFitView: () => void;\n    // updateNode: (id: string, data: any) => void;\n    setRunCache: (nodeId: string, keyInput: { key: string, value: string }) => void;\n    clearRunCache: () => void;\n}\n\nconst useFlowStore = create<State & Actions & { notifications: Notification[]; addNotification: (notification: Notification) => void; clearNotifications: () => void }>((set) => ({\n    flow: null,\n    fitView: false,\n    runCache: {},\n    notifications: [], // 消息队列\n    setFlow: (newFlow) => set({ flow: newFlow }),\n    setFitView: () => set((state) => ({ fitView: !state.fitView })),\n    uploadFlow(file?: File) { // 导入工作流\n       \n    },\n    // 添加消息到队列\n    addNotification: (notification) =>\n        set((state) => ({\n            notifications: [notification, ...state.notifications,]\n        })),\n    // 清空消息队列\n    clearNotifications: () => set({ notifications: [] }),\n    // 运行缓存\n    setRunCache: (nodeId, keyInput) => {\n        set((state) => ({\n            runCache: {\n                ...state.runCache,\n                [nodeId]: keyInput\n            }\n        }));\n    },\n    clearRunCache: () => set({ runCache: {} })\n}));\n\ntype Notification = {\n    title: string;\n    description: string;\n    type: \"success\" | \"error\" | \"info\" | \"warning\"; // 消息类型\n};\n\n\nexport default useFlowStore;\n\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/flow/index.tsx",
    "content": "import { checkAppEditPermission, getFlowApi } from \"@/controllers/API/flow\";\nimport { flowVersionCompatible } from \"@/util/flowCompatible\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Panne from \"./Panne\";\nimport useFlowStore from \"./flowStore\";\n\n\nexport default function FlowPage() {\n    // const { flow, setFlow } = useContext(TabsContext);\n    const { id } = useParams();\n\n    // useEffect(() => {\n    //     if (id && flow?.id !== id) {\n    //         // 切换技能重新加载flow数据\n    //         getFlowApi(id).then(_flow => setFlow('flow_init', _flow))\n    //     }\n    // }, [])\n\n    const { flow, setFlow, clearRunCache, clearNotifications } = useFlowStore()\n    const [checking, setChecking] = useState(true)\n\n    const flowInit = async () => {\n        await checkAppEditPermission(id, 10)\n        \n        getFlowApi(id).then(f => {\n            setChecking(false)\n            clearRunCache();\n\n            if (f.data) {\n                const { data, ..._flow } = f\n                return setFlow({\n                    ..._flow,\n                    nodes: data.nodes,\n                    edges: data.edges,\n                    viewport: data.viewport\n                })\n            }\n            // default\n            setFlow({\n                ...f,\n                nodes: [],\n                edges: [],\n                viewport: {\n                    x: 0,\n                    y: 0,\n                    zoom: 1\n                },\n                version_list: []\n            });\n        })\n    }\n\n    useEffect(() => {\n        flowInit()\n\n        return () => {\n            setFlow(null);\n            clearRunCache();\n            clearNotifications()\n        }\n    }, [])\n\n    const [copyFlow, preFlow] = useMemo(() => {\n        if (flow?.id === id) {\n            // const copyFlow = cloneDeep(flow)\n            // 版本兼容\n            const newFlow = flowVersionCompatible(flow)\n            return [newFlow, JSON.stringify(newFlow || null)] as const\n        }\n        return []\n    }, [flow, id])\n\n    if (checking) return null\n\n    return (\n        <div className=\"flow-page-positioning\">\n            {copyFlow && <Panne flow={copyFlow} preFlow={preFlow} />}\n        </div>\n    );\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/hook.ts",
    "content": "import { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { getAllLabelsApi } from \"@/controllers/API/label\";\nimport { AppType } from \"@/types/app\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQuery } from 'react-query';\n\nexport const useQueryLabels = (t) => {\n    const { data: options, refetch } = useQuery({\n        queryKey: \"QueryLabelsKey\",\n        queryFn: () => getAllLabelsApi().then(res =>\n            res.data.map(d => ({ label: d.name, value: d.id, edit: false, selected: false }))\n        )\n    });\n\n    const [searchKey, setSearchKey] = useState('');\n    const [selectLabel, setSelectLabel] = useState({ label: '', value: null })\n\n    const [filteredOptions, allOptions] = useMemo(() => {\n        if (!options) return [[], []]\n        const topItem = { label: t('all'), value: -1, edit: false, selected: false }\n        if (!searchKey) return [options, [topItem, ...options]];\n        // 检索\n        const _newOptions = options.filter(op => op.label.toUpperCase().includes(searchKey.toUpperCase()) || op.value === selectLabel.value)\n        return [_newOptions, [topItem, ..._newOptions]]\n    }, [searchKey, options, selectLabel])\n\n    return {\n        selectLabel,\n        setSelectLabel,\n        setSearchKey,\n        filteredOptions,\n        allOptions,\n        refetchLabels: refetch\n    }\n}\n\n\n// 创建技能模板弹窗状态\nexport const useCreateTemp = () => {\n    const [open, setOpen] = useState(false)\n    const [tempType, setType] = useState<AppType>(AppType.ALL)\n    const flowRef = useRef(null)\n\n    return {\n        open,\n        tempType,\n        flowRef,\n        toggleTempModal(flow?) {\n            const map = { 10: \"flow\", 5: \"assistant\", 1: \"skill\" }\n            flowRef.current = flow || null\n            flow && setType(map[flow.flow_type])\n            setOpen(!open)\n        }\n    }\n}\n\nexport const useErrorPrompt = () => {\n    const search = location.search;\n    const params = new URLSearchParams(search);\n    const error = params.get('error');\n    const { toast } = useToast()\n    const { t } = useTranslation()\n\n    useEffect(() => {\n        if (error) {\n            toast({ description: t(`errors.${error}`), variant: 'error' });\n\n            // Clear the 'error' parameter from the URL\n            const newUrl = window.location.origin + window.location.pathname;\n            window.history.replaceState({}, '', newUrl);\n        }\n    }, [])\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/CardSelectVersion.tsx",
    "content": "import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { changeCurrentVersion } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst SelectComp = ({ value, onChange = (id) => { }, data, disabled = false }) => {\n\n    const handleChange = (id) => {\n        captureAndAlertRequestErrorHoc(changeCurrentVersion({ flow_id: data.id, version_id: Number(id) }))\n        onChange(id)\n    }\n\n    return <Select value={value} onValueChange={handleChange} disabled={disabled}>\n        <SelectTrigger className=\"w-[120px] h-6\">\n            <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n            {\n                data.version_list.length ?\n                    data.version_list.map(version => (\n                        <SelectItem value={version.id}>{version.name}</SelectItem>\n                    ))\n                    : <SelectItem value={'0'}>v0</SelectItem>\n            }\n        </SelectContent>\n    </Select>\n}\n\nexport default function CardSelectVersion(\n    { showPop, ...props }:\n        { showPop: boolean, data: any }\n) {\n    const [value, setValue] = useState(props.data.version_list.find(item => item.is_current === 1)?.id || '0')\n\n    const { t } = useTranslation()\n\n    if (showPop) return <TooltipProvider>\n        <Tooltip>\n            <TooltipTrigger>\n                <SelectComp {...props} value={value} onChange={setValue} />\n            </TooltipTrigger>\n            <TooltipContent>\n                <p className=\"text-[white]\">{t('skills.chooseOnline')}</p>\n            </TooltipContent>\n        </Tooltip>\n    </TooltipProvider>\n\n\n    return <SelectComp {...props} value={value} disabled={!showPop} />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/CreateTemp.tsx",
    "content": "\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/bs-ui/dialog';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { AppType } from '@/types/app';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../../../components/bs-ui/button';\nimport { Input, Textarea } from '../../../components/bs-ui/input';\nimport { createTempApi } from '../../../controllers/API';\nimport { captureAndAlertRequestErrorHoc } from '../../../controllers/request';\nimport { FlowType } from '../../../types/flow';\n\nexport default function CreateTemp({ flow, open, type, setOpen, onCreated }) {\n    const { t } = useTranslation();\n\n    const [data, setData] = useState({\n        name: '',\n        description: ''\n    });\n\n    useEffect(() => {\n        open && setData({\n            name: flow.name,\n            description: flow.description || ''\n        });\n    }, [open]);\n\n    const { message } = useToast();\n    const handleSubmit = () => {\n        const nameMap = {\n            [AppType.FLOW]: t('build.workFlow'),\n            [AppType.SKILL]: t('build.skillName'),\n            [AppType.ASSISTANT]: t('build.assistant')\n        };\n        const labelName = nameMap[type];\n        const errorlist = [];\n\n        const { name, description } = data;\n        if (!name) errorlist.push(t('build.pleaseFillIn', { labelName }));\n        if (name.length > 30) errorlist.push(t('build.nameTooLong', { labelName }));\n        if (!description && type === AppType.ASSISTANT) errorlist.push(t('build.addDescription', { labelName }));\n        if (description.length > 200) errorlist.push(t('build.descriptionTooLong', { labelName }));\n        if (errorlist.length) message({\n            variant: 'error',\n            description: errorlist\n        });\n\n        captureAndAlertRequestErrorHoc(\n            createTempApi({ ...data, flow_id: flow.id }, type)\n                .then((res) => {\n                    setOpen(false);\n                    message({\n                        variant: 'success',\n                        description: t('build.templateCreatedSuccessfully')\n                    });\n                    onCreated?.();\n                })\n        );\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={setOpen}>\n            <DialogContent className='sm:max-w-[625px]'>\n                <DialogHeader>\n                    <DialogTitle>{t('skills.createTemplate')}</DialogTitle>\n                </DialogHeader>\n                <div className='flex flex-col gap-4 py-2'>\n                    <div className=''>\n                        <label htmlFor='name' className='bisheng-label'>\n                            {type === AppType.SKILL ? t('skills.skillName') : type === AppType.ASSISTANT ? t('build.assistantName') : t('build.workFlowName')}\n                        </label>\n                        <Input\n                            name='name'\n                            className='mt-2'\n                            value={data.name}\n                            onChange={(e) => setData({ ...data, name: e.target.value })}\n                        />\n                    </div>\n                    <div className=''>\n                        <label htmlFor='roleAndTasks' className='bisheng-label'>\n                            {t('skills.description')}\n                        </label>\n                        <Textarea\n                            id='name'\n                            value={data.description}\n                            onChange={(e) => setData({ ...data, description: e.target.value })}\n                            className='col-span-2'\n                        />\n                    </div>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant='outline' className='px-11' type='button' onClick={() => setOpen(false)}>\n                            {t('build.cancel')}\n                        </Button>\n                    </DialogClose>\n                    <Button type='submit' className='px-11' onClick={handleSubmit}> {t('build.create')} </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/FormSet.tsx",
    "content": "import { Switch } from \"@/components/bs-ui/switch\";\nimport { getVariablesApi, saveReportFormApi } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ChevronUp, ChevronsUpDown, FolderUp, GripVertical } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from \"react-i18next\";\n\n/**\n * @component l2报表表单展示，可设置必填项及表单排序\n * @description\n * 表单项数据由组件的参数信息和单独接口获取的必填信息及排序信息而来。\n * 设置必填项及表单排序信息\n * change 保存信息到独立接口\n */\n\nexport default forwardRef(function FormSet({ id, vid }: any, ref) {\n    const { t } = useTranslation()\n\n    const showContent = (e) => {\n        const target = e.target.tagName === 'svg' ? e.target.parentNode : e.target\n        const contentDom = target.nextSibling\n        target.children[0].style.transform = contentDom.clientHeight ? 'rotate(180deg)' : 'rotate(0deg)'\n        contentDom.style.maxHeight = contentDom.clientHeight ? 0 : '999px'\n    }\n\n    // 从 api中获取\n    const [items, setItems] = useState([])\n    useEffect(() => {\n        getVariablesApi({ version_id: vid, flow_id: id }).then(\n            res => setItems(res)\n        )\n    }, [])\n\n    // sort\n    const handleDragEnd = ({ source, destination }: any) => {\n        if (!destination) {\n            return;\n        }\n\n        const updatedItems = Array.from(items);\n        const [removed] = updatedItems.splice(source.index, 1);\n        updatedItems.splice(destination.index, 0, removed);\n\n        handleSave(updatedItems)\n        setItems(updatedItems);\n    };\n\n    useImperativeHandle(ref, () => ({\n        save: () => {\n            saveFucRef.current()\n        }\n    }));\n    // save\n    const saveFucRef = useRef(() => { })\n    const handleSave = (items) => {\n        saveFucRef.current = () => {\n            captureAndAlertRequestErrorHoc(saveReportFormApi(vid, id, items))\n        }\n    }\n\n    return <div className=\"mt-8\">\n        <p className=\"text-center text-gray-400 mt-4 cursor-pointer flex justify-center\" onClick={showContent}>{t('report.formSettings')}<ChevronUp /></p>\n        <div className=\"overflow-hidden transition-all pl-8 px-1\">\n            <DragDropContext onDragEnd={handleDragEnd}>\n                <Droppable droppableId={'list'} direction=\"vertical\">\n                    {(provided) => (\n                        <ul\n                            {...provided.droppableProps}\n                            ref={provided.innerRef}\n                        >\n                            {items.map((item: any, index: number) => (\n                                <Draggable key={'drag' + item.id} draggableId={'drag' + item.id} index={index}>\n                                    {(provided) => (\n                                        <div className=\"mt-4\"\n                                            ref={provided.innerRef}\n                                            {...provided.draggableProps}>\n                                            <div className=\"flex justify-between\">\n                                                <div className=\"flex gap-2 relative items-center\">\n                                                    <button {...provided.dragHandleProps} className=\"absolute left-[-26px]\">\n                                                        <GripVertical size={20} color=\"#999\"></GripVertical>\n                                                    </button>\n                                                    <label className=\"font-medium text-sm max-w-[200px] truncate\">{item.name}</label>\n                                                    <p className=\"text-gray-500 text-sm\">{item.nodeId}</p>\n                                                </div>\n                                                <div className=\"flex items-center gap-2\">\n                                                    <label className=\"text-xs\">{t('report.requiredLabel')}</label>\n                                                    <Switch checked={item.type === 'file' || item.required} onCheckedChange={e => {\n                                                        item.type !== 'file' && setItems(old => {\n                                                            const _items = old.map(el => {\n                                                                return el.id === item.id ? { ...el, required: e } : el\n                                                            })\n                                                            handleSave(_items)\n                                                            return _items\n                                                        })\n                                                    }}></Switch>\n                                                </div>\n                                            </div>\n                                            <div className=\"mt-2\">\n                                                {item.type === 'text' && <div className=\"cursor-pointer h-10 border rounded-sm\"></div>}\n                                                {item.type === 'select' && <div className=\"cursor-pointer h-10 border rounded-sm flex items-center justify-end px-2\">\n                                                    <ChevronsUpDown className=\"dropdown-component-arrow-color\" />\n                                                </div>}\n                                                {item.type === 'file' && <div className=\"cursor-pointer flex h-16 justify-center items-center border rounded-sm\">\n                                                    <FolderUp />\n                                                </div>}\n                                            </div>\n                                        </div>\n                                    )}\n                                </Draggable>\n                            ))}\n                            {provided.placeholder}\n                        </ul>\n                    )}\n                </Droppable>\n            </DragDropContext>\n        </div>\n    </div>\n});\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/CollectionNameComponent/index.tsx",
    "content": "import KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport { TextAreaComponentType } from \"@/types/components\";\nimport { useMemo } from \"react\";\n\nexport default function CollectionNameComponent({\n    id,\n    value,\n    onChange,\n    onSelect,\n    disabled,\n}: TextAreaComponentType & { onSelect: (name: string, collectionId: any) => void }) {\n\n    const handleChange = ([obj]) => {\n        onSelect(obj.label, obj.value);\n    }\n\n    const values = useMemo(() => [{ label: value, value: id }], [id, value])\n\n    return <KnowledgeSelect\n        disabled={disabled}\n        value={values}\n        onChange={handleChange}\n    />\n    //     <div className={disabled ? \"pointer-events-none w-full \" : \" w-full\"}>\n    //         <div className=\"flex w-full items-center\" onClick={() => {\n    //             openPopUp(\n    //                 <dialog className={`modal bg-blur-shared modal-open`}>\n    //                     <form method=\"dialog\" className=\"max-w-[400px] flex flex-col modal-box bg-[#fff] shadow-lg dark:bg-background\" onClick={e => e.stopPropagation()}>\n    //                         <button className=\"btn btn-sm btn-circle btn-ghost absolute right-2 top-2\" onClick={closePopUp}>✕</button>\n    //                         <SelectCollection collectionId={id} onChange={handleChange}></SelectCollection>\n    //                     </form>\n    //                 </dialog>\n    //             )\n    //         }}>\n    //             <span className={(disabled ? \" input-disable input-ring \" : \"\") + \" input-primary text-muted-foreground \"} >\n    //                 {myValue !== \"\" ? myValue : \"Please enter...\"}\n    //             </span>\n    //             <button>\n    //                 <HardDrive strokeWidth={1.5} className={\"icons-parameters-comp\" + (disabled ? \" text-ring\" : \" hover:text-accent-foreground\")} />\n    //             </button>\n    //         </div>\n    //     </div>\n    // );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/CollectionNameComponent/selectCollection.tsx",
    "content": "import { Input } from \"@/components/bs-ui/input\";\nimport { readFileLibDatabase } from \"@/controllers/API\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function SelectCollection({ collectionId, onChange }:\n    { collectionId: number | '', onChange: (obj: any) => void }) {\n    const { t } = useTranslation()\n\n    const [datalist, setDataList] = useState([])\n    const inputRef = useRef(null)\n    const allData = useRef([])\n\n    // Selected element at the top\n    const libList = useMemo(() => {\n        if (!datalist.length) return []\n        const current = datalist.find(el => el.id === collectionId)\n        if (!current) return datalist\n        const cloneList = datalist.filter(el => el.id !== collectionId)\n        return [current, ...cloneList]\n    }, [datalist, collectionId])\n\n    // 取800条 TODO 滚动分页 \n    useEffect(() => {\n        readFileLibDatabase(1, 800).then(res => {\n            setDataList(res.data)\n            allData.current = res.data\n        })\n    }, [])\n\n    // 检索（暂无分页，本地search）\n    const timerRef = useRef(null)\n    const handleInputChange = (e) => {\n        clearTimeout(timerRef.current)\n        timerRef.current = setTimeout(() => {\n            const value = e.target.value\n            setDataList(allData.current.filter(item => item.name.indexOf(value) !== -1))\n        }, 500);\n    }\n\n    return <div>\n        <p className=\"my-4 font-bold\">{t('flow.knowledgeBaseSelection')}</p>\n        <Input placeholder={t('flow.searchKnowledgeBase')} ref={inputRef} onChange={handleInputChange} />\n        <div className=\"mt-4 h-[280px] overflow-y-auto no-scrollbar\">\n            {libList.map(item =>\n                <div\n                    key={item.id}\n                    className={`hover:bg-gray-100 cursor-pointer px-4 py-2 rounded-md ${item.id === collectionId && 'bg-gray-100'}`}\n                    onClick={() => onChange(item)}\n                >\n                    <p className=\"text-sm\">{item.name}</p>\n                    <p className=\"text-xs text-gray-500\">{item.collection_name}</p>\n                </div>\n            )}\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/ConnectionLineComponent/index.tsx",
    "content": "import { ConnectionLineComponentProps } from \"@xyflow/react\";\n\nconst ConnectionLineComponent = ({\n  fromX,\n  fromY,\n  toX,\n  toY,\n  connectionLineStyle = {}, // provide a default value for connectionLineStyle\n}: ConnectionLineComponentProps) => {\n  return (\n    <g>\n      <path\n        fill=\"none\"\n        // ! Replace hash # colors here\n        strokeWidth={1.5}\n        className=\"animated stroke-connection \"\n        d={`M${fromX},${fromY} C ${fromX} ${toY} ${fromX} ${toY} ${toX},${toY}`}\n        style={connectionLineStyle}\n      />\n      <circle\n        cx={toX}\n        cy={toY}\n        fill=\"#fff\"\n        r={3}\n        stroke=\"#222\"\n        className=\"\"\n        strokeWidth={1.5}\n      />\n    </g>\n  );\n};\n\nexport default ConnectionLineComponent;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/DisclosureComponent/index.tsx",
    "content": "import { DisclosureComponentType } from \"@/types/components\";\nimport { Disclosure } from \"@headlessui/react\";\nimport { ChevronRight } from \"lucide-react\";\n\nexport default function DisclosureComponent({\n  button: { title, Icon, buttons = [], color },\n  children,\n  openDisc,\n}: DisclosureComponentType & any) {\n  return (\n    <Disclosure as=\"div\" key={title}>\n      {({ open }) => (\n        <>\n          <div className=\"min-w-[108px]\">\n            <Disclosure.Button className=\"components-disclosure-arrangement\">\n              <div className=\"flex gap-2 text-[#111] dark:text-gray-50\">\n                <Icon strokeWidth={1.5} size={20} />\n                <span className=\"components-disclosure-title\">{title}</span>\n              </div>\n              <div className=\"components-disclosure-div\">\n                {buttons.map((x, index) => (\n                  <button key={index} onClick={x.onClick}> {x.Icon} </button>\n                ))}\n                <div>\n                  <ChevronRight className={`h-4 w-4 text-foreground`} />\n                </div>\n              </div>\n            </Disclosure.Button>\n          </div>\n          <Disclosure.Panel as=\"div\" static={openDisc}>\n            {children}\n          </Disclosure.Panel>\n        </>\n      )}\n    </Disclosure>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/Header.tsx",
    "content": "import AlertDropdown from \"@/alerts/alertDropDown\";\nimport TipPng from \"@/assets/tip.jpg\";\nimport { DelIcon } from \"@/components/bs-icons/del\";\nimport { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { SaveIcon } from \"@/components/bs-icons/save\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport ActionButton from \"@/components/bs-ui/button/actionButton\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport TextInput from \"@/components/bs-ui/input/textInput\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { alertContext } from \"@/contexts/alertContext\";\nimport { PopUpContext } from \"@/contexts/popUpContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { typesContext } from \"@/contexts/typesContext\";\nimport { undoRedoContext } from \"@/contexts/undoRedoContext\";\nimport { createFlowVersion, deleteVersion, getFlowVersions, getVersionDetails, updateVersion } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport L2ParamsModal from \"@/modals/L2ParamsModal\";\nimport ExportModal from \"@/modals/exportModal\";\nimport { FlowVersionItem } from \"@/types/flow\";\nimport { t } from \"i18next\";\nimport { isEqual } from \"lodash-es\";\nimport { ArrowDown, ArrowUp, Bell, Layers, Layers2, LogOut } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { unstable_useBlocker as useBlocker, useNavigate } from \"react-router-dom\";\n\nexport default function Header({ flow, preFlow, onTabChange }) {\n    const navgate = useNavigate()\n    const { t } = useTranslation()\n    const { message } = useToast()\n    const [open, setOpen] = useState(false)\n    const AlertWidth = 384;\n    const { notificationCenter, setNotificationCenter } = useContext(alertContext);\n    const { uploadFlow, setFlow, tabsState, saveFlow } = useContext(TabsContext);\n    const { reactFlowInstance } = useContext(typesContext);\n\n    const isPending = tabsState[flow.id]?.isPending;\n    const { openPopUp } = useContext(PopUpContext);\n    // 记录快照\n    const { takeSnapshot } = useContext(undoRedoContext);\n\n    const handleSaveNewVersion = async () => {\n        // 累加版本 vx ++\n        const maxNo = lastVersionIndexRef.current + 1\n        // versions.forEach(v => {\n        //     const match = v.name.match(/[vV](\\d+)/)\n        //     maxNo = match ? Math.max(Number(match[1]), maxNo) : maxNo\n        // })\n        // maxNo++\n        // save\n        const res = await captureAndAlertRequestErrorHoc(\n            createFlowVersion(flow.id, { name: `v${maxNo}`, description: '', data: flow.data, original_version_id: version.id })\n        )\n        message({\n            variant: \"success\",\n            title: `${t('skills.version')} v${maxNo} ${t('skills.saveSuccessful')}`,\n            description: \"\"\n        })\n        // 更新版本列表\n        await refrenshVersions()\n        // 切换到最新版本\n\n        setVersionId(res.id)\n    }\n    // \n    const [saveVersionId, setVersionId] = useState('')\n    useEffect(() => {\n        saveVersionId && handleChangeVersion(saveVersionId)\n    }, [saveVersionId])\n\n    // 版本管理\n    const [loading, setLoading] = useState(false)\n    const { versions, version, isOnlineVersion, lastVersionIndexRef, changeName, deleteVersion, refrenshVersions, setCurrentVersion } = useVersion(flow)\n    // 切换版本\n    const handleChangeVersion = async (versionId) => {\n        setLoading(true)\n        reactFlowInstance.setNodes([]) // 便于重新渲染节点\n        // 保存当前版本\n        // updateVersion(version.id, { name: version.name, description: '', data: flow.data })\n        // 切换版本UI\n        setCurrentVersion(Number(versionId))\n        // 加载选中版本data\n        const res = await getVersionDetails(versionId)\n        // 自动触发 page的 clone flow\n        setFlow('versionChange', { ...flow, data: res.data })\n        message({\n            variant: \"success\",\n            title: `${t('skills.switchTo')} ${res.name}`,\n            description: \"\"\n        })\n        setLoading(false)\n    }\n    // 保存版本\n    const handleSaveVersion = async () => {\n        // 保存当前版本\n        captureAndAlertRequestErrorHoc(updateVersion(version.id, { name: version.name, description: '', data: flow.data }).then(_ => {\n            setFlow('versionChange', { ...flow }) // 更新clone flow，避免触发diff不同\n\n            _ && message({\n                variant: \"success\",\n                title: t('saved'),\n                description: \"\"\n            })\n        }))\n    }\n\n    const blocker = useBeforeUnload(flow, preFlow)\n    // 离开并保存\n    const handleSaveAndClose = async () => {\n        setFlow('leave and save', { ...flow })\n        if (isOnlineVersion) {\n            handleSaveNewVersion()\n            blocker.reset?.()\n        } else {\n            await captureAndAlertRequestErrorHoc(updateVersion(version.id, { name: version.name, description: '', data: flow.data }))\n            blocker.proceed?.()\n        }\n    }\n\n    const [tabType, setTabType] = useState('edit')\n    return <div className=\"flex justify-between items-center border-b px-4\">\n        {\n            loading && <div className=\" fixed left-0 top-0 w-full h-screen bg-background/60 z-50 flex items-center justify-center\">\n                <LoadIcon className=\"mr-2 text-gray-600\" />\n                <span>{t('skills.switchTo')} {version.name}</span>\n            </div>\n        }\n        <div className=\"flex items-center gap-2 py-4\">\n            <Button\n                variant=\"outline\"\n                size=\"icon\"\n                onClick={() => navgate('/build/apps', { replace: true })}\n            ><LogOut className=\"h-4 w-4 rotate-180\" /></Button>\n            <Button variant=\"outline\" onClick={() => { takeSnapshot(); uploadFlow() }} >\n                <ArrowUp className=\"h-4 w-4 mr-1\" />{t('skills.import')}\n            </Button>\n            <Button variant=\"outline\" onClick={() => { openPopUp(<ExportModal />) }}>\n                <ArrowDown className=\"h-4 w-4 mr-1\" />{t('skills.export')}\n            </Button>\n            {/* <Button variant=\"outline\" onClick={() => { openPopUp(<ApiModal flow={flow} />) }} >\n                <CodeXml className=\"h-4 w-4 mr-1\" />{t('skills.code')}\n            </Button> */}\n            <Button variant=\"outline\" onClick={() => setOpen(true)} >\n                <Layers2 className=\"h-4 w-4 mr-1\" />{t('skills.simplify')}\n            </Button>\n        </div>\n        {/* api */}\n        <div className=\"flex gap-4 items-center\">\n            <div\n                className={`${tabType === 'edit' ? 'text-primary' : ''} hover:bg-border px-4 py-1 rounded-md cursor-pointer`}\n                onClick={() => { setTabType('edit'); onTabChange('edit') }}\n            >{t('api.skillOrchestration')}</div>\n            <div\n                className={`${tabType === 'api' ? 'text-primary' : ''} hover:bg-border px-4 py-1 rounded-md cursor-pointer`}\n                onClick={() => { setTabType('api'); onTabChange('api') }}\n            >{t('api.externalPublishing')}\n            </div>\n        </div>\n        {\n            version && <div className=\"flex gap-4\">\n                <Button className=\"px-6 flex gap-2\" type=\"button\" onClick={handleSaveVersion}\n                    disabled={!isPending}><SaveIcon />{t('skills.save')}</Button>\n                <ActionButton\n                    className=\"px-6 flex gap-2\"\n                    align=\"end\"\n                    variant=\"outline\"\n                    onClick={handleSaveNewVersion}\n                    delayDuration={200}\n                    buttonTipContent={(\n                        <div>\n                            <img src={TipPng} alt=\"\" className=\"w-80\" />\n                            <p className=\"mt-4 text-sm\">{t('skills.supportVersions')}</p>\n                        </div>\n                    )}\n                    dropDown={(\n                        <div className=\" overflow-y-auto max-h-96 max-h\">\n                            <RadioGroup value={version.id + ''} onValueChange={(vid) => {\n                                updateVersion(version.id, { name: version.name, description: '', data: flow.data })\n                                handleChangeVersion(vid)\n                            }} className=\"gap-0\">\n                                {versions.map((vers, index) => (\n                                    <div key={vers.id} className=\"group flex items-center gap-4 px-4 py-2 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-700 border-b\">\n                                        <RadioGroupItem value={vers.id + ''} />\n                                        <div className=\"w-[198px]\">\n                                            <TextInput\n                                                className=\"h-[30px]\"\n                                                type=\"hover\"\n                                                value={vers.name}\n                                                maxLength={30}\n                                                onSave={val => changeName(vers.id, val)}\n                                            ></TextInput>\n                                            <p className=\"text-sm text-muted-foreground mt-2\">{vers.update_time.replace('T', ' ').substring(0, 16)}</p>\n                                        </div>\n                                        {\n                                            // 最后一个 V0 版本和当前选中版本不允许删除\n                                            !(version.id === vers.id)\n                                            && <Button\n                                                className=\"group-hover:flex hidden\"\n                                                type=\"button\"\n                                                size=\"icon\"\n                                                variant=\"outline\"\n                                                onClick={() => deleteVersion(vers, index)}\n                                            ><DelIcon /></Button>\n                                        }\n\n                                    </div>\n                                ))}\n                            </RadioGroup>\n                        </div>\n                    )}\n                ><Layers className=\"size-4\" />{t('skills.saveVersion')}</ActionButton>\n                <Button variant=\"outline\" className=\"relative\"\n                    onClick={(event: React.MouseEvent<HTMLElement>) => {\n                        setNotificationCenter(false);\n                        const { top, left } = (event.target as Element).getBoundingClientRect();\n                        openPopUp(\n                            <>\n                                <div className=\"absolute z-10\" style={{ top: top + 40, left: left - AlertWidth }} ><AlertDropdown /></div>\n                                <div className=\"header-notifications-box\"></div>\n                            </>\n                        );\n                    }}\n                >\n                    <Bell className=\"h-4 w-4\" />\n                    {notificationCenter && <div className=\"header-notifications\"></div>}\n                </Button>\n            </div>\n        }\n\n        {/* 高级配置l2配置 */}\n        <L2ParamsModal data={flow} open={open} setOpen={setOpen} onSave={handleSaveVersion}></L2ParamsModal>\n\n        <Dialog open={blocker.state === \"blocked\"}>\n            <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                <DialogHeader>\n                    <DialogTitle>{t('prompt')}</DialogTitle>\n                    <DialogDescription>{isOnlineVersion ? '当前版本已上线不可修改，可另存为新版本保存修改内容' : '您有未保存的更改,确定要离开吗?'}</DialogDescription>\n                </DialogHeader>\n                <DialogFooter>\n                    <Button className=\"leave h-8\" onClick={handleSaveAndClose}>\n                        {isOnlineVersion ? '另存为新版本' : t('flow.leaveAndSave')}\n                    </Button>\n                    <Button className=\"h-8\" variant=\"destructive\" onClick={() => blocker.proceed?.()}>\n                        不保存,直接退出\n                    </Button>\n                    <Button className=\"h-8\" variant=\"outline\" onClick={() => {\n                        const dom = document.getElementById(\"flow-page\") as HTMLElement;\n                        blocker.reset?.()\n                        if (dom) dom.className = dom.className.replace('report-hidden', '');\n                    }}>\n                        {t('cancel')}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    </div>\n};\n\n// 技能版本管理\nconst useVersion = (flow) => {\n    const [versions, setVersions] = useState<FlowVersionItem[]>([])\n    const { version, setVersion } = useContext(TabsContext)\n    const lastVersionIndexRef = useRef(0)\n    const { toast } = useToast()\n    const [onlineVid, setOnlineVid] = useState(0);\n    const updateOnlineVid = (vid: number) => {\n        setOnlineVid(flow.status === 2 ? vid : 0);\n    }\n    const refrenshVersions = () => {\n        return getFlowVersions(flow.id).then(({ data, total }) => {\n            setVersions(data)\n            lastVersionIndexRef.current = total - 1\n            const currentV = data.find(el => el.is_current === 1)\n            if (!currentV) {\n                toast({\n                    description: '无法对应当前版本',\n                    variant: 'error'\n                })\n            }\n            setVersion(currentV)\n            // 记录上线的版本\n            updateOnlineVid(currentV?.id)\n        })\n    }\n\n    useEffect(() => {\n        refrenshVersions()\n    }, [])\n\n    // 修改名字\n    const handleChangName = (id, name) => {\n        captureAndAlertRequestErrorHoc(updateVersion(id, { name, description: '', data: null }))\n        // 乐观更新\n        setVersions(versions.map(version => {\n            if (version.id === id) {\n                version.name = name;\n            }\n            return version;\n        }))\n    }\n\n    const handleDeleteVersion = (version, index) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: `${t('skills.deleteOrNot')} ${version.name} ${t('skills.version')}?`,\n            onOk: (next) => {\n                captureAndAlertRequestErrorHoc(deleteVersion(version.id)).then(res => {\n                    if (res === null) {\n                        // 乐观更新\n                        setVersions(versions.filter((_, i) => i !== index))\n                    }\n                })\n                next()\n            }\n        })\n    }\n\n    return {\n        versions,\n        version,\n        lastVersionIndexRef,\n        isOnlineVersion: version?.id === onlineVid,\n        setCurrentVersion(versionId) {\n            const currentV = versions.find(el => el.id === versionId)\n            setVersion(currentV)\n            return currentV\n        },\n        refrenshVersions,\n        deleteVersion: handleDeleteVersion,\n        changeName: handleChangName,\n    }\n}\n\n\n// 离开页面保存提示\nconst useBeforeUnload = (flow, preFlow) => {\n    const { t } = useTranslation()\n\n    // 离开提示保存\n    useEffect(() => {\n        const fun = (e) => {\n            var confirmationMessage = `${t('flow.unsavedChangesConfirmation')}`;\n            (e || window.event).returnValue = confirmationMessage; // Compatible with different browsers\n            return confirmationMessage;\n        }\n        window.addEventListener('beforeunload', fun);\n        return () => { window.removeEventListener('beforeunload', fun) }\n    }, [])\n\n    const hasChange = useMemo(() => {\n        if (!flow.data) return false\n        const oldFlowData = JSON.parse(preFlow)\n        if (!oldFlowData) return true\n        // 比较新旧\n        const { edges, nodes } = flow.data\n        const { edges: oldEdges, nodes: oldNodes } = oldFlowData\n        return !(isEqual(edges, oldEdges) && isEqual(nodes, oldNodes))\n    }, [preFlow, flow.data])\n\n    return useBlocker(hasChange);\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/PageComponent/index.tsx",
    "content": "import GenericNode from \"@/CustomNodes/GenericNode\";\nimport ApiMainPage from \"@/components/bs-comp/apiComponent\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport Chat from \"@/components/chatComponent\";\nimport { alertContext } from \"@/contexts/alertContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { typesContext } from \"@/contexts/typesContext\";\nimport { undoRedoContext } from \"@/contexts/undoRedoContext\";\nimport { APIClassType } from \"@/types/api\";\nimport { FlowType, NodeType } from \"@/types/flow\";\nimport { generateFlow, generateNodeFromFlow, reconnectEdges, validateSelection } from \"@/util/reactflowUtils\";\nimport { intersectArrays } from \"@/util/utils\";\nimport { isValidConnection } from \"@/utils\";\nimport {\n  Background,\n  BackgroundVariant,\n  Connection,\n  Controls,\n  Edge,\n  EdgeChange,\n  NodeChange,\n  OnEdgesDelete,\n  OnSelectionChangeParams,\n  ReactFlow,\n  SelectionDragHandler,\n  addEdge,\n  reconnectEdge,\n  useEdgesState,\n  useNodesState,\n  useReactFlow,\n} from \"@xyflow/react\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { Layers } from \"lucide-react\";\nimport { useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ConnectionLineComponent from \"../ConnectionLineComponent\";\nimport Header from \"../Header\";\nimport SelectionMenu from \"../SelectionMenuComponent\";\nimport ExtraSidebar from \"../extraSidebarComponent\";\n\n\nconst nodeTypes = { genericNode: GenericNode };\nexport default function Page({ flow, preFlow }: { flow: FlowType, preFlow: string }) {\n\n  let {\n    version,\n    setFlow,\n    setTabsState,\n    saveFlow,\n    uploadFlow,\n    getNodeId,\n  } = useContext(TabsContext);\n  const { setErrorData } = useContext(alertContext);\n\n\n  const reactFlowWrapper = useRef(null);\n  const { data, types, reactFlowInstance, setReactFlowInstance, templates } = useContext(typesContext);\n  useEffect(() => {\n    return () => {\n      setReactFlowInstance(null) // 销毁reactflow实例\n    }\n  }, [])\n\n  // 记录快照\n  const { takeSnapshot } = useContext(undoRedoContext);\n  // 快捷键\n  const { keyBoardPanneRef, lastSelection, setLastSelection } = useKeyBoard(reactFlowWrapper)\n  const onSelectionChange = useCallback((flow) => {\n    setLastSelection(flow);\n  }, []);\n\n  const [selectionMenuVisible, setSelectionMenuVisible] = useState(false);\n  const [selectionEnded, setSelectionEnded] = useState(true);\n\n  // Workaround to show the menu only after the selection has ended.\n  useEffect(() => {\n    if (selectionEnded && lastSelection && lastSelection.nodes.length > 1) {\n      setSelectionMenuVisible(true);\n    } else {\n      setSelectionMenuVisible(false);\n    }\n  }, [selectionEnded, lastSelection]);\n\n  const [nodes, setNodes, onNodesChange] = useNodesState(\n    flow.data?.nodes ?? []\n  );\n  const [edges, setEdges, onEdgesChange] = useEdgesState(\n    flow.data?.edges ?? []\n  );\n  const { setViewport } = useReactFlow();\n  useEffect(() => {\n    if (reactFlowInstance && flow) {\n      // 节点变化update flow(唯一修改口)\n      flow.data = reactFlowInstance.toObject();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    /**\n     * 由于flow模块设计问题，临时通过把flow挂在到window上，来提供 reactflow 节点 做重复id校验使用\n     */\n    window._flow = flow;\n  }, [nodes, edges]);\n  //update flow when tabs change\n  useEffect(() => {\n    setNodes(flow?.data?.nodes ?? []);\n    setEdges(flow?.data?.edges ?? []);\n    if (reactFlowInstance) {\n      setViewport(flow?.data?.viewport ?? { x: 1, y: 0, zoom: 0.5 });\n      reactFlowInstance.fitView();\n    }\n  }, [flow, reactFlowInstance, setEdges, setNodes, setViewport]);\n\n  const onEdgesChangeMod = useCallback(\n    (s: EdgeChange[]) => {\n      onEdgesChange(s);\n      setNodes((x) => {\n        let newX = cloneDeep(x);\n        return newX;\n      });\n      setTabsState((prev) => {\n        return {\n          ...prev,\n          [flow.id]: {\n            ...prev[flow.id],\n            isPending: true,\n          },\n        };\n      });\n    },\n    [onEdgesChange, setNodes, setTabsState, flow.id]\n  );\n\n  const onNodesChangeMod = useCallback(\n    (s: NodeChange[]) => {\n      onNodesChange(s);\n      setTabsState((prev) => {\n        return {\n          ...prev,\n          [flow.id]: {\n            ...prev[flow.id],\n            isPending: true,\n          },\n        };\n      });\n    },\n    [onNodesChange, setTabsState, flow.id]\n  );\n\n  const onConnect = useCallback(\n    (params: Connection) => {\n      takeSnapshot();\n      setEdges((eds) => {\n        return addEdge(\n          {\n            ...params,\n            style: { stroke: \"#555\" },\n            className:\n              (params.targetHandle.split(\"|\")[0] === \"Text\"\n                ? \"stroke-foreground \"\n                : \"stroke-foreground \") + \" stroke-connection\",\n            // type: 'smoothstep',\n            animated: true // params.targetHandle.split(\"|\")[0] === \"Text\",\n          },\n          eds\n        )\n      });\n\n      setNodes((x) => {\n        let newX = cloneDeep(x);\n        // inputFileNode类型跟随下游组件决定上传文件类型\n        const inputNodeId = params.source\n        if (inputNodeId.split('-')[0] === 'InputFileNode') {\n          const inputNode = newX.find(el => el.id === params.source);\n          const nextEdgs = [...edges, params].filter(el => el.source === params.source);\n          const targetNodes = newX.filter(el => nextEdgs.find(edg => edg.target === el.id));\n          // 取下游节点交集\n          let result = intersectArrays(...targetNodes.map(el => el.data.node.template.file_path.fileTypes))\n          result = result.length ? result : ['xxx'] // 无效后缀\n          inputNode.data.node.template.file_path.fileTypes = result\n          inputNode.data.node.template.file_path.suffixes = result.map(el => `.${el}`) // 上传文件类型；\n        }\n        return newX;\n      });\n    },\n    [setEdges, setNodes, takeSnapshot]\n  );\n\n  const onNodeDragStart = useCallback(() => {\n    // 👇 make dragging a node undoable\n    takeSnapshot();\n    // 👉 you can place your event handlers here\n  }, [takeSnapshot]);\n\n  const onSelectionDragStart: SelectionDragHandler = useCallback(() => {\n    // 👇 make dragging a selection undoable\n    takeSnapshot();\n  }, [takeSnapshot]);\n\n  const onEdgesDelete: OnEdgesDelete = useCallback(() => {\n    // 👇 make deleting edges undoable\n    takeSnapshot();\n  }, [takeSnapshot]);\n\n  const onDragOver = useCallback((event: React.DragEvent) => {\n    event.preventDefault();\n    if (event.dataTransfer.types.some((t) => t === \"nodedata\")) {\n      event.dataTransfer.dropEffect = \"move\";\n    } else {\n      event.dataTransfer.dropEffect = \"copy\";\n    }\n  }, []);\n\n  const onDrop = useCallback(\n    (event: React.DragEvent) => {\n      event.preventDefault();\n      if (event.dataTransfer.types.some((t) => t === \"nodedata\")) {\n        takeSnapshot();\n\n        // Get the current bounds of the ReactFlow wrapper element\n        const reactflowBounds = reactFlowWrapper.current.getBoundingClientRect();\n\n        // Extract the data from the drag event and parse it as a JSON object\n        let data: { type: string; node?: APIClassType } = JSON.parse(\n          event.dataTransfer.getData(\"nodedata\")\n        );\n\n        // If data type is not \"chatInput\" or if there are no \"chatInputNode\" nodes present in the ReactFlow instance, create a new node\n        // Calculate the position where the node should be created\n        const position = reactFlowInstance.screenToFlowPosition({\n          x: event.clientX - reactflowBounds.left,\n          y: event.clientY - reactflowBounds.top,\n        });\n\n        // Generate a unique node ID\n        let { type } = data;\n        let newId = getNodeId(type);\n        let newNode: NodeType;\n\n        if (data.type !== \"groupNode\") {\n          // Create a new node object\n          newNode = {\n            id: newId,\n            type: \"genericNode\",\n            position,\n            data: { ...data, id: newId, value: null }\n          };\n        } else {\n          // Create a new node object\n          newNode = {\n            id: newId,\n            type: \"genericNode\",\n            position,\n            data: { ...data, id: newId, value: null }\n          };\n          // Add the new node to the list of nodes in state\n        }\n        setNodes((nds) => nds.concat(newNode));\n      } else if (event.dataTransfer.types.some((t) => t === \"Files\")) {\n        // 拖拽上传技能\n        takeSnapshot();\n        uploadFlow(event.dataTransfer.files.item(0));\n      }\n    },\n    // Specify dependencies for useCallback\n    [getNodeId, reactFlowInstance, setNodes, takeSnapshot]\n  );\n\n  const onDelete = useCallback(\n    (mynodes) => {\n      takeSnapshot();\n      setEdges(\n        edges.filter(\n          (ns) => !mynodes.some((n) => ns.source === n.id || ns.target === n.id)\n        )\n      );\n    },\n    [takeSnapshot, edges, setEdges]\n  );\n\n  const edgeUpdateSuccessful = useRef(true);\n  const onEdgeUpdateStart = useCallback(() => {\n    edgeUpdateSuccessful.current = false;\n  }, []);\n\n  const onEdgeUpdate = useCallback(\n    (oldEdge: Edge, newConnection: Connection) => {\n      if (isValidConnection(newConnection, reactFlowInstance)) {\n        edgeUpdateSuccessful.current = true;\n        setEdges((els) => reconnectEdge(oldEdge, newConnection, els));\n      }\n    },\n    [reactFlowInstance, setEdges]\n  );\n\n  const onEdgeUpdateEnd = useCallback((_, edge) => {\n    if (!edgeUpdateSuccessful.current) {\n      setEdges((eds) => eds.filter((e) => e.id !== edge.id));\n    }\n\n    edgeUpdateSuccessful.current = true;\n  }, []);\n\n  const { t } = useTranslation()\n\n  // 修改组件id\n  useEffect(() => {\n    const handleChangeId = (data) => {\n      const detail = data.detail\n      const node = flow.data.nodes.find((node) => node.data.id === detail[1])\n      node.id = detail[0]\n      node.data.id = detail[0]\n      // 更新线上 id 信息\n      flow.data.edges.forEach(edge => {\n        ['id', 'source', 'sourceHandle', 'target', 'targetHandle'].forEach(prop => {\n          if (edge[prop]) {\n            edge[prop] = edge[prop].replaceAll(detail[1], detail[0]);\n          }\n        });\n      });\n      // TODO 修改 setNodes 来更新\n      setFlow('changeid', { ...flow })\n    }\n    document.addEventListener('idChange', handleChangeId)\n    return () => document.removeEventListener('idChange', handleChangeId)\n  }, [flow.data]); // 修改 id后, 需要监听 data这一层\n\n  const [showApiPage, setShowApiPage] = useState(false)\n  return (\n    <div id=\"flow-page\" className=\"flex flex-col h-full overflow-hidden\">\n      <Header flow={flow} preFlow={preFlow} onTabChange={(t) => setShowApiPage(t === 'api')}></Header>\n      <div className={`flex flex-1 min-h-0 overflow-hidden ${showApiPage ? 'hidden' : ''}`}>\n        {Object.keys(data).length ? <ExtraSidebar flow={flow} /> : <></>}\n        {/* Main area */}\n        <main className=\"flex flex-1\" ref={keyBoardPanneRef}>\n          {/* Primary column */}\n          <div className=\"h-full w-full\">\n            <div className=\"h-full w-full\" ref={reactFlowWrapper}>\n              {Object.keys(templates).length > 0 && Object.keys(types).length > 0 ? (\n                <div className=\"h-full w-full\">\n                  <ReactFlow\n                    nodes={nodes}\n                    edges={edges}\n                    onMove={() => {\n                      if (reactFlowInstance)\n                        // 无用 待删\n                        flow = { ...flow, data: reactFlowInstance.toObject() }\n                    }}\n                    onNodesChange={onNodesChangeMod}\n                    onEdgesChange={onEdgesChangeMod}\n                    onConnect={onConnect}\n                    disableKeyboardA11y={true}\n                    onInit={setReactFlowInstance}\n                    nodeTypes={nodeTypes}\n                    onReconnect={onEdgeUpdate}\n                    onReconnectStart={onEdgeUpdateStart}\n                    onReconnectEnd={onEdgeUpdateEnd}\n                    onNodeDragStart={onNodeDragStart}\n                    onSelectionDragStart={onSelectionDragStart}\n                    onSelectionStart={(e) => { e.preventDefault(); setSelectionEnded(false) }}\n                    onSelectionEnd={() => setSelectionEnded(true)}\n                    onEdgesDelete={onEdgesDelete}\n                    connectionLineComponent={ConnectionLineComponent}\n                    onDragOver={onDragOver}\n                    onDrop={onDrop}\n                    onNodesDelete={onDelete}\n                    onSelectionChange={onSelectionChange}\n                    className=\"theme-attribution\"\n                    minZoom={0.01}\n                    maxZoom={8}\n                    fitView\n                  >\n                    <Background className=\"bg-gray-100 dark:bg-gray-950\" color='#999' variant={BackgroundVariant.Dots} />\n                    <Controls showInteractive={false}\n                      className=\"bg-muted fill-foreground stroke-foreground text-primary\n                   [&>button]:border-b-border hover:[&>button]:bg-border\"\n                    ></Controls>\n                    <SelectionMenu\n                      isVisible={selectionMenuVisible}\n                      nodes={lastSelection?.nodes}\n                      onClick={() => {\n                        takeSnapshot();\n                        const valiDateRes = validateSelection(lastSelection!, edges)\n                        if (valiDateRes.length === 0) {\n                          // groupFlow\n                          const { newFlow, removedEdges } = generateFlow(\n                            lastSelection!,\n                            nodes,\n                            edges,\n                            ''\n                          );\n                          // newGroupNode（inset groupFlow）\n                          const newGroupNode = generateNodeFromFlow(\n                            newFlow,\n                            getNodeId\n                          );\n                          // group之外的线\n                          const newEdges = reconnectEdges(\n                            newGroupNode,\n                            removedEdges\n                          );\n                          // 更新节点，过滤重复 node\n                          setNodes((oldNodes) => [\n                            ...oldNodes.filter(\n                              (oldNodes) =>\n                                !lastSelection?.nodes.some(\n                                  (selectionNode) =>\n                                    selectionNode.id === oldNodes.id\n                                )\n                            ),\n                            newGroupNode,\n                          ]);\n                          setEdges((oldEdges) => [\n                            ...oldEdges.filter(\n                              (oldEdge) =>\n                                !lastSelection!.nodes.some(\n                                  (selectionNode) =>\n                                    selectionNode.id === oldEdge.target ||\n                                    selectionNode.id === oldEdge.source\n                                )\n                            ),\n                            ...newEdges,\n                          ]);\n                        } else {\n                          setErrorData({\n                            title: \"Invalid selection\",\n                            list: valiDateRes,\n                          });\n                        }\n                      }}\n                    />\n                  </ReactFlow>\n                  <Chat flow={flow} reactFlowInstance={reactFlowInstance} />\n                  <div className=\"absolute top-20 left-[220px] text-xs mt-2 text-gray-500\">\n                    <p id=\"app-title\" className=\"mb-2\">{flow.name}</p>\n                    <Badge variant=\"outline\"><Layers className=\"mr-1 size-4\" />{t('skills.currentVersion')}{version?.name}</Badge>\n                  </div>\n                </div>\n              ) : (\n                <></>\n              )}\n            </div>\n          </div>\n        </main>\n      </div>\n      <div className={`flex flex-1 min-h-0 overflow-hidden ${showApiPage ? '' : 'hidden'}`}>\n        <ApiMainPage type={'skill'} />\n      </div>\n    </div>\n  );\n}\n\n// 复制粘贴组件，支持跨技能粘贴\nconst useKeyBoard = (reactFlowWrapper) => {\n  const keyBoardPanneRef = useRef(null)\n\n  const position = useRef({ x: 0, y: 0 });\n  const [lastSelection, setLastSelection] =\n    useState<OnSelectionChangeParams | null>(null);\n  let {\n    lastCopiedSelection,\n    paste,\n    setLastCopiedSelection,\n  } = useContext(TabsContext);\n\n  useEffect(() => {\n    // this effect is used to attach the global event handlers\n    const onKeyDown = (event: KeyboardEvent) => {\n      if (event.target.tagName === 'INPUT') return // 排除输入框内复制粘贴\n\n      if (\n        (event.ctrlKey || event.metaKey) &&\n        event.key === \"c\" &&\n        lastSelection\n      ) {\n        event.preventDefault();\n        setLastCopiedSelection(cloneDeep(lastSelection));\n        // } else if (\n        //   (event.ctrlKey || event.metaKey) &&\n        //   event.key === \"x\" &&\n        //   lastSelection\n        // ) {\n        //   event.preventDefault();\n        //   setLastCopiedSelection(cloneDeep(lastSelection), true);\n      } else if (\n        (event.ctrlKey || event.metaKey) &&\n        event.key === \"v\" &&\n        lastCopiedSelection\n      ) {\n        event.preventDefault();\n        let bounds = reactFlowWrapper.current.getBoundingClientRect();\n        paste(lastCopiedSelection, {\n          x: position.current.x - bounds.left,\n          y: position.current.y - bounds.top,\n        });\n      } else if (\n        (event.ctrlKey || event.metaKey) &&\n        event.key === \"g\" &&\n        lastSelection\n      ) {\n        event.preventDefault();\n      }\n    };\n    const handleMouseMove = (event) => {\n      position.current = { x: event.clientX, y: event.clientY };\n    };\n\n    keyBoardPanneRef.current.addEventListener(\"keydown\", onKeyDown);\n    keyBoardPanneRef.current.addEventListener(\"mousemove\", handleMouseMove);\n\n    return () => {\n      keyBoardPanneRef.current?.removeEventListener(\"keydown\", onKeyDown);\n      keyBoardPanneRef.current?.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, [position, lastCopiedSelection, lastSelection]);\n\n  return { lastSelection, keyBoardPanneRef, setLastSelection }\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/SelectionMenuComponent/index.tsx",
    "content": "import { Combine } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { NodeToolbar } from \"@xyflow/react\";\nexport default function SelectionMenu({ onClick, nodes, isVisible }) {\n  const [isOpen, setIsOpen] = useState(false);\n  const [isTransitioning, setIsTransitioning] = useState(false);\n  const [lastNodes, setLastNodes] = useState(nodes);\n\n  // nodes get saved to not be gone after the toolbar closes\n  useEffect(() => {\n    setLastNodes(nodes);\n  }, [isOpen]);\n\n  // transition starts after and ends before the toolbar closes\n  useEffect(() => {\n    if (isVisible) {\n      setIsOpen(true);\n      setTimeout(() => {\n        setIsTransitioning(true);\n      }, 50);\n    } else {\n      setIsTransitioning(false);\n      setTimeout(() => {\n        setIsOpen(false);\n      }, 500);\n    }\n  }, [isVisible]);\n\n  return (\n    <NodeToolbar\n      isVisible={isOpen}\n      offset={5}\n      nodeId={\n        lastNodes && lastNodes.length > 0 ? lastNodes.map((n) => n.id) : []\n      }\n    >\n      <div className=\"overflow-hidden\">\n        <div\n          className={\n            \"duration-400 rounded-full border border-gray-200 bg-background px-2.5 text-primary shadow-inner transition-all ease-in-out\" +\n            (isTransitioning ? \" opacity-100\" : \" opacity-0 \")\n          }\n        >\n          <button\n            className=\"flex gap-2 leading-8 items-center justify-between text-sm hover:scale-110 transition-all ease-in-out\"\n            onClick={onClick}\n          >\n            <Combine\n              strokeWidth={2}\n              size={16}\n              className=\"text-primary\"\n            />\n            Group\n          </button>\n        </div>\n      </div>\n    </NodeToolbar>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/extraSidebarComponent/PersonalComponents.tsx",
    "content": "import { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { t } from \"i18next\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { CircleX, Menu, Save } from \"lucide-react\";\nimport { useContext } from \"react\";\nimport DisclosureComponent from \"../DisclosureComponent\";\n\nexport default function PersonalComponents({ onDragStart }) {\n    const { addSavedComponent, checkComponentsName, delComponent, savedComponents } = useContext(userContext)\n\n    const addComponent = (data) => {\n        if (checkComponentsName(data.node.display_name)) {\n            bsConfirm({\n                title: '组件已存在',\n                desc: `组件 ${data.node.display_name} 已存在，覆盖原有组件还是继续创新建组件？`,\n                showClose: true,\n                okTxt: '覆盖',\n                canelTxt: '创建新组件',\n                onOk(next) {\n                    addSavedComponent(cloneDeep(data), true)\n                    next()\n                },\n                onCancel() {\n                    addSavedComponent(cloneDeep(data), false)\n                }\n            })\n        } else {\n            addSavedComponent(cloneDeep(data), false, false)\n        }\n    }\n\n    const upFile = () => {\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \".json\";\n\n        input.onchange = (e: Event) => {\n            // check if the file type is application/json\n            if (\n                (e.target as HTMLInputElement).files[0].type === \"application/json\"\n            ) {\n                const currentfile = (e.target as HTMLInputElement).files[0];\n                // read the file as text\n                currentfile.text().then((text) => {\n                    const data = JSON.parse(text);\n                    if (!data.type) return\n                    addComponent(data)\n                });\n            }\n        };\n        // trigger the file input click event to open the file dialog\n        input.click();\n    }\n\n    const handleDel = (e, comp) => {\n        e.stopPropagation()\n        delComponent(comp.name)\n    }\n\n    return <TooltipProvider delayDuration={0} skipDelayDuration={200}>\n        <Tooltip>\n            <TooltipTrigger>\n                <DisclosureComponent\n                    openDisc={true}\n                    button={{\n                        title: t('skills.save'),\n                        Icon: Save,\n                        color: ''\n                    }}\n                > </DisclosureComponent>\n            </TooltipTrigger>\n            <TooltipContent className=\"bg-gray-0 rounded-md \" side=\"right\" collisionPadding={20}>\n                <div className=\"\">\n                    <Button variant=\"outline\" className=\"w-full bg-gray-50 rounded-full text-gray-500\" onClick={upFile}>{t('skills.importLocal')}</Button>\n                </div>\n                <div className=\"max-h-[540px] overflow-y-auto no-scrollbar\">\n                    {\n                        savedComponents.map(comp => (\n                            <div key={comp.name}>\n                                <div key={comp.name} data-tooltip-id={comp.name}>\n                                    <div draggable\n                                        className=\"side-bar-components-border bg-background mt-1 rounded-full border-l-red-500\"\n                                        onDragStart={(event) => onDragStart(event, comp.data)}\n                                        onDragEnd={() => {\n                                            document.body.removeChild(\n                                                document.getElementsByClassName(\"cursor-grabbing\")[0]\n                                            );\n                                        }}\n                                    >\n                                        <div className=\"side-bar-components-div-form border-solid rounded-full\">\n                                            <span className=\"side-bar-components-text max-w-40\"> {comp.name} </span>\n                                            <Menu className=\"side-bar-components-icon \" />\n                                            <CircleX className=\"side-bar-components-icon ml-2 cursor-pointer\" onClick={(e) => handleDel(e, comp)} />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        ))\n                    }\n                </div>\n            </TooltipContent>\n        </Tooltip>\n    </TooltipProvider>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/extraSidebarComponent/index.tsx",
    "content": "import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { alertContext } from \"@/contexts/alertContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { typesContext } from \"@/contexts/typesContext\";\nimport L2ParamsModal from \"@/modals/L2ParamsModal\";\nimport { APIClassType, APIObjectType } from \"@/types/api\";\nimport { FlowType } from \"@/types/flow\";\nimport { getNodeNames, nodeColors, nodeIconsLucide } from \"@/utils\";\nimport { Menu, Search } from \"lucide-react\";\nimport { useContext, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport DisclosureComponent from \"../DisclosureComponent\";\nimport PersonalComponents from \"./PersonalComponents\";\n\nexport default function ExtraSidebar({ flow }: { flow: FlowType }) {\n  const { t } = useTranslation()\n\n  const { data } = useContext(typesContext);\n  const { saveFlow } = useContext(TabsContext);\n  const { setSuccessData } = useContext(alertContext);\n  const [dataFilter, setFilterData] = useState(data);\n  const [search, setSearch] = useState(\"\");\n\n  const [open, setOpen] = useState(false)\n\n  function onDragStart(\n    event: React.DragEvent<any>,\n    data: { type: string; node?: APIClassType }\n  ) {\n    // start drag event\n    var crt = event.currentTarget.cloneNode(true);\n    crt.style.position = \"absolute\";\n    crt.style.top = \"-500px\";\n    crt.style.right = \"-500px\";\n    crt.classList.add(\"cursor-grabbing\");\n    document.body.appendChild(crt);\n    event.dataTransfer.setDragImage(crt, 0, 0);\n    event.dataTransfer.setData(\"nodedata\", JSON.stringify(data));\n  }\n\n  function handleSearchInput(e: string) {\n    setFilterData((_) => {\n      let ret = {};\n      Object.keys(data).forEach((d: keyof APIObjectType, i) => {\n        ret[d] = {};\n        let keys = Object.keys(data[d]).filter((nd) =>\n          nd.toLowerCase().includes(e.toLowerCase())\n        );\n        keys.forEach((element) => {\n          ret[d][element] = data[d][element];\n        });\n      });\n      return ret;\n    });\n  }\n\n  const nodeNames = getNodeNames()\n  return (\n    <div className=\"side-bar-arrangement\">\n      {/* 简化 */}\n      {/* <div className=\"flex absolute right-[80px] top-20 z-10\">\n        <ShadTooltip content={t('flow.simplifyConfig')} side=\"bottom\">\n          <button className=\"extra-side-bar-buttons whitespace-pre bg-gray-0 rounded-l-full rounded-r-none\" onClick={() => setOpen(true)}>\n            <Combine strokeWidth={1.5} className=\"side-bar-button-size mr-2 pr-[2px]\" color=\"#34d399\"></Combine>{t('flow.simplify')}\n          </button>\n        </ShadTooltip>\n        <ShadTooltip content={t('flow.notifications')} side=\"bottom\">\n          <button\n            className=\"extra-side-bar-buttons whitespace-pre bg-gray-0 rounded-none\"\n            onClick={(event: React.MouseEvent<HTMLElement>) => {\n              setNotificationCenter(false);\n              const { top, left } = (event.target as Element).getBoundingClientRect();\n              openPopUp(\n                <>\n                  <div className=\"absolute z-10\" style={{ top: top + 40, left: left - AlertWidth }} ><AlertDropdown /></div>\n                  <div className=\"header-notifications-box\"></div>\n                </>\n              );\n            }}\n          >\n            {notificationCenter && <div className=\"header-notifications\"></div>}\n            <Bell className=\"side-bar-button-size\" aria-hidden=\"true\" />{t('flow.notifications')}\n          </button>\n        </ShadTooltip>\n        <ShadTooltip content={t('flow.exit')} side=\"bottom\">\n          <button className=\"extra-side-bar-buttons whitespace-pre bg-gray-0 rounded-r-full rounded-l-none\" onClick={() => navgate('/build/skill/' + flow.id, { replace: true })} >\n            <LogOut strokeWidth={1.5} className=\"side-bar-button-size mr-2 pr-[2px]\" ></LogOut>{t('flow.exit')}\n          </button>\n        </ShadTooltip>\n      </div> */}\n      {/* 顶部按钮组 */}\n      {/* <div className=\"side-bar-buttons-arrangement\">\n        <ShadTooltip content={t('flow.import')} side=\"bottom\">\n          <button className=\"extra-side-bar-buttons\" onClick={() => { takeSnapshot(); uploadFlow() }} >\n            <FileUp strokeWidth={1.5} className=\"side-bar-button-size \" ></FileUp>\n          </button>\n        </ShadTooltip>\n        <ShadTooltip content={t('flow.export')} side=\"bottom\">\n          <button className={classNames(\"extra-side-bar-buttons\")} onClick={(event) => { openPopUp(<ExportModal />); }} >\n            <FileDown strokeWidth={1.5} className=\"side-bar-button-size\" ></FileDown>\n          </button>\n        </ShadTooltip>\n        <ShadTooltip content={t('flow.code')} side=\"bottom\">\n          <button className={classNames(\"extra-side-bar-buttons\")} onClick={(event) => { openPopUp(<ApiModal flow={flow} />); }} >\n            <TerminalSquare strokeWidth={1.5} className=\"side-bar-button-size\"></TerminalSquare>\n          </button>\n        </ShadTooltip>\n\n        <ShadTooltip content={t('save')} side=\"bottom\">\n          <button className=\"extra-side-bar-buttons\" onClick={(event) =>\n            saveFlow(flow).then(_ =>\n              _ && setSuccessData({ title: t('success') }))\n          }\n            disabled={!isPending}\n          >\n            <Save strokeWidth={1.5} className={\"side-bar-button-size\" + (isPending ? \" \" : \" extra-side-bar-save-disable\")} ></Save>\n          </button>\n        </ShadTooltip>\n      </div> */}\n      {/* <Separator /> */}\n      <div className=\"side-bar-search-div-placement\">\n        <input type=\"text\" name=\"search\" id=\"search\" placeholder={t('flow.searchComponent')} className=\"input-search rounded-full\"\n          onChange={(e) => {\n            handleSearchInput(e.target.value);\n            setSearch(e.target.value);\n          }}\n        />\n        <div className=\"search-icon\">\n          {/* ! replace hash color here */}\n          <Search size={20} strokeWidth={1.5} className=\"\" />\n        </div>\n      </div>\n\n      <div className=\"side-bar-components-div-arrangement\">\n        <PersonalComponents onDragStart={onDragStart}></PersonalComponents>\n        {Object.keys(dataFilter)\n          .sort()\n          .map((d: keyof APIObjectType, i) =>\n            Object.keys(dataFilter[d]).length > 0 ? (\n              <TooltipProvider delayDuration={0} skipDelayDuration={200} key={i}>\n                <Tooltip>\n                  <TooltipTrigger>\n                    <DisclosureComponent\n                      openDisc={search.length == 0 ? false : true}\n                      key={nodeNames[d]}\n                      button={{\n                        title: nodeNames[d] ?? nodeNames.unknown,\n                        Icon: nodeIconsLucide[d] ?? nodeIconsLucide.unknown,\n                        color: nodeColors[d] ?? nodeColors.unknown\n                      }}\n                    > </DisclosureComponent>\n                  </TooltipTrigger>\n                  <TooltipContent className=\"bg-gray-0 rounded-md max-h-[600px] overflow-y-auto no-scrollbar\" side=\"right\" collisionPadding={20}>\n                    {Object.keys(dataFilter[d])\n                      .sort()\n                      .map((t: string, k) => (\n                        d === 'input_output' && t === 'OutputNode' ? <></> :\n                          <div key={data[d][t].display_name}>\n                            <div key={k} data-tooltip-id={t}>\n                              <div draggable\n                                className=\"side-bar-components-border bg-background mt-1 rounded-full\"\n                                style={{ borderLeftColor: nodeColors[d] ?? nodeColors.unknown, }}\n                                onDragStart={(event) =>\n                                  onDragStart(event, { type: t, node: data[d][t], })\n                                }\n                                onDragEnd={() => {\n                                  document.body.removeChild(\n                                    document.getElementsByClassName(\n                                      \"cursor-grabbing\"\n                                    )[0]\n                                  );\n                                }}\n                              >\n                                <div className=\"side-bar-components-div-form border-solid rounded-full\">\n                                  <span className=\"side-bar-components-text\"> {data[d][t].display_name} </span>\n                                  <Menu className=\"side-bar-components-icon \" />\n                                </div>\n                              </div>\n                            </div>\n                          </div>\n                      ))}\n                  </TooltipContent>\n                </Tooltip>\n              </TooltipProvider>\n            ) : (\n              <div key={i}></div>\n            )\n          )}\n      </div>\n      {/* 高级配置l2配置 */}\n      <L2ParamsModal data={flow} open={open} setOpen={setOpen} onSave={() => {\n        saveFlow(flow);\n        setSuccessData({ title: t('saved') });\n      }}></L2ParamsModal>\n    </div >\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/index.tsx",
    "content": "import { TabsContext } from \"@/contexts/tabsContext\";\nimport { checkAppEditPermission, getFlowApi } from \"@/controllers/API/flow\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Page from \"./PageComponent\";\n\nexport default function FlowPage() {\n  const { flow, setFlow } = useContext(TabsContext);\n  const { id } = useParams();\n  const [checking, setChecking] = useState(true)\n\n  // const [flow, loadFlow] = useEditFlowStore(state => [state.flow, state.loadFlow]);\n  // useEffect(() => {\n  //   loadFlow(flowId)\n  // }, [])\n  const flowInit = async () => {\n    await checkAppEditPermission(id, 1)\n    getFlowApi(id).then(_flow => {\n      setFlow('flow_init', _flow)\n      setChecking(false)\n    })\n  }\n\n  useEffect(() => {\n    if (id && flow?.id !== id) {\n      // 切换技能重新加载flow数据\n      flowInit()\n    } else {\n      setChecking(false)\n    }\n    // return () => setFlow('destroy', null)\n  }, [])\n\n  const [copyFlow, preFlow] = useMemo(() => {\n    if (flow?.id === id) {\n      const copyFlow = cloneDeep(flow)\n      return [copyFlow, JSON.stringify(copyFlow?.data || null)] as const\n    }\n    return []\n  }, [flow, id])\n\n  if (checking) return null\n\n  return (\n    <div className=\"flow-page-positioning\">\n      {/* {flow && <Panne flow={flow} />} */}\n      {copyFlow && <Page flow={copyFlow} preFlow={preFlow} />}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/nodeToolbarComponent/index.tsx",
    "content": "import { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { Select, SelectContent, SelectItem, SelectTrigger } from \"@/components/ui/select-custom\";\nimport { alertContext } from \"@/contexts/alertContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { typesContext } from \"@/contexts/typesContext\";\nimport { undoRedoContext } from \"@/contexts/undoRedoContext\";\nimport { userContext } from \"@/contexts/userContext\";\nimport EditNodeModal from \"@/modals/EditNodeModal\";\nimport { downloadNode, expandGroupNode, removeApiKeys, updateFlowPosition } from \"@/util/reactflowUtils\";\nimport { classNames } from \"@/utils\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { AlarmClock, Combine, Copy, Download, MoreHorizontal, SaveAll, Settings2, Trash2 } from \"lucide-react\";\nimport { useContext, useMemo, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { useReactFlow } from \"@xyflow/react\";\n// 组件头部按钮组\nconst NodeToolbarComponent = ({ data, deleteNode, openPopUp, position }) => {\n  const [nodeLength, setNodeLength] = useState(\n    Object.keys(data.node.template).filter(\n      (t) =>\n        t.charAt(0) !== \"_\" &&\n        data.node.template[t].show &&\n        (data.node.template[t].type === \"str\" ||\n          data.node.template[t].type === \"bool\" ||\n          data.node.template[t].type === \"float\" ||\n          data.node.template[t].type === \"code\" ||\n          data.node.template[t].type === \"prompt\" ||\n          data.node.template[t].type === \"file\" ||\n          data.node.template[t].type === \"Any\" ||\n          data.node.template[t].type === \"int\")\n    ).length\n  );\n\n  const { version, paste } = useContext(TabsContext);\n  const reactFlowInstance = useReactFlow();\n  const isGroup = !!data.node?.flow;\n\n  const { takeSnapshot } = useContext(undoRedoContext);\n\n  const { setSuccessData } = useContext(alertContext);\n  const saveComponentSuccess = () => {\n    setSuccessData({\n      title: \"已保存到本地组件/Saved\",\n    });\n  }\n\n  const { types } = useContext(typesContext);\n  const hasVersion = useMemo(() => {\n    // 部分组件开放“历史/history”入口：agent、chains、retrievers 、vector store 4类组件。\n    return [\"chains\", \"agents\", \"vectorstores\", \"retrievers\"].includes(types[data.type])\n  }, [data, types])\n\n  const navigate = useNavigate()\n  const { id: flowId } = useParams()\n  const { addSavedComponent, checkComponentsName } = useContext(userContext)\n  const handleSelectChange = (event) => {\n    switch (event) {\n      case \"advanced\":\n        // setShowModalAdvanced(true);\n        openPopUp(<EditNodeModal data={data} />);\n        break;\n      case \"show\":\n        // takeSnapshot();\n        // setShowNode(data.showNode ?? true ? false : true);\n        break;\n      case \"saveCom\":\n        if (checkComponentsName(data.node.display_name)) {\n          bsConfirm({\n            title: '组件已存在',\n            desc: `组件 ${data.node.display_name} 已存在，覆盖原有组件还是继续创建新组件？`,\n            showClose: true,\n            okTxt: '覆盖',\n            canelTxt: '创建新组件',\n            onOk(next) {\n              addSavedComponent(cloneDeep(data), true).then(saveComponentSuccess)\n              next()\n            },\n            onCancel() {\n              addSavedComponent(cloneDeep(data), false).then(saveComponentSuccess)\n            }\n          })\n        } else {\n          addSavedComponent(cloneDeep(data), false, false).then(saveComponentSuccess)\n        }\n        break;\n      case \"documentation\":\n        // if (data.node?.documentation) openInNewTab(data.node?.documentation);\n        break;\n      case \"disabled\":\n        break;\n      case \"version\":\n        navigate(`/diff/${flowId}/${version.id}/${data.id}`)\n        break;\n      case \"export\":\n        const cleanFlow = removeApiKeys({ data: { nodes: [{ data }] } } as any)\n        downloadNode(cleanFlow.data.nodes[0].data);\n        break;\n      case \"ungroup\":\n        takeSnapshot();\n        expandGroupNode(\n          data.id,\n          updateFlowPosition(position, data.node?.flow!),\n          data.node!.template,\n          reactFlowInstance.getNodes(),\n          reactFlowInstance.getEdges(),\n          reactFlowInstance.setNodes,\n          reactFlowInstance.setEdges\n        );\n        break;\n    }\n  };\n\n  return (\n    <>\n      <div className=\"w-26 h-10\">\n        <span className=\"isolate inline-flex rounded-md shadow-sm\">\n          {/* 删除 */}\n          <ShadTooltip content=\"delete\" side=\"top\">\n            <button\n              className=\"rounded-l-md bg-background px-2 py-2 shadow-md ring-inset transition-all hover:bg-muted\"\n              onClick={() => { deleteNode(data.id); }}\n            >\n              <Trash2 className=\"h-4 w-4\"></Trash2>\n            </button>\n          </ShadTooltip>\n          {/* 复制 */}\n          <ShadTooltip content=\"copy\" side=\"top\">\n            <button\n              className=\"-ml-px bg-background px-2 py-2 shadow-md ring-inset transition-all hover:bg-muted\"\n              onClick={(event) => {\n                event.preventDefault();\n                paste(\n                  {\n                    nodes: [reactFlowInstance.getNode(data.id)],\n                    edges: [],\n                  },\n                  {\n                    x: 50,\n                    y: 10,\n                    paneX: reactFlowInstance.getNode(data.id).position.x,\n                    paneY: reactFlowInstance.getNode(data.id).position.y,\n                  }\n                );\n              }}\n            >\n              <Copy className=\"h-4 w-4\"></Copy>\n            </button>\n          </ShadTooltip>\n          {/* 版本 */}\n          {\n            hasVersion && !isGroup && <ShadTooltip content=\"version\" side=\"top\">\n              <button\n                className=\"-ml-px bg-background px-2 py-2 shadow-md ring-inset transition-all hover:bg-muted\"\n                onClick={() => handleSelectChange('version')}\n              >\n                <AlarmClock className=\"h-4 w-4\"></AlarmClock>\n              </button>\n            </ShadTooltip>\n          }\n          {/* 编辑1 */}\n          {\n            nodeLength > 0 && <ShadTooltip content=\"edit\" side=\"top\">\n              <button\n                className=\"-ml-px bg-background px-2 py-2 shadow-md ring-inset transition-all hover:bg-muted\"\n                onClick={() => handleSelectChange('advanced')}\n              >\n                <Settings2 className=\"h-4 w-4\"></Settings2>\n              </button>\n            </ShadTooltip>\n          }\n          {/* more */}\n          <Select onValueChange={handleSelectChange} value=\"\">\n            <ShadTooltip content=\"More\" side=\"top\">\n              <SelectTrigger className={'xxx'}>\n                <div>\n                  <div\n                    data-testid=\"more-options-modal\"\n                    className={classNames(\n                      \"rounded-r-md -ml-px bg-background px-2 py-2 shadow-md ring-inset transition-all hover:bg-muted\" +\n                      (nodeLength == 0 ? \" text-muted-foreground\" : \" text-foreground\")\n                    )}\n                  >\n                    <MoreHorizontal\n                      name=\"MoreHorizontal\"\n                      className=\"h-4 w-4\"\n                    />\n                  </div>\n                </div>\n              </SelectTrigger>\n            </ShadTooltip>\n            <SelectContent>\n              <SelectItem value={\"export\"}>\n                <div className=\"flex\" data-testid=\"save-button-modal\">\n                  <Download className=\"relative top-0.5 mr-2 h-4 w-4\" />\n                  {\" \"}export{\" \"}\n                </div>{\" \"}\n              </SelectItem>\n              <SelectItem value={\"saveCom\"}>\n                <div className=\"flex\" data-testid=\"save-button-modal\">\n                  <SaveAll className=\"relative top-0.5 mr-2 h-4 w-4\" />\n                  {\" \"}Save{\" \"}\n                </div>{\" \"}\n              </SelectItem>\n              {isGroup && (\n                <SelectItem value=\"ungroup\">\n                  <div className=\"flex\">\n                    <Combine\n                      name=\"Combine\"\n                      className=\"relative top-0.5 mr-2 h-4 w-4\"\n                    />{\" \"}\n                    Ungroup{\" \"}\n                  </div>\n                </SelectItem>\n              )}\n            </SelectContent>\n          </Select>\n        </span>\n      </div>\n    </>\n  );\n};\n\nexport default NodeToolbarComponent;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/editSkill/skillPage.tsx",
    "content": "import { TabsContext } from \"@/contexts/tabsContext\";\nimport { getFlowApi } from \"@/controllers/API/flow\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { useContext, useEffect, useMemo } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Page from \"./PageComponent\";\n\nexport default function FlowPage() {\n  const { flow, setFlow } = useContext(TabsContext);\n  const { id } = useParams();\n\n  useEffect(() => {\n    if (id && flow?.id !== id) {\n      // 切换技能重新加载flow数据\n      getFlowApi(id).then(_flow => setFlow('flow_init', _flow))\n    }\n\n    // return () => setFlow('destroy', null)\n  }, [])\n\n  const [copyFlow, preFlow] = useMemo(() => {\n    if (flow?.id === id) {\n      const copyFlow = cloneDeep(flow)\n      return [copyFlow, JSON.stringify(copyFlow?.data || null)] as const\n    }\n    return []\n  }, [flow, id])\n\n\n  return (\n    <div className=\"flow-page-positioning\">\n      {copyFlow && <Page flow={copyFlow} preFlow={preFlow} />}\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/skills/l2Edit.tsx",
    "content": "import L2ParameterComponent from \"@/CustomNodes/GenericNode/components/parameterComponent/l2Index\";\nimport FlowSetting from \"@/components/Pro/security/FlowSetting\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport Avator from \"@/components/bs-ui/input/avator\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { checkAppEditPermission, createCustomFlowApi, getFlowApi, updateVersion } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { uploadFileWithProgress } from \"@/modals/UploadModal/upload\";\nimport { useHasForm } from \"@/util/hook\";\nimport { ArrowLeft, ChevronUp } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport FormSet from \"./FormSet\";\n\nexport default function l2Edit() {\n    const { t } = useTranslation()\n\n    const { id, vid } = useParams()\n    const { appConfig } = useContext(locationContext)\n    const { flow: nextFlow, setFlow, saveFlow } = useContext(TabsContext);\n    const flow = useMemo(() => {\n        return id ? nextFlow : null\n    }, [nextFlow])\n\n    const [isL2, setIsL2] = useState(false)\n    const [loading, setLoading] = useState(false)\n    const [name, setName] = useState('');\n    const [description, setDescription] = useState('');\n    const [guideWords, setGuideWords] = useState('');\n    const [checking, setChecking] = useState(true)\n\n    const flowInit = async () => {\n        await checkAppEditPermission(id, 1)\n\n        getFlowApi(id).then(_flow => {\n            setFlow('l2 flow init', _flow);\n            setIsL2(true);\n            setName(_flow.name);\n            setDescription(_flow.description);\n            setGuideWords(_flow.guide_word);\n            setViewLogo(_flow.logo);\n            setChecking(false)\n        });\n    }\n    useEffect(() => {\n        if (!id) return setChecking(false);\n\n        flowInit()\n    }, [id]);\n\n\n    // 校验\n    const { user } = useContext(userContext);\n    const [error, setError] = useState({ name: false, desc: false }) // 表单error信息展示\n    const { message } = useToast()\n    const isParamError = (name, desc, showErrorConfirm = false) => {\n        const errorlist = [];\n        if (!name) errorlist.push(t('skills.skillNameRequired'));\n        if (name.length > 30) errorlist.push(t('skills.skillNameTooLong'));\n\n        // Duplicate name validation\n        const nameErrors = errorlist.length;\n        if (!desc) errorlist.push(t('skills.skillDescRequired'));\n        if (desc.length > 200) errorlist.push(t('skills.skillDescTooLong'));\n        if (errorlist.length && showErrorConfirm) message({\n            title: t('prompt'),\n            variant: 'error',\n            description: errorlist\n        });\n        setError({ name: !!nameErrors, desc: errorlist.length > nameErrors });\n\n        return !!errorlist.length;\n    }\n\n\n    const navigate = useNavigate()\n    const flowSettingSaveRef = useRef(null)\n    // 创建新技能 \n    const handleCreateNewSkill = async () => {\n        if (isParamError(name, description, true)) return\n        setLoading(true)\n\n        await captureAndAlertRequestErrorHoc(createCustomFlowApi({\n            logo,\n            name,\n            description,\n            guide_word: guideWords\n        }, user.user_name).then(newFlow => {\n            setFlow('l2 create flow', newFlow)\n            navigate(\"/skill/\" + newFlow.id, { replace: true }); // l3\n            // 创建技能后在保存\n            flowSettingSaveRef.current?.(newFlow.id)\n        }))\n        setLoading(false)\n    }\n\n    const formRef = useRef(null)\n\n    // 编辑回填参数\n    const handleJumpFlow = async () => {\n        // 上线技能直接跳转L3\n        if (flow.status === 2) return navigate('/skill/' + id, { replace: true })\n        // 高级配置信息有误直接跳转L3\n        if (isParamError(name, description)) return navigate('/skill/' + id, { replace: true })\n        // 保存在跳\n        setLoading(true)\n        formRef.current?.save()\n\n        await saveFlow({ ...flow, name, description, guide_word: guideWords, logo })\n        await updateVersion(vid, { data: flow.data })\n        setLoading(false)\n        navigate('/skill/' + id, { replace: true })\n    }\n\n    const handleSave = async () => {\n        if (isParamError(name, description, true)) return\n        setLoading(true)\n        formRef.current?.save()\n        await saveFlow({ ...flow, name, description, guide_word: guideWords, logo })\n        await updateVersion(vid, { data: flow.data })\n\n        setLoading(false)\n        message({\n            title: t('prompt'),\n            variant: 'success',\n            description: t('saved')\n        });\n        setTimeout(() => /^\\/skill\\/[\\w\\d-]+/.test(location.pathname) && navigate(-1), 2000);\n    }\n\n    // 表单收缩\n    const showContent = (e) => {\n        const target = e.target.tagName === 'svg' ? e.target.parentNode : e.target\n        const contentDom = target.nextSibling\n        target.children[0].style.transform = contentDom.clientHeight ? 'rotate(180deg)' : 'rotate(0deg)'\n        contentDom.style.maxHeight = contentDom.clientHeight ? 0 : '999px'\n    }\n\n    // isForm\n    const isForm = useHasForm(flow)\n\n    // 头像\n    const [logo, setLogo] = useState('')\n    const [viewLogo, setViewLogo] = useState('')\n    const uploadAvator = (file) => {\n        uploadFileWithProgress(file, (progress) => { }, 'icon').then(res => {\n            setLogo(res.relative_path);\n            setViewLogo(res.file_path);\n        })\n    }\n\n    const previewAvatar = useMemo(() =>\n        (viewLogo || logo) ? __APP_ENV__.BASE_URL + (viewLogo || logo) : '',\n        [logo, viewLogo])\n\n    if (checking) return null\n\n    return <div className=\"relative box-border h-full overflow-auto\">\n        <div className=\"p-6 pb-48 h-full overflow-y-auto\">\n            <div className=\"flex justify-between w-full\">\n                <ShadTooltip content={t('back')} side=\"right\">\n                    <button className=\"extra-side-bar-buttons w-[36px]\" onClick={() => window.history.length < 3 ? navigate('/build/apps') : navigate(-1)}>\n                        <ArrowLeft strokeWidth={1.5} className=\"side-bar-button-size\" />\n                    </button>\n                </ShadTooltip>\n                {/* <ShadTooltip content=\"接口信息\" side=\"left\">\n                <button className=\"extra-side-bar-buttons w-[36px]\" onClick={() => openPopUp(<ApiModal flow={flows.find((f) => f.id === tabId)} />)} >\n                    <TerminalSquare strokeWidth={1.5} className=\"side-bar-button-size \" ></TerminalSquare>\n                </button>\n            </ShadTooltip> */}\n            </div>\n            {/* form */}\n            <div className=\"pt-6\">\n                <p className=\"text-center text-2xl\">{t('skills.skillSettings')}</p>\n                <div className=\"w-[50%] max-w-2xl mx-auto\">\n                    <p className=\"text-center text-gray-400 mt-4 cursor-pointer flex justify-center\" onClick={showContent}>\n                        {t('skills.basicInfo')}\n                        <ChevronUp />\n                    </p>\n                    {/* base form */}\n                    <div className=\"w-full overflow-hidden transition-all px-1\">\n                        <div className=\"mt-4\">\n                            <Label htmlFor=\"name\">{t('skills.avatar')}</Label>\n                            <Avator value={previewAvatar} className=\"mt-2\" onChange={uploadAvator}>\n                                <AppAvator id={6} flowType={1} className=\"w-9 h-9\"></AppAvator>\n                            </Avator>\n                        </div>\n                        <div className=\"mt-4\">\n                            <Label htmlFor=\"name\">{t('skills.skillName')}</Label>\n                            <Input value={name} onChange={(e) => setName(e.target.value)} placeholder={t('skills.skillName')} className={`mt-2 ${error.name && 'border-red-400'}`} />\n                        </div>\n                        <div className=\"mt-4\">\n                            <Label htmlFor=\"username\">{t('skills.description')}</Label>\n                            <Textarea value={description} onChange={(e) => setDescription(e.target.value)} id=\"name\" placeholder={t('skills.description')} className={`mt-2 ${error.desc && 'border-red-400'}`} />\n                        </div>\n                        <div className=\"mt-4\">\n                            <Label htmlFor=\"username\">{t('skills.guideWords')}</Label>\n                            <Textarea value={guideWords} onChange={(e) => setGuideWords(e.target.value)} maxLength={1000} id=\"name\" placeholder={t('skills.guideWords')} className={`mt-2 ${error.desc && 'border-red-400'}`} />\n                        </div>\n                    </div>\n                    {\n                        // L2 form\n                        isL2 && <div className=\"w-full mt-8\">\n                            <p className=\"text-center text-gray-400 cursor-pointer flex justify-center\" onClick={showContent}>\n                                {t('skills.parameterInfo')}\n                                <ChevronUp />\n                            </p>\n                            <div className=\"w-full overflow-hidden transition-all px-1\">\n                                {flow?.data?.nodes.map(({ data }) => (\n                                    <div key={data.id} className=\"w-full\">\n                                        <div className=\"only:hidden mt-6\">\n                                            <span className=\"p-2 font-bold text-gray-400 text-base\">\n                                                {data.node.l2_name || data.node.display_name}\n                                            </span>\n                                        </div>\n                                        {\n                                            // 自定义组件\n                                            Object.keys(data.node.template).map(k => (\n                                                data.node.template[k].l2 && <div className=\"w-full mt-4 px-1\" key={k}>\n                                                    <Label htmlFor=\"name\" className=\"text-right\">\n                                                        {data.node.template[k].l2_name || data.node.template[k].name}\n                                                    </Label>\n                                                    <L2ParameterComponent data={data} type={data.node.template[k].type} name={k} />\n                                                </div>\n                                            ))\n                                        }\n                                    </div>\n                                ))}\n                            </div>\n                        </div>\n                    }\n                    {/* 表单设置 */}\n                    {isForm && <FormSet ref={formRef} id={id} vid={vid}></FormSet>}\n                    {/* 安全审查 */}\n                    {appConfig.isPro && <div>\n                        <p className=\"text-center text-gray-400 mt-8 cursor-pointer flex justify-center\" onClick={showContent}>\n                            {t('build.contentSecuritySettings')}\n                            <ChevronUp />\n                        </p>\n                        {/* base form */}\n                        <div className=\"w-full overflow-hidden transition-all px-1\">\n                            <FlowSetting id={id} type={2} isOnline={nextFlow?.status === 2} onSubTask={(fn) => flowSettingSaveRef.current = fn} />\n                        </div>\n                    </div>}\n                </div>\n            </div>\n        </div>\n        {/* footer */}\n        <div className=\"absolute flex z-30 bottom-0 w-[calc(100vw-200px)] py-8 mr-5 justify-center bg-background-login\">\n            {\n                isL2 ?\n                    <div className=\"flex gap-4 w-[50%]\">\n                        <Button disabled={loading} className=\"extra-side-bar-save-disable w-[70%]\" onClick={handleSave}>\n                            {t('save')}\n                        </Button>\n                        <Button disabled={loading} className=\"w-[30%]\" variant=\"outline\" onClick={() => handleJumpFlow()}>\n                            {t('skills.advancedConfiguration')}\n                        </Button>\n                    </div>\n                    :\n                    <div className=\"flex justify-center w-[50%]\">\n                        <Button disabled={loading} className=\"extra-side-bar-save-disable w-[50%]\" onClick={handleCreateNewSkill}>\n                            {t('skills.nextStep')}\n                        </Button>\n                    </div>\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/EditMcp.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger } from \"@/components/bs-ui/select\";\nimport { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { createTool, deleteTool, getMcpServeByConfig, testMcpApi, updateTool } from \"@/controllers/API/tools\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { isValidJSON } from \"@/util/utils\";\nimport { forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\n// test chat\nconst TestDialog = forwardRef((props, ref) => {\n    const [testShow, setTestShow] = useState(false);\n    const [toolData, setToolData] = useState(null);\n    const [params, setParams] = useState({});\n    const [result, setResult] = useState(\"\");\n    const [loading, setLoading] = useState(false);\n    const { message } = useToast();\n    const serverRef = useRef({});\n    const openapiSchemaRef = useRef('')\n\n    useImperativeHandle(ref, () => ({\n        open: (tool, config, _serverRef) => {\n            openapiSchemaRef.current = config\n            const openapiSchema = JSON.parse(config)\n            setToolData({ ...tool, openapiSchema });\n            setParams({});\n            setResult(\"\");\n            setTestShow(true);\n            serverRef.current = _serverRef;\n        }\n    }));\n\n    const handleTest = async () => {\n        // validate params\n        // const requiredParams = Object.entries(toolData.inputSchema.properties)\n        //     .filter(([_, schema]) => schema.required)\n        //     .map(([name]) => name);\n        const requiredParams = toolData.inputSchema.required\n\n        const errors = requiredParams.filter(name => !params[name]);\n        if (errors.length > 0) {\n            return message({ description: errors.map(n => `${n} ${t('required')}`), variant: \"warning\" });\n        }\n\n        setLoading(true);\n        try {\n            console.log('toolData :>> ', toolData);\n            const { server_host, children, auth_method, auth_type, api_key } = serverRef.current\n\n            const res = await captureAndAlertRequestErrorHoc(\n                testMcpApi({\n                    server_host,\n                    extra: children.find(el => el.name === toolData.name).extra,\n                    auth_method,\n                    auth_type,\n                    api_key,\n                    request_params: params,\n                    openapi_schema: openapiSchemaRef.current\n                }).then(setResult)\n            );\n            console.log('res :>> ', res);\n            // setResult(JSON.stringify(res, null, 2));\n        } finally {\n            setLoading(false);\n        }\n    };\n\n    const { t } = useTranslation();\n\n    return (\n        <Dialog open={testShow} onOpenChange={setTestShow}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{toolData?.name}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-8 py-6\">\n                    <div className=\"max-h-[600px] overflow-y-auto\">\n                        <Table>\n                            <TableHeader>\n                                <TableRow>\n                                    <TableHead>{t('test.parameter')}</TableHead>\n                                    <TableHead>{t('test.value')}</TableHead>\n                                </TableRow>\n                            </TableHeader>\n                            <TableBody>\n                                {Object.entries(toolData?.inputSchema?.properties || {}).map(([name, schema]) => (\n                                    <TableRow key={name}>\n                                        <TableCell>\n                                            {name}\n                                            {toolData?.inputSchema.required?.includes(name) && <span className=\"text-red-500\">*</span>}\n                                        </TableCell>\n                                        <TableCell>\n                                            <Input\n                                                placeholder={t('test.inputTypeValue', { type: schema.type || 'string' })}\n                                                onChange={(e) => setParams(prev => ({\n                                                    ...prev,\n                                                    [name]: e.target.value\n                                                }))}\n                                            />\n                                        </TableCell>\n                                    </TableRow>\n                                ))}\n                            </TableBody>\n                        </Table>\n                    </div>\n                    <Button onClick={handleTest} disabled={loading}>{t('test.test')}</Button>\n                    <Textarea\n                        value={result}\n                        placeholder={t('test.outResultPlaceholder')}\n                        readOnly\n                        className=\"mt-2 min-h-[100px]\"\n                    />\n                </div>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\n// Main component  TODO(refactor, state confusion)\nconst McpServerEditorDialog = forwardRef(({ existingNames = [], onReload }, ref) => {\n    const [isDialogOpen, setIsDialogOpen] = useState(false);\n    const [isEditMode, setIsEditMode] = useState(false);\n    const [availableTools, setAvailableTools] = useState([]);\n\n    const initialFormState = {\n        name: \"\",\n        openapiSchema: \"\"\n    };\n    const [formData, setFormData] = useState(initialFormState);\n    const serverRef = useRef(initialFormState);\n    const originalName = useRef(\"\");\n    const { message } = useToast();\n    const testToolDialogRef = useRef(null);\n    const { user } = useContext(userContext);\n    const [isSelf, setIsSelf] = useState(false);\n    // Parse flag\n    const textareaRef = useRef(null);\n    const [isLoading, setIsLoading] = useState(false); // Loading state\n    const latestFormData = useRef(initialFormState); // Store latest form data\n    const parseBeforeSaveRef = useRef(false); // Need to parse before saving\n    const [isWrite, setIsWrite] = useState(false)\n    useEffect(() => {\n        latestFormData.current = formData;\n    }, [formData]);\n\n    const { t } = useTranslation();\n\n    // Example configurations\n    const exampleConfigs = useMemo(() => ({\n        gaode1: JSON.stringify({\n            \"mcpServers\": {\n                \"amap-sse\": {\n                    \"type\": \"sse\",\n                    \"name\": t('tools.gaodeMap'),\n                    \"description\": t('tools.gaodeMapDesc'),\n                    \"url\": \"https://mcp.amap.com/sse?key=yourapikey\"\n                }\n            }\n        }, null, 2),\n        gaode2: JSON.stringify({\n            \"mcpServers\": {\n                \"amap-streamable\": {\n                    \"type\": \"streamable\",\n                    \"name\": t('tools.gaodeMap'),\n                    \"description\": t('tools.gaodeMapDesc'),\n                    \"url\": \"https://mcp.amap.com/mcp?key=yourapikey\"\n                }\n            }\n        }, null, 2)\n    }), [t]);\n\n    // Expose methods to parent component\n    useImperativeHandle(ref, () => ({\n        open: (serverData = null) => {\n            if (serverData) {\n                const newFormData = {\n                    ...serverData,\n                    openapiSchema: serverData.openapi_schema\n                };\n                setFormData(newFormData);\n                latestFormData.current = newFormData;\n                serverRef.current = serverData;\n                setIsSelf(serverData.user_id === user.user_id);\n                setIsWrite(serverData.write)\n                originalName.current = serverData.name;\n                setIsEditMode(true);\n                loadToolsFromSchema(serverData.openapi_schema);\n            } else {\n                resetFormState();\n                setIsEditMode(false);\n            }\n            setIsDialogOpen(true);\n            setIsLoading(false);\n        }\n    }));\n\n\n    // Reset form\n    const resetFormState = () => {\n        setFormData(initialFormState);\n        latestFormData.current = initialFormState;\n        serverRef.current = initialFormState;\n        setAvailableTools([]);\n    };\n\n    const loadToolsFromSchema = async (schemaContent) => {\n        if (!schemaContent.trim()) return;\n\n        if (!isValidJSON(schemaContent)) {\n            setAvailableTools([]);\n            return message({ description: t('tools.configFormatError'), variant: \"warning\" });\n        }\n\n        // setIsLoading(true);\n        try {\n            const tools = await captureAndAlertRequestErrorHoc(\n                getMcpServeByConfig({ file_content: schemaContent }),\n                (res) => {\n                    serverRef.current.children = [];\n                    setAvailableTools([]);\n                }\n            );\n\n            if (tools) {\n                serverRef.current = tools;\n                const parsedApis = tools.children.map(item => JSON.parse(item.extra));\n                setAvailableTools(parsedApis);\n\n                // Update form data and ref\n                const newFormData = {\n                    ...latestFormData.current,\n                    children: tools.children\n                };\n                setFormData(newFormData);\n                latestFormData.current = newFormData;\n            }\n        } finally {\n            // setIsLoading(false);\n            parseBeforeSaveRef.current = false;\n        }\n    };\n\n    const validateForm = () => {\n        const errors = [];\n        const name = latestFormData.current.name.trim();\n        const schema = latestFormData.current.openapiSchema.trim();\n\n        // Name validation\n        if (!name) {\n            errors.push(t('tools.nameRequired'));\n        } else if (\n            existingNames.some(\n                n => n.toLowerCase() === name.toLowerCase() &&\n                    n !== originalName.current\n            )\n        ) {\n            errors.push(t('tools.nameExists'));\n        }\n\n        // Schema validation\n        if (!schema) {\n            errors.push(t('tools.configRequired'));\n        } else if (!isValidJSON(schema)) {\n            errors.push(t('tools.configFormatError'));\n        }\n\n        return errors;\n    };\n\n    // Form submission\n    const handleSubmit = async () => {\n        if (parseBeforeSaveRef.current) {\n            setIsLoading(true);\n            await loadToolsFromSchema(textareaRef.current.value)\n            parseBeforeSaveRef.current = false\n            setTimeout(() => {\n                handleSubmit()\n            }, 0);\n        }\n\n        // Use latestFormData.current to get latest data\n        const validationErrors = validateForm();\n        if (validationErrors.length > 0) {\n            return message({\n                description: validationErrors,\n                variant: \"warning\"\n            });\n        }\n\n        setIsLoading(true);\n        try {\n            const apiMethod = isEditMode ? updateTool : createTool;\n            const { openapiSchema, ...other } = latestFormData.current;\n\n            await captureAndAlertRequestErrorHoc(apiMethod({\n                ...serverRef.current,\n                ...other,\n                description: serverRef.current.description,\n                openapi_schema: openapiSchema,\n                is_preset: 2\n            })).then((res) => {\n                if (!res) return;\n                message({ description: t('skills.saveSuccessful'), variant: \"success\" });\n                setIsDialogOpen(false);\n                onReload();\n            });\n        } finally {\n            setIsLoading(false);\n        }\n    };\n\n    // Delete server (keep unchanged)\n    const handleServerDelete = () => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('tools.confirmDeleteMcp'),\n            onOk(closeDialog) {\n                captureAndAlertRequestErrorHoc(\n                    deleteTool(formData.id)\n                ).then(() => {\n                    setIsDialogOpen(false);\n                    onReload();\n                    closeDialog();\n                });\n            }\n        });\n    };\n\n    const handleExampleSelect = (exampleKey) => {\n        const exampleSchema = exampleConfigs[exampleKey];\n        setFormData(prev => ({\n            ...prev,\n            openapiSchema: exampleSchema\n        }));\n        loadToolsFromSchema(exampleSchema);\n    };\n    return (\n        <div>\n            <Sheet open={isDialogOpen} onOpenChange={setIsDialogOpen}>\n                <SheetContent className=\"w-[800px] sm:max-w-[800px] p-4 bg-background-login\">\n                    <SheetHeader>\n                        <SheetTitle>{isEditMode ? t('edit') : t('add')} {t('mcpServer')}</SheetTitle>\n                    </SheetHeader>\n\n                    <div className=\"mt-4 space-y-6 px-6 overflow-y-auto h-[calc(100vh-200px)]\">\n                        {/* Name input */}\n                        <div>\n                            <label className=\"\">{t('tools.name')}</label>\n                            <Input\n                                value={formData.name}\n                                className=\"mt-2\"\n                                placeholder={t('tools.enterMcpName')}\n                                onChange={(e) => setFormData(prev => ({\n                                    ...prev,\n                                    name: e.target.value\n                                }))}\n                            />\n                        </div>\n\n                        {/* Configuration input */}\n                        <div>\n                            <div className=\"flex justify-between items-center mb-2\">\n                                <label className=\"\">{t('tools.mcpServerConfig')}</label>\n                                <Select value={'1'} onValueChange={handleExampleSelect}>\n                                    <SelectTrigger className=\"w-[180px]\">\n                                        <span>{t('tools.examples')}</span>\n                                    </SelectTrigger>\n                                    <SelectContent>\n                                        <SelectGroup>\n                                            <SelectItem value=\"gaode1\">{t('tools.gaodeMapSSE')}</SelectItem>\n                                            <SelectItem value=\"gaode2\">{t('tools.gaodeMapStreamable')}</SelectItem>\n                                        </SelectGroup>\n                                    </SelectContent>\n                                </Select>\n                            </div>\n                            <Textarea\n                                ref={textareaRef}\n                                value={formData.openapiSchema}\n                                placeholder={t('tools.enterOpenAPISchema')}\n                                className=\"min-h-[200px] font-mono\"\n                                onChange={(e) => {\n                                    setFormData(prev => ({\n                                        ...prev,\n                                        openapiSchema: e.target.value\n                                    }))\n                                    parseBeforeSaveRef.current = true;\n                                }}\n                                onBlur={() => loadToolsFromSchema(formData.openapiSchema)}\n                            />\n                        </div>\n\n                        {/* Tool list */}\n                        <div>\n                            <div className=\"flex justify-between items-center mb-2\">\n                                <label>{t('tools.availableTools')}</label>\n                                <Button variant=\"outline\" disabled={isLoading} onClick={() => loadToolsFromSchema(formData.openapiSchema)}>\n                                    {t('build.refresh')}\n                                </Button>\n                            </div>\n                            <Table>\n                                <TableHeader>\n                                    <TableRow>\n                                        <TableHead>{t('tools.name')}</TableHead>\n                                        <TableHead>{t('tools.description')}</TableHead>\n                                        <TableHead>{t('operations')}</TableHead>\n                                    </TableRow>\n                                </TableHeader>\n                                <TableBody>\n                                    {availableTools.map((tool) => (\n                                        <TableRow key={tool.name}>\n                                            <TableCell>{tool.name}</TableCell>\n                                            <TableCell>{tool.description}</TableCell>\n                                            <TableCell>\n                                                <Button\n                                                    variant=\"outline\"\n                                                    onClick={() => testToolDialogRef.current.open(\n                                                        tool,\n                                                        formData.openapiSchema,\n                                                        serverRef.current\n                                                    )}\n                                                >{t('test.test')}</Button>\n                                            </TableCell>\n                                        </TableRow>\n                                    ))}\n                                </TableBody>\n                            </Table>\n                        </div>\n                    </div>\n\n                    {/* footer buttons */}\n                    <SheetFooter className=\"absolute bottom-0 right-0 w-full px-6 py-4\">\n                        {isEditMode && (user.role === 'admin' || isSelf || isWrite) && (\n                            <Button\n                                variant=\"destructive\"\n                                className=\"mr-auto\"\n                                onClick={handleServerDelete}\n                            >\n                                {t('delete')}\n                            </Button>\n                        )}\n                        <Button variant=\"outline\" onClick={() => setIsDialogOpen(false)}>\n                            {t('cancel')}\n                        </Button>\n                        <Button disabled={isLoading} onClick={handleSubmit}>\n                            {isLoading && <LoadIcon className=\"mr-1\" />}\n                            {t('save')}\n                        </Button>\n                    </SheetFooter>\n                </SheetContent>\n            </Sheet>\n            <TestDialog ref={testToolDialogRef} />\n        </div>\n    );\n});\n\nexport default McpServerEditorDialog;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/EditTool.tsx",
    "content": "import { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input, Textarea } from \"@/components/bs-ui/input\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { Popover, PopoverClose, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\"\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger } from \"@/components/bs-ui/select\"\nimport { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\"\nimport { userContext } from \"@/contexts/userContext\"\nimport { createTool, deleteTool, downloadToolSchema, testToolApi, updateTool } from \"@/controllers/API/tools\"\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\"\nimport { Plus } from \"lucide-react\"\nimport { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\ninterface TestDialogProps {\n    tool: any;\n    formState: any;\n}\n\nexport const TestDialog = forwardRef<{\n    open: (item, tool, formState) => void\n}, TestDialogProps>((props: any, ref) => {\n    const { t } = useTranslation()\n    const [testShow, setTestShow] = useState(false)\n    const [apiData, setApiData] = useState<any>({})\n    const toolRef = useRef<any>({})\n\n    const formRef = useRef<{\n        values: Record<string, string>;\n        rules: Record<string, boolean>;\n        state?: any;\n    }>({ values: {}, rules: {} });\n\n    useImperativeHandle(ref, () => ({\n        open: (item, tool, formState) => {\n            toolRef.current = tool\n            formRef.current.state = formState\n            setResult('')\n            setApiData(item)\n            setTestShow(true)\n            // fill form\n            item.api_params.forEach(param => {\n                formRef.current.values[param.name] = ''\n                formRef.current.rules[param.name] = param.required\n            });\n        }\n    }))\n    // reset\n    useEffect(() => {\n        if (!testShow) {\n            formRef.current.values = {}\n            formRef.current.rules = {}\n        }\n    }, [testShow])\n\n    const { message } = useToast()\n    const [loading, setLoading] = useState(false)\n    const [result, setResult] = useState('')\n    const handleTest = async () => {\n        // validation\n        const errors = []\n        Object.keys(formRef.current.values).forEach(key => {\n            if (formRef.current.rules[key] && formRef.current.values[key] === '') {\n                errors.push(key + t('report.isRequired'))\n            }\n        })\n        if (errors.length > 0) {\n            return message({\n                description: errors,\n                variant: 'warning'\n            })\n        }\n\n        setLoading(true)\n\n        const { server_host, children, auth_method, parameter_name } = toolRef.current\n        const { apiKey, apiLocation, authMethod, authType, parameter } = formRef.current.state\n\n        await captureAndAlertRequestErrorHoc(testToolApi({\n            server_host,\n            extra: children.find(el => el.name === apiData.name).extra,\n            auth_method: authMethod === 'apikey' ? 1 : 0,\n            auth_type: authType,\n            api_key: apiKey,\n            request_params: formRef.current.values,\n            api_location: apiLocation || 'query',\n            parameter_name: parameter || parameter_name\n        }).then(setResult))\n        setLoading(false)\n    }\n\n    return <Dialog open={testShow} onOpenChange={setTestShow}>\n        <DialogContent className=\"sm:max-w-[625px]\">\n            <DialogHeader>\n                <DialogTitle>{apiData.name}</DialogTitle>\n            </DialogHeader>\n            {testShow && <div className=\"flex flex-col gap-8 py-6\">\n                <div className=\"max-h-[600px] overflow-y-auto scrollbar-hide\">\n                    <label htmlFor=\"name\" className=\"bisheng-label\">{t('test.parametersAndValues')}</label>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className=\"w-[100px]\">{t('test.parameter')}</TableHead>\n                                <TableHead >{t('test.value')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            {\n                                apiData.api_params.map((param) =>\n                                    <TableRow key={param.id}>\n                                        <TableCell>{param.name}{param.required && <span className=\"text-red-500\">*</span>}</TableCell>\n                                        <TableCell>\n                                            <Input onChange={(e) => {\n                                                formRef.current.values[param.name] = e.target.value;\n                                            }}></Input>\n                                        </TableCell>\n                                    </TableRow>\n                                )\n                            }\n                            {\n                                apiData.api_params.length === 0 && <TableRow>\n                                    <TableCell colSpan={2}>None</TableCell>\n                                </TableRow>\n                            }\n                        </TableBody>\n                    </Table>\n                </div>\n                <Button onClick={handleTest} disabled={loading}>{t('test.test')}</Button>\n                <div className=\"\">\n                    <label htmlFor=\"desc\" className=\"bisheng-label\">{t('test.result')}</label>\n                    <Textarea id=\"desc\" name=\"desc\" value={result} placeholder={t('test.outResultPlaceholder')} readOnly className=\"mt-2\" />\n                </div>\n            </div>}\n        </DialogContent>\n    </Dialog>\n})\n\nconst formData = {\n    toolName: \"\",\n    schemaContent: `{\n        \"openapi\": \"3.1.0\",\n        \"info\": {\n          \"title\": \"Untitled\",\n          \"description\": \"Your OpenAPI specification\",\n          \"version\": \"v1.0.0\"\n        },\n        \"servers\": [\n          {\n            \"url\": \"\"\n          }\n        ],\n        \"paths\": {},\n        \"components\": {\n          \"schemas\": {}\n        }\n      }`,\n    authType: \"basic\",\n    apiKey: \"\",\n    authMethod: \"none\",\n    customHeader: \"\",\n    apiLocation: \"query\",\n    parameter: \"\"\n}\n\nconst EditTool = forwardRef((props: any, ref) => {\n    const [editShow, setShow] = useState(false)\n    const setEditShow = (bln) => {\n        if (!bln) {\n            // init data when close\n            setFormState({ ...formData })\n            setTableData([])\n        }\n        setShow(bln)\n    }\n    const [delShow, setDelShow] = useState(false)\n\n    const schemaUrl = useRef('')\n    const [formState, setFormState] = useState({ ...formData });\n    const fromDataRef = useRef<any>({}) // same as formState\n    const { user } = useContext(userContext);\n    const [isSelf, setIsSelf] = useState(false);\n\n    const [tableData, setTableData] = useApiTableData()\n    const [isWrite, setIsWrite] = useState(false)\n\n    useImperativeHandle(ref, () => ({\n        open: () => {\n            setEditShow(true)\n            setDelShow(false)\n        }, edit: (tool) => {\n            fromDataRef.current = tool\n            setFormState({\n                toolName: tool.name,\n                schemaContent: tool.openapi_schema,\n                authType: tool.auth_type,\n                apiKey: tool.api_key,\n                authMethod: tool.auth_method === 1 ? 'apikey' : 'none',\n                customHeader: \"\",\n                apiLocation: tool.api_location || \"query\",\n                parameter: tool.parameter_name || \"\"\n            })\n            setIsWrite(tool.write)\n\n            setIsSelf(tool.user_id === user.user_id);\n            setEditShow(true)\n            setDelShow(true)\n\n            setTableData(tool.children)\n        }\n    }));\n\n    const handleInputChange = (e) => {\n        const { name, value } = e.target;\n        setFormState(prevState => ({\n            ...prevState,\n            [name]: value\n        }));\n    };\n\n    // sendRequest to backend to get Schema\n    const handleImportSchema = () => {\n        // http://192.168.106.120:3002/openapi-test.json\n        captureAndAlertRequestErrorHoc(downloadToolSchema({ download_url: schemaUrl.current })).then(res => {\n            schemaUrl.current = ''\n            if (!res) return\n            fromDataRef.current = { ...res, id: fromDataRef.current.id }\n            const fetchedSchema = res.openapi_schema; // replace with the template\n            setFormState(prevState => ({\n                ...prevState,\n                schemaContent: fetchedSchema,\n                authMethod: res.auth_method === 1 ? 'apikey' : 'none',\n                authType: res.auth_type,\n                apiLocation: res.api_location,\n                parameter: res.parameter_name\n            }))\n\n            setTableData(res.children)\n        })\n    };\n\n    // set schemaContent\n    const handleSelectTemplate = (key = '') => {\n        if (!editShow) return\n\n        const file_content = key ? Example[key] : formState.schemaContent\n        file_content && captureAndAlertRequestErrorHoc(downloadToolSchema({ file_content })).then(res => {\n            schemaUrl.current = ''\n            if (!res) return\n            fromDataRef.current = { ...res, id: fromDataRef.current.id }\n            const fetchedSchema = res.openapi_schema; // replace with the template\n            setFormState(prevState => ({\n                ...prevState,\n                schemaContent: fetchedSchema,\n                authMethod: res.auth_method === 1 ? 'apikey' : 'none',\n                authType: res.auth_type,\n                apiLocation: res.api_location,\n                parameter: res.parameter_name\n            }));\n\n            setTableData(res.children)\n        })\n    };\n\n    const { message } = useToast()\n    // save api\n    const handleSave = () => {\n        const errors = [];\n\n        if (!formState.toolName) {\n            errors.push(t('tools.toolNameCannotBeEmpty'));\n        }\n        if (!formState.schemaContent) {\n            errors.push(t('tools.schemaCannotBeEmpty'));\n        }\n        if (formState.authMethod === \"apikey\") {\n            if (!formState.apiKey?.trim()) {\n                errors.push(t('tools.apiKeyCannotBeEmpty'));\n            } else if (formState.apiKey.length > 1000) {\n                errors.push(t('tools.apiKeyMaxLengthExceeded'));\n            }\n\n            if (formState.authType === 'custom') {\n                if (!formState.parameter) {\n                    errors.push(t('tools.parameterNameCannotBeEmpty'));\n                } else if (formState.parameter.length > 1000) {\n                    errors.push(t('tools.parameterNameMaxLengthExceeded'));\n                }\n            }\n        }\n\n        if (errors.length > 0) {\n            return message({\n                description: errors,\n                variant: \"warning\"\n            });\n        }\n\n\n        const fromData = fromDataRef.current\n        // merge formState\n        const data = {\n            ...fromData,\n            api_key: formState.apiKey || fromData.api_key,\n            auth_method: formState.authMethod === 'apikey' ? 1 : 0,\n            auth_type: formState.authType,\n            name: formState.toolName,\n            openapi_schema: formState.schemaContent,\n            api_location: formState.apiLocation,\n            parameter_name: formState.parameter\n        }\n\n        const methodApi = delShow ? updateTool : createTool\n        captureAndAlertRequestErrorHoc(methodApi(data)).then(res => {\n            if (!res) return\n            // save\n            setEditShow(false)\n            props.onReload()\n            message({\n                description: t('skills.saveSuccessful'),\n                variant: \"success\"\n            })\n        })\n    };\n\n    // del tool\n    const handleDelete = () => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('skills.deleteSure'),\n            onOk(next) {\n                // api\n                captureAndAlertRequestErrorHoc(deleteTool(fromDataRef.current.id)).then(res => {\n                    if (res === false) return\n                    props.onReload()\n                    setEditShow(false)\n                    next()\n                })\n            }\n        })\n    }\n\n    // test\n    const testDialogRef = useRef(null)\n    const handleTest = (obj) => {\n        testDialogRef.current.open(obj)\n    }\n    const { t } = useTranslation()\n\n    return <div>\n        <Sheet open={editShow} onOpenChange={setEditShow}>\n            <SheetContent className=\"w-[800px] sm:max-w-[800px] p-4 bg-background-login\">\n                <SheetHeader>\n                    <SheetTitle>{delShow ? t('edit') : t('create')}{t('tools.createCustomTool')}</SheetTitle>\n                </SheetHeader>\n                <div className=\"mt-4 overflow-y-auto h-screen pb-40\">\n                    {/* name */}\n                    <label htmlFor=\"open\" className=\"px-6\">{t('tools.name')}</label>\n                    <div className=\"px-6 mb-4\" >\n                        <Input\n                            id=\"toolName\"\n                            name=\"toolName\"\n                            className=\"mt-2\"\n                            placeholder={t('tools.enterToolName')}\n                            value={formState.toolName}\n                            onChange={handleInputChange}\n                        />\n                    </div>\n                    {/* schema */}\n                    <div className=\"px-6 flex items-center justify-between\">\n                        <label htmlFor=\"open\">OpenAPI Schema</label>\n                        <div className=\"flex gap-2\">\n                            <Popover>\n                                <PopoverTrigger asChild>\n                                    <Button variant=\"outline\" className=\"dark:bg-[#282828]\"><Plus /> {t('tools.importFromUrl')}</Button>\n                                </PopoverTrigger>\n                                <PopoverContent className=\"w-80\" align=\"end\">\n                                    <div className=\"flex items-center gap-4\">\n                                        <Input\n                                            id=\"schemaUrl\"\n                                            name=\"schemaUrl\"\n                                            placeholder=\"https://\"\n                                            onChange={(e) => schemaUrl.current = e.target.value}\n                                        />\n                                        <PopoverClose>\n                                            <Button size=\"sm\" className=\"w-16\" onClick={handleImportSchema}>{t('skills.import')}</Button>\n                                        </PopoverClose>\n                                    </div>\n                                </PopoverContent>\n                            </Popover>\n                            <Select value=\"1\" onValueChange={(k) => handleSelectTemplate(k)}>\n                                <SelectTrigger >\n                                    <span>{t('tools.examples')}</span>\n                                </SelectTrigger>\n                                <SelectContent>\n                                    <SelectGroup>\n                                        <SelectItem value=\"json\">{t('tools.weatherJson')}</SelectItem>\n                                        <SelectItem value=\"yaml\">{t('tools.petShopYaml')}</SelectItem>\n                                    </SelectGroup>\n                                </SelectContent>\n                            </Select>\n                        </div>\n                    </div>\n                    <div className=\"px-6 mb-4\" >\n                        <Textarea\n                            id=\"schemaContent\"\n                            name=\"schemaContent\"\n                            placeholder={t('tools.enterOpenAPISchema')}\n                            className=\"mt-2 min-h-52\"\n                            value={formState.schemaContent}\n                            onChange={handleInputChange}\n                            onBlur={() => handleSelectTemplate()}\n                        />\n                    </div>\n                    <label htmlFor=\"open\" className=\"px-6\">{t('tools.authenticationType')}</label>\n                    <div className=\"px-6\">\n                        <div className=\"px-6 mb-4\" >\n                            <label htmlFor=\"open\" className=\"bisheng-label\">{t('tools.authType')}</label>\n                            <RadioGroup\n                                id=\"authMethod\"\n                                name=\"authMethod\"\n                                value={formState.authMethod}\n                                className=\"flex mt-2 gap-4\"\n                                onValueChange={(value) => setFormState(prevState => ({ ...prevState, authMethod: value }))}\n                            >\n                                <div className=\"flex items-center space-x-2\">\n                                    <RadioGroupItem value=\"none\" id=\"r1\" />\n                                    <Label htmlFor=\"r1\">{t('tools.none')}</Label>\n                                </div>\n                                <div className=\"flex items-center space-x-2\">\n                                    <RadioGroupItem value=\"apikey\" id=\"r2\" />\n                                    <Label htmlFor=\"r2\">{t('tools.apiKey')}</Label>\n                                </div>\n                            </RadioGroup>\n                        </div>\n                        {formState.authMethod === \"apikey\" && (<>\n                            <div className=\"px-6 mb-4\" >\n                                <Label htmlFor=\"open\" className=\"bisheng-label flex items-center gap-1\">\n                                    {t('tools.authTypeLabel')}\n                                    <QuestionTooltip content={<div>\n                                        <p>{t('tools.basicBearerDescription')}</p>\n                                        <p>{t('tools.customDescription')}</p>\n                                    </div>} />\n                                </Label>\n                                <RadioGroup\n                                    id=\"authType\"\n                                    name=\"authType\"\n                                    value={formState.authType}\n                                    className=\"flex mt-2 gap-4\"\n                                    onValueChange={(value) => setFormState(prevState => ({ ...prevState, authType: value }))}\n                                >\n                                    <div className=\"flex items-center space-x-2\">\n                                        <RadioGroupItem value=\"basic\" id=\"r4\" />\n                                        <Label htmlFor=\"r4\">{t('tools.basic')}</Label>\n                                    </div>\n                                    <div className=\"flex items-center space-x-2\">\n                                        <RadioGroupItem value=\"bearer\" id=\"r5\" />\n                                        <Label htmlFor=\"r5\">{t('tools.bearer')}</Label>\n                                    </div>\n                                    <div className=\"flex items-center space-x-2\">\n                                        <RadioGroupItem value=\"custom\" id=\"r6\" />\n                                        <Label htmlFor=\"r6\">{t('tools.custom')}</Label>\n                                    </div>\n                                </RadioGroup>\n                            </div>\n                            {formState.authType === \"custom\" && <>\n                                <div className=\"px-6 mb-4\" >\n                                    <Label htmlFor=\"apiLocation\" className=\"bisheng-label flex items-center gap-1\">\n                                        {t('tools.apiLocationLabel')}\n                                        <QuestionTooltip content={<div>\n                                            <p>{t('tools.headerDescription')}</p>\n                                            <p>{t('tools.queryDescription')}</p>\n                                        </div>} />\n                                    </Label>\n                                    <RadioGroup\n                                        id=\"apiLocation\"\n                                        name=\"apiLocation\"\n                                        value={formState.apiLocation}\n                                        className=\"flex mt-2 gap-4\"\n                                        onValueChange={(value) => setFormState(prevState => ({\n                                            ...prevState, apiLocation: value\n                                        }))}\n                                    >\n                                        <div className=\"flex items-center space-x-2\">\n                                            <RadioGroupItem value=\"header\" id=\"r7\" />\n                                            <Label htmlFor=\"r7\">{t('tools.header')}</Label>\n                                        </div>\n                                        <div className=\"flex items-center space-x-2\">\n                                            <RadioGroupItem value=\"query\" id=\"r8\" />\n                                            <Label htmlFor=\"r8\">{t('tools.query')}</Label>\n                                        </div>\n                                    </RadioGroup>\n                                </div>\n                                <div className=\"px-6 mb-4\">\n                                    <Label className=\"bisheng-label\" htmlFor=\"parameter\">\n                                        <span className=\"text-red-500\">*</span> {t('tools.parameterName')}\n                                    </Label>\n                                    <Input\n                                        id=\"parameter\"\n                                        name=\"parameter\"\n                                        className=\"mt-2\"\n                                        placeholder={t('tools.parameterPlaceholder')}\n                                        value={formState.parameter}\n                                        onChange={handleInputChange}\n                                    />\n                                </div>\n                            </>}\n                            <div className=\"px-6 mb-4\">\n                                <Label className=\"bisheng-label\" htmlFor=\"apiKey\">\n                                    <span className=\"text-red-500\">*</span> {t('tools.apiKeyLabel')}\n                                </Label>\n                                <Input\n                                    id=\"apiKey\"\n                                    name=\"apiKey\"\n                                    className=\"mt-2\"\n                                    placeholder={t('tools.apiKeyPlaceholder')}\n                                    value={formState.apiKey}\n                                    onChange={handleInputChange}\n                                />\n                            </div>\n                        </>)}\n                    </div>\n                    <label htmlFor=\"open\" className=\"px-6\">{t('tools.availableTools')}</label>\n                    <div className=\"px-6 mb-4\" >\n                        <Table>\n                            <TableHeader>\n                                <TableRow>\n                                    <TableHead className=\"w-[100px]\">{t('tools.name')}</TableHead>\n                                    <TableHead >{t('tools.description')}</TableHead>\n                                    <TableHead >{t('tools.method')}</TableHead>\n                                    <TableHead >{t('tools.path')}</TableHead>\n                                    <TableHead >{t('operations')}</TableHead>\n                                </TableRow>\n                            </TableHeader>\n                            <TableBody>\n                                {\n                                    tableData.length ? tableData.map((item, index) =>\n                                        <TableRow key={index}>\n                                            <TableCell>{item.name}</TableCell>\n                                            <TableCell>{item.desc}</TableCell>\n                                            <TableCell>{item.extra.method}</TableCell>\n                                            <TableCell>{item.extra.path}</TableCell>\n                                            <TableCell>\n                                                <Button\n                                                    size=\"sm\"\n                                                    variant=\"outline\"\n                                                    className=\"dark:bg-[#666]\"\n                                                    onClick={() => {\n                                                        testDialogRef.current.open(item, fromDataRef.current, formState)\n                                                    }\n                                                    }\n                                                >{t('test.test')}</Button>\n                                            </TableCell>\n                                        </TableRow>\n                                    ) :\n                                        <TableRow>\n                                            <TableCell colSpan={5}>{t('tools.none')}</TableCell>\n                                        </TableRow>\n                                }\n                            </TableBody>\n                        </Table>\n                    </div>\n                </div>\n                <label htmlFor=\"open\" className=\"px-6\">{t('tools.authenticationType')}</label>\n                <div className=\"px-6\">\n                    <div className=\"px-6 mb-4\" >\n                        <label htmlFor=\"open\" className=\"bisheng-label\">{t('tools.authType')}</label>\n                        <RadioGroup\n                            id=\"authMethod\"\n                            name=\"authMethod\"\n                            defaultValue=\"none\"\n                            className=\"flex mt-2 gap-4\"\n                            onValueChange={(value) => setFormState(prevState => ({ ...prevState, authMethod: value }))}\n                        >\n                            <div className=\"flex items-center space-x-2\">\n                                <RadioGroupItem value=\"none\" id=\"r1\" />\n                                <Label htmlFor=\"r1\">{t('tools.none')}</Label>\n                            </div>\n                            <div className=\"flex items-center space-x-2\">\n                                <RadioGroupItem value=\"apikey\" id=\"r2\" />\n                                <Label htmlFor=\"r2\">{t('tools.apiKey')}</Label>\n                            </div>\n                        </RadioGroup>\n                    </div>\n                    {formState.authMethod === \"apikey\" && (\n                        <div className=\"px-6 mb-4\">\n                            <label htmlFor=\"apiKey\">{t('tools.apiKey')}</label>\n                            <Input\n                                id=\"apiKey\"\n                                name=\"apiKey\"\n                                className=\"mt-2\"\n                                value={formState.apiKey}\n                                onChange={handleInputChange}\n                            />\n                        </div>\n                    )}\n                </div>\n                <SheetFooter className=\"absolute bottom-0 right-0 w-full px-6 py-4\">\n                    {delShow && (user.role === 'admin' || isSelf || isWrite) && (\n                        <Button\n                            size=\"sm\"\n                            variant=\"destructive\"\n                            className=\"absolute left-6\"\n                            onClick={handleDelete}\n                        >{t('tools.delete')}</Button>\n                    )}\n                    <Button size=\"sm\" variant=\"outline\" onClick={() => setEditShow(false)}>{t('tools.cancel')}</Button>\n                    <Button size=\"sm\" className=\"text-[white]\" onClick={handleSave}>{t('tools.save')}</Button>\n                </SheetFooter>\n            </SheetContent>\n        </Sheet >\n        {/* test dialog */}\n        <TestDialog ref={testDialogRef} />\n    </div>\n})\n\nexport default EditTool\n\nconst useApiTableData = () => {\n    const [tableData, setTableData] = useState([])\n\n    const setData = (objs) => {\n        const newObjs = objs.map(obj => {\n            return {\n                ...obj,\n                extra: JSON.parse(obj.extra)\n            }\n        })\n\n        setTableData(newObjs)\n    }\n\n    return [\n        tableData,\n        setData\n    ] as const\n}\n\n\n// 示例\nconst Example = {\n    'json': `{\n        \"openapi\": \"3.1.0\",\n        \"info\": {\n          \"title\": \"Get weather data\",\n          \"description\": \"Retrieves current weather data for a location.\",\n          \"version\": \"v1.0.0\"\n        },\n        \"servers\": [\n          {\n            \"url\": \"https://weather.example.com\"\n          }\n        ],\n        \"paths\": {\n          \"/location\": {\n            \"get\": {\n              \"summary\": \"\",\n              \"description\": \"Get temperature for a specific location\",\n              \"operationId\": \"GetCurrentWeather\",\n              \"parameters\": [\n                {\n                  \"name\": \"location\",\n                  \"in\": \"query\",\n                  \"description\": \"The city and state to retrieve the weather for\",\n                  \"required\": true,\n                  \"schema\": {\n                    \"type\": \"string\"\n                  }\n                }\n              ],\n              \"deprecated\": false\n            }\n          }\n        },\n        \"components\": {\n          \"schemas\": {}\n        }\n      }`,\n    'yaml': `# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml\n\n    openapi: \"3.0.0\"\n    info:\n      version: 1.0.0\n      title: Swagger Petstore\n      license:\n        name: MIT\n    servers:\n      - url: https://petstore.swagger.io/v1\n    paths:\n      /pets:\n        get:\n          summary: List all pets\n          operationId: listPets\n          tags:\n            - pets\n          parameters:\n            - name: limit\n              in: query\n              description: How many items to return at one time (max 100)\n              required: false\n              schema:\n                type: integer\n                maximum: 100\n                format: int32\n          responses:\n            '200':\n              description: A paged array of pets\n              headers:\n                x-next:\n                  description: A link to the next page of responses\n                  schema:\n                    type: string\n              content:\n                application/json:    \n                  schema:\n                    $ref: \"#/components/schemas/Pets\"\n            default:\n              description: unexpected error\n              content:\n                application/json:\n                  schema:\n                    $ref: \"#/components/schemas/Error\"\n        post:\n          summary: Create a pet\n          operationId: createPets\n          tags:\n            - pets\n          responses:\n            '201':\n              description: Null response\n            default:\n              description: unexpected error\n              content:\n                application/json:\n                  schema:\n                    $ref: \"#/components/schemas/Error\"\n      /pets/{petId}:\n        get:\n          summary: Info for a specific pet\n          operationId: showPetById\n          tags:\n            - pets\n          parameters:\n            - name: petId\n              in: path\n              required: true\n              description: The id of the pet to retrieve\n              schema:\n                type: string\n          responses:\n            '200':\n              description: Expected response to a valid request\n              content:\n                application/json:\n                  schema:\n                    $ref: \"#/components/schemas/Pet\"\n            default:\n              description: unexpected error\n              content:\n                application/json:\n                  schema:\n                    $ref: \"#/components/schemas/Error\"\n    components:\n      schemas:\n        Pet:\n          type: object\n          required:\n            - id\n            - name\n          properties:\n            id:\n              type: integer\n              format: int64\n            name:\n              type: string\n            tag:\n              type: string\n        Pets:\n          type: array\n          maxItems: 100\n          items:\n            $ref: \"#/components/schemas/Pet\"\n        Error:\n          type: object\n          required:\n            - code\n            - message\n          properties:\n            code:\n              type: integer\n              format: int32\n            message:\n              type: string`,\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/ToolItem.tsx",
    "content": "import { TitleIconBg } from \"@/components/bs-comp/cardComponent\";\nimport { SettingIcon } from \"@/components/bs-icons/setting\";\nimport { ToolIcon } from \"@/components/bs-icons/tool\";\nimport {\n    AccordionContent,\n    AccordionItem,\n    AccordionTrigger,\n} from \"@/components/bs-ui/accordion\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { CircleHelp } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ToolItem({\n    type,\n    select,\n    data,\n    onEdit = (id) => { },\n    onSelect,\n    onSetClick = null\n}) {\n    const { t } = useTranslation('tool');\n    const sortData = useMemo(() => {\n        const { children, is_preset } = data;\n        if (children) {\n            return is_preset === 2 ? children.sort((a, b) => a.id - b.id) : children;\n        }\n        return [];\n    }, [data.children]);\n\n    return <AccordionItem key={data.id} value={data.id} className=\"data-[state=open]:border-2 data-[state=open]:border-primary/20 data-[state=open]:rounded-md\">\n        <AccordionTrigger className=\"min-w-0\">\n            <div className=\"group flex gap-2 text-start relative pr-4 min-w-0\">\n                <TitleIconBg className=\"w-8 h-8 min-w-8\" id={data.id} ><ToolIcon /></TitleIconBg>\n                <div className=\"flex-1 min-w-0\">\n                    <div className=\"w-full text-sm font-medium leading-none flex items-center gap-2 min-w-0\">\n                        <span className=\"truncate\">\n                            {type ? data.name : t(`categories.${data.name}.name`)}\n                        </span>\n                        {\n                            ['edit', 'mcp'].includes(type) && data.write && <div\n                                className=\"group-hover:opacity-100 opacity-0 hover:bg-[#EAEDF3] rounded cursor-pointer\"\n                                onClick={(e) => onEdit(data.id)}\n                            ><SettingIcon /></div>\n                        }\n                        {\n                            onSetClick && data.write && !['mcp'].includes(type) && <div\n                                className=\"group-hover:opacity-100 opacity-0 hover:bg-[#EAEDF3] rounded cursor-pointer\"\n                                onClick={onSetClick}\n                            ><SettingIcon /></div>\n                        }\n                    </div>\n                    <p className=\"text-sm text-muted-foreground mt-2\">{type ? data.description : t(`categories.${data.name}.desc`)}</p>\n                </div>\n            </div>\n        </AccordionTrigger>\n        <AccordionContent className=\"\">\n            <div className=\"px-6 mb-4\">\n                {sortData.map(api => (\n                    <div key={api.name} className=\"relative p-4 rounded-sm  border-t\">\n                        <h1 className=\"text-sm font-medium leading-none\">{type ? api.name : t(`tools.${api.tool_key}.name`)}</h1>\n                        <p className=\"text-sm text-muted-foreground mt-2\">{type ? api.name : t(`tools.${api.tool_key}.desc`)}</p>\n                        {\n                            api.api_params?.length > 0 && <p className=\"text-sm text-muted-foreground mt-2 flex gap-2\">\n                                <TooltipProvider>\n                                    <Tooltip delayDuration={100}>\n                                        <TooltipTrigger asChild>\n                                            <span className=\"text-primary cursor-pointer flex items-center\">{t(\"build.params\", { ns: 'bs' })}<CircleHelp className=\"size-3\" /></span>\n                                        </TooltipTrigger>\n                                        <TooltipContent side=\"right\" className=\"bg-gray-50 border shadow-md p-4 text-gray-950 max-w-[520px]\">\n                                            {/* todo  JSON.parse(api.extra) move to api ctr */}\n                                            <p className=\"flex gap-2 items-center\"><Badge>{JSON.parse(api.extra)?.method || 'http'}</Badge><span className=\"text-xl\">{type ? api.name : t(`tools.${api.tool_key}.name`)}</span></p>\n                                            <p className=\"text-sm mt-2 text-gray-500\">{type ? api.name : t(`tools.${api.tool_key}.desc`)}</p>\n                                            {\n                                                api.api_params.map(param => (\n                                                    <div key={param.name}>\n                                                        <p className=\"flex gap-2 items-center mt-4 mb-2\">\n                                                            <span className=\"text-base\">{param.name}</span>\n                                                            <span>{param.schema?.type}</span>\n                                                            {param.required && <span className=\"text-red-500\">{t('report.requiredLabel', { ns: 'bs' })}</span>}\n                                                        </p>\n                                                        <p className=\"text-gray-500\">{type ? param.name : t(`tools.${api.tool_key}.params.${param.name}`)}</p>\n                                                    </div>\n                                                ))\n                                            }\n                                        </TooltipContent>\n                                    </Tooltip>\n                                </TooltipProvider>\n                                :\n                                {\n                                    api.api_params.map(param => (\n                                        <div>\n                                            <span className=\" rounded-xl bg-gray-200 dark:bg-background-login px-2 py-1 text-xs font-medium\">{param.name}</span>\n                                            {/* <span>{param.schema.type}</span> */}\n                                        </div>\n                                    ))\n                                }\n                            </p>\n                        }\n                        {\n                            select && (select.some(_ => _.id === api.id) ?\n                                <Button size=\"sm\" className=\"absolute right-4 bottom-2 h-6\" disabled>{t(\"build.added\", { ns: 'bs' })}</Button>\n                                : <Button size=\"sm\" className=\"absolute right-4 bottom-2 h-6\" onClick={() => onSelect(api)}>{t(\"build.add\", { ns: 'bs' })}</Button>)\n                        }\n                    </div>\n                ))}\n            </div>\n        </AccordionContent>\n    </AccordionItem >\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/ToolSet.tsx",
    "content": "import { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { updateToolApi } from \"@/controllers/API/tools\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport BingToolForm from \"./builtInTool/BingSearch\";\nimport CodeExecutor from \"./builtInTool/CodeExecutor\";\nimport CrawlerConfigForm from \"./builtInTool/CrawlerConfig\";\nimport Dalle3ToolForm from \"./builtInTool/Dalle3\";\nimport EmailConfigForm from \"./builtInTool/EmailConfig\";\nimport FeishuConfigForm from \"./builtInTool/FeishuConfig\";\nimport JinaApiKeyForm from \"./builtInTool/JinaConfig\";\nimport SiliconFlowApiKeyForm from \"./builtInTool/SiliconFlowApiKey\";\nimport TianyanchaToolForm from \"./builtInTool/Tianyancha\";\nimport WebSearchForm from \"./builtInTool/WebSearchFrom\";\nimport { useWebSearchStore } from './webSearchStore';\nimport FinancialDataToolForm from \"./builtInTool/FinancialData\";\nconst ToolSet = forwardRef(function ToolSet({ onChange }, ref) {\n    const [open, setOpen] = useState(false);\n    const { t } = useTranslation();\n    const [formData, setFormData] = useState(null)\n    const { message } = useToast();\n    // {\n    //     provider: 'openai',\n    //     openai_api_key: '',\n    //     azure_api_key: '',\n    //     openai_api_base: 'https://api.openai.com/v1',\n    //     openai_proxy: '',\n    //     bing_subscription_key: '',\n    //     bing_search_url: 'https://api.bing.microsoft.com/v7.0/search',\n    //     azure_deployment: '',\n    //     azure_endpoint: '',\n    //     openai_api_version: ''\n    // });\n    const idRef = useRef('');\n    const [name, setName] = useState('');\n    const { setConfig } = useWebSearchStore()\n\n    useImperativeHandle(ref, () => ({\n\n        edit: (item) => {\n\n            setName(item.name);\n            idRef.current = item.id;\n            let config = {};\n            try {\n                if (item.extra) {\n                    config = JSON.parse(item.extra);\n                    console.log('Parsed extra config:', config);\n                }\n            } catch (e) {\n                console.error('api error');\n            }\n            setFormData(config);\n            setOpen(true);\n        }\n    }));\n\n\n\n    const handleSubmit = async (formdata) => {\n        await updateToolApi(idRef.current, formdata)\n        setConfig(formdata)\n        setOpen(false)\n        onChange()\n    }\n\n    // const getFieldsToSubmit = () => {\n    //     const fields = {};\n    //     if (name === 'Dalle3绘画') {\n    //         if (formData.provider === 'openai') {\n    //             fields.openai_api_key = formData.openai_api_key;\n    //             fields.openai_api_base = formData.openai_api_base;\n    //             fields.openai_proxy = formData.openai_proxy;\n    //         } else {\n    //             fields.openai_api_key = formData.azure_api_key;\n    //             fields.azure_deployment = formData.azure_deployment;\n    //             fields.azure_endpoint = formData.azure_endpoint;\n    //             fields.openai_api_version = formData.openai_api_version;\n    //             fields.openai_api_type = 'azure';\n    //         }\n    //     } else if (name === 'Bing web搜索') {\n    //         fields.bing_subscription_key = formData.bing_subscription_key;\n    //         fields.bing_search_url = formData.bing_search_url;\n    //     } else if (name === '天眼查') {\n    //         fields.api_key = formData.api_key;\n    //     }\n    //     return fields;\n    // };\n\n    const handleCancel = () => {\n        setOpen(false);\n    };\n\n    const renderFormContent = () => {\n        switch (name) {\n            case 'Dalle3绘画':\n                return <Dalle3ToolForm formData={formData} onSubmit={handleSubmit} />;\n            case 'Firecrawl':\n                return <CrawlerConfigForm formData={formData} onSubmit={handleSubmit} />;\n            case 'Jina AI':\n                return <JinaApiKeyForm formData={formData} onSubmit={handleSubmit} />;\n            case 'SiliconFlow':\n                return <SiliconFlowApiKeyForm formData={formData} onSubmit={handleSubmit} />;\n            case '发送邮件':\n                return <EmailConfigForm formData={formData} onSubmit={handleSubmit} />;\n            case '飞书消息':\n                return <FeishuConfigForm formData={formData} onSubmit={handleSubmit} />;\n            case 'Bing web搜索':\n                return <BingToolForm formData={formData} onSubmit={handleSubmit} />;\n            case '天眼查':\n                return <TianyanchaToolForm formData={formData} onSubmit={handleSubmit} />;\n            case '联网搜索':\n                return <WebSearchForm formData={formData} onSubmit={handleSubmit} />;\n            case '代码执行器':\n                return <CodeExecutor formData={formData} onSubmit={handleSubmit} />;\n            case '经济金融数据':\n                return <FinancialDataToolForm formData={formData} onSubmit={handleSubmit} />;\n            default:\n                return null;\n        }\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={setOpen}>\n            <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n                <DialogHeader>\n                    <DialogTitle>{t('build.editTool')}</DialogTitle>\n                </DialogHeader>\n                {renderFormContent()}\n            </DialogContent>\n        </Dialog>\n    );\n});\n\nexport default ToolSet;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/BingSearch.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst temp = {\n    bing_subscription_key: '',\n    bing_search_url: 'https://api.bing.microsoft.com/v7.0/search',\n}\n\nconst BingToolForm = ({ formData, onSubmit }) => {\n    const { t } = useTranslation();\n    const [localFormData, setLocalFormData] = useState(() => ({ ...temp, ...formData }));\n    const [errors, setErrors] = useState({});\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n        if (!localFormData.bing_subscription_key) {\n            formErrors.bing_subscription_key = true;\n            isValid = false;\n        }\n        if (!localFormData.bing_search_url) {\n            formErrors.bing_search_url = true;\n            isValid = false;\n        }\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\" autoComplete=\"off\">\n            <InputField\n                required\n                label=\"Bing Subscription Key\"\n                type=\"password\"\n                id=\"bing_subscription_key\"\n                name=\"bing_subscription_key\"\n                value={localFormData.bing_subscription_key}\n                onChange={handleChange}\n                error={errors.bing_subscription_key}\n            />\n            <InputField\n                required\n                label=\"Bing Search URL\"\n                id=\"bing_search_url\"\n                name=\"bing_search_url\"\n                value={localFormData.bing_search_url}\n                onChange={handleChange}\n                error={errors.bing_search_url}\n            />\n\n            {/*  DialogFooter */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('build.cancel')}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('build.confirm')}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default BingToolForm;\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/CodeExecutor.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\r\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\r\nimport { PassInput } from '@/components/bs-ui/input';\r\nimport { Label } from \"@/components/bs-ui/label\";\r\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\r\nimport { QuestionTooltip } from '@/components/bs-ui/tooltip';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { InputField } from \"./InputField\";\r\n\r\nconst Dalle3ToolForm = ({ formData, onSubmit }) => {\r\n    const { t } = useTranslation('tool');\r\n    const domainRef = useRef(null);\r\n    const apiKeyRef = useRef(null);\r\n\r\n    const [localFormData, setLocalFormData] = useState(() => {\r\n        // Extract all configurations from form data\r\n        const executionMode = formData.type || 'local';\r\n        const serviceProvider = formData.config?.e2b?.type || 'private';\r\n\r\n        // Get both configurations at the same time\r\n        const privateDomain = formData.config?.private?.domain || formData.config?.e2b_private?.domain || '';\r\n        const privateApiKey = formData.config?.private?.api_key || formData.config?.e2b_private?.api_key || '';\r\n        const officialApiKey = formData.config?.official?.api_key || formData.config?.e2b_official?.api_key || '';\r\n\r\n        return {\r\n            executionMode,\r\n            serviceProvider,\r\n            privateDomain,\r\n            privateApiKey,\r\n            officialApiKey\r\n        };\r\n    });\r\n\r\n    const [errors, setErrors] = useState({});\r\n\r\n    useEffect(() => {\r\n        if (domainRef.current) {\r\n            domainRef.current.value = '';\r\n        }\r\n        if (apiKeyRef.current) {\r\n            apiKeyRef.current.value = '';\r\n        }\r\n    }, []);\r\n\r\n    const handleChange = (e) => {\r\n        const { name, value } = e.target;\r\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\r\n    };\r\n\r\n    const handleExecutionModeChange = (value) => {\r\n        setLocalFormData((prev) => ({ ...prev, executionMode: value }));\r\n    };\r\n\r\n    const handleServiceProviderChange = (value) => {\r\n        setLocalFormData((prev) => ({ ...prev, serviceProvider: value }));\r\n    };\r\n\r\n    const validateForm = () => {\r\n        const formErrors = {};\r\n        let isValid = true;\r\n\r\n        if (localFormData.executionMode === 'e2b') {\r\n            // Validate configuration of the currently selected service provider\r\n            if (localFormData.serviceProvider === 'private') {\r\n                if (!localFormData.privateDomain) {\r\n                    formErrors.privateDomain = t('domainCannotBeEmpty');\r\n                    isValid = false;\r\n                }\r\n                if (!localFormData.privateApiKey) {\r\n                    formErrors.privateApiKey = t('apiKeyCannotBeEmpty');\r\n                    isValid = false;\r\n                }\r\n            } else {\r\n                if (!localFormData.officialApiKey) {\r\n                    formErrors.officialApiKey = t('apiKeyCannotBeEmpty');\r\n                    isValid = false;\r\n                }\r\n            }\r\n        }\r\n        setErrors(formErrors);\r\n        return isValid;\r\n    };\r\n\r\n    const handleSubmit = (e) => {\r\n        e.preventDefault();\r\n        if (validateForm()) {\r\n            // Build complete form data and save both configurations\r\n            const submitData = {\r\n                type: localFormData.executionMode,\r\n                config: {\r\n                    e2b: {\r\n                        type: localFormData.serviceProvider,\r\n                        // Save configuration according to the selected service provider\r\n                        ...(localFormData.serviceProvider === 'private' && {\r\n                            domain: localFormData.privateDomain,\r\n                            api_key: localFormData.privateApiKey\r\n                        }),\r\n                        ...(localFormData.serviceProvider === 'official' && {\r\n                            api_key: localFormData.officialApiKey\r\n                        })\r\n                    },\r\n                    // Save both configurations\r\n                    private: {\r\n                        domain: localFormData.privateDomain,\r\n                        api_key: localFormData.privateApiKey\r\n                    },\r\n                    official: {\r\n                        api_key: localFormData.officialApiKey\r\n                    }\r\n                }\r\n            };\r\n\r\n            onSubmit(submitData);\r\n        }\r\n    };\r\n\r\n    return (\r\n        <>\r\n            <div className=\"mb-6\">\r\n                <Label className=\" mb-3 mt-4 block\">\r\n                    {t('executionModeLabel')}\r\n                </Label>\r\n                <RadioGroup\r\n                    value={localFormData.executionMode}\r\n                    className=\"flex gap-6\"\r\n                    onValueChange={handleExecutionModeChange}\r\n                >\r\n                    <div className=\"flex items-center space-x-2\">\r\n                        <RadioGroupItem value=\"local\" id=\"execution-local\" />\r\n                        <Label htmlFor=\"execution-local\">\r\n                            {t('executionLocalLabel')}\r\n                        </Label>\r\n                    </div>\r\n                    <div className=\"flex items-center space-x-2\">\r\n                        <RadioGroupItem value=\"e2b\" id=\"execution-e2b\" />\r\n                        <Label htmlFor=\"execution-e2b\">\r\n                            {t('executionE2bLabel')}\r\n                        </Label>\r\n                    </div>\r\n                </RadioGroup>\r\n            </div>\r\n\r\n            {/* Show configuration only when E2B sandbox execution is selected */}\r\n            {localFormData.executionMode === 'e2b' && (\r\n                <div className=\"space-y-4\">\r\n                    <div>\r\n                        <Label className=\"mb-3 block\">\r\n                            {t('serviceProviderLabel')}\r\n                        </Label>\r\n                        <RadioGroup\r\n                            value={localFormData.serviceProvider}\r\n                            className=\"flex gap-6\"\r\n                            onValueChange={handleServiceProviderChange}\r\n                        >\r\n                            <div className=\"flex items-center space-x-2\">\r\n                                <RadioGroupItem value=\"private\" id=\"provider-private\" />\r\n                                <Label htmlFor=\"provider-private\">\r\n                                    {t('providerPrivateLabel')}{' '}\r\n                                    <QuestionTooltip content={t('providerPrivateTooltip')} />\r\n                                </Label>\r\n                            </div>\r\n                            <div className=\"flex items-center space-x-2\">\r\n                                <RadioGroupItem value=\"official\" id=\"provider-official\" />\r\n                                <Label htmlFor=\"provider-official\">\r\n                                    {t('providerOfficialLabel')}{' '}\r\n                                    <QuestionTooltip content={t('providerOfficialTooltip')} />\r\n                                </Label>\r\n                            </div>\r\n                        </RadioGroup>\r\n                    </div>\r\n\r\n                    {localFormData.serviceProvider === 'private' && (\r\n                        <InputField\r\n                            required\r\n                            label={<Label>Domain</Label>}\r\n                            id=\"e2b-domain-input\"\r\n                            name=\"privateDomain\"\r\n                            placeholder=\"https://e2b.internal.mycorp\"\r\n                            value={localFormData.privateDomain}\r\n                            onChange={handleChange}\r\n                            error={errors.privateDomain}\r\n                        />\r\n                    )}\r\n\r\n                    <PassInput\r\n                        required\r\n                        id=\"e2b-apikey-input\"\r\n                        label={<Label>API Key</Label>}\r\n                        placeholder={t('enterApiKeyPlaceholder')}\r\n                        type='text'\r\n                        name={localFormData.serviceProvider === 'private' ? 'privateApiKey' : 'officialApiKey'}\r\n                        onChange={handleChange}\r\n                        value={localFormData.serviceProvider === 'private' ? localFormData.privateApiKey : localFormData.officialApiKey}\r\n                        error={localFormData.serviceProvider === 'private' ? errors.privateApiKey : errors.officialApiKey}\r\n                    />\r\n                </div>\r\n            )}\r\n\r\n            <DialogFooter className=\"mt-6\">\r\n                <DialogClose>\r\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\r\n                        {t('cancel', { ns: 'bs' })}\r\n                    </Button>\r\n                </DialogClose>\r\n                <Button className=\"px-11\" onClick={handleSubmit}>\r\n                    {t('save', { ns: 'bs' })}\r\n                </Button>\r\n            </DialogFooter>\r\n        </>\r\n    );\r\n};\r\n\r\nexport default Dalle3ToolForm;\r\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/CrawlerConfig.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst defaultValues = {\n    api_key: '',\n    base_url: 'https://api.firecrawl.dev',\n    timeout: 30000,\n    maxdepth: 2,\n    limit: 100,\n};\n\nconst CrawlerConfigForm = ({ formData, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [localFormData, setLocalFormData] = useState(() => ({ ...defaultValues, ...formData }));\n    const [errors, setErrors] = useState({});\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n        if (!localFormData.api_key) {\n            formErrors.api_key = true;\n            isValid = false;\n        }\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\" autoComplete=\"off\">\n            {/* API Key */}\n            <InputField\n                required\n                label=\"API Key\"\n                type=\"password\"\n                id=\"api_key\"\n                name=\"api_key\"\n                placeholder={t('enterApiKey')}\n                value={localFormData.api_key}\n                onChange={handleChange}\n                error={errors.api_key}\n            />\n\n            {/* Base URL */}\n            <InputField\n                label=\"Base URL\"\n                id=\"base_url\"\n                name=\"base_url\"\n                placeholder=\"https://api.firecrawl.dev\"\n                value={localFormData.base_url}\n                onChange={handleChange}\n            />\n\n            {/* Timeout */}\n            <InputField\n                label=\"Timeout (ms)\"\n                type=\"number\"\n                id=\"timeout\"\n                name=\"timeout\"\n                tooltip={t('timeoutTooltip')}\n                value={localFormData.timeout}\n                onChange={handleChange}\n            />\n\n            <p className='border-t dark:border-gray-700 pt-4 text-sm font-bold'>\n                {t('deepCrawlDetailConfigDescription')}\n            </p>\n\n            {/* Maxdepth */}\n            <InputField\n                label=\"Maxdepth\"\n                type=\"number\"\n                id=\"maxdepth\"\n                name=\"maxdepth\"\n                tooltip={t('maxdepthTooltip')}\n                value={localFormData.maxdepth}\n                onChange={handleChange}\n            />\n\n            {/* Limit */}\n            <InputField\n                label=\"Limit\"\n                type=\"number\"\n                id=\"limit\"\n                name=\"limit\"\n                tooltip={t('limitTooltip')}\n                value={localFormData.limit}\n                onChange={handleChange}\n            />\n\n            {/* Dialog Footer */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('save', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default CrawlerConfigForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/Dalle3.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst temp = {\n    provider: 'openai',\n    openai_api_key: '',\n    openai_api_base: 'https://api.openai.com/v1',\n    openai_proxy: '',\n    azure_deployment: '',\n    azure_endpoint: '',\n    openai_api_version: ''\n}\n\nconst Dalle3ToolForm = ({ formData, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [pro, setPro] = useState('');\n    const [localFormData, setLocalFormData] = useState(() => {\n        if (!formData || Object.keys(formData).length === 0) {\n            return { ...temp };\n        }\n\n        // Determine which configuration to use based on existing fields\n        const hasAzureFields = formData.azure_deployment || formData.azure_endpoint || formData.openai_api_version;\n        const provider = hasAzureFields ? 'azure' : 'openai';\n\n        // Decide which API key to display based on provider type\n        let displayApiKey = '';\n        setPro(provider);\n\n        if (provider === 'openai') {\n            displayApiKey = formData.openai_api_key || '';\n            formData.openai_api_key = displayApiKey;\n        } else {\n            displayApiKey = formData.openai_api_key || '';\n            formData.openai_api_key = displayApiKey;\n        }\n\n        return {\n            ...temp,\n            ...formData,\n            provider,\n            openai_api_key: displayApiKey\n        };\n    });\n\n    const [errors, setErrors] = useState({});\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const handleProviderChange = (value) => {\n        console.log(value, pro, formData.openai_api_key);\n\n        if (value !== pro) {\n            localFormData.openai_api_key = '';\n        } else {\n            localFormData.openai_api_key = formData.openai_api_key;\n        }\n        setLocalFormData((prev) => ({ ...prev, provider: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n\n        if (!localFormData.openai_api_key) {\n            formErrors.openai_api_key = true;\n            isValid = false;\n        }\n\n        if (localFormData.provider === 'azure') {\n            if (!localFormData.azure_deployment) {\n                formErrors.azure_deployment = true;\n                isValid = false;\n            }\n            if (!localFormData.azure_endpoint) {\n                formErrors.azure_endpoint = true;\n                isValid = false;\n            }\n            if (!localFormData.openai_api_version) {\n                formErrors.openai_api_version = true;\n                isValid = false;\n            }\n        }\n\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            // Create submission data based on the currently selected provider\n            let finalData = {};\n\n            if (localFormData.provider === 'openai') {\n                // Only save OpenAI-related fields\n                finalData = {\n                    openai_api_key: localFormData.openai_api_key,\n                    openai_api_base: localFormData.openai_api_base,\n                    openai_proxy: localFormData.openai_proxy\n                };\n            } else {\n                // Only save Azure-related fields\n                finalData = {\n                    openai_api_key: localFormData.openai_api_key,\n                    azure_deployment: localFormData.azure_deployment,\n                    azure_endpoint: localFormData.azure_endpoint,\n                    openai_api_version: localFormData.openai_api_version\n                };\n            }\n\n            onSubmit(finalData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n            <RadioGroup\n                value={localFormData.provider}\n                className=\"flex gap-6 mt-2\"\n                onValueChange={handleProviderChange}\n            >\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"openai\" id=\"provider-openai\" />\n                    <Label htmlFor=\"provider-openai\">OpenAI</Label>\n                </div>\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"azure\" id=\"provider-azure\" />\n                    <Label htmlFor=\"provider-azure\">Azure</Label>\n                </div>\n            </RadioGroup>\n\n            <div className=\"flex flex-col gap-4\">\n                {/* Unified API Key field */}\n                <InputField\n                    required\n                    label={localFormData.provider === 'openai' ? \"OpenAI API Key\" : \"Azure OpenAI API Key\"}\n                    type=\"password\"\n                    id=\"openai_api_key\"\n                    name=\"openai_api_key\"\n                    placeholder={t('build.enterApiKey')}\n                    value={localFormData.openai_api_key}\n                    onChange={handleChange}\n                    error={errors.openai_api_key}\n                />\n\n                {localFormData.provider === 'openai' ? (\n                    <>\n                        <InputField\n                            label=\"OpenAI Base URL\"\n                            id=\"openai_api_base\"\n                            name=\"openai_api_base\"\n                            placeholder={t('build.enterBaseUrl')}\n                            value={localFormData.openai_api_base}\n                            onChange={handleChange}\n                        />\n                        <InputField\n                            label=\"OpenAI Proxy\"\n                            id=\"openai_proxy\"\n                            name=\"openai_proxy\"\n                            placeholder={t('build.enterProxy')}\n                            value={localFormData.openai_proxy}\n                            onChange={handleChange}\n                        />\n                    </>\n                ) : (\n                    <>\n                        <InputField\n                            required\n                            label=\"Deployment Name\"\n                            id=\"azure_deployment\"\n                            name=\"azure_deployment\"\n                            placeholder={t('build.enterDeploymentName')}\n                            value={localFormData.azure_deployment}\n                            onChange={handleChange}\n                            error={errors.azure_deployment}\n                        />\n                        <InputField\n                            required\n                            label=\"Azure Endpoint\"\n                            id=\"azure_endpoint\"\n                            name=\"azure_endpoint\"\n                            placeholder={t('azureEndpointPlaceholder')}\n                            value={localFormData.azure_endpoint}\n                            onChange={handleChange}\n                            error={errors.azure_endpoint}\n                        />\n                        <InputField\n                            required\n                            label=\"OpenAI API Version\"\n                            id=\"openai_api_version\"\n                            name=\"openai_api_version\"\n                            placeholder={t('openaiApiVersionPlaceholder')}\n                            value={localFormData.openai_api_version}\n                            onChange={handleChange}\n                            error={errors.openai_api_version}\n                        />\n                    </>\n                )}\n            </div>\n\n            <DialogFooter className=\"mt-4\">\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('confirm', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default Dalle3ToolForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/EmailConfig.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField, SelectField } from \"./InputField\";\n\n// Default values for the form\nconst defaultValues = {\n    email_account: '',\n    email_password: '',\n    smtp_server: '',\n    smtp_port: '',\n    encrypt_method: '无加密', // Default value\n};\n\nconst EmailConfigForm = ({ formData = {}, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [localFormData, setLocalFormData] = useState(() => ({ ...defaultValues, ...formData }));\n    const [errors, setErrors] = useState({});\n\n    // Handle input changes\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    // Handle select field changes\n    const handleSelectChange = (name, value) => {\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    // Validate the form inputs\n    const validateForm = () => {\n        const formErrors: Record<string, boolean | string> = {};\n        let isValid = true;\n\n        // Email account validation\n        const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n        if (!localFormData.email_account) {\n            formErrors.email_account = true;\n            isValid = false;\n        } else if (!emailRegex.test(localFormData.email_account)) {\n            formErrors.email_account = t('invalidEmailMessage');\n            isValid = false;\n        }\n\n        if (!localFormData.email_password) {\n            formErrors.email_password = true;\n            isValid = false;\n        }\n\n        // SMTP server validation (check for valid domain or IP address)\n        const smtpServerRegex = /^(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$|^(?:\\d{1,3}\\.){3}\\d{1,3}$/;\n        // This regex allows valid domain names (e.g., smtp.example.com) or valid IPv4 addresses (e.g., 192.168.1.1)\n        if (!localFormData.smtp_server) {\n            formErrors.smtp_server = true;\n            isValid = false;\n        } else if (!smtpServerRegex.test(localFormData.smtp_server)) {\n            formErrors.smtp_server = t('invalidSmtpServerMessage');\n            isValid = false;\n        }\n\n        // SMTP port validation (must be a number between 1 and 65535)\n        const smtpPort = parseInt(localFormData.smtp_port);\n        if (!localFormData.smtp_port) {\n            formErrors.smtp_port = true;\n            isValid = false;\n        } else if (isNaN(smtpPort) || smtpPort < 1 || smtpPort > 65535) {\n            formErrors.smtp_port = t('invalidPortMessage');\n            isValid = false;\n        }\n\n        // Encrypt method validation\n        if (!localFormData.encrypt_method) {\n            formErrors.encrypt_method = true;\n            isValid = false;\n        }\n\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    // Handle form submit\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\" autoComplete=\"off\">\n            {/* Email Account */}\n            <InputField\n                required\n                label={t('emailAccountLabel')}\n                type=\"text\"\n                id=\"email_account\"\n                name=\"email_account\"\n                placeholder=\"\"\n                value={localFormData.email_account}\n                onChange={handleChange}\n                error={errors.email_account}\n            />\n\n            {/* Email Password */}\n            <InputField\n                required\n                label={t('emailPasswordLabel')}\n                type=\"password\"\n                id=\"email_password\"\n                name=\"email_password\"\n                placeholder=\"\"\n                value={localFormData.email_password}\n                onChange={handleChange}\n                error={errors.email_password}\n            />\n\n            {/* SMTP Server */}\n            <InputField\n                required\n                label={t('smtpServerLabel')}\n                type=\"text\"\n                id=\"smtp_server\"\n                name=\"smtp_server\"\n                placeholder=\"\"\n                value={localFormData.smtp_server}\n                onChange={handleChange}\n                error={errors.smtp_server}\n            />\n\n            {/* SMTP Port */}\n            <InputField\n                required\n                label={t('smtpPortLabel')}\n                type=\"text\"\n                id=\"smtp_port\"\n                name=\"smtp_port\"\n                placeholder=\"\"\n                value={localFormData.smtp_port}\n                onChange={handleChange}\n                error={errors.smtp_port}\n            />\n\n            {/* Encrypt Method */}\n            <SelectField\n                required\n                label={t('encryptMethodLabel')}\n                id=\"encrypt_method\"\n                name=\"encrypt_method\"\n                value={localFormData.encrypt_method}\n                onChange={(value) => handleSelectChange('encrypt_method', value)}\n                options={[\n                    { label: t('encryptMethodNoneLabel'), value: '无加密' },\n                    { label: t('encryptMethodSslLabel'), value: 'SSL 加密' },\n                    { label: t('encryptMethodStarttlsLabel'), value: 'STARTTLS 加密' },\n                ]}\n                error={errors.encrypt_method}\n            />\n\n            {/* Dialog Footer */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('save', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default EmailConfigForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/FeishuConfig.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst defaultValues = {\n    app_id: '',\n    app_secret: '',\n};\n\nconst FeishuConfigForm = ({ formData = {}, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [localFormData, setLocalFormData] = useState(() => ({ ...defaultValues, ...formData }));\n    const [errors, setErrors] = useState({});\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors: Record<string, boolean> = {};\n        let isValid = true;\n        if (!localFormData.app_id) {\n            formErrors.app_id = true;\n            isValid = false;\n        }\n        if (!localFormData.app_secret) {\n            formErrors.app_secret = true;\n            isValid = false;\n        }\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\" autoComplete=\"off\">\n            {/* App ID */}\n            <InputField\n                required\n                label=\"App ID\"\n                tooltip={t('feishuAppIdTooltip')}\n                type=\"text\"\n                id=\"app_id\"\n                name=\"app_id\"\n                placeholder=\"\"\n                value={localFormData.app_id}\n                onChange={handleChange}\n                error={errors.app_id}\n            />\n\n            {/* App Secret */}\n            <InputField\n                required\n                label=\"App Secret\"\n                tooltip={t('feishuAppSecretTooltip')}\n                type=\"password\"\n                id=\"app_secret\"\n                name=\"app_secret\"\n                placeholder=\"\"\n                value={localFormData.app_secret}\n                onChange={handleChange}\n                error={errors.app_secret}\n            />\n\n            {/* Dialog Footer */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('save', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default FeishuConfigForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/FinancialData.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { HelpCircle } from \"lucide-react\";\nimport { InputField } from \"./InputField\";\n\n/**\n * Component for editing economic and financial data tool settings.\n * Focuses specifically on network configurations like proxy settings.\n */\nconst FinancialDataToolForm = ({ formData, onSubmit }) => {\n    const { t } = useTranslation();\n    const [localFormData, setLocalFormData] = useState(() => ({ proxy: '', ...formData }));\n\n    useEffect(() => {\n        setLocalFormData((prev) => ({ ...prev, ...formData }));\n    }, [formData]);\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        // Proxy is optional, so no heavy validation needed\n        onSubmit(localFormData);\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\" autoComplete=\"off\">\n            <div className=\"space-y-2\">\n                <InputField\n                    id=\"proxy\"\n                    name=\"proxy\"\n                    label=\"proxy\"\n                    tooltip={t('build.fdProxyDescription')}\n                    placeholder=''\n                    value={localFormData.proxy}\n                    onChange={handleChange}\n                />\n            </div>\n\n            <DialogFooter>\n                <DialogClose asChild>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('build.cancel')}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('build.confirm')}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default FinancialDataToolForm;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/InputField.tsx",
    "content": "import { Input } from \"@/components/bs-ui/input\";\nimport {\n    Select,\n    SelectContent,\n    SelectGroup,\n    SelectItem,\n    SelectTrigger,\n    SelectValue\n} from \"@/components/bs-ui/select\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const InputField = ({\n    label,\n    type = \"text\",\n    id,\n    name,\n    required = false,\n    placeholder = '',\n    value,\n    onChange,\n    error = '',\n    tooltip = '',\n    ...prop\n}) => {\n    const { t } = useTranslation('tool');\n\n    return (\n        <div key={id}>\n            <label htmlFor={id} className=\"bisheng-label flex items-center gap-1\">\n                {label}\n                {tooltip && <QuestionTooltip content={tooltip} />}\n                {required && <span className=\"bisheng-tip\">*</span>}\n            </label>\n\n            <Input\n                type={type}\n                id={id}\n                name={name}\n                placeholder={placeholder}\n                className=\"mt-2\"\n                value={value}\n                autoComplete=\"off\"\n                onChange={onChange}\n                min=\"0\"\n                {...prop}\n            />\n            {error && (\n                <p className=\"bisheng-tip mt-1\">\n                    {typeof error === \"string\"\n                        ? error\n                        : t(\"fieldCannotBeEmpty\", { label })}\n                </p>\n            )}\n        </div>\n    );\n};\n\n\nexport const SelectField = ({\n    label,\n    id,\n    name,\n    required = false,\n    value,\n    onChange,\n    options = [],\n    error = '',\n    tooltip = ''\n}) => {\n    const { t } = useTranslation('tool');\n\n    return (\n        <div key={id}>\n            <label htmlFor={id} className=\"bisheng-label flex items-center gap-1\">\n                {label}\n                {tooltip && <QuestionTooltip content={tooltip} />}\n                {required && <span className=\"bisheng-tip\">*</span>}\n            </label>\n\n            <Select value={value} onValueChange={onChange}>\n                <SelectTrigger className=\"h-8 mt-2\">\n                    <SelectValue placeholder={t(\"pleaseSelect\")} />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        {options.map((option) => (\n                            <SelectItem key={option.value} value={option.value}>\n                                {option.label}\n                            </SelectItem>\n                        ))}\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n\n            {error && (\n                <p className=\"bisheng-tip mt-1\">\n                    {t(\"fieldCannotBeEmpty\", { label })}\n                </p>\n            )}\n        </div>\n    );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/JinaConfig.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst defaultValues = {\n    jina_api_key: '',\n};\n\nconst JinaApiKeyForm = ({ formData = {}, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [localFormData, setLocalFormData] = useState(() => ({ ...defaultValues, ...formData }));\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        onSubmit(localFormData);\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\">\n            {/* Jina API Key Input */}\n            <InputField\n                label={t('jinaApiKeyLabel')}\n                type=\"password\"\n                id=\"jina_api_key\"\n                name=\"jina_api_key\"\n                placeholder=\"\"\n                value={localFormData.jina_api_key}\n                onChange={handleChange}\n            />\n\n            {/* Dialog Footer */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('save', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default JinaApiKeyForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/SiliconFlowApiKey.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst defaultValues = {\n    siliconflow_api_key: '',\n};\n\nconst SiliconFlowApiKeyForm = ({ formData = {}, onSubmit }) => {\n    const { t } = useTranslation('tool');\n    const [localFormData, setLocalFormData] = useState(() => ({ ...defaultValues, ...formData }));\n    const [errors, setErrors] = useState<any>({});\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors: Record<string, boolean> = {};\n        let isValid = true;\n\n        if (!localFormData.siliconflow_api_key) {\n            formErrors.siliconflow_api_key = true;\n            isValid = false;\n        }\n\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-6\">\n            {/* SiliconFlow API Key */}\n            <InputField\n                required\n                label={t('siliconflowApiKeyLabel')}\n                type=\"password\"\n                id=\"siliconflow_api_key\"\n                name=\"siliconflow_api_key\"\n                placeholder=\"\"\n                value={localFormData.siliconflow_api_key}\n                onChange={handleChange}\n                error={errors.siliconflow_api_key}\n            />\n\n            {/* Dialog Footer */}\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('cancel', { ns: 'bs' })}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('save', { ns: 'bs' })}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default SiliconFlowApiKeyForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/Tianyancha.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField } from \"./InputField\";\n\nconst TianyanchaToolForm = ({ formData, onSubmit }) => {\n    const { t } = useTranslation();\n\n    // Initialize with proxy field\n    const [localFormData, setLocalFormData] = useState(() => ({\n        api_key: '',\n        proxy: '',\n        ...formData\n    }));\n    const [errors, setErrors] = useState({});\n\n    useEffect(() => {\n        setLocalFormData((prev) => ({ ...prev, ...formData }));\n    }, [formData]);\n\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setLocalFormData((prev) => ({ ...prev, [name]: value }));\n    };\n\n    const validateForm = () => {\n        const formErrors = {};\n        let isValid = true;\n        if (!localFormData.api_key) {\n            formErrors.api_key = 'API key is required';\n            isValid = false;\n        }\n        setErrors(formErrors);\n        return isValid;\n    };\n\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        if (validateForm()) {\n            onSubmit(localFormData);\n        }\n    };\n\n    return (\n        <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\" autoComplete=\"off\">\n            <InputField\n                required\n                label=\"API Key\"\n                type=\"password\"\n                id=\"api_key\"\n                name=\"api_key\"\n                placeholder={t('build.enterApiKey')}\n                value={localFormData.api_key}\n                onChange={handleChange}\n                error={errors.api_key}\n            />\n\n            <div className=\"relative\">\n                <InputField\n                    id=\"proxy\"\n                    label=\"proxy\"\n                    name=\"proxy\"\n                    tooltip={t('build.proxyDescription')}\n                    placeholder=''\n                    value={localFormData.proxy}\n                    onChange={handleChange}\n                // No 'label' prop here because we rendered a custom one with the icon above\n                />\n            </div>\n\n            <DialogFooter>\n                <DialogClose asChild>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                        {t('build.cancel')}\n                    </Button>\n                </DialogClose>\n                <Button className=\"px-11\" type=\"submit\">\n                    {t('build.confirm')}\n                </Button>\n            </DialogFooter>\n        </form>\n    );\n};\n\nexport default TianyanchaToolForm;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/builtInTool/WebSearchFrom.tsx",
    "content": "import { LoadingIcon } from '@/components/bs-icons/loading';\nimport { Button } from '@/components/bs-ui/button';\nimport { DialogClose, DialogFooter } from \"@/components/bs-ui/dialog\";\nimport { Label } from '@/components/bs-ui/label';\nimport { toast } from '@/components/bs-ui/toast/use-toast';\nimport { getToolsApi, updateToolApi } from '@/controllers/API/tools';\nimport { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { InputField, SelectField } from \"./InputField\";\n\nconst defaultToolParams = {\n    bing: {\n        api_key: '',\n        base_url: 'https://api.bing.microsoft.com/v7.0/search'\n    },\n    bocha: {\n        api_key: ''\n    },\n    jina: {\n        api_key: ''\n    },\n    serp: {\n        api_key: '',\n        engine: 'baidu'\n    },\n    tavily: {\n        api_key: ''\n    },\n    cloudsway: {\n        api_key: '',\n        endpoint: ''\n    },\n    searXNG: {\n        server_url: ''\n    },\n};\n\ninterface WebSearchFormProps {\n    formData?: any;\n    onSubmit?: (config: any) => void;\n    isApi?: boolean;\n}\n\nconst WebSearchForm = ({ formData, onSubmit, isApi = false }: WebSearchFormProps) => {\n    const { t } = useTranslation();\n    const [loading, setLoading] = useState(true);\n    const toolIdRef = useRef('');\n    const [enabled, setEnabled] = useState(true);\n    const [prompt, setPrompt] = useState('');\n    const closeRef = useRef<HTMLButtonElement | null>(null);\n\n    const [allToolsConfig, setAllToolsConfig] = useState<Record<string, any>>({\n        ...defaultToolParams,\n    });\n\n    const [selectedTool, setSelectedTool] = useState<string>('bing');\n    const [formErrors, setFormErrors] = useState({});\n\n    // Initialization: If isApi is true, fetch data via the interface; otherwise, use the parent-level formData.\n    useEffect(() => {\n        const initFromApi = async () => {\n            try {\n                const res = await getToolsApi('default');\n                const webSearchTool = res.find((item: any) => item.name === '联网搜索');\n                if (webSearchTool) {\n                    toolIdRef.current = webSearchTool.id;\n                    if (webSearchTool.extra) {\n                        try {\n                            const extraData = JSON.parse(webSearchTool.extra);\n                            setSelectedTool(extraData.type || 'bing');\n                            setEnabled(extraData.enabled ?? true);\n                            setPrompt(extraData.prompt ?? '');\n                            setAllToolsConfig({\n                                ...defaultToolParams,\n                                ...(extraData.config || {}),\n                            });\n                        } catch (e) { }\n                    }\n                }\n            } catch (error: any) {\n                toast({\n                    title: t('failed'),\n                    description: error?.message || '',\n                    variant: 'error',\n                });\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        const initFromProps = () => {\n            const mergedConfig = {\n                ...defaultToolParams,\n                ...(formData?.config || {}),\n            } as Record<string, any>;\n            setAllToolsConfig(mergedConfig);\n            setSelectedTool(formData?.type || 'bing');\n            setEnabled(formData?.enabled ?? true);\n            setPrompt(formData?.prompt ?? '');\n            setLoading(false);\n        };\n\n        if (isApi) {\n            initFromApi();\n        } else {\n            initFromProps();\n        }\n    }, [isApi, formData]);\n\n    const validationRules = {\n        bing: {\n            base_url: (value) => !value && 'Bing Search URL ' + t('chatConfig.errors.required')\n        },\n        bocha: {\n            api_key: (value) => !value && 'API Key ' + t('chatConfig.errors.required')\n        },\n        jina: {\n            api_key: (value) => !value && 'API Key ' + t('chatConfig.errors.required')\n        },\n        serp: {\n            api_key: (value) => !value && 'API Key ' + t('chatConfig.errors.required'),\n            engine: (value) => !value && 'engine ' + t('chatConfig.errors.required')\n        },\n        tavily: {\n            api_key: (value) => !value && 'API Key ' + t('chatConfig.errors.required')\n        },\n        cloudsway: {\n            api_key: (value) => !value && 'API Key ' + t('chatConfig.errors.required'),\n            endpoint: (value) => !value && 'endpoint ' + t('chatConfig.errors.required')\n        },\n        searXNG: {\n            server_url: (value) => !value && 'The server address cannot be empty'\n        }\n    };\n\n    const handleToolChange = (tool) => {\n        setSelectedTool(tool);\n        setFormErrors({});\n    };\n\n    const handleParamChange = (e) => {\n        const { name, value } = e.target;\n        setAllToolsConfig(prev => ({\n            ...prev,\n            [selectedTool]: {\n                ...prev[selectedTool],\n                [name]: value\n            }\n        }));\n\n        setFormErrors(prev => ({\n            ...prev,\n            [name]: undefined\n        }));\n    };\n\n    const handleSubmit = async (e) => {\n        e.preventDefault();\n        const errors = {} as Record<string, string>;\n        const currentToolRules = (validationRules as any)[selectedTool] || {};\n\n        Object.keys(currentToolRules).forEach(key => {\n            const error = currentToolRules[key]((allToolsConfig as any)[selectedTool]?.[key]);\n            if (error) {\n                errors[key] = error;\n            }\n        });\n\n        if (Object.keys(errors).length > 0) {\n            setFormErrors(errors);\n            return;\n        }\n\n        const typedConfig = {\n            bing: (allToolsConfig as any).bing || defaultToolParams.bing,\n            bocha: (allToolsConfig as any).bocha || defaultToolParams.bocha,\n            jina: (allToolsConfig as any).jina || defaultToolParams.jina,\n            serp: (allToolsConfig as any).serp || defaultToolParams.serp,\n            tavily: (allToolsConfig as any).tavily || defaultToolParams.tavily,\n            cloudsway: (allToolsConfig as any).cloudsway,\n            searXNG: (allToolsConfig as any).searXNG,\n        };\n\n        const newConfig = {\n            enabled,\n            type: selectedTool,\n            config: typedConfig,\n            prompt,\n        };\n        try {\n            if (isApi) {\n                if (toolIdRef.current) {\n                    await updateToolApi(toolIdRef.current, newConfig);\n                }\n                toast({\n                    title: t('skills.saveSuccessful'),\n                    description: '',\n                    variant: 'success',\n                });\n                // Close the pop-up window after successful submission.\n                closeRef.current?.click();\n            } else {\n                onSubmit?.(newConfig);\n            }\n        } catch (error: any) {\n            toast({\n                title: t('failed'),\n                description: error?.message || '',\n                variant: 'error',\n            });\n        }\n    };\n\n    const renderParams = () => {\n\n        const currentTool: any = ((allToolsConfig as any)[selectedTool] as any) || ({} as any);\n        const currentToolMap: Record<string, any> = currentTool as Record<string, any>;\n\n        if (!currentTool) return null;\n\n        switch (selectedTool) {\n            case 'bing':\n                return (\n                    <>\n                        <InputField\n                            required\n                            label=\"Bing Subscription Key\"\n                            type=\"password\"\n                            name=\"api_key\"\n                            value={currentToolMap['api_key'] || ''}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).api_key}\n                            id=\"bing-api-key\"\n                        />\n                        <InputField\n                            required\n                            label=\"Bing Search URL\"\n                            name=\"base_url\"\n                            value={currentToolMap['base_url'] || defaultToolParams.bing.base_url}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).base_url}\n                            id=\"bing-base-url\"\n                        />\n                    </>\n                );\n            case 'bocha':\n                return (\n                    <InputField\n                        required\n                        label=\"API Key\"\n                        type=\"password\"\n                        name=\"api_key\"\n                        value={currentToolMap['api_key'] || ''}\n                        onChange={handleParamChange}\n                        error={(formErrors as any).api_key}\n                        id=\"bocha-api-key\"\n                    />\n                );\n            case 'jina':\n                return (\n                    <InputField\n                        required\n                        label=\"API Key\"\n                        type=\"password\"\n                        name=\"api_key\"\n                        value={currentToolMap['api_key'] || ''}\n                        onChange={handleParamChange}\n                        error={(formErrors as any).api_key}\n                        id=\"jina-api-key\"\n                    />\n                );\n            case 'serp':\n                return (\n                    <>\n                        <InputField\n                            required\n                            label=\"API Key\"\n                            type=\"password\"\n                            name=\"api_key\"\n                            value={currentToolMap['api_key'] || ''}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).api_key}\n                            id=\"serp-api-key\"\n                        />\n                        <InputField\n                            required\n                            label=\"engine\"\n                            name=\"engine\"\n                            value={currentToolMap['engine'] || 'baidu'}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).engine}\n                            id=\"serp-engine\"\n                        />\n                    </>\n                );\n            case 'tavily':\n                return (\n                    <InputField\n                        required\n                        label=\"API Key\"\n                        type=\"password\"\n                        name=\"api_key\"\n                        value={currentToolMap['api_key'] || ''}\n                        onChange={handleParamChange}\n                        error={(formErrors as any).api_key}\n                        id=\"tavily-api-key\"\n                    />\n                );\n            case 'cloudsway':\n                return (\n                    <>\n                        <InputField\n                            required\n                            label=\"API Key\"\n                            type=\"password\"\n                            name=\"api_key\"\n                            value={currentToolMap['api_key'] || ''}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).api_key}\n                            id=\"cloudsway-api-key\"\n                        />\n                        <InputField\n                            required\n                            label=\"endpoint\"\n                            name=\"endpoint\"\n                            value={currentToolMap['endpoint'] || ''}\n                            onChange={handleParamChange}\n                            error={(formErrors as any).endpoint}\n                            id=\"cloudsway-endpoint\"\n                        />\n                    </>\n                );\n            case 'searXNG':\n                return (\n                    <InputField\n                        required\n                        label={t('chatConfig.webSearch.serverUrl')}\n                        name=\"server_url\"\n                        value={currentToolMap['server_url'] || ''}\n                        onChange={handleParamChange}\n                        error={(formErrors as any).server_url}\n                        id=\"searxng-server-url\"\n                        placeholder={t('chatConfig.webSearch.serverUrlPlaceholder')}\n                    />\n                );\n            default:\n                return null;\n        }\n    };\n\n    if (isApi && loading) {\n        return (\n            <div className=\"flex h-40 items-center justify-center\">\n                <LoadingIcon />\n            </div>\n        );\n    }\n\n    return (\n        <>\n            <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n                {/* Hide the close button for programmatic closing of the pop-up window after successful submission. */}\n                <DialogClose asChild>\n                    <button ref={closeRef} className=\"hidden\" />\n                </DialogClose>\n                <SelectField\n                    label={t('chatConfig.webSearch.engine')}\n                    value={selectedTool}\n                    onChange={handleToolChange}\n                    options={[\n                        { value: 'bing', label: t('chatConfig.webSearch.bing') },\n                        { value: 'bocha', label: t('chatConfig.webSearch.bocha') },\n                        { value: 'jina', label: t('chatConfig.webSearch.jina') },\n                        { value: 'serp', label: t('chatConfig.webSearch.serp') },\n                        { value: 'tavily', label: t('chatConfig.webSearch.tavily') },\n                        { value: 'searXNG', label: t('chatConfig.webSearch.searXNG') },\n                        { value: 'cloudsway', label: t('chatConfig.webSearch.cloudsway') },\n                    ]}\n                    id=\"search-tool-selector\"\n                    name=\"search_tool\"\n                />\n\n                <div className=\"space-y-4\">\n                    <Label className=\"bisheng-label\">{t('chatConfig.webSearch.config')}</Label>\n                    {renderParams()}\n                </div>\n\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\">\n                            {t('build.cancel')}\n                        </Button>\n                    </DialogClose>\n                    <Button className=\"px-11\" type=\"submit\" disabled={isApi && loading}>\n                        {t('build.confirm')}\n                    </Button>\n                </DialogFooter>\n            </form>\n        </>\n\n    );\n};\n\nexport default WebSearchForm;"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/index.tsx",
    "content": "import { LoadIcon } from \"@/components/bs-icons\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Accordion } from \"@/components/bs-ui/accordion\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { refreshMcpApi } from \"@/controllers/API/assistant\";\nimport { getToolsApi } from \"@/controllers/API/tools\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { CpuIcon, Star, User } from \"lucide-react\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSearchParams } from \"react-router-dom\";\nimport McpServerDialog from \"./EditMcp\";\nimport EditTool from \"./EditTool\";\nimport ToolItem from \"./ToolItem\";\nimport ToolSet from \"./ToolSet\";\n\nconst MANAGED_TOOLS = [\n    'Dalle3绘画', 'Bing web搜索', '天眼查',\n    'Firecrawl', 'Jina AI', 'SiliconFlow',\n    '发送邮件', '飞书消息', '联网搜索', '代码执行器', '经济金融数据'\n];\n\ninterface TabToolsProps {\n    select?: any;\n    onSelect: (tool: any) => void;\n}\n\nconst TabTools = ({ select = null, onSelect }: TabToolsProps) => {\n    const [keyword, setKeyword] = useState(\" \");\n    const [allData, setAllData] = useState([]);\n    const { t } = useTranslation()\n\n    const { user } = useContext(userContext)\n\n    const [type, setType] = useState(\"\");\n    const editRef = useRef(null);\n    const mcpDialogRef = useRef(null);\n\n    useToolType(setType)\n    const [loading, setLoading] = useState(false)\n\n    const loadData = async (_type = \"custom\") => {\n        await getToolsApi(_type).then((res) => {\n            setAllData(res);\n        });\n        setLoading(false)\n    };\n    const loadMcpData = async () => {\n        await getToolsApi('mcp').then((res) => {\n            setAllData(res);\n        });\n        setLoading(false)\n    }\n    useEffect(() => {\n        setLoading(true)\n        if (type === 'mcp') {\n            loadMcpData()\n        } else {\n            loadData(type === \"\" ? \"default\" : \"custom\");\n        }\n    }, [type]);\n\n    const options = useMemo(() => {\n        return allData.filter((el) => {\n            // Search in tool name, description, API name, and API description\n            const targetStr = `${el.name}-${el.description}-${el.children?.map((el) => {\n                // For MCP, search includes parameter names and descriptions\n                const param = type === 'mcp' ? (el.api_params.map((param) => param.name + param.description).join(\"-\") || '') : ''\n                return el.name + el.desc + param\n            }).join(\"-\") || ''}`\n            return targetStr.toLowerCase().includes(keyword.trim().toLowerCase());\n        });\n    }, [keyword, type, allData]);\n\n    const hasSet = (name) => {\n        if (user.role !== 'admin') return false\n        return MANAGED_TOOLS.includes(name)\n    }\n\n    const toolsetRef = useRef(null)\n    const { loading: btnLoading, refresh } = useMcpRefrensh(t)\n\n    return (\n        <div className=\"flex h-full relative\" onClick={(e) => e.stopPropagation()}>\n            <div className=\"relative w-full flex h-full overflow-y-scroll scrollbar-hide bg-background-main border-t\">\n                <div className=\"relative w-fit p-6\">\n                    <SearchInput\n                        placeholder={t(\"tools.search\")}\n                        className=\"mt-6\"\n                        onChange={(e) => setKeyword(e.target.value)}\n                    />\n                    <div className=\"mt-4\">\n                        <div\n                            className={`flex cursor-pointer items-center gap-2 rounded-md px-4 py-2 transition-all duration-200 hover:bg-muted-foreground/10 ${type === \"\" && \"bg-muted-foreground/10\"\n                                }`}\n                            onClick={() => setType(\"\")}\n                        >\n                            <User />\n                            <span>{t(\"tools.builtinTools\")}</span>\n                        </div>\n                        <div\n                            className={`mt-1 flex cursor-pointer items-center gap-2 rounded-md px-4 py-2 transition-all duration-200 hover:bg-muted-foreground/10 ${type === \"edit\" && \"bg-muted-foreground/10\"\n                                }`}\n                            onClick={() => setType(\"edit\")}\n                        >\n                            <Star />\n                            <span>{t(\"tools.customTools\")}</span>\n                        </div>\n                        <div\n                            className={`mt-1 flex cursor-pointer items-center gap-2 rounded-md px-4 py-2 transition-all duration-200 hover:bg-muted-foreground/10 ${type === \"mcp\" && \"bg-muted-foreground/10\"\n                                }`}\n                            onClick={() => setType(\"mcp\")}\n                        >\n                            <CpuIcon />\n                            <span>{t(\"tools.mcpTools\")}</span>\n                        </div>\n                    </div>\n                    <div className=\"absolute bottom-0 left-0 flex h-16 w-full items-center justify-betwee px-2\">\n                        <p className=\"text-sm text-muted-foreground break-all\">\n                            {t(\"tools.manageCustomTools\")}\n                        </p>\n                    </div>\n                </div>\n                <div className=\"h-full w-full flex-1 overflow-auto bg-background-login p-5 pb-20 pt-2 scrollbar-hide\">\n                    {\n                        loading && <div className=\"absolute top-0 left-0 w-full h-full flex items-center justify-center bg-primary/5 z-10\">\n                            <LoadingIcon className=\"size-24\" />\n                        </div>\n                    }\n                    <div className=\"mb-4\">\n                        {type === 'edit' && <Button\n                            id=\"create-apitool\"\n                            className=\"mt-4  text-[white]\"\n                            onClick={() => editRef.current.open()}\n                        >\n                            {t('create')}{t(\"tools.createCustomTool\")}\n                        </Button>}\n                        {type === 'mcp' && <Button\n                            id=\"create-mcptool\"\n                            className=\"mt-4  text-[white]\"\n                            onClick={() => mcpDialogRef.current.open()}\n                        >\n                            {t(\"tools.addMcpServer\")}\n                        </Button>}\n                        {type === 'mcp' && <Button\n                            variant=\"outline\"\n                            disabled={btnLoading}\n                            className=\"mt-4 ml-4\"\n                            onClick={async () => {\n                                await refresh()\n                                loadMcpData()\n                            }}\n                        >\n                            {btnLoading && <LoadIcon className=\"text-gray-800\" />}\n                            {t(\"tools.refresh\")}\n                        </Button>}\n                    </div>\n                    {\n                        !loading && <Accordion type=\"single\" collapsible className=\"w-full\">\n                            {options.length ? (\n                                options.map((el) => (\n                                    <ToolItem\n                                        key={el.id}\n                                        type={type}\n                                        select={select}\n                                        data={el}\n                                        onSelect={onSelect}\n                                        onSetClick={hasSet(el.name) ? () => toolsetRef.current.edit(el) : null}\n                                        onEdit={(id) => {\n                                            type === 'mcp' ? mcpDialogRef.current.open(el) :\n                                                editRef.current.edit(el)\n                                        }}\n                                    ></ToolItem>\n                                ))\n                            ) : (\n                                <div className=\"mt-2 pt-40 text-center text-sm text-muted-foreground\">\n                                    {t(\"tools.empty\")}\n                                </div>\n                            )}\n                        </Accordion>\n                    }\n                </div>\n            </div>\n\n            <EditTool\n                onReload={() => {\n                    setType('edit');\n                    type === 'edit' && loadData();\n                }}\n                ref={editRef}\n            />\n\n            <McpServerDialog\n                ref={mcpDialogRef}\n                existingNames={options.map((el) => el.name)}\n                onReload={loadMcpData}\n                onSuccess={() => { }}\n            />\n\n            <ToolSet ref={toolsetRef} onChange={() => loadData(\"default\")} />\n        </div>\n    );\n}\n\nexport const useMcpRefrensh = () => {\n    const [loading, setLoading] = useState(false);\n    const { message, toast } = useToast()\n    const { t } = useTranslation('tool')\n\n    return {\n        loading,\n        async refresh() {\n            setLoading(true);\n            const res = await captureAndAlertRequestErrorHoc(refreshMcpApi())\n            if (res.length) {\n                setLoading(false);\n                return toast({\n                    variant: \"error\",\n                    description: res.map(e => `${e} ${t(\"toolFetchFailed\")}`)\n                })\n            }\n            message({\n                variant: \"success\",\n                description: t(\"refreshSuccess\")\n            })\n            setLoading(false);\n        }\n    }\n}\n\nconst useToolType = (setType) => {\n    const [searchParams, setSearchParams] = useSearchParams();\n    useEffect(() => {\n        const type = searchParams.get('c');\n        setSearchParams({})\n        if (!type) return\n\n        setType(type === 'mcp' ? type : 'edit')\n        setTimeout(() => {\n            document.getElementById(type === 'mcp' ? 'create-mcptool' : 'create-apitool')?.click()\n        }, 100)\n    }, [searchParams])\n}\n\nexport default TabTools;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/BuildPage/tools/webSearchStore.ts",
    "content": "// src/stores/webSearchStore.ts\nimport { create } from 'zustand'\n\n// webSearchStore.ts\ninterface WebSearchConfig {\n  type: string\n  config: {\n    bing: { api_key: string; base_url: string }\n    bocha: { api_key: string }\n    jina: { api_key: string }\n    serp: { api_key: string; engine: string }\n    tavily: { api_key: string }\n  }\n}\n\ninterface WebSearchStore {\n  config: WebSearchConfig | null\n  setConfig: (config: Partial<WebSearchConfig>) => void\n}\n\nexport const useWebSearchStore = create<WebSearchStore>((set) => ({\n  config: null,\n  setConfig: (newConfig) => \n    set((state) => ({ \n      config: { ...state.config, ...newConfig } as WebSearchConfig \n    })),\n}))"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/chatAssitantShare.tsx",
    "content": "// 支持嵌iframe、适配移动端\nimport { useMemo, useState } from \"react\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { generateUUID } from \"../../utils\";\nimport ChatPanne from \"./components/ChatPanne\";\nimport { AppNumType } from \"@/types/app\";\n\nexport default function chatAssitantShare() {\n    const { id: assitId } = useParams()\n\n    const wsUrl = `/api/v2/assistant/chat/${assitId}`\n\n    const [data] = useState<any>({ id: assitId, chatId: generateUUID(32), type: AppNumType.ASSISTANT })\n\n    if (!assitId) return <div>请选择会话</div>\n\n    return <ChatPanne customWsHost={wsUrl} version=\"v2\" data={data} />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/chatShare.tsx",
    "content": "// 嵌iframe、适配移动端\nimport { useMemo, useState } from \"react\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { generateUUID } from \"../../utils\";\nimport ChatPanne from \"./components/ChatPanne\";\nimport { AppNumType } from \"@/types/app\";\n\nexport default function chatShare({ type = AppNumType.SKILL }) {\n    const { id: flowId } = useParams()\n    const location = useLocation();\n    const searchParams = new URLSearchParams(location.search);\n    const libId = searchParams.get('lib')\n    const tweak = searchParams.get('tweak')\n\n    const wsUrl = useMemo(() => {\n        if (type === AppNumType.FLOW) return `/api/v2/workflow/chat/${flowId}?`\n\n        const params = [];\n\n        if (libId) params.push(`knowledge_id=${libId}`);\n        if (tweak) params.push(`tweak=${encodeURIComponent(tweak)}`);\n\n        const paramStr = params.length > 0 ? `${params.join('&')}` : '';\n\n        return `/api/v2/chat/ws/${flowId}?type=L1&${paramStr}`\n    }, [libId, tweak, type])\n\n    const [data] = useState<any>({ id: flowId, chatId: generateUUID(32), type })\n\n    if (!flowId) return <div>请选择会话</div>\n\n    return <ChatPanne customWsHost={wsUrl} version=\"v2\" data={data} />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/chatWebview.tsx",
    "content": "// 嵌iframe、适配移动端(企业接入)\nimport { useContext, useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport ChatPanne from \"./components/ChatPanne\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { AppNumType } from \"@/types/app\";\n\n// assistant workflow flow\nexport default function ChatPro({ type = AppNumType.SKILL }) {\n    const { id: flowId } = useParams()\n    const { user } = useContext(userContext);\n\n    const [data, setData] = useState<any>(null)\n    // c41f9bb3-966e-4ded-9f3f-9077f70bc707\n    useEffect(() => {\n        // sdk 获取用户\n        setData({ id: flowId, chatId: `${flowId.replaceAll('-', '')}_${user.user_id}`, type })\n    }, [])\n\n    if (!flowId) return <div>请选择会话</div>\n    if (!data) return null\n\n    return <ChatPanne data={data} version=\"v2\"/>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ChatHome.tsx",
    "content": "import CardComponent from \"@/components/bs-comp/cardComponent\";\nimport LoadMore from \"@/components/bs-comp/loadMore\";\nimport { AssistantIcon, FlowIcon, SettingIcon, SkillIcon } from \"@/components/bs-icons\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { getChatOnlineApi } from \"@/controllers/API/assistant\";\nimport { getHomeLabelApi } from \"@/controllers/API/label\";\nimport { useDebounce } from \"@/util/hook\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport MarkLabel from \"./MarkLabel\";\n\n\nexport default function HomePage({ onSelect }) {\n    const { t } = useTranslation()\n    const { user } = useContext(userContext)\n    const navigate = useNavigate()\n\n    // State for UI and data\n    const [categoryTags, setCategoryTags] = useState([])\n    const [isLabelModalOpen, setIsLabelModalOpen] = useState(false)\n    const [chatOptions, setChatOptions] = useState([])\n    const [selectedCategoryId, setSelectedCategoryId] = useState(null)\n    const [hasMoreData, setHasMoreData] = useState(false)\n\n    // Refs for pagination and search\n    const currentPageRef = useRef(1)\n    const searchQueryRef = useRef('')\n    const chatDataRef = useRef([])\n\n    // Constants\n    const CHAT_TYPE_NAMES = {\n        1: t('build.skill'),\n        5: t('build.assistant'),\n        10: t('build.workflow')\n    }\n    const BASE_IMAGE_URL = __APP_ENV__.BASE_URL\n\n    // Data fetching functions\n    const fetchChatData = async (categoryId, loadMore = false) => {\n        const response = await getChatOnlineApi(\n            currentPageRef.current,\n            searchQueryRef.current,\n            categoryId\n        )\n\n        setSelectedCategoryId(categoryId)\n        setHasMoreData(true)\n        chatDataRef.current = response\n        setChatOptions(loadMore ? [...chatOptions, ...response] : response)\n    }\n\n    const fetchCategoryTags = async () => {\n        const tags = await getHomeLabelApi()\n        setCategoryTags(tags.map(tag => ({\n            label: tag.name,\n            value: tag.id,\n            selected: true\n        })))\n    }\n\n    // Initial data load\n    useEffect(() => {\n        debounceFetchChatData(null)\n        fetchCategoryTags()\n    }, [])\n\n    const debounceFetchChatData = useDebounce(fetchChatData, 600, false)\n\n    // Event handlers\n    const handleSearch = (e) => {\n        currentPageRef.current = 1\n        searchQueryRef.current = e.target.value\n        debounceFetchChatData(selectedCategoryId)\n    }\n\n    const handleCloseLabelModal = async (shouldClose) => {\n        if (shouldClose) {\n            await fetchCategoryTags()\n            setIsLabelModalOpen(false)\n        } else {\n            setIsLabelModalOpen(shouldClose)\n        }\n    }\n\n    const handleCategoryFilter = (categoryId) => {\n        // setSelectedCategoryId(categoryId)\n        setHasMoreData(false)\n        currentPageRef.current = 1\n        fetchChatData(categoryId)\n    }\n\n    const handleLoadMore = async () => {\n        currentPageRef.current++\n        await debounceFetchChatData(selectedCategoryId, true)\n    }\n\n    const renderCategoryTags = () => (\n        <>\n            <Button\n                variant={!selectedCategoryId ? \"default\" : \"outline\"}\n                className=\"mb-2 mr-4 h-7\"\n                size=\"sm\"\n                onClick={() => {\n                    setHasMoreData(false)\n                    currentPageRef.current = 1\n                    fetchChatData(null, false)\n                }}\n            >\n                {t('all')}\n            </Button>\n            {categoryTags.slice(0, 12).map((tag) => (\n                <Button\n                    key={tag.value}\n                    size=\"sm\"\n                    onClick={() => handleCategoryFilter(tag.value)}\n                    className=\"mr-3 mb-2 h-7\"\n                    variant={tag.value === selectedCategoryId ? \"default\" : \"outline\"}\n                >\n                    {tag.label}\n                </Button>\n            ))}\n        </>\n    )\n\n    const renderChatOptions = () => {\n        if (!chatOptions.length && hasMoreData) {\n            return (\n                <div className=\"absolute top-1/2 left-1/2 transform text-center -translate-x-1/2 -translate-y-1/2\">\n                    <p className=\"text-sm text-muted-foreground mb-3\">{t('build.empty')}</p>\n                    <Button className=\"w-[200px]\" onClick={() => navigate('/build/apps')}>\n                        {t('build.onlineSA')}\n                    </Button>\n                </div>\n            )\n        }\n\n        return chatOptions.map((chat, index) => (\n            <CardComponent\n                key={index}\n                id={index + 1}\n                data={chat}\n                logo={null}\n                title={chat.name}\n                description={chat.description}\n                type={chat.flow_type}\n                icon={getChatTypeIcon(chat.flow_type)}\n                footer={renderChatTypeBadge(chat.flow_type)}\n                onClick={() => onSelect(chat)}\n            />\n        ))\n    }\n\n    const getChatTypeIcon = (type) => {\n        return type === 'flow' ? SkillIcon :\n            type === 'assistant' ? AssistantIcon : FlowIcon\n    }\n\n    const renderChatTypeBadge = (type) => (\n        <Badge className={`absolute right-0 bottom-0 rounded-none rounded-br-md ${type === 1 ? 'bg-gray-950' :\n            type === 5 ? 'bg-[#fdb136]' : ''\n            }`}>\n            {CHAT_TYPE_NAMES[type]}\n        </Badge>\n    )\n\n    return (\n        <div className=\"h-full overflow-hidden bs-chat-bg\"\n            style={{ backgroundImage: `url(${BASE_IMAGE_URL}/assets/points.png)` }}>\n\n            <HeaderSection BASE_IMAGE_URL={BASE_IMAGE_URL} t={t} />\n\n            <div className=\"flex justify-center\">\n                <SearchInput\n                    onChange={handleSearch}\n                    placeholder={t('chat.searchAssistantOrSkill')}\n                    className=\"w-[600px] min-w-[300px] mt-[10px]\"\n                />\n            </div>\n\n            <div className=\"mt-[20px] px-12\">\n                <div className=\"flex flex-wrap\">\n                    {renderCategoryTags()}\n                    {user.role === 'admin' && (\n                        <SettingIcon\n                            onClick={() => setIsLabelModalOpen(true)}\n                            className=\"h-[30px] w-[30px] cursor-pointer\"\n                        />\n                    )}\n                </div>\n            </div>\n\n            <div className=\"relative overflow-y-auto h-[calc(100vh-308px)]\">\n                <div className=\"flex flex-wrap gap-2 px-12 scrollbar-hide pt-4 pb-20\">\n                    {renderChatOptions()}\n                    {hasMoreData && <LoadMore onScrollLoad={handleLoadMore} />}\n                </div>\n            </div>\n\n            <MarkLabel\n                open={isLabelModalOpen}\n                home={categoryTags}\n                onClose={handleCloseLabelModal}\n            />\n        </div>\n    )\n}\n\nconst HeaderSection = ({ BASE_IMAGE_URL, t }) => (\n    <div className=\"flex justify-center place-items-center gap-20\">\n        <img\n            className=\"w-[138px]\"\n            src={`${BASE_IMAGE_URL}/assets/application-start-logo.png`}\n            alt=\"Application Logo\"\n        />\n        <p className=\"text-2xl leading-[50px] dark:text-[#D4D4D4]\">\n            {t('chat.chooseOne')}\n            <b className=\"dark:text-[#D4D4D4] font-semibold\">{t('chat.dialogue')}</b>\n            <br />\n            {t('chat.start')}\n            <b className=\"dark:text-[#D4D4D4] font-semibold\">{t('chat.wenqingruijian')}</b>\n        </p>\n    </div>\n)\n\nconst useAutoWidth = () => {\n    const [width, setWidth] = useState(0);\n    const cardboxRef = useRef<HTMLDivElement>(null);\n    useEffect(() => {\n        const resize = () => {\n            // console.log('cardboxRef.current.width :>> ', cardboxRef.current.offsetWidth);\n            setWidth(Math.floor(cardboxRef.current.offsetWidth / 323) * 323)\n        }\n        if (cardboxRef.current) {\n            window.addEventListener('resize', resize)\n            resize()\n        }\n\n        return () => {\n            window.removeEventListener('resize', resize)\n        }\n    }, []);\n    return [width, cardboxRef];\n\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ChatPanne.tsx",
    "content": "\nimport AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport ChatComponent from \"@/components/bs-comp/chatComponent\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport ChatPane from \"@/pages/BuildPage/flow/FlowChat/ChatPane\";\nimport { useMessageStore as useFlowMessageStore } from \"@/pages/BuildPage/flow/FlowChat/messageStore\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { AppNumType } from \"@/types/app\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { TabsContext } from \"../../../contexts/tabsContext\";\nimport { postBuildInit } from \"../../../controllers/API\";\nimport { Variable, getFlowApi } from \"../../../controllers/API/flow\";\nimport { FlowType, NodeType } from \"../../../types/flow\";\nimport { validateNode } from \"../../../utils\";\nimport ChatReportForm from \"../components/ChatReportForm\";\nimport ForcePrompt from \"./ForcePrompt\";\n\nexport default function ChatPanne({ customWsHost = '', chatList, chat, appendHistory = false, data, version = 'v1' }) {\n    const { id, chatId, type } = data\n    const { t } = useTranslation()\n\n    const [flow, setFlow] = useState<any>(null)\n    const flowRef = useRef(null)\n    const [assistant, setAssistant] = useState<any>(null)\n    const [workflow, setWorkflow] = useState<any>(null)\n    const { assistantState, loadAssistantState, destroy } = useAssistantStore()\n    // console.log('data :>> ', flow);\n    const build = useBuild()\n    const { messages, loadHistoryMsg, loadMoreHistoryMsg, changeChatId, clearMsgs } = useMessageStore()\n    const { chatId: flowChatId, loadHistoryMsg: loadFlowHistoryMsg, changeChatId: changeFlowChatId } = useFlowMessageStore()\n\n    useEffect(() => {\n        return destroy\n    }, [])\n\n    const [autoRun, setAutoRun] = useState(false)\n    // console.log('autoRun :>> ', autoRun);\n    const init = async () => {\n        const isV1 = version === 'v1';\n        window.chat_version = version\n\n        if (type === AppNumType.SKILL) {\n            setAssistant(null)\n            setWorkflow(null)\n            let _flow = { id, data: { nodes: [], edges: [], viewport: {} } } // await getFlowApi(id, version)\n            try {\n                _flow = await getFlowApi(id, version)\n                await build(_flow, chatId)\n            } catch (e) {\n                console.error('e :>> ', e);\n            }\n            if (isV1) {\n                loadHistoryMsg(_flow.id, chatId, {\n                    appendHistory,\n                    lastMsg: t('chat.historicalMessages')\n                });\n            } else {\n                clearMsgs();\n            }\n\n            flowRef.current = _flow\n            setFlow(_flow)\n            changeChatId(chatId) // ws\n\n        } else if (type === AppNumType.ASSISTANT) {\n            flowRef.current = null\n            setFlow(null)\n            setWorkflow(null)\n            let _assistant = { id }\n            try {\n                _assistant = await loadAssistantState(id, version)\n            } catch (e) {\n                console.error('e :>> ', e);\n            }\n\n            if (isV1) {\n                loadHistoryMsg(_assistant.id, chatId, {\n                    appendHistory,\n                    lastMsg: t('chat.historicalMessages')\n                });\n            } else {\n                clearMsgs();\n            }\n\n            setAssistant(_assistant)\n            changeChatId(chatId) // ws\n        } else {\n            setAssistant(null)\n            setFlow(null)\n            flowRef.current = null\n            setWorkflow(null)\n            let _flow = { id, data: { nodes: [], edges: [], viewport: {} } } // await getFlowApi(id, version)\n            try {\n                _flow = await getFlowApi(id, version)\n            } catch (e) {\n                console.error('e :>> ', e);\n            }\n\n            if (isV1) {\n                const res = await loadFlowHistoryMsg(_flow.id, chatId, {\n                    lastMsg: ''\n                });\n                setAutoRun(true);\n            } else {\n                clearMsgs();\n            }\n\n            const { data, ...f } = _flow\n            const { nodes, edges, viewport } = data\n\n            setTimeout(() => { // holding change autorun\n                setWorkflow({ ...f, nodes, edges, viewport })\n                changeFlowChatId(chatId)\n                version === 'v2' && setAutoRun(true)\n            }, 100);\n        }\n    }\n    useEffect(() => {\n        if (!id) {\n            flowRef.current = null\n            setFlow(null)\n            setAssistant(null)\n            setWorkflow(null)\n            return\n        }\n        init()\n    }, [data])\n\n\n\n    // ws 请求数据包装\n    const { tabsState } = useContext(TabsContext);\n    // 依赖 chatId更新闭包，不依赖 flow\n    const getWsParamData = (action, msg) => {\n        if (type === AppNumType.SKILL) {\n            const _flow = flowRef.current\n            let inputs = tabsState[_flow.id].formKeysData.input_keys;\n            const input = inputs.find((el: any) => !el.type)\n            const inputKey = input ? Object.keys(input)[0] : '';\n            const msgData = {\n                chatHistory: messages,\n                flow_id: _flow.id,\n                chat_id: chatId,\n                name: _flow.name,\n                description: _flow.description,\n                inputs: {}\n            } as any\n            if (msg) msgData.inputs = { ...input, [inputKey]: msg }\n            if (formDataRef.current?.length) {\n                msgData.inputs.data = formDataRef.current\n                formDataRef.current = null\n            }\n            if (action === 'continue') msgData.action = action\n            return [msgData, inputKey]\n        } else {\n            const inputKey = 'input';\n            const msgData = {\n                chatHistory: messages,\n                flow_id: data?.id || '',\n                chat_id: chatId,\n                name: assistant.name,\n                description: assistant.desc,\n                inputs: {}\n            } as any\n            if (msg) msgData.inputs = { [inputKey]: msg }\n            if (data) msgData.inputs.data = data\n            if (action === 'continue') msgData.action = action\n            return [msgData, inputKey]\n        }\n    }\n\n    // 应用链接\n    const { appConfig } = useContext(locationContext)\n    const token = localStorage.getItem(\"ws_token\") || '';\n    const host = appConfig.websocketHost || window.location.host;\n    let wsUrl = type === AppNumType.SKILL ? `${host}${__APP_ENV__.BASE_URL}/api/v1/chat/${id}?type=L1&t=${token}` :\n        type === AppNumType.ASSISTANT ? `${location.host}${__APP_ENV__.BASE_URL}/api/v1/assistant/chat/${id}?t=${token}` :\n            `${host}${__APP_ENV__.BASE_URL}/api/v1/workflow/chat/${id}?t=${token}&chat_id=${chatId}`\n\n    if (customWsHost) {\n        wsUrl = `${host}${__APP_ENV__.BASE_URL}${customWsHost}&t=${token}`\n    }\n\n    // sendmsg user name\n    const sendUserName = useMemo(() => {\n        if (!flow) return ''\n        const node = flow.data.nodes.find(el => el.data.type === 'AutoGenUser')\n        return node?.data.node.template['name'].value || ''\n    }, [flow])\n\n    const flowSate = useMemo(() => {\n        if (!flow) return { isRoom: false, isForm: false, isReport: false }\n        // 是否群聊\n        const isRoom = !!flow.data?.nodes.find(node => node.data.type === \"AutoGenChain\")\n        // 是否展示表单\n        const isForm = !!flow.data?.nodes.find(node => [\"VariableNode\", \"InputFileNode\"].includes(node.data.type))\n        // 是否报表\n        const isReport = !!flow.data?.nodes.find(node => \"Report\" === node.data.type)\n        return { isRoom, isForm, isReport }\n    }, [flow])\n\n    // 发送表单 (提交-》event触发发送-》getWsParamData获取参数时追加 data)\n    const formDataRef = useRef<any>(null)\n    const sendReport = (items: Variable[], str) => {\n\n        formDataRef.current = items.map(item => ({\n            id: item.nodeId,\n            name: item.name,\n            file_path: item.type === 'file' ? item.value : '',\n            value: item.type === 'file' ? '' : item.value\n        }))\n\n        const myEvent = new CustomEvent('userResendMsgEvent', {\n            detail: {\n                send: true,\n                message: str\n            }\n        });\n        document.dispatchEvent(myEvent);\n    }\n\n    if (!(flow || assistant || workflow)) {\n        return <div\n            className=\"flex-1 chat-box h-full overflow-hidden bs-chat-bg relative\"\n            style={{ backgroundImage: `url(${__APP_ENV__.BASE_URL}/assets/points.png)` }}\n        > </div>\n    }\n\n    return <div className=\"flex-1 min-w-0 min-h-0 bs-chat-bg\" >\n        {/* 技能会话 */}\n        {\n            flow && <div className={`w-full chat-box h-full relative px-6 ${type === AppNumType.SKILL ? 'block' : 'hidden'}`}>\n                {/* {flow && <ChatPanne chatId={chatId} flow={flow} />} */}\n                <div className=\"absolute flex top-2 gap-2 items-center z-10 bg-[rgba(255,255,255,0.8)] px-2 py-1 dark:bg-[#1B1B1B]\">\n                    <AppAvator id={flow.name} url={flow.logo} flowType={1} ></AppAvator>\n                    <span className=\"text-sm\">{flow.name}</span>\n                </div>\n                <ChatComponent\n                    form={flowSate.isForm}\n                    logo={<AppAvator id={flow.name} url={flow.logo} flowType={1} ></AppAvator>}\n                    stop\n                    version={version}\n                    // stop={flowSate.isReport || flowSate.isRoom}\n                    useName={sendUserName}\n                    guideWord={flow.guide_word}\n                    wsUrl={wsUrl}\n                    onBeforSend={getWsParamData}\n                    loadMore={() => loadMoreHistoryMsg(flow.id, appendHistory)}\n                    inputForm={flowSate.isForm ? <ChatReportForm flow={flow} onStart={sendReport} /> : null}\n                />\n                {/* 强制提醒 */}\n                <ForcePrompt id={flow.id} />\n            </div>\n        }\n        {/* 助手会话 */}\n        {\n            assistant && <div className={`w-full chat-box h-full relative px-6 ${type === AppNumType.ASSISTANT ? 'block' : 'hidden'}`}>\n                {/* {flow && <ChatPanne chatId={chatId} flow={flow} />} */}\n                <div className=\"absolute flex top-2 gap-2 items-center z-10 bg-[rgba(255,255,255,0.8)] px-2 py-1 dark:bg-[#1B1B1B]\">\n                    <AppAvator id={assistant.name} url={assistant.logo} flowType={5} ></AppAvator>\n                    <span className=\"text-sm\">{assistant.name}</span>\n                </div>\n                <ChatComponent\n                    stop\n                    logo={<AppAvator id={assistant.name} url={assistant.logo} flowType={5} ></AppAvator>}\n                    chat={chat}\n                    useName={sendUserName}\n                    questions={assistantState.guide_question.filter((item) => item)}\n                    guideWord={assistantState.guide_word}\n                    wsUrl={wsUrl}\n                    onBeforSend={getWsParamData}\n                    loadMore={() => loadMoreHistoryMsg(assistant.id, appendHistory)}\n                    inputForm={null}\n                    version={version}\n                />\n                {/* 强制提醒 */}\n                <ForcePrompt id={assistant.id} />\n            </div>\n        }\n        {/* 工作流会话 */}\n        {\n            workflow && <div className={`w-full chat-box h-full relative ${type === AppNumType.FLOW ? 'block' : 'hidden'}`}>\n                <div className=\"absolute flex top-2 gap-2 items-center z-10 bg-[rgba(255,255,255,0.8)] px-6 py-1 dark:bg-[#1B1B1B]\">\n                    <AppAvator id={workflow.name} url={workflow.logo} flowType={10} ></AppAvator>\n                    <span className=\"text-sm\">{workflow.name}</span>\n                </div>\n                <ChatPane  autoRun={autoRun} chatId={flowChatId} flow={workflow} wsUrl={wsUrl} version={version} />\n            </div>\n        }\n    </div>\n};\n\n\n/**\n * build flow\n * 校验每个节点，展示进度及结果；返回input_keys;end_of_stream断开链接\n * 主要校验节点并设置更新setTabsState的 formKeysData\n */\n\nconst useBuild = () => {\n    const { toast } = useToast()\n    const { setTabsState } = useContext(TabsContext);\n    const { t } = useTranslation()\n\n    // SSE 服务端推送\n    async function streamNodeData(flow: FlowType, chatId: string) {\n        // Step 1: Make a POST request to send the flow data and receive a unique session ID\n        const { flowId } = await postBuildInit({ flow, chatId });\n        // Step 2: Use the session ID to establish an SSE connection using EventSource\n        let validationResults = [];\n        let finished = false;\n        let buildEnd = false\n        const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/build/stream/${flowId}?chat_id=${chatId}`;\n        const eventSource = new EventSource(apiUrl);\n\n        eventSource.onmessage = (event) => {\n            // If the event is parseable, return\n            if (!event.data) {\n                return;\n            }\n            const parsedData = JSON.parse(event.data);\n            // if the event is the end of the stream, close the connection\n            if (parsedData.end_of_stream) {\n                eventSource.close(); // 结束关闭链接\n                buildEnd = true\n                return;\n            } else if (parsedData.log) {\n                // If the event is a log, log it\n                // setSuccessData({ title: parsedData.log });\n            } else if (parsedData.input_keys) {\n                setTabsState((old) => {\n                    return {\n                        ...old,\n                        [flowId]: {\n                            ...old[flowId],\n                            formKeysData: parsedData,\n                        },\n                    };\n                });\n            } else {\n                // setProgress(parsedData.progress);\n                validationResults.push(parsedData.valid);\n            }\n        };\n\n        eventSource.onerror = (error: any) => {\n            console.error(\"EventSource failed:\", error);\n            eventSource.close();\n            if (error.data) {\n                const parsedData = JSON.parse(error.data);\n                toast({\n                    title: parsedData.error,\n                    variant: 'error',\n                    description: ''\n                });\n            }\n        };\n        // Step 3: Wait for the stream to finish\n        while (!finished) {\n            await new Promise((resolve) => setTimeout(resolve, 100));\n            finished = buildEnd // validationResults.length === flow.data.nodes.length;\n        }\n        // Step 4: Return true if all nodes are valid, false otherwise\n        return validationResults.every((result) => result);\n    }\n\n    // 延时器\n    async function enforceMinimumLoadingTime(\n        startTime: number,\n        minimumLoadingTime: number\n    ) {\n        const elapsedTime = Date.now() - startTime;\n        const remainingTime = minimumLoadingTime - elapsedTime;\n\n        if (remainingTime > 0) {\n            return new Promise((resolve) => setTimeout(resolve, remainingTime));\n        }\n    }\n\n    async function handleBuild(flow: FlowType, chatId: string) {\n        try {\n            const errors = flow.data.nodes.flatMap((n: NodeType) => validateNode(n, flow.data.edges))\n            if (errors.length > 0) {\n                return toast({\n                    title: t('chat.buildError'),\n                    variant: 'error',\n                    description: errors\n                });\n            }\n\n            const minimumLoadingTime = 200; // in milliseconds\n            const startTime = Date.now();\n\n            await streamNodeData(flow, chatId);\n            await enforceMinimumLoadingTime(startTime, minimumLoadingTime); // 至少等200ms, 再继续(强制最小load时间)\n        } catch (error) {\n            console.error(\"Error:\", error);\n        } finally {\n        }\n    }\n\n    return handleBuild\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ChatReportForm.tsx",
    "content": "import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport InputComponent from \"../../../components/inputComponent\";\nimport InputFileComponent from \"../../../components/inputFileComponent\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport { Variable, VariableType, getVariablesApi } from \"../../../controllers/API/flow\";\n\n/**\n * @component 会话报告生成专用表单\n * @description\n * 表单项数据由组件的参数信息和单独接口获取的必填信息及排序信息而来。\n */\nconst ChatReportForm = forwardRef(({ type = 'chat', vid = 0, flow, onStart }, ref) => {\n    const { setErrorData } = useContext(alertContext);\n    const { t } = useTranslation()\n\n    useImperativeHandle(ref, () => ({\n        submit: () => {\n            handleStart()\n        }\n    }));\n\n    // 从 api中获取\n    const [items, setItems] = useState<Variable[]>([])\n    useEffect(() => {\n        // chat -》L1； diff -> 对比测试\n        type === 'chat' ? getVariablesApi({ flow_id: flow.flow_id || flow.id }).then(\n            res => setItems(res)\n        ) : getVariablesApi({ version_id: vid, flow_id: flow.flow_id || flow.id }).then(\n            res => setItems(res)\n        )\n    }, [])\n\n    const handleChange = (index, value) => {\n        setItems((_items) => _items.map((item, i) =>\n            i === index ? { ...item, value } : item))\n    }\n\n    // 文件名 kv关系\n    const fileKindexVpath = useRef({})\n    const handleStart = () => {\n        // 校验\n        const errors = items.reduce((res, el) => {\n            if (el.required && !el.value) {\n                res.push(`${el.name} ${t('report.isRequired')}`)\n            }\n            if (el.type === VariableType.Text && el.value.length > Number(el.maxLength)) {\n                res.push(`${el.name} ${t('report.varLength')} ${el.maxLength}`)\n            }\n            return res\n        }, [])\n        if (errors.length) {\n            return setErrorData({\n                title: t('prompt'),\n                list: errors,\n            });\n        }\n\n        // 组装数据，抛出\n        const obj = items\n        const str = items.map((el, i) => `${el.name ? el.name + '：' : ''}${el.type === VariableType.File\n            ? fileKindexVpath.current[i] : el.value}\\n`).join('')\n        onStart(obj, str)\n    }\n\n    return <div className=\"flex flex-col gap-6 rounded-xl p-4 \">\n        <div className=\"max-h-[520px] overflow-y-auto\">\n            {items.map((item, i) => <div key={item.id} className=\"w-full text-sm\">\n                {item.name}\n                <span className=\"text-status-red\">{item.required ? \" *\" : \"\"}</span>\n                <div className=\"mt-2\">\n                    {item.type === VariableType.Text ? <InputComponent\n                        type='textarea'\n                        password={false}\n                        value={item.value}\n                        onChange={(val) => handleChange(i, val)}\n                    /> :\n                        item.type === VariableType.Select ?\n                            <Select onValueChange={(val) => handleChange(i, val)}>\n                                <SelectTrigger>\n                                    <SelectValue placeholder=\"\" />\n                                </SelectTrigger>\n                                <SelectContent>\n                                    <SelectGroup>\n                                        {\n                                            item.options.map(el => <SelectItem key={el.value} value={el.value}>{el.value}</SelectItem>)\n                                        }\n                                    </SelectGroup>\n                                </SelectContent>\n                            </Select> :\n                            item.type === VariableType.File ?\n                                <InputFileComponent\n                                    isSSO\n                                    disabled={false}\n                                    placeholder={t('report.fileRequired')}\n                                    value={''}\n                                    onChange={(e) => fileKindexVpath.current[i] = e}\n                                    fileTypes={[\"pdf\"]}\n                                    suffixes={flow.data.nodes.find(el => el.id === item.nodeId)\n                                        ?.data.node.template.file_path.suffixes || ['xxx']}\n                                    onFileChange={(val: string) => handleChange(i, val)}\n                                ></InputFileComponent> : <></>\n                    }\n                </div>\n            </div>\n            )}\n        </div>\n        {type === 'chat' && <Button size=\"sm\" onClick={handleStart}>{t('report.start')}</Button>}\n    </div>\n});\n\nexport default ChatReportForm"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/FileViewPanne.tsx",
    "content": "import FileView from \"@/components/bs-comp/FileView\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport DocxPreview from \"@/pages/KnowledgePage/components/DocxFileViewer\";\nimport TxtFileViewer from \"@/pages/KnowledgePage/components/TxtFileViewer\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function FileViewPanne({ file }) {\n    const { t } = useTranslation()\n    const MemoizedFileView = React.memo(FileView);\n    const [postion, setPositon] = useState(null)\n    const [currentIndex, setCurrentIndex] = useState(0)\n    const [showP, setShowP] = useState(true) // 展示来源段落menu\n\n    const labels = useMemo(() => {\n        const map = {}\n        if (!file.chunks[0].box?.[0]) {\n            setPositon([0, 0])\n            setShowP(false)\n            return map\n        }else {\n            setShowP(true)\n        }\n        file.chunks.forEach(chunk => {\n            chunk.box.forEach(el => {\n                if (!map[el.page]) {\n                    map[el.page] = []\n                }\n                map[el.page].push({ id: generateUUID(8), label: el.bbox, active: true, txt: '' })\n            })\n        })\n        console.log('file.chunks[0].box[0].page :>> ', file.chunks);\n        setPositon([file.chunks[0].box[0].page, file.chunks[0].box[0].bbox[1] || 0])\n        return map\n    }, [file.chunks])\n\n    const handleJump = (i: number, chunk: typeof file.chunks[number]) => {\n        setCurrentIndex(i)\n        //postion: [page, label[1] + random] : null\n        const random = Math.random() / 100 // 随机偏移量\n        setPositon([chunk.box[0].page, chunk.box[0].bbox[1] || 0 + random])\n    }\n\n    const suffix = useMemo(() => {\n        return file.fileName.split('.').pop().toLowerCase()\n    }, [file.fileName])\n\n    const fileView = () => {\n        const previewFileUrl = file.fileUrl\n        const newVersion = ['etl4lm', 'un_etl4lm'].includes(file.parse_type)\n        if (!newVersion) {\n            if (suffix === 'pdf' || file.parse_type === 'uns') {\n                return previewFileUrl && <MemoizedFileView scrollTo={postion} fileUrl={file.fileUrl} labels={labels} />\n            } else {\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">旧版文件格式暂不支持预览</div>\n            }\n        }\n        switch (suffix) {\n            case 'ppt':\n            case 'pptx':\n            case 'pdf':\n                return previewFileUrl && <MemoizedFileView startIndex={0} scrollTo={postion} fileUrl={file.fileUrl} labels={labels} />\n            case 'csv': return <TxtFileViewer filePath={previewFileUrl} />\n            case 'txt': return <TxtFileViewer filePath={previewFileUrl} />\n            case 'md': return <TxtFileViewer markdown filePath={previewFileUrl} />\n            case 'html': return <TxtFileViewer html filePath={previewFileUrl} />\n            case 'doc':\n            case 'docx': return <DocxPreview filePath={previewFileUrl} />\n            case 'png':\n            case 'jpg':\n            case 'jpeg':\n            case 'bmp': return <img\n                className=\"border\"\n                src={previewFileUrl.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)} alt=\"\" />\n            default:\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">该类型文件不支持预览</div>\n        }\n    }\n\n    return <div className=\"flex-1 bg-gray-100 rounded-md py-4 px-2 relative\" onContextMenu={(e) => e.preventDefault()}>\n        <div className=\"h-full overflow-auto\">\n        {fileView()}\n        </div>\n        {/* chunk menu */}\n        {showP && <div className=\"absolute left-[0px] rounded-sm p-4 px-0 top-[50%] translate-y-[-50%] max-2xl:scale-75 origin-top-left\">\n            <p className=\"mb-1 text-sm font-bold text-center rounded-sm bg-[rgb(186,210,249)] text-blue-600\">{t('chat.sourceTooltip')}</p>\n            <div className=\"flex flex-col gap-2 \">\n                {file.chunks.map((chunk, i) =>\n                    <div key={i}\n                        onClick={() => handleJump(i, chunk)}\n                        className={`flag h-[38px] leading-[38px] px-6 pl-4 border-2 border-l-0 border-r-0 border-[rgba(53,126,249,.60)] bg-[rgba(255,255,255,0.2)]  text-blue-600 ${currentIndex === i && 'font-bold active'} cursor-pointer relative`}\n                    >\n                        <span>{chunk.score}</span>\n                    </div>\n                )}\n            </div>\n        </div>}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ForcePrompt.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\n// 强制提示组件\nexport default function ForcePrompt({ id }) {\n    const { appConfig } = useContext(locationContext);\n    const [isPrompted, setIsPrompted] = useState(false);\n    const { t } = useTranslation()\n\n    // 检查是否已经提示过\n    const checkPrompted = (id: string): boolean => {\n        const str = localStorage.getItem(\"force_chat_prompt\");\n        if (!str) return false;\n\n        try {\n            // 尝试将字符串解析为对象\n            const map = JSON.parse(str);\n\n            // 检查 id 是否存在于 map 中\n            return !!map[id];\n        } catch (error) {\n            // 如果 JSON 解析失败，则返回 false\n            console.error(\"Error parsing JSON from localStorage:\", error);\n            return false;\n        }\n    };\n\n    useEffect(() => {\n        setIsPrompted(appConfig.chatPrompt && !checkPrompted(id));\n    }, [appConfig, id]);\n\n    const handleOk = () => {\n      try {\n          const str = localStorage.getItem(\"force_chat_prompt\");\n          let map;\n\n          if (str) {\n              map = JSON.parse(str);\n              // 验证 map 是否为对象\n              if (typeof map !== \"object\") {\n                  throw new Error(\"Invalid data format in local storage\");\n              }\n          } else {\n              map = {};\n          }\n\n          map[id] = true;\n          localStorage.setItem(\"force_chat_prompt\", JSON.stringify(map));\n          setIsPrompted(false); // 关闭提示\n      } catch (error) {\n          console.error(\"Error occurred while handling local storage:\", error);\n      }\n    };\n\n    if (!isPrompted) return null;\n\n    return (\n        <div className=\"absolute top-0 left-0 w-full h-full z-50 bg-[rgba(0,0,0,0.1)] flex items-center justify-center\">\n            <div className=\"w-[600px] max-w-[80%] bg-background-login shadow-md text-center p-10 rounded-md\">\n                <div className=\"text-left break-all mb-10\">\n                    <p className=\"text-gray-950 dark:text-slate-50 mb-5 text-center\">{t('chatTipsTitle')}</p>\n                    {t('chatTips').split('\\n').map((line, index) => (\n                        <p className=\"text-md mb-1 text-gray-600 dark:text-slate-400\" key={index}>{line}</p>\n                    ))}\n                </div>\n                <Button className=\"text-slate-50\" onClick={handleOk}>我知道了</Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/MarkLabel.tsx",
    "content": "import { PromptIcon } from '@/components/bs-icons/prompt';\nimport { Button } from '@/components/bs-ui/button';\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { cname } from '@/components/bs-ui/utils';\nimport { getAllLabelsApi, updateHomeLabelApi } from \"@/controllers/API/label\";\nimport { captureAndAlertRequestErrorHoc } from '@/controllers/request';\nimport { CircleX } from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from 'react-i18next';\n\nfunction DragItem({ className = '', data, children, onCancel }) {\n    return <div className={cname('h-7 w-32 relative rounded-xl border flex place-items-center', className)}>\n        <CircleX onClick={(e) => { e.stopPropagation(); onCancel(data.id) }}\n            className='text-gray-400 absolute top-[-6px] right-[-6px] cursor-pointer size-4' />\n        <div className='bg-gray-500 rounded-full w-[26px] h-full text-center'>\n            <span className='text-slate-50 font-bold text-sm'>{data.index}</span>\n        </div>\n        <div className='ml-2 truncate'>\n            {children}\n        </div>\n    </div>\n}\n\nexport default function MarkLabel({ open, home, onClose }) {\n    const { t } = useTranslation()\n    const [labels, setLabels] = useState([])\n    const [selected, setSelected] = useState([])\n    const { message } = useToast()\n\n    useEffect(() => {\n        async function init() {\n            const all = await getAllLabelsApi()\n            const newData = all.data.map(d => {\n                const res = home.find(h => h.value === d.id)\n                return res ? { label: d.name, value: d.id, selected: true } : { label: d.name, value: d.id, selected: false }\n            })\n            setLabels(newData)\n            setSelected(home)\n        }\n        init()\n    }, [home])\n\n    const handleCancel = () => {\n        onClose(false)\n    }\n\n    const handleConfirm = async () => {\n        await captureAndAlertRequestErrorHoc(updateHomeLabelApi(selected.map(s => s.value)))\n        onClose(true)\n    }\n\n    const handleSelect = (id) => {\n        setLabels(pre => {\n            const newData = pre.map(l => l.value === id ? { ...l, selected: !l.selected } : l)\n            if (newData.filter(d => d.selected).length > 10) {\n                message({\n                    title: t('prompt'),\n                    variant: 'warning',\n                    description: '最多选择10个标签'\n                })\n                return pre\n            }\n            const select = newData.find(d => d.value === id && d.selected)\n            setSelected(select ? [...selected, select] : pre => pre.filter(d => d.value !== id))\n            return newData\n        })\n    }\n\n    const handleDelete = (id) => {\n        setSelected(pre => pre.filter(d => d.value !== id))\n        setLabels(pre => pre.map(d => d.value === id ? { ...d, selected: !d.selected } : d))\n    }\n\n    const handleDragEnd = (result) => {\n        if (!result.destination) return\n        const newData = selected\n        const [moveItem] = newData.splice(result.source.index, 1)\n        newData.splice(result.destination.index, 0, moveItem)\n        setSelected(newData)\n        setFlag(false)\n    }\n\n    const [flag, setFlag] = useState(false) // 解决拖拽映射位置错位\n\n    return <Dialog open={open} onOpenChange={onClose}>\n        <DialogContent className='h-[80%] max-w-[70%] overflow-hidden'>\n            <DialogHeader>\n                <DialogTitle className='flex items-center space-x-2'>\n                    <PromptIcon />\n                    <span className='text-sm text-gray-500'>{t('chat.operationTips')}</span>\n                </DialogTitle>\n            </DialogHeader>\n            <div className='h-[650px] w-full grid grid-cols-[70%_30%]'>\n                <div className='ml-10'>\n                    <div className='w-full relative top-[50%] transform -translate-y-[50%]'>\n                        {\n                            labels.map(l =>\n                                <Button onClick={() => handleSelect(l.value)}\n                                    size='sm'\n                                    className={`ml-4 mt-4 p-1 ${!l.selected && 'bg-blue-300 hover:bg-blue-300'} w-[120px]`}>\n                                    <span className='truncate'>{l.label}</span>\n                                </Button>)\n                        }\n                    </div>\n                </div>\n                <div className='border-l text-gray-500'>\n                    <div className='ml-4'>\n                        <span className='text-md font-bold'>{t('chat.selected')}：{selected.length}/10</span>\n                        <DragDropContext onDragEnd={handleDragEnd} onDragStart={() => setFlag(true)} onDragUpdate={() => setFlag(true)}>\n                            <Droppable droppableId={'list'}>\n                                {(provided) => (\n                                    <div {...provided.droppableProps} ref={provided.innerRef}>\n                                        {selected.map((b, index) => (\n                                            <Draggable key={'drag' + b.value} draggableId={'drag' + b.value} index={index}>\n                                                {(provided) => (\n                                                    <div ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps}\n                                                        style={flag ? { ...provided.draggableProps.style, position: 'relative', left: 0, top: 0 } : { ...provided.draggableProps.style }}>\n                                                        <DragItem onCancel={handleDelete} data={{ index: index + 1, id: b.value }} className='mt-4 w-[170px]'>\n                                                            <span className='font-bold text-sm'>{b.label}</span>\n                                                        </DragItem>\n                                                    </div>\n                                                )}\n                                            </Draggable>\n                                        ))}\n                                        {provided.placeholder}\n                                    </div>\n                                )}\n                            </Droppable>\n                        </DragDropContext>\n                    </div>\n                </div>\n            </div>\n            <DialogFooter className='absolute bottom-6 right-6'>\n                <Button variant=\"outline\" className=\"h-10 w-[120px] px-16\" onClick={handleCancel}>{t('cancel')}</Button>\n                <Button className=\"px-16 h-10 w-[120px]\" onClick={handleConfirm}>{t('save')}</Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ResouceModal.tsx",
    "content": "import { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Dialog, DialogContent } from \"@/components/bs-ui/dialog\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { CircleHelp, Download, Import } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { getSourceChunksApi, splitWordApi } from \"../../../controllers/API\";\nimport { downloadFile } from \"../../../util/utils\";\nimport FileViewPanne from \"./FileViewPanne\";\n\n// 顶部答案区\nconst Anwser = ({ id, msg, onInit, onAdd, fullScreen = false }) => {\n    const [html, setHtml] = useState('')\n    const { t } = useTranslation()\n    const pRef = useRef(null)\n\n    // init\n    useEffect(() => {\n        onInit([])\n        const loadData = () => {\n            splitWordApi(msg, id).then((res) => {\n                // 匹配\n                const reg = new RegExp(`(${res.join('|')})`, 'g')\n                setHtml(msg.replace(reg, '<span>$1</span>'))\n                onInit(res)\n            }).catch(e => {\n                // 自动重试\n                e === t('errors.14001') && setTimeout(() => {\n                    loadData()\n                }, 1800);\n            })\n        }\n        msg && loadData()\n    }, [])\n\n    // add \n    useEffect(() => {\n        const handleclick = (e) => {\n            if (e.target.tagName === 'SPAN') {\n                onAdd(e.target.innerText)\n            }\n        }\n        pRef.current.addEventListener('click', handleclick)\n        return () => pRef.current?.removeEventListener('click', handleclick)\n    }, [])\n\n    return <div className=\"bg-gray-100 dark:bg-[#3C4048] rounded-md py-4 px-2 max-h-24 mb-4 overflow-y-auto\" style={{ display: fullScreen ? 'none' : 'block' }}>\n        <p ref={pRef} className=\"anwser-souce\" dangerouslySetInnerHTML={{ __html: html }}></p>\n    </div>\n}\n\n// \nlet timer = null\nconst ResultPanne = ({ chatId, words, data, onClose, onAdd, children, fullScreen = false, closeDialog }:\n    { chatId: string, words: string[], data: any, onClose: any, fullScreen: boolean, onAdd: any, children: any, closeDialog: () => void }) => {\n    const { t } = useTranslation()\n    const [editCustomKey, setEditCustomKey] = useState(false)\n    const inputRef = useRef(null)\n\n    // 移动端\n    const [collapse, setCollapse] = useState(true)\n    const [isMobile, setIsMobile] = useState(true)\n    const [width, setWidth] = useState(window.innerWidth);\n    const [height, setHeight] = useState(window.innerHeight);\n    const checkIsMobile = () => {\n        if (width < 640) {\n            setIsMobile(true)\n        } else {\n            setIsMobile(false)\n        }\n    }\n    useEffect(() => {\n        const handleResize = () => {\n            setWidth(window.innerWidth);\n            setHeight(window.innerHeight);\n        };\n        window.addEventListener(\"resize\", handleResize);\n        checkIsMobile()\n        return () => {\n            window.removeEventListener(\"resize\", handleResize);\n        }\n    }, [width])\n    // 移动端 e\n\n    const handleAddKeyword = (str: string) => {\n        setEditCustomKey(false)\n        if (!str) return\n        if (inputRef.current) inputRef.current.value = ''\n        onAdd(str)\n    }\n\n    // 文件s\n    const [files, setFiles] = useState([])\n    const [file, setFile] = useState(null)\n    const loadFiles = () => {\n        // if (!words.length) return setFiles([])\n        clearTimeout(timer) // 简单防抖\n        timer = setTimeout(() => {\n            getSourceChunksApi(chatId, data.messageId, words.join(';')).then((_files) => {\n                setFiles(_files)\n                // 默认打开第一个文件\n                _files && setFile(_files[0])\n            })\n        }, 200);\n    }\n    useEffect(() => {\n        loadFiles()\n    }, [words])\n\n    // input show\n    const handleOpenInput = () => {\n        setEditCustomKey(true)\n        setTimeout(() => document.getElementById('taginput')?.focus(), 0);\n    }\n\n    return <div className=\"flex gap-4 relative\" style={{ height: fullScreen ? '100vh' : !isMobile ? 'calc(100vh - 10rem)' : 'calc(100vh - 4rem)' }}>\n        {\n            isMobile && <div className=\"absolute top-0 left-4 z-50 bg-gray-100 dark:bg-gray-950 py-1 px-2 pb-2 rounded-md\">\n                {!collapse && <span onClick={() => { setCollapse(true) }} className=\"\">收起</span>}\n                {collapse && <span onClick={() => { setCollapse(false) }} className=\"\">展开</span>}\n            </div>\n        }\n        {\n            isMobile && <div className=\"absolute top-0 right-4 z-10 bg-gray-100 dark:bg-gray-950 py-1 px-2 pb-2 rounded-md\">\n                <span onClick={closeDialog} >关闭</span>\n            </div>\n        }\n        {/* left */}\n        {\n            (!isMobile || !collapse) && <div className=\"sm:w-[300px] bg-gray-100 dark:bg-[#3C4048] rounded-md py-4 px-2 h-full overflow-y-auto no-scrollbar w-[200px] max-h-[100%] sm:max-h-full absolute sm:static z-20 sm:z-auto\">\n                {/* label */}\n                <div className=\"mb-4 text-sm font-bold space-x-1 hidden sm:block\">\n                    <div className=\"flex\">\n                        <span>{t('chat.filterLabel')}</span>\n                        <TooltipProvider delayDuration={100}>\n                            <Tooltip>\n                                <TooltipTrigger>\n                                    <CircleHelp className=\"w-4 h-4\" />\n                                </TooltipTrigger>\n                                <TooltipContent>\n                                    <p className=\"w-[170px] break-words\">{t('chat.tooltipText')}</p>\n                                </TooltipContent>\n                            </Tooltip>\n                        </TooltipProvider>\n                    </div>\n                </div>\n                <div className=\"flex flex-wrap gap-2 text-sm\">\n                    {words.map((str, i) => <div key={str} className=\"badge rounded-md px-2 badge-info h-[auto] gap-2 text-gray-600 bg-[rgba(53,126,249,.15)] dark:text-slate-50\">{str}<span className=\"cursor-pointer font-thin\" onClick={() => onClose(i)}>x</span></div>)}\n                    {\n                        editCustomKey ? <div className=\"badge badge-info cursor-pointer bg-[rgba(53,126,249,.15)]\"><input ref={inputRef} id=\"taginput\" className=\"w-20 h-4 py-0 border-none outline-none bg-gray-50\"\n                            onKeyDown={(event) => {\n                                if (event.key === \"Enter\" && !event.shiftKey) {\n                                    handleAddKeyword(inputRef.current.value);\n                                }\n                            }}\n                            onBlur={() => {\n                                handleAddKeyword(inputRef.current.value);\n                            }}></input></div> :\n                            <div className=\"badge badge-info rounded-md px-2 cursor-pointer bg-[rgba(53,126,249,.86)] text-gray-50\" onClick={handleOpenInput}><span>{t('chat.addCustomLabel')}</span></div>\n                    }\n                </div>\n                {/* files */}\n                <div className=\"mt-4\">\n                    <p className=\"mb-4 text-sm font-bold\">{t('chat.sourceDocumentsLabel')}</p>\n                    {files.map(_file =>\n                        _file.right ? <div key={_file.id} onClick={() => setFile(_file)} className={`group rounded-xl bg-[#fff] dark:bg-[#303134] hover-bg-gray-200 flex items-center px-4 mb-2 relative min-h-16 cursor-pointer ${file?.id === _file.id && 'bg-gray-200'}`}>\n                            <p className=\"text-sm break-all\">{_file.fileName}</p>\n                            <div className=\"absolute right-1 top-1 gap-2 hidden group-hover:flex\">\n                                {\n                                    _file.parse_type === 'uns' && _file.fileUrl && <Tip content={t('chat.downloadPDFTooltip')}>\n                                        <a href=\"javascript:;\" onClick={(event) => { downloadFile(checkSassUrl(_file.fileUrl), _file.fileName.replace(/\\.[\\w\\d]+$/, '.pdf')); event.stopPropagation() }} >\n                                            <Import color=\"rgba(53,126,249,1)\" size={22} strokeWidth={1.5}></Import>\n                                        </a>\n                                    </Tip>\n                                }\n                                {\n                                    _file.originUrl && <Tip content={t('chat.downloadOriginalTooltip')}>\n                                        <a href=\"javascript:;\" onClick={(event) => { downloadFile(checkSassUrl(_file.originUrl), _file.fileName); event.stopPropagation() }} >\n                                            <Download color=\"rgba(53,126,249,1)\" size={20} strokeWidth={1.5}></Download>\n                                        </a>\n                                    </Tip>\n                                }\n                            </div>\n                            <span className=\"absolute right-1 bottom-1 text-blue-400 text-sm\">{_file.score}</span>\n                        </div> :\n                            <div key={_file.id} className={`msk group rounded-xl bg-[#fff] hover-bg-gray-200 flex items-center px-4 mb-2 relative min-h-16 cursor-pointer ${file?.id === _file.id && 'bg-gray-200'}`}>\n                                <p className=\"text-sm blur-sm\">是真的马赛克.msk</p>\n                                <span className=\"absolute right-1 bottom-1 text-blue-400 text-sm\">{_file.score}</span>\n                            </div>\n                    )}\n                    {!files.length && <p className=\"text-sm text-center mt-10 text-gray-500\">{t('chat.noMatchedFilesMessage')}</p>}\n                </div>\n            </div>\n        }\n        {/* file pane */}\n        {file && children(file)}\n    </div>\n}\n\nexport const ResouceContent = ({ data, setOpen, fullScreen = false }) => {\n    const { t } = useTranslation()\n\n    const [keywords, setKeywords] = useState([])\n    const handleAddWord = (word: string) => {\n        // 去重 更新\n        setKeywords(oldWords => oldWords.find(wd => wd === word) ? oldWords : [...oldWords, word])\n    }\n\n    const handleDelKeyword = (index: number) => {\n        setKeywords(keywords.filter((wd, i) => i !== index))\n    }\n\n    const [loading, setLoading] = useState(true)\n    const handleAnwserInit = (words) => {\n        setKeywords(words)\n        if (words.length) {\n            setLoading(false)\n        }\n    }\n\n\n    return <div className=\"relative\">\n        {\n            loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        }\n        <Anwser\n            id={data.messageId}\n            fullScreen={fullScreen}\n            msg={data.message}\n            onInit={handleAnwserInit}\n            onAdd={handleAddWord}></Anwser>\n        <ResultPanne\n            words={keywords}\n            fullScreen={fullScreen}\n            chatId={data.chatId}\n            data={data}\n            onClose={handleDelKeyword}\n            onAdd={handleAddWord}\n            closeDialog={() => setOpen(false)}\n        >\n            {\n                (file) => file.fileUrl ? <FileViewPanne file={file} /> :\n                    <div className=\"flex-1 bg-gray-100 dark:bg-[#3C4048] rounded-md text-center\">\n                        <p className=\"text-gray-500 text-md mt-[40%]\">{t('chat.fileStorageFailure')}</p>\n                    </div>\n            }\n        </ResultPanne>\n    </div>\n};\n\n\nconst ResouceModal = forwardRef((props, ref) => {\n    // labels\n\n    const [open, setOpen] = useState(false)\n    const [data, setData] = useState<any>({})\n    useImperativeHandle(ref, () => ({\n        openModal: (data) => {\n            setOpen(true)\n            setData(data)\n        }\n    }));\n\n\n    return <Dialog open={open} onOpenChange={setOpen} >\n        <DialogContent className=\"min-w-[80%]\">\n            {/* <DialogHeader>\n                <DialogTitle>{t('chat.feedback')}</DialogTitle>\n            </DialogHeader> */}\n            {open && <ResouceContent data={data} setOpen={setOpen} />}\n        </DialogContent>\n    </Dialog>\n});\n\nexport default ResouceModal\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/components/ThumbsMessage.tsx",
    "content": "\nimport { Button } from '@/components/bs-ui/button';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/bs-ui/dialog';\nimport { Textarea } from '@/components/bs-ui/input';\nimport { useToast } from '@/components/bs-ui/toast/use-toast';\nimport { forwardRef, useImperativeHandle, useRef, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { disLikeCommentApi } from \"../../../controllers/API\";\n\nconst ThumbsMessage = forwardRef((props, ref) => {\n    const { t } = useTranslation()\n\n    const [open, setOpen] = useState(false);\n    const [error, setError] = useState(false);\n\n    const msgRef = useRef(null)\n    const chatIdRef = useRef(null)\n\n    useImperativeHandle(ref, () => ({\n        openModal: (chatId) => {\n            setOpen(true)\n            chatIdRef.current = chatId\n            msgRef.current.value = ''\n        }\n    }));\n\n    const { message } = useToast()\n    const handleSubmit = () => {\n        if (!msgRef.current.value) {\n            message({\n                title: t('prompt'),\n                variant: 'warning',\n                description: t('chat.feedbackRequired')\n            });\n            return setError(true);\n        }\n\n        disLikeCommentApi(chatIdRef.current, msgRef.current.value)\n        setOpen(false);\n        setError(false);\n    };\n\n    return <Dialog open={open} onOpenChange={setOpen} >\n        <DialogContent className=\"sm:max-w-[425px]\">\n            <DialogHeader>\n                <DialogTitle>{t('chat.feedback')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"\">\n                <p className=\"mb-2\"></p>\n                <Textarea ref={msgRef} maxLength={9999} className={`textarea ${error ? 'border border-red-400' : ''}`} ></Textarea>\n                <div className=\"flex justify-end gap-4 mt-4\">\n                    <Button className='px-11' variant=\"outline\" onClick={() => setOpen(false)}>{t('cancel')}</Button>\n                    <Button className='px-11' onClick={handleSubmit}>{t('submit')}</Button>\n                </div>\n            </div>\n        </DialogContent>\n    </Dialog>\n});\n\nexport default ThumbsMessage;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ChatAppPage/index.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport LoadMore from \"@/components/bs-comp/loadMore\";\nimport { PlusBoxIcon, PlusBoxIconDark } from \"@/components/bs-icons/plusBox\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { message } from \"@/components/bs-ui/toast/use-toast\";\nimport { formatDate, formatStrTime } from \"@/util/utils\";\nimport { Trash2 } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { deleteChatApi, getChatsApi } from \"../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { useDebounce } from \"../../util/hook\";\nimport { generateUUID } from \"../../utils\";\nimport { useMessageStore as useFlowMessageStore } from \"../BuildPage/flow/FlowChat/messageStore\";\nimport HomePage from \"./components/ChatHome\";\nimport ChatPanne from \"./components/ChatPanne\";\n\nconst ChatItem = ({ chat, chatId, location, handleSelectChat, handleDeleteChat }) => {\n\n    return (\n        <div\n            key={chat.chat_id}\n            className={`group item w-full rounded-lg mt-2 p-4 relative hover:bg-[#EDEFF6] cursor-pointer dark:hover:bg-[#34353A] ${location\n                ? 'bg-[#f9f9fc] dark:bg-[#212122]'\n                : (chatId === chat.chat_id\n                    ? 'bg-[#EDEFF6] dark:bg-[#34353A]'\n                    : 'bg-[#f9f9fc] dark:bg-[#212122]')}`}\n            onClick={() => handleSelectChat(chat)}\n        >\n            <div className=\"flex place-items-center space-x-3\">\n                <div className=\"inline-block rounded-md\">\n                    <AppAvator id={chat.flow_name} url={chat.logo} flowType={chat.flow_type} className=\"min-w-5 size-5\"></AppAvator>\n                </div>\n                <p className=\"truncate text-sm font-bold leading-6\">{chat.flow_name}</p>\n            </div>\n            <span className=\"block text-xs text-gray-600 dark:text-[#8D8D8E] mt-3 break-words truncate\">\n                {chat.latest_message?.message || ''}\n            </span>\n            <div className=\"mt-6\">\n                <span className=\"text-gray-400 text-xs absolute bottom-2 left-4\">\n                    {formatStrTime(chat.update_time, 'MM 月 dd 日')}\n                </span>\n                <Trash2\n                    size={14}\n                    className=\"absolute bottom-2 right-2 text-gray-400 hidden group-hover:block\"\n                    onClick={(e) => handleDeleteChat(e, chat.chat_id)}\n                />\n            </div>\n        </div>\n    );\n};\n\n\nexport default function SkillChatPage() {\n    const { t } = useTranslation()\n    const [selectChat, setSelelctChat] = useState<any>({\n        id: '', chatId: '', type: ''\n    })\n\n    // 对话列表\n    const { chatList, chatId, chatsRef, setChatId, addChat, deleteChat, onScrollLoad } = useChatList()\n    const [tchat, setTchat] = useState<any>(null)\n    const [location, setLocation] = useState(true)\n    // select flow(新建会话)\n    const handlerSelectFlow = async (card) => {\n        if (!location) {\n            setLocation(true)\n            return\n        }\n        if (card) {\n            // 会话ID\n            const _chatId = generateUUID(32)\n            // add list\n            const chat = {\n                \"logo\": card.logo || '',\n                \"flow_name\": card.name,\n                \"flow_description\": card.desc,\n                \"flow_id\": card.id,\n                \"chat_id\": _chatId,\n                \"create_time\": \"-\",\n                \"update_time\": Date.now(),\n                \"flow_type\": card.flow_type\n            }\n            addChat(chat)\n            setSelelctChat({ id: card.id, chatId: _chatId, type: card.flow_type })\n            setChatId(_chatId)\n            setLocation(false)\n            setTchat(chat)\n        } else {\n            return message({ title: t('prompt'), variant: 'warning', description: t('chat.pleaseSelectAnApp') })\n        }\n    }\n\n    // select chat\n    const handleSelectChat = useDebounce(async (chat) => {\n        setLocation(false)\n        setTchat(chat)\n        if (chat.chat_id === chatId) return\n        setSelelctChat({ id: chat.flow_id, chatId: chat.chat_id, type: chat.flow_type })\n        setChatId(chat.chat_id)\n    }, 100, false)\n\n    // del\n    const handleDeleteChat = (e, id) => {\n        e.stopPropagation();\n        bsConfirm({\n            desc: t('chat.confirmDeleteChat'),\n            onOk(next) {\n                deleteChat(id);\n                setSelelctChat({ id: '', chatId: '', type: '' })\n                next()\n            }\n        })\n    }\n\n    return <div className=\"flex h-full\">\n        <div className=\"h-full w-[220px] relative border-r\">\n            <div className=\"absolute flex top-0 w-full bs-chat-bg bg-background-main-content z-10 p-2\">\n                {/* <SkillChatSheet onSelect={handlerSelectFlow}>\n                    <div id=\"newchat\" className=\"flex justify-around items-center w-[200px] h-[48px] rounded-lg px-10 py-2 mx-auto text-center text-sm cursor-pointer bg-background-main-content hover:bg-gray-100 dark:hover:bg-gray-800 relative z-10\">\n                        <PlusBoxIcon className=\"dark:hidden\"></PlusBoxIcon>\n                        <PlusBoxIconDark className=\"hidden dark:block\"></PlusBoxIconDark>\n                        {t('chat.newChat')}\n                    </div>\n                </SkillChatSheet> */}\n                <div onClick={() => handlerSelectFlow(null)} id=\"newchat\" className=\"flex justify-around items-center w-[200px] h-[48px] rounded-lg px-10 py-2 mx-auto text-center text-sm cursor-pointer bg-background-main-content hover:bg-gray-100 dark:hover:bg-gray-800 relative z-10\">\n                    <PlusBoxIcon className=\"dark:hidden\"></PlusBoxIcon>\n                    <PlusBoxIconDark className=\"hidden dark:block\"></PlusBoxIconDark>\n                    {t('chat.newChat')}\n                </div>\n            </div>\n            <div ref={chatsRef} className=\"scroll h-full overflow-y-scroll no-scrollbar p-2 pt-14\">\n                {\n                    chatList.map((chat, i) => (\n                        <ChatItem\n                            key={chat.chat_id}\n                            chat={chat}\n                            chatId={chatId}\n                            location={location}\n                            handleSelectChat={handleSelectChat}\n                            handleDeleteChat={handleDeleteChat}\n                        />\n                    ))\n                }\n                <LoadMore onScrollLoad={onScrollLoad} />\n            </div>\n        </div>\n        {/* chat */}\n    {\n    location\n        ? <HomePage onSelect={handlerSelectFlow}></HomePage>\n        : <ChatPanne\n            appendHistory \n            chatList={chatList}  \n            chat={tchat} // 获取当前选中的chat\n            data={selectChat}\n          ></ChatPanne>\n}\n    </div>\n};\n/**\n * 本地对话列表\n */\nconst useChatList = () => {\n    const [id, setId] = useState('')\n    const [chatList, setChatList] = useState([])\n    const chatsRef = useRef(null)\n    const { chatId, messages } = useMessageStore()\n    const { chatId: flowChatId, messages: flowMessages } = useFlowMessageStore()\n\n    useEffect(() => {\n        if (messages.length > 0 && chatId === messages[0].chat_id) {\n            let latest: any = messages[messages.length - 1]\n            // 有分割线取上一条\n            if (latest.category === 'divider') latest = messages[messages.length - 2] || {}\n            setChatList(chats => chats.map(chat => (chat.chat_id === chatId)\n                ? {\n                    ...chat,\n                    update_time: latest.update_time || formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss'),\n                    latest_message: {\n                        ...chat.latest_message,\n                        message: (latest.thought || latest.message[latest.chatKey] || latest.message).substring(0, 40)\n                    }\n                }\n                : chat)\n            )\n        }\n    }, [messages, chatId])\n\n    useEffect(() => {\n        // 根据工作流消息更新会话列表描述\n        if (flowMessages.length > 0 && flowChatId === flowMessages[0].chat_id) {\n            let latest: any = flowMessages[flowMessages.length - 1]\n            if (!['stream_msg', 'close', 'over'].includes(latest.category)) return\n            setChatList(chats => chats.map(chat => (chat.chat_id === flowChatId)\n                ? {\n                    ...chat,\n                    update_time: latest.create_time || formatDate(new Date(), 'yyyy-MM-ddTHH:mm:ss'),\n                    latest_message: {\n                        ...chat.latest_message,\n                        message: (latest.message.msg || latest.message).substring(0, 40)\n                    }\n                }\n                : chat)\n            )\n        }\n    }, [flowMessages, flowChatId])\n\n    const pageRef = useRef(0)\n    const onScrollLoad = async () => {\n        pageRef.current++\n        const res = await getChatsApi(pageRef.current)\n        setChatList((chats => [...chats, ...res])) \n    }\n\n    return {\n        chatList,\n        chatId: id,\n        chatsRef,\n        setChatId: setId,\n        addChat: (chat) => {\n            const newList = [chat, ...chatList]\n            // localStorage.setItem(ITEM_KEY, JSON.stringify(newList))\n            setChatList(newList)\n            setId(chat.chat_id)\n            setTimeout(() => {\n                chatsRef.current.scrollTop = 1\n            }, 0);\n        },\n        deleteChat: (id: string) => {\n            // api\n            captureAndAlertRequestErrorHoc(deleteChatApi(id).then(res => {\n                setChatList(oldList => oldList.filter(item => item.chat_id !== id))\n            }))\n        },\n        onScrollLoad\n    }\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/colorSchemes.ts",
    "content": "export interface ColorScheme {\n    id: string;\n    name: string;\n    description: string;\n    useCase: string;\n    colors: {\n        light: string[];\n        dark: string[];\n    };\n    background: {\n        light: string;\n        dark: string;\n    };\n    text: {\n        light: string;\n        dark: string;\n    };\n    border: {\n        light: string;\n        dark: string;\n    };\n}\n\nexport const colorSchemes: ColorScheme[] = [\n    {\n        id: 'professional-blue',\n        name: '专业蓝 - Professional Blue',\n        description: '经典专业的蓝色系，传达信任与稳重',\n        useCase: '金融、企业管理、数据分析',\n        colors: {\n            light: ['#3B82F6', '#60A5FA', '#93C5FD', '#BFDBFE', '#DBEAFE'],\n            dark: ['#60A5FA', '#3B82F6', '#2563EB', '#1D4ED8', '#1E40AF'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'vibrant-green',\n        name: '活力绿 - Vibrant Green',\n        description: '清新自然的绿色系，象征成长与健康',\n        useCase: '健康医疗、环保能源、教育培训',\n        colors: {\n            light: ['#10B981', '#34D399', '#6EE7B7', '#A7F3D0', '#D1FAE5'],\n            dark: ['#34D399', '#10B981', '#059669', '#047857', '#065F46'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'tech-purple',\n        name: '科技紫 - Tech Purple',\n        description: '现代科技感的紫色系，彰显创新与智能',\n        useCase: '科技产品、AI应用、创新创业',\n        colors: {\n            light: ['#8B5CF6', '#A78BFA', '#C4B5FD', '#DDD6FE', '#EDE9FE'],\n            dark: ['#A78BFA', '#8B5CF6', '#7C3AED', '#6D28D9', '#5B21B6'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'energetic-orange',\n        name: '能量橙 - Energetic Orange',\n        description: '充满活力的橙色系，激发热情与积极',\n        useCase: '电商零售、营销推广、社交媒体',\n        colors: {\n            light: ['#F59E0B', '#FBBF24', '#FCD34D', '#FDE68A', '#FEF3C7'],\n            dark: ['#FBBF24', '#F59E0B', '#D97706', '#B45309', '#92400E'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'premium-rose',\n        name: '高端玫瑰 - Premium Rose',\n        description: '优雅精致的玫瑰色系，展现品质与格调',\n        useCase: '时尚奢侈品、美容美妆、高端服务',\n        colors: {\n            light: ['#EC4899', '#F472B6', '#F9A8D4', '#FBCFE8', '#FCE7F3'],\n            dark: ['#F472B6', '#EC4899', '#DB2777', '#BE185D', '#9F1239'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'ocean-teal',\n        name: '海洋青 - Ocean Teal',\n        description: '沉稳清澈的青色系，传递专业与可靠',\n        useCase: '医疗健康、科研机构、咨询服务',\n        colors: {\n            light: ['#14B8A6', '#2DD4BF', '#5EEAD4', '#99F6E4', '#CCFBF1'],\n            dark: ['#2DD4BF', '#14B8A6', '#0D9488', '#0F766E', '#115E59'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'sunset-gradient',\n        name: '日落渐变 - Sunset Gradient',\n        description: '温暖多彩的渐变色系，富有感染力',\n        useCase: '创意设计、娱乐文化、品牌营销',\n        colors: {\n            light: ['#F59E0B', '#EF4444', '#EC4899', '#A855F7', '#6366F1'],\n            dark: ['#FBBF24', '#F87171', '#F472B6', '#C084FC', '#818CF8'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'minimalist-gray',\n        name: '极简灰 - Minimalist Gray',\n        description: '高级中性的灰色系，注重内容本身',\n        useCase: '新闻资讯、工具应用、极简设计',\n        colors: {\n            light: ['#64748B', '#94A3B8', '#CBD5E1', '#E2E8F0', '#F1F5F9'],\n            dark: ['#94A3B8', '#64748B', '#475569', '#334155', '#1E293B'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'rainbow-spectrum',\n        name: '彩虹光谱 - Rainbow Spectrum',\n        description: '完整的彩虹色谱，展现丰富多元的数据维度',\n        useCase: '多维度数据分析、教育科普、儿童产品',\n        colors: {\n            light: ['#EF4444', '#F59E0B', '#EAB308', '#22C55E', '#3B82F6', '#8B5CF6', '#EC4899'],\n            dark: ['#F87171', '#FBBF24', '#FDE047', '#4ADE80', '#60A5FA', '#A78BFA', '#F472B6'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'warm-palette',\n        name: '暖色盘 - Warm Palette',\n        description: '温暖舒适的暖色调组合，营造友好亲切的氛围',\n        useCase: '餐饮美食、家居生活、社区服务',\n        colors: {\n            light: ['#DC2626', '#EA580C', '#F59E0B', '#EAB308', '#FB923C'],\n            dark: ['#F87171', '#FB923C', '#FBBF24', '#FCD34D', '#FDBA74'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'cool-palette',\n        name: '冷色盘 - Cool Palette',\n        description: '清爽沉静的冷色调组合，传递冷静专业的印象',\n        useCase: '科技软件、医疗健康、金融保险',\n        colors: {\n            light: ['#0EA5E9', '#06B6D4', '#14B8A6', '#10B981', '#8B5CF6'],\n            dark: ['#38BDF8', '#22D3EE', '#2DD4BF', '#34D399', '#A78BFA'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'candy-pastel',\n        name: '糖果马卡龙 - Candy Pastel',\n        description: '柔和甜美的马卡龙色系，充满治愈感',\n        useCase: '儿童教育、美妆时尚、文创设计',\n        colors: {\n            light: ['#F9A8D4', '#FBCFE8', '#DDD6FE', '#BFDBFE', '#A7F3D0'],\n            dark: ['#F472B6', '#E879F9', '#C084FC', '#60A5FA', '#34D399'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'neon-bright',\n        name: '霓虹荧光 - Neon Bright',\n        description: '高饱和度的霓虹色系，极具视觉冲击力',\n        useCase: '电竞游戏、音乐娱乐、潮流文化',\n        colors: {\n            light: ['#FF006E', '#FF9500', '#FFED00', '#00F5FF', '#B967FF'],\n            dark: ['#FF1A8C', '#FFB84D', '#FFF566', '#33F7FF', '#D499FF'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'earth-natural',\n        name: '大地自然 - Earth Natural',\n        description: '沉稳温润的大地色系，贴近自然本真',\n        useCase: '环保公益、农业农产、文化艺术',\n        colors: {\n            light: ['#92400E', '#B45309', '#CA8A04', '#65A30D', '#0F766E'],\n            dark: ['#D97706', '#F59E0B', '#EAB308', '#84CC16', '#14B8A6'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'complementary-contrast',\n        name: '互补对比 - Complementary Contrast',\n        description: '高对比度的互补色组合，强化数据差异',\n        useCase: '对比分析、竞品研究、AB测试',\n        colors: {\n            light: ['#3B82F6', '#F59E0B', '#10B981', '#EF4444', '#8B5CF6'],\n            dark: ['#60A5FA', '#FBBF24', '#34D399', '#F87171', '#A78BFA'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'morandi-muted',\n        name: '莫兰迪灰调 - Morandi Muted',\n        description: '高级莫兰迪色系，低饱和度彰显品味',\n        useCase: '高端品牌、艺术设计、精品电商',\n        colors: {\n            light: ['#9CA3AF', '#A8A29E', '#D1C4B0', '#B4C7C9', '#C7B8D4'],\n            dark: ['#D1D5DB', '#D6D3D1', '#E7D4BC', '#CFDFE1', '#DDD2E9'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'vivid-rainbow',\n        name: '鲜艳彩虹 - Vivid Rainbow',\n        description: '高亮度的多彩组合，充满活力与创意',\n        useCase: '创意工作室、儿童产品、节日活动',\n        colors: {\n            light: ['#FF4D6A', '#FF9500', '#FFD60A', '#34C759', '#007AFF', '#AF52DE', '#FF2D55'],\n            dark: ['#FF6B82', '#FFB84D', '#FFE766', '#5DDC7A', '#3399FF', '#C97FF0', '#FF5A72'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'tropical-paradise',\n        name: '热带天堂 - Tropical Paradise',\n        description: '热情奔放的热带色彩，洋溢夏日活力',\n        useCase: '旅游度假、运动健身、生活方式',\n        colors: {\n            light: ['#FF6B9D', '#FF8C42', '#FFC93C', '#07D092', '#00B4D8'],\n            dark: ['#FF8AB8', '#FFA366', '#FFD866', '#2CE3AC', '#33C9EC'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n    {\n        id: 'autumn-harvest',\n        name: '秋日丰收 - Autumn Harvest',\n        description: '温暖丰盈的秋季色调，传递收获与温馨',\n        useCase: '农业食品、感恩节庆、温暖品牌',\n        colors: {\n            light: ['#C2410C', '#D97706', '#CA8A04', '#B45309', '#92400E'],\n            dark: ['#F97316', '#FB923C', '#FDE047', '#FDBA74', '#D97706'],\n        },\n        background: {\n            light: '#FFFFFF',\n            dark: '#0F172A',\n        },\n        text: {\n            light: '#1E293B',\n            dark: '#E2E8F0',\n        },\n        border: {\n            light: '#E2E8F0',\n            dark: '#334155',\n        },\n    },\n];\n\n\n\n\nexport const convertToEChartsTheme = (scheme: ColorScheme, mode: 'light' | 'dark' = 'light') => {\n    const isDark = mode === 'dark';\n    const mainColors = scheme.colors[mode];\n    const textColor = scheme.text[mode];\n    const borderColor = scheme.border[mode];\n    const bgColor = scheme.background[mode];\n\n    return {\n        color: mainColors,\n        backgroundColor: bgColor,\n        textStyle: {\n            color: textColor\n        },\n        line: {\n            itemStyle: { borderWidth: 1 },\n            lineStyle: { width: 2 },\n            symbolSize: 4,\n            symbol: 'emptyCircle',\n            smooth: false\n        },\n        categoryAxis: {\n            axisLine: { show: true, lineStyle: { color: borderColor } },\n            axisTick: { show: true, lineStyle: { color: borderColor } },\n            axisLabel: { show: true, color: textColor },\n            splitLine: { show: false }\n        },\n        valueAxis: {\n            axisLine: { show: false },\n            axisTick: { show: false },\n            axisLabel: { show: true, color: textColor },\n            splitLine: { show: true, lineStyle: { color: borderColor, type: 'dashed' } }\n        },\n        legend: {\n            textStyle: { color: textColor }\n        },\n        tooltip: {\n            axisPointer: {\n                lineStyle: { color: borderColor, width: 1 },\n                crossStyle: { color: borderColor, width: 1 }\n            }\n        }\n    };\n};\n\n// defult metric style\nexport const getDefaultMetricStyle = (title, subtitle) => ({\n    \"bgColor\": \"\",\n    \"showAxis\": true,\n    \"showGrid\": true,\n    \"xAxisBold\": false,\n    \"yAxisBold\": false,\n    \"legendBold\": false,\n    \"showLegend\": true,\n    \"themeColor\": \"\",\n    \"xAxisAlign\": \"\",\n    \"xAxisColor\": \"\",\n    \"xAxisTitle\": \"\",\n    \"yAxisAlign\": \"\",\n    \"yAxisColor\": \"\",\n    \"yAxisTitle\": \"\",\n    \"xAxisUnderline\": false,\n    \"yAxisUnderline\": false,\n    \"legendUnderline\": false,\n    \"legendAlign\": \"\",\n    \"legendColor\": \"\",\n    \"xAxisItalic\": false,\n    \"yAxisItalic\": false,\n    \"legendItalic\": false,\n    \"showDataLabel\": true,\n    \"xAxisFontSize\": 0,\n    \"yAxisFontSize\": 0,\n    \"legendFontSize\": 0,\n    \"legendPosition\": \"\",\n    \"showSubtitle\": true,\n    title,\n    \"titleFontSize\": 14,\n    \"titleColor\": \"\",\n    \"titleAlign\": \"left\",\n    \"titleBold\": false,\n    \"titleItalic\": false,\n    \"titleUnderline\": false,\n    subtitle,\n    \"subtitleFontSize\": 14,\n    \"subtitleColor\": \"#666\",\n    \"subtitleAlign\": \"left\",\n    \"subtitleBold\": true,\n    \"subtitleItalic\": false,\n    \"subtitleUnderline\": false,\n    \"metricFontSize\": 28,\n    \"metricColor\": \"#4882f6\",\n    \"metricAlign\": \"left\",\n    \"metricBold\": true,\n    \"metricItalic\": false,\n    \"metricUnderline\": false,\n})"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/AdvancedDatePicker.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Calendar } from \"@/components/bs-ui/calendar\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport { cn } from \"@/utils\";\nimport { endOfDay, endOfMonth, format, getHours, getMonth, getYear, setHours, startOfDay, startOfMonth, subDays } from \"date-fns\";\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\n// --- Type Definitions ---\n\nexport type DateGranularity = \"month\" | \"day\" | \"hour\";\n\nexport interface DatePickerValue {\n  startTime: number; // 10-digit Unix timestamp (seconds)\n  endTime: number;   // 10-digit Unix timestamp (seconds)\n  shortcutKey?: string; // Key of the selected shortcut\n  isDynamic?: boolean;  // Whether the time range updates dynamically relative to \"now\"\n}\n\ninterface AdvancedDatePickerProps {\n  value?: DatePickerValue;\n  onChange: (value: DatePickerValue) => void;\n  granularity?: DateGranularity; // Precision: month | day | hour\n  mode?: \"single\" | \"range\";     // Selection mode: single point or range\n  placeholder?: string;\n  isDark?: boolean;\n}\n\n// --- Helper Component: MonthPicker ---\n// Custom lightweight Month Picker as standard Shadcn/Date-pickers often focus on days\nconst MonthPicker = ({\n  currentDate,\n  onSelect,\n  selection, // { from, to } or single Date\n  mode\n}: {\n  currentDate: Date;\n  onSelect: (date: Date) => void;\n  selection: any;\n  mode: \"single\" | \"range\";\n}) => {\n  const { t } = useTranslation(\"dashboard\")\n  const [year, setYearState] = useState(currentDate.getFullYear());\n\n  const months = Array.from({ length: 12 }, (_, i) => i);\n\n  const isSelected = (m: number) => {\n    if (mode === \"single\") {\n      return selection && getYear(selection) === year && getMonth(selection) === m;\n    }\n    // Simple Range highlighting (highlights endpoints for visual clarity)\n    if (selection?.from && getYear(selection.from) === year && getMonth(selection.from) === m) return true;\n    if (selection?.to && getYear(selection.to) === year && getMonth(selection.to) === m) return true;\n    return false;\n  };\n\n  return (\n    <div className=\"p-3\">\n      <div className=\"flex items-center justify-between mb-4\">\n        <Button variant=\"outline\" size=\"icon\" onClick={() => setYearState(year - 1)} className=\"h-7 w-7\"><ChevronLeft className=\"h-4 w-4\" /></Button>\n        <span className=\"font-semibold\">{year}{t('yearUnit')}</span>\n        <Button variant=\"outline\" size=\"icon\" onClick={() => setYearState(year + 1)} className=\"h-7 w-7\"><ChevronRight className=\"h-4 w-4\" /></Button>\n      </div>\n      <div className=\"grid grid-cols-3 gap-2\">\n        {months.map((m) => (\n          <Button\n            key={m}\n            variant={isSelected(m) ? \"default\" : \"outline\"}\n            className={cn(\"h-9\", isSelected(m) && \"bg-primary text-primary-foreground\")}\n            onClick={() => onSelect(new Date(year, m, 1))}\n          >\n            {m + 1}{t('monthUnit')}\n          </Button>\n        ))}\n      </div>\n    </div>\n  );\n};\n\n// --- Main Component ---\nexport function AdvancedDatePicker({\n  value,\n  onChange,\n  granularity = \"day\",\n  mode = \"range\",\n  placeholder = \"select time\",\n  isDark = false\n}: AdvancedDatePickerProps) {\n  const { t } = useTranslation(\"dashboard\")\n  const [open, setOpen] = useState(false);\n\n  // Internal State\n  const [dateRange, setDateRange] = useState<{ from?: Date; to?: Date } | undefined>();\n  const [selectedShortcut, setSelectedShortcut] = useState<string | undefined>(undefined);\n  const [isDynamic, setIsDynamic] = useState(false);\n\n  // Hour State\n  const [startHour, setStartHour] = useState(0);\n  const [endHour, setEndHour] = useState(0);\n\n  // Shortcuts configuration\n  const shortcuts = [\n    { label: t('shortcut.last_7'), days: 7, key: \"last_7\" },\n    { label: t('shortcut.last_30'), days: 30, key: \"last_30\" },\n    { label: t('shortcut.last_90'), days: 90, key: \"last_90\" },\n    { label: t('shortcut.last_180'), days: 180, key: \"last_180\" },\n  ];\n\n  // Helper function for automatically applying dynamic shortcuts\n  const applyDynamicShortcut = (shortcutKey: string) => {\n    const shortcut = shortcuts.find(s => s.key === shortcutKey);\n    if (!shortcut) return;\n\n    const end = new Date();\n    const start = subDays(end, shortcut.days);\n    setDateRange({ from: start, to: end });\n    setStartHour(0);\n    setEndHour(23);\n    setSelectedShortcut(shortcutKey);\n  };\n\n  // Sync internal state with external value when popover opens or value changes\n  useEffect(() => {\n    if (value && value.startTime) {\n      const start = new Date(value.startTime * 1000);\n      const end = new Date(value.endTime * 1000);\n\n      setDateRange({ from: start, to: end });\n      setStartHour(getHours(start));\n      setEndHour(getHours(end));\n      setSelectedShortcut(value.shortcutKey);\n      setIsDynamic(!!value.isDynamic);\n    } else {\n      // Reset to default\n      setDateRange(undefined);\n      setStartHour(0);\n      setEndHour(0);\n      setSelectedShortcut(undefined);\n      setIsDynamic(false);\n    }\n  }, [value]);\n\n  // When the pop-up window opens, if it is in dynamic mode, automatically refresh the time range \n  useEffect(() => {\n    if (open && value?.isDynamic && value?.shortcutKey) {\n      applyDynamicShortcut(value.shortcutKey);\n    }\n  }, [open]);\n\n  // --- Logic Handlers ---\n\n  const handleShortcutClick = (days: number, key: string) => {\n    const end = new Date();\n    const start = subDays(end, days);\n    setDateRange({ from: start, to: end });\n\n    // Shortcuts usually default to 00:00:00 of the start day to 23:59:59 of the current day\n    setStartHour(0);\n    setEndHour(23);\n\n    setSelectedShortcut(key);\n    // Reset dynamic toggle unless business logic requires persistence\n    setIsDynamic(false);\n  };\n\n  const handleConfirm = () => {\n    if (!dateRange?.from) return setOpen(false);\n\n    let finalStart = new Date(dateRange.from);\n    let finalEnd = dateRange.to ? new Date(dateRange.to) : new Date(dateRange.from);\n\n    // Process StartTime based on granularity\n    if (granularity === \"month\") {\n      finalStart = startOfMonth(finalStart);\n    } else if (granularity === \"day\") {\n      finalStart = startOfDay(finalStart);\n    } else if (granularity === \"hour\") {\n      finalStart = setHours(startOfDay(finalStart), startHour);\n      finalStart.setMinutes(0);\n      finalStart.setSeconds(0);\n    }\n\n    // Process EndTime based on granularity\n    if (granularity === \"month\") {\n      finalEnd = endOfMonth(finalEnd);\n      finalEnd = endOfDay(finalEnd);\n    } else if (granularity === \"day\") {\n      finalEnd = endOfDay(finalEnd);\n    } else if (granularity === \"hour\") {\n      // If single mode, EndHour matches StartHour; otherwise use endHour state\n      finalEnd = setHours(startOfDay(finalEnd), mode === 'single' ? startHour : endHour);\n      // Logic: For hour granularity, we treat the selection as the start of that hour block\n      finalEnd.setMinutes(0);\n      finalEnd.setSeconds(0);\n    }\n\n    // Convert to Unix timestamp (seconds)\n    const startStamp = Math.floor(finalStart.getTime() / 1000);\n    const endStamp = Math.floor(finalEnd.getTime() / 1000);\n\n    onChange({\n      startTime: startStamp,\n      endTime: endStamp,\n      shortcutKey: selectedShortcut,\n      isDynamic: selectedShortcut ? isDynamic : false,\n    });\n    setOpen(false);\n  };\n\n  // --- Display Formatting ---\n  const getDisplayValue = () => {\n    if (!dateRange?.from) return \"\";\n\n    // Shortcut key text is only displayed in dynamic mode\n    if (selectedShortcut && isDynamic) {\n      return t(`shortcut.${selectedShortcut}`);\n    }\n\n    const start = new Date(dateRange.from);\n    // Fix: Handle undefined dateRange.to to prevent Invalid time value error\n    const end = dateRange.to ? new Date(dateRange.to) : new Date(dateRange.from);\n\n    // Formatting templates\n    let fmt = \"yyyy/MM/dd\";\n    if (granularity === \"month\") fmt = \"yyyy/MM\";\n    if (granularity === \"hour\") fmt = \"yyyy/MM/dd HH\";\n\n    const sStr = format(start, fmt);\n    const eStr = format(end, fmt);\n\n    // Check if it's effectively a single point in time based on granularity\n    const isSamePoint = sStr === eStr;\n\n    if (mode === \"single\" || isSamePoint) {\n      return sStr;\n    }\n    return `${sStr} - ${eStr}`;\n  };\n\n  const handleClear = () => {\n    setDateRange(undefined);\n    onChange(undefined);\n  }\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          variant={\"outline\"}\n          className={cn(\n            \"w-92 flex-1 justify-start text-left font-normal\",\n            value ? \"text-prompt-description\" : \"text-muted-foreground\",\n            isDark && \"dark:text-gray-200\"\n          )}\n        >\n          <CalendarIcon className=\"mr-2 h-4 w-4\" />\n          {getDisplayValue() || placeholder}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className={cn(\"w-auto p-0\", isDark ? 'dark bg-gray-950 border-gray-600' : \"theme-force-light\")} align=\"start\">\n        <div className=\"no-drag flex flex-col\">\n\n          {/* Calendar Area */}\n          <div className=\"flex\">\n            {granularity === \"month\" ? (\n              <div className=\"flex flex-row gap-2 p-2\">\n                {/* Simplified Month Selection: \n                   First click selects 'from', second click selects 'to'. \n                */}\n                <MonthPicker\n                  mode={mode}\n                  currentDate={dateRange?.from || new Date()}\n                  selection={dateRange}\n                  onSelect={(d) => {\n                    if (mode === 'single') {\n                      setDateRange({ from: d, to: d });\n                    } else {\n                      if (!dateRange?.from || (dateRange.from && dateRange.to)) {\n                        setDateRange({ from: d, to: undefined });\n                      } else {\n                        // Ensure chronological order (from < to)\n                        if (d < dateRange.from) {\n                          setDateRange({ from: d, to: dateRange.from });\n                        } else {\n                          setDateRange({ from: dateRange.from, to: d });\n                        }\n                      }\n                    }\n                    setSelectedShortcut(undefined);\n                    setIsDynamic(false);\n                  }}\n                />\n              </div>\n            ) : (\n              <Calendar\n                mode={mode === \"range\" ? \"range\" : \"single\"}\n                defaultMonth={dateRange?.from || new Date()}\n                selected={mode === \"range\" ? dateRange : dateRange?.from}\n                onSelect={(val: any) => {\n                  if (mode === \"single\") {\n                    setDateRange({ from: val, to: val });\n                  } else {\n                    setDateRange(val);\n                  }\n                  setSelectedShortcut(undefined);\n                  setIsDynamic(false);\n                }}\n                numberOfMonths={mode === \"range\" ? 2 : 1}\n              />\n            )}\n          </div>\n\n          {/* Hour Inputs Area (Visible only for hour granularity) */}\n          {granularity === \"hour\" && (\n            <div className=\"flex justify-between items-center px-3 mb-3\">\n              <div className=\"flex items-center gap-2\">\n                <Label className=\"text-xs text-muted-foreground break-keep\">{t('startHour')}</Label>\n                <Input\n                  type=\"number\"\n                  min={0} max={23}\n                  className=\"w-16 h-6\"\n                  value={startHour}\n                  onChange={(e) => {\n                    const v = parseInt(e.target.value);\n                    if (!isNaN(v) && v >= 0 && v <= 23) setStartHour(v);\n                  }}\n                />\n              </div>\n\n              {mode === \"range\" && (\n                <div className=\"flex items-center gap-2\">\n                  <Label className=\"text-xs text-muted-foreground break-keep\">{t('endHour')}</Label>\n                  <Input\n                    type=\"number\"\n                    min={0} max={23}\n                    className=\"w-16 h-6\"\n                    value={endHour}\n                    onChange={(e) => {\n                      const v = parseInt(e.target.value);\n                      if (!isNaN(v) && v >= 0 && v <= 23) setEndHour(v);\n                    }}\n                  />\n                </div>\n              )}\n            </div>\n          )}\n\n          {/* Shortcuts Area (Range Mode only) */}\n          {mode === \"range\" && (\n            <div className=\"px-3 mb-3\">\n              <div className=\"flex flex-wrap gap-2\">\n                {shortcuts.map((sc) => (\n                  <Button\n                    key={sc.key}\n                    variant={selectedShortcut === sc.key ? \"default\" : \"outline\"}\n                    size=\"sm\"\n                    className=\"h-6 text-xs\"\n                    onClick={() => handleShortcutClick(sc.days, sc.key)}\n                  >\n                    {sc.label}\n                  </Button>\n                ))}\n                {/* Dynamic Checkbox - Appears only when a shortcut is active */}\n                {selectedShortcut && (\n                  <div className=\"flex items-center space-x-1 px-1\">\n                    <Checkbox\n                      id=\"dynamic-mode\"\n                      checked={isDynamic}\n                      onCheckedChange={(c) => setIsDynamic(c as boolean)}\n                    />\n                    <Label htmlFor=\"dynamic-mode\" className=\"text-xs cursor-pointer\">\n                      {t('dynamicUpdate')}\n                    </Label>\n                  </div>\n                )}\n              </div>\n            </div>\n          )}\n\n          {/* Footer Action */}\n          <div className=\"flex justify-end gap-2 px-3 mb-3\">\n            <Button className=\"h-6\" variant=\"ghost\" size=\"sm\" onClick={handleClear}>{t('clear')}</Button>\n            <Button className=\"h-6\" size=\"sm\" onClick={handleConfirm}>{t('confirm')}</Button>\n          </div>\n\n        </div>\n      </PopoverContent>\n    </Popover>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/charts/BaseChart.tsx",
    "content": "\"use client\"\n\nimport { ChartType, ComponentConfig, ComponentStyleConfig } from '@/pages/Dashboard/types/dataConfig'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { colorSchemes, convertToEChartsTheme } from '../../colorSchemes'\nimport { ChartDataResponse } from '../../types/chartData'\nimport { unitConversion } from './MetricCard'\n\n// Dynamic loading of ECharts.\nconst loadECharts = async () => {\n  if ((window as any).echarts) {\n    return (window as any).echarts\n  }\n\n  const script = document.createElement('script')\n  script.src = `${(window as any).__APP_ENV__?.BASE_URL || ''}/echarts.min.js`\n  script.type = 'module'\n\n  return new Promise((resolve, reject) => {\n    script.onload = () => {\n      const checkECharts = setInterval(() => {\n        if ((window as any).echarts) {\n          clearInterval(checkECharts)\n          resolve((window as any).echarts)\n        }\n      }, 100)\n    }\n    script.onerror = reject\n    document.head.appendChild(script)\n  })\n}\n\ninterface BaseChartProps {\n  data: ChartDataResponse\n  chartType: ChartType\n  isDark: boolean\n  dataConfig?: ComponentConfig // Chart component configuration.\n  styleConfig: ComponentStyleConfig\n}\n\nexport function BaseChart({ isDark, data, chartType, dataConfig, styleConfig }: BaseChartProps) {\n  const { t } = useTranslation(\"dashboard\")\n\n  const chartRef = useRef<any>(null)\n  const domRef = useRef<HTMLDivElement>(null)\n  const echartsLibRef = useRef(null)\n  const [isLoading, setIsLoading] = useState(true)\n\n  // load ECharts\n  useEffect(() => {\n    loadECharts()\n      .then((echarts) => {\n        echartsLibRef.current = echarts\n        setIsLoading(false)\n      })\n      .catch((err) => {\n        console.error('Failed to load ECharts:', err)\n        setIsLoading(false)\n      })\n  }, [])\n\n  const renderChart = () => {\n    if (!chartRef.current || !domRef.current) return;\n\n    const containerSize = [domRef.current.clientWidth || 0, domRef.current.clientHeight || 0];\n\n    const option = generateChartOption({\n      data,\n      chartType,\n      dataConfig,\n      styleConfig,\n      containerSize\n    });\n\n    chartRef.current.setOption(option);\n    chartRef.current.resize();\n  }\n  // Initialize and update the chart.\n  const [screenFull, setScreenFull] = useState(false)\n  useEffect(() => {\n    if (!echartsLibRef.current || !domRef.current || isLoading) return\n\n    // clear\n    if (chartRef.current) {\n      chartRef.current.dispose()\n      chartRef.current = null\n    }\n\n    try {\n      // theme\n      const theme = styleConfig.themeColor || 'professional-blue'\n      const activeScheme = colorSchemes.find(s => s.id === theme);\n      const themeName = `${activeScheme.id}${isDark ? '-dark' : ''}`;\n      const themeConfig = convertToEChartsTheme(activeScheme, isDark ? 'dark' : 'light');\n      // register Theme\n      echartsLibRef.current.registerTheme(themeName, themeConfig);\n      // init echarts\n      chartRef.current = echartsLibRef.current.init(domRef.current, themeName)\n\n      renderChart();\n    } catch (err) {\n      console.error('Failed to initialize chart:', err)\n    }\n\n    return () => {\n      if (chartRef.current) {\n        chartRef.current.dispose()\n        chartRef.current = null\n      }\n    }\n  }, [screenFull, echartsLibRef.current, data, chartType, dataConfig, styleConfig, isLoading, isDark])\n\n  // resize\n  useEffect(() => {\n    if (!chartRef.current || !domRef.current) return;\n\n    const handleResize = () => {\n      renderChart();\n    };\n\n    const resizeObserver = new ResizeObserver(() => {\n      handleResize()\n    })\n\n    resizeObserver.observe(domRef.current)\n    window.addEventListener('resize', handleResize)\n\n    return () => {\n      resizeObserver.disconnect()\n      window.removeEventListener('resize', handleResize)\n    }\n  }, [chartRef.current])\n\n  // screen full\n  useEffect(() => {\n    const handleFullscreenChange = () => {\n      setScreenFull(!screenFull)\n    };\n\n    document.addEventListener('fullscreenchange', handleFullscreenChange);\n    document.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n\n    return () => {\n      document.removeEventListener('fullscreenchange', handleFullscreenChange);\n      document.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n    };\n  }, []);\n\n  if (isLoading) {\n    return (\n      <div className=\"w-full h-full flex items-center justify-center\">\n        <div className=\"text-sm text-muted-foreground\">{t('updatingCharts')}...</div>\n      </div>\n    )\n  }\n\n  return <div ref={domRef} style={{ width: '100%', height: `100%` }} />\n}\n\n\n/**\n * Generate ECharts configuration based on chart type and data.\n */\nexport function generateChartOption(props: {\n  data: ChartDataResponse;\n  chartType: ChartType;\n  dataConfig?: ComponentConfig;\n  styleConfig: ComponentStyleConfig;\n  containerSize?: number[];\n}): any {\n  const { chartType } = props;\n\n  // 根据图表类型分发到不同的构建器\n  if (chartType === 'pie' || chartType === 'donut') {\n    return getPieChartOption(props.data, chartType, props.styleConfig);\n  }\n\n  return getCartesianChartOption(props.data, chartType, props.styleConfig, props.dataConfig, props.containerSize);\n}\n\n\n\nconst getPieChartOption = (\n  data: ChartDataResponse,\n  chartType: ChartType,\n  styleConfig: ComponentStyleConfig\n) => {\n  const { series } = data;\n  const isDonut = chartType === 'donut';\n\n  const tooltipFormatter = (params: any) => {\n    return `${params.name.replaceAll('\\n', '<br/>')}: ${params.value} (${params.percent}%)`;\n  };\n\n  return {\n    backgroundColor: styleConfig.bgColor,\n    // title: buildTitleOption(styleConfig),\n    legend: buildLegendOption(styleConfig),\n    tooltip: buildTooltipOption('item', tooltipFormatter),\n    series: series.map((s) => ({\n      name: s.name,\n      left: styleConfig.legendPosition === 'left' && 100,\n      right: styleConfig.legendPosition === 'right' && 100,\n      bottom: styleConfig.legendPosition === 'bottom' && 20,\n      top: styleConfig.legendPosition === 'top' && 20,\n      type: 'pie',\n      radius: isDonut ? ['40%', '70%'] : '70%',\n      avoidLabelOverlap: true,\n      itemStyle: { borderRadius: 0, borderColor: '#fff', borderWidth: 2 },\n      label: {\n        show: styleConfig.showDataLabel ?? true,\n        formatter: '{b}: {d}%',\n        fontSize: 10,\n        color: \"#666\",\n        textBorderWidth: 0,\n        textBorderColor: 'none',\n        textShadowBlur: 0,\n        textShadowColor: 'none',\n      },\n      emphasis: {\n        label: { show: true, fontSize: 16, fontWeight: 'bold' },\n      },\n      data: s.data\n    })),\n  };\n};\n\n\nconst getCartesianChartOption = (\n  data: ChartDataResponse,\n  chartType: ChartType,\n  styleConfig: ComponentStyleConfig,\n  dataConfig?: ComponentConfig,\n  containerSize: number[] = []\n) => {\n  const { dimensions, series } = data;\n  const isHorizontal = chartType.includes('horizontal');\n  const isStacked = chartType.includes('stacked');\n  const isLineOrArea = chartType.includes('line') || chartType.includes('area');\n  const isArea = chartType.includes('area')\n\n  // aixs title tyle\n  const [containerWidth = 500, containerHeight = 500] = containerSize\n  const axisWidth = containerWidth - styleConfig.xAxisTitle.length * styleConfig.xAxisFontSize - 60;\n  const axisHeight = containerHeight - styleConfig.yAxisTitle.length * styleConfig.yAxisFontSize - 60;\n\n  // Tooltip\n  const tooltipFormatter = (params: any[]) => {\n    const originName = params[0]?.name || '';\n    const shortName = originName.replace(/(.{50})/g, '$1<br/>');\n    let res = shortName.replaceAll('\\n', '<br/>') + '<br/>';\n    params.forEach((item) => {\n      res += item.value === undefined ? '' : `${item.marker} ${item.seriesName}: <b>${unitConversion(item.value, dataConfig).join('')}</b><br/>`;\n    });\n    return res;\n  };\n\n  //  Axis\n  const xAxisTitleStyle = getTextStyle({\n    fontSize: styleConfig.xAxisFontSize,\n    color: styleConfig.xAxisColor,\n    bold: styleConfig.xAxisBold,\n    italic: styleConfig.xAxisItalic\n  });\n  const yAxisTitleStyle = getTextStyle({\n    fontSize: styleConfig.yAxisFontSize,\n    color: styleConfig.yAxisColor,\n    bold: styleConfig.yAxisBold,\n    italic: styleConfig.yAxisItalic\n  });\n\n  // (Category Axis)\n  const categoryAxis = {\n    type: 'category',\n    data: dimensions,\n    axisLabel: {\n      show: styleConfig.showAxis ?? true,\n      rotate: 0,\n      interval: 'auto',\n      formatter: function (value) {\n        if (!value) return '';\n        const lines = value.split('\\n');\n        return lines.map(line => line.length > 10 ? line.slice(0, 10) + '...' : line).join('\\n');\n      },\n      hideOverlap: true,\n      color: '#666'\n      // interval: 0,\n      // hideOverlap: true,\n      // overflow: 'break'\n      // ...axisLabelStyle,\n    },\n    name: styleConfig.xAxisTitle || '',\n    nameLocation: 'center',\n    nameTextStyle: {\n      ...xAxisTitleStyle,\n      padding: [0, 0, 0, styleConfig.xAxisAlign === 'right' ? axisWidth : styleConfig.xAxisAlign === 'left' ? -axisWidth : 0]\n    },\n    inverse: isHorizontal\n  };\n\n  // (Value Axis)\n  const valueAxis = {\n    type: 'value',\n    axisLabel: {\n      show: styleConfig.showAxis ?? true,\n      formatter: (val: any) => unitConversion(val, dataConfig).join(''),\n      color: '#666'\n    },\n    splitLine: { show: styleConfig.showGrid ?? true },\n    name: styleConfig.yAxisTitle || '',\n    nameLocation: 'center',\n    nameRotate: isHorizontal ? 0 : 90,\n    nameTextStyle: {\n      ...yAxisTitleStyle,\n      padding: [0, 0, 0, styleConfig.yAxisAlign === 'right' ? axisHeight : styleConfig.yAxisAlign === 'left' ? -axisHeight : 0]\n    },\n    boundaryGap: [0, '20%'],\n  };\n\n  const lastValueIndexes = dimensions.map((_, dimIdx) => {\n    let lastIdx = -1;\n    for (let sIdx = series.length - 1; sIdx >= 0; sIdx--) {\n      const val = series[sIdx].data[dimIdx];\n      // 只有当值存在且大于 0 时，才认为是这一列的“顶端”\n      if (val !== null && val !== undefined && val > 0) {\n        lastIdx = sIdx;\n        break;\n      }\n    }\n    return lastIdx;\n  });\n  // Series\n  const cartesianSeries = series.map((s, index) => {\n    const processedData = s.data.map((val, dimIdx) => {\n      const isTopItem = lastValueIndexes[dimIdx] === index;\n\n      // 如果是顶端项，则单独给该 data item 设置样式\n      if (!isLineOrArea && isStacked && isTopItem) {\n        return {\n          value: val,\n          itemStyle: {\n            borderRadius: isHorizontal ? [0, 4, 4, 0] : [4, 4, 0, 0]\n          }\n        };\n      }\n      return val;\n    });\n\n    const item: any = {\n      name: s.name,\n      data: processedData,\n      type: isLineOrArea ? 'line' : 'bar',\n      symbol: 'circle',\n      symbolSize: 0,\n      itemStyle: {\n        borderRadius: (!isLineOrArea && !isStacked)\n          ? (isHorizontal ? [0, 4, 4, 0] : [4, 4, 0, 0])\n          : 0\n      }\n    };\n\n    if (styleConfig.showDataLabel) {\n      item.label = {\n        show: true,\n        position: 'top',\n        fontSize: 10,\n        color: \"#666\",\n        formatter: (params: any) => unitConversion(params.value, dataConfig).join('')\n      };\n      item.labelLayout = {\n        hideOverlap: true\n      }\n    }\n    if (isStacked) item.stack = 'total';\n    if (isArea) item.areaStyle = { opacity: 0.1 };\n    // if (isLineOrArea) item.smooth = true;\n\n    return item;\n  });\n\n  let grid = {\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    // containLabel: true,\n  }\n  if (styleConfig.showLegend) {\n    const titleBottom = (styleConfig.xAxisTitle ? 18 : 0) + ((dataConfig.dimensions.length - 1) * 10);\n    const bottom = (styleConfig.legendPosition === 'bottom' ? 44 : 0) + titleBottom;\n    grid = {\n      left: styleConfig.legendPosition === 'left' ? 160 : 0,\n      right: styleConfig.legendPosition === 'right' ? 100 : 0,\n      top: styleConfig.legendPosition === 'top' ? 40 : 0,\n      bottom,\n    }\n  }\n\n  return {\n    backgroundColor: styleConfig.bgColor,\n    // title: buildTitleOption(styleConfig),\n    legend: buildLegendOption(styleConfig, series.map(s => s.name)),\n    tooltip: buildTooltipOption('axis', tooltipFormatter),\n    grid,\n    xAxis: isHorizontal ? valueAxis : categoryAxis,\n    yAxis: isHorizontal ? categoryAxis : valueAxis,\n    series: cartesianSeries,\n  };\n};\n\nconst getTextStyle = (config: {\n  fontSize?: number; bold?: boolean; italic?: boolean; color?: string;\n}) => {\n  const style: any = {};\n  if (config.fontSize !== undefined) style.fontSize = config.fontSize;\n  if (config.bold) style.fontWeight = 'bold'; // ECharts use fontWeight, not fontStyle for bold\n  if (config.italic) style.fontStyle = 'italic';\n  if (config.color) style.color = config.color;\n  return style;\n};\n\n/**\n * gen (Legend)\n */\nconst buildLegendOption = (styleConfig: ComponentStyleConfig, seriesNames?: string[]) => {\n  if (styleConfig.showLegend === false) return undefined;\n\n  const pos = styleConfig.legendPosition || 'top';\n  const align = styleConfig.legendAlign || 'auto';\n  const isVertical = pos === 'left' || pos === 'right';\n  // computed\n  const orient = isVertical ? 'vertical' : 'horizontal';\n  const top = !isVertical\n    ? (pos === 'top' ? 0 : 'auto')\n    : (align === 'left' ? 0 : (align === 'right' ? 'auto' : 'center'));\n  const bottom = !isVertical\n    ? (pos === 'bottom' ? 0 : 'auto')\n    : (align === 'right' ? 0 : 'auto');\n  const left = isVertical\n    ? (pos === 'left' ? 0 : 'auto')\n    : (align === 'left' ? 0 : (align === 'right' ? 'auto' : 'center'));\n  const right = isVertical\n    ? (pos === 'right' ? 0 : 'auto')\n    : (align === 'right' ? 0 : 'auto');\n\n  return {\n    data: seriesNames, // Pie chart doesn't strictly need this, but Cartesian does\n    orient, top, bottom, left, right,\n    textStyle: getTextStyle({\n      fontSize: styleConfig.legendFontSize,\n      bold: styleConfig.legendBold,\n      italic: styleConfig.legendItalic,\n      color: styleConfig.legendColor,\n    }),\n    type: 'scroll',\n    itemHeight: 6,\n    itemWidth: 6,\n    icon: 'circle',\n    itemStyle: {\n      borderWidth: 0,\n    },\n  };\n};\n\n/**\n * geb Tooltip\n */\nconst buildTooltipOption = (type: 'axis' | 'item', formatter: (params: any) => string) => {\n  return {\n    trigger: type,\n    confine: true,\n    axisPointer: type === 'axis' ? { type: 'shadow' } : undefined,\n    enterable: true,\n    extraCssText: 'max-height: 500px; overflow-y: auto;',\n    appendToBody: !document.fullscreenElement,\n    // renderMode: 'html',\n    formatter\n  };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/charts/ChartContainer.tsx",
    "content": "\"use client\"\n\nimport { queryChartData } from '@/controllers/API/dashboard'\nimport { ChartDataResponse, MetricDataResponse } from '@/pages/Dashboard/types/chartData'\nimport { ChartType, DashboardComponent } from '@/pages/Dashboard/types/dataConfig'\nimport { useEditorDashboardStore } from '@/store/dashboardStore'\nimport { useEffect } from 'react'\nimport { useQuery } from 'react-query'\nimport { BaseChart } from './BaseChart'\nimport { MetricCard } from './MetricCard'\nimport { useTranslation } from 'react-i18next'\n\ninterface ChartContainerProps {\n  isDark: boolean;\n  isPreviewMode: boolean;\n  component: DashboardComponent;\n}\n\nexport function ChartContainer({ isPreviewMode, isDark, component }: ChartContainerProps) {\n  const { t } = useTranslation(\"dashboard\")\n\n  const chartRefreshTriggers = useEditorDashboardStore(state => state.chartRefreshTriggers)\n  const currentDashboard = useEditorDashboardStore(state => state.currentDashboard)\n  const refreshInfo = chartRefreshTriggers[component.id]\n  const refreshTrigger = refreshInfo?.trigger || 0\n  const queryParams = refreshInfo?.queryParams || []\n\n  // Query chart data\n  const { data, isLoading, error, refetch } = useQuery({\n    queryKey: ['chartData', component.id, refreshTrigger],\n    queryFn: () => queryChartData({\n      useId: isPreviewMode,\n      dashboardId: currentDashboard?.id,\n      component,\n      queryParams\n    }),\n    // use refreshTrigger\n    enabled: false // !!component.id && component.data_config.isConfigured\n  });\n\n  // Refetch when refresh trigger changes\n  useEffect(() => {\n    if (refreshTrigger > 0) {\n      console.log('refreshInfo :>> ', component, refreshInfo);\n      refetch()\n    }\n  }, [refreshTrigger, refetch])\n\n  // Loading state\n  if (isLoading) {\n    return (\n      <div className=\"relative w-full h-full flex items-center justify-center overflow-hidden rounded-xl border border-[#f0f7ff] bg-[#f8fbff]\">\n        <div\n          className=\"absolute inset-0 animate-shimmer\"\n          style={{\n            background: 'linear-gradient(90deg, rgba(191, 219, 253, 0.01) 30%,  #fff 50%, rgba(191, 219, 253, 0.01) 70%)',\n            backgroundSize: '200% 100%',\n          }}\n        />\n\n        <div className=\"relative z-10 bg-white px-6 py-2 rounded-md backdrop-blur-sm\">\n          <div className=\"flex items-center gap-3\">\n            <span className=\"text-[#8da9ff] font-medium text-lg tracking-wider break-keep\">\n              {t('updatingCharts')}\n            </span>\n          </div>\n        </div>\n\n        <style>{`\n        @keyframes shimmer {\n          0% { background-position: 200% 0; }\n          100% { background-position: -200% 0; }\n        }\n        .animate-shimmer {\n          animation: shimmer 3s infinite linear;\n        }\n      `}</style>\n      </div>\n    );\n  }\n\n  // No data\n  // if (error || !component.data_config.isConfigured) {\n  if (error || !component.data_config.isConfigured || !data) {\n    return (\n      <div className={`flex items-center justify-center h-full overflow-hidden relative ${component.type === ChartType.Metric && 'pt-4'}`}>\n        {component.type === ChartType.Metric && <h3 className=\"absolute top-0 left-0 text-sm font-medium truncate dark:text-gray-400\">\n          <span className=\"no-drag cursor-pointer\">{component.title}</span>\n        </h3>}\n        <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/ept-${component.type}.png`} className=\"max-w-60 max-h-full\" />\n        <div className='flex size-full absolute justify-center items-center'>\n          <span className=\"text-sm bg-gray-50/80 px-2 py-1 text-primary truncate\">{t('noDataInChart')}</span>\n        </div>\n      </div>\n    );\n  }\n\n  // Render metric card\n  if (component.type === 'metric') {\n    return <MetricCard\n      title={component.title}\n      data={data as MetricDataResponse}\n      dataConfig={component.data_config}\n      isPreviewMode={isPreviewMode}\n      styleConfig={component.style_config} />;\n  }\n\n  // Render chart\n  return (\n    <div className=\"relative h-full\">\n      <BaseChart\n        isDark={isDark}\n        data={data as ChartDataResponse}\n        chartType={component.type}\n        dataConfig={component.data_config}\n        styleConfig={component.style_config}\n      />\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/charts/MetricCard.tsx",
    "content": "\"use client\"\n\nimport { MetricDataResponse } from '@/pages/Dashboard/types/chartData'\nimport { ArrowDown, ArrowUp, GripHorizontalIcon, Minus } from 'lucide-react'\nimport { useMemo } from 'react'\nimport { ComponentStyleConfig, DataConfig } from '../../types/dataConfig'\nimport { cn } from '@/utils'\n\ninterface MetricCardProps {\n  data: MetricDataResponse,\n  title?: string\n  dataConfig?: DataConfig\n  styleConfig: ComponentStyleConfig\n  isPreviewMode?: boolean\n}\n\nexport const unitConversion = (value, dataConfig) => {\n  if (!dataConfig.metrics?.length || value === undefined || value === null) {\n    return [value, ''];\n  }\n\n  const { type, decimalPlaces = 0, unit, suffix, thousandSeparator } = dataConfig.metrics[0].numberFormat;\n  let formattedNumber = Number(value);\n  let unitLabel = '';\n  let divisor = 1;\n\n  switch (type) {\n    case 'number': {\n      const numberMap = { 'None': 1, 'Thousand': 1e3, 'Million': 1e6, 'Billion': 1e9 };\n      const labels = { 'None': '', 'Thousand': 'K', 'Million': 'M', 'Billion': 'B' };\n      divisor = numberMap[unit] || 1;\n      unitLabel = labels[unit] || '';\n      break;\n    }\n    case 'percent': {\n      formattedNumber = formattedNumber * 100;\n      unitLabel = '%';\n      break;\n    }\n    case 'duration': {\n      const durationMap = { 'ms': 1, 's': 1000, 'min': 60000, 'hour': 3600000 };\n      divisor = durationMap[unit] || 1;\n      unitLabel = unit || 'ms';\n      break;\n    }\n    case 'storage': {\n      const storageMap = { 'B': 1, 'KB': 1024, 'MB': 1024 ** 2, 'GB': 1024 ** 3, 'TB': 1024 ** 4 };\n      divisor = storageMap[unit] || 1;\n      unitLabel = unit || 'B';\n      break;\n    }\n    default:\n      divisor = 1;\n  }\n\n  // 换算\n  formattedNumber = formattedNumber / divisor;\n\n  // 应用小数位数 (限制 0-5 位)\n  const safeDecimals = Math.min(Math.max(decimalPlaces, 0), 5);\n  let result = formattedNumber.toFixed(safeDecimals);\n\n  // 应用千分位符\n  if (thousandSeparator) {\n    const parts = result.split('.');\n    parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n    result = parts.join('.');\n  }\n\n  // 处理后缀\n  const finalUnit = unitLabel + (suffix || '');\n  // const finalUnit = suffix || unitLabel;\n\n  return [result, finalUnit];\n}\n\nexport function MetricCard({ title: indicatorName, data, isPreviewMode, dataConfig, styleConfig }: MetricCardProps) {\n\n  const subTitle = styleConfig.subtitle\n\n  // format\n  const [formatValue, displayUnit] = useMemo(() => unitConversion(data.value, dataConfig), [dataConfig, data]);\n\n  // 获取趋势图标\n  const getTrendIcon = () => {\n    if (!data.trend) return null\n\n    const iconClass = \"h-4 w-4\"\n    switch (data.trend.direction) {\n      case 'up':\n        return <ArrowUp className={`${iconClass} text-green-500`} />\n      case 'down':\n        return <ArrowDown className={`${iconClass} text-red-500`} />\n      case 'flat':\n        return <Minus className={`${iconClass} text-gray-500`} />\n    }\n  }\n\n  // 获取趋势颜色\n  const getTrendColor = () => {\n    if (!data.trend) return ''\n\n    switch (data.trend.direction) {\n      case 'up':\n        return 'text-green-500'\n      case 'down':\n        return 'text-red-500'\n      case 'flat':\n        return 'text-gray-500'\n    }\n  }\n\n  // Build text styles\n  const buildTextStyle = (config: {\n    fontSize?: number\n    bold?: boolean\n    italic?: boolean\n    underline?: boolean\n    strikethrough?: boolean\n    color?: string\n    align?: 'left' | 'center' | 'right'\n  }) => {\n    const style: React.CSSProperties = {}\n    if (config.fontSize !== undefined) style.fontSize = `${config.fontSize}px`\n    if (config.bold) style.fontWeight = 'bold'\n    if (config.italic) style.fontStyle = 'italic'\n    if (config.color) style.color = config.color\n    style.textDecoration = [\n      config.underline ? 'underline' : '',\n      config.strikethrough ? 'line-through' : ''\n    ].filter(Boolean).join(' ') || 'none'\n    if (config.align) style.textAlign = config.align\n    return style\n  }\n\n  const subtitleStyle = buildTextStyle({\n    fontSize: styleConfig.subtitleFontSize,\n    bold: styleConfig.subtitleBold,\n    italic: styleConfig.subtitleItalic,\n    underline: styleConfig.subtitleUnderline,\n    strikethrough: styleConfig.subtitleStrikethrough,\n    color: styleConfig.subtitleColor,\n    align: styleConfig.subtitleAlign\n  })\n\n  const titleStyle = buildTextStyle({\n    fontSize: styleConfig.titleFontSize,\n    bold: styleConfig.titleBold,\n    italic: styleConfig.titleItalic,\n    underline: styleConfig.titleUnderline,\n    strikethrough: styleConfig.titleStrikethrough,\n    color: styleConfig.titleColor,\n    align: styleConfig.titleAlign\n  })\n\n  const metricStyle = buildTextStyle({\n    fontSize: styleConfig.metricFontSize,\n    bold: styleConfig.metricBold,\n    italic: styleConfig.metricItalic,\n    underline: styleConfig.metricUnderline,\n    strikethrough: styleConfig.metricStrikethrough,\n    color: styleConfig.metricColor,\n    align: styleConfig.metricAlign\n  })\n\n  const subtitleLineHeight = styleConfig.subtitleFontSize ? styleConfig.subtitleFontSize * 1.5 : 21 // 默认14px * 1.5\n  const maxSubtitleHeight = subtitleLineHeight * 4\n\n  return (\n    <div className=\"group h-full flex flex-col select-none py-1 px-2 pr-1 text-foreground dark:text-gray-400\">\n      {/* title - single line */}\n      <div style={titleStyle} className='truncate mb-1 pr-1'>{indicatorName}</div>\n\n      {/* subtitle - max 4 lines with ellipsis */}\n      {styleConfig.showSubtitle &&\n        <div\n          className='pr-1'\n          style={{\n            ...subtitleStyle,\n            display: '-webkit-box',\n            WebkitLineClamp: 4,\n            WebkitBoxOrient: 'vertical',\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            wordBreak: 'break-all',\n            lineHeight: `${subtitleLineHeight}px`,\n            maxHeight: `${maxSubtitleHeight}px`,\n            flex: 1,\n            minHeight: 0\n          }}\n        >\n          {subTitle}\n        </div>\n      }\n\n      {/* value - stays at bottom */}\n      <div className='mt-auto pt-2'>\n        <div style={metricStyle} className='leading-[1.2em] truncate pr-1'>\n          {formatValue}\n          {displayUnit && <span className=\"text-xl ml-2 text-muted-foreground\">{displayUnit}</span>}\n        </div>\n      </div>\n\n      {!isPreviewMode && <GripHorizontalIcon\n        className={cn(\n          \"absolute top-1 left-1/2 -translate-x-1/2 text-gray-400 transition-opacity\",\n          \"opacity-0\",\n          \"group-hover:opacity-100\",\n          \"group-has-[.no-drag:hover]:opacity-0\"\n        )}\n        size={16}\n      />}\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/charts/QueryFilter.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { cn } from \"@/utils\"\nimport { GripHorizontalIcon, Search } from \"lucide-react\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { DashboardComponent, QueryConfig, TimeRangeMode, TimeRangeType } from \"../../types/dataConfig\"\nimport { AdvancedDatePicker, DatePickerValue } from \"../AdvancedDatePicker\"\nimport { useTranslation } from \"react-i18next\"\n\ninterface QueryFilterProps {\n    component: DashboardComponent  // Query the ID of the component, which is used to trigger the refresh of the associated chart\n    isPreviewMode?: boolean\n    isDark?: boolean\n    hasChanged?: boolean\n}\n\nexport function QueryFilter({ hasChanged, isDark, component, isPreviewMode = false }: QueryFilterProps) {\n    const { t } = useTranslation(\"dashboard\")\n\n    const { refreshChartsByQuery, setQueryComponentParams } = useEditorDashboardStore()\n    const [date, setDate] = useState<Date | undefined>(undefined)\n\n    const handleDateChange = (newDate: Date) => {\n        setDate(newDate)\n    }\n\n    const handleQuery = () => {\n        console.log(\"查询日期:\", date)\n        // Refresh the associated chart based on the query component ID \n        refreshChartsByQuery(component, filter)\n    }\n\n    const { queryConditions } = component.data_config as QueryConfig\n    const map = { 'year_month': 'month', 'year_month_day': 'day', 'year_month_day_hour': 'hour' }\n\n    const [filter, setFilter] = useState<DatePickerValue | undefined>();\n    useEffect(() => {\n        console.log('filter :>> ', filter);\n    }, [filter])\n\n    const initRef = useRef(true)\n    useEffect(() => {\n        // set default filter\n        const { type, mode, recentDays, startDate, endDate } = queryConditions.defaultValue\n        // Update only on the first time or when the configuration changes\n        if (!(initRef.current || hasChanged)) return\n        initRef.current = false\n\n        if (queryConditions.defaultValue) {\n            if (type === TimeRangeType.ALL) {\n                setQueryComponentParams(component.id, undefined)\n                return setFilter(undefined)\n            }\n            const datePickerVal = {\n                isDynamic: mode === TimeRangeMode.Dynamic,\n                shortcutKey: recentDays ? `last_${recentDays}` : undefined,\n                startTime: startDate,\n                endTime: endDate\n            }\n            setFilter(datePickerVal)\n            setQueryComponentParams(component.id, datePickerVal)\n        }\n    }, [queryConditions.defaultValue])\n\n    return (\n        <div className=\"group w-full h-full p-4 py-0 flex flex-col gap-3 relative\">\n            {/* date zone */}\n            {/* <div className=\"flex flex-col gap-2 pr-24\">\n                <label className={cn(\"text-sm font-medium\", \"dark:text-gray-400\")}>{t('selectDate')}</label>\n            </div> */}\n\n            {/* query btn */}\n            <div className=\"w-full flex flex-1 items-center select-none\">\n                <div className=\"no-drag w-full flex gap-4 \">\n                    <AdvancedDatePicker\n                        granularity={map[queryConditions.timeGranularity]}\n                        mode={queryConditions.displayType}\n                        isDark={isDark}\n                        value={filter}\n                        placeholder={t('selectTime')}\n                        onChange={(val) => {\n                            console.log(\"Day Range Change:\", val);\n                            setFilter(val);\n                            setQueryComponentParams(component.id, val)\n                        }}\n                    />\n                    <Button onClick={handleQuery} className=\" gap-1\">\n                        <Search className=\"h-4 w-4\" />\n                        {t('query')}\n                    </Button>\n                </div>\n            </div>\n\n            {!isPreviewMode && <GripHorizontalIcon\n                className={cn(\n                    \"absolute -top-1 left-1/2 -translate-x-1/2 text-gray-400 transition-opacity\",\n                    \"opacity-0\",\n                    \"group-hover:opacity-100\",\n                    \"group-has-[.no-drag:hover]:opacity-0\"\n                )}\n                size={16}\n            />}\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/ChartSelector.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport {\n  Select,\n  SelectTrigger,\n  SelectValue,\n  SelectContent,\n  SelectItem\n} from \"@/components/bs-ui/select\"\nimport { Checkbox } from \"@/components/bs-ui/checkBox\"\nimport { useComponentEditorStore, useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { AdvancedDatePicker } from \"../AdvancedDatePicker\"\nimport { ListIndentIncrease, ListIndentDecrease } from \"lucide-react\"\nimport { toast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useTranslation } from \"react-i18next\"\nimport { useQuery } from \"react-query\"\nimport { getDatasets } from \"@/controllers/API/dashboard\"\n\n/* ================== 类型 ================== */\nexport interface ChartLinkConfig {\n  chartIds: string[]\n  displayType: string\n  timeGranularity: string\n  isDefault: boolean\n  dateRange: {\n    start: string\n    end: string\n    shortcutKey?: string\n    isDynamic?: boolean\n  }\n}\n\ninterface ChartSelectorProps {\n  onSave?: (config: ChartLinkConfig) => void\n  onCancel?: () => void\n}\n\n/* ================== 组件 ================== */\nexport default function ChartSelector({\n  onSave,\n}: ChartSelectorProps) {\n  const { t } = useTranslation(\"dashboard\")\n  const [selectedCharts, setSelectedCharts] = useState<string[]>([])\n  const [displayType, setDisplayType] = useState(t(\"chartSelector.displayTypes.timeRange\", \"时间范围\"))\n  const [timeGranularity, setTimeGranularity] = useState(t(\"chartSelector.granularities.yearMonthDay\", \"年月日\"))\n  const [isDefault, setIsDefault] = useState(false)\n  const [timeFilter, setTimeFilter] = useState<any>(null)\n  const [collapsed, setCollapsed] = useState(false)\n\n  // 从 store 获取当前 dashboard 和组件\n  const { currentDashboard } = useEditorDashboardStore()\n  const { editingComponent } = useComponentEditorStore()\n  const { data: allDatasets = [], isLoading: datasetsLoading } = useQuery({\n    queryKey: ['datasets'],\n    queryFn: () => getDatasets()\n  })\n  useEffect(() => {\n    const config = editingComponent?.data_config\n\n    if (config && 'linkedComponentIds' in config) {\n      setSelectedCharts(config.linkedComponentIds || [])\n\n      if (config.queryConditions) {\n        const queryCond = config.queryConditions\n\n        if (queryCond.displayType) {\n          const displayTypeValue = queryCond.displayType === \"single\"\n            ? t(\"chartSelector.displayTypes.time\", \"时间\")\n            : t(\"chartSelector.displayTypes.timeRange\", \"时间范围\")\n          setDisplayType(displayTypeValue)\n        }\n\n        // 映射时间粒度\n        if (queryCond.timeGranularity) {\n          let timeGranularityValue = t(\"chartSelector.granularities.yearMonthDay\", \"年月日\")\n          if (queryCond.timeGranularity === \"year_month\") {\n            timeGranularityValue = t(\"chartSelector.granularities.yearMonth\", \"年月\")\n          } else if (queryCond.timeGranularity === \"year_month_day_hour\") {\n            timeGranularityValue = t(\"chartSelector.granularities.yearMonthDayHour\", \"年月日时\")\n          }\n          setTimeGranularity(timeGranularityValue)\n        }\n\n        // 设置默认值\n        if (queryCond.hasDefaultValue !== undefined) {\n          setIsDefault(queryCond.hasDefaultValue)\n        }\n\n        // 处理时间范围 - 修改这里\n        if (queryCond.hasDefaultValue) {\n          try {\n            const startTime = queryCond.defaultValue.startDate\n            const endTime = queryCond.defaultValue.endDate\n            const mode = queryCond.defaultValue.mode || \"fixed\"\n\n            // 处理shortcutKey\n            let shortcutKey = ''\n            if (queryCond.defaultValue.type === 'recent_days') {\n              shortcutKey = `last_${queryCond.defaultValue.shortcutKey}`\n            }\n\n            if (startTime && endTime) {\n              setTimeFilter({\n                startTime: startTime,\n                endTime: endTime,\n                shortcutKey: shortcutKey,\n                isDynamic: mode === \"dynamic\"\n              })\n            } else {\n              setTimeFilter(null)\n            }\n          } catch (error) {\n            setTimeFilter(null)\n          }\n        } else {\n          setTimeFilter(null)\n        }\n      }\n    } else {\n      // 重置为默认值\n      setSelectedCharts([])\n      setDisplayType(t(\"chartSelector.displayTypes.timeRange\"))\n      setTimeGranularity(t(\"chartSelector.granularities.yearMonthDay\"))\n      setIsDefault(false)\n      setTimeFilter(null)\n    }\n  }, [editingComponent, t])\n  const onCancel = () => {\n    // 重置到编辑前的状态\n    const config = editingComponent?.data_config\n\n    if (config && 'linkedComponentIds' in config) {\n      setSelectedCharts(config.linkedComponentIds || [])\n\n      if (config.queryConditions) {\n        const queryCond = config.queryConditions\n\n        if (queryCond.displayType) {\n          const displayTypeValue = queryCond.displayType === \"single\"\n            ? t(\"chartSelector.displayTypes.time\", \"时间\")\n            : t(\"chartSelector.displayTypes.timeRange\", \"时间范围\")\n          setDisplayType(displayTypeValue)\n        }\n\n        // 映射时间粒度\n        if (queryCond.timeGranularity) {\n          let timeGranularityValue = t(\"chartSelector.granularities.yearMonthDay\", \"年月日\")\n          if (queryCond.timeGranularity === \"year_month\") {\n            timeGranularityValue = t(\"chartSelector.granularities.yearMonth\", \"年月\")\n          } else if (queryCond.timeGranularity === \"year_month_day_hour\") {\n            timeGranularityValue = t(\"chartSelector.granularities.yearMonthDayHour\", \"年月日时\")\n          }\n          setTimeGranularity(timeGranularityValue)\n        }\n\n        // 设置默认值\n        if (queryCond.hasDefaultValue !== undefined) {\n          setIsDefault(queryCond.hasDefaultValue)\n        }\n\n        // 处理时间范围\n        if (queryCond.hasDefaultValue && queryCond.defaultValue?.type === 'custom') {\n          try {\n            const startTime = queryCond.defaultValue.startDate\n            const endTime = queryCond.defaultValue.endDate\n            const mode = queryCond.defaultValue.mode || \"fixed\"\n\n            // 处理shortcutKey\n            let shortcutKey = ''\n            if (queryCond.defaultValue.type === 'recent_days' && queryCond.defaultValue.recentDays) {\n              shortcutKey = `last_${queryCond.defaultValue.recentDays}`\n            }\n\n            if (startTime && endTime) {\n              setTimeFilter({\n                startTime: startTime,\n                endTime: endTime,\n                shortcutKey: shortcutKey,\n                isDynamic: mode === \"dynamic\"\n              })\n            } else {\n              setTimeFilter(null)\n            }\n          } catch (error) {\n            setTimeFilter(null)\n          }\n        } else {\n          setTimeFilter(null)\n        }\n      }\n    } else {\n      // 重置为默认值\n      setSelectedCharts([])\n      setDisplayType(t(\"chartSelector.displayTypes.timeRange\"))\n      setTimeGranularity(t(\"chartSelector.granularities.yearMonthDay\"))\n      setIsDefault(false)\n      setTimeFilter(null)\n    }\n\n    // 收起面板\n    setCollapsed(!collapsed)\n  }\n  // 获取所有非查询类型的图表组件\n  const charts = currentDashboard\n    ? currentDashboard.components\n      .filter(component =>\n        component.type !== 'query'\n      )\n      .map(component => ({\n        id: component.id,\n        type: component.type,\n        name: component.title || t(\"chartSelector.unnamedChart\"),\n        dataset: component.dataset_code || t(\"chartSelector.noDataset\")\n      }))\n    : []\n\n  const getDatasetName = (datasetCode: string): string => {\n    if (!datasetCode || !allDatasets || allDatasets.length === 0) {\n      return t(\"chartSelector.noDataset\")\n    }\n\n    const dataset = allDatasets.find(d => d.dataset_code === datasetCode)\n    return dataset?.dataset_name || datasetCode\n  }\n  /* 单选 */\n  const toggleChart = (id: string) => {\n    setSelectedCharts(prev =>\n      prev.includes(id)\n        ? prev.filter(c => c !== id)\n        : [...prev, id]\n    )\n  }\n\n  const toggleSelectAll = () => {\n    const allChartIds = charts.map(c => c.id)\n    if (selectedCharts.length === allChartIds.length) {\n      setSelectedCharts([])\n    } else {\n      setSelectedCharts(allChartIds)\n    }\n  }\n\n  /* 保存 */\n  const handleSave = (e) => {\n\n\n    const config: ChartLinkConfig = {\n      chartIds: selectedCharts,\n      displayType,\n      timeGranularity,\n      isDefault,\n      dateRange: {\n        start: timeFilter?.startTime ?? \"\",\n        end: timeFilter?.endTime ?? \"\",\n        shortcutKey: timeFilter?.shortcutKey,\n        isDynamic: timeFilter?.isDynamic\n      }\n    }\n\n    e.isTrusted && toast({\n      variant: 'success',\n      description: t(\"chartSelector.messages.saveSuccess\"),\n    })\n    onSave?.(config)\n  }\n\n  // 计算是否全选\n  const isAllSelected = selectedCharts.length === charts.length && charts.length > 0\n\n  // 获取粒度对应的 granularity\n  const getGranularity = () => {\n    switch (timeGranularity) {\n      case t(\"chartSelector.granularities.yearMonth\"): return \"month\"\n      case t(\"chartSelector.granularities.yearMonthDayHour\"): return \"hour\"\n      default: return \"day\"\n    }\n  }\n\n  // 获取展示类型对应的 mode\n  const getMode = () => {\n    return displayType === t(\"chartSelector.displayTypes.timeRange\") ? \"range\" : \"single\"\n  }\n\n  // 收起状态显示\n  if (collapsed) {\n    return (\n      <div className=\"border-r flex flex-col h-full w-12 shrink-0\">\n        <div className=\"h-full flex flex-col items-center justify-center cursor-pointer hover:bg-accent/50 transition-colors\"\n          onClick={() => setCollapsed(false)}>\n          <div className=\"writing-mode-vertical text-sm font-medium py-4\">\n            {t(\"chartSelector.messages.collapse\")}\n          </div>\n          <div className=\"mt-2\">\n            <ListIndentDecrease className=\"h-4 w-4\" />\n          </div>\n        </div>\n      </div>\n    )\n  }\n\n\n  return (\n    <div className=\"border-r flex flex-col h-full w-[440px] shrink-0 bg-background relative\">\n      <div className=\"px-4 py-3 border-b flex items-center justify-between bg-muted/20 shrink-0\">\n        <div>\n          <h3 className=\"text-base font-semibold\">\n            {t(\"chartSelector.title\")}\n          </h3>\n        </div>\n        <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\" onClick={() => setCollapsed(true)}>\n          <ListIndentIncrease className=\"h-4 w-4\" />\n        </Button>\n      </div>\n\n      <div className=\"flex-1 overflow-y-auto p-4 space-y-4\">\n        <div className=\"space-y-2\">\n          <div>{t(\"chartSelector.selectCharts\")}</div>\n\n          {/* 全选 */}\n          <div className=\"flex items-center gap-2\">\n            <Checkbox\n              checked={isAllSelected}\n              onCheckedChange={toggleSelectAll}\n            />\n            <span className=\"font-medium\">\n              {t(\"chartSelector.selectAll\")}\n            </span>\n          </div>\n\n          {/* 单个图表 */}\n          <div className=\"max-h-40 overflow-y-auto space-y-2\">\n            {charts.length > 0 ? (\n              charts.map(chart => (\n                <div key={chart.id} className=\"flex items-center gap-2\">\n                  <Checkbox\n                    checked={selectedCharts.includes(chart.id)}\n                    onCheckedChange={() => toggleChart(chart.id)}\n                  />\n                  <span className=\"text-sm flex\">\n                    <img\n                      src={`${__APP_ENV__.BASE_URL}/assets/dashboard/${chart.type}.png`}\n                      className=\"w-4 h-4 shrink-0 mt-0.5 mr-1\"\n                      alt={chart.type}\n                    />\n                    {chart.name}\n                    {\n                      chart.dataset && (\n                        <span className=\"text-muted-foreground text-xs ml-4 mt-0.5\">\n                          {getDatasetName(chart.dataset)}\n                        </span>\n                      )\n                    }\n                  </span>\n                </div>\n              ))\n            ) : (\n              <div className=\"text-sm text-muted-foreground pl-4\">\n                {t(\"chartSelector.messages.noCharts\")}\n              </div>\n            )}\n          </div>\n\n          <div className=\"h-px bg-muted\"></div>\n\n          <div className=\"space-y-3\">\n            <div className=\"text-md font-medium\">\n              {t(\"chartSelector.config\")}\n            </div>\n\n            <div className=\"space-y-1\">\n              <label className=\"text-sm\">\n                {t(\"chartSelector.displayType\")}\n              </label>\n              <Select value={displayType} onValueChange={setDisplayType}>\n                <SelectTrigger className=\"h-9\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value={t(\"chartSelector.displayTypes.timeRange\")}>\n                    {t(\"chartSelector.displayTypes.timeRange\")}\n                  </SelectItem>\n                  <SelectItem value={t(\"chartSelector.displayTypes.time\")}>\n                    {t(\"chartSelector.displayTypes.time\")}\n                  </SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            {/* 时间粒度 */}\n            <div className=\"space-y-1\">\n              <label className=\"text-sm\">\n                {t(\"chartSelector.timeGranularity\")}\n              </label>\n              <Select value={timeGranularity} onValueChange={setTimeGranularity}>\n                <SelectTrigger className=\"h-9\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value={t(\"chartSelector.granularities.yearMonth\")}>\n                    {t(\"chartSelector.granularities.yearMonth\")}\n                  </SelectItem>\n                  <SelectItem value={t(\"chartSelector.granularities.yearMonthDay\")}>\n                    {t(\"chartSelector.granularities.yearMonthDay\")}\n                  </SelectItem>\n                  <SelectItem value={t(\"chartSelector.granularities.yearMonthDayHour\")}>\n                    {t(\"chartSelector.granularities.yearMonthDayHour\")}\n                  </SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            {/* 默认值 */}\n            <div className=\"flex items-center gap-2\">\n              <Checkbox\n                checked={isDefault}\n                onCheckedChange={() => setIsDefault(prev => !prev)}\n              />\n              <span className=\"text-sm\">\n                {t(\"chartSelector.setDefault\")}\n              </span>\n            </div>\n\n            {isDefault && (\n              <div className=\"space-y-1 flex flex-1 w-full\">\n                <AdvancedDatePicker\n                  granularity={getGranularity()}\n                  mode={getMode()}\n                  value={timeFilter}\n                  onChange={(val) => setTimeFilter(val)}\n                  placeholder={t(\"chartSelector.datePicker.placeholder\")}\n                />\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n      <div className=\"border-t bg-background p-4 shrink-0\">\n        <div className=\"flex justify-end gap-2\">\n          <Button\n            variant=\"outline\"\n            onClick={onCancel}\n            className=\"flex-1\"\n          >\n            {t(\"chartSelector.buttons.cancel\")}\n          </Button>\n          <Button\n            id=\"query_save\"\n            onClick={handleSave}\n            className=\"flex-1\"\n          >\n            {t(\"chartSelector.buttons.save\")}\n          </Button>\n        </div>\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/ComponentConfigDrawer.tsx",
    "content": "// ComponentConfigDrawer.tsx\n\"use client\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { ChevronDown, GripVertical, ListIndentDecrease, ListIndentIncrease, PencilLine, X } from \"lucide-react\"\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport { Label } from \"@/components/bs-ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useComponentEditorStore, useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { useTranslation } from \"react-i18next\"\nimport { ChartType, ComponentStyleConfig, QueryConfig, TimeRangeMode } from \"../../types/dataConfig\"\nimport { AdvancedDatePicker } from \"../AdvancedDatePicker\"\nimport ComponentPicker, { ChartGroupItems } from \"../editor/ComponentPicker\"\nimport ChartSelector from \"./ChartSelector\"\nimport { DashboardConfigPanel } from \"./DashboardConfigPanel\"\nimport { DatasetField, DatasetSelector } from \"./DatasetSelector\"\nimport { DimensionBlock } from \"./DimensionBlock\"\nimport { FilterConditionDialog } from \"./FilterConditionDialog\"\nimport { StyleConfigPanel } from \"./StyleConfigPanel\"\nimport { useChartState } from \"./useChartState\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nconst FULL_DEFAULT_STYLE_CONFIG: ComponentStyleConfig = {\n  themeColor: \"professional-blue\",\n  bgColor: \"\",\n\n  title: \"\",\n  titleFontSize: 16,\n  titleBold: true,\n  titleItalic: false,\n  titleUnderline: false,\n  titleStrikethrough: false,\n  titleAlign: \"left\",\n  titleColor: \"\",\n\n  xAxisTitle: \"\",\n  xAxisFontSize: 14,\n  xAxisBold: false,\n  xAxisItalic: false,\n  xAxisUnderline: false,\n  xAxisStrikethrough: false,\n  xAxisAlign: \"center\",\n  xAxisColor: \"#666666\",\n\n  yAxisTitle: \"\",\n  yAxisFontSize: 14,\n  yAxisBold: false,\n  yAxisItalic: false,\n  yAxisUnderline: false,\n  yAxisStrikethrough: false,\n  yAxisAlign: \"center\",\n  yAxisColor: \"#666666\",\n\n  legendPosition: \"bottom\",\n  legendFontSize: 12,\n  legendBold: false,\n  legendItalic: false,\n  legendUnderline: false,\n  legendStrikethrough: false,\n  legendAlign: \"left\",\n  legendColor: \"#999999\",\n\n  showSubtitle: false,\n  subtitle: \"\",\n  subtitleFontSize: 14,\n  subtitleStrikethrough: false,\n  subtitleBold: false,\n  subtitleItalic: false,\n  subtitleUnderline: false,\n  subtitleAlign: \"center\",\n  subtitleColor: \"#000000\",\n\n  metricFontSize: 14,\n  metricBold: false,\n  metricItalic: false,\n  metricUnderline: false,\n  metricStrikethrough: false,\n  metricAlign: \"center\",\n  metricColor: \"#000000\",\n\n  showLegend: true,\n  showAxis: true,\n  showDataLabel: false,\n  showGrid: true,\n}\n\nexport function ComponentConfigDrawer() {\n  const { t } = useTranslation(\"dashboard\")\n  const { editingComponent, updateEditingComponent } = useComponentEditorStore();\n  const { refreshChart } = useEditorDashboardStore();\n  // 折叠状态\n  const [configCollapsed, setConfigCollapsed] = useState({\n    basic: false,\n    data: false,\n    category: false,\n    stack: false,\n    value: false\n  })\n  const { toast } = useToast()\n\n  // Tab状态\n  const [configTab, setConfigTab] = useState<\"basic\" | \"style\">(\"basic\")\n\n  // 限制结果状态\n  const [limitType, setLimitType] = useState<\"all\" | \"limit\">(\"limit\")\n  const [limitValue, setLimitValue] = useState(\"1000\")\n\n  // 数据集字段\n  const [datasetFields, setDatasetFields] = useState<DatasetField[]>([])\n\n  // 对话框状态\n  const [editDialogOpen, setEditDialogOpen] = useState(false)\n  const [filterDialogOpen, setFilterDialogOpen] = useState(false)\n  const [editingDimension, setEditingDimension] = useState<any>(null)\n\n  const [filter, setFilter] = useState();\n  // 使用自定义Hook管理所有图表状态\n  const chartState = useChartState(editingComponent)\n  const [isMetricCard, setIsMetricCard] = useState(true)\n\n  // 从Hook中解构状态和方法\n  const {\n    chartType,\n    title,\n    setTitle,\n    styleConfig,\n    categoryDimensions,\n    stackDimensions,\n    valueDimensions,\n    dragOverSection,\n    filterGroup,\n    draggingId,\n    sortPriorityFields,\n    currentChartHasStack,\n    handleChartTypeChange,\n    handleDragOver,\n    handleDragLeave,\n    handleDrop,\n    handleDeleteDimension,\n    handleSortChange,\n    handleDropSortPriority,\n    handleAddFilter,\n    handleDeleteFilter,\n    setDraggingId,\n    setFilterGroup,\n    getDataConfig\n  } = chartState\n  const STACKED_CHART_TYPES = new Set<ChartType>([\n    ChartType.StackedBar,\n    ChartType.StackedHorizontalBar,\n    ChartType.StackedLine\n  ])\n  const getMaxMetricCount = (chartType: ChartType) => {\n    return STACKED_CHART_TYPES.has(chartType) ? 3 : 1\n  }\n  const isVirtualMetric = (field: DatasetField) => {\n    return field.isVirtual === true\n  }\n  useEffect(() => {\n    if (editingComponent) {\n      // 从组件配置中获取时间范围\n      const timeFilter = editingComponent.data_config?.timeFilter;\n      if (timeFilter) {\n        let shortcutKey;\n        if (timeFilter.type === 'recent_days' && timeFilter.recentDays) {\n          shortcutKey = `last_${timeFilter.recentDays}`;\n        } else {\n          shortcutKey = '';\n        }\n\n        setFilter({\n          startTime: timeFilter.startDate,\n          endTime: timeFilter.endDate,\n          shortcutKey: shortcutKey,\n          isDynamic: timeFilter.mode === \"dynamic\"\n\n        });\n      } else {\n        setFilter(null);\n      }\n\n      // 从组件配置中获取限制选项\n      const limitConfig = editingComponent.data_config?.resultLimit;\n      if (limitConfig?.limit) {\n        setLimitType(\"limit\");\n        setLimitValue(limitConfig.limit);\n\n      } else {\n        // 默认值\n        setLimitType(\"all\");\n        setLimitValue(\"1000\");\n      }\n\n      // 重置折叠状态\n      setConfigCollapsed({\n        basic: false,\n        data: false,\n        category: false,\n        stack: false,\n        value: false\n      });\n\n      // 重置配置标签页\n      setConfigTab(\"basic\");\n    }\n  }, [editingComponent?.id]);\n  const handleFieldClick = useCallback((field: DatasetField) => {\n    if (!editingComponent) return\n\n    const safeFieldId = field.fieldId || field.fieldCode || field.fieldName;\n\n    const isFieldAlreadyAdded = (fieldId: string, section: 'category' | 'stack' | 'value'): boolean => {\n      switch (section) {\n        case 'category':\n          return categoryDimensions.some(dim => dim.fieldId === fieldId)\n        case 'stack':\n          return stackDimensions.some(dim => dim.fieldId === fieldId)\n        case 'value':\n          return valueDimensions.some(dim => dim.fieldId === fieldId)\n        default:\n          return false\n      }\n    }\n    const isFieldInCategoryOrStack = (fieldId: string) => {\n      return (\n        categoryDimensions.some(dim => dim.fieldId === fieldId) ||\n        stackDimensions.some(dim => dim.fieldId === fieldId)\n      )\n    }\n    if (field.role === 'dimension') {\n      if (isFieldInCategoryOrStack(safeFieldId)) {\n        toast({\n          description: t(\"useChartState.warn.fieldExists\"),\n          variant: \"warning\"\n        })\n        return\n      }\n      if (categoryDimensions.length < 2 && isMetricCard) {\n        if (isFieldAlreadyAdded(safeFieldId, 'category')) {\n          toast({\n            description: t(\"componentConfigDrawer.toast.fieldAlreadyExists\", {\n              section: t(\"componentConfigDrawer.sections.category\")\n            }),\n            variant: \"warning\"\n          })\n          return\n        }\n        const newDimension = {\n          id: `${safeFieldId}-${Date.now()}`,\n          fieldId: safeFieldId,\n          displayName: field.displayName || field.fieldName,\n          originalName: field.displayName || field.fieldName,\n          fieldType: field.role,\n          timeGranularity: field.timeGranularity,\n          isDivide: field.isDivide,\n          sort: null\n        }\n        chartState.setCategoryDimensions(prev => [...prev, newDimension])\n      } else if (currentChartHasStack && stackDimensions.length === 0 && isMetricCard) {\n        if (isFieldInCategoryOrStack(safeFieldId)) {\n          toast({\n            description: t(\"useChartState.warn.fieldExists\"),\n            variant: \"warning\"\n          })\n          return\n        }\n        if (isFieldAlreadyAdded(safeFieldId, 'stack')) {\n          toast({\n            description: t(\"componentConfigDrawer.toast.fieldAlreadyExists\", {\n              section: t(\"componentConfigDrawer.sections.stack\")\n            }),\n            variant: \"warning\"\n          })\n          return\n        }\n        const newDimension = {\n          id: `${safeFieldId}-${Date.now()}`,\n          fieldId: safeFieldId,\n          displayName: field.displayName || field.fieldName,\n          originalName: field.displayName || field.fieldName,\n          fieldType: field.role,\n          timeGranularity: field.timeGranularity,\n          sort: null\n        }\n        chartState.setStackDimensions(prev => [...prev, newDimension])\n      } else {\n        if (!isMetricCard) {\n          toast({\n            description: t(\"componentConfigDrawer.toast.metricReached\"),\n            variant: \"warning\"\n          })\n        } else {\n          toast({\n            description: t(\"componentConfigDrawer.toast.dimensionLimitReached\"),\n            variant: \"warning\"\n          })\n        }\n\n      }\n    } else if (field.role === 'metric') {\n      const maxMetricCount = getMaxMetricCount(chartType)\n      const hasVirtualMetric = valueDimensions.some(d => d.isVirtual)\n      const currentIsVirtual = isVirtualMetric(field)\n\n      if (valueDimensions.length >= maxMetricCount) {\n        toast({\n          description: t(\"componentConfigDrawer.toast.metricLimitReached\", {\n            count: maxMetricCount\n          }),\n          variant: \"warning\"\n        })\n        return\n      }\n\n      if (valueDimensions.length > 0) {\n        // if (currentIsVirtual && !hasVirtualMetric) {\n        //   toast({\n        //     description: t(\"componentConfigDrawer.toast.virtualMetricConflict\"),\n        //     variant: \"warning\"\n        //   })\n        //   return\n        // }\n\n        // if (!currentIsVirtual && hasVirtualMetric) {\n        //   toast({\n        //     description: t(\"componentConfigDrawer.toast.virtualMetricConflict\"),\n        //     variant: \"warning\"\n        //   })\n        //   return\n        // }\n\n        // 多个虚拟指标\n        // if (currentIsVirtual && hasVirtualMetric) {\n        //   toast({\n        //     description: t(\"componentConfigDrawer.toast.multipleVirtualMetric\"),\n        //     variant: \"warning\"\n        //   })\n        //   return\n        // }\n      }\n\n      if (isFieldAlreadyAdded(safeFieldId, 'value')) {\n        toast({\n          description: t(\"componentConfigDrawer.toast.fieldAlreadyExists\", {\n            section: t(\"componentConfigDrawer.sections.value\")\n          }),\n          variant: \"warning\"\n        })\n        return\n      }\n\n      const newMetric = {\n        id: `${safeFieldId}-${Date.now()}`,\n        fieldId: safeFieldId,\n        displayName: field.displayName || field.fieldName,\n        originalName: field.displayName || field.fieldName,\n        fieldType: field.role,\n        sort: null,\n        aggregation: 'sum' as const,\n        isVirtual: currentIsVirtual,\n        isDivide: field.isDivide,\n      }\n\n      chartState.setValueDimensions(prev => [...prev, newMetric])\n    }\n\n  }, [editingComponent, categoryDimensions, stackDimensions, valueDimensions, currentChartHasStack, chartState, toast, t])\n\n  const invalidFieldIds = useMemo(() => {\n    const validSet = new Set(\n      datasetFields.map(f => f.fieldId || f.fieldCode || f.fieldName).filter(Boolean)\n    )\n\n    return new Set(\n      [...categoryDimensions, ...stackDimensions, ...valueDimensions]\n        .filter(d => !validSet.has(d.fieldId))\n        .map(d => d.id)\n    )\n  }, [datasetFields, categoryDimensions, stackDimensions, valueDimensions])\n  useEffect(() => {\n    if (chartType === 'metric') {\n      setIsMetricCard(false)\n    } else {\n      setIsMetricCard(true)\n    }\n  }, [chartType])\n  editingComponent?.dataset_code\n  // 数据集改变\n  const handleDatasetChange = useCallback((datasetCode: string) => {\n    if (editingComponent) {\n      updateEditingComponent({ dataset_code: datasetCode })\n      // 只有当数据集真正改变时才重置\n      if (editingComponent.dataset_code !== datasetCode) {\n        setFilterGroup({\n          logic: \"and\",\n          conditions: []\n        })\n      }\n    }\n  }, [editingComponent, updateEditingComponent, setFilterGroup])\n\n  // 拖拽开始\n  const handleDragStart = useCallback((e: React.DragEvent, data: any) => {\n    e.dataTransfer.setData('application/json', JSON.stringify(data))\n  }, [])\n\n  // 编辑显示名称\n  const openEditDialog = useCallback((section: 'category' | 'stack' | 'value', dimensionId: string, originalName: string, displayName: string) => {\n    setEditingDimension({ id: dimensionId, section, originalName, displayName })\n    setEditDialogOpen(true)\n  }, [])\n\n  const handleMetricFormatChange = useCallback(\n    (dimensionId: string, format: any) => {\n      chartState.setValueDimensions(prev =>\n        prev.map(d =>\n          d.id === dimensionId\n            ? { ...d, numberFormat: format }\n            : d\n        )\n      )\n    },\n    [chartState]\n  )\n\n  const saveDisplayName = useCallback(() => {\n    if (editingDimension) {\n      const trimmedName = editingDimension.displayName?.trim();\n      if (!trimmedName) {\n        toast({\n          description: t(\"componentConfigDrawer.dialog.displayRequired\"),\n          variant: \"error\"\n        });\n        return;\n      }\n      // 更新对应的维度显示名称\n      const updateDimensions = (prev: any[]) =>\n        prev.map(d => d.id === editingDimension.id ? { ...d, displayName: editingDimension.displayName } : d)\n\n      if (editingDimension.section === 'category') {\n        chartState.setCategoryDimensions(updateDimensions(chartState.categoryDimensions))\n      } else if (editingDimension.section === 'stack') {\n        chartState.setStackDimensions(updateDimensions(chartState.stackDimensions))\n      } else if (editingDimension.section === 'value') {\n        chartState.setValueDimensions(updateDimensions(chartState.valueDimensions))\n      }\n\n      setEditDialogOpen(false)\n      setEditingDimension(null)\n    }\n  }, [editingDimension, chartState])\n\n  // 筛选条件\n  const handleEditFilter = useCallback(() => {\n    if (filterGroup) {\n      setFilterDialogOpen(true)\n    } else {\n      handleAddFilter()\n      setFilterDialogOpen(true)\n    }\n  }, [filterGroup, handleAddFilter])\n\n  const handleSaveFilter = useCallback((newFilterGroup: any) => {\n    if (editingComponent) {\n      // 获取当前的数据配置\n      const currentDataConfig = editingComponent.data_config || {}\n\n      updateEditingComponent({\n        data_config: {\n          ...currentDataConfig,\n          filters: newFilterGroup.conditions,\n          filtersLogic: newFilterGroup.logic\n        }\n      })\n    }\n    setFilterGroup(newFilterGroup)\n    setFilterDialogOpen(false)\n  }, [])\n\n  // 切换折叠\n  const toggleCollapse = useCallback((section: keyof typeof configCollapsed) => {\n    setConfigCollapsed(prev => ({ ...prev, [section]: !prev[section] }))\n  }, [])\n\n  const validateChartConfig = ({\n    editingComponent,\n    chartType,\n    isMetricCard,\n    categoryDimensions,\n    valueDimensions,\n    stackDimensions,\n    currentChartHasStack,\n    invalidFieldIds\n  }) => {\n    if (editingComponent.type !== 'query' && editingComponent.type !== 'metric') {\n      if (!chartType) return { isValid: false, errorKey: 'chartTypeRequired' };\n    }\n\n    if (editingComponent.type !== 'metric' && isMetricCard) {\n      if (categoryDimensions.length === 0) {\n        return { isValid: false, errorKey: 'categoryRequired' };\n      }\n      if (categoryDimensions.some(dim => invalidFieldIds.has(dim.id))) {\n        return { isValid: false, errorKey: 'invalidCategoryFields' };\n      }\n    }\n\n    if (valueDimensions.length === 0) {\n      return { isValid: false, errorKey: 'metricRequired' };\n    }\n    if (valueDimensions.some(dim => invalidFieldIds.has(dim.id))) {\n      return { isValid: false, errorKey: 'invalidMetricFields' };\n    }\n\n    if (!editingComponent.dataset_code) {\n      return { isValid: false, errorKey: 'datasetRequired' };\n    }\n\n    // if (currentChartHasStack && stackDimensions.length === 0) {\n    //   return { isValid: false, errorKey: 'stackRequired' };\n    // }\n\n    return { isValid: true };\n  };\n  // 更新图表 - 添加校验\n  const handleUpdateChart = useCallback((e) => {\n    if (!editingComponent) return\n\n    if (e.isTrusted) {\n      const { isValid, errorKey } = validateChartConfig({\n        editingComponent,\n        chartType,\n        isMetricCard,\n        categoryDimensions,\n        valueDimensions,\n        stackDimensions,\n        currentChartHasStack,\n        invalidFieldIds\n      });\n\n      if (!isValid) {\n        if (errorKey) {\n          toast({\n            description: t(`componentConfigDrawer.validation.${errorKey}`),\n            variant: \"error\"\n          });\n        }\n        return;\n      }\n    }\n\n    const dataConfig = getDataConfig(limitType, limitValue, editingComponent.data_config?.timeFilter)\n    // dataConfig.isConfigured = e.isTrusted\n\n    const finalStyleConfig = styleConfig && Object.keys(styleConfig).length > 0\n      ? { ...styleConfig }\n      : { ...FULL_DEFAULT_STYLE_CONFIG }\n\n    if (dataConfig?.metrics?.[0]?.fieldName && !isMetricCard) {\n      finalStyleConfig.title = dataConfig.metrics[0].fieldName\n    } else if (chartType !== ChartType.Metric) {\n      finalStyleConfig.title = editingComponent.title\n    } else {\n      finalStyleConfig.title = ''\n    }\n    updateEditingComponent({\n      data_config: dataConfig,\n      type: chartType,\n      title: finalStyleConfig.title || dataConfig.metrics[0].fieldName,\n      style_config: finalStyleConfig,\n      dataset_code: editingComponent.dataset_code\n    })\n\n\n    if (e.isTrusted) {\n      refreshChart(editingComponent.id)\n\n      toast({\n        description: t(\"componentConfigDrawer.dialog.chartUpdated\"),\n        variant: \"success\"\n      })\n    }\n  }, [\n    editingComponent,\n    chartType,\n    title,\n    styleConfig,\n    limitType,\n    limitValue,\n    getDataConfig,\n    updateEditingComponent,\n    refreshChart,\n    categoryDimensions,\n    valueDimensions,\n    stackDimensions,\n    currentChartHasStack,\n    invalidFieldIds,\n    sortPriorityFields,\n    chartState.sortPriorityOrder,\n    toast,\n    t\n  ])\n  const isStackedChart = (type: ChartType) =>\n    type.startsWith('grouped-');\n  // 时间范围改变\n  const handleTimeFilterChange = useCallback((val: any) => {\n    if (editingComponent) {\n      let recentDays;\n      if (val?.shortcutKey) {\n        if (val.shortcutKey.startsWith('last_')) {\n          recentDays = val.shortcutKey.replace('last_', '');\n        } else {\n          recentDays = val.shortcutKey;\n        }\n      }\n      updateEditingComponent({\n        ...editingComponent,\n        data_config: {\n          ...editingComponent.data_config,\n          timeFilter: val ? {\n            recentDays: recentDays,\n            type: val.shortcutKey ? \"recent_days\" : \"custom\",\n            startDate: val.startTime,\n            endDate: val.endTime,\n            mode: val.isDynamic ? \"dynamic\" : \"fixed\"\n          } : undefined\n        }\n      });\n    }\n  }, [editingComponent, updateEditingComponent])\n\n  const PanelHeader = useCallback(({ title: panelTitle, onCollapse, icon }: any) => (\n    <div className=\"px-4 py-3 border-b flex items-center justify-between bg-muted/20\">\n      <h3 className=\"text-base font-semibold\">{panelTitle}</h3>\n      <Button variant=\"ghost\" size=\"icon\" onClick={onCollapse} className=\"h-8 w-8\">\n        {icon}\n      </Button>\n    </div>\n  ), [])\n\n  const CollapseLabel = useCallback(({ label, onClick, icon, styleLabel }: any) => (\n    <div className=\"h-full flex flex-col items-center cursor-pointer hover:bg-accent/50 transition-colors\" onClick={onClick}>\n      <div className=\"m-[20px]\">{icon}</div>\n      <div className=\"w-full h-[2px] bg-gray-100 mb-4\"></div>\n      <div className=\"writing-mode-vertical text-sm font-medium tracking-[6px]\">{label}</div>\n      <div className=\"writing-mode-vertical mt-4 text-sm font-medium tracking-[6px]\">{styleLabel}</div>\n\n    </div>\n  ), [])\n  const handleAggregationChange = useCallback((dimensionId: string, aggregation: string) => {\n    chartState.setValueDimensions(prev =>\n      prev.map(d =>\n        d.id === dimensionId\n          ? { ...d, aggregation }\n          : d\n      )\n    );\n  }, [chartState]);\n  const Tab = useCallback(({ active, children, onClick }: any) => (\n    <div className={`pb-2 cursor-pointer transition-colors ${active ? \"border-b-2 border-primary text-primary font-medium\" : \"text-muted-foreground hover:text-foreground\"}`} onClick={onClick}>\n      {children}\n    </div>\n  ), [])\n\n  const FormBlock = useCallback(({ label, required, children }: any) => (\n    <div className=\"space-y-2\">\n      <label className=\"text-sm font-medium flex items-center gap-1\">\n        {required && <span className=\"text-red-500\">*</span>}\n        {label}\n      </label>\n      {children}\n    </div>\n  ), [])\n\n  const CollapsibleBlock = useCallback(({ title: blockTitle, required, collapsed, onCollapse, children }: any) => (\n    <div className=\"space-y-3\">\n      <div className=\"flex items-center justify-between\">\n        <label className=\"text-sm font-medium flex items-center gap-1 text-foreground\">\n          {required && <span className=\"text-red-500\">*</span>}\n          {blockTitle}\n        </label>\n      </div>\n      {!collapsed && children}\n    </div>\n  ), [])\n\n  if (!editingComponent) {\n    return (\n      <DashboardConfigPanel\n        collapsed={configCollapsed.basic}\n        onCollapse={() => toggleCollapse('basic')}\n      />\n    )\n  }\n\n  return (\n    <div className=\"h-full flex bg-background border-l border-border\">\n      {editingComponent.type === 'query' ? (\n        <ChartSelector\n          onSave={(chartLinkConfig) => {\n            console.log('保存查询配置:', chartLinkConfig)\n\n            const { dateRange } = chartLinkConfig\n            // 构建 QueryConfig\n            const queryConfig: QueryConfig = {\n              linkedComponentIds: chartLinkConfig.chartIds || [],\n              queryConditions: {\n                id: editingComponent?.data_config?.queryConditions?.id || generateUUID(4),\n                displayType: chartLinkConfig.displayType === \"时间\" ? \"single\" : \"range\",\n                timeGranularity: chartLinkConfig.timeGranularity === \"年月\" ? \"year_month\" :\n                  chartLinkConfig.timeGranularity === \"年月日时\" ? \"year_month_day_hour\" : \"year_month_day\",\n                hasDefaultValue: chartLinkConfig.isDefault,\n                defaultValue: chartLinkConfig.isDefault ? {\n                  shortcutKey: chartLinkConfig.dateRange.shortcutKey ? parseInt(chartLinkConfig.dateRange.shortcutKey.replace('last_', '')) : undefined,\n                  // startDate: new Date(chartLinkConfig.dateRange.start).getTime(),\n                  // endDate: new Date(chartLinkConfig.dateRange.end).getTime(),\n\n                  type: chartLinkConfig.dateRange.shortcutKey ? \"recent_days\" : \"custom\",\n                  mode: dateRange.isDynamic ? TimeRangeMode.Dynamic : TimeRangeMode.Fixed,\n                  recentDays: dateRange.shortcutKey ? parseInt(dateRange.shortcutKey.replace('last_', '')) : undefined,\n                  startDate: dateRange.start,\n                  endDate: dateRange.end\n                } : {\n                  type: 'all' as const\n                }\n              }\n            }\n\n            console.log('生成的 QueryConfig:', queryConfig)\n\n            // 更新组件配置\n            updateEditingComponent({\n              // 保持其他字段不变，只更新 data_config\n              data_config: queryConfig\n            })\n\n            // const dashboardStore = useEditorDashboardStore.getState();\n            // dashboardStore.updateComponent(editingComponent.id, {\n            //   data_config: queryConfig\n            // })\n\n            // 刷新查询组件\n            refreshChart(editingComponent.id)\n          }}\n          onCancel={() => {\n            updateEditingComponent(null)\n          }}\n        />\n      ) : (\n        <>\n          <div className={`border-r flex flex-col h-full transition-all duration-300 ${configCollapsed.basic ? \"w-12\" : \"w-[260px]\"} shrink-0`}>\n            {configCollapsed.basic ? (\n              <CollapseLabel\n                label={t(\"componentConfigDrawer.basicConfig\")}\n                styleLabel={t(\"componentConfigDrawer.styleConfigTab\")}\n                onClick={() => toggleCollapse('basic')}\n                icon={<ListIndentDecrease className=\"w-4 h-4\" />}\n              />\n            ) : (\n              <div className=\"flex-1 flex flex-col overflow-hidden\">\n                <PanelHeader\n                  title={t(\"componentConfigDrawer.basicConfig\")}\n                  onCollapse={() => toggleCollapse('basic')}\n                  icon={<ListIndentIncrease className=\"w-4 h-4\" />}\n                />\n                <div className=\"flex-1 overflow-y-auto pl-4 pr-4 pb-6 pt-4 space-y-6\">\n                  <div className=\"border-b -mx-4 px-4\">\n                    <div className=\"flex gap-6 text-sm\">\n                      <Tab active={configTab === \"basic\"} onClick={() => setConfigTab(\"basic\")}>\n                        {t(\"componentConfigDrawer.basicConfigTab\")}\n                      </Tab>\n                      <Tab active={configTab === \"style\"} onClick={() => setConfigTab(\"style\")}>\n                        {t(\"componentConfigDrawer.styleConfigTab\")}\n                      </Tab>\n                    </div>\n                  </div>\n\n                  {configTab === \"basic\" ? (\n                    <>\n                      {\n                        editingComponent.type !== 'metric' && (\n                          <>\n                            {/* chart type */}\n                            <FormBlock label={t(\"componentConfigDrawer.chartType\")} required>\n                              <ComponentPicker onSelect={(data) => {\n                                // 更新图表类型\n                                handleChartTypeChange(data.type);\n\n                                // 判断是否是指标卡\n                                const isMetricChart = data.type === 'metric';\n\n                                const chartLabel = ChartGroupItems\n                                  .flatMap(item => item.data)\n                                  .find(item => item.type === data.type)?.label;\n\n                                // 判断当前图表类型的名称\n                                const currentChartLabel = ChartGroupItems\n                                  .flatMap(item => item.data)\n                                  .find(item => item.type === chartType)?.label;\n                                const currentChartDisplayName = currentChartLabel ? t(`chart.${currentChartLabel}`) : '';\n\n                                let newTitle = title;\n\n                                if (isMetricChart) {\n                                  if (valueDimensions.length > 0) {\n                                    newTitle = valueDimensions[0].displayName;\n                                  }\n                                } else {\n                                  const userCustomizedTitle = editingComponent.title !== currentChartDisplayName && editingComponent.title !== '';\n                                  newTitle = userCustomizedTitle ? editingComponent.title : (chartLabel ? t(`chart.${chartLabel}`) : title);\n                                }\n                                if (!isMetricChart && chartLabel) {\n                                  setTitle(newTitle);\n                                }\n\n                                // 立即触发图表更新\n                                if (editingComponent) {\n                                  // 使用当前实际的限制配置\n                                  const currentLimitType = limitType;\n                                  const currentLimitValue = limitValue;\n\n                                  // 获取当前数据配置\n                                  const dataConfig = getDataConfig(currentLimitType, currentLimitValue, editingComponent.data_config?.timeFilter);\n\n                                  // 根据新图表类型调整配置\n                                  const STACKED_CHART_TYPES = new Set<ChartType>([\n                                    ChartType.StackedBar,\n                                    ChartType.StackedHorizontalBar,\n                                    ChartType.StackedLine\n                                  ]);\n\n                                  const isNewChartStacked = STACKED_CHART_TYPES.has(data.type);\n                                  const isCurrentChartStacked = currentChartHasStack;\n\n                                  let updatedDataConfig = { ...dataConfig };\n                                  if (isMetricChart) {\n                                    updatedDataConfig = {\n                                      ...updatedDataConfig,\n                                      stackDimension: undefined,\n                                      dimensions: updatedDataConfig.dimensions || [],\n                                      metrics: updatedDataConfig.metrics[0] ? [updatedDataConfig.metrics[0]] : []\n                                    }\n                                  }\n                                  // 处理堆叠维度\n                                  if (isCurrentChartStacked && !isNewChartStacked) {\n                                    // 从堆叠图切换到非堆叠图：移除堆叠维度配置\n                                    updatedDataConfig = {\n                                      ...updatedDataConfig,\n                                      stackDimension: undefined,\n                                      dimensions: updatedDataConfig.dimensions || [],\n                                      metrics: updatedDataConfig.metrics || []\n                                    };\n                                  } else if (!isCurrentChartStacked && isNewChartStacked) {\n                                    // 从非堆叠图切换到堆叠图：清空堆叠维度\n                                    updatedDataConfig = {\n                                      ...updatedDataConfig,\n                                      stackDimension: undefined,\n                                      dimensions: updatedDataConfig.dimensions || [],\n                                      metrics: updatedDataConfig.metrics || []\n                                    };\n                                  }\n                                  if (data.type === 'metric') {\n                                    const firstMetric = valueDimensions[0] ? { ...valueDimensions[0] } : null;\n\n                                    // 更新 chartState\n                                    chartState.setValueDimensions(firstMetric ? [firstMetric] : []);\n                                    chartState.setCategoryDimensions([]);\n                                    chartState.setStackDimensions([]);\n                                    updateEditingComponent({\n                                      type: data.type,\n                                      data_config: updatedDataConfig,\n                                      title: newTitle,\n                                      style_config: {\n                                        ...styleConfig\n                                      },\n                                      dataset_code: editingComponent.dataset_code\n                                    });\n                                  } else {\n                                    updateEditingComponent({\n                                      type: data.type,\n                                      data_config: updatedDataConfig,\n                                      title: newTitle,\n                                      style_config: {\n                                        ...styleConfig,\n                                        title: newTitle\n                                      },\n                                      dataset_code: editingComponent.dataset_code\n                                    });\n                                  }\n\n                                  // 刷新图表\n                                  refreshChart(editingComponent.id);\n\n                                }\n                              }} maxHeight={400}>\n                                <div className=\"relative w-full group\">\n                                  <div className=\"flex h-[28px] w-full items-center justify-between rounded-md border hover:border-muted-foreground/40 px-3 py-2 text-sm transition-colors cursor-pointer\">\n                                    {/* 文本区域 */}\n                                    <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n                                      <img\n                                        src={`${__APP_ENV__.BASE_URL}/assets/dashboard/${chartType}.png`}\n                                        className=\"w-4 h-4 shrink-0\"\n                                        alt={chartType}\n                                      />\n                                      <span className=\"truncate text-foreground\">\n                                        {t(\n                                          `chart.${ChartGroupItems\n                                            .flatMap(item => item.data)\n                                            .find(item => item.type === chartType)?.label}`\n                                        ) || t(\"componentConfigDrawer.selectChartType\")}\n                                      </span>\n                                    </div>\n\n                                    {/* ChevronDown */}\n                                    <ChevronDown className=\"h-4 w-4 text-gray-500 flex-shrink-0\" />\n                                  </div>\n                                </div>\n                              </ComponentPicker>\n                            </FormBlock>\n                            {/* 类别轴 / 维度 */}\n                            {isMetricCard && (\n                              <>\n                                <CollapsibleBlock\n                                  title={t(\"componentConfigDrawer.categoryAxis\")}\n                                  required\n                                  collapsed={configCollapsed.category}\n                                  onCollapse={() => toggleCollapse('category')}\n                                >\n                                  <DimensionBlock\n                                    invalidIds={invalidFieldIds}\n                                    isDimension={true}\n                                    dimensions={categoryDimensions}\n                                    maxDimensions={2}\n                                    isDragOver={dragOverSection === 'category'}\n                                    onDragOver={(e) => handleDragOver(e, 'category')}\n                                    onDragLeave={handleDragLeave}\n                                    onDrop={(e) => handleDrop(e, 'category', isMetricCard)}\n                                    onDelete={(dimensionId) => handleDeleteDimension('category', dimensionId)}\n                                    onSortChange={(dimensionId, sortValue) => handleSortChange('category', dimensionId, sortValue)}\n                                    onEditDisplayName={(dimensionId, originalName, displayName) =>\n                                      openEditDialog('category', dimensionId, originalName, displayName)\n                                    }\n                                  />\n                                </CollapsibleBlock>\n\n                                {currentChartHasStack && (\n                                  <CollapsibleBlock\n                                    title={isStackedChart(chartType) ? t(\"componentConfigDrawer.subCategory\") : t(\"componentConfigDrawer.stackItem\")}\n                                    collapsed={configCollapsed.stack}\n                                    onCollapse={() => toggleCollapse('stack')}\n                                  >\n                                    <DimensionBlock\n                                      invalidIds={invalidFieldIds}\n                                      isDimension={true}\n                                      isStack={'stack'}\n                                      dimensions={stackDimensions}\n                                      isDragOver={dragOverSection === 'stack'}\n                                      onDragOver={(e) => handleDragOver(e, 'stack')}\n                                      onDragLeave={handleDragLeave}\n                                      onDrop={(e) => handleDrop(e, 'stack', isMetricCard)}\n                                      onDelete={(dimensionId) => handleDeleteDimension('stack', dimensionId)}\n                                      onSortChange={(dimensionId, sortValue) => handleSortChange('stack', dimensionId, sortValue)}\n                                      onEditDisplayName={(dimensionId, originalName, displayName) =>\n                                        openEditDialog('stack', dimensionId, originalName, displayName)\n                                      }\n                                    />\n                                  </CollapsibleBlock>\n                                )}\n                              </>\n                            )}\n\n                          </>\n                        )\n                      }\n\n                      {/* 值轴 / 指标 */}\n                      <CollapsibleBlock\n                        title={t(\"componentConfigDrawer.valueAxis\")}\n                        required\n                        collapsed={configCollapsed.value}\n                        onCollapse={() => toggleCollapse('value')}\n                      >\n                        <DimensionBlock\n                          onAggregationChange={handleAggregationChange}\n                          isMetricCard={isMetricCard}\n                          invalidIds={invalidFieldIds}\n                          isDimension={false}\n                          dimensions={valueDimensions}\n                          isDragOver={dragOverSection === 'value'}\n                          onDragOver={(e) => handleDragOver(e, 'value')}\n                          onDragLeave={handleDragLeave}\n                          onDrop={(e) => handleDrop(e, 'value', isMetricCard)}\n                          onDelete={(dimensionId) => handleDeleteDimension('value', dimensionId)}\n                          onSortChange={(dimensionId, sortValue) => handleSortChange('value', dimensionId, sortValue)}\n                          onEditDisplayName={(dimensionId, originalName, displayName) =>\n                            openEditDialog('value', dimensionId, originalName, displayName)\n                          }\n                          onFormatChange={handleMetricFormatChange}\n                        />\n                      </CollapsibleBlock>\n\n                      {/* 排序优先级 */}\n                      {(editingComponent.type !== 'metric' && isMetricCard) && <CollapsibleBlock title={t(\"componentConfigDrawer.sortPriority\")}>\n                        <div className=\"space-y-1 border rounded-md p-[2px]\">\n                          {sortPriorityFields?.length === 0 ? (\n                            <div className=\"text-xs text-muted-foreground text-center py-2\">\n                              {t(\"componentConfigDrawer.sortHint\")}\n                            </div>\n                          ) : (\n                            sortPriorityFields.map((field) => (\n                              <div\n                                key={field.id}\n                                draggable\n                                onMouseDown={() => { }}\n                                onDragStart={(e) => {\n                                  setDraggingId(field.id)\n                                  e.dataTransfer.effectAllowed = 'move'\n                                  e.dataTransfer.setData('text/plain', field.id)\n                                }}\n                                onDragEnd={() => setDraggingId(null)}\n                                onDragOver={(e) => e.preventDefault()}\n                                onDrop={(e) => {\n                                  e.preventDefault()\n                                  const sourceId = e.dataTransfer.getData('text/plain')\n                                  if (!sourceId) return\n                                  handleDropSortPriority(field)\n                                }}\n                                className={`flex items-center gap-2 px-3 py-2 h-[28px] border rounded-md bg-muted/20 ${draggingId === field.id ? 'opacity-50' : ''}`}\n                              >\n                                <GripVertical className=\"h-4 w-4 text-muted-foreground cursor-grab\" />\n                                <span className=\"text-sm truncate\">{field.displayName}</span>\n                              </div>\n                            ))\n                          )}\n                        </div>\n                      </CollapsibleBlock>}\n\n                      {/* 筛选 */}\n                      <div className=\"space-y-3\">\n                        <div className=\"flex items-center justify-between\">\n                          <label className=\"text-sm font-medium\">{t(\"componentConfigDrawer.filter\")}</label>\n                        </div>\n\n                        {!filterGroup || filterGroup.conditions.length === 0 ? (\n                          <div\n                            className=\"text-sm text-muted-foreground text-center w-[216px] h-[36px] py-2 border rounded-md bg-muted/20 cursor-pointer hover:bg-muted/30 transition-colors\"\n                            onClick={handleEditFilter}\n                          >\n                            <div className=\"inline-flex items-center h-[20px] px-2 text-xs\">\n                              {t(\"componentConfigDrawer.addFilterCondition\")}\n                            </div>\n                          </div>\n                        ) : (\n                          <div className=\"space-y-2 bg-blue-100 rounded-md border-blue-300 group\">\n                            <div className=\"flex items-center justify-between p-2 border rounded-md bg-muted/20 hover:bg-muted/40\">\n                              <div className=\"flex items-center gap-2\">\n                                <span className=\"text-sm font-medium text-blue-700\">\n                                  {t(\"componentConfigDrawer.filterConditionsAdded\", { count: filterGroup.conditions.length })}\n                                </span>\n                              </div>\n                              <div className=\"opacity-0 group-hover:opacity-100 transition-opacity duration-200 flex items-center gap-1\">\n                                <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\" onClick={handleEditFilter}>\n                                  <PencilLine className=\"h-3 w-3\" />\n                                </Button>\n                                <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\" onClick={handleDeleteFilter}>\n                                  <X className=\"h-3 w-3\" />\n                                </Button>\n                              </div>\n                            </div>\n                          </div>\n                        )}\n                      </div>\n\n                      <FormBlock label={t(\"componentConfigDrawer.timeRange\")}>\n                        <div className=\"space-y-1 flex flex-1 w-full\">\n                          <AdvancedDatePicker\n                            granularity={'day'}\n                            mode={'range'}\n                            value={filter}\n                            onChange={(val) => {\n                              handleTimeFilterChange(val);\n                              setFilter(val);\n                            }}\n                            placeholder={t(\"componentConfigDrawer.selectTimeRange\")}\n                          />\n                        </div>\n                      </FormBlock>\n\n\n\n\n                      {/* <Button id=\"config_save\" className=\"w-full h-10 mt-4\" onClick={handleUpdateChart}>\n                        {t(\"componentConfigDrawer.updateChartData\")}\n                      </Button> */}\n                    </>\n                  ) : (\n                    <StyleConfigPanel\n                      config={editingComponent?.style_config || styleConfig}\n                      type={editingComponent.type}\n                      FULL_DEFAULT_STYLE_CONFIG={FULL_DEFAULT_STYLE_CONFIG}\n                      onChange={(newConfig) => {\n                        chartState.setStyleConfig(newConfig)\n                        if (editingComponent) {\n                          updateEditingComponent({\n                            title: newConfig.title,\n                            style_config: newConfig\n                          })\n                        }\n                      }}\n                      key={editingComponent.id}\n                    />\n                  )}\n                </div>\n                {/* 底部固定更新按钮（不随滚动） */}\n                {configTab !== \"style\" && <div className=\"px-4 py-3 border-t bg-background\">\n                  {/* 结果显示 */}\n                  {(editingComponent.type !== 'metric' && isMetricCard) &&\n                    <div>\n                      <RadioGroup\n                        value={limitType}\n                        onValueChange={(value: \"all\" | \"limit\") => setLimitType(value)}\n                        className=\"flex justify-between gap-4\"\n                      >\n                        <div className=\" text-sm font-medium mt-1\">\n                          {t(\"componentConfigDrawer.resultsDisplay\")}\n                        </div>\n                        <div className=\"flex\">\n                          <div className=\"flex items-center space-x-2 mr-1\">\n                            <RadioGroupItem value=\"all\" id=\"limit-all\" />\n                            <Label htmlFor=\"limit-all\" className=\"text-sm cursor-pointer whitespace-nowrap\">\n                              {t(\"componentConfigDrawer.allResults\")}\n                            </Label>\n                          </div>\n                          <div className=\"flex items-center space-x-2\">\n                            <RadioGroupItem value=\"limit\" id=\"limit-limit\" />\n                            <div className=\"flex items-center gap-2\">\n                              <Input\n                                className=\"w-16 h-7 text-sm appearance-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n                                type=\"number\"\n                                value={limitValue}\n                                disabled={limitType !== \"limit\"}\n                                onChange={(e) => {\n                                  const value = e.target.value;\n                                  if (value === '' || /^\\d+$/.test(value)) {\n                                    const num = parseInt(value);\n                                    if (value === '' || (num >= 1 && num <= 1000)) {\n                                      setLimitValue(value);\n                                    }\n                                  }\n                                }}\n                                onBlur={(e) => {\n                                  const value = e.target.value;\n                                  const num = parseInt(value);\n                                  if (value === '' || isNaN(num)) {\n                                    setLimitValue('1');\n                                  } else if (num < 1) {\n                                    setLimitValue('1');\n                                  } else if (num > 1000) {\n                                    setLimitValue('1000');\n                                  } else {\n                                    setLimitValue(num.toString());\n                                  }\n                                }}\n                                min={1}\n                                max={1000}\n                                placeholder=\"1000\"\n                              />\n                            </div>\n                          </div>\n                        </div>\n\n                      </RadioGroup>\n                    </div>\n                  }\n                  <Button\n                    id=\"config_save\"\n                    className=\"w-full h-10 mt-[12px]\"\n                    onClick={handleUpdateChart}\n                  >\n                    {t(\"componentConfigDrawer.updateChartData\")}\n                  </Button>\n                </div>}\n\n              </div>\n            )}\n          </div>\n          <div className={`flex flex-col h-full transition-all duration-300 ${configCollapsed.data ? \"w-12 shrink-0\" : \"w-[180px]\"}`}>\n            {configCollapsed.data ? (\n              <CollapseLabel\n                label={t(\"componentConfigDrawer.dataSelection\")}\n                onClick={() => toggleCollapse('data')}\n                icon={<ListIndentDecrease className=\"w-4 h-4\" />}\n              />\n            ) : (\n              <div className=\"flex-1 flex flex-col overflow-hidden\">\n                <PanelHeader\n                  title={t(\"componentConfigDrawer.dataSelection\")}\n                  onCollapse={() => toggleCollapse('data')}\n                  icon={<ListIndentIncrease className=\"w-4 h-4\" />}\n                />\n                <div className=\"flex-1 overflow-auto\">\n                  <DatasetSelector\n                    isMetricCard={editingComponent?.type === 'metric'}\n                    selectedDatasetCode={editingComponent.dataset_code}\n                    onDatasetChange={handleDatasetChange}\n                    onDragStart={handleDragStart}\n                    onFieldsLoaded={setDatasetFields}\n                    onFieldClick={handleFieldClick}\n                  />\n                </div>\n              </div>\n            )}\n          </div>\n        </>\n      )}\n\n      {/* 编辑显示名称弹窗 */}\n      <Dialog open={editDialogOpen} onOpenChange={setEditDialogOpen}>\n        <DialogContent className=\"sm:max-w-[400px]\">\n          <DialogHeader>\n            <DialogTitle>{t(\"componentConfigDrawer.dialog.editDisplayName\")}</DialogTitle>\n          </DialogHeader>\n          <div className=\"space-y-4 py-4\">\n            <div>\n              <div className=\"text-sm text-muted-foreground mb-1\">\n                {t(\"componentConfigDrawer.dialog.originalName\")}\n              </div>\n              <div className=\"text-sm font-medium px-2 py-1 bg-muted rounded\">{editingDimension?.originalName}</div>\n            </div>\n            <div>\n              <div className=\"text-sm font-medium mb-1\">\n                {t(\"componentConfigDrawer.dialog.displayNameRequired\")}\n              </div>\n              <Input\n                value={editingDimension?.displayName || ''}\n                onChange={(e) => setEditingDimension(prev => prev ? { ...prev, displayName: e.target.value } : null)}\n                placeholder={t(\"componentConfigDrawer.dialog.enterDisplayName\")}\n                maxLength={15}\n                className={(editingDimension?.displayName?.length || 0) >= 15 ? 'border-red-500 focus-visible:ring-red-500' : ''}\n              />\n              {(editingDimension?.displayName?.length || 0) >= 15 && (\n                <div className=\"text-xs text-red-500 mt-1\">\n                  {t(\"componentConfigDrawer.dialog.displayMaxLength\", { max: 15 })}\n                </div>\n              )}\n            </div>\n          </div>\n          <DialogFooter>\n            <Button variant=\"outline\" onClick={() => setEditDialogOpen(false)}>\n              {t(\"componentConfigDrawer.dialog.cancel\")}\n            </Button>\n            <Button onClick={saveDisplayName}>\n              {t(\"componentConfigDrawer.dialog.confirm\")}\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n\n      {/* 筛选条件弹窗 */}\n      <FilterConditionDialog\n        open={filterDialogOpen}\n        onOpenChange={setFilterDialogOpen}\n        value={filterGroup}\n        onChange={handleSaveFilter}\n        fields={datasetFields}\n        dataset_code={editingComponent?.dataset_code}\n        filtersLogic={editingComponent?.data_config.filtersLogic}\n        dimensions={[...categoryDimensions, ...stackDimensions, ...valueDimensions]}\n      />\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/DashboardConfigPanel.tsx",
    "content": "// DashboardConfigPanel.tsx\n\"use client\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { ListIndentDecrease, ListIndentIncrease } from \"lucide-react\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { useTranslation } from \"react-i18next\"\n\ninterface DashboardConfigPanelProps {\n  collapsed?: boolean\n  onCollapse?: () => void\n}\n\nexport function DashboardConfigPanel({ collapsed = false, onCollapse }: DashboardConfigPanelProps) {\n  const { currentDashboard, updateCurrentDashboard } = useEditorDashboardStore()\n  const [dashboardTheme, setDashboardTheme] = useState<'light' | 'dark'>(() => {\n    // 从当前仪表盘获取主题\n    return currentDashboard?.style_config?.theme as 'light' | 'dark' || 'light'\n  })\n  const { t } = useTranslation(\"dashboard\")\n\n  // 当仪表盘变化时更新主题状态\n  useEffect(() => {\n    if (currentDashboard?.style_config?.theme) {\n      setDashboardTheme(currentDashboard.style_config.theme as 'light' | 'dark')\n    }\n  }, [currentDashboard])\n\n  const handleThemeChange = (theme: 'light' | 'dark') => {\n    setDashboardTheme(theme)\n\n    // 更新仪表盘主题\n    if (currentDashboard) {\n      const updatedDashboard = {\n        ...currentDashboard,\n        style_config: {\n          ...currentDashboard.style_config,\n          theme: theme\n        }\n      }\n      updateCurrentDashboard(updatedDashboard)\n    }\n  }\n\n  const PanelHeader = ({ title, onCollapse, icon }: any) => (\n    <div className=\"px-4 py-3 border-b flex items-center justify-between bg-muted/20\">\n      <h3 className=\"text-base font-semibold\">{title}</h3>\n      <Button variant=\"ghost\" size=\"icon\" onClick={onCollapse} className=\"h-8 w-8\">\n        {icon}\n      </Button>\n    </div>\n  )\n\n  const CollapseLabel = useCallback(({ label, onClick, icon }: any) => (\n    <div className=\"h-full flex flex-col items-center cursor-pointer hover:bg-accent/50 transition-colors\" onClick={onClick}>\n      <div className=\"m-[20px]\">{icon}</div>\n      <div className=\"w-full h-[2px] bg-gray-100 mb-4\"></div>\n      <div className=\"writing-mode-vertical text-sm font-medium tracking-[6px]\">{label}</div>\n\n    </div>\n  ), [])\n\n  return (\n    <div className=\"h-full flex bg-background border-l border-border\">\n      <div className={`border-r flex flex-col h-full transition-all duration-300 ${collapsed ? \"w-12\" : \"w-[440px]\"} shrink-0`}>\n        {collapsed ? (\n          <CollapseLabel\n            label={t(\"configPanel.title\")}\n            onClick={onCollapse}\n            icon={<ListIndentDecrease className=\"w-4 h-4\" />}\n          />\n        ) : (\n          <div className=\"flex-1 flex flex-col overflow-hidden\">\n            <PanelHeader\n              title={t(\"configPanel.title\")}\n              onCollapse={onCollapse}\n              icon={<ListIndentIncrease className=\"w-4 h-4\" />}\n            />\n\n            <div className=\"flex-1 overflow-y-auto px-2 pb-6 pt-4 space-y-6\">\n              {/* 仪表盘风格选择 */}\n              <div className=\"space-y-2\">\n                <label className=\"text-sm font-medium\">\n                  {t(\"configPanel.dashboardStyle\")}\n                </label>\n                <div className=\"grid grid-cols-2 gap-4\">\n                  {/* 浅色主题 */}\n                  <div\n                    className={`border rounded-lg p-3 cursor-pointer hover:border-primary transition-all ${dashboardTheme === 'light' ? 'border-primary ring-2 ring-primary/20 bg-primary/5' : 'border-gray-200 hover:border-gray-300'}`}\n                    onClick={() => handleThemeChange('light')}\n                  >\n                    <div className=\"aspect-square bg-gradient-to-br from-gray-50 h-[96px] w-[180px] to-gray-100 rounded border mb-2\">\n                      <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/light.png`} alt=\"\" />\n                    </div>\n                    <div className=\"flex items-center justify-center\">\n                      <span className={`text-sm ${dashboardTheme === 'light' ? 'text-primary font-medium' : ''}`}>{t(\"configPanel.lightTheme\")}</span>\n                    </div>\n                  </div>\n\n                  {/* 深色主题 */}\n                  <div\n                    className={`border rounded-lg p-3 cursor-pointer transition-all hover:border-primary ${dashboardTheme === 'dark' ? 'border-primary ring-2 ring-primary/20 bg-primary/5' : 'border-gray-200 hover:border-gray-300'}`}\n                    onClick={() => handleThemeChange('dark')}\n                  >\n                    <div className=\"aspect-square bg-gradient-to-br  h-[96px] w-[180px] from-gray-800 to-gray-900 rounded border mb-2\">\n                      <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/dark.png`} alt=\"\" />\n                    </div>\n                    <div className=\"flex items-center justify-center\">\n                      <span className={`text-sm ${dashboardTheme === 'dark' ? 'text-primary font-medium' : ''}`}>{t(\"configPanel.darkTheme\")}</span>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/DatasetSelector.tsx",
    "content": "\"use client\"\n\nimport { Input } from \"@/components/bs-ui/input\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\"\nimport { getDatasets, MetricConfig } from \"@/controllers/API/dashboard\"\nimport { Calendar, ChevronDown, ChevronRight, ChevronUp, Clock3, Hash, Search, Type } from \"lucide-react\"\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useQuery } from \"react-query\"\nimport { useTranslation } from \"react-i18next\"\n\nexport interface DatasetField {\n    fieldCode: string          // 真正用来过滤 / SQL\n    displayName: string        // UI 显示\n    fieldType: \"string\" | \"number\" | \"date\"\n    role: \"dimension\" | \"metric\"\n    enumValues?: string[]\n    isVirtual?: boolean\n    timeGranularity?: string\n}\n\ninterface DatasetSelectorProps {\n    selectedDatasetCode?: string\n    onDatasetChange?: (datasetCode: string) => void\n    onDragStart?: (e: React.DragEvent, data: any) => void\n    onFieldsLoaded?: (fields: DatasetField[]) => void\n    onFieldClick?: (field: DatasetField) => void\n}\n\nconst TIME_ICONS: Record<string, JSX.Element> = {\n    year: <Clock3 color=\"#1d78ff\" size={14} />,\n    quarter: <Clock3 color=\"#1d78ff\" size={14} />,\n    month: <Clock3 color=\"#1d78ff\" size={14} />,\n    week: <Clock3 color=\"#1d78ff\" size={14} />,\n    day: <Clock3 color=\"#1d78ff\" size={14} />,\n    hour: <Clock3 color=\"#1d78ff\" size={14} />,\n}\n\nconst getFieldTypeIcon = (type: 'string' | 'number' | 'date') => {\n    switch (type) {\n        case 'date':\n            return <Calendar className=\"h-4 w-4 text-blue-500\" />\n        case 'number':\n            return <Hash className=\"h-4 w-4 text-blue-500\" />\n        case 'string':\n            return <Type className=\"h-4 w-4 text-blue-500\" />\n    }\n}\n\n// 判断是否为虚拟指标\nconst isVirtualMetric = (metric: MetricConfig): boolean => {\n\n    return metric.is_virtual\n}\n\nexport function DatasetSelector({ selectedDatasetCode, isMetricCard, onDatasetChange, onDragStart, onFieldsLoaded, onFieldClick }: DatasetSelectorProps) {\n    const { t } = useTranslation(\"dashboard\")\n    const [searchTerm, setSearchTerm] = useState(\"\")\n    const [dimensionsExpanded, setDimensionsExpanded] = useState(true)\n    const [metricsExpanded, setMetricsExpanded] = useState(true)\n    const [timeExpandedMap, setTimeExpandedMap] = useState<Record<string, boolean>>({})\n\n    // 获取数据集列表\n    const { data: allDatasets = [], isLoading: datasetsLoading } = useQuery({\n        queryKey: ['datasets'],\n        queryFn: () => getDatasets()\n    })\n\n    // 前端搜索过滤\n    const filteredDatasets = useMemo(() => {\n        if (!searchTerm) return allDatasets\n        const searchLower = searchTerm.toLowerCase()\n        return allDatasets.filter(d =>\n            d.dataset_name.toLowerCase().includes(searchLower) ||\n            d.dataset_code.toLowerCase().includes(searchLower) ||\n            (d.description && d.description.toLowerCase().includes(searchLower))\n        )\n    }, [allDatasets, searchTerm])\n    // 获取选中的数据集详情\n    const selectedDataset = useMemo(() => {\n        return allDatasets.find(d => d.dataset_code === selectedDatasetCode)\n    }, [allDatasets, selectedDatasetCode])\n\n    // 处理拖拽开始\n    const handleDragStart = (e: React.DragEvent, data: any, fieldType: 'dimension' | 'metric') => {\n        e.dataTransfer.effectAllowed = 'copy'\n        const dragData = {\n            id: data.fieldCode,\n            name: data.displayName,\n            displayName: data.displayName,\n            fieldId: data.fieldId,\n            fieldCode: data.fieldCode,\n            fieldType,\n            isDivide: data.isDivide,\n            timeGranularity: data.timeGranularity,\n        }\n\n        e.dataTransfer.setData('application/json', JSON.stringify(dragData))\n        if (onDragStart) {\n            onDragStart(e, dragData)\n        }\n    }\n\n    const toggleTimeExpanded = (field: string) => {\n        setTimeExpandedMap(prev => ({ ...prev, [field]: !prev[field] }))\n    }\n\n    const datasetFields = useMemo<DatasetField[]>(() => {\n        if (!selectedDataset) return []\n\n        const dimensions = selectedDataset.schema_config.dimensions.map(d => ({\n            fieldCode: d.field,\n            fieldId: d.field,\n            displayName: d.name,\n            fieldType: d.field_type,\n            role: \"dimension\" as const\n        }))\n\n        const metrics = selectedDataset.schema_config.metrics.map(m => ({\n            fieldCode: m.field,\n            fieldId: m.field,\n            displayName: m.name,\n            fieldType: m.field_type,\n            isVirtual: m.is_virtual,\n            isDivide: m.formula,\n            role: \"metric\" as const\n        }))\n\n        return [...dimensions, ...metrics]\n    }, [selectedDataset])\n\n    useEffect(() => {\n        if (selectedDataset && onFieldsLoaded) {\n            onFieldsLoaded(datasetFields)\n        }\n    }, [datasetFields, onFieldsLoaded, selectedDataset])\n\n    const getTimeGranularityLabel = (granularity: string): string => {\n        return t(`datasetSelector.timeGranularity.${granularity}`)\n    }\n\n    return (\n        <div className=\"flex flex-col h-full\">\n            {/* 数据集选择 */}\n            <div className=\"p-4 border-b\">\n                <Label className=\"text-sm font-medium mb-2 block\">\n                    {t(\"datasetSelector.dataset\")}\n                </Label>\n                <Select value={selectedDatasetCode} onValueChange={onDatasetChange}>\n                    <SelectTrigger className=\"w-full\">\n                        <SelectValue placeholder={t(\"datasetSelector.selectDataset\")} />\n                    </SelectTrigger>\n                    <SelectContent>\n                        {/* 搜索框 */}\n                        <div className=\"px-2 py-1.5\">\n                            <div className=\"relative\">\n                                <Search className=\"absolute left-2 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground z-10\" />\n                                <Input\n                                    placeholder={t(\"datasetSelector.searchDataset\")}\n                                    value={searchTerm}\n                                    onChange={(e) => setSearchTerm(e.target.value)}\n                                    className=\"pl-8 h-8\"\n                                    onClick={(e) => e.stopPropagation()}\n                                />\n                            </div>\n                        </div>\n                        {/* 数据集列表 */}\n                        {datasetsLoading ? (\n                            <div className=\"px-2 py-4 text-sm text-muted-foreground text-center\">\n                                {t(\"datasetSelector.loading\")}\n                            </div>\n                        ) : filteredDatasets.length === 0 ? (\n                            <div className=\"px-2 py-4 text-sm text-muted-foreground text-center\">\n                                {t(\"datasetSelector.noDatasetsFound\")}\n                            </div>\n                        ) : (\n                            filteredDatasets.map((dataset) => (\n                                <SelectItem key={dataset.dataset_code} value={dataset.dataset_code}>\n                                    {t(dataset.dataset_code)}\n                                </SelectItem>\n                            ))\n                        )}\n                    </SelectContent>\n                </Select>\n            </div>\n\n            {/* 字段展示区域 */}\n            {selectedDataset && (\n                <div className=\"flex-1 flex flex-col min-h-0\">\n                    {!isMetricCard && (\n                        <div className=\"flex-1 flex flex-col min-h-0 border-b\">\n                            <button\n                                className=\"w-full px-4 py-3 flex items-center justify-between hover:bg-accent/50 transition-colors shrink-0\"\n                                onClick={() => setDimensionsExpanded(!dimensionsExpanded)}\n                            >\n                                <span className=\"text-sm font-medium\">{t(\"datasetSelector.dimensions\")}</span>\n                                {dimensionsExpanded ? (\n                                    <ChevronDown className=\"h-4 w-4\" />\n                                ) : (\n                                    <ChevronUp className=\"h-4 w-4\" />\n                                )}\n                            </button>\n\n                            {dimensionsExpanded && (\n                                <div className=\"flex-1 overflow-y-auto px-4 pb-2 space-y-0 min-h-0\">\n                                    {selectedDataset.schema_config.dimensions.map((dimension) => {\n                                        if (dimension.time_granularitys && dimension.time_granularitys.length > 0) {\n                                            return dimension.time_granularitys.map((g) => {\n                                                const displayName = t(`${dimension.field}.${g}`)\n                                                const field: DatasetField = {\n                                                    fieldCode: dimension.field,\n                                                    displayName,\n                                                    fieldType: \"date\",\n                                                    role: \"dimension\",\n                                                    timeGranularity: g,\n                                                }\n                                                return (\n                                                    <div\n                                                        key={dimension.field + g}\n                                                        className=\"flex items-center gap-2 p-2 rounded hover:bg-accent/30 cursor-move transition-colors\"\n                                                        draggable\n                                                        onDragStart={(e) => handleDragStart(e, field, 'dimension')}\n                                                        onClick={(e) => { e.stopPropagation(); onFieldClick?.(field) }}\n                                                    >\n                                                        {TIME_ICONS[g]}\n                                                        <span className=\"text-sm flex-1\">\n                                                            {displayName}\n                                                        </span>\n                                                    </div>\n                                                )\n                                            })\n                                        }\n\n                                        // 普通非时间字段\n                                        const field: DatasetField = {\n                                            fieldCode: dimension.field,\n                                            displayName: t(dimension.field),\n                                            fieldType: dimension.type === \"integer\" ? \"number\" : \"string\",\n                                            role: \"dimension\",\n                                        }\n\n                                        return (\n                                            <div\n                                                key={dimension.field}\n                                                className=\"flex items-center gap-2 p-2 rounded hover:bg-accent/30 cursor-move transition-colors\"\n                                                draggable\n                                                onDragStart={(e) => handleDragStart(e, field, 'dimension')}\n                                                onClick={(e) => { e.stopPropagation(); onFieldClick?.(field) }}\n                                            >\n                                                {getFieldTypeIcon(field.fieldType)}\n                                                <span className=\"text-sm flex-1\">{t(dimension.field)}</span>\n                                            </div>\n                                        )\n                                    })}\n                                </div>\n                            )}\n                        </div>\n                    )}\n\n                    {/* 指标区域 - 占据下半部分 */}\n                    <div className=\"flex-1 flex flex-col min-h-0\">\n                        <button\n                            className=\"w-full px-4 py-3 flex items-center justify-between hover:bg-accent/50 transition-colors shrink-0\"\n                            onClick={() => setMetricsExpanded(!metricsExpanded)}\n                        >\n                            <span className=\"text-sm font-medium\">{t(\"datasetSelector.metrics\")}</span>\n                            {metricsExpanded ? (\n                                <ChevronDown className=\"h-4 w-4\" />\n                            ) : (\n                                <ChevronUp className=\"h-4 w-4\" />\n                            )}\n                        </button>\n\n                        {metricsExpanded && (\n                            <div className=\"flex-1 overflow-y-auto px-4 pb-3 space-y-2 min-h-0\">\n                                {selectedDataset.schema_config.metrics.map((metric, index) => {\n                                    const isVirtual = isVirtualMetric(metric)\n                                    const field: DatasetField = {\n                                        fieldCode: metric.field,\n                                        displayName: t(metric.field),\n                                        fieldType: \"number\",\n                                        role: \"metric\" as const,\n                                        isVirtual: metric.is_virtual,\n                                        isDivide: metric.formula,\n                                    }\n                                    return (\n                                        <div\n                                            key={index}\n                                            className=\"flex items-center gap-2 p-2 rounded hover:bg-accent/30 cursor-move transition-colors\"\n                                            draggable\n                                            onDragStart={(e) => handleDragStart(e, field, 'metric')}\n                                            onClick={(e) => {\n                                                e.stopPropagation()\n                                                onFieldClick?.(field)\n                                            }}\n                                        >\n                                            <div className=\"text-[#37D6E7]\">\n                                                <Hash className=\"h-4 w-4\" />\n                                            </div>\n                                            <span className=\"text-sm flex-1 flex items-center gap-1\">\n                                                {t(metric.field)}\n                                                {isVirtual && <span className=\"text-muted-foreground text-xs\">{t(\"datasetSelector.virtualMetric\")}</span>}\n                                            </span>\n                                        </div>\n                                    )\n                                })}\n                            </div>\n                        )}\n                    </div>\n                </div>\n            )}\n\n            {/* 未选择数据集时的提示 */}\n            {!selectedDataset && (\n                <div className=\"flex-1 flex items-center justify-center p-4\">\n                    <p className=\"text-sm text-muted-foreground text-center\">\n                        {t(\"datasetSelector.selectDatasetPrompt\")}\n                    </p>\n                </div>\n            )}\n        </div>\n    )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/DimensionBlock.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Settings, X, Check } from \"lucide-react\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { Checkbox } from \"@/components/bs-ui/checkBox\"\nimport { useTranslation } from \"react-i18next\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuPortal,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n} from \"@/components/bs-ui/dropdownMenu\"\n\ninterface DimensionItem {\n  id: string\n  name: string\n  displayName: string\n  sort: null | 'asc' | 'desc'\n  fieldType: 'dimension' | 'metric'\n  originalName: string\n  aggregation?: string\n  format?: string\n  numberFormat?: MetricFormat\n  sortPriority?: number\n  isVirtual?: boolean // 补充定义\n  fieldId?: string\n  timeGranularity?: string\n  isDivide?: string\n}\n\ninterface DimensionBlockProps {\n  isDimension: boolean\n  dimensions: DimensionItem[]\n  maxDimensions?: number\n  isDragOver?: boolean\n  onDragOver?: (e: React.DragEvent) => void\n  onDragLeave?: () => void\n  onDrop?: (e: React.DragEvent) => void\n  onDelete: (dimensionId: string) => void\n  onSortChange?: (dimensionId: string, sortValue: null | 'asc' | 'desc') => void\n  onEditDisplayName: (dimensionId: string, originalName: string, displayName: string) => void\n  onAggregationChange?: (dimensionId: string, aggregation: string) => void\n  onFormatChange?: (dimensionId: string, format: MetricFormat) => void\n  invalidIds?: Set<string>\n}\n\ntype MetricFormat = {\n  type: 'number' | 'percent' | 'duration' | 'storage'\n  decimalPlaces: number\n  unit?: string\n  suffix?: string\n  thousandSeparator: boolean\n}\n\nexport function DimensionBlock({\n  isDimension,\n  dimensions = [],\n  isStack,\n  maxDimensions,\n  isDragOver = false,\n  onDragOver,\n  onDragLeave,\n  onDrop,\n  onDelete,\n  onSortChange,\n  onEditDisplayName,\n  onAggregationChange,\n  isMetricCard,\n  onFormatChange,\n  invalidIds\n}: DimensionBlockProps) {\n  const { t } = useTranslation(\"dashboard\")\n\n  const [hoveredDimension, setHoveredDimension] = useState<string | null>(null)\n\n  // const [openMenuId, setOpenMenuId] = useState<string | null>(null)\n  // const [hoveredMenuItem, setHoveredMenuItem] = useState<...>...\n\n  const [selectedDimensionId, setSelectedDimensionId] = useState<string | null>(null)\n  const [editingMetric, setEditingMetric] = useState<DimensionItem | null>(null)\n  const [formatDialogOpen, setFormatDialogOpen] = useState(false)\n  const [localFormat, setLocalFormat] = useState<MetricFormat | null>(null)\n  const [hoveredIcon, setHoveredIcon] = useState<string | null>(null)\n  // 监听editingMetric变化，设置默认格式\n  useEffect(() => {\n    if (editingMetric) {\n      console.log('Editing metric:', editingMetric);\n\n      const currentFormat = editingMetric.numberFormat;\n\n      if (currentFormat) {\n        console.log('使用现有的 numberFormat:', currentFormat);\n        const defaultDecimal = currentFormat.type === 'number' ? 0 : 2;\n        setLocalFormat({\n          type: currentFormat.type,\n          decimalPlaces: currentFormat.decimalPlaces ?? defaultDecimal,\n          unit: currentFormat.unit || '',\n          suffix: currentFormat.suffix || '',\n          thousandSeparator: currentFormat.thousandSeparator || false\n        });\n      } else {\n        const defaultFormat: MetricFormat = editingMetric.isDivide === \"divide\"\n          ? {\n            type: 'percent',\n            decimalPlaces: 2,\n            thousandSeparator: false,\n            unit: undefined,\n            suffix: ''\n          }\n          : {\n            type: 'number',\n            decimalPlaces: 0,\n            thousandSeparator: false,\n            unit: '',\n            suffix: ''\n          };\n        setLocalFormat(defaultFormat);\n      }\n    }\n  }, [editingMetric]);\n  const getFieldTypeStyle = (dimension: DimensionItem) => {\n  const isSelected = selectedDimensionId === dimension.id\n  \n  //  (Blue)\n  const dimensionStyle = isSelected\n    ? 'bg-blue-100 border-blue-300 dark:bg-blue-900/40 dark:border-blue-700'\n    : 'bg-blue-50 border-blue-300 dark:bg-blue-900/20 dark:border-blue-800'\n\n  // (Cyan/Teal)\n  const measureStyle = isSelected\n    ? 'bg-[#E7F8FA] border-[#88E1EB] dark:bg-cyan-950/50 dark:border-cyan-700'\n    : 'bg-[#E7F8FA] border-[#88E1EB] dark:bg-cyan-950/30 dark:border-cyan-800'\n\n  // error\n  const invalidStyle = invalidIds?.has(dimension.id) \n    ? 'border-red-500 bg-red-50 dark:border-red-700 dark:bg-red-900/30' \n    : ''\n\n  const baseColor = dimension.fieldType === 'dimension' ? dimensionStyle : measureStyle\n\n  return `${baseColor} border ${invalidStyle} hover:bg-opacity-80 transition-colors`\n}\n\n  // 选项配置\n  const isVirtualMetric = (dimension: DimensionItem) => {\n    return dimension.fieldType === 'metric' && dimension.isVirtual === true;\n  };\n\n  const aggregationOptions = [\n    { label: t('dimensionBlock.aggregation.sum'), value: 'sum' },\n    { label: t('dimensionBlock.aggregation.avg'), value: 'average' },\n    { label: t('dimensionBlock.aggregation.max'), value: 'max' },\n    { label: t('dimensionBlock.aggregation.min'), value: 'min' },\n    { label: t('dimensionBlock.aggregation.count'), value: 'count' },\n    { label: t('dimensionBlock.aggregation.distinctCount'), value: 'distinct_count' },\n  ]\n\n  const sortOptions = [\n    { label: t('dimensionBlock.sort.none'), value: null },\n    { label: t('dimensionBlock.sort.asc'), value: 'asc' },\n    { label: t('dimensionBlock.sort.desc'), value: 'desc' }\n  ]\n\n  return (\n    <div className=\"space-y-3\"\n      onDragOver={(e) => {\n        e.preventDefault()\n        e.stopPropagation()\n        if (onDragOver) onDragOver(e)\n      }}\n      onDragLeave={(e) => {\n        e.preventDefault()\n        e.stopPropagation()\n        if (onDragLeave) onDragLeave()\n      }}\n      onDrop={(e) => {\n        e.preventDefault()\n        e.stopPropagation()\n        if (onDrop) onDrop(e)\n      }}\n    >\n      {/* 维度/指标列表 */}\n      {dimensions.length > 0 ? (\n        <div className=\"space-y-2 border rounded-md p-[2px]\">\n          {dimensions.map((dimension) => (\n            <div\n              key={dimension.id}\n              draggable={dimension.fieldType === 'dimension'}\n              onDragStart={(e) => {\n                if (dimension.fieldType !== 'dimension') return\n                e.stopPropagation()\n                e.dataTransfer.effectAllowed = 'move'\n                const dragData = {\n                  id: dimension.id,\n                  fieldId: dimension.fieldId,\n                  name: dimension.name,\n                  displayName: dimension.displayName || dimension.name,\n                  originalName: dimension.originalName || dimension.name,\n                  fieldType: dimension.fieldType,\n                  timeGranularity: dimension.timeGranularity || null,\n                  isExistingDimension: true,\n                  sourceSection: isStack === 'stack' ? 'stack' : 'category'\n                }\n                e.dataTransfer.setData('application/json', JSON.stringify(dragData))\n              }}\n              className={`relative group ${dimension.fieldType === 'dimension' ? 'cursor-move' : 'cursor-default'}`}\n              onMouseEnter={() => setHoveredDimension(dimension.id)}\n              onMouseLeave={() => setHoveredDimension(null)}\n            >\n              <div\n                className={`\n                  flex items-center justify-between gap-2 p-1 rounded-md border h-[28px]\n                  ${getFieldTypeStyle(dimension)}\n                `}\n                onClick={() => setSelectedDimensionId(dimension.id)}\n              >\n\n                {/* 字段名称 */}\n                <div className=\"min-w-0 flex-1\">\n                  <span className=\"text-sm font-medium truncate\">\n                    {dimension.displayName && dimension.displayName.length > 15\n                      ? `${dimension.displayName.substring(0, 15)}...`\n                      : dimension.displayName}\n                  </span>\n                </div>\n\n                {/* 操作按钮区域 */}\n                <div className={`flex items-center gap-1 ${hoveredDimension === dimension.id ? 'opacity-100' : 'opacity-0 group-hover:opacity-100 transition-opacity'}`}>\n\n                  <DropdownMenu modal={false}>\n                    <DropdownMenuTrigger asChild>\n                      <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        className=\"h-6 w-6 p-0 hover:bg-transparent data-[state=open]:opacity-100\"\n                        onMouseEnter={() => setHoveredIcon(dimension.id)}\n                        onMouseLeave={() => setHoveredIcon(null)}\n                        onClick={(e) => e.stopPropagation()} // 防止触发父级选中\n                      >\n                        <img src=\"/assets/dashboard/setting.svg\" alt=\"设置\" className=\"h-3 w-3 object-contain\" />\n                      </Button>\n                    </DropdownMenuTrigger>\n\n                    <DropdownMenuContent\n                      className=\"w-40\"\n                      align=\"start\"\n                      side=\"left\"\n                      onClick={(e) => e.stopPropagation()}\n                    >\n                      {/* --- 维度菜单 --- */}\n                      {dimension.fieldType === 'dimension' && (\n                        <>\n                          {/* 排序级联菜单 */}\n                          {isStack !== \"stack\" && (\n                            <DropdownMenuSub>\n                              <DropdownMenuSubTrigger>\n                                <span>{t('dimensionBlock.menu.sort')}</span>\n                              </DropdownMenuSubTrigger>\n                              <DropdownMenuPortal>\n                                <DropdownMenuSubContent>\n                                  {sortOptions.map((option) => (\n                                    <DropdownMenuItem\n                                      key={option.value || 'null'}\n                                      onClick={() => onSortChange?.(dimension.id, option.value as any)}\n                                      className=\"justify-between\"\n                                    >\n                                      {option.label}\n                                      {dimension.sort === option.value && <Check className=\"h-4 w-4\" />}\n                                    </DropdownMenuItem>\n                                  ))}\n                                </DropdownMenuSubContent>\n                              </DropdownMenuPortal>\n                            </DropdownMenuSub>\n                          )}\n\n                          {isStack !== \"stack\" && <DropdownMenuSeparator />}\n\n                          <DropdownMenuItem\n                            onClick={() => onEditDisplayName(dimension.id, dimension.originalName, dimension.displayName)}\n                          >\n                            {t('componentConfigDrawer.dialog.editDisplayName')}\n                          </DropdownMenuItem>\n                        </>\n                      )}\n\n                      {/* --- 指标菜单 --- */}\n                      {dimension.fieldType === 'metric' && (\n                        <>\n                          {/* 聚合方式级联菜单 */}\n                          {!isVirtualMetric(dimension) && (\n                            <DropdownMenuSub>\n                              <DropdownMenuSubTrigger>\n                                <span>{t('dimensionBlock.menu.aggregation')}</span>\n                              </DropdownMenuSubTrigger>\n                              <DropdownMenuPortal>\n                                <DropdownMenuSubContent>\n                                  {aggregationOptions.map((option) => (\n                                    <DropdownMenuItem\n                                      key={option.value}\n                                      onClick={() => onAggregationChange?.(dimension.id, option.value)}\n                                      className=\"justify-between\"\n                                    >\n                                      {option.label}\n                                      {dimension.aggregation === option.value && <Check className=\"h-4 w-4\" />}\n                                    </DropdownMenuItem>\n                                  ))}\n                                </DropdownMenuSubContent>\n                              </DropdownMenuPortal>\n                            </DropdownMenuSub>\n                          )}\n\n                          {/* 指标排序级联菜单 */}\n                          {isMetricCard && (\n                            <DropdownMenuSub>\n                              <DropdownMenuSubTrigger>\n                                <span>{t('dimensionBlock.menu.sort')}</span>\n                              </DropdownMenuSubTrigger>\n                              <DropdownMenuPortal>\n                                <DropdownMenuSubContent>\n                                  {sortOptions.map((option) => (\n                                    <DropdownMenuItem\n                                      key={option.value || 'null'}\n                                      onClick={() => onSortChange?.(dimension.id, option.value as any)}\n                                      className=\"justify-between\"\n                                    >\n                                      {option.label}\n                                      {dimension.sort === option.value && <Check className=\"h-4 w-4\" />}\n                                    </DropdownMenuItem>\n                                  ))}\n                                </DropdownMenuSubContent>\n                              </DropdownMenuPortal>\n                            </DropdownMenuSub>\n                          )}\n\n                          {/* 数值格式 */}\n                          <DropdownMenuItem\n                            onClick={() => {\n                              setEditingMetric(dimension)\n                              setFormatDialogOpen(true)\n                            }}\n                          >\n                            {t('dimensionBlock.menu.format')}\n                          </DropdownMenuItem>\n\n                          <DropdownMenuSeparator />\n\n                          {/* 编辑显示名称 */}\n                          <DropdownMenuItem\n                            onClick={() => onEditDisplayName(dimension.id, dimension.originalName, dimension.displayName)}\n                          >\n                            {t('componentConfigDrawer.dialog.editDisplayName')}\n                          </DropdownMenuItem>\n                        </>\n                      )}\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n\n                  {/* 删除按钮 */}\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    className=\"h-6 w-6 p-0 hover:bg-red-200\"\n                    onClick={(e) => {\n                      e.stopPropagation(); // 防止拖拽或选中\n                      onDelete(dimension.id);\n                    }}\n                    title={t('dimensionBlock.button.deleteField')}\n                  >\n                    <X className=\"h-3 w-3\" />\n                  </Button>\n                </div>\n              </div>\n            </div>\n          ))}\n        </div>\n      ) : (\n        <div className={`\n          border border-dashed rounded-md px-3 py-2\n          ${isDragOver\n            ? 'border-primary bg-blue-50'\n            : 'border-gray-300 bg-gray-50'\n          }\n        `}>\n          <div className=\"text-sm text-gray-400\">\n            {isDimension\n              ? t('dimensionBlock.prompt.dragDimensionHere')\n              : t('dimensionBlock.prompt.dragMetricHere')}\n          </div>\n        </div>\n      )}\n\n      {editingMetric && localFormat && (\n        <Dialog\n          open={formatDialogOpen}\n          onOpenChange={(open) => {\n            setFormatDialogOpen(open)\n            if (!open) {\n              setEditingMetric(null)\n              setLocalFormat(null)\n            }\n          }}\n        >\n          <DialogContent className=\"sm:max-w-[520px]\">\n            <DialogHeader>\n              <DialogTitle>{t('dimensionBlock.dialog.formatTitle')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"space-y-6 py-4\">\n              <div>\n                <div className=\"text-sm font-medium mb-2\">{t('dimensionBlock.dialog.formatType')}</div>\n                <RadioGroup\n                  value={localFormat.type}\n                  onValueChange={(value) => {\n                    const newType = value as any;\n                    let newUnit = localFormat.unit;\n                    let newThousandSeparator = localFormat.thousandSeparator;\n                    if (newType === 'storage') {\n                      newUnit = 'B';\n                    } else if (newType === 'duration') {\n                      newUnit = 'ms';\n                    } else if (newType === 'percent') {\n                      newUnit = undefined;\n                      newThousandSeparator = false;\n                    } else {\n                      newUnit = localFormat.unit || '';\n                    }\n\n                    // 切换类型时，数值一律 0，小数位其他类型一律 2，互不影响\n                    const newDecimalPlaces = newType === 'number' ? 0 : 2;\n\n                    setLocalFormat({\n                      ...localFormat,\n                      type: newType,\n                      unit: newUnit,\n                      thousandSeparator: newThousandSeparator,\n                      decimalPlaces: newDecimalPlaces\n                    })\n                  }}\n                  className=\"flex gap-6\"\n                >\n                  {[\n                    { label: t('dimensionBlock.dialog.formatTypes.number'), value: 'number' },\n                    { label: t('dimensionBlock.dialog.formatTypes.percent'), value: 'percent' },\n                    { label: t('dimensionBlock.dialog.formatTypes.duration'), value: 'duration' },\n                    { label: t('dimensionBlock.dialog.formatTypes.storage'), value: 'storage' }\n                  ].map(item => (\n                    <div key={item.value} className=\"flex items-center space-x-2\">\n                      <RadioGroupItem value={item.value} id={`format-${item.value}`} />\n                      <Label htmlFor={`format-${item.value}`} className=\"text-sm cursor-pointer\">\n                        {item.label}\n                      </Label>\n                    </div>\n                  ))}\n                </RadioGroup>\n              </div>\n\n              {/* 小数位数 - 默认0，上限5 */}\n              <div>\n                <div className=\"text-sm font-medium mb-2\">{t('dimensionBlock.dialog.decimalPlaces')}</div>\n                <Input\n                  type=\"number\"\n                  min={0}\n                  max={5}\n                  step={1}\n                  value={localFormat.decimalPlaces}\n                  onInput={(e) => {\n                    const input = e.target as HTMLInputElement;\n                    const val = input.value;\n\n                    if (val === '') {\n                      setLocalFormat({ ...localFormat, decimalPlaces: undefined })\n                    } else {\n                      const numVal = Number(val);\n                      // 限制在 0-5 范围内\n                      if (numVal > 5) {\n                        input.value = '5';\n                        setLocalFormat({ ...localFormat, decimalPlaces: 5 })\n                      } else if (numVal < 0) {\n                        input.value = '0';\n                        setLocalFormat({ ...localFormat, decimalPlaces: 0 })\n                      } else {\n                        setLocalFormat({ ...localFormat, decimalPlaces: numVal })\n                      }\n                    }\n                  }}\n                  onBlur={(e) => {\n                    const val = e.target.value;\n                    if (val === '' || isNaN(Number(val))) {\n                      const defaultDecimal = localFormat.type === 'number' ? 0 : 2;\n                      setLocalFormat({ ...localFormat, decimalPlaces: defaultDecimal })\n                    }\n                  }}\n                  className=\"w-full\"\n                />\n              </div>\n\n              {/* 百分比 隐藏 单位+千分符；其他格式正常显示 */}\n              {localFormat.type !== 'percent' && (\n                <>\n                  {/* 单位 - 不同格式对应不同下拉选项 */}\n                  <div className=\"grid grid-cols-2 gap-4\">\n                    <div>\n                      <div className=\"text-sm font-medium mb-2\">{t('dimensionBlock.dialog.unit')}</div>\n                      <Select\n                        value={localFormat.unit ||\n                          (localFormat.type === 'storage' ? 'B' :\n                            localFormat.type === 'duration' ? 'ms' :\n                              'none')}\n                        onValueChange={(value) => {\n                          let unitVal = value === \"none\" ? \"\" : value;\n                          setLocalFormat({ ...localFormat, unit: unitVal })\n                        }}\n                      >\n                        <SelectTrigger>\n                          <SelectValue placeholder={t('dimensionBlock.dialog.selectUnit')} />\n                        </SelectTrigger>\n                        <SelectContent>\n                          {/* Select Items Logic */}\n                          {localFormat.type === 'number' && (\n                            <>\n                              <SelectItem value=\"none\">{t('dimensionBlock.dialog.none')}</SelectItem>\n                              <SelectItem value=\"Thousand\">Thousand (K)</SelectItem>\n                              <SelectItem value=\"Million\">Million (M)</SelectItem>\n                              <SelectItem value=\"Billion\">Billion (B)</SelectItem>\n                            </>\n                          )}\n                          {localFormat.type === 'duration' && (\n                            <>\n                              <SelectItem value=\"ms\">ms</SelectItem>\n                              <SelectItem value=\"s\">s</SelectItem>\n                              <SelectItem value=\"min\">min</SelectItem>\n                              <SelectItem value=\"hour\">hour</SelectItem>\n                            </>\n                          )}\n                          {localFormat.type === 'storage' && (\n                            <>\n                              <SelectItem value=\"B\">B</SelectItem>\n                              <SelectItem value=\"KB\">KB</SelectItem>\n                              <SelectItem value=\"MB\">MB</SelectItem>\n                              <SelectItem value=\"GB\">GB</SelectItem>\n                              <SelectItem value=\"TB\">TB</SelectItem>\n                            </>\n                          )}\n                        </SelectContent>\n                      </Select>\n                    </div>\n                    <div>\n                      <div className=\"text-sm font-medium mb-2\">{t('dimensionBlock.dialog.suffix')}</div>\n                      <Input\n                        placeholder={t('dimensionBlock.dialog.enterSuffix')}\n                        value={localFormat.suffix || \"\"}\n                        onChange={(e) =>\n                          setLocalFormat({ ...localFormat, suffix: e.target.value })\n                        }\n                        className=\"w-full\"\n                      />\n                    </div>\n                  </div>\n\n                  {/* 千分符 */}\n                  <div className=\"flex items-center gap-2\">\n                    <Checkbox\n                      checked={localFormat.thousandSeparator}\n                      onCheckedChange={(checked) =>\n                        setLocalFormat({\n                          ...localFormat,\n                          thousandSeparator: checked as boolean\n                        })\n                      }\n                      id=\"thousand-separator\"\n                    />\n                    <label htmlFor=\"thousand-separator\" className=\"text-sm cursor-pointer\">\n                      {t('dimensionBlock.dialog.thousandSeparator')}\n                    </label>\n                  </div>\n                </>\n              )}\n\n              {/* 百分比 只显示后缀输入框 */}\n              {localFormat.type === 'percent' && (\n                <div>\n                  <div className=\"text-sm font-medium mb-2\">{t('dimensionBlock.dialog.suffix')}</div>\n                  <Input\n                    placeholder={t('dimensionBlock.dialog.enterSuffix')}\n                    value={localFormat.suffix || \"\"}\n                    onChange={(e) =>\n                      setLocalFormat({ ...localFormat, suffix: e.target.value })\n                    }\n                    className=\"w-full\"\n                  />\n                </div>\n              )}\n\n              {/* 示例 - 匹配需求默认示例 */}\n              <div className=\"text-sm text-muted-foreground\">\n                {t('dimensionBlock.dialog.example')}: {\n                  localFormat.type === 'percent' ? '99%' :\n                    localFormat.type === 'duration' ? '2000000' :\n                      localFormat.type === 'storage' ? '2000000' : '20000'\n                }\n              </div>\n\n            </div>\n\n            {/* Footer */}\n            <DialogFooter>\n              <Button variant=\"outline\" onClick={() => {\n                setFormatDialogOpen(false)\n                setEditingMetric(null)\n                setLocalFormat(null)\n              }}>\n                {t('chartSelector.buttons.cancel')}\n              </Button>\n              <Button onClick={() => {\n                if (!editingMetric || !localFormat) return\n                const formatToSave: MetricFormat = {\n                  type: localFormat.type,\n                  decimalPlaces: localFormat.decimalPlaces,\n                  thousandSeparator: localFormat.type === 'percent' ? false : localFormat.thousandSeparator,\n                  unit: localFormat.type === 'percent' ? undefined : (localFormat.unit === \"\" ? undefined : localFormat.unit),\n                  suffix: localFormat.suffix === \"\" ? undefined : localFormat.suffix\n                }\n                onFormatChange?.(editingMetric.id, formatToSave)\n                setFormatDialogOpen(false)\n                setEditingMetric(null)\n                setLocalFormat(null)\n              }}>\n                {t('chartSelector.buttons.save')}\n              </Button>\n            </DialogFooter>\n          </DialogContent>\n        </Dialog>\n      )}\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/FilterConditionDialog.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState, useMemo, useCallback } from \"react\"\nimport { Plus, Trash2, ChevronDown, X, RefreshCcw } from \"lucide-react\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport {\n  Select,\n  SelectTrigger,\n  SelectValue,\n  SelectContent,\n  SelectItem\n} from \"@/components/bs-ui/select\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogFooter\n} from \"@/components/bs-ui/dialog\"\nimport { Checkbox } from \"@/components/bs-ui/checkBox\"\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { getFieldEnums } from \"@/controllers/API/dashboard\"\nimport { toast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useTranslation } from \"react-i18next\"\n\n/* ================== 类型定义 ================== */\nexport type LogicOperator = \"and\" | \"or\"\nexport type FieldType = \"string\" | \"number\"\n// FilterOperator\nexport type FilterOperator =\n  | \"equals\"\n  | \"not_equals\"\n  | \"contains\"\n  | \"not_contains\"\n  | \"greater_than\"\n  | \"greater_than_or_equal\"\n  | \"less_than\"\n  | \"less_than_or_equal\"\n  | \"is_empty\"\n  | \"is_not_empty\"\n  | \"enum_in\"\n  | \"enum_not_in\"\n\n\nexport interface DatasetField {\n  fieldCode: string\n  displayName: string\n  fieldType: FieldType\n  role: \"dimension\" | \"metric\"\n  enumValues?: string[]\n  isEnum?: boolean\n}\n\nexport interface FilterCondition {\n  id: string\n  fieldCode?: string\n  fieldId?: string\n  fieldName?: string\n  fieldType?: FieldType\n  operator?: FilterOperator\n  value?: string | number | string[]\n  filterType?: \"conditional\" | \"enum\"\n}\n\nexport interface FilterGroup {\n  logic: LogicOperator\n  conditions: FilterCondition[]\n}\n\ninterface Props {\n  open: boolean\n  onOpenChange: (open: boolean) => void\n  value: FilterGroup | null\n  onChange: (value: FilterGroup) => void\n  fields: DatasetField[]\n  dataset_code?: string\n}\n\n/* ================== 工具函数 ================== */\nconst createEmptyCondition = (): FilterCondition => ({\n  id: generateUUID(6),\n})\n\nconst operatorNeedsValue = (op?: FilterOperator) =>\n  !op || ![\"is_empty\", \"is_not_empty\"].includes(op)\n\nconst isEnumOperator = (op?: FilterOperator) =>\n  op === \"enum_in\" || op === \"enum_not_in\"\n\n/* ================== 枚举多选组件 (调用接口版本) ================== */\ninterface EnumMultiSelectProps {\n  fieldCode: string\n  selected: string[]\n  onChange: (selected: string[]) => void\n  placeholder?: string\n  dataset_code: string\n}\n\nfunction EnumMultiSelect({\n  fieldCode,\n  selected,\n  onChange,\n  placeholder = \"\",\n  dataset_code\n}: EnumMultiSelectProps) {\n  const { t } = useTranslation(\"dashboard\")\n  const [isOpen, setIsOpen] = useState(false)\n  const [search, setSearch] = useState(\"\")\n  const [values, setValues] = useState<string[]>([])\n  const [loading, setLoading] = useState(false)\n  const [page, setPage] = useState(1)\n  const [hasMore, setHasMore] = useState(true)\n  const pageSize = 20\n  const [searchMode, setSearchMode] = useState(false)\n  const [searchLoading, setSearchLoading] = useState(false)\n  const [fetchedValues, setFetchedValues] = useState<string[]>([])\n\n  const fetchEnumValues = async (code: string, pageNum = 1, searchText = \"\") => {\n    const isSearch = !!searchText.trim()\n    const currentLoading = isSearch ? setSearchLoading : setLoading\n\n    currentLoading(true)\n    try {\n      const response = await getFieldEnums({\n        dataset_code,\n        field: code,\n        page: pageNum,\n        pageSize,\n        keyword: searchText\n      })\n      const result = response.enums || []\n\n      if (pageNum === 1) {\n        setValues(result)\n        if (searchText) {\n          setFetchedValues(result)\n        }\n      } else {\n        setValues(prev => {\n          const newValues = [...prev, ...result]\n          if (searchText) {\n            setFetchedValues(newValues)\n          }\n          return newValues\n        })\n      }\n      setHasMore(result.length === pageSize)\n\n      if (isSearch) {\n        setSearchMode(true)\n      }\n    } catch (error) {\n      console.error(\"获取枚举值失败:\", error)\n      toast({\n        description: t('filterConditionDialog.toast.fetchEnumFailed'),\n        variant: \"error\"\n      })\n      setValues([])\n    } finally {\n      currentLoading(false)\n    }\n  }\n\n  // 使用防抖处理搜索\n  const handleSearch = useCallback((searchText: string) => {\n    setSearch(searchText)\n    if (searchText.trim()) {\n      setPage(1)\n      setFetchedValues([])\n      fetchEnumValues(fieldCode, 1, searchText)\n    } else {\n      setSearchMode(false)\n      setPage(1)\n      setFetchedValues([])\n      fetchEnumValues(fieldCode, 1, \"\")\n    }\n  }, [fieldCode, dataset_code])\n\n  useEffect(() => {\n    if (isOpen && fieldCode && dataset_code && !search) {\n      setPage(1)\n      fetchEnumValues(fieldCode, 1, \"\")\n    }\n  }, [isOpen, fieldCode, dataset_code])\n\n  const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {\n    const element = e.currentTarget\n    const isAtBottom = element.scrollHeight - element.scrollTop <= element.clientHeight + 10\n\n    if (isAtBottom && hasMore && !loading && !searchLoading) {\n      const nextPage = page + 1\n      setPage(nextPage)\n      fetchEnumValues(fieldCode, nextPage, search)\n    }\n  }, [hasMore, loading, searchLoading, page, fieldCode, dataset_code, search])\n\n  const filteredValues = useMemo(() => {\n    if (!search.trim()) return values\n    return values.filter(value =>\n      value.toLowerCase().includes(search.toLowerCase())\n    )\n  }, [values, search])\n\n  const allSelected = useMemo(() => {\n    const currentValues = filteredValues\n    return currentValues.length > 0 && currentValues.every(val => selected.includes(val))\n  }, [selected, filteredValues])\n  const handleToggleAll = () => {\n    const currentValues = filteredValues\n\n    if (currentValues.length === 0) return\n\n    const allSelected = currentValues.every(val => selected.includes(val))\n\n    if (allSelected) {\n      // 取消全选：从selected中移除所有当前显示的值\n      const newSelected = selected.filter(val => !currentValues.includes(val))\n      onChange(newSelected)\n    } else {\n      // 全选：添加所有当前显示的值\n      const valuesToAdd = currentValues.filter(val => !selected.includes(val))\n      const newSelected = [...selected, ...valuesToAdd]\n      onChange(newSelected)\n    }\n  }\n\n\n  const handleToggleValue = (value: string) => {\n    const newSelected = selected.includes(value)\n      ? selected.filter(v => v !== value)\n      : [...selected, value]\n    onChange(newSelected)\n  }\n\n  const handleRemoveTag = (value: string, e: React.MouseEvent) => {\n    e.stopPropagation()\n    onChange(selected.filter(v => v !== value))\n  }\n\n  const handleClearSearch = () => {\n    setSearch(\"\")\n    if (searchMode) {\n      setPage(1)\n      fetchEnumValues(fieldCode, 1, \"\")\n      setSearchMode(false)\n    }\n  }\n\n  return (\n    <div className=\"relative flex-1\">\n      <div\n        className=\"w-full min-h-8 border border-input bg-background rounded-md flex items-center justify-between px-3 py-1 cursor-pointer hover:bg-accent hover:text-accent-foreground\"\n        onClick={() => setIsOpen(!isOpen)}\n      >\n        <div className=\"flex flex-1 min-h-0 overflow-hidden mr-2\">\n          {selected.length > 0 ? (\n            <div className=\"flex-1 overflow-y-auto\" style={{ maxHeight: '80px' }}>\n              <div className=\"flex flex-wrap gap-1 py-0.5\">\n                {selected.map(value => (\n                  <Badge\n                    key={value}\n                    variant=\"secondary\"\n                    className=\"flex-shrink-0 flex items-center gap-1 px-2 py-0 text-xs h-5\"\n                  >\n                    <span className=\"overflow-hidden w-28 truncate\" title={value}>\n                      {value}\n                    </span>\n                    <X\n                      className=\"h-3 w-3 cursor-pointer\"\n                      onClick={e => handleRemoveTag(value, e)}\n                    />\n                  </Badge>\n                ))}\n              </div>\n            </div>\n          ) : (\n            <span className=\"text-sm text-gray-500 py-0.5\">{placeholder || t('filterConditionDialog.enumSelect.placeholder')}</span>\n          )}\n        </div>\n        <ChevronDown className={`h-4 w-4 transition-transform flex-shrink-0 ${isOpen ? \"rotate-180\" : \"\"}`} />\n      </div>\n\n      {isOpen && (\n        <div className=\"absolute z-50 w-full mt-1 bg-background border rounded-md shadow-lg top-full\">\n          <div className=\"p-2 border-b\">\n            <div className=\"relative\">\n              <Input\n                placeholder={t('filterConditionDialog.enumSelect.searchPlaceholder')}\n                value={search}\n                onChange={e => handleSearch(e.target.value)}\n                className=\"h-8 pr-8\"\n                onClick={e => e.stopPropagation()}\n              />\n              {search && (\n                <X\n                  className=\"absolute right-2 top-1/2 transform -translate-y-1/2 h-4 w-4 cursor-pointer text-muted-foreground\"\n                  onClick={handleClearSearch}\n                />\n              )}\n            </div>\n          </div>\n\n          {loading && page === 1 ? (\n            <div className=\"px-3 py-4 text-sm text-muted-foreground text-center\">\n              {t('filterConditionDialog.enumSelect.loading')}\n            </div>\n          ) : (\n            <>\n              {values.length > 0 && (\n                <div className=\"px-3 py-2 border-b\">\n                  <div className=\"flex items-center space-x-2 cursor-pointer\" onClick={handleToggleAll}>\n                    <Checkbox checked={allSelected} />\n                    <span className=\"text-sm\">{allSelected ? t(\"chartSelector.unSelectAll\") : t(\"chartSelector.selectAll\")}</span>\n                  </div>\n                </div>\n              )}\n\n              <div\n                className=\"max-h-60 overflow-auto\"\n                onScroll={handleScroll}\n              >\n                {filteredValues.length > 0 ? (\n                  <>\n                    {filteredValues.map(value => (\n                      <div\n                        key={value}\n                        className=\"flex items-center space-x-2 px-3 py-2 hover:bg-muted cursor-pointer\"\n                        onClick={() => handleToggleValue(value)}\n                      >\n                        <Checkbox checked={selected.includes(value)} />\n                        <span className=\"text-sm\">{value}</span>\n                      </div>\n                    ))}\n                    {(loading || searchLoading) && page > 1 && (\n                      <div className=\"px-3 py-2 text-sm text-muted-foreground text-center\">\n                        {t('filterConditionDialog.enumSelect.loadingMore')}\n                      </div>\n                    )}\n                  </>\n                ) : (\n                  <div className=\"px-3 py-2 text-sm text-muted-foreground text-center\">\n                    {search ? t('filterConditionDialog.enumSelect.noMatch') : t('filterConditionDialog.enumSelect.noData')}\n                  </div>\n                )}\n              </div>\n            </>\n          )}\n        </div>\n      )}\n\n      {isOpen && (\n        <div\n          className=\"fixed inset-0 z-40\"\n          onClick={() => setIsOpen(false)}\n        />\n      )}\n    </div>\n  )\n}\n\n/* ================== 主组件 ================== */\nexport function FilterConditionDialog({\n  open,\n  onOpenChange,\n  value,\n  onChange,\n  fields,\n  dataset_code = \"\",\n  dimensions = [],\n  filtersLogic\n}: Props) {\n  const { t } = useTranslation(\"dashboard\")\n  const [draft, setDraft] = useState<FilterGroup>({\n    logic: \"and\",\n    conditions: [createEmptyCondition()]\n  })\n  const [initialized, setInitialized] = useState(false)\n\n  const [error, setError] = useState<string | null>(null)\n  const getFieldDisplayName = useCallback((fieldCode: string) => {\n    const dimension = dimensions.find(dim =>\n      dim.fieldId === fieldCode || dim.name === fieldCode\n    );\n\n    if (dimension?.displayName) {\n      return dimension.displayName;\n    }\n\n    // const field = fields.find(f => f.fieldCode === fieldCode);\n    return t(fieldCode) || t('filterConditionDialog.placeholders.noName');\n  }, [dimensions, fields, t]);\n  // 过滤掉时间字段\n  const filteredFields = useMemo(() => {\n    // console.log('原始字段数据:', fields)\n    if (!dataset_code || !dimensions || !fields) return []\n\n    return fields.filter(field => {\n      if (!field || !field.fieldCode || !field.displayName) {\n        // console.log('发现无效字段:', field)\n        return false\n      }\n      if (field.isVirtual === true) {\n        // console.log('过滤虚拟指标:', field.displayName)\n        return false\n      }\n      const lowerCode = field.fieldCode.toLowerCase()\n      const lowerName = field.displayName.toLowerCase()\n      // console.log('检查字段:', field.displayName, 'lowerCode:', lowerCode, 'lowerName:', lowerName)\n\n      // 检查是否包含时间相关关键词\n      const isTimeField = lowerCode.includes('time') ||\n        lowerCode.includes('date') ||\n        lowerName.includes(t('filterConditionDialog.keywords.time')) ||\n        lowerName.includes(t('filterConditionDialog.keywords.date'))\n\n      return !isTimeField\n    })\n  }, [fields, dimensions, dataset_code, t])\n  useEffect(() => {\n    if (!open) {\n      // 关闭对话框时重置状态\n      setDraft({\n        logic: \"and\",\n        conditions: [createEmptyCondition()]\n      })\n      setError(null)\n    }\n  }, [open])\n  useEffect(() => {\n    setInitialized(false)\n    setDraft({\n      logic: \"and\",\n      conditions: [createEmptyCondition()]\n    })\n  }, [dataset_code])\n  useEffect(() => {\n    if (!open) return\n    if (fields.length === 0) return\n\n    const safeValue = value || { logic: \"and\", conditions: [] }\n\n    const newConditions = (safeValue.conditions || []).map(c => {\n      let fieldCode = c.fieldCode\n\n      if (!fieldCode && c.fieldId) {\n        const field = fields.find(f => f.fieldCode === c.fieldId || f.fieldId === c.fieldId)\n        fieldCode = field?.fieldCode || c.fieldId\n      }\n\n      const field = fields.find(f => f.fieldCode === fieldCode)\n      const isEnum = field?.isEnum || (field?.enumValues?.length > 0)\n\n      let operator: FilterOperator\n      if (c.operator) operator = c.operator\n      else if (isEnum) operator = \"in\"  // 修改这里：枚举筛选用 \"in\"\n      else if (field?.fieldType === \"string\") operator = \"equals\"\n      else operator = \"equals\"\n\n      // 处理空值操作符的回显\n      let valueToSet = c.value ?? (isEnum ? [] : \"\")\n\n      // 如果是空值操作符，不需要值\n      if (c.operator && [\"is_empty\", \"is_not_empty\"].includes(c.operator)) {\n        valueToSet = \"\"\n      }\n\n      return {\n        id: c.id ?? generateUUID(6),\n        fieldCode: fieldCode ?? \"\",\n        fieldId: c.fieldId,\n        fieldType: field?.fieldType,\n        fieldName: field?.displayName,\n        operator,\n        value: valueToSet,\n        filterType: c.filterType || (isEnum ? \"enum\" : \"conditional\")\n      }\n    })\n\n    setDraft({\n      logic: safeValue.logic || filtersLogic || \"and\",\n      conditions: newConditions.length > 0 ? newConditions : [createEmptyCondition()]\n    })\n    setError(null)\n  }, [open, value, fields])\n\n\n\n\n  const isEnumField = useCallback((fieldCode: string) => {\n    const field = fields.find(f => f.fieldCode === fieldCode)\n    return !!field?.isEnum || (field?.enumValues?.length > 0)\n  }, [fields])\n\n\n  const validate = (): boolean => {\n    for (const c of draft.conditions) {\n      if (draft.conditions.length === 0) {\n        return true\n      }\n      if (!c.fieldCode) {\n        // setError(t('filterConditionDialog.errors.selectField'))\n        return true\n      }\n\n      if (!c.operator) {\n        setError(t('filterConditionDialog.errors.selectOperator'))\n        return false\n      }\n\n      if (operatorNeedsValue(c.operator)) {\n        if (c.filterType === \"enum\") {\n          if (!Array.isArray(c.value) || c.value.length === 0) {\n            setError(t('filterConditionDialog.errors.selectEnumValue'))\n            return false\n          }\n        } else {\n          if (c.value === undefined || c.value === \"\") {\n            setError(t('filterConditionDialog.errors.enterFilterValue'))\n            return false\n          }\n        }\n      }\n    }\n    setError(null)\n    return true\n  }\n\n  const updateCondition = (id: string, patch: Partial<FilterCondition>) => {\n    setDraft(prev => ({\n      ...prev,\n      conditions: prev.conditions.map(c => (c.id === id ? { ...c, ...patch } : c))\n    }))\n  }\n\n  const addCondition = () => {\n    setDraft(prev => ({\n      ...prev,\n      conditions: [...prev.conditions, createEmptyCondition()]\n    }))\n  }\n\n  const removeCondition = (id: string) => {\n    setDraft(prev => {\n      const newConditions = prev.conditions.filter(c => c.id !== id)\n      return {\n        ...prev,\n        conditions: newConditions.length > 0 ? newConditions : [createEmptyCondition()]\n      }\n    })\n  }\n  const handleFieldChange = (id: string, fieldCode: string) => {\n    const field = filteredFields.find(f => f.fieldCode === fieldCode)\n    const isEnum = isEnumField(fieldCode)\n\n    let defaultOperator: FilterOperator\n    let defaultFilterType: \"conditional\" | \"enum\"\n\n    if (isEnum) {\n      defaultFilterType = \"enum\"\n      defaultOperator = \"in\"\n    } else {\n      defaultFilterType = \"conditional\"\n      defaultOperator = \"equals\"\n    }\n    console.log(field, 8888999);\n\n    updateCondition(id, {\n      fieldCode,\n      fieldType: field?.fieldType,\n      fieldId: field?.fieldId || fieldCode,\n      fieldName: field?.displayName,\n      filterType: defaultFilterType,\n      operator: defaultOperator,\n      value: isEnum ? [] : \"\"\n    })\n  }\n  const handleFilterTypeChange = (id: string, filterType: \"conditional\" | \"enum\") => {\n    const condition = draft.conditions.find(c => c.id === id)\n    if (!condition || !condition.fieldCode) return\n\n    const isEnum = filterType === \"enum\"\n\n    updateCondition(id, {\n      filterType,\n      value: isEnum ? [] : condition.value,\n      operator: condition.operator ?? (isEnum ? \"enum_in\" : \"equals\")\n    })\n  }\n\n\n  const handleOperatorChange = (id: string, operator: FilterOperator) => {\n    const condition = draft.conditions.find(c => c.id === id)\n    const isEnum = condition?.filterType === \"enum\"\n\n    if (isEnum) {\n      updateCondition(id, { operator, value: [] })\n    } else {\n      if (!operatorNeedsValue(operator)) {\n        updateCondition(id, { operator, value: \"\" })\n      } else {\n        updateCondition(id, { operator, value: condition?.value || \"\" })\n      }\n    }\n  }\n\n  const handleToggleLogic = () => {\n    setDraft(prev => ({\n      ...prev,\n      logic: prev.logic === \"and\" ? \"or\" : \"and\"\n    }))\n  }\n\n  const handleSave = () => {\n    if (!validate()) return\n\n    const validConditions = draft.conditions.filter(c => c.fieldCode)\n\n    // if (validConditions.length === 0) {\n    //   setError(t('filterConditionDialog.errors.atLeastOneCondition'))\n    //   return\n    // }\n    if (validConditions.length === 0) {\n      onChange({\n        logic: \"and\",\n        conditions: []\n      })\n      toast({\n        description: t('filterConditionDialog.toast.saveSuccess'),\n        variant: \"success\"\n      })\n      onOpenChange(false)\n      return\n    }\n    // 确保返回的数据结构正确\n\n    const transformedConditions = draft.conditions\n      .filter(c => c.fieldCode && c.value !== undefined)\n      .map(c => {\n        // 如果是枚举筛选，直接使用 \"in\"\n        if (c.filterType === \"enum\") {\n          return {\n            id: c.id,\n            fieldId: c.fieldId,\n            fieldCode: c.fieldCode,\n            fieldName: c.fieldName,\n            operator: \"in\", // 枚举筛选固定用 in\n            value: c.value,\n            filterType: c.filterType,\n            fieldType: c.fieldType\n          }\n        }\n\n        // 条件筛选：使用用户选择的操作符\n        return {\n          id: c.id,\n          fieldId: c.fieldId,\n          fieldCode: c.fieldCode,\n          fieldName: c.fieldName,\n          operator: c.operator, // 使用用户选择的操作符\n          value: c.value,\n          filterType: c.filterType,\n          fieldType: c.fieldType\n\n        }\n      })\n\n    console.log('保存的条件:', transformedConditions)\n\n    onChange({\n      logic: draft.logic,\n      conditions: transformedConditions\n    })\n    toast({\n      description: t('filterConditionDialog.toast.saveSuccess'),\n      variant: \"success\"\n    })\n\n    onOpenChange(false)\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent className=\"max-w-[900px] max-h-[70vh] flex flex-col\">\n        <DialogHeader>\n          <DialogTitle>{t('filterConditionDialog.title')}</DialogTitle>\n        </DialogHeader>\n\n        <div className=\"relative\">\n          {/* 全局 AND / OR + 竖虚线 */}\n          {draft.conditions.length > 1 && (\n            <>\n              {/* 完整的垂直虚线 - 从顶部横线到底部横线 */}\n              <div className=\"absolute left-3 top-6 bottom-6 w-[1px] border-l border-dashed border-gray-300\"></div>\n\n              {/* 顶部横线 */}\n              <div className=\"absolute left-3 top-6 w-3 h-[1px] border-t border-dashed border-gray-300\"></div>\n\n              {/* 底部横线 */}\n              <div className=\"absolute left-3 bottom-6 w-3 h-[1px] border-t border-dashed border-gray-300\"></div>\n\n              {/* AND / OR徽章 */}\n              <div className=\"absolute -left-4 top-1/2 -translate-y-1/2 z-10\">\n                <Badge\n                  variant=\"outline\"\n                  className=\"px-2 py-1 text-xs cursor-pointer bg-[#E6ECF6] border-primary/30 text-primary\"\n                  onClick={handleToggleLogic}\n                >\n                  {draft.logic}\n                  <RefreshCcw size={10} className=\"ml-1\" />\n                </Badge>\n              </div>\n            </>\n          )}\n\n          <div className=\"space-y-4 pl-8\">\n            {/* 条件列表 */}\n            {draft.conditions.length > 0 ? (\n              draft.conditions.map((c, index) => {\n                return (\n                  <div key={c.id} className=\"relative group\">\n                    <div className=\"flex items-center gap-2 p-2\">\n                      {/* 第一个下拉框：选择字段 */}\n                      <Select\n                        value={c.fieldCode}\n                        onValueChange={v => handleFieldChange(c.id, v)}\n                      >\n                        <SelectTrigger className=\"w-[120px] h-8\">\n                          <SelectValue placeholder={t('filterConditionDialog.placeholders.selectField')} />\n                        </SelectTrigger>\n                        <SelectContent className=\" overflow-y-auto w-[160px] max-h-[200px]\">\n                          {filteredFields.length > 0 ? (\n                            filteredFields.map(f => {\n                              const displayText = getFieldDisplayName(f.fieldCode) || \"暂无\";\n                              return (\n                                <SelectItem key={f.fieldCode} value={f.fieldCode} className=\"truncate\">\n                                  <span className=\"truncate block w-[80px]\" title={displayText}>\n                                    {displayText}\n                                  </span>\n                                </SelectItem>\n                              )\n                            })\n                          ) : (\n                            <div className=\"px-2 py-4 text-sm text-muted-foreground text-center\">\n                              {t('filterConditionDialog.filterTypes.noFields')}\n                            </div>\n                          )}\n                        </SelectContent>\n                      </Select>\n\n                      {/* 第二个下拉框：筛选类型 */}\n                      {c.fieldCode && (\n                        <Select\n                          value={c.filterType}\n                          onValueChange={v => handleFilterTypeChange(c.id, v as \"conditional\" | \"enum\")}\n                        >\n                          <SelectTrigger className=\"w-[100px] h-8\">\n                            <SelectValue placeholder={t('filterConditionDialog.placeholders.filterType')} />\n                          </SelectTrigger>\n                          <SelectContent>\n                            <SelectItem value=\"conditional\">{t('filterConditionDialog.filterTypes.conditional')}</SelectItem>\n                            {c.fieldType !== \"number\" && <SelectItem value=\"enum\">{t('filterConditionDialog.filterTypes.enum')}</SelectItem>}\n                          </SelectContent>\n                        </Select>\n                      )}\n\n                      {/* 条件筛选的操作符和值输入 */}\n                      {c.fieldCode && c.filterType === \"conditional\" && (\n                        <>\n                          {/* 操作符 */}\n                          <Select\n                            value={c.operator}\n                            onValueChange={v => handleOperatorChange(c.id, v as FilterOperator)}\n                          >\n                            <SelectTrigger className=\"w-[160px] h-8\">\n                              <SelectValue placeholder={t('filterConditionDialog.placeholders.operator')} />\n                            </SelectTrigger>\n                            <SelectContent className=\" overflow-y-auto w-[160px] max-h-[240px]\">\n                              {c.fieldType === \"string\" ? (\n                                <>\n                                  <SelectItem value=\"equals\">{t('filterConditionDialog.operators.equals')}</SelectItem>\n                                  <SelectItem value=\"not_equals\">{t('filterConditionDialog.operators.notEquals')}</SelectItem>\n                                  <SelectItem value=\"contains\">{t('filterConditionDialog.operators.contains')}</SelectItem>\n                                  <SelectItem value=\"not_contains\">{t('filterConditionDialog.operators.notContains')}</SelectItem>\n                                  <SelectItem value=\"is_empty\">{t('filterConditionDialog.operators.isEmpty')}</SelectItem>\n                                  <SelectItem value=\"is_not_empty\">{t('filterConditionDialog.operators.isNotEmpty')}</SelectItem>\n                                </>\n                              ) : c.fieldType === \"number\" ? (\n                                <>\n                                  <SelectItem value=\"equals\">{t('filterConditionDialog.operators.equals')}</SelectItem>\n                                  <SelectItem value=\"not_equals\">{t('filterConditionDialog.operators.notEquals')}</SelectItem>\n                                  <SelectItem value=\"greater_than\">{t('filterConditionDialog.operators.greaterThan')}</SelectItem>\n                                  <SelectItem value=\"greater_than_or_equal\">{t('filterConditionDialog.operators.greaterThanOrEqual')}</SelectItem>\n                                  <SelectItem value=\"less_than\">{t('filterConditionDialog.operators.lessThan')}</SelectItem>\n                                  <SelectItem value=\"less_than_or_equal\">{t('filterConditionDialog.operators.lessThanOrEqual')}</SelectItem>\n                                  {/* <SelectItem value=\"is_empty\">{t('filterConditionDialog.operators.isEmpty')}</SelectItem>\n                                  <SelectItem value=\"is_not_empty\">{t('filterConditionDialog.operators.isNotEmpty')}</SelectItem> */}\n                                </>\n                              ) : null}\n                            </SelectContent>\n                          </Select>\n\n                          {/* 值输入 */}\n                          {c.operator && operatorNeedsValue(c.operator) && (\n                            <>\n                              <Input\n                                className=\"flex-1 min-w-[120px] h-8\"\n                                type=\"text\"\n                                placeholder={t('filterConditionDialog.placeholders.enterNumber')}\n                                value={c.value ?? \"\"}\n                                onChange={e =>\n                                  updateCondition(c.id, {\n                                    value: e.target.value\n                                  })\n                                }\n                              />\n                            </>\n                          )}\n                        </>\n                      )}\n\n                      {/* 枚举筛选的下拉选择框 */}\n                      {c.fieldCode && c.filterType === \"enum\" && (\n                        <div className=\"flex-1\">\n                          <EnumMultiSelect\n                            dataset_code={dataset_code}\n                            fieldCode={c.fieldCode}\n                            selected={(c.value as string[]) || []}\n                            onChange={selected => updateCondition(c.id, { value: selected })}\n                            placeholder={t('filterConditionDialog.placeholders.selectEnumValue')}\n                          />\n                        </div>\n                      )}\n\n                      {/* 删除按钮 */}\n                      <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        onClick={() => removeCondition(c.id)}\n                        className=\"flex-shrink-0 h-8 w-8 group-hover:opacity-100 opacity-0\"\n                      >\n                        <Trash2 className=\"h-4 w-4 hover:text-red-600 cursor-pointer\" />\n                      </Button>\n                    </div>\n                  </div>\n                )\n              })\n            ) : (\n              <div className=\"text-center py-4 text-muted-foreground\">\n              </div>\n            )}\n          </div>\n        </div>\n        {/* 添加条件按钮 */}\n        <div>\n          <Button\n            variant=\"outline\"\n            className=\"border-primary text-primary hover:bg-primary/10 h-8\"\n            onClick={addCondition}\n          >\n            <Plus className=\"h-3 w-3 mr-1\" />\n            {t('filterConditionDialog.buttons.addCondition')}\n          </Button>\n        </div>\n\n        {/* 错误提示 */}\n        {error && <div className=\"text-sm text-destructive\">{error}</div>}\n        <DialogFooter>\n          <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n            {t('filterConditionDialog.buttons.cancel')}\n          </Button>\n          <Button onClick={handleSave}>\n            {t('filterConditionDialog.buttons.save')}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/StyleConfigPanel.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { ChevronDown, AlignLeft, AlignCenter, AlignRight, ChevronUp, Bold, Italic, Underline, Strikethrough } from \"lucide-react\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/bs-ui/select\"\nimport { Checkbox } from \"@/components/bs-ui/checkBox\"\nimport { ComponentStyleConfig } from \"../../types/dataConfig\"\nimport { useTranslation } from \"react-i18next\"\nimport { colorSchemes } from \"../../colorSchemes\"\nimport { useComponentEditorStore } from \"@/store/dashboardStore\"\nimport { SketchPicker } from 'react-color';\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\"\nimport { cn } from \"@/utils\"\n\ninterface StyleConfigPanelProps {\n  config: ComponentStyleConfig\n  onChange: (newConfig: ComponentStyleConfig) => void\n  type?: string\n}\n\n// 文本格式组件\ninterface TextFormatProps {\n  fontSize: number\n  setFontSize: (size: number) => void\n  bold: boolean\n  setBold: (bold: boolean) => void\n  italic: boolean\n  setItalic: (italic: boolean) => void\n  strikethrough: boolean\n  setStrikethrough: (strikethrough: boolean) => void\n  align: \"left\" | \"center\" | \"right\"\n  setAlign: (align: \"left\" | \"center\" | \"right\") => void\n  color?: string\n  setColor?: (color: string) => void,\n  underline?: boolean\n  setUnderline?: (underline: boolean) => void\n}\n\nfunction TextFormat({\n  fontSize,\n  setFontSize,\n  bold,\n  setBold,\n  italic,\n  setItalic,\n  strikethrough,\n  setStrikethrough,\n  align,\n  setAlign,\n  color = \"#000000\",\n  setColor,\n  underline = false,\n  setUnderline = () => { }\n}: TextFormatProps) {\n  const { t } = useTranslation(\"dashboard\")\n\n  const alignIcon =\n    align === \"left\" ? (\n      <AlignLeft className=\"w-3.5 h-3.5\" />\n    ) : align === \"center\" ? (\n      <AlignCenter className=\"w-3.5 h-3.5\" />\n    ) : (\n      <AlignRight className=\"w-3.5 h-3.5\" />\n    )\n  return (\n    <div\n      className=\"\n      flex items-center\n      w-[230px] h-8\n      border rounded-md\n      overflow-hidden\n    \"\n    >\n      {/* 字号 */}\n      <Select\n        value={String(fontSize)}\n        onValueChange={(v) => setFontSize(Number(v))}\n      >\n        <SelectTrigger className=\"w-[60px] h-7 px-2 text-xs border-0 bg-background\">\n          <SelectValue />\n        </SelectTrigger>\n        <SelectContent>\n          {[10, 12, 14, 16, 18, 20, 24, 28].map((v) => (\n            <SelectItem key={v} value={String(v)} className=\"text-xs\">\n              {v}\n            </SelectItem>\n          ))}\n        </SelectContent>\n      </Select>\n\n      {/* 颜色 */}\n      {setColor && (\n        <Select\n        >\n          <SelectTrigger className=\"w-[60px] h-7 px-2 text-xs border-0 bg-background\">\n            <div className=\"size-4 border-[#EBECF0]\">\n              <div\n                className=\"h-full w-full rounded shadow-sm border\"\n                style={{ backgroundColor: color }}\n              />\n            </div>\n            <SelectValue />\n          </SelectTrigger>\n          <SelectContent className=\"border-none shadow-none\">\n            <SketchPicker\n              color={color}\n              presetColors={[\n                '#D9E3F0', '#F47373', '#697689', '#37D67A',\n                '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'\n              ]}\n              onChangeComplete={(e) => setColor(e.hex)}\n            />\n          </SelectContent>\n        </Select>\n\n        //   <div className=\"relative shrink-0 mr-2\">\n        //   <Input\n        //     type=\"color\"\n        //     className=\"absolute inset-0 opacity-0 cursor-pointer\"\n        //     value={color}\n        //     onChange={(e) => setColor(e.target.value)}\n        //   />\n        //   <div\n        //     className=\"w-6 h-6 rounded\"\n        //     style={{ backgroundColor: color }}\n        //   />\n        // </div>\n      )}\n\n      {/* 对齐 */}\n      <Select\n        value={align}\n        onValueChange={(v) => setAlign(v as \"left\" | \"center\" | \"right\")}\n      >\n        <SelectTrigger className=\"w-12 h-7 px-1 border-0 shadow-none bg-background\">\n          <SelectValue asChild>{alignIcon}</SelectValue>\n        </SelectTrigger>\n\n        <SelectContent>\n          <SelectItem value=\"left\" className=\"flex justify-center\">\n            <AlignLeft className=\"w-3 h-3\" />\n          </SelectItem>\n          <SelectItem value=\"center\" className=\"flex justify-center\">\n            <AlignCenter className=\"w-3 h-3\" />\n          </SelectItem>\n          <SelectItem value=\"right\" className=\"flex justify-center\">\n            <AlignRight className=\"w-3 h-3\" />\n          </SelectItem>\n        </SelectContent>\n      </Select>\n\n      {/* 样式 */}\n      <div className=\"flex w-[88px] m-1 gap-1\">\n        <IconBtn active={bold} onClick={() => setBold(!bold)}>\n          <Bold className=\"w-3.5 h-3.5\" />\n        </IconBtn>\n        <IconBtn active={italic} onClick={() => setItalic(!italic)}>\n          <Italic className=\"w-3.5 h-3.5\" />\n        </IconBtn>\n        {/* <IconBtn active={underline} onClick={() => setUnderline(!underline)}>\n          <Underline className=\"w-3 h-3\" />\n        </IconBtn>\n        <IconBtn\n          active={strikethrough}\n          onClick={() => setStrikethrough(!strikethrough)}\n        >\n          <Strikethrough className=\"w-3 h-3\" />\n        </IconBtn> */}\n      </div>\n    </div>\n  )\n\n}\n\n/** 小按钮统一组件 */\nfunction IconBtn({\n  active,\n  children,\n  onClick\n}: {\n  active?: boolean\n  children: React.ReactNode\n  onClick: () => void\n}) {\n  return (\n    <Button\n      variant=\"ghost\"\n      size=\"sm\"\n      onClick={onClick}\n      className={`w-7 h-5 px-0 rounded-[3px] ${active ? \"bg-blue-100 text-blue-600\" : \"\"}`}\n    >\n      {children}\n    </Button>\n  )\n}\n\n\n\n\n// 内联的折叠区块组件\nfunction CollapsibleBlock({\n  title,\n  children,\n  isOpen = false,\n  collapsed,\n  onCollapse,\n  rightContent\n}: {\n  title: string\n  children: React.ReactNode\n  isOpen: boolean\n  collapsed: boolean\n  onCollapse: () => void\n  rightContent?: React.ReactNode\n}) {\n  const { t } = useTranslation(\"dashboard\")\n\n  return (\n    <div className=\"space-y-3\">\n      <div\n        className=\"flex items-center justify-between bg-gray-50 dark:bg-gray-400 rounded-md h-[28px] w-[228px] cursor-pointer\"\n        onClick={onCollapse}\n      >\n        <div className=\"flex items-center\">\n          <div className=\"h-3 w-[3px] bg-blue-500 ml-2 rounded-[2px]\"></div>\n          <label className=\"text-sm font-medium text-black ml-2\">{title}</label>\n        </div>\n        <div className=\"flex items-center gap-2 mr-2\">\n          {rightContent}\n          {!isOpen && (\n            <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n              {collapsed ? <ChevronDown className=\"h-4 w-4\" /> : <ChevronUp className=\"h-4 w-4\" />}\n            </Button>\n          )}\n        </div>\n      </div>\n      {(isOpen || !collapsed) && (\n        <div className=\"w-[228px]\">\n          {children}\n        </div>\n      )}\n    </div>\n  )\n}\n\n// 内联的表单区块组件\nfunction FormBlock({ label, children }: {\n  label: string\n  children: React.ReactNode\n}) {\n  return (\n    <div className=\"space-y-2\">\n      <label className=\"text-sm font-medium\">{label}</label>\n      <div className=\"w-[228px]\">\n        {children}\n      </div>\n    </div>\n  )\n}\n\nexport function StyleConfigPanel({ config, onChange, type, FULL_DEFAULT_STYLE_CONFIG }: StyleConfigPanelProps) {\n\n  const { t } = useTranslation(\"dashboard\")\n\n\n  const editingComponent = useComponentEditorStore(state => state.editingComponent)\n\n  const collapsedSections = useComponentEditorStore(state => state.collapsedSections)\n  const setCollapsedSection = useComponentEditorStore(state => state.setCollapsedSection)\n\n  const updateEditingComponent = useComponentEditorStore(state => state.updateEditingComponent)\n  const firstDimension = editingComponent?.data_config?.dimensions?.[0]\n  const firstMetric = editingComponent?.data_config?.metrics?.[0]\n  const localConfig = useMemo(() => {\n    const componentConfig = editingComponent?.style_config || config\n\n    // 准备基础配置\n    const baseConfig = {\n      ...FULL_DEFAULT_STYLE_CONFIG,\n      ...config,\n      ...componentConfig,\n      themeColor: (() => {\n        const id =\n          componentConfig.themeColor ??\n          config.themeColor\n\n        // 如果不存在 or 不合法 → 用第一个\n        return colorSchemes.some(s => s.id === id)\n          ? id\n          : colorSchemes[0].id\n      })(),\n    }\n    // if (baseConfig.title === \"\") {\n    //   baseConfig.title = editingComponent?.data_config?.metrics?.[0]?.fieldName\n    // }\n    // 如果轴标题为空，设置默认值\n    if (baseConfig.xAxisTitle === undefined && firstDimension?.fieldName) {\n      baseConfig.xAxisTitle = firstDimension.fieldName;\n    }\n\n    if (baseConfig.yAxisTitle === undefined && firstMetric?.fieldName) {\n      baseConfig.yAxisTitle = firstMetric.fieldName;\n    }\n\n    return baseConfig\n  }, [editingComponent?.style_config, config, firstDimension, firstMetric])\n  const [initialized, setInitialized] = useState(false)\n\n  useEffect(() => {\n    if (!editingComponent || initialized) return\n\n    const styleConfig = editingComponent.style_config ?? {}\n    if (styleConfig.title === undefined && editingComponent.type === \"metric\") {\n      updateEditingComponent({\n        style_config: {\n          ...FULL_DEFAULT_STYLE_CONFIG,\n          ...styleConfig,\n        },\n        title: editingComponent.data_config?.metrics?.[0]?.fieldName ?? \"\",\n      })\n    } else {\n      updateEditingComponent({\n        style_config: {\n          ...FULL_DEFAULT_STYLE_CONFIG,\n          ...styleConfig,\n          title:\n            editingComponent.title ?? \"\",\n        },\n      })\n    }\n\n    setInitialized(true)\n  }, [editingComponent?.id])\n\n\n\n  const toggleSection = (section: keyof typeof collapsedSections) => {\n    setCollapsedSection(section, !collapsedSections[section])\n  }\n\n  const handleChange = (key: keyof ComponentStyleConfig, value: any) => {\n    if (!editingComponent) return\n\n    const newConfig = {\n      ...localConfig,\n      [key]: value\n    }\n\n    // 只更新全局状态\n    // updateEditingComponent({\n    //   style_config: newConfig\n    // })\n\n    // 通知父组件\n    onChange(newConfig)\n  }\n\n  return (\n    <div className=\"space-y-6\">\n      {/* 颜色 */}\n      <CollapsibleBlock\n        title={t('styleConfigPanel.sections.color')}\n        isOpen={type === 'metric'}\n        collapsed={collapsedSections.color}\n        onCollapse={() => toggleSection('color')}\n      >\n        {type !== 'metric' &&\n          <FormBlock label={t('styleConfigPanel.labels.themeColor')}>\n            <Select\n              value={localConfig.themeColor || \"\"}\n              onValueChange={(id) => {\n                handleChange(\"themeColor\", id); // 直接存 id\n              }}\n            >\n              <SelectTrigger className=\"w-full h-8\">\n                <SelectValue>\n                  <div className=\"flex gap-[1px]\">\n                    {(colorSchemes.find(s => s.id === localConfig.themeColor)?.colors.light.slice(0, 5) || [colorSchemes[0].colors.light]).map((color, idx) => (\n                      <div\n                        key={idx}\n                        className={`\n                w-4 h-4\n                ${idx === 0 ? 'rounded-l-sm' : ''}\n                ${idx === 4 ? 'rounded-r-sm' : ''}\n              `}\n                        style={{ backgroundColor: color }}\n                      />\n                    ))}\n                  </div>\n                </SelectValue>\n              </SelectTrigger>\n\n              <SelectContent className=\"max-h-[300px] overflow-y-auto\">\n                {colorSchemes.map((scheme) => (\n                  <SelectItem key={scheme.id} value={scheme.id}>\n                    <div className=\"flex gap-[1px]\">\n                      {scheme.colors.light.slice(0, 5).map((color, idx) => (\n                        <div\n                          key={idx}\n                          className={`\n                  w-4 h-4 border border-gray-200\n                  ${idx === 0 ? 'rounded-l-sm' : ''}\n                  ${idx === 4 ? 'rounded-r-sm' : ''}\n                `}\n                          style={{ backgroundColor: color }}\n                        />\n                      ))}\n                    </div>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </FormBlock>\n        }\n\n        <FormBlock label={t('styleConfigPanel.labels.bgColor')}>\n          <Popover>\n            <PopoverTrigger asChild>\n              <Button\n                variant=\"outline\"\n                className={cn(\n                  \"w-full h-[32px] p-1 justify-start font-normal\",\n                  !localConfig.bgColor && \"text-muted-foreground\"\n                )}\n              >\n                <div className=\"size-5\">\n                  <div\n                    className=\"h-full w-full border rounded-[4px]\"\n                    style={{ backgroundColor: localConfig.bgColor }}\n                  />\n                </div>\n              </Button>\n            </PopoverTrigger>\n            <PopoverContent className=\"w-auto p-0 border-none shadow-none bg-transparent\">\n              <SketchPicker\n                color={localConfig.bgColor}\n                presetColors={[\n                  '#D9E3F0', '#F47373', '#697689', '#37D67A',\n                  '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'\n                ]}\n                onChangeComplete={(e) => handleChange(\"bgColor\", e.hex)}\n              />\n            </PopoverContent>\n          </Popover>\n          {/* <Input\n            type=\"color\"\n            className=\"h-9 p-1\"\n            value={localConfig.bgColor}\n            onChange={(e) => handleChange(\"bgColor\", e.target.value)}\n          /> */}\n        </FormBlock>\n      </CollapsibleBlock>\n\n      {/* 标题 */}\n      <CollapsibleBlock\n        title={t('styleConfigPanel.sections.title')}\n        collapsed={collapsedSections.title}\n        onCollapse={() => toggleSection('title')}\n        isOpen={type === 'metric'}\n      >\n        <FormBlock label={type === 'metric' ? t('styleConfigPanel.labels.textContent') : t('styleConfigPanel.labels.titleContent')}>\n          <Input\n            placeholder={t('styleConfigPanel.placeholders.enterTitle')}\n            value={localConfig.title || \"\"}\n            onChange={(e) => {\n              const value = e.target.value\n              if (value.length <= 15) {\n                handleChange(\"title\", value)\n              }\n            }}\n            maxLength={15}\n          />\n        </FormBlock>\n        <FormBlock label={t('styleConfigPanel.labels.textFormat')}>\n          <TextFormat\n            fontSize={localConfig.titleFontSize}\n            setFontSize={(v) => handleChange(\"titleFontSize\", v)}\n            bold={localConfig.titleBold || false}\n            setBold={(v) => handleChange(\"titleBold\", v)}\n            italic={localConfig.titleItalic}\n            setItalic={(v) => handleChange(\"titleItalic\", v)}\n            underline={localConfig.titleUnderline || false}\n            setUnderline={(v) => handleChange(\"titleUnderline\", v)}\n            strikethrough={localConfig.titleStrikethrough || false}\n            setStrikethrough={(v) => handleChange(\"titleStrikethrough\", v)}\n            align={localConfig.titleAlign}\n            setAlign={(v) => handleChange(\"titleAlign\", v)}\n            color={localConfig.titleColor || localConfig.themeColor}\n            setColor={(v) => handleChange(\"titleColor\", v)}\n          />\n        </FormBlock>\n      </CollapsibleBlock>\n\n      {\n        type === 'metric' ?\n          <>\n            <CollapsibleBlock\n              isOpen\n              title={t('styleConfigPanel.sections.metricValue')}\n              collapsed={false}\n              onCollapse={() => { }}\n            >\n              <FormBlock label={t('styleConfigPanel.labels.textFormat')}>\n                <TextFormat\n                  fontSize={localConfig.metricFontSize || 14}\n                  setFontSize={(v) => handleChange(\"metricFontSize\", v)}\n                  bold={localConfig.metricBold || false}\n                  setBold={(v) => handleChange(\"metricBold\", v)}\n                  italic={localConfig.metricItalic || false}\n                  setItalic={(v) => handleChange(\"metricItalic\", v)}\n                  underline={localConfig.metricUnderline || false}\n                  setUnderline={(v) => handleChange(\"metricUnderline\", v)}\n                  strikethrough={localConfig.metricStrikethrough || false}\n                  setStrikethrough={(v) => handleChange(\"metricStrikethrough\", v)}\n                  align={localConfig.metricAlign || \"center\"}\n                  setAlign={(v) => handleChange(\"metricAlign\", v)}\n                  color={localConfig.metricColor || localConfig.themeColor}\n                  setColor={(v) => handleChange(\"metricColor\", v)}\n                />\n              </FormBlock>\n            </CollapsibleBlock>\n            <CollapsibleBlock\n              title={t('styleConfigPanel.sections.subtitle')}\n              isOpen\n              collapsed={false}\n              onCollapse={() => { }}\n              rightContent={\n                <div className=\"flex items-center gap-2\">\n                  <Checkbox\n                    checked={localConfig.showSubtitle || false}\n                    onCheckedChange={(v) => handleChange(\"showSubtitle\", v)}\n                  />\n                  <span className=\"text-xs text-gray-500\">{t('styleConfigPanel.buttons.show')}</span>\n                </div>\n              }\n            >\n              {localConfig.showSubtitle && (\n                <>\n                  <FormBlock label={t('styleConfigPanel.labels.textContent')}>\n                    <Input\n                      placeholder={t('styleConfigPanel.placeholders.enterSubtitle')}\n                      value={localConfig.subtitle || \"\"}\n                      onChange={(e) => {\n                        const value = e.target.value\n                        if (value.length <= 24) {\n                          handleChange(\"subtitle\", e.target.value)\n                        }\n                      }}\n                      maxLength={24}\n                    />\n                  </FormBlock>\n                  <FormBlock label={t('styleConfigPanel.labels.textFormat')}>\n                    <TextFormat\n                      fontSize={localConfig.subtitleFontSize || 14}\n                      setFontSize={(v) => handleChange(\"subtitleFontSize\", v)}\n                      bold={localConfig.subtitleBold || false}\n                      setBold={(v) => handleChange(\"subtitleBold\", v)}\n                      italic={localConfig.subtitleItalic || false}\n                      setItalic={(v) => handleChange(\"subtitleItalic\", v)}\n                      underline={localConfig.subtitleUnderline || false}\n                      setUnderline={(v) => handleChange(\"subtitleUnderline\", v)}\n                      strikethrough={localConfig.subtitleStrikethrough || false}\n                      setStrikethrough={(v) => handleChange(\"subtitleStrikethrough\", v)}\n                      align={localConfig.subtitleAlign || \"center\"}\n                      setAlign={(v) => handleChange(\"subtitleAlign\", v)}\n                      color={localConfig.subtitleColor || localConfig.themeColor}\n                      setColor={(v) => handleChange(\"subtitleColor\", v)}\n                    />\n                  </FormBlock>\n                </>\n              )}\n            </CollapsibleBlock>\n          </> : <>\n            {/* 轴标题 */}\n            <CollapsibleBlock\n              title={t('styleConfigPanel.sections.axisTitle')}\n              collapsed={collapsedSections.axis}\n              onCollapse={() => toggleSection('axis')}\n            >\n              <div className=\"space-y-3\">\n                <FormBlock label={t('styleConfigPanel.labels.xAxisTitleContent')}>\n                  <Input\n                    placeholder={t('styleConfigPanel.placeholders.enterXAxisTitle')}\n                    value={localConfig.xAxisTitle || \"\"}\n                    onChange={(e) => {\n                      const value = e.target.value\n                      if (value.length <= 24) {\n                        handleChange(\"xAxisTitle\", e.target.value)\n                      }\n                    }}\n                    maxLength={15}\n                  />\n                </FormBlock>\n\n                <FormBlock label={t('styleConfigPanel.labels.xAxisTextFormat')}>\n                  <TextFormat\n                    fontSize={localConfig.xAxisFontSize || 14}\n                    setFontSize={(v) => handleChange(\"xAxisFontSize\", v)}\n                    bold={localConfig.xAxisBold || false}\n                    setBold={(v) => handleChange(\"xAxisBold\", v)}\n                    italic={localConfig.xAxisItalic || false}\n                    setItalic={(v) => handleChange(\"xAxisItalic\", v)}\n                    underline={localConfig.xAxisUnderline || false}\n                    setUnderline={(v) => handleChange(\"xAxisUnderline\", v)}\n                    strikethrough={localConfig.xAxisStrikethrough || false}\n                    setStrikethrough={(v) => handleChange(\"xAxisStrikethrough\", v)}\n                    align={localConfig.xAxisAlign || \"center\"}\n                    setAlign={(v) => handleChange(\"xAxisAlign\", v)}\n                    color={localConfig.xAxisColor || localConfig.themeColor}\n                    setColor={(v) => handleChange(\"xAxisColor\", v)}\n                  />\n                </FormBlock>\n\n                <div className=\"pt-2 border-t\">\n                  <FormBlock label={t('styleConfigPanel.labels.yAxisTitleContent')}>\n                    <Input\n                      placeholder={t('styleConfigPanel.placeholders.enterYAxisTitle')}\n                      value={localConfig.yAxisTitle || \"\"}\n                      onChange={(e) => {\n                        const value = e.target.value\n                        if (value.length <= 24) {\n                          handleChange(\"yAxisTitle\", e.target.value)\n                        }\n                      }}\n                      maxLength={15}\n                    />\n                  </FormBlock>\n\n                  <FormBlock label={t('styleConfigPanel.labels.yAxisTextFormat')}>\n                    <TextFormat\n                      fontSize={localConfig.yAxisFontSize || 14}\n                      setFontSize={(v) => handleChange(\"yAxisFontSize\", v)}\n                      bold={localConfig.yAxisBold || false}\n                      setBold={(v) => handleChange(\"yAxisBold\", v)}\n                      italic={localConfig.yAxisItalic || false}\n                      setItalic={(v) => handleChange(\"yAxisItalic\", v)}\n                      underline={localConfig.yAxisUnderline || false}\n                      setUnderline={(v) => handleChange(\"yAxisUnderline\", v)}\n                      strikethrough={localConfig.yAxisStrikethrough || false}\n                      setStrikethrough={(v) => handleChange(\"yAxisStrikethrough\", v)}\n                      align={localConfig.yAxisAlign || \"center\"}\n                      setAlign={(v) => handleChange(\"yAxisAlign\", v)}\n                      color={localConfig.yAxisColor || localConfig.themeColor}\n                      setColor={(v) => handleChange(\"yAxisColor\", v)}\n                    />\n                  </FormBlock>\n                </div>\n              </div>\n            </CollapsibleBlock>\n\n            {/* 图例 */}\n            <CollapsibleBlock\n              title={t('styleConfigPanel.sections.legend')}\n              collapsed={collapsedSections.legend}\n              onCollapse={() => toggleSection('legend')}\n            >\n              <FormBlock label={t('styleConfigPanel.labels.legendPosition')}>\n                <Select\n                  value={localConfig.legendPosition}\n                  onValueChange={(v) =>\n                    handleChange(\"legendPosition\", v as \"top\" | \"bottom\" | \"left\" | \"right\")\n                  }\n                >\n                  <SelectTrigger className=\"w-full h-9\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"top\">{t('styleConfigPanel.positions.top')}</SelectItem>\n                    <SelectItem value=\"bottom\">{t('styleConfigPanel.positions.bottom')}</SelectItem>\n                    <SelectItem value=\"left\">{t('styleConfigPanel.positions.left')}</SelectItem>\n                    <SelectItem value=\"right\">{t('styleConfigPanel.positions.right')}</SelectItem>\n                  </SelectContent>\n                </Select>\n              </FormBlock>\n\n              <FormBlock label={t('styleConfigPanel.labels.legendTextFormat')}>\n                <TextFormat\n                  fontSize={localConfig.legendFontSize}\n                  setFontSize={(v) => handleChange(\"legendFontSize\", v)}\n                  bold={localConfig.legendBold}\n                  setBold={(v) => handleChange(\"legendBold\", v)}\n                  italic={localConfig.legendItalic}\n                  setItalic={(v) => handleChange(\"legendItalic\", v)}\n                  underline={localConfig.legendUnderline}\n                  setUnderline={(v) => handleChange(\"legendUnderline\", v)}\n                  strikethrough={localConfig.legendStrikethrough || false}\n                  setStrikethrough={(v) => handleChange(\"legendStrikethrough\", v)}\n                  align={localConfig.legendAlign}\n                  setAlign={(v) => handleChange(\"legendAlign\", v)}\n                  color={localConfig.legendColor || localConfig.themeColor}\n                  setColor={(v) => handleChange(\"legendColor\", v)}\n                />\n              </FormBlock>\n            </CollapsibleBlock>\n            {/* 图表选项 */}\n            <CollapsibleBlock\n              title={t('styleConfigPanel.sections.chartOptions')}\n              isOpen={false}\n              collapsed={collapsedSections.chartOptions}\n              onCollapse={() => toggleSection('chartOptions')}\n            >\n              <div className=\"grid grid-cols-2 gap-3 w-[244px]\">\n                <label className=\"flex items-center gap-2 text-sm\">\n                  <Checkbox\n                    checked={localConfig.showLegend}\n                    onCheckedChange={(v) => handleChange(\"showLegend\", v)}\n                  />\n                  {t('styleConfigPanel.options.legend')}\n                </label>\n                <label className=\"flex items-center gap-2 text-sm\">\n                  <Checkbox\n                    checked={localConfig.showDataLabel}\n                    onCheckedChange={(v) => handleChange(\"showDataLabel\", v)}\n                  />\n                  {t('styleConfigPanel.options.dataLabel')}\n                </label>\n                {editingComponent.type !== \"donut\" && editingComponent.type !== \"pie\" && <label className=\"flex items-center gap-2 text-sm\">\n                  <Checkbox\n                    checked={localConfig.showAxis}\n                    onCheckedChange={(v) => handleChange(\"showAxis\", v)}\n                  />\n                  {t('styleConfigPanel.options.axis')}\n                </label>}\n\n\n                {editingComponent.type !== \"donut\" && editingComponent.type !== \"pie\" && <label className=\"flex items-center gap-2 text-sm\">\n                  <Checkbox\n                    checked={localConfig.showGrid}\n                    onCheckedChange={(v) => handleChange(\"showGrid\", v)}\n                  />\n                  {t('styleConfigPanel.options.gridLine')}\n                </label>}\n              </div>\n            </CollapsibleBlock>\n          </>\n      }\n    </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/config/useChartState.tsx",
    "content": "// useChartState.tsx\n\"use client\"\n\nimport { useState, useMemo, useEffect, useCallback, useRef } from \"react\"\nimport { ChartType, ComponentStyleConfig, DashboardComponent, DataConfig } from \"../../types/dataConfig\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useComponentEditorStore, useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { useTranslation } from \"react-i18next\"\n\n\nexport function useChartState(initialComponent: DashboardComponent) {\n  const { t } = useTranslation(\"dashboard\")\n  const editingComponentIdRef = useRef<string | null>(null)\n\n  const [chartType, setChartType] = useState<ChartType>('bar')\n  const [title, setTitle] = useState('')\n  const [styleConfig, setStyleConfigState] = useState<ComponentStyleConfig>(() => {\n    return initialComponent?.style_config || {}\n  });\n\n  const [categoryDimensions, setCategoryDimensions] = useState<any[]>([])\n  const [stackDimensions, setStackDimensions] = useState<any[]>([])\n  const [valueDimensions, setValueDimensions] = useState<any[]>([])\n  const [dragOverSection, setDragOverSection] = useState<string | null>(null)\n  const [draggingId, setDraggingId] = useState<string | null>(null)\n  const [sortPriorityOrder, setSortPriorityOrder] = useState<string[]>([])\n  const [filterGroup, setFilterGroup] = useState<any>(null)\n  const { toast } = useToast()\n  const { updateEditingComponent } = useComponentEditorStore();\n  const { refreshChart } = useEditorDashboardStore();\n  const setStyleConfig = useCallback((newConfig: ComponentStyleConfig) => {\n    // 更新本地状态\n    setStyleConfigState(newConfig);\n\n  }, [initialComponent, updateEditingComponent, refreshChart]);\n\n  const isStackedChart = (type: ChartType) =>\n    type.startsWith('stacked-') || type.startsWith('grouped-');\n  // 初始化逻辑\n  // 在 useEffect 初始化中添加 sortPriorityOrder 的初始化\n  useEffect(() => {\n    const componentId = initialComponent?.id\n    const currentId = editingComponentIdRef.current\n\n    if (componentId && currentId !== componentId) {\n      console.log('重新初始化组件配置，因为组件ID变化:', componentId)\n      console.log('原始组件数据:', initialComponent)\n\n      editingComponentIdRef.current = componentId\n\n      // 清空之前的维度数据\n      setCategoryDimensions([])\n      setStackDimensions([])\n      setValueDimensions([])\n      setFilterGroup(null)\n      // 清空排序顺序\n      setSortPriorityOrder([])\n\n      const dc = initialComponent.data_config\n      const newChartType = initialComponent.type || 'bar'\n\n      setChartType(newChartType)\n      setTitle(initialComponent.title || '')\n      setStyleConfigState(initialComponent.style_config || {})\n\n      // 初始化维度数据\n      if (dc) {\n        // console.log('数据配置:', dc)\n\n        const newCategoryDimensions: any[] = []\n        const newStackDimensions: any[] = []\n        const newValueDimensions: any[] = []\n        const fieldIdToComponentId = new Map<string, string>()\n\n        // 1. 初始化普通维度（类别轴）\n        if (dc.dimensions && dc.dimensions.length > 0) {\n          const formattedCategoryDims = dc.dimensions.map((dim, index) => {\n            const componentId = `category_${index}_${Date.now()}`\n            fieldIdToComponentId.set(dim.fieldId, componentId)\n            return {\n              id: componentId,\n              fieldId: dim.fieldId,\n              name: dim.fieldCode,\n              displayName: dim.displayName || dim.fieldName,\n              originalName: dim.fieldName,\n              sort: dim.sort || null,\n              timeGranularity: dim.timeGranularity || null,\n              sortPriority: 0,\n              fieldType: 'dimension'\n            }\n          })\n          newCategoryDimensions.push(...formattedCategoryDims)\n          setCategoryDimensions(formattedCategoryDims)\n          console.log('设置类别维度:', formattedCategoryDims)\n        }\n\n        // 2. 初始化堆叠维度\n        if (dc.stackDimension) {\n          const componentId = `stack_0_${Date.now()}`\n          fieldIdToComponentId.set(dc.stackDimension.fieldId, componentId)\n          const formattedStackDim = {\n            id: componentId,\n            fieldId: dc.stackDimension.fieldId,\n            name: dc.stackDimension.fieldCode,\n            displayName: dc.stackDimension.displayName || dc.stackDimension.fieldName,\n            originalName: dc.stackDimension.fieldName,\n            sort: dc.stackDimension.sort || null,\n            timeGranularity: dc.timeGranularity || null,\n            sortPriority: 0,\n            fieldType: 'dimension'\n          }\n          newStackDimensions.push(formattedStackDim)\n          setStackDimensions([formattedStackDim])\n          console.log('设置堆叠维度:', formattedStackDim)\n        }\n\n        // 3. 初始化指标（value）\n        if (dc.metrics && dc.metrics.length > 0) {\n          const valueDims = dc.metrics.map((metric, index) => {\n            const componentId = `value_${index}_${Date.now()}`\n            fieldIdToComponentId.set(metric.fieldId, componentId)\n            return {\n              id: componentId,\n              fieldId: metric.fieldId,\n              name: metric.fieldCode,\n              displayName: metric.displayName || metric.fieldName,\n              originalName: metric.fieldName,\n              sort: metric.sort || null,\n              sortPriority: 0,\n              fieldType: 'metric',\n              isVirtual: metric.isVirtual || false,\n              aggregation: metric.aggregation || 'sum',\n              isDivide: metric.formula,\n              numberFormat: metric.numberFormat || {\n                type: 'number',\n                decimalPlaces: 2,\n                thousandSeparator: true\n              }\n            }\n          })\n          newValueDimensions.push(...valueDims)\n          setValueDimensions(valueDims)\n          console.log('设置指标维度:', valueDims)\n        }\n\n        // 4. 初始化筛选条件\n        if (dc.filters) {\n          setFilterGroup({\n            logic: 'and',\n            conditions: dc.filters.map(filter => ({\n              id: filter.id || generateUUID(6),\n              fieldId: filter.fieldId,\n              fieldName: filter.fieldName,\n              fieldType: filter.fieldType || 'string',\n              filterType: filter.filterType || 'conditional',\n              operator: filter.operator || 'eq',\n              value: filter.value\n            }))\n          })\n        }\n\n        // 5. 初始化字段顺序\n        let fieldOrderIds: string[] = []\n\n        if (dc.fieldOrder && dc.fieldOrder.length > 0) {\n          // 如果 data_config 中有 fieldOrder，使用其中的 fieldId 映射到 componentId\n          fieldOrderIds = dc.fieldOrder\n            .map(item => fieldIdToComponentId.get(item.fieldId))\n            .filter(Boolean) as string[]\n          // console.log('使用 data_config.fieldOrder 映射后的 componentIds:', fieldOrderIds)\n        }\n\n        // 如果没有 fieldOrder 或映射失败，使用默认顺序\n        if (fieldOrderIds.length === 0) {\n          const allComponentIds = [\n            ...newCategoryDimensions.map(d => d.id),\n            ...newStackDimensions.map(d => d.id),\n            ...newValueDimensions.map(d => d.id)\n          ]\n          fieldOrderIds = allComponentIds\n          // console.log('使用默认字段顺序:', fieldOrderIds)\n        }\n\n        setSortPriorityOrder(fieldOrderIds)\n        // console.log('设置 sortPriorityOrder:', fieldOrderIds)\n      }\n    }\n\n    if (!initialComponent) {\n      editingComponentIdRef.current = null\n    }\n  }, [initialComponent?.id, initialComponent?.type])\n\n  // 计算属性\n  const sortPriorityFields = useMemo(() => {\n    const allFields = [\n      ...categoryDimensions,\n      // ...stackDimensions,\n      ...valueDimensions\n    ]\n\n    // 用 Map 保证 fieldId 唯一\n    const uniqueFields = new Map<string, any>()\n    allFields.forEach(f => {\n      if (!uniqueFields.has(f.id)) uniqueFields.set(f.id, f)\n    })\n\n    return sortPriorityOrder\n      .map(id => uniqueFields.get(id))\n      .filter(Boolean) as typeof allFields\n  }, [categoryDimensions, stackDimensions, valueDimensions, sortPriorityOrder])\n\n\n  // 更新 sortPriorityOrder\n  useEffect(() => {\n    const allFields = [\n      ...categoryDimensions,\n      ...stackDimensions,\n      ...valueDimensions\n    ]\n\n    if (sortPriorityOrder.length === 0) {\n      const timeField = allFields.find(\n        f => f.name === 'timestamp' || f.fieldId === 'timestamp'\n      )\n\n      const otherFields = allFields.filter(f => f !== timeField)\n\n      const orderedFields = timeField ? [timeField, ...otherFields] : otherFields\n\n      setSortPriorityOrder(orderedFields.map(f => f.id))\n      return\n    }\n\n    const existingFieldIds = new Set(sortPriorityOrder)\n    const newFields = allFields.filter(f => !existingFieldIds.has(f.id))\n\n    if (newFields.length > 0) {\n      const newTimeField = newFields.find(\n        f => f.name === 'timestamp' || f.fieldId === 'timestamp'\n      )\n\n      const otherNewFields = newFields.filter(f => f !== newTimeField)\n\n      if (newTimeField) {\n        setSortPriorityOrder(prev => [newTimeField.id, ...prev])\n      }\n\n      if (otherNewFields.length > 0) {\n        setSortPriorityOrder(prev => [...prev, ...otherNewFields.map(f => f.id)])\n      }\n    }\n  }, [categoryDimensions, stackDimensions, valueDimensions])\n\n\n\n  const currentChartHasStack = useMemo(() => {\n    return isStackedChart(chartType)\n  }, [chartType])\n\n\n  // 图表类型切换\n  const handleChartTypeChange = useCallback((value: ChartType) => {\n    const isNewStackChart = isStackedChart(value)\n    const isCurrentStackChart = currentChartHasStack\n\n    setChartType(value)\n\n    // 从堆叠 → 非堆叠：清理 stack 维度\n    if (isCurrentStackChart && !isNewStackChart && stackDimensions.length > 0) {\n      const stackDim = stackDimensions[0]\n\n      if (categoryDimensions.length < 2) {\n        setCategoryDimensions(prev => [\n          ...prev,\n          {\n            ...stackDim,\n            id: `category_${Date.now()}`,\n          }\n        ])\n      }\n\n      setStackDimensions([])\n    }\n  }, [stackDimensions, categoryDimensions, currentChartHasStack])\n\n\n  // 拖拽相关方法\n  const handleDragOver = useCallback((e: React.DragEvent, section: 'category' | 'stack' | 'value') => {\n    e.preventDefault()\n    setDragOverSection(section)\n  }, [])\n\n  const handleDragLeave = useCallback(() => {\n    setDragOverSection(null)\n  }, [])\n\n  const handleDrop = useCallback((e: React.DragEvent, section: 'category' | 'stack' | 'value', isMetricCard) => {\n    e.preventDefault()\n    e.stopPropagation()\n\n    const dataStr = e.dataTransfer.getData('application/json')\n    if (!dataStr) return\n\n    try {\n      const data = JSON.parse(dataStr)\n\n      // 检查是否是已存在的维度移动（从其他区域拖过来的）\n      if (data.isExistingDimension && data.sourceSection) {\n        const sourceSection = data.sourceSection;\n        const fieldId = data.fieldId;\n\n        // 不允许同区域内移动\n        if (sourceSection === section) {\n          setDragOverSection(null);\n          return;\n        }\n\n        // 特殊处理：从类别维度拖到堆叠维度\n        if (sourceSection === 'category' && section === 'stack') {\n          // 检查堆叠维度是否已满\n          if (stackDimensions.length >= 1) {\n            toast({\n              description: t('useChartState.warn.maxStackDimension'),\n              variant: \"warning\",\n            });\n            setDragOverSection(null);\n            return;\n          }\n\n          // 从类别维度中查找要移动的维度\n          const dimensionToMoveIndex = categoryDimensions.findIndex(dim => dim.id === data.id || dim.fieldId === fieldId);\n          if (dimensionToMoveIndex === -1) {\n            setDragOverSection(null);\n            return;\n          }\n\n          const dimensionToMove = categoryDimensions[dimensionToMoveIndex];\n\n          // 从类别维度中移除\n          const updatedCategoryDimensions = categoryDimensions.filter((_, index) => index !== dimensionToMoveIndex);\n\n          // 添加到堆叠维度\n          const movedDimension = {\n            ...dimensionToMove,\n            id: `stack_${Date.now()}_${fieldId}`, // 生成新的ID\n          };\n\n          setCategoryDimensions(updatedCategoryDimensions);\n          setStackDimensions([movedDimension]);\n\n          setDragOverSection(null);\n          return;\n        }\n\n        // 特殊处理：从堆叠维度拖到类别维度\n        if (sourceSection === 'stack' && section === 'category') {\n          // 检查类别维度是否已满\n          if (categoryDimensions.length >= 2) {\n            toast({\n              description: t('useChartState.warn.maxCategoryDimensions'),\n              variant: \"warning\",\n            });\n            setDragOverSection(null);\n            return;\n          }\n\n          // 从堆叠维度中查找要移动的维度\n          const dimensionToMove = stackDimensions.find(dim => dim.id === data.id || dim.fieldId === fieldId);\n          if (!dimensionToMove) {\n            setDragOverSection(null);\n            return;\n          }\n\n          // 添加到类别维度\n          const movedDimension = {\n            ...dimensionToMove,\n            id: `category_${Date.now()}_${fieldId}`, // 生成新的ID\n          };\n\n          // 清空堆叠维度\n          setStackDimensions([]);\n          setCategoryDimensions(prev => [...prev, movedDimension]);\n\n          setDragOverSection(null);\n          return;\n        }\n      }\n\n      // 原有的新字段拖拽逻辑保持不变\n      const fieldType = data.fieldType || 'dimension'\n\n      // 转换section和fieldType为国际化文本\n      const sectionText = t(`useChartState.sections.${section}`)\n      const fieldTypeText = t(`useChartState.fieldTypes.${fieldType}`)\n\n      if (\n        (fieldType === 'metric' && (section === 'category' || section === 'stack')) ||\n        (fieldType === 'dimension' && section === 'value')\n      ) {\n        console.warn(`字段类型 ${fieldTypeText} 不能拖拽到 ${sectionText} 区域`)\n        if (!isMetricCard) {\n          toast({\n            description: t(\"componentConfigDrawer.toast.metricReached\"),\n            variant: \"warning\"\n          })\n        } else {\n          toast({\n            description: t('useChartState.warn.invalidFieldType', { fieldType: fieldTypeText, section: sectionText }),\n            variant: \"warning\",\n          })\n        }\n        setDragOverSection(null)\n        return\n      }\n\n      // 堆叠维度只能有一个\n      if (section === 'stack' && stackDimensions.length >= 1) {\n        console.warn('堆叠维度只能有一个，请先删除现有的堆叠维度')\n        toast({\n          description: t('useChartState.warn.maxStackDimension'),\n          variant: \"warning\",\n        })\n        setDragOverSection(null)\n        return\n      }\n\n      const STACKED_CHART_TYPES = new Set(['stacked-bar', 'stacked-horizontal-bar', 'stacked-line']);\n      const maxMetricCount = STACKED_CHART_TYPES.has(chartType) ? 3 : 1;\n\n      //指标维度只能有一个\n      if (section === 'value' && valueDimensions.length >= maxMetricCount) {\n        console.warn('指标维度只能有一个，请先删除现有的指标维度')\n        toast({\n          description: t('useChartState.warn.metricLimitReached'),\n          variant: \"warning\",\n        })\n        setDragOverSection(null)\n        return\n      }\n\n      const fieldId = data.id || data.name || `field_${Date.now()}`\n      const name = data.name || data.displayName || fieldId\n\n      let currentDimensions: any[] = []\n      if (section === 'category') currentDimensions = categoryDimensions\n      if (section === 'stack') currentDimensions = stackDimensions\n      if (section === 'value') currentDimensions = valueDimensions\n\n      const alreadyExists = currentDimensions.some(dim => dim.fieldId === fieldId)\n      if (alreadyExists) {\n        console.warn('该字段已存在')\n        toast({\n          description: t('useChartState.warn.fieldExists'),\n          variant: \"warning\",\n        })\n        setDragOverSection(null)\n        return\n      }\n\n      if (section === 'category' || section === 'stack') {\n        // 如果拖拽到分类维度，检查是否已在堆叠维度中存在\n        if (section === 'category') {\n          const existsInStack = stackDimensions.some(dim => dim.fieldId === fieldId)\n          if (existsInStack) {\n            console.warn('该字段已在堆叠维度中添加')\n            toast({\n              description: t(\"useChartState.warn.fieldExists\"),\n              variant: \"warning\"\n            })\n            setDragOverSection(null)\n            return\n          }\n        }\n\n        const otherCategories = categoryDimensions.filter(dim =>\n          section === 'stack' || dim.fieldId !== fieldId\n        )\n        if (otherCategories.some(dim => dim.fieldId === fieldId)) {\n          console.warn('该字段已在其他分类维度中添加')\n          toast({\n            description: t(\"useChartState.warn.fieldExists\"),\n            variant: \"warning\",\n          })\n          setDragOverSection(null)\n          return\n        }\n      }\n\n      const displayName = data.displayName || name\n      const originalName = data.name || name\n\n      const newDimension = {\n        id: `${section}_${Date.now()}`,\n        fieldId,\n        name,\n        displayName,\n        originalName,\n        sort: null,\n        sortPriority: 0,\n        timeGranularity: data.timeGranularity,\n        fieldType,\n        isDivide: data.isDivide,\n      }\n\n      if (section === 'category') {\n        if (categoryDimensions.length >= 2) {\n          console.warn('类别维度最多只能有 2 个')\n          toast({\n            description: t('useChartState.warn.maxCategoryDimensions'),\n            variant: \"warning\",\n          })\n          setDragOverSection(null)\n          return\n        }\n        setCategoryDimensions(prev => [...prev, newDimension])\n      } else if (section === 'stack') {\n        // 堆叠维度 - 特殊处理\n        setStackDimensions([newDimension])\n      } else if (section === 'value') {\n        setValueDimensions(prev => [...prev, newDimension])\n      }\n\n      setDragOverSection(null)\n    } catch (error) {\n      console.error('拖拽数据解析失败:', error)\n    }\n  }, [categoryDimensions, stackDimensions, valueDimensions, toast, t, chartType])\n\n  const handleDeleteDimension = useCallback((section: 'category' | 'stack' | 'value', dimensionId: string) => {\n    if (section === 'category') {\n      setCategoryDimensions(prev => prev.filter(d => d.id !== dimensionId))\n    } else if (section === 'stack') {\n      setStackDimensions(prev => prev.filter(d => d.id !== dimensionId))\n    } else if (section === 'value') {\n      setValueDimensions(prev => prev.filter(d => d.id !== dimensionId))\n    }\n  }, [])\n\n  const handleSortChange = useCallback((section: 'category' | 'stack' | 'value', dimensionId: string, sortValue: null | 'asc' | 'desc') => {\n    const updateDimensions = (prev: any[]) =>\n      prev.map(d => d.id === dimensionId ? { ...d, sort: sortValue } : d)\n\n    if (section === 'category') setCategoryDimensions(updateDimensions)\n    if (section === 'stack') setStackDimensions(updateDimensions)\n    if (section === 'value') setValueDimensions(updateDimensions)\n  }, [])\n\n  const handleDropSortPriority = useCallback((targetField: any) => {\n    if (!draggingId || draggingId === targetField.id) return\n\n    const sourceIndex = sortPriorityOrder.indexOf(draggingId)\n    const targetIndex = sortPriorityOrder.indexOf(targetField.id)\n\n    if (sourceIndex === -1 || targetIndex === -1) return\n\n    const newOrder = [...sortPriorityOrder]\n    const [moved] = newOrder.splice(sourceIndex, 1)\n    newOrder.splice(targetIndex, 0, moved)\n\n    setSortPriorityOrder(newOrder)\n    setDraggingId(null)\n  }, [draggingId, sortPriorityOrder])\n\n  const handleAddFilter = useCallback(() => {\n    setFilterGroup({\n      logic: 'and',\n      conditions: [{\n        id: generateUUID(6),\n        fieldId: '',\n        fieldCode: '',\n        fieldName: '',\n        fieldType: 'string',\n        operator: 'eq',\n        value: '',\n        filterType: 'conditional'\n      }]\n    })\n  }, [])\n\n  const handleDeleteFilter = useCallback(() => {\n    setFilterGroup({ logic: \"and\", conditions: [] });\n  }, [])\n\n  // 获取数据配置\n  const getDataConfig = useCallback((limitType: \"all\" | \"limit\", limitValue: string, timeFilter?: any): DataConfig => {\n    const dimensions = categoryDimensions.slice(0, 2).map(dim => ({\n      fieldId: dim.fieldId,\n      fieldName: dim.originalName,\n      fieldCode: dim.name,\n      displayName: dim.displayName,\n      sort: dim.sort,\n      timeGranularity: dim.timeGranularity || null\n    }))\n\n    const stackDimension = stackDimensions.length > 0 ? {\n      fieldId: stackDimensions[0].fieldId,\n      fieldName: stackDimensions[0].originalName,\n      fieldCode: stackDimensions[0].name,\n      displayName: stackDimensions[0].displayName,\n      sort: stackDimensions[0].sort,\n      timeGranularity: stackDimensions[0].timeGranularity || null\n    } : undefined\n\n    const metrics = valueDimensions.map(metric => {\n      let numberFormat;\n      if (metric.isDivide === \"divide\") {\n        console.log('检测到除法指标:', metric.displayName);\n        if (metric.numberFormat) {\n          if (metric.numberFormat.type === 'percent') {\n            numberFormat = metric.numberFormat;\n            console.log('已使用百分比格式:', numberFormat);\n          } else {\n            numberFormat = {\n              type: 'percent' as const,\n              decimalPlaces: metric.numberFormat.decimalPlaces || 2,\n              unit: undefined,\n              suffix: metric.numberFormat.suffix || '',\n              thousandSeparator: false\n            };\n          }\n        } else {\n          numberFormat = {\n            type: 'percent' as const,\n            decimalPlaces: 2,\n            unit: undefined,\n            suffix: '',\n            thousandSeparator: false\n          };\n        }\n      } else {\n        numberFormat = metric.numberFormat || {\n          type: 'number' as const,\n          decimalPlaces: 0,\n          unit: undefined,\n          suffix: undefined,\n          thousandSeparator: true\n        };\n      }\n\n      // console.log('最终 numberFormat:', numberFormat);\n\n      return {\n        fieldId: metric.fieldId,\n        fieldName: metric.originalName,\n        fieldCode: metric.name,\n        displayName: metric.displayName,\n        sort: metric.sort,\n        isVirtual: metric.isVirtual,\n        aggregation: metric.aggregation || 'sum',\n        isDivide: metric.isDivide,\n        formula: metric.isDivide === \"divide\" ? \"divide\" : undefined,\n        numberFormat: numberFormat\n      }\n    })\n    // 4. 构建字段顺序 - 按照 sortPriorityOrder 排序\n    const allFields = [\n      ...categoryDimensions.map(d => ({\n        ...d,\n        type: 'dimension' as const\n      })),\n      ...stackDimensions.map(d => ({\n        ...d,\n        type: 'stack_dimension' as const\n      })),\n      ...valueDimensions.map(m => ({\n        ...m,\n        type: 'metric' as const\n      }))\n    ]\n\n    // 按照 sortPriorityOrder 排序\n    const sortedFields = [...allFields].sort((a, b) => {\n      const indexA = sortPriorityOrder.indexOf(a.id)\n      const indexB = sortPriorityOrder.indexOf(b.id)\n\n      // 如果都在排序列表中，按照列表顺序排序\n      if (indexA !== -1 && indexB !== -1) {\n        return indexA - indexB\n      }\n\n      // 如果有一个不在列表中，不在列表的排在后面\n      if (indexA === -1 && indexB !== -1) return 1\n      if (indexA !== -1 && indexB === -1) return -1\n\n      // 都不在列表中，保持原有顺序\n      return 0\n    })\n\n    // 构建 fieldOrder\n    const fieldOrder = sortedFields.map(field => ({\n      fieldId: field.fieldId,\n      fieldType: field.type,\n      displayName: field.displayName,\n    }))\n\n    // 5. 构建筛选条件\n    const filters = filterGroup ? filterGroup.conditions.map((condition, index) => {\n      return {\n        id: condition.id || `filter_${Date.now()}_${index}`, // 确保有 fieldId\n        fieldId: condition.fieldId || '',\n        fieldName: condition.fieldName || '',\n        fieldType: condition.fieldType || 'string',\n        operator: condition.operator || 'eq',\n        value: condition.value || '',\n        filterType: condition.filterType || 'conditional'\n      }\n    }) : []\n\n    // console.log('生成数据配置:', {\n    //   dimensions,\n    //   stackDimension,\n    //   metrics,\n    //   fieldOrder,\n    //   filters,\n    //   hasStack: stackDimensions.length > 0\n    // })\n\n    return {\n      dimensions,\n      stackDimension,\n      metrics,\n      fieldOrder,\n      filters,\n      timeFilter,\n      resultLimit: {\n        limitType: limitType === \"limit\" ? \"limited\" as const : \"all\" as const,\n        ...(limitType === \"limit\" && { limit: Number(limitValue) })\n      },\n      filtersLogic: filterGroup?.logic || 'and',\n      isConfigured: true,\n    }\n  }, [categoryDimensions, stackDimensions, valueDimensions, filterGroup, sortPriorityOrder])\n\n  // 返回对象\n  return {\n    // 状态\n    chartType,\n    title,\n    styleConfig,\n    categoryDimensions,\n    stackDimensions,\n    valueDimensions,\n    dragOverSection,\n    filterGroup,\n    draggingId,\n    sortPriorityOrder,\n    sortPriorityFields,\n    currentChartHasStack,\n\n    // 设置器\n    setChartType,\n    setTitle,\n    setStyleConfig,\n    setCategoryDimensions,\n    setStackDimensions,\n    setValueDimensions,\n    setDragOverSection,\n    setFilterGroup,\n    setDraggingId,\n    setSortPriorityOrder,\n\n    // 方法\n    handleChartTypeChange,\n    handleDragOver,\n    handleDragLeave,\n    handleDrop,\n    handleDeleteDimension,\n    handleSortChange,\n    handleDropSortPriority,\n    handleAddFilter,\n    handleDeleteFilter,\n    getDataConfig\n  }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/dashboard/DashboardDetail.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { ButtonGroup } from \"@/components/bs-ui/button/group\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport Tip from \"@/components/bs-ui/tooltip/tip\"\nimport { locationContext } from \"@/contexts/locationContext\"\nimport { userContext } from \"@/contexts/userContext\"\nimport { CircleAlert } from \"lucide-react\"\nimport { useContext, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { DashboardStatus, usePublishDashboard } from \"../../hook\"\nimport { Dashboard } from \"../../types/dataConfig\"\nimport { EditorCanvas } from \"../editor/EditorCanvas\"\nimport { ExpandIcon } from \"@/components/bs-icons/expand\"\n\ninterface DashboardDetailProps {\n    dashboard: Dashboard | null\n    isLoading: boolean\n    isCollapsed: boolean\n    setIsCollapsed: (isCollapsed: boolean) => void\n    onRename: (id: string, newTitle: string) => void\n    onShare: (id: string) => void\n    onDefault: (id: string) => void\n    onEdit: (id: string) => void\n}\n\nexport function DashboardDetail({\n    dashboard,\n    isLoading,\n    isCollapsed,\n    setIsCollapsed,\n    onRename,\n    onDefault,\n    onShare,\n    onEdit\n}: DashboardDetailProps) {\n    const { t } = useTranslation(\"dashboard\")\n\n    const [isEditingTitle, setIsEditingTitle] = useState(false)\n    const [title, setTitle] = useState(dashboard?.title || \"\")\n    const inputRef = useRef<HTMLInputElement>(null)\n    const { appConfig } = useContext(locationContext)\n    const { user } = useContext(userContext);\n    const isAdmin = user.role === 'admin'\n    const { toast } = useToast()\n\n    useEffect(() => {\n        if (dashboard) {\n            setTitle(dashboard.title)\n        }\n    }, [dashboard])\n\n    useEffect(() => {\n        if (isEditingTitle && inputRef.current) {\n            inputRef.current.focus()\n            inputRef.current.select()\n        }\n    }, [isEditingTitle])\n\n    const handleDoubleClick = () => {\n        if (appConfig.isPro && dashboard.write) {\n            setIsEditingTitle(true)\n        }\n    }\n\n    const handleBlur = () => {\n        setIsEditingTitle(false)\n        const trimmedTitle = title.trim()\n\n        if (!trimmedTitle || !dashboard) {\n            return setTitle(dashboard?.title || \"\")\n            // return toast({\n            //     description: t('nameRequired'),\n            //     variant: \"error\",\n            // })\n        }\n\n        if (trimmedTitle.length > 200) {\n            setTitle(dashboard.title)\n            return toast({\n                description: t('charLimit200'),\n                variant: \"error\",\n            })\n        }\n\n        if (trimmedTitle !== dashboard.title) {\n            onRename(dashboard.id, trimmedTitle)\n        }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n        if (e.key === \"Enter\") {\n            inputRef.current?.blur()\n        }\n        if (e.key === \"Escape\") {\n            setTitle(dashboard?.title || \"\")\n            setIsEditingTitle(false)\n        }\n    }\n\n    const handleFullscreen = () => {\n        const element = document.getElementById('view-panne');\n        element.requestFullscreen();\n    }\n\n\n    const { publish } = usePublishDashboard()\n\n    if (!dashboard) {\n        return <div className=\"flex-1 flex items-center justify-center text-muted-foreground\">{t('selectADashboard')}</div>\n    }\n    const isPublished = dashboard.status === DashboardStatus.Published\n    console.log('dashboard :>> ', dashboard);\n\n    return (\n        <div className=\"flex-1 flex flex-col h-full min-w-0\">\n            <div className=\"border-b px-4 py-3 h-[52px] flex items-center justify-between\">\n                <div className=\"flex items-center gap-4 flex-1 min-w-0\">\n                    <div className=\"flex-1 min-w-0 flex items-center\">\n                        {isCollapsed && <Tip content={t('expandList')}>\n                            <Button\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className={\"hover:text-primary bg-background mr-4\"}\n                                onClick={() => setIsCollapsed(!isCollapsed)}\n                            >\n                                <ExpandIcon className=\"h-4 w-4 hover:text-primary\" />\n                            </Button>\n                        </Tip>}\n                        {isEditingTitle ? (\n                            <Input\n                                ref={inputRef}\n                                value={title}\n                                onChange={(e) => setTitle(e.target.value)}\n                                onBlur={handleBlur}\n                                onKeyDown={handleKeyDown}\n                                boxClassName=\"w-auto\"\n                                className=\"max-w-96 text-base font-semibold h-6 px-2 py-1 border-primary\"\n                            />\n                        ) : (\n                            <h1\n                                className=\"max-w-96 text-base font-semibold truncate cursor-pointer hover:text-primary transition-colors\"\n                                title={dashboard.title}\n                                onDoubleClick={handleDoubleClick}\n                            >\n                                {dashboard.title}\n                            </h1>\n                        )}\n                        {appConfig.isPro && <>\n                            <p className=\"text-sm ml-4 mr-2\">\n                                <span className=\"text-muted-foreground\">{t('createdBy')}: </span>\n                                {dashboard.user_name}</p>\n                            <Tip\n                                styleClasses=\"bg-white text-gary-400 border\"\n                                content={\n                                    <div >\n                                        <p className=\"text-sm text-gray-500\">{t('createdBy')}: </p>\n                                        <p className=\"text-sm mb-1.5\">{dashboard.user_name}</p>\n                                        <p className=\"text-sm text-gray-500\">{t('createTime')}: </p>\n                                        <p className=\"text-sm mb-1.5\">{dashboard.create_time.replace('T', ' ')}</p>\n                                        <p className=\"text-sm text-gray-500\">{t('lastUpdateTime')}: </p>\n                                        <p className=\"text-sm mb-1.5\">{dashboard.update_time.replace('T', ' ')}</p>\n                                    </div>\n                                }\n                                side={'bottom'}>\n                                <CircleAlert color=\"#999\" size={16} className=\"cursor-pointer rotate-180\" />\n                            </Tip>\n                        </>}\n                    </div>\n                </div>\n\n                <div className=\"flex items-center gap-2\">\n                    <ButtonGroup>\n                        <Button variant=\"outline\" size=\"sm\" onClick={handleFullscreen}>{t('fullScreen')}</Button>\n                        {appConfig.isPro && dashboard.write && <Button variant=\"outline\" size=\"sm\" onClick={() => publish(dashboard.id, isPublished)}>{isPublished ? t('unpublish') : t('publish')}</Button>}\n                        <Button variant=\"outline\" size=\"sm\" onClick={() => onShare(dashboard.id)}>{t('share')}</Button>\n                    </ButtonGroup>\n\n                    {appConfig.isPro && <Button\n                        variant=\"outline\"\n                        className=\"disabled:pointer-events-auto\"\n                        disabled={dashboard.is_default}\n                        size=\"sm\"\n                        onClick={() => onDefault(dashboard.id)}>\n                        {dashboard.is_default ? t('alreadyDefault') : t('setAsDefault')}\n                    </Button>}\n\n                    {appConfig.isPro && dashboard.write &&\n                        <Tip content={isPublished ? t('editAfterUnpublish') : \"\"} side={\"top\"} styleClasses=\"-translate-x-12\" >\n                            <Button\n                                className=\"disabled:pointer-events-auto\"\n                                disabled={isPublished}\n                                size=\"sm\"\n                                onClick={() => onEdit(dashboard.id)}>\n                                {t('editDashboard')}\n                            </Button>\n                        </Tip>\n                    }\n                </div>\n            </div>\n\n            <div id=\"view-panne\" className=\"flex-1 overflow-auto\">\n                <EditorCanvas isPreviewMode isLoading={isLoading} />\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/dashboard/DashboardListItem.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/bs-ui/dropdownMenu\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { locationContext } from \"@/contexts/locationContext\"\nimport { cn } from \"@/utils\"\nimport { MoreHorizontal } from \"lucide-react\"\nimport { useContext, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { Dashboard } from \"../../types/dataConfig\"\n\n\ninterface DashboardListItemProps {\n    dashboard: Dashboard\n    selected: boolean\n    onSelect: () => void\n    onRename: (id: string, newTitle: string) => void\n    onDuplicate: (dashboard: Dashboard) => void\n    onDefault: (id: string) => void\n    onShare: (id: string) => void\n    onDelete: (id: string) => void\n}\n\nexport function DashboardListItem({\n    dashboard,\n    selected,\n    onSelect,\n    onRename,\n    onDuplicate,\n    onShare,\n    onDefault,\n    onDelete,\n}: DashboardListItemProps) {\n    const { t } = useTranslation(\"dashboard\")\n\n    const [isEditing, setIsEditing] = useState(false)\n    const inputRef = useRef<HTMLInputElement>(null)\n    const [title, setTitle] = useState('')\n    const { toast } = useToast()\n    const { appConfig } = useContext(locationContext)\n\n    useEffect(() => {\n        setTitle(dashboard.title)\n    }, [dashboard])\n\n    useEffect(() => {\n        if (isEditing && inputRef.current) {\n            inputRef.current.focus()\n            inputRef.current.select()\n        }\n    }, [isEditing])\n\n    const handleDoubleClick = () => {\n        !dashboard.mange && setIsEditing(true)\n    }\n\n    const handleBlur = (e) => {\n        setIsEditing(false)\n        let trimmedTitle = title.trim()\n\n        if (!trimmedTitle) {\n            // trimmedTitle = t('untitledDashboard')\n            return setTitle(dashboard.title)\n        }\n\n        if (trimmedTitle.length > 200) {\n            setTitle(dashboard.title)\n            toast({\n                description: t('charLimit200'),\n                variant: \"error\",\n            })\n            return\n        }\n\n        if (trimmedTitle !== dashboard.title) {\n            onRename(dashboard.id, trimmedTitle)\n        }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n        if (e.key === \"Enter\") {\n            inputRef.current?.blur()\n        }\n        if (e.key === \"Escape\") {\n            setTitle(dashboard.title)\n            setIsEditing(false)\n        }\n    }\n\n    return (\n        <div\n            className={cn(\n                \"group flex items-center justify-between px-2 py-[6px] rounded-lg cursor-pointer transition-colors\",\n                selected ? \"bg-[#002FFF]/10\" : \"hover:bg-[#f5f2f2f2]\",\n            )}\n            onClick={onSelect}\n        >\n            <div className=\"flex-1 min-w-0 mr-2\">\n                {isEditing ? (\n                    <Input\n                        ref={inputRef}\n                        value={title}\n                        onChange={(e) => setTitle(e.target.value)}\n                        autoFocus={isEditing}\n                        onBlur={handleBlur}\n                        onKeyDown={handleKeyDown}\n                        className=\"h-5 px-2 border-primary\"\n                        onClick={(e) => e.stopPropagation()}\n                    />\n                ) : (\n                    <div className={cn(\"truncate text-sm\", selected && \"text-primary\")} title={dashboard.title} onDoubleClick={handleDoubleClick}>\n                        {dashboard.title}\n                    </div>\n                )}\n            </div>\n            {dashboard.is_default && <Badge variant=\"outline\" className=\"border border-primary rounded-sm py-0 px-1 text-primary scale-75\">{t('default')}</Badge>}\n\n            <DropdownMenu>\n                <DropdownMenuTrigger asChild onClick={(e) => e.stopPropagation()}>\n                    <Button variant=\"ghost\" size=\"icon\" className={`h-5 w-0 ${isEditing ? \"\" : \"group-hover:w-5\"}`}>\n                        <MoreHorizontal className=\"h-4 w-4\" />\n                    </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                    {dashboard.write && appConfig.isPro && <DropdownMenuItem\n                        onClick={() => setTimeout(() => {\n                            setIsEditing(true)\n                        }, 300)} // hold close dropdownmenu\n                    >{t('rename')}</DropdownMenuItem>}\n                    {appConfig.isPro && <DropdownMenuItem disabled={dashboard.is_default} onClick={() => onDefault(dashboard.id)}>{dashboard.is_default ? t('alreadyDefault') : t('setAsDefault')}</DropdownMenuItem>}\n                    {dashboard.write && appConfig.isPro && <DropdownMenuItem onClick={() => onDuplicate(dashboard)}>{t('duplicate')}</DropdownMenuItem>}\n                    <DropdownMenuItem onClick={() => onShare(dashboard.id)}>{t('share')}</DropdownMenuItem>\n                    {dashboard.write && appConfig.isPro && <DropdownMenuItem className=\"text-destructive focus:text-destructive\" onClick={() => onDelete(dashboard.id)}>\n                        {t('delete')}\n                    </DropdownMenuItem>}\n                </DropdownMenuContent>\n            </DropdownMenu>\n        </div >\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/dashboard/DashboardSidebar.tsx",
    "content": "\"use client\"\n\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { SearchInput } from \"@/components/bs-ui/input\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport Tip from \"@/components/bs-ui/tooltip/tip\"\nimport { userContext } from \"@/contexts/userContext\"\nimport { copyDashboard, createDashboard, deleteDashboard } from \"@/controllers/API/dashboard\"\nimport { useMiniDebounce } from \"@/util/hook\"\nimport { generateUniqueName } from \"@/util/utils\"\nimport { cn } from \"@/utils\"\nimport { ListIndentDecrease, ListIndentIncrease, SquarePlusIcon } from \"lucide-react\"\nimport type React from \"react\"\nimport { useContext, useMemo, useState } from \"react\"\nimport { useMutation, useQueryClient } from \"react-query\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DashboardsQueryKey } from \"../../hook\"\nimport { Dashboard } from \"../../types/dataConfig\"\nimport { DashboardListItem } from \"./DashboardListItem\"\nimport { useTranslation } from \"react-i18next\"\nimport { ExpandIcon } from \"@/components/bs-icons/expand\"\n\ninterface DashboardSidebarProps {\n    dashboards: Dashboard[]\n    selectedId: string | null\n    isCollapsed: boolean\n    setIsCollapsed: (isCollapsed: boolean) => void\n    onSelect: (id: string) => void\n    onRename: (id: string, newTitle: string) => void\n    onDefault: (id: string) => void\n    onShare: (id: string) => void\n}\n\nexport function DashboardSidebar({\n    dashboards,\n    selectedId,\n    isCollapsed,\n    setIsCollapsed,\n    onSelect,\n    onRename,\n    onDefault,\n    onShare\n}: DashboardSidebarProps) {\n    const { t } = useTranslation(\"dashboard\")\n\n    const [searchQuery, setSearchQuery] = useState(\"\")\n    const { user } = useContext(userContext);\n\n    const canCreate = useMemo(() => {\n        return user.web_menu?.includes('create_dashboard') || user.role === 'admin'\n    }, [user])\n\n    const filteredDashboards = useMemo(() => {\n        if (!searchQuery.trim()) return dashboards\n\n        return dashboards.filter((dashboard) => dashboard.title.toLowerCase().includes(searchQuery.toLowerCase()))\n    }, [dashboards, searchQuery])\n\n    const handleSearch = useMiniDebounce((e: React.ChangeEvent<HTMLInputElement>) => {\n        setSearchQuery(e.target.value)\n    }, 300)\n\n    const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n        if (e.key === \"Enter\") {\n            // Search is already triggered by debounce\n        }\n    }\n    const navigator = useNavigate()\n    const { toast } = useToast()\n    const queryClient = useQueryClient()\n    const createMutation = useMutation({\n        mutationFn: createDashboard,\n        onSuccess: (res) => {\n            onSelect(res.id)\n            queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            navigator(`/dashboard/${res.id}`)\n        },\n        onError: (msg: string) => {\n            toast({\n                description: msg,\n                variant: \"error\",\n            })\n        },\n    })\n    const handleCreate = () => {\n        if (dashboards.length >= 20) {\n            toast({\n                description: t('maxLimitReached', { count: 20 }),\n                variant: \"error\",\n            })\n            return\n        }\n\n        createMutation.mutate(generateUniqueName(dashboards, 'title', t('untitledDashboard'), '(x)'))\n    }\n\n\n    const duplicateMutation = useMutation({\n        mutationFn: copyDashboard,\n        onSuccess: (newDashboard) => {\n            queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            onSelect(newDashboard.id)\n            // jump to new dashboard\n            navigator(`/dashboard/${newDashboard.id}`)\n        },\n        onError: () => {\n            toast({\n                description: t('copyFailed'),\n                variant: \"error\",\n            })\n        },\n    })\n    const handleDuplicate = (dashboard: Dashboard) => {\n        if (dashboards.length >= 20) {\n            toast({\n                description: t('maxLimitReached', { count: 20 }),\n                variant: \"error\",\n            })\n            return\n        }\n\n        const newTitle = generateUniqueName(dashboards, 'title', t('dashboardCopyName', { title: dashboard.title }), '(x)')\n        if (newTitle.length > 200) {\n            return toast({\n                description: t('charLimit200b'),\n                variant: \"error\",\n            })\n        }\n\n        duplicateMutation.mutate({ id: dashboard.id, title: newTitle })\n    }\n\n\n\n    const deleteMutation = useMutation({\n        mutationFn: deleteDashboard,\n        onSuccess: () => {\n            queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            if (selectedId && dashboards.length > 1) {\n                const index = dashboards.findIndex((d) => d.id === selectedId)\n                if (index !== -1) {\n                    const nextDashboard = dashboards[index + 1] || dashboards[index - 1]\n                    onSelect(nextDashboard?.id || null)\n                }\n            } else {\n                onSelect(null)\n            }\n        },\n        onError: () => {\n            toast({\n                description: \"delete error\",\n                variant: \"error\",\n            })\n        },\n    })\n    const handleDelete = (id: string) => {\n        const dashboard = dashboards.find((d) => d.id === id)\n        if (!dashboard) return\n\n        bsConfirm({\n            desc: t('confirmDeleteDashboard', { title: dashboard.title }),\n            okTxt: t('delete'),\n            onOk(next) {\n                deleteMutation.mutate(id)\n                next()\n            },\n        })\n    }\n\n    return (\n        <div\n            className={cn(\n                \"relative h-full bg-background transition-all duration-300 rounded-tl-md\",\n                isCollapsed ? \"w-0\" : \"w-44 border-r\",\n            )}\n        >\n            {\n                !isCollapsed && <div className=\"header relative flex items-center justify-between h-[52px] px-2 pr-11 border-b\">\n                    <p className=\"text-base font-bold\">{t('dashboardList')}</p>\n                    {\n                        canCreate && <Tip content={t('addDashboard')} >\n                            <Button variant=\"ghost\" size=\"icon\" onClick={handleCreate}><SquarePlusIcon size={16} /></Button>\n                        </Tip>\n                    }\n                </div>\n            }\n            <Tip content={t('collapseList')}>\n                {\n                    !isCollapsed && <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        className={\"absolute top-2 z-10 hover:text-primary bg-background right-2\"}\n                        onClick={() => setIsCollapsed(!isCollapsed)}\n                    >\n                        <ExpandIcon className=\"h-4 w-4 rotate-180\" />\n                    </Button>\n                }\n            </Tip>\n\n\n            {!isCollapsed && (\n                <div className=\"flex flex-col p-2 gap-2\">\n                    <div className=\"relative\">\n                        <SearchInput\n                            placeholder={t('system.boardName', { ns: 'bs' })}\n                            value={searchQuery}\n                            onChange={handleSearch}\n                            onKeyDown={handleKeyDown}\n                        />\n                    </div>\n\n                    <div className=\"overflow-y-auto space-y-2 h-[calc(100vh-174px)]\">\n                        {filteredDashboards.length === 0 ? (\n                            <div className=\"text-center text-muted-foreground text-sm py-8\">\n                                {searchQuery ? t('noMatchingDashboards') : t('noDashboards')}\n                            </div>\n                        ) : (\n                            filteredDashboards.map((dashboard) => (\n                                <DashboardListItem\n                                    key={dashboard.id}\n                                    dashboard={dashboard}\n                                    selected={selectedId === dashboard.id}\n                                    onSelect={() => onSelect(dashboard.id)}\n                                    onRename={onRename}\n                                    onDuplicate={handleDuplicate}\n                                    onDefault={onDefault}\n                                    onShare={onShare}\n                                    onDelete={handleDelete}\n                                />\n                            ))\n                        )}\n                    </div>\n                </div>\n            )}\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/ComponentPicker.tsx",
    "content": "import { Popover, PopoverContent, PopoverTrigger } from '@/components/bs-ui/popover';\nimport { cn } from '@/utils';\nimport React, { memo, useState } from 'react';\nimport { ChartType } from '../../types/dataConfig';\nimport { useTranslation } from 'react-i18next';\n\nexport const ChartGroupItems = [\n    {\n        label: 'barChart',\n        data: [\n            { type: ChartType.Bar, label: 'basicBarChart' },\n            { type: ChartType.StackedBar, label: 'stackedBarChart' },\n            { type: ChartType.GroupedBar, label: 'groupedBarChart' }\n        ]\n    },\n    {\n        label: 'horizontalBarChart',\n        data: [\n            { type: ChartType.HorizontalBar, label: 'basicHorizontalBarChart' },\n            { type: ChartType.StackedHorizontalBar, label: 'stackedHorizontalBarChart' },\n            { type: ChartType.GroupedHorizontalBar, label: 'groupedHorizontalBarChart' }\n        ]\n    },\n    {\n        label: 'lineChart',\n        data: [\n            { type: ChartType.Line, label: 'basicLineChart' },\n            // { type: ChartType.StackedLineOld, label: 'stackedLineChart' },\n            { type: ChartType.StackedLine, label: 'multipleLineChart' },\n            { type: ChartType.Area, label: 'areaChart' },\n            { type: ChartType.StackedArea, label: 'stackedAreaChart' }\n        ]\n    },\n    {\n        label: 'pieChart',\n        data: [\n            { type: ChartType.Pie, label: 'pieChart' },\n            { type: ChartType.Donut, label: 'donutChart' }\n        ]\n    },\n    {\n        label: 'others',\n        data: [\n            { type: ChartType.Metric, label: 'metricCard' }\n        ]\n    }\n];\nexport const ChartItems = ChartGroupItems.flatMap(item => item.data);\n\n// 定义数据项结构\nexport interface PickerItem {\n    type: string;\n    label: string;\n}\n\ninterface ComponentPickerProps {\n    onSelect: (data: { title: string, type: ChartType }) => void;\n    children: React.ReactNode;\n    maxHeight?: number;\n    className?: string;\n}\n\nconst ComponentPicker = ({ children, className, onSelect, maxHeight = 500 }: ComponentPickerProps) => {\n    const { t } = useTranslation(\"dashboard\")\n    const [open, setOpen] = useState(false);\n\n    const handleItemClick = (item) => {\n        onSelect({ ...item, title: item.type === ChartType.Metric ? '' : t(`chart.${item.label}`) });\n        setOpen(false);\n    };\n\n    const ItemGrid = ({ list }: { list: PickerItem[] }) => (\n        <div className=\"flex flex-wrap gap-4\">\n            {list.map((item) => (\n                <div\n                    key={item.type}\n                    onClick={() => handleItemClick(item)}\n                    className={`flex flex-col items-center group gap-2 outline-none cursor-pointer ${item.type === ChartType.StackedLine && 'mr-2'}`}\n                >\n                    <div className=\"w-[88px] min-h-[86px] flex flex-col items-center justify-center border rounded-md group-hover:bg-blue-50 transition-colors group-hover:border-primary\">\n                        <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/${item.type}.png`} className=\"w-8 h-8 mb-2\" />\n                        <span className=\"text-[12px] text-gray-600 text-center\">\n                            {t(`chart.${item.label}`)}\n                        </span>\n                    </div>\n                </div>\n            ))}\n        </div>\n    );\n\n    return (\n        <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger asChild>\n                {children}\n            </PopoverTrigger>\n            <PopoverContent\n                align=\"start\"\n                className={cn(\"w-[342px] p-4 shadow-xl\", className)}\n                style={{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }}\n            >\n                <div className=\"space-y-2\">\n                    {\n                        ChartGroupItems.map((item, index) => (\n                            <div key={index}>\n                                <h4 className=\"text-sm font-medium mb-2 px-1\">{t(`chart.${item.label}`)}</h4>\n                                <ItemGrid list={item.data} />\n                            </div>\n                        ))\n                    }\n                </div>\n            </PopoverContent>\n        </Popover>\n    );\n};\n\nexport default memo(ComponentPicker);"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/ComponentWrapper.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from \"@/components/bs-ui/dropdownMenu\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useComponentEditorStore } from \"@/store/dashboardStore\"\nimport { Copy, Edit3, GripHorizontalIcon, MoreHorizontal, MoreVerticalIcon, Trash2 } from \"lucide-react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\nimport { ChartType, Dashboard, DashboardComponent } from \"../../types/dataConfig\"\nimport { ChartContainer } from \"../charts/ChartContainer\"\nimport { QueryFilter } from \"../charts/QueryFilter\"\nimport \"./index.css\"\nimport { cn } from \"@/utils\"\nimport { useTranslation } from \"react-i18next\"\nimport Tip from \"@/components/bs-ui/tooltip/tip\"\n\ninterface ComponentWrapperProps {\n    component: DashboardComponent\n    isPreviewMode: boolean\n    dashboards: Dashboard[]\n    /** When it is true, the dark selector can take effect, resolving the conflict between the system and canvas themes  */\n    isDark: boolean\n    onDuplicate: (component: DashboardComponent) => void\n    onCopyTo: (component: DashboardComponent, targetDashboardId: string) => void\n    onDelete: (componentId: string) => void\n}\n\n// 组件包装器，用于处理选中状态\nexport const ComponentWrapper = memo(({\n    dashboards, component, isPreviewMode, isDark,\n    onDuplicate, onCopyTo, onDelete\n}: ComponentWrapperProps) => {\n    const { t } = useTranslation(\"dashboard\")\n\n    const [isHovered, setIsHovered] = useState(false)\n    const [isEditing, setIsEditing] = useState(false)\n    const inputRef = useRef<HTMLInputElement>(null)\n    const { toast } = useToast()\n    const [title, setTitle] = useState('')\n    const { hasChange, copyFromDashboard, editingComponent, updateEditingComponent } = useComponentEditorStore();\n    const isSelected = editingComponent?.id === component.id\n    const componentData = isSelected ? editingComponent : component\n\n    useEffect(() => {\n        console.log('componentData :>> ', componentData);\n        setTitle(componentData.title)\n    }, [editingComponent])\n\n    useEffect(() => {\n        if (isEditing && inputRef.current) {\n            inputRef.current.focus()\n            inputRef.current.select()\n        }\n    }, [isEditing])\n\n    const handleClick = (e?: React.MouseEvent) => {\n        e?.stopPropagation()\n        if (isPreviewMode) return\n        if (editingComponent?.id === component.id) return\n        copyFromDashboard(component.id)\n    }\n\n    const handleRenameBlur = () => {\n        setIsEditing(false)\n        const trimmedTitle = title.trim()\n\n        if (!trimmedTitle) {\n            setTitle(component.title)\n            // toast({\n            //     description: t('nameRequired'),\n            //     variant: \"error\",\n            // })\n            return\n        }\n\n        if (trimmedTitle.length < 1 || trimmedTitle.length > 200) {\n            setTitle(component.title)\n            toast({\n                description: t('charLimit200'),\n                variant: \"error\",\n            })\n            return\n        }\n\n        if (trimmedTitle !== component.title) {\n            setTitle(trimmedTitle)\n            // onRename(component.id, trimmedTitle)\n            updateEditingComponent({ title: trimmedTitle })\n        }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n        if (e.key === \"Enter\") {\n            inputRef.current?.blur()\n        }\n        if (e.key === \"Escape\") {\n            // setTitle(component.title)\n            setIsEditing(false)\n        }\n    }\n\n    const createTitleStyle = (config) => {\n        const defaultConfig = {\n            titleFontSize: 16,\n            titleColor: \"\",\n            titleAlign: \"left\",\n            titleBold: false,\n            titleItalic: false,\n            titleUnderline: false,\n            titleStrikethrough: false,\n            ...config  // 用户配置覆盖默认值\n        };\n\n        return {\n            fontSize: `${defaultConfig.titleFontSize}px`,\n            color: defaultConfig.titleColor,\n            textAlign: defaultConfig.titleAlign,\n            fontWeight: defaultConfig.titleBold ? 'bold' : 'normal',\n            fontStyle: defaultConfig.titleItalic ? 'italic' : 'normal',\n            textDecoration: [\n                defaultConfig.titleUnderline ? 'underline' : '',\n                defaultConfig.titleStrikethrough ? 'line-through' : ''\n            ].filter(Boolean).join(' ') || 'none',\n            // 确保span能够应用text-align（如果需要）\n            display: 'inline-block',\n            maxWidth: '85%',\n            lineHeight: 1,\n            // width: '100%'\n        };\n    };\n\n    return (\n        <div\n            id={component.id}\n            className={cn(`relative w-full h-full rounded-md overflow-visible transition-all border ${!isPreviewMode && isSelected ? 'component-select border border-primary' : ''\n                }`,\n                !componentData.style_config.bgColor && isDark && 'dark:bg-gray-900',\n                !componentData.style_config.bgColor && 'bg-background',\n                !isPreviewMode && 'hover:border-primary hover:shadow-md'\n            )}\n            onClick={handleClick}\n            onMouseEnter={() => setIsHovered(true)}\n            onMouseLeave={() => setIsHovered(false)}\n            style={{\n                cursor: isPreviewMode ? 'default' : 'grab',\n                backgroundColor: componentData.style_config.bgColor,\n            }}\n        >\n            {/* More button - top right corner */}\n            {!isPreviewMode && (isSelected || isHovered) && (\n                <div className=\"absolute top-2 right-2 z-10\">\n                    <DropdownMenu onOpenChange={(b) => b && handleClick()}>\n                        <DropdownMenuTrigger asChild>\n                            <Button\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"h-6 w-6 bg-background/80 backdrop-blur-sm border border-border shadow-sm hover:bg-accent dark:border-gray-500 dark:text-gray-500\"\n                            >\n                                <MoreVerticalIcon className=\"h-4 w-4\" />\n                            </Button>\n                        </DropdownMenuTrigger>\n                        <DropdownMenuContent align=\"end\" className={isDark && 'dark border-gray-700'}>\n                            {ChartType.Query === component.type ? (\n                                // Query component: only duplicate and delete\n                                <>\n                                    <DropdownMenuItem onClick={(e) => {\n                                        e.stopPropagation()\n                                        onDuplicate(componentData)\n                                    }}>\n                                        <Copy className=\"h-4 w-4 mr-2\" />\n                                        {t('duplicate')}\n                                    </DropdownMenuItem>\n                                    <DropdownMenuItem\n                                        variant=\"destructive\"\n                                        onClick={(e) => {\n                                            e.stopPropagation()\n                                            onDelete(component.id)\n                                        }}\n                                    >\n                                        <Trash2 className=\"h-4 w-4 mr-2\" />\n                                        {t('delete')}\n                                    </DropdownMenuItem>\n                                </>\n                            ) : (\n                                // Other components: full menu\n                                <>\n                                    {\n                                        ChartType.Metric !== component.type && <DropdownMenuItem onClick={(e) => {\n                                            e.stopPropagation()\n                                            setIsEditing(true)\n                                        }}>\n                                            <Edit3 className=\"h-4 w-4 mr-2\" />\n                                            {t('rename')}\n                                        </DropdownMenuItem>\n                                    }\n                                    <DropdownMenuItem onClick={(e) => {\n                                        e.stopPropagation()\n                                        onDuplicate(componentData)\n                                    }}>\n                                        <Copy className=\"h-4 w-4 mr-2\" />\n                                        {t('duplicate')}\n                                    </DropdownMenuItem>\n                                    <DropdownMenuSub>\n                                        <DropdownMenuSubTrigger onClick={(e) => e.stopPropagation()}>\n                                            <Copy className=\"h-4 w-4 mr-2\" />\n                                            {t('copyTo')}\n                                        </DropdownMenuSubTrigger>\n                                        <DropdownMenuSubContent onClick={(e) => e.stopPropagation()}>\n                                            {dashboards.length === 0 ? (\n                                                <div className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t('noOtherDashboards')}</div>\n                                            ) : (\n                                                dashboards\n                                                    .filter(d => d.id !== component.dashboard_id && d.status === 'draft' && d.write)\n                                                    .map(dashboard => (\n                                                        <DropdownMenuItem\n                                                            key={dashboard.id}\n                                                            onClick={(e) => {\n                                                                e.stopPropagation()\n                                                                onCopyTo(componentData, dashboard.id)\n                                                            }}\n                                                        >\n                                                            <Tip content={dashboard.title} styleClasses=\"max-w-60 max-h-60 overflow-auto bg-black no-scrollbar\">\n                                                                <div className=\"max-w-60 truncate\">{dashboard.title}</div>\n                                                            </Tip>\n                                                        </DropdownMenuItem>\n                                                    ))\n                                            )}\n                                        </DropdownMenuSubContent>\n                                    </DropdownMenuSub>\n                                    <DropdownMenuItem\n                                        variant=\"destructive\"\n                                        onClick={(e) => {\n                                            e.stopPropagation()\n                                            onDelete(component.id)\n                                        }}\n                                    >\n                                        <Trash2 className=\"h-4 w-4 mr-2\" />\n                                        {t('delete')}\n                                    </DropdownMenuItem>\n                                </>\n                            )}\n                        </DropdownMenuContent>\n                    </DropdownMenu>\n                </div>\n            )}\n\n            <div className=\"w-full h-full p-2\">\n                {/* Component title with rename ability - hidden for query type */}\n                {!['query', 'metric'].includes(componentData.type) && (\n                    <div className=\"group mb-2 relative\">\n                        {isEditing ? (\n                            <Input\n                                ref={inputRef}\n                                value={title}\n                                onChange={(e) => setTitle(e.target.value)}\n                                onBlur={handleRenameBlur}\n                                onKeyDown={handleKeyDown}\n                                className=\"max-w-40 h-5 px-2 text-sm font-medium border-primary\"\n                                onClick={(e) => e.stopPropagation()}\n                            />\n                        ) : (\n                            <h3\n                                className={cn(\"text-sm font-medium truncate text-foreground\",\n                                    isDark && \"dark:text-gray-400\"\n                                )}\n                                style={{ textAlign: componentData.style_config?.titleAlign }}\n                                onDoubleClick={() => setIsEditing(true)}>\n                                <span className=\"no-drag cursor-pointer truncate\" style={createTitleStyle(componentData.style_config)}>{title}</span>\n                            </h3>\n                        )}\n                        {!isPreviewMode && <GripHorizontalIcon\n                            className={cn(\n                                \"absolute -top-1 left-1/2 -translate-x-1/2 text-gray-400 transition-opacity\",\n                                \"opacity-0\",\n                                \"group-hover:opacity-100\",\n                                \"group-has-[.no-drag:hover]:opacity-0\"\n                            )}\n                            size={16}\n                        />}\n                    </div>\n                )}\n\n                {/* Component content */}\n                <div\n                    className={['query', 'metric'].includes(componentData.type) ? '' : ` no-drag cursor-default`}\n                    style={{\n                        height: ['query', 'metric'].includes(componentData.type) ? '100%' : `calc(100% - ${(componentData.style_config?.titleFontSize || 0) + 10}px)`\n                    }}\n                >\n                    {componentData.type === 'query' ? (\n                        <QueryFilter\n                            isDark={isDark}\n                            component={componentData}\n                            isPreviewMode={isPreviewMode}\n                            hasChanged={hasChange}\n                        />\n                    ) : (\n                        <ChartContainer isDark={isDark} component={componentData} isPreviewMode={isPreviewMode} />\n                    )}\n                </div>\n            </div>\n        </div>\n    )\n});\n\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/EditorCanvas.tsx",
    "content": "\"use client\"\n\nimport { LoadingIcon } from \"@/components/bs-icons/loading\"\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { copyComponentTo, getDashboards } from \"@/controllers/API/dashboard\"\nimport { useComponentEditorStore, useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { cn } from \"@/utils\"\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport ReactGridLayout, { Layout, verticalCompactor } from \"react-grid-layout\"\nimport \"react-grid-layout/css/styles.css\"\nimport { useTranslation } from \"react-i18next\"\nimport { useMutation, useQuery, useQueryClient } from \"react-query\"\nimport \"react-resizable/css/styles.css\"\nimport { DashboardsQueryKey } from \"../../hook\"\nimport { DashboardComponent } from \"../../types/dataConfig\"\nimport { ComponentConfigDrawer } from \"../config/ComponentConfigDrawer\"\nimport { ComponentWrapper } from \"./ComponentWrapper\"\nimport Home from \"./Home\"\nimport \"./index.css\"\n\ninterface EditorCanvasProps {\n    isPreviewMode?: boolean\n    isLoading: boolean\n}\n\nexport function EditorCanvas({ isLoading, isPreviewMode }: EditorCanvasProps) {\n    const { width, containerRef, mounted } = useContainerWidth()\n    const {\n        currentDashboard,\n        setCurrentDashboard,\n        layouts,\n        setLayouts,\n        duplicateComponent: duplicateComponentInStore,\n        deleteComponent: deleteComponentInStore,\n        initializeAutoRefresh,\n    } = useEditorDashboardStore()\n\n    const { clear: clearComponentEditorStore } = useComponentEditorStore();\n    const { t } = useTranslation(\"dashboard\")\n\n    const { toast } = useToast()\n    const queryClient = useQueryClient()\n    // Query to get all dashboards for \"Copy to\" menu\n    const { data: dashboards = [] } = useQuery({\n        queryKey: [DashboardsQueryKey],\n        queryFn: getDashboards,\n        // enabled: isHovered // Only fetch when hovered\n    })\n\n    const theme = currentDashboard?.style_config?.theme\n\n    // Mutation for copying component to another dashboard\n    const copyToMutation = useMutation({\n        mutationFn: ({ component, targetId }: { component: DashboardComponent; targetId: string, }) =>\n            copyComponentTo(component, targetId, layouts.find(e => e.i === component.id)),\n        onSuccess: () => {\n            // queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            toast({\n                description: t('copyToTargetSuccess'),\n                variant: \"success\",\n            })\n        },\n        onError: () => {\n            toast({\n                description: t('copyFailed'),\n                variant: \"error\",\n            })\n        },\n    })\n\n    // When the page loads, it automatically refreshes according to the query component configuration \n    useEffect(() => {\n        console.log('currentDashboard :>> ', currentDashboard);\n        if (currentDashboard && currentDashboard.components.length > 0) {\n            // Delay execution to ensure all components are mounted\n            const timer = setTimeout(() => {\n                initializeAutoRefresh()\n            }, 300)\n            return () => clearTimeout(timer)\n        }\n    }, [currentDashboard?.id, initializeAutoRefresh])\n\n    // 处理布局变化\n    const isInitialMount = useRef(true);\n    const handleLayoutChange = (newLayout: Layout[]) => {\n        if (isPreviewMode) return // 预览模式下不更新布局\n        if (isInitialMount.current) {\n            isInitialMount.current = false;\n            return;\n        }\n        console.log('newLayout :>> ', newLayout);\n\n        const updatedLayouts = newLayout.map(item => ({\n            i: item.i,\n            x: item.x,\n            y: item.y,\n            w: item.w,\n            h: item.h,\n            minW: item.minW,\n            minH: item.minH,\n            maxW: item.maxW,\n            maxH: item.maxH,\n            static: item.static\n        }))\n        setLayouts(updatedLayouts)\n    }\n\n    // 处理画布点击（取消选中）\n    useEffect(() => {\n        const handleClickOutside = (event: MouseEvent) => {\n            const target = event.target as HTMLElement;\n            const isInsideContainer = containerRef.current?.contains(target);\n            const isDragHandle = target.closest('.drag-handle');\n            if (isInsideContainer && !isDragHandle) {\n                setTimeout(() => {\n                    clearComponentEditorStore();\n                }, 0);\n            }\n        };\n\n        document.addEventListener('mousedown', handleClickOutside);\n        return () => {\n            document.removeEventListener('mousedown', handleClickOutside);\n        };\n    }, []);\n\n    // Handle component duplicate\n    const handleDuplicate = useCallback((component: DashboardComponent) => {\n        duplicateComponentInStore(component)\n    }, [duplicateComponentInStore])\n\n    // Handle copy to another dashboard\n    const handleCopyTo = useCallback((component: DashboardComponent, targetDashboardId: string) => {\n        copyToMutation.mutate({ component, targetId: targetDashboardId })\n    }, [copyToMutation.mutate])\n\n    // Handle component delete\n    const handleDelete = useCallback((componentId: string) => {\n        const component = currentDashboard?.components.find(c => c.id === componentId)\n        if (!component) return\n\n        bsConfirm({\n            desc: t('confirmDeleteComponent', { name: component.title }),\n            okTxt: t('delete'),\n            onOk(next) {\n                deleteComponentInStore(componentId)\n                clearComponentEditorStore(true)\n                next()\n            },\n        })\n    }, [currentDashboard?.components, deleteComponentInStore])\n\n    const handleRename = (id, title) => {\n        setCurrentDashboard({\n            ...currentDashboard,\n            components: currentDashboard.components.map(component =>\n                component.id === id ? { ...component, title } : component)\n        })\n    }\n\n    const [isDragging, setIsDragging] = useState(false);\n    const gridBackgroundStyle = useMemo(() => {\n        if (isPreviewMode || !width || !mounted || !isDragging) return {};\n\n        const cols = 24;\n        const rowHeight = 32;\n        const [marginX, marginY] = [8, 8];\n        const [padX, padY] = [16, 16];\n\n        const availableWidth = width - (padX * 2);\n        const totalMarginWidth = (cols - 1) * marginX;\n        const cellWidth = (availableWidth - totalMarginWidth) / cols;\n\n        const patternWidth = cellWidth + marginX;\n        const patternHeight = rowHeight + marginY;\n\n        const strokeColor = theme === 'dark' ? \"#666\" : \"rgba(0, 0, 0, 0.08)\"; // 虚线颜色\n        const dashArray = \"4, 3\"; // 虚线步长\n        const borderRadius = 10; // 圆角\n\n        const svgString = `\n            <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n                <defs>\n                    <pattern id=\"grid\" x=\"${padX}\" y=\"${padY}\" width=\"${patternWidth}\" height=\"${patternHeight}\" patternUnits=\"userSpaceOnUse\">\n                        <rect \n                            x=\"0\" y=\"0\" \n                            width=\"${cellWidth}\" height=\"${rowHeight}\" \n                            fill=\"transparent\" \n                            stroke=\"${strokeColor}\"\n                            stroke-width=\"1\"\n                            stroke-dasharray=\"${dashArray}\"\n                            rx=\"${borderRadius}\" ry=\"${borderRadius}\"\n                        />\n                    </pattern>\n                </defs>\n               <rect \n                    x=\"${padX}\" \n                    y=\"${padY}\" \n                    width=\"calc(100% - ${padX * 2}px)\" \n                    height=\"calc(100% - ${padY * 2}px)\" \n                    fill=\"url(#grid)\" \n                />\n            </svg>\n        `;\n\n        return {\n            backgroundImage: document.fullscreenElement ? '' : `url(\"data:image/svg+xml,${encodeURIComponent(svgString)}\")`,\n            backgroundRepeat: 'repeat',\n            backgroundAttachment: 'local',\n            backgroundPosition: `${0}px ${0}px`\n            // height: '100%'\n        };\n    }, [width, isPreviewMode, mounted, currentDashboard?.style_config.theme, isDragging]);\n\n\n    // loading\n    if (isLoading || !currentDashboard) {\n        return <div className=\"w-full h-full flex justify-center items-center z-10\">\n            <LoadingIcon />\n        </div>\n    }\n\n    // show home\n    if (!currentDashboard.components || currentDashboard.components.length === 0) {\n        if (isPreviewMode) {\n            return\n        }\n        return <Home />\n    }\n\n    return (\n        <>\n            <div className=\"flex h-full\">\n                <div\n                    id=\"edit-charts-panne\"\n                    className={cn(\"flex-1 relative overflow-auto no-scrollbar\", theme === 'dark' ? 'bg-[#1a1a1a] dark' : 'bg-[#f5f5f5] theme-force-light')}\n                >\n                    <div\n                        ref={containerRef}\n                        className=\"min-w-[1000px] h-screen\">\n                        <div className=\"mx-auto min-h-full\" style={{\n                            ...gridBackgroundStyle,\n                        }}>\n                            {mounted && (\n                                <ReactGridLayout\n                                    className=\"layout\"\n                                    layout={layouts}\n                                    width={width}\n                                    gridConfig={{\n                                        cols: 24,\n                                        rowHeight: 32,\n                                        margin: [8, 8],\n                                        containerPadding: [16, 16]\n                                    }}\n                                    dragConfig={{\n                                        enabled: !isPreviewMode,\n                                        // handle: \".drag-handle\",\n                                        cancel: \".no-drag,input\"\n                                    }}\n                                    onDragStart={() => setIsDragging(true)}\n                                    onResizeStart={() => setIsDragging(true)}\n                                    onDragStop={() => setIsDragging(false)}\n                                    onResizeStop={() => setIsDragging(false)}\n                                    resizeConfig={\n                                        {\n                                            enabled: !isPreviewMode,\n                                            handles: [\"sw\", \"nw\", \"se\", \"ne\", \"s\", \"n\", \"e\", \"w\"]\n                                        }}\n                                    onLayoutChange={handleLayoutChange}\n                                    compactor={verticalCompactor}\n                                >\n                                    {currentDashboard.components.map((component) => (\n                                        <div key={component.id} className={`drag-handle`}>\n                                            <ComponentWrapper\n                                                dashboards={dashboards}\n                                                component={component}\n                                                isDark={theme === 'dark'}\n                                                isPreviewMode={isPreviewMode}\n                                                onDuplicate={handleDuplicate}\n                                                onCopyTo={handleCopyTo}\n                                                onDelete={handleDelete}\n                                            />\n                                        </div>\n                                    ))}\n                                </ReactGridLayout>\n                            )}\n                        </div>\n                    </div>\n                </div>\n                {/* drawer */}\n                {!isPreviewMode && <ComponentConfigDrawer />}\n            </div>\n        </>\n    )\n}\n\n\n\nconst useContainerWidth = () => {\n    const [width, setWidth] = useState(0);\n    const containerRef = useRef(null);\n    const [mounted, setMounted] = useState(false);\n\n    useEffect(() => {\n        setMounted(true);\n        if (!window.ResizeObserver) alert('Your browser does not support ResizeObserver. Please use the latest version of Chrome browser.');\n\n        const resizeObserver = new ResizeObserver((entries) => {\n            for (let entry of entries) {\n                if (entry.contentRect) {\n                    setWidth(entry.contentRect.width);\n                }\n            }\n        });\n\n        if (containerRef.current) {\n            resizeObserver.observe(containerRef.current);\n        }\n\n        return () => {\n            if (containerRef.current) {\n                resizeObserver.unobserve(containerRef.current);\n            }\n            resizeObserver.disconnect();\n        };\n    }, [containerRef.current]);\n\n    return { width, containerRef, mounted };\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/EditorHeader.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { FilterIcon, GridAddIcon } from \"@/components/bs-icons/dashboard\"\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { Separator } from \"@/components/bs-ui/separator\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { updateDashboard } from \"@/controllers/API/dashboard\"\nimport { useComponentEditorStore, useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { ArrowLeft } from \"lucide-react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useMutation, useQueryClient } from \"react-query\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DashboardQueryKey, DashboardsQueryKey, usePublishDashboard } from \"../../hook\"\nimport { ChartType, Dashboard } from \"../../types/dataConfig\"\nimport ComponentPicker from \"./ComponentPicker\"\n\n\ninterface EditorHeaderProps {\n    dashboard: Dashboard | null\n    dashboardId: string\n}\n\nexport function EditorHeader({\n    dashboard,\n    dashboardId\n}: EditorHeaderProps) {\n    const { t } = useTranslation(\"dashboard\")\n    const { currentDashboard, hasUnsavedChanges, lastChangeTime, isSaving, layouts,\n        reset, setIsSaving, setHasUnsavedChanges, updateCurrentDashboard, addComponentToLayout } = useEditorDashboardStore()\n    const { editingComponent } = useComponentEditorStore()\n    const [isEditingTitle, setIsEditingTitle] = useState(false)\n    const [title, setTitle] = useState(dashboard?.title || \"\")\n    const inputRef = useRef<HTMLInputElement>(null)\n    const queryClient = useQueryClient()\n    const { toast } = useToast()\n\n    useEffect(() => {\n        if (dashboard) {\n            setTitle(dashboard.title)\n        }\n    }, [dashboard])\n\n    useEffect(() => {\n        if (isEditingTitle && inputRef.current) {\n            inputRef.current.focus()\n            inputRef.current.select()\n        }\n    }, [isEditingTitle])\n\n    // Save mutation\n    const saveMutation = useMutation({\n        mutationFn: ({ id, dashboard }: any) => updateDashboard(id, {\n            ...dashboard,\n            components: editingComponent ? dashboard.components.map(com =>\n                com.id === editingComponent.id ? editingComponent : com\n            ) : dashboard.components,\n            layout_config: { layouts }\n        }),\n        onMutate: () => {\n            setIsSaving(true)\n        },\n        onSuccess: (a, { autoSave, dashboard }, c) => {\n            setHasUnsavedChanges(false)\n            // refrensh react-query\n            queryClient.invalidateQueries({ queryKey: [DashboardQueryKey, Number(dashboardId)] })\n            queryClient.setQueryData([DashboardsQueryKey], (old) =>\n                old.map(el => el.id === dashboard.id ? {\n                    ...el,\n                    title: dashboard.title,\n                    status: dashboard.status,\n                } : el));\n            // queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            // autosave not require toast\n            !autoSave && toast({\n                description: t('saveSuccess'),\n                variant: \"success\",\n            })\n        },\n        onError: () => {\n            toast({\n                description: t('saveFailed'),\n                variant: \"error\",\n            })\n        },\n        onSettled: () => {\n            setIsSaving(false)\n        },\n    })\n\n    // Publish mutation\n    const { publish, isPublishing } = usePublishDashboard()\n\n    useDashboardAutoSave({\n        currentDashboard,\n        isSaving,\n        hasUnsavedChanges,\n        lastChangeTime,\n        saveMutation\n    })\n\n    const getSaveStatus = () => {\n        if (isSaving) return t('saving')\n        if (hasUnsavedChanges) return t('unsaved')\n        return t('saved')\n    }\n\n    const handleTitleBlur = () => {\n        setIsEditingTitle(false)\n        const trimmedTitle = title.trim()\n\n        if (!trimmedTitle) {\n            return setTitle(dashboard?.title || \"\")\n        }\n\n        if (trimmedTitle !== dashboard.title) {\n            setTitle(trimmedTitle)\n            updateCurrentDashboard({ ...currentDashboard, title: trimmedTitle })\n        }\n    }\n\n    const handleTitleKeyDown = (e: React.KeyboardEvent) => {\n        if (e.key === \"Enter\") {\n            inputRef.current?.blur()\n        }\n        if (e.key === \"Escape\") {\n            setTitle(dashboard?.title || \"\")\n            setIsEditingTitle(false)\n        }\n    }\n\n    const navigator = useNavigate()\n    const [liveModalOpen, setLiveModalOpen] = useState(false)\n    const handleExit = () => {\n\n        if (hasUnsavedChanges) {\n            setLiveModalOpen(true)\n        } else {\n            reset()\n            navigator(-1)\n        }\n    }\n    const handleSaveAndClose = async () => {\n        await saveMutation.mutateAsync({\n            id: currentDashboard?.id,\n            dashboard: currentDashboard\n        })\n        reset()\n        navigator(-1)\n    }\n\n    // Handle save\n    const handleSave = async (e?) => {\n        // if (!hasUnsavedChanges) {\n        //     return\n        // }\n        // config -> crrentcompontent\n        const querySave = document.querySelector('#query_save')\n        const configSave = document.querySelector('#config_save')\n        querySave?.click()\n        configSave?.click()\n\n        setTimeout(async () => {\n            // currentDashboard.components.map(el => el.style_config.titleColor = '')\n            await saveMutation.mutate({\n                id: currentDashboard?.id,\n                dashboard: currentDashboard,\n                autoSave: !e\n            })\n        }, 300);\n    }\n\n    // Handle publish\n    const handlePublish = async () => {\n        // If has unsaved changes, save first\n        await handleSave()\n\n        publish(dashboard.id, false)\n        navigator(`/dashboard?selected=${dashboardId}`)\n    }\n\n    // Reset store on unmount\n    useEffect(() => {\n        return () => {\n            reset()\n        }\n    }, [reset])\n\n    return (\n        <header className=\"h-16 border-b bg-background flex items-center justify-between px-4 py-3.5\">\n            {/* Left section */}\n            <div className=\"flex items-center gap-4\">\n                <Button variant=\"outline\" size=\"icon\" className=\"min-w-9\" onClick={handleExit}>\n                    <ArrowLeft className=\"h-4 w-4\" />\n                </Button>\n                <Separator orientation=\"vertical\" className=\"bg-slate-300 h-4\"></Separator>\n                {isEditingTitle ? (\n                    <Input\n                        ref={inputRef}\n                        value={title}\n                        onChange={(e) => setTitle(e.target.value)}\n                        onBlur={handleTitleBlur}\n                        onKeyDown={handleTitleKeyDown}\n                        className=\"text-sm font-medium h-6 px-2 py-0 border-primary\"\n                    />\n                ) : (\n                    <h1\n                        className=\"max-w-96 font-medium truncate cursor-pointer transition-colors\"\n                        title={title}\n                        onDoubleClick={() => setIsEditingTitle(true)}\n                    >\n                        {title}\n                    </h1>\n                )}\n                <Badge variant=\"outline\" className=\"break-keep font-normal bg-gray-100 dark:bg-black\">{getSaveStatus()}</Badge>\n            </div>\n\n            {/* Middle section */}\n            <div className=\"flex items-center gap-4\">\n                {/* Add Component */}\n                <ComponentPicker onSelect={addComponentToLayout}>\n                    {useMemo(() => (\n                        <Button variant=\"outline\" size=\"sm\" className=\"gap-1.5\">\n                            <GridAddIcon className=\"size-4\" />\n                            {t('addChart')}\n                        </Button>\n                    ), [t])}\n                </ComponentPicker>\n                <Button variant=\"outline\" size=\"sm\" className=\"gap-1.5\" onClick={() => addComponentToLayout({\n                    title: t('selectDate'),\n                    type: ChartType.Query\n                })}>\n                    <FilterIcon className=\"size-4\" />\n                    {t('addQueryComponent')}\n                </Button>\n            </div>\n\n            {/* Right section */}\n            <div className=\"flex items-center gap-2\">\n                <Button variant=\"outline\" onClick={() => {\n                    const element = document.getElementById('edit-charts-panne');\n                    element.requestFullscreen();\n                }}>\n                    {t('fullScreen')}\n                </Button>\n                <Button variant=\"outline\" disabled={isPublishing} onClick={handlePublish}>\n                    {t('saveAndPublish')}\n                </Button>\n                <Button onClick={handleSave} disabled={saveMutation.isLoading}>\n                    {t('save')}\n                </Button>\n            </div>\n\n            <Dialog open={liveModalOpen}>\n                <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                    <DialogHeader>\n                        <DialogTitle>{t('prompt')}</DialogTitle>\n                        <DialogDescription>{t('unsavedChangesWarning')}</DialogDescription>\n                    </DialogHeader>\n                    <DialogFooter>\n                        <Button className=\"leave h-8\" onClick={handleSaveAndClose}>\n                            {t('saveAndLeave')}\n                        </Button>\n                        <Button className=\"h-8\" variant=\"destructive\" onClick={() => navigator(-1)}>\n                            {t('leaveWithoutSaving')}\n                        </Button>\n                        <Button className=\"h-8\" variant=\"outline\" onClick={() => setLiveModalOpen(false)}>\n                            {t('cancel')}\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        </header>\n    )\n}\n\n\nexport function useDashboardAutoSave({\n    currentDashboard,\n    isSaving,\n    hasUnsavedChanges,\n    lastChangeTime,\n    saveMutation\n}) {\n    // --- Save at a fixed frequency of 15 seconds (Guaranteed Plan ) ---\n    useEffect(() => {\n        const idleTimer = setInterval(() => {\n            if (hasUnsavedChanges && !isSaving) {\n                console.log(\"Auto-saving dashboard...\")\n                saveMutation.mutate({\n                    autoSave: true,\n                    id: currentDashboard?.id,\n                    dashboard: currentDashboard\n                })\n            }\n        }, 15000)\n\n        return () => clearInterval(idleTimer)\n    }, [hasUnsavedChanges, isSaving])\n\n    // --- Save after 2 seconds of inactivity (Idle/Debounce ) ---\n    useEffect(() => {\n        if (hasUnsavedChanges && !isSaving) {\n            const idleTimer = setTimeout(() => {\n                console.log(\"Log: 2s Idle Auto-save triggered.\")\n                saveMutation.mutate({\n                    autoSave: true,\n                    id: currentDashboard?.id,\n                    dashboard: currentDashboard\n                })\n            }, 2000)\n            return () => clearTimeout(idleTimer)\n        }\n    }, [hasUnsavedChanges, isSaving, lastChangeTime, saveMutation])\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/Home.tsx",
    "content": "import { useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { ChartItems } from \"./ComponentPicker\"\nimport { cn } from \"@/utils\"\nimport { ChartType } from \"../../types/dataConfig\"\nimport { useTranslation } from \"react-i18next\"\n\nexport default function Home() {\n    const { t } = useTranslation(\"dashboard\")\n    const { addComponentToLayout } = useEditorDashboardStore()\n\n    const handleItemClick = (item) => {\n        addComponentToLayout({\n            title: t(`chart.${item.label}`),\n            type: item.type\n        })\n    }\n\n    return (\n        <div className=\"h-full bg-background flex items-center justify-center p-8\">\n            <div className=\"w-full max-w-[720px]\">\n                {/* Header */}\n                <div className=\"text-center mb-10\">\n                    <h1 className=\"text-lg text-foreground font-medium\">\n                        {t('selectComponentToStart')}\n                    </h1>\n                </div>\n\n                {/* Chart Grid */}\n                <div className=\"flex justify-center flex-wrap gap-4\">\n                    {ChartItems.map((item) => (\n                        <div\n                            key={item.type}\n                            onClick={() => handleItemClick(item)}\n                            className={cn('w-[88px] h-[86px] flex flex-col items-center justify-center border rounded-md shadow-sm hover:shadow-lg transition-colors cursor-pointer',\n                                item.type === ChartType.GroupedHorizontalBar && 'mr-10',\n                                item.type === ChartType.Bar && 'ml-10',\n                            )}>\n                            <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/${item.type}.png`} className=\"w-8 h-8 mb-2\" />\n                            <span className=\"text-[12px] text-gray-600 text-center\">{t(`chart.${item.label}`)}</span>\n                        </div>\n                    ))}\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/components/editor/index.css",
    "content": ".theme-force-light {\n    --background-login: #fff;\n    --text-color: rgba(17, 17, 17, 0.3);\n    --background-main: rgba(244, 245, 248, 1);\n    --background-main-content: rgba(255, 255, 255, 1);\n    --background-tip: white;\n    --background-tip-darkhover: #0055e3;\n    --background-prompt: hsla(0, 0%, 100%, 1);\n    --background-new: hsla(240, 14%, 99%, 1);\n    --nav-hover: white;\n    --header-icon: white;\n    --text-answer: #111;\n    --text-prompt: hsla(0, 0%, 18%, 1);\n    --search-input: hsla(220, 100%, 99%, 1);\n    --background: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --muted: 210 40% 98%;\n    /* hsl(210 40% 98%) */\n    --muted-foreground: 215.4 16.3% 46.9%;\n    /* hsl(215 16% 46%) */\n    --popover: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --popover-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --card: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --card-foreground: 222.2 47.4% 11.2%;\n    --white: white;\n    /* hsl(222 47% 11%) */\n    --border: 214.3 21.8% 91.4%;\n    /* hsl(214 32% 91%) */\n    --input: 223 48% 44%;\n    /* hsl(214 32% 91%) */\n    --primary: 220 98% 45%;\n    /* hsl(222 27% 18%) */\n    --primary-foreground: 210 40% 98%;\n    /* hsl(210 40% 98%) */\n    --secondary: 210 40% 96.1%;\n    /* hsl(210 40% 96%) */\n    --secondary-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --accent: 210 30% 96.1%;\n    /* hsl(210 30% 96%) */\n    --accent-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --destructive: 0 100% 50%;\n    /* hsl(0 100% 50%) */\n    --destructive-foreground: 210 40% 98%;\n    --black-button: 0 0% 7%;\n    /* hsl(215 20% 65%) */\n    --ring: 223, 48%, 44%, 0.35;\n    --radius: .58rem;\n    --round-btn-shadow: #00000063;\n    --error-background: #fef2f2;\n    --error-foreground: #991b1b;\n    --success-background: #f0fdf4;\n    --success-foreground: #14532d;\n    --info-background: #f0f4fd;\n    --info-foreground: #141653;\n    --high-indigo: #4338ca;\n    --medium-indigo: #6366f1;\n    --chat-bot-icon: #afe6ef;\n    --chat-user-icon: #aface9;\n    /* Colors that are shared in dark and light mode */\n    --blur-shared: #151923de;\n    --build-trigger: #dc735b;\n    --chat-trigger: #5c8be1;\n    --chat-trigger-disabled: #b4c3da;\n    --status-red: #ef4444;\n    --status-yellow: #eab308;\n    --status-green: #4ade80;\n    --status-blue: #2563eb;\n    --connection: #555;\n}\n\n.react-grid-item>.react-resizable-handle {\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    border: 1px solid hsl(var(--primary));\n    background: #fff;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-sw {\n    bottom: -3px;\n    left: -3px;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-nw {\n    top: -3px;\n    left: -3px;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-se {\n    bottom: -3px;\n    right: -3px;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-ne {\n    top: -3px;\n    right: -3px;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-n {\n    left: 10px;\n    width: calc(100% - 20px);\n    border-radius: 0;\n    transform: rotate(0);\n    margin: 0;\n    top: -3px;\n    opacity: 0;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-s {\n    left: 10px;\n    width: calc(100% - 20px);\n    border-radius: 0;\n    transform: rotate(0);\n    margin: 0;\n    bottom: -3px;\n    opacity: 0;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-w {\n    left: -3px;\n    top: 10px;\n    transform: rotate(0);\n    height: calc(100% - 20px);\n    border-radius: 0;\n    margin: 0;\n    opacity: 0;\n}\n\n.react-grid-item>.react-resizable-handle.react-resizable-handle-e {\n    right: -3px;\n    top: 10px;\n    transform: rotate(0);\n    height: calc(100% - 20px);\n    border-radius: 0;\n    margin: 0;\n    opacity: 0;\n}\n\n.react-grid-item .component-select~.react-resizable-handle.react-resizable-handle-sw,\n.react-grid-item .component-select~.react-resizable-handle.react-resizable-handle-nw,\n.react-grid-item .component-select~.react-resizable-handle.react-resizable-handle-se,\n.react-grid-item .component-select~.react-resizable-handle.react-resizable-handle-ne {\n    opacity: 1;\n}\n\n.react-grid-item>.react-resizable-handle::after {\n    content: normal;\n}\n\n\n.react-grid-item.react-grid-placeholder {\n    background: #2D4FE6;\n    opacity: 0.05;\n    border-radius: 6px;\n    /* border: 1px dashed hsl(var(--primary)); */\n}\n\n.writing-mode-vertical {\n    writing-mode: vertical-rl;\n    text-orientation: mixed;\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/editor.tsx",
    "content": "\"use client\"\nimport { getDashboard } from \"@/controllers/API/dashboard\"\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { useEffect } from \"react\"\nimport { useQuery } from \"react-query\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport { EditorCanvas } from \"./components/editor/EditorCanvas\"\nimport { EditorHeader } from \"./components/editor/EditorHeader\"\nimport { DashboardQueryKey, useEditorShortcuts } from \"./hook\"\n\nexport default function EditorPage() {\n    const params = useParams()\n    const dashboardId = params.id as string\n    const navigate = useNavigate()\n    const {\n        currentDashboard,\n        setCurrentDashboardId: setSelectedId,\n        setCurrentDashboard,\n    } = useEditorDashboardStore()\n\n    const { data: dashboard, isLoading } = useQuery({\n        queryKey: [DashboardQueryKey, Number(dashboardId)],\n        queryFn: () => getDashboard(dashboardId),\n    })\n\n    if (dashboard && !dashboard.write) {\n        navigate(\"404\")\n    }\n\n    useEffect(() => {\n        if (dashboard) {\n            // Edit mode is synchronized only once to avoid repeated rendering \n            currentDashboard?.id !== dashboard.id && setCurrentDashboard(dashboard)\n            setSelectedId(dashboard.id)\n        }\n    }, [dashboard, setCurrentDashboard])\n\n    // undo redo\n    useEditorShortcuts()\n\n    if (!dashboard) return null\n\n    return (\n        <div className=\"h-screen flex flex-col\">\n            <EditorHeader\n                dashboard={currentDashboard}\n                dashboardId={dashboardId}\n            />\n            <div className=\"h-[calc(100vh-64px)]\">\n                <EditorCanvas isLoading={isLoading} />\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/hook.ts",
    "content": "\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { publishDashboard } from \"@/controllers/API/dashboard\";\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useMutation, useQueryClient } from \"react-query\";\n\nexport const DashboardsQueryKey = \"DashboardsQueryKey\"\nexport const DashboardQueryKey = \"DashboardQueryKey\"\nexport const enum DashboardStatus {\n    Draft = \"draft\",\n    Published = \"published\",\n}\n\nexport const usePublishDashboard = () => {\n    const queryClient = useQueryClient();\n    const { toast } = useToast();\n    const { t } = useTranslation(\"dashboard\")\n\n    const mutation = useMutation({\n        mutationFn: ({ id, published }: { id: string; published: boolean }) =>\n            publishDashboard(\n                id,\n                published ? DashboardStatus.Draft : DashboardStatus.Published\n            ),\n        onSuccess: (_, variables) => {\n            const newStatus = variables.published ? DashboardStatus.Draft : DashboardStatus.Published\n            queryClient.setQueryData([DashboardQueryKey, variables.id], (old: any) => {\n                old.status = newStatus // Reduce render\n                return old\n            })\n            queryClient.setQueryData([DashboardsQueryKey], (old: any) => {\n                return old.map(el => el.id === variables.id ? {\n                    ...el,\n                    status: newStatus\n                } : el);\n            });\n            toast({\n                description: variables.published ? t('unpublishSuccess') : t('publishSuccess'),\n                variant: \"success\"\n            });\n        },\n        onError: (error) => {\n            console.error(\"Publish Error:\", error);\n            toast({\n                description: t('operationFailed'),\n                variant: \"error\",\n            });\n        },\n    });\n\n    // publish function\n    const handlePublish = (id: string, published: boolean) => {\n        mutation.mutate({ id, published });\n    };\n\n    return {\n        publish: handlePublish,\n        isPublishing: mutation.isLoading,\n        mutation,\n    };\n};\n\nexport const useEditorShortcuts = () => {\n    const { undo, redo, history } = useEditorDashboardStore();\n\n    useEffect(() => {\n        const handleKeyDown = (event: KeyboardEvent) => {\n            const isCtrlOrCmd = event.ctrlKey || event.metaKey;\n\n            // Undo: Ctrl + Z\n            if (isCtrlOrCmd && !event.shiftKey && event.key.toLowerCase() === 'z') {\n                event.preventDefault();\n                if (history.past.length > 0) undo();\n            }\n\n            // Redo: Ctrl + Shift + Z or Ctrl + Y\n            if (\n                (isCtrlOrCmd && event.shiftKey && event.key.toLowerCase() === 'z') ||\n                (isCtrlOrCmd && event.key.toLowerCase() === 'y')\n            ) {\n                event.preventDefault();\n                if (history.future.length > 0) redo();\n            }\n        };\n\n        document.addEventListener('keydown', handleKeyDown);\n        return () => document.removeEventListener('keydown', handleKeyDown);\n    }, [undo, redo, history.past.length, history.future.length]);\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/index.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { locationContext } from \"@/contexts/locationContext\"\nimport {\n    getDashboard,\n    getDashboards,\n    setDefaultDashboard,\n    updateDashboardTitle\n} from \"@/controllers/API/dashboard\"\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\"\nimport { copyText } from \"@/utils\"\nimport { useContext, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useMutation, useQuery, useQueryClient } from \"react-query\"\nimport { useNavigate } from \"react-router-dom\"\nimport { DashboardDetail } from \"./components/dashboard/DashboardDetail\"\nimport { DashboardSidebar } from \"./components/dashboard/DashboardSidebar\"\nimport { DashboardQueryKey, DashboardsQueryKey } from \"./hook\"\n\n\nexport default function DashboardPage() {\n    const { t } = useTranslation(\"dashboard\")\n    const { appConfig } = useContext(locationContext)\n\n    const {\n        currentDashboardId: selectedId,\n        setCurrentDashboardId: setSelectedId,\n        setCurrentDashboard,\n    } = useEditorDashboardStore()\n    const { toast } = useToast()\n    const queryClient = useQueryClient()\n    const [isCollapsed, setIsCollapsed] = useState(false)\n\n    const { data: dashboards = [] } = useQuery({\n        queryKey: [DashboardsQueryKey],\n        queryFn: getDashboards,\n    })\n\n    const updateTitlteMutation = useMutation({\n        mutationFn: ({ id, title }: { id: string; title: string }) => updateDashboardTitle(id, title),\n        onSuccess: (a, { id, title }) => {\n            // queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            // queryClient.invalidateQueries({ queryKey: [DashboardQueryKey, id] })\n            queryClient.setQueryData([DashboardQueryKey, id], (old: any) => {\n                old.title = title\n                return old\n            })\n            queryClient.setQueryData([DashboardsQueryKey], (old: any) =>\n                old.map(el => el.id === id ? { ...el, title } : el));\n            toast({\n                description: t('renameSuccess'),\n                variant: \"success\",\n            })\n        },\n        onError: () => {\n            toast({\n                description: t('renameError'),\n                variant: \"error\",\n            })\n        },\n    })\n\n    const setDefaultMutation = useMutation({\n        mutationFn: (id: string) => setDefaultDashboard(id),\n        onSuccess: (a, id) => {\n            // queryClient.invalidateQueries({ queryKey: [DashboardsQueryKey] })\n            queryClient.setQueryData([DashboardsQueryKey], (old) =>\n                old.map(el => ({ ...el, is_default: el.id === id })));\n            queryClient.invalidateQueries({ queryKey: [DashboardQueryKey, id] })\n        },\n        onError: () => {\n        }\n    })\n\n    const handleRename = (id: string, newTitle: string) => {\n        updateTitlteMutation.mutate({ id, title: newTitle })\n    }\n\n    const handleShare = async (id: string) => {\n        // const _selectedDashboard = dashboards.find((d) => d.id === id)\n        if (selectedDashboard?.status === \"draft\") {\n            toast({\n                description: t('shareNotPublished'),\n                variant: \"error\",\n            })\n            return\n        }\n\n        try {\n            const link = `${location.origin}${__APP_ENV__.BASE_URL}/dashboard/share/${btoa(selectedDashboard.id)}`\n            await copyText(link)\n            toast({\n                description: t('shareCopySuccess'),\n                variant: \"success\",\n            })\n        } catch (error) {\n            toast({\n                description: t('shareCopyError'),\n                variant: \"error\",\n            })\n        }\n    }\n\n    const navigator = useNavigate()\n    const handleEdit = (id: string) => {\n        navigator(`/dashboard/${id}`)\n    }\n\n    const { data: selectedDashboard, isLoading } = useQuery({\n        queryKey: [DashboardQueryKey, selectedId],\n        queryFn: () => getDashboard(selectedId),\n        enabled: !!selectedId,\n    })\n\n    useEffect(() => {\n        return () => setSelectedId(\"\")\n    }, [])\n\n    // dashboard reactquery to store\n    useEffect(() => {\n        if (selectedDashboard) {\n            setCurrentDashboard(selectedDashboard)\n            setSelectedId(selectedDashboard.id)\n        }\n    }, [selectedDashboard, setCurrentDashboard])\n\n    // Auto-select first dashboard if none selected\n    if (!selectedId && dashboards.length > 0) {\n        const defaultDashboard = dashboards.find((d) => d.is_default)\n        setSelectedId(defaultDashboard?.id || dashboards[0].id)\n    }\n\n    return (\n        <div className=\"h-full flex\">\n            {appConfig.isPro && <DashboardSidebar\n                isCollapsed={isCollapsed}\n                setIsCollapsed={setIsCollapsed}\n                dashboards={dashboards}\n                selectedId={selectedId}\n                onSelect={setSelectedId}\n                onRename={handleRename}\n                onDefault={(id) => setDefaultMutation.mutate(id)}\n                onShare={handleShare}\n            />\n            }\n            <DashboardDetail\n                isCollapsed={isCollapsed}\n                setIsCollapsed={setIsCollapsed}\n                dashboard={selectedDashboard}\n                isLoading={isLoading}\n                onRename={handleRename}\n                onDefault={(id) => setDefaultMutation.mutate(id)}\n                onShare={handleShare}\n                onEdit={handleEdit}\n            />\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/share.tsx",
    "content": "\"use client\"\nimport { getDashboard } from \"@/controllers/API/dashboard\"\nimport { useQuery } from \"react-query\"\nimport { useParams } from \"react-router-dom\"\nimport { EditorCanvas } from \"./components/editor/EditorCanvas\"\nimport { DashboardQueryKey } from \"./hook\"\nimport { useTranslation } from \"react-i18next\"\nimport { useEffect } from \"react\"\nimport { useEditorDashboardStore } from \"@/store/dashboardStore\"\n\nexport default function SharePage() {\n    const params = useParams()\n    const dashboardId = atob(params.boardId) as string\n    const { t } = useTranslation('dashboard')\n    const {\n        setCurrentDashboardId: setSelectedId,\n        setCurrentDashboard,\n    } = useEditorDashboardStore()\n\n    const { data: dashboard, isLoading } = useQuery({\n        queryKey: [DashboardQueryKey, dashboardId],\n        queryFn: () => getDashboard(dashboardId, true),\n    })\n\n    useEffect(() => {\n        if (dashboard) {\n            setCurrentDashboard(dashboard)\n            setSelectedId(dashboard.id)\n        }\n    }, [dashboard, setCurrentDashboard])\n\n\n    if (dashboard?.status === \"draft\") {\n        return <div className=\"size-full flex flex-col items-center justify-center\">\n            <img src={`${__APP_ENV__.BASE_URL}/assets/dashboard/offline.png`} className=\"size-[400px]\" alt=\"\" />\n            <p className=\"text-xl relative -top-16 text-center\">{t('dashboardOffline')}</p>\n        </div>\n    }\n\n    return (\n        <div className=\"h-screen flex flex-col\">\n            <div className=\"h-full\">\n                <EditorCanvas isPreviewMode isLoading={isLoading} />\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/types/chartData.ts",
    "content": "/**\n * 图表数据类型定义\n */\n\n// ==================== 图表数据（柱状图、折线图、饼图等）====================\nexport interface ChartDataResponse {\n  // 维度数据（X轴数据，用于柱状图、折线图等）\n  dimensions: string[] // 如：['2024-01', '2024-02', '2024-03'] 或 ['北京', '上海', '广州']\n\n  // 系列数据（纯数据，不包含配置）\n  series: ChartSeries[]\n}\n\nexport interface ChartSeries {\n  name: string // 系列名称，如 '销售额'、'订单数'\n  data: number[] | PieDataItem[] // 数据数组，饼图使用 PieDataItem\n}\n\n// 饼图数据项\nexport interface PieDataItem {\n  name: string // 名称\n  value: number // 数值\n}\n\n// ==================== 指标卡数据 ====================\nexport interface MetricDataResponse {\n  value: number // 主要指标值\n  title: string // 指标标题\n  unit?: string // 单位\n\n  // 趋势数据（可选）\n  trend?: {\n    value: number // 对比值（如环比增长 5%）\n    direction: 'up' | 'down' | 'flat' // 趋势方向：上升/下降/持平\n    label: string // 趋势标签，如 '较上月'、'同比'\n  }\n\n  // 格式化配置（可选）\n  format?: {\n    decimalPlaces?: number // 小数位数\n    thousandSeparator?: boolean // 是否显示千分位\n  }\n}\n\n// ==================== 查询请求参数 ====================\nexport interface QueryChartRequest {\n  componentId: string // 组件ID\n  dataConfig: any // 组件的 data_config\n  queryParams?: QueryParams // 查询组件传递的参数（可选）\n}\n\n// 查询参数（来自查询组件）\nexport interface QueryParams {\n  timeFilter?: {\n    startDate?: string\n    endDate?: string\n    granularity?: string\n  }\n  filters?: Record<string, any>\n}\n\n// ==================== 统一的查询响应 ====================\nexport type QueryDataResponse = ChartDataResponse | MetricDataResponse\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Dashboard/types/dataConfig.ts",
    "content": "import { generateUUID } from \"@/components/bs-ui/utils\"\n\n// React-Grid-Layout 布局项\nexport interface LayoutItem {\n  i: string // 组件ID\n  x: number // 横向位置 (0-11)\n  y: number // 纵向位置\n  w: number // 宽度 (1-12)\n  h: number // 高度\n  minW?: number // 最小宽度\n  minH?: number // 最小高度\n  maxW?: number // 最大宽度\n  maxH?: number // 最大高度\n  static?: boolean // 是否静态（不可拖拽）\n}\n\n// 看板布局配置\nexport interface LayoutConfig {\n  layouts: LayoutItem[] // 布局数组\n}\n\n// 主题配置\nexport interface ThemeConfig {\n  backgroundColor: string\n  textColor: string\n  borderColor: string\n  chartColors: string[] // echarts 配色\n}\n\n// 看板样式配置\nexport interface StyleConfig {\n  theme: 'light' | 'dark'// 当前主题\n}\n\n// 组件样式配置\nexport interface ComponentStyleConfig {\n  themeColor: string\n  bgColor: string\n\n  // 主标题\n  title: string\n  titleFontSize: number\n  titleBold: boolean\n  titleItalic: boolean\n  titleUnderline: boolean\n  titleStrikethrough: boolean\n  titleAlign: \"left\" | \"center\" | \"right\"\n  titleColor?: string\n\n  // X 轴\n  xAxisTitle: string\n  xAxisFontSize: number\n  xAxisBold: boolean\n  xAxisItalic: boolean\n  xAxisUnderline: boolean\n  xAxisStrikethrough: boolean\n  xAxisAlign: \"left\" | \"center\" | \"right\"\n  xAxisColor?: string \n\n  // Y 轴\n  yAxisTitle: string\n  yAxisFontSize: number\n  yAxisBold: boolean\n  yAxisItalic: boolean\n  yAxisUnderline: boolean\n  yAxisAlign: \"left\" | \"center\" | \"right\"\n  yAxisStrikethrough: boolean\n  yAxisColor?: string \n\n  // 图例\n  legendPosition: \"top\" | \"bottom\" | \"left\" | \"right\"\n  legendFontSize: number\n  legendBold: boolean\n  legendItalic: boolean\n  legendUnderline: boolean\n  legendStrikethrough: boolean\n  legendAlign: \"left\" | \"center\" | \"right\"\n  legendColor?: string \n\n  // 副标题\n  showSubtitle: boolean\n  subtitle: string\n  subtitleFontSize: number\n  subtitleBold: boolean\n  subtitleItalic: boolean\n  subtitleUnderline: boolean\n  subtitleStrikethrough: boolean\n  subtitleAlign: \"left\" | \"center\" | \"right\"\n  subtitleColor?: string \n\n  // 指标卡\n  metricFontSize: number\n  metricBold: boolean\n  metricItalic: boolean\n  metricUnderline: boolean\n  metricStrikethrough: boolean\n  metricAlign: \"left\" | \"center\" | \"right\"\n  metricColor?: string \n\n  // 图表选项\n  showLegend: boolean\n  showAxis: boolean\n  showDataLabel: boolean\n  showGrid: boolean\n}\n\nexport interface Dashboard {\n  id: string\n  title: string\n  description: string\n  status: 'draft' | 'published',\n  dashboard_type: 'custom',\n  layout_config: LayoutConfig,\n  style_config: StyleConfig,\n  create_time: string\n  update_time: string\n  is_default: boolean\n  user_name: string\n  write: boolean\n  components: DashboardComponent[]\n}\n\nexport interface DashboardComponent {\n  id: string //\n  dashboard_id: string\n  title: string\n  type: ChartType\n  dataset_code: string\n  data_config: ComponentConfig // 图表/指标组件使用 DataConfig，查询组件使用 QueryConfig\n  style_config: ComponentStyleConfig\n  create_time: string\n  update_time: string\n}\n\n/**\n * Dashboard 组件数据配置类型定义\n */\n// 图表类型\n\nexport enum ChartType {\n  /** 基础柱状图 */\n  Bar = 'bar',\n  /** 堆叠柱状图 */\n  StackedBar = 'stacked-bar',\n  /** 分组柱状图 */\n  GroupedBar = 'grouped-bar',\n  /** 基础条形图 */\n  HorizontalBar = 'horizontal-bar',\n  /** 堆叠条形图 */\n  StackedHorizontalBar = 'stacked-horizontal-bar',\n  /** 分组条形图 */\n  GroupedHorizontalBar = 'grouped-horizontal-bar',\n  /** 基础折线图 */\n  Line = 'line',\n  /** 面积图 */\n  Area = 'area',\n  /** 堆叠面积图 */\n  StackedArea = 'stacked-area',\n  /** 组合折线图 */\n  StackedLine = 'multiple-line',\n  StackedLineOld = 'stacked-line',\n  /** 饼状图 */\n  Pie = 'pie',\n  /** 环状图 */\n  Donut = 'donut',\n  /** 指标卡 */\n  Metric = 'metric',\n  /** 查询组件 */\n  Query = 'query'\n}\n\n// 维度配置\nexport interface DimensionField {\n  fieldId: string               // 字段ID（来自数据集）\n  fieldName: string             // 字段名称\n  fieldCode: string             // 字段编码\n  displayName?: string          // 展示名称（不填则使用 fieldName）\n  sort: null | 'asc' | 'desc' // 排序方式\n  timeGranularity: string | null // 时间子维度（仅时间字段有效）\n}\n\n//  指标配置 \nexport interface MetricField {\n  fieldId: string               // 字段ID（来自数据集）\n  fieldName: string             // 字段名称\n  fieldCode: string             // 字段编码\n  displayName?: string          // 展示名称\n  aggregation?: string // 汇总方式（虚拟指标无此属性）\n  isVirtual: boolean            // 是否为虚拟指标\n  sort: null | 'asc' | 'desc' // 排序方式\n  numberFormat: {               // 数值格式\n    type: 'number' | 'percent' | 'duration' | 'storage'    // 数值 百分比 时长 存储大小      \n    decimalPlaces: number         // 小数位数\n    unit?: string                 // 数量单位（如 K、M、B）\n    suffix?: string               // 单位后缀（如 元、个、次）\n    thousandSeparator: boolean    // 是否显示千分位符\n  }\n}\n\nexport interface FilterCondition {\n  id: string                           // 筛选条件唯一ID\n  fieldId: string                      // 字段ID\n  fieldName: string                    // 字段名称\n  filterType: string                   // 筛选类型\n  operator?: string                    // 操作符\n  value?: string | number | string[]   // 值\n}\n\n// 时间筛选 \nexport const enum TimeRangeType {\n  ALL = 'all', // 全部时间\n  RECENT_DAYS = 'recent_days', // 最近n天\n  CUSTOM = 'custom' // 自定义时间范围\n}\n\nexport const enum TimeRangeMode {\n  Fixed = 'fixed',     // 固定时间范围\n  Dynamic = 'dynamic' // 动态时间范围（相对当前时间）\n}\n\nexport interface TimeFilter {\n  type: TimeRangeType           // 时间范围类型\n  mode?: TimeRangeMode          // 时间范围模式（type 为 recent_days 时有效）\n  recentDays?: number           // 最近n天（如 7, 30, 70, 90）\n  startDate?: number            // 自定义开始日期\n  endDate?: number              // 自定义结束日期\n}\n\n// 数据配置（图表组件和指标组件使用）\nexport interface DataConfig {\n  dimensions: DimensionField[]  // 维度字段列表（对应 echarts xAxis）\n  stackDimension?: DimensionField // 堆叠维度字段（某些图表类型才有，如堆叠柱状图）\n  metrics: MetricField[]        // 指标字段列表（对应 echarts yAxis）\n  fieldOrder: {\n    fieldId: string               // 字段ID\n    fieldType: 'dimension' | 'stack_dimension' | 'metric'   // 字段类型 维度字段|堆叠维度字段|指标字段\n  }[]   // 所有字段的排序顺序（数组顺序即为排序）\n  filters: FilterCondition[]      // 条件筛选列表\n  timeFilter?: TimeFilter         // 时间筛选（可选）\n  resultLimit: {                  // 结果展示配置\n    limitType: 'all' | 'limited'  // 限制类型\n    limit?: number                // 具体条数（limitType 为 limited 时有效）\n  },\n  isConfigured: boolean // 配置完成\n}\n\n// 查询组件配置\nexport interface QueryConfig {\n  linkedComponentIds: string[]    // 关联的图表组件ID列表（查询时会更新这些组件）\n  queryConditions: {\n    id: string                      // 条件唯一ID\n    displayType: 'range' | 'single'        // 展示类型：时间范围 或 单个时间\n    timeGranularity: 'year_month' | 'year_month_day' | 'year_month_day_hour'// 时间粒度\n    hasDefaultValue: boolean        // 是否设置默认值\n    defaultValue?: TimeFilter // 默认值配置\n  }// 查询条件列表\n}\n\n// 组件配置联合类型\nexport type ComponentConfig = DataConfig | QueryConfig\nexport const createDefaultDataConfig = (type: ChartType): ComponentConfig => (\n  type === 'query'\n    ? {\n      linkedComponentIds: [], queryConditions: {\n        id: generateUUID(4),\n        displayType: 'range',\n        timeGranularity: 'year_month_day',\n        hasDefaultValue: false,\n        defaultValue: {\n          type: TimeRangeType.ALL\n        }\n      }\n    }\n    : {\n      dimensions: [],\n      metrics: [],\n      fieldOrder: [],\n      filters: [],\n      resultLimit: { limitType: 'all' },\n      isConfigured: false\n    })"
  },
  {
    "path": "src/frontend/platform/src/pages/DataSetPage/CreateDataSet.tsx",
    "content": "import KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport SimpleUpload from \"@/components/bs-ui/upload/simple\";\nimport { createDatasetApi } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { downloadFile } from \"@/util/utils\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DEFAULT_FORM = {\n    dataSetName: '',\n    importMethod: 'local',\n    fileUrl: '',\n    knowledgeLib: [],\n    fileName: ''\n};\n\nconst CreateDataSet = forwardRef(({ onChange }, ref) => {\n    const { t } = useTranslation()\n    const [open, setOpen] = useState(false);\n    const [form, setForm] = useState({ ...DEFAULT_FORM });\n    const [error, setError] = useState({\n        dataSetName: false,\n        fileUrl: false,\n        knowledgeLib: false\n    });\n    const { message } = useToast();\n    const idRef = useRef('');\n\n    useImperativeHandle(ref, () => ({\n        open() {\n            idRef.current = '';\n            setOpen(true);\n            setForm({ ...DEFAULT_FORM });\n            setError({\n                dataSetName: false,\n                fileUrl: false,\n                knowledgeLib: false\n            });\n        }\n    }));\n\n    const handleInputChange = (e) => {\n        const { name, value } = e.target;\n        setForm((prevForm) => ({\n            ...prevForm,\n            [name]: value\n        }));\n    };\n\n    const handleProviderChange = (value) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            importMethod: value,\n            fileUrl: '',\n            knowledgeLib: [],\n            fileName: ''\n        }));\n        setError((prevError) => ({\n            ...prevError,\n            fileUrl: false,\n            knowledgeLib: false\n        }));\n    };\n\n    const handleFileUploadSuccess = (name, url) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            fileUrl: url,\n            fileName: name\n        }));\n    };\n\n    const handleKnowledgeLibChange = (value) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            knowledgeLib: value\n        }));\n    };\n\n    const handleSubmit = () => {\n        const isDataSetNameEmpty = !form.dataSetName.trim();\n        const isFileUrlEmpty = form.importMethod === 'local' && !form.fileUrl;\n        const isKnowledgeLibEmpty = form.importMethod === 'qa' && form.knowledgeLib.length === 0;\n        setError({\n            dataSetName: isDataSetNameEmpty || form.dataSetName.length > 30,\n            fileUrl: isFileUrlEmpty,\n            knowledgeLib: isKnowledgeLibEmpty\n        });\n\n        const errors = [];\n        if (isDataSetNameEmpty) errors.push(t('dataset.enterDataSetName'));\n        if (form.dataSetName.length > 30) errors.push(t('dataset.maxDataSetNameLength'));\n        if (isFileUrlEmpty) errors.push(t('dataset.uploadFile'));\n        if (isKnowledgeLibEmpty) errors.push(t('dataset.selectKnowledgeLib'));\n        if (errors.length > 0) {\n            return message({\n                variant: 'warning',\n                description: errors\n            });\n        }\n        setOpen(false);\n\n        captureAndAlertRequestErrorHoc(createDatasetApi({\n            name: form.dataSetName,\n            files: form.fileUrl,\n            qa_list: form.knowledgeLib.map(el => el.value)\n        }).then(res => {\n            message({\n                variant: 'success',\n                description: t('dataset.creationSuccess')\n            });\n            onChange();\n        }));\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={setOpen}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('dataset.createDataset')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2\">\n                    <div>\n                        <label htmlFor=\"dataSetName\" className=\"bisheng-label\">\n                            <span className=\"text-red-500\">*</span>{t('dataset.name')}\n                        </label>\n                        <Input\n                            name=\"dataSetName\"\n                            className={`mt-2 ${error.dataSetName ? 'border-red-400' : ''}`}\n                            value={form.dataSetName}\n                            onChange={handleInputChange}\n                        />\n                    </div>\n                    <div>\n                        <label htmlFor=\"importMethod\" className=\"bisheng-label\">{t('dataset.importMethod')}</label>\n                        <RadioGroup\n                            defaultValue=\"local\"\n                            className=\"flex gap-6 mt-2\"\n                            onValueChange={handleProviderChange}\n                        >\n                            <div className=\"flex items-center space-x-2\">\n                                <RadioGroupItem value=\"local\" id=\"method-local\" />\n                                <Label htmlFor=\"method-local\">{t('dataset.localImport')}</Label>\n                            </div>\n                            <div className=\"flex items-center space-x-2\">\n                                <RadioGroupItem value=\"qa\" id=\"method-qa\" />\n                                <Label htmlFor=\"method-qa\">{t('dataset.importFromQa')}</Label>\n                            </div>\n                        </RadioGroup>\n                    </div>\n                    {form.importMethod === 'local' && (\n                        <div>\n                            <div className=\"flex justify-between items-center\">\n                                <label htmlFor=\"fileUpload\" className=\"bisheng-label\">\n                                    <span className=\"text-red-500\">*</span>{t('dataset.uploadFile')}\n                                </label>\n                                <div className=\"flex gap-2 items-center\">\n                                    <Label>{t('dataset.sampleFile')}:</Label>\n                                    <Button variant=\"link\" className=\"px-1\" onClick={() => downloadFile(__APP_ENV__.BASE_URL + \"/dataset.json\", t('dataset.jsonSample'))}>\n                                        {t('dataset.jsonSample')}\n                                    </Button>\n                                </div>\n                            </div>\n                            <SimpleUpload\n                                filekey=\"file\"\n                                uploadUrl={'/api/v1/knowledge/upload'}\n                                accept={['json']}\n                                className={`${error.fileUrl ? 'border-red-400' : ''}`}\n                                onSuccess={handleFileUploadSuccess}\n                            />\n                            <p className=\"text-sm text-green-500 mt-2\">{form.fileName}</p>\n                        </div>\n                    )}\n                    {form.importMethod === 'qa' && (\n                        <div>\n                            <label htmlFor=\"knowledgeLib\" className=\"bisheng-label\">\n                                <span className=\"text-red-500\">*</span>{t('dataset.selectQaKnowledgeLib')}\n                            </label>\n                            <KnowledgeSelect\n                                type=\"qa\"\n                                multiple\n                                value={form.knowledgeLib}\n                                onChange={handleKnowledgeLibChange}\n                                className={`${error.knowledgeLib ? 'border-red-400' : ''}`}\n                            />\n                        </div>\n                    )}\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={() => setOpen(false)}>{t('cancel')}</Button>\n                    </DialogClose>\n                    <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>{t('confirm')}</Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\nexport default CreateDataSet;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DataSetPage/index.tsx",
    "content": "\nimport { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { SearchInput } from \"@/components/bs-ui/input\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { deleteDatasetApi, getFileUrlApi, getPresetFileApi } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useTable } from \"@/util/hook\";\nimport { downloadFile } from \"@/util/utils\";\nimport { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport CreateDataSet from \"./CreateDataSet\";\n\nexport default function index() {\n    const { t } = useTranslation();\n    const { page, pageSize, data: datalist, total, loading, setPage, search, reload } = useTable({}, (param) =>\n        getPresetFileApi({ page_size: 20, page_num: param.page, keyword: param.keyword })\n    );\n\n    const handleDelete = (id) => {\n        bsConfirm({\n            desc: t('dataset.confirmDelete'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteDatasetApi(id).then(res => {\n                    reload();\n                }));\n                next();\n            },\n        });\n    };\n\n    const modelRef = useRef(null);\n\n    const { toast } = useToast();\n    const handleDownloadFile = async (name, url) => {\n        const res = await getFileUrlApi(url);\n        if (!res.url) {\n            return toast({ variant: 'error', description: t('dataset.fileNotFound') });\n        }\n        await downloadFile(checkSassUrl(res.url), name + '.json');\n    };\n\n    return (\n        <div className=\"relative h-full px-2 py-4\">\n            {loading && (\n                <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                    <LoadingIcon />\n                </div>\n            )}\n            <div className=\"h-[calc(100vh-128px)] overflow-y-auto pb-10\">\n                <div className=\"flex justify-end gap-4 items-center\">\n                    <SearchInput placeholder={t('dataset.name')} onChange={(e) => search(e.target.value)} />\n                    <Button className=\"px-8 text-[#FFFFFF]\" onClick={() => modelRef.current.open()}>{t('dataset.create')}</Button>\n                </div>\n                <Table>\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead className=\"w-[200px]\">{t('dataset.name')}</TableHead>\n                            <TableHead>{t('dataset.creationTime')}</TableHead>\n                            <TableHead>{t('dataset.updateTime')}</TableHead>\n                            <TableHead>{t('dataset.createUser')}</TableHead>\n                            <TableHead className=\"text-right\">{t('operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n\n                    <TableBody>\n                        {datalist.map((el) => (\n                            <TableRow key={el.id}>\n                                <TableCell className=\"font-medium max-w-[200px]\">\n                                    <div className=\"truncate-multiline\">{el.name}</div>\n                                </TableCell>\n                                <TableCell>{el.create_time.replace('T', ' ')}</TableCell>\n                                <TableCell>{el.update_time.replace('T', ' ')}</TableCell>\n                                <TableCell className=\"max-w-[300px] break-all\">\n                                    <div className=\"truncate-multiline\">{el.user_name || '--'}</div>\n                                </TableCell>\n                                <TableCell className=\"text-right\" onClick={() => { window.libname = el.name; }}>\n                                    <Button variant=\"link\" className=\"px-1\" onClick={() => handleDownloadFile(el.name, el.url)}>{t('dataset.download')}</Button>\n                                    <Button variant=\"link\" onClick={() => handleDelete(el.id)} className=\"ml-4 text-red-500 px-0\">{t('delete')}</Button>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer px-6 bg-background-login\">\n                <p className=\"desc\">{t('dataset.collection')}</p>\n                <div>\n                    <AutoPagination\n                        page={page}\n                        pageSize={pageSize}\n                        total={total}\n                        onChange={(newPage) => setPage(newPage)}\n                    />\n                </div>\n            </div>\n            <CreateDataSet ref={modelRef} onChange={reload} />\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/components/Cell.tsx",
    "content": "import Skeleton from \"@/components/bs-ui/skeleton\";\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\";\nimport { useDiffFlowStore } from \"@/store/diffFlowStore\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\n\nconst Cell = forwardRef((props, ref) => {\n\n    const [value, setValue] = useState('')\n    const [loading, setLoading] = useState(false)\n\n    useImperativeHandle(ref, () => ({\n        loading: () => {\n            setLoading(true)\n        },\n        loaded: () => {\n            setLoading(false)\n        },\n        setData: (val) => {\n            setLoading(false)\n\n            let i = 0\n            const print = () => {\n                const value = val.substring(0, i++)\n                setValue(value)\n                i < val.length && setTimeout(print, Math.floor(Math.random() * 10) + 20)\n            }\n            print()\n        },\n        getData() {\n            return value\n        }\n    }));\n\n    if (loading) return <Skeleton className=\"h-4 w-[200px]\" />\n\n    return <div>\n        <MessageMarkDown message={value.toString()} />\n    </div>\n})\n\n\nexport default function CellWarp({ qIndex, versionId }) {\n    const ref = useRef(null);\n    const addCellRef = useDiffFlowStore(state => state.addCellRef);\n    const removeCellRef = useDiffFlowStore(state => state.removeCellRef);\n\n    useEffect(() => {\n        const key = `${qIndex}-${versionId}`\n        addCellRef(key, ref);\n\n        // 组件卸载时删除 ref\n        return () => {\n            removeCellRef(key);\n        };\n    }, [qIndex, versionId, addCellRef, removeCellRef]);\n\n    return <Cell ref={ref} />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/components/Component.tsx",
    "content": "import { DelIcon } from \"@/components/bs-icons/del\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { useMemo } from \"react\";\nimport ComponentParameter from \"./ComponentParameter\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function Component({ compId, options, disables, version, className, onChangeVersion, onClose }) {\n    const { t } = useTranslation()\n    // 保留当前compId和上游组件\n    const nodes = useMemo(() => {\n        if (!version?.data) return [];\n        const showNodes = {}\n        const edges = version.data.edges\n\n        const deep = (_compId) => {\n            edges.forEach(edge => {\n                if (edge.target === _compId) {\n                    showNodes[edge.source] = true\n                    showNodes[edge.target] = true\n                    deep(edge.source)\n                }\n            })\n        }\n        deep(compId)\n\n        return version.data.nodes.filter(node => showNodes[node.id])\n    }, [version, compId])\n\n    // empty\n    if (!version) return <div className=\"bg-[#fff] dark:bg-gray-950 rounded-md p-2 shadow-sm\">\n        <div className=\"group flex justify-center items-center pb-2 border-b relative\">\n            <Select onValueChange={onChangeVersion}>\n                <SelectTrigger className=\"w-[140px] h-6\">\n                    <SelectValue placeholder={t('test.selectVersion')} />\n                </SelectTrigger>\n                <SelectContent>\n                    {\n                        options.map(vs => (\n                            <SelectItem key={vs.id} value={vs.id} textValue={'vs.name'} disabled={disables.includes(vs.id)}>\n                                <div className=\"flex justify-between w-64\">\n                                    <span className=\"w-36 overflow-hidden text-ellipsis whitespace-nowrap\">{vs.name}</span>\n                                    <span className=\"text-xs text-muted-foreground\">{vs.update_time.replace('T', ' ').substring(0, 16)}</span>\n                                </div>\n                            </SelectItem>\n                        ))\n                    }\n                </SelectContent>\n            </Select>\n            <DelIcon\n                className=\"absolute right-0 -top-1 cursor-pointer text-muted-foreground hidden group-hover:block\"\n                onClick={onClose}\n            />\n        </div>\n        <div className=\"min-h-[100px]\"></div>\n    </div>\n\n    // 版本信息\n    return <div className={'bg-[#fff] dark:bg-gray-950 rounded-md p-2 shadow-sm ' + className}>\n        <div className=\"group flex justify-between items-center pb-2 border-b\">\n            <Select value={version.id} onValueChange={onChangeVersion}>\n                <SelectTrigger className=\"w-[120px] h-6\">\n                    <SelectValue placeholder={t('test.selectVersion')} />\n                </SelectTrigger>\n                <SelectContent>\n                    {\n                        options.map(vs => (\n                            <SelectItem key={vs.id} value={vs.id} textValue={'vs.name'} disabled={disables.includes(vs.id)}>\n                                <div className=\"flex justify-between w-64\">\n                                    <span className=\"w-36 overflow-hidden text-ellipsis whitespace-nowrap text-left\">{vs.name}</span>\n                                    <span className=\"text-xs text-muted-foreground\">{vs.update_time.replace('T', ' ').substring(0, 16)}</span>\n                                </div>\n                            </SelectItem>\n                        ))\n                    }\n                </SelectContent>\n            </Select>\n            <span className=\"text-sm text-muted-foreground relative pr-8\">\n                {version.update_time.replace('T', ' ')}\n                <DelIcon\n                    className=\"absolute right-0 -top-1 cursor-pointer text-muted-foreground hidden group-hover:block\"\n                    onClick={onClose}\n                />\n            </span>\n        </div>\n\n        <div className=\"max-h-52 overflow-y-auto pb-10\">\n            <div className=\"flex gap-1 px-2 py-1 text-sm text-muted-foreground\">\n                <span className=\"min-w-12 w-28\">{t('test.component')}</span>\n                <span className=\"min-w-12 w-28\">{t('test.parameterName')}</span>\n                <span className=\"flex-1\">{t('test.parameterValue')}</span>\n            </div>\n            {\n                nodes.map(node => (\n                    <div className=\"flex odd:bg-gray-50 bg-[#f4f5f8] dark:bg-[#212121] gap-1 mt-1 px-2 py-1 text-sm rounded-sm\">\n                        <span className=\"min-w-12 w-28 break-all self-center\">{node.data.type}</span>\n                        <div className=\"flex-1 min-w-0 pointer-events-none opacity-60\">\n                            {\n                                <ComponentParameter\n                                    disabled\n                                    flow={version}\n                                    node={node}\n                                    template={node.data.node.template}\n                                >\n                                    {\n                                        (key, name, formItem) => (\n                                            <div key={key} className=\"flex mb-1\">\n                                                <span className=\"min-w-12 w-28 break-all\">{name}</span>\n                                                <div className=\"flex-1 min-w-0\">{formItem}</div>\n                                            </div>\n                                        )\n                                    }\n                                </ComponentParameter>\n                            }\n                        </div>\n                    </div>\n                ))\n            }\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/components/ComponentParameter.tsx",
    "content": "import CodeAreaComponent from \"@/components/codeAreaComponent\";\nimport Dropdown from \"@/components/dropdownComponent\";\nimport FloatComponent from \"@/components/floatComponent\";\nimport InputComponent from \"@/components/inputComponent\";\nimport InputFileComponent from \"@/components/inputFileComponent\";\nimport InputListComponent from \"@/components/inputListComponent\";\nimport IntComponent from \"@/components/intComponent\";\nimport PromptAreaComponent from \"@/components/promptComponent\";\nimport TextAreaComponent from \"@/components/textAreaComponent\";\nimport ToggleShadComponent from \"@/components/toggleShadComponent\";\nimport { useMemo } from \"react\";\n\n/**\n * 组件中的填写参数罗列\n * 参数模板 template\n */\nexport default function ComponentParameter({ disabled = false, flow, node, template, children, onChange = () => { } }) {\n    const _disabled = false // disabled || (flow.data.edges.some((e) => e.targetHandle === node.id) ?? false);\n\n    const keys = useMemo(() => {\n        return Object.keys(template).filter(\n            (t) =>\n                t.charAt(0) !== \"_\" &&\n                template[t].show &&\n                (template[t].type === \"str\" ||\n                    template[t].type === \"bool\" ||\n                    template[t].type === \"float\" ||\n                    template[t].type === \"code\" ||\n                    template[t].type === \"prompt\" ||\n                    template[t].type === \"file\" ||\n                    template[t].type === \"int\" ||\n                    template[t].type === \"dict\")\n        )\n    }, [template])\n\n    const handleOnNewValue = (newValue: any, name) => {\n        // 引用更新\n        node.data.node.template[name].value = newValue;\n        // 手动修改知识库，collection_id 清空\n        if (['index_name', 'collection_name'].includes(name)) delete node.data.node.template[name].collection_id\n        onChange() // 更新通知\n    }\n\n    const getStrComp = (template, n) => {\n        return template[n].list ? (\n            <InputListComponent\n                editNode={true}\n                disabled={_disabled}\n                value={\n                    !template[n].value ||\n                        template[n].value === \"\"\n                        ? [\"\"]\n                        : template[n].value\n                }\n                onChange={(t: string[]) => {\n                    handleOnNewValue(t, n);\n                }}\n            />\n        ) : template[n].multiline ? (\n            <TextAreaComponent\n                disabled={_disabled}\n                editNode={true}\n                value={template[n].value ?? \"\"}\n                onChange={(t: string) => {\n                    handleOnNewValue(t, n);\n                }}\n            />\n        ) : (\n            <InputComponent\n                editNode={true}\n                disabled={_disabled}\n                password={\n                    template[n].password ?? false\n                }\n                value={template[n].value ?? \"\"}\n                onChange={(t) => {\n                    handleOnNewValue(t, n);\n                }}\n            />\n        )\n    }\n\n    return <>\n        {keys.map((n, i) => {\n            const name = template[n].name || template[n].display_name\n\n            if (template[n].type === \"str\") {\n                if (template[n].options) {\n                    return children(n, name, <Dropdown\n                        numberOfOptions={keys.length}\n                        editNode={true}\n                        options={template[n].options}\n                        onSelect={(t) => handleOnNewValue(t, n)}\n                        value={\n                            template[n].value ??\n                            \"Choose an option\"\n                        }\n                    ></Dropdown>)\n                } else {\n                    return children(n, name, getStrComp(template, n))\n                }\n            }\n\n            switch (template[n].type) {\n                case \"bool\":\n                    return children(n, name, <ToggleShadComponent\n                        disabled={_disabled}\n                        enabled={template[n].value}\n                        setEnabled={(t) => {\n                            handleOnNewValue(t, n);\n                        }}\n                        size=\"small\"\n                    />)\n                case \"float\":\n                    return children(n, name, <FloatComponent\n                        disabled={_disabled}\n                        editNode={true}\n                        value={template[n].value ?? \"\"}\n                        onChange={(t) => {\n                            template[n].value = t;\n                        }}\n                    />)\n                case \"int\":\n                    return children(n, name, <IntComponent\n                        disabled={_disabled}\n                        editNode={true}\n                        value={template[n].value ?? \"\"}\n                        onChange={(t) => {\n                            handleOnNewValue(t, n);\n                        }}\n                    />)\n                case \"file\":\n                    return children(n, name, <InputFileComponent\n                        editNode={true}\n                        disabled={_disabled}\n                        value={template[n].value ?? \"\"}\n                        onChange={(t: string) => {\n                            handleOnNewValue(t, n);\n                        }}\n                        fileTypes={template[n].fileTypes}\n                        suffixes={template[n].suffixes}\n                        onFileChange={(t: string) => {\n                            handleOnNewValue(t, n);\n                        }}\n                    ></InputFileComponent>)\n                case \"prompt\":\n                    return children(n, name, <PromptAreaComponent\n                        field_name={n}\n                        editNode={true}\n                        disabled={_disabled}\n                        nodeClass={node.data.node}\n                        setNodeClass={(nodeClass) => {\n                            node.data.node = nodeClass;\n                        }}\n                        value={template[n].value ?? \"\"}\n                        onChange={(t: string) => {\n                            handleOnNewValue(t, n);\n                        }}\n                    />)\n                case \"code\":\n                    return children(n, name, <CodeAreaComponent\n                        disabled={_disabled}\n                        editNode={true}\n                        value={template[n].value ?? \"\"}\n                        onChange={(t: string) => {\n                            handleOnNewValue(t, n);\n                        }}\n                    />)\n                case \"Any\": return children(n, name, \"-\")\n                default: return children(n, name, <div className=\"hidden\"></div>)\n            }\n        })\n        }\n    </>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/components/RunForm.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport ChatReportForm from \"@/pages/ChatAppPage/components/ChatReportForm\";\nimport { useRef } from \"react\";\n\nexport default function RunForm({ show, flow, onChangeShow, onSubmit }) {\n\n    const formRef = useRef(null);\n    const handleSubmit = () => {\n        formRef.current.submit()\n    }\n\n    return <DialogContent className=\"sm:max-w-[625px]\">\n        <DialogHeader>\n            <DialogTitle>测试运行</DialogTitle>\n            <DialogDescription>请输入上游依赖参数</DialogDescription>\n        </DialogHeader>\n        {\n            show && <ChatReportForm ref={formRef} type='diff' vid={flow.id} flow={flow} onStart={onSubmit} />\n        }\n        <DialogFooter>\n            <DialogClose>\n                <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={onChangeShow}>取消</Button>\n            </DialogClose>\n            <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>开始运行</Button>\n        </DialogFooter>\n    </DialogContent>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/components/RunTest.tsx",
    "content": "import { DelIcon } from \"@/components/bs-icons/del\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { postBuildInit } from \"@/controllers/API\";\nimport { useDiffFlowStore } from \"@/store/diffFlowStore\";\nimport { FlowStyleType, FlowType } from \"@/types/flow\";\nimport { exportCsv } from \"@/util/utils\";\nimport { CircleHelp, Download, Play } from \"lucide-react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport CellWarp from \"./Cell\";\nimport RunForm from \"./RunForm\";\n\nexport default function RunTest({ nodeId }) {\n\n    const { t } = useTranslation()\n    const [formShow, setFormShow] = useState(false)\n    const { running, runningType, mulitVersionFlow, readyVersions, questions, removeQuestion, cellRefs,\n        allRunStart, rowRunStart, colRunStart, overQuestions, addQuestion, updateQuestion } = useDiffFlowStore()\n\n    // 是否展示表单\n    const isForm = useMemo(() => {\n        const flowData = mulitVersionFlow?.[0]?.data\n        if (!flowData) return false\n\n        return flowData.nodes.some(node => [\"VariableNode\", \"InputFileNode\"].includes(node.data.type))\n    }, [mulitVersionFlow])\n\n    // 选中的测试版本数\n    const versionColWidth = useMemo(() => {\n        const count = mulitVersionFlow.reduce((count, cur) => {\n            return cur ? count + 1 : count\n        }, 0) + 1 // +1 测试用例列 \n\n        return 100 / (count === 2 ? count : count + 1) // hack 两个 按 45% 分\n    }, [mulitVersionFlow])\n\n    const handleUploadTxt = () => {\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \".txt\";\n        input.onchange = (e: Event) => {\n            if (\n                (e.target as HTMLInputElement).files[0].type === \"text/plain\"\n            ) {\n                const currentfile = (e.target as HTMLInputElement).files[0];\n                currentfile.text().then((text) => {\n                    console.log(text, \"text\");\n                    overQuestions(text.split('\\n'))\n                });\n            }\n        };\n        input.click();\n    }\n\n    const { message } = useToast()\n    const inputsRef = useRef(null)\n    const build = useBuild()\n    const handleRunTest = async (inputs = null, query = '') => {\n        setFormShow(false)\n        const res = await build(mulitVersionFlow[0])\n        // console.log('res  :>> ', res);\n        const input = res.input_keys.find((el: any) => !el.type)\n        const inputKey = input ? Object.keys(input)[0] : '';\n        inputsRef.current = { ...input, id: nodeId, [inputKey]: query, data: inputs }\n        //\n        if (questions.length === 0) return message({\n            title: t('prompt'),\n            description: t('test.addTest'),\n            variant: 'warning'\n        })\n        allRunStart(nodeId, inputsRef.current)\n    }\n\n    const handleColRunTest = (versionId) => {\n        colRunStart(versionId, nodeId, inputsRef.current)\n    }\n\n    const handleRowRunTest = (qIndex) => {\n        rowRunStart(qIndex, nodeId, inputsRef.current)\n    }\n\n    // 导出结果（excle）\n    const handleDownExcle = () => {\n        const _mulitVersionFlow = mulitVersionFlow.filter(version => version)\n        const data = [['测试用例', ..._mulitVersionFlow.map(version => version.name)]];\n\n        questions.forEach((_, index) => {\n            const rowData = [_.q]\n            _mulitVersionFlow.forEach(version => {\n                rowData.push(cellRefs[`${index}-${version.id}`].current.getData())\n            })\n            data.push(rowData)\n        })\n\n        exportCsv(data, \"test_result.xlsx\")\n    }\n\n    const notDiffVersion = useMemo(() => !mulitVersionFlow.some((version) => version), [mulitVersionFlow])\n\n    return <div className=\"mt-4 px-4\">\n        <div className=\"bg-[#fff] dark:bg-gray-950 p-2\">\n            <div className=\"flex items-center justify-between \">\n                <div className=\"flex gap-2 items-center\">\n                    <Button size=\"sm\" disabled={['all', 'row', 'col'].includes(runningType)} onClick={handleUploadTxt}>{t('test.uploadTest')}</Button>\n                    <TooltipProvider delayDuration={200}>\n                        <Tooltip>\n                            <TooltipTrigger asChild>\n                                <CircleHelp className=\"w-4 h-4\" />\n                            </TooltipTrigger>\n                            <TooltipContent>\n                                <p>{t('test.explain')}</p>\n                            </TooltipContent>\n                        </Tooltip>\n                    </TooltipProvider>\n                </div>\n                {\n                    isForm ? <Dialog open={formShow} onOpenChange={setFormShow}>\n                        <DialogTrigger asChild>\n                            <Button size=\"sm\" disabled={runningType === 'all' || notDiffVersion}><Play size={14} />{t('test.testRun')}</Button>\n                        </DialogTrigger>\n                        <RunForm show={formShow} flow={mulitVersionFlow[0]} onChangeShow={setFormShow} onSubmit={handleRunTest} />\n                    </Dialog> :\n                        <Button size=\"sm\" disabled={runningType === 'all' || notDiffVersion} onClick={() => handleRunTest()}><Play size={14} />{t('test.testRun')}</Button>\n                }\n            </div>\n            {/* table */}\n            <Table className=\"table-fixed\">\n                <TableHeader>\n                    <TableRow>\n                        <TableHead style={{ width: `${versionColWidth}%` }}>{t('test.testCase')}</TableHead>\n                        {\n                            mulitVersionFlow.map(version =>\n                                version && <TableHead key={version.id} style={{ width: `${versionColWidth + 10}%` }}>\n                                    <div className=\"flex items-center gap-2\">\n                                        <span>{version.name}</span>\n                                        {readyVersions[version.id] && <Button\n                                            disabled={['all'].includes(runningType)}\n                                            size='icon'\n                                            className=\"w-6 h-6\"\n                                            title={t('test.run')}\n                                            onClick={() => handleColRunTest(version.id)}\n                                        ><Play size={14} /></Button>}\n                                    </div>\n                                </TableHead>\n                            )\n                        }\n                        <TableHead className=\"text-right min-w-[135px]\" style={{ width: 135 }}>\n                            <Button variant=\"link\" disabled={runningType !== '' || !running} onClick={handleDownExcle}><Download className=\"mr-1\" size={18} />{t('test.downloadResults')}</Button>\n                        </TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {\n                        questions.map((question, index) => (\n                            <TableRow>\n                                <TableCell>\n                                    <div className=\"flex items-center gap-2 font-medium\">\n                                        <Input\n                                            disabled={['all', 'row'].includes(runningType)}\n                                            placeholder={t('test.testCases')}\n                                            value={question.q}\n                                            onChange={(e) => updateQuestion(e.target.value, index)}\n                                        ></Input>\n                                        {question.ready && <Button\n                                            disabled={['all'].includes(runningType) || notDiffVersion}\n                                            size='icon'\n                                            className=\"min-w-6 h-6\"\n                                            title=\"运行\"\n                                            onClick={() => handleRowRunTest(index)}\n                                        ><Play size={14}/></Button>}\n                                    </div>\n                                </TableCell>\n                                {/* 版本 */}\n                                {mulitVersionFlow.map(flow =>\n                                    flow && <TableCell key={index + '-' + flow.id} className=''>\n                                        <CellWarp qIndex={index} versionId={flow.id} />\n                                    </TableCell>\n                                )}\n                                <TableCell className=\"text-right\">\n                                    <Button\n                                        size=\"icon\"\n                                        variant=\"link\"\n                                        disabled={['all', 'row'].includes(runningType)}\n                                        onClick={() => removeQuestion(index)}><DelIcon /></Button>\n                                </TableCell>\n                            </TableRow>\n                        ))\n                    }\n                </TableBody>\n                <TableFooter>\n                    <TableRow>\n                        {questions.length < 20 && <TableCell>\n                            <div className=\"flex items-center gap-2 font-medium min-w-52\">\n                                <Input\n                                    placeholder={t('test.testCases')}\n                                    onKeyDown={(e) => {\n                                        if (e.key === 'Enter') {\n                                            if (!e.target.value) return\n                                            addQuestion(e.target.value)\n                                            e.target.value = ''\n                                        }\n                                    }}\n                                    onBlur={(e) => {\n                                        if (!e.target.value) return\n                                        addQuestion(e.target.value)\n                                        e.target.value = ''\n                                    }} />\n                            </div>\n                        </TableCell>\n                        }\n                        <TableCell colSpan={5} className=\"text-right\"></TableCell>\n                    </TableRow>\n                </TableFooter>\n            </Table>\n        </div>\n    </div>\n};\n\n\nconst useBuild = () => {\n    const { toast } = useToast()\n\n    // SSE 服务端推送\n    async function streamNodeData(flow: FlowType, chatId: string) {\n        let res = null\n        // Step 1: Make a POST request to send the flow data and receive a unique session ID\n        const _flow = { ...flow, id: flow.flow_id }\n        const { flowId } = await postBuildInit({ flow: _flow, versionId: flow.id });\n        // Step 2: Use the session ID to establish an SSE connection using EventSource\n        let validationResults = [];\n        let finished = false;\n        let buildEnd = false\n        const qstr = flow.id ? `?version_id=${flow.id}` : ''\n        const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/build/stream/${flowId}${qstr}`;\n        const eventSource = new EventSource(apiUrl);\n\n        eventSource.onmessage = (event) => {\n            // If the event is parseable, return\n            if (!event.data) {\n                return;\n            }\n            const parsedData = JSON.parse(event.data);\n            // if the event is the end of the stream, close the connection\n            if (parsedData.end_of_stream) {\n                eventSource.close(); // 结束关闭链接\n                buildEnd = true\n                return;\n            } else if (parsedData.log) {\n                // If the event is a log, log it\n                // setSuccessData({ title: parsedData.log });\n            } else if (parsedData.input_keys) {\n                res = parsedData\n            } else {\n                // setProgress(parsedData.progress);\n                validationResults.push(parsedData.valid);\n            }\n        };\n\n        eventSource.onerror = (error: any) => {\n            console.error(\"EventSource failed:\", error);\n            eventSource.close();\n            if (error.data) {\n                const parsedData = JSON.parse(error.data);\n                toast({\n                    title: parsedData.error,\n                    variant: 'error',\n                    description: ''\n                });\n            }\n        };\n        // Step 3: Wait for the stream to finish\n        while (!finished) {\n            await new Promise((resolve) => setTimeout(resolve, 100));\n            finished = buildEnd // validationResults.length === flow.data.nodes.length;\n        }\n        // Step 4: Return true if all nodes are valid, false otherwise\n        if (validationResults.every((result) => result)) {\n            return res\n        }\n    }\n\n    // 延时器\n    async function enforceMinimumLoadingTime(\n        startTime: number,\n        minimumLoadingTime: number\n    ) {\n        const elapsedTime = Date.now() - startTime;\n        const remainingTime = minimumLoadingTime - elapsedTime;\n\n        if (remainingTime > 0) {\n            return new Promise((resolve) => setTimeout(resolve, remainingTime));\n        }\n    }\n\n    async function handleBuild(flow: FlowStyleType) {\n        try {\n            const minimumLoadingTime = 200; // in milliseconds\n            const startTime = Date.now();\n\n            const res = await streamNodeData(flow, generateUUID(32));\n            await enforceMinimumLoadingTime(startTime, minimumLoadingTime); // 至少等200ms, 再继续(强制最小load时间)\n            return res\n        } catch (error) {\n            console.error(\"Error:\", error);\n        } finally {\n        }\n    }\n\n    return handleBuild\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/DiffFlowPage/index.tsx",
    "content": "import { PlusIcon } from \"@/components/bs-icons/plus\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { getFlowVersions } from \"@/controllers/API/flow\"\nimport { useDiffFlowStore } from \"@/store/diffFlowStore\"\nimport { FlowVersionItem } from \"@/types/flow\"\nimport { ChevronLeft } from \"lucide-react\"\nimport { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useNavigate, useParams } from \"react-router-dom\"\nimport Component from \"./components/Component\"\nimport RunTest from \"./components/RunTest\"\n\nexport default function index(params) {\n    const { t } = useTranslation()\n    // 技能 id, 版本id, 组件id\n    const { id, vid, cid } = useParams()\n    const navigate = useNavigate()\n    const { message } = useToast()\n\n    const versions = useVersions(id)\n\n    const { mulitVersionFlow, removeVersionFlow, initFristVersionFlow, addEmptyVersionFlow, addVersionFlow } = useDiffFlowStore()\n    useEffect(() => {\n        initFristVersionFlow(vid)\n    }, [])\n\n    const handleAddVersion = () => {\n        if (mulitVersionFlow.length >= 4) return message({\n            title: '',\n            description: t('test.maxAddVersions'),\n            variant: 'error',\n        })\n        addEmptyVersionFlow()\n    }\n\n    console.log('mulitVersionFlow', mulitVersionFlow);\n\n\n    return <div className=\"bg-gray-100 dark:bg-[#111] h-full relative\">\n        {/* header */}\n        <div className=\"absolute top-0 w-full h-14 flex justify-between items-center border-b px-4 bg-[#fff] dark:bg-[#222]\">\n            <Button variant=\"outline\" size=\"icon\" onClick={() => navigate(-1)}><ChevronLeft className=\"h-4 w-4\" /></Button>\n            <span>{t('test.versionEvaluation')}</span>\n            <Button type=\"button\" onClick={handleAddVersion}>\n                <PlusIcon className=\"text-primary\" />\n                {t('test.addVersion')}({mulitVersionFlow.length}/4)\n            </Button>\n        </div>\n\n        {/* content */}\n        <div className=\"h-full pt-14 overflow-y-auto\">\n            {/* comps */}\n            <div className={`grid gap-4 mt-4 px-4 box-border ${mulitVersionFlow.length === 3 ? 'grid-cols-3' : 'grid-cols-2'}`}>\n                {\n                    mulitVersionFlow.map((version, index) => (\n                        <Component\n                            key={index}\n                            compId={cid}\n                            options={versions}\n                            disables={mulitVersionFlow.map((v) => v?.id)}\n                            version={version}\n                            className={''}\n                            onChangeVersion={(vid) => addVersionFlow(vid, index)}\n                            onClose={() => removeVersionFlow(index)}\n                        />\n                    ))\n                }\n            </div>\n            {/* run test */}\n            <RunTest nodeId={cid}></RunTest>\n        </div>\n    </div>\n};\n\n\n\nconst useVersions = (flowId) => {\n    const [versions, setVersions] = useState<FlowVersionItem[]>([])\n    useEffect(() => {\n        getFlowVersions(flowId).then(({ data }) => {\n            setVersions(data)\n        })\n    }, [])\n\n    return versions\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/EvaluationPage/EvaluationCreate.tsx",
    "content": "import ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/bs-ui/select\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport {\n  QuestionTooltip\n} from \"@/components/bs-ui/tooltip\";\nimport { TabsContext } from \"@/contexts/tabsContext\";\nimport { createEvaluationApi } from \"@/controllers/API/evaluate\";\nimport { getAppsApi } from \"@/controllers/API/flow\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { TypeModal } from \"@/utils\";\nimport { SelectViewport } from \"@radix-ui/react-select\";\nimport { debounce, find } from \"lodash-es\";\nimport { ArrowLeft, UploadIcon } from \"lucide-react\";\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport PromptAreaComponent from \"./PromptCom\";\nimport defaultPrompt from \"./defaultPrompt\";\n\nexport default function EvaluatingCreate() {\n  const { t } = useTranslation();\n\n  const { id } = useParams();\n  const { flow: nextFlow } = useContext(TabsContext);\n  const { toast } = useToast()\n  const flow = useMemo(() => {\n    return id ? nextFlow : null;\n  }, [nextFlow]);\n  const [selectedType, setSelectedType] = useState<\"workflow\" | \"assistant\" | \"flow\" | \"\">(\"\");\n  const [selectedKeyId, setSelectedKeyId] = useState(\"\");\n  const [selectedVersion, setSelectedVersion] = useState(\"\");\n  const [query, setQuery] = useState(\"\");\n  const [dataSource, setDataSource] = useState([]);\n  const [prompt, setPrompt] = useState(defaultPrompt);\n  const [fileName, setFileName] = useState(\"\");\n\n  const [loading, setLoading] = useState(false);\n  const fileRef = useRef(null);\n\n  const onDrop = (acceptedFiles) => {\n    const file = acceptedFiles[0];\n    if (!file) return;\n\n    const fileExt = file.name.split('.').pop()?.toLowerCase();\n\n\n    fileRef.current = acceptedFiles[0];\n    const size = fileRef.current.size\n    const errorlist = [];\n\n    // 1. File extension validation (double insurance)\n    if (fileExt !== 'csv') {\n      errorlist.push(t(\"evaluation.onlyCsvAllowed\"));\n      fileRef.current = null;\n      handleError(errorlist);\n      return;\n    }\n\n    // File size limit: 10M max\n    if (size > 10 * 1024 * 1024) {\n      errorlist.push(t(\"evaluation.fileSizeLimit\"));\n      fileRef.current = null\n      return handleError(errorlist);\n    }\n\n    const names = acceptedFiles[0].name;\n    setFileName(names);\n  };\n\n  const { getRootProps, getInputProps, isDragActive, rejectedFiles } = useDropzone({\n    // Precise matching of CSV MIME types and extensions to avoid file bypass\n    accept: {\n      \"text/csv\": [\".csv\"],          // Standard CSV text type\n      \"application/csv\": [\".csv\"],   // CSV application type recognized by some browsers\n      \"application/vnd.ms-excel\": [\".csv\"] // Compatible with CSV exported from old Excel versions\n    },\n    useFsAccessApi: false,\n    onDrop,\n    maxFiles: 1,\n    onDropRejected: (files) => {\n      if (files.length > 0) {\n        // Check rejected file types\n        const rejectedFile = files[0];\n        const fileExt = rejectedFile.file.name.split('.').pop()?.toLowerCase();\n\n        if (fileExt === 'xlsx' || fileExt === 'xls') {\n          handleError([t(\"evaluation.excelNotSupported\")]);\n        } else {\n          handleError([t(\"evaluation.onlyCsvSupported\")]);\n        }\n      }\n    }\n  });\n\n  const navigate = useNavigate();\n\n  const handleCreateEvaluation = async () => {\n    const errorlist = [];\n    if (!selectedType) errorlist.push(t(\"evaluation.enterExecType\"));\n\n    if (selectedType && !selectedKeyId) {\n      if (selectedType === \"workflow\") errorlist.push(t(\"evaluation.selectWorkflow\"));\n      if (selectedType === \"flow\") errorlist.push(t(\"evaluation.selectSkill\"));\n      if (selectedType === \"assistant\") errorlist.push(t(\"evaluation.selectAssistant\"));\n    }\n\n    if (selectedKeyId && (selectedType === \"workflow\" || selectedType === \"flow\") && !selectedVersion) {\n      errorlist.push(t(\"evaluation.selectVersion\"));\n    }\n    if (\n      !fileRef.current &&\n      selectedKeyId &&\n      (\n        (selectedType === \"workflow\" || selectedType === \"flow\") && selectedVersion // Types with versions selected\n        || selectedType === \"assistant\" // Types that don't need versions\n      )\n    ) {\n      errorlist.push(t(\"evaluation.enterFile\"));\n    }\n    if (!prompt) errorlist.push(t(\"evaluation.enterPrompt\"));\n\n    if (errorlist.length) return handleError(errorlist);\n    setLoading(true);\n    try {\n      const formData = new FormData();\n      formData.append('exec_type', selectedType);       // Execution type\n      formData.append('unique_id', selectedKeyId);     // Unique ID\n      formData.append('version', selectedVersion);     // Version number\n      formData.append('prompt', prompt);               // Prompt text\n\n      if (fileRef.current) {\n        formData.append('file', fileRef.current); // Key name 'file' must match backend\n      }\n      await captureAndAlertRequestErrorHoc(\n        createEvaluationApi(formData)\n      )\n\n      navigate(-1);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const handleError = (list) => {\n    toast({\n      variant: \"error\",\n      description: list\n    });\n  };\n\n  // Type selection\n  const handleTypeChange = (type) => {\n    setQuery(\"\");\n    if (type) {\n      // Compatible with old names\n      const typeMap = {\n        workflow: 'flow',\n        assistant: 'assistant',\n        flow: 'skill'\n      };\n\n      getAppsApi({\n        page: 1,\n        pageSize: 100,\n        keyword: \"\",\n        type: typeMap[type]\n      }).then((response) => {\n        setDataSource(response.data);\n      });\n    }\n  };\n\n  const handleDownloadTemplate = () => {\n    const link = document.createElement(\"a\");\n    link.href = __APP_ENV__.BASE_URL + \"/template.csv\"; // File path\n    link.download = \"template.csv\"; // Download filename\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  };\n\n  const handleSearch = useCallback(debounce((value) => {\n    if (selectedType) {\n      // Compatible with old names\n      const typeMap = {\n        workflow: 'flow',\n        assistant: 'assistant',\n        flow: 'skill'\n      };\n\n      getAppsApi({\n        page: 1,\n        pageSize: 100,\n        keyword: value,\n        type: typeMap[selectedType]\n      }).then((response) => {\n        setDataSource(response.data);\n      });\n    }\n  }, 300), [selectedType])\n\n  const handleInputChange = (event) => {\n    setQuery(event.target.value);\n    handleSearch(event.target.value);\n  };\n\n  useEffect(() => {\n    return () => {\n      handleSearch.cancel();\n    };\n  }, [handleSearch]);\n\n  return (\n    <div className=\"relative box-border h-full overflow-auto\">\n      <div className=\"h-full overflow-y-auto p-6 pb-48\">\n        <div className=\"flex w-full justify-between\">\n          <ShadTooltip content={t(\"back\")} side=\"right\">\n            <button\n              className=\"extra-side-bar-buttons w-[36px]\"\n              onClick={() => navigate(-1)}\n            >\n              <ArrowLeft strokeWidth={1.5} className=\"side-bar-button-size\" />\n            </button>\n          </ShadTooltip>\n        </div>\n        {/* Form */}\n        <div className=\"pt-6\">\n          <p className=\"text-center text-2xl\">{t(\"evaluation.createTitle\")}</p>\n          <div className=\"mx-auto mt-4 w-full max-w-3xl\">\n            {/* Base form */}\n            <div className=\"w-full overflow-hidden px-1 transition-all space-y-8\">\n              <div className=\"flex items-center justify-between gap-1\">\n                <Label className=\"w-[180px] text-right\">\n                  {t(\"evaluation.selectLabel\")}\n                </Label>\n                <div className=\"flex flex-1 gap-2\">\n                  <Select\n                    value={selectedType}\n                    onValueChange={(value) => {\n                      setSelectedType(value as any);\n                      setSelectedKeyId(\"\");\n                      handleTypeChange(value);\n                    }}\n                  >\n                    <SelectTrigger>\n                      <SelectValue\n                        className=\"mt-2 w-auto\"\n                        placeholder={t(\"evaluation.selectPlaceholder\")}\n                      />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectGroup>\n                        <SelectItem value=\"flow\">{t(\"build.skill\")}</SelectItem>\n                        <SelectItem value=\"assistant\">{t(\"build.assistant\")}</SelectItem>\n                        <SelectItem value=\"workflow\">{t(\"build.workFlow\")}</SelectItem>\n                      </SelectGroup>\n                    </SelectContent>\n                  </Select>\n                  <Select\n                    value={selectedKeyId}\n                    onValueChange={(id) => setSelectedKeyId(id)}\n                    onOpenChange={() => {\n                      if (!selectedType)\n                        return handleError([t(\"evaluation.enterExecType\")]);\n                    }}\n                  >\n                    <SelectTrigger slot=\"\" className=\"max-w-[200px]\">\n                      <SelectValue\n                        className=\"mt-2 max-w-[200px]\"\n                        placeholder={t(\"evaluation.selectPlaceholder\")}\n                      />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <Input\n                        value={query}\n                        onChange={handleInputChange}\n                        autoFocus\n                        className=\"my-2 mx-auto\"\n                        placeholder={t(\"evaluation.selectInputPlaceholder\")}\n                        onKeyDown={(e) => e.stopPropagation()}\n                      />\n                      <SelectViewport className=\"h-80\">\n                        <SelectGroup>\n                          {dataSource.map((item) => {\n                            return (\n                              <SelectItem key={item.id} value={item.id}>\n                                {item.name}\n                              </SelectItem>\n                            );\n                          })}\n                        </SelectGroup>\n                      </SelectViewport>\n                    </SelectContent>\n                  </Select>\n                  {(selectedType === \"workflow\" || selectedType === \"flow\") && (\n                    <Select\n                      value={selectedVersion}\n                      onValueChange={(version) => setSelectedVersion(version)}\n                      onOpenChange={() => {\n                        if (!selectedKeyId) {\n                          if (selectedType === \"workflow\") {\n                            return handleError([t(\"evaluation.selectWorkflow\")]);\n                          } else if (selectedType === \"flow\") {\n                            return handleError([t(\"evaluation.selectSkill\")]);\n                          }\n                        }\n                      }}\n                    >\n                      <SelectTrigger className=\"min-w-[50px]\">\n                        <SelectValue\n                          className=\"mt-2\"\n                          placeholder={t(\"evaluation.selectPlaceholder\")}\n                        />\n                      </SelectTrigger>\n                      <SelectContent>\n                        <SelectGroup>\n                          {find(dataSource, {\n                            id: selectedKeyId,\n                          })?.version_list?.map((item) => {\n                            return (\n                              <SelectItem key={item.id} value={item.id}>\n                                {item.name}\n                              </SelectItem>\n                            );\n                          })}\n                        </SelectGroup>\n                      </SelectContent>\n                    </Select>\n                  )}\n                </div>\n              </div>\n              <div className=\"flex items-center gap-1\">\n                <div className=\"min-w-[180px] text-right\">\n                  <Label className=\"whitespace-nowrap\">\n                    {t(\"evaluation.dataLabel\")}\n                  </Label>\n                </div>\n                <div className=\"flex flex-1 items-center justify-between\">\n                  <div\n                    {...getRootProps()}\n                    className=\"flex w-0 flex-1 items-center\"\n                  >\n                    <input {...getInputProps()} />\n                    <div className=\"flex cursor-pointer text-sm items-center justify-center rounded-md border px-[12px] py-[6px] hover:border-primary\">\n                      <UploadIcon size={14} />\n                      <span className=\"whitespace-nowrap\">\n                        {t(\"code.uploadFile\")}\n                      </span>\n                    </div>\n                    {fileName && (\n                      <div className=\"ml-2 truncate\">{fileName}</div>\n                    )}\n                    <Label className=\"whitespace-nowrap\">\n                      &nbsp;{t(\"evaluation.fileExpandName\")}&nbsp;csv\n                    </Label>\n                  </div>\n                  <Button\n                    className=\"ml-2\"\n                    variant=\"link\"\n                    onClick={handleDownloadTemplate}\n                  >\n                    {t(\"evaluation.downloadTemplate\")}\n                  </Button>\n                </div>\n              </div>\n              <div className=\"flex items-center justify-between gap-1\">\n                <div className=\"min-w-[180px] text-right\">\n                  <Label className=\"flex items-center justify-end\">\n                    <QuestionTooltip content={t(\"evaluation.tooltip\")} />\n                    {t(\"evaluation.promptLabel\")}\n                  </Label>\n                </div>\n                <div className=\"flex-1\" style={{ width: \"calc(100% - 180px)\" }}>\n                  <PromptAreaComponent\n                    field_name={\"prompt\"}\n                    editNode={false}\n                    disabled={false}\n                    type={TypeModal.TEXT}\n                    value={prompt}\n                    onChange={(t: string) => {\n                      setPrompt(t);\n                    }}\n                  />\n                </div>\n              </div>\n\n              <div className=\"flex\">\n                <div className=\"min-w-[180px]\"></div>\n                <div className=\"flex flex-1 gap-4\">\n                  <Button\n                    disabled={loading}\n                    className=\"extra-side-bar-save-disable flex-1\"\n                    onClick={handleCreateEvaluation}\n                  >\n                    {t(\"evaluation.create\")}\n                  </Button>\n                  <Button\n                    disabled={loading}\n                    className=\"flex-1\"\n                    variant=\"outline\"\n                    onClick={() => navigate(-1)}\n                  >\n                    {t(\"evaluation.cancel\")}\n                  </Button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/EvaluationPage/PromptCom.tsx",
    "content": "import { useContext, useEffect, useState } from \"react\";\nimport { PopUpContext } from \"@/contexts/popUpContext\";\nimport GenericModal from \"@/modals/genericModal\";\nimport { TextAreaComponentType } from \"@/types/components\";\nimport { TypeModal } from \"@/utils\";\n\nimport { ExternalLink } from \"lucide-react\";\n\nexport default function PromptAreaComponent({\n  field_name,\n  setNodeClass,\n  nodeClass,\n  value,\n  onChange,\n  disabled,\n  editNode = false,\n  type = TypeModal.PROMPT,\n}: TextAreaComponentType) {\n  const [myValue, setMyValue] = useState(value);\n  const { openPopUp } = useContext(PopUpContext);\n  useEffect(() => {\n    if (disabled) {\n      setMyValue(\"\");\n      onChange(\"\");\n    }\n  }, [disabled, onChange]);\n\n  const handleSave = (t: string) => {\n    setMyValue(t);\n    onChange(t);\n  };\n\n  return (\n    <div className={disabled ? \"pointer-events-none w-full \" : \"w-full\"}>\n      <div className=\"flex w-full items-center\">\n        <span\n          onClick={() => {\n            openPopUp(\n              <GenericModal\n                type={type}\n                value={myValue}\n                buttonText=\"check & Save\"\n                modalTitle=\"Edit Prompt\"\n                setValue={(t: string) => {\n                  setMyValue(t);\n                  onChange(t);\n                }}\n                nodeClass={nodeClass}\n                setNodeClass={setNodeClass}\n              />\n            );\n          }}\n          className={\n            editNode\n              ? \"input-edit-node input-dialog\"\n              : (disabled ? \" input-disable text-ring \" : \"\") +\n                \" whitespace-wrap input-primary\"\n          }\n        >\n          {myValue !== \"\" ? myValue : \"enter your prompt\"}\n        </span>\n        <button\n          onClick={() => {\n            openPopUp(\n              <GenericModal\n                field_name={field_name}\n                type={TypeModal.PROMPT}\n                value={myValue}\n                buttonText=\"check & Save\"\n                modalTitle=\"Edit Prompt\"\n                setValue={handleSave}\n                nodeClass={nodeClass}\n                setNodeClass={setNodeClass}\n              />\n            );\n          }}\n        >\n          {!editNode && (\n            <ExternalLink\n              strokeWidth={1.5}\n              className={\n                \"icons-parameters-comp\" +\n                (disabled ? \" text-ring\" : \" hover:text-accent-foreground\")\n              }\n            />\n          )}\n        </button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/EvaluationPage/defaultPrompt.js",
    "content": "export default `Extract following from given question and ground truth\n\nQuestion:What powers the sun and what is its primary function?\nAnswer: The sun is powered by nuclear fission, similar to nuclear reactors on Earth, and its primary function is to provide light to the solar system.\nGround truth: The sun is actually powered by nuclear fusion, not fission. In its core, hydrogen atoms fuse to form helium, releasing a tremendous amount of energy. This energy is what lights up the sun and provides heat and light, essential for life on Earth. The sun's light also plays a critical role in Earth's climate system and helps to drive the weather and ocean currents.\nExtracted statements:\n[\n{{\n  \"statements that are present in both the answer and the ground truth\": [\"The sun's primary function is to provide light\"],\n  \"statements present in the answer but not found in the ground truth\": [\"The sun is powered by nuclear fission\", \"similar to nuclear reactors on Earth\"],\n  \"relevant statements found in the ground truth but omitted in the answer\": [\"The sun is powered by nuclear fusion, not fission\", \"In its core, hydrogen atoms fuse to form helium, releasing a tremendous amount of energy\", \"This energy provides heat and light, essential for life on Earth\", \"The sun's light plays a critical role in Earth's climate system\", \"The sun helps to drive the weather and ocean currents\"]\n}}\n]\n\nQuestion: What is the boiling point of water?\nAnswer: The boiling point of water is 100 degrees Celsius at sea level.\nGround truth: The boiling point of water is 100 degrees Celsius (212 degrees Fahrenheit) at sea level, but it can change with altitude.\nExtracted statements:\n[\n  {{\n    \"statements that are present in both the answer and the ground truth\": [\"The boiling point of water is 100 degrees Celsius at sea level\"],\n    \"statements present in the answer but not found in the ground truth\": [],\n    \"relevant statements found in the ground truth but omitted in the answer\": [\"The boiling point can change with altitude\", \"The boiling point of water is 212 degrees Fahrenheit at sea level\"]\n  }}\n]\n\nQuestion: What was the company's R&D expense as a percentage of revenue in 2021?\nAnswer: According to the information provided, the company's R&D expense accounted for 15.86% of revenue in 2021.\nGround truth: According to the company's prospectus data, the company's R&D expense accounted for 15.86% of revenue in 2021.\nExtracted statements:\n[\n  {{\n    \"statements that are present in both the answer and the ground truth\": [\"The company's R&D expense accounted for 15.86% of revenue in 2021\"],\n    \"statements present in the answer but not found in the ground truth\": [],\n    \"relevant statements found in the ground truth but omitted in the answer\": []\n  }}\n]\n\nQuestion: What was the EBITDA of Dameng in 2021?\nAnswer: Dameng's EBITDA in 2021 was 491,898,700 yuan.\nGround truth: According to Dameng Database's prospectus data, Dameng's EBITDA in 2021 was 491,898,500 yuan.\nExtracted statements:\n[\n  {{\n    \"statements that are present in both the answer and the ground truth\": [],\n    \"statements present in the answer but not found in the ground truth\": [\"Dameng's EBITDA in 2021 was 491,898,700 yuan\"],\n    \"relevant statements found in the ground truth but omitted in the answer\": [\"According to Dameng Database's prospectus data, Dameng's EBITDA in 2021 was 491,898,500 yuan\"]\n  }}\n]\n\nQuestion: What was Dameng's accounts receivable turnover ratio in 2022?\nAnswer: Based on the information provided, Dameng's accounts receivable turnover ratio in 2022 is unknown.\nGround truth: Sorry, Dameng has not yet disclosed its 2022 annual report data.\nExtracted statements:\n[\n  {{\n    \"statements that are present in both the answer and the ground truth\": [\"Dameng's 2022 accounts receivable turnover ratio is unknown\"],\n    \"statements present in the answer but not found in the ground truth\": [],\n    \"relevant statements found in the ground truth but omitted in the answer\": [],\n  }}\n]\n\n\nQuestion:{question}\nAnswer: {answer}\nGround truth: {ground_truth}\nExtracted statements:\"\"\"`"
  },
  {
    "path": "src/frontend/platform/src/pages/EvaluationPage/index.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/bs-ui/table\";\nimport { Tabs, TabsContent } from \"@/components/bs-ui/tabs\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport {\n  Evaluation,\n  deleteEvaluationApi,\n  getEvaluationApi,\n  getEvaluationUrlApi,\n} from \"@/controllers/API/evaluate\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useTable } from \"@/util/hook\";\nimport { downloadFile } from \"@/util/utils\";\nimport { map } from \"lodash-es\";\nimport { CircleHelpIcon } from \"lucide-react\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  EvaluationScore,\n  EvaluationScoreLabelMap,\n  EvaluationStatusEnum,\n  EvaluationStatusLabelMap,\n  EvaluationType,\n  EvaluationTypeLabelMap,\n} from \"./types\";\n\nexport default function EvaluationPage() {\n  const navigate = useNavigate();\n  const { t } = useTranslation();\n\n  const {\n    page,\n    pageSize,\n    data: datalist,\n    total,\n    loading,\n    setPage,\n    search,\n    reload,\n  } = useTable({ cancelLoadingWhenReload: true }, (param) =>\n    getEvaluationApi(param.page, param.pageSize)\n  );\n\n  useEffect(() => {\n    const intervalId = setInterval(() => {\n      reload();\n    }, 6000); // Poll every 6 seconds\n\n    return () => clearInterval(intervalId);\n  }, [reload]);\n\n  const handleDelete = (id) => {\n    bsConfirm({\n      title: t(\"prompt\"),\n      desc: t(\"evaluation.confirmDeleteEvaluation\"),\n      onOk(next) {\n        captureAndAlertRequestErrorHoc(\n          deleteEvaluationApi(id).then((res) => {\n            reload();\n          })\n        );\n        next();\n      },\n    });\n  };\n\n  const handleDownload = async (el) => {\n    const { url } = await getEvaluationUrlApi(el.result_file_path);\n    await downloadFile(checkSassUrl(url), el.file_name);\n  };\n\n  return (\n    <div className=\"relative h-full w-full px-2 py-4\">\n      {loading && (\n        <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n          <LoadingIcon />\n        </div>\n      )}\n      <div className=\"h-full overflow-y-auto pb-10\">\n        <Tabs defaultValue=\"account\" className=\"mb-[40px] w-full\">\n          <TabsContent value=\"account\">\n            <div className=\"flex items-center justify-end gap-4\">\n              <Button\n                className=\"px-8 text-[#fff]\"\n                onClick={() => navigate(\"/evaluation/create\")}\n              >\n                {t(\"create\")}\n              </Button>\n            </div>\n            <Table>\n              <TableHeader>\n                <TableRow>\n                  <TableHead className=\"min-w-[60px]\">\n                    {t(\"evaluation.id\")}\n                  </TableHead>\n                  <TableHead className=\"min-w-[100px]\">\n                    {t(\"evaluation.filename\")}\n                  </TableHead>\n                  <TableHead>{t(\"evaluation.skillAssistant\")}</TableHead>\n                  <TableHead className=\"w-[80px]\">\n                    {t(\"evaluation.status\")}\n                  </TableHead>\n                  <TableHead className=\"w-[310px]\">\n                    {t(\"evaluation.score\")}\n                  </TableHead>\n                  <TableHead className=\"min-w-[160px]\">\n                    {t(\"createTime\")}\n                  </TableHead>\n                  <TableHead className=\"text-right\">\n                    {t(\"operations\")}\n                  </TableHead>\n                </TableRow>\n              </TableHeader>\n\n              <TableBody>\n                {datalist.map((el: Evaluation) => (\n                  <TableRow key={el.id}>\n                    <TableCell className=\"font-medium\">{el.id}</TableCell>\n                    <TableCell>{el.file_name || \"--\"}</TableCell>\n                    <TableCell>\n                      <div className=\"flex items-center\">\n                        <Badge className=\"whitespace-nowrap\">\n                          {t(EvaluationTypeLabelMap[EvaluationType[el.exec_type]]?.label ?? t(\"unknown\"))}\n                        </Badge>\n                        &nbsp;\n                        <span className=\"whitespace-nowrap text-medium-indigo\">\n                          {el.unique_name}\n                        </span>\n                        &nbsp;\n                        <span className=\"ml-1 whitespace-nowrap text-medium-indigo\">\n                          {el.version_name}\n                        </span>\n                      </div>\n                    </TableCell>\n\n                    <TableCell>\n                      {!!el.status && (\n                        <div className=\"flex items-center\">\n                          <Badge\n                            variant={EvaluationStatusLabelMap[el.status]?.variant ?? \"default\"}\n                            className={\"whitespace-nowrap min-w-[60px] justify-center\"}\n                          >\n                            {t(EvaluationStatusLabelMap[el.status]?.label ?? t(\"unknown\"))}\n                            {el.status === EvaluationStatusEnum.running\n                              ? ` ${el.progress}`\n                              : null}\n                            {el.status === EvaluationStatusEnum.failed && (\n                              <TooltipProvider>\n                                <Tooltip>\n                                  <TooltipTrigger asChild>\n                                    <span className=\"\">\n                                      <CircleHelpIcon className=\"h-3.5 w-3.5\" />\n                                    </span>\n                                  </TooltipTrigger>\n                                  <TooltipContent\n                                    className=\"max-w-[400px] whitespace-normal\"\n                                    side=\"top\"\n                                  >\n                                    <p className=\"break-words\">\n                                      {el.description || t(\"description\")}\n                                    </p>\n                                  </TooltipContent>\n                                </Tooltip>\n                              </TooltipProvider>\n                            )}\n                          </Badge>\n\n\n                        </div>\n                      )}\n                    </TableCell>\n                    <TableCell>\n                      <div className=\"flex flex-wrap\">\n                        {el.result_score\n                          ? map(el.result_score, (value, key) => {\n                            const labelKey = EvaluationScoreLabelMap[EvaluationScore[key]]?.label;\n                            const displayLabel = labelKey ? t(labelKey) : key;\n                            return (\n                              <span className=\"whitespace-nowrap\">\n                                {displayLabel}\n                                :{value}&nbsp;\n                              </span>\n                            );\n                          })\n                          : \"-\"}\n                      </div>\n                    </TableCell>\n                    <TableCell>\n                      {el.create_time.replace(\"T\", \" \") || \"--\"}\n                    </TableCell>\n                    <TableCell className=\"flex justify-end\">\n                      <div className=\"flex\">\n                        {el.status !== EvaluationStatusEnum.failed && <Button\n                          variant=\"link\"\n                          className=\"no-underline hover:underline\"\n                          onClick={() => handleDownload(el)}\n                        >\n                          {t(\"evaluation.download\")}\n                        </Button>}\n                        <Button\n                          variant=\"link\"\n                          onClick={() => handleDelete(el.id)}\n                          className=\"ml-1 px-0 text-red-500\"\n                        >\n                          {t(\"delete\")}\n                        </Button>\n                      </div>\n                    </TableCell>\n                  </TableRow>\n                ))}\n              </TableBody>\n            </Table>\n          </TabsContent>\n          <TabsContent value=\"password\"></TabsContent>\n        </Tabs>\n      </div>\n      <div className=\"bisheng-table-footer px-6 bg-background-login\">\n        <p className=\"desc\">{t(\"evaluation.evaluationCollection\")}</p>\n        <div>\n          <AutoPagination\n            page={page}\n            pageSize={pageSize}\n            total={total}\n            onChange={(newPage) => setPage(newPage)}\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/EvaluationPage/types.ts",
    "content": "export enum EvaluationType {\n  flow = \"flow\",\n   skill = \"skill\",  \n  assistant = \"assistant\",\n  workflow = \"workflow\"\n}\n\nexport const EvaluationTypeLabelMap = {\n  [EvaluationType.flow]: {\n    label: \"build.skill\",\n  },\n  [EvaluationType.skill]: { label: \"build.skill\" },\n  [EvaluationType.assistant]: {\n    label: \"build.assistant\",\n  },\n   [EvaluationType.workflow]: {\n    label: \"build.workflow\",\n  },\n};\n\nexport enum EvaluationScore {\n  answer_f1 = \"answer_f1\",\n  answer_precision = \"answer_precision\",\n  answer_recall = \"answer_recall\",\n}\n\nexport const EvaluationScoreLabelMap = {\n  [EvaluationScore.answer_f1]: {\n    label: \"F1\",\n  },\n  [EvaluationScore.answer_precision]: {\n    label: \"evaluation.precision\",\n  },\n  [EvaluationScore.answer_recall]: {\n    label: \"evaluation.recall\",\n  },\n};\n\nexport enum EvaluationStatusEnum {\n  running = 1,\n  failed = 2,\n  success = 3,\n}\nexport const EvaluationStatusLabelMap = {\n  [EvaluationStatusEnum.running]: {\n    label: \"inProgress\",\n    variant: \"secondary\",\n  },\n  [EvaluationStatusEnum.failed]: {\n    label: \"failed\",\n    variant: \"destructive\",\n  },\n  [EvaluationStatusEnum.success]: {\n    label: \"success\",\n    variant: \"default\",\n  },\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/AdjustFilesUpload.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport StepProgress from \"@/components/bs-ui/step\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { rebUploadFile, retryKnowledgeFileApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ChevronLeft } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport DialogWithRepeatFiles from \"./components/DuplicateFileDialog\";\nimport FileUploadStep2 from \"./components/FileUploadStep2\";\nimport FileUploadStep4 from \"./components/FileUploadStep4\";\nimport PreviewResult from \"./components/PreviewResult\";\n\n// Adjustment mode fixed step labels (3 steps)\nconst getAdjustStepLabels = (t) => [\n  t('segmentStrategy'),\n  t('textComparison'),\n  t('dataProcessing')\n];\n\nexport default function AdjustFilesUpload() {\n  const { t } = useTranslation('knowledge');\n  const navigate = useNavigate();\n  const location = useLocation();\n  const { message } = useToast();\n  const { fileId: knowledgeId } = useParams();\n\n  // Get initial data for adjustment mode from route state (must pass file data)\n  const initFileData = location.state?.fileData;\n  useEffect(() => {\n    // If no initialization data, it means direct access, redirect to /filelib\n    if (!initFileData) {\n      navigate('/filelib', { replace: true });\n    }\n  }, [initFileData, navigate]);\n  if (!initFileData) {\n    navigate(-1); // Roll back when no data\n    return null;\n  }\n  // Adjustment mode exclusive state\n  const [currentStep, setCurrentStep] = useState(1);\n  const getParsedSplitRule = (rawSplitRule) => {\n    // Handle no split_rule or empty case\n    if (!rawSplitRule) {\n      return {\n        knowledge_id: \"\",\n        separator: [\"\\\\n\\\\n\", \"\\\\n\"],\n        separator_rule: [\"after\", \"after\"],\n        chunk_size: 1000,\n        chunk_overlap: 100,\n        retain_images: false,\n        force_ocr: true,\n        enable_formula: true,\n        filter_page_header_footer: false,\n        excel_rule: {\n          slice_length: 10,\n          append_header: true,\n          header_start_row: 1,\n          header_end_row: 1\n        }\n      };\n    }\n\n    try {\n      // Parse JSON string\n      const parsed = JSON.parse(rawSplitRule);\n      // Format adaptation: Unify field format to avoid child component processing\n      return {\n        knowledge_id: parsed.knowledge_id || \"\", // Knowledge base ID\n        // Separator: Ensure it's an array, default double newline + single newline\n        separator: Array.isArray(parsed.separator) ? parsed.separator : [\"\\\\n\\\\n\", \"\\\\n\"],\n        // Separator rule: Ensure consistent length with separator, default after\n        separator_rule: Array.isArray(parsed.separator_rule)\n          ? parsed.separator_rule\n          : [\"after\", \"after\"],\n        // Chunk size: Convert number to string (child component uses string format), default 1000\n        chunk_size: parsed.chunk_size ?? 1000,\n        // Overlap size: Default 100\n        chunk_overlap: parsed.chunk_overlap ?? 100,\n        // Boolean conversion: 0→false, 1→true, default false\n        retain_images: parsed.retain_images === 1,\n        force_ocr: parsed.force_ocr === 1,\n        enable_formula: parsed.enable_formula === 1,\n        filter_page_header_footer: parsed.filter_page_header_footer === 1,\n        // Table rules: Default value fallback\n        excel_rule: {\n          slice_length: parsed.excel_rule?.slice_length || 10,\n          append_header: parsed.excel_rule?.append_header === 1,\n          header_start_row: parsed.excel_rule?.header_start_row || 1,\n          header_end_row: parsed.excel_rule?.header_end_row || 1\n        }\n      };\n    } catch (error) {\n      // Return default config when parsing fails to avoid crash\n      console.error(\"split_rule parse failed:\", error);\n      return {\n        knowledge_id: \"\",\n        separator: [\"\\\\n\\\\n\", \"\\\\n\"],\n        separator_rule: [\"after\", \"after\"],\n        chunk_size: 1000,\n        chunk_overlap: 100,\n        retain_images: false,\n        force_ocr: true,\n        enable_formula: true,\n        filter_page_header_footer: false,\n        excel_rule: {\n          slice_length: 10,\n          append_header: true,\n          header_start_row: 1,\n          header_end_row: 1\n        }\n      };\n    }\n  };\n  const fileName = initFileData.name || initFileData.file_name || '';\n  const fileSuffix = fileName.split('.').pop()?.toLowerCase() || 'txt';\n  const fileType = ['xlsx', 'xls', 'csv'].includes(fileSuffix) ? 'table' : 'file';\n\n  const [resultFiles, setResultFiles] = useState([\n    {\n      id: initFileData.id,\n      fileName: initFileData.name || initFileData.file_name, // Compatible field name\n      file_path: initFileData.filePath || initFileData.object_name, // Compatible file path\n      suffix: initFileData.suffix || initFileData.file_name?.split(\".\").pop() || \"\", // Parse suffix\n      previewUrl: initFileData.previewUrl,\n      fileType: fileType,\n      split_rule: getParsedSplitRule(initFileData.split_rule), // Pass converted config object\n      isEtl4lm: initFileData.fileType,\n    }\n  ]);\n\n  const [segmentRules, setSegmentRules] = useState(null);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isNextDisabled, setIsNextDisabled] = useState(false);\n  const [repeatFiles, setRepeatFiles] = useState([]);\n  const [retryLoad, setRetryLoad] = useState(false);\n\n  // Ref management\n  const fileUploadStep2Ref = useRef(null);\n  const _tempConfigRef = useRef({});\n  const submittingRef = useRef(false);\n  const repeatCallBackRef = useRef(() => setCurrentStep(3));\n\n  // Step 2: Segmentation strategy completed, receive config and jump to step 2 (original text comparison)\n  const handleStep2Next = (step, config) => {\n    if (config) {\n      setSegmentRules(config);\n    }\n    setCurrentStep(2);\n  };\n\n  // Step 2: Original text comparison callback, control next button disabled state\n  const handlePreviewResult = (isSuccess) => {\n    setIsNextDisabled(!isSuccess);\n  };\n\n  // Next: Jump based on current step\n  const handleNext = () => {\n    switch (currentStep) {\n      case 1: // Step 1 → Step 2 (segment → compare)\n        if (fileUploadStep2Ref.current) {\n          fileUploadStep2Ref.current.handleNext();\n        }\n        break;\n      case 2: // Step 2 → Step 3 (compare → process)\n        // Fix: Save config first, then jump to step 3 after success (removed premature setCurrentStep)\n        if (segmentRules) {\n          handleSave(segmentRules);\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  // Previous: Rollback based on current step\n  const handleBack = () => {\n    switch (currentStep) {\n      case 1:\n        navigate(-1);\n        break;\n      case 2:\n        setCurrentStep(1);\n        break;\n      case 3:\n        setCurrentStep(2);\n        break;\n      default:\n        break;\n    }\n  };\n\n  // API: Save segmentation strategy config (core fix point)\n  const handleSave = (_config) => {\n    if (submittingRef.current) return;\n    submittingRef.current = true;\n    setIsSubmitting(true);\n\n    /**\n     * Convert UI-visible newline escape sequences (\"\\\\n\") back to real newlines (\"\\n\")\n     */\n    const normalizeSeparators = (arr) =>\n      (arr || []).map((s) =>\n        typeof s === 'string' ? s.replace(/\\\\n/g, '\\n') : s\n      );\n\n    const apiConfig = {\n      knowledge_id: Number(_config.rules.knowledgeId || initFileData.knowledgeId || knowledgeId),\n      separator: normalizeSeparators(_config.rules.separator),\n      separator_rule: _config.rules.separatorRule,\n      chunk_size: _config.rules.chunkSize,\n      chunk_overlap: _config.rules.chunkOverlap,\n      excel_rule: _config.cellGeneralConfig,\n      kb_file_id: _config.rules.fileList[0].id,\n      retain_images: _config.rules.retainImages,\n      enable_formula: _config.rules.enableFormula,\n      force_ocr: _config.rules.forceOcr,\n      fileter_page_header_footer: _config.rules.pageHeaderFooter,\n      file_path: _config.rules.fileList[0].filePath\n    };\n\n    captureAndAlertRequestErrorHoc(\n      rebUploadFile(apiConfig)\n        .then(res => {\n\n          // 1. Fix duplicate file check (single object processing)\n          const _repeatFiles = res.status === 3 ? [res] : [];\n          if (_repeatFiles.length) {\n            setRepeatFiles(_repeatFiles);\n            return; // Don't jump steps when there are duplicate files\n          }\n\n          // 2. Fix file ID update (directly use res.id, no need for array index)\n          setResultFiles(prevFiles =>\n            prevFiles.map(file => ({\n              ...file,\n              fileId: res.id // Key fix: Single object directly get id\n            }))\n          );\n\n          // 3. Fix step jump timing (ensure data is updated before jumping)\n          message({ variant: 'success', description: t('adjustSegmentStrategySuccess') });\n          setCurrentStep(3); // Only jump when successful and no duplicates\n        })\n        .finally(() => {\n          submittingRef.current = false;\n          setIsSubmitting(false);\n        })\n    );\n\n    _tempConfigRef.current = apiConfig;\n  };\n\n  const handleRetry = (objs) => {\n    setRetryLoad(true);\n    const params = {\n      knowledge_id: Number(_tempConfigRef.current.knowledge_id),\n      separator: _tempConfigRef.current.separator,\n      separator_rule: _tempConfigRef.current.separator_rule,\n      chunk_size: _tempConfigRef.current.chunk_size,\n      chunk_overlap: _tempConfigRef.current.chunk_overlap,\n      file_objs: objs\n    };\n\n    captureAndAlertRequestErrorHoc(\n      retryKnowledgeFileApi(params)\n        .then(res => {\n          // Additional: Update file ID after overwrite\n          setResultFiles(prevFiles =>\n            prevFiles.map(file => ({\n              ...file,\n              fileId: res.id // Assume retry API also returns single object with id\n            }))\n          );\n          setRepeatFiles([]);\n          setRetryLoad(false);\n          message({ variant: 'success', description: t('parseSuccess') });\n          repeatCallBackRef.current();\n        })\n        .catch(() => {\n          setRetryLoad(false); // Also need to stop loading on error\n        })\n    );\n  };\n\n  const handleUnRetry = () => {\n    setRepeatFiles([]);\n    repeatCallBackRef.current();\n  }\n\n  return (\n    <div className=\"relative h-full flex flex-col\">\n      {/* Top return bar */}\n      <div className=\"pt-4 px-4\">\n        <div className=\"flex items-center mb-4\">\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"bg-[#fff] size-8\"\n            onClick={() => navigate(-1)}\n          >\n            <ChevronLeft />\n          </Button>\n          <span className=\"text-foreground text-sm font-black pl-4\">{t('backToKnowledgeDetail')}</span>\n        </div>\n\n        {/* Adjustment mode step progress */}\n        <StepProgress\n          align=\"center\"\n          currentStep={currentStep}\n          labels={getAdjustStepLabels(t)}\n        />\n      </div>\n\n      {/* Step content area */}\n      <div className=\"flex flex-1 px-4\">\n        <div className=\"w-full\">\n          <div className=\"h-full py-4\">\n            <div className={currentStep === 1 ? \"block\" : \"hidden\"}>\n              <FileUploadStep2\n                ref={fileUploadStep2Ref}\n                step={currentStep}\n                resultFiles={resultFiles}\n                isSubmitting={isSubmitting}\n                onNext={handleStep2Next}\n                onPrev={handleBack}\n                kId={knowledgeId}\n                isAdjustMode\n              />\n            </div>\n            {/* Step 2: Original text comparison */}\n            {currentStep === 2 && segmentRules && (\n              <div className=\"block\">\n                <PreviewResult\n                  rules={segmentRules.rules}\n                  resultFiles={resultFiles}\n                  onPrev={handleBack}\n                  onNext={() => handleSave(segmentRules)}\n                  handlePreviewResult={handlePreviewResult}\n                  step={currentStep}\n                  previewCount={0}\n                  applyEachCell={segmentRules.applyEachCell}\n                  cellGeneralConfig={segmentRules.cellGeneralConfig}\n                  kId={knowledgeId}\n                  isAdjustMode\n                />\n\n                {/* Step 2 bottom buttons */}\n                <div className=\"fixed bottom-2 right-12 flex gap-4 bg-background p-2 rounded-lg shadow-sm z-10\">\n                  <Button\n                    className=\"h-8\"\n                    variant=\"outline\"\n                    onClick={handleBack}\n                  >\n                    {t('previousStep')}\n                  </Button>\n                  <Button\n                    className=\"h-8\"\n                    onClick={handleNext}\n                    disabled={isNextDisabled || isSubmitting}\n                  >\n                    {isSubmitting ? <LoadingIcon className=\"h-4 w-4 mr-1\" /> : null}\n                    {t('nextStep')}\n                  </Button>\n                </div>\n              </div>\n            )}\n            {/* Step 3: Data processing */}\n            {currentStep === 3 && (\n              <FileUploadStep4 data={resultFiles} kId={knowledgeId} isAdjustMode />\n            )}\n          </div>\n        </div>\n      </div>\n\n      {/* Duplicate file reminder dialog */}\n      <DialogWithRepeatFiles\n        repeatFiles={repeatFiles}\n        setRepeatFiles={setRepeatFiles}\n        unRetry={handleUnRetry}\n        onRetry={handleRetry}\n        retryLoad={retryLoad}\n        t={t}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/KnowledgeFile.tsx",
    "content": "import { useNavigate } from \"react-router-dom\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport { Input, SearchInput } from \"../../components/bs-ui/input\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../components/bs-ui/table\";\n\nimport { BookIcon } from \"@/components/bs-icons/knowledge\";\nimport { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Select, SelectContent, SelectItem, SelectTrigger } from \"@/components/bs-ui/select\";\nimport { toast, useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { getKnowledgeModelConfig } from \"@/controllers/API/finetune\";\nimport { CircleAlert, Copy, Ellipsis, LoaderCircle, Settings, Trash2 } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Textarea } from \"../../components/bs-ui/input\";\nimport AutoPagination from \"../../components/bs-ui/pagination/autoPagination\";\nimport { userContext } from \"../../contexts/userContext\";\nimport { copyLibDatabase, createFileLib, deleteFileLib, readFileLibDatabase, updateKnowledge } from \"../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { useTable } from \"../../util/hook\";\nimport { useModel } from \"../ModelPage/manage\";\nimport { ModelSelect } from \"../ModelPage/manage/tabs/WorkbenchModel\";\n\n// Knowledge base status\nconst enum KnowledgeBaseStatus {\n    Unpublished = 0,\n    Published = 1,   // Document knowledge base build success status\n    Copying = 2,\n    Rebuilding = 3,  // Document knowledge base rebuilding status\n    Failed = 4       // Document knowledge base rebuild failed status\n}\n\nfunction CreateModal({ datalist, open, onOpenChange, onLoadEnd, mode = 'create', currentLib = null }) {\n    const { t } = useTranslation('knowledge')\n    const navigate = useNavigate()\n\n    const nameRef = useRef(null)\n    const descRef = useRef(null)\n    const [modelId, setModelId] = useState('')\n\n    const [isSubmitting, setIsSubmitting] = useState(false)\n    const [isModelChanged, setIsModelChanged] = useState(false)\n\n    const { embeddings, isLoading } = useModel()\n    // Unified handling of model data fetching\n    useEffect(() => {\n        if (!open) return;\n\n        const fetchModelData = async () => {\n            try {\n                if (mode === 'create') {\n                    const config = await getKnowledgeModelConfig();\n                    setModelId(config.embedding_model_id);\n                } else {\n                    setModelId(currentLib.model);\n                }\n\n                if (mode === 'edit' && currentLib) {\n                    // Use setTimeout to ensure DOM has been rendered\n                    setTimeout(() => {\n                        if (nameRef.current) nameRef.current.value = currentLib.name || '';\n                        if (descRef.current) descRef.current.value = currentLib.description || '';\n                    }, 0);\n                }\n            } catch (error) {\n                console.error('Failed to load model data:', error);\n                toast({\n                    variant: \"error\",\n                    description: t('loadModelError')\n                });\n            }\n        };\n\n        fetchModelData();\n    }, [open, mode, currentLib]);\n\n    useEffect(() => {\n        // Clear all internal state when modal closes\n        if (!open) {\n            setModelId('');\n            setIsSubmitting(false);\n            setIsModelChanged(false);\n            setError({ name: false, desc: false });\n        }\n    }, [open]);\n\n    const { toast } = useToast()\n    const [error, setError] = useState({ name: false, desc: false })\n\n    const handleCreate = async (e, isImport = false) => {\n        const name = nameRef.current.value || ''; // Name (default empty string to avoid null)\n        let desc = descRef.current.value || '';   // Description (default empty string)\n\n        // 1. Define the fixed text part of the default description (excluding name)\n        const defaultDescPrefix = t('defaultDescPrefix');\n        const defaultDescSuffix = t('defaultDescSuffix');\n        // Fixed text total length = prefix length + suffix length\n        const fixedTextLength = defaultDescPrefix.length + defaultDescSuffix.length;\n        // Maximum name length allowed = 200 - fixed text length (ensure name + fixed text ≤ 200)\n        const maxNameLengthForDefaultDesc = 200 - fixedTextLength;\n\n        // 2. When description is not entered, generate default description (strictly control total length ≤ 200)\n        if (!desc) {\n            // Case 1: Name length ≤ maximum allowable length → directly concatenate to generate default description\n            if (name.length <= maxNameLengthForDefaultDesc) {\n                desc = `${defaultDescPrefix}${name}${defaultDescSuffix}`;\n            }\n            // Case 2: Name length > maximum allowable length → truncate name then concatenate\n            else {\n                desc = '';\n            }\n        }\n\n        // 3. Original validation logic (only for user-entered descriptions, default description already ensures ≤ 200)\n        if (!name) {\n            handleError(t('lib.enterLibraryName', { ns: 'bs' }));\n            return;\n        }\n        if (name.length > 200) {\n            handleError(t('nameExceedsLimit'));\n            return;\n        }\n\n\n        // Fix: Name duplication validation logic\n        // In edit mode and name unchanged, skip duplication check\n        const isEditMode = mode === 'edit' && currentLib;\n        const nameUnchanged = isEditMode && name === currentLib.name;\n\n        if (!nameUnchanged && datalist.find(data => data.name === name && (!currentLib || data.id !== currentLib.id))) {\n            handleError(t('lib.nameExists', { ns: 'bs' }));\n            return;\n        }\n\n        if (descRef.current.value && desc.length > 200) {\n            handleError(t('lib.descriptionLimit', { ns: 'bs' }));\n            return;\n        }\n\n        setIsSubmitting(true)\n        if (mode === 'create') {\n            await captureAndAlertRequestErrorHoc(createFileLib({\n                name,\n                description: desc,\n                model: modelId,\n                type: 0\n            }).then(res => {\n                window.libname = [name, desc]\n                navigate(isImport\n                    ? `/filelib/upload/${res.id}`\n                    : `/filelib/${res.id}`\n                );\n                onOpenChange(false);\n            })).finally(() => {\n                setIsSubmitting(false)\n            })\n        } else {\n            const data = {\n                \"model_id\": modelId,\n                \"model_type\": \"embedding\",\n                \"knowledge_id\": currentLib.id,\n                \"knowledge_name\": name,\n                \"description\": desc\n            }\n            await captureAndAlertRequestErrorHoc(updateKnowledge(data).then(res => {\n                toast({\n                    variant: \"success\",\n                    description: t('updateSuccess')\n                })\n                onOpenChange(false);\n                onLoadEnd()\n            }).catch(error => {\n                toast({ variant: \"error\", description: error || t('updateFailed') });\n                onOpenChange(false);\n            })).finally(() => {\n                setIsSubmitting(false)\n            })\n        }\n    }\n\n    const handleError = (message) => {\n        toast({\n            variant: 'error',\n            description: message\n        });\n    }\n\n    return <Dialog open={open} onOpenChange={onOpenChange}>\n        <DialogContent className=\"sm:max-w-[625px]\">\n            <DialogHeader>\n                <DialogTitle>{mode === 'create' ? t('lib.createLibrary', { ns: 'bs' }) : t('knowledgeBaseSettings')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"flex flex-col gap-4 py-2\">\n                {mode === 'edit' && currentLib && (\n                    <div className=\"space-y-4\">\n                        <div className=\"flex items-center gap-48\">\n                            <label className=\"bisheng-label text-sm text-gray-500\">{t('lib.knowledgeBaseId', { ns: 'bs' })}</label>\n                            <div className=\"text-sm\">{currentLib.id}</div>\n                        </div>\n                        <div className=\"flex items-center gap-48\">\n                            <label className=\"bisheng-label text-sm text-gray-500\">{t('createTime', { ns: 'bs' })}</label>\n                            <div className=\"text-sm\">\n                                {currentLib.create_time.replace('T', ' ')}\n                            </div>\n                        </div>\n                    </div>\n                )}\n                <div className=\"\">\n                    <label htmlFor=\"name\" className=\"bisheng-label\">{t('system.libraryName', { ns: 'bs' })}</label>\n                    <span className=\"text-red-500\">*</span>\n                    <Input\n                        name=\"name\"\n                        ref={nameRef}\n                        defaultValue={mode === 'edit' && currentLib ? currentLib.name : ''}\n                        placeholder={t('lib.enterLibraryName', { ns: 'bs' })}\n                        className={`col-span-3 ${error.name && 'border-red-400'}`}\n                    />\n                </div>\n                <div className=\"\">\n                    <label htmlFor=\"desc\" className=\"bisheng-label\">{t('lib.desc', { ns: 'bs' })}</label>\n                    <Textarea\n                        id=\"desc\"\n                        ref={descRef}\n                        defaultValue={mode === 'edit' && currentLib ? currentLib.description : ''}\n                        placeholder={t('enterKnowledgeBaseDescription')}\n                        rows={8}\n                        className={`col-span-3 ${error.desc && 'border-red-400'}`}\n                    />\n                </div>\n                <div className=\"\">\n                    <label htmlFor=\"model\" className=\"bisheng-label\">{t('lib.embeddingModelSelection', { ns: 'bs' })}</label>\n                    {isLoading ? (\n                        <div className=\"flex items-center gap-2 p-3 border rounded-md bg-gray-50\">\n                            <LoadIcon className=\"w-4 h-4 animate-spin\" />\n                            <span className=\"text-sm text-gray-600\">{t('loadingModelList')}</span>\n                        </div>\n                    ) : embeddings.length > 0 ? (\n                        <ModelSelect\n                            key={`model-select-${modelId}`}\n                            label=\"\"\n                            close\n                            value={modelId}\n                            options={embeddings}\n                            onChange={(modelId) => {\n                                setModelId(modelId);\n                                if (mode === 'edit') setIsModelChanged(true);\n                            }}\n                        />\n                    ) : (\n                        <div className=\"p-3 border rounded-md bg-gray-50 text-sm text-gray-600\">\n                            {t('noAvailableModels')}\n                        </div>\n                    )}\n                    {mode === 'edit' && isModelChanged && (\n                        <p className=\"text-red-500 text-sm mt-1 flex items-center gap-1\">\n                            <CircleAlert className=\"w-4 h-4\" color=\"#ef4444\" />\n                            {t('embeddingModelChangeWarning')}\n                        </p>\n                    )}\n                </div>\n            </div>\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-8 h-8\">{t('cancel')}</Button>\n                </DialogClose>\n                {mode === 'create' ? (\n                    <>\n                        <Button\n                            variant=\"outline\"\n                            className=\"px-8 h-8 flex\"\n                            onClick={(e) => handleCreate(e, false)}\n                            disabled={isSubmitting}\n                        >\n                            {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                            {t('finishCreate')}\n                        </Button>\n                        <Button\n                            type=\"submit\"\n                            className=\"px-8 h-8 flex\"\n                            onClick={(e) => handleCreate(e, true)}\n                            disabled={isSubmitting}\n                        >\n                            {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                            {t('createImport', { ns: 'bs' })}\n                        </Button>\n                    </>\n                ) : (\n                    <Button\n                        type=\"submit\"\n                        className=\"px-8 h-8 flex\"\n                        onClick={(e) => handleCreate(e, false)}\n                        disabled={isSubmitting}\n                    >\n                        {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                        {t('confirm')}\n                    </Button>\n                )}\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}\n\nconst doing = {} // Record knowledge bases being copied\nexport default function KnowledgeFile() {\n    const [open, setOpen] = useState(false);\n    const { user } = useContext(userContext);\n    const { message } = useToast()\n    const navigate = useNavigate()\n    const [settingsOpen, setSettingsOpen] = useState(false);\n    const [currentSettingLib, setCurrentSettingLib] = useState(null);\n    const [copyLoadingId, setCopyLoadingId] = useState<string | null>(null);\n    // New: Control Select dropdown state to avoid occasional popup issues\n    const [selectOpenId, setSelectOpenId] = useState<string | null>(null);\n    const [modalKey, setModalKey] = useState(0); // New: Used to force re-render of modal\n\n    const { page, pageSize, data: datalist, total, loading, setPage, search, reload } = useTable({ cancelLoadingWhenReload: true }, (param) =>\n        readFileLibDatabase({ ...param, name: param.keyword })\n    )\n\n    // Enable polling during copying\n    useEffect(() => {\n        const todos = datalist.reduce((prev, curr) => {\n            if (curr.state === KnowledgeBaseStatus.Copying) {\n                prev.push({ id: curr.id, name: curr.name })\n            }\n            return prev\n        }, [])\n\n        todos.map(todo => {\n            if (doing[todo.id]) {\n                const lib = datalist.find(item => item.id === todo.id);\n                if (lib && lib.state !== KnowledgeBaseStatus.Copying) {\n                    message({\n                        variant: 'success',\n                        description: t('copyCompleted', { name: todo.name })\n                    })\n                    delete doing[todo.id]\n                }\n            }\n        })\n\n        let timer = null\n        if (todos.length > 0) {\n            timer = setTimeout(() => {\n                reload()\n            }, 5000);\n        }\n\n        return () => {\n            clearTimeout(timer)\n        }\n    }, [datalist])\n\n    const handleDelete = (id) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('lib.confirmDeleteLibrary', { ns: 'bs' }),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteFileLib(id).then(res => {\n                    reload();\n                }));\n                next()\n            },\n        })\n    }\n\n    const handleOpenSettings = (lib) => {\n        console.log(\"=== handleOpenSettings execution started ===\");\n        console.log(\"Clicked lib ID:\", lib.id);\n        // 1. Deep copy: Completely break reference association with original lib (solving nested property reference issues)\n        const newCurrentLib = JSON.parse(JSON.stringify(lib));\n        // 2. Inject unique identifier: Ensure currentSettingLib reference is absolutely unique even if data is identical\n        newCurrentLib.__updateKey = Date.now(); // Generate different timestamp for each click\n\n        setCurrentSettingLib(newCurrentLib); // Now passing a completely new object reference\n        setSettingsOpen(true);\n        setModalKey(prev => prev + 1); // Keep modalKey to ensure modal re-mounts\n        console.log(\"handleOpenSettings called with lib:\", newCurrentLib); // Verify print\n    };\n\n    const handleSettingsClose = (isOpen) => {\n        console.log(\"handleSettingsClose called with isOpen:\", isOpen);\n        setSettingsOpen(isOpen);\n        if (!isOpen) {\n            setCurrentSettingLib(null);\n            setSelectOpenId(null);\n            console.log(\"Settings modal closed and state cleared\");\n        }\n    };\n\n    // Cache page before entering detail page, temporary solution\n    const handleCachePage = () => {\n        window.LibPage = { page, type: 'file' }\n    }\n\n    useEffect(() => {\n        const _page = window.LibPage\n        if (_page) {\n            setPage(_page.page);\n            delete window.LibPage\n        } else {\n            setPage(1);\n        }\n    }, [])\n\n    const { t, i18n } = useTranslation('knowledge');\n    useEffect(() => {\n        i18n.loadNamespaces('knowledge');\n    }, [i18n]);\n\n    // Copy knowledge base\n    const handleCopy = async (elem) => {\n        const newName = `${elem.name}${t('copySuffix')}`;\n        if (newName.length > 200) {\n            toast({\n                title: t('operationFailed'),\n                variant: 'error',\n                description: t('copyNameExceedsLimit')\n            });\n\n            // Reset all related states\n            setSelectOpenId(null);\n            setCopyLoadingId(null);\n\n            // Force re-render of Select component\n            setModalKey(prev => prev + 1);\n            return;\n        }\n\n        setCopyLoadingId(elem.id);\n        doing[elem.id] = true;\n\n        try {\n            await captureAndAlertRequestErrorHoc(copyLibDatabase(elem.id, newName));\n            reload();\n        } catch (error) {\n            message({\n                variant: 'error',\n                description: t('copyFailed')\n            });\n        } finally {\n            setCopyLoadingId(null);\n            setSelectOpenId(null);\n            // Ensure Select component resets\n            setModalKey(prev => prev + 1);\n        }\n    }\n\n    useEffect(() => {\n        console.log(\"settingsOpen state changed:\", settingsOpen);\n        console.log(\"currentSettingLib:\", currentSettingLib);\n        console.log(\"modalKey:\", modalKey);\n    }, [settingsOpen, currentSettingLib, modalKey]);\n\n    return (\n        <div className=\"relative\">\n            {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>}\n            <div className=\"h-[calc(100vh-128px)] overflow-y-auto pb-20\">\n                <div className=\"flex justify-end gap-4 items-center absolute right-0 top-[-44px]\">\n                    <SearchInput placeholder={t('lib.searchPlaceholder', { ns: 'bs' })} onChange={(e) => search(e.target.value)} />\n                    <Button className=\"px-8 text-[#FFFFFF]\" onClick={() => setOpen(true)}>{t('create', { ns: 'bs' })}</Button>\n                </div>\n                <Table noScroll>\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead>{t('lib.libraryName', { ns: 'bs' })}</TableHead>\n                            <TableHead>{t('updateTime')}</TableHead>\n                            <TableHead>{t('lib.createUser', { ns: 'bs' })}</TableHead>\n                            <TableHead className=\"text-right\">{t('operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {datalist.map((el: any) => (\n                            <TableRow\n                                key={el.id}\n                                className=\"\"\n                                onClick={() => {\n                                    if ([KnowledgeBaseStatus.Copying, KnowledgeBaseStatus.Unpublished].includes(el.state)) return;\n                                    window.libname = [el.name, el.description];\n                                    navigate(`/filelib/${el.id}`);\n                                    handleCachePage();\n                                }}\n                            >\n                                <TableCell\n                                    className=\"font-medium max-w-[200px]\"\n                                >\n                                    <div className=\"flex items-center gap-2\">\n                                        <div className=\"flex items-center justify-center size-12 text-white rounded-[4px]  w-[40px] h-[40px]\">\n                                            <BookIcon className=\"text-primary size-10\" />\n                                        </div>\n                                        <div>\n                                            <div className=\"truncate max-w-[500px] w-[264px] text-[14px] font-medium pt-2 flex items-center gap-2\">\n                                                {el.name}\n                                            </div>\n                                            <Tip\n                                                side=\"top\"\n                                                content={el.description?.length > 30 ? el.description : ''}\n                                            >\n                                                <div className=\"truncate max-w-[500px] text-[12px] text-[#5A5A5A] pt-1\">\n                                                    {el.description || ''}\n                                                </div>\n                                            </Tip>\n                                        </div>\n                                    </div>\n                                </TableCell>\n\n                                <TableCell\n                                    className=\"text-[#5A5A5A]\"\n                                >\n                                    {el.update_time.replace('T', ' ')}\n                                </TableCell>\n\n                                <TableCell\n                                    className=\"max-w-[300px] break-all\"\n                                >\n                                    <div className=\"truncate-multiline text-[#5A5A5A]\">{el.user_name || '--'}</div>\n                                </TableCell>\n\n                                <TableCell className=\"text-right\">\n                                    <div className=\"flex items-center justify-end gap-2\">\n                                        <Select\n                                            key={`${el.id}-${modalKey}`}\n                                            open={selectOpenId === el.id}\n                                            onOpenChange={(isOpen) => {\n                                                if (el.state === 2 || el.state === 0) return;\n                                                if (copyLoadingId !== el.id) {\n                                                    setSelectOpenId(isOpen ? el.id : null);\n                                                } else if (!isOpen) {\n                                                    // If in copying state and about to close, allow closing\n                                                    setSelectOpenId(null);\n                                                }\n                                            }}\n                                            onValueChange={(selectedValue) => {\n                                                setSelectOpenId(null);\n                                                console.log(\"Selected value:\", selectedValue, \"for lib:\", el.id);\n\n                                                switch (selectedValue) {\n                                                    case 'copy':\n                                                        el.state === KnowledgeBaseStatus.Published && handleCopy(el);\n                                                        break;\n                                                    case 'set':\n                                                        handleOpenSettings(el);\n                                                        break;\n                                                    case 'delete':\n                                                        el.copiable && handleDelete(el.id);\n                                                        break;\n                                                }\n                                            }}\n                                        >\n                                            <SelectTrigger\n                                                showIcon={false}\n                                                disabled={copyLoadingId === el.id}\n                                                onClick={(e) => {\n                                                    e.stopPropagation();\n                                                }}\n                                                className=\"size-10 px-2 bg-transparent border-none shadow-none hover:bg-gray-300 flex items-center justify-center duration-200 relative\"\n                                            >\n                                                {[KnowledgeBaseStatus.Copying, KnowledgeBaseStatus.Unpublished].includes(el.state) ? (\n                                                    <>\n                                                        <LoaderCircle className=\"animate-spin\" />\n                                                        <div className=\"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-white text-gray-800 text-xs px-2 py-1 rounded whitespace-nowrap border border-gray-300 shadow-sm\">\n                                                            {t('copying')}\n                                                        </div>\n                                                    </>\n                                                ) : (\n                                                    <Ellipsis size={24} color=\"#a69ba2\" strokeWidth={1.75} />\n                                                )}\n                                            </SelectTrigger>\n                                            <SelectContent\n                                                onClick={(e) => {\n                                                    e.stopPropagation();\n                                                }}\n                                                className=\"z-50 overflow-visible\"\n                                            >\n                                                <Tip content={!el.copiable && t('noOperationPermission')} side='top'>\n                                                    <SelectItem\n                                                        showIcon={false}\n                                                        value=\"copy\"\n                                                        className=\"data-[disabled]:pointer-events-auto\"\n                                                        disabled={!(el.copiable || user.role === 'admin') || el.state !== KnowledgeBaseStatus.Published || copyLoadingId === el.id}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\" >\n                                                            <Copy className=\"w-4 h-4\" />\n                                                            {t('lib.copy', { ns: 'bs' })}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                                <Tip content={!el.copiable && t('noOperationPermission')} side='top'>\n                                                    <SelectItem\n                                                        value=\"set\"\n                                                        disabled={!el.copiable}\n                                                        className=\"data-[disabled]:pointer-events-auto\"\n                                                        showIcon={false}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\">\n                                                            <Settings className=\"w-4 h-4\" />\n                                                            {t('settings')}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                                <Tip content={!el.copiable && t('noOperationPermission')} side='top'>\n                                                    <SelectItem\n                                                        value=\"delete\"\n                                                        showIcon={false}\n                                                        className=\"data-[disabled]:pointer-events-auto\"\n                                                        disabled={!el.copiable}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\">\n                                                            <Trash2 className=\"w-4 h-4\" />\n                                                            {t('delete')}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                            </SelectContent>\n                                        </Select>\n                                    </div>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer px-6 bg-background-login\">\n                <p className=\"desc\">{t('lib.libraryCollection', { ns: 'bs' })}</p>\n                <div>\n                    <AutoPagination\n                        page={page}\n                        pageSize={pageSize}\n                        total={total}\n                        onChange={(newPage) => setPage(newPage)}\n                    />\n                </div>\n            </div>\n\n            {/* Create modal */}\n            <CreateModal\n                datalist={datalist}\n                open={open}\n                onOpenChange={setOpen}\n                onLoadEnd={() => { }}\n                mode=\"create\"\n            />\n\n            {/* Edit (Settings) modal - using key to force re-render */}\n            {settingsOpen && (\n                <CreateModal\n                    key={`settings-modal-${modalKey}`}\n                    datalist={datalist}\n                    open={settingsOpen}\n                    onOpenChange={handleSettingsClose}\n                    onLoadEnd={reload}\n                    mode=\"edit\"\n                    currentLib={currentSettingLib}\n                />\n            )}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/KnowledgeQa.tsx",
    "content": "import { QaIcon } from \"@/components/bs-icons/knowledge\";\nimport { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, SearchInput, Textarea } from \"@/components/bs-ui/input\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Select, SelectContent, SelectItem, SelectTrigger } from \"@/components/bs-ui/select\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { copyQaDatabase, createFileLib, deleteFileLib, readFileLibDatabase, updateKnowledge } from \"@/controllers/API\";\nimport { getKnowledgeModelConfig } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ModelSelect } from \"@/pages/ModelPage/manage/tabs/WorkbenchModel\";\nimport { useTable } from \"@/util/hook\";\nimport { CircleAlert, Copy, Ellipsis, LoaderCircle, Settings, Trash2 } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useModel } from \"../ModelPage/manage\";\n\n// Knowledge base status\nconst enum KnowledgeBaseStatus {\n    Unpublished = 0,\n    Published = 1,\n    Copying = 2,\n    Rebuilding = 3,\n    Failed = 4\n}\n\nfunction CreateModal({ datalist, open, onOpenChange, onLoadEnd, mode = 'create', currentLib = null }) {\n    const { t } = useTranslation('knowledge')\n    const navigate = useNavigate()\n    const nameRef = useRef(null)\n    const descRef = useRef(null)\n    const [modelId, setModelId] = useState('')\n\n    const [isSubmitting, setIsSubmitting] = useState(false)\n    const [isModelChanged, setIsModelChanged] = useState(false)\n\n    const { embeddings, isLoading } = useModel()\n\n    useEffect(() => {\n        if (!open) return;\n\n        const fetchModelData = async () => {\n            try {\n                if (mode === 'create') {\n                    const config = await getKnowledgeModelConfig();\n                    setModelId(config.embedding_model_id);\n                } else {\n                    setModelId(currentLib.model);\n                }\n\n                if (mode === 'edit' && currentLib) {\n                    // Use setTimeout to ensure DOM has been rendered\n                    setTimeout(() => {\n                        if (nameRef.current) nameRef.current.value = currentLib.name || '';\n                        if (descRef.current) descRef.current.value = currentLib.description || '';\n                    }, 0);\n                }\n            } catch (error) {\n                console.error('Failed to load model data:', error);\n                toast({ variant: \"error\", description: t('loadModelError') });\n            }\n        };\n\n        fetchModelData();\n    }, [open, mode, currentLib]);\n\n    useEffect(() => {\n        if (!open) {\n            setModelId('');\n            setIsSubmitting(false);\n            setIsModelChanged(false);\n        }\n    }, [open]);\n\n    const { toast } = useToast()\n\n    const handleCreate = async (e, isImport = false) => {\n        const name = nameRef.current.value || '';\n        let desc = descRef.current.value || '';\n\n        const defaultDescPrefix = t('defaultDescPrefix');\n        const defaultDescSuffix = t('defaultDescSuffix');\n        const fixedTextLength = defaultDescPrefix.length + defaultDescSuffix.length;\n        const maxNameLengthForDefaultDesc = 200 - fixedTextLength;\n\n        if (!desc) {\n            desc = name.length <= maxNameLengthForDefaultDesc\n                ? `${defaultDescPrefix}${name}${defaultDescSuffix}`\n                : '';\n        }\n\n        if (!name) {\n            toast({ variant: 'error', description: t('lib.enterLibraryName', { ns: 'bs' }) });\n            return;\n        }\n        if (name.length > 200) {\n            toast({ variant: 'error', description: t('nameExceedsLimit') });\n            return;\n        }\n        const isEditMode = mode === 'edit' && currentLib;\n        const nameUnchanged = isEditMode && name === currentLib.name;\n        if (!nameUnchanged && datalist.find(data => data.name === name && (!currentLib || data.id !== currentLib.id))) {\n            toast({ variant: 'error', description: t('lib.nameExists') });\n            return;\n        }\n        if (descRef.current.value && desc.length > 200) {\n            toast({ variant: 'error', description: t('lib.descriptionLimit', { ns: 'bs' }) });\n            return;\n        }\n\n        setIsSubmitting(true);\n        try {\n            if (mode === 'create') {\n                await captureAndAlertRequestErrorHoc(createFileLib({\n                    name,\n                    description: desc,\n                    model: modelId,\n                    type: 1\n                }).then((res) => {\n                    window.libname = [name, desc];\n                    navigate(isImport ? `/filelib/qalib/upload/${res.id}` : `/filelib/qalib/${res.id}`);\n                    onOpenChange(false);\n                })).finally(() => {\n                    setIsSubmitting(false)\n                });\n\n            } else {\n                await updateKnowledge({\n                    model_id: modelId,\n                    model_type: \"embedding\",\n                    knowledge_id: currentLib.id,\n                    knowledge_name: name,\n                    description: desc\n                });\n                toast({ variant: \"success\", description: t('updateSuccess') });\n                onOpenChange(false);\n                onLoadEnd();\n            }\n        } catch (error) {\n            if (error) {\n                toast({ variant: \"error\", description: error || t('operationFailed') });\n            } else {\n                toast({ variant: \"error\", description: mode === 'create' ? t('createFailed') : t('updateFailed') });\n            }\n        } finally {\n            setIsSubmitting(false);\n        }\n    }\n\n    return (\n        <Dialog open={open} onOpenChange={onOpenChange}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{mode === 'create' ? t('lib.createLibrary', { ns: 'bs' }) : t('knowledgeSettings', { ns: 'bs' })}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2\">\n                    {mode === 'edit' && currentLib && (\n                        <div className=\"space-y-4\">\n                            <div className=\"flex items-center gap-48\">\n                                <label className=\"bisheng-label text-sm text-gray-500\">{t('lib.knowledgeBaseId', { ns: 'bs' })}</label>\n                                <div className=\"text-sm\">{currentLib.id}</div>\n                            </div>\n                            <div className=\"flex items-center gap-48\">\n                                <label className=\"bisheng-label text-sm text-gray-500\">{t('createTime', { ns: 'bs' })}</label>\n                                <div className=\"text-sm\">{currentLib.create_time.replace('T', ' ')}</div>\n                            </div>\n                        </div>\n                    )}\n                    <div className=\"\">\n                        <label htmlFor=\"name\" className=\"bisheng-label\">{t('system.libraryName', { ns: 'bs' })}</label>\n                        <span className=\"text-red-500\">*</span>\n                        <Input\n                            name=\"name\"\n                            ref={nameRef}\n                            placeholder={t('lib.enterLibraryName', { ns: 'bs' })}\n                            className=\"col-span-3\"\n                        />\n                    </div>\n                    <div className=\"\">\n                        <label htmlFor=\"desc\" className=\"bisheng-label\">{t('knowledgeDesc')}</label>\n                        <Textarea\n                            id=\"desc\"\n                            ref={descRef}\n                            placeholder={t('pleaseEnterDesc')}\n                            rows={8}\n                            className=\"col-span-3\"\n                        />\n                    </div>\n                    <div className=\"\">\n                        <label htmlFor=\"model\" className=\"bisheng-label\">{t('embeddingModel')}</label>\n                        {isLoading ? (\n                            <div className=\"flex items-center gap-2 p-3 border rounded-md bg-gray-50\">\n                                <LoadIcon className=\"w-4 h-4 animate-spin\" />\n                                <span className=\"text-sm text-gray-600\">{t('loadingModelList')}</span>\n                            </div>\n                        ) : embeddings.length > 0 ? (\n                            <ModelSelect\n                                key={`model-select-${modelId}`}\n                                label=\"\"\n                                close\n                                value={modelId}\n                                options={embeddings}\n                                onChange={(modelId) => {\n                                    setModelId(modelId);\n                                    if (mode === 'edit') setIsModelChanged(true);\n                                }}\n                            />\n                        ) : (\n                            <div className=\"p-3 border rounded-md bg-gray-50 text-sm text-gray-600\">\n                                {t('noAvailableModel')}\n                            </div>\n                        )}\n                        {mode === 'edit' && isModelChanged && (\n                            <p className=\"text-red-500 text-sm mt-1 flex items-center gap-1\">\n                                <CircleAlert className=\"w-4 h-4\" color=\"#ef4444\" />\n                                {t('embeddingModelWarning')}\n                            </p>\n                        )}\n                    </div>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\">{t('cancel')}</Button>\n                    </DialogClose>\n                    {mode === 'create' ? (\n                        <>\n                            <Button\n                                type=\"submit\"\n                                className=\"px-11 flex\"\n                                onClick={(e) => handleCreate(e, false)}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                                {t('completeCreation')}\n                            </Button>\n                            {/* <Button\n                                type=\"submit\"\n                                className=\"px-8 h-8 flex\"\n                                onClick={(e) => handleCreate(e, true)}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                                {t('createImport')}\n                            </Button> */}\n                        </>\n                    ) : (\n                        <Button\n                            type=\"submit\"\n                            className=\"px-8 h-8 flex\"\n                            onClick={(e) => handleCreate(e, false)}\n                            disabled={isSubmitting}\n                        >\n                            {isSubmitting && <LoadIcon className=\"mr-1\" />}\n                            {t('confirm')}\n                        </Button>\n                    )}\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n}\n\nconst doing = {};\nexport default function KnowledgeQa(params) {\n    const [open, setOpen] = useState(false);\n    const { user } = useContext(userContext);\n    const { toast } = useToast();\n    const navigate = useNavigate();\n    const [settingsOpen, setSettingsOpen] = useState(false);\n    const [currentSettingLib, setCurrentSettingLib] = useState(null);\n    const [copyLoadingId, setCopyLoadingId] = useState<string | null>(null);\n    const [selectOpenId, setSelectOpenId] = useState<string | null>(null);\n    const [modalKey, setModalKey] = useState(0);\n\n    const { page, pageSize, data: datalist, total, loading, setPage, search, reload } = useTable(\n        { cancelLoadingWhenReload: true },\n        (param) => readFileLibDatabase({ ...param, name: param.keyword, type: 1 })\n    );\n\n    useEffect(() => {\n        const todos = datalist.filter(lib => lib.state === KnowledgeBaseStatus.Copying);\n        todos.forEach(lib => {\n            if (doing[lib.id] && datalist.find(item => item.id === lib.id && item.state !== KnowledgeBaseStatus.Copying)) {\n                toast({ variant: 'success', description: t('copyCompleted', { name: lib.name }) });\n                delete doing[lib.id];\n            }\n        });\n\n        const timer = todos.length > 0 ? setTimeout(reload, 5000) : null;\n        return () => clearTimeout(timer);\n    }, [datalist]);\n\n    const handleDelete = (id) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('lib.confirmDeleteLibrary', { ns: 'bs' }),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteFileLib(id).then(reload));\n                next();\n            },\n        });\n    };\n\n    const handleOpenSettings = (lib) => {\n        const newCurrentLib = JSON.parse(JSON.stringify(lib));\n        newCurrentLib.__updateKey = Date.now();\n\n        setCurrentSettingLib(newCurrentLib);\n        setSettingsOpen(true);\n        setModalKey(prev => prev + 1);\n        setSelectOpenId(null);\n    };\n\n    const handleSettingsClose = (isOpen) => {\n        setSettingsOpen(isOpen);\n        if (!isOpen) {\n            setCurrentSettingLib(null);\n        }\n    };\n\n    const handleCachePage = () => {\n        window.LibPage = { page, type: 'qa' };\n    };\n\n    useEffect(() => {\n        const _page = window.LibPage;\n        if (_page) {\n            setPage(_page.page);\n            delete window.LibPage;\n        } else {\n            setPage(1);\n        }\n    }, []);\n\n    const { t } = useTranslation('knowledge');\n\n    const handleCopy = async (elem) => {\n        const newName = `${elem.name}${t('copySuffix')}`;\n        if (newName.length > 200) {\n            toast({ variant: 'error', description: t('copyNameExceedsLimit') });\n            setSelectOpenId(null);\n            return;\n        }\n\n        setCopyLoadingId(elem.id);\n        doing[elem.id] = true;\n\n        try {\n            await captureAndAlertRequestErrorHoc(copyQaDatabase(elem.id, newName));\n            reload();\n        } catch (error) {\n            toast({ variant: 'error', description: t('copyFailed') });\n        } finally {\n            setCopyLoadingId(null);\n            setSelectOpenId(null);\n        }\n    };\n\n    return (\n        <div className=\"relative\">\n            {loading && (\n                <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                    <LoadingIcon />\n                </div>\n            )}\n            <div className=\"h-[calc(100vh-128px)] overflow-y-auto pb-20\">\n                <div className=\"flex justify-end gap-4 items-center absolute right-0 top-[-44px]\">\n                    <SearchInput placeholder={t('lib.searchPlaceholder', { ns: 'bs' })} onChange={(e) => search(e.target.value)} />\n                    <Button className=\"px-8 text-[#FFFFFF]\" onClick={() => setOpen(true)}>{t('create', { ns: 'bs' })}</Button>\n                </div>\n                <Table>\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead>{t('lib.libraryName', { ns: 'bs' })}</TableHead>\n                            <TableHead>{t('updateTime')}</TableHead>\n                            <TableHead>{t('lib.createUser', { ns: 'bs' })}</TableHead>\n                            <TableHead className=\"text-right\">{t('operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {datalist.map((el: any) => (\n                            <TableRow\n                                key={el.id}\n                                onClick={() => {\n                                    if ([KnowledgeBaseStatus.Copying, KnowledgeBaseStatus.Unpublished].includes(el.state)) return;\n                                    window.libname = [el.name, el.description];\n                                    navigate(`/filelib/qalib/${el.id}`);\n                                    handleCachePage();\n                                }}\n                            >\n                                <TableCell className=\"font-medium max-w-[280px]\">\n                                    <div className=\"flex items-center gap-2\">\n                                        <div className=\"flex items-center justify-center size-12 text-white rounded-[4px] w-[40px] h-[40px]\">\n                                            <QaIcon className=\"text-primary size-10\" />\n                                        </div>\n                                        <div>\n                                            <div className=\"truncate max-w-[500px] w-[264px] text-[14px] font-medium pt-2\">\n                                                {el.name}\n                                            </div>\n                                            <QuestionTooltip\n                                                content={el.description || ''}\n                                                error={false}\n                                                className=\"w-full text-start\"\n                                            >\n                                                <div className=\"truncate max-w-[400px] text-[12px] text-[#5A5A5A] pt-1\">\n                                                    {el.description || ''}\n                                                </div>\n                                            </QuestionTooltip>\n                                        </div>\n                                    </div>\n                                </TableCell>\n                                <TableCell className=\"text-[#5A5A5A]\">\n                                    {el.update_time.replace('T', ' ')}\n                                </TableCell>\n                                <TableCell className=\"max-w-[300px] break-all\">\n                                    <div className=\"truncate-multiline text-[#5A5A5A]\">{el.user_name || '--'}</div>\n                                </TableCell>\n                                <TableCell className=\"text-right\">\n                                    <div className=\"flex items-center justify-end gap-2\">\n                                        <Select\n                                            key={`${el.id}-${modalKey}`}\n                                            open={selectOpenId === el.id}\n                                            onOpenChange={(isOpen) => {\n                                                if (el.state === 2 || el.state === 0) return;\n                                                if (copyLoadingId !== el.id) {\n                                                    setSelectOpenId(isOpen ? el.id : null);\n                                                } else if (!isOpen) {\n                                                    setSelectOpenId(null);\n                                                }\n                                            }}\n                                            onValueChange={(selectedValue) => {\n                                                setSelectOpenId(null);\n                                                switch (selectedValue) {\n                                                    case 'copy':\n                                                        el.state === KnowledgeBaseStatus.Published && handleCopy(el);\n                                                        break;\n                                                    case 'set':\n                                                        handleOpenSettings(el);\n                                                        break;\n                                                    case 'delete':\n                                                        (el.copiable || user.role === 'admin') && handleDelete(el.id);\n                                                        break;\n                                                }\n                                            }}\n                                        >\n                                            <SelectTrigger\n                                                showIcon={false}\n                                                disabled={copyLoadingId === el.id}\n                                                onClick={(e) => e.stopPropagation()}\n                                                className=\"size-10 px-2 bg-transparent border-none shadow-none hover:bg-gray-300 flex items-center justify-center duration-200 relative\"\n                                            >\n                                                {[KnowledgeBaseStatus.Copying, KnowledgeBaseStatus.Unpublished].includes(el.state) ? (\n                                                    <>\n                                                        <LoaderCircle className=\"animate-spin\" />\n                                                        <div className=\"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-white text-gray-800 text-xs px-2 py-1 rounded whitespace-nowrap border border-gray-300 shadow-sm\">\n                                                            {t('copying')}\n                                                        </div>\n                                                    </>\n                                                ) : (\n                                                    <Ellipsis size={24} color=\"#a69ba2\" strokeWidth={1.75} />\n                                                )}\n                                            </SelectTrigger>\n                                            <SelectContent\n                                                onClick={(e) => e.stopPropagation()}\n                                                className=\"z-50 overflow-visible\"\n                                            >\n                                                <Tip content={!el.copiable && t('noPermission')} side='top'>\n                                                    <SelectItem\n                                                        showIcon={false}\n                                                        value=\"copy\"\n                                                        disabled={!(el.copiable || user.role === 'admin') || el.state !== KnowledgeBaseStatus.Published || copyLoadingId === el.id}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\">\n                                                            <Copy className=\"w-4 h-4\" />\n                                                            {t('lib.copy', { ns: 'bs' })}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                                <Tip content={!el.copiable && t('noPermission')} side='top'>\n                                                    <SelectItem\n                                                        value=\"set\"\n                                                        disabled={!el.copiable}\n                                                        showIcon={false}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\">\n                                                            <Settings className=\"w-4 h-4\" />\n                                                            {t('setting')}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                                <Tip content={!el.copiable && t('noPermission')} side='top'>\n                                                    <SelectItem\n                                                        value=\"delete\"\n                                                        showIcon={false}\n                                                        disabled={!(el.copiable || user.role === 'admin')}\n                                                    >\n                                                        <div className=\"flex gap-2 items-center\">\n                                                            <Trash2 className=\"w-4 h-4\" />\n                                                            {t('delete')}\n                                                        </div>\n                                                    </SelectItem>\n                                                </Tip>\n                                            </SelectContent>\n                                        </Select>\n                                    </div>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer px-6 bg-background-login\">\n                <p className=\"desc\">{t('lib.libraryCollection', { ns: 'bs' })}</p>\n                <div>\n                    <AutoPagination\n                        page={page}\n                        pageSize={pageSize}\n                        total={total}\n                        onChange={(newPage) => setPage(newPage)}\n                    />\n                </div>\n            </div>\n\n            {/* Create modal */}\n            <CreateModal\n                datalist={datalist}\n                open={open}\n                onOpenChange={setOpen}\n                onLoadEnd={() => { }}\n                mode=\"create\"\n            />\n\n            {/* Settings modal */}\n            {settingsOpen && (\n                <CreateModal\n                    key={`settings-modal-${modalKey}`}\n                    datalist={datalist}\n                    open={settingsOpen}\n                    onOpenChange={handleSettingsClose}\n                    onLoadEnd={reload}\n                    mode=\"edit\"\n                    currentLib={currentSettingLib}\n                />\n            )}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/DocxFileViewer.tsx",
    "content": "import React, { useState, useEffect, useRef } from \"react\";\nimport * as mammoth from \"mammoth\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\nconst DocxPreview = ({ filePath }) => {\n    // 检查文件路径是否以.doc结尾（不区分大小写）\n    const isDocFile = filePath.toLowerCase().endsWith('.doc');\n\n    const [htmlContent, setHtmlContent] = useState(\"\");\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n    const previewRef = useRef(null);\n\n    // 如果是.doc文件，直接返回不支持预览提示，不执行后续逻辑\n    if (isDocFile) {\n        return (\n            <div className=\"flex justify-center items-center h-full text-gray-400\">\n                <div className=\"text-center\">\n                    <img\n                        className=\"size-52 block\"\n                        src={__APP_ENV__.BASE_URL + \"/assets/knowledge/damage.svg\"}\n                        alt=\"文件不支持预览\"\n                    />\n                    <p>此文件类型不支持预览</p>\n                </div>\n            </div>\n        );\n    }\n\n    useEffect(() => {\n        const fetchAndConvertDocx = async () => {\n            try {\n                setLoading(true);\n                // 1. 下载 DOCX 文件\n                const response = await fetch(filePath.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL));\n                if (!response.ok) throw new Error(`Failed to fetch file: ${response.status}`);\n\n                // 2. 获取文件 ArrayBuffer\n                const arrayBuffer = await response.arrayBuffer();\n\n                // 3. 使用 Mammoth 转换为 HTML\n                const result = await mammoth.convertToHtml({ arrayBuffer });\n\n                // 4. 设置生成的 HTML\n                setHtmlContent(result.value);\n                setError(null);\n            } catch (err) {\n                setError(err.message);\n                setHtmlContent(`<p class=\"error\">Failed to load DOCX file: ${err.message}</p>`);\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchAndConvertDocx();\n    }, [filePath]);\n\n    // 自定义样式（可选）\n    const docxStyles = `\n    .docx-wrapper {\n      font-family: Arial, sans-serif;\n      line-height: 1.5;\n      padding: 20px;\n      font-size: 14px;\n    }\n    .docx-wrapper p {\n      margin: 0 0 1em 0;\n    }\n    .docx-wrapper table {\n      border-collapse: collapse;\n      width: 100%;\n      margin: 1em 0;\n    }\n    .docx-wrapper table td {\n      border: 1px solid #ddd;\n      padding: 8px;\n    }\n    .error {\n      color: red;\n    }\n  `;\n\n    if (loading) {\n        return (\n            <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        );\n    }\n\n    return (\n        <div className=\"border rounded-lg overflow-hidden bg-white\">\n            {/* 注入自定义样式 */}\n            <style dangerouslySetInnerHTML={{ __html: docxStyles }} />\n\n            {/* 渲染转换后的 HTML */}\n            <div\n                ref={previewRef}\n                className=\"docx-wrapper h-full p-4\"\n                dangerouslySetInnerHTML={{ __html: htmlContent }}\n            />\n\n            {/* 错误提示 */}\n            {error && (\n                <div className=\"p-4 bg-red-50 text-red-600\">\n                    Preview failed: {error}. <a href={filePath} download className=\"underline\">Download original file</a>\n                </div>\n            )}\n        </div>\n    );\n};\n\nexport default DocxPreview;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/DuplicateFileDialog.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\n\nconst DialogWithRepeatFiles = ({\n    repeatFiles, setRepeatFiles, retryLoad, t, unRetry, onRetry\n}) => {\n    return (\n        <Dialog open={!!repeatFiles.length} onOpenChange={b => !b && setRepeatFiles([])}>\n            <DialogContent className=\"sm:max-w-[425px]\" close={false}>\n                <DialogHeader>\n                    <DialogTitle>{t('modalTitle')}</DialogTitle>\n                    <DialogDescription>{t('modalMessage')}</DialogDescription>\n                </DialogHeader>\n                <ul className=\"overflow-y-auto max-h-[400px] py-2\">\n                    {repeatFiles.map(el => (\n                        <li key={el.id} className=\"py-1 text-red-500 text-sm\">{el.remark}</li>\n                    ))}\n                </ul>\n                <DialogFooter>\n                    <Button className=\"h-8\" variant=\"outline\" onClick={unRetry}>\n                        {t('keepOriginal')}\n                    </Button>\n                    <Button className=\"h-8\" disabled={retryLoad} onClick={() => onRetry(repeatFiles)}>\n                        {retryLoad && <span className=\"loading loading-spinner loading-xs mr-1\"></span>}\n                        {t('override')}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n};\n\nexport default DialogWithRepeatFiles;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/EditKnowledgeDialog.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function KnowledgeBaseSettingsDialog({ initialName, initialDesc, onSave }) {\n    const { t } = useTranslation('knowledge');\n\n    // State for form fields\n    const [formData, setFormData] = useState({ name: '', desc: '' });\n    const [errors, setErrors] = useState({});\n\n    useEffect(() => {\n        setFormData({ name: initialName, desc: initialDesc });\n    }, [initialName, initialDesc]);\n\n    // Handle field change\n    const handleChange = (e) => {\n        const { name, value } = e.target;\n        setFormData(prev => ({ ...prev, [name]: value }));\n    };\n\n    // Validate the form\n    const validate = () => {\n        const newErrors = {};\n        if (!formData.name) {\n            newErrors.name = t('nameRequired');\n        }\n        return newErrors;\n    };\n\n    // Handle form submission\n    const handleSubmit = (e) => {\n        e.preventDefault();\n        const validationErrors = validate();\n        if (Object.keys(validationErrors).length > 0) {\n            setErrors(validationErrors);\n        } else {\n            setErrors({});\n            onSave(formData);\n        }\n    };\n\n    return (\n        <DialogContent className=\"sm:max-w-[625px] bg-background-login\">\n            <DialogHeader>\n                <DialogTitle>{t('settings')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"flex flex-col gap-8 py-6\">\n                <div className=\"\">\n                    <label htmlFor=\"name\" className=\"bisheng-label\">\n                        {t('name')}<span className=\"bisheng-tip\">*</span>\n                    </label>\n                    <div className=\"flex items-center mt-2\">\n                        <Input\n                            id=\"name\"\n                            name=\"name\"\n                            placeholder={t('namePlaceholder')}\n                            maxLength={30}\n                            className=\"flex-1\"\n                            value={formData.name}\n                            onChange={handleChange}\n                        />\n                    </div>\n                    {errors.name && <p className=\"bisheng-tip mt-1 text-red-500\">{errors.name}</p>}\n                </div>\n                <div className=\"\">\n                    <label htmlFor=\"desc\" className=\"bisheng-label\">{t('desc')}</label>\n                    <div className=\"flex items-center mt-2\">\n                        <Textarea\n                            id=\"desc\"\n                            name=\"desc\"\n                            placeholder={t('descPlaceholder')}\n                            maxLength={200}\n                            className=\"flex-1\"\n                            value={formData.desc}\n                            onChange={handleChange}\n                        />\n                    </div>\n                </div>\n            </div>\n            <DialogFooter>\n                <DialogClose>\n                    <Button variant=\"outline\" className=\"px-11\" type=\"button\">{t('cancel', {ns: 'bs'})}</Button>\n                </DialogClose>\n                <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>{t('confirm', {ns: 'bs'})}</Button>\n            </DialogFooter>\n        </DialogContent>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/ExcelPreview.tsx",
    "content": "import React, { useState, useEffect, useRef } from \"react\";\nimport * as XLSX from \"xlsx\";\nimport XlsxPopulate from 'xlsx-populate/browser/xlsx-populate';\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ExcelPreview = ({ filePath }) => {\n  const { t } = useTranslation('knowledge');\n\n  // ---------------------- State Management ----------------------\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n  const [sheets, setSheets] = useState([]);\n  const [activeSheet, setActiveSheet] = useState(\"\");\n  const [excelData, setExcelData] = useState({});\n  const [images, setImages] = useState([]); // 存储图片数据\n  const [imagePositions, setImagePositions] = useState({}); // 图片位置映射\n  const tableContainerRef = useRef(null);\n  const getFileExtension = (filePath) => {\n    if (!filePath) return \"\";\n\n    const withoutQuery = filePath.split('?')[0];\n\n    const parts = withoutQuery.split('.');\n    if (parts.length < 2) return \"\";\n\n    const ext = parts.pop()?.toLowerCase() || \"\";\n\n    const validExtensions = ['csv', 'xlsx', 'xls', 'txt'];\n    if (validExtensions.includes(ext)) {\n      return ext;\n    }\n\n    return \"\";\n  };\n  // ---------------------- File Type Detection ----------------------\n  const fileExt = getFileExtension(filePath);\n  const isCSV = fileExt === \"csv\";\n  const isExcel = [\"xlsx\", \"xls\"].includes(fileExt);\n  const isXLSX = fileExt === \"xlsx\"; // 用于图片提取\n\n  // ---------------------- Screen Size Detection (Adapt to Small/Large Screens) ----------------------\n  const [screenSize, setScreenSize] = useState(\"medium\"); // small/medium/large\n\n  useEffect(() => {\n    const handleResize = () => {\n      const width = window.innerWidth;\n      if (width <= 1680) setScreenSize(\"small\");\n      else if (width >= 1920) setScreenSize(\"large\");\n      else setScreenSize(\"medium\");\n    };\n\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => window.removeEventListener(\"resize\", handleResize);\n  }, []);\n\n  // ---------------------- Get Max Width for Table Container ----------------------\n  const getTableContainerMaxWidth = () => {\n    switch (screenSize) {\n      case \"small\": return \"600px\";\n      case \"large\": return \"1300px\";\n      default: return \"900px\";\n    }\n  };\n\n  // ---------------------- 辅助函数：根据文件扩展名获取MIME类型 ----------------------\n  const getMimeType = (ext) => {\n    const mimeTypes = {\n      'png': 'image/png',\n      'jpg': 'image/jpeg',\n      'jpeg': 'image/jpeg',\n      'gif': 'image/gif',\n      'bmp': 'image/bmp',\n      'jfif': 'image/jpeg',\n      'tiff': 'image/tiff',\n      'tif': 'image/tiff',\n      'svg': 'image/svg+xml'\n    };\n    return mimeTypes[ext] || 'image/png';\n  };\n\n  // ---------------------- 提取图片和位置 ----------------------\n  const extractImagesWithPositions = async (workbook: any) => {\n    const images: any[] = [];\n    const imagePositions: Record<string, string[]> = {};\n\n    const zip = workbook._zip;\n\n    // Step 1: 解析 media 文件\n    zip.forEach((relativePath, zipEntry) => {\n      if (relativePath.startsWith(\"xl/media/\") && !zipEntry.dir) {\n        const ext = relativePath.split(\".\").pop()?.toLowerCase() || \"\";\n        if ([\"png\", \"jpg\", \"jpeg\", \"gif\", \"bmp\", \"tiff\", \"tif\", \"jfif\"].includes(ext)) {\n          const id = relativePath.split(\"/\").pop(); // image1.png\n          images.push({\n            id,           // 用 media 文件名作为 id\n            path: relativePath,\n            ext,\n            base64Promise: zipEntry.async(\"base64\"),\n          });\n        }\n      }\n    });\n\n    // Step 2: 解析 drawings XML\n    const drawingFiles = Object.keys(zip.files).filter(p => p.startsWith(\"xl/drawings/\") && p.endsWith(\".xml\"));\n    for (const drawingPath of drawingFiles) {\n      try {\n        const xmlStr = await zip.file(drawingPath).async(\"text\");\n        const parser = new DOMParser();\n        const xmlDoc = parser.parseFromString(xmlStr, \"text/xml\");\n        const anchors = xmlDoc.getElementsByTagName(\"xdr:twoCellAnchor\");\n\n        // Step 2a: 先解析 rels 文件\n        const relsPath = drawingPath.replace(\"drawings/\", \"drawings/_rels/\") + \".rels\";\n        const rIdMap: Record<string, string> = {}; // rId -> media filename\n        if (zip.file(relsPath)) {\n          const relsXml = await zip.file(relsPath).async(\"text\");\n          const relsDoc = parser.parseFromString(relsXml, \"text/xml\");\n          const relationships = relsDoc.getElementsByTagName(\"Relationship\");\n          for (let j = 0; j < relationships.length; j++) {\n            const r = relationships[j];\n            const id = r.getAttribute(\"Id\");\n            const target = r.getAttribute(\"Target\"); // e.g. ../media/image1.png\n            if (id && target) {\n              rIdMap[id] = target.split(\"/\").pop(); // image1.png\n            }\n          }\n        }\n\n        // Step 2b: 遍历 anchors\n        for (let i = 0; i < anchors.length; i++) {\n          const anchor = anchors[i];\n          const from = anchor.getElementsByTagName(\"xdr:from\")[0];\n          const pic = anchor.getElementsByTagName(\"xdr:pic\")[0];\n          if (!from || !pic) continue;\n\n          const colNode = from.getElementsByTagName(\"xdr:col\")[0];\n          const rowNode = from.getElementsByTagName(\"xdr:row\")[0];\n          const blip = pic.getElementsByTagName(\"a:blip\")[0];\n          if (!colNode || !rowNode || !blip) continue;\n\n          const col = parseInt(colNode.textContent || \"0\", 10);\n          const row = parseInt(rowNode.textContent || \"0\", 10);\n          const cellAddress = numberToColumnLetters(col) + (row + 1);\n\n          const rId = blip.getAttribute(\"r:embed\");\n          if (!rId || !rIdMap[rId]) continue;\n\n          // 找到对应图片\n          const mediaFileName = rIdMap[rId];\n          const img = images.find(img => img.id === mediaFileName);\n          if (img) {\n            if (!imagePositions[cellAddress]) imagePositions[cellAddress] = [];\n            imagePositions[cellAddress].push(img.id);\n          }\n        }\n      } catch (e) {\n        console.warn(\"解析 drawing xml 失败:\", e);\n      }\n    }\n\n    // Step 3: 等待 base64\n    for (let img of images) {\n      img.base64 = await img.base64Promise;\n      delete img.base64Promise;\n      img.mimeType = getMimeType(img.ext);\n    }\n\n    return { images, imagePositions };\n  };\n\n\n  // ---------------------- 获取单元格对应的图片 ----------------------\n  const getCellImage = (rowIndex, colIndex, cellContent) => {\n    const cellAddress = `${numberToColumnLetters(colIndex)}${rowIndex + 1}`;\n    const imageIds = imagePositions[cellAddress];\n\n    // 1️⃣ 根据单元格地址查找\n    if (imageIds?.length) {\n      const foundImage = images.find(img => imageIds.includes(img.id));\n      if (foundImage) return foundImage;\n    }\n\n    // 2️⃣ 根据 DISPIMG 公式查找\n    if (cellContent && typeof cellContent === 'string' && cellContent.startsWith('=DISPIMG')) {\n      const imageId = extractImageIdFromFormula(cellContent);\n      if (imageId) {\n        const imageById = images.find(img =>\n          img.path.includes(imageId) || img.rId === imageId || img.id === imageId\n        );\n        if (imageById) return imageById;\n\n        // 找不到的话返回第一张图片占位\n        if (images.length > 0) return images[0];\n      }\n    }\n\n    return null;\n  };\n\n\n\n  // ---------------------- Data Fetching and Parsing ----------------------\n  useEffect(() => {\n    const fetchAndParseFile = async () => {\n      try {\n        setLoading(true);\n        setImages([]);\n        setImagePositions({});\n        setExcelData({});\n        setSheets([]);\n        setActiveSheet(\"\");\n\n        if (!filePath) throw new Error(t('filePathEmpty'));\n\n        const response = await fetch(filePath);\n        if (!response.ok) throw new Error(`${t('fileLoadFailed')}: ${response.status}`);\n\n        const arrayBuffer = await response.arrayBuffer();\n\n        if (isCSV) {\n          // ---------------- CSV ----------------\n          if (arrayBuffer.byteLength === 0) throw new Error(t('fileContentEmpty'));\n\n          const uint8Array = new Uint8Array(arrayBuffer);\n          let decodedStr = \"\";\n\n          const encodings = [\"utf-8\", \"gbk\", \"gb2312\", \"gb18030\", \"big5\", \"shift_jis\"];\n          for (const encoding of encodings) {\n            try {\n              decodedStr = new TextDecoder(encoding, { fatal: true }).decode(uint8Array);\n              if (decodedStr.charCodeAt(0) === 0xfeff) decodedStr = decodedStr.slice(1);\n              break;\n            } catch (e) { continue; }\n          }\n          if (!decodedStr) decodedStr = new TextDecoder().decode(uint8Array);\n\n          const csvData = parseCSV(decodedStr);\n          const cleanedData = cleanData(csvData);\n          setExcelData({ \"Sheet1\": cleanedData });\n          setSheets([\"Sheet1\"]);\n          setActiveSheet(\"Sheet1\");\n\n        } else if (isXLSX || fileExt === \"xls\") {\n          // ---------------- Excel ----------------\n          let workbook;\n          try {\n            workbook = await XlsxPopulate.fromDataAsync(arrayBuffer);\n          } catch (e) {\n            console.error(\"XlsxPopulate解析失败:\", e);\n            throw new Error(t('excelParseFailed'));\n          }\n\n          // 解析表格数据\n          const sheetNames = workbook.sheets().map((s: any) => s.name());\n          const parsedData: Record<string, any[][]> = {};\n          sheetNames.forEach(sheetName => {\n            const sheet = workbook.sheet(sheetName);\n            const usedRange = sheet.usedRange();\n            parsedData[sheetName] = cleanData(usedRange?.value() || [[]]);\n          });\n          setExcelData(parsedData);\n          setSheets(sheetNames);\n          setActiveSheet(sheetNames[0] || \"\");\n\n          // 提取图片\n          const { images, imagePositions } = await extractImagesWithPositions(workbook);\n          setImages(images);\n          setImagePositions(imagePositions);\n          console.log(`[ExcelPreview] 提取到 ${images.length} 张图片`);\n\n        } else {\n          throw new Error(t('unsupportedType', { type: fileExt }));\n        }\n\n        setError(null);\n\n      } catch (err) {\n        console.error(\"File parsing failed:\", err);\n        setError(err.message || t('unknownError'));\n      } finally {\n        setLoading(false);\n      }\n    };\n\n    if (filePath) fetchAndParseFile();\n    else {\n      setLoading(false);\n      setError(t('filePathEmpty'));\n    }\n  }, [filePath, t]);\n\n\n\n  // ---------------------- CSV Parsing Function ----------------------\n  const parseCSV = (csvStr) => {\n    try {\n      if (!csvStr || typeof csvStr !== \"string\") return [];\n      const lines = csvStr.split(/\\r?\\n/).filter(line => line.trim() !== \"\");\n      const safeLines = lines; // No row limit\n      const rows = [];\n      const delimiters = [',', '\\t', ';', '|'];\n\n      // Auto-detect best delimiter\n      let detectedDelimiter = ',';\n      let maxColumns = 0;\n\n      for (const delimiter of delimiters) {\n        const testRow = safeLines[0]?.split(delimiter) || [];\n        if (testRow.length > maxColumns && testRow.some(col => col.trim() !== \"\")) {\n          maxColumns = testRow.length;\n          detectedDelimiter = delimiter;\n        }\n      }\n\n      safeLines.forEach(line => {\n        const columns = line.split(detectedDelimiter).map(col =>\n          col.replace(/^[\\\"\\']|[\\\"\\']$/g, \"\").trim()\n        );\n        if (columns.some(col => col !== \"\")) rows.push(columns);\n      });\n      console.log(\"CSV parsed result (2D array):\", rows);\n      return rows;\n    } catch (err) {\n      console.error(\"CSV parsing error:\", err);\n      return [];\n    }\n  };\n\n  // ---------------------- Data Cleaning Function ----------------------\n  const cleanData = (data) => {\n    if (!Array.isArray(data) || data.length === 0) return [];\n\n    // Filter empty rows\n    const nonEmptyRows = data.filter(row =>\n      row.some(cell =>\n        cell !== undefined && cell !== null && cell.toString().trim() !== \"\"\n      )\n    );\n\n    if (nonEmptyRows.length === 0) return [];\n\n    // Calculate max column count\n    const columnCount = Math.max(...nonEmptyRows.map(row => row.length));\n\n    // Filter columns with data\n    const hasDataColumns = [];\n    for (let col = 0; col < columnCount; col++) {\n      const hasData = nonEmptyRows.some(row =>\n        row[col] !== undefined && row[col] !== null && row[col].toString().trim() !== \"\"\n      );\n      if (hasData) hasDataColumns.push(col);\n    }\n\n    // Keep only columns with data\n    return nonEmptyRows.map(row =>\n      hasDataColumns.map(colIndex =>\n        row[colIndex] ? String(row[colIndex]).trim() : \"\"\n      )\n    );\n  };\n\n  // ---------------------- Calculate Table Column Count ----------------------\n  const getTableColumnCount = (data) => {\n    if (!Array.isArray(data) || data.length === 0) return 0;\n    return Math.max(...data.map(row => row.length));\n  };\n\n  // ---------------------- Convert Number to Column Letters (A, B, C, ..., Z, AA, AB, ...) ----------------------\n  const numberToColumnLetters = (num) => {\n    let result = '';\n    while (num >= 0) {\n      result = String.fromCharCode(65 + (num % 26)) + result;\n      num = Math.floor(num / 26) - 1;\n    }\n    return result;\n  };\n\n  // ---------------------- 将单元格地址转换为行列索引 ----------------------\n  const cellAddressToIndices = (address) => {\n    // 将Excel单元格地址如 \"A1\" 转换为行列索引\n    const match = address.match(/^([A-Z]+)(\\d+)$/);\n    if (!match) return null;\n\n    const colLetters = match[1];\n    const rowNum = parseInt(match[2], 10);\n\n    // 转换列字母为列索引（0-based）\n    let colNum = 0;\n    for (let i = 0; i < colLetters.length; i++) {\n      colNum = colNum * 26 + (colLetters.charCodeAt(i) - 64);\n    }\n\n    return { row: rowNum - 1, col: colNum - 1 }; // 转换为0-based索引\n  };\n\n  // ---------------------- 计算单元格尺寸 ----------------------\n  const getCellDimensions = () => {\n    // 根据屏幕尺寸调整单元格尺寸\n    let cellWidth, cellHeight, headerHeight;\n\n    switch (screenSize) {\n      case \"small\":\n        cellWidth = 100;\n        cellHeight = 35;\n        headerHeight = 45;\n        break;\n      case \"large\":\n        cellWidth = 150;\n        cellHeight = 45;\n        headerHeight = 55;\n        break;\n      default:\n        cellWidth = 120;\n        cellHeight = 40;\n        headerHeight = 50;\n    }\n\n    return { cellWidth, cellHeight, headerHeight };\n  };\n\n  // ---------------------- 从DISPIMG公式中提取图片ID ----------------------\n  const extractImageIdFromFormula = (formula) => {\n    if (!formula || typeof formula !== 'string') return null;\n\n    // 尝试多种匹配模式\n    const patterns = [\n      /DISPIMG\\(\"([^\"]+)\"\\)/i,\n      /DISPIMG\\('([^']+)'\\)/i,\n      /DISPIMG\\(\"([^\"]+)\",\\s*\\d+\\)/i,\n      /DISPIMG\\('([^']+)',\\s*\\d+\\)/i\n    ];\n\n    for (const pattern of patterns) {\n      const match = formula.match(pattern);\n      if (match && match[1]) {\n        return match[1];\n      }\n    }\n\n    return null;\n  };\n\n\n\n  // ---------------------- 渲染表格内容 ----------------------\n  const renderContent = () => {\n    const sheetData = excelData[activeSheet];\n    if (!Array.isArray(sheetData) || sheetData.length === 0) {\n      return (\n        <div\n          className=\"flex items-center justify-center text-gray-500\"\n          style={{\n            minHeight: screenSize === \"small\" ? \"520px\" : \"684px\"\n          }}\n        >\n          {t('currentSheetNoData')}\n        </div>\n      );\n    }\n\n    const displayData = [...sheetData];\n    const columnCount = getTableColumnCount(displayData);\n\n    // Dynamically calculate column widths\n    const calculateColumnWidths = () => {\n      const widths = [];\n      if (displayData.length > 0 && columnCount > 0) {\n        // Fixed width for row number column\n        widths.push(60);\n\n        for (let i = 0; i < columnCount; i++) {\n          const maxLength = displayData.reduce((max, row) => {\n            const cell = row[i] || \"\";\n            const cellLength = String(cell).length;\n            return cellLength > max ? cellLength : max;\n          }, 0);\n\n          let width;\n          if (maxLength < 10) width = 120;\n          else if (maxLength < 20) width = 180;\n          else if (maxLength < 30) width = 220;\n          else if (maxLength < 50) width = 280;\n          else width = 320;\n\n          widths.push(width);\n        }\n      }\n      return widths;\n    };\n\n    const columnWidths = calculateColumnWidths();\n\n    return (\n      <div className={`flex flex-col relative`}>\n        <div\n          ref={tableContainerRef}\n          className=\"flex-1 border border-gray-200 bg-white relative overflow-auto\"\n          style={{\n            minHeight: screenSize === \"small\" ? \"480px\" : \"684px\",\n            maxHeight: \"calc(100vh - 300px)\",\n            width: \"100%\",\n            maxWidth: getTableContainerMaxWidth(),\n            overflowX: \"auto\",\n          }}\n        >\n          <div className=\"min-w-full\">\n            <table className=\"min-w-full border-collapse\">\n              <thead className=\"bg-gray-50\">\n                {/* Column letters row */}\n                <tr>\n                  <th\n                    className=\"border border-gray-200 bg-gray-100 text-gray-600 text-xs font-medium\"\n                    style={{\n                      minWidth: \"60px\",\n                      maxWidth: \"60px\",\n                      padding: \"8px 4px\",\n                      textAlign: \"center\"\n                    }}\n                  >\n                    {/* Top-left empty cell */}\n                  </th>\n                  {Array.from({ length: columnCount }).map((_, index) => (\n                    <th\n                      key={`col-header-${index}`}\n                      className=\"border border-gray-200 bg-gray-100 text-gray-600 text-xs font-medium text-center\"\n                      style={{\n                        minWidth: `${columnWidths[index + 1] || 200}px`,\n                        maxWidth: \"400px\",\n                        padding: \"8px 4px\"\n                      }}\n                    >\n                      {numberToColumnLetters(index)}\n                    </th>\n                  ))}\n                </tr>\n\n                {/* Data header row */}\n                <tr>\n                  <th\n                    className=\"border border-gray-200 bg-gray-50 text-gray-700 text-xs font-medium\"\n                    style={{\n                      minWidth: \"60px\",\n                      maxWidth: \"60px\",\n                      padding: \"12px 8px\",\n                      textAlign: \"center\",\n                      boxShadow: \"2px 0 0 #e5e7eb\"\n                    }}\n                  >\n                    {t('rowNumber')}\n                  </th>\n                  {displayData[0]?.map((header, index) => (\n                    <th\n                      key={index}\n                      className=\"text-left text-xs font-medium text-gray-700 uppercase tracking-wider border border-gray-200 bg-gray-50 whitespace-nowrap\"\n                      style={{\n                        minWidth: `${columnWidths[index + 1] || 200}px`,\n                        maxWidth: \"400px\",\n                        padding: \"12px 16px\",\n                        boxShadow: \"0 1px 0 #e5e7eb\"\n                      }}\n                    >\n                      <div className=\"flex items-center justify-between\">\n                        <span className=\"truncate font-semibold\" title={String(header)}>\n                          {String(header || t('defaultColumnName', { index: index + 1 }))}\n                        </span>\n                      </div>\n                    </th>\n                  ))}\n                </tr>\n              </thead>\n\n              <tbody className=\"bg-white divide-y divide-gray-200\">\n                {displayData.slice(1).map((row, rowIndex) => {\n                  const actualRowIndex = rowIndex + 1; // 因为slice(1)，实际行索引要+1\n\n                  return (\n                    <tr\n                      key={rowIndex}\n                      className={`hover:bg-blue-50 transition-colors duration-150 ${rowIndex % 2 === 0 ? \"bg-white\" : \"bg-gray-50/30\"\n                        }`}\n                    >\n                      {/* 行号单元格 */}\n                      <td\n                        className=\"border border-gray-200 bg-gray-50 text-gray-600 text-xs font-medium text-center sticky left-0 z-5\"\n                        style={{\n                          minWidth: \"60px\",\n                          maxWidth: \"60px\",\n                          padding: \"10px 8px\",\n                          boxShadow: \"2px 0 0 #e5e7eb\"\n                        }}\n                      >\n                        {actualRowIndex}\n                      </td>\n\n                      {/* 数据单元格 */}\n                      {row.map((cell, cellIndex) => {\n                        const cellImage = getCellImage(actualRowIndex, cellIndex, cell);\n                        const isImageCell = cellImage !== null;\n\n                        return (\n                          <td\n                            key={cellIndex}\n                            className=\"text-sm text-gray-800 border border-gray-200 align-top\"\n                            style={{\n                              minWidth: `${columnWidths[cellIndex + 1] || 200}px`,\n                              maxWidth: \"400px\",\n                              padding: isImageCell ? \"2px\" : \"10px 16px\",\n                              wordBreak: \"break-word\",\n                              position: 'relative',\n                              backgroundColor: isImageCell ? '#f0f9ff' : 'transparent',\n                              verticalAlign: isImageCell ? 'middle' : 'top',\n                              height: isImageCell ? '120px' : 'auto'\n                            }}\n                          >\n                            {isImageCell && cellImage ? (\n                              <div\n                                className=\"flex items-center justify-center p-1 h-full\"\n                                style={{\n                                  minHeight: \"100px\",\n                                  width: \"100%\"\n                                }}\n                              >\n                                <img\n                                  src={`data:${cellImage.mimeType};base64,${cellImage.base64}`}\n                                  alt={`图片 ${actualRowIndex}-${cellIndex + 1}`}\n                                  className=\"max-w-full max-h-full object-contain\"\n                                  onError={(e) => {\n                                    e.target.style.display = 'none';\n                                    const parent = e.target.parentElement;\n                                    const imageId = extractImageIdFromFormula(cell);\n                                    parent.innerHTML = `\n                                      <div class=\"flex flex-col items-center justify-center p-2 text-gray-500 text-xs h-full w-full\">\n                                        <svg class=\"w-6 h-6 mb-1\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                                          <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n                                        </svg>\n                                        <span>图片加载失败</span>\n                                        ${imageId ? `<span class=\"text-xs mt-1 text-center\">ID: ${imageId}</span>` : ''}\n                                      </div>\n                                    `;\n                                  }}\n                                  onLoad={(e) => {\n                                    console.log(`Image loaded successfully: ${actualRowIndex}-${cellIndex}`);\n                                  }}\n                                />\n                              </div>\n                            ) : (\n                              <div\n                                className=\"leading-relaxed\"\n                                style={{\n                                  maxHeight: \"150px\",\n                                  overflow: \"auto\",\n                                  lineHeight: \"1.6\"\n                                }}\n                              >\n                                {cell && typeof cell === 'string' && cell.startsWith('=DISPIMG') ? (\n                                  <div className=\"flex flex-col items-center justify-center p-2 text-blue-600 text-xs bg-blue-50 rounded border border-blue-200 min-h-[80px]\">\n                                    <svg className=\"w-5 h-5 mb-1\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                                      <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n                                    </svg>\n                                    <span className=\"text-center\">图片引用</span>\n                                    {extractImageIdFromFormula(cell) && (\n                                      <span className=\"text-xs mt-1 text-gray-500 truncate max-w-full\">\n                                        ID: {extractImageIdFromFormula(cell)}\n                                      </span>\n                                    )}\n                                  </div>\n                                ) : (\n                                  cell ?? \"\"\n                                )}\n                              </div>\n                            )}\n                          </td>\n                        );\n                      })}\n\n                      {/* 填充空单元格 */}\n                      {Array.from({\n                        length: Math.max(0, columnCount - row.length)\n                      }).map((_, idx) => (\n                        <td\n                          key={`empty-${idx}`}\n                          className=\"border border-gray-200 bg-gray-50/10\"\n                          style={{\n                            minWidth: \"120px\",\n                            padding: \"10px 16px\"\n                          }}\n                        />\n                      ))}\n                    </tr>\n                  );\n                })}\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    );\n  };\n\n  // ---------------------- Render Sheet Tabs ----------------------\n  const renderSheetTabs = () => {\n    if (sheets.length <= 0) return null;\n\n    return (\n      <div className=\"border-t border-gray-300 bg-gray-100 px-2 py-2 flex items-start\">\n        <div className=\"flex space-x-1 flex-wrap gap-1.5\">\n          {sheets.map((sheet) => (\n            <button\n              key={sheet}\n              className={`px-3 py-1.5 text-sm font-medium rounded-md transition-colors duration-150 whitespace-nowrap ${activeSheet === sheet\n                ? \"bg-white text-blue-600 border border-gray-300 shadow-sm\"\n                : \"bg-gray-200 text-gray-700 border border-transparent hover:bg-gray-300\"\n                }`}\n              onClick={() => setActiveSheet(sheet)}\n              title={sheet}\n            >\n              {sheet.length > 15 ? `${sheet.substring(0, 12)}...` : sheet}\n            </button>\n          ))}\n        </div>\n      </div>\n    );\n  };\n\n  // ---------------------- Loading/Error States ----------------------\n  if (loading) {\n    return (\n      <div className=\"flex items-center justify-center h-full min-h-[500px] bg-white rounded-lg border border-gray-200\">\n        <div className=\"flex flex-col items-center gap-3\">\n          <div className=\"relative\">\n            <LoadingIcon className=\"w-8 h-8 text-blue-500\" />\n          </div>\n          <span className=\"text-sm text-gray-500\">{t('loading')}</span>\n          <span className=\"text-xs text-gray-400\">{t('supportedFormats')}</span>\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"border border-gray-200 rounded-lg bg-white h-full flex flex-col shadow-sm\">\n      <div className=\"flex-1 flex flex-col\">\n\n        {/* Table content area */}\n        <div className=\"flex-1 p-4\">\n          {error ? (\n            <div className=\"flex flex-col items-center justify-center h-full min-h-[400px] text-center p-8\">\n              <div className=\"text-red-500 mb-4 p-4 bg-red-50 rounded-lg border border-red-200 max-w-md\">\n                <svg className=\"w-12 h-12 mx-auto mb-3 text-red-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.732 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n                </svg>\n                <div className=\"font-semibold text-lg mb-1\">{t('previewFailed')}</div>\n                <div className=\"text-sm\">{error}</div>\n              </div>\n              {filePath && (\n                <button\n                  className=\"mt-4 px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors text-sm font-medium flex items-center\"\n                  onClick={() => window.open(filePath, \"_blank\")}\n                >\n                  <svg className=\"w-4 h-4 mr-2\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n                  </svg>\n                  {t('downloadOriginal')}\n                </button>\n              )}\n            </div>\n          ) : (\n            renderContent()\n          )}\n        </div>\n        {renderSheetTabs()}\n      </div>\n    </div>\n  );\n};\n\nexport default ExcelPreview;"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileSelector.tsx",
    "content": "import { FileIcon } from \"@/components/bs-icons/file\";\nimport { truncateString } from \"@/util/utils\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { ChevronDown, ChevronUp, Search } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { getMetaFile, readFileByLibDatabase } from '@/controllers/API';\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\n\ninterface FileSelectorProps {\n    knowledgeId: string | number;\n    selectedFileId: string;\n    onFileChange: (fileId: string, fileData: any) => void;\n    onWriteableChange: (writeable: boolean) => void;\n    disabled?: boolean;\n    className?: string;\n}\n\ninterface FileData {\n    id: number | string;\n    file_name: string;\n    size: number;\n    parse_type: string;\n    split_rule?: string;\n    status?: number;\n    object_name?: string;\n}\n\ninterface FileOption {\n    label: string;\n    value: string;\n    id: string | number;\n    name: string;\n    size: number;\n    type: string;\n    filePath: string;\n    suffix: string;\n    fileType: string;\n    fullData: FileData;\n}\n\nexport default function FileSelector({\n    knowledgeId,\n    selectedFileId,\n    onFileChange,\n    onWriteableChange,\n    disabled = false,\n    className = ''\n}: FileSelectorProps) {\n    const { t } = useTranslation('knowledge');\n\n    // State\n    const [isOpen, setIsOpen] = useState(false);\n    const [searchTerm, setSearchTerm] = useState('');\n    const [files, setFiles] = useState<FileOption[]>([]);\n    const [loading, setLoading] = useState(false);\n    const [hasMore, setHasMore] = useState(true);\n    const [page, setPage] = useState(1);\n    const [error, setError] = useState<string | null>(null);\n\n    // Refs\n    const searchInputRef = useRef<HTMLInputElement>(null);\n    const scrollContainerRef = useRef<HTMLDivElement>(null);\n    const loadingRef = useRef(false);\n    const searchTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n    const pageRef = useRef(1); // 使用 ref 存储当前页码，避免闭包问题\n    const hasMoreRef = useRef(true); // 使用 ref 存储是否还有更多数据\n\n    const PAGE_SIZE = 100;\n\n    // 加载单个文件数据\n    const loadSingleFile = useCallback(async (fileId: string): Promise<FileOption | null> => {\n        try {\n            const fileData = await getMetaFile(fileId)\n\n            return {\n                label: fileData?.file_name || t('file.unnamedFile'),\n                value: String(fileData?.id || ''),\n                id: fileData?.id || '',\n                name: fileData?.file_name || '',\n                size: fileData?.file_size || 0,\n                type: fileData?.file_name?.split('.').pop() || '',\n                filePath: fileData?.object_name || '',\n                suffix: fileData?.file_name?.split('.').pop() || '',\n                fileType: fileData?.parse_type || 'unknown',\n                fullData: fileData || {}\n            };\n        } catch (err) {\n            console.error('Failed to load single file:', err);\n            return null;\n        }\n    }, [knowledgeId, t]);\n\n    // 加载文件列表\n    const loadFiles = useCallback(async (pageNum: number, searchQuery: string, isLoadMore: boolean = false) => {\n        if (loadingRef.current) return;\n\n        loadingRef.current = true;\n        setLoading(true);\n        setError(null);\n\n        try {\n            const res = await readFileByLibDatabase({\n                id: knowledgeId,\n                page: pageNum,\n                pageSize: PAGE_SIZE,\n                name: searchQuery,\n                status: 2 // 只加载已解析成功的文件\n            });\n            if (onWriteableChange) {\n                onWriteableChange(res.writeable);\n            }\n            const filesData = res?.data || [];\n\n            const formattedFiles: FileOption[] = filesData.map((el: FileData) => ({\n                label: el?.file_name || t('file.unnamedFile'),\n                value: String(el?.id || ''),\n                id: el?.id || '',\n                name: el?.file_name || '',\n                size: el?.size || 0,\n                type: el?.file_name?.split('.').pop() || '',\n                filePath: el?.object_name || '',\n                suffix: el?.file_name?.split('.').pop() || '',\n                fileType: el?.parse_type || 'unknown',\n                fullData: el || {}\n            }));\n\n            if (isLoadMore) {\n                setFiles(prev => [...prev, ...formattedFiles]);\n            } else {\n                setFiles(formattedFiles);\n            }\n\n            // 判断是否还有更多数据\n            const hasMoreData = filesData.length === PAGE_SIZE;\n            setHasMore(hasMoreData);\n            hasMoreRef.current = hasMoreData; // 同步更新 ref\n\n            // 返回加载的文件列表，用于后续判断\n            return formattedFiles;\n        } catch (err) {\n            console.error('Failed to load files:', err);\n            setError(t('file.loadFailed'));\n            return [];\n        } finally {\n            setLoading(false);\n            loadingRef.current = false;\n        }\n    }, [knowledgeId, t]);\n\n    // 初始加载\n    useEffect(() => {\n        if (!knowledgeId) return;\n\n        const initLoad = async () => {\n            setPage(1);\n            pageRef.current = 1; // 初始化 ref\n            hasMoreRef.current = true; // 重置 hasMore\n\n            // 加载第一页\n            const firstPageFiles = await loadFiles(1, '', false);\n\n            // 如果有选中的文件ID，检查是否在第一页中\n            if (firstPageFiles) {\n                let selectedFile = firstPageFiles.find(f => String(f.value) === String(selectedFileId));\n\n                if (!selectedFile) {\n                    console.log('Selected file not in first page, loading it separately:', selectedFileId);\n                    // 单独加载选中的文件\n                    selectedFile = await loadSingleFile(selectedFileId);\n\n                    if (selectedFile) {\n                        // 将选中的文件添加到列表第一个位置\n                        setFiles(prev => {\n                            return [selectedFile, ...prev]\n                        });\n                        console.log('Added selected file to the top of list');\n                    }\n                }\n                onFileChange(String(selectedFile.value), selectedFile.fullData);\n            }\n\n        };\n\n        selectedFileId && initLoad();\n    }, [loadFiles, loadSingleFile]);\n\n    // 搜索处理（防抖）\n    const firstRef = useRef(true);\n    useEffect(() => {\n        if (firstRef.current) {\n            firstRef.current = false;\n            return;\n        }\n        if (searchTimeoutRef.current) {\n            clearTimeout(searchTimeoutRef.current);\n        }\n\n        searchTimeoutRef.current = setTimeout(() => {\n            setPage(1);\n            pageRef.current = 1; // 同步更新 ref\n            hasMoreRef.current = true; // 重置 hasMore\n            loadFiles(1, searchTerm, false);\n        }, 300);\n\n        return () => {\n            if (searchTimeoutRef.current) {\n                clearTimeout(searchTimeoutRef.current);\n            }\n        };\n    }, [searchTerm, loadFiles]);\n\n    // 加载更多（滚动到底部）\n    const loadMoreFiles = useCallback(() => {\n        if (loadingRef.current || !hasMoreRef.current) {\n            console.log('Skip loading: loading=', loadingRef.current, 'hasMore=', hasMoreRef.current);\n            return;\n        }\n\n        const nextPage = pageRef.current + 1;\n        pageRef.current = nextPage; // 先更新 ref\n        setPage(nextPage); // 再更新 state\n\n        console.log('Loading page:', nextPage);\n        loadFiles(nextPage, searchTerm, true);\n    }, [searchTerm, loadFiles]);\n\n    // 设置滚动监听 - 使用滚动事件替代 Intersection Observer（更可靠）\n    useEffect(() => {\n        if (!isOpen) return;\n\n        // 延迟执行以确保 Portal 已经渲染完成\n        const timer = setTimeout(() => {\n            const scrollContainer = scrollContainerRef.current;\n            if (!scrollContainer) {\n                console.warn('Scroll container not found');\n                return;\n            }\n\n            // 使用滚动事件监听\n            const handleScroll = () => {\n                const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n                // 当滚动到距离底部 50px 时加载更多\n                if (scrollHeight - scrollTop - clientHeight < 50) {\n                    console.log('Scroll triggered, hasMore:', hasMoreRef.current, 'loading:', loadingRef.current);\n                    if (hasMoreRef.current && !loadingRef.current) {\n                        loadMoreFiles();\n                    }\n                }\n            };\n\n            scrollContainer.addEventListener('scroll', handleScroll);\n\n            // 清理函数\n            return () => {\n                scrollContainer.removeEventListener('scroll', handleScroll);\n            };\n        }, 100); // 延迟 100ms 确保 Portal 渲染完成\n\n        return () => {\n            clearTimeout(timer);\n        };\n    }, [isOpen, hasMore, loading, loadMoreFiles]);\n\n    // 下拉框打开时聚焦搜索框\n    useEffect(() => {\n        if (isOpen && searchInputRef.current) {\n            setTimeout(() => {\n                searchInputRef.current?.focus();\n            }, 100);\n        }\n    }, [isOpen]);\n\n    // 处理文件选择\n    const handleSelectFile = useCallback((file: FileOption) => {\n        if (String(file.value) === String(selectedFileId)) {\n            setIsOpen(false);\n            return;\n        }\n\n        onFileChange(String(file.value), file.fullData);\n        setSearchTerm('');\n        setIsOpen(false);\n    }, [selectedFileId, onFileChange]);\n\n    // 获取当前选中的文件\n    const selectedFile = useMemo(() => {\n        return files.find(f => String(f.value) === String(selectedFileId));\n    }, [files, selectedFileId]);\n\n    // 获取文件类型\n    const getFileType = useCallback((fileName: string) => {\n        const parts = fileName.split('.');\n        return parts.length > 1 ? parts.pop()!.toLowerCase() : 'txt';\n    }, []);\n\n    return (\n        <div className={`relative ${className}`}>\n            <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n                <DropdownMenuTrigger asChild disabled={disabled}>\n                    <div className={`\n                        flex items-center gap-2 max-w-[480px] px-3 py-2 rounded-md cursor-pointer\n                        hover:bg-gray-100 transition-colors\n                        ${isOpen ? 'ring-1 ring-gray-300' : ''}\n                        ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n                    `}>\n                        {selectedFile ? (\n                            <>\n                                <FileIcon\n                                    type={getFileType(selectedFile.label)}\n                                    className=\"size-[30px] min-w-[30px]\"\n                                />\n                                <Tip content={selectedFile.label}>\n                                    <div className=\"truncate flex-1\">{selectedFile.label}</div>\n                                </Tip>\n                            </>\n                        ) : (\n                            <span className=\"text-gray-500\">{t('file.selectFile')}</span>\n                        )}\n                        {isOpen ? (\n                            <ChevronUp className=\"ml-2 h-4 w-4 opacity-50\" />\n                        ) : (\n                            <ChevronDown className=\"ml-2 h-4 w-4 opacity-50\" />\n                        )}\n                    </div>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent\n                    className=\"w-[480px] border border-gray-200 bg-white shadow-lg rounded-md p-0 z-[100]\"\n                    align=\"start\"\n                    sideOffset={5}\n                    onCloseAutoFocus={(e) => e.preventDefault()}\n                >\n                    {/* 搜索框 */}\n                    <div className=\"p-2 border-b border-gray-200 sticky top-0 bg-white z-10\">\n                        <div className=\"relative\">\n                            <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-blue-500\" />\n                            <input\n                                ref={searchInputRef}\n                                type=\"text\"\n                                placeholder={t('file.searchFiles')}\n                                className=\"w-full pl-9 pr-3 py-2 text-sm bg-white rounded-md outline-none ring-1 ring-gray-200 focus:ring-2 focus:ring-blue-500\"\n                                value={searchTerm}\n                                onChange={(e) => {\n                                    e.stopPropagation();\n                                    setSearchTerm(e.target.value);\n                                }}\n                                onKeyDown={(e) => {\n                                    e.stopPropagation();\n                                    if (e.key === 'Escape') {\n                                        setIsOpen(false);\n                                    }\n                                }}\n                                onClick={(e) => {\n                                    e.stopPropagation();\n                                }}\n                            />\n                        </div>\n                    </div>\n\n                    {/* 文件列表 */}\n                    <div\n                        ref={scrollContainerRef}\n                        className=\"max-h-[400px] overflow-y-auto\"\n                    >\n                        {error ? (\n                            <div className=\"px-4 py-8 text-center text-red-500 text-sm\">\n                                {error}\n                            </div>\n                        ) : files.length === 0 && !loading ? (\n                            <div className=\"px-4 py-8 text-center text-gray-500 text-sm\">\n                                {searchTerm ? t('file.noSearchResults') : t('file.noFiles')}\n                            </div>\n                        ) : (\n                            <>\n                                {files.map((file) => (\n                                    <DropdownMenuItem\n                                        key={file.id}\n                                        onSelect={(e) => {\n                                            e.preventDefault();\n                                            handleSelectFile(file);\n                                        }}\n                                        className=\"cursor-pointer hover:bg-gray-50 px-3 py-2 focus:bg-gray-50 outline-none\"\n                                    >\n                                        <Tip content={file.label} side=\"top\" styleClasses=\"z-[999]\">\n                                            <div className=\"flex items-center gap-3 w-full h-full\">\n                                                <FileIcon\n                                                    type={getFileType(file.label)}\n                                                    className=\"size-[30px] min-w-[30px] text-current\"\n                                                />\n                                                <span className=\"flex-1 min-w-0 truncate text-sm\">\n                                                    {truncateString(file.label, 50)}\n                                                </span>\n                                                {String(file.value) === String(selectedFileId) && (\n                                                    <div className=\"w-4 h-4 bg-blue-500 rounded-full flex items-center justify-center flex-shrink-0\">\n                                                        <div className=\"w-2 h-2 bg-white rounded-full\"></div>\n                                                    </div>\n                                                )}\n                                            </div>\n                                        </Tip>\n                                    </DropdownMenuItem>\n                                ))}\n\n                                {/* 加载更多指示器 */}\n                                {hasMore && (\n                                    <div className=\"px-4 py-3 flex justify-center items-center min-h-10\">\n                                        {loading && <LoadingIcon className=\"w-5 h-5\" />}\n                                    </div>\n                                )}\n\n                                {/* 没有更多数据提示 */}\n                                {!hasMore && files.length > 0 && (\n                                    <div className=\"px-4 py-2 text-center text-xs text-gray-400\">\n                                        {t('file.noMoreFiles')}\n                                    </div>\n                                )}\n                            </>\n                        )}\n                    </div>\n                </DropdownMenuContent>\n            </DropdownMenu>\n\n            {error && (\n                <p className=\"absolute text-sm text-red-500 mt-1\">{error}</p>\n            )}\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileUploadParagraphs.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { delChunkInPreviewApi, previewFileSplitApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\n\nconst FileUploadParagraphs = forwardRef(function ({ open = false, change, onChange }: any, ref) {\n    const { id } = useParams()\n    const { t } = useTranslation()\n    const paramsRef = useRef<any>(null)\n    const [loading, setLoading] = useState(false)\n    const [paragraph, setParagraph] = useState<any>({\n        fileId: '',\n        chunkId: '',\n        show: false\n    })\n\n    const [fileValue, setFileValue] = useState('')\n    const fileValueRef = useRef('')\n    const allFilesRef = useRef([])\n    const [files, setFiles] = useState([])\n\n    const fileCachesRef = useRef({})\n\n    useEffect(() => {\n        if (!open) {\n            fileValueRef.current = ''\n            fileCachesRef.current = {}\n        }\n    }, [open])\n\n    useImperativeHandle(ref, () => ({\n        load(data, files) {\n            paramsRef.current = data\n            fileCachesRef.current = {}\n\n            allFilesRef.current = files.map(el => ({\n                label: el.name,\n                value: el.file_path\n            }))\n            setFiles([...allFilesRef.current])\n            console.log(files[0].file_path, fileValueRef.current);\n\n            loadchunks(fileValueRef.current || files[0].file_path) // default first \n        }\n    }))\n\n    const [paragraphs, setParagraphs] = useState<any>([])\n    const [previewFileUrl, setFileUrl] = useState('')\n    const [isUns, setIsUns] = useState(false)\n    const [partitions, setPartitions] = useState<any>([])\n\n\n\n    const loadchunks = async (fileValue) => {\n        if (!fileValue) return;\n        setLoading(true);\n        setFileValue(fileValue);\n        fileValueRef.current = fileValue;\n      \n        // 调用 SSE 版本的接口，传入参数和事件回调\n        const cancelFn = previewFileSplitApi(\n          { ...paramsRef.current, file_path: fileValue, cache: !!fileCachesRef.current[fileValue] },\n          (eventType, data) => {\n            switch (eventType) {\n              case 'processing':\n                // 处理中：保持 loading 状态（无需额外操作，已设置 setLoading(true)）\n                break;\n              case 'completed':\n                // 解析完成：处理结果（与原 .then() 逻辑一致）\n                setLoading(false);\n                setParagraphs(data.chunks); // data 对应原 res\n                setFileUrl(data.file_url);\n                setIsUns(data.parse_type === 'uns');\n                setPartitions(data.partitions);\n                fileCachesRef.current[fileValue] = true; // 缓存标记\n                break;\n              case 'error':\n                // 解析错误：关闭 loading 并处理错误\n                setLoading(false);\n                console.error('文件解析失败：', data.code, data.message);\n                // 可添加错误提示：如 message.error(data.message)\n                break;\n              case 'canceled':\n                // 被新请求取消：关闭 loading\n                setLoading(false);\n                break;\n            }\n          }\n        );\n      };\n\n    const handleSelectSearch = (e: any) => {\n        const value = e.target.value\n        if (!value) return setFiles([...allFilesRef.current])\n        // 按label查找\n        const res = allFilesRef.current.filter(el => el.label.indexOf(value) !== -1 || el.value === fileValue)\n        setFiles(res)\n    }\n\n    const handleReload = () => {\n        setLoading(true)\n        onChange(false)\n        fileCachesRef.current = {}\n\n        // loadchunks(fileValue)\n    }\n\n    // const handleDeleteChunk = async (data) => {\n    //     await captureAndAlertRequestErrorHoc(delChunkInPreviewApi({\n    //         knowledge_id: id,\n    //         file_path: fileValue,\n    //         text: data.text,\n    //         chunk_index: data.metadata.chunk_index\n    //     }))\n    //     const res = paragraphs.filter(el => el.metadata.chunk_index !== data.metadata.chunk_index)\n    //     setParagraphs(res)\n    // }\n\n    if (!open) return null\n\n    if (loading) return (\n        <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <LoadingIcon />\n        </div>\n    )\n\n\n    return {/* 原预览页面，暂时无用\n        <div className=\"flex gap-2\">\n            <SelectSearch value={fileValue} options={files}\n                selectPlaceholder=''\n                inputPlaceholder=''\n                selectClass=\"w-64\"\n                onChange={handleSelectSearch}\n                onValueChange={(val) => {\n                    loadchunks(val)\n                }}>\n            </SelectSearch>\n            <div className={`${change ? '' : 'hidden'} flex items-center`}>\n                <Info className='mr-1 text-red-500' />\n                <span className=\"text-red-500\">{t('policyChangeDetected', { ns: 'knowledge' })}</span>\n                <span className=\"text-primary cursor-pointer\" onClick={handleReload}>{t('regeneratePreview', { ns: 'knowledge' })}</span>\n            </div>\n        </div>\n        <div className=\"mt-2 flex flex-wrap gap-2 min-w-[770px]\">\n            {\n                paragraphs.map(item => (\n                    <ParagraphsItem\n                        key={item.text}\n                        disabled={change}\n                        data={item}\n                        onDeled={handleDeleteChunk}\n                        onEdit={() => {\n                            setParagraph({\n                                fileId: item.metadata.file_id,\n                                chunkId: item.metadata.chunk_index,\n                                show: true\n                            })\n                        }} />\n                ))\n            }\n        </div>\n        <Dialog open={paragraph.show} onOpenChange={(show) => setParagraph({ ...paragraph, show })}>\n            <DialogContent close={false} className='size-full max-w-full sm:rounded-none p-0 border-none'>\n                <ParagraphEdit\n                    chunks={paragraphs}\n                    partitions={partitions}\n                    isUns={isUns}\n                    oriFilePath={fileValue}\n                    filePath={previewFileUrl}\n                    fileId={paragraph.fileId}\n                    chunkId={paragraph.chunkId}\n                    onClose={() => setParagraph({ ...paragraph, show: false })}\n                    onChange={(val) => setParagraphs(paragraphs.map(item =>\n                        item.metadata.chunk_index === paragraph.chunkId ? { ...item, text: val } : item))\n                    }\n                />\n            </DialogContent>\n        </Dialog> */}\n\n});\n\nexport default FileUploadParagraphs"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileUploadSplitStrategy.tsx",
    "content": "import { DelIcon } from '@/components/bs-icons';\nimport { Button } from '@/components/bs-ui/button';\nimport { Input } from '@/components/bs-ui/input';\nimport { RadioGroup, RadioGroupItem } from '@/components/bs-ui/radio';\nimport { generateUUID } from '@/components/bs-ui/utils';\nimport i18next, { use } from 'i18next';\nimport { useMemo, useState } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport { useTranslation } from 'react-i18next';\nexport const ruleI18nMap = {\n  '\\\\n': 'singleNewlineRule',\n  '\\\\n\\\\n': 'doubleNewlineRule',\n  '第.{1,3}章': 'chapterRule',\n  '第.{1,3}条': 'articleRule',\n  '。': 'chinesePeriodRule',\n  '\\\\.': 'englishPeriodRule',\n}\n\nconst FileUploadSplitStrategy = ({ data: strategies, onChange: setStrategies }) => {\n  const { t } = useTranslation('knowledge');\n  const [customRegex, setCustomRegex] = useState('');\n  const [position, setPosition] = useState('after');\n\n  const handleDragEnd = (result) => {\n    if (!result.destination) return;\n\n    const items = Array.from(strategies);\n    const [reorderedItem] = items.splice(result.source.index, 1);\n    items.splice(result.destination.index, 0, reorderedItem);\n\n    setStrategies(items);\n  };\n\n  const handleAddCustomStrategy = () => {\n    if (customRegex.trim()) {\n      const newStrategy = {\n        id: generateUUID(6),\n        regex: customRegex.trim(),\n        position,\n        rule: t('customRule'),\n      };\n      setStrategies([...strategies, newStrategy]);\n      setCustomRegex('');\n    }\n  };\n  \n  const handleRegexClick = (regex, mode) => {\n    // 根据regex获取对应的规则key\n    const newStrategy = {\n      id: generateUUID(6),\n      regex:t(`predefinedRules.${ruleI18nMap[regex]}.label`),\n      position: mode,\n      rule: t(`predefinedRules.${ruleI18nMap[regex]}.desc`),\n    };\n    setStrategies([...strategies, newStrategy]);\n  };\n\n  const handleDelete = (id) => {\n    setStrategies(strategies.filter(item => item.id !== id));\n  };\n\nconst [predefinedRules] = useState([\n    { regexKey:  '\\\\n', mode: 'after' },\n    { regexKey:'\\\\n\\\\n', mode: 'after' },\n    { regexKey:  '第.{1,3}章', mode: 'before' },\n    { regexKey: '第.{1,3}条', mode: 'before' },\n    { regexKey: '。', mode: 'after' },\n    { regexKey: '\\\\.', mode: 'after' }\n\n  ]);\n\n  return (\n    <div className='flex gap-6'>\n      {/* 左侧拖拽区域 */}\n      <div className='flex-1'>\n        <div className='py-2 px-0 pr-1 overflow-y-auto max-h-[11.5rem] select-none'>\n          <DragDropContext onDragEnd={handleDragEnd}>\n            <Droppable droppableId=\"strategies\">\n              {(provided) => (\n                <div {...provided.droppableProps} ref={provided.innerRef}>\n                  {strategies.map((strategy, index) => (\n                    <Draggable key={strategy.id} draggableId={strategy.id} index={index}>\n                      {(provided) => (\n                        <div\n                          ref={provided.innerRef}\n                          {...provided.draggableProps}\n                          {...provided.dragHandleProps}\n                          className=\"my-1 border rounded bg-accent text-sm h-8\"\n                        >\n                          <div className='relative group h-full py-1 px-2 whitespace-nowrap overflow-hidden max-w-96'>\n                            {strategy.position === 'before' ? (\n                              <>\n                                <span>✂️{strategy.regex}</span>\n                                <span className='ml-3 text-xs text-gray-500'>{strategy.rule}</span>\n                              </>\n                            ) : (\n                              <>\n                                <span>{strategy.regex}✂️</span>\n                                <span className='ml-3 text-xs text-gray-500'>{strategy.rule}</span>\n                              </>\n                            )}\n                            {/* 右侧渐变遮罩 */}\n                            <div className=\"absolute inset-y-0 right-0 w-16 bg-gradient-to-l from-accent to-transparent pointer-events-none\"></div>\n                            <DelIcon\n                              onClick={() => handleDelete(strategy.id)}\n                              className='absolute right-1 top-0 hidden group-hover:block cursor-pointer'\n                            />\n                          </div>\n                        </div>\n                      )}\n                    </Draggable>\n                  ))}\n\n                  {/* 添加占位符直到5个 */}\n                  {strategies.length < 5 && (\n                    Array(5 - strategies.length).fill(null).map((_, index) => (\n                      <div\n                        key={`placeholder-${index}`}\n                        className=\"my-1 border rounded bg-gray-100 text-sm opacity-50 h-8\"\n                      >\n                        <div className='relative group h-full py-1 px-2'>\n                          <span className=\"text-gray-400\"> </span>\n                        </div>\n                      </div>\n                    ))\n                  )}\n                  {provided.placeholder}\n                </div>\n              )}\n            </Droppable>\n          </DragDropContext>\n        </div>\n        <p className='text-xs text-gray-500 pt-1'>{t('splitPriorityInfo')}</p>\n      </div>\n\n      <div className=\"flex-1 flex flex-col gap-3 px-1\"> \n        <h3 className=\"text-sm text-left font-medium text-gray-700\">{t('universalRules')}:</h3>\n        <div className=\"flex flex-wrap gap-2\">\n          {predefinedRules.map((rule, index) => {\n            const regexDisplay = t(`predefinedRules.${ruleI18nMap[rule.regexKey]}.label`);\n            return (\n              <Button\n                key={index}\n                className=\"px-2 h-6\"\n                variant=\"secondary\"\n                onClick={() => handleRegexClick(rule.regexKey, rule.mode)}\n              >\n                {rule.mode === 'before' ? `✂️${regexDisplay}` : `${regexDisplay}✂️`}\n              </Button>\n            );\n          })}\n        </div>\n        \n        <h3 className=\"text-sm text-left font-medium text-gray-700\"> {t('addCustomRule')}:</h3>\n        <div className=\"text-sm flex flex-wrap items-center gap-2\">\n          <div className='flex items-center gap-1 w-full'>\n            <span>{t('in')}</span>\n            <Input\n              value={customRegex}\n              onChange={(e) => setCustomRegex(e.target.value)}\n              placeholder={t('enterRegex')}\n              className='flex-1 py-0 h-6' \n            />\n          </div>\n        </div>\n\n        <RadioGroup \n          value={position} \n          onValueChange={setPosition} \n          className=\"flex items-center flex-wrap text-sm gap-2\" \n        >\n          <div className=\"flex items-center gap-1\"> \n            <RadioGroupItem value=\"before\" id={`radio-before-${Date.now()}`} />\n            <label htmlFor={`radio-before-${Date.now()}`} className=\"cursor-pointer\">\n              {t('before')}\n            </label>\n          </div>\n          <div className=\"flex items-center gap-1\">\n            <RadioGroupItem value=\"after\" id={`radio-after-${Date.now()}`} />\n            <label htmlFor={`radio-after-${Date.now()}`} className=\"cursor-pointer\">\n              {t('after')}\n            </label>\n          </div>\n          <span className=\"ml-1\">{t('split')}</span> \n        </RadioGroup>\n\n        <div className=\"flex justify-end mt-2\"> \n          <Button onClick={handleAddCustomStrategy} className=\"h-6 px-3\"> \n            {t('add')}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default FileUploadSplitStrategy;"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileUploadStep1.tsx",
    "content": "\nimport KnowledgeUploadComponent from \"@/components/bs-comp/knowledgeUploadComponent\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\n\nexport default function FileUploadStep1({ hidden, onNext, onSave, initialFiles }) {\n    const { t } = useTranslation('knowledge')\n    const { id: kid } = useParams()\n    const { appConfig } = useContext(locationContext)\n\n    const [fileCount, setFileCount] = useState(0)\n    const [finish, setFinish] = useState(false)\n    const filesRef = useRef<any>([])\n    const failFilesRef = useRef<any>([])\n\n    const handleFileChange = (files, failFiles) => {\n\n        filesRef.current = files.map(file => ({\n            ...file,\n            suffix: file.fileName.split('.').pop().toLowerCase() || 'txt',\n            fileType: ['xlsx', 'xls', 'csv'].includes(file.fileName.split('.').pop().toLowerCase()) ? 'table' : 'file',\n            fileId: 0\n        }))\n        failFilesRef.current = failFiles\n\n        setFinish(!failFiles.length)\n    }\n\n    const [loading, setLoading] = useState(false)\n    const handleSave = async () => {\n        const params = {\n            knowledge_id: kid,\n            file_list: filesRef.current.map(file => ({\n                file_path: file.file_path,\n                excel_rule: file.fileType === 'file' ? {} : {\n                    \"append_header\": true,\n                    \"header_end_row\": 1,\n                    \"header_start_row\": 1,\n                    \"slice_length\": 10\n                }\n            })),\n            separator: [\"\\n\\n\", \"\\n\"],\n            separator_rule: [\"after\", \"after\"],\n            chunk_size: 1000,\n            chunk_overlap: 100,\n            retain_images: true,\n            enable_formula: true,\n            force_ocr: true,\n            fileter_page_header_footer: true\n        }\n\n        setLoading(true)\n        await onSave(params)\n        setLoading(false)\n    }\n    useEffect(() => {\n        if (initialFiles.length > 0) {\n            handleFileChange(initialFiles, []);\n            setFileCount(initialFiles.length);\n\n        }\n    }, [initialFiles]);\n    return <div className={`relative h-full max-w-[1200px] mx-auto flex flex-col px-10 pt-4 ${hidden ? 'hidden' : ''}`}>\n        <KnowledgeUploadComponent\n            size={appConfig.uploadFileMaxSize}\n            progressClassName='max-h-[460px]'\n            knowledgeId={kid}\n            onSelectFile={(count) => {\n                setFileCount(count)\n                setFinish(false)\n            }}\n            onFileChange={handleFileChange}\n            initialFiles={initialFiles}\n        />\n        <div className=\"flex justify-end gap-4 mt-8\">\n            <Button disabled={loading || !finish} variant=\"outline\" onClick={handleSave}>{t(\"uploadDirectly\")}</Button>\n            <Button disabled={loading || !finish} onClick={() => {\n                onNext(filesRef.current)\n            }} >\n                {fileCount ? <span>{t('totalFiles', { count: fileCount })}</span> : null}&nbsp;{t('nextStep')}</Button>\n        </div>\n    </div>\n\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileUploadStep2.tsx",
    "content": "\"use client\"\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { cn } from \"@/util/utils\";\nimport { SearchCheck } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport useKnowledgeStore from \"../useKnowledgeStore\";\nimport PreviewResult from \"./PreviewResult\";\nimport RuleFile from \"./RuleFile\";\nimport RuleTable from \"./RuleTable\";\n\n// 原有类型定义不变\nexport interface FileItem {\n    split_rule: any;\n    id: string;\n    fileName: string;\n    file_path: string;\n    fileType: 'table' | 'file';\n    suffix: string;\n    isEtl4lm?: string;\n}\n\n// 新增：仅定义必要的持久化状态类型\nexport interface Step2PersistState {\n    rules: any;\n    applyEachCell: boolean;\n    cellGeneralConfig: any;\n    strategies: any[];\n}\n\n// 接口仅新增2个必要props，不改动原有参数\ninterface IProps {\n    step: number;\n    resultFiles: FileItem[];\n    isSubmitting: boolean;\n    onNext: (step: number, config?: any) => void;\n    onPrev: () => void;\n    isAdjustMode?: boolean;\n    kId?: string | number;\n    // 新增1：接收父组件保存的状态\n    persistState?: Step2PersistState;\n    // 新增2：状态变化时通知父组件\n    onPersistStateChange?: (state: Step2PersistState) => void;\n}\n\nconst enum DisplayModeType {\n    OnlyTables = 'table',\n    OnlyDocuments = 'file',\n    Mixed = 'mixed'\n}\n\n\n\nconst FileUploadStep2 = forwardRef(({\n    step, resultFiles, isSubmitting, onNext, onPrev, isAdjustMode, kId,\n    persistState,\n    onPersistStateChange\n}: IProps, ref) => {\n    const [previewLoading, setPreviewLoading] = useState(false);\n    const [previewFailed, setPreviewFailed] = useState(false);\n    const [showPreview, setShowPreview] = useState(false);\n    const [previewCount, setPreviewCount] = useState(0);\n    const [applyRule, setApplyRule] = useState<any>({});\n    const applyRuleRef = useRef(applyRule);\n    const { id: kid } = useParams();\n    const { t } = useTranslation('knowledge');\n    const setSelectedChunkIndex = useKnowledgeStore((state) => state.setSelectedChunkIndex);\n    const splitRule = resultFiles[0]?.split_rule;\n    const isEtl4lm = resultFiles[0]?.isEtl4lm === 'etl4lm';\n    const displayStep = isAdjustMode ? step + 1 : step;\n    const initialStrategies = useMemo(() => {\n        return [\n            { id: '1', regex: '\\\\n\\\\n', position: 'after', rule: t('predefinedRules.singleNewlineRule.desc') },\n            { id: '2', regex: '\\\\n', position: 'after', rule: t('predefinedRules.doubleNewlineRule.desc') }\n        ]\n    }, [t]);\n    const displayMode: DisplayModeType | null = useMemo(() => {\n        if (!resultFiles || resultFiles.length === 0) return null;\n        const hasTableFiles = resultFiles.some(file => file.fileType === 'table');\n        const hasDocumentFiles = resultFiles.some(file => file.fileType === 'file');\n        return hasTableFiles && !hasDocumentFiles ? DisplayModeType.OnlyTables :\n            !hasTableFiles && hasDocumentFiles ? DisplayModeType.OnlyDocuments :\n                DisplayModeType.Mixed;\n    }, [resultFiles]);\n\n    // 核心修改1：初始化规则时，优先使用父组件传递的persistState\n    const {\n        rules,\n        setRules,\n        applyEachCell,\n        setApplyEachCell,\n        cellGeneralConfig,\n        setCellGeneralConfig,\n        strategies,\n        setStrategies\n    } = useFileProcessingRules(\n        persistState?.strategies || initialStrategies,\n        resultFiles,\n        kid || kId,\n        splitRule,\n        persistState?.rules,\n        persistState?.applyEachCell ?? false,\n        persistState?.cellGeneralConfig\n    );\n\n    // 核心修改2：状态变化时，通知父组件更新（仅新增这一段）\n    useEffect(() => {\n        if (onPersistStateChange) {\n            onPersistStateChange({\n                rules,\n                applyEachCell,\n                cellGeneralConfig,\n                strategies\n            });\n        }\n    }, [rules, applyEachCell, cellGeneralConfig, strategies, onPersistStateChange]);\n\n    // 原有逻辑完全不变\n    useEffect(() => {\n        applyRuleRef.current = applyRule;\n    }, [applyRule]);\n\n    useEffect(() => {\n        setApplyRule({\n            applyEachCell,\n            cellGeneralConfig,\n            rules\n        });\n    }, [applyEachCell, cellGeneralConfig, rules]);\n\n    const vildateCell = () => {\n        if (applyEachCell\n            ? rules.fileList.some(file => file.excelRule.append_header && Number(file.excelRule.header_start_row) > Number(file.excelRule.header_end_row))\n            : cellGeneralConfig.append_header && Number(cellGeneralConfig.header_start_row) > Number(cellGeneralConfig.header_end_row)) {\n            toast({ variant: 'warning', description: t('minRowGreaterThanMaxRow') });\n            return true;\n        }\n\n        const chunkSizeNum = Number((rules as any)?.chunkSize ?? (rules as any)?.chunk_size ?? 0);\n        const chunkOverlapNum = Number((rules as any)?.chunkOverlap ?? (rules as any)?.chunk_overlap ?? 0);\n        if (!Number.isNaN(chunkSizeNum) && !Number.isNaN(chunkOverlapNum) && chunkOverlapNum > chunkSizeNum) {\n            toast({ variant: 'warning', description: t('overlapGreaterThanChunkSize') });\n            return true;\n        }\n\n        return false;\n    };\n\n    const { toast } = useToast();\n\n    const internalHandleNext = () => {\n        if (vildateCell()) return;\n        const hasEmptyCustomRule = (strategies || []).some(s => String(s?.regex ?? '') === '');\n        if (hasEmptyCustomRule) {\n            toast({ variant: 'warning', description: t('customRuleNotEmpty') });\n            return;\n        }\n        if (!rules.separator || rules.separator.length === 0) {\n            toast({ variant: 'warning', description: t('addAtLeastOneSplitRule') });\n            return;\n        }\n\n        const nextStep = step + 1;\n        if (step === 2 || displayStep === 2) {\n            const config = { applyEachCell, cellGeneralConfig, rules, resultFiles };\n            setApplyRule(config);\n            setSelectedChunkIndex(-1);\n            return onNext(nextStep, config);\n        }\n\n        const { fileList, pageHeaderFooter, chunkOverlap, chunkSize, enableFormula, forceOcr, retainImages, separator, separatorRule } = rules;\n        const params = {\n            knowledge_id: kid || kId,\n            file_list: fileList.map(item => ({\n                file_path: item.filePath,\n                excel_rule: applyEachCell ? item.excelRule : cellGeneralConfig\n            })),\n            separator,\n            separator_rule: separatorRule,\n            chunk_size: chunkSize,\n            chunk_overlap: chunkOverlap,\n            retain_images: retainImages,\n            enable_formula: enableFormula,\n            force_ocr: forceOcr,\n            fileter_page_header_footer: pageHeaderFooter\n        };\n\n        onNext(nextStep, params);\n    };\n\n    useImperativeHandle(ref, () => ({\n        handleNext: internalHandleNext\n    }));\n\n    const handlePreview = () => {\n        if (vildateCell()) return;\n        const hasEmptyCustomRule = (strategies || []).some(s => String(s?.regex ?? '') === '');\n        if (hasEmptyCustomRule) {\n            toast({ variant: 'warning', description: t('customRuleNotEmpty') });\n            return;\n        }\n        if (!rules.separator || rules.separator.length === 0) {\n            toast({ variant: 'warning', description: t('addAtLeastOneSplitRule') });\n            return;\n        }\n\n        setShowPreview(true);\n        setPreviewLoading(true);\n        setPreviewCount(c => c + 1);\n        setApplyRule({\n            applyEachCell,\n            cellGeneralConfig,\n            rules: { ...rules, knowledgeId: kId }\n        });\n    };\n    return (\n        <div className=\"w-full\">\n            <div className={cn(\"flex flex-row justify-center gap-4\", showPreview ? \"px-4\" : \"\")}>\n                {displayStep === 2 && (\n                    <div className={cn(\n                        \"h-full flex flex-col min-w-[540px]\",\n                        showPreview ? \"max-w-1/2\" : \"\"\n                    )}>\n                        <Tabs\n                            defaultValue={displayMode === DisplayModeType.Mixed ? 'file' : displayMode}\n                            className=\"flex flex-col h-full\"\n                        >\n                            <div className=\"\">\n                                {displayMode === DisplayModeType.Mixed ? (\n                                    <TabsList className=\"\">\n                                        <TabsTrigger id=\"knowledge_file_tab\" value=\"file\" className=\"roundedrounded-xl\">{t('defaultStrategy')}</TabsTrigger>\n                                        <TabsTrigger id=\"knowledge_table_tab\" value=\"table\">{t('customStrategy')}</TabsTrigger>\n                                    </TabsList>\n                                ) : <div className=\"h-1\"></div>}\n                            </div>\n                            <TabsContent value=\"file\">\n                                <RuleFile\n                                    rules={rules}\n                                    setRules={setRules}\n                                    strategies={strategies}\n                                    setStrategies={(next) => setStrategies(next)}\n                                    isEtl4lm={isEtl4lm}\n                                    showPreview={showPreview}\n                                />\n                            </TabsContent>\n                            <TabsContent value=\"table\">\n                                <RuleTable\n                                    rules={rules}\n                                    setRules={setRules}\n                                    applyEachCell={applyEachCell}\n                                    setApplyEachCell={setApplyEachCell}\n                                    cellGeneralConfig={cellGeneralConfig}\n                                    setCellGeneralConfig={setCellGeneralConfig}\n                                    showPreview={showPreview}\n                                />\n                            </TabsContent>\n                            <div className=\"mt-4\">\n                                <Button\n                                    className=\"h-8\"\n                                    onClick={handlePreview}\n                                    disabled={strategies.length === 0}\n                                >\n                                    <SearchCheck size={16} />\n                                    {showPreview ? t('repreviewSegmentation') : t('previewResults')}\n                                </Button>\n                            </div>\n                        </Tabs>\n                    </div>\n                )}\n\n                {(showPreview || (step === 3 && !isAdjustMode)) ? (\n                    <div className={cn(\n                        \"relative\",\n                        showPreview ? \"w-1/2\" : \"\"\n                    )}>\n                        <PreviewResult\n                            showPreview={showPreview}\n                            step={step}\n                            previewCount={previewCount}\n                            resultFiles={resultFiles}\n                            kId={kId}\n                            rules={applyRule.rules}\n                            applyEachCell={applyRule.applyEachCell}\n                            cellGeneralConfig={applyRule.cellGeneralConfig}\n                            handlePreviewResult={(isSuccess) => {\n                                setPreviewFailed(!isSuccess);\n                                setPreviewLoading(false);\n                            }}\n                        />\n                    </div>\n                ) : null}\n            </div >\n\n            <div className=\"fixed bottom-2 right-12 flex gap-4 bg-background p-2 rounded-lg shadow-sm z-10\">\n                <Button\n                    className=\"h-8\"\n                    variant=\"outline\"\n                    onClick={() => {\n                        onPrev()\n                        step === 2 && setShowPreview(false)\n                    }}\n                >\n                    {t('previousStep')}\n                </Button>\n                <Button\n                    className=\"h-8\"\n                    disabled={previewFailed || isSubmitting || strategies.length === 0}\n                    onClick={internalHandleNext}\n                >\n                    {isSubmitting ? (\n                        <LoadingIcon className=\"h-12 w-12\" />\n                    ) : (\n                        t('nextStep')\n                    )}\n                </Button>\n            </div>\n        </div>\n    );\n});\n\nFileUploadStep2.displayName = 'FileUploadStep2';\n\nexport default FileUploadStep2;\n\nconst useFileProcessingRules = (\n    initialStrategies,\n    resultFiles,\n    kid,\n    splitRule,\n    parentRules,\n    parentApplyEachCell,\n    parentCellGeneralConfig\n) => {\n    const { t } = useTranslation('knowledge');\n    const parsedSplitRule = useMemo(() => {\n        if (!splitRule) return {} as any;\n        if (typeof splitRule === 'string') {\n            try {\n                const obj = JSON.parse(splitRule);\n                return obj && typeof obj === 'object' ? obj : {};\n            } catch (e) {\n                console.error('splitRule 解析失败:', e);\n                return {} as any;\n            }\n        }\n        return splitRule || {};\n    }, [splitRule]);\n\n    const [rules, setRules] = useState(() => {\n        if (parentRules) return { ...parentRules, knowledgeId: kid };\n        return {\n            knowledgeId: kid,\n            fileList: [],\n            separator: (parsedSplitRule?.separator || ['\\\\n\\\\n', '\\\\n']).map((s) =>\n                typeof s === 'string' ? s.replace(/\\n/g, '\\\\n') : s\n            ),\n            separatorRule: parsedSplitRule?.separator_rule || ['after', 'after'],\n            chunkSize: parsedSplitRule?.chunk_size?.toString() || \"1000\",\n            chunkOverlap: parsedSplitRule?.chunk_overlap?.toString() || \"0\",\n            retainImages: parsedSplitRule?.retain_images ?? true,\n            enableFormula: parsedSplitRule?.enable_formula ?? true,\n            forceOcr: parsedSplitRule?.force_ocr ?? true,\n            pageHeaderFooter: parsedSplitRule?.filter_page_header_footer ?? true\n        };\n    });\n\n    const [applyEachCell, setApplyEachCell] = useState(() => {\n        if (parentApplyEachCell !== undefined) return parentApplyEachCell;\n        return parsedSplitRule?.excel_rule?.applyEachCell ?? false;\n    });\n\n    const [cellGeneralConfig, setCellGeneralConfig] = useState(() => {\n        if (parentCellGeneralConfig) return parentCellGeneralConfig;\n        return {\n            slice_length: splitRule?.excel_rule?.slice_length || 10,\n            append_header: splitRule?.excel_rule?.append_header || true,\n            header_start_row: splitRule?.excel_rule?.header_start_row || 1,\n            header_end_row: splitRule?.excel_rule?.header_end_row || 1\n        };\n    });\n\n    const getStrategyRuleDescription = (regex) => {\n        const ruleMap = {\n            '\\\\n\\\\n': t('doubleNewlineRule'),\n            '\\\\n': t('singleNewlineRule'),\n            '\\n\\n': t('doubleNewlineRule'),\n            '\\n': t('singleNewlineRule'),\n            '第.{1,3}章': t('chapterRule'),\n            '第.{1,3}条': t('articleRule'),\n            '。': t('chinesePeriodRule'),\n            '\\\\.': t('englishPeriodRule')\n        };\n        return ruleMap[regex] || t('customRule', { regex });\n    };\n\n    const [strategies, setStrategies] = useState(() => {\n        if (parentRules?.strategies) return parentRules.strategies;\n        if (parsedSplitRule?.separator && parsedSplitRule?.separator_rule) {\n            return parsedSplitRule.separator.map((regex, index) => ({\n                id: `strategy-${index}`,\n                regex: typeof regex === 'string' ? regex.replace(/\\n/g, '\\\\n') : regex,\n                position: parsedSplitRule.separator_rule[index] || 'after',\n                rule: getStrategyRuleDescription(regex)\n            }));\n        }\n        return initialStrategies;\n    });\n    // Update rules when strategies change（不过滤只含换行的规则）\n    useEffect(() => {\n        const cleaned = (strategies || []).filter(s => String(s?.regex ?? '') !== '');\n        const [separator, separatorRule] = cleaned.reduce(([_separator, _separatorRule], strategy) => {\n            const regex = String(strategy.regex).replace(/\\n/g, '\\\\n');\n            const position = strategy.position || 'after';\n            return [[..._separator, regex], [..._separatorRule, position]];\n        }, [[], []]);\n\n        setRules(prev => ({\n            ...prev,\n            separator,\n            separatorRule\n        }));\n    }, [strategies]);\n\n    // Initialize rules when resultFiles change\n    useEffect(() => {\n        if (resultFiles && resultFiles.length > 0) {\n            setRules(prev => ({\n                ...prev,\n                fileList: resultFiles.map(file => ({\n                    id: file.id,\n                    filePath: file.file_path,\n                    fileName: file.fileName,\n                    previewUrl: file.previewUrl,\n                    suffix: file.suffix,\n                    fileType: file.fileType,\n                    excelRule: file.fileType === 'table' ? {\n                        ...cellGeneralConfig\n                    } : {}\n                }))\n            }));\n        }\n    }, [resultFiles, kid, cellGeneralConfig]);\n\n    return {\n        rules,\n        setRules,\n        applyEachCell,\n        setApplyEachCell,\n        cellGeneralConfig,\n        setCellGeneralConfig,\n        strategies,\n        setStrategies\n    };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/FileUploadStep4.tsx",
    "content": "import CardComponent from \"@/components/bs-comp/cardComponent\";\nimport ProgressItem from \"@/components/bs-comp/knowledgeUploadComponent/ProgressItem\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { readFileByLibDatabase } from \"@/controllers/API\";\nimport { getLlmDefaultModel } from \"@/controllers/API/finetune\";\nimport { createWorkflowApi, getWorkflowNodeTemplate } from \"@/controllers/API/workflow\";\nimport { useKnowledgeDetails } from \"@/controllers/hooks/knowledge\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\n\nexport default function FileUploadStep4({ data, kId, hasRepeat }) {\n    const { t } = useTranslation('knowledge');\n    const [finish, setFinish] = useState(true)\n    const navigate = useNavigate()\n    const { id: kid } = useParams()\n\n    const [files, setFiles] = useState([])\n    const timerRef = useRef(null); // Polling timer reference\n    const fileIdsRef = useRef([]); // File ID list reference\n    const processingRef = useRef(new Set()); // Track processing file IDs\n    const isPollingRef = useRef(false); // Prevent polling concurrency\n    const hasInitialized = useRef(false);\n    const [premainingFileIds, setPremainingFileIds] = useState([]); // Track remaining file IDs\n\n    // Initialize file status (executed only once)\n    useEffect(() => {\n        if ((data.length > 0 && !hasInitialized.current) || hasRepeat) {\n\n            const initialFiles = data.map(item => ({\n                id: item.resultId || item.fileId || item.id, // Frontend file unique identifier\n                fileId: item.fileId,\n                fileName: item.fileName,\n                error: false,\n                reason: '',\n                progress: 'await'\n            }));\n\n            setFiles(initialFiles);\n\n            // Key: fileIdsRef and processingRef both store frontend file IDs (ensure data consistency)\n            const frontEndFileIds = initialFiles.map(file => file.fileId);\n            fileIdsRef.current = frontEndFileIds;\n            processingRef.current.clear();\n            frontEndFileIds.forEach(id => processingRef.current.add(id)); // Use same batch of IDs\n\n            setFinish(false);\n            hasInitialized.current = true;\n        }\n        setPremainingFileIds(data.reduce((res, item) => {\n            res[item.id] = true;\n            return res;\n        }, {}))\n\n    }, [data, hasRepeat]);\n\n    // Poll file status (complete fix version)\n    useEffect(() => {\n        // 1. Define polling function first (must be defined before calling, fix \"undefined when called\" issue)\n        const pollFilesStatus = async () => {\n            if (isPollingRef.current) return;\n            isPollingRef.current = true;\n\n            try {\n                // Fix pending file ID exception (previously was [0], should actually take frontend file ID)\n                const pendingFileIds = Array.from(processingRef.current);\n                console.log(\"Correct pending file IDs:\", pendingFileIds); // Should now be ['fe9d1b', 'd3b66c', ...]\n\n                // Keep API parameters unchanged (backend may filter by knowledge_id, file_ids can pass frontend IDs or leave empty)\n                const res = await readFileByLibDatabase({\n                    id: kid || kId,\n                    page: 0,\n                    pageSize: 0,\n                    file_ids: pendingFileIds\n                });\n\n                // setFiles status update logic in polling function (add logs after cleanup)\n                setFiles(prev => {\n                    const updatedFiles = [...prev];\n                    const resMap = new Map(res.data.map(item => [item.file_name.toLowerCase().trim(), item])); // Build Map with file names for faster matching\n\n                    updatedFiles.forEach((file, index) => {\n                        const resItem = resMap.get(file.fileName.toLowerCase().trim());\n                        if (resItem && resItem.status === 2) {\n                            // Double confirmation: remove current file id from processingRef\n                            if (processingRef.current.has(file.id)) {\n                                processingRef.current.delete(file.id);\n                                console.log(`移除待处理ID: ${file.id}，剩余待处理: ${processingRef.current.size}`);\n                            }\n                            updatedFiles[index] = { ...file, progress: 'end' };\n                        } else if (resItem && resItem.status === 3) {\n                            if (processingRef.current.has(file.id)) {\n                                processingRef.current.delete(file.id);\n                                console.log(`移除待处理ID: ${file.id}（失败），剩余待处理: ${processingRef.current.size}`);\n                            }\n                            updatedFiles[index] = { ...file, progress: 'end', error: true, reason: resItem.remark || t('parseFailed') };\n                        }\n                    });\n\n                    return updatedFiles;\n                });\n\n            } catch (e) {\n                console.error(\"轮询出错:\", e);\n            } finally {\n                isPollingRef.current = false;\n            }\n        };\n\n        // 3. Handle \"no files\" case (only then call the already defined pollFilesStatus)\n        if (fileIdsRef.current.length === 0) {\n            const timer = setTimeout(() => {\n                if (fileIdsRef.current.length > 0) {\n                    pollFilesStatus(); // Function is now defined, can be called normally\n                }\n            }, 100);\n            return () => clearTimeout(timer);\n        }\n\n        // 4. When there are files, poll immediately + schedule polling\n        if (fileIdsRef.current.length > 0) {\n            pollFilesStatus(); // Execute first time immediately\n            timerRef.current = setInterval(pollFilesStatus, 5000);\n        } else {\n            setFinish(true);\n        }\n\n        // 5. Clean up timer\n        return () => {\n            if (timerRef.current) clearInterval(timerRef.current);\n        };\n    }, [kid, kId, t, data]); // Add t to dependencies\n\n    useEffect(() => {\n        return () => {\n            hasInitialized.current = false;\n        };\n    }, []);\n\n    // Check if all files are completed\n    useEffect(() => {\n        // Mark as complete when processing set is empty\n        // if (processingRef.current.size === 0 && fileIdsRef.current.length > 0) {\n        if (processingRef.current.size === 0) {\n            console.log('所有文件处理完成');\n            if (timerRef.current) {\n                clearInterval(timerRef.current);\n            }\n            setFinish(true);\n        } else {\n            setFinish(false);\n        }\n    }, [files]); // Depend on file status changes\n\n    console.log('files :>> ', files);\n\n    let finalId = kid;\n    if (kId) {\n        finalId = kId.replace(/\\D/g, '');\n    }\n\n    const [details] = useKnowledgeDetails([finalId])\n\n    const handleCreateFlow = async (params) => {\n        const model = await getLlmDefaultModel()\n\n        const flow = await getKnowledgeDefaultFlowTemplate(finalId, details[0]?.name || '', model.model_id)\n        const res = await captureAndAlertRequestErrorHoc(createWorkflowApi(\n            t('documentKnowledgeQa') + generateUUID(5),\n            t('retrieveDocumentKnowledge'),\n            \"\",\n            flow))\n        history.pushState(null, null, __APP_ENV__.BASE_URL + '/build/apps');\n\n        navigate('/flow/' + res.id);\n    }\n\n    return <div className={`max-w-[1400px] mx-auto px-20 pt-4 relative`}>\n        <div className=\"flex gap-4\">\n            <div className=\"flex-1\">\n                <h1 className=\"text-3xl text-primary mt-2\">{finish ? t('documentDataParsingCompleted') : t('documentDataBeingPrepared')}</h1>\n                <p className=\"text-base text-gray-500 mt-2\">{t('youCanReturn')}</p>\n                <div className=\"overflow-y-auto mt-4 space-y-2 pb-10 max-h-[calc(100vh-400px)]\">\n                    {files.map(item => <ProgressItem analysis key={item.id} item={item} />)}\n                </div>\n                <div className=\"flex justify-end gap-4\">\n                    <Button onClick={() => navigate(-1)}>\n                        {t('returnToKnowledgeBase')}\n                    </Button>\n                </div>\n            </div>\n            {finish && <div className=\"w-96 pt-24\">\n                <CardComponent\n                    data={null}\n                    type='assist'\n                    title={t('buildKnowledgeBaseQaAgent')}\n                    description={<p>{t('afterDocumentParsing')}</p>}\n                    onClick={handleCreateFlow}\n                ></CardComponent>\n            </div>}\n        </div>\n    </div>\n};\n\n// Keep getKnowledgeDefaultFlowTemplate function unchanged\nconst getKnowledgeDefaultFlowTemplate = async (kid, kname, modelId) => {\n    const templates = await getWorkflowNodeTemplate()\n    let startNode = null\n    let inputNode = null\n    let ragNode = null\n\n    templates.forEach(node => {\n        const nodeCopy = JSON.parse(JSON.stringify(node)); // Deep copy node\n\n        if (node.type === 'start') {\n            nodeCopy.id = `start_${generateUUID(5)}`;\n            startNode = nodeCopy;\n        } else if (node.type === 'input') {\n            nodeCopy.id = `input_${generateUUID(5)}`;\n            inputNode = nodeCopy;\n        } else if (node.type === 'rag') {\n            nodeCopy.id = `rag_${generateUUID(5)}`;\n            ragNode = nodeCopy;\n        }\n    });\n\n    ragNode.group_params.forEach(group => {\n        group.params.forEach(param => {\n            if (param.key === 'user_question') {\n                param.value = [inputNode.id + \".user_input\"];\n                param.varZh = {\n                    [inputNode.id + \".user_input\"]: \"输入/user_input\"\n                };\n            } else if (param.key === 'knowledge') {\n                param.value.value = [\n                    {\n                        \"key\": Number(kid),\n                        \"label\": kname\n                    }\n                ];\n            } else if (param.key === 'user_prompt') {\n                param.value = `用户问题：{{#${ragNode.id}.user_question#}}\\n参考文本：{{#${ragNode.id}.retrieved_result#}}\\n你的回答：`;\n                param.varZh = {\n                    [`${ragNode.id}.user_question`]: \"user_question\",\n                    [`${ragNode.id}.retrieved_result`]: \"retrieved_result\"\n                };\n            } else if (param.key === 'model_id') {\n                param.value = modelId\n            } else if (param.key === 'output_user_input') {\n                param.value = [\n                    {\n                        \"key\": \"output_user_input\",\n                        \"label\": \"output_user_input\"\n                    }\n                ]\n            }\n        });\n    })\n\n    return {\n        data: {\n            \"edges\": [\n                {\n                    \"id\": `xy-edge__${startNode.id}right_handle-${inputNode.id}left_handle`,\n                    \"type\": \"customEdge\",\n                    \"source\": startNode.id,\n                    \"target\": inputNode.id,\n                    \"animated\": true,\n                    \"sourceHandle\": \"right_handle\",\n                    \"targetHandle\": \"left_handle\"\n                },\n                {\n                    \"id\": `xy-edge__${inputNode.id}right_handle-${ragNode.id}left_handle`,\n                    \"type\": \"customEdge\",\n                    \"source\": inputNode.id,\n                    \"target\": ragNode.id,\n                    \"animated\": true,\n                    \"sourceHandle\": \"right_handle\",\n                    \"targetHandle\": \"left_handle\"\n                },\n                {\n                    \"id\": `xy-edge__${ragNode.id}right_handle-${inputNode.id}left_handle`,\n                    \"type\": \"customEdge\",\n                    \"source\": ragNode.id,\n                    \"target\": inputNode.id,\n                    \"animated\": true,\n                    \"sourceHandle\": \"right_handle\",\n                    \"targetHandle\": \"left_handle\"\n                }\n            ],\n            \"nodes\": [\n                {\n                    \"id\": startNode.id,\n                    \"data\": startNode,\n                    \"type\": \"flowNode\",\n                    \"dragging\": false,\n                    \"measured\": {\n                        \"width\": 334,\n                        \"height\": 134\n                    },\n                    \"position\": {\n                        \"x\": 469,\n                        \"y\": 150\n                    },\n                    \"selected\": false\n                },\n                {\n                    \"id\": inputNode.id,\n                    \"data\": inputNode,\n                    \"type\": \"flowNode\",\n                    \"dragging\": false,\n                    \"measured\": {\n                        \"width\": 334,\n                        \"height\": 150\n                    },\n                    \"position\": {\n                        \"x\": 884,\n                        \"y\": 149\n                    },\n                    \"selected\": false\n                },\n                {\n                    \"id\": ragNode.id,\n                    \"data\": ragNode,\n                    \"type\": \"flowNode\",\n                    \"dragging\": false,\n                    \"measured\": {\n                        \"width\": 334,\n                        \"height\": 1162\n                    },\n                    \"position\": {\n                        \"x\": 1328,\n                        \"y\": 182\n                    },\n                    \"selected\": false\n                }\n            ],\n            \"viewport\": {\n                \"x\": 192,\n                \"y\": -45,\n                \"zoom\": 0.5\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/Files.tsx",
    "content": "import { Link, useNavigate, useParams } from \"react-router-dom\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../../components/bs-ui/table\";\n\nimport { FileIcon } from \"@/components/bs-icons/file\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { truncateString } from \"@/util/utils\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from \"@radix-ui/react-dropdown-menu\";\nimport { CircleAlertIcon, ClipboardPenLine, Filter, RotateCw, Trash2 } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { SearchInput } from \"../../../components/bs-ui/input\";\nimport AutoPagination from \"../../../components/bs-ui/pagination/autoPagination\";\nimport { deleteFile, getKnowledgeDetailApi, readFileByLibDatabase, retryKnowledgeFileApi } from \"../../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { useTable } from \"../../../util/hook\";\nimport useKnowledgeStore from \"../useKnowledgeStore\";\nimport { MetadataManagementDialog } from \"./MetadataManagementDialog\";\n\ninterface StatusIndicatorProps {\n    status: number;\n    remark?: string;\n}\n// 1. 定义状态配置映射表\nconst STATUS_CONFIG: Record<number, { labelKey: string; colorClass: string; bgClass: string }> = {\n    1: { labelKey: \"parsing\", colorClass: \"text-[#4D9BF0]\", bgClass: \"bg-[#4D9BF0]\" },\n    2: { labelKey: \"completed\", colorClass: \"text-green-500\", bgClass: \"bg-green-500\" },\n    3: { labelKey: \"parseFailed\", colorClass: \"text-red-500\", bgClass: \"bg-red-500\" },\n    4: { labelKey: \"parsing\", colorClass: \"text-[#4D9BF0]\", bgClass: \"bg-[#4D9BF0]\" },\n    5: { labelKey: \"queuing\", colorClass: \"text-yellow-500\", bgClass: \"bg-yellow-500\" },\n    6: { labelKey: \"timeout\", colorClass: \"text-red-500\", bgClass: \"bg-red-500\" },\n};\n\nexport const StatusIndicator: React.FC<StatusIndicatorProps> = ({ status, remark }) => {\n    const { t } = useTranslation()\n    const config = STATUS_CONFIG[status];\n    const reason = useMemo(() => {\n        if (remark?.indexOf('{') === 0) {\n            try {\n                const obj = JSON.parse(remark)\n                return t(`errors.${obj.status_code}`, obj.data)\n            } catch (error) {\n                return remark\n            }\n        }\n        return remark\n    }, [remark, t])\n\n    // 如果状态不在定义中，返回 null 或默认 UI\n    if (!config) return null;\n\n    const renderTooltip = () => {\n        let tooltipContent = \"\";\n\n        if (status === 3 && remark) {\n            tooltipContent = reason; // 解析失败的报错原因\n        } else if (status === 6) {\n            tooltipContent = t('timeoutTip', { ns: 'knowledge' })\n        }\n\n        if (!tooltipContent) return null;\n\n        return (\n            <TooltipProvider delayDuration={100}>\n                <Tooltip>\n                    <TooltipTrigger asChild>\n                        <CircleAlertIcon size={16} className=\"cursor-pointer\" />\n                    </TooltipTrigger>\n                    <TooltipContent side=\"top\" className=\"whitespace-pre-line\">\n                        <div className=\"max-w-96 text-left break-all whitespace-normal\">\n                            {tooltipContent}\n                        </div>\n                    </TooltipContent>\n                </Tooltip>\n            </TooltipProvider>\n        );\n    };\n\n    const BadgeContent = (\n        <div className=\"flex items-center gap-2 cursor-default\">\n            <span className={`size-[6px] rounded-full ${config?.bgClass}`}></span>\n            <span className={`font-[500] text-[14px] leading-[100%] text-center flex gap-0.5 items-center ${config?.colorClass}`}>\n                {t(config?.labelKey, { ns: 'knowledge' })}\n                {(status === 3 || status === 6) && renderTooltip()}\n            </span>\n        </div>\n    );\n\n    // 其他状态直接渲染内容\n    return BadgeContent;\n};\n\nexport default function Files({ onPreview }) {\n    const { t } = useTranslation('knowledge')\n    const { id } = useParams()\n\n    const { isEditable, setEditable } = useKnowledgeStore();\n    const { page, pageSize, data: datalist, total, loading, setPage, search, reload, filterData } = useTable({ cancelLoadingWhenReload: true }, (param) =>\n        readFileByLibDatabase({ ...param, id, name: param.keyword }).then(res => {\n            setEditable(res.writeable)\n            return res\n        })\n    )\n    const [metadataOpen, setMetadataOpen] = useState(false);\n    const navigate = useNavigate()\n\n    // Store complete file objects (preserving all original parameters)\n    const [selectedFileObjs, setSelectedFileObjs] = useState<Array<Record<string, any>>>([]);\n    const [isAllSelected, setIsAllSelected] = useState(false);\n\n    const [selectedFilters, setSelectedFilters] = useState<number[]>([]);\n    const [tempFilters, setTempFilters] = useState<number[]>([]);\n    const [isFilterOpen, setIsFilterOpen] = useState(false);\n    const [metadataFields, setMetadataFields] = useState<Array<{ field_name: string; field_type: string }>>([]);\n    // Polling during parsing\n    const timerRef = useRef(null)\n    useEffect(() => {\n        if (datalist.some(el => el.status === 1)) {\n            timerRef.current = setTimeout(() => {\n                reload()\n            }, 5000)\n            return () => clearTimeout(timerRef.current)\n        }\n    }, [datalist])\n\n    const applyFilters = () => {\n        setSelectedFilters([...tempFilters]);\n        const params: any = {};\n        if (tempFilters.length > 0) {\n            params.status = tempFilters;\n        } else {\n            params.status = [];\n        }\n\n        filterData(params);\n        setIsFilterOpen(false);\n        setSelectedFileObjs([]);\n        setIsAllSelected(false);\n    };\n\n    const resetFilters = () => {\n        const emptyFilters: number[] = [];\n        setTempFilters(emptyFilters);\n        setSelectedFilters(emptyFilters);\n        filterData({ status: [] });\n        setIsFilterOpen(false);\n        setSelectedFileObjs([]);\n        setIsAllSelected(false);\n    };\n\n    const handleDelete = (id) => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('confirmDeleteFile'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteFile(id).then(res => {\n                    reload()\n                    setSelectedFileObjs(prev => prev.filter(file => file.id !== id));\n                }))\n                next()\n            },\n        })\n    }\n\n    // Retry parsing (preserving original file parameter structure)\n    const handleRetry = (files) => {\n        captureAndAlertRequestErrorHoc(retryKnowledgeFileApi({ file_objs: files }).then(res => {\n            reload()\n        }))\n    }\n\n    // Select all/Deselect all (storing complete file objects)\n    const toggleSelectAll = (checked: boolean) => {\n        if (checked) {\n            // Select all current page and deduplicate\n            const newFiles = datalist\n                .filter(file => !selectedFileObjs.some(item => item.id === file.id))\n                .map(file => ({ ...file })); // Deep copy to preserve all parameters\n            setSelectedFileObjs([...selectedFileObjs, ...newFiles]);\n        } else {\n            // Deselect all current page\n            const currentPageIds = new Set(datalist.map(file => file.id));\n            setSelectedFileObjs(prev => prev.filter(file => !currentPageIds.has(file.id)));\n        }\n        setIsAllSelected(checked);\n    };\n\n    // Single file selection/deselection\n    const toggleSelectFile = (file: Record<string, any>, checked: boolean) => {\n        if (checked) {\n            // Avoid duplicate additions\n            if (!selectedFileObjs.some(item => item.id === file.id)) {\n                setSelectedFileObjs([...selectedFileObjs, { ...file }]);\n            }\n        } else {\n            setSelectedFileObjs(prev => prev.filter(item => item.id !== file.id));\n            setIsAllSelected(false);\n        }\n    };\n\n    // Check if current page is fully selected\n    const isCurrentPageAllSelected = useMemo(() => {\n        if (datalist.length === 0) return false;\n        const selectedIds = new Set(selectedFileObjs.map(file => file.id));\n        return datalist.every(file => selectedIds.has(file.id));\n    }, [datalist, selectedFileObjs]);\n\n    // Batch delete\n    const handleBatchDelete = () => {\n        bsConfirm({\n            title: t('prompt'),\n            desc: t('confirmDeleteSelectedFiles', { count: selectedFileObjs.length }),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(Promise.all(\n                    selectedFileObjs.map(file => deleteFile(file.id))\n                ).then(() => {\n                    setPage(1);\n                    reload();\n                    setSelectedFileObjs([]);\n                    setIsAllSelected(false);\n                }))\n                next();\n            },\n        })\n    }\n\n    // Batch retry\n    const handleBatchRetry = () => {\n        // Filter failed files, preserving complete parameters\n        const failedFiles = selectedFileObjs.filter(file => file.status === 3);\n\n        if (failedFiles.length > 0) {\n            handleRetry(failedFiles); // Directly pass complete file object array\n            setSelectedFileObjs([]);\n            setIsAllSelected(false);\n        }\n    }\n\n    // Strategy parsing\n    const dataSouce = useMemo(() => {\n        return datalist.map(el => {\n            if (el.file_name.includes('xlsx', 'xls', 'csv') && el.parse_type !== \"local\" && el.parse_type !== \"uns\") {\n                const excel_rule = JSON.parse(el.split_rule).excel_rule\n                return {\n                    ...el,\n                    strategy: ['', t('everyRowsAsOneSegment', { count: excel_rule?.slice_length })]\n                }\n            }\n            if (!el.split_rule) return {\n                ...el,\n                strategy: ['', '']\n            }\n            const rule = JSON.parse(el.split_rule)\n            const { separator, separator_rule } = rule\n            const data = separator.map((el, i) => `${separator_rule[i] === 'before' ? '✂️' : ''}${el}${separator_rule[i] === 'after' ? '✂️' : ''}`)\n            return {\n                ...el,\n                strategy: [data.length > 2 ? data.slice(0, 2).join(',') : '', data.join(',')]\n            }\n        })\n    }, [datalist, t])\n\n    const splitRuleDesc = (el) => {\n        if (!el.split_rule) return el.strategy[1].replace(/\\n/g, '\\\\n')\n        const suffix = el.file_name.split('.').pop().toUpperCase()\n        const excel_rule = JSON.parse(el.split_rule).excel_rule\n        if (!excel_rule) return el.strategy[1].replace(/\\n/g, '\\\\n')\n        return ['XLSX', 'XLS', 'CSV'].includes(suffix) ? t('everyRowsAsOneSegment', { count: excel_rule.slice_length }) : el.strategy[1].replace(/\\n/g, '\\\\n')\n    }\n\n    // Check if there are selected parsing failed files\n    const hasSelectedFailedFiles = useMemo(() => {\n        return selectedFileObjs.some(file => file.status === 3);\n    }, [selectedFileObjs]);\n\n    useEffect(() => {\n        if (isFilterOpen) {\n            setTempFilters([...selectedFilters]);\n        }\n    }, [isFilterOpen, selectedFilters]);\n\n    // Update select all status when page data changes\n    useEffect(() => {\n        setIsAllSelected(datalist.length > 0 && datalist.every(file =>\n            selectedFileObjs.some(item => item.id === file.id)\n        ));\n    }, [datalist, selectedFileObjs]);\n\n    // Handle dropdown menu close event\n    const handleOpenChange = (open: boolean) => {\n        if (!open && isFilterOpen) {\n            applyFilters();\n        }\n        setIsFilterOpen(open);\n    };\n\n    useEffect(() => {\n        // Load metadata when dialog opens and knowledge base ID exists\n        if (metadataOpen && id) { // Note: dependency is metadataOpen, not open\n            const fetchMetadata = async () => {\n                try {\n                    // Call API to get knowledge base details\n                    const knowledgeDetails = await getKnowledgeDetailApi([id]);\n                    const knowledgeDetail = knowledgeDetails[0]; // Get first knowledge base details\n                    if (knowledgeDetail && knowledgeDetail.metadata_fields) {\n                        setMetadataFields(knowledgeDetail.metadata_fields);\n                    } else {\n                        setMetadataFields([]); // Set to empty array if no metadata\n                    }\n\n                } catch (err: any) {\n                    console.error(\"Metadata loading failed:\", err);\n                    // Can add user prompt here\n                }\n            };\n            fetchMetadata();\n        } else if (!metadataOpen) {\n            // Clear metadata state when dialog closes\n            setMetadataFields([]);\n        }\n    }, [metadataOpen, id]);\n\n    return (\n        <div className=\"relative\">\n\n            {loading && (\n                <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                    <LoadingIcon />\n                </div>\n            )}\n\n            {/* Top action bar */}\n            {selectedFileObjs.length > 0 && (\n                <div className=\"absolute top-[-62px] left-0 right-0 flex justify-center items-center p-2 border-b z-10\">\n                    <div className=\"flex items-center\">\n                        <div className=\"flex gap-2\">\n                            <Tip content={!isEditable && t('noOperationPermission')} side='bottom'>\n                                <Button\n                                    variant=\"outline\"\n                                    onClick={handleBatchDelete}\n                                    disabled={!isEditable}\n                                    className=\"flex items-center gap-1 disabled:pointer-events-auto\"\n                                >\n                                    <Trash2 size={16} />\n                                    {t('delete')}\n                                </Button>\n                            </Tip>\n                            {hasSelectedFailedFiles && (\n                                <Tip content={!isEditable && t('noOperationPermission')} side='bottom'>\n                                    <Button\n                                        variant=\"outline\"\n                                        onClick={handleBatchRetry}\n                                        disabled={!isEditable}\n                                        className=\"flex items-center gap-1 disabled:pointer-events-auto\"\n                                    >\n                                        <RotateCw size={16} />\n                                        {t('retry')}\n                                    </Button>\n                                </Tip>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            )}\n\n            <div className=\"absolute right-0 top-[-62px] flex gap-4 items-center z-999\">\n                <SearchInput placeholder={t('searchFileName')} onChange={(e) => {\n                    search(e.target.value);\n                    setSelectedFileObjs([]);\n                    setIsAllSelected(false);\n                }} />\n                <Button\n                    variant=\"outline\"\n                    onClick={() => setMetadataOpen(true)}\n                    className=\"px-4 whitespace-nowrap\"\n                >\n                    <ClipboardPenLine size={16} strokeWidth={1.5} className=\"mr-1\" />\n                    {t('metaData')}\n                </Button>\n                {isEditable && (\n                    <Link to={`/filelib/upload/${id}`}>\n                        <Button className=\"px-8\">{t('uploadFile')}</Button>\n                    </Link>\n                )}\n            </div>\n\n            <div className=\"h-[calc(100vh-180px)] overflow-y-auto pb-20\">\n                <Table>\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead className=\"min-w-[10px]\">\n                                <Checkbox\n                                    checked={isCurrentPageAllSelected}\n                                    onCheckedChange={toggleSelectAll}\n                                />\n                            </TableHead>\n                            <TableHead className=\"min-w-[250px]\">{t('fileName')}</TableHead>\n                            <TableHead>{t('segmentationStrategy')}</TableHead>\n                            <TableHead className=\"min-w-[100px]\">{t('updateTime')}</TableHead>\n                            <TableHead className=\"flex items-center gap-4 min-w-[130px]\">\n                                {t('status')}\n                                <div className=\"relative\">\n                                    <DropdownMenu open={isFilterOpen} onOpenChange={handleOpenChange}>\n                                        <DropdownMenuTrigger asChild>\n                                            <Button\n                                                variant=\"ghost\"\n                                                className={`flex items-center gap-1 ${selectedFilters.length > 0 ? 'text-blue-500' : ''}`}\n                                            >\n                                                <Filter size={16} />\n                                            </Button>\n                                        </DropdownMenuTrigger>\n                                        <DropdownMenuContent\n                                            className=\"h-full p-0 shadow-lg rounded-md border\"\n                                            style={{\n                                                backgroundColor: 'white',\n                                                opacity: 1,\n                                            }}\n                                            align=\"end\"\n                                        >\n                                            <div className=\"px-2\">\n                                                {[\n                                                    {\n                                                        value: 2,\n                                                        label: 'Completed',\n                                                        color: 'text-green-500',\n                                                        icon: (\n                                                            <div className=\"flex items-center gap-2 mt-2\">\n                                                                <span className=\"size-[6px] rounded-full bg-green-500\"></span>\n                                                                <span className=\"font-[500] text-[14px] text-green-500 leading-[100%]\">\n                                                                    {t(\"completed\")}\n                                                                </span>\n                                                            </div>\n                                                        )\n                                                    },\n                                                    {\n                                                        value: 1,\n                                                        label: 'Parsing',\n                                                        color: 'text-[#4D9BF0]',\n                                                        icon: (\n                                                            <div className=\"flex items-center gap-2 mt-2\">\n                                                                <span className=\"size-[6px] rounded-full bg-[#4D9BF0]\"></span>\n                                                                <span className=\"font-[500] text-[14px] text-[#4D9BF0] leading-[100%]\">\n                                                                    {t(\"parsing\")}\n                                                                </span>\n                                                            </div>\n                                                        )\n                                                    },\n                                                    {\n                                                        value: 3,\n                                                        label: 'Parse Failed',\n                                                        color: 'text-red-500',\n                                                        icon: (\n                                                            <div className=\"flex items-center gap-2 mt-2\">\n                                                                <span className=\"size-[6px] rounded-full bg-red-500\"></span>\n                                                                <span className=\"font-[500] text-[14px] text-red-500 leading-[100%]\">\n                                                                    {t(\"parseFailed\")}\n                                                                </span>\n                                                            </div>\n                                                        )\n                                                    }\n                                                ].map(({ value, label, color, icon }) => (\n                                                    <div\n                                                        key={value}\n                                                        className=\"flex items-center gap-3 px-2 py-1.5 hover:bg-gray-100 rounded cursor-pointer\"\n                                                        onClick={(e) => {\n                                                            e.stopPropagation();\n                                                            setTempFilters(prev =>\n                                                                prev.includes(value)\n                                                                    ? prev.filter(v => v !== value)\n                                                                    : [...prev, value]\n                                                            );\n                                                        }}\n                                                    >\n                                                        <input\n                                                            type=\"checkbox\"\n                                                            checked={tempFilters.includes(value)}\n                                                            onChange={() => { }}\n                                                            className=\"h-4 w-4 mt-2 rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n                                                        />\n                                                        <div className=\"flex items-center gap-2\">\n                                                            {icon}\n                                                        </div>\n                                                    </div>\n                                                ))}\n                                            </div>\n                                            <div className=\"border-t border-gray-200\"></div>\n                                            <div className=\"flex justify-around gap-2 px-3 py-2\">\n                                                <Button\n                                                    variant=\"ghost\"\n                                                    size=\"sm\"\n                                                    onClick={(e) => {\n                                                        e.stopPropagation()\n                                                        resetFilters()\n                                                    }}\n                                                    disabled={tempFilters.length === 0}\n                                                >\n                                                    {t(\"reset\")}\n                                                </Button>\n                                                <Button\n                                                    size=\"sm\"\n                                                    onClick={(e) => {\n                                                        e.stopPropagation()\n                                                        applyFilters()\n                                                    }}\n                                                >\n                                                    {t(\"confirm\")}\n                                                </Button>\n                                            </div>\n                                        </DropdownMenuContent>\n                                    </DropdownMenu>\n                                </div>\n                            </TableHead>\n                            <TableHead className=\"text-right pr-6\">{t('operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {dataSouce.map(el => (\n                            <TableRow\n                                key={el.id}\n                                onClick={() => {\n                                    if (selectedFileObjs.length === 0 && el.status !== 3 && el.status !== 1) {\n                                        onPreview(el.id);\n                                    }\n                                }}\n                                className={selectedFileObjs.some(file => file.id === el.id) ? 'bg-blue-50' : ''}\n                            >\n                                <TableCell>\n                                    <Checkbox\n                                        checked={selectedFileObjs.some(file => file.id === el.id)}\n                                        onCheckedChange={(checked) => {\n                                            toggleSelectFile(el, checked as boolean);\n                                        }}\n                                        onClick={(e) => e.stopPropagation()}\n                                    />\n                                </TableCell>\n                                <TableCell className=\"min-w-[250px]\">\n                                    <Tip content={el.file_name} align=\"start\" >\n                                        <div className=\"flex items-center gap-2\">\n                                            <FileIcon\n                                                type={el.file_name.split('.').pop().toLowerCase() || 'txt'}\n                                                className=\"size-[30px] min-w-[30px]\"\n                                            />\n                                            {truncateString(el.file_name, 35)}\n                                        </div>\n                                    </Tip>\n                                </TableCell>\n                                <TableCell>\n                                    {el.strategy[0] ? (\n                                        <TooltipProvider delayDuration={100}>\n                                            <Tooltip>\n                                                <TooltipTrigger className=\"truncate max-w-[106px]\">{el.strategy[1].replace(/\\n/g, '\\\\n')}</TooltipTrigger>\n                                                <TooltipContent>\n                                                    <div className=\"max-w-96 text-left break-all whitespace-normal\">{el.strategy[1].replace(/\\n/g, '\\\\n')}</div>\n                                                </TooltipContent>\n                                            </Tooltip>\n                                        </TooltipProvider>\n                                    ) : splitRuleDesc(el)}\n                                </TableCell>\n                                <TableCell>{el.update_time.replace('T', ' ')}</TableCell>\n\n                                <TableCell>\n                                    <StatusIndicator status={el.status} remark={el.remark} />\n                                </TableCell>\n                                <TableCell className=\"text-right\">\n                                    <div className=\"flex items-center justify-end gap-1\">\n                                        {el.status === 3 && (\n                                            <Tip content={!isEditable && t('noOperationPermission')} side='top'>\n                                                <Button\n                                                    variant=\"ghost\"\n                                                    size=\"icon\"\n                                                    disabled={!isEditable}\n                                                    onClick={(e) => {\n                                                        e.stopPropagation();\n                                                        handleRetry([el]); // Single retry passes complete object\n                                                    }}\n                                                    className=\"disabled:pointer-events-auto\"\n                                                    title={t('retry')}\n                                                >\n                                                    <RotateCw size={16} />\n                                                </Button>\n                                            </Tip>\n                                        )}\n                                        <Tip\n                                            content={!isEditable && t('noOperationPermission')}\n                                            side='top'\n                                            styleClasses=\"-translate-x-6\"\n                                        >\n                                            <Button\n                                                variant=\"ghost\"\n                                                size=\"icon\"\n                                                className=\"disabled:pointer-events-auto\"\n                                                onClick={(e) => {\n                                                    e.stopPropagation();\n                                                    handleDelete(el.id);\n                                                }}\n                                                disabled={!isEditable}\n                                                title={t('delete')}\n                                            >\n                                                <Trash2 size={16} />\n                                            </Button>\n                                        </Tip>\n                                    </div>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer px-6\">\n                <p></p>\n                <div>\n                    <AutoPagination\n                        page={page}\n                        pageSize={pageSize}\n                        total={total}\n                        onChange={(newPage) => setPage(newPage)}\n                    />\n                </div>\n            </div>\n            <MetadataManagementDialog\n                open={metadataOpen}\n                onOpenChange={() => setMetadataOpen(false)}\n                onSave={() => { }}\n                hasManagePermission={isEditable}\n                id={id}\n                initialMetadata={metadataFields}\n            />\n        </div>\n\n    )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/Guide.tsx",
    "content": "import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader } from \"@/components/bs-ui/alertDialog\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function Guide() {\n    const [open, setOpen] = useState(false);\n    const { t } = useTranslation('knowledge');\n\n    // 检查用户是否选择了“不再提醒”\n    useEffect(() => {\n        const neverShowAgain = localStorage.getItem(\"neverShowAgain\");\n        if (!neverShowAgain) {\n            setOpen(true); // 如果用户没有选择“不再提醒”，则显示提醒框\n        }\n    }, []);\n\n    // 处理【知道了】按钮点击\n    const handleCancelClick = () => {\n        setOpen(false); // 关闭提醒框\n    };\n\n    // 处理【不再提醒】按钮点击\n    const handleOkClick = () => {\n        localStorage.setItem(\"neverShowAgain\", \"true\"); // 将用户选择存储在localStorage中\n        setOpen(false); // 关闭提醒框\n    };\n\n    return (\n        <AlertDialog open={open} onOpenChange={setOpen}>\n            <AlertDialogContent className=\"max-w-full size-full bg-black/80 content-center\">\n                <div className=\"h-fit w-[1000px] mx-auto bg-background p-4 rounded-md\">\n                    <AlertDialogHeader className=\"relative\">\n                        <AlertDialogDescription className=\"text-popover-foreground\">\n                            <p className=\"text-left mb-4\">{t('modifySelection')}</p>\n                            <img src={__APP_ENV__.BASE_URL + \"/assets/guide.gif\"} alt=\"\" />\n                        </AlertDialogDescription>\n                    </AlertDialogHeader>\n                    <AlertDialogFooter className=\"gap-x-8 mt-6\">\n                        <AlertDialogCancel onClick={handleCancelClick} className=\"px-11\">\n                            {t('cancel')}\n                        </AlertDialogCancel>\n                        <Button onClick={handleOkClick} className=\"px-11\">\n                            {t('dontRemind')}\n                        </Button>\n                    </AlertDialogFooter>\n                </div>\n            </AlertDialogContent>\n        </AlertDialog>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/Header.tsx",
    "content": "import { Dialog, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { updateKnowledgeApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ArrowLeft, SquarePen } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useParams, useNavigate, useLocation } from \"react-router-dom\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport ShadTooltip from \"../../../components/ShadTooltipComponent\";\nimport KnowledgeBaseSettingsDialog from \"./EditKnowledgeDialog\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport useKnowledgeStore from \"../useKnowledgeStore\";\n\ninterface HeaderProps {\n    fileTitle: boolean;\n    onBack?: () => void; // 添加回退回调\n    showBackButton?: boolean; // 控制是否显示回退按钮\n}\n\nexport default function Header({ fileTitle, onBack, showBackButton = true }: HeaderProps) {\n    const [libInfo, setLibInfo] = useState({ name: '', desc: '' })\n    const [open, setOpen] = useState(false)\n    const { id } = useParams()\n    const { t } = useTranslation()\n    const navigate = useNavigate()\n    const location = useLocation()\n\n    useEffect(() => {\n        // @ts-ignore\n        const [libname, libdesc] = window.libname || [] // 临时记忆\n        if (libname) {\n            localStorage.setItem('libname', libname)\n            localStorage.setItem('libdesc', libdesc)\n        }\n        setLibInfo({ name: libname || localStorage.getItem('libname'), desc: libdesc || localStorage.getItem('libdesc') })\n    }, [])\n\n    // 默认的回退逻辑\n    const handleBackDefault = () => {\n        // 检查是否有历史记录可回退\n        if (window.history.length > 1) {\n            navigate(-1);\n        } else {\n            // 如果没有历史记录，回退到文件库首页\n            navigate('/filelib');\n        }\n    }\n\n    // 使用传入的回调或默认回调\n    const handleBackClick = onBack || handleBackDefault;\n\n    const { message } = useToast()\n    const handleSave = (form) => {\n        captureAndAlertRequestErrorHoc(updateKnowledgeApi({\n            knowledge_id: Number(id),\n            name: form.name,\n            description: form.desc\n        })).then((res) => {\n            if (!res) return\n            // api\n            setLibInfo(form)\n            setOpen(false)\n            message({ variant: 'success', description: t('saved') })\n            localStorage.setItem('libname', form.name)\n            localStorage.setItem('libdesc', form.desc)\n        })\n    }\n\n    const { isEditable } = useKnowledgeStore();\n\n    return (\n        <div className=\"flex items-start h-14 z-30\">\n            {/* 回退按钮 - 根据 showBackButton 控制显示 */}\n            {showBackButton && (\n                <ShadTooltip content={t('back')} side=\"top\">\n                    <button\n                        className=\"extra-side-bar-buttons w-[36px]\"\n                        onClick={handleBackClick}\n                    >\n                        <ArrowLeft className=\"side-bar-button-size\" />\n                    </button>\n                </ShadTooltip>\n            )}\n\n            <div>\n                <div className=\"group flex items-center\">\n                    {fileTitle && (\n                        <span className=\"text-foreground text-sm font-black pl-4 truncate max-w-80\">\n                            {libInfo.name}\n                        </span>\n                    )}\n                    <div className=\"h-10\"></div>\n                    {/* edit dialog */}\n                    {/* {isEditable ? <Dialog open={open} onOpenChange={setOpen}>\n                        <DialogTrigger asChild>\n                            <Button variant=\"ghost\" size=\"icon\" className=\"group-hover:visible invisible disabled:pointer-events-auto\">\n                                <SquarePen className=\"w-4 h-4\" />\n                            </Button>\n                        </DialogTrigger>\n                        {\n                            open && <KnowledgeBaseSettingsDialog\n                                initialName={libInfo.name}\n                                initialDesc={libInfo.desc}\n                                onSave={handleSave}\n                            />\n                        }\n                    </Dialog> : <div className=\"h-10\"></div>} */}\n                </div>\n            </div>\n        </div>\n    )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/ImportQa.tsx",
    "content": "import { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { Button, LoadButton } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Table, TableBody, TableCell, TableHead, TableRow } from \"@/components/bs-ui/table\";\nimport { message } from \"@/components/bs-ui/toast/use-toast\";\nimport SimpleUpload from \"@/components/bs-ui/upload/simple\";\nimport { getQaFile, getQaFilePreview, postImportQaFile } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { downloadFile } from \"@/util/utils\";\nimport { generateUUID } from \"@/utils\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport * as XLSX from 'xlsx';\n\n// add QA\nconst SimilarityProblemModal = forwardRef(function ({ questions }, ref) {\n    const { t } = useTranslation('knowledge');\n    const [open, setOpen] = useState(false);\n\n    const idRef = useRef('');\n    const sourceRef = useRef('');\n    useImperativeHandle(ref, () => ({\n        open() {\n            setOpen(true);\n        },\n    }));\n\n    const close = () => {\n        setOpen(false);\n    };\n    return (\n        <Dialog open={open} onOpenChange={(bln) => bln ? setOpen(bln) : close()}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('similarQuestions')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2 max-h-[36vh] overflow-y-auto\">\n                    <Table>\n                        <TableRow>\n                            <TableHead>{t('similarQuestionsPreview')}</TableHead>\n                        </TableRow>\n                        <TableBody>\n                            {(questions || []).slice(0, 10).map((el, index) => {\n                                return (\n                                    <TableRow key={index}>\n                                        <TableCell className=\"font-medium\">\n                                            {el}\n                                        </TableCell>\n                                    </TableRow>\n                                )\n                            })\n                            }\n                        </TableBody>\n                    </Table>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <LoadButton type=\"submit\" className=\"px-11\">\n                            {t('confirm')}\n                        </LoadButton>\n                    </DialogClose>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\nfunction QaTable({ dataList }) {\n    const { t } = useTranslation('knowledge');\n    const similarityQuestions = useRef(null);\n    const [questions, setQuestions] = useState<string[]>([]);\n    return (\n        <div>\n            <Table>\n                <TableRow>\n                    <TableHead>{t('question')}</TableHead>\n                    <TableHead>{t('answer')}</TableHead>\n                    <TableHead className=\"\">{t('similarQuestions')}</TableHead>\n                </TableRow>\n                <TableBody>\n                    {dataList.map(el => {\n                        const questions = el.questions.filter(item => !!item);\n                        const mainQuestion = questions.shift() || '';\n                        const answers = JSON.parse(el.answers);\n                        const answer = answers[0] || '';\n                        return (\n                            <TableRow key={generateUUID(4)}>\n                                <TableCell className=\"font-medium\">\n                                    {mainQuestion}\n                                </TableCell>\n                                <TableCell className=\"font-medium\">\n                                    {answer}\n                                </TableCell>\n                                <TableCell className=\"font-medium cursor-pointer text-primary\">\n                                    <Button variant=\"link\" className=\"px-1\" onClick={() => {\n                                        if (!questions.length) {\n                                            return message({\n                                                variant: 'warning',\n                                                description: t('noSimilarQuestions')\n                                            });\n                                        }\n                                        setQuestions(questions);\n                                        //打开相似问题预览窗口\n                                        similarityQuestions.current.open();\n                                    }}>\n                                        {t('view')}\n                                    </Button>\n                                </TableCell>\n                            </TableRow>\n                        )\n                    })\n                    }\n                    <SimilarityProblemModal ref={similarityQuestions} questions={questions} />\n                </TableBody>\n            </Table>\n        </div>\n    );\n}\n\nconst excelPreCheck = async (file, t) => {\n    return new Promise((resolve) => {\n        const ext = file.name.split('.').pop().toLowerCase();\n        if (!['xlsx', 'xls'].includes(ext)) {\n            return resolve({ valid: false, message: t('excelFileTypeError') });\n        }\n\n        const reader = new FileReader();\n\n        reader.onload = (e) => {\n            try {\n                const data = new Uint8Array(e.target.result);\n                const workbook = XLSX.read(data, { type: 'array' });\n                const firstSheet = workbook.Sheets[workbook.SheetNames[0]];\n                const jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 });\n\n                if (jsonData.length === 0) {\n                    resolve({ valid: false, message: t('excelFileEmpty') });\n                    return;\n                }\n\n                const headers = jsonData[0]?.map(header => header?.toString().toLowerCase().trim());\n                const requiredColumns = ['question', 'answer'];\n                const missingColumns = requiredColumns.filter(\n                    col => !headers.includes(col.toLowerCase())\n                );\n\n                if (missingColumns.length > 0) {\n                    resolve({\n                        valid: false,\n                        message: t('missingRequiredColumns', { columns: missingColumns.join(', ') })\n                    });\n                } else {\n                    resolve({ valid: true });\n                }\n            } catch (error) {\n                resolve({ valid: false, message: t('excelParseError') });\n            }\n        };\n\n        reader.onerror = () => {\n            resolve({ valid: false, message: t('fileReadError') });\n        };\n\n        reader.readAsArrayBuffer(file);\n    });\n};\n\n// 导入Qa\nexport const ImportQa = forwardRef(function ({ knowlageId, onChange }: any, ref) {\n    const { t } = useTranslation('knowledge');\n    const [open, setOpen] = useState(false);\n    const [saveLoad, setSaveLoad] = useState(false);\n    const [dataList, setDataList] = useState([]);\n    const [form, setForm] = useState({\n        fileUrl: '',\n        fileName: '',\n    });\n    const [error, setError] = useState({\n        fileUrl: false,\n    });\n\n    useImperativeHandle(ref, () => ({\n        open() {\n            setOpen(true);\n            setForm({\n                fileUrl: '',\n                fileName: '',\n            });\n            setError({\n                fileUrl: false,\n            });\n            setDataList([]);\n        }\n    }));\n\n    const close = () => {\n        setOpen(false);\n        setError({\n            fileUrl: false,\n        });\n    };\n\n    const handleSubmit = async () => {\n        const isDataListEmpty = !dataList.length;\n        const errors = [];\n        setError({\n            fileUrl: isDataListEmpty,\n        });\n\n        if (isDataListEmpty) errors.push(t('emptyUploadData'));\n        if (errors.length > 0) {\n            return message({\n                variant: 'warning',\n                description: errors\n            });\n        }\n        const res = await captureAndAlertRequestErrorHoc(postImportQaFile(id, {\n            url: form.fileUrl\n        }));\n        const errorLines = res.errors[0];\n        console.log('errors', errorLines);\n        if (errorLines.length) {\n            message({ variant: 'warning', description: t('errorMsg', { value: errorLines.length }) });\n        } else {\n            message({ variant: 'success', description: t('successMsg') });\n        }\n        close();\n        onChange();\n    };\n    const { id } = useParams();\n    const handleFileUploadSuccess = async (name, url) => {\n        const res = await captureAndAlertRequestErrorHoc(getQaFilePreview(id, {\n            size: 10,\n            url,\n        }));\n        const { result } = res;\n        setDataList(result);\n        setForm({\n            fileUrl: url,\n            fileName: name\n        });\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={(bln) => bln ? setOpen(bln) : close()}>\n            <DialogContent className=\"sm:max-w-[825px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('importQA')}</DialogTitle>\n                </DialogHeader>\n                <div>\n                    <div className=\"flex justify-between items-center\">\n                        <label htmlFor=\"dataSetName\" className=\"bisheng-label\">\n                            <span className=\"text-red-500\">*</span>{t('upFile')}\n                        </label>\n                        <div className=\"flex gap-2 items-center\">\n                            <Label>{t('exampleFile')}:</Label>\n                            <Button variant=\"link\" className=\"px-1\" onClick={() => {\n                                getQaFile('template').then(res => {\n                                    const fileUrl = res.url;\n                                    downloadFile(checkSassUrl(fileUrl), t('qaImportExampleFile'));\n                                })\n                            }}>\n                                {t('qaImportExampleFile')}\n                            </Button>\n                        </div>\n                    </div>\n                    <div className=\"flex flex-col gap-4 py-2\">\n                        <SimpleUpload\n                            filekey=\"file\"\n                            uploadUrl={'/api/v1/knowledge/upload'}\n                            accept={['xls', 'xlsx']}\n                            className={`${error.fileUrl ? 'border-red-400' : ''}`}\n                            onSuccess={handleFileUploadSuccess}\n                            preCheck={(file) => excelPreCheck(file, t)}\n                        />\n                        <p className=\"text-sm text-green-500 mt-2\">{form.fileName}</p>\n                    </div>\n                </div>\n                {!!dataList.length && <div>\n                    <label htmlFor=\"dataSetName\" className=\"bisheng-label\">\n                        {t('importPreview')}\n                    </label>\n                    <div className=\"flex flex-col gap-4 py-2 max-h-[36vh] overflow-y-auto\">\n                        <QaTable dataList={dataList} />\n                    </div>\n                </div>}\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={close}>\n                            {t('cancel')}\n                        </Button>\n                    </DialogClose>\n                    <LoadButton loading={saveLoad} type=\"submit\" className=\"px-11\" onClick={handleSubmit}>\n                        {t('submit')}\n                    </LoadButton>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n})"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/Markdown.tsx",
    "content": "import { Label } from \"@/components/bs-ui/label\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport AceEditor from \"react-ace\";\nimport { useTranslation } from \"react-i18next\";\nimport Vditor from 'vditor';\nimport 'vditor/dist/index.css';\n\nconst VditorEditor = forwardRef(({ edit, markdown, hidden }, ref) => {\n    const vditorRef = useRef(null);\n    const readyRef = useRef(false);\n    const valurCacheRef = useRef('');\n\n    useEffect(() => {\n        // console.log('markdown :>> ', markdown);\n        const processedMarkdown = markdown.replace(/^( {4,})/gm, '   ')\n            .replaceAll('(bisheng/', '(/bisheng/')\n\n        if (!hidden && vditorRef.current && readyRef.current) {\n            vditorRef.current.setValue(processedMarkdown);\n        } else {\n            valurCacheRef.current = processedMarkdown;\n        }\n    }, [markdown, hidden])\n\n    useImperativeHandle(ref, () => ({\n        getResult() {\n            return vditorRef.current.getValue()\n        }\n    }))\n\n    useEffect(() => {\n        vditorRef.current = new Vditor('vditor', {\n            cdn: location.origin + __APP_ENV__.BASE_URL + '/vditor',\n            height: '100%',\n            toolbarConfig: {\n                hide: true,\n                pin: true,\n            },\n            mode: 'ir',  // 'sv' for split view, 'ir' for instant rendering\n            preview: {\n                markdown: {\n                    toc: true,\n                    mark: true,\n                    autoSpace: true\n                },\n                math: {\n                    engine: 'MathJax',\n                    inlineDigit: true,\n                    macros: { // 自定义命令避免未定义错误\n                        '\\\\lambda': '\\\\mathit{\\\\lambda}',\n                        '\\\\mathcal{A}': '\\\\mathscr{A}'\n                    }\n                },\n            },\n            cache: {\n                enable: false,\n            },\n            after: () => {\n                console.log('Vditor is ready');\n                readyRef.current = true;\n\n                if (valurCacheRef.current) {\n                    vditorRef.current.setValue(valurCacheRef.current);\n                }\n                !edit && vditorRef.current.disabled();\n            },\n        });\n\n        return () => {\n            vditorRef.current.destroy();\n        };\n    }, []);\n\n    // vditorRef.current.getValue()\n    // vditorRef.current.getHTML();\n    // vditorRef.current.getText();\n    return <div id=\"vditor\" className={`${hidden ? 'hidden' : ''} overflow-y-auto`}></div>;\n});\n\nconst AceEditorCom = ({ markdown, hidden, onChange }) => {\n\n    if (hidden) return null\n\n    return <AceEditor\n        value={markdown || ''}\n        mode=\"markdown\"\n        theme={\"twilight\"}\n        highlightActiveLine={true}\n        showPrintMargin={false}\n        fontSize={14}\n        showGutter\n        enableLiveAutocompletion\n        name=\"CodeEditor\"\n        onChange={onChange}\n        onValidate={(e) => console.error('ace validate :>> ', e)}\n        className=\"h-full w-full rounded-lg border-[1px] border-border custom-scroll\"\n    />\n}\n\nexport default forwardRef(function Markdown({ edit, isUns, title, q, value }, ref) {\n    const [val, setValue] = useState('')\n    const [isAce, setIsAce] = useState(false)\n    const { t } = useTranslation('knowledge')\n    useEffect(() => {\n        setValue(value)\n    }, [value])\n\n    const vditorRef = useRef(null)\n\n    useImperativeHandle(ref, () => ({\n        getValue() {\n            const _value = isAce ? val : vditorRef.current.getResult()\n            return _value\n        },\n        setValue(_value) {\n            setValue(_value)\n        }\n    }))\n\n    const hangleCheckChagne = (checked) => {\n        if (!checked) {\n            setValue(vditorRef.current.getResult())\n        }\n        setIsAce(!checked)\n    }\n\n    {/* markdown */ }\n    return <div >\n        <div className=\"flex justify-between items-center mb-2 h-10\">\n            <Label>\n                <span className=\"text-red-500\">*</span>\n                #{q} {t('splitContent')}\n            </Label>\n            {!isUns && <span>{title}</span>}\n            {edit && <div className=\"flex items-center gap-2\">\n                <Label>{t('markdownPreview')}</Label>\n                <Switch checked={!isAce} onCheckedChange={hangleCheckChagne} />\n            </div>}\n        </div>\n        <div className=\"border mb-2 h-[calc(100vh-104px)]\">\n            {/* 编辑器 */}\n            <AceEditorCom hidden={!isAce} markdown={val} onChange={setValue} />\n            <VditorEditor ref={vditorRef} edit={edit} hidden={isAce} markdown={val} />\n        </div>\n    </div >\n});\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/MetadataDialog.tsx",
    "content": "import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Dialog, DialogContent, DialogHeader, DialogDescription } from '@/components/bs-ui/dialog';\nimport { Button } from '@/components/bs-ui/button';\nimport { Plus, Search, Trash2, Type, Hash, Clock3, X } from 'lucide-react';\nimport { cname } from \"@/components/bs-ui/utils\";\nimport { toast } from \"@/components/bs-ui/toast/use-toast\";\nimport { format } from \"date-fns\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { DatePicker } from \"@/components/bs-ui/calendar/datePicker\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport Tip from '@/components/bs-ui/tooltip/tip';\n\n// Types\ninterface MetadataItem {\n    id: string;\n    name: string;\n    type: 'String' | 'Number' | 'Time';\n    value?: string;\n    description?: string;\n    updated?: number;\n    updated_at?: string;\n}\n\ninterface FileInfo {\n    id?: string;\n    file_name?: string;\n    create_time?: string;\n    update_time?: string;\n    creat_user?: string;\n    update_user?: string;\n    file_size?: number;\n    split_rule?: string;\n    title?: string;\n    user_metadata?: Record<string, any>;\n}\n\ninterface MetadataDialogProps {\n    open: boolean;\n    file: FileInfo | null;\n}\n\ninterface SideDialogProps {\n    type: 'search' | 'create' | null;\n    open: boolean;\n}\n\ninterface NewMetadata {\n    name: string;\n    type: 'String' | 'Number' | 'Time';\n}\n\n// Type icon constants\nconst TYPE_ICONS = {\n    String: <Type />,\n    Number: <Hash />,\n    Time: <Clock3 />\n};\n\n// Metadata row component\nexport const MetadataRow = React.memo(({\n    isKnowledgeAdmin,\n    item,\n    onDelete,\n    onValueChange,\n    isSmallScreen,\n    t,\n    showInput = true\n}: {\n    isKnowledgeAdmin: boolean;\n    item: MetadataItem;\n    onDelete: (id: string) => void;\n    onValueChange: (id: string, value: string) => void;\n    isSmallScreen: boolean;\n    t: (key: string) => string;\n    showInput?: boolean;\n}) => {\n    const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        onValueChange(item.id, e.target.value);\n    };\n\n    const handleNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const value = e.target.value;\n        if (value === '' || /^-?\\d*\\.?\\d*$/.test(value)) {\n            onValueChange(item.id, value);\n        }\n    };\n\n    return (\n        <div className=\"flex items-center gap-3 p-2 w-full\">\n            <div className=\"flex items-center gap-2 flex-1 p-2 rounded-lg bg-gray-50 h-11 min-w-[180px]\">\n                <span className={isSmallScreen ? \"text-base\" : \"text-lg\"}>\n                    {TYPE_ICONS[item.type]}\n                </span>\n                <span className={cname(\n                    \"text-gray-500 min-w-[60px]\",\n                    isSmallScreen ? \"text-xs\" : \"text-sm\"\n                )}>\n                    {item.type}\n                </span>\n                <div className=\"min-w-0 flex-1 max-w-[120px]\">\n                    <TooltipProvider>\n                        <Tooltip>\n                            <TooltipTrigger asChild>\n                                <span\n                                    className={cname(\n                                        \"font-medium truncate block\",\n                                        isSmallScreen ? \"text-sm\" : \"\",\n                                        \"max-w-full\"\n                                    )}\n                                    style={{\n                                        whiteSpace: 'nowrap',\n                                        overflow: 'hidden',\n                                        textOverflow: 'ellipsis',\n                                    }}\n                                >\n                                    {item.name}\n                                </span>\n                            </TooltipTrigger>\n                            <TooltipContent className=\"max-w-[200px] whitespace-normal\"\n                                style={{\n                                    whiteSpace: 'normal',\n                                    wordBreak: 'break-word'\n                                }}\n                            >\n                                <p>{item.name}</p>\n                            </TooltipContent>\n                        </Tooltip>\n                    </TooltipProvider>\n                </div>\n            </div>\n            <div className=\"flex items-center gap-2 flex-2 justify-end p-2 rounded-lg bg-gray-50 h-11 ml-10 min-w-[180px]\">\n                {showInput && (\n                    <div className=\"w-40\">\n                        {item.type === 'String' && (\n                            <input\n                                disabled={!isKnowledgeAdmin}\n                                type=\"text\"\n                                value={item.value || ''}\n                                onChange={handleInputChange}\n                                maxLength={255}\n                                placeholder={t('metadatainfor.enterText')}\n                                className={cname(\n                                    \"w-full px-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\n                                    isSmallScreen ? \"py-0.5 text-xs h-6\" : \"py-1 text-sm h-7\"\n                                )}\n                            />\n                        )}\n\n                        {item.type === 'Number' && (\n                            <input\n                                disabled={!isKnowledgeAdmin}\n                                type=\"number\"\n                                value={item.value === '' || item.value === null || item.value === undefined ? 0 : item.value}\n                                onChange={handleNumberChange}\n                                onBlur={(e: React.FocusEvent<HTMLInputElement>) => {\n                                    // When losing focus, if value is empty string, set to 0\n                                    if (e.target.value === '') {\n                                        onValueChange(item.id, '0');\n                                    }\n                                }}\n                                className={cname(\n                                    \"w-full px-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\n                                    isSmallScreen ? \"py-0.5 text-xs h-6\" : \"py-1 text-sm h-7\"\n                                )}\n                            />\n                        )}\n\n                        {item.type === 'Time' && (\n                            <DatePicker\n                                disabled={!isKnowledgeAdmin}\n                                value={item.value ? Number(item.value) : undefined}\n                                showTime\n                                onChange={(date: Date | undefined) => {\n                                    const ts = date ? Math.floor(date.getTime() / 1000) : ''\n                                    onValueChange(item.id, String(ts))\n                                }}\n                            />\n                        )}\n                    </div>\n                )}\n            </div>\n\n            <button\n                onClick={() => onDelete(item.id)}\n                disabled={!isKnowledgeAdmin}\n                className=\"p-1 rounded transition-colors flex-shrink-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-transparent\"\n                title={t('metacommon.delete')}\n            >\n                <Trash2 size={isSmallScreen ? 18 : 20} className=\"text-gray-500\" />\n            </button>\n        </div>\n    )\n});\n\nMetadataRow.displayName = 'MetadataRow';\n\n// Main metadata dialog component\nexport const MainMetadataDialog = React.memo(({\n    metadataDialog,\n    setMetadataDialog,\n    mainMetadataList,\n    fileInfor,\n    isKnowledgeAdmin,\n    isSmallScreen,\n    t,\n    formatFileSize,\n    splitRuleDesc,\n    handleSaveUserMetadata,\n    handleSearchMetadataClick,\n    handleDeleteMainMetadata,\n    handleMainMetadataValueChange,\n    mainMetadataDialogRef\n}: {\n    metadataDialog: MetadataDialogProps;\n    setMetadataDialog: (dialog: MetadataDialogProps) => void;\n    mainMetadataList: MetadataItem[];\n    fileInfor: FileInfo | undefined;\n    isKnowledgeAdmin: boolean;\n    isSmallScreen: boolean;\n    t: (key: string) => string;\n    formatFileSize: (bytes: number) => string;\n    splitRuleDesc: (file: FileInfo) => string;\n    handleSaveUserMetadata: () => void;\n    handleSearchMetadataClick: () => void;\n    handleDeleteMainMetadata: (id: string) => void;\n    handleMainMetadataValueChange: (id: string, value: string) => void;\n    mainMetadataDialogRef: React.RefObject<HTMLDivElement>;\n}) => {\n    return (\n        <Dialog open={metadataDialog.open} onOpenChange={(open) => setMetadataDialog({ ...metadataDialog, open })}>\n            <DialogContent\n                ref={mainMetadataDialogRef}\n                className=\"sm:max-w-[525px] max-w-[625px] h-[80vh] flex flex-col\"\n                style={{\n                    transition: 'none'\n                }}\n            >\n                <DialogHeader>\n                    <h3 className=\"text-lg font-semibold\">{t('metadatainfor.title')}</h3>\n                </DialogHeader>\n\n                <div className=\"flex-1 overflow-y-auto min-h-0\">\n                    <button\n                        onClick={handleSearchMetadataClick}\n                        disabled={!isKnowledgeAdmin}\n                        className=\"py-2 w-full flex items-center justify-center gap-2 rounded-lg bg-gray-100 hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed transition-colors mb-4\"\n                    >\n                        <Plus size={16} />\n                        <span>{t('metadatainfor.addMetadata')}</span>\n                    </button>\n\n                    {mainMetadataList.length > 0 && (\n                        <div className=\"space-y-2\">\n                            {mainMetadataList.map((metadata) => (\n                                <MetadataRow\n                                    isKnowledgeAdmin={isKnowledgeAdmin}\n                                    key={metadata.id}\n                                    item={metadata}\n                                    onDelete={handleDeleteMainMetadata}\n                                    onValueChange={handleMainMetadataValueChange}\n                                    isSmallScreen={isSmallScreen}\n                                    t={t}\n                                    showInput={true}\n                                />\n                            ))}\n                        </div>\n                    )}\n\n                    <div className=\"grid gap-4 py-4\">\n                        <div className=\"font-medium\">{t('fileinfor.documentInfo')}</div>\n                        {fileInfor && <div className=\"space-y-2\">\n                            {[\n                                {\n                                    label: t('fileinfor.fileId'),\n                                    value: fileInfor?.id,\n                                },\n                                {\n                                    label: t('fileinfor.fileName'),\n                                    value: fileInfor?.file_name,\n                                    isFileName: true\n                                },\n                                {\n                                    label: t('fileinfor.createTime'),\n                                    value: fileInfor?.create_time ? metadataDialog.file?.create_time?.replace('T', ' ') : null\n                                },\n                                {\n                                    label: t('fileinfor.updateTime'),\n                                    value: fileInfor?.update_time ? fileInfor?.update_time.replace('T', ' ') : null\n                                },\n                                {\n                                    label: t('fileinfor.creator'),\n                                    value: fileInfor?.creat_user,\n                                },\n                                {\n                                    label: t('fileinfor.updater'),\n                                    value: fileInfor?.update_user,\n                                },\n                                {\n                                    label: t('fileinfor.originalFileSize'),\n                                    value: fileInfor?.file_size ? formatFileSize(metadataDialog.file?.file_size || 0) : null\n                                },\n                                {\n                                    label: t('fileinfor.splitStrategy'),\n                                    value: fileInfor ? splitRuleDesc(fileInfor) : null\n                                },\n                                {\n                                    label: t('fileinfor.fullTextSummary'),\n                                    value: metadataDialog.file?.title\n                                }\n                            ].map((item, index) => (\n                                item.value && (\n                                    <div key={index} className=\"grid grid-cols-4 gap-4 items-center\">\n                                        <span className=\"text-sm text-muted-foreground col-span-1\">{item.label}</span>\n                                        {\n                                            item.isFileName ? <Tip content={item.value} align=\"start\">\n                                                <span className={`col-span-3 text-sm truncate max-w-full`}>\n                                                    {item.value || t('metacommon.none')}\n                                                </span>\n                                            </Tip> :\n                                                <span className={`col-span-3 text-sm`}>\n                                                    {item.value || t('metacommon.none')}\n                                                </span>\n                                        }\n                                    </div>\n                                )\n                            ))}\n                        </div>}\n                    </div>\n                </div>\n\n                <div className=\"flex justify-end gap-2 pt-4 border-t border-gray-200 flex-shrink-0\">\n                    <Button\n                        variant=\"outline\"\n                        onClick={() => setMetadataDialog({ ...metadataDialog, open: false })}\n                        className={cname(isSmallScreen ? \"px-3 py-1 text-xs\" : \"px-4 py-2 text-sm\")}\n                    >\n                        {t('metacommon.cancel')}\n                    </Button>\n                    <Button\n                        onClick={handleSaveUserMetadata}\n                        disabled={!isKnowledgeAdmin}\n                        className={cname(\n                            \"bg-blue-500 hover:bg-blue-600\",\n                            isSmallScreen ? \"px-3 py-1 text-xs\" : \"px-4 py-2 text-sm\"\n                        )}\n                    >\n                        {t('metacommon.save')}\n                    </Button>\n                </div>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\nMainMetadataDialog.displayName = 'MainMetadataDialog';\n\n// Right sidebar dialog component\nexport const MetadataSideDialog = React.memo(({\n    sideDialog,\n    closeSideDialog,\n    predefinedMetadata,\n    searchTerm,\n    setSearchTerm,\n    newMetadata,\n    setNewMetadata,\n    metadataError,\n    setMetadataError,\n    isKnowledgeAdmin,\n    isSmallScreen,\n    t,\n    sideDialogWidth,\n    sideDialogPosition,\n    isSideDialogPositioned,\n    handleAddFromSearch,\n    handleCreateMetadataClick,\n    handleSaveNewMetadata,\n    setSideDialog\n}: {\n    sideDialog: SideDialogProps;\n    closeSideDialog: () => void;\n    predefinedMetadata: MetadataItem[];\n    searchTerm: string;\n    setSearchTerm: (term: string) => void;\n    newMetadata: NewMetadata;\n    setNewMetadata: (metadata: NewMetadata) => void;\n    metadataError: string;\n    setMetadataError: (error: string) => void;\n    isKnowledgeAdmin: boolean;\n    isSmallScreen: boolean;\n    t: (key: string) => string;\n    sideDialogWidth: number;\n    sideDialogPosition: { top: number; left: number };\n    isSideDialogPositioned: boolean;\n    handleAddFromSearch: (metadata: MetadataItem) => void;\n    handleCreateMetadataClick: () => void;\n    handleSaveNewMetadata: () => void;\n    setSideDialog: (dialog: SideDialogProps) => void;\n}) => {\n    const searchInputRef = useRef<HTMLInputElement>(null);\n\n    const filteredPredefinedMetadata = useMemo(() => {\n        return predefinedMetadata\n            .filter(meta =>\n                meta.name.toLowerCase().includes(searchTerm.toLowerCase()) ||\n                (meta.description && meta.description.toLowerCase().includes(searchTerm.toLowerCase()))\n            )\n            .sort((a, b) => {\n                const updatedA = a.updated || 0;\n                const updatedB = b.updated || 0;\n                return updatedA - updatedB;\n            });\n    }, [predefinedMetadata, searchTerm]);\n\n    const SideDialogContent = useMemo(() =>\n        React.forwardRef<HTMLDivElement, React.ComponentProps<typeof DialogPrimitive.Content>>(\n            ({ children, className, ...props }, ref) => (\n                <DialogPrimitive.Portal>\n                    <DialogPrimitive.Content\n                        ref={ref}\n                        {...props}\n                        className={cname(\n                            \"fixed z-50 flex flex-col border bg-background dark:bg-[#303134] shadow-lg sm:rounded-lg\",\n                            `w-[${sideDialogWidth}px]`,\n                            isSmallScreen ? \"p-3 text-sm\" : \"p-5\",\n                            className\n                        )}\n                        style={{\n                            top: `${sideDialogPosition.top}px`,\n                            left: `${sideDialogPosition.left}px`,\n                            transform: \"none\",\n                            maxHeight: \"80vh\",\n                            opacity: isSideDialogPositioned ? 1 : 0,\n                            transition: 'opacity 0.05s ease-in-out'\n                        }}\n                    >\n                        {children}\n                        <DialogPrimitive.Close\n                            className=\"absolute right-3 top-3 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\"\n                            onClick={closeSideDialog}\n                        >\n                            <X className={isSmallScreen ? \"h-3 w-3\" : \"h-4 w-4\"} />\n                            <span className=\"sr-only\">Close</span>\n                        </DialogPrimitive.Close>\n                    </DialogPrimitive.Content>\n                </DialogPrimitive.Portal>\n            )\n        ), [sideDialogWidth, isSmallScreen, sideDialogPosition, isSideDialogPositioned, closeSideDialog]);\n\n    SideDialogContent.displayName = \"SideDialogContent\";\n\n    return (\n        <DialogPrimitive.Dialog open={sideDialog.open} onOpenChange={(open) => {\n            if (!open) closeSideDialog();\n        }}>\n            <SideDialogContent>\n                {sideDialog.type === 'search' && (\n                    <>\n                        <DialogHeader>\n                            <div className=\"relative w-full\">\n                                <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-blue-500\" />\n                                <input\n                                    ref={searchInputRef}\n                                    type=\"text\"\n                                    placeholder={t('metadatainfor.searchMetadata')}\n                                    className={cname(\n                                        \"w-full pl-9 pr-3 py-2 text-sm bg-white rounded-md outline-none ring-1 ring-gray-200\",\n                                        isSmallScreen ? \"text-xs py-1.5\" : \"\"\n                                    )}\n                                    value={searchTerm}\n                                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n                                        e.stopPropagation();\n                                        setSearchTerm(e.target.value);\n                                    }}\n                                    onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n                                        e.stopPropagation();\n                                        if (e.key === 'Escape') {\n                                            closeSideDialog();\n                                        }\n                                    }}\n                                    onClick={(e: React.MouseEvent<HTMLInputElement>) => {\n                                        e.stopPropagation();\n                                    }}\n                                />\n                            </div>\n                        </DialogHeader>\n\n                        <div className=\"flex-1 min-h-0 mt-2 mb-2 overflow-y-auto\">\n                            <div\n                                className=\"h-full overflow-y-auto\"\n                                onWheel={(e: React.WheelEvent<HTMLDivElement>) => {\n                                    e.stopPropagation();\n                                }}\n                            >\n                                <div className=\"space-y-3 pr-2\">\n                                    {filteredPredefinedMetadata.map((metadata) => (\n                                        <div\n                                            key={metadata.id}\n                                            className=\"flex items-center justify-between p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer\"\n                                            onClick={() => handleAddFromSearch(metadata)}\n                                        >\n                                            <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n                                                <span className={isSmallScreen ? \"text-base\" : \"text-lg\"}>\n                                                    {TYPE_ICONS[metadata.type]}\n                                                </span>\n                                                <span className={cname(\n                                                    \"text-gray-500 min-w-[60px]\",\n                                                    isSmallScreen ? \"text-xs\" : \"text-sm\"\n                                                )}>\n                                                    {metadata.type}\n                                                </span>\n\n                                                <TooltipProvider>\n                                                    <Tooltip>\n                                                        <TooltipTrigger asChild>\n                                                            <div className=\"flex-1 min-w-0\">\n                                                                <div className=\"font-medium text-sm truncate\">\n                                                                    {metadata.name}\n                                                                </div>\n                                                            </div>\n                                                        </TooltipTrigger>\n                                                        <TooltipContent className=\"max-w-[200px] whitespace-normal\"\n                                                            style={{\n                                                                whiteSpace: 'normal',\n                                                                wordBreak: 'break-word'\n                                                            }}\n                                                        >\n                                                            <p>{metadata.name}</p>\n                                                        </TooltipContent>\n                                                    </Tooltip>\n                                                </TooltipProvider>\n                                            </div>\n                                        </div>\n                                    ))}\n                                </div>\n                            </div>\n                        </div>\n\n                        <div className=\"grid gap-4 pt-4 border-t\">\n                            <div className=\"space-y-2\">\n                                <button\n                                    onClick={handleCreateMetadataClick}\n                                    disabled={!isKnowledgeAdmin}\n                                    className=\"py-2 w-full flex items-center justify-center gap-2 rounded-lg bg-gray-100 hover:bg-gray-200 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n                                >\n                                    <Plus size={isSmallScreen ? 14 : 16} />\n                                    <span>{t('metadatainfor.createMetadata')}</span>\n                                </button>\n                            </div>\n                        </div>\n                    </>\n                )}\n\n                {sideDialog.type === 'create' && (\n                    <>\n                        <DialogHeader>\n                            <h3 className={cname(\"text-lg font-semibold\", isSmallScreen ? \"text-base\" : \"\")}>{t('metadatainfor.createMetadata')}</h3>\n                            <DialogDescription className={isSmallScreen ? \"text-xs\" : \"\"}>\n                                {t('metadatainfor.enterNewMetadataInfo')}\n                            </DialogDescription>\n                        </DialogHeader>\n\n                        <div className=\"grid gap-4 py-4\">\n                            <div className=\"space-y-1.5\">\n                                <label className={cname(\"block font-medium\", isSmallScreen ? \"text-xs\" : \"\")}>{t('metadatainfor.type')}</label>\n                                <div className=\"flex gap-1\">\n                                    {(['String', 'Number', 'Time'] as const).map((type) => (\n                                        <button\n                                            key={type}\n                                            onClick={() => setNewMetadata(prev => ({ ...prev, type }))}\n                                            className={cname(\n                                                \"flex-1 rounded-md font-medium transition-colors\",\n                                                newMetadata.type === type\n                                                    ? \"bg-blue-500 text-white\"\n                                                    : \"bg-gray-100 hover:bg-gray-200 text-gray-700\",\n                                                isSmallScreen ? \"py-1.5 px-2 text-xs\" : \"py-2 px-4 text-sm\"\n                                            )}\n                                        >\n                                            {type}\n                                        </button>\n                                    ))}\n                                </div>\n                            </div>\n\n                            <div className=\"space-y-1.5\">\n                                <label className={cname(\"block font-medium\", isSmallScreen ? \"text-xs\" : \"\")}>{t('metadatainfor.name')}</label>\n                                <input\n                                    type=\"text\"\n                                    value={newMetadata.name}\n                                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n                                        setNewMetadata(prev => ({ ...prev, name: e.target.value }));\n                                        if (metadataError) setMetadataError('');\n                                    }}\n                                    placeholder={t('metadatainfor.enterMetadataName')}\n                                    className={cname(\n                                        \"w-full px-3 py-2 border rounded-md text-sm\",\n                                        isSmallScreen ? \"text-xs h-8 py-1.5\" : \"\",\n                                        metadataError ? \"border-red-500 focus:ring-red-500\" : \"border-gray-300 focus:ring-blue-500\"\n                                    )}\n                                />\n                            </div>\n\n                            {metadataError && (\n                                <div className={cname(\n                                    \"flex items-center gap-1.5 text-red-500\",\n                                    isSmallScreen ? \"text-xs\" : \"text-sm\"\n                                )}>\n                                    <span>{metadataError}</span>\n                                </div>\n                            )}\n                        </div>\n\n                        <div className=\"flex justify-end gap-2\">\n                            <Button\n                                variant=\"outline\"\n                                onClick={() => setSideDialog({ type: 'search', open: true })}\n                                className={cname(isSmallScreen ? \"px-3 py-1 text-xs\" : \"px-4 py-2 text-sm\")}\n                            >\n                                {t('metacommon.cancel')}\n                            </Button>\n                            <Button\n                                onClick={handleSaveNewMetadata}\n                                className={cname(\n                                    \"bg-blue-500 hover:bg-blue-600\",\n                                    isSmallScreen ? \"px-3 py-1 text-xs\" : \"px-4 py-2 text-sm\"\n                                )}\n                            >\n                                {t('metacommon.save')}\n                            </Button>\n                        </div>\n                    </>\n                )}\n            </SideDialogContent>\n        </DialogPrimitive.Dialog>\n    );\n});\n\nMetadataSideDialog.displayName = 'MetadataSideDialog';"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/MetadataManagementDialog.tsx",
    "content": "\"use client\"\n\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogPortal } from \"@/components/bs-ui/dialog\"\nimport { Input } from \"@/components/bs-ui/input\"\nimport { AlertCircle, CircleQuestionMark, Clock3, Edit2, Hash, Plus, SquarePen, Trash2, Type, X } from \"lucide-react\"\nimport React, { useCallback, useState, useRef, useEffect, memo, useMemo } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { cname } from \"@/components/bs-ui/utils\"\nimport { addMetadata, updateMetadataFields, deleteMetadataFields } from \"@/controllers/API\"\nimport { QuestionTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\"\nimport { useTranslation } from \"react-i18next\"\n\ntype MetadataType = \"String\" | \"Number\" | \"Time\"\n\ninterface Metadata {\n    id: string\n    name: string\n    type: MetadataType\n    createdAt: Date\n    updatedAt: Date\n}\n\ninterface BuiltInMetadata {\n    name: string\n    type: MetadataType\n\n}\n\nconst BUILT_IN_METADATA: BuiltInMetadata[] = [\n    { name: \"document_id\", type: \"Number\" },\n    { name: \"document_name\", type: \"String\" },\n    { name: \"upload_time\", type: \"Time\" },\n    { name: \"update_time\", type: \"Time\" },\n    { name: \"uploader\", type: \"String\" },\n    { name: \"updater\", type: \"String\" },\n    { name: \"abstract\", type: \"String\" },\n    { name: \"chunk_index\", type: \"Number\" },\n    { name: \"bbox\", type: \"String\" },\n    { name: \"page\", type: \"Number\" },\n    { name: \"knowledge_id\", type: \"Number\" },\n    { name: \"user_metadata\", type: \"String\" },\n]\n\nconst TYPE_ICONS = {\n    String: <Type />,\n    Number: <Hash />,\n    Time: <Clock3 />,\n}\n\nconst TypeSelector = memo(({\n    newType,\n    setNewType,\n    isSmallScreen\n}: {\n    newType: MetadataType;\n    setNewType: (type: MetadataType) => void;\n    isSmallScreen: boolean;\n}) => {\n    const { t } = useTranslation('knowledge')\n    return (\n        <div className=\"space-y-1.5\">\n            <label className={cname(\"block font-medium\", isSmallScreen ? \"text-xs\" : \"\")}>{t('type')}</label>\n            <div className=\"flex gap-1\">\n                {([\"String\", \"Number\", \"Time\"] as MetadataType[]).map((type) => (\n                    <button\n                        key={type}\n                        onClick={() => setNewType(type)}\n                        className={cname(\n                            \"flex-1 rounded font-medium transition-colors\",\n                            newType === type\n                                ? \"bg-blue-600 text-white\"\n                                : \"bg-gray-200 text-gray-700 hover:bg-gray-300\",\n                            isSmallScreen ? \"py-1.5 px-2 text-xs\" : \"py-2 px-4\"\n                        )}\n                    >\n                        {type}\n                    </button>\n                ))}\n            </div>\n        </div>\n    )\n})\n\ninterface MetadataManagementDialogProps {\n    open: boolean;\n    onOpenChange: (open: boolean) => void;\n    onSave?: (metadata: Metadata[]) => void;\n    hasManagePermission?: boolean;\n    id: string;\n    initialMetadata?: Array<{ field_name: string; field_type: string; updated_at?: number }>;\n}\n\nexport function MetadataManagementDialog({\n    open,\n    onOpenChange,\n    onSave,\n    hasManagePermission = true,\n    id,\n    initialMetadata,\n}: MetadataManagementDialogProps) {\n    const { t } = useTranslation('knowledge')\n    const mainDialogRef = useRef<HTMLDivElement>(null)\n    const [sideDialogPosition, setSideDialogPosition] = useState({ top: 0, left: 0 })\n    const [metadataList, setMetadataList] = useState<Metadata[]>([])\n    const [sideDialog, setSideDialog] = useState<{ type: \"create\" | \"rename\"; open: boolean }>({\n        type: \"create\",\n        open: false\n    })\n    const [isLoading, setIsLoading] = useState(false)\n    const [selectedMetadata, setSelectedMetadata] = useState<Metadata | null>(null)\n    const [newName, setNewName] = useState(\"\")\n    const [newType, setNewType] = useState<MetadataType>(\"String\")\n    const [error, setError] = useState(\"\")\n    const [screenWidth, setScreenWidth] = useState(window.innerWidth)\n    const isSmallScreen = screenWidth < 1366;\n    const sideDialogWidth = isSmallScreen ? 240 : 300;\n    const isSideDialogAtRisk = isSmallScreen && sideDialog.open;\n    const mainDialogMaxWidth = isSmallScreen ? 600 : 1200;\n\n    const [isSideDialogReady, setIsSideDialogReady] = useState(false);\n\n    useEffect(() => {\n        if (open && initialMetadata && initialMetadata.length > 0) {\n            const formattedMetadata = initialMetadata.map((item) => ({\n                id: `meta_${item.field_name}`,\n                name: item.field_name,\n                type: (item.field_type.charAt(0).toUpperCase() + item.field_type.slice(1)) as MetadataType,\n                createdAt: new Date(),\n                updatedAt: item.updated_at ? new Date(item.updated_at * 1000) : new Date(),\n            }));\n            setMetadataList(formattedMetadata);\n        } else if (open) {\n            setMetadataList([]);\n        }\n    }, [open, initialMetadata]);\n\n    const updateSideDialogPosition = useCallback(() => {\n        if (mainDialogRef.current) {\n            const rect = mainDialogRef.current.getBoundingClientRect();\n            const gap = isSmallScreen ? 0 : 4;\n            let left = rect.right + gap;\n            if (left + sideDialogWidth > screenWidth) left = screenWidth - sideDialogWidth - 8;\n            if (sideDialogPosition.left !== left || sideDialogPosition.top !== rect.top) {\n                setSideDialogPosition({ top: rect.top, left });\n            }\n        }\n    }, [mainDialogRef, isSmallScreen, screenWidth, sideDialogPosition, sideDialogWidth]);\n\n    useEffect(() => {\n        const handleResize = () => {\n            const newWidth = window.innerWidth;\n            setScreenWidth(newWidth);\n        };\n        window.addEventListener(\"resize\", handleResize);\n        return () => window.removeEventListener(\"resize\", handleResize);\n    }, []);\n\n    useEffect(() => {\n        if (!open || !sideDialog.open) {\n            setIsSideDialogReady(false);\n            return;\n        }\n\n        // 使用多个阶段的延迟确保位置计算准确\n        const timer1 = setTimeout(() => {\n            updateSideDialogPosition();\n        }, 0);\n\n        const timer2 = setTimeout(() => {\n            updateSideDialogPosition();\n        }, 50);\n\n        const timer3 = setTimeout(() => {\n            updateSideDialogPosition();\n            setIsSideDialogReady(true);\n        }, 100);\n\n        return () => {\n            clearTimeout(timer1);\n            clearTimeout(timer2);\n            clearTimeout(timer3);\n            setIsSideDialogReady(false);\n        };\n    }, [open, sideDialog.open, updateSideDialogPosition]);\n\n    const validateName = useCallback((name: string): { valid: boolean; error?: string } => {\n        const isBuiltInName = BUILT_IN_METADATA.some(meta => meta.name === name);\n        if (isBuiltInName) return { valid: false, error: t('builtInNameError') };\n        if (!name || name.trim().length === 0) return { valid: false, error: t('nameRequired') };\n        if (name.length > 255) return { valid: false, error: t('nameTooLong') };\n        if (!/^[a-z][a-z0-9_]*$/.test(name)) return { valid: false, error: t('nameFormatError') };\n        const nameExists = metadataList.some((m) => m.name === name && m.id !== selectedMetadata?.id);\n        if (nameExists) return { valid: false, error: t('nameExists') };\n        return { valid: true };\n    }, [metadataList, selectedMetadata, t]);\n\n    const handleCreateClick = useCallback(() => {\n        setSideDialog({ type: \"create\", open: true });\n        setNewType(\"String\");\n        setNewName(\"\");\n        setError(\"\");\n        setIsSideDialogReady(false);\n    }, []);\n\n    const handleEditClick = useCallback((metadata: Metadata) => {\n        setSelectedMetadata(metadata);\n        setNewName(metadata.name);\n        setSideDialog({ type: \"rename\", open: true });\n        setError(\"\");\n        setIsSideDialogReady(false);\n    }, []);\n\n    const closeSideDialog = useCallback(() => {\n        setSideDialog(prev => ({ ...prev, open: false }));\n        setIsSideDialogReady(false);\n        setTimeout(() => {\n            setSelectedMetadata(null);\n            setNewName(\"\");\n            setError(\"\");\n        }, 300);\n    }, []);\n\n    const handleCreateSave = useCallback(async () => {\n        if (!id) { setError(t('knowledgeIdMissing')); return; }\n        const validation = validateName(newName);\n        if (!validation.valid) { setError(validation.error || t('inputInvalid')); return; }\n\n        setIsLoading(true);\n        try {\n            await addMetadata(id, [{ field_name: newName, field_type: newType.toLowerCase() }]);\n            const newMetadata: Metadata = { id: `meta_${newName}`, name: newName, type: newType, createdAt: new Date(), updatedAt: new Date() };\n            setMetadataList((prev) => [newMetadata, ...prev]);\n            closeSideDialog();\n            if (onSave) onSave(metadataList);\n        } catch (err: any) {\n            setError(err.message || t('createFailed'));\n            console.error(\"创建失败:\", err);\n        } finally {\n            setIsLoading(false);\n        }\n    }, [newName, newType, id, closeSideDialog, validateName, metadataList, onSave, t]);\n\n    const handleRenameSave = useCallback(async () => {\n        if (!id || !selectedMetadata) { setError(t('operationFailed')); return; }\n        const validation = validateName(newName);\n        if (!validation.valid) { setError(validation.error || t('inputInvalid')); return; }\n        if (selectedMetadata.name === newName) { closeSideDialog(); return; }\n\n        setIsLoading(true);\n        try {\n            await updateMetadataFields(id, [{ old_field_name: selectedMetadata.name, new_field_name: newName }]);\n            setMetadataList((prev) => prev.map((m) => m.id === selectedMetadata.id ? { ...m, name: newName, updatedAt: new Date() } : m));\n            closeSideDialog();\n            if (onSave) onSave(metadataList);\n        } catch (err: any) {\n            setError(err.message || t('renameFailed'));\n            console.error(\"重命名失败:\", err);\n        } finally {\n            setIsLoading(false);\n        }\n    }, [newName, selectedMetadata, id, closeSideDialog, validateName, metadataList, onSave, t]);\n\n    const handleDelete = useCallback(async (metadata: Metadata) => {\n        if (!id) {\n            setError(t('knowledgeIdMissing'));\n            return;\n        }\n\n        setIsLoading(true);\n        try {\n            await deleteMetadataFields(id, [metadata.name]);\n            setMetadataList((prev) => prev.filter((m) => m.id !== metadata.id));\n            if (onSave) onSave(metadataList);\n        } catch (err: any) {\n            setError(err.message || t('deleteFailed'));\n            console.error(\"删除失败:\", err);\n        } finally {\n            setIsLoading(false);\n        }\n    }, [id, metadataList, onSave, t]);\n\n    const sortedMetadata = [...metadataList].sort((a, b) => a.updatedAt.getTime() - b.updatedAt.getTime());\n\n    const BubbleConfirm = ({\n        trigger,\n        onConfirm,\n        message = t('confirmDelete')\n    }) => {\n        const [isOpen, setIsOpen] = useState(false);\n        const triggerRef = useRef(null);\n\n        // 点击外部关闭气泡\n        useEffect(() => {\n            const handleClickOutside = (event) => {\n                if (triggerRef.current && !triggerRef.current.contains(event.target)) {\n                    setIsOpen(false);\n                }\n            };\n\n            if (isOpen) {\n                document.addEventListener('mousedown', handleClickOutside);\n                return () => document.removeEventListener('mousedown', handleClickOutside);\n            }\n        }, [isOpen]);\n\n        return (\n            <div ref={triggerRef} className=\"relative inline-block\">\n                <button\n                    onClick={() => setIsOpen(!isOpen)}\n                    className=\"p-1.5 hover:bg-gray-200 rounded disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n                    disabled={trigger.props.disabled}\n                >\n                    {trigger.props.children}\n                </button>\n\n                {isOpen && (\n                    <div className=\"absolute bottom-full left-1/2 mb-2 w-56 bg-white border rounded-lg shadow-lg p-3 z-50\"\n                        style={{ transform: 'translateX(-84%)' }}>\n                        <div className=\"flex\">\n                            <CircleQuestionMark size={14} className=\"text-red-500\" />\n                            <div className=\"flex -mt-1 ml-1 font-medium text-sm\">{t('tip')}</div>\n                        </div>\n                        <div className=\"flex gap-2 mb-3 mt-2\">\n                            <p className=\"text-sm ml-10 text-gray-700 font-medium\">{message}</p>\n                        </div>\n\n                        <div className=\"flex justify-end gap-2\">\n                            <Button\n                                variant=\"outline\"\n                                size=\"sm\"\n                                onClick={() => setIsOpen(false)}\n                                className=\"px-2 py-1 h-7 min-h-7 text-xs\"\n                            >\n                                {t('cancel')}\n                            </Button>\n                            <Button\n                                size=\"sm\"\n                                onClick={() => {\n                                    onConfirm();\n                                    setIsOpen(false);\n                                }}\n                                className=\"px-2 py-1 h-7 min-h-7 text-xs\"\n                            >\n                                {t('confirm')}\n                            </Button>\n                        </div>\n                        <div className=\"absolute top-full right-7 -mt-2 w-4 h-4 bg-white border-r border-b transform rotate-45\"></div>\n                    </div>\n                )}\n            </div>\n        );\n    };\n    const SideDialogContent = useMemo(() =>\n        React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>>(\n            ({ children, className, ...props }, ref) => (\n                <DialogPortal>\n                    <DialogPrimitive.Content\n                        ref={ref}\n                        {...props}\n                        className={cname(\n                            \"fixed z-50 grid gap-4 border bg-background dark:bg-[#303134] shadow-lg sm:rounded-lg\",\n                            `w-[${sideDialogWidth}px]`,\n                            isSmallScreen ? \"p-3 text-sm\" : \"p-5\",\n                            className\n                        )}\n                        style={{\n                            top: `${sideDialogPosition.top}px`,\n                            left: `${sideDialogPosition.left}px`,\n                            transform: \"none\",\n                            maxHeight: \"80vh\",\n                            // 只有在位置计算完成后才显示\n                            opacity: isSideDialogReady ? 1 : 0,\n                            transition: 'opacity 0.05s ease-in-out'\n                        }}\n                    >\n                        {children}\n                        <DialogPrimitive.Close className=\"absolute right-3 top-3 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n                            <X className={isSmallScreen ? \"h-3 w-3\" : \"h-4 w-4\"} />\n                            <span className=\"sr-only\">Close</span>\n                        </DialogPrimitive.Close>\n                    </DialogPrimitive.Content>\n                </DialogPortal>\n            )\n        )\n        , [sideDialogWidth, isSmallScreen, sideDialogPosition, isSideDialogReady]);\n    SideDialogContent.displayName = \"SideDialogContent\";\n\n    return (\n        <>\n            <Dialog open={open} onOpenChange={onOpenChange}>\n                <DialogContent\n                    ref={mainDialogRef}\n                    className={cname(\"max-h-[70vh] overflow-y-auto\", typeof mainDialogMaxWidth === \"string\" ? \"\" : `w-[${mainDialogMaxWidth}px]`)}\n                    style={{\n                        width: mainDialogMaxWidth, maxWidth: \"none\",\n                        left: isSideDialogAtRisk ? \"8px\" : isSmallScreen ? \"calc(50% - 300px)\" : \"calc(50% - 600px)\",\n                        top: \"50%\", transform: \"translateY(-50%)\", minWidth: 580\n                    }}\n                >\n                    <DialogHeader>\n                        <DialogTitle className={isSmallScreen ? \"text-base\" : \"\"}>{t('metaData')}</DialogTitle>\n                    </DialogHeader>\n                    <div className=\"meta-dialog space-y-6\">\n                        <button\n                            onClick={handleCreateClick} disabled={!hasManagePermission}\n                            className={cname(\"w-full flex items-center justify-center gap-2 rounded-lg bg-muted hover:bg-accent disabled:opacity-50 disabled:cursor-not-allowed transition-colors\", isSmallScreen ? \"py-2\" : \"py-3\")}\n                        >\n                            <Plus size={isSmallScreen ? 16 : 20} />\n                            <span>{t('createMetadata')}</span>\n                        </button>\n\n                        <div className=\"space-y-2\">\n                            {sortedMetadata.map((metadata) => (\n                                <div\n                                    key={metadata.id}\n                                    className={cname(\"flex items-center justify-between rounded-lg bg-muted hover:bg-accent transition-colors\", isSmallScreen ? \"p-2 gap-2\" : \"p-3 gap-3\")}\n                                >\n                                    <div className=\"flex items-center gap-2 flex-1\">\n                                        <span className={isSmallScreen ? \"text-base\" : \"text-lg\"}>{TYPE_ICONS[metadata.type]}</span>\n                                        <span className={cname(\"text-gray-500\", isSmallScreen ? \"text-xs\" : \"text-sm\")}>{metadata.type}</span>\n                                        <div className=\" min-w-0 max-w-64\">\n                                            <TooltipProvider>\n                                                <Tooltip>\n                                                    <TooltipTrigger asChild>\n                                                        <span\n                                                            className={cname(\n                                                                \"font-medium truncate block\",\n                                                                isSmallScreen ? \"text-sm\" : \"\",\n                                                                \"max-w-full\" // 确保它不会超出父容器\n                                                            )}\n                                                            style={{\n                                                                whiteSpace: 'nowrap',\n                                                                overflow: 'hidden',\n                                                                textOverflow: 'ellipsis',\n                                                                width: '100%'\n                                                            }}\n                                                        >\n                                                            {metadata.name}\n                                                        </span>\n                                                    </TooltipTrigger>\n                                                    <TooltipContent className=\"max-w-[200px] whitespace-normal\"\n                                                        style={{\n                                                            whiteSpace: 'normal',\n                                                            wordBreak: 'break-word'\n                                                        }}\n                                                    >\n                                                        <p>{metadata.name}</p>\n                                                    </TooltipContent>\n                                                </Tooltip>\n                                            </TooltipProvider>\n                                        </div>\n                                    </div>\n                                    <div className=\"flex gap-1\">\n                                        <button\n                                            onClick={() => handleEditClick(metadata)} disabled={!hasManagePermission || isLoading}\n                                            className=\"p-1.5 hover:bg-gray-200 rounded disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n                                        >\n                                            <SquarePen size={isSmallScreen ? 16 : 18} />\n                                        </button>\n                                        <BubbleConfirm\n                                            trigger={\n                                                <button disabled={!hasManagePermission || isLoading}>\n                                                    <Trash2 size={isSmallScreen ? 16 : 18} />\n                                                </button>\n                                            }\n                                            message={t('confirmDeleteMetadata')}\n                                            onConfirm={() => handleDelete(metadata)}\n                                        />\n                                    </div>\n                                </div>\n                            ))}\n                        </div>\n\n                        <div className=\"space-y-3\">\n                            <div className=\"flex items-center gap-2\">\n                                <h3 className={cname(\"font-semibold\", isSmallScreen ? \"text-sm\" : \"\")}>{t('builtInMetadata')}</h3>\n                                <div className=\"group relative\">\n                                    <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('builtInMetadataTooltip')}></QuestionTooltip>\n                                </div>\n                            </div>\n                            <div className=\"space-y-2\">\n                                {BUILT_IN_METADATA.slice(0, 6).map((metadata) => (\n                                    <div\n                                        key={metadata.name}\n                                        className={cname(\"flex items-center bg-muted rounded-lg\", isSmallScreen ? \"p-2 gap-2\" : \"p-3 gap-3\")}\n                                    >\n                                        <span className={isSmallScreen ? \"text-base\" : \"text-lg\"}>{TYPE_ICONS[metadata.type]}</span>\n                                        <span className={cname(\"text-gray-500\", isSmallScreen ? \"text-xs\" : \"text-sm\")}>{metadata.type}</span>\n                                        <span className={cname(\"font-medium truncate\", isSmallScreen ? \"text-sm\" : \"\")}>{metadata.name}</span>\n                                    </div>\n                                ))}\n                            </div>\n                        </div>\n                    </div>\n                </DialogContent>\n            </Dialog>\n\n            <Dialog key=\"metadata-side-dialog\" open={sideDialog.open} onOpenChange={closeSideDialog}>\n                <SideDialogContent className=\"overflow-y-auto\">\n                    {sideDialog.type === \"create\" && (\n                        <>\n                            <DialogHeader>\n                                <DialogTitle className={isSmallScreen ? \"text-base\" : \"\"}>{t('createMetadata')}</DialogTitle>\n                                <DialogDescription className={isSmallScreen ? \"text-xs\" : \"\"}>{t('createMetadataDescription')}</DialogDescription>\n                            </DialogHeader>\n                            <div className=\"space-y-3\">\n                                <TypeSelector newType={newType} setNewType={setNewType} isSmallScreen={isSmallScreen} />\n                                <div className=\"space-y-1.5\">\n                                    <label className={cname(\"block font-medium\", isSmallScreen ? \"text-xs\" : \"\")}>{t('metadatainfor.name')}</label>\n                                    <Input\n                                        id=\"create-metadata-name\" value={newName} onChange={(e) => { setNewName(e.target.value); if (error) setError(\"\"); }}\n                                        placeholder={t('pleaseEnter')} autoComplete=\"off\" autoFocus\n                                        className={cname(error ? \"border-red-500 border-2\" : \"\", isSmallScreen ? \"text-sm h-8\" : \"\")}\n                                    />\n                                    {error && (\n                                        <div className={cname(\"flex items-center gap-1.5 text-red-500\", isSmallScreen ? \"text-xs\" : \"text-sm\")}>\n                                            <span>{error}</span>\n                                        </div>\n                                    )}\n                                </div>\n                                <div className={cname(\"flex justify-end gap-2 pt-2\", isSmallScreen ? \"\" : \"pt-4 gap-3\")}>\n                                    <Button variant=\"outline\" onClick={closeSideDialog} className={isSmallScreen ? \"px-3 py-1 text-xs\" : \"\"}>{t('cancel')}</Button>\n                                    <Button onClick={handleCreateSave} disabled={isLoading} className={cname(\"bg-blue-600 hover:bg-blue-700\", isSmallScreen ? \"px-3 py-1 text-xs\" : \"\")}>\n                                        {isLoading ? t('saving') : t('save')}\n                                    </Button>\n                                </div>\n                            </div>\n                        </>\n                    )}\n                    {sideDialog.type === \"rename\" && (\n                        <>\n                            <DialogHeader>\n                                <DialogTitle className={isSmallScreen ? \"text-base\" : \"\"}>{t('rename')}</DialogTitle>\n                                <DialogDescription className={isSmallScreen ? \"text-xs\" : \"\"}>{t('renameDescription')}</DialogDescription>\n                            </DialogHeader>\n                            <div className=\"space-y-3\">\n                                <div className=\"space-y-1.5\">\n                                    <label className={cname(\"block font-medium\", isSmallScreen ? \"text-xs\" : \"\")}>{t('name')}</label>\n                                    <Input\n                                        id=\"rename-metadata-name\" value={newName} onChange={(e) => { setNewName(e.target.value); if (error) setError(\"\"); }}\n                                        placeholder={t('pleaseEnter')} autoComplete=\"off\" autoFocus\n                                        className={cname(error ? \"border-red-500 border-2\" : \"\", isSmallScreen ? \"text-sm h-8\" : \"\")}\n                                    />\n                                    {error && (\n                                        <div className={cname(\"flex items-center gap-1.5 text-red-500\", isSmallScreen ? \"text-xs\" : \"text-sm\")}>\n                                            <span>{error}</span>\n                                        </div>\n                                    )}\n                                </div>\n                                <div className={cname(\"flex justify-end gap-2 pt-2\", isSmallScreen ? \"\" : \"pt-4 gap-3\")}>\n                                    <Button variant=\"outline\" onClick={closeSideDialog} className={isSmallScreen ? \"px-3 py-1 text-xs\" : \"\"}>{t('cancel')}</Button>\n                                    <Button onClick={handleRenameSave} disabled={isLoading} className={cname(\"bg-blue-600 hover:bg-blue-700\", isSmallScreen ? \"px-3 py-1 text-xs\" : \"\")}>\n                                        {isLoading ? t('saving') : t('save')}\n                                    </Button>\n                                </div>\n                            </div>\n                        </>\n                    )}\n                </SideDialogContent>\n            </Dialog>\n        </>\n    )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/ParagraphEdit.tsx",
    "content": "import FileView from \"@/components/bs-comp/FileView\";\nimport { LoadIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { getFileBboxApi, getFilePathApi, getKnowledgeChunkApi, updateChunkApi, updatePreviewChunkApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { Crosshair, Info, X } from \"lucide-react\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport DocxPreview from \"./DocxFileViewer\";\nimport Guide from \"./Guide\";\nimport Markdown from './Markdown';\nimport TxtFileViewer from \"./TxtFileViewer\";\n\n// 上传预览时携带chunks\nconst ParagraphEdit = ({\n    edit = true,\n    chunks = null,\n    partitions = null,\n    oriFilePath = '',\n    isUns = true,\n    filePath = '',\n    parseType = '',\n    fileId,\n    chunkId,\n    onClose,\n    onChange\n}) => {\n    const { id } = useParams();\n    const [value, setValue] = useState('');\n    const [data, setData] = useState([]);\n    const prevOvergapData = useRef(null);\n    const { t } = useTranslation('knowledge')\n    const labelTextRef = useRef<any>(partitions);\n\n    const [previewFileUrl, setFileUrl] = useState('')\n    useEffect(() => {\n        chunks ? setFileUrl(filePath) : getFilePathApi(fileId).then(setFileUrl)\n    }, [fileId, filePath, chunks])\n\n    const [fileName, setFileName] = useState('')\n    const suffix = useMemo(() => {\n        return fileName.split('.').pop().toLowerCase()\n    }, [fileName])\n\n    const initData = async (res) => {\n\n        if (!partitions) {\n            await getFileBboxApi(fileId).then(res => {\n                labelTextRef.current = res\n            })\n        }\n\n        let value = ''\n        const allLabels = convertJsonData(labelTextRef.current)\n\n        const activeIds = new Set()\n        res.data.forEach(chunk => {\n            const { bbox, chunk_index } = chunk.metadata\n            if (chunk_index === chunkId) {\n                const labels = bbox && JSON.parse(bbox).chunk_bboxes || []\n                labels.forEach(label => {\n                    const id = [label.page, ...label.bbox].join('-');\n                    activeIds.add(id)\n                })\n\n                value = chunk.text\n            }\n        })\n\n        const labelsData = allLabels.map((label) => {\n            return {\n                ...label,\n                active: activeIds.has(label.id)\n            }\n        })\n\n\n        setFileName(res.data[0].metadata.source)\n        setData(labelsData)\n        prevOvergapData.current = labelsData\n        setValue(value)\n        // 自动滚动到当前chunk\n        setRandom(Math.random() / 10000)\n    }\n    useEffect(() => {\n        chunks ? initData({ data: chunks }) : getKnowledgeChunkApi({ knowledge_id: id, file_ids: [fileId], limit: 1000 }).then(initData)\n    }, [])\n\n    const markDownRef = useRef(null)\n    const { leftPanelWidth, handleMouseDown } = useDragSize(!isUns)\n    const [labelChange, setLabelChange] = useState(false)\n    const { message } = useToast()\n\n    const [loading, setLoading] = useState(false)\n    const handleSave = async () => {\n        const _value = markDownRef.current.getValue().trim()\n        setValue(_value)\n        if (!_value) return\n\n        const bbox = {\n            chunk_bboxes: prevOvergapData.current.reduce((arr, item) => {\n                if (item.active) {\n                    arr.push({ page: item.page, bbox: item.label })\n                }\n                return arr\n            }, [])\n        }\n\n        setLoading(true)\n\n        const promise = chunks ? updatePreviewChunkApi({\n            knowledge_id: Number(id), file_path: oriFilePath, chunk_index: chunkId, text: _value, bbox: JSON.stringify(bbox)\n        }) : updateChunkApi({\n            knowledge_id: Number(id), file_id: fileId, chunk_index: chunkId, text: _value, bbox: JSON.stringify(bbox)\n        })\n        await captureAndAlertRequestErrorHoc(promise.then(res => {\n            message({ variant: 'success', description: t('editSuccess') })\n            onClose()\n            onChange(_value)\n        }))\n        setLoading(false)\n    }\n\n    const labels = useMemo(() => {\n        return data.reduce((acc, item) => {\n            if (!acc[item.page]) {\n                acc[item.page] = [];\n            }\n            acc[item.page].push({ ...item });\n\n            return acc;\n        }, {});\n    }, [data]);\n\n    const handleSelectLabels = (lbs) => {\n        if (!edit) return\n        // 相同的partId同时被选中\n        const distinct = {}\n        const selectLabels = lbs.reduce((res, item) => {\n            const { id, active } = item\n            const partId = labelTextRef.current[id].part_id\n            if (distinct[partId]) return res // same partId\n            distinct[partId] = true\n            Object.keys(labelTextRef.current).forEach((key) => {\n                if (labelTextRef.current[key].part_id === partId) {\n                    res.push({ id: key, active })\n                }\n            })\n            return res\n        }, [])\n\n        let arr = data\n        selectLabels.forEach((item) => {\n            arr = arr.map(el => el.id === item.id ? { ...el, active: item.active } : el)\n        })\n        setData(arr)\n        // console.log('arr :>> ', lbs, arr);\n\n        setLabelChange(true)\n    }\n\n    const handleOvergap = () => {\n        setLabelChange(false)\n        let prevType = ''\n        let prevPartId = ''\n        let str = ''\n        // 标注块拼接段落\n        data.forEach((item, index) => {\n            if (typeof labelTextRef.current[item.id] === 'string') return window.alter('文件已失效，传个新的在测试')\n            if (item.active) {\n                const { text, type, part_id } = labelTextRef.current[item.id]\n                if (str === '') {\n                    // 第一个块, title类型，末尾加单换行\n                    str += text + (type === 'Title' ? '\\n' : '')\n                } else {\n                    // 非第一个块\n                    if (prevPartId === part_id) {\n                        // 上一个和当前是同一段落\n                        str += text\n                    } else if (prevType === 'Table' || type === 'Table' || (type === 'Title' && prevType !== type)) {\n                        // 上一个是表格 or 当前是表格 or 当前是title并上一个不是title\n                        str += '\\n\\n' + text\n                    } else {\n                        str += '\\n' + text\n                    }\n                }\n\n                prevType = type\n                prevPartId = part_id\n            }\n        })\n        console.log('JSON. :>> ', JSON.stringify(str));\n        setValue(str)\n        markDownRef.current.setValue(str) // fouceupdate\n        prevOvergapData.current = data\n    }\n\n    const [random, setRandom] = useState(0)\n    const postion = useMemo(() => {\n        const target = data.find(el => el.active)\n        return target ? [target.page, target.label[1] + random] : [1, 0]\n    }, [random])\n\n    const [showPos, setShowPos] = useState(false)\n    const handlePageChange = (offset, h, paperSize, scale) => {\n        if (offset === 0) return\n        // console.log('data :>> ', data, offset, h, paperSize, scale);\n        setShowPos(!data.some(item => {\n            const pageHeight = (item.page - 1) * paperSize\n            const labelTop = pageHeight + item.label[1] / scale\n            return item.active && labelTop > offset && labelTop < (offset + h)\n        }))\n    }\n\n    const fileView = () => {\n        const newVersion = ['etl4lm', 'un_etl4lm'].includes(parseType)\n        if (!newVersion) return previewFileUrl && <FileView\n            select\n            fileUrl={previewFileUrl}\n            labels={labels}\n            scrollTo={postion}\n            onSelectLabel={handleSelectLabels}\n            onPageChange={handlePageChange}\n        />\n        switch (suffix) {\n            case 'ppt':\n            case 'pptx':\n            case 'pdf':\n                return previewFileUrl && <FileView\n                    select\n                    startIndex={0}\n                    fileUrl={previewFileUrl}\n                    labels={labels}\n                    scrollTo={postion}\n                    onSelectLabel={handleSelectLabels}\n                    onPageChange={handlePageChange}\n                />\n            case 'txt': return <TxtFileViewer filePath={previewFileUrl} />\n            case 'md': return <TxtFileViewer markdown filePath={previewFileUrl} />\n            case 'html': return <TxtFileViewer html filePath={previewFileUrl} />\n            case 'doc':\n            case 'docx': return <DocxPreview filePath={previewFileUrl} />\n            case 'png':\n            case 'jpg':\n            case 'jpeg':\n            case 'bmp': return <img\n                className=\"border\"\n                src={previewFileUrl.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)} alt=\"\" />\n            default:\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">\n                    <div className=\"text-center\">\n                        <img\n                            className=\"size-52 block\"\n                            src={__APP_ENV__.BASE_URL + \"/assets/knowledge/damage.svg\"} alt=\"\" />\n                        <p>此文件类型不支持预览</p>\n                    </div>\n                </div>\n        }\n    }\n\n    return (\n        <div className=\"flex px-4 py-2 select-none\">\n            {/* left */}\n            <div className=\"relative\" style={{ width: leftPanelWidth }}>\n                <Markdown ref={markDownRef} edit={edit} isUns={isUns} title={fileName} q={chunkId + 1} value={value} />\n                {!value && <p className=\"absolute left-0 text-red-500 text-xs mt-2\">{t('inputNotEmpty')}</p>}\n                {!isUns && <div className=\"flex justify-end gap-4\">\n                    <Button className=\"px-6 h-8\" variant=\"outline\" onClick={onClose}>{t('cancel', { ns: 'bs' })}</Button>\n                    <Button className=\"px-6 h-8\" disabled={loading} onClick={handleSave}><LoadIcon className={`mr-1 ${loading ? '' : 'hidden'}`} />{t('save', { ns: 'bs' })}</Button>\n                </div>}\n            </div>\n            {isUns && <>\n                {/* drag line */}\n                <div className=\"h-full p-2\">\n                    <div\n                        className=\"h-full w-1 border cursor-ew-resize\"\n                        onMouseDown={handleMouseDown}\n                    ></div>\n                </div>\n                {/* right */}\n                <div className=\"flex-1 min-w-0 w-0\">\n                    {/* head */}\n                    <div className=\"flex justify-between items-center relative h-10 mb-2 text-sm\">\n                        <span>{fileName}</span>\n                        <div className={`${labelChange ? '' : 'hidden'} flex items-center`}>\n                            <Info className='mr-1 text-red-500' />\n                            <span className=\"text-red-500\">{t('segmentRangeDetected')}</span>\n                            <span className=\"text-primary cursor-pointer\" onClick={handleOvergap}>{t('overwriteSegment')}</span>\n                        </div>\n                        <div className=\"flex justify-end gap-4\">\n                            {edit && <Button className=\"px-6 h-8\" variant=\"outline\" onClick={onClose}>{t('cancel', { ns: 'bs' })}</Button>}\n                            {edit && <Button className=\"px-6 h-8\" disabled={loading} onClick={handleSave}><LoadIcon className={`mr-1 ${loading ? '' : 'hidden'}`} />{t('save', { ns: 'bs' })}</Button>}\n                            {!edit && <X className=\"cursor-pointer size-5 text-gray-500\" onClick={onClose} />}\n                        </div>\n                    </div>\n                    {/* file view */}\n                    <div className=\"bg-gray-100 relative\">\n                        {showPos && value && Object.keys(labels).length !== 0 && <Button className=\"absolute top-2 right-2 z-10 bg-background\" variant=\"outline\" onClick={() => setRandom(Math.random() / 10000)}><Crosshair className=\"mr-1\" size={16} />{t('backToPosition')}</Button>}\n                        <div className=\"h-[calc(100vh-104px)] overflow-auto\"\n                            style={{\n                                width: 'calc(100vh - 104px)',\n                                minWidth: '100%',\n                            }}>\n                            {\n                                fileView()\n                            }\n                        </div>\n                    </div>\n                </div>\n            </>}\n            <Guide />\n        </div>\n    );\n};\n\nconst useDragSize = (full) => {\n    const [leftPanelWidth, setLeftPanelWidth] = useState(full ? '100%' : window.innerWidth * 0.4);\n    const [isDragging, setIsDragging] = useState(false);\n\n    const handleMouseDown = useCallback(() => {\n        setIsDragging(true);\n    }, []);\n\n    const handleMouseUp = useCallback(() => {\n        setIsDragging(false);\n    }, []);\n\n    const handleMouseMove = useCallback(\n        (e) => {\n            if (isDragging) {\n                const newWidth = e.clientX - 24;\n                if (newWidth >= 320 && newWidth <= window.innerWidth * 0.7) {\n                    setLeftPanelWidth(newWidth);\n                }\n            }\n        },\n        [isDragging]\n    );\n\n    React.useEffect(() => {\n        if (full) return\n        if (isDragging) {\n            window.addEventListener('mousemove', handleMouseMove);\n            window.addEventListener('mouseup', handleMouseUp);\n        } else {\n            window.removeEventListener('mousemove', handleMouseMove);\n            window.removeEventListener('mouseup', handleMouseUp);\n        }\n\n        return () => {\n            window.removeEventListener('mousemove', handleMouseMove);\n            window.removeEventListener('mouseup', handleMouseUp);\n        };\n    }, [full, isDragging, handleMouseMove, handleMouseUp]);\n\n    return { leftPanelWidth, handleMouseDown };\n}\n\n// JSON数据转换函数\nexport const convertJsonData = (inputObj: Record<string, any>) => {\n    try {\n        const result = []\n\n        // 遍历输入对象的每个键值对\n        for (const [key, value] of Object.entries(inputObj)) {\n            // 解析 key 获取 page 和 label\n            const keyParts = key.split('-')\n            const page = parseInt(keyParts[0])\n            const label = keyParts.slice(1).map(num => parseInt(num))\n\n            result.push({\n                id: key,\n                label: label,\n                page: page,\n                txt: value.text,\n                part_id: value.part_id // 保留用于排序\n            })\n        }\n\n        // 按 part_id 从小到大排序\n        result.sort((a, b) => a.part_id - b.part_id)\n\n        // 移除临时的 part_id 字段\n        const finalResult = result.map(({ part_id, ...rest }) => rest)\n\n        return finalResult\n    } catch (error) {\n        console.error('数据转换错误:', error)\n        return []\n    }\n}\n\nexport default ParagraphEdit;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/Paragraphs.tsx",
    "content": "import { FileIcon } from \"@/components/bs-icons/file\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from '@/components/bs-ui/button';\nimport { Dialog, DialogContent } from '@/components/bs-ui/dialog';\nimport { SearchInput } from '@/components/bs-ui/input';\nimport AutoPagination from '@/components/bs-ui/pagination/autoPagination';\nimport { toast } from \"@/components/bs-ui/toast/use-toast\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { addMetadata, delChunkApi, getFileBboxApi, getFilePathApi, getKnowledgeChunkApi, getKnowledgeDetailApi, getMetaFile, readFileByLibDatabase, saveUserMetadataApi, updateChunkApi } from '@/controllers/API';\nimport { captureAndAlertRequestErrorHoc } from '@/controllers/request';\nimport { useTable } from '@/util/hook';\nimport { ArrowLeft, ClipboardPenLine, FileText } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport useKnowledgeStore from '../useKnowledgeStore';\nimport FileSelector from \"./FileSelector\";\nimport ParagraphEdit from './ParagraphEdit';\nimport PreviewFile from './PreviewFile';\nimport PreviewParagraph from './PreviewParagraph';\n\n// Import metadata components\nimport { MainMetadataDialog, MetadataSideDialog } from './MetadataDialog';\n\nexport default function Paragraphs({ fileId, onBack }) {\n    console.log('Props fileId:', fileId);\n\n    const { t } = useTranslation('knowledge');\n    const { id } = useParams();\n    const navigate = useNavigate();\n    const { isEditable, selectedBbox } = useKnowledgeStore();\n    const [hasInited, setHasInited] = useState(false);\n    const location = useLocation();\n    const [chunkSwitchTrigger, setChunkSwitchTrigger] = useState(0);\n\n    // State management\n    const [selectedFileId, setSelectedFileId] = useState(fileId + '');\n    const [currentFile, setCurrentFile] = useState(null);\n    const [fileUrl, setFileUrl] = useState('');\n    const [chunks, setChunks] = useState([]);\n    const [rawFiles, setRawFiles] = useState([]);\n    const [isKnowledgeAdmin, setIsKnowledgeAdmin] = useState(false);\n\n    // Metadata related states\n    const [metadataDialog, setMetadataDialog] = useState({\n        open: false,\n        file: null\n    });\n    const [mainMetadataList, setMainMetadataList] = useState([]);\n    const [newMetadata, setNewMetadata] = useState({\n        name: '',\n        type: 'String'\n    });\n    const [metadataError, setMetadataError] = useState('');\n    const [sideDialog, setSideDialog] = useState({\n        type: null,\n        open: false\n    });\n    const [predefinedMetadata, setPredefinedMetadata] = useState([]);\n    const [searchTerm, setSearchTerm] = useState(\"\");\n    const [fileInfor, setFileInfor] = useState();\n\n    const [paragraph, setParagraph] = useState({\n        fileId: '',\n        chunkId: '',\n        parseType: '',\n        isUns: false,\n        show: false\n    });\n    const [selectError, setSelectError] = useState(null);\n    const [isFetchingUrl, setIsFetchingUrl] = useState(false);\n    const [partitions, setPartitions] = useState()\n\n    // Refs\n    const isChangingRef = useRef(false);\n    const [previewUrl, setPreviewUrl] = useState()\n    const [hasChunkBboxes, setHasChunkBboxes] = useState(false);\n    const latestFileUrlRef = useRef('');\n    const latestPreviewUrlRef = useRef('');\n    const latestOriginalUrlRef = useRef('');\n    const selectedChunkIndex = useKnowledgeStore((state) => state.selectedChunkIndex);\n\n    // Right sidebar dialog related states and refs\n    const mainMetadataDialogRef = useRef(null);\n    const [sideDialogPosition, setSideDialogPosition] = useState({ top: 0, left: 0 });\n    const [screenWidth, setScreenWidth] = useState(window.innerWidth);\n    const isSmallScreen = screenWidth < 1366;\n    const sideDialogWidth = isSmallScreen ? 240 : 300;\n    const [isSideDialogPositioned, setIsSideDialogPositioned] = useState(false);\n\n    const setSelectedBbox = useKnowledgeStore((state) => state.setSelectedBbox);\n\n    useEffect(() => {\n        // Clear selected highlight bbox when switching chunks\n        setSelectedBbox([])\n    }, [selectedChunkIndex])\n\n    // Table configuration (keep original logic)\n    const tableConfig = useMemo(() => ({\n        file_ids: selectedFileId ? [selectedFileId] : [],\n        unInitData: true\n    }), [selectedFileId]);\n    // 在 Paragraphs 组件中添加\n    const fetchAllFiles = useCallback(async () => {\n        try {\n            const res = await readFileByLibDatabase({\n                id: id,\n                page: 1,\n                pageSize: 1000, // 获取足够多的文件\n                name: '',\n                status: 2\n            });\n\n            const filesData = res?.data || [];\n            setRawFiles(filesData);\n            console.log('Fetched all files:', filesData.length);\n\n            // 如果有传入的 fileId，确保 currentFile 被设置\n            if (fileId && filesData.length > 0 && !currentFile) {\n                const foundFile = filesData.find(f => String(f.id) === String(fileId));\n                if (foundFile) {\n                    setCurrentFile({\n                        label: foundFile.file_name || '',\n                        value: fileId,\n                        id: foundFile.id || '',\n                        name: foundFile.file_name || '',\n                        size: foundFile.size || 0,\n                        type: foundFile.file_name?.split('.').pop() || '',\n                        filePath: '',\n                        suffix: foundFile.file_name?.split('.').pop() || '',\n                        fileType: foundFile.parse_type || 'unknown',\n                        fullData: foundFile || {},\n                    });\n                }\n            }\n        } catch (error) {\n            console.error('Failed to fetch all files:', error);\n        }\n    }, [id, fileId, currentFile]);\n\n    // 在组件初始化时调用\n    useEffect(() => {\n        if (id) {\n            fetchAllFiles();\n        }\n    }, [id, fetchAllFiles]);\n    const {\n        page,\n        pageSize,\n        data: datalist,\n        total,\n        loading,\n        setPage,\n        search,\n        reload,\n        filterData,\n        refreshData\n    } = useTable(tableConfig,\n        async (param) => {\n            const response = await getKnowledgeChunkApi({\n                ...param,\n                limit: param.pageSize,\n                knowledge_id: id\n            });\n\n            // Fix: Parse chunk_bboxes and store boolean value for \"is not empty\"\n            let chunkBboxes = [];\n            try {\n                const firstChunk = response.data?.[0];\n                if (firstChunk?.metadata?.bbox) {\n\n                    // First check if bbox is empty string\n                    if (typeof firstChunk.metadata.bbox === 'string' && JSON.parse(firstChunk?.metadata?.bbox).chunk_bboxes === '') {\n                        console.log('bbox is empty string');\n                        chunkBboxes = [];\n                    } else {\n                        // Parse JSON\n                        const bboxObj = JSON.parse(firstChunk.metadata.bbox);\n                        chunkBboxes = bboxObj.chunk_bboxes || [];\n                    }\n                }\n            } catch (e) {\n                console.error('Failed to parse chunk_bboxes:', e);\n                chunkBboxes = [];\n            }\n\n            // Store boolean value for \"is not empty array\" (not the original array)\n            const isBboxesNotEmpty = Array.isArray(chunkBboxes) && chunkBboxes.length > 0;\n            setHasChunkBboxes(isBboxesNotEmpty);\n            console.log('chunk_bboxes is not empty:', isBboxesNotEmpty, 'Original data:', chunkBboxes);\n\n            return response;\n        }\n    );\n\n    const [load, setLoad] = useState(true);\n\n    const safeChunks = useMemo(() => {\n        if (!selectedFileId || !datalist.length) return [];\n        return (datalist || []).map((item, index) => ({\n            text: item?.text || '',\n            title: `Segment ${index + 1}`,\n            chunkIndex: item?.metadata?.chunk_index || index,\n            bbox: item?.metadata?.bbox\n        }));\n    }, [datalist, selectedFileId, chunkSwitchTrigger]);\n\n    const handleChunkChange = useCallback((chunkIndex, text) => {\n        let chunkIndexPage = chunkIndex % pageSize;\n        console.log('Converted localIndex:', chunkIndexPage);\n\n        const bbox = { chunk_bboxes: selectedBbox };\n\n        const bboxStr = selectedBbox.length ? JSON.stringify(bbox) : safeChunks[chunkIndexPage]?.bbox || '';\n        captureAndAlertRequestErrorHoc(updateChunkApi({\n            knowledge_id: Number(id),\n            file_id: selectedFileId || currentFile?.id || '',\n            chunk_index: chunkIndex,\n            text,\n            bbox: bboxStr\n        }))\n        setChunks(chunks => chunks.map(chunk =>\n            chunk.chunkIndex === chunkIndex ? { ...chunk, bbox: bboxStr, text } : chunk\n        ));\n\n        refreshData(\n            (item) => item?.metadata?.chunk_index === chunkIndex,\n            (item) => ({ text, metadata: { ...item.metadata, bbox: bboxStr } })\n        );\n    }, [id, currentFile, refreshData, selectedBbox, safeChunks, pageSize, selectedFileId]);\n\n    const fetchFileUrl = useCallback(async (fileId) => {\n        console.log('Getting file URL:', fileId);\n        if (!fileId) return '';\n\n        try {\n            setIsFetchingUrl(true);\n            const res = await getFilePathApi(fileId);\n            const pares = await getFileBboxApi(fileId);\n            setPartitions(pares || []);\n\n            // Get current selected file information\n            const currentFile = rawFiles.find(f => String(f.id) === String(fileId));\n\n            let finalUrl = '';\n            let finalPreviewUrl = '';\n\n            // Check if there are valid preview_url and original_url\n            const hasPreviewUrl = typeof res.preview_url === 'string' && res.preview_url.trim() !== '';\n            const hasOriginalUrl = typeof res.original_url === 'string' && res.original_url.trim() !== '';\n\n            if (currentFile) {\n                if (hasPreviewUrl) {\n                    // Has preview_url → prioritize use\n                    finalUrl = res.preview_url.trim();\n                    finalPreviewUrl = res.preview_url.trim();\n                } else {\n                    // No preview_url → use original_url or alternative URL\n                    finalUrl = hasOriginalUrl ? res.original_url.trim() : '';\n                    finalPreviewUrl = finalUrl;\n                }\n                // }\n            } else {\n                // If current file not found, use default strategy\n                finalUrl = hasPreviewUrl ? res.preview_url.trim() : (hasOriginalUrl ? res.original_url.trim() : '');\n                finalPreviewUrl = finalUrl;\n            }\n\n            if (finalUrl) {\n                finalUrl = decodeURIComponent(finalUrl);\n                finalPreviewUrl = decodeURIComponent(finalPreviewUrl);\n                // Update both state and ref (ref takes effect immediately)\n                setFileUrl(finalUrl);\n                setPreviewUrl(finalPreviewUrl);\n                // Store original_url in ref\n                latestOriginalUrlRef.current = hasOriginalUrl ? decodeURIComponent(res.original_url.trim()) : '';\n                return finalUrl;\n            } else {\n                setFileUrl('');\n                setPreviewUrl('');\n                latestOriginalUrlRef.current = '';\n                return '';\n            }\n        } catch (err) {\n            console.error('Failed to get file URL:', err);\n            setFileUrl('');\n            setPreviewUrl('');\n            setPartitions([]);\n            latestOriginalUrlRef.current = '';\n            return '';\n        } finally {\n            setIsFetchingUrl(false);\n        }\n    }, [rawFiles, hasChunkBboxes]);\n\n    useEffect(() => {\n        // Check if current path is adjust page and doesn't have valid state data\n        const pathName = location.pathname.replace(__APP_ENV__.BASE_URL, '')\n        if (pathName.startsWith('/filelib/adjust/') && !window.history.state?.isAdjustMode) {\n            // Extract ID (e.g., extract 2066 from /filelib/adjust/2066)\n            const adjustId = pathName.split('/')[3];\n            if (adjustId) {\n                // Redirect to corresponding filelib page\n                navigate(`/filelib/${adjustId}`, { replace: true });\n            }\n        }\n    }, [location.pathname, navigate]);\n\n    // Generate chunks from datalist (keep original logic)\n    useEffect(() => {\n        if (!selectedFileId || !datalist.length) {\n            setChunks([]);\n            return;\n        }\n\n        const generatedChunks = datalist.map((item, index) => ({\n            ...item,\n            text: item.text || '',\n            bbox: item.metadata?.bbox || {},\n            activeLabels: {},\n            chunkIndex: item.metadata?.chunk_index || index,\n            page: item.metadata?.page || 0,\n            metadata: item.metadata || {}\n        }));\n\n        setChunks(generatedChunks);\n    }, [datalist, selectedFileId]);\n\n    const handleFileChange = useCallback(async (newFileId, selectedFile) => {\n        console.log('File change triggered:', newFileId, 'Current selected:', selectedFile);\n\n        // Immediately update UI to avoid flickering\n        // const selectedFile = rawFiles.find(f => String(f.id) === newFileId);\n        if (selectedFile) {\n            setCurrentFile({\n                label: selectedFile.file_name || '',\n                value: newFileId,\n                id: selectedFile.id || '',\n                name: selectedFile.file_name || '',\n                size: selectedFile.size || 0,\n                type: selectedFile.file_name?.split('.').pop() || '',\n                filePath: fileUrl || previewUrl,\n                suffix: selectedFile.file_name?.split('.').pop() || '',\n                fileType: selectedFile.parse_type || 'unknown',\n                fullData: selectedFile || {},\n            });\n            setSelectedFileId(newFileId);\n        }\n\n        isChangingRef.current = true;\n        setSelectError(null);\n        setIsFetchingUrl(true);\n        setChunks([]);\n        setFileUrl('');\n        setPreviewUrl('');\n        latestOriginalUrlRef.current = '';\n\n        try {\n            // if (!selectedFile) throw new Error(t('file.fileNotFound'));\n\n            if (filterData) filterData({ file_ids: [newFileId] });\n            await fetchFileUrl(newFileId);\n            if (!filterData) await reload();\n            setChunkSwitchTrigger(prev => prev + 1);\n        } catch (err) {\n            console.error('File change failed:', err);\n            setSelectError(err.message || t('file.changeFailed'));\n        } finally {\n            setIsFetchingUrl(false);\n            isChangingRef.current = false;\n            setLoad(false);\n        }\n    }, [rawFiles, fetchFileUrl, filterData, reload, selectedFileId, fileUrl, previewUrl, t]);\n\n    // 初始化时设置默认选中的文件 ID\n    useEffect(() => {\n        if (fileId && !selectedFileId) {\n            setSelectedFileId(String(fileId));\n        }\n    }, [fileId, selectedFileId]);\n\n    const handleDeleteMainMetadata = useCallback((id) => {\n        setMainMetadataList(prev => prev.filter(item => item.id !== id));\n    }, []);\n\n    const handleMainMetadataValueChange = useCallback((id, value) => {\n        setMainMetadataList(prev => prev.map(item =>\n            item.id === id ? { ...item, value } : item\n        ));\n    }, []);\n\n    const handleSaveNewMetadata = useCallback(async () => {\n        const name = newMetadata.name.trim();\n        const type = newMetadata.type;\n\n        if (!name) {\n            setMetadataError(t('metadialog.nameRequired'));\n            return;\n        }\n\n        if (name.length > 255) {\n            setMetadataError(t('metadialog.nameTooLong'));\n            return;\n        }\n\n        const nameRegex = /^[a-z][a-z0-9_]*$/;\n        if (!nameRegex.test(name)) {\n            setMetadataError(t('metadialog.nameInvalid'));\n            return;\n        }\n\n        const exists = predefinedMetadata.some(item => item.name === name);\n        if (exists) {\n            setMetadataError(t('metadialog.nameExists'));\n            return;\n        }\n\n        try {\n            await addMetadata(Number(id), [{\n                field_name: name,\n                field_type: type.toLowerCase()\n            }]);\n            const knowledgeDetails = await getKnowledgeDetailApi([id]);\n            const knowledgeDetail = knowledgeDetails[0];\n\n            if (knowledgeDetail && knowledgeDetail.metadata_fields) {\n                const formattedFields = Object.entries(knowledgeDetail.metadata_fields).map(([fieldName, fieldData]) => ({\n                    id: `meta_${fieldName}`,\n                    name: fieldData.field_name || fieldName,\n                    type: fieldData.field_type.charAt(0).toUpperCase() + fieldData.field_type.slice(1),\n                    updated: fieldData.updated_at\n                }));\n                setPredefinedMetadata(formattedFields);\n            }\n            setNewMetadata({ name: '', type: 'String' });\n            setMetadataError('');\n\n            setSideDialog({ type: 'search', open: true });\n\n        } catch (error) {\n            console.error(\"Failed to create metadata field:\", error);\n            setMetadataError(t('metadialog.nameReserved'));\n        }\n    }, [newMetadata, predefinedMetadata, t, id]);\n\n    const handleSearchMetadataClick = useCallback(async () => {\n        try {\n            const knowledgeDetails = await getKnowledgeDetailApi([id]);\n            const knowledgeDetail = knowledgeDetails[0];\n\n            if (knowledgeDetail && knowledgeDetail.metadata_fields) {\n                const formattedFields = Object.entries(knowledgeDetail.metadata_fields).map(([fieldName, fieldData]) => ({\n                    id: `meta_${fieldName}`,\n                    name: fieldData.field_name || fieldName,\n                    type: fieldData.field_type.charAt(0).toUpperCase() + fieldData.field_type.slice(1),\n                    updated: fieldData.updated_at\n                }));\n                setPredefinedMetadata(formattedFields);\n            } else {\n                setPredefinedMetadata([]);\n            }\n        } catch (error) {\n            console.error(\"Failed to get knowledge base metadata fields:\", error);\n            setPredefinedMetadata([]);\n        } finally {\n            setMetadataError('');\n            setSideDialog({ type: 'search', open: true });\n        }\n    }, [id, t]);\n\n    const handleCreateMetadataClick = useCallback(() => {\n        setNewMetadata({ name: '', type: 'String' });\n        setMetadataError('');\n        setSideDialog({ type: 'create', open: true });\n    }, []);\n\n    const closeSideDialog = useCallback(() => {\n        setSideDialog({ type: null, open: false });\n        setMetadataError('');\n        setNewMetadata({ name: '', type: 'String' });\n        setIsSideDialogPositioned(false);\n    }, []);\n\n    const handleAddFromSearch = useCallback((metadata) => {\n        const exists = mainMetadataList.some(item => item.name === metadata.name);\n        if (exists) {\n            toast({ description: t('metadialog.alreadyExists') });\n            return;\n        }\n        const newItem = {\n            ...metadata,\n            id: `temp_meta_${Date.now()}_${metadata.name}`,\n            updated_at: Date.now(),\n            value: ''\n        };\n        setMainMetadataList(prev => [...prev, newItem]);\n        closeSideDialog();\n    }, [closeSideDialog, mainMetadataList, t]);\n\n    const handleMetadataClick = useCallback(async () => {\n        if (currentFile?.fullData) {\n            try {\n                const res = await getMetaFile(currentFile.id);\n                setFileInfor(res);\n                const fetchedMetadata = res.user_metadata || [];\n                const metadataArray = Object.entries(fetchedMetadata).map(([fieldName, fieldData]) => ({\n                    id: `meta_${fieldName}`,\n                    name: fieldData.field_name || fieldName,\n                    type: fieldData.field_type ?\n                        fieldData.field_type.charAt(0).toUpperCase() + fieldData.field_type.slice(1).toLowerCase() :\n                        'String',\n                    value: fieldData.field_value || '',\n                    originalValue: fieldData.field_value || '',\n                    updated_at: fieldData.updated_at || 0,\n                }));\n                const sortedMetadata = metadataArray.sort((a, b) => {\n                    return (a.updated_at || 0) - (b.updated_at || 0);\n                });\n\n                setMainMetadataList(sortedMetadata);\n\n                setMetadataDialog({\n                    open: true,\n                    file: currentFile.fullData\n                });\n            } catch (error) {\n                console.error(\"Failed to get file metadata:\", error);\n                setMetadataDialog({\n                    open: true,\n                    file: currentFile.fullData\n                });\n            }\n        }\n    }, [currentFile]);\n\n    // Adjust segmentation strategy\n    const handleAdjustSegmentation = useCallback(() => {\n        const currentFileUrl = latestOriginalUrlRef.current;\n        const currentPreviewUrl = latestPreviewUrlRef.current;\n\n        navigate(`/filelib/adjust/${id}`, {\n            state: {\n                skipToStep: 2,\n                fileId: selectedFileId,\n                fileData: {\n                    previewUrl: currentPreviewUrl,\n                    id: currentFile?.id,\n                    name: currentFile?.name,\n                    split_rule: currentFile?.split_rule || currentFile?.fullData?.split_rule,\n                    status: currentFile?.status,\n                    filePath: currentFileUrl || currentPreviewUrl,\n                    suffix: currentFile?.suffix,\n                    fileType: currentFile?.fileType,\n                },\n                isAdjustMode: true\n            }\n        });\n    }, [id, selectedFileId, currentFile, navigate]);\n\n    // Parse segmentation strategy description (keep original logic)\n    const splitRuleDesc = useCallback((file) => {\n        if (!file.split_rule) return '';\n        const suffix = file.file_name?.split('.').pop()?.toUpperCase() || '';\n        try {\n            const rule = JSON.parse(file.split_rule);\n            const { excel_rule } = rule;\n\n            // Process Excel file rules\n            if (excel_rule && ['XLSX', 'XLS', 'CSV'].includes(suffix)) {\n                return t('file.excelRule', { length: excel_rule.slice_length });\n            }\n\n            // Process separator rules\n            const { separator, separator_rule } = rule;\n            if (separator && separator_rule && separator.length === separator_rule.length) {\n                const displayItems = separator.map((sep, index) => {\n                    // Core fix: Convert actual newlines to visible \\n string\n                    const displaySep = sep\n                        .replace(/\\n/g, '\\\\n')  // Replace newline\n                        .replace(/\\r/g, '\\\\r')  // Replace carriage return (optional)\n                        .replace(/\\t/g, '\\\\t'); // Replace tab (optional)\n\n                    // Add cutting symbol based on rule\n                    const prefix = separator_rule[index] === 'before' ? '✂️' : '';\n                    const suffix = separator_rule[index] === 'after' ? '✂️' : '';\n\n                    return `${prefix}${displaySep}${suffix}`;\n                });\n                return displayItems.join(', ');\n            }\n        } catch (e) {\n            console.error('Failed to parse segmentation strategy:', e);\n        }\n\n        // Fallback handling when parsing fails\n        return file.split_rule\n            .replace(/\\n/g, '\\\\n')\n            .replace(/\\r/g, '\\\\r')\n            .replace(/\\t/g, '\\\\t');\n    }, [t]);\n\n    const handleDeleteChunk = useCallback(async (data) => {\n        try {\n            const updatedChunks = chunks.filter(chunk => chunk.chunkIndex !== data);\n            setChunks(updatedChunks);\n\n            if (selectedChunkIndex === data) {\n                setSelectedBbox([]);\n            }\n\n            await captureAndAlertRequestErrorHoc(delChunkApi({\n                knowledge_id: Number(id),\n                file_id: selectedFileId || currentFile?.id || '',\n                chunk_index: data || 0\n            }));\n\n            await new Promise(resolve => setTimeout(resolve, 100));\n\n            await reload();\n\n        } catch (error) {\n            console.error('Failed to delete chunk:', error);\n            await reload();\n        }\n    }, [\n        id,\n        reload,\n        chunks,\n        selectedFileId,\n        currentFile?.id,\n        selectedChunkIndex,\n        setSelectedBbox,\n        t\n    ]);\n\n    const formatFileSize = useCallback((bytes) => {\n        if (bytes === 0) return '0 Bytes';\n\n        // Define unit conversion boundaries (1024-based)\n        const KB = 1024;\n        const MB = KB * 1024;\n        const GB = MB * 1024;\n\n        // Select appropriate unit based on file size\n        if (bytes < MB) {\n            // Less than 1024KB (1MB), use KB\n            return `${(bytes / KB).toFixed(2)} KB`;\n        } else if (bytes < GB) {\n            // Between 1024KB and 1024MB, use MB\n            return `${(bytes / MB).toFixed(2)} MB`;\n        } else {\n            // 1024MB and above, use GB\n            return `${(bytes / GB).toFixed(2)} GB`;\n        }\n    }, []);\n\n    // Preview component rule configuration (keep original logic)\n    const previewRules = useMemo(() => ({\n        fileList: currentFile ? [{\n            id: currentFile.id,\n            filePath: fileUrl,\n            fileName: currentFile.name,\n            suffix: currentFile.suffix,\n            fileType: currentFile.fileType,\n            excelRule: {} // Add excel rules as needed\n        }] : [],\n        pageHeaderFooter: false, // Page header/footer processing\n        chunkOverlap: 200, // Chunk overlap size\n        chunkSize: 1000, // Chunk size\n        enableFormula: false, // Whether to enable formulas\n        forceOcr: false, // Whether to force OCR\n        knowledgeId: id, // Knowledge base ID\n        retainImages: false, // Whether to retain images\n        separator: [], // Separators\n        separatorRule: [] // Separation rules\n    }), [currentFile, fileUrl, id]);\n\n    // Preview display judgment (keep original logic)\n    // const isExcelFile = currentFile && ['xlsx', 'xls', 'csv'].includes(currentFile.suffix?.toLowerCase());\n    const isPreviewVisible =\n        selectedFileId &&\n        currentFile &&\n        (previewUrl || fileUrl) && // Compatible with either previewUrl or fileUrl having value\n        !isFetchingUrl;\n    const isParagraphVisible = datalist.length > 0;\n\n    // Layout class name calculation (keep original logic)\n    const contentLayoutClass = useMemo(() => {\n        const isSingleVisible = isPreviewVisible !== isParagraphVisible;\n        if (isSingleVisible) {\n            return \"flex justify-center bg-background-main min-h-0\";\n        }\n        return \"flex bg-background-main min-h-0\";\n    }, [isPreviewVisible, isParagraphVisible,]);\n\n    useEffect(() => {\n        latestFileUrlRef.current = fileUrl;\n        latestPreviewUrlRef.current = previewUrl;\n    }, [fileUrl, previewUrl]);\n\n    const updateSideDialogPosition = useCallback(() => {\n        if (!mainMetadataDialogRef.current || !sideDialog.open) return;\n\n        const rect = mainMetadataDialogRef.current.getBoundingClientRect();\n        const gap = isSmallScreen ? 0 : 4;\n        let left = rect.right + gap;\n\n        if (left + sideDialogWidth > screenWidth) {\n            left = screenWidth - sideDialogWidth - 8;\n        }\n\n        const newPosition = {\n            top: Math.max(rect.top, 8),\n            left: Math.max(left, 8)\n        };\n\n        setSideDialogPosition(newPosition);\n        setIsSideDialogPositioned(true);\n    }, [mainMetadataDialogRef, sideDialog.open, isSmallScreen, screenWidth, sideDialogWidth]);\n\n    useEffect(() => {\n        const handleResize = () => {\n            const newWidth = window.innerWidth;\n            setScreenWidth(newWidth);\n        };\n\n        window.addEventListener(\"resize\", handleResize);\n        return () => window.removeEventListener(\"resize\", handleResize);\n    }, []);\n\n    useEffect(() => {\n        if (!metadataDialog.open || !sideDialog.open) {\n            setIsSideDialogPositioned(false);\n            return;\n        }\n\n        const timer1 = setTimeout(() => {\n            updateSideDialogPosition();\n        }, 0);\n\n        const timer2 = setTimeout(() => {\n            updateSideDialogPosition();\n        }, 50);\n\n        const timer3 = setTimeout(() => {\n            updateSideDialogPosition();\n        }, 100);\n\n        return () => {\n            clearTimeout(timer1);\n            clearTimeout(timer2);\n            clearTimeout(timer3);\n        };\n    }, [metadataDialog.open, sideDialog.open, updateSideDialogPosition]);\n\n    const handleWriteableChange = (writable: boolean) => {\n        setIsKnowledgeAdmin(writable);\n    }\n\n    const handleSaveUserMetadata = useCallback(async () => {\n        const knowledge_id = selectedFileId\n        const user_metadata_list = mainMetadataList.map(item => {\n            if (!item.id.startsWith('temp_') && item.updated_at !== undefined) {\n                return {\n                    field_name: item.name,\n                    field_value: item.value || '',\n                    updated_at: item.updated_at,\n                };\n            }\n            return {\n                field_name: item.name,\n                field_value: item.value || '',\n                updated_at: item.updated_at || Math.floor(Date.now() / 1000),\n            };\n        });\n        try {\n            await saveUserMetadataApi(knowledge_id, user_metadata_list);\n\n            toast({\n                title: t('common.success'),\n                description: t('metadialog.saveSuccess'),\n            });\n            setMetadataDialog(prev => ({ ...prev, open: false }));\n            setMetadataError('');\n        } catch (error) {\n            toast({\n                variant: 'error',\n                description: error,\n            });\n            console.error('Failed to save metadata:', error);\n            setMetadataError(t('metadialog.saveFailed'));\n        }\n    }, [mainMetadataList, selectedFileId, t]);\n\n    return (\n        <div className=\"relative flex flex-col h-[calc(100vh-64px)]\">\n            {load && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,1)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>}\n            {/* Top navigation bar */}\n            <div className=\"flex justify-between items-center px-4 pt-4 pb-4\">\n                <div className=\"min-w-72 max-w-[440px] flex items-center gap-2\">\n                    <ShadTooltip content={t('common.back')} side=\"top\">\n                        <button\n                            className=\"extra-side-bar-buttons w-[36px] max-h-[36px]\"\n                            onClick={onBack}\n                        >\n                            <ArrowLeft className=\"side-bar-button-size\" />\n                        </button>\n                    </ShadTooltip>\n                    <FileSelector\n                        knowledgeId={id}\n                        selectedFileId={selectedFileId}\n                        onWriteableChange={handleWriteableChange}\n                        onFileChange={handleFileChange}\n                        disabled={false}\n                    />\n                </div>\n\n                <div className=\"flex items-center gap-2 ml-auto\">\n                    <div className=\"w-60\">\n                        <SearchInput\n                            placeholder={t('segment.searchSegments')}\n                            onChange={(e) => search(e.target.value)}\n                            disabled={!selectedFileId}\n                        />\n                    </div>\n                    <Button variant=\"outline\" onClick={handleMetadataClick} className=\"px-4 whitespace-nowrap\">\n                        <ClipboardPenLine size={16} strokeWidth={1.5} className=\"mr-1\" />\n                        {t('metadialog.title')}\n                    </Button>\n                    <Tip content={!isEditable && t('common.noPermission')} side='top'>\n                        <Button\n                            disabled={!isEditable}\n                            onClick={handleAdjustSegmentation}\n                            className={`px-4 whitespace-nowrap disabled:pointer-events-auto`}>\n                            {t('segment.adjustStrategy')}\n                        </Button>\n                    </Tip>\n                </div>\n            </div>\n\n            {/* Main content area */}\n            <div className={contentLayoutClass}>\n                {/* Preview component - fix display issues */}\n                {isPreviewVisible ? (\n                    <PreviewFile\n                        rawFiles={rawFiles}\n                        key={selectedFileId}\n                        partitions={partitions}\n                        previewUrl={previewUrl}\n                        urlState={{ load: !isFetchingUrl, url: previewUrl || fileUrl }}\n                        file={currentFile}\n                        chunks={chunks}\n                        setChunks={setChunks}\n                        rules={previewRules}\n                        edit\n                    />\n                ) : (\n                    !isParagraphVisible && (\n                        <div className=\"flex justify-center items-center h-[400px] text-gray-500 bg-gray-50 rounded-lg w-full max-w-4xl\">\n                            <FileIcon className=\"size-8 mb-3 opacity-50\" />\n                            <p className=\"text-lg font-medium\">{t('file.previewNotAvailable')}</p>\n                        </div>\n                    )\n                )}\n\n                {/* Segment component */}\n                {isParagraphVisible ? (\n                    <div className={isPreviewVisible ? \"w-1/2\" : \" w-full max-w-3xl\"}>\n                        <div className=\"flex justify-center items-center relative text-sm gap-2 p-2 pt-0 \">\n                            <PreviewParagraph\n                                key={`preview-${selectedFileId}-${chunkSwitchTrigger}`}\n                                fileId={selectedFileId}\n                                previewCount={datalist.length}\n                                edit={isEditable}\n                                page={page}\n                                className=\"h-[calc(100vh-206px)] pb-6\"\n                                fileSuffix={currentFile?.suffix || ''}\n                                loading={loading}\n                                chunks={chunks}\n                                onDel={handleDeleteChunk}\n                                onChange={handleChunkChange}\n                            />\n                        </div>\n                    </div>\n                ) : (\n                    !isPreviewVisible && (\n                        <div className=\"flex justify-center items-center flex-col h-[400px] text-gray-500 bg-gray-50 rounded-lg w-full max-w-4xl\">\n                            <FileText className=\"size-8 mb-3 opacity-50\" />\n                            <p className=\"text-lg font-medium\">{t('segment.noData')}</p>\n                        </div>\n                    )\n                )}\n            </div>\n\n            {/* Pagination */}\n            <div className=\"bisheng-table-footer px-6\">\n                <AutoPagination\n                    className=\"justify-end\"\n                    page={page}\n                    pageSize={pageSize}\n                    total={total}\n                    onChange={setPage}\n                    disabled={!selectedFileId}\n                />\n            </div>\n\n            <MainMetadataDialog\n                metadataDialog={metadataDialog}\n                setMetadataDialog={setMetadataDialog}\n                mainMetadataList={mainMetadataList}\n                fileInfor={fileInfor}\n                isKnowledgeAdmin={isKnowledgeAdmin}\n                isSmallScreen={isSmallScreen}\n                t={t}\n                formatFileSize={formatFileSize}\n                splitRuleDesc={splitRuleDesc}\n                handleSaveUserMetadata={handleSaveUserMetadata}\n                handleSearchMetadataClick={handleSearchMetadataClick}\n                handleDeleteMainMetadata={handleDeleteMainMetadata}\n                handleMainMetadataValueChange={handleMainMetadataValueChange}\n                mainMetadataDialogRef={mainMetadataDialogRef}\n            />\n\n            {/* Segment editing dialog */}\n            <Dialog open={paragraph.show} onOpenChange={(show) => setParagraph(prev => ({ ...prev, show }))}>\n                <DialogContent close={false} className='size-full max-w-full sm:rounded-none p-0 border-none'>\n                    <ParagraphEdit\n                        edit={isEditable}\n                        fileId={paragraph.fileId}\n                        chunkId={paragraph.chunkId}\n                        isUns={paragraph.isUns || ['etl4lm', 'un_etl4lm'].includes(paragraph.parseType)}\n                        parseType={paragraph.parseType}\n                        onClose={() => setParagraph(prev => ({ ...prev, show: false }))}\n                        onChange={(value) => refreshData(\n                            (item) => item?.metadata?.chunk_index === paragraph.chunkId,\n                            { text: value }\n                        )}\n                    />\n                </DialogContent>\n            </Dialog>\n\n            {/* Right metadata sidebar dialog */}\n            <MetadataSideDialog\n                sideDialog={sideDialog}\n                closeSideDialog={closeSideDialog}\n                predefinedMetadata={predefinedMetadata}\n                searchTerm={searchTerm}\n                setSearchTerm={setSearchTerm}\n                newMetadata={newMetadata}\n                setNewMetadata={setNewMetadata}\n                metadataError={metadataError}\n                setMetadataError={setMetadataError}\n                isKnowledgeAdmin={isKnowledgeAdmin}\n                isSmallScreen={isSmallScreen}\n                t={t}\n                sideDialogWidth={sideDialogWidth}\n                sideDialogPosition={sideDialogPosition}\n                isSideDialogPositioned={isSideDialogPositioned}\n                handleAddFromSearch={handleAddFromSearch}\n                handleCreateMetadataClick={handleCreateMetadataClick}\n                handleSaveNewMetadata={handleSaveNewMetadata}\n                setSideDialog={setSideDialog}\n            />\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/PreviewFile.tsx",
    "content": "import FileView from \"@/components/bs-comp/FileView\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { cn } from \"@/utils\";\nimport { Info } from \"lucide-react\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport useKnowledgeStore from \"../useKnowledgeStore\";\nimport DocxPreview from \"./DocxFileViewer\";\nimport { convertJsonData } from \"./ParagraphEdit\";\nimport { Partition } from \"./PreviewResult\";\nimport TxtFileViewer from \"./TxtFileViewer\";\nimport ExcelPreview from \"./ExcelPreview\";\n\nexport default function PreviewFile({\n  urlState,\n  file,\n  partitions,\n  chunks,\n  rawFiles,\n  step,\n  setChunks,\n  edit = false,\n  resultFiles,\n  etl,\n  previewUrl\n}: {\n  urlState: { load: boolean; url: string };\n  file: any;\n  partitions: Partition;\n  chunks: any;\n  rawFiles: any[];\n  setChunks: any;\n  edit?: boolean;\n}) {\n  const { t } = useTranslation('knowledge')\n  const MemoizedFileView = React.memo(FileView);\n  const selectedChunkIndex = useKnowledgeStore((state) => state.selectedChunkIndex);\n  const selectedChunkDistanceFactor = useKnowledgeStore((state) => state.selectedChunkDistanceFactor);\n  const setNeedCoverData = useKnowledgeStore((state) => state.setNeedCoverData);\n  const setSelectedBbox = useKnowledgeStore((state) => state.setSelectedBbox);\n\n  // 1. 统一文件匹配和类型判断逻辑（与ParagraphEdit完全对齐）\n  const matchedRawFile = useMemo(() => {\n    if (!rawFiles?.length || !file?.id) return null;\n    return rawFiles.find(raw => raw.id === file.id);\n  }, [rawFiles, file]);\n\n  const targetFile = matchedRawFile || file;\n  let fileParseType = '';\n  if (step === 2) {\n    fileParseType = resultFiles[0].isEtl4lm\n  } else if (step === 3 && etl) {\n    fileParseType = etl\n  } else {\n    fileParseType = targetFile.fileType;\n  }\n  const suffix = useMemo(() => {\n    if (!urlState.url) return '';\n    return urlState.url?.split('?')[0].split('/').pop().split('.')[1].toLowerCase() || '';\n  }, [urlState.url]);\n\n  const isUnsType = useMemo(() => {\n    return fileParseType === 'uns' ||\n      (targetFile.fileType && targetFile.fileType.includes('uns'))\n  }, [fileParseType, targetFile.fileType]);\n\n  // 3. 状态管理（增加与ParagraphEdit一致的定位状态）\n  const [postion, setPostion] = useState([1, 0])\n  const [labelsMap, setLabelsMap] = useState(new Map())\n  const labelsMapRef = useRef(new Map())\n  const labelsMapTempRef = useRef({})\n  const [labelChange, setLabelChange] = useState(false)\n  const [showPos, setShowPos] = useState(false)\n  const labelTextRef = useRef<any>(partitions);\n  const [rePostion, setRePostion] = useState(false)\n\n  // 4. 初始化标签数据（完全对齐ParagraphEdit的initData逻辑）\n  useEffect(() => {\n    if (selectedChunkIndex === -1) return\n    setLabelChange(false);\n    // 仅对非uns类型的非PDF文件清空标签\n    if (suffix !== 'pdf' && !isUnsType) {\n      setSelectedBbox([]);\n      labelsMapRef.current = new Map();\n      setRePostion(!rePostion);\n      return setLabelsMap(new Map());\n    }\n    let setPostioned = false;\n    const labelsMap = new Map();\n\n    // 优先使用缓存的标签数据\n    const cachedLabels = labelsMapTempRef.current[selectedChunkIndex];\n    if (cachedLabels) {\n      setRePostion(!rePostion);\n      setLabelsMap(cachedLabels);\n      labelsMapRef.current = cachedLabels;\n      return;\n    }\n\n    // 转换标签数据（与ParagraphEdit使用相同方法）\n    const allLabels = convertJsonData(labelTextRef.current || partitions);\n    const activeIds = new Set();\n\n    // 标记当前chunk的激活标签\n    chunks?.forEach(chunk => {\n      if (chunk.chunkIndex === selectedChunkIndex) {\n        const bboxes = (chunk.bbox && JSON.parse(chunk.bbox).chunk_bboxes) || [];\n        bboxes.forEach(label => {\n          const id = [label.page, ...label.bbox].join('-');\n          activeIds.add(id);\n          // 初始定位到第一个激活标签\n          if (!setPostioned) {\n            setPostion([label.page, label.bbox[1]]);\n            setPostioned = true;\n          }\n        });\n      }\n    });\n\n    // 设置标签激活状态\n    allLabels.forEach((label) => {\n      labelsMap.set(label.id, {\n        ...label,\n        active: activeIds.has(label.id)\n      });\n    });\n\n    if (labelsMap.size) {\n      setRePostion(!rePostion);\n      setLabelsMap(labelsMap);\n      labelsMapRef.current = labelsMap;\n    }\n  }, [suffix, chunks, selectedChunkIndex, isUnsType, partitions]);\n  useEffect(() => {\n    // 当 chunks 变化且存在选中的 chunkIndex 时，检查该 chunk 是否仍存在\n    if (selectedChunkIndex !== -1) {\n      const chunkExists = chunks.some(c => c.chunkIndex === selectedChunkIndex);\n      if (!chunkExists) {\n        // 清除该 chunk 对应的标签\n        setLabelsMap(new Map());\n        labelsMapRef.current = new Map();\n        delete labelsMapTempRef.current[selectedChunkIndex];\n        setSelectedBbox([]);\n      }\n    }\n  }, [chunks, selectedChunkIndex, setLabelsMap, setSelectedBbox]);\n  // 5. 页面滚动和定位逻辑（对齐ParagraphEdit的postion计算）\n  useEffect(() => {\n    setPostion(prev => [prev[0], prev[1] + selectedChunkDistanceFactor]);\n  }, [selectedChunkDistanceFactor]);\n\n  // 计算定位位置（与ParagraphEdit一致）\n  const calculatedPostion = useMemo(() => {\n    const labelsArray = Array.from(labelsMap.values());\n    const target = labelsArray.find(el => el.active);\n    return target ? [target.page, postion[1]] : [0, 0];\n  }, [rePostion, postion]);\n\n  // 6. 页面标签分组（与ParagraphEdit的labels计算一致）\n  const pageLabels = useMemo(() => {\n    return Array.from(labelsMap.values()).reduce((acc, item) => {\n      if (!acc[item.page]) acc[item.page] = [];\n      acc[item.page].push({ ...item });\n      return acc;\n    }, {});\n  }, [labelsMap]);\n\n  // 7. 标签选择逻辑（完全对齐ParagraphEdit的handleSelectLabels\n  const handleSelectLabels = (lbs) => {\n    if (selectedChunkIndex === -1) return;\n\n    const distinct = {};\n    const newActiveLabelMap = lbs.reduce((map, { id, active }) => {\n      const partId = labelTextRef.current[id]?.part_id;\n      if (distinct[partId]) return map;\n\n      distinct[partId] = true;\n      // 同步相同part_id的标签状态\n      Object.keys(labelTextRef.current).forEach(key => {\n        if (labelTextRef.current[key]?.part_id === partId) {\n          map.set(key, active);\n        }\n      });\n      return map;\n    }, new Map());\n\n    // 更新标签状态\n    const newMap = new Map(labelsMap);\n    const bbox = [];\n\n    Array.from(labelsMap.values()).forEach(item => {\n      const value = newActiveLabelMap.get(item.id);\n      if (value !== undefined) {\n        newMap.set(item.id, { ...item, active: value });\n        if (value) bbox.push({ page: item.page, bbox: item.label });\n      } else if (item.active) {\n        bbox.push({ page: item.page, bbox: item.label });\n      }\n    });\n\n    setSelectedBbox(bbox);\n    labelsMapRef.current = newMap;\n    setLabelsMap(newMap);\n    setLabelChange(true);\n  };\n\n  // 8. 页面滚动检测（新增，与ParagraphEdit的handlePageChange一致）\n  const handlePageChange = (offset, h, paperSize, scale) => {\n    if (offset === 0) return;\n    const labelsArray = Array.from(labelsMap.values());\n    setShowPos(!labelsArray.some(item => {\n      const pageHeight = (item.page - 1) * paperSize;\n      const labelTop = pageHeight + item.label[1] / scale;\n      return item.active && labelTop > offset && labelTop < (offset + h);\n    }));\n  };\n\n  // 9. 渲染逻辑（统一与ParagraphEdit的fileView逻辑）\n  const render = () => {\n    const { url, load } = urlState;\n\n    // 加载状态处理\n    if (!load && !url) return <div className=\"flex justify-center items-center h-full text-gray-400\">预览失败</div>;\n    if (!url) return <div className=\"flex justify-center items-center h-full text-gray-400\"><LoadingIcon /></div>;\n\n    // 新版文件预览\n    switch (suffix) {\n      case 'ppt':\n      case 'pptx': return <div className=\"flex justify-center items-center h-full text-gray-400\">\n        <div className=\"text-center\">\n          <img\n            className=\"size-52 block\"\n            src={__APP_ENV__.BASE_URL + \"/assets/knowledge/damage.svg\"} alt=\"\" />\n          <p>此文件类型不支持预览</p>\n        </div>\n      </div>\n      case 'pdf':\n        return (\n          <FileView\n            startIndex={0}\n            select={selectedChunkIndex !== -1}\n            fileUrl={url}\n            labels={pageLabels}\n            scrollTo={calculatedPostion}\n            onSelectLabel={handleSelectLabels}\n            onPageChange={handlePageChange}\n          />\n        );\n      case 'txt': return <TxtFileViewer filePath={url} />;\n      case 'md': return <TxtFileViewer markdown filePath={url} />;\n      case 'html': return <TxtFileViewer html filePath={url} />;\n      case 'doc':\n      case 'docx': return <DocxPreview filePath={previewUrl || url} />;\n      case 'png':\n      case 'jpg':\n      case 'jpeg':\n      case 'bmp': return (\n        <img\n          className=\"border\"\n          src={url.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL)}\n          alt=\"预览图片\"\n        />\n      );\n      case 'xlsx':\n      case 'xls':\n      case 'csv':\n        return (\n          <div>\n            <ExcelPreview filePath={previewUrl || url} />\n          </div>\n        )\n      default:\n        return <div className=\"flex justify-center items-center h-full text-gray-400\">\n          <div className=\"text-center\">\n          </div>\n        </div>;\n    }\n  };\n\n  // 10. 覆盖分段逻辑（完全对齐ParagraphEdit）\n  const handleOvergap = () => {\n    setLabelChange(false);\n    let prevType = '';\n    let prevPartId = '';\n    let str = '';\n\n    Array.from(labelsMap.values()).forEach((item) => {\n      if (typeof labelTextRef.current[item.id] === 'string') {\n        return alert('文件已失效，请上传新文件后重试');\n      }\n\n      if (item.active) {\n        const { text, type, part_id } = labelTextRef.current[item.id];\n\n        if (str === '') {\n          str += text + (type === 'Title' ? '\\n' : '');\n        } else {\n          if (prevPartId === part_id) {\n            str += text;\n          } else if (prevType === 'Table' || type === 'Table' || (type === 'Title' && prevType !== type)) {\n            str += '\\n\\n' + text;\n          } else {\n            str += '\\n' + text;\n          }\n        }\n\n        prevType = type;\n        prevPartId = part_id;\n      }\n    });\n\n    setNeedCoverData({ index: selectedChunkIndex, txt: str });\n    labelsMapTempRef.current[selectedChunkIndex] = labelsMap;\n  };\n\n  useEffect(() => {\n    return () => {\n      setNeedCoverData({ index: -1, txt: '' });\n    }\n  }, [])\n\n\n\n  return <div className={cn('relative', step === 3 ? \"w-full max-w-[50%]\" : \"w-1/2\", step === 2 ? \"-mt-9 w-full max-w-[50%]\" : \"\")} onClick={e => {\n    e.stopPropagation()\n  }}>\n    <div className={`${edit ? 'absolute -top-8 right-0 z-10' : 'relative'} flex justify-center items-center mb-2 text-sm h-10`}>\n      <div className={`${labelChange ? '' : 'hidden'} flex items-center`}>\n        <Info className='mr-1 text-red-500' size={14} />\n        <span className=\"text-red-500\">{t('segmentRangeDetected')}</span>\n        <span className=\"text-primary cursor-pointer\" onClick={handleOvergap}>{t('overwriteSegment')}</span>\n      </div>\n    </div>\n    <div className={`relative ${['csv', 'xlsx', 'xls'].includes(file.suffix) ? '' : \"overflow-y-auto\"}  ${edit ? 'h-[calc(100vh-206px)]' : 'h-[calc(100vh-284px)]'}`}>\n      {render(file.suffix)}\n    </div>\n  </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/PreviewParagraph.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\";\nimport { cn } from \"@/util/utils\";\nimport { debounce } from \"lodash-es\";\nimport { CircleX, FileCode, LocateFixed } from \"lucide-react\";\nimport { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport AceEditor from \"react-ace\";\nimport Vditor from 'vditor';\nimport 'vditor/dist/index.css';\nimport useKnowledgeStore from \"../useKnowledgeStore\";\n// 新增：引入国际化hooks\nimport { useTranslation } from \"react-i18next\";\nimport { useMiniDebounce } from \"@/util/hook\";\n\nexport const MarkdownView = ({ noHead = false, data }) => {\n    // 新增：使用knowledge命名空间的国际化\n    const { t } = useTranslation('knowledge');\n\n    return <div className=\"p-4 bg-main rounded-lg shadow-sm border border-gray-200 hover:shadow-md hover:border-primary transition-shadow w-full\">\n        {!noHead && <p className=\"text-sm text-gray-500 flex gap-2 mb-1\">\n            <span>{t('chunk')}{data.chunkIndex + 1}</span>\n            <span>-</span>\n            <span>{data.text.length} {t('characters')}</span>\n        </p>}\n        <MessageMarkDown message={data.text} />\n    </div>\n}\n\n// 原始编辑\nconst AceEditorCom = ({ markdown, hidden, onChange, onBlur }) => {\n    if (hidden) return null\n\n    return <AceEditor\n        value={markdown || ''}\n        mode=\"markdown\"\n        theme={\"github\"}\n        highlightActiveLine={false}\n        showPrintMargin={false}\n        fontSize={14}\n        showGutter={false}\n        enableLiveAutocompletion\n        name=\"CodeEditor\"\n        onChange={onChange}\n        onBlur={(e) => onBlur(markdown, () => {\n            // 为空时恢复上一次数据\n        })}\n        onValidate={(e) => console.error('ace validate :>> ', e)}\n        className=\"h-full w-full min-h-80 text-gray-500\"\n    />\n}\n\n// 预览编辑\nconst VditorEditor = forwardRef(({ defalutValue, hidden, onBlur, onChange }, ref) => {\n    const vditorRef = useRef(null);\n    const readyRef = useRef(false); // 保证vditor初始化完成后,再调用实例方法,否则报错 Cannot read properties of undefined (reading 'currentMode')\n    const valurCacheRef = useRef('');\n    const domRef = useRef(null);\n\n    // 处理hook  blur闭包\n    const blurRef = useRef(onBlur);\n    blurRef.current = onBlur;\n\n    useEffect(() => {\n        // console.log('markdown :>> ', markdown);\n        const processedMarkdown = defalutValue\n            .replace(/^( {4,})/gm, '   ')\n        if (!hidden && vditorRef.current && readyRef.current) {\n            vditorRef.current.setValue(processedMarkdown);\n        } else {\n            valurCacheRef.current = processedMarkdown;\n        }\n    }, [hidden])\n\n    useImperativeHandle(ref, () => ({\n        setValue(val) {\n            const processedMarkdown = val.replace(/^( {4,})/gm, '   ')\n            if (readyRef.current) {\n                vditorRef.current?.setValue(processedMarkdown)\n            } else {\n                valurCacheRef.current = processedMarkdown;\n            }\n        }\n    }))\n\n    useEffect(() => {\n        vditorRef.current = new Vditor(domRef.current, {\n            cdn: location.origin + __APP_ENV__.BASE_URL + '/vditor',\n            height: '100%',\n            toolbarConfig: {\n                hide: true,\n                pin: true,\n            },\n            mode: 'ir',  // 'sv' for split view, 'ir' for instant rendering\n            preview: {\n                hljs: {\n                    style: ''\n                },\n                markdown: {\n                    toc: true,\n                    mark: true,\n                },\n                math: {\n                    \"inlineDigit\": true\n                }\n            },\n            cache: {\n                enable: false,\n            },\n            after: () => {\n                console.log('Vditor is ready');\n                readyRef.current = true;\n\n                if (valurCacheRef.current) {\n                    vditorRef.current?.setValue(valurCacheRef.current);\n                }\n                // vditorRef.current.disabled();\n            },\n            // input: onChange, // 有延时\n            blur: () => {\n                const value = vditorRef.current?.getValue()\n                blurRef.current(\n                    value,\n                    () => {\n                        // 还原\n                        const processedMarkdown = defalutValue.replace(/^( {4,})/gm, '   ')\n                        vditorRef.current?.setValue(processedMarkdown);\n                    }\n                );\n                onChange(value);\n            },\n        });\n\n        return () => {\n            // 1. 校验实例存在 + 初始化完成 + DOM节点存在\n            if (vditorRef.current && readyRef.current && domRef.current) {\n                try {\n                    vditorRef.current.destroy(); // 仅在安全状态下执行销毁\n                } catch (error) {\n                    console.warn('Vditor销毁时发生异常:', error); // 捕获异常避免阻断流程\n                }\n            }\n            // 2. 清空引用，释放内存\n            vditorRef.current = null;\n            readyRef.current = false;\n        };\n    }, []);\n\n    return <div ref={domRef} className={`${hidden ? 'hidden' : ''} overflow-y-auto border-none file-vditor`}></div>;\n});\n\nconst EditMarkdown = ({ data, active, oneLeft, fileSuffix, onClick, onDel, onChange, onPositionClick }) => {\n    const { t } = useTranslation('knowledge');\n\n    const [edit, setEdit] = useState(false); // 编辑原始格式\n    const { appConfig } = useContext(locationContext)\n\n    const [value, setValue] = useState(data.text) // 不支持动态更新,更新文本请重新创建该组件\n    const setDebounceValue = useCallback(debounce((value) => {\n        setValue(value)\n    }, 30), [setValue])\n    // 强制覆盖chunk\n    const needCoverData = useKnowledgeStore((state) => state.needCoverData);\n    const vditorRef = useRef(null);\n    useEffect(() => {\n        const { index, txt } = needCoverData\n        if (data.chunkIndex === index) {\n            vditorRef.current.setValue(txt)\n            onChange(data.chunkIndex, txt)\n        }\n    }, [needCoverData])\n\n    const { toast } = useToast()\n    const handleBlur = (newValue, restore) => {\n        const _value = value.trim()\n        const _newValue = newValue.trim()\n        if (!_value || _newValue === '') {\n            setValue(data.text)\n            restore?.()\n            return toast({\n                variant: 'error',\n                title: t('operationFailed'),\n                description: t('chunkContentCannotBeEmpty'),\n            })\n        }\n        // Edit mode does not judge \n        if (!edit && _value === _newValue) return // 无需保存\n        // chunk diff\n        onChange(data.chunkIndex, newValue)\n    }\n    const handleBlurDebounced = useMiniDebounce(handleBlur, 300)\n\n    return <div\n        className={cn(\"group p-4 py-3 bg-white rounded-lg shadow-sm border border-gray-200 hover:shadow-md hover:border-primary transition-shadow w-full\",\n            active && 'border-primary')\n        }\n        onClick={(e) => {\n            e.stopPropagation()\n            onClick(data.chunkIndex)\n        }}\n    >\n        <div className=\"text-sm text-gray-500 flex gap-2 justify-between mb-1\">\n            <div className=\"flex gap-2 items-center\">\n                <span>{t('chunk')}{data.chunkIndex + 1}</span>\n                <span>-</span>\n                <span>{data.text.length} {t('characters')}</span>\n                <div className=\"flex gap-2 justify-center items-center\">\n                    {\n                        fileSuffix === 'pdf' && appConfig.enableEtl4lm && <Tip content={t('clickLocateOriginalFile')} side={\"top\"}  >\n                            <Button\n                                size=\"icon\"\n                                variant=\"ghost\"\n                                className={cn(\"size-6 text-primary opacity-0 group-hover:opacity-100\")}\n                                onClick={onPositionClick}\n                            ><LocateFixed size={18} /></Button>\n                        </Tip>\n                    }\n                    {edit\n                        ? <div\n                            className={cn(\"size-6 text-primary flex justify-center items-center rounded-sm cursor-pointer opacity-0 group-hover:opacity-100\", edit && 'bg-primary text-gray-50')}\n                            onClick={() => setEdit(!edit)}><FileCode size={18} /></div>\n                        : <Tip content={t('clickShowMarkdownEdit')} side={\"top\"}  >\n                            <div\n                                className={cn(\"size-6 text-primary flex justify-center items-center rounded-sm cursor-pointer opacity-0 group-hover:opacity-100\", edit && 'bg-primary text-gray-50')}\n                                onClick={() => setEdit(!edit)}><FileCode size={18} /></div>\n                        </Tip>}\n                </div>\n            </div>\n            {!oneLeft &&\n                <Tip content={t('clickDeleteChunk')} side={\"top\"}  >\n                    <Button\n                        size=\"icon\"\n                        variant=\"ghost\"\n                        className={cn(\"size-6 text-primary opacity-0 group-hover:opacity-100\")}\n                        onClick={() => onDel(data.chunkIndex, data.text)}\n                    ><CircleX size={18} /></Button>\n                </Tip>\n            }\n        </div>\n\n        {/* 所见即所得Markdown编辑器 */}\n        <VditorEditor ref={vditorRef} hidden={edit} defalutValue={value} onChange={setDebounceValue} onBlur={handleBlurDebounced} />\n        {/* 普通Markdown编辑器 */}\n        <AceEditorCom hidden={!edit} markdown={value} onChange={setDebounceValue} onBlur={handleBlurDebounced} />\n    </div>\n}\n\n// 分段结果列表\nexport default function PreviewParagraph({ fileId, page = 1, previewCount, edit, fileSuffix, loading, chunks, className, onDel, onChange }) {\n    const { t } = useTranslation('knowledge');\n\n    const containerRef = useRef(null);\n    const [visibleItems, setVisibleItems] = useState(10); // 初始加载数量\n    const loadingRef = useRef(false);\n    // 选中的分段\n    const [selectedChunkIndex, setSelectedChunkIndex, setSelectedChunkDistanceFactor] = useKnowledgeStore((state) => [state.selectedChunkIndex, state.setSelectedChunkIndex, state.setSelectedChunkDistanceFactor]);\n    useEffect(() => {\n        const fun = () => setSelectedChunkIndex(-1) // 失焦\n        document.addEventListener('click', fun)\n        return () => document.removeEventListener('click', fun)\n    }, [])\n\n    useEffect(() => {\n        // 1. 重置懒加载计数（避免显示旧文件的前 N 项）\n        setVisibleItems(10);\n        // 2. 重置选中的分段（避免跨文件选中旧分段）\n        setSelectedChunkIndex(-1);\n        // 3. 重置滚动位置（避免新文件显示旧文件的滚动位置）\n        if (containerRef.current) {\n            containerRef.current.scrollTop = 0;\n        }\n    }, [page, fileId, setSelectedChunkIndex]);\n\n    // 懒加载逻辑\n    useEffect(() => {\n        const container = containerRef.current;\n        if (!container) return;\n        setVisibleItems(10)\n\n        const handleScroll = () => {\n            if (\n                !loadingRef.current &&\n                container.scrollHeight - container.scrollTop <= container.clientHeight + 100\n            ) {\n                loadingRef.current = true;\n                setVisibleItems(prev => Math.min(prev + 10, chunks.length));\n                setTimeout(() => { loadingRef.current = false }, 300);\n            }\n        };\n        container.addEventListener('scroll', handleScroll);\n        return () => container.removeEventListener('scroll', handleScroll);\n    }, [chunks.length]);\n\n    return <div className=\"pt-3 relative w-full\">\n        {loading && (\n            <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        )}\n        <div ref={containerRef} className={`${className} overflow-y-auto`}\n            style={{ scrollbarWidth: 'thin' }}\n        >\n            <div className=\"space-y-6\">\n                {chunks.slice(0, visibleItems).map((chunk) => (\n                    edit\n                        ? <EditMarkdown\n                            key={fileId + previewCount + chunk.chunkIndex}\n                            data={chunk}\n                            fileSuffix={fileSuffix}\n                            active={selectedChunkIndex === chunk.chunkIndex}\n                            onClick={setSelectedChunkIndex}\n                            onPositionClick={setSelectedChunkDistanceFactor}\n                            oneLeft={chunks.length === 1}\n                            onDel={onDel}\n                            onChange={onChange}\n                        />\n                        : <MarkdownView key={fileId + previewCount + chunk.chunkIndex} data={chunk} />\n                ))}\n                {!(chunks.length || loading) && <div className=\"p-4 bg-white rounded-lg shadow-sm border border-gray-200 hover:shadow-md hover:border-primary transition-shadow text-sm text-gray-500 flex gap-2 mb-1\">\n                    {t('noAnalysisResult')}\n                </div>}\n            </div>\n        </div>\n    </div>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/PreviewResult.tsx",
    "content": "import { FileIcon } from \"@/components/bs-icons/file\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue\n} from \"@/components/bs-ui/select\";\nimport { delChunkInPreviewApi, previewFileSplitApi, updatePreviewChunkApi } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { cn } from \"@/util/utils\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport useKnowledgeStore from \"../useKnowledgeStore\";\nimport PreviewFile from \"./PreviewFile\";\nimport PreviewParagraph from \"./PreviewParagraph\";\n\ninterface IProps {\n  rules: any;\n  step: number;\n  /** 刷新 */\n  previewCount: number;\n  applyEachCell: boolean;\n  cellGeneralConfig: any;\n  handlePreviewResult: (isSuccess: boolean) => void;\n  kId?: string | number;\n  showPreview?: boolean;\n  onDeleteFile?: (filePath: string) => void;\n}\nexport type Partition = {\n  [key in string]: { text: string, type: string, part_id: string }\n}\nexport default function PreviewResult({\n  showPreview, previewCount, rules, resultFiles, step, applyEachCell, cellGeneralConfig, kId, handlePreviewResult, onDeleteFile\n}: IProps) {\n  const { id } = useParams()\n\n  const [chunks, setChunks] = useState([]) // 当前文件分块\n  const [partitions, setPartitions] = useState<Partition>(null) // 当前文件分区\n  const [selectId, setSelectId] = useState(''); // 当前选择文件id\n  const [syncChunksSelectId, setSelectIdSyncChunks] = useState(''); // 当前选择文件id(与chunk更新保持同步)\n  const [etl, setEtl] = useState<string>('')\n  useEffect(() => {\n    const file = rules.fileList[0]\n    setSelectId(file.id)\n  }, [])\n  const currentFile = useMemo(() => {  // 当前选择文件\n    const _currentFile = rules.fileList.find(file => file.id === selectId)\n    // 触发keydown事件,切换tab\n    if (_currentFile) {\n      const dom = document.getElementById(_currentFile.fileType === 'table' ? 'knowledge_table_tab' : 'knowledge_file_tab')\n      const keydownEvent = new KeyboardEvent('keydown', {\n        key: 'Enter',\n        code: 'Enter',\n        keyCode: 13,\n        which: 13,\n        bubbles: true,\n        cancelable: true\n      });\n      dom && dom.dispatchEvent(keydownEvent);\n    }\n    return _currentFile\n  }, [selectId])\n  const [fileViewUrl, setFileViewUrl] = useState<{ load: boolean; url: string }>({ load: true, url: '' }) // 当前选择文件预览url\n\n  const [loading, setLoading] = useState(false)\n  const prevPreviewCountMapRef = useRef({})\n  useEffect(() => {\n    if (!selectId) return;\n\n    // 初始化状态（与原逻辑一致）\n    setTimeout(() => {\n      setLoading(true);\n    }, 0);\n    setFileViewUrl({ load: true, url: '' });\n    setChunks([]);\n\n    // 合并配置（与原逻辑一致）\n    const { fileList, pageHeaderFooter, chunkOverlap, chunkSize, enableFormula, forceOcr, knowledgeId, retainImages, separator, separatorRule } = rules;\n    const currentFile = fileList.find(file => file.id === selectId);\n    let preview_url;\n    if (showPreview) {\n      preview_url = currentFile.previewUrl || currentFile?.filePath;\n    } else {\n      preview_url = currentFile?.filePath;\n    }\n    const normalizeSeparators = (arr) => (arr || []).map((s) =>\n      typeof s === 'string' ? s.replace(/\\\\n/g, '\\n') : s\n    );\n\n    // 存储当前请求的 cancel 函数，用于组件卸载时取消\n    let cancelFn;\n\n    // 调用 SSE 版本的接口\n    cancelFn = previewFileSplitApi(\n      {\n        cache: prevPreviewCountMapRef.current[currentFile.id] === previewCount,\n        knowledge_id: id || kId,\n        file_list: [{\n          file_path: preview_url,\n          excel_rule: applyEachCell ? currentFile.excelRule : { ...cellGeneralConfig }\n        }],\n        separator: normalizeSeparators(separator),\n        separator_rule: separatorRule,\n        chunk_size: chunkSize,\n        chunk_overlap: chunkOverlap,\n        retain_images: retainImages,\n        enable_formula: enableFormula,\n        force_ocr: forceOcr,\n        fileter_page_header_footer: pageHeaderFooter\n      },\n      (eventType, data) => {\n        switch (eventType) {\n          case 'processing':\n            break;\n          case 'completed':\n            setEtl(data.parse_type)\n            // 解析完成：处理结果（对应原 .then(res) 逻辑）\n            handlePreviewResult(true);\n            setChunks(data.chunks.map(chunk => ({\n              bbox: chunk.metadata.bbox,\n              activeLabels: {},\n              chunkIndex: chunk.metadata.chunk_index,\n              page: chunk.metadata.page,\n              text: chunk.text\n            })));\n            setSelectIdSyncChunks(selectId);\n            setFileViewUrl({ load: false, url: data.file_url });\n            setPartitions(data.partitions);\n            setLoading(false);\n            break;\n          case 'error':\n            // 解析错误：处理错误（对应原 error 回调逻辑）\n            handlePreviewResult(false);\n            setFileViewUrl({ load: false, url: '' });\n            setLoading(false);\n            // 原错误处理逻辑：支持的文件类型显示原文件预览\n            if ([\"pdf\", \"txt\", \"md\", \"html\", \"docx\", \"png\", \"jpg\", \"jpeg\", \"bmp\"].includes(currentFile.suffix)) {\n              setFileViewUrl({ load: false, url: currentFile.filePath });\n            }\n            // 调用原错误提示高阶函数（如果需要）\n            // captureAndAlertRequestErrorHoc 可能需要调整为接收错误对象\n            // captureAndAlertRequestErrorHoc(null, data);\n            console.error('解析错误：', data.code, data.message);\n            break;\n          case 'canceled':\n            // 被新请求取消：关闭 loading\n            setLoading(false);\n            break;\n        }\n      }\n    );\n\n    // 组件卸载时取消请求\n    return () => {\n      if (cancelFn) {\n        cancelFn(); // 取消当前 SSE 连接\n      }\n    };\n\n  }, [selectId, previewCount]);\n\n  const handleDelete = async (chunkIndex: number, text: string) => {\n    const filePath = rules.fileList.find(file => file.id === selectId)?.filePath\n    await captureAndAlertRequestErrorHoc(delChunkInPreviewApi({\n      knowledge_id: id || kId,\n      file_path: filePath,\n      text: text,\n      chunk_index: chunkIndex\n    }))\n    const res = chunks.filter(chunk => chunk.chunkIndex !== chunkIndex)\n    setChunks(res)\n  }\n\n  // 更新分段\n  const selectedBbox = useKnowledgeStore((state) => state.selectedBbox);\n  const handleChunkChange = (chunkIndex, text) => {\n\n    const existingBbox = chunks[chunkIndex]?.bbox ? JSON.parse(chunks[chunkIndex].bbox) : { chunk_bboxes: [] };\n    const targetChunkBboxes = selectedBbox && selectedBbox.length > 0\n      ? selectedBbox\n      : existingBbox.chunk_bboxes;\n    const bbox = {\n      chunk_bboxes: targetChunkBboxes\n    };\n\n    updatePreviewChunkApi({\n      knowledge_id: Number(id) || kId, file_path: currentFile.filePath, chunk_index: chunkIndex, text, bbox: JSON.stringify(bbox)\n    })\n    setChunks(chunks => chunks.map(chunk => chunk.chunkIndex === chunkIndex ? { ...chunk, text } : chunk))\n  }\n\n  return (<div className={cn(\"h-full flex gap-2 justify-center\", \"w-full\")}>\n    {(step === 3 || step === 2 && !previewCount) && currentFile && !loading && <PreviewFile\n      urlState={fileViewUrl}\n      file={currentFile}\n      resultFiles={resultFiles}\n      etl={etl}\n      step={step}\n      chunks={chunks}\n      setChunks={setChunks}\n      partitions={partitions}\n    />}\n    <div className={cn('relative', \"w-full\")}>\n      {/* 下拉框 - 右上角 */}\n      {(step === 3 || (step === 2 && showPreview)) && (\n        <div className=\"flex justify-end\">\n          <Select value={selectId} onValueChange={setSelectId}>\n            <SelectTrigger className=\"w-72\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              {rules.fileList.map((file, index) => (\n                <SelectItem key={file.id} value={file.id}>\n                  <div className=\"flex items-center gap-2\">\n                    <FileIcon type={file.suffix} className=\"size-4 min-w-4\" />\n                    {file.fileName}\n                  </div>\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>)\n      }\n      {/* 其他内容 */}\n      <PreviewParagraph\n        fileId={syncChunksSelectId}\n        fileSuffix={currentFile?.suffix}\n        previewCount={previewCount}\n        className=\"h-[calc(100vh-284px)]\"\n        edit={step === 3 || (step === 2 && !showPreview)}\n        loading={loading}\n        chunks={chunks}\n        onDel={handleDelete}\n        onChange={handleChunkChange}\n      />\n    </div>\n  </div>\n  )\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/RuleFile.tsx",
    "content": "import { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useContext, useMemo, useEffect, useState, useRef, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FileUploadSplitStrategy from \"./FileUploadSplitStrategy\";\nimport { QuestionTooltip, Tooltip, TooltipContent, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { cn } from \"@/utils\";\nimport { CircleHelp } from \"lucide-react\";\n\n// Utility function: Convert 1/0 or boolean values to standard boolean\nconst toBoolean = (value) => {\n  if (value === undefined || value === null) return false;\n  if (typeof value === \"number\") return value === 1;\n  if (typeof value === \"string\") return value.toLowerCase() === \"true\";\n  return Boolean(value);\n};\n\n// Utility function: Convert camelCase to snake_case\nconst camelToSnake = (str) => {\n  return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n};\n\n// Generate stable strategy ID (based on content hash)\nconst getStrategyId = (regexStr, position) => {\n  let hash = 0;\n  const str = `${regexStr}-${position}`;\n  for (let i = 0; i < str.length; i++) {\n    hash = ((hash << 5) - hash) + str.charCodeAt(i);\n    hash = hash & hash;\n  }\n  return `strategy-${Math.abs(hash)}`;\n};\n\ninterface RuleFileProps {\n  rules: any;\n  setRules: (updater: any) => void;\n  strategies?: any[];\n  setStrategies?: (newStrategies: any[]) => void;\n  originalSplitRule?: any;\n  setOriginalSplitRule?: (updater: any) => void;\n  isAdjustMode?: boolean;\n  showPreview?: boolean;\n  isEtl4lm?: boolean;\n}\n\nexport default function RuleFile({\n  rules,\n  setRules,\n  strategies = [],\n  setStrategies = () => { },\n  originalSplitRule,\n  setOriginalSplitRule = () => { },\n  isAdjustMode = false,\n  showPreview = false,\n  isEtl4lm = false\n}: RuleFileProps) {\n\n  const { appConfig } = useContext(locationContext);\n  const { t } = useTranslation('knowledge');\n\n  // Safely parse originalSplitRule\n  const parsedOriginalSplitRule = useMemo(() => {\n    if (!originalSplitRule) return {};\n    if (typeof originalSplitRule === 'string') {\n      try {\n        const parsed = JSON.parse(originalSplitRule);\n        return typeof parsed === 'object' && parsed !== null ? parsed : {};\n      } catch (e) {\n        console.error('Failed to parse originalSplitRule:', e);\n        return {};\n      }\n    }\n    return typeof originalSplitRule === 'object' ? { ...originalSplitRule } : {};\n  }, [originalSplitRule]);\n\n  // Calculate current values\n  const currentRules = useMemo(() => {\n    const baseRules = isAdjustMode ? parsedOriginalSplitRule : { ...rules };\n\n    return {\n      chunkSize: String(baseRules.chunk_size ?? baseRules.chunkSize ?? \"1000\"),\n      chunkOverlap: String(baseRules.chunk_overlap ?? baseRules.chunkOverlap ?? \"0\"),\n      retainImages: toBoolean(baseRules.retain_images ?? baseRules.retainImages),\n      forceOcr: toBoolean(baseRules.force_ocr ?? baseRules.forceOcr),\n      enableFormula: toBoolean(baseRules.enable_formula ?? baseRules.enableFormula),\n    };\n  }, [isAdjustMode, parsedOriginalSplitRule, rules]);\n\n  // Internal state synchronization with external state\n  const [internalValues, setInternalValues] = useState(currentRules);\n  const prevRulesRef = useRef(currentRules);\n\n  useEffect(() => {\n    if (JSON.stringify(prevRulesRef.current) !== JSON.stringify(currentRules)) {\n      setInternalValues(currentRules);\n      prevRulesRef.current = currentRules;\n    }\n  }, [currentRules]);\n\n  // Use useEffect to monitor changes in originalSplitRule\n  useEffect(() => {\n    console.log('originalSplitRule updated:', originalSplitRule);\n  }, [originalSplitRule]);\n\n  // Strategy initialization\n  const hasInitialized = useRef(false);\n  useEffect(() => {\n    if (!isAdjustMode || hasInitialized.current) return;\n\n    const validSeparatorPairs = (parsedOriginalSplitRule.separator || [])\n      .map((regexStr, index) => ({\n        regexStr: String(regexStr || '').trim(),\n        position: (parsedOriginalSplitRule.separator_rule || [])[index] || 'after'\n      }))\n      .filter(pair => pair.regexStr);\n\n    if (validSeparatorPairs.length > 0) {\n      const regexToRuleMap = {\n        '\\\\n': t('singleNewlineRule'),\n        '\\\\n\\\\n': t('doubleNewlineRule'),\n        '第.{1,3}章': t('chapterRule'),\n        '第.{1,3}条': t('articleRule'),\n        '。': t('chinesePeriodRule'),\n        '\\\\.': t('englishPeriodRule')\n      };\n\n      const convertedStrategies = validSeparatorPairs.map((pair) => ({\n        id: getStrategyId(pair.regexStr, pair.position),\n        regex: pair.regexStr,\n        position: pair.position,\n        rule: regexToRuleMap[pair.regexStr] || t('customRule', { regex: pair.regexStr })\n      }));\n\n      setStrategies(convertedStrategies);\n    }\n\n    hasInitialized.current = true;\n  }, [isAdjustMode, parsedOriginalSplitRule, setStrategies, t]);\n\n  // Core fix: Handle input box and checkbox value changes\n  const handleSettingChange = useCallback((key, value) => {\n    let rawValue;\n    if (value?.target?.type === 'checkbox') {\n      rawValue = value.target.checked;\n    } else if (value?.target?.value !== undefined) {\n      rawValue = value.target.value;\n    } else {\n      rawValue = value;\n    }\n\n    // Update UI\n    setInternalValues(prev => ({ ...prev, [key]: rawValue }));\n\n    if (isAdjustMode) {\n      const snakeKey = camelToSnake(key);\n\n      let storedValue;\n      if (typeof rawValue === 'boolean') {\n        storedValue = rawValue;\n      } else if (key === 'chunkSize' || key === 'chunkOverlap') {\n        storedValue = rawValue === '' ? (key === 'chunkSize' ? 1000 : 0) : Number(rawValue);\n      } else {\n        storedValue = rawValue;\n      }\n\n      // Directly update original split rule\n      setOriginalSplitRule(prev => {\n        const current = typeof prev === 'string'\n          ? (() => { try { return JSON.parse(prev); } catch { return {}; } })()\n          : (prev || {});\n\n        const updated = { ...current, [snakeKey]: storedValue };\n        console.log('Updated value:', updated);\n        return updated; // Ensure updated object is returned\n      });\n    } else {\n      setRules(prev => ({ ...(prev || {}), [key]: rawValue }));\n    }\n  }, [isAdjustMode, setOriginalSplitRule, setRules]);\n\n  // Strategy change handling\n  const handleStrategiesChange = useCallback((newStrategies) => {\n    setStrategies(newStrategies);\n\n    if (isAdjustMode) {\n      const separator = newStrategies.map(s => s.regex);\n      const separatorRule = newStrategies.map(s => s.position);\n\n      setOriginalSplitRule(prev => {\n        const current = typeof prev === 'string'\n          ? (() => { try { return JSON.parse(prev); } catch { return {}; } })()\n          : (prev || {});\n        return { ...current, separator, separator_rule: separatorRule };\n      });\n    }\n  }, [isAdjustMode, setOriginalSplitRule, setStrategies]);\n\n  return (\n    <div className=\"flex-1 flex flex-col relative max-w-[760px] mx-auto\">\n      <div className=\"flex flex-col gap-4\" style={{ gridTemplateColumns: '114px 1fr' }}>\n        <div className=\"space-y-4 p-4 border rounded-lg\">\n          <h3 className=\"font-bold text-gray-800 text-left text-md flex items-center\">\n            {t('splitSettings')}\n            <QuestionTooltip content={t('splitSettingsTooltip')} />\n          </h3>\n\n          <div className=\"flex gap-4\">\n            {/* Core modification: Adjust spacing based on showPreview */}\n            <div className={cn(\"w-1/2 flex items-center\", showPreview ? \"gap-0\" : \"gap-3\")}>\n              <Label htmlFor=\"splitLength\" className={cn(\"whitespace-nowrap text-sm min-w-[100px]\", showPreview ? \"-mr-4\" : \"\")}>\n                {t('splitLength')}\n              </Label>\n              <div className={cn('relative', showPreview ? \"pl-2\" : \"\")}>\n                <Input\n                  id=\"splitLength\"\n                  type=\"number\"\n                  step=\"100\"\n                  min={0}\n                  value={internalValues.chunkSize}\n                  onChange={(e) => handleSettingChange('chunkSize', e)}\n                  placeholder={t('splitSizePlaceholder')}\n                  className=\"flex-1 min-w-[150px]\"\n                  onBlur={(e) => {\n                    if (!e.target.value) {\n                      handleSettingChange('chunkSize', { target: { value: '1000' } });\n                    }\n                  }}\n                />\n                <span className=\"absolute right-8 top-1/2 -translate-y-1/2 text-gray-400\">{t('characters')}</span>\n              </div>\n            </div>\n\n            {/* Core modification: Adjust spacing based on showPreview */}\n            <div className={cn(\"w-1/2 flex items-center\", showPreview ? \"gap-0\" : \"gap-3\")}>\n              <Label htmlFor=\"chunkOverlap\" className={cn(\"whitespace-nowrap text-sm min-w-[100px]\", showPreview ? \"-mr-5\" : \"\")}>\n                {t('chunkOverlap')}\n              </Label>\n              <div className=\"relative\">\n                <Input\n                  id=\"chunkOverlap\"\n                  type=\"number\"\n                  step=\"10\"\n                  min={0}\n                  value={internalValues.chunkOverlap}\n                  onChange={(e) => handleSettingChange('chunkOverlap', e)}\n                  placeholder={t('chunkOverlapPlaceholder')}\n                  className=\"flex-1 min-w-[150px]\"\n                  onBlur={(e) => {\n                    if (!e.target.value) {\n                      handleSettingChange('chunkOverlap', { target: { value: '0' } });\n                    }\n                  }}\n                />\n                <span className=\"absolute right-8 top-1/2 -translate-y-1/2 text-gray-400\">{t('characters')}</span>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"flex items-center gap-2 pt-2\">\n            <Checkbox\n              id=\"retainImages\"\n              checked={internalValues.retainImages}\n              onCheckedChange={(e) => handleSettingChange('retainImages', e)}\n            />\n            <Label htmlFor=\"retainImages\" className=\"text-sm text-gray-700 flex items-center gap-1\">\n              {t('keepImages')}\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <CircleHelp className=\"w-3.5 h-3.5 text-muted-foreground\" />\n                </TooltipTrigger>\n                <TooltipContent>\n                  <div className=\"max-w-96 text-left break-all whitespace-normal\">{t('retainImagesTooltip')}</div>\n                </TooltipContent>\n              </Tooltip>\n            </Label>\n          </div>\n        </div>\n\n        <div className=\"p-4 border rounded-lg\">\n          <Label htmlFor=\"splitMethod\" className=\"flex justify-start text-md text-left font-bold text-gray-800\">\n            {t('splitMethod')}\n            <QuestionTooltip content={t('splitMethodTooltip')} />\n          </Label>\n          <FileUploadSplitStrategy data={strategies} onChange={handleStrategiesChange} />\n        </div>\n\n        {(appConfig.enableEtl4lm && rules.fileList.some(item => item.suffix === 'pdf')) && (\n          <div className=\"space-y-4 p-4 border rounded-lg\">\n            <h3 className=\"text-md font-bold text-gray-800 text-left \">{t('pdfAnalysis')}</h3>\n            <div className=\"flex items-center gap-2 pt-2\">\n              <Checkbox\n                id=\"forceOcr\"\n                checked={internalValues.forceOcr}\n                onCheckedChange={(e) => handleSettingChange('forceOcr', e)}\n              />\n              <Label htmlFor=\"forceOcr\" className=\"text-sm text-gray-700 flex items-center gap-1\">\n                {t('ocrForce')}\n                <Tooltip>\n                  <TooltipTrigger asChild>\n                    <CircleHelp className=\"w-3.5 h-3.5 text-muted-foreground\" />\n                  </TooltipTrigger>\n                  <TooltipContent>\n                    <div className=\"max-w-96 text-left break-all whitespace-normal\">{t('ocrForceTip')}</div>\n                  </TooltipContent>\n                </Tooltip>\n              </Label>\n              <Checkbox\n                id=\"enableFormula\"\n                checked={internalValues.enableFormula}\n                onCheckedChange={(e) => handleSettingChange('enableFormula', e)}\n              />\n              <Label htmlFor=\"enableFormula\" className=\"text-sm text-gray-700\">{t('enableRec')}</Label>\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/RuleTable.tsx",
    "content": "import { FileIcon } from \"@/components/bs-icons/file\";\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/bs-ui/accordion\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { cn } from \"@/util/utils\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\n\nconst ItemForm = ({ data, setData }) => {\n  const { t } = useTranslation('knowledge')\n\n  return <div className=\"space-y-4 text-sm\">\n    {/* 第一行：第一个输入框独立显示 */}\n    <div className=\"flex items-center gap-3\">\n      <Label className=\"min-w-[124px] text-left text-sm whitespace-nowrap\">\n        {t('split')}\n      </Label>\n      <div className=\"flex items-center gap-2\">\n        <span>{t('every')}</span>\n        <div className=\"relative\">\n          <Input\n            type=\"number\"\n            min={1}\n            // max={1000}\n            maxLength={6}\n            value={data.slice_length}\n            onChange={e => setData('slice_length', e.target.value)}\n            className=\"w-28 h-8\"\n            onBlur={(e) => {\n              !e.target.value && setData('slice_length', 10);\n            }}\n          />\n          <span className=\"absolute right-8 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n        </div>\n        <span>{t('segemnt')}</span>\n      </div>\n    </div>\n\n    {/* 第二行：第二个输入框与勾选框组合 */}\n    <div className=\"flex items-center gap-4\">\n      <div className=\"flex items-center gap-2\">\n        <Checkbox\n          checked={data.append_header}\n          onCheckedChange={(checked) => setData('append_header', checked)}\n        />\n        <Label className=\"text-sm\"> {t(\"addHeader\")} </Label>\n      </div>\n      <div className={cn(\"flex items-center gap-3\", !data.append_header && \"opacity-0\")}>\n        <span>{t('bonly')}</span>\n        <div className=\"relative\">\n          <Input\n            type=\"number\"\n            min={1}\n            max={1000}\n            maxLength={4}\n            value={data.header_start_row}\n            onChange={e => setData('header_start_row', e.target.value)}\n            onBlur={(e) => {\n              !e.target.value && setData('header_start_row', 1);\n            }}\n            className=\"w-28 h-8\"\n          />\n          <span className=\"absolute right-8 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n        </div>\n        <span>{t('arrive')}</span>\n        <div className=\"relative\">\n          <Input\n            type=\"number\"\n            min={1}\n            max={1000}\n            maxLength={4}\n            value={data.header_end_row}\n            onChange={e => setData('header_end_row', e.target.value)}\n            onBlur={(e) => {\n              !e.target.value && setData('header_end_row', 1);\n            }}\n            className=\"w-28 h-8\"\n          />\n          <span className=\"absolute right-8 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n        </div>\n        <span>{t('gauge')}</span>\n      </div>\n    </div>\n  </div>\n}\n\n\n\ninterface RuleTableProps {\n  rules: any;\n  setRules: (updater: any) => void;\n  applyEachCell: boolean;\n  setApplyEachCell: (checked: boolean) => void;\n  cellGeneralConfig: any;\n  setCellGeneralConfig: (updater: any) => void;\n  showPreview?: boolean;\n}\n\nexport default function RuleTable({\n  rules,\n  setRules,\n  applyEachCell,\n  setApplyEachCell,\n  cellGeneralConfig,\n  setCellGeneralConfig,\n  showPreview,\n}: RuleTableProps) {\n  const { t } = useTranslation('knowledge')\n\n  console.log('rules.fileList :>> ', rules.fileList);\n  const tableFils = useMemo(() => {\n    return rules.fileList.filter(item => item.fileType === 'table')\n  }, [rules.fileList])\n\n  return (\n    <div className=\"flex-1 flex flex-col relative min-w-[600px] max-w-[760px] mx-auto\">\n      <div\n        className=\"flex flex-col gap-4\"\n        style={{ gridTemplateColumns: '114px 1fr' }}\n      >\n        <div className=\"flex justify-end items-center gap-2\">\n          <Checkbox checked={applyEachCell} onCheckedChange={setApplyEachCell} />\n          <Label htmlFor=\"setSeparately\" className=\"text-sm text-gray-700\"> {t('setSeparately')} </Label>\n        </div>\n\n        {applyEachCell ? (\n          <div>\n            <div className=\"relative after:absolute after:inset-0 after:bg-accent/50 after:z-10 after:pointer-events-none\">\n              {/* 当 showPreview 为 true 时使用垂直布局，否则保持原有水平布局 */}\n              <div className={showPreview ? \"flex flex-col p-4 border rounded-lg text-sm\" : \"flex items-center justify-between p-4 border rounded-lg text-sm\"}>\n                {/* 第一行：始终显示标题 */}\n                <h3 className=\"text-md font-bold shrink-0 text-gray-500\">\n                  {t('splitSettings')}\n                </h3>\n\n                {/* 第二行：包含其他内容，仅在 showPreview 为 true 时添加额外样式 */}\n                <div className={showPreview ? \"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-2 w-full\" : \"flex items-center gap-1 mx-auto\"}>\n                  <div className=\"flex items-center gap-1 w-full sm:w-auto\">\n                    <span className=\"whitespace-nowrap text-gray-500\">{t('every')}</span>\n                    <div className=\"relative\">\n                      <Input\n                        id=\"split\"\n                        type=\"number\"\n                        value={cellGeneralConfig.slice_length}\n                        disabled={true}\n                        className=\"w-[106px] h-8\"\n                      />\n                      <span className=\"absolute right-7 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n                    </div>\n                    <span className=\"whitespace-nowrap text-gray-500\">{t('segemnt')}</span>\n                  </div>\n\n                  {cellGeneralConfig.append_header ? (\n                    <div className=\"flex items-center gap-1 shrink-0 w-full sm:w-auto mt-2 sm:mt-0\">\n                      <span className=\"whitespace-nowrap text-gray-500\">{t('bonly')}</span>\n                      <div className=\"relative\">\n                        <Input\n                          id=\"split\"\n                          type=\"number\"\n                          value={cellGeneralConfig.header_start_row}\n                          disabled={true}\n                          className=\"w-24 h-8\"\n                        />\n                        <span className=\"absolute right-7 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n                      </div>\n                      <span className=\"whitespace-nowrap text-gray-500\">{t('arrive')}</span>\n                      <div className=\"relative\">\n                        <Input\n                          id=\"split\"\n                          type=\"number\"\n                          value={cellGeneralConfig.header_end_row}\n                          disabled={true}\n                          className=\"w-24 h-8\"\n                        />\n                        <span className=\"absolute right-7 top-1/2 -translate-y-1/2 text-gray-400\">{t('row')}</span>\n                      </div>\n                      <span className=\"whitespace-nowrap text-gray-500\">{t('gauge')}</span>\n                    </div>\n                  ) : (\n                    <div className=\"flex items-center gap-2 w-full sm:w-auto mt-2 sm:mt-0\">\n                      <Checkbox disabled={true} />\n                      <Label className=\"text-sm\"> {t(\"addHeader\")} </Label>\n                    </div>\n                  )}\n                </div>\n              </div>\n            </div>\n            {/* splice rule */}\n            <div className=\"space-y-4 mt-4 p-4 border rounded-lg bg-main shadow-sm\">\n              <h3 className=\"text-md font-bold text-foreground text-left\">\n                {t('splitMethod')}\n              </h3>\n              <div className=\"relative mt-2 pr-2 overflow-y-auto max-h-[440px]\">\n                <Accordion\n                  type=\"single\"\n                  collapsible\n                  className=\"w-full mb-4\"\n                >\n                  {tableFils.map((file) => (\n                    <AccordionItem key={file.id} value={file.id} className=\"border border-gray/80 rounded-xl mb-2 hover:border-primary hover:shadow-lg\">\n                      {/* 下拉触发按钮 */}\n                      <AccordionTrigger hoverable className=\"p-0 cursor-pointer relative overflow-hidden flex flex-row-reverse justify-between\">\n                        <Tip content={file.fileName} align=\"start\">\n                          <p className=\"flex gap-2 p-2 items-center relative\">\n                            <FileIcon type='xls' className=\"size-[30px] min-w-8\" />\n                            <span className=\"w-80 truncate text-left\">{file.fileName.slice(0, 15)}{file.fileName.length > 15 ? '...' : ''}</span>\n                          </p>\n                        </Tip>\n                      </AccordionTrigger>\n                      <AccordionContent className=\"flex flex-col gap-4 p-4\">\n                        <ItemForm data={file.excelRule} setData={(key, value) => {\n                          setRules((prev) => {\n                            return {\n                              ...prev,\n                              fileList: prev.fileList.map((item) => {\n                                return item.id === file.id ? {\n                                  ...item,\n                                  excelRule: {\n                                    ...item.excelRule,\n                                    [key]: value\n                                  }\n                                } : item\n                              })\n                            }\n                          })\n                        }} />\n                      </AccordionContent>\n                    </AccordionItem>\n                  ))}\n                </Accordion>\n              </div>\n            </div>\n          </div>\n        ) : (\n          // 全局配置\n          <div className=\"space-y-4 p-4 border rounded-lg\">\n            <h3 className=\"text-md font-bold text-gray-800 text-left\"> {t('splitSettings')} </h3>\n            <div className=\"flex flex-col gap-4\">\n              <ItemForm data={cellGeneralConfig} setData={(key, value) => setCellGeneralConfig(prev => ({\n                ...prev,\n                [key]: value\n              }))} />\n            </div>\n          </div>)}\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/components/TxtFileViewer.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { MarkdownView } from './PreviewParagraph';\n\nconst TxtFileViewer = ({ html = false, markdown = false, filePath }) => {\n    const [content, setContent] = useState('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n\n    useEffect(() => {\n        const fetchTextFile = async () => {\n            try {\n                setLoading(true);\n                const response = await fetch(filePath.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL));\n\n                if (!response.ok) {\n                    throw new Error(`Failed to fetch file: ${response.status} ${response.statusText}`);\n                }\n\n                const text = await response.text();\n                setContent(text);\n                setError(null);\n            } catch (err) {\n                setError(err.message);\n                setContent('');\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchTextFile();\n    }, [filePath]);\n\n    if (loading) {\n        return (\n            <div className=\"p-4 text-sm text-gray-500\">\n                Loading text file...\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"p-4 text-sm text-red-500\">\n                Error loading file: {error}\n            </div>\n        );\n    }\n\n    if (markdown) return <MarkdownView noHead data={{ text: content }} />\n\n    if (html) return <iframe\n        className=\"w-full h-full border\"\n        srcDoc={content}  // 使用srcdoc直接嵌入HTML内容\n        sandbox=\"allow-scripts\"\n    />\n\n    return (\n        <div className=\"p-4 text-sm whitespace-pre-wrap bg-gray-50 rounded border border-gray-200 h-full overflow-y-auto\">\n            {content || <span className=\"text-gray-400\">(Empty file)</span>}\n        </div>\n    );\n};\n\nexport default TxtFileViewer;"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/detail.tsx",
    "content": "import { Tabs, TabsContent } from \"@/components/bs-ui/tabs\";\nimport { useState } from \"react\";\nimport Files from \"./components/Files\";\nimport Header from \"./components/Header\";\nimport Paragraphs from \"./components/Paragraphs\";\n\nexport default function FilesPage() {\n    const [value, setValue] = useState('file')\n    const [fileId, setFileId] = useState('')\n    const [fileTitle, setFileTitle] = useState(true);\n\n    const onPreview = (id: string) => {\n        setFileId(id)\n        setValue('chunk')\n        setFileTitle(false)\n    }\n    const handleBackFromChunk = () => {\n        if (value === 'chunk') {\n            setValue('file');\n            setFileId('');\n            setFileTitle(true)\n        }\n    };\n    return <div className=\"size-full px-2 relative bg-background-login\">\n        {/* tab */}\n        <Tabs value={value} onValueChange={(v) => {\n            setValue(v);\n            setFileId('');\n            if (v === 'file') {\n                setFileTitle(true);\n            } else {\n                setFileTitle(false);\n            }\n        }}>\n            <TabsContent value=\"file\" className=\"mt-0\">\n                <div className=\"flex justify-between w-1/2 pt-4\">\n                    <Header fileTitle={fileTitle} showBackButton={true} />\n                </div>\n                <Files onPreview={onPreview} />\n            </TabsContent>\n            <TabsContent value=\"chunk\" className=\"mt-0\">\n                <Paragraphs fileId={fileId} onBack={handleBackFromChunk} />\n            </TabsContent>\n        </Tabs>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/filesUpload.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport StepProgress from \"@/components/bs-ui/step\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { retryKnowledgeFileApi, subUploadLibFile } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ChevronLeft } from \"lucide-react\";\nimport { useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport DialogWithRepeatFiles from \"./components/DuplicateFileDialog\";\nimport FileUploadStep1 from \"./components/FileUploadStep1\";\nimport FileUploadStep2, { Step2PersistState } from \"./components/FileUploadStep2\";\nimport FileUploadStep4 from \"./components/FileUploadStep4\";\nimport PreviewResult from \"./components/PreviewResult\";\n\n// Normal mode fixed step labels (4 steps)\nconst getNormalStepLabels = (t) => [\n  t('uploadFile'),\n  t('segmentStrategy'),\n  t('textComparison'),\n  t('dataProcessing')\n];\n\nconst repeatFileI18nRmark = (files, t) => files.map(file => {\n  try {\n    const { new_name, old_name } = JSON.parse(file.remark);\n    return {\n      ...file,\n      remark: t('fileExists', { name1: new_name, name2: old_name })\n    }\n  } catch (e) {\n    return file;\n  }\n});\n\nexport default function FilesUpload() {\n  const { t } = useTranslation('knowledge');\n  const navigate = useNavigate();\n  const location = useLocation();\n  const { id: knowledgeId } = useParams(); // Get knowledge base ID from route\n  const { message } = useToast();\n\n  // Normal mode exclusive states (no adjustment mode related logic)\n  const [currentStep, setCurrentStep] = useState(1); // Initial step: 1 (upload file)\n  const [resultFiles, setResultFiles] = useState([]); // Uploaded file list\n  const [segmentRules, setSegmentRules] = useState(null); // Segmentation strategy config\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isNextDisabled, setIsNextDisabled] = useState(false);\n  const [repeatFiles, setRepeatFiles] = useState([]); // Duplicate file reminder\n  const [retryLoad, setRetryLoad] = useState(false);\n\n  // Key addition: Manage Step2's persistent state\n  const [step2PersistState, setStep2PersistState] = useState<Step2PersistState | undefined>();\n\n  // Ref management\n  const fileUploadStep2Ref = useRef(null); // Step2 (segmentation strategy) component reference\n  const _tempConfigRef = useRef({}); // Temporary storage of API config\n  const submittingRef = useRef(false); // Prevent duplicate submission\n  const repeatCallBackRef = useRef(() => setCurrentStep(4)); // Jump to step after duplicate file handling (4: data processing)\n  const isNextBtnClickRef = useRef(false); // Determine whether the next button is clicked\n  // Key addition: Receive Step2's state update, save to parent component\n  const handleStep2StateChange = (state: Step2PersistState) => {\n    setStep2PersistState(state);\n  };\n\n  // Step 1: File upload completed, jump to step 2\n  const handleStep1Next = async (files) => {\n    isNextBtnClickRef.current = true;\n\n    setResultFiles(files);\n\n    const _repeatFiles = files.filter(e => e.repeat);\n\n    if (_repeatFiles.length) {\n      setRepeatFiles(_repeatFiles.map(file => ({\n        ...file,\n        file_name: file.fileName,\n        remark: t('fileExists', { name1: file.fileName, name2: file.fileName })\n      })));\n    } else {\n      setCurrentStep(2);\n    }\n  };\n\n  // Step 2: Segmentation strategy completed, receive config and jump to step 3\n  const handleStep2Next = (step, config) => {\n    if (config) {\n      setSegmentRules(config);\n    }\n    setCurrentStep(3); // Fixed jump to step 3 (original text comparison)\n  };\n\n  // Step 3: Original text comparison callback, control next button disabled state\n  const handlePreviewResult = (isSuccess) => {\n    if (currentStep === 3) {\n      setIsNextDisabled(!isSuccess);\n    }\n  };\n\n  // Next: Jump based on current step\n  const handleNext = () => {\n    switch (currentStep) {\n      case 2: // Step 2 → Step 3 (segment → compare)\n        if (fileUploadStep2Ref.current) {\n          fileUploadStep2Ref.current.handleNext();\n        }\n        break;\n      case 3: // Step 3 → Step 4 (compare → process)\n        if (segmentRules) {\n          handleSave(segmentRules); // Save config\n        } else {\n          setCurrentStep(4);\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  // Previous: Rollback based on current step\n  const handleBack = () => {\n    switch (currentStep) {\n      case 1:\n        navigate(-1); // Step 1 rollback: return to knowledge base list\n        break;\n      case 2:\n        setCurrentStep(1); // Step 2 → Step 1\n        break;\n      case 3:\n        setCurrentStep(2); // Step 3 → Step 2\n        break;\n      case 4:\n        setCurrentStep(3); // Step 4 → Step 3\n        break;\n      default:\n        break;\n    }\n  };\n\n  // API: Save segmentation strategy config (normal mode exclusive)\n  const handleSave = (_config) => {\n    if (submittingRef.current) return setCurrentStep(4);\n    submittingRef.current = true;\n    setIsSubmitting(true);\n\n    /**\n     * Convert UI-visible newline escape sequences (\"\\\\n\") back to real newlines (\"\\n\")\n     */\n    const normalizeSeparators = (arr) =>\n      (arr || []).map((s) =>\n        typeof s === 'string' ? s.replace(/\\\\n/g, '\\n') : s\n      );\n\n    // Normal mode API parameter format\n    const apiConfig = {\n      knowledge_id: Number(_config.rules.knowledgeId || knowledgeId),\n      separator: normalizeSeparators(_config.rules.separator),\n      separator_rule: _config.rules.separatorRule,\n      chunk_size: _config.rules.chunkSize,\n      chunk_overlap: _config.rules.chunkOverlap,\n      file_list: _config.rules.fileList.map(item => ({\n        file_path: item.filePath,\n        excel_rule: _config.applyEachCell ? item.excelRule : _config.cellGeneralConfig\n      })),\n      retain_images: _config.rules.retainImages,\n      enable_formula: _config.rules.enableFormula,\n      force_ocr: _config.rules.forceOcr,\n      fileter_page_header_footer: _config.rules.pageHeaderFooter\n    };\n\n    captureAndAlertRequestErrorHoc(subUploadLibFile(apiConfig).then(res => {\n      const repeatFilesRes = res.filter(e => e.status === 3);\n      if (repeatFilesRes.length) {\n        const newRepeatFiles = repeatFilesRes.filter(file =>\n          // Same timestamp, no overwrite\n          !resultFiles.some(item => item.fileName === file.file_name && item.time && item.time === file.update_time))\n        setRepeatFiles(repeatFileI18nRmark(newRepeatFiles, t));\n        if (!newRepeatFiles.length) {\n          handleRetry(repeatFilesRes)\n        }\n      } else {\n        message({ variant: 'success', description: t('addSuccess') });\n      }\n\n      // Update file ID\n      setResultFiles(files => files.map((file, index) => ({\n        ...file,\n        fileId: res[index]?.id,\n        resultId: res[index]?.id\n      })));\n      setCurrentStep(4)\n    }).finally(() => {\n      submittingRef.current = false;\n      setIsSubmitting(false);\n    }));\n\n    _tempConfigRef.current = apiConfig;\n  };\n\n  // API: Save directly with default config in step 1 (normal mode exclusive)\n  const handleSaveByDefaultConfig = async (_config) => {\n    isNextBtnClickRef.current = false;\n\n    await captureAndAlertRequestErrorHoc(subUploadLibFile(_config).then(res => {\n      const _repeatFiles = res.filter(e => e.status === 3);\n      if (_repeatFiles.length) {\n        setRepeatFiles(repeatFileI18nRmark(_repeatFiles, t));\n        repeatCallBackRef.current = () => navigate(-1);\n      } else {\n        message({ variant: 'success', description: t('addSuccess') });\n        navigate(-1);\n      }\n    }));\n  };\n\n  function dedupeWithRemovedPaths(objs) {\n    const seenMap = new Map()\n    const removedPaths = {}\n\n    for (const item of objs) {\n      if (seenMap.has(item.id)) {\n        removedPaths[item.file_path] = true\n      } else {\n        seenMap.set(item.id, item)\n      }\n    }\n\n    return {\n      uniqueObjs: Array.from(seenMap.values()),\n      removedPaths,\n    }\n  }\n\n  // API: Retry duplicate files (overwrite upload)\n  const handleRetry = (objs) => {\n    if (currentStep === 1 && isNextBtnClickRef.current) {\n      setRepeatFiles([]);\n      return setCurrentStep(2);\n    }\n    setRetryLoad(true);\n    const { uniqueObjs, removedPaths } = dedupeWithRemovedPaths(objs)\n    const newResultFiles = resultFiles.filter(file => !removedPaths[file.file_path])\n    const newUniqueObjs = uniqueObjs.map(item => {\n      const file = newResultFiles.find(f => item.id === f.fileId || item.file_name === f.fileName)\n      return {\n        ...item,\n        file_path: file?.file_path,\n        file_name: file?.fileName,\n      }\n    })\n\n    const params = {\n      knowledge_id: Number(_tempConfigRef.current.knowledge_id),\n      separator: _tempConfigRef.current.separator,\n      separator_rule: _tempConfigRef.current.separator_rule,\n      chunk_size: _tempConfigRef.current.chunk_size,\n      chunk_overlap: _tempConfigRef.current.chunk_overlap,\n      file_objs: newUniqueObjs,\n    };\n\n    // When multiple identical files are uploaded, the files are deduplicated.\n    if (uniqueObjs.length !== objs.length) {\n      setResultFiles(newResultFiles);\n    }\n\n    captureAndAlertRequestErrorHoc(retryKnowledgeFileApi(params).then(res => {\n      setRepeatFiles([]);\n      setRetryLoad(false);\n      message({ variant: 'success', description: t('addSuccess') });\n      repeatCallBackRef.current();\n    }), () => {\n      setRetryLoad(false);\n    });\n  };\n\n  const handleUnRetry = () => {\n    const files = resultFiles.filter((item) => {\n      return repeatFiles.every((repeatItem) => {\n        return repeatItem.file_path !== item.file_path;\n      });\n    })\n    setResultFiles(files)\n\n    if (currentStep === 1) {\n      if (files.length === 0) {\n        return navigate(-1);\n      }\n      setRepeatFiles([]);\n      return setCurrentStep(2);\n    }\n    setTimeout(() => {\n      setRepeatFiles([]);\n      repeatCallBackRef.current();\n    }, 100);\n  }\n  return (\n    <div className=\"relative h-full flex flex-col\">\n      {/* Top return bar */}\n      <div className=\"pt-4 px-4\">\n        <div className=\"flex items-center mb-4\">\n          <Button\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"bg-main size-8\"\n            onClick={() => navigate(-1)}\n          >\n            <ChevronLeft />\n          </Button>\n          <span className=\"text-foreground text-sm font-black pl-4\">{t('backToKnowledge')}</span>\n        </div>\n\n        {/* Normal mode step progress (4 steps) */}\n        <StepProgress\n          align=\"center\"\n          currentStep={currentStep}\n          labels={getNormalStepLabels(t)}\n        />\n      </div>\n\n      {/* Step content area (normal mode exclusive steps) */}\n      <div className=\"flex flex-1 overflow-hidden px-4\">\n        <div className=\"w-full overflow-y-auto\">\n          <div className=\"h-full\">\n            {/* Step 1: File upload (normal mode exclusive) */}\n            {currentStep === 1 && (\n              <FileUploadStep1\n                onNext={handleStep1Next}\n                onSave={handleSaveByDefaultConfig}\n                kId={knowledgeId} // Pass knowledge base ID\n                initialFiles={resultFiles}\n              />\n            )}\n            {/* Step 2: Segmentation strategy - only added 2 props */}\n            {currentStep === 2 && (\n              <div className={currentStep === 2 ? \"block\" : \"hidden\"}>\n                <FileUploadStep2\n                  ref={fileUploadStep2Ref}\n                  step={currentStep}\n                  resultFiles={resultFiles}\n                  isSubmitting={isSubmitting}\n                  onNext={handleStep2Next}\n                  onPrev={handleBack}\n                  kId={knowledgeId}\n                  persistState={step2PersistState} // Added: Pass saved state\n                  onPersistStateChange={setStep2PersistState} // Added: Pass state update callback\n                />\n              </div>\n            )}\n\n\n            {/* Step 3: Original text comparison */}\n            {currentStep === 3 && segmentRules && (\n              <div className=\"block\"> {/* When step 3 is displayed, step 2 is hidden but not unmounted */}\n                <PreviewResult\n                  rules={segmentRules.rules}\n                  resultFiles={resultFiles}\n                  handlePreviewResult={handlePreviewResult}\n                  onPrev={handleBack}\n                  onNext={() => {\n                    handleSave(segmentRules);\n                  }}\n                  onDeleteFile={(filePath) => {\n                    setSegmentRules(prev => (\n                      {\n                        ...prev,\n                        rules: {\n                          ...prev.rules,\n                          fileList: prev.rules.fileList.filter(file => file.filePath !== filePath)\n                        }\n                      }\n                    ))\n                    setResultFiles(prev => (\n                      prev.filter(file => file.file_path !== filePath)\n                    ))\n                  }}\n                  step={currentStep}\n                  previewCount={0}\n                  applyEachCell={segmentRules.applyEachCell}\n                  cellGeneralConfig={segmentRules.cellGeneralConfig}\n                  kId={knowledgeId}\n                  showPreview={true}\n                />\n\n                {/* Step 3 bottom buttons */}\n                <div className=\"fixed bottom-2 right-12 flex gap-4 bg-background p-2 rounded-lg shadow-sm z-10\">\n                  <Button variant=\"outline\" onClick={handleBack}>\n                    {t('previousStep')}\n                  </Button>\n                  <Button onClick={handleNext} disabled={isNextDisabled || isSubmitting || resultFiles.length === 0}>\n                    {isSubmitting ? <LoadingIcon className=\"h-4 w-4 mr-1\" /> : null}\n                    {t('nextStep')}\n                  </Button>\n                </div>\n              </div>\n            )}\n\n\n            {/* Step 4: Data processing */}\n            {currentStep === 4 && (\n              <FileUploadStep4 data={resultFiles} hasRepeat={repeatFiles.length > 0} />\n            )}\n          </div>\n        </div>\n      </div>\n\n      {/* Duplicate file reminder dialog (shared for normal mode) */}\n      <DialogWithRepeatFiles\n        repeatFiles={repeatFiles}\n        setRepeatFiles={setRepeatFiles}\n        unRetry={handleUnRetry}\n        onRetry={handleRetry}\n        retryLoad={retryLoad}\n        t={t}\n      />\n    </div>\n  );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/index.tsx",
    "content": "import {\n    Tabs,\n    TabsContent,\n    TabsList,\n    TabsTrigger,\n} from \"../../components/bs-ui/tabs\";\n\nimport { useTranslation } from \"react-i18next\";\nimport KnowledgeFile from \"./KnowledgeFile\";\nimport KnowledgeQa from \"./KnowledgeQa\";\n\n\nexport default function index() {\n\n    const { t } = useTranslation();\n\n    const defaultValue = (() => {\n        const page = window.LibPage;\n        return page ? page.type : 'file'\n    })();\n\n    return (\n        <div className=\"w-full h-full px-2 pt-4 relative\">\n            <Tabs defaultValue={defaultValue} className=\"w-full mb-[40px]\">\n                <TabsList className=\"\">\n                    <TabsTrigger value=\"file\">{t('lib.fileData')}</TabsTrigger>\n                    <TabsTrigger value=\"qa\" className=\"roundedrounded-xl\">{t('lib.qaData')}</TabsTrigger>\n                </TabsList>\n                <TabsContent value=\"qa\">\n                    <KnowledgeQa />\n                </TabsContent>\n                <TabsContent value=\"file\">\n                    <KnowledgeFile />\n                </TabsContent>\n            </Tabs>\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/qas.tsx",
    "content": "import { checkSassUrl } from \"@/components/bs-comp/FileView\";\nimport { LoadIcon } from \"@/components/bs-icons\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { downloadFile, formatDate } from \"@/util/utils\";\nimport { ArrowLeft, SquareCheckBig, SquareX, Trash2 } from \"lucide-react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useParams } from \"react-router-dom\";\nimport ShadTooltip from \"../../components/ShadTooltipComponent\";\nimport { Button, LoadButton } from \"../../components/bs-ui/button\";\nimport { Input, InputList, SearchInput, Textarea } from \"../../components/bs-ui/input\";\nimport AutoPagination from \"../../components/bs-ui/pagination/autoPagination\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../components/bs-ui/table\";\nimport { deleteQa, generateSimilarQa, getQaDetail, getQaFile, getQaList, updateQa, updateQaStatus } from \"../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { useTable } from \"../../util/hook\";\nimport { ImportQa } from \"./components/ImportQa\";\n\nconst defaultQa = {\n    question: '',\n    similarQuestions: [''],\n    answer: ''\n}\n\n// 添加&编辑qa\nconst EditQa = forwardRef(function ({ knowlageId, onChange }, ref) {\n    const { t } = useTranslation('knowledge');\n    const [open, setOpen] = useState(false);\n    const [form, setForm] = useState({ ...defaultQa });\n    const [loading, setLoading] = useState(false);\n    const [error, setError] = useState({\n        question: false,\n        answer: false\n    });\n\n    const idRef = useRef('');\n    const sourceRef = useRef('');\n    useImperativeHandle(ref, () => ({\n        open() {\n            setOpen(true);\n        },\n        edit(item) {\n            const { id, source } = item;\n            idRef.current = id;\n            sourceRef.current = source;\n            setOpen(true);\n\n            getQaDetail(id).then(res => {\n                const { questions, answers } = res;\n                const [question, ...similarQuestions] = questions;\n                setForm({\n                    question,\n                    similarQuestions: [...similarQuestions, ''],\n                    answer: answers\n                });\n            });\n        }\n    }));\n\n    const handleInputChange = (e) => {\n        const { name, value } = e.target;\n        setForm((prevForm) => ({\n            ...prevForm,\n            [name]: value\n        }));\n    };\n\n    const handleSimilarQuestionsChange = (list) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            similarQuestions: list\n        }));\n    };\n\n    // 模型生成\n    const handleModelGenerate = async () => {\n        if (!form.question) {\n            return message({\n                variant: 'warning',\n                description: t('pleaseEnterQuestion')\n            });\n        }\n        setLoading(true);\n        captureAndAlertRequestErrorHoc(generateSimilarQa(form.question, form.answer).then(res => {\n            setForm((prevForm) => {\n                const updatedSimilarQuestions = [...prevForm.similarQuestions];\n                updatedSimilarQuestions.splice(updatedSimilarQuestions.length - 1, 0, ...res.questions);\n                return {\n                    ...prevForm,\n                    similarQuestions: updatedSimilarQuestions\n                };\n            });\n            setLoading(false);\n        }));\n    };\n\n    const { message } = useToast();\n    const [saveLoad, setSaveLoad] = useState(false);\n    const handleSubmit = async () => {\n        const isQuestionEmpty = !form.question.trim();\n        const isAnswerEmpty = !form.answer.trim();\n\n        if (isQuestionEmpty || isAnswerEmpty) {\n            setError({\n                question: isQuestionEmpty,\n                answer: isAnswerEmpty\n            });\n\n            return message({\n                variant: 'warning',\n                description: t('questionAndAnswerCannotBeEmpty')\n            });\n        }\n\n        const _similarQuestions = form.similarQuestions.filter((question) => question.trim() !== '');\n        if (_similarQuestions.some((q) => q.length > 100)) {\n            return message({\n                variant: 'warning',\n                description: t('max100CharactersForSimilarQuestion')\n            });\n        }\n        if (form.answer.length > 10000) {\n            return message({\n                variant: 'warning',\n                description: t('max1000CharactersForAnswer')\n            });\n        }\n\n        setSaveLoad(true);\n        await captureAndAlertRequestErrorHoc(updateQa(idRef.current, {\n            questions: [form.question, ..._similarQuestions],\n            answers: [form.answer],\n            knowledge_id: knowlageId,\n            source: sourceRef.current || 1\n        }));\n\n        onChange();\n        setSaveLoad(false);\n        close();\n    };\n\n    const close = () => {\n        idRef.current = '';\n        sourceRef.current = '';\n        setForm({ ...defaultQa });\n        setOpen(false);\n        setError({\n            question: false,\n            answer: false\n        });\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={(bln) => bln ? setOpen(bln) : close()}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{idRef.current ? t('updateQa') : t('createQa')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2\">\n                    <div>\n                        <label htmlFor=\"question\" className=\"bisheng-label\">\n                            <span className=\"text-red-500\">*</span>{t('question')}\n                        </label>\n                        <Input\n                            name=\"question\"\n                            className={`col-span-3 ${error.question && 'border-red-400'}`}\n                            value={form.question}\n                            onChange={handleInputChange}\n                        />\n                    </div>\n                    <div>\n                        <label htmlFor=\"similarQuestions\" className=\"bisheng-label\">{t('similarQuestions')}</label>\n                        <InputList\n                            className=\"max-h-60 overflow-y-auto\"\n                            value={form.similarQuestions}\n                            onChange={handleSimilarQuestionsChange}\n                        />\n                        <Button className=\"mt-2\" size=\"sm\" onClick={handleModelGenerate} disabled={loading}>\n                            {loading && <LoadIcon />} {t('aiGenerate')}\n                        </Button>\n                    </div>\n                    <div>\n                        <label htmlFor=\"answer\" className=\"bisheng-label\">\n                            <span className=\"text-red-500\">*</span>{t('answer')}\n                        </label>\n                        <Textarea\n                            name=\"answer\"\n                            className={`col-span-3 h-36 ${error.answer && 'border-red-400'}`}\n                            value={form.answer}\n                            onChange={handleInputChange}\n                        />\n                    </div>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={close}>\n                            {t('cancel2')}\n                        </Button>\n                    </DialogClose>\n                    <LoadButton loading={saveLoad} type=\"submit\" className=\"px-11\" onClick={handleSubmit}>\n                        {t('confirm')}\n                    </LoadButton>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\n\nexport default function QasPage() {\n    const { t } = useTranslation('knowledge')\n\n    const { id } = useParams()\n    const [title, setTitle] = useState('')\n    const [selectedItems, setSelectedItems] = useState([]);\n    const [selectAll, setSelectAll] = useState(false);\n    const editRef = useRef(null)\n    const importRef = useRef(null)\n    const [hasPermission, setHasPermission] = useState(false)\n    const { toast } = useToast();\n\n      const sourceTypeKeys = [\n        'source_unknown',      // 0: 未知\n        'source_manual',       // 1: 手动创建\n        'source_annotation_import', // 2: 标注导入\n        'source_api_import',   // 3: api导入\n        'source_batch_import'  // 4: 批量导入\n    ];\n\n    const { page, pageSize, data: datalist, total, loading, setPage, search, reload, refreshData } = useTable({}, (param) =>\n        getQaList(id, param).then(res => {\n            setHasPermission(res.writeable)\n            return res\n        })\n    )\n\n    // Polling effect to check if any item is in processing status\n    useEffect(() => {\n        const runing = datalist.some(item => item.status === 2)\n        if (runing) {\n            const timer = setTimeout(() => {\n                reload()\n            }, 5000)\n            return () => clearTimeout(timer)\n        }\n    }, [datalist])\n\n    // Modify useEffect to handle title processing\n    useEffect(() => {\n        // Handle potential format issues with window.libname\n        let libName = '';\n        if (window.libname) {\n            if (Array.isArray(window.libname) && window.libname.length > 0) {\n                libName = window.libname[0];\n            } else if (typeof window.libname === 'string') {\n                libName = window.libname;\n            }\n            // Store only the name in localStorage\n            localStorage.setItem('libname', libName);\n        } else {\n            libName = localStorage.getItem('libname') || '';\n        }\n        setTitle(libName || t('unknownKnowledgeBase')); // Provide default text\n    }, []);\n\n    const handleEnableSelected = async () => {\n        if (!selectedItems.length) return;\n\n        try {\n            const itemsToEnable = selectedItems.filter(id => {\n                const item = datalist.find(el => el.id === id);\n                return !item || item.status !== 1;\n            });\n\n            if (itemsToEnable.length === 0) {\n                toast({ variant: 'info', description: t('theSelectedItemsAlreadyEnabled') });\n                return;\n            }\n\n            refreshData(\n                item => itemsToEnable.includes(item.id),\n                { status: 2 } // Processing status\n            );\n\n            const results = await Promise.allSettled(\n                itemsToEnable.map(id => updateQaStatus(id, 1)) // 1 = Enable\n            );\n\n            const successCount = results.filter(res => res.status === 'fulfilled').length;\n            const failedIds = results\n                .filter(res => res.status === 'rejected')\n                .map((res, idx) => itemsToEnable[idx]);\n\n            await reload();\n            setSelectedItems([]);\n            setSelectAll(false);\n\n            if (successCount > 0) {\n                toast({ variant: 'success', description: t('successfullyEnabled', { count: successCount }) });\n            }\n            if (failedIds.length > 0) {\n                toast({\n                    variant: 'warning',\n                    description: t('someItemsFailedToEnable', { ids: failedIds.join(', ') })\n                });\n            }\n        } catch (error) {\n            toast({ variant: 'error', description: t('batchEnableOperationFailed') });\n        }\n    };\n\n    const handleDisableSelected = async () => {\n        if (!selectedItems.length) return;\n\n        try {\n            const itemsToDisable = selectedItems.filter(id => {\n                const item = datalist.find(el => el.id === id);\n                return !item || item.status !== 0; // 0 = Disabled\n            });\n\n            if (itemsToDisable.length === 0) {\n                toast({ variant: 'info', description: t('theSelectedItemsAlreadyDisabled') });\n                return;\n            }\n\n            const results = await Promise.allSettled(\n                itemsToDisable.map(id => updateQaStatus(id, 0))\n            );\n\n            const successCount = results.filter(res => res.status === 'fulfilled').length;\n            const failedIds = results\n                .filter(res => res.status === 'rejected')\n                .map((res, idx) => itemsToDisable[idx]);\n\n            await reload();\n            setSelectedItems([]);\n            setSelectAll(false);\n\n            if (successCount > 0) {\n                toast({ variant: 'success', description: t('successfullyDisabled', { count: successCount }) });\n            }\n            if (failedIds.length > 0) {\n                toast({\n                    variant: 'warning',\n                    description: t('someItemsFailedToDisable', { ids: failedIds.join(', ') })\n                });\n            }\n        } catch (error) {\n            toast({ variant: 'error', description: t('batchDisableOperationFailed') });\n        }\n    };\n\n    const handleCheckboxChange = (id) => {\n        setSelectedItems((prevSelectedItems) => {\n            if (prevSelectedItems.includes(id)) {\n                return prevSelectedItems.filter(item => item !== id);\n            } else {\n                return [...prevSelectedItems, id];\n            }\n        });\n    };\n\n    useEffect(() => {\n        const currentPageIds = datalist.map(item => item.id);\n        const isAllSelected = currentPageIds.length > 0 &&\n            currentPageIds.every(id => selectedItems.includes(id));\n        setSelectAll(isAllSelected);\n    }, [datalist, selectedItems]);\n\n    const handleSelectAll = () => {\n        const currentPageIds = datalist.map(item => item.id);\n        setSelectedItems(prev => {\n            const newSelected = new Set(prev);\n            if (selectAll) {\n                currentPageIds.forEach(id => newSelected.delete(id));\n            } else {\n                currentPageIds.forEach(id => newSelected.add(id));\n            }\n            return Array.from(newSelected);\n        });\n    };\n\n    useEffect(() => {\n        const currentPageIds = datalist.map(item => item.id);\n        const isCurrentPageAllSelected = currentPageIds.length > 0 &&\n            currentPageIds.every(id => selectedItems.includes(id));\n        setSelectAll(isCurrentPageAllSelected);\n    }, [datalist, selectedItems]);\n\n    const handleDelete = (id) => {\n        bsConfirm({\n            desc: t('confirmDeleteSelectedQaData'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteQa([id]).then(res => {\n                    reload()\n                }))\n                next()\n            },\n        })\n    }\n\n    const handleDeleteSelected = () => {\n        if (!selectedItems.length) return;\n\n        bsConfirm({\n            desc: t('confirmDeleteSelectedQaData', { count: selectedItems.length }), // Display the total number of selected items\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(\n                    deleteQa(selectedItems) // Pass all selected IDs\n                        .then(res => {\n                            reload(); // Refresh all data\n                            setSelectedItems([]); // Clear selected items\n                            setSelectAll(false);\n                        })\n                );\n                next();\n            },\n        });\n    };\n\n    const handleStatusClick = async (id: number, checked: boolean) => {\n        const targetStatus = checked ? 1 : 0;\n        const item = datalist.find(el => el.id === id);\n\n        if (item && item.status === targetStatus) {\n            return;\n        }\n\n        const isOpening = checked;\n        try {\n            if (isOpening) {\n                refreshData(item => item.id === id, { status: 2 });\n            }\n            await updateQaStatus(id, targetStatus);\n            refreshData(item => item.id === id, { status: targetStatus });\n        } catch (error) {\n            toast({\n                variant: 'error',\n                description: error\n            });\n            refreshData(item => item.id === id, {\n                status: 3\n            });\n        }\n    };\n\n    return (\n        <div className=\"relative px-2 pt-4 size-full\">\n            <div className=\"h-full bg-background-login\">\n                <div className=\"flex justify-between\">\n                    <div className=\"flex justify-between items-center mb-4\">\n                        <div className=\"flex items-center\">\n                            <ShadTooltip content={t('back')} side=\"top\">\n                                <button className=\"extra-side-bar-buttons w-[36px]\" onClick={() => { }} >\n                                    <Link to='/filelib'><ArrowLeft className=\"side-bar-button-size\" /></Link>\n                                </button>\n                            </ShadTooltip>\n                            <span className=\"text-gray-700 text-sm font-black pl-4 dark:text-white truncate max-w-80\">{title}</span>\n                        </div>\n                    </div>\n                    <div className={selectedItems.length ? 'visible' : 'invisible'}>\n                        <Tip content={!hasPermission && t('noOperationPermission')} side='top'>\n                            <Button variant=\"outline\" className=\"disabled:pointer-events-auto ml-2\" disabled={!hasPermission} onClick={handleDeleteSelected}>\n                                <Trash2 className=\"mr-2 h-4 w-4\" ></Trash2> {t('delete')}\n                            </Button>\n                        </Tip>\n                        <Tip content={!hasPermission && t('noOperationPermission')} side='top'>\n                            <Button variant=\"outline\" className=\"disabled:pointer-events-auto ml-2\" disabled={!hasPermission} onClick={handleDisableSelected}>\n                                <SquareX className=\"mr-2 h-4 w-4\" /> {t('disable')}\n                            </Button>\n                        </Tip>\n                        <Tip content={!hasPermission && t('noOperationPermission')} side='top'>\n                            <Button variant=\"outline\" className=\"disabled:pointer-events-auto ml-2\" disabled={!hasPermission} onClick={handleEnableSelected}>\n                                <SquareCheckBig className=\"mr-2 h-4 w-4\" /> {t('enable')}\n                            </Button>\n                        </Tip>\n                    </div>\n                    <div className=\"flex justify-between items-center mb-4\">\n                        <div className=\"flex gap-4 items-center\">\n                            <SearchInput placeholder={t('qaContent')} onChange={(e) => search(e.target.value)}></SearchInput>\n                            <Tip content={!hasPermission && t('noOperationPermission')} side='top'>\n                                <Button variant=\"outline\" disabled={!hasPermission} className=\"disabled:pointer-events-auto px-8\" onClick={() => importRef.current.open()}>{t('import')}</Button>\n                            </Tip>\n                            <Button variant=\"outline\" className=\"px-8\" onClick={() => {\n                                getQaFile(id).then(res => {\n                                    const fileUrl = res.file_list[0];\n                                    downloadFile(checkSassUrl(fileUrl), `${title} ${formatDate(new Date(), 'yyyy-MM-dd')}.xlsx`);\n                                })\n                            }}>{t('export')}</Button>\n                            <Tip content={!hasPermission && t('noOperationPermission')} side='top'>\n                                <Button className=\"disabled:pointer-events-auto px-8\" disabled={!hasPermission} onClick={() => editRef.current.open()}>{t('createQA')}</Button>\n                            </Tip>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"overflow-y-auto h-[calc(100vh-132px)] pb-20\">\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className=\"w-8\">\n                                    <Checkbox checked={selectAll} onCheckedChange={handleSelectAll} />\n                                </TableHead>\n                                <TableHead className=\"w-[340px]\">{t('question')}</TableHead>\n                                <TableHead className=\"w-[340px]\">{t('answer')}</TableHead>\n                                <TableHead>{t('type')}</TableHead>\n                                <TableHead>{t('updateTime')}</TableHead>\n                                <TableHead>{t('createUser')}</TableHead>\n                                <TableHead className=\"text-right pr-6\">{t('operations')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            {datalist.map(el => (\n                                <TableRow key={el.id} className={hasPermission ? \"hover:bg-gray-100\" : \"\"}>\n                                    <TableCell className=\"font-medium\" onClick={(e) => e.stopPropagation()}>\n                                        <Checkbox\n                                            checked={selectedItems.includes(el.id)}\n                                            onCheckedChange={() => handleCheckboxChange(el.id)}\n                                            onClick={(e) => e.stopPropagation()}\n                                        />\n                                    </TableCell>\n\n                                    <TableCell\n                                        className=\"font-medium cursor-pointer\"\n                                        onClick={() => hasPermission && editRef.current.edit(el)}\n                                    >\n                                        <div className=\"max-h-48 overflow-y-auto scrollbar-hide\">\n                                            {el.questions}\n                                        </div>\n                                    </TableCell>\n\n                                    <TableCell\n                                        className=\"font-medium cursor-pointer\"\n                                        onClick={() => hasPermission && editRef.current.edit(el)}\n                                    >\n                                        <div className=\"max-h-48 overflow-y-auto scrollbar-hide\">\n                                            {el.answers}\n                                        </div>\n                                    </TableCell>\n\n                                    <TableCell\n                                        className=\"cursor-pointer\"\n                                        onClick={() => hasPermission && editRef.current.edit(el)}\n                                    >\n                                        {/* {['未知', '手动创建', '标注导入', 'api导入', '批量导入'][el.source]} */}\n                                        {t(sourceTypeKeys[el.source] || sourceTypeKeys[0])}\n                                    </TableCell>\n                                    <TableCell>{el.update_time.replace('T', ' ')}</TableCell>\n                                    <TableCell>{el.user_name}</TableCell>\n                                    <TableCell className=\"text-right\">\n                                        <div className=\"flex items-center justify-end gap-2\">\n                                            <div className=\"flex items-center\">\n                                                {el.status !== 2 && (\n                                                    <Tip\n                                                        content={!hasPermission && t('noOperationPermission')}\n                                                        side='top'>\n                                                        <div>\n                                                            <Switch\n                                                                checked={el.status === 1}\n                                                                disabled={!hasPermission}\n                                                                className=\"disabled:pointer-events-auto\"\n                                                                onCheckedChange={(bln) => handleStatusClick(el.id, bln)}\n                                                            />\n                                                        </div>\n                                                    </Tip>\n                                                )}\n                                                {el.status === 2 && (\n                                                    <span className=\"text-sm\">{t('processing')}</span>\n                                                )}\n                                                {el.status === 3 && (\n                                                    <span className=\"text-sm\">{t('notEnabled')}</span>\n                                                )}\n                                            </div>\n                                            <Tip\n                                                content={!hasPermission && t('noOperationPermission')}\n                                                styleClasses=\"-translate-x-6\"\n                                                side='top'>\n                                                <Button\n                                                    variant=\"ghost\"\n                                                    size=\"icon\"\n                                                    className=\"disabled:pointer-events-auto\"\n                                                    disabled={!hasPermission}\n                                                    onClick={(e) => {\n                                                        e.stopPropagation();\n                                                        handleDelete(el.id);\n                                                    }}\n                                                >\n                                                    <Trash2 size={16} />\n                                                </Button>\n                                            </Tip>\n                                        </div>\n                                    </TableCell>\n                                </TableRow>\n                            ))}\n                        </TableBody>\n                    </Table>\n                </div>\n            </div>\n            <div className=\"bisheng-table-footer px-6 justify-end\">\n                <div>\n                    <AutoPagination\n                        page={page}\n                        pageSize={pageSize}\n                        total={total}\n                        onChange={(newPage) => setPage(newPage)}\n                    />\n                </div>\n            </div>\n            <EditQa ref={editRef} knowlageId={id} onChange={reload} />\n            <ImportQa ref={importRef} knowlageId={id} onChange={reload} />\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/KnowledgePage/useKnowledgeStore.ts",
    "content": "// useKnowledgeStore.ts\nimport { create } from 'zustand';\n\n// Define the store type for the knowledge base editable state\ninterface KnowledgeStore {\n    isEditable: boolean; // State: whether it is editable\n    toggleEditable: () => void; // Toggle editability state\n    setEditable: (editable: boolean) => void; // Set editability state\n    // 1.3\n    /** Selected chunk index */\n    selectedChunkIndex: number | null;\n    setSelectedChunkIndex: (index: number | null) => void;\n    /** Selected chunk distance factor */\n    selectedChunkDistanceFactor: number;\n    setSelectedChunkDistanceFactor: () => void;\n    /** Data that needs to be overwritten */\n    needCoverData: { index: number, txt: string };\n    setNeedCoverData: (data: { index: number, txt: string }) => void;\n    /** Selected bbox for the current chunk */\n    selectedBbox: { page: number, bbox: [number, number, number, number] }[];\n    setSelectedBbox: (data: { page: number, bbox: [number, number, number, number] }[]) => void;\n}\n\n// Create a zustand store to manage the knowledge base editable state\nconst useKnowledgeStore = create<KnowledgeStore>((set) => ({\n    isEditable: false, // Default state is not editable\n    toggleEditable: () => set((state) => ({ isEditable: !state.isEditable })),\n    setEditable: (editable) => set({ isEditable: editable }),\n    // v1.3\n    selectedChunkIndex: -1,\n    setSelectedChunkIndex: (index) => set({ selectedChunkIndex: index }),\n    needCoverData: { index: -1, txt: '' },\n    setNeedCoverData: (data) => set({ needCoverData: data }),\n    selectedBbox: [],\n    setSelectedBbox: (data) => set({ selectedBbox: data }),\n    selectedChunkDistanceFactor: 0,\n    setSelectedChunkDistanceFactor: () => set({ selectedChunkDistanceFactor: Math.random() / 100 })\n}));\n\nexport default useKnowledgeStore;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LabelPage/AddSimilarQuestions.tsx",
    "content": "import KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { addSimilarQa, getQaList } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useTable } from \"@/util/hook\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst AddSimilarQuestions = forwardRef(({ onMarked }, ref) => {\n    const { t } = useTranslation();\n    const [open, setOpen] = useState(false);\n    const [knowledgeLib, setKnowledgeLib] = useState([]);\n    const [selectedItems, setSelectedItems] = useState([]);\n    const [error, setError] = useState(false);\n\n    const { page, pageSize, loaded, data: datalist, total, loading, setPage, filterData, clean } = useTable({ unInitData: true }, (param) =>\n        getQaList(param.id, { page: param.page, pageSize: 10, keyword: param.searchKey })\n    );\n\n    const qRef = useRef('');\n\n    useImperativeHandle(ref, () => ({\n        open(id, qa) {\n            qRef.current = qa.q;\n            setOpen(true);\n            setKnowledgeLib([]);\n            setSelectedItems([]);\n        }\n    }));\n\n    const handleKnowledgeLibChange = (option) => {\n        setKnowledgeLib(option);\n        filterData({ id: option[0].value, searchKey: '' });\n    };\n\n    const handleCheckboxChange = (id) => {\n        setSelectedItems((prevSelectedItems) =>\n            prevSelectedItems.includes(id)\n                ? prevSelectedItems.filter((item) => item !== id)\n                : [...prevSelectedItems, id]\n        );\n    };\n\n    const { message } = useToast();\n    const handleSubmit = async () => {\n        const errors = [];\n        if (knowledgeLib.length === 0) {\n            errors.push(t('log.qaLibRequired'));\n        }\n        if (selectedItems.length === 0) {\n            errors.push(t('log.selectAtLeastOneQuestion'));\n        }\n        if (errors.length > 0) {\n            setError(true);\n            return message({ variant: 'warning', description: errors });\n        }\n\n        captureAndAlertRequestErrorHoc(addSimilarQa({\n            ids: selectedItems,\n            question: qRef.current\n        }).then(res => {\n            message({\n                variant: 'success',\n                description: t('log.addSuccess')\n            });\n            onMarked?.()\n            close();\n        }));\n    };\n\n    const close = () => {\n        qRef.current = '';\n        setKnowledgeLib([]);\n        setSelectedItems([]);\n        setOpen(false);\n        setError(false);\n        clean();\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={(bln) => bln ? setOpen(bln) : close()}>\n            <DialogContent className=\"sm:max-w-[825px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('log.addSimilarQuestionsToQaLib')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2\">\n                    <div className=\"flex items-center gap-4\">\n                        <Label htmlFor=\"knowledgeLib\" className=\"bisheng-label w-40 whitespace-nowrap\">{t('log.qaKnowledgeLib')}</Label>\n                        <KnowledgeSelect\n                            type=\"qa\"\n                            value={knowledgeLib}\n                            onChange={handleKnowledgeLibChange}\n                            className={`${error && knowledgeLib.length === 0 ? 'border-red-400' : ''}`}\n                        />\n                        <Input placeholder={t('log.qaContent')} onChange={(e) => knowledgeLib.length && filterData({ id: knowledgeLib[0].value, searchKey: e.target.value })} />\n                    </div>\n                    <div className=\"relative\">\n                        {loading && (\n                            <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                                <LoadingIcon />\n                            </div>\n                        )}\n                        <div className=\"h-[510px] overflow-y-auto\">\n                            <Table>\n                                <TableHeader>\n                                    <TableRow>\n                                        <TableHead className=\"w-8\"></TableHead>\n                                        <TableHead className=\"w-[300px]\">{t('log.question')}</TableHead>\n                                        <TableHead className=\"w-[360px]\">{t('log.answer')}</TableHead>\n                                    </TableRow>\n                                </TableHeader>\n                                <TableBody>\n                                    {datalist.map((el) => (\n                                        <TableRow key={el.id}>\n                                            <TableCell className=\"font-medium\">\n                                                <Checkbox checked={selectedItems.includes(el.id)} onCheckedChange={() => handleCheckboxChange(el.id)} />\n                                            </TableCell>\n                                            <TableCell className=\"font-medium\">\n                                                <div className=\"max-w-[360px] whitespace-nowrap text-ellipsis overflow-hidden\">{el.questions}</div>\n                                            </TableCell>\n                                            <TableCell className=\"font-medium whitespace-nowrap text-ellipsis overflow-hidden\">\n                                                <div className=\"max-w-[360px] whitespace-nowrap text-ellipsis overflow-hidden\">{el.answers}</div>\n                                            </TableCell>\n                                        </TableRow>\n                                    ))}\n                                    {loaded && datalist.length === 0 && <TableRow>\n                                        <TableCell colSpan={3} className=\"font-medium text-center\">{t('log.empty')}</TableCell>\n                                    </TableRow>}\n                                    {\n                                        !loaded && <TableRow>\n                                            <TableCell colSpan={3} className=\"font-medium text-center\">{t('log.selectQaLib')}</TableCell>\n                                        </TableRow>\n                                    }\n                                </TableBody>\n                            </Table>\n                        </div>\n                        <div className=\"bisheng-table-footer px-6 bg-transparent\">\n                            <AutoPagination\n                                className=\"justify-end\"\n                                page={page}\n                                pageSize={pageSize}\n                                total={total}\n                                onChange={(newPage) => setPage(newPage)}\n                            />\n                        </div>\n                    </div>\n                    <DialogFooter>\n                        <DialogClose>\n                            <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={close}>{t('log.cancel')}</Button>\n                        </DialogClose>\n                        <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>{t('log.confirm')}</Button>\n                    </DialogFooter>\n                </div>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\n\nexport default AddSimilarQuestions;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LabelPage/SaveQaLibForm.tsx",
    "content": "import KnowledgeSelect from \"@/components/bs-comp/selectComponent/knowledge\";\nimport { LoadIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Input, InputList, Textarea } from \"@/components/bs-ui/input\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { generateSimilarQa, updateQa } from \"@/controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DEFAULT_FORM = {\n    knowledgeLib: [],\n    question: '',\n    similarQuestions: [''],\n    answer: ''\n};\n\nconst SaveQaLibForm = forwardRef(({ onMarked }, ref) => {\n    const { t } = useTranslation();\n    const [open, setOpen] = useState(false);\n    const [form, setForm] = useState({ ...DEFAULT_FORM });\n    const [loading, setLoading] = useState(false);\n    const [error, setError] = useState({\n        knowledgeLib: false,\n        question: false,\n        answer: false\n    });\n\n    const idRef = useRef('');\n\n    useImperativeHandle(ref, () => ({\n        open(id, qa) {\n            idRef.current = id;\n            setOpen(true);\n            const { q, a } = qa;\n            setForm({\n                knowledgeLib: [],\n                question: q,\n                similarQuestions: [''],\n                answer: a\n            });\n        }\n    }));\n\n    const handleInputChange = (e) => {\n        const { name, value } = e.target;\n        setForm((prevForm) => ({\n            ...prevForm,\n            [name]: value\n        }));\n    };\n\n    const handleSimilarQuestionsChange = (list) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            similarQuestions: list\n        }));\n    };\n\n    const handleKnowledgeLibChange = (value) => {\n        setForm((prevForm) => ({\n            ...prevForm,\n            knowledgeLib: value\n        }));\n    };\n\n    const handleModelGenerate = async () => {\n        if (!form.question) {\n            return message({\n                variant: 'warning',\n                description: t('log.enterQuestion')\n            });\n        }\n        setLoading(true);\n        captureAndAlertRequestErrorHoc(generateSimilarQa(form.question, form.answer).then(res => {\n            setForm((prevForm) => {\n                const updatedSimilarQuestions = [...prevForm.similarQuestions];\n                updatedSimilarQuestions.splice(updatedSimilarQuestions.length - 1, 0, ...res.questions);\n                return {\n                    ...prevForm,\n                    similarQuestions: updatedSimilarQuestions\n                };\n            });\n            setLoading(false);\n        }));\n    };\n\n    const { message } = useToast();\n    const handleSubmit = async () => {\n        const isKnowledgeLibEmpty = form.knowledgeLib.length === 0;\n        const isQuestionEmpty = !form.question.trim();\n        const isAnswerEmpty = !form.answer.trim();\n\n        if (isKnowledgeLibEmpty || isQuestionEmpty || isAnswerEmpty) {\n            setError({\n                knowledgeLib: isKnowledgeLibEmpty,\n                question: isQuestionEmpty,\n                answer: isAnswerEmpty\n            });\n\n            return message({\n                variant: 'warning',\n                description: t('log.qaLibQuestionAnswerRequired')\n            });\n        }\n\n        const _similarQuestions = form.similarQuestions.filter((question) => question.trim() !== '');\n        if (_similarQuestions.some((q) => q.length > 100)) {\n            return message({\n                variant: 'warning',\n                description: t('log.max100CharsForSimilarQuestions')\n            });\n        }\n        if (form.answer.length > 1000) {\n            return message({\n                variant: 'warning',\n                description: t('log.max1000CharsForAnswer')\n            });\n        }\n\n        captureAndAlertRequestErrorHoc(updateQa('', {\n            questions: [form.question, ..._similarQuestions],\n            answers: [form.answer],\n            knowledge_id: form.knowledgeLib[0].value,\n            source: 2\n        }).then(res => {\n            message({\n                variant: 'success',\n                description: t('log.saveSuccess')\n            });\n            onMarked?.()\n        }));\n        close();\n    };\n\n    const close = () => {\n        idRef.current = '';\n        setForm({ ...DEFAULT_FORM });\n        setOpen(false);\n        setError({\n            knowledgeLib: false,\n            question: false,\n            answer: false\n        });\n    };\n\n    return (\n        <Dialog open={open} onOpenChange={(bln) => bln ? setOpen(bln) : close()}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('log.addNewQaToLib')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-4 py-2\">\n                    <div>\n                        <label htmlFor=\"knowledgeLib\" className=\"bisheng-label\"><span className=\"text-red-500\">*</span>{t('log.qaKnowledgeLib')}</label>\n                        <KnowledgeSelect\n                            type=\"qa\"\n                            value={form.knowledgeLib}\n                            onChange={handleKnowledgeLibChange}\n                            className={`${error.knowledgeLib && 'border-red-400'}`}\n                        />\n                    </div>\n                    <div>\n                        <label htmlFor=\"question\" className=\"bisheng-label\"><span className=\"text-red-500\">*</span>{t('log.question')}</label>\n                        <Input name=\"question\" className={`col-span-3 ${error.question && 'border-red-400'}`} value={form.question} onChange={handleInputChange} />\n                    </div>\n                    <div>\n                        <label htmlFor=\"similarQuestions\" className=\"bisheng-label\">{t('log.similarQuestions')}</label>\n                        <div className=\"max-h-52 overflow-y-auto\">\n                            <InputList\n                                value={form.similarQuestions}\n                                onChange={handleSimilarQuestionsChange}\n                            />\n                        </div>\n                        <Button className=\"mt-2\" size=\"sm\" onClick={handleModelGenerate} disabled={loading}>\n                            {loading && <LoadIcon />} {t('log.aiGenerate')}\n                        </Button>\n                    </div>\n                    <div>\n                        <label htmlFor=\"answer\" className=\"bisheng-label\"><span className=\"text-red-500\">*</span>{t('log.answer')}</label>\n                        <Textarea name=\"answer\" className={`col-span-3 min-h-36 ${error.answer && 'border-red-400'}`} value={form.answer} onChange={handleInputChange} />\n                    </div>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={close}>{t('log.cancel')}</Button>\n                    </DialogClose>\n                    <Button type=\"submit\" className=\"px-11\" onClick={handleSubmit}>{t('log.confirm')}</Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\n\nexport default SaveQaLibForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LabelPage/index.tsx",
    "content": "import UsersSelect from \"@/components/bs-comp/selectComponent/Users\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { TableHeadEnumFilter } from \"@/components/bs-ui/select/filter\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { getChatOnlineApi } from \"@/controllers/API/assistant\";\nimport { createMarkApi, deleteMarkApi, getMarksApi } from \"@/controllers/API/log\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useTable } from \"@/util/hook\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\n// apps\nconst useAppsOptions = () => {\n    const [options, setOptions] = useState([])\n    const optionsRef = useRef([])\n    const pageRef = useRef(1)\n    const keywordRef = useRef(\"\")\n    // 未标注数map\n    const unmarkedMap = useRef({})\n    const loadApps = () => {\n        const page = pageRef.current\n        getChatOnlineApi(page, keywordRef.current, -1).then((res: any) => {\n            const newOptions = res.map(el => {\n                unmarkedMap.current[el.id] = el.count\n                return {\n                    label: el.name,\n                    value: el.id,\n                    count: el.count\n                }\n            })\n            optionsRef.current = page === 1 ? newOptions : [...optionsRef.current, ...newOptions]\n            setOptions(optionsRef.current)\n        })\n    }\n    useEffect(() => {\n        loadApps()\n    }, [])\n\n    return {\n        options,\n        unmarkedMap: unmarkedMap.current,\n        reload: () => {\n            keywordRef.current = ''\n            pageRef.current = 1\n            loadApps()\n        },\n        loadMore: () => {\n            pageRef.current++\n            loadApps()\n        },\n        search: (keyword) => {\n            pageRef.current = 1\n            keywordRef.current = keyword\n            loadApps()\n        }\n    }\n}\n\nfunction CreateModal({ open, setOpen, onSuccess }) {\n    const { t } = useTranslation()\n\n    const { options, unmarkedMap, reload, loadMore, search } = useAppsOptions()\n    const [apps, setApps] = useState([])\n    const [users, setUsers] = useState([])\n\n    const count = useMemo(() => {\n        return apps.reduce((pre, cur) => pre + unmarkedMap[cur.value], 0)\n    }, [apps, unmarkedMap])\n\n    const { message } = useToast()\n    const handleCreate = () => {\n        if (apps.length > 30) {\n            return message({\n                variant: \"error\",\n                description: t('label.maxAppsError')\n            })\n        }\n        captureAndAlertRequestErrorHoc(createMarkApi({\n            app_list: apps.map(el => el.value),\n            user_list: users.map(el => el.value)\n        }).then(res => {\n            if (!res) return\n            message({\n                variant: \"success\",\n                description: t('label.createSuccess')\n            })\n            setOpen(false)\n            onSuccess()\n        }))\n    }\n\n    return <Dialog open={open} onOpenChange={setOpen}>\n        <DialogContent className=\"sm:max-w-[625px]\">\n            <DialogHeader>\n                <DialogTitle>{t('label.createTask')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"flex flex-col gap-4 py-2\">\n                <div className=\"\">\n                    <label htmlFor=\"name\" className=\"bisheng-label\">{t('label.selectAppsToLabel')}</label>\n                    <MultiSelect\n                        contentClassName=\" max-w-[630px]\"\n                        multiple\n                        value={apps}\n                        options={options}\n                        placeholder={t('label.selectPlaceholder')}\n                        searchPlaceholder={t('label.searchAppsPlaceholder')}\n                        onChange={setApps}\n                        onLoad={reload}\n                        onSearch={search}\n                        onScrollLoad={loadMore}\n                    ></MultiSelect>\n                </div>\n                {count ? <p className=\"text-sm text-gray-500\">{t('label.unmarkedConversationCount')}: {count}</p> : null}\n                <div className=\"\">\n                    <label htmlFor=\"name\" className=\"bisheng-label\">{t('label.selectLabelers')}</label>\n                    <UsersSelect\n                        multiple\n                        value={users}\n                        onChange={setUsers}\n                    />\n                </div>\n            </div>\n            <DialogFooter>\n                <DialogClose>\n                    <Button\n                        variant=\"outline\"\n                        className=\"px-11\"\n                        type=\"button\"\n                        onClick={() => setOpen(false)}\n                    >{t('label.cancel')}</Button>\n                </DialogClose>\n                <Button\n                    type=\"submit\"\n                    className=\"px-11\"\n                    disabled={apps.length === 0 || users.length === 0}\n                    onClick={handleCreate}\n                >{t('label.create')}</Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}\n\nexport default function Tasks() {\n    const { t } = useTranslation()\n    const [open, setOpen] = useState(false);\n    const { user } = useContext(userContext);\n\n    const { page, pageSize, data: tasks, total, setPage, search, reload, filterData } = useTable({ pageSize: 20 }, (param) =>\n        getMarksApi({\n            ...param\n        })\n    )\n\n    const handleDelete = (taskId) => {\n        bsConfirm({\n            title: t('label.confirmDelete'),\n            desc: t('label.deleteConfirmation'),\n            okTxt: t('label.delete'),\n            onOk: async (next) => {\n                await deleteMarkApi(taskId);\n                reload();\n                next();\n            }\n        });\n    };\n\n    return (\n        <div className=\"relative px-2 pt-4 h-full\">\n            <div className=\"h-full overflow-y-auto pb-20\">\n                <div className=\"flex justify-end gap-6\">\n                    {['admin', 'group_admin'].includes(user.role) && <Button onClick={() => setOpen(true)}>\n                        {t('label.createTask')}\n                    </Button>}\n                </div>\n                <Table className=\"mb-[50px]\">\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead>{t('label.taskId')}</TableHead>\n                            <TableHead>\n                                <div className=\"flex items-center w-[144px]\">\n                                    {t('label.taskStatus')}\n                                    <TableHeadEnumFilter options={[\n                                        { label: t('label.all'), value: '0' },\n                                        { label: t('label.notStarted'), value: '1' },\n                                        { label: t('label.completed'), value: '2' },\n                                        { label: t('label.inProgress'), value: '3' },\n                                    ]}\n                                        onChange={(v) => filterData({ status: Number(v) })} />\n                                </div>\n                            </TableHead>\n                            <TableHead>{t('label.creationTime')}</TableHead>\n                            <TableHead>{t('label.createdBy')}</TableHead>\n                            <TableHead className=\"w-[144px]\">{t('label.labelingProgress')}</TableHead>\n                            <TableHead className=\"text-right w-[164px]\">{t('label.actions')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {tasks.map((task) => (\n                            <TableRow key={task.id}>\n                                <TableCell>{task.id}</TableCell>\n                                <TableCell>{['', t('label.notStarted'), t('label.completed'), t('label.inProgress')][task.status]}</TableCell>\n                                <TableCell>{task.create_time.replace('T', ' ')}</TableCell>\n                                <TableCell>{task.create_user}</TableCell>\n                                <TableCell className=\"break-all\">{\n                                    (task.mark_process || []).map(name => <p>{name}</p>)\n                                }</TableCell>\n                                <TableCell className=\"text-right\">\n                                    <Link to={`/label/${task.id}`}><Button variant=\"link\" className=\"px-0 pl-4\" >{t('label.view')}</Button></Link>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                    <TableFooter>\n                        {!tasks.length && (\n                            <TableRow>\n                                <TableCell colSpan={6} className=\"text-center text-gray-400\">{t('label.noData')}</TableCell>\n                            </TableRow>\n                        )}\n                    </TableFooter>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer bg-background-login px-2\">\n                <AutoPagination\n                    className=\"float-right justify-end w-full mr-6\"\n                    page={page}\n                    pageSize={pageSize}\n                    total={total}\n                    onChange={(newPage) => setPage(newPage)}\n                />\n            </div>\n            {open && <CreateModal open={open} setOpen={setOpen} onSuccess={reload}></CreateModal>}\n        </div>\n    );\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/LabelPage/taskAppChats.tsx",
    "content": "import MessagePanne from \"@/components/bs-comp/chatComponent/MessagePanne\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { getMarkPermissionApi, getMarkStatusApi, getNextMarkChatApi, updateMarkStatusApi } from \"@/controllers/API/log\";\nimport { useMessageStore as useFlowMessageStore } from \"@/pages/BuildPage/flow/FlowChat/messageStore\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { AppNumType } from \"@/types/app\";\nimport { ArrowLeft } from \"lucide-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport ChatMessages from \"../BuildPage/flow/FlowChat/ChatMessages\";\nimport AddSimilarQuestions from \"./AddSimilarQuestions\";\nimport SaveQaLibForm from \"./SaveQaLibForm\";\n\nconst PageChange = () => {\n    const { id, cid } = useParams()\n    const [hasPrev, setHasPrev] = useState(false)\n    const [hasNext, setHasNext] = useState(false)\n    const prevInfoRef = useRef<any>(null)\n    const nextInfoRef = useRef<any>(null)\n    const { t } = useTranslation()\n    useEffect(() => {\n        getNextMarkChatApi({ action: 'prev', chat_id: cid, task_id: id }).then(res => {\n            setHasPrev(!!res)\n            prevInfoRef.current = res\n        })\n        getNextMarkChatApi({ action: 'next', chat_id: cid, task_id: id }).then(res => {\n            setHasNext(!!res)\n            nextInfoRef.current = res\n        })\n    }, [cid])\n\n    const navigate = useNavigate()\n    const jumpToNext = (way: number) => {\n        const info = way === -1 ? prevInfoRef.current : nextInfoRef.current\n        const { flow_id, chat_id, flow_type } = info\n        navigate(`/label/chat/${id}/${flow_id}/${chat_id}/${flow_type}`)\n    }\n\n    return <div className=\"flex gap-2\">\n        <Button\n            variant=\"outline\"\n            disabled={!hasPrev}\n            className=\"border-primary text-primary text-xs h-8\"\n            onClick={() => jumpToNext(-1)}\n        >{t('label.previousChat')}</Button>\n        <Button\n            variant=\"outline\"\n            disabled={!hasNext}\n            className=\"border-primary text-primary text-xs h-8\"\n            onClick={() => jumpToNext(1)}\n        >{t('label.nextChat')}</Button>\n    </div>\n}\n\n// 标注状态\nconst enum LabelStatus {\n    Unlabeled = '1',\n    Labeled = '2',\n    Unnecessary = '3'\n}\n\nexport default function index() {\n    const { id, fid, cid, type: typeStr } = useParams()\n    const type = Number(typeStr)\n    // console.log('fid, cid :>> ', fid, cid);\n    const { t } = useTranslation()\n    const navigator = useNavigate()\n\n    const mark = useAuth()\n\n    const [status, setStatus] = React.useState(LabelStatus.Unlabeled)\n    const [isSelf, setIsSelf] = useState(false)\n    const loading = false;\n    const { loadAssistantState, destroy } = useAssistantStore()\n    const { loadHistoryMsg, loadMoreHistoryMsg, changeChatId, clearMsgs } = useMessageStore()\n    const { loadHistoryMsg: loadFlowHistoryMsg,\n        loadMoreHistoryMsg: loadMoreFlowHistoryMsg,\n        changeChatId: changeFlowChatId,\n        clearMsgs: clearFlowMsgs\n    } = useFlowMessageStore()\n    const qaFormRef = useRef(null)\n    const similarFormRef = useRef(null)\n    useEffect(() => {\n        // type === 'assistant' && loadAssistantState(fid, 'v1') 禁用助手详情,涉及权限403问题\n        type === AppNumType.FLOW ? loadFlowHistoryMsg(fid, cid, {\n            appendHistory: true,\n            lastMsg: \"\"\n        }) : loadHistoryMsg(fid, cid, {\n            appendHistory: true,\n            lastMsg: ''\n        })\n        changeChatId(cid)\n        changeFlowChatId(cid)\n\n        // get status\n        getMarkStatusApi({ task_id: Number(id), chat_id: cid }).then((res: any) => {\n            setStatus(String(res.status || 1))\n            setIsSelf(res.is_self === undefined ? true : res.is_self)\n        })\n\n        return () => {\n            clearMsgs()\n            clearFlowMsgs()\n            type === AppNumType.ASSISTANT && destroy()\n        }\n    }, [cid])\n\n    const handleMarkClick = (type: 'question' | 'answer', msgId: string, qa) => {\n        if (type === 'question') {\n            similarFormRef.current.open(msgId, qa)\n        } else if (type === 'answer') {\n            qaFormRef.current.open(msgId, qa)\n        }\n    }\n\n    // 完成标注\n    const handleMarkAfter = () => {\n        if (status === LabelStatus.Unlabeled) {\n            changeMarkStatus(LabelStatus.Labeled)\n        }\n    }\n    const changeMarkStatus = (status: LabelStatus) => {\n        updateMarkStatusApi({ session_id: cid, task_id: Number(id), status: Number(status) })\n        setStatus(status)\n    }\n\n    return <div>\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <span className=\"loading loading-infinity loading-lg\"></span>\n        </div>}\n        <div className=\"bg-background-login px-4\">\n            <div className=\"flex justify-between items-center py-4\">\n                <div className=\"flex items-center\">\n                    <ShadTooltip content={t('back')} side=\"top\">\n                        <Button\n                            className=\"w-[36px] px-2 rounded-full\"\n                            variant=\"outline\"\n                            onClick={() => navigator('/label/' + id)}\n                        ><ArrowLeft className=\"side-bar-button-size\" /></Button>\n                    </ShadTooltip>\n                    <span className=\" text-gray-700 text-sm font-black pl-4\">{t('label.returnToList')}</span>\n                </div>\n                <RadioGroup className=\"flex space-x-2 h-[20px] items-center\" value={status}\n                    onValueChange={(value: LabelStatus) => changeMarkStatus(value)} disabled={!isSelf && status !== LabelStatus.Unlabeled}>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" disabled={!mark} value={LabelStatus.Unlabeled} />{t('label.unlabeled')}\n                    </Label>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" disabled={!mark} value={LabelStatus.Labeled} />{t('label.labeled')}\n                    </Label>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" disabled={!mark} value={LabelStatus.Unnecessary} />{t('label.unnecessary')}\n                    </Label>\n                </RadioGroup>\n                <PageChange />\n            </div>\n            <div className=\"h-[calc(100vh-132px)]\">\n                {type === AppNumType.FLOW\n                    ? <ChatMessages mark={mark} logo='' useName='' guideWord='' loadMore={() => loadMoreFlowHistoryMsg(fid, true)} onMarkClick={handleMarkClick}></ChatMessages>\n                    : <MessagePanne mark={mark} logo='' useName='' guideWord=''\n                        loadMore={() => loadMoreHistoryMsg(fid, true)}\n                        onMarkClick={handleMarkClick}\n                    ></MessagePanne>\n                }\n            </div>\n        </div>\n        {/* 问题 */}\n        <SaveQaLibForm ref={qaFormRef} onMarked={handleMarkAfter} />\n        {/* 答案 */}\n        <AddSimilarQuestions ref={similarFormRef} onMarked={handleMarkAfter} />\n    </div>\n};\n\n// 权限\nconst useAuth = () => {\n    const [mark, setMark] = useState(false);\n    useEffect(() => {\n        getMarkPermissionApi().then(setMark)\n    }, [])\n\n    return mark\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LabelPage/taskApps.tsx",
    "content": "import ColFilterUser from \"@/components/bs-comp/tableComponent/ColFilterUser\";\nimport { ThunmbIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { TableHeadEnumFilter } from \"@/components/bs-ui/select/filter\";\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { getMarkChatsApi } from \"@/controllers/API/log\";\nimport { useTable } from \"@/util/hook\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\n\nexport default function taskApps() {\n    const { id } = useParams()\n    const navigator = useNavigate()\n    const { t } = useTranslation()\n\n    const { page, pageSize, total, data: datalist, loading, setPage, filterData } = useTable({}, (param) =>\n        getMarkChatsApi({\n            ...param,\n            task_id: id\n        }).then(res => ({ ...res, pageSize: param, data: res.list }))\n    )\n\n    return <div className=\"h-full\">\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <span className=\"loading loading-infinity loading-lg\"></span>\n        </div>}\n        <div className=\"bg-background-login px-4 overflow-y-auto h-full pb-20\">\n            <div className=\"flex justify-between items-center py-4\">\n                <div className=\"flex items-center\">\n                    <ShadTooltip content={t('label.back')} side=\"top\">\n                        <Button\n                            className=\"w-[36px] px-2 rounded-full\"\n                            variant=\"outline\"\n                            onClick={() => navigator('/label')}\n                        ><ArrowLeft className=\"side-bar-button-size\" /></Button>\n                    </ShadTooltip>\n                    <span className=\" text-gray-700 text-sm font-black pl-4\">{id}</span>\n                </div>\n            </div>\n            <div className=\"flex-grow-0\">\n                <Table className=\"\">\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead>{t('label.appName')}</TableHead>\n                            <TableHead>{t('label.sessionCreationTime')}</TableHead>\n                            <TableHead>{t('label.userFeedback')}</TableHead>\n                            <TableHead className=\"w-[120px]\">\n                                <div className=\"flex items-center\">\n                                    {t('label.annotationStatus')}\n                                    <TableHeadEnumFilter options={[\n                                        { label: t('label.all'), value: '0' },\n                                        { label: t('label.unannotated'), value: '1' },\n                                        { label: t('label.annotated'), value: '2' },\n                                        { label: t('label.noAnnotationRequired'), value: '3' }\n                                    ]}\n                                        onChange={(v) => filterData({ mark_status: v })} />\n                                </div>\n                            </TableHead>\n                            <TableHead className=\"w-[140px]\">\n                                <div className=\"flex items-center\">\n                                    {t('label.annotator')}\n                                    <ColFilterUser label={id} onFilter={(ids) => filterData({ mark_user: ids })}></ColFilterUser>\n                                </div>\n                            </TableHead>\n                            <TableHead className=\"w-[80px] text-right\">{t('label.actions')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {datalist.map((el, index) => (\n                            <TableRow key={index}>\n                                <TableCell>{el.flow_name}</TableCell>\n                                <TableCell>{el.create_time.replace('T', ' ')}</TableCell>\n                                <TableCell className=\"break-all flex gap-2\">\n                                    <div className=\"text-center text-xs relative\">\n                                        <ThunmbIcon\n                                            type='like'\n                                            className={`cursor-pointer ${el.like_count && 'text-primary hover:text-primary'}`}\n                                        />\n                                        <span className=\"left-4 top-[-4px] break-keep\">{el.like_count}</span>\n                                    </div>\n                                    <div className=\"text-center text-xs relative\">\n                                        <ThunmbIcon\n                                            type='unLike'\n                                            className={`cursor-pointer ${el.dislike_count && 'text-primary hover:text-primary'}`}\n                                        />\n                                        <span className=\"left-4 top-[-4px] break-keep\">{el.dislike_count}</span>\n                                    </div>\n                                    <div className=\"text-center text-xs relative\">\n                                        <ThunmbIcon\n                                            type='copy'\n                                            className={`cursor-pointer ${el.copied_count && 'text-primary hover:text-primary'}`}\n                                        />\n                                        <span className=\"left-4 top-[-4px] break-keep\">{el.copied_count}</span>\n                                    </div>\n                                </TableCell>\n                                <TableCell>{['', t('label.unannotated'), t('label.annotated'), t('label.noAnnotationRequired')][el.mark_status || 1]}</TableCell>\n                                <TableCell>{el.mark_user || '-'}</TableCell>\n                                <TableCell className=\"text-right\" onClick={() => {\n                                    // @ts-ignore\n                                    // window.libname = el.name;\n                                }}>\n                                    {\n                                        el.chat_id && <Link\n                                            to={`/label/chat/${id}/${el.flow_id}/${el.chat_id}/${el.flow_type}`}\n                                            className=\"no-underline hover:underline text-primary\"\n                                        >{t('label.view')}</Link>\n                                    }\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                    <TableFooter>\n                        {!datalist.length && (\n                            <TableRow>\n                                <TableCell colSpan={6} className=\"text-center text-gray-400\">{t('label.noData')}</TableCell>\n                            </TableRow>\n                        )}\n                    </TableFooter>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer bg-background-login px-2\">\n                <AutoPagination\n                    className=\"float-right justify-end w-full mr-6\"\n                    page={page}\n                    pageSize={pageSize}\n                    total={total}\n                    onChange={(newPage) => setPage(newPage)}\n                />\n            </div>\n        </div>\n    </div>;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/index.tsx",
    "content": "import { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport { useTranslation } from \"react-i18next\";\nimport SystemLog from \"./systemLog\";\nimport AppUseLog from \"./useAppLog\";\n\nexport default function index() {\n    const { t } = useTranslation()\n\n    return <div id=\"model-scroll\" className=\"w-full h-full px-2 pt-4\">\n        <Tabs defaultValue=\"app\" className=\"w-full mb-[40px]\" onValueChange={e => { }}>\n            <TabsList className=\"\">\n                <TabsTrigger value=\"app\">{t('log.appUsage')}</TabsTrigger>\n                <TabsTrigger value=\"system\">{t('log.systemOperations')}</TabsTrigger>\n            </TabsList>\n            <TabsContent value=\"app\">\n                <AppUseLog />\n            </TabsContent>\n            <TabsContent value=\"system\">\n                <SystemLog />\n            </TabsContent>\n        </Tabs>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/systemLog/index.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { DatePicker } from \"@/components/bs-ui/calendar/datePicker\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { getActionsApi, getActionsByModuleApi, getLogsApi, getModulesApi, getOperatorsApi } from \"@/controllers/API/log\";\nimport { getUserGroupsApi } from \"@/controllers/API/user\";\nimport { useTable } from \"@/util/hook\";\nimport { formatDate } from \"@/util/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\nconst useGroups = () => {\n    const [groups, setGroups] = useState([])\n    const loadData = () => {\n        getUserGroupsApi().then((res: any) => setGroups(res.records))\n    }\n    return { groups, loadData }\n}\nconst useModules = () => {\n    const [modules, setModules] = useState([])\n    const loadModules = () => {\n        getModulesApi().then(res => setModules(res.data))\n    }\n    return { modules, loadModules }\n}\n\nexport default function SystemLog() {\n    const { t } = useTranslation()\n    const { users, loadUsers } = useUsers()\n    const { groups, loadData } = useGroups()\n    const { modules, loadModules } = useModules()\n    const { page, pageSize, loading, data: logs, total, setPage, filterData } = useTable({ pageSize: 20 }, (param) =>\n        getLogsApi({ ...param })\n    )\n    const init = {\n        userIds: [],\n        groupId: '',\n        start: undefined,\n        end: undefined,\n        moduleId: '',\n        action: ''\n    }\n\n    const [actions, setActions] = useState<any[]>([])\n    const [keys, setKeys] = useState({ ...init })\n\n    const handleActionOpen = async () => {\n        setActions((keys.moduleId ? await getActionsByModuleApi(keys.moduleId) : await getActionsApi()))\n    }\n    const handleSearch = () => {\n        const startTime = keys.start && formatDate(keys.start, 'yyyy-MM-dd HH:mm:ss')\n        const endTime = keys.end && formatDate(keys.end, 'yyyy-MM-dd HH:mm:ss').replace('00:00:00', '23:59:59')\n        filterData({ ...keys, start: startTime, end: endTime })\n    }\n    const handleReset = () => {\n        setKeys({ ...init })\n        filterData(init)\n    }\n    useEffect(() => {\n        loadUsers()\n    }, [])\n\n    return <div className=\"relative\">\n        {loading && (\n            <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        )}\n        <div className=\"h-[calc(100vh-128px)] overflow-y-auto px-2 py-4 pb-10\">\n            <div className=\"flex flex-wrap gap-4\">\n                <div className=\"w-[200px] relative\">\n                    <MultiSelect contentClassName=\"overflow-y-auto max-w-[200px]\" multiple\n                        options={users}\n                        value={keys.userIds}\n                        placeholder={t('log.selectUser')}\n                        // onLoad={loadUsers}\n                        // onSearch={(key) => { searchUser(key); selectedRef.current = keys.userIds }}\n                        onChange={(values) => setKeys({ ...keys, userIds: values })}\n                    ></MultiSelect>\n                </div>\n                <div className=\"w-[200px] relative\">\n                    <Select onOpenChange={loadData} value={keys.groupId} onValueChange={(value) => setKeys({ ...keys, groupId: value })}>\n                        <SelectTrigger className=\"w-[200px]\">\n                            <SelectValue placeholder={t('log.selectUserGroup')} />\n                        </SelectTrigger>\n                        <SelectContent className=\"max-w-[200px] break-all\">\n                            <SelectGroup>\n                                {groups.map(g => <SelectItem value={g.id} key={g.id}>{g.group_name}</SelectItem>)}\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>\n                <div className=\"w-[180px] relative\">\n                    <DatePicker value={keys.start} placeholder={t('log.startDate')} onChange={(t) => setKeys({ ...keys, start: t })} />\n                </div>\n                <div className=\"w-[180px] relative\">\n                    <DatePicker value={keys.end} placeholder={t('log.endDate')} onChange={(t) => setKeys({ ...keys, end: t })} />\n                </div>\n                <div className=\"w-[180px] relative\">\n                    <Select value={keys.moduleId} onOpenChange={loadModules} onValueChange={(value) => setKeys({ ...keys, action: '', moduleId: value })}>\n                        <SelectTrigger className=\"w-[180px]\">\n                            <SelectValue placeholder={t('log.systemModule')} />\n                        </SelectTrigger>\n                        <SelectContent>\n                            <SelectGroup>\n                                {modules.map(m => <SelectItem value={m.value} key={m.value}>{t(m.name)}</SelectItem>)}\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>\n                <div className=\"w-[180px] relative\">\n                    <Select value={keys.action} onOpenChange={handleActionOpen} onValueChange={(value) => setKeys({ ...keys, action: value })}>\n                        <SelectTrigger className=\"w-[180px]\">\n                            <SelectValue placeholder={t('log.actionBehavior')} />\n                        </SelectTrigger>\n                        <SelectContent>\n                            <SelectGroup>\n                                {actions.map(a => <SelectItem value={a.value} key={a.value}>{t(a.name)}</SelectItem>)}\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>\n                <div>\n                    <Button className=\"mr-3 px-6\" onClick={handleSearch}>\n                        {t('log.searchButton')}\n                    </Button>\n                    <Button variant=\"outline\" className=\"px-6\" onClick={handleReset}>\n                        {t('log.resetButton')}\n                    </Button>\n                </div>\n            </div>\n            <Table className=\"mb-[50px]\">\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[200px]\">{t('log.auditId')}</TableHead>\n                        <TableHead className=\"w-[200px] min-w-[100px]\">{t('log.username')}</TableHead>\n                        <TableHead className=\"w-[200px] min-w-[100px]\">{t('log.operationTime')}</TableHead>\n                        <TableHead className=\"w-[100px] min-w-[100px]\">{t('log.systemModule')}</TableHead>\n                        <TableHead className=\"w-[150px] min-w-[100px]\">{t('log.operationAction')}</TableHead>\n                        <TableHead className=\"w-[150px] min-w-[100px]\">{t('log.objectType')}</TableHead>\n                        <TableHead className=\"w-[200px] min-w-[100px]\">{t('log.operationObject')}</TableHead>\n                        <TableHead className=\"w-[150px]\">{t('log.ipAddress')}</TableHead>\n                        <TableHead className=\"w-[250px] min-w-[250px]\">{t('log.remark')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {logs.map((log: any) => (\n                        <TableRow key={log.id}>\n                            <TableCell>{log.id}</TableCell>\n                            <TableCell><div className=\"max-w-[200px] break-all truncate-multiline\">{log.operator_name}</div></TableCell>\n                            <TableCell>{log.create_time.replace('T', ' ')}</TableCell>\n                            <TableCell>{t(`log.systemIdEnum.${log.system_id}`)}</TableCell>\n                            <TableCell>{t(`log.eventTypeEnum.${log.event_type}`)}</TableCell>\n                            <TableCell>{t(`log.objectTypeEnum.${log.object_type}`)}</TableCell>\n                            <TableCell><div className=\"max-w-[200px] break-all truncate-multiline\">{log.object_name || t('log.objectTypeEnum.none')}</div></TableCell>\n                            <TableCell>{log.ip_address}</TableCell>\n                            <TableCell className=\"max-w-[250px]\">\n                                <div className=\"whitespace-pre-line break-all\">{log.note?.replace('编辑后', `\\n编辑后`) || t('log.objectTypeEnum.none')}</div>\n                            </TableCell>\n                        </TableRow>\n                    ))}\n                </TableBody>\n                {!logs.length && <TableFooter>\n                    <TableRow>\n                        <TableCell colSpan={9} className=\"text-center text-gray-400\">{t('build.empty')}</TableCell>\n                    </TableRow>\n                </TableFooter>}\n            </Table>\n            {!logs.length && <div className=\"h-[700px]\"></div>}\n        </div>\n        {/* Pagination */}\n        {/* <Pagination count={10}></Pagination> */}\n        <div className=\"bisheng-table-footer bg-background-login\">\n            <p className=\"desc pl-4\">{t('log.auditManagement')}</p>\n            <AutoPagination\n                className=\"float-right justify-end w-full mr-6\"\n                page={page}\n                pageSize={pageSize}\n                total={total}\n                onChange={(newPage) => setPage(newPage)}\n            />\n        </div>\n    </div>\n};\n\n\nconst useUsers = () => {\n    const [users, setUsers] = useState<any[]>([]);\n    const userRef = useRef([])\n    const selectedRef = useRef([])\n\n    const loadUsers = () => {\n        getOperatorsApi().then(res => {\n            const options = res.map((u: any) => ({ label: u.user_name, value: u.user_id }))\n            userRef.current = options\n            setUsers(options)\n        })\n    }\n    const search = (name) => {\n        // const newUsers = userRef.current.filter(u => u.label.toLowerCase().includes(name.toLowerCase())\n        //     || selectedRef.current.includes(u.value))\n        // setUsers(newUsers)\n    }\n\n    return {\n        users,\n        selectedRef,\n        loadUsers,\n        searchUser(name) {\n            search(name)\n        }\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/useAppLog/DailyMessageContent.tsx",
    "content": "\nimport { Atom, ChevronDown, ChevronUp } from 'lucide-react';\nimport { useState } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm'\n\nexport const MessageContent = ({ text }: { text: string }) => {\n    const thinkingMatch = text.match(/^:::thinking\\s+([\\s\\S]*?)\\s+:::\\s*([\\s\\S]*)$/);\n    text = text.replace(/^:::web\\s+([\\s\\S]*?)\\s+:::\\s*([\\s\\S]*)$/, '$2').replace(/\\[citation:\\d+\\]/g, '');\n\n    if (thinkingMatch) {\n        const thinkingContent = thinkingMatch[1];\n        const mainContent = thinkingMatch[2];\n\n        return (\n            <>\n                <ThinkingBlock content={thinkingContent} />\n                <ReactMarkdown remarkPlugins={[remarkGfm]}>\n                    {mainContent}\n                </ReactMarkdown>\n            </>\n        );\n    }\n\n    return (\n        <ReactMarkdown remarkPlugins={[remarkGfm]}>\n            {text}\n        </ReactMarkdown>\n    );\n};\n\n\nconst ThinkingBlock = ({ content }: { content: string }) => {\n    const [isExpanded, setIsExpanded] = useState(false);\n\n    return (\n        <div className=\"mb-4\">\n            <button\n                onClick={() => setIsExpanded(!isExpanded)}\n                className=\"flex items-center gap-2 px-3 py-2 bg-gray-100 dark:bg-zinc-800 hover:bg-gray-200 rounded-xl transition-colors text-gray-600 dark:text-gray-300\"\n            >\n                <Atom className={`w-3 h-3 ${isExpanded ? 'animate-spin-slow' : ''}`} />\n                <span className=\"text-xs font-medium\">思考内容</span>\n                {isExpanded ? <ChevronUp className=\"w-4 h-4\" /> : <ChevronDown className=\"w-4 h-4\" />}\n            </button>\n\n            {isExpanded && (\n                <div className=\"mt-3 ml-2 pl-4 border-l-2 border-gray-200 dark:border-zinc-700 text-gray-500 dark:text-gray-400\">\n                    <ReactMarkdown remarkPlugins={[remarkGfm]}>\n                        {content}\n                    </ReactMarkdown>\n                </div>\n            )}\n        </div>\n    );\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/useAppLog/appChatDetail.tsx",
    "content": "import AppAvator from \"@/components/bs-comp/cardComponent/avatar\";\nimport MessagePanne from \"@/components/bs-comp/chatComponent/MessagePanne\";\nimport { useMessageStore } from \"@/components/bs-comp/chatComponent/messageStore\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { getDeleteFlowApi } from \"@/controllers/API/flow\";\nimport ChatMessages from \"@/pages/BuildPage/flow/FlowChat/ChatMessages\";\nimport { useMessageStore as useFlowMessageStore } from \"@/pages/BuildPage/flow/FlowChat/messageStore\";\nimport { useAssistantStore } from \"@/store/assistantStore\";\nimport { AppNumType } from \"@/types/app\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\n\nexport default function AppChatDetail() {\n    const { fid, cid, type: typeStr } = useParams()\n    const type = Number(typeStr)\n    // console.log('fid, cid :>> ', fid, cid);\n    const { t } = useTranslation()\n\n    const loading = false;\n    const title = t('log.detailedSession');\n    const { assistantState, loadAssistantState, destroy } = useAssistantStore()\n    const { loadHistoryMsg, loadMoreHistoryMsg, changeChatId, clearMsgs } = useMessageStore()\n    const {\n        loadHistoryMsg: loadFlowHistoryMsg,\n        loadMoreHistoryMsg: loadMoreFlowHistoryMsg,\n        changeChatId: changeFlowChatId,\n        clearMsgs: clearFlowMsgs } = useFlowMessageStore()\n\n    useEffect(() => {\n        type === AppNumType.ASSISTANT && loadAssistantState(fid, 'v1')\n\n        type === AppNumType.FLOW ? loadFlowHistoryMsg(fid, cid, {\n            appendHistory: true,\n            lastMsg: \"\"\n        }) : loadHistoryMsg(fid, cid, {\n            appendHistory: true,\n            lastMsg: ''\n        })\n        changeChatId(cid)\n        changeFlowChatId(cid)\n        return () => {\n            clearMsgs()\n            clearFlowMsgs()\n            type === AppNumType.ASSISTANT && destroy()\n        }\n    }, [])\n\n    const logo = useAppAvatar(cid, type, assistantState)\n\n    return <div>\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <LoadingIcon />\n        </div>}\n        <div className=\"bg-background-login px-4\">\n            <div className=\"flex justify-between items-center py-4\">\n                <div className=\"flex items-center\">\n                    <ShadTooltip content={t('back')} side=\"top\">\n                        <Button\n                            className=\"w-[36px] px-2 rounded-full\"\n                            variant=\"outline\"\n                            onClick={() => window.history.back()}\n                        ><ArrowLeft className=\"side-bar-button-size\" /></Button>\n                    </ShadTooltip>\n                    <span className=\" text-gray-700 text-sm font-black pl-4\">{title}</span>\n                </div>\n            </div>\n            <div className=\"h-[calc(100vh-132px)]\">\n                {type === AppNumType.FLOW\n                    ? <ChatMessages logo={logo} debug useName={''} guideWord={''} loadMore={() => loadMoreFlowHistoryMsg(fid, true)} onMarkClick={null}></ChatMessages>\n                    : <MessagePanne logo={logo} debug useName='' guideWord=''\n                        loadMore={() => loadMoreHistoryMsg(fid, true)}\n                    ></MessagePanne>\n                }\n            </div>\n        </div>\n    </div >\n};\n\n\nconst useAppAvatar = (cid, flowType, assistantState) => {\n    const [logo, setLogo] = useState('')\n    const [title, setTitle] = useState('')\n    const loadAppDetail = async () => {\n        const lostflow = await getDeleteFlowApi(cid)\n        setLogo(lostflow.flow_logo)\n        setTitle(lostflow.flow_name)\n    }\n\n    useEffect(() => {\n        if (flowType !== AppNumType.ASSISTANT) {\n            loadAppDetail()\n        }\n    }, [])\n\n    return flowType === AppNumType.ASSISTANT ?\n        <AppAvator id={assistantState.name} flowType={flowType} url={assistantState.logo} className=\"size-5 min-w-5\"></AppAvator> :\n        <AppAvator id={title} flowType={flowType} url={logo} className=\"size-5 min-w-5\"></AppAvator>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/useAppLog/dailyChatDetail.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\"\nimport { Alert, AlertDescription } from \"@/components/bs-ui/alert\"\nimport { Badge } from \"@/components/bs-ui/badge\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport ShadTooltip from \"@/components/ShadTooltipComponent\"\nimport { getChatHistoryApi } from \"@/controllers/API\"\nimport ResouceModal from \"@/pages/ChatAppPage/components/ResouceModal\"\nimport { ArrowLeft } from \"lucide-react\"\nimport { useContext, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useParams } from \"react-router-dom\"\nimport { MessageContent } from \"./DailyMessageContent\"\nimport { locationContext } from \"@/contexts/locationContext\"\n\ninterface Message {\n    messageId: string;\n    sender: string;\n    text: string;\n    isCreatedByUser: boolean;\n    user_name: string;\n    source: number;\n}\n\nexport default function DailyChatDetail() {\n    const { cid } = useParams()\n    const [messages, setMessages] = useState<Message[]>([])\n    const [loading, setLoading] = useState(true)\n    const { appConfig } = useContext(locationContext)\n\n    const { t } = useTranslation()\n    const title = messages.length > 0 ? messages[0].flow_name : ''\n\n    useEffect(() => {\n        getChatHistoryApi(cid).then(res => {\n            setMessages(res)\n            setLoading(false)\n        }).catch(() => setLoading(false))\n    }, [cid])\n\n    const sourceRef = useRef(null)\n    const showResouce = (msgId, msg) => {\n        sourceRef.current?.openModal({\n            chatId: cid,\n            messageId: msgId,\n            message: msg,\n        })\n    }\n\n    return (\n        <div>\n            {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>}\n\n            <div className=\"bg-background-login px-4\">\n                <div className=\"flex justify-between items-center py-4\">\n                    <div className=\"flex items-center\">\n                        <ShadTooltip content={t('back')} side=\"top\">\n                            <Button\n                                className=\"w-[36px] px-2 rounded-full\"\n                                variant=\"outline\"\n                                onClick={() => window.history.back()}\n                            ><ArrowLeft className=\"side-bar-button-size\" /></Button>\n                        </ShadTooltip>\n                        <span className=\" text-gray-700 text-sm font-black pl-4\">{t('log.detailedSession')}</span>\n                    </div>\n                </div>\n\n                {/* messages */}\n                <div className=\"h-[calc(100vh-132px)] overflow-y-auto\">\n                    <div className=\"max-w-4xl mx-auto px-4 py-8\">\n                        {messages.map((msg) => (\n                            <div key={msg.messageId} className=\"mb-8 flex items-start gap-4\">\n                                {/* avatar */}\n                                <div className=\"flex-shrink-0\">\n                                    {msg.isCreatedByUser ? (\n                                        <div className=\"w-7 h-7 bg-red-500 rounded-full flex items-center justify-center text-white text-xs font-bold\">\n                                            {msg.user_name.slice(0, 2).toLocaleUpperCase()}\n                                        </div>\n                                    ) : (\n                                        <div className=\"w-7 h-7 rounded-full flex items-center justify-center text-white\">\n                                            <div className=\"\">\n                                                <img src={appConfig?.worksapceIcon} alt=\"\" />\n                                            </div>\n                                        </div>\n                                    )}\n                                </div>\n\n                                {/* content */}\n                                <div className=\"flex-1 overflow-hidden\">\n                                    <div className=\"font-bold text-gray-900 dark:text-zinc-100 mb-1 text-base\">\n                                        {msg.isCreatedByUser ? msg.user_name : msg.sender}\n                                    </div>\n                                    {\n                                        msg.error\n                                            ? <Alert className=\"border-red-500/20 bg-red-500/5 px-3 py-2\"><AlertDescription>{msg.text}</AlertDescription></Alert>\n                                            : <div className=\"prose prose-sm max-w-none dark:prose-invert prose-pre:bg-zinc-900 prose-pre:border prose-pre:border-zinc-700\">\n                                                <MessageContent text={msg.text} />\n\n                                                {msg.source === 1 && <div className=\"mt-2\">\n                                                    <Badge className=\"cursor-pointer\" onClick={() => showResouce(msg.messageId, msg.text)}>{t('chat.source')}</Badge>\n                                                </div>}\n                                            </div>\n                                    }\n                                    {/* <div className=\"max-w-none \">\n                                        <MessageMarkDown message={msg.text}> </MessageMarkDown>\n                                    </div> */}\n                                </div>\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </div>\n\n            <ResouceModal ref={sourceRef}></ResouceModal>\n        </div>\n    )\n}\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LogPage/useAppLog/index.tsx",
    "content": "\nimport FilterByApp from \"@/components/bs-comp/filterTableDataComponent/FilterByApp\";\nimport FilterByDate from \"@/components/bs-comp/filterTableDataComponent/FilterByDate\";\nimport FilterByUser from \"@/components/bs-comp/filterTableDataComponent/FilterByUser\";\nimport FilterByUsergroup from \"@/components/bs-comp/filterTableDataComponent/FilterByUsergroup\";\nimport { ThunmbIcon } from \"@/components/bs-icons\";\nimport { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { userContext } from \"@/contexts/userContext\";\nimport { exportCsvDataApi, getAuditAppListApi } from \"@/controllers/API/log\";\nimport { useTable } from \"@/util/hook\";\nimport { exportCsv, formatDate } from \"@/util/utils\";\nimport { useContext, useEffect, useMemo, useReducer, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nconst getStrTime = (date) => {\n    const start_date = date[0] && (formatDate(date[0], 'yyyy-MM-dd') + ' 00:00:00')\n    const end_date = date[1] && (formatDate(date[1], 'yyyy-MM-dd') + ' 23:59:59')\n    return [start_date, end_date]\n}\n\ntype FilterState = {\n    appName: any[];\n    userName: any[];\n    userGroup: string;\n    dateRange: any[];\n    feedback: string;\n    sensitive_status: string;\n};\n\ntype Action =\n    | { type: 'SET_FILTER'; payload: Partial<FilterState> }\n    | { type: 'RESET' };\n\nconst filterReducer = (state: FilterState, action: Action): FilterState => {\n    switch (action.type) {\n        case 'SET_FILTER':\n            return { ...state, ...action.payload };\n        case 'RESET':\n            return {\n                appName: [],\n                userName: [],\n                userGroup: '',\n                dateRange: [],\n                feedback: '',\n                sensitive_status: ''\n            };\n        default:\n            return state;\n    }\n};\n\nexport default function AppUseLog() {\n    const { t } = useTranslation()\n    const { appConfig } = useContext(locationContext)\n    const { message } = useToast()\n    // 20 items per page\n    const { page, pageSize, data: datalist, total, loading, setPage, filterData } = useTable({}, (param) => {\n        const [start_date, end_date] = getStrTime(param.dateRange || [])\n        return getAuditAppListApi({\n            page: page,\n            page_size: param.pageSize,\n            flow_ids: param.appName?.length ? param.appName : undefined,\n            user_ids: param.userName?.[0]?.value || undefined,\n            group_ids: param.userGroup || undefined,\n            start_date,\n            end_date,\n            feedback: param.feedback || undefined,\n            sensitive_status: param.sensitive_status || undefined,\n        })\n    });\n    const processedData = useMemo(() =>\n        datalist.map(el => ({\n            ...el,\n            userGroupsString: el.user_groups.map(item => item.name).join(','),\n        })),\n        [datalist] // Dependency: datalist\n    );\n\n    const [filters, dispatch] = useReducer(filterReducer, {\n        appName: [],\n        userName: [],\n        userGroup: '',\n        dateRange: [],\n        feedback: '',\n        sensitive_status: ''\n    });\n\n    const resetClick = () => {\n        dispatch({ type: 'RESET' });\n        filterData({\n            appName: [],\n            userName: [],\n            userGroup: '',\n            dateRange: [],\n            feedback: '',\n            sensitive_status: ''\n        })\n    }\n    // Cache page before entering detail page, temporary solution\n    const handleCachePage = () => {\n        window.LogPage = page\n    }\n    useEffect(() => {\n        const _page = window.LogPage\n        if (_page) {\n            setPage(_page);\n            delete window.LogPage\n        } else {\n            setPage(1);\n        }\n    }, [])\n\n    const { user } = useContext(userContext)\n    const [auditing, setAuditing] = useState(false);\n    const handleExport = async () => {\n        const generateFileName = (start_date, end_date, userName) => {\n            let str = '';\n            if (start_date && end_date) {\n                const startDatePart = start_date.split(' ')[0];\n                const endDatePart = end_date.split(' ')[0];\n                str = `${startDatePart}_${endDatePart}_`;\n            }\n            return `Export_${str}${userName}_${formatDate(new Date(), 'yyyy-MM-dd_HH-mm-ss')}.csv`;\n        };\n\n        setAuditing(true);\n\n        // Handle time range logic\n        const dateRange = filters.dateRange || [];\n        let originalStart = dateRange[0];\n        let originalEnd = dateRange[1];\n\n        let adjustedStart = originalStart;\n        let adjustedEnd = originalEnd;\n        let showToast = false;\n        let toastMessage = '';\n\n        // No time range selected\n        if (!originalStart && !originalEnd) {\n            adjustedEnd = new Date();\n            adjustedStart = new Date(adjustedEnd.getTime() - 59 * 24 * 60 * 60 * 1000); // Last 60 days\n            showToast = true;\n            toastMessage = t('log.exportNoDateRange');\n        }\n        // Partial time selection (only start or end selected)\n        else if (!originalStart || !originalEnd) {\n            if (originalStart) {\n                adjustedEnd = new Date(originalStart);\n                adjustedEnd.setDate(adjustedEnd.getDate() + 59);\n            } else {\n                adjustedStart = new Date(originalEnd);\n                adjustedStart.setDate(adjustedStart.getDate() - 59);\n            }\n            showToast = true;\n            const formattedStart = formatDate(adjustedStart, 'yyyy-MM-dd');\n            const formattedEnd = formatDate(adjustedEnd, 'yyyy-MM-dd');\n            toastMessage = t('log.exportCustomDateRange', { start: formattedStart, end: formattedEnd });\n        }\n        // Time range selected, check span\n        else {\n            const diffTime = adjustedEnd.getTime() - adjustedStart.getTime();\n            const diffDays = Math.floor(diffTime / (24 * 60 * 60 * 1000)) + 1; // Total days including start and end dates\n            if (diffDays > 60) {\n                message({\n                    variant: 'error',\n                    description: t('log.exportDateRangeExceed'),\n                })\n                setAuditing(false);\n                return;\n            }\n        }\n\n        // Display toast message\n        if (showToast) {\n            message({\n                variant: 'warning',\n                description: toastMessage,\n            })\n        }\n\n        // Generate request parameters\n        const [start_date, end_date] = getStrTime([adjustedStart, adjustedEnd])\n\n        exportCsvDataApi({\n            flow_ids: filters.appName?.length ? filters.appName : undefined,\n            user_ids: filters.userName?.[0]?.value || undefined,\n            group_ids: filters.userGroup || undefined,\n            start_date,\n            end_date,\n            feedback: filters.feedback || undefined,\n            sensitive_status: filters.sensitive_status || undefined,\n        }).then(async res => {\n            const data = [\n                [\n                    t('log.csvHeaders.sessionId'),\n                    t('log.csvHeaders.appName'),\n                    t('log.csvHeaders.sessionCreationTime'),\n                    t('log.csvHeaders.userName'),\n                    t('log.csvHeaders.messageRole'),\n                    t('log.csvHeaders.messageSendTime'),\n                    t('log.csvHeaders.messageContent'),\n                    t('log.csvHeaders.like'),\n                    t('log.csvHeaders.dislike'),\n                    t('log.csvHeaders.copy'),\n                    t('log.csvHeaders.sensitiveStatus')\n                ]\n            ];\n\n            const handleMessage = (msg, category, id) => {\n                try {\n                    msg = msg && msg[0] === '{' ? JSON.parse(msg) : msg || ''\n                } catch (error) {\n                    console.error('error :>> ', `${id} ${t('log.messageConversionFailed')}`);\n                }\n                // output\n                if ('output_with_input_msg' === category) return `${msg.msg} :${msg.hisValue}`\n                if ('output_with_choose_msg' === category) return `${msg.msg} :${msg.options.find(el => el.id === msg.hisValue)?.label}`\n                const newMsg = typeof msg === 'string' ? msg : (msg.input || msg.msg)\n                return /^[=+\\-@]/.test(newMsg) ? \"'\" + newMsg : newMsg\n            }\n\n            // Data transformation\n            res.data.forEach(item => {\n                item.messages.forEach(msg => {\n                    const { message, category } = msg\n                    const usefulMsg = !['flow', 'tool_call', 'tool_result'].includes(category) && message\n                    usefulMsg && data.push([\n                        item.chat_id,\n                        item.flow_type === 15 ? t('log.workbench_daily') : item.flow_name,\n                        item.create_time.replace('T', ' '),\n                        item.user_name,\n                        msg.category === 'question' ? t('log.userRole') : t('log.aiRole'),\n                        msg.create_time.replace('T', ' '),\n                        handleMessage(message, msg.category, item.flow_id + '_' + item.chat_id),\n                        msg.liked === 1 ? t('log.yes') : t('log.no'),\n                        msg.liked === 2 ? t('log.yes') : t('log.no'),\n                        msg.copied ? t('log.yes') : t('log.no'),\n                        msg.sensitive_status === 1 ? t('log.no') : t('log.yes')\n                    ])\n                })\n            })\n            // Export to Excel\n            const fileName = generateFileName(start_date, end_date, user.user_name);\n            exportCsv(data, fileName, true)\n\n            // await downloadFile(__APP_ENV__.BASE_URL + res.url, fileName);\n            setAuditing(false);\n        }).catch((error) => {\n            setAuditing(false);\n            // Optional: handle error cases\n        });\n    };\n\n\n    return <div className=\"relative\">\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <LoadingIcon />\n        </div>}\n        <div className=\"h-[calc(100vh-128px)] overflow-y-auto px-2 py-4 pb-20\">\n            <div className=\"flex flex-wrap gap-4\">\n                <FilterByApp value={filters.appName} placeholder={t('log.appName')} onChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['appName']: value } })} />\n                <FilterByUser value={filters.userName} placeholder={t('log.userName')} onChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['userName']: value } })} />\n                <FilterByUsergroup value={filters.userGroup} placeholder={t('log.userGroup')} onChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['userGroup']: value } })} />\n                <FilterByDate value={filters.dateRange} placeholders={[`${t('log.startDate')}`, `${t('log.endDate')}`]} onChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['dateRange']: value } })} />\n                <div className=\"w-[200px] relative\">\n                    <Select value={filters.feedback} onValueChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['feedback']: value } })}>\n                        <SelectTrigger className=\"w-[200px]\">\n                            <SelectValue placeholder={t('log.userFeedbackPlaceholder')} />\n                        </SelectTrigger>\n                        <SelectContent className=\"max-w-[200px] break-all\">\n                            <SelectGroup>\n                                <SelectItem value={'like'}>{t('log.likeFeedback')}</SelectItem>\n                                <SelectItem value={'dislike'}>{t('log.dislikeFeedback')}</SelectItem>\n                                <SelectItem value={'copied'}>{t('log.copyFeedback')}</SelectItem>\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>\n                {appConfig.isPro && <div className=\"w-[200px] relative\">\n                    <Select value={filters.sensitive_status} onValueChange={(value) => dispatch({ type: 'SET_FILTER', payload: { ['sensitive_status']: value } })} >\n                        <SelectTrigger className=\"w-[200px]\">\n                            <SelectValue placeholder={t('log.sensitiveReviewResult')} />\n                        </SelectTrigger>\n                        <SelectContent className=\"max-w-[200px] break-all\">\n                            <SelectGroup>\n                                <SelectItem value={'2'}>{t('log.sensitiveViolation')}</SelectItem>\n                                <SelectItem value={'1'}>{t('log.sensitivePass')}</SelectItem>\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>}\n                <Button onClick={() => {\n                    const dateRange = filters.dateRange || [];\n                    let originalStart = dateRange[0];\n                    let originalEnd = dateRange[1];\n                    let adjustedStart = originalStart;\n                    let adjustedEnd = originalEnd;\n                    if (originalStart && !originalEnd) {\n                        adjustedEnd = undefined;\n                    } else if (!originalStart && originalEnd) {\n                        adjustedStart = undefined;\n                    }\n\n                    filterData({ ...filters, dateRange: [adjustedStart, adjustedEnd] })\n                }} >{t('log.searchButton')}</Button>\n                <Button onClick={resetClick} variant=\"outline\">{t('log.resetButton')}</Button>\n                <Button onClick={handleExport} disabled={auditing}>\n                    {auditing && <LoadIcon className=\"mr-1\" />}{t('log.exportButton')}</Button>\n            </div>\n            <Table>\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[200px]\">{t('log.appName')}</TableHead>\n                        <TableHead>{t('log.userName')}</TableHead>\n                        <TableHead>{t('log.userGroup')}</TableHead>\n                        <TableHead>{t('createTime')}</TableHead>\n                        <TableHead>{t('log.userFeedback')}</TableHead>\n                        {appConfig.isPro && <TableHead>{t('log.sensitiveReviewResult')}</TableHead>}\n                        <TableHead className=\"text-right\">{t('operations')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n\n                <TableBody>\n                    {processedData.map((el: any) => (\n                        <TableRow key={el.id}>\n                            <TableCell className=\"font-medium max-w-[200px]\">\n                                {/* <div className=\" truncate-multiline\"></div> */}\n                                <div className=\"truncate-multiline\">\n                                    {el.flow_type === 15 ? t('log.workbench_daily') : el.flow_name}\n                                </div>\n                            </TableCell>\n                            <TableCell>{el.user_name}</TableCell>\n                            <TableCell>{el.userGroupsString}</TableCell>\n                            <TableCell>{el.create_time.replace('T', ' ')}</TableCell>\n                            <TableCell className=\"break-all flex gap-2\">\n                                <div className=\"text-center text-xs relative\">\n                                    <ThunmbIcon\n                                        type='like'\n                                        className={`cursor-pointer ${el.like_count && 'text-primary hover:text-primary'}`}\n                                    />\n                                    <span className=\"left-4 top-[-4px] break-keep\">{el.like_count}</span>\n                                </div>\n                                <div className=\"text-center text-xs relative\">\n                                    <ThunmbIcon\n                                        type='unLike'\n                                        className={`cursor-pointer ${el.dislike_count && 'text-primary hover:text-primary'}`}\n                                    />\n                                    <span className=\"left-4 top-[-4px] break-keep\">{el.dislike_count}</span>\n                                </div>\n                                <div className=\"text-center text-xs relative\">\n                                    <ThunmbIcon\n                                        type='copy'\n                                        className={`cursor-pointer ${el.copied_count && 'text-primary hover:text-primary'}`}\n                                    />\n                                    <span className=\"left-4 top-[-4px] break-keep\">{el.copied_count}</span>\n                                </div>\n                            </TableCell>\n                            {appConfig.isPro && <TableCell>\n                                {el.sensitive_status === 1 ? <Badge variant=\"outline\" className=\"text-green-500\">{t('log.sensitivePass')}</Badge>\n                                    : <Badge variant=\"outline\" className=\"text-red-500\">{t('log.sensitiveViolation')}</Badge>\n                                }\n                            </TableCell>}\n                            <TableCell className=\"text-right\" onClick={() => {\n                                // @ts-ignore\n                                // window.libname = el.name;\n                            }}>\n                                {/* <Button variant=\"link\" className=\"\" onClick={() => setOpenData(true)}>Add to dataset</Button> */}\n                                {\n                                    el.chat_id && <Link\n                                        to={el.flow_type === 15 ? `/log/chatlog/${el.chat_id}` : `/log/chatlog/${el.flow_id}/${el.chat_id}/${el.flow_type}`}\n                                        className=\"no-underline hover:underline text-primary\"\n                                        onClick={handleCachePage}\n                                    >{t('lib.details')}</Link>\n                                }\n                            </TableCell>\n                        </TableRow>\n                    )\n                    )}\n                </TableBody>\n            </Table>\n        </div>\n        <div className=\"bisheng-table-footer px-6 bg-background-login\">\n            <p className=\"desc\"></p>\n            <div>\n                <AutoPagination\n                    page={page}\n                    showJumpInput\n                    jumpToText={t('log.pagination.jumpTo')}\n                    pageText={t('log.pagination.page')}\n                    pageSize={pageSize}\n                    total={total}\n                    onChange={(newPage) => setPage(newPage)}\n                />\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LoginPage/UserPwdModal.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { PasswordInput } from \"@/components/bs-ui/input\";\nimport { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n// import { resetUserPasswordApi } from \"../controllers/API/user\"; // 假设这是重置密码的API函数\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { resetPasswordApi } from \"@/controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { handleEncrypt, PWD_RULE } from \"./utils\";\n\ninterface UserPwdModalProps {\n    // onSuccess: () => void;\n}\n\ninterface UserPwdModalRef {\n    open: (userId: string) => void;\n}\n\nconst UserPwdModal = forwardRef<UserPwdModalRef, UserPwdModalProps>((props, ref) => {\n    const { t } = useTranslation();\n    const { message } = useToast();\n\n    const [editShow, setEditShow] = useState(false);\n    const [error, setError] = useState('');\n    const passwordRef = useRef(null)\n    const userIdRef = useRef(null);\n\n    useImperativeHandle(ref, () => ({\n        open: (userId) => {\n            userIdRef.current = userId;\n            setEditShow(true);\n        }\n    }));\n\n    const handleSubmit = async () => {\n        // if (!PWD_RULE.test(passwordRef.current.value)) {\n        //     return setError(t('login.passwordError'))\n        // }\n        const errors:string[] = []\n        if(!passwordRef.current.value) errors.push(t('resetPassword.notEmpty'))\n        if (!/.{8,}/.test(passwordRef.current.value)) errors.push(t('resetPassword.newPasswordTooShort'))\n        if (!PWD_RULE.test(passwordRef.current.value)) errors.push(t('login.passwordError'))\n\n        if(errors.length) return message({title: t('prompt'), variant: 'error', description: errors})\n            \n        const cryptPwd = await handleEncrypt(passwordRef.current.value)\n        const res = await captureAndAlertRequestErrorHoc(resetPasswordApi(userIdRef.current, cryptPwd))\n        if (res === null) {\n            message({\n                title: `${t('prompt')}`,\n                variant: 'success',\n                description: [t('resetPassword.adminResetSuccess')]\n            });\n            setEditShow(false);\n            // onSuccess();\n        }\n    };\n\n    return (\n        <Dialog open={editShow} onOpenChange={setEditShow}>\n            <DialogContent className=\"sm:max-w-[625px]\">\n                <DialogHeader>\n                    <DialogTitle>{t('resetPassword.resetButton')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-col gap-8 py-6\">\n                    <div>\n                        <label htmlFor=\"password\" className=\"bisheng-label\">{t('resetPassword.newPassword')}<span className=\"bisheng-tip\">*</span></label>\n                        <PasswordInput\n                            ref={passwordRef}\n                            id=\"password\"\n                            name=\"password\"\n                            placeholder={t('resetPassword.newPassword')}\n                            className=\"mt-2\"\n                            onChange={(e) => passwordRef.current.value = e.target.value}\n                        />\n                        {error && <p className=\"bisheng-tip mt-1\">{error}</p>}\n                    </div>\n                </div>\n                <DialogFooter>\n                    <DialogClose>\n                        <Button variant=\"outline\" className=\"px-11\" type=\"button\">{t('cancle')}</Button>\n                    </DialogClose>\n                    <Button type=\"button\" className=\"px-11\" onClick={handleSubmit}>{t('confirmButton')}</Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    );\n});\n\nexport default UserPwdModal;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LoginPage/login.tsx",
    "content": "import { BookOpenIcon } from '@/components/bs-icons/bookOpen';\nimport { GithubIcon } from '@/components/bs-icons/github';\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport json from \"../../../package.json\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport { Input } from \"../../components/bs-ui/input\";\n// import { alertContext } from \"../contexts/alertContext\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { getCaptchaApi, loginApi, registerApi } from \"../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport LoginBridge from './loginBridge';\nimport { PWD_RULE, handleEncrypt, handleLdapEncrypt } from './utils';\nimport { locationContext } from '@/contexts/locationContext';\nimport { ldapLoginApi } from '@/controllers/API/pro';\n\nexport const LoginPage = () => {\n    // const { setErrorData, setSuccessData } = useContext(alertContext);\n    const { t, i18n } = useTranslation();\n    const { message, toast } = useToast()\n    const navigate = useNavigate()\n    const { appConfig } = useContext(locationContext)\n    const isLoading = false\n\n    const mailRef = useRef(null)\n    const pwdRef = useRef(null)\n    const agenPwdRef = useRef(null)\n\n    // login or register\n    const [showLogin, setShowLogin] = useState(true)\n\n    useLoginError()\n\n    // captcha\n    const captchaRef = useRef(null)\n    const [captchaData, setCaptchaData] = useState({ captcha_key: '', user_capthca: false, captcha: '' });\n\n    useEffect(() => {\n        fetchCaptchaData();\n    }, []);\n\n    const fetchCaptchaData = () => {\n        getCaptchaApi().then(setCaptchaData)\n    };\n\n    const [isLDAP, setIsLDAP] = useState(false)\n    const handleLogin = async () => {\n        const error = []\n        const [mail, pwd] = [mailRef.current.value, pwdRef.current.value]\n        if (!mail) error.push(t('login.pleaseEnterAccount'))\n        if (!pwd) error.push(t('login.pleaseEnterPassword'))\n        if (captchaData.user_capthca && !captchaRef.current.value) error.push(t('login.pleaseEnterCaptcha'))\n        if (error.length) return message({\n            title: `${t('prompt')}`,\n            variant: 'warning',\n            description: error\n        })\n        // if (error.length) return setErrorData({\n        //     title: `${t('prompt')}:`,\n        //     list: error,\n        // });\n\n        const encryptPwd = isLDAP ? await handleLdapEncrypt(pwd) : await handleEncrypt(pwd)\n        captureAndAlertRequestErrorHoc(\n            (isLDAP\n                ? ldapLoginApi(mail, encryptPwd)\n                : loginApi(mail, encryptPwd, captchaData.captcha_key, captchaRef.current?.value)\n            ).then((res: any) => {\n                window.self === window.top ? localStorage.removeItem('ws_token') : localStorage.setItem('ws_token', res.access_token)\n                localStorage.setItem('isLogin', '1')\n                const pathname = localStorage.getItem('LOGIN_PATHNAME')\n                if (pathname) {\n                    // After the login session expires, redirect back to the login page. After successful login, redirect back to the page before login. \n                    localStorage.removeItem('LOGIN_PATHNAME')\n                    location.href = pathname\n                } else {\n                    const path = import.meta.env.DEV ? '/admin' : '/workspace/'\n                    const rootUrl = `${location.origin}${__APP_ENV__.BASE_URL}${path}`\n                    location.href = `${__APP_ENV__.BASE_URL}${location.pathname}` === '/' ? rootUrl : location.href\n                }\n            }), (error) => {\n                if (error.indexOf('过期') !== -1) { // 有时间改为 code 判断\n                    localStorage.setItem('account', mail)\n                    navigate('/reset', { state: { noback: true } })\n                }\n            })\n\n        fetchCaptchaData()\n    }\n\n    const handleRegister = async () => {\n        const error = []\n        const [mail, pwd, apwd] = [mailRef.current.value, pwdRef.current.value, agenPwdRef.current.value]\n        if (!mail) {\n            error.push(t('login.pleaseEnterAccount'))\n        }\n        if (mail.length < 3) {\n            error.push(t('login.accountTooShort'))\n        }\n        if (!/.{8,}/.test(pwd)) {\n            error.push(t('login.passwordTooShort'))\n        }\n        if (!PWD_RULE.test(pwd)) {\n            error.push(t('login.passwordError'))\n        }\n        if (pwd !== apwd) {\n            error.push(t('login.passwordMismatch'))\n        }\n        if (captchaData.user_capthca && !captchaRef.current.value) {\n            error.push(t('login.pleaseEnterCaptcha'))\n        }\n        if (error.length) {\n            return message({\n                title: `${t('prompt')}`,\n                variant: 'warning',\n                description: error\n            })\n        }\n        const encryptPwd = await handleEncrypt(pwd)\n        captureAndAlertRequestErrorHoc(registerApi(mail, encryptPwd, captchaData.captcha_key, captchaRef.current?.value).then(res => {\n            // setSuccessData({ title: t('login.registrationSuccess') })\n            message({\n                title: `${t('prompt')}`,\n                variant: 'success',\n                description: [t('login.registrationSuccess')]\n            })\n            pwdRef.current.value = ''\n            setShowLogin(true)\n        }))\n\n        fetchCaptchaData()\n    }\n\n    return <div className='w-full h-full bg-background-dark'>\n        <div className='fixed z-10 sm:w-[1280px] w-full sm:h-[720px] h-full translate-x-[-50%] translate-y-[-50%] left-[50%] top-[50%] border rounded-lg shadow-xl overflow-hidden bg-background-login'>\n            <div className='w-[420px] h-[704px] m-[8px] hidden sm:block relative z-20'>\n                <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/login-logo-big.png'} alt=\"logo_picture\" className='w-full h-full dark:hidden' />\n                <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/login-logo-dark.png'} alt=\"logo_picture\" className='w-full h-full hidden dark:block' />\n                {/* <iframe src={__APP_ENV__.BASE_URL + '/face.html'} className='w-full h-full'></iframe> */}\n            </div>\n            <div className='absolute w-full h-full z-10 flex justify-end top-0'>\n                <div className='w-[852px] sm:px-[266px] px-[20px] pyx-[200px] bg-background-login relative'>\n                    <div>\n                        <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/login-logo-small.png'} className=\"block w-[114px] h-[36px] m-auto mt-[140px] dark:w-[124px] dark:pr-[10px] dark:hidden\" alt=\"\" />\n                        <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/logo-small-dark.png'} className=\"w-[114px] h-[36px] m-auto mt-[140px] dark:w-[124px] dark:pr-[10px] dark:block hidden\" alt=\"\" />\n                        <span className='block w-fit m-auto font-normal text-[14px] text-tx-color mt-[24px]'>{t('login.slogen')}</span>\n                    </div>\n                    <div className=\"grid gap-[12px] mt-[68px]\">\n                        <div className=\"grid\">\n                            <Input\n                                id=\"email\"\n                                className='h-[48px] dark:bg-login-input'\n                                ref={mailRef}\n                                placeholder={t('login.account')}\n                                type=\"email\"\n                                autoCapitalize=\"none\"\n                                autoComplete=\"email\"\n                                autoCorrect=\"off\"\n                            />\n                        </div>\n                        <div className=\"grid\">\n                            <Input\n                                id=\"pwd\"\n                                className='h-[48px] dark:bg-login-input'\n                                ref={pwdRef}\n                                placeholder={t('login.password')}\n                                type=\"password\"\n                                onKeyDown={e => e.key === 'Enter' && showLogin && handleLogin()} />\n                        </div>\n                        {\n                            !showLogin && <div className=\"grid\">\n                                <Input id=\"pwd\"\n                                    className='h-[48px] dark:bg-login-input'\n                                    ref={agenPwdRef}\n                                    placeholder={t('login.confirmPassword')}\n                                    type=\"password\" />\n                            </div>\n                        }\n                        {\n                            captchaData.user_capthca && (<div className=\"flex items-center gap-4\">\n                                <Input\n                                    type=\"text\"\n                                    ref={captchaRef}\n                                    placeholder={t('login.pleaseEnterCaptcha')}\n                                    className=\"form-input px-4 py-2 border border-gray-300 focus:outline-none\"\n                                />\n                                <img\n                                    src={'data:image/jpg;base64,' + captchaData.captcha} // 这里应该是你的验证码图片的URL\n                                    alt=\"captcha\"\n                                    onClick={fetchCaptchaData} // 这里应该是你的刷新验证码函数\n                                    className=\"cursor-pointer h-10 bg-gray-100 border border-gray-300\"\n                                    style={{ width: '120px' }} // 根据需要调整宽度\n                                />\n                            </div>\n                            )\n                        }\n                        {\n                            showLogin ? <>\n                                <div className=\"text-center\">\n                                    {!isLDAP && appConfig.register && <a href=\"javascript:;\" className=\" text-blue-500 text-sm hover:underline\" onClick={() => setShowLogin(false)}>{t('login.noAccountRegister')}</a>}\n                                </div>\n                                <Button\n                                    className='h-[48px] mt-[32px] dark:bg-button'\n                                    disabled={isLoading} onClick={handleLogin} >{t('login.loginButton')}</Button>\n                            </> :\n                                <>\n                                    <div className=\"text-center\">\n                                        <a href=\"javascript:;\" className=\" text-blue-500 text-sm hover:underline\" onClick={() => setShowLogin(true)}>{t('login.haveAccountLogin')}</a>\n                                    </div>\n                                    <Button\n                                        className='h-[48px] mt-[32px] dark:bg-button'\n                                        disabled={isLoading} onClick={handleRegister} >{t('login.registerButton')}</Button>\n                                </>\n                        }\n                        {appConfig.isPro && <LoginBridge onHasLdap={setIsLDAP} />}\n                    </div>\n                    <div className=\" absolute right-[16px] bottom-[16px] flex\">\n                        <span className=\"mr-4 text-sm text-gray-400 relative top-2\">v{json.version}</span>\n                        {!appConfig.noFace && <div className='help flex'>\n                            <a href={\"https://github.com/dataelement/bisheng\"} target=\"_blank\">\n                                <GithubIcon className=\"block h-[40px] w-[40px] gap-1 border p-[10px] rounded-[8px] mx-[8px] hover:bg-[#1b1f23] hover:text-[white] hover:cursor-pointer\" />\n                            </a>\n                            <a href={\"https://m7a7tqsztt.feishu.cn/wiki/ZxW6wZyAJicX4WkG0NqcWsbynde\"} target=\"_blank\">\n                                <BookOpenIcon className=\"block h-[40px] w-[40px] gap-1 border p-[10px] rounded-[8px]  hover:bg-[#0055e3] hover:text-[white] hover:cursor-pointer\" />\n                            </a>\n                        </div>}\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n};\n\n\n\n\nexport const useLoginError = () => {\n    const location = useLocation();\n    const { toast } = useToast();\n    const { t } = useTranslation();\n\n    useEffect(() => {\n        const queryParams = new URLSearchParams(location.search);\n        const code = queryParams.get('status_code')\n        if (code) {\n            toast({\n                variant: 'error',\n                description: t('errors.' + code)\n            })\n        }\n    }, [location])\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/LoginPage/loginBridge.tsx",
    "content": "import Separator from \"@/components/bs-comp/chatComponent/Separator\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { getSSOurlApi } from \"@/controllers/API/pro\";\nimport { useEffect, useState } from \"react\";\n//@ts-ignore\nimport Wxpro from \"./icons/wxpro.svg?react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function LoginBridge({ onHasLdap }) {\n\n    const { t } = useTranslation()\n\n    const [ssoUrl, setSsoUrl] = useState<string>('')\n    const [wxUrl, setWxUrl] = useState<string>('')\n\n    useEffect(() => {\n        getSSOurlApi().then((urls: any) => {\n            setSsoUrl(urls.sso) // TODO: 携带重定向链接：localStorage.getItem('LOGIN_PATHNAME')\n            setWxUrl(urls.wx)\n            urls.ldap && onHasLdap(true)\n        })\n    }, [])\n\n    if (!ssoUrl && !wxUrl) return null\n\n    return <div>\n        <Separator className=\"my-4\" text={t('login.otherMethods')}></Separator>\n        <div className=\"flex justify-center items-center gap-4\">\n            {ssoUrl && <Button size=\"icon\" className=\"rounded-full\" onClick={() => location.href = ssoUrl}>SSO</Button>}\n            {wxUrl && <Button size=\"icon\" variant=\"ghost\" onClick={() => location.href = wxUrl}><Wxpro /></Button>}\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LoginPage/resetPwd.tsx",
    "content": "import { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { useEffect, useRef } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Button } from \"../../components/bs-ui/button\";\nimport { PasswordInput } from \"../../components/bs-ui/input\";\nimport { changePasswordApi, loggedChangePasswordApi } from \"../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { PWD_RULE, handleEncrypt } from './utils';\n\nexport const ResetPwdPage = () => {\n    const { t } = useTranslation();\n    const { message } = useToast();\n    const { state } = useLocation()\n    const navigate = useNavigate()\n\n    useEffect(() => {\n        state?.noback && message({\n            title: `${t('prompt')}`,\n            variant: 'warning',\n            description: '您的密码已过期，请及时修改'\n        })\n    }, [])\n\n    const currentPwdRef = useRef<HTMLInputElement>(null);\n    const newPwdRef = useRef<HTMLInputElement>(null);\n    const confirmPwdRef = useRef<HTMLInputElement>(null);\n\n    const handleResetPassword = async () => {\n        const errors: string[] = [];\n        const [currentPwd, newPwd, confirmPwd] = [\n            currentPwdRef.current?.value,\n            newPwdRef.current?.value,\n            confirmPwdRef.current?.value\n        ];\n\n        if (!currentPwd) errors.push(t('resetPassword.pleaseEnterCurrentPassword'));\n        if (!newPwd) errors.push(t('resetPassword.pleaseEnterNewPassword'));\n        if (!confirmPwd) errors.push(t('resetPassword.pleaseEnterConfirmPassword'));\n        if (!/.{8,}/.test(newPwd)) errors.push(t('resetPassword.newPasswordTooShort'));\n        if (!PWD_RULE.test(newPwd)) errors.push(t('login.passwordError'))\n        if (newPwd !== confirmPwd) errors.push(t('resetPassword.passwordMismatch'));\n\n        if (errors.length) {\n            return message({\n                title: `${t('prompt')}`,\n                variant: 'warning',\n                description: errors\n            });\n        }\n\n        const account = localStorage.getItem('account');\n        const encryptCurrentPwd = await handleEncrypt(currentPwd);\n        const encryptNewPwd = await handleEncrypt(newPwd);\n\n        console.log(state)\n        const res = await captureAndAlertRequestErrorHoc(state ? changePasswordApi(account, encryptCurrentPwd, encryptNewPwd) : loggedChangePasswordApi(encryptCurrentPwd, encryptNewPwd))\n        if (res === null) {\n            message({\n                title: `${t('prompt')}`,\n                variant: 'success',\n                description: [t('resetPassword.passwordResetSuccess')]\n            });\n            // Clear input fields\n            if (currentPwdRef.current) currentPwdRef.current.value = '';\n            if (newPwdRef.current) newPwdRef.current.value = '';\n            if (confirmPwdRef.current) confirmPwdRef.current.value = '';\n            // if (!state?.noback) {\n            navigate(-1);\n            // }\n        }\n        // }));\n    };\n\n    return (\n        <div className='w-full h-full bg-background-dark'>\n            <div className='fixed z-10 sm:w-[600px] px-[120px] w-full sm:h-[720px] h-full translate-x-[-50%] translate-y-[-50%] left-[50%] top-[50%] border rounded-lg shadow-xl overflow-hidden bg-background-login'>\n                {!state?.noback && <Button\n                    variant='outline'\n                    size='icon'\n                    className='absolute left-4 top-4'\n                    onClick={() => navigate(-1)}\n                ><ArrowLeft /></Button>}\n                <div className='bg-background-login relative'>\n                    <div>\n                        <img src={__APP_ENV__.BASE_URL + '/assets/bisheng/login-logo-small.png'} alt=\"small_logo\" className='block w-[114px] h-[36px] m-auto mt-[140px]' />\n                        <span className='block w-fit m-auto font-normal text-[14px] text-tx-color mt-[24px]'>{t('resetPassword.slogen')}</span>\n                    </div>\n                    <div className=\"grid gap-[12px] mt-[68px]\">\n                        <div className=\"grid\">\n                            <PasswordInput\n                                id=\"currentPassword\"\n                                inputClassName='h-[48px] dark:bg-login-input'\n                                ref={currentPwdRef}\n                                placeholder={t('resetPassword.currentPassword')}\n                            />\n                        </div>\n                        <div className=\"grid\">\n                            <PasswordInput\n                                id=\"newPassword\"\n                                inputClassName='h-[48px] dark:bg-login-input'\n                                ref={newPwdRef}\n                                placeholder={t('resetPassword.newPassword')}\n                            />\n                        </div>\n                        <div className=\"grid\">\n                            <PasswordInput\n                                id=\"confirmNewPassword\"\n                                inputClassName='h-[48px] dark:bg-login-input'\n                                ref={confirmPwdRef}\n                                placeholder={t('resetPassword.confirmNewPassword')}\n                            />\n                        </div>\n                        <Button\n                            className='h-[48px] mt-[32px] dark:bg-button'\n                            onClick={handleResetPassword}\n                        >\n                            {t('resetPassword.resetButton')}\n                        </Button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport default ResetPwdPage;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/LoginPage/utils.ts",
    "content": "import { getPublicKeyApi } from \"@/controllers/API/user\";\nimport { getKeyApi } from \"@/controllers/API/pro\";\nimport { JSEncrypt } from 'jsencrypt';\n\nexport const handleEncrypt = async (pwd: string): Promise<string> => {\n    const { public_key } = await getPublicKeyApi();\n    const encrypt = new JSEncrypt();\n    encrypt.setPublicKey(public_key);\n    return encrypt.encrypt(pwd) as string;\n};\n\nexport const handleLdapEncrypt = async (pwd: string): Promise<string> => {\n    const public_key:any = await getKeyApi();\n    const encrypt = new JSEncrypt();\n    encrypt.setPublicKey(public_key);\n    return encrypt.encrypt(pwd) as string;\n};\n\nexport const PWD_RULE = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[\\W_]).{8,}$/"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/Combobox.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\"\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from \"@/components/bs-ui/command\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { cn } from \"../../../utils\"\n\ninterface IProps {\n    options: any[],\n    value?: string\n    labelKey?: string,\n    valueKey?: string,\n    defaultValue?: string,\n    placeholder?: string,\n    onChange?: (val: string) => void\n}\n\nexport default function Combobox({\n    value, onChange, defaultValue = '', options, placeholder = '', labelKey = 'label', valueKey = 'value'\n}: IProps) {\n    const [open, setOpen] = useState(false)\n    const [localValue, setLocalValue] = useState(defaultValue)\n    value = value || localValue\n    // console.log('options :>> ', options);\n\n    return <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n            <Button\n                variant=\"outline\"\n                role=\"combobox\"\n                aria-expanded={open}\n                className=\"w-[280px] justify-between\"\n            >\n                {\n                    value\n                        ? options.find((option) => option[valueKey] + '' === value)?.[labelKey]\n                        : <span>{placeholder}</span>\n                }\n                <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n            </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-[200px] p-0\">\n            <Command filter={(value, search) => {\n                // TODO cmdk0.2.2使用 keywords 过滤\n                const name = options.find((option) => option[valueKey] + '' === value)?.[labelKey]\n                if (!name) return 0\n                if (name.toLocaleUpperCase().includes(search.toLocaleUpperCase())) return 1\n                return 0\n            }}>\n                <CommandInput placeholder=\"\" className=\"h-9\" />\n                <CommandEmpty></CommandEmpty>\n                <CommandGroup className=\"max-h-[400px] overflow-y-auto\">\n                    {options.map((option) => (\n                        <CommandItem\n                            key={option[valueKey]}\n                            value={option[valueKey] + ''}\n                            onSelect={(currentValue) => {\n                                setLocalValue(currentValue)\n                                onChange?.(currentValue)\n                                setOpen(false)\n                            }}\n                        >\n                            {option[labelKey]}\n                            <Check\n                                className={cn(\n                                    \"ml-auto h-4 w-4\",\n                                    value === option[valueKey] + '' ? \"opacity-100\" : \"opacity-0\"\n                                )}\n                            />\n                        </CommandItem>\n                    ))}\n                </CommandGroup>\n            </Command>\n        </PopoverContent>\n    </Popover>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/CreateTask.tsx",
    "content": "import { HelpCircle } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport {\n    Select,\n    SelectContent,\n    SelectGroup,\n    SelectItem,\n    SelectTrigger,\n    SelectValue\n} from \"../../../components/bs-ui/select\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../../../components/bs-ui/tooltip\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { Input } from \"../../../components/bs-ui/input\";\nimport { Label } from \"../../../components/bs-ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"../../../components/bs-ui/radio-group\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../../../components/bs-ui/table\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport { getFTServicesApi, getServicesApi } from \"../../../controllers/API\";\nimport { createTaskApi } from \"../../../controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport Combobox from \"./Combobox\";\nimport CreateTaskList from \"./CreateTaskList\";\n\nexport default function CreateTask({ rtClick, gpuClick, onCancel, onCreate }) {\n    const { t } = useTranslation('model')\n    const defaultTable = [\n        { name: 'gpus', value: '', desc: t('finetune.gpuDesc') },\n        { name: 'val_ratio', value: '0.1', desc: t('finetune.valRatioDesc') },\n        { name: 'per_device_train_batch_size', value: '1', desc: t('finetune.batchSizeDesc') },\n        { name: 'learning_rate', value: '0.00005', desc: t('finetune.learningRateDesc') },\n        { name: 'num_train_epochs', value: '3', desc: t('finetune.numEpochsDesc') },\n        { name: 'max_seq_len', value: '8192', desc: t('finetune.maxSeqLenDesc') },\n        { name: 'cpu_load', value: 'false', desc: t('finetune.cpuLoadDesc') },\n    ]\n\n    const [table] = useState(defaultTable)\n    const { setErrorData } = useContext(alertContext);\n\n    // 表单数据\n    const resultRef = useRef({\n        method: 'full',\n        server: '',\n        base_model: '',\n        model_name: '',\n        extra_params:\n            defaultTable.reduce((res, el) => {\n                res[el.name] = el.value\n                return res\n            }, {})\n    })\n\n    const { services, models, selectService } = useOptions()\n    const handleRtChange = async (val) => {\n        resultRef.current['server'] = val\n        selectService(val)\n    }\n\n\n    const [loading, setLoading] = useState(false)\n    const handleCreate = async () => {\n        // 数据校验\n        const errors = []\n        if (!resultRef.current.server) errors.push(t('finetune.selectRTService'))\n        if (!resultRef.current.base_model) errors.push(t('finetune.selectBaseModel'))\n        if (!/^(?=.*[a-zA-Z])(?=.*\\d)?[a-zA-Z\\d_-]+$/.test(resultRef.current.model_name)) errors.push(t('finetune.enterModelName'))\n        if (errors.length) return setErrorData({ title: '', list: errors });\n        // 合并数据\n        console.log('object :>> ', resultRef.current);\n        setLoading(true)\n        // api\n        const res = await captureAndAlertRequestErrorHoc(createTaskApi(resultRef.current))\n        setLoading(false)\n        if (!res) return\n\n        onCreate(res.id)\n    }\n\n    return <div className=\"pt-2 h-[calc(100vh-162px)] px-2 overflow-y-auto\">\n        <div className=\"border-b pb-2 flex justify-between items-center\">\n            <h1 className=\"\">{t('finetune.createTrainingTask')}</h1>\n            {/* <Button variant=\"black\" onClick={rtClick}>FT服务管理</Button> */}\n            <Button variant=\"black\" onClick={rtClick}>{t('finetune.rtServiceManagement')}</Button>\n        </div>\n        {/* base */}\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500 flex gap-2 items-center\">\n                    <span>{t('finetune.rtService')}</span>\n                    {/* <TooltipProvider>\n                        <Tooltip>\n                            <TooltipTrigger><HelpCircle size={18} /></TooltipTrigger>\n                            <TooltipContent>\n                                <p>{t('finetune.rtServiceTooltip')}</p>\n                            </TooltipContent>\n                        </Tooltip>\n                    </TooltipProvider> */}\n                </small>\n                <div className=\"flex gap-4 items-center\">\n                    <Select onValueChange={handleRtChange}>\n                        <SelectTrigger className=\"w-[280px]\">\n                            <SelectValue placeholder=\"\" />\n                        </SelectTrigger>\n                        <SelectContent>\n                            <SelectGroup>\n                                {\n                                    services.map(service => <SelectItem key={service.id} value={service.id}>{service.name}</SelectItem>)\n                                }\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                    <Button size=\"sm\" onClick={gpuClick}>{t('finetune.gpuResourceUsage')}</Button>\n                </div>\n            </div>\n            {/* datas */}\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.baseModel')}</small>\n                <Combobox\n                    options={models}\n                    labelKey=\"model\"\n                    valueKey=\"id\"\n                    onChange={(val) => resultRef.current['base_model'] = val}\n                ></Combobox>\n            </div>\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.finetuneModelName')}</small>\n                <Input maxLength={50} showCount className=\"max-w-[400px]\" onChange={(e) => resultRef.current['model_name'] = e.target.value}></Input>\n            </div>\n        </div>\n        {/* datas */}\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.dataset')}</small>\n                <CreateTaskList onChange={(key, data) => resultRef.current[key] = data}></CreateTaskList>\n            </div>\n        </div>\n        {/* table */}\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.trainingMethod')}</small>\n                <div className=\"mt-1\">\n                    <RadioGroup defaultValue=\"full\" className=\"flex gap-6\" onValueChange={(val) => resultRef.current['method'] = val}>\n                        <div className=\"flex items-center space-x-2\">\n                            <RadioGroupItem value=\"full\" id=\"r1\" />\n                            <Label htmlFor=\"r1\">{t('finetune.fullFineTune')}</Label>\n                        </div>\n                        <div className=\"flex items-center space-x-2\">\n                            <RadioGroupItem value=\"freeze\" id=\"r2\" />\n                            <Label htmlFor=\"r2\">{t('finetune.freeze')}</Label>\n                        </div>\n                        <div className=\"flex items-center space-x-2\">\n                            <RadioGroupItem value=\"lora\" id=\"r3\" />\n                            <Label htmlFor=\"r3\">{t('finetune.lora')}</Label>\n                        </div>\n                    </RadioGroup>\n                </div>\n            </div>\n\n            <div className=\"flex gap-4 flex-col mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500 flex gap-2 items-center\">\n                    <span>{t('finetune.parameterConfiguration')}</span>\n                    <TooltipProvider>\n                        <Tooltip>\n                            <TooltipTrigger><HelpCircle size={16} /></TooltipTrigger>\n                            <TooltipContent>\n                                <p>{t('finetune.parameterConfigurationTooltip')}</p>\n                            </TooltipContent>\n                        </Tooltip>\n                    </TooltipProvider>\n                </small>\n                <div>\n                    <Table>\n                        <TableHeader>\n                            <TableRow>\n                                <TableHead className=\"w-[100px]\">{t('finetune.parameter')}</TableHead>\n                                <TableHead>{t('finetune.quantity')}</TableHead>\n                                <TableHead>{t('finetune.description')}</TableHead>\n                            </TableRow>\n                        </TableHeader>\n                        <TableBody>\n                            {\n                                table.map((item, index) =>\n                                    <TableRow key={index}>\n                                        <TableCell className=\"font-medium\">{item.name}</TableCell>\n                                        <TableCell>\n                                            <Input className=\"text-sm w-[180px]\" defaultValue={item.value} onChange={(e) => resultRef.current['extra_params'][item.name] = e.target.value}></Input>\n                                        </TableCell>\n                                        <TableCell>{item.desc}</TableCell>\n                                    </TableRow>\n                                )\n                            }\n                        </TableBody>\n                    </Table>\n                </div>\n            </div>\n        </div>\n        <div className=\"mt-6 flex gap-6\">\n            <Button disabled={loading} className=\"h-10 px-12\" onClick={handleCreate}>{t('bs:create')}</Button>\n            <Button disabled={loading} className=\"h-10 px-12\" variant=\"outline\" onClick={onCancel}>{t('bs:cancel')}</Button>\n        </div>\n    </div>\n};\n\nconst useOptions = () => {\n    // rts\n    const [services, setServices] = useState([])\n    const [models, setModels] = useState([])\n\n    useEffect(() => {\n        getServicesApi().then(res => {\n            setServices(res.map(el => ({\n                id: el.id,\n                name: el.server,\n                url: el.endpoint\n            })))\n        })\n    }, [])\n\n    const selectService = async (val) => {\n        const servceId = services.find(item => item.id === val)?.id\n        const res = await getFTServicesApi(servceId)\n        // setModels(res)\n        setModels(res.filter(item => item.sft_support))\n    }\n\n    return { services, models, selectService }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/CreateTaskList.tsx",
    "content": "import { HelpCircle, Loader2 } from \"lucide-react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Badge } from \"../../../components/bs-ui/badge\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { Checkbox } from \"../../../components/bs-ui/checkBox\";\nimport { Input } from \"../../../components/bs-ui/input\";\nimport { Label } from \"../../../components/bs-ui/label\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../../../components/bs-ui/tooltip\";\nimport { PopUpContext } from \"../../../contexts/popUpContext\";\nimport { getFileUrlApi, getPresetFileApi, uploadTaskFileApi } from \"../../../controllers/API/finetune\";\nimport { downloadFile, downloadJson } from \"../../../util/utils\";\nimport UploadModal from \"./UploadModal\";\nimport sampleData from \"./sampleData\";\nimport { checkSassUrl } from \"@/components/bs-comp/FileView\";\n\nexport default function CreateTaskList({ onChange }) {\n    const { t } = useTranslation('model')\n\n    const { openPopUp, closePopUp } = useContext(PopUpContext);\n    // 预设集\n    const { prsetList, handleChangePrsetList } = usePresetList(onChange)\n    const [downloadMap, setDownloadMap] = useState({}) // 下载loading\n    // 个人数据集\n    const { userList, setUserList, handleChangeUserList, handleUploadUserList } = useUserList(onChange);\n\n    const [isCustom, setIsCustom] = useState(false)\n\n    const handleDownloadFile = async (data) => {\n        const res = await getFileUrlApi(data.dataSource)\n        setDownloadMap(map => ({ ...map, [data.id]: true }))\n        await downloadFile(checkSassUrl(res.url), data.name)\n        setDownloadMap(map => ({ ...map, [data.id]: false }))\n    }\n\n    return <div>\n        <div className=\"flex justify-between\">\n            <div>\n                <Button size=\"sm\" onClick={() => openPopUp(<UploadModal\n                    fileName=\"files\"\n                    accept={['json']}\n                    onClose={closePopUp}\n                    onUpload={uploadTaskFileApi}\n                    onSubmit={(res) => handleUploadUserList(res, closePopUp)}\n                />)}>{t('finetune.uploadDataset')}</Button>\n                <Button variant=\"link\" onClick={() => downloadJson(sampleData)}>{t('finetune.downloadSampleFile')}</Button>\n            </div>\n            <div className=\"flex gap-2 items-center\">\n                <Checkbox checked={isCustom} onCheckedChange={(val: boolean) => setIsCustom(val)} />\n                <Label>{t('finetune.customSampleSize')}</Label>\n                <TooltipProvider>\n                    <Tooltip>\n                        <TooltipTrigger><HelpCircle size={16} /></TooltipTrigger>\n                        <TooltipContent>\n                            <p>{t('finetune.customSampleSizeTooltip1')}</p>\n                            <p>{t('finetune.customSampleSizeTooltip2')}</p>\n                            <p>{t('finetune.customSampleSizeTooltip3')}</p>\n                        </TooltipContent>\n                    </Tooltip>\n                </TooltipProvider>\n            </div>\n        </div>\n        <div className=\"border rounded-md p-2 overflow-y-auto max-h-[400px] mt-4 shadow-md bg-gray-100 dark:bg-gray-800\">\n            <p className=\"text-sm text-muted-foreground mt-4\">{t('finetune.presetDatasets')}</p>\n            {\n                prsetList.length ? prsetList.map((data, i) =>\n                    <div key={data.id} className=\"flex gap-4 items-center mt-2 h-8 hover:bg-gray-200 dark:hover:bg-gray-600 px-2\">\n                        <Checkbox\n                            checked={data.checked}\n                            onCheckedChange={(val: boolean) => handleChangePrsetList(data.id, 'checked', val)} />\n                        <span className=\"text-sm\">{data.name}</span>\n                        <div className=\"flex ml-auto gap-4\">\n                            <Button size=\"sm\" variant=\"outline\"\n                                disabled={downloadMap[data.id]}\n                                onClick={() => handleDownloadFile(data)}\n                                className=\"rounded-lg h-7 px-4 ml-auto\">\n                                {downloadMap[data.id] && <Loader2 className=\"animate-spin mr-2\" size={14} />}\n                                {t('finetune.download')}</Button>\n                            {isCustom ?\n                                <Input\n                                    placeholder={t('finetune.sampleSize')}\n                                    type=\"number\"\n                                    value={data.sampleSize}\n                                    onChange={(e) => handleChangePrsetList(data.id, 'sampleSize', e.target.value)}\n                                    className=\"bg-[#fff] rounded-full w-28 h-6\"\n                                ></Input> :\n                                <Badge variant=\"outline\" className=\"text-sm\">{t('finetune.sampleSize')}:{data.sampleSize}</Badge>}\n                        </div>\n                    </div>)\n                    : <div className=\" text-gray-400 text-sm mt-4 indent-2\">{t('finetune.noData')}</div>\n            }\n            <p className=\"text-sm text-muted-foreground mt-4\">{t('finetune.userDatasets')}</p>\n            {\n                userList.length ? userList.map(data =>\n                    <div className=\"flex gap-4 items-center mt-2 h-8 hover:bg-gray-200 dark:hover:bg-gray-600 px-2\">\n                        <Checkbox\n                            checked={data.checked}\n                            onCheckedChange={(val: boolean) => handleChangeUserList(data.id, 'checked', val)} />\n                        <span className=\"text-sm\">{data.name}</span>\n                        <div className=\"flex ml-auto gap-4\">\n                            <Button\n                                size=\"sm\"\n                                variant=\"destructive\"\n                                className=\"rounded-lg h-7 px-4\"\n                                onClick={() => {\n                                    setUserList((prev) => {\n                                        const newData = prev.filter(el => el.id !== data.id)\n                                        onChange('train_data', newData)\n                                        return newData\n                                    })\n                                }}\n                            >{t('delete', { ns: 'bs' })}</Button>\n                            {isCustom ?\n                                <Input\n                                    placeholder={t('finetune.sampleSizePlaceholder')}\n                                    type=\"number\"\n                                    value={data.sampleSize}\n                                    onChange={(e) => handleChangeUserList(data.id, 'sampleSize', e.target.value)}\n                                    className=\"bg-[#fff] rounded-full w-28 h-6\"\n                                ></Input> :\n                                <Badge variant=\"outline\" className=\"text-sm\">{t('finetune.sampleSize')}:{data.sampleSize}</Badge>}\n                        </div>\n                    </div>)\n                    : <div className=\" text-gray-400 text-sm mt-4 indent-2\">{t('finetune.noData')}</div>\n            }\n        </div>\n    </div>\n};\n\n\n// 预设集\nexport function usePresetList(onChange) {\n    const [prsetList, setPrsetList] = useState([]);\n\n    useEffect(() => {\n        getPresetFileApi({ page_size: 400, page_num: 1, keyword: '' }).then(res => setPrsetList(res.data));\n    }, []);\n\n    const handleChangePrsetList = (id, key, val) => {\n        setPrsetList((prevState) => {\n            const newState = prevState.map(item =>\n                item.id === id ? { ...item, [key]: val } : item);\n\n            onChange('preset_data', newState);\n            return newState;\n        });\n    };\n\n    return { prsetList, handleChangePrsetList };\n}\n\n// 个人数据集\nexport function useUserList(onChange) {\n    const [userList, setUserList] = useState([]);\n\n    const handleUploadUserList = (res, closePopUp) => {\n        setUserList(state => {\n            const newState = [...res[0], ...state];\n            onChange('train_data', newState);\n            return newState;\n        });\n        closePopUp();\n    };\n\n    const handleChangeUserList = (id, key, val) => {\n        setUserList((prevState) => {\n            const newState = prevState.map(item =>\n                item.id === id ? { ...item, [key]: val } : item);\n\n            onChange('train_data', newState);\n            return newState;\n        });\n    };\n\n    return { userList, setUserList, handleChangeUserList, handleUploadUserList };\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/FinetuneDetail.tsx",
    "content": "import { Loader2 } from \"lucide-react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Badge } from \"../../../components/bs-ui/badge\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport EditLabel from \"../../../components/bs-ui/editLabel\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport { getModelInfoApi } from \"../../../controllers/API\";\nimport { cancelTaskApi, getTaskInfoApi, publishTaskApi, unPublishTaskApi, updataTaskNameApi } from \"../../../controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { TaskDB } from \"../../../types/api/finetune\";\nimport FinetuneResult from \"./FinetuneResult\";\nimport { formatMilliseconds } from \"../../../util/utils\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\n\nexport const enum TaskStatus {\n    /** 训练中 */\n    TRAINING_IN_PROGRESS = 1,\n    /** 训练失败 */\n    TRAINING_FAILED,\n    /** 训练中止 */\n    TASK_ABORTED,\n    /** 训练成功 */\n    TRAIN_SUCCESS,\n    /** 训练成功 */\n    PUBLISH_SUCCESS\n}\n\n// 徽章\nexport const BadgeView = ({ value }) => {\n    const { t } = useTranslation()\n    // 训练成功\n    // return null\n    const colors = ['', '', 'text-red-500', '', 'text-green-500', 'text-green-500']\n    const texts = ['', t('finetune.trainingInProgress'), t('finetune.trainingFailed'), t('finetune.taskAborted'), t('finetune.trainingSuccess'), t('finetune.publishSuccess')]\n    return <Badge size=\"sm\" variant=\"secondary\" className={`${colors[value]} break-keep`}>{texts[value]}</Badge>\n}\n\nconst HeadButtonView = ({ name, status, online, onPublish, onUnPublish, onDelete, onStop }) => {\n    const { t } = useTranslation('model')\n    const [loading, setLoading] = useState(false)\n\n    const cancelPublish = async () => {\n        if (online) {\n            bsConfirm({\n                desc: t('finetune.confirmCancelPublish'),\n                async onOk(next) {\n                    next()\n                    setLoading(true)\n                    await onUnPublish()\n                    setLoading(false)\n                }\n            })\n        } else {\n            setLoading(true)\n            await onUnPublish()\n            setLoading(false)\n        }\n    }\n\n    const handlePublish = async () => {\n        setLoading(true)\n        await onPublish()\n        setLoading(false)\n    }\n\n    const deleteClick = () => {\n        let tip = t('finetune.confirmDeleteModel', { name })\n        if (online) {\n            tip = t('finetune.confirmDeleteOnlineModel', { name })\n        } else if (status === TaskStatus.PUBLISH_SUCCESS) {\n            tip = t('finetune.confirmDeletePublishedModel', { name })\n        }\n        bsConfirm({\n            desc: tip,\n            onOk(next) {\n                onDelete()\n                next()\n            }\n        })\n    }\n\n    const stopClick = () => {\n        bsConfirm({\n            desc: t('finetune.confirmStopTraining'),\n            onOk(next) {\n                onStop()\n                next()\n            }\n        })\n    }\n\n    return <div className=\"absolute right-4 flex gap-2\">\n        {status === TaskStatus.PUBLISH_SUCCESS ?\n            <Button size=\"sm\" disabled={loading} onClick={cancelPublish}>\n                {loading && <Loader2 className=\"animate-spin mr-2\" size={14} />}\n                {t('finetune.cancelPublish')}\n            </Button> :\n            status === TaskStatus.TRAIN_SUCCESS ?\n                <Button size=\"sm\" disabled={loading} onClick={handlePublish}>\n                    {loading && <Loader2 className=\"animate-spin mr-2\" size={14} />}\n                    {t('finetune.publish')}\n                </Button> : null\n        }\n        {status === TaskStatus.TRAINING_IN_PROGRESS ?\n            <Button size=\"sm\" className=\"bg-red-400 hover:bg-red-500\" onClick={stopClick}>{t('finetune.stop')}</Button> :\n            <Button size=\"sm\" className=\"bg-red-400 hover:bg-red-500\" onClick={deleteClick}>{t('bs:delete')}</Button>\n        }\n    </div>\n}\n\n\n\n\nexport default function FinetuneDetail({ id, onDelete, onStatusChange }) {\n    const { t } = useTranslation('model')\n\n    const { setSuccessData } = useContext(alertContext);\n\n    const [baseInfo, setBaseInfo] = useState<TaskDB>(null)\n\n    // 上线状态\n    const [online, setOnline] = useState(false)\n    const getOnlineState = (modelId) => {\n        if (modelId) {\n            return getModelInfoApi(modelId).then((data) => {\n                console.log(data);\n                setOnline(data.status === '已上线')\n            })\n        }\n    }\n\n    useEffect(() => {\n        captureAndAlertRequestErrorHoc(getTaskInfoApi(id).then((data) => {\n            setBaseInfo(data.finetune)\n            getOnlineState(data.finetune.model_id)\n        }), (err) => {\n            setBaseInfo(null)\n        })\n    }, [id])\n\n    const handlePublish = async () => {\n        const res = await captureAndAlertRequestErrorHoc(publishTaskApi(id))\n        if (!res) return\n        // 成功\n        onStatusChange(TaskStatus.PUBLISH_SUCCESS)\n        setBaseInfo({ ...baseInfo, status: TaskStatus.PUBLISH_SUCCESS })\n        setSuccessData({ title: t('finetune.publishSuccess') })\n    }\n\n    const handleUnPublish = async () => {\n        const res = await captureAndAlertRequestErrorHoc(unPublishTaskApi(id))\n        if (!res) return\n        onStatusChange(TaskStatus.TRAIN_SUCCESS)\n        setBaseInfo({ ...baseInfo, status: TaskStatus.TRAIN_SUCCESS })\n    }\n\n    const handleStopTrain = async () => {\n        const res = await captureAndAlertRequestErrorHoc(cancelTaskApi(id))\n        if (!res) return\n\n        onStatusChange(TaskStatus.TASK_ABORTED)\n        return setBaseInfo({ ...baseInfo, status: TaskStatus.TASK_ABORTED })\n    }\n\n    const handleChangeName = async (name) => {\n        const res = await captureAndAlertRequestErrorHoc(updataTaskNameApi(id, name))\n        if (!res) return\n\n        onStatusChange(baseInfo.status)\n        setBaseInfo({ ...baseInfo, model_name: name })\n    }\n\n    if (!baseInfo) return <></>\n\n    return <div>\n        {/* <div>选择模型已查看详情</div> */}\n        <HeadButtonView\n            name={baseInfo.model_name}\n            status={baseInfo.status}\n            online={online}\n            onPublish={handlePublish}\n            onUnPublish={handleUnPublish}\n            onDelete={onDelete}\n            onStop={handleStopTrain}\n        ></HeadButtonView>\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 items-center\">\n                <EditLabel\n                    rule={[\n                        {\n                            pattern: /^(?=.*[a-zA-Z])(?=.*\\d)?[a-zA-Z\\d_-]+$/,\n                            message: t('finetune.enterModelName'),\n                        }\n                    ]}\n                    str={baseInfo.model_name}\n                    onChange={(model_name) => handleChangeName(model_name)}>\n                    {(val) => <div className=\"text-lg font-semibold\">{val}</div>}\n                </EditLabel>\n                <BadgeView value={baseInfo.status} />\n            </div>\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.taskId')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">{baseInfo.id}</small>\n            </div>\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.baseModel')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">{baseInfo.base_model_name}</small>\n            </div>\n        </div>\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('bs:createTime')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">{baseInfo.create_time.replace('T', ' ')}</small>\n            </div>\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.runtime')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">\n                    {TaskStatus.TRAINING_IN_PROGRESS === baseInfo.status ? '--' : formatMilliseconds(baseInfo.report?.train_runtime || 0, t('finetune.formatTime'))}\n                </small>\n            </div>\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.creator')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">{baseInfo.user_name}</small>\n            </div>\n        </div>\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.dataset')}</small>\n                <small className=\"text-sm font-medium leading-none text-gray-700\">{\n                    baseInfo.preset_data.concat(baseInfo.train_data).map(el => el.name).join(',')\n                }</small>\n            </div>\n        </div>\n        <FinetuneResult\n            id={id}\n            isStop={TaskStatus.TASK_ABORTED === baseInfo.status}\n            training={TaskStatus.TRAINING_IN_PROGRESS === baseInfo.status}\n            failed={TaskStatus.TRAINING_FAILED === baseInfo.status}\n            onChange={status => {\n                setBaseInfo({ ...baseInfo, status });\n                onStatusChange(status)\n            }}\n        ></FinetuneResult>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/FinetuneHead.tsx",
    "content": "import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { SearchInput } from \"../../../components/bs-ui/input\";\nimport {\n    Select,\n    SelectContent,\n    SelectGroup,\n    SelectItem,\n    SelectTrigger,\n    SelectValue\n} from \"../../../components/bs-ui/select\";\nimport { ToggleGroup, ToggleGroupItem } from \"../../../components/bs-ui/toggle-group\";\nimport { getAllServicesApi } from \"../../../controllers/API\";\nimport { useDebounce } from \"../../../util/hook\";\n\ninterface IProps {\n    onSearch: (searchkey) => void,\n    onFilter: ({ type, rt }) => void,\n    rtClick: () => void,\n    onCreate: () => void,\n}\nexport default function FinetuneHead({ onSearch, onFilter, rtClick, onCreate }: IProps) {\n    const { t } = useTranslation()\n\n    const [type, setType] = useState('all')\n    const [rt, setRt] = useState('all')\n    const inputRef = useRef(null)\n\n    const handleTypeChange = (val) => {\n        setType(val)\n        onFilter({ type: val, rt })\n    }\n\n    const handleRtChange = (val) => {\n        setRt(val)\n        onFilter({ type, rt: val })\n    }\n\n    // rts\n    const [services, setServices] = useState([])\n    useEffect(() => {\n        getAllServicesApi().then(res => {\n            setServices(res.map(el => ({\n                id: el.id,\n                name: el.server_name\n            })))\n        })\n\n        onFilter({ type, rt })\n    }, [])\n\n    const handleSearch = () => {\n        onSearch(inputRef.current.value)\n    }\n\n    return <div className=\"flex justify-between pb-4 border-b ml-2\">\n        <div className=\"flex gap-4\">\n            <ToggleGroup type=\"single\" defaultValue={type} onValueChange={handleTypeChange} className=\"border rounded-md\">\n                <ToggleGroupItem value=\"all\">{t('finetune.all')}</ToggleGroupItem>\n                <ToggleGroupItem value=\"4\">{t('finetune.successful')}</ToggleGroupItem>\n                <ToggleGroupItem value=\"1\">{t('finetune.inProgress')}</ToggleGroupItem>\n                <ToggleGroupItem value=\"2\">{t('finetune.failedAborted')}</ToggleGroupItem>\n            </ToggleGroup>\n            <Select defaultValue={rt} onValueChange={handleRtChange}>\n                <SelectTrigger className=\"w-[180px]\">\n                    <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"all\">{t('finetune.all')}</SelectItem>\n                        {\n                            services.map(service => <SelectItem key={service.id} value={service.id}>{service.name}</SelectItem>)\n                        }\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n            <SearchInput ref={inputRef} placeholder={t('finetune.modelName')} onChange={useDebounce(handleSearch, 600, false)}></SearchInput>\n        </div>\n        <div className=\"flex gap-4 mr-2\">\n            <Button className=\"dark:text-[#ECECEC]\" onClick={onCreate}>{t('finetune.createTrainingTask')}</Button>\n            <Button variant=\"black\" className=\"dark:text-[#ECECEC] dark:bg-[#34353A]\" onClick={rtClick}>{t('finetune.rtServiceManagement')}</Button>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/FinetuneResult.tsx",
    "content": "import { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Area, AreaChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"../../../components/bs-ui/card\";\nimport { getTaskInfoApi } from \"../../../controllers/API/finetune\";\nimport { TaskStatus } from \"./FinetuneDetail\";\n\nexport default function FinetuneResult({ id, training, isStop, failed, onChange }) {\n    const { t } = useTranslation('model')\n    const timerRef = useRef(null)\n\n    const [logs, setLogs] = useState(null)\n    const [report, setReport] = useState(null)\n    const [loss, setLoss] = useState([])\n\n    const [count, setCount] = useState(0)\n    useEffect(() => {\n        if (!training) return loadData()\n\n        clearTimeout(timerRef.current)\n        timerRef.current = setTimeout(() => {\n            loadData(true)\n\n            setCount(count + 1)\n        }, 2000)\n\n        return () => clearTimeout(timerRef.current)\n    }, [id, training, count])\n\n    const loadData = (loop?) => {\n        getTaskInfoApi(id).then((data) => {\n            const { log, report, loss_data, finetune } = data\n            setLogs(log)\n            setReport(report)\n            setLoss(loss_data)\n            // 状态变更停止轮训\n            loop && finetune.status !== TaskStatus.TRAINING_IN_PROGRESS && onChange(finetune.status)\n        })\n    }\n\n    const processKeys = ['bleu-4', 'rouge-1', 'rouge-2', 'rouge-l']\n\n    return <div>\n        <div className=\"border-b pb-4\">\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.evaluationReport')}</small>\n                {(failed || isStop) && <small className=\"text-sm font-medium leading-none text-gray-700\">--</small>}\n            </div>\n\n            {/* cards */}\n            {\n                // 失败 中止不展示 cards\n                !failed && !isStop && report && <div className=\"flex gap-4 mt-4\">\n                    {\n                        processKeys.map(key => <Card className=\"flex-row w-[25%]\" key={key}>\n                            <CardHeader>\n                                <CardTitle>{key}</CardTitle>\n                                <CardDescription>{training ? '--' : report[`predict_${key}`]?.toFixed(2) || '--'}%</CardDescription>\n                            </CardHeader>\n                            <CardContent className=\"mt-4\">\n                                <div className=\"radial-progress bg-gray-200 dark:bg-gray-950\" style={{ \"--value\": training ? 0 : report[`predict_${key}`], \"--size\": \"1.4rem\", }} role=\"progressbar\"></div>\n                            </CardContent>\n                        </Card>)\n                    }\n                </div>\n            }\n            {/* chart */}\n            {\n                !failed && !isStop && report && <div className=\"mt-4\">\n                    <ResponsiveContainer className=\"border rounded-md\" width=\"100%\" height={280}>\n                        <AreaChart data={loss}\n                            margin={{ top: 10, right: 30, left: 0, bottom: 0 }}>\n                            <defs>\n                                <linearGradient id=\"colorUv\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                                    <stop offset=\"5%\" stopColor=\"#4e83fd\" stopOpacity={0.4} />\n                                    <stop offset=\"95%\" stopColor=\"#4e83fd\" stopOpacity={0} />\n                                </linearGradient>\n                            </defs>\n                            <XAxis dataKey=\"step\" />\n                            <YAxis />\n                            <CartesianGrid vertical={false} />\n                            <Tooltip />\n                            <Area type=\"monotone\" dataKey=\"loss\" stroke=\"#8884d8\" fillOpacity={1} fill=\"url(#colorUv)\" />\n                        </AreaChart>\n                    </ResponsiveContainer>\n                </div>\n            }\n        </div>\n        {/* log */}\n        <div className=\"pb-4\">\n            <div className=\"flex gap-4 mt-4\">\n                <small className=\"text-sm font-medium leading-none text-gray-500\">{t('finetune.trainingLogs')}</small>\n            </div>\n            <div className=\"mt-4 rounded-md bg-gray-100 dark:bg-gray-800 p-2 overflow-auto max-w-full h-[400px]\">\n                <pre className=\"text-gray-500 text-sm max-w-[500px]\">{logs}</pre>\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/RTConfig.tsx",
    "content": "import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { Plus } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { Input } from \"../../../components/bs-ui/input\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../../components/bs-ui/table\";\nimport { addServiceApi, deleteServiceApi, getServicesApi } from \"../../../controllers/API\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { useCopyText } from \"../../../util/hook\";\n\nexport default function RTConfig({ open, onChange }) {\n\n    const nameRef = useRef(null)\n    // const urlRef = useRef(null)\n    const ftUrlRef = useRef(null)\n\n    const { services, showAdd, addItem, handleDel, create, setShowAdd } = useRTService(onChange)\n\n    const handleAdd = () => {\n        const [name, ftUrl] = [nameRef.current.value, ftUrlRef.current.value]\n        if (!name) return\n        addItem(name, ftUrl)\n        nameRef.current.value = ''\n        ftUrlRef.current.value = ''\n    }\n\n    const { t } = useTranslation('model')\n    const copyText = useCopyText()\n\n    return <Dialog open={open} onOpenChange={onChange}>\n        <DialogContent className=\"max-w-[820px]\">\n            <DialogHeader>\n                <DialogTitle>{t('finetune.rtServiceManagement')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"\">\n                <Table className=\"w-full\">\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead className=\"w-[200px]\">{t('finetune.machineName')}</TableHead>\n                            {/* <TableHead>RT{t('finetune.serviceAddress')}</TableHead> */}\n                            <TableHead>FT{t('finetune.serviceAddress')}</TableHead>\n                            <TableHead className=\"text-right\">{t('bs:operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {services.map((el) => (\n                            <TableRow key={el.id}>\n                                <TableCell className=\"py-2\">{el.name}</TableCell>\n                                {/* <TableCell className=\"py-2\">\n                                    <p className=\"cursor-pointer\" onClick={e => copyText(el.url)}>{el.url}</p>\n                                </TableCell> */}\n                                <TableCell className=\"py-2\">\n                                    <p className=\"cursor-pointer\" onClick={e => copyText(el.ftUrl)}>{el.ftUrl}</p>\n                                </TableCell>\n                                <TableCell className=\"py-2 text-right\"><Button variant=\"link\" className=\"h-8 rounded-full text-red-500 px-5\" onClick={() => handleDel(el.id)}>{t('bs:delete')}</Button></TableCell>\n                            </TableRow>\n                        ))}\n                        {showAdd && <TableRow>\n                            <TableCell><Input ref={nameRef} placeholder=\"name\"></Input></TableCell>\n                            {/* <TableCell><Input ref={urlRef} placeholder=\"IP:PORT\"></Input></TableCell> */}\n                            <TableCell><Input ref={ftUrlRef} placeholder=\"IP:PORT\"></Input></TableCell>\n                            <TableCell>\n                                <Button variant=\"link\" className=\"h-8 rounded-full\" onClick={handleAdd}>{t('bs:confirmButton')}</Button>\n                                <Button variant=\"link\" className=\"h-8 rounded-full text-gray-400\" onClick={() => setShowAdd(false)}>{t('bs:cancel')}</Button>\n                            </TableCell>\n                        </TableRow>}\n                    </TableBody>\n                </Table>\n            </div>\n            <DialogFooter>\n                <div className=\"flex justify-start mt-4\">\n                    <Button variant='outline' className=\"flex w-[120px]\" onClick={() => setShowAdd(true)}><Plus className=\"mr-2 size-5\" />{t('bs:create')}</Button>\n                </div>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n};\n\ntype SERVICE = {\n    id: number,\n    create_time?: string,\n    update_time?: string,\n    url?: string,\n    ftUrl: string,\n    remark?: string,\n    name: string\n}\n\nconst useRTService = (onChange) => {\n    const [services, setServices] = useState<SERVICE[]>([])\n    const [showAdd, setShowAdd] = useState(false)\n\n    useEffect(() => {\n        loadData()\n    }, [])\n\n    const loadData = async () => {\n        const res = await getServicesApi()\n        setServices(res.map(el => ({\n            id: el.id,\n            name: el.server,\n            ftUrl: el.sft_endpoint\n        })))\n    }\n\n    const addItem = (name, ftUrl) => {\n        captureAndAlertRequestErrorHoc(addServiceApi(name, ftUrl).then(data => {\n            setServices([...services, {\n                id: data.id,\n                name,\n                ftUrl\n            }])\n            setShowAdd(false)\n        }))\n    }\n\n    const handleDel = (id) => {\n        captureAndAlertRequestErrorHoc(deleteServiceApi(id).then(res =>\n            setServices(services.filter(el => el.id !== id))\n        ))\n    }\n\n    const create = () => {\n        onChange()\n        setShowAdd(false)\n    }\n\n    return {\n        services,\n        showAdd,\n        addItem,\n        handleDel,\n        create,\n        setShowAdd\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/UploadModal.tsx",
    "content": "\n\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { Progress } from \"../../../components/bs-ui/progress\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport { generateUUID } from \"../../../utils\";\nimport { UploadIcon } from \"@/components/bs-icons/upload\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\n\ninterface IProps {\n    accept: string[],\n    fileName: string,\n    onUpload: (file, func) => void,\n    onSubmit: (res) => void,\n    onClose: () => void,\n    loading?: boolean,\n    desc?: string,\n    children?: React.ReactNode\n}\n\nexport default function UploadModal({\n    fileName, loading = false, desc = '', accept, children, onUpload, onSubmit, onClose\n}: IProps) {\n\n    const { t } = useTranslation()\n    const { end, tasks, onDrop, getResult } = useUpload(true, 50, fileName, onUpload)\n\n    // upload config\n    const { getRootProps, getInputProps, isDragActive } = useDropzone({\n        accept: {\n            'application/*': accept.map(str => `.${str}`)\n        },\n        useFsAccessApi: false,\n        onDrop\n    });\n\n    return <Dialog open onOpenChange={() => onClose()}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n            <DialogHeader>\n                <DialogTitle>{t('code.uploadFile')}</DialogTitle>\n                <DialogDescription>{desc}</DialogDescription>\n            </DialogHeader>\n            <div className=\"flex flex-wrap justify-center overflow-y-auto no-scrollbar\">\n                <div className=\"w-[460px]\">\n                    {/* 拖拽区 */}\n                    <div {...getRootProps()} className=\"group h-[100px] border border-dashed rounded-md flex flex-col justify-center items-center cursor-pointer gap-3 hover:border-primary\">\n                        <input {...getInputProps()} />\n                        <UploadIcon className=\"group-hover:text-primary\" />\n                        {isDragActive ? <p className=\"text-gray-400 text-sm\">{t('code.dropFileHere')}</p> : <p className=\"text-gray-400 text-sm\">{t('code.clickOrDragHere')}</p>}\n                    </div>\n                    {/* 进度条 */}\n                    <div className=\" max-h-[300px] overflow-y-auto no-scrollbar mt-4\">\n                        {tasks.map((task) => (\n                            <div key={task.id}>\n                                <p className={`max-w-[300px] overflow-hidden text-ellipsis whitespace-nowrap ${task.error && 'text-red-400'}`}>{task.file.name}</p>\n                                <Progress error={task.error} value={task.schedule} className=\"w-full\" />\n                            </div>\n                        ))}\n                    </div>\n                    {/* 插槽 */}\n                    <div>\n                        {children}\n                    </div>\n                </div>\n            </div>\n            <DialogFooter>\n                <Button variant='outline' className=\"h-8\" onClick={onClose}>{t('cancel')}</Button>\n                <Button type=\"submit\" className=\"h-8\" disabled={loading || !end} onClick={() => !loading && onSubmit(getResult())}>\n                    {loading && <span className=\"loading loading-spinner loading-xs\"></span>}\n                    {t('create')}\n                </Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n};\n\ninterface ProcessItem {\n    id: string;\n    /** 文件对象 */\n    file: any;\n    /** 是否等待上传中 */\n    await: boolean;\n    /** 上传进度0-100 */\n    schedule: number;\n    /** 上传是否遇到错误 */\n    error: boolean;\n}\n\nconst useUpload = (open, maxSize, fileKey, uploadFunc) => {\n    const { t } = useTranslation()\n    const { setErrorData } = useContext(alertContext);\n\n    const [progressList, setProgressList] = useState<ProcessItem[]>([])\n    // 文件总数\n    const fileCountRef = useRef(0)\n    // 记录上传完成的文件\n    const filePathsRef = useRef([])\n    // 记录上传失败的文件\n    const failNamesRef = useRef([])\n    // 重置上传文件列表\n    useEffect(() => {\n        if (!open) {\n            setProgressList([])\n            fileCountRef.current = 0\n            filePathsRef.current = []\n            failNamesRef.current = []\n        }\n    }, [open])\n\n    const onDrop = (acceptedFiles) => {\n        const sizeLimit = maxSize * 1024 * 1024;\n        const errorFile = [];\n        const files = []\n\n        // 校验文件大小限制，并给予提示\n        acceptedFiles.forEach(file => {\n            file.size < sizeLimit ?\n                files.push(file) :\n                errorFile.push(file.name);\n        });\n        errorFile.length && setErrorData({\n            title: t('prompt'),\n            list: errorFile.map(str => `${t('code.file')}: ${str} ${t('code.sizeExceedsLimit')}`),\n        });\n        if (!files.length) return\n\n        // 追加新文件到上传队列\n        setProgressList((list) => {\n            return [...list, ...files.map(file => {\n                return {\n                    id: generateUUID(8),\n                    file,\n                    await: true,\n                    schedule: 0,\n                    error: false\n                }\n            })];\n        });\n        // 更新总数\n        fileCountRef.current += files.length;\n    }\n\n    // 上传函数\n    const uploadFileWithProgress = async (file, callback): Promise<any> => {\n        try {\n            const formData = new FormData();\n            formData.append(fileKey, file);\n\n            const config = {\n                headers: { 'Content-Type': 'multipart/form-data;charset=utf-8' },\n                onUploadProgress: (progressEvent) => {\n                    const { loaded, total } = progressEvent;\n                    const progress = Math.round((loaded * 100) / total);\n                    console.log(`Upload progress: ${file.name} ${progress}%`);\n                    callback(progress)\n                    // You can update your UI with the progress information here\n                },\n            };\n\n            // Convert the FormData to binary using the FileReader API\n            const data = await uploadFunc(formData, config);\n\n            data && callback(100);\n\n            console.log('Upload complete:', data);\n            return data\n            // Handle the response data as needed\n        } catch (error) {\n            console.error('Error uploading file:', error);\n            return ''\n            // Handle errors\n        }\n    };\n\n    // 上传调度\n    const [end, setEnd] = useState(true)\n    useEffect(() => {\n        const maxRequestCount = 3 // 最大并发数\n        // 分类\n        let awaitTasks = [] // 排队上传的任务\n        let peddingTasks = [] // 上传中的任务\n        // 任务分组\n        progressList.forEach(item => {\n            if (item.await) {\n                awaitTasks.push(item)\n            } else if (item.schedule !== 100 && !item.error) {\n                peddingTasks.push(item)\n            }\n        })\n\n        // 处理未完成的任务\n        if (peddingTasks.length || awaitTasks.length) {\n            setEnd(false)\n            // 任务补位（maxRequestCount - 正在请求数 = 空位数）\n            awaitTasks.filter((e, i) => i < maxRequestCount - peddingTasks.length).forEach(task => {\n                // 记录开始上传标记\n                setProgressList((oldState) => oldState.map(_task => {\n                    return _task.id === task.id ? {\n                        ..._task,\n                        await: false,\n                        schedule: 1\n                    } : _task\n                }))\n                // 上传\n                uploadFileWithProgress(task.file, (count) => {\n                    // 更新进度\n                    setProgressList((oldState) => oldState.map(_task => {\n                        return _task.id === task.id ? {\n                            ..._task,\n                            schedule: count\n                        } : _task\n                    }))\n                }).then(data => {\n                    if (data) {\n                        filePathsRef.current.push(data)\n                    } else {\n                        failNamesRef.current.push(task.file.name)\n                        setProgressList((oldState) => oldState.map(el => {\n                            return el.id !== task.id ? el : {\n                                ...el,\n                                error: true\n                            }\n                        }))\n                    }\n                    // 判断所有任务处理完成\n                    setEnd(filePathsRef.current.length + failNamesRef.current.length === fileCountRef.current)\n                })\n            })\n        }\n\n    }, [progressList])\n\n    return {\n        end,\n        tasks: progressList,\n        onDrop,\n        getResult: () => [filePathsRef.current, failNamesRef.current]\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/components/sampleData.js",
    "content": "const data = [{\n        \"instruction\": \"用户指令（必填）\",\n        \"input\": \"用户输入（选填）\",\n        \"output\": \"模型回答（必填）\",\n        \"history\": [\n            [\"第一轮指令（选填）\", \"第一轮回答（选填）\"],\n            [\"第二轮指令（选填）\", \"第二轮回答（选填）\"]\n        ]\n    },\n    {\n        \"instruction\": \"用户指令（必填）\",\n        \"input\": \"用户输入（选填）\",\n        \"output\": \"模型回答（必填）\",\n        \"history\": [\n            [\"第一轮指令（选填）\", \"第一轮回答（选填）\"],\n            [\"第二轮指令（选填）\", \"第二轮回答（选填）\"]\n        ]\n    },\n    {\n        \"instruction\": \"用户指令（必填）\",\n        \"input\": \"用户输入（选填）\",\n        \"output\": \"模型回答（必填）\",\n        \"history\": [\n            [\"第一轮指令（选填）\", \"第一轮回答（选填）\"],\n            [\"第二轮指令（选填）\", \"第二轮回答（选填）\"]\n        ]\n    }\n]\n\nexport default data"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/cpuInfo.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../components/bs-ui/table\";\nimport { GPUlistApi, GPUlistByFinetuneApi } from \"../../controllers/API\";\n\nexport const CpuDetail = ({ type }) => {\n    const { t } = useTranslation('model')\n\n    const [datalist, setDatalist] = useState([])\n\n    const loadData = () => {\n        type === 'finetune'\n            ? GPUlistByFinetuneApi().then(setDatalist)\n            : GPUlistApi().then(res => {\n                setDatalist(res.list.flat())\n            })\n    }\n\n    useEffect(loadData, [])\n\n    // 2s刷新一次\n    useEffect(() => {\n        const timer = setTimeout(loadData, 1000 * 2);\n\n        return () => clearTimeout(timer)\n    }, [open, datalist])\n\n    return <Table className=\"w-full\">\n        <TableHeader>\n            <TableRow>\n                <TableHead className=\"w-[200px]\">{t('model.machineName')}</TableHead>\n                <TableHead>{t('model.gpuNumber')}</TableHead>\n                <TableHead>{t('model.gpuID')}</TableHead>\n                <TableHead>{t('model.totalMemory')}</TableHead>\n                <TableHead>{t('model.freeMemory')}</TableHead>\n                <TableHead>{t('model.gpuUtilization')}</TableHead>\n            </TableRow>\n        </TableHeader>\n        <TableBody>\n            {datalist.map((el) => (\n                <TableRow key={el.gpu_id}>\n                    <TableCell>{el.server}</TableCell>\n                    <TableCell>{el.gpu_uuid}</TableCell>\n                    <TableCell>{el.gpu_id}</TableCell>\n                    <TableCell>{el.gpu_total_mem}</TableCell>\n                    <TableCell>{el.gpu_used_mem}</TableCell>\n                    <TableCell>{(el.gpu_utility * 100).toFixed(2)}%</TableCell>\n                </TableRow>\n            ))}\n        </TableBody>\n    </Table>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/doc.tsx",
    "content": "\nimport { useEffect } from \"react\";\n\nexport default function Doc() {\n    // const [loading, setLoading] = useState(true)\n\n    useEffect(() => {\n        var link = __APP_ENV__.BASE_URL + '/doc.pdf'\n\n        var iframe: any = document.getElementById('iframe')\n\n        // if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone|iPad|iPod/i)) {\n        //     iframe.src = '/pdf/web/viewer.html?file=' + location.search.split('=')[1];\n        // } else {\n        var xhr = new XMLHttpRequest();\n        xhr.open('GET', link, true);\n        xhr.responseType = 'blob';\n        xhr.onload = function () {\n            // setLoading(false)\n            if (this.status === 200) {\n                var blob = new Blob([this.response], { type: 'application/pdf' });\n                var url = URL.createObjectURL(blob);\n                if (iframe) iframe.src = url;\n            }\n        };\n        xhr.onerror = function () {\n            // setLoading(false)\n            // $message.error('文件加载异常')\n        }\n        xhr.send();\n        // }\n    }, [])\n\n    return <div style={{ width: \"100%\", height: \"100vh\" }}>\n        {/* <iframe id=\"iframe\" style={{ width: \"100%\", height: \"100%\" }} src=\"\" ></iframe> */}\n        {/* <h1>正在加载文件</h1> */}\n        {/* {loading && <Loading color=\"secondary\" size=\"xs\" />} */}\n        <iframe id=\"iframe\" style={{ width: \"100%\", height: \"100%\" }} src=\"\" ></iframe>\n    </div>\n};\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/finetune.tsx",
    "content": "import { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport AutoPagination from \"../../components/bs-ui/pagination/autoPagination\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../../components/bs-ui/table\";\nimport { alertContext } from \"../../contexts/alertContext\";\nimport { deleteTaskApi, getTasksApi } from \"../../controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"../../controllers/request\";\nimport { useDebounce, useTable } from \"../../util/hook\";\nimport CreateTask from \"./components/CreateTask\";\nimport FinetuneDetail, { BadgeView } from \"./components/FinetuneDetail\";\nimport FinetuneHead from \"./components/FinetuneHead\";\nimport RTConfig from \"./components/RTConfig\";\nimport { CpuDetail } from \"./cpuInfo\";\n\nexport const Finetune = () => {\n    const { setSuccessData } = useContext(alertContext);\n    const { t, i18n } = useTranslation();\n\n    useEffect(() => {\n        i18n.loadNamespaces('model');\n    }, [i18n]);\n\n    const [rtOpen, setRTOpen] = useState(false)\n    const [showCpu, setShowCpu] = useState({\n        type: 'model',\n        show: false\n    })\n\n    const { page, pageSize, data: tasks, total, setPage, search, reload, filterData } = useTable({}, (param) =>\n        getTasksApi({\n            page: param.page,\n            limit: param.pageSize,\n            model_name: param.keyword,\n            server: param.rt || 'all',\n            status: param.type || 'all'\n        })\n    )\n    // 详情\n    const [taskId, setTaskId] = useState('')\n\n    // del\n    const handleDeleteTask = async () => {\n        const res = await captureAndAlertRequestErrorHoc(deleteTaskApi(taskId))\n        if (res !== null) return\n\n        setSuccessData({ title: t('deleteSuccess') })\n        setTaskId('')\n        reload()\n    }\n\n    const [createOpen, setCreateOpen] = useState(false)\n\n    // useDebounce\n    const changeItem = useDebounce((id) => {\n        // 滚动到顶部\n        const scorllDom = document.querySelector('#model-scroll')\n        scorllDom && (scorllDom.scrollTop = 0)\n        setTaskId(id)\n    }, 600, false)\n\n    return <div className=\"relative bg-background-main-content pt-2\">\n        <div className={createOpen ? 'hidden' : 'block'}>\n            <FinetuneHead onSearch={search} onFilter={filterData} rtClick={() => setRTOpen(true)} onCreate={() => setCreateOpen(true)}></FinetuneHead>\n            {/* body */}\n            {tasks?.length === 0 ?\n                <div className=\"mt-6 text-center text-gray-400\">{t('finetune.noData')}</div>\n                : <div className=\"flex gap-4 mt-4\">\n                    <div className=\"w-[40%] relative\">\n                        <div className=\"border-r overflow-y-auto max-h-[calc(100vh-150px)] pb-20\">\n                            <Table className=\"px-2\">\n                                <TableHeader>\n                                    <TableRow>\n                                        <TableHead className=\"w-[100px]\">{t('finetune.modelName')}</TableHead>\n                                        <TableHead></TableHead>\n                                        <TableHead>{t('finetune.rtService')}</TableHead>\n                                        <TableHead className=\"text-right\">{t('finetune.createTime')}</TableHead>\n                                    </TableRow>\n                                </TableHeader>\n                                <TableBody>\n                                    {tasks.map((task: any) => (\n                                        <TableRow key={task.id} onClick={() => changeItem(task.id)} className={`cursor-pointer ${task.id === taskId && 'bg-gray-100'}`}>\n                                            <TableCell className=\"font-medium\">{task.model_name}</TableCell>\n                                            <TableCell><BadgeView value={task.status}></BadgeView></TableCell>\n                                            <TableCell>{task.server_name}</TableCell>\n                                            <TableCell className=\"text-right\">{task.create_time.replace('T', ' ')}</TableCell>\n                                        </TableRow>\n                                    ))}\n                                </TableBody>\n                            </Table>\n                        </div>\n                        <div className=\"bisheng-table-footer bg-background-login\">\n                            <p className=\"desc\"></p>\n                            <AutoPagination\n                                page={page}\n                                pageSize={pageSize}\n                                total={total}\n                                onChange={(newPage) => setPage(newPage)}\n                            />\n                        </div>\n                    </div>\n                    <div className=\"flex-1 overflow-hidden overflow-y-auto max-h-[calc(100vh-150px)]\">\n                        {taskId ?\n                            <FinetuneDetail id={taskId} onDelete={handleDeleteTask} onStatusChange={reload}></FinetuneDetail> :\n                            <div className=\"flex justify-center items-center h-full\">\n                                <p className=\"text-sm text-muted-foreground\">{t('finetune.selectModel')}</p>\n                            </div>}\n                    </div>\n                </div>\n            }\n        </div>\n\n        {/* create */}\n        <div className={createOpen ? 'block' : 'hidden'}>\n            {\n                createOpen && <div>\n                    <CreateTask\n                        rtClick={() => setRTOpen(true)}\n                        gpuClick={() => setShowCpu({ type: 'finetune', show: true })}\n                        onCancel={() => setCreateOpen(false)}\n                        onCreate={(id) => {\n                            reload();\n                            setCreateOpen(false);\n                            setTaskId(id)\n                        }}></CreateTask>\n                </div>\n            }\n        </div>\n        {/* RT配置 */}\n        <RTConfig open={rtOpen} onChange={() => setRTOpen(false)}></RTConfig>\n        {/* CPU使用情况 */}\n        <Dialog open={showCpu.show} onOpenChange={(show) => setShowCpu({ ...showCpu, show })}>\n            <DialogContent className=\"sm:max-w-[80%]\">\n                <DialogHeader>\n                    <DialogTitle>{t('model.gpuResourceUsageTitle')}</DialogTitle>\n                </DialogHeader>\n                <div className=\"flex flex-wrap justify-center overflow-y-auto no-scrollbar\">\n                    {showCpu.show && <CpuDetail type={showCpu.type} />}\n                </div>\n            </DialogContent>\n        </Dialog>\n    </div>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/CustomForm.tsx",
    "content": "import { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\n\n// 模型表单项\nconst modelProviders = {\n    ollama: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：http://ip:11434\",\n            default: \"\",\n            required: true,\n            key: \"base_url\",\n        },\n    ],\n    xinference: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：http://ip:9997/v1\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_base\",\n        }\n    ],\n    llamacpp: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：http://ip:8080/v1\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n    ],\n    vllm: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：http://ip:8000/v1\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: false,\n            key: \"openai_api_key\",\n        },\n    ],\n    openai: [\n        {\n            label: \"OpenAI API Base\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://api.openai.com/v1\",\n            required: false,\n            key: \"openai_api_base\",\n        },\n        {\n            label: \"OpenAI Proxy\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"\",\n            required: false,\n            key: \"openai_proxy\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n    ],\n    azure_openai: [\n        {\n            label: \"Azure Endpoint\",\n            type: \"text\",\n            placeholder: \"格式示例：https://xxx.openai.azure.com/\",\n            default: \"\",\n            required: true,\n            key: \"azure_endpoint\",\n        },\n        {\n            label: \"Azure OpenAI API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n        {\n            label: \"OpenAI API Version\",\n            type: \"text\",\n            placeholder: \"格式示例：2024-02-01\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_version\",\n        },\n    ],\n    qwen: [\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n    ],\n    qianfan: [\n        {\n            label: \"Base URL\",\n            type: \"\",\n            placeholder: \"\",\n            default: \"https://qianfan.baidubce.com/v2\",\n            required: true,\n            key: \"base_url\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n    ],\n    zhipu: [\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n        {\n            label: \"Base Url\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://open.bigmodel.cn/api/paas/v4/\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n    ],\n    deepseek: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://api.deepseek.com\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n    ],\n    MindIE: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：http://ip:port/v1\",\n            default: \"\",\n            required: true,\n            key: \"base_url\",\n        },\n    ],\n    spark: [\n        // {\n        //     label: \"App ID\",\n        //     type: \"text\",\n        //     placeholder: \"\",\n        //     default: \"\",\n        //     required: true,\n        //     key: \"appid\",\n        // },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n        {\n            label: \"API Secret\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_secret\",\n        },\n        {\n            label: \"Base Url\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://spark-api-open.xf-yun.com/v1\",\n            required: true,\n            key: \"openai_api_base\",\n        }\n    ],\n    minimax: [\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"openai_api_key\",\n        },\n        // {\n        //     label: \"Group ID\",\n        //     type: \"text\",\n        //     placeholder: \"\",\n        //     default: \"\",\n        //     required: true,\n        //     key: \"minimax_group_id\",\n        // },\n        {\n            label: \"Api Host\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://api.minimax.chat/v1\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n    ],\n    anthropic: [\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"anthropic_api_key\",\n        },\n        {\n            label: \"API URL\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"anthropic_api_url\",\n        },\n    ],\n    bisheng_rt: [\n        {\n            label: \"Api Host\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"host_base_url\",\n        }\n    ],\n    tencent: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            default: \"https://api.hunyuan.cloud.tencent.com/v1\",\n            required: true,\n            key: \"base_url\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n    ],\n    moonshot: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：https://api.moonshot.cn/v1\",\n            default: \"https://api.moonshot.cn/v1\",\n            required: true,\n            key: \"base_url\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n    ],\n    volcengine: [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"格式示例：https://ark.cn-beijing.volces.com/api/v3\",\n            default: \"https://ark.cn-beijing.volces.com/api/v3\",\n            required: true,\n            key: \"base_url\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n    ],\n    \"silicon\": [\n        {\n            label: \"Base URL\",\n            type: \"text\",\n            placeholder: \"\",\n            default: \"https://api.siliconflow.cn/v1\",\n            required: true,\n            key: \"openai_api_base\",\n        },\n        {\n            label: \"API Key\",\n            type: \"password\",\n            placeholder: \"\",\n            default: \"\",\n            required: true,\n            key: \"api_key\",\n        },\n    ]\n};\n\n\nconst FormField = ({ showDefault, field, value, providerName, apiKeySite, onChange }) => {\n    useEffect(() => {\n        showDefault && field.default && onChange(field.key, field.default)\n    }, [showDefault])\n\n    return (\n        <div className=\"mb-2\">\n            <Label className=\"bisheng-label\">\n                {field.label}\n                {apiKeySite && field.label.indexOf('API Key') !== -1 && <a href={apiKeySite} target=\"_blank\" rel=\"noreferrer\" className=\"ml-1 text-primary\">(获取{providerName} API Key)</a>}\n            </Label>\n            <Input\n                type={field.type}\n                placeholder={field.placeholder}\n                value={value}\n                onChange={(e) => onChange(field.key, e.target.value)}\n                required={field.required}\n            />\n        </div>\n    );\n};\n\n\nconst CustomForm = forwardRef(({ showDefault, provider, formData, providerName, apiKeySite, apiKeyUrl }, ref) => {\n    const [form, setForm] = useState(formData);\n    const fields = modelProviders[provider] || [];\n    \n    const handleChange = (key, value) => {\n        setForm((prevData) => ({\n            ...prevData,\n            [key]: value,\n        }));\n    };\n    useEffect(() => {\n        setForm(formData);\n    }, [formData]);\n    useImperativeHandle(ref, () => ({\n        getData() {\n            const errorObj = fields.find(field => field.required && !form[field.key]);\n            const newForm = fields.reduce((res, field) => {\n                res[field.key] = form[field.key]\n                return res\n            }, {});\n            return [newForm, errorObj ? errorObj.label : ''];\n        }\n    }))\n\n    return (\n        <div className=\"overflow-hidden\">\n            {fields.map((field) => (\n                <FormField\n                    key={provider + field.key}\n                    showDefault={showDefault}\n                    field={field}\n                    value={form[field.key]|| ''}\n                    providerName={providerName}\n                    apiKeySite={apiKeySite}\n                    onChange={handleChange}\n                />\n            ))}\n        </div>\n    );\n});\n\nexport default CustomForm;\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/ModelConfig.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button, LoadButton } from \"@/components/bs-ui/button\";\nimport { Input, Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { addLLmServer, deleteLLmServer, getLLmServerDetail, updateLLmServer } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { ArrowLeft, Plus, Settings, Trash2Icon } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport CustomForm from \"./CustomForm\";\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { getAdvancedParamsTemplate, templateToJsonString } from \"@/util/advancedParamsTemplates\";\nimport { useLinsightConfig } from \"./tabs/WorkbenchModel\";\nimport { useModelProviderInfo } from \"./useLink\";\nimport { t } from \"i18next\";\n\nfunction ModelItem({ data, type, onDelete, onInput, onConfig }) {\n    const { t } = useTranslation()\n    const [model, setModel] = useState({\n        ...data,\n        voice: data.config?.voice || ''\n    })\n    const [error, setError] = useState('')\n    const [isWebSearchEnabled, setIsWebSearchEnabled] = useState(data.config?.enable_web_search || false)\n    const [maxTokens, setMaxTokens] = useState(data.config?.max_tokens ?? '')\n    const [voiceError, setVoiceError] = useState('')\n    const [dialogOpen, setDialogOpen] = useState(false);\n    const [inputAdvancedParams, setInputAdvancedParams] = useState('');\n    const [savedInputParams, setSavedInputParams] = useState(data.config?.user_kwargs || '');\n    const [advancedParams, setAdvancedParams] = useState(() => {\n        const template = getAdvancedParamsTemplate(type, model.model_type as 'llm' | 'embedding') || {};\n        return templateToJsonString(template)\n    });\n    const [originalAdvancedParams, setOriginalAdvancedParams] = useState(advancedParams);\n    const [jsonError, setJsonError] = useState(false);\n\n    const prevDepsRef = useRef({\n        type: type,\n        modelType: model.model_type,\n        dialogOpen: dialogOpen\n    });\n\n    useEffect(() => {\n        setModel({\n            ...data,\n            voice: data.config?.voice || ''\n        });\n        const userSavedParams = data.config?.user_kwargs || '';\n        setSavedInputParams(userSavedParams);\n\n        const template = getAdvancedParamsTemplate(type, model.model_type as 'llm' | 'embedding') || {};\n        const newPlaceholder = templateToJsonString(template) || '{\"temperature\": 0.7, \"top_p\": 0.9}';\n        setAdvancedParams(newPlaceholder);\n        setOriginalAdvancedParams(newPlaceholder);\n\n        if (dialogOpen) {\n            setInputAdvancedParams(userSavedParams);\n            initTemplate();\n        }\n        setJsonError(false);\n    }, [data, dialogOpen, type, model.model_type]);\n\n    const initTemplate = () => {\n        if (!['llm', 'embedding'].includes(model.model_type)) return;\n\n        try {\n            const template = getAdvancedParamsTemplate(type, model.model_type as 'llm' | 'embedding');\n            const templateStr = templateToJsonString(template);\n\n            if (templateStr !== advancedParams) {\n                setAdvancedParams(templateStr);\n                setInputAdvancedParams(templateStr);\n                if (!originalAdvancedParams) {\n                    setOriginalAdvancedParams(templateStr);\n                }\n                onConfig({\n                    ...model.config,\n                    user_kwargs: templateStr\n                });\n            }\n        } catch (err) {\n            console.error('Failed to initialize template:', err);\n        }\n    };\n\n    useEffect(() => {\n        if (dialogOpen) {\n            const currentDeps = {\n                type: type,\n                modelType: model.model_type,\n                dialogOpen: dialogOpen\n            };\n\n            if (\n                currentDeps.type !== prevDepsRef.current.type ||\n                currentDeps.modelType !== prevDepsRef.current.modelType ||\n                currentDeps.dialogOpen !== prevDepsRef.current.dialogOpen\n            ) {\n                initTemplate();\n                prevDepsRef.current = currentDeps;\n            }\n        } else {\n            prevDepsRef.current.dialogOpen = false;\n        }\n    }, [dialogOpen, type, model.model_type]);\n\n    const handleInput = (e) => {\n        const value = e.target.value\n        const updatedModel = { ...model, model_name: value }\n        setModel(updatedModel)\n        const repeated = onInput(value, model.model_type)\n\n        setError('')\n        if (!value) setError(t('model.modelNameEmpty'))\n        if (value.length > 100) setError(t('model.modelNameLength'))\n        if (repeated) setError(t('model.modelNameDuplicate'))\n    }\n\n    const handleVoiceInput = (e) => {\n        const value = e.target.value\n        const updatedModel = { ...model, voice: value }\n        setModel(updatedModel)\n        onConfig({ ...model.config, voice: value })\n        setVoiceError('')\n    }\n\n    const handleSelectChange = (val) => {\n        const oldType = model.model_type;\n        const updatedModel = { ...model, model_type: val }\n        setModel(updatedModel)\n        onInput(model.model_name, val)\n\n        setIsWebSearchEnabled(false)\n        setMaxTokens('')\n\n        if (dialogOpen && oldType !== val) {\n            initTemplate();\n        }\n    }\n\n    const handleDelClick = () => {\n        bsConfirm({\n            desc: t('model.deleteModelConfirmation'),\n            onOk(next) {\n                onDelete()\n                next()\n            }\n        })\n    }\n\n    const handleSwitchChange = (checked) => {\n        setIsWebSearchEnabled(checked)\n        onConfig({\n            enable_web_search: checked,\n            max_tokens: maxTokens,\n            ...(model.config?.user_kwargs && { user_kwargs: model.config.user_kwargs })\n        })\n    }\n\n    const handleMaxTokensChange = (e) => {\n        const value = e.target.value\n        setMaxTokens(value)\n\n        if (value === '') {\n            onConfig({\n                enable_web_search: isWebSearchEnabled,\n                ...(model.config?.user_kwargs && { user_kwargs: model.config.user_kwargs })\n            })\n        } else {\n            onConfig({\n                enable_web_search: isWebSearchEnabled,\n                max_tokens: parseInt(value, 10),\n                ...(model.config?.user_kwargs && { user_kwargs: model.config.user_kwargs })\n            })\n        }\n    }\n\n    const handleSaveAdvancedParams = () => {\n        const currentInput = inputAdvancedParams.trim();\n        if (currentInput) {\n            try {\n                const parsed = JSON.parse(currentInput);\n                if (typeof parsed !== 'object' || parsed === null) {\n                    setJsonError(true);\n                    return;\n                }\n                setJsonError(false);\n            } catch (err) {\n                setJsonError(true);\n                return;\n            }\n        }\n\n        onConfig({\n            ...model.config,\n            user_kwargs: currentInput\n        });\n        setSavedInputParams(currentInput);\n        setInputAdvancedParams(currentInput);\n        setDialogOpen(false);\n        setJsonError(false);\n    };\n\n    const handleCloseDialog = () => {\n        setInputAdvancedParams(savedInputParams);\n        setJsonError(false);\n        setDialogOpen(false);\n    };\n\n    const refreshTemplate = () => {\n        if (dialogOpen) {\n            initTemplate();\n        }\n    };\n    const showAsrTtsTypes = ['azure_openai', 'openai', 'qwen', 'qianfan'];\n    return (\n        <div className=\"group w-full border rounded-sm p-4 mb-2\">\n            <div className=\"flex items-center justify-between\">\n                <span className=\"flex\">{model.name.replace('model', t('model.model'))}\n\n                    {(model.model_type === 'llm' || model.model_type === 'embedding') && (\n                        <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n                            <DialogTrigger asChild>\n                                <div className=\"flex items-center cursor-pointer ml-2\">\n                                    <Settings className=\" text-blue-500\" size={16} strokeWidth={2} />\n                                    <span className=\"ml-1 text-blue-500 text-xs\">{t('model.advancedParamsConfig')}</span>\n                                </div>\n                            </DialogTrigger>\n\n                            <DialogContent className=\"sm:max-w-[625px]\">\n                                <DialogHeader>\n                                    <DialogTitle>{t('model.advancedParamsConfig')}</DialogTitle>\n                                </DialogHeader>\n                                <div className=\"mt-4 text-gray-500\">\n                                    <Label>{t('model.pasteAdvancedParamsHere')}</Label>\n                                    <Textarea\n                                        value={inputAdvancedParams}\n                                        onChange={(e) => {\n                                            const value = e.target.value;\n                                            setInputAdvancedParams(value);\n\n                                            if (value.trim()) {\n                                                try {\n                                                    const parsed = JSON.parse(value.trim());\n                                                    if (typeof parsed !== 'object' || parsed === null) {\n                                                        setJsonError(true);\n                                                    } else {\n                                                        setJsonError(false);\n                                                    }\n                                                } catch (err) {\n                                                    setJsonError(true);\n                                                }\n                                            } else {\n                                                setJsonError(false);\n                                            }\n                                        }}\n                                        className={`mt-1 font-mono text-sm ${jsonError ? 'border-red-500 focus-visible:ring-red-500' : ''}`}\n                                        rows={10}\n                                        placeholder={advancedParams}\n                                    />\n                                    {jsonError && (\n                                        <span className=\"text-red-500 text-xs mt-1 inline-block\">\n                                            {t('model.errorInvalidJsonFormat')}\n                                        </span>\n                                    )}\n                                </div>\n                                <DialogFooter className=\"mt-4\">\n                                    <Button variant=\"outline\" onClick={handleCloseDialog}>{t('model.cancel')}</Button>\n                                    <Button onClick={handleSaveAdvancedParams}>{t('model.save')}</Button>\n                                </DialogFooter>\n                            </DialogContent>\n                        </Dialog>\n                    )}\n                </span>\n\n                <Trash2Icon\n                    onClick={handleDelClick}\n                    className=\"w-[16px] h-[16px] opacity-0 group-hover:opacity-100 cursor-pointer text-gray-500\"\n                />\n            </div>\n            <div className=\"space-y-2 mt-2\">\n                <div>\n                    <Label className=\"bisheng-label\">\n                        <span>{t('model.modelName')}</span>\n                        <QuestionTooltip\n                            className=\"relative top-0.5 ml-1\"\n                            content={t('model.modelNameTooltip')}\n                        ><span /></QuestionTooltip>\n                    </Label>\n                    <Input value={model.model_name} onChange={handleInput} className=\"h-8\"></Input>\n                    {error && <span className=\"text-red-500 text-xs\">{error}</span>}\n                </div>\n                <div>\n                    <Label className=\"bisheng-label\">{t('model.modelType')}</Label>\n                    <Select value={model.model_type} onValueChange={handleSelectChange}>\n                        <SelectTrigger className=\"h-8\">\n                            <SelectValue placeholder=\"\" />\n                        </SelectTrigger>\n                        <SelectContent>\n                            <SelectGroup>\n                                <SelectItem value=\"llm\">LLM</SelectItem>\n                                <SelectItem value=\"embedding\">Embedding</SelectItem>\n                                <SelectItem value=\"rerank\">Rerank</SelectItem>\n                                {showAsrTtsTypes.includes(type) && (\n                                    <>\n                                        <SelectItem value=\"asr\">ASR</SelectItem>\n                                        <SelectItem value=\"tts\">TTS</SelectItem>\n                                    </>\n                                )}\n                            </SelectGroup>\n                        </SelectContent>\n                    </Select>\n                </div>\n                {model.model_type === 'tts' && (\n                    <div>\n                        <Label className=\"bisheng-label\">\n                            <span>{t('model.voiceType')}</span>\n                            <span className=\"text-red-500\">*</span>\n                            <QuestionTooltip\n                                className=\"relative top-0.5 ml-1\"\n                                content={t('model.voiceTypeTooltip')}\n                            ><span /></QuestionTooltip>\n                        </Label>\n                        <Input\n                            value={model.voice || ''}\n                            onChange={handleVoiceInput}\n                            className=\"h-8\"\n                        ></Input>\n\n                        {voiceError && <span className=\"text-red-500 text-xs\">{voiceError}</span>}\n                    </div>\n                )}\n                {model.model_type === 'llm' && (\n                    <>\n                        {['qwen', 'tencent', 'moonshot'].includes(type) && <div className=\"flex gap-2 items-center\">\n                            <Label className=\"bisheng-label\">\n                                {t('model.webSearch')}\n                            </Label>\n                            <Switch checked={isWebSearchEnabled} onCheckedChange={handleSwitchChange} />\n                        </div>}\n                        <div>\n                            <Label className=\"bisheng-label\">\n                                {type === 'qianfan' ? 'max_output_tokens' : (type === 'ollama' ? 'num_ctx' : 'max_tokens')}\n                            </Label>\n                            <Input\n                                type=\"number\"\n                                value={maxTokens}\n                                onChange={handleMaxTokensChange}\n                                className=\"h-8\"\n                            />\n                        </div>\n                    </>\n                )}\n            </div>\n        </div>\n    )\n}\n\nexport const modelProvider = [\n    { \"name\": \"OpenAI\", \"value\": \"openai\" },\n    { \"name\": \"Azure OpenAI\", \"value\": \"azure_openai\" },\n    { \"name\": \"Ollama\", \"value\": \"ollama\" },\n    { \"name\": \"xinference\", \"value\": \"xinference\" },\n    { \"name\": \"llamacpp\", \"value\": \"llamacpp\" },\n    { \"name\": \"vllm\", \"value\": \"vllm\" },\n    { \"name\": \"阿里云百炼\", \"value\": \"qwen\" },\n    { \"name\": \"DeepSeek\", \"value\": \"deepseek\" },\n    { \"name\": \"硅基流动\", \"value\": \"silicon\" },\n    { \"name\": \"火山引擎\", \"value\": \"volcengine\" },\n    { \"name\": \"智谱 AI\", \"value\": \"zhipu\" },\n    { \"name\": \"讯飞星火\", \"value\": \"spark\" },\n    { \"name\": \"腾讯云\", \"value\": \"tencent\" },\n    { \"name\": \"月之暗面\", \"value\": \"moonshot\" },\n    { \"name\": \"百度千帆\", \"value\": \"qianfan\" },\n    { \"name\": \"Minimax\", \"value\": \"minimax\" },\n    { \"name\": \"Anthropic\", \"value\": \"anthropic\" },\n    { \"name\": \"MindIE\", \"value\": \"MindIE\" },\n]\nconst bishengModelProvider = { \"name\": \"bishengRT\", \"value\": \"bisheng_rt\" }\n\nconst defaultForm = {\n    id: null as any,\n    type: '',\n    name: '',\n    limit_flag: false,\n    limit: 1,\n    config: {},\n    models: []\n}\n\nexport default function ModelConfig({ id, onGetName, onBack, onReload, onBerforSave, onAfterSave }) {\n    const { t } = useTranslation()\n    const { refetch: refetchConfig } = useLinsightConfig();\n\n    const [formData, setFormData] = useState({ ...defaultForm })\n    const [modelRefs, setModelRefs] = useState({});\n\n    useEffect(() => {\n        if (id === -1) return\n        getLLmServerDetail(id).then(res => {\n            setFormData(res)\n            const refs = {};\n            res.models.forEach(model => {\n                refs[model.id] = null;\n            });\n            setModelRefs(refs);\n        })\n    }, [id])\n\n    const getModelsByType = useSelectModel()\n    const handleTypeChange = (val) => {\n        const name = onGetName(_modelProvider.find(el => el.value === val).name || '')\n        const models = getModelsByType(val)\n        setFormData({ ...formData, type: val, name, models })\n        const refs = {};\n        models.forEach(model => {\n            refs[model.id] = null;\n        });\n        setModelRefs(refs);\n    }\n\n    const handleAddModel = () => {\n        const maxIndex = formData.models.reduce((max, el, i) => el.name.match(/model (\\d+)/) ? Math.max(max, +el.name.match(/model (\\d+)/)[1]) : max, 0)\n\n        const model = {\n            id: generateUUID(4),\n            name: `model ${maxIndex + 1}`,\n            model_name: '',\n            model_type: 'llm',\n            voice: ''\n        }\n        const newModels = [...formData.models, model];\n        setFormData({ ...formData, models: newModels })\n        setModelRefs(prev => ({\n            ...prev,\n            [model.id]: null\n        }));\n    }\n\n    const handleDelete = (index) => {\n        const models = formData.models.filter((el, i) => index !== i)\n        setFormData({ ...formData, models })\n        const modelId = formData.models[index].id;\n        setModelRefs(prev => {\n            const newRefs = { ...prev };\n            delete newRefs[modelId];\n            return newRefs;\n        });\n    }\n\n    const handleModelChange = (name, type, index) => {\n        const models = formData.models.map((el, i) => index === i ? {\n            ...el,\n            config: type === 'llm' ? el.config : null,\n            model_name: name,\n            model_type: type,\n            voice: type === 'tts' ? (el.voice || '') : ''\n        } : el)\n        setFormData({ ...formData, models })\n\n        setTimeout(() => {\n            if (modelRefs[models[index].id]?.refreshTemplate) {\n                modelRefs[models[index].id].refreshTemplate();\n            }\n        }, 0);\n\n        return formData.models.find((el, i) => index !== i && el.model_name === name)\n    }\n\n    const handleVoiceChange = (voice, index) => {\n        const models = formData.models.map((el, i) => index === i ? {\n            ...el,\n            voice\n        } : el)\n        setFormData({ ...formData, models })\n    }\n\n    const handleModelConfig = (config, index) => {\n        const models = formData.models.map((el, i) => index === i ? {\n            ...el,\n            config\n        } : el)\n        setFormData({ ...formData, models })\n    }\n\n    const { message } = useToast()\n    const formRef = useRef(null)\n    const [isLoading, setIsLoading] = useState(false);\n    const handleSave = async () => {\n        setIsLoading(true)\n        try {\n            const exists = onBerforSave(formData.id, formData.name)\n            if (exists) {\n                return message({\n                    variant: 'warning',\n                    description: t('model.duplicateServiceProviderName')\n                })\n            }\n            if (!formData.name || formData.name.length > 100) {\n                return message({\n                    variant: 'warning',\n                    description: t('model.duplicateServiceProviderNameValidation')\n                })\n            }\n            const [config, errorKey] = formRef.current.getData();\n            if (errorKey) {\n                return message({\n                    variant: 'warning',\n                    description: `${errorKey} ${t('model.notBeEmpty')}`\n                })\n            }\n\n            const map = {}\n            let repeat = false\n            let hasTTSVoiceError = false\n\n            const error = formData.models.some(model => {\n                if (map[model.model_name]) repeat = true\n                map[model.model_name] = true\n\n                if (model.model_type === 'tts' && !model.config?.voice) {\n                    hasTTSVoiceError = true\n                }\n\n                return !model.model_name || model.model_name.length > 100\n            })\n            if (error) {\n                return message({\n                    variant: 'warning',\n                    description: t('model.modelNameValidation')\n                })\n            }\n            if (repeat) {\n                return message({\n                    variant: 'warning',\n                    description: t('model.modelDuplicate')\n                })\n            }\n            if (hasTTSVoiceError) {\n                return message({\n                    variant: 'warning',\n                    description: t('model.voiceTypeRequired')\n                })\n            }\n\n            const saveData = {\n                ...formData,\n                config\n            }\n\n            if (id === -1) {\n                await captureAndAlertRequestErrorHoc(addLLmServer(saveData).then(res => {\n                    onAfterSave(res.code === 10803 ? res.msg : t('model.addSuccess'))\n                    onBack()\n                }))\n            } else {\n                await captureAndAlertRequestErrorHoc(updateLLmServer(saveData).then(res => {\n                    onAfterSave(t('model.updateSuccess'))\n                    onBack()\n                }))\n            }\n            refetchConfig()\n        } catch (error) {\n            console.error('Save error:', error);\n        } finally {\n            setIsLoading(false);\n        }\n    };\n\n    const handleModelDel = () => {\n        bsConfirm({\n            desc: t('model.deleteConfirmation'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(deleteLLmServer(id).then(res => {\n                    onAfterSave(t('model.deleteSuccess'))\n                    refetchConfig()\n                }))\n                onBack()\n                next()\n            }\n        })\n    }\n\n    const _modelProvider = useMemo(() => {\n        return id === -1 ? modelProvider : [...modelProvider, bishengModelProvider]\n    }, [id])\n\n    const providerInfo = useModelProviderInfo(formData.type)\n\n    if (!formData) return <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n        <LoadingIcon />\n    </div>\n\n    return <div className=\"relative size-full py-4\">\n        <div className=\"flex ml-6 items-center gap-x-3\">\n            <ShadTooltip content={t('back', { ns: 'bs' })} side=\"right\">\n                <button className=\"extra-side-bar-buttons w-[36px]\" onClick={() => onBack()}>\n                    <ArrowLeft strokeWidth={1.5} className=\"side-bar-button-size\" />\n                </button>\n            </ShadTooltip>\n            <span>{id === -1 ? t('model.addModel') : t('model.modelConfiguration')}</span>\n        </div>\n        <div className=\"w-[50%] min-w-64 px-4 pb-10 mx-auto mt-6 h-[calc(100vh-220px)] overflow-y-auto\">\n            <div className=\"mb-2\">\n                <Label className=\"bisheng-label\"> {t('model.interModelFormat')}</Label>\n                <Select value={formData.type} disabled={id !== -1} onValueChange={handleTypeChange}>\n                    <SelectTrigger>\n                        <SelectValue placeholder=\"\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                        <SelectGroup>\n                            {_modelProvider.map((model => <SelectItem key={model.value} value={model.value}>{model.name}</SelectItem>))}\n                        </SelectGroup>\n                    </SelectContent>\n                </Select>\n            </div>\n            <div className=\"mb-2\">\n                <Label className=\"bisheng-label\">\n                    <span>{t('model.serviceProviderName')}</span>\n                    <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('model.serviceProviderNameTooltip')}><span /></QuestionTooltip>\n                </Label>\n                <Input value={formData.name} onChange={(e) => {\n                    const name = e.target.value\n                    setFormData({ ...formData, name })\n                    document.getElementById('model_provider_name_error').style.display = !name || name.length > 100 ? 'block' : 'none'\n                }}></Input>\n                <span id=\"model_provider_name_error\" style={{ display: 'none' }} className=\"text-red-500 text-xs\">{\n                    formData.name ? t('model.max100Characters') : t('model.cannotBeEmpty')\n                }</span>\n            </div>\n            <CustomForm\n                ref={formRef}\n                showDefault={id === -1}\n                provider={formData.type}\n                formData={formData.config}\n                providerName={_modelProvider.find(el => el.value === formData.type)?.name}\n                apiKeySite={providerInfo?.apiKeyUrl}\n            />\n            <div className={formData.type ? 'visible' : 'invisible'}>\n                <div className=\"mb-2\">\n                    <div className=\"flex items-center gap-x-6\">\n                        <Label className=\"bisheng-label\">\n                            {t('model.dailyCallLimit')}\n                        </Label>\n                        <Switch checked={formData.limit_flag} onCheckedChange={(val) => setFormData(form => ({ ...form, limit_flag: val }))} />\n                        <div className={`flex items-center gap-x-2 ${formData.limit_flag ? '' : 'invisible'}`}>\n                            <Input type=\"number\" value={formData.limit} onChange={(e) => setFormData({ ...formData, limit: Number(e.target.value) })}\n                                className=\"w-24 h-8\"\n                            ></Input>\n                            <span>{t('model.timesPerDay')}</span>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"mb-2\">\n                    <Label className=\"bisheng-label\">\n                        {t('model.model')}\n                        {providerInfo && <a href={providerInfo.modelUrl} target=\"_blank\" rel=\"noreferrer\" className=\"ml-1 text-primary/80\">({t('model.visitOfficialWebsiteToViewAvailableModels')})</a>}\n                    </Label>\n                    <div className=\"w-[92%]\">\n                        {\n                            formData.models.map((m, i) => (\n                                <ModelItem\n                                    key={m.id}\n                                    ref={el => modelRefs[m.id] = el}\n                                    data={m}\n                                    type={formData.type}\n                                    onInput={(name, type) => handleModelChange(name, type, i)}\n                                    onVoiceChange={(voice) => handleVoiceChange(voice, i)}\n                                    onConfig={(config) => handleModelConfig(config, i)}\n                                    onDelete={() => handleDelete(i)}\n                                />\n                            ))\n                        }\n                        <Button className=\"w-full mt-2 border-dashed border-border\" variant=\"outline\" onClick={handleAddModel}>\n                            <Plus className=\"size-5 text-primary mr-1\" />\n                            <span>{t('model.addModel')}</span>\n                        </Button>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div className=\"absolute right-0 bottom-0 p-4 flex gap-4\">\n            {id !== -1 && <Button className=\"px-8\" variant=\"destructive\" onClick={handleModelDel}>{t('model.delete')}</Button>}\n            <Button className=\"px-8\" variant=\"outline\" onClick={() => onBack()}>{t('model.cancel')}</Button>\n            <LoadButton\n                className=\"px-16\"\n                disabled={!formData.type}\n                loading={isLoading}\n                onClick={handleSave}\n            >\n                {isLoading ? t('model.modelStatusChecking') : t('model.save')}\n            </LoadButton>\n        </div>\n    </div>\n}\n\nconst useSelectModel = () => {\n    const modelsRef = useRef<any>(null)\n\n    const loadData = async () => {\n        try {\n            const response = await fetch(__APP_ENV__?.BASE_URL + '/models/data.json');\n            if (!response.ok) {\n                throw new Error('Failed to fetch data');\n            }\n            return await response.json();\n        } catch (error) {\n            console.error('Failed to load commitments:', error);\n            return { title: '', commitments: [] };\n        }\n    }\n\n    useEffect(() => {\n        loadData().then(\n            res => modelsRef.current = res\n        )\n    }, [])\n\n    return (type) => {\n        return (modelsRef.current?.[type] || [])\n            .map(item => ({\n                ...item,\n                id: generateUUID(4)\n            }))\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/SystemModelConfig.tsx",
    "content": "import { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/bs-ui/tabs\";\nimport ShadTooltip from \"@/components/ShadTooltipComponent\";\nimport { ArrowLeft } from \"lucide-react\";\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport AssisModel from \"./tabs/AssisModel\";\nimport EvaluationModel from \"./tabs/EvaluationModel\";\nimport KnowledgeModle from \"./tabs/KnowledgeModel\";\nimport WorkflowModel from \"./tabs/WorkflowModel\";\nimport WorkbenchModel from \"./tabs/WorkbenchModel\";\n\nexport default function SystemModelConfig({ data, onBack }) {\n    const { t } = useTranslation('model')\n    const { llmOptions, embeddings, asrModel, ttsModel} = useMemo(() => {\n        let llmOptions = []\n        let embeddings = []\n        let asrModel = []\n        let ttsModel = []\n        const rerank = []\n        data.forEach(server => {     \n            const serverEmbItem = { value: server.id, label: server.name, children: [] }\n            const serverLlmItem = { value: server.id, label: server.name, children: [] }\n            const serverAsrItem = { value: server.id, label: server.name, children: [] }\n            const serverTtsItem = { value: server.id, label: server.name, children: [] }\n            const rerankItem = { value: server.id, label: server.name, children: [] }\n\n            server.models.forEach(model => {\n             \n                \n                const item = {\n                    value: model.id,\n                    label: model.model_name\n                }\n                if (!model.online) return\n                if (model.model_type === 'asr') {\n                    serverAsrItem.children.push(item)\n                } else if (model.model_type === 'tts') {\n                    serverTtsItem.children.push(item)\n                } else if (model.model_type === 'embedding') {\n                    serverEmbItem.children.push(item)\n                } else if (model.model_type === 'llm') {\n                    serverLlmItem.children.push(item)\n                } else {\n                    rerankItem.children.push(item)\n                }\n            })\n\n            if (serverLlmItem.children.length) llmOptions.push(serverLlmItem)\n            if (serverEmbItem.children.length) embeddings.push(serverEmbItem)\n            if (serverAsrItem.children.length) asrModel.push(serverAsrItem)\n            if (serverTtsItem.children.length) ttsModel.push(serverTtsItem)\n            if (rerankItem.children.length) rerank.push(rerankItem)\n        });\n\n        return { llmOptions, embeddings, asrModel, ttsModel,rerank}\n    }, [data])\n\n    return <div className=\"px-2 py-4 size-full pb-20 relative overflow-y-auto\">\n        <div className=\"\">\n            <div className=\"flex ml-6 items-center gap-x-3\">\n                <ShadTooltip content={t('back')} side=\"right\">\n                    <button className=\"extra-side-bar-buttons w-[36px]\" onClick={() => onBack()}>\n                        <ArrowLeft strokeWidth={1.5} className=\"side-bar-button-size\" />\n                    </button>\n                </ShadTooltip>\n                <span>{t('model.systemModelSettings')}</span>\n            </div>\n            <div className=\"px-4\">\n                <Tabs defaultValue=\"workbench\" className=\"flex flex-col\">\n                    <TabsList className=\"w-[550px] m-auto\">\n                        <TabsTrigger value=\"workbench\" className=\"w-[150px]\">{t('model.workModel')}</TabsTrigger>\n                        <TabsTrigger value=\"knowledge\" className=\"w-[150px]\">{t('model.knowledgeBaseModel')}</TabsTrigger>\n                        <TabsTrigger value=\"assis\" className=\"w-[150px]\">{t('model.assistantModel')}</TabsTrigger>\n                        <TabsTrigger value=\"evaluation\" className=\"w-[150px]\">{t('model.evaluationModel')}</TabsTrigger>\n                        <TabsTrigger value=\"workflow\" className=\"w-[150px]\">{t('model.workflowModel')}</TabsTrigger>\n                    </TabsList>\n                     <TabsContent value=\"workbench\">\n                        <WorkbenchModel llmOptions={llmOptions} embeddings={embeddings} asrModel={asrModel} ttsModel={ttsModel} onBack={onBack}></WorkbenchModel>\n                    </TabsContent>\n                    <TabsContent value=\"knowledge\">\n                        <KnowledgeModle llmOptions={llmOptions} embeddings={embeddings} onBack={onBack}></KnowledgeModle>\n                    </TabsContent>\n                    <TabsContent value=\"assis\">\n                        <AssisModel llmOptions={llmOptions} onBack={onBack}></AssisModel>\n                    </TabsContent>\n                    <TabsContent value=\"evaluation\">\n                        <EvaluationModel llmOptions={llmOptions} onBack={onBack}></EvaluationModel>\n                    </TabsContent>\n                    <TabsContent value=\"workflow\">\n                        <WorkflowModel llmOptions={llmOptions} onBack={onBack}></WorkflowModel>\n                    </TabsContent>\n                </Tabs>\n            </div>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/index.tsx",
    "content": "import { SettingIcon } from \"@/components/bs-icons\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Switch } from \"@/components/bs-ui/switch\"\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\"\nimport { userContext } from \"@/contexts/userContext\"\nimport { useContext, useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n// import { transformModule, transformEvent, transformObjectType } from \"../LogPage/utils\"\nimport { LoadingIcon } from \"@/components/bs-icons/loading\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\"\nimport { changeLLmServerStatus, getAssistantModelList, getModelListApi } from \"@/controllers/API/finetune\"\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\"\nimport { CircleMinus, CirclePlus } from \"lucide-react\"\nimport { useQuery } from \"react-query\"\nimport ModelConfig from \"./ModelConfig\"\nimport SystemModelConfig from \"./SystemModelConfig\"\n\nfunction CustomTableRow({ data, index, user, onModel, onCheck }) {\n    const { t } = useTranslation()\n    const [expand, setExpand] = useState(false)\n\n    return <div className=\"text-sm bs-table-row\">\n        <div className={`grid grid-cols-2 transition-colors hover:bg-muted/50 items-center mt-1 mx-2 h-[52px] rounded-sm`}>\n            <div className=\"bs-table-td h-full p-2 flex items-center gap-x-3 first:rounded-l-md last:rounded-r-md font-medium\">\n                {\n                    expand ?\n                        <CircleMinus className=\"cursor-pointer min-w-4 w-4 h-4\" onClick={() => setExpand(false)} />\n                        : <CirclePlus onClick={() => setExpand(true)} className=\"cursor-pointer min-w-4 w-4 h-4\" />\n                }\n                {data.name}\n            </div>\n            <div className=\"bs-table-td h-full p-2 flex justify-end items-center gap-x-3 first:rounded-l-md last:rounded-r-md font-medium\">\n                <Button variant=\"link\" onClick={() => onModel(data.id)}\n                    disabled={user.role !== 'admin'}\n                    className={`link px-0 pl-6`}>\n                    {t('model.modelConfiguration')}\n                </Button>\n            </div>\n        </div>\n        {\n            expand && <div className=\"px-12 py-2 m-auto border-collapse\">\n                <Table>\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead className=\"w-[200px]\">{t('model.modelName')}</TableHead>\n                            <TableHead className=\"w-[200px] min-w-[100px]\">{t('model.modelType')}</TableHead>\n                            <TableHead className=\"w-[200px] min-w-[100px]\">{t('model.status')}</TableHead>\n                            <TableHead className=\"w-[100px] min-w-[100px]\">{t('model.onlineOfflineOperation')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {data.models.map(m => (\n                            <TableRow key={m.id}>\n                                <TableCell>{m.model_name}</TableCell>\n                                <TableCell>{m.model_type}</TableCell>\n                                <TableCell>\n                                    <span className={['text-green-500', 'text-orange-500', 'text-gray-500'][m.status]}>\n                                        {[t('model.available'), t('model.abnormal'), t('model.unknown')][m.status]}\n                                    </span>\n                                    {m.status === 1 && <QuestionTooltip className=\" align-middle\" content={m.remark} />}\n                                </TableCell>\n                                <TableCell>\n                                    <Switch disabled={user.role !== 'admin'} checked={m.online} onCheckedChange={(bool) => onCheck(index, bool, m.id)} />\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                    {!data.models.length && <TableFooter>\n                        <TableRow>\n                            <TableCell colSpan={9} className=\"text-center text-gray-400\">{t('model.empty')}</TableCell>\n                        </TableRow>\n                    </TableFooter>}\n                </Table>\n            </div>\n        }\n    </div >\n}\n\nexport default function Management() {\n    const { t, i18n } = useTranslation();\n    useEffect(() => {\n        i18n.loadNamespaces('model');\n    }, [i18n]);\n\n    const [data, setData] = useState([])\n    const { user } = useContext(userContext)\n    const [modelId, setModelId] = useState(null)\n    const [systemModel, setSystemModel] = useState(false)\n    const [loading, setLoading] = useState(false)\n    const { refetch } = useModel()\n\n    const reload = async () => {\n        setLoading(true)\n        setData(await getModelListApi())\n        setLoading(false)\n        refetch()\n    }\n    useEffect(() => { reload() }, [])\n\n    const handleGetRepeatName = (name) => {\n        let index = 0\n        let nameIndex = ''\n        data.forEach(el => {\n            if (el.name.indexOf(name) === 0) {\n                const match = el.name.match(/\\d+$/)\n                const num = match ? match[0] : 0\n                index = Math.max(index, Number(num))\n                nameIndex = ` ${index + 1}`\n            }\n        })\n        return `${name}${nameIndex}`\n    }\n    const { message } = useToast()\n\n    // off & online\n    const handleCheck = (index, bool, id) => {\n        captureAndAlertRequestErrorHoc(changeLLmServerStatus(id, bool).then(res => {\n            refetch()\n        }))\n        data[index].models = data[index].models.map(el => el.id === id ? { ...el, online: bool } : el)\n        setData([...data])\n    }\n\n    if (modelId) return <ModelConfig\n        id={modelId}\n        onGetName={handleGetRepeatName}\n        onBack={() => setModelId(null)}\n        onReload={reload}\n        onBerforSave={(id, name) => data.some(el => el.name === name && el.id !== id)}\n        onAfterSave={(msg) => {\n            message({ variant: 'success', description: msg })\n            reload()\n        }}\n    />\n\n    if (systemModel) return <SystemModelConfig data={data} onBack={() => setSystemModel(false)} />\n\n    return <div className=\"relative bg-background-login h-full px-2 py-4\">\n        {loading && (\n            <div className=\"absolute left-0 top-0 z-10 flex h-full w-full items-center justify-center bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n                <LoadingIcon />\n            </div>\n        )}\n        <div className=\"h-full overflow-y-auto\">\n            <div className=\"flex justify-end gap-4\">\n                {user.role === 'admin' && <Button className=\"text-red-500\" onClick={() => setSystemModel(true)} variant=\"secondary\">\n                    <SettingIcon className=\"text-red-500\" />\n                    {t('model.systemModelSettings')}\n                </Button>}\n                {user.role === 'admin' && <Button onClick={() => setModelId(-1)}>{t('model.addModel')}</Button>}\n                <Button className=\"bg-black-button\" onClick={reload}>{t('model.refresh')}</Button>\n            </div>\n            <div className=\"h-[85%]\">\n                <div className=\"flex h-10 justify-between items-center font-medium text-muted-foreground text-sm\">\n                    <span className=\"ml-5\">{t('model.serviceProvider')}</span>\n                    <span className=\"mr-5\">{t('model.actions')}</span>\n                </div>\n                <div className=\"pb-20\">\n                    {\n                        data.map((d, index) => <CustomTableRow\n                            key={d.id}\n                            user={user}\n                            data={d}\n                            index={index}\n                            onCheck={handleCheck}\n                            onModel={setModelId}\n                        />)\n                    }\n                </div>\n            </div>\n        </div>\n        <div className=\"bisheng-table-footer bg-background-login px-6\">\n            <p className=\"desc\">{t('model.modelCollectionCaption')}.</p>\n        </div>\n    </div>\n\n}\n\n// model list（embeddings llm）\nexport function useModel(type = 'llm') {\n    const { data, isLoading, refetch } = useQuery({\n        queryKey: type === 'llm' ? \"QueryModelsKey\" : \"QueryAssistantModelsKey\",\n        queryFn: () => type === 'llm' ? getModelListApi() : getAssistantModelList(),\n        select: (data) => {\n            const llmOptions = []\n            const embeddings = []\n            const asrModel = []\n            const ttsModel = []\n            const rerank = []\n            data.forEach(server => {\n                const serverEmbItem = { value: server.id, label: server.name, children: [] }\n                const serverLlmItem = { value: server.id, label: server.name, children: [] }\n                const serverAsrItem = { value: server.id, label: server.name, children: [] }\n                const serverTtsItem = { value: server.id, label: server.name, children: [] }\n                const rerankItem = { value: server.id, label: server.name, children: [] }\n                server.models.forEach(model => {\n                    const item = {\n                        value: String(model.id),\n                        label: model.model_name\n                    }\n                    if (!model.online) return\n                    if (model.model_type === 'asr') {\n                        serverAsrItem.children.push(item)\n                    } else if (model.model_type === 'tts') {\n                        serverTtsItem.children.push(item)\n                    } else if (model.model_type === 'embedding') {\n                        serverEmbItem.children.push(item)\n                    } else if (model.model_type === 'llm') {\n                        serverLlmItem.children.push(item)\n                    } else {\n                        rerankItem.children.push(item)\n                    }\n                })\n\n                if (serverLlmItem.children.length) llmOptions.push(serverLlmItem)\n                if (serverEmbItem.children.length) embeddings.push(serverEmbItem)\n                if (serverAsrItem.children.length) asrModel.push(serverAsrItem)\n                if (serverTtsItem.children.length) ttsModel.push(serverTtsItem)\n                if (rerankItem.children.length) rerank.push(rerankItem)\n            });\n\n            return { llmOptions, embeddings, asrModel, ttsModel, rerank }\n        }\n    });\n\n    const {\n        llmOptions = [],\n        embeddings = [],\n        asrModel = [],\n        ttsModel = [],\n        rerank=[]\n    } = data ?? {};\n    return {\n        llmOptions,\n        embeddings,\n        asrModel,\n        ttsModel,\n        isLoading,\n        rerank,\n        refetch\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/tabs/AssisModel.tsx",
    "content": "import { TrashIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Input } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { generateUUID } from \"@/components/bs-ui/utils\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio-group\";\nimport { getAssistantModelConfig, updateAssistantModelConfig } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport uniqBy from \"lodash-es/uniqBy\";\nimport { Plus } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ModelSelect } from \"./KnowledgeModel\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\n\nconst ModelRow = ({ item, index, llmOptions, updateField, deleteRow }) => {\n    const { t } = useTranslation('model')\n\n    return <div className=\"grid mb-4 items-center\" style={{ gridTemplateColumns: \"repeat(2, 1fr) 80px 110px 76px 90px 40px\" }}>\n        <div className=\"pr-2\">\n            <ModelSelect\n                label={''}\n                value={item.model_id}\n                options={llmOptions}\n                onChange={(val) => updateField(index, 'model_id', val)}\n            />\n        </div>\n        <div className=\"pr-2\">\n            <Select value={item.agent_executor_type} onValueChange={(val) => updateField(index, 'agent_executor_type', val)}>\n                <SelectTrigger>\n                    <SelectValue placeholder=\"\" />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"function call\">Function call</SelectItem>\n                        <SelectItem value=\"ReAct\">ReAct</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n        </div>\n        <div className=\"pr-2\">\n            <Select value={item.streaming ? \"1\" : \"0\"} onValueChange={(val) => updateField(index, 'streaming', val === \"1\")}>\n                <SelectTrigger>\n                    <SelectValue placeholder=\"\" />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"1\">{t('model.yes')}</SelectItem>\n                        <SelectItem value=\"0\">{t('model.no')}</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n        </div>\n        <div className=\"pr-2\">\n            <Input\n                type=\"number\"\n                value={item.knowledge_max_content}\n                onChange={(e) => updateField(index, 'knowledge_max_content', Math.min(parseInt(e.target.value), 15000))}\n                min={1}\n                max={15000}\n            />\n        </div>\n        <div className=\"pr-2\">\n            <Select value={item.knowledge_sort_index ? \"1\" : \"0\"} onValueChange={(val) => updateField(index, 'knowledge_sort_index', val === \"1\")}>\n                <SelectTrigger>\n                    <SelectValue placeholder=\"\" />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectItem value=\"1\">{t('model.yes')}</SelectItem>\n                        <SelectItem value=\"0\">{t('model.no')}</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n        </div>\n        <div className=\"m-auto\">\n            <RadioGroup value={item.default ? \"1\" : \"0\"} onValueChange={(val) => updateField(index, 'default', val === \"1\")}>\n                <RadioGroupItem value=\"1\"></RadioGroupItem>\n            </RadioGroup>\n        </div>\n        <div className=\"m-auto\">\n            <TrashIcon className=\"text-gray-500 cursor-pointer size-4\" onClick={() => deleteRow(index)} />\n        </div>\n    </div>\n};\n\nconst defaultValue = {\n    llm_list: [{\n        model_id: null,\n        agent_executor_type: \"\",\n        knowledge_max_content: 15000,\n        knowledge_sort_index: false,\n        default: true,\n        streaming: false\n    }],\n    auto_llm: {\n        model_id: null,\n        agent_executor_type: \"\",\n        knowledge_max_content: 0,\n        knowledge_sort_index: false,\n        default: false,\n        streaming: false\n    }\n}\n\nexport default function AssisModel({ llmOptions, onBack }) {\n    const [form, setForm] = useState({ ...defaultValue });\n    const { t } = useTranslation('model')\n\n    const [loading, setLoading] = useState(true)\n    useEffect(() => {\n        setLoading(true)\n        getAssistantModelConfig().then(({ llm_list, auto_llm }) => {\n            setForm({\n                llm_list,\n                auto_llm: auto_llm || { ...defaultValue.auto_llm }\n            })\n            setLoading(false)\n        })\n    }, []);\n\n    const updateField = (index, field, value) => {\n        const updatedList = form.llm_list.map((item, i) => {\n            if (i === index) {\n                return { ...item, [field]: value };\n            } else if (field === 'default' && value === true) {\n                return { ...item, default: false };\n            }\n            return item;\n        });\n\n        setForm({ ...form, llm_list: updatedList });\n    };\n\n    const updateAutoLLMField = (field, value) => {\n        setForm({ ...form, auto_llm: { ...form.auto_llm, [field]: value } });\n    };\n\n    const addNewRow = () => {\n        const newRow = {\n            model_id: Date.now(),\n            agent_executor_type: \"\",\n            knowledge_max_content: 15000,\n            knowledge_sort_index: false,\n            default: !form.llm_list.length,\n            streaming: true\n        };\n        setForm({\n            ...form,\n            llm_list: [...form.llm_list, newRow]\n        });\n    };\n\n    const deleteRow = (index) => {\n        let target = null\n        const updatedList = form.llm_list.filter((_, i) => {\n            if (i === index) {\n                target = _\n                return false\n            }\n            return true\n        }).map((item, i) => {\n            if (target.default && i === 0) return { ...item, default: true };\n            return item;\n        });\n        setForm({ ...form, llm_list: updatedList });\n    };\n\n    const { message } = useToast()\n    const handleSave = () => {\n        console.log('Form data to save:', form);\n        if (form.llm_list.some(el => el.model_id === null)) {\n            return message({ variant: 'error', description: t('model.assistantInferenceModel') + t('bs:required') })\n        }\n        if (form.auto_llm.model_id === null) {\n            return message({ variant: 'error', description: t('model.assistantAutoOptimizationModel') + t('bs:required') })\n        }\n        const uniqueList = uniqBy(form.llm_list, 'model_id');\n        if (uniqueList.length !== form.llm_list.length) {\n            return message({ variant: 'error', description: t('model.assistantInferenceModelRepetition') })\n        }\n\n        captureAndAlertRequestErrorHoc(updateAssistantModelConfig(form).then(res => {\n            message({ variant: 'success', description: t('model.saveSuccess') })\n        }));\n    };\n\n    if (loading) return <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n        <LoadingIcon />\n    </div>\n\n    return (\n        <div className=\"w-[70vw] mx-auto pt-2\">\n            <div className=\"mb-6\">\n                <span className=\"pl-1\">{t('model.assistantInferenceModel')}</span>\n                <div className=\"mt-2 border p-4 rounded-md bg-muted\">\n                    <div className=\"grid mb-4 items-center\" style={{ gridTemplateColumns: \"repeat(2, 1fr) 80px 110px 68px 90px 40px\" }}>\n                        <Label className=\"bisheng-label\">{t('model.model')}<span className=\"text-red-500 text-xs\">*</span></Label>\n                        <Label className=\"bisheng-label\">\n                            <span>{t('model.assistantExecutionMode')}</span>\n                            <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('model.assistantExecutionModeTooltip')} />\n                        </Label>\n                        <Label className=\"bisheng-label\">{t('model.streamingOutput')}</Label>\n                        <Label className=\"bisheng-label\">\n                            <span>{t('model.assistantKnowledgeBaseMaxCharacters')}</span>\n                            <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('model.assistantKnowledgeBaseMaxCharactersTooltip')} />\n                        </Label>\n                        <Label className=\"bisheng-label\">\n                            <span>{t('model.reorderAfterRetrieval')}</span>\n                            <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('model.reorderAfterRetrievalTooltip')} />\n                        </Label>\n                        <Label className=\"bisheng-label text-center\">{t('model.setAsDefault')}</Label>\n                        <div></div>\n                    </div>\n                    {form.llm_list.map((item, index) => (\n                        <ModelRow\n                            key={generateUUID(6)} // more render\n                            item={item}\n                            index={index}\n                            llmOptions={llmOptions}\n                            updateField={updateField}\n                            deleteRow={deleteRow}\n                        />\n                    ))}\n                    <Button variant=\"outline\" size=\"icon\" onClick={addNewRow}>\n                        <Plus className=\"size-5\" />\n                    </Button>\n                </div>\n            </div>\n            <div className=\"\">\n                <span className=\"pl-1\">{t('model.assistantAutoOptimizationModel')}</span>\n                <div className=\"mt-2 border p-4 rounded-md bg-muted\">\n                    <div className=\"grid grid-cols-4 gap-2\">\n                        <Label className=\"bisheng-label\">{t('model.model')}<span className=\"text-red-500 text-xs\">*</span></Label>\n                        <Label className=\"bisheng-label\">{t('model.streamingOutput')}</Label>\n                    </div>\n                    <div className=\"grid grid-cols-4 gap-2 mt-4\">\n                        <ModelSelect\n                            label={''}\n                            value={form.auto_llm.model_id}\n                            options={llmOptions}\n                            onChange={(val) => updateAutoLLMField('model_id', val)}\n                        />\n                        <Select value={form.auto_llm.streaming ? \"1\" : \"0\"} onValueChange={(val) => updateAutoLLMField('streaming', val === \"1\")}>\n                            <SelectTrigger>\n                                <SelectValue placeholder=\"\" />\n                            </SelectTrigger>\n                            <SelectContent>\n                                <SelectGroup>\n                                    <SelectItem value=\"1\">{t('model.yes')}</SelectItem>\n                                    <SelectItem value=\"0\">{t('model.no')}</SelectItem>\n                                </SelectGroup>\n                            </SelectContent>\n                        </Select>\n                    </div>\n                </div>\n            </div>\n            <div className=\"mt-10 text-center space-x-6\">\n                <Button className=\"px-6\" variant=\"outline\" onClick={onBack}>{t('model.cancel')}</Button>\n                <Button className=\"px-10\" onClick={handleSave}>{t('model.save')}</Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/tabs/EvaluationModel.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { getEvaluationModelConfig, updateEvaluationModelConfig } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ModelSelect } from \"./KnowledgeModel\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\nexport default function EvaluationModel({ llmOptions, onBack }) {\n    const { t } = useTranslation('model')\n    const [selectedModel, setSelectedModel] = useState(null);\n    const [loading, setLoading] = useState(true)\n    useEffect(() => {\n        setLoading(true)\n        getEvaluationModelConfig().then(res => {\n            setSelectedModel(res.model_id)\n            setLoading(false)\n        })\n    }, []);\n\n    const { message } = useToast()\n    const handleSave = () => {\n        if (!selectedModel) {\n            return message({ variant: 'error', description: t('model.defaultEvaluationFeature') + t('bs:required') })\n        }\n        const data = {\n            model_id: selectedModel\n        };\n        captureAndAlertRequestErrorHoc(updateEvaluationModelConfig(data).then(res => {\n            message({ variant: 'success', description: t('model.saveSuccess') })\n        }));\n    };\n\n    if (loading) return <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n        <LoadingIcon />\n    </div>\n\n    return (\n        <div className=\"max-w-[520px] mx-auto\">\n            <div className=\"mt-10\">\n                <Label className=\"bisheng-label\">{t('model.defaultEvaluationFeature')}<span className=\"text-red-500 text-xs\">*</span></Label>\n                <ModelSelect\n                    label={''}\n                    value={selectedModel}\n                    options={llmOptions}\n                    onChange={(val) => setSelectedModel(val)}\n                />\n            </div>\n            <div className=\"mt-10 text-center space-x-6\">\n                <Button className=\"px-6\" variant=\"outline\" onClick={onBack}>{t('model.cancel')}</Button>\n                <Button className=\"px-10\" onClick={handleSave}>{t('model.save')}</Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/tabs/KnowledgeModel.tsx",
    "content": "import { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"@/components/bs-ui/dialog\";\nimport { Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport Cascader from \"@/components/bs-ui/select/cascader\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport Tip from \"@/components/bs-ui/tooltip/tip\";\nimport { getKnowledgeModelConfig, updateKnowledgeModelConfig } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { Settings } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { defalutPrompt } from \"./WorkbenchModel\";\n\nexport const ModelSelect = ({ required = false, close = false, label, tooltipText = '', value, options, onChange }) => {\n\n    const defaultValue = useMemo(() => {\n        let _defaultValue = []\n        if (!value) return _defaultValue\n        options.some(option => {\n            const model = option.children.find(el => el.value === value)\n            if (model) {\n                _defaultValue = [{ value: option.value, label: option.label }, { value: model.value, label: model.label }]\n                return true\n            }\n        })\n        // 无对应选项自动清空旧值\n        if (_defaultValue.length === 0) onChange(null)\n        return _defaultValue\n    }, [value])\n\n    return (\n        <div>\n            <Label className=\"bisheng-label\">\n                <span>{label}</span>\n                {required && <span className=\"text-red-500 text-xs\">*</span>}\n                {tooltipText && <QuestionTooltip className=\"relative top-0.5 ml-1\" content={tooltipText} />}\n            </Label>\n            <Cascader\n                defaultValue={defaultValue}\n                options={options}\n                close={close}\n                onChange={(val) => onChange(val[1])}\n            />\n        </div>\n    );\n};\n\n\nconst PromptDialog = ({ value, onChange, onRestore, onSave, children }) => {\n    const { t } = useTranslation('model')\n    const [open, setOpen] = useState(false)\n    const modifyNotSavedRef = useRef(false)\n    const [textValue, setTextValue] = useState(value)\n    useEffect(() => {\n        open && setTextValue(value)\n    }, [value, open])\n\n    const handleCancel = () => {\n        if (modifyNotSavedRef.current) {\n            return bsConfirm({\n                title: t('model.cancelEdit'),\n                desc: t('model.confirmCancelEdit'),\n                onOk: (next) => {\n                    next();\n                    setOpen(false);\n                    // onRestore()\n                    modifyNotSavedRef.current = false\n                }\n            })\n        }\n        setOpen(false);\n    }\n\n\n    return <Dialog open={open} onOpenChange={setOpen}>\n        <DialogTrigger>\n            {children}\n        </DialogTrigger>\n        <DialogContent  className=\"sm:max-w-[625px] bg-background-login\">\n            <DialogHeader>\n                <DialogTitle>{t('model.editPrompt')}</DialogTitle>\n            </DialogHeader>\n            <div>\n                <Label className=\"bisheng-label\">{t('model.docKnowledgeAbstractPrompt')}</Label>\n                <Textarea\n                    value={textValue}\n                    onChange={(e) => {\n                        setTextValue(e.target.value)\n                        modifyNotSavedRef.current = true;\n                    }}\n                    className=\"mt-1\"\n                    rows={16}\n                />\n            </div>\n            <DialogFooter>\n                <Button variant=\"outline\" className=\"px-11\" type=\"button\" onClick={handleCancel}>{t('model.cancel')}</Button>\n                <Button disabled={false} type=\"submit\" className=\"px-11\" onClick={() => {\n                    modifyNotSavedRef.current = false\n                    onSave(textValue)\n                    setOpen(false)\n                    onChange(textValue)\n                }}>\n                    {t('model.save')}\n                </Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}\n\nexport default function KnowledgeModel({ llmOptions, embeddings, onBack }) {\n    const { t } = useTranslation('model')\n\n    const [form, setForm] = useState({\n        embeddingModelId: null,\n        sourceModelId: null,\n        extractModelId: null,\n        qaSimilarModelId: null,\n        abstractPrompt: ''\n    });\n    // 最后保存的配置\n    const lastSaveFormDataRef = useRef(null)\n\n    const [loading, setLoading] = useState(true)\n    useEffect(() => {\n        setLoading(true)\n        getKnowledgeModelConfig().then(config => {\n            const { embedding_model_id, extract_title_model_id, qa_similar_model_id, source_model_id, abstract_prompt } = config\n            setForm({\n                embeddingModelId: embedding_model_id,\n                sourceModelId: source_model_id,\n                extractModelId: extract_title_model_id,\n                qaSimilarModelId: qa_similar_model_id,\n                abstractPrompt: abstract_prompt ?? defalutPrompt\n            })\n            lastSaveFormDataRef.current = { ...config, abstract_prompt: abstract_prompt || defalutPrompt }\n            setLoading(false)\n        });\n    }, []);\n\n    const { message } = useToast()\n    const [saveload, setSaveLoad] = useState(false)\n    const handleSave = async () => {\n        const { embeddingModelId, extractModelId, qaSimilarModelId, sourceModelId, abstractPrompt } = form\n        const errors = []\n        if (!embeddingModelId) {\n            errors.push(t('model.defaultEmbeddingModel') + t('bs:required'))\n        }\n        if (!qaSimilarModelId) {\n            errors.push(t('model.qaSimilarModel') + t('bs:required'))\n        }\n        if (errors.length) return message({ variant: 'error', description: errors })\n\n        const data = {\n            embedding_model_id: embeddingModelId,\n            extract_title_model_id: extractModelId,\n            qa_similar_model_id: qaSimilarModelId,\n            source_model_id: sourceModelId,\n            abstract_prompt: abstractPrompt\n        }\n        setSaveLoad(true)\n        await captureAndAlertRequestErrorHoc(updateKnowledgeModelConfig(data).then(res => {\n            lastSaveFormDataRef.current = data\n            message({ variant: 'success', description: t('model.saveSuccess') })\n        }))\n        setSaveLoad(false)\n    };\n\n    const handleSavePrompt = (prompt) => {\n        captureAndAlertRequestErrorHoc(updateKnowledgeModelConfig({\n            ...lastSaveFormDataRef.current,\n            abstract_prompt: prompt ?? form.abstractPrompt\n        }).then(res => {\n            message({ variant: 'success', description: t('model.promptSaved') })\n        }))\n    }\n\n    if (loading) return <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n        <LoadingIcon />\n    </div>\n\n    return (\n        <div className=\"max-w-[520px] mx-auto gap-y-4 flex flex-col mt-16 relative\">\n            <ModelSelect\n                required\n                label={t('model.defaultEmbeddingModel')}\n                value={form.embeddingModelId}\n                options={embeddings}\n                onChange={(val) => setForm({ ...form, embeddingModelId: val })}\n            />\n            <ModelSelect\n                close\n                label={t('model.sourceTracingModel')}\n                tooltipText={t('model.sourceTracingModelTooltip')}\n                value={form.sourceModelId}\n                options={llmOptions}\n                onChange={(val) => setForm({ ...form, sourceModelId: val })}\n            />\n            <ModelSelect\n                close\n                label={t('model.documentSummaryModel')}\n                tooltipText={t('model.documentSummaryModelTooltip')}\n                value={form.extractModelId}\n                options={llmOptions}\n                onChange={(val) => setForm({ ...form, extractModelId: val })}\n            />\n            <ModelSelect\n                required\n                label={t('model.qaSimilarModel')}\n                tooltipText={t('model.qaSimilarModelTooltip')}\n                value={form.qaSimilarModelId}\n                options={llmOptions}\n                onChange={(val) => setForm({ ...form, qaSimilarModelId: val })}\n            />\n            <div className=\"absolute top-44 -right-28\">\n                <PromptDialog\n                    value={form.abstractPrompt}\n                    onChange={value => setForm({ ...form, abstractPrompt: value })}\n                    onSave={handleSavePrompt}\n                    onRestore={() => setForm({ ...form, abstractPrompt: lastSaveFormDataRef.current.abstract_prompt })}\n                >\n                    <Tip content={t('model.docKnowledgeAbstractPromptTooltip')} side={\"top\"}>\n                        <Button variant=\"link\"><Settings size={14} className=\"mr-1\" /> {t('model.editPromptButton')}</Button>\n                    </Tip>\n                </PromptDialog>\n            </div>\n            <div className=\"mt-10 text-center space-x-6\">\n                <Button className=\"px-6\" variant=\"outline\" onClick={onBack}>{t('model.cancel')}</Button>\n                <Button\n                    className=\"px-10\"\n                    disabled={saveload}\n                    onClick={handleSave}\n                >\n                    {saveload && <LoadIcon className=\"mr-2\" />}\n                    {t('model.save')}\n                </Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/tabs/WorkbenchModel.tsx",
    "content": "import { LoadIcon, LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport Cascader from \"@/components/bs-ui/select/cascader\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { QuestionTooltip } from \"@/components/bs-ui/tooltip\";\nimport { getLinsightModelConfig, updateLinsightModelConfig } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useQuery } from \"react-query\";\nimport { useModel } from \"..\";\n\nexport const ModelSelect = ({ required = false, close = false, label, tooltipText = '', value, options, onChange,placeholder = '' }) => {\n    const defaultValue = useMemo(() => {\n        let _defaultValue = []\n        if (!value || !options || options.length === 0) return _defaultValue\n\n        options.forEach(option => {\n            const model = option.children?.find(el => el.value == value)\n            if (model) {\n                _defaultValue = [\n                    { value: option.value, label: option.label },\n                    { value: model.value, label: model.label }\n                ]\n                return true\n            }\n            return false\n        })\n        return _defaultValue\n    }, [value, options])\n\n    return (\n        <div>\n            <Label className=\"bisheng-label\">\n                <span>{label}</span>\n                {required && <span className=\"text-red-500 text-xs\">*</span>}\n                {tooltipText && <QuestionTooltip className=\"relative top-0.5 ml-1\" content={tooltipText}></QuestionTooltip>}\n            </Label>\n            <Cascader\n                key={`model-select-${value}-${options.length}`}\n                defaultValue={defaultValue}\n                options={options}\n                close={close}\n                onChange={(val) => onChange(val?.[1])}\n                placeholder={placeholder}\n            />\n        </div>\n    )\n}\n\nexport default function WorkbenchModel({ onBack }) {\n    const { llmOptions, embeddings, asrModel, ttsModel } = useModel();\n    const { t } = useTranslation('model')\n    const { message } = useToast()\n\n    const [form, setForm] = useState({\n        sourceModelId: null,\n        extractModelId: null,\n        executionMode: 'ReAct',\n        asrModelId: null,\n        ttsModelId: null\n    });\n    const lastSaveFormDataRef = useRef(null)\n    const [saveload, setSaveLoad] = useState(false)\n\n    const { data: linsightConfig, isLoading: loading, refetch: refetchConfig, error } = useLinsightConfig();\n\n    const handleSave = async () => {\n        const { extractModelId, sourceModelId, executionMode, asrModelId, ttsModelId } = form;\n        const errors = [];\n        if (errors.length) return message({ variant: 'error', description: errors });\n        setSaveLoad(true);\n        try {\n            const data = {\n                task_model: { id: String(extractModelId) },\n                embedding_model: { id: String(sourceModelId) },\n                linsight_executor_mode: executionMode,\n                asr_model: asrModelId ? { id: String(asrModelId) } : null, // 支持空值\n                tts_model: ttsModelId ? { id: String(ttsModelId) } : null\n            };\n\n            // 提交更新并通过 refetch 获取最新配置（无需再次调用 getLinsightModelConfig）\n            const response = await captureAndAlertRequestErrorHoc(updateLinsightModelConfig(data));\n            const updatedConfig = await refetchConfig();\n\n            // 直接使用 refetch 返回的最新数据更新状态\n            const newConfig = updatedConfig.data;\n            setForm({\n                sourceModelId: newConfig?.embedding_model?.id || null,\n                extractModelId: newConfig?.task_model?.id || null,\n                executionMode: newConfig?.linsight_executor_mode || 'ReAct',\n                asrModelId: newConfig?.asr_model?.id || null,\n                ttsModelId: newConfig?.tts_model?.id || null\n            });\n\n            lastSaveFormDataRef.current = {\n                task_model: { id: newConfig?.task_model?.id },\n                embedding_model: { id: newConfig?.embedding_model?.id },\n                linsight_executor_mode: newConfig?.linsight_executor_mode || 'ReAct',\n                abstract_prompt: newConfig?.abstract_prompt || defalutPrompt,\n                asr_model: { id: newConfig?.asr_model?.id },\n                tts_model: { id: newConfig?.tts_model?.id }\n            };\n            if(response !== false){\n                message({ variant: 'success', description: t('model.saveSuccess') });\n            }\n        } catch (err) {\n            message({ variant: 'error', description: t('model.saveFailed') });\n        } finally {\n            setSaveLoad(false);\n        }\n    };\n\n    // 检查是否修改了 embedding 模型\n    const checkEmbeddingModified = () => {\n        const lastEmbeddingId = lastSaveFormDataRef.current?.embedding_model?.id;\n        const currentEmbeddingId = form.sourceModelId;\n        return lastEmbeddingId !== currentEmbeddingId;\n    };\n\n    const handleSaveWithConfirm = () => {\n        if (checkEmbeddingModified()) {\n            bsConfirm({\n                title: t('model.tip'),\n                desc: t('model.confirmEmbeddingChange'),\n                showClose: true,\n                okTxt: t('model.confirm'),\n                canelTxt: t('model.cancel'),\n                onOk(next) {\n                    handleSave().then(next);\n                },\n                onCancel() { }\n            });\n        } else {\n            handleSave();\n        }\n    };\n\n    useEffect(() => {\n        if (error) {\n            message({ variant: 'error', description: t('model.fetchConfigFailed') });\n            return;\n        }\n\n        // 2. 配置数据就绪后，更新表单和缓存（添加 defalutPrompt 到依赖）\n        if (linsightConfig) {\n            setForm({\n                sourceModelId: linsightConfig.embedding_model?.id || null,\n                extractModelId: linsightConfig.task_model?.id || null,\n                executionMode: linsightConfig.linsight_executor_mode || 'ReAct',\n                asrModelId: linsightConfig.asr_model?.id || null,\n                ttsModelId: linsightConfig.tts_model?.id || null\n            });\n\n            lastSaveFormDataRef.current = {\n                task_model: { id: linsightConfig.task_model?.id },\n                embedding_model: { id: linsightConfig.embedding_model?.id },\n                linsight_executor_mode: linsightConfig.linsight_executor_mode || 'ReAct',\n                abstract_prompt: linsightConfig.abstract_prompt || defalutPrompt,\n                asr_model: { id: linsightConfig.asr_model?.id },\n                tts_model: { id: linsightConfig.tts_model?.id }\n            };\n        }\n    }, [linsightConfig, error, message, defalutPrompt, t]);\n\n    if (loading) return (\n        <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n            <LoadingIcon />\n        </div>\n    );\n    console.log('ASR Model Options structure:', JSON.stringify(asrModel, null, 2));\n    console.log('TTS Model Options structure:', JSON.stringify(ttsModel, null, 2));\n    return (\n        <div className=\"max-w-[520px] mx-auto gap-y-4 flex flex-col mt-16 relative\">\n            <ModelSelect\n                close\n                label={t('model.workVectorModel')}\n                tooltipText={t('model.workVectorModelTooltip')}\n                value={form.sourceModelId}\n                options={embeddings}\n                onChange={(val) => setForm({ ...form, sourceModelId: val })}\n                required\n            />\n            <h3 className=\"bisheng-label\">{t('model.lingsiTaskModel')}</h3>\n            <div className=\"border rounded-lg p-4 -mt-3\">\n                <div className=\"flex gap-4\">\n                    <div className=\"flex-1\">\n                        <ModelSelect\n                            close\n                            label={t('model.model')}\n                            tooltipText={t('model.lingsiTaskModelTooltip')}\n                            value={form.extractModelId}\n                            options={llmOptions}\n                            onChange={(val) => setForm({ ...form, extractModelId: val })}\n                            required\n                        />\n                    </div>\n                    <div className=\"flex-1\">\n                        <Label className=\"bisheng-label\">\n                            <span>{t('model.executionMode')}</span>\n                            <QuestionTooltip className=\"relative top-0.5 ml-1\" content={t('model.executionModeTooltip')}></QuestionTooltip>\n                        </Label>\n                        <Select\n                            value={form.executionMode}\n                            onValueChange={(val) => setForm({ ...form, executionMode: val })}\n                        >\n                            <SelectTrigger className=\"w-full\">\n                                <SelectValue placeholder={t('model.selectExecutionMode')} />\n                            </SelectTrigger>\n                            <SelectContent>\n                                <SelectItem value=\"func_call\">{t('model.functionCall')}</SelectItem>\n                                <SelectItem value=\"react\">{t('model.react')}</SelectItem>\n                            </SelectContent>\n                        </Select>\n                    </div>\n                </div>\n            </div>\n            <h3 className=\"bisheng-label\">{t('model.workbenchVoiceModel')}</h3>\n            <div className=\"border rounded-lg p-4 -mt-3 space-y-4\">\n                <ModelSelect\n                    close\n                    label={t('model.asrModel')}\n                    tooltipText={t('model.asrModelTooltip')}\n                    value={form.asrModelId}\n                    options={asrModel}\n                    onChange={(val) => setForm({ ...form, asrModelId: val })}\n                />\n                <ModelSelect\n                    close\n                    label={t('model.ttsModel')}\n                    tooltipText={t('model.ttsModelTooltip')}\n                    value={form.ttsModelId}\n                    options={ttsModel}\n                    onChange={(val) => setForm({ ...form, ttsModelId: val })}\n                />\n            </div>\n\n            <div className=\"mt-10 text-center space-x-6\">\n                <Button className=\"px-6\" variant=\"outline\" onClick={onBack}>{t('model.cancel')}</Button>\n                <Button\n                    className=\"px-10\"\n                    disabled={saveload}\n                    onClick={handleSaveWithConfirm}\n                >\n                    {saveload && <LoadIcon className=\"mr-2\" />}\n                    {t('model.save')}\n                </Button>\n            </div>\n        </div>\n    );\n}\n\nexport function useLinsightConfig() {\n    return useQuery({\n        queryKey: [\"linsightModelConfig\"],\n        queryFn: () => captureAndAlertRequestErrorHoc(getLinsightModelConfig()),\n        select: (data) => {\n            const safeConfig = data || {\n                task_model: null,\n                embedding_model: null,\n                abstract_prompt: defalutPrompt,\n                linsight_executor_mode: \"ReAct\",\n                asr_model: null,\n                tts_model: null,\n            };\n            return safeConfig;\n        },\n        retry: 1,\n    });\n}\n\nexport const defalutPrompt = `# role\n你是一名经验丰富的“文档摘要专家”，擅长针对不同类型的文档（例如：书籍、论文、标书、研究报告、规章制度、合同协议、会议纪要、产品手册、运维手册、需求说明书等）进行精准识别，并根据文档类型灵活调整摘要风格，例如：\n- 报告类文档需强调研究发现或核心观点；\n- 制度类文档需突出制度目的及适用范围；\n- 合同类文档需明确合同主体及关键条款；\n- 会议纪要需聚焦会议议题与决策结果；\n- 产品说明需提炼产品功能与使用场景。\n\n# task\n接下来你将收到一篇文档的主要内容，请你：\n1. 判断并简要说明该文档属于上述哪种类型；\n2. 使用2～3句话概括文档的核心内容和关键结论，强调信息的准确性、完整性与清晰度。\n\n# result example\n【文档类型】：会议纪要  \n【摘要】：本文档为公司季度业务会议纪要，会议围绕本季度销售目标的达成情况展开，最终决定下一季度加强市场推广投入，并设立专门团队负责新产品上市工作，以改善销售表现。`;"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/tabs/WorkflowModel.tsx",
    "content": "import { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { getLlmDefaultModel, setLlmDefaultModel } from \"@/controllers/API/finetune\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ModelSelect } from \"./KnowledgeModel\";\n\nexport default function WorkflowModel({ llmOptions, onBack }) {\n    const { t } = useTranslation('model')\n    const [selectedModel, setSelectedModel] = useState(null);\n    const [loading, setLoading] = useState(true)\n    useEffect(() => {\n        setLoading(true)\n        getLlmDefaultModel().then(res => {\n            setSelectedModel(res.model_id)\n            setLoading(false)\n        })\n    }, []);\n\n    const { message } = useToast()\n    const handleSave = () => {\n        if (!selectedModel) {\n            return message({ variant: 'error', description: t('model.defaultEvaluationFeature') + t('bs:required') })\n        }\n        const data = {\n            model_id: selectedModel\n        };\n\n        captureAndAlertRequestErrorHoc(setLlmDefaultModel(data).then(res => {\n            message({ variant: 'success', description: t('model.saveSuccess') })\n        }));\n    };\n\n    if (loading) return <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n        <LoadingIcon />\n    </div>\n\n    return (\n        <div className=\"max-w-[520px] mx-auto\">\n            <div className=\"mt-10\">\n                <Label className=\"bisheng-label\">{t('model.modelsAndRAGNodes')}<span className=\"text-red-500 text-xs\">*</span></Label>\n                <ModelSelect\n                    label={''}\n                    value={selectedModel}\n                    options={llmOptions}\n                    onChange={(val) => setSelectedModel(val)}\n                />\n            </div>\n            <div className=\"mt-10 text-center space-x-6\">\n                <Button className=\"px-6\" variant=\"outline\" onClick={onBack}>{t('model.cancel')}</Button>\n                <Button className=\"px-10\" onClick={handleSave}>{t('model.save')}</Button>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/ModelPage/manage/useLink.ts",
    "content": "import { useState, useEffect } from 'react';\n\ninterface ProviderInfo {\n    apiKeyUrl: string;\n    modelUrl: string;\n}\n\n// API数据映射\nconst modelProviderInfo: Record<string, ProviderInfo> = {\n    tencent: {\n        apiKeyUrl: 'https://console.cloud.tencent.com/hunyuan/settings',\n        modelUrl: 'https://console.cloud.tencent.com/hunyuan/start',\n    },\n    qwen: {\n        apiKeyUrl: 'https://bailian.console.aliyun.com/?tab=model#/api-key',\n        modelUrl: 'https://bailian.console.aliyun.com/?tab=model#/model-market',\n    },\n    volcengine: {\n        apiKeyUrl: 'https://console.volcengine.com/las/region:las+cn-beijing/next/api_key_management/list?current=1&pageSize=10',\n        modelUrl: 'https://console.volcengine.com/ark/region:ark+cn-beijing/model',\n    },\n    qianfan: {\n        apiKeyUrl: 'https://console.bce.baidu.com/iam/#/iam/apikey/list',\n        modelUrl: 'https://console.bce.baidu.com/qianfan/modelcenter/model/buildIn/list',\n    },\n    spark: {\n        apiKeyUrl: 'https://console.xfyun.cn/app/myapp',\n        modelUrl: 'https://www.xfyun.cn/doc/spark/Web.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E',\n    },\n    minimax: {\n        apiKeyUrl: 'https://platform.minimaxi.com/user-center/basic-information/interface-key',\n        modelUrl: 'https://platform.minimaxi.com/docs/guides/models-intro',\n    },\n    moonshot: {\n        apiKeyUrl: 'https://platform.moonshot.cn/console/api-keys',\n        modelUrl: 'https://platform.moonshot.cn/docs/api/chat#%E5%AD%97%E6%AE%B5%E8%AF%B4%E6%98%8E',\n    },\n    zhipu: {\n        apiKeyUrl: 'https://bigmodel.cn/usercenter/proj-mgmt/apikeys',\n        modelUrl: 'https://docs.bigmodel.cn/cn/guide/start/model-overview',\n    },\n    silicon: {\n        apiKeyUrl: 'https://cloud.siliconflow.cn/me/account/ak',\n        modelUrl: 'https://cloud.siliconflow.cn/me/models',\n    },\n    deepseek: {\n        apiKeyUrl: 'https://platform.deepseek.com/api_keys',\n        modelUrl: 'https://platform.deepseek.com/docs',\n    },\n};\n\n// 获取API信息\nexport function useModelProviderInfo(providerValue: string): ProviderInfo | null {\n    const [providerInfo, setProviderInfo] = useState<ProviderInfo | null>(null);\n\n    useEffect(() => {\n        if (modelProviderInfo[providerValue]) {\n            setProviderInfo(modelProviderInfo[providerValue]);\n        } else {\n            setProviderInfo(null);\n        }\n    }, [providerValue]);\n\n    return providerInfo;\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/Page403.tsx",
    "content": "import React from 'react';\n\nexport default function Page403() {\n    return (\n        <div className=\"fixed left-0 top-0 z-50 flex h-full w-full items-center justify-center bg-black bg-opacity-70\">\n            <div className=\"flex w-[90%] max-w-lg text-center min-h-[200px] flex-col justify-center rounded-lg p-8 shadow-xl bg-gray-50\">\n                <h1 className=\"mb-4 text-4xl font-bold text-red-600\">\n                    403\n                </h1>\n                <p className=\"mb-8 text-lg text-gray-800\">\n                    您无权访问该页面\n                </p>\n                <div className=\"flex justify-center\">\n                    <button\n                        className=\"rounded bg-blue-500 px-6 py-2 text-sm font-semibold hover:bg-blue-600 text-gray-50\"\n                        onClick={() => window.location.href = __APP_ENV__.BASE_URL + '/'}\n                    >\n                        返回首页\n                    </button>\n                </div>\n            </div>\n        </div>\n    );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Page404.tsx",
    "content": "\"use client\"\n\nimport { ArrowLeft, Home } from \"lucide-react\"\nexport default function Page404() {\n    return (\n        <div className=\"min-h-screen flex items-center justify-center px-4 bg-background\">\n            <div className=\"max-w-2xl w-full text-center space-y-8\">\n                {/* 404 Number */}\n                <div className=\"space-y-4\">\n                    <h1 className=\"text-[clamp(6rem,20vw,12rem)] font-bold leading-none tracking-tighter text-foreground/10\">\n                        404\n                    </h1>\n                    <div className=\"-mt-12 space-y-3\">\n                        <h2 className=\"text-3xl md:text-4xl font-semibold tracking-tight text-balance\">Page Not Found</h2>\n                        <p className=\"text-base md:text-lg text-muted-foreground max-w-md mx-auto text-pretty leading-relaxed\">\n                            Sorry, the page you are trying to access does not exist or has been removed\n                        </p>\n                    </div>\n                </div>\n\n                {/* Action Buttons */}\n                {/* <div className=\"flex flex-col sm:flex-row items-center justify-center gap-3 pt-4\">\n                    <Button asChild size=\"lg\" className=\"w-full sm:w-auto gap-2\">\n                        <a href=\"/\">\n                            <Home className=\"h-4 w-4\" />\n                            返回首页\n                        </a>\n                    </Button>\n                    <Button\n                        asChild\n                        variant=\"outline\"\n                        size=\"lg\"\n                        className=\"w-full sm:w-auto gap-2 bg-transparent\"\n                        onClick={() => window.history.back()}\n                    >\n                        <button type=\"button\">\n                            <ArrowLeft className=\"h-4 w-4\" />\n                            返回上一页\n                        </button>\n                    </Button>\n                </div> */}\n\n                {/* Decorative Element */}\n                <div className=\"pt-8 opacity-40\">\n                    <div className=\"flex items-center justify-center gap-2 text-sm text-muted-foreground\">\n                        <div className=\"h-px w-12 bg-border\" />\n                        {/* <span>或许您在寻找其他内容</span> */}\n                        <div className=\"h-px w-12 bg-border\" />\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Report/components/Label.tsx",
    "content": "import { Braces } from \"lucide-react\";\nimport { useContext, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport { Input } from \"../../../components/bs-ui/input\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"../../../components/bs-ui/select\";\nimport { TabsContext } from \"../../../contexts/tabsContext\";\nimport { getVariablesApi } from \"../../../controllers/API/flow\";\nimport { useDebounce } from \"../../../util/hook\";\n\nexport default function Label({ onInset }) {\n    const { id: flowId } = useParams();\n    const { flow } = useContext(TabsContext);\n\n    const nodes = useMemo(() => {\n        if (!flow) return []\n\n        // 提取报表变量\n        return flow.data.nodes.reduce((res, node) => {\n            if ([\"InputNode\", \"VariableNode\", \"UniversalKVLoader\", \"CustomKVLoader\"].includes(node.data.type)) {\n                res.push({\n                    id: node.id,\n                    nodeName: node.data.type,\n                    node: node.data.node\n                })\n            }\n            return res\n        }, [])\n    }, [flow])\n\n    // labels\n    const { selectChange, labels, onSearch } = useLabels(flowId, nodes)\n    const { t } = useTranslation()\n\n    return <div className=\"flex flex-col gap-4\">\n        {/* Select component */}\n        <Select onValueChange={selectChange}>\n            <SelectTrigger className=\"\">\n                <SelectValue placeholder={t('report.selectComponent')} />\n            </SelectTrigger>\n            <SelectContent className=\"\">\n                <SelectGroup>\n                    {nodes.map((node, i) => {\n                        return <SelectItem key={node.id} value={String(i)}>{node.id}</SelectItem>\n                    })}\n                </SelectGroup>\n            </SelectContent>\n        </Select>\n        {/* 搜索框 */}\n        <Input placeholder=\"Search...\" className=\"dark:border-gray-500\" onChange={onSearch}></Input>\n        {/* 变量 */}\n        <div className=\"h-full\">\n            {labels.map(label =>\n                <div\n                    key={label.label}\n                    onClick={() => onInset(label.value)}\n                    className=\"flex items-center gap-2 pl-2 py-2 text-[#8285a6] cursor-pointer hover:bg-gray-100 rounded-sm text-sm\"\n                ><Braces size={16} className=\"min-w-[20px]\" /><span className=\"truncate\">{label.label}</span></div>\n            )}\n        </div>\n    </div>\n};\n\n\nconst useLabels = (flowId, nodes) => {\n    // 变量列表\n    const [labels, setLabels] = useState([])\n    const [keyWord, setKeyWord] = useState([])\n    const handleSelect = (index) => {\n        const { id, nodeName, node } = nodes[Number(index)];\n        // inputnode 提取 变量\n        if (nodeName === \"InputNode\") {\n            return setLabels(node.template.input.value.map(el => ({\n                label: el, value: `${id}_${el}`\n            })))\n        }\n        // UniversalKVLoader 提取 变量\n        if (nodeName === \"UniversalKVLoader\") {\n            const schema = node.template.schema.value\n            if (!schema) return setLabels([])\n            return setLabels(schema.split('|').map(el => {\n                return { label: el, value: `${id}_${el}` }\n            }))\n        }\n        // CustomKVLoader 提取 变量\n        if (nodeName === \"CustomKVLoader\") {\n            const schemas = node.template.schemas.value || ''\n            if (!schemas) return setLabels([])\n            return setLabels(schemas.split('|').map(el => {\n                return { label: el, value: `${id}_${el}` }\n            }))\n        }\n        // api\n        // Variable 提取 变量\n        getVariablesApi({\n            flow_id: flowId,\n            node_id: id\n        }).then(arr => {\n            setLabels(arr.map(item => {\n                return {\n                    label: item.name,\n                    value: `${id}_${item.name}`\n                }\n            }))\n        })\n    }\n\n    const showLabels = useMemo(() =>\n        labels.filter(label => label.label.includes(keyWord))\n        , [labels, keyWord])\n\n    const handleSearch = useDebounce((e) => {\n        setKeyWord(e.target.value)\n    }, 500, false)\n\n    return {\n        selectChange: handleSelect,\n        onSearch: handleSearch,\n        labels: showLabels\n    }\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Report/components/Word.tsx",
    "content": "import i18next from \"i18next\"\nimport { useEffect, useContext } from \"react\"\nimport { locationContext } from \"../../../contexts/locationContext\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { useTranslation } from \"react-i18next\"\n\nexport default function Word({ data, workflow }) {\n    const { appConfig } = useContext(locationContext)\n    const { t } = useTranslation('flow')\n\n    const wordUrl = appConfig.officeUrl\n    // console.log('wordUrl :>> ', wordUrl, data);\n    // 本地调试\n    // const host = 'http://192.168.106.120:3002'\n    const host = `${location.origin}${__APP_ENV__.BASE_URL}`\n    const backUrl = workflow ? `${host}/api/v1/workflow/report/callback`\n        : `${host}/api/v1/report/callback` // 后端服务地址\n\n    const editorConfig = {\n        // 编辑器宽度\n        width: '100%',\n        // 编辑器高度\n        height: '100%',\n        // 编辑器类型，支持 word（文档）、cell（表格）、slide（PPT）\n        documentType: 'word',\n        // 文档配置\n        document: {\n            // 文件类型  \n            fileType: 'docx',\n            // 文档标识符\n            key: data.key,\n            // 文档地址，绝对路径\n            url: data.path,\n            // 文档标题\n            title: 'bisheng.docx',\n            permissions: {\n                changeHistory: true,\n                comment: true,\n                copy: true,\n                download: true,\n                edit: true,\n                print: true,\n                reader: true,\n                rename: false,\n                review: true\n            }\n        },\n        editorConfig: {\n            callbackUrl: backUrl,\n            lang: i18next.language === 'zh-Hans' ? \"zh-CN\" : 'en',\n            mode: \"edit\",\n            customization: {\n                anonymous: { request: false, label: \"\" },\n                comments: false,\n                customer: false,\n                help: false,\n                chat: false,\n                about: false,\n                features: { spellcheck: false },\n                forcesave: true,\n                hideRightMenu: true,\n                rightMenu: true,\n                unit: \"cm\",\n                uiTheme: \"theme-dark\",\n                logo: {\n                    \"image\": location.origin + __APP_ENV__.BASE_URL + \"/assets/bisheng/logo.jpeg\",\n                    \"imageDark\": location.origin + __APP_ENV__.BASE_URL + \"/assets/bisheng/logo.jpeg\",\n                    \"url\": \"https://example.com\"\n                }\n            },\n            plugins: {\n                autostart: ['asc.{D2A0F3BE-CC8D-4956-BCD9-6CBEA6E8960E}']\n                // pluginsData: ['ommon-plugins/config.json']\n            },\n            user: {\n                group: \"Group1\",\n                id: \"001\",\n                name: \"\"\n            }\n        }\n    }\n\n\n    const createEditor = () => {\n        window.editor = new window.DocsAPI.DocEditor('bsoffice', editorConfig)\n    }\n\n    const { toast } = useToast()\n    useEffect(() => {\n        if (window.DocsAPI) {\n            createEditor()\n        } else {\n            if (!wordUrl) {\n                toast({\n                    variant: 'error',\n                    title: t('wordEditorLoadFailed'), // 'word编辑器加载失败',\n                    description: t('checkOfficeServiceConfig') // '请检查Office服务地址配置是否正确并正常启动.'\n                })\n            }\n            const script = document.createElement('script')\n            script.src = wordUrl + '/web-apps/apps/api/documents/api.js' // 在线编辑服务\n            script.onload = createEditor\n            document.head.appendChild(script)\n            script.onerror = () => {\n                toast({\n                    variant: 'error',\n                    title: t('wordEditorLoadFailed'), // 'word编辑器加载失败',\n                    description: t('checkOfficeServiceConfig') // '请检查Office服务地址配置是否正确并正常启动.'\n                })\n            }\n        }\n\n        return () => {\n            console.log('destroyEditor :>> ');\n            window.editor?.destroyEditor();\n        }\n    }, [])\n\n    return <div className=\"relative w-full h-full\">\n        <div className=\"absolute bg-[#252525] left-0 top-0 h-[26px] leading-[26px] w-full text-gray-400 text-center text-xs\">ctrl+s to save</div>\n        <div id=\"bsoffice\"></div>\n    </div>\n};\n\n"
  },
  {
    "path": "src/frontend/platform/src/pages/Report/index.tsx",
    "content": "import { ChevronLeft } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { Button } from \"../../components/bs-ui/button\";\nimport { getReportFormApi } from \"../../controllers/API/flow\";\nimport { uploadFileWithProgress } from \"../../modals/UploadModal/upload\";\nimport LabelPanne from \"./components/Label\";\nimport Word from \"./components/Word\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\n\nexport default function Report() {\n    const { t } = useTranslation()\n\n    const navigate = useNavigate()\n    const { docx, loading, createDocx, importDocx } = useReport()\n\n    // inset var\n    const iframeRef = useRef(null)\n    const handleInset = (value) => {\n        if (!iframeRef.current) return\n        const iframeDom = iframeRef.current.querySelector('iframe')\n        if (!iframeDom) return\n        iframeDom.contentWindow.postMessage(JSON.stringify({\n            type: \"onExternalPluginMessage\",\n            action: 'insetMarker',\n            data: value\n        }), '*');\n    }\n\n    return <div className=\"\">\n        {loading && <div className=\"absolute w-full h-full top-0 left-0 flex justify-center items-center z-10\">\n            <LoadingIcon />\n        </div>}\n        <div className=\"absolute top-0 w-full flex justify-center items-center h-10 \">\n            <span className=\"absolute left-10 flex items-center gap-1 cursor-pointer\" onClick={() => navigate(-1)}><ChevronLeft size={20} />{t('back')}</span>\n            <span className=\"text-sm\">docx</span>\n        </div>\n        <div className=\"gap-4 flex h-screen p-10\">\n            <div ref={iframeRef} className=\"flex-1 border flex justify-center items-center bg-accent\">\n                {\n                    docx.path\n                        // office\n                        ? <Word data={docx}></Word>\n                        // create\n                        : <div className=\"border rounded-md p-8 py-10 w-full max-w-[650px] bg-card\">\n                            <p className=\"text-xl\">{t('report.reportTemplate')}</p>\n                            <p className=\"text-sm mt-2\">{t('report.reportDescription')}</p>\n                            <div className=\"flex gap-2 mt-4\">\n                                <Button size=\"sm\" className=\"w-full\" onClick={createDocx}>{t('report.newButton')}</Button>\n                                <Button variant=\"secondary\" disabled={loading} size=\"sm\" className=\"w-full border-gray-200\" onClick={importDocx}>\n                                    {loading && <span className=\"loading loading-spinner loading-sm pointer-events-none h-8 pl-3\"></span>}\n                                    {t('report.importButton')}\n                                </Button>\n                            </div>\n                        </div>\n                }\n            </div>\n            <div className=\"w-[240px] border px-4 pt-4 overflow-y-auto bg-accent\">\n                <LabelPanne onInset={handleInset}></LabelPanne>\n            </div>\n        </div>\n    </div >\n};\n\n\nconst useReport = () => {\n    const [loading, setLoading] = useState(false)\n\n    const [docx, setDocx] = useState({\n        key: '',\n        path: ''\n    })\n    // 获取编辑的文档\n    const { id } = useParams()\n    useEffect(() => {\n        setLoading(true);\n        /** 新建or编辑 key 由后端生成 */\n        getReportFormApi(id).then(({ version_key, temp_url }) => {\n            setLoading(false);\n            setDocx({\n                key: version_key,\n                path: temp_url\n            })\n        })\n    }, [id])\n\n\n    const handleCreate = () => {\n        setDocx({\n            ...docx,\n            // path: 'http://192.168.106.120:3002/empty.docx'\n            path: location.origin + __APP_ENV__.BASE_URL + '/empty.docx' // 文档服务能访问到的文件地址\n        })\n    }\n\n    const handleImport = () => {\n        // 上传\n        // Create a file input element\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \".doc, .docx\";\n        input.style.display = \"none\"; // Hidden from view\n        input.multiple = false; // Allow only one file selection\n\n        input.onchange = (e: Event) => {\n            setLoading(true);\n\n            // Get the selected file\n            const file = (e.target as HTMLInputElement).files?.[0];\n            uploadFileWithProgress(file, (progress) => { }).then(res => {\n                setLoading(false);\n                setDocx({\n                    ...docx,\n                    path: res.file_path\n                })\n            })\n        };\n\n        input.click();\n    }\n\n    return {\n        loading,\n        docx,\n        createDocx: handleCreate,\n        importDocx: handleImport\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/Config.tsx",
    "content": "import { useContext, useEffect, useRef, useState } from \"react\";\nimport AceEditor from \"react-ace\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { getSysConfigApi, setSysConfigApi } from \"../../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\n\nexport default function Config() {\n    const { toast, message } = useToast()\n    const { reloadConfig } = useContext(locationContext)\n\n    const [config, setConfig] = useState('')\n\n    const { t } = useTranslation()\n\n    useEffect(() => {\n        captureAndAlertRequestErrorHoc(getSysConfigApi().then(jsonstr => {\n            setConfig(jsonstr)\n            codeRef.current = jsonstr\n        }))\n    }, [])\n\n    const handleSave = () => {\n        if (validataRef.current.length) {\n            return toast({\n                variant: 'error',\n                title: `yaml${t('formatError')}`,\n                description: validataRef.current.map(el => el.text)\n            })\n        }\n\n        captureAndAlertRequestErrorHoc(setSysConfigApi({ data: codeRef.current }).then(res => {\n            message({\n                variant: 'success',\n                title: t('prompt'),\n                description: t('saved')\n            })\n            setConfig(codeRef.current)\n\n            // 更新配置信息\n            reloadConfig()\n        }))\n    }\n\n    const codeRef = useRef('')\n    const validataRef = useRef([])\n    return <div className=\" max-w-[80%] mx-auto\">\n        <p className=\"font-bold mt-8 mb-2\">{t('system.parameterConfig')}</p>\n        <AceEditor\n            value={config || ''}\n            mode=\"yaml\"\n            theme={\"twilight\"}\n            highlightActiveLine={true}\n            showPrintMargin={false}\n            fontSize={14}\n            showGutter\n            enableLiveAutocompletion\n            name=\"CodeEditor\"\n            onChange={(value) => codeRef.current = value}\n            onValidate={(e) => validataRef.current = e}\n            className=\"h-[70vh] w-full rounded-lg border-[1px] border-border custom-scroll\"\n        />\n        <div className=\"flex justify-center mt-8\">\n            <Button className=\" h-10 w-[120px] px-24 text-[#fff]\" onClick={handleSave}>{t('save')}</Button>\n        </div>\n    </div>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/CreateUser.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\"\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { Input, PasswordInput } from \"@/components/bs-ui/input\"\nimport { Label } from \"@/components/bs-ui/label\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { createUserApi } from \"@/controllers/API/user\"\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\"\nimport { handleEncrypt, PWD_RULE } from \"@/pages/LoginPage/utils\"\nimport { copyText } from \"@/utils\"\nimport { Plus } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport UserRoleItem from \"./UserRoleItem\"\n\nexport default function CreateUser({ open, onClose, onSave }) {\n    const { t } = useTranslation()\n    const { message } = useToast()\n    const initItems = { key: generateUUID(8), groupId: '', roles: [] }\n    const initUser = {\n        user_name: '',\n        password: '',\n    }\n\n    const [items, setItems] = useState([initItems])\n    const [form, setForm] = useState(initUser)\n\n    const handleCancel = () => {\n        onClose(false)\n        setItems([initItems])\n        setForm(initUser)\n    }\n    const errors = []\n    const handleConfirm = async () => {\n        if (form.user_name === '') errors.push(t('system.usernameRequired'))\n        if (form.user_name.length > 30) errors.push(t('system.usernameMaxLength'))\n        if (!PWD_RULE.test(form.password)) errors.push(t('system.passwordRequirements'))\n        if (items.every(item => item.roles.length === 0)) errors.push(t('system.roleRequired'))\n        if (errors.length > 0) return message({ title: t('prompt'), description: errors, variant: 'warning' })\n\n        const encryptPwd = await handleEncrypt(form.password)\n        const group_roles = items.map(item => ({\n            group_id: Number(item.groupId),\n            role_ids: item.roles.map(r => Number(r))\n        }))\n        captureAndAlertRequestErrorHoc(createUserApi(form.user_name, encryptPwd, group_roles).then(() => {\n            copyText(`${t('system.username')}: ${form.user_name}，${t('system.initialPassword')}: ${form.password}`).then(() =>\n                message({ title: t('prompt'), description: t('system.userCreationSuccess'), variant: 'success' }))\n            onClose(false)\n            setItems([initItems])\n            setForm(initUser)\n            onSave()\n        }))\n    }\n\n    const handleChangeRoleItems = (index, groupId, roles) => {\n        setItems(items => items.map((item, i) => {\n            return i === index ? { ...item, groupId: groupId[0], roles } : item\n        }))\n    }\n\n    return <Dialog open={open} onOpenChange={b => onClose(b)}>\n        <DialogContent className=\"sm:max-w-[625px]\">\n            <DialogHeader>\n                <DialogTitle>{t('system.createUser')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"flex flex-col gap-4 mb-4\">\n                <div>\n                    <Label htmlFor=\"user\" className=\"bisheng-label\">{t('system.username')}</Label>\n                    <Input id=\"user\" value={form.user_name} onChange={(e) => setForm({ ...form, user_name: e.target.value })}\n                        placeholder={t('system.usernamePlaceholder')} className=\"h-[48px]\" />\n                </div>\n                <div>\n                    <Label htmlFor=\"password\" className=\"bisheng-label\">{t('system.initialPassword')}</Label>\n                    <PasswordInput id=\"password\" value={form.password} placeholder={t('system.passwordPlaceholder')}\n                        onChange={(e) => setForm({ ...form, password: e.target.value })} inputClassName=\"h-[48px]\" />\n                </div>\n                <div className=\"flex flex-col gap-2\">\n                    <Label className=\"bisheng-label\">{t('system.userGroupRoleSelection')}</Label>\n                    <div className=\"max-h-[520px] overflow-y-auto flex flex-col gap-2\">\n                        {items.map((item, index) => <UserRoleItem key={item.key}\n                            groupId={item.groupId + ''}\n                            showDel={items.length > 1}\n                            selectedRoles={[]}\n                            onChange={(groupId, roles) => handleChangeRoleItems(index, groupId, roles)}\n                            onDelete={() => setItems(items => items.filter((el, i) => i !== index))}\n                        />)}\n                    </div>\n                    <Button variant=\"outline\" size=\"icon\" onClick={() =>\n                        setItems(items => [...items, { key: generateUUID(8), groupId: '', roles: [] }])\n                    }>\n                        <Plus />\n                    </Button>\n                </div>\n            </div>\n            <DialogFooter>\n                <Button variant=\"outline\" className=\"h-10 w-[120px] px-16\" onClick={handleCancel}>{t('cancel')}</Button>\n                <Button className=\"px-16 h-10 w-[120px]\" onClick={handleConfirm}>{t('confirm')}</Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/EditRole.tsx",
    "content": "import { useCallback, useContext, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { Input, SearchInput } from \"../../../components/bs-ui/input\";\nimport AutoPagination from \"../../../components/bs-ui/pagination/autoPagination\";\nimport { Switch } from \"../../../components/bs-ui/switch\";\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow\n} from \"../../../components/bs-ui/table\";\nimport { alertContext } from \"../../../contexts/alertContext\";\nimport {\n  createRole,\n  getGroupResourcesApi,\n  getRolePermissionsApi,\n  updateRoleNameApi,\n  updateRolePermissionsApi\n} from \"../../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { useTable } from \"../../../util/hook\";\nimport { LoadingIcon } from \"@/components/bs-icons/loading\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { message } from \"@/components/bs-ui/toast/use-toast\";\n\ninterface SearchPanneProps {\n  groupId: any;\n  title: string;\n  type: string;\n  children?: (data: any[]) => React.ReactNode;\n  form?: any;\n  onUseChange?: (id: any, checked: boolean) => void;\n  onManageChange?: (id: any, checked: boolean) => void;\n  nameKey?: string;\n  creatorKey?: string;\n  useChecked?: (id: any) => boolean;\n  manageChecked?: (id: any) => boolean;\n  isPermissionTable?: boolean;\n  role_id?: any;\n  showTab?: boolean;\n}\n\nconst enum MenuType {\n  BUILD = 'build',\n  KNOWLEDGE = 'knowledge',\n  MODEL = 'model',\n  EVALUATION = 'evaluation',\n  BOARD = 'board',\n\n  FRONTEND = 'frontend',\n  BACKEND = 'backend',\n  CREATE_DASHBOARD = 'create_dashboard',\n}\n\n\nconst MENU_LIST = [\n  { id: MenuType.BOARD, name: 'menu.board', user_name: '-' },\n  { id: MenuType.BUILD, name: 'menu.skills', user_name: '-' },\n  { id: MenuType.KNOWLEDGE, name: 'menu.knowledge', user_name: '-' },\n  { id: MenuType.MODEL, name: 'menu.models', user_name: '-' },\n  { id: MenuType.EVALUATION, name: 'menu.evaluation', user_name: '-' },\n];\n\nconst SearchPanne = ({\n  groupId,\n  title,\n  type,\n  children,\n  role_id,\n  form,\n  onUseChange,\n  onManageChange,\n  nameKey,\n  creatorKey,\n  useChecked,\n  manageChecked,\n  isPermissionTable,\n  placeholderKey,\n  allowCreateBoard,\n  onAllowCreateBoardChange,\n}: SearchPanneProps) => {\n  const { t } = useTranslation();\n  const { appConfig } = useContext(locationContext)\n\n  const { page, pageSize, data, total, loading, setPage, search } = useTable(\n    { pageSize: 10 },\n    (params) => {\n      if (type === 'menu') {\n        return Promise.resolve({\n          data: MENU_LIST,\n          total: MENU_LIST.length\n        });\n      }\n\n      const { page, pageSize, keyword } = params;\n      const param = {\n        name: keyword,\n        group_id: groupId,\n        page_num: page,\n        page_size: pageSize\n      };\n\n      switch (type) {\n        case 'flow':\n          return getGroupResourcesApi({ ...param, resource_type: 5 });\n        case 'skill':\n          return getGroupResourcesApi({ ...param, resource_type: 2 });\n        case 'tool':\n          return getGroupResourcesApi({ ...param, resource_type: 4 });\n        case 'assistant':\n          return getGroupResourcesApi({ ...param, resource_type: 3 });\n        case 'board':\n          return getGroupResourcesApi({ ...param, resource_type: 6 });\n        default:\n          return getGroupResourcesApi({ ...param, resource_type: 1 });\n      }\n    }\n  );\n\n  const renderPermissionTable = () => {\n    if (!isPermissionTable) return children?.(data) || null;\n    const isMenuOrBoard = type === 'menu' || type === 'board';\n    return (\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>{t(nameKey)}</TableHead>\n            {type !== 'menu' && <TableHead>{t('system.creator')}</TableHead>}\n            <TableHead className=\"text-center w-[175px]\">\n              {!isMenuOrBoard ? t('system.usePermission') : t('system.viewPermission')}\n            </TableHead>\n            {isPermissionTable && type !== 'menu' && appConfig.isPro && (\n              <TableHead className=\"text-right w-[75px]\">{t('system.managePermission')}</TableHead>\n            )}\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {data.map((el: any) => (\n            <TableRow key={el.id}>\n              <TableCell className=\"font-medium\">{t(el.name)}</TableCell>\n              {type !== 'menu' && <TableCell>{el.user_name}</TableCell>}\n              <TableCell className=\"text-center\">\n                <Switch\n                  checked={useChecked(el.id)}\n                  onCheckedChange={(bln) => onUseChange(el.id, bln)}\n                />\n              </TableCell>\n              {type !== 'menu' && appConfig.isPro && (\n                <TableCell className=\"text-center\">\n                  <Switch\n                    checked={manageChecked(el.id)}\n                    onCheckedChange={(bln) => onManageChange(el.id, bln)}\n                  />\n                </TableCell>\n              )}\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    );\n  };\n\n  return <>\n    <div className=\"mt-6 flex flex-col items-start relative gap-3\">\n      {type === 'board' && appConfig.isPro && (\n        <div className=\"flex flex-col gap-4 w-full\">\n          {/* 允许创建看板开关 */}\n          <div className=\"flex items-center gap-2\">\n            <Switch\n              checked={!!allowCreateBoard}\n              onCheckedChange={(val) => onAllowCreateBoardChange?.(val)}\n            />\n            <div className=\"flex flex-col items-start gap-1\">\n              <span className=\"font-medium\">{t('system.allowCreateBoard')}</span>\n              <p className=\"text-sm text-muted-foreground ml-0\">\n                {t('system.allowCreateBoardDesc')}\n              </p>\n            </div>\n          </div>\n        </div>\n      )}\n\n\n      {type !== 'menu' && <SearchInput\n        onChange={(e) => search(e.target.value)}\n        placeholder={placeholderKey ? t(placeholderKey) : ''}\n        className=\"mt-0\"\n      />}\n    </div>\n    <div className=\"mt-4\">\n      {loading ?\n        <div className=\"w-full h-[468px] flex justify-center items-center z-10 bg-[rgba(255,255,255,0.6)] dark:bg-blur-shared\">\n          <LoadingIcon />\n        </div>\n        : renderPermissionTable()}\n    </div>\n    {type !== 'menu' && <AutoPagination className=\"m-0 mt-4 w-auto justify-end\" page={page} pageSize={pageSize} total={total} onChange={setPage} />}\n  </>\n};\n\nconst usePermissionSwitchLogic = (form, setForm) => {\n  const switchDataChange = (id, key, checked) => {\n    setForm(prev => {\n      const array = prev[key] || [];\n      const numberFields = ['useLibs', 'manageLibs', 'useTools', 'manageTools', 'useBoards', 'manageBoards'];\n      const convertedId = numberFields.includes(key) ? Number(id) : String(id);\n      const index = array.findIndex(el => el === convertedId);\n\n      let newArray;\n      if (checked && index === -1) {\n        newArray = [...array, convertedId];\n      } else if (!checked && index !== -1) {\n        newArray = [...array];\n        newArray.splice(index, 1);\n      } else {\n        newArray = array;\n      }\n\n      return { ...prev, [key]: newArray };\n    });\n  };\n\n\n  const switchManage = (id, keyManage, keyUse, checked) => {\n    switchDataChange(id, keyManage, checked);\n    if (checked) switchDataChange(id, keyUse, checked);\n  };\n\n  return {\n    switchDataChange,\n    switchLibManage: (id, checked) => switchManage(id, 'manageLibs', 'useLibs', checked),\n    switchUseLib: (id, checked) => {\n      if (!checked && (form.manageLibs || []).includes(Number(id))) return;\n      switchDataChange(id, 'useLibs', checked);\n    },\n    switchAssistantManage: (id, checked) => switchManage(id, 'manageAssistants', 'useAssistant', checked),\n    switchUseAssistant: (id, checked) => {\n      if (!checked && (form.manageAssistants || []).includes(String(id))) return;\n      switchDataChange(id, 'useAssistant', checked);\n    },\n    switchSkillManage: (id, checked) => switchManage(id, 'manageSkills', 'useSkills', checked),\n    switchUseSkill: (id, checked) => {\n      if (!checked && (form.manageSkills || []).includes(String(id))) return;\n      switchDataChange(id, 'useSkills', checked);\n    },\n    switchFlowManage: (id, checked) => switchManage(id, 'manageFlows', 'useFlows', checked),\n    switchUseFlow: (id, checked) => {\n      if (!checked && (form.manageFlows || []).includes(String(id))) return;\n      switchDataChange(id, 'useFlows', checked);\n    },\n    switchToolManage: (id, checked) => switchManage(id, 'manageTools', 'useTools', checked),\n    switchUseTool: (id, checked) => {\n      if (!checked && (form.manageTools || []).includes(Number(id))) return;\n      switchDataChange(id, 'useTools', checked);\n    },\n    switchMenu: (id, checked) => switchDataChange(id, 'useMenu', checked),\n    switchBoardManage: (id, checked) => switchManage(id, 'manageBoards', 'useBoards', checked),\n    switchUseBoard: (id, checked) => {\n      const numId = Number(id);\n      if (!checked && (form.manageBoards || []).includes(numId)) return;\n      switchDataChange(numId, 'useBoards', checked);\n    }\n  };\n};\n\nconst initPermissionData = (resData) => {\n  const initData = {\n    useSkills: [], useLibs: [], useAssistant: [], useFlows: [], useTools: [], useMenu: [],\n    manageLibs: [], manageAssistants: [], manageSkills: [], manageFlows: [], manageTools: [],\n    useBoards: [], manageBoards: []\n  };\n  resData.forEach(item => {\n    switch (item.type) {\n      case 1: initData.useLibs.push(Number(item.third_id)); break;\n      case 2: initData.useSkills.push(String(item.third_id)); break;\n      case 3: initData.manageLibs.push(Number(item.third_id)); break;\n      case 4: initData.manageSkills.push(String(item.third_id)); break;\n      case 5: initData.useAssistant.push(String(item.third_id)); break;\n      case 6: initData.manageAssistants.push(String(item.third_id)); break;\n      case 7: initData.useTools.push(Number(item.third_id)); break;\n      case 8: initData.manageTools.push(Number(item.third_id)); break;\n      case 9: initData.useFlows.push(String(item.third_id)); break;\n      case 10: initData.manageFlows.push(String(item.third_id)); break;\n      case 11:\n        initData.useBoards.push(Number(item.third_id));\n        break;\n      case 12:\n        initData.manageBoards.push(Number(item.third_id));\n        break;\n\n      case 99: initData.useMenu.push(String(item.third_id)); break;\n    }\n  });\n  return initData;\n};\n\nconst getSearchPanneConfig = (type, form, switches, t, groupId, roleId, handleAllowCreateBoardChange) => {\n  const placeholderMap = {\n    assistant: 'system.searchAssistant',\n    skill: 'system.searchSkill',\n    flow: 'system.searchFlow',\n    knowledge: 'system.searchKnowledge',\n    tool: 'system.searchTool',\n    menu: '',\n    board: 'system.searchBoard',\n  };\n\n  const configMap = {\n    assistant: { title: t('system.assistantAuthorization'), nameKey: 'system.assistantName', useChecked: (id) => form.useAssistant.includes(String(id)), manageChecked: (id) => form.manageAssistants.includes(String(id)), onUseChange: switches.switchUseAssistant, onManageChange: switches.switchAssistantManage, placeholderKey: placeholderMap.assistant },\n    skill: { title: t('system.skillAuthorization'), nameKey: 'system.skillName', useChecked: (id) => form.useSkills.includes(String(id)), manageChecked: (id) => form.manageSkills.includes(String(id)), onUseChange: switches.switchUseSkill, onManageChange: switches.switchSkillManage, placeholderKey: placeholderMap.skill },\n    flow: { title: t('system.flowAuthorization'), nameKey: 'system.flowName', useChecked: (id) => form.useFlows.includes(String(id)), manageChecked: (id) => form.manageFlows.includes(String(id)), onUseChange: switches.switchUseFlow, onManageChange: switches.switchFlowManage, placeholderKey: placeholderMap.flow },\n    knowledge: { title: t('system.knowledgeAuthorization'), nameKey: 'system.libraryName', useChecked: (id) => form.useLibs.includes(Number(id)), manageChecked: (id) => form.manageLibs.includes(Number(id)), onUseChange: switches.switchUseLib, onManageChange: switches.switchLibManage, placeholderKey: placeholderMap.knowledge },\n    tool: { title: t('system.toolAuthorization'), nameKey: 'tools.toolName', useChecked: (id) => form.useTools.includes(Number(id)), manageChecked: (id) => form.manageTools.includes(Number(id)), onUseChange: switches.switchUseTool, onManageChange: switches.switchToolManage, placeholderKey: placeholderMap.tool },\n    menu: { title: t('system.menuAuthorization'), nameKey: 'system.primaryMenu', useChecked: (id) => form.useMenu.includes(String(id)), manageChecked: () => false, onUseChange: switches.switchMenu, onManageChange: () => { }, placeholderKey: placeholderMap.menu },\n    board: {\n      title: t('system.boardAuthorization'),\n      nameKey: 'system.boardName',\n      useChecked: (id) => form.useBoards?.includes(Number(id)),\n      manageChecked: (id) => form.manageBoards?.includes(Number(id)),\n      onUseChange: switches.switchUseBoard,\n      onManageChange: switches.switchBoardManage,\n      placeholderKey: placeholderMap.board,\n      allowCreateBoard: form.allowCreateBoard,\n      onAllowCreateBoardChange: handleAllowCreateBoardChange,\n    }\n  };\n\n  const config = configMap[type];\n  return {\n    title: config.title,\n    groupId,\n    role_id: roleId,\n    type,\n    isPermissionTable: true,\n    nameKey: config.nameKey,\n    creatorKey: 'system.creator',\n    useChecked: config.useChecked,\n    manageChecked: config.manageChecked,\n    onUseChange: config.onUseChange,\n    onManageChange: config.onManageChange,\n    form,\n    placeholderKey: config.placeholderKey,\n    allowCreateBoard: config.allowCreateBoard,\n    onAllowCreateBoardChange: config.onAllowCreateBoardChange,\n  };\n};\n\nexport default function EditRole({ id, name, groupId, onChange, onBeforeChange }) {\n  const { setErrorData, setSuccessData } = useContext(alertContext);\n  const { t } = useTranslation();\n  const [activeTab, setActiveTab] = useState<'menu' | 'assistant' | 'skill' | 'flow' | 'knowledge' | 'tool' | 'board'>('menu');\n\n  const [form, setForm] = useState({\n    name,\n    useSkills: [], useLibs: [], useAssistant: [], useFlows: [], useTools: [], useMenu: [MenuType.BUILD, MenuType.KNOWLEDGE],\n    manageLibs: [], manageAssistants: [], manageSkills: [], manageFlows: [], manageTools: [], useBoards: [], manageBoards: [],\n    allowCreateBoard: false,\n  });\n\n  const [spacePermissions, setSpacePermissions] = useState({\n    workspace: true,\n    admin: true,\n  });\n\n  const handleAllowCreateBoardChange = (checked: boolean) => {\n    setForm(prev => {\n      const menuSet = new Set(prev.useMenu);\n\n      checked\n        ? menuSet.add(MenuType.CREATE_DASHBOARD)\n        : menuSet.delete(MenuType.CREATE_DASHBOARD);\n\n      return {\n        ...prev,\n        allowCreateBoard: checked,\n        useMenu: Array.from(menuSet),\n      };\n    });\n    if (!checked && activeTab === 'board') {\n      setActiveTab('menu');\n    }\n  };\n\n\n  const switches = usePermissionSwitchLogic(form, setForm);\n  useEffect(() => {\n    if (id !== -1) {\n      getRolePermissionsApi(id).then(res => {\n        const initData = initPermissionData(res.data);\n\n        const hasAdminSpace = initData.useMenu.includes(MenuType.BACKEND);\n        const hasCreateBoard = initData.useMenu.includes(MenuType.CREATE_DASHBOARD);\n\n        setForm(prev => ({\n          ...prev,\n          ...initData,\n          allowCreateBoard: hasCreateBoard,\n        }));\n\n        setSpacePermissions({\n          workspace: initData.useMenu.includes(MenuType.FRONTEND),\n          admin: hasAdminSpace,\n        });\n\n        if (!hasAdminSpace) {\n          setActiveTab('assistant');\n        } else {\n          setActiveTab('menu');\n        }\n      });\n    }\n  }, [id]);\n\n\n  const roleId = id === -1 ? 0 : id;\n\n  const getPermissionTabs = useCallback(() => {\n    const tabs = ['assistant', 'flow', 'skill', 'knowledge', 'tool'];\n\n    if (spacePermissions.admin) {\n      tabs.unshift('menu');\n      const hasBoardMenuPermission = form.useMenu.includes(MenuType.BOARD);\n      const canShowBoardTab = hasBoardMenuPermission;\n      if (canShowBoardTab) {\n        tabs.push('board');\n      }\n    }\n\n    return tabs;\n  }, [spacePermissions.admin, form.allowCreateBoard, form.useMenu]);\n\n  const renderPermissionPanne = (type) => {\n    const config = getSearchPanneConfig(type, form, switches, t, groupId, roleId, handleAllowCreateBoardChange);\n    return <SearchPanne key={type} {...config} />;\n  };\n  const syncSpaceToMenu = (next: { workspace: boolean; admin: boolean }) => {\n    setForm(prev => {\n      const menuSet = new Set(prev.useMenu);\n\n      next.workspace\n        ? menuSet.add(MenuType.FRONTEND)\n        : menuSet.delete(MenuType.FRONTEND);\n\n      next.admin\n        ? menuSet.add(MenuType.BACKEND)\n        : menuSet.delete(MenuType.BACKEND);\n\n      return {\n        ...prev,\n        useMenu: Array.from(menuSet),\n      };\n    });\n  };\n\n  const handleSpacePermissionChange = (\n    key: 'workspace' | 'admin',\n    checked: boolean\n  ) => {\n    const next = {\n      ...spacePermissions,\n      [key]: checked,\n    };\n\n    if (!next.workspace && !next.admin) {\n      setErrorData({\n        title: t('prompt'),\n        list: [t('system.atLeastOneSpaceRequired')],\n      });\n      return;\n    }\n\n    setSpacePermissions(next);\n    syncSpaceToMenu(next);\n    if (key === 'admin' && !checked && (activeTab === 'menu' || activeTab === 'board')) {\n      setActiveTab('assistant');\n    }\n  };\n\n  const handleSave = async () => {\n\n    const sanitizeIds = (arr: any[]) => (arr || []).filter(Boolean);\n    if (!form.name.length || form.name.length > 50) {\n      return setErrorData({ title: t('prompt'), list: [t('system.roleNameRequired'), t('system.roleNamePrompt')] });\n    }\n    if (onBeforeChange(form.name)) {\n      return setErrorData({ title: t('prompt'), list: [t('system.roleNameExists')] });\n    }\n    const menuSet = new Set(form.useMenu);\n    // 检查是否至少有一个空间权限被选中\n    if (!spacePermissions.workspace && !spacePermissions.admin) {\n      return setErrorData({ title: t('prompt'), list: [t('system.atLeastOneSpaceRequired')] });\n    }\n    if (spacePermissions.workspace) menuSet.add(MenuType.FRONTEND);\n    else menuSet.delete(MenuType.FRONTEND);\n\n    if (spacePermissions.admin) menuSet.add(MenuType.BACKEND);\n    else menuSet.delete(MenuType.BACKEND);\n\n    if (form.allowCreateBoard) menuSet.add(MenuType.CREATE_DASHBOARD);\n    else menuSet.delete(MenuType.CREATE_DASHBOARD);\n    let roleIdLocal = id;\n    if (id === -1) {\n      const res = await captureAndAlertRequestErrorHoc(createRole(groupId, form.name));\n      roleIdLocal = res.id;\n    } else {\n      await captureAndAlertRequestErrorHoc(updateRoleNameApi(roleIdLocal, form.name));\n    }\n\n    const menuPermissionsToSave = Array.from(menuSet);\n\n    await Promise.all([\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.useSkills as any, type: 2 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.useLibs as any, type: 1 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.useFlows as any, type: 9 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.useTools as any, type: 7 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.useAssistant as any, type: 5 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: form.manageLibs as any, type: 3 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.manageAssistants) as any, type: 6 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.manageSkills) as any, type: 4 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.manageFlows) as any, type: 10 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.manageTools) as any, type: 8 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(menuPermissionsToSave) as any, type: 99 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.useBoards) as any, type: 11 as any }),\n      updateRolePermissionsApi({ role_id: roleIdLocal, access_id: sanitizeIds(form.manageBoards) as any, type: 12 as any }),\n\n    ]);\n    message({\n      variant: 'success',\n      description: t('saved')\n    });\n    setSuccessData({ title: t('saved') });\n    onChange(true);\n  };\n  return (\n    <div className=\"max-w-[600px] mx-auto pt-4 h-[calc(100vh-128px)] overflow-y-auto pb-40 scrollbar-hide\">\n      {/* 角色名称输入 */}\n      <div className=\"font-bold mt-4\">\n        <p className=\"text-xl mb-4\">{t('system.roleName')}</p>\n        <Input\n          placeholder={t('system.roleName')}\n          value={form.name}\n          onChange={(e) => setForm(prev => ({ ...prev, name: e.target.value }))}\n          maxLength={50}\n          showCount\n        />\n      </div>\n\n      {/* 空间授权 - 完全独立于菜单权限 */}\n      <div className=\"mt-10\">\n        <div className=\"items-center relative\">\n          <p className=\"text-xl font-bold\">{t('system.spaceAuthorization')}</p>\n          <p className=\"text-sm text-[#8F959E]\">\n            {t('system.spaceAuthorizationDesc')}\n          </p>\n        </div>\n\n        <div className=\"w-full\">\n          <Table>\n            <TableHeader>\n              <TableRow>\n                <TableHead>{t('system.spaceName')}</TableHead>\n                <TableHead className=\"text-right w-[75px]\">\n                  {t('system.viewPermission')}\n                </TableHead>\n              </TableRow>\n            </TableHeader>\n\n            <TableBody>\n              <TableRow>\n                <TableCell className=\"font-medium\">\n                  {t('system.workspace')}\n                </TableCell>\n                <TableCell className=\"text-center\">\n                  <Switch\n                    checked={spacePermissions.workspace}\n                    onCheckedChange={(bln) =>\n                      handleSpacePermissionChange('workspace', bln)\n                    }\n                  />\n                </TableCell>\n              </TableRow>\n\n              <TableRow>\n                <TableCell className=\"font-medium\">\n                  {t('system.adminSpace')}\n                </TableCell>\n                <TableCell className=\"text-center\">\n                  <Switch\n                    checked={spacePermissions.admin}\n                    onCheckedChange={(bln) =>\n                      handleSpacePermissionChange('admin', bln)\n                    }\n                  />\n                </TableCell>\n              </TableRow>\n            </TableBody>\n          </Table>\n        </div>\n      </div>\n\n\n      {/* 权限 Tabs */}\n      <div className=\"flex gap-6 border-b mt-10\">\n        {getPermissionTabs().map(tab => (\n          <button\n            key={tab}\n            onClick={() => setActiveTab(tab)}\n            className={`pb-2 text-sm ${activeTab === tab ? 'border-b-2 border-primary font-semibold' : 'text-muted-foreground'}`}\n          >\n            {t(`system.${tab}Authorization`)}\n          </button>\n        ))}\n      </div>\n\n      {/* 当前 Tab 内容 */}\n      <div className=\"\">{renderPermissionPanne(activeTab)}</div>\n\n      {/* 保存/取消按钮 */}\n      <div className=\"flex justify-center items-center absolute bottom-0 w-[600px] h-[8vh] gap-4 mt-[100px] bg-background-login z-10\">\n        <Button variant=\"outline\" className=\"px-16\" onClick={() => onChange()}>{t('cancel')}</Button>\n        <Button className=\"px-16\" onClick={handleSave}>{t('save')}</Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/EditUserGroup.tsx",
    "content": "import UsersSelect from \"@/components/bs-comp/selectComponent/Users\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/bs-ui/tooltip\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { getGroupFlowsApi, saveGroupApi } from \"@/controllers/API/pro\";\nimport { getAdminsApi, saveUserGroup, updateUserGroup } from \"@/controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\";\nimport { useTable } from \"@/util/hook\";\nimport { CircleHelp } from \"lucide-react\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Input, SearchInput } from \"../../../components/bs-ui/input\";\n\n/**\n * \n * 用户组编辑&创建接口逻辑\n * 创建 \n * 1.用名字和管理员作为参数 调开源接口创建\n * 2.再调闭源接口设置 流控\n * 编辑\n * 1.用名字调开源接口修改\n * 2.用管理员s调开源接口修改\n * 3.再调闭源接口设置 流控\n * \n * 资源流控控制，每次调接口只传变动的 limit\n * limitState中转状态，limit只在初始化接收一次（不支持异步加载）\n * @returns \n */\nconst enum LimitType {\n    LIMITED = 'limited',\n    UNLIMITED = 'unlimited'\n}\n\nfunction FlowRadio({ limit, onChange }) {\n    const { t } = useTranslation()\n    const [status, setStatus] = useState(LimitType.UNLIMITED)\n    const [limitState, setLimitState] = useState<any>(limit)\n    const limitRef = useRef(0)\n\n    const handleCommit = (type: LimitType, value: string = '0') => {\n        if (value === '') return\n        const valueNum = parseInt(value)\n        if (valueNum < 0 || valueNum > 9999) return\n        setStatus(type)\n        setLimitState(value)\n        onChange(Number(value))\n        limitRef.current = Number(value)\n    }\n    useEffect(() => {\n        setStatus(limit ? LimitType.LIMITED : LimitType.UNLIMITED)\n        setLimitState(limit)\n        limitRef.current = limit\n    }, [limit])\n\n    return <div>\n        <RadioGroup className=\"flex space-x-2 h-[20px] items-center\" value={status}\n            onValueChange={(value: LimitType) => handleCommit(value, value === LimitType.LIMITED ? '10' : '0')}>\n            <div>\n                <Label className=\"flex justify-center\">\n                    <RadioGroupItem className=\"mr-2\" value={LimitType.UNLIMITED} />{t('system.unlimited')}\n                </Label>\n            </div>\n            <div>\n                <Label className=\"flex justify-center\">\n                    <RadioGroupItem className=\"mr-2\" value={LimitType.LIMITED} />{t('system.limit')}\n                </Label>\n            </div>\n            {status === LimitType.LIMITED && <div className=\"mt-[-3px] flex items-center\">\n                <Label className=\"whitespace-nowrap\">{t('system.maximum')}</Label>\n                <Input\n                    type=\"number\"\n                    value={limitState}\n                    className=\"inline h-5 w-[70px] font-medium\"\n                    onChange={(e) => handleCommit(LimitType.LIMITED, e.target.value)}\n                    onBlur={(e) => {\n                        if(e.target.value === '') {\n                            e.target.value = limitRef.current + ''\n                        }\n                    }}\n                />\n                <Label className=\"min-w-[100px]\">{t('system.perMinute')}</Label>\n            </div>}\n        </RadioGroup>\n    </div>\n}\n\nfunction FlowControl({ groupId, type, onChange }) {\n    const { t } = useTranslation()\n    const map = {\n        3: { name: t('build.assistantName'), label: t('system.AssistantFlowCtrl'), placeholder: t('system.assistantName') },\n        2: { name: t('skills.skillName'), label: t('system.SkillFlowCtrl'), placeholder: t('skills.skillName') },\n        5: { name: t('build.workFlowName'), label: t('system.flowCtrl'), placeholder: t('build.workFlowName') },\n    }\n    const { name, label, placeholder } = map[type]\n    const { page, pageSize, data, total, setPage, search, refreshData } = useTable({ pageSize: 10 }, (params) =>\n        getGroupFlowsApi(params.page, params.pageSize, type, groupId, params.keyword)\n    )\n\n    const itemsRef = useRef([])\n    const handleChange = (value, id) => {\n        // resourceId, groupId, resourceLimit\n        const item = itemsRef.current.find(item => item.resource_id === id)\n        if (item) {\n            item.resource_limit = value\n        } else {\n            itemsRef.current.push({\n                resource_id: id,\n                group_id: groupId,\n                resource_limit: value\n            })\n        }\n        refreshData((item) => item.id === id, { limit: value })\n        onChange(itemsRef.current)\n    }\n\n    const searchEndRef = useRef(false)\n    const handleSearch = (e) => {\n        searchEndRef.current = true\n        search(e.target.value)\n    }\n\n    if (!searchEndRef.current && !data.length) return null\n\n    return <>\n        <div className=\"flex items-center mb-4 justify-between\">\n            <div className=\"flex items-center space-x-2\">\n                <p className=\"text-xl font-bold\">{label}</p>\n                <TooltipProvider>\n                    <Tooltip>\n                        <TooltipTrigger>\n                            <CircleHelp className=\"w-4 h-4\" />\n                        </TooltipTrigger>\n                        <TooltipContent>\n                            <p>{t('system.iconHover')}</p>\n                        </TooltipContent>\n                    </Tooltip>\n                </TooltipProvider>\n            </div>\n            <SearchInput placeholder={placeholder} onChange={handleSearch} />\n        </div>\n        <div className=\"rounded-[5px]\">\n            <Table>\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[150px]\">{name}</TableHead>\n                        <TableHead className=\"w-[100px]\">{t('system.createdBy')}</TableHead>\n                        <TableHead className=\"w-[380px]\">{t('system.flowCtrlStrategy')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {data.map((i: any) => (<TableRow key={i.id}>\n                        <TableCell className=\"break-all\">{i.name}</TableCell>\n                        <TableCell className=\"break-all\">{i.user_name}</TableCell>\n                        <TableCell className=\"pt-4\">\n                            <FlowRadio limit={i.limit} onChange={(val) => handleChange(val, i.id)}></FlowRadio>\n                        </TableCell>\n                    </TableRow>))}\n                </TableBody>\n            </Table>\n            <AutoPagination className=\"m-0 mt-4 w-auto justify-end\"\n                page={page} pageSize={pageSize} total={total}\n                onChange={setPage}\n            />\n        </div>\n    </>\n}\n\nexport default function EditUserGroup({ data, onBeforeChange, onChange }) {\n    const { t } = useTranslation()\n    const { toast } = useToast() // 类似于alert\n    const { appConfig } = useContext(locationContext)\n\n    const [form, setForm] = useState({\n        groupName: '',\n        adminUser: '',\n        groupLimit: 0,\n        assistant: [],\n        skill: [],\n        workFlows: []\n    })\n    /**\n     * 用户\n     */\n    const [selected, setSelected] = useState([])\n    const [lockOptions, setLockOptions] = useState([])\n\n    const handleSave = async () => {\n        console.log('form', form);\n\n        if (!form.groupName) {\n            setForm({ ...form, groupName: data.group_name || '' })\n            return toast({ title: t('prompt'), description: t('system.groupNameRequired'), variant: 'error' });\n        }\n        if (form.groupName.length > 30) {\n            setForm({ ...form, groupName: data.group_name || '' })\n            return toast({ title: t('prompt'), description: t('system.groupNamePrompt'), variant: 'error' });\n        }\n        const flag = onBeforeChange(form.groupName)\n        if (flag) {\n            setForm({ ...form, groupName: '' })\n            return toast({ title: t('prompt'), description: t('system.groupNameExists'), variant: 'error' });\n        }\n\n        // 过滤系统管理员\n        const users = selected.filter(item => !lockOptions.some(id => id === item.value))\n\n        const res: any = await (data.id ? updateUserGroup(data.id, form, users) : // 修改\n            saveUserGroup(form, users)) // 保存\n\n        if (appConfig.isPro) {\n            await captureAndAlertRequestErrorHoc(saveGroupApi({\n                ...form,\n                id: data.id || res.id, // 修改id:data.id， 创建id：res.id\n                adminUser: users.map(item => item.label).join(','),\n                adminUserId: users.map(item => item.value).join(',')\n            }))\n        }\n\n        onChange(true)\n    }\n\n    useEffect(() => { // 初始化数据\n        setForm({ ...form, groupName: data.group_name, groupLimit: data.group_limit || 0 })\n        async function init() {\n            const res = await getAdminsApi()\n            const users = data.group_admins?.map(d => ({ label: d.user_name, value: d.user_id })) || []\n            const defaultUsers = res.map(d => ({ label: d.user_name, value: d.user_id }))\n            setLockOptions(defaultUsers.map(el => el.value))\n            setSelected([...defaultUsers, ...users])\n        }\n        init()\n    }, [])\n\n    return <div className=\"max-w-[630px] mx-auto pt-4 h-[calc(100vh-128px)] overflow-y-auto pb-10 scrollbar-hide\">\n        <div className=\"font-bold mt-4\">\n            <p className=\"text-xl mb-4\">{t('system.groupName')}</p>\n            <Input placeholder={t('system.userGroupName')} required value={form.groupName} onChange={(e) => setForm({ ...form, groupName: e.target.value })}></Input>\n        </div>\n        <div className=\"font-bold mt-12\">\n            <p className=\"text-xl mb-4\">{t('system.admins')}</p>\n            <div className=\"\">\n                <UsersSelect\n                    multiple\n                    lockedValues={lockOptions}\n                    value={selected}\n                    onChange={setSelected}\n                />\n            </div>\n        </div>\n        {appConfig.isPro && <>\n            <div className=\"font-bold mt-12\">\n                <p className=\"text-xl mb-4\">{t('system.flowControl')}</p>\n                <FlowRadio limit={form.groupLimit} onChange={(f) => setForm({ ...form, groupLimit: f })}></FlowRadio>\n            </div>\n            <div className=\"mt-12\">\n                <FlowControl\n                    groupId={data.id}\n                    type={3}\n                    onChange={(vals) => setForm({ ...form, assistant: vals })}\n                ></FlowControl>\n            </div>\n            <div className=\"mt-12 mb-20\">\n                <FlowControl\n                    groupId={data.id}\n                    type={2}\n                    onChange={(vals) => setForm({ ...form, skill: vals })}\n                ></FlowControl>\n            </div>\n            <div className=\"mt-12 mb-20\">\n                <FlowControl\n                    groupId={data.id}\n                    type={5}\n                    onChange={(vals) => setForm({ ...form, workFlows: vals })}\n                ></FlowControl>\n            </div>\n        </>}\n        <div className=\"flex justify-center items-center absolute bottom-0 w-[630px] h-[8vh] gap-4 mt-[100px] bg-background-login\">\n            <Button variant=\"outline\" className=\"px-16\" onClick={onChange}>{t('cancel')}</Button>\n            <Button className=\"px-16\" onClick={handleSave}>{t('save')}</Button>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/Roles.tsx",
    "content": "import { PlusIcon } from \"@/components/bs-icons/plus\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { SearchInput } from \"../../../components/bs-ui/input\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableFooter,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../../components/bs-ui/table\";\nimport { delRoleApi, getRolesByGroupApi, getUserGroupsApi } from \"../../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { ROLE } from \"../../../types/api/user\";\nimport EditRole from \"./EditRole\";\nimport SelectSearch from \"@/components/bs-ui/select/select\"\n\ninterface State {\n    roles: ROLE[];\n    role: Partial<ROLE> | null;\n    searchWord: string;\n    group: string;\n    groups: { label: string; value: string }[];\n}\n\nconst initialState: State = {\n    roles: [],\n    role: null,\n    searchWord: '',\n    group: '',\n    groups: []\n};\n\ntype Action =\n    | { type: 'SET_ROLES'; payload: ROLE[] }\n    | { type: 'SET_ROLE'; payload: Partial<ROLE> | null }\n    | { type: 'SET_SEARCH_WORD'; payload: string }\n    | { type: 'SET_GROUP'; payload: string }\n    | { type: 'SET_GROUPS'; payload: any };\n\nfunction reducer(state: State, action: Action): State {\n    switch (action.type) {\n        case 'SET_ROLES':\n            return { ...state, roles: action.payload };\n        case 'SET_ROLE':\n            return { ...state, role: action.payload };\n        case 'SET_SEARCH_WORD':\n            return { ...state, searchWord: action.payload };\n        case 'SET_GROUP':\n            return { ...state, group: action.payload };\n        case 'SET_GROUPS':\n            return { ...state, groups: action.payload };\n        default:\n            return state;\n    }\n}\n\nexport default function Roles() {\n    const { t } = useTranslation();\n    const [state, dispatch] = useReducer(reducer, initialState);\n    const allRolesRef = useRef<ROLE[]>([]);\n\n    const loadData = useCallback(async () => {\n        const inputDom = document.getElementById('role-input') as HTMLInputElement;\n        if (inputDom) {\n            inputDom.value = '';\n        }\n        try {\n            if (!state.group) return\n            const data: any = await getRolesByGroupApi('', [state.group]);\n            dispatch({ type: 'SET_ROLES', payload: data });\n            allRolesRef.current = data;\n        } catch (error) {\n            console.error(error);\n        }\n    }, [state.group]);\n\n    useEffect(() => {\n        getUserGroupsApi().then((res: any) => {\n            const groups = res.records.map(ug => ({ label: ug.group_name, value: ug.id }))\n            // 获取最近修改用户组\n            dispatch({ type: 'SET_GROUP', payload: groups[0].value });\n            dispatch({ type: 'SET_GROUPS', payload: groups });\n        })\n    }, []);\n\n    const handleDelete = async (item: ROLE) => {\n        bsConfirm({\n            desc: `${t('system.confirmText')} 【${item.role_name}】 ?`,\n            okTxt: t('delete'),\n            onOk: async (next) => {\n                try {\n                    await captureAndAlertRequestErrorHoc(delRoleApi(item.id));\n                    await loadData();\n                    next();\n                } catch (error) {\n                    console.error(error);\n                }\n            }\n        });\n    };\n\n    const checkSameName = useCallback((name: string) => {\n        return state.roles.find(_role => _role.role_name === name && state.role?.id !== _role.id);\n    }, [state.roles, state.role]);\n\n    const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const word = e.target.value;\n        dispatch({ type: 'SET_SEARCH_WORD', payload: word });\n        dispatch({ type: 'SET_ROLES', payload: allRolesRef.current.filter(item => item.role_name.toUpperCase().includes(word.toUpperCase())) });\n    };\n    useEffect(() => {\n        loadData()\n    }, [state.group])\n\n    const [keyWord, setKeyWord] = useState('')\n    const options = useMemo(() => {\n        if (!keyWord || !state.group) return state.groups\n        return state.groups.filter(group => group.label.toUpperCase().includes(keyWord.toUpperCase()) || group.value === state.group)\n    }, [keyWord, state.group])\n\n    if (state.role) {\n        return <EditRole\n            id={state.role.id || -1}\n            name={state.role.role_name || ''}\n            groupId={state.group}\n            onBeforeChange={checkSameName}\n            onChange={() => {\n                dispatch({ type: 'SET_ROLE', payload: null })\n                loadData()\n            }}\n        />;\n    }\n\n    return (\n        <div className=\"relative\">\n            <div className=\"h-[calc(100vh-128px)] overflow-y-auto pt-2 pb-10\">\n                <div className=\"flex justify-between\">\n                    <div className=\"flex items-center\">\n                        <Label>{t('system.currentGroup')}</Label>\n                        <SelectSearch value={state.group} options={options} selectPlaceholder={t('system.defaultGroup')}\n                            inputPlaceholder={t('log.selectUserGroup')}\n                            selectClass=\"w-[180px] inline-flex ml-2\" contentClass=\"max-w-[180px] break-all\"\n                            onOpenChange={(open) => {\n                                !open && setKeyWord('')\n                            }}\n                            onValueChange={(value) => {\n                                dispatch({ type: 'SET_GROUP', payload: value })\n                            }}\n                            onChange={e => setKeyWord(e.target.value)}\n                        />\n                    </div>\n                    <div className=\"flex gap-6 items-center justify-between\">\n                        <div className=\"w-[180px] relative\">\n                            <SearchInput id=\"role-input\" placeholder={t('system.roleName')} onChange={handleSearch} />\n                        </div>\n                        <Button className=\"flex justify-around\" onClick={() => dispatch({ type: 'SET_ROLE', payload: {} })}>\n                            <PlusIcon className=\"text-primary\" />\n                            <span className=\"text-[#fff] mx-4\">{t('create')}</span>\n                        </Button>\n                    </div>\n                </div>\n                <Table className=\"mb-10\">\n                    <TableHeader>\n                        <TableRow>\n                            <TableHead className=\"w-[200px]\">{t('system.roleName')}</TableHead>\n                            <TableHead>{t('createTime')}</TableHead>\n                            <TableHead className=\"text-right\">{t('operations')}</TableHead>\n                        </TableRow>\n                    </TableHeader>\n                    <TableBody>\n                        {state.roles.map(el => (\n                            <TableRow key={el.id}>\n                                <TableCell className=\"font-medium\">{el.role_name}</TableCell>\n                                <TableCell>{el.create_time.replace('T', ' ')}</TableCell>\n                                <TableCell className=\"text-right\">\n                                    <Button variant=\"link\" onClick={() => dispatch({ type: 'SET_ROLE', payload: el })} className=\"px-0 pl-6\">{t('edit')}</Button>\n                                    <Button variant=\"link\" disabled={[1, 2].includes(el.id)} onClick={() => handleDelete(el)} className=\"text-red-500 px-0 pl-6\">{t('delete')}</Button>\n                                </TableCell>\n                            </TableRow>\n                        ))}\n                    </TableBody>\n                    <TableFooter>\n                        {!state.roles.length && <TableRow>\n                            <TableCell colSpan={5} className=\"text-center text-gray-400\">{t('build.empty')}</TableCell>\n                        </TableRow>}\n                    </TableFooter>\n                </Table>\n            </div>\n            <div className=\"bisheng-table-footer bg-background-login\">\n                <p className=\"desc\">{t('system.roleList')}.</p>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/UserGroup.tsx",
    "content": "import { useTranslation } from \"react-i18next\"\nimport { Button } from \"../../../components/bs-ui/button\";\nimport { SearchInput } from \"../../../components/bs-ui/input\";\nimport { PlusIcon } from \"@/components/bs-icons/plus\";\nimport { getUserGroupsApi, delUserGroupApi, getAdminsApi } from \"@/controllers/API/user\"\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableFooter,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../../components/bs-ui/table\";\nimport EditUserGroup from \"./EditUserGroup\";\nimport { UserGroup } from \"@/types/api/user\";\nimport { locationContext } from \"@/contexts/locationContext\";\nimport { getUserGroupsProApi } from \"@/controllers/API/pro\";\n\nexport default function UserGroups() {\n    const { t } = useTranslation()\n    const [userGroups, setUserGroups] = useState<UserGroup[]>([])\n    const [userGroup, setUserGroup] = useState(null)\n    const tempRef = useRef<UserGroup[]>([]) // 搜索功能的数据暂存\n    const { appConfig } = useContext(locationContext)\n    const defaultAdminsRef = useRef([])\n\n    const loadData = async () => {\n        const res: any = await (appConfig.isPro ? getUserGroupsProApi : getUserGroupsApi)()\n        defaultAdminsRef.current = await getAdminsApi()\n        res.records.map(g => g.group_admins = [...defaultAdminsRef.current, ...g.group_admins])\n        setUserGroups(res.records)\n        tempRef.current = res.records\n    }\n\n    const handleSearch = (e) => {\n        const word = e.target.value\n        const newUgs = tempRef.current.filter(ug => ug.group_name.toUpperCase().includes(word.toUpperCase()))\n        setUserGroups(newUgs)\n    }\n    const handleDelete = (userGroup) => {\n        bsConfirm({\n            desc: t('system.deleteGroup', { name: userGroup.group_name }),\n            okTxt: t('delete'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(delUserGroupApi(userGroup.id).then(loadData))\n                next()\n            }\n        })\n    }\n\n    const checkSameName = (name: string) => {\n        return (userGroups.find(ug =>\n            ug.group_name === name && ug.id !== userGroup.id))\n    }\n    const handleChange = (flag: boolean) => {\n        flag && loadData()\n        setUserGroup(null)\n    }\n\n    useEffect(() => { loadData() }, [])\n\n    if (userGroup) return <EditUserGroup\n        data={userGroup}\n        onBeforeChange={checkSameName}\n        onChange={handleChange}\n    />\n\n    return <div className=\"relative\">\n        <div className=\"h-[calc(100vh-128px)] overflow-y-auto pb-10\">\n            <div className=\"flex gap-6 items-center justify-end\">\n                <div className=\"w-[180px] relative\">\n                    <SearchInput placeholder={t('system.groupName')} onChange={handleSearch}></SearchInput>\n                </div>\n                <Button className=\"flex justify-around\" onClick={() => setUserGroup({})}>\n                    <PlusIcon className=\"text-primary\" />\n                    <span className=\"text-[#fff] mx-4\">{t('create')}</span>\n                </Button>\n            </div>\n            <Table className=\"mb-10\">\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[200px]\">{t('system.groupName')}</TableHead>\n                        <TableHead>{t('system.admins')}</TableHead>\n                        {appConfig.isPro && <TableHead className=\"w-[150px]\">{t('system.flowControl')}</TableHead>}\n                        <TableHead className=\"w-[160px]\">{t('system.changeTime')}</TableHead>\n                        <TableHead className=\"text-right w-[130px]\" >{t('operations')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {userGroups.map((ug: any) => (\n                        <TableRow key={ug.id}>\n                            <TableCell className=\"font-medium\">{ug.group_name}</TableCell>\n                            <TableCell className=\"break-all\">{(ug.admin_user || ug.group_admins).map(el => el.user_name).join(',')}</TableCell>\n                            {appConfig.isPro && <TableCell>{ug.group_limit ? t('system.limit') : t('system.unlimited')}</TableCell>}\n                            <TableCell>{ug.update_time.replace('T', ' ')}</TableCell>\n                            <TableCell className=\"text-right\"   style={{ \n                                    whiteSpace: 'nowrap',\n                                }}>\n                                <Button variant=\"link\" onClick={() => setUserGroup({\n                                    ...ug,\n                                    group_admins: ug.group_admins.slice(defaultAdminsRef.current.length)\n                                })}\n                                    className=\"px-0 pl-6\">{t('edit')}\n                                </Button>\n                                <Button variant=\"link\" disabled={ug.id === 2} onClick={() => handleDelete(ug)} className=\"text-red-500 px-0 pl-6\">{t('delete')}</Button>\n                            </TableCell>\n                        </TableRow>\n                    ))}\n                </TableBody>\n                <TableFooter>\n                    {!userGroups.length && <TableRow>\n                        <TableCell colSpan={5} className=\"text-center text-gray-400\">{t('build.empty')}</TableCell>\n                    </TableRow>}\n                </TableFooter>\n            </Table>\n        </div>\n        <div className=\"bisheng-table-footer bg-background-login\">\n            <p className=\"desc\">{t('system.userGroupList')}.</p>\n        </div>\n    </div>\n}"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/UserRoleItem.tsx",
    "content": "import { DelIcon } from \"@/components/bs-icons\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport MultiSelect from \"@/components/bs-ui/select/multi\";\nimport { getRolesByGroupApi, getUserGroupsApi } from \"@/controllers/API/user\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport SelectSearch from \"@/components/bs-ui/select/select\"\n\nexport default function UserRoleItem({ showDel, groupId, selectedRoles, onDelete, onChange }:\n    { showDel: boolean, groupId: null | string, selectedRoles: any[], onDelete: any, onChange: any }) {\n    const { t } = useTranslation()\n\n    // 用户组\n    const [groups, setGroups] = useState([])\n    const groupsRef = useRef([])\n    const [userGroupSelected, setUserGroupSelected] = useState(groupId ? [groupId] : [])\n    const loadGroups = () => {\n        getUserGroupsApi().then((res: any) => {\n            const groups = res.records.map((ug) => {\n                return {\n                    label: ug.group_name,\n                    value: ug.id.toString()\n                }\n            })\n            setGroups(groups)\n            groupsRef.current = groups\n        })\n    }\n    useEffect(() => {\n        // 用户组option列表\n        loadGroups()\n    }, [])\n\n    const handleSelectGroup = (value) => { //单选之后value要改成数组传出去\n        onChange([value], [])\n        setUserGroupSelected([value]);\n        setSelected([])\n    }\n    const handleSearch = (e) => {\n        const keyword = e.target.value\n        const newGroups = groupsRef.current.filter(g => g.label.toUpperCase().includes(keyword.toUpperCase()) \n        || g.value === userGroupSelected[0])\n        setGroups(newGroups)\n    }\n\n    // 角色\n    const [roles, setRoles] = useState<any[]>([])\n    const [selected, setSelected] = useState(selectedRoles)\n    useEffect(() => {\n        // setSelected([])\n        // 用户组option列表\n        getRolesByGroupApi('', userGroupSelected).then((res: any) => {\n            const roleOptions = res.map(role => {\n                return {\n                    label: role.role_name,\n                    value: role.id.toString()\n                }\n            })\n            setRoles(roleOptions);\n        })\n    }, [userGroupSelected])\n\n    const handleSelectRole = (values) => {\n        onChange(userGroupSelected, values)\n        setSelected(values)\n    }\n\n    return <div className=\"grid grid-cols-[44%,44%,5%] gap-4\">\n        <SelectSearch contentClass=\"max-w-[260px] break-all\" selectPlaceholder={t('system.userGroupsSel')}\n            selectClass=\"h-[50px]\"\n            value={userGroupSelected[0]}\n            options={groups}\n            onOpenChange={() => setGroups(groupsRef.current)}\n            onValueChange={handleSelectGroup}\n            onChange={handleSearch}\n        />\n        <MultiSelect\n            multiple\n            contentClassName=\"max-w-[260px] break-all\"\n            value={selected}\n            options={roles}\n            placeholder={t('system.roleSelect')}\n            onChange={handleSelectRole}\n        >\n        </MultiSelect>\n        {showDel && <Button variant=\"ghost\" size=\"icon\" className=\"mt-2\" onClick={onDelete}><DelIcon /></Button>}\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/UserRoleModal.tsx",
    "content": "import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"@/components/bs-ui/dialog\"\nimport { useToast } from \"@/components/bs-ui/toast/use-toast\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { updateUserGroups, updateUserRoles } from \"@/controllers/API/user\"\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\"\nimport { Plus } from \"lucide-react\"\nimport { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { Button } from \"../../../components/bs-ui/button\"\nimport UserRoleItem from \"./UserRoleItem\"\n\nexport default function UserRoleModal({ user, onClose, onChange }) {\n    const { t } = useTranslation()\n\n    // 初始化数据\n    const [roleItems, setRoleItems] = useState([])\n    useEffect(() => {\n        if (user) {\n            const { groups, roles } = user\n            const items = groups.map(item => {\n\n                return {\n                    key: generateUUID(8),\n                    groupId: item.id,\n                    roles: roles.filter(role => role.group_id === item.id)\n                        .map(el => el.id.toString())\n                }\n            })\n            setRoleItems(items)\n        }\n    }, [user])\n\n    const handleChangeRoleItems = (index, groupId, roles) => {\n        setRoleItems(items => items.map((el, i) => {\n            return (index !== i) ? el : { groupId: groupId[0], roles }\n        }))\n    }\n\n    const { message } = useToast()\n    const handleSave = async () => {\n        const groupIdsSet = new Set();\n        const rolesSet = new Set();\n\n        roleItems.forEach(item => {\n            // 处理 groupId，注意有些可能是字符串类型\n            if (item.groupId !== undefined) {\n                groupIdsSet.add(Number(item.groupId)); // 统一转换为数字\n            }\n\n            // 处理 roles\n            if (Array.isArray(item.roles)) {\n                item.roles.forEach(role => {\n                    rolesSet.add(role.toString()); // 统一转换为字符串\n                });\n            }\n        });\n        const groupIds = Array.from(groupIdsSet);\n        const roles = Array.from(rolesSet);\n        if (roles.length === 0) return message({ title: t('prompt'), variant: 'warning', description: t('system.selectRole') })\n        if (groupIds.length === 0) return message({ title: t('prompt'), variant: 'warning', description: t('system.selectGroup') })\n        captureAndAlertRequestErrorHoc(updateUserRoles(user.user_id, roles))\n        captureAndAlertRequestErrorHoc(updateUserGroups(user.user_id, groupIds))\n        onChange()\n    }\n\n    return <Dialog open={user} onOpenChange={(b) => { !b && setRoleItems([]); onClose(b) }}>\n        <DialogContent className=\"sm:max-w-[625px]\">\n            <DialogHeader>\n                <DialogTitle>{t('system.roleSelect')}</DialogTitle>\n            </DialogHeader>\n            <div className=\"max-h-[520px] py-1 overflow-y-auto flex flex-col gap-2\">\n                {\n                    roleItems.map((item, i) => <UserRoleItem key={item.key}\n                        groupId={item.groupId + ''}\n                        selectedRoles={item.roles}\n                        onChange={(g, r) => handleChangeRoleItems(i, g, r)}\n                        showDel={roleItems.length > 1}\n                        onDelete={() => setRoleItems(roleItems.filter((el, index) => index !== i))}\n                    />)\n                }\n            </div>\n            <Button variant=\"outline\" size=\"icon\" onClick={() =>\n                setRoleItems(items => [...items, { key: Date.now(), groupId: '', roles: [] }])\n            }><Plus className=\"size-5\" /> </Button>\n            <DialogFooter>\n                <Button variant=\"outline\" className=\"h-10 w-[120px] px-16\" onClick={onClose}>{t('cancel')}</Button>\n                <Button className=\"px-16 h-10 w-[120px]\" onClick={handleSave}>{t('save')}</Button>\n            </DialogFooter>\n        </DialogContent>\n    </Dialog>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/components/Users.tsx",
    "content": "import { FilterIcon } from \"@/components/bs-icons/filter\";\nimport { bsConfirm } from \"@/components/bs-ui/alertDialog/useConfirm\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/bs-ui/popover\";\nimport FilterUserGroup from \"@/components/bs-ui/select/filter\";\nimport { getRolesApi, getUserGroupsApi } from \"@/controllers/API/user\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { SearchInput } from \"../../../components/bs-ui/input\";\nimport AutoPagination from \"../../../components/bs-ui/pagination/autoPagination\";\nimport {\n    Table,\n    TableBody,\n    TableCell,\n    TableFooter,\n    TableHead,\n    TableHeader,\n    TableRow\n} from \"../../../components/bs-ui/table\";\nimport { userContext } from \"../../../contexts/userContext\";\nimport { disableUserApi, getUsersApi } from \"../../../controllers/API/user\";\nimport { captureAndAlertRequestErrorHoc } from \"../../../controllers/request\";\nimport { useTable } from \"../../../util/hook\";\nimport UserRoleModal from \"./UserRoleModal\";\nimport UserPwdModal from \"@/pages/LoginPage/UserPwdModal\";\nimport { PlusIcon } from \"@/components/bs-icons\";\nimport CreateUser from \"./CreateUser\";\n\nfunction UsersFilter({ options, onChecked, nameKey, placeholder, onFilter }) {\n    const [open, setOpen] = useState(false)\n    const [_value, setValue] = useState([])\n    const [searchKey, setSearchKey] = useState('')\n    // 点击 checkbox\n    const handlerChecked = (id) => {\n        setValue(val => {\n            const index = val.indexOf(id)\n            index === -1 ? val.push(id) : val.splice(index, 1)\n            return [...val]\n        })\n        // 已选项上浮\n        const checked = options.filter(o => _value.includes(o.id))\n        const uncheck = options.filter(o => !_value.includes(o.id))\n        onChecked([...checked, ...uncheck])\n    }\n\n    const filterData = () => {\n        onFilter(_value)\n        setOpen(false)\n    }\n    // 搜索\n    const _options = useMemo(() => {\n        if (!searchKey) return options\n        return options.filter(a => a[nameKey].toUpperCase().includes(searchKey.toUpperCase()))\n    }, [searchKey, options])\n    // 重置\n    const reset = () => {\n        setValue([])\n        setSearchKey('')\n    }\n\n    return <Popover open={open} onOpenChange={(bln) => { setOpen(bln); setSearchKey('') }}>\n        <PopoverTrigger>\n            {/* @ts-ignore */}\n            <FilterIcon onClick={() => setOpen(!open)} className={_value.length ? 'text-primary ml-3' : 'text-gray-400 ml-3'} />\n        </PopoverTrigger>\n        <PopoverContent>\n            <FilterUserGroup\n                value={_value}\n                options={_options}\n                nameKey={nameKey}\n                placeholder={placeholder}\n                onChecked={handlerChecked}\n                search={(e) => setSearchKey(e.target.value)}\n                onClearChecked={reset}\n                onOk={filterData}\n            />\n        </PopoverContent>\n    </Popover>\n\n}\n\n\nexport default function Users(params) {\n    const { user } = useContext(userContext);\n    const { t } = useTranslation()\n\n    const { page, pageSize, data: users, total, setPage, search, reload, filterData } = useTable({ pageSize: 20 }, (param) =>\n        getUsersApi({\n            ...param,\n            name: param.keyword\n        })\n    )\n\n    // 禁用确认\n    const handleDelete = (user) => {\n        bsConfirm({\n            title: `${t('prompt')}!`,\n            desc: t('system.confirmDisable'),\n            okTxt: t('disable'),\n            onOk(next) {\n                captureAndAlertRequestErrorHoc(disableUserApi(user.user_id, 1).then(res => {\n                    reload()\n                }))\n                next()\n            }\n        })\n    }\n    const handleEnableUser = (user) => {\n        captureAndAlertRequestErrorHoc(disableUserApi(user.user_id, 0).then(res => {\n            reload()\n        }))\n    }\n\n    // 编辑\n    const [currentUser, setCurrentUser] = useState(null)\n    const userPwdModalRef = useRef(null)\n    const handleRoleChange = () => {\n        setCurrentUser(null)\n        reload()\n    }\n\n    // 获取用户组类型数据\n    const [userGroups, setUserGroups] = useState([])\n    const getUserGoups = async () => {\n        const res: any = await getUserGroupsApi()\n        setUserGroups(res.records)\n    }\n    // 获取角色类型数据\n    const [roles, setRoles] = useState([])\n    const getRoles = async () => {\n        const res: any = await getRolesApi()\n        setRoles(res)\n    }\n    // 已选项上浮\n    const handleGroupChecked = (values) => {\n        setUserGroups(values)\n    }\n    const handleRoleChecked = (values) => {\n        setRoles(values)\n    }\n\n    const [openCreate, setOpenCreate] = useState(false)\n\n    useEffect(() => {\n        getUserGoups()\n        getRoles()\n        return () => { setUserGroups([]); setRoles([]) }\n    }, [])\n\n    const operations = (el) => {\n        const isSuperAdmin = el.roles.some(role => role.id === 1)\n        // 禁止编辑admin用户\n        if (isSuperAdmin) return <div>\n            <Button variant=\"link\" disabled className=\"px-0\">{t('edit')}</Button>\n            {/* <Button variant=\"link\" disabled className=\"px-0 pl-4\">{t('system.resetPwd')}</Button> */}\n            <Button variant=\"link\" className=\"px-0 pl-4\" onClick={() => userPwdModalRef.current.open(el.user_id)}>{t('system.resetPwd')}</Button>\n            <Button variant=\"link\" disabled className=\"text-red-500 px-0 pl-4\">{t('disable')}</Button>\n        </div>\n\n        return <div>\n            {/* 编辑 */}\n            <Button variant=\"link\" disabled={user.user_id === el.user_id} onClick={() => setCurrentUser(el)} className=\"px-0\">{t('edit')}</Button>\n            {/* 重置密码 */}\n            {(user.role === 'admin' || user.role === 'group_admin') &&\n                <Button variant=\"link\" className=\"px-0 pl-4\" onClick={() => userPwdModalRef.current.open(el.user_id)}>{t('system.resetPwd')}</Button>}\n            {/* 禁用 */}\n            {\n                el.delete === 1 ? <Button variant=\"link\" onClick={() => handleEnableUser(el)} className=\"text-green-500 px-0 pl-4\">{t('enable')}</Button> :\n                    <Button variant=\"link\" disabled={user.user_id === el.user_id} onClick={() => handleDelete(el)} className=\"text-red-500 px-0 pl-4\">{t('disable')}</Button>\n            }\n        </div>\n    }\n\n    return <div className=\"relative\">\n        <div className=\"h-[calc(100vh-128px)] overflow-y-auto pb-10\">\n            <div className=\"flex justify-end gap-6\">\n                <div className=\"w-[180px] relative\">\n                    <SearchInput placeholder={t('system.username')} onChange={(e) => search(e.target.value)}></SearchInput>\n                </div>\n                {user.role === 'admin' && <Button className=\"flex justify-around\" onClick={() => setOpenCreate(true)}>\n                    <PlusIcon className=\"text-primary\" />\n                    <span className=\"text-[#fff] mx-4\">{t('create')}</span>\n                </Button>}\n            </div>\n            <Table className=\"mb-[50px]\">\n                {/* <TableCaption>用户列表.</TableCaption> */}\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[200px]\">{t('system.username')}</TableHead>\n                        <TableHead>\n                            <div className=\"flex items-center\">\n                                {t('system.userGroup')}\n                                <UsersFilter\n                                    options={userGroups}\n                                    nameKey='group_name'\n                                    onChecked={handleGroupChecked}\n                                    placeholder={t('system.searchUserGroups')}\n                                    onFilter={(ids) => filterData({ groupId: ids })}\n                                ></UsersFilter>\n                            </div>\n                        </TableHead>\n                        <TableHead>\n                            <div className=\"flex items-center\">\n                                {t('system.role')}\n                                <UsersFilter\n                                    options={roles}\n                                    nameKey='role_name'\n                                    onChecked={handleRoleChecked}\n                                    placeholder={t('system.searchRoles')}\n                                    onFilter={(ids) => filterData({ roleId: ids })}\n                                ></UsersFilter>\n                            </div>\n                        </TableHead>\n                        <TableHead>{t('system.changeTime')}</TableHead>\n                        <TableHead className=\"text-right w-[164px]\">{t('operations')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {users.map((el: any) => (\n                        <TableRow key={el.id}>\n                            <TableCell className=\"font-medium max-w-md truncate\">{el.user_name}</TableCell>\n                            {/* <TableCell>{el.role}</TableCell> */}\n                            <TableCell className=\"break-all\">{(el.groups || []).map(el => el.name).join(',')}</TableCell>\n                            <TableCell className=\"break-all\">{(el.roles || []).map(el => el.name).join(',')}</TableCell>\n                            <TableCell>{el.update_time.replace('T', ' ')}</TableCell>\n                            <TableCell \n                                className=\"text-right\" \n                                style={{ \n                                    whiteSpace: 'nowrap',\n                                }}\n                                >\n                                {operations(el)}\n                            </TableCell>\n                        </TableRow>\n                    ))}\n                </TableBody>\n                <TableFooter>\n                    {!users.length && <TableRow>\n                        <TableCell colSpan={5} className=\"text-center text-gray-400\">{t('build.empty')}</TableCell>\n                    </TableRow>}\n                </TableFooter>\n            </Table>\n        </div>\n        {/* 分页 */}\n        {/* <Pagination count={10}></Pagination> */}\n        <div className=\"bisheng-table-footer bg-background-login\">\n            <p className=\"desc\">{t('system.userList')}</p>\n            <AutoPagination\n                className=\"float-right justify-end w-full mr-6\"\n                page={page}\n                pageSize={pageSize}\n                total={total}\n                onChange={(newPage) => setPage(newPage)}\n            />\n        </div>\n\n        <CreateUser open={openCreate} onClose={(bool) => { setOpenCreate(bool); reload() }} onSave={reload} />\n        <UserRoleModal user={currentUser} onClose={() => setCurrentUser(null)} onChange={handleRoleChange}></UserRoleModal>\n        <UserPwdModal ref={userPwdModalRef} />\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/index.tsx",
    "content": "import { userContext } from \"@/contexts/userContext\";\nimport { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n    Tabs,\n    TabsContent,\n    TabsList,\n    TabsTrigger,\n} from \"../../components/bs-ui/tabs\";\nimport Config from \"./components/Config\";\nimport Roles from \"./components/Roles\";\nimport Theme from \"./theme\";\nimport UserGroups from \"./components/UserGroup\";\nimport Users from \"./components/Users\";\n\nexport default function index() {\n    const { user } = useContext(userContext);\n\n    const { t } = useTranslation()\n    return <div className=\"w-full h-full px-2 pt-4\">\n\n        <Tabs defaultValue=\"user\" className=\"w-full\">\n            <TabsList className=\"\">\n                <TabsTrigger value=\"user\" className=\"roundedrounded-xl\">{t('system.userManagement')}</TabsTrigger>\n                {user.role === 'admin' && <TabsTrigger value=\"userGroup\">{t('system.userGroupsM')}</TabsTrigger>}\n                <TabsTrigger value=\"role\">{t('system.roleManagement')}</TabsTrigger>\n                {user.role === 'admin' && <TabsTrigger value=\"system\">{t('system.systemConfiguration')}</TabsTrigger>}\n                {user.role === 'admin' && <TabsTrigger value=\"theme\">{t('system.themeColor')}</TabsTrigger>}\n            </TabsList>\n            <TabsContent value=\"user\">\n                <Users></Users>\n            </TabsContent>\n            <TabsContent value=\"userGroup\">\n                <UserGroups></UserGroups>\n            </TabsContent>\n            <TabsContent value=\"role\">\n                <Roles></Roles>\n            </TabsContent>\n            <TabsContent value=\"system\">\n                <Config></Config>\n            </TabsContent>\n            <TabsContent value=\"theme\">\n                <Theme></Theme>\n            </TabsContent>\n        </Tabs>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/theme/Example.tsx",
    "content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"@/components/bs-ui/accordion\";\nimport { Badge } from \"@/components/bs-ui/badge\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { Calendar } from \"@/components/bs-ui/calendar\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/bs-ui/card\";\nimport { Checkbox } from \"@/components/bs-ui/checkBox\";\nimport { SearchInput, Textarea } from \"@/components/bs-ui/input\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport AutoPagination from \"@/components/bs-ui/pagination/autoPagination\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from \"@/components/bs-ui/select\";\nimport { Slider } from \"@/components/bs-ui/slider\";\nimport { Switch } from \"@/components/bs-ui/switch\";\nimport { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { useTranslation } from \"react-i18next\"; // Import useTranslation\n\nconst invoices = [\n    {\n        invoice: \"INV001\",\n        paymentStatus: \"Paid\",\n        totalAmount: \"$250.00\",\n        paymentMethod: \"Credit Card\",\n    },\n    {\n        invoice: \"INV002\",\n        paymentStatus: \"Pending\",\n        totalAmount: \"$150.00\",\n        paymentMethod: \"PayPal\",\n    },\n    {\n        invoice: \"INV003\",\n        paymentStatus: \"Unpaid\",\n        totalAmount: \"$350.00\",\n        paymentMethod: \"Bank Transfer\",\n    },\n]\n\nexport default function Example(params) {\n    const { t } = useTranslation(); // Initialize translation hook\n\n    return <div className=\"h-[calc(100vh-220px)] overflow-y-auto py-10 pl-2 pr-10\">\n        <Label className=\"mt-10\">{t('example.buttons')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Button variant=\"default\">{t('example.button')}</Button>\n            <Button variant=\"destructive\">{t('example.button')}</Button>\n            <Button variant=\"outline\">{t('example.button')}</Button>\n            <Button variant=\"secondary\">{t('example.button')}</Button>\n            <Button variant=\"ghost\">{t('example.button')}</Button>\n            <Button variant=\"link\">{t('example.button')}</Button>\n        </div>\n        <Label>{t('example.badges')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Badge >{t('example.badge')}</Badge>\n            <Badge variant=\"secondary\">{t('example.badge')}</Badge>\n            <Badge variant=\"outline\">{t('example.badge')}</Badge>\n            <Badge variant=\"destructive\">{t('example.badge')}</Badge>\n        </div>\n        <Label>{t('example.inputs')}</Label>\n        <div className=\"flex flex-col gap-2 mb-6\">\n            <SearchInput placeholder={t('example.search')}></SearchInput>\n            <p></p>\n            <Textarea placeholder={t('example.content')} value={''}></Textarea>\n        </div>\n        <Label>{t('example.dropdown')}</Label>\n        <div className=\"flex flex-col gap-2 mb-6\">\n            <Select>\n                <SelectTrigger className=\"w-[180px]\">\n                    <SelectValue placeholder={t('example.selectAFruit')} />\n                </SelectTrigger>\n                <SelectContent>\n                    <SelectGroup>\n                        <SelectLabel>{t('example.fruits')}</SelectLabel>\n                        <SelectItem value=\"apple\">{t('example.apple')}</SelectItem>\n                        <SelectItem value=\"banana\">{t('example.banana')}</SelectItem>\n                        <SelectItem value=\"blueberry\">{t('example.blueberry')}</SelectItem>\n                        <SelectItem value=\"grapes\">{t('example.grapes')}</SelectItem>\n                        <SelectItem value=\"pineapple\">{t('example.pineapple')}</SelectItem>\n                    </SelectGroup>\n                </SelectContent>\n            </Select>\n        </div>\n        <Label>{t('example.slider')}</Label>\n        <div className=\"flex flex-col gap-2 mb-6\">\n            <Slider\n                defaultValue={[50]}\n                max={100}\n                step={1}\n                className=\"w-[60%]\"\n            />\n        </div>\n        <Label>{t('example.switch')}</Label>\n        <div className=\"flex flex-col gap-2 mb-6\">\n            <Switch id=\"airplane-mode\" className=\"w-11\" />\n        </div>\n        <Label>{t('example.checkboxRadio')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Checkbox id=\"terms\" />\n            <RadioGroup defaultValue=\"one\" >\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"default\" id=\"r1\" />\n                    <Label htmlFor=\"r1\">{t('example.default')}</Label>\n                </div>\n                <div className=\"flex items-center space-x-2\">\n                    <RadioGroupItem value=\"one\" id=\"r2\" />\n                    <Label htmlFor=\"r2\">{t('example.one')}</Label>\n                </div>\n            </RadioGroup>\n        </div>\n        <Label>{t('example.tablePagination')}</Label>\n        <div className=\"flex flex-col gap-2 mb-6\">\n            <Table>\n                <TableCaption>{t('example.invoiceListCaption')}</TableCaption>\n                <TableHeader>\n                    <TableRow>\n                        <TableHead className=\"w-[100px]\">{t('example.invoice')}</TableHead>\n                        <TableHead>{t('example.status')}</TableHead>\n                        <TableHead>{t('example.method')}</TableHead>\n                        <TableHead className=\"text-right\">{t('example.amount')}</TableHead>\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {invoices.map((invoice) => (\n                        <TableRow key={invoice.invoice}>\n                            <TableCell className=\"font-medium\">{invoice.invoice}</TableCell>\n                            <TableCell>{invoice.paymentStatus}</TableCell>\n                            <TableCell>{invoice.paymentMethod}</TableCell>\n                            <TableCell className=\"text-right\">{invoice.totalAmount}</TableCell>\n                        </TableRow>\n                    ))}\n                </TableBody>\n                <TableFooter>\n                    <TableRow>\n                        <TableCell colSpan={3}>{t('example.total')}</TableCell>\n                        <TableCell className=\"text-right\">$2,500.00</TableCell>\n                    </TableRow>\n                </TableFooter>\n            </Table>\n            <AutoPagination page={1} pageSize={10} total={100} />\n        </div>\n        <Label>{t('example.calendar')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Calendar\n                mode=\"single\"\n            />\n        </div>\n        <Label>{t('example.card')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Card className=\"w-[350px]\">\n                <CardHeader>\n                    <CardTitle>{t('example.createProject')}</CardTitle>\n                    <CardDescription>{t('example.deployProjectDescription')}</CardDescription>\n                </CardHeader>\n                <CardContent>\n                    {t('example.content')}\n                </CardContent>\n                <CardFooter className=\"flex justify-between\">\n                    <Button variant=\"outline\">{t('example.cancel')}</Button>\n                    <Button>{t('example.deploy')}</Button>\n                </CardFooter>\n            </Card>\n        </div>\n        <Label>{t('example.accordion')}</Label>\n        <div className=\"flex gap-2 mb-6\">\n            <Accordion type=\"single\" collapsible className=\"w-full\">\n                <AccordionItem value=\"item-1\">\n                    <AccordionTrigger>{t('example.isItAccessible')}</AccordionTrigger>\n                    <AccordionContent>\n                        {t('example.accordionAnswer1')}\n                    </AccordionContent>\n                </AccordionItem>\n                <AccordionItem value=\"item-2\">\n                    <AccordionTrigger>{t('example.isItStyled')}</AccordionTrigger>\n                    <AccordionContent>\n                        {t('example.accordionAnswer2')}\n                    </AccordionContent>\n                </AccordionItem>\n                <AccordionItem value=\"item-3\">\n                    <AccordionTrigger>{t('example.isItAnimated')}</AccordionTrigger>\n                    <AccordionContent>\n                        {t('example.accordionAnswer3')}\n                    </AccordionContent>\n                </AccordionItem>\n            </Accordion>\n        </div>\n    </div>\n};"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/theme/HSLitem.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useState } from \"react\";\nimport { SketchPicker } from 'react-color';\n\nexport default function HSLitem({ label, name, value, onChange }) {\n    const [show, setShow] = useState(false)\n\n    return <div className=\"flex items-center justify-between\">\n        <Label className=\"font-black\">{label}</Label>\n        <div>\n            <Button variant=\"outline\" title={name} className=\"p-2 h-8 bg-gray-100\" onClick={() => setShow(!show)}>\n                <span className=\"block w-8 h-4 rounded\" style={{ background: `hsl(${value.h}, ${value.s * 100}%, ${value.l * 100}%)` }}></span>\n            </Button>\n            {show && <div className=\"absolute z-20\">\n                <div className=\"fixed top-0 left-0 w-full h-full\" onClick={() => setShow(false)}></div>\n                <SketchPicker\n                    color={value}\n                    presetColors={['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8']}\n                    onChangeComplete={(e) => { onChange(name, e.hsl) }}\n                />\n            </div>}\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/SystemPage/theme/index.tsx",
    "content": "import { Button } from \"@/components/bs-ui/button\";\nimport { saveThemeApi } from \"@/controllers/API\";\nimport { RefreshCw } from \"lucide-react\";\nimport { useState } from \"react\";\nimport Example from \"./Example\";\nimport HSLitem from \"./HSLitem\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/bs-ui/radio\";\nimport { Label } from \"@/components/bs-ui/label\";\nimport { useTranslation } from \"react-i18next\";\n\n// Default theme configuration\nconst defaultTheme = {\n    '--background': { h: 0, s: 0, l: 1 },\n    '--foreground': { h: 222.2, s: 0.474, l: 0.112 },\n    '--muted': { h: 210, s: 0.4, l: 0.98 },\n    '--muted-foreground': { h: 215.4, s: 0.163, l: 0.469 },\n    '--popover': { h: 0, s: 0, l: 1 },\n    '--popover-foreground': { h: 222.2, s: 0.474, l: 0.112 },\n    '--card': { h: 0, s: 0, l: 1 },\n    '--card-foreground': { h: 222.2, s: 0.474, l: 0.112 },\n    '--border': { h: 214.3, s: 0.218, l: 0.914 },\n    '--input': { h: 223, s: 0.48, l: 0.44 },\n    '--primary': { h: 220, s: 0.98, l: 0.45 },\n    '--primary-foreground': { h: 210, s: 0.4, l: 0.98 },\n    '--secondary': { h: 210, s: 0.4, l: 0.961 },\n    '--secondary-foreground': { h: 222.2, s: 0.474, l: 0.112 },\n    '--accent': { h: 210, s: 0.3, l: 0.961 },\n    '--accent-foreground': { h: 222.2, s: 0.474, l: 0.112 },\n    '--destructive': { h: 0, s: 1, l: 0.5 },\n    '--destructive-foreground': { h: 210, s: 0.4, l: 0.98 },\n    '--black-button': { h: 0, s: 0, l: 0.07 },\n};\n\n// Theme key mappings for internationalization\nconst themeKeys = {\n    \"--primary\": \"theme.primary\",\n    \"--primary-foreground\": \"theme.primaryForeground\",\n    \"--background\": \"theme.background\",\n    \"--foreground\": \"theme.foreground\",\n    \"--muted\": \"theme.muted\",\n    \"--muted-foreground\": \"theme.mutedForeground\",\n    \"--card\": \"theme.card\",\n    \"--card-foreground\": \"theme.cardForeground\",\n    \"--popover\": \"theme.popover\",\n    \"--popover-foreground\": \"theme.popoverForeground\",\n    \"--border\": \"theme.border\",\n    \"--input\": \"theme.input\",\n    \"--secondary\": \"theme.secondary\",\n    \"--secondary-foreground\": \"theme.secondaryForeground\",\n    \"--accent\": \"theme.accent\",\n    \"--accent-foreground\": \"theme.accentForeground\",\n    \"--destructive\": \"theme.destructive\",\n    \"--destructive-foreground\": \"theme.destructiveForeground\",\n    \"--ring\": \"theme.ring\",\n    \"--radius\": \"theme.radius\",\n    \"--warning\": \"theme.warning\",\n    \"--warning-foreground\": \"theme.warningForeground\",\n    '--black-button': 'theme.blackButton',\n};\n\nexport default function Theme() {\n    const [theme, setTheme] = useState(Object.keys(window.ThemeStyle.comp).length ? window.ThemeStyle.comp : { ...defaultTheme });\n    const [bg, setBg] = useState(window.ThemeStyle.bg || 'logo')\n    const { t } = useTranslation()\n    const applyTheme = (theme) => {\n        Object.keys(theme).forEach(key => {\n            document.documentElement.style.setProperty(key, handleHSLtoStr(theme[key]));\n        });\n        setTheme(theme);\n        window.ThemeStyle = { comp: theme, bg }\n        saveThemeApi(JSON.stringify({ comp: theme }))\n    };\n\n    // hsl -> '220 98% 95%'\n    const handleHSLtoStr = (hsl) => {\n        return `${hsl.h} ${hsl.s * 100}% ${hsl.l * 100}%`\n    }\n\n    const handleHSLChange = (name, hsl) => {\n        const newTheme = {\n            ...theme,\n            [name]: hsl,\n        };\n        setTheme(newTheme);\n        document.documentElement.style.setProperty(name, handleHSLtoStr(hsl));\n        // Save the updated theme\n        window.ThemeStyle = { comp: newTheme, bg }\n        saveThemeApi(JSON.stringify({ comp: newTheme }))\n    };\n\n\n    return <div className=\"flex justify-center border-t bg-accent\">\n        <div className=\"w-96 py-4 pr-8 border-r \">\n            <p className=\"flex justify-between items-center mb-4\">\n                <span className=\"text-lg\">{t('theme.colorConfig')}</span>\n                <Button className=\"right\" variant=\"link\" onClick={e => applyTheme({ ...defaultTheme })}><RefreshCw className=\"mr-1 size-4\" />{t('theme.restoreDefault')}</Button>\n            </p>\n            <div className=\"grid grid-cols-2 gap-2 gap-x-8 my-8\">\n                {\n                    Object.keys(theme).map(key => {\n                        return <HSLitem key={key} label={t(themeKeys[key])} name={key} value={theme[key]} onChange={handleHSLChange} />\n                    })\n                }\n            </div>\n            <p className=\"flex justify-between items-center mb-4\">\n                <span className=\"text-lg\">{t('theme.workflowBackgroundConfig')}</span>\n            </p>\n            <RadioGroup value={bg} onValueChange={(val) => {\n                window.ThemeStyle.bg = val\n                saveThemeApi(JSON.stringify({ comp: theme, bg: val }))\n                setBg(val)\n            }}\n                className=\"flex space-x-2 h-[20px] mt-4 mb-6\">\n                <div>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" value=\"logo\" />{t('theme.bishengLogo')}\n                    </Label>\n                </div>\n                <div>\n                    <Label className=\"flex justify-center\">\n                        <RadioGroupItem className=\"mr-2\" value=\"gradient\" />{t('theme.themeColorGradientEffect')}\n                    </Label>\n                </div>\n            </RadioGroup>\n        </div>\n        <div className=\"px-4 py-4 bg-card\">\n            <p className=\"text-xl mb-4\">{t('theme.componentPreview')}</p>\n            <div>\n                {/* Component list */}\n                <Example />\n            </div>\n        </div>\n    </div>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/pages/resoucePage.tsx",
    "content": "import { useParams } from \"react-router-dom\";\nimport { ResouceContent } from \"./ChatAppPage/components/ResouceModal\";\n\nexport default function ResoucePage() {\n    const { cid, mid } = useParams()\n    const data = { messageId: mid, chatId: cid, message: 'x' }\n\n    return <ResouceContent data={data} fullScreen setOpen={() => { }} />\n};\n"
  },
  {
    "path": "src/frontend/platform/src/prettierrc.js",
    "content": "module.exports = {\n  // ...\n  organizeImportsSkipDestructiveCodeActions: true,\n};\n"
  },
  {
    "path": "src/frontend/platform/src/reportWebVitals.ts",
    "content": "import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "src/frontend/platform/src/routes/RouteErrorBoundary.tsx",
    "content": "import { Button } from '@/components/bs-ui/button';\nimport { CircleAlert } from 'lucide-react';\nimport { useRouteError } from 'react-router-dom';\n\ninterface UserAgentData {\n    getHighEntropyValues(hints: string[]): Promise<{ platform: string; platformVersion: string }>;\n}\n\ntype PlatformInfo = {\n    os: string;\n    version?: string;\n};\n\nconst formatStackTrace = (stack: string) => {\n    return stack\n        .split('\\n')\n        .map((line) => line.trim())\n        .filter(Boolean)\n        .map((line, i) => ({\n            number: i + 1,\n            content: line,\n        }));\n};\n\nconst getPlatformInfo = async (): Promise<PlatformInfo> => {\n    if ('userAgentData' in navigator) {\n        try {\n            const ua = navigator.userAgentData as UserAgentData;\n            const highEntropyValues = await ua.getHighEntropyValues(['platform', 'platformVersion']);\n            return {\n                os: highEntropyValues.platform,\n                version: highEntropyValues.platformVersion,\n            };\n        } catch (e) {\n            console.warn('Failed to get high entropy values');\n            console.error(e);\n        }\n    }\n\n    const userAgent = navigator.userAgent.toLowerCase();\n\n    if (userAgent.includes('mac')) {\n        return { os: 'macOS' };\n    }\n    if (userAgent.includes('win')) {\n        return { os: 'Windows' };\n    }\n    if (userAgent.includes('linux')) {\n        return { os: 'Linux' };\n    }\n    if (userAgent.includes('android')) {\n        return { os: 'Android' };\n    }\n    if (userAgent.includes('ios') || userAgent.includes('iphone') || userAgent.includes('ipad')) {\n        return { os: 'iOS' };\n    }\n\n    return { os: 'Unknown' };\n};\n\nconst getBrowserInfo = async () => {\n    const platformInfo = await getPlatformInfo();\n    return {\n        userAgent: navigator.userAgent,\n        platform: platformInfo.os,\n        platformVersion: platformInfo.version,\n        language: navigator.language,\n        windowSize: `${window.innerWidth}x${window.innerHeight}`,\n    };\n};\n\nexport default function RouteErrorBoundary() {\n    const typedError = useRouteError() as {\n        message?: string;\n        stack?: string;\n        status?: number;\n        statusText?: string;\n        data?: unknown;\n    };\n\n    const errorDetails = {\n        message: typedError.message ?? 'An unexpected error occurred',\n        stack: typedError.stack,\n        status: typedError.status,\n        statusText: typedError.statusText,\n        data: typedError.data,\n    };\n\n    const handleDownloadLogs = async () => {\n        try {\n            const browser = await getBrowserInfo();\n            const errorLog = {\n                timestamp: new Date().toISOString(),\n                browser,\n                error: {\n                    ...errorDetails,\n                    stack:\n                        errorDetails.stack != null && errorDetails.stack.trim() !== ''\n                            ? formatStackTrace(errorDetails.stack)\n                            : undefined,\n                },\n            };\n\n            const blob = new Blob([JSON.stringify(errorLog, null, 2)], { type: 'application/json' });\n            const url = URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = `error-log-${new Date().toISOString()}.json`;\n            document.body.appendChild(a);\n            a.click();\n            document.body.removeChild(a);\n            URL.revokeObjectURL(url);\n        } catch (e) {\n            console.warn('Failed to download error logs:');\n            console.error(e);\n        }\n    };\n\n    const handleCopyStack = async () => {\n        if (errorDetails.stack != null && errorDetails.stack !== '') {\n            await navigator.clipboard.writeText(errorDetails.stack);\n        }\n    };\n\n    return (\n        <div\n            role=\"alert\"\n            className=\"flex min-h-screen flex-col items-center justify-center bg-surface-primary bg-gradient-to-br\"\n        >\n            <div className=\"bg-surface-primary/60 mx-4 w-11/12 max-w-4xl rounded-2xl border border-border-light p-8 shadow-2xl backdrop-blur-xl\">\n                <div className='w-20 h-20 mx-auto mb-2 bg-orange-200 rounded-full text-white flex items-center justify-center'>\n                    <CircleAlert size={80} />\n                </div>\n                <h2 className=\"mb-6 text-center text-3xl font-medium tracking-tight text-text-primary\">\n                    Oops! Something Unexpected Occurred\n                </h2>\n\n                {/* Error Message */}\n                <div className=\"mb-4 rounded-xl border border-red-500/20 bg-red-500/5 p-4 text-sm text-gray-600 dark:text-gray-200\">\n                    <h3 className=\"mb-2 font-medium\">Error Message:</h3>\n                    <pre className=\"whitespace-pre-wrap text-sm font-light leading-relaxed text-text-primary\">\n                        {errorDetails.message}\n                    </pre>\n                </div>\n\n                {/* Status Information */}\n                {(typeof errorDetails.status === 'number' ||\n                    typeof errorDetails.statusText === 'string') && (\n                        <div className=\"mb-4 rounded-xl border border-yellow-500/20 bg-yellow-500/5 p-4 text-sm text-text-primary\">\n                            <h3 className=\"mb-2 font-medium\">Status:</h3>\n                            <p className=\"text-text-primary\">\n                                {typeof errorDetails.status === 'number' && `${errorDetails.status} `}\n                                {typeof errorDetails.statusText === 'string' && errorDetails.statusText}\n                            </p>\n                        </div>\n                    )}\n\n                {/* Stack Trace - Collapsible */}\n                {errorDetails.stack != null && errorDetails.stack.trim() !== '' && (\n                    <details className=\"group mb-4 rounded-xl border border-border-light p-4\">\n                        <summary className=\"mb-2 flex cursor-pointer items-center justify-between text-sm font-medium text-text-primary\">\n                            <span>Stack Trace</span>\n                            <div className=\"flex items-center\">\n                                <Button\n                                    variant=\"outline\"\n                                    size=\"sm\"\n                                    onClick={handleCopyStack}\n                                    className=\"ml-2 px-2 py-1 text-xs\"\n                                >\n                                    Copy\n                                </Button>\n                            </div>\n                        </summary>\n                        <div className=\"overflow-x-auto rounded-lg bg-black/5 p-4 dark:bg-white/5\">\n                            {formatStackTrace(errorDetails.stack).map(({ number, content }) => (\n                                <div key={number} className=\"flex\">\n                                    <span className=\"select-none pr-4 font-mono text-xs text-text-secondary\">\n                                        {String(number).padStart(3, '0')}\n                                    </span>\n                                    <pre className=\"flex-1 font-mono text-xs leading-relaxed text-text-primary\">\n                                        {content}\n                                    </pre>\n                                </div>\n                            ))}\n                        </div>\n                    </details>\n                )}\n\n                {/* Additional Error Data */}\n                {errorDetails.data != null && (\n                    <details className=\"group mb-4 rounded-xl border border-border-light p-4\">\n                        <summary className=\"mb-2 flex cursor-pointer items-center justify-between text-sm font-medium text-text-primary\">\n                            <span>Additional Details</span>\n                            <span className=\"transition-transform group-open:rotate-90\">{'>'}</span>\n                        </summary>\n                        <pre className=\"whitespace-pre-wrap text-xs font-light leading-relaxed text-text-primary\">\n                            {JSON.stringify(errorDetails.data, null, 2)}\n                        </pre>\n                    </details>\n                )}\n\n                <div className=\"mt-6 flex flex-col gap-4\">\n                    <p className=\"text-sm font-light text-text-secondary\">Please try one of the following:</p>\n                    <ul className=\"list-inside list-disc text-sm text-text-secondary\">\n                        <li>Refresh the page</li>\n                        <li>Clear your browser cache</li>\n                        <li>Check your internet connection</li>\n                        <li>Contact the Admin if the issue persists</li>\n                    </ul>\n                    <div className=\"mt-4 flex flex-col items-center gap-4 sm:flex-row sm:justify-center\">\n                        <Button\n                            onClick={() => window.location.reload()}\n                        >\n                            Refresh Page\n                        </Button>\n                        <Button variant=\"outline\" onClick={handleDownloadLogs} className=\"w-full sm:w-auto\">\n                            Download Error Logs\n                        </Button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/routes/index.tsx",
    "content": "import { lazy, useEffect } from \"react\";\nimport { Navigate, createBrowserRouter } from \"react-router-dom\";\nimport MainLayout from \"../layout/MainLayout\";\nimport { LoginPage } from \"../pages/LoginPage/login\";\nimport { ResetPwdPage } from \"../pages/LoginPage/resetPwd\";\nimport Page403 from \"../pages/Page403\";\nimport Page404 from \"../pages/Page404\";\nimport { AppNumType } from \"../types/app\";\nimport RouteErrorBoundary from \"./RouteErrorBoundary\";\nimport EditorPage from \"@/pages/Dashboard/editor\";\nimport SharePage from \"@/pages/Dashboard/share\";\n\n// 异步加载页面组件\nconst Templates = lazy(() => import(\"@/pages/BuildPage/appTemps\"));\nconst Apps = lazy(() => import(\"@/pages/BuildPage/apps\"));\nconst EditAssistantPage = lazy(() => import(\"@/pages/BuildPage/assistant/editAssistant\"));\nconst WorkBenchPage = lazy(() => import(\"@/pages/BuildPage/bench/DialogueWork\"));\nconst FlowPage = lazy(() => import(\"@/pages/BuildPage/flow\"));\nconst SkillPage = lazy(() => import(\"@/pages/BuildPage/skills/editSkill\"));\nconst L2Edit = lazy(() => import(\"@/pages/BuildPage/skills/l2Edit\"));\nconst SkillToolsPage = lazy(() => import(\"@/pages/BuildPage/tools\"));\nconst SkillChatPage = lazy(() => import(\"@/pages/ChatAppPage\"));\nconst ChatAssitantShare = lazy(() => import(\"@/pages/ChatAppPage/chatAssitantShare\"));\nconst ChatShare = lazy(() => import(\"@/pages/ChatAppPage/chatShare\"));\nconst ChatPro = lazy(() => import(\"@/pages/ChatAppPage/chatWebview\"));\nconst DataSetPage = lazy(() => import(\"@/pages/DataSetPage\"));\nconst DiffFlowPage = lazy(() => import(\"@/pages/DiffFlowPage\"));\nconst EvaluatingPage = lazy(() => import(\"@/pages/EvaluationPage\"));\nconst EvaluatingCreate = lazy(() => import(\"@/pages/EvaluationPage/EvaluationCreate\"));\nconst KnowledgePage = lazy(() => import(\"@/pages/KnowledgePage\"));\nconst AdjustFilesUpload = lazy(() => import(\"@/pages/KnowledgePage/AdjustFilesUpload\"));\nconst FilesPage = lazy(() => import(\"@/pages/KnowledgePage/detail\"));\nconst FilesUpload = lazy(() => import(\"@/pages/KnowledgePage/filesUpload\"));\nconst QasPage = lazy(() => import(\"@/pages/KnowledgePage/qas\"));\nconst LabelPage = lazy(() => import(\"@/pages/LabelPage\"));\nconst TaskAppChats = lazy(() => import(\"@/pages/LabelPage/taskAppChats\"));\nconst TaskApps = lazy(() => import(\"@/pages/LabelPage/taskApps\"));\nconst LogPage = lazy(() => import(\"@/pages/LogPage\"));\nconst AppChatDetail = lazy(() => import(\"@/pages/LogPage/useAppLog/appChatDetail\"));\nconst DailyChatDetail = lazy(() => import(\"@/pages/LogPage/useAppLog/dailyChatDetail\"));\nconst Doc = lazy(() => import(\"@/pages/ModelPage/doc\"));\nconst Finetune = lazy(() => import(\"@/pages/ModelPage/finetune\").then(module => ({ default: module.Finetune })));\nconst Management = lazy(() => import(\"@/pages/ModelPage/manage\"));\nconst Report = lazy(() => import(\"@/pages/Report\"));\nconst SystemPage = lazy(() => import(\"@/pages/SystemPage\"));\nconst ResoucePage = lazy(() => import(\"@/pages/resoucePage\"));\nconst Dashboard = lazy(() => import(\"@/pages/Dashboard\"));\n\nconst baseConfig = {\n  //@ts-ignore\n  basename: __APP_ENV__.BASE_URL\n}\n\nconst RedirectToExternalLink = () => {\n  useEffect(() => {\n    const path = import.meta.env.DEV ? '/admin' : '/workspace/'\n    window.location.href = window.location.origin + path;\n  }, []);\n\n  return null;\n};\n\nconst privateRouter = [\n  { path: \"/\", element: <RedirectToExternalLink /> },\n  {\n    path: \"/\",\n    element: <MainLayout />,\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      // { path: \"\", element: <SkillChatPage />, },\n      { path: \"filelib\", element: <KnowledgePage />, permission: 'knowledge', },\n      { path: \"filelib/:id\", element: <FilesPage />, permission: 'knowledge', },\n      { path: \"filelib/upload/:id\", element: <FilesUpload />, permission: 'knowledge', },\n      { path: \"filelib/adjust/:fileId\", element: <AdjustFilesUpload />, permission: 'knowledge', },\n      { path: \"filelib/qalib/:id\", element: <QasPage />, permission: 'knowledge', },\n      { path: \"build/apps\", element: <Apps />, permission: 'build', },\n      // { path: \"build/assist\", element: <SkillAssisPage />, permission: 'build', },\n      // { path: \"build/skills\", element: <SkillsPage />, permission: 'build', },\n      // @ts-ignore\n      { path: \"build/tools\", element: <SkillToolsPage />, permission: 'build', },\n      { path: \"build/client\", element: <WorkBenchPage />, permission: 'build' },\n      { path: \"build\", element: <Navigate to=\"apps\" replace /> },\n      { path: \"build/skill\", element: <L2Edit />, permission: 'build', },\n      { path: \"build/skill/:id/:vid\", element: <L2Edit />, permission: 'build', },\n      { path: \"build/temps/:type\", element: <Templates />, permission: 'build', },\n      { path: \"model/management\", element: <Management /> },\n      { path: \"model/finetune\", element: <Finetune /> },\n      { path: \"model\", element: <Navigate to=\"management\" replace /> },\n      { path: \"sys\", element: <SystemPage />, permission: 'sys' },\n      { path: \"log\", element: <LogPage /> },\n      { path: \"log/chatlog/:fid/:cid/:type\", element: <AppChatDetail /> },\n      { path: \"log/chatlog/:cid\", element: <DailyChatDetail /> },\n      { path: \"evaluation\", element: <EvaluatingPage /> },\n      { path: \"evaluation/create\", element: <EvaluatingCreate /> },\n      { path: \"dataset\", element: <DataSetPage /> },\n      { path: \"label\", element: <LabelPage /> },\n      { path: \"label/:id\", element: <TaskApps /> },\n      { path: \"label/chat/:id/:fid/:cid/:type\", element: <TaskAppChats /> },\n      { path: \"dashboard\", element: <Dashboard /> },\n    ],\n  },\n  { path: \"dashboard/:id\", element: <EditorPage />, errorElement: <RouteErrorBoundary />, permission: 'board', },\n  { path: \"dashboard/share/:boardId\", element: <SharePage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"model/doc\", element: <Doc />, errorElement: <RouteErrorBoundary /> },\n  {\n    path: \"/skill/:id/\",\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      { path: \"\", element: <SkillPage /> }\n    ]\n  },\n  {\n    path: \"/flow/:id/\",\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      { path: \"\", element: <FlowPage /> }\n    ]\n  },\n  {\n    path: \"/assistant/:id/\",\n    errorElement: <RouteErrorBoundary />,\n    children: [\n      { path: \"\", element: <EditAssistantPage /> }\n    ]\n  },\n  {\n    path: \"/resouce/:cid/:mid\",\n    errorElement: <RouteErrorBoundary />,\n    element: <ResoucePage />\n  },\n  // 独立会话页\n  { path: \"/chat/assistant/auth/:id/\", element: <ChatPro type={AppNumType.ASSISTANT} />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/flow/auth/:id/\", element: <ChatPro type={AppNumType.FLOW} />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/skill/auth/:id/\", element: <ChatPro />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat\", element: <SkillChatPage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/:id/\", element: <ChatShare />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/flow/:id/\", element: <ChatShare type={AppNumType.FLOW} />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/assistant/:id/\", element: <ChatAssitantShare />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/report/:id/\", element: <Report />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/diff/:id/:vid/:cid\", element: <DiffFlowPage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/reset\", element: <ResetPwdPage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/403\", element: <Page403 /> },\n  { path: \"/404\", element: <Page404 /> },\n  { path: \"*\", element: <Navigate to=\"/404\" replace /> }\n]\n\nexport const getPrivateRouter = (permissions) => {\n  const filterMenuItem = (_privateRouter) => {\n    const result = _privateRouter.reduce((res, cur) => {\n      // 递归\n      if (cur.children?.length) {\n        cur.children = filterMenuItem(cur.children)\n      }\n\n      const { permission, ...other } = cur\n      if (permission && !permissions.includes(permission)) {\n        return res\n      }\n\n      res.push(other)\n      return res\n    }, [])\n\n    return result\n  }\n\n  return createBrowserRouter(permissions ? filterMenuItem(privateRouter) : [],\n    baseConfig)\n}\n\nexport const getAdminRouter = () => {\n  return createBrowserRouter(privateRouter,\n    baseConfig)\n}\n\nexport const publicRouter = createBrowserRouter([\n  { path: \"/\", element: <LoginPage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/reset\", element: <ResetPwdPage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/:id/\", element: <ChatShare />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/flow/:id/\", element: <ChatShare type={AppNumType.FLOW} />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/chat/assistant/:id/\", element: <ChatAssitantShare />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/resouce/:cid/:mid\", element: <ResoucePage />, errorElement: <RouteErrorBoundary /> },\n  { path: \"/403\", element: <Page403 /> },\n  { path: \"*\", element: <LoginPage /> }\n],\n  baseConfig)\n"
  },
  {
    "path": "src/frontend/platform/src/store/assistantStore.tsx",
    "content": "import { AssistantDetail } from '@/types/assistant'\nimport { create } from 'zustand'\nimport { getAssistantDetailApi } from '../controllers/API/assistant'\n\n/**\n * 助手编辑管理\n */\n\ntype State = {\n  changed: boolean,\n  assistantState: AssistantDetail\n}\n\ntype Actions = {\n  dispatchAssistant: (action: Action, assistantState: Partial<AssistantDetail>) => void,\n  loadAssistantState: (id: string, version: string) => Promise<any>\n  saveAfter: () => void\n  destroy: () => void\n}\n\ntype Action = 'setBaseInfo' | 'setting' | 'setPrompt' | 'setGuideword' | 'setTools' | 'setFlows' | 'setQuestion' | 'setContentSecurity'\n\nconst assistantReducer = (state: State, action: Action, data: Partial<AssistantDetail>) => {\n  console.log('action :>> ', action, data);\n  return { changed: true, assistantState: { ...state.assistantState, ...data } }\n  // switch (action) {\n  //   case 'setBaseInfo':\n  //     return { assistantState: { ...state.assistantState, ...data } }\n  //   default:\n  //     return state\n  // }\n}\n\n\nconst assistantTemp = {\n  id: 3,\n  name: \"\",\n  desc: \"\",\n  logo: \"\",\n  prompt: \"\",\n  guide_word: \"\",\n  guide_question: [],\n  model_name: \"\",\n  temperature: 0.5,\n  status: 0,\n  user_id: 1,\n  create_time: \"\",\n  update_time: \"\",\n  tool_list: [],\n  flow_list: [],\n  knowledge_list: [],\n  max_token: 32000\n}\n\nexport const useAssistantStore = create<State & Actions>((set) => ({\n  changed: false,\n  assistantState: { ...assistantTemp },\n  dispatchAssistant: (action: Action, data: Partial<AssistantDetail>) => set((state) => assistantReducer(state, action, data)),\n  // 加载助手状态\n  loadAssistantState: (id, version) => {\n    return getAssistantDetailApi(id, version).then(data => {\n      set({\n        assistantState: {\n          ...data,\n          model_name: Number(data.model_name),\n          // 补一个空行\n          guide_question: data.guide_question ? [...data.guide_question, ''] : ['']\n        }\n      })\n      return data\n    })\n  },\n  saveAfter() {\n    set({ changed: false })\n  },\n  changeStatus(status) {\n    set((state) => ({\n      assistantState: {\n        ...state.assistantState,\n        status: status\n      }\n    }));\n  },\n  destroy: () => {\n    set({ assistantState: { ...assistantTemp } })\n  }\n}))"
  },
  {
    "path": "src/frontend/platform/src/store/dashboardStore.tsx",
    "content": "import { create } from \"zustand\"\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { ChartType, createDefaultDataConfig, Dashboard, DashboardComponent, LayoutItem, QueryConfig } from \"@/pages/Dashboard/types/dataConfig\"\nimport { DatePickerValue } from \"@/pages/Dashboard/components/AdvancedDatePicker\";\nimport { cloneDeep, isEqual } from \"lodash-es\";\nimport { getDefaultMetricStyle } from \"@/pages/Dashboard/colorSchemes\";\n\n// Chart refresh information\ninterface ChartRefreshInfo {\n    trigger: number;           // Refresh trigger counter\n    queryParams: any[];        // Array of associated query component parameters\n}\ninterface HistoryState {\n    past: Array<{ currentDashboard: any, layouts: any[] }>;\n    future: Array<{ currentDashboard: any, layouts: any[] }>;\n}\n\ninterface EditorState {\n    // Whether there are unsaved changes\n    hasUnsavedChanges: boolean;\n    lastChangeTime: number;\n    // Whether currently saving\n    isSaving: boolean;\n    // Currently edited dashboard\n    currentDashboard: Dashboard | null;\n    currentDashboardId: string;\n    // Layout configuration\n    layouts: LayoutItem[];\n    // Chart refresh triggers: each chart has its own trigger counter and query params\n    chartRefreshTriggers: Record<string, ChartRefreshInfo>;\n    queryComponentParams: Record<string, DatePickerValue>;\n    // history\n    history: HistoryState;\n\n    undo: () => void;\n    redo: () => void;\n    saveSnapshot: () => void;\n    // Set modification state\n    setHasUnsavedChanges: (value: boolean) => void;\n    // Set saving state\n    setIsSaving: (value: boolean) => void;\n    // Set current dashboard\n    setCurrentDashboard: (dashboard: Dashboard | null) => void;\n    setCurrentDashboardId: (id: string) => void;\n    updateCurrentDashboard: (dashboard: Dashboard) => void;\n    // Update layout configuration\n    setLayouts: (layouts: LayoutItem[]) => void;\n    // Add component to layout\n    addComponentToLayout: (component: { title: string, type: ChartType }) => void;\n    // Remove component from layout\n    removeComponentFromLayout: (componentId: string) => void;\n    // Update component\n    updateComponent: (componentId: string, data: Partial<DashboardComponent>) => void;\n    // Duplicate component\n    duplicateComponent: (component: DashboardComponent) => void;\n    // Delete component\n    deleteComponent: (componentId: string) => void;\n    // Refresh a single chart\n    refreshChart: (chartId: string) => void;\n    // Refresh charts linked to a query component\n    refreshChartsByQuery: (queryComponent: DashboardComponent, filter: DatePickerValue) => void;\n    // Refresh all charts\n    // refreshAllCharts: () => void;\n    // Initialize auto-refresh on load\n    initializeAutoRefresh: () => void;\n    // Reset state\n    reset: () => void;\n    setQueryComponentParams: (id: string, params: DatePickerValue) => void;\n}\n\nlet isInternalOperation = false; // Flag to prevent snapshot loops\nexport const useEditorDashboardStore = create<EditorState>((set, get) => ({\n    hasUnsavedChanges: false,\n    lastChangeTime: 0,\n    isSaving: false,\n    currentDashboard: null,\n    currentDashboardId: '',\n    layouts: [],\n    chartRefreshTriggers: {},\n    queryComponentParams: {},\n    // Initialize history stacks\n    history: {\n        past: [],\n        future: []\n    },\n\n    setHasUnsavedChanges: (value) => set({ hasUnsavedChanges: value }),\n    setIsSaving: (value) => set({ isSaving: value }),\n    setCurrentDashboard: (dashboard) => {\n        set({\n            currentDashboard: dashboard,\n            layouts: dashboard?.layout_config?.layouts || [],\n            chartRefreshTriggers: {} // Reset triggers when dashboard changes\n        })\n    },\n    setCurrentDashboardId: (id) => set({ currentDashboardId: id }),\n    updateCurrentDashboard: (dashboard) => {\n        const { currentDashboard } = get()\n        if (!currentDashboard) {\n            set({ currentDashboard: dashboard })\n            return\n        }\n        const newDashboard = {\n            ...dashboard,\n            components: dashboard.components === currentDashboard.components\n                ? currentDashboard.components\n                : dashboard.components\n        }\n\n        set({ currentDashboard: newDashboard })\n    },\n    setLayouts: (newLayouts) => {\n        const { layouts, saveSnapshot } = get()\n        // This prevents double snapshots from ReactGridLayout callbacks\n        if (isInternalOperation || isEqual(layouts, newLayouts)) {\n            set({ layouts: newLayouts })\n            return\n        }\n\n        debugLog('layouts')\n\n        saveSnapshot();\n        set({\n            layouts: newLayouts,\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n    },\n    addComponentToLayout: (component) => {\n        const { layouts, saveSnapshot } = get()\n        saveSnapshot()\n        const componentId = generateUUID(6);\n        // 计算新组件的位置\n        const maxY = layouts.length > 0 ? Math.max(...layouts.map(l => l.y + l.h)) : 0\n        const newLayout: LayoutItem = {\n            i: componentId,\n            x: 0,\n            y: maxY,\n            w: ChartType.Metric === component.type ? 4 : 8,\n            h: [ChartType.Query, ChartType.Metric].includes(component.type) ? 3 : 8,\n            minW: ChartType.Query === component.type ? 7 : 3,\n            minH: [ChartType.Query, ChartType.Metric].includes(component.type) ? 2 : 5,\n            maxH: 24,\n            maxW: 24\n        }\n\n        debugLog('addComponent')\n        set({\n            layouts: [...layouts, newLayout],\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now(),\n            currentDashboard: {\n                ...get().currentDashboard!,\n                components: [...get().currentDashboard!.components, {\n                    ...component,\n                    id: componentId,\n                    dashboard_id: get().currentDashboard?.id || '',\n                    dataset_code: '',\n                    data_config: createDefaultDataConfig(component.type),\n                    style_config: component.type === ChartType.Metric ? getDefaultMetricStyle('', '') : {},\n                    create_time: '',\n                    update_time: ''\n                }]\n            }\n        })\n        useComponentEditorStore.getState().copyFromDashboard(componentId)\n\n        isInternalOperation = true\n        setTimeout(() => isInternalOperation = false, 100)\n    },\n    removeComponentFromLayout: (componentId) => {\n        const { layouts, saveSnapshot } = get()\n        saveSnapshot()\n\n        debugLog('removeComponent')\n        set({\n            layouts: layouts.filter(l => l.i !== componentId),\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n\n        isInternalOperation = true\n        setTimeout(() => isInternalOperation = false, 100)\n    },\n    // Update component in the current dashboard\n    updateComponent: (componentId: string, data: Partial<DashboardComponent>) => {\n        const { currentDashboard } = get()\n        if (!currentDashboard) {\n            console.warn('updateComponent: currentDashboard is null')\n            return\n        }\n\n        const updatedComponents = currentDashboard.components.map(c => {\n            if (c.id === componentId) {\n                const updated = { ...c, ...data }\n                return updated\n            }\n            return c\n        })\n\n        debugLog('updateComponent')\n\n        set({\n            currentDashboard: {\n                ...currentDashboard,\n                components: updatedComponents\n            },\n            // hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n    },\n    // Duplicate component\n    duplicateComponent: (component: DashboardComponent) => {\n        get().saveSnapshot();\n\n        const { currentDashboard, layouts } = get()\n\n        const layoutItem = layouts.find((l) => l.i === component.id)\n        // Create new component\n        const newComponentId = generateUUID(6)\n        const newComponent: DashboardComponent = {\n            ...component,\n            id: newComponentId,\n            create_time: '',\n            update_time: ''\n        }\n        // Calculate position below the original component\n        const newLayoutItem: LayoutItem = {\n            ...layoutItem,\n            i: newComponentId,\n            y: layoutItem.y + layoutItem.h\n        }\n\n        debugLog('copyComponent')\n        set({\n            currentDashboard: {\n                ...currentDashboard,\n                components: [...currentDashboard.components, newComponent]\n            },\n            layouts: [...layouts, newLayoutItem],\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n\n        isInternalOperation = true\n        setTimeout(() => isInternalOperation = false, 100)\n    },\n    // Delete component\n    deleteComponent: (componentId: string) => {\n        const { currentDashboard, layouts } = get()\n        if (!currentDashboard) return\n        get().saveSnapshot();\n\n        debugLog('deleteComponent')\n        set({\n            currentDashboard: {\n                ...currentDashboard,\n                components: currentDashboard.components.filter(c => c.id !== componentId)\n            },\n            layouts: layouts.filter(l => l.i !== componentId),\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n\n        isInternalOperation = true\n        setTimeout(() => isInternalOperation = false, 100)\n    },\n\n    // Refresh a single chart by incrementing its trigger counter\n    refreshChart: (chartId: string) => {\n        const { currentDashboard, chartRefreshTriggers } = get()\n        if (!currentDashboard) return\n\n        // Find all query components associated with this chart \n        // const linkedQueryComponents = currentDashboard.components.filter(component => {\n        //     if (component.type === 'query') {\n        //         const queryConfig = component.data_config as QueryConfig\n        //         return queryConfig.linkedComponentIds?.includes(chartId)\n        //     }\n        //     return false\n        // })\n\n        // Extract query parameters\n        // const queryParams = linkedQueryComponents.map(queryComponent => {\n        //     const queryConfig = queryComponent.data_config as QueryConfig\n        //     return {\n        //         queryComponentId: queryComponent.id,\n        //         queryConditions: queryConfig.queryConditions\n        //     }\n        // })\n\n        const currentInfo = chartRefreshTriggers[chartId] || { trigger: 0, queryParams: [] }\n        set({\n            chartRefreshTriggers: {\n                ...chartRefreshTriggers,\n                [chartId]: {\n                    trigger: currentInfo.trigger + 1,\n                    queryParams: []\n                }\n            }\n        })\n    },\n\n    setQueryComponentParams: (id, params) => set((state) => ({\n        queryComponentParams: {\n            ...state.queryComponentParams,\n            [id]: params\n        }\n    })),\n    // Refresh all charts linked to a query component\n    refreshChartsByQuery: (queryComponent: DashboardComponent, filter: DatePickerValue) => {\n        const { currentDashboard, chartRefreshTriggers, queryComponentParams } = get()\n        if (!currentDashboard) return\n\n        // Find the query component\n        if (!queryComponent || queryComponent.type !== 'query') return\n\n        const queryConfig = queryComponent.data_config as QueryConfig\n        const linkedChartIds = queryConfig.linkedComponentIds || []\n        // test all components\n        // const linkedChartIds = currentDashboard.components.map(e => e.id)\n\n        // Prepare query parameters (from the current query component)\n        const currentQueryParams = [{\n            queryComponentId: queryComponent.id,\n            queryComponentParams: filter\n        }]\n\n        // Increment trigger for each linked chart and attach query params\n        const updatedTriggers = { ...chartRefreshTriggers }\n        linkedChartIds.forEach(chartId => {\n            // Get other query components that are also associated with this chart\n            const otherLinkedQueries = currentDashboard.components.filter(component => {\n                if (component.type === 'query' && component.id !== queryComponent.id) {\n                    const config = component.data_config as QueryConfig\n                    return config.linkedComponentIds?.includes(chartId)\n                }\n                return false\n            })\n\n            // Combine all query parameters \n            const allQueryParams = [\n                ...currentQueryParams,\n                ...otherLinkedQueries.map(qc => ({\n                    queryComponentId: qc.id,\n                    queryComponentParams: queryComponentParams[qc.id]\n                }))\n            ]\n\n            const currentInfo = updatedTriggers[chartId] || { trigger: 0, queryParams: [] }\n            updatedTriggers[chartId] = {\n                trigger: currentInfo.trigger + 1,\n                queryParams: allQueryParams\n            }\n        })\n\n        set({ chartRefreshTriggers: updatedTriggers })\n    },\n\n    // Refresh all chart components (excluding query components)\n    // refreshAllCharts: () => {\n    //     const { currentDashboard, chartRefreshTriggers } = get()\n    //     if (!currentDashboard) return\n\n    //     const updatedTriggers = { ...chartRefreshTriggers }\n    //     currentDashboard.components.forEach(component => {\n    //         // Refresh all non-query components\n    //         if (component.type !== 'query') {\n    //             // Find all query components associated with this chart \n    //             const linkedQueryComponents = currentDashboard.components.filter(qc => {\n    //                 if (qc.type === 'query') {\n    //                     const queryConfig = qc.data_config as QueryConfig\n    //                     return queryConfig.linkedComponentIds?.includes(component.id)\n    //                 }\n    //                 return false\n    //             })\n\n    //             // Extract query parameters\n    //             const queryParams = linkedQueryComponents.map(qc => ({\n    //                 queryComponentId: qc.id,\n    //                 queryConditions: (qc.data_config as QueryConfig).queryConditions\n    //             }))\n\n    //             const currentInfo = updatedTriggers[component.id] || { trigger: 0, queryParams: [] }\n    //             updatedTriggers[component.id] = {\n    //                 trigger: currentInfo.trigger + 1,\n    //                 queryParams\n    //             }\n    //         }\n    //     })\n\n    //     set({ chartRefreshTriggers: updatedTriggers })\n    // },\n\n    // Initialize auto-refresh based on query component configuration\n    initializeAutoRefresh: () => {\n        const { currentDashboard, chartRefreshTriggers } = get()\n        if (!currentDashboard) return\n\n        const updatedTriggers = { ...chartRefreshTriggers }\n\n        // Build a mapping from chart ID to query component \n        const chartToQueriesMap: Record<string, any[]> = {}\n\n        // Find all query components\n        currentDashboard.components.forEach(component => {\n            if (component.type === 'query') {\n                const queryConfig = component.data_config as QueryConfig\n                if (queryConfig.linkedComponentIds) {\n                    const queryParam = {\n                        queryComponentId: component.id,\n                        queryConditions: queryConfig.queryConditions\n                    }\n\n                    // Add query parameters to each associated chart\n                    queryConfig.linkedComponentIds.forEach(chartId => {\n                        if (!chartToQueriesMap[chartId]) {\n                            chartToQueriesMap[chartId] = []\n                        }\n                        chartToQueriesMap[chartId].push(queryParam)\n                    })\n                }\n            }\n        })\n\n        // other components\n        currentDashboard.components.forEach(component => {\n            if (component.type !== 'query' && !chartToQueriesMap[component.id]) {\n                chartToQueriesMap[component.id] = []\n            }\n        })\n\n        // Set refresh information for each chart \n        Object.entries(chartToQueriesMap).forEach(([chartId, queryParams]) => {\n            const currentInfo = updatedTriggers[chartId] || { trigger: 0, queryParams: [] }\n            updatedTriggers[chartId] = {\n                trigger: currentInfo.trigger + 1,\n                queryParams\n            }\n        })\n\n        set({ chartRefreshTriggers: updatedTriggers })\n    },\n\n    reset: () => set({\n        hasUnsavedChanges: false,\n        isSaving: false,\n        currentDashboard: null,\n        layouts: [],\n        chartRefreshTriggers: {},\n        history: { past: [], future: [] }\n    }),\n\n    // Save a snapshot of the current state before an action occurs\n    saveSnapshot: () => {\n        const { currentDashboard, layouts, history } = get()\n        // Prevent recording if the change was triggered by Undo/Redo\n        if (isInternalOperation || !currentDashboard) return\n\n        // Use structuredClone for deep copy to prevent reference sharing\n        const snapshot = {\n            currentDashboard: cloneDeep(currentDashboard),\n            layouts: cloneDeep(layouts)\n        }\n\n        set({\n            history: {\n                // Keep the last 50 steps to prevent memory issues\n                past: [...history.past, snapshot].slice(-50),\n                future: [] // Clear future when a new action is performed\n            }\n        })\n    },\n\n    undo: () => {\n        const { history, currentDashboard, layouts } = get()\n        if (history.past.length === 0) return\n\n        const previous = history.past[history.past.length - 1]\n        const newPast = history.past.slice(0, -1)\n\n        isInternalOperation = true\n        // Store current state in future stack for redo\n        const currentSnapshot = {\n            currentDashboard: cloneDeep(currentDashboard),\n            layouts: cloneDeep(layouts)\n        }\n\n        set({\n            currentDashboard: previous.currentDashboard,\n            layouts: previous.layouts,\n            history: {\n                past: newPast,\n                future: [currentSnapshot, ...history.future]\n            },\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n        setTimeout(() => isInternalOperation = false, 100)\n    },\n\n    redo: () => {\n        const { history, currentDashboard, layouts } = get()\n        if (history.future.length === 0) return\n\n        const next = history.future[0]\n        const newFuture = history.future.slice(1)\n\n        isInternalOperation = true\n        // Store current state in past stack for undo\n        const currentSnapshot = {\n            currentDashboard: cloneDeep(currentDashboard),\n            layouts: cloneDeep(layouts)\n        }\n\n        set({\n            currentDashboard: next.currentDashboard,\n            layouts: next.layouts,\n            history: {\n                past: [...history.past, currentSnapshot],\n                future: newFuture\n            },\n            hasUnsavedChanges: true,\n            lastChangeTime: Date.now()\n        })\n        setTimeout(() => isInternalOperation = false, 100)\n    }\n}))\n\nexport interface CollapseSections {\n    color: boolean;\n    title: boolean;\n    axis: boolean;\n    legend: boolean;\n    chartOptions: boolean;\n}\n// Shadow Component Editor Store\ninterface ComponentEditorState {\n    // The \"Shadow\" state: stores a copy of the component currently being edited\n    editingComponent: DashboardComponent | null;\n    hasChange: boolean;\n\n    // Internal helper to push changes to the main store\n    _internalSync: () => void;\n    collapsedSections: {\n        color: boolean;\n        title: boolean;\n        axis: boolean;\n        legend: boolean;\n        chartOptions: boolean;\n    };\n\n    componentCollapseStates: Record<string, {\n        color: boolean;\n        title: boolean;\n        axis: boolean;\n        legend: boolean;\n        chartOptions: boolean;\n    }>;\n\n    // Public methods\n    updateEditingComponent: (data: Partial<DashboardComponent>) => void;\n    saveComponentCollapseState: (componentId: string) => void;\n    loadComponentCollapseState: (componentId: string) => void;\n    /**\n     * Entry Point: Triggered when clicking a chart.\n     * Checks if a previous draft exists, saves it if necessary, \n     * then clones the new component.\n     */\n    copyFromDashboard: (componentId: string) => void;\n\n    /**\n     * Exit Point: Saves any remaining changes and resets the shadow state.\n     */\n    clear: (force?: boolean) => void;\n}\nexport const useComponentEditorStore = create<ComponentEditorState>((set, get) => ({\n    editingComponent: null,\n    hasChange: false,\n\n    collapsedSections: {\n        color: false,\n        title: true,\n        axis: true,\n        legend: true,\n        chartOptions: false\n    },\n    componentCollapseStates: {},\n\n    _internalSync: () => {\n        const { hasChange, editingComponent } = get();\n        if (hasChange && editingComponent) {\n            const dashboardStore = useEditorDashboardStore.getState();\n            dashboardStore.updateComponent(editingComponent.id, editingComponent);\n        }\n    },\n\n    updateEditingComponent: (data) => {\n        const { editingComponent } = get();\n        if (editingComponent) {\n            set({\n                editingComponent: { ...editingComponent, ...data },\n                hasChange: true\n            });\n            useEditorDashboardStore.getState().setHasUnsavedChanges(true);\n        }\n    },\n\n    setCollapsedSection: (section, collapsed) => {\n        const { editingComponent } = get();\n\n        set(state => ({\n            collapsedSections: {\n                ...state.collapsedSections,\n                [section]: collapsed\n            }\n        }));\n\n        if (editingComponent) {\n            get().saveComponentCollapseState(editingComponent.id);\n        }\n    },\n\n    saveComponentCollapseState: (componentId: string) => {\n        const { collapsedSections } = get();\n\n        set(state => ({\n            componentCollapseStates: {\n                ...state.componentCollapseStates,\n                [componentId]: { ...collapsedSections }\n            }\n        }));\n    },\n\n    loadComponentCollapseState: (componentId: string) => {\n        const { componentCollapseStates } = get();\n        const savedState = componentCollapseStates[componentId];\n\n        if (savedState) {\n            set({ collapsedSections: { ...savedState } });\n        } else {\n            set({\n                collapsedSections: {\n                    color: false,\n                    title: true,\n                    axis: true,\n                    legend: true,\n                    chartOptions: false\n                }\n            });\n        }\n    },\n\n    resetCollapsedSections: () => {\n        set({\n            collapsedSections: {\n                color: false,\n                title: true,\n                axis: true,\n                legend: true,\n                chartOptions: false\n            }\n        });\n    },\n\n    copyFromDashboard: (componentId: string) => {\n        const { editingComponent, _internalSync } = get();\n        const dashboardStore = useEditorDashboardStore.getState();\n\n        // 1. If there is an existing draft, save it first\n        if (editingComponent) {\n            _internalSync();\n            get().saveComponentCollapseState(editingComponent.id);\n        }\n\n        // 2. Find the new component to edit\n        const nextComponent = dashboardStore.currentDashboard?.components.find(\n            (c) => c.id === componentId\n        );\n\n        if (nextComponent) {\n            // 3. Create a deep copy for the shadow state\n            const deepCopy = JSON.parse(JSON.stringify(nextComponent)) as DashboardComponent;\n\n            get().loadComponentCollapseState(componentId);\n\n            set({\n                editingComponent: deepCopy,\n                hasChange: false\n            });\n        }\n    },\n\n    clear: (force) => {\n        const { editingComponent, _internalSync } = get();\n        if (!editingComponent) return;\n\n        // Save pending changes before closing\n        if (!force && editingComponent) {\n            _internalSync();\n            get().saveComponentCollapseState(editingComponent.id);\n        }\n\n        set({\n            editingComponent: null,\n            hasChange: false,\n            collapsedSections: {\n                color: false,\n                title: true,\n                axis: true,\n                legend: true,\n                chartOptions: false\n            }\n        });\n    },\n}));\n\nconst debugLog = (msg: string) => {\n    // console.log('【savechange】 :>> ', msg);\n}"
  },
  {
    "path": "src/frontend/platform/src/store/diffFlowStore.tsx",
    "content": "/**\n * 技能组件版本效果对比\n */\nimport { generateUUID } from \"@/components/bs-ui/utils\"\nimport { getVersionDetails, runTestCase } from \"@/controllers/API/flow\"\nimport { captureAndAlertRequestErrorHoc } from \"@/controllers/request\"\nimport { create } from \"zustand\"\n\nconst enum RunningType {\n    /** 全量对比 */\n    All = 'all',\n    /** 列对比 */\n    Col = 'col',\n    /** 行对比 */\n    Row = 'row',\n    /** 无对比 */\n    None = ''\n}\n\ntype State = {\n    mulitVersionFlow: any[],\n    /** 用例问题列表 */\n    questions: { id: string, q: string, ready: boolean }[],\n    /** 运行过一次 */\n    running: boolean,\n    /** 测试运行按钮状态 */\n    runningType: RunningType,\n    /** 版本运行按钮状态 */\n    readyVersions: { [verstion in string]: boolean }\n    /** 单元格ref */\n    cellRefs: { [key in string]: any }\n}\n\ntype Actions = {\n    /** 初始化版本技能 */\n    initFristVersionFlow(versionId: string): void,\n    /** 添加空的对比版本 */\n    addEmptyVersionFlow(): void,\n    /** 添加对比版本技能 */\n    addVersionFlow(versionId: string, index: number): void,\n    /** 移除对比版本技能 */\n    removeVersionFlow(index: number): void,\n    /** 更新版本运行状态 */\n    // updateReadyVersions(version: string): void,\n    /** 上传覆盖问题列表 */\n    overQuestions(list: string[]): void,\n    /** 添加问题 */\n    addQuestion(q: string): void\n}\n\nexport const useDiffFlowStore = create<State & Actions>((set, get) => ({\n    mulitVersionFlow: [],\n    questions: [],\n    readyVersions: {},\n    running: false,\n    runningType: RunningType.None,\n    cellRefs: {},\n    initFristVersionFlow(versionId) {\n        getVersionDetails(versionId).then(version => {\n            set({\n                mulitVersionFlow: [version, null],\n                questions: [],\n                readyVersions: {},\n                running: false,\n                runningType: RunningType.None,\n                cellRefs: {},\n            })\n        })\n    },\n    addEmptyVersionFlow() {\n        set((state) => ({ mulitVersionFlow: [...state.mulitVersionFlow, null] }))\n    },\n    addVersionFlow(versionId, index) {\n        const { running, readyVersions } = get()\n        // 标记可运行状态\n        if (running) {\n            set({ readyVersions: { ...readyVersions, [versionId]: true } })\n        }\n\n        getVersionDetails(versionId).then(version => {\n            set((state) => {\n                // 填充flow\n                state.mulitVersionFlow[index] = version\n                return { mulitVersionFlow: [...state.mulitVersionFlow] }\n            })\n        })\n    },\n    removeVersionFlow(index) {\n        set((state) => ({\n            mulitVersionFlow:\n                state.mulitVersionFlow.filter((_, i) => i !== index)\n        }))\n    },\n    // updateReadyVersions(version) {\n    //     if (get().running) {\n    //         set((state) => ({\n    //             readyVersions: {\n    //                 ...state.readyVersions,\n    //                 [version]: true\n    //             }\n    //         }))\n    //     }\n    // },\n    overQuestions(list) {\n        set(() => ({\n            questions: list.splice(0, 20).map(q => ({\n                id: generateUUID(5),\n                q,\n                ready: get().running\n            }))\n        }))\n    },\n    addQuestion(q) {\n        set((state) => ({\n            questions: [...state.questions, { q, id: generateUUID(5), ready: get().running }]\n        }))\n    },\n    updateQuestion(q, index) {\n        set((state) => ({\n            questions: state.questions.map((el, i) => i === index ? { ...el, q, ready: get().running } : el)\n        }))\n    },\n    removeQuestion(index) {\n        set((state) => ({\n            questions: state.questions.filter((_, i) => i !== index)\n        }))\n    },\n    addCellRef: (key, ref) => {\n        set(state => {\n            return { cellRefs: { ...state.cellRefs, [key]: ref } };\n        })\n    },\n    removeCellRef: (key) => set(state => {\n        const newCellRefs = { ...state.cellRefs }\n        delete newCellRefs[key]\n        return { cellRefs: newCellRefs };\n    }),\n    async allRunStart(nodeId, inputs) {\n        set((state) => ({\n            readyVersions: {},\n            questions: state.questions.map(el => ({ ...el, ready: false })),\n            runningType: RunningType.All,\n            running: true\n        }))\n        const questions = get().questions\n        const versions = get().mulitVersionFlow\n\n        await runTest({\n            questions,\n            questionIndexs: questions.map((_, index) => index),\n            versionIds: versions.filter(el => el).map(version => version?.id),\n            nodeId,\n            inputs,\n            refs: get().cellRefs\n        })\n        set({ runningType: RunningType.None })\n    },\n    async rowRunStart(qIndex, nodeId, inputs) {\n        set((state) => ({\n            questions: state.questions.map((el, i) => qIndex === i ? { ...el, ready: false } : el),\n            runningType: RunningType.Row\n        }))\n        const questions = get().questions\n        const versions = get().mulitVersionFlow\n\n        await runTest({\n            questions,\n            questionIndexs: [qIndex],\n            versionIds: versions.filter(el => el).map(version => version?.id),\n            nodeId,\n            inputs,\n            refs: get().cellRefs\n        })\n        set({ runningType: RunningType.None })\n    },\n    async colRunStart(versionId, nodeId, inputs) {\n        set((state) => ({\n            readyVersions: { ...state.readyVersions, [versionId]: false },\n            runningType: RunningType.Col\n        }))\n        const questions = get().questions\n\n        await runTest({\n            questions,\n            questionIndexs: questions.map((_, index) => index),\n            versionIds: [versionId],\n            nodeId,\n            inputs,\n            refs: get().cellRefs\n        })\n        set({ runningType: RunningType.None })\n    }\n}))\n\n\n/**\n * 运行测试用例\n * @param questions 所有问题列表\n * @param questionIndexs 问题索引\n * @param nodeId 节点id\n * @param versionIds 版本id\n * @param refs 单元格ref\n */\nconst runTest = ({ questions, questionIndexs, nodeId, versionIds, inputs, refs }) => {\n    // loading\n    const runIds = []\n    questionIndexs.forEach(qIndex => {\n        versionIds.forEach(versionId => {\n            refs[`${qIndex}-${versionId}`].current.loading()\n            runIds.push(`${qIndex}-${versionId}`)\n        })\n    });\n    // 运行\n    const data = JSON.stringify({\n        question_list: questionIndexs.map(qIndex => questions[qIndex].q),\n        version_list: versionIds,\n        inputs,\n        node_id: nodeId\n    })\n\n    return new Promise((resolve, reject) => {\n        const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/flows/compare/stream?data=${encodeURIComponent(data)}`;\n        const eventSource = new EventSource(apiUrl);\n\n        eventSource.onmessage = (event) => {\n            if (!event.data) {\n                return;\n            }\n            const parsedData = JSON.parse(event.data);\n            const { type, question_index, version_id, answer } = parsedData;\n            if (!type) {\n                refs[`${questionIndexs[question_index]}-${version_id}`].current.setData(answer)\n            } else if (type === 'end') {\n                resolve('')\n            }\n        }\n\n        eventSource.onerror = (error: any) => {\n            console.error('event :>> ', error);\n            eventSource.close();\n            runIds.forEach(id => {\n                refs[id].current.loaded()\n            })\n\n            reject(error);\n        }\n    })\n    // runTestCaseStream()\n    // return captureAndAlertRequestErrorHoc(runTestCase({\n    //     question_list: questionIndexs.map(qIndex => questions[qIndex].q),\n    //     version_list: versionIds,\n    //     inputs,\n    //     node_id: nodeId\n    // }).then(data => {\n    //     data.forEach((row, rowIndex) => {\n    //         Object.keys(row).forEach(vId => {\n    //             refs[`${questionIndexs[rowIndex]}-${vId}`].current.setData(row[vId])\n    //         })\n    //     })\n    // }), () => {\n    //     // error callback\n    //     runIds.forEach(id => {\n    //         refs[id].current.loaded()\n    //     })\n    // })\n}"
  },
  {
    "path": "src/frontend/platform/src/store/editFlowStore.tsx",
    "content": "import { create } from 'zustand'\nimport cloneDeep from \"lodash-es/cloneDeep\";\n\n/**\n * 流程编排管理\n */\n\ntype State = {\n    /** 流程对象 */\n    originFlow: any\n    /** clone flow,用于保存前的编辑对象 */\n    flow: any\n    /** 序列化的 flow, 用来对比是否修改 */\n    serializedFlow: string\n    /** 正在编辑的流程节点 */\n    eidtFlowNode: any\n}\n\ntype Actions = {\n    /** 切换技能重新加载flow数据 */\n    loadFlow: (flowId: string) => void\n}\n\ntype Action = ''\n\nconst assistantReducer = (state: State, action: Action, data: any) => {\n    console.log('action :>> ', action, data);\n    //   return { changed: true, assistantState: { ...state.assistantState, ...data } }\n    // switch (action) {\n    //   case 'setBaseInfo':\n    //     return { assistantState: { ...state.assistantState, ...data } }\n    //   default:\n    //     return state\n    // }\n}\n\nconst temp = {}\n\nexport const useEditFlowStore = create<State & Actions>((set, get) => ({\n    originFlow: null,\n    flow: null,\n    serializedFlow: '',\n    eidtFlowNode: null,\n    loadFlow(id) {\n        const { flow } = get()\n        // 相同的 flow不再加载\n        if (id && flow?.id !== id) {\n            // getFlowApi(id).then(_flow => setFlow('flow_init', _flow))\n            const originFlow = { ...temp }\n            set({ originFlow: originFlow, flow: cloneDeep(originFlow), serializedFlow: JSON.stringify(originFlow) })\n        }\n    }\n}))"
  },
  {
    "path": "src/frontend/platform/src/style/applies.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n\n  #root {\n    @apply font-sans;\n  }\n\n  body {\n    @apply bg-background text-foreground;\n    font-feature-settings: \"rlig\" 1, \"calt\" 1;\n  }\n    ::-webkit-scrollbar-thumb {\n    background-color: transparent;\n  }\n\n  \n  *:hover::-webkit-scrollbar-thumb {\n    background-color: rgba(156, 163, 175, 0.5); /* gray-400 with opacity */\n    border-radius: 9999px;\n  }\n\n  /* Firefox */\n  * {\n    scrollbar-width: thin;\n    scrollbar-color: transparent transparent;\n  }\n\n  *:hover {\n    scrollbar-color: rgb(156 163 175 / 0.5) transparent;\n  }\n}\n\n\n@layer components {\n  .no-scrollbar::-webkit-scrollbar {\n    display: none;\n  }\n  .no-scrollbar {\n      -ms-overflow-style: none;  /* IE and Edge */\n      scrollbar-width: none;  /* Firefox */\n  }\n  .template-scrollbar {\n    @apply overflow-y-auto max-h-[51vh] no-scrollbar\n  }\n  .round-buttons-position {\n    @apply fixed right-4\n  }\n  .side-bar-arrangement {\n    @apply flex h-full w-52 flex-col overflow-hidden scrollbar-hide;\n    box-shadow: 1px 0 2px #eee; /* me */\n  }\n  .side-bar-search-div-placement {\n    @apply relative mx-auto mb-2 mt-2 flex items-center\n  }\n  .side-bar-components-icon {\n    @apply h-6 w-4 text-ring\n  }\n  .side-bar-components-text {\n    @apply w-full truncate pr-1 text-xs text-foreground\n  }\n  .side-bar-components-div-form {\n    @apply flex w-full items-center justify-between rounded-md rounded-l-none border border-l-0 border-dashed border-ring  bg-white px-3 py-1 text-sm\n  }\n  .side-bar-components-border {\n    @apply cursor-grab rounded-l-md border-l-8\n  }\n  .side-bar-components-gap {\n    @apply flex flex-col gap-2 p-2\n  }\n  .side-bar-components-div-arrangement {\n    @apply w-full overflow-auto scrollbar-hide\n  }\n  .search-icon {\n    @apply absolute inset-y-0 right-0 flex items-center py-1.5 pr-5\n  }\n  .extra-side-bar-save-disable {\n    @apply text-muted-foreground\n  }\n  .extra-side-bar-save-disable:hover {\n    @apply hover:text-accent-foreground\n  }\n  .side-bar-button-size {\n    @apply h-5 w-5\n  }\n  .side-bar-button-size:hover {\n    @apply hover:text-accent-foreground\n  }\n  .side-bar-buttons-arrangement {\n    @apply mb-2 mt-2 flex w-full items-center justify-between gap-2 px-2\n  }\n  .extra-side-bar-buttons {\n    @apply relative inline-flex w-full items-center justify-center rounded-full bg-background px-2 py-2 text-foreground shadow-sm ring-1 ring-inset ring-input transition-all duration-500 ease-in-out\n  }\n  .extra-side-bar-buttons:hover {\n    @apply hover:bg-muted\n  }\n  .button-div-style {\n    @apply gap-2 flex\n  }\n  .input-primary:focus{\n    @apply focus:placeholder-transparent focus:ring-ring focus:border-ring\n  }\n  .input-primary {\n    @apply bg-background block border-border form-input px-3 placeholder:text-muted-foreground rounded-md shadow-sm sm:text-sm truncate w-full;\n  }\n\n  .input-edit-node{\n    @apply input-primary border-border placeholder:text-center pt-0.5 pb-0.5 text-center\n  }\n  .input-search{\n    @apply input-primary pr-7 mx-2\n  }\n  .input-disable{\n    @apply bg-border placeholder:text-ring border-transparent\n  }\n  .input-dialog{\n    @apply text-ring cursor-pointer bg-transparent\n  }\n  .message-button {\n    @apply message-button-position flex h-12 w-12 items-center justify-center rounded-full bg-border px-3 py-1 shadow-md transition-all\n  }\n  \n  .round-button-form {\n    @apply flex h-12 w-12 cursor-pointer justify-center rounded-full bg-border px-3 py-1 shadow-md\n  }\n  .round-button-div {\n    @apply flex items-center gap-3\n  }\n  .build-trigger-loading-icon {\n    @apply stroke-build-trigger\n  }\n  .build-trigger-icon {\n    @apply w-6 fill-build-trigger stroke-1 stroke-build-trigger\n  }\n  .message-button-position {\n    @apply fixed bottom-4 right-4\n  }\n  .message-button-icon {\n    @apply fill-chat-trigger stroke-chat-trigger stroke-1\n  }\n  .disabled-message-button-icon {\n    @apply fill-chat-trigger-disabled stroke-chat-trigger-disabled stroke-1\n  }\n  .components-disclosure-arrangement {\n    @apply -mt-px flex w-full select-none items-center justify-between px-3 py-2 bg-white dark:bg-gray-950;\n    border: none;\n    box-shadow: 0 1px 10px 0 #eee;\n    margin-bottom: 2px;\n    border-radius: 0 4px 22px 0;\n  }\n  .components-disclosure-arrangement:hover {\n    @apply bg-muted transition-colors\n  }\n  .components-disclosure-title {\n    @apply flex items-center text-xs break-keep\n  }\n  .components-disclosure-div {\n    @apply flex gap-2\n  }\n  .flow-page-positioning {\n    @apply h-full w-full overflow-hidden\n  }\n  .logspace-page-icon {\n    @apply absolute bottom-2 left-7 flex h-6 cursor-pointer flex-col items-center justify-start overflow-hidden rounded-lg bg-foreground px-2 text-center font-sans text-xs tracking-wide text-secondary transition-all duration-500 ease-in-out\n  }\n\n  .logspace-page-icon:hover {\n    @apply hover:h-12\n  }\n  \n  .flex-max-width {\n    @apply flex w-full\n  }\n\n  .main-page-panel {\n    @apply flex-max-width h-full flex-col overflow-auto bg-muted px-16\n  }\n\n  .main-page-nav-arrangement {\n    @apply flex-max-width justify-between px-6 py-12 pb-2\n  }\n\n  .main-page-nav-title {\n    @apply flex items-center justify-center gap-2 text-2xl font-semibold\n  }\n\n  .main-page-nav-button {\n    @apply mr-2 w-4\n  }\n\n  .main-page-description-text {\n    @apply flex w-[60%] px-6 pb-14 text-muted-foreground\n  }\n\n  .main-page-flows-display {\n    @apply grid w-full gap-4 p-4 md:grid-cols-2 lg:grid-cols-4\n  }\n\n  .community-page-arrangement {\n    @apply flex-max-width h-full flex-col overflow-auto bg-muted px-16\n  }\n\n  .community-page-nav-arrangement {\n    @apply flex-max-width justify-between px-6 py-12 pb-2\n  }\n\n  .community-page-nav-title {\n    @apply flex items-center justify-center gap-2 text-2xl font-semibold\n  }\n\n  .community-page-nav-button {\n    @apply flex gap-2\n  }\n\n  .community-page-description-text {\n    @apply flex w-[70%] px-6 pb-8 text-muted-foreground \n  }\n\n  .community-pages-flows-panel {\n    @apply grid w-full gap-4 p-4 md:grid-cols-2 lg:grid-cols-4\n  }\n  .generic-node-div {\n    @apply relative flex w-96 flex-col justify-center rounded-3xl bg-background\n  }\n  .generic-node-div-title {\n    @apply flex w-full items-center justify-between gap-8 rounded-t-3xl border-b bg-muted p-4\n  }\n  .generic-node-title-arrangement {\n    @apply flex-max-width items-center truncate\n  }\n  .generic-node-icon {\n    @apply h-10 w-10 rounded p-1\n  }\n  .generic-node-tooltip-div {\n    @apply ml-2 truncate\n  }\n  .generic-node-validation-div {\n    @apply max-h-96 overflow-auto\n  }\n\n  .generic-node-status-position {\n    @apply relative top-[3px] h-5 w-5\n  }\n\n  .generic-node-status-animation {\n    @apply hidden h-4 w-4 animate-spin rounded-full bg-ring opacity-0\n  }\n  .generic-node-status {\n    @apply h-4 w-4 rounded-full opacity-100\n  }\n  .green-status {\n    @apply generic-node-status bg-status-green\n  }\n  .red-status {\n    @apply generic-node-status bg-status-red\n  }\n  .yellow-status {\n    @apply generic-node-status bg-status-yellow\n  }\n  .status-build-animation {\n    @apply hidden h-4 w-4 animate-spin rounded-full bg-ring opacity-0\n  }\n  .status-div {\n    @apply absolute w-4 duration-200 ease-in-out\n  }\n  .status-div:hover {\n    @apply hover:text-accent-foreground hover:transition-all\n  }\n  .generic-node-desc {\n    @apply h-full w-full py-5 text-foreground\n  }\n  .generic-node-desc-text {\n    @apply w-full px-5 pb-3 text-sm text-muted-foreground break-words\n  }\n\n  .alert-icon {\n    @apply h-5 w-5\n  }\n  .alert-font-size {\n    @apply text-sm font-medium\n  }\n\n  .error-build-message {\n    @apply mt-6 w-96 cursor-pointer rounded-md bg-error-background  p-4 shadow-xl\n  }\n  .error-build-message-circle {\n    @apply text-status-red alert-icon\n  }\n  .error-build-text {\n    @apply text-error-foreground\n  }\n  .error-build-foreground {\n    @apply error-build-text alert-font-size\n  }\n  .error-build-message-div {\n    @apply mt-2 text-sm error-build-text\n  }\n  .error-build-message-list {\n    @apply list-disc space-y-1 pl-5\n  }\n\n  .success-alert {\n    @apply mt-6 w-96 rounded-md bg-success-background p-4 shadow-xl\n  }\n  .success-alert-icon {\n    @apply alert-icon text-status-green\n  }\n  .success-alert-message {\n    @apply alert-font-size text-success-foreground\n  }\n\n  .card-component-title-display {\n    @apply round-button-div flex-max-width\n  }\n  .card-component-image {\n    @apply flex h-7 w-7 items-center justify-center rounded-full text-2xl\n  }\n  .card-component-title-size {\n    @apply inline-block w-full flex-1 break-words truncate-doubleline\n  }\n  .card-component-delete-button {\n    @apply flex self-start\n  }\n  .card-component-delete-icon {\n    @apply h-4 w-4 text-primary opacity-0 transition-all group-hover:opacity-100\n  }\n  .card-component-desc {\n    @apply pb-2 pt-2\n  }\n  .card-component-desc-text {\n    @apply truncate-doubleline\n  }\n  .card-component-footer-arrangement {\n    @apply flex-max-width items-end justify-between gap-2\n  }\n  .card-component-footer {\n    @apply flex flex-wrap gap-2\n  }\n\n  .unused-side-bar-aside {\n    @apply flex flex-shrink-0 flex-col overflow-hidden border-r  transition-all duration-500\n  }\n  .unused-side-bar-arrangement {\n    @apply flex h-full  w-52 flex-col items-start overflow-y-auto border bg-background scrollbar-hide\n  }\n  .unused-side-bar-division {\n    @apply flex-max-width flex-grow flex-col\n  }\n  .unused-side-bar-nav {\n    @apply flex-1 space-y-1\n  }\n  .unused-side-bar-link {\n    @apply flex-max-width items-center rounded-md py-2 pl-2 text-sm font-medium\n  }\n  .unused-side-bar-link-colors-true {\n    @apply bg-muted text-foreground\n  }\n  .unused-side-bar-link-colors-false {\n    @apply bg-background text-muted-foreground hover:bg-muted hover:text-foreground\n  }\n  .unused-side-bar-icon {\n    @apply mr-3 flex-shrink-0 h-6 w-6\n  }\n  .unused-side-bar-icon-false {\n    @apply text-ring group-hover:text-accent-foreground\n  }\n  .unused-side-bar-disclosure {\n    @apply unused-side-bar-link pr-1 text-left\n  }\n  .unused-side-bar-disclosure:focus {\n    @apply focus:outline-none focus:ring-1 focus:ring-ring\n  }\n  .unused-side-bar-disclosure-icon {\n    @apply unused-side-bar-icon text-ring group-hover:text-accent-foreground\n  }\n  .unused-side-bar-svg-true {\n    @apply text-ring rotate-90\n  }\n  .unused-side-bar-svg {\n    @apply ml-3 h-5 w-5 flex-shrink-0 duration-150 ease-in-out group-hover:text-accent-foreground\n  }\n  .unused-side-bar-disclosure-panel {\n    @apply flex w-full items-center rounded-md py-2 pl-11 pr-2 text-sm font-medium\n  }\n\n  .code-area-component {\n    @apply pointer-events-none w-full cursor-not-allowed\n  }\n  .code-area-input-positioning {\n    @apply flex-max-width items-center\n  }\n  .code-area-external-link {\n    @apply w-6 h-6 ml-3\n  }\n  .code-area-external-link:hover {\n    @apply hover:text-accent-foreground\n  }\n\n  .dropdown-component-outline {\n    @apply  input-edit-node relative pr-8\n  }\n  .dropdown-component-false-outline {\n    @apply input-primary py-2 pl-3 pr-10 text-left\n  }\n  .dropdown-component-display {\n    @apply block w-full truncate bg-background\n  }\n  .dropdown-component-arrow {\n    @apply pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\n  }\n  .dropdown-component-arrow-color {\n    @apply h-5 w-5 extra-side-bar-save-disable\n  }\n  .dropdown-component-options {\n    @apply z-10 mt-1 max-h-60 overflow-auto rounded-md bg-background py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\n  }\n  .dropdown-component-true-options {\n    @apply dropdown-component-options w-[215px]\n  }\n  .dropdown-component-false-options {\n    @apply dropdown-component-options w-full\n  }\n  .dropdown-component-option {\n    @apply relative cursor-default select-none\n  }\n  .dropdown-component-false-option {\n    @apply dropdown-component-option py-0.5 pl-3 pr-12\n  }\n  .dropdown-component-true-option {\n    @apply dropdown-component-option py-2 pl-3 pr-9\n  }\n  .dropdown-component-choosal {\n    @apply absolute inset-y-0 right-0 flex items-center pr-4\n  }\n  .dropdown-component-check-icon {\n    @apply h-5 w-5 text-black\n  }\n\n  .edit-flow-arrangement {\n    @apply flex justify-between\n  }\n  .edit-flow-span {\n    @apply ml-10 animate-pulse text-status-red\n  }\n\n  .float-component-pointer {\n    @apply pointer-events-none cursor-not-allowed\n  }\n\n  .header-menu-bar {\n    @apply flex items-center gap-0.5 rounded-md px-1.5 py-1 text-sm font-medium\n  }\n  .header-menu-bar-display {\n    @apply flex max-w-[200px] items-center gap-2 cursor-pointer\n  }\n  .header-menu-flow-name {\n    @apply flex-1 truncate\n  }\n  .header-menu-options {\n    @apply mr-2 h-4 w-4\n  }\n\n  .header-arrangement {\n    @apply flex-max-width h-12 items-center justify-between border-b bg-muted\n  }\n  .header-start-display {\n    @apply flex w-96 items-center justify-start gap-2\n  }\n  .header-end-division {\n    @apply flex w-96 justify-end px-2\n  }\n  .header-end-display {\n    @apply ml-auto mr-2 flex items-center gap-5\n  }\n  .header-github-link-box {\n    @apply border border-input h-9 px-3 pr-0 rounded-md inline-flex shadow-sm items-center justify-center\n  }\n  .header-github-link {\n    @apply text-sm font-medium  disabled:opacity-50 disabled:pointer-events-none ring-offset-background text-muted-foreground header-github-link-box\n  }\n  .header-github-link:focus-visible {\n    @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\n  }\n  .header-github-link:hover {\n    @apply hover:bg-accent hover:text-accent-foreground\n  }\n  .header-github-display {\n    @apply -mr-px ml-2 flex h-9 items-center justify-center rounded-md rounded-l-none border bg-background px-2 text-sm\n  }\n  .header-notifications-box {\n    @apply fixed left-0 top-0 h-screen w-screen\n  }\n  .header-notifications {\n    @apply absolute right-3 top-2 h-1.5 w-1.5 rounded-full bg-destructive\n  }\n\n  .input-component-div {\n    @apply pointer-events-none relative cursor-not-allowed\n  }\n  .input-component-button {\n    @apply absolute inset-y-0 right-0 items-center text-muted-foreground\n  }\n  .input-component-true-button {\n    @apply input-component-button pr-2\n  }\n  .input-component-false-button {\n    @apply input-component-button px-4\n  }\n  .input-component-true-svg {\n    @apply absolute bottom-0.5 right-2 side-bar-button-size\n  }\n  .input-component-false-svg {\n    @apply absolute bottom-2 right-3 side-bar-button-size\n  }\n  \n  .input-file-component {\n    @apply flex-max-width items-center\n  }\n\n  .toggle-component-switch {\n    @apply relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out\n  }\n  .toggle-component-switch:focus {\n    @apply focus:outline-none focus:ring-1 focus:ring-primary focus:ring-offset-1\n  }\n  .toggle-component-span {\n    @apply pointer-events-none relative inline-block h-5 w-5 transform rounded-full  shadow ring-0 transition duration-200 ease-in-out\n  }\n  .toggle-component-second-span {\n    @apply absolute inset-0 flex h-full w-full items-center justify-center transition-opacity\n  }\n\n  .app-div {\n    @apply fixed bottom-5 left-5 flex flex-col-reverse\n  }\n\n  .chat-input-modal-txtarea {\n    @apply form-input block w-full rounded-md border-ring pr-10  custom-scroll sm:text-sm\n  }\n  .chat-input-modal-div {\n    @apply absolute bottom-0.5 right-3\n  }\n  .chat-input-modal-lock {\n    @apply side-bar-button-size animate-pulse text-ring\n  }\n  .chat-input-modal-send {\n    @apply side-bar-button-size text-ring hover:text-muted-foreground\n  }\n\n  .code-block-modal {\n    @apply flex items-center justify-between px-4 py-1.5\n  }\n  .code-block-modal-span {\n    @apply text-xs lowercase text-muted-foreground\n  }\n  .code-block-modal-button {\n    @apply flex items-center gap-1.5 rounded bg-none p-1 text-xs text-muted-foreground\n  }\n\n  .chat-message-modal {\n    @apply flex-max-width py-2 pl-2\n  }\n  .chat-message-modal-div {\n    @apply my-3 flex h-8 w-8 items-center justify-center overflow-hidden rounded-full\n  }\n  .chat-message-modal-img {\n    @apply absolute scale-150 transition-opacity duration-500\n  }\n  .chat-message-modal-display {\n    @apply flex-max-width items-center text-start\n  }\n  .chat-message-modal-text {\n    @apply relative inline-block w-full text-start text-sm  font-normal text-muted-foreground\n  }\n  .chat-message-modal-icon-div {\n    @apply absolute -left-2 -top-1 cursor-pointer\n  }\n  .chat-message-modal-thought {\n    @apply ml-3 inline-block h-full w-[95%] rounded-md border border-ring bg-muted px-2 pb-3 pt-3 text-start text-muted-foreground chat-message-modal-thought-cursor\n  }\n  .chat-message-modal-thought-cursor {\n    @apply cursor-pointer scrollbar-hide overflow-scroll\n  }\n  .chat-message-modal-markdown {\n    @apply w-full px-4 pb-3 pr-8 pt-3\n  }\n  .chat-message-modal-markdown-span {\n    @apply mt-1 animate-pulse cursor-default\n  }\n  .chat-message-modal-alert {\n    @apply inline-block px-3 text-start text-muted-foreground\n  }\n\n  .file-card-modal-image-div {\n    @apply absolute right-0 top-0 rounded-bl-lg bg-muted px-1 text-sm font-bold text-foreground\n  }\n  .file-card-modal-image-button {\n    @apply px-2 py-1 text-ring\n  }\n  .file-card-modal-button {\n    @apply flex w-1/2 items-center justify-between rounded border border-ring bg-muted px-2 py-2 text-foreground shadow hover:drop-shadow-lg\n  }\n  .file-card-modal-div {\n    @apply mr-2 flex-max-width items-center gap-2 text-current\n  }\n  .file-card-modal-footer {\n    @apply flex flex-col items-start\n  }\n  .file-card-modal-name {\n    @apply truncate text-sm text-current\n  }\n  .file-card-modal-type {\n    @apply truncate text-xs text-ring\n  }\n\n  .send-message-modal-transition {\n    @apply fixed inset-0 bg-black bg-opacity-80 backdrop-blur-sm transition-opacity\n  }\n  .chat-modal-box {\n    @apply fixed inset-0 z-10 overflow-y-auto\n  }\n  .chat-modal-box-div {\n    @apply flex h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\n  }\n  .chat-modal-dialog-panel {\n    @apply relative flex h-[95%] w-[690px] transform flex-col justify-between overflow-hidden rounded-lg bg-background text-left shadow-xl drop-shadow-2xl transition-all\n  }\n  .chat-modal-dialog-panel-div {\n    @apply relative w-full p-4\n  }\n  .chat-modal-dialog-trash-panel {\n    @apply absolute right-10 top-2 z-30 text-muted-foreground hover:text-status-red\n  }\n  .chat-modal-dialog-x-panel {\n    @apply absolute right-2 top-1.5 z-30 text-muted-foreground hover:text-status-red\n  }\n  .chat-modal-dialog-history {\n    @apply flex-max-width h-full flex-col items-center overflow-scroll border-t bg-background scrollbar-hide\n  }\n  .chat-modal-dialog-span-box {\n    @apply flex-max-width h-full flex-col items-center justify-center text-center align-middle\n  }\n  .chat-modal-dialog-desc {\n    @apply w-2/4 rounded-md border border-input bg-muted px-6 py-8\n  }\n  .chat-modal-input-div {\n    @apply flex-max-width flex-col items-center justify-between border-t bg-background p-3\n  }\n  .chat-modal-input {\n    @apply relative mt-1 w-full rounded-md shadow-sm\n  }\n  .code-area-modal-editor-div {\n    @apply mt-2 flex-max-width h-full\n  }\n  .code-area-modal-editor-box {\n    @apply h-[300px] w-full rounded-lg border-[1px] border-ring custom-scroll\n  }\n\n  .edit-node-modal-variable {\n    @apply h-5 w-5 stroke-2 pe-1 text-muted-foreground\n  }\n  .edit-node-modal-span {\n    @apply text-sm font-semibold text-primary\n  }\n  .edit-node-modal-arrangement {\n    @apply flex-max-width h-fit max-h-[400px]\n  }\n  .edit-node-modal-box {\n    @apply w-full rounded-lg border-[1px] border-input bg-background\n  }\n  .edit-node-modal-table {\n    @apply flex h-fit flex-col gap-5\n  }\n  .edit-node-modal-table-header {\n    @apply h-10 border-input text-xs font-medium text-ring\n  }\n  .edit-node-modal-table-cell {\n    @apply p-0 text-center text-sm text-foreground truncate sm:px-3\n  }\n  .edit-node-modal-second-cell {\n    @apply w-[300px] p-0 text-center text-xs text-foreground\n  }\n\n  .generic-modal-txtarea-div {\n    @apply mt-2 flex-max-width h-full\n  }\n\n  .button-box-modal-div {\n    @apply flex transform flex-col items-center justify-center rounded-lg border border-ring text-center shadow hover:scale-105 hover:shadow-lg\n  }\n\n  .dialog-header-modal-div {\n    @apply absolute left-0 top-2 z-50 hidden pl-4 pt-4 sm:block\n  }\n  .dialog-header-modal-button {\n    @apply rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 \n  }\n\n  .dialog-modal-examples-div {\n    @apply h-full w-full overflow-y-auto scrollbar-hide\n  }\n  .dialog-modal-example-true {\n    @apply mx-auto flex flex-row flex-wrap items-start justify-center overflow-auto\n  }\n  .dialog-modal-example-false {\n    @apply flex flex-row items-center justify-center\n  }\n  .dialog-modal-button-box-div {\n    @apply flex-max-width h-full items-center justify-evenly\n  }\n  .document-icon {\n    @apply h-10 w-10 flex-shrink-0\n  }\n  .loading-component-div {\n    @apply flex items-center justify-center align-middle\n  }\n  .dialog-modal-footer {\n    @apply mt-2 flex-max-width items-center justify-center\n  }\n  .dialog-modal-footer-link {\n    @apply flex items-center justify-center text-muted-foreground\n  }\n\n  .node-modal-div {\n    @apply fixed inset-0 bg-ring bg-opacity-75 transition-opacity\n  }\n  .node-modal-dialog-arrangement {\n    @apply fixed inset-0 z-10 overflow-y-auto\n  }\n  .node-modal-dialog-div {\n    @apply flex h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\n  }\n  .node-modal-dialog-panel {\n    @apply relative flex h-[600px] w-[700px] transform flex-col justify-between overflow-hidden rounded-lg bg-background text-left shadow-xl transition-all sm:my-8\n  }\n  .node-modal-dialog-panel-div {\n    @apply absolute right-0 top-0 z-50 hidden pr-4 pt-4 sm:block\n  }\n  .node-modal-dialog-button {\n    @apply rounded-md text-ring hover:text-accent-foreground\n  }\n  .node-modal-dialog-icon-div {\n    @apply flex-max-width h-full flex-col items-center justify-center\n  }\n  .node-modal-icon-arrangement {\n    @apply z-10 flex-max-width justify-center pb-4 shadow-sm\n  }\n  .node-modal-icon {\n    @apply mt-4 h-10 w-10 rounded p-1\n  }\n  .node-modal-title-div {\n    @apply mt-4 text-center sm:ml-4 sm:text-left\n  }\n  .node-modal-title {\n    @apply text-lg font-medium leading-10 text-foreground\n  }\n  .node-modal-template-div {\n    @apply flex-max-width h-full flex-row items-center justify-center gap-4 bg-input p-4\n  }\n  .node-modal-template {\n    @apply w-full rounded-lg bg-background px-4 shadow sm:p-4\n  }\n  .node-modal-template-column {\n    @apply flex h-full flex-col gap-5\n  }\n  .node-modal-button-box {\n    @apply flex-max-width flex-row-reverse bg-input px-4 pb-3\n  }\n  .node-modal-button {\n    @apply inline-flex w-full justify-center rounded-md border border-transparent bg-status-red px-4 py-2 text-base font-medium text-background shadow-sm hover:bg-ring sm:ml-3 sm:w-auto sm:text-sm\n  }\n  .node-modal-button:focus {\n    @apply focus:outline-none focus:ring-1 focus:ring-ring focus:ring-offset-1\n  }\n\n  .prompt-modal-icon-box {\n    @apply mx-auto mt-4 flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-almost-light-blue sm:mx-0 sm:h-10 sm:w-10\n  }\n  .prompt-modal-icon {\n    @apply h-6 w-6 text-almost-medium-blue\n  }\n  .prompt-modal-txtarea-arrangement {\n    @apply flex-max-width h-full flex-row items-center justify-center gap-4 overflow-auto bg-accent p-4\n  }\n  .prompt-modal-txtarea-box {\n    @apply h-full w-full overflow-hidden rounded-lg bg-background px-4 py-5 shadow sm:p-6\n  }\n  .prompt-modal-txtarea {\n    @apply form-input h-full w-full rounded-lg border-ring\n  }\n\n  .txtarea-modal-arrangement {\n    @apply flex h-full w-full flex-row items-center justify-center gap-4 bg-input p-4\n  }\n  .txtarea-modal-box {\n    @apply w-full overflow-hidden rounded-lg bg-background px-4 py-5 shadow sm:p-6\n  }\n  .txtarea-modal-input {\n    @apply form-input h-full w-full\n  }\n\n  .api-modal-tabs {\n    @apply w-full h-full overflow-hidden text-center bg-muted rounded-md border\n  }\n  .api-modal-tablist-div {\n    @apply flex items-center justify-between px-2\n  }\n  .api-modal-tabs-content {\n    @apply overflow-hidden w-full h-full px-4 pb-4 -mt-1\n  }\n  .api-modal-accordion-display {\n    @apply flex w-full h-full mt-2\n  }\n  .api-modal-table-arrangement {\n    @apply flex flex-col gap-5 h-fit\n  }\n\n  .icons-parameters-comp{\n    @apply ml-3 h-6 w-6\n  }\n\n  .form-modal-lock-true {\n    @apply bg-input text-primary\n  }\n  .form-modal-no-input {\n    @apply bg-input text-center text-primary dark:bg-gray-700 dark:text-gray-300\n  }\n  .form-modal-lock-false {\n    @apply bg-white text-primary\n  }\n  .code-highlight{\n    @apply block px-3 py-2 w-full max-h-[64vh] text-sm outline-0 border-0 break-all overflow-y-hidden\n  }\n\n  .code-nohighlight{\n    @apply block px-3 py-2 w-full max-h-[70vh] text-sm outline-0 border-0 break-all overflow-y-hidden\n  }\n  .form-modal-lockchat {\n    @apply form-input focus:ring-ring focus:border-ring block w-full rounded-md border-border p-4 pr-16 custom-scroll sm:text-sm\n  }\n  .form-modal-send-icon-position {\n    @apply absolute bottom-2 right-4\n  }\n  .form-modal-send-button {\n    @apply rounded-md p-2 px-1 transition-all duration-300\n  }\n  .form-modal-lock-icon {\n    @apply ml-1 mr-1 h-5 w-5 animate-pulse\n  }\n  .form-modal-send-icon {\n    @apply mr-2 h-5 w-5 rotate-[44deg]\n  }\n  .form-modal-play-icon {\n    @apply h-5 w-5 mx-1\n  }\n  .form-modal-chat-position {\n    @apply flex-max-width px-2 py-6 pl-4 pr-9\n  }\n  .form-modal-chatbot-icon {\n    @apply mb-3 ml-3 mr-6 mt-1\n  }\n  .form-modal-chat-image {\n    @apply flex flex-col items-center gap-1\n  }\n  .form-modal-chat-img-box {\n    @apply relative flex h-8 w-8 items-center justify-center overflow-hidden rounded-md p-5 text-2xl\n  }\n  .form-modal-chat-bot-icon {\n    @apply form-modal-chat-img-box bg-chat-bot-icon\n  }\n  .form-modal-chat-user-icon {\n    @apply form-modal-chat-img-box bg-chat-user-icon\n  }\n  .form-modal-chat-icon-img {\n    @apply absolute scale-[60%]\n  }\n  .form-modal-chat-text-position {\n    @apply flex w-full flex-1 text-start\n  }\n  .form-modal-chat-text {\n    @apply relative flex w-full flex-col text-start text-sm font-normal text-muted-foreground\n  }\n  .form-modal-chat-icon-div {\n    @apply absolute -left-6 -top-3 cursor-pointer\n  }\n  .form-modal-chat-icon {\n    @apply h-4 w-4 animate-bounce\n  }\n  .form-modal-chat-thought-border {\n    @apply rounded-md border border-ring/60\n  }\n  .form-modal-chat-thought-size {\n    @apply inline-block h-full w-[95%]\n  }\n  .form-modal-chat-thought {\n    @apply cursor-pointer overflow-scroll bg-background text-start text-primary scrollbar-hide form-modal-chat-thought-border form-modal-chat-thought-size py-2 px-2\n  }\n  .form-modal-markdown-span {\n    @apply mt-1 animate-pulse cursor-default\n  }\n  .form-modal-initial-prompt-btn {\n    @apply mb-2 flex items-center gap-2 rounded-md border border-border bg-background shadow-sm px-4 py-2 text-sm font-semibold\n  }\n  .form-modal-iv-box {\n    @apply mt-2 flex-max-width h-[80vh]\n  }\n  .form-modal-iv-size {\n    @apply mr-6 flex h-full w-2/6 flex-col justify-start overflow-auto scrollbar-hide\n  }\n  .file-component-arrangement {\n    @apply flex items-center py-2\n  }\n  .file-component-variable {\n    @apply -ml-px mr-1 h-4 w-4 text-primary\n  }\n  .file-component-variables-span {\n    @apply font-semibold text-primary\n  }\n  .file-component-variables-title {\n    @apply flex items-center justify-between pt-2\n  }\n  .file-component-variables-div {\n    @apply mr-2.5 flex items-center\n  }\n  .file-component-variables-title-txt {\n    @apply text-sm font-medium text-primary\n  }\n  .file-component-accordion-div {\n    @apply flex items-start gap-3\n  }\n  .file-component-badge-div {\n    @apply flex-max-width items-center justify-between\n  }\n  .file-component-tab-column {\n    @apply flex flex-col gap-2 p-1\n  }\n  .tab-accordion-badge-div {\n    @apply flex flex-1 items-center justify-between py-4 text-sm font-normal text-muted-foreground transition-all\n  }\n  .eraser-column-arrangement {\n    @apply flex-max-width flex-1 flex-col\n  }\n  .eraser-size {\n    @apply relative flex h-full w-full flex-col rounded-md border bg-muted\n  }\n  .eraser-position {\n    @apply absolute right-3 top-3 z-50\n  }\n  .chat-message-div {\n    @apply flex-max-width h-full flex-col items-center overflow-scroll scrollbar-hide\n  }\n  .chat-alert-box {\n    @apply flex-max-width h-full flex-col items-center justify-center text-center align-middle\n  }\n  .bisheng-chat-span {\n    @apply text-lg text-foreground\n  }\n  .bisheng-chat-desc {\n    @apply w-2/4 rounded-md border border-border bg-muted px-6 py-8\n  }\n  .bisheng-chat-desc-span {\n    @apply text-base text-muted-foreground\n  }\n  .bisheng-chat-input-div {\n    @apply flex-max-width flex-col items-center justify-between px-8 pb-6\n  }\n  .bisheng-chat-input {\n    @apply relative w-full rounded-md shadow-sm\n  }\n\n  .tooltip-fixed-width{\n    @apply max-w-[30vw] max-h-[20vh] overflow-auto\n  }\n  .langflow-chat-input {\n    @apply relative w-full rounded-md shadow-sm;\n  }\n  \n  .ace-editor-arrangement {\n    @apply flex-max-width h-full flex-col transition-all\n  }\n  .ace-editor {\n    @apply h-full w-full rounded-lg border-[1px] border-border custom-scroll\n  }\n  .ace-editor-save-btn {\n    @apply flex-max-width h-fit justify-end\n  }\n\n  .export-modal-save-api {\n    @apply font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\n  }\n\n  .chat-message-highlight {\n    @apply px-0.5 rounded-md bg-indigo-100 dark:bg-indigo-900\n  }\n\n  .navlink.active{\n    @apply bg-[#fff] text-primary shadow-sm dark:bg-[#34353A] dark:text-[#FFFFFF] dark:shadow-sm\n  }\n\n  /* new ui */\n  .bisheng-label {\n    @apply text-sm text-muted-foreground font-medium leading-none\n  }\n\n  .bisheng-tip {\n    @apply text-xs text-[#D8341E] ml-1\n  }\n\n  .bisheng-title {\n    @apply text-lg text-gray-950 dark:text-gray-50\n  }\n\n  .bisheng-table-footer {\n    @apply flex justify-between items-center absolute bottom-0 right-0 h-16 w-full bg-[#fff] dark:bg-[#1b1b1b] [&>.desc]:whitespace-nowrap [&>.desc]:text-sm [&>.desc]:text-muted-foreground [&>.desc]:break-keep\n  }\n  .bisheng-bg {\n    @apply bg-[#f4f5f8] dark:bg-[#111]\n  }\n\n  .flex-between-center {\n    @apply flex justify-between items-center\n  }\n\n  .dragging {\n    background-color: var(--tw-bg-muted);\n    border-color: var(--tw-border-gray-200);\n  }\n\n  .bisheng-node {\n    @apply relative flex w-[332px] flex-col justify-center rounded-[24px] border-4 group-hover:shadow-sm\n  }\n  .bisheng-node-top{\n    @apply bg-[#EFF1F5] dark:bg-background rounded-t-[20px] px-3 py-1.5\n  }\n  .bisheng-node-head{\n    overflow: hidden;\n    position: relative;\n    background: #F9F9FA;\n    @apply p-3 border-t border-[#cad0de] dark:bg-background dark:border-gray-700\n  }\n\n  .bisheng-node .bisheng-flow-handle {\n    @apply h-6 w-6 bg-transparent border-none flex justify-center items-center\n  }\n  .bisheng-node .bisheng-flow-handle:hover span{\n    @apply size-10/12\n  }\n  .bisheng-node .bisheng-flow-handle span {\n    @apply w-2 h-2 bg-primary rounded-full transition-all relative pointer-events-none\n  }\n  .bisheng-node .bisheng-flow-handle span::before {\n    content: '';\n    @apply absolute bg-[#fff] w-[1px] h-2/3 top-[3px] left-1/2 transform -translate-x-1/2 opacity-0 transition-opacity duration-300;\n  }\n  \n  .bisheng-node .bisheng-flow-handle span::after {\n    content: '';\n    @apply absolute bg-[#fff] h-[1px] w-2/3 left-[3px] top-1/2 transform -translate-y-1/2 opacity-0 transition-opacity duration-300;\n  }\n  \n  /* .bisheng-flow-handle:hover {\n    @apply bg-primary;\n  } */\n  \n  .bisheng-node .bisheng-flow-handle:hover span::before,\n  .bisheng-node .bisheng-flow-handle:hover span::after {\n    @apply opacity-100 ;\n  }\n  .textarea-badge{\n    @apply border border-[#E8EDF2] rounded-md px-1 bg-[#EFF3F8] text-primary mr-2 mb-1 inline-block\n  }\n  .textarea-error {\n    @apply border border-red-500 rounded-md px-1 bg-red-100 text-primary\n  }\n  .bisheng-richtext{\n    @apply text-[#111]\n  }\n  .bisheng-richtext.placeholder{\n    @apply text-gray-400\n  }\n  .textarea-badge {\n    user-select: text;\n  }\n  /* .textarea-badge::before{\n    content: '(x)';\n  } */\n  /* .bisheng-flow-handle:hover::after{\n    content: '';\n    @apply size-full rounded-full absolute bg-primary top-0 animate-ping pointer-events-none\n  } */\n}\n"
  },
  {
    "path": "src/frontend/platform/src/style/classes.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n    \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n    monospace;\n}\n\n/* The style below sets the cursor property of the element with the class .react-flow__pane to the default cursor.\nThe cursor: default; property value restores the browser's default cursor style for the targeted element. By applying this style, the element will no longer have a custom cursor appearance such as \"grab\" or any other custom cursor defined elsewhere in the application. Instead, it will revert to the default cursor style determined by the browser, typically an arrow-shaped cursor. */\n.react-flow__pane {\n  cursor: default;\n}"
  },
  {
    "path": "src/frontend/platform/src/style/index.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n\n@layer base {\n\n  :root {\n    --background-login: #fff;\n\n    --text-color: rgba(17, 17, 17, 0.3);\n\n    --background-main: rgba(244, 245, 248, 1);\n\n    --background-main-content: rgba(255, 255, 255, 1);\n\n    --background-tip: white;\n\n    --background-tip-darkhover: #0055e3;\n\n    --background-prompt: hsla(0, 0%, 100%, 1);\n\n    --background-new: hsla(240, 14%, 99%, 1);\n\n    --nav-hover: white;\n\n    --header-icon: white;\n\n    --text-answer: #111;\n\n    --text-prompt: hsla(0, 0%, 18%, 1);\n\n    --search-input: hsla(220, 100%, 99%, 1);\n\n    --background: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --muted: 210 40% 98%;\n    /* hsl(210 40% 98%) */\n    --muted-foreground: 215.4 16.3% 46.9%;\n    /* hsl(215 16% 46%) */\n    --popover: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --popover-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --card: 0 0% 100%;\n    /* hsl(0 0% 100%) */\n    --card-foreground: 222.2 47.4% 11.2%;\n    --white: white;\n    /* hsl(222 47% 11%) */\n    --border: 214.3 21.8% 91.4%;\n    /* hsl(214 32% 91%) */\n    --input: 223 48% 44%;\n    /* hsl(214 32% 91%) */\n    --primary: 220 98% 45%;\n    /* hsl(222 27% 18%) */\n    --primary-foreground: 210 40% 98%;\n    /* hsl(210 40% 98%) */\n    --secondary: 210 40% 96.1%;\n    /* hsl(210 40% 96%) */\n    --secondary-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --accent: 210 30% 96.1%;\n    /* hsl(210 30% 96%) */\n    --accent-foreground: 222.2 47.4% 11.2%;\n    /* hsl(222 47% 11%) */\n    --destructive: 0 100% 50%;\n    /* hsl(0 100% 50%) */\n    --destructive-foreground: 210 40% 98%;\n    --black-button: 0 0% 7%;\n    /* hsl(215 20% 65%) */\n    --ring: 223, 48%, 44%, 0.35;\n    --radius: .58rem;\n    --round-btn-shadow: #00000063;\n\n    --error-background: #fef2f2;\n    --error-foreground: #991b1b;\n\n    --success-background: #f0fdf4;\n    --success-foreground: #14532d;\n\n    --info-background: #f0f4fd;\n    --info-foreground: #141653;\n\n    --high-indigo: #4338ca;\n    --medium-indigo: #6366f1;\n\n    --chat-bot-icon: #afe6ef;\n    --chat-user-icon: #aface9;\n\n    /* Colors that are shared in dark and light mode */\n    --blur-shared: #151923de;\n    --build-trigger: #dc735b;\n    --chat-trigger: #5c8be1;\n    --chat-trigger-disabled: #b4c3da;\n    --status-red: #ef4444;\n    --status-yellow: #eab308;\n    --status-green: #4ade80;\n    --status-blue: #2563eb;\n    --connection: #555;\n\n  }\n\n  .dark {\n    --background-login: #1B1B1B;\n\n    --text-color: rgba(255, 255, 255, 0.3);\n\n    --login-input: #272728;\n\n    --button: #024FE5;\n\n    --background-main: rgba(17, 17, 17, 1);\n\n    --background-main-content: rgba(27, 27, 27, 1);\n\n    --background-tip: rgba(33, 33, 34, 1);\n\n    --background-prompt: hsla(225, 4%, 20%, 1);\n\n    --background-new: hsla(0, 0%, 9%, 1);\n\n    --nav-hover: rgba(52, 53, 58, 1);\n\n    --header-icon: rgba(33, 33, 34, 1);\n\n    --text-answer: #F2F2F2;\n\n    --text-prompt: hsla(180, 2%, 90%, 1);\n\n    --search-input: hsla(225, 5%, 17%, 1);\n\n    --autoPages: hsla(230, 5%, 22%, 1);\n\n    --background-thumb: hsla(219, 100%, 88%, 1);\n\n    --background: 0 0% 7%;\n    /* hsl(0 0% 7%) */\n    --foreground: 0 0% 100%;\n    /* hsl(213 31% 91%) */\n\n    --muted: 0 0% 7%;\n    /* hsl(223 27% 11%) */\n    --muted-foreground: 215.4 16.3% 56.9%;\n    /* hsl(215 16% 56%) */\n\n    --popover: 225 5% 17%;\n    /* hsl(224 71% 4%) */\n    --popover-foreground: 215 20.2% 65.1%;\n    /* hsl(215 20% 65%) */\n\n    --card: 240 1% 13%;\n    /* hsl(224 71% 4%) */\n    --card-foreground: 213 31% 80%;\n    /* hsl(213 31% 91%) */\n\n    --white: white;\n    --border: 225 5% 27%;\n    /* hsl(216 34% 17%) */\n    --input: 0 0% 100%;\n    /* hsl(216 34% 17%) */\n\n    --primary: 220 98% 45%;\n    /* hsl(210 20% 80%) */\n    --primary-foreground: 0 0% 100%;\n    /* hsl(222 47% 1%) */\n\n    --secondary: 222.2 37.4% 7.2%;\n    /* hsl(222 47% 11%) */\n    --secondary-foreground: 210 40% 80%;\n    /* hsl(210 40% 80%) */\n\n    --accent: 0 0% 11%;\n    /* hsl(216 34% 17%) */\n    --accent-foreground: 210 30% 98%;\n    /* hsl(210 40% 98%) */\n\n    --destructive: 0 81% 60%;\n    /* hsl(0 63% 31%) */\n    --destructive-foreground: 210 40% 98%;\n    /* hsl(210 40% 98%) */\n    --black-button: 0 0% 7%;\n\n    --ring: 216 24% 30%;\n    /* hsl(216 24% 30%) */\n\n    --radius: 0.5rem;\n\n    --round-btn-shadow: #00000063;\n\n    --success-background: #022c22;\n    --success-foreground: #ecfdf5;\n\n    --error-foreground: #fef2f2;\n    --error-background: #450a0a;\n\n    --info-foreground: #eff6ff;\n    --info-background: #172554;\n\n\n    --high-indigo: #4338ca;\n    --medium-indigo: #6366f1;\n\n    /* Colors that are shared in dark and light mode */\n    --blur-shared: #151923d2;\n    --build-trigger: #dc735b;\n    --chat-trigger: #5c8be1;\n    --chat-trigger-disabled: #2d3b54;\n    --status-red: #ef4444;\n    --status-yellow: #eab308;\n    --status-green: #4ade80;\n    --status-blue: #2563eb;\n    --connection: #555;\n\n    --chat-bot-icon: #235d70;\n    --chat-user-icon: #4f3d6e;\n\n  }\n}"
  },
  {
    "path": "src/frontend/platform/src/style/markdown.css",
    "content": ".bs-mkdown h1 {\n    font-size: 24px;\n}\n\n.bs-mkdown h2 {\n    margin: 0;\n    font-size: 20px;\n}\n\n.bs-mkdown h3 {\n    margin: 0;\n    font-size: 16px;\n}\n\n.bs-mkdown h4 {\n    margin: 0;\n    font-size: 16px;\n}\n\n.bs-mkdown h5 {\n    font-size: 16px;\n}\n\n.bs-mkdown h6 {\n    font-size: 14px;\n}\n\n.bs-mkdown ol,\n.bs-mkdown ul {\n    white-space: normal !important;\n}\n\n.bs-mkdown {\n    color: var(--tw-prose-body);\n    max-width: 65ch;\n}\n\n:root .bs-mkdown {\n    --mk-bc: 215 28% 17%;\n    --tw-prose-body: hsl(var(--mk-bc) / 0.8);\n    --tw-prose-headings: hsl(var(--mk-bc));\n    --tw-prose-lead: hsl(var(--mk-bc));\n    --tw-prose-links: hsl(var(--mk-bc));\n    --tw-prose-bold: hsl(var(--mk-bc));\n    --tw-prose-counters: hsl(var(--mk-bc));\n    --tw-prose-bullets: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-hr: hsl(var(--mk-bc) / 0.2);\n    --tw-prose-quotes: hsl(var(--mk-bc));\n    --tw-prose-quote-borders: hsl(var(--mk-bc) / 0.2);\n    --tw-prose-captions: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-code: hsl(var(--mk-bc));\n    --tw-prose-pre-code: hsl(var(--nc));\n    --tw-prose-pre-bg: hsl(var(--n));\n    --tw-prose-th-borders: hsl(var(--mk-bc) / 0.5);\n    --tw-prose-td-borders: hsl(var(--mk-bc) / 0.2);\n}\n\n.dark .bs-mkdown {\n    --mk-bc: 0 0% 100%;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"] *)) {\n    padding: 2px 8px;\n    border-radius: var(--rounded-badge);\n}\n\n.bs-mkdown code:after,\n.bs-mkdown code:before {\n    content: none;\n}\n\n.bs-mkdown pre code {\n    border-radius: 0;\n    padding: 0;\n}\n\n.bs-mkdown :where(tbody tr, thead):not(:where([class~=\"not-prose\"] *)) {\n    border-bottom-color: hsl(var(--mk-bc) / 20%);\n}\n\n.bs-mkdown :where(p):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.4em;\n    margin-bottom: 0.4em;\n}\n\n.bs-mkdown :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-lead);\n    font-size: 1.25em;\n    line-height: 1.6;\n    margin-top: 1.2em;\n    margin-bottom: 1.2em;\n}\n\n.bs-mkdown :where(a):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-links);\n    text-decoration: underline;\n    font-weight: 500;\n}\n\n.bs-mkdown :where(strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-bold);\n    font-weight: 600;\n}\n\n/* 暗黑模式下<strong>标签字体颜色 */\n.dark .bs-mkdown :where(strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: white;\n}\n\n.bs-mkdown :where(a strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(blockquote strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(thead th strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(ol):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: decimal;\n    margin-top: .4em;\n    margin-bottom: .4em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"A\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"a\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-alpha;\n}\n\n.bs-mkdown :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-roman;\n}\n\n.bs-mkdown :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-roman;\n}\n\n.bs-mkdown :where(ol[type=\"I\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: upper-roman;\n}\n\n.bs-mkdown :where(ol[type=\"i\"s]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: lower-roman;\n}\n\n.bs-mkdown :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: decimal;\n}\n\n.bs-mkdown :where(ul):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    list-style-type: disc;\n    margin-top: 1em;\n    margin-bottom: 1em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(ol > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::marker {\n    font-weight: 400;\n    color: var(--tw-prose-counters);\n}\n\n.bs-mkdown :where(ul > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::marker {\n    color: var(--tw-prose-bullets);\n}\n\n.bs-mkdown :where(dt):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(hr):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-color: var(--tw-prose-hr);\n    border-top-width: 1px;\n    margin-top: 3em;\n    margin-bottom: 3em;\n}\n\n.bs-mkdown :where(blockquote):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 500;\n    font-style: italic;\n    color: var(--tw-prose-quotes);\n    border-left-width: 0.25rem;\n    border-left-color: var(--tw-prose-quote-borders);\n    quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n    margin-top: 1.6em;\n    margin-bottom: 1.6em;\n    padding-left: 1em;\n}\n\n.bs-mkdown :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: open-quote;\n}\n\n.bs-mkdown :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: close-quote;\n}\n\n.bs-mkdown :where(h1):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 800;\n    font-size: 2.25em;\n    margin-top: 0;\n    margin-bottom: 0.8888889em;\n    line-height: 1.1111111;\n}\n\n.bs-mkdown :where(h1 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 900;\n    color: inherit;\n}\n\n.bs-mkdown :where(h2):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 700;\n    font-size: 1.5em;\n    margin-top: 2em;\n    margin-bottom: 1em;\n    line-height: 1.3333333;\n}\n\n.bs-mkdown :where(h2 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 800;\n    color: inherit;\n}\n\n.bs-mkdown :where(h3):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    font-size: 1.25em;\n    margin-top: 1.6em;\n    margin-bottom: 0.6em;\n    line-height: 1.6;\n}\n\n.bs-mkdown :where(h3 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 700;\n    color: inherit;\n}\n\n.bs-mkdown :where(h4):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    margin-top: 1.5em;\n    margin-bottom: 0.5em;\n    line-height: 1.5;\n}\n\n.bs-mkdown :where(h4 strong):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 700;\n    color: inherit;\n}\n\n.bs-mkdown :where(img):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(picture):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    display: block;\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(kbd):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    font-weight: 500;\n    font-family: inherit;\n    color: var(--tw-prose-kbd);\n    box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);\n    font-size: 0.875em;\n    border-radius: 0.3125rem;\n    padding-top: 0.1875em;\n    padding-right: 0.375em;\n    padding-bottom: 0.1875em;\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-code);\n    font-weight: 600;\n    font-size: 0.875em;\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: \"`\";\n}\n\n.bs-mkdown :where(code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: \"`\";\n}\n\n.bs-mkdown :where(a code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(h1 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(h2 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n    font-size: 0.875em;\n}\n\n.bs-mkdown :where(h3 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n    font-size: 0.9em;\n}\n\n.bs-mkdown :where(h4 code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(blockquote code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(thead th code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: inherit;\n}\n\n.bs-mkdown :where(pre):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-pre-code);\n    background-color: var(--tw-prose-pre-bg);\n    overflow-x: auto;\n    font-weight: 400;\n    font-size: 0.875em;\n    line-height: 1.7142857;\n    margin-top: 1.7142857em;\n    margin-bottom: 1.7142857em;\n    border-radius: 0.375rem;\n    padding-top: 0.8571429em;\n    padding-right: 1.1428571em;\n    padding-bottom: 0.8571429em;\n    padding-left: 1.1428571em;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    background-color: transparent;\n    border-width: 0;\n    border-radius: 0;\n    padding: 0;\n    font-weight: inherit;\n    color: inherit;\n    font-size: inherit;\n    font-family: inherit;\n    line-height: inherit;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::before {\n    content: none;\n}\n\n.bs-mkdown :where(pre code):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *))::after {\n    content: none;\n}\n\n.bs-mkdown :where(table):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    width: 100%;\n    table-layout: auto;\n    text-align: left;\n    margin-top: 2em;\n    margin-bottom: 2em;\n    font-size: 0.875em;\n    line-height: 1.7142857;\n}\n\n.bs-mkdown :where(thead):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 1px;\n    border-bottom-color: var(--tw-prose-th-borders);\n}\n\n.bs-mkdown :where(thead th):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-headings);\n    font-weight: 600;\n    vertical-align: bottom;\n    padding-right: 0.5714286em;\n    padding-bottom: 0.5714286em;\n    padding-left: 0.5714286em;\n}\n\n.bs-mkdown :where(tbody tr):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 1px;\n    border-bottom-color: var(--tw-prose-td-borders);\n}\n\n.bs-mkdown :where(tbody tr:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-bottom-width: 0;\n}\n\n.bs-mkdown :where(tbody td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    vertical-align: baseline;\n}\n\n.bs-mkdown :where(tfoot):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    border-top-width: 1px;\n    border-top-color: var(--tw-prose-th-borders);\n}\n\n.bs-mkdown :where(tfoot td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    vertical-align: top;\n}\n\n.bs-mkdown :where(figure > *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n    margin-bottom: 0;\n}\n\n.bs-mkdown :where(figcaption):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    color: var(--tw-prose-captions);\n    font-size: 0.875em;\n    line-height: 1.4285714;\n    margin-top: 0.8571429em;\n}\n\n.bs-mkdown {\n    --tw-prose-body: #374151;\n    --tw-prose-headings: #111827;\n    --tw-prose-lead: #4b5563;\n    --tw-prose-links: #111827;\n    --tw-prose-bold: #111827;\n    --tw-prose-counters: #6b7280;\n    --tw-prose-bullets: #d1d5db;\n    --tw-prose-hr: #e5e7eb;\n    --tw-prose-quotes: #111827;\n    --tw-prose-quote-borders: #e5e7eb;\n    --tw-prose-captions: #6b7280;\n    --tw-prose-kbd: #111827;\n    --tw-prose-kbd-shadows: 17 24 39;\n    --tw-prose-code: #111827;\n    --tw-prose-pre-code: #e5e7eb;\n    --tw-prose-pre-bg: #1f2937;\n    --tw-prose-th-borders: #d1d5db;\n    --tw-prose-td-borders: #e5e7eb;\n    --tw-prose-invert-body: #d1d5db;\n    --tw-prose-invert-headings: #fff;\n    --tw-prose-invert-lead: #9ca3af;\n    --tw-prose-invert-links: #fff;\n    --tw-prose-invert-bold: #fff;\n    --tw-prose-invert-counters: #9ca3af;\n    --tw-prose-invert-bullets: #4b5563;\n    --tw-prose-invert-hr: #374151;\n    --tw-prose-invert-quotes: #f3f4f6;\n    --tw-prose-invert-quote-borders: #374151;\n    --tw-prose-invert-captions: #9ca3af;\n    --tw-prose-invert-kbd: #fff;\n    --tw-prose-invert-kbd-shadows: 255 255 255;\n    --tw-prose-invert-code: #fff;\n    --tw-prose-invert-pre-code: #d1d5db;\n    --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\n    --tw-prose-invert-th-borders: #4b5563;\n    --tw-prose-invert-td-borders: #374151;\n    font-size: 1rem;\n    line-height: 1.75;\n}\n\n.bs-mkdown :where(picture > img):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n    margin-bottom: 0;\n}\n\n.bs-mkdown :where(video):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.2em;\n    margin-bottom: 0.2em;\n}\n\n.bs-mkdown :where(ol > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(ul > li):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0.375em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li p):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.75em;\n    margin-bottom: 0.75em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li > *:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ul > li > *:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ol > li > *:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n}\n\n.bs-mkdown :where(.bs-mkdown > ol > li > *:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.75em;\n    margin-bottom: 0.75em;\n}\n\n.bs-mkdown :where(dl):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 1.25em;\n    margin-bottom: 1.25em;\n}\n\n.bs-mkdown :where(dd):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0.5em;\n    padding-left: 1.625em;\n}\n\n.bs-mkdown :where(hr + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h2 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h3 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(h4 + *):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(thead th:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0;\n}\n\n.bs-mkdown :where(thead th:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-right: 0;\n}\n\n.bs-mkdown :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-top: 0.5714286em;\n    padding-right: 0.5714286em;\n    padding-bottom: 0.5714286em;\n    padding-left: 0.5714286em;\n}\n\n.bs-mkdown :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-left: 0;\n}\n\n.bs-mkdown :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    padding-right: 0;\n}\n\n.bs-mkdown :where(figure):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 2em;\n    margin-bottom: 2em;\n}\n\n.bs-mkdown :where(.bs-mkdown > :first-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-top: 0;\n}\n\n.bs-mkdown :where(.bs-mkdown > :last-child):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)) {\n    margin-bottom: 0;\n}\n\n.bs-mkdown svg g[data-mml-node=\"merror\"], .bs-mkdown .mathjax-error {\n    opacity: 0;\n}"
  },
  {
    "path": "src/frontend/platform/src/style/vditor.css",
    "content": ".linsight-vditor .vditor-reset {\r\n\tborder-radius: 8px;\r\n\tfont-size: 16px;\r\n\tpadding: 0 20px 160px 14px ;\r\n\tscrollbar-color: transparent transparent;\r\n}\r\n\r\n.linsight-vditor .vditor-toolbar {\r\n\tdisplay: none;\r\n}\r\n\r\n.linsight-vditor .vditor-wysiwyg pre.vditor-reset[contenteditable=\"false\"] {\r\n\topacity: 0.8;\r\n}\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h1:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h2:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h3:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h4:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h5:before,\r\n.linsight-vditor .vditor-wysiwyg>.vditor-reset>h6:before,\r\n.vditor-wysiwyg div.vditor-wysiwyg__block:before,\r\n.vditor-wysiwyg div[data-type=\"link-ref-defs-block\"]:before,\r\n.vditor-wysiwyg div[data-type=\"footnotes-block\"]:before,\r\n.vditor-wysiwyg .vditor-toc:before {\r\n  margin-left: -20px;\r\n  padding-right: 0;\r\n  font-size: 12px;\r\n  position: relative;\r\n  left: 6px;\r\n}\r\n.linsi-span {\r\n\tbackground: #E9F1FF;\r\n\tcolor: #2A3F73;\r\n\tfont-size: 14px;\r\n\tpadding: 1px 8px;\r\n\tborder-radius: 4px;\r\n}\r\n\r\n.linsi-error {\r\n\tbackground: #ffece9;\r\n\tcolor: #a13434;\r\n\tfont-size: 14px;\r\n\tpadding: 1px 8px;\r\n\tborder-radius: 4px;\r\n}\r\n.linsight-vditor  .vditor-reset h1,\r\n.linsight-vditor  .vditor-reset h2,\r\n.linsight-vditor  .vditor-reset h3,\r\n.linsight-vditor  .vditor-reset h4,\r\n.linsight-vditor  .vditor-reset h5,\r\n.linsight-vditor  .vditor-reset h6 {\r\n  margin-top: 22px;\r\n  margin-bottom: 16px;\r\n  font-weight: 500;\r\n  line-height: 1.4;\r\n}\r\n.linsight-vditor .vditor-reset blockquote{\r\n\tmargin: 0 0 14px 0;\r\n\tborder-left: 2px solid #3370ff;\r\n}\r\n.linsight-vditor  .vditor-reset ul {\r\n\tlist-style-type: none;\r\n}\r\n.linsight-vditor .vditor-reset ul > li:not(:has(input[type=\"checkbox\"]))::before {\r\n  content: \"•\";\r\n  color: #3370ff;\r\n  display: inline-block;\r\n  margin-left: -20px;\r\n  margin-right: 20px;\r\n  width: 0;\r\n  font-size: 0.8em;\r\n  transform: scale(1.25);\r\n  font-family: PingFangSC-Regular, PingFang SC;\r\n}\r\n.linsight-vditor .vditor-reset code:not(.hljs):not(.highlight-chroma)  {\r\n    border-radius: 4px;\r\n    margin-left: 2px;\r\n    margin-right: 2px;\r\n    border: 1px solid #dee0e3;\r\n    background-color: #f5f6f7;\r\n    word-spacing: normal;\r\n    line-height: 1.6;\r\n    padding: 0 2px;\r\n\tfont-size: 16px;\r\n\tfont-family: monospace, Menlo-Regular, Menlo, Monaco, Consolas, Courier New;\r\n}\r\n.linsight-vditor .vditor-reset pre{\r\n    border-radius: 0;\r\n    display: block;\r\n    border: 1px solid #dee0e3;\r\n    background-color: #f5f6f7;\r\n    padding: 10px;\r\n    font-size: 14px;\r\n    overflow-x: auto;\t\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"] {\r\n  -webkit-appearance: none ;\r\n  -moz-appearance: none ;\r\n  appearance: none ;\r\n  width: 16px ;\r\n  height: 16px ;\r\n  margin: 0 8px 0 0 ;\r\n  border: 1px solid #000 ;\r\n  border-radius: 3px ;\r\n  background: transparent ;\r\n  vertical-align: middle ;\r\n  position: relative ;\r\n  cursor: pointer ;\r\n  outline: none ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:disabled {\r\n  opacity: 0.6 ;\r\n  cursor: not-allowed ;\r\n  border-color: #ccc ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:checked::before {\r\n  content: \"\" ;\r\n  position: absolute ;\r\n  top: 50% ;\r\n  left: 50% ;\r\n  width: 14px ;\r\n  height: 14px ;\r\n  transform: translate(-50%, -50%) ;\r\n  background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEwLjU4OSAzLjkwM2wuODA4LjgwOGEuMzUuMzUgMCAwMTAgLjQ5NUw2LjE4IDEwLjQyNWEuMzUuMzUgMCAwMS0uNDk1IDBMMi43MDMgNy40NDRhLjM1LjM1IDAgMDEwLS40OTVsLjgwOC0uODA4YS4zNS4zNSAwIDAxLjQ5NSAwbDEuOTI1IDEuOTI0IDQuMTYzLTQuMTYzYS4zNS4zNSAwIDAxLjQ5NSAweiIgZmlsbD0iIzMzNzBGRiIvPjwvc3ZnPg==') no-repeat center/contain ;\r\n}\r\n.linsight-vditor .vditor-task input[type=\"checkbox\"]:checked {\r\n  background-image: none ; \r\n}\r\n    \r\n.vditor-wysiwyg a{\r\n\tword-wrap: break-word;\r\n    white-space: pre-wrap;\r\n    hyphens: auto;\r\n    word-break: break-word;\r\n    color: #3370ff;\r\n    text-decoration: none;\r\n}"
  },
  {
    "path": "src/frontend/platform/src/types/alerts/index.ts",
    "content": "export type ErrorAlertType = {\n  title: string;\n  list: Array<string>;\n  id: string;\n  removeAlert: (id: string) => void;\n};\nexport type NoticeAlertType = {\n  title: string;\n  link: string;\n  id: string;\n  removeAlert: (id: string) => void;\n};\nexport type SuccessAlertType = {\n  title: string;\n  id: string;\n  removeAlert: (id: string) => void;\n};\nexport type SingleAlertComponentType = {\n  dropItem: AlertItemType;\n  removeAlert: (index: string) => void;\n};\nexport type AlertDropdownType = {};\nexport type AlertItemType = {\n  type: \"notice\" | \"error\" | \"success\";\n  title: string;\n  link?: string;\n  list?: Array<string>;\n  id: string;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/api/app.ts",
    "content": "export type AppConfig = {\n    env: string;\n    uns_support: string[];\n    office_url: string;\n    dialog_tips: string;\n    dialog_quick_search: string;\n    websocket_url: string;\n    pro: boolean;\n    sso: boolean;\n    application_usage_tips: boolean;\n    show_github_and_help: boolean;\n    version: string;\n    /** 注册入口 */\n    enable_registration: boolean;\n    /** 最大上传文件大小 mb */\n    uploaded_files_maximum_size: number;\n    /** 是否部署 ETL4LM  */\n    enable_etl4lm: boolean;\n};"
  },
  {
    "path": "src/frontend/platform/src/types/api/finetune.ts",
    "content": "interface PresetData {\n    id: string;\n    num: number;\n    url: string;\n    name: string;\n}\n\ninterface ExtraParams {\n    gpus: number;\n    val_radio: number;\n    learning_rate: number;\n}\n\nexport interface TaskDB {\n    server: number;\n    base_model: number;\n    model_name: string;\n    base_model_name: string;\n    extra_params: ExtraParams;\n    preset_data: PresetData[];\n    reason: string;\n    report: any; // Replace 'any' with the actual type if 'report' has a specific structure\n    user_name: string;\n    update_time: string;\n    model_id: number;\n    id: string;\n    method: string;\n    train_data: any[]; // Replace 'any' with the actual type if 'train_data' has a specific structure\n    status: number;\n    log_path: string;\n    user_id: number;\n    create_time: string;\n}\n\nexport interface FileDB {\n    id: string;\n    url: string;\n    name: string;\n    user_id: string;\n    user_name: string;\n    create_time: string | null;\n    update_time: string | null;\n}\n\nexport interface FileItem {\n    id: string;\n    checked: boolean;\n    sampleSize: number;\n    name: string;\n    dataSource: string;\n}"
  },
  {
    "path": "src/frontend/platform/src/types/api/index.ts",
    "content": "import { Edge, Node, Viewport } from \"@xyflow/react\";\nimport { FlowType } from \"../flow\";\n//kind and class are just representative names to represent the actual structure of the object received by the API\nexport type APIDataType = { [key: string]: APIKindType };\nexport type APIObjectType = { [key: string]: APIKindType };\nexport type APIKindType = { [key: string]: APIClassType };\nexport type APITemplateType = {\n  [key: string]: TemplateVariableType;\n};\n\nexport type CustomFieldsType = {\n  [key: string]: Array<string>;\n};\n\nexport type APIClassType = {\n  base_classes: Array<string>;\n  description: string;\n  template: APITemplateType;\n  display_name: string;\n  icon?: string;\n  input_types?: Array<string>;\n  output_types?: Array<string>;\n  custom_fields?: CustomFieldsType;\n  beta?: boolean;\n  documentation: string;\n  error?: string;\n  official?: boolean;\n  flow?: FlowType;\n  [key: string]:\n    | Array<string>\n    | string\n    | APITemplateType\n    | boolean\n    | FlowType\n    | CustomFieldsType\n    | boolean\n    | undefined;\n};\n\nexport type TemplateVariableType = {\n  type: string;\n  required: boolean;\n  placeholder?: string;\n  list: boolean;\n  show: boolean;\n  readonly?: boolean;\n  multiline?: boolean;\n  value?: any;\n  dynamic?: boolean;\n  proxy?: { id: string; field: string };\n  input_types?: Array<string>;\n  display_name?: string;\n  name?: string;\n  [key: string]: any;\n};\nexport type sendAllProps = {\n  nodes?: Node[];\n  edges?: Edge[];\n  name: string;\n  description: string;\n  viewport?: Viewport;\n  inputs: any;\n  id?: string;\n  file_path?: string;\n  action?: string;\n  chatHistory: { message: string | object; isSend: boolean }[];\n  flow_id: string;\n  chat_id: string;\n};\nexport type errorsTypeAPI = {\n  function: { errors: Array<string> };\n  imports: { errors: Array<string> };\n};\nexport type PromptTypeAPI = {\n  input_variables: Array<string>;\n  frontend_node: APIClassType;\n};\n\nexport type BuildStatusTypeAPI = {\n  built: boolean;\n};\n\nexport type InitTypeAPI = {\n  flowId: string;\n};\n\nexport type UploadFileTypeAPI = {\n  file_path: string;\n  flowId: string;\n};\n\nexport type Component = {\n  name: string;\n  description: string;\n  data: Object;\n  tags: [string];\n};\n\nexport type RTServer = {\n  update_time: string;\n  endpoint: string;\n  sft_endpoint: string;\n  remark: string;\n  create_time: string;\n  server: string;\n  id: number;\n}\n"
  },
  {
    "path": "src/frontend/platform/src/types/api/user.ts",
    "content": "export type User = {\n    user_name: string;\n    email: string | null;\n    phone_number: string | null;\n    dept_id: number | null;\n    remark: string | null;\n    delete: number;\n    create_time: string;\n    update_time: string;\n    user_id: number;\n    role: string;\n};\n\nexport type ROLE = {\n    create_time: string\n    id: number\n    role_id: number\n    remark: string\n    role_name: string\n    update_time: string\n}\n\nexport type UserGroup = {\n    id: number\n    group_name: string\n    adminUser: string\n    group_admins: any[]\n    createTime: string\n    updateTime: string\n    groupLimit?: number\n}\n"
  },
  {
    "path": "src/frontend/platform/src/types/app.ts",
    "content": "// 工作流、助手、技能、全部\nexport enum AppType {\n    ALL = 'all',\n    FLOW = 'flow',\n    ASSISTANT = 'assistant',\n    SKILL = 'skill',\n}\n\n\nexport enum AppNumType {\n    FLOW = 10,\n    ASSISTANT = 5,\n    SKILL = 1,\n}\n\n// 在共享类型文件中定义\nexport const AppTypeToNum = {\n  [AppType.SKILL]: AppNumType.SKILL,\n  [AppType.ASSISTANT]: AppNumType.ASSISTANT,\n  [AppType.FLOW]: AppNumType.FLOW,\n};\n\nexport const AppNumToType = {\n  [AppNumType.SKILL]: AppType.SKILL,\n  [AppNumType.ASSISTANT]: AppType.ASSISTANT,\n  [AppNumType.FLOW]: AppType.FLOW,\n}"
  },
  {
    "path": "src/frontend/platform/src/types/assistant/index.tsx",
    "content": "import { FlowType } from \"../flow\";\n\nexport interface AssistantDetail {\n    /** 助手ID */\n    id: number;\n    /** 助手名称，为空则不更新 */\n    name?: string;\n    /** 助手描述，为空则不更新 */\n    desc?: string;\n    /** logo文件的相对地址，为空则不更新 */\n    logo?: string;\n    /** 用户可见的prompt，为空则不更新 */\n    prompt?: string;\n    /** 开场白，为空则不更新 */\n    guide_word?: string;\n    /** 引导问题列表，为空则不更新 */\n    guide_question?: string[]; // 更具体的类型可能需要根据实际对象结构定义\n    /** 选择的模型名，为空则不更新 */\n    model_name?: string | number;\n    /** 模型温度，为0则不更新 */\n    temperature?: number;\n    /** 助手的状态 */\n    status: number;\n    /** 用户ID */\n    user_id: number;\n    /** 创建时间 */\n    create_time: string;\n    /** 更新时间 */\n    update_time: string;\n    /** 内容安全审查对象 */\n    // content_security: object;\n    /** 助手的工具ID列表, 空列表则清空绑定的工具，为None则不更新 */\n    tool_list?: AssistantTool[];\n    /** 助手的技能ID列表，为None则不更新 */\n    flow_list?: FlowType[];\n    /** 知识库ID列表，为None则不更新 */\n    knowledge_list?: { id: number, name: string, index_name: string }[];\n    max_token: number;\n}\n\n\nexport interface AssistantTool {\n    id: number;\n    tool_key: string;\n    name: string;\n}"
  },
  {
    "path": "src/frontend/platform/src/types/chat/index.ts",
    "content": "import { ReactFlowInstance } from \"@xyflow/react\";\nimport { FlowType } from \"../flow\";\n\nexport type ChatType = { flow: FlowType; reactFlowInstance: ReactFlowInstance };\nexport type ChatMessageType = {\n  message: string | Object;\n  template?: string;\n  isSend: boolean;\n  thought?: string;\n  category?: string;\n  files?: Array<{ data: string; type: string; data_type: string, file_name?: string }>;\n  chatKey: string;\n  end: boolean;\n  id?: number;\n  source?: number;\n  noAccess?: boolean;\n  user_name: string;\n  at?: string;\n  /** 用户名 */\n  sender?: string;\n  /** @某人 */\n  receiver?: any;\n  liked?: boolean;\n  extra?: string;\n  create_time: string;\n  update_time: string;\n  reasoning_log?: string;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/components/index.ts",
    "content": "import { ReactElement, ReactNode } from \"react\";\nimport { ReactFlowJsonObject, XYPosition } from \"@xyflow/react\";\nimport { APIClassType, APITemplateType, TemplateVariableType } from \"../api\";\nimport { ChatMessageType } from \"../chat\";\nimport { FlowStyleType, FlowType, NodeDataType, NodeType } from \"../flow/index\";\nimport { sourceHandleType, targetHandleType } from \"./../flow/index\";\nimport { TypeModal } from \"@/utils\";\nexport type InputComponentType = {\n  autoFocus?: boolean;\n  onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n  value: string;\n  disabled?: boolean;\n  onChange: (value: string) => void;\n  password: boolean;\n  required?: boolean;\n  isForm?: boolean;\n  editNode?: boolean;\n  onChangePass?: (value: boolean | boolean) => void;\n  showPass?: boolean;\n  placeholder?: string;\n  className?: string;\n  id?: string;\n  blurOnEnter?: boolean;\n  type?: 'input' | 'textarea'\n};\nexport type ToggleComponentType = {\n  enabled: boolean;\n  setEnabled: (state: boolean) => void;\n  disabled: boolean | undefined;\n  size: \"small\" | \"medium\" | \"large\";\n  id?: string;\n};\nexport type DropDownComponentType = {\n  value: string;\n  options: string[];\n  onSelect: (value: string) => void;\n  editNode?: boolean;\n  apiModal?: boolean;\n  numberOfOptions?: number;\n  id?: string;\n};\nexport type ParameterComponentType = {\n  data: NodeDataType;\n  title: string;\n  id: sourceHandleType | targetHandleType;\n  color: string;\n  left: boolean;\n  type: string | undefined;\n  required?: boolean;\n  name?: string;\n  tooltipTitle: string | undefined;\n  optionalHandle?: Array<String> | null;\n  info?: string;\n  proxy?: { field: string; id: string };\n  showNode?: boolean;\n  index?: string;\n  onCloseModal?: (close: boolean) => void;\n  onChange?: () => void;\n};\nexport type InputListComponentType = {\n  value: string[];\n  onChange: (value: string[]) => void;\n  disabled: boolean;\n  editNode?: boolean;\n};\n\nexport type KeyPairListComponentType = {\n  value: any;\n  onChange: (value: Object[]) => void;\n  disabled: boolean;\n  editNode?: boolean;\n  duplicateKey?: boolean;\n  editNodeModal?: boolean;\n};\n\nexport type DictComponentType = {\n  value: any;\n  onChange: (value) => void;\n  disabled: boolean;\n  editNode?: boolean;\n  id?: string;\n};\n\nexport type TextAreaComponentType = {\n  field_name?: string;\n  nodeClass?: APIClassType;\n  setNodeClass?: (value: APIClassType) => void;\n  disabled: boolean;\n  onChange: (value: string[] | string) => void;\n  value: string;\n  editNode?: boolean;\n  id?: string;\n  readonly?: boolean;\n  type?: TypeModal;\n};\n\nexport type PromptAreaComponentType = {\n  field_name?: string;\n  nodeClass?: APIClassType;\n  setNodeClass?: (value: APIClassType, code?: string) => void;\n  disabled: boolean;\n  onChange: (value: string[] | string) => void;\n  value: string;\n  readonly?: boolean;\n  editNode?: boolean;\n  id?: string;\n};\n\nexport type CodeAreaComponentType = {\n  disabled: boolean;\n  onChange: (value: string[] | string) => void;\n  value: string;\n  editNode?: boolean;\n  nodeClass?: APIClassType;\n  setNodeClass?: (value: APIClassType, code?: string) => void;\n  dynamic?: boolean;\n  id?: string;\n  readonly?: boolean;\n};\n\nexport type FileComponentType = {\n  disabled: boolean;\n  onChange: (value: string[] | string) => void;\n  value: string;\n  fileTypes: Array<string>;\n  onFileChange: (value: string) => void;\n  editNode?: boolean;\n};\n\nexport type DisclosureComponentType = {\n  children: ReactNode;\n  openDisc: boolean;\n  button: {\n    title: string;\n    Icon: React.ElementType;\n    buttons?: {\n      Icon: ReactElement;\n      title: string;\n      onClick: (event?: React.MouseEvent) => void;\n    }[];\n  };\n};\n\nexport type RangeSpecType = {\n  min: number;\n  max: number;\n  step: number;\n};\n\nexport type IntComponentType = {\n  value: string;\n  disabled?: boolean;\n  onChange: (value: string) => void;\n  editNode?: boolean;\n  id?: string;\n};\n\nexport type FloatComponentType = {\n  value: string;\n  disabled?: boolean;\n  onChange: (value: string) => void;\n  rangeSpec: RangeSpecType;\n  editNode?: boolean;\n  id?: string;\n};\n\nexport type TooltipComponentType = {\n  children: ReactElement;\n  title: string | ReactElement;\n  placement?:\n  | \"bottom-end\"\n  | \"bottom-start\"\n  | \"bottom\"\n  | \"left-end\"\n  | \"left-start\"\n  | \"left\"\n  | \"right-end\"\n  | \"right-start\"\n  | \"right\"\n  | \"top-end\"\n  | \"top-start\"\n  | \"top\";\n};\n\nexport type ProgressBarType = {\n  children?: ReactElement;\n  value?: number;\n  max?: number;\n};\n\nexport type RadialProgressType = {\n  value?: number;\n  color?: string;\n};\n\nexport type AccordionComponentType = {\n  children?: ReactElement;\n  open?: string[];\n  trigger?: string | ReactElement;\n  keyValue?: string;\n};\nexport type Side = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport type ShadTooltipProps = {\n  delayDuration?: number;\n  side?: Side;\n  content: ReactNode;\n  children: ReactNode;\n  style?: string;\n};\nexport type ShadToolTipType = {\n  content?: ReactNode | null;\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  asChild?: boolean;\n  children?: ReactElement;\n  delayDuration?: number;\n  styleClasses?: string;\n};\n\nexport type TextHighlightType = {\n  value?: string;\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  asChild?: boolean;\n  children?: ReactElement;\n  delayDuration?: number;\n};\n\nexport interface IVarHighlightType {\n  name: string;\n}\n\nexport type IconComponentProps = {\n  name: string;\n  className?: string;\n  iconColor?: string;\n  onClick?: () => void;\n  stroke?: string;\n  strokeWidth?: number;\n  id?: string;\n};\n\nexport type InputProps = {\n  name: string | null;\n  description: string | null;\n  maxLength?: number;\n  setName?: (name: string) => void;\n  setDescription?: (description: string) => void;\n  invalidNameList?: string[];\n};\n\nexport type TooltipProps = {\n  selector: string;\n  content?: string;\n  disabled?: boolean;\n  htmlContent?: React.ReactNode;\n  className?: string; // This should use !impornant to override the default styles eg: '!bg-white'\n  position?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  clickable?: boolean;\n  children: React.ReactNode;\n  delayShow?: number;\n};\n\nexport type LoadingComponentProps = {\n  remSize: number;\n};\n\nexport type ContentProps = {\n  children: ReactNode;\n};\nexport type HeaderProps = { children: ReactNode; description: string };\nexport type TriggerProps = {\n  children: ReactNode;\n  tooltipContent?: ReactNode;\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n};\n\nexport interface languageMap {\n  [key: string]: string | undefined;\n}\n\nexport type signUpInputStateType = {\n  password: string;\n  cnfPassword: string;\n  username: string;\n};\n\nexport type inputHandlerEventType = {\n  target: {\n    value: string;\n    name: string;\n  };\n};\nexport type PaginatorComponentType = {\n  pageSize: number;\n  pageIndex: number;\n  rowsCount?: number[];\n  totalRowsCount: number;\n  paginate: (pageIndex: number, pageSize: number) => void;\n  storeComponent?: boolean;\n};\n\nexport type ConfirmationModalType = {\n  onCancel?: () => void;\n  title: string;\n  titleHeader?: string;\n  destructive?: boolean;\n  modalContentTitle?: string;\n  cancelText: string;\n  confirmationText: string;\n  children:\n  | [React.ReactElement<ContentProps>, React.ReactElement<TriggerProps>]\n  | React.ReactElement<ContentProps>;\n  icon: string;\n  data?: any;\n  index?: number;\n  onConfirm: (index, data) => void;\n  open?: boolean;\n  onClose?: (close: boolean) => void;\n  size?:\n  | \"x-small\"\n  | \"smaller\"\n  | \"small\"\n  | \"medium\"\n  | \"large\"\n  | \"large-h-full\"\n  | \"small-h-full\"\n  | \"medium-h-full\";\n};\n\nexport type UserManagementType = {\n  title: string;\n  titleHeader: string;\n  cancelText: string;\n  confirmationText: string;\n  children: ReactElement;\n  icon: string;\n  data?: any;\n  index?: number;\n  asChild?: boolean;\n  onConfirm: (index, data) => void;\n};\n\nexport type loginInputStateType = {\n  username: string;\n  password: string;\n};\n\nexport type patchUserInputStateType = {\n  password: string;\n  cnfPassword: string;\n  gradient: string;\n};\n\nexport type UserInputType = {\n  username: string;\n  password: string;\n  is_active?: boolean;\n  is_superuser?: boolean;\n  id?: string;\n  create_at?: string;\n  updated_at?: string;\n};\n\nexport type ApiKeyType = {\n  title: string;\n  cancelText: string;\n  confirmationText: string;\n  children: ReactElement;\n  icon: string;\n  data?: any;\n  onCloseModal: () => void;\n};\n\nexport type StoreApiKeyType = {\n  children: ReactElement;\n  disabled?: boolean;\n};\nexport type groupedObjType = {\n  family: string;\n  type: string;\n};\n\nexport type nodeGroupedObjType = {\n  displayName: string;\n  node: string[] | string;\n};\n\ntype test = {\n  [char: string]: string;\n};\n\nexport type tweakType = Array<{\n  [key: string]: {\n    [char: string]: string;\n  } & FlowStyleType;\n}>;\n\nexport type uniqueTweakType = {\n  [key: string]: {\n    [char: string]: string;\n  } & FlowStyleType;\n};\n\nexport type apiModalTweakType = {\n  current: Array<{\n    [key: string]: {\n      [char: string]: string | number;\n    };\n  }>;\n};\n\nexport type nodeToolbarType = {\n  data: {\n    id: string;\n    type: string;\n    node: {\n      base_classes: string[];\n      description: string;\n      display_name: string;\n      documentation: string;\n      template: APITemplateType;\n    };\n    value: void;\n  };\n  deleteNode: (idx: string) => void;\n  openPopUp: (element: JSX.Element) => JSX.Element;\n};\n\nexport type chatTriggerPropType = {\n  open: boolean;\n  isBuilt: boolean;\n  canOpen: boolean;\n  setOpen: (can: boolean) => void;\n};\n\nexport type headerFlowsType = {\n  data: ReactFlowJsonObject | null;\n  description: string;\n  id: string;\n  name: string;\n  style?: FlowStyleType;\n};\n\nexport type chatInputType = {\n  chatValue: string;\n  inputRef: {\n    current: any;\n  };\n  lockChat: boolean;\n  noInput: boolean;\n  sendMessage: () => void;\n  setChatValue: (value: string) => void;\n};\n\nexport type editNodeToggleType = {\n  advanced?: boolean;\n  info?: string;\n  list: boolean;\n  multiline?: boolean;\n  name?: string;\n  password?: boolean;\n  placeholder?: string;\n  required: boolean;\n  show: boolean;\n  type: string;\n};\n\nexport interface Props {\n  language: string;\n  value: string;\n}\n\nexport type fileCardPropsType = {\n  fileName: string;\n  content: string;\n  fileType: string;\n};\n\nexport type nodeToolbarPropsType = {\n  data: NodeDataType;\n  deleteNode: (idx: string) => void;\n  position: XYPosition;\n  setShowNode: (boolean: any) => void;\n  numberOfHandles: number;\n  showNode: boolean;\n};\n\nexport type parsedDataType = {\n  id: string;\n  params: string;\n  progress: number;\n  valid: boolean;\n};\n\nexport type SanitizedHTMLWrapperType = {\n  className: string;\n  content: string;\n  onClick: () => void;\n  suppressWarning?: boolean;\n};\n\nexport type iconsType = {\n  [key: string]: React.ElementType;\n};\n\nexport type modalHeaderType = {\n  children: ReactNode;\n  description: string | null;\n};\n\nexport type codeAreaModalPropsType = {\n  setValue: (value: string) => void;\n  value: string;\n  nodeClass: APIClassType | undefined;\n  setNodeClass: (Class: APIClassType, code?: string) => void | undefined;\n  children: ReactNode;\n  dynamic?: boolean;\n  readonly?: boolean;\n};\n\nexport type chatMessagePropsType = {\n  chat: ChatMessageType;\n  lockChat: boolean;\n  lastMessage: boolean;\n};\n\nexport type formModalPropsType = {\n  open: boolean;\n  setOpen: Function;\n  flow: FlowType;\n};\n\nexport type genericModalPropsType = {\n  field_name?: string;\n  setValue: (value: string) => void;\n  value: string;\n  buttonText: string;\n  modalTitle: string;\n  type: number;\n  nodeClass?: APIClassType;\n  setNodeClass?: (Class: APIClassType, code?: string) => void;\n  children: ReactNode;\n  id?: string;\n  readonly?: boolean;\n};\n\nexport type buttonBoxPropsType = {\n  onClick: () => void;\n  title: string;\n  description: string;\n  icon: ReactNode;\n  bgColor: string;\n  textColor: string;\n  deactivate?: boolean;\n  size: \"small\" | \"medium\" | \"big\";\n};\n\nexport type FlowSettingsPropsType = {\n  open: boolean;\n  setOpen: (open: boolean) => void;\n};\n\nexport type groupDataType = {\n  [char: string]: string;\n};\n\nexport type cardComponentPropsType = {\n  data: FlowType;\n  onDelete?: () => void;\n  button?: JSX.Element;\n};\n\ntype tabsArrayType = {\n  code: string;\n  image: string;\n  language: string;\n  mode: string;\n  name: string;\n  description?: string;\n};\n\ntype getValueNodeType = {\n  id: string;\n  node: NodeType;\n  type: string;\n  value: null;\n};\n\ntype codeTabsFuncTempType = {\n  [key: string]: string | boolean;\n};\n\nexport type codeTabsPropsType = {\n  flow?: FlowType;\n  tabs: Array<tabsArrayType>;\n  activeTab: string;\n  setActiveTab: (value: string) => void;\n  isMessage?: boolean;\n  tweaks?: {\n    tweak?: { current: tweakType };\n    tweaksList?: { current: Array<string> };\n    buildContent?: (value: string) => ReactNode;\n    getValue?: (\n      value: string,\n      node: NodeType,\n      template: TemplateVariableType\n    ) => string;\n    buildTweakObject?: (\n      tw: string,\n      changes: string | string[] | boolean | number | Object[] | Object,\n      template: TemplateVariableType\n    ) => string | void;\n  };\n};\n\nexport type crashComponentPropsType = {\n  error: {\n    message: string;\n    stack: string;\n  };\n  resetErrorBoundary: (args) => void;\n};\n\nexport type validationStatusType = {\n  id: string;\n  params: string;\n  progress: number;\n  valid: boolean;\n  duration: string;\n};\n\nexport type ApiKey = {\n  id: string;\n  api_key: string;\n  name: string;\n  created_at: string;\n  last_used_at: string;\n  total_uses: number;\n};\nexport type fetchErrorComponentType = {\n  message: string;\n  description: string;\n};\n\nexport type dropdownButtonPropsType = {\n  firstButtonName: string;\n  onFirstBtnClick: () => void;\n  options: Array<{ name: string; onBtnClick: () => void }>;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/entities/index.ts",
    "content": "export type sidebarNavigationItemType = {\n  name: string;\n  href: string;\n  icon: React.ForwardRefExoticComponent<React.SVGProps<SVGSVGElement>>;\n  current: boolean;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/flow/index.ts",
    "content": "import { Edge, Node, ReactFlowJsonObject, Viewport, XYPosition } from \"@xyflow/react\";\nimport { APIClassType } from \"../api/index\";\n\nexport const enum OnlineState {\n  OffLine = 1,\n  OnLine = 2\n}\n\n/** 流程 */\nexport type FlowState = {\n  edges: {\n    source: string;\n    target: string;\n    /** 来源节点内部的唯一ID，目前只有condition节点需要 */\n    source_internal_id\n  }[];\n  views: FlowNode[];\n  viewport: any;\n}\n\n/** 流程节点 */\ninterface FlowNode {\n  id: string;\n  name: string;\n  type: string;\n  inputVariable: { [key: string]: any };\n  outputVariable: { [key: string]: any };\n  data?: {\n    edges: {\n      source: string;\n      target: string;\n    }[];\n    nodes: any[];\n    viewport: any;\n  }\n}\n\n\nexport type FlowType = {\n  name: string;\n  id: string;\n  data: ReactFlowJsonObject | null;\n  description: string;\n  status: number;\n  style?: FlowStyleType;\n  user_name?: string;\n  write: boolean;\n  guide_word: string\n  is_component?: boolean;\n  parent?: string;\n  date_created?: string;\n  updated_at?: string;\n  last_tested_version?: string;\n  logo?: string;\n};\nexport type NodeType = {\n  id: string;\n  type?: string;\n  position: XYPosition;\n  data: NodeDataType;\n  selected?: boolean;\n};\n\nexport type NodeDataType = {\n  showNode?: boolean;\n  type: string;\n  node?: APIClassType;\n  id: string;\n  output_types?: string[];\n};\n// FlowStyleType is the type of the style object that is used to style the\n// Flow card with an emoji and a color.\nexport type FlowStyleType = {\n  emoji: string;\n  color: string;\n  flow_id: string;\n};\n\nexport type TweaksType = Array<\n  {\n    [key: string]: {\n      output_key?: string;\n    };\n  } & FlowStyleType\n>;\n\n// right side\nexport type sourceHandleType = {\n  dataType: string;\n  id: string;\n  baseClasses: string[];\n};\n//left side\nexport type targetHandleType = {\n  inputTypes?: string[];\n  type: string;\n  fieldName: string;\n  id: string;\n  proxy?: { field: string; id: string };\n};\n\n\nexport type FlowVersionItem = {\n  create_time: string;\n  data: null | any; // Replace 'any' with a more specific type if known\n  description: null | string;\n  flow_id: string;\n  id: number;\n  is_current: number;\n  is_delete: number;\n  name: string;\n  update_time: string;\n  user_id: null | string;\n};\n\nexport interface WorkFlow {\n  id: string;\n  name: string;\n  description: string;\n  nodes: Node[];\n  edges: Edge[];\n  viewport: Viewport;\n  // status: number;\n  // style?: FlowStyleType;\n  // user_name?: string;\n  // write: boolean;\n  // guide_word: string;\n  // is_component?: boolean;\n  // parent?: string;\n}\n\nexport interface WorkflowNode {\n  /** node id */\n  id: string;\n  /** Display name */\n  name: string;\n  /** Description */\n  description: string;\n  /** Node type, */\n  type: string; // 'start' | 'output' | 'code' | 'llm' | 'rag' | 'qa_retriever' | 'agent' | 'end' | 'condition' | 'input' | 'report' | 'tool';\n  group_params: {\n    /** group name */\n    name?: string;\n    /** group key */\n    groupKey?: string;\n    /** group parameters */\n    params: WorkflowNodeParam[];\n  }[];\n\n  /** tab */\n  tab?: {\n    /** Current value */\n    value: string;\n    /** options */\n    options: {\n      /** Display label */\n      label: string;\n      /** Unique key */\n      key: string;\n      /** help text */\n      help?: string;\n    }[];\n  };\n\n  /**  tool id */\n  tool_id?: string;\n}\n\nexport interface WorkflowNodeParam {\n  groupTitle?: boolean;\n  /** Unique key */\n  key: string;\n  /** Optional display */\n  label?: string;\n  /** type */\n  type: string;\n  /** value */\n  value: any;\n  /** placeholder */\n  placeholder?: string;\n  /** help text */\n  help?: string;\n  /** tab */\n  tab?: string;\n  /** required*/\n  required?: boolean;\n  /**  multiple value */\n  multi?: boolean;\n  /** Array of options */\n  options?: any[];\n  test?: string,\n  hidden?: boolean;\n}\n\n/** 工作流消息结构 */\nexport interface WorkflowMessage {\n  category: string;              // \"processing\"\n  node_id?: string;               // Node identifier\n  flow_id: string;               // Flow identifier\n  chat_id: string | null;        // Nullable, could be null if not set\n  message_id: string | null;     // Nullable, could be null if not set\n  files: any[];                  // Array, likely for file attachments\n  is_bot: boolean;               // True if the sender is a bot\n  liked?: boolean;                 // Count or boolean representing like status\n  message: any;               // Actual message content, empty in this case\n  receiver: string | null;       // Nullable receiver field\n  sender: string | null;         // Nullable sender field\n  source: number;                // Source identifier, type unclear\n  user_id: number;               // User identifier, integer type\n  end: boolean;\n  update_time: string;\n  reasoning_log?: string; // 推理\n  extra?: string;\n}"
  },
  {
    "path": "src/frontend/platform/src/types/global.d.ts",
    "content": "export { };\n\ndeclare global {\n    interface Window {\n        SearchSkillsPage: any;\n        errorAlerts: (errorList: string[]) => void\n        _flow: any\n    }\n}\n\ndeclare module \"*.png\" {\n    const content: any;\n    export default content;\n}\n\n\ndeclare module \"*.svg\" {\n    const content: any;\n    export default content;\n}\n"
  },
  {
    "path": "src/frontend/platform/src/types/tabs/index.ts",
    "content": "import { Dispatch, SetStateAction } from \"react\";\nimport { FlowType, FlowVersionItem, TweaksType } from \"../flow\";\n\nexport type TabsContextType = {\n  flow: FlowType | null;\n  setFlow: (ac: string, t: FlowType) => void;\n  saveFlow: (flow: FlowType) => Promise<any>;\n  downloadFlow: (\n    flow: FlowType,\n    flowName: string,\n    flowDescription?: string\n  ) => void;\n  uploadFlow: (file?: File) => void;\n  getNodeId: (nodeType: string) => string;\n  tabsState: TabsState;\n  setTabsState: Dispatch<SetStateAction<TabsState>>;\n  paste: (\n    selection: { nodes: any; edges: any },\n    position: { x: number; y: number; paneX?: number; paneY?: number }\n  ) => void;\n  lastCopiedSelection: { nodes: any; edges: any };\n  setLastCopiedSelection: (selection: { nodes: any; edges: any }) => void;\n  setTweak: (tweak: TweaksType) => void;\n  getTweak: TweaksType[];\n  setVersion: (version: FlowVersionItem | null) => {},\n  version: FlowVersionItem\n};\n\nexport type TabsState = {\n  [key: string]: {\n    isPending: boolean;\n    formKeysData: {\n      template?: string;\n      input_keys?: Object[];\n      memory_keys?: Array<string>;\n      handle_keys?: Array<string>;\n    };\n  };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/templatesContext/index.ts",
    "content": "const template: { [char: string]: string } = {};\n\nexport type TemplateContextType = {\n  templates: typeof template;\n  setTemplates: (newState: {}) => void;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/typesContext/index.ts",
    "content": "import { ReactFlowInstance } from \"@xyflow/react\";\nimport { APIClassType } from \"../api\";\n\nconst types: { [char: string]: string } = {};\nconst template: { [char: string]: APIClassType } = {};\nconst data: { [char: string]: string } = {};\n\nexport type typesContextType = {\n  reactFlowInstance: ReactFlowInstance | null;\n  setReactFlowInstance: any;\n  deleteNode: (idx: string) => void;\n  types: typeof types;\n  setTypes: (newState: {}) => void;\n  templates: typeof template;\n  setTemplates: (newState: {}) => void;\n  data: typeof data;\n  setData: (newState: {}) => void;\n};\n"
  },
  {
    "path": "src/frontend/platform/src/types/utils/reactflowUtils.ts",
    "content": "import { Node, Edge } from \"@xyflow/react\";\nimport { FlowType, NodeType } from \"../flow\";\n\nexport type cleanEdgesType = {\n  flow: {\n    edges: Edge[];\n    nodes: NodeType[];\n  };\n  updateEdge: (edge: Edge[]) => void;\n};\n\nexport type unselectAllNodesType = {\n  updateNodes: (nodes: Node[]) => void;\n  data: Node[];\n};\n\nexport type updateEdgesHandleIdsType = {\n  nodes: NodeType[];\n  edges: Edge[];\n};\n\nexport type generateFlowType = { newFlow: FlowType; removedEdges: Edge[] };\n\nexport type findLastNodeType = {\n  nodes: NodeType[];\n  edges: Edge[];\n};\n"
  },
  {
    "path": "src/frontend/platform/src/util/advancedParamsTemplates.ts",
    "content": "// src/configs/advancedParamsTemplates.ts\n\n// 定义高级参数配置的类型接口\nexport interface AdvancedParams {\n    cache?: any;\n    extra_body?: any;\n    request_timeout?: any;\n    seed?: any;\n    streaming?: boolean;\n    temperature?: number | null;\n    top_p?: number | null;\n    reasoning?: any;\n    top_p?: number;\n    max_retries?: number;\n    disable_streaming?: boolean;\n    model_kwargs?: any;\n    model?: any;\n    endpoint?: any;\n    tags?: any;\n    default_request_timeout?: any;\n    api_base?: any;\n    default_headers?: any;\n    service_tier?: any;\n    base_url?: string;\n    http_client?: any;\n    max_tokens?: number;\n    n?: number;\n    tiktoken_model_name?: any;\n    num_ctx?: number;\n    num_gpu?: any;\n    chunk_size?: number;\n    [key: string]: any; // 允许其他自定义参数\n  }\n  \n  // LLM模型模板\n  export const llmTemplates: Record<string, AdvancedParams> = {\n    // 基础模板\n    'ollama-llm': {\n      \"temperature\": 0.8,\n      \"top_p\": 0.9,\n      \"seed\": null,\n      \"reasoning\": null\n    },\n  \n    'openai-llm': {\n      \"cache\": null,\n      \"extra_body\": null,\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 1\n    },\n  \n    'volcengine-llm': {\n      \"cache\": null,\n      \"extra_body\": {\n        \"thinking\": {\"type\": \"enabled\"}\n      },\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 1\n    },\n  \n    'silicon-llm': {\n      \"cache\": null,\n      \"extra_body\": {\n        \"enable_thinking\": true\n      },\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 1\n    },\n\n    'mindie-llm': {\n      \"cache\": null,\n      \"extra_body\": {\n        \"chat_template_kwargs\": {\"enable_thinking\": true}\n      },\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 1\n    },\n  \n    'qwen-llm': {\n      \"top_p\": 0.8,\n      \"streaming\": false,\n      \"max_retries\": 10,\n      \"cache\": null,\n      \"disable_streaming\": false,\n      \"model_kwargs\": {\n        \"enable_thinking\": true\n      }\n    },\n  \n    'qianfan-llm':{\n      \"cache\": null,\n      \"extra_body\": null,\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 1\n  },\n  \n    'zhipu-llm': {\n      \"temperature\": 0.95,\n      \"top_p\": 0.7,\n      \"cache\": null,\n      \"disable_streaming\": false,\n      \"streaming\": false,\n      \"tags\": null\n    },\n  \n    'minimax-llm': {\n      \"cache\": null,\n      \"disable_streaming\": false,\n      \"temperature\": 0.7,\n      \"top_p\": 0.95,\n      \"streaming\": false\n    },\n  \n    'anthropic-llm': {\n      \"cache\": null,\n      \"default_request_timeout\": null,\n      \"disable_streaming\": false,\n      \"streaming\": false,\n      \"temperature\": null,\n      \"top_p\": null,\n      \"model_kwargs\": null\n    },\n  \n    'deepseek-llm':{\n      \"cache\": null,\n      \"default_headers\": null,\n      \"disable_streaming\": false,\n      \"extra_body\": null,\n      \"request_timeout\": null,\n      \"seed\": null,\n      \"service_tier\": null,\n      \"streaming\": false,\n      \"temperature\": null,\n      \"top_p\": null,\n  },\n  \n  \n    'moonshot-llm': {\n      \"cache\": null,\n      \"disable_streaming\": false,\n      \"http_client\": null,\n      \"max_retries\": 2,\n      \"max_tokens\": 1024,\n      \"n\": 1,\n      \"streaming\": false,\n      \"tags\": null,\n      \"temperature\": 0.3,\n      \"tiktoken_model_name\": null\n  }\n    \n  };\n  \n  // Embedding模型模板\n  export const embeddingTemplates: Record<string, AdvancedParams> = {\n    'ollama-embedding': {\n      \"num_ctx\": 2048,\n      \"num_gpu\": null\n    },\n  \n    'xinference-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'llamacpp-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'vllm-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'openai-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'zhipu-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'minimax-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'tencent-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'volcengine-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'silicon-embedding': {\n      \"chunk_size\": 1000\n    },\n  \n    'azure-embedding': {\n      \"chunk_size\": 2048\n    },\n  \n    'qwen-embedding': {\n      \"max_retries\": 5\n    },\n  \n    'qianfan-embedding': {\n      \"chunk_size\": 16\n    }\n  };\n  \n  // 模型类型到模板的映射 (LLM)\n  export const llmModelTypeToTemplateKey: Record<string, string> = {\n    // OpenAI 风格模型\n    'openai': 'openai-llm',\n    'azure_openai': 'openai-llm',\n    'xinference': 'openai-llm',\n    'llamacpp': 'openai-llm',\n    'vllm': 'openai-llm',\n    'spark': 'openai-llm',    // 讯飞星火\n    'tencent': 'openai-llm',  // 腾讯云\n    \n    // 其他特殊模型\n    'ollama': 'ollama-llm',\n    'volcengine': 'volcengine-llm',\n    'silicon': 'silicon-llm',\n    'MindIE': 'mindie-llm',\n    'qwen': 'qwen-llm',       // 通义千问\n    'qianfan': 'qianfan-llm', // 百度千帆\n    'zhipu': 'zhipu-llm',     // 智谱清言\n    'minimax': 'minimax-llm',\n    'anthropic': 'anthropic-llm',\n    'deepseek': 'deepseek-llm',\n    'moonshot': 'moonshot-llm' // 月之暗面\n  };\n  \n  // 模型类型到模板的映射 (Embedding)\n  export const embeddingModelTypeToTemplateKey: Record<string, string> = {\n    'ollama': 'ollama-embedding',\n    'xinference': 'xinference-embedding',\n    'llamacpp': 'llamacpp-embedding',\n    'vllm': 'vllm-embedding',\n    'openai': 'openai-embedding',\n    'zhipu': 'zhipu-embedding',\n    'minimax': 'minimax-embedding',\n    'tencent': 'tencent-embedding',\n    'volcengine': 'volcengine-embedding',\n    'silicon': 'silicon-embedding',\n    'azure_openai': 'azure-embedding',\n    'qwen': 'qwen-embedding',\n    'qianfan': 'qianfan-embedding'\n  };\n  \n  // 获取指定模型类型和模型类别的模板\n  export const getAdvancedParamsTemplate = (modelType: string, modelCategory: 'llm' | 'embedding'): AdvancedParams => {\n\n    // 根据模型类别选择对应的映射表\n    const templateMap = modelCategory === 'llm' ? llmModelTypeToTemplateKey : embeddingModelTypeToTemplateKey;\n    const templates = modelCategory === 'llm' ? llmTemplates : embeddingTemplates;\n    \n    // 查找对应的模板键，默认使用openai风格模板\n    const templateKey = templateMap[modelType] || (modelCategory === 'llm' ? 'openai-llm' : 'openai-embedding');\n    \n    // 返回深拷贝的模板，避免原对象被修改\n    return JSON.parse(JSON.stringify(templates[templateKey]));\n  };\n  \n  // 将模板对象转换为格式化的JSON字符串\n  export const templateToJsonString = (template: AdvancedParams): string => {\n    return JSON.stringify(template, null, 2);\n  };"
  },
  {
    "path": "src/frontend/platform/src/util/flowCompatible.ts",
    "content": "import { generateUUID } from \"@/components/bs-ui/utils\";\n\n// 历史版本工作流转换脚本\nexport const flowVersionCompatible = (flow) => {\n    flow.nodes.forEach((node) => {\n\n        switch (node.data.type) {\n            case 'start': comptibleStart(node.data); break;\n            case 'input': comptibleInput(node.data); break;\n            case 'agent': comptibleAgent(node.data); break;\n            case 'output': comptibleOutput(node.data); break;\n            case 'llm': comptibleLLM(node.data); break;\n            case 'rag': comptibleRag(node.data); break;\n            case 'knowledge_retriever': comptibleKnowledgeRetriever(node.data); break;\n        }\n    })\n    return flow\n}\nconst comptibleRag = (node) => {\n    if (!node.v) {\n        node.v = 1\n    }\n    if (node.v == 1) {\n        const knowledgeGroup = node.group_params[0];\n        // 先读取旧参数值，再进行移除，避免丢失数据\n        const oldUserAuthParam = knowledgeGroup.params.find(p => p.key === 'user_auth');\n        const oldMaxChunkSizeParam = knowledgeGroup.params.find(p => p.key === 'max_chunk_size');\n\n        // 移除旧的拆散参数\n        knowledgeGroup.params = knowledgeGroup.params.filter(param =>\n            !['user_auth', 'max_chunk_size'].includes(param.key)\n        );\n\n        const knowledgeIndex = knowledgeGroup.params.findIndex(p => p.key === 'knowledge');\n        // 添加元数据过滤参数\n        const metadataFilterParam = {\n            key: \"metadata_filter\",\n            label: \"true\",\n            type: \"metadata_filter\",\n            value: {},\n        };\n        knowledgeGroup.params.splice(knowledgeIndex + 1, 0, metadataFilterParam);\n\n        // 构造高级检索配置参数\n        const advancedParam = {\n            key: \"advanced_retrieval_switch\",\n            label: \"true\",\n            type: \"search_switch\",\n            value: {\n                keyword_weight: 0.5,\n                vector_weight: 0.5,\n                user_auth: false,\n                search_switch: true,\n                rerank_flag: false,\n                rerank_model: \"\",\n                max_chunk_size: 15000,\n            }\n        };\n        // 从 v1 的 user_auth 与 max_chunk_size 继承值到新参数\n        if (oldUserAuthParam) {\n            advancedParam.value.user_auth = oldUserAuthParam.value;\n        }\n        if (oldMaxChunkSizeParam) {\n            advancedParam.value.max_chunk_size = oldMaxChunkSizeParam.value;\n        }\n        knowledgeGroup.params.splice(knowledgeIndex + 2, 0, advancedParam);\n\n        node.v = 2;\n    }\n    if (node.v == 2) {\n        const knowledgeGroup = node.group_params[0];\n        const metadataFilterExists = knowledgeGroup.params.some(p => p.key === 'metadata_filter');\n        if (!metadataFilterExists) {\n            const knowledgeIndex = knowledgeGroup.params.findIndex(p => p.key === 'knowledge');\n            const metadataFilterParam = {\n                key: \"metadata_filter\",\n                label: \"true\",\n                type: \"metadata_filter\",\n                value: {},\n            };\n            knowledgeGroup.params.splice(knowledgeIndex + 1, 0, metadataFilterParam);\n        }\n        node.v = 3;\n    }\n}\n\nconst comptibleKnowledgeRetriever = (node) => {\n    // 初始化版本（无v字段视为v1）\n    if (!node.v) {\n        node.v = 1;\n    }\n\n    // v1 → v2：确保元数据过滤参数存在\n    if (node.v == 1) {\n        const knowledgeGroup = node.group_params[0];\n        // 检查metadata_filter参数是否缺失\n        const metadataFilterExists = knowledgeGroup.params.some(p => p.key === 'metadata_filter');\n\n        if (!metadataFilterExists) {\n            // 找到knowledge参数的位置，在其后插入元数据过滤参数\n            const knowledgeIndex = knowledgeGroup.params.findIndex(p => p.key === 'knowledge');\n            const metadataFilterParam = {\n                key: \"metadata_filter\",\n                label: \"true\",\n                type: \"metadata_filter\",\n                value: {},\n            };\n            knowledgeGroup.params.splice(knowledgeIndex + 1, 0, metadataFilterParam);\n        }\n\n        // 升级版本号为v2\n        node.v = 2;\n    }\n};\n\n\nconst comptibleStart = (node) => {\n    if (!node.v) {\n        node.group_params[1].params[2].global = 'item:input_list'\n        node.group_params[1].params[2].value = node.group_params[1].params[2].value.map((item) => ({\n            key: generateUUID(6),\n            value: item\n        }))\n        // TODO 历史使用过的预知问题变量替换\n\n        node.v = 1\n    }\n    if (node.v == 1) {\n        node.group_params[1].params.unshift({\n            \"key\": \"user_info\",\n            \"global\": \"key\",\n            \"label\": \"true\",\n            \"type\": \"var\",\n            \"value\": \"\",\n        })\n\n        node.v = 2\n    }\n    if (node.v == 2) {\n        node.group_params[1].params.push({\n            \"key\": \"custom_variables\",\n            \"label\": \"true\",\n            \"global\": \"item:input_list\",\n            \"type\": \"global_var\",\n            \"value\": [],\n            \"help\": \"true\"\n        })\n        node.v = 3\n    }\n}\n\n\nconst comptibleInput = (node) => {\n    // 0 => 1\n    if (!node.v) {\n        node.tab.value = node.tab.value === 'form' ? 'form_input' : 'dialog_input'\n        node.tab.options[0].key = 'dialog_input'\n        node.tab.options[1].key = 'form_input'\n        node.group_params[0].params[0].tab = 'dialog_input'\n        node.group_params[0].params[1].tab = 'form_input'\n\n        node.group_params[0].params[1].global = 'item:form_input'\n\n        let i = 0\n        node.group_params[0].params[1].value = node.group_params[0].params[1].value.map((item) => {\n            if (item.type === 'file') {\n                i++\n                return {\n                    ...item,\n                    file_content: 'file_content' + i,\n                    file_path: 'file_path' + i,\n                    multiple: item.multi\n                }\n            }\n            return item\n        })\n\n        node.v = 1\n    }\n    // 1 => 2\n    if (node.v == 1) {\n        node.group_params[0].params.push({\n            key: \"dialog_files_content\",\n            global: \"key\",\n            label: \"true\",\n            type: \"var\",\n            tab: \"dialog_input\"\n        })\n\n        node.group_params[0].params.push({\n            key: \"dialog_files_content_size\",\n            label: \"true\",\n            type: \"char_number\",\n            min: 0,\n            value: 15000,\n            tab: \"dialog_input\"\n        })\n\n        node.group_params[0].params.push({\n            key: \"dialog_file_accept\",\n            label: \"true\",\n            type: \"select_fileaccept\",\n            value: \"all\",\n            tab: \"dialog_input\"\n        })\n\n        node.group_params[0].params.push({\n            key: \"dialog_image_files\",\n            global: \"key\",\n            label: \"true\",\n            type: \"var\",\n            tab: \"dialog_input\",\n            help: \"true\"\n        })\n\n        // 兼容文件类型\n        const formInput = node.group_params[0].params.find(item => item.key === 'form_input')\n        formInput.value = formInput.value.map((item, index) => {\n            if (item.type === 'file') {\n                item.file_type = 'all'\n                item.file_content_size = 15000\n                item.image_file = 'image_file' + (index || '')\n                return item\n            }\n            return item\n        })\n        node.v = 2\n    }\n    // 2 => 3\n    // if (node.v == 2) {\n    //     // 1. 提取 v2 中的原始参数\n    //     const oldParams = node.group_params[0].params;\n    //     const findParam = (key) => oldParams.find(p => p.key === key);\n\n    //     const userInput = findParam('user_input');\n    //     const filesContent = findParam('dialog_files_content');\n    //     const filesSize = findParam('dialog_files_content_size');\n    //     const fileAccept = findParam('dialog_file_accept');\n    //     const imageFiles = findParam('dialog_image_files');\n    //     const formInput = findParam('form_input');\n    //     formInput.value = []\n\n    //     // 2. 重新构造 group_params 数组，确保顺序和 v3 一致\n    //     node.group_params = [\n    //         // group：接收文本\n    //         {\n    //             \"name\": \"接收文本\",\n    //             \"params\": [userInput]\n    //         },\n    //         // group：文件配置 (inputfile)\n    //         {\n    //             \"name\": \"\",\n    //             \"groupKey\": \"inputfile\",\n    //             \"params\": [\n    //                 {\n    //                     \"groupTitle\": true,\n    //                     \"key\": \"user_input_file\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"value\": true\n    //                 },\n    //                 {\n    //                     \"key\": \"file_parse_mode\",\n    //                     \"type\": \"select_parsemode\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"value\": \"extract_text\"\n    //                 },\n    //                 {\n    //                     ...filesContent,\n    //                     \"global\": \"key\" // v3 中变更为 var\n    //                 },\n    //                 filesSize,\n    //                 fileAccept,\n    //                 {\n    //                     ...imageFiles,\n    //                     \"global\": \"key\" // v3 中变更为 var\n    //                 },\n    //                 {\n    //                     \"key\": \"dialog_file_paths\",\n    //                     \"global\": \"key\",\n    //                     \"label\": \"true\",\n    //                     \"type\": \"var\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"help\": \"true\"\n    //                 }\n    //             ]\n    //         },\n    //         // group：推荐问题配置 (custom)\n    //         {\n    //             \"name\": \"\",\n    //             \"groupKey\": \"custom\",\n    //             \"params\": [\n    //                 {\n    //                     \"groupTitle\": true,\n    //                     \"key\": \"recommended_questions_flag\",\n    //                     \"label\": \"true\",\n    //                     \"hidden\": \"true\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"help\": \"true\",\n    //                     \"value\": false\n    //                 },\n    //                 {\n    //                     \"key\": \"recommended_llm\",\n    //                     \"label\": \"true\",\n    //                     \"type\": \"bisheng_model\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"value\": \"\",\n    //                     \"placeholder\": \"true\",\n    //                     \"required\": true,\n    //                 },\n    //                 {\n    //                     \"key\": \"recommended_system_prompt\",\n    //                     \"label\": \"true\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"type\": \"var_textarea\",\n    //                     \"value\": \"true\",\n    //                     \"required\": true\n    //                 },\n    //                 {\n    //                     \"key\": \"recommended_history_num\",\n    //                     \"label\": \"true\",\n    //                     \"type\": \"slide\",\n    //                     \"tab\": \"dialog_input\",\n    //                     \"help\": \"true\",\n    //                     \"scope\": [1, 10],\n    //                     \"step\": 1,\n    //                     \"value\": 2\n    //                 }\n    //             ]\n    //         },\n    //         // group：表单输入\n    //         {\n    //             \"name\": \"\",\n    //             \"params\": [formInput]\n    //         }\n    //     ];\n\n    //     node.v = 3;\n    // }\n}\n\n\nconst comptibleAgent = (node) => {\n    if (!node.v) {\n        if (node.group_params[1].params[0].type === 'bisheng_model') {\n            node.group_params[1].params[0].type = 'agent_model'\n        }\n        node.v = 1\n    }\n\n    if (node.v == 1) {\n        node.group_params[2].params.push({\n            key: \"image_prompt\",\n            label: \"true\",\n            type: \"image_prompt\",\n            value: \"\",\n            help: \"true\"\n        })\n\n        node.v = 2\n    }\n}\n\n\nconst comptibleOutput = (node) => {\n    if (!node.v) {\n        node.v = 1\n    }\n    if (node.v == 1) {\n        node.group_params[0].params[0].key = 'message'\n        node.group_params[0].params[0].global = 'key'\n\n        node.v = 2\n    }\n}\n\n\nconst comptibleLLM = (node) => {\n    if (!node.v) {\n        node.v = 1\n    }\n\n    if (node.v == 1) {\n\n        node.group_params[2].params.push({\n            key: \"image_prompt\",\n            label: \"true\",\n            type: \"image_prompt\",\n            value: [],\n            help: \"true\"\n        })\n\n        node.v = 2\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/util/flowUtils.ts",
    "content": "import { getAssistantModelConfig, getLlmDefaultModel } from \"@/controllers/API/finetune\";\nimport { copyReportTemplate } from \"@/controllers/API/workflow\";\nimport { Node } from \"@xyflow/react\";\nimport i18next from \"i18next\";\nimport { cloneDeep } from \"lodash-es\";\nimport { useEffect, useRef, useState } from \"react\";\n\n// 节点名称自动命名\nexport function autoNodeName(nodes: Node[], name: string): string {\n    let newName = name;\n    let counter = 1;\n\n    // 检查新名称是否已经存在于 nodes 中\n    while (nodes.some(node => node.data.name === newName)) {\n        counter++;\n        const _name = name.replace(/\\d+$/, '')\n        newName = `${_name}${counter}`;\n    }\n\n    return newName;\n}\n\n// 在节点初始化时，将node中的模板变量替换为界面中对应的变量key\nexport function initNode(node, nds, t) {\n    const { id } = node;\n    if (node.type === \"tool\") {\n        if (node.is_preset) {\n            // 国际化工具节点\n            node.name = t(`tools.${node.tool_key}.name`, { ns: 'tool' })\n            node.description = t(`tools.${node.tool_key}.desc`, { ns: 'tool' })\n            return node;\n        }\n        return node;\n    }\n    const nodeMap = new Map(nds.map(n => [n.data.type, n.data]));\n    node.group_params.forEach(group => {\n        group.params.forEach(param => {\n            if (param.type !== \"var_textarea\" || typeof param.value !== \"string\" || !param.value) {\n                return;\n            }\n\n            const translationKey = `node.${node.type}.${param.key}.value`;\n            param.value = t(translationKey);\n\n            // Replace expressions by inserting the node id dynamically\n            param.value = param.value.replace(/{{#([^/]*\\/)?(.*?)#}}/g, (match, prefixMatch = '', expression) => {\n                let targetId = id;\n                let targetName = '';\n                if (prefixMatch) {\n                    const typePrefix = prefixMatch.replace('/', '');\n                    const targetNode = nodeMap.get(typePrefix);\n\n                    if (targetNode) {\n                        targetId = targetNode.id;\n                        targetName = `${targetNode.name}/`;\n                    } else {\n                        return match;\n                    }\n                }\n\n                param.varZh = param.varZh ?? {};\n                param.varZh[`${targetId}.${expression}`] = `${targetName}${expression}`;\n\n                return `{{#${targetId}.${expression}#}}`;\n            });\n        });\n    });\n\n    const newName = autoNodeName(nds, t(`node.${node.type}.name`))\n    node.name = newName\n    node.description = t(`node.${node.type}.description`)\n    return node;\n}\n\n// 工具节点tree\nexport function getToolTree(temp) {\n    const children = temp.children.map(item => {\n        return {\n            id: item.id,\n            tool_key: item.tool_key,\n            type: 'tool',\n            name: item.name,\n            description: item.desc,\n            group_params: [\n                {\n                    name: '工具参数',\n                    params: item.api_params.map(el => ({\n                        key: el.name,\n                        label: el.name,\n                        type: 'var_textarea',\n                        test: \"input\",\n                        desc: el.description,\n                        required: el.required,\n                        value: ''\n                    }))\n                },\n                {\n                    name: '输出',\n                    params: [{\n                        global: 'key',\n                        key: 'output',\n                        label: '输出变量',\n                        type: 'var',\n                        value: ''\n                    }]\n                }\n            ]\n        }\n    })\n\n    return {\n        name: temp.name,\n        is_preset: temp.is_preset,\n        children: children\n    }\n}\n\n// input特殊处理校验\nexport function filterParamByinputCheck(group) {\n    if (group.groupKey === 'inputfile') {\n        const userInputFileParam = group.params.find(p => p.key === 'user_input_file');\n        if (userInputFileParam && userInputFileParam.value === false) {\n            return [];\n        }\n\n        const parseMode = group.params.find(p => p.key === 'file_parse_mode')?.value;\n        const acceptType = group.params.find(p => p.key === 'dialog_file_accept')?.value;\n\n        return group.params.filter(param => {\n            const { key } = param;\n\n            if (!Object.prototype.hasOwnProperty.call(param, 'global')) {\n                return false;\n            }\n\n            if (parseMode === 'extract_text' && ['dialog_image_files', 'dialog_file_paths'].includes(key)) {\n                return false;\n            }\n            if (parseMode === 'keep_raw' && key === 'dialog_files_content') {\n                return false;\n            }\n            if (acceptType === 'file' && key === 'dialog_image_files') {\n                return false;\n            }\n\n            return true;\n        });\n    }\n    return group.params\n}\n\n// 变量是否存在flow中\n// 所有情况\n// start_3ca7f.preset_question\n// start_3ca7f.preset_question#uuid   type: \"input_list\"  value个数\n// input_dee6e.text_input2    type: form   变量名 -> value[0].key\n// llm_b12e5.output_start_d377c.chat_history   type:var && value是数组时  变量名 -> value[0].key\nexport function isVarInFlow(nodeId, nodes, varName, varNameCn) {\n    if (!varName || typeof varName !== 'string') return ''\n    const nodeName = nodes.find(node => node.id === nodeId).data.name\n    const varNodeId = varName.match(/^([^.]+)/)[1]\n    const res = nodes.some(node =>\n        varNodeId === node.id ? node.data.group_params.some(group => {\n            // input\n            const params = filterParamByinputCheck(group)\n            return params.some(param => {\n                if (param.key === 'custom_variables') {\n                    const questionId = varName.split('#')[1]\n                    const quwstionStr = varNameCn?.split('/')[1] || ''\n                    return param.value.some(item => item.key === questionId && item.label === quwstionStr)\n                } else if (param.type === 'input_list' && varName.indexOf('preset_question') !== -1) {\n                    const questionId = varName.split('#')[1]\n                    const quwstionStr = varNameCn?.split('/')[1] || ''\n                    return param.value.some(item => item.key === questionId && item.value === quwstionStr) // id and name 必须一致\n                } else if ((param.type === 'var' && Array.isArray(param.value) && param.value.length) || param.type === 'code_output') {\n                    return param.value.some(item => `${node.id}.${item.key}` === varName)\n                } else if (param.tab && param.tab !== node.data.tab.value) {\n                    return false\n                } else if (param.type === 'form') {\n                    return param.value.some(item => {\n                        // 文本类型\n                        if (item.type === 'text' && `${node.id}.${item.key}` !== varName) return false\n                        // if (item.multiple) return `${node.id}.${item.key}` === varName\n                        // 文件类型\n                        const vars = [`${node.id}.${item.key}`, `${node.id}.${item.file_content}`, `${node.id}.${item.file_path}`]\n                        // 图片类型追加校验变量\n                        item.file_type !== 'file' && vars.push(`${node.id}.${item.image_file}`)\n                        return vars.includes(varName)\n                    })\n                } else if (param.hidden) {\n                    return false\n                } else {\n                    return `${node.id}.${param.key}` === varName\n                }\n            })\n        }) : false\n    )\n    return res ? '' : i18next.t('nodeErrorMessage', { ns: 'flow', nodeName, varNameCn })\n}\n\n/**\n * 并行节点判断\n * // 测速数据\n    var a = [\n        { branch: \"0_0_0\", nodeId: \"input_28f7a\" },\n        { branch: \"0_0_0_0\", nodeId: \"input_6d972\" },\n        { branch: \"0_0_0_1\", nodeId: \"input_75275\" },\n        { branch: \"0_0_1\", nodeId: \"input_6bf08\" },\n        { branch: \"0_1\", nodeId: \"input_4f5cc\" } // 直接分支自 0\n    ];\n\n    var b = [\n        { branch: \"0_0\", nodeId: \"output_b808c\" }\n    ];\n */\nexport function findParallelNodes(a, b) {\n    const result = [];\n    const parents = b.sort((a, b) => a.branch.length - b.branch.length);\n\n    for (let i = 0; i < a.length; i++) {\n        const branch1 = a[i].branch;\n        const parentBranch1 = branch1.split('_').slice(0, -1).join('_');\n        for (let j = i + 1; j < a.length; j++) {\n            const branch2 = a[j].branch;\n\n            // 是否同一个分支\n            if (branch1.startsWith(branch2) || branch2.startsWith(branch1)) {\n                continue\n            }\n\n            // 获取父分支\n            const parentBranch2 = branch2.split('_').slice(0, -1).join('_');\n\n            // 检查父分支相同 & 节点不属于 b 的分支\n            const isSameParent = parentBranch1 === parentBranch2;\n            if (isSameParent) {\n                const isUnderBBranch = parents.some(node =>\n                    node.branch === parentBranch1\n                );\n                if (isUnderBBranch) {\n                    continue\n                }\n                result.push(a[i].nodeId, a[j].nodeId);\n            }\n\n            // 不属于同一个父分支节点\n            const isUnderBBranch = parents.some(node =>\n                branch1.startsWith(node.branch) && branch2.startsWith(node.branch)\n            );\n            if (isUnderBBranch) {\n                continue\n            }\n            result.push(a[i].nodeId, a[j].nodeId);\n        }\n    }\n\n    // 去重并返回结果\n    return [...new Set(result)];\n}\n\n/**\n * 复制粘贴节点\n * @param dom 事件绑定 dom\n * @param lastSelection 被复制对象\n * @param paste 粘贴时间回调，参数（克隆的lastSelection，鼠标当前坐标）\n * @param deps 依赖\n */\nexport function useCopyPasteNode(dom, lastSelection, paste, del, deps) {\n    const position = useRef({ x: 0, y: 0 });\n    const [lastCopiedSelection, setLastCopiedSelection] = useState(null);\n\n    useEffect(() => {\n        if (!dom) return\n        const onKeyDown = (event: KeyboardEvent) => {\n            console.log('event.target :>> ', event.target);\n            if (!dom.contains(event.target)) return\n            if (['INPUT', 'TEXTAREA'].includes(event.target.tagName)) return // 排除输入框内复制粘贴\n            if (\n                event.target instanceof HTMLInputElement ||\n                (event.target instanceof HTMLElement && event.target.isContentEditable)\n            ) return\n\n            if (\n                (event.ctrlKey || event.metaKey) &&\n                event.key === \"c\" &&\n                lastSelection\n            ) {\n                event.preventDefault();\n                setLastCopiedSelection(cloneDeep(lastSelection));\n            } else if (\n                (event.ctrlKey || event.metaKey) &&\n                event.key === \"v\" &&\n                lastCopiedSelection\n            ) {\n                event.preventDefault();\n                paste(lastCopiedSelection, position.current)\n            } else if (event.key === 'Delete' && lastSelection) {\n                del(lastSelection)\n            }\n        };\n        const handleMouseMove = (event) => {\n            position.current = { x: event.clientX, y: event.clientY };\n        };\n\n        document.addEventListener(\"keydown\", onKeyDown);\n        document.addEventListener(\"mousemove\", handleMouseMove);\n\n        return () => {\n            document?.removeEventListener(\"keydown\", onKeyDown);\n            document?.removeEventListener(\"mousemove\", handleMouseMove);\n        };\n    }, [dom, lastSelection, lastCopiedSelection, ...deps]);\n}\n\n\n// 过滤无用连线\nexport function filterUselessFlow(nodes, edges) {\n    return edges.filter(edge => {\n        const sourceNode = nodes.find(node => node.id === edge.source);\n        const targetNode = nodes.find(node => node.id === edge.target);\n        return sourceNode && targetNode;\n    })\n}\n\n// 导入工作流\nexport function importFlow() {\n    return new Promise((resolve, reject) => {\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \".json\";\n        input.onchange = (e: Event) => {\n            if ((e.target as HTMLInputElement).files[0].type === \"application/json\") {\n                const currentfile = (e.target as HTMLInputElement).files[0];\n                currentfile.text().then(async (text) => {\n                    try {\n                        let flow = JSON.parse(text);\n\n                        if (!flow || !Array.isArray(flow.nodes)) {\n                            return reject(\"flow.nodes 不存在或不是数组\");\n                        }\n                        // 使用 Promise.all 等待所有的 copyReportTemplate 完成\n                        await Promise.all(flow.nodes.map(async (node) => {\n                            await copyReportTemplate(node.data);\n                        }));\n\n                        // 夸环境模型自动更新为默认模型, 并清空知识库和工具\n                        if (flow.source !== location.host) {\n                            const [workflow, assistant] = await Promise.all([getLlmDefaultModel(), getAssistantModelConfig()])\n                            const workflowModelId = workflow.model_id\n                            const assistantModelId = assistant.llm_list.find(item => item.default).model_id\n                            delete flow.source\n\n                            flow.nodes.forEach(node => {\n                                if (['rag', 'llm', 'agent', 'qa_retriever'].includes(node.data.type)) {\n                                    node.data.group_params.forEach(group =>\n                                        group.params.forEach(param => {\n                                            if (param.type === 'bisheng_model') {\n                                                param.value = workflowModelId\n                                            } else if (param.type === 'agent_model') {\n                                                param.value = assistantModelId\n                                            } else if (param.type === 'knowledge_select_multi' && param.value.type !== 'tmp') {\n                                                param.value.value = []\n                                            } else if (param.type === 'qa_select_multi') {\n                                                param.value = []\n                                            } else if (param.type === 'add_tool') {\n                                                param.value = []\n                                            }\n                                        })\n                                    )\n                                }\n                            })\n                        }\n\n                        resolve(flow)\n                    } catch (error) {\n                        reject(error)\n                    }\n                });\n            }\n        };\n        input.onerror = reject\n        input.click();\n    })\n}\n\n// 计算复制后的节点目标位置\nexport function calculatePosition(nodes, position) {\n    if (nodes.some(node => node.position.x === position.x && node.position.y === position.y)) {\n        return calculatePosition(nodes, { x: position.x + 50, y: position.y + 50 })\n    }\n    return position\n}\n\n/**\n * Update node Preset Questions  or node name\n * use for selet textarea\n */\nconst createReg = (id) => [\n    new RegExp(`^[\\\\w_]+\\\\.([\\\\w_]+)?preset_question#${id}$`),\n    new RegExp(`^[\\\\w_]+\\\\.([\\\\w_]+)?preset_question_${id}$`)\n]\nexport function updateVariableName(paramItem, questions) {\n    const { node, question } = questions\n\n    if (question) {\n        const [regWell, regUnderline] = createReg(question.id)\n\n        return Object.keys(paramItem.varZh).reduce((change, _key) => {\n            if (regWell.test(_key)) {\n                paramItem.varZh[_key] = paramItem.varZh[_key].replace(/\\/[^\\/]+$/, '/' + question.name)\n                return true\n            } else if (regUnderline.test(_key)) {\n                paramItem.varZh[_key] = paramItem.varZh[_key].replace(/_[^_]+$/, '_' + question.name)\n                return true\n            }\n            return change\n        }, false)\n    }\n\n    if (node) { // output has no node name, so no need to update\n        return Object.keys(paramItem.varZh).reduce((change, _key) => {\n            if (_key.startsWith(node.id)) {\n                paramItem.varZh[_key] = paramItem.varZh[_key].replace(/^[^\\/]+\\//, node.name + '/')\n                return true\n            }\n            return change\n        }, false)\n    }\n    return false\n}\n\n/**\n * Update node Preset Questions  or node name\n * use for code\n */\nexport function updateVariableNameByCode(paramItem, questions) {\n    const { node, question } = questions\n\n    if (question) {\n        const [regWell, regUnderline] = createReg(question.id)\n        const newItems = paramItem.value.reduce((change, item) => {\n            if (regWell.test(item.value)) {\n                item.label = item.label.replace(/\\/[^\\/]+$/, '/' + question.name)\n                return paramItem.value\n            } else if (regUnderline.test(item.value)) {\n                item.label = item.label.replace(/_[^_]+$/, '_' + question.name)\n                return paramItem.value\n            }\n            return change\n        }, null)\n        return newItems && [...newItems]\n    }\n\n    if (node) { // output has no node name, so no need to update\n        const newItems = paramItem.value.map(item => {\n            if (item.value.startsWith(node.id)) {\n                item.label = item.label.replace(/^[^\\/]+\\//, node.name + '/')\n            }\n            return item\n        }, null)\n        return newItems && [...newItems]\n    }\n    return null\n}\n\n\n/**\n * Update node Preset Questions  or node name\n * use for condition\n */\nexport function updateVariableNameByCondition(paramItem, questions) {\n    const { node, question } = questions\n\n    if (question) {\n        const [regWell, regUnderline] = createReg(question.id)\n\n        const replaceLabel = (conditionm, key, label) => {\n            if (regWell.test(conditionm[key])) {\n                conditionm[label] = conditionm[label].replace(/\\/[^\\/]+$/, '/' + question.name)\n            } else if (regUnderline.test(conditionm[key])) {\n                conditionm[label] = conditionm[label].replace(/_[^_]+$/, '_' + question.name)\n            }\n        }\n\n        return paramItem.value.map((item) => {\n            item.conditions.forEach(condition => {\n                replaceLabel(condition, 'left_var', 'left_label')\n                replaceLabel(condition, 'right_value', 'right_label')\n            })\n\n            return item\n        })\n    }\n\n    if (node) { // output has no node name, so no need to update\n        const replaceLabel = (conditionm, key, label) => {\n            if (conditionm[key].startsWith(node.id)) {\n                conditionm[label] = conditionm[label].replace(/^[^\\/]+\\//, node.name + '/')\n                return paramItem.value\n            }\n        }\n\n        return paramItem.value.map((item) => {\n            item.conditions.forEach(condition => {\n                replaceLabel(condition, 'left_var', 'left_label')\n                replaceLabel(condition, 'right_value', 'right_label')\n            })\n\n            return item\n        })\n    }\n    return null\n}"
  },
  {
    "path": "src/frontend/platform/src/util/hook.ts",
    "content": "import { useRef, useEffect, useCallback, useMemo, useContext, useState } from \"react\";\nimport { copyText } from \"../utils\";\nimport { alertContext } from \"../contexts/alertContext\";\nimport { useTranslation } from \"react-i18next\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport { useReactFlow } from \"@xyflow/react\";\n\nexport function useMiniDebounce(fn, delay = 300) {\n    const timer = useRef(null)\n\n    return useCallback((...args) => {\n        if (timer.current) clearTimeout(timer.current)\n        timer.current = setTimeout(() => fn(...args), delay)\n    }, [fn, delay])\n}\n\n// 防抖\nexport function useDebounce(func: any, wait: number, immediate: boolean, callback?: any,): (any?: any) => any {\n    let timer = useRef<NodeJS.Timeout | null>();\n    const fnRef = useRef<any>(func);\n    useEffect(() => { fnRef.current = func; }, [func]);\n    const timerCancel = function () { if (timer.current) clearTimeout(timer.current); };\n\n    function debounced(...args: any[]) {\n        const runFunction = () => {\n            return callback\n                ? callback(fnRef.current.apply(fnRef.current, args))\n                : fnRef.current.apply(fnRef.current, args);\n        };\n        timerCancel();\n        if (immediate) {\n            let runNow = !timer.current;\n            timer.current = setTimeout(() => { timer.current = null; }, wait);\n            if (runNow) {\n                runFunction();\n            }\n        } else {\n            timer.current = setTimeout(() => { runFunction(); }, wait);\n        }\n    }\n    debounced.cancel = function () { timerCancel(); timer.current = null; };\n    return useCallback(debounced, [wait, immediate, timerCancel, func]);\n}\n\nexport function useHasForm(flow) {\n    return useMemo(() => {\n        // 如果有 VariableNode  inputnode 就属于\n        return !!flow?.data?.nodes.find(node => [\"VariableNode\", \"InputFileNode\"].includes(node.data.type))\n    }, [flow])\n}\n\nexport function useHasReport(flow) {\n    return useMemo(() =>\n        !!flow?.data?.nodes.find(node => \"Report\" === node.data.type)\n        , [flow])\n}\n\n// 复制文案\nexport function useCopyText() {\n    const { t } = useTranslation()\n    const { setSuccessData } = useContext(alertContext);\n    return (url) => {\n        copyText(url).then(() =>\n            setSuccessData({ title: t('chat.copyTip') })\n        )\n    }\n}\n\n// 表格通用逻辑（分页展示、表格数据、关键词检索）\nexport function useTable<T extends object>(param, apiFun) {\n    const unInitDataRef = useRef(!!param.unInitData);\n\n    const cancelLoadingWhenReload = param.cancelLoadingWhenReload || false;\n    const [page, setPage] = useState({\n        page: 1,\n        pageSize: param.pageSize || 20,\n        keyword: \"\",\n    });\n    const [total, setTotal] = useState(0);\n    const [loading, setLoading] = useState(false);\n    const [data, setData] = useState<T[]>([]);\n    const [loaded, setLoaded] = useState(false);\n\n    const paramRef = useRef({ ...param });\n\n    const requestIdRef = useRef(0); // 控制请求响应顺序\n    const loadData = () => {\n        !cancelLoadingWhenReload && setLoading(true);\n        const requestId = ++requestIdRef.current\n        apiFun({ ...page, ...paramRef.current }).then(res => {\n            console.log('res :>> ', res);\n            if (requestId !== requestIdRef.current) return\n            if (!(\"total\" in res)) return console.error('该接口不支持分页，无法正常使用 useTable')\n            setData(res.data);\n            setTotal(res.total);\n            setLoading(false);\n        }).catch(() => {\n            setLoading(false);\n        })\n\n        setLoaded(true);\n    }\n    const debounceLoad = useDebounce(loadData, 600, false)\n\n    // 记录旧值\n    const prevValueRef = useRef(page);\n\n    useEffect(() => {\n        if (unInitDataRef.current) return;\n        // 排除页码防抖\n        prevValueRef.current.page === page.page ? debounceLoad() : loadData()\n        prevValueRef.current = page\n    }, [page])\n\n    return {\n        page: page.page,\n        pageSize: page.pageSize,\n        total,\n        loaded,\n        loading,\n        data,\n        setPage: (p) => setPage({ ...page, page: p }),\n        reload: debounceLoad,\n        // 检索\n        search: (keyword) => {\n            unInitDataRef.current = false;\n            setPage({ ...page, page: 1, keyword });\n        },\n        // 数据过滤\n        filterData: (p) => {\n            unInitDataRef.current = false;\n            paramRef.current = { ...paramRef.current, ...p };\n            page.page === 1 ? loadData() : setPage({ ...page, page: 1 });\n        },\n        // 更新数据\n        refreshData: (compareFn, data) => {\n            // 乐观更新\n            setData(list => {\n                return list.map(item => {\n                    if (compareFn(item)) {\n                        const other = typeof data === 'function' ? data(item) : data\n                        return { ...item, ...other }\n                    }\n                    return item\n                })\n            })\n        },\n        clean: () => {\n            unInitDataRef.current = !!param.unInitData;\n            setPage({\n                page: 1,\n                pageSize: param.pageSize || 20,\n                keyword: \"\",\n            })\n            paramRef.current = {}\n            setTotal(0)\n            setData([])\n            setLoaded(false)\n        }\n    }\n}\n\n/**\n * 复制粘贴\n * @param dom 事件绑定 dom\n * @param lastSelection 被复制对象\n * @param paste 粘贴时间回调，参数（克隆的lastSelection，鼠标当前坐标）\n * @param deps 依赖\n */\nexport function useCopyPaste(dom, lastSelection, paste, deps) {\n    const position = useRef({ x: 0, y: 0 });\n    const [lastCopiedSelection, setLastCopiedSelection] = useState(null);\n\n    useEffect(() => {\n        if (!dom) return\n        const onKeyDown = (event: KeyboardEvent) => {\n            if (event.target.tagName === 'INPUT') return // 排除输入框内复制粘贴\n\n            if (\n                (event.ctrlKey || event.metaKey) &&\n                event.key === \"c\" &&\n                lastSelection\n            ) {\n                event.preventDefault();\n                setLastCopiedSelection(cloneDeep(lastSelection));\n            } else if (\n                (event.ctrlKey || event.metaKey) &&\n                event.key === \"v\" &&\n                lastCopiedSelection\n            ) {\n                event.preventDefault();\n                paste(lastCopiedSelection, position.current)\n            } else if (\n                (event.ctrlKey || event.metaKey) &&\n                event.key === \"g\" &&\n                lastSelection\n            ) {\n                event.preventDefault();\n            }\n        };\n        const handleMouseMove = (event) => {\n            position.current = { x: event.clientX, y: event.clientY };\n        };\n\n        dom.addEventListener(\"keydown\", onKeyDown);\n        dom.addEventListener(\"mousemove\", handleMouseMove);\n\n        return () => {\n            dom?.removeEventListener(\"keydown\", onKeyDown);\n            dom?.removeEventListener(\"mousemove\", handleMouseMove);\n        };\n    }, [dom, lastSelection, lastCopiedSelection, ...deps]);\n}\n\n// undo redo\nexport function useUndoRedo<T>(maxHistorySize = 100) {\n    const [past, setPast] = useState<T[]>([]); // 过去的历史记录（past）\n    const [future, setFuture] = useState<T[]>([]); // 和未来的历史记录（future)\n    const { setNodes, setEdges, getNodes, getEdges } = useReactFlow();\n\n    /**\n     * 快照功能\n     * 将上一次的状态保存到 past 中，并清空 future\n     * if max = 2: [1,x,x] -> [x, x]\n     * [x,x,new]\n     */\n    const takeSnapshot = useCallback(() => {\n        setPast((old) => {\n            const newPast = old.slice(\n                old.length - maxHistorySize + 1,\n                old.length\n            );\n            newPast.push({ nodes: cloneDeep(getNodes()), edges: cloneDeep(getEdges()) });\n            return newPast;\n        });\n        setFuture([]);\n    }, [setPast, setFuture, getNodes, getEdges]);\n\n    /**\n     * 撤销\n     * 将状态恢复到 past 中的上一个状态，并将当前状态保存到 future 中\n     * past [x,x,x,del]\n     * future [x,x,x,add当前]\n     * undoCall(del)\n     */\n    const undo = useCallback(() => {\n        const pastState = past[past.length - 1];\n\n        if (pastState) {\n            setPast((old) => {\n                // let newPast = cloneDeep(old);\n                let newPast = old.slice(0, old.length - 1);\n                return newPast;\n            });\n            setFuture((old) => {\n                // let newFuture = cloneDeep(old);\n                let newFuture = old;\n                newFuture.push({ nodes: cloneDeep(getNodes()), edges: cloneDeep(getEdges()) });\n                return newFuture;\n            });\n            setNodes(pastState.nodes);\n            setEdges(pastState.edges);\n        }\n    }, [past, setFuture, setPast]);\n    /**\n     * 重做\n     * 将状态恢复到 future 中的下一个状态，并将当前状态保存到 past 中\n     * past [x,x,x,add当前]\n     * future [x,x,x,del]\n     * redoCall(del)\n     */\n    const redo = useCallback(() => {\n        const futureState = future[future.length - 1];\n\n        if (futureState) {\n            setFuture((old) => {\n                // let newFuture = cloneDeep(old);\n                let newFuture = old.slice(0, old.length - 1);\n                return newFuture;\n            });\n            setPast((old) => {\n                // let newPast = cloneDeep(old);\n                let newPast = old\n                newPast.push({ nodes: cloneDeep(getNodes()), edges: cloneDeep(getEdges()) });;\n                return newPast;\n            });\n            setNodes(futureState.nodes);\n            setEdges(futureState.edges);\n        }\n    }, [future, setFuture, setPast]);\n\n    // 快捷键\n    useEffect(() => {\n        const keyDownHandler = (event: KeyboardEvent) => {\n            if (event.key === \"z\" && (event.ctrlKey || event.metaKey) && event.shiftKey) {\n                redo();\n            } else if (event.key === \"y\" && (event.ctrlKey || event.metaKey)) {\n                event.preventDefault();\n                redo();\n            } else if (event.key === \"z\" && (event.ctrlKey || event.metaKey)) {\n                undo();\n            }\n        };\n\n        document.addEventListener(\"keydown\", keyDownHandler);\n        return () => document.removeEventListener(\"keydown\", keyDownHandler);\n    }, [undo, redo]);\n\n    return {\n        clean: () => { setPast([]); setFuture([]) },\n        takeSnapshot\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/util/reactflowUtils.ts",
    "content": "import { cloneDeep } from \"lodash-es\";\nimport {\n  Connection,\n  Edge,\n  Node,\n  OnSelectionChangeParams,\n  ReactFlowJsonObject,\n  XYPosition,\n} from \"@xyflow/react\";\n\n// import { downloadFlowsFromDatabase } from \"../controllers/API\";\nimport {\n  APIKindType,\n  APIObjectType,\n  APITemplateType,\n  TemplateVariableType\n} from \"../types/api\";\nimport {\n  FlowType,\n  NodeDataType,\n  NodeType,\n  sourceHandleType,\n  targetHandleType,\n} from \"../types/flow\";\nimport {\n  findLastNodeType,\n  generateFlowType,\n  unselectAllNodesType,\n  updateEdgesHandleIdsType,\n} from \"../types/utils/reactflowUtils\";\nimport { generateUUID } from \"../utils\";\nimport {\n  getFieldTitle,\n  toTitleCase\n} from \"./utils\";\n\nexport const LANGFLOW_SUPPORTED_TYPES = new Set([\n  \"str\",\n  \"bool\",\n  \"float\",\n  \"code\",\n  \"prompt\",\n  \"file\",\n  \"int\",\n  \"dict\",\n  \"NestedDict\",\n  \"bisheng_model\",\n  \"bisheng_embedding\"\n]);\n\n// edges (线)文档\nexport function cleanEdges(nodes: Node[], edges: Edge[]) {\n  let newEdges = cloneDeep(edges);\n  edges.forEach((edge) => {\n    // check if the source and target node still exists\n    const sourceNode = nodes.find((node) => node.id === edge.source);\n    const targetNode = nodes.find((node) => node.id === edge.target);\n    if (!sourceNode || !targetNode) {\n      newEdges = newEdges.filter((edg) => edg.id !== edge.id);\n      return;\n    }\n    // check if the source and target handle still exists\n    const sourceHandle = edge.sourceHandle; //right\n    const targetHandle = edge.targetHandle; //left\n    if (targetHandle) {\n      const field = targetHandle.split('|')[1]\n      const targetNodeTargetHandle =\n        targetNode.data.node!.template[field]?.type + '|' +\n        field + '|' +\n        targetNode.data.id\n\n      // if (targetNode.data.node!.template[field]?.proxy) {\n      //   id.proxy = targetNode.data.node!.template[field]?.proxy;\n      // }\n      if (targetNodeTargetHandle !== targetHandle) {\n        newEdges = newEdges.filter((e) => e.id !== edge.id);\n      }\n    }\n    if (sourceHandle) {\n      const sourceNodeSourceHandle =\n        sourceNode.data.type + '|' +\n        sourceNode.data.id + '|' +\n        sourceNode.data.node!.base_classes.join('|')\n\n      if (sourceNodeSourceHandle !== sourceHandle) {\n        newEdges = newEdges.filter((e) => e.id !== edge.id);\n      }\n    }\n  });\n  return newEdges;\n}\n\nexport function unselectAllNodes({ updateNodes, data }: unselectAllNodesType) {\n  let newNodes = cloneDeep(data);\n  newNodes.forEach((node: Node) => {\n    node.selected = false;\n  });\n  updateNodes(newNodes!);\n}\n\n// utils中的新方法\nexport function isValidConnection(\n  { source, target, sourceHandle, targetHandle }: Connection,\n  nodes: Node[],\n  edges: Edge[]\n) {\n  const targetHandleObject: targetHandleType = scapeJSONParse(targetHandle!);\n  const sourceHandleObject: sourceHandleType = scapeJSONParse(sourceHandle!);\n  if (\n    targetHandleObject.inputTypes?.some(\n      (n) => n === sourceHandleObject.dataType\n    ) ||\n    sourceHandleObject.baseClasses.some(\n      (t) =>\n        targetHandleObject.inputTypes?.some((n) => n === t) ||\n        t === targetHandleObject.type\n    )\n  ) {\n    let targetNode = nodes.find((node) => node.id === target!)?.data?.node;\n    if (!targetNode) {\n      if (!edges.find((e) => e.targetHandle === targetHandle)) {\n        return true;\n      }\n    } else if (\n      (!targetNode.template[targetHandleObject.fieldName].list &&\n        !edges.find((e) => e.targetHandle === targetHandle)) ||\n      targetNode.template[targetHandleObject.fieldName].list\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function removeApiKeys(flow: FlowType): FlowType {\n  let cleanFLow = cloneDeep(flow);\n  cleanFLow.data!.nodes.forEach((node) => {\n    for (const key in node.data.node.template) {\n      if (node.data.node.template[key].password) {\n        node.data.node.template[key].value = \"\";\n      }\n    }\n  });\n  return cleanFLow;\n}\n\nexport function updateTemplate(\n  reference: APITemplateType,\n  objectToUpdate: APITemplateType\n): APITemplateType {\n  let clonedObject: APITemplateType = cloneDeep(reference);\n\n  // Loop through each key in the reference object\n  for (const key in clonedObject) {\n    // If the key is not in the object to update, add it\n    if (objectToUpdate[key] && objectToUpdate[key].value) {\n      clonedObject[key].value = objectToUpdate[key].value;\n    }\n    if (\n      objectToUpdate[key] &&\n      objectToUpdate[key].advanced !== null &&\n      objectToUpdate[key].advanced !== undefined\n    ) {\n      clonedObject[key].advanced = objectToUpdate[key].advanced;\n    }\n  }\n  return clonedObject;\n}\n\nexport const processDataFromFlow = (flow: FlowType, refreshIds = true) => {\n  let data = flow?.data ? flow.data : null;\n  if (data) {\n    processFlowEdges(flow);\n    //prevent node update for now\n    // processFlowNodes(flow);\n    //add animation to text type edges\n    updateEdges(data.edges);\n    // updateNodes(data.nodes, data.edges);\n    if (refreshIds) updateIds(data); // Assuming updateIds is defined elsewhere\n  }\n  return data;\n};\n// utils中的新方法\nexport function updateIds(newFlow: ReactFlowJsonObject) {\n  let idsMap = {};\n\n  if (newFlow.nodes)\n    newFlow.nodes.forEach((node: NodeType) => {\n      // Generate a unique node ID\n      let newId = getNodeId(\n        node.data.node?.flow ? \"GroupNode\" : node.data.type\n      );\n      idsMap[node.id] = newId;\n      node.id = newId;\n      node.data.id = newId;\n      // Add the new node to the list of nodes in state\n    });\n\n  if (newFlow.edges)\n    newFlow.edges.forEach((edge: Edge) => {\n      edge.source = idsMap[edge.source];\n      edge.target = idsMap[edge.target];\n      const sourceHandleObject: sourceHandleType = scapeJSONParse(\n        edge.sourceHandle!\n      );\n      edge.sourceHandle = scapedJSONStringfy({\n        ...sourceHandleObject,\n        id: edge.source,\n      });\n      if (edge.data?.sourceHandle?.id) {\n        edge.data.sourceHandle.id = edge.source;\n      }\n      const targetHandleObject: targetHandleType = scapeJSONParse(\n        edge.targetHandle!\n      );\n      edge.targetHandle = scapedJSONStringfy({\n        ...targetHandleObject,\n        id: edge.target,\n      });\n      if (edge.data?.targetHandle?.id) {\n        edge.data.targetHandle.id = edge.target;\n      }\n      edge.id =\n        \"reactflow__edge-\" +\n        edge.source +\n        edge.sourceHandle +\n        \"-\" +\n        edge.target +\n        edge.targetHandle;\n    });\n  return idsMap;\n}\n\nexport function buildTweaks(flow: FlowType) {\n  if (!flow.data) return {}\n  return flow.data!.nodes.reduce((acc, node) => {\n    acc[node.data.id] = {};\n    return acc;\n  }, {});\n}\n\nexport function validateNode(node: NodeType, edges: Edge[]): Array<string> {\n  if (!node.data?.node?.template || !Object.keys(node.data.node.template)) {\n    return [\n      \"We've noticed a potential issue with a node in the flow. Please review it and, if necessary, submit a bug report with your exported flow file. Thank you for your help!\",\n    ];\n  }\n\n  const {\n    type,\n    node: { template },\n  } = node.data;\n\n  return Object.keys(template).reduce((errors: Array<string>, t) => {\n    if (\n      template[t].required &&\n      template[t].show &&\n      (template[t].value === undefined ||\n        template[t].value === null ||\n        template[t].value === \"\") &&\n      !edges.some(\n        (edge) =>\n          (scapeJSONParse(edge.targetHandle!) as targetHandleType).fieldName ===\n          t &&\n          (scapeJSONParse(edge.targetHandle!) as targetHandleType).id ===\n          node.id\n      )\n    ) {\n      errors.push(`${type} is missing ${getFieldTitle(template, t)}.`);\n    } else if (\n      template[t].type === \"dict\" &&\n      template[t].required &&\n      template[t].show &&\n      (template[t].value !== undefined ||\n        template[t].value !== null ||\n        template[t].value !== \"\")\n    ) {\n      if (hasDuplicateKeys(template[t].value))\n        errors.push(\n          `${type} (${getFieldTitle(\n            template,\n            t\n          )}) contains duplicate keys with the same values.`\n        );\n      if (hasEmptyKey(template[t].value))\n        errors.push(\n          `${type} (${getFieldTitle(template, t)}) field must not be empty.`\n        );\n    }\n    return errors;\n  }, [] as string[]);\n}\n\nexport function validateNodes(nodes: Node[], edges: Edge[]) {\n  if (nodes.length === 0) {\n    return [\n      \"No nodes found in the flow. Please add at least one node to the flow.\",\n    ];\n  }\n  return nodes.flatMap((n: NodeType) => validateNode(n, edges));\n}\n\nexport function updateEdges(edges: Edge[]) {\n  if (edges)\n    edges.forEach((edge) => {\n      const targetHandleObject: targetHandleType = scapeJSONParse(\n        edge.targetHandle!\n      );\n      edge.className =\n        (targetHandleObject.type === \"Text\"\n          ? \"stroke-gray-800 \"\n          : \"stroke-gray-900 \") + \" stroke-connection\";\n      edge.animated = targetHandleObject.type === \"Text\";\n    });\n}\n\nexport function addVersionToDuplicates(flow: FlowType, flows: FlowType[]) {\n  const existingNames = flows.map((item) => item.name);\n  let newName = flow.name;\n  let count = 1;\n\n  while (existingNames.includes(newName)) {\n    newName = `${flow.name} (${count})`;\n    count++;\n  }\n\n  return newName;\n}\n\nexport function updateEdgesHandleIds({\n  edges,\n  nodes,\n}: updateEdgesHandleIdsType): Edge[] {\n  let newEdges = cloneDeep(edges);\n  newEdges.forEach((edge) => {\n    const sourceNodeId = edge.source;\n    const targetNodeId = edge.target;\n    const sourceNode = nodes.find((node) => node.id === sourceNodeId);\n    const targetNode = nodes.find((node) => node.id === targetNodeId);\n    let source = edge.sourceHandle;\n    let target = edge.targetHandle;\n    //right\n    let newSource: sourceHandleType;\n    //left\n    let newTarget: targetHandleType;\n    if (target && targetNode) {\n      let field = target.split(\"|\")[1];\n      newTarget = {\n        type: targetNode.data.node!.template[field].type,\n        fieldName: field,\n        id: targetNode.data.id,\n        inputTypes: targetNode.data.node!.template[field].input_types,\n      };\n    }\n    if (source && sourceNode) {\n      newSource = {\n        id: sourceNode.data.id,\n        baseClasses: sourceNode.data.node!.base_classes,\n        dataType: sourceNode.data.type,\n      };\n    }\n    edge.sourceHandle = scapedJSONStringfy(newSource!);\n    edge.targetHandle = scapedJSONStringfy(newTarget!);\n    const newData = {\n      sourceHandle: scapeJSONParse(edge.sourceHandle),\n      targetHandle: scapeJSONParse(edge.targetHandle),\n    };\n    edge.data = newData;\n  });\n  return newEdges;\n}\n\nexport function handleKeyDown(\n  e:\n    | React.KeyboardEvent<HTMLInputElement>\n    | React.KeyboardEvent<HTMLTextAreaElement>,\n  inputValue: string | string[] | null,\n  block: string\n) {\n  //condition to fix bug control+backspace on Windows/Linux\n  if (\n    (typeof inputValue === \"string\" &&\n      (e.metaKey === true || e.ctrlKey === true) &&\n      e.key === \"Backspace\" &&\n      (inputValue === block ||\n        inputValue?.charAt(inputValue?.length - 1) === \" \" ||\n        /[!@#$%^&*()\\-_=+[\\]{}|;:'\",.<>/?\\\\`´]/.test(inputValue?.charAt(inputValue?.length - 1)))) ||\n    (navigator.userAgent.toUpperCase().includes(\"MAC\") &&\n      e.ctrlKey === true &&\n      e.key === \"Backspace\")\n  ) {\n    e.preventDefault();\n    e.stopPropagation();\n  }\n\n  if (e.ctrlKey === true && e.key === \"Backspace\" && inputValue === block) {\n    e.preventDefault();\n    e.stopPropagation();\n  }\n}\n\nexport function handleOnlyIntegerInput(\n  event: React.KeyboardEvent<HTMLInputElement>\n) {\n  if (\n    event.key === \".\" ||\n    event.key === \"-\" ||\n    event.key === \",\" ||\n    event.key === \"e\" ||\n    event.key === \"E\" ||\n    event.key === \"+\"\n  ) {\n    event.preventDefault();\n  }\n}\n\nexport function getConnectedNodes(\n  edge: Edge,\n  nodes: Array<NodeType>\n): Array<NodeType> {\n  const sourceId = edge.source;\n  const targetId = edge.target;\n  return nodes.filter((node) => node.id === targetId || node.id === sourceId);\n}\n\nexport function convertObjToArray(singleObject: object | string) {\n  if (typeof singleObject === \"string\") {\n    singleObject = JSON.parse(singleObject);\n  }\n  if (Array.isArray(singleObject)) return singleObject;\n\n  let arrConverted: any[] = [];\n  if (typeof singleObject === \"object\") {\n    for (const key in singleObject) {\n      if (Object.prototype.hasOwnProperty.call(singleObject, key)) {\n        const newObj = {};\n        newObj[key] = singleObject[key];\n        arrConverted.push(newObj);\n      }\n    }\n  }\n  return arrConverted;\n}\n\nexport function convertArrayToObj(arrayOfObjects) {\n  if (!Array.isArray(arrayOfObjects)) return arrayOfObjects;\n\n  let objConverted = {};\n  for (const obj of arrayOfObjects) {\n    for (const key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        objConverted[key] = obj[key];\n      }\n    }\n  }\n  return objConverted;\n}\n\nexport function hasDuplicateKeys(array) {\n  const keys = {};\n  // Transforms an empty object into an object array without opening the 'editNode' modal to prevent the flow build from breaking.\n  if (!Array.isArray(array)) array = [{ \"\": \"\" }];\n  for (const obj of array) {\n    for (const key in obj) {\n      if (keys[key]) {\n        return true;\n      }\n      keys[key] = true;\n    }\n  }\n  return false;\n}\n\nexport function hasEmptyKey(objArray) {\n  // Transforms an empty object into an array without opening the 'editNode' modal to prevent the flow build from breaking.\n  if (!Array.isArray(objArray)) objArray = [];\n  for (const obj of objArray) {\n    for (const key in obj) {\n      if (obj.hasOwnProperty(key) && key === \"\") {\n        return true; // Found an empty key\n      }\n    }\n  }\n  return false; // No empty keys found\n}\n\nexport function convertValuesToNumbers(arr) {\n  return arr.map((obj) => {\n    const newObj = {};\n    for (const key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        let value = obj[key];\n        if (/^\\d+$/.test(value)) {\n          value = value?.toString().trim();\n        }\n        newObj[key] =\n          value === \"\" || isNaN(value) ? value.toString() : Number(value);\n      }\n    }\n    return newObj;\n  });\n}\n\nexport function scapedJSONStringfy(json: object): string {\n  return customStringify(json).replace(/\"/g, \"œ\");\n}\nexport function scapeJSONParse(json: string): any {\n  let parsed = json.replace(/œ/g, '\"');\n  return JSON.parse(parsed);\n}\n\n// this function receives an array of edges and return true if any of the handles are not a json string\n// 数据结构转新版本\nexport function checkOldEdgesHandles(edges: Edge[]): boolean {\n  return edges.some(\n    (edge) =>\n      !edge.sourceHandle ||\n      !edge.targetHandle ||\n      !edge.sourceHandle.includes(\"{\") ||\n      !edge.targetHandle.includes(\"{\")\n  );\n}\n\nexport function customStringify(obj: any): string {\n  if (typeof obj === \"undefined\") {\n    return \"null\";\n  }\n\n  if (obj === null || typeof obj !== \"object\") {\n    if (obj instanceof Date) {\n      return `\"${obj.toISOString()}\"`;\n    }\n    return JSON.stringify(obj);\n  }\n\n  if (Array.isArray(obj)) {\n    const arrayItems = obj.map((item) => customStringify(item)).join(\",\");\n    return `[${arrayItems}]`;\n  }\n\n  const keys = Object.keys(obj).sort();\n  const keyValuePairs = keys.map(\n    (key) => `\"${key}\":${customStringify(obj[key])}`\n  );\n  return `{${keyValuePairs.join(\",\")}}`;\n}\n\nexport function getMiddlePoint(nodes: Node[]) {\n  let middlePointX = 0;\n  let middlePointY = 0;\n\n  nodes.forEach((node) => {\n    middlePointX += node.position.x;\n    middlePointY += node.position.y;\n  });\n\n  const totalNodes = nodes.length;\n  const averageX = middlePointX / totalNodes;\n  const averageY = middlePointY / totalNodes;\n\n  return { x: averageX, y: averageY };\n}\n\nexport function getNodeId(nodeType: string) {\n  return nodeType + \"-\" + generateUUID(5);\n}\n\nexport function getHandleId(\n  source: string,\n  sourceHandle: string,\n  target: string,\n  targetHandle: string\n) {\n  return (\n    \"reactflow__edge-\" + source + sourceHandle + \"-\" + target + targetHandle\n  );\n}\n\nexport function generateFlow(\n  selection: OnSelectionChangeParams,\n  nodes: Node[],\n  edges: Edge[],\n  name: string\n): generateFlowType {\n  const newFlowData = { nodes, edges, viewport: { zoom: 1, x: 0, y: 0 } };\n  /*\tremove edges that are not connected to selected nodes on both ends\n   */\n  newFlowData.edges = selection.edges.filter(\n    (edge) =>\n      selection.nodes.some((node) => node.id === edge.target) &&\n      selection.nodes.some((node) => node.id === edge.source)\n  );\n  newFlowData.nodes = selection.nodes;\n\n  const newFlow: FlowType = {\n    data: newFlowData,\n    is_component: false,\n    name: name,\n    description: \"\",\n    //generating local id instead of using the id from the server, can change in the future\n    id: generateUUID(5),\n    status: 0,\n    write: false,\n    guide_word: \"\"\n  };\n  // filter edges that are not connected to selected nodes on both ends\n  // using O(n²) aproach because the number of edges is small\n  // in the future we can use a better aproach using a set\n  return {\n    newFlow,\n    removedEdges: edges.filter(\n      (edge) =>\n        (selection.nodes.some((node) => node.id === edge.target) ||\n          selection.nodes.some((node) => node.id === edge.source)) &&\n        newFlowData.edges.every((e) => e.id !== edge.id)\n    ),\n  };\n}\n\nexport function reconnectEdges(groupNode: NodeType, excludedEdges: Edge[]) {\n  let newEdges = cloneDeep(excludedEdges);\n  if (!groupNode.data.node!.flow) return [];\n  const { nodes, edges } = groupNode.data.node!.flow!.data!;\n  const lastNode = findLastNode(groupNode.data.node!.flow!.data!);\n  newEdges.forEach((edge) => {\n    // 选中的 node 有链接其他 node\n    if (lastNode && edge.source === lastNode.id) {\n      edge.source = groupNode.id;\n      const sourceHandleArr = edge.sourceHandle.split('|')\n      sourceHandleArr[1] = groupNode.id\n      edge.sourceHandle = sourceHandleArr.join('|');\n      // edge.data.sourceHandle = newSourceHandle;\n    }\n    // 选中的 node 有被链接的 node\n    if (nodes.some((node) => node.id === edge.target)) {\n      const targetNode = nodes.find((node) => node.id === edge.target)!;\n      const targetHandleArr = edge.targetHandle.split('|')\n      targetHandleArr[targetHandleArr.length - 1] = groupNode.id;\n      targetHandleArr[1] = targetHandleArr[1] + \"_\" + targetNode.id;\n      // const proxy = { id: targetNode.id, field: targetHandle.fieldName };\n      // newTargetHandle.proxy = proxy;\n      edge.target = groupNode.id;\n      edge.targetHandle = targetHandleArr.join('|');\n      // edge.data.targetHandle = newTargetHandle;\n    }\n  });\n  return newEdges;\n}\n\nexport function filterFlow(\n  selection: OnSelectionChangeParams,\n  setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,\n  setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void\n) {\n  setNodes((nodes) => nodes.filter((node) => !selection.nodes.includes(node)));\n  setEdges((edges) => edges.filter((edge) => !selection.edges.includes(edge)));\n}\n\nexport function findLastNode({ nodes, edges }: findLastNodeType) {\n  /*\n    this function receives a flow and return the last node\n  */\n  let lastNode = nodes.find((n) => !edges.some((e) => e.source === n.id));\n  return lastNode;\n}\n\nexport function updateFlowPosition(NewPosition: XYPosition, flow: FlowType) {\n  const middlePoint = getMiddlePoint(flow.data!.nodes);\n  let deltaPosition = {\n    x: NewPosition.x - middlePoint.x,\n    y: NewPosition.y - middlePoint.y,\n  };\n  return {\n    ...flow,\n    data: {\n      ...flow.data!,\n      nodes: flow.data!.nodes.map((node) => ({\n        ...node,\n        position: {\n          x: node.position.x + deltaPosition.x,\n          y: node.position.y + deltaPosition.y,\n        },\n      })),\n    },\n  };\n}\n\nexport function concatFlows(\n  flow: FlowType,\n  setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,\n  setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void\n) {\n  const { nodes, edges } = flow.data!;\n  setNodes((old) => [...old, ...nodes]);\n  setEdges((old) => [...old, ...edges]);\n}\n\nexport function validateSelection(\n  selection: OnSelectionChangeParams,\n  edges: Edge[]\n): Array<string> {\n  //add edges to selection if selection mode selected only nodes\n  if (selection.edges.length === 0) {\n    selection.edges = edges;\n  }\n  // get only edges that are connected to the nodes in the selection\n  // first creates a set of all the nodes ids\n  let nodesSet = new Set(selection.nodes.map((n) => n.id));\n  // then filter the edges that are connected to the nodes in the set\n  let connectedEdges = selection.edges.filter(\n    (e) => nodesSet.has(e.source) && nodesSet.has(e.target)\n  );\n  // add the edges to the selection\n  selection.edges = connectedEdges;\n\n  let errorsArray: Array<string> = [];\n  // check if there is more than one node\n  if (selection.nodes.length < 2) {\n    errorsArray.push(\"Please select more than one node\");\n  }\n\n  //check if there are two or more nodes with free outputs\n  if (\n    selection.nodes.filter(\n      (n) => !selection.edges.some((e) => e.source === n.id)\n    ).length > 1\n  ) {\n    errorsArray.push(\"Please select only one node with free outputs\");\n  }\n\n  // check if there is any node that does not have any connection\n  if (\n    selection.nodes.some(\n      (node) =>\n        !selection.edges.some((edge) => edge.target === node.id) &&\n        !selection.edges.some((edge) => edge.source === node.id)\n    )\n  ) {\n    errorsArray.push(\"Please select only nodes that are connected\");\n  }\n  return errorsArray;\n}\nfunction updateGroupNodeTemplate(template: APITemplateType) {\n  /*this function receives a template, iterates for it's items\n  updating the visibility of all basic types setting it to advanced true*/\n  Object.keys(template).forEach((key) => {\n    let type = template[key].type;\n    let input_types = template[key].input_types;\n    if (\n      LANGFLOW_SUPPORTED_TYPES.has(type) &&\n      !template[key].required && // 非必填项group 中不展示\n      !input_types\n    ) {\n      template[key].advanced = true;\n    }\n    //prevent code fields from showing on the group node\n    if (type === \"code\") {\n      template[key].show = false;\n    }\n  });\n  return template;\n}\nexport function mergeNodeTemplates({\n  nodes,\n  edges,\n}: {\n  nodes: NodeType[];\n  edges: Edge[];\n}): APITemplateType {\n  /* this function receives a flow and iterate throw each node\n    and merge the templates with only the visible fields\n    if there are two keys with the same name in the flow, we will update the display name of each one\n    to show from which node it came from\n  */\n  let template: APITemplateType = {};\n  nodes.forEach((node) => {\n    let nodeTemplate = cloneDeep(node.data.node!.template);\n    Object.keys(nodeTemplate)\n      .filter((field_name) => field_name.charAt(0) !== \"_\")\n      .forEach((key) => {\n        if (!isHandleConnected(edges, key, nodeTemplate[key], node.id)) {\n          template[key + \"_\" + node.id] = nodeTemplate[key];\n          template[key + \"_\" + node.id].proxy = { id: node.id, field: key };\n          if (node.type === \"groupNode\") {\n            template[key + \"_\" + node.id].display_name =\n              node.data.node!.flow!.name + \" - \" + nodeTemplate[key].name;\n          } else {\n            template[key + \"_\" + node.id].display_name =\n              //data id already has the node name on it\n              nodeTemplate[key].display_name\n                ? nodeTemplate[key].display_name\n                : nodeTemplate[key].name\n                  ? toTitleCase(nodeTemplate[key].name)\n                  : toTitleCase(key);\n          }\n        }\n      });\n  });\n  return template;\n}\nfunction isHandleConnected(\n  edges: Edge[],\n  key: string,\n  field: TemplateVariableType,\n  nodeId: string\n) {\n  /*\n    this function receives a flow and a handleId and check if there is a connection with this handle\n  */\n  if (field.proxy) {\n    if (\n      edges.some(\n        (e) =>\n          e.targetHandle ===\n          scapedJSONStringfy({\n            type: field.type,\n            fieldName: key,\n            id: nodeId,\n            proxy: { id: field.proxy!.id, field: field.proxy!.field },\n            inputTypes: field.input_types,\n          } as targetHandleType)\n      )\n    ) {\n      return true;\n    }\n  } else {\n    if (edges.some(\n      (e) => e.targetHandle === `${field.type}|${key}|${nodeId}`\n    )) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function generateNodeTemplate(Flow: FlowType) {\n  /*\n    this function receives a flow and generate a template for the group node\n  */\n  let template = mergeNodeTemplates({\n    nodes: Flow.data!.nodes,\n    edges: Flow.data!.edges,\n  });\n  updateGroupNodeTemplate(template);\n  return template;\n}\n\nexport function generateNodeFromFlow(\n  flow: FlowType,\n  getNodeId: (type: string) => string\n): NodeType {\n  const { nodes } = flow.data!;\n  const outputNode = cloneDeep(findLastNode(flow.data!));\n  const position = getMiddlePoint(nodes);\n  let data = cloneDeep(flow);\n  const id = getNodeId(outputNode?.data.type!);\n  // 检查是否有 fileinput\n  const hasFileInput = flow.data.nodes.some((node) => node.data.type === \"InputFileNode\")\n\n  const newGroupNode: NodeType = {\n    data: {\n      id,\n      type: hasFileInput ? 'InputFileNode' : outputNode?.data.type!,\n      node: {\n        output_types: outputNode!.data.node!.output_types,\n        display_name: \"Group\",\n        documentation: \"\",\n        base_classes: outputNode!.data.node!.base_classes,\n        description: outputNode.data.node.description,\n        template: generateNodeTemplate(data),\n        flow: data,\n      },\n    },\n    id,\n    position,\n    type: \"genericNode\",\n  };\n  return newGroupNode;\n}\n\nexport function connectedInputNodesOnHandle(\n  nodeId: string,\n  handleId: string,\n  { nodes, edges }: { nodes: NodeType[]; edges: Edge[] }\n) {\n  const connectedNodes: Array<{ name: string; id: string; isGroup: boolean }> =\n    [];\n  // return the nodes connected to the input handle of the node\n  const TargetEdges = edges.filter((e) => e.target === nodeId);\n  TargetEdges.forEach((edge) => {\n    if (edge.targetHandle === handleId) {\n      const sourceNode = nodes.find((n) => n.id === edge.source);\n      if (sourceNode) {\n        if (sourceNode.type === \"groupNode\") {\n          let lastNode = findLastNode(sourceNode.data.node!.flow!.data!);\n          while (lastNode && lastNode.type === \"groupNode\") {\n            lastNode = findLastNode(lastNode.data.node!.flow!.data!);\n          }\n          if (lastNode) {\n            connectedNodes.push({\n              name: sourceNode.data.node!.flow!.name,\n              id: lastNode.id,\n              isGroup: true,\n            });\n          }\n        } else {\n          connectedNodes.push({\n            name: sourceNode.data.type,\n            id: sourceNode.id,\n            isGroup: false,\n          });\n        }\n      }\n    }\n  });\n  return connectedNodes;\n}\n\nfunction updateProxyIdsOnTemplate(\n  template: APITemplateType,\n  idsMap: { [key: string]: string }\n) {\n  Object.keys(template).forEach((key) => {\n    if (template[key].proxy && idsMap[template[key].proxy!.id]) {\n      template[key].proxy!.id = idsMap[template[key].proxy!.id];\n    }\n  });\n}\n\nfunction updateEdgesIds(edges: Edge[], idsMap: { [key: string]: string }) {\n  edges.forEach((edge) => {\n    let targetHandle: targetHandleType = edge.data.targetHandle;\n    if (targetHandle.proxy && idsMap[targetHandle.proxy!.id]) {\n      targetHandle.proxy!.id = idsMap[targetHandle.proxy!.id];\n    }\n    edge.data.targetHandle = targetHandle;\n    edge.targetHandle = scapedJSONStringfy(targetHandle);\n  });\n}\n\n// （新）\nexport function processFlowEdges(flow: FlowType) {\n  if (!flow.data || !flow.data.edges) return;\n  if (checkOldEdgesHandles(flow.data.edges)) {\n    const newEdges = updateEdgesHandleIds(flow.data);\n    flow.data.edges = newEdges;\n  }\n  //update edges colors\n  flow.data.edges.forEach((edge) => {\n    edge.className = \"\";\n    edge.style = { stroke: \"#555\" };\n  });\n}\n\nexport function expandGroupNode(\n  id: string,\n  flow: FlowType,\n  template: APITemplateType,\n  nodes: Node[],\n  edges: Edge[],\n  setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,\n  setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void\n) {\n  // const idsMap = updateIds(flow!.data!);\n  // updateProxyIdsOnTemplate(template, idsMap);\n  let flowEdges = edges;\n  // updateEdgesIds(flowEdges, idsMap);\n  const gNodes: NodeType[] = cloneDeep(flow?.data?.nodes!);\n  const gEdges = cloneDeep(flow!.data!.edges);\n  //redirect edges to correct proxy node\n  let updatedEdges: Edge[] = [];\n  flowEdges.forEach((edge) => {\n    let newEdge = cloneDeep(edge);\n    // group 组件输入线\n    if (newEdge.target === id) {\n      const targetHandleArr = newEdge.targetHandle.split(\"|\");\n      const _index = targetHandleArr[1].lastIndexOf('_');\n      const tempField = targetHandleArr[1].slice(0, _index)\n      const nodeId = targetHandleArr[1].slice(_index + 1)\n      targetHandleArr[1] = tempField\n      targetHandleArr[2] = nodeId\n\n      newEdge.target = nodeId\n      newEdge.targetHandle = targetHandleArr.join('|')\n\n      // const targetHandle: targetHandleType = newEdge.targetHandle;\n      // if (targetHandle.proxy) {\n      //   let type = targetHandle.type;\n      //   let field = targetHandle.proxy.field;\n      //   let proxyId = targetHandle.proxy.id;\n      //   let inputTypes = targetHandle.inputTypes;\n      //   let node: NodeType = gNodes.find((n) => n.id === proxyId)!;\n      //   if (node) {\n      //     newEdge.target = proxyId;\n      //     let newTargetHandle: targetHandleType = {\n      //       fieldName: field,\n      //       type,\n      //       id: proxyId,\n      //       inputTypes: inputTypes,\n      //     };\n      //     if (node.data.node?.flow) {\n      //       newTargetHandle.proxy = {\n      //         field: node.data.node.template[field].proxy?.field!,\n      //         id: node.data.node.template[field].proxy?.id!,\n      //       };\n      //     }\n      //     newEdge.data.targetHandle = newTargetHandle;\n      //     newEdge.targetHandle = scapedJSONStringfy(newTargetHandle);\n      //   }\n      // }\n    }\n    // group 组件输出线\n    if (newEdge.source === id) {\n      const lastNode = cloneDeep(findLastNode(flow!.data!));\n      newEdge.source = lastNode!.id;\n      const sourceHandleArr = newEdge.sourceHandle.split('|')\n      sourceHandleArr[1] = lastNode!.id;\n\n      // newEdge.data.sourceHandle = newSourceHandle;\n      newEdge.sourceHandle = sourceHandleArr.join('|');\n    }\n    if (edge.target === id || edge.source === id) {\n      updatedEdges.push(newEdge);\n    }\n  });\n  //update template values\n  Object.keys(template).forEach((key) => {\n    let { field, id } = template[key].proxy!;\n    let nodeIndex = gNodes.findIndex((n) => n.id === id);\n    if (nodeIndex !== -1) {\n      let proxy: { id: string; field: string } | undefined;\n      let display_name: string | undefined;\n      let show = gNodes[nodeIndex].data.node!.template[field].show;\n      let advanced = gNodes[nodeIndex].data.node!.template[field].advanced;\n      if (gNodes[nodeIndex].data.node!.template[field].display_name) {\n        display_name =\n          gNodes[nodeIndex].data.node!.template[field].display_name;\n      } else {\n        display_name = gNodes[nodeIndex].data.node!.template[field].name;\n      }\n      if (gNodes[nodeIndex].data.node!.template[field].proxy) {\n        proxy = gNodes[nodeIndex].data.node!.template[field].proxy;\n      }\n      gNodes[nodeIndex].data.node!.template[field] = template[key];\n      gNodes[nodeIndex].data.node!.template[field].show = show;\n      gNodes[nodeIndex].data.node!.template[field].advanced = advanced;\n      gNodes[nodeIndex].data.node!.template[field].display_name = display_name;\n      // keep the nodes selected after ungrouping\n      // gNodes[nodeIndex].selected = false;\n      if (proxy) {\n        gNodes[nodeIndex].data.node!.template[field].proxy = proxy;\n      } else {\n        delete gNodes[nodeIndex].data.node!.template[field].proxy;\n      }\n    }\n  });\n\n  const filteredNodes = [...nodes.filter((n) => n.id !== id), ...gNodes];\n  const filteredEdges = [\n    ...edges.filter((e) => e.target !== id && e.source !== id),\n    ...gEdges,\n    ...updatedEdges,\n  ];\n  setNodes(filteredNodes);\n  setEdges(filteredEdges);\n}\n\nexport function getGroupStatus(\n  flow: FlowType,\n  ssData: { [key: string]: { valid: boolean; params: string } }\n) {\n  let status = { valid: true, params: \"Built sucessfully ✨\" };\n  const { nodes } = flow.data!;\n  const ids = nodes.map((n: NodeType) => n.data.id);\n  ids.forEach((id) => {\n    if (!ssData[id]) {\n      status = ssData[id];\n      return;\n    }\n    if (!ssData[id].valid) {\n      status = { valid: false, params: ssData[id].params };\n    }\n  });\n  return status;\n}\n\nexport function createFlowComponent(\n  nodeData: NodeDataType,\n  version: string\n): FlowType {\n  const flowNode: FlowType = {\n    data: {\n      edges: [],\n      nodes: [\n        {\n          data: { ...nodeData, node: { ...nodeData.node, official: false } },\n          id: nodeData.id,\n          position: { x: 0, y: 0 },\n          type: \"genericNode\",\n        },\n      ],\n      viewport: { x: 1, y: 1, zoom: 1 },\n    },\n    description: nodeData.node?.description || \"\",\n    name: nodeData.node?.display_name || nodeData.type || \"\",\n    id: nodeData.id || \"\",\n    is_component: true,\n    last_tested_version: version,\n    status: 0,\n    write: false,\n    guide_word: \"\"\n  };\n  return flowNode;\n}\n\nexport function downloadNode(NodeFLow: any) {\n  const element = document.createElement(\"a\");\n  const file = new Blob([JSON.stringify(NodeFLow)], {\n    type: \"application/json\",\n  });\n  element.href = URL.createObjectURL(file);\n  element.download = `${NodeFLow.name || NodeFLow.node.display_name}.json`;\n  element.click();\n}\n\nexport function updateComponentNameAndType(\n  data: any,\n  component: NodeDataType\n) { }\n\nexport function removeFileNameFromComponents(flow: FlowType) {\n  flow.data!.nodes.forEach((node: NodeType) => {\n    Object.keys(node.data.node!.template).forEach((field) => {\n      if (node.data.node?.template[field].type === \"file\") {\n        node.data.node!.template[field].value = \"\";\n      }\n    });\n    if (node.data.node?.flow) {\n      removeFileNameFromComponents(node.data.node.flow);\n    }\n  });\n}\n\nexport function typesGenerator(data: APIObjectType) {\n  return Object.keys(data)\n    .reverse()\n    .reduce((acc, curr) => {\n      Object.keys(data[curr]).forEach((c: keyof APIKindType) => {\n        acc[c] = curr;\n        // Add the base classes to the accumulator as well.\n        data[curr][c].base_classes?.forEach((b) => {\n          acc[b] = curr;\n        });\n      });\n      return acc;\n    }, {});\n}\n\nexport function templatesGenerator(data: APIObjectType) {\n  return Object.keys(data).reduce((acc, curr) => {\n    Object.keys(data[curr]).forEach((c: keyof APIKindType) => {\n      //prevent wrong overwriting of the component template by a group of the same type\n      if (!data[curr][c].flow) acc[c] = data[curr][c];\n    });\n    return acc;\n  }, {});\n}\n\nexport function downloadFlow(\n  flow: FlowType,\n  flowName: string,\n  flowDescription?: string\n) {\n  let clonedFlow = cloneDeep(flow);\n  removeFileNameFromComponents(clonedFlow);\n  // create a data URI with the current flow data\n  const jsonString = `data:text/json;chatset=utf-8,${encodeURIComponent(\n    JSON.stringify({\n      ...clonedFlow,\n      name: flowName,\n      description: flowDescription,\n    })\n  )}`;\n\n  // create a link element and set its properties\n  const link = document.createElement(\"a\");\n  link.href = jsonString;\n  link.download = `${flowName && flowName != \"\" ? flowName : flow.name}.json`;\n\n  // simulate a click on the link element to trigger the download\n  link.click();\n}\n\nexport const createNewFlow = (\n  flowData: ReactFlowJsonObject,\n  flow: FlowType\n) => {\n  return {\n    description: flow?.description ?? '',\n    name: flow?.name ? flow.name : \"Untitled document\",\n    data: flowData,\n    id: \"\",\n    is_component: flow?.is_component ?? false,\n  };\n};\n"
  },
  {
    "path": "src/frontend/platform/src/util/utils.ts",
    "content": "import axios from \"axios\";\nimport clsx, { ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport * as XLSX from 'xlsx';\nimport { APITemplateType } from \"../types/api\";\nimport { checkUpperWords } from \"../utils\";\n\nexport function classNames(...classes: Array<string>): string {\n    return classes.filter(Boolean).join(\" \");\n}\n\nexport function downloadFile(url, label) {\n    console.log('download file :>> ', url);\n\n    return axios.get(url, { responseType: \"blob\" }).then((res: any) => {\n        const blob = new Blob([res.data]);\n        const link = document.createElement(\"a\");\n        link.href = URL.createObjectURL(blob);\n        link.download = label;\n        link.click();\n        URL.revokeObjectURL(link.href);\n    }).catch(console.error);\n}\n\nexport function downloadJson(content) {\n    const jsonStr = JSON.stringify(content)\n    const jsonString = `data:text/json;chatset=utf-8,${encodeURIComponent(jsonStr)}`;\n\n    const link = document.createElement(\"a\");\n    link.href = jsonString;\n    link.download = `sample.json`;\n\n    link.click();\n}\n\nexport function cn(...inputs: ClassValue[]): string {\n    return twMerge(clsx(inputs));\n}\n\n// 交集\nexport function intersectArrays(...arrays) {\n    if (arrays.length === 0) {\n        return [];\n    }\n\n    // 使用第一个数组作为基准\n    const baseArray = arrays[0];\n\n    // 过滤出基准数组中的元素，这些元素在其他所有数组中都存在\n    const intersection = baseArray.filter((element) => {\n        return arrays.every((array) => array.includes(element));\n    });\n\n    return intersection;\n}\n\n// 时间戳转换 天时分秒（dhms）\nexport function formatMilliseconds(ms: number, format: string): string {\n    const secondsInMillisecond = 1;\n    const minutesInMillisecond = secondsInMillisecond * 60;\n    const hoursInMillisecond = minutesInMillisecond * 60;\n    const daysInMillisecond = hoursInMillisecond * 24;\n\n    const days = Math.floor(ms / daysInMillisecond);\n    const remainingHours = ms % daysInMillisecond;\n    const hours = Math.floor(remainingHours / hoursInMillisecond);\n    const remainingMinutes = remainingHours % hoursInMillisecond;\n    const minutes = Math.floor(remainingMinutes / minutesInMillisecond);\n    const remainingSeconds = remainingMinutes % minutesInMillisecond;\n    const seconds = Math.floor(remainingSeconds / secondsInMillisecond);\n\n    let formattedString = format.replace('dd', days.toString());\n    formattedString = formattedString.replace('hh', hours.toString());\n    formattedString = formattedString.replace('mm', minutes.toString());\n    formattedString = formattedString.replace('ss', seconds.toString());\n\n    // Remove any extra spaces\n    // formattedString = formattedString.replace(/\\s+/g, ' ').trim();\n\n    return formattedString;\n}\n\n// Date转换为目标格式\nexport function formatDate(date: Date, format: string): string {\n    const addZero = (num) => num < 10 ? `0${num}` : `${num}`\n    const replacements = {\n        'yyyy': date.getFullYear(),\n        'MM': addZero(date.getMonth() + 1),\n        'dd': addZero(date.getDate()),\n        'HH': addZero(date.getHours()),\n        'mm': addZero(date.getMinutes()),\n        'ss': addZero(date.getSeconds())\n    }\n    return format.replace(/yyyy|MM|dd|HH|mm|ss/g, (match) => replacements[match])\n}\n\n// param time: yyyy-mm-ddTxxxx\nexport function formatStrTime(time: string, notSameDayFormat: string): string {\n    if (!time) return ''\n    const date1 = new Date(time)\n    const date2 = new Date()\n    return date1.getFullYear() === date2.getFullYear() &&\n        date1.getMonth() === date2.getMonth() &&\n        date1.getDate() === date2.getDate() ? formatDate(date1, 'HH:mm') : formatDate(date1, notSameDayFormat)\n}\n\nexport function toTitleCase(str: string | undefined): string {\n    if (!str) return \"\";\n    let result = str\n        .split(\"_\")\n        .map((word, index) => {\n            if (index === 0) {\n                return checkUpperWords(\n                    word[0].toUpperCase() + word.slice(1).toLowerCase()\n                );\n            }\n            return checkUpperWords(word.toLowerCase());\n        })\n        .join(\" \");\n\n    return result\n        .split(\"-\")\n        .map((word, index) => {\n            if (index === 0) {\n                return checkUpperWords(\n                    word[0].toUpperCase() + word.slice(1).toLowerCase()\n                );\n            }\n            return checkUpperWords(word.toLowerCase());\n        })\n        .join(\" \");\n}\n\nexport function getFieldTitle(\n    template: APITemplateType,\n    templateField: string\n): string {\n    return template[templateField].display_name\n        ? template[templateField].display_name!\n        : template[templateField].name\n            ? toTitleCase(template[templateField].name!)\n            : toTitleCase(templateField);\n}\n\n/**\n * 修复字符串中的不完整 Unicode 代理对（如单独的 \\ud83d、\\ud83c）\n * @param {string} text - 原始字符串\n * @returns {string} - 修复后的字符串\n */\nfunction fixBrokenEmojis(text) {\n    return text.replace(\n        // 匹配单独的高位代理（\\ud800-\\udbff）且后面不跟低位代理（\\udc00-\\udfff）\n        /([\\ud800-\\udbff])(?![\\udc00-\\udfff])/g,\n        // 替换为完整的“问号”表情（或其他默认字符）\n        (highSurrogate) => highSurrogate + '\\udfff' // 组合成合法但无意义的字符\n    );\n}\n\nexport function exportCsv(\n    data: any[],\n    fileName: string = 'test_result.csv',\n    useBase64: boolean = false // 默认使用 Blob 方式\n) {\n    // 处理数据\n    const newData = data.map(row =>\n        row.map(cell => typeof cell === 'string' ? fixBrokenEmojis(cell) : cell)\n    );\n\n    // 创建 Worksheet\n    const ws = XLSX.utils.aoa_to_sheet(newData);\n    const csv = XLSX.utils.sheet_to_csv(ws);\n\n    const BOM = '\\uFEFF';\n    const csvWithBOM = BOM + csv;\n\n    if (useBase64) {\n        // 处理Unicode字符并转换为Base64\n        const base64String = btoa(unescape(encodeURIComponent(csvWithBOM)));\n        // 创建Data URL（使用base64编码避免URL编码问题）\n        const csvContent = `data:text/csv;charset=utf-8;base64,${base64String}`;\n\n        const a = document.createElement(\"a\");\n        a.href = csvContent;\n        // a.href = url;\n        a.download = fileName;\n\n        // 模拟点击下载链接\n        document.body.appendChild(a);\n        a.click();\n\n        // 清理URL对象\n        setTimeout(function () {\n            document.body.removeChild(a);\n            // window.URL.revokeObjectURL(url);\n        }, 0);\n    } else {\n        // 创建Workbook对象\n        const wb = XLSX.utils.book_new();\n        // 添加Worksheet到Workbook中\n        XLSX.utils.book_append_sheet(wb, ws, \"Sheet1\");\n        // 生成Excel文件\n        const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\n        const blob = new Blob([wbout], { type: 'application/octet-stream' });\n        // 创建下载链接\n        const url = URL.createObjectURL(blob);\n        const a = document.createElement(\"a\");\n        a.href = url;\n        a.download = \"test_result.xlsx\";\n\n        // 模拟点击下载链接\n        document.body.appendChild(a);\n        a.click();\n\n        // 清理URL对象\n        setTimeout(function () {\n            document.body.removeChild(a);\n            window.URL.revokeObjectURL(url);\n        }, 0);\n    }\n}\n\n// 校验合法json\nexport function isValidJSON(str) {\n    if (typeof str !== 'string') return false;\n\n    // 简单的前置检查\n    str = str.trim();\n    if (!(str.startsWith('{') && str.endsWith('}')) &&\n        !(str.startsWith('[') && str.endsWith(']'))) {\n        return false;\n    }\n\n    // 完整解析验证\n    try {\n        JSON.parse(str);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// 取后缀名\nexport function getFileExtension(filename) {\n    const basename = filename.split(/[\\\\/]/).pop(); // 去除路径\n    const match = basename.match(/\\.([^.]+)$/);\n    return (match ? match[1] : '').toUpperCase();\n}\n\n\n/**\n * 截取字符串并在末尾添加省略号（如果需要）\n * @param {string} str - 要处理的字符串\n * @param {number} maxLength - 最大允许长度\n * @returns {string} 处理后的字符串\n */\nexport function truncateString(str, maxLength) {\n    // 检查输入是否有效\n    if (typeof str !== 'string' || typeof maxLength !== 'number' || maxLength < 0) {\n        return str;\n    }\n\n    // 如果字符串长度不超过最大长度，直接返回原字符串\n    if (str.length <= maxLength) {\n        return str;\n    }\n\n    // 截取字符串并添加省略号\n    return str.substring(0, maxLength) + '...';\n}\n\n\n/**\n * Generates an auto-incrementing unique name based on a pattern.\n * * @param {Array} list - The source data array.\n * @param {string} key - The property name to check in the array elements (e.g., 'title').\n * @param {string} baseName - The base name (e.g., 'Untitled Board').\n * @param {string} pattern - The numbering pattern (e.g., '(x)' or '|x|', where 'x' is the placeholder for the number).\n * @returns {string} The generated unique name.\n */\nexport function generateUniqueName(list, key, baseName, pattern) {\n    // 1. Safety check: ensure list is an array\n    if (!Array.isArray(list)) return baseName;\n\n    // 2. Construct Regex to extract existing numbers\n    // Split the pattern by 'x' to get prefix and suffix. \n    // e.g., if pattern is \"|x|\", prefix is \"|\" and suffix is \"|\"\n    const parts = pattern.split('x');\n    const prefix = parts[0];\n    const suffix = parts[1];\n\n    // Helper function: Escape special characters for Regex (e.g., '|', '(', '[', etc.)\n    const escapeReg = (str) => str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n    // Build the full Regex: ^BaseName + EscapedPrefix + (Captured Number) + EscapedSuffix$\n    const regexStr = `^${escapeReg(baseName)}${escapeReg(prefix)}(\\\\d+)${escapeReg(suffix)}$`;\n    const regex = new RegExp(regexStr);\n\n    let maxNum = 0;\n\n    // 3. Iterate through the list to find the maximum existing number\n    list.forEach(item => {\n        const name = item?.[key];\n        if (!name) return;\n\n        // Case A: The name exactly equals the base name (treat as number 1)\n        // e.g., \"Untitled Board\" exists -> next should be 2\n        if (name === baseName) {\n            maxNum = Math.max(maxNum, 1);\n        }\n        // Case B: The name matches the numbering pattern\n        // e.g., \"Untitled Board|2|\" -> extract 2\n        else {\n            const match = name.match(regex);\n            if (match) {\n                // match[1] is the captured digits (\\d+)\n                const num = parseInt(match[1], 10);\n                maxNum = Math.max(maxNum, num);\n            }\n        }\n    });\n\n    // 4. Generate the result\n    // If maxNum is 0, it means the baseName is not taken, so return baseName directly.\n    if (maxNum === 0) {\n        return baseName;\n    } else {\n        // Otherwise, increment maxNum by 1 and replace 'x' in the pattern\n        return baseName + pattern.replace('x', String(maxNum + 1));\n    }\n}"
  },
  {
    "path": "src/frontend/platform/src/utils.ts",
    "content": "import clsx, { ClassValue } from \"clsx\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport {\n  Compass,\n  Cpu,\n  FileInput,\n  FileSearch,\n  Fingerprint,\n  Gift,\n  Hammer,\n  HelpCircle,\n  Laptop2,\n  Layers,\n  Lightbulb,\n  Link,\n  MessageCircle,\n  Paperclip,\n  Rocket,\n  Scissors,\n  TerminalSquare,\n  Wand2,\n  Wrench,\n  LayoutPanelLeft,\n  Box\n} from \"lucide-react\";\nimport { ComponentType, SVGProps } from \"react\";\nimport { Connection, Edge, Node, ReactFlowInstance } from '@xyflow/react';\nimport { twMerge } from \"tailwind-merge\";\nimport { ADJECTIVES, DESCRIPTIONS, NOUNS } from \"./flow_constants\";\nimport { AirbyteIcon } from \"./icons/Airbyte\";\nimport { AnthropicIcon } from \"./icons/Anthropic\";\nimport { BingIcon } from \"./icons/Bing\";\nimport { ChromaIcon } from \"./icons/ChromaIcon\";\nimport { CohereIcon } from \"./icons/Cohere\";\nimport { EvernoteIcon } from \"./icons/Evernote\";\nimport { FBIcon } from \"./icons/FacebookMessenger\";\nimport { GitBookIcon } from \"./icons/GitBook\";\nimport { GoogleIcon } from \"./icons/Google\";\nimport { HuggingFaceIcon } from \"./icons/HuggingFace\";\nimport { IFixIcon } from \"./icons/IFixIt\";\nimport { MetaIcon } from \"./icons/Meta\";\nimport { MidjourneyIcon } from \"./icons/Midjorney\";\nimport { MongoDBIcon } from \"./icons/MongoDB\";\nimport { NotionIcon } from \"./icons/Notion\";\nimport { OpenAiIcon } from \"./icons/OpenAi\";\nimport { PineconeIcon } from \"./icons/Pinecone\";\nimport { QDrantIcon } from \"./icons/QDrant\";\nimport { SearxIcon } from \"./icons/Searx\";\nimport { SlackIcon } from \"./icons/Slack\";\nimport { VertexAIIcon } from \"./icons/VertexAI\";\nimport { HackerNewsIcon } from \"./icons/hackerNews\";\nimport { SupabaseIcon } from \"./icons/supabase\";\nimport {\n  APIDataType,\n  APITemplateType,\n  TemplateVariableType\n} from \"./types/api\";\nimport {\n  IVarHighlightType,\n  groupedObjType,\n  nodeGroupedObjType,\n  tweakType\n} from \"./types/components\";\nimport { FlowType, NodeType } from \"./types/flow\";\nimport i18next from \"i18next\";\n\nexport function classNames(...classes: Array<string>) {\n  return classes.filter(Boolean).join(\" \");\n}\n\nexport const limitScrollFieldsModal = 10;\n\nexport enum TypeModal {\n  TEXT = 1,\n  PROMPT = 2,\n}\n\nexport const textColors = {\n  white: \"text-white\",\n  red: \"text-red-700\",\n  orange: \"text-orange-700\",\n  amber: \"text-amber-700\",\n  yellow: \"text-yellow-700\",\n  lime: \"text-lime-700\",\n  green: \"text-green-700\",\n  emerald: \"text-emerald-700\",\n  teal: \"text-teal-700\",\n  cyan: \"text-cyan-700\",\n  sky: \"text-sky-700\",\n  blue: \"text-blue-700\",\n  indigo: \"text-indigo-700\",\n  violet: \"text-violet-700\",\n  purple: \"text-purple-700\",\n  fuchsia: \"text-fuchsia-700\",\n  pink: \"text-pink-700\",\n  rose: \"text-rose-700\",\n  black: \"text-black-700\",\n  gray: \"text-gray-700\",\n};\n\nexport const borderLColors = {\n  white: \"border-l-white\",\n  red: \"border-l-red-500\",\n  orange: \"border-l-orange-500\",\n  amber: \"border-l-amber-500\",\n  yellow: \"border-l-yellow-500\",\n  lime: \"border-l-lime-500\",\n  green: \"border-l-green-500\",\n  emerald: \"border-l-emerald-500\",\n  teal: \"border-l-teal-500\",\n  cyan: \"border-l-cyan-500\",\n  sky: \"border-l-sky-500\",\n  blue: \"border-l-blue-500\",\n  indigo: \"border-l-indigo-500\",\n  violet: \"border-l-violet-500\",\n  purple: \"border-l-purple-500\",\n  fuchsia: \"border-l-fuchsia-500\",\n  pink: \"border-l-pink-500\",\n  rose: \"border-l-rose-500\",\n  black: \"border-l-black-500\",\n  gray: \"border-l-gray-500\",\n};\n\nexport const nodeColors: { [char: string]: string } = {\n  prompts: \"#4367BF\",\n  llms: \"#6344BE\",\n  chains: \"#FE7500\",\n  agents: \"#903BBE\",\n  tools: \"#FF3434\",\n  memories: \"#F5B85A\",\n  advanced: \"#000000\",\n  chat: \"#198BF6\",\n  thought: \"#272541\",\n  embeddings: \"#42BAA7\",\n  documentloaders: \"#7AAE42\",\n  vectorstores: \"#AA8742\",\n  textsplitters: \"#B47CB5\",\n  toolkits: \"#DB2C2C\",\n  wrappers: \"#E6277A\",\n  utilities: \"#31A3CC\",\n  output_parsers: \"#E6A627\",\n  str: \"#049524\",\n  retrievers: \"#e6b25a\",\n  input_output: \"#0ea5e9\",\n  autogen_roles: '#6366f1',\n  unknown: \"#9CA3AF\",\n  custom_components: \"#ab11ab\",\n};\n\nconst nodeNames: { [char: string]: string } = {\n  prompts: \"提示词/Prompts\",\n  llms: \"语言模型/LLMs\",\n  chains: \"工作链/Chains\",\n  agents: \"代理/Agents\",\n  tools: \"工具/Tools\",\n  memories: \"记忆器/Memories\",\n  advanced: \"Advanced\",\n  chat: \"Chat\",\n  embeddings: \"嵌入器/Embeddings\",\n  documentloaders: \"装载器/Loaders\",\n  vectorstores: \"向量存储/VectorStores\",\n  toolkits: \"工具箱/Toolkits\",\n  wrappers: \"Wrappers\",\n  textsplitters: \"文本分割/TextSplitters\",\n  retrievers: \"检索器/Retrievers\",\n  input_output: \"输入输出/inputOutput\",\n  utilities: \"通用工具/Utilities\",\n  output_parsers: \"输出解析器/OutputParsers\",\n  autogen_roles: '多智能体角色/AutogenRole',\n  custom_components: \"自定义/Custom\",\n  unknown: \"Unknown\",\n};\n\nconst nodeEnNames: { [char: string]: string } = {\n  prompts: \"Prompts\",\n  llms: \"LLMs\",\n  chains: \"Chains\",\n  agents: \"Agents\",\n  tools: \"Tools\",\n  memories: \"Memories\",\n  advanced: \"Advanced\",\n  chat: \"Chat\",\n  embeddings: \"Embeddings\",\n  documentloaders: \"Loaders\",\n  vectorstores: \"VectorStores\",\n  toolkits: \"Toolkits\",\n  wrappers: \"Wrappers\",\n  textsplitters: \"TextSplitters\",\n  retrievers: \"Retrievers\",\n  input_output: \"input/output\",\n  utilities: \"Utilities\",\n  output_parsers: \"OutputParsers\",\n  autogen_roles: 'AutogenRole',\n  custom_components: \"Custom\",\n  unknown: \"Unknown\",\n};\n\nexport function getNodeNames() {\n  return i18next.language === 'en-US' ? nodeEnNames : nodeNames\n}\n\nexport const nodeIconsLucide: {\n  [char: string]: React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >;\n} = {\n  Chroma: ChromaIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  AirbyteJSONLoader: AirbyteIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Anthropic: AnthropicIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  ChatAnthropic: AnthropicIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  BingSearchAPIWrapper: BingIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  BingSearchRun: BingIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Cohere: CohereIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  CohereEmbeddings: CohereIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  EverNoteLoader: EvernoteIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  FacebookChatLoader: FBIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  GitbookLoader: GitBookIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  GoogleSearchAPIWrapper: GoogleIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  GoogleSearchResults: GoogleIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  GoogleSearchRun: GoogleIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  HNLoader: HackerNewsIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  HuggingFaceHub: HuggingFaceIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  HuggingFaceEmbeddings: HuggingFaceIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  IFixitLoader: IFixIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Meta: MetaIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Midjorney: MidjourneyIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  MongoDBAtlasVectorSearch: MongoDBIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  NotionDirectoryLoader: NotionIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  ChatOpenAI: OpenAiIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  OpenAI: OpenAiIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  OpenAIEmbeddings: OpenAiIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Pinecone: PineconeIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Qdrant: QDrantIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  Searx: SearxIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  SlackDirectoryLoader: SlackIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  SupabaseVectorStore: SupabaseIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  VertexAI: VertexAIIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  ChatVertexAI: VertexAIIcon as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  agents: Rocket as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  chains: Link as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  memories: Cpu as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  llms: Lightbulb as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  prompts: TerminalSquare as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  tools: Wrench as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  advanced: Laptop2 as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  chat: MessageCircle as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  embeddings: Fingerprint as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  documentloaders: Paperclip as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  vectorstores: Layers as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  toolkits: Hammer as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  textsplitters: Scissors as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  wrappers: Gift as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  utilities: Wand2 as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  output_parsers: Compass as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  retrievers: FileSearch as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  unknown: HelpCircle as React.ForwardRefExoticComponent<\n    ComponentType<SVGProps<SVGSVGElement>>\n  >,\n  input_output: FileInput,\n  // output: FileOutput,\n  autogen_roles: LayoutPanelLeft,\n  custom_components: Box\n};\n\nexport const gradients = [\n  \"bg-gradient-to-br from-gray-800 via-rose-700 to-violet-900\",\n  \"bg-gradient-to-br from-green-200 via-green-300 to-blue-500\",\n  \"bg-gradient-to-br from-yellow-200 via-yellow-400 to-yellow-700\",\n  \"bg-gradient-to-br from-green-200 via-green-400 to-purple-700\",\n  \"bg-gradient-to-br from-blue-100 via-blue-300 to-blue-500\",\n  \"bg-gradient-to-br from-purple-400 to-yellow-400\",\n  \"bg-gradient-to-br from-red-800 via-yellow-600 to-yellow-500\",\n  \"bg-gradient-to-br from-blue-300 via-green-200 to-yellow-300\",\n  \"bg-gradient-to-br from-blue-700 via-blue-800 to-gray-900\",\n  \"bg-gradient-to-br from-green-300 to-purple-400\",\n  \"bg-gradient-to-br from-yellow-200 via-pink-200 to-pink-400\",\n  \"bg-gradient-to-br from-green-500 to-green-700\",\n  \"bg-gradient-to-br from-rose-400 via-fuchsia-500 to-indigo-500\",\n  \"bg-gradient-to-br from-sky-400 to-blue-500\",\n  \"bg-gradient-to-br from-green-200 via-green-400 to-green-500\",\n  \"bg-gradient-to-br from-red-400 via-gray-300 to-blue-500\",\n  \"bg-gradient-to-br from-gray-900 to-gray-600 bg-gradient-to-r\",\n  \"bg-gradient-to-br from-rose-500 via-red-400 to-red-500\",\n  \"bg-gradient-to-br from-fuchsia-600 to-pink-600\",\n  \"bg-gradient-to-br from-emerald-500 to-lime-600\",\n  \"bg-gradient-to-br from-rose-500 to-indigo-700\",\n  \"bg-gradient-to-br bg-gradient-to-tr from-violet-500 to-orange-300\",\n  \"bg-gradient-to-br from-gray-900 via-purple-900 to-violet-600\",\n  \"bg-gradient-to-br from-yellow-200 via-red-500 to-fuchsia-500\",\n  \"bg-gradient-to-br from-sky-400 to-indigo-900\",\n  \"bg-gradient-to-br from-amber-200 via-violet-600 to-sky-900\",\n  \"bg-gradient-to-br from-amber-700 via-orange-300 to-rose-800\",\n  \"bg-gradient-to-br from-gray-300 via-fuchsia-600 to-orange-600\",\n  \"bg-gradient-to-br from-fuchsia-500 via-red-600 to-orange-400\",\n  \"bg-gradient-to-br from-sky-400 via-rose-400 to-lime-400\",\n  \"bg-gradient-to-br from-lime-600 via-yellow-300 to-red-600\",\n];\n\nexport const bgColors = {\n  white: \"bg-white\",\n  red: \"bg-red-100\",\n  orange: \"bg-orange-100\",\n  amber: \"bg-amber-100\",\n  yellow: \"bg-yellow-100\",\n  lime: \"bg-lime-100\",\n  green: \"bg-green-100\",\n  emerald: \"bg-emerald-100\",\n  teal: \"bg-teal-100\",\n  cyan: \"bg-cyan-100\",\n  sky: \"bg-sky-100\",\n  blue: \"bg-blue-100\",\n  indigo: \"bg-indigo-100\",\n  violet: \"bg-violet-100\",\n  purple: \"bg-purple-100\",\n  fuchsia: \"bg-fuchsia-100\",\n  pink: \"bg-pink-100\",\n  rose: \"bg-rose-100\",\n  black: \"bg-black-100\",\n  gray: \"bg-gray-100\",\n};\n\nexport const bgColorsHover = {\n  white: \"hover:bg-white\",\n  black: \"hover:bg-black-50\",\n  gray: \"hover:bg-gray-50\",\n  red: \"hover:bg-red-50\",\n  orange: \"hover:bg-orange-50\",\n  amber: \"hover:bg-amber-50\",\n  yellow: \"hover:bg-yellow-50\",\n  lime: \"hover:bg-lime-50\",\n  green: \"hover:bg-green-50\",\n  emerald: \"hover:bg-emerald-50\",\n  teal: \"hover:bg-teal-50\",\n  cyan: \"hover:bg-cyan-50\",\n  sky: \"hover:bg-sky-50\",\n  blue: \"hover:bg-blue-50\",\n  indigo: \"hover:bg-indigo-50\",\n  violet: \"hover:bg-violet-50\",\n  purple: \"hover:bg-purple-50\",\n  fuchsia: \"hover:bg-fuchsia-50\",\n  pink: \"hover:bg-pink-50\",\n  rose: \"hover:bg-rose-50\",\n};\n\nexport const textColorsHex = {\n  red: \"rgb(185 28 28)\",\n  orange: \"rgb(194 65 12)\",\n  amber: \"rgb(180 83 9)\",\n  yellow: \"rgb(161 98 7)\",\n  lime: \"rgb(77 124 15)\",\n  green: \"rgb(21 128 61)\",\n  emerald: \"rgb(4 120 87)\",\n  teal: \"rgb(15 118 110)\",\n  cyan: \"rgb(14 116 144)\",\n  sky: \"rgb(3 105 161)\",\n  blue: \"rgb(29 78 216)\",\n  indigo: \"rgb(67 56 202)\",\n  violet: \"rgb(109 40 217)\",\n  purple: \"rgb(126 34 206)\",\n  fuchsia: \"rgb(162 28 175)\",\n  pink: \"rgb(190 24 93)\",\n  rose: \"rgb(190 18 60)\",\n};\n\nexport const bgColorsHex = {\n  red: \"rgb(254 226 226)\",\n  orange: \"rgb(255 237 213)\",\n  amber: \"rgb(254 243 199)\",\n  yellow: \"rgb(254 249 195)\",\n  lime: \"rgb(236 252 203)\",\n  green: \"rgb(220 252 231)\",\n  emerald: \"rgb(209 250 229)\",\n  teal: \"rgb(204 251 241)\",\n  cyan: \"rgb(207 250 254)\",\n  sky: \"rgb(224 242 254)\",\n  blue: \"rgb(219 234 254)\",\n  indigo: \"rgb(224 231 255)\",\n  violet: \"rgb(237 233 254)\",\n  purple: \"rgb(243 232 255)\",\n  fuchsia: \"rgb(250 232 255)\",\n  pink: \"rgb(252 231 243)\",\n  rose: \"rgb(255 228 230)\",\n};\n\nexport const taskTypeMap: { [key: string]: string } = {\n  MULTICLASS_CLASSIFICATION: \"Multiclass Classification\",\n};\n\nconst charWidths: { [char: string]: number } = {\n  \" \": 0.2,\n  \"!\": 0.2,\n  '\"': 0.3,\n  \"#\": 0.5,\n  $: 0.5,\n  \"%\": 0.5,\n  \"&\": 0.5,\n  \"(\": 0.2,\n  \")\": 0.2,\n  \"*\": 0.5,\n  \"+\": 0.5,\n  \",\": 0.2,\n  \"-\": 0.2,\n  \".\": 0.1,\n  \"/\": 0.5,\n  \":\": 0.2,\n  \";\": 0.2,\n  \"<\": 0.5,\n  \"=\": 0.5,\n  \">\": 0.5,\n  \"?\": 0.2,\n  \"@\": 0.5,\n  \"[\": 0.2,\n  \"\\\\\": 0.5,\n  \"]\": 0.2,\n  \"^\": 0.5,\n  _: 0.2,\n  \"`\": 0.5,\n  \"{\": 0.2,\n  \"|\": 0.2,\n  \"}\": 0.2,\n  \"~\": 0.5,\n};\n\nfor (let i = 65; i <= 90; i++) {\n  charWidths[String.fromCharCode(i)] = 0.6;\n}\nfor (let i = 97; i <= 122; i++) {\n  charWidths[String.fromCharCode(i)] = 0.5;\n}\n\nexport function measureTextWidth(text: string, fontSize: number) {\n  let wordWidth = 0;\n  for (let j = 0; j < text.length; j++) {\n    let char = text[j];\n    let charWidth = charWidths[char] || 0.5;\n    wordWidth += charWidth * fontSize;\n  }\n  return wordWidth;\n}\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport function measureTextHeight(\n  text: string,\n  width: number,\n  fontSize: number\n) {\n  const charHeight = fontSize;\n  const lineHeight = charHeight * 1.5;\n  const words = text.split(\" \");\n  let lineWidth = 0;\n  let totalHeight = 0;\n  for (let i = 0; i < words.length; i++) {\n    let word = words[i];\n    let wordWidth = measureTextWidth(word, fontSize);\n    if (lineWidth + wordWidth + charWidths[\" \"] * fontSize <= width) {\n      lineWidth += wordWidth + charWidths[\" \"] * fontSize;\n    } else {\n      totalHeight += lineHeight;\n      lineWidth = wordWidth;\n    }\n  }\n  totalHeight += lineHeight;\n  return totalHeight;\n}\n\nexport function toCamelCase(str: string) {\n  return str\n    .split(\" \")\n    .map((word, index) =>\n      index === 0\n        ? word.toLowerCase()\n        : word[0].toUpperCase() + word.slice(1).toLowerCase()\n    )\n    .join(\"\");\n}\nexport function toFirstUpperCase(str: string) {\n  return str\n    .split(\" \")\n    .map((word, index) => word[0].toUpperCase() + word.slice(1).toLowerCase())\n    .join(\"\");\n}\n\nexport function snakeToSpaces(str: string) {\n  return str.split(\"_\").join(\" \");\n}\n\nexport function toNormalCase(str: string) {\n  let result = str\n    .split(\"_\")\n    .map((word, index) => {\n      if (index === 0) {\n        return word[0].toUpperCase() + word.slice(1).toLowerCase();\n      }\n      return word.toLowerCase();\n    })\n    .join(\" \");\n\n  return result\n    .split(\"-\")\n    .map((word, index) => {\n      if (index === 0) {\n        return word[0].toUpperCase() + word.slice(1).toLowerCase();\n      }\n      return word.toLowerCase();\n    })\n    .join(\" \");\n}\n\nexport function normalCaseToSnakeCase(str: string) {\n  return str\n    .split(\" \")\n    .map((word, index) => {\n      if (index === 0) {\n        return word[0].toUpperCase() + word.slice(1).toLowerCase();\n      }\n      return word.toLowerCase();\n    })\n    .join(\"_\");\n}\n\nexport function roundNumber(x: number, decimals: number) {\n  return Math.round(x * Math.pow(10, decimals)) / Math.pow(10, decimals);\n}\n\nexport function getConnectedNodes(edge: Edge, nodes: Array<Node>): Array<Node> {\n  const sourceId = edge.source;\n  const targetId = edge.target;\n  return nodes.filter((node) => node.id === targetId || node.id === sourceId);\n}\n\n// 控制节点链接的验证，false 不可连\nexport function isValidConnection(\n  { source, target, sourceHandle, targetHandle }: Connection,\n  reactFlowInstance: ReactFlowInstance\n) {\n  if (\n    targetHandle\n      .split(\"|\")[0]\n      .split(\";\")\n      .some((n) => n === sourceHandle.split(\"|\")[0]) ||\n    sourceHandle\n      .split(\"|\")\n      .slice(2)\n      .some((t) =>\n        targetHandle\n          .split(\"|\")[0]\n          .split(\";\")\n          .some((n) => n === t)\n      ) ||\n    targetHandle.split(\"|\")[0] === \"str\"\n  ) {\n    let targetNode = reactFlowInstance?.getNode(target)?.data?.node;\n    if (!targetNode) {\n      if (\n        !reactFlowInstance\n          .getEdges()\n          .find((e) => e.targetHandle === targetHandle)\n      ) {\n        return true;\n      }\n    } else if (\n      (!targetNode.template[targetHandle.split(\"|\")[1]].list &&\n        !reactFlowInstance\n          .getEdges()\n          .find((e) => e.targetHandle === targetHandle)) ||\n      targetNode.template[targetHandle.split(\"|\")[1]].list\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function removeApiKeys(flow: FlowType): FlowType {\n  let cleanFLow = cloneDeep(flow);\n  cleanFLow.data.nodes.forEach((node) => {\n    for (const key in node.data.node.template) {\n      if (node.data.node.template[key].password) {\n        node.data.node.template[key].value = \"\";\n      }\n    }\n  });\n  return cleanFLow;\n}\n\nexport function updateObject<T extends Record<string, any>>(\n  reference: T,\n  objectToUpdate: T\n): T {\n  let clonedObject = cloneDeep(objectToUpdate);\n  // Loop through each key in the object to update\n  for (const key in clonedObject) {\n    // If the key is not in the reference object, delete it\n    if (!(key in reference)) {\n      delete clonedObject[key];\n    }\n  }\n  // Loop through each key in the reference object\n  for (const key in reference) {\n    // If the key is not in the object to update, add it\n    if (!(key in clonedObject)) {\n      clonedObject[key] = reference[key];\n    }\n  }\n  return clonedObject;\n}\n\nexport function debounce(func, wait) {\n  let timeout;\n  return function (...args) {\n    const context = this;\n    clearTimeout(timeout);\n    timeout = setTimeout(() => func.apply(context, args), wait);\n  };\n}\n\n// 从模板中复制template\nexport function updateTemplate(\n  reference: APITemplateType,\n  objectToUpdate: APITemplateType\n): APITemplateType {\n  let clonedObject: APITemplateType = cloneDeep(reference); // temp clone\n\n  // Loop through each key in the reference object\n  for (const tmpkey in clonedObject) {\n    if (!objectToUpdate[tmpkey]) continue // 没有的 key直接使用template对象\n    // If the tmpkey is not in the object to update, add it\n    if (objectToUpdate[tmpkey] && (objectToUpdate[tmpkey].value || objectToUpdate[tmpkey].type === 'bool')) {\n      clonedObject[tmpkey].value = objectToUpdate[tmpkey].value;\n    }\n    if (\n      objectToUpdate[tmpkey] &&\n      objectToUpdate[tmpkey].advanced !== null &&\n      objectToUpdate[tmpkey].advanced !== undefined\n    ) {\n      clonedObject[tmpkey].advanced = objectToUpdate[tmpkey].advanced;\n    }\n\n    // file_path的文件类型不覆盖\n    if (tmpkey === 'file_path') {\n      clonedObject[tmpkey].fileTypes = objectToUpdate[tmpkey].fileTypes\n      clonedObject[tmpkey].suffixes = objectToUpdate[tmpkey].suffixes\n    }\n    if (objectToUpdate[tmpkey].hasOwnProperty('required')) {\n      clonedObject[tmpkey].required = objectToUpdate[tmpkey].required\n    }\n    if (objectToUpdate[tmpkey].hasOwnProperty('show')) {\n      clonedObject[tmpkey].show = objectToUpdate[tmpkey].show\n    }\n    if (objectToUpdate[tmpkey].hasOwnProperty('l2')) {\n      clonedObject[tmpkey].l2 = objectToUpdate[tmpkey].l2\n      clonedObject[tmpkey].l2_name = objectToUpdate[tmpkey].l2_name\n    }\n    if (objectToUpdate[tmpkey].hasOwnProperty('collection_id')) {\n      clonedObject[tmpkey].collection_id = objectToUpdate[tmpkey].collection_id\n    }\n  }\n  return clonedObject;\n}\n\ninterface languageMap {\n  [key: string]: string | undefined;\n}\n\nexport const programmingLanguages: languageMap = {\n  javascript: \".js\",\n  python: \".py\",\n  java: \".java\",\n  c: \".c\",\n  cpp: \".cpp\",\n  \"c++\": \".cpp\",\n  \"c#\": \".cs\",\n  ruby: \".rb\",\n  php: \".php\",\n  swift: \".swift\",\n  \"objective-c\": \".m\",\n  kotlin: \".kt\",\n  typescript: \".ts\",\n  go: \".go\",\n  perl: \".pl\",\n  rust: \".rs\",\n  scala: \".scala\",\n  haskell: \".hs\",\n  lua: \".lua\",\n  shell: \".sh\",\n  sql: \".sql\",\n  html: \".html\",\n  css: \".css\",\n  // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component\n};\n\nexport function toTitleCase(str: string) {\n  let result = str\n    .split(\"_\")\n    .map((word, index) => {\n      if (index === 0) {\n        return checkUpperWords(\n          word[0].toUpperCase() + word.slice(1).toLowerCase()\n        );\n      }\n      return checkUpperWords(word.toLowerCase());\n    })\n    .join(\" \");\n\n  return result\n    .split(\"-\")\n    .map((word, index) => {\n      if (index === 0) {\n        return checkUpperWords(\n          word[0].toUpperCase() + word.slice(1).toLowerCase()\n        );\n      }\n      return checkUpperWords(word.toLowerCase());\n    })\n    .join(\" \");\n}\n\nexport const upperCaseWords: string[] = [\"llm\", \"uri\"];\nexport function checkUpperWords(str: string) {\n  const words = str.split(\" \").map((word) => {\n    return upperCaseWords.includes(word.toLowerCase())\n      ? word.toUpperCase()\n      : word[0].toUpperCase() + word.slice(1).toLowerCase();\n  });\n\n  return words.join(\" \");\n}\n\nexport function updateIds(newFlow, getNodeId) {\n  let idsMap = {};\n\n  newFlow.nodes.forEach((n: NodeType) => {\n    // Generate a unique node ID\n    let newId = getNodeId(n.data.type);\n    idsMap[n.id] = newId;\n    n.id = newId;\n    n.data.id = newId;\n    // Add the new node to the list of nodes in state\n  });\n\n  newFlow.edges.forEach((e) => {\n    e.source = idsMap[e.source];\n    e.target = idsMap[e.target];\n    let sourceHandleSplitted = e.sourceHandle.split(\"|\");\n    e.sourceHandle =\n      sourceHandleSplitted[0] +\n      \"|\" +\n      e.source +\n      \"|\" +\n      sourceHandleSplitted.slice(2).join(\"|\");\n    let targetHandleSplitted = e.targetHandle.split(\"|\");\n    e.targetHandle =\n      targetHandleSplitted.slice(0, -1).join(\"|\") + \"|\" + e.target;\n    e.id =\n      \"reactflow__edge-\" +\n      e.source +\n      e.sourceHandle +\n      \"-\" +\n      e.target +\n      e.targetHandle;\n  });\n}\n\nexport function groupByFamily(\n  data: any,\n  baseClasses: string,\n  left: boolean,\n  flow?: NodeType[]\n): groupedObjType[] {\n  const baseClassesSet = new Set(baseClasses.split(\"\\n\"));\n  let arrOfPossibleInputs: Array<{\n    category: string;\n    nodes: nodeGroupedObjType[];\n    full: boolean;\n    display_name?: string;\n  }> = [];\n  let arrOfPossibleOutputs: Array<{\n    category: string;\n    nodes: nodeGroupedObjType[];\n    full: boolean;\n    display_name?: string;\n  }> = [];\n  let checkedNodes = new Map();\n  const excludeTypes = new Set([\n    \"str\",\n    \"bool\",\n    \"float\",\n    \"code\",\n    \"prompt\",\n    \"file\",\n    \"int\",\n  ]);\n\n  const checkBaseClass = (template: TemplateVariableType) => {\n    return (\n      template.type &&\n      template.show &&\n      ((!excludeTypes.has(template.type) &&\n        baseClassesSet.has(template.type)) ||\n        (template.input_types &&\n          template.input_types.some((inputType) =>\n            baseClassesSet.has(inputType)\n          )))\n    );\n  };\n\n  if (flow) {\n    // se existir o flow\n    for (const node of flow) {\n      // para cada node do flow\n      if (node!.data!.node!.flow) break; // não faz nada se o node for um group\n      const nodeData = node.data;\n\n      const foundNode = checkedNodes.get(nodeData.type); // verifica se o tipo do node já foi checado\n      checkedNodes.set(nodeData.type, {\n        hasBaseClassInTemplate:\n          foundNode?.hasBaseClassInTemplate ||\n          Object.values(nodeData.node!.template).some(checkBaseClass),\n        hasBaseClassInBaseClasses:\n          foundNode?.hasBaseClassInBaseClasses ||\n          nodeData.node!.base_classes.some((baseClass) =>\n            baseClassesSet.has(baseClass)\n          ), //seta como anterior ou verifica se o node tem base class\n        displayName: nodeData.node?.display_name,\n      });\n    }\n  }\n\n  for (const [d, nodes] of Object.entries(data)) {\n    let tempInputs: nodeGroupedObjType[] = [],\n      tempOutputs: nodeGroupedObjType[] = [];\n\n    for (const [n, node] of Object.entries(nodes!)) {\n      let foundNode = checkedNodes.get(n);\n\n      if (!foundNode) {\n        foundNode = {\n          hasBaseClassInTemplate: Object.values(node!.template).some(\n            checkBaseClass\n          ),\n          hasBaseClassInBaseClasses: node!.base_classes.some((baseClass) =>\n            baseClassesSet.has(baseClass)\n          ),\n          displayName: node?.display_name,\n        };\n      }\n\n      if (foundNode.hasBaseClassInTemplate)\n        tempInputs.push({ node: n, displayName: foundNode.displayName });\n      if (foundNode.hasBaseClassInBaseClasses)\n        tempOutputs.push({ node: n, displayName: foundNode.displayName });\n    }\n\n    const totalNodes = Object.keys(nodes!).length;\n\n    if (tempInputs.length)\n      arrOfPossibleInputs.push({\n        category: d,\n        nodes: tempInputs,\n        full: tempInputs.length === totalNodes,\n      });\n    if (tempOutputs.length)\n      arrOfPossibleOutputs.push({\n        category: d,\n        nodes: tempOutputs,\n        full: tempOutputs.length === totalNodes,\n      });\n  }\n\n  return left\n    ? arrOfPossibleOutputs.map((output) => ({\n      family: output.category,\n      type: output.full\n        ? \"\"\n        : output.nodes.map((item) => item.node).join(\", \"),\n      display_name: \"\",\n    }))\n    : arrOfPossibleInputs.map((input) => ({\n      family: input.category,\n      type: input.full ? \"\" : input.nodes.map((item) => item.node).join(\", \"),\n      display_name: input.nodes.map((item) => item.displayName).join(\", \"),\n    }));\n}\n\nexport function buildInputs(tabsState, id) {\n  if (tabsState &&\n    tabsState[id] &&\n    tabsState[id].formKeysData &&\n    tabsState[id].formKeysData.input_keys && tabsState[id].formKeysData.input_keys.length) {\n    const input = tabsState[id].formKeysData.input_keys.find(el => el.type !== 'file')\n    return JSON.stringify(input)\n  }\n  return '{\"input\": \"message\"}'\n  // Object.keys(tabsState[id].formKeysData.input_keys).length > 0\n  // ? JSON.stringify(tabsState[id].formKeysData.input_keys)\n  // : '{\"input\": \"message\"}';\n}\n\nexport function buildTweaks(flow) {\n  if (!flow.data) return {}\n  return flow.data.nodes.reduce((acc, node) => {\n    acc[node.data.id] = {};\n    return acc;\n  }, {});\n}\nexport function validateNode(\n  n: NodeType,\n  reactFlowInstance: ReactFlowInstance | any[]\n): Array<string> {\n  if (!n.data?.node?.template || !Object.keys(n.data.node.template)) {\n    return [\n      \"我们注意到流程中的一个节点可能存在问题。请查看该问题，如有必要，请提交一份错误报告，并附上您导出的流程文件。感谢您的帮助！\",\n    ];\n  }\n\n  const {\n    type,\n    node: { template },\n  } = n.data;\n  return Object.keys(template).reduce(\n    (errors: Array<string>, t) => {\n      // 选择知识库不校验 embbadding\n      if (t === \"embedding\" &&\n        (template['collection_name']?.value ||\n          template['index_name']?.value)) {\n        return []\n      }\n      // （必填 && 显示 && 值为空 && 无连线） 即验证不通过\n      return errors.concat(\n        template[t].required &&\n          template[t].show &&\n          (template[t].value === undefined ||\n            template[t].value === null ||\n            template[t].value === \"\") &&\n          !(reactFlowInstance?.getEdges?.() || reactFlowInstance).some(\n            (e) =>\n              e.targetHandle.split(\"|\")[1] === t &&\n              e.targetHandle.split(\"|\")[2] === n.id\n          )\n          ? [\n            `${type} ${i18next.language === 'en-US' ? 'lost' : '缺少参数'} ${template.display_name || toTitleCase(template[t].name)}.`,\n          ]\n          : []\n      )\n    }, [] as string[]\n  );\n}\n\n// 校验技能节点有效性\nexport function validateNodes(reactFlowInstance: ReactFlowInstance) {\n  if (reactFlowInstance.getNodes().length === 0) {\n    return [\n      \"流程中未发现节点。请在流程中至少添加一个节点。\",\n    ];\n  }\n  return reactFlowInstance\n    .getNodes()\n    .flatMap((n: NodeType) => validateNode(n, reactFlowInstance));\n}\n\nexport function getRandomElement<T>(array: T[]): T {\n  return array[Math.floor(Math.random() * array.length)];\n}\nexport function getRandomDescription(): string {\n  return getRandomElement(DESCRIPTIONS);\n}\n\nexport function getRandomName(\n  retry: number = 0,\n  noSpace: boolean = false,\n  maxRetries: number = 3\n): string {\n  const left: string[] = ADJECTIVES;\n  const right: string[] = NOUNS;\n\n  const lv = getRandomElement(left);\n  const rv = getRandomElement(right);\n\n  // Condition to avoid \"boring wozniak\"\n  if (lv === \"boring\" && rv === \"wozniak\") {\n    if (retry < maxRetries) {\n      return getRandomName(retry + 1, noSpace, maxRetries);\n    } else {\n      console.warn(\"Max retries reached, returning as is\");\n    }\n  }\n\n  // Append a suffix if retrying and noSpace is true\n  if (retry > 0 && noSpace) {\n    const retrySuffix = Math.floor(Math.random() * 10);\n    return `${lv}_${rv}${retrySuffix}`;\n  }\n\n  // Construct the final name\n  let final_name = noSpace ? `${lv}_${rv}` : `${lv} ${rv}`;\n  // Return title case final name\n  return toTitleCase(final_name);\n}\n\nexport function getRandomKeyByssmm(): string {\n  const now = new Date();\n  const seconds = String(now.getSeconds()).padStart(2, \"0\");\n  const milliseconds = String(now.getMilliseconds()).padStart(3, \"0\");\n  return seconds + milliseconds + Math.abs(Math.floor(Math.random() * 10001));\n}\n\nexport const INVALID_CHARACTERS = [\n  \" \",\n  \",\",\n  \".\",\n  \":\",\n  \";\",\n  \"!\",\n  \"?\",\n  \"/\",\n  \"\\\\\",\n  \"(\",\n  \")\",\n  \"[\",\n  \"]\",\n  \"\\n\",\n];\n\nexport const regexHighlight = /\\{([^}]+)\\}/g;\n\nexport const varHighlightHTML = ({ name }: IVarHighlightType) => {\n  const html = `<span class=\"font-semibold chat-message-highlight\">{${name}}</span>`;\n  return html;\n};\n\n\nexport const generateUUID = (length: number) => {\n  let d = new Date().getTime()\n  const uuid = ''.padStart(length, 'x').replace(/[xy]/g, (c) => {\n    const r = (d + Math.random() * 16) % 16 | 0\n    d = Math.floor(d / 16)\n    return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16)\n  })\n  return uuid\n}\n\nconst copyTextInDom = (dom) => {\n  const range = document.createRange();\n\n  range.selectNode(dom);\n  window.getSelection().removeAllRanges();\n  window.getSelection().addRange(range);\n\n  return new Promise((res) => {\n    document.execCommand('copy');\n    window.getSelection().removeAllRanges();\n    res(dom.innerText);\n  })\n}\n\n// 复制到剪切板\nexport const copyText = (text: string | HTMLElement) => {\n  // 复制 dom 内文本\n  if (typeof text !== 'string') return copyTextInDom(text)\n  // 高级 API直接复制文本（需要 https 环境）\n  if (navigator.clipboard && navigator.clipboard.writeText) {\n    return navigator.clipboard.writeText(text)\n  }\n  // 通过把文本写入 dom, 间接通过选中 dom 复制文本\n  const areaDom = document.createElement(\"textarea\");\n  // 设置样式使其不在屏幕上显示\n  areaDom.style.position = 'absolute';\n  areaDom.style.left = '-9999px';\n  areaDom.value = text;\n  document.body.appendChild(areaDom);\n\n  return copyTextInDom(areaDom).then((str) => {\n    document.body.removeChild(areaDom);\n  })\n};\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/DownloadList.tsx",
    "content": "import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/bs-ui/tooltip';\nimport {\n    Download\n} from 'lucide-react';\nimport { useState } from 'react';\nimport FileIcon from './FileIcon';\n\n\nexport default function DownloadList({ file, onDownloadFile, onExportOther }) {\n    const [tooltipOpen, setTooltipOpen] = useState(false);\n\n    return <Tooltip\n        open={tooltipOpen}\n        delayDuration={1}\n        onOpenChange={setTooltipOpen}\n    >\n        <TooltipTrigger asChild>\n            <span onClick={(e) => e.stopPropagation()}>\n                <Download size={16} onClick={() => { setTooltipOpen(true) }} />\n            </span>\n        </TooltipTrigger>\n        <TooltipContent side='bottom' align='center' className='bg-white text-gray-800 border border-gray-200'>\n            <div className='flex flex-col gap-2'>\n                <div className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1' onClick={(e) => { e.stopPropagation(); onDownloadFile(file); setTooltipOpen(false); }}>\n                    <FileIcon type={'md'} className='size-5' />\n                    <div className='w-full flex gap-2 items-center'>Markdown</div>\n                </div>\n                <div className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100' onClick={(e) => { e.stopPropagation(); onExportOther(e, 'pdf', file); setTooltipOpen(false); }}>\n                    <FileIcon type={'pdf'} className='size-5' />\n                    <div className='w-full flex gap-2 items-center'>PDF</div>\n                </div>\n                <div className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100' onClick={(e) => { e.stopPropagation(); onExportOther(e, 'docx', file); setTooltipOpen(false); }}>\n                    <FileIcon type={'docx'} className='size-5' />\n                    <div className='w-full flex gap-2 items-center'>Docx</div>\n                </div>\n            </div>\n        </TooltipContent>\n    </Tooltip>\n};\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/FileDrawer.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Checkbox } from \"@/components/bs-ui/checkBox\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\"\nimport { sopApi } from \"@/controllers/API/linsight\"\nimport { CheckCircle, CircleX, Download, Eye, Loader2 } from \"lucide-react\"\nimport { useEffect, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport FileIcon from \"./FileIcon\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/bs-ui/tooltip\"\n\ninterface FileItem {\n    file_id: string\n    file_md5: string\n    file_name: string\n    file_path: string\n    file_url: string\n}\n\ninterface FileDrawerProps {\n    title: string\n    files: FileItem[]\n    isOpen: boolean\n    onOpenChange: (open: boolean) => void\n    downloadFile: (file: any) => void\n    onBatchDownload?: (urls: string[]) => Promise<void>\n    onPreview?: (fileId: string) => void\n    handleExportOther: (e: React.MouseEvent, type: string, file: FileItem) => void\n    exportState: {\n        loading: boolean\n        success: boolean\n        error: boolean\n        title: string\n    }\n}\n\nexport default function TaskFiles({ title, files, isOpen, onOpenChange, downloadFile, onPreview, handleExportOther, exportState }: FileDrawerProps) {\n    const [selectedFiles, setSelectedFiles] = useState<Set<string>>(new Set())\n    const [isDownloading, setIsDownloading] = useState(false)\n    const { t: localize } = useTranslation();\n    const [hoveredId, setHoveredId] = useState<string | null>(null)\n    const [tooltipOpenIds, setTooltipOpenIds] = useState<Set<string>>(new Set())\n\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\"\n    }\n\n    // 处理全选/取消全选\n    const handleSelectAll = (checked: boolean) => {\n        if (checked) {\n            setSelectedFiles(new Set(files.map((file) => file.file_id)))\n        } else {\n            setSelectedFiles(new Set())\n        }\n    }\n\n    // 处理单个文件选择\n    const handleFileSelect = (fileId: string, checked: boolean) => {\n        const newSelected = new Set(selectedFiles)\n        checked ? newSelected.add(fileId) : newSelected.delete(fileId)\n        setSelectedFiles(newSelected)\n    }\n\n    // 处理批量下载\n    const handleBatchDownload = async () => {\n        if (selectedFiles.size === 0) return\n        setIsDownloading(true)\n        const downloadFiles = files.filter((file) => selectedFiles.has(file.file_id)).map((file) => ({\n            file_url: file.file_url,\n            file_name: file.file_name\n        }))\n        sopApi.batchDownload({ fileName: (title || 'downloadFile') + '.zip', files: downloadFiles })\n        setTimeout(() => setIsDownloading(false), 2000);\n    }\n\n    const isAllSelected = selectedFiles.size === files.length && files.length > 0\n    const isIndeterminate = selectedFiles.size > 0 && selectedFiles.size < files.length\n\n    // 图标显示条件：鼠标移入 或 弹窗打开\n    const shouldShowIcon = (fileId: string) => {\n        return hoveredId === fileId || tooltipOpenIds.has(fileId)\n    }\n\n    // 弹窗关闭时重置状态\n    useEffect(() => {\n        if (!isOpen) {\n            setTooltipOpenIds(new Set())\n            setHoveredId(null)\n        }\n    }, [isOpen])\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onOpenChange}>\n            <SheetContent className=\"w-[600px] sm:max-w-[600px] p-4 \">\n                {exportState.loading && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <Loader2 className=\"size-5 animate-spin text-blue-500\" />\n                        <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;正在导出，请稍后...&nbsp;&nbsp;</div>\n                    </div>\n                )}\n                {exportState.success && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <CheckCircle className=\"size-5 text-green-500\" />\n                        <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;文件下载成功</div>\n                    </div>\n                )}\n                {exportState.error && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <CircleX className=\"size-5 text-red-500\" />\n                        <div className=\"text-sm text-gray-800\">导出失败</div>\n                    </div>\n                )}\n\n                <SheetHeader className=\"px-3\">\n                    <div className=\"flex items-center justify-between\">\n                        <SheetTitle>{localize('com_sop_view_all_files')}</SheetTitle>\n                    </div>\n                    <div className=\"flex items-center justify-between pt-4 h-10\">\n                        <div className=\"flex items-center space-x-2\">\n                            <Checkbox\n                                id=\"select-all\"\n                                checked={isAllSelected}\n                                onCheckedChange={handleSelectAll}\n                                className=\"rounded-full\"\n                                ref={(ref) => { if (ref) ref.indeterminate = isIndeterminate }}\n                            />\n                            <label htmlFor=\"select-all\" className=\"text-sm font-medium cursor-pointer\">\n                                {localize('com_sop_select_all')}\n                            </label>\n                        </div>\n                        {selectedFiles.size > 0 && (\n                            <Button\n                                size=\"sm\"\n                                onClick={handleBatchDownload}\n                                disabled={isDownloading}\n                                className=\"h-8 px-3 text-xs\"\n                            >\n                                {localize('com_sop_batch_download')} ↓\n                            </Button>\n                        )}\n                    </div>\n                </SheetHeader>\n\n                {/* 文件列表 */}\n                <div className=\"space-y-1 h-[calc(100vh-100px)] overflow-auto pb-10\">\n                    {files.map((file) => (\n                        <div\n                            key={file.file_id}\n                            className=\"group flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-50\"\n                            onMouseEnter={() => setHoveredId(file.file_id)}\n                            onMouseLeave={() => setHoveredId(null)}\n                        >\n                            <Checkbox\n                                id={`file-${file.file_id}`}\n                                checked={selectedFiles.has(file.file_id)}\n                                onCheckedChange={(checked) => handleFileSelect(file.file_id, checked as boolean)}\n                                className=\"rounded-full \"\n                            />\n\n                            <div className=\"flex items-center space-x-3 flex-1\">\n                                <FileIcon className='size-5 min-w-4' type={getFileExtension(file.file_name)} />\n                                <span className=\"text-sm text-gray-900 flex-1\">{file.file_name}</span>\n                            </div>\n\n                            <div className=\"items-center space-x-2 group-hover:opacity-100 flex opacity-0\">\n                                <Button\n                                    variant=\"ghost\"\n                                    size=\"icon\"\n                                    className=\"h-8 w-8\"\n                                    // style={{ visibility: shouldShowIcon(file.file_id) ? 'visible' : 'hidden' }}\n                                    onClick={() => {\n                                        if (file.file_name.split('.').pop() === 'html') {\n                                            return window.open(`${__APP_ENV__.BASE_URL}/html?url=${encodeURIComponent(file.file_url)}`, '_blank')\n                                        }\n                                        onPreview?.(file.file_id)\n                                    }}\n                                >\n                                    <Eye className=\"h-4 w-4 text-gray-500\" />\n                                </Button>\n\n                                {/* 下载按钮：同时支持 hover 和 click 触发下拉窗口 */}\n                                <Button\n                                    variant=\"ghost\"\n                                >\n                                    {String(file.file_name).toLowerCase().endsWith('.md') ? (\n                                        <Tooltip\n                                            open={tooltipOpenIds.has(file.file_id)}\n                                            delayDuration={0}\n                                            onOpenChange={(open) => {\n                                                const newSet = new Set(tooltipOpenIds);\n                                                open ? newSet.add(file.file_id) : newSet.delete(file.file_id);\n                                                setTooltipOpenIds(newSet);\n                                            }}\n                                        >\n                                            <TooltipTrigger asChild>\n                                                <span\n                                                    onClick={(e) => {\n                                                        e.stopPropagation();\n                                                        // 点击切换状态（点击后即使鼠标离开也保持打开）\n                                                        const newSet = new Set(tooltipOpenIds);\n                                                        if (newSet.has(file.file_id)) {\n                                                            newSet.delete(file.file_id);\n                                                        } else {\n                                                            newSet.add(file.file_id);\n                                                        }\n                                                        setTooltipOpenIds(newSet);\n                                                    }}\n                                                >\n                                                    <Download size={16} />\n                                                </span>\n                                            </TooltipTrigger>\n                                            <TooltipContent side='bottom' align='center' className='bg-white text-gray-800 border border-gray-200'>\n                                                <div className='flex flex-col gap-2'>\n                                                    <div\n                                                        className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1'\n                                                        onClick={(e) => {\n                                                            e.stopPropagation();\n                                                            downloadFile(file);\n                                                            const newSet = new Set(tooltipOpenIds);\n                                                            newSet.delete(file.file_id);\n                                                            setTooltipOpenIds(newSet);\n                                                        }}\n                                                    >\n                                                        <FileIcon type={'md'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>Markdown</div>\n                                                    </div>\n                                                    <div\n                                                        className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100'\n                                                        onClick={(e) => {\n                                                            e.stopPropagation();\n                                                            handleExportOther(e, 'pdf', file);\n                                                            const newSet = new Set(tooltipOpenIds);\n                                                            newSet.delete(file.file_id);\n                                                            setTooltipOpenIds(newSet);\n                                                        }}\n                                                    >\n                                                        <FileIcon type={'pdf'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>PDF</div>\n                                                    </div>\n                                                    <div\n                                                        className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100'\n                                                        onClick={(e) => {\n                                                            e.stopPropagation();\n                                                            handleExportOther(e, 'docx', file);\n                                                            const newSet = new Set(tooltipOpenIds);\n                                                            newSet.delete(file.file_id);\n                                                            setTooltipOpenIds(newSet);\n                                                        }}\n                                                    >\n                                                        <FileIcon type={'docx'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>Docx</div>\n                                                    </div>\n                                                </div>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    ) : (\n                                        <Download size={16} onClick={(e) => { e.stopPropagation(); downloadFile(file); }} />\n                                    )}\n                                </Button>\n                            </div>\n                        </div>\n                    ))}\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}"
  },
  {
    "path": "src/frontend/platform/src/workspace/FileIcon.tsx",
    "content": "\nimport React from 'react';\n// 废弃\ntype FileType = 'md' | 'txt' | 'html' | 'csv' | 'dir' | 'pdf';\n\ninterface FileIconProps {\n    className?: string;\n    type: FileType;\n}\n\nconst FileIcon: React.FC<FileIconProps> = ({ className = '', type }) => {\n    const icons = {\n        md: (\n            <svg t=\"1750996380342\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"13662\" width=\"200\" height=\"200\">\n                <path d=\"M722.261333 0H191.786667A161.578667 161.578667 0 0 0 30.208 161.578667V862.293333a161.578667 161.578667 0 0 0 161.578667 161.578667h640.426666a161.578667 161.578667 0 0 0 161.578667-161.578667V271.530667a137.173333 137.173333 0 0 0-40.192-97.024L819.242667 40.149333A137.216 137.216 0 0 0 722.261333 0z\" fill=\"#53B7F4\" p-id=\"13663\"></path>\n                <path d=\"M953.642667 174.506667L819.285333 40.149333a137.216 137.216 0 0 0-70.613333-37.632v150.784a86.656 86.656 0 0 0 86.698667 86.698667h154.794666a137.173333 137.173333 0 0 0-36.522666-65.493333z\" fill=\"#29A3D3\" p-id=\"13664\"></path>\n                <path d=\"M667.093333 717.269333a27.434667 27.434667 0 0 1-27.434666-27.434666v-258.688l-107.861334 106.666666a27.434667 27.434667 0 0 1-38.4 0l-108.928-107.008v259.754667a27.434667 27.434667 0 0 1-54.869333 0V365.397333a27.434667 27.434667 0 0 1 46.677333-19.584l136.32 133.930667 135.381334-133.845333a27.434667 27.434667 0 0 1 46.933333 19.498666v324.266667a27.434667 27.434667 0 0 1-27.818667 27.605333z\" fill=\"#29A3D3\" p-id=\"13665\"></path>\n                <path d=\"M667.136 324.266667a27.434667 27.434667 0 0 0-19.285333 7.936l-135.381334 133.845333-136.32-133.888a27.434667 27.434667 0 0 0-46.677333 19.584v325.162667a27.434667 27.434667 0 0 0 54.869333 0V417.152l108.928 107.008a27.434667 27.434667 0 0 0 38.4 0l107.861334-106.666667v258.688a27.434667 27.434667 0 1 0 54.869333 0v-324.266666a27.434667 27.434667 0 0 0-27.434667-27.434667z\" fill=\"#FFFFFF\" p-id=\"13666\"></path>\n            </svg>\n        ),\n        txt: (\n            <svg t=\"1752503045187\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4517\" width=\"200\" height=\"200\"><path d=\"M204.8 0h477.866667l273.066666 273.066667v614.4c0 75.093333-61.44 136.533333-136.533333 136.533333H204.8c-75.093333 0-136.533333-61.44-136.533333-136.533333V136.533333C68.266667 61.44 129.706667 0 204.8 0z m341.333333 512h136.533334c20.48 0 34.133333-13.653333 34.133333-34.133333s-13.653333-34.133333-34.133333-34.133334H341.333333c-20.48 0-34.133333 13.653333-34.133333 34.133334s13.653333 34.133333 34.133333 34.133333h136.533334V819.2c0 20.48 13.653333 34.133333 34.133333 34.133333s34.133333-13.653333 34.133333-34.133333V512z\" fill=\"#777777\" p-id=\"4518\"></path><path d=\"M682.666667 0l273.066666 273.066667h-204.8c-40.96 0-68.266667-27.306667-68.266666-68.266667V0z\" fill=\"#E0E0E0\" opacity=\".619\" p-id=\"4519\"></path></svg>\n        ),\n        html: (\n            <svg t=\"1752549781044\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"24387\" width=\"200\" height=\"200\"><path d=\"M677.504 64a64 64 0 0 1 45.248 18.752l154.496 154.496a64 64 0 0 1 18.752 45.248V832a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192a128 128 0 0 1 128-128h421.504zM640 377.6a38.4 38.4 0 0 0-38.4 38.4v121.6H422.4V416a38.4 38.4 0 0 0-76.8 0v320a38.4 38.4 0 1 0 76.8 0V614.4h179.2v121.6a38.4 38.4 0 1 0 76.8 0v-320a38.4 38.4 0 0 0-38.4-38.4z\" p-id=\"24388\" fill=\"#d81e06\"></path></svg>\n        ),\n        csv: (\n            <svg t=\"1752549656391\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"11216\" width=\"200\" height=\"200\"><path d=\"M134.4 64m153.6 0l448 0q153.6 0 153.6 153.6l0 588.8q0 153.6-153.6 153.6l-448 0q-153.6 0-153.6-153.6l0-588.8q0-153.6 153.6-153.6Z\" fill=\"#3EC757\" p-id=\"11217\"></path><path d=\"M240.0256 513.1776c0-14.9504 2.1504-29.184 6.4512-42.8544 4.352-13.6192 10.752-25.6 19.3536-35.9424 8.4992-10.3424 19.1488-18.6368 31.8976-24.9344s27.4944-9.472 44.3392-9.472c13.3632 0 25.6512 2.4064 36.864 7.1168 11.1104 4.7104 19.6096 9.9328 25.3952 15.7184 2.048 2.048 4.096 4.7104 6.0928 7.8336a35.2768 35.2768 0 0 1 4.3008 10.24 31.232 31.232 0 0 1 0.8192 11.008 18.8928 18.8928 0 0 1-4.5568 10.24 26.3168 26.3168 0 0 1-4.7104 4.3008 21.1456 21.1456 0 0 1-16.5376 3.328 17.92 17.92 0 0 1-9.472-6.5024 66.304 66.304 0 0 0-16.384-14.5408 40.192 40.192 0 0 0-21.0432-5.12 46.336 46.336 0 0 0-21.6576 5.12 49.5616 49.5616 0 0 0-16.7424 14.1824c-4.608 5.9904-8.192 13.312-10.8544 22.016a98.4064 98.4064 0 0 0-3.9424 28.672c0 11.008 1.536 20.6336 4.5568 28.8768 3.0208 8.2432 7.0144 15.2064 11.9808 20.8384 5.0176 5.632 10.6496 9.8816 16.9472 12.8a45.9776 45.9776 0 0 0 19.3024 4.3008c5.0176 0 9.1648-0.3072 12.4416-0.8192a28.2112 28.2112 0 0 0 13.568-5.6832 537.5488 537.5488 0 0 1 12.2368-9.4208 27.8528 27.8528 0 0 1 8.2432-4.352 20.5824 20.5824 0 0 1 9.472-0.5632c3.4304 0.512 7.1168 2.048 11.0592 4.7104 5.7344 3.9424 9.216 8.0384 10.24 12.3904 1.024 4.3008-0.4096 9.8816-4.352 16.6912-5.2736 9.1648-14.0288 16.5376-26.4192 22.1696-12.288 5.632-27.5456 8.4992-45.6704 8.4992a116.224 116.224 0 0 1-44.1344-7.8848 88.0128 88.0128 0 0 1-32.512-22.4256 95.5392 95.5392 0 0 1-19.9168-34.9696 145.8176 145.8176 0 0 1-6.656-45.568zM512.4096 576.4096c8.6016 0 15.872-1.9968 21.76-5.888a18.7392 18.7392 0 0 0 8.8064-16.5376 19.5072 19.5072 0 0 0-1.7408-8.448 18.6368 18.6368 0 0 0-6.656-7.0656 69.7344 69.7344 0 0 0-13.3632-6.656 262.144 262.144 0 0 0-21.76-7.2704 232.0896 232.0896 0 0 1-28.2624-9.8304 68.4544 68.4544 0 0 1-19.4048-12.1856 43.8784 43.8784 0 0 1-11.3664-16.896 66.56 66.56 0 0 1-3.7376-23.552c0-9.728 1.9968-18.432 5.888-26.112 3.9424-7.7312 9.3696-14.336 16.2816-19.6608 6.912-5.376 14.9504-9.4208 24.1152-12.1856 9.1648-2.7648 18.8416-4.096 29.0304-4.096 10.752 0 20.5824 1.1776 29.5936 3.5328 9.0112 2.3552 16.7424 5.3248 23.1424 9.0112s11.4688 7.5776 15.104 11.776c3.6864 4.1984 5.4784 7.9872 5.4784 11.4176 0 7.8336-1.28 15.104-3.8912 21.8112-2.6112 6.656-6.8096 9.984-12.544 9.984a8.8576 8.8576 0 0 1-5.5296-2.1504 303.2064 303.2064 0 0 1-7.8336-6.5024 98.048 98.048 0 0 0-18.0224-11.3664 62.8736 62.8736 0 0 0-25.088-4.7104 37.0176 37.0176 0 0 0-18.6368 3.9424c-5.632 2.8672-8.448 7.68-8.448 14.4896 0 3.1744 0.6656 5.7856 1.9456 7.8848 1.3312 2.048 3.6864 3.9936 7.0656 5.6832 3.4304 1.6896 7.7824 3.4816 13.1584 5.3248 5.376 1.8432 12.2368 3.9424 20.5824 6.2976 8.9088 2.56 17.2544 5.632 25.088 9.0112 7.8336 3.4304 14.6432 7.5776 20.4288 12.5952 5.7344 4.9664 10.24 11.0592 13.5168 18.2272 3.2768 7.2192 4.9152 15.9232 4.9152 26.112 0 10.496-2.3552 19.968-7.0656 28.3136a67.3792 67.3792 0 0 1-18.6368 21.1968 94.6176 94.6176 0 0 1-55.5008 18.0736 107.6736 107.6736 0 0 1-57.2416-15.872 67.2256 67.2256 0 0 1-15.872-13.3632c-3.7888-4.608-5.7344-8.448-5.7344-11.6224 0-3.1232 0.3072-6.4512 0.8192-9.984a38.8096 38.8096 0 0 1 2.7136-9.8304 26.5728 26.5728 0 0 1 4.9152-7.68 9.984 9.984 0 0 1 7.68-3.1232c2.56 0 5.3248 1.4336 8.192 4.3008 2.9184 2.9184 6.656 6.144 11.2128 9.6256 4.5568 3.584 10.4448 6.7584 17.6128 9.6256 7.168 2.9184 16.2816 4.352 27.2896 4.352zM715.6224 601.9584c-3.4304 7.0656-6.8608 11.776-10.4448 14.336a18.6368 18.6368 0 0 1-10.752 3.6864 23.296 23.296 0 0 1-10.8544-2.7136c-3.584-1.8432-7.2704-6.9632-11.264-15.36l-66.048-164.9152a26.5728 26.5728 0 0 1-2.1504-12.8 23.1424 23.1424 0 0 1 3.584-10.5472 20.1728 20.1728 0 0 1 8.0384-7.1168 26.112 26.112 0 0 1 11.776-2.56c4.4544 0 8.9088 1.2288 13.3632 3.584 4.4544 2.3552 7.8848 6.656 10.24 12.9536l44.032 119.808c7.3728-20.48 14.6944-40.448 22.016-59.904 7.3728-19.5072 14.7456-39.4752 22.0672-59.904a31.0784 31.0784 0 0 1 7.8848-11.776 16.896 16.896 0 0 1 11.776-4.7104c3.4304 0 6.912 0.7168 10.4448 2.1504 3.5328 1.4336 6.656 3.4816 9.216 6.0928a18.688 18.688 0 0 1 5.12 9.7792 22.8352 22.8352 0 0 1-1.9456 13.3632l-66.0992 166.5536z\" fill=\"#FFFFFF\" p-id=\"11218\"></path></svg>\n        ),\n        doc: (\n            <svg t=\"1753084925585\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"7814\" width=\"200\" height=\"200\"><path d=\"M910.2336 1024H113.7664C51.2 1024 0 972.8 0 910.2336V113.7664C0 51.2 51.2 0 113.7664 0h796.4672C972.8 0 1024 51.2 1024 113.7664v796.4672C1024 972.8 972.8 1024 910.2336 1024zM850.5088 253.824h-71.68l-101.3248 391.68c-5.3504 19.328-8.576 36.224-9.6768 50.688h-1.3312c-2.2272-20.0192-5.0944-36.4544-8.6528-49.3824L551.168 253.8496h-65.664L373.8368 643.84c-6.2464 21.9904-9.8816 39.6544-11.008 52.992h-1.9968a254.976 254.976 0 0 0-8.3456-52.992L247.168 253.824H173.4912l149.6832 516.352h77.0048l104.96-372.6592a249.0112 249.0112 0 0 0 9.344-52.6848h1.3312c0.9216 18.6624 3.6864 36.4288 8.3456 53.3248l104.0128 371.9936h77.6704l144.64-516.3264z\" fill=\"#3A80FC\" p-id=\"7815\"></path></svg>\n        ),\n        pdf: (\n            <svg t=\"1758719528410\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8391\" width=\"32\" height=\"32\"><path d=\"M902.101333 314.517333V853.333333a97.514667 97.514667 0 0 1-97.536 97.514667H219.434667A97.514667 97.514667 0 0 1 121.898667 853.333333V170.666667a97.514667 97.514667 0 0 1 97.536-97.514667H660.693333l241.386667 241.365333z\" fill=\"#ED5050\" p-id=\"8392\"></path><path d=\"M660.714667 265.749333V73.173333l241.386666 241.365334h-192.618666a48.768 48.768 0 0 1-48.768-48.768z\" fill=\"#D43030\" p-id=\"8393\"></path><path d=\"M633.898667 577.834667c-19.989333 0.341333-39.914667 2.624-59.477334 6.826666a288.661333 288.661333 0 0 1-59.008-76.074666c16.341333-52.906667 17.066667-88.981333 4.885334-106.048a31.445333 31.445333 0 0 0-24.384-12.437334 30.72 30.72 0 0 0-29.504 15.36c-17.066667 28.266667 7.552 84.352 19.008 107.029334A673.642667 673.642667 0 0 1 435.2 629.973333C344.021333 669.013333 341.333333 692.693333 341.333333 701.226667c0.32 10.517333 6.549333 19.946667 16.085334 24.362666 4.245333 2.645333 9.173333 3.925333 14.144 3.669334 24.384 0 51.2-26.581333 80.704-78.506667a658.282667 658.282667 0 0 1 112.64-36.096 121.898667 121.898667 0 0 0 70.208 28.544c16.106667 0 48.768 0 48.768-32.426667 0.256-10.986667-6.336-31.957333-49.984-32.917333z m-260.629334 124.330666h-2.922666a73.152 73.152 0 0 1 34.133333-27.541333 62.656 62.656 0 0 1-31.210667 27.541333zM489.813333 419.626667c1.28-0.448 2.645333-0.448 3.904 0h2.922667a80.938667 80.938667 0 0 1 0 48.746666 76.8 76.8 0 0 1-6.826667-48.746666z m48.768 183.829333a588.074667 588.074667 0 0 0-64.618666 19.008v-1.941333h-1.941334c10.474667-20.736 19.989333-42.666667 28.522667-64.362667v-1.962667c10.986667 16.704 23.637333 32.213333 37.781333 46.336h-2.666666l2.922666 2.922667z m97.514667 12.437333a82.645333 82.645333 0 0 1-28.757333-6.357333c8.021333-1.578667 16.213333-2.218667 24.362666-1.941333 18.773333 0 22.677333 4.629333 22.677334 7.552a40.96 40.96 0 0 1-18.517334 0.746666h0.234667z\" fill=\"#FFFFFF\" p-id=\"8394\"></path></svg>\n        ),\n        dir: (\n            <svg t=\"1753254956028\" className={className} viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"6260\" width=\"200\" height=\"200\"><path d=\"M529.664 213.333333H896a42.666667 42.666667 0 0 1 42.666667 42.666667v597.333333a42.666667 42.666667 0 0 1-42.666667 42.666667H128a42.666667 42.666667 0 0 1-42.666667-42.666667V170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h316.330667l85.333333 85.333333z\" fill=\"#bfbfbf\" p-id=\"6261\"></path></svg>\n        ),\n    };\n\n    const findIcon = (type: string) => {\n        switch (type) {\n            case 'md':\n                return icons.md;\n            case 'txt':\n                return icons.txt;\n            case 'html':\n                return icons.html;\n            case 'csv':\n            case 'xlsx':\n                return icons.csv;\n            case 'doc':\n            case 'docx':\n                return icons.doc;\n            case 'pdf':\n                return icons.pdf;\n            case 'dir':\n                return icons.dir;\n            default:\n                return icons.txt;\n        }\n    }\n\n    return findIcon(type);\n};\n\nexport default FileIcon;\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/FilePreview.tsx",
    "content": "import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/bs-ui/table\";\nimport { SvgImage } from \"@/components/LinSight/SvgImage\";\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FileIcon from \"./FileIcon\";\nimport { Button } from \"@/components/bs-ui/button\";\nimport { sopApi } from \"@/controllers/API/linsight\";\n\ninterface FilePreviewProps {\n    // 原有方式：通过 fileId 查找文件\n    files?: any[]\n    fileId?: string\n    // 新增方式：直接传入文件对象\n    currentDisplayFile?: any\n}\n\nexport default function FilePreview({ files, fileId, currentDisplayFile, onDownloadFile, vid }: FilePreviewProps) {\n    const { t: localize } = useTranslation()\n    // 获取当前文件信息\n    const currentFile = useMemo(() => {\n        if (currentDisplayFile) {\n            return currentDisplayFile\n        }\n\n        if (files && fileId) {\n            const currentFile = files.find(file => file.file_id === fileId)\n            return currentFile\n        }\n\n        return null\n    }, [files, fileId, currentDisplayFile])\n\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return (lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\").toLowerCase()\n    }\n\n    const render = () => {\n        if (!currentFile && !currentFile?.file_url) {\n            return <div className=\"flex justify-center items-center h-full text-gray-400\">{localize('com_sop_preview_failed')}</div>\n        }\n\n        const { file_url, file_name } = currentFile\n        const type = getFileExtension(file_name)\n\n        // 对于直接文件模式，不需要 URL\n        const url = `${location.origin}${file_url}`\n        const handleClick = (e, url) => {\n            e.stopPropagation();\n            onDownloadFile({\n                file_name: currentFile.file_name,\n                file_url: url\n            })\n        }\n        switch (type) {\n            case 'xls':\n            case 'xlsx':\n            case 'doc':\n            case 'docx':\n                return <div className=\"flex flex-col items-center justify-center h-full\">\n                    <FileIcon\n                        type={type}\n                        className=\"w-20 h-20\"\n                    />\n                    <div className=\"text-lg font-bold mt-2\">{file_name}</div>\n                    <div className=\"text-sm text-gray-500 m-4\">{localize('com_preview_type_unsupported')}</div>\n                    <Button variant=\"outline\" onClick={(e) => handleClick(e, file_url)}>{localize('download')}</Button>\n                </div>\n            case 'md':\n                return <TxtFileViewer\n                    vid={vid}\n                    markdown\n                    filePath={file_url}\n                />\n            case 'csv':\n                return <TxtFileViewer\n                    vid={vid}\n                    csv\n                    filePath={file_url}\n                />\n            case 'txt':\n                return <TxtFileViewer\n                    vid={vid}\n                    filePath={file_url}\n                />\n            case 'html':\n                return <TxtFileViewer\n                    vid={vid}\n                    html\n                    filePath={file_url}\n                />\n            case 'svg':\n                return <SvgImage\n                    fileUrl={url}\n                />\n            case 'png':\n            case 'jpg':\n            case 'jpeg':\n            case 'bmp':\n                return <img\n                    className=\"border\"\n                    src={url.replace(/https?:\\/\\/[^\\/]+/, __APP_ENV__.BASE_URL) || \"/placeholder.svg\"}\n                    alt={file_name}\n                />\n            default:\n                return <div className=\"flex justify-center items-center h-full text-gray-400\">{localize('com_sop_preview_failed')}</div>\n        }\n    }\n\n    return <div className=\"relative h-[calc(100vh-84px)] overflow-y-auto\">{render()}</div>\n}\n\ninterface TxtFileViewerProps {\n    html?: boolean\n    markdown?: boolean\n    csv?: boolean\n    filePath?: string\n    directContent?: string // 新增：直接传入的内容\n}\n\nconst TxtFileViewer = ({ html = false, markdown = false, csv = false, filePath, vid }: TxtFileViewerProps) => {\n    const [content, setContent] = useState('');\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState<string | null>(null);\n    const { t: localize } = useTranslation()\n\n\n    useEffect(() => {\n        if (!filePath) {\n            setError('No file path or direct content provided');\n            setLoading(false);\n            return;\n        }\n\n        const fetchTextFile = async () => {\n            try {\n                setLoading(true);\n                const res = await sopApi.getLinsightFileDownloadApi(filePath, vid)\n                const url = __APP_ENV__.BASE_URL + res.file_path\n                const response = await fetch(url);\n                if (!response.ok) {\n                    throw new Error(`Failed to fetch file: ${response.status} ${response.statusText}`);\n                }\n                const text = await response.text();\n                setContent(text);\n                setError(null);\n            } catch (err) {\n                setError(err instanceof Error ? err.message : 'Unknown error');\n                setContent('');\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        fetchTextFile();\n    }, [filePath]);\n\n    if (loading) {\n        return (\n            <div className=\"p-4 text-sm text-gray-500\">\n                <img className='size-5' src={__APP_ENV__.BASE_URL + '/assets/load.webp'} alt=\"\" />\n            </div>\n        );\n    }\n\n    if (error) {\n        return (\n            <div className=\"p-4 text-sm text-red-500\">\n                {localize('com_sop_file_load_error')}: {error}\n            </div>\n        );\n    }\n\n    if (html) return <iframe\n        className=\"w-full h-full border\"\n        srcDoc={content}\n        sandbox=\"allow-scripts\"\n    />\n\n    if (markdown) return <div className=\"bs-mkdown p-10 max-w-full\">\n        <MessageMarkDown message={content} />\n    </div>\n\n    if (csv) return <CsvTableViewer csvText={content} />\n\n    return (\n        <div className=\"p-4 text-sm whitespace-pre-wrap bg-gray-50 rounded border border-gray-200 h-full overflow-y-auto\">\n            {content || <span className=\"text-gray-400\">({localize('com_sop_empty_file')})</span>}\n        </div>\n    );\n};\n\ninterface CsvTableViewerProps {\n    csvText: string;\n}\n\nexport function CsvTableViewer({ csvText }: CsvTableViewerProps) {\n    // 改进的CSV解析：只有逗号后无空格才分割\n    const parseCsv = (text: string) => {\n        const rows = text.split('\\n').filter(row => row.trim() !== '');\n        return rows.map(row => {\n            // 关键修改：使用负向零宽断言 (?<!\\s) 确保逗号前没有空格\n            const cells = row.split(/,(?!\\s)/);\n            return cells.map(cell => cell.trim());\n        });\n    };\n\n    const parsedData = parseCsv(csvText);\n    const headers = parsedData[0] || [];\n    const rows = parsedData.slice(1);\n\n    const isUrl = (str: string) => {\n        try {\n            new URL(str);\n            return true;\n        } catch {\n            return false;\n        }\n    };\n\n    return (\n        <div className=\"rounded-md border mx-4\">\n            <Table>\n                <TableHeader>\n                    <TableRow>\n                        {headers.map((header, index) => (\n                            <TableHead key={index} className=\"font-medium\">\n                                {header}\n                            </TableHead>\n                        ))}\n                    </TableRow>\n                </TableHeader>\n                <TableBody>\n                    {rows.map((row, rowIndex) => (\n                        <TableRow key={rowIndex}>\n                            {row.map((cell, cellIndex) => (\n                                <TableCell key={cellIndex}>\n                                    {isUrl(cell) ? (\n                                        <a\n                                            href={cell}\n                                            target=\"_blank\"\n                                            rel=\"noopener noreferrer\"\n                                            className=\"text-blue-600 hover:underline break-all\"\n                                        >\n                                            {cell.length > 30 ? `${cell.substring(0, 30)}...` : cell}\n                                        </a>\n                                    ) : (\n                                        cell\n                                    )}\n                                </TableCell>\n                            ))}\n                        </TableRow>\n                    ))}\n                </TableBody>\n            </Table>\n        </div>\n    );\n}\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/FilePreviewDrawer.tsx",
    "content": "\"use client\"\nimport { Sheet, SheetContent, SheetHeader } from '@/components/bs-ui/sheet'\nimport { CheckCircle, ChevronLeft, CircleX, Download, Loader2 } from 'lucide-react'\nimport type React from \"react\"\nimport { useMemo, useState } from \"react\"\nimport { useTranslation } from 'react-i18next'\nimport FilePreview from './FilePreview'\nimport { Button } from '@/components/bs-ui/button'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/bs-ui/tooltip'\nimport FileIcon from './FileIcon'\n\ninterface FileItem {\n    file_id: string\n    file_md5: string\n    file_name: string\n    file_path: string\n    file_url: string\n}\n\ninterface FilePreviewDrawerProps {\n    // 原有方式的 props\n    files?: FileItem[]\n    currentFileId?: string\n    onFileChange?: (fileId: string) => void\n    downloadFile?: (file: any) => void\n\n    // 新增：直接文件预览方式的 props\n    directFile?: { name: string, url: string }\n\n    // 通用 props\n    isOpen: boolean\n    onOpenChange: (open: boolean) => void\n    onBack?: () => void\n    children?: React.ReactNode\n    vid?: string\n}\n\nexport default function FilePreviewDrawer({\n    files,\n    isOpen,\n    vid,\n    onOpenChange,\n    currentFileId,\n    onFileChange,\n    downloadFile,\n    directFile,\n    onBack,\n    handleExportOther,\n    exportState\n}: FilePreviewDrawerProps) {\n    const { t: localize } = useTranslation()\n    // const [selectedFileId, setSelectedFileId] = useState(currentFileId || files?.[0]?.file_id || \"\")\n    const [tooltipOpen, setTooltipOpen] = useState(false)\n    // 获取文件扩展名\n    const getFileExtension = (fileName: string): string => {\n        const lastDot = fileName.lastIndexOf(\".\")\n        return lastDot !== -1 ? fileName.substring(lastDot + 1) : \"\"\n    }\n\n    // 处理文件切换\n    const handleFileChange = (fileId: string) => {\n        // setSelectedFileId(fileId)\n        onFileChange?.(fileId)\n    }\n\n    // 获取当前显示的文件信息\n    const currentDisplayFile = useMemo(() => {\n        if (directFile) {\n            return {\n                file_id: 'direct-file',\n                ...directFile\n            }\n        }\n\n        if (files && currentFileId) {\n            return files.find((file) => file.file_id === currentFileId)\n        }\n\n        return null\n    }, [files, currentFileId, directFile])\n\n    if (!isOpen) return null\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onOpenChange}>\n            <SheetContent className=\"w-[800px] sm:max-w-[800px] p-0\">\n                {exportState.loading && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <Loader2 className=\"size-5 animate-spin text-blue-500\" />\n                        <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;正在导出，请稍后...&nbsp;&nbsp;</div>\n                    </div>\n                )}\n                {exportState.success && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <CheckCircle className=\"size-5 text-green-500\" />\n                        <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;文件下载成功</div>\n                    </div>\n                )}\n                {exportState.error && (\n                    <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                        <CircleX className=\"size-5 text-red-500\" />\n                        <div className=\"text-sm text-gray-800\">导出失败</div>\n                    </div>\n                )}\n\n                <SheetHeader className=\"px-6 py-4\">\n                    <div className=\"flex items-center justify-between\">\n                        <div className=\"flex items-center space-x-3 flex-1\">\n                            {/* 返回按钮 */}\n                            {onBack && (\n                                <Button variant=\"outline\" size=\"icon\" onClick={() => onBack()} className=\"h-8 w-8\">\n                                    <ChevronLeft className=\"h-4 w-4\" />\n                                </Button>\n                            )}\n\n                            {/* 文件信息显示 */}\n                            <div className=\"flex items-center space-x-3 flex-1\">\n                                <div className=\"flex items-center space-x-3\">\n                                    {currentDisplayFile && (\n                                        <FileIcon\n                                            type={getFileExtension(currentDisplayFile.file_name)}\n                                            className=\"w-4 h-4\"\n                                        />\n                                    )}\n                                    <p className=\"font-medium text-gray-900 truncate max-w-96\">\n                                        {currentDisplayFile?.file_name || localize('com_sop_select_file')}\n                                    </p>\n                                </div>\n\n                                {/* 下载按钮 */}\n                                <Button variant=\"ghost\" disabled={!currentDisplayFile}>\n                                    {String(currentDisplayFile.file_name).toLowerCase().endsWith('.md') ? (\n                                        <Tooltip\n                                            open={tooltipOpen}\n                                            onOpenChange={setTooltipOpen} // 绑定tooltip状态\n                                        >\n                                            <TooltipTrigger asChild>\n                                                <span onClick={(e) => e.stopPropagation()}>\n                                                    <Download size={16} onClick={() => { setTooltipOpen(true) }} />\n                                                </span>\n                                            </TooltipTrigger>\n                                            <TooltipContent side='bottom' align='center' className='bg-white text-gray-800 border border-gray-200'>\n                                                <div className='flex flex-col gap-2'>\n                                                    <div className='flex gap-2 items-center cursor-pointer hover:bg-gray-100 rounded-md p-1' onClick={(e) => { e.stopPropagation(); downloadFile(currentDisplayFile); setTooltipOpen(false); }}>\n                                                        <FileIcon type={'md'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>Markdown</div>\n                                                    </div>\n                                                    <div className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100' onClick={(e) => { e.stopPropagation(); handleExportOther(e, 'pdf', currentDisplayFile); setTooltipOpen(false); }}>\n                                                        <FileIcon type={'pdf'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>PDF</div>\n                                                    </div>\n                                                    <div className='flex gap-2 items-center rounded-md p-1 cursor-pointer hover:bg-gray-100' onClick={(e) => { e.stopPropagation(); handleExportOther(e, 'docx', currentDisplayFile); setTooltipOpen(false); }}>\n                                                        <FileIcon type={'docx'} className='size-5' />\n                                                        <div className='w-full flex gap-2 items-center'>Docx</div>\n                                                    </div>\n                                                </div>\n                                            </TooltipContent>\n                                        </Tooltip>\n                                    ) : (\n                                        <Download size={16} onClick={(e) => { e.stopPropagation(); downloadFile(currentDisplayFile); }} />\n\n                                    )}\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                </SheetHeader>\n\n                {/* 预览内容区域 */}\n                <div className=\"flex-1 overflow-auto\">\n                    <FilePreview\n                        files={files}\n                        fileId={currentFileId}\n                        vid={vid}\n                        currentDisplayFile={currentDisplayFile}\n                        onDownloadFile={downloadFile}\n                    />\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/README.md",
    "content": "# 工作台组件（copy）\n- 复用工作台组件\n- 稳定后独立发布"
  },
  {
    "path": "src/frontend/platform/src/workspace/SearchKnowledgeSheet.tsx",
    "content": "\"use client\"\n\nimport MessageMarkDown from \"@/pages/BuildPage/flow/FlowChat/MessageMarkDown\"\nimport { FileSearchIcon } from \"lucide-react\"\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\"\nimport { useTranslation } from \"react-i18next\"\nimport FileIcon from \"./FileIcon\"\n\ninterface SearchResultItem {\n    content: string\n    suffix: string\n    title: string\n}\n\ninterface SearchResultsSheetProps {\n    isOpen: boolean\n    onClose: () => void\n    data: SearchResultItem[]\n    searchQuery: string\n}\n\nexport function SearchKnowledgeSheet({ isOpen, onClose, data = [], searchQuery }: SearchResultsSheetProps) {\n    const { t: localize } = useTranslation();\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onClose}>\n            <SheetContent side=\"right\" className=\"w-[600px] sm:w-[700px] sm:max-w-[700px] p-0\">\n                <SheetHeader className=\"p-4 border-b border-border\">\n                    <div className=\"flex items-center gap-3\">\n                        <FileSearchIcon className=\"w-5 h-5 text-muted-foreground\" />\n                        <SheetTitle className=\"text-lg font-semibold text-foreground\">{localize('com_searchResults')}</SheetTitle>\n                    </div>\n                    <SheetDescription className=\"text-left\">\n                        <div className=\"flex items-center gap-2 text-sm text-muted-foreground mt-2\">\n                            <span className=\"whitespace-nowrap\">🔍{localize('com_searchQueryLabel')}</span>\n                            <span className=\"font-medium text-foreground\">”{searchQuery}“</span>\n                        </div>\n                    </SheetDescription>\n                </SheetHeader>\n\n                {/* Results Content */}\n                <div className=\"flex-1 h-[calc(100vh-120px)] overflow-y-auto\">\n                    <div className=\"p-4 space-y-4\">\n                        {data.map((item, index) => (\n                            <div\n                                key={index}\n                                className=\"border border-border rounded-lg overflow-hidden hover:border-blue-500 transition-colors duration-200 cursor-pointer\"\n                            >\n                                {/* Content - always expanded as per design */}\n                                <div className=\"p-4 bg-card\">\n                                    <div className=\"mb-3 flex items-center gap-2\">\n                                        <FileIcon className='size-5 min-w-4' type={item.suffix} />\n                                        <h4 className=\"text-sm font-medium text-foreground\">{item.title}</h4>\n                                    </div>\n                                    <div className=\"font-normal text-sm text-[#303133] leading-6 break-all\">\n                                        <MessageMarkDown message={item.content} />\n                                    </div>\n                                </div>\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/SopTasks.tsx",
    "content": "import DownIcon from '@/components/bs-icons/DownIcon';\nimport { Button } from '@/components/bs-ui/button';\nimport { Textarea } from '@/components/bs-ui/input';\nimport { toast, useToast } from '@/components/bs-ui/toast/use-toast';\nimport MessageMarkDown from '@/pages/BuildPage/flow/FlowChat/MessageMarkDown';\nimport axios from 'axios';\nimport {\n    ArrowRight,\n    BookOpen,\n    Check, ChevronDown,\n    Download,\n    FileText,\n    LucideLoaderCircle, MessageSquareText, Pause,\n    Search,\n    SendIcon,\n    Sparkles,\n    WrenchIcon,\n    Loader2,\n    CheckCircle,\n    CircleX\n} from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport FileDrawer from './FileDrawer';\nimport FileIcon from './FileIcon';\nimport FilePreviewDrawer from './FilePreviewDrawer';\nimport { SearchKnowledgeSheet } from './SearchKnowledgeSheet';\nimport { WebSearchSheet } from './WebSearchSheet';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/bs-ui/tooltip';\nimport { SvgImage } from '@/components/LinSight/SvgImage';\nimport DownloadList from './DownloadList';\nimport { sopApi } from '@/controllers/API/linsight';\n\nconst ToolButtonLink = ({ params, setCurrentDirectFile }) => {\n    if (!params) return null\n    return <Button\n        variant=\"link\"\n        className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n        onClick={() => setCurrentDirectFile(params.file_info)}\n    >{params.file_info?.file_name}</Button>\n}\n\nconst Tool = ({ data, setCurrentDirectFile, onSearchKnowledge, onWebSearch }) => {\n    const { name, step_type, params, extra_info, output } = data;\n    const { t: localize } = useTranslation();\n    const { toast } = useToast();\n\n    // 过滤尾部hash值\n    const toolName = useMemo(() => {\n        const lastUnderscoreIndex = name.lastIndexOf('_');\n        if (lastUnderscoreIndex === -1) return name;\n\n        const afterLastUnderscore = name.slice(lastUnderscoreIndex + 1);\n\n        const isHash = afterLastUnderscore.length >= 8 &&\n            /^[a-z0-9]+$/.test(afterLastUnderscore) &&\n            !/^\\d+$/.test(afterLastUnderscore);\n\n        return isHash ? name.slice(0, lastUnderscoreIndex) : name;\n    }, [name])\n\n    // 工具名称映射\n    const nameMap = {\n        web_search: localize('com_sop_web_search'),\n        search_knowledge_base: localize('com_sop_search_knowledge_base'),\n        list_files: localize('com_sop_list_files'),\n        get_file_details: localize('com_sop_get_file_details'),\n        search_files: localize('com_sop_search_files'),\n        read_text_file: localize('com_sop_read_text_file'),\n        add_text_to_file: localize('com_sop_add_text_to_file'),\n        replace_file_lines: localize('com_sop_replace_file_lines'),\n        default: localize('com_sop_using_tool', { 0: toolName })\n    };\n\n    // search knowledge\n    const handleKnowledgeClick = () => {\n        if (!output || !output.length) return\n        try {\n            const upRes = JSON.parse(output)['结果']\n            const resData = upRes.map(res => {\n                let titleRegex, contentRegex;\n                if (res.startsWith('{')) {\n                    titleRegex = /<file_title>(.*?)<\\/file_title>/;\n                    contentRegex = /<paragraph_content>(.*?)<\\/paragraph_content>/s;\n                } else {\n                    // 兼容旧格式\n                    titleRegex = /^(.*?)\\\\n/;\n                    contentRegex = /\\\\n--------\\\\n(.*?)$/;\n                }\n                const titleMatch = res.match(titleRegex);\n                const contentMatch = res.match(contentRegex);\n                const title = titleMatch ? titleMatch[1] : '';\n\n                return {\n                    title,\n                    suffix: title.split('.').pop().toLowerCase(),\n                    content: contentMatch ? contentMatch[1] : ''\n                };\n            })\n            onSearchKnowledge({\n                query: params.query,\n                data: resData\n            })\n        } catch (error) {\n            console.log('knowledge parse error :>> ', error);\n            toast({ description: output, variant: 'error' });\n        }\n    }\n\n    const handleWebSearchClick = () => {\n        if (!output || !output.length) return\n        try {\n            const res = JSON.parse(output)\n            if (Array.isArray(res)) {\n                onWebSearch({\n                    query: params.query,\n                    data: res.map(item => ({\n                        ...item,\n                        thumbnail: item.thumbnail || '',\n                        host: item.url.replace(/^https?:\\/\\/([^\\/]+).*$/, '$1'),\n                        title: item.title,\n                        content: item.snippet\n                    }))\n                })\n            } else {\n                const text = JSON.parse(output)['content'][0].text\n                const resData = JSON.parse(text)\n                onWebSearch({\n                    query: params.query,\n                    data: resData['搜索结果'].map(item => ({\n                        thumbnail: item['缩略图'] || '',\n                        host: item['链接'].replace(/^https?:\\/\\/([^\\/]+).*$/, '$1'),\n                        title: item['标题'],\n                        content: item['摘要'],\n                        url: item['链接'],\n                    }))\n                })\n            }\n        } catch (error) {\n            console.log('websearch parse error :>> ', error);\n\n            onWebSearch({\n                query: params.query,\n                data: [{\n                    thumbnail: '',\n                    host: '',\n                    title: output.split(/[.!?，。,！？；：]/)[0] + '...',\n                    content: output,\n                    url: ''\n                }]\n            })\n        }\n    }\n\n    // 参数键名映射\n    const paramKeyMap = {\n        web_search: () => <Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n            onClick={handleWebSearchClick}\n        >{params.query}</Button>,\n        search_knowledge_base: () => <Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n            onClick={handleKnowledgeClick}\n        >{params.query}</Button>,\n        list_files: () => params.directory_path,\n        get_file_details: () => params.file_path.split('/').pop(),\n        search_files: () => params.pattern,\n        read_text_file: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        add_text_to_file: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        replace_file_lines: () => <ToolButtonLink params={extra_info} setCurrentDirectFile={setCurrentDirectFile} />,\n        web_content_to_markdown_llm: () => <a href={params.url} target='_blank'><Button\n            variant=\"link\"\n            className='text-xs p-0 h-4 text-blue-400 underline underline-offset-2'\n        >{params.url}</Button></a>,\n        default: () => '',\n    };\n\n    // 图标映射 - 使用组件形式\n    const iconMap = {\n        web_search: Search,\n        search_knowledge_base: BookOpen,\n        list_files: FileText,\n        get_file_details: FileText,\n        search_files: FileText,\n        read_text_file: FileText,\n        add_text_to_file: FileText,\n        replace_file_lines: FileText,\n        default: WrenchIcon\n    };\n\n    if (step_type !== 'tool_call') {\n        return null\n    }\n\n    // 获取显示名称\n    const displayName = nameMap[toolName] || nameMap.default;\n\n    // 获取参数键名\n    const paramValue = params && paramKeyMap[toolName] || paramKeyMap.default;\n\n    // 获取图标\n    const Icon = iconMap[toolName] || iconMap.default;\n\n    return (\n        <div className='inline-flex items-center gap-2 bg-[#F9FAFD] border rounded-full my-1.5 mb-4 px-3 py-1.5 text-muted-foreground'>\n            <Icon size={16} />\n            <div className='flex gap-4 items-center'>\n                <span className='text-xs text-gray-600 truncate'>{displayName}</span>\n                <span className='text-xs text-[#82868C] truncate max-w-72'>{paramValue()}</span>\n            </div>\n        </div>\n    )\n}\n\nconst Task = ({\n    task,\n    lvl1 = false,\n    que,\n    hasSubTask,\n    sendInput,\n    setCurrentDirectFile,\n    onSearchKnowledge,\n    onWebSearch,\n    children = null\n}) => {\n    const [isExpanded, setIsExpanded] = useState(true);\n    const [inputValue, setInputValue] = useState('');\n    const { t: localize } = useTranslation();\n\n    // 根据状态选择对应的图标\n    const renderStatusIcon = () => {\n        const status = (task.children?.some(child => child.status === 'user_input') && 'user_input') || task.status;\n        switch (status) {\n            case \"failed\":\n            case \"user_input\":\n            case \"terminated\":\n                return <Pause size={18} className='min-w-4 p-0.5 rounded-full mr-2' />;\n            // case \"user_input\":\n            // case \"user_input_completed\":\n            // case \"in_progress\":\n            //     return <Hourglass size={16} className='min-w-4 [#BAC1CD] p-0.5 rounded-full text-white mr-2 animate-pulse' />;\n            case \"success\":\n                return <Check size={16} className='min-w-4 bg-[#BAC1CD] p-0.5 rounded-full text-white mr-2' />;\n            default:\n                return <LucideLoaderCircle size={16} className='min-w-4 text-primary mr-2 animate-spin' />;\n        }\n    };\n\n    // 处理发送输入\n    const handleSendInput = () => {\n        if (inputValue.trim()) {\n            sendInput({\n                task_id: task.id,\n                user_input: inputValue\n            });\n            setInputValue(''); // 清空输入框\n        }\n    };\n\n    // 处理回车键发送\n    const handleKeyDown = (e) => {\n        if (e.key === 'Enter' && !e.shiftKey) {\n            e.preventDefault();\n            handleSendInput();\n        }\n    };\n\n    useEffect(() => {\n        if (task.event_type === \"user_input\") {\n            console.log('ding :>> ', task.event_type, task);\n        }\n    }, [task.status])\n\n    const history = useMemo(() => {\n        const result: any = [];\n        const startMap = new Map(); // 存储未匹配的 start 消息: call_id -> message\n        for (const msg of task.history || []) {\n            if (msg.status === 'start') {\n                // 存储或覆盖同 call_id 的 start\n                startMap.set(msg.call_id, msg);\n            } else if (msg.status === 'end') {\n                // 检查是否有匹配的 start\n                if (startMap.has(msg.call_id)) {\n                    // 移除对应的 start\n                    startMap.delete(msg.call_id);\n                }\n                // 总是添加 end 消息\n                msg.call_reason && result.push(msg);\n            }\n        }\n\n        // 添加所有未匹配的 start 消息\n        for (const startMsg of startMap.values()) {\n            startMsg.call_reason && result.push(startMsg);\n        }\n\n        return result;\n    }, [task.history])\n\n\n    // 未开始执行的任务不展示\n    if (task.status === 'not_started') {\n        return null;\n    }\n\n    return (\n        <div className={`${lvl1 ? '' : 'pl-6'}`}>\n            <div className={`flex items-start relative`}>\n                <div className={`absolute right-full flex gap-2 pr-2 items-center top-0 h-6`}>\n                    {/* 折叠 */}\n                    {lvl1 ? (history.length > 0 || hasSubTask) && <DownIcon\n                        className={`text-gray-500 mt-0.5 cursor-pointer size-3 transition-transform \n                                ${isExpanded ? 'rotate-180' : ''}\n                            `}\n                        onClick={() => setIsExpanded(!isExpanded)}\n                    />\n                        : history.length > 0 && <ChevronDown\n                            size={18}\n                            className={`text-gray-500 mt-0.5 cursor-pointer transition-transform \n                                ${isExpanded ? 'rotate-180' : ''} \n                            `}\n                            onClick={() => setIsExpanded(!isExpanded)}\n                        />\n                    }\n                </div>\n                {lvl1 && <div className='mt-[5px]'>{renderStatusIcon()}</div>}\n                {\n                    lvl1 ? <h2 className=\"font-semibold mb-4 text-base\">{que}.{task.task_data.display_target}</h2> :\n                        <span className='text-sm mb-3'>{task.task_data.display_target}</span>\n                }\n            </div>\n\n            {/* 历史记录部分 - 可折叠 */}\n            {history?.length !== 0 && (\n                <div className='mb-2'>\n                    <div className='flex'>\n                        {\n                            isExpanded ? <div className={`${lvl1 ? 'pl-6' : 'pl-0'} w-full text-sm text-gray-400 leading-6 scroll-hover`}>\n                                {history.map((_history, index) => (\n                                    <div>\n                                        <p key={index}>{_history.call_reason}</p>\n                                        <Tool\n                                            data={_history}\n                                            setCurrentDirectFile={setCurrentDirectFile}\n                                            onSearchKnowledge={onSearchKnowledge}\n                                            onWebSearch={onWebSearch}\n                                        />\n                                    </div>\n                                ))}\n                            </div> : null\n                        }\n                    </div>\n                </div>\n            )}\n\n            {/* 等待输入部分 */}\n            {task.event_type === \"user_input\" && (\n                <div className='bg-[#F3F4F6] border border-[#dfdede] rounded-2xl px-5 py-4 my-2 relative'>\n                    <div>\n                        <span className='bg-[#D5E3FF] p-1 px-2 text-xs text-primary rounded-md'>{localize('com_sop_waiting_input')}</span>\n                        <span className='pl-3 text-sm'>{task.call_reason}</span>\n                    </div>\n                    <div>\n                        <Textarea\n                            id={task.id}\n                            placeholder={localize('com_sop_please_input')}\n                            className='border-none bg-transparent ![box-shadow:initial] pl-0 pr-10 pt-4 h-auto'\n                            rows={1}\n                            value={inputValue}\n                            maxLength={10000}\n                            onChange={(e) => setInputValue(e.target.value)}\n                            onKeyDown={handleKeyDown}\n                        />\n                        <Button\n                            className='absolute bottom-4 right-4 size-9 rounded-full p-0 bg-black hover:bg-black/80'\n                            onClick={handleSendInput}\n                            disabled={!inputValue.trim()}\n                        >\n                            <SendIcon size={24} />\n                        </Button>\n                    </div>\n                </div>\n            )}\n            <div className={isExpanded ? 'block' : 'hidden'}>\n                {children}\n                {/* 任务总结 */}\n                {lvl1 && task.status !== 'failed' && task.result?.answer && <div className='bs-mkdown max-w-full relative mb-6 text-sm px-4 py-3 rounded-lg bg-[#F8F9FB] text-[#303133] leading-6 break-all'>\n                    <MessageMarkDown message={task.result?.answer} />\n                    <div className='bg-gradient-to-t w-full h-10 from-[#F8F9FB] from-0% to-transparent to-100% absolute bottom-0'></div>\n                </div>}\n            </div>\n        </div>\n    );\n};\n\n\nexport const TaskFlowContent = ({ linsight, showFeedBack = false }) => {\n    const { status, sop, title, tasks, taskError, queueCount = 0 } = linsight\n    console.log('linsight :>> ', linsight);\n    const summary = linsight.output_result.answer;\n    const files = linsight.output_result.final_files || []\n    const allFiles = linsight?.output_result?.all_from_session_files || []\n\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const [isPreviewOpen, setIsPreviewOpen] = useState(false)\n    const [currentPreviewFileId, setCurrentPreviewFileId] = useState<string>(\"\")\n    const [currentDirectFile, setCurrentDirectFile] = useState<any>(null)\n    const { t: localize } = useTranslation();\n\n    // knowledge search\n    const [knowledgeInfo, setKnowledgeInfo] = useState(null)\n    // web search\n    const [webSearchInfo, setWebSearchInfo] = useState(null)\n    // 由卡片触发抽屉展开\n    const [triggerDrawerFromCard, setTriggerDrawerFromCard] = useState(false)\n    // 文件导出提示\n    const [exportState, setExportState] = useState<{ loading: boolean; success: boolean; error: boolean; title: string }>({ loading: false, success: false, error: false, title: 'PDF' })\n    // useFoucsInput(tasks);\n    const [tooltipOpen, setTooltipOpen] = useState(false)\n    const timerRef = useRef(null)\n    useEffect(() => {\n        return () => {\n            if (timerRef.current) {\n                clearTimeout(timerRef.current)\n                timerRef.current = null;\n            }\n        }\n    }, [])\n    const mergeFiles = useMemo(() => {\n        const mergedFiles = [...files, ...allFiles];\n        return mergedFiles;\n    }, [files, allFiles]);\n\n    const downloadFile = async (file) => {\n        const { file_name, file_url } = file;\n        const res = await sopApi.getLinsightFileDownloadApi(file_url, linsight.id)\n        const url = `${__APP_ENV__.BASE_URL}${res.file_path}`;\n\n        return axios.get(url, { responseType: \"blob\" }).then((res: any) => {\n            let blob: any = null\n            if (file_url.endsWith(\".csv\")) {\n                // 添加 UTF-8 BOM（\\uFEFF）\n                const bom = new Uint8Array([0xEF, 0xBB, 0xBF]); // UTF-8 BOM\n                blob = new Blob([bom, res.data], { type: \"text/csv;charset=utf-8;\" });\n            } else {\n                blob = new Blob([res.data]);\n            }\n\n            const link = document.createElement(\"a\");\n            link.href = URL.createObjectURL(blob);\n            link.download = file_name;\n            link.click();\n            URL.revokeObjectURL(link.href);\n        }).catch(console.error);\n    };\n\n    const handleExportOther = async (e, type: 'pdf' | 'docx', file) => {\n        console.log(file);\n\n        e.stopPropagation();\n        setExportState({ loading: true, success: false, error: false, title: type === 'docx' ? 'Docx' : type });\n\n        // 清除之前的定时器，避免重复提示\n        if (timerRef.current) {\n            clearTimeout(timerRef.current);\n            timerRef.current = null;\n        }\n\n        try {\n            console.log('开始转换下载，参数:', {\n                file_url: file.file_url,\n                file_name: file.file_name,\n                to_type: type\n            });\n\n            // 发起请求，指定响应类型为 blob\n            const response = await axios.post(\n                '/api/v1/linsight/workbench/download-md-to-pdf-or-docx',\n                {\n                    file_info: {\n                        file_url: file.file_url,\n                        file_name: file.file_name\n                    },\n                    to_type: type\n                },\n                { responseType: 'blob' }\n            );\n\n            console.log('转换下载API返回1:', response);\n            console.log('返回数据类型:', typeof response.data);\n\n            // 关键步骤：校验响应是否为 JSON 格式的错误（后端返回 200 但实际出错）\n            const blob = response.data;\n            const contentType = response.headers['content-type'] || '';\n            let isErrorResponse = false;\n            let errorMessage = `转换${type.toUpperCase()}失败，请稍后重试`;\n\n            // 如果响应类型是 JSON，说明是后端返回的错误信息\n            if (contentType.includes('application/json')) {\n                // 将 Blob 转为文本，解析 JSON 错误信息\n                const text = await new Promise((resolve, reject) => {\n                    const reader = new FileReader();\n                    reader.onloadend = () => resolve(reader.result);\n                    reader.onerror = reject;\n                    reader.readAsText(blob);\n                });\n\n                try {\n                    const errorData = JSON.parse(text);\n                    // 提取后端返回的错误信息（匹配接口返回的 status_message 和 data）\n                    if (errorData.status_message) {\n                        errorMessage = errorData.status_message;\n                    }\n                    // 若有详细错误数据（如 Playwright 安装提示），补充到提示中\n                    if (errorData.data) {\n                        // 简化 Playwright 错误提示，只保留关键操作指引\n                        const simplifiedError = errorData.data.includes('playwright install')\n                            ? '服务器浏览器依赖未安装，请联系管理员执行 \"playwright install\" 命令'\n                            : errorData.data;\n                        errorMessage += `（详情：${simplifiedError.slice(0, 100)}...）`; // 截断长文本避免提示过长\n                    }\n                    isErrorResponse = true;\n                } catch (parseErr) {\n                    // 解析 JSON 失败，说明不是标准错误格式，按正常流程处理\n                    isErrorResponse = false;\n                }\n            }\n\n            // 若检测到错误响应，直接抛出错误触发 catch 逻辑\n            if (isErrorResponse) {\n                throw new Error(errorMessage);\n            }\n\n            // 正常文件流处理：设置对应 MIME 类型和扩展名\n            let mimeType, fileExtension;\n            if (type === 'pdf') {\n                mimeType = 'application/pdf';\n                fileExtension = 'pdf';\n            } else if (type === 'docx') {\n                mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n                fileExtension = 'docx';\n            }\n\n            // 创建最终下载用的 Blob（指定正确 MIME 类型）\n            const downloadBlob = new Blob([blob], { type: mimeType });\n            console.log('创建的下载Blob:', downloadBlob);\n\n            // 生成下载链接并触发下载\n            const url = window.URL.createObjectURL(downloadBlob);\n            const a = document.createElement('a');\n            a.href = url;\n            // 处理文件名：替换 .md 后缀，避免出现 xxx.md.pdf 这种重复后缀\n            const fileName = file.file_name.replace(/\\.md$/i, '') + `.${fileExtension}`;\n            a.download = fileName;\n            document.body.appendChild(a);\n            a.click();\n\n            // 清理资源，避免内存泄漏\n            window.URL.revokeObjectURL(url);\n            document.body.removeChild(a);\n\n            // 更新状态为成功，3秒后自动隐藏提示\n            setExportState(prev => ({ ...prev, loading: false, success: true }));\n            console.log(`${type.toUpperCase()}文件转换下载成功`);\n            timerRef.current = setTimeout(() => {\n                setExportState(prev => ({ ...prev, success: false }));\n            }, 3000);\n\n        } catch (error) {\n            // 捕获所有错误（网络错误、JSON 解析错误、业务错误）\n            console.error(`${type.toUpperCase()}转换下载失败:`, error);\n            // 显示错误提示，3秒后自动隐藏\n            setExportState(prev => ({ ...prev, loading: false, error: true }));\n            timerRef.current = setTimeout(() => {\n                setExportState(prev => ({ ...prev, error: false }));\n            }, 3000);\n        }\n    };\n\n    if (queueCount) {\n        const totalMinutes = queueCount * 8;\n        const hours = Math.floor(totalMinutes / 60);\n        const minutes = totalMinutes % 60;\n\n        let timeText;\n        if (hours > 0) {\n            timeText = `${hours} ${localize('com_sop_hours')} ${minutes} ${localize('com_sop_minutes')}`;\n        } else {\n            timeText = `${minutes} ${localize('com_sop_minutes')}`;\n        }\n\n        return (\n            <div className='size-full flex flex-col items-center justify-center text-sm'>\n                <img src={__APP_ENV__.BASE_URL + '/assets/queue.png'} alt=\"\" />\n                <p className='mt-9'>{localize('com_sop_queue_message')}</p>\n                <p className='mt-4 font-bold'>{localize('com_sop_estimated_wait')} {timeText}</p>\n            </div>\n        );\n    }\n\n    return (\n        <div className='relative h-full'>\n            <div className=\"w-[100%] mx-auto p-5 text-gray-800 leading-relaxed overflow-y-auto h-[calc(100vh-170px)] overflow-x-hidden\">\n                {/* {!tasks?.length && <PlaySop content={sop} />} */}\n                {/* feedback */}\n                {showFeedBack && <div className='border border-primary/30 rounded-md p-2 bg-white'>\n                    <div className='flex items-center gap-2'>\n                        <Sparkles size={18} className=' text-primary/80' />\n                        <span className='font-bold'>用户反馈</span>\n                    </div>\n                    <div className='max-h-24 overflow-y-auto no-scrollbar mt-2'>\n                        {linsight?.execute_feedback || '暂无用户反馈'}\n                    </div>\n                </div>}\n                {/* 任务 */}\n                {!!tasks?.length && <div className='pl-6'>\n                    <p className='text-sm text-gray-400 mt-6 mb-4'>{localize('com_sop_plan_task_path')}</p>\n                    {tasks.map((task, i) => (\n                        <p key={task.id} className='leading-7'>{i + 1}. {task.task_data.target}</p>\n                    ))}\n                    <p className='text-sm text-gray-400 mt-6 mb-4'>{localize('com_sop_execute_tasks')}</p>\n                </div>}\n                {\n                    tasks?.map((task, i) => <Task\n                        key={task.id}\n                        que={i + 1}\n                        lvl1\n                        task={task}\n                        hasSubTask={!!task.children?.length}\n                        setCurrentDirectFile={(file) => {\n                            setIsPreviewOpen(true);\n                            setCurrentDirectFile(file)\n                        }}\n                        onSearchKnowledge={setKnowledgeInfo}\n                        onWebSearch={setWebSearchInfo}\n                        sendInput={() => { }} >\n                        {\n                            task.children?.map((_task, i) => <Task\n                                key={_task.id}\n                                que={i + 1}\n                                task={_task}\n                                sendInput={() => { }}\n                                setCurrentDirectFile={(file) => {\n                                    setIsPreviewOpen(true);\n                                    setCurrentDirectFile(file)\n                                }}\n                                onSearchKnowledge={setKnowledgeInfo}\n                                onWebSearch={setWebSearchInfo}\n                            />)\n                        }\n                    </Task>\n                    )\n                }\n                {/* error */}\n                {/* {taskError && <ErrorDisplay title={localize('com_sop_task_execution_interrupted')} taskError={taskError} />} */}\n                {/* 总结 */}\n                {/* {\n                summary && <div className='relative mb-6 text-sm px-4 py-3 rounded-lg bg-[#F8F9FB] text-[#303133] leading-6 break-all'>\n                    <MessageMarkDown message={summary} />\n                    <div className='bg-gradient-to-t w-full h-10 from-[#F8F9FB] from-0% to-transparent to-100% absolute bottom-0'></div>\n                </div>\n            } */}\n                {/* 结果文件 */}\n                {files && files.filter(file =>\n                    /\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i.test(file.file_name)\n                ).length > 0 && (\n                        <div className=\"mb-5\"> {/* 与下方普通文件保持间距 */}\n                            {files\n                                .filter(file => /\\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i.test(file.file_name))\n                                .map(file => {\n                                    // 1. 获取文件扩展名，判断是否为SVG\n                                    const fileExt = file.file_name.split('.').pop()?.toLowerCase() || '';\n                                    const isSvg = fileExt === 'svg';\n\n                                    return (\n                                        <div\n                                            key={file.file_id}\n                                            className=\"mb-3 p-2 rounded-2xl border border-[#ebeef2] cursor-pointer\"\n                                            // 点击图片打开预览抽屉（复用原有逻辑）\n                                            onClick={() => {\n                                                setCurrentDirectFile(null);\n                                                setCurrentPreviewFileId(file.file_id);\n                                                setIsPreviewOpen(true);\n                                                setTriggerDrawerFromCard(true);\n                                            }}\n                                        >\n                                            {/* 固定图片容器尺寸，统一展示风格 */}\n                                            <div className=\"w-full min-h-[200px] overflow-hidden rounded-lg bg-[#F4F6FB]\">\n                                                {/* SVG 用专用组件 SvgImage（支持自适应尺寸） */}\n                                                {isSvg ? (\n                                                    <SvgImage\n                                                        fileUrl={file.file_url}\n                                                    />\n                                                ) : (\n                                                    // 其他图片格式用img标签，补充加载失败兜底\n                                                    <img\n                                                        src={`${__APP_ENV__.BASE_URL}${file.file_url}`} // 拼接完整后端URL\n                                                        alt={file.file_name}\n                                                        className=\"w-full h-full object-cover\" // 填充容器，避免变形\n                                                        // 图片加载失败时显示占位图（需确保占位图路径正确）\n                                                        onError={(e) => {\n                                                            e.target.src = `${__APP_ENV__.BASE_URL}/assets/image-placeholder.png`;\n                                                        }}\n                                                    />\n                                                )}\n                                            </div>\n                                            {/* 显示文件名，提升用户体验 */}\n                                            <div className=\"mt-2 text-sm text-center truncate\">{file.file_name}</div>\n                                        </div>\n                                    );\n                                })}\n                        </div>\n                    )}\n\n                {files && (\n                    <div>\n                        <div className='mt-5 flex flex-wrap gap-3'>\n                            {/* 过滤排除图片格式文件，只保留非图片文件 */}\n                            {files.filter(file => {\n                                const excludedImageExts = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'svg'];\n                                const fileExt = file.file_name.split('.').pop()?.toLowerCase() || '';\n                                return !excludedImageExts.includes(fileExt);\n                            }).map((file) => (\n                                <div\n                                    key={file.file_id}\n                                    onClick={() => {\n                                        // HTML文件单独处理：打开新窗口\n                                        if (file.file_name.split('.').pop() === 'html') {\n                                            return window.open(`${__APP_ENV__.BASE_URL}/html?url=${encodeURIComponent(file.file_url)}`, '_blank');\n                                        }\n                                        // 其他文件打开预览抽屉\n                                        setCurrentDirectFile(null);\n                                        setCurrentPreviewFileId(file.file_id);\n                                        setIsPreviewOpen(true);\n                                        setTriggerDrawerFromCard(true);\n                                    }}\n                                    className='w-[calc(50%-6px)] p-2 rounded-2xl border border-[#ebeef2] cursor-pointer'\n                                >\n                                    {/* 非图片文件：显示图标占位 */}\n                                    <div className='bg-[#F4F6FB] h-24 p-4 rounded-lg overflow-hidden'>\n                                        <FileIcon\n                                            type={file.file_name.split('.').pop().toLowerCase()}\n                                            className='size-24 mx-auto opacity-20'\n                                        />\n                                    </div>\n                                    {/* 文件信息与下载按钮 */}\n                                    <div className='relative flex pt-3 gap-2 items-center'>\n                                        <FileIcon\n                                            type={file.file_name.split('.').pop().toLowerCase()}\n                                            className='size-4 min-w-4'\n                                        />\n                                        <span className='text-sm truncate pr-6'>{file.file_name}</span>\n                                        {/* 多文件类型下载按钮（复用原有组件） */}\n                                        <Button variant=\"ghost\" className='absolute right-1 -bottom-1 w-6 h-6 p-0'>\n                                            {String(file.file_name).toLowerCase().endsWith('.md') ? (\n                                                <DownloadList file={file} onDownloadFile={downloadFile} onExportOther={handleExportOther} />\n                                            ) : (\n                                                <Download size={16} onClick={(e) => { e.stopPropagation(); downloadFile(file); }} />\n                                            )}\n                                        </Button>\n                                    </div>\n                                </div>\n                            ))}\n                        </div>\n\n                        {/* 预览所有文件列表（文件夹入口） */}\n                        {allFiles.length > files.length && (\n                            <div className='mt-2.5'>\n                                <div\n                                    onClick={() => setIsDrawerOpen(true)}\n                                    className='w-[calc(50%-6px)] p-2 rounded-2xl border border-[#ebeef2] cursor-pointer'\n                                >\n                                    <div className='bg-[#F4F6FB] h-24 p-6 rounded-lg overflow-hidden'>\n                                        <FileIcon type=\"dir\" className='size-24 mx-auto opacity-20' />\n                                    </div>\n                                    <div className='relative flex pt-3 gap-2 items-center'>\n                                        <FileIcon type=\"dir\" className='size-4 min-w-4' />\n                                        <span className='text-sm truncate pr-6'>{localize('com_sop_view_all_files')}</span>\n                                        <Button variant=\"ghost\" className='absolute right-1 -bottom-1 w-6 h-6 p-0'>\n                                            <ArrowRight size={16} />\n                                        </Button>\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                )}\n\n                {/* search knowledge */}\n                <SearchKnowledgeSheet\n                    isOpen={!!knowledgeInfo}\n                    onClose={() => setKnowledgeInfo(null)}\n                    data={knowledgeInfo?.data}\n                    searchQuery={knowledgeInfo?.query} />\n                {/* web search */}\n                <WebSearchSheet\n                    isOpen={!!webSearchInfo}\n                    onClose={() => setWebSearchInfo(null)}\n                    data={webSearchInfo?.data}\n                    searchQuery={webSearchInfo?.query} />\n                {/* 文件列表抽屉 */}\n                <FileDrawer\n                    title={title}\n                    files={allFiles}\n                    isOpen={isDrawerOpen}\n                    onOpenChange={setIsDrawerOpen}\n                    downloadFile={downloadFile}\n                    handleExportOther={handleExportOther}\n                    onPreview={(id) => {\n                        setCurrentDirectFile(null);\n                        setCurrentPreviewFileId(id);\n                        setIsDrawerOpen(false)\n                        setIsPreviewOpen(true)\n                        setTriggerDrawerFromCard(false)\n                    }}\n                    exportState={exportState}\n                />\n                {/* 文件预览抽屉 */}\n                <FilePreviewDrawer\n                    files={mergeFiles}\n                    isOpen={isPreviewOpen}\n                    onOpenChange={setIsPreviewOpen}\n                    downloadFile={downloadFile}\n                    handleExportOther={handleExportOther}\n                    directFile={currentDirectFile}\n                    currentFileId={currentPreviewFileId}\n                    onFileChange={(fileId) => setCurrentPreviewFileId(fileId)}\n                    vid={linsight.id}\n                    onBack={currentDirectFile || triggerDrawerFromCard ? undefined : (() => {\n                        setIsDrawerOpen(true);\n                        setIsPreviewOpen(false);\n                    })}\n                    exportState={exportState}\n                >\n                </FilePreviewDrawer>\n            </div >\n            {exportState.loading && (\n                <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                    <Loader2 className=\"size-5 animate-spin text-blue-500\" />\n                    <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;正在导出，请稍后...&nbsp;&nbsp;</div>\n                </div>\n            )}\n            {exportState.success && (\n                <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                    <CheckCircle className=\"size-5 text-green-500\" />\n                    <div className=\"text-sm text-gray-800\">{exportState.title}&nbsp;文件下载成功</div>\n                </div>\n            )}\n            {exportState.error && (\n                <div className=\"fixed top-24 right-5 flex items-center gap-2 bg-white p-3 rounded-lg shadow-md z-500\">\n                    <CircleX className=\"size-5 text-red-500\" />\n                    <div className=\"text-sm text-gray-800\">导出失败</div>\n                </div>\n            )}\n        </div>\n    );\n};\n\n\n/**\n * 自动定位用户输入框\n * @param tasks \n */\nconst useFoucsInput = (tasks: any) => {\n    const [inputQueue, setInputQueue] = useState<string[]>([]); // 待处理的输入任务队列\n    const [currentFocusId, setCurrentFocusId] = useState(''); // 当前聚焦的任务ID\n    console.log('inputQueue :>> ', inputQueue);\n    // 当任务变化时更新输入队列\n    useEffect(() => {\n        // 找出所有需要输入的新任务\n        const newInputTasks = tasks\n            .filter((task: any) => task.status === 'user_input' && !inputQueue.includes(task.id))\n            .map(task => task.id);\n\n        // 二级任务(同时只有一个二级任务下有待输入input)\n        const hasUserInputTask = tasks.find((task: any) => task.children?.find((_task: any) => _task.status === 'user_input'));\n        if (hasUserInputTask) {\n            hasUserInputTask.children\n                .filter((_task: any) => _task.status === 'user_input' && !inputQueue.includes(_task.id))\n                .forEach(_task => newInputTasks.push(_task.id));\n        }\n\n        if (newInputTasks.length > 0) {\n            // 将新任务添加到队列末尾\n            setInputQueue((prev) => {\n                const res = [...newInputTasks]\n                setCurrentFocusId(res[0] || '')\n                return res;\n            });\n\n        } else {\n            setCurrentFocusId(newInputTasks[0] || '');\n        }\n    }, [tasks]);\n\n    // 当输入队列变化时自动聚焦\n    useEffect(() => {\n        if (currentFocusId) {\n            const dom = document.getElementById(currentFocusId);\n            if (dom) {\n                dom?.focus();\n                // 平滑滚动到输入框位置\n                dom.scrollIntoView({\n                    behavior: 'smooth',\n                    block: 'center'\n                });\n            }\n        }\n    }, [currentFocusId]);\n}"
  },
  {
    "path": "src/frontend/platform/src/workspace/WebSearchSheet.tsx",
    "content": "\"use client\"\n\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"@/components/bs-ui/sheet\"\nimport { Chromium, Earth } from \"lucide-react\"\nimport { useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\n\ninterface SearchResultItem {\n    content: string\n    suffix: string\n    title: string\n}\n\ninterface SearchResultsSheetProps {\n    isOpen: boolean\n    onClose: () => void\n    data: SearchResultItem[]\n    searchQuery: string\n}\n\nexport function WebSearchSheet({ isOpen, onClose, data = [], searchQuery }: SearchResultsSheetProps) {\n    const { t: localize } = useTranslation();\n\n    return (\n        <Sheet open={isOpen} onOpenChange={onClose}>\n            <SheetContent side=\"right\" className=\"w-[600px] sm:w-[700px] sm:max-w-[700px] p-0\">\n                <SheetHeader className=\"p-4 border-b border-border\">\n                    <div className=\"flex items-center gap-3\">\n                        <Earth className=\"w-5 h-5 text-muted-foreground\" />\n                        <SheetTitle className=\"text-lg font-semibold text-foreground\">{localize('com_webSearch')}</SheetTitle>\n                    </div>\n                    <SheetDescription className=\"text-left\">\n                        <div className=\"flex items-center gap-2 text-sm text-muted-foreground mt-2\">\n                            <span className=\"whitespace-nowrap\">🔍{localize('com_searchQueryLabel')}</span>\n                            <span className=\"font-medium text-foreground\">”{searchQuery}“</span>\n                        </div>\n                    </SheetDescription>\n                </SheetHeader>\n\n                {/* Results Content */}\n                <div className=\"flex-1 h-[calc(100vh-120px)] overflow-y-auto\">\n                    <div className=\"p-4 space-y-4\">\n                        {data.map((item, index) => (\n                            <div\n                                key={index}\n                                className=\"border-b overflow-hidden hover:border-blue-500 transition-colors duration-200 cursor-pointer\"\n                            >\n                                <a href={item.url || '#'} target={item.url ? \"_blank\" : undefined} rel=\"noopener noreferrer\">\n                                    {/* Content - always expanded as per design */}\n                                    <div className=\"p-4 bg-card\">\n                                        <div className=\"mb-3 flex items-center gap-2\">\n                                            <ImageWithFallback\n                                                src={item.thumbnail}\n                                                alt=\"\"\n                                                className=\"\"\n                                            />\n                                            <p>{item.host}</p>\n                                        </div>\n                                        <h4 className=\"text-base font-medium text-foreground\">{item.title}</h4>\n                                        <div className=\"font-normal text-sm text-[#303133] leading-6 break-all\">\n                                            <p className=\"line-clamp-2 overflow-hidden text-ellipsis\">{item.content}</p>\n                                        </div>\n                                    </div>\n                                </a>\n                            </div>\n                        ))}\n                    </div>\n                </div>\n            </SheetContent>\n        </Sheet>\n    )\n}\n\n\nconst ImageWithFallback = ({ src, alt, className }) => {\n    const [hasError, setHasError] = useState(false);\n\n    const handleError = () => {\n        setHasError(true);\n    };\n\n    return (\n        <div className={className}>\n            {!hasError && src ? (\n                <img\n                    src={src}\n                    alt={alt}\n                    className=\"max-w-12 max-h-12\"\n                    onError={handleError}\n                />\n            ) : (\n                <Chromium size={20} />\n            )}\n        </div>\n    );\n};\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/markdown/Echarts.tsx",
    "content": "\"use client\"\n\nimport { Copy } from \"lucide-react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { Button } from \"@/components/bs-ui/button\"\nimport { copyText } from \"@/utils\"\nimport { loadScript } from \"./Mermaid\"\n\nexport default function ECharts({ option }: { option: string }) {\n    const [mode, setMode] = useState<\"chart\" | \"code\">(\"chart\")\n    const [echartsLib, setEchartsLib] = useState<any>(null)\n    const chartRef = useRef<any | null>(null)\n    const domRef = useRef<HTMLDivElement>(null)\n    const containerRef = useRef<HTMLDivElement>(null)\n\n    useEffect(() => {\n        loadScript(\"echarts\")\n            .then((echarts) => {\n                console.log(\"[v0] ECharts library loaded successfully\", echarts)\n                setEchartsLib(echarts)\n            })\n            .catch((error) => {\n                console.error(\"[v0] Failed to load ECharts library:\", error)\n            })\n    }, [])\n\n    useEffect(() => {\n        // 等待 echarts 库加载完成\n        if (!echartsLib) return\n\n        // 清理旧实例\n        if (chartRef.current) {\n            chartRef.current.dispose()\n            chartRef.current = null\n        }\n\n        // 只在图表模式下初始化\n        if (domRef.current) {\n            // 确保 DOM 已经渲染\n            setTimeout(() => {\n                if (domRef.current && echartsLib) {\n                    chartRef.current = echartsLib.init(domRef.current)\n                    const getOption = new Function(\"myChart\", \"echarts\", `return ${option.trim()}`)\n                    try {\n                        chartRef.current.setOption(getOption(chartRef.current, echartsLib))\n                    } catch (e) {\n                        console.error(\"[v0] ECharts option error:\", e)\n                    }\n                }\n            }, 0)\n        }\n\n        return () => {\n            if (chartRef.current) {\n                chartRef.current.dispose()\n                chartRef.current = null\n            }\n        }\n    }, [option, echartsLib])\n\n    // 自适应宽度\n    useEffect(() => {\n        if (mode !== \"chart\" || !containerRef.current || !chartRef.current) return\n\n        const resizeObserver = new ResizeObserver(() => {\n            chartRef.current?.resize()\n        })\n\n        if (containerRef.current) {\n            resizeObserver.observe(containerRef.current)\n        }\n\n        const handleResize = () => {\n            chartRef.current?.resize()\n        }\n        window.addEventListener(\"resize\", handleResize)\n\n        return () => {\n            resizeObserver.disconnect()\n            window.removeEventListener(\"resize\", handleResize)\n        }\n    }, [mode])\n\n    useEffect(() => {\n        const parentNode = document.querySelector(\".bisheng-message\")\n        if (parentNode && containerRef.current) {\n            containerRef.current.style.width = `${parentNode.clientWidth - 60}px`\n        }\n    }, [])\n\n    const codeStr = useMemo(() => {\n        try {\n            return JSON.stringify(JSON.parse(option), null, 2)\n        } catch (e) {\n            return option\n        }\n    }, [option])\n\n    const [copySuccess, setCopySuccess] = useState(false)\n    const handleCopy = async () => {\n        try {\n            await copyText(option)\n            setCopySuccess(true)\n            setTimeout(() => setCopySuccess(false), 2000)\n        } catch (error) {\n            console.error(\"Copy failed:\", error)\n        }\n    }\n\n    return (\n        <div className=\"my-3 -ml-3.5\" ref={containerRef}>\n            <div className=\"shadow-sm rounded-lg bg-muted overflow-hidden\">\n                {/* 头部切换按钮 */}\n                <div className=\"flex items-center justify-between p-2 relative z-10 bg-muted\">\n                    <div className=\"flex gap-1 bg-background rounded-md\">\n                        <Button\n                            onClick={() => setMode(\"chart\")}\n                            variant={mode === \"chart\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            图表\n                        </Button>\n                        <Button\n                            onClick={() => setMode(\"code\")}\n                            variant={mode === \"code\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            代码\n                        </Button>\n                    </div>\n                    {mode === \"code\" && (\n                        <div className=\"flex items-center\">\n                            <Button onClick={handleCopy} variant=\"ghost\" className=\"text-xs h-8\">\n                                <Copy size={16} />\n                                {copySuccess ? \"已复制\" : \"复制\"}\n                            </Button>\n                        </div>\n                    )}\n                </div>\n\n                {/* 内容区域 */}\n                <div className=\"\">\n                    {!echartsLib && mode === \"chart\" && (\n                        <div className=\"flex items-center justify-center h-[400px] text-muted-foreground\">loading...</div>\n                    )}\n                    <div ref={domRef} style={{ height: 400 }} className={mode === \"chart\" && echartsLib ? \"block\" : \"hidden\"} />\n                    <div className={mode === \"code\" ? \"block relative\" : \"hidden\"}>\n                        <pre className=\"p-4 overflow-x-auto text-sm leading-relaxed max-h-[500px] overflow-y-auto mt-0 bg-transparent\">\n                            <code className=\"text-slate-500 font-mono whitespace-pre-wrap break-words\">{codeStr}</code>\n                        </pre>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/src/workspace/markdown/Mermaid.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { Button } from \"@/components/bs-ui/button\"\nimport { Separator } from \"@/components/bs-ui/separator\"\nimport { formatDate } from \"@/util/utils\"\nimport { copyText } from \"@/utils\"\nimport { Copy, DownloadIcon, ZoomIn, ZoomOut } from \"lucide-react\"\nimport { useEffect, useRef, useState } from \"react\"\n\n// 动态加载 mermaid\nexport const loadScript = async (fileName) => {\n    if (window[fileName]) {\n        return window[fileName]\n    }\n\n    const script = document.createElement(\"script\")\n    script.src = `${__APP_ENV__.BASE_URL}/${fileName}.min.js`\n    script.type = \"module\"\n\n    return new Promise((resolve, reject) => {\n        script.onload = () => {\n            // 等待 mermaid 初始化\n            const checkMermaid = setInterval(() => {\n                if (window[fileName]) {\n                    clearInterval(checkMermaid)\n                    resolve(window[fileName])\n                }\n            }, 100)\n        }\n        script.onerror = reject\n        document.head.appendChild(script)\n    })\n}\n\nexport default function MermaidBlock({ children }: { children: string }) {\n    const ref = useRef<HTMLDivElement>(null)\n    const containerRef = useRef<HTMLDivElement>(null)\n    const [mode, setMode] = useState<\"chart\" | \"code\">(\"chart\")\n    const mermaidRef = useRef<any>(null)\n\n    const [zoom, setZoom] = useState(1)\n    const [pan, setPan] = useState({ x: 0, y: 0 })\n    const [isDragging, setIsDragging] = useState(false)\n    const [dragStart, setDragStart] = useState({ x: 0, y: 0 })\n    const [copySuccess, setCopySuccess] = useState(false)\n\n    useEffect(() => {\n        loadScript('mermaid').then((mermaid) => {\n            mermaid.initialize({ startOnLoad: false, theme: \"default\" })\n            mermaidRef.current = mermaid\n            if (ref.current) {\n                ref.current.innerHTML = children\n                mermaidRef.current.run({ nodes: [ref.current] })\n            }\n        })\n    }, [])\n\n    useEffect(() => {\n        const parentNode = document.querySelector(\".bisheng-message\")\n        if (parentNode && containerRef.current) {\n            containerRef.current.style.width = `${parentNode.clientWidth - 60}px`\n        }\n    }, [])\n\n    const handleZoomIn = () => {\n        setZoom((prev) => Math.min(prev + 0.2, 3))\n    }\n\n    const handleZoomOut = () => {\n        setZoom((prev) => Math.max(prev - 0.2, 0.5))\n    }\n\n    const handleDownload = async () => {\n        if (!ref.current) return\n\n        const svgElement = ref.current.querySelector(\"svg\")\n        if (!svgElement) return\n\n        try {\n            // Clone the SVG to avoid modifying the original\n            const clonedSvg = svgElement.cloneNode(true) as SVGElement\n\n            // Get computed styles and inline them to avoid CORS issues\n            const allElements = clonedSvg.querySelectorAll(\"*\")\n            allElements.forEach((el) => {\n                const computedStyle = window.getComputedStyle(el as Element)\n                const styleString = Array.from(computedStyle)\n                    .map((key) => `${key}:${computedStyle.getPropertyValue(key)}`)\n                    .join(\";\")\n                    ; (el as HTMLElement).setAttribute(\"style\", styleString)\n            })\n\n            // Get SVG dimensions\n            const bbox = svgElement.getBBox()\n            const width = bbox.width || svgElement.clientWidth\n            const height = bbox.height || svgElement.clientHeight\n\n            // Set explicit width and height on cloned SVG\n            clonedSvg.setAttribute(\"width\", width.toString())\n            clonedSvg.setAttribute(\"height\", height.toString())\n\n            // Create canvas\n            const canvas = document.createElement(\"canvas\")\n            const scale = 2 // Higher resolution\n            canvas.width = width * scale\n            canvas.height = height * scale\n            const ctx = canvas.getContext(\"2d\")\n\n            if (!ctx) return\n\n            // Scale for better quality\n            ctx.scale(scale, scale)\n            ctx.fillStyle = \"white\"\n            ctx.fillRect(0, 0, width, height)\n\n            // Convert SVG to data URL (not blob URL to avoid CORS)\n            const svgData = new XMLSerializer().serializeToString(clonedSvg)\n            const svgDataUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgData)}`\n\n            // Load image and draw to canvas\n            const img = new Image()\n            img.onload = () => {\n                ctx.drawImage(img, 0, 0)\n\n                // Download\n                canvas.toBlob((blob) => {\n                    if (blob) {\n                        const titleDom = document.querySelector(\"#app-title\")\n                        console.log('titleDom :>> ', titleDom);\n                        const link = document.createElement(\"a\")\n                        link.download = `${titleDom?.innerHTML}_${formatDate(new Date(), 'yyyyMMdd_HHmm')}.png` || `mermaid-diagram-${Date.now()}.png`\n                        link.href = URL.createObjectURL(blob)\n                        link.click()\n                        URL.revokeObjectURL(link.href)\n                    }\n                })\n            }\n            img.onerror = (error) => {\n                console.error(\"Image load failed:\", error)\n            }\n            img.src = svgDataUrl\n        } catch (error) {\n            console.error(\"Download failed:\", error)\n        }\n    }\n    const handleCopy = async () => {\n        try {\n            await copyText(children)\n            setCopySuccess(true)\n            setTimeout(() => setCopySuccess(false), 2000)\n        } catch (error) {\n            console.error(\"Copy failed:\", error)\n        }\n    }\n\n    const handleMouseDown = (e: React.MouseEvent) => {\n        // if (zoom > 1) {\n        setIsDragging(true)\n        setDragStart({ x: e.clientX - pan.x, y: e.clientY - pan.y })\n        // }\n    }\n\n    const handleMouseMove = (e: React.MouseEvent) => {\n        if (isDragging) {\n            setPan({\n                x: e.clientX - dragStart.x,\n                y: e.clientY - dragStart.y,\n            })\n        }\n    }\n\n    const handleMouseUp = () => {\n        setIsDragging(false)\n    }\n\n    const handleMouseLeave = () => {\n        setIsDragging(false)\n    }\n\n    return (\n        <div className=\"my-3 -ml-3.5\" ref={containerRef}>\n            <div className=\"shadow-sm rounded-lg bg-muted overflow-hidden\">\n                {/* 头部切换按钮 */}\n                <div className=\"flex items-center justify-between p-2 relative z-10 bg-muted\">\n                    <div className=\"flex gap-1 bg-background rounded-md\">\n                        <Button\n                            onClick={() => setMode(\"chart\")}\n                            variant={mode === \"chart\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            图表\n                        </Button>\n                        <Button\n                            onClick={() => setMode(\"code\")}\n                            variant={mode === \"code\" ? \"default\" : \"ghost\"}\n                            className=\"text-xs h-8\"\n                        >\n                            代码\n                        </Button>\n                    </div>\n                    {mode === \"chart\" && (\n                        <div className=\"flex items-center\">\n                            <Button\n                                onClick={handleZoomOut}\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"text-xs h-8\"\n                                disabled={zoom <= 0.5}\n                            >\n                                <ZoomOut size={16} />\n                            </Button>\n                            <Button\n                                onClick={handleZoomIn}\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"text-xs h-8\"\n                                disabled={zoom >= 3}\n                            >\n                                <ZoomIn size={16} />\n                            </Button>\n                            <Separator orientation=\"vertical\" className=\"h-4 mx-1\" />\n                            <Button onClick={handleDownload} variant=\"ghost\" className=\"text-xs h-8\">\n                                <DownloadIcon size={16} />\n                                下载\n                            </Button>\n                        </div>\n                    )}\n                    {mode === \"code\" && (\n                        <div className=\"flex items-center\">\n                            <Button onClick={handleCopy} variant=\"ghost\" className=\"text-xs h-8\">\n                                <Copy size={16} />\n                                {copySuccess ? \"已复制\" : \"复制\"}\n                            </Button>\n                        </div>\n                    )}\n                </div>\n\n                {/* 内容区域 */}\n                <div className=\"\">\n                    <div\n                        ref={ref}\n                        className={mode === \"chart\" ? \"flex justify-center mermaid overflow-hidden\" : \"hidden\"}\n                        style={{\n                            transform: `scale(${zoom}) translate(${pan.x / zoom}px, ${pan.y / zoom}px)`,\n                            transformOrigin: \"center center\",\n                            cursor: (isDragging ? \"grabbing\" : \"grab\"),\n                            transition: isDragging ? \"none\" : \"transform 0.2s ease-out\",\n                        }}\n                        onMouseDown={handleMouseDown}\n                        onMouseMove={handleMouseMove}\n                        onMouseUp={handleMouseUp}\n                        onMouseLeave={handleMouseLeave}\n                    />\n                    <div className={mode === \"code\" ? \"block relative\" : \"hidden\"}>\n                        <pre className=\"p-4 overflow-x-auto text-sm leading-relaxed max-h-[500px] overflow-y-auto\">\n                            <code className=\"text-slate-500 text-foreground font-mono whitespace-pre-wrap break-words\">{children}</code>\n                        </pre>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n"
  },
  {
    "path": "src/frontend/platform/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nconst { fontFamily } = require(\"tailwindcss/defaultTheme\");\n\nimport plugin from \"tailwindcss/plugin\";\n\n// ! Check if removing the other module.exports made sense\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\n    \"app/**/*.{ts,tsx}\",\n    \"components/**/*.{ts,tsx}\",\n    \"./index.html\",\n    \"./src/**/*.{js,ts,tsx,jsx}\",\n  ],\n  safelist: [\n    \"bg-status-blue\",\n    \"bg-status-green\",\n    \"bg-status-red\",\n    \"bg-status-yellow\",\n  ],\n  important: true,\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      screens: {\n        'my-size': '1800px',\n        'my-size-lg': '2200px'\n      },\n      colors: {\n        \"search-input\": \"var(--search-input)\",\n        \"background-new\": \"var(--background-new)\",\n        \"prompt-description\": \"var(--text-prompt)\",\n        \"background-prompt\": \"var(--background-prompt)\",\n        \"text-answer\": \"var(--text-answer)\",\n        \"header-icon\": \"var(--header-icon)\",\n        \"nav-hover\": \"var(--nav-hover)\",\n        \"background-tip\": \"var(--background-tip)\",\n        \"background-tip-darkhover\": \"var(--background-tip-darkhover)\",\n        \"background-main-content\": \"var(--background-main-content)\",\n        \"background-main\": \"var(--background-main)\",\n        \"button\": \"var(--button)\",\n        \"login-input\": \"var(--login-input)\",\n        \"tx-color\": \"var(--text-color)\",\n        \"background-login\": \"var(--background-login)\",\n        \"background-dark\": \"var(--background)\",\n        \"component-icon\": \"var(--component-icon)\",\n        \"flow-icon\": \"var(--flow-icon)\",\n        \"low-indigo\": \"var(--low-indigo)\",\n        \"chat-send\": \"var(--chat-send)\",\n        connection: \"var(--connection)\",\n        \"almost-dark-gray\": \"var(--almost-dark-gray)\",\n        \"almost-light-blue\": \"var(--almost-light-blue)\",\n        \"almost-medium-blue\": \"var(--almost-medium-blue)\",\n        \"almost-medium-gray\": \"var(--almost-medium-gray)\",\n        \"almost-medium-green\": \"var(--almost-medium-green)\",\n        \"almost-medium-red\": \"var(--almost-medium-red)\",\n        \"btn-shadow\": \"var(--round-btn-shadow)\",\n        \"build-trigger\": \"var(--build-trigger)\",\n        \"chat-trigger\": \"var(--chat-trigger)\",\n        \"chat-trigger-disabled\": \"var(--chat-trigger-disabled)\",\n        \"blur-shared\": \"var(--blur-shared)\",\n        \"dark-blue\": \"var(--dark-blue)\",\n        \"dark-gray\": \"var(--dark-gray)\",\n        \"dark-red\": \"var(--dark-red)\",\n        \"error-background\": \"var(--error-background)\",\n        \"error-foreground\": \"var(--error-foreground)\",\n        \"high-dark-gray\": \"var(--high-dark-gray)\",\n        \"high-indigo\": \"var(--high-indigo)\",\n        \"high-light-gray\": \"var(--high-light-gray)\",\n        \"info-background\": \"var(--info-background)\",\n        \"info-foreground\": \"var(--info-foreground)\",\n        \"light-blue\": \"var(--light-blue)\",\n        \"light-gray\": \"var(--light-gray)\",\n        \"light-slate\": \"var(--light-slate)\",\n        \"medium-blue\": \"var(--medium-blue)\",\n        \"status-blue\": \"var(--status-blue)\",\n        \"medium-dark-gray\": \"var(--medium-dark-gray)\",\n        \"medium-dark-green\": \"var(--medium-dark-green)\",\n        \"medium-dark-red\": \"var(--medium-dark-red)\",\n        \"medium-emerald\": \"var(--medium-emerald)\",\n        \"medium-gray\": \"var(--medium-gray)\",\n        \"medium-high-indigo\": \"var(--medium-high-indigo)\",\n        \"medium-indigo\": \"var(--medium-indigo)\",\n        \"medium-low-gray\": \"var(--medium-low-gray)\",\n        \"status-green\": \"var(--status-green)\",\n        \"status-red\": \"var(--status-red)\",\n        \"status-yellow\": \"var(--status-yellow)\",\n        \"success-background\": \"var(--success-background)\",\n        \"success-foreground\": \"var(--success-foreground)\",\n        \"beta-background\": \"var(--beta-background)\",\n        \"beta-foreground\": \"var(--beta-foreground)\",\n        \"chat-bot-icon\": \"var(--chat-bot-icon)\",\n        \"chat-user-icon\": \"var(--chat-user-icon)\",\n        \"black-button\": \"hsl(var(--black-button))\",\n        white: \"var(--white)\",\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input)/0.15)\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      borderRadius: {\n        lg: `var(--radius)`,\n        md: `calc(var(--radius) - 2px)`,\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      fontFamily: {\n        sans: [\"var(--font-sans)\", ...fontFamily.sans],\n      },\n    },\n  },\n\n  plugins: [\n    require(\"tailwindcss-animate\"),\n    require(\"@tailwindcss/forms\")({\n      strategy: \"class\", // only generate classes\n    }),\n    plugin(function ({ addUtilities }) {\n      addUtilities({\n        \".scrollbar-hide\": {\n          /* IE and Edge */\n          \"-ms-overflow-style\": \"none\",\n          /* Firefox */\n          \"scrollbar-width\": \"none\",\n          /* Safari and Chrome */\n          \"&::-webkit-scrollbar\": {\n            display: \"none\",\n          },\n        },\n        \".truncate-multiline\": {\n          display: \"-webkit-box\",\n          \"-webkit-line-clamp\":\n            \"3\" /* Change this number to the number of lines you want to show */,\n          \"-webkit-box-orient\": \"vertical\",\n          overflow: \"hidden\",\n          \"text-overflow\": \"ellipsis\",\n        },\n        \".truncate-doubleline\": {\n          display: \"-webkit-box\",\n          \"-webkit-line-clamp\":\n            \"2\" /* Change this number to the number of lines you want to show */,\n          \"-webkit-box-orient\": \"vertical\",\n          overflow: \"hidden\",\n          \"text-overflow\": \"ellipsis\",\n        },\n        \".word-break-break-word\": {\n          wordBreak: \"break-word\",\n        },\n        \".arrow-hide\": {\n          \"&::-webkit-inner-spin-button\": {\n            \"-webkit-appearance\": \"none\",\n            margin: 0,\n          },\n          \"&::-webkit-outer-spin-button\": {\n            \"-webkit-appearance\": \"none\",\n            margin: 0,\n          },\n        },\n        \".password\": {\n          \"-webkit-text-security\": \"disc\",\n          \"font-family\": \"text-security-disc\",\n        },\n        \".stop\": {\n          \"-webkit-animation-play-state\": \"paused\",\n          \"-moz-animation-play-state\": \"paused\",\n          \"animation-play-state\": \"paused\",\n        },\n        \".custom-scroll\": {\n          \"&::-webkit-scrollbar\": {\n            width: \"8px\",\n            height: \"8px\",\n          },\n          \"&::-webkit-scrollbar-track\": {\n            backgroundColor: \"#f1f1f1\",\n          },\n          \"&::-webkit-scrollbar-thumb\": {\n            backgroundColor: \"#ccc\",\n            borderRadius: \"999px\",\n          },\n          \"&::-webkit-scrollbar-thumb:hover\": {\n            backgroundColor: \"#bbb\",\n          },\n          cursor: \"auto\",\n        },\n        \".dark .theme-attribution .react-flow__attribution\": {\n          backgroundColor: \"rgba(255, 255, 255, 0.2)\",\n          padding: \"0px 5px\",\n        },\n        \".dark .theme-attribution .react-flow__attribution a\": {\n          color: \"black\",\n        },\n        \".text-align-last-left\": {\n          \"text-align-last\": \"left\",\n        },\n        \".text-align-last-right\": {\n          \"text-align-last\": \"right\",\n        },\n      });\n    }),\n    require(\"@tailwindcss/typography\")\n  ],\n};\n"
  },
  {
    "path": "src/frontend/platform/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": false,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n    \"noImplicitAny\": false,\n    \"paths\": {\n      \"@/*\": [\"src/*\"]\n    }\n  },\n  \"include\": [\"src\"]\n}"
  },
  {
    "path": "src/frontend/platform/vite.config.mts",
    "content": "import react from \"@vitejs/plugin-react-swc\";\nimport path from \"path\";\nimport { defineConfig } from \"vite\";\nimport { createHtmlPlugin } from 'vite-plugin-html';\nimport { viteStaticCopy } from 'vite-plugin-static-copy';\nimport svgr from \"vite-plugin-svgr\";\n// import { visualizer } from 'rollup-plugin-visualizer';\n\n/**\n * 开启子路由访问\n * 开启后一般外层网管匹配【custom】时直接透传转到内层网关\n * 内层网关访问 api或者前端静态资源需要去掉【custom】前缀\n*/\nconst app_env = { BASE_URL: '' } // /custom\n\n// Use environment variable to determine the target.\n//  const target = process.env.VITE_PROXY_TARGET || \"http://127.0.0.1:7860\";\nconst target = process.env.VITE_PROXY_TARGET || \"http://192.168.106.120:3002\";\nconst fileServiceTarget = \"http://192.168.106.116:9000\";\n\n// 公共代理配置\nconst commonProxyOptions = {\n  changeOrigin: true,\n  withCredentials: true,\n  secure: false,\n  ws: true\n};\n\n// 带重写功能的配置生成器\nconst createProxyConfig = (target, rewrite = true) => ({\n  ...commonProxyOptions,\n  target,\n  ...(rewrite && {\n    rewrite: (path) => path.replace(new RegExp(`^${app_env.BASE_URL}`), '')\n  }),\n  configure: (proxy, options) => {\n    proxy.on('proxyReq', (proxyReq, req, res) => {\n      console.log('Proxying request to:', proxyReq.path);\n    });\n  }\n});\n\n// API路由配置\nconst apiRoutes = [\"/api/\", \"/health\"];\nconst apiProxyConfig = createProxyConfig(target);\n// 文件服务路由配置\nconst fileServiceRoutes = [\"/bisheng\", \"/tmp-dir\"];\nconst fileServiceProxyConfig = createProxyConfig(fileServiceTarget);\n\nconst proxyTargets = {};\n\n// 添加API路由代理\napiRoutes.forEach(route => {\n  proxyTargets[`${app_env.BASE_URL}${route}`] = apiProxyConfig;\n});\n// 添加文件服务路由代理\nfileServiceRoutes.forEach(route => {\n  proxyTargets[`${app_env.BASE_URL}${route}`] = fileServiceProxyConfig;\n});\n\n\nexport default defineConfig(() => {\n  return {\n    base: app_env.BASE_URL || '/',\n    build: {\n      // minify: 'esbuild', // 使用 esbuild 进行 Tree Shaking 和压缩\n      outDir: \"build\",\n      rollupOptions: {\n        output: {\n          chunkFileNames: 'assets/js/[name]-[hash].js',\n          entryFileNames: 'assets/js/[name]-[hash].js',\n          assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',\n          manualChunks(id) {\n            if (id.includes('node_modules')) {\n              if (id.includes('react-ace') || id.includes('ace-builds') || id.includes('react-syntax-highlighter') || id.includes('rehype-mathjax') || id.includes('react-markdown')) {\n                return 'acebuilds';\n              }\n              if (id.includes('@xyflow/react')) {\n                return 'reactflow';\n              }\n              if (id.includes('pdfjs-dist')) {\n                return 'pdfjs';\n              }\n              if (id.includes('react-window') || id.includes('react-beautiful-dnd') || id.includes('react-dropzone')) {\n                return 'reactdrop';\n              }\n\n              return\n            }\n          }\n        }\n      }\n    },\n    resolve: {\n      alias: {\n        '@': path.resolve(__dirname, './src')\n      }\n    },\n    plugins: [\n      react(),\n      svgr(),\n      createHtmlPlugin({\n        minify: true,\n        inject: {\n          data: {\n            // include: [/index\\.html$/],\n            aceScriptSrc: `<script src=\"${process.env.NODE_ENV === 'production' ? app_env.BASE_URL : ''}/node_modules/ace-builds/src-min-noconflict/ace.js\" type=\"text/javascript\"></script>`,\n            baseUrl: app_env.BASE_URL\n          }\n        }\n      }),\n      viteStaticCopy({\n        targets: [\n          {\n            src: [\n              'node_modules/ace-builds/src-min-noconflict/ace.js',\n              'node_modules/ace-builds/src-min-noconflict/mode-json.js',\n              'node_modules/ace-builds/src-min-noconflict/worker-json.js',\n              'node_modules/ace-builds/src-min-noconflict/mode-yaml.js',\n              'node_modules/ace-builds/src-min-noconflict/worker-yaml.js'\n            ],\n            dest: 'node_modules/ace-builds/src-min-noconflict/'\n          },\n          {\n            src: 'node_modules/pdfjs-dist/build/pdf.worker.min.js',\n            dest: './'\n          }\n        ]\n      }),\n      // 打包物体积报告\n      // visualizer({\n      //   open: true,\n      // })\n    ],\n    define: {\n      __APP_ENV__: JSON.stringify(app_env)\n    },\n    server: {\n      host: '0.0.0.0',\n      port: 3001,\n      proxy: {\n        ...proxyTargets,\n      },\n    },\n  };\n});\n"
  },
  {
    "path": "update.sh",
    "content": "#! /bin/bash\n\nold_version=\"2.4.0-beta1\"\nnew_version=\"2.4.0-beta1-fix\"\nsed -i.bak \"s/$old_version/$new_version/g\" ./docker/docker-compose.yml\nsed -i.bak \"s/$old_version/$new_version/g\" ./src/backend/pyproject.toml\nsed -i.bak \"s/$old_version/$new_version/g\" ./src/backend/bisheng/__init__.py\n"
  }
]